From 1488f002b69257fa85fa09c2399921232dc59ad1 Mon Sep 17 00:00:00 2001 From: qzc Date: Thu, 7 Aug 2025 13:14:50 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=BB=91cesium=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Assets/IAU2006_XYS/IAU2006_XYS_0.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_1.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_10.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_11.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_12.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_13.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_14.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_15.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_16.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_17.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_18.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_19.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_2.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_20.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_21.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_22.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_23.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_24.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_25.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_26.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_27.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_3.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_4.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_5.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_6.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_7.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_8.json | 1 + .../Assets/IAU2006_XYS/IAU2006_XYS_9.json | 1 + .../Cesium/Assets/Images/bing_maps_credit.png | Bin 0 -> 18831 bytes public/Cesium/Assets/Images/cesium_credit.png | Bin 0 -> 4242 bytes .../Assets/Images/google_earth_credit.png | Bin 0 -> 7703 bytes public/Cesium/Assets/Images/ion-credit.png | Bin 0 -> 6028 bytes .../Assets/Textures/LensFlare/DirtMask.jpg | Bin 0 -> 113718 bytes .../Assets/Textures/LensFlare/StarBurst.jpg | Bin 0 -> 195728 bytes .../Assets/Textures/NaturalEarthII/0/0/0.jpg | Bin 0 -> 12067 bytes .../Assets/Textures/NaturalEarthII/0/1/0.jpg | Bin 0 -> 14055 bytes .../Assets/Textures/NaturalEarthII/1/0/0.jpg | Bin 0 -> 7278 bytes .../Assets/Textures/NaturalEarthII/1/0/1.jpg | Bin 0 -> 11399 bytes .../Assets/Textures/NaturalEarthII/1/1/0.jpg | Bin 0 -> 10652 bytes .../Assets/Textures/NaturalEarthII/1/1/1.jpg | Bin 0 -> 13142 bytes .../Assets/Textures/NaturalEarthII/1/2/0.jpg | Bin 0 -> 9643 bytes .../Assets/Textures/NaturalEarthII/1/2/1.jpg | Bin 0 -> 15312 bytes .../Assets/Textures/NaturalEarthII/1/3/0.jpg | Bin 0 -> 10532 bytes .../Assets/Textures/NaturalEarthII/1/3/1.jpg | Bin 0 -> 13262 bytes .../Assets/Textures/NaturalEarthII/2/0/0.jpg | Bin 0 -> 8157 bytes .../Assets/Textures/NaturalEarthII/2/0/1.jpg | Bin 0 -> 9307 bytes .../Assets/Textures/NaturalEarthII/2/0/2.jpg | Bin 0 -> 7891 bytes .../Assets/Textures/NaturalEarthII/2/0/3.jpg | Bin 0 -> 10341 bytes .../Assets/Textures/NaturalEarthII/2/1/0.jpg | Bin 0 -> 7852 bytes .../Assets/Textures/NaturalEarthII/2/1/1.jpg | Bin 0 -> 6850 bytes .../Assets/Textures/NaturalEarthII/2/1/2.jpg | Bin 0 -> 11581 bytes .../Assets/Textures/NaturalEarthII/2/1/3.jpg | Bin 0 -> 15862 bytes .../Assets/Textures/NaturalEarthII/2/2/0.jpg | Bin 0 -> 10657 bytes .../Assets/Textures/NaturalEarthII/2/2/1.jpg | Bin 0 -> 12456 bytes .../Assets/Textures/NaturalEarthII/2/2/2.jpg | Bin 0 -> 12262 bytes .../Assets/Textures/NaturalEarthII/2/2/3.jpg | Bin 0 -> 14940 bytes .../Assets/Textures/NaturalEarthII/2/3/0.jpg | Bin 0 -> 9531 bytes .../Assets/Textures/NaturalEarthII/2/3/1.jpg | Bin 0 -> 10234 bytes .../Assets/Textures/NaturalEarthII/2/3/2.jpg | Bin 0 -> 11678 bytes .../Assets/Textures/NaturalEarthII/2/3/3.jpg | Bin 0 -> 10754 bytes .../Assets/Textures/NaturalEarthII/2/4/0.jpg | Bin 0 -> 8474 bytes .../Assets/Textures/NaturalEarthII/2/4/1.jpg | Bin 0 -> 12265 bytes .../Assets/Textures/NaturalEarthII/2/4/2.jpg | Bin 0 -> 16477 bytes .../Assets/Textures/NaturalEarthII/2/4/3.jpg | Bin 0 -> 11888 bytes .../Assets/Textures/NaturalEarthII/2/5/0.jpg | Bin 0 -> 7540 bytes .../Assets/Textures/NaturalEarthII/2/5/1.jpg | Bin 0 -> 10274 bytes .../Assets/Textures/NaturalEarthII/2/5/2.jpg | Bin 0 -> 16112 bytes .../Assets/Textures/NaturalEarthII/2/5/3.jpg | Bin 0 -> 11877 bytes .../Assets/Textures/NaturalEarthII/2/6/0.jpg | Bin 0 -> 6636 bytes .../Assets/Textures/NaturalEarthII/2/6/1.jpg | Bin 0 -> 11564 bytes .../Assets/Textures/NaturalEarthII/2/6/2.jpg | Bin 0 -> 16411 bytes .../Assets/Textures/NaturalEarthII/2/6/3.jpg | Bin 0 -> 12756 bytes .../Assets/Textures/NaturalEarthII/2/7/0.jpg | Bin 0 -> 9032 bytes .../Assets/Textures/NaturalEarthII/2/7/1.jpg | Bin 0 -> 12957 bytes .../Assets/Textures/NaturalEarthII/2/7/2.jpg | Bin 0 -> 11362 bytes .../Assets/Textures/NaturalEarthII/2/7/3.jpg | Bin 0 -> 11859 bytes .../NaturalEarthII/tilemapresource.xml | 14 + .../Assets/Textures/SkyBox/tycho2t3_80_mx.jpg | Bin 0 -> 118775 bytes .../Assets/Textures/SkyBox/tycho2t3_80_my.jpg | Bin 0 -> 152501 bytes .../Assets/Textures/SkyBox/tycho2t3_80_mz.jpg | Bin 0 -> 167980 bytes .../Assets/Textures/SkyBox/tycho2t3_80_px.jpg | Bin 0 -> 122746 bytes .../Assets/Textures/SkyBox/tycho2t3_80_py.jpg | Bin 0 -> 152999 bytes .../Assets/Textures/SkyBox/tycho2t3_80_pz.jpg | Bin 0 -> 152537 bytes .../Cesium/Assets/Textures/maki/airfield.png | Bin 0 -> 1188 bytes .../Cesium/Assets/Textures/maki/airport.png | Bin 0 -> 1554 bytes .../Assets/Textures/maki/alcohol-shop.png | Bin 0 -> 1293 bytes .../Assets/Textures/maki/america-football.png | Bin 0 -> 2595 bytes .../Assets/Textures/maki/art-gallery.png | Bin 0 -> 3159 bytes public/Cesium/Assets/Textures/maki/bakery.png | Bin 0 -> 2714 bytes public/Cesium/Assets/Textures/maki/bank.png | Bin 0 -> 936 bytes public/Cesium/Assets/Textures/maki/bar.png | Bin 0 -> 1435 bytes .../Cesium/Assets/Textures/maki/baseball.png | Bin 0 -> 1838 bytes .../Assets/Textures/maki/basketball.png | Bin 0 -> 1318 bytes public/Cesium/Assets/Textures/maki/beer.png | Bin 0 -> 1403 bytes .../Cesium/Assets/Textures/maki/bicycle.png | Bin 0 -> 3989 bytes .../Cesium/Assets/Textures/maki/building.png | Bin 0 -> 1765 bytes public/Cesium/Assets/Textures/maki/bus.png | Bin 0 -> 998 bytes public/Cesium/Assets/Textures/maki/cafe.png | Bin 0 -> 1518 bytes public/Cesium/Assets/Textures/maki/camera.png | Bin 0 -> 1976 bytes .../Cesium/Assets/Textures/maki/campsite.png | Bin 0 -> 2411 bytes public/Cesium/Assets/Textures/maki/car.png | Bin 0 -> 1498 bytes .../Cesium/Assets/Textures/maki/cemetery.png | Bin 0 -> 967 bytes public/Cesium/Assets/Textures/maki/cesium.png | Bin 0 -> 3610 bytes .../Cesium/Assets/Textures/maki/chemist.png | Bin 0 -> 1603 bytes public/Cesium/Assets/Textures/maki/cinema.png | Bin 0 -> 1492 bytes .../Assets/Textures/maki/circle-stroked.png | Bin 0 -> 2126 bytes public/Cesium/Assets/Textures/maki/circle.png | Bin 0 -> 1459 bytes public/Cesium/Assets/Textures/maki/city.png | Bin 0 -> 788 bytes .../Assets/Textures/maki/clothing-store.png | Bin 0 -> 2037 bytes .../Cesium/Assets/Textures/maki/college.png | Bin 0 -> 2502 bytes .../Assets/Textures/maki/commercial.png | Bin 0 -> 1002 bytes .../Cesium/Assets/Textures/maki/cricket.png | Bin 0 -> 1677 bytes public/Cesium/Assets/Textures/maki/cross.png | Bin 0 -> 1888 bytes public/Cesium/Assets/Textures/maki/dam.png | Bin 0 -> 1703 bytes public/Cesium/Assets/Textures/maki/danger.png | Bin 0 -> 2429 bytes .../Assets/Textures/maki/disability.png | Bin 0 -> 3437 bytes .../Cesium/Assets/Textures/maki/dog-park.png | Bin 0 -> 3146 bytes .../Cesium/Assets/Textures/maki/embassy.png | Bin 0 -> 1680 bytes .../Textures/maki/emergency-telephone.png | Bin 0 -> 1533 bytes .../Cesium/Assets/Textures/maki/entrance.png | Bin 0 -> 1307 bytes public/Cesium/Assets/Textures/maki/farm.png | Bin 0 -> 1686 bytes .../Cesium/Assets/Textures/maki/fast-food.png | Bin 0 -> 2019 bytes public/Cesium/Assets/Textures/maki/ferry.png | Bin 0 -> 2879 bytes .../Assets/Textures/maki/fire-station.png | Bin 0 -> 2228 bytes public/Cesium/Assets/Textures/maki/fuel.png | Bin 0 -> 1741 bytes public/Cesium/Assets/Textures/maki/garden.png | Bin 0 -> 2057 bytes public/Cesium/Assets/Textures/maki/gift.png | Bin 0 -> 1606 bytes public/Cesium/Assets/Textures/maki/golf.png | Bin 0 -> 1999 bytes .../Cesium/Assets/Textures/maki/grocery.png | Bin 0 -> 1425 bytes .../Assets/Textures/maki/hairdresser.png | Bin 0 -> 3301 bytes public/Cesium/Assets/Textures/maki/harbor.png | Bin 0 -> 2048 bytes public/Cesium/Assets/Textures/maki/heart.png | Bin 0 -> 1745 bytes .../Cesium/Assets/Textures/maki/heliport.png | Bin 0 -> 2059 bytes .../Cesium/Assets/Textures/maki/hospital.png | Bin 0 -> 909 bytes .../Cesium/Assets/Textures/maki/ice-cream.png | Bin 0 -> 1602 bytes .../Assets/Textures/maki/industrial.png | Bin 0 -> 1092 bytes .../Cesium/Assets/Textures/maki/land-use.png | Bin 0 -> 1773 bytes .../Cesium/Assets/Textures/maki/laundry.png | Bin 0 -> 2407 bytes .../Cesium/Assets/Textures/maki/library.png | Bin 0 -> 1355 bytes .../Assets/Textures/maki/lighthouse.png | Bin 0 -> 1944 bytes .../Cesium/Assets/Textures/maki/lodging.png | Bin 0 -> 1362 bytes .../Cesium/Assets/Textures/maki/logging.png | Bin 0 -> 1378 bytes .../Textures/maki/london-underground.png | Bin 0 -> 2979 bytes .../Assets/Textures/maki/marker-stroked.png | Bin 0 -> 3414 bytes public/Cesium/Assets/Textures/maki/marker.png | Bin 0 -> 2448 bytes .../Cesium/Assets/Textures/maki/minefield.png | Bin 0 -> 1907 bytes .../Assets/Textures/maki/mobilephone.png | Bin 0 -> 1474 bytes .../Cesium/Assets/Textures/maki/monument.png | Bin 0 -> 1376 bytes public/Cesium/Assets/Textures/maki/museum.png | Bin 0 -> 2578 bytes public/Cesium/Assets/Textures/maki/music.png | Bin 0 -> 1371 bytes .../Cesium/Assets/Textures/maki/oil-well.png | Bin 0 -> 3357 bytes public/Cesium/Assets/Textures/maki/park.png | Bin 0 -> 2059 bytes public/Cesium/Assets/Textures/maki/park2.png | Bin 0 -> 2284 bytes .../Assets/Textures/maki/parking-garage.png | Bin 0 -> 1563 bytes .../Cesium/Assets/Textures/maki/parking.png | Bin 0 -> 1250 bytes .../Cesium/Assets/Textures/maki/pharmacy.png | Bin 0 -> 2258 bytes public/Cesium/Assets/Textures/maki/pitch.png | Bin 0 -> 3288 bytes .../Assets/Textures/maki/place-of-worship.png | Bin 0 -> 1111 bytes .../Assets/Textures/maki/playground.png | Bin 0 -> 3856 bytes public/Cesium/Assets/Textures/maki/police.png | Bin 0 -> 2194 bytes .../Assets/Textures/maki/polling-place.png | Bin 0 -> 1772 bytes public/Cesium/Assets/Textures/maki/post.png | Bin 0 -> 1273 bytes public/Cesium/Assets/Textures/maki/prison.png | Bin 0 -> 1371 bytes .../Assets/Textures/maki/rail-above.png | Bin 0 -> 2071 bytes .../Assets/Textures/maki/rail-light.png | Bin 0 -> 2816 bytes .../Assets/Textures/maki/rail-metro.png | Bin 0 -> 2249 bytes .../Assets/Textures/maki/rail-underground.png | Bin 0 -> 1996 bytes public/Cesium/Assets/Textures/maki/rail.png | Bin 0 -> 2073 bytes .../Textures/maki/religious-christian.png | Bin 0 -> 948 bytes .../Assets/Textures/maki/religious-jewish.png | Bin 0 -> 2384 bytes .../Assets/Textures/maki/religious-muslim.png | Bin 0 -> 3925 bytes .../Assets/Textures/maki/restaurant.png | Bin 0 -> 2499 bytes .../Cesium/Assets/Textures/maki/roadblock.png | Bin 0 -> 1312 bytes public/Cesium/Assets/Textures/maki/rocket.png | Bin 0 -> 1653 bytes public/Cesium/Assets/Textures/maki/school.png | Bin 0 -> 3838 bytes .../Cesium/Assets/Textures/maki/scooter.png | Bin 0 -> 2942 bytes public/Cesium/Assets/Textures/maki/shop.png | Bin 0 -> 1544 bytes public/Cesium/Assets/Textures/maki/skiing.png | Bin 0 -> 3345 bytes .../Assets/Textures/maki/slaughterhouse.png | Bin 0 -> 2270 bytes public/Cesium/Assets/Textures/maki/soccer.png | Bin 0 -> 2420 bytes .../Assets/Textures/maki/square-stroked.png | Bin 0 -> 650 bytes public/Cesium/Assets/Textures/maki/square.png | Bin 0 -> 582 bytes .../Assets/Textures/maki/star-stroked.png | Bin 0 -> 3460 bytes public/Cesium/Assets/Textures/maki/star.png | Bin 0 -> 2703 bytes .../Cesium/Assets/Textures/maki/suitcase.png | Bin 0 -> 1129 bytes .../Cesium/Assets/Textures/maki/swimming.png | Bin 0 -> 2106 bytes .../Cesium/Assets/Textures/maki/telephone.png | Bin 0 -> 1702 bytes public/Cesium/Assets/Textures/maki/tennis.png | Bin 0 -> 1658 bytes .../Cesium/Assets/Textures/maki/theatre.png | Bin 0 -> 3233 bytes .../Cesium/Assets/Textures/maki/toilets.png | Bin 0 -> 2917 bytes .../Cesium/Assets/Textures/maki/town-hall.png | Bin 0 -> 2005 bytes public/Cesium/Assets/Textures/maki/town.png | Bin 0 -> 1125 bytes .../Assets/Textures/maki/triangle-stroked.png | Bin 0 -> 2837 bytes .../Cesium/Assets/Textures/maki/triangle.png | Bin 0 -> 2137 bytes .../Cesium/Assets/Textures/maki/village.png | Bin 0 -> 2145 bytes .../Cesium/Assets/Textures/maki/warehouse.png | Bin 0 -> 1908 bytes .../Assets/Textures/maki/waste-basket.png | Bin 0 -> 1917 bytes public/Cesium/Assets/Textures/maki/water.png | Bin 0 -> 2411 bytes .../Cesium/Assets/Textures/maki/wetland.png | Bin 0 -> 2151 bytes public/Cesium/Assets/Textures/maki/zoo.png | Bin 0 -> 2681 bytes public/Cesium/Assets/Textures/moonSmall.jpg | Bin 0 -> 18196 bytes public/Cesium/Assets/Textures/pin.svg | 1 + .../Cesium/Assets/Textures/waterNormals.jpg | Bin 0 -> 294196 bytes .../Assets/Textures/waterNormalsSmall.jpg | Bin 0 -> 34121 bytes .../Assets/approximateTerrainHeights.json | 1 + public/Cesium/Cesium.js | 16264 ++++++++++++++++ public/Cesium/ThirdParty/Workers/package.json | 1 + .../ThirdParty/Workers/pako_deflate.min.js | 1 + .../ThirdParty/Workers/pako_inflate.min.js | 1 + .../ThirdParty/Workers/z-worker-pako.js | 1 + .../Cesium/ThirdParty/basis_transcoder.wasm | Bin 0 -> 500839 bytes public/Cesium/ThirdParty/draco_decoder.wasm | Bin 0 -> 285948 bytes .../ThirdParty/google-earth-dbroot-parser.js | 1 + public/Cesium/ThirdParty/wasm_splats_bg.wasm | Bin 0 -> 26522 bytes public/Cesium/Widgets/Animation/Animation.css | 127 + public/Cesium/Widgets/Animation/lighter.css | 70 + .../BaseLayerPicker/BaseLayerPicker.css | 108 + .../Widgets/BaseLayerPicker/lighter.css | 22 + .../Cesium3DTilesInspector.css | 102 + .../CesiumInspector/CesiumInspector.css | 113 + .../Widgets/CesiumWidget/CesiumWidget.css | 119 + .../Cesium/Widgets/CesiumWidget/lighter.css | 14 + .../FullscreenButton/FullscreenButton.css | 8 + public/Cesium/Widgets/Geocoder/Geocoder.css | 70 + public/Cesium/Widgets/Geocoder/lighter.css | 17 + .../I3SBuildingSceneLayerExplorer.css | 27 + .../ArcGisMapServiceWorldHillshade.png | Bin 0 -> 8624 bytes .../ArcGisMapServiceWorldImagery.png | Bin 0 -> 12290 bytes .../ArcGisMapServiceWorldOcean.png | Bin 0 -> 9905 bytes .../Images/ImageryProviders/bingAerial.png | Bin 0 -> 9943 bytes .../ImageryProviders/bingAerialLabels.png | Bin 0 -> 10374 bytes .../Images/ImageryProviders/bingRoads.png | Bin 0 -> 8076 bytes .../Images/ImageryProviders/blueMarble.png | Bin 0 -> 7403 bytes .../Images/ImageryProviders/earthAtNight.png | Bin 0 -> 5836 bytes .../mapQuestOpenStreetMap.png | Bin 0 -> 11342 bytes .../ImageryProviders/mapboxSatellite.png | Bin 0 -> 9242 bytes .../Images/ImageryProviders/mapboxStreets.png | Bin 0 -> 7270 bytes .../Images/ImageryProviders/mapboxTerrain.png | Bin 0 -> 8300 bytes .../ImageryProviders/naturalEarthII.png | Bin 0 -> 7491 bytes .../Images/ImageryProviders/openStreetMap.png | Bin 0 -> 2663 bytes .../Images/ImageryProviders/sentinel-2.png | Bin 0 -> 10086 bytes .../ImageryProviders/stadiaAlidadeSmooth.png | Bin 0 -> 7302 bytes .../stadiaAlidadeSmoothDark.png | Bin 0 -> 7289 bytes .../Images/ImageryProviders/stamenToner.png | Bin 0 -> 4119 bytes .../ImageryProviders/stamenWatercolor.png | Bin 0 -> 10806 bytes .../Widgets/Images/NavigationHelp/Mouse.svg | 84 + .../Images/NavigationHelp/MouseLeft.svg | 76 + .../Images/NavigationHelp/MouseMiddle.svg | 76 + .../Images/NavigationHelp/MouseRight.svg | 76 + .../Widgets/Images/NavigationHelp/Touch.svg | 120 + .../Images/NavigationHelp/TouchDrag.svg | 129 + .../Images/NavigationHelp/TouchRotate.svg | 76 + .../Images/NavigationHelp/TouchTilt.svg | 135 + .../Images/NavigationHelp/TouchZoom.svg | 74 + .../TerrainProviders/CesiumWorldTerrain.png | Bin 0 -> 10080 bytes .../Images/TerrainProviders/Ellipsoid.png | Bin 0 -> 6173 bytes .../Cesium/Widgets/Images/TimelineIcons.png | Bin 0 -> 781 bytes public/Cesium/Widgets/Images/info-loading.gif | Bin 0 -> 723 bytes public/Cesium/Widgets/InfoBox/InfoBox.css | 92 + .../Widgets/InfoBox/InfoBoxDescription.css | 178 + .../NavigationHelpButton.css | 93 + .../Widgets/NavigationHelpButton/lighter.css | 38 + .../PerformanceWatchdog.css | 15 + .../ProjectionPicker/ProjectionPicker.css | 38 + .../SceneModePicker/SceneModePicker.css | 56 + .../SelectionIndicator/SelectionIndicator.css | 20 + public/Cesium/Widgets/Timeline/Timeline.css | 103 + public/Cesium/Widgets/Timeline/lighter.css | 23 + public/Cesium/Widgets/VRButton/VRButton.css | 8 + public/Cesium/Widgets/Viewer/Viewer.css | 107 + .../Widgets/VoxelInspector/VoxelInspector.css | 16 + public/Cesium/Widgets/lighter.css | 237 + public/Cesium/Widgets/lighterShared.css | 46 + public/Cesium/Widgets/shared.css | 103 + public/Cesium/Widgets/widgets.css | 1342 ++ public/Cesium/Workers/chunk-35SHYARM.js | 26 + public/Cesium/Workers/chunk-37F5JSTI.js | 26 + public/Cesium/Workers/chunk-3SSKC3VN.js | 26 + public/Cesium/Workers/chunk-3W4GT7KQ.js | 26 + public/Cesium/Workers/chunk-4IW2T6GF.js | 26 + public/Cesium/Workers/chunk-5YEWO3HT.js | 26 + public/Cesium/Workers/chunk-64RSHJUE.js | 28 + public/Cesium/Workers/chunk-77IHZJJ3.js | 26 + public/Cesium/Workers/chunk-7HTKERZY.js | 26 + public/Cesium/Workers/chunk-A56XVLQR.js | 26 + public/Cesium/Workers/chunk-AJYK4IVJ.js | 26 + public/Cesium/Workers/chunk-ARG42DC4.js | 26 + public/Cesium/Workers/chunk-AU7IKHOH.js | 26 + public/Cesium/Workers/chunk-B4AA3ARO.js | 26 + public/Cesium/Workers/chunk-CNCV5UL7.js | 26 + public/Cesium/Workers/chunk-CYCB63OH.js | 26 + public/Cesium/Workers/chunk-D6AA5QVT.js | 26 + public/Cesium/Workers/chunk-D6C66QON.js | 26 + public/Cesium/Workers/chunk-DEPHB2WM.js | 26 + public/Cesium/Workers/chunk-DMEY62ID.js | 26 + public/Cesium/Workers/chunk-DQQ63PYM.js | 26 + public/Cesium/Workers/chunk-ED5JPB3S.js | 27 + public/Cesium/Workers/chunk-EZUYS2JF.js | 26 + public/Cesium/Workers/chunk-FEVXJ54I.js | 26 + public/Cesium/Workers/chunk-G5AGHVVC.js | 26 + public/Cesium/Workers/chunk-GBYLG25F.js | 26 + public/Cesium/Workers/chunk-GILIDQNQ.js | 26 + public/Cesium/Workers/chunk-HMIYSTF6.js | 26 + public/Cesium/Workers/chunk-HTFSEEMT.js | 26 + public/Cesium/Workers/chunk-HWXX4CWK.js | 26 + public/Cesium/Workers/chunk-IYTZ52EY.js | 26 + public/Cesium/Workers/chunk-J6UP6FLE.js | 26 + public/Cesium/Workers/chunk-LEYMRMBK.js | 27 + public/Cesium/Workers/chunk-M3MGYQSL.js | 26 + public/Cesium/Workers/chunk-N4VJKXZS.js | 26 + public/Cesium/Workers/chunk-NB3ML6JO.js | 26 + public/Cesium/Workers/chunk-OFUUQVMR.js | 26 + public/Cesium/Workers/chunk-OSW76XDF.js | 26 + public/Cesium/Workers/chunk-PSPPBZWI.js | 66 + public/Cesium/Workers/chunk-QN3VOORQ.js | 26 + public/Cesium/Workers/chunk-QOUAJ6TL.js | 26 + public/Cesium/Workers/chunk-RCV6KWXS.js | 26 + public/Cesium/Workers/chunk-TCGIRNHN.js | 26 + public/Cesium/Workers/chunk-U4IEOH5K.js | 26 + public/Cesium/Workers/chunk-UP6I5URU.js | 26 + public/Cesium/Workers/chunk-VTAIKJXX.js | 26 + public/Cesium/Workers/chunk-VTBDSFTG.js | 26 + public/Cesium/Workers/chunk-VW6VD53G.js | 26 + public/Cesium/Workers/chunk-WGGIH7QW.js | 26 + public/Cesium/Workers/chunk-WWA5PL4H.js | 26 + public/Cesium/Workers/chunk-WZDE3RYP.js | 28 + public/Cesium/Workers/chunk-XRL4AVS5.js | 26 + public/Cesium/Workers/combineGeometry.js | 26 + public/Cesium/Workers/createBoxGeometry.js | 26 + .../Workers/createBoxOutlineGeometry.js | 26 + public/Cesium/Workers/createCircleGeometry.js | 26 + .../Workers/createCircleOutlineGeometry.js | 26 + .../Workers/createCoplanarPolygonGeometry.js | 26 + .../createCoplanarPolygonOutlineGeometry.js | 26 + .../Cesium/Workers/createCorridorGeometry.js | 26 + .../Workers/createCorridorOutlineGeometry.js | 26 + .../Cesium/Workers/createCylinderGeometry.js | 26 + .../Workers/createCylinderOutlineGeometry.js | 26 + .../Cesium/Workers/createEllipseGeometry.js | 26 + .../Workers/createEllipseOutlineGeometry.js | 26 + .../Cesium/Workers/createEllipsoidGeometry.js | 26 + .../Workers/createEllipsoidOutlineGeometry.js | 26 + .../Cesium/Workers/createFrustumGeometry.js | 26 + .../Workers/createFrustumOutlineGeometry.js | 26 + public/Cesium/Workers/createGeometry.js | 26 + .../Workers/createGroundPolylineGeometry.js | 26 + public/Cesium/Workers/createPlaneGeometry.js | 26 + .../Workers/createPlaneOutlineGeometry.js | 26 + .../Cesium/Workers/createPolygonGeometry.js | 26 + .../Workers/createPolygonOutlineGeometry.js | 26 + .../Cesium/Workers/createPolylineGeometry.js | 26 + .../Workers/createPolylineVolumeGeometry.js | 26 + .../createPolylineVolumeOutlineGeometry.js | 26 + .../Cesium/Workers/createRectangleGeometry.js | 26 + .../Workers/createRectangleOutlineGeometry.js | 26 + .../Workers/createSimplePolylineGeometry.js | 26 + public/Cesium/Workers/createSphereGeometry.js | 26 + .../Workers/createSphereOutlineGeometry.js | 26 + .../Workers/createTaskProcessorWorker.js | 26 + .../createVectorTileClampedPolylines.js | 26 + .../Workers/createVectorTileGeometries.js | 26 + .../Cesium/Workers/createVectorTilePoints.js | 26 + .../Workers/createVectorTilePolygons.js | 26 + .../Workers/createVectorTilePolylines.js | 26 + ...VerticesFromGoogleEarthEnterpriseBuffer.js | 26 + .../Workers/createVerticesFromHeightmap.js | 26 + .../createVerticesFromQuantizedTerrainMesh.js | 26 + public/Cesium/Workers/createWallGeometry.js | 26 + .../Workers/createWallOutlineGeometry.js | 26 + public/Cesium/Workers/decodeDraco.js | 26 + .../decodeGoogleEarthEnterprisePacket.js | 26 + public/Cesium/Workers/decodeI3S.js | 26 + public/Cesium/Workers/gaussianSplatSorter.js | 26 + .../Workers/gaussianSplatTextureGenerator.js | 26 + public/Cesium/Workers/transcodeKTX2.js | 56 + .../Cesium/Workers/transferTypedArrayTest.js | 26 + .../Workers/upsampleQuantizedTerrainMesh.js | 26 + public/Cesium/index.cjs | 16264 ++++++++++++++++ public/Cesium/index.js | 16264 ++++++++++++++++ 379 files changed, 55727 insertions(+) create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json create mode 100644 public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json create mode 100644 public/Cesium/Assets/Images/bing_maps_credit.png create mode 100644 public/Cesium/Assets/Images/cesium_credit.png create mode 100644 public/Cesium/Assets/Images/google_earth_credit.png create mode 100644 public/Cesium/Assets/Images/ion-credit.png create mode 100644 public/Cesium/Assets/Textures/LensFlare/DirtMask.jpg create mode 100644 public/Cesium/Assets/Textures/LensFlare/StarBurst.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/0/0/0.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/1/0/0.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/0/2.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/0/3.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/1/0.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/1/1.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/1/2.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/2/2.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/3/1.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/3/3.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/4/3.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/5/0.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/5/2.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/7/2.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg create mode 100644 public/Cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml create mode 100644 public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg create mode 100644 public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg create mode 100644 public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg create mode 100644 public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_px.jpg create mode 100644 public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg create mode 100644 public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_pz.jpg create mode 100644 public/Cesium/Assets/Textures/maki/airfield.png create mode 100644 public/Cesium/Assets/Textures/maki/airport.png create mode 100644 public/Cesium/Assets/Textures/maki/alcohol-shop.png create mode 100644 public/Cesium/Assets/Textures/maki/america-football.png create mode 100644 public/Cesium/Assets/Textures/maki/art-gallery.png create mode 100644 public/Cesium/Assets/Textures/maki/bakery.png create mode 100644 public/Cesium/Assets/Textures/maki/bank.png create mode 100644 public/Cesium/Assets/Textures/maki/bar.png create mode 100644 public/Cesium/Assets/Textures/maki/baseball.png create mode 100644 public/Cesium/Assets/Textures/maki/basketball.png create mode 100644 public/Cesium/Assets/Textures/maki/beer.png create mode 100644 public/Cesium/Assets/Textures/maki/bicycle.png create mode 100644 public/Cesium/Assets/Textures/maki/building.png create mode 100644 public/Cesium/Assets/Textures/maki/bus.png create mode 100644 public/Cesium/Assets/Textures/maki/cafe.png create mode 100644 public/Cesium/Assets/Textures/maki/camera.png create mode 100644 public/Cesium/Assets/Textures/maki/campsite.png create mode 100644 public/Cesium/Assets/Textures/maki/car.png create mode 100644 public/Cesium/Assets/Textures/maki/cemetery.png create mode 100644 public/Cesium/Assets/Textures/maki/cesium.png create mode 100644 public/Cesium/Assets/Textures/maki/chemist.png create mode 100644 public/Cesium/Assets/Textures/maki/cinema.png create mode 100644 public/Cesium/Assets/Textures/maki/circle-stroked.png create mode 100644 public/Cesium/Assets/Textures/maki/circle.png create mode 100644 public/Cesium/Assets/Textures/maki/city.png create mode 100644 public/Cesium/Assets/Textures/maki/clothing-store.png create mode 100644 public/Cesium/Assets/Textures/maki/college.png create mode 100644 public/Cesium/Assets/Textures/maki/commercial.png create mode 100644 public/Cesium/Assets/Textures/maki/cricket.png create mode 100644 public/Cesium/Assets/Textures/maki/cross.png create mode 100644 public/Cesium/Assets/Textures/maki/dam.png create mode 100644 public/Cesium/Assets/Textures/maki/danger.png create mode 100644 public/Cesium/Assets/Textures/maki/disability.png create mode 100644 public/Cesium/Assets/Textures/maki/dog-park.png create mode 100644 public/Cesium/Assets/Textures/maki/embassy.png create mode 100644 public/Cesium/Assets/Textures/maki/emergency-telephone.png create mode 100644 public/Cesium/Assets/Textures/maki/entrance.png create mode 100644 public/Cesium/Assets/Textures/maki/farm.png create mode 100644 public/Cesium/Assets/Textures/maki/fast-food.png create mode 100644 public/Cesium/Assets/Textures/maki/ferry.png create mode 100644 public/Cesium/Assets/Textures/maki/fire-station.png create mode 100644 public/Cesium/Assets/Textures/maki/fuel.png create mode 100644 public/Cesium/Assets/Textures/maki/garden.png create mode 100644 public/Cesium/Assets/Textures/maki/gift.png create mode 100644 public/Cesium/Assets/Textures/maki/golf.png create mode 100644 public/Cesium/Assets/Textures/maki/grocery.png create mode 100644 public/Cesium/Assets/Textures/maki/hairdresser.png create mode 100644 public/Cesium/Assets/Textures/maki/harbor.png create mode 100644 public/Cesium/Assets/Textures/maki/heart.png create mode 100644 public/Cesium/Assets/Textures/maki/heliport.png create mode 100644 public/Cesium/Assets/Textures/maki/hospital.png create mode 100644 public/Cesium/Assets/Textures/maki/ice-cream.png create mode 100644 public/Cesium/Assets/Textures/maki/industrial.png create mode 100644 public/Cesium/Assets/Textures/maki/land-use.png create mode 100644 public/Cesium/Assets/Textures/maki/laundry.png create mode 100644 public/Cesium/Assets/Textures/maki/library.png create mode 100644 public/Cesium/Assets/Textures/maki/lighthouse.png create mode 100644 public/Cesium/Assets/Textures/maki/lodging.png create mode 100644 public/Cesium/Assets/Textures/maki/logging.png create mode 100644 public/Cesium/Assets/Textures/maki/london-underground.png create mode 100644 public/Cesium/Assets/Textures/maki/marker-stroked.png create mode 100644 public/Cesium/Assets/Textures/maki/marker.png create mode 100644 public/Cesium/Assets/Textures/maki/minefield.png create mode 100644 public/Cesium/Assets/Textures/maki/mobilephone.png create mode 100644 public/Cesium/Assets/Textures/maki/monument.png create mode 100644 public/Cesium/Assets/Textures/maki/museum.png create mode 100644 public/Cesium/Assets/Textures/maki/music.png create mode 100644 public/Cesium/Assets/Textures/maki/oil-well.png create mode 100644 public/Cesium/Assets/Textures/maki/park.png create mode 100644 public/Cesium/Assets/Textures/maki/park2.png create mode 100644 public/Cesium/Assets/Textures/maki/parking-garage.png create mode 100644 public/Cesium/Assets/Textures/maki/parking.png create mode 100644 public/Cesium/Assets/Textures/maki/pharmacy.png create mode 100644 public/Cesium/Assets/Textures/maki/pitch.png create mode 100644 public/Cesium/Assets/Textures/maki/place-of-worship.png create mode 100644 public/Cesium/Assets/Textures/maki/playground.png create mode 100644 public/Cesium/Assets/Textures/maki/police.png create mode 100644 public/Cesium/Assets/Textures/maki/polling-place.png create mode 100644 public/Cesium/Assets/Textures/maki/post.png create mode 100644 public/Cesium/Assets/Textures/maki/prison.png create mode 100644 public/Cesium/Assets/Textures/maki/rail-above.png create mode 100644 public/Cesium/Assets/Textures/maki/rail-light.png create mode 100644 public/Cesium/Assets/Textures/maki/rail-metro.png create mode 100644 public/Cesium/Assets/Textures/maki/rail-underground.png create mode 100644 public/Cesium/Assets/Textures/maki/rail.png create mode 100644 public/Cesium/Assets/Textures/maki/religious-christian.png create mode 100644 public/Cesium/Assets/Textures/maki/religious-jewish.png create mode 100644 public/Cesium/Assets/Textures/maki/religious-muslim.png create mode 100644 public/Cesium/Assets/Textures/maki/restaurant.png create mode 100644 public/Cesium/Assets/Textures/maki/roadblock.png create mode 100644 public/Cesium/Assets/Textures/maki/rocket.png create mode 100644 public/Cesium/Assets/Textures/maki/school.png create mode 100644 public/Cesium/Assets/Textures/maki/scooter.png create mode 100644 public/Cesium/Assets/Textures/maki/shop.png create mode 100644 public/Cesium/Assets/Textures/maki/skiing.png create mode 100644 public/Cesium/Assets/Textures/maki/slaughterhouse.png create mode 100644 public/Cesium/Assets/Textures/maki/soccer.png create mode 100644 public/Cesium/Assets/Textures/maki/square-stroked.png create mode 100644 public/Cesium/Assets/Textures/maki/square.png create mode 100644 public/Cesium/Assets/Textures/maki/star-stroked.png create mode 100644 public/Cesium/Assets/Textures/maki/star.png create mode 100644 public/Cesium/Assets/Textures/maki/suitcase.png create mode 100644 public/Cesium/Assets/Textures/maki/swimming.png create mode 100644 public/Cesium/Assets/Textures/maki/telephone.png create mode 100644 public/Cesium/Assets/Textures/maki/tennis.png create mode 100644 public/Cesium/Assets/Textures/maki/theatre.png create mode 100644 public/Cesium/Assets/Textures/maki/toilets.png create mode 100644 public/Cesium/Assets/Textures/maki/town-hall.png create mode 100644 public/Cesium/Assets/Textures/maki/town.png create mode 100644 public/Cesium/Assets/Textures/maki/triangle-stroked.png create mode 100644 public/Cesium/Assets/Textures/maki/triangle.png create mode 100644 public/Cesium/Assets/Textures/maki/village.png create mode 100644 public/Cesium/Assets/Textures/maki/warehouse.png create mode 100644 public/Cesium/Assets/Textures/maki/waste-basket.png create mode 100644 public/Cesium/Assets/Textures/maki/water.png create mode 100644 public/Cesium/Assets/Textures/maki/wetland.png create mode 100644 public/Cesium/Assets/Textures/maki/zoo.png create mode 100644 public/Cesium/Assets/Textures/moonSmall.jpg create mode 100644 public/Cesium/Assets/Textures/pin.svg create mode 100644 public/Cesium/Assets/Textures/waterNormals.jpg create mode 100644 public/Cesium/Assets/Textures/waterNormalsSmall.jpg create mode 100644 public/Cesium/Assets/approximateTerrainHeights.json create mode 100644 public/Cesium/Cesium.js create mode 100644 public/Cesium/ThirdParty/Workers/package.json create mode 100644 public/Cesium/ThirdParty/Workers/pako_deflate.min.js create mode 100644 public/Cesium/ThirdParty/Workers/pako_inflate.min.js create mode 100644 public/Cesium/ThirdParty/Workers/z-worker-pako.js create mode 100644 public/Cesium/ThirdParty/basis_transcoder.wasm create mode 100644 public/Cesium/ThirdParty/draco_decoder.wasm create mode 100644 public/Cesium/ThirdParty/google-earth-dbroot-parser.js create mode 100644 public/Cesium/ThirdParty/wasm_splats_bg.wasm create mode 100644 public/Cesium/Widgets/Animation/Animation.css create mode 100644 public/Cesium/Widgets/Animation/lighter.css create mode 100644 public/Cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css create mode 100644 public/Cesium/Widgets/BaseLayerPicker/lighter.css create mode 100644 public/Cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css create mode 100644 public/Cesium/Widgets/CesiumInspector/CesiumInspector.css create mode 100644 public/Cesium/Widgets/CesiumWidget/CesiumWidget.css create mode 100644 public/Cesium/Widgets/CesiumWidget/lighter.css create mode 100644 public/Cesium/Widgets/FullscreenButton/FullscreenButton.css create mode 100644 public/Cesium/Widgets/Geocoder/Geocoder.css create mode 100644 public/Cesium/Widgets/Geocoder/lighter.css create mode 100644 public/Cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css create mode 100644 public/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png create mode 100644 public/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png create mode 100644 public/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png create mode 100644 public/Cesium/Widgets/Images/ImageryProviders/bingAerial.png create mode 100644 public/Cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png create mode 100644 public/Cesium/Widgets/Images/ImageryProviders/bingRoads.png create mode 100644 public/Cesium/Widgets/Images/ImageryProviders/blueMarble.png create mode 100644 public/Cesium/Widgets/Images/ImageryProviders/earthAtNight.png create mode 100644 public/Cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png create mode 100644 public/Cesium/Widgets/Images/ImageryProviders/mapboxSatellite.png create mode 100644 public/Cesium/Widgets/Images/ImageryProviders/mapboxStreets.png create mode 100644 public/Cesium/Widgets/Images/ImageryProviders/mapboxTerrain.png create mode 100644 public/Cesium/Widgets/Images/ImageryProviders/naturalEarthII.png create mode 100644 public/Cesium/Widgets/Images/ImageryProviders/openStreetMap.png create mode 100644 public/Cesium/Widgets/Images/ImageryProviders/sentinel-2.png create mode 100644 public/Cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png create mode 100644 public/Cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png create mode 100644 public/Cesium/Widgets/Images/ImageryProviders/stamenToner.png create mode 100644 public/Cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png create mode 100644 public/Cesium/Widgets/Images/NavigationHelp/Mouse.svg create mode 100644 public/Cesium/Widgets/Images/NavigationHelp/MouseLeft.svg create mode 100644 public/Cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg create mode 100644 public/Cesium/Widgets/Images/NavigationHelp/MouseRight.svg create mode 100644 public/Cesium/Widgets/Images/NavigationHelp/Touch.svg create mode 100644 public/Cesium/Widgets/Images/NavigationHelp/TouchDrag.svg create mode 100644 public/Cesium/Widgets/Images/NavigationHelp/TouchRotate.svg create mode 100644 public/Cesium/Widgets/Images/NavigationHelp/TouchTilt.svg create mode 100644 public/Cesium/Widgets/Images/NavigationHelp/TouchZoom.svg create mode 100644 public/Cesium/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png create mode 100644 public/Cesium/Widgets/Images/TerrainProviders/Ellipsoid.png create mode 100644 public/Cesium/Widgets/Images/TimelineIcons.png create mode 100644 public/Cesium/Widgets/Images/info-loading.gif create mode 100644 public/Cesium/Widgets/InfoBox/InfoBox.css create mode 100644 public/Cesium/Widgets/InfoBox/InfoBoxDescription.css create mode 100644 public/Cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css create mode 100644 public/Cesium/Widgets/NavigationHelpButton/lighter.css create mode 100644 public/Cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css create mode 100644 public/Cesium/Widgets/ProjectionPicker/ProjectionPicker.css create mode 100644 public/Cesium/Widgets/SceneModePicker/SceneModePicker.css create mode 100644 public/Cesium/Widgets/SelectionIndicator/SelectionIndicator.css create mode 100644 public/Cesium/Widgets/Timeline/Timeline.css create mode 100644 public/Cesium/Widgets/Timeline/lighter.css create mode 100644 public/Cesium/Widgets/VRButton/VRButton.css create mode 100644 public/Cesium/Widgets/Viewer/Viewer.css create mode 100644 public/Cesium/Widgets/VoxelInspector/VoxelInspector.css create mode 100644 public/Cesium/Widgets/lighter.css create mode 100644 public/Cesium/Widgets/lighterShared.css create mode 100644 public/Cesium/Widgets/shared.css create mode 100644 public/Cesium/Widgets/widgets.css create mode 100644 public/Cesium/Workers/chunk-35SHYARM.js create mode 100644 public/Cesium/Workers/chunk-37F5JSTI.js create mode 100644 public/Cesium/Workers/chunk-3SSKC3VN.js create mode 100644 public/Cesium/Workers/chunk-3W4GT7KQ.js create mode 100644 public/Cesium/Workers/chunk-4IW2T6GF.js create mode 100644 public/Cesium/Workers/chunk-5YEWO3HT.js create mode 100644 public/Cesium/Workers/chunk-64RSHJUE.js create mode 100644 public/Cesium/Workers/chunk-77IHZJJ3.js create mode 100644 public/Cesium/Workers/chunk-7HTKERZY.js create mode 100644 public/Cesium/Workers/chunk-A56XVLQR.js create mode 100644 public/Cesium/Workers/chunk-AJYK4IVJ.js create mode 100644 public/Cesium/Workers/chunk-ARG42DC4.js create mode 100644 public/Cesium/Workers/chunk-AU7IKHOH.js create mode 100644 public/Cesium/Workers/chunk-B4AA3ARO.js create mode 100644 public/Cesium/Workers/chunk-CNCV5UL7.js create mode 100644 public/Cesium/Workers/chunk-CYCB63OH.js create mode 100644 public/Cesium/Workers/chunk-D6AA5QVT.js create mode 100644 public/Cesium/Workers/chunk-D6C66QON.js create mode 100644 public/Cesium/Workers/chunk-DEPHB2WM.js create mode 100644 public/Cesium/Workers/chunk-DMEY62ID.js create mode 100644 public/Cesium/Workers/chunk-DQQ63PYM.js create mode 100644 public/Cesium/Workers/chunk-ED5JPB3S.js create mode 100644 public/Cesium/Workers/chunk-EZUYS2JF.js create mode 100644 public/Cesium/Workers/chunk-FEVXJ54I.js create mode 100644 public/Cesium/Workers/chunk-G5AGHVVC.js create mode 100644 public/Cesium/Workers/chunk-GBYLG25F.js create mode 100644 public/Cesium/Workers/chunk-GILIDQNQ.js create mode 100644 public/Cesium/Workers/chunk-HMIYSTF6.js create mode 100644 public/Cesium/Workers/chunk-HTFSEEMT.js create mode 100644 public/Cesium/Workers/chunk-HWXX4CWK.js create mode 100644 public/Cesium/Workers/chunk-IYTZ52EY.js create mode 100644 public/Cesium/Workers/chunk-J6UP6FLE.js create mode 100644 public/Cesium/Workers/chunk-LEYMRMBK.js create mode 100644 public/Cesium/Workers/chunk-M3MGYQSL.js create mode 100644 public/Cesium/Workers/chunk-N4VJKXZS.js create mode 100644 public/Cesium/Workers/chunk-NB3ML6JO.js create mode 100644 public/Cesium/Workers/chunk-OFUUQVMR.js create mode 100644 public/Cesium/Workers/chunk-OSW76XDF.js create mode 100644 public/Cesium/Workers/chunk-PSPPBZWI.js create mode 100644 public/Cesium/Workers/chunk-QN3VOORQ.js create mode 100644 public/Cesium/Workers/chunk-QOUAJ6TL.js create mode 100644 public/Cesium/Workers/chunk-RCV6KWXS.js create mode 100644 public/Cesium/Workers/chunk-TCGIRNHN.js create mode 100644 public/Cesium/Workers/chunk-U4IEOH5K.js create mode 100644 public/Cesium/Workers/chunk-UP6I5URU.js create mode 100644 public/Cesium/Workers/chunk-VTAIKJXX.js create mode 100644 public/Cesium/Workers/chunk-VTBDSFTG.js create mode 100644 public/Cesium/Workers/chunk-VW6VD53G.js create mode 100644 public/Cesium/Workers/chunk-WGGIH7QW.js create mode 100644 public/Cesium/Workers/chunk-WWA5PL4H.js create mode 100644 public/Cesium/Workers/chunk-WZDE3RYP.js create mode 100644 public/Cesium/Workers/chunk-XRL4AVS5.js create mode 100644 public/Cesium/Workers/combineGeometry.js create mode 100644 public/Cesium/Workers/createBoxGeometry.js create mode 100644 public/Cesium/Workers/createBoxOutlineGeometry.js create mode 100644 public/Cesium/Workers/createCircleGeometry.js create mode 100644 public/Cesium/Workers/createCircleOutlineGeometry.js create mode 100644 public/Cesium/Workers/createCoplanarPolygonGeometry.js create mode 100644 public/Cesium/Workers/createCoplanarPolygonOutlineGeometry.js create mode 100644 public/Cesium/Workers/createCorridorGeometry.js create mode 100644 public/Cesium/Workers/createCorridorOutlineGeometry.js create mode 100644 public/Cesium/Workers/createCylinderGeometry.js create mode 100644 public/Cesium/Workers/createCylinderOutlineGeometry.js create mode 100644 public/Cesium/Workers/createEllipseGeometry.js create mode 100644 public/Cesium/Workers/createEllipseOutlineGeometry.js create mode 100644 public/Cesium/Workers/createEllipsoidGeometry.js create mode 100644 public/Cesium/Workers/createEllipsoidOutlineGeometry.js create mode 100644 public/Cesium/Workers/createFrustumGeometry.js create mode 100644 public/Cesium/Workers/createFrustumOutlineGeometry.js create mode 100644 public/Cesium/Workers/createGeometry.js create mode 100644 public/Cesium/Workers/createGroundPolylineGeometry.js create mode 100644 public/Cesium/Workers/createPlaneGeometry.js create mode 100644 public/Cesium/Workers/createPlaneOutlineGeometry.js create mode 100644 public/Cesium/Workers/createPolygonGeometry.js create mode 100644 public/Cesium/Workers/createPolygonOutlineGeometry.js create mode 100644 public/Cesium/Workers/createPolylineGeometry.js create mode 100644 public/Cesium/Workers/createPolylineVolumeGeometry.js create mode 100644 public/Cesium/Workers/createPolylineVolumeOutlineGeometry.js create mode 100644 public/Cesium/Workers/createRectangleGeometry.js create mode 100644 public/Cesium/Workers/createRectangleOutlineGeometry.js create mode 100644 public/Cesium/Workers/createSimplePolylineGeometry.js create mode 100644 public/Cesium/Workers/createSphereGeometry.js create mode 100644 public/Cesium/Workers/createSphereOutlineGeometry.js create mode 100644 public/Cesium/Workers/createTaskProcessorWorker.js create mode 100644 public/Cesium/Workers/createVectorTileClampedPolylines.js create mode 100644 public/Cesium/Workers/createVectorTileGeometries.js create mode 100644 public/Cesium/Workers/createVectorTilePoints.js create mode 100644 public/Cesium/Workers/createVectorTilePolygons.js create mode 100644 public/Cesium/Workers/createVectorTilePolylines.js create mode 100644 public/Cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js create mode 100644 public/Cesium/Workers/createVerticesFromHeightmap.js create mode 100644 public/Cesium/Workers/createVerticesFromQuantizedTerrainMesh.js create mode 100644 public/Cesium/Workers/createWallGeometry.js create mode 100644 public/Cesium/Workers/createWallOutlineGeometry.js create mode 100644 public/Cesium/Workers/decodeDraco.js create mode 100644 public/Cesium/Workers/decodeGoogleEarthEnterprisePacket.js create mode 100644 public/Cesium/Workers/decodeI3S.js create mode 100644 public/Cesium/Workers/gaussianSplatSorter.js create mode 100644 public/Cesium/Workers/gaussianSplatTextureGenerator.js create mode 100644 public/Cesium/Workers/transcodeKTX2.js create mode 100644 public/Cesium/Workers/transferTypedArrayTest.js create mode 100644 public/Cesium/Workers/upsampleQuantizedTerrainMesh.js create mode 100644 public/Cesium/index.cjs create mode 100644 public/Cesium/index.js diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json new file mode 100644 index 000000000..0dbf15782 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_0.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":0,"numberOfSamples":1000,"samples":[-0.002403025022753476,-2.5083047211757836e-5,-1.721638967214743e-8,-0.002402558217007106,-2.5020003017226545e-5,-1.7146589882925253e-8,-0.002402152743739069,-2.4908815008776256e-5,-1.7018183343380784e-8,-0.0024018177616850914,-2.4779340864272868e-5,-1.686693112266686e-8,-0.0024015512294922256,-2.4661265859267777e-5,-1.672851429567895e-8,-0.0024013415089134365,-2.4580601237402673e-5,-1.6634308307010567e-8,-0.0024011692853140917,-2.4557354638250633e-5,-1.660856911234815e-8,-0.0024010094083213077,-2.460379520847823e-5,-1.666634004388421e-8,-0.002400832781870665,-2.472274606391698e-5,-1.681138635859172e-8,-0.0024006088674261195,-2.490565851910724e-5,-1.7033840158805374e-8,-0.0024003096414815053,-2.513083477542098e-5,-1.7307985763326293e-8,-0.002399915678730765,-2.5363106308028472e-5,-1.759177707540246e-8,-0.0023994239684226163,-2.5557205638682287e-5,-1.7830822072448312e-8,-0.0023988549431304905,-2.566700881355288e-5,-1.7969488578482e-8,-0.0023982538707374547,-2.5660422954022525e-5,-1.7968844164137065e-8,-0.002397681821948537,-2.553480284678542e-5,-1.7825226886235993e-8,-0.0023971964165357008,-2.53237668313255e-5,-1.7578462540315414e-8,-0.002396830441918346,-2.50885777844268e-5,-1.7301586465142487e-8,-0.0023965800106651434,-2.4896546614298096e-5,-1.7075078798371497e-8,-0.0023964084361551537,-2.4797687943490375e-5,-1.695902560230991e-8,-0.002396262002993096,-2.481096708533641e-5,-1.6976666372280337e-8,-0.0023960882393536166,-2.4923817586803518e-5,-1.7113670694608337e-8,-0.002395849219877066,-2.5101106375207836e-5,-1.732863106912266e-8,-0.002395527525579831,-2.5297461255455714e-5,-1.756761197379987e-8,-0.0023951260596151974,-2.546854998291281e-5,-1.7777564319951067e-8,-0.0023946640036132836,-2.5579325396643004e-5,-1.7916241394922998e-8,-0.0023941708783994835,-2.5608875350224024e-5,-1.7958135357141878e-8,-0.0023936800199459637,-2.5552141704174967e-5,-1.7896681829365477e-8,-0.00239322243029576,-2.5418865388500117e-5,-1.774311016303839e-8,-0.0023928218677541743,-2.5230314934074022e-5,-1.7522587181791123e-8,-0.0023924917832175113,-2.5014690159013176e-5,-1.7268730448048223e-8,-0.0023922342643846748,-2.480218762163173e-5,-1.7017686942652696e-8,-0.0023920407464684762,-2.4620565317509125e-5,-1.6802798466007283e-8,-0.0023918939307276768,-2.4491771693316273e-5,-1.6650542584010726e-8,-0.0023917702332855676,-2.442975015807349e-5,-1.6577888357278284e-8,-0.002391642329452238,-2.443909807420655e-5,-1.6590679729922046e-8,-0.002391481763245852,-2.4514179502452957e-5,-1.6682551340715887e-8,-0.0023912619080620466,-2.4638499724969643e-5,-1.6834129065335303e-8,-0.002390961805205984,-2.478455800610903e-5,-1.701276797456279e-8,-0.00239057134744484,-2.4915132198915024e-5,-1.717399678816932e-8,-0.0023900974268101054,-2.4987729973603072e-5,-1.7266795508165544e-8,-0.0023895689055318833,-2.496391501976109e-5,-1.7244787681999786e-8,-0.002389036165074365,-2.4823284691699932e-5,-1.7083063873624844e-8,-0.002388560578292379,-2.4577378315217863e-5,-1.6794918110509053e-8,-0.0023881937570601162,-2.4274142413621198e-5,-1.643724545979219e-8,-0.0023879553394346147,-2.3985163329236852e-5,-1.6095335313882396e-8,-0.002387823242597225,-2.3778727505381422e-5,-1.5850778179207802e-8,-0.002387743703083488,-2.3693514905278695e-5,-1.575012576846581e-8,-0.002387654469699301,-2.3727803248252375e-5,-1.57919573836453e-8,-0.0023875068224310926,-2.384701163322787e-5,-1.5935693828749185e-8,-0.0023872766838733636,-2.4000872036063545e-5,-1.6121849968027748e-8,-0.0023869645383715133,-2.4139837531397063e-5,-1.6291451853276617e-8,-0.0023865890688437295,-2.4225578577636494e-5,-1.6398545934918142e-8,-0.002386179207668243,-2.4235415814278647e-5,-1.641560182566368e-8,-0.0023857671367677994,-2.4162608465253676e-5,-1.633403013000638e-8,-0.00238538293231372,-2.4014446579879058e-5,-1.6162059832962554e-8,-0.002385050648932289,-2.3809267842749758e-5,-1.5921265822080736e-8,-0.0023847856192039767,-2.357281279621325e-5,-1.564223465313254e-8,-0.002384592973846085,-2.333418942320294e-5,-1.5359717819261274e-8,-0.0023844674152753756,-2.3121781930974167e-5,-1.5107704928910368e-8,-0.0023843942234786524,-2.2959461734624766e-5,-1.491486592392592e-8,-0.002384351361188566,-2.2863520256191973e-5,-1.4800873864748202e-8,-0.0023843123252193354,-2.28406536006252e-5,-1.4773996666932113e-8,-0.0023842493365599203,-2.2887020091128393e-5,-1.4829969279080835e-8,-0.0023841366567967904,-2.2988230871289267e-5,-1.4951960812478233e-8,-0.0023839539952364617,-2.312021069380629e-5,-1.5111546301631272e-8,-0.00238369008534005,-2.3251022890859802e-5,-1.527079819049034e-8,-0.0023833464925758774,-2.3344139544444378e-5,-1.5386101234343148e-8,-0.002382941139623567,-2.336411463944466e-5,-1.5414884137776942e-8,-0.002382509826925251,-2.328539769468119e-5,-1.532618136616557e-8,-0.0023821027927208825,-2.3103440347943915e-5,-1.5114003628255345e-8,-0.002381773349088804,-2.284408291453904e-5,-1.4808671898883374e-8,-0.0023815590512039917,-2.2563826220574735e-5,-1.4477243667166011e-8,-0.002381463086871345,-2.233471929550198e-5,-1.4205559558666824e-8,-0.0023814485095478804,-2.221697578834785e-5,-1.4065641166745777e-8,-0.002381452228381859,-2.2233998994991225e-5,-1.4085907881538568e-8,-0.002381411455037569,-2.2365307161191684e-5,-1.424262147988882e-8,-0.0023812864408547367,-2.2559894107652725e-5,-1.447559680357265e-8,-0.002381068549780454,-2.2758766135733266e-5,-1.4714854003566721e-8,-0.0023807747559344136,-2.291337561706086e-5,-1.4902487127724783e-8,-0.002380436370789755,-2.2994297064707167e-5,-1.5003052078078702e-8,-0.0023800885646524635,-2.299177707261808e-5,-1.5004382649226507e-8,-0.00237976327801646,-2.291211671228343e-5,-1.4913466509235396e-8,-0.0023794853741548514,-2.277298527889861e-5,-1.4750994633350504e-8,-0.0023792708581126575,-2.2599122259547465e-5,-1.4546281765613793e-8,-0.0023791261518308006,-2.241861685502684e-5,-1.4332799297124966e-8,-0.002379048025038435,-2.2259517123002332e-5,-1.4144070736454437e-8,-0.002379024159088545,-2.214660348294054e-5,-1.4009774292460906e-8,-0.0023790344674725033,-2.209831973031592e-5,-1.395206580492697e-8,-0.0023790533562057336,-2.2124111902023713e-5,-1.3982415286808531e-8,-0.002379052917494198,-2.222265873839312e-5,-1.4099513692685225e-8,-0.0023790067355613062,-2.238139064397462e-5,-1.428869841454831e-8,-0.002378893869389061,-2.257747476862916e-5,-1.4523091866730754e-8,-0.002378702581053121,-2.2780337278386994e-5,-1.476653436627111e-8,-0.002378433361551305,-2.2955662245878917e-5,-1.4978254730954575e-8,-0.002378100828725866,-2.3070719458652143e-5,-1.511914018072533e-8,-0.0023777339193535064,-2.310095367991105e-5,-1.515956714522654e-8,-0.0023773732909614727,-2.303748192499462e-5,-1.5088399696609955e-8,-0.0023770645160716658,-2.2893966475516838e-5,-1.492131520640025e-8,-0.002376846389675512,-2.2709585344523315e-5,-1.4704506770614907e-8,-0.0023767362857042957,-2.2543662682762967e-5,-1.4508420483594385e-8,-0.0023767187552697256,-2.2459283627088534e-5,-1.4408307234147157e-8,-0.0023767459611238515,-2.2499820209175073e-5,-1.445625065299755e-8,-0.0023767538670920077,-2.2670163085399482e-5,-1.4658709621930782e-8,-0.0023766872411040843,-2.2934727415897178e-5,-1.4973964372283597e-8,-0.0023765193201164465,-2.323369224805631e-5,-1.5331258141108677e-8,-0.0023762563410213845,-2.350669143427009e-5,-1.5658866089500266e-8,-0.002375928430938125,-2.371079089789632e-5,-1.5905466616878e-8,-0.0023755754730009244,-2.382701217823089e-5,-1.6047996748580552e-8,-0.0023752354105984904,-2.3857755177899014e-5,-1.6088754695381856e-8,-0.002374937643938984,-2.3820288416794153e-5,-1.6047823960984603e-8,-0.002374700710601401,-2.3740166302795695e-5,-1.5955340321399732e-8,-0.0023745323579410426,-2.364615831678585e-5,-1.584546360315411e-8,-0.002374430478790293,-2.356666639934087e-5,-1.575205426032653e-8,-0.002374384221762089,-2.352701024171114e-5,-1.57053729084508e-8,-0.0023743752258978223,-2.3547031862098734e-5,-1.572919102890182e-8,-0.0023743792463522813,-2.3638741087943782e-5,-1.5837991897107692e-8,-0.002374368580960303,-2.380412406762251e-5,-1.60343866710735e-8,-0.002374315566041234,-2.403369636554169e-5,-1.6307405665562255e-8,-0.0023741969508027684,-2.4306554286211768E-05,-1.663253558578559e-8,-0.0023739984897390765,-2.4592488041431972e-5,-1.6974166769903272e-8,-0.0023737187937815855,-2.485635257581502e-5,-1.729069822860392e-8,-0.0023733713634909127,-2.506433547134887e-5,-1.75419012861819e-8,-0.002372983923689407,-2.5191127286277645e-5,-1.769739737193478e-8,-0.002372594652471399,-2.5226659292504724e-5,-1.774469317666995e-8,-0.0023722453489884105,-2.518097690876975e-5,-1.7695084665231785e-8,-0.0023719720500917853,-2.508558541252764e-5,-1.758542950683843e-8,-0.0023717945137316262,-2.4989429346639012e-5,-1.7473550411127092e-8,-0.002371707467356645,-2.494832237534192e-5,-1.7425795584798645e-8,-0.002371677894372136,-2.5008867215187453e-5,-1.7497939205762146e-8,-0.0023716521953735695,-2.519167607485704e-5,-1.7715125311405072e-8,-0.002371573067713854,-2.548183725590846e-5,-1.8060341886620035e-8,-0.0023713996123746663,-2.5833052724984733e-5,-1.8479137373701417e-8,-0.002371120733790304,-2.6184543627960917e-5,-1.8899572452170946e-8,-0.002370755545988175,-2.6481976563885553e-5,-1.925703522704526e-8,-0.0023703426289241364,-2.6692240399045317e-5,-1.951183288718046e-8,-0.002369925545652223,-2.6807480392539526e-5,-1.9654094044252732e-8,-0.0023695414256623836,-2.6840554567015164e-5,-1.969852847864199e-8,-0.0023692152111846727,-2.681698378371743e-5,-1.9675010651785046e-8,-0.0023689586030738027,-2.676742403134865e-5,-1.961971546979294e-8,-0.002368771517557994,-2.672230169153053e-5,-1.9568738474777108e-8,-0.0023686442754798733,-2.6708491821190418e-5,-1.9554090992955217e-8,-0.0023685596467347297,-2.6747237733667733e-5,-1.960116950419851e-8,-0.0023684946354959537,-2.68525198499682e-5,-1.97267938434712e-8,-0.002368422377939945,-2.7029396546161804e-5,-1.9937245693158044e-8,-0.002368314731930507,-2.7272358283705946e-5,-2.0226327583010683e-8,-0.002368145999280894,-2.7564325967266348e-5,-2.0574158419038293e-8,-0.0023678977178564387,-2.7877297359742607e-5,-2.0947880438817348e-8,-0.002367563716932125,-2.8175607003251493e-5,-2.13054362009557e-8,-0.0023671538835179904,-2.842219417818171e-5,-2.1602912348808545e-8,-0.0023666947656918185,-2.8587099112517685e-5,-2.1804557557978034e-8,-0.002366225711058261,-2.865603679897383e-5,-2.1892948933762033e-8,-0.0023657906850576426,-2.8636207775475263e-5,-2.1875955583981355e-8,-0.0023654275601418958,-2.855700316341736e-5,-2.178772414823076e-8,-0.0023651577407058874,-2.8464659629023123e-5,-2.168254086275059e-8,-0.002364979157822262,-2.8411626526095733e-5,-2.162241058543541e-8,-0.0023648650418965824,-2.8442979454826838e-5,-2.166103733977592e-8,-0.0023647696710966484,-2.858341235909699e-5,-2.182833892955203e-8,-0.0023646404647817425,-2.8828964162584613e-5,-2.2120438590644107e-8,-0.002364433315624853,-2.9147094222646294e-5,-2.2499504905555506e-8,-0.0023641258489594833,-2.9486173871872614e-5,-2.2904806040155516e-8,-0.0023637232753826293,-2.979130710829397e-5,-2.3271375506734424e-8,-0.0023632546433513643,-3.0020135017275484e-5,-2.3548762139194928e-8,-0.002362761919778162,-3.0152532930312014e-5,-2.371261331000258e-8,-0.002362287259213515,-3.019176737033716e-5,-2.3766181246292998e-8,-0.002361863354709199,-3.015895406508579e-5,-2.3733906423839642e-8,-0.0023615089325091636,-3.0084812691876054e-5,-2.3651770841389847e-8,-0.00236122863993826,-3.0002168291456246e-5,-2.355846990290136e-8,-0.002361015342081342,-2.9940748794497447e-5,-2.3489231721847384e-8,-0.002360853090462664,-2.99242064708113e-5,-2.347223119682423e-8,-0.0023607198261957722,-2.9968579872684983e-5,-2.352671480071416e-8,-0.0023605896206938806,-3.008134175253829e-5,-2.3661849584525067e-8,-0.002360434817332799,-3.0260449420114613e-5,-2.3875596082544623e-8,-0.002360228724551759,-3.049336232044938e-5,-2.4153533560309604e-8,-0.002359949398259028,-3.0756647438100245e-5,-2.4468344706144205e-8,-0.0023595845450922696,-3.1017291850921676e-5,-2.4781284325725616e-8,-0.0023591366902662777,-3.1236974924948935e-5,-2.5047141991886597e-8,-0.0023586265980894577,-3.1379935910133564e-5,-2.5223485405296768e-8,-0.0023580922330621156,-3.1423318194842274e-5,-2.5282880705071384e-8,-0.002357581446433621,-3.136654245445751e-5,-2.5224014627911062e-8,-0.0023571393504713037,-3.123511772789739e-5,-2.507629936540768e-8,-0.0023567945569627356,-3.107585378526121e-5,-2.4894381030997065e-8,-0.002356549808293787,-3.094425143746427e-5,-2.474345004782824e-8,-0.0023563808398743354,-3.088856588907149e-5,-2.468058353057825e-8,-0.002356243673347264,-3.093631165990455e-5,-2.473883210055294e-8,-0.0023560873309623623,-3.108742146766624e-5,-2.491898425872327e-8,-0.002355867681615853,-3.131543790559243e-5,-2.5190695953120915e-8,-0.0023555585115042363,-3.157564626292947e-5,-2.5501820575724358e-8,-0.0023551570793018816,-3.1817414987353845e-5,-2.5792819079502532e-8,-0.0023546830395721335,-3.199708556138092e-5,-2.601196397786125e-8,-0.0023541715928763573,-3.2087761735616844e-5,-2.612699814404651e-8,-0.0023536634728575476,-3.208356074308803e-5,-2.6130313106072467e-8,-0.002353195112875602,-3.199796079202877e-5,-2.6037164980856268e-8,-0.0023527917127598285,-3.185788963483199e-5,-2.5878832104811108e-8,-0.0023524643421163408,-3.1696231806253835e-5,-2.569384848742031e-8,-0.002352210558042157,-3.15451429795799e-5,-2.5520122001298037e-8,-0.002352017095867703,-3.1431404225224024e-5,-2.5389404645823923e-8,-0.0023518632011028735,-3.137387309610943e-5,-2.532421829510982e-8,-0.0023517237164243985,-3.138241693585632e-5,-2.5336544634470662e-8,-0.0023515716747720653,-3.1457557889187125e-5,-2.542738407693742e-8,-0.002351380666688492,-3.159026777706401e-5,-2.5586503563180176e-8,-0.002351127544409854,-3.1761819323126654e-5,-2.5792232842799336e-8,-0.002350795997438297,-3.194420346482523e-5,-2.601189004377488e-8,-0.00235038109753939,-3.210218902073709e-5,-2.620411988036901e-8,-0.0023498939766626002,-3.2198362784118887e-5,-2.6324761207664516e-8,-0.002349364441336059,-3.2201906185988056e-5,-2.6337171516754927e-8,-0.002348838300113838,-3.2099820884316304e-5,-2.622549250364978e-8,-0.002348367104865175,-3.1906193387378433E-05,-2.6005638953133388e-8,-0.002347991928908947,-3.16632964565759e-5,-2.572670334096174e-8,-0.0023477278385863123,-3.1430895046698076e-5,-2.5458524871709287e-8,-0.0023475573302447783,-3.1266834683295797e-5,-2.526903432937616e-8,-0.0023474365947856223,-3.1207840834265524e-5,-2.5201788974958383e-8,-0.0023473111312674834,-3.125926073193481e-5,-2.5263855985966862e-8,-0.0023471329217680113,-3.139668630853095e-5,-2.5427484190962568e-8,-0.0023468725828316842,-3.157629805487812e-5,-2.564195034641037e-8,-0.00234652400711633,-3.174838223286182e-5,-2.5849203831761563e-8,-0.0023461023891960834,-3.1869477830964374e-5,-2.5998061315297644e-8,-0.0023456379459007243,-3.191071358278629e-5,-2.6054089874945166e-8,-0.002345167714297938,-3.1861618822297345e-5,-2.6004274687434745e-8,-0.0023447273964050676,-3.1729710102991125e-5,-2.5856743363241975e-8,-0.0023443447623778383,-3.15367263237694e-5,-2.5636504725218675e-8,-0.002344035611415732,-3.1312828941514695e-5,-2.5378716588854288e-8,-0.0023438025868741026,-3.1090321324122036e-5,-2.5121307043493483e-8,-0.002343636419494298,-3.0898215687290654e-5,-2.4898533605619872e-8,-0.0023435187346924568,-3.075840762917019e-5,-2.473640851696107e-8,-0.002343425470101371,-3.06836209512552e-5,-2.4650217468068794e-8,-0.002343330156203922,-3.067678824239108e-5,-2.46437581014699e-8,-0.0023432067557343844,-3.0731268964403044e-5,-2.4709591242115973e-8,-0.002343032205144756,-3.083142896996042e-5,-2.482971769728214e-8,-0.0023427890317182145,-3.09534849684997e-5,-2.4976536733214626e-8,-0.002342468429998982,-3.1066960867543575e-5,-2.5114480866863458e-8,-0.0023420738829506476,-3.113759753821509e-5,-2.520334251191813e-8,-0.0023416245655075696,-3.113286617338482e-5,-2.5204692814982757e-8,-0.002341156456037676,-3.1030702451985074e-5,-2.5092155875587517e-8,-0.0023407180452088712,-3.083007768640861e-5,-2.4863906224778936e-8,-0.0023403583393829482,-3.055874873840108e-5,-2.4551880478986413e-8,-0.002340109110049135,-3.027131810595971e-5,-2.421961909495806e-8,-0.0023399695530012623,-3.0033690127916367e-5,-2.394416454197952e-8,-0.0023399035996637175,-2.9898874983898596e-5,-2.378781857784365e-8,-0.0023398534173924984,-2.9886919236503446e-5,-2.3774659522504135e-8,-0.002339761711113448,-2.9979953784273124e-5,-2.388461211409085e-8,-0.0023395905205925225,-3.0132912884441697e-5,-2.4065731184666787e-8,-0.002339328969507674,-3.0291463113513845e-5,-2.4254908440399182e-8,-0.0023389905263682936,-3.0407909014329455e-5,-2.439632805788379e-8,-0.002338604647812188,-3.0450610353352113e-5,-2.4452510933726005e-8,-0.002338207386718835,-3.0406942615971795e-5,-2.4407957962391716e-8,-0.002337833512955816,-3.0281802581374335e-5,-2.4267646192649814e-8,-0.002337510916804099,-3.009374007485284e-5,-2.405271127085375e-8,-0.00233725717872705,-2.9870050109659613e-5,-2.379481298482102e-8,-0.0023370780896862574,-2.96415499392353e-5,-2.3530020163429226e-8,-0.0023369679571642664,-2.943765111817507e-5,-2.3292964938693384e-8,-0.002336911380731853,-2.928228272071026e-5,-2.311196745938867e-8,-0.0023368860519105425,-2.9191004014698512e-5,-2.3005572673000774e-8,-0.0023368660995786595,-2.9169474421886248e-5,-2.2980719814710166e-8,-0.002336825467155114,-2.921325593941368e-5,-2.3032512896595408e-8,-0.0023367409423963475,-2.9308629309781252e-5,-2.3145193486284356e-8,-0.002336594789812839,-2.94340434461076e-5,-2.329383537317645e-8,-0.002336377141683103,-2.9562078747041886e-5,-2.3446595994696407e-8,-0.0023360882937399465,-2.9662099579462933e-5,-2.3567732219797592e-8,-0.0023357408585416017,-2.9704065354320472e-5,-2.36219691020052e-8,-0.0023353611169372288,-2.9664178807460198e-5,-2.3581074777115405e-8,-0.002334987901996926,-2.953256184083392e-5,-2.3432902238347995e-8,-0.002334666656879615,-2.9321444023828176e-5,-2.3191111499019182e-8,-0.002334437144125591,-2.906967526378198e-5,-2.2900614292587276e-8,-0.0023343170286952335,-2.8837540628692366e-5,-2.263164135915559e-8,-0.002334289377364724,-2.868863915936848e-5,-2.245863079739621e-8,-0.0023343042731189534,-2.8664576401788524e-5,-2.243065985991554e-8,-0.002334297427240077,-2.8766728884431434e-5,-2.2550060161150142e-8,-0.00233421602436304,-2.8956937999179782e-5,-2.277304822604038e-8,-0.0023340366493231914,-2.9175695277364925e-5,-2.3030723691705274e-8,-0.0023337675567428337,-2.9365148437702835e-5,-2.325572494540632e-8,-0.002333439019167699,-2.948499872544599e-5,-2.3400714149062195e-8,-0.002333090235900311,-2.9517803647735512e-5,-2.3444668908795366e-8,-0.002332758701346869,-2.9466638538369463e-5,-2.3390385484474364e-8,-0.0023324738052357035,-2.934937562502968e-5,-2.3258055105401835e-8,-0.0023322540424882687,-2.919255582833955e-5,-2.3078281732160556e-8,-0.0023321064600515273,-2.902614663617285e-5,-2.2885999487207492e-8,-0.002332027286009202,-2.8879263050207602e-5,-2.271540058262342e-8,-0.0023320033619865835,-2.877662704188809e-5,-2.259567613496163e-8,-0.002332014289946477,-2.873576097567269e-5,-2.2547631244607782e-8,-0.002332035177135321,-2.8765014379972653e-5,-2.2581326280258576e-8,-0.0023320398449503863,-2.8862571973660708e-5,-2.2694919143851268e-8,-0.0023320042471653172,-2.9016654866027363e-5,-2.287492871831799e-8,-0.0023319096779583115,-2.9206946607571382e-5,-2.3097917898279694e-8,-0.002331745434296553,-2.940702053860624e-5,-2.333330260051453e-8,-0.0023315107913132412,-2.9587554741398894e-5,-2.354703004535643e-8,-0.002331216183994399,-2.9720241445388588e-5,-2.370604059396504e-8,-0.0023308833968589734,-2.9782371874826208e-5,-2.378354402409868e-8,-0.0023305442821816677,-2.976211745161164e-5,-2.376519028712881e-8,-0.002330237019842478,-2.9664138028036154e-5,-2.3655730605611676e-8,-0.002329998741183291,-2.9513937315933643e-5,-2.3484296706424633e-8,-0.0023298543227104943,-2.935776247905231e-5,-2.3304483190610554e-8,-0.0023298039688696283,-2.9254146272590037e-5,-2.3184600111912306e-8,-0.0023298161627486316,-2.9255771124284795e-5,-2.3186513526067538e-8,-0.002329833717182933,-2.9387407680729007e-5,-2.3339799540173714e-8,-0.00232979429485865,-2.963251445919433e-5,-2.3625939095795707e-8,-0.0023296555485235837,-2.993876684354111e-5,-2.3984573422930422e-8,-0.002329410031430962,-3.0240089226068864e-5,-2.433902191722381e-8,-0.002329082684861528,-3.048133910260082e-5,-2.4624941076546366e-8,-0.002328716252266335,-3.063272313348873e-5,-2.4807118980201846e-8,-0.0023283552432151315,-3.0691090518933916e-5,-2.4881121231374615e-8,-0.002328035235814446,-3.067316204035687e-5,-2.486564617259907e-8,-0.002327778453652459,-3.060672619689269e-5,-2.4792504271784795e-8,-0.0023275936390781573,-3.052324005011218e-5,-2.4698123022970693e-8,-0.002327477917828302,-3.0452785078251434e-5,-2.461765146651857e-8,-0.002327419112590265,-3.0420884134364205E-05,-2.458113394257909e-8,-0.0023273980040969685,-3.0446326357327403e-5,-2.4610839446448034e-8,-0.002327390669521878,-3.0539531096370326e-5,-2.4719266183936192e-8,-0.0023273711094918687,-3.070139397965835e-5,-2.4907774784639605e-8,-0.002327314298389271,-3.0922803788878494e-5,-2.5166047977091938e-8,-0.002327199604182002,-3.118523180180453e-5,-2.5472802828543438e-8,-0.0023270141555905726,-3.146275582275373e-5,-2.579813850369303e-8,-0.002326755507257778,-3.1725524753218145e-5,-2.6107509797618743e-8,-0.002326433025242352,-3.194433915074523e-5,-2.636696380227279e-8,-0.00232606757107646,-3.2095816875852493E-05,-2.6549064620552972e-8,-0.0023256892347763903,-3.216744119251998e-5,-2.663874128588696e-8,-0.0023253330548705857,-3.216173673953351e-5,-2.6638224765391106e-8,-0.002325032753407156,-3.209873777588853e-5,-2.6570101510359574e-8,-0.0023248127299698297,-3.201549252585091e-5,-2.6476970450584947e-8,-0.002324679419257254,-3.1960909325668365e-5,-2.641563798078472e-8,-0.002324614738368727,-3.198471760129885e-5,-2.6444333423830437e-8,-0.0023245759518624605,-3.2121629871326e-5,-2.6604171937243653e-8,-0.002324505785473568,-3.237602913514e-5,-2.6901108196581215e-8,-0.0023243518127423596,-3.271591879496891e-5,-2.7298653087985366e-8,-0.00232408675837698,-3.308237216229446e-5,-2.772870037338478e-8,-0.0023237183421038277,-3.341134600686158e-5,-2.8116827565107905e-8,-0.0023232834120907914,-3.365603424276712e-5,-2.8408283829963784e-8,-0.0023228315250686865,-3.379852594585868e-5,-2.8581601521190148e-8,-0.0023224081917482394,-3.384823308876176e-5,-2.8646918820079517e-8,-0.0023220447513682056,-3.3832392487888304e-5,-2.8635163154902712e-8,-0.0023217556857669294,-3.378539642682306e-5,-2.8585851446400122e-8,-0.0023215406467797794,-3.374081042009061e-5,-2.8537897313167375e-8,-0.002321388188291431,-3.3726795999537757e-5,-2.8524238705810844e-8,-0.002321279357326137,-3.376398701175925e-5,-2.8569237172436706e-8,-0.002321190580067218,-3.3864561252015965e-5,-2.8687469509032147e-8,-0.0023210960815719848,-3.403170234189584e-5,-2.8883032294239802e-8,-0.0023209703112198727,-3.425921865422195e-5,-2.9149091545929388e-8,-0.0023207907692627456,-3.453153525414017e-5,-2.9467892708359517e-8,-0.002320541348280485,-3.4824632907782434e-5,-2.9811852888919886e-8,-0.002320215787982576,-3.510859047522046e-5,-3.014647119465895e-8,-0.002319820326628823,-3.5352020534393274e-5,-3.0435397604764066e-8,-0.002319374429235887,-3.5528027890910064e-5,-3.064726176518535e-8,-0.0023189086929537852,-3.562058707993201e-5,-3.0763027321289934e-8,-0.0023184596969337903,-3.562967431567573e-5,-3.078198150000386e-8,-0.0023180625159862473,-3.557348082881343e-5,-3.072444153370548e-8,-0.0023177424037032486,-3.548664144440317e-5,-3.062992075551395e-8,-0.0023175074984734543,-3.5414226963611394e-5,-3.0550393228261676e-8,-0.0023173444808164832,-3.5402047537825155e-5,-3.053919267474974e-8,-0.002317219043515323,-3.548478675955916e-5,-3.063722510387765e-8,-0.0023170825452282313,-3.567474791693208e-5,-3.085971138660794e-8,-0.0023168847150472982,-3.595522696647335e-5,-3.118819869005432e-8,-0.0023165894160324624,-3.628263070896687e-5,-3.157275232013399e-8,-0.0023161874027681608,-3.659879209134966e-5,-3.194610912976707e-8,-0.002315699674318987,-3.6849589557777495e-5,-3.224527727736699e-8,-0.002315169322935829,-3.7001624225642415e-5,-3.2430960432418255e-8,-0.002314646199700832,-3.704960690848625e-5,-3.249625130896201e-8,-0.0023141720768090047,-3.701289220350198e-5,-3.246278529929417e-8,-0.0023137719944856,-3.692533958583261e-5,-3.2369181497699095e-8,-0.002313452787336121,-3.682436937453514e-5,-3.225850415814049e-8,-0.002313206349815514,-3.674303927821273e-5,-3.216911319350878e-8,-0.002313014513893187,-3.6705975238209506e-5,-3.21298653443614e-8,-0.002312853494672486,-3.6728114464930174e-5,-3.215852030546475e-8,-0.0023126972338266515,-3.681481612065799e-5,-3.226175333094992e-8,-0.0023125198655322456,-3.696232465768661e-5,-3.24356389814037e-8,-0.002312297893017724,-3.7158178604489365e-5,-3.266612338087536e-8,-0.0023120126639769563,-3.7381726521067834e-5,-3.292962936131338e-8,-0.002311653424383115,-3.760539504033395e-5,-3.319450237088803e-8,-0.0023112206387045776,-3.7797568417562995e-5,-3.3424282093674193e-8,-0.002310728536788081,-3.7927679776685745e-5,-3.3583518129125895e-8,-0.0023102052694704335,-3.7973269632081315e-5,-3.3645883688399196e-8,-0.002309689114953737,-3.792741024238655e-5,-3.3602769741033175e-8,-0.002309220367796046,-3.780365018678395e-5,-3.34690861984953e-8,-0.0023088306454635615,-3.763560952953059e-5,-3.328295822689161e-8,-0.0023085331437765486,-3.7470095324169245e-5,-3.30979876994702e-8,-0.0023083175552887736,-3.7355299923970754e-5,-3.296981668241202e-8,-0.0023081517291295645,-3.732774019023125e-5,-3.2941121239366296e-8,-0.0023079897002703125,-3.740204716129852e-5,-3.302971182509186e-8,-0.0023077837234663535,-3.7566599907923365e-5,-3.322321468544985e-8,-0.0023074969972720206,-3.778618699150824e-5,-3.348181192736664e-8,-0.002307113642460123,-3.801111136025596e-5,-3.374850764245679e-8,-0.002306642967714749,-3.819047303514916e-5,-3.3964389987148476e-8,-0.0023061164179579287,-3.8285780849737995e-5,-3.40844388236443e-8,-0.0023055780533455137,-3.828042081343265e-5,-3.408864550347391e-8,-0.0023050720265702773,-3.818189606197478e-5,-3.3984813393723e-8,-0.0023046316398957264,-3.801683262139339e-5,-3.3802987367837267e-8,-0.00230427334288954,-3.7821682524135505e-5,-3.358486019035794e-8,-0.0023039963644423222,-3.7633111972824855e-5,-3.337272686138091e-8,-0.002303786336992908,-3.748100255910153e-5,-3.320135317605305e-8,-0.0023036204437704402,-3.738497046118624e-5,-3.3093833427999516e-8,-0.002303472191629436,-3.735370107695463e-5,-3.306068870435814e-8,-0.002303315004370737,-3.738581151208172e-5,-3.310077586295026e-8,-0.0023031247168510474,-3.7471158388023855e-5,-3.32027746012847e-8,-0.002302881512812013,-3.759204402485969e-5,-3.334659244660564e-8,-0.002302571933303701,-3.772437161974421e-5,-3.3504698526810776e-8,-0.0023021913377570913,-3.7839318120416736e-5,-3.364401288936653e-8,-0.0023017466592312736,-3.790639624397905e-5,-3.3729365113627754e-8,-0.002301258499438132,-3.789868982799408e-5,-3.3729469251606456e-8,-0.0023007607416336475,-3.780025860121621e-5,-3.362545368835861e-8,-0.0023002955727393715,-3.761398422436507e-5,-3.341996763976326e-8,-0.002299903135206751,-3.7366095073082776e-5,-3.314251715734096e-8,-0.002299608241321281,-3.7103131944292765e-5,-3.284613208267745e-8,-0.002299409859179875,-3.687991824381861e-5,-3.259369265324991e-8,-0.002299279285932504,-3.674229260682073e-5,-3.243819215569253e-8,-0.002299168823546775,-3.6712133551511284e-5,-3.240551750739637e-8,-0.002299027108588892,-3.678121604662647e-5,-3.248721326687466e-8,-0.0022988143521173038,-3.6915489318077446e-5,-3.2645093229978927e-8,-0.0022985121434507642,-3.706652291671608e-5,-3.282408232012828e-8,-0.0022981259731840605,-3.718510344513982e-5,-3.296765596479805e-8,-0.002297681444338649,-3.723291069296564e-5,-3.3031266622567177e-8,-0.0022972163826716816,-3.7189964304819385e-5,-3.299108395567988e-8,-0.002296771289655474,-3.705699893642229e-5,-3.284699771750507e-8,-0.0022963804162048507,-3.685301926143306e-5,-3.2620069474865724e-8,-0.0022960653412444033,-3.66092080660818e-5,-3.234570517089325e-8,-0.0022958321994601843,-3.6361104881873565e-5,-3.206471491834107e-8,-0.002295672602594345,-3.6141216362085723e-5,-3.181475278986125e-8,-0.002295567237924504,-3.5973699239903435e-5,-3.1624065630400416e-8,-0.0022954906243840873,-3.5871742882865936e-5,-3.150833328403298e-8,-0.002295415668514197,-3.583734289021038e-5,-3.1470303577740756e-8,-0.002295317231199662,-3.5862619387422194e-5,-3.15012747362056e-8,-0.002295174587684972,-3.593175025312556e-5,-3.158334026307848e-8,-0.0022949731503511582,-3.6022919077861825e-5,-3.169165951737354e-8,-0.0022947059593891967,-3.6110200777476796e-5,-3.1796616976641045e-8,-0.0022943752972072132,-3.616576445549112e-5,-3.186629056886203e-8,-0.002293994395917849,-3.616308491839482e-5,-3.1870055583428156e-8,-0.0022935884913046806,-3.608188698839053e-5,-3.1784218012190775e-8,-0.002293193570220022,-3.591490428985524e-5,-3.159981966187581e-8,-0.002292850700555697,-3.567488665407547e-5,-3.1330816136700846e-8,-0.0022925949121289655,-3.539799888834784e-5,-3.101814903088958e-8,-0.002292441079759657,-3.5138654460845667e-5,-3.072396888884776e-8,-0.0022923737482313526,-3.495377210004042e-5,-3.051367324612897e-8,-0.0022923487357085484,-3.4881645478195986e-5,-3.043169702193616e-8,-0.0022923082878944408,-3.492651926994169e-5,-3.048374540670587e-8,-0.0022922023645509603,-3.5057777584302726e-5,-3.063565736187704e-8,-0.002292004823110608,-3.522321745129158e-5,-3.0828335408719365e-8,-0.002291718031987991,-3.536782916311345e-5,-3.099901295008251e-8,-0.0022913672330241424,-3.544908418763723e-5,-3.109866179650461e-8,-0.002290990059070643,-3.544468044302114e-5,-3.1100956371175926e-8,-0.0022906260283061795,-3.535334262818601e-5,-3.1003445892457103e-8,-0.0022903084934227853,-3.5191150650947184e-5,-3.082366001102285e-8,-0.002290059645962504,-3.4985740590012e-5,-3.059271116004469e-8,-0.002289888308889336,-3.476990829758171e-5,-3.034806608016834e-8,-0.002289790112933232,-3.457553303386381e-5,-3.0126527996035566e-8,-0.0022897496397346197,-3.442855427528838e-5,-2.995832382862933e-8,-0.002289743927638933,-3.434557978525591e-5,-2.986303752963534e-8,-0.002289746588173612,-3.433235628935457e-5,-2.984772570762622e-8,-0.002289731806192985,-3.438399705495003e-5,-2.9907130752155833e-8,-0.0022896776371395563,-3.448658144544781e-5,-3.0025539997263514e-8,-0.002289568333240068,-3.4619516180843974e-5,-3.0179546880832127e-8,-0.002289395830989697,-3.47581192864351e-5,-3.034104020878307e-8,-0.0022891606980330746,-3.487624615385044e-5,-3.048017863245395e-8,-0.0022888727561433233,-3.494909690242651e-5,-3.0568516096956604e-8,-0.0022885513883073552,-3.4956571873741554e-5,-3.058275352336701e-8,-0.002288225022291335,-3.4887629910986334e-5,-3.050971134872694e-8,-0.0022879285346280604,-3.474558680788467e-5,-3.0352495822772635e-8,-0.002287697014005668,-3.4552914595581084e-5,-3.013619110840197e-8,-0.002287555258528512,-3.4352264826514714e-5,-2.990924381258495e-8,-0.002287505296293813,-3.419939650252042e-5,-2.9735499630763315e-8,-0.0022875185392014596,-3.414608973943245e-5,-2.9674650423240414e-8,-0.002287540654767576,-3.421841512072958e-5,-2.975725826269698e-8,-0.0022875109191809696,-3.44028369555647e-5,-2.9968681291149824e-8,-0.0022873866431173677,-3.4650463730046105e-5,-3.025373403994287e-8,-0.002287158332342123,-3.489747604808045e-5,-3.05398504214709e-8,-0.0022868484445149025,-3.5088852879194874e-5,-3.076405861695239e-8,-0.0022864982748903593,-3.519317267669936e-5,-3.0889870385194194e-8,-0.002286152562989151,-3.520525313625685e-5,-3.091044534452543e-8,-0.002285848351995372,-3.514064936767193e-5,-3.084259232463975e-8,-0.0022856095545583004,-3.5027359972136336e-5,-3.071759518882632e-8,-0.0022854458582351883,-3.4898128170332654e-5,-3.057260162184731e-8,-0.00228535406658743,-3.4784542000901826e-5,-3.0443888195242704e-8,-0.0022853205545476122,-3.471284955278595e-5,-3.0361936066289834e-8,-0.0022853242782383083,-3.4701131164836125e-5,-3.034799776992067e-8,-0.0022853401172956323,-3.475768108400181e-5,-3.0412079618106474e-8,-0.0022853423369857883,-3.488055943683937e-5,-3.055234935450222e-8,-0.0022853079331452636,-3.505829657473036e-5,-3.075595068991225e-8,-0.002285219540357508,-3.5271714452898415e-5,-3.1001145596984345e-8,-0.0022850675526555806,-3.5496617417606936e-5,-3.12604400979373e-8,-0.0022848513167228906,-3.5706935033342264e-5,-3.150417106161792e-8,-0.0022845794630886704,-3.587803665272236e-5,-3.170422273669897e-8,-0.0022842694256383967,-3.599011192601114e-5,-3.183778648177624e-8,-0.00228394612191299,-3.6031573527607656e-5,-3.1891182357691236e-8,-0.002283639559272516,-3.6002497987339216e-5,-3.1863829412209876e-8,-0.0022833807000028155,-3.591781523569677e-5,-3.17720571397393e-8,-0.002283194835117489,-3.580895633737797e-5,-3.1651234007313374e-8,-0.0022830926687873554,-3.572151453512309e-5,-3.155331255203707e-8,-0.0022830615120185546,-3.57062013456485e-5,-3.1536574359696766e-8,-0.002283061910144253,-3.5802515052971905e-5,-3.1646865496677e-8,-0.0022830358716624693,-3.602024681505544e-5,-3.1896238479571526e-8,-0.002282927452508825,-3.6329876875859376e-5,-3.2251745516056244e-8,-0.0022827062816265977,-3.667107036558002e-5,-3.264498114105585e-8,-0.0022823796709535715,-3.697658131461953e-5,-3.299928501542816e-8,-0.0022819864232603475,-3.719735460090399e-5,-3.325834215160285e-8,-0.0022815785791103415,-3.731532145924846e-5,-3.340080377913226e-8,-0.0022812032084957965,-3.734128205682896e-5,-3.3438034270071183e-8,-0.002280891871937716,-3.7304369843453694e-5,-3.3402379181189025e-8,-0.00228065814223643,-3.724061603780327e-5,-3.333439792808469e-8,-0.0022805000038872204,-3.718451764462349e-5,-3.327337443004344e-8,-0.0022804039844390635,-3.7164175330215406e-5,-3.325171023981485e-8,-0.002280349211641098,-3.7198996010101034e-5,-3.3292116454290506e-8,-0.0022803108906574855,-3.729879835377055e-5,-3.3406389414515064e-8,-0.002280263357184188,-3.746369139111816e-5,-3.359514042205903e-8,-0.0022801829142725643,-3.76845561343038e-5,-3.3848312986735143e-8,-0.0022800505440541212,-3.794419075362827e-5,-3.4146529008746734e-8,-0.002279854394613768,-3.821932509749697e-5,-3.446344080378021e-8,-0.002279591667380771,-3.8483592197162534e-5,-3.4769134737453335e-8,-0.0022792694769532365,-3.8711202674219674e-5,-3.503427192200282e-8,-0.002278904453787725,-3.888090559245803e-5,-3.523451107453436e-8,-0.002278520994022731,-3.897981593858639e-5,-3.5354790439935546e-8,-0.0022781481387727765,-3.900661067575245e-5,-3.539296714173588e-8,-0.002277815196272408,-3.897358681368924e-5,-3.536228182941742e-8,-0.0022775462453310945,-3.8907078916294634e-5,-3.5292063500544346e-8,-0.0022773537578315915,-3.88453723888866e-5,-3.5225611058902015e-8,-0.0022772323066882973,-3.88328268780596e-5,-3.5213664861948535e-8,-0.002277154719218136,-3.89093864059176e-5,-3.5302432695555914e-8,-0.0022770743013513575,-3.909671606337604e-5,-3.551757119061668e-8,-0.0022769361938568297,-3.93858582620144e-5,-3.584980135264396e-8,-0.0022766965332619883,-3.9734321357865546e-5,-3.625133407898208e-8,-0.002276341115211891,-4.007817531691193e-5,-3.664954907985626e-8,-0.0022758922917568173,-4.035551223226274e-5,-3.697373201351628e-8,-0.0022753992488523085,-4.0528709716748785e-5,-3.7180470529775404e-8,-0.0022749180581077707,-4.059371095721217e-5,-3.726429156698758e-8,-0.0022744933359550488,-4.057442247318822e-5,-3.7251455930854735e-8,-0.0022741491150162865,-4.0509294110553696e-5,-3.718495011122612e-8,-0.0022738888817427747,-4.043836498717976e-5,-3.7109976390399145e-8,-0.0022737006122365193,-4.0394935220934196e-5,-3.706454561541384e-8,-0.0022735628534328385,-4.0401953921682715e-5,-3.7075254422409025e-8,-0.0022734497848497666,-4.047142453162688e-5,-3.7156399239620105e-8,-0.0022733348583905645,-4.060512607912676e-5,-3.731060746631049e-8,-0.0022731934580261463,-4.0795705115488924e-5,-3.752998308750005e-8,-0.00227300512552994,-4.102789765037355e-5,-3.7797496246937914e-8,-0.0022727556876095496,-4.128004247365327e-5,-3.808875005360056e-8,-0.002272439315133133,-4.152626986166031e-5,-3.837450044928072e-8,-0.0022720601389120266,-4.173970137526162e-5,-3.862427282168575e-8,-0.0022716327599983676,-4.1896595491755895e-5,-3.8811002059216745e-8,-0.0022711810539608945,-4.1980908267824755e-5,-3.8916135263443654e-8,-0.00227073496835204,-4.1988409487146426e-5,-3.8934279948754235e-8,-0.002270325441507122,-4.192927899551331e-5,-3.8876227340469446e-8,-0.002269978122215947,-4.1828177158028644e-5,-3.8769219119330844e-8,-0.00226970702629286,-4.172123601459589e-5,-3.865378498185866e-8,-0.0022695094556672577,-4.1649926366732944e-5,-3.857700174244831e-8,-0.002269363629343624,-4.165219466353312e-5,-3.858250738357373e-8,-0.0022692306298698933,-4.175204263636338e-5,-3.869853604806306e-8,-0.0022690619905320303,-4.195007217268219e-5,-3.892687238355782e-8,-0.0022688127656313537,-4.22189359377569e-5,-3.923733305382498e-8,-0.0022684568851602466,-4.2507766167857475e-5,-3.9572560430991624e-8,-0.002267998326091102,-4.275672312180571e-5,-3.986449700076138e-8,-0.0022674714734245843,-4.291695195769548e-5,-4.005713795935709e-8,-0.0022669291597497737,-4.296662160132691e-5,-4.012487438155247e-8,-0.0022664242564903914,-4.2915295188340505e-5,-4.007760659904807e-8,-0.0022659940652150863,-4.279611123618072e-5,-3.995206908990567e-8,-0.002265653503930502,-4.265191244855833e-5,-3.979631362883339e-8,-0.0022653969340296893,-4.252261313043785e-5,-3.965552378432056e-8,-0.0022652046236925952,-4.243769493960012e-5,-3.95634861733223e-8,-0.002265049794477369,-4.241380155046763e-5,-3.9539697044729416e-8,-0.0022649041082798216,-4.245547864330964e-5,-3.9589986428501323e-8,-0.00226474124918325,-4.255711975844435e-5,-3.970856627954339e-8,-0.0022645391613217362,-4.270500455743162e-5,-3.988028806109427e-8,-0.0022642816799547678,-4.287910780361013e-5,-4.008272167427198e-8,-0.002263960087918555,-4.3054900809357125e-5,-4.028824466566982e-8,-0.002263574719130994,-4.320567695985923e-5,-4.0466687322319195e-8,-0.0022631362204558894,-4.330590165289405e-5,-4.058908270551296e-8,-0.0022626656639188536,-4.3335670173572484e-5,-4.063264302083518e-8,-0.0022621925719040524,-4.328569846595285e-5,-4.0586363627982455e-8,-0.0022617502460647106,-4.316153538197371e-5,-4.045582192050501e-8,-0.0022613686905826485,-4.298517863381172e-5,-4.02651379123331e-8,-0.002261066659628733,-4.279254577136207e-5,-4.0054328367112326e-8,-0.002260845254738966,-4.2626492298289355e-5,-3.9871642378719045e-8,-0.002260685452234943,-4.252671070386968e-5,-3.976228848354713e-8,-0.0022605509404802003,-4.251909481418603e-5,-3.9756384567982686e-8,-0.002260396131472639,-4.260760900980759e-5,-3.985954021720435e-8,-0.002260177694963087,-4.277131989594658e-5,-4.004914789052283e-8,-0.002259866766101412,-4.2968166060102e-5,-4.027830918497738e-8,-0.002259458210637815,-4.3145372744970057e-5,-4.048742944540769e-8,-0.0022589733613924707,-4.3254145791464096e-5,-4.062085419440258e-8,-0.002258454294531585,-4.326392054614321e-5,-4.064315339359069e-8,-0.0022579511436190353,-4.3170655978861896e-5,-4.0548734377790825e-8,-0.0022575073922757242,-4.2995916330466316e-5,-4.036104128218041e-8,-0.0022571489718927946,-4.2777865460527206e-5,-4.012258232791228e-8,-0.0022568805697357453,-4.255884861731508e-5,-3.988102778980891e-8,-0.0022566887016491335,-4.2374725671374876e-5,-3.967716426716014e-8,-0.002256548444902981,-4.2248875604791526e-5,-3.953799287615894e-8,-0.002256430457477919,-4.2190877177150564e-5,-3.9475031093020603e-8,-0.0022563063262742698,-4.219814048656945e-5,-3.9485967035225393e-8,-0.0022561518892659908,-4.225864272457631e-5,-3.9557654446514965e-8,-0.0022559490620141626,-4.235363463796422e-5,-3.9669178707093105e-8,-0.0022556869196150115,-4.245992921932744e-5,-3.9794503964805914e-8,-0.002255362650026142,-4.2551960746738174e-5,-3.990484416493067e-8,-0.00225498259128279,-4.260418776905965e-5,-3.9971363026047316e-8,-0.0022545629951551973,-4.259443556510106e-5,-3.996888136177645e-8,-0.002254129647814144,-4.2508371758274345e-5,-3.988086135327218e-8,-0.0022537151993712646,-4.234455193159232e-5,-3.970509132900266e-8,-0.00225335330209883,-4.2118407480589275e-5,-3.9458268320626675e-8,-0.0022530698916637996,-4.186263655252896e-5,-3.917660732834667e-8,-0.0022528740190121094,-4.162180095563857e-5,-3.8909958155369906e-8,-0.002252752217450626,-4.1441201489894646e-5,-3.870944411348118e-8,-0.0022526698614514173,-4.1353325375690816e-5,-3.861225482382609e-8,-0.0022525801000990234,-4.136713774543938e-5,-3.862947201208333e-8,-0.0022524373733573866,-4.146464933767827e-5,-3.8741929345072135e-8,-0.002252210525373519,-4.1605994325611274e-5,-3.89055852814104e-8,-0.0022518911377591767,-4.1740803405337114e-5,-3.906405012373955e-8,-0.0022514949999607,-4.182182996698903e-5,-3.9163825942864726e-8,-0.0022510569958787445,-4.181681135790668e-5,-3.916776403591502e-8,-0.002250621342141275,-4.171557236139564e-5,-3.906331946104076e-8,-0.0022502301294550285,-4.15308425955026e-5,-3.886378396708598e-8,-0.002249913449319389,-4.129306958437996e-5,-3.860271679338941e-8,-0.002249683726453224,-4.104130530740587e-5,-3.832383998911728e-8,-0.002249535283975047,-4.0813295369522146e-5,-3.8069884935159855e-8,-0.0022494483048860476,-4.0637702512655366e-5,-3.787370255806774e-8,-0.002249395075586441,-4.053008747505458e-5,-3.775352485809548e-8,-0.002249346228387429,-4.049258564563083e-5,-3.771239510768213e-8,-0.0022492755010270257,-4.0516052192387256e-5,-3.774046242612261e-8,-0.0022491626277783426,-4.058321264511812e-5,-3.7818520580070174e-8,-0.0022489947436900195,-4.0671780343274614e-5,-3.7921589641568395e-8,-0.002248766957445944,-4.075711343877572e-5,-3.8021986797907276e-8,-0.0022484826632076446,-4.081452585563666e-5,-3.8091951714669235e-8,-0.002248153838048646,-4.0821728247974105e-5,-3.8106341905870566e-8,-0.002247801079960905,-4.076195151424849e-5,-3.804605949402225e-8,-0.002247452593148405,-4.0628012018448585e-5,-3.790257146744856e-8,-0.0022471409301629466,-4.042682459236734e-5,-3.768302732502345e-8,-0.00224689646765886,-4.018263561138499e-5,-3.7414039313886286e-8,-0.0022467379334867687,-3.993603737751534e-5,-3.71407722402369e-8,-0.0022466629330224067,-3.973603731085064e-5,-3.6918205817805125e-8,-0.0022466437937668942,-3.962548372148706e-5,-3.679484541297912e-8,-0.0022466332626418345,-3.962510713746668e-5,-3.679475135912498e-8,-0.0022465795112438054,-3.972433968955547e-5,-3.690704831574807e-8,-0.002246443844399572,-3.988431149987231e-5,-3.7089012125681974e-8,-0.0022462127331009103,-4.005144641550452e-5,-3.728104124941213e-8,-0.002245899726127667,-4.017461828870116e-5,-3.742571513024981e-8,-0.0022455385610210964,-4.021870065905526e-5,-3.7482979092119534e-8,-0.002245171991501091,-4.017101257208119e-5,-3.743755699529912e-8,-0.0022448406857828573,-4.0040872064166135e-5,-3.729877117661851e-8,-0.002244574842630709,-3.985434389103751e-5,-3.709499167218068e-8,-0.00224438953153147,-3.964658315948225e-5,-3.6865281132306804e-8,-0.002244283739282433,-3.9453769098646514e-5,-3.6650395806950313e-8,-0.0022442425786291715,-3.9306138580895836e-5,-3.648483998275852e-8,-0.0022442417262513318,-3.9223235736532204e-5,-3.639130046745756e-8,-0.002244252825270072,-3.921193238763609e-5,-3.637818766334322e-8,-0.002244248580715095,-3.926701981343953e-5,-3.6440147045714485e-8,-0.002244206665010873,-3.9373614587264704e-5,-3.656072898333406e-8,-0.0022441120851505714,-3.9510449394149734e-5,-3.671615220159067e-8,-0.002243958158082218,-3.9653224799783987e-5,-3.687916687487293e-8,-0.002243746569982561,-3.977754481038861e-5,-3.702240992509356e-8,-0.0022434870012997396,-3.986143852984975e-5,-3.7121211995940224e-8,-0.002243196539261886,-3.9887788360821346e-5,-3.715623183345602e-8,-0.002242898748955786,-3.984704324325663e-5,-3.711640914072695e-8,-0.0022426218280860106,-3.974042123909537e-5,-3.7002547544910815e-8,-0.0022423948446182447,-3.9583186860967147e-5,-3.683110598566761e-8,-0.002242241179018976,-3.940641160112801e-5,-3.663638469156625e-8,-0.00224216956598242,-3.925442123747653e-5,-3.646787712775838e-8,-0.002242165743912653,-3.917522022806908e-5,-3.63796461283401e-8,-0.0022421904430927637,-3.92042809462743e-5,-3.641210968875951e-8,-0.0022421888363345576,-3.934800163595166e-5,-3.657333079382851e-8,-0.0022421101287026773,-3.957707112540881e-5,-3.683135600408295e-8,-0.0022419276065207064,-3.983591431005777e-5,-3.712457446970693e-8,-0.0022416477393448642,-4.0063753426798325e-5,-3.73851192566621e-8,-0.0022413045475564155,-4.0215340963561835e-5,-3.7561970560884604e-8,-0.0022409449338205603,-4.0271819274777205e-5,-3.7633148529958066e-8,-0.0022406136872176463,-4.0240309319839884e-5,-3.7605480019251675e-8,-0.002240343470877864,-4.0146522531138636e-5,-3.750668536605433e-8,-0.002240150677565745,-4.002533269708593e-5,-3.7375157741474976e-8,-0.002240035711440105,-3.991240818250783e-5,-3.725076167766338e-8,-0.002239985804253139,-3.9838071993125945e-5,-3.7167903625866e-8,-0.0022399789880449567,-3.9823368021104823e-5,-3.715090319780558e-8,-0.0022399885175577506,-3.9878050065343086e-5,-3.721146830451135e-8,-0.002239987272940578,-4.000036042511323e-5,-3.734824122526935e-8,-0.0022399516443405575,-4.017838712946535e-5,-3.7548239619326853e-8,-0.002239864499431365,-4.0392596449678075e-5,-3.778973496167977e-8,-0.0022397169957782525,-4.061908331716644e-5,-3.804599535317224e-8,-0.002239509163109704,-4.083302738834809e-5,-3.828923970936112e-8,-0.00223924945058436,-4.101186342286681e-5,-3.8494196874711744e-8,-0.002238953599371396,-4.113797301515876e-5,-3.8641048926455915e-8,-0.0022386430618668383,-4.120100796303263e-5,-3.871793082545036e-8,-0.002238342944066297,-4.1200001151770064e-5,-3.872324181388282e-8,-0.0022380791839847307,-4.114530686782865e-5,-3.866788607866194e-8,-0.002237874380510262,-4.1060002066053976e-5,-3.857703907310176e-8,-0.00223774180926945,-4.097948394853225e-5,-3.848995354296783e-8,-0.00223767825635013,-4.094712480839855e-5,-3.845528558322179e-8,-0.002237658399419641,-4.1004061797862145e-5,-3.851967858482813e-8,-0.0022376356888406273,-4.11738325963669e-5,-3.8710382858211906e-8,-0.0022375542283195344,-4.144791944811161e-5,-3.9018797372337954e-8,-0.002237369976256706,-4.178239537910177e-5,-3.939648342269923e-8,-0.0022370705865857117,-4.211192540677199e-5,-3.97707040733493e-8,-0.002236681021205403,-4.237528136520402e-5,-4.0072894403993155e-8,-0.0022362515136581293,-4.2537390808246587e-5,-4.026326754963274e-8,-0.0022358368811051695,-4.2596592517748946e-5,-4.033897314519272e-8,-0.002235479455892738,-4.257760540665977e-5,-4.032647668471118e-8,-0.0022352014732815342,-4.251839568376904e-5,-4.026725325138652e-8,-0.0022350055128588357,-4.245824814262653e-5,-4.0204769494537755e-8,-0.002234879072292001,-4.2429981973685345e-5,-4.017588031994506e-8,-0.002234800143287794,-4.245617891594765e-5,-4.020647152992803e-8,-0.0022347421748675988,-4.254810062132713e-5,-4.030997076660549e-8,-0.002234678089860464,-4.2706022024608e-5,-4.04874490318804e-8,-0.002234583596800719,-4.292040013149177e-5,-4.072877100486095e-8,-0.0022344399196055193,-4.3173776366831664e-5,-4.101470592062815e-8,-0.002234235865992565,-4.344333894544913e-5,-4.13198704377615e-8,-0.002233969089473579,-4.370403283753067e-5,-4.1616299339581775e-8,-0.0022336463289874286,-4.393200590097062e-5,-4.1877337327494744e-8,-0.002233282501130823,-4.410796757286399e-5,-4.2081351239347404e-8,-0.0022328987863395795,-4.422003807868895e-5,-4.2214822045642e-8,-0.0022325199496675764,-4.426587777665794e-5,-4.227465236873269e-8,-0.0022321710530385326,-4.4253972215963034e-5,-4.226962591744968e-8,-0.0022318736432929433,-4.420392191805795e-5,-4.2220888713159193e-8,-0.0022316414113256896,-4.414545555348796e-5,-4.216110347774086e-8,-0.0022314754270215662,-4.4115440270257426e-5,-4.213136166132721e-8,-0.002231359823442391,-4.415175418461966e-5,-4.217445054382591e-8,-0.0022312601532689185,-4.4283382554984865e-5,-4.232367827957026e-8,-0.002231127767120565,-4.4518168017474204e-5,-4.258888372588604e-8,-0.0022309127621388284,-4.483326721123653e-5,-4.2945429863533486e-8,-0.0022305832777618443,-4.5176107345948044e-5,-4.33350641470657e-8,-0.0022301417812274774,-4.548042189951665e-5,-4.3683804639003184e-8,-0.00222962696006888,-4.5691654474732635e-5,-4.3930355472978606e-8,-0.0022290982784922498,-4.578732224176004e-5,-4.404886114752745e-8,-0.0022286126995498105,-4.578096414425489e-5,-4.405337631430236e-8,-0.002228207126679372,-4.571064953482692e-5,-4.39852734699268e-8,-0.002227893056699919,-4.562206961243283e-5,-4.38947320909112e-8,-0.002227660846567752,-4.555526540573994e-5,-4.382620421038141e-8,-0.002227487702103169,-4.55379758899719e-5,-4.381102028222137e-8,-0.0022273451775774154,-4.558426004228901e-5,-4.386564409422788e-8,-0.0022272045720067527,-4.569590592468164e-5,-4.39929402649985e-8,-0.002227040330898362,-4.586469098944103e-5,-4.418444952301841e-8,-0.0022268322499077128,-4.607464729273845e-5,-4.4422813065954085e-8,-0.0022265671012077232,-4.6304319138032545e-5,-4.46843227290974e-8,-0.002226239866699384,-4.65292374402582e-5,-4.4941773047288794e-8,-0.002225854484890745,-4.6724799757426735e-5,-4.51677431041688e-8,-0.0022254237956320375,-4.6869601410910074e-5,-4.5338309138385286e-8,-0.002224968272659459,-4.694890763075256e-5,-4.543684582222292e-8,-0.002224513374267207,-4.695764552052053e-5,-4.545727907051517e-8,-0.0022240857042466885,-4.690227807341315e-5,-4.5406156340506795e-8,-0.0022237084214524207,-4.680103654287797e-5,-4.530300679993751e-8,-0.002223396530534961,-4.668216756519775e-5,-4.517860947561035e-8,-0.002223152787249789,-4.658014304122351e-5,-4.507104168252101e-8,-0.002222964935742375,-4.652995213290346e-5,-4.501951893274435e-8,-0.002222805166025817,-4.655966574712351e-5,-4.505611999008108e-8,-0.0022226330833182246,-4.6682000764129616e-5,-4.519616588800026e-8,-0.002222403496610867,-4.6886909508180545e-5,-4.542958762812166e-8,-0.002222079087811143,-4.7138819175493126e-5,-4.571749442657403e-8,-0.0022216449448798823,-4.738267384694757e-5,-4.59987335824701e-8,-0.002221118171827722,-4.7560111136303446e-5,-4.620795613858712e-8,-0.002220545312392466,-4.763048075773373e-5,-4.629917145710085e-8,-0.002219986393474025,-4.758588464850228e-5,-4.626262271116031e-8,-0.002219493466999461,-4.745169161788492e-5,-4.612549476134362e-8,-0.0022190950899372997,-4.727349057060608e-5,-4.5937616176018814e-8,-0.0022187928437108866,-4.709946526084481e-5,-4.575211981967887e-8,-0.0022185676608473866,-4.6967148258508964e-5,-4.561086581454774e-8,-0.0022183897340214403,-4.6897877865561347e-5,-4.5538205382200175e-8,-0.002218227112864587,-4.689730372738356e-5,-4.55412865670691e-8,-0.0022180511931498754,-4.6958726789225835e-5,-4.5613476972552826e-8,-0.002217839478448058,-4.706684563405332e-5,-4.573834204511953e-8,-0.002217576767892167,-4.720088385532349e-5,-4.5893088802846886e-8,-0.0022172557391592737,-4.7337099909682e-5,-4.605143273264397e-8,-0.0022168773700565656,-4.74510906017821e-5,-4.6186255635813826e-8,-0.0022164511799183666,-4.752034046529439e-5,-4.627248139736567e-8,-0.002215994899699834,-4.7527295848164124e-5,-4.629045712510837e-8,-0.002215532947978386,-4.746279506796771e-5,-4.622968509992351e-8,-0.0022150932151455763,-4.732912349998839e-5,-4.60921625117704e-8,-0.0022147021652644183,-4.714160221841957e-5,-4.589418230010463e-8,-0.002214378969883185,-4.692762570971198e-5,-4.566542228593394e-8,-0.0022141300645164186,-4.672255695780222e-5,-4.544463178449744e-8,-0.0022139458137362612,-4.6562850713633075e-5,-4.52722393117001e-8,-0.00221380060967952,-4.64777591528412e-5,-4.518126383051442e-8,-0.0022136569173281237,-4.648149783906708e-5,-4.518852648490155e-8,-0.0022134729343128413,-4.65678409922886e-5,-4.5288350736913463e-8,-0.002213212730213477,-4.670898079689068e-5,-4.545089717714251e-8,-0.002212856797894262,-4.686004182357243e-5,-4.562684735817594e-8,-0.0022124099074522273,-4.6969555866714336e-5,-4.575890861717408e-8,-0.0022119026018825377,-4.699407898397332e-5,-4.579813949784263e-8,-0.0022113839010346006,-4.691226389953383e-5,-4.5719800103478644e-8,-0.0022109065487812933,-4.673212611187127e-5,-4.553166994833471e-8,-0.0022105106421530336,-4.6487513953655795e-5,-4.52703652159344e-8,-0.002210212924897253,-4.622545023671105e-5,-4.498750033432147e-8,-0.0022100056515220326,-4.599082657138239e-5,-4.4732842639896e-8,-0.0022098634270506174,-4.58151562763414e-5,-4.454182124988341e-8,-0.002209753114187779,-4.5712337116466916e-5,-4.4430643000829475e-8,-0.0022096423610802776,-4.568024895658921e-5,-4.439779129857697e-8,-0.0022095048224221024,-4.570516696428774e-5,-4.4428692789315846e-8,-0.0022093223580628898,-4.576643434562114e-5,-4.45008081941231e-8,-0.0022090854104389146,-4.5840198863217866e-5,-4.458782308690369e-8,-0.002208792684048753,-4.590211841998753e-5,-4.4662757683266604e-8,-0.002208450773065764,-4.592949249699432e-5,-4.470041059236587e-8,-0.0022080738356743857,-4.590342965342051e-5,-4.467976024450722e-8,-0.0022076829208446235,-4.581149511652582e-5,-4.45868263584567e-8,-0.0022073042325302127,-4.565081152181556e-5,-4.441802397944935e-8,-0.002206965605216999,-4.5430915166275075e-5,-4.418331181075295e-8,-0.0022066909305378285,-4.51749843519472e-5,-4.390764665471133e-8,-0.0022064933389565914,-4.49177448738443e-5,-4.3628860219709356e-8,-0.0022063692939843756,-4.469903269899099e-5,-4.339076928750656e-8,-0.002206296459441618,-4.455384182826084e-5,-4.323234070924075e-8,-0.002206237344690818,-4.450182876565845e-5,-4.317610450389361e-8,-0.002206148437110928,-4.454022855258338e-5,-4.322014158498983e-8,-0.0022059920678573607,-4.464314996140854e-5,-4.333696738013364e-8,-0.002205747078655037,-4.47677698551155e-5,-4.3480006469238615e-8,-0.0022054149560458707,-4.4865453971987394e-5,-4.359562672668298e-8,-0.0022050197778874484,-4.4894469310904836e-5,-4.363714563703815e-8,-0.002204602080350687,-4.483081733338681e-5,-4.357698088947024e-8,-0.0022042082496701748,-4.4674256976108435e-5,-4.34136267011671e-8,-0.002203878355963061,-4.444767502332483e-5,-4.317130450908105e-8,-0.002203636131830214,-4.418988337579432e-5,-4.289227455216706e-8,-0.0022034842767954172,-4.3944313012475434e-5,-4.2624468807672645e-8,-0.0022034062225738905,-4.374765150444576e-5,-4.240888990786396e-8,-0.0022033728732570334,-4.362214656382595e-5,-4.22709113039624e-8,-0.0022033511472193176,-4.357325021474196e-5,-4.2217405326860426e-8,-0.002203311259278957,-4.359184072021775e-5,-4.2238963148967383e-8,-0.002203231161403219,-4.365884984553331e-5,-4.2314893940482235e-8,-0.0022030981896355236,-4.37501815219e-5,-4.241868804084055e-8,-0.0022029088590102435,-4.3840715442687394e-5,-4.252255845087228e-8,-0.002202667855443351,-4.390713159132299e-5,-4.2600676139939876e-8,-0.0022023869397814195,-4.392991328620103e-5,-4.263141972686281e-8,-0.002202083971331653,-4.389514078579005e-5,-4.259929970541784e-8,-0.0022017817509400405,-4.3796571313615305e-5,-4.2497155377534966e-8,-0.002201506019114991,-4.363807773550661e-5,-4.232878802184368e-8,-0.002201281829056389,-4.3435865519477696e-5,-4.211145676298463e-8,-0.0022011278651603286,-4.321905966755535e-5,-4.187668985882363e-8,-0.002201049428771376,-4.3026635343832115e-5,-4.166711799444936e-8,-0.0022010326564595945,-4.2899212226683795e-5,-4.1527605488542144e-8,-0.0022010438605880736,-4.2866701401245325e-5,-4.149168981230639e-8,-0.002201036815050561,-4.2936311524374124e-5,-4.156826007306663e-8,-0.0022009668005209242,-4.3087189621691026e-5,-4.1735408849570453e-8,-0.002200805687849186,-4.3275540935940235e-5,-4.194576010041846e-8,-0.0022005511147673534,-4.344845205145683e-5,-4.214141087930924e-8,-0.0022002261579351164,-4.356010243054483e-5,-4.2271627325288035e-8,-0.0021998709471877614,-4.3583870411128616e-5,-4.230621553318354e-8,-0.0021995306329296136,-4.351713167905666e-5,-4.2241049980976345e-8,-0.002199244012936336,-4.337907539302264e-5,-4.209604395428574e-8,-0.0021990354974688524,-4.3203716761038325e-5,-4.190782352683438e-8,-0.0021989114882803953,-4.303068697336216e-5,-4.1719808660383815e-8,-0.0021988611198272934,-4.2896143039547516e-5,-4.157220587465444e-8,-0.002198860529686386,-4.28256834219112e-5,-4.149400848221767e-8,-0.0021988792290551736,-4.283052362484336e-5,-4.149848437908441e-8,-0.0021988868020958604,-4.290728558961128e-5,-4.158266825085552e-8,-0.002198858332636107,-4.30407374421635e-5,-4.1730227888167276e-8,-0.0021987776559889718,-4.320815607531913e-5,-4.191627227789234e-8,-0.0021986383828306827,-4.338394252488224e-5,-4.211255171468341e-8,-0.0021984432617016725,-4.354352417484422e-5,-4.229189520363366e-8,-0.0021982026851288055,-4.366616419637895e-5,-4.243138177200893e-8,-0.002197932987833362,-4.373685585806035e-5,-4.2514400830429825e-8,-0.0021976547873646343,-4.374776948947891e-5,-4.2532145447490745e-8,-0.0021973912163822202,-4.3699666494011446e-5,-4.248507449934088e-8,-0.002197165565964018,-4.360339553726757e-5,-4.238455982416569e-8,-0.0021969976661542537,-4.348102472191013e-5,-4.2254266098886135e-8,-0.0021968986060033643,-4.3365344851824027e-5,-4.212983081364773e-8,-0.002196864488916266,-4.329582521635688e-5,-4.205462845468875e-8,-0.00219687177106506,-4.330950164594914e-5,-4.206983298743024e-8,-0.0021968783763478264,-4.342774012978813e-5,-4.219976819299261e-8,-0.002196833942465688,-4.364410781791684e-5,-4.2438344229764724e-8,-0.0021966974953614438,-4.392134829558463e-5,-4.274547229078794e-8,-0.0021964542822063117,-4.420215324008212e-5,-4.305868573313644e-8,-0.002196122004749595,-4.4429633911088055e-5,-4.3315482134634745e-8,-0.002195743141195934,-4.456667055575025e-5,-4.3474511881865136e-8,-0.0021953688213683063,-4.460502832877005e-5,-4.352567029416044e-8,-0.0021950430896256865,-4.456276883725236e-5,-4.34875261233581e-8,-0.00219479325103675,-4.447456387533459e-5,-4.339707996174946e-8,-0.0021946271302473947,-4.4380500039176534e-5,-4.329781770575668e-8,-0.0021945353071144784,-4.43168589575551e-5,-4.322972528487527e-8,-0.0021944959560133495,-4.4310062852754164e-5,-4.322252177775724e-8,-0.002194480563537203,-4.4373660852183527e-5,-4.32920524953864e-8,-0.0021944595227321863,-4.450786864707432e-5,-4.343945466521452e-8,-0.0021944069506842096,-4.4701191951449525e-5,-4.36527150890374e-8,-0.0021943042180325003,-4.49335617950116e-5,-4.391005375463803e-8,-0.002194141906377647,-4.518027077748843e-5,-4.4184332052663467e-8,-0.0021939201779301136,-4.5416019876788224e-5,-4.444764386522221e-8,-0.002193647790767406,-4.561847347713716e-5,-4.4675332295713537e-8,-0.0021933402416158846,-4.5770915859345256e-5,-4.484892453692752e-8,-0.00219301755709073,-4.586399243241319e-5,-4.495797173896476e-8,-0.0021927019881854267,-4.589680376520009e-5,-4.50011490514789e-8,-0.002192415581968075,-4.587758677189852e-5,-4.498696354861374e-8,-0.002192177416627541,-4.582404354917942e-5,-4.493420418458068e-8,-0.0021920001056428633,-4.576302032079154e-5,-4.487180284605771e-8,-0.0021918853630141493,-4.5728554041258204e-5,-4.483694086387648e-8,-0.0021918193971149852,-4.575678790110061e-5,-4.486962210563871e-8,-0.0021917704552939657,-4.5876737000029106e-5,-4.500249145208053e-8,-0.0021916921793231213,-4.609805171784536e-5,-4.524715951212536e-8,-0.002191535722030832,-4.640085504307758e-5,-4.558273256144663e-8,-0.002191268622527711,-4.673572239421093e-5,-4.5955562378608346e-8,-0.0021908911531643392,-4.703860588774864e-5,-4.6295536372601254e-8,-0.0021904389342049485,-4.725525462149562e-5,-4.654284579454351e-8,-0.0021899688757674282,-4.7361335435271427e-5,-4.667003748796585e-8,-0.002189537217572945,-4.736738240175443e-5,-4.66875152635767e-8,-0.002189182178099598,-4.730905371796731e-5,-4.6633131046491385e-8,-0.0021889175315774733,-4.723144495265606e-5,-4.655539679656418e-8,-0.0021887354256682617,-4.717574835041439e-5,-4.6499184056199204e-8,-0.0021886135162408732,-4.717157179860376e-5,-4.649736314449432e-8,-0.0021885224957076004,-4.723435333698451e-5,-4.656775348526145e-8,-0.002188432196672109,-4.736596568910569e-5,-4.671343301511786e-8,-0.0021883159915355365,-4.755688007918747e-5,-4.69247944722332e-8,-0.002188153797184117,-4.7789060056815985e-5,-4.7182558125506696e-8,-0.0021879339216937933,-4.8039252490120275e-5,-4.7461392605544466e-8,-0.0021876538472704776,-4.828243590852618e-5,-4.773381750934838e-8,-0.002187319992989988,-4.849521912185547e-5,-4.7974061450627616e-8,-0.0021869464613131022,-4.865894024085986e-5,-4.816152081756237e-8,-0.0021865528992877276,-4.87620998684626e-5,-4.828339410490294e-8,-0.0021861618199906937,-4.8801891534619e-5,-4.833627312095251e-8,-0.0021857956854069802,-4.878486309271509e-5,-4.832680892763946e-8,-0.0021854738600616984,-4.8726762987137e-5,-4.8271587194920043e-8,-0.0021852094900030724,-4.86515128943926e-5,-4.8196176656966384e-8,-0.002185006334014698,-4.858914285791343e-5,-4.8133122371377696e-8,-0.0021848556724831675,-4.8572182159752406e-5,-4.8118210423692764e-8,-0.0021847340908449993,-4.862969584851901e-5,-4.818398533821574e-8,-0.0021846040333787834,-4.8778729210677626e-5,-4.835019658202303e-8,-0.0021844197065521583,-4.901477659668526e-5,-4.861300583671992e-8,-0.002184139908137586,-4.9305740268685153e-5,-4.89380239589084e-8,-0.002183745208710712,-4.959578164277363e-5,-4.926436436193073e-8,-0.0021832508778272947,-4.9822400093252296e-5,-4.9523381452495355e-8,-0.0021827054179990426,-4.9940812964766306e-5,-4.9665452368679164e-8,-0.002182172657790118,-4.9941786271621964e-5,-4.967953305482646e-8,-0.0021817074157041024,-4.985220421423567e-5,-4.959386599256073e-8,-0.002181338673865619,-4.9720142395811015e-5,-4.945991919619401e-8,-0.0021810666706533364,-4.9595568980319e-5,-4.933166537295909e-8,-0.0021808703783844,-4.951657478515571e-5,-4.92507832762818e-8,-0.0021807181941960203,-4.950399504420421e-5,-4.924073730655143e-8,-0.0021805769182982548,-4.956218364039945e-5,-4.9307324380953e-8,-0.0021804174795038798,-4.968259370492711e-5,-4.9442212976376634e-8,-0.0021802179110294567,-4.9847836933814006e-5,-4.9627109424267564e-8,-0.002179964670767143,-5.003531159657192e-5,-4.983764252872737e-8,-0.0021796530724134083,-5.0220385609024966e-5,-5.004692161411961e-8,-0.002179287108625143,-5.0379309817940806e-5,-5.0228863268068284e-8,-0.0021788786984716967,-5.049197671212808e-5,-5.0361312329529946e-8,-0.0021784462256297563,-5.054452595703909e-5,-5.04289060225776e-8,-0.0021780122025803136,-5.053151803276535e-5,-5.042538797210063e-8,-0.002177600157916581,-5.045722929573454e-5,-5.035495070136917e-8,-0.0021772310966522526,-5.0335776567875636e-5,-5.023237210708531e-8,-0.002176919902460922,-5.0189932859938544e-5,-5.0081843179902245e-8,-0.00217667207082299,-5.004853269807545e-5,-4.993436120974221e-8,-0.0021764812441906808,-4.994249777622941e-5,-4.982363597059191e-8,-0.0021763280507105863,-4.98996114264398e-5,-4.978052270196503e-8,-0.0021761809437515654,-4.9938185981473035e-5,-4.982603516805561e-8,-0.002176000149806595,-5.006025793450334e-5,-4.9963621703133264e-8,-0.002175745817326205,-5.024622884164902e-5,-5.0172910484799115e-8,-0.002175390157594791,-5.0454365055776456e-5,-5.0408841281164365e-8,-0.002174930337153652,-5.06288459355e-5,-5.061036106903455e-8,-0.002174395353711165,-5.071699644838109e-5,-5.0719362989473973e-8,-0.0021738401034926535,-5.0689679713245726e-5,-5.0703131233504954e-8,-0.0021733265233010663,-5.055363671187018e-5,-5.056794205359903e-8,-0.0021729011128648096,-5.034775070284775e-5,-5.035513085813307e-8,-0.0021725811078602674,-5.012585939427826e-5,-5.012259516349527e-8,-0.0021723547388293137,-4.993700515060601e-5,-4.992354472562844e-8,-0.0021721915116131806,-4.9812811310871116e-5,-4.979285902848771e-8,-0.0021720546749986677,-4.976445626435847e-5,-4.9743630077680485e-8,-0.002171910550591354,-4.978612573658363e-5,-4.977057674929707e-8,-0.0021717334408312126,-4.986073223887547e-5,-4.985593590639394e-8,-0.0021715072056702122,-4.9965197761627746e-5,-4.997503848354697e-8,-0.002171225123681876,-5.007442062639999e-5,-5.010064735726323e-8,-0.0021708891541935235,-5.0164162613396194e-5,-5.020624123144993e-8,-0.002170509011565236,-5.021337352113505e-5,-5.026869269970753e-8,-0.0021701010201165194,-5.020633834079381e-5,-5.027067408474085e-8,-0.002169686481978018,-5.013479660142251e-5,-5.02029350445516e-8,-0.0021692892001323122,-4.999980622314807e-5,-5.006625128102955e-8,-0.002168932022375522,-4.9812758371010945e-5,-4.9872480658075486e-8,-0.002168632724515974,-4.95948957641629e-5,-4.96440934171442e-8,-0.0021683999304833723,-4.9374905475583854e-5,-4.94117279890712e-8,-0.0021682299884622017,-4.9184517024424835e-5,-4.9209644023520306e-8,-0.0021681057683319905,-4.905256550499114e-5,-4.906946354132325e-8,-0.0021679981084059274,-4.899850303697785e-5,-4.901315398366616e-8,-0.0021678702118165865,-4.902660625417457e-5,-4.904654790153962e-8,-0.002167684855459021,-4.912228342329066e-5,-4.915496722137846e-8,-0.002167413675346147,-4.9252117611135175e-5,-4.930287422769272e-8,-0.0021670467328493287,-4.9369236645834006e-5,-4.9439453319941026e-8,-0.0021665991445428225,-4.942457392269512e-5,-4.951084310411176e-8,-0.0021661107109958544,-4.9382031214902844e-5,-4.9476821013151695e-8,-0.0021656359860024264,-4.923205966050717e-5,-4.932584479686643e-8,-0.0021652269664645565,-4.8996524294130615e-5,-4.908058662160895e-8,-0.0021649159058167063,-4.872105249104496e-5,-4.878982557957179e-8,-0.002164706655984438,-4.8458301673946887e-5,-4.8510450968611894e-8,-0.0021645777385677746,-4.825084661063017e-5,-4.8288973195301046e-8,-0.0021644934054848965,-4.812122783466715e-5,-4.81506379139743e-8,-0.0021644159176900527,-4.8071024900689184e-5,-4.809815557247862e-8,-0.0021643141929952214,-4.808594061576428e-5,-4.81168922637752e-8,-0.002164167674411756,-4.814266053659258e-5,-4.818208341414474e-8,-0.0021639667146355628,-4.8214709519840826e-5,-4.8265144796799985e-8,-0.0021637113015193915,-4.8276471408607926e-5,-4.833815104674628e-8,-0.0021634093935051597,-4.8305717497990586e-5,-4.8376751136334334e-8,-0.0021630753860666465,-4.8285336142651836e-5,-4.836216222000512e-8,-0.0021627286667312874,-4.8204863846761885e-5,-4.828283802361071e-8,-0.002162391861482956,-4.8062097732630306e-5,-4.813613888210156e-8,-0.0021620882679398825,-4.786457221389886e-5,-4.792984469758117e-8,-0.0021618381966684985,-4.763020148052184e-5,-4.768283959318655e-8,-0.0021616544721947527,-4.738615688544101e-5,-4.74240049864915e-8,-0.0021615380479013072,-4.716519867376527e-5,-4.718845234479752e-8,-0.002161475302072799,-4.699937039553237e-5,-4.701091284755469e-8,-0.0021614386393250546,-4.6912154688658707e-5,-4.691736184216948e-8,-0.002161391201800069,-4.6911292679655636e-5,-4.691717630397373e-8,-0.002161295075484384,-4.698475296081406e-5,-4.6998506562417824e-8,-0.002161121034202,-4.710162372082691e-5,-4.712886694957854e-8,-0.002160857131367918,-4.7218339997966116e-5,-4.726153824963162e-8,-0.0021605135166616594,-4.728911357216719e-5,-4.734669635449493e-8,-0.002160121614640899,-4.727811102218645e-5,-4.7344670899897986e-8,-0.002159727070259186,-4.71700332472349e-5,-4.72376676723403e-8,-0.002159377681774251,-4.697546153405605e-5,-4.703590761080976e-8,-0.0021591097858532486,-4.672829423936533e-5,-4.677517141941328e-8,-0.002158938074167603,-4.6475408602648845e-5,-4.650582202815821e-8,-0.002158852916009944,-4.626235480050213e-5,-4.627738514230599e-8,-0.002158825801635166,-4.612087538018337e-5,-4.612493766194266e-8,-0.002158819709787541,-4.606270599802699e-5,-4.606214934513943e-8,-0.002158799607308813,-4.608051665422589e-5,-4.6081993496327766e-8,-0.0021587395273344563,-4.615361327504223e-5,-4.616267371658823e-8,-0.002158625286072611,-4.625494118904886e-5,-4.627511694149892e-8,-0.002158453953359905,-4.635691120285143e-5,-4.638936013416345e-8,-0.002158231790057722,-4.643523375110354e-5,-4.647887273854775e-8,-0.002157971911670394,-4.647108233605865e-5,-4.652305041561149e-8,-0.0021576922476335206,-4.6452294121769896e-5,-4.650856384345036e-8,-0.0021574138014324212,-4.637428430326153e-5,-4.6430286990051256e-8,-0.0021571587957101316,-4.624105015071745e-5,-4.629227406134107e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json new file mode 100644 index 000000000..b4be24167 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_1.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":1000,"numberOfSamples":1000,"samples":[-0.002156948117797158,-4.6066106188504274e-5,-4.610870837852341e-8,-0.0021567976844821175,-4.587262928957953e-5,-4.590411215695837e-8,-0.002156713908245568,-4.569170874283684e-5,-4.5711626484184725e-8,-0.0021566893595621928,-4.555761003533914e-5,-4.5568113732113295e-8,-0.002156700743371349,-4.549983445555494e-5,-4.5505741530892555e-8,-0.0021567115663395065,-4.5533671389188886e-5,-4.5541790676334716e-8,-0.0021566804178876843,-4.5652915406612466e-5,-4.5670622833809834e-8,-0.002156572912636481,-4.582870678241587e-5,-4.58621255953264e-8,-0.0021563728566239655,-4.601620142754535e-5,-4.6068577295811786e-8,-0.0021560880133587525,-4.616711622705171e-5,-4.623794070121091e-8,-0.002155748222189647,-4.62434863816923e-5,-4.6328641438483505e-8,-0.002155396920669294,-4.622782396424562e-5,-4.632067580425877e-8,-0.00215507933393081,-4.612686483113469e-5,-4.621997607570151e-8,-0.0021548310204559523,-4.596856314722607e-5,-4.605556460572259e-8,-0.0021546697448800787,-4.579380803487395e-5,-4.5870948767990285e-8,-0.0021545925009090403,-4.564545026639773e-5,-4.571243253541094e-8,-0.00215457808447119,-4.555777214888923e-5,-4.561767662258407e-8,-0.002154594019620961,-4.554927142265337e-5,-4.560764640929833e-8,-0.002154605368940617,-4.562040509803385e-5,-4.568383677005805e-8,-0.002154582628502511,-4.575613804937631e-5,-4.583074108471704e-8,-0.0021545067042819666,-4.593156748733217e-5,-4.602179515117175e-8,-0.0021543704349080905,-4.6118291920214145e-5,-4.6226298143065905e-8,-0.002154177429419203,-4.628970757896518e-5,-4.64152905393417e-8,-0.0021539395320203554,-4.642448039496704e-5,-4.656547403677698e-8,-0.0021536740325304696,-4.6508347419083976e-5,-4.6661248300741016e-8,-0.002153401212638439,-4.6534852085000904e-5,-4.669548060691322e-8,-0.0021531422886805827,-4.650565883599465e-5,-4.666974436961425e-8,-0.0021529174221249937,-4.6430830311047396e-5,-4.6594529114611347e-8,-0.002152743281384537,-4.632899782380846e-5,-4.648943285318694e-8,-0.0021526297364554913,-4.622682327908873e-5,-4.6382720029024235e-8,-0.0021525757781952213,-4.615665217809799e-5,-4.6309007987320986e-8,-0.0021525657635618595,-4.615111791560906e-5,-4.630363581540198e-8,-0.0021525683606683156,-4.623433111379003e-5,-4.639321479077921e-8,-0.0021525411131787307,-4.641162808298889e-5,-4.658444896551646e-8,-0.00215244181360915,-4.6662730585749126e-5,-4.685650807739798e-8,-0.002152243559761613,-4.69438336830974e-5,-4.716299443903288e-8,-0.0021519463173773905,-4.720028130623982e-5,-4.744536946490242e-8,-0.0021515783140552483,-4.738487646555355e-5,-4.7652539659263205e-8,-0.0021511863195340735,-4.7473012892754915e-5,-4.775714558013054e-8,-0.002150820158632104,-4.74681988823182e-5,-4.7761682951372046e-8,-0.0021505186509381763,-4.739759003524929e-5,-4.769404722497823e-8,-0.002150301454146949,-4.7301602034095665e-5,-4.75967746928141e-8,-0.002150167504080223,-4.722237577724007e-5,-4.751493736774092e-8,-0.0021500984653760494,-4.7194327180898005e-5,-4.7486029043007825e-8,-0.002150065007643072,-4.7238211715320985e-5,-4.753336591146179e-8,-0.002150034011848315,-4.735890504159874e-5,-4.7663329284699034e-8,-0.0021499752813515308,-4.754650144645341e-5,-4.7866189097583804e-8,-0.0021498666614940885,-4.777999559892799e-5,-4.811985529955003e-8,-0.002149696844734374,-4.8032435641353954e-5,-4.8395408706038154e-8,-0.0021494657462589853,-4.8276239272205825e-5,-4.866295866283441e-8,-0.0021491829316347584,-4.848761715432387e-5,-4.8896590036391526e-8,-0.002148864888882999,-4.864954755615883e-5,-4.9077698538029214e-8,-0.002148531969661492,-4.875324012053347e-5,-4.9196590948451486e-8,-0.00214820559302335,-4.879845385417849e-5,-4.925275811633043e-8,-0.0021479058723801398,-4.8793211725869386e-5,-4.9254476683867235e-8,-0.0021476494691693242,-4.875326148772683e-5,-4.921820529983365e-8,-0.0021474473356039884,-4.8701280224926454e-5,-4.916782927985692e-8,-0.002147302025734625,-4.8665427348109735e-5,-4.913330991550414e-8,-0.0021472046146883317,-4.867636961659977e-5,-4.914769826441347e-8,-0.0021471322071707254,-4.8761685544412094e-5,-4.924121019381598e-8,-0.0021470482597085038,-4.893732048233069e-5,-4.943192954490526e-8,-0.002146908584499707,-4.91979967179343e-5,-4.97152190263401E-08,-0.002146674363316176,-4.9511646656850674e-5,-5.0057427768996096e-8,-0.002146328667920062,-4.982422622000098e-5,-5.0400872447169334e-8,-0.0021458875359486144,-5.007688042712524e-5,-5.0682229364308553e-8,-0.002145397011314185,-5.0228379818507437e-5,-5.0856638807463407e-8,-0.0021449161791735768,-5.0270217445764416e-5,-5.091394422090286e-8,-0.002144495917953705,-5.0226434247242504e-5,-5.087865414824122e-8,-0.002144164522903363,-5.01408709895491e-5,-5.079660476566392e-8,-0.002143924532470479,-5.0060878640441164e-5,-5.0717902245852795e-8,-0.002143757959315198,-5.002483607513269e-5,-5.068379162791456e-8,-0.002143634896737234,-5.005585115815337e-5,-5.071984838493151e-8,-0.002143521842854634,-5.0160650756850324e-5,-5.083446444779818e-8,-0.002143388120717485,-5.0331651201626866e-5,-5.102064773664288e-8,-0.002143210184954386,-5.055054311417113e-5,-5.125954074459971e-8,-0.002142974117514982,-5.079251129394976e-5,-5.152482507010141e-8,-0.0021426765074378826,-5.103064468172294e-5,-5.178753018681961e-8,-0.0021423238391256607,-5.124006797853224e-5,-5.202065134245872e-8,-0.002141930651324379,-5.140134181465216e-5,-5.220297342970296e-8,-0.0021415168281439588,-5.150282446702924e-5,-5.2321688446799315e-8,-0.0021411044645297406,-5.154180999406271e-5,-5.237359158139016e-8,-0.0021407148054202576,-5.152449499997826e-5,-5.236496558245039e-8,-0.0021403655678020684,-5.146510002939213e-5,-5.231059043138093e-8,-0.002140068652238457,-5.138444270295482e-5,-5.2232268635753575e-8,-0.002139828133292629,-5.1308028225241545e-5,-5.2156950212399334e-8,-0.002139638422673149,-5.126350568803761e-5,-5.2114230564000163e-8,-0.00213948268691379,-5.1277018333799685e-5,-5.213259191254482e-8,-0.002139332290822501,-5.1367795817320406e-5,-5.223357239670482e-8,-0.0021391489883805194,-5.154098912009453e-5,-5.242383088390882e-8,-0.002138891970010422,-5.1780522562900146e-5,-5.268710604455327e-8,-0.0021385305995390066,-5.20462253084977e-5,-5.2980835455315765e-8,-0.002138059594008942,-5.2280784568316565e-5,-5.324353111816718e-8,-0.002137508049281609,-5.242840674319948e-5,-5.341489927661907e-8,-0.0021369333564798328,-5.245794992558174e-5,-5.3460757754233854e-8,-0.0021364000567887635,-5.237659280739311e-5,-5.338772944526506e-8,-0.0021359554177806913,-5.222499524366457e-5,-5.323816602452792e-8,-0.0021356157132549174,-5.205829004263862e-5,-5.307010206523827e-8,-0.002135367798385966,-5.1925718630202697e-5,-5.293584770307225e-8,-0.0021351802309842655,-5.185853393324863e-5,-5.2869237987871783e-8,-0.002135015709675917,-5.186747116928778e-5,-5.288277568269625e-8,-0.0021348401734937695,-5.194616985504687e-5,-5.2970891829753475e-8,-0.002134627758060293,-5.2076667370690687e-5,-5.311539888620349e-8,-0.002134362664862016,-5.22346501846903e-5,-5.329085053332862e-8,-0.0021340393185033547,-5.2393733389077045e-5,-5.3469096840437146e-8,-0.002133661644592146,-5.252894430972528e-5,-5.362316413179043e-8,-0.0021332416919183183,-5.2619642849676823e-5,-5.373058405670703e-8,-0.002132797639105352,-5.265187989316952e-5,-5.377605953151373e-8,-0.00213235123299873,-5.262008658853691e-5,-5.3753301407695094e-8,-0.0021319247547086106,-5.252787431710746e-5,-5.366582385721862e-8,-0.002131537812166341,-5.2387711692295135e-5,-5.3526527141880856e-8,-0.002131204386649835,-5.221948578729788e-5,-5.335616249926751e-8,-0.002130930436840616,-5.204813499564776e-5,-5.3180922715721016e-8,-0.0021307122475242276,-5.190051666082856e-5,-5.3029303636494595e-8,-0.002130535691096194,-5.1801663288743484e-5,-5.2928303953712826e-8,-0.002130376577415983,-5.1770519389418736e-5,-5.289893815879023e-8,-0.0021302025383327134,-5.1815158911048855e-5,-5.2950976313991277e-8,-0.002129977378036466,-5.192792796725971e-5,-5.3077407334747964E-08,-0.0021296688087945386,-5.208214555192072e-5,-5.325050928388623e-8,-0.0021292592998348823,-5.2233329336141494e-5,-5.342289782969275e-8,-0.002128757014872047,-5.2328224363975537e-5,-5.353718707965699e-8,-0.0021282003685288873,-5.232211388239153e-5,-5.354471701182651e-8,-0.0021276495587692528,-5.219820202071707e-5,-5.342650421322242e-8,-0.002127165444777017,-5.1977374748586926e-5,-5.32037987462269e-8,-0.002126786408919701,-5.1710339300552144e-5,-5.292980367635397e-8,-0.0021265166937946525,-5.145633618560855e-5,-5.2667177244896215e-8,-0.00212633105580082,-5.126167160748416e-5,-5.246538067689548e-8,-0.002126189328271234,-5.114869660600918e-5,-5.234897812409529e-8,-0.0021260510373621883,-5.111638783278097e-5,-5.231801132895357e-8,-0.002125884513579751,-5.114733030685652e-5,-5.235503053809026e-8,-0.0021256702248682435,-5.121572331910457e-5,-5.243327665430199e-8,-0.002125400455812279,-5.1293642979333694e-5,-5.252321996716058e-8,-0.0021250775059338096,-5.1355096043385815e-5,-5.259696904862907e-8,-0.0021247116610059085,-5.1378537621995244e-5,-5.2631164024147827e-8,-0.0021243192352671083,-5.134861185069034e-5,-5.2609026267915535e-8,-0.002123920533294502,-5.125749504161394e-5,-5.252187717870801e-8,-0.002123537513917045,-5.1105899487825944e-5,-5.237017732952232e-8,-0.0021231909824004935,-5.0903510148269925e-5,-5.21639052525058e-8,-0.002122897386272381,-5.066840160744641e-5,-5.192188374186477e-8,-0.0021226656718111524,-5.042508933637542e-5,-5.166975788992617e-8,-0.002122494839571998,-5.0201204525872756e-5,-5.143662126873064e-8,-0.0021223728064571974,-5.002307532138799e-5,-5.125052539179263e-8,-0.002122277063662247,-4.9910792187481684e-5,-5.1133373559448276e-8,-0.002122177350465051,-4.9873571668336e-5,-5.1095958839310544e-8,-0.002122040271899325,-4.990621895883855e-5,-5.113395766297128e-8,-0.002121835670220407,-4.998749569171908e-5,-5.122580454826739e-8,-0.002121544289358671,-5.008151805352115e-5,-5.133380683137773e-8,-0.0021211653940700756,-5.0143498952941705e-5,-5.141007127166793e-8,-0.0021207216447338448,-5.0130441492102875e-5,-5.1407976149345016e-8,-0.002120257496141451,-5.001520456175847e-5,-5.1297441102601807e-8,-0.002119828397979043,-4.9798850489622e-5,-5.107840402680578e-8,-0.0021194826754195456,-4.9513892869127156e-5,-5.078451782729881e-8,-0.002119244086201465,-4.921409445932999e-5,-5.0472444375840066e-8,-0.0021191046402436534,-4.8954748273117716e-5,-5.0200988226733736e-8,-0.002119031138708923,-4.8773978554723135e-5,-5.001124485406591e-8,-0.002118980101862301,-4.8684026206295004e-5,-4.991720030835334e-8,-0.00211891220827597,-4.867379334879302e-5,-4.990812813538284e-8,-0.0021188006530865576,-4.8717674424215837e-5,-4.9957631878584515e-8,-0.0021186330805224884,-4.878489183979079e-5,-5.003335885442783e-8,-0.002118409606923484,-4.8846210672363946e-5,-5.010414572430475e-8,-0.0021181395569648243,-4.887764161794287e-5,-5.0144131459874775e-8,-0.002117838428140765,-4.8862089859800686e-5,-5.013472762586503e-8,-0.0021175254797301053,-4.87900395563563e-5,-5.006548391793509e-8,-0.0021172217039225403,-4.865995177280172e-5,-4.9934517707598465e-8,-0.0021169477453683006,-4.8478584561881674e-5,-4.9748766630150475e-8,-0.002116721392799632,-4.8261007717598124e-5,-4.952391111144196e-8,-0.00211655455107997,-4.802973321358578e-5,-4.928344153787555e-8,-0.002116450096966629,-4.781233066898358e-5,-4.9056238260434893e-8,-0.0021163995074253497,-4.763723300556185e-5,-4.88723175000772e-8,-0.00211638238176434,-4.752806896211847e-5,-4.8757005535652654e-8,-0.0021163687749273766,-4.749765415455074e-5,-4.872463016284184e-8,-0.0021163245129189124,-4.75433801208055e-5,-4.8773504423959966e-8,-0.0021162186131261293,-4.7645689733550204e-5,-4.888400543678275e-8,-0.0021160311239636605,-4.7770598620135224e-5,-4.902087037517744e-8,-0.0021157594156345004,-4.787624496808221e-5,-4.913984622203423e-8,-0.0021154210653734945,-4.792249771712643e-5,-4.919779498322852e-8,-0.0021150518661444766,-4.788171611098116e-5,-4.916427157162084e-8,-0.0021146983037815758,-4.774784549571525e-5,-4.903151581702451e-8,-0.0021144054214774677,-4.754043449876239e-5,-4.881909664190108e-8,-0.002114203335655032,-4.730071511555959e-5,-4.857004998709531e-8,-0.0021140976257717674,-4.7079605315396366e-5,-4.8338297363515245e-8,-0.002114068243449401,-4.6921741162987395e-5,-4.817168920274723e-8,-0.0021140776517754515,-4.685238849929127e-5,-4.8097948508555413e-8,-0.002114084019446718,-4.6872596236596724e-5,-4.81192411375788e-8,-0.002114053227237637,-4.6963141965845496e-5,-4.821604606694751e-8,-0.002113965448400426,-4.7093502898033734e-5,-4.8356449951288814e-8,-0.0021138158726727416,-4.7231060835115885e-5,-4.8505867927921634e-8,-0.0021136117434029157,-4.73475915439524e-5,-4.863405741638106e-8,-0.002113368243224607,-4.742253450655109e-5,-4.8718797175518944e-8,-0.0021131048107557887,-4.7443958322278066e-5,-4.874708212682086e-8,-0.002112842390293642,-4.740840058984932e-5,-4.87150037508711e-8,-0.002112601402461571,-4.732044050097083e-5,-4.8627229494421786e-8,-0.002112399898104981,-4.71923458598116e-5,-4.84965171325286e-8,-0.0021122513870208202,-4.7043586695278016e-5,-4.834314259144425e-8,-0.002112162155506463,-4.689959768605062e-5,-4.8193650389836864e-8,-0.0021121284044120486,-4.678902511400128e-5,-4.807810872069021e-8,-0.002112134192586928,-4.6738909755118304e-5,-4.802520783954363e-8,-0.002112151736011111,-4.676805674809973e-5,-4.8055358790222776e-8,-0.0021121455008559073,-4.68802207502431e-5,-4.8173435647070684e-8,-0.002112080244306887,-4.705993268071947e-5,-4.8364140938563196e-8,-0.0021119310664213338,-4.727368018370931e-5,-4.8592931302070324e-8,-0.002111691895111901,-4.747730114612249e-5,-4.881352739322071e-8,-0.0021113788749667064,-4.7627699607907756e-5,-4.898012188224292e-8,-0.00211102704677318,-4.7694954771803144e-5,-4.9060201272908396e-8,-0.002110681352249585,-4.767075494556609e-5,-4.90436883734857e-8,-0.002110384874318121,-4.7570663804349934e-5,-4.894570849816082e-8,-0.0021101677401916797,-4.7429813825341904e-5,-4.8802430880724736e-8,-0.002110039696581039,-4.729335730533683e-5,-4.866125590022362e-8,-0.0021099884072854364,-4.7204358850854926e-5,-4.8568084600913465e-8,-0.002109983945387274,-4.7192708949043166e-5,-4.855543459993911e-8,-0.0021099879117350232,-4.726846620998511e-5,-4.863507382826351e-8,-0.0021099639576379094,-4.7421428985429237e-5,-4.879720662545984e-8,-0.0021098861854816123,-4.7626298326830003e-5,-4.901567331796005e-8,-0.002109743186109511,-4.7850789510772105e-5,-4.9256450069474826e-8,-0.002109537586825893,-4.8063526347891254e-5,-4.948609768053289e-8,-0.002109282655958739,-4.8239580975826655e-5,-4.967782243823404e-8,-0.0021089979409871034,-4.8363148343395243e-5,-4.981449771751667e-8,-0.002108705341277884,-4.8427999229028034e-5,-4.988923858233261e-8,-0.002108426170116319,-4.843672757019664e-5,-4.990457813568429e-8,-0.0021081790939703336,-4.8399655340769195e-5,-4.987120855545762e-8,-0.002107978462340765,-4.8333815691984267e-5,-4.98068240380907e-8,-0.0021078325085235445,-4.8261883157006745e-5,-4.973500790876879e-8,-0.002107741182028866,-4.8210487087105704e-5,-4.968358842430621e-8,-0.0021076938773007476,-4.820714020935879e-5,-4.9681591379790985e-8,-0.0021076680383246907,-4.827513281127266e-5,-4.975399170959863e-8,-0.002107630376401887,-4.842654419791798e-5,-4.991432609044488e-8,-0.0021075425159545343,-4.865523284848443e-5,-5.015711147352186e-8,-0.0021073713272879244,-4.893349928726431e-5,-5.045403692151433e-8,-0.002107101054149504,-4.921621165090497e-5,-5.075804312180078e-8,-0.00210674158544731,-4.9453141274911964e-5,-5.1016160495136004e-8,-0.0021063277292051657,-4.960526660686225e-5,-5.1186657637328415e-8,-0.0021059088236712936,-4.965767137535703e-5,-5.1252729209342855e-8,-0.002105533355710234,-4.962333434846008e-5,-5.122672710022117e-8,-0.002105235298687669,-4.953725574759237e-5,-5.114433301511661e-8,-0.0021050267301768173,-4.9444765358431426e-5,-5.105262008384059e-8,-0.0021048975954977385,-4.938895653500951e-5,-5.099704564916817e-8,-0.0021048209457205044,-4.940083264676395e-5,-5.1011036159970786e-8,-0.0021047611320736954,-4.9493878141675046e-5,-5.110997819652719e-8,-0.0021046825545899023,-4.9663315734863536e-5,-5.1290024568352304e-8,-0.002104557033149279,-4.98893453161492e-5,-5.1531150434198844e-8,-0.0021043684802190066,-5.0143026698940785e-5,-5.1803180748147716e-8,-0.002104114312419352,-5.0393089164750924e-5,-5.2073008844431506e-8,-0.0021038039107087792,-5.0611974369170696e-5,-5.2311154609061635e-8,-0.002103455142864527,-5.077997300985246e-5,-5.249634587215205e-8,-0.0021030901973043527,-5.088713159052434e-5,-5.261767665298347e-8,-0.002102731754757487,-5.093327497583167e-5,-5.2674658453290784e-8,-0.002102400038249737,-5.0926853473763044e-5,-5.267593710089334e-8,-0.002102110741705476,-5.088333895282607e-5,-5.2637516149960456e-8,-0.002101873489403106,-5.08235740242651e-5,-5.2580999673824274e-8,-0.0021016904381226816,-5.07720385838116e-5,-5.2531862498246874e-8,-0.0021015548084289933,-5.0754644122074386e-5,-5.2517309070279127e-8,-0.002101449525764805,-5.079541727592946e-5,-5.256294807274047e-8,-0.002101346863688587,-5.091147619245311e-5,-5.268753767417356e-8,-0.0021012107625705593,-5.110647842638639e-5,-5.2895930277749896e-8,-0.0021010036231113496,-5.1364431323432054e-5,-5.317225671965255e-8,-0.0021006978474307205,-5.164780092740599e-5,-5.347763770609452e-8,-0.0021002887607210427,-5.1904283966139336e-5,-5.3757151991875933e-8,-0.0020998017811831972,-5.2082983385010847e-5,-5.3956856249473105e-8,-0.002099287305051419,-5.2153786677272464e-5,-5.404424493360183e-8,-0.002098803714303415,-5.211938886395136e-5,-5.402099729340937e-8,-0.0020983970909576486,-5.201310176200273e-5,-5.392087032373497e-8,-0.0020980879471518285,-5.1884788106360025e-5,-5.379525398388802e-8,-0.0020978694594535633,-5.178355560077695e-5,-5.3695353664609535e-8,-0.0020977146033212875,-5.1744897802943776e-5,-5.3658858151211176e-8,-0.0020975867206337855,-5.17850538647107e-5,-5.370387698001164e-8,-0.002097449252174256,-5.1901448471996434e-5,-5.382901325735156e-8,-0.0020972727165282454,-5.2076755488728516e-5,-5.4017187239652266e-8,-0.002097038679265766,-5.228448053746355e-5,-5.424119501315798e-8,-0.002096741115512614,-5.2494770950254756e-5,-5.446974146690214e-8,-0.0020963856479537316,-5.267968073580639e-5,-5.467310941300608e-8,-0.0020959871806476727,-5.281730553664611e-5,-5.482773870037851e-8,-0.002095566547851664,-5.2894425618154075e-5,-5.49192091763326e-8,-0.0020951467983804607,-5.2907580747666326e-5,-5.494346629557186e-8,-0.0020947496865052926,-5.2862703551995284e-5,-5.490641407062349e-8,-0.00209439283463895,-5.277366064911636e-5,-5.482230500560337e-8,-0.002094087719578533,-5.266022168051224e-5,-5.471156076175677e-8,-0.0020938383034884785,-5.2545818362760925e-5,-5.459846822588298e-8,-0.00209364009071615,-5.245512424241938e-5,-5.4508786421523974e-8,-0.002093479524987209,-5.241128303972207e-5,-5.4467015989831044e-8,-0.002093333866675805,-5.243244496307399e-5,-5.449285675295966e-8,-0.002093172238328941,-5.25272454837531e-5,-5.459637339444828e-8,-0.002092959192295158,-5.2689536740216397e-5,-5.47721861308031e-8,-0.002092662162437497,-5.289419192472436e-5,-5.4994709404817255e-8,-0.002092262731012093,-5.3097515495686634e-5,-5.5218327291160634e-8,-0.0020917682925749906,-5.3246152076680836e-5,-5.5386719323868286e-8,-0.0020912168729252238,-5.32948950916572e-5,-5.5451705931345774e-8,-0.00209066831104737,-5.322638039161152e-5,-5.539407826225248e-8,-0.002090182976448214,-5.306061034027742e-5,-5.523368866112795e-8,-0.0020897991792229852,-5.2847036022818596e-5,-5.502129784760488e-8,-0.0020895220312050072,-5.264403046194828e-5,-5.481735951820511e-8,-0.002089327651578887,-5.2498344531242285e-5,-5.4670817165440435e-8,-0.002089176601984936,-5.243402752975581e-5,-5.46075905285881e-8,-0.002089027832962104,-5.2451886161662154e-5,-5.462976227025945e-8,-0.002088848145979607,-5.253524957931374e-5,-5.4721159636310425e-8,-0.002088616519163286,-5.265749417095675e-5,-5.485481113266398e-8,-0.0020883247601802828,-5.278870213189013e-5,-5.499971074275159e-8,-0.0020879761659435914,-5.290068935685728e-5,-5.512613172786507e-8,-0.002087583221816599,-5.297058683962383e-5,-5.520959628157752e-8,-0.002087164777385674,-5.29832296796577e-5,-5.5233626895864976e-8,-0.002086742950109644,-5.2932455223265686e-5,-5.519126877302781e-8,-0.002086339956581604,-5.282138748957507e-5,-5.508542075950947e-8,-0.0020859750527439137,-5.266171847400609e-5,-5.492801945295256e-8,-0.0020856618891764334,-5.247200185689632e-5,-5.4738177469182e-8,-0.0020854066000901466,-5.227520696881749e-5,-5.453962120190033e-8,-0.0020852067040709943,-5.209587655834655e-5,-5.4357819901512334e-8,-0.002085050761531667,-5.19570440334916e-5,-5.421693100956444e-8,-0.0020849188250382576,-5.187695475340274e-5,-5.4136513752244604e-8,-0.0020847838283227895,-5.1865633386018315e-5,-5.4127943797766366e-8,-0.002084614302700284,-5.192134366393279e-5,-5.4190517439071605e-8,-0.002084379177216386,-5.202743147570318e-5,-5.4307801867957737e-8,-0.0020840552632532838,-5.2151132764179095e-5,-5.444603412637725e-8,-0.0020836367229090016,-5.2246983387897786e-5,-5.4557508305702125e-8,-0.0020831432642481086,-5.226727446908682e-5,-5.45915998704627e-8,-0.00208262110484632,-5.217892051956154e-5,-5.451267651801983e-8,-0.0020821314693878165,-5.1979995231158984e-5,-5.4317639028435655e-8,-0.002081728580818981,-5.170500269403149e-5,-5.404156653193917e-8,-0.0020814384597434145,-5.1412711832119855e-5,-5.374512512192592e-8,-0.0020812512548079114,-5.1162601970100065e-5,-5.349017232141276e-8,-0.0020811301739922143,-5.0993981576040526e-5,-5.331814200443522e-8,-0.0020810288964036128,-5.091778800135395e-5,-5.324144113486929e-8,-0.0020809068797548306,-5.0920708246115815e-5,-5.324742058440525e-8,-0.002080737412895719,-5.0975044648063965e-5,-5.330822538299496e-8,-0.0020805090765344805,-5.104836915559959e-5,-5.339054776415609e-8,-0.0020802235105041346,-5.111032019083676e-5,-5.3462654102947513e-8,-0.0020798920087048986,-5.113645247824958e-5,-5.349856905196274e-8,-0.0020795322310856322,-5.111013067736273e-5,-5.3480319452971573e-8,-0.002079165270330489,-5.102337145825212e-5,-5.339903379738613e-8,-0.002078812929807196,-5.0877027322918444e-5,-5.325522084868336e-8,-0.0020784951021789507,-5.0680399754512935e-5,-5.3058323468374344e-8,-0.0020782272019827155,-5.0450194248135284e-5,-5.2825530483115977E-08,-0.002078017796904138,-5.020860124030872e-5,-5.257971627504764e-8,-0.002077866846658982,-4.998045829403398e-5,-5.234652763334412e-8,-0.002077764949227266,-4.9789769777337244e-5,-5.215090293742938e-8,-0.002077693796213007,-4.96559598259346e-5,-5.201333928555749e-8,-0.002077627945643406,-4.959024266445353e-5,-5.1946199184189877e-8,-0.0020775379573369774,-4.959258117963107e-5,-5.1950458272378425e-8,-0.002077394847759163,-4.964972754567608e-5,-5.20133946027985e-8,-0.0020771757956997636,-4.973494898228385e-5,-5.2107934240242226e-8,-0.0020768707597667575,-4.981047198397003e-5,-5.21948928946358e-8,-0.002076488719453658,-4.9833950263944744e-5,-5.222962698296795e-8,-0.0020760607752435137,-4.976947981592237e-5,-5.217368787144459e-8,-0.0020756363255762,-4.960119521007246e-5,-5.2009327355383566e-8,-0.0020752699804712604,-4.934370262592132e-5,-5.175068444401802e-8,-0.002075002258206543,-4.904167747827994e-5,-5.144355599514386e-8,-0.002074843505137487,-4.875527236421879e-5,-5.115030112001243e-8,-0.002074770885112081,-4.85375576824606e-5,-5.092642497342114e-8,-0.0020747400769557814,-4.841647775431193e-5,-5.080178737543361e-8,-0.00207470360549399,-4.839002227744564e-5,-5.077538800998163e-8,-0.0020746254988324455,-4.843356303392952e-5,-5.082265162308837e-8,-0.002074487411936633,-4.8512066229528486e-5,-5.090778965666528e-8,-0.002074287589063454,-4.8590652566310444e-5,-5.099462507142112e-8,-0.0020740364229402913,-4.864094211986411e-5,-5.105327235216716e-8,-0.0020737516117730406,-4.864364377231825e-5,-5.1063071939584795e-8,-0.0020734542779023923,-4.858893563414716e-5,-5.101324060777878e-8,-0.0020731661303226793,-4.847596434842968e-5,-5.090249495797251e-8,-0.0020729072209830705,-4.831209437291138e-5,-5.073826475982897e-8,-0.002072693884949742,-4.81119863715466e-5,-5.053563043378728e-8,-0.0020725366574624164,-4.789627336170478e-5,-5.031584456326077e-8,-0.002072438244777095,-4.76894406001386e-5,-5.0104114550785046e-8,-0.0020723920062757552,-4.751664405123388e-5,-4.992640119935618e-8,-0.002072381620741844,-4.7399626029792626e-5,-4.980535122260885e-8,-0.002072382493146707,-4.735231857382114e-5,-4.975587690759763e-8,-0.002072365126038206,-4.737703392101369e-5,-4.9781211913094104e-8,-0.0020723002115636837,-4.746229500170882e-5,-4.987048608611002e-8,-0.002072164686144449,-4.758318793891755e-5,-4.9998772052492005e-8,-0.0020719476479477516,-4.7704672733856255e-5,-5.0130175273880784e-8,-0.0020716548762382742,-4.778785681354576e-5,-5.0224127220180263E-08,-0.002071310506859259,-4.779875995902617e-5,-5.0244500497020163e-8,-0.0020709542977483263,-4.7718213318121765e-5,-5.017014103512715e-8,-0.002070633392768585,-4.755018007788747e-5,-5.0003890279004845e-8,-0.0020703892518739446,-4.7324560969728754e-5,-4.9775852540256276e-8,-0.002070243556064142,-4.709095642120351e-5,-4.953713265926498e-8,-0.002070189582318923,-4.690347790577672e-5,-4.93441179578025e-8,-0.002070194443298303,-4.6802416516879245e-5,-4.9239360290252976e-8,-0.002070211781957937,-4.680166452708117e-5,-4.923831183218621e-8,-0.0020701982102484394,-4.688757653287808e-5,-4.9327848095478144e-8,-0.0020701254502533,-4.702784331254064e-5,-4.947517696147768e-8,-0.002069984310820259,-4.718405080239909e-5,-4.9640685225447364e-8,-0.002069781881963152,-4.732196406548829e-5,-4.978861540585559e-8,-0.002069535727065262,-4.741708010271714e-5,-4.989300757237092e-8,-0.0020692682062174064,-4.7456088345065395e-5,-4.993946266170168e-8,-0.0020690022999483347,-4.743604483466135e-5,-4.9924473337753236e-8,-0.0020687589325963695,-4.736278778201662e-5,-4.9853830021207306e-8,-0.0020685552095647745,-4.724938104372905e-5,-4.9740931313843226e-8,-0.0020684029471759965,-4.7114721697835956e-5,-4.9605222607596616e-8,-0.002068307113632894,-4.698198596032385e-5,-4.9470525465095644e-8,-0.002068264210735056,-4.6876359384872586e-5,-4.936274057243991e-8,-0.0020682611085878133,-4.682161851644506e-5,-4.930645763105391e-8,-0.002068275207205279,-4.683559588593652e-5,-4.932042167102954e-8,-0.002068276840995726,-4.692525626768796e-5,-4.941250393336782e-8,-0.0020682343681795467,-4.708286526062035e-5,-4.9575641749325084e-8,-0.002068121336074826,-4.728509807584928e-5,-4.9786665145860586e-8,-0.002067923897843404,-4.7496385865671217e-5,-5.0009436305109905e-8,-0.0020676460373650566,-4.7676378285878495e-5,-5.0202301586995866e-8,-0.0020673105644500745,-4.77898332491647e-5,-5.032822287464823e-8,-0.002066955050994269,-4.781625324925658e-5,-5.036486940750825e-8,-0.0020666233471462645,-4.7756464778773514e-5,-5.0311739548860085e-8,-0.002066354580310086,-4.763398187934115e-5,-5.0191974764700023E-08,-0.0020661724200392493,-4.7490128745401975e-5,-5.004766473653001e-8,-0.0020660778693884388,-4.737345115377653e-5,-4.9929071504630356e-8,-0.002066048524221078,-4.732603099287772e-5,-4.9880421809209325e-8,-0.0020660453797246812,-4.737129330364156e-5,-4.992704483799921e-8,-0.0020660250285791494,-4.7508085193365105e-5,-5.006889477610717e-8,-0.0020659523841825966,-4.7713206060515434e-5,-5.028283650859611e-8,-0.0020658090029066624,-4.795053885650078e-5,-5.053188956294247e-8,-0.002065594771846483,-4.818222569886375e-5,-5.0776768516938594e-8,-0.002065324117375244,-4.837752105633615e-5,-5.0985184294608874e-8,-0.002065019767433622,-4.851728875182688e-5,-5.1136723525022014e-8,-0.0020647068446275245,-4.8594594783670716e-5,-5.1223668798557995e-8,-0.0020644086381638085,-4.861304972472082e-5,-5.124938607964203e-8,-0.002064144097864555,-4.8584434676873395e-5,-5.122584536957933e-8,-0.002063926468637026,-4.852647936788248e-5,-5.1171225339119544e-8,-0.0020637623786124806,-4.846100605905334e-5,-5.11079143446867e-8,-0.0020636508879348973,-4.841213269692522e-5,-5.106066445180714e-8,-0.002063582435238546,-4.8403934845334516e-5,-5.1054290024565175e-8,-0.002063538168965467,-4.8457018960260466e-5,-5.1110281108115146e-8,-0.002063490642966396,-4.858388401565267e-5,-5.12421042751145e-8,-0.002063407082221286,-4.8783799285689586e-5,-5.144985988199522e-8,-0.0020632559577338995,-4.9039126710606216e-5,-5.1716281192541857e-8,-0.0020630160427410785,-4.931581340272001e-5,-5.200696102828744e-8,-0.002062684941410063,-4.95699691789468e-5,-5.2276889335559116e-8,-0.0020622829172062315,-4.9759696099219955e-5,-5.2482526161209284e-8,-0.0020618491854511264,-4.9858113731482825e-5,-5.259526114699326e-8,-0.0020614313126430684,-4.98622055714111e-5,-5.261072103110058e-8,-0.0020610717124268244,-4.979388598943105e-5,-5.255018976438976e-8,-0.00206079622917913,-4.9693307260769264e-5,-5.2454091838812215e-8,-0.002060608259750969,-4.960738794563041e-5,-5.2370482519734586e-8,-0.0020604893759882652,-4.957747244117635e-5,-5.234243575739418e-8,-0.0020604054583355405,-4.962944279368117e-5,-5.239769021503708e-8,-0.00206031622426224,-4.976850689463904e-5,-5.254290844467591e-8,-0.0020601854537221713,-4.997959938080869e-5,-5.276367005121703e-8,-0.002059989171420568,-5.0232827495872717e-5,-5.3029781808228276e-8,-0.0020597197607184654,-5.049196909900188e-5,-5.330394627200139e-8,-0.002059385412596773,-5.0723251719086136e-5,-5.35509256812709e-8,-0.002059005920337264,-5.0901931837912855e-5,-5.374455696877302e-8,-0.0020586068325025636,-5.1015438910330984e-5,-5.387122879648511e-8,-0.0020582139353274493,-5.106332394108202e-5,-5.3929977985066915e-8,-0.0020578492211639973,-5.105516573900859e-5,-5.3930358175955645e-8,-0.002057528552028513,-5.100771436745336e-5,-5.388943054436595e-8,-0.0020572605931187234,-5.094215881551009e-5,-5.382886471043966e-8,-0.0020570463828137086,-5.088182315066045e-5,-5.3772543032440546e-8,-0.0020568790450358394,-5.0850080664488783e-5,-5.3744486331419684e-8,-0.0020567435004348058,-5.086799254343324e-5,-5.376655829843546e-8,-0.0020566165172875277,-5.0951144908211624e-5,-5.38553140117008e-8,-0.002056468009873697,-5.1105440079060466e-5,-5.40176449522486e-8,-0.002056264887091375,-5.13224346701609e-5,-5.4245796040435814e-8,-0.0020559784072281106,-5.157623756835036e-5,-5.451389058844007e-8,-0.0020555942713637253,-5.1825209665744814e-5,-5.4779432398487804e-8,-0.0020551217432332926,-5.202108670480498e-5,-5.4992587084446835e-8,-0.002054595971680873,-5.212442299521637e-5,-5.511211091620739e-8,-0.002054069540827032,-5.212000715115373e-5,-5.51213256728815e-8,-0.0020535954582683582,-5.202381128623128e-5,-5.503543356010499e-8,-0.002053209667556904,-5.187728707364314e-5,-5.48959111155173e-8,-0.002052921320923942,-5.1732422490422854e-5,-5.4755490408141264e-8,-0.0020527136286440546,-5.163540619096735e-5,-5.466165472016251e-8,-0.002052552370246584,-5.16152962902263e-5,-5.464504010682952e-8,-0.002052397089200715,-5.167979779085585e-5,-5.471483931427527e-8,-0.0020522111175157827,-5.1817015362214554e-5,-5.4860156203498216e-8,-0.002051968552414977,-5.200091488002448e-5,-5.505518884494557e-8,-0.002051657757119859,-5.219838699551085e-5,-5.5266251947721564e-8,-0.0020512816489339715,-5.237636228823249e-5,-5.5459107581815276e-8,-0.0020508553095427784,-5.2507832957142995e-5,-5.5605365688318714e-8,-0.0020504017421625635,-5.2575890404729004e-5,-5.568690921630114e-8,-0.002049946887543557,-5.257533993074332e-5,-5.5697769382127575e-8,-0.002049514984834118,-5.251207506856239e-5,-5.5643570315387093e-8,-0.0020491250330573053,-5.240083953067565e-5,-5.553919797775131e-8,-0.0020487886736325817,-5.226219084775036e-5,-5.540559549606092e-8,-0.002048509350314085,-5.211942672300324e-5,-5.526655233827838e-8,-0.0020482822912756475,-5.1995876311308334e-5,-5.514595440180733e-8,-0.0020480948969156336,-5.191250486751777e-5,-5.506543751527602e-8,-0.0020479273660762303,-5.188554270222557e-5,-5.5042078174011434e-8,-0.002047753716271682,-5.19237834715236e-5,-5.5085654827554707e-8,-0.002047543853386551,-5.202532476066097e-5,-5.5195172880639046e-8,-0.0020472677925593256,-5.2174216124140644e-5,-5.535514660858792e-8,-0.002046902870774027,-5.2338771760351975e-5,-5.553355877045675e-8,-0.0020464432837271392,-5.247451873274851e-5,-5.568470840459575e-8,-0.0020459084093877532,-5.253449204712567e-5,-5.575981860047395e-8,-0.002045343640214381,-5.2486027294355265e-5,-5.5724461720487053e-8,-0.002044808785656605,-5.2326853813685626e-5,-5.557525555895152e-8,-0.002044356731611969,-5.208986005362827e-5,-5.534487592771635e-8,-0.002044013525552351,-5.183141847200364e-5,-5.5090255370018856e-8,-0.002043771226817781,-5.160953417781544e-5,-5.48704621303244e-8,-0.0020435956589243583,-5.1464429347744986e-5,-5.472704260792385e-8,-0.0020434418674889353,-5.1410036594933055e-5,-5.4675282541850294e-8,-0.0020432684427998627,-5.14362548539681e-5,-5.470618039648655e-8,-0.0020430462096218717,-5.1516940304592496e-5,-5.4794150517663037e-8,-0.0020427612302023604,-5.161886518563504e-5,-5.490581755587025e-8,-0.002042413976632722,-5.170911019925943e-5,-5.50074620408479e-8,-0.0020420165420526716,-5.1760253982835196e-5,-5.5070471238764245e-8,-0.0020415890123641396,-5.1753638794210315e-5,-5.507496856439569e-8,-0.002041155494939975,-5.168102371657047e-5,-5.501178570621877e-8,-0.0020407401651533347,-5.154474405169965e-5,-5.488278817879703e-8,-0.0020403637204026146,-5.135653343018677e-5,-5.4699684377973364e-8,-0.002040040576882192,-5.113526412477106e-5,-5.448162890443747e-8,-0.002039777091455139,-5.09039490226065e-5,-5.425206240270826e-8,-0.0020395709362431877,-5.068649756636404e-5,-5.4035371776647424e-8,-0.002039411459954195,-5.050467571637247e-5,-5.385385724355181e-8,-0.002039280756574348,-5.037542727193322e-5,-5.372512326084712e-8,-0.0020391552857087123,-5.030852534711591e-5,-5.365977061904039e-8,-0.0020390080427771986,-5.030447590753775e-5,-5.365921376204627e-8,-0.002038811568452725,-5.0352607930303213e-5,-5.3713516384989046e-8,-0.0020385424324039243,-5.042973944197244e-5,-5.379970190700536e-8,-0.0020381875739485158,-5.050077044952324e-5,-5.388206675784495e-8,-0.0020377516616928775,-5.052330199125621e-5,-5.391680200972993e-8,-0.0020372625651711995,-5.045802416725423e-5,-5.386277190055731e-8,-0.0020367698775526524,-5.028392416035833e-5,-5.3697376840582164e-8,-0.0020363321435952564,-5.001196000452072e-5,-5.34308014077663e-8,-0.0020359951521852593,-4.968703486004547e-5,-5.310816086035136e-8,-0.0020357726478473404,-4.937288418461528e-5,-5.279414480895378e-8,-0.0020356419556401216,-4.9126855995544544e-5,-5.2547399322285394e-8,-0.002035556684070434,-4.897959533240644e-5,-5.2399885499866514e-8,-0.0020354668174017705,-4.892970414356411e-5,-5.2351307750795756e-8,-0.0020353344578759418,-4.8951698867931034e-5,-5.237686688565701e-8,-0.0020351402813209166,-4.900893595997211e-5,-5.2440021527677685e-8,-0.0020348825479860966,-4.906468718670452e-5,-5.250353037457378e-8,-0.0020345726105927375,-4.908894182699448e-5,-5.253641005057569e-8,-0.002034229863541913,-4.906144649731033e-5,-5.251727392128725e-8,-0.002033877432711455,-4.897243922319491e-5,-5.2435389666249733e-8,-0.002033538711092817,-4.882223756648143e-5,-5.2290488844127926e-8,-0.002033234470164266,-4.8620156756388854e-5,-5.2091736421230884e-8,-0.0020329804185158853,-4.838285072517303e-5,-5.185597492180308e-8,-0.0020327852353072594,-4.813206614562613e-5,-5.160531630998899e-8,-0.002032649254192641,-4.789178910703803e-5,-5.136415864036497e-8,-0.00203256409568354,-4.7684964149517676e-5,-5.115586867184493e-8,-0.002032513412831578,-4.7530207576543425e-5,-5.099954932398015e-8,-0.0020324746777436327,-4.743890663944881e-5,-5.0907215491822745e-8,-0.002032421864725609,-4.741298395352246e-5,-5.088156196373777e-8,-0.002032328861343699,-4.744359026821503e-5,-5.091451930689139e-8,-0.002032173443614939,-4.7510913626487626e-5,-5.098678990055797e-8,-0.002031941783002499,-4.75853718193778e-5,-5.106873150905396e-8,-0.0020316332829377146,-4.763092567556373e-5,-5.112349305662727e-8,-0.002031264678451989,-4.7611506845454626e-5,-5.111354889776993e-8,-0.0020308711459007655,-4.7500835256465015e-5,-5.101094070015697e-8,-0.002030501384939176,-4.7293891553481265e-5,-5.0809346057054425e-8,-0.0020302046550841244,-4.7015069114082157e-5,-5.053271389164446e-8,-0.002030012417735536,-4.6715860633814e-5,-5.023306514824246e-8,-0.0020299237206302333,-4.645858056483108e-5,-4.997393446583235e-8,-0.002029904534219609,-4.629246101907128e-5,-4.980599835191041e-8,-0.0020299027081861383,-4.6235733219535855e-5,-4.974874457112798e-8,-0.0020298691085456756,-4.6273355836021885e-5,-4.9787942532947575e-8,-0.002029772836986357,-4.6368492929145236e-5,-4.9886997870461254e-8,-0.0020296053518841788,-4.6478270704142267e-5,-5.0002696473796485e-8,-0.0020293762284797076,-4.6565779984025805e-5,-5.009732090515303e-8,-0.0020291058975264805,-4.660586503998099e-5,-5.0144678766039385e-8,-0.0020288190745721122,-4.658611551409667e-5,-5.013139050785385e-8,-0.0020285401833065263,-4.650544482721242e-5,-5.0055709880198454e-8,-0.0020282905163081324,-4.637198758862261e-5,-4.9925521941264115e-8,-0.0020280863812595215,-4.6201017541421475e-5,-4.975620376898143e-8,-0.002027937697407739,-4.6012910954525015e-5,-4.95684364968778e-8,-0.0020278468548150497,-4.5830932166805734e-5,-4.938584335030445e-8,-0.0020278079352926354,-4.5678563130217145e-5,-4.923225233991149e-8,-0.0020278066732735607,-4.5576287146234076e-5,-4.9128512005390405e-8,-0.0020278216052989797,-4.553814792964579e-5,-4.908913495339701e-8,-0.0020278266184087235,-4.5568694544187735e-5,-4.91192941943901e-8,-0.0020277947861438816,-4.566099727855335e-5,-4.921277950752152e-8,-0.0020277030598136164,-4.579640243999685e-5,-4.9351559556919325e-8,-0.0020275370670149273,-4.5946459644631754e-5,-4.950743825762933e-8,-0.0020272951641109476,-4.6077038467505365e-5,-4.964594133297112e-8,-0.0020269909380996286,-4.615441491887575e-5,-4.9732349917762104e-8,-0.002026653192492816,-4.615293081887066e-5,-4.973956903588067e-8,-0.002026322209052732,-4.606314805429271e-5,-4.965671815932576e-8,-0.0020260414134917063,-4.5898197313257225e-5,-4.949598467985722e-8,-0.002025845064816443,-4.569487890022771e-5,-4.929407616837752e-8,-0.0020257453978966516,-4.550622741121225e-5,-4.9104815330766504e-8,-0.0020257254701901042,-4.538541867435896e-5,-4.898274157296879e-8,-0.0020257433889951937,-4.536680350718691e-5,-4.89636608578841e-8,-0.0020257476215753702,-4.5453789008186565e-5,-4.905208248604179e-8,-0.002025695654193513,-4.562012774480506e-5,-4.922225373647776e-8,-0.0020255663701208917,-4.582262170758979e-5,-4.943082479997011e-8,-0.0020253618227586557,-4.6016984020625265e-5,-4.963283638283841e-8,-0.00202510099803616,-4.6169328034816214e-5,-4.979343944742674e-8,-0.002024811017417274,-4.626077683867761e-5,-4.989278000082901e-8,-0.002024519795827304,-4.6286832571634604e-5,-4.992561400738215e-8,-0.0020242514862415977,-4.625433913083903e-5,-4.989840752411386e-8,-0.002024024252686185,-4.617810969109077e-5,-4.982595556164917e-8,-0.0020238493406938953,-4.607808430854788e-5,-4.972841725462505e-8,-0.0020237306112493255,-4.597702408116703e-5,-4.96288581956967e-8,-0.002023664162763472,-4.589834984431947e-5,-4.955099750636145e-8,-0.0020236381094273855,-4.586365827157764e-5,-4.951673189348936e-8,-0.0020236329502209293,-4.5889656355000434e-5,-4.954314934249165e-8,-0.002023623153744319,-4.5984715081919234e-5,-4.963915423232379e-8,-0.0020235804546441657,-4.6145777376813115e-5,-4.980235686787022e-8,-0.002023478863220688,-4.635676148666589e-5,-5.0017332271608656e-8,-0.0020233006158513526,-4.658965624449702e-5,-5.025648223081647e-8,-0.002023041531229927,-4.6808945440860525e-5,-5.048423155390615e-8,-0.0020227139642913913,-4.6978896318268104e-5,-5.066420578545552e-8,-0.002022346013528821,-4.7072161309276584e-5,-5.0767917079637096e-8,-0.002021976583923614,-4.7077557162162256e-5,-5.0782829172766134e-8,-0.002021646938817805,-4.700482993717928e-5,-5.071753209060727e-8,-0.0020213903373314294,-4.688457071627136e-5,-5.060204845365824e-8,-0.00202122225761361,-4.676225438165741e-5,-5.048208770780828e-8,-0.002021134399579563,-4.668682793085823e-5,-5.040757499631068e-8,-0.0020210955157597492,-4.66964938733245e-5,-5.041810897949245e-8,-0.002021060207166187,-4.680660727557303e-5,-5.053039604591645e-8,-0.0020209831787395298,-4.700501284627893e-5,-5.073317426465869e-8,-0.0020208331782008877,-4.7257207541469374e-5,-5.0992163914768974e-8,-0.002020600749527367,-4.751873684499668e-5,-5.126249359928724e-8,-0.002020297495132843,-4.7748817668834114e-5,-5.150253416122725e-8,-0.002019949045350994,-4.791973032907616e-5,-5.168357842505219e-8,-0.002019586148214338,-4.801998291591459e-5,-5.1793273968425187e-8,-0.0020192374342056386,-4.8052601996660434e-5,-5.183409256541799e-8,-0.002018925159106304,-4.8031175323490096e-5,-5.181942050354247e-8,-0.0020186634942643855,-4.797571811880198e-5,-5.1769350061628944e-8,-0.002018458307559683,-4.7909321720409155e-5,-5.17071934570522e-8,-0.0020183074793059634,-4.7855657746552463e-5,-5.1656878184229704e-8,-0.0020182012242393878,-4.783688725574289e-5,-5.164083264519561e-8,-0.0020181224346406887,-4.7871384574551e-5,-5.167777089044754e-8,-0.002018047515893418,-4.797092449356852e-5,-5.177995991815182e-8,-0.0020179484270965854,-4.813745696818201e-5,-5.1950004632217014e-8,-0.0020177966111187182,-4.836022705575067e-5,-5.217785319666721e-8,-0.0020175689778127058,-4.861471743161788e-5,-5.243952149084699e-8,-0.0020172549083493363,-4.886518940475764e-5,-5.2699404555608824e-8,-0.0020168618491771245,-4.9071739379400246e-5,-5.291720278700551e-8,-0.0020164165457899337,-4.920074189090056e-5,-5.305839885690176e-8,-0.0020159601254947663,-4.923537724905972e-5,-5.310497994930823e-8,-0.0020155377782343923,-4.9182101111894395e-5,-5.3062208619770655e-8,-0.0020151863264922898,-4.9070186505180795e-5,-5.2958496549887175e-8,-0.0020149239683831454,-4.894424255995497e-5,-5.28381974040878e-8,-0.002014745466484543,-4.8852234007670655e-5,-5.2749744360003565e-8,-0.002014623980385843,-4.8832737442584404e-5,-5.2732795661562925E-08,-0.0020145187675945538,-4.8905033515197663e-5,-5.2807996323674024e-8,-0.002014386463354211,-4.9064737170752646e-5,-5.297217537397421e-8,-0.0020141926071653754,-4.928613889269881e-5,-5.3200321420099145e-8,-0.002013919923050992,-4.953032530867741e-5,-5.3453543629696204e-8,-0.002013571006866503,-4.975617191211685e-5,-5.369014468097558e-8,-0.0020131652167542056,-4.993046123284049e-5,-5.3875992139383384e-8,-0.002012731692604997,-5.0034158097124634e-5,-5.399109718532883e-8,-0.0020123014742402913,-5.0063845602625036e-5,-5.403129483295887e-8,-0.00201190121087524,-5.002933955111049e-5,-5.4005977959494064e-8,-0.002011549521326985,-4.994945558883987e-5,-5.393385164637899e-8,-0.002011255743455944,-4.984764678639762e-5,-5.383846809376056e-8,-0.0020110201985696686,-4.974843179222414e-5,-5.374453985485008e-8,-0.002010835083772604,-4.9674777295965575e-5,-5.367526613695328e-8,-0.0020106854277154628,-4.964606496865315e-5,-5.365032901804489e-8,-0.0020105500400673802,-4.9676073962541255e-5,-5.3683953076972764e-8,-0.0020104028617102853,-4.9770593190928885e-5,-5.3782559234610896e-8,-0.0020102154280196164,-4.992472116898015e-5,-5.39419945769669e-8,-0.002009961203093299,-5.01205774324166e-5,-5.4145045648848874e-8,-0.0020096220475094026,-5.032702956215601e-5,-5.436091558231032e-8,-0.0020091956873586328,-5.0503577918817376e-5,-5.454893403638213e-8,-0.0020087010935627442,-5.060963041617747e-5,-5.466782814365228e-8,-0.0020081776870822868,-5.06175125618987e-5,-5.468889528583259e-8,-0.0020076760813480246,-5.052404157729019e-5,-5.4607820427235687e-8,-0.0020072426309083852,-5.03543523152836e-5,-5.444874990717472e-8,-0.0020069043511348767,-5.015493124700536e-5,-5.42575575233768e-8,-0.0020066610667815107,-4.997871174697851e-5,-5.40871357697118e-8,-0.0020064875013838,-4.98690470565664e-5,-5.3981449732444325e-8,-0.0020063429428621477,-4.9848723760962696e-5,-5.396442162152271e-8,-0.0020061836818402717,-4.991653940438004e-5,-5.40361687618578e-8,-0.0020059740082301832,-5.005060728795719e-5,-5.4175883241144576e-8,-0.0020056933781890086,-5.021595398427699e-5,-5.434910207886136e-8,-0.0020053390005447076,-5.037374382076034e-5,-5.4516829286568113e-8,-0.0020049242019915922,-5.048986269802197e-5,-5.464425732666e-8,-0.0020044736538592134,-5.054119841472836e-5,-5.470733410760349e-8,-0.0020040170112563204,-5.0518666909647305e-5,-5.469609132681992e-8,-0.002003582651521957,-5.0426916644760484e-5,-5.461455429534083e-8,-0.002003192848389794,-5.028151267800684e-5,-5.4477987905210974e-8,-0.0020028610069787686,-5.010484787898947e-5,-5.430874706071043e-8,-0.0020025908720933084,-4.992194480586509e-5,-5.413196542421391e-8,-0.0020023771463984017,-4.9756918400443195e-5,-5.3971933421660555e-8,-0.002002206808863418,-4.963034306888264e-5,-5.384945799572805e-8,-0.0020020606277349035,-4.955729195151486e-5,-5.3779965287491494e-8,-0.002001914752160842,-4.9545629165052306e-5,-5.377186303277142e-8,-0.0020017426370449094,-4.959424701946217e-5,-5.382477021649585e-8,-0.0020015178700865826,-4.9691252782268014e-5,-5.392756337052816e-8,-0.002001218597218113,-4.981272984636775e-5,-5.4056892268100934e-8,-0.0020008337756181305,-4.9923598500677135e-5,-5.417780009747694e-8,-0.002000370096206164,-4.998267559890689e-5,-5.4248682766537245e-8,-0.0019998563334538166,-4.995319905600739e-5,-5.423191853970226e-8,-0.0019993405058199324,-4.981692900508882e-5,-5.4108211202206056e-8,-0.0019988771595501596,-4.958544642961348e-5,-5.388813032255459e-8,-0.001998508235516319,-4.930060305686856e-5,-5.361273486836377e-8,-0.0019982470792282445,-4.902112276864653e-5,-5.3340329163181614e-8,-0.001998074636703137,-4.880149849864028e-5,-5.31255233957502e-8,-0.0019979490776461596,-4.867431780069525e-5,-5.300163018068865e-8,-0.001997822100817167,-4.864355803151583e-5,-5.2973805172126e-8,-0.0019976535169998273,-4.8688691267618395e-5,-5.3022777123200866e-8,-0.001997419552504148,-4.8774601604832057e-5,-5.311433704727912e-8,-0.001997114744774493,-4.8862226688571974e-5,-5.320970261330998e-8,-0.0019967494607951706,-4.891701856579829e-5,-5.3273961127601174e-8,-0.0019963452028423133,-4.8914377496388965e-5,-5.328171644965104e-8,-0.0019959291743273603,-4.884227819040176e-5,-5.3220032150562435e-8,-0.0019955289872912786,-4.870151669163586e-5,-5.3088954045228216e-8,-0.001995168161878916,-4.850401085939419e-5,-5.289994962557313e-8,-0.0019948628903654394,-4.8269744288963775e-5,-5.267284224427861e-8,-0.0019946202670904343,-4.8023026531601735e-5,-5.2431967802807096e-8,-0.0019944379707342885,-4.7788675113880514e-5,-5.220224766362233e-8,-0.0019943051797844005,-4.7588659781935926e-5,-5.200579146376313e-8,-0.0019942042706509,-4.743954711749449e-5,-5.1859386167826104e-8,-0.001994112859914415,-4.735069680607469e-5,-5.1772781475901097e-8,-0.001994006037341234,-4.732295848864623e-5,-5.1747440313270875e-8,-0.001993858894812306,-4.7347710668200726e-5,-5.177551950964653e-8,-0.0019936496579878314,-4.740627635058635e-5,-5.18390919640976e-8,-0.001993363861819001,-4.7470190253398286e-5,-5.1910146838977426e-8,-0.0019929996205191062,-4.7503541595903896e-5,-5.195272017060764e-8,-0.0019925728195238626,-4.746902878186876e-5,-5.1928915188607375e-8,-0.001992119310680294,-4.7338527946317814e-5,-5.1809644671995214e-8,-0.001991689987214206,-4.710613654808492e-5,-5.1587956392584026e-8,-0.0019913363447532006,-4.6797293437381455e-5,-5.128838764343941e-8,-0.0019910904742861894,-4.6465669201456026e-5,-5.096398901617266e-8,-0.001990950368197197,-4.617513909028325e-5,-5.067840830528089e-8,-0.0019908806466250022,-4.5975167125504204e-5,-5.048140368418561e-8,-0.0019908285309041696,-4.5883747649525306e-5,-5.039181646697579e-8,-0.0019907446103717484,-4.588605349155747e-5,-5.039601315964357e-8,-0.0019905972795608703,-4.59456274268961e-5,-5.045866854053545e-8,-0.0019903769307380295,-4.601920467643337e-5,-5.053718566759492e-8,-0.001990092573971516,-4.60683822052351e-5,-5.059317403618827e-8,-0.0019897653271612717,-4.6066023946311286e-5,-5.059894157366422e-8,-0.0019894219047486518,-4.5998288524238066e-5,-5.0539804388693425e-8,-0.001989089388356069,-4.5864029542767294e-5,-5.041380553085208e-8,-0.001988791342582684,-4.5672889943786124e-5,-5.023002279694939e-8,-0.0019885450270769787,-4.544267119758317e-5,-5.000598811628438e-8,-0.001988359611822744,-4.519623780012269e-5,-4.9764511439258186e-8,-0.001988235373861473,-4.4958196634044265e-5,-4.9530237154278555e-8,-0.001988163874878257,-4.475155292368226e-5,-4.932622435749737e-8,-0.0019881291494703197,-4.4594624487372946e-5,-4.917088069716583e-8,-0.0019881097672433527,-4.449860634103792e-5,-4.907562319610449e-8,-0.0019880814361664893,-4.446599676205845e-5,-4.9043404078743095e-8,-0.001988019896370336,-4.448984902371915e-5,-4.90679788963876e-8,-0.0019879040251158317,-4.455382789815783e-5,-4.9133842968146527e-8,-0.001987719144006088,-4.463316087772778e-5,-4.921694042093964e-8,-0.001987460558236463,-4.46967620556441e-5,-4.9286514917244204e-8,-0.0019871370966062707,-4.471122399257981e-5,-4.9308929889939364e-8,-0.0019867735413332,-4.464753053386993e-5,-4.925440944020967e-8,-0.0019864096922321078,-4.449046879624519e-5,-4.910667619111871e-8,-0.001986093293887148,-4.424847454638656e-5,-4.887310764941467e-8,-0.0019858657165408035,-4.395851101024967e-5,-4.858986252843164e-8,-0.0019857444502105696,-4.36793761172567e-5,-4.831531748591886e-8,-0.0019857123157436644,-4.3471892985409506e-5,-4.811032585031551e-8,-0.001985722442942424,-4.3374678707536145e-5,-4.801403302963816e-8,-0.001985717837909519,-4.3389861516746215e-5,-4.802953349265059e-8,-0.0019856536347009303,-4.348657983914437e-5,-4.812711300883761e-8,-0.001985509793314366,-4.3617293200771854e-5,-4.826016677840372e-8,-0.001985291041141802,-4.373551017512467e-5,-4.8382599589213666e-8,-0.001985018982825112,-4.380710889702349e-5,-4.8460059289153266e-8,-0.00198472269519155,-4.381413163467009e-5,-4.8473904889146595e-8,-0.0019844313817317153,-4.3753602107519224e-5,-4.8420335013601454e-8,-0.0019841698777690116,-4.3634265418978614e-5,-4.830740886578302e-8,-0.00198395631013117,-4.347308097731399e-5,-4.815167459106861e-8,-0.00198380093609794,-4.32920529085931e-5,-4.7974972464015794e-8,-0.0019837056325942176,-4.311530044265703e-5,-4.7801388949448075e-8,-0.0019836639326078916,-4.2966205027643966e-5,-4.765430103584804e-8,-0.0019836616788419274,-4.2864560277764126e-5,-4.755351001687462e-8,-0.0019836784835310212,-4.2823816969524074e-5,-4.75125667742844e-8,-0.0019836901334029686,-4.284880913635948e-5,-4.753661876885519e-8,-0.0019836717844280323,-4.293443985340406e-5,-4.7621167559884083e-8,-0.001983601577361672,-4.306561983656408e-5,-4.775195443764006e-8,-0.00198346427639853,-4.321860830029743e-5,-4.79061064744248e-8,-0.001983254503428399,-4.3363817575379086e-5,-4.805466061004061e-8,-0.001982979128261479,-4.3470011868281195e-5,-4.8166508580713625e-8,-0.0019826583317162807,-4.350982227820718e-5,-4.8213806615591725e-8,-0.0019823245270563744,-4.346642997860529e-5,-4.817876549475533e-8,-0.0019820179079688013,-4.334055689306835e-5,-4.806092503305833e-8,-0.0019817776241884424,-4.315546627647395e-5,-4.788249609663614e-8,-0.001981629243341138,-4.295622121243347e-5,-4.768788218876515e-8,-0.00198157253207564,-4.279964969343516e-5,-4.753376447678903e-8,-0.0019815768110193243,-4.273555993575656e-5,-4.747031671641675e-8,-0.0019815896914275643,-4.2786939561310826e-5,-4.752132323658576e-8,-0.001981556964728314,-4.294065163758243e-5,-4.767470277125102e-8,-0.001981442898715948,-4.315455768342111e-5,-4.788935301045354e-8,-0.001981239994932547,-4.337586664281439e-5,-4.811318043326988e-8,-0.001980965615592369,-4.3559380683812036e-5,-4.830112897720887e-8,-0.001980651104271411,-4.3677669740602314e-5,-4.842535724700544e-8,-0.001980330622165264,-4.37224614567855e-5,-4.8476842035870866e-8,-0.001980033601616317,-4.370082309922366e-5,-4.846185712372692e-8,-0.001979781186553916,-4.362987461869388e-5,-4.8396913373778846e-8,-0.0019795853426471683,-4.35321462310607e-5,-4.8304189751421825e-8,-0.001979449164923876,-4.343211096476673e-5,-4.8208004801788516e-8,-0.001979367516891493,-4.335355049589747e-5,-4.81320762404166e-8,-0.0019793277939190233,-4.331724667908914e-5,-4.8097157631997425e-8,-0.0019793109779484602,-4.333865671006025e-5,-4.811875302716466e-8,-0.00197929334115372,-4.342552864224307e-5,-4.8204839307820454e-8,-0.0019792491585166726,-4.3575840607934675e-5,-4.835390191602501e-8,-0.0019791544719827683,-4.377676979296662e-5,-4.855390559455163e-8,-0.0019789914659854206,-4.400538864917376e-5,-4.878285284376596e-8,-0.001978752618067997,-4.423151487384888e-5,-4.9011380729146134e-8,-0.001978443571552841,-4.442266642057841e-5,-4.920743293376487e-8,-0.0019780837559768326,-4.455044155192306e-5,-4.93424419569069e-8,-0.001977704189216635,-4.459716325964112e-5,-4.9397956177720134e-8,-0.0019773423735596264,-4.4561466986321577e-5,-4.937141684655841e-8,-0.001977034607825835,-4.446140319979623e-5,-4.927959934097138e-8,-0.0019768066566202684,-4.433345001834858e-5,-4.915798984075471e-8,-0.0019766648048065616,-4.422600808807836e-5,-4.905454320636164e-8,-0.001976590642014865,-4.418718038152136e-5,-4.901754862575995e-8,-0.0019765433922679146,-4.424941926591262e-5,-4.908018505043689e-8,-0.0019764714799322142,-4.441704193678446e-5,-4.924782281001948e-8,-0.0019763299672662825,-4.466351711965738e-5,-4.949503779025665e-8,-0.0019760958592488333,-4.494111748014449e-5,-4.9774988214425593e-8,-0.001975773776278894,-4.519821653836421e-5,-5.003649186587927e-8,-0.001975390495162118,-4.539533451112828e-5,-5.0239976118785304e-8,-0.0019749831859174212,-4.551335871876182e-5,-5.0365773681986254e-8,-0.0019745879207018306,-4.555320514137526e-5,-5.041400386812903e-8,-0.0019742323786003236,-4.553037719774458e-5,-5.039938833552872e-8,-0.0019739331147513276,-4.5468406296927464e-5,-5.03448680797245e-8,-0.001973695819172792,-4.539349471122782e-5,-5.0276287499947574e-8,-0.0019735168135767726,-4.533089935511781e-5,-5.0218721062822205e-8,-0.0019733846944876474,-4.5302611923024283e-5,-5.019408501320979e-8,-0.0019732817668098417,-4.532562487218592e-5,-5.021939519624579e-8,-0.0019731854504376916,-4.5410207074392044e-5,-5.0305107394665245e-8,-0.0019730701622044603,-4.5557997564901036e-5,-5.045329830787116e-8,-0.001972910223039121,-4.576026673732602e-5,-5.0655959638034884e-8,-0.001972684031500541,-4.5997198476817514E-05,-5.0894198826261366e-8,-0.001972379090884328,-4.623929153514652e-5,-5.113944114811148e-8,-0.001971996635686588,-4.6451727228890164e-5,-5.135753400078218e-8,-0.0019715539766186102,-4.660160044857538e-5,-5.1515737334611745e-8,-0.0019710828542270687,-4.6666477609024985e-5,-5.159115485388241e-8,-0.001970623298040414,-4.664162896085638e-5,-5.1578016403124346e-8,-0.001970214212090245,-4.65432620191606e-5,-5.1491151948029e-8,-0.001969883242927487,-4.6406229230851866e-5,-5.1364075446337285e-8,-0.001969638857557791,-4.627639846031354e-5,-5.124174919757445e-8,-0.001969467008160238,-4.6199420166105754e-5,-5.116961866658035e-8,-0.0019693336914688433,-4.6208627966382286e-5,-5.1181552597747694e-8,-0.001969193371546135,-4.631535486871011e-5,-5.128996338486575e-8,-0.0019690015104308046,-4.650497733936632e-5,-5.148150977961362e-8,-0.001968727504736385,-4.6740821064600386e-5,-5.172064567922468e-8,-0.001968363316252578,-4.697522012612561e-5,-5.196041523031695e-8,-0.00196792440570595,-4.71636765838571e-5,-5.2156492160433425e-8,-0.001967443051877653,-4.727655930735045e-5,-5.227890703313716e-8,-0.0019669575953292872,-4.730437768201357e-5,-5.2317472555509746e-8,-0.0019665022928231123,-4.7256201646844035e-5,-5.228042290007389e-8,-0.0019661009362071376,-4.715377406937989e-5,-5.218873377314962e-8,-0.0019657647779907092,-4.702464970878444e-5,-5.206938544394163e-8,-0.001965493477560509,-4.689660585321579e-5,-5.194979398067257e-8,-0.001965277377825799,-4.6794002474408414e-5,-5.185413345399812e-8,-0.001965099914950498,-4.67357278760477e-5,-5.1801254050097615e-8,-0.0019649396611614903,-4.673397854378611e-5,-5.180348656861776e-8,-0.0019647721014879383,-4.6793187059781656e-5,-5.186563289514447e-8,-0.0019645716558417217,-4.690878647692816e-5,-5.1983771468773974e-8,-0.0019643145874512157,-4.706604455706395e-5,-5.214404907793817e-8,-0.001963983213520618,-4.7239795327600476e-5,-5.232226406608289e-8,-0.0019635711534783046,-4.7396399391850306e-5,-5.248560550378622e-8,-0.0019630881783210172,-4.749923158841316e-5,-5.2597912011238834e-8,-0.0019625620385825687,-4.7517783547080394e-5,-5.262860028092075e-8,-0.001962034600536159,-4.743810866143697e-5,-5.2563034466538445e-8,-0.001961551663459193,-4.7270187530390955e-5,-5.2409958425237556e-8,-0.0019611493437624405,-4.7047867070956564e-5,-5.2201684891901307e-8,-0.0019608425118726406,-4.682012526184868e-5,-5.198578136085175e-8,-0.001960620223510975,-4.663679110534357e-5,-5.1811253235307756e-8,-0.00196044964691645,-4.65343886842311e-5,-5.1714684022350806e-8,-0.001960286244385532,-4.652696232149927e-5,-5.171103424799668e-8,-0.0019600861987816276,-4.660393314075276e-5,-5.1791161198884274e-8,-0.001959817384072231,-4.673447845393499e-5,-5.192571546679343e-8,-0.0019594663672666632,-4.687647620848606e-5,-5.207366237327364e-8,-0.0019590402013480103,-4.69873681531962e-5,-5.219291849091948e-8,-0.0019585630459199917,-4.7034093216261266e-5,-5.2250281015410575e-8,-0.0019580689434451474,-4.699963912862847e-5,-5.222813797470916e-8,-0.001957593098636109,-4.6884855780413277E-05,-5.212650982795257e-8,-0.0019571642607120374,-4.6705755925512453e-5,-5.196056523166988e-8,-0.001956800031936092,-4.648795164335014e-5,-5.175520387715332e-8,-0.0019565055327110657,-4.626040613743492e-5,-5.1538868280151164e-8,-0.001956274664949442,-4.605019885705157e-5,-5.133830575689433e-8,-0.0019560927255029953,-4.587904903303501e-5,-5.117507505063576e-8,-0.001955939273522816,-4.5761480824035993e-5,-5.106372503209461e-8,-0.00195579066288265,-4.570401845100373e-5,-5.101104052329391e-8,-0.001955622211363207,-4.570476038673568e-5,-5.101566680936453e-8,-0.001955410378080181,-4.575298140689403e-5,-5.1067700552761083e-8,-0.0019551355106216866,-4.5828851541139104e-5,-5.114829612455283e-8,-0.0019547856381423576,-4.590392133545704e-5,-5.122995115968192e-8,-0.001954361197611504,-4.594364275569868e-5,-5.127880370114713e-8,-0.001953879361532978,-4.591336545457481e-5,-5.126044894606853e-8,-0.001953375159198017,-4.5788157126795125e-5,-5.114965466945004e-8,-0.0019528960573228693,-4.556404200060815e-5,-5.094156483201756e-8,-0.0019524888638265663,-4.52650121756844e-5,-5.0658773399677315e-8,-0.0019521829510683111,-4.493969555783338e-5,-5.03482415102804e-8,-0.001951978224705543,-4.4646436883604996e-5,-5.006686001308755e-8,-0.0019518449631389671,-4.4433199757164185e-5,-4.9861909053352045e-8,-0.0019517355290165363,-4.43223575013476e-5,-4.9756164208185047e-8,-0.0019516011374687279,-4.430667685873654e-5,-4.9743737900243164e-8,-0.0019514058087092413,-4.4355660121435736e-5,-4.979589561049797e-8,-0.0019511334488388776,-4.442707829644108e-5,-4.987196748279403e-8,-0.0019507882121724506,-4.4478635729643045e-5,-4.993057447552316e-8,-0.0019503903208332868,-4.447687118184344e-5,-4.9938400968221414e-8,-0.0019499696523796678,-4.440237013879302e-5,-4.9875550740711113e-8,-0.0019495587983859016,-4.425144642123595e-5,-4.973750799595954e-8,-0.0019491867583722598,-4.403481674939329e-5,-4.953408613857425e-8,-0.001948874170726926,-4.3773966244990976e-5,-4.928597425302703e-8,-0.0019486306854478142,-4.3496186610003896e-5,-4.901984567298104e-8,-0.0019484545808215287,-4.322941742227304e-5,-4.876319520040075e-8,-0.0019483342448092852,-4.299784164805793e-5,-4.853991498678627e-8,-0.0019482508367361243,-4.281882578092175e-5,-4.8367249272998265E-08,-0.0019481813406516451,-4.2701332047739913e-5,-4.8254265238426306e-8,-0.001948101431884755,-4.2645465612550796e-5,-4.820147285858156e-8,-0.0019479880023605153,-4.2642663695294445e-5,-4.820104258643957e-8,-0.0019478215084132696,-4.267621983914629e-5,-4.823725928348993e-8,-0.0019475884766814169,-4.2722120831818105e-5,-4.8287176766687065e-8,-0.001947284537476418,-4.2750605376743135e-5,-4.832193112023108e-8,-0.0019469179020162252,-4.272943149953421e-5,-4.830978464674593e-8,-0.001946512130701754,-4.2629987351193034e-5,-4.8222103668448865e-8,-0.0019461057920909896,-4.243645483759409e-5,-4.804249139879382e-8,-0.0019457459924259364,-4.2155871844775294e-5,-4.777688442978733e-8,-0.001945474433914433,-4.182357814670306e-5,-4.745909633402526e-8,-0.0019453099923769398,-4.149726260691403e-5,-4.7145127891331156e-8,-0.0019452376149965635,-4.123797713130104e-5,-4.689469161507122e-8,-0.0019452123501192205,-4.108646923628689e-5,-4.67481344270079e-8,-0.0019451775408544185,-4.104846697515171e-5,-4.671199913017461e-8,-0.001945086305653114,-4.10964890190002e-5,-4.67605464329462e-8,-0.00194491498170104,-4.118420798055841e-5,-4.6849415350206084e-8,-0.0019446649566739968,-4.1263439193324884e-5,-4.693190382853436e-8,-0.0019443564891179575,-4.129638690638195e-5,-4.6970831215838533e-8,-0.001944019871009889,-4.126124977537125e-5,-4.694416268183079e-8,-0.0019436874568431314,-4.115267744009283e-5,-4.6845757576426216e-8,-0.0019433878283089455,-4.097933082895468e-5,-4.668329117893592e-8,-0.0019431420227587768,-4.076018683375537e-5,-4.64748293924473e-8,-0.001942961425049852,-4.052037587530838e-5,-4.624478413720799e-8,-0.001942847090506267,-4.028693694379081e-5,-4.6019666043409794e-8,-0.001942790358890472,-4.008483999357206e-5,-4.5824064376144906e-8,-0.0019427745871054582,-3.9933607897037706e-5,-4.5677259981585586e-8,-0.0019427777616891982,-3.984486508728241e-5,-4.559083113158273e-8,-0.0019427755865315058,-3.982107608163827e-5,-4.556748866183424e-8,-0.0019427445679542873,-3.985544668643988e-5,-4.5601049016244416e-8,-0.0019426648249855798,-3.9932722126588916e-5,-4.5677213148583996e-8,-0.0019425225723483325,-4.003067731752825e-5,-4.577491057145826e-8,-0.00194231231186212,-4.0122223590998573e-5,-4.586815250812175e-8,-0.001942038840723702,-4.017825071467646e-5,-4.592859500544757e-8,-0.0019417189403766162,-4.017172995117602e-5,-4.592943591477745e-8,-0.0019413817963929902,-4.0083668653272205e-5,-4.5851299075569445e-8,-0.0019410663758636533,-3.9910612776753746e-5,-4.5689797651230024e-8,-0.0019408138567119492,-3.9671609827259084e-5,-4.546263553447091e-8,-0.0019406546006421536,-3.941021451110704e-5,-4.52117972507066e-8,-0.001940593319235403,-3.918608994782784e-5,-4.499543804327817e-8,-0.0019406012767298,-3.905498590278002e-5,-4.486832358067523e-8,-0.001940623920404477,-3.904542284858823e-5,-4.4859006867683975e-8,-0.0019406025544464632,-3.914639483061919e-5,-4.495769578301747e-8,-0.001940497520876102,-3.931411884703988e-5,-4.512260307194805e-8,-0.001940299698239888,-3.949212761192832e-5,-4.5299254342045724e-8,-0.0019400271696272137,-3.9631546521015266e-5,-4.5440050246729585e-8,-0.0019397134945464904,-3.970249901148748e-5,-4.55153769119164e-8,-0.0019393955892964717,-3.969592038203203e-5,-4.551557626730208e-8,-0.0019391053846128947,-3.961966037424788e-5,-4.544745102453445e-8,-0.0019388656601532564,-3.9492805816283906e-5,-4.532898685003671e-8,-0.0019386887618311728,-3.9340423201373115e-5,-4.518433473733331e-8,-0.0019385768153243493,-3.9189313030825355e-5,-4.5039624737876385e-8,-0.0019385226755074644,-3.9064588188579694e-5,-4.491950007652083e-8,-0.0019385113945777103,-3.89868350713039e-5,-4.4844233237342264e-8,-0.0019385222021650083,-3.8969763524809525e-5,-4.48273957066787e-8,-0.0019385310528990875,-3.9018436577778017e-5,-4.4874176736247263E-08,-0.001938513684450707,-3.912838732750907e-5,-4.498060099930697e-8,-0.0019384488723173468,-3.928589530112374e-5,-4.51338353807561e-8,-0.001938321483040145,-3.946943857740446e-5,-4.531354277085539e-8,-0.0019381250107120861,-3.965222629013153e-5,-4.5494184057548586e-8,-0.0019378633026130548,-3.9805684583894356e-5,-4.5648196322549064e-8,-0.0019375512317700392,-3.990367219926965e-5,-4.574992768613837e-8,-0.0019372141057675222,-3.9927275177831916e-5,-4.5780279834495175e-8,-0.0019368852732491004,-3.987006414845319e-5,-4.573198875575406e-8,-0.0019366009982821448,-3.9743041431457964e-5,-4.561474398462704e-8,-0.001936392008214114,-3.9577268369624826e-5,-4.545806912288991e-8,-0.0019362725887905185,-3.9421116423997146e-5,-4.530885190760244e-8,-0.0019362308367980837,-3.93293215936308e-5,-4.522070434461868e-8,-0.0019362265448863605,-3.934447117414749e-5,-4.5235796012735197e-8,-0.0019362021567699314,-3.947831204143984e-5,-4.5366449130396565e-8,-0.0019361044622756712,-3.9704499044345756e-5,-4.558787687093552e-8,-0.0019359055467726995,-3.9969038024905696e-5,-4.5848165191453386e-8,-0.001935610918476163,-4.0212436952495197e-5,-4.608967212085328e-8,-0.0019352522767100955,-4.0390248298052926e-5,-4.626892936144965e-8,-0.001934872343550989,-4.04826572347339e-5,-4.636602580928481e-8,-0.0019345110162189247,-4.0492973987788945e-5,-4.6383349171738214e-8,-0.0019341974042064007,-4.0440353373262014e-5,-4.633877244453355e-8,-0.00193394745527741,-4.035183976460438e-5,-4.6258113992407355e-8,-0.0019337648831009675,-4.025623586702828e-5,-4.6169223646382756e-8,-0.001933643297940725,-4.018010690860001e-5,-4.6098017218746215e-8,-0.0019335684391845415,-4.014524819687492e-5,-4.606588963420782e-8,-0.0019335202829593439,-4.016691288990378e-5,-4.608791074426844e-8,-0.001933475196842574,-4.025240778009302e-5,-4.617145854048994e-8,-0.0019334084174011334,-4.039999941699849e-5,-4.6315210257224784e-8,-0.0019332970460884604,-4.0598441631085976e-5,-4.6508730328468455e-8,-0.0019331234337040622,-4.0827636234276635e-5,-4.67330881859333e-8,-0.0019328784570221483,-4.1060782189105156e-5,-4.69628242270068e-8,-0.001932564016748744,-4.126806268614148e-5,-4.716934132885776e-8,-0.0019321940512386387,-4.14215942181376e-5,-4.732552837106896e-8,-0.001931793485630655,-4.1500945427768556e-5,-4.741103326315836e-8,-0.0019313948975945483,-4.149824340283206e-5,-4.741729676503009e-8,-0.0019310330346188518,-4.142188515293687e-5,-4.7351395895912765e-8,-0.0019307375352558293,-4.1297801414388954e-5,-4.723760067108958e-8,-0.0019305246932332914,-4.116693684145903e-5,-4.711522060800814e-8,-0.0019303901558369954,-4.107771840039374e-5,-4.7031429532281454e-8,-0.001930305702440573,-4.1073507327231025e-5,-4.70290097302363e-8,-0.001930223661133537,-4.117772149833033e-5,-4.71316652941459e-8,-0.0019300904151773313,-4.1382707713134946e-5,-4.733292449466249e-8,-0.0019298652063116251,-4.1649473063614e-5,-4.7595646288971316e-8,-0.0019295353407003367,-4.192078311450537e-5,-4.786461098057043e-8,-0.0019291195029987889,-4.214178037375372e-5,-4.8086494979264673e-8,-0.0019286581510240075,-4.227740391874418e-5,-4.822680388860586e-8,-0.0019281977027044515,-4.23190945630982e-5,-4.827648982478889e-8,-0.001927776949794641,-4.228093381957044e-5,-4.8248402386580654e-8,-0.0019274200721663662,-4.219051722902683e-5,-4.8168652620736966e-8,-0.001927135772707496,-4.20798850584923e-5,-4.8067954346620734e-8,-0.0019269198332215003,-4.197912027142969e-5,-4.797542280744417e-8,-0.0019267586318278405,-4.1912777277154615e-5,-4.7915023022203665e-8,-0.0019266323173630316,-4.189820026513446e-5,-4.7903834928403336e-8,-0.0019265173637764677,-4.194471819140883e-5,-4.795122144177823e-8,-0.0019263888011234276,-4.205308385953557e-5,-4.805829680961167e-8,-0.0019262225974915343,-4.221501646557592e-5,-4.821751718558146e-8,-0.0019259985568891125,-4.2413183674726635e-5,-4.8412658231367925e-8,-0.0019257037357562376,-4.262227688328076e-5,-4.861977364178274e-8,-0.0019253358507307667,-4.281183412618318e-5,-4.88097763412886e-8,-0.0019249056464002532,-4.295109158693287e-5,-4.895296804974039e-8,-0.00192443696510101,-4.3015405547280085e-5,-4.9025146674251664e-8,-0.001923963576351099,-4.299286159649854e-5,-4.901401418858055e-8,-0.0019235227456985294,-4.288907110417211e-5,-4.892397352513479e-8,-0.0019231466972611288,-4.2728295806226845e-5,-4.8777489495455956e-8,-0.0019228540148536525,-4.2549887097491935e-5,-4.861195243355361e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json new file mode 100644 index 000000000..771149a59 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_10.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":10000,"numberOfSamples":1000,"samples":[1.9197471616856318e-4,7.996600532056201e-6,-1.2597360486632112e-8,1.923979354906972e-4,8.059544161443208e-6,-1.2601754449986743e-8,1.9274745963100852e-4,8.18217092448731e-6,-1.2612185701149497e-8,1.9301410614298842e-4,8.328459694631899e-6,-1.2625220207854334e-8,1.9320200661086356e-4,8.46367290461882e-6,-1.263746635903232e-8,1.933256574311564e-4,8.557979990756902e-6,-1.264596926377846e-8,1.9340729897750835e-4,8.588749871695277e-6,-1.2648467217789009e-8,1.9347454382165973e-4,8.54234886551231e-6,-1.2643575641672086e-8,1.9355780445299317e-4,8.41580428718647e-6,-1.2630935191527253e-8,1.9368703586457032e-4,8.218144650907273e-6,-1.2611321617725655e-8,1.9388759494511673e-4,7.970728457914735e-6,-1.2586673932584885e-8,1.9417557384287807e-4,7.70570255454025e-6,-1.2559972916060515e-8,1.9455353413614596e-4,7.461994170668981e-6,-1.2534909842557773e-8,1.950079268750979e-4,7.278838435440244e-6,-1.2515320800328438e-8,1.9550946566497787e-4,7.1877009230743185e-6,-1.250443183656935e-8,1.9601716991058025e-4,7.204296880679899e-6,-1.2504049076168112e-8,1.964858622143666e-4,7.322751895738212e-6,-1.2513893072518937e-8,1.9687601817327312e-4,7.513719443070609e-6,-1.2531293180978063e-8,1.9716418145619786e-4,7.727807131336245e-6,-1.255143733487227e-8,1.9735148270881055e-4,7.904972006017888e-6,-1.256828984627858e-8,1.9746717430474582e-4,7.989189307001313e-6,-1.2576107854737417e-8,1.9756414464783983e-4,7.945391162788686e-6,-1.2571208909452543e-8,1.9770522673983343e-4,7.772936988045046e-6,-1.255336219063038e-8,1.9794335851555265e-4,7.508737590816236e-6,-1.2526112219574885e-8,1.9830340643788719e-4,7.216310774252375e-6,-1.2495704511570225e-8,1.9877444051722307e-4,6.9643475770128966e-6,-1.2468991956480241e-8,1.9931605492441463e-4,6.804754497374457e-6,-1.2451273955690413e-8,1.99874367496323e-4,6.7599548302468994e-6,-1.2444993679265321e-8,2.0039900027274713e-4,6.82270849799812e-6,-1.2449629419202722e-8,2.0085428305204736e-4,6.964723431631095e-6,-1.2462470630692901e-8,2.012230129828281e-4,7.147810040913146e-6,-1.2479705950981818e-8,2.015048844233702e-4,7.3331078822919305e-6,-1.2497376827881843e-8,2.0171260728942556e-4,7.4869143007848404e-6,-1.2512018298014086e-8,2.0186784837753266e-4,7.583663846056725e-6,-1.2521002574264202e-8,2.0199788115223623e-4,7.6072954724533325e-6,-1.252268798054521e-8,2.0213287762151582e-4,7.552075776678594e-6,-1.25164799413586e-8,2.023032713093168e-4,7.423389313956485e-6,-1.250287524528341e-8,2.025365492604393e-4,7.238354929979809e-6,-1.2483501654253962e-8,2.0285312487000682e-4,7.025543178481034e-6,-1.2461102098633864e-8,2.032615548180566e-4,6.822697696785637e-6,-1.2439358398961576e-8,2.037542292355152e-4,6.671464949679808e-6,-1.2422433892723618e-8,2.043054648544205e-4,6.609017340781519e-6,-1.241418367286807e-8,2.0487402079284614e-4,6.658061470286973e-6,-1.2417141084804209e-8,2.0541091916908847e-4,6.8183286453880834e-6,-1.2431576848491557e-8,2.0587131297464264e-4,7.063148440915905e-6,-1.2455025250029365e-8,2.0622704282800456e-4,7.343452105811302e-6,-1.2482583077772363e-8,2.064756840198449e-4,7.598950788494315e-6,-1.2508013979414962e-8,2.0664282168786132e-4,7.773572333271332e-6,-1.2525372054527937e-8,2.0677643799377142e-4,7.830732911241555e-6,-1.2530654293509096e-8,2.069346139971509e-4,7.763969732585166e-6,-1.252297208136234e-8,2.0716968071363143e-4,7.599507240572051e-6,-1.2504868071919612e-8,2.075133831394106e-4,7.389324388835024e-6,-1.2481637303243253e-8,2.079680047158014e-4,7.196295440443784e-6,-1.2459822238997104e-8,2.0850678511286473e-4,7.076223630712314e-6,-1.2445361216516968e-8,2.09083353603553e-4,7.063208010991012e-6,-1.2442027977015235e-8,2.0964607359171694e-4,7.163288146015455e-6,-1.245068068918884e-8,2.1015153998119444e-4,7.357300167494584e-6,-1.2469466055778998e-8,2.105729208467013e-4,7.6098914082299795e-6,-1.2494715588623496e-8,2.1090206952705673e-4,7.880059152858419e-6,-1.2522068534104855e-8,2.1114705135521922e-4,8.129688725332927e-6,-1.2547426277362978e-8,2.11327623932954e-4,8.328785948689606e-6,-1.2567558359396523e-8,2.1147063027153733e-4,8.45781981905388e-6,-1.2580371063842255e-8,2.116062170779773e-4,8.508318739735103e-6,-1.2584953522756101e-8,2.1176489219544155e-4,8.482821664273282e-6,-1.2581533889456395e-8,2.1197487908306462e-4,8.394780190546323e-6,-1.2571439050506965e-8,2.1225908578335732e-4,8.268336110121104e-6,-1.2557075378613995e-8,2.1263125815806694e-4,8.137282943263268e-6,-1.2541867403695375e-8,2.1309149641396343e-4,8.042041677157666e-6,-1.2530015745409708e-8,2.1362232923984473e-4,8.023413973770414e-6,-1.2525906367685887e-8,2.141877185477536e-4,8.112834049185048e-6,-1.2533095524318957e-8,2.1473774581068903e-4,8.3210914871919e-6,-1.2553050116063849e-8,2.1522011129794914e-4,8.630080126066386e-6,-1.2584142235542132e-8,2.1559591766686086e-4,8.992908412392393e-6,-1.2621531987775295e-8,2.1585357677476676e-4,9.344915051726786e-6,-1.2658284937238318e-8,2.1601416666211921e-4,9.622593263837225e-6,-1.2687427039128446e-8,2.1612534488552648e-4,9.78287653756447e-6,-1.2704087855205246e-8,2.1624652249650514e-4,9.81514982519467e-6,-1.2706860844017089e-8,2.1643148366610137e-4,9.742398905621779e-6,-1.2697982257149455e-8,2.1671439125053968e-4,9.612686075077394e-6,-1.2682472194826136e-8,2.1710262618754617e-4,9.484942883597433e-6,-1.2666663487275253e-8,2.1757724992220657e-4,9.413689438536168e-6,-1.2656583095773519e-8,2.180998881122663e-4,9.436636301726828e-6,-1.2656579120301334e-8,2.1862349866680082e-4,9.567821662343242e-6,-1.2668481926430359e-8,2.1910382506955763e-4,9.797254291937394e-6,-1.2691451235088495e-8,2.1950852180187367e-4,1.0096209406878957e-5,-1.2722473686840802e-8,2.1982203208259762e-4,1.0425814221374339e-5,-1.2757289563240955e-8,2.2004593990235762e-4,1.0746017377170483e-5,-1.279141904043139e-8,2.2019594725035345e-4,1.1022697089033848e-5,-1.2821004358988786e-8,2.2029723714439854e-4,1.1231954282858246e-5,-1.284332207805951e-8,2.2037976133546005e-4,1.1361792925413278e-5,-1.285697045584737e-8,2.204743050715671e-4,1.1412058566647195e-5,-1.2861837839761607e-8,2.2060942735678435e-4,1.139360836886871e-5,-1.2858986747465736e-8,2.2080886496210573e-4,1.1327297175898568e-5,-1.2850546480647196e-8,2.2108883199633075e-4,1.1242779422350658e-5,-1.2839626876663463e-8,2.2145479727229533e-4,1.117656313941561e-5,-1.2830179748791994e-8,2.218978524119614e-4,1.1168241380550244e-5,-1.2826654765479383e-8,2.223918274118358e-4,1.125368271022084e-5,-1.2833271066266854e-8,2.2289360923823234e-4,1.1454892795233024e-5,-1.2852838922138324e-8,2.2334970247736352e-4,1.1768728623398749e-5,-1.288537714386462e-8,2.2371036423718345e-4,1.2159917386077626e-5,-1.2927189221052759e-8,2.2394786325905398e-4,1.2565129918165497e-5,-1.2971236046903973e-8,2.2407012789687003e-4,1.2910776320851335e-5,-1.3009149058543156e-8,2.2412080512659326e-4,1.3138423398335554e-5,-1.3034156281509835e-8,2.2416403518024246e-4,1.3225258584550226e-5,-1.3043432270151873e-8,2.242617193073924e-4,1.31895428771349e-5,-1.303873108036752e-8,2.244545122747121e-4,1.3080514119203897e-5,-1.302529805681681e-8,2.247533541484739e-4,1.2960154137190002e-5,-1.3009918312410972e-8,2.2514149681588606e-4,1.288542370013457e-5,-1.2999015386017868e-8,2.2558304221404233e-4,1.2896057941767493e-5,-1.2997297157850649e-8,2.2603369392279116e-4,1.3009117176953077e-5,-1.3007061790201875e-8,2.264507770082446e-4,1.3219243737167519e-5,-1.3028087674737915e-8,2.2680097981678127e-4,1.3502917845584759e-5,-1.3057987443448877e-8,2.2706512925085745e-4,1.3825112165154655e-5,-1.3092899943215674e-8,2.2723980182644377e-4,1.4146844760246526e-5,-1.312835960370297e-8,2.2733606659061404e-4,1.4432176615984899e-5,-1.316015072754668e-8,2.2737613010144923e-4,1.4653552288310205e-5,-1.3184975709050629e-8,2.2738889061095103e-4,1.4794967275872633e-5,-1.3200846957566375e-8,2.2740539458427508e-4,1.485298630857986e-5,-1.3207200828708261e-8,2.2745491914188558e-4,1.48361020505556e-5,-1.3204810600297655e-8,2.2756189301271438e-4,1.4763163136429955e-5,-1.3195611648549548e-8,2.2774342945347363e-4,1.4661392768367974e-5,-1.318251654013457e-8,2.2800711646406744e-4,1.4564073938727435e-5,-1.3169225227622847e-8,2.2834878588194946e-4,1.4507553748530596e-5,-1.3159958692847593e-8,2.287503519544513e-4,1.4526782542924386e-5,-1.3158983635572145e-8,2.2917872878590236e-4,1.4648464790645952e-5,-1.3169782666393387e-8,2.2958798770619958e-4,1.4881779191418465e-5,-1.3193861131791164e-8,2.2992738155013117e-4,1.5208892056563145e-5,-1.3229487616666131e-8,2.3015629354228862e-4,1.5580637661667213e-5,-1.3271075564489491e-8,2.3026234150305317e-4,1.5924292688085457e-5,-1.331008459441756e-8,2.3027280889853033e-4,1.6165999528322054e-5,-1.3337725131374554e-8,2.3024916735463958e-4,1.6259694822258185e-5,-1.3348408049319169e-8,2.3026415545918469e-4,1.6206222473384533e-5,-1.334196191813377e-8,2.303737207873722e-4,1.6050930760160185e-5,-1.3323325049974134e-8,2.3059936656605264e-4,1.586282236461781e-5,-1.3300188674521488e-8,2.309273397309413e-4,1.5709080036263402e-5,-1.328019137069129e-8,2.3131987266427655e-4,1.5637160807724585e-5,-1.3268952807786755e-8,2.3172978464227394e-4,1.5668110115491378e-5,-1.3269276372437528e-8,2.3211253167230013e-4,1.579838872190477e-5,-1.3281222326984168e-8,2.3243381968418038e-4,1.6005968044664794e-5,-1.3302645758738719e-8,2.326732628860945e-4,1.6257565449448583e-5,-1.3329918467555854e-8,2.3282524674238283e-4,1.651551762610959e-5,-1.3358697686405669e-8,2.3289788056306504e-4,1.674381866600482e-5,-1.3384673664069943e-8,2.3291052997145164e-4,1.6913063406322665e-5,-1.3404220672953126e-8,2.3289032072172143e-4,1.700401500413197e-5,-1.3414875180816028e-8,2.3286803858424185e-4,1.7009620439693355e-5,-1.3415595856352999e-8,2.328739025738482e-4,1.6935397883075238e-5,-1.3406804390503862e-8,2.3293373693946084e-4,1.6798289595216762e-5,-1.3390246403408823e-8,2.3306590757557672e-4,1.6624355851294292e-5,-1.3368746419574027e-8,2.3327907598190837e-4,1.6445739810291813e-5,-1.334591547674048e-8,2.3357067709120252e-4,1.6297106752196225e-5,-1.3325815392409889e-8,2.3392604926032666e-4,1.621152078481189e-5,-1.3312532903507163e-8,2.3431832644508823e-4,1.6215461539974096e-5,-1.3309583151627188e-8,2.3470981296471905e-4,1.6322593851986297e-5,-1.3319074542987742e-8,2.350563586266793e-4,1.6526652827706943e-5,-1.3340700335972787e-8,2.3531635632917516e-4,1.6795606538324656e-5,-1.3370882993466678e-8,2.3546449597391608e-4,1.7071515543042718e-5,-1.3402687449686616e-8,2.3550651143611578e-4,1.7281479296035646e-5,-1.3427194538859864e-8,2.354860662292638e-4,1.736119067195648e-5,-1.3436455207389577e-8,2.354745423562714e-4,1.7282664410910297e-5,-1.3426879119078932e-8,2.3554413988636483e-4,1.7069422488256228e-5,-1.340100684306105e-8,2.3573843359821594e-4,1.678735137254538e-5,-1.3366380140959267e-8,2.3605794175604995e-4,1.6516440745440828e-5,-1.333226482032832e-8,2.364666128436858e-4,1.6321330128306323e-5,-1.3306309980540544e-8,2.369106704107837e-4,1.6235316784717564e-5,-1.329272307712745e-8,2.373372411284009e-4,1.6259841608278305e-5,-1.3292124623119489e-8,2.3770594596677692e-4,1.6372931299750227e-5,-1.3302373390412671e-8,2.37993246071328e-4,1.6539681380754335e-5,-1.3319651568231e-8,2.3819211939730327e-4,1.6721074059761234e-5,-1.3339438365960858e-8,2.3830961030271236e-4,1.6880231173799742e-5,-1.335727306140373e-8,2.3836375681855868e-4,1.6986636247061285e-5,-1.3369334013755532e-8,2.3838035533166568e-4,1.701905501777484e-5,-1.33728675782703e-8,2.383895323005555e-4,1.6967478698558967e-5,-1.3366467989198284e-8,2.38422070556946e-4,1.6834089647268072e-5,-1.3350197399653409e-8,2.3850556570700744e-4,1.6633066038275236e-5,-1.3325545739040455e-8,2.3866072662191243e-4,1.6388979589520194e-5,-1.32952356240298e-8,2.3889832942241776e-4,1.613376763873816e-5,-1.3262897145540119e-8,2.3921726251748584e-4,1.5902571416136462e-5,-1.3232645062727092e-8,2.3960391772207974e-4,1.5728837101970084e-5,-1.3208572512056224e-8,2.4003306897066437e-4,1.5639090729009958e-5,-1.3194159292205045e-8,2.4047031694471747e-4,1.5647770280759835e-5,-1.3191601366742145e-8,2.408763192909911e-4,1.5752441997243236e-5,-1.320109658813078e-8,2.4121332685415593e-4,1.593012198481269e-5,-1.3220221033409507e-8,2.414543324312317e-4,1.6136500786482835e-5,-1.3243695130072412e-8,2.4159379503856346e-4,1.631092961927605e-5,-1.3263965868818756e-8,2.416563493402631e-4,1.6389819439386743e-5,-1.327294423034196e-8,2.416971351728686e-4,1.6327839253466488e-5,-1.3264745691624821e-8,2.4178793488179986e-4,1.611933231700696e-5,-1.323839068662466e-8,2.4199092390150611e-4,1.580664719687679e-5,-1.3198809867441091e-8,2.4233282522947923e-4,1.546635588883893e-5,-1.315515486800695e-8,2.42795161206397e-4,1.5179028049018296e-5,-1.3117189496490207e-8,2.4332560646111933e-4,1.5000197877739287e-5,-1.3091844309906427e-8,2.4386095630435782e-4,1.494730909943296e-5,-1.3081612462610715e-8,2.443476230301867e-4,1.5004081626133282e-5,-1.3084945993000656e-8,2.447521154769013e-4,1.513382584235183e-5,-1.3097713318885834e-8,2.4506227529865664e-4,1.529290726155764e-5,-1.3114741963102495e-8,2.4528352222681816e-4,1.5440210476210758e-5,-1.3130971246521739e-8,2.454337577216843e-4,1.554235342838633e-5,-1.3142157207141877e-8,2.4553879145722154e-4,1.5576059836117717e-5,-1.3145250706278301e-8,2.456286535961741e-4,1.5529165859651303e-5,-1.313858102750454e-8,2.4573440156436537e-4,1.5401067537156352e-5,-1.312192399297445e-8,2.4588495016140917e-4,1.5202739157127264e-5,-1.3096479904399723e-8,2.4610367254958987e-4,1.4956012999883382e-5,-1.3064759078539774e-8,2.4640490122437197e-4,1.4691580503364029e-5,-1.3030343464314749e-8,2.467909300514352e-4,1.444531172938255e-5,-1.299749108332309e-8,2.472503716788958e-4,1.4252978327617077e-5,-1.2970574858005676e-8,2.4775861981413225e-4,1.4143991993889015e-5,-1.2953383025503955e-8,2.482808292580495e-4,1.4135196216785739e-5,-1.2948356913590524e-8,2.4877732410946555e-4,1.4225995061342692e-5,-1.295589775406787e-8,2.492108317402965e-4,1.439598151292376e-5,-1.297390984283666e-8,2.495546496005041e-4,1.4605934664835293e-5,-1.2997753852338253e-8,2.4980058126312243e-4,1.4802976706468473e-5,-1.3020791083393111e-8,2.499648122532091e-4,1.4930522578149964e-5,-1.3035648974352602e-8,2.500889719183307e-4,1.4942625206491755e-5,-1.3036141981384923e-8,2.502332948927713e-4,1.4819937637970325e-5,-1.301942657528763e-8,2.5046053996871437e-4,1.458121681939785e-5,-1.2987549154608683e-8,2.508142835955966e-4,1.4282610184457833e-5,-1.294739872783118e-8,2.513011655620707e-4,1.4000896174505066e-5,-1.2908626141535389e-8,2.5188749805877945e-4,1.3806467779425598e-5,-1.288027326783674e-8,2.5251290861910285e-4,1.3739666020847875e-5,-1.286777210466249e-8,2.531129543478528e-4,1.3801980509944972e-5,-1.2871727408598455e-8,2.5363851477171943e-4,1.3963248403024858e-5,-1.288867324663838e-8,2.5406475771490327e-4,1.4177059797621997e-5,-1.2912910633960826e-8,2.543902585935145e-4,1.4395467555977205e-5,-1.2938351134914312e-8,2.5463093937902145e-4,1.457846819591566e-5,-1.295977796036463e-8,2.54813136638039e-4,1.4698160028561238e-5,-1.2973461632588474e-8,2.54967981581639e-4,1.4739503755468211e-5,-1.2977324579518188e-8,2.551274405562864e-4,1.4699654562096109e-5,-1.2970877284779953e-8,2.5532142348084824e-4,1.4587027197628657e-5,-1.2955077061468487e-8,2.5557518672666003e-4,1.4420380583572636e-5,-1.2932175481281603e-8,2.5590650103593743e-4,1.4227567224019883e-5,-1.2905548350362233e-8,2.5632253366152845e-4,1.4043212860365394e-5,-1.287943866108471e-8,2.568170361656435e-4,1.3904585536052271e-5,-1.285851192094646e-8,2.5736901125437294e-4,1.384542362248093e-5,-1.2847155402873307e-8,2.5794421239109947e-4,1.388843946076878e-5,-1.2848556465930347e-8,2.5850035030317047e-4,1.403829277109537e-5,-1.2863749847957166e-8,2.589956924459188e-4,1.4277505943607658e-5,-1.2890953907157057e-8,2.5939924357184515e-4,1.4567459494134127e-5,-1.2925525776831505e-8,2.596996993209261e-4,1.4855178454192225e-5,-1.2960705554380696e-8,2.5991041763439313e-4,1.5084813281586183e-5,-1.2989066766874659e-8,2.6006856585053105e-4,1.5211326349834672e-5,-1.3004361087109885e-8,2.602278725687631e-4,1.5213126500508729e-5,-1.3003294012197764e-8,2.6044583194747623e-4,1.5100107540589441e-5,-1.2986715711409487e-8,2.607678954750293e-4,1.4913817381501574e-5,-1.2959760458590743e-8,2.6121309337834975e-4,1.471789554231206e-5,-1.2930675613196354e-8,2.617666739936158e-4,1.4580147819581488e-5,-1.2908507750034461e-8,2.623838952785086e-4,1.4551998820653167e-5,-1.2900372867353652e-8,2.6300436611455946e-4,1.465364176688067e-5,-1.2909389577639032e-8,2.6357084573760297e-4,1.4871017273617807e-5,-1.293411963262422e-8,2.640443869669923e-4,1.5164543154651873e-5,-1.2969586613798102e-8,2.64410737769705e-4,1.548385098723045e-5,-1.3009177614068972e-8,2.6467821443590807e-4,1.5781554620764703e-5,-1.304650817055167e-8,2.648707916531887e-4,1.602193715049497e-5,-1.3076659266674922e-8,2.650204220774552e-4,1.6184189121099728e-5,-1.309668323525758e-8,0.00026516090400317593,1.626199634794566e-5,-1.3105583832666333e-8,2.653238016446657e-4,1.626157432670227e-5,-1.3104045518856175e-8,2.6553584872296177e-4,1.619953400725645e-5,-1.3094120073806924e-8,2.6581694404772865e-4,1.6101034287601604e-5,-1.3078966785871532e-8,2.6617803512994057e-4,1.599792643257314e-5,-1.3062635061321467e-8,2.666186743112128e-4,1.5926127147520803e-5,-1.3049789195619948e-8,2.671247177812508e-4,1.5921303481340893e-5,-1.3045222202262528e-8,2.6766743265218185e-4,1.6012313493671894e-5,-1.3053032308258361e-8,2.682058449019524e-4,1.6212993883764293e-5,-1.3075494404843321e-8,2.6869381754198406e-4,1.6514662380160417e-5,-1.3111934310112453e-8,2.690915392547794e-4,1.688312459406304e-5,-1.3158158531168263e-8,2.693782808806831e-4,1.726356887424719e-5,-1.3206971608799833e-8,2.695612194819721e-4,1.7593764377538284e-5,-1.3249899145305468e-8,2.696757969225932e-4,1.7821710710339604e-5,-1.3279603194733367e-8,2.697766262792751e-4,1.7921174890309415e-5,-1.3292069257397106e-8,2.699221571586634e-4,1.7899381168918985e-5,-1.3287759748585721e-8,2.701585140051222e-4,1.7794662659770487e-5,-1.3271427248333769e-8,2.7050743193193414e-4,1.7665574219650932e-5,-1.3250774476406711e-8,2.70961263500747e-4,1.7575149467220522e-5,-1.3234415117476824e-8,2.714859046544607e-4,1.7574737909080554e-5,-1.3229680863399421e-8,2.7203052331977687e-4,1.769170100835547e-5,-1.324083414757745e-8,2.7254117585821244e-4,1.7924189075479015e-5,-1.3268167506586092e-8,2.729741997691505e-4,1.8244128847031433e-5,-1.3308232751599827e-8,2.733054105239225e-4,1.860683481743521e-5,-1.335506308671976e-8,2.7353289682521516e-4,1.896345349760831e-5,-1.3401893664246537E-08,2.73673842637392e-4,1.9271996265799993e-5,-1.3442759869942829e-8,2.737578282615282e-4,1.9504213337008058e-5,-1.3473535503050086e-8,2.738194967147241e-4,1.9647848480923535e-5,-1.3492301040760689e-8,2.7389256852830313e-4,1.9705491001702175e-5,-1.3499197079042159e-8,2.740058704701865e-4,1.9691777654711647e-5,-1.3496023246278775e-8,2.741810262902575e-4,1.9630334079578346e-5,-1.3485807494797274e-8,2.744310131178127e-4,1.9551058078948304e-5,-1.347245824705066e-8,2.747588655876082e-4,1.948759434125028e-5,-1.3460484076347776e-8,2.7515620852405575e-4,1.9474357175009086e-5,-1.3454669802832967e-8,2.7560192124283077e-4,1.954221941430565e-5,-1.3459536895858992e-8,2.760620815654129e-4,1.9712188518429024e-5,-1.3478446229307413e-8,2.764931140341487e-4,1.998747860898367e-5,-1.3512381587099931e-8,2.768499825458415e-4,2.0346447047745347e-5,-1.3558791588758346e-8,2.7709934818909317e-4,2.0740975236487897e-5,-1.3611211001438215e-8,2.7723376707050325e-4,2.1104902391710272e-5,-1.3660381144345922e-8,2.7727951721184677e-4,2.1372977512600064e-5,-1.3696942301516698e-8,2.7729156569639065e-4,2.150364337470411e-5,-1.371469511192883e-8,2.7733590146886866e-4,2.1494482605572527e-5,-1.3712813986364758e-8,2.7746730910535865e-4,2.1382407878183956e-5,-1.3695935779833347e-8,2.777129170467314e-4,2.1229571564400812e-5,-1.3672319050985458e-8,2.7806720281447627e-4,2.1102980963536406e-5,-1.3651166775522754e-8,2.7849753778370835e-4,2.105639774177976e-5,-1.3640203101975407e-8,2.7895571606205595e-4,2.1119312740397868e-5,-1.36440855384151e-8,2.7939082054513723e-4,2.129380639205303e-5,-1.3663777942921247e-8,2.797602560487331e-4,2.155785003144518e-5,-1.3696778046641539e-8,2.8003725820557e-4,2.1872858482824725e-5,-1.3738005196123418e-8,2.802142004107094e-4,2.219328394309847e-5,-1.3781099702460829e-8,2.8030175709160225e-4,2.2476143948988695e-5,-1.381982555271776e-8,2.8032472939190016e-4,2.268859947612066e-5,-1.3849251125167231e-8,2.803159812312574e-4,2.2812371570131774e-5,-1.386647093141835e-8,2.803101183459111e-4,2.2844791364820303e-5,-1.387080182051307e-8,2.8033821087907477e-4,2.2797146171930603e-5,-1.3863552789390385e-8,2.8042420340903043e-4,2.2691458727297488e-5,-1.3847561307081722e-8,2.8058292600206835e-4,2.2556824850266946e-5,-1.3826691726476474e-8,2.8081916298474405e-4,2.2425953925453616e-5,-1.3805403994071266e-8,2.8112721903985157e-4,2.2331951025042324e-5,-1.3788383591687185e-8,2.8149066344888076e-4,2.2304951530066296e-5,-1.3780134438421739e-8,2.8188238547674434e-4,2.2367947560152177e-5,-1.3784386060479597e-8,2.822658721965546e-4,2.2531246589409013e-5,-1.380320444288144e-8,2.8259936195518845e-4,2.278597036190299e-5,-1.38358812243578e-8,2.828444569445365e-4,2.3098866508920356e-5,-1.3877999412904191e-8,2.82979105364523e-4,2.341279564136978e-5,-1.3921401485040897e-8,2.8301103748081484e-4,2.3657751771110462e-5,-1.3955814384309308e-8,2.8298340770177647e-4,2.37731328817469e-5,-1.3972176264270338e-8,2.8296484207766603e-4,2.3733029889624773e-5,-1.3966353021702428e-8,2.830249037760498e-4,2.3559828091315065e-5,-1.3941085550751729e-8,2.832073180871705e-4,2.331632681640619e-5,-1.3904875495648811e-8,2.8351576155621184e-4,2.308077284889224e-5,-1.3868553787955135e-8,2.8391769853862014e-4,2.2919547763551398e-5,-1.384157822144315e-8,2.8436019434869387e-4,2.287017449835268e-5,-1.3829694080640847e-8,2.847876469600927e-4,2.2937814065198065e-5,-1.3834319348602738e-8,2.8515485284144533e-4,2.3101223801610495e-5,-1.3853146215244e-8,2.85433793371567e-4,2.332264590269975e-5,-1.3881308460203237e-8,2.856153143340677e-4,2.3557815709961442e-5,-1.3912679492992264e-8,2.857074693224336e-4,2.3764383273789843e-5,-1.3941085356826256e-8,2.8573186713930584e-4,2.390828726211465e-5,-1.3961325891680267e-8,2.857188696819171e-4,2.39679560926046e-5,-1.3969911360196299e-8,2.8570231452007376e-4,2.3936257400670855e-5,-1.3965439487283113e-8,2.857144182944666e-4,2.382028199606721e-5,-1.394860030825303e-8,2.8578147687363805e-4,2.3639260037550102e-5,-1.3921869960500952e-8,2.8592084201393037e-4,2.342114432945347e-5,-1.3889012634409748e-8,2.8613931356911184e-4,2.3198585473751224e-5,-1.3854531958188717e-8,2.864327166543551e-4,2.3004883616430312e-5,-1.3823159470958645e-8,2.867863494363946e-4,2.2870125806672398e-5,-1.3799380523453057e-8,2.8717609388622425e-4,2.2817452101605205e-5,-1.378693317459741e-8,2.8757018441867614e-4,2.2859200077940465e-5,-1.378819562942302e-8,2.8793216925267906e-4,2.2992674449651844e-5,-1.3803413833910311e-8,2.8822619040308e-4,2.3196048522297792e-5,-1.3829891060439484e-8,2.8842548394305867e-4,2.3426397377221117e-5,-1.386152544402009e-8,2.885234854253173e-4,2.362330839766609e-5,-1.3889296541301406e-8,2.885438986592403e-4,2.3721722641275258e-5,-1.3903263102308176e-8,2.885424114376653e-4,2.3674183477913317e-5,-1.3896003696172715e-8,2.885929118709168e-4,2.3474313471584593e-5,-1.3866152311867126e-8,2.8875979009874574e-4,2.316637368653028e-5,-1.3819777847051538e-8,2.890704395776163e-4,2.283074746827438e-5,-1.3768264842029872e-8,2.895049885128943e-4,2.2551813469805068e-5,-1.3723757443181604e-8,2.900082669629545e-4,2.2387357101861408e-5,-1.3694865214262721e-8,2.9051374253208817e-4,2.235489612947439e-5,-1.36846867449533e-8,2.909649021340734e-4,2.2436103025525936e-5,-1.3691271872221072e-8,2.9132650488845045e-4,2.2590621258034392e-5,-1.3709370985045623e-8,2.9158637691061105e-4,2.2770429252790272e-5,-1.3732329579321405e-8,2.917517969683068e-4,2.2930448877807925e-5,-1.3753577653967498e-8,2.9184401188628566e-4,2.303489006955536e-5,-1.3767628184703838e-8,2.918927671925494e-4,2.3060445344766418e-5,-1.3770682898745772e-8,2.919314014291164e-4,2.299749274559909e-5,-1.3760937852867262e-8,2.9199247847638013e-4,2.2849926468667013e-5,-1.3738629102849638e-8,2.921039092862608e-4,2.2633834466347406e-5,-1.370584503210565e-8,2.92285666948327e-4,2.2375057960451114e-5,-1.3666144851793793e-8,2.925473850976914e-4,2.2105676829510934e-5,-1.3624037426111123e-8,2.9288716836903646e-4,2.185972836237773e-5,-1.3584395520403735e-8,2.93291734444017e-4,2.1668667070356885e-5,-1.355186975838904e-8,2.937378250344291e-4,2.1556973898122735e-5,-1.3530315087571015e-8,2.941947974500097e-4,2.1538210800188506e-5,-1.3522214675142932e-8,2.9462828965697827e-4,2.161178421989162e-5,-1.3528102494893166e-8,2.950049836659742e-4,2.176062612107966e-5,-1.3546028771640402e-8,2.9529877895283186e-4,2.1950341406551685e-5,-1.3571220417731373e-8,2.95498425036084e-4,2.2131299035723218e-5,-1.3596256341667975e-8,2.956153580837951e-4,2.22458472466366e-5,-1.361215968484941e-8,2.9568840667843486e-4,2.224225736534045e-5,-1.3610641296881544e-8,2.957800686939963e-4,2.2093977823393965e-5,-1.3587181550703598e-8,2.9595999348482825e-4,2.181678085271199e-5,-1.3543713834794471e-8,2.9627849161117025e-4,2.1471574018712877e-5,-1.3489060449153417e-8,2.9674319322068856e-4,2.1145294614123724e-5,-1.343609251827474e-8,2.9731425733706953e-4,2.09172161107864e-5,-1.3396774613550436e-8,2.9792187015270356e-4,2.082994835974585e-5,-1.3377886272534408e-8,2.984942122206886e-4,2.0880413673918396e-5,-1.3379586077781747e-8,2.989796522647844e-4,2.1030612573302552e-5,-1.3396809617098212e-8,2.993552928593664e-4,2.1226817991504233e-5,-1.3421929704689853e-8,2.9962420917402626e-4,2.141632957853267e-5,-1.3447160232838052e-8,2.998076048709863e-4,2.155742331817498e-5,-1.3466074608348756e-8,2.999366508951447e-4,2.162322261659597e-5,-1.3474303011588651e-8,3.0004605342871587e-4,2.160194083120627e-5,-1.3469704117491014e-8,3.001694758979349e-4,2.1495566477339442e-5,-1.3452259987949643e-8,3.003361714790454e-4,2.131801033581268e-5,-1.34238210598226e-8,3.00568250260884e-4,2.109291783629834e-5,-1.3387751649168571e-8,3.0087835205456256e-4,2.0850953582104578e-5,-1.3348491679679161e-8,3.012678716217725e-4,2.062624812724149e-5,-1.3311032550608233e-8,3.0172620046434173e-4,2.045193589878053e-5,-1.3280308792564854e-8,3.0223147737772435e-4,2.0355180263715515e-5,-1.3260534503027968e-8,3.027530905670879e-4,2.03523675046193e-5,-1.3254528922034592e-8,3.0325589739471393e-4,2.0445234386801097e-5,-1.326309141038214e-8,3.0370584098537583e-4,2.061873537337817e-5,-1.3284535301274032e-8,3.0407635475241393e-4,2.084132023298335e-5,-1.3314523112149486e-8,3.043548220950259e-4,2.106807932262644e-5,-1.334635951759101e-8,3.0454817712909907e-4,2.1247259597402573e-5,-1.337190847136496e-8,3.0468606841306306e-4,2.1330590886984806e-5,-1.338324729373875e-8,3.048190993710789e-4,2.1286814653441683e-5,-1.337492842426596e-8,3.0500947292813136e-4,2.1115405047104646e-5,-1.3346293728374482e-8,3.0531334240780847e-4,2.0854333144826318e-5,-1.330280661991811e-8,3.0575933228971686e-4,2.057446009779354e-5,-1.3255246543245369e-8,3.063336126043048e-4,2.035786012500672e-5,-1.3216390908366007e-8,3.0698195437051866e-4,2.0267933422058764e-5,-1.3196404367399528e-8,3.076297906607286e-4,2.0326989761099988e-5,-1.3199302777510673e-8,3.0820929098613465e-4,2.051301152374637e-5,-1.3222284594361782e-8,3.086790667643346e-4,2.0774250916837253e-5,-1.3257795354211066e-8,3.0902959140693113e-4,2.1050411845724763e-5,-1.3296685507824527e-8,3.0927719251130383e-4,2.1289582840270976e-5,-1.3330825505471842e-8,3.0945357058928e-4,2.145674944124067e-5,-1.33545105445674e-8,3.095961699201846e-4,2.153531284308726e-5,-1.3364818313685573e-8,3.0974146708267824e-4,2.152488868920895e-5,-1.3361368767381744e-8,3.0992097203242546e-4,2.1438017800151246e-5,-1.3345858365688848e-8,3.1015887202686857e-4,2.1297039816659653e-5,-1.3321563576426557e-8,3.1047036154725256e-4,2.1131275414374563e-5,-1.3292871575557973e-8,3.1086020309551777e-4,2.0974113615666323e-5,-1.3264820449894448e-8,0.00031132159469673937,2.0859458460963544e-5,-1.3242589706398116e-8,3.118358892299663e-4,2.08172018406579e-5,-1.3230876462418405e-8,3.123739556176808e-4,2.0867961619606607e-5,-1.3233145002595053e-8,3.1289980273878425e-4,2.1017999708571363e-5,-1.3250835029635484e-8,3.133765322075633e-4,2.1255710514705023e-5,-1.3282711917019378e-8,3.1377389441996034e-4,2.1551170659549085e-5,-1.332461455740315e-8,3.1407592571305155e-4,2.1859774047728385e-5,-1.3369828669154369e-8,3.1428671803730246e-4,2.212997996013805e-5,-1.3410177045357869e-8,3.14432506824964e-4,2.2314131680739853e-5,-1.3437721540724634e-8,3.1455876362506394e-4,2.2380463429616143e-5,-1.3446783871977407e-8,3.1472170043465105e-4,2.2323641852085563e-5,-1.3435813847370838e-8,3.1497476110345693e-4,2.217044112756572e-5,-1.3408494160108003e-8,3.153526234579617e-4,2.1976994096751363e-5,-1.337345682081832e-8,3.1585774444304715e-4,2.1815602165497123e-5,-1.3342262745022897e-8,3.1645594131746787e-4,2.1753230588716412e-5,-1.332596859353312e-8,3.170852855440563e-4,2.1829339986754936e-5,-1.3331486306519194e-8,3.1767609064744373e-4,2.204329336795916e-5,-1.335938578246327e-8,3.1817307131503856e-4,2.2357437282565592e-5,-1.3404182809004631e-8,3.185496252597622e-4,2.2713150253212193e-5,-1.3456770258106373e-8,3.188097318692035e-4,2.305068096859074e-5,-1.350756753269062e-8,3.1898017607109944e-4,2.3324049974074164e-5,-1.3548973772346303e-8,3.1909924742474843e-4,2.3507561072834535e-5,-1.3576520061523686e-8,3.192068961684871e-4,2.359541331330978e-5,-1.3588911123510958e-8,3.1933831976116504e-4,2.3597783076813762e-5,-1.358746123971623e-8,3.1952065880791903e-4,2.3536160980096142e-5,-1.3575362908229614e-8,3.19771579080949e-4,2.3439311888661372e-5,-1.3557025218592592e-8,3.200985885643759e-4,2.3340011786561243e-5,-1.3537543756519094e-8,3.2049846336595103e-4,2.3272031254568778e-5,-1.3522245412330314e-8,3.2095680118528186e-4,2.3266656684082567e-5,-1.3516194501257755e-8,3.214482960990994e-4,2.3348264536126095e-5,-1.3523546070473995e-8,3.219387035953197e-4,2.352905494166589e-5,-1.3546710031825095e-8,3.2238945173181284e-4,2.3803973484541637e-5,-1.3585453917150966e-8,3.2276517284783867e-4,2.414782235178386e-5,-1.3636274656717374e-8,3.2304300787259485e-4,2.4516917684648338e-5,-1.369247871891746e-8,3.2322093588827404e-4,2.4856694790520883e-5,-1.374527463790208e-8,3.2332167991338466e-4,2.5114409674883268e-5,-1.3785796286515207e-8,3.233897052011945e-4,2.525357146846435e-5,-1.3807516666649438e-8,3.2348120921461983e-4,2.5265406266578555e-5,-1.3808261001094046e-8,3.2364963922767976e-4,2.5173284625345988e-5,-1.3791120413398418e-8,3.2393091613960477e-4,2.5028248522414485e-5,-1.3763924450587002e-8,3.243327110819311e-4,2.489645279708152e-5,-1.3737355303383892e-8,3.2483114194985555e-4,2.4841661933600615e-5,-1.3722151158493351e-8,3.253764637315329e-4,2.4907661106982096e-5,-1.3726145974744325e-8,3.2590667505080653e-4,2.5106163518978407e-5,-1.3752074004335538e-8,3.263648743232834e-4,2.5414592771149465e-5,-1.3796943801410434e-8,3.267142644419916e-4,2.5784562274762126e-5,-1.3853232512079237e-8,3.2694560655390203e-4,2.6157379978950974e-5,-1.3911368702242648e-8,3.2707552207375036e-4,2.64802029079398e-5,-1.3962446344578679e-8,3.2713809920406574e-4,2.6717260951139974e-5,-1.4000191368277358e-8,3.2717430412455535e-4,2.685395991046812e-5,-1.4021757723105099e-8,3.272230250199076e-4,2.6895095773412356e-5,-1.4027518182301305e-8,3.273154328546555e-4,2.6859988741622723e-5,-1.4020303863838187e-8,3.27472427946398e-4,2.6777052624059808e-5,-1.4004517409235265e-8,3.2770404819257206e-4,2.667917357422416e-5,-1.3985374637999391e-8,3.2800968800751206e-4,2.6600135622202087e-5,-1.396833964272351e-8,3.283784197698704e-4,2.65715822213231e-5,-1.3958675851617953e-8,3.2878934377281676e-4,2.661975357857392e-5,-1.3960963251046796e-8,3.2921252136175277e-4,2.6761429111553565e-5,-1.397844020247438e-8,3.2961152402647006e-4,2.699907821559547e-5,-1.4012129808211943e-8,3.29948753915105e-4,2.7316263206531952e-5,-1.4059921868231094e-8,3.3019401009220286e-4,2.7675690266479282e-5,-1.4116060189696021e-8,3.303348983515174e-4,2.8023052525526852e-5,-1.417164175112956e-8,3.303851664433875e-4,2.8298564869411255e-5,-1.4216501609523993e-8,3.303858174704456e-4,2.845434313568276e-5,-1.4242167403395092e-8,3.303959416014983e-4,2.847131185450436e-5,-1.424477933710207e-8,3.304753311960585e-4,2.8367701265917583e-5,-1.4226626167552076e-8,3.3066574499633107e-4,2.8194592527739406e-5,-1.4195561924860455e-8,3.3097847333721307e-4,2.8020371048836455e-5,-1.4162617817120332e-8,3.3139229136450047e-4,2.7910733393913838e-5,-1.4138840614943994e-8,3.318610576038761e-4,2.7911418740544573e-5,-1.4132437583694847e-8,3.32327158660616e-4,2.8038257552148033e-5,-1.4146944421067845e-8,3.3273630146328536e-4,2.8275956095937735e-5,-1.4180721826563061e-8,3.3304982043797914e-4,2.8584590280257757e-5,-1.4227750741366778e-8,3.332518772704476e-4,2.8911198090895583e-5,-1.4279413650778645e-8,3.3335044303321585e-4,2.9203016014443303e-5,-1.4326720121414798e-8,3.3337264600420897e-4,2.9418844303718548e-5,-1.4362340255230543e-8,3.333565716870711e-4,2.953593528593423e-5,-1.438192328577023e-8,3.333423100299153e-4,2.955156240787833e-5,-1.4384490907506754e-8,3.333646227280616e-4,2.9480245799448394e-5,-1.4372041376989542e-8,3.3344841055820307e-4,2.9348582447400512e-5,-1.434870041016347e-8,3.3360692534264394e-4,2.9189588504290738e-5,-1.4319770705147037e-8,3.338418939605668e-4,2.903780052882538e-5,-1.429092220642219e-8,3.341445478842576e-4,2.8925502238673784e-5,-1.4267598983776846e-8,3.3449686902692956e-4,2.8879716510260736e-5,-1.4254567192028621e-8,3.34872893630502e-4,2.8919305085978387e-5,-1.4255452413328958e-8,3.3524046998712566e-4,2.905162633610626e-5,-1.4272125495191893e-8,3.3556438983591447e-4,2.926868042533546e-5,-1.4303906971243346e-8,3.358120415655983e-4,2.9543700862908523e-5,-1.4346787820191492e-8,3.359620973953016e-4,2.9830621885824582e-5,-1.4393165436296007e-8,3.3601476557872876e-4,3.0069847654572008e-5,-1.4432765793470925e-8,3.3599911919222826e-4,3.020259394749606e-5,-1.4455159337401374e-8,3.3597110300592314e-4,3.019141034190686e-5,-1.4453385307179457e-8,3.35998526488256e-4,3.00380349093956e-5,-1.4427081304578546e-8,3.3613729850181856e-4,2.9787423935761663e-5,-1.4383225010504009e-8,3.3641053011372276e-4,2.9513350056419022e-5,-1.4333808242876725e-8,3.368014006431015e-4,2.9292449987817804e-5,-1.4291641185111276e-8,3.3726185452744576e-4,2.9179980574871958e-5,-1.4266408426820145e-8,3.377303740186198e-4,2.9197037823386694e-5,-1.4262469364142498e-8,3.3814986945613203e-4,2.9330730888683372e-5,-1.427863436126763e-8,3.3848010158714516e-4,2.9543115154846164e-5,-1.4309336642064932e-8,3.38703273259897e-4,2.9783603206552747e-5,-1.4346471770152776e-8,3.388238715787891e-4,3.0001002317025725e-5,-1.4381352417660723e-8,3.388645512106792e-4,3.015313826145052e-5,-1.4406430035573901e-8,3.388596992978482e-4,3.0213214891368453e-5,-1.441656210821404e-8,3.388480896868653e-4,3.0172579589435465e-5,-1.4409671063513486e-8,3.3886595201610624e-4,3.0040010984943417e-5,-1.4386745775937594e-8,3.389415616773652e-4,2.983826465857231e-5,-1.435129353309962e-8,3.3909197448769624e-4,2.9599024245251944e-5,-1.4308467177209232e-8,3.393219732788287e-4,2.935743690567301e-5,-1.4264115645959442e-8,3.396247872186201e-4,2.9147198599977515e-5,-1.4223960274082391e-8,3.3998384944594585e-4,2.8996680396776103e-5,-1.419298232822601e-8,3.4037497978542483e-4,2.8925994092867653e-5,-1.4174970094013113e-8,3.4076876816749476e-4,2.8944576739562157e-5,-1.4172101451461987e-8,3.4113333363185183e-4,2.9048903134653624e-5,-1.4184452613283302e-8,3.4143806830900614e-4,2.9220259014859665e-5,-1.4209426481068721e-8,3.416592313159679e-4,2.942335957385573e-5,-1.4241300071719586e-8,3.4178768959361645e-4,2.9607879560626548e-5,-1.4271351102299056e-8,3.418373350901813e-4,2.971582378240197e-5,-1.4289150939638257e-8,3.4184996084014505e-4,2.9696727082961728e-5,-1.4285356690807156e-8,3.418902633601011e-4,2.952827110856552e-5,-1.425546855762454e-8,3.420270707706498e-4,2.9232745927517535e-5,-1.4202771104298555e-8,3.4230607491550166e-4,2.8876464783064984e-5,-1.4138250014917669e-8,3.4272891522547444e-4,2.8547270391760742e-5,-1.4076783978948293e-8,3.432521860159393e-4,2.8320914566404532e-5,-1.4031512125887654e-8,3.4380643577638096e-4,2.8235399587572567e-5,-1.4009518407800017e-8,3.4432227839255926e-4,2.8284922903914585e-5,-1.4010681330376893e-8,3.4474989405392577e-4,2.8430706232186193e-5,-1.4029244458375631e-8,3.450667007921132e-4,2.8618389049455682e-5,-1.405649452639386e-8,3.4527564357985356e-4,2.879355388007985e-5,-1.4083250375345564e-8,3.453987654829163e-4,2.8912049121438285e-5,-1.4101646097180218e-8,3.45469585268103e-4,2.894525815503267e-5,-1.4106194425210915e-8,3.4552604642457406e-4,2.8881730901118583e-5,-1.4094281874326899e-8,3.4560455047242703e-4,2.8726431535401165e-5,-1.4066215283106948e-8,3.457351529958053e-4,2.84982490045257e-5,-1.4024875511406945e-8,3.459380666037131e-4,2.8226171437823553e-5,-1.397505116091795e-8,3.462216637718113e-4,2.794459723979762e-5,-1.3922581182171141e-8,3.4658209986642525e-4,2.7688322235778394e-5,-1.3873458405560078e-8,3.4700449561030034e-4,2.748781270498401e-5,-1.3833031101689292e-8,3.474653304988083e-4,2.7365322208472776e-5,-1.3805386540778746e-8,3.479355692431911e-4,2.7332084280176915e-5,-1.3792904236856692e-8,3.483841987506852e-4,2.738651159118678e-5,-1.3795909548384521e-8,3.48782076015223e-4,2.7513276120753096e-5,-1.3812375954175199e-8,3.4910623716508923e-4,2.768327317176719e-5,-1.3837706596348546e-8,3.493450066374296e-4,2.785497909947437e-5,-1.3864767635512509e-8,3.4950380428156456e-4,2.7978582520697178e-5,-1.388452258098352e-8,3.496101796449104e-4,2.800470747307293e-5,-1.3887648902006153e-8,3.4971470295323565e-4,2.7898579782032046e-5,-1.3867255990212172e-8,3.498829672228969e-4,2.7657103890016168e-5,-1.3822133605209417e-8,3.5017591926531956e-4,2.7320571946380355e-5,-1.375894735333673e-8,3.5062370726759935e-4,2.6967510508779796e-5,-1.3691352108885298e-8,3.512076836751679e-4,2.668829415482261e-5,-1.3635359280006073e-8,3.518645594543916e-4,2.6549168451208284e-5,-1.3603044848274974e-8,3.525120860381075e-4,2.6567976763254272e-5,-1.359825241655584e-8,3.530801471377777e-4,2.671440633051558e-5,-1.3616465703002289e-8,3.5353016455276417e-4,2.692942938290615e-5,-1.3647971513994665e-8,3.538577002956241e-4,2.7148881753446637e-5,-1.3681795510084634e-8,3.540840771794443e-4,2.7320151877578618e-5,-1.3708567939664234e-8,3.542449634789241e-4,2.740961864282937e-5,-1.372191839944505e-8,3.543805993034693e-4,2.7403434203548572e-5,-1.3718799059739425e-8,3.545289983413223e-4,2.730498627401825e-5,-1.3699233288566783e-8,3.547216624954893e-4,2.7131303055044464e-5,-1.366581028187246e-8,3.5498087228620824e-4,2.690928730173587e-5,-1.3623050830270064e-8,3.5531797095255416e-4,2.6671814970846222e-5,-1.3576675347345746e-8,3.557325408326314e-4,2.6453572621222732e-5,-1.3532810617513158e-8,3.562126332903402e-4,2.628664184351773e-5,-1.3497191162436568e-8,3.5673629776197384e-4,2.619610347960688e-5,-1.3474416118620455e-8,3.5727449108908464e-4,2.6196233744873596e-5,-1.3467331827186608e-8,3.577951171362706e-4,2.628789151186731e-5,-1.3476583429700484e-8,3.582677504977914e-4,2.6457485603445368e-5,-1.3500355686777276e-8,3.5866856083210973e-4,2.667773719840518e-5,-1.3534335889835297e-8,3.58984983565573e-4,2.691031135287597e-5,-1.3571967951946276e-8,3.592197788921785e-4,2.7110381522096033e-5,-1.3605104433755066e-8,3.5939395836391525e-4,2.723347733466807e-5,-1.3625211838772243e-8,3.5954731475294516e-4,2.7245005640118063e-5,-1.3625233122092842e-8,3.5973439287282456e-4,2.7131819567977223e-5,-1.3601941703224978e-8,3.600135954575884e-4,2.6912915110491107e-5,-1.355814290805302e-8,3.60429073295564e-4,2.664325075241653e-5,-1.3503526756102676e-8,3.60990418920039e-4,2.64034696792908e-5,-1.3452835801158697e-8,3.6166146352094975e-4,2.6273775898966717e-5,-1.3421074493356377e-8,3.623688032765512e-4,2.630225709809558e-5,-1.3417659611230746e-8,3.6302889191182174e-4,2.6485921915614753e-5,-1.3442821004948017e-8,3.635787000997205e-4,2.6775836053406942e-5,-1.3488337737398986e-8,3.6399313254539714e-4,2.7100845265447172e-5,-1.3541675775041822e-8,3.6428387361378935e-4,2.739386253867796e-5,-1.3590675845310196e-8,3.644865074909421e-4,2.7608376878739416e-5,-1.3626575377250361e-8,3.6464576613601913e-4,2.7723005292816395e-5,-1.364495582745406e-8,3.6480461555127395e-4,2.77383404850266e-5,-1.3645341642181487e-8,3.6499818740537e-4,2.76710053685678e-5,-1.3630271402829668e-8,3.6525122259954397e-4,2.754788664050142e-5,-1.360432815008887e-8,3.6557730310316335e-4,2.7401492817728636e-5,-1.357329062063108e-8,3.659787553882458e-4,2.72661665993695e-5,-1.3543394730429565e-8,3.6644689750384423e-4,2.7174555417879994e-5,-1.352065178127914e-8,3.669628241382334e-4,2.7153908983776746e-5,-1.3510179030065285e-8,3.674992016602788e-4,2.7222166045638933e-5,-1.3515526234079713e-8,3.68023539090487e-4,2.73843521332642e-5,-1.3538046023492725e-8,3.685030041719975e-4,2.7630228716345682e-5,-1.357642629855776e-8,3.689102801263324e-4,2.793415315314418e-5,-1.362653567100988e-8,3.692294796808659e-4,2.825781083626839e-5,-1.368173224189925e-8,3.694608523244996e-4,2.8555916027981706e-5,-1.3733727733496358e-8,3.6962307871807993e-4,2.8784249160797294e-5,-1.3773978177336275e-8,3.697522993353289e-4,2.8908903102290343e-5,-1.3795451641862713e-8,3.6989731803456434e-4,2.8915385836666257e-5,-1.3794521381371401e-8,3.701106527110447e-4,2.8815745762559872e-5,-1.3772576532502819e-8,3.704358354453675e-4,2.8651045702873957e-5,-1.3736749819577554e-8,3.7089307273516974e-4,2.8486040803253674e-5,-1.369908367506479e-8,3.714679608227572e-4,2.8394043726751596e-5,-1.3673710854101186e-8,3.7210991213757036e-4,2.843405066778115e-5,-1.3672440108961631e-8,3.7274498490128303e-4,2.8628554579815174e-5,-1.3700371291720451e-8,3.733002400374539e-4,2.8953884905579092e-5,-1.375383654447321e-8,3.737283127161456e-4,2.934966667201483e-5,-1.3821992572909582e-8,3.74019840199307e-4,2.9742318752869464e-5,-1.3891158565206442e-8,3.741996113300426e-4,3.0069483883304552e-5,-1.3949424588473654e-8,3.743121974552402e-4,3.0294519375517385e-5,-1.3989456769194334e-8,3.7440629029591007e-4,3.0408720943630665e-5,-1.4009040575435913e-8,3.745237271452724e-4,3.042555417326966e-5,-1.4010137999684472e-8,3.7469432233555345e-4,3.0372415163084517e-5,-1.399745265579277e-8,3.7493481407911624e-4,3.0283392801809747e-5,-1.3977121315336288e-8,3.7524974009757705e-4,3.0194074963467853e-5,-1.3955729687359219e-8,3.7563276072333213e-4,3.013796030115297e-5,-1.3939607838651707e-8,3.7606789752317216e-4,3.014358067755694e-5,-1.3934276197156442e-8,3.765308715945007e-4,3.0231593508346177e-5,-1.394391327502817e-8,3.769911447976581e-4,3.0411553226949515e-5,-1.3970762499094855e-8,3.774153866080384e-4,3.067874957136116e-5,-1.4014505540693484e-8,3.7777276900158004e-4,3.101223988098575e-5,-1.4071785355970582e-8,3.780416881621932e-4,3.137561973052833e-5,-1.4136185048005719e-8,3.782164562994042e-4,3.1721813892388676e-5,-1.4198962795870701e-8,3.7831168136817563e-4,3.2002044707192615e-5,-1.4250643304019193e-8,3.7836207867593326e-4,3.2177378338159576e-5,-1.4283213281041604e-8,3.784166470845473e-4,3.222972568760059e-5,-1.4292338201740607e-8,3.7852801727424653e-4,3.216882097511682e-5,-1.4278915068388991e-8,3.7873941235653586e-4,3.2032643792585974e-5,-1.4249424676350356e-8,3.7907250187723524e-4,3.1880386191779476e-5,-1.4214835935159804e-8,3.79519524138801e-4,3.1778859253417956e-5,-1.4188143257430748e-8,3.800425591675725e-4,3.1785057707013906e-5,-1.4180988668013144e-8,3.8058155833472476e-4,3.192941802742809e-5,-1.420023019579586e-8,3.810702007095623e-4,3.220552703223705e-5,-1.424564138430845e-8,3.814550608339061e-4,3.257118968284767e-5,-1.4309824655516338e-8,3.8171088610531375e-4,3.2961679962287354e-5,-1.4380610992098202e-8,3.818457030615165e-4,3.3310117296884816e-5,-1.444499449135639e-8,3.8189440825249304e-4,3.356630414228731e-5,-1.4492871054400158e-8,3.8190518456659355e-4,3.3706990005561714e-5,-1.4519156100786139e-8,3.8192545511999565e-4,3.3735939536645784e-5,-1.4523932873023375e-8,0.00038199221663132935,3.36770574780388e-5,-1.4511243699103591e-8,3.8212794959808886e-4,3.356532850735636e-5,-1.44874232515469e-8,3.8234068283503006e-4,3.3438964212912564e-5,-1.445961632653455e-8,3.826260695837975e-4,3.333397058547786e-5,-1.4434725361888601e-8,3.8296985541619517e-4,3.328078604508245e-5,-1.4418750654133305e-8,3.8335002714571484e-4,3.3302014460873146e-5,-1.441635218389012e-8,3.837387391287661e-4,3.341034772114456e-5,-1.4430449062814374e-8,3.841046361875188e-4,3.3606223967194986e-5,-1.4461732780659432e-8,3.844163948873668e-4,3.3875453388444264e-5,-1.4508108409027856e-8,3.846481026697538e-4,3.4187920503036706e-5,-1.4564283527851176e-8,3.8478626988731516e-4,3.449926174844078e-5,-1.4621926226168586e-8,3.8483677916458626e-4,3.475742957885683e-5,-1.4670832194101453e-8,3.8482854708888275e-4,3.491455839733871e-5,-1.4701226812136726e-8,3.8481043392111564e-4,3.4941584971485933e-5,-1.4706695752866484e-8,3.8484010168733006e-4,3.484013825587449e-5,-1.468664371357169e-8,3.8496755452253895e-4,3.464574228765504e-5,-1.4647105606473425e-8,3.852194666708856e-4,3.4419635873436564e-5,-1.4599384135326243e-8,3.8559051584685747e-4,3.4231768838361375e-5,-1.4556966089518085e-8,3.8604470174984556e-4,3.4141257634779535e-5,-1.4531832281699271e-8,3.8652549596401316e-4,3.4180796113487486e-5,-1.4531324827219252e-8,3.8697101818921484e-4,3.434917801281351e-5,-1.4556386882613265e-8,3.8732970092140794e-4,3.461318978913546e-5,-1.4601550234372074e-8,3.875723463890504e-4,3.491766325493246e-5,-1.4656605918405712e-8,3.8769763284319733e-4,3.5200524303996284e-5,-1.4709446876581307e-8,3.8772997811639925e-4,3.540841369879993e-5,-1.474921260370285e-8,3.877109937265693e-4,3.550840337825738e-5,-1.476877406003373e-8,3.8768778169230556e-4,3.5492866851361164e-5,-1.476588786722735e-8,3.877020190388187e-4,3.5377264492801586e-5,-1.4742916279944912e-8,3.8778272420060984e-4,3.519311331097323e-5,-1.4705540490345767e-8,3.8794354267678884e-4,3.497940485725285e-5,-1.4661111679795208e-8,3.88183621815305e-4,3.4775082366194856e-5,-1.4617171125102894e-8,3.8849040862005046e-4,3.4613774624727124e-5,-1.4580401934381552e-8,3.888429039948693e-4,3.452069902788002e-5,-1.4556015515333534e-8,3.8921458948142855e-4,3.45109299576898e-5,-1.4547412738969088e-8,3.8957597873680495e-4,3.4588150401447517e-5,-1.455591709815627e-8,3.8989728274007056e-4,3.474336635341969e-5,-1.4580440622513306e-8,3.9015195396758514e-4,3.495368121352255e-5,-1.4617090694513199e-8,3.9032177735499337e-4,3.5182101792084835e-5,-1.4658947568485471e-8,3.9040340540185385e-4,3.5380277120652675e-5,-1.4696467881042956e-8,3.904146306630224e-4,3.549631641986946e-5,-1.4719008759851094e-8,3.903967427080332e-4,3.548836893154207e-5,-1.4717615696219794e-8,3.9040860609677376e-4,3.534095270614115e-5,-1.468840935651692e-8,3.905107938530057e-4,3.507658782265891e-5,-1.4635025503981219e-8,3.9074435561294203e-4,3.4754301960084933e-5,-1.4568447883446436e-8,3.911142837911334e-4,3.445237060488615e-5,-1.4503769375063293e-8,3.915867065914306e-4,3.4242280516138355e-5,-1.4455241755727162e-8,3.9210098851033884e-4,3.416630020580259e-5,-1.4431921054112957e-8,3.9258978921974933e-4,3.42277415173893e-5,-1.4435583191215956e-8,3.92997891960016e-4,3.43949587943332e-5,-1.446115512515839e-8,3.9329397995157005e-4,3.4614214184008465e-5,-1.4498870429778417e-8,3.934741228294369e-4,3.482529654460197e-5,-1.4537116508416524e-8,3.935585439745504e-4,3.497539271070658e-5,-1.456516089516988e-8,3.935841244453831e-4,3.502882428209544e-5,-1.4575248316469991e-8,3.935950084123615e-4,3.497180118274077e-5,-1.4563798423281858e-8,3.9363335905265697e-4,3.4812268755863353e-5,-1.453161028551469e-8,3.9373196934599825e-4,3.457567997812712e-5,-1.4483168817569692e-8,3.9390985158140024e-4,3.4298244121273065e-5,-1.442534785326174e-8,3.941710735045695e-4,3.401951202215226e-5,-1.4365908871774454e-8,3.945062887672119e-4,3.377587091359689e-5,-1.431215883946541e-8,3.948959058166358e-4,3.3595868201667825e-5,-1.4269990715109863e-8,3.9531378332501087e-4,3.34975018387911e-5,-1.4243345355196083e-8,3.95730734118531e-4,3.348697905005418e-5,-1.4233969882786683e-8,3.9611767962868447e-4,3.3558268125866676e-5,-1.424129255710753e-8,3.964487102877791e-4,3.3693000306870486e-5,-1.4262290516375536e-8,3.9670457560232427e-4,3.386072530925677e-5,-1.429136009013897e-8,3.96877142245794e-4,3.402026478479182e-5,-1.4320404114221407e-8,3.96974675963087e-4,3.412377428846557e-5,-1.433955280018419e-8,3.970263033690597e-4,3.412534347773198e-5,-1.4338948576893425e-8,3.970821930901893e-4,3.3994646882125137E-05,-1.4311677516442803e-8,3.972051269460485e-4,3.373258641401384e-5,-1.4257126814339408e-8,3.9745171697619185e-4,3.3380857036472385e-5,-1.4183048350455968e-8,3.9784887548471545e-4,3.3015677815108926e-5,-1.4104376616313594e-8,3.983784208606685e-4,3.272315572911758e-5,-1.4038376360391643e-8,3.989810077392129e-4,3.2567028222608205e-5,-1.3998275239165507e-8,3.995784033932848e-4,3.256650678484111e-5,-1.3988808427858587e-8,4.001011450991133e-4,3.269479846358877e-5,-1.4005705396679457e-8,4.0050766556828905e-4,3.2894820685850835e-5,-1.4038489709830286e-8,4.0078956955466436e-4,3.310064022337845e-5,-1.407446327281956e-8,4.0096621978551547e-4,3.325505206119748e-5,-1.4102093289319672e-8,4.010745404447036e-4,3.3319672146671645e-5,-1.4113112716440347e-8,4.0115849496576356e-4,3.3278246778498246e-5,-1.4103416685224999e-8,4.0126036221118603e-4,3.3135359116825646e-5,-1.4073080729645138e-8,4.014143685471576e-4,3.291243375807629e-5,-1.4025773677232568e-8,4.0164265136440953e-4,3.264223661405534e-5,-1.3967743564302586e-8,4.019534608500238e-4,3.236272447032621e-5,-1.390655605379301e-8,4.023414451750576e-4,3.211102729665613e-5,-1.3849797898036786e-8,4.0278971307670453e-4,3.191824538468825e-5,-1.3803953237611915e-8,4.032731686233601e-4,3.18056089510052e-5,-1.3773602883065726e-8,4.037624347508987e-4,3.178228329803735e-5,-1.376099772735688e-8,4.0422776760387706e-4,3.184466222614487e-5,-1.3765925422093045e-8,4.0464271102872616e-4,3.1976751617668895e-5,-1.3785736315062855e-8,4.049875078121135e-4,3.2151373504918296e-5,-1.3815449042655647e-8,4.0525242347578963e-4,3.2332175019236376e-5,-1.3847964962952615e-8,4.0544119121250843e-4,3.2476862419152035e-5,-1.3874561986942388e-8,4.05574305140568e-4,3.254270756363941e-5,-1.3885979640020726e-8,4.0569066632959827e-4,3.249544686392352e-5,-1.3874369128060043e-8,4.0584474135106326e-4,3.232141920233108e-5,-1.3836033795223245e-8,4.060959597117366e-4,3.203981711665866e-5,-1.3774198864523915e-8,4.0648944202457856e-4,3.170776499799547e-5,-1.3700205970255192e-8,4.070339380710125e-4,3.14094387988266e-5,-1.3631320248747382e-8,4.076901544592694e-4,3.122757281338524e-5,-1.3584880382566213e-8,4.083808447150242e-4,3.1209812559531696e-5,-1.357136683146307e-8,4.090200221087287e-4,3.1349995147856346e-5,-1.3590446140588086e-8,4.0954443123187515e-4,3.1595103343674464e-5,-1.3632168430282483e-8,4.099303837683666e-4,3.187049880203468e-5,-1.3681872256090355e-8,4.101918277261662e-4,3.210671035463291e-5,-1.3725481876963942e-8,4.103671176469619e-4,3.225608889167277e-5,-1.3752883934071199e-8,4.1050398879131114e-4,3.2297665182539014e-5,-1.3759059927073484e-8,4.106480562172606e-4,3.223425978678608e-5,-1.3743742869076615e-8,4.108359107796797e-4,3.208637535174844e-5,-1.371041895829871e-8,4.1109180515318115e-4,3.188566709771694e-5,-1.366514943234374e-8,4.1142658815250326e-4,3.166901056491771e-5,-1.3615380156688916e-8,4.118380537063425e-4,3.147326545835003e-5,-1.3568790580043022e-8,4.123123872285276e-4,3.1330693322293186e-5,-1.3532246924646132e-8,4.1282660990819755e-4,3.12650855735152e-5,-1.3510937230181173e-8,4.1335194038861985e-4,3.12888232285669e-5,-1.3507759179538763e-8,0.00041385782791872523,3.14012402587035e-5,-1.3523006860697865e-8,4.143162097043059e-4,3.158851800056764e-5,-1.3554343762603742e-8,4.147055736697891e-4,3.182504325345812e-5,-1.3596998591413753e-8,4.150145461827425e-4,3.207610038134238e-5,-1.3644157727172217e-8,4.1524476893370035e-4,3.230183268389632e-5,-1.368759809958973e-8,4.1541284364256985e-4,3.2462481911037404e-5,-1.3718658948585584e-8,4.1555091775811174e-4,3.252513293742975e-5,-1.3729683805619488e-8,4.1570478512098117e-4,3.247211793603926e-5,-1.3715984522395111e-8,4.159276624200048e-4,3.2310116826504505e-5,-1.3678055124053507e-8,4.1626805702971783e-4,3.2076790804311726e-5,-1.3623245822332607e-8,4.167524617387805e-4,3.1839355536118996e-5,-1.3565610929515464e-8,4.173687071937988e-4,3.1679433606488e-5,-1.352271054257597e-8,4.180608672886187e-4,3.166480571656874e-5,-1.3509541984888306e-8,4.187443288713044e-4,3.182021371545731e-5,-1.353221487846181e-8,4.193369682737023e-4,3.211533218369021e-5,-1.3585218588590153e-8,4.1978931227977685e-4,3.247863499575709e-5,-1.3654153761093438e-8,4.2009704087509506e-4,3.282777137229304e-5,-1.3721983897773367e-8,4.202929904690921e-4,3.309778073197644e-5,-1.377490014751364e-8,4.2042859167406205e-4,3.325494568929429e-5,-1.3805267082687721e-8,4.2055631802961126e-4,3.329635406528146e-5,-1.3811685967344244e-8,4.207187075410816e-4,3.324181570289828e-5,-1.3797529601781316e-8,4.209438553744661e-4,3.312430221578908e-5,-1.376914696052265e-8,4.212450114021482e-4,3.29820290127452e-5,-1.3734307231289387e-8,4.2162200611876914e-4,3.285276439909095e-5,-1.3700985550654417e-8,4.220632466273461e-4,3.276974175556986e-5,-1.3676406563612262e-8,4.225479806825113e-4,3.275847057478871e-5,-1.3666274054639809e-8,4.2304896717371235e-4,3.283409778896946e-5,-1.367416405793029e-8,4.23535782825238e-4,3.299935006506142e-5,-1.3701088573561653e-8,4.2397886988324306e-4,3.3243478824476034e-5,-1.374527589841765e-8,4.2435406637511227e-4,3.354279531934157e-5,-1.3802236076034794e-8,4.246470102477941e-4,3.3863147891369016e-5,-1.3865160722445153e-8,4.248566904943515e-4,3.4164346787876715e-5,-1.392568757735148e-8,4.249974307882397e-4,3.4406249583597606e-5,-1.3975043403899051e-8,4.2509869023787635e-4,3.455590008719841e-5,-1.4005525482322397e-8,4.252022353167417e-4,3.4594902384809774e-5,-1.4012200930378964e-8,4.2535628227180944e-4,3.452606191561703e-5,-1.3994602436161527e-8,4.2560627053101944e-4,3.437774195887487e-5,-1.3957997791203556e-8,4.259826655671023e-4,3.42033544248866e-5,-1.3913552496987838e-8,4.2648812302165757e-4,3.407288572264099e-5,-1.3876612700332113e-8,4.2708920644435e-4,3.405490071168592e-5,-1.3862734860228985e-8,4.2771960286236156e-4,3.419246160656786e-5,-1.388224482934693e-8,4.2829858276369735e-4,3.4483331127508464e-5,-1.39356667397566e-8,4.287591800201008e-4,3.487711132752329e-5,-1.401286696741407e-8,4.2907189221625086e-4,3.529375343362766e-5,-1.4096933853643936e-8,4.2925111181198606e-4,3.5653822332007866e-5,-1.4170691079982273e-8,4.293431436633978e-4,3.590386737424457e-5,-1.422220020649449e-8,4.294057069943159e-4,3.602629900089709e-5,-1.4246968028465437e-8,4.2949028887441184e-4,3.603476243390713e-5,-1.4247107509361492e-8,4.296326637699373e-4,3.596258975350247e-5,-1.422906114426545e-8,4.298507830160587e-4,3.585122067538412e-5,-1.4201284229219959e-8,4.30146821619837e-4,3.574178595192985e-5,-1.4172502101488057e-8,4.305105528179752e-4,3.567004669500458e-5,-1.4150577469349977e-8,4.309225690144668e-4,3.566353502127585e-5,-1.4141794633184363e-8,4.3135708115020477e-4,3.5739694174433475e-5,-1.4150368611616155e-8,4.3178466029482305e-4,3.5904363120716595e-5,-1.4178070671429282e-8,4.321754230960808e-4,3.615055457113382e-5,-1.4223940930016515e-8,4.3250300470527235e-4,3.645801938170371e-5,-1.4284152898436964e-8,4.327492141671965e-4,3.6794455062480333e-5,-1.4352180111878265e-8,4.329086361301494e-4,3.711914037777242e-5,-1.441944170755436e-8,4.329919362284678e-4,3.738922622588004e-5,-1.4476525706585657e-8,4.3302648954548616e-4,3.756805202918171e-5,-1.4514923144055002e-8,4.330533235187689e-4,3.763391300210855e-5,-1.4528989528198715e-8,4.331202330514279e-4,3.7587099620632155e-5,-1.4517675625248134e-8,4.33271953934643e-4,3.7453099149815584e-5,-1.4485529520827118e-8,4.335391170749413e-4,3.728040086638992e-5,-1.4442540122095772e-8,4.3392835970523195e-4,3.713209968463934e-5,-1.4402528788363379e-8,4.344165500758634e-4,3.707165347756771e-5,-1.4380064897967802e-8,4.3495230062594813e-4,3.714511840207765e-5,-1.438637838413005e-8,4.3546692736868404e-4,3.7364868229131036e-5,-1.4425430174624792e-8,4.3589372030768185e-4,3.7701867510223756e-5,-1.4491842764582526e-8,4.361893091351183e-4,3.8092289800798756e-5,-1.4572120153155367e-8,4.3634757852403625e-4,3.8457985039809324e-5,-1.464910812938325e-8,4.363991796352178e-4,3.8732147174392066e-5,-1.4707727290935779e-8,4.3639763452364114e-4,3.887826414780291e-5,-1.4739264857224268e-8,4.364001722647106e-4,3.889525252824335e-5,-1.474263969373984e-8,4.364523016838084e-4,3.881021476354108e-5,-1.4722977299200551e-8,4.365804771433114e-4,3.866556340462599e-5,-1.468896039574687e-8,4.367919722871205e-4,3.8506926413442914e-5,-1.4650297668231218e-8,4.370786669043261e-4,3.837491837753309e-5,-1.4615939698352876e-8,4.3742177567648004e-4,3.8300841711920557e-5,-1.4593067497875068e-8,4.377959505900983e-4,3.830495380523125e-5,-1.4586611379527836e-8,4.3817246361271725e-4,3.839583492266989e-5,-1.4599028669935255e-8,4.385219262133009e-4,3.856996202628723e-5,-1.4630154871815322e-8,4.388172474094774e-4,3.881133934777927e-5,-1.4677068982739351e-8,4.3903736753377824e-4,3.909172438758446e-5,-1.4734059655137036e-8,4.39171785700476e-4,3.9372492362129876e-5,-1.4792916472356046e-8,4.392250878709724e-4,3.9609287825052854e-5,-1.48438349018792e-8,4.392197841418492e-4,3.9760010138741e-5,-1.4877110525214467e-8,4.391952872335693e-4,3.9795215836805176e-5,-1.488546114998337e-8,4.392015028478242e-4,3.9708130526000964e-5,-1.4866368508482124e-8,4.392874740657098e-4,3.9520303226885334e-5,-1.4823547388579492e-8,4.3948798661524503e-4,3.927964654825381e-5,-1.4766788554084115e-8,4.3981252877586845e-4,3.905019462021475e-5,-1.4709963203151688e-8,4.4024057367895406e-4,3.889606668889953e-5,-1.4667637174980205e-8,4.407251019923313e-4,3.886426054421898e-5,-1.465121537204819e-8,4.4120371732378895e-4,3.897130268161372e-5,-1.4665702138134793e-8,4.4161456567829924e-4,3.919776198075389e-5,-1.4708062006301217e-8,4.41912806692747e-4,3.949272215218089e-5,-1.4767828043097781e-8,4.4208268554817335e-4,3.978761101197567e-5,-1.4829982902345276e-8,4.421409699762284e-4,4.001548958358082e-5,-1.4879284623686034e-8,4.421303237867017e-4,4.012928886396741e-5,-1.4904509091663218e-8,4.4210531633417574e-4,4.011254468451751e-5,-1.4901064005645254e-8,4.421168168722615e-4,3.997960143327207e-5,-1.487124044964496e-8,4.422004451507053e-4,3.9767094807069e-5,-1.4822485598136494e-8,4.4237183113721076e-4,3.9521669753076244e-5,-1.4764783122292205e-8,4.426279491665109e-4,3.928881642907068e-5,-1.4708204056709783e-8,4.429518454747351e-4,3.91054375635812e-5,-1.4661205248835662e-8,4.433181067887932e-4,3.899632725145631e-5,-1.4629752573422735e-8,4.436975223791884e-4,3.8973357147412855e-5,-1.4617048273316101e-8,4.4406056405082626e-4,3.903590468819179e-5,-1.4623561502714967e-8,4.4438008650014344e-4,3.91715076460056e-5,-1.4647122090138582e-8,4.446339768961001e-4,3.935646602380224e-5,-1.4682981479505956e-8,4.448083963396037e-4,3.955684978592832e-5,-1.4723927049201846e-8,4.4490177030358924e-4,3.973098128986008e-5,-1.4760714274992125e-8,4.4492878725670593e-4,3.9834759260079374e-5,-1.4783179135015065e-8,4.4492247041699046e-4,3.983068781073579e-5,-1.4782276848273152e-8,4.4493150521741963e-4,3.9699639584905065e-5,-1.4752832416571488e-8,4.4501065268293756e-4,3.945150399211428e-5,-1.4696101798232349e-8,4.452051621230111e-4,3.912878232058367e-5,-1.4620773630123115e-8,4.4553450758414917e-4,3.879851843897706e-5,-1.4541367888067542e-8,4.459831270119789e-4,3.853341144760553e-5,-1.4474199279655483e-8,4.4650334228181737e-4,3.83892962100095e-5,-1.4432428557074345e-8,4.470294963479162e-4,3.838843851633301e-5,-1.4422210720894016e-8,4.474971022466872e-4,3.8514644123259556e-5,-1.4441268698217063e-8,4.4785977033990704e-4,3.872025545847296e-5,-1.4480033042680275e-8,4.480991934681107e-4,3.8940889744311725e-5,-1.4524608121518424e-8,4.48226794522255e-4,3.911257774162124e-5,-1.4560498684405491e-8,4.482780588321118e-4,3.918669829382871e-5,-1.457607889926847e-8,4.4830195410043057e-4,3.913954024565277e-5,-1.4565007306195704e-8,4.483485381147606e-4,3.8974954360315984e-5,-1.4527125710483059e-8,4.484579671969714e-4,3.872030337677846e-5,-1.4467791545713628e-8,4.4865345969394e-4,3.841765061935548e-5,-1.4396030200337683e-8,4.489392960449042e-4,3.811327623924533e-5,-1.4322193270630174e-8,4.4930320331229367e-4,3.7848511485026534e-5,-1.4255821744391228e-8,4.497213338957374e-4,3.765366154702086e-5,-1.4204163537672068e-8,4.5016388935185643e-4,3.7545304813913294e-5,-1.4171463776027224e-8,4.5060002058532647e-4,3.752619081927828e-5,-1.415888242467012e-8,4.5100150770761724e-4,3.758652962581753e-5,-1.4164756572674547e-8,4.5134546376081325e-4,3.7705677615177184e-5,-1.4184941935731645e-8,4.5161665818218725e-4,3.785383751499737e-5,-1.4213111016563784e-8,4.518100423627256e-4,3.7994051971822126e-5,-1.4241074681839239e-8,4.5193371514478737e-4,3.8085369823532785e-5,-1.4259379743515523e-8,4.5201173652522936e-4,3.808847352382779e-5,-1.4258553184670598e-8,4.5208492668352473e-4,3.797471001575803e-5,-1.4231251193107125e-8,4.522066971808626e-4,3.77376787180318e-5,-1.4175095272905575e-8,4.5243135935849304e-4,3.7403252871591634e-5,-1.4095172040726785e-8,4.5279582657719995e-4,3.7030874343293475e-5,-1.4004497095542028e-8,4.5330172975054594e-4,3.6700112219684904e-5,-1.3921072538958264e-8,4.539088056613535e-4,3.648437266876659e-5,-1.3861984223206524e-8,4.545461169138244e-4,3.642372882885231e-5,-1.3837216692123784e-8,4.5513658700048617e-4,3.651138922317251e-5,-1.3846408129259836e-8,4.556220323441288e-4,3.66997016694241e-5,-1.3879890283223254e-8,4.559775185965056e-4,3.691969978430192e-5,-1.3922769386842146e-8,4.562122242740801e-4,3.710309854736905e-5,-1.3959682858114987e-8,4.5636084388552884e-4,3.7198647914217366e-5,-1.397848887776796e-8,4.564712492187718e-4,3.7180239677984124e-5,-1.3972296643507357e-8,4.5659257815677795e-4,3.7047788247771294e-5,-1.393998633269255e-8,4.5676585962010804e-4,3.682314037864092e-5,-1.3885605024489333e-8,4.57017899354544e-4,3.65430985371316e-5,-1.3816998895031419e-8,4.573585513254664e-4,3.625115082842816e-5,-1.3743986972765052e-8,4.5778120823241134e-4,3.5989329685002914e-5,-1.367641965358165e-8,4.582659310878471e-4,3.579152347703973e-5,-1.3622494409608255e-8,4.587842300484169e-4,3.567911872805785e-5,-1.3587614246913989e-8,4.5930436312677383e-4,3.565921697959824e-5,-1.357389940117045e-8,4.5979615512869434e-4,3.572510183973148e-5,-1.358027877351196e-8,4.6023475988321376e-4,3.585820060660067e-5,-1.360294284347647e-8,4.6060335832733674e-4,3.6030722091809204e-5,-1.3635911870639802e-8,4.60895139188042e-4,3.6208528902177354e-5,-1.3671590860836431e-8,4.6111494690815154e-4,3.635429757026502e-5,-1.3701352069797334e-8,4.612807925415506e-4,3.6431488839050474e-5,-1.3716346193401218e-8,4.614247987373746e-4,3.6410027954227026e-5,-1.3708835750741679e-8,4.6159205914533125e-4,3.62743262879114e-5,-1.3674231350069227e-8,4.6183498055835207e-4,3.6032773953528615e-5,-1.3613573886357206e-8,4.6220096368370197e-4,3.572504366766511e-5,-1.3535497406452498e-8,4.627142460022724e-4,3.5420516607509466e-5,-1.345601089443765e-8,4.633589570077975e-4,3.520158587923049e-5,-1.339462640412944e-8,4.640754895656249e-4,3.5133781640715624e-5,-1.336732887285183e-8,4.6477797333421513e-4,3.523710146370312e-5,-1.337976511947418e-8,4.653863109243403e-4,3.5476761963375476e-5,-1.3424888861955243e-8,4.658546211216421e-4,3.577942568893229e-5,-1.3486488367131025e-8,4.661813358342299e-4,3.6063351831523195e-5,-1.3545965988268696e-8,4.664004611033069e-4,3.626473218857858e-5,-1.3588320959816941e-8,4.665639958352068e-4,3.6350407228647365e-5,-1.360513303776225e-8,4.6672541684679767e-4,3.631790496298228e-5,-1.3594788762173888e-8,4.6692865416770923e-4,3.618845377576418e-5,-1.3561187150119446e-8,4.672026368560225e-4,3.5997925297469526e-5,-1.3511940939945172e-8,4.6755982834898976e-4,3.5788386314177225e-5,-1.3456575605413407e-8,4.67997179408685e-4,3.5601078032541834e-5,-1.3404875559273569e-8,4.684985923176623e-4,3.5470812389852354e-5,-1.3365423942936016e-8,4.6903849108559164e-4,3.542180047068913e-5,-1.3344439413006975e-8,4.695861596821659e-4,3.546508508953634e-5,-1.3345040436527447e-8,4.7011041192164126e-4,3.559772500847251e-5,-1.3367006714160734e-8,4.705840542170844e-4,3.580375537789526e-5,-1.3407016011675667e-8,4.7098759753275935e-4,3.6056678871433476e-5,-1.3459233547938723e-8,4.7131190949890184e-4,3.632298007574168e-5,-1.3516078049011552e-8,4.71559790690804e-4,3.6566204934469644e-5,-1.3569053058169974e-8,4.717465735754899e-4,3.6751383530202755E-05,-1.3609647477316639e-8,4.718998124130554e-4,3.684981905601746e-5,-1.3630405599256602e-8,4.7205781579265745e-4,3.684452081682734e-5,-1.3626310087204059e-8,4.7226605766033966e-4,3.673637051258554e-5,-1.3596506069195115e-8,4.725699924678846e-4,3.654994787786842e-5,-1.3546025765795578e-8,4.730033180778431e-4,3.6336041112372295e-5,-1.3486667699711668e-8,4.7357300089362716e-4,3.616604739808837e-5,-1.3435763281303896e-8,4.74246972161772e-4,3.611397064008277e-5,-1.3411769997669891e-8,4.7495468950762464e-4,3.6228226616847743e-5,-1.342728801093758e-8,4.756075265498231e-4,3.6506596772157785e-5,-1.3482806498111208e-8,4.761324789643435e-4,3.68921215314555e-5,-1.3565521966204982e-8,4.76500027685036e-4,3.729587464380291e-5,-1.3654665288008376e-8,4.7672987690625123e-4,3.763293743393644e-5,-1.3730017018062513e-8,4.768749775046739e-4,3.7850136442992455e-5,-1.3778472109271951e-8,4.7699763159739244e-4,3.7934345672070496e-5,-1.379606231317544e-8,4.7715085690734735e-4,3.790502947009683e-5,-1.3786386207802384e-8,4.7736947329048336e-4,3.780076670277705e-5,-1.3757715344810296e-8,4.7766881383462853e-4,3.7666865402247315e-5,-1.3720316041747617e-8,4.780473761409701e-4,3.7546640888132714e-5,-1.368447808114495e-8,4.7849069816615584e-4,3.747611264933771e-5,-1.3659170952435136e-8,4.789752246660876e-4,3.748091718942398e-5,-1.3651117518452754e-8,4.7947201707088224e-4,3.757448492495361e-5,-1.3664168314897276e-8,4.799505077512641e-4,3.775714321569889e-5,-1.3698971973992664e-8,4.803824002412184e-4,3.801622409426613e-5,-1.3752971782310215e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json new file mode 100644 index 000000000..765f637b6 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_11.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":11000,"numberOfSamples":1000,"samples":[4.807455898115237e-4,3.832746570992544e-5,-1.3820749559112586e-8,4.810276804026849e-4,3.8657939483712816e-5,-1.3894708855793208e-8,4.8122851144731977e-4,3.897037866353488e-5,-1.3966029941865335e-8,4.8136122169643126e-4,3.922846753666153e-5,-1.4025813189547578e-8,4.8145158055841605e-4,3.94025277918899e-5,-1.406634943105251e-8,4.815355041583503e-4,3.9474978459853574e-5,-1.408245537787128e-8,4.8165478219839815e-4,3.9445013590506954e-5,-1.4072791780691197e-8,4.8185089652025466e-4,3.933196966399209e-5,-1.4041008026015441e-8,4.8215671196515623e-4,3.9176311765079673e-5,-1.3996340784096513e-8,4.825864763543066e-4,3.9036228711670225e-5,-1.3953028790341758e-8,4.8312623641597524e-4,3.897747212754661e-5,-1.3927849119148707e-8,4.837291888970253e-4,3.9055456474574426e-5,-1.3935510387344442e-8,4.843221611312391e-4,3.929313827217236e-5,-1.3982860442730526e-8,4.848265247112546e-4,3.966499254457847e-5,-1.4064616609993489e-8,4.8518733416020557e-4,4.009980545620315e-5,-1.4163881241573302e-8,4.853950931909375e-4,4.050581912340954e-5,-1.425830655995102e-8,4.854866151667581e-4,4.080574058134305e-5,-1.4328715323638037e-8,4.85525688196407e-4,4.096178493042818e-5,-1.4365239392562207e-8,4.855772001398806e-4,4.0979862819758134e-5,-1.4368394366073396e-8,4.856885804979649e-4,4.089713112766541e-5,-1.4346234987150922e-8,4.8588326125485515e-4,4.076435074414623e-5,-1.4310345248447114e-8,4.8616296080937287e-4,4.063161994000118e-5,-1.4272594843316575e-8,4.865136173432042e-4,4.054008405187016e-5,-1.4243172616081504e-8,4.8691142789272524e-4,4.051847158520118e-5,-1.4229620182921136e-8,4.8732762934217247e-4,4.0582299326150006e-5,-1.4236433463507242e-8,4.8773212709177916e-4,4.07341134689005e-5,-1.4264941962397524e-8,4.880965967034294e-4,4.096407600183585e-5,-1.4313353517338398e-8,4.88397573177068e-4,4.1250927252936434e-5,-1.4376959666340294e-8,4.886197129387349e-4,4.1563798332032156e-5,-1.4448564853229553e-8,4.887589435265532e-4,4.1865488207741994e-5,-1.451924254306548e-8,4.888247307700336e-4,4.211748974787741e-5,-1.4579476522027053e-8,4.888405100767859e-4,4.228641181812268e-5,-1.462064263346648e-8,4.888415356313333e-4,4.235083017747227e-5,-1.463666315611464e-8,4.888699069788087e-4,4.2307124574301165e-5,-1.462554429370797e-8,4.889672434197426e-4,4.2172729191325406e-5,-1.459042628142175e-8,4.89166100944331e-4,4.198561886052198e-5,-1.4539802909504917e-8,4.894815424795779e-4,4.179941029790374e-5,-1.4486638095790344e-8,4.899045597653066e-4,4.16738571918689e-5,-1.4446179472955758e-8,4.903995543457572e-4,4.1661226263416274e-5,-1.4432491631334258e-8,4.909084078410756e-4,4.179064877681403e-5,-1.4454232713012669e-8,4.913629055658968e-4,4.205495921373214e-5,-1.4510927067288458e-8,4.917043498415898e-4,4.2406630471518614e-5,-1.4591584452824552e-8,4.919041260653661e-4,4.2768455240018365e-5,-1.4677226547185713e-8,4.91975143734432e-4,4.30581023135401e-5,-1.4747087713819914e-8,4.919667281492841e-4,4.321634341236769e-5,-1.4785795141156964e-8,4.919450134806429e-4,4.322488299346272e-5,-1.4787918091785175e-8,4.919696544610528e-4,4.310619995991277e-5,-1.4758043194016052e-8,4.920780610928328e-4,4.2909134196637064e-5,-1.4707389424281414e-8,4.922813225790399e-4,4.269033595193827e-5,-1.464944226297227e-8,4.925688425220637e-4,4.249988199139718e-5,-1.4596537842685818e-8,4.92916302217559e-4,4.2373819969799324e-5,-1.4557994767186664e-8,4.932930424762773e-4,4.233227598512297e-5,-1.4539483417289066e-8,4.936673798735039e-4,4.2380499169877454e-5,-1.4543082916464466e-8,4.940100632622315e-4,4.251078828128216e-5,-1.4567604259159937e-8,4.942967406427109e-4,4.27043504794895e-5,-1.4608973846901326e-8,4.945102476677884e-4,4.2933063498730834e-5,-1.4660638792530654e-8,4.946431248320447e-4,4.316170803770033e-5,-1.4714088579726986e-8,4.947001929114915e-4,4.335150966562856e-5,-1.4759675319273507e-8,4.947003518474758e-4,4.3465620460088586e-5,-1.4787908056141978e-8,4.946762700491294e-4,4.3476391218321277e-5,-1.4791230435817252e-8,4.946706632709735e-4,4.337312853241991e-5,-1.4766006598097854e-8,4.947286919062398e-4,4.316792790944356e-5,-1.4714140745679074e-8,4.948875598480194e-4,4.289680338026428e-5,-1.46436248866499e-8,4.951660198459949e-4,4.261431606960693e-5,-1.4567507684274658e-8,4.955572023782361e-4,4.238205390573295e-5,-1.4501266960766878e-8,4.960275056948562e-4,4.225356593077395e-5,-1.4459112508157139e-8,4.965226079965434e-4,4.225970770296015e-5,-1.445012992875491e-8,4.969797348841862e-4,4.239855798309805e-5,-1.4475344797421208e-8,4.973435745501257e-4,4.263333074298414e-5,-1.452672530286383e-8,4.975817616767804e-4,4.290011641573763e-5,-1.4588789841322534e-8,4.976949342797306e-4,4.31246291984686e-5,-1.4642736998874316e-8,4.977169933512843e-4,4.32435191844831e-5,-1.4671952404593025e-8,4.977043744489744e-4,4.3222752491909916e-5,-1.4666876259907704e-8,4.977180995272924e-4,4.30657402384419e-5,-1.4627283126456636e-8,4.978060190996614e-4,4.280844975449757e-5,-1.4561258969220208e-8,4.979920722311104e-4,4.2505071693506214e-5,-1.4481783123106343e-8,4.982749931993637e-4,4.221149461163865e-5,-1.4402704387878677e-8,4.986341351162414e-4,4.1972812399652274e-5,-1.4335614319282961e-8,4.99038023174974e-4,4.181724732728816e-5,-1.4288203371298527e-8,4.994521132236064e-4,4.1755451375511826e-5,-1.4263899128169458e-8,4.998442497099592e-4,4.1782774302784495e-5,-1.4262268021020732e-8,5.001879318353291e-4,4.1882399162322495e-5,-1.4279703860248156e-8,5.004642516735846e-4,4.202823461485221e-5,-1.4310113798395751e-8,5.006634317541689e-4,4.218742398465999e-5,-1.4345522650409268e-8,5.007865154243883e-4,4.232301933686223e-5,-1.4376697915433863e-8,5.008471450808845e-4,4.239771827120947e-5,-1.4394026271468186e-8,5.008726192415792e-4,4.237947661390274e-5,-1.4388889379628621e-8,5.009027064025104e-4,4.224906691188224e-5,-1.4355605708386248e-8,5.009844664141034e-4,4.200814399437556e-5,-1.4293595372097094e-8,5.011622958425812e-4,4.168457799010023e-5,-1.4208933086185455e-8,5.014648490094809e-4,4.133098997158663e-5,-1.4114222164068199e-8,5.018933871908035e-4,4.1014046129932506e-5,-1.4026120755346876e-8,5.024172779489319e-4,4.079629120466331e-5,-1.3960894019653134e-8,5.029800978344093e-4,4.0716851663191706e-5,-1.3929502673170868e-8,5.035149205751237e-4,4.0778803174321974e-5,-1.3934148788121047e-8,5.039631026052139e-4,4.0948067350335475e-5,-1.3967574412809247e-8,5.042898951464934e-4,4.116358529728348e-5,-1.4015214047407058e-8,5.044923433820881e-4,4.1354546447450864e-5,-1.405930760929713e-8,5.045980853346142e-4,4.145904379395495e-5,-1.4083628433054094e-8,5.046562864241187e-4,4.143903113694813e-5,-1.4077491031220824e-8,5.047237703547672e-4,4.128796116298141e-5,-1.4038013428869964e-8,5.048504577142612e-4,4.1029648300892024e-5,-1.3970152894372228e-8,5.050682042868694e-4,4.070946922079784e-5,-1.3884718542673423e-8,5.053857892959258e-4,4.038129871002777e-5,-1.3795175637434057e-8,5.057904773855169e-4,4.0094587167200846e-5,-1.3714342555419928e-8,5.062542972907671e-4,3.988514116215506e-5,-1.3651908298048012e-8,5.067420758582822e-4,3.9771018930213065e-5,-1.36131932106548e-8,5.072186700798977e-4,3.9752847710952766e-5,-1.3599056334601855e-8,5.076541049257842e-4,3.981679039448647e-5,-1.3606552572220539e-8,5.080265636895346e-4,3.993839829792082e-5,-1.3629887915207912e-8,5.083239056768367e-4,4.008625429723009e-5,-1.366134539027628e-8,5.085445405312649e-4,4.02251540015048e-5,-1.3692068130210929e-8,5.086982215653529e-4,4.031923748367069e-5,-1.3712790472901225e-8,5.088067942896942e-4,4.033585746282454e-5,-1.3714758380114217e-8,5.089042016332715e-4,4.0250984480183826e-5,-1.369110873241738e-8,5.090342370463796e-4,4.005630209267127e-5,-1.36387919547938e-8,5.09244162874289e-4,3.976656292219734e-5,-1.3560660497017656e-8,5.095732393487734e-4,3.942360984383623e-5,-1.3466737784983145e-8,5.100381218559963e-4,3.9092145563312785e-5,-1.3373334502326575e-8,5.106211663506831e-4,3.884421714299498e-5,-1.3299185546533904e-8,5.112695708256073e-4,3.873558642398053e-5,-1.325938777322804e-8,5.119093049859852e-4,3.878426446529394e-5,-1.3259745614206067e-8,5.124690770718819e-4,3.896273593345075e-5,-1.3294485083970076e-8,5.129030399538616e-4,3.920805997219822e-5,-1.3348486880023718e-8,5.13202292093832e-4,3.944384781038976e-5,-1.3402621757432825e-8,5.133926118135372e-4,3.9603311868793384e-5,-1.3439524368879208e-8,5.135225876503645e-4,3.964513077729718e-5,-1.344773648237942e-8,5.136484244188965e-4,3.955939833262208e-5,-1.3423498173910979e-8,5.138202846515992e-4,3.936503101320661e-5,-1.337045078206997e-8,5.140727251366115e-4,3.9101620258126494e-5,-1.3297891578819023e-8,5.144200439889327e-4,3.8818723273896924e-5,-1.3218230049065295e-8,5.148563248939854e-4,3.8565076244178615e-5,-1.31442269252279e-8,5.153592942705727e-4,3.8379720577811564e-5,-1.3086552229207539e-8,5.158965586590853e-4,3.8286402743178446e-5,-1.3052102047767048e-8,5.164325300028227e-4,3.829166482457637e-5,-1.3043289492522785e-8,5.169345624266961e-4,3.838611140678518e-5,-1.3058250794240458e-8,5.173773998025525e-4,3.854777091398222e-5,-1.3091694599441699e-8,5.177457469094699e-4,3.8746318140652295E-05,-1.3136024508001314e-8,5.180353753683765e-4,3.894721737733719e-5,-1.3182422098429487e-8,5.182533801875123e-4,3.9115464526579055e-5,-1.322176802538456e-8,5.184180207872244e-4,3.9219155018714586e-5,-1.3245479826195314e-8,5.185582174206982e-4,3.923339887816621e-5,-1.3246473160946539e-8,5.187121920390923e-4,3.9145162676454723e-5,-1.3220474590964729e-8,0.00051892397371530155,3.895909776742693e-5,-1.316773040159988e-8,5.192361363727685e-4,3.8702959631497384e-5,-1.3094695644609137e-8,5.19678041196177e-4,3.8429183553321686e-5,-1.3014701920521112e-8,5.20251698135249e-4,3.820781513346968e-5,-1.2946243125940887e-8,5.209217831712024e-4,3.810779889170091e-5,-1.2908049988956758e-8,5.216188239536118e-4,3.817071047034634e-5,-1.2912046211167408e-8,5.222596846655533e-4,3.8389929217076366e-5,-1.295764933741635e-8,5.227776981227885e-4,3.870942493105218e-5,-1.3031193682067312e-8,5.231462221446176e-4,3.90449333361414e-5,-1.3111251595486714e-8,5.233834624169179e-4,3.9315346546736246e-5,-1.3176687479802485e-8,5.235394281321812e-4,3.946752696132619e-5,-1.3213083897284422e-8,5.236754233317036e-4,3.9485713744511626e-5,-1.3215295714260378e-8,5.238462568216775e-4,3.9387314888452363e-5,-1.3186630329662888e-8,5.240896667697123e-4,3.921173128856953e-5,-1.3136310014778118e-8,5.244226644038686e-4,3.900801174331826e-5,-1.3076572242619164e-8,5.248426426550115e-4,3.882439799199982e-5,-1.3020069826079723e-8,5.253311937372029e-4,3.870065090327242e-5,-1.2977767650741354e-8,5.258593061790778e-4,3.8663123547147846e-5,-1.2957402470289928e-8,5.263931056407179e-4,3.8722437005912813e-5,-1.2962597830659435e-8,5.268994400545242e-4,3.887355383309786e-5,-1.2992693609541672e-8,5.273506944811689e-4,3.909786013135494e-5,-1.304323238147115e-8,5.277283618928682e-4,3.9366737045691754e-5,-1.310693161469982e-8,5.280251104455353e-4,3.964596224958332e-5,-1.3174889451303355e-8,5.282454335082373e-4,3.990022972843365e-5,-1.3237768428264953e-8,5.284052231946588e-4,4.009736888639202e-5,-1.3286836033079106e-8,5.285305494829884e-4,4.021225325537939e-5,-1.3314912562979519e-8,5.286557060394544e-4,4.0230579521206196e-5,-1.3317363974876683e-8,5.288202403339737e-4,4.015271335318547e-5,-1.3293259523465599e-8,5.290641459351538e-4,3.999743645858218e-5,-1.3246644881952389e-8,5.29420183065172e-4,3.980429049478516e-5,-1.3187490243689071e-8,5.299032094367221e-4,3.963165594186321e-5,-1.313141009986588e-8,5.304988417193463e-4,3.9546878333224285e-5,-1.3097054263167734e-8,5.311574317731786e-4,3.96065921173356e-5,-1.3100650126240523e-8,5.318014578119245e-4,3.98319165292681e-5,-1.3149038022273758e-8,5.32349611324718e-4,4.019180005671327e-5,-1.3234910936428494e-8,5.327485204893838e-4,4.0608738174731215e-5,-1.3338177317094923e-8,5.32993774836213e-4,4.098800442554419e-5,-1.3433731281722263e-8,5.331274981533502e-4,4.125409164773492e-5,-1.3501160283562443e-8,5.332164335123858e-4,4.137379163363762e-5,-1.353087213849061e-8,5.333259193608972e-4,4.13576666322837e-5,-1.3524569124303872e-8,5.335024650995162e-4,4.124644008992089e-5,-1.3491904463169542e-8,5.337679129261047e-4,4.109355822924989e-5,-1.3446225415098136e-8,5.341216559001369e-4,4.0951180469202836e-5,-1.340113134321436e-8,5.345463734211426e-4,4.0861572281668134e-5,-1.3368231159593744e-8,5.350143019353962e-4,4.0852955656746325e-5,-1.3355852072504397e-8,5.354928423825327e-4,4.093817556745151e-5,-1.3368381791204466e-8,5.359493976739728e-4,4.111506478866112e-5,-1.3406093750610092e-8,5.363555591240247e-4,4.136805710751307e-5,-1.3465430533373401e-8,5.366906062535734e-4,4.167087291184944e-5,-1.353970510439085e-8,5.369441549435876e-4,4.199017748541348e-5,-1.3620131233801054e-8,5.371176836764395e-4,4.229004758300979e-5,-1.3697055796399448e-8,5.372246939412618e-4,4.2536815840649555e-5,-1.376122922588961e-8,5.372894831724115e-4,4.2703741062777625e-5,-1.3804984921125316e-8,5.373446669618185e-4,4.277512234113474e-5,-1.3823300988072162e-8,0.00053742757544824975,4.27496117961429e-5,-1.3814764582700658e-8,5.375755603610683e-4,4.264248462223457e-5,-1.3782413644499372e-8,5.378200593904353e-4,4.2486472593883745e-5,-1.373430126808111e-8,5.381792508290428e-4,4.233015478549633e-5,-1.368338167500512e-8,5.386499283189473e-4,4.223204705859813e-5,-1.3646059069466792e-8,5.392010226639216e-4,4.224848840771485e-5,-1.3638780125339982e-8,5.397734225659609e-4,4.2415447202705524e-5,-1.3672723821927818e-8,5.402914650870005e-4,4.272937436938092e-5,-1.3748141826012162e-8,5.406870951769552e-4,4.3138228021123006e-5,-1.3851605137995859e-8,5.409276624223462e-4,4.355360016244392e-5,-1.3959259082476329e-8,5.410308634400444e-4,4.388299832113226e-5,-1.404572807505199e-8,5.410560312127462e-4,4.406544519190341e-5,-1.409387560046213e-8,5.410774246421454e-4,4.4090008179269903e-5,-1.4099829500317099e-8,5.411566007764416e-4,4.399025355105983e-5,-1.4071552354515442e-8,5.413273035270495e-4,4.3823916588713976e-5,-1.4023612135435341e-8,5.415945168970027e-4,4.365179453199496e-5,-1.3971835246327046e-8,5.41941678191083e-4,4.3523829968479546e-5,-1.3929763987744986e-8,5.423397870270695e-4,4.3473105445618066e-5,-1.3906988846966135e-8,5.427550475932729e-4,4.3515132910834864e-5,-1.3908697960636151e-8,5.431542404764803e-4,4.364960885200329e-5,-1.393582992804166e-8,5.435083954292767e-4,4.386290135691708e-5,-1.3985503452994463e-8,5.437955680521673e-4,4.413075019834189e-5,-1.4051648813651171e-8,5.440031193610353e-4,4.442130458093591e-5,-1.4125847171957948e-8,5.441294904295869e-4,4.4698775986850106e-5,-1.4198377383350764e-8,5.441851609821107e-4,4.4927902109817414e-5,-1.4259451932272639e-8,5.44192274379237e-4,4.5079042801761985e-5,-1.4300570677415424e-8,5.441825131835359e-4,4.513324877772769e-5,-1.4315854380231034e-8,5.441931678314615e-4,4.508643514283918e-5,-1.4303200161377657e-8,5.442616930190452e-4,4.495182030705989e-5,-1.4265097005812744e-8,5.444193252662113e-4,4.475992062198913e-5,-1.420891194830896e-8,5.446845113517835e-4,4.455563870804244e-5,-1.4146439051286658e-8,5.450570012046475e-4,4.439214140356481e-5,-1.4092482439868092e-8,5.455138259491807e-4,4.432123995689494e-5,-1.4062247519459378e-8,5.460091567979519e-4,4.4380529159655735e-5,-1.4067548181360422e-8,5.464806332929459e-4,4.457933352573298e-5,-1.411246534473196e-8,5.468639351101996e-4,4.488842557502628e-5,-1.41900303462031e-8,5.471137114483806e-4,4.5240836901430264e-5,-1.4282186009332701e-8,5.472228700801882e-4,4.5549104705021665e-5,-1.436459415403402e-8,5.472286408053625e-4,4.573542557700775e-5,-1.4415174862346914e-8,5.471991045330296e-4,4.576046398285103e-5,-1.4422216878027767e-8,5.47206448294467e-4,4.56349055279638e-5,-1.4387623676551349e-8,5.473019740297997e-4,4.5409058585348715e-5,-1.4324164571538933e-8,5.475045890269017e-4,4.5149831126079944e-5,-1.4249406835206891e-8,5.47803705825606e-4,4.4918876045973197e-5,-1.4180002072172085e-8,5.481698176479473e-4,4.4759851057189094e-5,-1.412830013525889e-8,5.48565692247331e-4,4.469494792163449e-5,-1.410125538583461e-8,5.489546078069922e-4,4.4727065395722936e-5,-1.4100722236229494e-8,5.493051789854964e-4,4.484400912140682e-5,-1.4124308082445898e-8,5.495938405083384e-4,4.5022613923846395e-5,-1.4166321890606745e-8,5.498062624304646e-4,4.523222436300298e-5,-1.4218687392005276e-8,5.499384595504489e-4,4.54378852388539e-5,-1.4271863647322725e-8,5.49997724894559e-4,4.560386201037831e-5,-1.4315865288538859e-8,5.500030030438457e-4,4.5697985530979016e-5,-1.434147018981161e-8,5.499839508065228e-4,4.5696843463098964e-5,-1.4341625669559141e-8,5.499779032270899e-4,4.559110119398946e-5,-1.4312908167490931e-8,5.500244181110129e-4,4.5389582007094315e-5,-1.4256724128095877e-8,5.50157883005538e-4,4.512048381923619e-5,-1.417984329569152e-8,5.503995686945172e-4,4.482844257285975e-5,-1.4093882581779136e-8,5.507511242321261e-4,4.456714389146746e-5,-1.4013561269086788e-8,5.511914791808575e-4,4.438847474538031e-5,-1.3953862718354635e-8,5.516785262955729e-4,4.43302010252111e-5,-1.3926532510634918e-8,5.521561635635225e-4,4.4404755979930705e-5,-1.3936611787065186e-8,5.525663239678071e-4,4.459220322119048e-5,-1.3979975801327925e-8,5.528642063231052e-4,4.484065587117192e-5,-1.4043007349154969e-8,5.530328973052125e-4,4.507661529127626e-5,-1.4105288308440919e-8,5.530916519570143e-4,4.522480506594574e-5,-1.4145236907282978e-8,5.530923528858961e-4,4.523202408225343e-5,-1.4147030087645297e-8,5.531031506537776e-4,4.5085084291692684e-5,-1.4105860437065999e-8,5.531855430718504e-4,4.4813819040833696e-5,-1.4028958709191986e-8,5.533755526889687e-4,4.447784879142051e-5,-1.3932084645392354e-8,5.536768815553462e-4,4.41448232435347e-5,-1.3833668292310375e-8,5.540662856310166e-4,4.387093911013423e-5,-1.3749517436350942e-8,5.545054107827476e-4,4.369036706870036e-5,-1.3689826206305373e-8,5.549526056740539e-4,4.3613801028485625e-5,-1.3658542876311258e-8,5.553711420623051e-4,4.363257224331595e-5,-1.3654223719707622e-8,5.55733434845886e-4,4.3724503286497815e-5,-1.3671440617076656e-8,5.560225166865299e-4,4.385919757848827e-5,-1.3702164569045507e-8,5.56232263778228e-4,4.400211587684637e-5,-1.3736921152732457e-8,5.563673733728169e-4,4.4117846392702796e-5,-1.376575922796316e-8,5.564433941300915e-4,4.4173372568585065e-5,-1.3779194966470485e-8,5.564864419333089e-4,4.414206095567587e-5,-1.3769317275568825e-8,5.565317072407061e-4,4.4008603643539826E-05,-1.373115531210439e-8,5.566196665612034e-4,4.377426004116058e-5,-1.3664180386757936e-8,5.567893255742785e-4,4.3460653879901505e-5,-1.3573495648336821e-8,5.5706903259323e-4,4.3109638309396154e-5,-1.3470018373719109e-8,5.574671621600434e-4,4.277713905643178e-5,-1.3369019224232388e-8,5.579663031544923e-4,4.25209069743737e-5,-1.3286905991693288e-8,5.585242506155931e-4,4.2385091814629774e-5,-1.323695369887385e-8,5.590827837639093e-4,4.238670958930531e-5,-1.322532616995296e-8,5.595820943030839e-4,4.2508928121728134e-5,-1.324879527303495e-8,5.599765436803205e-4,4.270375260425213e-5,-1.3295025360336303e-8,5.602470647653046e-4,4.290357624198227e-5,-1.3345467218010926e-8,5.604066433327727e-4,4.3038521618008536e-5,-1.3380135565607916e-8,5.604971361354452e-4,4.305496671614097e-5,-1.3382982052173816e-8,5.605778644400599e-4,4.293002467591174e-5,-1.3346289025681776e-8,5.607089623263255e-4,4.267729978794635e-5,-1.3272636519098559e-8,5.609347399582315e-4,4.234165410834814e-5,-1.3173718674744843e-8,5.61272824224999e-4,4.1984822487049506e-5,-1.3066489427049024e-8,5.617125088503604e-4,4.1667542738988164e-5,-1.2968201743518012e-8,5.622215885905281e-4,4.1434866394617e-5,-1.289219032748799e-8,5.627575830200749e-4,4.130882130901546e-5,-1.2845587660872705e-8,5.632786025023382e-4,4.1288594336048484e-5,-1.2829102735199409e-8,5.637508743402848e-4,4.135555763250854e-5,-1.2838217765699319e-8,5.641523616550949e-4,4.147987966628914e-5,-1.2864954028178306e-8,5.644734987008431e-4,4.1626480056051095e-5,-1.2899567931198906e-8,5.647164882240774e-4,4.1759528984558676e-5,-1.2931887162585448e-8,5.648942535231952e-4,4.184578296212132e-5,-1.2952297818560158e-8,5.650294889116143e-4,4.1857547900959665e-5,-1.2952577895423737e-8,5.651535715361088e-4,4.177605896823371e-5,-1.2926828568155383e-8,5.653044894483615e-4,4.159567182824132e-5,-1.287267633441649e-8,5.655225692094629e-4,4.132839759346974e-5,-1.279266224815386e-8,5.658430328778544e-4,4.100697766475647e-5,-1.2695307297663935e-8,5.662857653330005e-4,4.068344030322492e-5,-1.2594934042639526e-8,5.668451659124272e-4,4.042019197207262e-5,-1.2509327194232984e-8,5.674853336557398e-4,4.027347907363591e-5,-1.2455107328985577e-8,5.681455713211361e-4,4.027408208489247e-5,-1.244214622307206e-8,5.68756746685192e-4,4.0414004798879e-5,-1.2469513131187434e-8,5.692626340933667e-4,4.0646580039138516e-5,-1.2525133623159566e-8,5.696369955166504e-4,4.090066807453131e-5,-1.2589478046435055e-8,5.698896665275624e-4,4.110245921092196e-5,-1.2641551835441664e-8,5.700608716068607e-4,4.1195953729986446e-5,-1.2664715990718236e-8,5.702077505850598e-4,4.1155798139361454e-5,-1.2650540717421748e-8,5.703884759901265e-4,4.099042424392756e-5,-1.2600051493450478e-8,5.706483903579017e-4,4.073662588412746e-5,-1.2522583891047876e-8,5.710109691405875e-4,4.0448332338844876e-5,-1.243290518949643e-8,5.714748841309391e-4,4.0182934684654553E-05,-1.2347452802728689e-8,5.720170435890389e-4,3.9988544477136714e-5,-1.2280615128135358e-8,5.726001321744273e-4,3.9895057969472874e-5,-1.2241921421025485e-8,5.731821206679281e-4,3.991064069654339e-5,-1.2234717623019245e-8,5.737250198595423e-4,4.002343402058786e-5,-1.2256397133360156e-8,5.742009861844149e-4,4.0206784374766535e-5,-1.2299779958393722e-8,5.745952088943357e-4,4.042579305071043e-5,-1.2355009254206567e-8,5.749061274942017e-4,4.064339540438695e-5,-1.2411383146639144e-8,5.751440773201222e-4,4.0825069665894794e-5,-1.2458778726029885e-8,5.753293799587323e-4,4.094221059405223e-5,-1.2488629625521792e-8,5.754904006567578e-4,4.097477176506438e-5,-1.2494646793562146e-8,5.756615125629631e-4,4.0913864151746437e-5,-1.2473547362790684e-8,5.758803459554417e-4,4.076472695839921e-5,-1.24259847650868e-8,5.761832436211499e-4,4.0549772255380785e-5,-1.2357617600292305e-8,5.765979379808243e-4,4.0310124351701156e-5,-1.2279811549458918e-8,5.771336876089873e-4,4.010269549721812e-5,-1.2209012413795871e-8,5.777716895829274e-4,3.9989598090760646e-5,-1.2163757626176808e-8,5.784616465902294e-4,4.001937776225071e-5,-1.2159125570823381e-8,5.791308482835355e-4,4.020580099469462e-5,-1.2200322952745242e-8,5.797065295022585e-4,4.0515899636114696e-5,-1.2278907274980914e-8,5.80142457888133e-4,4.087731150446172e-5,-1.2374661952472232e-8,5.804354401798264e-4,4.120363917341638e-5,-1.2462792256088949e-8,5.806232139856671e-4,4.142456024104346e-5,-1.2522577976320966e-8,5.807671988462954e-4,4.1505812543823224e-5,-1.2543184545504214e-8,5.809309310098887e-4,4.145299058481706e-5,-1.2524943479233836e-8,5.811633911987712e-4,4.130273058000135e-5,-1.2477155055317291e-8,5.814906054594975e-4,4.110843349549538e-5,-1.241437134424403e-8,5.819145513730104e-4,4.092617541810449e-5,-1.2352610977888855e-8,5.824169208822125e-4,4.0803658015597504e-5,-1.2306198503680667e-8,5.829655041898003e-4,4.077300848955851e-5,-1.2285457641107754e-8,5.835216304790936e-4,4.08473506951388e-5,-1.2295353076190144e-8,5.840475044047213e-4,4.1020878040647856e-5,-1.2335168157344423e-8,5.845123946407954e-4,4.1271912795883656e-5,-1.2399194688289209e-8,5.848968676341912e-4,4.1568009920163966e-5,-1.247819580484653e-8,5.851947152164219e-4,4.1871931312817365e-5,-1.2561243079423654e-8,5.854127287371877e-4,4.214737362730478e-5,-1.2637501168654626e-8,5.855689082537816e-4,4.236363657066199e-5,-1.2697641820982583e-8,5.856898580934266e-4,4.2498978178316354e-5,-1.2734800220127118e-8,5.85807889067023e-4,4.254292268264029e-5,-1.2745207957826337e-8,5.859579513795578e-4,4.249795347224145e-5,-1.272871639020561e-8,5.861741086786202e-4,4.2380895742717424e-5,-1.2689360718495551e-8,5.8648484953241e-4,4.2223796026970555e-5,-1.2635890084310931e-8,5.869065735812319e-4,4.2073073991807874e-5,-1.2581801894459312e-8,5.874356319421588e-4,4.19846475120227e-5,-1.2544061137121026e-8,5.880413756125081e-4,4.201259995003142e-5,-1.2539678227518325e-8,5.886653049404993e-4,4.219108683589354e-5,-1.2580052638216501e-8,5.8923238679551e-4,4.2514839582835756e-5,-1.266480189970253e-8,5.896756386652956e-4,4.2930283800824865e-5,-1.2778839288959433e-8,5.89964101552167e-4,4.334851356362142e-5,-1.2896139522771572e-8,5.901171113360668e-4,4.367814905014522e-5,-1.298951948589008e-8,5.901947880698806e-4,4.38602737483596e-5,-1.3040992057450742e-8,5.902714285460607e-4,4.3885736496831144e-5,-1.3046861211874255e-8,5.904086373518427e-4,4.3789236335983746e-5,-1.3016096632518927e-8,5.90640488345573e-4,4.362965960038413e-5,-1.2964884842237333e-8,5.90971946441086e-4,4.34695603945582e-5,-1.2911008855333938e-8,5.913852195337234e-4,4.336092270372908e-5,-1.2869904121306538e-8,5.918485774305888e-4,4.333812126088688e-5,-1.285252461742886e-8,5.923245446952727e-4,4.3416150897318016e-5,-1.2864501648532461e-8,5.927764593066211e-4,4.359190961413261e-5,-1.2906114467297666e-8,5.931734732856898e-4,4.384714236114294e-5,-1.2972841846778543e-8,5.934942150203255e-4,4.4152466088083324e-5,-1.3056421398296158e-8,5.937291030815587e-4,4.447215885443439e-5,-1.3146311817982143e-8,5.938811933955622e-4,4.47693426906656e-5,-1.3231356330999967e-8,5.93965485886057e-4,4.5011077674093984e-5,-1.3301399351245954e-8,5.94006799600864e-4,4.5172770496475155e-5,-1.334862131885749e-8,5.940365840398179e-4,4.5241413682133494e-5,-1.336846818500244e-8,5.940891110207756e-4,4.521750624615486e-5,-1.3360212923084611e-8,5.941973595900601e-4,4.511571456359875e-5,-1.3327250246980502e-8,5.943887128092454e-4,4.4964352725929755e-5,-1.3277177720368145e-8,5.946803298205737e-4,4.480359021479988e-5,-1.3221572693952441E-08,5.950740552025116e-4,4.4681698944798734e-5,-1.3175121289205661e-8,5.955515209880322e-4,4.4648007751150914e-5,-1.3153551831570361e-8,5.960715426732222e-4,4.474149532569575e-5,-1.3169977028198143e-8,5.965733804112413e-4,4.4975795704802126e-5,-1.3229934760324216e-8,5.969897334847129e-4,4.5325368620618036e-5,-1.3326761651752678e-8,5.972695820723137e-4,4.572244176421522e-5,-1.3440440521292401e-8,5.974020923934746e-4,4.607385900358259e-5,-1.3542760448690568e-8,5.974260041454101e-4,4.6295468638069834e-5,-1.3607887991505155e-8,5.974149745012774e-4,4.63461491160932e-5,-1.3622690856111841e-8,5.974464645346873e-4,4.62408255489987e-5,-1.3590608456208522e-8,5.975733330563519e-4,4.603711609863486e-5,-1.3527729382284185e-8,5.978120949073726e-4,4.5808229996933905e-5,-1.3455010772294891e-8,5.981476506938362e-4,4.561887790575258e-5,-1.3391473757723922e-8,5.985457456463102e-4,4.551241536514983e-5,-1.3350535217826406e-8,5.989652880636257e-4,4.550820785410715e-5,-1.3339057205444769e-8,5.993671400674556e-4,4.560473672048171e-5,-1.3357888193002322e-8,5.997192571010954e-4,4.578464443118222e-5,-1.340296607210915e-8,5.999993638835912e-4,4.601975491101805e-5,-1.3466562670281527e-8,6.001963194062474e-4,4.627562551405624e-5,-1.353859250547407e-8,6.003106951839153e-4,4.651585668922163e-5,-1.3607999789540018e-8,6.003545828554706e-4,4.670640694476506e-5,-1.3664190858733449e-8,6.003504102879558e-4,4.681993271445912e-5,-1.3698426655564152e-8,6.003285040062579e-4,4.6839792267256964e-5,-1.3705039077842174e-8,6.003233654665366e-4,4.6763054815347505e-5,-1.3682318721009288e-8,6.00368980029104e-4,4.6601915443853456e-5,-1.3632979669015082e-8,6.004936892972919e-4,4.638313791509782e-5,-1.3564152706925421e-8,6.007152397239569e-4,4.6145339984406526e-5,-1.348684271745055e-8,6.010365913857648e-4,4.5934168128419516e-5,-1.3414767746104295e-8,6.014429942225124e-4,4.5795480210201754e-5,-1.3362464203894209e-8,6.019011057532637e-4,4.576653383496385e-5,-1.334252963495435e-8,6.023615895275835e-4,4.586559553492988e-5,-1.3362105344807452e-8,6.027669935205449e-4,4.608188309838632e-5,-1.3419300705541302e-8,6.030658883371729e-4,4.6370003546858796e-5,-1.350105745458068e-8,6.032312519987232e-4,4.66548633865428e-5,-1.3584497719127712e-8,6.032758091670896e-4,4.685133527899667e-5,-1.3643100300052348e-8,6.032535495762095e-4,4.6894725810143705e-5,-1.365628640799527e-8,6.03241729155245e-4,4.6767362660908595e-5,-1.3617683021674188e-8,6.033108166392385e-4,4.65049510596044e-5,-1.3537085025814027e-8,6.034993182490741e-4,4.617895985207165e-5,-1.3435213551070888e-8,6.038060843341433e-4,4.5867317225684895e-5,-1.3335114749071355e-8,6.041994185155103e-4,4.563018257654167e-5,-1.3255104395874068e-8,6.046332663829588e-4,4.549926714185694e-5,-1.3205572436516151e-8,6.05061438746373e-4,4.5478931464839044e-5,-1.3189054107180226e-8,6.054462336936745e-4,4.555306960662015e-5,-1.3201909329785792e-8,6.05762009514742e-4,4.5692876070382345e-5,-1.3236331295070042e-8,6.059957599659084e-4,4.586321651672058e-5,-1.3282117826334546e-8,6.061465022300673e-4,4.6027351570760987e-5,-1.332813231699191e-8,6.062243702543427e-4,4.615066462844048e-5,-1.3363565264245378e-8,6.062495021200464e-4,4.620409516581872e-5,-1.3379104609315037e-8,6.062503718534889e-4,4.616766157689615e-5,-1.3368067825864579e-8,6.062610395188557e-4,4.6033924576426214e-5,-1.3327457601791911e-8,6.063169469718518e-4,4.581063544655485e-5,-1.3258772884036288e-8,6.064494044595206e-4,4.55215188896636e-5,-1.3168331958415403e-8,6.066795318747286e-4,4.52042881604833e-5,-1.3066866709055663e-8,6.070128998625647e-4,4.490545427349359e-5,-1.2968213330564991e-8,6.074363111856063e-4,4.467226793872749e-5,-1.2887087372606102e-8,6.079179098524724e-4,4.4543009907630994e-5,-1.2836174421477544e-8,6.084112436310817e-4,4.453736700212919e-5,-1.282297992625794e-8,6.08863370461571e-4,4.464886329443632e-5,-1.2847073663286673e-8,6.092264758703546e-4,4.4841679024146196e-5,-1.289860746681526e-8,6.094712937410751e-4,4.505445305432866e-5,-1.2959127922180999e-8,6.095987972448405e-4,4.521292039621171e-5,-1.3005410854173592e-8,6.096448764943399e-4,4.5250510079934645e-5,-1.3016030794821033e-8,6.096730138384927e-4,4.513114561506076e-5,-1.2978711001202054e-8,6.097545631549566e-4,4.486402580498518e-5,-1.2895124516848801e-8,6.099439852908066e-4,4.450134061490781e-5,-1.2780348513948726e-8,6.102610819546051e-4,4.4118743907326676e-5,-1.265702267633818e-8,6.106884949894511e-4,4.378880296374916e-5,-1.2547376438516559e-8,6.111831302385094e-4,4.356052924504412e-5,-1.2467023709897674e-8,6.116930853079845e-4,4.3451843285146805e-5,-1.2422507196552202e-8,6.121718091847651e-4,4.3453283807383274e-5,-1.2412110270198072e-8,6.125859229567852e-4,4.3537061943772174e-5,-1.242828767855344e-8,6.129174051327997e-4,4.3666315988779066e-5,-1.2460290569013057e-8,6.131625421240779e-4,4.380214478201701e-5,-1.249629588729844e-8,6.133297797994605e-4,4.390824915390768e-5,-1.2524935334363993e-8,6.134376059320164e-4,4.395405443660182e-5,-1.2536392208869133e-8,6.135126429920539e-4,4.391729178049016e-5,-1.2523285610369912e-8,6.135875232541355e-4,4.37866565556534e-5,-1.248151062142838e-8,6.136978474050366e-4,4.3564553195397556e-5,-1.2411078877572878e-8,6.138776204707606e-4,4.3269171658970975e-5,-1.2316794930864575e-8,6.141531157431434e-4,4.293451537346142e-5,-1.2208394276352459e-8,6.145360882992824e-4,4.260690395661579e-5,-1.2099680577646451e-8,6.150183068876578e-4,4.233718420343913e-5,-1.2006354865178858e-8,6.155698862543469e-4,4.216944569007125e-5,-1.194266561911202e-8,6.161432780116315e-4,4.212893829735594e-5,-1.191760894514987e-8,6.166829962369822e-4,4.221304211145604e-5,-1.1931838226690434e-8,6.171390028809723e-4,4.2388733189199025e-5,-1.1976435073662864e-8,6.174801786565707e-4,4.2598204728411776e-5,-1.2034228597516467e-8,6.177039713164523e-4,4.2771969148489644e-5,-1.2083631887323418e-8,6.178390324477566e-4,4.284658717591776e-5,-1.2104190944765916e-8,6.179391490155112e-4,4.2782467541547576e-5,-1.2082381407395732e-8,6.180690499519215e-4,4.257622589977647e-5,-1.2015807665370394e-8,6.182856981106309e-4,4.2262641290182364e-5,-1.1914142478848567e-8,6.186214061728539e-4,4.1904306638940616e-5,-1.1796159869780265e-8,6.190753692770967e-4,4.1572254817565175e-5,-1.168386155567887e-8,6.196167242703293e-4,4.1325277041778395e-5,-1.1596058210408694e-8,6.201967488488639e-4,4.119594759437842e-5,-1.1543865254199268e-8,6.20764019662867e-4,4.118716574602068e-5,-1.1529328261415304e-8,6.21276549030351e-4,4.127757978552318e-5,-1.154678533548196e-8,6.217080946567695e-4,4.143120927489927e-5,-1.1585638643255654e-8,6.220491812385284e-4,4.1606888823869886e-5,-1.1633240123016763e-8,6.223049974865838e-4,4.176527688606243e-5,-1.1677161479087305e-8,6.224922388533137e-4,4.1873203335198556e-5,-1.1706688765447071e-8,6.226360955927154e-4,4.1906205539858945e-5,-1.1713717885084007e-8,6.227676718629662e-4,4.185030251602371e-5,-1.1693341505436549E-08,6.229214415278793e-4,4.1703735041523074e-5,-1.1644381723185078e-8,6.231319853664534e-4,4.147878640125714e-5,-1.1569970337746821e-8,6.234292802965761e-4,4.120299476324085e-5,-1.1478018587251494e-8,6.238323413543623e-4,4.0918246606836314e-5,-1.1381111507640178e-8,6.243421835840833e-4,4.067585345858345e-5,-1.1295177991775304e-8,6.249366570621865e-4,4.052646987191822e-5,-1.1236482520549367e-8,6.255707246045346e-4,4.0506051125566727e-5,-1.1217220872998886e-8,6.261847863392266e-4,4.062225481812146e-5,-1.124105993740093e-8,6.267202336075681e-4,4.08475845493812e-5,-1.1300642714626034e-8,6.271371716095217e-4,4.112393555640522e-5,-1.1378640363826194e-8,6.274272002337375e-4,4.137818217173511e-5,-1.1452374173663731e-8,6.276160661029025e-4,4.1543172110683946e-5,-1.1500321761911784e-8,6.277555903893943e-4,4.157642470580568e-5,-1.1508102924530854e-8,6.27908422691926e-4,4.147064598947023e-5,-1.1472061584588963e-8,6.281309101857208e-4,4.125382444025051e-5,-1.1399670417759892e-8,6.284589806615875e-4,4.0979990293322234e-5,-1.1307001676311571e-8,6.289004951050204e-4,4.071397673517665e-5,-1.1214196847662963e-8,6.294355537344494e-4,4.051475934856745e-5,-1.1140281814471427e-8,6.300239373611482e-4,4.0422039237037176e-5,-1.1098767800734435e-8,6.306167817204206e-4,4.044943019418976e-5,-1.1095165829009265e-8,6.311685570877783e-4,4.058515042629986e-5,-1.1126836428171848e-8,6.316459742628735e-4,4.079850842401508e-5,-1.1184776656645354e-8,6.320322305868174e-4,4.104897677346346e-5,-1.1256406714476454e-8,6.323269912046183e-4,4.129481071708473e-5,-1.1328374881368757e-8,6.325436800244089e-4,4.149944694038418e-5,-1.138873428162963e-8,6.327057717418874e-4,4.16353572641571e-5,-1.142829124798009e-8,6.3284320211077e-4,4.168599958414399e-5,-1.144127484924841e-8,6.329892507073682e-4,4.1646813714983565e-5,-1.1425641935138297e-8,6.331776221375067e-4,4.1525972124440285e-5,-1.1383308731724334e-8,6.334390698103364e-4,4.134505386970275e-5,-1.1320431548573354e-8,6.337968406765966e-4,4.1139068109295805e-5,-1.1247577530122925e-8,6.342606793062239e-4,4.0954382499360176e-5,-1.1179279984573037e-8,6.34820349377044e-4,4.084256691331992e-5,-1.1132243894526839e-8,6.354414692002509e-4,4.084884439949683e-5,-1.1121682761778917e-8,6.360679001502076e-4,4.0996568100376256e-5,-1.1156195968997953e-8,6.366339468110234e-4,4.1273455162251384e-5,-1.1233067444498262e-8,6.370847593082296e-4,4.162814226045832e-5,-1.1336844237008164e-8,6.37396720814852e-4,4.1982708229566924e-5,-1.1443112874876232e-8,6.375870858518857e-4,4.225789061658065e-5,-1.1526456467575253e-8,6.377074182492132e-4,4.239935949578947e-5,-1.1568844891267493e-8,6.378247532323368e-4,4.239301187350808e-5,-1.1564617122042744e-8,6.380001550354765e-4,4.226467189936685e-5,-1.1520634437041544e-8,6.382730696351323e-4,4.20678159364482e-5,-1.145275407366425e-8,6.386547983664781e-4,4.186642207611976e-5,-1.1380759726833166e-8,6.391301491825187e-4,4.1718969727590826e-5,-1.1323481608403951e-8,6.396645134501095e-4,4.16669354931265E-05,-1.1295058824572489e-8,6.402135211432802e-4,4.1728883630486846e-5,-1.130272523179324e-8,6.407329313863037e-4,4.189994975384543e-5,-1.1346210158588048e-8,6.411869273337647e-4,4.215579668992807e-5,-1.141864418294653e-8,6.415535317098374e-4,4.245951292741821e-5,-1.1508603446175233e-8,6.418266451670236e-4,4.276953906141313e-5,-1.160268944345754e-8,6.420150711981394e-4,4.3046889911181794e-5,-1.168800792468656e-8,6.42139481568027e-4,4.326056338850396e-5,-1.1754073581974093e-8,6.422284650134046e-4,4.3390762964130205e-5,-1.1793939423120785e-8,6.423145863944254e-4,4.343025232088572e-5,-1.1804643333497793e-8,6.424308611712833e-4,4.3384560725109035e-5,-1.1787259369334247e-8,6.426075271147033e-4,4.327164998942055e-5,-1.1746830998873365e-8,6.428686772623222e-4,4.312121499188235e-5,-1.1692290186969063e-8,6.43228211111064e-4,4.297319789412587e-5,-1.163620160738782e-8,6.436849034127897e-4,4.2874338512484316e-5,-1.1593853762600689e-8,6.442175178239869e-4,4.287106863696716e-5,-1.1581024865378009e-8,6.447826241944376e-4,4.299769946587701e-5,-1.1610003778983072e-8,6.453192106631316e-4,4.326148989808878e-5,-1.1684410461728622e-8,6.457633643151136e-4,4.363072674477005e-5,-1.179495428359945e-8,6.460709780358178e-4,4.403539258500074e-5,-1.1919425251124777e-8,6.46238269440531e-4,4.438654427814625e-5,-1.202896701159812e-8,6.463067360377512e-4,4.460863357575101e-5,-1.2098638955452586e-8,6.463473522053487e-4,4.466782983677177e-5,-1.2116629130642991e-8,6.464328198700985e-4,4.458091988511223e-5,-1.2087172530117929e-8,6.466134080396352e-4,4.440296244483021e-5,-1.2026767218001455e-8,6.469062893985017e-4,4.420432212394621e-5,-1.1957162905655501e-8,6.472980673486538e-4,4.4049415375376975e-5,-1.1898899064049858e-8,6.477545569824074e-4,4.398348465637827e-5,-1.1867178141227173e-8,6.482321283936542e-4,4.402769158632383e-5,-1.1870077472484313e-8,6.486874451684293e-4,4.4180110616365914e-5,-1.190843181001741e-8,6.490845942283705e-4,4.442004791255551e-5,-1.1976767655848106e-8,6.493996674170178e-4,4.471399475420608e-5,-1.2064930829832403e-8,6.496230132730473e-4,4.502224997790057e-5,-1.2160170877601224e-8,6.497593165315699e-4,4.530541463222377e-5,-1.2249376594925378e-8,6.498257985589669e-4,4.5530023897967826e-5,-1.2321106524374785e-8,6.498490150835266e-4,4.5672787320462324e-5,-1.2367125184429808e-8,6.49860849248668e-4,4.5723111388483726e-5,-1.2383285624306336e-8,6.498943459428724e-4,4.56838734642481e-5,-1.2369777794004631e-8,6.499798483583396e-4,4.5570805788698724e-5,-1.2330940194194202e-8,6.50141540921297e-4,4.5410946737608354e-5,-1.2274858062634918e-8,6.50394252361549e-4,4.524034632505981e-5,-1.2212820673742356e-8,6.507402898474811e-4,4.510081644081227e-5,-1.2158498221920027e-8,6.511662941424877e-4,4.503501619399875e-5,-1.2126476181320007e-8,6.516409652377725e-4,4.507883196177047e-5,-1.2129687005367259e-8,6.521158333795178e-4,4.525065636203942e-5,-1.2175577965498676e-8,6.525322031476455e-4,4.553941364164363e-5,-1.2261726884082065e-8,6.528365381010586e-4,4.5896913451435045e-5,-1.2372957541494924e-8,6.53001864278318e-4,4.6243075736359524e-5,-1.2482966177543175e-8,6.530450153429226e-4,4.6489294263523875e-5,-1.2562182212005331e-8,6.530262302326049e-4,4.657300931178719e-5,-1.2589338662501737e-8,6.530266241761063e-4,4.6484341852986244e-5,-1.2560253186849565e-8,6.531153745404709e-4,4.626789168937222e-5,-1.248839206681805e-8,6.533259500794602e-4,4.600025166059354e-5,-1.2397689341809364e-8,6.536518626923442e-4,4.5759473698595974e-5,-1.2312978138197302e-8,6.540578644141293e-4,4.56028117197643e-5,-1.2253084886290816e-8,6.544960449519266e-4,4.555825704891566e-5,-1.222809841334969e-8,6.549192256583115e-4,4.562646405711048e-5,-1.2239671643138295e-8,6.552892641813089e-4,4.578752220519903e-5,-1.2282737836356728e-8,6.555809511761707e-4,4.6008638879196065e-5,-1.23475952409882e-8,6.557831063329746e-4,4.625097547136351e-5,-1.2421941128098137e-8,6.558981448308248e-4,4.647540239116749e-5,-1.2492798538365653e-8,6.559406151232579e-4,4.664739366488725e-5,-1.2548313680324879e-8,6.55934795368779e-4,4.674108669115587e-5,-1.2579299722569738e-8,6.559114262674878e-4,4.674234926529412e-5,-1.258037528172128e-8,6.559037475636952e-4,4.6650576798607184e-5,-1.2550589153337167e-8,6.559431799480559e-4,4.647890047352641e-5,-1.2493483386171588e-8,6.560551490320222e-4,4.625272895401807e-5,-1.241665830734056e-8,6.562554736211841e-4,4.6006843480568736e-5,-1.2330965549949725e-8,6.565475621712678e-4,4.5781298533340715e-5,-1.224938677601268e-8,6.569205673771478e-4,4.561626701972796e-5,-1.2185538559539806e-8,6.573487109405446e-4,4.554580590585966e-5,-1.2151659149246088e-8,6.577924153502072e-4,4.5590415220543125e-5,-1.215594635662814e-8,6.58202593113294e-4,4.574881097857109e-5,-1.2199412084801173e-8,6.585297262397721e-4,4.59909687918636e-5,-1.2273096298199133e-8,6.587382425042407e-4,4.62568085760598e-5,-1.2357324481940705e-8,6.588231495329708e-4,4.646624084061321e-5,-1.2425073606254522e-8,6.588204978599106e-4,4.65431768960108e-5,-1.2450244405357208e-8,6.588012287440477e-4,4.644637290291428e-5,-1.2418191579088436e-8,6.588458419334591e-4,4.61899779128904e-5,-1.2332619928155143e-8,6.590119357198074e-4,4.5838877755827045e-5,-1.2214031205022718e-8,6.593137391720427e-4,4.548068499544168e-5,-1.2090617955505468e-8,6.597236153319567e-4,4.519227164557173e-5,-1.1987544773090963e-8,6.601895628610029e-4,4.5018724180246425e-5,-1.1920237507966108e-8,6.606554423138694e-4,4.49697296954195e-5,-1.189308702067798e-8,6.610749674083071e-4,4.502738150794323e-5,-1.1901620274760557e-8,6.614178803084616e-4,4.515738862713096e-5,-1.1935726383931564e-8,6.616706357616994e-4,4.531887849385159e-5,-1.1982572911828448e-8,6.61834447382716e-4,4.547133072107415e-5,-1.2028824379413137e-8,6.6192264137107e-4,4.5579126378920714e-5,-1.2062283892577649e-8,6.619580115031964e-4,4.561475770029697e-5,-1.2073180904243843e-8,6.619700433900955e-4,4.556135838574398e-5,-1.2055197467963607e-8,6.61991699576438e-4,4.5414661343623503e-5,-1.200620365179172e-8,6.620555712945934e-4,4.51840896179602e-5,-1.1928622796913211e-8,6.621894741458482e-4,4.489240920507422e-5,-1.182931385336294e-8,6.624119923538018e-4,4.457342997377879e-5,-1.1718880084197724e-8,6.627287685916333e-4,4.4267655432898346e-5,-1.1610397059841187e-8,6.631303288208212e-4,4.401622188040044e-5,-1.1517614629584648e-8,6.635920520441031e-4,4.3853814799379214e-5,-1.1452739383809711e-8,6.640766309640293e-4,4.3801500136949246e-5,-1.1423990223408127e-8,6.645391547065707e-4,4.3860465762502585e-5,-1.1433213609765761e-8,6.649348907757294e-4,4.400781803244625e-5,-1.1474022268078109e-8,6.652295738743438e-4,4.4196208170768975e-5,-1.1531237312247409e-8,6.654109062286146e-4,4.435975285734818e-5,-1.1582666541464982e-8,6.654978651706966e-4,4.442827675775156e-5,-1.1603994416442983e-8,6.655421492594667e-4,4.434891282437948e-5,-1.1576365369570233e-8,6.656163939754637e-4,4.410816482066763e-5,-1.1494114352982963e-8,6.657897957674164e-4,4.3742356818358154e-5,-1.136844192019311e-8,6.661014873919342e-4,4.332714263267976e-5,-1.1223980436229123e-8,6.66546435586102e-4,4.294919512763321e-5,-1.1089453851181167e-8,6.670813088959861e-4,4.267547632709114e-5,-1.0987569771282318e-8,6.676444956798761e-4,4.2535713727573955e-5,-1.0929181332560628e-8,6.681774843805674e-4,4.252258156620681e-5,-1.0913107238000703e-8,6.686384044883153e-4,4.260325002735994e-5,-1.0929587800350869e-8,6.690062161390295e-4,4.2733346818073974e-5,-1.0964592948012124e-8,6.692787368457985e-4,4.286787118068754e-5,-1.1003310653399214e-8,6.694682707915127e-4,4.296777011126571e-5,-1.1032406940396475e-8,6.695972389198812e-4,4.300322240539698e-5,-1.1041321064106932e-8,6.696946149272839e-4,4.295523829967347e-5,-1.1023008875669534e-8,6.697929196037282e-4,4.2816698354687566e-5,-1.0974419442589062e-8,6.699251733474295e-4,4.2593196764431914e-5,-1.0896807753560433e-8,6.701212865700194e-4,4.230341044442153e-5,-1.0795842637994127e-8,6.704037174690174e-4,4.1978221761531796e-5,-1.0681328919295532e-8,6.707828559139265e-4,4.1657672615155404e-5,-1.0566288547495148e-8,6.712532690016723e-4,4.138524242901553e-5,-1.0465216530512158e-8,6.717922865944109e-4,4.119981360746378e-5,-1.0391550497627238e-8,6.723621835534646e-4,4.112674104581725e-5,-1.0354712996658229e-8,6.729163674503193e-4,4.117028254115718e-5,-1.0357404924622589e-8,6.734087601805087e-4,4.1309743555585105e-5,-1.0393953428156289e-8,6.738045432664134e-4,4.150094656252346e-5,-1.0450378613876328e-8,6.740899326696811e-4,4.168357203370962e-5,-1.0506544084907395e-8,6.742784623792691e-4,4.1793849405908306e-5,-1.0540362360195925e-8,6.744112537778521e-4,4.178074134045985e-5,-1.053345924363471e-8,6.745493044657425e-4,4.1621948675312874e-5,-1.0476951591107518e-8,6.747577135709221e-4,4.1334207987166106e-5,-1.0375304924468307e-8,6.750854372839487e-4,4.097200972504231e-5,-1.0246168788815136e-8,6.755482329271165e-4,4.0612262569480024e-5,-1.0115334350837037e-8,6.761231653952755e-4,4.032957409188221e-5,-1.0008413784011982e-8,6.767578521833027e-4,4.017301604488647e-5,-9.94290139609733e-9,6.773894310269758e-4,4.015465619698559e-5,-9.924065754328441e-9,6.779636072244319e-4,4.025271194279116e-5,-9.945684323589636e-9,6.784462992592076e-4,4.042426218751692e-5,-9.994032077050076e-9,6.788262531519046e-4,4.0619750895181834e-5,-1.0052621713449427e-8,6.791114670866537e-4,4.0793953317949755e-5,-1.0105937498144301e-8,6.793233103813246e-4,4.091197852871128e-5,-1.0141630257049476e-8,6.794909850969935e-4,4.0951453051865014e-5,-1.01514585939184e-8,6.7964728168145e-4,4.090274064307937e-5,-1.0131510062344522e-8,6.798254076015645e-4,4.076859742149239e-5,-1.0082138915684628e-8,6.800561699820016e-4,4.0563850495158245e-5,-1.0007849266961698e-8,6.8036477449427e-4,4.031492566409186e-5,-9.917132870207206e-9,6.807668440871827e-4,4.0058407100975396e-5,-9.822042726828585e-9,6.812639721347429e-4,3.98374389784475e-5,-9.737104678895134e-9,6.818400995093161e-4,3.9695020030860256e-5,-9.677186556046806e-9,6.824608377364019e-4,3.966437272967973e-5,-9.65429089058683e-9,6.830778514977682e-4,3.975846050622824e-5,-9.673896804332269e-9,6.8363893699842e-4,3.996251016407234e-5,-9.732153955509115e-9,6.841017372567231e-4,4.023361206932423e-5,-9.815394137449953e-9,6.844466228191916e-4,4.05092582535884e-5,-9.902727164968086e-9,6.846838738110617e-4,4.072297495515305e-5,-9.971213593928136e-9,6.848523051199315e-4,4.082220466885166e-5,-1.000201594026922e-8,6.850095982123903e-4,4.07828469698932e-5,-9.98560223372568e-9,6.852171873960667e-4,4.0616222783899834e-5,-9.924483469796086e-9,6.855238737488718e-4,4.036653532224773e-5,-9.832728989987601e-9,6.859526224257744e-4,4.00993290741107e-5,-9.732322816114245e-9,6.86494446675017e-4,3.988386503340198e-5,-9.647264291981038e-9,6.871115650576727e-4,3.977452661168896e-5,-9.597109977300679e-9,6.877489646437295e-4,3.979728759741124e-5,-9.592045225736865e-9,6.883501673843535e-4,3.994563772478752e-5,-9.631095222420986e-9,6.888714062386018e-4,4.018638516815171e-5,-9.70376889018204e-9,6.89289773006254e-4,4.047168422173579e-5,-9.79400284884246e-9,6.896042371432542e-4,4.075196513064055e-5,-9.884614283434994e-9,6.898314601928995e-4,4.0985699460782386e-5,-9.960814485912439e-9,6.899994707481199e-4,4.114457896454388e-5,-1.0012195088317796e-8,6.901416346331935e-4,4.1214864630885974e-5,-1.0033353714839723e-8,6.902920197616812e-4,4.119656099349532e-5,-1.0023683572674945e-8,6.904821165138293e-4,4.1101881144250444e-5,-9.986848350330236e-9,6.907382638650003e-4,4.09537582206849e-5,-9.930264533573738e-9,6.910790024415842e-4,4.0784383529647454e-5,-9.864646068425661e-9,6.915118287645734e-4,4.06330723894299e-5,-9.803388502339166e-9,6.92029478921974e-4,4.054225759251511e-5,-9.761330963984282e-9,6.926069404711696e-4,4.055042383207215e-5,-9.752392841996608e-9,6.93201577440324e-4,4.068187369966381e-5,-9.785963135087253e-9,6.937591702126083e-4,4.0935603885594335e-5,-9.86281521804032e-9,6.942270330740719e-4,4.1278405821690475e-5,-9.972398042232453e-9,6.945712632534799e-4,4.164815702606528e-5,-1.0093706764041374e-8,6.947908016139201e-4,4.196965425274466e-5,-1.0200641875276863e-8,6.949204861200494e-4,4.217816671559534e-5,-1.027018519806173e-8,6.950204845917e-4,4.2240436893643125e-5,-1.0289782773011855e-8,6.951568783835051e-4,4.2163991349505506e-5,-1.0260761389728324e-8,6.953820071952732e-4,4.1992296890793167e-5,-1.0196951522017627e-8,6.957214881833488e-4,4.1789873918597023e-5,-1.0119904592446122e-8,6.961704254910497e-4,4.162399139921554e-5,-1.0052855248199617e-8,6.966977464138914e-4,4.154851515582117e-5,-1.0015196278929336e-8,6.972559483814732e-4,4.159322790104321e-5,-1.0018554243928807e-8,6.977931798100247e-4,4.1759927789965654e-5,-1.006500579411969e-8,6.982647541256812e-4,4.202510292476047e-5,-1.0147554437825793e-8,6.986416504509654e-4,4.23477429452799e-5,-1.0252547579380231e-8,6.989144432942709e-4,4.267979568978907e-5,-1.0363254734980224e-8,6.990924889111561e-4,4.297633660441667e-5,-1.046354978955787e-8,6.991995765864698e-4,4.3203125469473766e-5,-1.0540778184890215e-8,6.992679525856361e-4,4.334055988722916e-5,-1.0587341630078698e-8,6.993324737511327e-4,4.338433788379723e-5,-1.0601042222300012e-8,6.994259422448656e-4,4.33439373540044e-5,-1.0584573537885036e-8,6.995758178822197e-4,4.324016014019141e-5,-1.0544655239898046e-8,6.998018846283525e-4,4.310255497934784e-5,-1.049116419505745e-8,7.001142366953494e-4,4.296687167505949e-5,-1.0436353487376878e-8,7.00511078834245e-4,4.28720812612912e-5,-1.0393964239501379e-8,7.009763426032131e-4,4.285598693783195e-5,-1.0377799290857615e-8,7.014781075470884e-4,4.294835757893481e-5,-1.0399281482030315e-8,7.01969994354906e-4,4.316142500987284e-5,-1.0463892261942207e-8,7.023982919714376e-4,4.3479848296496525E-05,-1.0567290124078954e-8,7.027162843902773e-4,4.385542505735799e-5,-1.0693127635927223e-8,7.029027821209852e-4,4.42135354664673e-5,-1.0815191406563102e-8,7.029758681401383e-4,4.44744496722845e-5,-1.0904987723913586e-8,7.029914590549362e-4,4.458263269534113e-5,-1.0942205658178163e-8,7.030240973959722e-4,4.4528749813272105e-5,-1.0922540209312683e-8,7.031394395161471e-4,4.435182467687107e-5,-1.0858532246731884e-8,7.033730001998939e-4,4.412187581728143e-5,-1.0773708033050758e-8,7.037236525719877e-4,4.391449186565976e-5,-1.0694038600834027e-8,7.041603691418619e-4,4.378961991431415e-5,-1.0640801646843702e-8,7.046353875274154e-4,4.378031259963003e-5,-1.0626632482199593e-8,7.050976569019387e-4,4.3890906265389334e-5,-1.0654550090175343e-8,7.055033512381783e-4,4.4101463726791514e-5,-1.0719012226212606e-8,7.058225832089542e-4,4.4375368649487437e-5,-1.0808140470310517e-8,7.060425584939559e-4,4.4667972118194066e-5,-1.0906544945457309e-8,7.061676354241381e-4,4.4934992978476056e-5,-1.0998328320161188e-8,7.062167941862384e-4,4.513963638656883e-5,-1.1069817830506132e-8,7.062192461146077e-4,4.525758094198104e-5,-1.1111586225981603e-8,7.062091365135665e-4,4.527941172781372e-5,-1.1119497270185845e-8,7.062203187254132e-4,4.521057587191405e-5,-1.1094762027694266e-8,7.062819845440831e-4,4.5069391812404094e-5,-1.1043233702560278e-8,7.06415505665796e-4,4.488393907460559e-5,-1.0974313413837001e-8,7.066323612634319e-4,4.4688540962570335e-5,-1.089978106738531e-8,7.069327966070445e-4,4.452012245181196e-5,-1.0832652650027417e-8,7.073048809528734e-4,4.4414291049901125e-5,-1.0785940512482935e-8,7.077239303819673e-4,4.4400593182769026e-5,-1.0771010723654536e-8,7.081530282662858e-4,4.449628480384157e-5,-1.0795218004047385e-8,7.08546309372772e-4,4.4698728013663695e-5,-1.0858860998889045e-8,7.088570074624559e-4,4.497837061391854e-5,-1.0952277710884579e-8,7.090511764918637e-4,4.527680031930541e-5,-1.1054882078469456e-8,7.091242875412201e-4,4.551603875633128e-5,-1.1138494306429178e-8,7.091120498076681e-4,4.562208888687946e-5,-1.117598713005094e-8,7.090846177539748e-4,4.5555482629709526e-5,-1.1152408119707443e-8,7.091216217038918e-4,4.533143658656323e-5,-1.1072207380177586e-8,7.092802036001695e-4,4.501504148607371e-5,-1.0957523637321026e-8,7.095747795025035e-4,4.469379194735881e-5,-1.0838617797559788e-8,7.099779924341384e-4,4.4444886939645104e-5,-1.0742641317809363e-8,7.104372322708001e-4,4.431417690490606e-5,-1.0686428868332595e-8,7.108944427121056e-4,4.43116119214771e-5,-1.067478403156329e-8,7.113007184917924e-4,4.441806234799192e-5,-1.0702470480375884e-8,7.11623679367533e-4,4.459632083759559e-5,-1.0757592826290675e-8,7.118492538786992e-4,4.480161570626685e-5,-1.0824953711808661e-8,7.11980233791131e-4,4.4989876558258635e-5,-1.0888886188899312e-8,7.120332870788396e-4,4.512373743613871e-5,-1.093553525218388e-8,7.120351830951165e-4,4.517671189813642e-5,-1.0954618391336977e-8,7.12018506314901e-4,4.513573773315998e-5,-1.094058962873492e-8,7.12017114163592e-4,4.500208629716573e-5,-1.0893112309757543e-8,7.120616914124563e-4,4.47905968840482e-5,-1.0816818974571956e-8,7.121758530794824e-4,4.452730583824109e-5,-1.0720449941183935e-8,7.12373225808455e-4,4.424582850797638e-5,-1.0615582948149321e-8,7.126557056969058e-4,4.3983020894276823E-05,-1.0515185840291802e-8,7.130128748690027e-4,4.377430370445033e-5,-1.0432097453514521e-8,7.134225026408814e-4,4.364884043657226e-5,-1.0377410518766734e-8,7.138521296875519e-4,4.3624612316220915e-5,-1.0358662531311387e-8,7.142621087199356e-4,4.370335181858926e-5,-1.0377769717223068e-8,7.146110340123279e-4,4.386580901383108e-5,-1.0428929632440784e-8,7.148644843579355e-4,4.406916289330847e-5,-1.0497305281474699e-8,7.150068229220568e-4,4.424991700273873e-5,-1.0559887164612516e-8,7.150530524366479e-4,4.4336178298709344e-5,-1.0590042672540263e-8,7.15053734810595e-4,4.42704276374271e-5,-1.056605287956476e-8,7.150846291680763e-4,4.403576931514396e-5,-1.0480847359923442e-8,7.152198511851885e-4,4.3670120179829765e-5,-1.0347183403858284e-8,7.155008744882165e-4,4.325529287265698e-5,-1.019372183871818e-8,7.159202063701489e-4,4.288442453165478e-5,-1.0053486378649688e-8,7.164288382090401e-4,4.262714020159595e-5,-9.95164253828637e-9,7.169595712173114e-4,4.2511112636761016e-5,-9.899008498589871e-9,7.174506599694499e-4,4.2524020942925516e-5,-9.892540841677029e-9,7.178598144621892e-4,4.2627404619268514e-5,-9.91983987587705e-9,7.181678446769699e-4,4.27721963699476e-5,-9.964266310840572e-9,7.183759126586623e-4,4.291045343841636e-5,-1.0008908875743132e-8,7.18500405594647e-4,4.300234497131943e-5,-1.0039122755238085e-8,7.185677828556197e-4,4.30196320106107e-5,-1.0044007543963475e-8,7.186101042079086e-4,4.294717412168661e-5,-1.001723346601736e-8,7.186610533817944e-4,4.278335317154585e-5,-9.957406051808767e-9,7.18752168284341e-4,4.253964376045135e-5,-9.867997924772748e-9,7.189091853091514e-4,4.2239192867652126e-5,-9.756827287293615e-9,7.191486680453425e-4,4.191412441845834e-5,-9.635062646698978e-9,7.194753833185204e-4,4.1601472907260915e-5,-9.515794554155215e-9,7.198809710473828e-4,4.1338056243998875e-5,-9.412302783608438e-9,7.203442861506658e-4,4.115483206636226e-5,-9.33615368049298e-9,7.208335901116579e-4,4.107136650050428e-5,-9.295250483512817e-9,7.21310582686931e-4,4.109113767836152e-5,-9.292009746461441e-9,7.217361374829578e-4,4.1198376722348027e-5,-9.321908690989147e-9,7.220776248483091e-4,4.135721706930838e-5,-9.372781644989014e-9,7.223174798075731e-4,4.151444248885548e-5,-9.42550576306746e-9,7.224616572947125e-4,4.160760778234224e-5,-9.456878589667109e-9,7.225448756233372e-4,4.157965702183735e-5,-9.445137808270311e-9,7.226279081272899e-4,4.139838628719147e-5,-9.377400707335786e-9,7.22782831518834e-4,4.107397411941798e-5,-9.256348015631858e-9,7.230679109607896e-4,4.066348908937088e-5,-9.10200491377539e-9,7.235030324353299e-4,4.025454393631868e-5,-8.94585670514005e-9,7.240604349135902e-4,3.993307278447048e-5,-8.819235976789946e-9,7.246770474161983e-4,3.9752475639384204e-5,-8.74220271896425e-9,7.25280167562206e-4,3.972032945361145e-5,-8.71863631377646e-9,7.258112499168408e-4,3.980545137139982e-5,-8.738490452126625e-9,7.262379795707331e-4,3.995588791311808e-5,-8.783922245220665e-9,7.265545698200255e-4,4.011659749582939e-5,-8.83541706972929e-9,7.267755339873465e-4,4.024105833074878e-5,-8.875936197311278e-9,7.269279845271264e-4,4.029652987094112e-5,-8.892976574019021e-9,7.270451450548466e-4,4.026516750216042e-5,-8.879235354411228e-9,7.271616327638609e-4,4.014326976173892e-5,-8.832575722188413e-9,7.273099551577129e-4,3.993996905439593e-5,-8.755682817923396e-9,7.275175140387404e-4,3.9675705000669275e-5,-8.65552457776656e-9,7.278037036096325e-4,3.938023732409923e-5,-8.542589315450922e-9,7.281770882665271e-4,3.9089662899162196e-5,-8.429786504232964e-9,7.286331360591269e-4,3.884197223268564e-5,-8.330888585721539e-9,7.291533677555678e-4,3.867120217350354e-5,-8.258515599405508e-9,7.297067738756757e-4,3.860090558086704e-5,-8.221844583454592e-9,7.302539666578742e-4,3.8638182704821905e-5,-8.224400957513714e-9,7.307538962269374e-4,3.876983049784128e-5,-8.262452625865695e-9,7.311722092434422e-4,3.896204742743471e-5,-8.324571705863522e-9,7.314897527645678e-4,3.9164524285314036e-5,-8.3927927962959e-9,7.317094414493923e-4,3.931904431090589e-5,-8.445566122962981e-9,7.318594845103638e-4,3.937201425400375e-5,-8.462392890762826e-9,7.319908066651358e-4,3.928917259530832e-5,-8.42948659848983e-9,7.321669790530052e-4,3.906885058053107e-5,-8.345010771919948e-9,7.324469928605998e-4,3.8748281868431985e-5,-8.22172192559327e-9,7.328651675913713e-4,3.839739804730499e-5,-8.084889760603431e-9,7.334166535442571e-4,3.809868218835139e-5,-7.964969302770367e-9,7.340570593855317e-4,3.791967584824037e-5,-7.88746795733556e-9,7.347180158889726e-4,3.789093829132095e-5,-7.864694610367329e-9,7.35330978895752e-4,3.799999059049531e-5,-7.893257941684946e-9,7.358473549973659e-4,3.820188625552753e-5,-7.95762224232136e-9,7.36247320859895e-4,3.8438037090302746e-5,-8.036768609057542e-9,7.365375874964547e-4,3.865343008418449e-5,-8.110432460280896e-9,7.367432165561168e-4,3.880698844533339e-5,-8.163005946748622e-9,7.368986354207467e-4,3.8875061863166875e-5,-8.185035831936871e-9,7.370405983510341e-4,3.885061218849014e-5,-8.173156102939069e-9,7.372035548293182e-4,3.8740714185469477e-5,-8.129326522098361e-9,7.374166923744471e-4,3.8563901864775714e-5,-8.05990590565618e-9,7.377017025310008e-4,3.834777065479802e-5,-7.974743340507008e-9,7.38070622142274e-4,3.8126512150255426e-5,-7.886238130470689e-9,7.385236155784789e-4,3.7937678633434624e-5,-7.80816935910351e-9,7.390471872462534e-4,3.7817479218706066e-5,-7.754041850862354e-9,7.39613896733862e-4,3.779443638936219e-5,-7.734832514708064e-9,7.401848806728716e-4,3.788221163124379e-5,-7.75635096994411e-9,7.407160397257579e-4,3.807351780711525e-5,-7.816863716772319e-9,7.411675017627108e-4,3.83377342940748e-5,-7.905958120875292e-9,7.415142919555773e-4,3.8624442718095306e-5,-8.005552813609206e-9,7.417549191637427e-4,3.887335159084064e-5,-8.093346705012602e-9,7.419146387750976e-4,3.902868594401002e-5,-8.14809060536792e-9,7.420415466924796e-4,3.9054260051663074e-5,-8.155305505607456e-9,7.421957712450767e-4,3.894484020912841e-5,-8.111780096870276e-9,7.424340938914088e-4,3.873006125504485e-5,-8.02737573183699e-9,7.42793899355561e-4,3.846880194086285e-5,-7.923264854219435e-9,7.432812620141698e-4,3.823437454532318e-5,-7.82664187542525e-9,7.438677441412036e-4,3.809405520022208e-5,-7.763143694430137e-9,7.444981839003461e-4,3.808955287654943e-5,-7.749409650064826e-9,7.451073361538792e-4,3.822586805072566e-5,-7.788599612458683e-9,7.456389114710405e-4,3.847282903416642e-5,-7.870587084328902e-9,7.460595325375159e-4,3.8777620572790256e-5,-7.97634017132848e-9,7.463633344203971e-4,3.90818258416466e-5,-8.084164382373755e-9,7.465679154850866e-4,3.9335967587656355e-5,-8.175197120055171e-9,7.467056704916095e-4,3.950769387356267e-5,-8.236653653676395e-9,7.468147802209882e-4,3.958364471163843e-5,-8.262748556136644e-9,7.469323302937862e-4,3.956728801685668e-5,-8.25406326448367e-9,7.470900224543724e-4,3.947522924674709e-5,-8.21625230612436E-09,7.473117786206921e-4,3.9333574246693434e-5,-8.15868872939971e-9,7.476122444451707e-4,3.917483364161524e-5,-8.093285230637837e-9,7.479954258414936e-4,3.9035053263447094e-5,-8.033430521419e-9,7.484532171378763e-4,3.8950407831258895e-5,-7.992775209673987e-9,7.489642810589979e-4,3.895244597740534e-5,-7.983527194781351e-9,7.494944525688141e-4,3.906165830601274e-5,-8.014060469529422e-9,7.500002746529996e-4,3.9280174203610924e-5,-8.086078232861302e-9,7.504369055959056e-4,3.9586013083436254e-5,-8.192238951203957e-9,7.507699029120727e-4,3.993257848288867e-5,-8.31570446363603e-9,7.509875768828624e-4,4.025651618290501e-5,-8.432888245201967e-9,7.511084739632404e-4,4.049377684511111e-5,-8.519412651981377e-9,7.511792950330379e-4,4.059903216808652e-5,-8.557453460506901e-9,7.51262580818493e-4,4.056073182061699e-5,-8.541545996409175e-9,7.514184424281146e-4,4.040549547796316e-5,-8.480474453332119e-9,7.516871944073718e-4,4.019036204144835e-5,-8.394680466844668e-9,7.520786833722089e-4,3.998634873333417e-5,-8.31041577663291e-9,7.525708694622507e-4,3.985920059382761e-5,-8.252707967838128e-9,7.531170338310043e-4,3.985300180192867e-5,-8.239147244363815e-9,7.536588526186752e-4,3.998070036708499e-5,-8.276008258796359e-9,7.541413990265233e-4,4.022342678605548e-5,-8.357544078241255e-9,7.54525863865062e-4,4.05380201242533e-5,-8.468421354961952e-9,7.547967008719969e-4,4.0869815523018587e-5,-8.588335122366214e-9,7.549619635945633e-4,4.116635887970118e-5,-8.697206288555848e-9,7.550480101612701e-4,4.1388047065979665e-5,-8.779387588935774e-9,7.550913554910073e-4,4.151357045899603e-5,-8.825967420826681e-9,7.551305842522161e-4,4.154031612162445e-5,-8.835132581061215e-9,7.552001895864037e-4,4.148139165922518e-5,-8.811164119887681e-9,7.55326828426084e-4,4.1361260126847735e-5,-8.762820923675844e-9,7.555274925687125e-4,4.12114438663705e-5,-8.70170647458801e-9,7.558087203055979e-4,4.1066871518413693e-5,-8.640891785799208e-9,7.561661037027524e-4,4.09626519740274e-5,-8.593743073534889e-9,7.565837873294337e-4,4.0930595848213674e-5,-8.572674913245856e-9,7.570343023719693e-4,4.0994708019895345e-5,-8.58746909968765e-9,7.574798432523166e-4,4.116526167701248e-5,-8.642942450707564e-9,7.578766597453443e-4,4.143219506580418e-5,-8.736227826676889e-9,7.581839700006578e-4,4.1760430647830195e-5,-8.85472089607003e-9,7.583769007372872e-4,4.209143613341075e-5,-8.97646260497755e-9,7.584593350854895e-4,4.235492678888832e-5,-9.074535079715516e-9,7.584693326984003e-4,4.249010700473473e-5,-9.125223368184249e-9,7.58470988460264e-4,4.246860282595259e-5,-9.116849569321388e-9,7.585337351705025e-4,4.230716762507732e-5,-9.054700673282172e-9,7.587083994551931e-4,4.206260627237825e-5,-8.959261900385463e-9,7.590114511903744e-4,4.181169099700161e-5,-8.858889905876627e-9,7.594231618304254e-4,4.162653730197789e-5,-8.780808674797843e-9,7.598974502542237e-4,4.155567159126383e-5,-8.744091746991325e-9,7.603770701441117e-4,4.161547883315085e-5,-8.756261200644959e-9,7.608083072352005e-4,4.1791395294714015e-5,-8.813314074637931e-9,7.611518311466191e-4,4.204568142158321e-5,-8.902175671211233e-9,7.613885521055572e-4,4.232834360337178e-5,-9.004492689727314e-9,7.615206177534766e-4,4.258845489577387e-5,-9.100837967244961e-9,7.61568322961355e-4,4.2783817580922045e-5,-9.174529986143186e-9,7.615641863347267e-4,4.288746563387388e-5,-9.214382010099968e-9,7.615458421224065e-4,4.289030424473849e-5,-9.215981555878051e-9,7.615493776879412e-4,4.280020160465099e-5,-9.181526671744856e-9,7.616042486398303e-4,4.26385797343642e-5,-9.118594656166542e-9,7.61730210455046e-4,4.2435795379432153e-5,-9.03837554219817e-9,7.61936050598561e-4,4.222646210520275e-5,-8.953874020503188e-9,7.622194897874063e-4,4.204535712200338e-5,-8.87837427683221e-9,7.625676250645121e-4,4.1923882039288665e-5,-8.824153587401546e-9,7.629576171601758e-4,4.188660389994002e-5,-8.801211913123232e-9,0.00076335781686778445,4.194730410322629e-5,-8.815719768604965e-9,7.637301806589586e-4,4.210424149540176e-5,-8.868024377405146e-9,7.640353866362429e-4,4.233530176320579e-5,-8.950502771608857e-9,7.642418368971225e-4,4.259542541961727e-5,-9.046295943306457e-9,7.643379706413167e-4,4.282042794217269e-5,-9.130652554192153e-9,7.643436783033333e-4,4.29411494887276e-5,-9.176459932444947e-9,7.643128225427903e-4,4.290719105443412e-5,-9.163573390875584e-9,7.643198908851147e-4,4.27107298651634e-5,-9.088104238947882e-9,7.644329712891078e-4,4.23954390951903e-5,-8.965872528852865e-9,7.646866633436667e-4,4.204199444422708e-5,-8.826934866527333e-9,7.650704200976676e-4,4.17372669333947e-5,-8.704057045239502e-9,7.655369936842672e-4,4.154471093131832e-5,-8.621706108552556e-9,7.660227565342318e-4,4.1489461027239444e-5,-8.590446292021975e-9,7.664679096395077e-4,4.155968867214678e-5,-8.60719762281304e-9,7.668295552510263e-4,4.1717667344140696e-5,-8.65897698447111e-9,7.670867797953163e-4,4.191334217832278e-5,-8.727615499482921e-9,7.672399375245228e-4,4.209611415617943e-5,-8.794011363368658e-9,7.673067113076542e-4,4.2223374435902354e-5,-8.841422117427617e-9,7.673167461421355e-4,4.226589688328241e-5,-8.857772846673981e-9,7.673057770691697e-4,4.221051342646373e-5,-8.837001052988211e-9,7.673098402283448e-4,4.206030802892788e-5,-8.779391079594279e-9,7.673601781277127e-4,4.18326361185597e-5,-8.690943756311483e-9,7.674793660680467e-4,4.1555511526051535e-5,-8.58199870451685e-9,7.676789770593695e-4,4.126301892957958e-5,-8.465429763661297e-9,7.679588364412986e-4,4.0990480338567314e-5,-8.354768907767848e-9,7.683075907368027e-4,4.077001331558171e-5,-8.262536838002104e-9,7.687041577968274e-4,4.062672035544098e-5,-8.198843955832656e-9,7.691197778494181e-4,4.057536670843389e-5,-8.170131786714939e-9,7.69520695114969e-4,4.061730481647757e-5,-8.17788778750396e-9,7.698719236009533e-4,4.073758088267318e-5,-8.217289031700045e-9,7.701429410375053e-4,4.090284202188645e-5,-8.276083307954193e-9,7.703158959245221e-4,4.106194157234824e-5,-8.334583011415699e-9]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json new file mode 100644 index 000000000..ed067a159 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_12.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":12000,"numberOfSamples":1000,"samples":[7.703954280162467e-4,4.1152337826266915e-5,-8.368108119871265e-9,7.704163319665058e-4,4.111507788730868e-5,-8.352989399151336e-9,7.704421464154993e-4,4.091720944904923e-5,-8.275542352848811e-9,7.705485092428724e-4,4.05724562623383e-5,-8.140252864992262e-9,7.707939985966856e-4,4.014524130054576e-5,-7.971353086916377e-9,7.71193504222048e-4,3.972957759547678e-5,-7.80469566907836e-9,7.717115053607008e-4,3.9412072212316335e-5,-7.673655282248528e-9,7.722792203821364e-4,3.924081276169691e-5,-7.597334312683116e-9,7.728228927422465e-4,3.921592014800571e-5,-7.576902082499595e-9,7.732865636479628e-4,3.930044006202883e-5,-7.599469965429773e-9,7.736417360467977e-4,3.9439508716162856e-5,-7.645015059481085e-9,7.738862021781628e-4,3.9577299627356655e-5,-7.692550022805146e-9,7.740375781067476e-4,3.9667776867413035e-5,-7.724156675043192e-9,7.741257583521852e-4,3.9679734947780095e-5,-7.727075835179889e-9,7.741863193020013e-4,3.959810915098842e-5,-7.69451274251175e-9,7.742552430288779e-4,3.9423328672554246e-5,-7.625696494804441e-9,7.743646142276804e-4,3.9169548057952974e-5,-7.525395913350832e-9,7.745390796275454e-4,3.886191912277735e-5,-7.4029175785362335e-9,7.747931611691499e-4,3.853296073940333e-5,-7.2706518736087654e-9,7.751296404933389e-4,3.821816871539602e-5,-7.14230656603222e-9,7.75539277044951e-4,3.795118644851318e-5,-7.03102083378519e-9,7.760019965895818e-4,3.7759097444815016e-5,-6.947589780698099e-9,7.764894114568546e-4,3.7658393030000226e-5,-6.898960011119357e-9,7.769683935525284e-4,3.765194567776308e-5,-6.887041206138857e-9,7.77405468600329e-4,3.7727187339015794e-5,-6.907852463658269e-9,7.777719367210197e-4,3.7855696317654865e-5,-6.951096001721251e-9,7.780497715515111e-4,3.799465132874708e-5,-7.000433114460731e-9,7.782381033839588e-4,3.809125972066116e-5,-7.035036448543083e-9,7.783590131789634e-4,3.809174285674149e-5,-7.033143881376136e-9,7.784595953194529e-4,3.795570392998253e-5,-6.97793131163529e-9,7.786057068107846e-4,3.767368510457848e-5,-6.864708360881282e-9,7.78863996118783e-4,3.728037531656348e-5,-6.706310810691064e-9,7.792756265371022e-4,3.685219468959701e-5,-6.532225465482031e-9,7.798348397283327e-4,3.648330405006227e-5,-6.379231745544197e-9,7.804875774404013e-4,3.624915992465997e-5,-6.277220111165846e-9,7.811532791147602e-4,3.6178446406365796e-5,-6.238248751260801e-9,7.817563618614648e-4,3.624887846641678e-5,-6.254752293779451e-9,7.822492066349364e-4,3.6404572752001926e-5,-6.305999039127454e-9,7.826184621073835e-4,3.658034238992342e-5,-6.367226110433409e-9,7.828786448897808e-4,3.672020080806501e-5,-6.416659701095429e-9,7.830611528872669e-4,3.678622737434062e-5,-6.439002339589363e-9,7.83204269111392e-4,3.6760045223355876e-5,-6.4262288080890655e-9,7.83346116265409e-4,3.6640538094929564e-5,-6.376990645821899e-9,7.835202865150684e-4,3.644047816686522e-5,-6.2955425776532835e-9,7.837530585274323e-4,3.618322636043522e-5,-6.190565289506217e-9,7.840613538345039e-4,3.5899528490766174e-5,-6.073894295370791e-9,7.844511692520874e-4,3.56240404001225e-5,-5.959079652820332e-9,7.849166362486965e-4,3.5391266889247926e-5,-5.859734881539029e-9,7.854401461991078e-4,3.5230870470624936e-5,-5.787703349498604e-9,7.85994077008628e-4,3.516280326863614e-5,-5.751203618221222e-9,7.865443681490566e-4,3.519312942196211e-5,-5.753224515569559e-9,7.870557121649313e-4,3.531147041257569e-5,-5.790462278713693e-9,7.874977374834473e-4,3.549084781661851e-5,-5.8530751899271e-9,7.878512977067683e-4,3.5690381696580056e-5,-5.925483082828172e-9,7.88113902130303e-4,3.586089281430252e-5,-5.9883395159535995e-9,7.883033069918536e-4,3.595324388575569e-5,-6.021732124830117e-9,7.884579960410935e-4,3.5929083510116866e-5,-6.009544248256601e-9,7.886327975757129e-4,3.577280030598468e-5,-5.9444715378693474e-9,7.888879780100181e-4,3.550164046195876e-5,-5.832367391647236e-9,7.8927192870103e-4,3.51687389345516e-5,-5.693704861085736e-9,7.898018205719634e-4,3.4853326117873307e-5,-5.559814012217819e-9,7.904515896948133e-4,3.4636846056963114e-5,-5.463410169207496e-9,7.911567365586743e-4,3.457328365667514e-5,-5.426733674861982e-9,7.91836723351535e-4,3.4669207955395765e-5,-5.453450884163303e-9,7.924237202788972e-4,3.488486649734166e-5,-5.5288267094573905e-9,7.928824548961669e-4,3.515389152880303e-5,-5.627269436403621e-9,7.932136820118008e-4,3.540839736028799e-5,-5.722097489506235e-9,7.934449059141124e-4,3.5597063748403574e-5,-5.792673659357338e-9,7.936168882573704e-4,3.569210775996662e-5,-5.827295173952732e-9,7.937723217445624e-4,3.568791359332356e-5,-5.822884193637893e-9,7.93948800831336e-4,3.559595323883983e-5,-5.783216738249511e-9,7.941754088277288e-4,3.543933477989003e-5,-5.716920600537979e-9,7.944713320113322e-4,3.524834071649752e-5,-5.635744464363097e-9,7.948452117223364e-4,3.505690102972568e-5,-5.5531067119024055e-9,7.952946621025866e-4,3.489936168856889e-5,-5.482741290558481e-9,7.958060134527227e-4,3.4806877971801684e-5,-5.437234302862502e-9,7.963548356244236e-4,3.4803064153757236e-5,-5.4263155715433935e-9,7.969080873912969e-4,3.4899187129560714e-5,-5.454979598662578e-9,7.974285582348853e-4,3.50899868901018e-5,-5.521799771482021e-9,7.978815595783528e-4,3.53517139310461e-5,-5.618028402827992e-9,7.982428279621153e-4,3.5643920541599894e-5,-5.728107579266846e-9,7.985056927078104e-4,3.591576113045357e-5,-5.8319638327390805e-9,7.986852279968585e-4,3.6116131940588234e-5,-5.908914090462572e-9,7.988176580367524e-4,3.620557989303193e-5,-5.942429308719043e-9,7.989544079791842e-4,3.616720864975489e-5,-5.924668401918435e-9,7.991513656849079e-4,3.601375362426653e-5,-5.859607617947738e-9,7.994550428476274e-4,3.5788266373648105e-5,-5.763648882378041e-9,7.99888593020665e-4,3.5556588356057684e-5,-5.662870662485801e-9,8.004419741134302e-4,3.539153188530321e-5,-5.586797190304597e-9,8.010710698253013e-4,3.5351857597047766e-5,-5.559879219657929e-9,8.017086298947224e-4,3.546304659868737e-5,-5.5935163200738305e-9,8.022846671415112e-4,3.5708577068191366e-5,-5.6822096378184195e-9,8.027481145977655e-4,3.603666410112383e-5,-5.805964874906324e-9,8.03080122412991e-4,3.637928126071499e-5,-5.9377647708489825e-9,8.032943410005627e-4,3.66738652272459e-5,-6.0522761139605395e-9,8.034269249007324e-4,3.687843167960255e-5,-6.132033879229968e-9,8.035230519879982e-4,3.697653334579644e-5,-6.1696217748146e-9,8.036257380118303e-4,3.6974206946549126e-5,-6.166656508896828e-9,8.037692352128727e-4,3.689330257374978e-5,-6.131278442552063e-9,8.039764427338145e-4,3.6764723596644845e-5,-6.075520263494496e-9,8.042586457584074e-4,3.662315128777011e-5,-6.013183162784273e-9,8.046160819092535e-4,3.6503272989771094e-5,-5.9582713714511854e-9,8.050385231957502e-4,3.643678976682334e-5,-5.9237473528870625e-9,8.055057955743184e-4,3.644934285412461e-5,-5.920288595123292e-9,8.05988792090945e-4,3.655676717208342e-5,-5.95478706400642e-9,8.064519656770659e-4,3.676075426661275e-5,-6.028574833606665e-9,8.068582848986766e-4,3.7045013088594046e-5,-6.1357749440002495e-9,8.071769237677392e-4,3.737399900933667e-5,-6.26261951082692e-9,8.073924491758243e-4,3.769659412573422e-5,-6.388754892200863e-9,8.075124666197616e-4,3.7955997865778476e-5,-6.491115253060035e-9,8.075698393218493e-4,3.8104352666225344e-5,-6.549812033282912e-9,8.07616918266904e-4,3.811755258854625e-5,-6.5542030392740885e-9,8.077125028108634e-4,3.8004458985452114e-5,-6.506795533466793e-9,8.079056000982033e-4,3.780654452780539e-5,-6.4233624926436094e-9,8.082214227720043e-4,3.758774308343327e-5,-6.3291414262697445e-9,8.086539871520523e-4,3.741775103981728e-5,-6.252328710187585e-9,8.091672759069606e-4,3.7353752588214316e-5,-6.216752306565877e-9,8.097045052884347e-4,3.742558962134468e-5,-6.235686559437506e-9,8.10203012993122e-4,3.7628423384850995e-5,-6.308502277607127e-9,8.106106251449948e-4,3.792510731679957e-5,-6.421212634856097e-9,8.108985322821864e-4,3.8257644162653106e-5,-6.550833196339432e-9,8.11066628774171e-4,3.856383400569566e-5,-6.6720638631456955e-9,8.111401568994287e-4,3.8793232686939005e-5,-6.763879623403471e-9,8.111600098107639e-4,3.89173073971411e-5,-6.813868422693099e-9,8.111711107269196e-4,3.893182181341246e-5,-6.8194280235812216e-9,8.112128636990658e-4,3.8852913529948424e-5,-6.786357912765378e-9,8.1131356935384e-4,3.8710088334482416e-5,-6.726121364291298e-9,8.114885730374386e-4,3.853908980505929e-5,-6.652976845483148e-9,8.117408037071133e-4,3.837625006855202e-5,-6.5816575047402725e-9,8.120622864326276e-4,3.825456404102906e-5,-6.5257403552766695e-9,8.124357145823514e-4,3.82008938099246e-5,-6.496493824519633e-9,8.128358550233297e-4,3.823344877076438e-5,-6.50185004606853e-9,8.132312194083829e-4,3.8358874558908814e-5,-6.54518991660995e-9,8.135869354214777e-4,3.856887726212377e-5,-6.623869747140799e-9,8.138698868858205e-4,3.8837323813125146e-5,-6.727869263055802e-9,8.140566018155787e-4,3.91199837876055e-5,-6.83950023112515e-9,8.141427039935174e-4,3.935979230186433e-5,-6.9354371500791985e-9,8.14150262656473e-4,3.949946847388898e-5,-6.9918722744796985e-9,8.141277285832854e-4,3.949960053306327e-5,-6.991994835378283e-9,8.141388942367572e-4,3.935526219250151e-5,-6.93289197521611e-9,8.142430879224422e-4,3.910207785679162e-5,-6.8281493368907015e-9,8.144749296276758e-4,3.880686864520632e-5,-6.704223833237992e-9,8.1483306083408e-4,3.854646680042599e-5,-6.592073096421126e-9,8.152821053230805e-4,3.838435896231063e-5,-6.5178631025860026e-9,8.157651947313659e-4,3.835428291873892e-5,-6.49629781434836e-9,8.162207450781731e-4,3.845478693315215e-5,-6.528135674230928e-9,8.16597684699937e-4,3.865376270796675e-5,-6.60159629155916e-9,8.168657158061926e-4,3.889947743847334e-5,-6.69644446442954e-9,8.170194049574676e-4,3.913422953807289e-5,-6.7893400986806185e-9,8.17076394641524e-4,3.930728020730456e-5,-6.85914255437804e-9,8.170710316645813e-4,3.938449175604022e-5,-6.891061862959034e-9,8.170454569870298e-4,3.935306732398158e-5,-6.878882809994513e-9,8.170405722878981e-4,3.9221105681444305e-5,-6.825033584806315e-9,8.1708896023377e-4,3.901310215359767e-5,-6.7388979016364186e-9,8.172108407223391e-4,3.87633764776707e-5,-6.634171213681119e-9,8.174130175522054e-4,3.850938229687362e-5,-6.526094414707984e-9,8.176899834395489e-4,3.8286205079792516e-5,-6.4291520891420515e-9,8.180260959470649e-4,3.812267075009407e-5,-6.3554492104173685e-9,8.183979894619872e-4,3.803873780290355e-5,-6.313637763487015e-9,8.187769116206049e-4,3.804351923521837e-5,-6.308093725118056e-9,8.191312129866966e-4,3.813337134793312e-5,-6.338063937256885e-9,8.194296942684052e-4,3.8289922698924704e-5,-6.396704673018225e-9,8.196467238419641e-4,3.847879781237149e-5,-6.470354270719354e-9,8.197695294206804e-4,3.8650968100779566e-5,-6.538921130269099e-9,8.19806513649201e-4,3.874943540462814e-5,-6.5785960033068025e-9,8.197929489727498e-4,3.8723134804595094e-5,-6.5676898771434025e-9,8.197883002079536e-4,3.854613941350416e-5,-6.4947236728071645e-9,8.198609759695765e-4,3.823403064971981e-5,-6.365297279203114e-9,8.200636944477346e-4,3.784594464219167e-5,-6.203000857389413e-9,0.000820411436661712,3.746667085519243e-5,-6.042172936215794e-9,8.208749674671344e-4,3.7176223092774686e-5,-5.915617415305801e-9,8.213932248000017e-4,3.7022992160726405e-5,-5.843759010230899e-9,8.218961027605576e-4,3.701275044446644e-5,-5.830076453078521e-9,8.223254904904929e-4,3.711435819021485e-5,-5.863118056849916e-9,8.226473843906112e-4,3.727482958449793e-5,-5.922239824745653e-9,8.228545590175748e-4,3.7435687186837764e-5,-5.983966399587255e-9,8.229627474394682e-4,3.7545885310616436e-5,-6.027176921838554e-9,8.230036090129152e-4,3.756990148797665e-5,-6.036554527428151e-9,8.230167806825249e-4,3.749138311092206e-5,-6.004372061981051e-9,8.230423185742567e-4,3.731317666393389e-5,-5.930818699795622e-9,8.231143493501816e-4,3.705449505134662e-5,-5.823063768625377e-9,8.23256553209646e-4,3.674606808012696e-5,-5.693352353058202e-9,8.234798189428454e-4,3.642429612693932e-5,-5.556571384393087e-9,8.237820413355269e-4,3.6125418828181186e-5,-5.427765212931279e-9,8.241496751844597e-4,3.588054059534543e-5,-5.320016584338888e-9,8.245603883153199e-4,3.571199342395666e-5,-5.242923452023574e-9,8.249861688108776e-4,3.563099782478505e-5,-5.201638270344065e-9,8.253965549120751e-4,3.563626588694151e-5,-5.1962726434097535e-9,8.257620082869455e-4,3.571323197160154e-5,-5.221486300041849e-9,8.260577695440884e-4,3.583385451251235e-5,-5.266230045559657e-9,8.262687299902825e-4,3.595753207818218e-5,-5.313924512584801e-9,8.263954241197148e-4,3.6034603798458864e-5,-5.343784865943491e-9,8.264598903887887e-4,3.601442540484084e-5,-5.334201311502159e-9,8.265081515702821e-4,3.585914554288692e-5,-5.268642284511385e-9,8.26604385596247e-4,3.556101693181241e-5,-5.143074426032549e-9,8.268132192939278e-4,3.515537353926115e-5,-4.971501142912185e-9,8.271738744510702e-4,3.471782861774951e-5,-4.7848532086355065e-9,8.276795586094963e-4,3.4340322196190036e-5,-4.621118053741745e-9,8.282766891716653e-4,3.4095760039524445e-5,-4.5108069909192165e-9,8.288861464980373e-4,3.401140563924369e-5,-4.465996728964361e-9,8.29433355059079e-4,3.406500941237964e-5,-4.4785874372255114e-9,8.298704729894737e-4,3.420103631857123e-5,-4.526688711410476e-9,8.301833096396713e-4,3.4353709967328716e-5,-4.583790454622501e-9,8.303862100769367e-4,3.446546478614344e-5,-4.626173157513306e-9,8.305118250621173e-4,3.449687603771798e-5,-4.6370194576684565e-9,8.306008664699762e-4,3.442941009341466e-5,-4.607762309491803e-9,8.306940322478887e-4,3.426386875947961e-5,-4.537752547464339e-9,8.308263261536525e-4,3.401682527001027e-5,-4.4330652748613145e-9,8.310232819304966e-4,3.371620106257414e-5,-4.304822699303797e-9,8.312987280593526e-4,3.339641097448233e-5,-4.167187973746248e-9,8.31653979219806e-4,3.309335744578138e-5,-4.0351952674026125e-9,8.32078417238307e-4,3.283958122742209e-5,-3.9226242940869606e-9,8.325514069439921e-4,3.26599656110982e-5,-3.8401496329485945e-9,8.330453353948687e-4,3.256846904668967e-5,-3.793977723288974e-9,8.335293651888821e-4,3.2566169333962955e-5,-3.785049055168084e-9,8.33973516225973e-4,3.264061001145597e-5,-3.808740687729704e-9,8.343528580041156e-4,3.2766396288388346e-5,-3.855005633134729e-9,8.346517248312861e-4,3.290709657118518e-5,-3.9089874063833434e-9,8.348679389439184e-4,3.301872928211123e-5,-3.95230090306051e-9,8.350167359300278e-4,3.305558632640454e-5,-3.965393684369818e-9,8.351331058149185e-4,3.297932755397413e-5,-3.9314416005053e-9,8.352699660831031e-4,3.277126367429032e-5,-3.8417220291605366e-9,8.354889117471341e-4,3.244507340953231e-5,-3.7012047953805833e-9,8.358419691208809e-4,3.205326833172769e-5,-3.531440109697599e-9,8.36348763283404e-4,3.167867290599403e-5,-3.3670502139274996e-9,8.369813197061595e-4,3.140782451156133e-5,-3.244586908337016e-9,8.376693061030729e-4,3.129669563122999e-5,-3.1881493598681102e-9,8.383263658012633e-4,3.134863920078477e-5,-3.200051972071662e-9,8.388826052155265e-4,3.151766556410064e-5,-3.2619908468242225e-9,8.393050072888866e-4,3.173205489277276e-5,-3.344664087646371e-9,8.395988757541516e-4,3.192172100776251e-5,-3.419003963066664e-9,8.397963286098811e-4,3.203621272799185e-5,-3.46362815353071e-9,8.399416326313247e-4,3.205061679819683e-5,-3.4674080518768483e-9,8.400794992423449e-4,3.1963263817541386e-5,-3.4287495907215916e-9,8.402479103687121e-4,3.179002909330446e-5,-3.3534888117140308e-9,8.404745687451004e-4,3.155830071326884e-5,-3.2525737289196144e-9,8.407754646399417e-4,3.130173895136262e-5,-3.1399368209433314e-9,8.41154541388092e-4,3.1055764720891035e-5,-3.0305415711644196e-9,8.416041280544131e-4,3.085345156272672e-5,-2.9385364426828023e-9,8.421061656017975e-4,3.072164283076384e-5,-2.8755213785209154e-9,8.426344113814458e-4,3.067736638925079e-5,-2.8490015368691745e-9,8.431577953645121e-4,3.072498523450466e-5,-2.8612024549307127e-9,8.436447971117692e-4,3.085470440573325e-5,-2.9084547718786858e-9,8.440683720702881e-4,3.1042869672780824e-5,-2.981273689818602e-9,8.444108321936859e-4,3.125426055813509e-5,-3.065198477158535e-9,8.446680629527056e-4,3.144642492558669e-5,-3.142451937358192e-9,8.448524507159502e-4,3.15759057443261e-5,-3.194437005461156e-9,8.449938340091091e-4,3.160610588444374e-5,-3.2050494314965393e-9,8.451374660071655e-4,3.151638576719877e-5,-3.1646699302547115e-9,8.453375715697237e-4,3.1311130994121866e-5,-3.0742611477808833e-9,8.456453986738488e-4,3.1025780835067146e-5,-2.94819557957702e-9,8.46092653379528e-4,3.0725045293271956e-5,-2.81368862948315e-9,8.466753220872281e-4,3.0488818598972834e-5,-2.704879810332908e-9,8.473471109643087e-4,3.038640446510119e-5,-2.6518278127619258e-9,8.480305696476147e-4,3.0449024854662588e-5,-2.668679548466348e-9,8.486441257401572e-4,3.065628903781551e-5,-2.7477040330430985e-9,8.491313375173792e-4,3.094576582096809e-5,-2.8631317709746885e-9,8.494766164139384e-4,3.123946697058364e-5,-2.9822273668107125e-9,8.497020423260754e-4,3.1471127846907625e-5,-3.0767866876898872e-9,8.498521170161459e-4,3.16017891014394e-5,-3.129775126187276e-9,8.499770409409726e-4,3.1621830699592834e-5,-3.1363362066964675e-9,8.501209480543094e-4,3.1544720456021056e-5,-3.1013685836141294e-9,8.503161532077362e-4,3.1398399640952655e-5,-3.036097487468567e-9,8.505816546173871e-4,3.1217759899263695e-5,-2.9550165687006546e-9,8.509236995527479e-4,3.103916188717301e-5,-2.8735662703891047e-9,8.513369862483362e-4,3.0896507607776705e-5,-2.8063743424389867e-9,8.518060495699486e-4,3.081805794501351e-5,-2.7657886014572145e-9,8.523069735798167e-4,3.082345930368575e-5,-2.7605358876292335e-9,8.528098318936862e-4,3.0920864735206294e-5,-2.79447672381635e-9,8.532822991542584e-4,3.110457416848017e-5,-2.8656065993726486e-9,8.536945524033567e-4,3.1354085988535145e-5,-2.965633018689591e-9,8.540249574865114e-4,3.163548969538209e-5,-3.080489694586202e-9,8.542654720972812e-4,3.190574453586719e-5,-3.192028596537508e-9,8.544254041595665e-4,3.211974836915866e-5,-3.28090202256463e-9,8.545322236510779e-4,3.2239278828225266e-5,-3.3303148632010992e-9,8.546285733291039e-4,3.224218246448245e-5,-3.330007151957699e-9,8.547652672831671e-4,3.2129878781118014e-5,-3.279649312494011e-9,8.549907364400541e-4,3.193111420486313e-5,-3.1907193571916717e-9,8.553382926807156e-4,3.1699773222277685e-5,-3.0858345714949625e-9,8.558140144434115e-4,3.150496484434305e-5,-2.9946769942906606e-9,8.563897321781071e-4,3.1413455736156216e-5,-2.9464704670555277e-9,8.570061787799461e-4,3.1468304822318046e-5,-2.960646903904852e-9,8.575886586831152e-4,3.167199701229673e-5,-3.039317862345337e-9,8.580709942206223e-4,3.198346246211776e-5,-3.1656988018487623e-9,8.584171135061124e-4,3.233248147476386e-5,-3.310099393214403e-9,8.586297960336273e-4,3.264478971416768e-5,-3.440645754903185e-9,8.587438963877701e-4,3.286515489171303e-5,-3.5332321749884526e-9,8.58810255130539e-4,3.2968897888927814e-5,-3.5765784450704622e-9,8.588794391843271e-4,3.2960802961293873e-5,-3.5719305847910328e-9,8.589911009932855e-4,3.2866533850223576e-5,-3.529577019202463e-9,8.591697919005255e-4,3.272249454060714e-5,-3.4646650245504987e-9,8.594251730433313e-4,3.256765883619841e-5,-3.393767811079765e-9,8.597541389353542e-4,3.2438210292960187e-5,-3.3325521813766835e-9,8.601432315592983e-4,3.236427582707883e-5,-3.2942803106507433e-9,8.605707893509768e-4,3.236765846754327e-5,-3.2887387933129255e-9,8.610090272757816e-4,3.245976837958149e-5,-3.3212886990489386e-9,8.614266330715411e-4,3.2639496241471747e-5,-3.3919234343927197e-9,8.617925265638105e-4,3.289145361493536e-5,-3.4944824234170423e-9,8.620810773671341e-4,3.318566240946574e-5,-3.616455097562243e-9,8.62278291344594e-4,3.3480062508905175e-5,-3.7399625948591e-9,8.623874686730959e-4,3.372681857367478e-5,-3.844371487446432e-9,8.624320722870976e-4,3.38822001208865e-5,-3.910489310686052e-9,8.624536695365803e-4,3.391801974913249e-5,-3.925509323340507e-9,8.625041693741896e-4,3.3831145103447495e-5,-3.887217720697746e-9,8.626336863724894e-4,3.364749744285424e-5,-3.805912914971897e-9,8.628771728569449e-4,3.34184061309152e-5,-3.703085242205503e-9,8.632436901356097e-4,3.3209472451514874e-5,-3.606852247536402e-9,8.637117164869609e-4,3.30843353744748e-5,-3.5450791305814132e-9,8.64232526978409e-4,3.30874054017447e-5,-3.537852982664476e-9,8.647417259564168e-4,3.32305264787094e-5,-3.591449619924816e-9,8.651764977358669e-4,3.348834402295054e-5,-3.695963620118213e-9,8.654934113410493e-4,3.380514974584113e-5,-3.827962144226022e-9,8.65680227216288e-4,3.411174050293928e-5,-3.957644664897803e-9,8.657570330287688e-4,3.4346041766830635e-5,-4.057808965225653e-9,8.657669387277931e-4,3.446932313815453e-5,-4.11101586076775e-9,8.657613435022625e-4,3.4472588411529344e-5,-4.112539581686109e-9,8.657862135868558e-4,3.4373094380466114e-5,-4.069050533975013e-9,8.658735763707832e-4,3.4205060581144676e-5,-3.99475967321788e-9,8.660388852455758e-4,3.400943296480929e-5,-3.907091687927469e-9,8.66282466493992e-4,3.3825844969993364e-5,-3.823219696797409e-9,8.665927137849105e-4,3.3687619719216236e-5,-3.7578388388344435e-9,8.669494024009601e-4,3.361913423273398e-5,-3.7219299984715987e-9,8.673264891657124e-4,3.363439881774626e-5,-3.7220625465320145e-9,8.676945418145927e-4,3.373592694579208e-5,-3.7598487309122184e-9,8.680234235964354e-4,3.391351714465576e-5,-3.831368929963179e-9,8.682859972296471e-4,3.4143297256214016e-5,-3.926691202132316e-9,8.684632880644983e-4,3.4388163647136244e-5,-4.029972466578756e-9,8.685506814790997e-4,3.460127638371885e-5,-4.120889818604067e-9,8.685633840062911e-4,3.4734023180121915e-5,-4.178058611548191e-9,8.685380720783138e-4,3.4748252417980764e-5,-4.184372534042753e-9,8.685276349437916e-4,3.462966914812959e-5,-4.132901756292709e-9,8.685883291320915e-4,3.439669502663824e-5,-4.030854924441111e-9,8.687628382465881e-4,3.409933619952682e-5,-3.8992420211352555e-9,8.690658895057307e-4,3.3806647123293056e-5,-3.767634596223998e-9,8.694785799556857e-4,3.358696397155016e-5,-3.66578227162126e-9,8.69953568550893e-4,3.348840676249508e-5,-3.6152232829612797e-9,8.704286241585501e-4,3.352635120659295e-5,-3.623705146793659e-9,8.708434233092473e-4,3.36810197345908e-5,-3.6838087593563796e-9,8.711544860856722e-4,3.390464015558857e-5,-3.775680273187482e-9,8.713445725476498e-4,3.4135193673201416e-5,-3.872743220397276e-9,8.714246913321904e-4,3.4312587501143965e-5,-3.948669842514471e-9,8.714288385999942e-4,3.4392832306213484e-5,-3.983673438771948e-9,8.714035709437477e-4,3.4356588349835174e-5,-3.968454991877816e-9,8.713959401397892e-4,3.4210390500048455e-5,-3.904979500162979e-9,8.714434314935408e-4,3.398142071965159e-5,-3.80439632081465e-9,8.715682144280527e-4,3.370866502664886e-5,-3.6833035835006632e-9,8.717760142029626e-4,3.343373250814609e-5,-3.5597712152619653e-9,8.720583485322628e-4,3.3193644320049306e-5,-3.450143545804329e-9,8.723963305223968e-4,3.301640385510928e-5,-3.367013852901416e-9,8.727645877754009e-4,3.2918942751948914e-5,-3.318240190622122e-9,8.731346053164378e-4,3.290646426016532e-5,-3.3065975355143806e-9,8.734775263631105e-4,3.297227361968222e-5,-3.329661479803068e-9,8.737669246598247e-4,3.3097659941762863e-5,-3.3797021541565744e-9,8.739822501713752e-4,3.325204966262417e-5,-3.443668277316694e-9,8.741134429392175e-4,3.339441456133996e-5,-3.5037068763647772e-9,8.741663973729802e-4,3.347758868121113e-5,-3.538992779628764e-9,8.741674829281171e-4,3.3457101736264556e-5,-3.529614543781381e-9,8.741636709228396e-4,3.33044797175946e-5,-3.4624919926690294e-9,8.742144615830622e-4,3.302135267114131e-5,-3.337668517116169e-9,8.743747932608298e-4,3.264687423555464e-5,-3.1716545924770886e-9,8.746743840366114e-4,3.2251051243278426e-5,-2.9946081022665746e-9,8.751039489192597e-4,3.1913364921373566e-5,-2.841130150424048e-9,8.75616678903275e-4,3.169573821909346e-5,-2.738595983860198e-9,8.761445007935473e-4,3.162302292091491e-5,-2.698649906049282e-9,8.766203447195945e-4,3.167892308982781e-5,-2.715236885002451e-9,8.769963987697803e-4,3.18159383463042e-5,-2.7686104110067445e-9,8.772531062745815e-4,3.197221978649029e-5,-2.8323654947714774e-9,8.773990475854998e-4,3.2088299096119665e-5,-2.880564943726866e-9,8.774645762292172e-4,3.211954673233677e-5,-2.893205151464858e-9,8.774924155916585e-4,3.204298846969703e-5,-2.8593905607603026e-9,8.775277330636137e-4,3.185874387139908e-5,-2.778242446816188e-9,8.776094585559394e-4,3.158700840416259e-5,-2.657838435817586e-9,8.777641128132043e-4,3.126183960920271e-5,-2.5126548703569532e-9,8.78002877757191e-4,3.092341017264447e-5,-2.360210638245288e-9,8.78321864386743e-4,3.061051760107952e-5,-2.217716237311034e-9,8.787048132667152e-4,3.0354696413936292e-5,-2.0993733631963004e-9,8.791271129207127e-4,3.0176554948077197e-5,-2.0146576508170057e-9,8.795600526842855e-4,3.0084265265720063e-5,-1.9675904842138486e-9,8.799746005764623e-4,3.0073592700195904e-5,-1.9567272155798592e-9,8.803445685727407e-4,3.0128701933306585e-5,-1.9754931411414064e-9,8.806494724082241e-4,3.0223295863434567e-5,-2.012635250546257e-9,8.808775707256542e-4,3.0322170015652122e-5,-2.052817626545346e-9,8.810294629751855e-4,3.0383874541022066e-5,-2.077700737209661e-9,8.811219817814094e-4,3.0365784932921254e-5,-2.068140259899549e-9,8.811907881742122e-4,3.0232911390513986e-5,-2.0081342888122047e-9,8.812885190182023e-4,2.997035224275941e-5,-1.8904615726488688e-9,8.814748050867232e-4,2.9595882363843328e-5,-1.7223897108962145e-9,8.817972325406356e-4,2.9164896341324755e-5,-1.5279575596742727e-9,8.822694105023639e-4,2.8759323793384683e-5,-1.343146342028477e-9,8.828590048460752e-4,2.846005103322195e-5,-1.203784176843767e-9,8.834961316970444e-4,2.8315408404152892e-5,-1.1317019817736651e-9,8.840994293836644e-4,2.83238474756633e-5,-1.1270381711241277e-9,8.846048503517724e-4,2.8439563876848128e-5,-1.1705107836514342e-9,8.849825261434277e-4,2.859423427913567e-5,-1.2327153363012424e-9,8.852377405673897e-4,2.872082247503333e-5,-1.2843809606697235e-9,8.854014350719654e-4,2.876976020388615e-5,-1.303411303612948e-9,8.855175691600622e-4,2.8715569658327886e-5,-1.277894686911527e-9,8.856319414654461e-4,2.8556383656666185e-5,-1.2061264571813115e-9,8.857841196699158e-4,2.8309570284204513e-5,-1.0949624616496077e-9,8.86002414496257e-4,2.800577749822175e-5,-9.574157297751806e-10,8.863013254260068e-4,2.7682541703841347e-5,-8.099261480403505e-10,8.866810883604368e-4,2.737801278175877e-5,-6.695408320630273e-10,8.871291034948231e-4,2.712535762590261e-5,-5.513048593649785e-10,8.876228817584209e-4,2.6948399119048687e-5,-4.661876242949888e-10,8.881339924077757e-4,2.6858865286951922e-5,-4.197713685400893e-10,8.886323956855838e-4,2.6855412138336997e-5,-4.1179225649502044e-10,8.890905424093482e-4,2.6924258581403914e-5,-4.3643441475982406e-10,8.89486876270744e-4,2.704096977561104e-5,-4.831197421077393e-10,8.898087302066524e-4,2.7172978043164845e-5,-5.375765842824722e-10,8.900547902185537e-4,2.7282747178927522e-5,-5.831513974124379e-10,8.902372653753913e-4,2.733186854749421e-5,-6.02542926548089e-10,8.903834851144673e-4,2.7286782595027556e-5,-5.803341451115104e-10,8.905356820182493e-4,2.712678713758405e-5,-5.066546828876249e-10,8.907466490935431e-4,2.6853822167289743e-5,-3.817222697006188e-10,8.910687379135351e-4,2.650095008026581e-5,-2.1981389275727818e-10,8.915358613141435e-4,2.613316302797963e-5,-4.974968918210426e-11,8.921441557986117e-4,2.583341569558239e-5,9.130127597938247e-11,8.928435576312597e-4,2.5673648601187617e-5,1.7077634639135572e-10,8.935508750856743e-4,2.5683679634147847e-5,1.7468326592194504e-10,8.941811428365587e-4,2.5837610180360195e-5,1.1381510218411522e-10,8.946793739990621e-4,2.6067113585673513e-5,1.8006901262402275e-11,8.950349091826171e-4,2.6291644820413183e-5,-7.717084794839584e-11,8.952750213494531e-4,2.6446389435700407e-5,-1.427663814093566e-10,8.954475970296075e-4,2.64960814946439e-5,-1.625988001066087e-10,8.956041887442954e-4,2.6435196735103513e-5,-1.334689640026147e-10,8.957887712051753e-4,2.6280905283114967e-5,-6.224871917615731e-11,8.960323226691599e-4,2.6064317323041538e-5,3.777765165941726e-11,8.963513575114935e-4,2.5822815459411318e-5,1.5017549800954496e-10,8.96748509792149e-4,2.5594124919428984e-5,2.5799083696445723e-10,8.972140957359525e-4,2.5411712108030967e-5,3.459131555119787e-10,8.97728398380985e-4,2.5301088813513795e-5,4.0208667445015245e-10,8.982646818886401e-4,2.5276973108559064e-5,4.19511702332487e-10,8.987928885022273e-4,2.5341491278246515e-5,3.969097854818967e-10,8.992838386101128e-4,2.548373838032777e-5,3.389148700251626e-10,8.997135067687896e-4,2.5680959581705512e-5,2.5551799630259e-10,9.000668011166033e-4,2.590128913974731e-5,1.6084571383571664e-10,9.003404075887244e-4,2.610773225553987e-5,7.143433854803536e-11,9.005444531271067e-4,2.626306035931546e-5,4.124552392039377e-12,9.00702826310028e-4,2.6335350498633444e-5,-2.636373164642357e-11,9.008518990331428e-4,2.6304027478397698e-5,-1.0173572691243059e-11,9.010369750715351e-4,2.616622985452215e-5,5.4685092455799334e-11,9.013053376731691e-4,2.5942528849006335e-5,1.5954350428825642e-10,9.016950534266347e-4,2.5679451672258137e-5,2.8372503804596007e-10,9.022205066966907e-4,2.544470577148632e-5,3.9657633063202955e-10,9.028595081446744e-4,2.5311299328910574e-5,4.6464848630157026e-10,9.035509621163673e-4,2.5331826054565013e-5,4.634519661365919e-10,9.042106403831823e-4,2.5513725417149697e-5,3.8884970955208253e-10,9.047617243836385e-4,2.5811755065389144e-5,2.60664002639359e-10,9.051639505218222e-4,2.614554976562279e-5,1.1486292999309726e-10,9.054243849394402e-4,2.6432431256007105e-5,-1.1230224109221291e-11,9.055864786501333e-4,2.6615750824420068e-5,-9.174245642919217e-11,9.057083348203511e-4,2.6675961252054152e-5,-1.1728835587695205e-10,9.05843511575355e-4,2.6625694545636095e-5,-9.286576972832296e-11,9.06030514980889e-4,2.649764658641052e-5,-3.258481232105302e-11,9.06290090659766e-4,2.6332711316700743e-5,4.5492394804177083e-11,9.066269079166894e-4,2.617147979221003e-5,1.230902666428942e-10,9.07032727485054e-4,2.6049140781842117e-5,1.8405636274430814e-10,9.074895537591257e-4,2.5992565692749985e-5,2.1580884693763228e-10,9.079725233622418e-4,2.601842289978903e-5,2.1034058494702972e-10,9.08452843161885e-4,2.6131794189518346e-5,1.649501949413581e-10,9.089011187176733e-4,2.632531969086917e-5,8.266582317282753e-11,9.092912509323934e-4,2.657930002330282e-5,-2.7811191372744197e-11,9.096046947811349e-4,2.686337600497953e-5,-1.5287896453951608e-10,9.098343835696975e-4,2.7140160235303376e-5,-2.756580777618742e-10,9.099874027396871e-4,2.737067976970732e-5,-3.7839683569915226e-10,9.100856080701482e-4,2.7521019033657425e-5,-4.4541806075215186e-10,9.101636727790192e-4,2.756915427471307e-5,-4.662024595936307e-10,9.102644580498961e-4,2.751076592587584e-5,-4.3810314345020306E-10,9.104319511252228e-4,2.736291054800073e-5,-3.681879685719245e-10,9.107022221916946e-4,2.7164432891512126e-5,-2.736553609265788e-10,9.110933354507029e-4,2.6971680885033756e-5,-1.800824904443576e-10,9.11596330532063e-4,2.6848117080263942e-5,-1.167738231171905e-10,9.121710507471927e-4,2.6847793958635906e-5,-1.0913815308381964e-10,9.12751534970597e-4,2.6996070209376236e-5,-1.6964949395235283e-10,9.132634636288651e-4,2.72756008370633e-5,-2.9115810444199527e-10,9.136492992958313e-4,2.762733566158342e-5,-4.471383736182009e-10,9.138892892803114e-4,2.797002314543524e-5,-6.005507786510418e-10,9.140064810409892e-4,2.8229735821653137e-5,-7.173953360843062e-10,9.140537060586121e-4,2.8363778381520954e-5,-7.777099880424133e-10,9.14091744347561e-4,2.8368259804342512e-5,-7.790964097262822e-10,9.141707165736832e-4,2.8270290432506036e-5,-7.332676996715194e-10,9.143209375298112e-4,2.811333903517838e-5,-6.595294780294835e-10,9.145523676781168e-4,2.7943782175206335e-5,-5.787922436801097e-10,9.148586524660526e-4,2.780218073489562e-5,-5.09645207598181e-10,9.15222213264884e-4,2.771907523928594e-5,-4.663750532641056e-10,9.156186000215372e-4,2.771356286516508e-5,-4.581833019385022e-10,9.160198239972885e-4,2.7793018214471577e-5,-4.889247071998724e-10,9.163971548837643e-4,2.795307226790254e-5,-5.570122799444724e-10,9.167240149473723e-4,2.8177711329907586e-5,-6.554310086134877e-10,9.169794235753807e-4,2.8439962674449603e-5,-7.720472188029496e-10,9.171519825482253e-4,2.870402885777489e-5,-8.905750008556582e-10,9.172436935254598e-4,2.8929649817970348e-5,-9.925419838939779e-10,9.172722940063046e-4,2.9078832692983632e-5,-1.0603291660817625e-9,9.172706400546866e-4,2.912409780548574e-5,-1.080924584550345e-9,9.17282157849279e-4,2.9056323329246427e-5,-1.0495469582952546e-9,9.17352548715972e-4,2.8889652042343435e-5,-9.719977617501207e-10,9.175193386587934e-4,2.8661331040972106e-5,-8.647637143988589e-10,9.178017998224793e-4,2.842566755332037e-5,-7.524533284368034e-10,9.181939299909826e-4,2.824278153652306e-5,-6.627971222401617e-10,9.186627846165465e-4,2.8164133229208014e-5,-6.200278774014088e-10,9.19153691738718e-4,2.8217986087638425e-5,-6.380459293784765e-10,9.196025451004935e-4,2.8398984740483134E-05,-7.153326477966576e-10,9.199531003263491e-4,2.8666337663424036e-5,-8.338087002295918e-10,9.201741950295597e-4,2.8953522843619235e-5,-9.631226655409933e-10,9.202698561839225e-4,2.918802920852016e-5,-1.0697405631849333e-9,9.202770539297086e-4,2.9313951870328424e-5,-1.1274657767908662e-9,9.20251788073042e-4,2.9307694253609973e-5,-1.1248038587933661e-9,9.202503631241845e-4,2.918064509705824e-5,-1.0663142394564279e-9,9.203142811661418e-4,2.897003743896867e-5,-9.68530131895985e-10,9.204634699590332e-4,2.8724513202568727e-5,-8.534492296718607e-10,9.206973132387841e-4,2.849110787091789e-5,-7.426352211365498e-10,9.209999773637789e-4,2.8307067355278376e-5,-6.534492842105844e-10,9.213465790289916e-4,2.8196472237938423e-5,-5.974035621587512e-10,9.21708293335506e-4,2.8169942280115928e-5,-5.798940312517992e-10,9.220560080914304e-4,2.8225631349565033e-5,-6.005462214024394e-10,9.223629986190541e-4,2.8350410654034294e-5,-6.536955210792199e-10,9.226073866112044e-4,2.8520935298446312e-5,-7.28851240962084e-10,9.227750120124014e-4,2.8705005688838147e-5,-8.113094184352923e-10,9.228628541636617e-4,2.886416079327547e-5,-8.833278120249603e-10,9.228823589672353e-4,2.895853283479903e-5,-9.263428574000358e-10,9.228611534120579e-4,2.8954410829763517e-5,-9.244525203760215e-10,9.22841094274703e-4,2.8833597004887607e-5,-8.687589669821464e-10,9.228711087655056e-4,2.860178543460586e-5,-7.612984631604381e-10,9.229952903879357e-4,2.8291928119182712e-5,-6.167002132570091e-10,9.232395355675018e-4,2.7959342967609063e-5,-4.600776629160696e-10,9.236018170315074e-4,2.766851040299726e-5,-3.211006337196332e-10,9.240504121843283e-4,2.7475443382623978e-5,-2.2596816610665073e-10,9.24531262399518e-4,2.741170749626898e-5,-1.8999789985040983e-10,9.249820629694834e-4,2.747542499218661e-5,-2.1326498107148244e-10,9.25348579660942e-4,2.7631811895541113e-5,-2.805432543382063e-10,9.255984900902482e-4,2.7822723222327646e-5,-3.6544697746303546e-10,9.257290496695094e-4,2.798233184373522e-5,-4.3755816439126784e-10,9.25766534088789e-4,2.80545120609564e-5,-4.705154590635174e-10,9.257576987930197e-4,2.800685278340508e-5,-4.4865598588417815e-10,9.257561138535627e-4,2.7837106293070436e-5,-3.701910247767966e-10,9.258080615404461e-4,2.757056376533481e-5,-2.4616627976356377e-10,9.259425348434525e-4,2.7250326470559132e-5,-9.609656809923689e-11,9.261676807511085e-4,2.6924824434891593e-5,5.773311606893498e-11,9.264731188036599e-4,2.663697142690499e-5,1.9528968966108854e-10,9.268356351407438e-4,2.6417432659609167e-5,3.019901995562894e-10,9.272255509647921e-4,2.6282152592361178e-5,3.6997091936557287e-10,9.276120574189009e-4,2.6232846291373425e-5,3.9797540595297546e-10,9.279670116931762e-4,2.6258881085469936e-5,3.9055441141759986e-10,9.282675227858236e-4,2.633942937784366e-5,3.570959163618194e-10,9.284980234511821e-4,2.644547284239765e-5,3.109050504872678e-10,9.286524796636579e-4,2.654193492234242e-5,2.6822927772623276e-10,9.287369625751979e-4,2.6590780100069592e-5,2.468431766251289e-10,9.287720369209947e-4,2.6556135305642376e-5,2.636822102111064e-10,9.287934339306461e-4,2.6412028824363202e-5,3.312264037819188e-10,9.288486997992517e-4,2.6151880961107663e-5,4.530300718778846e-10,9.289878720362526e-4,2.5796515725207018e-5,6.199146734068698e-10,9.292487589067231e-4,2.5395465656098757e-5,8.092647167352129e-10,9.29641666352082e-4,2.5017209649756432e-5,9.894516360464816e-10,9.301413876496481e-4,2.472917795980915e-5,1.1290141747255939e-9,9.306922559167429e-4,2.4575229989538544e-5,1.2070780979559616e-9,9.312251819721861e-4,2.4561109000296633e-5,1.2202059312944135e-9,9.316789667520669e-4,2.465414560968802e-5,1.1827604254879246e-9,9.320169043861123e-4,2.479571175444768e-5,1.1213819953507269e-9,9.322336847376593e-4,2.4919677271373376e-5,1.0666004249723868e-9,9.323526991819391e-4,2.496981318218703e-5,1.044792681412822e-9,9.324168167771345e-4,2.4911728305382368e-5,1.072537792680831e-9,9.324763341556606e-4,2.473779692662344e-5,1.1541348440936524e-9,9.32577287240139e-4,2.446550131433796e-5,1.2821529509168165e-9,9.327524775390439e-4,2.4130741138395573e-5,1.440358563370683e-9,9.330166395630526e-4,2.3778318046824064e-5,1.608044416470438e-9,9.333661039477023e-4,2.345210977652227e-5,1.7646106799430005e-9,9.337821762564567e-4,2.3187164366326925e-5,1.8933448565731633e-9,9.342366534787011e-4,2.3004991867956138e-5,1.983756984261391e-9,9.346977645863617e-4,2.2912152275451638e-5,2.0323646948176415e-9,9.351352665974508e-4,2.2901360219547865e-5,2.0422501912195693e-9,9.355241516458479e-4,2.2953966611580642e-5,2.021915505548688e-9,9.358471024062418e-4,2.3042848220487e-5,1.983917263664366e-9,9.360962029673838e-4,2.313526295966051e-5,1.9435240421953627e-9,9.362744148421519e-4,2.319579877368126e-5,1.9173555450183216e-9,9.363970340869479e-4,2.3190008396632788e-5,1.921714213936969e-9,9.364926985739199e-4,2.3089580081948874e-5,1.970175219873316e-9,9.366025595028989e-4,2.287954350737153e-5,2.070174683549589e-9,9.367754583789063e-4,2.256662486320555e-5,2.219009962619075e-9,9.370572543760401e-4,2.2185503816041416e-5,2.40080151825208e-9,9.374749898088448e-4,2.179746684581724e-5,2.5870254829646286e-9,9.380215496738124e-4,2.1476617739059208e-5,2.7428988022427817e-9,9.386504920238448e-4,2.1285143976963856e-5,2.8389345262250392e-9,9.392879545260637e-4,2.124847926412409e-5,2.8626284858923288e-9,9.398581363504856e-4,2.1344635824425707e-5,2.8236063659948714e-9,9.403092110193681e-4,2.1513973951784947e-5,2.749245885993131e-9,9.406269138130842e-4,2.1682634723939766e-5,2.67386501863676e-9,9.408323763286779e-4,2.178648157968665e-5,2.6275885831474924e-9,9.409696504997068e-4,2.1786146578814432e-5,2.6292808737827737e-9,9.410906514838015e-4,2.1671298131321062e-5,2.6844268786052037e-9,9.41242649635597e-4,2.145702236312698e-5,2.786633456564728e-9,9.414601509848395e-4,2.1176178630965497e-5,2.9210047073092557e-9,9.417610200086401e-4,2.0870608445111807e-5,3.0681179766648086e-9,9.421460370053103e-4,2.0582809873944577e-5,3.207899651127782e-9,9.426010936837508e-4,2.0348968697412414e-5,3.3229824926066307e-9,9.431012540259686e-4,2.0193985304551373e-5,3.401195641488044e-9,9.436158120570794e-4,2.012884842892798e-5,3.436951038320817e-9,9.441134784478598e-4,2.015031500623975e-5,3.4314859276191417e-9,9.44566950904901e-4,2.0242534645964484e-5,3.3921135298370826e-9,9.449563631171996e-4,2.0379982085524475e-5,3.330805785534591e-9,9.45271517348029e-4,2.0530961708450033e-5,3.2625023737391606e-9,9.455131621575188e-4,2.0661233197895548e-5,3.203395247216593e-9,9.456936234191719e-4,2.0737740900431553e-5,3.1692023079153e-9,9.458369007988554e-4,2.073272466669384e-5,3.1732674706314038e-9,9.459779040524844e-4,2.0628653770206123e-5,3.224233945190357e-9,9.461597634391267e-4,2.0424167988906754e-5,3.3231751090821356e-9,9.46427574458297e-4,2.014003684687474e-5,3.4606600272122213e-9,9.468173676227388e-4,1.98221812789624e-5,3.615192303367057e-9,9.473413942934375e-4,1.9537012097558103e-5,3.755318583394564e-9,9.479753457182548e-4,1.9355058402098106e-5,3.847349600926752e-9,9.486571399076209e-4,1.9325058394134616e-5,3.867688552958027e-9,9.493040520760504e-4,1.9450539767815956e-5,3.814066075128484e-9,9.498430651538646e-4,1.9684623094334385e-5,3.7081770948540923e-9,9.502378728614017e-4,1.994861501821484e-5,3.5870008241428506e-9,9.504975307118342e-4,2.01632840220824e-5,3.4880374073031084e-9,9.506654032765242e-4,2.0274709481559317e-5,3.437068799563959e-9,9.507989420812344e-4,2.0264365859063468e-5,3.4433449550727618e-9,9.509516863480496e-4,2.0145143002205663e-5,3.5013586813003237e-9,9.511626032896819e-4,1.9950604861647016e-5,3.595755007819909e-9,9.514523625841899e-4,1.972359867900281e-5,3.7065483148110366e-9,9.518240846294337e-4,1.9507126203245064e-5,3.813351896094841e-9,9.522662841079077e-4,1.933798514493866e-5,3.898421280054506e-9,9.527567177104721e-4,1.9242649321887765e-5,3.94873970416592e-9,9.532666534200279e-4,1.9234898009828817e-5,3.9573083496472175e-9,9.537653046836214e-4,1.931500888982162e-5,3.923656171525834e-9,9.542241491314553e-4,1.9470419469034043e-5,3.853573929853045e-9,9.546208269205008e-4,1.967778168597357e-5,3.758113485784791e-9,9.549422337944906e-4,1.990624356532854e-5,3.6519733720235854e-9,9.551864658672643e-4,2.012153016907811e-5,3.5515235649189295e-9,9.553635348866212e-4,2.029033148993112e-5,3.4727284456947125e-9,9.554949463176509e-4,2.0384734278047446e-5,3.429079651875691e-9,9.55612166139684e-4,2.03866030610309e-5,3.4295402733541126e-9,9.557537872596488e-4,2.029183687422643e-5,3.4764900665650733e-9,9.559608378031081e-4,2.0114246891201803e-5,3.563775485379721e-9,9.562694312086343e-4,1.988802000189864e-5,3.6753836672060575e-9,9.567005353306505e-4,1.9666425812314765e-5,3.785918859393363e-9,9.572485741343938e-4,1.951354653734905e-5,3.864486310112931e-9,9.57873847869679e-4,1.9487015195238054e-5,3.8829949935352816e-9,9.58506375185627e-4,1.961495423927636e-5,3.827353654574862e-9,9.590658554599388e-4,1.9878214338844435e-5,3.706183686441474e-9,9.59491778185771e-4,2.021167822462048e-5,3.5503480856677113e-9,9.597671996149698e-4,2.0528378965229346e-5,3.4014299519401243e-9,9.599217284447296e-4,2.0753552855409916e-5,3.295380207449077e-9,9.600140258223889e-4,2.084893939258985e-5,3.2508500223577976e-9,9.601071466008167e-4,2.081721898662703e-5,3.2670417811981256e-9,9.602500853369318e-4,2.0691028420511654e-5,3.3288768573415605e-9,9.604701387776805e-4,2.051709319339869e-5,3.4144264007709955e-9,9.60773545484276e-4,2.034297332174702e-5,3.501100421052396e-9,9.611500679665309e-4,2.0208786324005668e-5,3.569552864573399e-9,9.615783591656324e-4,2.014318881895291e-5,3.6056735200335207e-9,9.620307130834803e-4,2.0161937110386437e-5,3.6014269400379457e-9,9.62477113531018e-4,2.0267731706648574e-5,3.5550823882264824e-9,9.628889049217328e-4,2.0450864920827385e-5,3.4710012484743916e-9,9.632422415170349e-4,2.069066577730867e-5,3.3589647822421636e-9,9.635212754316284e-4,2.0957906935666852e-5,3.2329849290971195e-9,9.637208099389389e-4,2.1218360815741975e-5,3.1095519476630494e-9,9.638478893925641e-4,2.143740445538196e-5,3.0054061149790872e-9,9.639218361763492e-4,2.158517204251695e-5,2.9350831633136274e-9,9.639725275225862e-4,2.164161332623286e-5,2.9085171189180765e-9,9.64036920303166e-4,2.1600821946777073e-5,2.928960887667208e-9,9.641539462469475e-4,2.1473982466179215e-5,2.991503500896854e-9,9.643579665181983e-4,2.129029021121154e-5,3.0824929931979146e-9,9.646710825382556e-4,2.1095019009386883e-5,3.180304929063653e-9,9.650951414487477e-4,2.0943493593642626e-5,3.2581268817857795e-9,9.656055505064805e-4,2.08898021785074e-5,3.2893920797482204e-9,9.661506527532753e-4,2.0970707862049013e-5,3.2556740154475738e-9,9.666609700686485e-4,2.1188936127107843e-5,3.154989219151684e-9,9.670695157136533e-4,2.1504456001118907e-5,3.0062342252277902e-9,9.673367523603838e-4,2.1842686062608042e-5,2.8453160317467475e-9,9.674669505838162e-4,2.2120216315934066e-5,2.7126670331229932e-9,9.675052672091475e-4,2.227588153984791e-5,2.6381300324599617e-9,9.67517310975436e-4,2.2290098639572074e-5,2.631571812351488e-9,9.675641549386202e-4,2.2184188610723864e-5,2.683192639935835e-9,9.676856175598294e-4,2.20050732406217e-5,2.770831293998539e-9,9.678958345343047e-4,2.1806797104405777e-5,2.8687326779884426e-9,9.681874796128061e-4,2.1636899335670483e-5,2.953998363007588e-9,9.685391645791842e-4,2.152957275673156e-5,3.00987037631748e-9,9.689223645110006e-4,2.150393434528262e-5,3.0266647100820593e-9,9.693065461435913e-4,2.1564905127593073e-5,3.0015027830697376e-9,9.696627464705727e-4,2.170489096403e-5,2.9376390040777005e-9,9.699663713453124e-4,2.190558400417185e-5,2.843664610904784e-9,9.701997585934131e-4,2.213998368625858e-5,2.732536103734538e-9,9.703546573483743e-4,2.2375052452482884e-5,2.6202568912921775e-9,9.704343769114892e-4,2.2575473791547756e-5,2.524023751178972e-9,9.70454924970594e-4,2.2708679506424222e-5,2.4597828841057676e-9,9.704442684490575e-4,2.2750680548228815e-5,2.4394191096140195e-9,9.70439123002729e-4,2.269163919856002e-5,2.4680675742140396e-9,9.704792630519241e-4,2.2539791907013454e-5,2.542185695856593e-9,9.706000419416595e-4,2.2322356320565065e-5,2.6490241837254375e-9,9.708244225247657e-4,2.208254490993235e-5,2.7679330778128663e-9,9.711561348596273e-4,2.1872563135784633e-5,2.8736116004682885e-9,9.715756674472968e-4,2.1743144202396543e-5,2.9411105609226534e-9,9.720408542324096e-4,2.1730926538918943e-5,2.952015717458691e-9,9.724936339510598e-4,2.1846219921065344e-5,2.9005828036571425e-9,9.728734724452532e-4,2.206526684943893e-5,2.797753482524233e-9,9.73135268736305e-4,2.2331915022099625e-5,2.670534930423955e-9,9.732656869873846e-4,2.2571721047228047e-5,2.5551777813643346e-9,9.732896097496811e-4,2.2715649390846857e-5,2.4855509251822116e-9,9.732616414073596e-4,2.272350320648063e-5,2.481624710067114e-9,9.732459633450723e-4,2.2595527734851322e-5,2.5437609524692543e-9,9.732948670608518e-4,2.2367393624596813e-5,2.6551037957679194e-9,9.73435775314028e-4,2.2093662920085047e-5,2.7895237218060307e-9,9.736697513088091e-4,2.18295826774539e-5,2.9203430820786453e-9,9.739779823635234e-4,2.1618463822268142e-5,3.0263986928152343e-9,9.743307630656896e-4,2.14864286442583e-5,3.094632000552376e-9,9.746951934172733e-4,2.1442559653592196e-5,3.120143478228777e-9,9.75040337470858e-4,2.1481561948537084e-5,3.105047155900916e-9,9.753402753088035e-4,2.1586872020260996e-5,3.0570669881734935e-9,9.755760407850127e-4,2.1733399542332765e-5,2.9882432258541283e-9,9.757372606998641e-4,2.1890007987213578e-5,2.913710103700545e-9,9.758238522467932e-4,2.2022308074060718e-5,2.8502981225779335e-9,9.758475695193567e-4,2.2096463822383953e-5,2.814649675643213e-9,9.75832592759985e-4,2.208441265972937e-5,2.8206647589847394e-9,9.758139779570534e-4,2.1970120824932505e-5,2.8764536267483205e-9,9.758329513980938e-4,2.1755459239150598e-5,2.9814657729990575e-9,9.759289405456378e-4,2.146343405290607e-5,3.1248755506446147e-9,9.761297562449015e-4,2.1136469459250627e-5,3.2863308207215907e-9,9.764427844228285e-4,2.0828722875066234e-5,3.4395760619971846e-9,9.768504235625822e-4,2.05936578116549e-5,3.558401665094199e-9,9.773119310828517e-4,2.047011212383905e-5,3.623414500991834e-9,9.777718670258082e-4,2.0470907088346007e-5,3.627703453703138e-9,9.781733258317801e-4,2.057752945621449e-5,3.5796494003707138e-9,9.784727031122457e-4,2.0742968740602736e-5,3.501766797457081e-9,9.786520083386822e-4,2.090280873294008e-5,3.4254174178099575e-9,9.787247391817811e-4,2.099234249163606e-5,3.3824366972435045e-9,9.787325073239532e-4,2.0964978181006943e-5,3.3960258792809006e-9,9.787325574450096e-4,2.080554329966027e-5,3.474116418782361e-9,9.78780386798012e-4,2.053316629811452e-5,3.607853339306525e-9,9.78914283306498e-4,2.0192836373745813e-5,3.7756288344559166e-9,9.79147450149718e-4,1.9840040928541138e-5,3.9505044744465266e-9,9.794691393037586e-4,1.9525344833017023e-5,4.107694790089413e-9,9.798520178516646e-4,1.928413468832371e-5,4.229601723499455e-9,9.802613780058582e-4,1.9132999458968806e-5,4.30768523320254e-9,9.806628425931363e-4,1.9071152761889917e-5,4.341903576740723e-9,9.810273134182267e-4,1.9084239326578834e-5,4.338962357581536e-9,9.81333537072951e-4,1.9148443642578993e-5,4.310353550740631e-9,9.81569296115634e-4,1.9233976343823555e-5,4.2706388260183405e-9,9.817321483998952e-4,1.9307966381521585e-5,4.235993167701627e-9,9.81830219636952e-4,1.933733918927407e-5,4.222757802688705e-9,9.818829501630556e-4,1.9292467400002797e-5,4.245632427234919e-9,9.819209964844942e-4,1.9152168044642423e-5,4.315222825428222e-9,9.8198392831691e-4,1.890983975966044e-5,4.435029642934434e-9,9.821143377150008e-4,1.857919889488635e-5,4.59861659028588e-9,9.823480141006478e-4,1.819663416702158e-5,4.788408783691395e-9,9.827021678395676e-4,1.781681352429813e-5,4.977767747591471e-9,9.8316630954625e-4,1.750019208422675e-5,5.1370239028109335e-9,9.837010460599907e-4,1.729533464359589e-5,5.242087342349132e-9,9.842471758127079e-4,1.722284340206006e-5,5.282365711457081e-9,9.847423799112572e-4,1.7267922501442923e-5,5.2645551112541595e-9,9.851390392167326e-4,1.7384650541422545e-5,5.210737350473865e-9,9.85416712413494e-4,1.7509721680699187e-5,5.151788515618179e-9,9.855858656559924e-4,1.7580163367743918e-5,5.118732221992248e-9,9.856830005405348e-4,1.754937325800318e-5,5.134813103943706e-9,9.857596419803308e-4,1.7397498039928058e-5,5.210281577132254e-9,9.858686370143312e-4,1.7134242430752782e-5,5.340872784086539e-9,9.860514093620037e-4,1.6794137806137563e-5,5.509998145968244e-9,9.863293550422345e-4,1.6426136917274978e-5,5.693759305662125e-9,9.867012674118518e-4,1.6080882897378395e-5,5.867166202605813e-9,9.871466831850105e-4,1.5799461394281728e-5,6.009706321470195e-9,9.876331363464859e-4,1.560644168178504e-5,6.108876220456722e-9,9.881244546795737e-4,1.5508013115131364e-5,6.16123561320287e-9,9.885877203164924e-4,1.5494168132305846e-5,6.1714423956312695e-9,9.889977731607897e-4,1.554301218967708e-5,6.150173958810571e-9,9.89339357154404e-4,1.5625438489487203e-5,6.11180328305642e-9,9.896077069428486e-4,1.5709163928471263e-5,6.072354236231378e-9,9.898084641090051e-4,1.5761986455145772e-5,6.047846128949401e-9,9.89957481892549e-4,1.575472773264608e-5,6.052821432389052e-9,9.900805416390554e-4,1.5664564164811243e-5,6.098708901861965e-9,9.902123484409752e-4,1.5479331179479615e-5,6.191709401312268e-9,9.903935258545628e-4,1.5202748222706768e-5,6.33020714370356e-9,9.906641160678208e-4,1.4859172652645127e-5,6.502381741232603e-9,9.910530106883304e-4,1.4494749524882107e-5,6.685572808518867e-9,9.915653761885476e-4,1.4170939529055735e-5,6.8494023081549725e-9,9.92173804543939e-4,1.3948485846748767e-5,6.963646567409606e-9,9.92820439606734e-4,1.3865800846189006e-5,7.008937764536123e-9,9.934330686488335e-4,1.3922023616282452e-5,6.98524850756154e-9,9.939493480964887e-4,1.4075052891534514e-5,6.91302227434678e-9,9.943372374337234e-4,1.4256527274009431e-5,6.825888020437902e-9,9.946022722861765e-4,1.4395571285888233e-5,6.75895614654633e-9,9.947808856143072e-4,1.4439740434982362e-5,6.738430832136037e-9,9.949257957257986e-4,1.4366093115323758e-5,6.776065172871318e-9,9.950905167510095e-4,1.418186073054903e-5,6.868729017701459e-9,9.953173989064848e-4,1.391790875148587e-5,7.001518418367263e-9,9.95630713119781e-4,1.3618756991412558e-5,7.152573416875709e-9,9.960345799292754e-4,1.3332040182830323e-5,7.29822948174995e-9,9.965148922381106e-4,1.3099245727471433e-5,7.4176277467670906e-9,9.970441941477112e-4,1.294893783688122e-5,7.496180701557594e-9,9.975882397394037e-4,1.2893264734091967e-5,7.527452492986098e-9,9.98112746713271e-4,1.2927881166143136e-5,7.513323955728468e-9,9.985890416039868e-4,1.3034634044303174e-5,7.462717843178684e-9,9.98997826875862e-4,1.3185900947308538e-5,7.389423516943071e-9,9.993309205324102e-4,1.3349405125668461e-5,7.3096360810763596e-9,9.99591375901445e-4,1.3492586365441474e-5,7.2397137309556e-9,9.99792668555754e-4,1.3586170648049899e-5,7.19436794380859e-9,9.999574846180697e-4,1.3607159236305784e-5,7.185183536470915e-9,0.0010001162353076604,1.3541721843540724e-5,7.219205045654568e-9,0.0010003049165363592,1.3388426048463978e-5,7.297338394204071e-9,0.0010005613623854227,1.3161776667357265e-5,7.4125560623676355e-9,0.0010009186855654698,1.2894930291567578e-5,7.548472365832492e-9,0.001001395431805748,1.2638913929780974e-5,7.679645009834532e-9,0.0010019842716833783,1.2454704246940159e-5,7.775465670467849e-9,0.0010026447567112351,1.2396089240531763e-5,7.80872345265965e-9,0.0010033080233894881,1.2487217081785896e-5,7.766920829338294e-9,0.0010038972478855197,1.2706548445498057e-5,7.660458605367358e-9,0.0010043565504526115,1.2989946449421098e-5,7.521224770364038e-9,0.001004672231437384,1.3254551939388285e-5,7.390681026669133e-9,0.0010048741581043606,1.3430195374539308e-5,7.304097230213788e-9,0.001005019125368549,1.3480998017901777e-5,7.27969563649755e-9,0.001005168386359312,1.340941335065461e-5,7.316596454133312e-9,0.0010053704906546521,1.3246930061867809e-5,7.3994046186029145e-9,0.0010056532197300141,1.3040000118914438e-5,7.505138119129774e-9,0.0010060229091539998,1.2837303701281687e-5,7.609490773330097e-9,0.0010064679702872599,1.2680694358525935e-5,7.691325334965295e-9,0.00100696410900686,1.2599802055308625e-5,7.73543576837147e-9,0.0010074799303969257,1.2609453088105831e-5,7.733972018905462e-9,0.0010079824262810555,1.270927137545503e-5,7.68678360040066e-9,0.001008441983199197,1.2885166585695294e-5,7.600766502657164e-9,0.0010088364680810365,1.3112382500046945e-5,7.488348827427479e-9,0.0010091540147537904,1.3359627618872047e-5,7.365366043977686e-9,0.0010093942793346546,1.3593707411098743e-5,7.248659658443538e-9,0.0010095681767792678,1.3783993741249416e-5,7.15377885761242e-9,0.0010096964280629517,1.3906222158150544e-5,7.093063507146875e-9,0.0010098073351207102,1.3945501108580383e-5,7.074156161434548e-9,0.001009933998475673,1.3898670498425644e-5,7.098839141011301e-9,0.0010101108925560731,1.3776156395851466e-5,7.162087545997906e-9,0.0010103693537762879,1.3603229200616472e-5,7.2513716092129284e-9,0.001010731370310706,1.3419833637562037e-5,7.3466457393835305e-9,0.0010112016762827962,1.3277108498864683e-5,7.422018074019115e-9,0.0010117598625822178,1.3228209751310446e-5,7.450356500270065e-9,0.0010123568768607588,1.3312347000828476e-5,7.411421404428368e-9,0.0010129222480500654,1.3535582819181508e-5,7.301724939909382e-9,0.001013385331984101,1.3858804132080293e-5,7.140781390672817e-9,0.001013703707706818,1.4205000113155494e-5,6.967497490960027e-9,0.0010138822454817784,1.448749274687313e-5,6.825833236491937e-9,0.0010139696115598694,1.464433393257325e-5,6.747309515966404e-9,0.001014034960781267,1.4658559233696529e-5,6.740744459985028e-9,0.0010141406929217946,1.4555765436898252e-5,6.793498539548968e-9,0.0010143254890754552,1.4386576477060897e-5,6.880297884166936e-9,0.0010146008251386124,1.420706593101242e-5,6.973012537470857e-9,0.0010149561275081414,1.4065065181815716e-5,7.047465907773897e-9,0.00101536675460542,1.3993570240248546e-5,7.0867457546242325e-9,0.0010158013574818438,1.4009210516690739e-5,7.0820601273590445e-9,0.0010162275161801665,1.4113340727320419e-5,7.032323770553171e-9,0.0010166159146742558,1.429419134817385e-5,6.943198192930504e-9,0.0010169435907143895,1.4529570251940101e-5,6.825790427443894e-9,0.001017196458485237,1.4790107827825064e-5,6.695003258799705e-9,0.0010173710222833715,1.5043063994411697e-5,6.5675509780237646e-9,0.0010174750556951806,1.5256600380969255e-5,6.459732390817189e-9,0.001017526963278131,1.5404159828331004e-5,6.385177403566588e-9,0.0010175537373666459,1.5468376233596634e-5,6.352868110860509e-9,0.001017587717364337,1.544402654131814e-5,6.365661713647204e-9,0.0010176624605994554,1.5339717534360233e-5,6.419435210938414e-9,0.0010178080063839555,1.5178075945731396e-5,6.502944076621323e-9,0.0010180457452669584,1.4994254410299033e-5,6.598491835633543e-9,0.001018383064035031,1.4832381264038678e-5,6.6836353960864175e-9,0.0010188083316972948,1.47391332796154e-5,6.734397667122887e-9,0.0010192878609278002,1.475363974145172e-5,6.730438678602947e-9,0.0010197678046505864,1.4894272655654495e-5,6.661915015952189e-9,0.00102018443463024,1.5145950174105276e-5,6.5361350999692345e-9,0.0010204836747962334,1.5455522234757765e-5,6.380048705078234e-9,0.0010206437243931602,1.5743334912936524e-5,6.2343512371156256e-9,0.0010206877187796243,1.5931055263172206e-5,6.139179160224897e-9,0.0010206758978202743,1.5972669549953236e-5,6.118206896081988e-9,0.0010206802785743953,1.587040614601252e-5,6.170538509004209e-9,0.0010207572457502255,1.5667653115910527e-5,6.274358304487625e-9,0.0010209325449119094,1.5426977239675342e-5,6.398084889086976e-9,0.0010212017498908892,1.520786821074164e-5,6.511580983868921e-9,0.0010215398590799887,1.5053291656116975e-5,6.5929010127443566e-9,0.001021912431934167,1.498569502034724e-5,6.630329259183798e-9,0.0010222841435015692,1.5008880327172054e-5,6.621529648464819e-9,0.0010226239917599095,1.5112068113238198e-5,6.571614831742929e-9,0.0010229080944826484,1.527401144689631e-5,6.491159177179544e-9,0.0010231212780165244,1.5466570242856973e-5,6.394419794620523e-9,0.001023258140679252,1.565799311163615e-5,6.29764201481796e-9,0.001023323723746117,1.581631986787821e-5,6.217269214912676e-9,0.0010233335657502231,1.5913194832607108e-5,6.1679458224003706e-9,0.001023312652942418,1.592801691867029e-5,6.160375068918902e-9,0.0010232928007281963,1.5851837316847298e-5,6.199331981376249e-9,0.0010233083950897286,1.5690131829775294e-5,6.282255337576482e-9,0.0010233908943278179,1.5463603240336597e-5,6.398818557630599e-9,0.0010235628682748299,1.5206365333078503e-5,6.531796793225194e-9,0.001023832615986048,1.4961295414609502e-5,6.659351030318273e-9,0.0010241904386357422,1.4772889164037382e-5,6.75860252344733e-9,0.001024607567166903,1.4678269177210256e-5,6.810218842264442e-9,0.001025038835875019,1.4697338813962965e-5,6.803536849223181e-9,0.0010254302198467145,1.4824014543455562e-5,6.7412161836967475e-9,0.001025731571596928,1.5021882123837198e-5,6.641636326261475e-9,0.0010259126052034333,1.522848767407803e-5,6.536783150416774e-9,0.0010259765363499528,1.5370953906319304e-5,6.464197088487894e-9,0.0010259633245588596,1.5390062552732196e-5,6.454503675266422e-9,0.0010259374918061134,1.5262568774086813e-5,6.519889575291671e-9,0.0010259645518792863,1.5009405517106155e-5,6.649894303135918e-9,0.0010260881771412683,1.4685110812366908e-5,6.816835676346961e-9,0.0010263193576777233,1.4355638624471758e-5,6.98711790063453e-9,0.0010266398889383535,1.4077159844329356e-5,7.1319926882616635e-9,0.001027014226018415,1.388425288732607e-5,7.2335633845970444e-9,0.0010274020414492461,1.3788133610311604e-5,7.285745723386852e-9,0.0010277670997235588,1.378095198171993e-5,7.292187151879546e-9,0.0010280818168414282,1.384189253769118e-5,7.263261955630348e-9,0.0010283288268859772,1.3942614549109414e-5,7.213352520340318e-9,0.0010285011445110084,1.405139140764495e-5,7.158731665697266e-9,0.0010286019408435882,1.413632711989153e-5,7.115870597147311e-9,0.0010286442540053864,1.4168322568558104e-5,7.09986088584424e-9,0.0010286504037499457,1.4124365397943462e-5,7.12268504128625e-9,0.0010286504791455998,1.3991292700524017e-5,7.191271681234185e-9,0.0010286791648484964,1.3769478993510954e-5,7.3056080066068604e-9,0.0010287705469715204,1.3475266008978337e-5,7.457494460578409e-9,0.001028951327632887,1.3140689311306862e-5,7.630660550566689e-9,0.0010292338285229816,1.280935564220711e-5,7.802822009644976e-9,0.0010296108825569928,1.2528353458002378e-5,7.949760843038067e-9,0.0010300546940236487,1.233759347627838e-5,8.050755726164393e-9,0.0010305208273311641,1.2259178009605778e-5,8.094075186049836e-9,0.0010309570900584187,1.2289732755782155e-5,8.08103476461809e-9,0.0010313157392175553,1.239822992254162e-5,8.027273387668908e-9,0.0010315663465513536,1.2530919495367793e-5,7.960336714121893e-9,0.0010317058209335492,1.2623500762804774e-5,7.913435014428099e-9,0.001031761762409121,1.2618455216019864e-5,7.916445804350526e-9,0.0010317863213620134,1.2482715648861428e-5,7.986708154305847e-9,0.0010318409415092163,1.2218875567850196e-5,8.123174915224233e-9,0.0010319770490094284,1.1864341225077265e-5,8.306813126168584e-9,0.00103222073763433,1.1478137897328902e-5,8.507363432120657e-9,0.001032567744181653,1.1121486498340977e-5,8.693293502779717e-9,0.001032989301697024,1.084087419509298e-5,8.840491614529463e-9,0.0010334441429188832,1.065944919603051e-5,8.936740074754993e-9,0.0010338905402688494,1.0577173083741774e-5,8.981736505163395e-9,0.0010342945423151325,1.0576383955421915e-5,8.98433665789792e-9,0.00103463375858786,1.0628837350001691e-5,8.958991422832772e-9,0.0010348979793146607,1.0701777354861157e-5,8.922621233770985e-9,0.0010350882727302663,1.0762337371071754e-5,8.89230185881902e-9,0.0010352157191526022,1.0780632780980312e-5,8.883608858628518e-9,0.0010353002554859072,1.0732303407048932e-5,8.90925860516677e-9,0.0010353694431257166,1.0601227344865006e-5,8.977690201699487e-9,0.0010354564618759658,1.0382697470573208e-5,9.09143350297743e-9,0.0010355964502504992,1.008658752883728e-5,9.245490273873833e-9,0.00103582062126145,9.739174784541215e-6,9.426394426544935e-9,0.001036148531357024,9.381685552026843e-6,9.612933762557046e-9,0.001036580411402926,9.063860868442835e-6,9.779418101910907e-9,0.0010370928511063498,8.832500434599207e-6,9.901545674027221e-9,0.0010376410685493903,8.717740287966906e-6,9.963490318062588e-9,0.001038168776362179,8.722090107823838e-6,9.963639543713632e-9,0.001038623174432724,8.817117820241822e-6,9.916433090139891e-9,0.0010389699638132367,8.949806345046257e-6,9.849185263172341e-9,0.0010392031310252545,9.056681538401306e-6,9.794814136056429e-9,0.0010393464417650642,9.081041880969784e-6,9.7828832107339e-9,0.0010394465445357972,8.98803121924295e-6,9.831716602058708e-9,0.0010395599652596504,8.773379181090786e-6,9.943793307826468e-9,0.0010397377850124105,8.463527638538071e-6,1.010562028455275e-8,0.0010400124740567555,8.107264085356009e-6,1.0292016552047566e-8,0.0010403907983126954,7.761647465210934e-6,1.047336668482392e-8,0.0010408546068110553,7.476975351250501e-6,1.0623406725890964e-8,0.0010413683448417354,7.285608742141655e-6,1.0725068130866081e-8,0.0010418898199738098,7.197436696745734e-6,1.077292879202111e-8,0.0010423802623030689,7.201792582882333e-6,1.0772323696065717e-8,0.0010428110604212102,7.273401012350935e-6,1.0736320365516424e-8,0.0010431666141344895,7.3794054706384364e-6,1.0682066369385867e-8,0.0010434442537033133,7.485424438284342e-6,1.062758834085327e-8,0.001043652630466233,7.559908129853109e-6,1.0589456096467488e-8,0.0010438096899647942,7.577040457584126e-6,1.0581220954317427e-8,0.0010439407598399314,7.518874452397437e-6,1.0612288493742078e-8,0.0010440766580099585,7.3774053804267025e-6,1.0686856280073861e-8,0.0010442511917944904,7.1569232978676465e-6,1.0802719477653824e-8,0.0010444971593526165,6.876269078840813e-6,1.0950114569202205e-8,0.001044840195797599,6.569674575005575e-6,1.1111270660756568e-8,0.0010452907905748228,6.284047442282688e-6,1.1261780001466925e-8,0.0010458366657182785,6.070632446913745e-6,1.1374885918198315e-8,0.0010464397212440041,5.970991705073476e-6,1.1428761032437083e-8,0.0010470419129418023,6.0012650636924906e-6,1.1414752486565529e-8,0.0010475808873286244,6.142246342171787e-6,1.134266195270011e-8,0.0010480101442759484,6.342031857499272e-6,1.1239472124113928e-8,0.0010483145665516262,6.531775462877667e-6,1.1141164514740623e-8,0.0010485141839921832,6.647674109549178e-6,1.1081204358546142e-8,0.0010486555927916323,6.649554437643226e-6,1.1080769771562399e-8,0.0010487962274780228,6.52970014858732e-6,1.1144090607712959e-8,0.001048988161110087,6.311113549640392e-6,1.1259318747852037e-8,0.001049266135585487,6.038217412853158e-6,1.140334069973273e-8,0.0010496417708631659,5.764112342343603e-6,1.1548386965958874e-8,0.001050103884713581,5.538005408647266e-6,1.1668579695155248e-8,0.0010506236688532541,5.395419538643018e-6,1.1745084312143063e-8,0.001051162793625547,5.352737678222033e-6,1.176905039772956e-8,0.0010516822059403249,5.4065291012566944e-6,1.1742069546748452e-8,0.0010521495626468031,5.5369304279269275e-6,1.1674479004989727e-8,0.0010525439851890206,5.7134564555245825e-6,1.1582329111142928e-8,0.0010528578438257308,5.9014015084172195e-6,1.1483979856274418e-8,0.0010530961263485919,6.067417747217445e-6,1.139710095373138e-8,0.0010532743691075914,6.1835874192326255e-6,1.133647354846759e-8,0.0010534160834845703,6.230045791333779e-6,1.1312589735762775e-8,0.001053550198721015,6.1966823130205854e-6,1.1330774854534354e-8,0.0010537085154161126,6.0844906794547615e-6,1.1390513063025623e-8,0.0010539227224054864,5.906847205676181e-6,1.1484802633572627e-8,0.00105422025687308,5.690435278638442e-6,1.1599668036115498e-8,0.0010546184278993171,5.4746708261865515e-6,1.1714426246353476e-8,0.001055117156275193,5.307635025766357e-6,1.1803769941651274e-8,0.001055692545616445,5.236529243510756e-6,1.184274644058134e-8,0.001056295705931545,5.292689648675187e-6,1.1814655608677331e-8,0.0010568617072468647,5.4757403210461624e-6,1.1719477956429268e-8,0.0010573293783666506,5.74604326804144e-6,1.157796966652239e-8,0.0010576645165347547,6.033560344798371e-6,1.1427058221344922e-8,0.0010578737870635731,6.261973517443829e-6,1.1307094518131505e-8,0.0010580009637449824,6.3760497725166996e-6,1.1247346419441141e-8,0.001058108517330219,6.358165356812837e-6,1.1257242872632262e-8,0.0010582556001528874,6.228289144348805e-6,1.1326384333356857e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json new file mode 100644 index 000000000..d7e3be98a --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_13.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":13000,"numberOfSamples":1000,"samples":[0.0010584823083198346,6.031818825503171e-6,1.14309469118811e-8,0.0010588036033781425,5.823520864538709e-6,1.1542103150393909e-8,0.0010592110744742987,5.6537248748726675e-6,1.1633248752700286e-8,0.0010596790894540058,5.559275280564943e-6,1.1684765345343194e-8,0.0010601724727019367,5.559236240846307e-6,1.1686339583847125e-8,0.0010606540091394276,5.654379293057021e-6,1.163732802349451e-8,0.0010610908819856466,5.829497270171977e-6,1.1545624012790231e-8,0.0010614594503400023,6.057715047147503e-6,1.1425423187205381e-8,0.001061747989835144,6.305862037083749e-6,1.1294367431781857e-8,0.0010619573719630783,6.539955951254238e-6,1.1170587469196216e-8,0.0010620999645025674,6.73003410085884e-6,1.107008326599654e-8,0.0010621972572704668,6.85379996171742e-6,1.1004756707165859e-8,0.0010622768540195135,6.898913123430779e-6,1.098119849532928e-8,0.0010623693266318172,6.864185869807982e-6,1.1000078885400938e-8,0.0010625050436689565,6.760079817880366e-6,1.1055907410923635e-8,0.001062710756522555,6.608668374463369e-6,1.1137052470541557e-8,0.0010630055440594903,6.442842455479279e-6,1.122613014857253e-8,0.0010633958133875673,6.303928192637586e-6,1.1301216346173524e-8,0.0010638698300656857,6.236227673998108e-6,1.1338700200742188e-8,0.0010643938207032379,6.277096687541316e-6,1.1318549017049607e-8,0.0010649135018336272,6.443029009602109e-6,1.1231761017071778e-8,0.0010653652534506645,6.716334917457601e-6,1.1087554932954997e-8,0.0010656971998236583,7.041447402084115e-6,1.0915428186536279e-8,0.0010658919742331224,7.338860744797124e-6,1.0757744815379704e-8,0.0010659770288683225,7.534292063466726e-6,1.0654138240953239e-8,0.001066013886508743,7.587831708115414e-6,1.0625935223163422e-8,0.0010660723258305996,7.506181686783977e-6,1.0669662265910576e-8,0.0010662052115061964,7.3335686443663195e-6,1.0761922260944352e-8,0.0010664358470525873,7.130863915281745e-6,1.0870481691937031e-8,0.0010667588393153595,6.955633515934309e-6,1.0964801902708683e-8,0.0010671485918925085,6.8498410434954626e-6,1.1022511941646397e-8,0.0010675694409390784,6.835426550329633e-6,1.1031759374762615e-8,0.0010679841615469535,6.915158645441867e-6,1.0990824083116765e-8,0.0010683599657830244,7.076052103195604e-6,1.0906394119921115e-8,0.0010686723933572796,7.293685466136946e-6,1.0791343615514796e-8,0.00106890765095213,7.536822311352906e-6,1.0662299642942404e-8,0.0010690635977016276,7.77211139688823e-6,1.0537115853861746e-8,0.001069149428980129,7.968577301214409e-6,1.0432429890255657e-8,0.0010691841550370862,8.101601929648258e-6,1.036149374624633e-8,0.0010691940071483454,8.156061538266819e-6,1.0332478423133815e-8,0.001069209055658057,8.128266563717782e-6,1.03474435063982e-8,0.0010692594713290538,8.026593480405271e-6,1.0402013164716527e-8,0.0010693717459872535,7.870945267100574e-6,1.0485664177770738e-8,0.0010695649713014753,7.691125951702836e-6,1.05825672334285e-8,0.0010698471837835711,7.524020444771572e-6,1.0673046459330192e-8,0.0010702118794917663,7.409199319244088e-6,1.073588364535248e-8,0.0010706353190277158,7.382260325524803e-6,1.0751866255570777e-8,0.0010710762838212979,7.465490347225327e-6,1.0708824642405977e-8,0.0010714809682874885,7.6570210693528492E-06,1.0607528738465052e-8,0.0010717954666795326,7.92266264450533e-6,1.0466162353522634e-8,0.0010719849482146093,8.197549025520211e-6,1.031948512559187e-8,0.0010720518335533688,8.403355641842077e-6,1.0209555077841326e-8,0.0010720405373210041,8.477632103826806e-6,1.0169920153450947e-8,0.001072021738228369,8.400092320472587e-6,1.021150931330851e-8,0.0010720635198379748,8.199374023477202e-6,1.0319075409549964e-8,0.0010722065788787624,7.937147885028722e-6,1.0459750886515433e-8,0.00107245583521534,7.681893768449438e-6,1.0597036740148054e-8,0.0010727875503866039,7.487659268153709e-6,1.0702071381753594e-8,0.0010731630002383215,7.384581405590331e-6,1.075864496894142e-8,0.0010735409195010803,7.379180450137632e-6,1.0763066178824929e-8,0.001073885642552888,7.459556157906894e-6,1.0721462765445143e-8,0.0010741711464074789,7.60167164073378e-6,1.064650717664984e-8,0.0010743824677307964,7.774854624539591e-6,1.05545292946971e-8,0.0010745158753886549,7.946253107214568e-6,1.0463140800736486e-8,0.0010745783975093434,8.084663970024577e-6,1.0389154063601514e-8,0.0010745867148931046,8.164015707520659e-6,1.0346669113505363e-8,0.0010745652935797434,8.166515928713906e-6,1.0345347414447921e-8,0.0010745436064007652,8.085247843115634e-6,1.0389003625916266e-8,0.001074552414002862,7.925732239563838e-6,1.04747713355022e-8,0.0010746194263179607,7.705947602888145e-6,1.0593098065321354e-8,0.0010747649179418883,7.45457851834404e-6,1.0728675241616273e-8,0.0010749978735612412,7.207509835919612e-6,1.0862287758949862e-8,0.0010753131883688583,7.0027414856204215e-6,1.0973502950806292e-8,0.0010756904320888402,6.874033979996817e-6,1.1044059873554255e-8,0.0010760947834755237,6.8436529769841505e-6,1.1061787085804026e-8,0.001076481049891446,6.914886396186059e-6,1.1024693263841812e-8,0.0010768018290682909,7.066051634150347e-6,1.0944283327208556e-8,0.0010770200321076698,7.249261634913781e-6,1.0846289489249666e-8,0.001077123420982185,7.39804993243476e-6,1.076656197635394e-8,0.0010771348797026668,7.44585714263904e-6,1.0741042838621376e-8,0.0010771101367558554,7.350779981649652e-6,1.0792371226593277e-8,0.0010771194563272597,7.114340819791003e-6,1.091978472227473e-8,0.0010772207158111727,6.781925749825741e-6,1.1098942285178267e-8,0.001077438751988009,6.423598569950669e-6,1.1292263291924475e-8,0.0010777614606054466,6.107174429654953e-6,1.1463350840217734e-8,0.001078150988925822,5.878278442603043e-6,1.1587643347827043e-8,0.0010785602961386523,5.753858224937523e-6,1.1655892460490189e-8,0.0010789465240847547,5.72623912615062e-6,1.167203738632892e-8,0.0010792781883616845,5.7715171050260465e-6,1.1648769383961856e-8,0.0010795372547668179,5.857715055435001e-6,1.1603202812664468e-8,0.001079718408317149,5.950842140755552e-6,1.1553633958985417e-8,0.0010798274054571314,6.018931123532262e-6,1.1517348515355086e-8,0.0010798793764046966,6.034916081994106e-6,1.150903056702829e-8,0.0010798970957694128,5.979082561969348e-6,1.1539400992860876e-8,0.0010799088782759599,5.841386795654391e-6,1.1613943229511664e-8,0.001079945671266815,5.6234999239785664e-6,1.1731800417280663e-8,0.0010800370563297977,5.339960624404898e-6,1.1885168170973472e-8,0.0010802063626677298,5.017558699714286e-6,1.2059638070394361e-8,0.001080465709873069,4.692281975823613e-6,1.2235836282107038e-8,0.0010808121845919524,4.403722523375394e-6,1.239241282362964e-8,0.0010812263927673289,4.1875776377249006e-6,1.2510056790341688e-8,0.0010816742755761358,4.067606126441703e-6,1.2575830541311822e-8,0.0010821124162932766,4.048764490048608e-6,1.2586910279254428e-8,0.001082496394029135,4.1132067224480435e-6,1.2552812557360103e-8,0.0010827911400719823,4.220728194789922e-6,1.2495218049522599e-8,0.0010829814407256138,4.315035608807498e-6,1.2444602628550136e-8,0.0010830795939978,4.336331558319785e-6,1.2433397469308228e-8,0.0010831263014689158,4.238515418925506e-6,1.2486625405764085e-8,0.0010831815716910997,4.005888907583e-6,1.2612831618416838e-8,0.0010833062871192334,3.6615290203470267e-6,1.2799568273597161e-8,0.0010835411795810717,3.261162454656364e-6,1.3016729071965934e-8,0.0010838933778462134,2.8737930394674124e-6,1.3227010267237029e-8,0.001084337034999438,2.5585169726812227e-6,1.3398407369065678e-8,0.0010848260137734957,2.3486087687672093e-6,1.351281176227918e-8,0.0010853104715353803,2.2479370425633493e-6,1.3567994079646327e-8,0.0010857496852788604,2.2371567972056594e-6,1.3574322546551323e-8,0.0010861181451779231,2.2837281191620208e-6,1.3549388239562281e-8,0.0010864060912470594,2.3509882779473265e-6,1.351309848109019e-8,0.001086617167375567,2.4043382300803017e-6,1.348429676688557e-8,0.0010867653789912383,2.414780175748046e-6,1.3478800918996513e-8,0.0010868723951977914,2.36090336349784e-6,1.3508287044674754e-8,0.0010869652859729975,2.230320299619587e-6,1.357949036950374e-8,0.0010870742527047388,2.0210940838380106e-6,1.3693435401754393e-8,0.0010872297036982135,1.7431263470573831e-6,1.3844706627164613e-8,0.0010874581583647045,1.4188304041524766e-6,1.4021110351396713e-8,0.0010877770309646244,1.0819285734700634e-6,1.420434005833336e-8,0.0010881892473587201,7.732394508393998e-7,1.4372250040797893e-8,0.0010886795450963712,5.330813350595426e-7,1.4502949312721697e-8,0.001089214649730255,3.9140243490344096e-7,1.458013766244398e-8,0.0010897487258969283,3.584072521389756e-7,1.459820749252219e-8,0.0010902335819651038,4.191729634013468e-7,1.4565214418600275e-8,0.0010906310187498445,5.348153076480196e-7,1.4502295396028616e-8,0.0010909236281021046,6.506177348026824e-7,1.443926695100913e-8,0.001091120685014961,7.092800663955221e-7,1.4407391615029013e-8,0.001091257136747916,6.658869235087142e-7,1.4431183604022623e-8,0.0010913854479859381,5.005821622148568e-7,1.4521478794650966e-8,0.0010915618860652314,2.251478759511052e-7,1.467185398741576e-8,0.0010918307189155313,-1.1924299742407577e-7,1.4859864732950039e-8,0.0010922113493534546,-4.734372432057817e-7,1.5053255310459487e-8,0.0010926932935980337,-7.775556028587294e-7,1.5219334684945516e-8,0.0010932410472572044,-9.877102401363634e-7,1.533407805988485e-8,0.0010938063797259453,-1.0859165470122615e-6,1.5387566050399254e-8,0.001094342455259391,-1.080589230442882e-6,1.5384321095468852e-8,0.00109481445675083,-9.995980021090122e-7,1.5339569592932147e-8,0.0010952043212414967,-8.803420527904827e-7,1.5273828324478645e-8,0.0010955103354372215,-7.608506842509845e-7,1.520800473466209e-8,0.0010957438947718288,-6.738297010954895e-7,1.516008890171015e-8,0.0010959255739260278,-6.435882030741187e-7,1.514342886133524e-8,0.0010960816844447629,-6.848008439732961e-7,1.516603611113632e-8,0.001096241543978873,-8.02004725041787e-7,1.5230321629549556e-8,0.0010964350536024304,-9.891361497491146e-7,1.5332873831182345e-8,0.0010966898752015986,-1.2290044827439803e-6,1.5464206803068726e-8,0.0010970275583669783,-1.4932930260580311e-6,1.5608784981685757e-8,0.0010974584822657629,-1.7443109645131954e-6,1.574598051452959e-8,0.0010979764965260918,-1.9399561880694465e-6,1.5852762521604583e-8,0.0010985554895813923,-2.0426623918831098e-6,1.590856103716042e-8,0.0010991510076969397,-2.031063016383569e-6,1.590164521848076e-8,0.0010997091337757634,-1.9102678540224635e-6,1.5834788151340182e-8,0.0011001814643931509,-1.7151290714917107e-6,1.5727115299126148e-8,0.0011005408546707206,-1.5028952094650604e-6,1.5610105905041306e-8,0.001100790948640354,-1.3368393448549428e-6,1.5518581808694086e-8,0.001100965184316589,-1.2672952194125447e-6,1.5480237846173764e-8,0.0011011161176956588,-1.3175209969869768e-6,1.5507843040213407e-8,0.0011012998469212088,-1.4787697248972343e-6,1.5596542078759433e-8,0.001101561065014156,-1.7146998910046917e-6,1.5726308035865734e-8,0.0011019226990827457,-1.9724071175410574e-6,1.586801490545639e-8,0.001102382007116548,-2.196363356079692e-6,1.5991084228148263e-8,0.0011029132667145561,-2.3416096021800094e-6,1.6070722292919825e-8,0.0011034757514399483,-2.38310916619068e-6,1.6093077245681256e-8,0.0011040244786115357,-2.31927776315323e-6,1.6057225467888683e-8,0.0011045205794044041,-2.1694385072843676e-6,1.597381802522786e-8,0.0011049385690624493,-1.966838354498544e-6,1.5861252045493124e-8,0.0011052692443645087,-1.750001842086337e-6,1.5740883086523665e-8,0.0011055186380034719,-1.5550353774155559e-6,1.5632734001830676e-8,0.0011057045369247066,-1.4103695910270938e-6,1.5552549745965977e-8,0.0011058522277989002,-1.3341378137981495e-6,1.551032955262108e-8,0.0011059906217503908,-1.3335025490994153e-6,1.5509962936515426e-8,0.001106149150194748,-1.404950501845874e-6,1.5549420079728942e-8,0.0011063551807779252,-1.5348143523852197e-6,1.5621073311654e-8,0.0011066313631327655,-1.6998081049754247e-6,1.5712016164878937e-8,0.0011069922927926747,-1.8679853774396568e-6,1.580459705808824e-8,0.0011074402507398938,-2.0011637405826746e-6,1.5877740607269027e-8,0.0011079607077455421,-2.060248709035317e-6,1.5909858156164228e-8,0.001108519738968454,-2.0144254988523965e-6,1.588390462537339e-8,0.0011090667951459137,-1.8531436940924132e-6,1.5794016241904865e-8,0.0011095457522609323,-1.5962893152773853E-06,1.5651187561937485e-8,0.0011099131036531966,-1.295286315591519e-6,1.548393416264128e-8,0.0011101558729649911,-1.0201697065466408e-6,1.5331133204623056e-8,0.0011102988958696094,-8.358929741676526e-7,1.5228836499800212e-8,0.001110396160826366,-7.792957175517323e-7,1.519745019538023e-8,0.00111051078357651,-8.4832733122868e-7,1.5235767590110828e-8,0.0011106942753399312,-1.0069042485667557e-6,1.5323711725274e-8,0.00111097368196469,-1.1999692577389667e-6,1.5430718007157876e-8,0.0011113487938456635,-1.370515245006706e-6,1.5525164027079777e-8,0.0011117968919402519,-1.472886234678616e-6,1.5581716379428368e-8,0.00111228126468647,-1.4803580618799743e-6,1.5585522069862342e-8,0.0011127605283525728,-1.38735025143936e-6,1.553345118973782e-8,0.0011131969606502966,-1.207467615593322e-6,1.5433042494833323e-8,0.0011135628384484684,-9.68609089136904e-7,1.5299812786382335e-8,0.0011138441430138264,-7.063766770539463e-7,1.515359787677788e-8,0.0011140413969519087,-4.5716749529745555e-7,1.5014692696968984e-8,0.0011141679771116317,-2.5224292949749117e-7,1.4900524553462284e-8,0.0011142467106409985,-1.1360505719006956e-7,1.4823340179212186e-8,0.0011143057375622243,-5.1947099677121166e-8,1.478906414284595e-8,0.0011143745275428235,-6.641623982905153e-8,1.479718055412551e-8,0.0011144805411490116,-1.4554045014367347e-7,1.4841267716474989e-8,0.0011146465039405943,-2.6868186327244643e-7,1.4909818722617364e-8,0.0011148879464543517,-4.077487512787168e-7,1.4987193531681402e-8,0.0011152106069133069,-5.293572049765862e-7,1.5054810350341645e-8,0.001115607505557431,-5.981354506604627e-7,1.5092967998964315e-8,0.0011160562278251995,-5.82238372920153e-7,1.508390498897239e-8,0.0011165181858738054,-4.617774614729789e-7,1.5016501585294573e-8,0.0011169427756374372,-2.3916486858598275e-7,1.489207589936706e-8,0.001117279123695704,5.281074662320559e-8,1.4728931150574154e-8,0.0011174945353303808,3.5238253651923323e-7,1.4561593636104278e-8,0.0011175918891919794,5.85237341776037e-7,1.4431602483043102e-8,0.001117613973298778,6.922600246158575e-7,1.4371955080154304e-8,0.0011176285284481737,6.540692000960255e-7,1.4393394122909386e-8,0.0011177012518909313,4.973859584028976e-7,1.4480914676359373e-8,0.0011178724639969737,2.807665191832271e-7,1.4601797634793543e-8,0.0011181484319527568,7.064887876481905e-8,1.4718987525011862e-8,0.0011185068668504749,-7.890745011779789e-8,1.4802357637019236e-8,0.0011189091709123736,-1.3646153918415363e-7,1.4834384089423755e-8,0.0011193126105248509,-9.43931094899234e-8,1.48108065335213e-8,0.0011196792366973227,3.5164048593491474e-8,1.473837430297344e-8,0.0011199811858316087,2.26369559642981e-7,1.4631494218090753e-8,0.0011202031869314724,4.4589422366034254e-7,1.4508776239873582e-8,0.00112034310520379,6.586854121746841e-7,1.4389816343386903e-8,0.0011204109385747102,8.330417415667043e-7,1.4292352649188305e-8,0.0011204265234972595,9.446967691452359e-7,1.4229970169917528e-8,0.0011204162785695454,9.796302768584618e-7,1.4210520366177409e-8,0.0011204093914756884,9.354136766252925e-7,1.423536740670385e-8,0.0011204339509095645,8.210357617533893e-7,1.4299488573279187e-8,0.0011205135047749502,6.554492436680685e-7,1.4392288214421408e-8,0.0011206642577800594,4.652528434009131e-7,1.4498888367884619e-8,0.001120892869175372,2.817729973787914e-7,1.4601751044198787e-8,0.0011211947550755549,1.3757495990860276e-7,1.4682621069015419e-8,0.0011215528883894927,6.21872975976025e-8,1.4724918735586556e-8,0.001121937523487324,7.657802320904832e-8,1.471684663627745e-8,0.0011223081121608392,1.862337483495964e-7,1.4655293964103262e-8,0.0011226193191337492,3.7406125879550593e-7,1.4549846746055096e-8,0.001122832579558784,5.965725646991329e-7,1.4424943518651694e-8,0.001122931860338344,7.888398809784377e-7,1.4317073347269448e-8,0.0011229368584202211,8.823540066354003e-7,1.42646972284513e-8,0.0011229030163360236,8.31978931560535e-7,1.4293081372632381e-8,0.0011229027871189272,6.377983868581165e-7,1.4402074372500076e-8,0.0011229961745440554,3.466313844851877e-7,1.4565346045514696e-8,0.0011232080312209413,3.131213495657076e-8,1.4742059226319447e-8,0.0011235241667242122,-2.384517151272013e-7,1.4893183747109764e-8,0.0011239038866639104,-4.1705069829968125e-7,1.4993199888376666e-8,0.0011242978045176068,-4.891837396590307e-7,1.5033552385496457e-8,0.0011246618087164136,-4.650533911979487e-7,1.501996092483476e-8,0.0011249644073865193,-3.712956185955165e-7,1.4967350495564534e-8,0.0011251887847238463,-2.4226609099827207e-7,1.489497804254355e-8,0.0011253319323496448,-1.1342860023329529e-7,1.4822732804632492e-8,0.001125402634959825,-1.6748392335343594e-8,1.476855463336166e-8,0.0011254190551908455,2.2583818610430424e-8,1.4746592428163293e-8,0.001125406006350285,-1.147849811646348e-8,1.4765866874794957e-8,0.0011253918703925659,-1.2428284425453638e-7,1.4829389975213278e-8,0.001125405153669,-3.098575433825358e-7,1.4933811618400424e-8,0.001125470825285484,-5.515007109536961e-7,1.5069747750744837e-8,0.0011256068473051415,-8.237402109522106e-7,1.522287862447306e-8,0.0011258213742378021,-1.0955210324600928e-6,1.5375735433027346e-8,0.001126110953640497,-1.33434576076099e-6,1.551002392607651e-8,0.0011264599688784321,-1.5110754595557068e-6,1.5609325258051984e-8,0.0011268415324472347,-1.6050367155868619e-6,1.5661979950811296e-8,0.0011272200850014037,-1.6091063327225863e-6,1.5663968705012574e-8,0.0011275562307977297,-1.5342861631028003e-6,1.5621508044081852e-8,0.0011278144681279808,-1.4124327608801717e-6,1.5552595027563792e-8,0.001127973697196369,-1.2945868803236955e-6,1.548604925928786e-8,0.0011280382587597413,-1.2418556395565706e-6,1.5456333428887506e-8,0.0011280441049613882,-1.3076713541081708e-6,1.5493515389976944e-8,0.0011280530903307478,-1.5159246352740396e-6,1.5610950547436537e-8,0.001128132778175655,-1.8463668689740967e-6,1.579711977668449e-8,0.0011283296134604944,-2.238778351585612e-6,1.601804452302929e-8,0.0011286507402838491,-2.6162893563312223e-6,1.6230430827785135e-8,0.001129064849116733,-2.914505922934018e-6,1.639803217786027e-8,0.0011295188883964043,-3.1003495271215335e-6,1.650223555792818e-8,0.0011299585096496848,-3.1743954370268017e-6,1.6543390761059785e-8,0.0011303422387863712,-3.1616614223987634e-6,1.6535639899295777e-8,0.0011306468543703053,-3.099226465392222e-6,1.649993957729718e-8,0.0011308665355909385,-3.026115926253836e-6,1.6458343678529448e-8,0.0011310092877528594,-2.97696670198988e-6,1.643041637428008e-8,0.0011310930107738839,-2.9787150579821667e-6,1.643135725219101e-8,0.0011311420979546502,-3.048971357365785e-6,1.6471083224590702e-8,0.0011311844863316548,-3.1951543584245246e-6,1.655374177555831e-8,0.0011312487969415517,-3.4140426711787296e-6,1.667746050617603e-8,0.001131361247585663,-3.6918347099299193e-6,1.683438659836271e-8,0.0011315422288500833,-4.005155407124281e-6,1.701126248263884e-8,0.0011318028686057846,-4.323516118603748e-6,1.719082210152812e-8,0.001132142305142021,-4.613386976593811e-6,1.7354095519871995e-8,0.001132546459390808,-4.843583003603475e-6,1.7483454475893005e-8,0.0011329889427781129,-4.991272754047409e-6,1.7566013688537354e-8,0.0011334344413259357,-5.047541910774497e-6,1.7596784618951905e-8,0.001133844458183822,-5.021292733474158e-6,1.7580889129752105e-8,0.0011341848700335095,-4.94040959890774e-6,1.753421475919338e-8,0.0011344344119443499,-4.8491916969188745e-6,1.748193700907113e-8,0.0011345925814498685,-4.801059066100088e-6,1.745434825021528e-8,0.001134684387300292,-4.846227082445247e-6,1.7479841111046328e-8,0.0011347584805635495,-5.0160858158737145e-6,1.7576061597522453e-8,0.0011348759327808268,-5.309263400214288e-6,1.7742064468409605e-8,0.0011350908173706725,-5.6869034120381485e-6,1.7955706489080888e-8,0.0011354299176144932,-6.082800701089851e-6,1.8179418623203863e-8,0.0011358822190113598,-6.426124898603051e-6,1.8373054177066374e-8,0.0011364043809356825,-6.665757949870108e-6,1.8507648393622844e-8,0.0011369384853650538,-6.7840861137196476e-6,1.8573247563186413e-8,0.0011374316455507916,-6.795823634017219e-6,1.8578280026159067e-8,0.001137848673807987,-6.736604005607285e-6,1.85430965640259e-8,0.001138175543947817,-6.649378408098194e-6,1.8492219634553844e-8,0.0011384164599360274,-6.574091986083006e-6,1.8448433493018965e-8,0.0011385884812031334,-6.5420367269707E-06,1.8429543600599157e-8,0.0011387163515221173,-6.573764105960214e-6,1.844718403120001e-8,0.0011388284833158092,-6.678850501571657e-6,1.8506697577031452e-8,0.0011389539421612653,-6.856289459219892e-6,1.8607380918886297e-8,0.0011391198567281403,-7.094990988364993e-6,1.8742791852569966e-8,0.0011393486909906535,-7.374470404067843e-6,1.8901162544082247e-8,0.001139655105173082,-7.666288253826918e-6,1.9066235687773136e-8,0.0011400426757558419,-7.936983461486883e-6,1.921894205864218e-8,0.0011405013577337874,-8.152936837249098e-6,1.9340168556050783e-8,0.0011410069453844265,-8.286904307477137e-6,1.941447163411268e-8,0.001141523687978373,-8.325052062458535e-6,1.943407977800105e-8,0.0011420104921204704,-8.272482966705914e-6,1.940204081740356e-8,0.0011424298885641681,-8.155032071176124e-6,1.9333238629293002e-8,0.0011427577026877223,-8.01590505046847e-6,1.9252449665323856e-8,0.0011429907616206283,-7.907174957399983e-6,1.9189445751876634e-8,0.0011431501649271265,-7.877608061907913e-6,1.917200273740673e-8,0.0011432784491987938,-7.9594886944176e-6,1.9218374972079383e-8,0.0011434302434748492,-8.157983701078854e-6,1.9331275036921774e-8,0.0011436578055424847,-8.446881947193677e-6,1.949552477305666e-8,0.00114399515501405,-8.773659928063834e-6,1.9681008281834052e-8,0.001144446522983574,-9.073972603149053e-6,1.9850948567032337e-8,0.0011449845240813815,-9.291172843971188e-6,1.997301868872744e-8,0.0011455595354737658,-9.393027652032006e-6,2.0028869806567677e-8,0.0011461161009334714,-9.378716130867975e-6,2.001814630971795e-8,0.0011466089029168024,-9.274461172054308e-6,1.9956008806800238e-8,0.0011470122988015584,-9.121833292035425e-6,1.9866427698242803e-8,0.00114732188508422,-8.96496066277439e-6,1.977481168122164e-8,0.001147550426654242,-8.84115873090527e-6,1.970259092640148e-8,0.0011477216937115396,-8.776250220560751e-6,1.966451506584681e-8,0.0011478647584178116,-8.783503033521037e-6,1.966805944170667e-8,0.0011480097210303582,-8.864451422748417e-6,1.971393023358895e-8,0.0011481847339456337,-9.010282799110149e-6,1.9796897029095008e-8,0.0011484137013095736,-9.203162855983934e-6,1.9906583070119853e-8,0.0011487139621447924,-9.417536219790016e-6,2.0028232082651543e-8,0.0011490935669522466,-9.622008265590576e-6,2.0143797216780358e-8,0.0011495483701545808,-9.782674812070154e-6,2.0233850339937727e-8,0.0011500598968202766,-9.868530899457088e-6,2.0280675342107168e-8,0.001150595576793416,-9.858788234789456e-6,2.027245503525575e-8,0.0011511130407411538,-9.750551556433113e-6,2.0207673116114426e-8,0.0011515690958261268,-9.563815939238883e-6,2.0097983923800655e-8,0.0011519316806153635,-9.340392670730376e-6,1.9967584121287674e-8,0.001152190749497022,-9.135185026245966e-6,1.9848156573524196e-8,0.0011523634382926925,-9.001659265593388e-6,1.9770455193964563e-8,0.0011524907957058544,-8.976351650421527e-6,1.975535707782608e-8,0.0011526268209164589,-9.067935946616826e-6,1.9807599727437817e-8,0.0011528235054923113,-9.25449432683755e-6,1.9914294904382524e-8,0.0011531166414686328,-9.489552149459594e-6,2.0048491573720485e-8,0.0011535164504243166,-9.71476019621844e-6,2.0176519619224113e-8,0.0011540055000518578,-9.875454353321969e-6,2.0266935867828633e-8,0.0011545443526542588,-9.934597905884134e-6,2.029851857027083e-8,0.0011550830429836547,-9.881012223473731e-6,2.026498429883669e-8,0.0011555744937682764,-9.729706251418504e-6,2.0175168201088018e-8,0.0011559854772124829,-9.51504938883692e-6,2.0049071556327196e-8,0.0011563021464909625,-9.280042396553756e-6,1.991163982225793e-8,0.0011565296752859802,-9.065727818539686e-6,1.9786613888511836e-8,0.001156687736425848,-8.903688987058367e-6,1.9692182364519e-8,0.0011568044046975123,-8.8125619957311e-6,1.9638981965480233e-8,0.0011569105458751,-8.797789715304598e-6,1.9629991386652268e-8,0.0011570356151798416,-8.853178776230065e-6,1.9661469660227554e-8,0.0011572048275839113,-8.963029002850191e-6,1.9724213131765286e-8,0.0011574371573823965,-9.104180604326605e-6,1.9804750235027096e-8,0.0011577435098976399,-9.247950130788989e-6,1.9886461799431398e-8,0.0011581246406424353,-9.362476184699034e-6,1.9950934601369646e-8,0.001158568958664678,-9.41631267388031e-6,1.9980033554842147e-8,0.001159051135572797,-9.383982662467644e-6,1.9959107105592105e-8,0.0011595332400694842,-9.253407196201551e-6,1.988127948054991e-8,0.0011599704116754437,-9.033473617199929e-6,1.9751830591591057e-8,0.001160321905079089,-8.757962164306107e-6,1.9590469326886845e-8,0.0011605651381540996,-8.481352968156326e-6,1.9428884611557018e-8,0.0011607066977102414,-8.264780100526713e-6,1.9302555692561575e-8,0.0011607835786356816,-8.156211653841857e-6,1.9239208531028127e-8,0.001160852303938451,-8.173672131833849e-6,1.9249082973678126e-8,0.0011609704050213417,-8.299502401002055e-6,1.9321670102197103e-8,0.0011611786600939425,-8.487524842860316e-6,1.942996472795716e-8,0.00116149085756971,-8.678548440956826e-6,1.9539526753642373e-8,0.0011618930476837161,-8.817263786054158e-6,1.961829467481908e-8,0.0011623502480845786,-8.865197369246996e-6,1.9644073624203352e-8,0.0011628170462849206,-8.807345064885849e-6,1.9608343243756524e-8,0.001163248772606246,-8.652436380407108e-6,1.9516370694754277e-8,0.0011636107636861521,-8.42810745764086e-6,1.9384372461534673e-8,0.0011638841503945102,-8.17290291549061e-6,1.9234838808357553e-8,0.0011640675332915647,-7.927309243105636e-6,1.9091306227406572e-8,0.001164174910574985,-7.725934562782125e-6,1.897381570422459e-8,0.0011642310911780206,-7.592301438636944e-6,1.8895911963434465e-8,0.001164266183153776,-7.536686249750781e-6,1.8863426101585725e-8,0.0011643105098843333,-7.556534996681924e-6,1.8874751833990127e-8,0.0011643907219274397,-7.638508383357229e-6,1.892205030520054e-8,0.0011645272144765674,-7.761166811425134e-6,1.8992807601442906e-8,0.0011647324707863098,-7.897651936164617e-6,1.9071379900299287e-8,0.0011650098094900412,-8.018265814666975e-6,1.914048233352255e-8,0.0011653521888236509,-8.093307790327415e-6,1.9182839583695098e-8,0.001165741133615056,-8.096798948189496e-6,1.9183362843101123e-8,0.0011661465394286383,-8.01169930545659e-6,1.913219846759754e-8,0.0011665289267256526,-7.836536321099879e-6,1.9028592765835697e-8,0.0011668460658409007,-7.591725078170206e-6,1.8884569456476698e-8,0.0011670647742319771,-7.321672629410377e-6,1.872613603007408e-8,0.0011671752536712213,-7.087778965397692e-6,1.8589162929747138e-8,0.0011672007945532352,-6.950506281680236e-6,1.8508875117680157e-8,0.0011671946165852476,-6.946270276537636e-6,1.8506350208028936e-8,0.0011672219724961402,-7.071417197234697e-6,1.8579216055933185e-8,0.0011673358746302342,-7.283275108892446e-6,1.8702356985605753e-8,0.0011675594159570796,-7.517413113909867e-6,1.8838061377010595e-8,0.0011678822015231747,-7.710561368063675e-6,1.8949420655493054e-8,0.0011682689261397071,-7.818135372925264e-6,1.9010538692202126e-8,0.0011686730493583339,-7.821696462300443e-6,1.90108499425854e-8,0.0011690494583318888,-7.727720962976632e-6,1.8954353489254236e-8,0.0011693632444199163,-7.56134032774171e-6,1.885590552632025e-8,0.00116959424227111,-7.358324729191973e-6,1.8736493783482777e-8,0.0011697381322427927,-7.157289319737172e-6,1.861866602390422e-8,0.001169805015940991,-6.993028321525914e-6,1.852264983791331e-8,0.0011698161546601542,-6.891491872816817e-6,1.8463458014440653e-8,0.0011697995747586565,-6.866806023143072e-6,1.8449195474681566e-8,0.001169785345145261,-6.9204124414224666e-6,1.8480593608555368e-8,0.0011698012390084927,-7.0420511084665356e-6,1.8551596753815423e-8,0.0011698692959780039,-7.212115770190638e-6,1.865072612237821e-8,0.001170003535115469,-7.40476340602822e-6,1.876287162320732e-8,0.0011702087001298016,-7.591191261412983e-6,1.887118665962335e-8,0.001170479701385697,-7.742851069545861e-6,1.895896527939579e-8,0.0011708015200401624,-7.834746251544546e-6,1.9011588216858993e-8,0.0011711496211634048,-7.849130822009977e-6,1.9018713426567524e-8,0.0011714913924403504,-7.779910197998646e-6,1.8976869060788222e-8,0.0011717897544849946,-7.637523831636095e-6,1.889230519205385e-8,0.001172010309956273,-7.452738502943907e-6,1.8783182601489195e-8,0.0011721323598993924,-7.275994332800178e-6,1.867913794942048e-8,0.0011721611281580594,-7.168155593634209e-6,1.861581265298405e-8,0.0011721343191450696,-7.1813051484193844e-6,1.862357539268324e-8,0.0011721149049607846,-7.335813716215587e-6,1.87141217167984e-8,0.001172168800567516,-7.607145133330706e-6,1.8872833135365767e-8,0.0011723380208572738,-7.933227173421569e-6,1.9063184028057393e-8,0.0011726252496139771,-8.239481077610759e-6,1.924143891636807e-8,0.0011729975280554965,-8.466260519538257e-6,1.9372719916227837e-8,0.0011734031858778484,-8.584501548552111e-6,1.944016181411194e-8,0.001173790302185874,-8.596454295920204e-6,1.944531693494591e-8,0.0011741190787508823,-8.527161410478187e-6,1.9403109104349883e-8,0.0011743669348481497,-8.413502697600549e-6,1.933534155711618e-8,0.0011745284115409797,-8.294793736602777e-6,1.9265131227668844e-8,0.0011746124079364151,-8.206190261184355e-6,1.9213032276832187e-8,0.0011746385065752375,-8.174556373859033e-6,1.9194649111671876e-8,0.0011746330915234392,-8.216052103381338e-6,1.9219279634408336e-8,0.0011746253880197785,-8.335082109550146e-6,1.9289350289034145e-8,0.0011746435809791025,-8.524542340119898e-6,1.9400586230916127e-8,0.0011747112692470335,-8.767280557710057e-6,1.954286430798587e-8,0.0011748445359639791,-9.03865596643075e-6,1.9701692857538592e-8,0.0011750499632298852,-9.309966660718363e-6,1.9860201817912727e-8,0.001175323799399941,-9.552298843262974e-6,2.0001396821218872e-8,0.00117565222379474,-9.740381416028808e-6,2.0110439466007515e-8,0.0011760125740055314,-9.856258828588306e-6,2.0176834214821782e-8,0.001176375524771259,-9.89270749701017e-6,2.0196458357561633e-8,0.0011767084198622795,-9.856295447680713e-6,2.0173355725141192e-8,0.0011769802534832457,-9.769680052766479e-6,2.0121046365166935e-8,0.001177168799588408,-9.671871258832764e-6,2.0062613323586582e-8,0.0011772694476469777,-9.6141384720008e-6,2.002822704058926e-8,0.0011773031276615976,-9.649130357389883e-6,2.004871269724044e-8,0.001177317927990144,-9.813195811093411e-6,2.0145182911243707e-8,0.0011773784774201084,-1.0107742086366462e-5,2.031816622647421e-8,0.0011775429199502576,-1.0491244705205072e-5,2.054301185498362e-8,0.001177837880102486,-1.0891186429975976e-5,2.077695811502661e-8,0.0011782469508336748,-1.1232228758863288e-5,2.0975685618500445e-8,0.0011787199252995327,-1.1464270048217633e-5,2.1109807093236463e-8,0.001179195117857407,-1.1575096317836384e-5,2.1172327792887724e-8,0.0011796204060343677,-1.1585333083324484e-5,2.117567378298927e-8,0.001179964253721622,-1.153426084540048e-5,2.1143276835969646e-8,0.001180216947487361,-1.1465789942356163e-5,2.1101215758474892e-8,0.0011803864077251783,-1.1418915216628996e-5,2.107252293342305e-8,0.0011804924552570766,-1.1422849945557147e-5,2.1074313204903283e-8,0.0011805616351961057,-1.149534972563153e-5,2.111684828473406e-8,0.0011806231296561194,-1.164260838042896e-5,2.1203547272920038e-8,0.001180705405349917,-1.185983590457733e-5,2.133138289587363e-8,0.0011808332022572984,-1.2132380829244001e-5,2.1491566451183692e-8,0.0011810247593277404,-1.2437538534793616e-5,2.1670609888946692e-8,0.00118128939658047,-1.2747235945817167e-5,2.1851893747692842e-8,0.0011816258296817952,-1.3031688632184382e-5,2.2017816721285344e-8,0.0011820217409164156,-1.3263766786722557e-5,2.215238102483769e-8,0.0011824549343442512,-1.3423476824073942e-5,2.224386173036045e-8,0.0011828960923008392,-1.3501908143475178e-5,2.228715845248425e-8,0.0011833129578829248,-1.3504032616951642e-5,2.2285447254115404e-8,0.0011836756314048944,-1.3449812928952117e-5,2.2250794275112108e-8,0.001183962592413837,-1.3373153848677134e-5,2.2203458812617827e-8,0.0011841669322909438,-1.3318065327970467e-5,2.2169537514422055e-8,0.0011843016926503368,-1.3331175884827947e-5,2.2176482373441217e-8,0.0011844020642103072,-1.3450260247773386e-5,2.2246332098472546e-8,0.001184521202676278,-1.3690428025695983e-5,2.2387640451217336e-8,0.0011847171293863903,-1.4032994909381187e-5,2.2589027933433944e-8,0.001185032463777717,-1.4424743371322873e-5,2.281883562996951e-8,0.0011854755677246913,-1.4792794984495582e-5,2.3033918419938312e-8,0.0011860147396502052,-1.507088024578483e-5,2.319513060443558e-8,0.0011865905179456926,-1.5223319477673633e-5,2.328150001628114e-8,0.0011871389466646689,-1.5253718038456167e-5,2.3295410581307743e-8,0.0011876123061146714,-1.519648813755946e-5,2.3257586969311357e-8,0.0011879885113928858,-1.5099845661934605e-5,2.3196940123018956e-8,0.0011882695341677578,-1.501035144178206e-5,2.31412842396481e-8,0.0011884742356245803,-1.4963788315746421e-5,2.3111852364620775e-8,0.001188630530564791,-1.4982034546106686e-5,2.3121452402727265e-8,0.0011887692807419578,-1.507353292827563e-5,2.3174817880824452e-8,0.0011889202463939105,-1.5235106883747588e-5,2.3269772227890994e-8,0.0011891093972103773,-1.5453904219857056e-5,2.3398442893928934e-8,0.001189356787492648,-1.5709243646093957e-5,2.3548380493865156e-8,0.001189674562434833,-1.597465760311393e-5,2.3703767108688843e-8,0.0011900650705906138,-1.622059546320253e-5,2.3847010207390837e-8,0.0011905194959919482,-1.641817450904896e-5,2.396096721453941e-8,0.0011910177895063875,-1.6543919681829082e-5,2.403177226492937e-8,0.0011915306556030559,-1.6584788766736868e-5,2.4051839818261955e-8,0.001192023898945927,-1.6542298384545826e-5,2.4022324070467803e-8,0.001192464757553144,-1.643440146715635e-5,2.3954211093486313e-8,0.001192829119799411,-1.629404609753833e-5,2.3867395750016865e-8,0.001193108027212104,-1.6164104458207515e-5,2.3787569044241983e-8,0.0011933118430555575,-1.608921071912973e-5,2.3741272731391792e-8,0.0011934707320330146,-1.6105658509481013e-5,2.374985781205688e-8,0.0011936303976635173,-1.623111932778949e-5,2.3823425330801796e-8,0.0011938425904213918,-1.6456797947603263e-5,2.3956291913805633e-8,0.0011941512693824246,-1.6745405678767475e-5,2.4125926378533872e-8,0.0011945777513011316,-1.703806116613979e-5,2.4297131106293858e-8,0.0011951108176325653,-1.7270552184130284e-5,2.4431706269672658e-8,0.0011957078826386161,-1.7394145331375484e-5,2.4500786304503858e-8,0.001196308651953773,-1.7391670563142902e-5,2.4494397478295562e-8,0.0011968553574094527,-1.7280885870127336e-5,2.442346637634852e-8,0.0011973097438809756,-1.7104486121415902e-5,2.4313830319614202e-8,0.0011976600271846305,-1.6913544964189015e-5,2.4196263777647027e-8,0.0011979178287977973,-1.6752823815132273e-5,2.4097605696463648e-8,0.0011981097707620147,-1.6652578579863055e-5,2.4035827004151324e-8,0.0011982686801686477,-1.6626751066110573e-5,2.401899572758425e-8,0.0011984270612510747,-1.6674980003615707e-5,2.4046572026728495e-8,0.0011986131998672476,-1.6785856209140574e-5,2.411144126081378e-8,0.00119884907936858,-1.6939967517406705e-5,2.4201781684558578e-8,0.0011991490988296598,-1.7112385016964997e-5,2.430255743190104e-8,0.0011995189044720176,-1.727490968716899e-5,2.4396846663078468e-8,0.0011999541434850292,-1.73987053704685e-5,2.446740213138539e-8,0.0012004395264967585,-1.7457927525291007e-5,2.4498820966803372E-08,0.0012009491082435547,-1.743451264755266e-5,2.4480422287605266e-8,0.001201448900782843,-1.7323465817622007e-5,2.4409425154034857e-8,0.0012019025457898729,-1.713703206787251e-5,2.429344400128628e-8,0.0012022796375072394,-1.6905527800039264e-5,2.415095110327444e-8,0.001202564674709609,-1.66730256383639e-5,2.4008615527302114e-8,0.0012027634568679232,-1.6487847620334767e-5,2.3895505198766226e-8,0.001202904030611828,-1.6390163394670685e-5,2.3835574955575874e-8,0.0012030311028923925,-1.6400516224166192e-5,2.384078723594285e-8,0.0012031951747230444,-1.6513004713512284e-5,2.390712060734509e-8,0.001203439368777117,-1.6695385826531313e-5,2.4014786720648956e-8,0.0012037875416534632,-1.6896357132806125e-5,2.413273573212916e-8,0.0012042369997383238,-1.7058417430140396e-5,2.422642990299439e-8,0.001204758270153749,-1.7133153462624448e-5,2.42669920335499e-8,0.0012053027296240449,-1.7094557087145528e-5,2.4239131779032624e-8,0.001205816243419089,-1.694576087819249e-5,2.414512189749825e-8,0.001206254208107606,-1.671652593603102e-5,2.4003224447649546e-8,0.0012065924774887938,-1.6452686017868706e-5,2.3841274764580573e-8,0.0012068306855210508,-1.6202252980745935e-5,2.3688257288772364e-8,0.0012069882451567506,-1.6003642610002783e-5,2.3567193058502826e-8,0.0012070962548821874,-1.5879317737007825e-5,2.3491350212189728e-8,0.0012071891126864752,-1.5834987172204415e-5,2.3463848234982794e-8,0.0012072982435586271,-1.5862395994595704e-5,2.3479429419473134E-08,0.0012074484919681056,-1.5943390285158226e-5,2.3526960795175952e-8,0.0012076565349967772,-1.6053727644420263e-5,2.3591735054261115e-8,0.0012079303224518817,-1.6166109640853678e-5,2.3657270713232458e-8,0.0012082687433021958,-1.625265566416613e-5,2.370677465035961e-8,0.0012086611896754904,-1.6287448494366172e-5,2.372466631141001e-8,0.0012090872917999832,-1.6249836702848495e-5,2.3698580523446967e-8,0.0012095176855486077,-1.6128815528154758e-5,2.3622028928013453e-8,0.0012099170613362122,-1.592798579392285e-5,2.349739986274672e-8,0.0012102505659388227,-1.566936060894537e-5,2.3338237567455915e-8,0.0012104933479661164,-1.5393153749585413e-5,2.316906420901978e-8,0.0012106406191476266,-1.5150881099106516e-5,2.302113572545944e-8,0.001210713427762985,-1.4991745019339821e-5,2.2924136337323242e-8,0.0012107557250189674,-1.4946543294335746e-5,2.2896419733099684e-8,0.0012108221716802248,-1.5016161651831003e-5,2.293810304377412e-8,0.0012109612315525406,-1.5170264902251345e-5,2.3030401775421017e-8,0.0012112005956738774,-1.535671009607627e-5,2.3141465559964834e-8,0.0012115402123723076,-1.551722648703216e-5,2.3235958218962858e-8,0.0012119541203185218,-1.5603217342101987e-5,2.32846361790215e-8,0.0012123989690091418,-1.558704649773601e-5,2.32711262155396e-8,0.0012128258188160085,-1.546672637976945e-5,2.3194667025593706e-8,0.0012131919055231588,-1.526397476343263e-5,2.306882035076686e-8,0.001213469672752588,-1.5016981076206275e-5,2.2916988632259907e-8,0.0012136512717100716,-1.4770193242323362e-5,2.2766165374691033e-8,0.0012137479589100495,-1.4563974629347552e-5,2.2640665341646183e-8,0.0012137852603573004,-1.4426773355970368e-5,2.255743926778347e-8,0.0012137959093788662,-1.4371343522844578e-5,2.2523883713028728e-8,0.0012138128365966673,-1.439499826481813e-5,2.2538091856692798e-8,0.0012138638400819995,-1.4482668698853964e-5,2.2590762305896745e-8,0.0012139685086682349,-1.4611158244269921e-5,2.2667775734842887e-8,0.0012141370773553156,-1.4753294457875256e-5,2.2752669276880412e-8,0.0012143704447298367,-1.4881339284913565e-5,2.2828655628043122e-8,0.0012146606157735983,-1.4969696583580246e-5,2.2880242761076628e-8,0.0012149911979015464,-1.499739616837105e-5,2.2894754107216863e-8,0.001215338074413792,-1.495094088433912e-5,2.286409075695815e-8,0.0012156709220629822,-1.4827860365214653e-5,2.278691472150337e-8,0.0012159566967008494,-1.4640607873998432e-5,2.2671006872583375e-8,0.0012161661678526474,-1.4419214392042551e-5,2.253482998176492e-8,0.0012162834218881762,-1.4209794962010202e-5,2.2406545421342624e-8,0.001216315642396274,-1.4065845309811994e-5,2.2318651755283653e-8,0.0012162975273846636,-1.4032046896515793e-5,2.229810801795348e-8,0.001216284646636957,-1.412603160851158e-5,2.2355282871068613e-8,0.0012163354726003424,-1.4328040488737538e-5,2.2477767363016963e-8,0.0012164899159747096,-1.4585949126754397e-5,2.263355123417095e-8,0.001216755574130199,-1.4833892797710722e-5,2.278243853374842e-8,0.0012171078245810246,-1.5014490026863692e-5,2.2889603737556964e-8,0.001217501208749591,-1.5094377647005056e-5,2.2935034657986378e-8,0.0012178847630020077,-1.5068934395509631e-5,2.2916347417685273e-8,0.0012182150285436164,-1.4958137548021152e-5,2.2846155074825506e-8,0.0012184640069405344,-1.4797783644600629e-5,2.2746590779909395e-8,0.0012186220505673322,-1.4629683731770791e-5,2.2643235920746163e-8,0.001218696822913379,-1.449297270290909e-5,2.2559801522444672e-8,0.0012187095811834294,-1.4417539138099393e-5,2.2514186857630122e-8,0.0012186898663968694,-1.4420061297596525e-5,2.2516180023635898e-8,0.0012186696633395672,-1.4502833252156467e-5,2.2566860603567102e-8,0.0012186780735641304,-1.4655108434294776e-5,2.2659490899290508e-8,0.0012187372918174148,-1.4856253456001961e-5,2.2781443114298367e-8,0.001218860273629298,-1.5079824490775369e-5,2.2916635639418696e-8,0.0012190500435946263,-1.5297700051893458e-5,2.3047988343221898e-8,0.001219300200263371,-1.548365519236493e-5,2.3159560794279936e-8,0.0012195960618367548,-1.5616237415079354e-5,2.3238309613797606e-8,0.0012199161265676276,-1.568118550987916e-5,2.3275603178996437e-8,0.0012202338545077081,-1.567373100870673e-5,2.326866879195279e-8,0.0012205201561264112,-1.560100091808706e-5,2.3222067337371707e-8,0.001220747382989795,-1.5484226141098953e-5,2.3148995007320677e-8,0.0012208955835540899,-1.535941411892994e-5,2.3071605072069785e-8,0.0012209607427107806,-1.5274050539459638e-5,2.3018902382756045e-8,0.001220962475274646,-1.5277280997782236e-5,2.3020705792687032e-8,0.0012209458731045407,-1.5403436960660497e-5,2.309762894932575e-8,0.0012209717976255354,-1.565448470536381e-5,2.3250476497938733e-8,0.0012210955463632595,-1.5992317511104423e-5,2.345566341649283e-8,0.0012213435678971353,-1.634934524496698e-5,2.367175263118225e-8,0.0012217022640911984,-1.6653999885394203e-5,2.3855040758167472e-8,0.0012221254162641652,-1.685673242853055e-5,2.397543609100118e-8,0.0012225539172616843,-1.694295513018085e-5,2.4024369111537456e-8,0.0012229355612905532,-1.6930207344080828e-5,2.4013018459709848e-8,0.0012232368258948774,-1.6856088422204816e-5,2.3964815471614588e-8,0.001223445818883135,-1.6764870074623695e-5,2.3907108196114857e-8,0.0012235694616662836,-1.66972195773145e-5,2.3864781052871904e-8,0.0012236282176459417,-1.668400111843338e-5,2.3856473140188308e-8,0.0012236504409797394,-1.6743379709783217e-5,2.3892909894168513e-8,0.0012236671763620997,-1.6880175503808295e-5,2.3976645895061022e-8,0.001223707624433692,-1.708683221483701e-5,2.4102766441136323e-8,0.0012237954317209335,-1.734565340062886e-5,2.426029685357651e-8,0.0012239459921608604,-1.7631973134540477e-5,2.4434117926847972e-8,0.0012241649213519893,-1.791791608308859e-5,2.4607207076905056e-8,0.0012244478183697678,-1.817632574317451e-5,2.476299133590999e-8,0.0012247812244358886,-1.838435464330882e-5,2.4887533086232756e-8,0.0012251444556581857,-1.8526399189167512e-5,2.4971356499031972e-8,0.001225512030680893,-1.8596356874691012e-5,2.5010875116620252e-8,0.0012258566090267735,-1.8599249204608337e-5,2.500940666446154e-8,0.0012261525206215848,-1.8552184327634754e-5,2.4977727871947743e-8,0.0012263801754533244,-1.8484389126531722e-5,2.4934001023126065e-8,0.001226531589440995,-1.8435353897332787e-5,2.4902521731442044e-8,0.0012266163824655456,-1.844942436845583e-5,2.4910327037782435e-8,0.0012266658987470957,-1.8565429063659797e-5,2.498085133256966e-8,0.0012267312754294553,-1.880207278591228e-5,2.5125090674904964e-8,0.0012268713258371598,-1.914430998630717e-5,2.533341535608457e-8,0.001227131022819862,-1.954022969406463e-5,2.557377342250434e-8,0.0012275202373195173,-1.991570456003484e-5,2.5800673545950185e-8,0.0012280066605481112,-2.0202550073462475e-5,2.5972399157529153e-8,0.0012285289260753722,-2.036442274620531e-5,2.6066887113834473e-8,0.0012290215337736447,-2.0405843598096857e-5,2.608730247250189e-8,0.0012294364792536673,-2.0362831684957532e-5,2.605626237353159e-8,0.0012297525480403702,-2.0285001528169813e-5,2.600470001447718e-8,0.001229973287643303,-2.0219675206655426e-5,2.596192790923771e-8,0.00123011945294299,-2.0202577079814657e-5,2.5949829286862887e-8,0.0012302208090147813,-2.0254570927893388e-5,2.598089556577197e-8,0.001230309575850642,-2.0382079862008366e-5,2.6058620701201978e-8,0.0012304158345859968,-2.0579100696291248e-5,2.6178889594627654e-8,0.0012305643517482184,-2.0829746668818747e-5,2.6331638580619262e-8,0.0012307723235892732,-2.1111062515209374e-5,2.6502607204116547e-8,0.0012310478548748765,-2.1396114777007075e-5,2.6675202086625746e-8,0.0012313891899758615,-2.1657391046044656e-5,2.6832534064826254e-8,0.0012317848985939483,-2.187044513583133e-5,2.6959629716658373e-8,0.001232215249623264,-2.2017430944470345e-5,2.7045614719736176e-8,0.0012326547447966258,-2.209001773221379e-5,2.7085542859440893e-8,0.0012330755592392312,-2.2091326924775106e-5,2.70816135899996e-8,0.0012334516279752959,-2.203663011034868e-5,2.7043580150642033e-8,0.001233763101802164,-2.1952544155669515e-5,2.6988170698065287e-8,0.001234000846053606,-2.1874499915341305e-5,2.6937404354593894e-8,0.0012341705639102628,-2.184212653370876e-5,2.691563704449534e-8,0.0012342956223987628,-2.1891979650956894e-5,2.6945050302677308e-8,0.001234416688585595,-2.2047557895417835e-5,2.7039585964648845e-8,0.0012345855888722889,-2.23083766412273e-5,2.719839449139654e-8,0.0012348517249173988,-2.2642708147870215e-5,2.7401545144008608e-8,0.0012352433616983397,-2.2990593392258627e-5,2.7611962377998624e-8,0.0012357521897338616,-2.328103233247334e-5,2.778596961972363e-8,0.0012363319390749912,-2.3458241076732956e-5,2.7889391237730747e-8,0.001236914832205126,-2.3503051358274284e-5,2.7910738893106944e-8,0.0012374372602634584,-2.34370143285074e-5,2.7863779646029196e-8,0.0012378600978094599,-2.3308844078715344e-5,2.7779123129400366e-8,0.001238175025995959,-2.3173834169043024e-5,2.7691345091404345e-8,0.0012383987375117022,-2.3077516654817154e-5,2.7628715793488518e-8,0.0012385621901050622,-2.304804267920002e-5,2.7608434146434345e-8,0.001238700730871274,-2.3095701387628564e-5,2.7636418998067664e-8,0.0012388473917175444,-2.321606101218933e-5,2.7709418024290113e-8,0.0012390291726658905,-2.339397590953754e-5,2.781763697063455e-8,0.001239265187271221,-2.3607198404592336e-5,2.7947049692492793e-8,0.0012395656932513142,-2.3829477290720274e-5,2.808131142382676e-8,0.001239931567574002,-2.4033454791804963e-5,2.8203502070202986e-8,0.001240354197034772,-2.419368952870141e-5,2.8297948187087624e-8,0.0012408160639877112,-2.4289979933212816e-5,2.835226322126063e-8,0.0012412924936616241,-2.431076507997636e-5,2.835947104322042e-8,0.001241754847581157,-2.4255949556786933e-5,2.8319783468064274e-8,0.0012421750027906508,-2.413837942889537e-5,2.8241514856497743e-8,0.0012425305735050856,-2.398330917104594e-5,2.8140695039591662e-8,0.001242810041407821,-2.3825431793646963e-5,2.803911624686781e-8,0.0012430167548026835,-2.3703494765039817e-5,2.796086702784852e-8,0.0012431707595330977,-2.3653019187846447e-5,2.792773776976358e-8,0.0012433075282853305,-2.3697965910599013e-5,2.7954078812129726e-8,0.0012434727173970845,-2.3842679769997022e-5,2.8041949740427052e-8,0.001243712463212426,-2.4066405760676784e-5,2.8177927469785303e-8,0.0012440601035040232,-2.432362427984792e-5,2.8333484399655164e-8,0.0012445228361571915,-2.4553159928907133e-5,2.84706844897476e-8,0.001245074558848186,-2.469598742631698e-5,2.8553156726817562e-8,0.0012456608862963842,-2.4715959349908565e-5,2.8558858281151512e-8,0.001246216708050109,-2.4613291013679496e-5,2.8488399775580813e-8,0.001246688489499405,-2.4423038202625592e-5,2.8364074640010765e-8,0.0012470500759516796,-2.4199802086790886e-5,2.8220269933140577e-8,0.0012473056186578205,-2.3997923243581362e-5,2.8091007067191165e-8,0.0012474816718979766,-2.3856832628854112e-5,2.8000725693752732e-8,0.0012476152297567857,-2.3795467178827526e-5,2.796083255759579e-8,0.0012477434727424471,-2.3813936544781482e-5,2.797087896365848e-8,0.0012478974825907967,-2.3898538079999737e-5,2.802185450423327e-8,0.0012480994715242364,-2.4027063105389873e-5,2.8099607177080368e-8,0.0012483620860405254,-2.4173063448967265e-5,2.8187527217003586e-8,0.0012486885425988454,-2.4309038643380227e-5,2.8268487756534477e-8,0.0012490729604937483,-2.4409048929309893e-5,2.832640747738927e-8,0.0012495008229754566,-2.4451320673572244e-5,2.8347832218140762e-8,0.0012499499393055541,-2.442119484453209e-5,2.8323772418069707e-8,0.0012503925365264328,-2.4314275664468087e-5,2.8251695604431464e-8,0.0012507990005257714,-2.4139030867608762e-5,2.8137171704645568e-8,0.001251143262636996,-2.391768914256767e-5,2.7994415164953935e-8,0.0012514090363835088,-2.368426701735876e-5,2.7844976389814205e-8,0.0012515953110546903,-2.3479107716070564e-5,2.771421375274228e-8,0.0012517191350728285,-2.3340474530020665e-5,2.7625933544735366e-8,0.0012518141482856812,-2.3295030625602135e-5,2.7596407518891168e-8,0.00125192444142756,-2.334975383124914e-5,2.7629401271552236e-8,0.0012520946514939732,-2.348776438369355e-5,2.7713746828686006e-8,0.0012523583631477433,-2.3669877510084097e-5,2.7824516476769492e-8,0.0012527277286170939,-2.38425421336231e-5,2.7928118057615044e-8,0.0012531876409788102,-2.3951178423680048e-5,2.7990642199443437e-8,0.0012536974445180235,-2.395580939174183e-5,2.7987543221912417e-8,0.0012542012794675764,-2.3843814405731823e-5,2.7911488512020674e-8,0.0012546444912580575,-2.3634230998913443e-5,2.7774939914552914e-8,0.0012549898708866338,-2.337098949679818e-5,2.760582318235473e-8,0.0012552269467497428,-2.31078977299701e-5,2.7438033142794907e-8,0.0012553712247767674,-2.2892283909759187e-5,2.730112602560997e-8,0.001255455539610628,-2.2753872111695107e-5,2.7213370434487382e-8,0.0012555187275849952,-2.2701515499694785e-5,2.7179817449245153e-8,0.0012555962675502516,-2.2726235663317327e-5,2.719436714414756e-8,0.0012557148843836085,-2.280713457832666e-5,2.724360162183075e-8,0.001255890687072248,-2.2917285638186973e-5,2.7310518757386415e-8,0.001256129398595488,-2.3028282424195017e-5,2.7377340966423323e-8,0.0012564273842037858,-2.3113398094334926e-5,2.742741470506988e-8,0.001256772748129926,-2.3149894992070267e-5,2.7446594516070987e-8,0.0012571463545275083,-2.3121157899020574e-5,2.7424565261140528e-8,0.0012575231640768645,-2.3019131476612913e-5,2.7356401669610725e-8,0.001257874612111306,-2.284700440575688e-5,2.7244296214391676e-8,0.0012581727000068063,-2.2621361371800596e-5,2.7098925268443296e-8,0.0012583959412701018,-2.2372382207858894e-5,2.6939533510837228e-8,0.0012585362273141267,-2.2140433227805133e-5,2.6791698499354605e-8,0.0012586042852673735,-2.196814660205169e-5,2.6682241581275458e-8,0.0012586306549829782,-2.1889126806689826e-5,2.6632055608261722e-8,0.0012586601311620252,-2.1916855981065547e-5,2.664914718129419e-8,0.0012587403517282045,-2.2038399148444123e-5,2.672480002912566e-8,0.0012589081308858302,-2.2216070066749486e-5,2.6834805998698666e-8,0.001259178401966701,-2.2397001174915816e-5,2.6945651229235044e-8,0.0012595395662738137,-2.2527436600423014e-5,2.7023591961309044e-8,0.0012599565073977735,-2.2567114697326255e-5,2.704368259177285e-8,0.0012603800277351954,-2.249955563699239e-5,2.6996141762203254e-8,0.0012607598300570521,-2.2335587057110256e-5,2.6888416016816608e-8,0.0012610573544834757,-2.2109330675960614e-5,2.674249136516303e-8,0.0012612547690560867,-2.186800615213288e-5,2.6588343449294578e-8,0.0012613575758832708,-2.1658922356915117e-5,2.6455686208838244e-8,0.001261390591051946,-2.151793017938794e-5,2.6366737636690552e-8,0.00126138947197204,-2.146269522919313e-5,2.6332111564846554e-8,0.001261391218294045,-2.1491868003257122e-5,2.635046486548411e-8,0.0012614266428808319,-2.15888902989852e-5,2.641103229929555e-8,0.0012615162216082754,-2.1727952954471072e-5,2.6497431575663864e-8,0.0012616690635331466,-2.187983048108349e-5,2.6591299115901463e-8,0.0012618838439774989,-2.2016383972793845e-5,2.6675035116793972e-8,0.0012621505235054361,-2.2113585277586392e-5,2.6733624171416905e-8,0.0012624521180612978,-2.2153524616584108e-5,2.6755867859438524e-8,0.00126276632102878,-2.2126043067001626e-5,2.6735440962205498e-8,0.0012630672801498218,-2.2030481309721585e-5,2.6672051476437688e-8,0.0012633282001385453,-2.1877576094169603e-5,2.6572675677080794e-8,0.0012635254927225803,-2.1690821374928485e-5,2.6452399559931268e-8,0.0012636447200479173,-2.150581193844573e-5,2.6333924961939377e-8,0.0012636873694712005,-2.1365630790647973e-5,2.62445471842398e-8,0.001263675689203714,-2.1311092535360135e-5,2.6209908895091034e-8,0.001263651583389443,-2.1367352542053175e-5,2.624553285893486e-8,0.0012636669236140193,-2.1532112858698217e-5,2.6349454998586358e-8,0.0012637672086514252,-2.1772261625864342e-5,2.6500247615930587e-8,0.0012639754671761418,-2.2032532614826404e-5,2.666264158225693e-8,0.001264284192241647,-2.2253087100624153e-5,2.679874434506354e-8,0.0012646586664950854,-2.238799657886381e-5,2.687976398338216e-8,0.001265048952007261,-2.2417146448438736e-5,2.68935001124463e-8,0.0012654046375396352,-2.2348637976309602e-5,2.6845743928639548e-8,0.001265687166465729,-2.2213199967963506e-5,2.6756558234120423e-8,0.0012658770847539854,-2.205411237295862e-5,2.6653709859809845e-8,0.0012659757694239995,-2.1916095275190147e-5,2.6565519875628988e-8,0.0012660024992930466,-2.1835733466883678e-5,2.6514812194613012e-8,0.0012659883363219941,-2.183504682483079e-5,2.6514975770749016e-8,0.001265968564043513,-2.1918984668542527e-5,2.656857289282304e-8,0.0012659755016867593,-2.2076758125450218e-5,2.666835322071545e-8,0.0012660331867845541,-2.2286013655878877e-5,2.6799978389807436e-8,0.0012661546447266811,-2.2518299270481508e-5,2.6945459630868268e-8,0.0012663416011667139,-2.2744366594706175e-5,2.708642168120064e-8,0.0012665859156780787,-2.2938374403736194e-5,2.720666230998871e-8,0.0012668718340026004,-2.308069895407578e-5,2.729387607334129e-8,0.0012671783608418628,-2.315961813842999e-5,2.7340731279403066e-8,0.0012674815022603028,-2.3172399530941718e-5,2.734561490457562e-8,0.0012677565540440863,-2.3126206424985553e-5,2.7313258391016998e-8,0.0012679809078356128,-2.3038880813856224e-5,2.7255232108115096e-8,0.0012681379667225815,-2.293909764723427e-5,2.718996925380211e-8,0.001268222410981478,-2.2864607647463806e-5,2.714153350665855e-8,0.0012682458991817589,-2.285674137919671e-5,2.7136033101520892e-8,0.0012682404442877298,-2.294997743206441e-5,2.7194986348181077e-8,0.0012682552261359058,-2.3158135615329883e-5,2.732665258099185e-8,0.0012683438357439264,-2.3463184370203866e-5,2.751908579692521e-8,0.0012685445912806244,-2.381508922712379e-5,2.774017528295886e-8,0.0012688635218484556,-2.4146813037913072e-5,2.794723304902699e-8,0.0012692705636366676,-2.439852622614259e-5,2.8102383947438925e-8,0.0012697114811386142,-2.453808374801821e-5,2.818558432617654e-8,0.0012701278926337827,-2.456798692026666e-5,2.8199025785485304E-08,0.0012704747097447653,-2.451874191640579e-5,2.8162796580241977e-8,0.0012707290511519327,-2.4435369716645258e-5,2.8106093111468987e-8,0.00127089082105009,-2.4363968771578763e-5,2.8058468845464867e-8,0.0012709780445711418,-2.4341966719446985e-5,2.804354865594735e-8,0.0012710200656264432,-2.439279816146933e-5,2.8075722588673664e-8,0.001271050641705294,-2.4524258495752033e-5,2.8159296031538897e-8,0.0012711018882705825,-2.4729497552478398e-5,2.8289339641440367e-8,0.0012711994916664129,-2.4989923105568873e-5,2.8453680377103202e-8,0.0012713595362361608,-2.5279401250563086e-5,2.863560229913506e-8,0.0012715871496310693,-2.5568988582094783e-5,2.8816787886148046e-8,0.0012718768697763392,-2.5831442116825033e-5,2.898007870930307e-8,0.0012722144010838205,-2.6044933071783422e-5,2.911175618979125e-8,0.0012725792455093397,-2.619559555621507e-5,2.9203144635270495e-8,0.001272947626786604,-2.627888618297095e-5,2.9251514544716158e-8,0.0012732953571026233,-2.630006763486035e-5,2.9260441855358742e-8,0.0012736006475878774,-2.6274127894061375e-5,2.9239767557704245e-8,0.0012738470763975945,-2.6225193166156763e-5,2.9205161411702542e-8,0.0012740270157430664,-2.6185124088254545e-5,2.9177104177386633e-8,0.0012741455908807501,-2.6190414429344983e-5,2.9178785414269988e-8,0.001274224316427514,-2.62760887589678e-5,2.9232165679184445e-8,0.0012743020615554482,-2.646586880061536e-5,2.935178899471236e-8,0.001274429803943883,-2.6760187731966526e-5,2.9537333686976303e-8,0.0012746566213436674,-2.712756647179489e-5,2.976831346906732e-8,0.0012750096385508432,-2.7507546288788524e-5,3.0006033761210905e-8,0.0012754781610912526,-2.7829406560484464e-5,3.020548189174035e-8,0.001276013858158292,-2.8039650417442057e-5,3.033279425528792e-8,0.0012765492750488386,-2.812244159011328e-5,3.0378310890776146e-8,0.001277023642649741,-2.810137217333263e-5,3.035772861075833e-8,0.0012774012466509133,-2.802473521408781e-5,3.0302589247883327e-8,0.0012776758745853178,-2.7945890596938154e-5,3.024749497268067e-8,0.0012778647758220772,-2.79085430819153e-5,3.022048134829472e-8,0.001277998800793535,-2.793980262467159e-5,3.0238533240266736e-8,0.0012781132813501053,-2.804931557698271e-5,3.0307171318946226e-8,0.0012782413834105137,-2.8231718287190717e-5,3.042226138414893e-8,0.0012784098972853835,-2.8470294804898002e-5,3.0572571320992245e-8,0.0012786367518833218,-2.8740849073584766e-5,3.074235593251752e-8,0.0012789297433653374,-2.9015619036969142e-5,3.091384476109464e-8,0.0012792863683563302,-2.9267159831319898e-5,3.10696300382083e-8,0.0012796947422641365,-2.9471974501639326e-5,3.119488465856777e-8,0.0012801355484260517,-2.9613619515355336e-5,3.127929159311357e-8,0.0012805848824221722,-2.9684936207415627e-5,3.131847898599492e-8,0.001281017638662968,-2.968910490383866e-5,3.131473845451968e-8,0.0012814109964758992,-2.963950002011583e-5,3.1276957457645865e-8,0.0012817477332364437,-2.9558493616968298e-5,3.1219814796159154e-8,0.0012820192456920046,-2.9475284638605605e-5,3.116227933862801e-8,0.001282228197848576,-2.9422701983244574e-5,3.1125420021043346e-8,0.001282390606699797,-2.943268070189973e-5,3.112941115271035e-8,0.0012825366317504978,-2.9529907636028162e-5,3.118948519163852e-8,0.0012827084194776662,-2.9723676059624966e-5,3.131088059813362e-8,0.0012829528288665348,-2.9999700516418604e-5,3.1483844908667825e-8,0.0012833079130263225,-3.0316201547194518e-5,3.168132285335997e-8,0.0012837859765342673,-3.061020073146328e-5,3.1863018658290956e-8,0.0012843618450062628,-3.081684226297564e-5,3.198765635324121e-8,0.0012849765874220782,-3.089521995994752e-5,3.20294184946202e-8,0.0012855586318208988,-3.084588285428632e-5,3.1989175468429604e-8,0.0012860510837547415,-3.0708540178211655e-5,3.189304549666774e-8,0.001286429391721135,-3.054259065273131e-5,3.1779790208841204e-8,0.0012867022080911398,-3.0404062537684042e-5,3.1685762437681995e-8,0.001286900377279203,-3.0330777585708804e-5,3.163518182633183e-8,0.001287063300987379,-3.0338387143386424e-5,3.163759774986754e-8,0.001287228565364857,-3.042354922701865e-5,3.1690131287687944e-8,0.0012874261434639106,-3.056970632894269e-5,3.1781451277475414e-8,0.0012876761011276928,-3.075264889043229e-5,3.189554315979008e-8,0.001287988197340863,-3.094489886686548e-5,3.201458498978887e-8,0.0012883622633117567,-3.111913753711612e-5,3.2121090216733314e-8,0.0012887890246263095,-3.125116421789353e-5,3.219969606469643e-8,0.0012892514436496775,-3.1322610080414284e-5,3.223881626240157e-8,0.0012897267572810904,-3.132337450102907e-5,3.223217751474067e-8,0.0012901893827250341,-3.125348366035541e-5,3.2180042784654345e-8,0.0012906146194111945,-3.1123848609875844e-5,3.208974051574626e-8,0.0012909826969805158,-3.0955505293186115e-5,3.197517438868874e-8,0.0012912825565626971,-3.0777215881050795e-5,3.185520292845642e-8,0.0012915147687625943,-3.0621540642874033e-5,3.175097395022615e-8,0.001291693035842951,-3.0519716537336427E-05,3.168249183610786e-8,0.0012918438362249742,-3.0495841413462402e-5,3.1664819795655e-8,0.0012920037928547566,-3.056087693364674e-5,3.1704304670211076e-8,0.0012922141715474165,-3.0707282053063105e-5,3.17953364867465e-8,0.001292512034520009,-3.090599709338316e-5,3.1918661500173786e-8,0.0012929187002381516,-3.110850773894603e-5,3.2042880122178096e-8,0.0012934285950733568,-3.1256693423193994e-5,3.213078673276235e-8,0.0012940044453168913,-3.1300498297250774e-5,3.215061328521406e-8,0.001294584877820033,-3.12176444133966e-5,3.20885883560331e-8,0.001295104589766634,-3.102462475607171e-5,3.195596529494129e-8,0.0012955179603695564,-3.077085167751126e-5,3.178521309227125e-8,0.0012958131840410975,-3.0518540566581096e-5,3.1616916955709714e-8,0.0012960105999187787,-3.032026641965267e-5,3.148511085415194e-8,0.0012961495978159076,-3.0205433323736027e-5,3.140845109678617e-8,0.0012962734470908504,-3.0178565979806494e-5,3.1389212768773746e-8,0.0012964186126221632,-3.022527856628844e-5,3.141738252834504e-8,0.0012966099467786687,-3.032037295760454e-5,3.1476126820308665e-8,0.0012968600751613467,-3.043465498738407e-5,3.154631955101938e-8,0.0012971707339509185,-3.0539529403013107e-5,3.160949484610287e-8,0.0012975345391934867,-3.0609886172662965e-5,3.164960498486348e-8,0.0012979366525891216,-3.062613758462698e-5,3.1654217987039235e-8,0.0012983564533401342,-3.057599296156603e-5,3.1615600298714555e-8,0.0012987695840761062,-3.0456167864014533e-5,3.1531828857941956e-8,0.0012991507884455799,-3.027379091331488e-5,3.140775068646107e-8,0.0012994777236449333,-3.004683999448522e-5,3.125530194558217e-8,0.0012997353921117309,-2.9802813505353085e-5,3.1092622133109445e-8,0.0012999202861004046,-2.9575139003558806e-5,3.09416264273142e-8,0.0013000430270444395,-2.93974130243819e-5,3.0824133092212875e-8,0.001300128331498118,-2.9296350396882437e-5,3.075718715872455e-8,0.0013002116679433546,-2.928500804947685e-5,3.074866956412388e-8,0.0013003328193243616,-2.935801434543197e-5,3.0794343521651624e-8,0.001300527308605543,-2.9490231267340253e-5,3.0877225135393917e-8,0.0013008171756119307,-2.9639869058835446e-5,3.0969838317194383e-8,0.0013012031591031939,-2.9756515314625574e-5,3.10395465251122e-8,0.0013016609455879465,-2.9793446563434323e-5,3.105650235031395e-8,0.0013021442562541905,-2.972172931898944e-5,3.100263591424007e-8,0.0013025961177511457,-2.9541337275106654e-5,3.087867894617946e-8,0.0013029660006317406,-2.9283509335878423e-5,3.0705543544897195e-8,0.0013032261586196996,-2.9001308736517474e-5,3.051808034793436e-8,0.0013033793833759004,-2.875164122635431e-5,3.035331118242153e-8,0.0013034547749617115,-2.8577237008618275e-5,3.023868954419752e-8,0.0013034950005774671,-2.8496554952853205e-5,3.018561791167246e-8,0.0013035422626375217,-2.8503927091162528e-5,3.018972942257647e-8,0.0013036286487182313,-2.8576659673191224e-5,3.023572044825167e-8,0.0013037723920898197,-2.8683998777921855e-5,3.0303320007544866e-8,0.0013039784710675347,-2.8794434907111588e-5,3.037204952208462e-8,0.0013042411712836108,-2.8880283437659195e-5,3.042410362765577e-8,0.0013045469059940415,-2.8920083977942182e-5,3.044577741719525e-8,0.0013048765892900785,-2.8899827777303695e-5,3.042817208710491e-8,0.0013052076096280716,-2.8813836177220682e-5,3.0367751697282956e-8,0.0013055158699504063,-2.8665686201342626e-5,3.026699500311816e-8,0.0013057784723598796,-2.8469027833693583e-5,3.0134989400730604e-8,0.0013059774012722158,-2.824758312302742e-5,2.998744624708401e-8,0.0013061039917527009,-2.803329661145913e-5,2.984543622349855e-8,0.0013061631500154798,-2.786174715368294e-5,2.973227959525612e-8,0.0013061755169066931,-2.7764752904717206e-5,2.966860348764004e-8,0.0013061756394885842,-2.7761595595907e-5,2.9666567318660748e-8,0.0013062052931786697,-2.785175086959786e-5,2.972518749832201e-8,0.001306303142538855,-2.801230059159129e-5,2.9828826603746476e-8,0.0013064938194895942,-2.820182285028999e-5,2.9949955265754234e-8,0.001306780086361943,-2.8370168467178228e-5,3.005571106771042e-8,0.0013071407644421912,-2.8471378373462444e-5,3.0116392578181026e-8,0.0013075352201250116,-2.8475996159682643e-5,3.011342304590286e-8,0.001307913334487316,-2.8379292346448963e-5,3.0044539506056616e-8,0.0013082284553436203,-2.820295608258615e-5,2.992467194139616e-8,0.001308449795111905,-2.798934380814309e-5,2.9781980996995586e-8,0.0013085703641908598,-2.7789555942438875e-5,2.9649940584985727e-8,0.0013086075992558702,-2.7649081856834136e-5,2.9557946510256037e-8,0.0013085965713823258,-2.7596068441511594e-5,2.9523765739778143e-8,0.001308578775603071,-2.763613069992761e-5,2.9550353019012925e-8,0.0013085910545795772,-2.7754483402330733e-5,2.9627464816654964e-8,0.0013086582864577261,-2.7923038311927625e-5,2.973644409629548e-8,0.00130879097813508,-2.810881146934206e-5,2.985573633256056e-8,0.0013089866559391336,-2.8280794299983097e-5,2.9965288371083946e-8,0.0013092330853364449,-2.841421177594859e-5,3.004918959647898e-8,0.0013095117218239086,-2.849249915857971e-5,3.00968495932514e-8,0.0013098006051115334,-2.8507901829533638e-5,3.010335322333937e-8,0.0013100766331532816,-2.8461574612671678e-5,3.006956699423517e-8,0.00131031764281404,-2.8363692896845595e-5,3.0002285569679514e-8,0.0013105049028917662,-2.823351948220192e-5,2.991431821194102e-8,0.0013106264457913824,-2.809877946612421e-5,2.9824048280105456e-8,0.001310681133427025,-2.7993271777071674e-5,2.9753766780009736e-8,0.0013106824426351005,-2.795161269268233e-5,2.972610709291234e-8,0.0013106598420135267,-2.8000824017845768e-5,2.975846481850516e-8,0.001310655166280242,-2.8150479328616627e-5,2.9856575254154354e-8,0.0013107127876955784,-2.8385509043680695e-5,3.000993471753322e-8,0.0013108657814568222,-2.866643869990418e-5,3.0192141079751784e-8,0.0013111236756196114,-2.8939129152693387e-5,3.036744088323199e-8,0.0013114677764056418,-2.915104009753794e-5,3.0501486920959236e-8,0.001311856492484787,-2.9267251923133067e-5,3.0571854184595145e-8,0.001312238049311916,-2.9279859822208612e-5,3.057411525864111e-8,0.0013125651169096678,-2.9208198159179714e-5,3.0521802359526976e-8,0.0013128064021552001,-2.909142250826646e-5,3.044129361786551e-8,0.0013129525886068233,-2.897698933927629e-5,3.0364030849243177e-8,0.001313016206816826,-2.890865807546817e-5,3.031854722956662e-8,0.001313026461668143,-2.8916887043806896e-5,3.0324238748257375e-8,0.0013130209243820167,-2.901349026915853e-5,3.0388075426164644e-8,0.0013130364508609068,-2.91912467162573e-5,3.050460897562148e-8,0.0013131016267059507,-2.9427863667728573e-5,3.0658773423636455e-8,0.00131323234339437,-2.9692576163541312e-5,3.0830280966021656e-8,0.0013134309224520154,-2.9953194080713292e-5,3.099817761610996e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json new file mode 100644 index 000000000..e8e2db514 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_14.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":14000,"numberOfSamples":1000,"samples":[0.0013136880538731968,-3.0181825300251084e-5,3.1144455018197914e-8,0.0013139862307697747,-3.0358458604268804e-5,3.125626468859012e-8,0.0013143034381558063,-3.0472498704118995e-5,3.1326857923882795e-8,0.001314616342296335,-3.0522889122674205e-5,3.135568412117831e-8,0.0013149028238326915,-3.051757614543907e-5,3.134810730752583e-8,0.0013151441476950397,-3.0472812693602606e-5,3.1315005489895234e-8,0.001315327245423572,-3.041233669157899e-5,3.127221966442859e-8,0.0013154474985632677,-3.0365940022199845e-5,3.1239522569258994e-8,0.0013155119761371786,-3.0366482616605727e-5,3.123852579233063e-8,0.0013155421786821661,-3.044428590458291e-5,3.1288903751562086e-8,0.0013155741637083083,-3.061859253490029e-5,3.140279579367739e-8,0.0013156532826805987,-3.08878545724263e-5,3.15785553459714e-8,0.0013158221093964287,-3.122350814634265e-5,3.179684474210843e-8,0.0013161043666861684,-3.1573152017452694e-5,3.202287220092828e-8,0.001316492562279381,-3.187552478285449e-5,3.221630534507893e-8,0.0013169475071545026,-3.2081986318948946e-5,3.234541530079332e-8,0.0013174114482328236,-3.217362581767834e-5,3.2398333198900105e-8,0.0013178279759007432,-3.216549962188907e-5,3.238578137269618e-8,0.0013181587209702065,-3.209786877058771e-5,3.233512178519737e-8,0.0013183908584672483,-3.202101456924127e-5,3.2280078366949867e-8,0.0013185355723118594,-3.198087692229784e-5,3.22510415181099e-8,0.0013186210256550192,-3.200948903377424e-5,3.226871171627078e-8,0.001318683516304464,-3.212087078817048e-5,3.2341550899422565e-8,0.0013187592325329092,-3.2311333689063695e-5,3.246626921888799e-8,0.0013188777975085585,-3.256278527721231e-5,3.263027897225073e-8,0.0013190580943835157,-3.28478210560236e-5,3.281520552707126e-8,0.001319306537685271,-3.3135522599053245e-5,3.30007052286256e-8,0.0013196176305973269,-3.339691167788335e-5,3.3167938459672674e-8,0.0013199762931723731,-3.360923943949643e-5,3.330224076991175e-8,0.001320361240591444,-3.3758679883073964e-5,3.339478932604852e-8,0.0013207486407314094,-3.3841371491741154e-5,3.3443266039948134e-8,0.0013211154170834028,-3.3863122696377714e-5,3.345170814905867e-8,0.0013214419486963593,-3.3838325595684376e-5,3.342984862739796e-8,0.0013217143059939618,-3.3788485178276064e-5,3.3392152957732015e-8,0.0013219262892678202,-3.374042925569602e-5,3.3356565064026065e-8,0.0013220814837101608,-3.37239298755937e-5,3.334280561542386e-8,0.0013221952658236343,-3.3768093745891034e-5,3.336987271475884e-8,0.0013222959339579021,-3.389572813238187e-5,3.345230413051685e-8,0.0013224231012386285,-3.411559264521433e-5,3.359518483099222e-8,0.001322620987373266,-3.44143314836092e-5,3.378904291433436e-8,0.0013229254974994617,-3.47525377055976e-5,3.4007455453146385e-8,0.0013233481259613213,-3.507078420316715e-5,3.421110391244622e-8,0.0013238651644779758,-3.5307915680853196e-5,3.435980179531848e-8,0.0013244214578083684,-3.5424988893193025e-5,3.4428250117923195e-8,0.0013249498096669955,-3.5421322382391885e-5,3.441665080515855e-8,0.0013253957656545127,-3.533284530570563e-5,3.4349593606930406e-8,0.0013257341054285624,-3.521518782185486e-5,3.4264687362774436e-8,0.0013259708733802966,-3.5122901891955616e-5,3.4198504380576074e-8,0.0013261345823387194,-3.509485421874728e-5,3.4176685340857736e-8,0.0013262639590043055,-3.514877227589115e-5,3.421034115508173e-8,0.0013263974759466818,-3.5282692478288204e-5,3.42972534612874e-8,0.0013265664975942637,-3.547980948220061e-5,3.4425417060696266e-8,0.00132679174008558,-3.5714173837029465e-5,3.457707337361339e-8,0.0013270820868991236,-3.595606011854193e-5,3.473236215303623e-8,0.0013274350277215283,-3.617667618018595e-5,3.487237396855363e-8,0.0013278383205704806,-3.6352045676457e-5,3.4981566469251094e-8,0.0013282725585155749,-3.6465885830951754e-5,3.504952018493835e-8,0.0013287143399232126,-3.651136884131447e-5,3.507202780552796e-8,0.001329139723468503,-3.649166207236073e-5,3.5051459488144146e-8,0.0013295275370495275,-3.6419245769639135e-5,3.499636143139478e-8,0.0013298621741601225,-3.631427873602864e-5,3.492040029054349e-8,0.0013301357987788196,-3.620233676919433e-5,3.484081953074903e-8,0.0013303500182077856,-3.6111625895291846e-5,3.4776475543805855e-8,0.0013305170072328,-3.606960581815073e-5,3.4745462642883064e-8,0.0013306599051258836,-3.609882203418703e-5,3.4762278550856455e-8,0.0013308118536023116,-3.621166286686944e-5,3.483441417239421e-8,0.0013310123518564367,-3.64043217054422e-5,3.495855682409469e-8,0.0013312994223816388,-3.6651762152887505e-5,3.511751481890027e-8,0.0013316973518746693,-3.6907391838432765e-5,3.528018149292224e-8,0.0013322032136629622,-3.711186898684884e-5,3.540737536800615e-8,0.0013327798493111566,-3.721219549322923e-5,3.546437127639159e-8,0.0013333634934342639,-3.718420813249119e-5,3.543571757580381e-8,0.001333886255019829,-3.70450465515009e-5,3.53335093009964e-8,0.0013343019613464686,-3.6846215847581066e-5,3.5192757078025216e-8,0.001334600413137058,-3.6651362298198277e-5,3.505642654975122e-8,0.0013348042208097524,-3.6512872822752915e-5,3.495958564720737e-8,0.0013349544109773996,-3.6458841744971036e-5,3.49205708479965e-8,0.0013350949386154267,-3.649215529746224e-5,3.49404840851344e-8,0.0013352621732775469,-3.659679818886342e-5,3.500770195061645e-8,0.001335480179315456,-3.6746003522191745e-5,3.510363508802379e-8,0.0013357600358690303,-3.6909212409168185e-5,3.520756323936493e-8,0.0013361011544938224,-3.705705068984642e-5,3.52999605336332e-8,0.00133649332519081,-3.7164741980348925e-5,3.536463540591373e-8,0.0013369190829818159,-3.7214510810799346e-5,3.539015342857483e-8,0.0013373563443612583,-3.719721204638616e-5,3.537079341232845e-8,0.0013377813051418917,-3.711323131523201e-5,3.530711046883947e-8,0.0013381715937814552,-3.697254005026054e-5,3.520601101140213e-8,0.0013385094912165925,-3.6793660324817705e-5,3.5080116340020854e-8,0.0013387847813319696,-3.660147627572446e-5,3.494630461274569e-8,0.0013389968351418553,-3.642410292771776e-5,3.482354178926302e-8,0.0013391557003256266,-3.628905404552198e-5,3.473019081800264e-8,0.0013392819820180002,-3.621893946658274e-5,3.468102678374732e-8,0.0013394052631200586,-3.622700347066692e-5,3.468425016446891e-8,0.0013395607383982387,-3.631286700900988e-5,3.473878515860904e-8,0.0013397835600754613,-3.645915330073845e-5,3.483228424044899e-8,0.0013401005623555385,-3.663056453013473e-5,3.494077405219707e-8,0.0013405202232471124,-3.6777887727110934e-5,3.5031461893425745e-8,0.0013410241084409612,-3.684910446392256e-5,3.5070089714356354e-8,0.0013415655317836142,-3.68068037108336e-5,3.503236888286036e-8,0.0013420805713068025,-3.664539114072159e-5,3.491530557749418e-8,0.0013425100358751974,-3.6397470548011556e-5,3.47413920987351e-8,0.00134282186684753,-3.6122771266874264e-5,3.455114282299104e-8,0.0013430210440999052,-3.5884585735838275e-5,3.438718523558038e-8,0.0013431424937006674,-3.5727401868071906e-5,3.427912167202074e-8,0.00134323392387406,-3.5666709476200635e-5,3.423668442759081e-8,0.0013433393957544833,-3.569188452387105e-5,3.425186840423222e-8,0.0013434898472930886,-3.577592172660759e-5,3.430576805004325e-8,0.0013437006458960645,-3.588557734935549e-5,3.4375631883152696e-8,0.0013439733632099559,-3.598872432152733e-5,3.443987682266083e-8,0.0013442990272794215,-3.6058572131738544e-5,3.448082578605249e-8,0.0013446613049089872,-3.6075754726357985e-5,3.44859220020242e-8,0.001345039248616876,-3.6029368037547205e-5,3.444825503332818e-8,0.0013454098213895693,-3.591751673460431e-5,3.436684759254604e-8,0.0013457504724702282,-3.57474829484819e-5,3.424678910825797e-8,0.0013460419605556845,-3.5535332633184876e-5,3.409904369034362e-8,0.0013462713941414768,-3.530453678562293e-5,3.3939575913952353e-8,0.0013464350440412546,-3.5083247688415916e-5,3.3787496601098456e-8,0.001346540218956281,-3.490026072080504e-5,3.366224387151234e-8,0.0013466055506973335,-3.478008498355249e-5,3.358013732940204e-8,0.001346659241019408,-3.4737853074248655e-5,3.355088149022233e-8,0.0013467351263881956,-3.477505002897689e-5,3.3574748237485566e-8,0.0013468668157807983,-3.487707274585662e-5,3.36411293630354e-8,0.0013470805087412794,-3.501350818296307e-5,3.3728992049500143e-8,0.0013473874871725111,-3.5141989537112516e-5,3.3809694862078156e-8,0.0013477779846166242,-3.5216299066590065e-5,3.385250575241212e-8,0.0013482190793279586,-3.5198369687471605e-5,3.3832555330064887e-8,0.001348659613978359,-3.507162618165665e-5,3.3739577083562544e-8,0.001349043468490627,-3.485031268644354e-5,3.358395470384573e-8,0.001349327999366581,-3.4578485620740276e-5,3.3395893343763146e-8,0.0013494994616960665,-3.431622032059404e-5,3.321604676365601e-8,0.001349576900362316,-3.411840812110945e-5,3.3081186820720924e-8,0.0013496024923671088,-3.4016892922365775e-5,3.3012189592066463e-8,0.0013496246279193777,-3.401415154718749e-5,3.300992090644571e-8,0.0013496829179363164,-3.408870967312186e-5,3.305913434321514e-8,0.0013498005419856707,-3.420638364611618e-5,3.313629142245499e-8,0.001349983766265312,-3.433103577998142e-5,3.3216931742549514e-8,0.001350225503188383,-3.443167213616684e-5,3.328041116125517e-8,0.001350509870791549,-3.44857855079198e-5,3.3311987997451824e-8,0.001350816111848709,-3.44802776149318e-5,3.330325655153641e-8,0.0013511215354534733,-3.44113203272646e-5,3.325193674476666e-8,0.0013514038266242718,-3.428394324938091e-5,3.3161588903372553e-8,0.0013516432294084326,-3.41115562702498e-5,3.3041366067246576e-8,0.0013518249947347244,-3.391515061958602e-5,3.29055587983786e-8,0.0013519421489563276,-3.372159161237384e-5,3.277246672853169e-8,0.0013519981162253448,-3.35604192219653e-5,3.2662172488743894e-8,0.0013520082488663807,-3.345899609113347e-5,3.259313778399188e-8,0.0013519991491952143,-3.343655294053388e-5,3.257806735071459e-8,0.0013520049886915973,-3.349849264305731e-5,3.262004101630264e-8,0.0013520609158930905,-3.36328575909331e-5,3.2710241377374956e-8,0.0013521948074782938,-3.3810651240403614e-5,3.2828394204526694e-8,0.0013524194680195325,-3.399070247049815e-5,3.2946301667474426e-8,0.0013527275548078518,-3.412846985252045e-5,3.3033954284171145e-8,0.0013530910516223313,-3.41870260521444e-5,3.306696170857802e-8,0.0013534662186818406,-3.414758958099839e-5,3.303351712767489e-8,0.0013538036921596796,-3.401650121264336e-5,3.293885919569297e-8,0.0013540617630267778,-3.3825695437600704e-5,3.280532715743045e-8,0.0013542189655621978,-3.3625013396523797e-5,3.2666968653528377e-8,0.0013542809896239987,-3.3467679762926974e-5,3.255963827369867e-8,0.0013542783419837156,-3.3394020433318414e-5,3.251003853738814e-8,0.0013542554119995557,-3.342020697923614e-5,3.252828382153754e-8,0.0013542560140103023,-3.3536391035527796e-5,3.2606892142050424e-8,0.0013543116989025482,-3.371353007933651e-5,3.2725642792952345e-8,0.0013544365308802784,-3.391431273365121e-5,3.285910327271554e-8,0.0013546280975285543,-3.410316353858851e-5,3.2983383466057345e-8,0.0013548720539619643,-3.4252552907384106e-5,3.308026489902493e-8,0.001355147353668992,-3.43454908576762e-5,3.313870075252464e-8,0.0013554305468037433,-3.437553330264171e-5,3.315467676927687e-8,0.0013556988011802253,-3.434572357619407e-5,3.313045281129339e-8,0.0013559320038673691,-3.426735815892247e-5,3.30737806614842e-8,0.0013561145343338845,-3.415887769336406e-5,3.299724375590522e-8,0.0013562372346350193,-3.40446430953795e-5,3.291748056072256e-8,0.001356299729968249,-3.395293821719811e-5,3.285379960496967e-8,0.0013563126464800305,-3.39124616274109e-5,3.2825694374099335e-8,0.0013562986345168043,-3.394695718115785e-5,3.284908231937111e-8,0.0013562906901488832,-3.406854808973949e-5,3.2931730931658255e-8,0.0013563265580224901,-3.4271700357362895e-5,3.3069227097465745e-8,0.0013564394803830895,-3.453081024388408e-5,3.3243512234392763e-8,0.001356647830444362,-3.480395690125668e-5,3.342564568063368e-8,0.0013569477158602284,-3.504296952579012e-5,3.358281757335669e-8,0.0013573120584085639,-3.52068525793514e-5,3.368754392194241e-8,0.001357697050412798,-3.5273779767518736e-5,3.3725762172275216e-8,0.0013580538346326509,-3.524742322405932e-5,3.3700952947215904e-8,0.0013583414729187431,-3.515577457801083e-5,3.3633068996217375e-8,0.0013585373183607017,-3.504326814963739e-5,3.3552899090837633e-8,0.0013586421139425234,-3.4958781479045985e-5,3.3493719387707e-8,0.001358678685937704,-3.494290707046618e-5,3.3482624669021657e-8,0.001358684778336174,-3.501803608967189e-5,3.353396129882613e-8,0.001358702322909947,-3.518405715028354e-5,3.36466993389363e-8,0.0013587666406036992,-3.542061521536396e-5,3.380626499920978e-8,0.0013588989123856205,-3.5694495803273485e-5,3.398974496696862e-8,0.001359103663247866,-3.5969025766868755e-5,3.417229612867719e-8,0.0013593708567535968,-3.621226756590788e-5,3.4332592451649465e-8,0.0013596806793210175,-3.640207539916034e-5,3.4456072169122394e-8,0.0013600088338772479,-3.6527817297702786e-5,3.4535941490019846e-8,0.0013603309085686056,-3.6589745925869715e-5,3.4572666368770736e-8,0.0013606253906847028,-3.659727205627579e-5,3.4572817000381455e-8,0.0013608755966453268,-3.656705235731982e-5,3.45478428901892e-8,0.0013610710755603856,-3.652125748003627e-5,3.4512957394544435e-8,0.0013612090115036409,-3.648585481662091e-5,3.448596151433922e-8,0.0013612958461505,-3.648833256815448e-5,3.448560847301663e-8,0.0013613487825353768,-3.655412453139295e-5,3.452905427534737e-8,0.0013613960977975756,-3.6701245140876124e-5,3.4628141465119906e-8,0.0013614745650237811,-3.693358561190437e-5,3.4784884782548805e-8,0.0013616224205170902,-3.7235042204870165e-5,3.4987633233731027e-8,0.001361868091522445,-3.756832421090297e-5,3.521045772248526e-8,0.001362218255945228,-3.788197415238886e-5,3.541808383563176e-8,0.0013626514699812326,-3.812539193249165e-5,3.557619486093644e-8,0.001363122322234058,-3.8266165560665596e-5,3.566324383611881e-8,0.0013635754647547845,-3.830134386399334e-5,3.5678079037798024e-8,0.0013639630780626708,-3.825738313571894e-5,3.563975015298319e-8,0.001364258080357862,-3.817994201829989e-5,3.5580274568062977e-8,0.0013644589434662312,-3.811922202797349e-5,3.5534332460088205e-8,0.0013645865742663128,-3.81166924124298e-5,3.5530027944857735e-8,0.0013646762446455044,-3.819653354824757e-5,3.558310331044814e-8,0.001364767819829093,-3.8362605590993256e-5,3.569514079478911e-8,0.0013648967631197295,-3.8600238344742254e-5,3.585514627803409e-8,0.0013650874946786213,-3.888148752071901e-5,3.60434300221522e-8,0.0013653499642588421,-3.917227000116867e-5,3.62365942886353e-8,0.00136567964200512,-3.943967176457917e-5,3.6412451385441956e-8,0.0013660603709506384,-3.965784039600382e-5,3.65538578644758e-8,0.0013664688889499187,-3.981147629204727e-5,3.665089579529965e-8,0.0013668796761675812,-3.989679821734419e-5,3.6701401260529234e-8,0.0013672690955396569,-3.992052333462929e-5,3.6710241547116054e-8,0.0013676183253096337,-3.9897716306200194e-5,3.668789735721834e-8,0.0013679151464472477,-3.984932666566189e-5,3.664884493646582e-8,0.0013681550099158162,-3.979985343784534e-5,3.660997364210455e-8,0.0013683418187992174,-3.977508572660584e-5,3.658897704031485e-8,0.0013684886345164064,-3.9799531863791056e-5,3.6602481816290366e-8,0.0013686181140462686,-3.989297417404592e-5,3.6663608773571173e-8,0.0013687618136698219,-4.006569078124706e-5,3.677873040014451e-8,0.0013689567976789784,-4.031268759372785e-5,3.6943686509812775e-8,0.0013692379960220952,-4.0608958982055686e-5,3.714077674900414e-8,0.0013696263976024602,-4.0909688045915914e-5,3.733908018595111e-8,0.001370116858706226,-4.115943735403728e-5,3.7500783826076915e-8,0.0013706730192843547,-4.131030892561659e-5,3.759353716751259e-8,0.0013712357655380756,-4.1341651354543865e-5,3.760387092264407e-8,0.001371743681640421,-4.1269733274189294e-5,3.754378869036469e-8,0.0013721549303818486,-4.114093707006044e-5,3.744600118910848e-8,0.0013724590038156602,-4.1013018078885606e-5,3.7350822712677154e-8,0.0013726746583584263,-4.0935524588789915e-5,3.7292433498253575e-8,0.0013728388253621247,-4.093780361015353e-5,3.7290504667023286e-8,0.0013729936653109317,-4.102619609853645e-5,3.7348411588796894e-8,0.001373176359782013,-4.118762655376452e-5,3.745605098886693e-8,0.0013734130133102524,-4.139607981819826e-5,3.759467361926248e-8,0.0013737161837680623,-4.161950138762874e-5,3.7741869452387925e-8,0.0013740850229568907,-4.182594710895547e-5,3.787581954548767e-8,0.0013745072421834012,-4.198858396882682e-5,3.797857502949695e-8,0.0013749623837124778,-4.208926335925624e-5,3.803827857381001e-8,0.0013754258276343432,-4.2120407717748035e-5,3.8050265155743136e-8,0.001375872892622539,-4.2085198307853355e-5,3.801710263943968e-8,0.001376282469925798,-4.199628974034897e-5,3.7947728565110885e-8,0.0013766397572874227,-4.187345120748918e-5,3.7855899666402347e-8,0.0013769379150291574,-4.1740698791756187e-5,3.775826686919178e-8,0.0013771788132807986,-4.162339046388268e-5,3.76723488673647e-8,0.0013773731537905993,-4.154540420571933e-5,3.7614493141915814e-8,0.0013775401104706387,-4.1526264618012495e-5,3.759779228022895e-8,0.0013777064032593797,-4.157796597586423e-5,3.762987031680914e-8,0.001377904267471179,-4.170125910920436e-5,3.771044184184231e-8,0.0013781672206391812,-4.188175848661827e-5,3.78288749397831e-8,0.00137852256618738,-4.2087548328483725e-5,3.7962807628071696e-8,0.0013789809169083302,-4.2271422389212076e-5,3.807982991820045e-8,0.0013795260580142504,-4.238109909941585e-5,3.8144447194615674e-8,0.0013801120459359865,-4.237742637005507e-5,3.813041208095439e-8,0.0013806741263976,-4.225334424947585e-5,3.8033625865393774e-8,0.0013811520519300435,-4.2041187655938626e-5,3.787713159675286e-8,0.0013815136370865081,-4.180098864064637e-5,3.7703002181980215e-8,0.0013817644462791729,-4.159593522969593e-5,3.755522195444356e-8,0.0013819398040921613,-4.146995772891535e-5,3.7463973571636786e-8,0.0013820873195676013,-4.143814444971667e-5,3.74389528223684e-8,0.0013822508297504756,-4.1489856674521627e-5,3.747173694159376e-8,0.0013824612018183504,-4.159808318168086e-5,3.7542636676095634e-8,0.001382733677333939,-4.172918004101423e-5,3.76277743218216e-8,0.0013830692173663335,-4.185025959459586e-5,3.7704340994960595e-8,0.0013834575067367659,-4.193387127219509e-5,3.7753754368892116e-8,0.00138388030970731,-4.196070426809343e-5,3.776329962305264e-8,0.0013843148322871465,-4.1921028124019695e-5,3.7726878625517075e-8,0.0013847370777409624,-4.181512286564115e-5,3.7645150528966244e-8,0.0013851250900450299,-4.165273271465304e-5,3.752512539985943e-8,0.0013854619058602147,-4.145156074913463e-5,3.737919056711855e-8,0.0013857379458243554,-4.123483834305219e-5,3.722351350041851e-8,0.0013859525067954938,-4.1028195536964666e-5,3.707590164867331e-8,0.001386114186987945,-4.08562465832129e-5,3.6953376917189425e-8,0.0013862402914967716,-4.0739217947163935e-5,3.6869727504020365e-8,0.0013863552819137583,-4.068981038566365e-5,3.683325080139284e-8,0.0013864882812566375,-4.071045407698197e-5,3.684488191793497e-8,0.0013866695093654466,-4.0791084850707254e-5,3.689683217641563e-8,0.0013869252570760705,-4.0907845082072896e-5,3.6971967000828836e-8,0.0013872711358115565,-4.102392437415202e-5,3.7044638632372434e-8,0.0013877044103900269,-4.10944872644231e-5,3.708418444800822e-8,0.0013881982022425643,-4.107730918647336e-5,3.70621554354846e-8,0.0013887024507251455,-4.094823201885367e-5,3.696274535980045e-8,0.0013891560996636264,-4.071545369969397e-5,3.6792453536201996e-8,0.0013895088976246747,-4.042264374578624e-5,3.658214577314118e-8,0.0013897421255975183,-4.013475017712353e-5,3.637717862062872e-8,0.0013898751358086116,-3.99123909946508e-5,3.621955119697095e-8,0.0013899539157585976,-3.97898760399196e-5,3.613256495667892e-8,0.0013900305358917047,-3.976825529054825e-5,3.611605869920365e-8,0.0013901459897183817,-3.982280938552323e-5,3.615187595826213e-8,0.001390322583927315,-3.9916483926864295e-5,3.621354110721034e-8,0.0013905644815372748,-4.00116379826972e-5,3.627465691377648e-8,0.001390862196549241,-4.007719389834769e-5,3.6313891042696686e-8,0.0013911977272878053,-4.009168854677753e-5,3.631692015857626e-8,0.001391548803289706,-4.004388985804637e-5,3.627660019245447e-8,0.0013918921108757572,-3.9932383942914886e-5,3.619246897144912e-8,0.001392205925877442,-3.976474847087717e-5,3.607009012040189e-8,0.001392472481833256,-3.9556371616133894e-5,3.592027726302581e-8,0.0013926801795685095,-3.932876436594814e-5,3.5758025153182566e-8,0.0013928255206943443,-3.910712261197275e-5,3.5600891948591315e-8,0.0013929143574365078,-3.891704325009154e-5,3.546670424830646e-8,0.0013929619662561058,-3.878067864465175e-5,3.5370785800753655e-8,0.0013929916634681091,-3.8712865216251155e-5,3.5323145245009847e-8,0.0013930319212074739,-3.871783709874851e-5,3.532613964822986e-8,0.0013931121650108214,-3.878718027241075e-5,3.537313617747967e-8,0.0013932576761824852,-3.889956926863257e-5,3.544855030305457e-8,0.0013934841205019005,-3.902264562679513e-5,3.5529430896809445e-8,0.0013937923389470475,-3.911747336501126e-5,3.558876680690813e-8,0.0013941645951322254,-3.9146037401005566e-5,3.560072677257016e-8,0.0013945643433518572,-3.908149684330105e-5,3.554760976148454e-8,0.0013949419740809537,-3.8919080012482775e-5,3.54271205202408e-8,0.0013952477277678645,-3.868301987054237e-5,3.525691407233159e-8,0.001395448996586115,-3.842366805801884e-5,3.507242835859129e-8,0.0013955441184541493,-3.8202198743737096e-5,3.491619511363628e-8,0.001395563841894682,-3.806835542580855e-5,3.482237329132881e-8,0.0013955584098649994,-3.804297850225461e-5,3.4804676331452736e-8,0.0013955778157443777,-3.8114400232592614e-5,3.4854056156277526e-8,0.0013956561830292,-3.8248114880291454e-5,3.4945709067619815e-8,0.0013958061096767589,-3.840169374270801e-5,3.504970300817749e-8,0.001396021525706078,-3.853707477095065e-5,3.513962678304474e-8,0.0013962843041433993,-3.8627076516026636e-5,3.5197026880596114e-8,0.0013965707576988314,-3.865699570879773e-5,3.521229439063478e-8,0.0013968563725718281,-3.8623536025609064e-5,3.5183688298750485e-8,0.0013971187911648243,-3.8532907044979155e-5,3.511587978476073e-8,0.001397339741657006,-3.8398963032655006e-5,3.501866053362015e-8,0.0013975065707011172,-3.824149273866268e-5,3.490584928664414e-8,0.0013976137214529206,-3.808437691328442e-5,3.47941124837482e-8,0.0013976641337538325,-3.795316224892923e-5,3.470130668547223e-8,0.0013976701313359334,-3.787171824233571e-5,3.4644083108582145e-8,0.0013976530803277948,-3.785809777299285e-5,3.4634877223998395e-8,0.0013976411745630901,-3.792027581554576e-5,3.467883721971932e-8,0.0013976651171231898,-3.8052873706371765e-5,3.477154552196402e-8,0.001397752138213877,-3.8236151892252456e-5,3.489846164729002e-8,0.0013979195447783234,-3.8438219455829296e-5,3.5036710195449224e-8,0.0013981694399458889,-3.862056128580171e-5,3.515918741519236e-8,0.001398486147697437,-3.874608834560939e-5,3.524031957876636e-8,0.0013988374531938928,-3.878827062153085e-5,3.526239348503685e-8,0.001399180229735303,-3.873936055813441e-5,3.5221074317918304e-8,0.0013994701906148062,-3.861521125226919e-5,3.5128449985403174e-8,0.0013996740998213511,-3.845410205611195e-5,3.501191367250836e-8,0.0013997808979702491,-3.830798334251088e-5,3.490787420794603e-8,0.0013998068841861602,-3.822734029112152e-5,3.485117466616385e-8,0.0013997912690781416,-3.824484084870901e-5,3.486381492238321e-8,0.001399782875381604,-3.836511152067367e-5,3.494805808686753e-8,0.0013998239209614296,-3.856545057793629e-5,3.508720829151086e-8,0.0013999383452429608,-3.880618248898522e-5,3.5253069111989446e-8,0.001400128687982977,-3.9044513556967366e-5,3.5415721677933286e-8,0.0014003803140351105,-3.924559928935504e-5,3.555119946742358e-8,0.0014006688652410718,-3.938796884383357e-5,3.564509648433299e-8,0.0014009672459019793,-3.946401158692379e-5,3.569268613464028e-8,0.0014012504631784645,-3.9477773714654874e-5,3.5697219627372335e-8,0.0014014983378744935,-3.9442025791079544e-5,3.566783351875651e-8,0.0014016968485090753,-3.937562123845998e-5,3.561776933093947e-8,0.0014018389311078144,-3.930135009856592e-5,3.556297869454529e-8,0.0014019252611881805,-3.924395351028988e-5,3.552079791655267e-8,0.0014019650674987158,-3.922771502573723e-5,3.550823547292913e-8,0.0014019765254487317,-3.927316184126799e-5,3.5539561321083074e-8,0.0014019859072127623,-3.939286678870541e-5,3.562326047613582e-8,0.0014020245683540645,-3.9587049026522654e-5,3.57589225433063e-8,0.0014021232793080098,-3.984050350448809e-5,3.5935183683834784e-8,0.0014023045619820167,-4.0122876368864325e-5,3.613011664758931e-8,0.001402575188517273,-4.0393711578013267e-5,3.631499515737404e-8,0.0014029218430838034,-4.0611873294491905e-5,3.6461068646827724e-8,0.0014033123169753285,-4.074679499372091e-5,3.654749216388009e-8,0.0014037026283073234,-4.078780138232347e-5,3.6567752091281347e-8,0.0014040481592061073,-4.074819558912667e-5,3.653228462529379e-8,0.0014043154629272954,-4.0662606574106574e-5,3.646629348386904e-8,0.0014044912857379814,-4.057825582912705e-5,3.640333363998543e-8,0.001404586199481951,-4.054249152292174e-5,3.6376420565956945E-08,0.0014046315916832204,-4.059001163717845e-5,3.640913312668297e-8,0.0014046706036646942,-4.073363552405963e-5,3.650939734711049e-8,0.0014047457709805932,-4.096173679938644e-5,3.6668033280187714e-8,0.0014048875975041877,-4.1243138982900314e-5,3.686248986601918e-8,0.0014051079231287907,-4.153727189609017e-5,3.706412048229687e-8,0.0014053996891925462,-4.180543919169627e-5,3.724605723962737e-8,0.0014057418851642401,-4.201928520354164e-5,3.7388982979293707e-8,0.0014061067325829505,-4.216459310863377e-5,3.748357386154352e-8,0.0014064662792454632,-4.2240904034702006e-5,3.75300453375767e-8,0.001406796935332708,-4.225873123662221e-5,3.753610982343233e-8,0.0014070818711074016,-4.223609237701761e-5,3.7514565091294765e-8,0.0014073119283782146,-4.219538055815336e-5,3.748118402098386e-8,0.0014074858454996213,-4.216086923191445e-5,3.7453036902211475e-8,0.0014076103837110468,-4.215657537536124e-5,3.744699428145286e-8,0.001407700482867457,-4.2203893189522455e-5,3.7477990165415446e-8,0.0014077790394113716,-4.231848459825597e-5,3.755673767593618e-8,0.0014078754676845311,-4.250633958081457e-5,3.768691664581742e-8,0.0014080219967517041,-4.275967059593405e-5,3.7862358742113034e-8,0.0014082470158322466,-4.305438268393406e-5,3.8065444478173206e-8,0.0014085662107764442,-4.3351709842482535e-5,3.826846229183665e-8,0.0014089744868300872,-4.360598119993927e-5,3.843922404533621e-8,0.0014094431536157055,-4.377765422595991e-5,3.8550288702544655e-8,0.0014099256069116926,-4.384699363489847e-5,3.8588547143931624e-8,0.001410370621965012,-4.3822017616625005e-5,3.8560684416864574e-8,0.0014107379906385569,-4.373660777036701e-5,3.8491618344667396e-8,0.001411009964557524,-4.363969764258664e-5,3.841657689536917e-8,0.0014111946000197385,-4.3580512043394426e-5,3.8370420063415034e-8,0.0014113211867777273,-4.359545857298468e-5,3.837829828573306e-8,0.0014114306461733982,-4.3700232323209964e-5,3.8450239351540594e-8,0.001411564408632792,-4.388818610139138e-5,3.858035161105931e-8,0.0014117547305501578,-4.4134232812283986e-5,3.874997182226532e-8,0.0014120184750084578,-4.440248212920195e-5,3.8933324817321076e-8,0.0014123552829552618,-4.4655279826922307e-5,3.910396017989396e-8,0.0014127498958597165,-4.4861304314633954e-5,3.924032595412258e-8,0.0014131773611926266,-4.500092974261656e-5,3.932930729967511e-8,0.0014136092759243295,-4.5068124233728125e-5,3.9367328715653395e-8,0.001414019350464863,-4.50693223258045e-5,3.9359414083827914e-8,0.001414387280570928,-4.5020436860496765e-5,3.931705416718012e-8,0.0014147007530842784,-4.4943253683445574e-5,3.925572649703533e-8,0.0014149560140847756,-4.486209219785531e-5,3.919262101512192e-8,0.0014151576551419522,-4.4801074437002196e-5,3.914474595500056e-8,0.001415318136201093,-4.478183557739158e-5,3.912726793698288e-8,0.0014154572003696824,-4.482122856836196e-5,3.9151802563573214e-8,0.0014156009001108517,-4.492859041749618e-5,3.9224425325897754e-8,0.0014157795097893533,-4.5102449376290346e-5,3.93433918158505e-8,0.0014160233109937125,-4.532727500167816e-5,3.94970098303655e-8,0.0014163555567608258,-4.557201265798743e-5,3.96628298780135e-8,0.0014167833913719533,-4.579313198730899e-5,3.980996986060289e-8,0.0014172901012929602,-4.594441145983626e-5,3.990606550755613e-8,0.0014178341748209257,-4.599235373069634e-5,3.9928088314464635e-8,0.0014183591944381855,-4.593096157451421e-5,3.987268351609923e-8,0.0014188124373602864,-4.5787093578951006e-5,3.975984439233655e-8,0.001419163393834719,-4.561185313227637e-5,3.9626636645945325e-8,0.0014194126920989531,-4.5462152420401115e-5,3.951386849890556e-8,0.0014195882504336435,-4.5382171232237414e-5,3.945270542300551e-8,0.0014197329253106763,-4.539256577330823e-5,3.9456983564371725e-8,0.0014198906236090039,-4.548923231726588e-5,3.952257759491028e-8,0.001420095771986858,-4.5648857684138e-5,3.963175850856077e-8,0.0014203677362581296,-4.5837385340540104e-5,3.975959325884974e-8,0.0014207096597213865,-4.601850510949015e-5,3.988016811818957e-8,0.0014211104809135435,-4.616063637726872e-5,3.9971495331700885e-8,0.0014215489510336552,-4.624177480943514e-5,4.001871904464167e-8,0.0014219986351035052,-4.6251956591088596e-5,4.0015574979438314e-8,0.0014224329376801295,-4.619339291718908e-5,3.996426457805398e-8,0.001422829353219783,-4.607871301987465e-5,3.9874120697775513e-8,0.0014231724530763103,-4.592798447099774e-5,3.9759530620922137e-8,0.0014234554326269762,-4.57652124151591e-5,3.9637548056577846e-8,0.0014236803642659415,-4.561496504861187e-5,3.952556952558051e-8,0.0014238575838519927,-4.5499512314608026e-5,3.943929979142778e-8,0.0014240046262760098,-4.543644346492547e-5,3.9390987574810174e-8,0.0014241448474782898,-4.543650107068099e-5,3.938780661528568e-8,0.0014243055769598875,-4.55014025622324e-5,3.943030334635427e-8,0.0014245153230789524,-4.562160361393435e-5,3.951093333991738e-8,0.0014247992679477627,-4.5774516750711624e-5,3.9613026810845106e-8,0.0014251725776000539,-4.592471607435623e-5,3.97111673534239e-8,0.0014256324150758487,-4.6028499832087334e-5,3.9774539919194244e-8,0.0014261519278773282,-4.604466942670059e-5,3.97745103455597e-8,0.0014266816106519023,-4.595018557846401e-5,3.9695557904295956e-8,0.0014271621257017225,-4.575388705227969e-5,3.9544859389287236e-8,0.0014275457311608392,-4.549845458283125e-5,3.935358890200528e-8,0.001427815306107102,-4.524605002091276e-5,3.916657774531871e-8,0.0014279894860666584,-4.505443172790813e-5,3.9025101307670685e-8,0.001428111845943068,-4.4957151971777735e-5,3.895259664595886e-8,0.0014282324457039898,-4.4956997998443266e-5,3.8950037799349965e-8,0.0014283921152246375,-4.5031813061035744e-5,3.9000405529012745e-8,0.001428614503799861,-4.514594302658012e-5,3.907728510090153e-8,0.0014289052039444517,-4.526123102336767e-5,3.915303573565249e-8,0.0014292549887714064,-4.5344780633131716e-5,3.9204408290150735e-8,0.0014296445351593818,-4.537328317671618e-5,3.921546485399938e-8,0.0014300491927835234,-4.533479827914965e-5,3.917854634066426e-8,0.0014304433224275918,-4.522881772940035e-5,3.909403114722347e-8,0.001430804033341362,-4.5065037434135e-5,3.896929881664266e-8,0.001431114134170649,-4.486114602985143e-5,3.8817147411994384e-8,0.001431364173594574,-4.463995090524377e-5,3.8653843304944497e-8,0.001431553477665542,-4.4426110315797016e-5,3.8496905092415785e-8,0.0014316900992935974,-4.4242818950062476e-5,3.8362786478080485e-8,0.0014317897941557708,-4.410886020323244e-5,3.8264727869013804e-8,0.0014318743099349634,-4.403620954390451e-5,3.8210949087253464e-8,0.0014319691565770345,-4.402814004867514e-5,3.8203232744223565e-8,0.0014321008288139233,-4.407781633250867e-5,3.823596615193787e-8,0.0014322933132242908,-4.4167493057523215e-5,3.829575167824442e-8,0.0014325635783059797,-4.426874231918825e-5,3.8361828243839776e-8,0.0014329159984174987,-4.4344806916418694e-5,3.8407962919808685e-8,0.0014333367610415697,-4.435666435111393e-5,3.840682171688473e-8,0.0014337910720800594,-4.4273697098380086e-5,3.833742616530986e-8,0.0014342273731959762,-4.408716016137151e-5,3.819450047412489e-8,0.0014345914434781843,-4.382020957560829e-5,3.79954130449742e-8,0.0014348470970175808,-4.352582193219588e-5,3.7778581483576264e-8,0.0014349925697684392,-4.326902649537983e-5,3.759070188014273e-8,0.0014350613489107376,-4.3101343714786775e-5,3.746837044387351e-8,0.0014351064354383872,-4.304237393549526e-5,3.74248666578265e-8,0.0014351786308693037,-4.3077895175319485e-5,3.744893988723652e-8,0.001435311120145527,-4.3171511316731736e-5,3.751349253798805e-8,0.001435514983638263,-4.3280124103506245e-5,3.7587031889058094e-8,0.0014357827442222175,-4.33657644870084e-5,3.764234602726513e-8,0.0014360950176135047,-4.340168328161423e-5,3.766080981694061e-8,0.0014364268982985113,-4.3373918763642415e-5,3.7633249662091946e-8,0.0014367527843651797,-4.328039694830718e-5,3.755898187846603e-8,0.0014370497401466067,-4.312909776010434e-5,3.7444270646673757e-8,0.0014372999251545048,-4.29358844997081e-5,3.730070931627148e-8,0.0014374923724849156,-4.2722063680720855e-5,3.71435536648068e-8,0.0014376241618117747,-4.251167408721932e-5,3.6989920136254e-8,0.0014377009262072043,-4.2328490779715396e-5,3.6856738666764285e-8,0.0014377364788064743,-4.2192837572660376e-5,3.675846863045126e-8,0.0014377513692969844,-4.2118585485798534e-5,3.6704856042820815e-8,0.001437770451447845,-4.2110786884528316e-5,3.669912913273134e-8,0.0014378196981251372,-4.21642244916051e-5,3.6736925449717485e-8,0.0014379224790505686,-4.226308798281828e-5,3.680616377621557e-8,0.0014380955334853483,-4.238200534606743e-5,3.6888012155040675e-8,0.0014383449114242503,-4.2488670304332985e-5,3.6959034935254815e-8,0.0014386623333420816,-4.254848883471872e-5,3.69946922542799e-8,0.001439023053413255,-4.253172746547254e-5,3.6974437223496824e-8,0.00143938722951177,-4.242284653717159e-5,3.688818009449981e-8,0.001439707137154768,-4.222971419566938e-5,3.674257304428873e-8,0.0014399409659193428,-4.198781671588203e-5,3.656376280190634e-8,0.001440069459918548,-4.1753765044836575e-5,3.6392606119182155e-8,0.001440106597622063,-4.158679104094984e-5,3.6271381464065536e-8,0.0014400959148385573,-4.1525832600832144e-5,3.622739349459521e-8,0.0014400927711180566,-4.15752438414865e-5,3.626283531393904e-8,0.0014401429180055368,-4.170699406909172e-5,3.635659541946491e-8,0.0014402691460889587,-4.1875615871244114e-5,3.6475292110604114e-8,0.0014404700687453444,-4.20353985030447e-5,3.658586574851633e-8,0.0014407270427852904,-4.215187194132588e-5,3.666388371140973e-8,0.001441013130719309,-4.220595818615349e-5,3.6696359973947585e-8,0.0014413003263376396,-4.219308157288958e-5,3.6680826446642095e-8,0.001441564033217401,-4.212012924590863e-5,3.662287749152233e-8,0.0014417853809006085,-4.2002181831792545e-5,3.653368462176073e-8,0.0014419523959797523,-4.185969337729201e-5,3.642799751790315e-8,0.0014420606999227586,-4.171600435622608e-5,3.632248964966348e-8,0.0014421139198980406,-4.159487387718513e-5,3.623411674528073e-8,0.0014421237028206181,-4.151777055500738e-5,3.6178218018737015e-8,0.0014421089934266833,-4.150085444996026e-5,3.6166287820635e-8,0.0014420941576250958,-4.155198804294638e-5,3.620370937664565e-8,0.0014421057972856064,-4.166845338362705e-5,3.628802792965738e-8,0.0014421685219863218,-4.183607922736202e-5,3.6408352528175015e-8,0.0014423002757643633,-4.203032172674412e-5,3.65463031098458e-8,0.0014425080608542666,-4.22195472333642e-5,3.667862994977846e-8,0.001442784991572208,-4.237031728117714e-5,3.6781252110025435e-8,0.0014431095090614871,-4.245409762385614e-5,3.6834180674033206e-8,0.0014434474962299161,-4.245454297942441e-5,3.682664986919906e-8,0.0014437579597159325,-4.237398291446551e-5,3.676149381934002e-8,0.0014440024218877274,-4.2236870836770005e-5,3.665727124065034e-8,0.0014441566692500326,-4.208735480065546e-5,3.654623465415403e-8,0.0014442210777839057,-4.197894413823149e-5,3.646678154580181e-8,0.0014442238639085503,-4.1957657259825583e-5,3.6451395741224957e-8,0.001444213177633174,-4.204514955028633e-5,3.6514704020701185e-8,0.0014442400148779796,-4.2230738483301597e-5,3.664799820937176e-8,0.001444340327612597,-4.2477002171248194e-5,3.6823531208232587E-08,0.0014445252831045401,-4.273521305190709e-5,3.700583739358809e-8,0.001444782633063003,-4.296167146369278e-5,3.716358146341754e-8,0.0014450854085491184,-4.312785702347721e-5,3.727679374827056e-8,0.001445401951167018,-4.322288651739154e-5,3.733842340885731e-8,0.001445703365975638,-4.3250813436262515e-5,3.735212787958807e-8,0.0014459674945798882,-4.32260760357198e-5,3.73288004390637e-8,0.001446180300220262,-4.316923443732345e-5,3.728344873718978e-8,0.0014463359582635035,-4.310370309668452e-5,3.723292189167686e-8,0.0014464365687389773,-4.305328850624032e-5,3.719426687269874e-8,0.0014464918465855834,-4.304002473972689e-5,3.718325365119318e-8,0.0014465186728166825,-4.308181819575483e-5,3.721266618215463e-8,0.0014465400355141305,-4.3189687170519945e-5,3.7290221487352145e-8,0.0014465827531187007,-4.336489798552785e-5,3.741640893771544e-8,0.0014466736056468219,-4.3596841039752464e-5,3.758294229173246e-8,0.0014468340922974643,-4.386279199894946e-5,3.77726972029659e-8,0.0014470748301542683,-4.413057535440872e-5,3.7961848327240886e-8,0.0014473912922101449,-4.4364408720834884e-5,3.812432810558878e-8,0.0014477626657607462,-4.453297875666711e-5,3.8237820661230854e-8,0.001448154854433801,-4.461771816489685e-5,3.828974037644961e-8,0.0014485274030723117,-4.461890202134063e-5,3.8281447589952853e-8,0.0014488429638407447,-4.455758179245559e-5,3.822931479912126e-8,0.001449077126957026,-4.447225398864734e-5,3.816195570741389e-8,0.001449226023125882,-4.441032020245069e-5,3.8113794316332475e-8,0.0014493090755652274,-4.441579020404974e-5,3.8116125833806295e-8,0.001449364947092221,-4.451633994090186e-5,3.818794133287042e-8,0.0014494407057380814,-4.471426477041007e-5,3.832972073058778e-8,0.0014495774144823556,-4.498555350055323e-5,3.8523117853081915e-8,0.0014497978450341655,-4.5288121537755064e-5,3.873716648698755e-8,0.001450101396289851,-4.557563857325436e-5,3.89383696430426e-8,0.0014504674700356046,-4.581077178440381e-5,3.9100206897818924e-8,0.001450864329811925,-4.59729347684755e-5,3.920855010190983e-8,0.001451258767715561,-4.605934108050844e-5,3.92621859121156e-8,0.001451623153623208,-4.608136827590191e-5,3.926997648012008e-8,0.0014519388956488832,-4.605924560935e-5,3.9246910208725725e-8,0.0014521971379447417,-4.6017229535460886e-5,3.9210629613232204e-8,0.0014523980389310705,-4.5980057149587095e-5,3.917896492879653e-8,0.0014525496603379358,-4.597051953376308e-5,3.9168276920308264e-8,0.0014526669574361673,-4.600759430739576e-5,3.9192135619664394e-8,0.0014527708281076104,-4.610453020282936e-5,3.9259884840940946e-8,0.0014528867245701964,-4.626654176388048e-5,3.9374895639106777e-8,0.0014530421048613528,-4.648831416903428e-5,3.9532731387203335e-8,0.0014532621468013511,-4.6752190201937326e-5,3.971990995005398e-8,0.0014535637916342824,-4.7028515568426274e-5,3.9914326393312656e-8,0.0014539493947660874,-4.727971460801391e-5,4.008841173852169e-8,0.0014544025921314587,-4.7468597955633217e-5,4.021531201044032e-8,0.0014548892922685616,-4.7569142347220584e-5,4.027675511472258e-8,0.0014553650558184153,-4.7575810436338764e-5,4.026972977663235e-8,0.0014557870851216873,-4.750717265528638e-5,4.020889782847651e-8,0.0014561265502366723,-4.7401772022354576e-5,4.012327246018735e-8,0.0014563767220609832,-4.730757137609055e-5,4.004821937536077e-8,0.00145655435776092,-4.726880621379515e-5,4.001569186801683e-8,0.001456694463586125,-4.73144514864003e-5,4.004587627083997e-8,0.0014568404770532691,-4.7451327393656046e-5,4.0142460997834714e-8,0.0014570327641523222,-4.7663290283813975e-5,4.029246947753112e-8,0.001457298519145466,-4.7916441311999795e-5,4.047043105356473e-8,0.0014576457793189451,-4.816871716330359e-5,4.064555627563837e-8,0.0014580630692166065,-4.8380870254886153e-5,4.07896946312839e-8,0.0014585242916217804,-4.85254475628263e-5,4.0883660976549706e-8,0.0014589966823086494,-4.859135992178545e-5,4.092028278391199e-8,0.0014594488895383127,-4.8583561201735886e-5,4.0903922552317477e-8,0.0014598568660654338,-4.851917902858856e-5,4.084752107398645e-8,0.001460206718017994,-4.8422238333548e-5,4.0768741953613706e-8,0.0014604949812930131,-4.831876578154884e-5,4.068648768877478e-8,0.0014607274013576004,-4.823314160900414e-5,4.0618350180221016e-8,0.0014609172150457537,-4.8185712318530414e-5,4.057893429465176e-8,0.001461083502746424,-4.8191179258434105E-05,4.0578670798416085e-8,0.001461249671904525,-4.82571706133708e-5,4.0622715345642995e-8,0.001461441693727446,-4.838261929000545e-5,4.07097296081658e-8,0.0014616854233344243,-4.8556014057686534e-5,4.083066061163576e-8,0.0014620023267894015,-4.8754249269082786e-5,4.0968058990523775e-8,0.0014624034953483796,-4.894358809285292e-5,4.109698020827211e-8,0.0014628831941533296,-4.908464338861261e-5,4.118875936509696e-8,0.0014634150433660768,-4.914226299762998e-5,4.121824393937142e-8,0.0014639548020531532,-4.9098224861191336e-5,4.117296927439143e-8,0.001464451637979818,-4.8961091183785824e-5,4.106020733296679e-8,0.0014648646915946838,-4.8766820370606e-5,4.090722801199529e-8,0.0014651772883869003,-4.8568009313809076e-5,4.075319349404685e-8,0.0014654017214941388,-4.8416426777365386e-5,4.063612262558724e-8,0.0014655731149098806,-4.834715390556542e-5,4.05811408271586e-8,0.0014657366598345033,-4.8370472978448067e-5,4.0594648027202523e-8,0.0014659342958094506,-4.847253437725393e-5,4.066516335293664e-8,0.0014661950114605521,-4.862215666828612e-5,4.076876008564538e-8,0.0014665301910791108,-4.8780249807602064e-5,4.0876316291687736e-8,0.0014669336173157724,-4.8909088442915184e-5,4.096041061837196e-8,0.0014673849869394323,-4.89797010783182e-5,4.10005813588427e-8,0.0014678556191269404,-4.8976435201010984e-5,4.0986359543432826e-8,0.0014683149714162325,-4.889830880085964e-5,4.091793502517985e-8,0.0014687365529222206,-4.875735290426732e-5,4.080472681276175e-8,0.0014691021142846357,-4.857481423921316e-5,4.0662543710692137e-8,0.0014694036337962362,-4.8376450354823765e-5,4.0510213167388694e-8,0.0014696432745798936,-4.8188046898087444e-5,4.0366429937764576e-8,0.0014698319277800106,-4.803190530328035e-5,4.0247286006004545e-8,0.0014699871102827962,-4.7924526915939426e-5,4.0164595796703556e-8,0.0014701307848855516,-4.787522027490336e-5,4.012482396092963e-8,0.0014702872622128149,-4.788517195205734e-5,4.012834089633514e-8,0.0014704809975428358,-4.794666693736669e-5,4.0168855709075365e-8,0.0014707338344027386,-4.804244009905834e-5,4.0233062784634995e-8,0.0014710611213139102,-4.814566107532364e-5,4.030084085232558e-8,0.0014714665413726273,-4.822181569590968e-5,4.034683134470572e-8,0.001471936732554558,-4.823419676772928e-5,4.0344537351810816e-8,0.0014724385787785134,-4.815393883152968e-5,4.02735824939934e-8,0.0014729232921461939,-4.7972708991935915e-5,4.012881131104992e-8,0.001473339733380658,-4.771194684085152e-5,3.99268721108642e-8,0.0014736534482333627,-4.7420811459529796e-5,3.97045678271898e-8,0.0014738614631978186,-4.716016424666695e-5,3.9506949528936975e-8,0.0014739933492919856,-4.697982067329245e-5,3.937043540172194e-8,0.0014740979744279096,-4.690167112469379e-5,3.931032980142313e-8,0.0014742246024554207,-4.691644256644111e-5,3.9318604552850936e-8,0.0014744082651071803,-4.69922299640802e-5,3.9370563974310175e-8,0.0014746637140043946,-4.708756851895923e-5,3.943489870131204e-8,0.0014749866046875014,-4.7162958123676244e-5,3.948243157993727e-8,0.001475358543065385,-4.71883294842356e-5,3.949159654624633e-8,0.001475753210166725,-4.714652817698946e-5,3.945074236392933e-8,0.001476142078096254,-4.7033888847950614e-5,3.9358189832320374e-8,0.0014764992123982724,-4.685887934392134e-5,3.9220928510260014e-8,0.0014768049713061416,-4.663938791887539e-5,3.905248086942313e-8,0.001477048391317066,-4.639911917690382e-5,3.8870289051615004e-8,0.0014772281442441146,-4.61636413222774e-5,3.86929540003015e-8,0.0014773521218631534,-4.595660324837137e-5,3.8537604231317574e-8,0.0014774358574483667,-4.579659133441228e-5,3.841765492707048e-8,0.0014775001956065402,-4.569496823083304e-5,3.8341186816552856e-8,0.0014775686820781154,-4.565470129067433e-5,3.830999686167372e-8,0.0014776649243166784,-4.566994456347111e-5,3.8319233095593914e-8,0.0014778099359220231,-4.5726192560117234e-5,3.83575570353092e-8,0.0014780193244124584,-4.580097117160524e-5,3.840782891730723e-8,0.0014783000450939625,-4.5865328797617776e-5,3.8448445201550915e-8,0.0014786467079729625,-4.588696439857752e-5,3.845582251437362e-8,0.0014790384080720245,-4.583611242343526e-5,3.840873944588172e-8,0.0014794383527260398,-4.56945594107753e-5,3.82947864626867e-8,0.001479799398450005,-4.5465999161076066e-5,3.811769435150879e-8,0.0014800774121277783,-4.518250806512075e-5,3.790185132520664e-8,0.0014802492942168032,-4.489995809258601e-5,3.768879845012064e-8,0.0014803258879004637,-4.467961171000656e-5,3.7523621216932424e-8,0.0014803496588216847,-4.456364916372832e-5,3.7436882425543227E-08,0.0014803767789849922,-4.455914717389837e-5,3.743285124826617e-8,0.00148045471663273,-4.463944669785187e-5,3.749072374826842e-8,0.0014806079903739232,-4.4759080332929866e-5,3.757599995374444e-8,0.0014808363575325631,-4.4871298219932226e-5,3.7653765328709984e-8,0.0014811213748755097,-4.49400791113898e-5,3.7697698950566665e-8,0.0014814353063795221,-4.494494148911797e-5,3.769349125262831e-8,0.0014817486607833878,-4.488064489949951e-5,3.7638296039217246e-8,0.0014820352591590176,-4.475444899156155e-5,3.75383511170801e-8,0.001482275222988769,-4.458271568201399e-5,3.740624045556785e-8,0.0014824566343186552,-4.438752806725547e-5,3.7258364186440963e-8,0.0014825762933425046,-4.41933973514123e-5,3.711263205430016e-8,0.0014826396781233982,-4.402407385189993e-5,3.698628868785702e-8,0.0014826601038704105,-4.3899537486014864e-5,3.689381745950238e-8,0.0014826570290835308,-4.3833355408042506e-5,3.684500249109746e-8,0.0014826535665252642,-4.383076384824262e-5,3.684342893133268e-8,0.0014826734964349505,-4.388776027353641e-5,3.688571137475423e-8,0.0014827381250709867,-4.3991250197185465e-5,3.696157870415823e-8,0.0014828632277558774,-4.4120225732295084e-5,3.7054853705114773e-8,0.0014830562790585913,-4.424796254416029e-5,3.7145299091021524e-8,0.001483314114902658,-4.4345226853738956e-5,3.721123064884487e-8,0.0014836212427355765,-4.438471351759688e-5,3.723292906691934e-8,0.0014839495880320053,-4.434704884177869e-5,3.719700534277648e-8,0.0014842612053440878,-4.4227969750309367e-5,3.7101437221589655e-8,0.001484515578411819,-4.4044706083483356e-5,3.6959930289161086e-8,0.0014846818321571568,-4.383767436946015e-5,3.6802887599284104e-8,0.001484752665298912,-4.366282494601175e-5,3.6671649941767425e-8,0.0014847523079773632,-4.357345179251354e-5,3.6605110282143873e-8,0.0014847306685902028,-4.3598461730291396e-5,3.662379044416523e-8,0.0014847439416985908,-4.372996532663204e-5,3.672084767057359e-8,0.001484832455576805,-4.392834159757466e-5,3.6866053246575335e-8,0.0014850084524969315,-4.414052139172515e-5,3.701958292803764e-8,0.0014852579225742377,-4.4319394962506785e-5,3.7146574635816525e-8,0.00148555111690797,-4.443521318072178e-5,3.7225576915926685e-8,0.0014858540251273446,-4.447773434048518e-5,3.724992857383376e-8,0.0014861364543161625,-4.445270363925244e-5,3.722482225495067e-8,0.0014863760913723298,-4.437656318307988e-5,3.716309655277369e-8,0.0014865597532513933,-4.427164451826376e-5,3.708154822513582e-8,0.0014866832683675857,-4.4162460074345484e-5,3.699824191460888e-8,0.0014867508559287582,-4.407282323694022e-5,3.693054466535894e-8,0.0014867742340000237,-4.402339782503651e-5,3.68934712540527e-8,0.0014867713714220555,-4.402943420367354e-5,3.689807422058526e-8,0.0014867646564762282,-4.409867285281513e-5,3.6949844467746125e-8,0.0014867782740302412,-4.422973621937711e-5,3.7047415402730984e-8,0.0014868348754921309,-4.441152508594255e-5,3.718204520461165e-8,0.0014869519465962582,-4.462400182095811e-5,3.733824048865543e-8,0.0014871384186216602,-4.484053098879151e-5,3.749566462993671e-8,0.0014873921480441546,-4.5031733174503954e-5,3.7632239067973675e-8,0.0014876988747097991,-4.517047600970056e-5,3.772804673560034e-8,0.0014880330851069787,-4.5237407062414714e-5,3.776948065811721e-8,0.0014883611336936045,-4.522638867386191e-5,3.7753106366925946e-8,0.0014886470419661934,-4.5148829423299135e-5,3.768853679617695e-8,0.0014888610099375744,-4.503511107630251e-5,3.75991142701746e-8,0.0014889893734640611,-4.493078727593386e-5,3.7518833390943256e-8,0.0014890426802024238,-4.4885939658503095e-5,3.74844077895564e-8,0.0014890568559620368,-4.493900359979849e-5,3.752344755667185e-8,0.0014890836459080803,-4.5101175184416406e-5,3.7643181361237684e-8,0.001489172305795643,-4.535029512050693e-5,3.7826206234394064e-8,0.0014893513815948645,-4.5639131365739326e-5,3.803685162170241e-8,0.0014896203853677792,-4.591379586939746e-5,3.8234980089391865e-8,0.0014899543663838013,-4.613185728141613e-5,3.8389462478218916e-8,0.0014903162297077394,-4.6271946349084726e-5,3.848520377485263e-8,0.0014906691385107214,-4.6333741604474694e-5,3.852289537208366e-8,0.0014909844428688587,-4.6332267253878814e-5,3.851449641139075e-8,0.0014912446994979787,-4.629096295265064e-5,3.8477884251820716e-8,0.001491443475023993,-4.623604922293549e-5,3.843262815520471e-8,0.0014915838036451312,-4.61927449105687e-5,3.8397284898482245e-8,0.0014916764513131834,-4.618284796155863e-5,3.838776175182558e-8,0.0014917383357409837,-4.622298504810592e-5,3.8416126988273096e-8,0.0014917909428913139,-4.632303584535767e-5,3.848944739748476e-8,0.0014918583550758398,-4.648458412369112e-5,3.860856466449232e-8,0.0014919645095770773,-4.669969166698596e-5,3.8767106301308565e-8,0.001492129594339425,-4.695065290037247e-5,3.895130296913219e-8,0.0014923659795207224,-4.721144655663761e-5,3.914118664687933e-8,0.0014926745732702724,-4.745133715731877e-5,3.931347861780057e-8,0.0014930428020581202,-4.764050267803905e-5,3.944599080200351e-8,0.0014934453287540244,-4.77567381989998e-5,3.952272977792478e-8,0.0014938479976421455,-4.7791615726440825e-5,3.9538419803086526e-8,0.0014942145959709434,-4.775437268653611e-5,3.950114664854367e-8,0.0014945152548361581,-4.7672147717775885e-5,3.943216537025932e-8,0.0014947347496844735,-4.758571958330954e-5,3.936237614997539e-8,0.0014948784839529095,-4.754071729882442e-5,3.9325587712150906e-8,0.001494973688060228,-4.7575580700830986e-5,3.934960606065222e-8,0.001495063893699758,-4.7709339668887554e-5,3.9447410821275483e-8,0.0014951967819727924,-4.793386974666786e-5,3.961177012530231e-8,0.0014954089548056488,-4.82150113356529e-5,3.9816407071216556e-8,0.001495713972368483,-4.8503439552528306e-5,4.0024278257678855e-8,0.0014960992299929698,-4.875088216767253e-5,4.0199671339311314e-8,0.0014965325627533485,-4.892426755697233e-5,4.031863181757441e-8,0.0014969742965597005,-4.9012244353112056e-5,4.037361715514292e-8,0.0014973887060458133,-4.90234527916337e-5,4.037196030438772e-8,0.0014977509975768778,-4.897987925534544e-5,4.033069659995429e-8,0.0014980493699429142,-4.8909370842569586e-5,4.0270872530960104e-8,0.0014982838272042372,-4.8839785143966184e-5,4.0213214367086265e-8,0.0014984636893112296,-4.879533379597899e-5,4.017552829673121e-8,0.0014986050564438516,-4.879459745805125e-5,4.0171351190536136e-8,0.0014987286878216618,-4.884940264365551e-5,4.020917276631506e-8,0.0014988581486848397,-4.8963892845157507e-5,4.029171690125393e-8,0.0014990177337836207,-4.9133541633318104e-5,4.0415144161886566e-8,0.0014992296650089489,-4.934439725353427e-5,4.056846910653133e-8,0.0014995103608385159,-4.957328780427341e-5,4.073379081419653e-8,0.0014998661313054954,-4.978992849651283e-5,4.0888033317214166E-08,0.001500289438846751,-4.996169395570395e-5,4.100670227701081e-8,0.0015007575640223773,-5.00609271009138e-5,4.1069476582698656e-8,0.0015012354183340914,-5.0073132062903215e-5,4.106633523245191e-8,0.001501682931435136,-5.000313393611321e-5,4.10020124318666e-8,0.0015020653958463235,-4.9876318236111225e-5,4.089664152349184e-8,0.001502363510762478,-4.973362668651773e-5,4.078166708635209e-8,0.0015025796036362987,-4.9621359434477365e-5,4.06919240015438e-8,0.001502737788613337,-4.957881774687852e-5,4.0656280257301776e-8,0.0015028778851812186,-4.9627518948032364e-5,4.0689710099869005e-8,0.001503044775055048,-4.9765138003926926e-5,4.078912007859041e-8,0.001503276131990282,-4.9966042084288354e-5,4.093418214974257e-8,0.0015035921340975534,-5.0188522911167886e-5,4.109307745813918e-8,0.0015039904959644906,-5.038664086853307e-5,4.12314822617478e-8,0.0015044484479765602,-5.052272450607022e-5,4.1321828260849926e-8,0.0015049305867960681,-5.057627006151882e-5,4.1349724488542334e-8,0.0015053992671028003,-5.0546698588028124e-5,4.1315734395285215e-8,0.001505823682333701,-5.0450202162379264e-5,4.123276774522326e-8,0.0015061851264551991,-5.03131376162049e-5,4.1120991139124105e-8,0.00150647810650972,-5.0164985415371416e-5,4.100254562995308e-8,0.0015067085911635734,-5.003289045076868e-5,4.0897557578942296e-8,0.0015068910568689683,-4.9938339881018866e-5,4.0821788084939146e-8,0.0015070455081733843,-4.989557017837055e-5,4.078553560863914e-8,0.0015071949768719031,-4.991095762554463e-5,4.079319265895584e-8,0.0015073634330199596,-4.998270255847455e-5,4.0842964940455486e-8,0.001507573648758257,-5.0100484272582855e-5,4.092657881678172e-8,0.001507844474226869,-5.024531275080717e-5,4.1029213145852093E-08,0.0015081872475477102,-5.039029477878423e-5,4.113020982278904e-8,0.001508601639381369,-5.0503348351200574e-5,4.1205288990591655e-8,0.0015090721800536042,-5.0552825964399286e-5,4.123090271547341e-8,0.0015095677542445187,-5.051598845732162e-5,4.119061726808571e-8,0.0015100464398749296,-5.0388137396494456e-5,4.1081869583940654e-8,0.0015104661524490966,-5.0188150732697904e-5,4.091992886992478e-8,0.0015107980562968522,-4.995626598255443e-5,4.073597315450068e-8,0.0015110369884425087,-4.974323096834382e-5,4.056865503257804e-8,0.0015112037636235288,-4.9594689096187027e-5,4.0452143784550536e-8,0.0015113382538688342,-4.9537390122333774e-5,4.040571885063075e-8,0.001511486651518908,-4.9572491390367476e-5,4.0428949376900265e-8,0.0015116882343063284,-4.9677288522526345e-5,4.0503412055625985e-8,0.001511965832908493,-4.981328246977489e-5,4.0599203239587485e-8,0.0015123218678560742,-4.993712667865752e-5,4.0683458185044255e-8,0.0015127398774388951,-5.001120491259384e-5,4.072833176366586e-8,0.0015131902459503254,-5.0011430442294444e-5,4.0716651632460574e-8,0.0015136381639806527,-4.9930908725903795e-5,4.064433406034829e-8,0.0015140516272895985,-4.977923819466192e-5,4.051953249837382e-8,0.0015144075622012096,-4.9578319631606846e-5,4.035928102066704e-8,0.0015146949683276282,-4.9356355695184494e-5,4.0184938821169755e-8,0.0015149150502128804,-4.9141887980333486e-5,4.0017799643976816e-8,0.0015150791746275875,-4.895917584109024e-5,3.9875772118617474e-8,0.0015152057997848073,-4.8825388632539786e-5,3.977139653273003e-8,0.0015153173317295856,-4.874940504486354e-5,3.971098695425316e-8,0.0015154374095433952,-4.8731643689852686e-5,3.9694467703771245e-8,0.0015155886318726306,-4.876432642304724e-5,3.971551230211538e-8,0.0015157903988936615,-4.8831866635134174e-5,3.976183295261236e-8,0.0015160564336704537,-4.891150797550089e-5,3.9815759747989534e-8,0.001516391691608481,-4.8974788479225625e-5,3.985552106330658e-8,0.0015167888924818176,-4.899079602098747e-5,3.985786664037715e-8,0.0015172258993118245,-4.893217400965164e-5,3.9802659015735863e-8,0.0015176663030841539,-4.878381729040918e-5,3.967934665594565e-8,0.0015180658418397924,-4.855185669703154e-5,3.9493549812086156e-8,0.0015183852145058741,-4.8267882631723335e-5,3.927002879151628e-8,0.001518605245428821,-4.7983227159816685E-05,3.904816418536927e-8,0.0015187364109845078,-4.7752853667001454e-5,3.8869607112691156e-8,0.0015188162107197098,-4.76157007253304e-5,3.876330623471329e-8,0.0015188951081814535,-4.7581646967552716e-5,3.87356971621642e-8,0.0015190187423242043,-4.763095682004308e-5,3.877055536279872e-8,0.0015192148843438057,-4.7724206359166875e-5,3.883693164021174e-8,0.0015194889111096335,-4.7816122036906335e-5,3.890001525702813e-8,0.0015198265573875282,-4.78675190041975e-5,3.893034461914193e-8,0.0015202006147450764,-4.785267690604367e-5,3.8909281403952436e-8,0.0015205786058022936,-4.776206764521024e-5,3.883074987792664e-8,0.001520929655959892,-4.7601511265561416e-5,3.8700210594517606e-8,0.0015212297485279174,-4.73889457227636e-5,3.853192522081979e-8,0.001521464985636384,-4.714978616986874e-5,3.834534142739313e-8,0.001521632714070136,-4.691181862109943e-5,3.8161308626593714e-8,0.0015217407259916819,-4.6700544473304215e-5,3.7998737945680615e-8,0.001521805050737679,-4.653561112622005e-5,3.7872078917049705e-8,0.0015218469609350476,-4.6428620942574455e-5,3.77897496515343e-8,0.0015218898209953303,-4.638232433864213e-5,3.7753505077697286e-8,0.0015219562588472324,-4.63908829784902e-5,3.775855431522331e-8,0.0015220657852472567,-4.644073196168358e-5,3.779415592915643e-8,0.0015222326849345393,-4.6511768353575117e-5,3.78445580321092e-8,0.0015224639302797234,-4.6578917633677744e-5,3.789033821231449e-8,0.0015227569400496383,-4.6614434070743716e-5,3.791035015751786e-8,0.0015230973823843132,-4.659163295010869e-5,3.788469386599491e-8,0.0015234580899453059,-4.6490764418833046e-5,3.779915028577375e-8,0.0015238011301948635,-4.630679101973296e-5,3.765088713532935e-8,0.0015240852672769784,-4.6056717425461094e-5,3.7453737167092474e-8,0.001524279176362041,-4.578158370729293e-5,3.723946842777562e-8,0.0015243761207970313,-4.5537893273890615e-5,3.7051147789336374e-8,0.0015244012465784203,-4.537833811089991e-5,3.692846975976653e-8,0.0015244043069810233,-4.5330485030194646e-5,3.689159982476225e-8,0.001524440051851727,-4.5386093677926136e-5,3.693319329946158e-8,0.0015245475921702796,-4.550706901455292e-5,3.70231970685862e-8,0.001524739631177373,-4.564256280847005e-5,3.712221109997426e-8,0.0015250039821238194,-4.574645320979391e-5,3.719506196713576e-8,0.001525312469978232,-4.57880724817201e-5,3.7219009823727845e-8,0.0015256311465300198,-4.575529177708597e-5,3.71858758629502e-8,0.0015259283156329572,-4.5652460184988825e-5,3.710009588757813e-8,0.001526179490549331,-4.549604863952453e-5,3.697504333756095e-8,0.0015263698298762106,-4.5309863016883735e-5,3.682918922629797e-8,0.0015264948690534665,-4.5120549024834013e-5,3.668269874859717e-8,0.0015265600057452486,-4.495356643058214e-5,3.65545436819091e-8,0.0015265789603062382,-4.4829825029204026e-5,3.646015826369734e-8,0.0015265714591917814,-4.476317621887072e-5,3.640967597256171e-8,0.001526560393019653,-4.47588814097071e-5,3.6406785222506725e-8,0.0015265687425595057,-4.481319012855167e-5,3.6448328955322366e-8,0.001526616673386339,-4.491402171639455e-5,3.6524727155707175e-8,0.001526719088838322,-4.5042478706087005e-5,3.662110821247449e-8,0.001526883671120863,-4.517492388060347e-5,3.671899335520608e-8,0.001527109357997393,-4.528556689050531e-5,3.679846629243785e-8,0.0015273852648541443,-4.5349660451110904e-5,3.684080865883039e-8,0.0015276902649918051,-4.5347572784252786e-5,3.683168213824624e-8,0.0015279940023550515,-4.5269982630066084e-5,3.676496818810432e-8,0.001528260741500139,-4.5123660491407865e-5,3.664687940483986e-8,0.0015284573649040436,-4.493568923535388e-5,3.649883068748661e-8,0.0015285651819203082,-4.475224028990135e-5,3.6356268024786054e-8,0.001528591522529057,-4.462799322930828e-5,3.6260564495138095e-8,0.0015285733068809862,-4.4606708170989893e-5,3.6244339332635135e-8,0.0015285663015500417,-4.4701580903939586e-5,3.631667920617675e-8,0.001528623057978843,-4.4888075568297965e-5,3.645788182105769e-8,0.0015287721301055885,-4.511488889181742e-5,3.662804240559266e-8,0.0015290104785997134,-4.532567197125326e-5,3.678385405657058e-8,0.0015293104382067145,-4.547810886081325e-5,3.689331286542308e-8,0.0015296334898081117,-4.555238252513215e-5,3.6942127930790746e-8,0.0015299425822774475,-4.5549875508693376e-5,3.6932458321921016e-8,0.0015302094618059117,-4.5487012585997464e-5,3.687784149123152e-8,0.0015304173593234294,-4.538838777224406e-5,3.6797650641900755e-8,0.0015305608012845585,-4.5281191160702335e-5,3.6712741731269536e-8,0.0015306441945146152,-4.5191250244956506e-5,3.664253537729438e-8,0.0015306800306723414,-4.514019365633332e-5,3.660306514411148e-8,0.0015306868440561443,-4.5143317412885504e-5,3.660554118454364e-8,0.0015306868688130097,-4.5208046874071456e-5,3.665525950628058e-8,0.001530703372269813,-4.533304361844633e-5,3.675088279926432e-8,0.0015307577071024677,-4.550816475509205e-5,3.6884311766138235e-8,0.0015308663545292767,-4.5715530714938635e-5,3.7041438425744794e-8,0.001531038403461839,-4.5931705831679506e-5,3.7203859056823594e-8,0.0015312738096312358,-4.613076201647923e-5,3.7351380006003594e-8,0.001531562647587085,-4.628797631784266e-5,3.7465058196804165e-8,0.001531885540287841,-4.638388948223532e-5,3.753045447184219e-8,0.0015322154350115606,-4.6408424099129384e-5,3.75407624833672e-8,0.0015325210181051422,-4.636473481435046e-5,3.749952617090675e-8,0.0015327722562987192,-4.62720299113284e-5,3.742243109933671e-8,0.0015329482178092664,-4.616568661040811e-5,3.7337038635539955e-8,0.0015330459667584296,-4.60922941785365e-5,3.7278814888025735e-8,0.001533087023241133,-4.609795126881395e-5,3.728225619249699e-8,0.001533115983708838,-4.621153374983078e-5,3.736837190134323e-8,0.0015331876400693626,-4.643018459294151e-5,3.753391652633899e-8,0.0015333461088477486,-4.6716886718747485e-5,3.7749779963297116e-8,0.001533607077938741,-4.701413330082583e-5,3.797158062251958e-8,0.0015339536898771556,-4.7266463413301e-5,3.8156979046495933e-8,0.0015343469210881689,-4.7438804933053115e-5,3.827972461061156e-8,0.0015347420400233514,-4.7522609577066365e-5,3.833423468532848e-8,0.0015351018922789568,-4.75311913550837e-5,3.833175719045527e-8,0.0015354032268769953,-4.7490536847499134e-5,3.8293014468682244e-8,0.0015356372503282487,-4.7430749661384474e-5,3.8241437080403724e-8,0.0015358072060457936,-4.738020854009638e-5,3.819867181103716e-8,0.0015359252275494756,-4.736231090740194e-5,3.818223813016995e-8,0.0015360095332831896,-4.739380510817324e-5,3.820445815928393e-8,0.0015360820478136717,-4.748383499571379e-5,3.82718722773441e-8,0.001536166141831675,-4.763330834665019e-5,3.838478548063725e-8,0.001536284194639195,-4.783458629340891e-5,3.8536969464764897e-8,0.0015364548174580863,-4.8071792138992605e-5,3.871582755825761e-8,0.001536689888308331,-4.832221693893701e-5,3.890347256035087e-8,0.001536991949021952,-4.8559125680806725e-5,3.907898810591917e-8,0.0015373526882001662,-4.875585201501901e-5,3.9221757056841037E-08,0.0015377531409755225,-4.889068042494506e-5,3.931538272353313e-8,0.0015381659828674545,-4.895167436888976e-5,3.9351451406966635e-8,0.0015385598715198048,-4.894040830492917e-5,3.9332267184161023e-8,0.0015389053503828088,-4.887366805568127e-5,3.927184980018389e-8,0.0015391815674583567,-4.878238533919379e-5,3.919473310592367e-8,0.0015393827610044833,-4.870713902780217e-5,3.913220935194622e-8,0.001539522826925547,-4.868983638924286e-5,3.911586463438951e-8,0.001539635551012186,-4.8762258491063296e-5,3.916897922140672e-8,0.0015397681169518995,-4.893424373568861e-5,3.929783969200081e-8,0.0015399675307219867,-4.9186670824232385e-5,3.9486747633733346e-8,0.0015402639575685848,-4.94746582698892e-5,3.970072063670472e-8,0.001540658896768355,-4.974203898215638e-5,3.989665648604e-8,0.0015411250260262703,-4.9940960584229624e-5,4.0038309783718896e-8,0.0015416177088270302,-5.0046684404287795e-5,4.010752915400204e-8,0.0015420911707916128,-5.006124568783706e-5,4.010688682435594e-8,0.0015425111740769344,-5.000709715400226e-5,4.00545534176231e-8,0.0015428603593231258,-4.9916572907574924e-5,3.9975967592465016e-8,0.001543137348004615,-4.9822560505639655e-5,3.9896549730067413e-8,0.0015433527728847896,-4.9752685894152456e-5,3.983728353617607e-8,0.0015435248853113634,-4.972672630231794e-5,3.981289716560943e-8,0.0015436759860362377,-4.975595477250484e-5,3.9831537088095255e-8,0.0015438297952060482,-4.984325147671539e-5,3.989494979643839e-8,0.0015440093369692496,-4.998334813656624e-5,3.999866380557658e-8,0.0015442348151259754,-5.016309804535865e-5,4.013214246585282e-8,0.0015445211154071746,-5.0362121259628284e-5,4.027925529887606e-8,0.0015448749611662643,-5.055446980018576e-5,4.0419618992163206e-8,0.0015452923005028491,-5.071189862384606e-5,4.053125674762409e-8,0.0015457569800726891,-5.0808855828295383E-05,4.059460327889975e-8,0.0015462418900000286,-5.082850879931722e-5,4.059724221672877e-8,0.0015467132993301472,-5.076823346637892e-5,4.0538094268894254e-8,0.0015471380038922773,-5.064252614673594e-5,4.042945683138028e-8,0.0015474916360774626,-5.048174585710053e-5,4.0295709244955134e-8,0.0015477657624747324,-5.0326348408581844e-5,4.016852598729084e-8,0.0015479715584376128,-5.02176988612463e-5,4.00795759607021e-8,0.001548138675163666,-5.018759931395581e-5,4.0052468864238434e-8,0.001548309019173918,-5.0249167170106635e-5,4.0095999848332944e-8,0.001548526363415651,-5.039173011559901e-5,4.020064552392213e-8,0.001548824072026234,-5.0581979693915296e-5,4.033985817256759e-8,0.0015492146318262102,-5.0772290610955474e-5,4.047669746431854e-8,0.0015496851936439822,-5.091443598787875e-5,4.057438892398452e-8,0.001550201601146154,-5.0973893683465014e-5,4.0607169310144533e-8,0.001550719547427848,-5.093895551994056e-5,4.0567056747315524e-8,0.0015511979549022272,-5.082132789363123e-5,4.0464060310906736e-8,0.001551609085796503,-5.064930767517722e-5,4.032070429909841e-8,0.001551942485882253,-5.045777032215602e-5,4.0164179972009266e-8,0.001552203365741154,-5.027932903282667e-5,4.0019527762343134e-8,0.0015524080338778475,-5.0138911795649996e-5,3.990557662144009e-8,0.0015525789206599471,-5.005169954767954e-5,3.983352487266917e-8,0.0015527405622942454,-5.0023207216840704e-5,3.980713258549693e-8,0.001552916795278977,-5.005024771803662e-5,3.982350168918181e-8,0.0015531287739189376,-5.012197934084325e-5,3.987384769919168e-8,0.0015533932025365111,-5.022080731770897e-5,3.99441559610026e-8,0.0015537202826231122,-5.03234457482546e-5,4.0016025565273536e-8,0.0015541112665716941,-5.0402810390084915e-5,4.0068239562396716e-8,0.0015545561079804125,-5.0431489448755314e-5,4.007959506236113e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json new file mode 100644 index 000000000..c6ac96168 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_15.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":15000,"numberOfSamples":1000,"samples":[0.001555032396790159,-5.038717964716439e-5,4.003321453737454e-8,0.001555507240340409,-5.025945257220019e-5,3.992178064606655e-8,0.0015559433318249748,-5.005568561411016e-5,3.975199831316558e-8,0.0015563086828940746,-4.9802949292686764e-5,3.9545822083813816e-8,0.001556587031841404,-4.9543375923704664e-5,3.9336583092513e-8,0.0015567845028372617,-4.93232976794034e-5,3.9160317297773175e-8,0.0015569291408115862,-4.9179757456819175e-5,3.904518941710335e-8,0.0015570631279621951,-4.912957061070448e-5,3.90031151041951e-8,0.0015572306984882043,-4.916483994647903e-5,3.902661169621281e-8,0.0015574660511056152,-4.9255840502179806e-5,3.9091477245714126e-8,0.0015577847760354089,-4.9359606772293576e-5,3.9163823082464017e-8,0.001558180685115808,-4.943135773630568e-5,3.920908834205859e-8,0.0015586283968716341,-4.943566203060656e-5,3.920059314584998e-8,0.0015590906701226305,-4.9354497209498185e-5,3.9125494924869697e-8,0.001559528261058972,-4.919020584318819e-5,3.8986728207848124e-8,0.0015599093591160292,-4.896289913685733e-5,3.880070214408021e-8,0.0015602159244718476,-4.870367300374791e-5,3.8591890031225615e-8,0.001560445583043622,-4.844627081761637e-5,3.838637217885279e-8,0.0015606095190522666,-4.821988699048854e-5,3.8206389463064e-8,0.001560728059333107,-4.80447105719932e-5,3.8067072967328046e-8,0.0015608258215469178,-4.7930366808124216e-5,3.797538689472998e-8,0.0015609276655558022,-4.787644642721989e-5,3.793059714039383e-8,0.0015610558505919753,-4.7874043041353836e-5,3.792543115973339e-8,0.0015612281647851558,-4.7907464781617856e-5,3.794734148986789e-8,0.0015614564996265033,-4.795579391508165e-5,3.797969902153523e-8,0.0015617453775785114,-4.7994480662788104e-5,3.8003106795686565e-8,0.001562090231917282,-4.799751763502489e-5,3.7997236526191586e-8,0.0015624757732016965,-4.7940913074933274e-5,3.7943666553683704e-8,0.0015628755385377238,-4.780797264952134e-5,3.783002608138753e-8,0.0015632543909054244,-4.759591895225801e-5,3.765503864336205e-8,0.0015635755508337965,-4.7321569326116703e-5,3.743272490582087e-8,0.0015638118247210714,-4.702212301492192e-5,3.719276938020053e-8,0.0015639572183669657,-4.674759666086147e-5,3.697442350326965e-8,0.0015640325431972783,-4.654548661616456e-5,3.681443353406246e-8,0.0015640803149591668,-4.644389332460276e-5,3.673389012822279e-8,0.0015641503210691414,-4.644165242496307e-5,3.673070606589074e-8,0.0015642829369577056,-4.651013021168292e-5,3.678135043023996e-8,0.0015644977495392904,-4.660446073429612e-5,3.685000664095114e-8,0.001564790749643378,-4.6677917336542896e-5,3.6900071652951433e-8,0.001565138707406003,-4.66938238368795e-5,3.690350083708066e-8,0.0015655073435626183,-4.663241657433939e-5,3.6845954665167155e-8,0.0015658602190323327,-4.649255514773499e-5,3.672776169544263e-8,0.0015661663607259592,-4.628936931980565e-5,3.656170224679889e-8,0.0015664055799049252,-4.6049225283354464e-5,3.636883604376693e-8,0.001566571002171141,-4.580336936715299e-5,3.6173502381504967e-8,0.0015666687673390187,-4.558160277952096e-5,3.599852488215996e-8,0.0015667154033415197,-4.5407215387777025e-5,3.586148463513818e-8,0.0015667338355941623,-4.529393320932333e-5,3.577253994149994e-8,0.0015667490993197454,-4.524500274399756e-5,3.573380667359368e-8,0.0015667846174289822,-4.5254024907903564e-5,3.57399848967389e-8,0.001566859497029681,-4.5306834496840176e-5,3.5779734964378544e-8,0.0015669868024443458,-4.5383715412729446e-5,3.583733887760147e-8,0.001567172455798627,-4.546158479647085e-5,3.5894430294282084e-8,0.0015674144103284765,-4.551618411695069e-5,3.593183701499408e-8,0.001567701899164982,-4.5524599621765035e-5,3.593172347162997e-8,0.0015680149455750063,-4.5468646452923546e-5,3.588034316011282e-8,0.001568325023881159,-4.533952995396979e-5,3.577163595791014e-8,0.001568598375261144,-4.514331996072684e-5,3.561129614715066e-8,0.0015688033307539359,-4.490516831986402e-5,3.5419775786897466e-8,0.0015689213635770478,-4.4668520678280764e-5,3.5231422956829793e-8,0.0015689580930293371,-4.448560774152507e-5,3.508694038347068e-8,0.001568947072838441,-4.439966029933874e-5,3.501951652065551e-8,0.0015689406813127415,-4.442653532989222e-5,3.5040594280255434e-8,0.0015689905208410501,-4.454694343553021e-5,3.5134005465375e-8,0.0015691279470960945,-4.471462114836585e-5,3.526264408522862e-8,0.001569355167197491,-4.4874982251366504e-5,3.5383351783517066e-8,0.0015696491590304815,-4.498328840192346e-5,3.5461324901144965e-8,0.0015699730086184231,-4.5014843868502684e-5,3.547806086334234e-8,0.0015702878466824224,-4.496644962533722e-5,3.5432227789964445e-8,0.0015705615045717492,-4.48522455988792e-5,3.5336015448358164e-8,0.0015707731361774711,-4.469737825179658e-5,3.520983386424041e-8,0.0015709146371371892,-4.453167337270511e-5,3.507720338549927e-8,0.0015709899450492496,-4.4384204168804375e-5,3.4960569188722246e-8,0.0015710129446352492,-4.427899769327988e-5,3.487815813513884e-8,0.0015710044338982897,-4.4232035758685976e-5,3.484187409746818e-8,0.0015709885901114629,-4.424966839076787e-5,3.48562113954969e-8,0.0015709893763831153,-4.4328433769242266e-5,3.491813422291662e-8,0.0015710273252120134,-4.4456174728882454e-5,3.501786728147512e-8,0.001571117095259444,-4.4614146603934006e-5,3.514044529398255e-8,0.0015712659471281585,-4.4779625550250765e-5,3.526772890807883e-8,0.0015714729990209998,-4.492865339998087e-5,3.5380643711257126e-8,0.0015717290886569444,-4.503882672267935e-5,3.5461540303863484e-8,0.0015720171486412,-4.509218250304847e-5,3.549662088853352e-8,0.0015723131710548195,-4.507838065681111e-5,3.547847663955526e-8,0.0015725883317389549,-4.499835421555663e-5,3.540880348366659e-8,0.001572813307826608,-4.486786800809496e-5,3.5300892636416496e-8,0.0015729655070056204,-4.47191603474519e-5,3.518058646081875e-8,0.0015730384980441499,-4.459776227937817e-5,3.5083578249073555e-8,0.0015730502214990328,-4.4551776967474605e-5,3.504702004926623e-8,0.0015730436787471955,-4.461436338745037e-5,3.5095992048822466e-8,0.0015730749295945277,-4.478695231412046e-5,3.5230609633398364e-8,0.00157319126570817,-4.5034672737442647e-5,3.542266299781257e-8,0.0015734115792861226,-4.529940702276995e-5,3.562602881073632e-8,0.0015737208148722149,-4.552319788898638e-5,3.5795178558746185e-8,0.0015740799139331147,-4.5667994072365434e-5,3.590075376760617e-8,0.0015744426094396393,-4.572297761098429e-5,3.593523410445762e-8,0.0015747694654922382,-4.570060260613509e-5,3.5909545233455296e-8,0.0015750350883362262,-4.56275210357777e-5,3.584556214181634e-8,0.0015752294134122743,-4.5535604842148e-5,3.576877953266378e-8,0.0015753556604648073,-4.545534529408837e-5,3.5703062165524755e-8,0.0015754271119554817,-4.541175214597163e-5,3.566756900441209e-8,0.0015754637850900197,-4.5422021566715475e-5,3.567516845886349e-8,0.0015754892419881964,-4.549435685857388e-5,3.5731726192643936e-8,0.0015755275323007985,-4.562767745693644e-5,3.5835969133508226e-8,0.0015756002822981585,-4.581213815904196e-5,3.597985887669808e-8,0.0015757240290649212,-4.603051129355547e-5,3.6149580268519345e-8,0.0015759080778055216,-4.626046736804536e-5,3.632726928230143e-8,0.0015761532032229398,-4.6477532670966515e-5,3.6493374497356665e-8,0.0015764513190264005,-4.66583682351069e-5,3.662937540080888e-8,0.0015767861221216862,-4.6784116146357104e-5,3.67205887315865e-8,0.0015771347357232419,-4.6843579857850895e-5,3.6758772560147956e-8,0.0015774703483009739,-4.683599304438294e-5,3.67442426941251e-8,0.0015777659552356682,-4.677317302149219e-5,3.66873186351272e-8,0.0015779995237324785,-4.668049190430199e-5,3.660873387655922e-8,0.0015781605555831091,-4.659528839149842e-5,3.6538079166891776e-8,0.0015782567852510353,-4.656091594072024e-5,3.650901070819981e-8,0.0015783179633283798,-4.6615418475760236e-5,3.655049543919046e-8,0.0015783922903835324,-4.677665068892878e-5,3.667544840847755e-8,0.0015785325756434202,-4.703036852583066e-5,3.687171431896692e-8,0.0015787756427616659,-4.733035159097787e-5,3.7102367094230025e-8,0.0015791259181678027,-4.761430923312568e-5,3.731827295238525e-8,0.0015795538411506713,-4.7828037828527396e-5,3.747709330858676e-8,0.0015800096969891477,-4.7943878769038486E-05,3.7557792145692596e-8,0.0015804431624417705,-4.796481847401571e-5,3.756375094216574e-8,0.0015808178057632656,-4.791635491291735e-5,3.7516101368887467e-8,0.0015811164141571583,-4.783405291768669e-5,3.744360223405161e-8,0.0015813392677104443,-4.775314048922322e-5,3.737423693485045e-8,0.0015814993203580124,-4.7702326404354844e-5,3.733035174588052e-8,0.0015816171643790661,-4.7701193814970105e-5,3.7326791516613286e-8,0.0015817169630395575,-4.775965776778595e-5,3.737071389079256e-8,0.001581823347515752,-4.787832470052812e-5,3.7462041637598934e-8,0.0015819588828547596,-4.8049258257063996e-5,3.7594106726625155e-8,0.0015821417963573898,-4.8257082895207296e-5,3.775446258471748e-8,0.0015823838479101892,-4.848060164321304e-5,3.792608585212836e-8,0.001582688504544025,-4.869520808633535e-5,3.8089269531459865e-8,0.0015830498625370153,-4.887615170356731e-5,3.822428825087552e-8,0.0015834527637300596,-4.9002351733972964e-5,3.8314560752223585e-8,0.0015838743628422021,-4.906026034512833e-5,3.834982706901485e-8,0.001584287221216587,-4.904715037019271e-5,3.832875105474419e-8,0.001584663741938823,-4.897310145628491e-5,3.826032241557493e-8,0.001584981463061841,-4.8861079857009655e-5,3.8163607031293117e-8,0.0015852285820703014,-4.874466991235223e-5,3.8065608345197424e-8,0.0015854088600154176,-4.8662962215500585e-5,3.7997004979177486e-8,0.0015855444217866606,-4.86522846509656e-5,3.798563784368472e-8,0.001585674261819128,-4.8735533803462465e-5,3.804836085608511e-8,0.001585846375312292,-4.891189807186035e-5,3.818334234181005e-8,0.00158610348310477,-4.9151982596995845e-5,3.836657757562266e-8,0.001586466654834368,-4.9403489989380824e-5,3.8556531405909456e-8,0.0015869251102463237,-4.960807810621859e-5,3.870740581132169e-8,0.0015874391429179613,-4.9722343633764594e-5,3.8785587350351096e-8,0.0015879553631793688,-4.973190214442801e-5,3.878064452942808e-8,0.001588425577199708,-4.9652024693980827e-5,3.870567071163837e-8,0.00158881977381429,-4.951725979120483e-5,3.8588846273972866e-8,0.0015891295065786543,-4.936775952074638e-5,3.84623889278333e-8,0.001589364066660281,-4.9238715531157035e-5,3.8354092314337146e-8,0.001589543909685928,-4.9154994199223596e-5,3.8283168581558065e-8,0.0015896945618050432,-4.9129902713118106e-5,3.825948659678869e-8,0.0015898422153512498,-4.916611627099987e-5,3.8284520145138256e-8,0.001590010859028341,-4.925727610695112e-5,3.8352726691160195e-8,0.0015902202966968217,-4.938958761833569e-5,3.845280876708773e-8,0.0015904844846205953,-4.954336749390981e-5,3.8568874325898195e-8,0.0015908099083882816,-4.969485381752708e-5,3.868182932013065e-8,0.0015911941068452644,-4.98187279964764e-5,3.8771413773902485e-8,0.0015916248545581027,-4.989160905264646e-5,3.881908380631811e-8,0.0015920807276100831,-4.9896318601345885e-5,3.881152013111638e-8,0.0015925336582621405,-4.982618528736371e-5,3.874409592893164e-8,0.0015929536328127007,-4.9688213379708714e-5,3.862330576383604e-8,0.0015933149629505758,-4.950379940089145e-5,3.846710078351864e-8,0.001593602808933612,-4.930610263244153e-5,3.830248200720968e-8,0.0015938182399501703,-4.913404445176729e-5,3.8160453318297506e-8,0.0015939802243672306,-4.902380951458289e-5,3.806916042959481e-8,0.0015941233988982489,-4.899946750049259e-5,3.8046581250505863e-8,0.0015942911880484664,-4.906498251129774e-5,3.80945375169188e-8,0.0015945249563040758,-4.920032285756388e-5,3.8196040630227036e-8,0.0015948515164234465,-4.9364207196608636e-5,3.8317796980507725e-8,0.001595273159867582,-4.950449066879408e-5,3.841854809931519e-8,0.0015957650230228916,-4.9573895929635576e-5,3.846143646287539e-8,0.0015962822947114133,-4.954513058246872e-5,3.842577890144347e-8,0.0015967748230214939,-4.941856956430488e-5,3.8312929742037596e-8,0.001597202494943064,-4.921934317902047e-5,3.814375061431865e-8,0.0015975448239908775,-4.898645979137916e-5,3.794978155712491e-8,0.0015978022649466863,-4.876005227964857e-5,3.7762998553756675e-8,0.0015979913135114392,-4.85719625681952e-5,3.76083609760703e-8,0.0015981373497028673,-4.84414879329937e-5,3.750059586381275e-8,0.0015982682896983585,-4.837523496803743e-5,3.744429677813117e-8,0.0015984102235238262,-4.8369073369492696e-5,3.743563223650375e-8,0.0015985848577516198,-4.8410619737028296e-5,3.746436079232389e-8,0.0015988080578801715,-4.848147621960483e-5,3.751556089859576e-8,0.0015990887787054714,-4.8559129023742496e-5,3.7571077107145096e-8,0.0015994279675657184,-4.861890144868653e-5,3.761106919377434e-8,0.0015998175105410416,-4.8636534469734454e-5,3.761614354464905e-8,0.0016002397772522405,-4.859177185400766e-5,3.757032802152641e-8,0.0016006686543139628,-4.84728413566226e-5,3.74647259539885e-8,0.0016010729910405593,-4.828097347843213e-5,3.7301095421887124e-8,0.0016014227983081818,-4.8033231546302496e-5,3.709395135898375e-8,0.0016016972164009232,-4.776158920159305e-5,3.686957478771082e-8,0.001601891799677878,-4.750708267512769e-5,3.6661070725469196e-8,0.0016020220967839574,-4.730984733590426e-5,3.65002268054441e-8,0.0016021214376728508,-4.7197895387483466e-5,3.640855159267248e-8,0.0016022329539292035,-4.7178441191331395e-5,3.6390568883612766e-8,0.001602398098868516,-4.723486700987873e-5,3.64317778525816e-8,0.0016026451775172069,-4.7330459524417435e-5,3.6502037536061675e-8,0.0016029812826023223,-4.741790311922242e-5,3.6563402100527594e-8,0.0016033900211863004,-4.7451924030049034e-5,3.658023478305435e-8,0.0016038359142873748,-4.7401493578198037e-5,3.65287527576269e-8,0.0016042743565764664,-4.725778830099e-5,3.6403069368047857e-8,0.0016046639296792753,-4.703526837810497e-5,3.621574128865795e-8,0.0016049768310006606,-4.676579911472799e-5,3.599284252644777e-8,0.0016052041001474093,-4.6488499312397777e-5,3.576575444073776e-8,0.0016053547788864799,-4.623936983449527e-5,3.556292473478258e-8,0.0016054506685802667,-4.604404725371659e-5,3.540424269592429e-8,0.00160551955904301,-4.591491456251917e-5,3.529894528530359e-8,0.0016055893304846428,-4.585176544402924e-5,3.5246319584402404e-8,0.0016056839738281931,-4.584435487657563e-5,3.523780378361235e-8,0.0016058214226180075,-4.58754099005351e-5,3.525934967930275e-8,0.0016060125662822487,-4.5923316964371105e-5,3.5293484731850514e-8,0.0016062607469574757,-4.5964330399595076e-5,3.5321033008763995e-8,0.0016065612721366269,-4.597465556251913e-5,3.5322825752794e-8,0.001606900939181552,-4.5932990607520925e-5,3.528185027009399e-8,0.0016072580949436541,-4.582396800827508e-5,3.518611857277115e-8,0.0016076041773001588,-4.564246758849356e-5,3.503214741997083e-8,0.001607907835484071,-4.539791130326102e-5,3.482829369055841e-8,0.001608142149154005,-4.511646354493401e-5,3.4596304332457856e-8,0.0016082937279128775,-4.483839603063741e-5,3.4368956580540236e-8,0.001608370164011681,-4.460905850485839e-5,3.418262319337986e-8,0.0016084013367679887,-4.4465215778220584e-5,3.4066244784300986e-8,0.0016084321421592992,-4.442209614898366e-5,3.4031040378216796e-8,0.0016085087032214472,-4.4467328910789975e-5,3.406590890538271e-8,0.001608663854204168,-4.4564751128790306e-5,3.414084287148784e-8,0.0016089078261996121,-4.466603533873435e-5,3.4216585652257157e-8,0.0016092268749752002,-4.472491235101269e-5,3.425621097733665e-8,0.0016095888815234746,-4.470896660568734e-5,3.4234524970492415e-8,0.00160995294459917,-4.46061700180591e-5,3.414304169545714e-8,0.0016102797685153603,-4.442554150736995e-5,3.39901449867369e-8,0.001610540291413511,-4.41928249660299e-5,3.379729090404697e-8,0.001610720877149768,-4.3942959524330366e-5,3.3592785051752095e-8,0.0016108243718107255,-4.3711535533740247e-5,3.340493987008991e-8,0.0016108673896750982,-4.352740556905542e-5,3.325631883018611e-8,0.0016108751528596623,-4.340803798367828e-5,3.31602500419108e-8,0.0016108756639389974,-4.3358117340029234e-5,3.31199083561361e-8,0.00161089471982018,-4.33708154841172e-5,3.312942713946964e-8,0.0016109525410755215,-4.34306101333567e-5,3.317612870807587e-8,0.0016110620470242626,-4.351655218140907e-5,3.3243045504261954e-8,0.001611228317562383,-4.360524372648092e-5,3.331122931252226e-8,0.0016114486396584151,-4.367330914275547e-5,3.336174083792286e-8,0.0016117127150576606,-4.3699607289291936e-5,3.33775293772246e-8,0.0016120029665654158,-4.366764384768521e-5,3.3345510827283086e-8,0.0016122953248352881,-4.35685848202546e-5,3.3259070099345036e-8,0.0016125613483437497,-4.340490324202378e-5,3.312093756709973e-8,0.0016127727551766623,-4.319382193216696e-5,3.294576076085041e-8,0.0016129088996316033,-4.296843215561775e-5,3.276074107332174e-8,0.0016129659137071207,-4.277350269527232e-5,3.260204841704383e-8,0.0016129634518711477,-4.2654123502679954e-5,3.250560511019986e-8,0.0016129434192342419,-4.263951160928507e-5,3.249413087936494e-8,0.0016129578689934336,-4.272950726670111e-5,3.25664702196115e-8,0.001613050232896208,-4.2892278302879625e-5,3.2696007974918103e-8,0.0016132395138366183,-4.307566567224347e-5,3.2840080832235315e-8,0.0016135153781361821,-4.3225967007183096e-5,3.295532521363271e-8,0.0016138447598283675,-4.330446141592195e-5,3.3011068605873004e-8,0.0016141845061787268,-4.329558915141256e-5,3.299579503566333e-8,0.0016144937858859182,-4.320654916003372e-5,3.29165093334752e-8,0.0016147426836319956,-4.3061418898431364e-5,3.2793617549553344e-8,0.0016149162538619413,-4.28932148940195e-5,3.2654235700933185e-8,0.0016150148382885333,-4.273622151749938e-5,3.252591778532962e-8,0.0016150517857130536,-4.261972946654225e-5,3.243173477682972e-8,0.001615049514803641,-4.256367933918242e-5,3.238701919898679e-8,0.0016150347633862986,-4.2576490174574447e-5,3.239787068664833e-8,0.0016150339039934956,-4.265505690214593e-5,3.24613058418649e-8,0.0016150690590622733,-4.278649690659109e-5,3.2566675877575025e-8,0.0016151554483356746,-4.2951022505443604e-5,3.269788817933618e-8,0.0016153001048231429,-4.312527285417708e-5,3.283598386574173e-8,0.0016155017602802555,-4.328548587995333e-5,3.2961656880308e-8,0.0016157514557302796,-4.3410193344149555e-5,3.305749480030836e-8,0.0016160335151886938,-4.348253336100209e-5,3.310998203842222e-8,0.0016163267962227231,-4.3492450229067064e-5,3.311139396130571e-8,0.001616606420595729,-4.343902077762299e-5,3.306167660919614e-8,0.001616846570836147,-4.3332918110579625e-5,3.297027424956425e-8,0.0016170251774682734,-4.319829401359851e-5,3.285736904569684e-8,0.0016171308087405997,-4.307222907662207e-5,3.2753160720529384e-8,0.0016171704476762414,-4.299915965162309e-5,3.2693234113441636e-8,0.0016171742841552047,-4.301865193973153e-5,3.2708769773927315e-8,0.0016171918923307148,-4.314894035091985e-5,3.281350053431754e-8,0.0016172768691222427,-4.337450691395369e-5,3.299396166424684e-8,0.0016174652144145727,-4.364756211844907e-5,3.321089173978478e-8,0.0016177597932134746,-4.390561146011057e-5,3.341354613711286e-8,0.0016181304852361284,-4.4095543629212986e-5,3.3559243265705895e-8,0.0016185284692897027,-4.4190547319258514e-5,3.362705585213057e-8,0.0016189045522376445,-4.4193243891010715e-5,3.362020601659291e-8,0.0016192223969067512,-4.412817824935237e-5,3.355967969498163e-8,0.0016194638193470891,-4.403063195720452e-5,3.34748138358053e-8,0.0016196280163832983,-4.393679585500097e-5,3.339511192107193e-8,0.0016197277267549035,-4.3877154423368346e-5,3.334489133236136e-8,0.0016197845593948158,-4.387287847418416e-5,3.334056960624522e-8,0.0016198245204375643,-4.3934319125600074e-5,3.3389732573910446e-8,0.0016198739737394417,-4.4060948688515964e-5,3.3491313790702704e-8,0.001619956137050907,-4.424248547766236e-5,3.3636593203828094e-8,0.0016200882954145463,-4.4460987523551896e-5,3.381084517949932e-8,0.0016202798937417601,-4.469366279624242e-5,3.399550450501883e-8,0.0016205316675254457,-4.4916122131234496e-5,3.417072218106146e-8,0.0016208358841783572,-4.51056635939364e-5,3.431804144775011e-8,0.0016211775123474187,-4.524417861154815e-5,3.442285758382958e-8,0.0016215360341788234,-4.532053562216261e-5,3.447647579529873e-8,0.0016218877589150979,-4.5332465127465866e-5,3.4477688314315185e-8,0.0016222086413283134,-4.528794941479019e-5,3.4433800071019065e-8,0.0016224777898770169,-4.520602795248432e-5,3.436102856785716e-8,0.0016226820080681198,-4.511649275684907e-5,3.428394416218811e-8,0.0016228212897336288,-4.505716598228851e-5,3.423303906504118e-8,0.0016229139005976808,-4.50670885186496e-5,3.423920259833186e-8,0.0016229978830992289,-4.51749217202737e-5,3.432456868826437e-8,0.0016231246866747196,-4.538503437297744e-5,3.449162408965321e-8,0.0016233428870291516,-4.566853319778398e-5,3.4716252957965794e-8,0.0016236772248806965,-4.596812991238768e-5,3.495178509204106e-8,0.0016241152647686152,-4.621869465816446e-5,3.514559949367053e-8,0.0016246116056889723,-4.637312377459764e-5,3.526003661180751e-8,0.0016251072872445914,-4.6418152194176277e-5,3.5285198490338464e-8,0.0016255516901675028,-4.637296697358738e-5,3.523771443245092e-8,0.0016259155653828902,-4.627592173555477e-5,3.5149685697300395e-8,0.0016261928281600965,-4.616943668607092e-5,3.5056106184870745e-8,0.0016263953747431522,-4.608946050777786e-5,3.4986134383754507e-8,0.00162654592076792,-4.606055522365073e-5,3.4959174040392114e-8,0.0016266717530924076,-4.6094961601108544e-5,3.498436583192719e-8,0.0016268002162611959,-4.619362578856872e-5,3.506170277704274e-8,0.0016269555762756986,-4.6347898809298577e-5,3.5183591772346576e-8,0.0016271567027249208,-4.654151467710764e-5,3.533649211716943e-8,0.0016274153179251607,-4.675286847043376e-5,3.550269075582101e-8,0.0016277348011426761,-4.695766887346226e-5,3.566236234788382e-8,0.0016281097039318963,-4.7132008983412574e-5,3.5796030279421156e-8,0.0016285262644494334,-4.7255678611228e-5,3.5887315314142226e-8,0.001628964073625187,-4.731526564371127e-5,3.5925567937765023E-08,0.0016293987695045343,-4.7306594472402196e-5,3.5907931482636357e-8,0.0016298055166128098,-4.723617482978707e-5,3.5840485560798704e-8,0.0016301629750232944,-4.7121376003895105e-5,3.573820180050115e-8,0.0016304574112304933,-4.698912835410786e-5,3.562359354313474e-8,0.001630686636381212,-4.687296006046646e-5,3.552402309108488e-8,0.001630863266571223,-4.6807921698255846e-5,3.546744809793738e-8,0.001631016074302961,-4.6822961021669483e-5,3.5476346222796364e-8,0.0016311873490471736,-4.6931285427303824e-5,3.556023149782128e-8,0.0016314241196807519,-4.712134705140385e-5,3.570874980570606e-8,0.0016317631244090534,-4.7353656267366736e-5,3.5889370924150126e-8,0.0016322143049490748,-4.756904084464057e-5,3.605411987293246e-8,0.0016327523237028758,-4.770869469055887e-5,3.615570802256036e-8,0.001633323721960312,-4.7737093003807625e-5,3.616600609540491e-8,0.0016338673630050457,-4.7654512699828896e-5,3.608614967055138e-8,0.0016343363161102794,-4.7492623882838964e-5,3.59428498486487e-8,0.0016347097760828822,-4.729839554612501e-5,3.577507367476015e-8,0.0016349924051370127,-4.7117130386448616e-5,3.5619987353530545e-8,0.0016352061343948639,-4.6981902350859326e-5,3.550426387925348e-8,0.0016353807083681227,-4.691028273741784e-5,3.544154910868567e-8,0.0016355464804455415,-4.690570628738172e-5,3.543383998937961e-8,0.001635730112170018,-4.696057989449839e-5,3.5474262687520425e-8,0.0016359523601496132,-4.705941012943231e-5,3.5549738432914185e-8,0.0016362269041772656,-4.718145036852111e-5,3.56431208201011e-8,0.0016365595879771274,-4.730304536267612e-5,3.5735016865504467e-8,0.0016369478987237219,-4.7400035126582016e-5,3.58056778292684e-8,0.0016373808483354118,-4.7450543227840547e-5,3.583728050603426e-8,0.0016378397017732427,-4.7438197284311285e-5,3.581663456998011e-8,0.0016383000265438497,-4.7355354305080354e-5,3.573790790644766e-8,0.001638735210162438,-4.720557229499285e-5,3.5604668453241686e-8,0.0016391211394910926,-4.700451726643738e-5,3.5430520082254106e-8,0.001639441306452008,-4.6778640180967995e-5,3.5237790208829276e-8,0.0016396912690668532,-4.6561377647454084e-5,3.5054142350092676e-8,0.0016398813658379573,-4.63872399230719e-5,3.490753406266736e-8,0.0016400368292994823,-4.628458200577974e-5,3.4820292858860436e-8,0.0016401946504560447,-4.6268117996810935e-5,3.480322538106792e-8,0.0016403967479677747,-4.6332728578918845e-5,3.485095674241419e-8,0.001640679685853359,-4.645083249127904e-5,3.494018708827335e-8,0.0016410627568417529,-4.657595311703952e-5,3.5032828146860476e-8,0.0016415385136823188,-4.665404102506928e-5,3.5085209016852697e-8,0.0016420712361589218,-4.6640593747802424e-5,3.506183028304087e-8,0.0016426066758982037,-4.651680204060536e-5,3.49483030632206e-8,0.0016430902029990438,-4.6296213477060036e-5,3.4756616314912035e-8,0.0016434846325752775,-4.601807762842053e-5,3.451956176891535e-8,0.0016437792010674768,-4.573164001443794e-5,3.4277753576294015e-8,0.0016439873944463735,-4.5480182565328244e-5,3.406648234300473e-8,0.0016441377649539473,-4.5291435015766347e-5,3.390791520498886e-8,0.0016442637177816871,-4.517553440841134e-5,3.38096166616314e-8,0.0016443960339398652,-4.512789702654878e-5,3.376713660815342e-8,0.0016445588953631549,-4.5133752929414504e-5,3.3767884966551584e-8,0.0016447684565497988,-4.517231429766106e-5,3.3794572068923304e-8,0.001645032669366525,-4.521994135279829e-5,3.382772789479797e-8,0.0016453514524502528,-4.5252519765481794e-5,3.3847558228796395e-8,0.0016457168505185967,-4.524759349498278e-5,3.38356608525806e-8,0.001646113327512554,-4.51867851078022e-5,3.3777059144320585e-8,0.0016465187233436285,-4.5058731090684236e-5,3.366270182651552e-8,0.0016469065595708819,-4.4862213010709696e-5,3.349209230451183e-8,0.0016472501485759548,-4.460855757214049e-5,3.327522050357837e-8,0.0016475282892311342,-4.43219688174928e-5,3.303267631530774e-8,0.001647731361928809,-4.40365769207798e-5,3.279298525555044e-8,0.0016478658173717641,-4.378990661504161e-5,3.2587010223876336e-8,0.001647955012278325,-4.361395560197095e-5,3.244050743190803e-8,0.0016480353368982224,-4.352634140384957e-5,3.236693816783387e-8,0.0016481481573200063,-4.352430208745986e-5,3.236282743263174e-8,0.0016483294908475749,-4.358362185466893e-5,3.240727442369534e-8,0.001648600066709863,-4.366323577305269e-5,3.2466074614676396e-8,0.0016489585077819739,-4.371486073861877e-5,3.249977289857885e-8,0.0016493799815096145,-4.369565905864213e-5,3.247396466644824e-8,0.0016498216574363398,-4.35805854427313e-5,3.236916312326058e-8,0.0016502342591044501,-4.337016148742985e-5,3.2186868815840264e-8,0.0016505762173780565,-4.309020706568123e-5,3.194909432152713e-8,0.0016508250968513124,-4.278317246005813e-5,3.1691092721698956e-8,0.0016509819009967624,-4.24946924788503e-5,3.1450271221881416e-8,0.0016510674183862332,-4.226105950962592e-5,3.125597438215787e-8,0.0016511135338679924,-4.210202576888828e-5,3.112374663814163e-8,0.0016511538874274358,-4.201993406387043e-5,3.105483497910188e-8,0.0016512170388640625,-4.200324771532353e-5,3.1039256218679945e-8,0.0016513230147448136,-4.2031673250908966e-5,3.106005739207479e-8,0.0016514824899899535,-4.2080862105879425e-5,3.109711887696447e-8,0.0016516973653265966,-4.212590433392133e-5,3.1129923067476226e-8,0.001651961729402234,-4.214373526750093e-5,3.113947244255304e-8,0.001652262709403183,-4.2115034434587586e-5,3.11098777670916e-8,0.001652581282236162,-4.20262355409554e-5,3.103010807540562e-8,0.001652893563089459,-4.1871968498026697e-5,3.089609413234407e-8,0.0016531733119630543,-4.165773999853627e-5,3.071294747399099e-8,0.001653396304072018,-4.1401950749318465e-5,3.0496512296258735e-8,0.0016535465337220673,-4.113559677284715e-5,3.027291157231968e-8,0.00165362283822673,-4.08978653952933e-5,3.007468972951524e-8,0.001653643051829214,-4.072709688518788e-5,2.993320892854408e-8,0.0016536425379715574,-4.064915069866908e-5,2.986905479463843e-8,0.0016536658656256423,-4.0667642322225216e-5,2.988415848613424e-8,0.0016537538623654171,-4.076077998128367e-5,2.995949305378407e-8,0.0016539310239152949,-4.088682206365838e-5,3.0059909699632935e-8,0.0016541982039326847,-4.099610396545309e-5,3.0144299811144e-8,0.0016545328263749025,-4.1044953793367646e-5,3.0177129842224954e-8,0.0016548957129889686,-4.100692229408898e-5,3.013755445295461e-8,0.0016552417765755723,-4.0878540058739154e-5,3.0023865014476645e-8,0.0016555313813681053,-4.0678744800547455e-5,2.985267628556814e-8,0.0016557394578348126,-4.0442706059349526e-5,2.965356616713717e-8,0.0016558602205119905,-4.0212091256584694e-5,2.9460936650144332e-8,0.0016559066064064827,-4.002467175107929e-5,2.9305507808049016e-8,0.0016559051411805651,-3.990618815504244e-5,2.9207810627581598e-8,0.0016558883208421219,-3.986641734804314e-5,2.9175190181454984e-8,0.0016558871094012825,-3.989970995789232e-5,2.920244204328383e-8,0.0016559255239323612,-3.9988717521732396e-5,2.9274958922300416e-8,0.0016560179934640134,-4.010939295998521e-5,2.9372803922459204e-8,0.0016561690600313398,-4.023567907279301e-5,2.947446435780696e-8,0.0016563744709726966,-4.0343077329543915e-5,2.9559704687070583e-8,0.0016566227473716701,-4.04110569171678e-5,2.9611550177314757e-8,0.0016568967011817656,-4.0424765170366424e-5,2.9617783814663727e-8,0.0016571748725286567,-4.03766005139679e-5,2.9572361572399208e-8,0.001657433277921752,-4.026798280415287e-5,2.9476932544257488e-8,0.0016576481341211992,-4.011122108290574e-5,2.9342315929308953e-8,0.0016578002161897344,-3.993068140079735e-5,2.918927620055278e-8,0.0016578808882250792,-3.97616016784514e-5,2.904730413787855e-8,0.0016578983842147038,-3.964455859766971e-5,2.894986463588264e-8,0.0016578810457861806,-3.961480375790006e-5,2.8925550308629004e-8,0.0016578735047228827,-3.968893422226867e-5,2.8987194852995764e-8,0.0016579242628156493,-3.985510074322592e-5,2.9124022121367424e-8,0.0016580686098759247,-4.007348282468502e-5,2.9302307407495906e-8,0.001658315212483153,-4.028875236110224e-5,2.9475907260284677e-8,0.0016586433615687947,-4.044883713349159e-5,2.9601907087753384e-8,0.0016590113970561915,-4.0520869931719907e-5,2.9653810852602028e-8,0.0016593709065407672,-4.049825768358674e-5,2.9627222749183985e-8,0.0016596801558158162,-4.039855087642855e-5,2.953777937619335e-8,0.0016599128451770951,-4.025546688761349e-5,2.9414208659192474e-8,0.001660061372670357,-4.010894002692455e-5,2.928985879812469e-8,0.0016601355508499426,-3.999598249842553e-5,2.9195098085642385e-8,0.0016601582578794414,-3.994386969418339e-5,2.9151836997324146e-8,0.0016601594601349523,-3.9966285990856224e-5,2.9170608546724392E-08,0.0016601699239930832,-4.006254573710791e-5,2.9250175101477995e-8,0.0016602158041532625,-4.021951416375853e-5,2.9379253301896273e-8,0.0016603149537395255,-4.041536412718664e-5,2.9539614735345927e-8,0.00166047527124585,-4.062408817363606e-5,2.970971399095024e-8,0.0016606948895783432,-4.081978853524619e-5,2.986812443718438e-8,0.0016609636296508186,-4.098007900947471e-5,2.9996308350286483e-8,0.0016612650174455234,-4.108841983012459e-5,3.0080601450579956e-8,0.0016615783991599132,-4.113565076063209e-5,3.01135932639863e-8,0.00166188105966781,-4.11211016170598e-5,3.009513534055636e-8,0.001662150531071203,-4.105352714493535e-5,3.0033097660775586e-8,0.0016623675379770072,-4.095183539624763e-5,2.994381510048298e-8,0.0016625201033940193,-4.0844962473662907e-5,2.98517361833591e-8,0.0016626087554811723,-4.0769446539057265e-5,2.9787188477707118e-8,0.0016626514160071732,-4.0762994359918156e-5,2.9780965991072815e-8,0.0016626848298044925,-4.0853432310140516e-5,2.9855291758414986e-8,0.0016627585180696237,-4.104557297078488e-5,3.001319945286181e-8,0.0016629196343020275,-4.1312810810254054e-5,3.023184378109478e-8,0.0016631936622173485,-4.1601319751516236e-5,3.046615302114082e-8,0.0016635717482644979,-4.1848343784879263e-5,3.0664058183648755e-8,0.0016640132555107746,-4.200576477773202e-5,3.0786057280139574e-8,0.0016644620386205267,-4.205590491481198e-5,3.0818301607812385e-8,0.001664866364125141,-4.201279974388258e-5,3.0773509768777413e-8,0.001665192705554029,-4.1912072651471524e-5,3.068227045198648e-8,0.0016654301308830564,-4.1797159168452974e-5,3.0581274453788686e-8,0.0016655875286445104,-4.170783384293948e-5,3.050359333944092e-8,0.001665687465604892,-4.167319984191924e-5,3.0472896827926416e-8,0.0016657594905155892,-4.170874776273719e-5,3.050124412626773e-8,0.0016658342301060726,-4.181625386895793e-5,3.058929521132896e-8,0.0016659386770511526,-4.1985505643195065e-5,3.0727965256502515e-8,0.0016660927790692734,-4.2197234556937535e-5,3.0900934221248055e-8,0.001666307394327278,-4.242676039351328e-5,3.108761361993264e-8,0.0016665836116936171,-4.2647885737481854e-5,3.1266263776837525e-8,0.0016669133750296294,-4.2836615240290816e-5,3.141699700450582e-8,0.0016672812040082632,-4.29742538784887e-5,3.1524353127941986e-8,0.001667666583854231,-4.3049585079543835e-5,3.157918783389978e-8,0.0016680466219054927,-4.306016694156729e-5,3.1579840829446867e-8,0.0016683988209936053,-4.3012919060955386e-5,3.153264421759085e-8,0.0016687039684606657,-4.2924075892586436e-5,3.145177637443578e-8,0.001668949248977301,-4.281847186208641e-5,3.135844372913255e-8,0.001669131786259909,-4.272775819299064e-5,3.127914542178871e-8,0.0016692623804481766,-4.268653070428464e-5,3.1242302733313314e-8,0.0016693680627836978,-4.272526972232355e-5,3.1272440060728026e-8,0.0016694908319522278,-4.286013130087455e-5,3.138195636848311e-8,0.0016696795079151228,-4.3082236687797025e-5,3.156257050561017e-8,0.0016699738397906113,-4.335263606913009e-5,3.178138863954782e-8,0.0016703860640257925,-4.3610062290433165e-5,3.1987399692878435e-8,0.0016708909850968417,-4.3792311883293744e-5,3.212916881254575e-8,0.0016714333005318656,-4.3861116917503015e-5,3.217546090751692e-8,0.0016719492822700806,-4.3815726814167675e-5,3.2126524444803504e-8,0.0016723897475633752,-4.368843070089595e-5,3.201025739742718e-8,0.0016727324810957033,-4.352796787840965e-5,3.1868119479992646e-8,0.0016729818078562674,-4.338203342372647e-5,3.174024705968066e-8,0.001673160510358554,-4.3286058936851166e-5,3.165596355869807e-8,0.0016733001997954202,-4.325918304672302e-5,3.1630534790235667e-8,0.0016734335563792723,-4.3305040518058526e-5,3.166611119385737e-8,0.0016735892269826305,-4.3414715646800075e-5,3.1754482304429493e-8,0.0016737888324904195,-4.357023755789901e-5,3.188016234879414e-8,0.0016740453537005702,-4.3748057320064645e-5,3.202330368510447e-8,0.0016743624861162748,-4.392241829557162e-5,3.216241408654458e-8,0.0016747348092937828,-4.406860454410632e-5,3.227695616684352e-8,0.0016751487805059524,-4.416603666815915e-5,3.234987839857888e-8,0.001675584637718124,-4.420100590072595e-5,3.236992864406305e-8,0.0016760191120139118,-4.4168658691226686e-5,3.23333885762874e-8,0.0016764286255676625,-4.407397693962139e-5,3.224493873197347e-8,0.0016767926831136699,-4.393169599546051e-5,3.211753662941352e-8,0.001677097237930815,-4.3765093105344423e-5,3.197123217472216e-8,0.00167733777658621,-4.360358105039846e-5,3.183091478114156e-8,0.001677521869398556,-4.347902774846859e-5,3.172303510741116e-8,0.0016776707408900074,-4.342049118287758e-5,3.167116295241453e-8,0.0016778187422698135,-4.3447130391136005e-5,3.1690241873688606e-8,0.0016780089503785252,-4.3560098509420256e-5,3.178016652122048e-8,0.0016782833720448765,-4.373614563117936e-5,3.192080369790514e-8,0.0016786683666438333,-4.3927655024510755e-5,3.207221484054373e-8,0.001679160369115784,-4.407367191046424e-5,3.2183808817329206e-8,0.0016797209875307913,-4.412114009758808e-5,3.221188471697183e-8,0.0016802880403294148,-4.404672142738793e-5,3.213771971384632e-8,0.001680798773740542,-4.386597338792192e-5,3.197519004817064e-8,0.0016812121713359505,-4.362439078443936e-5,3.176318558267004e-8,0.0016815186777889915,-4.337739128303645e-5,3.1548644038694827e-8,0.0016817358173011794,-4.317163234212843e-5,3.137068706839119e-8,0.0016818964774662018,-4.303518866881324e-5,3.125235326029229e-8,0.0016820373053456571,-4.2976515779093504e-5,3.1199916976096325e-8,0.0016821908517579908,-4.298835334932385e-5,3.120645643391533e-8,0.001682381643870257,-4.305295001771544e-5,3.125647495228362e-8,0.0016826248641123465,-4.314669659029766e-5,3.1329875743603594e-8,0.0016829262935964223,-4.3243765750394774e-5,3.1404959032322505e-8,0.0016832827993444842,-4.3319058823132525e-5,3.1460773886099394e-8,0.0016836831808576592,-4.335081474193989e-5,3.147921387142313e-8,0.0016841094761317773,-4.332309858073908e-5,3.144709006843145e-8,0.0016845389965708768,-4.322812581928537e-5,3.1358136502702837e-8,0.0016849472827916928,-4.30680097516396e-5,3.121454317459761e-8,0.001685311817324549,-4.28553785051464e-5,3.102747616737498e-8,0.0016856160259362443,-4.2612465496661675e-5,3.081620600067579e-8,0.0016858529647612876,-4.2368472572295754e-5,3.060568908899294e-8,0.0016860279929869306,-4.2155252212118004e-5,3.042272064814904e-8,0.0016861597397253318,-4.2001707138160697e-5,3.029110352696416e-8,0.001686278802546357,-4.192753075558542e-5,3.0226450956112963e-8,0.0016864236511896307,-4.1937096150845514e-5,3.023131644925384e-8,0.0016866333005143353,-4.20148809990313e-5,3.029172471873377e-8,0.0016869370383114897,-4.212468985170035e-5,3.0376837396555156e-8,0.0016873432300061099,-4.221528826700933e-5,3.0443795692792346e-8,0.0016878316433975797,-4.223370069387507e-5,3.044875659726567e-8,0.0016883549945588567,-4.214339067565662e-5,3.0361907947096335e-8,0.0016888524992501178,-4.193939125212146e-5,3.017996755366323e-8,0.0016892708942925403,-4.165129888299081e-5,2.992858118803242e-8,0.0016895823148465297,-4.1331399559831654e-5,2.9652240492607542e-8,0.0016897900659125485,-4.103474076847829e-5,2.9397395175287495e-8,0.0016899216625505006,-4.080203475990938e-5,2.919799465346154e-8,0.0016900157054978312,-4.0652031392961096e-5,2.906915313908238e-8,0.0016901099208097574,-4.058288462987776e-5,2.900853004866035e-8,0.0016902339270298944,-4.057817378667731e-5,2.900165126974593e-8,0.0016904065626526063,-4.061354355146046e-5,2.9027644312851774e-8,0.0016906360051758417,-4.0661950119559325e-5,2.9063648467584324e-8,0.0016909209995482196,-4.069723028481099e-5,2.9087710885649258e-8,0.0016912522654108416,-4.069653884596306e-5,2.9080721860103752e-8,0.0016916138646757722,-4.064230977992161e-5,2.9028017183053914e-8,0.0016919847467131485,-4.052416230559773e-5,2.8921020015667242e-8,0.0016923408945919195,-4.034078146507427e-5,2.8758904768726176e-8,0.0016926584456100585,-4.0101338254094135e-5,2.854984370404633e-8,0.0016929177886920088,-3.98256830559316e-5,2.8311126828899853e-8,0.001693108077881154,-3.954252987433632e-5,2.8067479641023334e-8,0.0016932310746483276,-3.928519728252996e-5,2.7847258747180767e-8,0.0016933029691601435,-3.908519792267514e-5,2.767686433700739e-8,0.0016933530634665743,-3.896487647791898e-5,2.7574483226122663e-8,0.0016934189419301243,-3.893091195901987e-5,2.7544749748504323e-8,0.0016935386906464923,-3.897054727601237e-5,2.7575867805514548e-8,0.001693741560057379,-3.905203356829756e-5,2.7640332995878002e-8,0.0016940391412425884,-3.9130122676386634e-5,2.7699808677760945e-8,0.0016944196388182435,-3.9156405028759944e-5,2.7713881316001143e-8,0.0016948479443695268,-3.909270277009998e-5,2.7651188701418565e-8,0.0016952732925359264,-3.892369137957591e-5,2.749979593321849e-8,0.0016956435737868081,-3.8663481150373246e-5,2.7272496371780773e-8,0.001695921508217519,-3.835205250275875e-5,2.7003629854952092e-8,0.0016960956761315402,-3.804202367397545e-5,2.67378143191e-8,0.0016961815319577094,-3.778160361537539e-5,2.6515529524935576e-8,0.001696213032473906,-3.7601416121365983e-5,2.6362069074866936e-8,0.0016962301457196613,-3.750973613700963e-5,2.628370233701135e-8,0.0016962680770975457,-3.749551816840239e-5,2.627045669394839e-8,0.0016963512376621233,-3.753538910232288e-5,2.63021853253086e-8,0.0016964917453452192,-3.7600818583413475e-5,2.635465438290942e-8,0.001696690651419292,-3.766350660714986e-5,2.6404007688425848e-8,0.001696940137771745,-3.769874102950349e-5,2.642947829630893e-8,0.0016972256658882062,-3.7687335396604675e-5,2.6414948818137022e-8,0.0016975277902204365,-3.761694740849289e-5,2.635007890531258e-8,0.001697823895555182,-3.7483365373189244e-5,2.6231474474216885e-8,0.0016980904064073249,-3.729186542931282e-5,2.6063916854335785e-8,0.0016983059629982868,-3.705818431813839e-5,2.5861193564983613e-8,0.00169845567523588,-3.6808209557159376e-5,2.5645733638452276e-8,0.0016985358748413822,-3.6575286342219624e-5,2.544614117888997e-8,0.0016985578725676185,-3.6394393189292205e-5,2.5292069524213555e-8,0.0016985486004877865,-3.629367901585675e-5,2.5206946956193076e-8,0.001698546470920179,-3.628561471787852e-5,2.5200532434859682e-8,0.0016985925376170278,-3.6361141746669543e-5,2.5264171502710526e-8,0.0016987192823167937,-3.648970911878939e-5,2.537113473313952e-8,0.0016989407603901555,-3.66260131869023e-5,2.548261022146134e-8,0.0016992475797464068,-3.672165020583402e-5,2.5557724392811732e-8,0.0016996084606618878,-3.673811638230782e-5,2.5564517650592807e-8,0.001699977956475142,-3.6657310285023185e-5,2.5488638588697726e-8,0.0017003082070326627,-3.648654916289649e-5,2.5337305501061796e-8,0.001700561508238771,-3.625653060246809e-5,2.5137301531646965e-8,0.0017007199892369825,-3.601259358681587e-5,2.492738326789755e-8,0.0017007892677775634,-3.580192599678626e-5,2.474739066190967e-8,0.0017007949978842718,-3.566104751616369e-5,2.462773297309177e-8,0.0017007740285271689,-3.560774970729352e-5,2.4582760104628268e-8,0.001700763881614479,-3.5639540723169225e-5,2.4609678123756305e-8,0.0017007942876682992,-3.5737747088271245e-5,2.4692199666377635e-8,0.0017008827935677405,-3.5874468764077714e-5,2.48064931342209e-8,0.0017010342865269056,-3.601946403066804e-5,2.4926953335125145e-8,0.0017012429683338664,-3.614526778038245e-5,2.503041713192252e-8,0.0017014952046849267,-3.623023427960677e-5,2.5098644185563178e-8,0.001701772238022168,-3.626002631665762e-5,2.5119562344499273e-8,0.0017020524196195597,-3.6228338899696296e-5,2.5087946189913077e-8,0.0017023131682198593,-3.613749747676565e-5,2.500601481098576e-8,0.0017025331952084945,-3.599911636755302e-5,2.488403054979358e-8,0.001702695545569224,-3.583443484893609e-5,2.4740519688495516e-8,0.001702791658995604,-3.567341761960704e-5,2.4601345097724025e-8,0.001702825905263925,-3.5551336305842663e-5,2.449660803475595e-8,0.0017028188818827854,-3.550180632355494e-5,2.4454604213756933e-8,0.001702806735149731,-3.5546798682885895e-5,2.4493348244526906e-8,0.0017028341827005904,-3.5686793861779424e-5,2.4612368548798255e-8,0.0017029417119942861,-3.589622192692521e-5,2.4789084250634145e-8,0.001703151464359933,-3.612826882154989e-5,2.4983140816697334e-8,0.0017034584180842351,-3.632857896050061e-5,2.514822835935455e-8,0.0017038313132765339,-3.645226816286234e-5,2.5246595649292e-8,0.0017042226379164888,-3.647699395454146e-5,2.5260079820686068e-8,0.0017045828447247262,-3.640761249596701e-5,2.5193854756660187e-8,0.0017048733046878682,-3.627237682470769e-5,2.5072903100127402e-8,0.0017050744960167964,-3.611354589471979e-5,2.4933747465570844e-8,0.0017051883610562926,-3.597597816658294e-5,2.4814589910546375e-8,0.0017052354342512147,-3.5896752180398834e-5,2.4746512664333185e-8,0.0017052482576193312,-3.589793749996182e-5,2.4747526264296278e-8,0.001705263072666433,-3.598363726072869e-5,2.482032549880074e-8,0.0017053119227668128,-3.614137236019604e-5,2.4953695706256513e-8,0.0017054169711461474,-3.6346798808851755e-5,2.5126630491637535e-8,0.001705587948875609,-3.656997064057401e-5,2.5313627491764613e-8,0.0017058225445119196,-3.678132058142517e-5,2.548965965479151e-8,0.0017061087821257628,-3.69561651974611e-5,2.563388881603951e-8,0.0017064282269366776,-3.70773600928232e-5,2.5731871018470053e-8,0.0017067591018042412,-3.713639521195745e-5,2.5776518819360373e-8,0.0017070789070781516,-3.71335783856623e-5,2.576833424327725e-8,0.001707366647808429,-3.7077896034809675e-5,2.5715344204894712e-8,0.0017076050669122245,-3.6986775316050295e-5,2.563286430776859e-8,0.0017077833482693745,-3.6885519284883346e-5,2.5542879446377526e-8,0.0017079005422884115,-3.6805662765103294e-5,2.547244983570222e-8,0.0017079692563718653,-3.678101653653675e-5,2.545019000338502e-8,0.0017080179220300188,-3.684031594380135e-5,2.549999137370553e-8,0.0017080887479602191,-3.699691368462634e-5,2.5632392147724558e-8,0.001708228641281455,-3.723898589582162e-5,2.583648649016691e-8,0.0017084735851781347,-3.752657719115359e-5,2.607763848747086e-8,0.0017088326289339622,-3.7800822890985845e-5,2.6305464895935834e-8,0.0017092809717665692,-3.800389880699946e-5,2.6470864658603684e-8,0.001709767617820864,-3.810010719756817e-5,2.6543979991628234e-8,0.0017102337850382358,-3.8086965178193554e-5,2.6523588534275293e-8,0.0017106319934249428,-3.799214504651016e-5,2.6434316445958196e-8,0.0017109375331463164,-3.786074079930412e-5,2.6315481437475767e-8,0.0017111503518974585,-3.774050858751181e-5,2.6208213356204093e-8,0.0017112901426587356,-3.767043065840216e-5,2.6145574168089167e-8,0.001711388473927356,-3.767435097338324e-5,2.6147233879245078e-8,0.0017114807478860903,-3.7759148181293965e-5,2.6218181852708225e-8,0.0017115993915441882,-3.791616629237784e-5,2.6350243451075947e-8,0.0017117688340202747,-3.812478479964005e-5,2.6525321161408846e-8,0.0017120025462314225,-3.8357269218783055e-5,2.671957407701288e-8,0.0017123022368902155,-3.858401705662783e-5,2.690781030939024e-8,0.0017126589667248331,-3.8778319536625255e-5,2.706742096037333e-8,0.0017130556713426438,-3.892000575518932e-5,2.718139609955358e-8,0.0017134704463890348,-3.8997637220543705e-5,2.72401837338603e-8,0.0017138799079658143,-3.900926090925543e-5,2.7242381927571813e-8,0.0017142621560916798,-3.896209930041389e-5,2.719452965369347e-8,0.0017145992769997747,-3.887164408049795e-5,2.7110327165076998e-8,0.0017148795732618073,-3.876038090260755e-5,2.7009443934541433e-8,0.0017150997739135154,-3.8656079592503165e-5,2.691587804537622e-8,0.0017152674011576832,-3.858919935674702e-5,2.6855564023675893e-8,0.001715402930080424,-3.858850645778573e-5,2.68525620088811e-8,0.0017155403030105689,-3.867411814540851e-5,2.6923223505940072e-8,0.001715723354598753,-3.884849496986257e-5,2.706875788258036e-8,0.0017159957908326042,-3.9088518326831626e-5,2.7268754434345864e-8,0.0017163851403779347,-3.9344697300168935e-5,2.748066663980295e-8,0.001716886993958065,-3.955318428218216e-5,2.7650053898035193e-8,0.0017174602847125158,-3.965909042471542e-5,2.773040269966326e-8,0.001718040134972025,-3.963938085916244e-5,2.770265841257851e-8,0.0017185625897166842,-3.9511228867599055e-5,2.758236823583223e-8,0.0017189868062355465,-3.932167724591736e-5,2.7410713552494807e-8,0.001719303790073166,-3.912724285345024e-5,2.7236765021706585e-8,0.0017195315916373054,-3.897569321704473e-5,2.710159348901865e-8,0.0017197039490144403,-3.889639604552238e-5,2.7029929542711243e-8,0.001719859026622647,-3.889874932274322e-5,2.7028998797406246e-8,0.0017200313178398767,-3.897534491821806e-5,2.7091549749431207e-8,0.0017202469671751624,-3.910684938799904e-5,2.7200319928931065e-8,0.001720521602018453,-3.926695176135516e-5,2.7332412797781222e-8,0.001720859794259045,-3.942689817955544e-5,2.7463158757262513e-8,0.001721255728863236,-3.955955466122989e-5,2.756947544016638e-8,0.0017216948873827532,-3.9642868900642176e-5,2.7632707506931933e-8,0.001722156569161592,-3.966254350579579e-5,2.764085344336467e-8,0.0017226170439005363,-3.9613697538888915e-5,2.7590003469533287e-8,0.001723052976870324,-3.9501301872358064e-5,2.7484764624405265e-8,0.0017234446600947672,-3.933941901930363e-5,2.733763268972299e-8,0.001723778754377761,-3.914951517199835e-5,2.7167486552635708e-8,0.0017240504576373702,-3.8958063040786535e-5,2.6997386666773607e-8,0.0017242650711087881,-3.8793531002493264e-5,2.6851810256787167e-8,0.0017244389431611393,-3.868270733259092e-5,2.675337383241879e-8,0.0017245995113033862,-3.864602832841346e-5,2.671885005626151e-8,0.0017247834536315045,-3.8691681327300336e-5,2.6754311849929e-8,0.0017250313802367769,-3.880929377612953e-5,2.6850034141866425e-8,0.001725377842565471,-3.896581169015178e-5,2.697723630726428e-8,0.0017258375470063556,-3.910800396460535e-5,2.7090318371162557e-8,0.0017263930836693708,-3.917572346874251e-5,2.7138107085967308e-8,0.0017269933872087041,-3.912436180795919e-5,2.7082925689746156e-8,0.0017275689865215494,-3.8945638522437385e-5,2.691835379492017e-8,0.0017280585048235183,-3.86727214245852e-5,2.6673635556659343e-8,0.001728431073422244,-3.836534884152783e-5,2.6400818438587404e-8,0.0017286923868734853,-3.808504387510162e-5,2.61532106623058e-8,0.0017288748816655678,-3.787530232705404e-5,2.5968120288942417e-8,0.0017290217154868146,-3.7754199534558863E-05,2.5860493154658515e-8,0.0017291734675064128,-3.771726995413944e-5,2.582562501534354e-8,0.0017293607820238672,-3.7744848247661723E-05,2.584579636728525e-8,0.001729602000315515,-3.780948874960963e-5,2.5896883802857644e-8,0.001729903599395464,-3.788165973355425e-5,2.595331727889163e-8,0.0017302617181777903,-3.7933690493989186e-5,2.5991389794231897e-8,0.0017306640141175572,-3.794259510943676e-5,2.5991547940454676e-8,0.001731091755867424,-3.789224556048095e-5,2.594015958103042e-8,0.001731522255539111,-3.7775051882364856e-5,2.5830937167328825e-8,0.0017319317604426708,-3.7593037290670407e-5,2.5665905426726304e-8,0.0017322987686243735,-3.735795299004614e-5,2.545555029736884e-8,0.0017326074067128012,-3.709011144855787e-5,2.5217806685687195e-8,0.0017328503457029842,-3.6815919057722917e-5,2.4975834819967113e-8,0.001733030801250284,-3.6564297546596944e-5,2.4754770932095832e-8,0.001733163245050693,-3.636230112525841e-5,2.4577788776660804e-8,0.0017332725692263016,-3.6230386059595666e-5,2.446195888578073e-8,0.001733391561335409,-3.6177777041230204e-5,2.4414354594100277e-8,0.0017335564073636222,-3.619837183913728e-5,2.4428778625296542e-8,0.001733799814146551,-3.626816379255833e-5,2.4483858210644657e-8,0.0017341419144584454,-3.634606741287226e-5,2.454398795466479e-8,0.0017345806750870597,-3.638048933612316e-5,2.4565021790145197e-8,0.0017350858869240476,-3.632295309658755e-5,2.4505843202086038e-8,0.0017356024788424108,-3.614624025006184e-5,2.4343764994910206e-8,0.0017360663216553012,-3.585874629062718e-5,2.408675934782713e-8,0.0017364275421104804,-3.550486845228883e-5,2.377374351553505e-8,0.001736668888599713,-3.514850340937432e-5,2.34602712311622e-8,0.001736808661045457,-3.4848567953173e-5,2.3197265336036242e-8,0.001736888544939611,-3.464037865199596e-5,2.301485336433552e-8,0.0017369558513605297,-3.4530440416808935e-5,2.29179595201377e-8,0.001737049707092597,-3.4502354376221574e-5,2.289165624475731e-8,0.0017371947516276504,-3.4526982344086895e-5,2.2910199010581445e-8,0.0017374008073448293,-3.4571512886728264e-5,2.2944984052831473e-8,0.001737665467048844,-3.460545560147143e-5,2.2969695297045837e-8,0.001737977290689824,-3.460390307791772e-5,2.296299541437974e-8,0.0017383186141002541,-3.454918032334136e-5,2.290982677063709e-8,0.0017386679295325906,-3.4431804356590167e-5,2.2802188582601254e-8,0.0017390021734525031,-3.42511906097866e-5,2.2639776047910924e-8,0.0017392992945751758,-3.40160914722638e-5,2.243042545250072e-8,0.0017395413117880889,-3.374434814309473e-5,2.2189933916874547e-8,0.0017397176600680104,-3.346135952529788e-5,2.1940688488459516e-8,0.0017398281621878566,-3.319689225605055e-5,2.170877243418754e-8,0.0017398847366847004,-3.2980307378858836e-5,2.1519663391740078e-8,0.00173991100205662,-3.283480466826047e-5,2.1393128136041958e-8,0.0017399392899709579,-3.27718231350248e-5,2.1338379242105724e-8,0.00174000521831946,-3.278698042141254e-5,2.1350723083240454e-8,0.001740140572588363,-3.285870325852261e-5,2.1410652793135758e-8,0.0017403655886877377,-3.295034303669861e-5,2.1485963701877946e-8,0.0017406820927880144,-3.301629939579607e-5,2.153721791335664e-8,0.0017410695269251995,-3.301209684177935e-5,2.152643905078453e-8,0.001741486310794703,-3.290702867540473e-5,2.1427864745405244e-8,0.0017418784545159788,-3.269589869418132e-5,2.1237862433750336e-8,0.0017421948525763043,-3.2404476839655194e-5,2.097945465702013e-8,0.001742404370709457,-3.208389090653782e-5,2.069734831489266e-8,0.001742506671572139,-3.179415040864402e-5,2.0443603476147352e-8,0.0017425307722198473,-3.158389373995162e-5,2.0260073766504838e-8,0.0017425223974869423,-3.147622681133658e-5,2.0166207874633754e-8,0.0017425275508909542,-3.146622368211866e-5,2.0157058325399752e-8,0.0017425801811898768,-3.152827253738807e-5,2.020986020759265e-8,0.0017426972860252556,-3.162719052466486e-5,2.02938080720638e-8,0.001742880085460341,-3.172780363660379e-5,2.0378372619537326e-8,0.001743118076178938,-3.180084546028723e-5,2.0438317988914532e-8,0.0017433934077427334,-3.1825558838409014e-5,2.045583270732787e-8,0.0017436844082488409,-3.179033969714021e-5,2.0421013873564265e-8,0.001743968178512343,-3.169263001235832e-5,2.0331783624667846e-8,0.0017442227209409098,-3.153871728518193e-5,2.0193782525411485e-8,0.0017444291701622036,-3.134350069999404e-5,2.002022746940685e-8,0.0017445744879534223,-3.112978763186553e-5,1.9831294365844262e-8,0.0017446545474839863,-3.092639446856581e-5,1.9652370870985962e-8,0.0017446769299296102,-3.0764373350770444e-5,1.9510621046903156e-8,0.0017446621867443558,-3.067120727891532e-5,1.9429795770389297e-8,0.001744642159515886,-3.066382603124781e-5,1.9424111620866493e-8,0.0017446545782597647,-3.074243219545489e-5,1.9492972810802038e-8,0.0017447345609175441,-3.088764647827402e-5,1.961870511808151e-8,0.0017449051754598907,-3.106281392238331e-5,1.9768826171514667e-8,0.0017451700230479688,-3.122163105108318e-5,1.9902887093021913e-8,0.001745510408947374,-3.1319374667683715e-5,1.9982307573413395e-8,0.001745888357283682,-3.1324766347923475e-5,1.998060209584599e-8,0.0017462551360621196,-3.122919694479231e-5,1.989118907219179e-8,0.0017465634988662125,-3.105046157655002e-5,1.9730384470556232e-8,0.001746780545164631,-3.0829192817083005e-5,1.9534083265630877e-8,0.0017468971763283654,-3.06181089004315e-5,1.9348284579479396e-8,0.0017469304559974707,-3.0466979567041213e-5,1.921600927524104e-8,0.001746917542182514,-3.0408580265584186e-5,1.916519343229281e-8,0.001746903536584843,-3.0450937289348743e-5,1.9202135362128732e-8,0.0017469283478326418,-3.057824727716383e-5,1.931250208156185e-8,0.0017470175401144699,-3.075870969388561e-5,1.9468283092315117e-8,0.0017471793662891689,-3.095489208974001e-5,1.9636835355944387e-8,0.00174740696584924,-3.1132521919019314e-5,1.978845734405289e-8,0.0017476831047323403,-3.126577909856488e-5,1.9900875698021727e-8,0.0017479851225330183,-3.1339285687671686e-5,1.9960887050540934e-8,0.0017482888771933986,-3.134799753916344e-5,1.9964247391127438e-8,0.001748571500534339,-3.1296247023240655e-5,1.9914888607216414e-8,0.0017488134063673208,-3.1196725784627565e-5,1.9824099003596076e-8,0.0017490001909731922,-3.106955308858083e-5,1.970973106837139e-8,0.0017491248720657058,-3.0941022082626086e-5,1.9595042768266226e-8,0.0017491904664698418,-3.084128927975832e-5,1.9506546090950694e-8,0.0017492122725144203,-3.080019758367981e-5,1.9470218613974216e-8,0.0017492184473760612,-3.084086291599031e-5,1.950583763271849e-8,0.0017492470171063378,-3.097194995726486e-5,1.9620297100766168e-8,0.0017493381646387358,-3.1181363894115793e-5,1.980227981843363e-8,0.0017495228601829887,-3.143510381205071e-5,2.0021485851797534e-8,0.0017498116793050868,-3.168386290175472e-5,2.023458425088819e-8,0.0017501889553554505,-3.18764773563137e-5,2.039704390946832e-8,0.001750615655745262,-3.197543249573554e-5,2.0476649055390935e-8,0.0017510402683068693,-3.1968199999134966e-5,2.0463276536587624e-8,0.0017514133531797574,-3.187031880307763e-5,2.037138563020928e-8,0.0017517005273633118,-3.1719998107685436e-5,2.0235063634656074e-8,0.001751890219662361,-3.156694813316782e-5,2.009806183335921e-8,0.0017519948081852045,-3.1459214757831945e-5,2.0002203745109712e-8,0.0017520456413406555,-3.14316280501743e-5,1.99773642676767e-8,0.001752083843670919,-3.149863525213701e-5,2.0035412948970665e-8,0.0017521497040240116,-3.1652918673865666e-5,2.0169255510395947e-8,0.0017522736069611874,-3.186951297035694e-5,2.0356620338662876e-8,0.0017524707370152176,-3.211356229077129e-5,2.056690037038114e-8,0.0017527403103441905,-3.234896981308914e-5,2.076865466262888e-8,0.0017530684808992239,-3.254545176213017e-5,2.0935651692450514e-8,0.0017534331318351181,-3.2682714956734884e-5,2.1050408448247448e-8,0.0017538088119477358,-3.275180452227584e-5,2.110531752462392e-8,0.0017541707526388716,-3.275447431229004e-5,2.1102114748483773e-8,0.0017544976901405082,-3.270162706579011e-5,2.105056824283674e-8,0.0017547738024637697,-3.2611589026689284e-5,2.096699993899653e-8,0.0017549902985381242,-3.250844445279376e-5,2.0872790992964694e-8,0.001755147084288628,-3.242014951493518e-5,2.0792620166438958e-8,0.001755254570490484,-3.2375793594230804e-5,2.0751927960372814e-8,0.001755335063281145,-3.2401220502996406e-5,2.0772996896363735e-8,0.0017554223357314845,-3.251259859283147e-5,2.0869356621329078e-8,0.0017555573977173214,-3.2708863724273736e-5,2.1039332104000612e-8,0.0017557790984082053,-3.29660727723672e-5,2.126132814313656e-8,0.0017561108323753565,-3.3238262436040336e-5,2.1494763264115556e-8,0.0017565485849542516,-3.346811995275699e-5,2.1689479904005575e-8,0.0017570576145160576,-3.360552772869162e-5,2.1801953478252693e-8,0.001757581785070488,-3.362585143779291e-5,2.1811245999041253e-8,0.0017580620722044517,-3.353851148587489e-5,2.1726427797049774e-8,0.001758455202278241,-3.3382035778471196e-5,2.158208310470156e-8,0.0017587444079113072,-3.320959575010596e-5,2.1425399176948597e-8,0.0017589399770165945,-3.307263661221911e-5,2.130160656072588e-8,0.0017590722808459125,-3.3008502295315075e-5,2.1243072677899854e-8,0.001759181556547813,-3.3034286998855964e-5,2.1264051244620618e-8,0.0017593078653479616,-3.314644102862432e-5,2.1360602034657684e-8,0.0017594831921096522,-3.332452486865661e-5,2.1514143545573805e-8,0.0017597265437465275,-3.353738875474003e-5,2.1697021326259336e-8,0.001760042245970357,-3.3750244753001815e-5,2.1878713640531822e-8,0.001760421146334321,-3.393124357669487e-5,2.2031497920959415e-8,0.0017608439638752132,-3.405644801825657e-5,2.2134681640893213e-8,0.0017612857471203435,-3.411264048046515e-5,2.2176972713998292e-8,0.0017617204091223166,-3.409797973084421e-5,2.2157031793999206e-8,0.0017621245438929386,-3.402096746414191e-5,2.208259287114386e-8,0.0017624801775086999,-3.3898450706873454e-5,2.1968740632231774e-8,0.0017627765982876126,-3.3753300304850276e-5,2.183585863215288e-8,0.001763011621842634,-3.3612016549370004e-5,2.1707446371806972e-8,0.0017631925713161728,-3.350214912888116e-5,2.1607729651469524e-8,0.0017633370417948848,-3.344913871513708e-5,2.1558783250075647e-8,0.0017634730174059953,-3.347197967528787e-5,2.1576714714329268e-8,0.0017636371116576798,-3.357742597786236e-5,2.1666704084487572e-8,0.0017638691979690627,-3.3753723774377576e-5,2.181772916999189e-8,0.0017642023031790117,-3.396680513750332e-5,2.1999445627985694e-8,0.0017646491667109299,-3.4163476660183754e-5,2.2165086343053056e-8,0.0017651911849654452,-3.428501454789286e-5,2.226334653764835e-8,0.001765778160698935,-3.428858702670496e-5,2.2257091907866984e-8,0.0017663432093342334,-3.416606996623403e-5,2.213983656780172e-8,0.0017668269543614896,-3.3948415208319496e-5,2.193955489711035e-8,0.001767197842766506,-3.369259112538415e-5,2.17070724834961e-8,0.0017674586193811824,-3.34596154530708e-5,2.1496498412280247e-8,0.001767639060592299,-3.329574652596208e-5,2.1348468166328244e-8,0.0017677821871205088,-3.3223440312985864e-5,2.1282180173486558e-8,0.0017679311822968995,-3.324154570836546e-5,2.129578103953367e-8,0.001768120512436396,-3.333086353608994e-5,2.1371561635770116e-8,0.0017683715270797181,-3.346142626072527e-5,2.148260408851196e-8,0.0017686914318105862,-3.3599409128902524e-5,2.1598953117881766e-8,0.0017690744739801523,-3.371291615094851e-5,2.1692652330809286e-8,0.0017695045695388376,-3.3776430454713476e-5,2.1741529840179073e-8,0.0017699588242402324,-3.3773791444695706e-5,2.1731694812881347e-8,0.0017704114732510778,-3.369964876976124e-5,2.1658752122008647e-8,0.0017708378094016797,-3.355943690940463e-5,2.152778106353521e-8,0.0017712176390383754,-3.336799684118138e-5,2.1352151053456795e-8,0.0017715378651225137,-3.314720089247531e-5,2.1151437607701027e-8,0.0017717941126926234,-3.2923077927578334e-5,2.0948840418387312e-8,0.0017719915599731899,-3.272273093629134e-5,2.0768364307715262e-8,0.0017721450953806894,-3.257108279253322e-5,2.063183815712094e-8,0.001772278789586462,-3.248736044869667e-5,2.0555760321616602e-8,0.0017724243969323124,-3.2481099228891417e-5,2.0547838756955484e-8,0.0017726180377305497,-3.2547672204280884e-5,2.06032360891902e-8,0.001772893902096436,-3.26643881516983e-5,2.070137445010743e-8,0.0017732745145420026,-3.278970120097843e-5,2.0805422495871913e-8,0.0017737592672930375,-3.286910117515717e-5,2.0867510935645095e-8,0.0017743165104114895,-3.285007607212869e-5,2.0841794381781585e-8,0.0017748868641271837,-3.27030730663727e-5,2.0702786663879134e-8,0.0017754014530360297,-3.2437768348831866e-5,2.0459662686927267e-8,0.0017758080743716612,-3.2102608481630945e-5,2.015584789108212e-8,0.0017760903595036206,-3.17656634260758e-5,1.985200104905266e-8,0.0017762693117928238,-3.1488255206219554e-5,1.9602496536206447e-8,0.0017763894591366236,-3.13062590108772e-5,1.9438747273234566e-8,0.001776500414190258,-3.12255836885439e-5,1.9365283650061506e-8,0.0017766430268873303,-3.1228419406428315e-5,1.9365541425495753e-8,0.0017768429247380117,-3.128342719222774e-5,1.9411160162745227e-8,0.0017771097947912773,-3.1355028823638904e-5,1.9470365609482324e-8,0.0017774396800211817,-3.141000926638304e-5,1.9513809181670135e-8,0.0017778182926467716,-3.142162035464175e-5,1.951808140830944e-8,0.0017782244717445747,-3.137198226709649e-5,1.946769186203101e-8,0.0017786336024299082,-3.12533185341731e-5,1.9356066032986675e-8,0.0017790209705546684,-3.1068226775794e-5,1.9185763398043137e-8,0.0017793650121143564,-3.08290205222032e-5,1.8967926769402895e-8,0.001779650296646995,-3.055604937514018e-5,1.8720829744334336e-8,0.0017798698743530228,-3.0274995636721267e-5,1.846747256260845e-8,0.001780026632235612,-3.001344158238894e-5,1.8232467517967285e-8,0.0017801335374979842,-2.9797089846618077e-5,1.8038579085288705e-8,0.0017802127450977066,-2.964590951538579e-5,1.7903218620709243e-8,0.0017802935187865058,-2.9570467972433672e-5,1.783518762572123e-8,0.0017804088777299578,-2.9568714404354944e-5,1.7831942719272197e-8,0.0017805907080136712,-2.9623577448738986e-5,1.7877681205500904e-8,0.0017808630276179797,-2.97023326731302e-5,1.7943009994474517e-8,0.0017812337934054229,-2.97595557883807e-5,1.7987695659313328e-8,0.0017816872967592035,-2.9745687070046982e-5,1.7968220015004007e-8,0.0017821813976015835,-2.962172070135213e-5,1.7850629717166458e-8,0.0017826548299887984,-2.9376324177287026e-5,1.762553130680372e-8,0.0017830461959892749,-2.903634032102028e-5,1.731731488754778e-8,0.0017833176117902473,-2.866124927995671e-5,1.6979208783705445e-8,0.001783469533852475,-2.832122375637814e-5,1.6673724822837606e-8,0.0017835376035968266,-2.80706105762117e-5,1.6448993998207882e-8,0.0017835749164607615,-2.793168172891396e-5,1.6324306949224888e-8,0.0017836317390693452,-2.7894493168831586e-5,1.6290136262871556e-8,0.0017837425116183111,-2.7927737072698468e-5,1.6318029727125984e-8,0.0017839222251040216,-2.7991952248573566e-5,1.6372552649405453e-8,0.0017841690180765415,-2.804960543379875e-5,1.6420305148628225e-8,0.0017844690921453375,-2.8070762770376914e-5,1.6434881896134044e-8,0.001784801494145308,-2.803540319002629e-5,1.6398785045025665e-8,0.0017851419554334824,-2.7933929717305372e-5,1.6303760303012625e-8,0.0017854659718042635,-2.7766907604290468e-5,1.6150522430904983e-8,0.0017857515136427459,-2.7544366750350456e-5,1.5948164497142894e-8,0.0017859816002243757,-2.7284609584283965e-5,1.571315251966609e-8,0.0017861467536977667,-2.7012260273114013e-5,1.5467614316026404e-8,0.0017862470230057806,-2.6755286369400636e-5,1.5236648496569402e-8,0.0017862930134701384,-2.654104265296623e-5,1.504470406978934e-8,0.001786305424195102,-2.6391773125555355e-5,1.491146539228525e-8,0.0017863128449208082,-2.6320220335777346e-5,1.4847885035371189e-8,0.0017863478278571186,-2.632612309632168e-5,1.4853112441925018e-8,0.0017864415524204687,-2.639440009895842e-5,1.491303463720827e-8,0.0017866176433893105,-2.649564870787032e-5,1.500094022968379e-8,0.0017868858723667914,-2.6589505322540724e-5,1.5080702406757717e-8,0.0017872368982414784,-2.66314436018206e-5,1.5112903973863852e-8,0.0017876399981771522,-2.6583121415397484e-5,1.5063969741293373e-8,0.0017880463839678022,-2.6424855833963814e-5,1.4917086903880453e-8,0.0017884001103203367,-2.61662566626825e-5,1.4681479769128718e-8,0.0017886554421320897,-2.5848825556468653e-5,1.439459563665528e-8,0.0017887942451537537,-2.5535601758596886e-5,1.4112816495281188e-8,0.0017888338091817063,-2.5289736988679483e-5,1.3892330893168733e-8,0.0017888195185604239,-2.515213106178181e-5,1.3769205429052592e-8,0.0017888063464290775,-2.5129846263159923e-5,1.3749151498984439e-8,0.0017888398156686227,-2.5199537269306553e-5,1.3810764966794239e-8,0.0017889451574657782,-2.5320670226036306e-5,1.391749936516575e-8,0.0017891262814678304,-2.544988601042015e-5,1.4030567902762325e-8,0.0017893708634015488,-2.5550922719877188e-5,1.4117760285831568e-8,0.0017896570726811836,-2.5599109255723216e-5,1.4157333008626661e-8,0.0017899592671993573,-2.5582042811262578e-5,1.4138489270469296e-8,0.0017902519438446774,-2.5498478260559e-5,1.4060321791036643e-8,0.0017905123629933307,-2.535677868794753e-5,1.3930440496755607e-8,0.0017907225488373376,-2.51734072821892e-5,1.3763682625522863e-8,0.0017908711693659085,-2.4971322438834654e-5,1.3580725771725944e-8,0.0017909554371954345,-2.4777821665357153e-5,1.3406151734326352e-8,0.0017909827283962571,-2.462135499749847e-5,1.3265522508586063e-8,0.001790971202300491,-2.4527148765017287e-5,1.3181360162542386e-8,0.0017909485628708425,-2.4512064252896147e-5,1.316846906372442e-8,0.0017909483769799933,-2.457975629539259e-5,1.3229610662378395e-8,0.0017910040460442844,-2.4717652977466054e-5,1.3352913035006776e-8,0.001791141441592685,-2.4897216452611835e-5,1.3512291120867038e-8,0.0017913719494893788,-2.5078198784446382e-5,1.367144672572904e-8,0.0017916878464235458,-2.5216509648907783e-5,1.3791025050547342e-8,0.0017920615866127356,-2.5274345945545365e-5,1.3837668829362787e-8,0.0017924499408709217,-2.5230505604992228e-5,1.3793113821811035e-8,0.001792803043549295,-2.508822447015411e-5,1.3660997294053245e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json new file mode 100644 index 000000000..bf8935107 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_16.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":16000,"numberOfSamples":1000,"samples":[0.0017930770944964171,-2.487756201187732e-5,1.3468791504217692e-8,0.0017932476264231187,-2.464987080068864e-5,1.3262714904077391e-8,0.0017933184724985877,-2.446409956071231e-5,1.3095425337680572e-8,0.0017933216314600794,-2.436869143477916e-5,1.3009865564682467e-8,0.0017933067138776958,-2.438639601001157e-5,1.3025800857085489e-8,0.0017933242278720884,-2.450889654783832e-5,1.3135191695059903e-8,0.0017934104016406212,-2.470298517826634e-5,1.330788790362845e-8,0.0017935796118112995,-2.4923857068963115e-5,1.35036193070344e-8,0.0017938254296263332,-2.512860398380717e-5,1.3684062401894767e-8,0.001794127049257825,-2.5285096932882215e-5,1.3820701756483629e-8,0.0017944568919538132,-2.537530987356056e-5,1.389769075082024e-8,0.0017947867111250417,-2.5394724503292413e-5,1.3911234845185292e-8,0.0017950914943699093,-2.5349982163249467e-5,1.3867468677974076e-8,0.0017953516485814604,-2.5256290869559507e-5,1.3780165902829643e-8,0.0017955543110713956,-2.513520274015715e-5,1.3668792904120013e-8,0.0017956944918898108,-2.501264398241291e-5,1.3556752559378335e-8,0.0017957763330320648,-2.4916631576514276e-5,1.3469287614057573e-8,0.0017958142078399008,-2.487403171878831e-5,1.343048298157746e-8,0.0017958328475770424,-2.4906014603702265e-5,1.3459107884232579e-8,0.001795865353512456,-2.5022541802827092e-5,1.3563657130380593e-8,0.001795948122041468,-2.521726303763574e-5,1.3737855679584164e-8,0.0017961127345561176,-2.546517299188524e-5,1.395871521848886e-8,0.0017963766324439365,-2.572537619201675e-5,1.4189187885469435e-8,0.0017967359302593923,-2.5949711291697144e-5,1.4386024761031048e-8,0.0017971637506210216,-2.6095329969824996e-5,1.451109103127541e-8,0.0017976155937020869,-2.6137143168968956e-5,1.4542469045381444e-8,0.0017980404371389018,-2.607573723966647e-5,1.4481422712615806e-8,0.001798394095120732,-2.5938065908348892e-5,1.4352832525648934e-8,0.0017986508156540284,-2.5770774714917362e-5,1.4199014670934582e-8,0.0017988099091846071,-2.5628118914854457e-5,1.4068743101640252e-8,0.0017988956039585806,-2.555773604555096e-5,1.4004458068040699e-8,0.0017989500158965364,-2.558822796060149e-5,1.4031230788508505e-8,0.0017990211621026053,-2.5722340085414784e-5,1.415084222610123e-8,0.0017991498357205768,-2.593791853046823e-5,1.4342850551324464e-8,0.0017993597382745207,-2.6195968610161597e-5,1.4571956673982097e-8,0.0017996538157950808,-2.645239065855816e-5,1.4798559267271849e-8,0.0018000169294873425,-2.666894130169837e-5,1.498852497549383e-8,0.0018004224996779246,-2.6820193009237008e-5,1.5119328433877708e-8,0.0018008399579285909,-2.6895709367472842e-5,1.5181911626012463e-8,0.0018012407279650508,-2.6898643187987404e-5,1.5179375808053418e-8,0.0018016019580566775,-2.6842624017871885e-5,1.512418529733506e-8,0.0018019083507358257,-2.6748422125539742e-5,1.503519386765796e-8,0.0018021529000758112,-2.664111066735776e-5,1.4935106313335826e-8,0.0018023373010458653,-2.654770620791294e-5,1.4848328300519829e-8,0.0018024724205052492,-2.6494772143160663e-5,1.4798742963175621e-8,0.0018025786668415908,-2.6505317999914305e-5,1.4806850211476605e-8,0.0018026854955645365,-2.659451656531552e-5,1.4885891179718516e-8,0.0018028287921071594,-2.6764406036804033e-5,1.5037147763755564e-8,0.0018030448604636129,-2.6999007434058543e-5,1.5245693907824705e-8,0.0018033608554715635,-2.726276700041339e-5,1.5479157196478573e-8,0.0018037839756043577,-2.750560873314212e-5,1.5692371417557645e-8,0.0018042943907072807,-2.767567790489397e-5,1.583886014992919e-8,0.0018048471164087917,-2.7736268154231167e-5,1.5886025345858665e-8,0.0018053841995643509,-2.7679480289528892e-5,1.582737530167465e-8,0.0018058526507647669,-2.752969711011927e-5,1.5685558185452904e-8,0.001806220217685462,-2.73353380759272e-5,1.550478294473961e-8,0.0018064829196074033,-2.715336860705409e-5,1.533667607943918e-8,0.001806663117932587,-2.7033305913710596e-5,1.5225741546222746e-8,0.001806800801895628,-2.7005730814722615e-5,1.5199028506319084e-8,0.0018069420013151019,-2.7077300335566203e-5,1.5261811538653193e-8,0.0018071276684187964,-2.7232000211422743e-5,1.5398964117004876e-8,0.0018073853085648632,-2.7437165696606414e-5,1.5580585890886757e-8,0.0018077246572371043,-2.7652248535832284e-5,1.576998693661435e-8,0.0018081377800550024,-2.7838089562507862e-5,1.5932006675260243e-8,0.0018086029626342595,-2.7964541054522235e-5,1.603977518121356e-8,0.0018090908374324907,-2.8014926126988497e-5,1.607861859878816e-8,0.00180957084697334,-2.7986978508900445e-5,1.6046829753568754e-8,0.0018100165314672806,-2.7890983536707856e-5,1.5953965389800106e-8,0.0018104089137041853,-2.774636589803873e-5,1.5817776136232783e-8,0.0018107380434183873,-2.7577939639375955e-5,1.5660833269492737e-8,0.0018110032945058872,-2.7412588632335316e-5,1.5507519669488106e-8,0.0018112130984671998,-2.727650820984009e-5,1.5381492498527788e-8,0.0018113845185778008,-2.719266881496396e-5,1.5303331370154355e-8,0.0018115426463610783,-2.7177984586301253e-5,1.5287947407869493e-8,0.0018117192686648675,-2.7239724617485946e-5,1.5341380468993828e-8,0.001811949680932402,-2.7371212382235838e-5,1.545703888127489e-8,0.0018122663836599232,-2.754807176709037e-5,1.561247872864076e-8,0.0018126893601793177,-2.772785807579092e-5,1.57692019263019e-8,0.001813215168157243,-2.7856683016959833e-5,1.5878661656300398e-8,0.001813810503341971,-2.788443523714781e-5,1.589593222254393e-8,0.0018144169960900853,-2.7784424994027194e-5,1.5797369795099836e-8,0.0018149690546354657,-2.7567238609616395e-5,1.5593102180247856e-8,0.0018154173615913274,-2.7279217321055754e-5,1.532562475157829e-8,0.001815745477353155,-2.698524284095293e-5,1.5054105867581623e-8,0.001815971625884253,-2.674564379645672e-5,1.4833294082824518e-8,0.0018161376350310534,-2.6598869981665784e-5,1.4697715161200344e-8,0.0018162930699050063,-2.6555272801256695e-5,1.46561098570472e-8,0.0018164816791041126,-2.6600309925083196e-5,1.4694563048089877e-8,0.001816733162707175,-2.6702680190249542e-5,1.4784125685246063e-8,0.0018170600913158257,-2.682355433898887e-5,1.4889335877885533e-8,0.0018174585911996668,-2.6924764974141972e-5,1.4975656178105195e-8,0.0018179114635388195,-2.697514492077015e-5,1.5015123550887387e-8,0.0018183927840198378,-2.69547379106428e-5,1.499003182489609e-8,0.0018188731580403156,-2.6856711418009936e-5,1.4894556739454665e-8,0.001819324793629755,-2.6687029559253713e-5,1.473440683021408e-8,0.0018197256785068433,-2.6462277654925132e-5,1.4524849413287513e-8,0.001820062373922574,-2.6206258898886165e-5,1.428764312060864e-8,0.001820331254382838,-2.5946127881015275e-5,1.4047536963377575e-8,0.001820538445168254,-2.5708755861324498e-5,1.3828946837314153e-8,0.0018206989383891886,-2.5517624437804906e-5,1.365308557110985e-8,0.0018208352337955717,-2.5390152599451144e-5,1.3535489407026761e-8,0.0018209755912363625,-2.5335207243642732e-5,1.34837573147026e-8,0.001821151632775928,-2.5350517985874814e-5,1.3495281869197622e-8,0.0018213945362785741,-2.5420047270152325e-5,1.3555011738893574e-8,0.0018217289276931587,-2.551235675360919e-5,1.363413439824075e-8,0.001822164406689718,-2.5582239942904856e-5,1.3691653129699898e-8,0.001822686655285152,-2.557849948022469e-5,1.3681411343723724e-8,0.0018232531039378613,-2.5459295222371094e-5,1.3565889406493894e-8,0.0018237998026180275,-2.5211254782313133e-5,1.3333435451442727e-8,0.0018242618025331551,-2.48617013791813e-5,1.300934477782622e-8,0.0018245988973076108,-2.4473013353101097e-5,1.2650735273151976e-8,0.0018248114805428112,-2.4119027032174727e-5,1.2325005783849212e-8,0.0018249369229238492,-2.3856916289854328e-5,1.2084104532181132e-8,0.0018250308362240503,-2.371030618670482e-5,1.1949100841989596e-8,0.001825146047330891,-2.366910915234589e-5,1.1910159201163204e-8,0.0018253190675345766,-2.3700474694523012e-5,1.1936747643950821e-8,0.0018255659145471929,-2.3762271034004848e-5,1.1990121606287427e-8,0.0018258842445968248,-2.3813805840709907e-5,1.2033166516185259e-8,0.001826258169929863,-2.382242826521537e-5,1.2036355717542334e-8,0.0018266634773100754,-2.3766769983762126e-5,1.1980573637170289e-8,0.001827072388230482,-2.363782080690576e-5,1.1857967699394822e-8,0.0018274577516185762,-2.343858881848419e-5,1.1671564450583e-8,0.0018277966526101797,-2.318264021823313e-5,1.1433927158541618e-8,0.0018280733241575382,-2.2891668446499556e-5,1.1164967072672481e-8,0.0018282811577905753,-2.259224023359341e-5,1.0889004337993399e-8,0.001828423551827078,-2.231201801919025e-5,1.0631321018346868e-8,0.0018285135003267157,-2.207596922814408e-5,1.0414665395833809e-8,0.0018285721071275558,-2.1903000912757984e-5,1.0256127104231967e-8,0.0018286262706814032,-2.1803209435120533e-5,1.0164594038831645e-8,0.001828705702435555,-2.177583438325039e-5,1.0138909579633824e-8,0.001828839337656277,-2.1807956588344662e-5,1.0166784524005633e-8,0.0018290509329571627,-2.1874064192536067e-5,1.0224554437432966e-8,0.0018293535538177238,-2.1937215282132975e-5,1.027838557907086e-8,0.0018297433561300666,-2.1953289747187514e-5,1.0288214837085777e-8,0.0018301945153309169,-2.1879869760203124e-5,1.0215787794044302e-8,0.001830658946308421,-2.168992779500395e-5,1.0036992338479185e-8,0.0018310753618979378,-2.138679258668782e-5,9.755367998113473e-9,0.0018313889838965569,-2.1011704357252705e-5,9.40893730399691e-9,0.0018315746329431721,-2.063467135717398e-5,9.061841978804914e-9,0.0018316490783180249,-2.0328796754628263e-5,8.780851241439044e-9,0.0018316632653398112,-2.0141677331726018e-5,8.60917634137112e-9,0.001831679395233614,-2.0080681978185537e-5,8.55305072202464e-9,0.0018317476612021335,-2.0117816834583795e-5,8.586332987307337e-9,0.0018318940208144653,-2.0206428881992914e-5,8.665969743081962e-9,0.0018321201082134187,-2.0298263194615822e-5,8.747708166164193e-9,0.001832409908402203,-2.0354458317239478e-5,8.796142458866711e-9,0.00183273774398109,-2.035003732644327e-5,8.788718700893353e-9,0.001833074770107819,-2.027416826766039e-5,8.715846695855356e-9,0.001833393452426999,-2.0128529716534936e-5,8.579316424344743e-9,0.0018336705866361742,-1.992511730302927e-5,8.390268759309309e-9,0.0018338894912187423,-1.968387735533606e-5,8.167058601271752e-9,0.0018340416791292305,-1.943010095958344e-5,7.932910852662894e-9,0.0018341280134618974,-1.9191384559990707e-5,7.713154507289564e-9,0.0018341590816821458,-1.8994066898046752e-5,7.53193522572574e-9,0.0018341544149850127,-1.885940649167221e-5,7.40865932392435e-9,0.0018341403815578727,-1.8800038802715472e-5,7.3546966523347715e-9,0.0018341468535115438,-1.8817250628981883e-5,7.370872897137305e-9,0.0018342029234141627,-1.889956862277312e-5,7.446231414582977e-9,0.0018343321227258867,-1.9023083174690816e-5,7.558447698209529e-9,0.0018345476553118807,-1.9153707945490168e-5,7.676042116963366e-9,0.0018348481083950683,-1.9251549921866032e-5,7.762491329140837e-9,0.0018352144196331546,-1.9277769509678416e-5,7.782530133022137e-9,0.0018356096596253435,-1.920398976117508e-5,7.710681424220857e-9,0.0018359837763515755,-1.9022957466042443e-5,7.540865396769042e-9,0.0018362849741516284,-1.8756908829736255e-5,7.293910761478627e-9,0.0018364766833233455,-1.8457870012827724e-5,7.017737181329629e-9,0.0018365538571077135,-1.8194914639068882e-5,6.775647214996834e-9,0.001836548563460727,-1.803024372589666e-5,6.624410847690285e-9,0.0018365187675594202,-1.7995409567851337e-5,6.592525088216024e-9,0.0018365252877235454,-1.8081331449302935e-5,6.671177914624835e-9,0.0018366101542084223,-1.8246672589318575e-5,6.822077045534804e-9,0.0018367869375824912,-1.8436994200718304e-5,6.995122222991016e-9,0.001837043888830328,-1.8602938875977135e-5,7.145101322978344e-9,0.0018373537387537482,-1.8710583772040503e-5,7.241122599512904e-9,0.0018376837337121634,-1.8743874840279134e-5,7.2687428712580284e-9,0.0018380027530075403,-1.8702372696090056e-5,7.227808403795434e-9,0.0018382852635966235,-1.8597450955179613e-5,7.128926096284541e-9,0.001838513176276471,-1.8448670412689796e-5,6.990149973877557e-9,0.0018386767249291653,-1.8280754164638692e-5,6.8342449477846595e-9,0.0018387750038904136,-1.812090639012062e-5,6.686252226411574e-9,0.0018388162973281307,-1.799601728606697e-5,6.570911706461216e-9,0.0018388179260978472,-1.7929389648419776e-5,6.509607695224068e-9,0.0018388050594228275,-1.7937016075237906e-5,6.516893378261047e-9,0.0018388079846011016,-1.8023966004633595e-5,6.597145459559734e-9,0.001838857713922728,-1.818180313357647e-5,6.742223335637884e-9,0.0018389803552352245,-1.838806035919854e-5,6.9310780933096055e-9,0.0018391912530982262,-1.860858891245793e-5,7.132034188312767e-9,0.0018394902971468079,-1.88029481324306e-5,7.3078518212857724e-9,0.0018398597310770378,-1.8932177661136858e-5,7.422918615431776e-9,0.0018402654168871984,-1.896772954162206e-5,7.451423914551764e-9,0.0018406621235211068,-1.8899934385024923e-5,7.385028293072869e-9,0.0018410028729857332,-1.8743806537061265e-5,7.238049462551088e-9,0.0018412512510457238,-1.8539475868505472e-5,7.047719368366382e-9,0.0018413937282192889,-1.834483799071887e-5,6.86733900839635e-9,0.0018414470718991932,-1.8220140618210308e-5,6.752093172557913e-9,0.0018414557581306575,-1.8208514775956216e-5,6.741217444212319e-9,0.0018414780209857879,-1.8320709364073575e-5,6.844095149750602e-9,0.001841565803992494,-1.8532077021471085e-5,7.037638298125493e-9,0.0018417482230087799,-1.8793447944416692e-5,7.276395121919292e-9,0.001842025845932932,-1.9049480082961622e-5,7.509453930519011e-9,0.001842376034057044,-1.925507263145096e-5,7.69549565376883e-9,0.0018427639401787223,-1.9383990375315344e-5,7.810647629678605e-9,0.0018431531413094465,-1.942958955901095e-5,7.849070713791684e-9,0.0018435127392187048,-1.940088549418417e-5,7.8192866216250315E-09,0.001843820730492911,-1.9317320377072763e-5,7.739348166296656e-9,0.0018440648885501498,-1.9204160908646343e-5,7.632620118984367e-9,0.001844242531542363,-1.9089035068363377e-5,7.524612793811735e-9,0.0018443600647661403,-1.8999259868333292e-5,7.440521812341918e-9,0.001844432549312981,-1.8959307662865297e-5,7.402863667254894e-9,0.0018444829953387927,-1.8987874349045107e-5,7.428729689176291e-9,0.0018445407209490732,-1.9094430440071465e-5,7.52658268876082e-9,0.0018446380463958871,-1.9275761849198014e-5,7.693093256534828e-9,0.001844804951317121,-1.9513700180089063e-5,7.911127592194227e-9,0.0018450622049142106,-1.9775670897407012e-5,8.15036239379623e-9,0.0018454146537959305,-2.0019361155694627e-5,8.37168352380671e-9,0.0018458471645658634,-2.020149491512519e-5,8.53532123115057e-9,0.001846325472916595,-2.0288852030465627e-5,8.610991677718667e-9,0.001846802738334875,-2.0268255874207588e-5,8.587035433849896e-9,0.0018472305526570348,-2.0152106866842266e-5,8.475412368243551e-9,0.0018475714841345342,-1.99772538420524e-5,8.31053358635742e-9,0.0018478096100095864,-1.9796940495792812e-5,8.141712154172403e-9,0.0018479558587613187,-1.9667497884298463e-5,8.020816057287474e-9,0.0018480460497650023,-1.9633092096664974e-5,7.988216118779569e-9,0.0018481313475885142,-1.97130435184807e-5,8.061204673026506e-9,0.0018482635125553158,-1.989628715353263e-5,8.229056332405201e-9,0.0018484798977238869,-2.014547254945726e-5,8.45695909902495e-9,0.0018487937859131421,-2.0409270039150275e-5,8.697434490355547e-9,0.0018491933464550954,-2.0637777460108637e-5,8.904531720257321e-9,0.001849648388562267,-2.0794981895125802e-5,9.04525543618406e-9,0.0018501208603383453,-2.0864590650255843e-5,9.104868950596546e-9,0.0018505745805460858,-2.0849287684095834e-5,9.086145203825255e-9,0.0018509815951685388,-2.0766006244656177e-5,9.004964655845875e-9,0.0018513249009249032,-2.0640121265863943e-5,8.88493947825769e-9,0.0018515986248674762,-2.0500399014916906e-5,8.75275158592604e-9,0.0018518069924697927,-2.037529947986055e-5,8.634737803338043e-9,0.0018519630574627775,-2.029034519449881e-5,8.55444480376467e-9,0.0018520875544509319,-2.0265862670398454e-5,8.530515515536571e-9,0.0018522076118006106,-2.0314479503742223e-5,8.574357895458459e-9,0.001852354640478269,-2.043817792207266e-5,8.68743961998716e-9,0.0018525605725263623,-2.0625343158510295e-5,8.85862825193293e-9,0.0018528519045839407,-2.0849110173348045e-5,9.06276525797922e-9,0.0018532420360760945,-2.1069073571299936e-5,9.262339779435322e-9,0.001853724130935122,-2.123818424609054e-5,9.413907129041965e-9,0.0018542681745039775,-2.13146965067963e-5,9.479118156772436e-9,0.001854825500677946,-2.1275855803305648e-5,9.437327265942164e-9,0.0018553411001434338,-2.1127603421251835e-5,9.294511094167757e-9,0.001855769808091963,-2.0905197786356253e-5,9.083769325899609e-9,0.001856089934500493,-2.066366542445483e-5,8.856377940750694e-9,0.001856309055157489,-2.0461827016597087e-5,8.66688007773098e-9,0.0018564605291198604,-2.0346009610590452e-5,8.557941716365146e-9,0.0018565929794966702,-2.0338609963516525e-5,8.549815123998282e-9,0.0018567566935258077,-2.0434095465034442e-5,8.636794189047838e-9,0.0018569909246059376,-2.0602544164462002e-5,8.790679141975657e-9,0.001857315247217037,-2.079894845221756e-5,8.96952007306406e-9,0.0018577267622189627,-2.097526582003082e-5,9.12880609280628e-9,0.001858203223977554,-2.109175679528336e-5,9.231914666619509e-9,0.0018587104540100233,-2.1124682017155018e-5,9.257156442445109e-9,0.0018592113115679834,-2.106890188932159e-5,9.200104828967708e-9,0.0018596735056705283,-2.0935816127821806e-5,9.07163153057935e-9,0.0018600745996205108,-2.0748452915729757e-5,8.89332379757743e-9,0.0018604039664238258,-2.0535775690622106e-5,8.692194187757801e-9,0.0018606624467996109,-2.032768021272182e-5,8.496037214902576e-9,0.0018608607937328295,-2.0151290741381685e-5,8.329989644194028e-9,0.0018610177895546044,-2.0028404875289557e-5,8.214148845006132e-9,0.0018611584243115355,-1.9973516875703052e-5,8.161728802068476e-9,0.0018613119834204608,-1.999186368250376e-5,8.17725592983337e-9,0.0018615094730483387,-2.0077264157555704e-5,8.254611200906061e-9,0.0018617795921467622,-2.021010824142319e-5,8.375250055651793e-9,0.0018621426777235635,-2.0356759570897997e-5,8.507743574528015e-9,0.0018626030974959807,-2.0472527218197918e-5,8.610594760757943e-9,0.001863142529370494,-2.0510266452106173e-5,8.640213095127023e-9,0.001863718542838287,-2.0434462278556232e-5,8.563932655985352e-9,0.0018642726717816077,-2.0236362154722935e-5,8.374014217097276e-9,0.0018647478436570396,-1.9942109211313427e-5,8.095175761587323e-9,0.001865108368948935,-1.960728289796133e-5,7.779474788722417e-9,0.0018653524017467537,-1.9298711898535704e-5,7.4892916930745e-9,0.0018655107551995035,-1.9072315354648044e-5,7.27659510756275e-9,0.0018656340820196373,-1.895724351204022e-5,7.168151304633016e-9,0.0018657758320747826,-1.895135064135561e-5,7.161416176012306e-9,0.0018659780113648356,-1.9026593337249196e-5,7.229749985625541e-9,0.0018662631207856332,-1.9139791481250695e-5,7.332602529333776e-9,0.0018666323647777408,-1.9244376015289706e-5,7.426524029334083e-9,0.0018670686302071045,-1.93003096381889e-5,7.474374412439072e-9,0.0018675424105708905,-1.9280847880737214e-5,7.451532270409492e-9,0.0018680189994260549,-1.9175704489265866e-5,7.348747503653877e-9,0.0018684654564785955,-1.8990736169104185e-5,7.171778438188237e-9,0.0018688561260398076,-1.8744836865035615e-5,6.938463114669843e-9,0.0018691760026911882,-1.8465188498455326e-5,6.674284503730649e-9,0.001869421833270251,-1.818207784859466e-5,6.407542925266269e-9,0.0018696013388690184,-1.7924257543533537e-5,6.165035437391302e-9,0.0018697312745747144,-1.77154221714517e-5,5.968767927016784e-9,0.0018698350512996898,-1.7571817919185243e-5,5.8337191006715384e-9,0.0018699402886244905,-1.750060390009367e-5,5.76630978226681e-9,0.0018700762544792589,-1.7498573862310598e-5,5.763229760950721e-9,0.0018702708423503566,-1.7551071627329354e-5,5.8104800416812336e-9,0.0018705465025051088,-1.763137263486119e-5,5.882878383752786e-9,0.0018709146903029294,-1.770161615547732e-5,5.945007935726127e-9,0.0018713693790612124,-1.771717503436893e-5,5.955326079857078e-9,0.001871882005628167,-1.7636224585071255e-5,5.875056690709975e-9,0.0018724021730790383,-1.7434179833481032e-5,5.681589270232072e-9,0.0018728684333721528,-1.7118167658035483e-5,5.3819353393236815e-9,0.0018732287172204356,-1.6732355540166632e-5,5.017686966724454e-9,0.0018734616898216,-1.6346704189132433e-5,4.654472798669768e-9,0.0018735862278335242,-1.6031827206181716e-5,4.358367558462995e-9,0.0018736526901350647,-1.583326478782647e-5,4.1717537065880975e-9,0.0018737219046122688,-1.5758804508346698e-5,4.10148922345258e-9,0.0018738443004110933,-1.578241850439683e-5,4.12273758898688e-9,0.0018740479774201498,-1.5858384906640113e-5,4.192354118637595e-9,0.0018743368377812267,-1.5936813363410486e-5,4.2635170100055776e-9,0.0018746952507608576,-1.5975245333576563e-5,4.296582563572818e-9,0.001875095253598817,-1.594505681652756e-5,4.265000879239349e-9,0.0018755037392833745,-1.5833619336192383e-5,4.157239354603041e-9,0.0018758885761289046,-1.5643635440476038e-5,3.976084601740173e-9,0.001876223379869671,-1.539063040568846e-5,3.736258860742264e-9,0.0018764908158095375,-1.5099215718405392e-5,3.460921341786339e-9,0.0018766843555797306,-1.4798700313825205e-5,3.1775739251165955e-9,0.001876808514204054,-1.4518593640800304e-5,2.913862771528727e-9,0.001876877684600156,-1.428449594527703e-5,2.6937304046643276e-9,0.0018769138794313335,-1.4114849713635936e-5,2.534362112040424e-9,0.001876943877891384,-1.4018784813808756e-5,2.444153315210054e-9,0.0018769961556297737,-1.3994930354196748e-5,2.4215928014478305e-9,0.0018770976892354386,-1.4030988542626093e-5,2.454884423634573e-9,0.0018772705481379275,-1.4104015382463982e-5,2.5222631987773908e-9,0.001877528051302119,-1.4181603792678899e-5,2.5931789806121115e-9,0.0018778703569376982,-1.4224713941675174e-5,2.6310160704288327e-9,0.0018782801543122864,-1.4193451439422243e-5,2.598529820729149e-9,0.0018787205590664604,-1.405678212300852e-5,2.4669139600598395e-9,0.0018791386692319275,-1.3805285464980217e-5,2.2276810492311913e-9,0.0018794780123360833,-1.3462303276611882e-5,1.9030504386180313e-9,0.0018796988460152687,-1.3085081939944344e-5,1.5469771882351445e-9,0.001879797376121251,-1.2749246711917046e-5,1.2305366805810725e-9,0.001879810814909188,-1.2520431987685998e-5,1.0152379061173355e-9,0.0018798025069450173,-1.2428480565797385e-5,9.28792039154265e-10,0.0018798356637794984,-1.2459405930458762e-5,9.576569245815327e-10,0.0018799514652937973,-1.2567147881760806e-5,1.058227207885944e-9,0.0018801611228964044,-1.2694459694026742e-5,1.1765668337490139e-9,0.0018804504286041776,-1.2790844470236134e-5,1.2652815802583089e-9,0.0018807898296935043,-1.2822211239622132e-5,1.2925348480468322e-9,0.001881144296639176,-1.2773137375766395e-5,1.244082520275377e-9,0.001881480541304962,-1.2644829708590756e-5,1.1212779543347608e-9,0.0018817714830373492,-1.2451442593087324e-5,9.37573033027889e-10,0.0018819987877392661,-1.2216113471832141e-5,7.147943106851535e-10,0.0018821541835679256,-1.1967040551517974e-5,4.79481554800589e-10,0.001882239823342938,-1.1733614321682521e-5,2.592733145950963e-10,0.0018822677333682823,-1.1542659347071796e-5,7.937878641490489e-11,0.001882258290813125,-1.1414929386642006e-5,-4.073055482831923e-11,0.00188223769665013,-1.1362192719985607e-5,-9.008293919875422e-11,0.001882234648515446,-1.1385337979164145e-5,-6.800108198389007e-11,0.0018822765976668182,-1.147373068275585e-5,1.529829570741141e-11,0.0018823859220090569,-1.1605863972995146e-5,1.3934936610352848e-10,0.0018825762769299201,-1.1751333204930212e-5,2.7535196640362164e-10,0.001882849356696919,-1.1874174668779581e-5,3.8937810798312383e-10,0.0018831923326353601,-1.1937760844475924e-5,4.470257514000792e-10,0.0018835766745060477,-1.1911660763090492e-5,4.198775427362523e-10,0.0018839599006157666,-1.1780441166968134e-5,2.937343558620432e-10,0.0018842923200876947,-1.1552816367157377e-5,7.714292268036392e-11,0.0018845300065070212,-1.1267101431234662e-5,-1.935563353070176e-10,0.001884651848842402,-1.0986979616266467e-5,-4.582805070815646e-10,0.0018846729512961321,-1.0783668473551395e-5,-6.500369715974631e-10,0.001884644026311698,-1.0709107993313308e-5,-7.201687612284614e-10,0.0018846329849430254,-1.0774324376780514e-5,-6.586566194780138e-10,0.0018846977991100334,-1.0946622650667459e-5,-4.966346506891892e-10,0.0018848664449174443,-1.1166459365350037e-5,-2.9038739613313543e-10,0.0018851332005309256,-1.1371807843700045e-5,-9.836030862044166e-11,0.00188546833284025,-1.1516483567944784e-5,3.6072174092010136e-11,0.0018858320534413794,-1.1577196587717038e-5,9.118298144119174e-11,0.0018861858170151932,-1.1551897946543376e-5,6.526251494340663e-11,0.0018864988368209698,-1.1454250824736898e-5,-2.8641386320276168e-11,0.0018867506997908348,-1.130771157982184e-5,-1.683171289939276e-10,0.0018869317981828468,-1.114067253953726e-5,-3.269535468848281e-10,0.00188704288267068,-1.0982683580718171e-5,-4.766790893169354e-10,0.00188709425157458,-1.0861262431198378e-5,-5.915582605683498e-10,0.0018871045582005074,-1.0798915164720963e-5,-6.504092600231872e-10,0.0018870989904794264,-1.0810255077489202e-5,-6.395398827368157e-10,0.0018871065171513206,-1.089946266139451e-5,-5.551558313967678e-10,0.0018871561148395357,-1.1058676341069262e-5,-4.048719775294948e-10,0.0018872723151573511,-1.1267948529405112e-5,-2.077232698081918e-10,0.0018874707273317042,-1.1497174238386989e-5,7.702962172308863e-12,0.0018877543345839755,-1.1710094620244999e-5,2.0709679356946207e-10,0.0018881113731507087,-1.1870079468074387e-5,3.5592247332806187e-10,0.0018885154354453212,-1.1947025394181564e-5,4.2594198011051527e-10,0.0018889282709940963,-1.1924554434572256e-5,4.0198452420754266e-10,0.0018893057509901104,-1.180642796887354e-5,2.8793937793174093e-10,0.0018896072155190882,-1.1620319815144137e-5,1.102325230061882e-10,0.0018898073174633363,-1.141620503858083e-5,-8.378045830706647e-11,0.0018899072882816023,-1.1256680872880053e-5,-2.350144500265779e-10,0.00188994004525897,-1.1199004466727915e-5,-2.8962303888349816e-10,0.0018899634124805416,-1.1274091765243815e-5,-2.187662588737686e-10,0.0018900409279768637,-1.1472911999612212e-5,-3.133758064503063e-11,0.0018902183761997377,-1.1749297526970216e-5,2.2880621691449785e-10,0.0018905085190595347,-1.2038537620544541e-5,5.004579398597872e-10,0.0018908911977333046,-1.2281010673800587e-5,7.273646082903298e-10,0.0018913257026649535,-1.2438746635557551e-5,8.738262880584713e-10,0.001891766418942364,-1.2500025159169855e-5,9.289921702418269e-10,0.0018921745217345054,-1.2474898759061678e-5,9.025856295473614e-10,0.0018925235949496604,-1.2387224374957897e-5,8.173373978207359e-10,0.0018928006012498605,-1.2267242724669224e-5,7.019521780489794e-10,0.001893004532648849,-1.2146219309942353e-5,5.860420989860535e-10,0.0018931444568213974,-1.2052958305120446e-5,4.968374482519974e-10,0.0018932376922635935,-1.201136506885249e-5,4.5688395279176046e-10,0.0018933080932005942,-1.203830971069964e-5,4.820179060546816e-10,0.0018933840198379344,-1.2141431704543413e-5,5.792878687063079e-10,0.0018934954432214392,-1.2317048491958935e-5,7.449904944807481e-10,0.0018936698433884116,-1.2548874791752978e-5,9.63493451044306e-10,0.0018939271289290503,-1.2808571057900438e-5,1.207801973263226e-9,0.0018942745270844783,-1.3059009801183272e-5,1.4426931836520661e-9,0.0018947029628015445,-1.3260512884313262e-5,1.6306445395104082e-9,0.0018951865409454112,-1.3379240786205856e-5,1.739776196090901e-9,0.0018956861193035659,-1.339582085200682e-5,1.7520006276159735e-9,0.001896156784362993,-1.3311821218936873e-5,1.6691149414387627e-9,0.0018965578833635218,-1.315201628144059e-5,1.5148888736049156e-9,0.0018968634955145083,-1.2961201862073039e-5,1.3319718714925833e-9,0.0018970707895216053,-1.27953186054354e-5,1.1734090967998433e-9,0.0018972035254706415,-1.270792499395131e-5,1.0897877058615488e-9,0.0018973082905004745,-1.2734836504746565e-5,1.1147159041982071e-9,0.0018974426469162598,-1.2881765897702211e-5,1.2532161191392723e-9,0.0018976577334179135,-1.3120638566367633e-5,1.4783604413576136e-9,0.0018979817061840188,-1.3397830754750496e-5,1.7391592222003208e-9,0.001898411458923872,-1.3651830597880485e-5,1.9773042111285594e-9,0.0018989162166529016,-1.3832467412215963e-5,2.1453543532283e-9,0.0018994501504002229,-1.3913394698958246e-5,2.218528300226893e-9,0.0018999670934915821,-1.3894285229865015e-5,2.1967560935101533e-9,0.0019004313205916007,-1.3794987368719163e-5,2.0991062793393773e-9,0.0019008222473536457,-1.3646563923406225e-5,1.9552477096692173e-9,0.0019011342862434643,-1.3483210869567092e-5,1.7977502645593472e-9,0.0019013742670453792,-1.3336710126712298e-5,1.656805182705815e-9,0.0019015583445810035,-1.3233251710861967e-5,1.557210441490532e-9,0.0019017093215130678,-1.3191683234416556e-5,1.516718948288368e-9,0.0019018544551819409,-1.322222486221346e-5,1.5448335845441187e-9,0.0019020232614363063,-1.332508798252e-5,1.641518474045382e-9,0.0019022446122891282,-1.3489036976123344e-5,1.7958687511443292e-9,0.0019025425844261994,-1.369058867045455e-5,1.985394636394811e-9,0.0019029310998461496,-1.3895103526272778e-5,2.177098013812628e-9,0.0019034084130146504,-1.4061158291373949e-5,2.3316432829741173e-9,0.0019039536403952983,-1.4148798826174367e-5,2.411188360481643e-9,0.00190452798036301,-1.4130390523376207e-5,2.3896713112052716e-9,0.0019050821403015848,-1.4000599135125858e-5,2.262277159589695e-9,0.0019055688083909521,-1.3781106731241096e-5,2.0499028297317794e-9,0.0019059562148011579,-1.3517137805515713e-5,1.795813482384683e-9,0.0019062378216281627,-1.3266226807941069e-5,1.55488479026225e-9,0.0019064346707243743,-1.3082876840158903e-5,1.3789321851604236e-9,0.0019065897975290977,-1.300402884385789e-5,1.3028645792247607e-9,0.0019067566525288243,-1.3039478647258866e-5,1.335631681489911e-9,0.0019069848668208623,-1.3169664466781716e-5,1.458241594737562e-9,0.0019073072088376596,-1.3351363244590194e-5,1.6292950121476715e-9,0.0019077314104704636,-1.35297729754093e-5,1.7965331398129217e-9,0.0019082393455308658,-1.3653389545506359e-5,1.910981408664566e-9,0.0019087936495511212,-1.368692249063571e-5,1.9391998920108105e-9,0.0019093490888763,-1.36182247050182e-5,1.8698433679372743e-9,0.0019098643504093444,-1.3457815665676977e-5,1.7131785903247102e-9,0.0019103104535418381,-1.3232664882104302e-5,1.49513174647234e-9,0.001910674199703993,-1.2977653683504635e-5,1.2491153226176072e-9,0.001910957383345947,-1.2727836569487273e-5,1.0086216538112337e-9,0.0019111736376836673,-1.2513095263658599e-5,8.021151208985223e-10,0.0019113446910483782,-1.2355262008813369e-5,6.502990133921028e-10,0.0019114970699477254,-1.2266914435896981e-5,5.649887739956633e-10,0.001911659458251913,-1.2250863989869682e-5,5.48651037755953e-10,0.0019118603142655674,-1.2299688915426472e-5,5.939871771107086e-10,0.0019121250704395051,-1.2395224103850199e-5,6.83479516283135e-10,0.001912472298250459,-1.2508553962420433e-5,7.894175597020551e-10,0.0019129086995072113,-1.2601732458062466e-5,8.755614362231623e-10,0.0019134238587510172,-1.2632856875682743e-5,9.019823758839568e-10,0.0019139872139001782,-1.2565475255362356e-5,8.340185275907759e-10,0.0019145507149744756,-1.2380996991705414e-5,6.541016494998854e-10,0.0019150594943169597,-1.208942059331609e-5,3.720012705806915e-10,0.0019154687355826697,-1.1731803189978585e-5,2.7186751351475117e-11,0.0019157599073696201,-1.1370438510631843e-5,-3.2059589419623007e-10,0.0019159480871280882,-1.1069433649940181e-5,-6.099776897920081e-10,0.0019160765242110884,-1.0874351161307604e-5,-7.975067244527357e-10,0.001916201638240862,-1.0799731954230843e-5,-8.695695269755934e-10,0.0019163757206690922,-1.0828066294132719e-5,-8.432736692445251e-10,0.001916633663319116,-1.0918083407511515e-5,-7.583931686950212e-10,0.0019169865545414935,-1.1017681518618213e-5,-6.649208970516302e-10,0.0019174220148160516,-1.1077138327480256e-5,-6.104228457140029e-10,0.001917909652400136,-1.1059628873658679e-5,-6.300141180862712e-10,0.0019184095373273615,-1.0947442807596206e-5,-7.404583107456317e-10,0.0019188815145464583,-1.074336196537258e-5,-9.388858115135974e-10,0.0019192932808213034,-1.0467594123611643e-5,-1.20575358697917e-9,0.0019196256213150462,-1.0151606595075532e-5,-1.5107725145640873e-9,0.0019198741582867806,-9.830831037267878e-6,-1.8199155582087304e-9,0.001920048034328906,-9.53810189496491e-6,-2.101716952530784e-9,0.00192016664884815,-9.298985720095432e-6,-2.3317451423285186e-9,0.0019202557299710247,-9.129284586844093e-6,-2.4949779817672822e-9,0.0019203436982262987,-9.03425635494825e-6,-2.5865276762768656e-9,0.0019204586561453517,-9.008766308266697e-6,-2.6114761398253937e-9,0.0019206257964393613,-9.037767379553837e-6,-2.584400459288261e-9,0.0019208647556760669,-9.096934635335611e-6,-2.528749375572851e-9,0.0019211863918376449,-9.153791617985142e-6,-2.475744453410305e-9,0.0019215887893763244,-9.170318069016814e-6,-2.4618619106144695e-9,0.0019220532680969222,-9.108486698013456e-6,-2.5235177511399977e-9,0.0019225426370994027,-8.93968667282501e-6,-2.6880381102716844e-9,0.0019230051437690364,-8.656881355420935e-6,-2.9620064184294193e-9,0.0019233868768198299,-8.284641843373393e-6,-3.321635583237772e-9,0.0019236508865696793,-7.87924983238811e-6,-3.7126811593957043e-9,0.0019237944180940756,-7.513626152701059e-6,-4.064969808739745e-9,0.0019238530642237287,-7.251346875133989e-6,-4.317442787274023e-9,0.0019238875264319904,-7.123184534446885e-6,-4.440727658128514e-9,0.0019239602849499028,-7.118772335068044e-6,-4.445080751689829e-9,0.0019241150340064711,-7.195410187776e-6,-4.3718032484889515e-9,0.0019243672115235493,-7.296057858543114e-6,-4.275859784550209e-9,0.0019247056490780219,-7.366796576870663e-6,-4.209081160263236e-9,0.001925100638222425,-7.368390575798459e-6,-4.2090899838722325e-9,0.0019255136991263675,-7.28124033598263e-6,-4.29459094897082e-9,0.0019259062934330908,-7.105313322498182e-6,-4.465474633111174e-9,0.001926246455241092,-6.8569503429279765e-6,-4.705904064104801e-9,0.001926513155176582,-6.563908504672785e-6,-4.989086595641599e-9,0.0019266984060524598,-6.259565315487143e-6,-5.28285207654197e-9,0.0019268072181901595,-5.977125716265304e-6,-5.555231795710813e-9,0.0019268557194206991,-5.744607949504135e-6,-5.779286983994542e-9,0.001926867956789526,-5.581192829623622e-6,-5.93661711990306e-9,0.0019268720688889452,-5.495252817643273e-6,-6.019245563941074e-9,0.0019268965365545243,-5.483964670467983e-6,-6.029980211505466e-9,0.0019269669147046517,-5.534047865259946e-6,-5.981698489668393e-9,0.0019271030607710645,-5.623188311924287e-6,-5.895977467639949e-9,0.0019273166863302753,-5.7219540024492885e-6,-5.8012471529754476e-9,0.001927608964943563,-5.7963044626612365e-6,-5.730359732741071e-9,0.001927968073137577,-5.811296023443038e-6,-5.716996716285913e-9,0.001928367327868175,-5.736968151573158e-6,-5.789976737812062e-9,0.0019287657529438592,-5.556881102280313e-6,-5.965023129181158e-9,0.0019291137044280984,-5.2780252562612125e-6,-6.235225744033611e-9,0.0019293656129909568,-4.9378508432014095e-6,-6.564293224012181e-9,0.0019294981647026979,-4.601333003765205e-6,-6.88943201632588e-9,0.001929525485728095,-4.342876353937429e-6,-7.138863176862139e-9,0.0019294994801223031,-4.217696588858802e-6,-7.25946537969358e-9,0.0019294908116161604,-4.238299439230228e-6,-7.239417461315074e-9,0.001929560314582812,-4.371015270438031e-6,-7.111424613284696e-9,0.0019297377118852202,-4.55344246107046e-6,-6.935795233464066e-9,0.001930017314096714,-4.719917590952116e-6,-6.775858205910853e-9,0.001930367658027968,-4.821014209853837e-6,-6.679201920416775e-9,0.0019307459008136353,-4.8316120263198285e-6,-6.669947990797228e-9,0.0019311099639047478,-4.749855588336907e-6,-6.749791325681373e-9,0.001931426078730715,-4.591648798416053e-6,-6.903320619292728e-9,0.0019316723240502833,-4.384152509840636e-6,-7.104284083463843e-9,0.00193183957714851,-4.159855661523347e-6,-7.321298468100921e-9,0.0019319309590358179,-3.951522849872863e-6,-7.522721099309414e-9,0.001931960272729608,-3.7879464393165173e-6,-7.680755766459321e-9,0.0019319496225054618,-3.690498897752296e-6,-7.774788967531755e-9,0.0019319263202685097,-3.6706055523742944e-6,-7.793831867149322e-9,0.001931919267959071,-3.7283927164905087e-6,-7.737819257871908e-9,0.0019319552108667095,-3.852716726614077e-6,-7.617573393096083e-9,0.0019320552988749142,-4.02248969024826e-6,-7.453520879166667e-9,0.0019322322171346693,-4.209066647074804e-6,-7.27339092546293e-9,0.0019324880384187753,-4.379522397329557e-6,-7.109051304871561e-9,0.0019328128907126745,-4.5006846976982455e-6,-6.9926006585541975e-9,0.001933184500922892,-4.543960637217014e-6,-6.951680008281516e-9,0.0019335690805746674,-4.491239132575197e-6,-7.0037418708715674e-9,0.0019339247854987158,-4.3417098714221724e-6,-7.149447726110859e-9,0.0019342092422925217,-4.118009382523817e-6,-7.366743932940767e-9,0.0019343916827004838,-3.868204312684253e-6,-7.608992772716862e-9,0.001934467361572726,-3.658733712507117e-6,-7.811866984567964e-9,0.001934467204138646,-3.5553083996379697e-6,-7.911879053399946e-9,0.0019344532495840499,-3.5966460829545584e-6,-7.871776332288663e-9,0.0019344968195731504,-3.7753114217998696e-6,-7.698978894623498e-9,0.0019346495112623097,-4.03947689724567e-6,-7.443761240396356e-9,0.0019349242390860283,-4.315579736048795e-6,-7.177294842177374e-9,0.0019352959799658958,-4.537209508290387e-6,-6.9637480873944295e-9,0.0019357174371195988,-4.664295527601881e-6,-6.8417869033334726e-9,0.0019361376429321514,-4.687227031264865e-6,-6.820621053087697e-9,0.0019365149604292852,-4.620518272556331e-6,-6.886137513437268e-9,0.001936822735002006,-4.4930784615761195e-6,-7.01030959332819e-9,0.0019370497573068866,-4.3395817761451026e-6,-7.159541983283873e-9,0.0019371982714750445,-4.194332245529059e-6,-7.300606086896117e-9,0.0019372813098119841,-4.0872389658178436e-6,-7.404541171072901e-9,0.0019373200047168263,-4.041081596253815e-6,-7.449311969194115e-9,0.0019373408698219712,-4.06951090543502e-6,-7.421751862826817e-9,0.0019373728401152071,-4.175601163817662e-6,-7.318959872347354e-9,0.0019374438984557292,-4.351140097040351e-6,-7.14897163907601e-9,0.0019375773878386295,-4.577090029110529e-6,-6.930294004143148e-9,0.0019377884492321462,-4.8255307456941e-6,-6.690013847281935e-9,0.0019380811458521296,-5.063086450380342e-6,-6.460482833914179e-9,0.0019384468078961414,-5.2556340897116115e-6,-6.274765644942493e-9,0.001938864070694948,-5.373859826780817e-6,-6.161257575262624e-9,0.0019393008815218134,-5.39900090253849e-6,-6.138107237175963e-9,0.0019397185968336869,-5.328108998262378e-6,-6.208094891699568e-9,0.0019400783924782288,-5.178029968915432e-6,-6.3547673684562564e-9,0.001940350064460665,-4.986568248040517e-6,-6.541330751226949e-9,0.0019405222410656135,-4.808507589956162e-6,-6.714561951692604e-9,0.0019406110279473565,-4.704360703335738e-6,-6.815780527851394e-9,0.0019406619186682263,-4.722099909779016e-6,-6.798592282970913e-9,0.0019407397828170951,-4.877341093394415e-6,-6.6480630164182626e-9,0.0019409070239167167,-5.142645237546104e-6,-6.3909979796592525e-9,0.0019411991246476956,-5.455021750594156e-6,-6.08859132515089e-9,0.0019416113591816284,-5.739907638638507e-6,-5.813170806092759e-9,0.0019421039399188788,-5.938379623146413e-6,-5.621848443746926e-9,0.001942620441220814,-6.023358180511173e-6,-5.540825654139379e-9,0.0019431076064300335,-6.000155352616885e-6,-5.564854280690739e-9,0.0019435278468381142,-5.896618797745685e-6,-5.66679479290207e-9,0.0019438629592743444,-5.750852545969404e-6,-5.809548326748877e-9,0.0019441120808416875,-5.601534475667561e-6,-5.955480832384088e-9,0.001944287443752201,-5.482065741624393e-6,-6.072125549617999e-9,0.0019444101506376872,-5.417660736467644e-6,-6.135020234542866e-9,0.001944506708268009,-5.424015514502002e-6,-6.12900103028505e-9,0.0019446061453395735,-5.5065945921930115e-6,-6.048882321230036e-9,0.0019447372317435117,-5.660164219490716e-6,-5.899883466024544e-9,0.0019449253683826993,-5.8687316263243564E-06,-5.6976552684035205e-9,0.001945189030333371,-6.106463427556881e-6,-5.467362321854533e-9,0.001945536161431122,-6.340235377640483e-6,-5.241200084831334e-9,0.0019459613750219223,-6.534129514976202e-6,-5.0540407206024526E-09,0.0019464450016517627,-6.655627092463941e-6,-4.9374385215283745e-9,0.0019469548828858596,-6.682567740270542e-6,-4.912878296775678e-9,0.001947451269570495,-6.60932933283276e-6,-4.985758640608991e-9,0.0019478943525422965,-6.450513493834239e-6,-5.14178782748562e-9,0.0019482532181079584,-6.2407756398245034e-6,-5.347142200685174e-9,0.0019485145355209999,-6.029956846976695e-6,-5.553227818359947e-9,0.001948688832848761,-5.8732962326046545e-6,-5.706255960069141e-9,0.0019488117889920867,-5.817657136586249e-6,-5.76069054929591e-9,0.001948938125527602,-5.886667676818439e-6,-5.69370500652984e-9,0.0019491274075020232,-6.0699856033129015e-6,-5.515569915679763e-9,0.0019494249289553265,-6.3227915401508744E-06,-5.270071903094241e-9,0.001949845257742566,-6.578590377092514e-6,-5.022021831291358e-9,0.0019503668701211755,-6.771379833246088e-6,-4.8356927104913765e-9,0.001950941025999169,-6.857006618888046e-6,-4.754047856449597e-9,0.0019515098360051739,-6.823912357418047e-6,-4.788264987953578e-9,0.0019520240658229982,-6.690500284410137e-6,-4.920280238133386e-9,0.0019524536244067533,-6.49382548244997e-6,-5.113816259747165e-9,0.0019527895094792508,-6.276752315075202e-6,-5.326941081183438e-9,0.0019530401509459683,-6.078332438438705e-6,-5.521497393189113e-9,0.001953225817980965,-5.928567237035448e-6,-5.668236483345585e-9,0.0019533734478342783,-5.84651286102268e-6,-5.74866469745462e-9,0.0019535127069048035,-5.840135760566559e-6,-5.755159455452236e-9,0.0019536730713173847,-5.906707798229399e-6,-5.690546687804252e-9,0.0019538812761171337,-6.033223898987462e-6,-5.567654612994196e-9,0.0019541585144023286,-6.197000707763707e-6,-5.408699430107965e-9,0.0019545171385095907,-6.367107479822374e-6,-5.243879262195881e-9,0.0019549572076320533,-6.5074833444539475e-6,-5.108346058501838e-9,0.0019554639201165612,-6.582363249082454e-6,-5.03694129358835e-9,0.001956007498430186,-6.563809875728904e-6,-5.0568720809815e-9,0.001956546986261798,-6.4398326830353245e-6,-5.179789317621606e-9,0.001957038319601614,-6.220390777973844e-6,-5.3959025305882386e-9,0.001957445211377807,-5.938406346561329e-6,-5.6729623501463044E-09,0.0019577497434098727,-5.6441961139281294e-6,-5.961701088875459e-9,0.00195795905198493,-5.3940117834603315e-6,-6.207071934832427e-9,0.001958105475933685,-5.235595818058769e-6,-6.362420055449834e-9,0.0019582395183540724,-5.194843437985116e-6,-6.402542072145623e-9,0.001958417079498149,-5.267559275761301e-6,-6.331712684108876e-9,0.0019586841391798864,-5.419208397437096e-6,-6.183867152169376e-9,0.0019590632992368684,-5.5936274617679324e-6,-6.0140407497047866e-9,0.0019595468572287758,-5.728796846682779e-6,-5.882943397267424e-9,0.001960099404208329,-5.774659859002328e-6,-5.8395474337831e-9,0.0019606692273000065,-5.706491547132605e-6,-5.908007246472056e-9,0.001961203875844111,-5.5290734820936245e-6,-6.083550911233866e-9,0.001961663710892444,-5.271294504247528e-6,-6.33775249294814e-9,0.0019620291042840325,-4.974990706173587e-6,-6.62948408349352e-9,0.0019623006544432146,-4.683271223898374e-6,-6.916401377222745e-9,0.001962494734377491,-4.432015613971804e-6,-7.163317469825513e-9,0.00196263744876942,-4.24555166449937e-6,-7.3464495352867865e-9,0.001962759151531451,-4.135625053205161e-6,-7.454405906541533e-9,0.0019628903475563684,-4.102163162853727e-6,-7.487397138171459e-9,0.001963058825873597,-4.134581772027361e-6,-7.45591629508366e-9,0.0019632873735704035,-4.2130275752858015e-6,-7.37949782948698e-9,0.001963591384460584,-4.309670509689841e-6,-7.285447272084761e-9,0.001963976034392938,-4.390698571258319e-6,-7.2069014925367394E-09,0.00196443330876546,-4.419933657794488e-6,-7.1793089036528066e-9,0.0019649399761413515,-4.364865771727716e-6,-7.23453490273262e-9,0.001965458415821613,-4.2050069352158806e-6,-7.392670556572303e-9,0.0019659423021510165,-3.940624693125234e-6,-7.653438357820787e-9,0.001966347619651084,-3.5979703831828426e-6,-7.991020087185636e-9,0.001966646410720784,-3.2268073690315724e-6,-8.35646294373238e-9,0.001966837804951861,-2.88866026076316e-6,-8.6892469084276e-9,0.0019669507350560987,-2.638942552458159e-6,-8.93489923720782e-9,0.001967036219204756,-2.509897091168396e-6,-9.061792188439865e-9,0.0019671521102095036,-2.5011703515333097e-6,-9.070385947269845e-9,0.001967346338386762,-2.5810055380569523e-6,-8.992002968155938e-9,0.0019676443316525953,-2.696486676324743e-6,-8.878723391163976e-9,0.0019680437540308916,-2.788602202893239e-6,-8.788584213578214e-9,0.00196851699192739,-2.8074134547524235e-6,-8.77069512204032e-9,0.0019690198105688102,-2.723406029950918e-6,-8.854087293070188e-9,0.001969503286514971,-2.5325606025790628e-6,-9.042705655591e-9,0.0019699255438227234,-2.2545503651888572e-6,-9.317149614451272e-9,0.0019702602048416143,-1.9254253998824907e-6,-9.64186138287465e-9,0.0019704998243126686,-1.587626778063647e-6,-9.974977396460062e-9,0.001970654436207738,-1.2805361083925496e-6,-1.0277671836369529E-08,0.001970746848452303,-1.0338220010957484e-6,-1.0520734387427998e-8,0.001970806813276138,-8.642671882979529e-7,-1.0687691080751363e-8,0.0019708657346138646,-7.754852094272468e-7,-1.0775054263680461e-8,0.001970952685885467,-7.59358064857489e-7,-1.0790873734095068e-8,0.001971091690133412,-7.980785287859418e-7,-1.075270881326718e-8,0.0019712997330186763,-8.661819417994633e-7,-1.0685635082892515e-8,0.001971584912381313,-9.325958251431366e-7,-1.0620251655417039e-8,0.001971944386893563,-9.632389319096306e-7,-1.0590148555848218e-8,0.0019723623172643737,-9.250101036695197e-7,-1.0627989281767547e-8,0.001972808830631805,-7.919702181976068e-7,-1.0759406320346234e-8,0.0019732419679683944,-5.536462457545765e-7,-1.0994779047683153e-8,0.001973614823661226,-2.2335933302557065e-7,-1.1320973812675675e-8,0.0019738884737286657,1.5799990717252462e-7,-1.1697589927724113e-8,0.0019740473224203847,5.280347963458416e-7,-1.2062959771330483e-8,0.00197410928803649,8.20358883314744e-7,-1.2351497457826083e-8,0.001974123317235958,9.877098265902934e-7,-1.251656570489879e-8,0.001974153255924493,1.0192999814429548e-6,-1.2547588496020676e-8,0.0019742556717545824,9.434428611000109e-7,-1.2472576911245205e-8,0.0019744623865517686,8.154180584666158e-7,-1.2346103517772794e-8,0.001974774135226251,6.982018680757243e-7,-1.2230299564424663e-8,0.001975164866836536,6.44800593857355e-7,-1.2177471453811616e-8,0.001975592187135106,6.871905621175031e-7,-1.221921769330186e-8,0.001976009248334955,8.327104581488337e-7,-1.2362852376014084e-8,0.0019763749925609457,1.0663971388143509e-6,-1.259366276420492e-8,0.001976661273607453,1.3571121056137057e-6,-1.2880913658228117e-8,0.0019768563928079714,1.6655158949823804e-6,-1.3185711559255818e-8,0.001976965150873674,1.9522178827619e-6,-1.3469078659361015e-8,0.0019770060231024044,2.1846215565256827e-6,-1.3698753468466588e-8,0.001977006519814771,2.3414551764659016e-6,-1.3853691582153881E-08,0.0019769979445145433,2.4146980122888094e-6,-1.3925966248255384e-8,0.0019770105929741008,2.409217344158514e-6,-1.3920387497226856e-8,0.0019770700502998715,2.340825972519958e-6,-1.3852563760087515e-8,0.0019771946962903715,2.233613597212906e-6,-1.3746268263541514e-8,0.001977394083641216,2.117137695108602e-6,-1.3630691930216664e-8,0.00197766776849491,2.02355937158754e-6,-1.353764934893884e-8,0.0019780043391657534,1.9844130263776497e-6,-1.3498405475263642e-8,0.001978380746958981,2.0264143260061553e-6,-1.353951384539365e-8,0.001978762774876461,2.1656876800633962e-6,-1.3677055583687163e-8,0.00197910834678161,2.4005955486988004e-6,-1.3909478074330424e-8,0.0019793755690996236,2.7052325640155345e-6,-1.4211108687579435e-8,0.0019795358980323765,3.0280329593492748e-6,-1.4530782563116931e-8,0.0019795888602322726,3.3008762468395384e-6,-1.4800926854883546e-8,0.001979569909580966,3.4602522751505376e-6,-1.4958607317158036e-8,0.0019795428292347273,3.4729664075210322e-6,-1.4971007396679774e-8,0.0019795766858330343,3.3517185374406653e-6,-1.485078131230214e-8,0.001979719097725177,3.150012236996182e-6,-1.4650917551003886e-8,0.0019799807430923235,2.939717703579574e-6,-1.4442508997057445e-8,0.001980337179051505,2.785210747885825e-6,-1.4289220607364234e-8,0.001980742604001265,2.726455749296866e-6,-1.423061560237119e-8,0.0019811460867675897,2.7744247605888214e-6,-1.4277633511904348e-8,0.001981503955526798,2.915383589334282e-6,-1.4416788031389436e-8,0.0019817866606374806,3.119072655949307e-6,-1.4618203584318185e-8,0.0019819810541467733,3.3472878569643014e-6,-1.4844069697144964e-8,0.0019820896686203603,3.5612914305410776e-6,-1.5055977587760283e-8,0.00198212818028609,3.7276910519524167e-6,-1.522077511487346e-8,0.0019821217200457113,3.822702343827983e-6,-1.531483119915164e-8,0.001982100526968717,3.8346574475360094e-6,-1.5326546430867445e-8,0.001982095446197697,3.7647342774013897e-6,-1.525707214555077e-8,0.0019821337647565624,3.626027788928867e-6,-1.511936833404366e-8,0.00198223586051072,3.441229396883561e-6,-1.4935887639064302e-8,0.00198241295750562,3.2394074768603723e-6,-1.4735395171384388e-8,0.001982665941468611,3.0524134698759988e-6,-1.4549442314482317e-8,0.0019829850278711707,2.9111670054398966e-6,-1.4408723058841443e-8,0.0019833501452222605,2.841809897117393e-6,-1.4339272286988301e-8,0.0019837320752173157,2.8615334931783054e-6,-1.4358293854803897e-8,0.001984094861776407,2.9738376767734945e-6,-1.4469388182609625e-8,0.001984400625925791,3.163606036205151e-6,-1.465759406565055e-8,0.001984617903763515,3.39387177161666e-6,-1.4886148324894974e-8,0.001984733239124418,3.6078493427449448e-6,-1.5098540495896356e-8,0.001984762586708769,3.740319866084089e-6,-1.522990885918146e-8,0.001984755051949164,3.739151728899739e-6,-1.5228487094580237e-8,0.0019847812506757346,3.589373742862749e-6,-1.507949371776934e-8,0.0019849070018280613,3.324884794977739e-6,-1.481665653780441e-8,0.0019851657075547475,3.017077739740492e-6,-1.4510837813089766e-8,0.001985546337819205,2.7455641756043497e-6,-1.4240999293311826e-8,0.0019860027126962026,2.5689052542741243e-6,-1.4065234505030063e-8,0.001986474911058454,2.5102785475177926e-6,-1.4006586884914449e-8,0.001986909190146146,2.5597820777408202e-6,-1.4055310223533645e-8,0.001987269141598994,2.685729541695863e-6,-1.4180024373601416e-8,0.001987538415975901,2.8470244196991636e-6,-1.4339955147058143e-8,0.0019877184535379826,3.0026745725009918e-6,-1.4494369758932575e-8,0.001987824315689395,3.1178169485181043e-6,-1.4608579499453113e-8,0.0019878803285720108,3.1671431670578377e-6,-1.4657380747630862e-8,0.001987916017903525,3.1367378731829e-6,-1.4626916752757822e-8,0.00198796225735607,3.0248075252962984e-6,-1.4515412078652403e-8,0.001988047562103157,2.8413753222055076e-6,-1.4332850735856531e-8,0.0019881946131477435,2.60687216740141e-6,-1.4099542829987458e-8,0.001988417298411971,2.349527873938127e-6,-1.3843513258288562e-8,0.0019887187102340417,2.1016769841030624e-6,-1.3596844711551368e-8,0.001989090425727029,1.895388778983732e-6,-1.3391377619170956e-8,0.001989513160461744,1.7578895979745178e-6,-1.3254203612054567e-8,0.001989958770446367,1.7071788559904026e-6,-1.3203316404532476e-8,0.001990393534070427,1.7481911434179824e-6,-1.3243755974189393e-8,0.0019907827350952195,1.8697874359525122e-6,-1.336454230925692e-8,0.00199109681028482,2.0431157285996407e-6,-1.3536978415285554e-8,0.001991319151058384,2.222726763531207e-6,-1.371574429721612e-8,0.0019914544946981836,2.3526243150694117e-6,-1.3844968523515149e-8,0.0019915347809361574,2.379086977407752e-6,-1.3871077631016254e-8,0.001991617224389839,2.269346242030513e-6,-1.376144811926663e-8,0.0019917698902892863,2.0294384279911193e-6,-1.3522157951942242e-8,0.0019920466456429435,1.7095202837346074e-6,-1.3203206351826863e-8,0.001992463423863107,1.3885001624897012e-6,-1.288317749571206e-8,0.0019929908638321907,1.143480512993817e-6,-1.2638853847306288e-8,0.0019935682104733686,1.0214708448982725e-6,-1.2517091776224162e-8,0.0019941285130815195,1.0283869976145581e-6,-1.2523846927649901e-8,0.0019946200002937324,1.1365035316745898e-6,-1.2631538348227922e-8,0.001995015574720192,1.300685938679259e-6,-1.2795181679410482e-8,0.0019953118522825736,1.4734595686959486e-6,-1.2967407715671091e-8,0.0019955231121392253,1.6145721408287418e-6,-1.3108023269665573e-8,0.001995674485554681,1.6953207844439172e-6,-1.3188361405392658e-8,0.001995796372307964,1.6996250991069645e-6,-1.3192379686625797e-8,0.0019959203169879858,1.6236696505985474e-6,-1.3116312565503816e-8,0.0019960757921594096,1.475055708754886e-6,-1.2967807444551166e-8,0.0019962873383381975,1.271613814117125e-6,-1.2764702800757431e-8,0.001996571813660661,1.039617664310189e-6,-1.253321173415832e-8,0.001996935876688311,8.10987734279826e-7,-1.2305124592895642e-8,0.0019973742307001037,6.19237649378676e-7,-1.2113796509748371e-8,0.0019978693382533895,4.943937406260044e-7,-1.198913399233764e-8,0.0019983931254425164,4.575767847518032e-7,-1.1952232495962723e-8,0.0019989108215040154,5.162092500765573e-7,-1.2010593106379118e-8,0.0019993866344011147,6.609218430927506e-7,-1.215498240158599e-8,0.001999790531775251,8.650472468204294e-7,-1.2358850045151053e-8,0.0020001051872744658,1.0872195388065961e-6,-1.258086799786539e-8,0.0020003320300538583,1.2774384887276872e-6,-1.2770987731393865e-8,0.0020004948833237455,1.386820963278251e-6,-1.2880238021882123e-8,0.0020006389899060112,1.380409164658492e-6,-1.2873596607745973e-8,0.0020008230599442827,1.250445294729628e-6,-1.2743295658742569e-8,0.0020011035292148414,1.0248522465183068e-6,-1.2517287786395435e-8,0.0020015145004623476,7.642707366236366e-7,-1.2256256246504428e-8,0.002002052224806011,5.444286659134359e-7,-1.203598958625036e-8,0.0020026739455431216,4.2948544136936147e-7,-1.1920745495741174e-8,0.002003313579512777,4.496948714502562e-7,-1.1940890619262743e-8,0.0020039058326337656,5.94885512572639e-7,-1.208630936784008e-8,0.0020044058510690797,8.245709877731227e-7,-1.2316460457905977e-8,0.002004796841439746,1.0859096843776425e-6,-1.2578353220820108e-8,0.0020050868112686674,1.3296101468781744e-6,-1.2822521486441082e-8,0.0020053001577274294,1.5190539612688328e-6,-1.3012215262669332e-8,0.002005469139021302,1.6331027930982382e-6,-1.3126245137314179e-8,0.0020056275325741548,1.6652065850658668e-6,-1.3158091335992063e-8,0.0020058066106900104,1.6211993428942383e-6,-1.3113673482230696e-8,0.0020060325903481888,1.5170686408574125e-6,-1.3009079439298547e-8,0.002006324650222416,1.3769637497429265e-6,-1.2868534813545612e-8,0.0020066929754689877,1.2310800018681066e-6,-1.2722269046986007e-8,0.002007136798951896,1.1127780991151567e-6,-1.2603647647411476e-8,0.0020076429784578894,1.054378781853201e-6,-1.254500526328362e-8,0.002008186099861188,1.081598763449451e-6,-1.2572118807769247e-8,0.0020087311297168646,1.2074288608481698e-6,-1.2698088673752461e-8,0.002009239103287181,1.4270773152031296e-6,-1.2918234760844035e-8,0.0020096752789058284,1.716007875070945e-6,-1.3208055118895744e-8,0.0020100179652990918,2.0326550064858777e-6,-1.352587734554098e-8,0.0020102654993804938,2.3260539621831587e-6,-1.3820486693134687e-8,0.0020104390771972405,2.547030253336762e-6,-1.4042386690680413e-8,0.002010580106295075,2.6604804750482006e-6,-1.4156191902665433e-8,0.0020107419502173964,2.6557832329077294e-6,-1.4151139319925016e-8,0.0020109771879805558,2.5523069324261464e-6,-1.4046647718123685e-8,0.0020113229426591533,2.397375789826293e-6,-1.3890280276741745e-8,0.0020117884211216064,2.2554114694326285e-6,-1.3746841070905745e-8,0.0020123497341117697,2.1898980519676447e-6,-1.3680257875013628e-8,0.002012955651515441,2.2438213886840194e-6,-1.3733900181722728e-8,0.0020135433728180985,2.4266447610087438e-6,-1.39174182558369e-8,0.0020140579317852875,2.71366437476233e-6,-1.4206014604787913e-8,0.0020144668228012324,3.057204948402956e-6,-1.4551671002974376e-8,0.0020147647475891694,3.403199418756304e-6,-1.4899863316082618e-8,0.0020149692079483423,3.7055522989431925e-6,-1.520408419186706e-8,0.00201511150064555,3.9340846123691215e-6,-1.5433892567141782e-8,0.0020152277251075717,4.076173637410506e-6,-1.5576577887703656e-8,0.002015352239871468,4.134536644454852e-6,-1.563490853663456e-8,0.0020155138461719147,4.123692670047893e-6,-1.5623536213635403e-8,0.002015733840614426,4.0666243269108735e-6,-1.55656072328393e-8,0.0020160248674950276,3.992054942875605e-6,-1.549001455038565e-8,0.002016389829459018,3.93198510839712e-6,-1.542893704410032e-8,0.0020168206820040395,3.918765993757011e-6,-1.541493242521958e-8,0.0020172975756185623,3.980985777701276e-6,-1.5476833726911856E-08,0.0020177894153615887,4.137875398081949e-6,-1.5634127210906082e-8,0.002018257233673766,4.392939175307108e-6,-1.589050240627824e-8,0.0020186613266694954,4.728908346737077e-6,-1.6228694079735292e-8,0.0020189715206215524,5.107091194937329e-6,-1.660975065177038e-8,0.0020191776486713324,5.473615092617835e-6,-1.6979292753435012e-8,0.002019295779758033,5.772429950864491e-6,-1.7280651483171656e-8,0.002019366518176988,5.961349214838775e-6,-1.7471108259171236e-8,0.0020194449006417144,6.025194125173232e-6,-1.7535205282025255e-8,0.0020195851788385455,5.980999551576999e-6,-1.7490022440756466e-8,0.0020198257279237858,5.873603143711555e-6,-1.7380744515888384e-8,0.0020201787279912464,5.763467291729197e-6,-1.7268403150332105e-8,0.002020627231636164,5.710627551405569e-6,-1.7213706810198902e-8,0.002021130054639501,5.7592346508056935e-6,-1.7261429057047976e-8,0.002021632985760314,5.926817997082376e-6,-1.7429501306651574e-8,0.0020220830928120654,6.20118699778434e-6,-1.7705783145695567e-8,0.0020224418380563767,6.54565640069781e-6,-1.8053264624984565e-8,0.002022693062944097,6.910491614078083e-6,-1.842162169656846e-8,0.0020228439203432147,7.246330768272015e-6,-1.876083414523109e-8,0.00202291967499455,7.515105216752511e-6,-1.9032294027402762e-8,0.002022955371584404,7.695808702277565e-6,-1.9214681031198905e-8,0.0020229876289183193,7.785067752112486e-6,-1.9304540519772036e-8,0.002023048591573068,7.794246700981407e-6,-1.931333154928886e-8,0.0020231624980154585,7.745203409912733e-6,-1.926311028183914e-8,0.0020233442466032186,7.666212202219833e-6,-1.918240528759956e-8,0.0020235989734061375,7.588624354679677e-6,-1.9102866270263047e-8,0.002023921859131006,7.544034825291021e-6,-1.9056442936228402e-8,0.0020242978850773183,7.561308638331777e-6,-1.907241483206435e-8,0.0020247018586647472,7.662755338235264e-6,-1.9173526603769192e-8,0.0020250996748987574,7.859045107714878e-6,-1.9370801266084847e-8,0.0020254522736660083,8.143408211325172e-6,-1.9657586738974178e-8,0.0020257235021321623,8.487284167289417e-6,-2.0005064388235096e-8,0.0020258914008579325,8.841089839559924e-6,-2.0362983469746076e-8,0.0020259593522022504,9.143502782538063e-6,-2.0669092452411597e-8,0.002025960886878649,9.339097586877438e-6,-2.0867079499950275e-8,0.0020259529258870486,9.398254944606137e-6,-2.0926796085751366e-8,0.0020259980842913805,9.329515946722925e-6,-2.085676872498728e-8,0.0020261436498098338,9.177436067364245e-6,-2.0702003689784143e-8,0.002026406976788043,9.007145260904893e-6,-2.0528373390696197e-8,0.0020267726311981303,8.883574211806648e-6,-2.0401649057662443e-8,0.002027200045442295,8.85396367750792e-6,-2.0369837232274553e-8,0.00202763668051562,8.938366466169523e-6,-2.0453528387901555e-8,0.002028031669042613,9.128606584898225e-6,-2.0644735364591285e-8,0.0020283466335991557,9.39376249959402e-6,-2.0912327645621907e-8,0.00202856210099846,9.689503075361093e-6,-2.121142268331872e-8,0.002028679138809268,9.968698912730516e-6,-2.1494151041399055e-8,0.0020287166795685033,1.0191047732068404e-5,-2.1719481725996414e-8,0.0020287057358542504,1.0329897581158466e-5,-2.186021727137697e-8,0.0020286822638829623,1.0375287950705e-5,-2.1906123600102078e-8,0.0020286804677956084,1.0333353870444897e-5,-2.186332802988044e-8,0.0020287278066525257,1.022312602899354e-5,-2.175105158087606e-8,0.0020288421647846723,1.0072112218170743e-5,-2.1597111262225863e-8,0.0020290308875681577,9.911875842701016e-6,-2.143344844153332e-8,0.0020292909665944156,9.774243576700235e-6,-2.129232494824514e-8,0.0020296097239808366,9.688113323346603e-6,-2.1203133387480477e-8,0.0020299656877050217,9.67644684934271e-6,-2.11893658424898e-8,0.0020303297882378582,9.752905982662366e-6,-2.1265165055571597e-8,0.0020306676073327287,9.917766980710009e-6,-2.1431087980682735e-8,0.002030943934628873,1.0153584998504719e-5,-2.1669593622508353e-8,0.0020311306708723493,1.0422590466425067e-5,-2.1942323425636325e-8,0.002031217579951732,1.0669289798588603e-5,-2.219275019954811e-8,0.002031222335730858,1.0831796516238949e-5,-2.235778014634001e-8,0.002031193048301995,1.0861890930176747e-5,-2.2388241959551486e-8,0.00203119703859634,1.0746492481003186e-5,-2.2270735146629827e-8,0.002031297195154339,1.0517768776177442e-5,-2.2037844471414716e-8,0.0020315273094421984,1.0243291108028e-5,-2.1758092239078608e-8,0.0020318802493412753,1.0000530434740792e-5,-2.1510081000851584e-8,0.002032314137298937,9.850022664826762e-6,-2.1355340836590286e-8,0.002032770207259545,9.81982278786599e-6,-2.132258299426645e-8,0.0020331917199350323,9.904280503784482e-6,-2.14063888568104e-8,0.002033536949342053,1.0072489993620747e-5,-2.157566092331201e-8,0.0020337847861032054,1.0280151984724976e-5,-2.178555756437125e-8,0.002033934644404204,1.0480633734434917e-5,-2.1988684509594312e-8,0.002034002956023895,1.0633476288885205e-5,-2.2143773497299168e-8,0.0020340179562521273,1.0710065550269308e-5,-2.222152752762457e-8,0.002034013813275749,1.0696609639052564e-5,-2.2207730651406188e-8,0.002034024860105363,1.0594604521297306e-5,-2.2103765848150748e-8,0.002034080587443095,1.0419122419825089e-5,-2.19248717814829e-8,0.0020342019278727854,1.0195455518673118e-5,-2.169670062200928e-8,0.0020343991620295483,9.954802844166271e-6,-2.145091239995425e-8,0.0020346714321390342,9.729785129053017e-6,-2.122063084652677e-8,0.0020350074824118905,9.550386709694598e-6,-2.103636451097717e-8,0.002035387185509016,9.440493583899565e-6,-2.0922533216016104e-8,0.0020357836037984364,9.414912608424384e-6,-2.089444107511516e-8,0.0020361655489376162,9.476655420791237e-6,-2.0955452598258494e-8,0.002036501001353076,9.614310232276557e-6,-2.1094206564680248e-8,0.002036762210872142,9.79994037620005e-6,-2.1282363869390327e-8,0.0020369330481708123,9.989184837192771e-6,-2.1474658477092256e-8,0.002037017771296381,1.012628359366276e-5,-2.1614061269663444e-8,0.002037047915437464,1.015658110540848e-5,-2.164463677168314e-8,0.0020370813026867737,1.0046056108125668e-5,-2.153154985964805e-8,0.0020371875508600258,9.800650799576031e-6,-2.1280773292665346e-8,0.002037421936656467,9.472336381754918e-6,-2.094520101904596e-8,0.0020378005857027153,9.143072453333508e-6,-2.0608270685343048e-8,0.0020382928899801513,8.892876275813154e-6,-2.035149508235166e-8,0.0020388358398022157,8.770499811406708e-6,-2.0224669132370346e-8,0.002039359770557812,8.781941663669052e-6,-2.0234157130035133e-8,0.0020398103504522254,8.897729739466089e-6,-2.0350211586612295e-8,0.0020401588643933475,9.069382952218172e-6,-2.0523629149456965e-8,0.0020404019625274035,9.245293559122839e-6,-2.0701866584475123e-8,0.002040555827693921,9.381504609670853e-6,-2.0840025781472896e-8,0.0020406489259659406,9.447228151930216e-6,-2.0906536788607898e-8,0.0020407154331214734,9.426696770852405e-6,-2.088512838607746e-8,0.00204078985578392,9.318873354513713e-6,-2.077459998128169e-8,0.00204090271395194,9.135845367544504e-6,-2.0587206452044835e-8,0.0020410771407216085,8.900239108317796e-6,-2.034599700431967e-8,0.002041326419699712,8.641807325844239e-6,-2.0081292128129632e-8,0.0020416526435947345,8.393337339943669e-6,-1.982648942593215e-8,0.002042046703171445,8.186237577472187e-6,-1.9613586261310882e-8,0.0020424895896427346,8.046339142518472e-6,-1.9468954219893878e-8,0.0020429547843234747,7.990305000968632e-6,-1.940972395069631e-8,0.0020434115251253306,8.022843551834938e-6,-1.9440936885743926e-8,0.002043828782565443,8.134892448156656e-6,-1.9553616311880043e-8,0.0020441798602190554,8.302917025788585e-6,-1.972393223071845e-8,0.0020444477519546617,8.4896969525292e-6,-1.9913901817449882e-8,0.0020446311903293338,8.647706547103258e-6,-2.0074815114312748e-8,0.0020447501973034107,8.726723226422148e-6,-2.0155077328217368e-8,0.002044848244940901,8.686627904246379e-6,-2.011341515541943e-8,0.0020449867383772256,8.513737749746249e-6,-1.9935671842505055e-8,0.002045228541166259,8.234144633017872e-6,-1.964846070320371e-8,0.0020456134638839763,7.913572361465218e-6,-1.931898185881672e-8,0.0020461377861319533,7.63729312921591e-6,-1.9034476270744172e-8,0.0020467521585061633,7.477202828544634e-6,-1.8868592712503943e-8,0.002047381272856939,7.464688941483806e-6,-1.8853644549237028e-8,0.0020479532062943314,7.58431837206364e-6,-1.8974080315531745e-8,0.0020484215587382487,7.78774400789283e-6,-1.918060677428675e-8,0.0020487722662357426,8.015405362121847e-6,-1.941233147259879e-8,0.002049018198077936,8.214197838192044e-6,-1.9614843383185996e-8,0.0020491889216315115,8.346735295295853e-6,-1.9749735808637718e-8,0.0020493210512069144,8.393632060507522e-6,-1.979700451228811e-8,0.0020494512449664246,8.351957607960816e-6,-1.9753525015406534e-8,0.0020496117250101715,8.23232744734854e-6,-1.963010652990153e-8,0.002049827426776408,8.055769435622714e-6,-1.944827439536342e-8,0.002050114053526486,7.850558869214728e-6,-1.9236989441846953e-8,0.0020504767490431433,7.648847136675355e-6,-1.9029157282885984e-8,0.0020509094756088818,7.482854532348159e-6,-1.8857725613841873e-8,0.002051395453334524,7.380623768682452e-6,-1.8751377321085998e-8,0.0020519090052662243,7.361760387571575e-6,-1.8730230620980626e-8,0.0020524188593675297,7.433818308990292e-6,-1.8802173480598776e-8,0.0020528926844391848,7.589950602549962e-6,-1.8960428834936324e-8,0.0020533024421489844,7.808390524123514e-6,-1.9182928498524213e-8,0.0020536299340462158,8.054192913403938e-6,-1.9433978306497595e-8,0.0020538718361486044,8.283434195619361e-6,-1.9668482974938482e-8,0.0020540434289632683,8.45004521906672e-6,-1.9838956797592828e-8,0.0020541797514216247,8.515402796906978e-6,-1.99054534057615e-8,0.0020543322054149753,8.459930706160225e-6,-1.984759651675978e-8,0.0020545585952090927,8.293944827313858e-6,-1.9675807879402267e-8,0.0020549063810787,8.062431097372e-6,-1.9436246264897823e-8,0.0020553934153247633,7.837497117823304e-6,-1.920304947832446e-8,0.002055995700465939,7.696451661454231e-6,-1.9055809090821722e-8,0.002056651811353018,7.693154521324639e-6,-1.9050112336143213e-8,0.0020572846695030584,7.837818600247798e-6,-1.919671296351236e-8,0.002057829365555983,8.096658859821898e-6,-1.946106441052887e-8,0.002058252145844519,8.409493816274429e-6,-1.978134730901258e-8,0.0020585536030746266,8.712990432294358e-6,-2.0092375696100318e-8,0.002058759808669095,8.957877739096902e-6,-2.0343349339844396e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json new file mode 100644 index 000000000..4dcccb37b --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_17.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":17000,"numberOfSamples":1000,"samples":[0.0020589095356776037,9.116105504093818e-6,-2.0505272164235435e-8,0.002059043510293161,9.180255067418492e-6,-2.0570390059257767e-8,0.0020591976431414568,9.159302745262173e-6,-2.054785882824188e-8,0.002059399625909375,9.073759899582225e-6,-2.045874721325323e-8,0.0020596674746746844,8.95148439515232e-6,-2.033170765436402e-8,0.00206000888513569,8.824207938457376e-6,-2.019937465729761e-8,0.002060420904195782,8.724308617167852e-6,-2.0095032184184587e-8,0.0020608899779143205,8.68132520947309e-6,-2.0049049012491025e-8,0.0020613928365786132,8.717972919315283e-6,-2.008482719556681e-8,0.0020618988348358,8.845955809078727e-6,-2.021453482958727e-8,0.002062374125258358,9.062441716260134e-6,-2.0435474508193457e-8,0.0020627874895708226,9.348364762479418e-6,-2.072826871336509e-8,0.0020631169945883126,9.669654112154566e-6,-2.1058015950605946e-8,0.0020633560604633263,9.98198746864013e-6,-2.137908652587735e-8,0.002063517288428266,1.023877017749716e-5,-2.164330411583651e-8,0.002063632645942536,1.0401139220424818e-5,-2.1810299545772995e-8,0.0020637491502467223,1.0448183572471843e-5,-2.185815206205818e-8,0.0020639198525462597,1.0385066085844465e-5,-2.1791885352537092e-8,0.002064190922547863,1.0246206042140799e-5,-2.1646843352671344e-8,0.002064587291919049,1.0090636415679369e-5,-2.1483949591921145e-8,0.0020651014652658243,9.988078798241432e-6,-2.13753442005915e-8,0.002065691367589172,9.998026570269695e-6,-2.1382754626188622e-8,0.002066291012197917,1.0149230388591655e-5,-2.153622147579785e-8,0.002066831501387849,1.0429452683376921e-5,-2.182338975756979e-8,0.002067263169333099,1.0791237145000513e-5,-2.2195367611649683e-8,0.002067568557615017,1.1170401662074308e-5,-2.2585814103541868e-8,0.0020677618994642912,1.1507219742502304e-5,-2.2932879418767003e-8,0.0020678786593962845,1.1760992660056131e-5,-2.319433420100162e-8,0.00206796228678175,1.1914801500387303e-5,-2.3352529680849556e-8,0.0020680536670884195,1.1972789302221374e-5,-2.3411612372762594e-8,0.002068185083895209,1.1954165594086708e-5,-2.339133460421787e-8,0.0020683778972125345,1.1887104070253944e-5,-2.3320744180844544e-8,0.002068642307553408,1.180390121082168e-5,-2.3233173740066774e-8,0.002068977856263579,1.1737393814191125e-5,-2.3162537647244684e-8,0.002069373999389383,1.1717978706675388e-5,-2.3140267827765654e-8,0.0020698107873335274,1.1770514429890422e-5,-2.3192140613020073e-8,0.0020702602014525747,1.1910715973072524e-5,-2.3334573248691355e-8,0.002070688939508567,1.2141252692424613e-5,-2.3570578997251697e-8,0.0020710632916822844,1.2448527390387745e-5,-2.3886375187523575e-8,0.002071356066541742,1.2801803268012288e-5,-2.4250382510760558e-8,0.0020715543319876706,1.3156451701310057e-5,-2.4616491549786515e-8,0.00207166551766087,1.3462116971780244e-5,-2.493246716960177e-8,0.002071719050649512,1.3674624989544023e-5,-2.5152297788431047e-8,0.0020717617377544535,1.3768431742533288e-5,-2.524915847137308e-8,0.0020718472574079074,1.374550081599251e-5,-2.5224700784713937e-8,0.0020720223622184525,1.363727582508806e-5,-2.5111195478472052e-8,0.0020723137031515636,1.3498471162329926e-5,-2.496519243244624e-8,0.002072719191338335,1.339381780152275e-5,-2.485385332221292e-8,0.002073206795757431,1.338096643139214e-5,-2.483723759380846e-8,0.0020737219362692,1.3494245133198445e-5,-2.4951381108780162e-8,0.00207420211020392,1.373455339359368e-5,-2.5197661804572466e-8,0.0020745944143773383,1.4069430089365293e-5,-2.554271199173207e-8,0.002074869746023746,1.4443723774723879e-5,-2.5929405831806994e-8,0.0020750285128816304,1.479667972622433e-5,-2.6294607590510123e-8,0.0020750966176363173,1.5078544268788864e-5,-2.6586483364644268e-8,0.0020751148669499956,1.5260889492796408e-5,-2.677529701011583e-8,0.0020751270004247535,1.5338783722705668e-5,-2.6855711891848633e-8,0.0020751704833224575,1.5326746513909972e-5,-2.684261106263222e-8,0.0020752715762822763,1.5251984116094389e-5,-2.6764080409271047e-8,0.002075444009124103,1.5147762629496005e-5,-2.6654533703698157e-8,0.002075689729548116,1.504827746606285e-5,-2.6549398220846943e-8,0.002076000366210549,1.4985082629739757e-5,-2.6481430881895264e-8,0.002076358657231711,1.498441301720375e-5,-2.6477967033587838e-8,0.0020767397992757677,1.5064587977735741e-5,-2.6558240543651232e-8,0.002077113259954405,1.5233004156103975e-5,-2.6730240753699176e-8,0.0020774459186594374,1.548284453443912e-5,-2.6987226620384064e-8,0.002077707337417931,1.5790500049088474e-5,-2.7304945193864276e-8,0.002077877261826839,1.6115682164498162e-5,-2.764165309505029e-8,0.0020779538822941765,1.6406603632449e-5,-2.7943458192743133e-8,0.0020779594398716464,1.6611353072832964e-5,-2.8156170195329946e-8,0.0020779390055978278,1.6693382219093287e-5,-2.824146792653341e-8,0.0020779502913158923,1.6645409426593984e-5,-2.8191416586278918e-8,0.002078046844161103,1.6494938438233428e-5,-2.803425405045996e-8,0.0020782610782756087,1.6297779276038386e-5,-2.782772424649056e-8,0.0020785941150732565,1.612175588363035e-5,-2.7642241561896423e-8,0.0020790159587568842,1.6027141518751153e-5,-2.754063775278662e-8,0.0020794748756735038,1.6050743503202965e-5,-2.756160492638588e-8,0.0020799118940896845,1.619791239208086e-5,-2.7711253577368164e-8,0.0020802757626315633,1.6443513592555717e-5,-2.7963924844698012e-8,0.0020805345246273253,1.674043522617959e-5,-2.8270877063799093e-8,0.002080681226938013,1.7032634096537527e-5,-2.857380300224129e-8,0.002080732951995497,1.7268943244941685e-5,-2.881925151534997e-8,0.002080724194408864,1.7413982316484317e-5,-2.8970092565580946e-8,0.0020806971435383278,1.745367834708195e-5,-2.901136620869484e-8,0.0020806920260737966,1.7394912621893336e-5,-2.8949975367327408e-8,0.002080739988704213,1.72607815502705e-5,-2.8809768850635676e-8,0.002080859515267317,1.70838985357426e-5,-2.8624560861473263e-8,0.0020810559636607064,1.6899885539921436e-5,-2.8431349761988563e-8,0.0020813230557203376,1.6742274751481572e-5,-2.8265022453786016e-8,0.0020816451171855417,1.6639033795220282e-5,-2.8154767386943654e-8,0.0020819993189068113,1.6610203007369465e-5,-2.812164312243963e-8,0.0020823577851628115,1.6665911699555345e-5,-2.817650914736122e-8,0.0020826899633292987,1.680426930790959e-5,-2.8317770861029884e-8,0.002082966018551884,1.7009150846059025e-5,-2.852896394235378e-8,0.002083162073066397,1.7248756752608075e-5,-2.8777135556946513e-8,0.0020832674579102563,1.7476932878513038e-5,-2.9014151463292816e-8,0.0020832924694833593,1.7639846001218737e-5,-2.9183675584427234e-8,0.0020832727739094805,1.7689422424584678e-5,-2.9235274256026354e-8,0.0020832653064138955,1.7601030960855478e-5,-2.9142946193151746e-8,0.0020833330245630757,1.7387646058308056e-5,-2.8919920603682593e-8,0.002083522753935488,1.7100955802243916e-5,-2.8619808329920083e-8,0.0020838468179513333,1.6815710705222776e-5,-2.8320330725747508e-8,0.002084278439419095,1.6604039049236554e-5,-2.8096659219011013e-8,0.0020847625566020353,1.6512511531122853e-5,-2.799759622144117e-8,0.002085235023267062,1.6551414097566436e-5,-2.8034351982823543e-8,0.0020856408987005555,1.6697366798988196e-5,-2.8183104552679034e-8,0.0020859461245631033,1.690450794263447e-5,-2.8396456266918066e-8,0.0020861415082864985,1.7118421130651345e-5,-2.8617819915088376e-8,0.0020862405867537945,1.7288696492304295e-5,-2.8794501922373435e-8,0.0020862736330299575,1.737809826474195e-5,-2.8887350772104285e-8,0.002086279804006059,1.7367702998098975e-5,-2.8876251011356654e-8,0.0020862990421835854,1.7258011428210435e-5,-2.8761400589556528e-8,0.002086365115922038,1.7066487746353264e-5,-2.8560802190087286e-8,0.0020865008408489875,1.682256943694604e-5,-2.8305053907286174e-8,0.002086715919263949,1.656156014476701e-5,-2.8030941270095572e-8,0.0020870071990390262,1.6318714925791584e-5,-2.7775237638634485e-8,0.0020873606761909773,1.612444436636325e-5,-2.7569706696292268e-8,0.0020877543487093165,1.6001012803300085e-5,-2.7437694306513178e-8,0.0020881612220372825,1.596050578626689e-5,-2.7392040420271822e-8,0.002088552230288847,1.6003549082607828e-5,-2.7433729548710437e-8,0.0020888992435952967,1.611837191802468e-5,-2.7550832366391624e-8,0.0020891786471092483,1.6280160651193357e-5,-2.7717702617435652e-8,0.0020893761169842166,1.6451350603092855e-5,-2.7895164399045403e-8,0.002089492678959948,1.6584503687808136e-5,-2.803347849401429e-8,0.0020895506186168747,1.6629975070205594e-5,-2.8080421596796448e-8,0.0020895956639829702,1.654957839540818e-5,-2.799570583593579e-8,0.002089690395538273,1.6333804471878623e-5,-2.7769090685971695e-8,0.002089896033722322,1.6014373257708863e-5,-2.7433529126734662e-8,0.0020902475806469254,1.5661140369289124e-5,-2.7061908434893643e-8,0.002090735796633609,1.5359270098771867e-5,-2.67432120407e-8,0.00209130859780546,1.5176778132377433e-5,-2.6548672939580005e-8,0.002091891842946931,1.5140754055244766e-5,-2.6506954770801897e-8,0.0020924165245282877,1.5233761825979138e-5,-2.660030176659009e-8,0.002092838108888907,1.5407435049015967e-5,-2.6778581186473033e-8,0.0020931426145603437,1.5602073463539797e-5,-2.697961713028947e-8,0.002093342524197185,1.576303163752042e-5,-2.7146256028244872e-8,0.0020934681224012187,1.5850536534203465e-5,-2.7236664035016808e-8,0.002093558330924372,1.584356238962605e-5,-2.7228488040135843e-8,0.002093652929189025,1.5739702587511593e-5,-2.711885649216876e-8,0.002093786585558144,1.5552692842214613e-5,-2.6921891528832596e-8,0.002093984610700063,1.530847635566744e-5,-2.6664625730728237e-8,0.002094260408522702,1.5040327883243397e-5,-2.6381866829385993e-8,0.0020946146605398033,1.4783590396206654e-5,-2.6110629573656682e-8,0.0020950361908124754,1.4570612940870071e-5,-2.5884801421741135e-8,0.002095504287982403,1.4426464136665532e-5,-2.573066979561237e-8,0.0020959920098880948,1.436589162782448e-5,-2.566378974830331e-8,0.0020964698904481064,1.4391654082877689e-5,-2.568727581986414e-8,0.002096909672107035,1.4494027260271335e-5,-2.5791262682142066e-8,0.002097287955238897,1.4651254484391914e-5,-2.595327902709219e-8,0.0020975898588619776,1.483086589384205e-5,-2.6139490483611765e-8,0.0020978129239909112,1.4992194433574303e-5,-2.6307227096703933e-8,0.002097971126731232,1.5091109530391926e-5,-2.6409931481351222e-8,0.002098097703998993,1.5088284225384236e-5,-2.6405927211233465e-8,0.002098243998954342,1.4961356647547054e-5,-2.6271336291410024e-8,0.002098470643735973,1.4718558663920096e-5,-2.601451060716538e-8,0.002098829142769062,1.4406847413029446e-5,-2.568461021728266e-8,0.002099338584112944,1.4104891981013634e-5,-2.5364227738068856e-8,0.002099970577078888,1.389718581053549e-5,-2.51422113367583e-8,0.0021006554024350413,1.3839945599057747e-5,-2.5077873022135188e-8,0.0021013089162565824,1.3939075366767634e-5,-2.5177804466452004e-8,0.0021018642410454017,1.4152966541286029e-5,-2.5398697748388907e-8,0.002102290544234685,1.4414719463911722e-5,-2.5670555129297722e-8,0.002102593458372229,1.4657717276490355e-5,-2.5923475251490083e-8,0.002102803823419274,1.4832523419603329e-5,-2.610539494337901e-8,0.002102963997051854,1.4912874042482475e-5,-2.6188440763515092e-8,0.00210311701985688,1.489429901720448e-5,-2.6167581509441245e-8,0.00210329981316489,1.4789514144286761e-5,-2.605589711490424e-8,0.0021035395604685125,1.4623216960515582e-5,-2.5879181897882027e-8,0.002103852012857229,1.4427256816148642e-5,-2.5670874573032203e-8,0.0021042409306866908,1.4236166858646234e-5,-2.546731313778813e-8,0.002104698454320543,1.4082882456060734e-5,-2.53031751996881e-8,0.0021052064752133293,1.3994654154339699e-5,-2.5207158431920774e-8,0.0021057391315831625,1.3989407920046565e-5,-2.519818244598461e-8,0.002106266387320575,1.4073050130678136e-5,-2.5282607415599342e-8,0.002106758334830071,1.423820083636465e-5,-2.5452924691916057e-8,0.0021071897012097697,1.4464569256647e-5,-2.568810271807864e-8,0.0021075440763852053,1.4720984983073159e-5,-2.5955605114652786e-8,0.002107817455023985,1.4968991587208612e-5,-2.6215033812032676e-8,0.0021080207898770947,1.5167881763610569e-5,-2.6423345985019315e-8,0.0021081811782254606,1.52812712911579e-5,-2.6541802838830476e-8,0.002108340721814446,1.5285367127017497e-5,-2.6544815228638046e-8,0.002108551393130802,1.5178224387244792e-5,-2.6429882679400344e-8,0.0021088642657054028,1.4987405902763008e-5,-2.6225817522741596e-8,0.0021093131823441873,1.477109413125047e-5,-2.5993980396136906e-8,0.0021098973634679687,1.4606796678395606e-5,-2.5816350529623914e-8,0.0021105729078048107,1.4566334520348138e-5,-2.5769076832392603e-8,0.0021112628777701157,1.4686483996552583e-5,-2.589140375989459e-8,0.002111884963727069,1.49524858304974e-5,-2.616814292368397e-8,0.0021123820416213326,1.530564027223351e-5,-2.653758083888853e-8,0.002112738443062604,1.566943862865359e-5,-2.6919021383359056e-8,0.0021129763380782042,1.597734406587063e-5,-2.7242128079128386e-8,0.002113139906608551,1.6188913189144726e-5,-2.7463982116337144e-8,0.0021132785147635735,1.6292255587917617e-5,-2.7571731956963736e-8,0.002113435244892276,1.6298231436790853e-5,-2.7576542617677282e-8,0.002113641467647694,1.623231108640538e-5,-2.750507948119659e-8,0.0021139155020888497,1.612742596429646e-5,-2.739200662875825e-8,0.002114263195353226,1.601868102419684e-5,-2.7274398004963558e-8,0.002114679097938746,1.5939462619916927e-5,-2.7187584649230205e-8,0.002115147857818045,1.591820498712063e-5,-2.7161697731839154e-8,0.0021156460082405507,1.5975354031712748e-5,-2.7218453269601503e-8,0.0021161445333496127,1.6120489838517026e-5,-2.736813658476198e-8,0.002116612541248858,1.6350066999505276e-5,-2.7607239032229045e-8,0.002117021983644663,1.6646569377117553e-5,-2.791754490148783e-8,0.002117352837098394,1.697979911393296e-5,-2.826741083990463e-8,0.0021175978015787107,1.731065634053247e-5,-2.8615637817191073e-8,0.00211776543378165,1.759725263509948e-5,-2.8917829165943654e-8,0.002117880769420787,1.7802584133189674e-5,-2.9134478291953385e-8,0.002117982886203447,1.7902584529889876e-5,-2.9239569317390042e-8,0.002118119198387002,1.7893289828263934e-5,-2.922832774864068e-8,0.002118336487991736,1.7795584944785858e-5,-2.9122440610658274e-8,0.0021186692843823997,1.7655389538035962e-5,-2.8970402749374115e-8,0.0021191276345471233,1.7536852324466382e-5,-2.8840362727093884e-8,0.0021196884143433207,1.7507199823531867e-5,-2.880401634238384e-8,0.002120295925762307,1.7615411346021366e-5,-2.8913861014445143e-8,0.0021208758106100725,1.787247903713528e-5,-2.9182079529307654e-8,0.002121359406182991,1.8244267405424016e-5,-2.9572807067690778e-8,0.0021217074721560777,1.8663209769622012e-5,-3.0014474124992184e-8,0.0021219209004431955,1.905356541542978e-5,-3.042663828206199e-8,0.0021220343298265485,1.9356536768551152e-5,-3.0746705244532125e-8,0.002122099166839674,1.954377814105041e-5,-3.094431491310143e-8,0.002122166330543905,1.9617217855782224e-5,-3.102119259421685e-8,0.0021222752180405586,1.9600531064406503e-5,-3.100215517299388e-8,0.002122449658514504,1.952878967527067e-5,-3.092419165467688e-8,0.0021226984612435964,1.9440127761138346e-5,-3.082765962692926e-8,0.002123017846957808,1.9370314072744265e-5,-3.075052790344494e-8,0.0021233940681903195,1.934948928989278e-5,-3.0724888774326296e-8,0.0021238056794888474,1.9399952935627528e-5,-3.077458440678296e-8,0.002124225682580438,1.9534193054597844e-5,-3.091310551719368e-8,0.002124624113565031,1.9752886458047202e-5,-3.1141464105636413e-8,0.002124971655833702,2.0043233580223036e-5,-3.144639940286134e-8,0.00212524450155675,2.037859705176521e-5,-3.179992728445566e-8,0.002125429949440885,2.0720660307119964e-5,-3.216153381034379e-8,0.0021255313735390655,2.1024952911718785e-5,-3.2483951488909524e-8,0.0021255706390746042,2.1249553405534983e-5,-3.272236244662322e-8,0.0021255862274255134,2.136531580176944e-5,-3.284530096658392e-8,0.002125626472329969,2.136477599867833e-5,-3.2844230643420137e-8,0.0021257389764561077,2.1266765123494018e-5,-3.273861136499655e-8,0.0021259586471253046,2.1114766388613177e-5,-3.2574325849611996e-8,0.0021262973922635143,2.0968604798671925e-5,-3.241497651320302e-8,0.0021267384416393392,2.0890666115759917e-5,-3.2327268627746654e-8,0.0021272376715695132,2.0929425811587144e-5,-3.236339970670092e-8,0.002127733046172089,2.110460424404699e-5,-3.2545061768599696e-8,0.00212816092546539,2.1399236109442378e-5,-3.2854762929754035e-8,0.0021284746737500223,2.176302809822261e-5,-3.3239236614057686e-8,0.002128658496133636,2.212740460159936e-5,-3.362543623506609e-8,0.0021287304336883744,2.2426834845535454e-5,-3.3943333219980947e-8,0.0021287335646911943,2.2617434207905126e-5,-3.414584047635682e-8,0.0021287204228760234,2.2685679731977404e-5,-3.421817395035784e-8,0.0021287380406940413,2.264602236182866e-5,-3.417535947240264e-8,0.002128818715188701,2.2531501692113913e-5,-3.4052283410800604e-8,0.002128977344015476,2.2382911676892006e-5,-3.3892197642410027e-8,0.002129213263803856,2.2240213464310166e-5,-3.373760006185234e-8,0.0021295139322477768,2.2137245808817076e-5,-3.362460002842891e-8,0.0021298586205894944,2.2099046795842652e-5,-3.358004972356987e-8,0.0021302214146577676,2.2140545104573738e-5,-3.362013028869592e-8,0.0021305737006618716,2.2265607580957118e-5,-3.374931398457121e-8,0.0021308867762918587,2.2466010723704024e-5,-3.39592257518173e-8,0.002131135293920836,2.2720594046935103e-5,-3.4227667717305434e-8,0.0021313019334212695,2.2995565753170124e-5,-3.451884933521096e-8,0.0021313829342262734,2.3247460182788705e-5,-3.4786456209133385e-8,0.0021313929103826883,2.3430080081429465e-5,-3.4981018338903236e-8,0.0021313662623369065,2.35053775592328e-5,-3.506154647311194e-8,0.002131352534668617,2.3455775394926864e-5,-3.500875472352498e-8,0.0021314050619435174,2.3293157757724045e-5,-3.483475480248656e-8,0.0021315656878382726,2.305959461858975e-5,-3.458394904972025e-8,0.002131851148769884,2.2817817875395575e-5,-3.432300884872676e-8,0.002132246675708553,2.2634145895239077e-5,-3.412278123476084e-8,0.0021327093056224787,2.255991732479814e-5,-3.4038512859965103e-8,0.0021331794386085386,2.261762912569421e-5,-3.4094941293936804e-8,0.002133596614516856,2.2795606804280943e-5,-3.4280365800889207e-8,0.0021339148569076657,2.3052078776754165e-5,-3.455073970041519e-8,0.0021341135296762083,2.3327034579694484e-5,-3.484217778475803e-8,0.0021342009716787884,2.355832491670355e-5,-3.508814955727273e-8,0.0021342101969445745,2.3697300658380293e-5,-3.523629751598651e-8,0.0021341884075972216,2.3719450332254015e-5,-3.525994944230765e-8,0.002134184081791398,2.3627331849970435e-5,-3.5161372712859956e-8,0.002134235900463689,2.3446066878692636e-5,-3.4967036409302774e-8,0.0021343663946126897,2.321429430328426e-5,-3.471798296710547e-8,0.0021345807976598918,2.2974350116389325e-5,-3.4459344612988514e-8,0.0021348696549837566,2.2764450779378168e-5,-3.4231980765256686e-8,0.0021352131046345666,2.2613905870942357e-5,-3.4067347153649095e-8,0.0021355851791665065,2.25409643711599e-5,-3.398518306415485e-8,0.002135957353588875,2.255223300982052e-5,-3.3992879723749303e-8,0.0021363013822437923,2.264265540717151e-5,-3.408542886166249e-8,0.0021365919676518924,2.279553658100697e-5,-3.4245382178955386e-8,0.0021368099415358917,2.298274820199354e-5,-3.444296877039347e-8,0.0021369464146205742,2.3165964903851673e-5,-3.463731317033913e-8,0.0021370076236995232,2.3300428516159704e-5,-3.4780406073762714e-8,0.0021370188901841084,2.334275576213467e-5,-3.482548254690987e-8,0.002137024662802771,2.3262920180390915e-5,-3.473993474880969e-8,0.0021370813223880038,2.3057492795026685e-5,-3.451958523389752e-8,0.002137241889275746,2.2757801904735166e-5,-3.41974981982623e-8,0.0021375370262618257,2.2426116340509338e-5,-3.3839966919214845e-8,0.002137961316631726,2.213800200907653e-5,-3.3527737842564464e-8,0.0021384728126343628,2.1957459800264673e-5,-3.332951347872889e-8,0.002139006670366777,2.191643370582827e-5,-3.3280036206354196e-8,0.0021394959229136664,2.2007302232413204e-5,-3.3371904617377737e-8,0.0021398901271324055,2.2189143712365275e-5,-3.3562023526722955e-8,0.002140166006414651,2.2402515162981413e-5,-3.378718549615929e-8,0.002140329077781706,2.2586184572995143e-5,-3.398186921720036e-8,0.0021404083035632985,2.2691063196128188e-5,-3.409319354061641e-8,0.002140446731689183,2.2688976940126358e-5,-3.409045739764433e-8,0.002140490895281052,2.2575699890952926e-5,-3.396857223236857e-8,0.0021405812375513067,2.2368761539972847e-5,-3.374586429282327e-8,0.002140745261299301,2.21013187905107e-5,-3.345758704823717e-8,0.002140994332456639,2.181402372302832e-5,-3.314720913566537e-8,0.002141324077070165,2.15469856889004e-5,-3.285775427864785e-8,0.002141717448243737,2.1333424920190157e-5,-3.262494699138589e-8,0.0021421491254591573,2.1195757227350775e-5,-3.247299004550511e-8,0.0021425900057506363,2.1143998775028036e-5,-3.2412859574264454e-8,0.002143011062769476,2.117578153748411e-5,-3.2442332125159627e-8,0.0021433864887417924,2.1277166088685482e-5,-3.254683206575627e-8,0.0021436964440635616,2.142377656843826e-5,-3.270056832632809e-8,0.0021439298869587705,2.1582271289495213e-5,-3.2867992137633203e-8,0.0021440878674806683,2.1712763255525305e-5,-3.3006289361086e-8,0.002144187054590783,2.1773439803346106e-5,-3.3070310510598916e-8,0.002144262009093983,2.172867744059509e-5,-3.302135431596869e-8,0.002144363336494184,2.156066898233932e-5,-3.2839788635029706e-8,0.0021445484486645283,2.128161554298987e-5,-3.253826914107641e-8,0.0021448640499980975,2.093968006406232e-5,-3.216820242252745e-8,0.0021453256085358927,2.0610778355504582e-5,-3.181096877059883e-8,0.002145905198301666,2.0374493068902587e-5,-3.155211428654284e-8,0.00214653761622983,2.028404497865664e-5,-3.144915450204835e-8,0.002147143609271417,2.0346789600608755e-5,-3.151058660106004e-8,0.0021476575414585346,2.0525272704293914e-5,-3.1696854344447995e-8,0.002148045581613403,2.0755200980876327e-5,-3.193942834876001e-8,0.0021483090662633483,2.0968393190590092e-5,-3.2165288983192186e-8,0.002148476685362016,2.111059951237463e-5,-3.231601401750927e-8,0.002148592188673189,2.115054857145032e-5,-3.235756967674147e-8,0.0021487026050471423,2.108140192452833e-5,-3.2282037014221544e-8,0.002148849218208448,2.091738286919093e-5,-3.2104180012498956e-8,0.0021490617141141114,2.0687943158359667e-5,-3.185531826563116e-8,0.0021493552248900965,2.043093865495207e-5,-3.1576037272193084e-8,0.0021497299103959574,2.018578295980443e-5,-3.1308781112487576e-8,0.0021501726730506327,1.99873898678633e-5,-3.109124846202539e-8,0.0021506604730088547,1.986152543363258e-5,-3.0951322070678607e-8,0.0021511645783630928,1.9821951349432184e-5,-3.0903980935864254e-8,0.0021516549924586936,1.986945352369192e-5,-3.0950285248140185e-8,0.0021521044365688485,1.9992440843010033e-5,-3.107804747030246e-8,0.0021524916686676407,2.016856874486101e-5,-3.126355090492214e-8,0.0021528042317079527,2.0367018571783807e-5,-3.147390414350625e-8,0.002153040804545645,2.0551375958833374e-5,-3.167000555671362e-8,0.002153213305985311,2.0683403675124328e-5,-3.181050955508008e-8,0.002153348503797179,2.0728467991859314e-5,-3.185767901736995e-8,0.002153487865791758,2.06633838486928e-5,-3.178596101433709e-8,0.002153683336498533,2.0486260716953912e-5,-3.159278162166714e-8,0.0021539866168050876,2.022543685029994e-5,-3.130833435668043e-8,0.0021544317139913717,1.9941401323367558e-5,-3.099772567279643e-8,0.0021550161923323133,1.9714632358069782e-5,-3.074786370682314e-8,0.002155692720036186,1.961840203113644e-5,-3.0638105864892124e-8,0.0021563809762338523,1.9688010875520684e-5,-3.070702518398803e-8,0.0021569972223773057,1.990511081944595e-5,-3.0935392402114285e-8,0.002157485124027573,2.0207307545267066e-5,-3.125638734645144e-8,0.002157830955696959,2.0515501898373752e-5,-3.1584963952577884e-8,0.0021580591073866546,2.0761657983135865e-5,-3.1847730058857165e-8,0.0021582161445200332,2.0904745124936695e-5,-3.200013957830926e-8,0.0021583539825240404,2.0933500471754782e-5,-3.20295538061186e-8,0.0021585179343003775,2.0861021855106574e-5,-3.194956386357729e-8,0.0021587404344839763,2.071653038410741e-5,-3.179127525102121e-8,0.0021590389475030915,2.0537441620192218e-5,-3.159486520542445e-8,0.0021594163239126024,2.0362778417702688e-5,-3.140248197378161e-8,0.002159862527034524,2.02278948399552e-5,-3.12524698579826e-8,0.002160357285130327,2.0160345669093216e-5,-3.117480508185589e-8,0.002160873478204498,2.017687657565958e-5,-3.1187780101922056e-8,0.002161381090914999,2.028164028054539e-5,-3.1296077539601465e-8,0.0021618514304895253,2.0465857833124282e-5,-3.1490443368311834e-8,0.0021622611359319007,2.0709012451658273e-5,-3.174899334089471e-8,0.002162595566211041,2.0981352258249935e-5,-3.203986438715612e-8,0.0021628513653473066,2.1247405686018214e-5,-3.232489338007879e-8,0.0021630380775924086,2.1470340095996585e-5,-3.256419591015205e-8,0.0021631786722644116,2.1617083222566323e-5,-3.272164177108625e-8,0.00216330868415945,2.1664275769114177e-5,-3.277135694153426e-8,0.0021634731281762807,2.1605065487863532e-5,-3.2705257492733154e-8,0.0021637197852005,2.1455812436603205e-5,-3.254053477237097e-8,0.0021640877997709013,2.1259948537739125e-5,-3.232400898296171e-8,0.002164592603377122,2.108438739205041e-5,-3.212829934769005e-8,0.0021652124263154904,2.1004045458292953e-5,-3.2034996857797784e-8,0.002165885927123784,2.107545579977581e-5,-3.21059404679378e-8,0.002166528501769656,2.1310646054636276e-5,-3.235474767326647e-8,0.0021670632549307834,2.1668132745757332e-5,-3.273691349900394e-8,0.0021674499574846086,2.2069275229952522e-5,-3.3167461209084994e-8,0.002167695398646148,2.2430414143251984e-5,-3.355576152777364e-8,0.0021678424617177497,2.2691454458900874e-5,-3.383651203996052e-8,0.002167948850623929,2.2828166985303557e-5,-3.398307877885336e-8,0.0021680682294110717,2.2848871903014454e-5,-3.400396925492826e-8,0.002168239621410091,2.2783477264658934e-5,-3.393109259567893e-8,0.0021684843405062296,2.2671975588932204e-5,-3.380744770218485e-8,0.0021688073255370847,2.2555681481195456e-5,-3.367771500329707e-8,0.0021692001470083005,2.247154601714925e-5,-3.358207900819488e-8,0.0021696442585630864,2.2448607182279223e-5,-3.355228837104354e-8,0.0021701141864079454,2.250565226458912e-5,-3.360901884393857e-8,0.0021705808201399487,2.2649663627314837e-5,-3.376013066261044e-8,0.002171014994842116,2.2875029470842755e-5,-3.399981066861581e-8,0.0021713914000250586,2.3163823595123173e-5,-3.430889349840126e-8,0.002171692521788873,2.348758011808522e-5,-3.4656770876542255e-8,0.0021719120261017694,2.381072758144914e-5,-3.500503838425244e-8,0.002172056961163761,2.4095477309522668e-5,-3.531268029929626e-8,0.002172148267756013,2.430773141450824e-5,-3.5542386815216575e-8,0.0021722192183669113,2.4423369339532766e-5,-3.5667380799741086e-8,0.0021723115797911727,2.443412716691192e-5,-3.567793407850738e-8,0.002172469370856416,2.435222243916228e-5,-3.558662383347489e-8,0.002172730141133899,2.4212483806263987e-5,-3.5430893243344456e-8,0.0021731143123856107,2.406994280862633e-5,-3.527059410845282e-8,0.0021736147553494305,2.399049051461565e-5,-3.517783640369402e-8,0.0021741911382967354,2.4033616638707532e-5,-3.5218066388396594e-8,0.0021747750128882433,2.4230582571380168e-5,-3.542607458320517e-8,0.0021752887669595176,2.4567528571206925e-5,-3.5787372573666643e-8,0.002175673052155437,2.49852415759974e-5,-3.623781078312394e-8,0.002175908854725856,2.5399662837313294e-5,-3.668591393596756e-8,0.0021760215228088064,2.5733306593570758e-5,-3.704716213606398e-8,0.002176065901163682,2.5940343519971294e-5,-3.727134201842648e-8,0.0021761034783204496,2.6014370722419524e-5,-3.735101978943853e-8,0.0021761840080405325,2.598057227504093e-5,-3.731306905929495e-8,0.0021763370696546024,2.5881272618678495e-5,-3.7203079961238056e-8,0.002176571964578955,2.5762734966788867e-5,-3.7071131130532555e-8,0.002176881812643163,2.5666444320064544e-5,-3.6962369095902545e-8,0.002177248530362033,2.562462645803108e-5,-3.6912097310867254e-8,0.0021776471185262275,2.56583990067598e-5,-3.694366624460091e-8,0.0021780490847102727,2.577707907708006e-5,-3.706762059466764e-8,0.002178425470464016,2.5977906113517757e-5,-3.7281338682605485e-8,0.002178749995054507,2.6246122306122735e-5,-3.7569099018844795e-8,0.00217900258816672,2.6555835903572176e-5,-3.7903003824289374e-8,0.0021791731432856958,2.687235363923373e-5,-3.8245472427078433e-8,0.002179264774642755,2.715651610226576e-5,-3.8553882093067663e-8,0.0021792954993946666,2.737100012726711e-5,-3.878734993897014e-8,0.0021792972905228126,2.7487801409019163e-5,-3.891485525836279e-8,0.0021793118845096627,2.7495392292255558e-5,-3.8923106738733907e-8,0.0021793835257311045,2.740366279969572e-5,-3.8822101383632065e-8,0.0021795497062576503,2.7244969924330507e-5,-3.864650695887784e-8,0.0021798315902990814,2.70702521421955e-5,-3.845164962605757e-8,0.0021802262299320907,2.693987847972113e-5,-3.8303651911103566e-8,0.0021807030536763806,2.6909868400577606e-5,-3.826434729027413e-8,0.002181207209043901,2.7015773686396604e-5,-3.837346895969279e-8,0.002181671386070132,2.7258810728352984e-5,-3.8633200520179275e-8,0.0021820347882051537,2.7600628586197033e-5,-3.9002200115334744e-8,0.002182263235355336,2.7971926183414146e-5,-3.940491263576584e-8,0.0021823611556105044,2.829417321789066e-5,-3.9755366604696456e-8,0.0021823687183090976,2.8505597620353956e-5,-3.9985695960752894e-8,0.002182345504518596,2.8579166128070304e-5,-4.006587420492795e-8,0.00218234968005574,2.852535965389795e-5,-4.000679786407413e-8,0.0021824224556048176,2.838187447749541e-5,-3.984911376569704e-8,0.0021825822079256305,2.8198197432587352e-5,-3.964648840870845e-8,0.002182826606343748,2.802230424969246e-5,-3.9451180587015695e-8,0.0021831385394179867,2.7892584515013404e-5,-3.930524420287103e-8,0.002183492363313434,2.7834558372804433e-5,-3.9236882225582924e-8,0.00218385884397354,2.7860496490932013e-5,-3.9259933128383583e-8,0.0021842086588251997,2.7970168372585447e-5,-3.937460019364952e-8,0.0021845150758582356,2.815172900254157e-5,-3.956836422313752e-8,0.0021847565668936496,2.838260505830918e-5,-3.9816914283289737e-8,0.002184919839335821,2.8630898322059892e-5,-4.0085638458821643e-8,0.002185003215576358,2.885819450463714e-5,-4.033263381846127e-8,0.00218501956630861,2.9024619642616696e-5,-4.0514173513386934e-8,0.002184997331671042,2.9096343678574037e-5,-4.0592881414629923e-8,0.0021849779434766005,2.9054458176741742e-5,-4.054747138967016e-8,0.0021850086809995705,2.890265974050007e-5,-4.0381253019101765e-8,0.0021851317555203866,2.867039550492026e-5,-4.012573894978999e-8,0.002185372477190764,2.8408972654841787e-5,-3.983659301605007e-8,0.002185730455124099,2.8180528313815657e-5,-3.958174677758403e-8,0.0021861771693066417,2.804251014407566e-5,-3.942450075684918e-8,0.002186661265337064,2.803206489062113e-5,-3.940634962351665e-8,0.0021871205644257144,2.8154906091556042e-5,-3.953453886956924e-8,0.0021874978725242504,2.8382145494403323e-5,-3.977826745766282e-8,0.002187756423815575,2.865671184733779e-5,-4.0075466582978284e-8,0.0021878902551987,2.8908425992492547e-5,-4.0349239996036213E-08,0.0021879255831569328,2.907366219308399e-5,-4.052949755270081e-8,0.002187912085216684,2.9112986253584563e-5,-4.057244739063578e-8,0.0021879072199879612,2.9020292931549317e-5,-4.0470759660277784E-08,0.0021879598630596396,2.8820635503511565e-5,-4.025130399634947e-8,0.0021880992812219192,2.855917509608077e-5,-3.996313733776403e-8,0.002188332056726784,2.8287020621832985e-5,-3.9662060963515264e-8,0.0021886456060208528,2.804939262502735e-5,-3.9397673106991304e-8,0.0021890148819920466,2.7878715380127772e-5,-3.9205757381181164e-8,0.002189409156221178,2.7792378102702624e-5,-3.9105747978824426e-8,0.0021897972687176166,2.7793455583849522e-5,-3.9101439536603146e-8,0.0021901511374968234,2.7872602070577086e-5,-3.9183008468822456e-8,0.0021904481235000325,2.80099950384596e-5,-3.932910624744156e-8,0.002190673074057688,2.8177065500827853e-5,-3.950871255388833e-8,0.0021908206554662854,2.8338483116444323e-5,-3.9683248872783535e-8,0.002190898034144987,2.8455330491275332e-5,-3.980999342254779e-8,0.002190927155960091,2.8490498477234655e-5,-3.9847964078533655e-8,0.0021909449561215767,2.841676049523602e-5,-3.9766800450551744e-8,0.002190999293289918,2.8226395593368268e-5,-3.955740530076425e-8,0.0021911391604951622,2.7938931175521973e-5,-3.924055987672371e-8,0.0021914004248092763,2.7602074739011113e-5,-3.886808440988153e-8,0.00219179202133541,2.7282286475806473e-5,-3.851264350198292e-8,0.002192289357213238,2.704625873866707e-5,-3.82475557684289e-8,0.0021928392696263337,2.6940105864173445e-5,-3.812399760810237e-8,0.0021933752027235077,2.697500409955819e-5,-3.815512007691709e-8,0.002193836370061701,2.712470614302269e-5,-3.8313049345572726e-8,0.0021941837606845793,2.7334592335765326e-5,-3.8538514178115646e-8,0.0021944084668189573,2.753776194502866e-5,-3.875830475133487e-8,0.002194531286417225,2.7672583796492192e-5,-3.890450991618433e-8,0.002194595052600508,2.769704623340426e-5,-3.893040017878978e-8,0.0021946525033668582,2.759686253141467e-5,-3.881953924029014e-8,0.002194753120305771,2.7386090076476726e-5,-3.858667842959779e-8,0.0021949323250686314,2.7100914061041817e-5,-3.82710888669168e-8,0.0021952055424206626,2.678902702000713e-5,-3.792497063521771e-8,0.0021955679291575467,2.6498107213706706e-5,-3.760078207771899e-8,0.0021959986568907772,2.626660204683497e-5,-3.73410335002723e-8,0.0021964674766541165,2.6118501228737073e-5,-3.7172439057852775e-8,0.0021969413113013753,2.60620374695922e-5,-3.7104408935529385e-8,0.0021973894608135576,2.6091132908844254e-5,-3.7130604436828466e-8,0.00219778705276762,2.6188108161646412e-5,-3.7231911539965425e-8,0.0021981171577645352,2.6326541689641457e-5,-3.7379570709525906e-8,0.0021983722862443157,2.647389410124768e-5,-3.753800898406534e-8,0.0021985558494707763,2.6594192238440678e-5,-3.766770585522208e-8,0.0021986837479933113,2.6651537795907375e-5,-3.772898009889921e-8,0.0021987855132714115,2.6615420265459276e-5,-3.76878288712398e-8,0.0021989034252902504,2.646839864760911e-5,-3.752446513210713e-8,0.002199087291365176,2.621516384114665e-5,-3.7243437839789706e-8,0.002199383129417582,2.588937576288623e-5,-3.688130790905145e-8,0.0021998169911259277,2.555241378810931e-5,-3.650538638656394e-8,0.0022003802001003703,2.5279351320183844e-5,-3.619836871761591e-8,0.0022010254563611044,2.513422877506996e-5,-3.603114654032077e-8,0.002201679461595271,2.5145548720641303e-5,-3.603578324988553e-8,0.0022022676262901954,2.5295397762231912e-5,-3.619337702747384e-8,0.0022027384098715387,2.552770043771887e-5,-3.6442911016991864e-8,0.0022030761947726936,2.5769490088737933e-5,-3.6704451465803936e-8,0.0022032999837505608,2.5953710056367697e-5,-3.690413133727294e-8,0.002203452495899009,2.6035101872089713e-5,-3.699166081129466e-8,0.00220358608653898,2.5996726968420892e-5,-3.6947657521712005e-8,0.0022037500668679825,2.584868135819004e-5,-3.678246540474378e-8,0.0022039815599960576,2.562183741456571e-5,-3.6529498934363496e-8,0.0022043004146107474,2.5359154396673204e-5,-3.6235824598435174e-8,0.0022047079845341367,2.510642092784503e-5,-3.595198121736966e-8,0.002205189271399241,2.490392157422305e-5,-3.5722695471243174e-8,0.0022057175485827437,2.4780291065975067e-5,-3.557995202152093e-8,0.002206260229099632,2.4749273402388118E-05,-3.553929040719807e-8,0.0022067847011294868,2.4809362891213233e-5,-3.559935513770356e-8,0.002207263133432532,2.494571788740346e-5,-3.574402276444476e-8,0.0022076757646234684,2.5133391696059046e-5,-3.594599847110066e-8,0.0022080127950028375,2.534094893318031e-5,-3.61707958606488e-8,0.0022082753512539274,2.5533983406702185e-5,-3.6380543421501094e-8,0.0022084759594946783,2.5678586499651885e-5,-3.653770547250637e-8,0.0022086387115195184,2.5745202620986414e-5,-3.6609273231779453e-8,0.002208798772150077,2.5713550443386234e-5,-3.6572240060008746e-8,0.002208999993716592,2.557900040024047e-5,-3.6420802882875486e-8,0.0022092887458073814,2.5359488384672675e-5,-3.6174216899908184e-8,0.0022097025167608603,2.5099812062111692e-5,-3.588172643050776e-8,0.0022102543881308777,2.4867936743048755e-5,-3.56185625830845e-8,0.0022109195242995543,2.4738476511340537e-5,-3.5467648422950415e-8,0.002211634051687777,2.4765337819048855e-5,-3.5489237515539794e-8,0.002212313150289902,2.495636083716276e-5,-3.5692713187243686e-8,0.0022128823429647753,2.526671790565515e-5,-3.602912278257172e-8,0.0022133046472050132,2.5616981016093155e-5,-3.641102991172894e-8,0.0022135888531115686,2.5924578071327065e-5,-3.6747220225829005e-8,0.0022137783155401383,2.6130440340332528e-5,-3.69721280559337e-8,0.0022139309577410685,2.6210438172246873e-5,-3.705850643683236e-8,0.0022141014474845195,2.6172901848814536e-5,-3.7014821330468624e-8,0.0022143303324376486,2.604895373490618e-5,-3.687478915277662e-8,0.002214639802017609,2.5881451700368056e-5,-3.668537821684993e-8,0.0022150338963010646,2.5715502764954452e-5,-3.649643735626844e-8,0.0022155011447347337,2.5591302194405776e-5,-3.6352737563078843e-8,0.0022160184567097205,2.553907975187675e-5,-3.628822151576024e-8,0.0022165557263009628,2.5575938852458807e-5,-3.63223191891732e-8,0.0022170807551756427,2.5704576800506107e-5,-3.6458407892383054e-8,0.002217564030701961,2.591385422119361e-5,-3.668441906146322e-8,0.0022179828448299827,2.6181049859668053e-5,-3.697537858622144e-8,0.0022183242804138395,2.6475407977684876e-5,-3.729737331333177e-8,0.002218586851652362,2.6762362021212276e-5,-3.7612202106384365e-8,0.002218780907528584,2.7007899392426868e-5,-3.7882116402540654e-8,0.00221892800983572,2.718282261799535e-5,-3.807443917791746e-8,0.0022190594291572868,2.7266897794539164e-5,-3.816614008581418e-8,0.002219213643884262,2.7253074171586324e-5,-3.814862701576736e-8,0.0022194321448706397,2.7151812912431053e-5,-3.8032782192625904e-8,0.0022197524438374,2.699457943246866e-5,-3.785310248538782e-8,0.0022201977516507457,2.6834004944931882e-5,-3.7668058896544666e-8,0.0022207647596439554,2.6736960739406968e-5,-3.755241769514929e-8,0.002221414588087056,2.6767401671111417e-5,-3.757801963905858e-8,0.0022220754445295104,2.696116773143545e-5,-3.778551747050506e-8,0.002222662982074354,2.7304481080951647e-5,-3.81602371398771e-8,0.002223112492580615,2.7732335963690483e-5,-3.8630272100101265e-8,0.0022234048892087036,2.815262001038408e-5,-3.9093316095525206e-8,0.002223570353579146,2.8482812379548647e-5,-3.9457507211628694e-8,0.0022236698422765312,2.8677471002609632e-5,-3.9671972494411865e-8,0.002223768955546225,2.8734606819302868e-5,-3.973390147896533e-8,0.002223918561912486,2.8685068606721128e-5,-3.9676852435000445e-8,0.002224146947177898,2.857614254949019e-5,-3.955275079853739e-8,0.002224460584546953,2.8457539680318737e-5,-3.9416539001133896e-8,0.0022248488878112726,2.8372409677147155e-5,-3.931628151961653e-8,0.0022252897394614136,2.8352697862785916e-5,-3.9287926512737694e-8,0.002225754439448891,2.8417200189247082e-5,-3.9352956850409215e-8,0.0022262119752000306,2.8571064147124517e-5,-3.9517646409515605e-8,0.0022266329015272588,2.8806246946617162e-5,-3.977346217838114e-8,0.002226992971723243,2.9102919767945163e-5,-4.009861614536306e-8,0.002227276408541931,2.9431986686848863e-5,-4.046090776146395e-8,0.002227478443459657,2.975881765135786e-5,-4.082189498635584e-8,0.0022276066367046955,3.00479536480172e-5,-4.114208286135804e-8,0.0022276806541805206,3.0268246647568305e-5,-4.1386550741833944e-8,0.0022277304168021564,3.0397850263698415e-5,-4.153044218187168e-8,0.0022277927064168696,3.0428497299104088e-5,-4.1563769098494404e-8,0.0022279064138012593,3.036858246513481e-5,-4.149502940286735e-8,0.002228106506621653,3.0244655302837534e-5,-4.13531517818982e-8,0.0022284166785792644,3.0100550888706932e-5,-4.1186794221321944e-8,0.0022288411897262855,2.9992625796661267e-5,-4.10591614928939e-8,0.0022293578310589434,2.997937361758266e-5,-4.1036340003927136e-8,0.002229915827113162,3.0105006870106393e-5,-4.116870189588894e-8,0.0022304437011137785,3.0380336855881893e-5,-4.146920822621145e-8,0.0022308696821551816,3.0770008843180174e-5,-4.189889481023213e-8,0.0022311489278408515,3.119747911794132e-5,-4.237238494059883e-8,0.002231282975267909,3.157105128869589e-5,-4.278709882978031e-8,0.0022313182697664352,3.181892335039289e-5,-4.3062523712161575e-8,0.0022313244787628863,3.1913280890993805e-5,-4.316712531818715e-8,0.0022313668866389517,3.187208721013959e-5,-4.312031825412391e-8,0.0022314877691962513,3.174329917730292e-5,-4.297493790279011e-8,0.0022317016189136243,3.1584440533183345e-5,-4.2794660080913634e-8,0.0022320000376087473,3.1447193001066374e-5,-4.263700565313382e-8,0.0022323599775302527,3.1369544649942365e-5,-4.2544629399779314e-8,0.0022327512669868426,3.13736485445689e-5,-4.254281430583861e-8,0.0022331420789577098,3.146660704082846e-5,-4.264014632464142e-8,0.002233502662649728,3.164221547907365e-5,-4.283028278424188e-8,0.0022338081602597494,3.188287847991798e-5,-4.309400116155361e-8,0.0022340411058888376,3.216172283638613e-5,-4.340155202858812e-8,0.002234193788318541,3.244531827001491e-5,-4.371572186288535e-8,0.002234270215537642,3.269748772071455e-5,-4.399608728756532e-8,0.0022342870174345488,3.288434625146084e-5,-4.4204595810092806e-8,0.0022342725300309807,3.298010211189754e-5,-4.431198509478476e-8,0.00223426358719864,3.297265366270278e-5,-4.430402838113176e-8,0.002234300042169446,3.28677210223566e-5,-4.4186255163092324e-8,0.0022344176501358816,3.269023712664952e-5,-4.398572890389884e-8,0.0022346404530500393,3.248215526411121e-5,-4.374887676761402e-8,0.0022349739993351363,3.229642695778004e-5,-4.3534981383312984e-8,0.002235400846601725,3.218729338221004e-5,-4.3405375317758714e-8,0.0022358801294424515,3.2197598996961654e-5,-4.3409074494626946e-8,0.0022363531613351687,3.234518444318427e-5,-4.356719715545998e-8,0.0022367562584270713,3.26124404623423e-5,-4.386088239969612e-8,0.002237039364916164,3.2944799036726895e-5,-4.4229360674700297e-8,0.002237184585255663,3.3263008754100455e-5,-4.458371191536925e-8,0.0022372152097443723,3.348808466964168e-5,-4.4835003790813605e-8,0.002237188268790842,3.356890037152168e-5,-4.492538522979582e-8,0.002237172973766367,3.3498373396684425e-5,-4.4846285550617134e-8,0.002237226446062347,3.331063740330506e-5,-4.463527151098567e-8,0.0022373785866876966,3.306356285861056e-5,-4.435657408777556e-8,0.0022376301801785795,3.281796598936418e-5,-4.407798109343235e-8,0.002237960293002327,3.262266212632057e-5,-4.385422435645071e-8,0.0022383364907900727,3.250798890852662e-5,-4.371970523753345e-8,0.002238723456645966,3.2485676809755455e-5,-4.3688197681211816e-8,0.0022390886143439774,3.255173487689696e-5,-4.3755889161178954e-8,0.002239405282078471,3.2689939993701276e-5,-4.390514695537152e-8,0.002239654500276259,3.2874917872497975e-5,-4.410791058122196e-8,0.002239826466603891,3.3074841894149056e-5,-4.43287154816248e-8,0.0022399219825763365,3.325431872964785e-5,-4.452793608909369e-8,0.00223995372724577,3.337818442270938e-5,-4.466602508507044e-8,0.002239946609945796,3.341665474095889e-5,-4.4709250539583116e-8,0.0022399361149010558,3.335152643078121e-5,-4.463662869840457e-8,0.0022399637177205746,3.318214901741799e-5,-4.4446666383878356e-8,0.0022400692719222156,3.292908438196356e-5,-4.4161604326662625e-8,0.0022402815961347503,3.263324461259011e-5,-4.382667142532589e-8,0.0022406097829435986,3.234928937051243e-5,-4.35029200728048e-8,0.0022410381982317313,3.2133989991873885e-5,-4.325433505758617e-8,0.002241527366860039,3.2032192958380706e-5,-4.31320710589e-8,0.002242021338402319,3.206407169227447e-5,-4.315991919307524e-8,0.002242460373611949,3.22173758634287e-5,-4.3325235858678146e-8,0.0022427962572554097,3.244758975145919e-5,-4.3578759913273076e-8,0.002243006285647738,3.268735329396462e-5,-4.384500203668317e-8,0.002243101254106713,3.2863977904254935e-5,-4.4041959824776854e-8,0.002243123492551911,3.292048609982193e-5,-4.410494856355586e-8,0.0022431341784470964,3.283271918257909e-5,-4.400603585822717e-8,0.002243194132145136,3.261533508896748e-5,-4.376093452019552e-8,0.0022433459529788004,3.2314277942817154e-5,-4.342065606321087e-8,0.0022436045440565053,3.198999227156275e-5,-4.305276261895022e-8,0.002243958133515982,3.169947891807182e-5,-4.2721289735892826e-8,0.002244376640907042,3.148388477407264e-5,-4.2472798095789184e-8,0.0022448221512804886,3.136378685678507e-5,-4.233096289601714e-8,0.0022452575632132565,3.134045113321896e-5,-4.2297823602288997e-8,0.002245652005153063,3.139999666608745e-5,-4.2358322241039085e-8,0.002245983472810847,3.151802159817808e-5,-4.248543069195238e-8,0.0022462398578507008,3.166353197668659e-5,-4.2644554056704593e-8,0.002246419446397792,3.180211929402931e-5,-4.2797108244559135e-8,0.0022465314514837314,3.1898991863196846e-5,-4.290391686790522e-8,0.0022465964763423293,3.192267915682146e-5,-4.292934587877446e-8,0.0022466461542808808,3.185001140863545e-5,-4.2846882077462555e-8,0.0022467207138888905,3.1672240851810194e-5,-4.264604611928958e-8,0.0022468631990779767,3.140089843834509e-5,-4.2339079016408486e-8,0.0022471100388813652,3.1070610463486265e-5,-4.196427300171984e-8,0.002247479746499827,3.073566784992554e-5,-4.158230565870342e-8,0.0022479638331529823,3.045874199951375e-5,-4.1263714808448154e-8,0.002248524763253154,3.02937857422682e-5,-4.1069733388505545e-8,0.002249103611883865,3.0268960024283786e-5,-4.1032988729356464e-8,0.0022496357222364597,3.0376558929030593e-5,-4.114590430823665e-8,0.002250068824548509,3.0574158665270486e-5,-4.1361647414439126e-8,0.0022503772247836114,3.07964029825346e-5,-4.160710741763205e-8,0.002250567802057482,3.097301904580212e-5,-4.1803061544443096e-8,0.002250676749711126,3.1047324392743566e-5,-4.188509138902905e-8,0.0022507586723131802,3.099010340839463e-5,-4.1819420951854353e-8,0.002250871480347393,3.080538471041008e-5,-4.1609680129912226e-8,0.0022510615188335178,3.052699532297764e-5,-4.1293253390966694e-8,0.002251353179262093,3.0207520227351978e-5,-4.092900157619033e-8,0.0022517456031207373,2.990365199999711e-5,-4.058081653528731e-8,0.002252216441744965,2.966277801546249e-5,-4.0302454700107246e-8,0.0022527301904458124,2.9514465763670236e-5,-4.012779775956819e-8,0.0022532475943158755,2.9467955847632948e-5,-4.0067851081194045e-8,0.0022537333307623537,2.9514413442723212e-5,-4.0113146302274113E-08,0.0022541607881451917,2.9631644844628163e-5,-4.023900335211374e-8,0.002254514189838657,2.9789237110179563e-5,-4.041133614434692e-8,0.0022547890266936274,2.9952985275678716e-5,-4.059167064094272e-8,0.0022549917913854377,3.0088440765969818e-5,-4.074114160771088e-8,0.0022551396035145384,3.016407696389352e-5,-4.08240201186456e-8,0.0022552597216511264,3.015481429148342e-5,-4.081164539487939e-8,0.0022553882919875423,3.0046508802163843e-5,-4.0687495180085486e-8,0.002255567099077569,2.9841357504034444e-5,-4.045337540522603e-8,0.0022558369388607233,2.9562838755949134e-5,-4.0135156504026914e-8,0.0022562271875581842,2.9257130726269753e-5,-3.978455631529007e-8,0.0022567436326642507,2.898714903281843e-5,-3.947255364662877e-8,0.0022573598823487835,2.8817209579511943e-5,-3.927213390100102e-8,0.002258018966071855,2.8791605493017066e-5,-3.923404737454537e-8,0.002258648117312685,2.891633036493332e-5,-3.936599702943412e-8,0.0022591820275492096,2.9154153382066135e-5,-3.962682189325287e-8,0.0022595839247476135,2.9436595028559185e-5,-3.993977198480979e-8,0.00225985505008105,2.9686790215993037e-5,-4.021816649643196e-8,0.002260030241699472,2.9842461088519565e-5,-4.039130403089442e-8,0.002260164133587199,2.9870701143892955e-5,-4.042125712911031e-8,0.0022603147060398874,2.9772008334002676e-5,-4.0307640364203134e-8,0.002260529356679789,2.957539212424842e-5,-4.008236218492744e-8,0.0022608360709949985,2.9328088618681445e-5,-3.9798262676794195e-8,0.002261240279369694,2.9083351681059975e-5,-3.951545849385412e-8,0.0022617268003365322,2.888909043567816e-5,-3.9288472509905356e-8,0.0022622655482008036,2.8779388123142624e-5,-3.915647214350556e-8,0.002262819189102602,2.8770098261314698e-5,-3.913805732001187e-8,0.002263350798057785,2.88586129564398e-5,-3.92308125522209e-8,0.0022638299762149723,2.9026875547142857e-5,-3.9414639258724473e-8,0.00226423666135669,2.9246199189130553e-5,-3.9657234352431613e-8,0.0022645626786873415,2.9482478245198007e-5,-3.992005306099529e-8,0.0022648116674165116,2.9700822468235492e-5,-4.016358408751382e-8,0.0022649981596772123,2.9869345096513426e-5,-4.0351602493104255e-8,0.00226514630501003,2.9962411033835785e-5,-4.04547762743576e-8,0.002265288298830657,2.9963862391270176e-5,-4.045428268554886e-8,0.0022654620702153745,2.9870664852001304e-5,-4.034600056798178e-8,0.002265707212446325,2.969691295175194e-5,-4.0145217890832345e-8,0.002266057956294179,2.947691133511338e-5,-3.9890345763315734e-8,0.0022665329039003286,2.926444328548644e-5,-3.964227072360827e-8,0.0022671236887107245,2.9124484378898093e-5,-3.9475022511818455E-08,0.002267788240646869,2.9115420126813518e-5,-3.945552451759843e-8,0.0022684561262601086,2.9265821438624493e-5,-3.9617054061131354e-8,0.0022690490903026677,2.955733641213853e-5,-3.993960157280089e-8,0.002269509515122626,2.992626254599793e-5,-4.035147042985752e-8,0.00226982162214845,3.0286068029203308e-5,-4.0754733553186254e-8,0.0022700138757717004,3.055897303667495e-5,-4.1061025649979134e-8,0.0022701436737226793,3.069989577380529e-5,-4.1218699906638504e-8,0.00227027517647685,3.070387520696665e-5,-4.122131101616223e-8,0.002270461042897145,3.059919619723711e-5,-4.1100011651257346e-8,0.002270732689133939,3.0433729733369717e-5,-4.090835113136894e-8,0.002271098337780852,3.026097227227714e-5,-4.070670005595391e-8,0.002271546105525531,3.012906258930677e-5,-4.0549886052690306e-8,0.002272049606456396,3.007354356655947e-5,-4.0478868217575704e-8,0.0022725744638758933,3.011354728086309e-5,-4.051615436512521e-8,0.0022730847790649704,3.0250954443169037e-5,-4.066458322488583e-8,0.002273548838725809,3.047206367789406e-5,-4.0909059104787467e-8,0.0022739434936463994,3.075113090835044e-5,-4.1220551846418976e-8,0.0022742568636345524,3.105504186902545e-5,-4.156147942044127e-8,0.0022744892839467825,3.134835492335001e-5,-4.189151521878511e-8,0.0022746527416301044,3.159798737144839e-5,-4.217292294439811e-8,0.0022747692873981264,3.177714018497166e-5,-4.237495585906838e-8,0.0022748688113758886,3.186850606857967e-5,-4.247743480535395e-8,0.002274986290774487,3.186699225575003e-5,-4.2473855910760004e-8,0.0022751583117732004,3.178213127539921e-5,-4.237427673206388e-8,0.0022754182619907173,3.1640017291713195e-5,-4.2207768491395545e-8,0.0022757894556965316,3.1483670873694755e-5,-4.202308555544977e-8,0.0022762763149492913,3.1369490725813464e-5,-4.188476186116999e-8,0.002276855832823401,3.135697026894548e-5,-4.186133900931318e-8,0.0022774744421386866,3.1490633861351893e-5,-4.200454099581501e-8,0.0022780569340058936,3.177865036092299e-5,-4.232457983909165e-8,0.0022785298502353986,3.217986098398422e-5,-4.277512950721424e-8,0.002278850878859694,3.261186828087253e-5,-4.326249088421801e-8,0.002279027127460274,3.29810254809563e-5,-4.3679853601427606e-8,0.0022791101135152944,3.3218485070021266e-5,-4.3948435338700015e-8,0.0022791716138773816,3.33017751806445e-5,-4.404203618293163e-8,0.0022792763622203156,3.325354630218967e-5,-4.3985619723857855e-8,0.0022794650184009696,3.312474867222378e-5,-4.3836336864797965e-8,0.0022797502493714416,3.297479872131966e-5,-4.3661248003750406e-8,0.00228012142820996,3.285672340462785e-5,-4.35206528604119e-8,0.0022805525144040995,3.2809069538178984e-5,-4.3458910771532503e-8,0.002281009749824412,3.28530678199272e-5,-4.350102367560977e-8,0.002281457946481573,3.299290573495884e-5,-4.3652647942342574e-8,0.0022818653863613037,3.3217663060474e-5,-4.390203862093646e-8,0.0022822076095379298,3.350430854908523e-5,-4.4223341324998374e-8,0.0022824701581385626,3.38215008984268e-5,-4.458094556850484e-8,0.0022826501909389498,3.413398695711384e-5,-4.493459121134231e-8,0.0022827568168762593,3.44073498830337e-5,-4.524485208989148e-8,0.0022828100447377627,3.4612658901913384e-5,-4.547843105508966e-8,0.0022828384740465075,3.4730475087631895e-5,-4.561266796396316e-8,0.002282876011570533,3.475388096679199e-5,-4.5638964500433376e-8,0.002282957848421652,3.469040464851831e-5,-4.5565062411767125e-8,0.0022831158204580496,3.456271833872463e-5,-4.541606069616092e-8,0.0022833731202049406,3.440786048574832e-5,-4.5233819572801423e-8,0.0022837383081319583,3.427425554837967e-5,-4.507378989735375e-8,0.0022841992424606486,3.42151255976047e-5,-4.4997528462908375e-8,0.0022847190630679586,3.427694413898361e-5,-4.505929978605274e-8,0.0022852381039333777,3.448341082476899e-5,-4.528736898920922e-8,0.002285686017006873,3.4819631970934466e-5,-4.566551541864208e-8,0.0022860045965692596,3.522625967483624e-5,-4.6126130449042295e-8,0.0022861729555042707,3.5613274931110104e-5,-4.65660689031637e-8,0.002286219685653516,3.5892392446296056e-5,-4.688394305335418e-8,0.002286211691889868,3.601177133491025e-5,-4.7019944247694604e-8,0.002286225505956513,3.5972626779050686e-5,-4.697479161031815e-8,0.0022863188543598124,3.58205873724714e-5,-4.6799832485411654e-8,0.00228651668635773,3.562198060753e-5,-4.6570120297171264e-8,0.002286812966928041,3.5440632292562546e-5,-4.635820450409294e-8,0.002287180868527256,3.532389707738892e-5,-4.6218365864022434e-8,0.002287583967878681,3.5298098790532246e-5,-4.618136168410986e-8,0.0022879848284268977,3.536980504236021e-5,-4.6255633734096165e-8,0.0022883504197809537,3.552946613083765e-5,-4.643115703668337e-8,0.002288655274879669,3.575541538610793e-5,-4.668378554344655e-8,0.0022888834463104927,3.60176745468646e-5,-4.697952823998258e-8,0.002289029789277668,3.6281738912671874e-5,-4.727893103740416e-8,0.002289100595889158,3.65126058036671e-5,-4.754178038619249e-8,0.0022891133320047745,3.667916372430841e-5,-4.773217946936401e-8,0.0022890950961498148,3.675871799412574e-5,-4.782371311654076e-8,0.0022890795607725576,3.674100774676719e-5,-4.7804003549630296e-8,0.002289102527511509,3.663093644990813e-5,-4.767785241181172e-8,0.002289196541348638,3.644938070154096e-5,-4.746830614559982e-8,0.0022893851939173337,3.6231636872978196e-5,-4.7215134114218746e-8,0.002289677840039512,3.602331407239086e-5,-4.6970406519053876e-8,0.0022900654708520327,3.58736629553553e-5,-4.679101983320465e-8,0.002290518708418688,3.582634915501503e-5,-4.6728061346799346e-8,0.0022909894789891827,3.590809695929047e-5,-4.681348212371508e-8,0.002291418352774001,3.611712058525191e-5,-4.704638370723802e-8,0.002291748752111823,3.641569025232455e-5,-4.7384109668672996e-8,0.0022919460643483626,3.6733133288591057e-5,-4.774556420547209e-8,0.0022920143328060607,3.6983858880081674e-5,-4.803206329891999e-8,0.002291999814615806,3.7096977477987554e-5,-4.8161604641847836e-8,0.002291975474626928,3.704374634491269e-5,-4.8100515063701843e-8,0.0022920128248449328,3.6846970662485426e-5,-4.787422973248501e-8,0.0022921567275596033,3.656759825553701e-5,-4.7551933742153225e-8,0.0022924155206640656,3.627866505605262e-5,-4.721685937218435e-8,0.0022927669894349093,3.6041857596996885e-5,-4.6939648387720506e-8,0.002293172035520522,3.589533984270876e-5,-4.676448884083824e-8,0.002293587774220062,3.585234950794764e-5,-4.670737294106673e-8,0.00229397625599273,3.5905780732209896e-5,-4.676107434656356e-8,0.0022943087935883965,3.603438248915831e-5,-4.690198432790658e-8,0.0022945674627496593,3.6208248273547327e-5,-4.709625363021303e-8,0.0022947453752612396,3.639309951270794e-5,-4.730469355160464e-8,0.002294846618012875,3.655385217382977e-5,-4.748694572871607e-8,0.0022948859966711527,3.6658142221179055e-5,-4.760561192507473e-8,0.0022948882229804706,3.66802485027254e-5,-4.7630789899419904e-8,0.002294885915277481,3.660536515102313e-5,-4.754496057001509e-8,0.0022949158390162044,3.64335141641052e-5,-4.7347464493291285e-8,0.002295013303258485,3.6181877526743895e-5,-4.705723761896796e-8,0.0022952053707549756,3.5884255428738196e-5,-4.6712359540665154e-8,0.0022955042500871392,3.558678939109289e-5,-4.6365392836542746e-8,0.002295902637857623,3.534001900618766e-5,-4.607449202272132e-8,0.002296372603345501,3.518847407688666e-5,-4.5891531629784525e-8,0.002296868936882388,3.515979486113663e-5,-4.584945571699113e-8,0.002297337100875107,3.525571375908133e-5,-4.595154991513938e-8,0.0022977251112613487,3.54474663309797e-5,-4.6165727461002804e-8,0.002297997511006086,3.567828648084553e-5,-4.642708208073091e-8,0.0022981479038201797,3.587486868504097e-5,-4.665101902295781e-8,0.0022982048890346418,3.59670990491837e-5,-4.6756152857442506e-8,0.0022982264993906746,3.591076706084595e-5,-4.66907281238414e-8,0.00229828244392896,3.570370688981107e-5,-4.645139989864305e-8,0.0022984305793150974,3.538654013029307e-5,-4.6084187811529834e-8,0.002298698613153666,3.502687277549902e-5,-4.5666380520174655e-8,0.0022990791902976694,3.4695334694455384e-5,-4.5279093849930466e-8,0.0022995381727997865,3.4445276278051516e-5,-4.49839970221804e-8,0.002300029218953335,3.430321854904224e-5,-4.4812265883725474e-8,0.0023005071520190556,3.426970567379333e-5,-4.4765358220823394e-8,0.0023009363058259054,3.432593949783263e-5,-4.4822399265362546e-8,0.0023012938617268945,3.444159290053393e-5,-4.494899788620879e-8,0.002301570006953491,3.458126436569647e-5,-4.51046246777301e-8,0.002301766800108603,3.470904311234521e-5,-4.524791553057968e-8,0.002301896888738061,3.479179416047871e-5,-4.534053254240823e-8,0.002301982375857608,3.480208071788327e-5,-4.535057802732492e-8,0.0023020534602801847,3.472142304601621e-5,-4.525634915545079e-8,0.0023021460538406057,3.454404162586172e-5,-4.505063369302154e-8,0.002302297520970304,3.4280415377693827e-5,-4.474483116108385e-8,0.00230254017354546,3.395911142067943e-5,-4.4371164167657605e-8,0.0023028932564570586,3.3624877587848964e-5,-4.398066536436923e-8,0.0023033555964254958,3.333152309155398e-5,-4.3635188638132984e-8,0.0023039020503271127,3.312995217770553e-5,-4.339376844190064e-8,0.002304486385520222,3.305425894193706e-5,-4.329658172175806e-8,0.002305051035348368,3.3110519998397165e-5,-4.335181227808648e-8,0.0023055413708626526,3.3272560571329226e-5,-4.353040435431237e-8,0.0023059202737308734,3.348666573581906e-5,-4.3771124818958763e-8,0.0023061786570983014,3.368428524135492e-5,-4.3994995923487775e-8,0.0023063388048928817,3.379947725797813e-5,-4.412542796611055e-8,0.0023064492323863275,3.378653186463361e-5,-4.410875759920423e-8,0.0023065718780325255,3.363277880294064e-5,-4.392931753536871e-8,0.0023067648430645355,3.336223440573916e-5,-4.361391666217241e-8,0.0023070660644278905,3.302816568314063e-5,-4.322345795297547e-8,0.002307483727852774,3.269679339994018e-5,-4.2834243518091083e-8,0.0023079967124393116,3.242829025455311e-5,-4.2516054578377455e-8,0.002308563857239961,3.2262195589673835e-5,-4.2315205384790976e-8,0.0023091372052619127,3.221149782256434e-5,-4.224750159055635e-8,0.002309673844341424,3.2265073740245427e-5,-4.2300823774791806e-8,0.0023101432068525158,3.239501720334835e-5,-4.244342832539441e-8,0.0023105295861446016,3.256496006872504e-5,-4.2633513685632894e-8,0.0023108314009869526,3.2736917316135974e-5,-4.282717939490637e-8,0.002311059046577513,3.287596311964373e-5,-4.298390962236588e-8,0.0023112325956021447,3.2953249680788354e-5,-4.30701110947523e-8,0.00231137979665109,3.294831861010061e-5,-4.306178209267358e-8,0.0023115340997543143,3.285151044406728e-5,-4.2947275355292e-8,0.0023117319317365243,3.2666777386046935e-5,-4.2730561942988145e-8,0.0023120082445560355,3.241439708027806e-5,-4.243445694518821e-8,0.0023123897136956896,3.213200948149292e-5,-4.210197938273945e-8,0.002312886188388601,3.1871514418046985e-5,-4.179294978549619e-8,0.0023134830361791667,3.168968477884489e-5,-4.157326718028376e-8,0.0023141388246951094,3.163282940214068e-5,-4.149718047268907e-8,0.002314792329840861,3.172005820484998e-5,-4.158778555622238e-8,0.002315378896673669,3.193290371843414e-5,-4.182474929661659e-8,0.0023158505127047306,3.2217740072628357e-5,-4.214680612835947e-8,0.0023161909435828218,3.2501262856054346e-5,-4.2469442360932653e-8,0.002316419671183998,3.271254277366566e-5,-4.27103290681903e-8,0.0023165841921237427,3.2802780436011716e-5,-4.2812247472897776e-8,0.0023167450214273137,3.2756541656388914e-5,-4.275628838705075e-8,0.0023169591271539453,3.259272819167442e-5,-4.256326379538918e-8,0.0023172663812004936,3.2356898186037265e-5,-4.228512778642178e-8,0.0023176817453812227,3.2108186977599e-5,-4.199006993769168e-8,0.002318194185054491,3.1904582986137214e-5,-4.174553762547756e-8,0.00231877176791076,3.1790160014621046e-5,-4.1603324561922454e-8,0.002319371007020906,3.1787119353049104e-5,-4.159008391244041e-8,0.0023199475183516252,3.189400454355314e-5,-4.17049622110272e-8,0.0023204650305293554,3.20894591354611e-5,-4.1923747329153166e-8,0.002320900868517307,3.2339315150879754e-5,-4.220702939293869e-8,0.0023212476092142357,3.260440417190498e-5,-4.2509329097549e-8,0.0023215118356965506,3.284715719192341e-5,-4.278686762213579e-8,0.0023217113982006393,3.3036182323788574e-5,-4.300295310375987e-8,0.002321872364162279,3.314903836216729e-5,-4.313120169100703e-8,0.0023220262092654128,3.3173971066507745e-5,-4.315751282036905e-8,0.002322207158400309,3.311135649858902e-5,-4.3081732272613976e-8,0.0023224491028571363,3.297521373884765e-5,-4.291948491394481e-8,0.002322781228382118,3.279447518776715e-5,-4.270382165655561e-8,0.0023232216822924234,3.261266466520483e-5,-4.248505510679363e-8,0.002323769722566849,3.2483621858754785e-5,-4.2325943183644296e-8,0.002324398904211897,3.2460944922610885e-5,-4.228942774440365e-8,0.002325056179267136,3.258120401470381e-5,-4.241896142727533e-8,0.002325671964702718,3.2846122159074696e-5,-4.271751943685757e-8,0.00232618144268266,3.321386581244003e-5,-4.3137207029593565e-8,0.0023265488268709705,3.36082031220369e-5,-4.3589753742231386e-8,0.0023267814240886583,3.394420957442691e-5,-4.397636855767629e-8,0.0023269254239565483,3.415782391829717e-5,-4.422212158225807e-8,0.002327046906947544,3.422452814123435e-5,-4.429770088385412e-8,0.002327209206277997,3.4160981089080925e-5,-4.422143906155781e-8,0.002327456336525311,3.401357864203633e-5,-4.4046282714445835E-08,0.002327805923589105,3.384194337626255e-5,-4.384093488623098e-8,0.002328250166554385,3.37036441574621e-5,-4.3672328614357636e-8,0.002328761740259225,3.364315089403521e-5,-4.3592791245387643e-8,0.002329301915681379,3.36856352720997e-5,-4.3632602011700155e-8,0.002329829055291661,3.383516729126079e-5,-4.379753708045467e-8,0.0023303062390849644,3.407663050535043e-5,-4.407078165874924e-8,0.0023307070359199853,3.438049828740393e-5,-4.441833484198168e-8,0.0023310187619350036,3.470925636680583e-5,-4.4796515547741785e-8,0.0023312431048083324,3.502410718649536e-5,-4.515990686671555e-8,0.002331394528886721,3.5290797443504604e-5,-4.5468276438613356e-8,0.002331497260081565,3.5483844383961805e-5,-4.569154976787356e-8,0.002331581733856791,3.558904226640621e-5,-4.581270005257149e-8,0.0023316810811048884,3.560465423137779e-5,-4.582909582100883e-8,0.002331827771099224,3.5541816076164474e-5,-4.575300867708182e-8,0.0023320501595354027,3.542447396167401e-5,-4.561169901534009e-8,0.0023323683909373285,3.528871876135906e-5,-4.5446880835164095e-8,0.0023327891822946096,3.51805346933835e-5,-4.531231018055253e-8,0.002333299958278486,3.515015003696038e-5,-4.52672578511267e-8,0.0023338645432176663,3.5241270465413334e-5,-4.5363790266725256e-8,0.002334424562220092,3.5475412457926315e-5,-4.562814505895616e-8,0.0023349112408662287,3.583613212030472e-5,-4.6041947983230845e-8,0.002335268146958933,3.626338247097496e-5,-4.6535418255023436e-8,0.0023354760591965088,3.666773954728629e-5,-4.700402689339779e-8,0.0023355644528050535,3.696270836812873e-5,-4.7346394509497067e-8,0.002335600051392683,3.7098371862978543e-5,-4.75036656435806e-8,0.002335658860810056,3.707695140177438e-5,-4.747763880896117e-8,0.0023357987401432536,3.694435600604198e-5,-4.732093922172631e-8,0.002336045463982361,3.6767616798790464e-5,-4.711093689128459e-8,0.002336393449628172,3.661235323283033e-5,-4.6923808409687194e-8,0.00233681482692482,3.6528212315890726e-5,-4.68177625437056e-8,0.002337270388702322,3.6542959451067806e-5,-4.682607312286444e-8,0.0023377189367930666,3.66625719363429e-5,-4.6956871248297825e-8,0.002338124071548144,3.687450363014641e-5,-4.7196561629315964e-8,0.002338458716826444,3.71523445299233e-5,-4.75149713046986e-8,0.0023387078440758034,3.7461115310449495e-5,-4.787144263559505e-8,0.002338869585723431,3.7762817841687184e-5,-4.822140859107426e-8,0.0023389547817296704,3.802184043837775e-5,-4.852287616148231e-8,0.0023389850485431105,3.820974950563554e-5,-4.87421532200505e-8,0.002338989627065774,3.830895059743735e-5,-4.885815585004515e-8,0.0023390014899789605,3.8314840733578865e-5,-4.8864887051675046e-8,0.002339053227796983,3.823643256374001e-5,-4.8772155817743224e-8,0.0023391730470084114,3.809565596331883e-5,-4.860485990028719e-8,0.002339381007965399,3.7925524692509784e-5,-4.840106376674009e-8,0.0023396854228536312,3.776719520424567e-5,-4.82088209371393e-8,0.0023400793116841023,3.76654727255943e-5,-4.808107898018889e-8,0.002340537481346002,3.766178500501879e-5,-4.8067398459253976e-8,0.0023410160318337752,3.778395059438169e-5,-4.820166978989883e-8,0.0023414571514578423,3.8033753723512084e-5,-4.8487112668261064e-8,0.002341802014567862,3.837655741982126e-5,-4.888372230559299e-8,0.0023420114228051465,3.874102641968516e-5,-4.930783648964436e-8,0.0023420863661792065,3.9036695298684036e-5,-4.965293287954776e-8,0.0023420745217566197,3.918717458210972e-5,-4.982885057806455e-8,0.0023420538209714603,3.91622722916344e-5,-4.9799546790811774e-8,0.0023421004046062298,3.8988852688015025e-5,-4.959573407663678e-8,0.0023422602630217295,3.8734768578304047e-5,-4.9296049457022376e-8,0.0023425391360975905,3.847893082192605e-5,-4.899224673303789e-8,0.0023429102765989336,3.828568044273994e-5,-4.8759531463412606e-8,0.0023433299940436355,3.819251167163617e-5,-4.8642341136861975e-8,0.0023437518655280796,3.8209551159922836e-5,-4.865357708177263e-8,0.0023441359775748295,3.8325147109487965e-5,-4.87807783260245e-8,0.002344453495623456,3.8512988018584136e-5,-4.8994075741131246e-8,0.002344688236531956,3.873852777500904e-5,-4.9253489797137967e-8,0.0023448367420634006,3.896429832747165e-5,-4.951513690495988e-8,0.002344907563344286,3.915445172418351e-5,-4.973668851539436e-8,0.002344919846223446,3.927885131661452e-5,-4.9882338277690744e-8,0.0023449010717055798,3.9316757036171124e-5,-4.992722780668246e-8,0.0023448838074805536,3.925979958184939e-5,-4.986094461349622e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json new file mode 100644 index 000000000..f46c700e5 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_18.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":18000,"numberOfSamples":1000,"samples":[0.002344901558802442,3.911368303105064e-5,-4.968948981883951e-8,0.002344984132234963,3.8898163040661456e-5,-4.9435280092255396e-8,0.002345153076453194,3.8645137911801235e-5,-4.913505665071581e-8,0.0023454177649364274,3.8394882701718704e-5,-4.883571430956027e-8,0.0023457726182683734,3.8190636084535106e-5,-4.858818570335279e-8,0.0023461958479369647,3.8071833815956895e-5,-4.8439580759263195E-08,0.0023466502566154754,3.806617270836784e-5,-4.8423700396250246e-8,0.0023470871667342188,3.818099295284342e-5,-4.855052067391149e-8,0.0023474547964515697,3.8395736841710905e-5,-4.8796864492445077e-8,0.002347711548848421,3.865908630266998e-5,-4.9102715263344044e-8,0.0023478420825502667,3.889571950044163e-5,-4.937914952780937e-8,0.00234786961391877,3.902607152063935e-5,-4.9531851099022974e-8,0.0023478548636246925,3.899526350333567e-5,-4.949545923878963e-8,0.002347876570857601,3.8797420616696476e-5,-4.926230021920203e-8,0.0023480009856264934,3.8479554435582394e-5,-4.888691218568922e-8,0.002348257394842648,3.81212678497871e-5,-4.8462214576854004e-8,0.0023486326479069406,3.7803093228172886e-5,-4.8082513592352674e-8,0.0023490835964367573,3.75814623825538e-5,-4.781433129307214e-8,0.002349556312825578,3.747939916176964e-5,-4.768549705089819e-8,0.002350001794120482,3.7490379203984336e-5,-4.768944037993623e-8,0.002350384381521822,3.758800212452211e-5,-4.779618621991062e-8,0.0023506841057128985,3.773572437125139e-5,-4.796348785816809e-8,0.0023508956980960788,3.7894232799687954e-5,-4.814536983155262e-8,0.00235102648099269,3.802641740658273e-5,-4.829803528414698e-8,0.002351094173287532,3.810084978765315e-5,-4.838411531070628e-8,0.0023511246964647747,3.8094608924835005e-5,-4.837614007717066e-8,0.0023511496348331447,3.799585924542727e-5,-4.825963731338258e-8,0.0023512029179003826,3.780605403700456e-5,-4.803571540037979e-8,0.002351316493203054,3.754110540847055e-5,-4.772242618165293e-8,0.002351515254331023,3.723065606146325e-5,-4.7353971759481864e-8,0.0023518120205759476,3.6914840723378074e-5,-4.697706960436158e-8,0.0023522036900594134,3.663842066327486e-5,-4.664428486396447e-8,0.0023526697415857454,3.6442835626573675e-5,-4.6404850464569947E-08,0.0023531739492806607,3.635743472275251e-5,-4.629433098034591e-8,0.0023536695969230293,3.639153741844735e-5,-4.632502065598751e-8,0.002354107963028887,3.65290387843179e-5,-4.64791633358682e-8,0.0023544493334192655,3.672744771866113e-5,-4.670739713326941e-8,0.0023546748244885193,3.692340046714689e-5,-4.693502893752279e-8,0.0023547957604870243,3.704596407123413e-5,-4.707779081016492e-8,0.002354855915443392,3.703656572046711e-5,-4.70656375977696e-8,0.0023549223160394474,3.68699978500431e-5,-4.6867843166706427e-8,0.002355064610704272,3.656683381659626e-5,-4.65078344897485e-8,0.002355330456332751,3.6188645949168455e-5,-4.605762360942627e-8,0.0023557290800031,3.581614088997792e-5,-4.561209830788785e-8,0.0023562313149006323,3.552104851024793e-5,-4.525598622392911e-8,0.002356784170343763,3.534573263514571e-5,-4.503985226093692e-8,0.00235733028458666,3.529761527789713e-5,-4.49733843052568e-8,0.002357823000083982,3.535587514723036e-5,-4.503300722505471e-8,0.0023582334607192713,3.548324139112816e-5,-4.517550230472812e-8,0.0023585511399880337,3.5636946080439145e-5,-4.535076312918837e-8,0.002358780962041987,3.577633956909642e-5,-4.551078335076926e-8,0.0023589395842511522,3.5867314155800855e-5,-4.561499749370089e-8,0.002359052080351249,3.588475773629073e-5,-4.563332272362631e-8,0.002359149147828655,3.58142084645814e-5,-4.554820350082022e-8,0.0023592643626533377,3.565335730415486e-5,-4.5356402142557453E-08,0.002359430841246486,3.541339537933329e-5,-4.507057121932486e-8,0.0023596768567981123,3.511952535451973e-5,-4.471987460114685e-8,0.0023600205188522927,3.480948168500788e-5,-4.4348345490610194e-8,0.0023604644698905536,3.452896471445555e-5,-4.400967986329848e-8,0.002360992350010294,3.432364769813786e-5,-4.375798612579386e-8,0.002361569042366369,3.422878850205881e-5,-4.363559641492016e-8,0.0023621460051594665,3.4259012492440044e-5,-4.3660883375380844e-8,0.0023626713616961515,3.440164922381125e-5,-4.3820080092443e-8,0.002363102567048767,3.4616447316981465e-5,-4.4066547053651594e-8,0.002363418276529288,3.484277697645849e-5,-4.432896661511161e-8,0.002363625904080295,3.501331834422755e-5,-4.452741922922826e-8,0.002363762140673494,3.50713100177352e-5,-4.459391491625094e-8,0.0023638851680286292,3.498694287747205e-5,-4.449207573009896e-8,0.0023640594734086117,3.4767688893707976e-5,-4.422967279774819e-8,0.002364337052724743,3.44579776897352e-5,-4.385849503168624e-8,0.0023647414089119547,3.412668761857231e-5,-4.345970698104098e-8,0.002365260922020612,3.3846152104623893e-5,-4.3119075143364176e-8,0.0023658544426327192,3.367093165302294e-5,-4.290180278936738e-8,0.0023664660490979486,3.362478090509265e-5,-4.2836928949552116e-8,0.002367041894211088,3.3699477499923e-5,-4.29156715149733e-8,0.0023675425813141815,3.3863070665591675e-5,-4.3100929149056666e-8,0.002367948361133545,3.407186155979982e-5,-4.334131276515742e-8,0.0023682583104001854,3.4281125480317074e-5,-4.358383945165417e-8,0.002368486347050624,3.4452289918945094e-5,-4.378254145392837e-8,0.002368656569458454,3.455667745010834e-5,-4.3903037676489125e-8,0.002368799213631667,3.457704329979657e-5,-4.39244496666408e-8,0.0023689474323752143,3.450818698611703e-5,-4.384015205758009e-8,0.0023691344170632556,3.4357416482385305e-5,-4.3658308045106786e-8,0.002369390127550806,3.4144946605107745e-5,-4.340234799568976e-8,0.002369737050180081,3.390358038895181e-5,-4.311066755298774e-8,0.0023701849761484078,3.367640314542406e-5,-4.283404275674573e-8,0.002370725808074802,3.351105695568608e-5,-4.262900855450118e-8,0.0023713306372070224,3.344998149691437e-5,-4.254638292238252e-8,0.0023719519724518553,3.351806525291478e-5,-4.261657041710548e-8,0.0023725329401571575,3.371175366291013e-5,-4.283642668257849e-8,0.0023730222295828053,3.3995002702351264e-5,-4.316414308379054e-8,0.002373389973065274,3.430578520129685e-5,-4.3526671192005085e-8,0.0023736381505010734,3.4572328983584834e-5,-4.38388242013889e-8,0.0023738010098588143,3.473355012811767e-5,-4.402752760022938e-8,0.00237393531167498,3.4756315512409036e-5,-4.40524591922618e-8,0.0023741041518875864,3.4643979531241987e-5,-4.391644020525929e-8,0.0023743597715574142,3.443428581685144e-5,-4.366325823519776e-8,0.002374730275263065,3.418808569592938e-5,-4.336456918047751e-8,0.0023752135991477064,3.397259983293269e-5,-4.3100208376556956e-8,0.002375779941817866,3.384415723124978e-5,-4.293768908589405e-8,0.0023763813960745914,3.383531261076801e-5,-4.2916694132470866e-8,0.0023769653178674142,3.394966546843266e-5,-4.304258701004152e-8,0.0023774870203995034,3.416488144273135e-5,-4.3289677344681276e-8,0.002377918235263097,3.444154087954113e-5,-4.3611544323386645e-8,0.0023782499725694506,3.473394751413563e-5,-4.3953871457543554e-8,0.002378490676997382,3.499948400810439e-5,-4.4265690042450136e-8,0.002378661785361829,3.520478219905836e-5,-4.45068771402646e-8,0.0023787927125148967,3.5328684667322306e-5,-4.465179236135274e-8,0.0023789164661922424,3.5362982250262976e-5,-4.4690190041228925e-8,0.002379066168330197,3.531210837114164e-5,-4.462683919511151e-8,0.0023792721073279486,3.519257964256899e-5,-4.448085699607398e-8,0.0023795586569317585,3.50323249823028e-5,-4.4284979324380445e-8,0.0023799404698155602,3.486935159153574e-5,-4.408411931944888e-8,0.00238041786411957,3.4748539855140206e-5,-4.39317205628605e-8,0.0023809723866902452,3.471506365948844e-5,-4.38820214882267e-8,0.0023815649852208134,3.48036933953732e-5,-4.397726798401748e-8,0.0023821401857936045,3.502563195655052e-5,-4.423182507960411e-8,0.0023826385643343764,3.535804096673262e-5,-4.461940477123716e-8,0.002383015549616911,3.574351081297848e-5,-4.507218244911266e-8,0.0023832590121007622,3.610394768843331e-5,-4.549722500288198e-8,0.0023833960729126107,3.6365403192313095e-5,-4.5806082879119395e-8,0.0023834844707587666,3.6482794911242564e-5,-4.594430660481812e-8,0.0023835926131679144,3.6453070353420245e-5,-4.5907232417809996e-8,0.0023837780068744117,3.6312527567923084e-5,-4.573698815443366e-8,0.002384072504190872,3.612228458903607e-5,-4.550549834835012e-8,0.002384477540262076,3.594951747525463e-5,-4.529245938741677e-8,0.0023849679834993427,3.5850894327466484e-5,-4.516576690664186e-8,0.0023855013057676516,3.586164050491832e-5,-4.5168379713013465e-8,0.0023860287687607305,3.599113018920311e-5,-4.5312724744731254e-8,0.002386506003294634,3.6224400739596276e-5,-4.558208417162952e-8,0.0023869010817420566,3.65281921996621e-5,-4.5937482125035984e-8,0.0023871989250919125,3.685955147899608e-5,-4.632784241705567e-8,0.002387401820865755,3.7174763898084735e-5,-4.6700739768763154e-8,0.002387526785819297,3.7436733765039484e-5,-4.701140163670798e-8,0.0023876010849905364,3.761979915266924e-5,-4.7228628272774645e-8,0.00238765727041805,3.771186667545958e-5,-4.733742080218521e-8,0.002387728725155376,3.7714449644070145e-5,-4.7339022820513065e-8,0.0023878460686218663,3.764152424039279e-5,-4.724953688088123e-8,0.002388034216505095,3.751792399775393e-5,-4.709805432518741e-8,0.0023883096269505005,3.7377464417580596e-5,-4.692455759226862e-8,0.002388677274146209,3.726041803036959e-5,-4.677709598428318e-8,0.0023891272588487315,3.720938268477899e-5,-4.6706986835451093e-8,0.0023896319399229,3.7262272101778856e-5,-4.6760418636059854e-8,0.0023901458647094826,3.7441849520893325e-5,-4.696572132812101e-8,0.002390611746871633,3.774354152197786e-5,-4.731844757029362e-8,0.0023909747687158945,3.81269601588696e-5,-4.777091840959034e-8,0.002391202906290385,3.8519192870702565e-5,-4.823603735908806e-8,0.0023913040660786186,3.883476948556154e-5,-4.8611270833999345e-8,0.002391328128732739,3.9006667440986484e-5,-4.881589018117696e-8,0.00239134943562406,3.90124026913742e-5,-4.882222941094568e-8,0.002391438487576229,3.8880411452464615e-5,-4.866331475848319e-8,0.0023916383708005662,3.867507853522781e-5,-4.841510309828039e-8,0.00239195590432241,3.847153998643774e-5,-4.816669872463936e-8,0.0023923668018147257,3.833341819751815e-5,-4.799408876442468e-8,0.002392828007801345,3.830015839190798e-5,-4.794511807386538e-8,0.0023932907590552147,3.8383856123547755e-5,-4.8035481865629606e-8,0.00239371096036409,3.857245714578611e-5,-4.82521178047072e-8,0.0023940559931876475,3.883616405890264e-5,-4.856042818085454e-8,0.0023943082930363074,3.9134985874419545e-5,-4.891304887908877e-8,0.0023944662220829185,3.9426309839536574e-5,-4.925889576057055e-8,0.0023945426540706474,3.967167832740828e-5,-4.955145041930234e-8,0.0023945617795173573,3.984206233309221e-5,-4.975530429415886e-8,0.002394554803373748,3.992121054124771e-5,-4.985033218746083e-8,0.00239455526447015,3.990695202747839e-5,-4.983330111917577e-8,0.002394594661569528,3.9810623353083994e-5,-4.971716322616409e-8,0.0023946988252229935,3.965513390937551e-5,-4.952874150407233e-8,0.0023948850777624304,3.9472259325648355e-5,-4.9305586614794425e-8,0.00239515997526318,3.9299439114975593e-5,-4.909233045733194e-8,0.0023955174021503037,3.9175945382072434e-5,-4.893628682300761e-8,0.002395937007932476,3.9137890421156826e-5,-4.8881533371822775e-8,0.002396383695909191,3.921131979781866e-5,-4.896047917113908e-8,0.0023968099593563576,3.9403258047878505e-5,-4.918277327372618e-8,0.002397163497613983,3.969252739918278e-5,-4.952387416863947e-8,0.0023974015854493413,4.002518309701328e-5,-4.99193026544001e-8,0.002397509675261247,4.0321678158350774e-5,-5.027326909845036e-8,0.0023975151824612907,4.049998955523513e-5,-5.048669925554299e-8,0.0023974844671535013,4.050819106081807e-5,-5.049657166197553e-8,0.002397499090668801,4.034853438152713e-5,-5.0304833087084466e-8,0.0023976229322382613,4.007667775600651e-5,-4.997738881179162e-8,0.002397879519985696,3.977656534145411e-5,-4.96140773901125E-08,0.0023982502957491016,3.9527801939768744e-5,-4.93098968993077e-8,0.002398689129527083,3.938302665345923e-5,-4.912820157919039e-8,0.002399141121851689,3.936112368628708e-5,-4.9092584839070415e-8,0.002399557122870482,3.945190021821551e-5,-4.919217196871091e-8,0.002399901681190261,3.9625470595205126e-5,-4.939240127952472e-8,0.0024001557140803276,3.9841782493496445e-5,-4.9646053324931454e-8,0.00240031603823306,4.0058414074826275e-5,-4.990243651972935e-8,0.0024003933848322214,4.02365269468108e-5,-5.0114610330648764e-8,0.0024004095942288745,4.034539638022784e-5,-5.0245052214989265e-8,0.0024003941453741816,4.0365693589607254e-5,-5.0269831914895396e-8,0.0024003801497172756,4.0291449589680024e-5,-5.018110199371788e-8,0.0024004000531943383,4.013054961443052e-5,-4.9987707246810776e-8,0.0024004814327914467,3.990360304898532e-5,-4.9713797552627094e-8,0.0024006433784475078,3.96412645683471e-5,-4.9395635374628664e-8,0.002400893829350257,3.938038444905259e-5,-4.907710595026679e-8,0.0024012280072063545,3.9159384872200925e-5,-4.88043653842751e-8,0.002401627983789423,3.901309599496099e-5,-4.861979177381442e-8,0.0024020634684160267,3.896712290496793e-5,-4.8555194568685595e-8,0.0024024942344411503,3.903172416614497e-5,-4.862420076639316e-8,0.0024028751869229125,3.919562945854613e-5,-4.881439962151439e-8,0.0024031652429550516,3.942160059336088e-5,-4.908159561584208e-8,0.0024033401183291706,3.964740296327271e-5,-4.9350792145343485e-8,0.002403406122558092,3.9796826052265784e-5,-4.952959530944614e-8,0.0024034075771528214,3.9802695108078196e-5,-4.953626629721684e-8,0.002403418663533099,3.963531471377749e-5,-4.933424264248788e-8,0.002403517483513351,3.9320414167136537e-5,-4.895377104664041e-8,0.00240375400559779,3.893213949475224e-5,-4.848339885001966e-8,0.0024041310350306584,3.856275056172833e-5,-4.803360539427687e-8,0.002404608522803643,3.8287467657906244e-5,-4.7694797328705657e-8,0.002405124618903588,3.814364277978108e-5,-4.7512463896821273e-8,0.002405618526611032,3.812961405164927e-5,-4.748570334517685e-8,0.0024060450436589023,3.821594093326314e-5,-4.7580367143404314e-8,0.002406379515424713,3.8359386346411104e-5,-4.774544974096198e-8,0.0024066165603803674,3.851416440298249e-5,-4.7926337409967924e-8,0.002406766193043988,3.863916072047892e-5,-4.8073452764022304e-8,0.0024068496190933135,3.870200493814187e-5,-4.814731567974312e-8,0.0024068954751543747,3.8681384728337856e-5,-4.812157280049673e-8,0.0024069363302526986,3.8568469741027326e-5,-4.7984907944708237e-8,0.002407005092363638,3.8367620010703626e-5,-4.774197343294295e-8,0.0024071311642991904,3.8096143001373596e-5,-4.741307791637707e-8,0.00240733648448139,3.7782662926820594e-5,-4.703219316231057e-8,0.0024076319591230843,3.746376601902139e-5,-4.664296180742872e-8,0.0024080150100535243,3.717901842199488e-5,-4.629284851707181e-8,0.0024084688627471237,3.6964873105139e-5,-4.6025986316963574e-8,0.002408963950387803,3.684822663195842e-5,-4.587550926484438e-8,0.002409461535231225,3.6840528070730786e-5,-4.585634918576009e-8,0.0024099194289861434,3.6933325176103526e-5,-4.595954827428758e-8,0.002410299639091284,3.709615129870326e-5,-4.6149286023116704e-8,0.0024105775736920194,3.727809719448076e-5,-4.636443290545415e-8,0.0024107515290991625,3.7414947503234764e-5,-4.652707276927955e-8,0.0024108494422053167,3.744332346904537e-5,-4.6559778833502254e-8,0.0024109280582808607,3.732068196771385e-5,-4.641012552830863e-8,0.0024110599588631028,3.704486401008396e-5,-4.6074593882075726e-8,0.0024113092457543352,3.666207745630117e-5,-4.560832165779338e-8,0.0024117058579894443,3.625440453889971e-5,-4.511002792620606e-8,0.00241223320394758,3.590984658345839e-5,-4.468591059086578e-8,0.0024128367433007784,3.569068786073452e-5,-4.4411566261216975e-8,0.002413447167854588,3.561679042361314e-5,-4.431182379727306e-8,0.002414003943390364,3.566857531655897e-5,-4.4364131508880796e-8,0.002414468917828636,3.5802128924618506e-5,-4.45164528407243e-8,0.0024148287689588913,3.596582802687616e-5,-4.4707042649597976e-8,0.0024150906323866994,3.6112294226174406e-5,-4.487876186163635e-8,0.0024152756199526553,3.620466985756144e-5,-4.4986732147043753e-8,0.002415412983422486,3.621886433437632e-5,-4.5001246595991545e-8,0.002415535705571361,3.614384708305006e-5,-4.490832914512481e-8,0.0024156771163272757,3.59813440871689e-5,-4.470949129805716e-8,0.0024158678193869285,3.5745351613970705e-5,-4.442116416614326e-8,0.002416132416351302,3.546120330008051e-5,-4.4073537242749924e-8,0.0024164859220694446,3.516352548830468e-5,-4.370808294460031e-8,0.00241693034169506,3.4892359785693274e-5,-4.337295078484064e-8,0.0024174524408001833,3.468719086143528e-5,-4.3115900098566585e-8,0.002418023930833043,3.457944258321774e-5,-4.2975364635792224e-8,0.002418604957254082,3.4584872568489474e-5,-4.297126534219297e-8,0.002419150952416655,3.469789771516463e-5,-4.30979643194712e-8,0.0024196218300455495,3.48898251884466e-5,-4.3321783064122653e-8,0.0024199916518604678,3.51121471359681e-5,-4.3584618304832864e-8,0.002420256595170644,3.5304987746849386e-5,-4.381393076419317e-8,0.002420439070447764,3.54098460734516e-5,-4.393818240200917e-8,0.002420585972638163,3.5384692412318615e-5,-4.39053621156832e-8,0.0024207596255476035,3.521796937688811e-5,-4.3700303187940916e-8,0.00242102169533141,3.493649672842064e-5,-4.335458114598203e-8,0.0024214136673983418,3.460203389622349e-5,-4.294254391313394e-8,0.0024219412696859064,3.4294397281599166e-5,-4.2560928350924536e-8,0.002422570997871016,3.40859042454751e-5,-4.2297873198728576e-8,0.002423241774708797,3.401825188013031e-5,-4.220478688725671e-8,0.002423886226246646,3.4092534703597756e-5,-4.2284029344064495e-8,0.002424450990286084,3.4275193790697986e-5,-4.2495842308161056e-8,0.002424907897269756,3.4513860089160096e-5,-4.277731373829174e-8,0.002425254646420478,3.475404717614502e-5,-4.306250514379759e-8,0.0024255087764721997,3.495073098604035e-5,-4.329653600382793e-8,0.0024256997145779124,3.5073628211510956e-5,-4.344214009667556e-8,0.0024258619447215263,3.510795400575972e-5,-4.3480765687463235e-8,0.002426030203565686,3.505305808974759e-5,-4.341105272837135e-8,0.0024262362674914877,3.4920608081784176e-5,-4.3246676601309794e-8,0.0024265064422872465,3.473295174654087e-5,-4.3014350394663596e-8,0.0024268589868617334,3.4521461493677566e-5,-4.275180769052857e-8,0.002427301138503399,3.432410975088323e-5,-4.250490759677728e-8,0.0024278260913050916,3.418129571204661e-5,-4.2322676945393295e-8,0.002428411097108386,3.4129280643721544e-5,-4.2249456747169526e-8,0.002429018449007624,3.4191654643649516e-5,-4.231457750259257e-8,0.002429600921945329,3.4370848029145066e-5,-4.2521942446609057e-8,0.002430111852543173,3.464306742421111e-5,-4.284362752322127e-8,0.0024305177078212167,3.4960014332554184e-5,-4.322166147588011e-8,0.0024308089963019476,3.525864256604065e-5,-4.3579634420191055e-8,0.0024310052103568625,3.54768490791095e-5,-4.3841674275576033e-8,0.0024311514832499894,3.5570331945046896e-5,-4.3953026184890535e-8,0.0024313076209347257,3.552531869349453e-5,-4.389576556823521e-8,0.0024315325810961527,3.5363327353876604e-5,-4.369491031447773e-8,0.0024318686265469066,3.513647254223246e-5,-4.341303915546696e-8,0.0024323294873825944,3.491423748049786e-5,-4.3134445579347336e-8,0.002432896167264619,3.476495141289254e-5,-4.294268271529085e-8,0.0024335222309093078,3.4737272570903575e-5,-4.2897907650809233e-8,0.0024341473034816276,3.484777220801906e-5,-4.3021473228785095e-8,0.0024347141143896403,3.5078911481254485e-5,-4.3293103813853885e-8,0.0024351828565165653,3.5387420696509406e-5,-4.3660807647483854e-8,0.0024355382696882246,3.571869639847352e-5,-4.4058284519528546e-8,0.0024357886769330174,3.602113490945862e-5,-4.442243365076725e-8,0.0024359595899447976,3.6255981177570735e-5,-4.470551282002724e-8,0.002436085616257832,3.64014787157889e-5,-4.4880378715262854e-8,0.002436203431207954,3.645261201880796e-5,-4.49403083766768e-8,0.002436346881699283,3.641860110716656e-5,-4.489600455109322e-8,0.0024365439720128446,3.631989439005647e-5,-4.477193408814986e-8,0.002436814886263786,3.618547757967348e-5,-4.460305079373914e-8,0.0024371701965660787,3.605043991849035e-5,-4.443187709405474e-8,0.0024376087810835056,3.5953118153448417e-5,-4.430512313890507e-8,0.002438115638816738,3.593080766479197e-5,-4.42685612060324e-8,0.0024386606910261066,3.601319060175138e-5,-4.43590417894124e-8,0.0024392005329820178,3.621366124796751e-5,-4.459380937231256e-8,0.0024396852406738875,3.652073535771226e-5,-4.495979153559817e-8,0.002440070792536112,3.689393707336404e-5,-4.540830813754903e-8,0.0024403341938348043,3.7269028978704966e-5,-4.586125501539923e-8,0.0024404847869948067,3.757420212930339e-5,-4.6230801286461525e-8,0.0024405649339235085,3.775253295873212e-5,-4.6446847061845124e-8,0.0024406379971211724,3.778108573313487e-5,-4.6480442904616754e-8,0.0024407684360130493,3.7678040163525975e-5,-4.635265130274541e-8,0.002441002576816896,3.749564568269083e-5,-4.6126207922268527e-8,0.0024413569455008703,3.730344562480743e-5,-4.58853778897302e-8,0.0024418164775716804,3.716885726843634e-5,-4.571251766869334e-8,0.002442341086211704,3.7141004685513786e-5,-4.566838003723965e-8,0.002442877339190302,3.72411338432493e-5,-4.5780171769525656e-8,0.002443371731515466,3.746064251142103e-5,-4.603872319654958e-8,0.002443782406429579,3.7766052234272806e-5,-4.640413953378797e-8,0.002444086872764397,3.810893879139721e-5,-4.681768347059421e-8,0.002444284388309687,3.843785498667255e-5,-4.721633349478445e-8,0.002444393232414692,3.8709012326829734e-5,-4.7546011694557105e-8,0.002444444549161754,3.889334328329184e-5,-4.7770454539860257e-8,0.002444475074792687,3.8979187827749855e-5,-4.787468720267451e-8,0.0024445206944451194,3.8971331473534686e-5,-4.7863936944109584e-8,0.0024446118314487707,3.8887888173957045e-5,-4.775982946018779e-8,0.0024447706911564257,3.8756507830295623e-5,-4.7595742185117445e-8,0.002445009754862674,3.861079858955392e-5,-4.741246632391835e-8,0.002445330792627307,3.848709249206566e-5,-4.7254353116952106e-8,0.0024457239072774276,3.84210898084392e-5,-4.7165331531864033e-8,0.002446166646694304,3.844355610942536e-5,-4.71836986496915e-8,0.002446624062616858,3.857428817952799e-5,-4.733464480752854e-8,0.0024470514934107203,3.88144481598043e-5,-4.762062321108293e-8,0.002447402125327943,3.913928762815128e-5,-4.801212199106996e-8,0.0024476400881559847,3.9495739935443694e-5,-4.8444475535150416e-8,0.0024477561339314394,3.981049166716775e-5,-4.8827712071902615e-8,0.002447778077693695,4.001077266348328e-5,-4.9072160123498955e-8,0.0024477670483197492,4.005148747549024e-5,-4.9121840338880554e-8,0.0024477974812433497,3.993465087268592e-5,-4.897832831402965e-8,0.002447929926440992,3.9709268450711776e-5,-4.870064967828901e-8,0.0024481909223161946,3.9451954414470326e-5,-4.838174394154787e-8,0.0024485684783898502,3.923993501418732e-5,-4.811575988446022e-8,0.0024490213965491316,3.9129377699806304e-5,-4.797180052202577e-8,0.0024494948154261892,3.91451644029732e-5,-4.798138431887394e-8,0.002449935069477873,3.928119976470324e-5,-4.8138482471436045e-8,0.002450300397506881,3.9507323269912974e-5,-4.840749035993413e-8,0.0024505668157711494,3.9779044908857327e-5,-4.8734735279841313E-08,0.0024507297637555462,4.004759573096723e-5,-4.906061161920809e-8,0.002450802394303154,4.02688488745371e-5,-4.9330599704006644e-8,0.0024508113644507706,4.0410128173367605e-5,-4.95038655686505e-8,0.002450791125069385,4.0454212555310635e-5,-4.955844487476108e-8,0.0024507778465312773,4.040035570468197e-5,-4.949267054201453e-8,0.0024508040198822152,4.026270069107783e-5,-4.932327950223557e-8,0.0024508944505534447,4.006688255862525e-5,-4.908122347286046e-8,0.0024510638634689867,3.984580917053899e-5,-4.880648823794057e-8,0.00245131584498336,3.963541528939374e-5,-4.854295462312273e-8,0.002451642653661857,3.9470681141633724e-5,-4.833364518839405e-8,0.002452025536044154,3.938176083843848e-5,-4.8216083300638214e-8,0.002452435488543121,3.938977033584164e-5,-4.8217107227132724e-8,0.002452835048062748,3.950174696583605e-5,-4.8346481745672895e-8,0.0024531824507044967,3.970500384005907e-5,-4.858962496972789e-8,0.0024534396241559695,3.9962702831889606e-5,-4.890182990265696e-8,0.0024535843268946146,4.021443150526203e-5,-4.920880941676828e-8,0.002453623652929858,4.0386636134526066e-5,-4.9419622792017125e-8,0.002453601452891794,4.041499005959166e-5,-4.945444695873122e-8,0.0024535904575645672,4.0272043808040254e-5,-4.9278768855135644e-8,0.002453667088416081,3.9984366591700615e-5,-4.892445528448971e-8,0.0024538804961186404,3.9625472135700606e-5,-4.8481018851177726e-8,0.002454234041076148,3.9286627001372286e-5,-4.8059919577965076e-8,0.002454688758937021,3.90430339964667e-5,-4.7753378723272426e-8,0.002455182859858328,3.893307901809375e-5,-4.760913419343073e-8,0.0024556538362148746,3.895585698194267e-5,-4.762729962876685e-8,0.0024560537286482022,3.908100050787737e-5,-4.777201985779246e-8,0.00245635559786168,3.92623565237223e-5,-4.7987768345426784e-8,0.002456553543520675,3.945013089553443e-5,-4.821391608652092e-8,0.002456659304914327,3.9599666210168044e-5,-4.839543997652059e-8,0.002456697551274787,3.9677063676223765e-5,-4.849000855734107e-8,0.002456700822614684,3.966238759049165e-5,-4.847222180997126e-8,0.0024567044573505052,3.9550907364328136e-5,-4.833540821334541e-8,0.0024567417680072287,3.935256550822404e-5,-4.8091109193474636e-8,0.0024568398052084747,3.9089819952275556e-5,-4.776643242859904e-8,0.002457016102034005,3.879409971555748e-5,-4.739964644423014e-8,0.0024572767266246858,3.850135084065896e-5,-4.7034702557923994e-8,0.002457615714144817,3.8247292949526414e-5,-4.671548886753261e-8,0.002458015719767934,3.806281830374309e-5,-4.648030512056859e-8,0.0024584497093368225,3.7969709899505705e-5,-4.6356668032574766e-8,0.0024588835950892117,3.797672416493626e-5,-4.6356402548602995e-8,0.002459280019112911,3.8076035091713856e-5,-4.647098884390965e-8,0.0024596039507214372,3.8240450757803655e-5,-4.666776031810568e-8,0.0024598307142160007,3.842294852242427e-5,-4.68890281670926e-8,0.002459955918353923,3.8561282527527495e-5,-4.7057687283657186e-8,0.0024600044256263562,3.85906258738798e-5,-4.7093002809037085e-8,0.0024600323640595525,3.846469351560399e-5,-4.693699010582562e-8,0.002460115198327215,3.817888591278212e-5,-4.658318142014719e-8,0.0024603211513315733,3.778139333481038e-5,-4.609033001301854e-8,0.0024606816896058582,3.7360118141523624e-5,-4.5566248750844804e-8,0.0024611773581020993,3.700873869629158e-5,-4.5126111329188663e-8,0.0024617480565587665,3.679136890764092e-5,-4.484915535672109e-8,0.0024623194040428297,3.6725241793431914e-5,-4.4757458521259293e-8,0.002462828313114861,3.6785610286324895e-5,-4.4821776764596e-8,0.0024632368323780508,3.692313753770688e-5,-4.49825480110503e-8,0.002463533911415987,3.7081973038857536e-5,-4.517174974987359e-8,0.002463730207416001,3.72123954530806e-5,-4.5328262829285335e-8,0.0024638508339381053,3.727738907944816e-5,-4.540602228952397e-8,0.0024639287406243806,3.725496815222289e-5,-4.537712390347134e-8,0.002463999440178538,3.7138246844026674e-5,-4.523220853693909e-8,0.002464096769834068,3.693441043162565e-5,-4.4979410248424785e-8,0.002464249278477507,3.6662920271676045e-5,-4.464221452771284e-8,0.0024644771058909905,3.6352892349154964e-5,-4.4256185173269244e-8,0.0024647894963774355,3.60394813223482e-5,-4.3864446992286476e-8,0.00246518333004217,3.575928664507124e-5,-4.3512032388348086e-8,0.00246564308966862,3.5545192829730305e-5,-4.323961698689231e-8,0.002466142462746481,3.54212599682058e-5,-4.30773347216381e-8,0.0024666475561435836,3.539825611996659e-5,-4.303928925890125e-8,0.002467121549800276,3.5470424064565755e-5,-4.311941218583528e-8,0.002467530510301026,3.5614038369783264e-5,-4.328936880925462e-8,0.0024678501018424014,3.578830836147025e-5,-4.3499317664747304e-8,0.00246807277205011,3.5939557401127685e-5,-4.368284640476247e-8,0.0024682141340358534,3.6009986170699735e-5,-4.3767824546787344e-8,0.002468315806348312,3.595167953042106e-5,-4.369398422338407e-8,0.002468440719277613,3.574403825458124e-5,-4.343483114258189e-8,0.0024686576285004418,3.5408406295791984e-5,-4.301598790135291e-8,0.002469016756628685,3.5009868675168896e-5,-4.251749277816247e-8,0.002469527016305481,3.4639085816369505e-5,-4.2051331770138575e-8,0.0024701491272457075,3.437918303108398e-5,-4.172053655964463e-8,0.0024708107727132163,3.4275108324639473e-5,-4.1581346163947136e-8,0.0024714349391305145,3.432221330845508e-5,-4.162900742123513e-8,0.0024719649634269477,3.447673339527891e-5,-4.181047415170179e-8,0.0024723756773897968,3.4677347990773343e-5,-4.2050733510056084e-8,0.0024726711706196352,3.486498141779451e-5,-4.227704642717137e-8,0.002472875776800631,3.499457801076819e-5,-4.243345755026598e-8,0.002473024311147267,3.5039164456257024e-5,-4.248596282344877e-8,0.002473154485424879,3.49892258455584e-5,-4.24219893311207e-8,0.0024733018836487117,3.485023256564978e-5,-4.224757508831041e-8,0.0024734966693373177,3.4639859686924084e-5,-4.198405931463602e-8,0.002473761122223743,3.4385249288497285e-5,-4.166470061647262e-8,0.0024741075410927692,3.412005527399114e-5,-4.1330957835760266e-8,0.0024745365035125336,3.388081280598191e-5,-4.1027956557272016e-8,0.0024750358991933777,3.3702298329276224e-5,-4.0798783384882296e-8,0.002475581446443766,3.361205682415149e-5,-4.0677810154140694e-8,0.0024761393094790735,3.362488283309667e-5,-4.068393655070341e-8,0.00247667099923248,3.3738415010136826e-5,-4.081509111115514e-8,0.0024771401592741794,3.393112591255991e-5,-4.104553604679316e-8,0.0024775202300596727,3.4163782098038836e-5,-4.132736396042357e-8,0.0024778015552186553,3.4384841805604154e-5,-4.15968981141725e-8,0.002477996355230064,3.453957481857277e-5,-4.178587242689799e-8,0.002478139925461257,3.4582095835946386e-5,-4.183646089222978e-8,0.0024782863608294597,3.448855008036613e-5,-4.171792894077942e-8,0.002478497599215119,3.426810101996982e-5,-4.1440616533293496e-8,0.002478826423475806,3.3966768621773196e-5,-4.106097101147728e-8,0.002479297655651806,3.365920201414745e-5,-4.067146491268234e-8,0.0024798956470742607,3.3427359889743966e-5,-4.0374142208359564e-8,0.002480566263107198,3.333281657692773e-5,-4.0246164098665086e-8,0.0024812348815230548,3.339569240715765e-5,-4.031349099874403e-8,0.002481832069138389,3.359098154088289e-5,-4.054608293176884e-8,0.0024823140828337882,3.3862509899205475e-5,-4.087496962472572e-8,0.0024826701499891905,3.4144843169478624e-5,-4.121926049669797e-8,0.0024829174589391183,3.438196398751778e-5,-4.150927531351717e-8,0.002483090231395934,3.453716218275256e-5,-4.169890994247633e-8,0.0024832289273681676,3.459479555529096e-5,-4.1768010969739914e-8,0.0024833725099405357,3.455739202683464e-5,-4.171898971311369e-8,0.002483553953461178,3.444130953944551e-5,-4.1571586234288615e-8,0.002483797896582137,3.42726872143246e-5,-4.135789466565913e-8,0.002484119250717028,3.408404982664835e-5,-4.111811949072816e-8,0.0024845220544084173,3.3911157045767064e-5,-4.08966177191401e-8,0.0024849984608592214,3.378942234513219e-5,-4.073744810316272e-8,0.002485528319030998,3.37493393541924e-5,-4.0678740705520224e-8,0.0024860802611576817,3.381090099062003e-5,-4.07458217081001e-8,0.002486615292822404,3.3977887022200906e-5,-4.094410565553709e-8,0.0024870933615432594,3.4233776242617746e-5,-4.1253884823212716e-8,0.0024874822433588704,3.454145160287273e-5,-4.162972775740252e-8,0.0024877666980437367,3.4848325612800404e-5,-4.200659476353093e-8,0.002487954948091704,3.5096872718110185e-5,-4.2312767159825944e-8,0.0024880797904155523,3.523845842873798e-5,-4.248704298833028e-8,0.002488193043039279,3.5246843277377304e-5,-4.249570636640487e-8,0.0024883539592743067,3.512738494103619e-5,-4.234426909230887e-8,0.0024886140602875923,3.49187025600563e-5,-4.207987071532803e-8,0.002489002194927896,3.468515900952789e-5,-4.178219564842183e-8,0.0024895143834379584,3.450085337149065e-5,-4.1543686661381805e-8,0.002490112692358687,3.4428839747837344e-5,-4.144362746866002e-8,0.002490735095733774,3.4502254176917696e-5,-4.152441444489307e-8,0.002491313820334456,3.47148501990305e-5,-4.177943206499539e-8,0.0024917952057646542,3.5025110867509906e-5,-4.21578484386859e-8,0.002492153108185882,3.537166319265242e-5,-4.2583614770799746e-8,0.0024923915653697563,3.569250545655623e-5,-4.297938359576452e-8,0.0024925381077774505,3.594019773552308e-5,-4.328553882965522e-8,0.0024926327298874706,3.608907519420701e-5,-4.346936640882342e-8,0.0024927174854313663,3.6135139860801745e-5,-4.352511605516019e-8,0.0024928293045150462,3.6091731116077385e-5,-4.3468759712982866e-8,0.0024929962078651933,3.598404077227055e-5,-4.3331234070503576e-8,0.002493235828937878,3.584424198247867e-5,-4.315237723752643e-8,0.002493554988497319,3.5707654226319e-5,-4.297612739315671e-8,0.002493949475402431,3.560950550536974e-5,-4.284648196073154e-8,0.002494403814902926,3.558150409860973e-5,-4.2803251027824265e-8,0.0024948914829334063,3.5647523756435825e-5,-4.287670742727347e-8,0.0024953765911673344,3.581825773142045e-5,-4.308089582356996e-8,0.0024958182908375675,3.608573040867354e-5,-4.340666705533066e-8,0.0024961786512342457,3.641986140806195e-5,-4.381718846972339e-8,0.0024964332001036105,3.677013333856981e-5,-4.424981283072611e-8,0.002496580985875428,3.707466125980302e-5,-4.4627260595163124e-8,0.00249664942189288,3.7275972463325826e-5,-4.487730097257107e-8,0.002496690103679088,3.733875515066651e-5,-4.4954995613220536e-8,0.0024967655193018647,3.726250067358835e-5,-4.485864320894178e-8,0.002496931013734003,3.7083456871196986e-5,-4.46324458229267e-8,0.0024972186148263043,3.686490845186074e-5,-4.435466169172905e-8,0.002497628180291189,3.6679510733870065e-5,-4.411582351619956e-8,0.002498128079111284,3.658972340409257e-5,-4.3994441199673844e-8,0.0024986644042137227,3.663208106121771e-5,-4.4037246854020054e-8,0.0024991755753180833,3.680926861936187e-5,-4.4248953740883185e-8,0.002499608064555356,3.709163133072151e-5,-4.459370765840227e-8,0.0024999288144117358,3.742710477725366e-5,-4.500715060851872e-8,0.0025001310412585205,3.775603780312682e-5,-4.5414811573711545e-8,0.0025002324917523817,3.8025992028683344e-5,-4.57506862741052e-8,0.002500267909808244,3.82021913744237e-5,-4.5970516699009e-8,0.0025002791334092648,3.827161818741498e-5,-4.6057156152074936e-8,0.002500306150636883,3.824142696912959e-5,-4.601877616789812e-8,0.002500381023813219,3.813396254515294e-5,-4.588273798227383e-8,0.002500524917925695,3.7980819109320463e-5,-4.5688184530668866e-8,0.002500747387946369,3.781755623906785e-5,-4.547941847511398e-8,0.0025010467943652028,3.7679593748579237e-5,-4.530076608806616e-8,0.002501411000812327,3.759894473403009e-5,-4.5192519652786e-8,0.002501818061535664,3.76010451065458e-5,-4.518700349120371e-8,0.002502237249305373,3.7700983349453346e-5,-4.530383549196263e-8,0.002502631391630373,3.789891117462528e-5,-4.5544060670952407e-8,0.0025029618245448393,3.817544639615828e-5,-4.588418136956523e-8,0.0025031968555852867,3.8489391629367015e-5,-4.6273070203581374e-8,0.002503322900130418,3.878132383082006e-5,-4.6636329847159344e-8,0.0025033544659702643,3.898595666221756e-5,-4.689179674409995e-8,0.0025033366866835474,3.9052160624291637e-5,-4.6974744631872444e-8,0.002503335424761968,3.8963286204251026e-5,-4.686346369928086e-8,0.002503416415545243,3.874697513072474e-5,-4.659163332249408e-8,0.002503622458507168,3.846773122092755e-5,-4.623914977805023e-8,0.0025039595976610314,3.820530008492874e-5,-4.590530882256746e-8,0.002504397631776516,3.802946606966512e-5,-4.5677537488936655e-8,0.002504882299547712,3.798169372682445e-5,-4.560852435839345e-8,0.002505352221421315,3.806826004220745e-5,-4.570743517294879e-8,0.00250575432324309,3.8263797822131395e-5,-4.59439244261933e-8,0.0025060542893460607,3.852145546614233e-5,-4.6260390338084265e-8,0.002506241100184328,3.878568465963214e-5,-4.658768272125083e-8,0.0025063261680084966,3.900454144029845e-5,-4.686046599932783e-8,0.0025063382859264074,3.913932359754488e-5,-4.702948014495108e-8,0.0025063160483484925,3.917014569025023e-5,-4.706882713849625e-8,0.002506299694580531,3.9097007570934184e-5,-4.697758835500036e-8,0.0025063241642786917,3.893705066219002e-5,-4.677655197485161e-8,0.002506414458106024,3.8719469291395064e-5,-4.650187612960767e-8,0.002506583529031959,3.847966713294664e-5,-4.6197729527279165e-8,0.0025068322231723375,3.825390939784268e-5,-4.5909552105830005e-8,0.00250715042643049,3.8075081039815325e-5,-4.5678747389959236e-8,0.002507518671035578,3.79694315028609e-5,-4.553864588391083e-8,0.002507909881434134,3.7953757863868274e-5,-4.551099211154035e-8,0.0025082914429322,3.8032479762118567e-5,-4.560219705504129e-8,0.0025086283062298424,3.819441369790588e-5,-4.5799089344806656e-8,0.002508888222288745,3.8409920504514224e-5,-4.6065065644875405e-8,0.002509049867274366,3.863051042059274e-5,-4.633938175836797e-8,0.002509113004638694,3.879425510226927e-5,-4.654391267553016e-8,0.0025091068429147767,3.883993594289078e-5,-4.6601084959132783e-8,0.0025090898042000585,3.872875934821506e-5,-4.6461387254399373e-8,0.002509134996273683,3.846495952331999e-5,-4.6129379088556667e-8,0.002509303823785431,3.810176136963081e-5,-4.567118163005868e-8,0.0025096206611317003,3.77249340788089e-5,-4.519386918014874e-8,0.0025100635025889603,3.742094334698776e-5,-4.480570179737146e-8,0.0025105750725739227,3.7247279761174246e-5,-4.4579149479260436e-8,0.0025110856597778002,3.721891833235642e-5,-4.4533963341258614e-8,0.0025115347336513087,3.7312355209207396e-5,-4.464198908935113e-8,0.0025118837717088426,3.7479672497395944e-5,-4.4844363555259744e-8,0.0025121197805155586,3.766434463552293e-5,-4.507092241835546e-8,0.0025122524606316582,3.781403239390384e-5,-4.5256039989766344e-8,0.002512308218517646,3.788897265948401e-5,-4.534921710684068e-8,0.002512323198993744,3.7866377431753216e-5,-4.532087455967344e-8,0.0025123364352792246,3.774164049515155e-5,-4.5164209733579505e-8,0.002512383722153255,3.752690440451212e-5,-4.4893662222274306e-8,0.0025124927690744884,3.724752495244522e-5,-4.454058376296237e-8,0.0025126800686300593,3.6937187041074546e-5,-4.4147073781900625e-8,0.002512949640805612,3.663249847498581e-5,-4.3759102263850506e-8,0.0025132935154346414,3.636784559588725e-5,-4.3419995601533096e-8,0.0025136935134270817,3.6171127440481755e-5,-4.3165098457630535e-8,0.002514123766723244,3.606055777639336e-5,-4.301781026749884e-8,0.002514553618955688,3.604231707921164e-5,-4.298663815376317e-8,0.0025149508839445193,3.610876316223164e-5,-4.306282715704458e-8,0.0025152857940081257,3.6237122105096005e-5,-4.321846926867821e-8,0.0025155362609611655,3.6389174493579715e-5,-4.3405830751730746e-8,0.002515694790395706,3.651350376824656e-5,-4.356001367114698e-8,0.002515776049335391,3.6552764092910476e-5,-4.360815615449484e-8,0.0025158217306482694,3.64579617376964e-5,-4.348766977365181e-8,0.002515896936537497,3.620833883698536e-5,-4.317158041654697e-8,0.002516073071847446,3.5828669318152446e-5,-4.269046581534293e-8,0.002516399987719169,3.539060604592482e-5,-4.213413246847748e-8,0.0025168814606322987,3.499021840014745e-5,-4.162331415721513e-8,0.0025174707936113064,3.4710531005774946e-5,-4.126263149227772e-8,0.002518090589616577,3.459078644678115e-5,-4.1102057661954364e-8,0.002518663524727177,3.4618912918017596e-5,-4.112741399925282e-8,0.0025191361740298083,3.474582741761788e-5,-4.1278096176040484e-8,0.0025194875406559848,3.490802432070915e-5,-4.147510457868247e-8,0.002519725292742549,3.504638962014763e-5,-4.16444050552658e-8,0.0025198766141857846,3.5116951628882e-5,-4.173036446018124e-8,0.002519978706172601,3.509468993429849e-5,-4.1700694202266914e-8,0.002520071130482626,3.497310385097045e-5,-4.154621540106111e-8,0.002520190252699242,3.4761794687652565e-5,-4.1278135639874127e-8,0.0025203652372844786,3.448316626617987e-5,-4.092409555262571e-8,0.002520615191656812,3.416849468288395e-5,-4.05232510677893e-8,0.002520947440465501,3.385345763496335e-5,-4.0120551152513905e-8,0.002521357059662189,3.3573332103171066e-5,-3.976057689732734e-8,0.0025218278023055253,3.335822588172072e-5,-3.9481488035551096e-8,0.0025223344083919984,3.3228896480038676e-5,-3.930979257938309e-8,0.0025228460215779803,3.319367073788616e-5,-3.925652251261835e-8,0.0025233303087924958,3.324669892834196e-5,-3.9315015622613785e-8,0.0025237579626117535,3.336760095667987e-5,-3.946031753109398e-8,0.0025241074151963775,3.352256518500154e-5,-3.9650309128366536e-8,0.0025243697315655363,3.366716014331096e-5,-3.982900185191263e-8,0.002524553460207322,3.375163915239177e-5,-3.9933128485974816e-8,0.002524688300114605,3.37298851909107e-5,-3.9903559505638475e-8,0.002524824998114826,3.357240651657453e-5,-3.970202211903166e-8,0.0025250277665400896,3.328120777325597e-5,-3.933021967054159e-8,0.002525356611076024,3.289990453199541e-5,-3.8842803606554595e-8,0.0025258428381231134,3.250914558990305e-5,-3.834160036262284e-8,0.0025264698957574395,3.220189906693548e-5,-3.794432342774024e-8,0.0025271741566565867,3.2047197639093385e-5,-3.773873488953271e-8,0.002527868930050737,3.206296769477658e-5,-3.7748283537389005e-8,0.002528477957775852,3.2214078628227146e-5,-3.792951338789108e-8,0.0025289589671146006,3.243333093220877e-5,-3.8198347470684486e-8,0.002529308244893737,3.2649160481611736e-5,-3.8464834618929027e-8,0.002529551044230285,3.280554245702909e-5,-3.8658136766423037e-8,0.0025297276422903844,3.286996887218826e-5,-3.873662679239773e-8,0.0025298816375502052,3.283279972249427e-5,-3.8687266747971134e-8,0.002530052440279624,3.2702708511500886e-5,-3.852013964263886e-8,0.0025302712732322313,3.250144171865661e-5,-3.8262077101730963E-08,0.002530559210242333,3.22591991158146e-5,-3.7950935413685944e-8,0.002530926148178654,3.2010602838034795e-5,-3.7630466201304596e-8,0.002531370351391248,3.1790798148834993e-5,-3.7345270529438355e-8,0.0025318786907376338,3.1631370951251876e-5,-3.713553615551818e-8,0.0025324279262051433,3.155608559611767e-5,-3.703162366365894e-8,0.0025329874164920214,3.1576901848478516e-5,-3.704907123537745e-8,0.0025335233363896095,3.1691081346079224e-5,-3.71849683887019e-8,0.002534004013295205,3.1880164541897305e-5,-3.741660475396124e-8,0.0025344056658638974,3.211134266810114e-5,-3.770302889521404e-8,0.0025347176716889862,3.234141683476799e-5,-3.798981805268735e-8,0.0025349464931195965,3.25231453918205e-5,-3.821692596727692e-8,0.002535117468766687,3.261356425395861e-5,-3.832919965284332e-8,0.002535273522037362,3.25837585549067e-5,-3.828894828785741e-8,0.0025354694854592633,3.242890013057747e-5,-3.808899818124254e-8,0.0025357608919522735,3.217582413424165e-5,-3.776263794934066e-8,0.002536187666940124,3.1883621764644e-5,-3.738458087106923e-8,0.0025367568259437178,3.1632385404099197e-5,-3.7056717765237276e-8,0.0025374327525164407,3.1499190159307474e-5,-3.687752844703763e-8,0.0025381439662942977,3.152925181564535e-5,-3.690529396896161e-8,0.00253880714969785,3.1717495544648184e-5,-3.7134493175846014e-8,0.002539357012067217,3.201212311537006e-5,-3.7500132915228656e-8,0.002539765928854451,3.233760649167408e-5,-3.79067823651572e-8,0.0025400453147970577,3.2622583246552875e-5,-3.82638918563021e-8,0.0025402331112333227,3.281872156862578e-5,-3.850972952935261e-8,0.002540377487382661,3.290621872055572e-5,-3.8618458257282727e-8,0.002540524155092487,3.288979390474908e-5,-3.8595246105451726e-8,0.0025407093934606078,3.279105867884921e-5,-3.846681028316092e-8,0.002540957537634892,3.2641231271875194e-5,-3.827233474111451e-8,0.002541280815381751,3.247562338960235e-5,-3.805651702208651e-8,0.0025416799467947535,3.232966235413645e-5,-3.786445609457888e-8,0.002542144857740274,3.223562798311164e-5,-3.7737407372711096e-8,0.002542655579590631,3.221938662051105e-5,-3.7708565661377785e-8,0.0025431838362320446,3.229680174430522e-5,-3.779849423590047e-8,0.0025436960054889923,3.247013233511464e-5,-3.8010564296692125e-8,0.00254415790798978,3.272542643389036e-5,-3.8327620226833e-8,0.002544541182956549,3.303226997284184e-5,-3.871155421654684e-8,0.0025448301444755037,3.334704611861932e-5,-3.9107270584671315e-8,0.0025450273211040327,3.3620069672829226e-5,-3.9451574837501164e-8,0.002545155729501141,3.380568399136757e-5,-3.968592063249876e-8,0.002545256556630443,3.387319471601984e-5,-3.977037692107729e-8,0.0025453820443540687,3.3816009067509984e-5,-3.969547432241733e-8,0.002545584452323269,3.365650342624907e-5,-3.948871602576002e-8,0.0025459029162299583,3.344455147949948e-5,-3.9213016496428415e-8,0.0025463510522096334,3.324840420752361e-5,-3.895529090102889e-8,0.002546909232956193,3.3138246514345544e-5,-3.8805530645937213e-8,0.002547525817875957,3.31656565561402e-5,-3.883045961997576e-8,0.002548129745697608,3.334578366524815e-5,-3.9050513834874766e-8,0.002548651901131051,3.3650693689135876e-5,-3.9431034299941284e-8,0.00254904685669721,3.4018656743914485e-5,-3.989388291545174e-8,0.002549305056062235,3.4375770534290136e-5,-4.034493649891447e-8,0.002549450755241978,3.465939649203068e-5,-4.070401123079711e-8,0.0025495291586907494,3.4833241697630345e-5,-4.092420182378461e-8,0.002549590687379239,3.4890489219274215e-5,-4.099602575860678e-8,0.0025496789205144556,3.4848031855415884e-5,-4.0940251920067316e-8,0.0025498244612649898,3.473730209237217e-5,-4.079637327911076e-8,0.0025500436032672657,3.459585033605535e-5,-4.061196445682029e-8,0.002550339547154352,3.4461308211710806e-5,-4.0434988555481746e-8,0.0025507043433619027,3.4367523260307965e-5,-4.030880973480197e-8,0.0025511206731693597,3.4341897944161364e-5,-4.0268729945377805e-8,0.002551563424104876,3.4402972367080165e-5,-4.03388608138628e-8,0.002552001606617659,3.4557690980306746e-5,-4.0528610973922175e-8,0.002552401461273141,3.479848664498499e-5,-4.082892216673805e-8,0.0025527314827823774,3.510120673609544e-5,-4.120952912256527e-8,0.002552969364218686,3.542565410114826e-5,-4.161951137566323e-8,0.0025531095580215266,3.572058968524942e-5,-4.19935413975739e-8,0.002553168729760865,3.59339104478195e-5,-4.226480110017664e-8,0.0025531858573809097,3.602631744383978e-5,-4.238244913932361e-8,0.0025532150611217693,3.598419299693054e-5,-4.232817322961466e-8,0.002553312233386756,3.582648549097322e-5,-4.212517282076237e-8,0.0025535195183206613,3.560220174300033e-5,-4.1835212060668614e-8,0.002553852830502855,3.537869695525301e-5,-4.15439349344679e-8,0.0025542964378125308,3.5224255096316406e-5,-4.133880357556166e-8,0.002554806195557747,3.519005643611671e-5,-4.1286055750094206e-8,0.002555320571266334,3.5296537354939525e-5,-4.141303722830442e-8,0.0025557766128750385,3.552799805828805e-5,-4.170091750744843e-8,0.002556126465171574,3.583732608559857e-5,-4.209034923582469e-8,0.002556349360987087,3.615973932622834e-5,-4.249882289419115e-8,0.0025564551410904254,3.6431100822784126e-5,-4.284408179364047e-8,0.0025564785276809823,3.6604393384032696e-5,-4.306534222497807e-8,0.002556467160589559,3.6658984478097046e-5,-4.3135357610844236e-8,0.002556468510402671,3.660096821231846e-5,-4.306106582894111e-8,0.0025565200544311623,3.645675748916501e-5,-4.28755593884766e-8,0.0025566445046864778,3.626394236750845e-5,-4.262649174123844e-8,0.0025568493925952245,3.606285126280341e-5,-4.236530656389189e-8,0.002557129168848333,3.589047078361781e-5,-4.213942711868888e-8,0.0025574680949682657,3.5776750212926264e-5,-4.1987475893609535e-8,0.0025578429268030643,3.574244515459497e-5,-4.193647233080398e-8,0.002558225197975276,3.579750560221392e-5,-4.1999734310573656e-8,0.0025585835602312756,3.593934241195524e-5,-4.217460204810126e-8,0.002558887016647417,3.61509584570488e-5,-4.2439939751589254e-8,0.0025591098618594843,3.639984373749989e-5,-4.2754572922321514e-8,0.002559238497448476,3.663948624180955e-5,-4.305908526809104e-8,0.002559278835866122,3.6815737799850185e-5,-4.3283910146574906e-8,0.002559261046831353,3.68791601038681e-5,-4.336518833602966e-8,0.0025592372774527606,3.680125222475687e-5,-4.3265665007869605e-8,0.0025592697003744484,3.658826729490232e-5,-4.299250430234186e-8,0.0025594113266689754,3.6284623802832374e-5,-4.260177686092147e-8,0.0025596874257284618,3.596177093402923e-5,-4.218437109225698e-8,0.0025600863540812774,3.569620677368294e-5,-4.183807532178788e-8,0.002560563687246403,3.554623400075656e-5,-4.1637989758230514e-8,0.002561056690233244,3.553661609585996e-5,-4.161684553067492e-8,0.0025615023865055877,3.565507989845713e-5,-4.176023644906828e-8,0.002561853048804872,3.585927599621287e-5,-4.20151041647804e-8,0.0025620856129585094,3.6090108860365954e-5,-4.230643641429664e-8,0.0025622040446008454,3.628699041834416e-5,-4.255663518033421e-8,0.0025622353918832905,3.6401300490328786e-5,-4.270283147309331e-8,0.0025622213473997326,3.6405401558346106e-5,-4.2708678956345274e-8,0.0025622078408738705,3.6295813489391095e-5,-4.256872173084837e-8,0.0025622353848293975,3.609068615788058e-5,-4.230540259760305e-8,0.00256233232102081,3.582322550250386e-5,-4.1960772840867707e-8,0.002562511863801732,3.553353735483984e-5,-4.158605612885912e-8,0.0025627725248878294,3.526111693837438e-5,-4.123196242121757e-8,0.00256310070883618,3.503928727808233e-5,-4.0941482037820396e-8,0.0025634741471409566,3.4891828381175004e-5,-4.074551346356165e-8,0.002563865248603042,3.483125361276283e-5,-4.066063228427299e-8,0.002564244075042713,3.4857926898380974e-5,-4.068793102758481e-8,0.002564581202623444,3.495942454822687e-5,-4.0812119542659516e-8,0.00256485109943431,3.5110048036088305e-5,-4.100075191629571e-8,0.0025650367242128005,3.527118210779312e-5,-4.120451556732618e-8,0.002565135498337338,3.539413055019303e-5,-4.136076151439963e-8,0.0025651654120114266,3.5427525351978796e-5,-4.1403038721833427e-8,0.0025651680412939974,3.533045146974794e-5,-4.127809559426407e-8,0.0025652038004362098,3.508913423679075e-5,-4.096749224333056e-8,0.0025653363340437958,3.472992631684516e-5,-4.050439181559414e-8,0.0025656093621240807,3.431861032240273e-5,-3.997271395936973e-8,0.0025660270415399614,3.394124366569468e-5,-3.9482630402027894e-8,0.0025665499166005316,3.367374522340637e-5,-3.913169321930131e-8,0.0025671094737676993,3.3555941288687166e-5,-3.8971649823626466e-8,0.0025676326398133926,3.358238507761676e-5,-3.899658257921173e-8,0.00256806353887396,3.3710715096302974e-5,-3.915332696323073e-8,0.0025683748955028416,3.387946611070678e-5,-3.936392740831083e-8,0.0025685688159335627,3.402630843529469e-5,-3.954873741392243e-8,0.0025686706264498697,3.410151913115822e-5,-3.96436201055269e-8,0.002568719735740128,3.4075375284090386e-5,-3.9609586863852165e-8,0.0025687602388208127,3.3940249039981586e-5,-3.9435794394587893e-8,0.002568832735617296,3.370870760914346e-5,-3.913743671001868e-8,0.0025689681542897694,3.340879250968684e-5,-3.874991257803349e-8,0.0025691840551694215,3.307763210742136e-5,-3.832068947589197e-8,0.002569483538443005,3.275462578485857e-5,-3.790047634512565e-8,0.00256985645494049,3.2475309573827486e-5,-3.753521316052912e-8,0.0025702822795653883,3.226668899010827e-5,-3.725997236190257e-8,0.002570733820216625,3.214437650152126e-5,-3.70952464417701e-8,0.002571181033117111,3.211133565934368e-5,-3.70453424363933e-8,0.0025715946013054125,3.215772517602418e-5,-3.7098167201791944e-8,0.002571949318347555,3.226144137496881e-5,-3.722583343084536e-8,0.002572227570996682,3.2389277195387017e-5,-3.738598474604562e-8,0.0025724233208959243,3.249913626791757e-5,-3.752447594345222e-8,0.002572546572517723,3.2544481248383096e-5,-3.7581027423136185e-8,0.002572627105263867,3.248253008845186e-5,-3.7499865346558056e-8,0.0025727146254667485,3.2286766565557764e-5,-3.7246045798024494e-8,0.0025728713746888203,3.196144702345607e-5,-3.6824362906102526e-8,0.0025731546573224077,3.1551122395760685e-5,-3.6291732875808416e-8,0.0025735930611439093,3.113531128318894e-5,-3.5750349486020505e-8,0.0025741686669498156,3.080383281342957e-5,-3.5315932671875985e-8,0.002574818793527538,3.0622158898999846e-5,-3.5073179334983326e-8,0.002575459250901792,3.0606384083367444e-5,-3.5043561582390667e-8,0.0025760157713347175,3.072183306088944e-5,-3.518340880366333e-8,0.0025764462366678763,3.0902486165110045e-5,-3.5408643786040035e-8,0.0025767458975593516,3.107681621716422e-5,-3.562773879707096e-8,0.0025769394739584782,3.118739906047621e-5,-3.5766760816977004e-8,0.0025770682803444704,3.12001551469743e-5,-3.5781267605868635e-8,0.0025771782767451306,3.110525759781823e-5,-3.565767914468704e-8,0.0025773113662062915,3.091339865537416e-5,-3.540879179965687e-8,0.0025774999609862632,3.065026064735654e-5,-3.5066958787603745e-8,0.0025777640357551542,3.035060945700293e-5,-3.4676643389330934e-8,0.002578110043284982,3.0052507451921462e-5,-3.428694627394564e-8,0.002578531397055513,2.9791926281541815e-5,-3.3944523195161236e-8,0.0025790103290381297,2.9598057935518227e-5,-3.368738209113566e-8,0.0025795209096909134,2.948965519446499e-5,-3.354007538112134e-8,0.002580032896739608,2.94727630782897e-5,-3.351077440578792e-8,0.0025805159234916397,2.954000878094914e-5,-3.3590389005577315e-8,0.002580943592558336,2.9671294779383406e-5,-3.375345201478358e-8,0.0025812972568394475,2.983567962877638e-5,-3.3960441519085414e-8,0.002581569412426488,2.9994385199715056e-5,-3.416148972868799e-8,0.002581766674986788,3.0105076417356167e-5,-3.430175679860849e-8,0.0025819120683374308,3.0127919994288804e-5,-3.4329229444587715e-8,0.002582045519993052,3.0034048227300084e-5,-3.420579656011638e-8,0.0025822203949664234,2.9816100977510195e-5,-3.392112802616561e-8,0.002582493526172687,2.9498181435378302e-5,-3.3505790908997055e-8,0.0025829078467866826,2.913934269067586e-5,-3.3035889417979293e-8,0.002583471922975573,2.8823154006253027e-5,-3.261957918279001e-8,0.0025841475821974037,2.8630944686295138e-5,-3.236241863773583e-8,0.0025848575009842015,2.860875020177161e-5,-3.23245690882075e-8,0.0025855132051104206,2.8747336224273945e-5,-3.249487409873808e-8,0.0025860483870083825,2.898840096044825e-5,-3.279872884323055e-8,0.0025864386289602428,2.925160284354101e-5,-3.31328354281292e-8,0.0025867003344974215,2.9464434140691195e-5,-3.340364643567008e-8,0.0025868758817611977,2.9580498213838604e-5,-3.355089908895895e-8,0.0025870163518221215,2.958356532888121e-5,-3.3552916689574256e-8,0.00258716874146591,2.948254760991543e-5,-3.342033057128494e-8,0.0025873690254704456,2.930331685653275e-5,-3.31857940505852e-8,0.0025876396104315717,2.908092911135896e-5,-3.289416461028243e-8,0.0025879892061104566,2.88534249664018e-5,-3.259456856612757e-8,0.0025884138089266786,2.8656989162023898e-5,-3.2334059412977954e-8,0.002588898359017111,2.8521979692271508e-5,-3.215231454490244e-8,0.002589419062272378,2.8469586189780088e-5,-3.2077164254932806e-8,0.002589946473323683,2.8509159090307877e-5,-3.212107523599057e-8,0.002590449393316276,2.8636563050092073e-5,-3.227904091415366e-8,0.002590899361197364,2.8834057391279875e-5,-3.2528461699677137e-8,0.00259127520629838,2.9071975778584452e-5,-3.2831291645010475e-8,0.0025915670649930126,2.9312176621478835e-5,-3.313838678718475e-8,0.0025917793326626975,2.951309804139549e-5,-3.33958896106978e-8,0.0025919320721802777,2.96361235160836e-5,-3.355336698452127e-8,0.002592060388232209,2.9652876016196784e-5,-3.357329612354791e-8,0.0025922110409532205,2.9552949250428954e-5,-3.344128213388367e-8,0.0025924352611730508,2.9350891816452204e-5,-3.3175402893513874e-8,0.0025927770732672843,2.908978789339379e-5,-3.2831114881942346e-8,0.0025932582302109035,2.8837351096213648e-5,-3.2496316807290324e-8,0.0025938644424488276,2.8670845449783314e-5,-3.2271752176790486e-8,0.00259454130569729,2.8651787572331885e-5,-3.223802204062918e-8,0.0025952073153012044,2.880006435961552e-5,-3.242178048536644e-8,0.0025957820237779284,2.9082752023308125e-5,-3.2781025144444316e-8,0.002596215451355888,2.942669394122801e-5,-3.3221292787055197e-8,0.0025965024447693404,2.9748129367640864e-5,-3.3634051131772567e-8,0.0025966765282158253,2.998185229157122e-5,-3.3934507817174133e-8,0.002596791242167228,3.009622528063916e-5,-3.408109516064842e-8,0.0025969011572768027,3.0092558261656323e-5,-3.4074756512656124e-8,0.002597049688176753,2.9995632087270322e-5,-3.3946851949197073e-8,0.0025972643186138377,2.9842572236855614e-5,-3.3744958806311066e-8,0.002597556681278304,2.9673938276303314e-5,-3.3521470462183287e-8,0.002597924726275709,2.9527819877394803e-5,-3.332595043754231e-8,0.0025983552864050196,2.9436122490796813e-5,-3.320019805897644e-8,0.002598826556628034,2.9421965307062316e-5,-3.3174709416024415e-8,0.0025993106853013,2.949756098639174e-5,-3.32658027069346e-8,0.002599776848353735,2.9662467082486734e-5,-3.347330412600232e-8,0.0026001951252648077,2.99025861685836e-5,-3.377926073172787e-8,0.0026005411717937273,3.019067108816419e-5,-3.414860105393843e-8,0.002600801115884702,3.048904747005782e-5,-3.453261736501532e-8,0.0026009756449572323,3.075479964565841e-5,-3.487558988314453e-8,0.0026010821201373643,3.094704699047445e-5,-3.512412559281178e-8,0.0026011537374556978,3.103526998712179e-5,-3.523794137373505e-8,0.0026012352359606815,3.100711111394474e-5,-3.52001023446636e-8,0.0026013752640351045,3.08739211784446e-5,-3.5024463414013454e-8,0.0026016160874248713,3.0672358090410115e-5,-3.475804093991398e-8,0.0026019820559800674,3.0460335902351476e-5,-3.447598865451195e-8,0.0026024694362678106,3.0306029731080202e-5,-3.4267389520307465e-8,0.0026030416290290835,3.0270338541856285e-5,-3.421233572704718e-8,0.0026036342474958208,3.0386657894908002e-5,-3.435533680675956e-8,0.0026041720030882468,3.064594194570206e-5,-3.4685549028801975e-8,0.0026045930310347977,3.09961293659131e-5,-3.513578419828963e-8,0.0026048698621258057,3.1359222083486464e-5,-3.560466452625087e-8,0.002605016277847952,3.165875436058266e-5,-3.5992435719287957e-8,0.0026050775582436726,3.1843809880593544e-5,-3.623231983185307e-8,0.0026051114117463955,3.1899280024474e-5,-3.630395313793583e-8,0.0026051700508598736,3.184180085895025e-5,-3.622821835659225e-8,0.0026052897100294578,3.1707923332180516e-5,-3.605202198717156e-8,0.0026054879335475844,3.154166996092474e-5,-3.5832271992857454e-8,0.0026057657097087847,3.138536625159791e-5,-3.5624031184444675e-8,0.0026061113393798714,3.1274330301516524e-5,-3.5473569113068227e-8,0.0026065041725679677,3.123426843754492e-5,-3.5414846395313414e-8,0.0026069176827509784,3.127995084377525e-5,-3.54676479866181e-8,0.0026073221793504135,3.141424395457776e-5,-3.563622226078849e-8,0.002607687760832499,3.162725534231478e-5,-3.590812143263662e-8,0.002607988052610515,3.189600175406857e-5,-3.6253749808592313e-8,0.0026082048747776295,3.218555030603266e-5,-3.662781876104157e-8,0.0026083332526672066,3.2452725750126513e-5,-3.697411627683993e-8,0.0026083853531278017,3.265297934002162e-5,-3.72343878712858e-8,0.0026083914259650088,3.2749867670578894e-5,-3.736065308576354e-8,0.002608396133617845,3.272507890931113e-5,-3.732831038939484e-8,0.0026084499787289036,3.258582024132688e-5,-3.714589715717855e-8,0.0026085974212649975,3.236651424287259e-5,-3.6857515677651e-8,0.0026088647679620098,3.2123260707560836e-5,-3.65358635683691e-8,0.002609251366434725,3.1921661831404596e-5,-3.6266559361749115e-8,0.0026097270315835943,3.182058662536569e-5,-3.612701970627575e-8,0.002610237284691165,3.185588171012813e-5,-3.6165054551592994e-8,0.002610716126815699,3.202876234196642e-5,-3.6383392719986345e-8,0.0026111037028992033,3.23033372673764e-5,-3.6736088564341154e-8,0.0026113636304113436,3.261570097552551e-5,-3.714014721843922e-8,0.002611493434829786,3.2892780986458314e-5,-3.750008482171149e-8,0.002611523495367077,3.307418573417459e-5,-3.7736560791061143E-08,0.002611505142783382,3.312826382278772e-5,-3.780750968567028e-8,0.002611493763715752,3.3056708359165294e-5,-3.771431792722278e-8,0.0026115341933477952,3.2888214172239555e-5,-3.749370515848177e-8,0.0026116528511147953,3.266635873779777e-5,-3.7202054725746606e-8,0.0026118568135878677,3.2437504850753895e-5,-3.6899719726700316e-8,0.0026121372770168093,3.22421675305727e-5,-3.663975855845446e-8,0.0026124744813415092,3.2110441667230555e-5,-3.646188211570326e-8,0.002612842227916604,3.206036322123708e-5,-3.639018811094762e-8,0.00261321139785924,3.2097696128144984e-5,-3.64327692480781e-8,0.00261355274464152,3.2216066114155835e-5,-3.658181139714531e-8,0.0026138396427348816,3.2397063044748426e-5,-3.681367790345908e-8,0.0026140514872013475,3.261067171343822e-5,-3.708942654441659e-8,0.0026141780311365196,3.2817050683532635e-5,-3.7357080590710184e-8,0.002614224114800926,3.297101014117252e-5,-3.7557436147006555e-8,0.002614213119889088,3.303013696291152e-5,-3.7634673802280204e-8,0.002614186549965068,3.296599359632987e-5,-3.755103806085695e-8,0.0026141973753741167,3.277534783937561e-5,-3.7301599143301795e-8,0.002614297046902401,3.248635183237581e-5,-3.69224435741917e-8,0.0026145197475576695,3.215508644569542e-5,-3.648630993783964e-8,0.002614870090159904,3.185171140863245e-5,-3.608467312200419e-8,0.0026153197674543857,3.164059402548646e-5,-3.5801927989370486e-8,0.0026158147703580206,3.156177686629293e-5,-3.569118447274441e-8,0.0026162903077401106,3.1620210993565046e-5,-3.5760006489734524e-8,0.0026166880991987354,3.1785560398102544e-5,-3.5969814749259693e-8,0.002616970841721617,3.200160523740788e-5,-3.624783231824479e-8,0.002617130261397801,3.220181753315225e-5,-3.65072435138508e-8,0.0026171871606737534,3.232655585316976e-5,-3.6669675925902054e-8,0.00261718397046602,3.233719347395405e-5,-3.6683842036219965e-8,0.0026171724016019787,3.222347506708292e-5,-3.6535405177033614e-8,0.0026172002283405987,3.200264024737339e-5,-3.624607593524087e-8,0.0026173011810684,3.171173130676567e-5,-3.586373455846947e-8,0.0026174902392406083,3.139662825485608e-5,-3.544818102047367e-8,0.0026177642440258567,3.110164755113335e-5,-3.5057518398642445e-8,0.0026181060091383474,3.086218416322592e-5,-3.4738433135395185e-8,0.0026184896650506663,3.070099873181416e-5,-3.452121062024481e-8,0.0026188855768160607,3.062736487635263e-5,-3.441851050195791e-8,0.0026192641644238587,3.063776642104189e-5,-3.44262138034998e-8,0.0026195987827379364,3.071705603650061e-5,-3.452490184616867e-8,0.0026198682621240295,3.083960982102611e-5,-3.4681327174304134e-8,0.0026200597799300902,3.0970713580179304e-5,-3.485016751422272e-8,0.0026201724252346513,3.106906901777973e-5,-3.497724556731821e-8,0.002620221032692184,3.1091763777759243e-5,-3.500601824118333e-8,0.0026202386178564006,3.10028288611161e-5,-3.4888839501679675e-8,0.0026202745150329704,3.0784947027866455e-5,-3.4602410900141006e-8,0.0026203852922867623,3.0450819216758257e-5,-3.416279062923851e-8,0.002620618265425924,3.0047622079189514e-5,-3.363132109745287e-8,0.002620992870319827,2.9648323815135033e-5,-3.31033303947174e-8,0.0026214894619416536,2.932979763141325e-5,-3.267956343422445e-8,0.0026220531242507274,2.9146566799369495e-5,-3.2431878766493014e-8,0.002622611657445149,2.9112958080091928e-5,-3.237984681690709e-8,0.0026230987533740094,2.9201352737337322e-5,-3.248826516711856e-8,0.0026234720422993033,2.935474709537481e-5,-3.268331002587069e-8,0.002623720696604966,2.950580934218716e-5,-3.28772184813543e-8,0.002623863141320352,2.9594733190630928e-5,-3.2991532941629956e-8,0.002623938403472255,2.9581523567624585e-5,-3.2973239176112444e-8,0.0026239948751797743,2.945153944445875e-5,-3.280223748832211e-8,0.002624079352158989,2.9214975075539966e-5,-3.249095709508292e-8,0.0026242282334253994,2.8901697565596798e-5,-3.207786296841002e-8,0.0026244620668671175,2.855315053807396e-5,-3.161700102240202e-8,0.0026247839524003213,2.821331655109691e-5,-3.116615430893701e-8,0.0026251814438661785,2.7920728883389294e-5,-3.077624804492969e-8,0.002625630821426735,2.770290261143587e-5,-3.048387523980967e-8,0.0026261023194173497,2.7573621615054672e-5,-3.030759911853844e-8,0.0026265650867071107,2.753272069170523e-5,-3.024760371638935e-8,0.0026269911754542366,2.7567495629662442e-5,-3.0287542037181364e-8,0.0026273585031503107,2.7654808956776647e-5,-3.0397305793839284e-8,0.0026276531846827346,2.776337289842733e-5,-3.0535989704684127e-8,0.0026278717322375995,2.785627661607388e-5,-3.0655133830369624e-8,0.0026280234298139303,2.7894361322732897e-5,-3.0703083939648824e-8,0.0026281325803872136,2.7841478039741167e-5,-3.063189326845691e-8,0.0026282392000712505,2.7672557297109677e-5,-3.040802070948686e-8,0.0026283955437060506,2.7384085700415085e-5,-3.002625965469175e-8,0.00262865565196701,2.700371371201096e-5,-2.9522515841626875e-8,0.002629057605315128,2.6592301817640855e-5,-2.897657699704715e-8,0.0026296042239974493,2.623136467768682e-5,-2.8495630917078668e-8,0.0026302538309996223,2.599585843503772e-5,-2.8178505464655922e-8,0.002630930614107705,2.5924188462011436e-5,-2.807623809106079e-8,0.0026315519205043305,2.6002942441934412e-5,-2.8171931342658712e-8,0.002632057542513618,2.6175113742488016e-5,-2.8391396121084223e-8,0.0026324258329257447,2.6364726212698507e-5,-2.8635308308118833e-8,0.002632672462723894,2.6502714775448774e-5,-2.881304110057633e-8,0.0026328380412312087,2.6543357889184606e-5,-2.8864178132588297e-8,0.0026329731241864014,2.6469411774491017e-5,-2.8765333495100423e-8,0.0026331258609140727,2.6289281768524357e-5,-2.852665947748336e-8,0.0026333338989213834,2.6030282261764095e-5,-2.8183285436663457e-8,0.002633620171689503,2.573080090149753e-5,-2.7785262712895203e-8,0.002633991642655656,2.5432731091922993e-5,-2.7387706234444074e-8,0.0026344403222787766,2.517473880061446e-5,-2.7041855038120544e-8,0.002634946113457011,2.498684705051351e-5,-2.6787753182580472e-8,0.0026354809501950237,2.4886802821856877e-5,-2.6649271729928865e-8,0.0026360135612485953,2.487845151655501e-5,-2.66318567861711e-8,0.0026365141657436557,2.4952076373098923e-5,-2.672296922722169e-8,0.002636958487571637,2.508635806998142e-5,-2.6894714182866534e-8,0.002637330770592852,2.5251345857424093e-5,-2.7107782135658014e-8,0.0026376258574601534,2.541191401004594e-5,-2.731596108184508e-8,0.002637850566159729,2.5531539580490765e-5,-2.747102088376633e-8,0.002638024527826738,2.557660264320669e-5,-2.7528304916922454e-8,0.0026381802741849004,2.552172015255805e-5,-2.7453780860784707e-8,0.0026383615500640014,2.535654692073106e-5,-2.7233147342018143e-8,0.0026386179885873363,2.5093413410281484e-5,-2.6882116638732477e-8,0.002638994289794082,2.4773009859853065e-5,-2.6454097522886618e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json new file mode 100644 index 000000000..270577e9a --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_19.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":19000,"numberOfSamples":1000,"samples":[0.00263951402096563,2.446275040491078e-5,-2.6038117688221015e-8,0.0026401631724560673,2.4241976200195275e-5,-2.5739261712150362e-8,0.002640884349598046,2.417407411008679e-5,-2.5641764129475454e-8,0.0026415912918163185,2.4277459627606698e-5,-2.577057311285661e-8,0.0026422007751247287,2.4514250198517228e-5,-2.6076268743377622e-8,0.002642664329828072,2.4806135401016956e-5,-2.6455914313675208e-8,0.002642981408758501,2.5067420523334124e-5,-2.6796599674782414e-8,0.0026431902581784475,2.523476738670862e-5,-2.701462116287926e-8,0.0026433473077564114,2.5280434293348607e-5,-2.707291191164421e-8,0.0026435080278592402,2.5209814035850336e-5,-2.6977864625794997e-8,0.0026437153058168224,2.5051197769627946e-5,-2.6766036632474325e-8,0.002643995008250455,2.4844553414124373e-5,-2.6489610125027892e-8,0.002644356096346505,2.4632482174508258e-5,-2.6204648569688263e-8,0.002644792866933108,2.4453878979516923e-5,-2.5962750928942762e-8,0.002645287958825506,2.433962413644026e-5,-2.580522022561437e-8,0.0026458157625529125,2.4309628109960647e-5,-2.5758941317575327e-8,0.00264634623063722,2.4371028134717308e-5,-2.5833817493889664e-8,0.0026468490048528843,2.4517626043978552e-5,-2.6021955503015233e-8,0.002647297629221693,2.473075415894809e-5,-2.629884122598041e-8,0.002647673419069512,2.498168300232041e-5,-2.6626587976528904e-8,0.0026479684516871804,2.5235364563765828e-5,-2.6958906132239313e-8,0.0026481873145099825,2.54550480044092e-5,-2.724714977923732e-8,0.0026483474854581976,2.5607329200806667e-5,-2.744689859121178e-8,0.002648478321749667,2.5667306663201197e-5,-2.7524725198145248e-8,0.002648618565417001,2.562364143904652e-5,-2.746495256788262e-8,0.002648811933829168,2.548331398325493e-5,-2.7276137128600436e-8,0.002649099993304903,2.5275225022656478e-5,-2.6996080239347117e-8,0.0026495118344468096,2.5050470037239995e-5,-2.6692385337925312e-8,0.0026500516782408433,2.4875937156110125e-5,-2.6454031394300517e-8,0.0026506887377273874,2.481830242231187e-5,-2.637005584696817e-8,0.0026513571570154788,2.4919878684211346e-5,-2.649732055333089e-8,0.0026519727576500727,2.5176293414199947e-5,-2.6830682803784936e-8,0.00265246347865712,2.553137242424813e-5,-2.7296067819030845e-8,0.0026527977885291948,2.5897092428559638e-5,-2.777691417282513e-8,0.0026529937872264786,2.6188736914085377e-5,-2.8160834927125474e-8,0.0026531053400488365,2.6354405340763377e-5,-2.8378742435525895e-8,0.002653197143730883,2.6384803835271885e-5,-2.8417798104530085e-8,0.0026533237489522734,2.630496073324375e-5,-2.8310488620170042e-8,0.002653519415667135,2.61584941720321e-5,-2.8113966146280626e-8,0.0026537972075638358,2.5993391727317396e-5,-2.7891437296909137e-8,0.0026541528220946162,2.5852711656499893e-5,-2.7699980495729533e-8,0.002654569583467504,2.576980469437125e-5,-2.758418502662082e-8,0.002655022888269817,2.5766321279371505e-5,-2.7573341150534074e-8,0.0026554838903719694,2.5851487346184455e-5,-2.7680269328933923e-8,0.0026559228543872925,2.6021962722230312e-5,-2.7900982114737346e-8,0.0026563125592436493,2.6262270927647677e-5,-2.8215210320601784e-8,0.0026566318822620954,2.6546159408893735e-5,-2.8588246183577963e-8,0.0026568693325829773,2.683937297731775e-5,-2.8974675169938895e-8,0.00265702588046726,2.7104047119859548e-5,-2.9324209301872344e-8,0.0026571162804157502,2.730439944298196e-5,-2.9589182861804454e-8,0.002657168287578267,2.741298625135473e-5,-2.973278593466467e-8,0.002657219506910407,2.7416528074622072e-5,-2.9736788701860016e-8,0.002657312004454739,2.7320200846281446e-5,-2.9607346163960382e-8,0.0026574851280428084,2.714945498836805e-5,-2.9377627673142143e-8,0.0026577671410715864,2.6948550466389847e-5,-2.9106116594645743e-8,0.0026581666337407396,2.677480114515534e-5,-2.8869130261933987e-8,0.002658665644369953,2.668759153112913e-5,-2.874622335182529e-8,0.0026592177642860556,2.673249924766369e-5,-2.8798893801029236e-8,0.0026597551845333914,2.6923863313585407e-5,-2.9047096880029876e-8,0.0026602066278280773,2.7233239467283458e-5,-2.945360447347533e-8,0.0026605218701161496,2.759279450344971e-5,-2.992839322576825e-8,0.002660691339317348,2.791687831695263e-5,-3.0357403494703774e-8,0.0026607489650131524,2.813307297178182e-5,-3.064397603742436e-8,0.002660756316410744,2.820629128228656e-5,-3.0740975280116455e-8,0.00266077813131762,2.814444053347429e-5,-3.0658329382785926e-8,0.0026608626181401033,2.7987094517445165e-5,-3.044802835863527e-8,0.002661033282093157,2.7787369099427664e-5,-3.018018911351549e-8,0.002661290670229049,2.759646253123286e-5,-2.992268275086257e-8,0.002661618847227499,2.745466279524221e-5,-2.9729256636510297e-8,0.002661992324996788,2.7388048564438633e-5,-2.9635075082451442e-8,0.0026623814914065623,2.740846380825369e-5,-2.9656508743774662e-8,0.0026627564064791672,2.751469021981976e-5,-2.9792508338229933e-8,0.002663089657287003,2.769378081550649e-5,-3.002626101217006e-8,0.0026633589993581537,2.7922422231694105e-5,-3.032697532756177e-8,0.0026635502049094915,2.816877186333765e-5,-3.065235507227498e-8,0.002663660058606214,2.8395509491539593e-5,-3.095269273591784e-8,0.0026636988226479592,2.8564683516255168e-5,-3.1177317725720975e-8,0.0026636910185861354,2.8644267020628355e-5,-3.128328931824663e-8,0.002663673368164203,2.8615444636392442e-5,-3.124507257083623e-8,0.0026636892999802016,2.847882357726595e-5,-3.106284172552677e-8,0.0026637804953454328,2.8257367087954442e-5,-3.076651119240239e-8,0.0026639771539304236,2.7994347029093748e-5,-3.041320967031577e-8,0.002664289390944928,2.7745919962196963e-5,-3.0077603120369135e-8,0.0026647021583839263,2.7569343911087362e-5,-2.983632036881539e-8,0.002665175574611234,2.7508966541401323e-5,-2.9749234062979572e-8,0.002665651753105894,2.758308150002246e-5,-2.9841711448467954e-8,0.0026660679387967637,2.777557445101302e-5,-3.009314804079612e-8,0.002666373652606828,2.8036422130212083e-5,-3.043735504000154e-8,0.0026665467921051737,2.8293485634668975e-5,-3.0778184924067085e-8,0.002666601852555459,2.8473726055012245e-5,-3.1017907545195027e-8,0.0026665852853927806,2.8526301970881325e-5,-3.1088172804032435e-8,0.002666559122253182,2.843738526897907e-5,-3.0969895282801916e-8,0.0026665805053176046,2.823043592843639e-5,-3.069370740064932e-8,0.0026666863526158286,2.795380188020402e-5,-3.032352927191644e-8,0.002666888030781808,2.7663438827002143e-5,-2.993366290807507e-8,0.0026671748130789254,2.7408493516036183e-5,-2.958966680282094e-8,0.0026675216046985984,2.722333376093842e-5,-2.933771824724552e-8,0.0026678967932506742,2.7125467417972392e-5,-2.920171724683057e-8,0.002668268174343812,2.7116928055334394e-5,-2.918496557666993e-8,0.0026686067536675503,2.718687142750966e-5,-2.9273488870256556e-8,0.002668889153521843,2.7314125916714938e-5,-2.9439367095546293e-8,0.0026690995240611494,2.7469415229723713e-5,-2.9643692403226327e-8,0.002669231588881734,2.761768401200625e-5,-2.983969287822529e-8,0.0026692909045567758,2.772137604439484e-5,-2.9977123836592665e-8,0.002669296689582548,2.7745483589062654e-5,-3.0009007656812204e-8,0.0026692818814056923,2.76645400450632e-5,-2.9900964988722216e-8,0.002669289786419154,2.7470487600255673e-5,-2.9641735210395685e-8,0.0026693663135547675,2.7178855682651955e-5,-2.9251483856010147e-8,0.002669548600717101,2.6829814064937723e-5,-2.8783321052296953e-8,0.002669853232704221,2.6481571864986507e-5,-2.8314646721668814e-8,0.0026702686612265127,2.6196540227162797e-5,-2.792883344868289e-8,0.0026707555410017745,2.6024208042934442e-5,-2.769243626155642e-8,0.0026712556999075863,2.5986573478360687e-5,-2.7635653186376986e-8,0.002671707089748267,2.6071129511972674e-5,-2.7742712797765785e-8,0.0026720600901569886,2.6233603318288687e-5,-2.795522462078366e-8,0.002672290443135009,2.640954156364561e-5,-2.818742186699068e-8,0.0026724052428170825,2.653145786869803e-5,-2.8349002218997386e-8,0.002672440220313686,2.6546752821712073e-5,-2.8369163632258638e-8,0.0026724489957256573,2.6431102842522592e-5,-2.8214673922745004e-8,0.002672487698917711,2.6193125149463324e-5,-2.789629736013679e-8,0.0026726001820109838,2.586916578069951e-5,-2.746199942230688e-8,0.002672808644915501,2.551090053887501e-5,-2.6980507296689357e-8,0.0026731118372536797,2.5170934360175597e-5,-2.6522128760281473e-8,0.0026734896589889912,2.4891330726868854e-5,-2.6143393330707435e-8,0.0026739109227287,2.4697549447807037e-5,-2.5878832880513e-8,0.0026743410670043246,2.4597486622909633e-5,-2.5739543146492245e-8,0.002674747998989801,2.458373190904632e-5,-2.5716071958711425e-8,0.0026751057440529678,2.463704675194214e-5,-2.57830039780471e-8,0.0026753964831346907,2.47297865751725e-5,-2.5903529531835557e-8,0.00267561183646005,2.4828867315808e-5,-2.6033429491443315e-8,0.0026757540793394046,2.489859900654912e-5,-2.6124877326598502e-8,0.00267583747024861,2.4904174485618595e-5,-2.6131104709850983e-8,0.0026758891320712635,2.4816671777239062e-5,-2.6013096260213478e-8,0.0026759481268225807,2.4619877273035702e-5,-2.5748745104085175e-8,0.002676060878740094,2.4317891637757816e-5,-2.534308690420903e-8,0.002676271641860672,2.3940547910458253e-5,-2.4835628594163594e-8,0.0026766089922976954,2.3542240639262514e-5,-2.429887410844018e-8,0.002677072911743146,2.3190810939116947e-5,-2.3823549830955104e-8,0.002677629384711697,2.2947801471423495e-5,-2.349226195279842e-8,0.0026782174373540597,2.284747447523584e-5,-2.3351420427147178e-8,0.002678767190753552,2.2884450527373708e-5,-2.3394574904936935e-8,0.002679221246387928,2.3015772470718473e-5,-2.3564955982734086e-8,0.0026795504594499405,2.31755695605357e-5,-2.3774871289120044e-8,0.002679759170591716,2.3295137206169125e-5,-2.393243272963582e-8,0.0026798803135628544,2.3320917185443094e-5,-2.3965602905995443e-8,0.0026799640145154023,2.322577558520088e-5,-2.3837397612610006e-8,0.0026800639314745046,2.3012215146842673e-5,-2.3550384713622862E-08,0.0026802248899573116,2.2708392050599457e-5,-2.3141585163499967e-8,0.0026804742934984,2.235906805897442e-5,-2.2670554977751216e-8,0.0026808185968568944,2.2014267511493717e-5,-2.220428842578894e-8,0.0026812448336239396,2.171854636264718e-5,-2.180280461715125e-8,0.0026817259374465234,2.150323880680172e-5,-2.1508611094251824e-8,0.00268222781652349,2.1382809836528223e-5,-2.1341628366433782e-8,0.0026827161726339327,2.1355034347562173e-5,-2.1299284836488415e-8,0.0026831617535715744,2.140378470911418e-5,-2.1360196730420277e-8,0.0026835436457758872,2.1502965966267144e-5,-2.1489465414133864e-8,0.0026838509543692596,2.16204854567272e-5,-2.1644050147128995e-8,0.002684083542702058,2.1721810919128004e-5,-2.1777567204648777e-8,0.0026842524063363047,2.1773296218550722e-5,-2.184473901283113e-8,0.0026843798793523676,2.174584592951199e-5,-2.1806283785570994e-8,0.002684499254751002,2.1619604754520625e-5,-2.1635208600026604e-8,0.002684652615539522,2.1389936125771377e-5,-2.132488556836351e-8,0.0026848851553524585,2.1073684595338914e-5,-2.0897551736655894e-8,0.002685234761333537,2.071276203290809e-5,-2.040922349572789e-8,0.0026857179492677428,2.0370460882582813e-5,-1.9944823185549678e-8,0.002686317392056504,2.0116807827503108e-5,-1.9598553255649772e-8,0.002686979523907763,2.0004912349695077e-5,-1.9442129284992614e-8,0.0026876280837219843,2.0048512671163523e-5,-1.949455243073783e-8,0.0026881899249303247,2.0214024293583018e-5,-1.9711294931862544e-8,0.002688620249435145,2.043285656095454e-5,-2.000069039920413e-8,0.002688914623014258,2.0626936406510176e-5,-2.0258093448061607e-8,0.002689104448499188,2.073370425998305e-5,-2.0399378529749706e-8,0.0026892419298627126,2.0720641518941455e-5,-2.038044359813892e-8,0.00268938312888527,2.0587598019377475e-5,-2.0200427284762034e-8,0.002689574768650333,2.0360579482662567e-5,-1.989355990805515e-8,0.0026898465947728313,2.0081670543145843e-5,-1.9515867700560127e-8,0.0026902088053080623,1.9798500950558975e-5,-1.913120086648592e-8,0.002690653320029833,1.9555086732382298e-5,-1.8798959747669437e-8,0.0026911577108349486,1.9384918317815483e-5,-1.856468027518342e-8,0.0026916907283687213,1.9306783846534458e-5,-1.8454204375709315e-8,0.0026922183440946422,1.932346249716126e-5,-1.8471725008849565e-8,0.0026927093194704355,1.9422959535281348e-5,-1.8601349303398246e-8,0.002693139577075912,1.9581620030571056e-5,-1.8811304655394267e-8,0.0026934949979082095,1.9768275469618075e-5,-1.905959980051295e-8,0.0026937727037630865,1.9948579211282313e-5,-1.9299928293298172e-8,0.002693981227014739,2.008903816565814e-5,-1.9487102008012012e-8,0.0026941399761876384,2.0160743594175506e-5,-1.958202828436642e-8,0.002694278150304583,2.014308771745926e-5,-1.9556669135148625e-8,0.002694432839134833,2.0027814972522264e-5,-1.939951202924289e-8,0.0026946454407021474,1.9823465164879817e-5,-1.912164795226923e-8,0.002694955118743798,1.9559228013221924e-5,-1.876210188452582e-8,0.0026953885604227568,1.9285588555638527e-5,-1.8388822887488567e-8,0.002695947389646158,1.906784792733087e-5,-1.8090003030037158e-8,0.002696598361371597,1.8969529356223275e-5,-1.7951673808881418e-8,0.0026972747172651123,1.9028183067974308e-5,-1.8024976958726027e-8,0.002697894448259002,1.923482567582152e-5,-1.82982964892157e-8,0.0026983903263144058,1.953167385178543e-5,-1.8694084270395405e-8,0.0026987355972708806,1.9833273175935162e-5,-1.9097304148343785e-8,0.002698950451980689,2.005962260427181e-5,-1.9400090848296767e-8,0.0026990880859063043,2.016241265792062e-5,-1.9537100067242948e-8,0.0026992117922432905,2.013345355569334e-5,-1.949684506615443e-8,0.002699375647089422,1.999759245364751e-5,-1.9312213181089278e-8,0.002699614261285006,1.9798830819145078e-5,-1.9041939056218857e-8,0.0026999406340535597,1.9586801508834097e-5,-1.8752604336031518e-8,0.0027003488738597202,1.9406767550178475e-5,-1.850529554434705e-8,0.002700818970481651,1.9293437948365567e-5,-1.8347238284879605e-8,0.0027013220497049467,1.9267719508964687e-5,-1.8307237617048195e-8,0.002701825549465035,1.9335593552310834e-5,-1.839393020569358e-8,0.0027022980757690288,1.9488723621636194e-5,-1.8596431789749385e-8,0.002702713662607276,1.970654001153539e-5,-1.8887103092774177e-8,0.002703055157533248,1.9959543955443707e-5,-1.9226073522447195e-8,0.002703316448267429,2.0213520540267606e-5,-1.9567030088327615e-8,0.0027035033133196956,2.0434152409261692e-5,-1.986350378693203e-8,0.0027036329373279133,2.059147843487134e-5,-2.0074871352699753e-8,0.002703732317100221,2.0663912104588616e-5,-2.017172044859481e-8,0.002703835708462897,2.064176391337209e-5,-2.0140576017720335e-8,0.002703981045779454,2.0530222225002636e-5,-1.9987983238696774e-8,0.002704204955540068,2.0351562676141675e-5,-1.9743638549377247e-8,0.0027045358067139627,2.014570325430151e-5,-1.9461313750205066e-8,0.002704984805772576,1.996714707688034e-5,-1.92148397591981e-8,0.0027055368649279493,1.987574577050617e-5,-1.9085611169575944e-8,0.002706145685078051,1.9919963553539275e-5,-1.913981275734757e-8,0.0027067395839023285,2.0115935619329194e-5,-1.9399872245807953e-8,0.002707241964949466,2.0432627984345386e-5,-1.9824189275903496e-8,0.002707600561978769,2.079591363745013e-5,-2.031258854203578e-8,0.0027078094546453073,2.1114943868623784e-5,-2.0742078873478338e-8,0.0027079095029694275,2.1317626509160715e-5,-2.101494646065448e-8,0.002707967740739984,2.1374638784031844e-5,-2.1091231796414332e-8,0.0027080501916891273,2.1301291919555723e-5,-2.0991196408044287e-8,0.002708202805321296,2.1142645928582355e-5,-2.0775234408464792e-8,0.0027084452776870867,2.0954316120813476E-05,-2.0518098346501502e-8,0.002708774162575712,2.078764131629634e-5,-2.028905117718749e-8,0.002709169810830763,2.0681479161499233e-5,-2.014086685744763e-8,0.0027096034430987557,2.065925821172407e-5,-2.0105765910602988e-8,0.0027100428652535534,2.0729021182110605e-5,-2.0195268624788187e-8,0.0027104568599029245,2.088478077558925e-5,-2.0401806622108805e-8,0.0027108187654351296,2.1108546115977512e-5,-2.0701327617105837e-8,0.002711109496587725,2.1372986326076458e-5,-2.10568899223502e-8,0.002711319970232938,2.1644827851250796e-5,-2.142334211249965e-8,0.002711452708090201,2.1889050652350722e-5,-2.1753098561200446e-8,0.002711522206080725,2.207368852602839e-5,-2.2002679141313222e-8,0.002711553726110139,2.2174663760722812e-5,-2.2139227350930035e-8,0.0027115804817427185,2.2179989492678676E-05,-2.214615199321869e-8,0.0027116394229722046,2.2092790600064617e-5,-2.2027220749220564e-8,0.002711765902353902,2.1932661136871404e-5,-2.1808497541801675e-8,0.0027119875265561675,2.17349102139576e-5,-2.153749682666738e-8,0.0027123175594141167,2.154714321577371e-5,-2.1278725972971384e-8,0.002712748677090166,2.1422310197924048e-5,-2.1104340382649643e-8,0.0027132489457220156,2.1407462817094904e-5,-2.107881988743877e-8,0.002713763222707799,2.1528939153101463e-5,-2.12386510801654e-8,0.002714223539826301,2.17779711508261e-5,-2.1572526893751845e-8,0.0027145692235508168,2.210462782438041e-5,-2.201294395593925e-8,0.0027147705289971287,2.242831272043591e-5,-2.245045363896241e-8,0.002714842961370987,2.26651374401677e-5,-2.2770961975807826e-8,0.0027148417371246187,2.2759728481484883e-5,-2.2899019449501894e-8,0.0027148384646546696,2.270361220246182e-5,-2.2822761360270927e-8,0.002714894133814566,2.253147752919397e-5,-2.2588785865962968e-8,0.002715042481976411,2.230178058034443e-5,-2.227589996373742e-8,0.0027152877602880654,2.2075146022270574e-5,-2.196600255000497e-8,0.0027156119658795414,2.189977200438472e-5,-2.1724460810982776e-8,0.0027159847379479274,2.180547085498409e-5,-2.1592064109398672e-8,0.0027163717326484887,2.18037059038195e-5,-2.158495102003217e-8,0.0027167402462662167,2.189035707386248e-5,-2.169814943921391e-8,0.0027170626329077376,2.204902136902486e-5,-2.1909862774099005e-8,0.002717318577686348,2.225407880034124e-5,-2.2185536220454567e-8,0.002717496917322223,2.247368848952755e-5,-2.2481941172479003e-8,0.0027175971570509785,2.2673148098990517e-5,-2.2751819980273843e-8,0.002717630437619656,2.2818986025088118e-5,-2.2949521472554347e-8,0.002717619374232879,2.2883830547347417e-5,-2.3037639752791775e-8,0.0027175960863589687,2.2851508344780233e-5,-2.29939131948583e-8,0.002717598071460584,2.27213176952526e-5,-2.281699857396905e-8,0.0027176621709201596,2.2510260056520727e-5,-2.2529529271382513e-8,0.0027178174751903974,2.22521853070832e-5,-2.2177067543554316e-8,0.0027180784671276526,2.1993333213934358e-5,-2.1822217623532972e-8,0.0027184398641318065,2.178448760758116e-5,-2.153411268172913e-8,0.0027188745594770346,2.1670561409178468e-5,-2.137429317301222e-8,0.0027193360025531545,2.1679009178246315e-5,-2.1380826619141587e-8,0.002719766138446254,2.1809462677510583e-5,-2.1553961002315126e-8,0.00272010902935972,2.2028302823201387e-5,-2.184847600516649e-8,0.0027203278821346134,2.2272524858974438e-5,-2.2178797892063562e-8,0.0027204196799707763,2.24654419229855e-5,-2.2440404566424472e-8,0.002720419476537429,2.2541182151501676e-5,-2.2543308403420168e-8,0.002720389514355453,2.246792006086709e-5,-2.2443785172222848e-8,0.0027203968580779593,2.2257868624423312e-5,-2.2157995797522724e-8,0.0027204907531003454,2.1959156500183422e-5,-2.17509487518943e-8,0.0027206903780250197,2.1635680043467534e-5,-2.1309184877300774e-8,0.0027209858546815508,2.1346417556349277e-5,-2.0912787442917073e-8,0.002721347808163526,2.1132433058736414e-5,-2.06177932502233e-8,0.002721738732659261,2.101302770424033e-5,-2.045091160605777e-8,0.002722121842089695,2.0988064107378192e-5,-2.0412526919188236e-8,0.0027224663072612032,2.104272221321373e-5,-2.0482980964473065e-8,0.0027227497312666536,2.1152219247249398e-5,-2.0628864697851955e-8,0.0027229592187699085,2.1285646420264224e-5,-2.0808205423364215e-8,0.002723092024279769,2.140915534170127e-5,-2.0974851448080727e-8,0.002723156140984944,2.14891410191427e-5,-2.108288393508341e-8,0.002723170606461795,2.149605797679514e-5,-2.1091870780846034e-8,0.0027231647986974373,2.140913982897247e-5,-2.0973305086363463e-8,0.002723175747615389,2.122154123906254e-5,-2.0717585989345948e-8,0.0027232427667478894,2.094452464224403e-5,-2.0339705819586754e-8,0.0027233996145755853,2.0608713479640643e-5,-1.9880992713257535e-8,0.002723665721382843,2.026060892275378e-5,-1.9404470170278227e-8,0.0027240391567136266,1.9953854594028393e-5,-1.898310231028625e-8,0.002724494146855511,1.9736789731948312e-5,-1.8682948875842208e-8,0.002724984781134481,1.9639562245665583e-5,-1.8545605329381536e-8,0.002725454640230336,1.9664591180140306e-5,-1.8575060281540082e-8,0.0027258502841296267,1.978346436416098e-5,-1.8733227690675876e-8,0.0027261353236396123,1.9941877016394326e-5,-1.894645849238284e-8,0.002726301248658682,2.007230249813052e-5,-1.912271463933041e-8,0.0027263713289722514,2.011187104949174e-5,-1.9175991154117115e-8,0.002726395138448426,2.002057957804487e-5,-1.905127428909273e-8,0.002726434196991114,1.9793401183908815e-5,-1.8741182852925098e-8,0.0027265433420372793,1.946100805656228e-5,-1.828705235095383e-8,0.0027267551469351914,1.9078518607560066e-5,-1.7763682989189432e-8,0.002727073366580046,1.870747687105405e-5,-1.7254861286109985e-8,0.0027274765293817524,1.8398952985918913e-5,-1.683037011094019e-8,0.002727927993060576,1.818353027833995e-5,-1.6532295654523488e-8,0.0027283871266923043,1.8069347217504134e-5,-1.637222675764901e-8,0.0027288178204516824,1.804577514014172e-5,-1.633611041703065e-8,0.0027291931918580247,1.8089300870504294e-5,-1.6392157254153952e-8,0.0027294972768002954,1.816913014448269e-5,-1.649844892067187e-8,0.0027297251046408027,1.8251552466542002e-5,-1.660892918346911e-8,0.0027298822811575333,1.830324285422369e-5,-1.6677976929709144e-8,0.0027299846109979653,1.8294199006395545e-5,-1.6664471571957215e-8,0.0027300576392803658,1.8201084382144078e-5,-1.6536379482566312e-8,0.002730135367558795,1.801142871411346e-5,-1.6276481194654895e-8,0.0027302569950561194,1.772835840690819e-5,-1.5888815400112085e-8,0.002730460675000141,1.7374367034465673e-5,-1.540383280991605e-8,0.002730774317388617,1.6991538671805468e-5,-1.487874681986958e-8,0.002731205492992096,1.663554986253649e-5,-1.4389430286252634e-8,0.0027317346225685167,1.6362736100393333e-5,-1.401285392592605e-8,0.0027323159732417688,1.6213321694122396e-5,-1.3804237823242727e-8,0.0027328882043883593,1.6197272773221976e-5,-1.377768292956184e-8,0.002733391477933123,1.628923403372551e-5,-1.3899104903846669e-8,0.0027337846859482747,1.6435087027299024e-5,-1.4095004537599963e-8,0.002734056500043612,1.656745755001094e-5,-1.4273511480543449e-8,0.0027342271115420556,1.6624323330041047e-5,-1.4349761230979106e-8,0.002734341218625606,1.6564849873113524e-5,-1.4267579057934553e-8,0.0027344551943848145,1.6378505391622318e-5,-1.4012046808109738e-8,0.002734622289801755,1.608581588143182e-5,-1.3610682506044439e-8,0.0027348797656559553,1.5731229116967588e-5,-1.312384293400565e-8,0.0027352411979116873,1.5370487927067927e-5,-1.262758861964929e-8,0.0027356956705479342,1.5056407177672457e-5,-1.2194285616455754e-8,0.002736213318040265,1.4827270079832405e-5,-1.1876677483532097e-8,0.0027367546090290257,1.4700733657187753e-5,-1.169940036745348e-8,0.002737279962922846,1.4673731384326293e-5,-1.16586767454608e-8,0.0027377570640155654,1.4726736350655366e-5,-1.1728029197099415e-8,0.0027381648557289963,1.482989457646782e-5,-1.1866648191392354e-8,0.0027384946423735903,1.4948942426058718e-5,-1.2027544616739114e-8,0.002738749434445084,1.504985821963847e-5,-1.216399804528127e-8,0.0027389426406392242,1.5102225647928979e-5,-1.2234218749741384e-8,0.0027390967313658887,1.508190848938774e-5,-1.2205022203274869e-8,0.0027392418828776502,1.497377683520103e-5,-1.2055543818857391e-8,0.0027394140032673863,1.4774979914795335e-5,-1.1781703210623261e-8,0.0027396510558396095,1.449859754939216e-5,-1.1401214646296961e-8,0.0027399865631337478,1.4176337452192784e-5,-1.0957324233453986e-8,0.0027404401157403325,1.3857589419184968e-5,-1.0517579850249122e-8,0.002741006988407936,1.3601649709835046e-5,-1.016324470539438e-8,0.002741651946643131,1.3461932237357087e-5,-9.967701894510386e-9,0.0027423134297618586,1.3466164991872435e-5,-9.969292325791265e-9,0.0027429204127412043,1.3602045380436758e-5,-1.0151559338201335e-8,0.0027434161980657615,1.381781057785335e-5,-1.0443902181835858e-8,0.0027437775903663983,1.403930043979941e-5,-1.0744867582233018e-8,0.00274402026056172,1.4195086586668818e-5,-1.0956551973741348e-8,0.002744189707180539,1.4237647948831023e-5,-1.101361813162918e-8,0.0027443444308235623,1.4153214739371446e-5,-1.0896808965594635e-8,0.0027445391212823013,1.3960083614703103e-5,-1.063071839494125e-8,0.0027448126229584063,1.369940353501182e-5,-1.0271311517205686e-8,0.0027451820491002014,1.342296064314159e-5,-9.889353385649206e-9,0.0027456424369939375,1.3181296837245952e-5,-9.554228595057486e-9,0.0027461706266553357,1.301415215625418e-5,-9.320814951324564e-9,0.0027467319065318033,1.2944348784452829e-5,-9.220945708603037e-9,0.0027472878430236675,1.297566686114043e-5,-9.26028974478475e-9,0.0027478036209455806,1.3094521161716708e-5,-9.420488426281658e-9,0.0027482535395967965,1.3274409109423844e-5,-9.665206228210173e-9,0.002748624017387072,1.3481665911821765e-5,-9.94808846615289e-9,0.002748914201993835,1.3681151040180056e-5,-1.0220678594459335e-8,0.002749134840466332,1.3840922486020028e-5,-1.0438925666362003e-8,0.0027493062755827883,1.3935617636275572e-5,-1.0567851392877573e-8,0.0027494561978375956,1.3948871850020234e-5,-1.0584841736813426e-8,0.002749617298368145,1.3875330877006017e-5,-1.0482372438320108e-8,0.002749824478571436,1.3722661790345272e-5,-1.0270772986168708e-8,0.002750110830763187,1.3513482353169196e-5,-9.98093410823438e-9,0.00275050148863685,1.3286167853943228e-5,-9.665504146217214e-9,0.0027510052007713166,1.3092282740735443e-5,-9.395433012835077e-9,0.0027516054627253683,1.2987797311630384e-5,-9.247916863310523e-9,0.0027522560077975567,1.3016795714357577e-5,-9.283940992366734e-9,0.002752887270832192,1.3191513005764179e-5,-9.520705716744854e-9,0.0027534268750110877,1.3479307947422266e-5,-9.913575792228905e-9,0.002753827252818105,1.380820104122874e-5,-1.0363635022831688e-8,0.002754085066367869,1.4092408000508905e-5,-1.0752843979321471e-8,0.002754240423604777,1.4264671631161601e-5,-1.0988570669126968e-8,0.0027543577158397454,1.4297504261183262e-5,-1.1032801675695634e-8,0.0027545010082918016,1.4205075789953122e-5,-1.0904699986993847e-8,0.0027547161998007054,1.4030591799180186e-5,-1.0663283329901377e-8,0.0027550240194078655,1.3829185117178249e-5,-1.0384043206256625e-8,0.002755421453020713,1.3653474454465471e-5,-1.0139258403077382e-8,0.0027558875196220835,1.3544259564344984e-5,-9.985280220478687e-9,0.0027563903321073395,1.3525955479519786e-5,-9.956181654857124e-9,0.0027568938904163395,1.3605460183974092e-5,-1.0062009063794016e-8,0.002757364073561223,1.3773418082126131e-5,-1.029030898978133e-8,0.0027577735523741467,1.4007312606634619e-5,-1.0610254942756665e-8,0.002758105281049702,1.4275878871466236e-5,-1.0978721485269755e-8,0.0027583543129910426,1.4544196144378514e-5,-1.1347397176404875e-8,0.002758527884760369,1.4778781498711986e-5,-1.1669921998794136e-8,0.0027586439565762334,1.495202207329257e-5,-1.1908062139585563e-8,0.0027587286752269713,1.5045486741457556e-5,-1.2036263263573345e-8,0.002758813283168323,1.5052079543374385e-5,-1.2044567346228864e-8,0.0027589307562035483,1.497726783006875e-5,-1.1940277717807085e-8,0.0027591121400170103,1.4839587044545021e-5,-1.1748696271030066e-8,0.002759382258301141,1.4670374331164395e-5,-1.1512860934478634e-8,0.0027597543590631487,1.4512060743916354e-5,-1.1291303651724086e-8,0.002760223851724849,1.4413504572653444e-5,-1.1151667518328181e-8,0.002760762772812467,1.4420577561528979e-5,-1.1157671499436408e-8,0.002761318710750578,1.4561512390203414e-5,-1.1348746558323507e-8,0.00276182335825203,1.483046758444795e-5,-1.171717072812087e-8,0.002762213232767044,1.5178600777388183e-5,-1.2195628938203373e-8,0.0027624561618459875,1.5523579998102924e-5,-1.2670370954457433e-8,0.002762568055471419,1.577896645887847e-5,-1.3021911778698365e-8,0.002762607053442844,1.588892345218556e-5,-1.3173036202525945e-8,0.0027626477535367317,1.5847494556313896e-5,-1.3115353264673006e-8,0.002762752148698717,1.5693341116187472e-5,-1.290193227055894e-8,0.002762952717258098,1.5488291251018845e-5,-1.2617722370350503e-8,0.0027632510418019677,1.5294686690858635e-5,-1.2348462136331391e-8,0.0027636259344087917,1.5160707656321381e-5,-1.2160612203495138e-8,0.002764043924793039,1.511465428428553e-5,-1.2093523880228672e-8,0.002764468105360931,1.5165219435121325e-5,-1.2159711904489318e-8,0.0027648642771565795,1.5304554776486206e-5,-1.2348881160795975e-8,0.00276520491193756,1.551214917612753e-5,-1.2633083740317827e-8,0.0027654717421526196,1.5758859205074683e-5,-1.2972187445271782e-8,0.0027656573615933593,1.601108180866163e-5,-1.331966747011974e-8,0.0027657658412326984,1.623508143758839e-5,-1.3628693916074076e-8,0.0027658122315612965,1.6401336192405455e-5,-1.385824500072823e-8,0.0027658208032614435,1.64885423505343e-5,-1.397868551819702e-8,0.0027658220656359834,1.6486733828388484e-5,-1.397605157394892e-8,0.002765848891824904,1.639909794692674e-5,-1.3854513826157042e-8,0.0027659321674139512,1.6242317878778517e-5,-1.3636849548780435e-8,0.002766096303503263,1.6045369593808686e-5,-1.3362857387789591e-8,0.0027663548615603564,1.5846730676314847e-5,-1.308562701077851e-8,0.0027667064826740096,1.5689835021215877e-5,-1.2865361853446855e-8,0.002767131628491153,1.5616253392744474e-5,-1.2759959238257351e-8,0.002767591541465577,1.565613932350352e-5,-1.2811680422273687e-8,0.0027680318643640033,1.581672526418174e-5,-1.3031031172521404e-8,0.0027683935757452003,1.607229328191158e-5,-1.3382687188492964e-8,0.0027686315906423767,1.6362317419807093e-5,-1.3782849249591848e-8,0.0027687352106116232,1.660487394222258e-5,-1.4117902190796029e-8,0.002768738239820442,1.6725105080637398e-5,-1.4283993588661351e-8,0.0027687087079556953,1.6685822510540136e-5,-1.422947633870195e-8,0.0027687213527381837,1.650176304721841e-5,-1.3974559220475729e-8,0.0027688289978741332,1.622925799770131e-5,-1.3596908755438644e-8,0.002769048363398059,1.594031700512789e-5,-1.3195832869032236e-8,0.00276936337344147,1.569769408859385e-5,-1.2857958409166736e-8,0.002769738192543268,1.5541237964123733e-5,-1.2638499739393606e-8,0.002770130857577132,1.5485700596560033e-5,-1.2558236264973412e-8,0.0027705028435936804,1.5525121557837643e-5,-1.2609441752677153e-8,0.002770824104016123,1.5639139817898094e-5,-1.2764417778794309e-8,0.0027710750382562957,1.579871667179225e-5,-1.298325399628226e-8,0.002771246995946245,1.5970684935818387e-5,-1.322007185623983e-8,0.0027713422068845884,1.6121524757386047e-5,-1.3428307331702114e-8,0.0027713733059165882,1.622087961293736e-5,-1.3565689517813172e-8,0.0027713622519797507,1.6245092710609566e-5,-1.3599228831309594e-8,0.002771338258376431,1.6180665568763176e-5,-1.3510033682923686e-8,0.0027713344138243505,1.6027070557930125e-5,-1.3297175460530656e-8,0.0027713830768532144,1.579813080854103e-5,-1.2979564370243544e-8,0.0027715105782646693,1.5521323628688927e-5,-1.2595002061998987e-8,0.002771732045267941,1.5234636665673235e-5,-1.2195915802458485e-8,0.002772047301432447,1.4981007805899022e-5,-1.1841777298032802e-8,0.002772438752589332,1.4800880562158318e-5,-1.1588867502371844e-8,0.0027728720133379584,1.4723695349422957e-5,-1.1478455258934069e-8,0.0027733000270757664,1.475936384689405e-5,-1.1524829287417343e-8,0.0027736714038943994,1.4891518683271445e-5,-1.1705728640433002e-8,0.002773942949580787,1.5075513691583893e-5,-1.1959405556781578e-8,0.002774094298536084,1.5244784160866828e-5,-1.2193420369479077e-8,0.00277413935771806,1.5327642621168224e-5,-1.2308056164262575e-8,0.002774127095241945,1.5271382737278492e-5,-1.222991079233378e-8,0.002774127125267959,1.5063483024427677e-5,-1.1941373736095969e-8,0.002774204509579759,1.4737530909312808e-5,-1.1488800019336111e-8,0.0027743965548067697,1.43593324733346e-5,-1.0963210259393599e-8,0.0027747034985702353,1.4001351538615448e-5,-1.0464911437262635e-8,0.0027750951364715324,1.3719672259939094e-5,-1.007167416389651e-8,0.002775526051367617,1.3542754928601997e-5,-9.823200461899074e-9,0.0027759503581378433,1.3472044653032601e-5,-9.721903248961207e-9,0.0027763311030684443,1.3489110782461308e-5,-9.742655844025204e-9,0.0027766441055164853,1.356402503429683e-5,-9.84425800476849e-9,0.002776878237542247,1.3662175145885656e-5,-9.978801364369811e-9,0.00277703421910064,1.3749001999510627e-5,-1.0098250340897997e-8,0.002777123145672282,1.3793304300500613e-5,-1.0159108468992627e-8,0.002777165069365021,1.3769948799978488e-5,-1.012627712891473e-8,0.002777187380425079,1.366257139239754e-5,-9.976865115490197e-9,0.002777222427192686,1.3466379006569386e-5,-9.704079704233e-9,0.002777303795784524,1.3190508945819256e-5,-9.32046418862628e-9,0.0027774610887294536,1.285887005615791e-5,-8.859037531642524e-9,0.00277771379236086,1.250829794191475e-5,-8.370757335750319e-9,0.0027780656045215007,1.2183280121571277e-5,-7.917278908180143e-9,0.00277850108054271,1.1927476784055753e-5,-7.559280656595044e-9,0.002778986285044394,1.1773582658743977e-5,-7.3424319327927995e-9,0.0027794741941447932,1.1734065609188585e-5,-7.284473669250357e-9,0.0027799142794985264,1.1795451333347614e-5,-7.367127372081157e-9,0.00278026452821218,1.1918270864807826e-5,-7.535846169209884e-9,0.0027805032458643373,1.204384768123753e-5,-7.709138116829781e-9,0.0027806373209791524,1.2107676158375936e-5,-7.797171506191644e-9,0.002780703452468078,1.2057033090757864e-5,-7.726358310931846e-9,0.002780759925646668,1.186787561236933e-5,-7.46295792291357e-9,0.002780869728653987,1.155427127221588e-5,-7.026249491461181e-9,0.002781080498337681,1.1164946271353642e-5,-6.483757041896363e-9,0.002781409786732128,1.0767143875816982e-5,-5.928845847483083e-9,0.0027818421004138097,1.04248448157659e-5,-5.450501229246064e-9,0.0027823377629871307,1.0181105245430409e-5,-5.10879819574084e-9,0.002782847735319512,1.0050699713777196e-5,-4.924616944992279e-9,0.002783327243787241,1.0022856728953502e-5,-4.883325460734916e-9,0.0027837440651562097,1.0069594711575953e-5,-4.94624874966697e-9,0.0027840812269027786,1.015483206039899e-5,-5.063271670053514e-9,0.0027843360787357524,1.024152532104462e-5,-5.1827770304128115e-9,0.002784517883012557,1.0296305457586499e-5,-5.258162067166841e-9,0.0027846452783812006,1.0292292461840592e-5,-5.251838399917288e-9,0.002784744078074569,1.0211053940810853e-5,-5.138017383006263e-9,0.0027848451722726508,1.004447040455388e-5,-4.905319130341186e-9,0.002784981869337182,9.796760182050914e-6,-4.559563393831464e-9,0.0027851859388087303,9.486172936094592e-6,-4.1260871182282976e-9,0.0027854820195520776,9.145128566965864e-6,-3.649923337373014e-9,0.0027858809685050146,8.817212839408479e-6,-3.1916519447886542e-9,0.002786374004344479,8.549858663854469e-6,-2.8172810988601715e-9,0.002786930516713693,8.38311526590999e-6,-2.5826759770245543e-9,0.0027875021251903167,8.337323332657525e-6,-2.5164033042951878e-9,0.002788033442730153,8.404341144331321e-6,-2.6074358965324996e-9,0.0027884768663511967,8.546587963184419e-6,-2.8036922561923524e-9,0.002788806444515096,8.705359435428541e-6,-3.023511191011914e-9,0.002789025898946628,8.816155454370437e-6,-3.1769693624562517e-9,0.00278916808580964,8.826174280013064e-6,-3.1902919454504053e-9,0.0027892861494492062,8.708654066453408e-6,-3.0259083522581603e-9,0.002789439024007953,8.46996585135858e-6,-2.6924102085292982e-9,0.0027896754169786063,8.14743898998842e-6,-2.2415918566646356e-9,0.002790020989298804,7.798481749683577e-6,-1.7533598997337004e-9,0.0027904727105389194,7.484380983397801e-6,-1.3132102122914294e-9,0.0027910019465777094,7.254182931369871e-6,-9.89761674395551e-10,0.0027915644996498075,7.133899378245067e-6,-8.196308089392246e-10,0.002792113334641582,7.123723332179867e-6,-8.034153427098901e-10,0.0027926094573086616,7.202432983697204e-6,-9.117101623954198e-10,0.002793028233302452,7.335726174669705e-6,-1.0966748720526548e-9,0.0027933609484635524,7.4849003149403414e-6,-1.3041707157630382e-9,0.002793613109513304,7.61360949860106e-6,-1.4832721372423023e-9,0.002793801331699417,7.692125726622039e-6,-1.5923023708007069e-9,0.0027939501157332436,7.699650544928369e-6,-1.602113739190793e-9,0.0027940890449749374,7.62559574208575e-6,-1.4978805430814948e-9,0.0027942502546082484,7.47061613566804e-6,-1.2805101597583769e-9,0.002794465545354246,7.247708832349798e-6,-9.681400023267961e-10,0.0027947623730721393,6.982972729165114e-6,-5.97180208495864e-10,0.002795158293619206,6.714815163187818e-6,-2.2122179168722028e-10,0.0027956544044971682,6.489842552957791e-6,9.465788350054435e-11,0.0027962298905296608,6.353985618709735e-6,2.862426270105938e-10,0.0027968413003591638,6.339329590931643e-6,3.085594249353236e-10,0.002797430023565606,6.450574770211097e-6,1.5483829055035215e-10,0.0027979381407812233,6.657939065789282e-6,-1.33481326751483e-10,0.0027983274370340884,6.9023050870562255e-6,-4.73865860969561e-10,0.0027985929487883057,7.112534229482264e-6,-7.668664513252449e-10,0.0027987644712778367,7.227889781129287e-6,-9.274873085756629e-10,0.002798895846497114,7.215922522318092e-6,-9.102130577481535e-10,0.0027990476214502418,7.07954168609196e-6,-7.189055791823305e-10,0.002799270159329704,6.8528184660678055e-6,-4.0097058487487015e-10,0.0027995921098042825,6.589150394962895e-6,-3.089155205840986e-11,0.0028000160559371254,6.346543838175632e-6,3.10246237176008e-10,0.0028005208861621384,6.174077528739478e-6,5.536306075559972e-10,0.002801069138807742,6.102332622183427e-6,6.561508599671992e-10,0.002801616887775129,6.139228531226112e-6,6.063570042587458e-10,0.0028021235424224794,6.271340195284573e-6,4.227738196672006e-10,0.0028025593261495505,6.469448209654452e-6,1.462323628969768e-10,0.002802909202716053,6.696171451931554e-6,-1.7081556781815749e-10,0.0028031732715659992,6.913472533175175e-6,-4.748902722777455e-10,0.002803364595060627,7.088522312131387e-6,-7.198047146353163e-10,0.002803505761944061,7.197381055746142e-6,-8.718919784335805e-10,0.002803625279954858,7.226791581760613e-6,-9.125259098952547e-10,0.0028037543398572442,7.1748236665111314e-6,-8.389867042693141e-10,0.0028039239008144736,7.051055423278122e-6,-6.646711695244907e-10,0.0028041616337651505,6.8765748079719594e-6,-4.190817695600791e-10,0.0028044880974484863,6.6835013555270844e-6,-1.471822583423747e-10,0.0028049117634366405,6.5130028002482435e-6,9.333211200818222e-11,0.002805423407949294,6.410183518830969e-6,2.391581525590211e-10,0.0028059919682429956,6.414458134729057e-6,2.348761811647254e-10,0.0028065656354558507,6.545964496883274e-6,5.204916047160679e-11,0.0028070820322286597,6.792467980851788e-6,-2.923256812302114e-10,0.0028074875111325586,7.1049452709561795e-6,-7.295484999982558e-10,0.002807758398439204,7.408801568743201e-6,-1.1549479735996095e-9,0.002807912309953183,7.629016879277494e-6,-1.4632184010996237e-9,0.0028080018600268285,7.717209899264664e-6,-1.5864308892715257e-9,0.00280809416469148,7.666574793887121e-6,-1.5149558263742769e-9,0.0028082476851966315,7.509156810078956e-6,-1.293585924107478e-9,0.0028084967768828226,7.300588647517751e-6,-1.0001414868267381e-9,0.002808847262739549,7.101610708252468e-6,-7.196587372359342e-10,0.0028092805508106752,6.9632211202788204e-6,-5.236849754708002e-10,0.0028097620700029556,6.9179843415002716e-6,-4.5813084509820613e-10,0.0028102506436204987,6.977109497128568e-6,-5.3909443895529e-10,0.002810706875116468,7.1318269763759485e-6,-7.546337294862254e-10,0.002811099653827845,7.357649721019065e-6,-1.0705937383009498e-9,0.0028114103186717213,7.620360090645017e-6,-1.4389400470211245e-9,0.0028116342841793644,7.882562522965005e-6,-1.8069960493090511e-9,0.002811780336556491,8.109700436176797e-6,-2.1259981185286337e-9,0.0028118681577567702,8.274759500587497e-6,-2.3578054290919355e-9,0.002811924804212133,8.361260065829955e-6,-2.479149299892737e-9,0.002811980892546883,8.36454527445245e-6,-2.4834224476780367e-9,0.0028120670235339054,8.291786877210306e-6,-2.380638941437992e-9,0.002812210545938763,8.161235186498023e-6,-2.196355734372293e-9,0.0028124324269317093,8.000947582996757e-6,-1.9699141477060387e-9,0.0028127438794841287,7.846806856187975e-6,-1.7517213264542863e-9,0.002813142552806622,7.739137129470781e-6,-1.5985536553676695e-9,0.002813608808015108,7.716755992795095e-6,-1.5652027889490953e-9,0.002814103934259319,7.807540942446503e-6,-1.6911479779159391e-9,0.0028145735374341036,8.016337002635303e-6,-1.9834359406417603e-9,0.0028149593679730016,8.31455967856922e-6,-2.4019489267911616e-9,0.0028152192752681693,8.639495206008205e-6,-2.858393347499628e-9,0.002815347491924279,8.910155826623826e-6,-3.238690313459153e-9,0.0028153820992645705,9.056877288906372e-6,-3.444739279219633e-9,0.0028153917225959865,9.049565373279847e-6,-3.434183721829044e-9,0.0028154478006963196,8.907688181128402e-6,-3.234368005566589e-9,0.0028155987912163055,8.687766600877536e-6,-2.924641731063571e-9,0.002815858796138938,8.458997654451106e-6,-2.6021037702235526e-9,0.0028162112125574854,8.281283974367032e-6,-2.3508457347741356e-9,0.002816620244870729,8.193045999255578e-6,-2.2249439851131193e-9,0.002817043196425516,8.208464494140208e-6,-2.2446042949535775e-9,0.0028174399451113383,8.320583317078408e-6,-2.4004250119473305e-9,0.0028177788955663485,8.506869283546043e-6,-2.661052702041974e-9,0.0028180401266746525,8.735196722855205e-6,-2.9814634943747566e-9,0.002818216618208338,8.969546300902432e-6,-3.3109360361838935e-9,0.0028183139820533165,9.175233421802618e-6,-3.600466281728827e-9,0.0028183488727125663,9.323413400084446e-6,-3.809217986798757e-9,0.0028183463049050498,9.39458305470024e-6,-3.90954465122841e-9,0.0028183361606477814,9.380837778898787e-6,-3.890194719106599e-9,0.002818349263122649,9.286671155840795e-6,-3.757406772881838e-9,0.002818413492033781,9.128333531433483e-6,-3.53396419516556e-9,0.0028185502773691137,8.932029054209705e-6,-3.2566550844126667e-9,0.0028187715560268277,8.731181934898563e-6,-2.972477812164968e-9,0.0028190771735186674,8.562773878565448e-6,-2.7335615331514525e-9,0.002819452811212173,8.462515809163019e-6,-2.5904087552382515e-9,0.0028198689659859892,8.458399189389392e-6,-2.5827732791303527e-9,0.0028202823760493027,8.562461789260582e-6,-2.7279409911836136e-9,0.0028206420530898016,8.76203294867925e-6,-3.0082465413739715e-9,0.0028209016970371353,9.01428419331315e-6,-3.3633026041725225e-9,0.0028210372630595158,9.250300643214355e-6,-3.695772409602383e-9,0.0028210625026776777,9.393515552182452e-6,-3.897503770163006e-9,0.0028210309762700552,9.388841811821506e-6,-3.890735771174717e-9,0.0028210180397079793,9.227581680220804e-6,-3.6632088806019304e-9,0.002821090430482207,8.951597895319539e-6,-3.273910330543877e-9,0.002821281364602508,8.633748034245999e-6,-2.8253997402826636e-9,0.0028215841712364,8.34816387734706e-6,-2.4219756103304343e-9,0.0028219629940235817,8.147536600047868e-6,-2.1378075495426764e-9,0.0028223698510740254,8.054819543764938e-6,-2.0053439921519466e-9,0.002822758897752516,8.06627654451556e-6,-2.0195926662397562e-9,0.0028230947143213737,8.159510301354147e-6,-2.149322407764077e-9,0.0028233554406812823,8.301852148391436e-6,-2.348744115947894e-9,0.00282353282593384,8.45708600749022e-6,-2.5668892800147934e-9,0.002823630975521782,8.590367413029983e-6,-2.754534233626674e-9,0.002823664602469181,8.671985233133684e-6,-2.869577271902303e-9,0.0028236568220320374,8.680413957217215e-6,-2.881448031847007e-9,0.002823636368151626,8.604700974308771e-6,-2.77454826352887e-9,0.00282363417253053,8.446003171394267e-6,-2.55042869198829e-9,0.0028236793809163405,8.217892940976991e-6,-2.2281801649158934e-9,0.0028237951897224314,7.945063459574405e-6,-1.8425677017566835e-9,0.0028239951055245996,7.660380146708828e-6,-1.4398777251617586e-9,0.0028242801645024245,7.40050743300998e-6,-1.0718072754261351e-9,0.0028246375107151937,7.200455492493439e-6,-7.878393942073073e-10,0.002825040666646605,7.087470503711195e-6,-6.266431600801484e-10,0.002825451877475943,7.074723084324243e-6,-6.071044899922806e-10,0.00282582713879414,7.155466286875476e-6,-7.199525343266866e-10,0.0028261246005233435,7.299190176080726e-6,-9.222045847808211e-10,0.00282631625064073,7.452589468357933e-6,-1.138486076576167e-9,0.002826400528199012,7.5487591099507736e-6,-1.2740885116638722e-9,0.002826410104662908,7.52604944408374e-6,-1.2417419852670848e-9,0.0028264072933222306,7.3519489307029926e-6,-9.95445629992879e-10,0.002826464019776748,7.0400481913062265e-6,-5.543990372405558e-10,0.0028266339859106117,6.6478080126638315e-6,2.5428477574195166e-13,0.002826932486316038,6.254009951919073e-6,5.573195548555597e-10,0.002827334926475173,5.928910433440534e-6,1.017639188279871e-9,0.0028277917797869642,5.7135131054699254E-06,1.3232757200131534e-9,0.002828248468891538,5.614983691413445e-6,1.4639603114758254e-9,0.0028286601533812237,5.614073569452187e-6,1.4666632447107474e-9,0.0028289983913868215,5.676607424183315e-6,1.379463686399024e-9,0.002829251626940915,5.763552361016194e-6,1.257411163440545e-9,0.0028294226533315623,5.8378051497912814e-6,1.1529709034080448e-9,0.002829525391442807,5.868127420486881e-6,1.1104318965864509e-9,0.002829581983388046,5.831461400637911e-6,1.162556397104102e-9,0.0028296201636700017,5.714584370675174e-6,1.3281613329217984e-9,0.0028296704970861516,5.515438234757098e-6,1.610201352537694e-9,0.0028297631021037386,5.243980536622576e-6,1.9945855887171813e-9,0.0028299236827314406,4.922012339098648e-6,2.4504737826893106e-9,0.0028301691569658544,4.581263003820374e-6,2.933023335426697e-9,0.0028305037217332307,4.259296600010102e-6,3.3891673170969797e-9,0.002830916459461489,3.993408191619676e-6,3.766190530193445e-9,0.0028313814792820546,3.8133369601973606e-6,4.021977064794002e-9,0.0028318611572783646,3.7341893056990802e-6,4.135010647324168e-9,0.0028323123871055148,3.7511839643312496e-6,4.1118687449955575e-9,0.002832695135207755,3.837639289960757e-6,3.990171251095755e-9,0.0028329821184355144,3.947374265896908e-6,3.835263147375323e-9,0.0028331678013638183,4.02244680576321e-6,3.7292680413861366e-9,0.002833273994081028,4.0063226672806816e-6,3.752376733977591e-9,0.0028333486086335536,3.8605677828823e-6,3.959124752584863e-9,0.0028334548656437477,3.5800588386143807e-6,4.356815088093346e-9,0.0028336519146150165,3.199196575199989e-6,4.896744085319297e-9,0.002833973775156948,2.7832242943678695e-6,5.486528461109836e-9,0.002834417043797699,2.4062456980927005e-6,6.021220646396547e-9,0.002834944056387233,2.1262318186002894e-6,6.418661302859258e-9,0.0028354988875670265,1.969203084860813e-6,6.641874660667108e-9,0.0028360266300474844,1.927913656213458e-6,6.70098348403756e-9,0.0028364871221820765,1.971420933258333e-6,6.639725869469694e-9,0.0028368601012207684,2.0580493155069e-6,6.517137481949485e-9,0.002837143798391918,2.146084523307919e-6,6.392404569592256e-9,0.0028373505649315713,2.200262702481213e-6,6.315634711039505e-9,0.0028375022225614853,2.194747581939334e-6,6.323580516384682e-9,0.002837626278744532,2.1141632193792574e-6,6.438118184879123e-9,0.002837752983195648,1.9539503821470446e-6,6.665710573780227e-9,0.002837912672316925,1.720635357079953e-6,6.997035491702147e-9,0.0028381327625960472,1.4319563558805509e-6,7.406851308263388e-9,0.0028384339774149996,1.1162175023410766e-6,7.85496469067567e-9,0.0028388259645027686,8.098741102245192e-7,8.289678744088075e-9,0.0028393032769971362,5.525056854996284e-7,8.654901931555912e-9,0.002839843390194472,3.791424868007549e-7,8.900980702450035e-9,0.0028404085467517684,3.1124743347196077e-7,8.997452128487504e-9,0.002840952357445899,3.4901622113740223e-7,8.943973785765355e-9,0.002841430295633725,4.68119085106208e-7,8.775000509935415e-9,0.0028418113735728568,6.229385663401742e-7,8.555251582211405e-9,0.0028420874546643236,7.562180083845292e-7,8.366042862071104e-9,0.002842277186103206,8.12928826496597e-7,8.28557717186452e-9,0.0028424229792514757,7.548341939316745e-7,8.368220742089385e-9,0.0028425812098529235,5.718152359385369e-7,8.628388634888865e-9,0.002842807562695609,2.864119988032696e-7,9.034090564959052e-9,0.0028431411958904427,-5.075784686922267e-8,9.513435790152513e-9,0.002843592795816794,-3.745954342178899e-7,9.973922781259542e-9,0.00284414136383234,-6.243541079214667e-7,1.0329162879331443e-8,0.0028447415293055118,-7.608178796241404e-7,1.0523290713005752e-8,0.0028453383289325533,-7.7516339165713e-7,1.0543619193061516e-8,0.0028458829874018483,-6.870431643594794e-7,1.0418002465363624e-8,0.002846343745861855,-5.347045473568402e-7,1.0200845400060194e-8,0.002846709393672464,-3.626758819940621e-7,9.955588339874181e-9,0.0028469868913886353,-2.1168976993434465e-7,9.740321417669294e-9,0.0028471961486281772,-1.1277953739782726e-7,9.5993194186896e-9,0.002847364587199702,-8.507667609072321e-8,9.559858106078426e-9,0.0028475227795878447,-1.357926730672906e-7,9.63217247842041e-9,0.0028477012760148397,-2.6098770439544055e-7,9.810568108142715e-9,0.0028479280799226956,-4.4634904759132186e-7,1.0074568307647262e-8,0.002848226026012085,-6.678989044547163e-7,1.038996413878128e-8,0.002848609485491815,-8.932110104100397e-7,1.0710570698878495e-8,0.0028490803883028048,-1.08421348997412e-6,1.0982211998329638e-8,0.0028496244808374053,-1.2027066912850638e-6,1.1150545368581883e-8,0.0028502098087099434,-1.2189535497820264e-6,1.117325646547346e-8,0.0028507899812964224,-1.1218694346857707e-6,1.1034558640475975e-8,0.0028513137786630493,-9.269848437980516e-7,1.0756559639854864e-8,0.0028517396184371633,-6.772541783626091e-7,1.040045521595228e-8,0.002852049745857075,-4.3383629160081065e-7,1.0053410747715433e-8,0.002852257667938162,-2.588555502582333e-7,9.80397507841194e-9,0.0028524050176591494,-1.966808876808624e-7,9.715373390453078e-9,0.002852549088431962,-2.610733914805113e-7,9.807193562515353e-9,0.002852746181827145,-4.3236107396414083e-7,1.0051389365553414e-8,0.002853036583500799,-6.643300296990387e-7,1.0382115635541902e-8,0.0028534351813685878,-8.975086395893872e-7,1.0714629219647167e-8,0.002853929365115319,-1.0745790729053187e-6,1.096719853065988e-8,0.0028544839144717562,-1.1539281212368752e-6,1.1080391616891132e-8,0.002855051068247713,-1.1181731669905117e-6,1.1029268499031812e-8,0.002855582768565016,-9.75875355579879e-7,1.0825912624788529e-8,0.0028560415652221956,-7.566392276976092e-7,1.051252610395587e-8,0.0028564073406055135,-5.018534207721013e-7,1.0148247915315251e-8,0.002856678785926064,-2.5444286344771827e-7,9.794490668368394e-9,0.002856870524742683,-5.058886026101649e-8,9.503046426891806e-9,0.002857007914873242,8.512852095070961e-8,9.30908662963937e-9,0.0028571215454132087,1.412895044493818e-7,9.22891211852966e-9,0.002857242681589101,1.1896856287060092e-7,9.260923881079643e-9,0.0028573999738171854,3.009713316077348e-8,9.38800232202608e-9,0.0028576170512156747,-1.0428600410014353e-7,9.580041432918065e-9,0.002857910332403342,-2.5568229132032263e-7,9.796312889070212e-9,0.002858286478980994,-3.900984786692505e-7,9.988259642955946e-9,0.002858739364701392,-4.712582429285285e-7,1.0104059717794627e-8,0.00285924729195101,-4.661759280679692e-7,1.0096572400747676e-8,0.002859772355326098,-3.5361998523694726e-7,9.935435750221926e-9,0.0028602647405304277,-1.3415193562808552e-7,9.621442048735044e-9,0.0028606740590430527,1.6248167838119398e-7,9.197139078236257e-9,0.0028609662384943444,4.78853899398024e-7,8.74468806781909e-9,0.002861139063409164,7.44255750862787e-7,8.365236229068475e-9,0.002861226934688806,8.984655386532225e-7,8.144871394043985e-9,0.002861290126468282,9.137233591571715e-7,8.123196247026203e-9,0.0028613933351704225,8.035260371148903e-7,8.280824203979028e-9,0.002861584483698411,6.150660520729815e-7,8.55027050948895e-9,0.0028618827041504077,4.113854839993796e-7,8.841474477305177e-9,0.0028622775767180642,2.524378755512151e-7,9.068802254899132e-9,0.0028627363987564036,1.8135003911035153e-7,9.17060221962431e-9,0.0028632149243848224,2.1781405590917407e-7,9.118624569170666e-9,0.002863668101326738,3.577669060595684e-7,8.918529212376947e-9,0.0028640588395250108,5.775725882547501e-7,8.603998240368662e-9,0.002864363874395403,8.409557603452859e-7,8.226895323903023e-9,0.002864576317683268,1.1070964706719793e-6,7.845700967819764e-9,0.0028647049562361203,1.3383042800297684e-6,7.514484405755572e-9,0.0028647709664122996,1.505912805444349e-6,7.274393180785887e-9,0.0028648031644739605,1.5936658590036488e-6,7.148753085068565e-9,0.0028648329825001757,1.5985844872876452e-6,7.141820831205116e-9,0.0028648901078107145,1.5298597346848266e-6,7.240401923975936e-9,0.0028649992237887115,1.40662889791498e-6,7.417073022953166e-9,0.002865177723667968,1.255395999935133e-6,7.63388684017037e-9,0.002865433962330402,1.1074017364182093e-6,7.84611558047985e-9,0.0028657656359532793,9.9575507730559e-7,8.006322067477023e-9,0.002866158158739561,9.517297115380463e-7,8.069644697438206e-9,0.0028665835690910722,9.99411061201828e-7,8.001485323787432e-9,0.0028670015032235038,1.1483302317519537e-6,7.788115041184415e-9,0.002867364559705957,1.3852827350377053e-6,7.448455109494122e-9,0.0028676299233594852,1.6691386030128764e-6,7.041536345565719e-9,0.0028677759678411305,1.9347439744128324e-6,6.660862146080923e-9,0.0028678167309223023,2.1103546939003207e-6,6.409323306547407e-9,0.0028678034788689843,2.144698261273195e-6,6.3603400593137696e-9,0.0028678078376921227,2.029720577821034e-6,6.525302617003996e-9,0.0028678938191672595,1.8044434865642015e-6,6.8481776203151215e-9,0.002868094666236441,1.5376263800915127e-6,7.230454856236507e-9,0.002868405913933894,1.3009574329347206e-6,7.569539411050057e-9,0.0028687938676968555,1.1474463535309566e-6,7.789602788927635e-9,0.002869210861589051,1.1019524188615657e-6,7.855057338570128e-9,0.002869609334325944,1.1622461307956396e-6,7.769013139741857e-9,0.002869951231852881,1.3057241037395412e-6,7.563711223382599e-9,0.002870212677215331,1.4976923875705954e-6,7.288744102079043e-9,0.002870385194690064,1.699062535904297e-6,7.000097817318875e-9,0.002870474725317542,1.8727935944983242e-6,6.75093165594071e-9,0.002870499135165648,1.988954290042755e-6,6.584275013804583e-9,0.00287048464138741,2.0282382639665136e-6,6.527917653518532e-9,0.0028704616140799583,1.9837809533528225e-6,6.5917562221991524E-09,0.0028704602549171655,1.8612665906276216e-6,6.767640226165102e-9,0.002870506668811975,1.6774673462495774e-6,7.031500508441279e-9,0.0028706197689758587,1.457604560662817e-6,7.34716419913411e-9,0.0028708091655566463,1.2320673332684813e-6,7.671058717135242e-9,0.0028710739127016565,1.0328358362055718e-6,7.957305852913069e-9,0.0028714019528153388,8.896734068155328e-7,8.163146833604354e-9,0.0028717702214416355,8.259448522978371e-7,8.254940922690583e-9,0.0028721457505871515,8.537612288983449e-7,8.215181934479207e-9,0.0028724887943640687,9.684630238408015e-7,8.050494120702066e-9,0.0028727594429303256,1.1436800035455436e-6,7.798780069504199e-9,0.0028729285817180555,1.3300651297795598e-6,7.531028042365649e-9,0.0028729915695690435,1.462263368762386e-6,7.341218977444032e-9,0.002872978448805743,1.4772429274966988e-6,7.3198920236120235e-9,0.002872951252863827,1.339998687991839e-6,7.517195289934864e-9,0.0028729836176172785,1.0630678713911078e-6,7.914951705548082e-9,0.0028731308183241877,7.051695488262558e-7,8.42876029911416e-9,0.0028734078884947605,3.473260311513201e-7,8.942348496380804e-9,0.0028737882087745852,6.114666054513867e-8,9.353047158655345e-9,0.002874219668384876,-1.1272126322969022e-7,9.602619303010073e-9,0.0028746456433421104,-1.6888577001482716e-7,9.683354937474298e-9,0.002875020314855133,-1.291094150016922e-7,9.626438926383505e-9,0.00287531548780091,-3.018828501717634e-8,9.484597230108128e-9,0.0028755210579180877,8.668647485398011e-8,9.31689120875924e-9,0.0028756422882183752,1.8328829012502568e-7,9.178200849892443e-9,0.002875696134402279,2.288312141503027e-7,9.112800066087184e-9,0.002875707547399061,2.025805089596482e-7,9.150562494597015e-9,0.002875705846174958,9.52630333672185e-8,9.304873938120105e-9,0.0028757210926035038,-9.052120703341189e-8,9.57200496741452e-9,0.0028757804866157105,-3.4091383411167794e-7,9.932003851136088e-9,0.002875904942563708,-6.325855214179894e-7,1.035130470799866e-8,0.0028761062305016523,-9.357358663929467e-7,1.0787070613173603e-8,0.002876385114451254,-1.2180331505464313e-6,1.1192851470911072e-8,0.002876730724811969,-1.4490859095561661e-6,1.1524975361779462e-8,0.002877121258656621,-1.6050876840491572e-6,1.174919121731711e-8,0.002877526072604426,-1.6732673197605107e-6,1.1847070930135468e-8,0.0028779092664162932,-1.6557908710847165e-6,1.1821668584018685e-8,0.0028782350578963945,-1.5726563757144414e-6,1.1701746720225946e-8,0.002878475324870978,-1.4624372605699738e-6,1.1542873713258664e-8,0.0028786189483200725,-1.3787231489666856e-6,1.1422265207849368e-8,0.002878680701003052,-1.3798468481290254e-6,1.1423915368175761e-8,0.002878704787159146,-1.5113471987390404e-6,1.1613291349036044e-8,0.002878756903957089,-1.785757177929549e-6,1.2008265758302951e-8,0.002878902862502164,-2.1705939820080316e-6,1.2561939708202041e-8,0.0028791817969540797,-2.5954920375929927e-6,1.3173007501556022e-8,0.002879589402551466,-2.9784185508799e-6,1.3723483959784089e-8,0.0028800817252932734,-3.2567032182663314e-6,1.4123284543802338e-8,0.0028805956227206074,-3.4055518723271702e-6,1.4336808076009957e-8,0.00288107208392016,-3.4376003397330977e-6,1.4382284035630344e-8,0.0028814710783001875,-3.3898579305011365e-6,1.43129954824349e-8,0.0028817755563885373,-3.3082580675083343e-6,1.4195060433588716e-8,0.002881988308033612,-3.2361154678533363e-6,1.4090836012607044e-8,0.0028821262129773463,-3.207791533507497e-6,1.4049812193983022e-8,0.0028822147082530657,-3.246215519180097e-6,1.4105033781258338e-8,0.0028822834027905776,-3.36241780936278e-6,1.4272395487930903e-8,0.002882362616150177,-3.5558741422002764e-6,1.4551103140709693e-8,0.0028824803465096684,-3.815258525621979e-6,1.4924750790070064e-8,0.002882659335415783,-4.119686711663455e-6,1.5363142882474208e-8,0.0028829141547347752,-4.440809412356523e-6,1.5825359058537653e-8,0.0028832486380844327,-4.746136382797398e-6,1.626457640078978e-8,0.0028836543274357697,-5.003595714935634e-6,1.6634632356475022e-8,0.0028841105948802857,-5.186858658952929e-6,1.6897660746955784e-8,0.0028845868380229104,-5.280659678729527e-6,1.703172244416492e-8,0.0028850468268388713,-5.285119178421869e-6,1.703703042675255e-8,0.0028854548808014517,-5.2180136555174015e-6,1.693924927655556e-8,0.00288578318588404,-5.1141539701945615e-6,1.678862920440044e-8,0.0028860192930803964,-5.021207939658294e-6,1.6653980349342108e-8,0.0028861723562649236,-4.991365507388845e-6,1.6610608238690897e-8,0.0028862757956466495,-5.06888921218822e-6,1.6722303008240677e-8,0.0028863833910300974,-5.2754810860775145e-6,1.7020219754766915e-8,0.002886556622110814,-5.598336802918629e-6,1.7485702072118628e-8,0.0028868448006271175,-5.988001271290007e-6,1.804727106737048e-8,0.0028872654738177545,-6.371171534302883e-6,1.8599132347397268e-8,0.002887795844354059,-6.675623117016277e-6,1.903710691825924e-8,0.0028883812762736244,-6.855447025490349e-6,1.9295003604406827e-8,0.0028889563468819752,-6.903610854021034e-6,1.9362747686658358e-8,0.0028894665800328696,-6.847559620219423e-6,1.9280059028761153e-8,0.0028898810668172878,-6.734011844686922e-6,1.911450684067196e-8,0.0028901940052642504,-6.612662324206851e-6,1.893795127279494e-8,0.0028904191547270935,-6.524988204859821e-6,1.881034874825922e-8,0.002890582222841485,-6.4992181867616665e-6,1.8772471855239283e-8,0.0028907142743236822,-6.549601240706169e-6,1.8844849350322546e-8,0.0028908470537224477,-6.677663335062472e-6,1.9029580088897277e-8,0.0028910098168515577,-6.87394958687946e-6,1.9312855656179486e-8,0.0028912269035187145,-7.1197167658875545e-6,1.966742957177217e-8,0.0028915154465618195,-7.388703555439692e-6,2.0055217248474415e-8,0.002891882983346302,-7.649501334948221e-6,2.0430764834169687e-8,0.002892325261621495,-7.869140909601243e-6,2.0746451553512368e-8,0.002892825069667161,-8.018140622490618e-6,2.095977025193972e-8,0.0028933531569161294,-8.0765493987099e-6,2.1042023401707183e-8,0.0028938720607829473,-8.039749741569616e-6,2.0986676926427616e-8,0.002894342905333149,-7.92219781746215e-6,2.081475472290096e-8,0.0028947341280570267,-7.757261613370963e-6,2.0574609101836252e-8,0.0028950300744023127,-7.592178937176516e-6,2.033462657209387e-8,0.0028952370056188714,-7.47855706718128e-6,2.0169463592427875e-8,0.0028953844081573035,-7.460137255342665e-6,2.0142316838205095e-8,0.00289552034348127,-7.560525475110968e-6,2.0287169809216575e-8,0.0028957008077851775,-7.774273461944861e-6,2.0595931401456922e-8,0.0028959747760086865,-8.06484752748952e-6,2.1015565228355683e-8,0.0028963687909720668,-8.37202856618837e-6,2.1458840848969644e-8,0.002896876822197008,-8.628384556733143e-6,2.1828161536226112e-8,0.002897460687328443,-8.779917072525279e-6,2.2045408873836965e-8,0.0028980621551318326,-8.802502597728348e-6,2.207573173944743e-8,0.002898621746734977,-8.706920074860234e-6,2.1934852495291796e-8,0.0028990957821008693,-8.531279911183452e-6,2.1678125082780306e-8,0.002899465167343782,-8.326114196731398e-6,2.137891611386844e-8,0.0028997348041497496,-8.13959047569529e-6,2.110712912790612e-8,0.002899926963249216,-8.007836040779991e-6,2.091513975889782e-8,0.002900073067994656,-7.951291908204955e-6,2.0832502054918495e-8,0.002900206831484279,-7.975306429587075e-6,2.0866828269500727e-8,0.002900359629928538,-8.072622529241776e-6,2.1007425546019428e-8,0.0029005576921144888,-8.226159990315293e-6,2.1229360644075667e-8,0.0029008202589749987,-8.411462892954981e-6,2.1497037476612273e-8,0.0029011579526491515,-8.59892006014462e-6,2.176744153154923e-8,0.0029015709907129882,-8.756361710375036e-6,2.1993920303424827e-8,0.002902047505571332,-8.85279154909494e-6,2.2131593765595492e-8,0.0029025628872768883,-8.863671727157463e-6,2.2145000075912374e-8,0.0029030815052825793,-8.777345014016352e-6,2.2017385091665053e-8,0.0029035620496829224,-8.600986341434939e-6,2.175931513310784e-8,0.002903966637114285,-8.363362576374002e-6,2.141266869690318e-8,0.0029042717781266334,-8.111634884846253e-6,2.1045980547935134e-8,0.002904477372654277,-7.901280532790563e-6,2.073978444425112e-8,0.002904609628244343,-7.781372369153714e-6,2.0565217145761693e-8,0.002904715791276944,-7.780057503835996e-6,2.056294239996993e-8,0.0029048518634546975,-7.895457374774159e-6,2.0729997122619613e-8,0.0029050672122561154,-8.095212921731798e-6,2.1019213111936452e-8,0.0029053908949938285,-8.324795261790677e-6,2.1351336711916632e-8,0.002905823673533291,-8.52201545814966e-6,2.1636089845854755e-8,0.0029063379482547036,-8.63355664871243e-6,2.1796127132877224e-8,0.00290688567731947,-8.628754999473182e-6,2.178700899956975e-8,0.002907411886688896,-8.506448804640417e-6,2.1607149038605026e-8,0.002907869313118284,-8.29292031099503e-6,2.1294847433827952e-8,0.002908229337953015,-8.032291094367549e-6,2.0914343210019756e-8,0.002908486197412823,-7.773494661513888e-6,2.0536855496935417e-8,0.0029086544808403334,-7.5585686559262325e-6,2.0223523711567358e-8,0.0029087623904295403,-7.415402414785589e-6,2.001484051067057e-8,0.002908843981353781,-7.35553482324306e-6,1.9927459583560743e-8,0.002908932726752054,-7.375649943051864e-6,1.9956406208574644e-8,0.0029090572536835126,-7.460809532075294e-6,2.0079817615799907e-8,0.002909238952715364,-7.5879228762615555e-6,2.0264014865399943e-8,0.0029094906884145105,-7.728775534689363e-6,2.0467914700593435e-8,0.0029098158523242937,-7.852662044244406e-6,2.064685157630933e-8,0.002910207338650096,-7.929175550194102e-6,2.0756624253538985e-8,0.0029106466203267355,-7.931911576665453e-6,2.0758877958416994e-8,0.002911103814377557,-7.843588459108618e-6,2.062855490190973e-8,0.0029115402023730556,-7.66224497593975e-6,2.0362916420013977e-8,0.002911914696322001,-7.406730952055019e-6,1.998953139422466e-8,0.0029121945161994208,-7.118129171687856e-6,1.9568325801371748e-8,0.0029123675377467186,-6.853478439441242e-6,1.918239985768633e-8,0.002912450734123804,-6.670885447814342e-6,1.8916298524169225e-8,0.002912488859188778,-6.610394269086291e-6,1.88281387438807e-8,0.0029125417695362995,-6.679120462312963e-6,1.8928018749465943e-8,0.0029126652147423104,-6.848070988212437e-6,1.9173497757355166e-8,0.0029128935517388484,-7.061935206702308e-6,1.9483944368025575e-8,0.002913231037578079,-7.256695642236208e-6,1.9766193972595816e-8,0.0029136533209005457,-7.377571585707302e-6,1.9940619511564884e-8,0.0029141165252539614,-7.391701575272796e-6,1.9959524190801965e-8,0.0029145697689046887,-7.293322714917477e-6,1.981463990082668e-8,0.0029149673788549375,-7.1018310443380406e-6,1.953430007430907e-8,0.002915278149714961,-6.8545563898393026e-6,1.9172935518929185e-8,0.002915490151865234,-6.596725101954491e-6,1.8796465187354656e-8,0.0029156107375936115,-6.371248850546456e-6,1.846741356078346e-8,0.002915662539790091,-6.210673245514143e-6,1.8233164243708407e-8,0.0029156771594396804,-6.1327104522359935e-6,1.8119444504375368e-8,0.002915688499493966,-6.139498762978267e-6,1.812926086634637e-8,0.0029157272510905927,-6.219687203803143e-6,1.824596696099231e-8,0.0029158172217261446,-6.3520114728173305e-6,1.843850247261238e-8,0.002915973412501954,-6.5091582694995025e-6,1.8667034188020637e-8,0.0029162012640837876,-6.6612268782975755e-6,1.888798608393158e-8,0.0029164964235661433,-6.778735787311186e-6,1.9058396783844645e-8,0.002916844658644618,-6.835584702079287e-6,1.91402221340199e-8,0.0029172220097263466,-6.812552966048134e-6,1.910544630322981e-8,0.002917595884444303,-6.7017614420562816e-6,1.8942618913472558e-8,0.002917928412307093,-6.511815863831633e-6,1.8664385893287575e-8,0.00291818347875855,-6.2719153866716e-6,1.8313480562819844e-8,0.002918337682433519,-6.031490122748525e-6,1.7962147335797165e-8,0.002918392453911434,-5.8514246809711895e-6,1.7699255420367632e-8,0.0029183808220965175,-5.785913109725185e-6,1.760375851831056e-8,0.002918361694896576,-5.860827931022856e-6,1.7713146738291097e-8,0.0029184005478205227,-6.060277614749884e-6,1.8003943123245615e-8,0.0029185450818061424,-6.330635628385983e-6,1.8397723097046376e-8,0.002918808813042895,-6.6005652769916755e-6,1.8790403319492904e-8,0.002919169951357401,-6.805733183674234e-6,1.908827114831872e-8,0.0029195829508730235,-6.906435273516535e-6,1.92336174657321e-8,0.002919994648581057,-6.893430674434389e-6,1.9213166424777753e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json new file mode 100644 index 000000000..7805bb3bf --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_2.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":2000,"numberOfSamples":1000,"samples":[-0.0019226433452019043,-4.2400202047522655e-5,-4.847209139509104e-8,-0.0019224915279308452,-4.232138293995991e-5,-4.839917575682174e-8,-0.0019223575599970867,-4.2339533342532786e-5,-4.841941987929699e-8,-0.0019221925201880694,-4.2455757141232014e-5,-4.853500256368106e-8,-0.0019219535221161883,-4.264378690983704e-5,-4.87214377132331e-8,-0.0019216173050324704,-4.285653639574512e-5,-4.893368444013015e-8,-0.0019211878632388768,-4.304035090341533e-5,-4.911986351109583e-8,-0.0019206944269591652,-4.3151566455827686e-5,-4.923733483565604e-8,-0.001920180782153211,-4.316840557061996e-5,-4.9264336921476375e-8,-0.0019196912154135558,-4.3093903838697776e-5,-4.920299044056076e-8,-0.001919259170950511,-4.2950548434361e-5,-4.9074301884897993e-8,-0.0019189019210674083,-4.277089886837732e-5,-4.8909249976046343e-8,-0.0019186208521778832,-4.258868047478004e-5,-4.8740241599705884e-8,-0.001918404926768647,-4.243272605567538e-5,-4.859521792579728e-8,-0.0019182349450095773,-4.2323928794774185e-5,-4.849461482060666e-8,-0.0019180872700253946,-4.2274266862589164E-05,-4.8450338629402915e-8,-0.001917936666180632,-4.228680533004299e-5,-4.846574052979398e-8,-0.00191775854316843,-4.2355896173164964e-5,-4.8535824807684226e-8,-0.0019175311877270766,-4.246735024004276e-5,-4.864742159638906e-8,-0.0019172384671460499,-4.25989290061144e-5,-4.877961167038227e-8,-0.0019168730864799963,-4.2721876682799584e-5,-4.890508625070886e-8,-0.0019164398837302117,-4.280432151427329e-5,-4.8993279677066866e-8,-0.0019159579014177714,-4.281706315274191e-5,-4.901583883335078e-8,-0.0019154594243000278,-4.27412144250086e-5,-4.8953968414289994e-8,-0.001914984557283099,-4.2575562469439085e-5,-4.880561552483321e-8,-0.0019145716125768752,-4.234039279521026e-5,-4.858934382627422e-8,-0.0019142459086730812,-4.207501807745824e-5,-4.834220694952108e-8,-0.0019140111182697102,-4.1828569489815494e-5,-4.811113500434928e-8,-0.0019138468399848853,-4.1646650455964184e-5,-4.794024685992306e-8,-0.0019137136475314569,-4.155842585264431e-5,-4.785840090516636e-8,-0.0019135639168575628,-4.156847538008292e-5,-4.787112479174571e-8,-0.001913354878178476,-4.165575436672902e-5,-4.795925785880041e-8,-0.001913060039736298,-4.1779660100407035e-5,-4.808445425303678e-8,-0.0019126758326174886,-4.189128905126362e-5,-4.8199834042895305e-8,-0.0019122216639617473,-4.194655693717889e-5,-4.8262624541360104e-8,-0.0019117335388331718,-4.191721880810053e-5,-4.8244930247959284e-8,-0.0019112535774869718,-4.17965282482666e-5,-4.8139407883790543e-8,-0.0019108191058004997,-4.159831661316574e-5,-4.795859671838348e-8,-0.001910454761111615,-4.13507805095086e-5,-4.7729094163578805e-8,-0.0019101693588310655,-4.108797784158734e-5,-4.74834365018481e-8,-0.0019099571113809235,-4.084210928294797e-5,-4.725264424568893e-8,-0.0019098014051956349,-4.06383521782112e-5,-4.706116300989979e-8,-0.001909679232807439,-4.049244367589526e-5,-4.6924445600308274e-8,-0.0019095650792493577,-4.041027304587661e-5,-4.684851156054176e-8,-0.0019094338706790138,-4.038850509596943e-5,-4.6830551880131895e-8,-0.0019092631960406178,-4.041545998091156e-5,-4.685979719885473e-8,-0.0019090353342274217,-4.0471961726856714e-5,-4.691831881589462e-8,-0.0019087395911655302,-4.053242839868951e-5,-4.698199191766588e-8,-0.0019083750969175394,-4.0566889485238066e-5,-4.7022295836454817e-8,-0.0019079535950202848,-4.05448090409642e-5,-4.7009857068801336e-8,-0.0019075008929219535,-4.0441352326518995e-5,-4.692041592595363e-8,-0.0019070548602137859,-4.024557340002766e-5,-4.674274417153859e-8,-0.0019066581194424014,-3.996789525520936e-5,-4.648596905336088e-8,-0.0019063458229643833,-3.964246667720178e-5,-4.618202616974119e-8,-0.001906132593687367,-3.932066250072738e-5,-4.5879631296205274e-8,-0.001906005112413036,-3.9056140911694693e-5,-4.563013841888741e-8,-0.0019059250849624966,-3.888725831245831e-5,-4.547077730150599e-8,-0.0019058418160187416,-3.882488208844757e-5,-4.541289156609024e-8,-0.0019057084893034362,-3.885058262649113e-5,-4.5439933455113804e-8,-0.0019054953071705263,-3.892448678948119e-5,-4.551462448108332e-8,-0.0019051956015066044,-3.899818092129441e-5,-4.559102248754266e-8,-0.001904824751066378,-3.902764552633575e-5,-4.562680789434229e-8,-0.0019044139453100216,-3.898286178877979e-5,-4.5592592314242095e-8,-0.0019040014133682513,-3.8852641286461894e-5,-4.547679044559279e-8,-0.0019036234930003598,-3.864464423892581e-5,-4.5285911009026024e-8,-0.0019033074182967,-3.838144973804248e-5,-4.504099501526467e-8,-0.0019030670807785748,-3.809414814477403e-5,-4.477156044224583e-8,-0.0019029021776647626,-3.7815292683842436e-5,-4.4508817510060506e-8,-0.001902800227035411,-3.757290803529455e-5,-4.427982585191298e-8,-0.0019027403062597105,-3.738655521525043e-5,-4.410361508352597e-8,-0.0019026972766109718,-3.726562021454014e-5,-4.3989482282936625e-8,-0.0019026455605967178,-3.720939282853564e-5,-4.393706825168861e-8,-0.001902562049494492,-3.720819681311018e-5,-4.393747898583925e-8,-0.0019024282429587474,-3.7244887169539354e-5,-4.397474157144386e-8,-0.0019022320167928473,-3.7296417780327447e-5,-4.402726172840666e-8,-0.0019019694121183246,-3.733563521997301e-5,-4.406942025345132e-8,-0.0019016466101295054,-3.7333817380047615e-5,-4.4073850286943826e-8,-0.001901281721675244,-3.72647279533573e-5,-4.401521158739995e-8,-0.0019009051492186858,-3.7110772537172744e-5,-4.387608872624823e-8,-0.0019005564761927897,-3.687070357499274e-5,-4.365449081610721e-8,-0.0019002760006965934,-3.656614621766662e-5,-4.3370288285066725e-8,-0.0019000913323042824,-3.624205466668279e-5,-4.306583828633659e-8,-0.0019000039601944792,-3.5956706816941076e-5,-4.279656932567122e-8,-0.0018999840816792122,-3.576226105855051e-5,-4.261250079410351e-8,-0.0018999792883793371,-3.568461104514584e-5,-4.253901137884262e-8,-0.001899933981398471,-3.5713853399087564e-5,-4.2567602344540055e-8,-0.0018998090711157681,-3.581022732657273e-5,-4.266128735242672e-8,-0.0018995924498515157,-3.5920529128532807E-05,-4.27699363285063e-8,-0.0018992979805863262,-3.599552540735251e-5,-4.284667515898346e-8,-0.001898956996465333,-3.60016505232314e-5,-4.2859033641491364e-8,-0.0018986077115788766,-3.5925404995038095e-5,-4.2793327231141533e-8,-0.0018982861274868695,-3.5772115322624845e-5,-4.2653762704726326e-8,-0.0018980197803509253,-3.556151123416992e-5,-4.245848237196928e-8,-0.0018978243192027849,-3.532201505409536e-5,-4.2234258129154944e-8,-0.0018977025183165013,-3.5084842908056075e-5,-4.201085903922587e-8,-0.001897645338891351,-3.487865622253372e-5,-4.181584089370757e-8,-0.001897634548299051,-3.472539749417785e-5,-4.1670438822720854e-8,-0.0018976462592206278,-3.4637684651986404E-05,-4.158699002545304e-8,-0.0018976547528813345,-3.461783260192269e-5,-4.156798431104482e-8,-0.0018976360025567379,-3.465835456450116e-5,-4.160658512785339e-8,-0.0018975704668702292,-3.474353699435762e-5,-4.168818028849286e-8,-0.0018974450856599756,-3.485154582856132e-5,-4.179238643199875e-8,-0.0018972547032642363,-3.4956750270050015e-5,-4.189517808310863e-8,-0.0018970031462578617,-3.5032293373468896e-5,-4.1971187462921197e-8,-0.001896704041121835,-3.5053177068163955e-5,-4.199649895495414e-8,-0.0018963811064912409,-3.500033872352196e-5,-4.195247884233675e-8,-0.0018960669388229457,-3.486606242620335e-5,-4.183101890714069e-8,-0.0018957986732221059,-3.466005594878666e-5,-4.1640536726904226e-8,-0.0018956091571617987,-3.441367338006517e-5,-4.141024300465335e-8,-0.0018955143084655717,-3.417789714991304e-5,-4.11883959487616e-8,-0.0018955015199407235,-3.401103934461799e-5,-4.103064766105313e-8,-0.0018955276091062383,-3.395751831846302e-5,-4.097979506922786e-8,-0.0018955320612609062,-3.4027724788744977e-5,-4.104650552871127e-8,-0.001895460925824634,-3.419213691026499e-5,-4.120354608540807e-8,-0.0018952876637236959,-3.439431347479264e-5,-4.139792350116541e-8,-0.0018950194973305701,-3.4574094187676726e-5,-4.157273141268476e-8,-0.00189468901820827,-3.468727701743215e-5,-4.168573954249668e-8,-0.0018943393648524587,-3.471417304124221e-5,-4.171758103848185e-8,-0.001894011175966523,-3.4658126432902484e-5,-4.1670568510380554e-8,-0.0018937347654549707,-3.4538913747532676e-5,-4.156270803527193e-8,-0.0018935271586108895,-3.438520384909261e-5,-4.1420753571334326e-8,-0.0018933922404869188,-3.4228171385826936e-5,-4.127420869753851e-8,-0.0018933224519850319,-3.409667569558539e-5,-4.115067186901395e-8,-0.001893301244193991,-3.40137190510597e-5,-4.10723266568858e-8,-0.0018933060255165923,-3.399399788202456e-5,-4.105348708812609e-8,-0.0018933114133081418,-3.404253904550354e-5,-4.109924608197351e-8,-0.0018932925837213562,-3.415443233452324e-5,-4.120524021833533e-8,-0.0018932284621856921,-3.431570348176952e-5,-4.135853030487643e-8,-0.001893104383091029,-3.4505267334039883e-5,-4.1539480078514925e-8,-0.00189291393259836,-3.469764551964496e-5,-4.172428673891212e-8,-0.0018926599383916741,-3.486610463956082e-5,-4.188783776156979e-8,-0.0018923546511316431,-3.498605241766292e-5,-4.2006785198344876e-8,-0.001892019101621626,-3.5038631408074926e-5,-4.206286015466167e-8,-0.0018916814855736094,-3.5014534367428806e-5,-4.204652314564249e-8,-0.001891374040852943,-3.491799599962725e-5,-4.196092987201902e-8,-0.0018911275262606326,-3.477018738663742e-5,-4.182542386637248e-8,-0.0018909628356181614,-3.460994197225293e-5,-4.167647877700423e-8,-0.0018908809794151223,-3.448870510773402e-5,-4.1563025636714426e-8,-0.001890855680381783,-3.4457266426274074e-5,-4.1533801407386716e-8,-0.0018908353879217353,-3.454621539121781e-5,-4.1618610494880996e-8,-0.0018907590601062614,-3.474930510512576e-5,-4.1812322746267864e-8,-0.0018905806559135173,-3.502183484605819e-5,-4.2073175486873276e-8,-0.0018902883688857062,-3.529801938551741e-5,-4.233914044230188e-8,-0.0018899068551920142,-3.551742428610809e-5,-4.255290749642152e-8,-0.001889483249018912,-3.564481602849056e-5,-4.268065997382881e-8,-0.0018890679245541686,-3.567523527632135e-5,-4.2716955210695495e-8,-0.00188870032072965,-3.562727788606181e-5,-4.267856906938492e-8,-0.0018884030745074487,-3.5532202829357725e-5,-4.2594437460528625e-8,-0.0018881823723488097,-3.54243921208098e-5,-4.2496795451858114e-8,-0.0018880312102406572,-3.533504994855418e-5,-4.2415230301185514e-8,-0.0018879332139387782,-3.5288747014991394e-5,-4.237330143238159e-8,-0.0018878660597741292,-3.5301680267534746e-5,-4.23867434249854e-8,-0.001887804493950075,-3.5380813257388804e-5,-4.246254511061698e-8,-0.0018877231921547025,-3.552361030820859e-5,-4.259866804167272e-8,-0.0018875996014664324,-3.5718391160070784e-5,-4.278440830777563e-8,-0.0018874167566322304,-3.594551788242534e-5,-4.300154835611885e-8,-0.0018871657927251448,-3.617965687985636e-5,-4.322647911791066e-8,-0.0018868476636197298,-3.639308212496223e-5,-4.3433238917490384e-8,-0.0018864736576865142,-3.655967876258171e-5,-4.359717299143751e-8,-0.0018860644895497603,-3.66591992046944e-5,-4.369885112248462e-8,-0.0018856478855353213,-3.668124668546799e-5,-4.37278181581545e-8,-0.0018852547440176993,-3.6628421846668554e-5,-4.3685686879638724e-8,-0.0018849140165977931,-3.651813115392309e-5,-4.358808695279573e-8,-0.0018846464338938206,-3.638236555382138e-5,-4.346473580791103e-8,-0.0018844576056432885,-3.6264235942699986e-5,-4.3356365793623564e-8,-0.0018843321784880178,-3.6209913884206997e-5,-4.3307130103906174e-8,-0.0018842322632395324,-3.625576306513159e-5,-4.335226126403655e-8,-0.0018841040436168481,-3.641349949400654e-5,-4.350374571050373e-8,-0.0018838940566287233,-3.6660400894427665e-5,-4.374080127460915e-8,-0.001883570085252579,-3.694276386559895e-5,-4.401301964778491e-8,-0.001883135475562002,-3.7194520085842316e-5,-4.425796870583932e-8,-0.001882627578444282,-3.73621475032825e-5,-4.442477583414205e-8,-0.0018821014403124572,-3.742201299485457e-5,-4.4490542846202025e-8,-0.001881609313986513,-3.7382507458315104e-5,-4.4462439215216833e-8,-0.0018811865907120172,-3.7274116019286886e-5,-4.436849914685254e-8,-0.001880847632416261,-3.713591350573811e-5,-4.424508395808057e-8,-0.00188058871037337,-3.7004918805228556e-5,-4.4126962304448526e-8,-0.0018803936614843618,-3.691021781204701e-5,-4.4041748300567786e-8,-0.0018802392951189633,-3.6870851790922326e-5,-4.400778710220607e-8,-0.0018800994849178696,-3.68957089255605e-5,-4.40339130327419e-8,-0.0018799481169941405,-3.698411204251374e-5,-4.411991825255021e-8,-0.0018797614670353787,-3.7126553405316096e-5,-4.425722892864331e-8,-0.0018795204776576248,-3.730559347706619e-5,-4.442976975442706e-8,-0.0018792131464299988,-3.749729428555327e-5,-4.46153152223929e-8,-0.0018788368365865878,-3.7673694011914794e-5,-4.4787772369335294e-8,-0.0018783998781203336,-3.780658890837698e-5,-4.492065092723705e-8,-0.0018779216417479986,-3.787236867220032e-5,-4.4991520603290696e-8,-0.0018774304478634798,-3.785712894848209e-5,-4.4986782858554793e-8,-0.001876959132956837,-3.776087580238688e-5,-4.490568783170876e-8,-0.001876538772816988,-3.759950843431477e-5,-4.476237298058196e-8,-0.0018761917084975216,-3.740363503756282e-5,-4.458499652618009e-8,-0.0018759253154816227,-3.721393836510612e-5,-4.441161416080866e-8,-0.0018757279816746558,-3.7073377257336396e-5,-4.4282962063134714e-8,-0.0018755687920489152,-3.701708377818567e-5,-4.4232881827984826e-8,-0.0018754023218197238,-3.706175871807319e-5,-4.427809041286009e-8,-0.0018751791516401983,-3.71976903316632e-5,-4.4410338519050925e-8,-0.0018748606150037481,-3.738752598197328e-5,-4.4594994984169714e-8,-0.0018744330348925565,-3.7574982787928245E-05,-4.47791613026569e-8,-0.0018739145177022712,-3.770239276914684e-5,-4.490826020461936e-8,-0.0018733495373167643,-3.773009490362128e-5,-4.4944415378813574e-8,-0.0018727931908080317,-3.764831441568e-5,-4.487773977743384e-8,-0.0018722931442570632,-3.7476441825173546e-5,-4.472576455407728e-8,-0.0018718776143170825,-3.72522449686114e-5,-4.452343076403651e-8,-0.0018715526178116695,-3.701813258333055e-5,-4.431030817274317e-8,-0.0018713062231411261,-3.681055615655657e-5,-4.4120686585272034e-8,-0.001871115468151383,-3.665468354723957e-5,-4.397851191896047e-8,-0.001870952694577932,-3.6563328602725056e-5,-4.389625440586987e-8,-0.0018707900517583916,-3.653811265418476e-5,-4.3875885637797216e-8,-0.0018706023334060244,-3.6571255822349916e-5,-4.391050608580251e-8,-0.0018703688700737859,-3.664722159578986e-5,-4.398588937722728e-8,-0.0018700751930006965,-3.6744157938658e-5,-4.408184554328447e-8,-0.0018697148769254426,-3.683557666976917e-5,-4.4173775089313205e-8,-0.0018692914772034106,-3.6892936200826666e-5,-4.423502611041501e-8,-0.0018688199023591616,-3.688965083963331e-5,-4.424057092448585e-8,-0.0018683261082645549,-3.680648604854699e-5,-4.4172010900809014e-8,-0.0018678439684996118,-3.663736658049673e-5,-4.4023038613393244e-8,-0.0018674088734324848,-3.639364723333976e-5,-4.3803546879327065e-8,-0.0018670490319146785,-3.610454803253589e-5,-4.354021989210011e-8,-0.001866776960604691,-3.581233195531623e-5,-4.327223113044107e-8,-0.0018665842545617494,-3.556274227869284e-5,-4.304246095848443e-8,-0.0018664419014308188,-3.539322985208859e-5,-4.2886518844144926e-8,-0.001866306540510951,-3.532250177755452e-5,-4.282282625286369e-8,-0.0018661311596336301,-3.5344543323723834e-5,-4.284673828172474e-8,-0.0018658774885188531,-3.542898898557433e-5,-4.293057236042494e-8,-0.0018655268253949977,-3.55281941668765e-5,-4.303001094315354e-8,-0.0018650860333417425,-3.55896847358241e-5,-4.309572055327366e-8,-0.0018645862558132557,-3.557072469934887e-5,-4.3087114771064386e-8,-0.001864074064290464,-3.54502290003869e-5,-4.298370377047688e-8,-0.0018635978679334747,-3.523359331224885e-5,-4.278980205390345e-8,-0.0018631947076426666,-3.494883476042089e-5,-4.2531058883068645e-8,-0.0018628822307316867,-3.4636347734627516E-05,-4.224496475448857e-8,-0.0018626577466252,-3.433705755884229e-5,-4.196979779298566e-8,-0.0018625028468491243,-3.408334448344101e-5,-4.173608792809358e-8,-0.0018623903292806535,-3.389462368841906e-5,-4.1562378749819724e-8,-0.001862290600784725,-3.377697613200107e-5,-4.145477037782527e-8,-0.0018621762300559555,-3.3725088096835355e-5,-4.14086669723388e-8,-0.0018620246347852986,-3.372488473601601e-5,-4.141123207304418e-8,-0.0018618195632346566,-3.375593156589706e-5,-4.1443656121148575e-8,-0.0018615521548540242,-3.3793432453618705e-5,-4.148302730689643e-8,-0.001861222100187459,-3.3810221048498295E-05,-4.15041470998425e-8,-0.0018608389284970092,-3.377941053241642e-5,-4.148192086511341e-8,-0.0018604228570434176,-3.367833230390359e-5,-4.139496124109246e-8,-0.0018600040268228783,-3.3493942425028966e-5,-4.123062094176194e-8,-0.001859618642548962,-3.322877352067173e-5,-4.0990619843655576e-8,-0.0018593011806838898,-3.290498445207031e-5,-4.0694967467908326e-8,-0.001859073836432133,-3.256319848003421e-5,-4.038105550600808e-8,-0.0018589370096645738,-3.225400787141628e-5,-4.0095898376829484e-8,-0.0018588658572420299,-3.202355089014602e-5,-3.988278237900221e-8,-0.001858815953690681,-3.1898535195761845e-5,-3.9767279252543205e-8,-0.0018587365322608792,-3.187731481624273e-5,-3.974875641256137e-8,-0.001858585847420525,-3.193072891426777e-5,-3.9800881931187754e-8,-0.0018583427276889898,-3.201157846011818e-5,-3.988018363222736e-8,-0.001858011024484624,-3.206838339685549e-5,-3.993871620605644e-8,-0.0018576168661056972,-3.2058722129593e-5,-3.993651170976707e-8,-0.001857200628294303,-3.1958785793748546e-5,-3.98506487342928e-8,-0.0018568063178679155,-3.1767390735336565e-5,-3.9679225404044e-8,-0.0018564711830394505,-3.150417991339459e-5,-3.943989843936122e-8,-0.0018562180244630548,-3.120309508365586e-5,-3.916393604405171e-8,-0.001856051832860989,-3.0903287984785486e-5,-3.888777991719524e-8,-0.0018559610387409902,-3.0640165715613776e-5,-3.864464037772421e-8,-0.0018559222165318323,-3.043888182499085e-5,-3.845831450517588e-8,-0.0018559062367179708,-3.031135180046263e-5,-3.8340287099323454e-8,-0.0018558839785556914,-3.025648674119293e-5,-3.828987583339211e-8,-0.0018558305005729916,-3.0262498510445098e-5,-3.829637141557298e-8,-0.0018557274688207667,-3.030998413607464e-5,-3.8341946180221575e-8,-0.0018555642923261315,-3.0374874455143256e-5,-3.8404431294548646e-8,-0.0018553386335638984,-3.043096245585696e-5,-3.8459652833342595e-8,-0.0018550567897867762,-3.0452262426219995e-5,-3.8483550463237314e-8,-0.0018547340635318174,-3.041572528206477e-5,-3.8454603062521525e-8,-0.0018543947164707576,-3.03048875961989e-5,-3.835716288178646e-8,-0.0018540704590361671,-3.0114692323656852e-5,-3.81859702743685e-8,-0.0018537960249984855,-2.985666954648834e-5,-3.79511015108531e-8,-0.0018536008786521339,-2.9562027461414482e-5,-3.768102528692731e-8,-0.0018534981424192035,-2.927893614320846e-5,-3.742024332911934e-8,-0.0018534751696137296,-2.9061233360087007e-5,-3.72188887172703e-8,-0.0018534923481789171,-2.8950357584252507e-5,-3.711593484750272e-8,-0.0018534940550578869,-2.8958436077817732e-5,-3.7123378482837e-8,-0.0018534282008300274,-2.9062277323979435e-5,-3.722046668883958e-8,-0.0018532645332598092,-2.921211788923309e-5,-3.736159207290112e-8,-0.0018530028720135114,-2.934986972526837e-5,-3.7493050320642694e-8,-0.0018526694542170326,-2.942727873570747e-5,-3.756982425163037e-8,-0.0018523058642196187,-2.9417150023504876e-5,-3.7566073539067835e-8,-0.0018519564866905035,-2.9316192868627697e-5,-3.7477965536880444e-8,-0.0018516584089416203,-2.9141557732680905e-5,-3.7320700414486564e-8,-0.001851435208412855,-2.8923992161479002e-5,-3.712235494419344e-8,-0.001851294541339165,-2.869997092993335e-5,-3.691666372244825e-8,-0.0018512288972952473,-2.850431556199019e-5,-3.673612972502268e-8,-0.0018512187605911334,-2.8364293030248146e-5,-3.6606422818222735e-8,-0.0018512372743969517,-2.8295880091963878e-5,-3.6542771387623024e-8,-0.001851255373367241,-2.830245486957463e-5,-3.654865101402205e-8,-0.0018512464347500161,-2.837567990696616e-5,-3.661658029509977e-8,-0.0018511897654824728,-2.849797616767571e-5,-3.6730452314410044e-8,-0.0018510726455833026,-2.864577894127868e-5,-3.6868605111867225e-8,-0.0018508911239511774,-2.879283048085962e-5,-3.700688885749968e-8,-0.0018506500169525825,-2.891316386992196e-5,-3.712138235946777e-8,-0.0018503624659893852,-2.8983841434482034e-5,-3.719083313132091e-8,-0.001850049192722774,-2.8987717253845237e-5,-3.719912582085492e-8,-0.00184973724683297,-2.8916604783197052e-5,-3.7138199915807674e-8,-0.0018494574590516221,-2.877500685094965e-5,-3.7011601488886906e-8,-0.001849239457271444,-2.8583618727700412e-5,-3.6837917133073514e-8,-0.001849103637120204,-2.8380420558935783e-5,-3.665199142573758e-8,-0.0018490512556514666,-2.8216113176951286e-5,-3.650082802289004e-8,-0.0018490568923369543,-2.814133170477168e-5,-3.643173901900574e-8,-0.001849070044366471,-2.8187498919253204e-5,-3.6474479853762786e-8,-0.0018490301023305032,-2.835027238269989e-5,-3.662573037762882e-8,-0.0018488899067574623,-2.8587217166636767e-5,-3.6846766146306595e-8,-0.0018486348257891318,-2.883361606393152e-5,-3.707797543919425e-8,-0.0018482863056600417,-2.902755950667316e-5,-3.726201459105288e-8,-0.0018478899852914469,-2.9130064005063796e-5,-3.736241363816512e-8,-0.0018474976562760789,-2.91321131307372e-5,-3.737016828147584e-8,-0.0018471524750899352,-2.905016180405401e-5,-3.729976063286029e-8,-0.0018468812786227445,-2.8916268553225196e-5,-3.718025357565311e-8,-0.0018466931172711491,-2.876806315238052e-5,-3.7046173746412294e-8,-0.0018465815057894385,-2.8640983775258864e-5,-3.6930365429741035e-8,-0.00184652829693714,-2.8563136245366806e-5,-3.685914654239289e-8,-0.0018465080445311866,-2.8552306292304803e-5,-3.6849396405970724e-8,-0.0018464923711327586,-2.8614698711177184e-5,-3.69072585309602e-8,-0.0018464540475209713,-2.874515858709884e-5,-3.702828145510411e-8,-0.001846370522506678,-2.8928669467886978e-5,-3.7198811661589566e-8,-0.001846226627091265,-2.9142919199792575e-5,-3.739840984195331e-8,-0.0018460161773210895,-2.936159596526058e-5,-3.7602928735736206e-8,-0.0018457424092981416,-2.9557907441157696e-5,-3.7787745528739335e-8,-0.0018454174436069045,-2.9707932709951874e-5,-3.793078679950588e-8,-0.001845060979936064,-2.9793682517744152e-5,-3.8015266553066575e-8,-0.0018446983139210466,-2.9805837685586976e-5,-3.803216933965162e-8,-0.001844357663506958,-2.974619611849742e-5,-3.7982560537325245e-8,-0.0018440664544479193,-2.9629797711193566e-5,-3.7879707314877856e-8,-0.001843845950446449,-2.948601531108566e-5,-3.775030341662861e-8,-0.0018437041818345754,-2.9356851092842417e-5,-3.763307774716062e-8,-0.0018436286704259478,-2.929018395984869e-5,-3.7572610524337075e-8,-0.0018435826591715672,-2.9326650546160026e-5,-3.7607099199983846e-8,-0.001843510243611047,-2.9482479522100277e-5,-3.7752270839027916e-8,-0.0018433534878047207,-2.9736569576451163e-5,-3.798922207122916e-8,-0.001843076228620517,-3.003258999787417e-5,-3.826624809927366e-8,-0.0018426810050820315,-3.0299279226205748e-5,-3.851758748645876e-8,-0.0018422077376924746,-3.0478508169391107e-5,-3.8689353289091895e-8,-0.0018417156239789582,-3.054470317700498e-5,-3.875746335719129e-8,-0.0018412606553196052,-3.050710730095082e-5,-3.872977574482587e-8,-0.001840880483325183,-3.0398882257686496e-5,-3.8636192256924036e-8,-0.001840590004125507,-3.026250677128237e-5,-3.851540126764517e-8,-0.0018403844397698059,-3.013820957242196e-5,-3.840435285169504e-8,-0.001840245361005513,-3.0057347763451893e-5,-3.8332152701456324e-8,-0.0018401466765782936,-3.0039751280580974e-5,-3.831749547487945e-8,-0.0018400595016326148,-3.0093363332831677e-5,-3.836817784862127e-8,-0.0018399559497764423,-3.0215015910877106e-5,-3.848169905675189e-8,-0.001839812170196447,-3.039186553279613e-5,-3.864654273812751e-8,-0.0018396108283989022,-3.060338054950594e-5,-3.884402378562721e-8,-0.0018393430417674114,-3.082394307346604e-5,-3.905071575977295e-8,-0.001839009544828154,-3.1026114366856945e-5,-3.924146216346563e-8,-0.0018386207708631277,-3.1184328723264915e-5,-3.939273712194119e-8,-0.0018381957305413437,-3.127857148136643e-5,-3.948596451419425e-8,-0.0018377597459139795,-3.1297656724416976e-5,-3.95104860508152e-8,-0.001837341137178437,-3.1241751125251476e-5,-3.946590292406994e-8,-0.0018369670512292443,-3.112376810976386e-5,-3.9363472022820164e-8,-0.0018366586561733092,-3.096932899220622e-5,-3.922626209101001e-8,-0.0018364258708403016,-3.0814812173559905e-5,-3.9087559514838445e-8,-0.0018362621920370473,-3.070252357614279e-5,-3.8986539372919337e-8,-0.0018361412688580824,-3.067203929167175e-5,-3.896025500527251e-8,-0.0018360180816703487,-3.0748042684471684e-5,-3.903223795898209e-8,-0.0018358378502917804,-3.092774827382751e-5,-3.920064225747588e-8,-0.0018355532968053283,-3.1174550168373766e-5,-3.9432189756387474e-8,-0.0018351446756584952,-3.142525945238052e-5,-3.966879216514516e-8,-0.001834631257077125,-3.161182618802566e-5,-3.9847630332795574e-8,-0.001834065391188641,-3.168747068911088e-5,-3.992527940095902e-8,-0.0018335116541834382,-3.164236364109196e-5,-3.989214970654177e-8,-0.0018330236496004874,-3.1501495858562004e-5,-3.977056585296882e-8,-0.0018326302885483708,-3.130976247069251e-5,-3.960119517536447e-8,-0.0018323344622033428,-3.111494455177007e-5,-3.94275962437217e-8,-0.0018321196002908996,-3.095597209536023e-5,-3.928554181120305e-8,-0.0018319582888422555,-3.085789845493625e-5,-3.919836392406287e-8,-0.0018318194757880513,-3.083157342368737e-5,-3.9176511626126014e-8,-0.0018316733480543946,-3.0875483927058214e-5,-3.9219089175635253e-8,-0.0018314943794796696,-3.097812687524317e-5,-3.931593991989682e-8,-0.0018312633560748676,-3.1120334429811935e-5,-3.9449760179892773e-8,-0.001830968913688379,-3.1277592120351454e-5,-3.9598246635518696e-8,-0.0018306087634235733,-3.14226374107931e-5,-3.9736499110668715e-8,-0.0018301904168349817,-3.152864766531905e-5,-3.9839932121797345e-8,-0.0018297309265778968,-3.1573033171681355e-5,-3.988771007373838e-8,-0.0018292551760944991,-3.154139489645285e-5,-3.986633134180522e-8,-0.0018287925523648566,-3.1430926466745534e-5,-3.977274223006469e-8,-0.0018283721888019805,-3.125244172846257e-5,-3.961626454205167e-8,-0.0018280173510476312,-3.1030241019074e-5,-3.941861928815817e-8,-0.0018277399014371466,-3.079933897322065e-5,-3.921157228495376e-8,-0.0018275359237807758,-3.060002936908609e-5,-3.9032106768399976e-8,-0.0018273836315456557,-3.0470075984707517e-5,-3.891530628053033e-8,-0.0018272448509398856,-3.0435259419920423e-5,-3.8885571590877783e-8,-0.0018270713806662069,-3.0500042234658058e-5,-3.8947817158765014e-8,-0.0018268166773114957,-3.064158208297821e-5,-3.908171343754616e-8,-0.0018264509824322654,-3.081128525962225e-5,-3.924294928095106e-8,-0.0018259745066705093,-3.0946791653507584e-5,-3.937422858396294e-8,-0.001825421200068397,-3.0992294321174295e-5,-3.942401662190722e-8,-0.001824848707194268,-3.091859675203208e-5,-3.936503312287334e-8,-0.0018243181665254498,-3.0732388589482095e-5,-3.920280801715213e-8,-0.0018238741939498265,-3.047033281073113e-5,-3.897033103345112e-8,-0.0018235344222076416,-3.0182968256406758e-5,-3.871343791162342e-8,-0.0018232907112232296,-2.9917962061241705e-5,-3.8475612220985564e-8,-0.0018231175915879915,-2.9709470223528575e-5,-3.8288287874661005e-8,-0.0018229820547856707,-2.9574767415543407e-5,-3.8167680241916334e-8,-0.0018228511227224586,-2.951575072500136e-5,-3.811601209651671e-8,-0.0018226963993247997,-2.9522399260808083e-5,-3.812455102291935e-8,-0.001822496346012939,-2.9576313361484465e-5,-3.817679071516764e-8,-0.00182223736569908,-2.9653667368211555e-5,-3.82511596794088e-8,-0.001821914484007764,-2.9727713244422272e-5,-3.8323339418991535e-8,-0.0018215319226575477,-2.9771325860086927e-5,-3.836859871537784e-8,-0.0018211033649289739,-2.9760077349048065e-5,-3.8364575828414726e-8,-0.0018206513209798074,-2.967600860452736e-5,-3.82946771372016e-8,-0.001820204868578569,-2.95117106918752e-5,-3.815177651088395e-8,-0.001819795308698592,-2.9273717903851084e-5,-3.7941337848129227e-8,-0.0018194499553985499,-2.8983792765006212e-5,-3.768268339819807e-8,-0.001819185216669178,-2.867678407238349e-5,-3.74071910297524e-8,-0.0018190008974349288,-2.83945853396037e-5,-3.715294339073842e-8,-0.001818877777254797,-2.8177048843502435e-5,-3.69565401325332e-8,-0.001818779842287521,-2.8051892787703585e-5,-3.684386725138177e-8,-0.0018186613648890997,-2.8026242318695985e-5,-3.682221547238342e-8,-0.0018184777104345217,-2.8082404782524753e-5,-3.687617397457534e-8,-0.0018181975534309522,-2.8179856821560048e-5,-3.6969212144048666e-8,-0.001817813196202531,-2.8264185854983048e-5,-3.705172966271644e-8,-0.001817345167041442,-2.8281685470529075e-5,-3.707441588866618e-8,-0.0018168381018592475,-2.8195553966210703e-5,-3.7003162870434875e-8,-0.0018163479603249767,-2.799754849487948e-5,-3.6829836985857307e-8,-0.0018159250008670967,-2.770979157575244e-5,-3.657403648862273e-8,-0.0018155995956956029,-2.7375894624095573e-5,-3.6275093682421794e-8,-0.0018153764219808644,-2.704596699485922e-5,-3.5978494998850386e-8,-0.0018152377869368145,-2.6762455524996808e-5,-3.572301447864534e-8,-0.001815152477201721,-2.6551760020655958e-5,-3.553302574177351e-8,-0.0018150853173970892,-2.6422470662984083e-5,-3.541677798998169e-8,-0.0018150042988686545,-2.6368080187245047e-5,-3.5368740905128105e-8,-0.001814884542944513,-2.637140326946383e-5,-3.5373559468304656e-8,-0.0018147098501943748,-2.640883213452553e-5,-3.540992975432918e-8,-0.001814472968339351,-2.6453705314678775e-5,-3.5453704890593495e-8,-0.0018141754822484056,-2.6478914642215583e-5,-3.548029701796509e-8,-0.0018138277280354835,-2.645933668573588e-5,-3.54668779570484e-8,-0.0018134485433922909,-2.63746995002284e-5,-3.539493771542412e-8,-0.0018130641999637516,-2.6213143484268603e-5,-3.525347116797519e-8,-0.0018127056529817164,-2.5975139443379584e-5,-3.504252776569707e-8,-0.0018124034131899443,-2.5676611824827752e-5,-3.477610412804476e-8,-0.0018121801872194175,-2.534931109205454e-5,-3.448259855575883e-8,-0.0018120429840718477,-2.503646524431114e-5,-3.420100849172037e-8,-0.0018119778375527472,-2.4783230392470123e-5,-3.3972382770939356e-8,-0.001811950347330866,-2.462408751833058e-5,-3.3828419190625865e-8,-0.0018119132838824324,-2.4571574822020067e-5,-3.3781151941416513e-8,-0.0018118193692635378,-2.461097139426063e-5,-3.381793208892705e-8,-0.0018116348830005524,-2.470333459138878e-5,-3.390395510139745e-8,-0.0018113494195414132,-2.479592830408992e-5,-3.399155855798691e-8,-0.0018109788397635016,-2.483652227449304e-5,-3.403315775348767e-8,-0.0018105608775236578,-2.4787225178468724e-5,-3.399388280325552e-8,-0.001810144903993606,-2.4634019749026035e-5,-3.386038668968676e-8,-0.0018097788424705386,-2.438943653685379e-5,-3.364343809426621e-8,-0.0018094970976968308,-2.408776623021186e-5,-3.3373712923926915e-8,-0.0018093131065530167,-2.3774611485516244e-5,-3.3092397700764274e-8,-0.0018092184234519324,-2.3494490111001275e-5,-3.283995827133673e-8,-0.0018091877331322158,-2.3280593294754563e-5,-3.2646790853564697e-8,-0.0018091871161683125,-2.314939866682767e-5,-3.252822506211939e-8,-0.0018091823293289193,-2.31004611501778e-5,-3.248421726376951e-8,-0.0018091448540584615,-2.311978262620908e-5,-3.250233499343941e-8,-0.0018090550794540737,-2.3184591180723153e-5,-3.2562086291900066e-8,-0.0018089031861997175,-2.3267897328885993e-5,-3.2639095018153503e-8,-0.0018086887334329814,-2.3342085624690892e-5,-3.2708403157821664e-8,-0.0018084198247745962,-2.338158487023955e-5,-3.2746898333729124e-8,-0.0018081122968712463,-2.3365150542970265e-5,-3.273533916353727e-8,-0.001807788822855228,-2.3278370617031e-5,-3.2660558495518114e-8,-0.0018074773359588981,-2.3116713555088714e-5,-3.251818044986732e-8,-0.0018072078836895496,-2.2888860456224638e-5,-3.231565942478291e-8,-0.0018070071067168634,-2.2619145607374683e-5,-3.2074584949186564e-8,-0.0018068904090166695,-2.2346867579039005e-5,-3.18301977417072e-8,-0.001806853807850492,-2.2119984734449717e-5,-3.162581546841964e-8,-0.0018068696241016469,-2.198255341150245e-5,-3.150153125112428e-8,-0.0018068904530553504,-2.195926967130759e-5,-3.1480191546692454e-8,-0.0018068624614854115,-2.2044177423088666e-5,-3.155704270849953e-8,-0.0018067433270976935,-2.2200245280886165e-5,-3.1699156433731375e-8,-0.0018065165630427827,-2.2371032429944445e-5,-3.1855811466588946e-8,-0.0018061958896326482,-2.2498959032548624e-5,-3.197492592167717e-8,-0.0018058190557784669,-2.2542034459431462e-5,-3.201819263383411e-8,-0.0018054353226003737,-2.2483393859611878e-5,-3.196979945333175e-8,-0.001805091981515879,-2.2332389766442987e-5,-3.183757466667896e-8,-0.0018048237525921153,-2.211905907663405e-5,-3.1648156894879373e-8,-0.0018046468284378982,-2.1884874969180767e-5,-3.1438765962970895e-8,-0.0018045577965828564,-2.167257080863706e-5,-3.124804952076372e-8,-0.0018045367469031802,-2.1517256483314775e-5,-3.1108003719807276e-8,-0.0018045532547471112,-2.1440415901790588e-5,-3.103843208390343e-8,-0.0018045734964459543,-2.1447606975861767e-5,-3.1044738831155513e-8,-0.0018045667264467702,-2.1529672691860464e-5,-3.111893588046535e-8,-0.0018045098804961046,-2.1666384245823865e-5,-3.1242914374253404e-8,-0.0018043898839023068,-2.183112130503548e-5,-3.1392708760228225e-8,-0.001804203954475141,-2.1995397908962797e-5,-3.1542638797071024e-8,-0.0018039586205425583,-2.2132522471774145e-5,-3.166864148494045e-8,-0.0018036682150897336,-2.222029327998615e-5,-3.1750683255942955e-8,-0.0018033532774611,-2.2243105107731316e-5,-3.1774601732825967e-8,-0.0018030388535303287,-2.2193945397383773e-5,-3.173385130063672e-8,-0.0018027522942073136,-2.2076575061598045e-5,-3.1631467135425805e-8,-0.0018025198123736337,-2.1907738260673892e-5,-3.148213395270582e-8,-0.0018023610503111382,-2.171835234695091e-5,-3.131339673265721e-8,-0.0018022817446064101,-2.155153029171974e-5,-3.1164020013668663e-8,-0.0018022664981731129,-2.145492195250491e-5,-3.107715875834362e-8,-0.0018022761116299893,-2.1466616576633423e-5,-3.1087611729159285e-8,-0.001802254637597213,-2.1598488185100718e-5,-3.1206666940015674e-8,-0.0018021472428660756,-2.182595909351053e-5,-3.1412695010306495e-8,-0.0018019218634438376,-2.2092822584774562e-5,-3.1655360838329714e-8,-0.0018015825756897933,-2.2331161258804622e-5,-3.187351846210822e-8,-0.0018011669858702807,-2.2485932648024347e-5,-3.2017362632812046e-8,-0.0018007305205330378,-2.2531424552391003e-5,-3.20632837968358e-8,-0.0018003274466781097,-2.247396849454174e-5,-3.201639378115172e-8,-0.001799997044701253,-2.2344006761817026e-5,-3.190352915618942e-8,-0.0017997576968600084,-2.2183994777753875e-5,-3.1762527108728355e-8,-0.0017996074214415598,-2.2037129804367622e-5,-3.163218737463046e-8,-0.0017995281388526994,-2.1939134700851098e-5,-3.1544874466880096e-8,-0.001799491474118722,-2.191336925847295e-5,-3.1522014871558e-8,-0.0017994648236848451,-2.196879034163294e-5,-3.157211653547259e-8,-0.0017994169612412726,-2.210030852102367e-5,-3.1690969385098476e-8,-0.0017993225970557186,-2.2291116208268445e-5,-3.1863685374065217e-8,-0.0017991654559053219,-2.2516364846537557e-5,-3.2068017711543623e-8,-0.0017989396964144166,-2.2747470340719118e-5,-3.2278281986817246e-8,-0.001798649733945888,-2.2956364822787877e-5,-3.246922246142647e-8,-0.0017983088087218547,-2.3119105042172602e-5,-3.2619262744900355e-8,-0.0017979368481374199,-2.3218557224021916e-5,-3.271288686018867e-8,-0.001797558043108042,-2.3246284945411038e-5,-3.274229168261259e-8,-0.0017971982454755217,-2.3203905608775542e-5,-3.2708591798824984e-8,-0.0017968820442133351,-2.3104089519329166e-5,-3.2622768771998037e-8,-0.0017966291126735867,-2.297111342990777e-5,-3.250628913382254e-8,-0.0017964493540700971,-2.2840186859440642e-5,-3.239064633254201e-8,-0.001796337092370337,-2.2753871040159905e-5,-3.231424590201427e-8,-0.001796266176874397,-2.2753701692947285e-5,-3.2314867821004395e-8,-0.0017961898758915664,-2.2866622884127602e-5,-3.241733430757836e-8,-0.0017960501969663332,-2.3089920943539757e-5,-3.261975895170297e-8,-0.0017957976108034395,-2.3383568322421448e-5,-3.288650179068292e-8,-0.0017954135250510931,-2.3679171476829465e-5,-3.315617804332179e-8,-0.0017949215447578652,-2.390518557869303e-5,-3.336437672142568e-8,-0.0017943787200954949,-2.401500851776904e-5,-3.3468942402757484e-8,-0.0017938521133034476,-2.400161061140643e-5,-3.346310636110839e-8,-0.0017933953283730748,-2.3893135268437862e-5,-3.3371567284018426e-8,-0.0017930360672664986,-2.3736813868647664e-5,-3.323619106299432e-8,-0.0017927757839283627,-2.3582117106361543e-5,-3.310107169625848e-8,-0.0017925963117210405,-2.3469363688785598e-5,-3.300241303329868e-8,-0.0017924682328384592,-2.342451096539411e-5,-3.296382113706184e-8,-0.0017923581550719071,-2.345828625550179e-5,-3.299539036168371e-8,-0.001792234150133278,-2.356759742598324e-5,-3.309481410911366e-8,-0.0017920696405059335,-2.3737980155055785e-5,-3.324947345493431e-8,-0.0017918461088012336,-2.3946656287756952e-5,-3.343914759620848e-8,-0.0017915547494891267,-2.416604836192296e-5,-3.363918826601897e-8,-0.0017911970460121622,-2.4367571375549456e-5,-3.382396166819764e-8,-0.0017907841940512808,-2.4525457139788785e-5,-3.3970302096064133e-8,-0.0017903353488858134,-2.4620205356925683e-5,-3.4060599419872674e-8,-0.001789874928831574,-2.464121873006898e-5,-3.408513361013069e-8,-0.0017894293545302076,-2.458842006514815e-5,-3.404350871950484e-8,-0.001789023505241213,-2.4472837169482275e-5,-3.394520600674971e-8,-0.0017886770648342907,-2.431614883409421e-5,-3.3809267595780996e-8,-0.0017884008200234735,-2.4149141187628658e-5,-3.366304609271047e-8,-0.001788192903348495,-2.4008712245158947e-5,-3.353964297579916e-8,-0.0017880354372265181,-2.393253545893989e-5,-3.347316905691076e-8,-0.0017878931539800256,-2.3950554353910987e-5,-3.34910405981934e-8,-0.0017877167144701928,-2.4073806065351983e-5,-3.360377068735919e-8,-0.001787453569690734,-2.428392045087678e-5,-3.379534491041236e-8,-0.0017870663495322726,-2.4530220442592966e-5,-3.402051298850108e-8,-0.0017865519910194932,-2.4741563720019448e-5,-3.4215448424805376e-8,-0.0017859491906381667,-2.4852189071213217e-5,-3.4321023197333045e-8,-0.001785325958533287,-2.482869995671932e-5,-3.4307016493753474e-8,-0.0017847528767015353,-2.4681669420333632e-5,-3.418245486606978e-8,-0.0017842781208460322,-2.4456188730650273e-5,-3.3987154219619505e-8,-0.0017839168488831807,-2.4210443635923462e-5,-3.3772695142451446e-8,-0.0017836554356915608,-2.3996010205156732e-5,-3.358499104157047e-8,-0.0017834629055072672,-2.384722325415727e-5,-3.345487005540549e-8,-0.0017833022278605421,-2.377911957973221e-5,-3.33961693481918e-8,-0.0017831382257718895,-2.3790191594592873e-5,-3.340803787799357e-8,-0.0017829420119458068,-2.386664304225821e-5,-3.347858835271957e-8,-0.0017826931337199766,-2.3986439556649512e-5,-3.35884337520014e-8,-0.001782380554182279,-2.4122805007119548e-5,-3.37138034186474e-8,-0.0017820030107513522,-2.424741808773985e-5,-3.382943346932811e-8,-0.0017815688268330704,-2.4333593880854584e-5,-3.391144581214018e-8,-0.0017810949919451016,-2.435957061890063e-5,-3.3940296734933424e-8,-0.0017806052023764001,-2.4311695591746605e-5,-3.3903609380761455e-8,-0.001780126733231539,-2.4186960953258744e-5,-3.3798419210927013e-8,-0.001779686389109376,-2.3994309151659606e-5,-3.363234575116789e-8,-0.0017793060255654567,-2.3754312161234117e-5,-3.3423362014270186e-8,-0.0017789982504817423,-2.3497003448101446e-5,-3.319796437690346e-8,-0.0017787629677499328,-2.325789658218794e-5,-3.2987743056121986e-8,-0.0017785853328477087,-2.307245026259536e-5,-3.2824528494159e-8,-0.001778435693719291,-2.29692203202828e-5,-3.2734270343295896e-8,-0.0017782724447692514,-2.2962114363640616e-5,-3.2729999425653523e-8,-0.0017780489744251891,-2.304310446279494e-5,-3.2805121499466924e-8,-0.0017777252482119056,-2.3178271529330762e-5,-3.292970232577239e-8,-0.0017772823647096638,-2.331129259651724e-5,-3.305351428606098e-8,-0.0017767346083272459,-2.3377529158287416e-5,-3.311868318348257e-8,-0.001776130764697321,-2.3326480780226323e-5,-3.3079844371637935e-8,-0.0017755397912121303,-2.3142506066602418e-5,-3.292267378791187e-8,-0.001775025923089456,-2.285130228165791e-5,-3.2669641431352325e-8,-0.001774626618706956,-2.2507845107702927e-5,-3.2369284423643596e-8,-0.0017743445685003865,-2.217390512592298e-5,-3.207630409849978e-8,-0.0017741544806826274,-2.1898231682136928e-5,-3.1834061464338805e-8,-0.0017740169436090173,-2.1707118952548065e-5,-3.166620956255327e-8,-0.001773891219541728,-2.1604779152879516e-5,-3.157692307526984e-8,-0.0017737432310165142,-2.157882930216389e-5,-3.155562491937049e-8,-0.0017735489504333692,-2.1606679331330368e-5,-3.1582552828697624e-8,-0.0017732949817235678,-2.1660754250425577e-5,-3.163336707176071e-8,-0.0017729779982578978,-2.1712249139899234e-5,-3.1682516270717386e-8,-0.0017726039251191308,-2.1733947237802756e-5,-3.170578892729579e-8,-0.0017721870422029683,-2.170274238348413e-5,-3.168258293259854e-8,-0.001771748742021881,-2.160228540957275e-5,-3.1598253034946674e-8,-0.001771315436498432,-2.142574791419228e-5,-3.144654198656495e-8,-0.0017709151725227585,-2.1178148251122183e-5,-3.123163082063926e-8,-0.0017705729667818262,-2.0877318554922502e-5,-3.096901728522543e-8,-0.00177030549185305,-2.055260685325797e-5,-3.0684433448224743e-8,-0.0017701162882080364,-2.0240789383713746e-5,-3.041032430169265e-8,-0.0017699929466398218,-1.99794218315807e-5,-3.018005089313501e-8,-0.0017699074633654773,-1.9798779288104986e-5,-3.002078373264498e-8,-0.0017698202590316055,-1.971411094245867e-5,-2.994657558110185e-8,-0.0017696875886955075,-1.9720002942223983e-5,-2.9953206911113435e-8,-0.0017694714315701055,-1.9788544043428927e-5,-3.0016365819494506e-8,-0.001769150179508032,-1.9872824099373976e-5,-3.009460999645151e-8,-0.0017687273917546744,-1.9916635597634004e-5,-3.013794933369788e-8,-0.0017682349328222557,-1.986951675134688e-5,-3.0101278511672435e-8,-0.00176772710105645,-1.970328034493384e-5,-2.995916376833186e-8,-0.0017672653670454336,-1.942323674398719e-5,-2.9715881402750377e-8,-0.0017668987135009146,-1.906762066737871e-5,-2.9404951820690843e-8,-0.0017666484557888058,-1.8694185914153163e-5,-2.9077305426574343e-8,-0.0017665045683398996,-1.836037649987278e-5,-2.8783779540595175e-8,-0.0017664336822339468,-1.810670803004512e-5,-2.85604298531802e-8,-0.0017663927590512497,-1.7949525459591675e-5,-2.8422063980110166e-8,-0.0017663414629926905,-1.7882936783559632e-5,-2.8363836548011972e-8,-0.001766249541876796,-1.7885707909765793e-5,-2.8367242121714928e-8,-0.001766099266242993,-1.7928819727490756e-5,-2.8406756909275128e-8,-0.0017658847993394775,-1.798137782732972e-5,-2.8455090069843767e-8,-0.001765610393070421,-1.8014480188581894e-5,-2.8486659197502897e-8,-0.0017652885448722823,-1.800366604960887e-5,-2.8479796999216368e-8,-0.0017649384258213695,-1.7930802219111313e-5,-2.8418420896184835e-8,-0.0017645842871166185,-1.778602853787445e-5,-2.829372109660203e-8,-0.0017642532352409623,-1.7569903288050705e-5,-2.81060198076404e-8,-0.001763971759473834,-1.7295278259522374e-5,-2.786641950500421e-8,-0.0017637607807011494,-1.698782162266873e-5,-2.7597305393828584e-8,-0.0017636298282722234,-1.668378910785923e-5,-2.7330463361969477e-8,-0.0017635720325075124,-1.6424062245120354e-5,-2.7101919283812356e-8,-0.0017635623160880396,-1.624485381333525e-5,-2.6943804573923697e-8,-0.0017635607308321933,-1.6167370096356146e-5,-2.6875224575923194e-8,-0.0017635211289864948,-1.6190012162179073e-5,-2.68952735608918e-8,-0.0017634030561349838,-1.6286391210993562e-5,-2.6981120973846906e-8,-0.0017631832067511017,-1.6410496829813158e-5,-2.7092420717209323e-8,-0.001762862804611093,-1.650784066444652e-5,-2.7181070789573557e-8,-0.001762468592752757,-1.6529538541808296e-5,-2.720366625840219e-8,-0.001762046894151369,-1.6445530812446836e-5,-2.713326263374019e-8,-0.0017616519554521687,-1.6253198861825676e-5,-2.696709599279156e-8,-0.0017613315225252794,-1.5978453405918325e-5,-2.672764292807032e-8,-0.0017611140058775958,-1.5668350101802668e-5,-2.645617877953825e-8,-0.0017610016624053787,-1.5377341425857762e-5,-2.6200694380823762e-8,-0.001760972152477191,-1.5152050261090025e-5,-2.6002466768736517e-8,-0.0017609872896826445,-1.5020078162915458e-5,-2.5886132235295784e-8,-0.0017610048499390252,-1.4986153105280482e-5,-2.585618781524479e-8,-0.0017609887967856529,-1.5035267740803247e-5,-2.5899659894477047e-8,-0.0017609151979063953,-1.5139768158020223e-5,-2.5992305073980463e-8,-0.001760773716567572,-1.5266958060346903e-5,-2.610532992986437e-8,-0.0017605661687073292,-1.5385079455718696e-5,-2.6210718388494383e-8,-0.0017603038826338377,-1.5467116653328303e-5,-2.6284636330568005e-8,-0.0017600050563999715,-1.5492918931559058e-5,-2.630931543163531e-8,-0.00175969254649456,-1.5450515709074643e-5,-2.6274181953792665e-8,-0.0017593918639489119,-1.5337330423786408e-5,-2.617687582404043e-8,-0.0017591287810466108,-1.516152233340109e-5,-2.6024399594225813e-8,-0.0017589258943309788,-1.4943092225619993e-5,-2.5834108333616962e-8,-0.0017587977883399433,-1.4713698844311321e-5,-2.563361964748376e-8,-0.001758745306123578,-1.4513557060983797e-5,-2.5458186180871662e-8,-0.0017587508567577885,-1.4384033445413648e-5,-2.534426611652559e-8,-0.0017587779139626098,-1.4356303112866524e-5,-2.5319563744401592e-8,-0.0017587774818432792,-1.4439371548397277e-5,-2.5392423095802513e-8,-0.0017587014180465244,-1.461308765223457e-5,-2.5545545630735418e-8,-0.0017585182143315644,-1.4831017637906244e-5,-2.573837988454579e-8,-0.001758224300036135,-1.5033522952700285e-5,-2.5918544356983626e-8,-0.0017578456814572269,-1.5165890121277228e-5,-2.6037769834404815e-8,-0.0017574296827317477,-1.5194062164951215e-5,-2.6065783871821737e-8,-0.0017570309130902051,-1.5112670663097581e-5,-2.5997452534758276e-8,-0.001756696813994369,-1.4944139321311835e-5,-2.5852086776316284e-8,-0.0017564568402563836,-1.473071652369088e-5,-2.566653582995585e-8,-0.0017563173354597894,-1.4522642160396031e-5,-2.548486082353178e-8,-0.0017562624354948073,-1.4365851015030895e-5,-2.5347546705261553e-8,-0.0017562599735600776,-1.4292151664489295e-5,-2.5282821848690496e-8,-0.001756270345717931,-1.4313890299943314e-5,-2.5301868529854778e-8,-0.0017562557588578422,-1.4423796145213121e-5,-2.5398581829437754e-8,-0.0017561874812613571,-1.4599191257972496e-5,-2.5553204717269587e-8,-0.0017560497205785389,-1.4808590783445874e-5,-2.573812424229174e-8,-0.0017558401001670073,-1.501849889141526e-5,-2.5923886858305346e-8,-0.0017555677036126833,-1.5198851791683837e-5,-2.6084035700955837e-8,-0.0017552499882569114,-1.5326523211685818e-5,-2.6198219746351277e-8,-0.0017549096171388453,-1.5387143092883683e-5,-2.625378099409158e-8,-0.0017545716844747704,-1.5375917958639373e-5,-2.624643446693762e-8,-0.0017542612485054693,-1.5298085448759974e-5,-2.618062930004095e-8,-0.0017540007404882867,-1.5169273450952789e-5,-2.6069861979063126e-8,-0.0017538066861335557,-1.5015531634949477e-5,-2.593675647987724e-8,-0.0017536853789179659,-1.4872118319182157e-5,-2.5812093138283254e-8,-0.0017536279768385933,-1.4779491480665109e-5,-2.5731383005018647e-8,-0.001753606952723239,-1.477510058162383e-5,-2.5727704626657337e-8,-0.0017535772625469973,-1.4881293853944655e-5,-2.5821044107833472e-8,-0.0017534854838303832,-1.5093084239007569e-5,-2.600743669074431e-8,-0.001753286710863749,-1.5372854528035302e-5,-2.6254185280220255e-8,-0.0017529628465813953,-1.5658309245887e-5,-2.650676375421154e-8,-0.0017525321779777868,-1.5882916451512282e-5,-2.6706754294287406e-8,-0.0017520438774256833,-1.599931632431093e-5,-2.6812413521358316e-8,-0.0017515603547515798,-1.599389242849295e-5,-2.6811474485739375e-8,-0.0017511370747768787,-1.58870721613282e-5,-2.6721446136561115e-8,-0.0017508085426400448,-1.5722498178991464e-5,-2.6580205900138525e-8,-0.001750583522276346,-1.5552126055896935e-5,-2.6433054088095324e-8,-0.0017504477988545496,-1.5423007708300132e-5,-2.6321212129111954e-8,-0.001750371174214469,-1.5368439711583733e-5,-2.62740633198849e-8,-0.001750315851837096,-1.5403810993203438e-5,-2.630543047416448e-8,-0.0017502443819633047,-1.552642617773328e-5,-2.641330452405617e-8,-0.0017501260881107377,-1.5718366270618406e-5,-2.6582255837826362e-8,-0.001749941315168841,-1.595138996435713e-5,-2.6787687878177625e-8,-0.0017496832210316077,-1.6192740022060927e-5,-2.7000937830024997e-8,-0.0017493572693855985,-1.6410744434680557e-5,-2.719422519070173e-8,-0.001748978948913387,-1.6579358203906588e-5,-2.7344668887639668e-8,-0.0017485704968312657,-1.6681163415333903e-5,-2.74369274282324e-8,-0.0017481574240992264,-1.670883282721197e-5,-2.7464466784574147e-8,-0.0017477653066889829,-1.666547427544194e-5,-2.742983935525184e-8,-0.0017474168841164288,-1.6564305460559376e-5,-2.7344394725503e-8,-0.001747129279233854,-1.6427879931202274e-5,-2.722763656186771e-8,-0.0017469110243550452,-1.6286771476204226e-5,-2.7106146180372478e-8,-0.0017467586534195868,-1.6177063093025705e-5,-2.7011472007132247e-8,-0.0017466533463252492,-1.6135412490742596e-5,-2.6975864478472212e-8,-0.0017465594178202246,-1.6190686058868135e-5,-2.7024931986323628e-8,-0.0017464276261986936,-1.6352739951425828e-5,-2.7167717614836124e-8,-0.0017462061719448097,-1.6602042086509395e-5,-2.7387475511613235e-8,-0.0017458589390846183,-1.688727509586495e-5,-2.7639480984314817e-8,-0.001745383793112345,-1.7137548063945405e-5,-2.7861723308800773e-8,-0.001744819115139456,-1.7287659579105718e-5,-2.7997065592867195e-8,-0.0017442316274042247,-1.7303833560797986e-5,-2.8015768007836517e-8,-0.0017436912573285538,-1.7194973975304273e-5,-2.7925287860788828e-8,-0.001743247452036388,-1.7004614184730193e-5,-2.7763247275154654e-8,-0.0017429180130239536,-1.6791404372740664e-5,-2.758049651565357e-8,-0.0017426913839497045,-1.6609904370917028e-5,-2.7424492345162885e-8,-0.001742536475141356,-1.649859690995107e-5,-2.7328913073261393e-8,-0.0017424137905466815,-1.6475754777084468e-5,-2.731001280582881e-8,-0.0017422844622990985,-1.6540670952381766e-5,-2.7367575703814308e-8,-0.001742116355369948,-1.6677544114767887e-5,-2.7488179361086792e-8,-0.0017418876343611228,-1.686031928037145e-5,-2.764933739189588e-8,-0.0017415883616594284,-1.70577248174131e-5,-2.782387438953023e-8,-0.0017412205022093819,-1.7238115114124338e-5,-2.7984175560639326e-8,-0.0017407965855088022,-1.737379930727008e-5,-2.8106002984605667e-8,-0.0017403372333003285,-1.744456666693547e-5,-2.81716008451723e-8,-0.0017398678463401798,-1.7440083829039737e-5,-2.817179627356715e-8,-0.0017394149398974874,-1.7360942313155324e-5,-2.8106908907450188e-8,-0.0017390025998627163,-1.7218462503755394e-5,-2.7986581351569095e-8,-0.0017386492629266872,-1.7033516940844868e-5,-2.78287765345854e-8,-0.0017383648667583472,-1.6834511621145167e-5,-2.7658071698212013e-8,-0.0017381483860776027,-1.6654526309760896e-5,-2.750323777098479e-8,-0.0017379857880764208,-1.6527352718845074e-5,-2.7393844848311547e-8,-0.0017378488996451671,-1.6481799532138352e-5,-2.735530264547702e-8,-0.0017376966372265247,-1.653390656976417e-5,-2.7402002468754002e-8,-0.0017374807521994074,-1.6678137811977933e-5,-2.752950967892001e-8,-0.0017371577619254865,-1.6881003467352378e-5,-2.7708880462880502e-8,-0.0017367058418978965,-1.7082956805723142e-5,-2.7888277038928824e-8,-0.0017361397871615877,-1.7213636041267133e-5,-2.8006313607759834e-8,-0.0017355130919502622,-1.7217983517437767e-5,-2.8014887489228886e-8,-0.0017349010873700975,-1.7080148864802256e-5,-2.789998107144859e-8,-0.0017343723348015217,-1.6829898005292252e-5,-2.7687166142917287e-8,-0.0017339647832955254,-1.6527764114669422e-5,-2.742869117101087e-8,-0.0017336786370508808,-1.6239846977128967e-5,-2.718170516827529e-8,-0.0017334849605685624,-1.6017009429821272e-5,-2.6990333500378085e-8,-0.0017333407869161536,-1.588567181395312e-5,-2.6877727087182345e-8,-0.0017332024740586718,-1.5848606242811324e-5,-2.6846667644146168e-8,-0.0017330340615586818,-1.5890746362680283e-5,-2.68844715727071e-8,-0.0017328110493750382,-1.598598400945783e-5,-2.696877596915934e-8,-0.00173252127473545,-1.6103053832416733e-5,-2.7072598915931684e-8,-0.0017321643150833425,-1.6210210138051937e-5,-2.716841036510506e-8,-0.0017317501140170313,-1.6278998147010685e-5,-2.723144593688566e-8,-0.0017312970188940173,-1.6287366080985484e-5,-2.7242447571344237e-8,-0.0017308292084595779,-1.6222185622260528e-5,-2.7189872388028625e-8,-0.001730373452436675,-1.6081006942388617e-5,-2.7071418830950497e-8,-0.0017299553582569695,-1.5872667604661172e-5,-2.6894553273205772e-8,-0.0017295955423252537,-1.5616500957420817e-5,-2.6675832877706237e-8,-0.0017293061873740823,-1.5340170469505593e-5,-2.6439061947713e-8,-0.0017290883470865532,-1.507625010199129e-5,-2.6212382075122478e-8,-0.0017289303472872032,-1.485771739629063e-5,-2.6024423253133448e-8,-0.0017288076171489378,-1.4712600788592941e-5,-2.5899692716363257e-8,-0.0017286843786890062,-1.4657982104751628e-5,-2.5853345982890227e-8,-0.0017285179920752429,-1.469378801204321e-5,-2.5885710544355952e-8,-0.0017282669016267444,-1.4797809692912494e-5,-2.597784298491023e-8,-0.0017279022709099565,-1.4924826606494031e-5,-2.6090678957383975e-8,-0.0017274210330882648,-1.5013539408658058e-5,-2.6171041964052904e-8,-0.0017268544886931924,-1.500339980186787e-5,-2.6166307322124555e-8,-0.0017262646488298942,-1.4857541654773406e-5,-2.6044338623451537e-8,-0.0017257250829835684,-1.4580494467278208e-5,-2.5808814537283378e-8,-0.0017252937794389228,-1.4218526667931194e-5,-2.5499476937908507e-8,-0.0017249930231404602,-1.3840794807331261e-5,-2.517585149150039e-8,-0.0017248067699141875,-1.351270711306445e-5,-2.4894335555473773e-8,-0.0017246934534974646,-1.3276295708485894e-5,-2.4691333401292228e-8,-0.0017246038274408126,-1.314433765536367e-5,-2.4578159853052325e-8,-0.0017244948196652298,-1.3105269854769773e-5,-2.454517288778279e-8,-0.0017243364526524838,-1.3132362073222714e-5,-2.456957312402072e-8,-0.0017241132667976712,-1.3192342565411862e-5,-2.4622786661510245e-8,-0.0017238228661482834,-1.325163183139236e-5,-2.4675851118792835e-8,-0.0017234735662261548,-1.3280343921097598e-5,-2.470291409721152e-8,-0.0017230820075737141,-1.3254924222723466e-5,-2.4683557620105018e-8,-0.0017226707950760843,-1.3160121817767504e-5,-2.4604525475472103e-8,-0.001722265910630456,-1.2990581890931382e-5,-2.4461095384133306e-8,-0.001721893605087852,-1.275194862461917e-5,-2.4258014835579526e-8,-0.0017215766694778005,-1.2461004044485085e-5,-2.400961012256891e-8,-0.0017213304202050618,-1.2144266502687791e-5,-2.373858904526001e-8,-0.0017211591144521662,-1.1834740035222872e-5,-2.3473278345894057e-8,-0.0017210536379387664,-1.15669121811399e-5,-2.3243368159746304e-8,-0.0017209912434660293,-1.137053703664978e-5,-2.3074600444917153e-8,-0.00172093786428734,-1.126418106526938e-5,-2.2983213066028008e-8,-0.0017208531150557185,-1.1249725559581083e-5,-2.2971150222902847e-8,-0.0017206977257007766,-1.1309037278010377e-5,-2.3023095245395752e-8,-0.0017204427559582552,-1.1404176889886242e-5,-2.3106548502949438e-8,-0.0017200791234227555,-1.1482681882738014e-5,-2.3176327687590162e-8,-0.0017196246541953794,-1.148889330573019e-5,-2.3184350335903796e-8,-0.001719124641958263,-1.1380227657635337e-5,-2.3093722950941158e-8,-0.0017186423638384035,-1.114361781624759e-5,-2.289295661201278e-8,-0.0017182400231541156,-1.0804036814357762e-5,-2.2603315828948557e-8,-0.0017179572397719124,-1.0418304686722344e-5,-2.2273489276189473e-8,-0.0017177979779009823,-1.0055136813138216e-5,-2.1962468500676522e-8,-0.0017177326568771723,-9.771363476111051e-6,-2.171915971274942e-8,-0.0017177126940655086,-9.59618259083335e-6,-2.1568855933039855e-8,-0.0017176882158911563,-9.528664202440341e-6,-2.151102115154199e-8,-0.0017176207842986657,-9.54532916023194e-6,-2.152570092195504e-8,-0.001717488539588401,-9.61114215968148e-6,-2.1582903167043163e-8,-0.0017172856020235222,-9.688935408136953e-6,-2.1650695633700068e-8,-0.0017170188075453885,-9.745503388018222e-6,-2.1700489974222203e-8,-0.001716704030343493,-9.75481187740589e-6,-2.1709853665659155e-8,-0.001716363051667733,-9.699527683861308e-6,-2.1663854398151375e-8,-0.0017160209740540878,-9.571902058244573e-6,-2.155581284513286e-8,-0.0017157037275235207,-9.374493289871258e-6,-2.1387892099804606e-8,-0.0017154351582843574,-9.12063251889091e-6,-2.1171465309349033e-8,-0.0017152334371241793,-8.834059379219236e-6,-2.0926792740536966e-8,-0.0017151070380174468,-8.54691461997685e-6,-2.0681324010697784e-8,-0.0017150511747853247,-8.295434661355793e-6,-2.0466057621787945e-8,-0.0017150460711992154,-8.113332137404114e-6,-2.030992124260642e-8,-0.0017150584488687581,-8.023886119027629e-6,-2.0233017236108107e-8,-0.0017150469068009022,-8.032794681682757e-6,-2.0240470470753276E-08,-0.0017149705846409252,-8.124212126971078e-6,-2.031895666669989e-8,-0.0017147992299687779,-8.261786867259084e-6,-2.043750161115691e-8,-0.0017145220766764634,-8.39524066367176e-6,-2.0553060054856926e-8,-0.001714152932724592,-8.471588872493842e-6,-2.062012893709478e-8,-0.0017137294505731322,-8.448766698921679e-6,-2.0602470471424994e-8,-0.0017133056268037235,-8.30827935977141e-6,-2.0484010951138584e-8,-0.0017129382965746429,-8.062726137621993e-6,-2.0275329834940626e-8,-0.0017126708829768335,-7.754388283059394e-6,-2.0012476947012425e-8,-0.0017125200757254853,-7.443621313326269e-6,-1.9747060849152198e-8,-0.0017124712795059404,-7.190431363037621e-6,-1.9530504080148718e-8,-0.001712485108463056,-7.0366396458408515e-6,-1.9398773754969298e-8,-0.0017125116285125956,-6.995979960543143e-6,-1.9363850589301513e-8,-0.0017125055152946264,-7.054904126090996e-6,-1.941433171688431e-8,-0.0017124362267456486,-7.181290036679982e-6,-1.9522819783303132e-8,-0.0017122912356786113,-7.33559115667751e-6,-1.9655458212988638e-8,-0.0017120739679193392,-7.480041670713854e-6,-1.9779851901213196e-8,-0.0017117993662422982,-7.584250733816216e-6,-1.9869913460128613e-8,-0.0017114893374762983,-7.627641340691138e-6,-1.9907989660052855e-8,-0.0017111690927208221,-7.6000125055850025e-6,-1.9885345225042433e-8,-0.0017108644073861132,-7.501412760528949e-6,-1.9802025000362843e-8,-0.0017105992780522003,-7.341978719606794e-6,-1.966667578346078e-8,-0.0017103933189507282,-7.1417111820099305e-6,-1.949632951528594e-8,-0.0017102585004460788,-6.929573781906971e-6,-1.9315642219774395e-8,-0.0017101954017993111,-6.7409497837180035e-6,-1.9154764556717096e-8,-0.0017101899463117245,-6.612514274616833e-6,-1.904501927146042e-8,-0.0017102124219094009,-6.574302226505446e-6,-1.9012164611844463e-8,-0.0017102208546907933,-6.640381461484933e-6,-1.906841604034119e-8,-0.0017101696872487946,-6.801430426475136e-6,-1.920604126355059e-8,-0.0017100221870999638,-7.023203351349197e-6,-1.939596217498844e-8,-0.0017097624173563275,-7.2532026779098715e-6,-1.959339512897098e-8,-0.0017094018542985613,-7.4343348959541015e-6,-1.9749511339903364e-8,-0.0017089776595243197,-7.520980981562084e-6,-1.982519953065219e-8,-0.0017085430785728673,-7.491875094526717e-6,-1.98021064005799e-8,-0.0017081533169143335,-7.355782261528479e-6,-1.968751486928549e-8,-0.0017078512816734047,-7.148736530329722e-6,-1.9512013140907094e-8,-0.0017076570788535014,-6.924050653939927e-6,-1.9321004792382517e-8,-0.0017075639301940206,-6.73805286028801e-6,-1.9162573935492407e-8,-0.0017075414744693901,-6.635623404704152e-6,-1.9075152574921577e-8,-0.0017075452538536885,-6.6397481673598866e-6,-1.907856769945405e-8,-0.0017075291279762277,-6.74799680854229e-6,-1.917095975773456e-8,-0.001707456464753147,-6.936270654025548e-6,-1.9331909124735297e-8,-0.001707306873839935,-7.167486224038338e-6,-1.9529815014463757e-8,-0.0017070774940020905,-7.40150152130711e-6,-1.9730384470556232e-8,-0.001706780055599116,-7.603160648750164e-6,-1.9903542367193303e-8,-0.0017064359548183703,-7.747073464223104e-6,-2.0027552034501053e-8,-0.0017060712869391593,-7.819370843360752e-6,-2.009053088308096e-8,-0.0017057128647851082,-7.81750689300007e-6,-2.0090272816758505e-8,-0.0017053853475831233,-7.749258787440385e-6,-2.0033369653230264e-8,-0.0017051090246987348,-7.63165252439743e-6,-1.9934273203516424e-8,-0.0017048976130836205,-7.48990374053086e-6,-1.9814391821666054e-8,-0.0017047556071532683,-7.355870167993619e-6,-1.9700800557958514e-8,-0.0017046752314598494,-7.265069438578037e-6,-1.962374814999241e-8,-0.001704633907873945,-7.251176602605976e-6,-1.9612010035070857e-8,-0.0017045942123405239,-7.337574074837141e-6,-1.968569133958673e-8,-0.0017045088636094908,-7.527447475358424e-6,-1.984773628854404e-8,-0.0017043321125059295,-7.796609969145614e-6,-2.0077728553648004e-8,-0.0017040352892301902,-8.094628881719389e-6,-2.033278529821439e-8,-0.0017036199174814714,-8.357321757473915e-6,-2.0558199710134475e-8,-0.0017031207453830734,-8.527279641554265e-6,-2.07049674527795e-8,-0.0017025957211632837,-8.573251713438601e-6,-2.0746330786424403e-8,-0.0017021073995130097,-8.499347348814524e-6,-2.0685612575558143e-8,-0.0017017044497118188,-8.341162243397592e-6,-2.0552915628861326e-8,-0.0017014101770728533,-8.152663137236833e-6,-2.0393996128262026e-8,-0.001701220123087332,-7.99029114266652e-6,-2.0256802195303342e-8,-0.0017011069963663247,-7.899440803721392e-6,-2.0180015465234488e-8,-0.0017010298088642021,-7.905934485141747e-6,-2.0185786978182623e-8,-0.0017009442845075707,-8.013087611659719e-6,-2.0277176829621546e-8,-0.001700812271449088,-8.203778005991368e-6,-2.043983579510598e-8,-0.001700608518360257,-8.446292559298515e-6,-2.0646923134808663e-8,-0.0017003238336688721,-8.702227743979316e-6,-2.086581340902206e-8,-0.0016999645473487364,-8.934420936028888e-6,-2.106486263485468e-8,-0.00169954913513485,-9.113190354238928e-6,-2.1218747636263865e-8,-0.0016991033874861217,-9.22001102864717e-6,-2.1311618593498575e-8,-0.0016986554807616981,-9.248647435155238e-6,-2.13380740034121e-8,-0.0016982318855080062,-9.204399731118582e-6,-2.1302519561850147e-8,-0.0016978543995590132,-9.10238542444722e-6,-2.121770451114759e-8,-0.0016975380294125626,-8.965565187764711e-6,-2.1103046899748445e-8,-0.0016972892355614753,-8.822716746064468e-6,-2.0982928734896224e-8,-0.001697104147393287,-8.706075816679848e-6,-2.0884721675880377e-8,-0.0016969666972081788,-8.647926619789557e-6,-2.0835920379221263e-8,-0.00169684740011825,-8.675181170249637e-6,-2.0859546028640884e-8,-0.0016967045804855362,-8.801519162920972e-6,-2.0967436610679105e-8,-0.0016964905065300056,-9.01844333619171e-6,-2.1152579343920042e-8,-0.0016961639731149969,-9.289415793960601e-6,-2.138406153842879e-8,-0.001695707106127775,-9.553311743058151e-6,-2.160998864081665e-8,-0.0016951385176591758,-9.741104001052941e-6,-2.1771702413548394e-8,-0.0016945128063564176,-9.801298769835388e-6,-2.1825425829586347e-8,-0.001693902985101117,-9.720976758235634e-6,-2.176009941619977e-8,-0.0016933741666031645,-9.529958261736527e-6,-2.1600847624303437e-8,-0.0016929627649807358,-9.286767509844959e-6,-2.1397063223247418e-8,-0.0016926700984223038,-9.056285660978077e-6,-2.1203544267075215e-8,-0.0016924690855679811,-8.890755742029625e-6,-2.1064502321326876e-8,-0.0016923170302585921,-8.819805710338477e-6,-2.1005150945671767e-8,-0.0016921682214408472,-8.8489478525651e-6,-2.1030391509463162e-8,-0.0016919833229793798,-8.963433333096914e-6,-2.1127991678712995e-8,-0.0016917350451069605,-9.1345146397534e-6,-2.1273812337831973e-8,-0.0016914106590955637,-9.326304850307346e-6,-2.1437577987506275e-8,-0.0016910119930584138,-9.50234733555081e-6,-2.158843896357954e-8,-0.0016905533915853798,-9.631291450467526e-6,-2.1699798048136526e-8,-0.0016900581754099764,-9.69110899668149e-6,-2.1752905508392625e-8,-0.0016895542586885487,-9.671493446052107e-6,-2.1738910779710982e-8,-0.0016890696305639124,-9.574362283327237e-6,-2.1659302094648493e-8,-0.0016886283866275086,-9.412685663855614e-6,-2.1524925607916213e-8,-0.001688247743667381,-9.208192002297713e-6,-2.1354054577412935e-8,-0.0016879360364431592,-8.98854909081757e-6,-2.1170017704178606e-8,-0.0016876914563649197,-8.784322466768402e-6,-2.0998642806816554e-8,-0.0016875013089274406,-8.625690463057586e-6,-2.086549585606093e-8,-0.0016873417279686287,-8.53858560005698e-6,-2.0792626469016813e-8,-0.001687178325547085,-8.539692110101775e-6,-2.079432297753112e-8,-0.0016869691166023061,-8.630151987089456e-6,-2.0871746461888742e-8,-0.0016866715029369072,-8.789267347131455e-6,-2.100754636158876e-8,-0.001686254318023176,-8.97163165767185e-6,-2.1163398058176738e-8,-0.0016857129301765929,-9.112940780203801e-6,-2.1284938230037018e-8,-0.0016850801573558933,-9.148161471228022e-6,-2.1317184884815498e-8,-0.001684422796496244,-9.037763226930734e-6,-2.122672379094548e-8,-0.0016838198027999708,-8.787797426035769e-6,-2.1018591580797273e-8,-0.0016833318949512636,-8.44940531154977e-6,-2.0735764854021037e-8,-0.0016829803888256231,-8.096954946202853e-6,-2.0440726785689123e-8,-0.0016827459755191082,-7.799047296914452e-6,-2.0191141842253217e-8,-0.001682583454796451,-7.598483392665845e-6,-2.0023083749209106e-8,-0.0016824406087873034,-7.507046345778621e-6,-1.9946647297024858e-8,-0.00168227233893414,-7.511005682637191e-6,-1.995050767444206e-8,-0.0016820477635596358,-7.580629314178077e-6,-2.0009840918065495e-8,-0.0016817519149339769,-7.679226904576688e-6,-2.0093885939198342e-8,-0.0016813844563981313,-7.770076038468931e-6,-2.017176810577966e-8,-0.00168095711875254,-7.821310599237092e-6,-2.02166337334569e-8,-0.0016804905773571324,-7.809332280904686e-6,-2.020854689581189e-8,-0.001680010953275545,-7.72105576611143e-6,-2.013639837823021e-8,-0.001679546036692029,-7.555014866778501e-6,-1.999884849506686e-8,-0.0016791214090587767,-7.3212178391739496e-6,-1.9804212819061585e-8,-0.0016787568208649483,-7.0396326381076e-6,-1.956919439356282e-8,-0.0016784633058374865,-6.737431280764423e-6,-1.9316573595337173e-8,-0.0016782413530992905,-6.445394475960026e-6,-1.907219462969039e-8,-0.001678080222805157,-6.193862700986028e-6,-1.8861571689255484e-8,-0.0016779584103784654,-6.008506027515523e-6,-1.8706342929766363e-8,-0.001677845249146384,-5.906093833141004e-6,-1.8620715185890165e-8,-0.0016777038192801804,-5.890290612856807e-6,-1.8607914310898255e-8,-0.0016774958004093384,-5.947719194763358e-6,-1.8656841222782147e-8,-0.0016771890493794792,-6.04551842846217e-6,-1.873997969081269e-8,-0.001676767832841618,-6.132885965309012e-6,-1.8814675758844495e-8,-0.0016762435242489034,-6.149771262434435e-6,-1.8830466334363702e-8,-0.0016756602448421592,-6.044400624246342e-6,-1.8743841862040513e-8,-0.001675087945535953,-5.795520152856072e-6,-1.8536922752685177e-8,-0.001674600133436057,-5.427392994706577e-6,-1.8229981102522346e-8,-0.0016742451149479186,-5.004926323171685e-6,-1.7877295972549893e-8,-0.0016740276746855878,-4.608399079730942e-6,-1.7546004506771972e-8,-0.0016739119980301556,-4.302510944871832e-6,-1.729026756861099e-8,-0.0016738412334485694,-4.117301795986611e-6,-1.7135338860309113e-8,-0.0016737597260480786,-4.047201977927108e-6,-1.7076725758927597e-8,-0.0016736272940627243,-4.062129813392705e-6,-1.708939796436854e-8,-0.0016734236526182423,-4.121225593287399e-6,-1.7139232302019368e-8,-0.0016731464204356393,-4.183527382690121e-6,-1.719194905092986e-8,-0.001672806667024793,-4.214324596648135e-6,-1.721846074771176e-8,-0.0016724243936852225,-4.1882372375009135e-6,-1.7197481453770475e-8,-0.0016720247121886067,-4.090499672781078e-6,-1.71166177315317e-8,-0.001671634560924054,-3.9173958791691575e-6,-1.697273167292582e-8,-0.0016712796064216253,-3.676148262014399e-6,-1.677183719774153e-8,-0.0016709811132979546,-3.3841381804794744e-6,-1.6528438089025636e-8,-0.001670752839878428,-3.067097445950772e-6,-1.626401154436992e-8,-0.0016705983902454557,-2.755995668689129e-6,-1.6004410253319553e-8,-0.0016705096420609104,-2.4827410471397807e-6,-1.5776279333381472e-8,-0.0016704667555038147,-2.2751486697532836e-6,-1.5602864533974782e-8,-0.001670440054529566,-2.151829226592785e-6,-1.5499751063543376e-8,-0.001670393800312215,-2.117817669325008e-6,-1.5471212409242127e-8,-0.001670291584102462,-2.1617204405963794e-6,-1.5507814775575798e-8,-0.0016701029794063543,-2.2550054075283997e-6,-1.5585801952800447e-8,-0.0016698110099757678,-2.354258371242796e-6,-1.5668961170856538e-8,-0.0016694193436379667,-2.4075797922360825e-6,-1.5713962061550806e-8,-0.0016689568880535386,-2.3659216383981152e-6,-1.5679837674904023e-8,-0.001668476255894404,-2.198389705642687e-6,-1.5540770761251108e-8,-0.0016680427111036224,-1.9070635849955495e-6,-1.5298448763090533e-8,-0.0016677138985701416,-1.5331708742942751e-6,-1.49871845626283e-8,-0.001667517861434114,-1.147223731015582e-6,-1.4665690841976024e-8,-0.0016674416245268775,-8.243545513833562e-7,-1.4396566986045408e-8,-0.0016674379465091208,-6.170824570407865e-7,-1.4223645290633774e-8,-0.0016674458929825874,-5.401446955353702e-7,-1.415932767755485e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json new file mode 100644 index 000000000..ddc7d4dd9 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_20.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":20000,"numberOfSamples":1000,"samples":[0.002920358133904192,-6.784113942412794e-6,1.9052440314477163e-8,0.0029206413912713745,-6.613636446664559e-6,1.880279195741177e-8,0.0029208307139081857,-6.4248857259363685e-6,1.8526799455172666e-8,0.002920930147853429,-6.259580496894272e-6,1.8285299846459358e-8,0.002920958301557765,-6.151401288497133e-6,1.8127384394993633e-8,0.002920943527534336,-6.121517965926748e-6,1.8083876197142136e-8,0.002920918375602291,-6.176714362040785e-6,1.816459054828576e-8,0.0029209142523147777,-6.309966452545619e-6,1.8359183512205728e-8,0.0029209570493570875,-6.502919273456435e-6,1.864078390277559e-8,0.0029210641805222245,-6.729529878146821e-6,1.8971329337261025e-8,0.0029212431239192664,-6.960111764971586e-6,1.9307474224319167e-8,0.0029214911994797127,-7.165144308668532e-6,1.960613535377138e-8,0.002921796120285953,-7.318617634903727e-6,1.982935162046132e-8,0.002922137007124233,-7.4010933087209115e-6,1.994874542519259e-8,0.0029224858842140738,-7.402792330024526e-6,1.9950053694911065e-8,0.0029228100891597296,-7.3269133160290385e-6,1.9838013786501703e-8,0.0029230765056806078,-7.192875581754198e-6,1.9641124744988003e-8,0.002923258593947595,-7.038021661925838e-6,1.941411030247615e-8,0.0029233461420444737,-6.914897975233613e-6,1.9233867338703342e-8,0.0029233550561071457,-6.88082642372724e-6,1.9184132872670825e-8,0.002923331035256764,-6.979157664713172e-6,1.9328047777690732e-8,0.002923340142385916,-7.2183869507838524e-6,1.9677702094935728e-8,0.002923445583922481,-7.561828631160178e-6,2.0179192009197127e-8,0.002923681317946548,-7.937980661899995e-6,2.072789220706034e-8,0.0029240384097172193,-8.268180631197756e-6,2.1208898937220332e-8,0.0029244717828463846,-8.495446917109097e-6,2.1539128515592525e-8,0.0029249206337382287,-8.5993447870362e-6,2.168897594018406e-8,0.0029253292642615033,-8.593866031641322e-6,2.1679150221309016e-8,0.002925659785723746,-8.515407336314436e-6,2.1563040883823154e-8,0.0029258958667452545,-8.409144036535884e-6,2.140676187245665e-8,0.0029260405842169023,-8.318330424117874e-6,2.1273515340970926e-8,0.0029261116369550147,-8.277597083016847e-6,2.1213831819462888e-8,0.0029261360482877165,-8.309529221173803e-6,2.1260608728115165e-8,0.0029261452014683505,-8.42340926017503e-6,2.142729184107828e-8,0.002926170313882796,-8.615486024606374e-6,2.1708269585437497e-8,0.00292623844165663,-8.870566448345604e-6,2.2081201504360447e-8,0.00292636924853009,-9.164729529600066e-6,2.2511001728707966e-8,0.0029265727710682966,-9.46889441648262e-6,2.295507952203869e-8,0.0029268483980316373,-9.752900430721535e-6,2.336931848773817e-8,0.0029271851539575938,-9.989600330613871e-6,2.371405611551756e-8,0.0029275631112714875,-1.0158516530347245e-5,2.3959412562508196e-8,0.002927955664309901,-1.0248883948905652e-5,2.408973052847181e-8,0.002928332543885939,-1.0262052169211477e-5,2.4107097524156514e-8,0.002928663659626732,-1.0213176614852856e-5,2.4033835922844377e-8,0.002928924086482032,-1.0131859571605514e-5,2.391343414198871e-8,0.002929100469893201,-1.006068720901442e-5,2.380835533385682e-8,0.00292919825272032,-1.0049779074946679e-5,2.3791978424671676e-8,0.0029292472514429032,-1.0145544621233506e-5,2.3932078427797663e-8,0.0029293008561212352,-1.0374107175155202e-5,2.4266580620660107e-8,0.0029294238469290295,-1.0725024417737487e-5,2.4779841229322424e-8,0.002929669111734987,-1.114611883277768e-5,2.539521780426727e-8,0.0029300535325597157,-1.1558053316444333e-5,2.599647534430263e-8,0.0029305485124082784,-1.1884615009568598e-5,2.647210161222967e-8,0.0029310923955805034,-1.2081611605397568e-5,2.675757842754958e-8,0.002931616304399638,-1.2148069338781219e-5,2.6851763811636517e-8,0.002932067285150511,-1.2117575796211164e-5,2.6804177118692685e-8,0.002932418917621506,-1.2040100109443465e-5,2.6688285414068273e-8,0.002932670230039864,-1.1965464765100921e-5,2.657720810322275e-8,0.0029328387680504554,-1.1933289258766363e-5,2.6528961772784398e-8,0.00293295270881014,-1.196897681852962e-5,2.658062017342903e-8,0.002933044376699607,-1.2083490982675024e-5,2.67480469420976e-8,0.0029331455921541476,-1.2274805413081184e-5,2.7028061070784242e-8,0.002933284292138651,-1.2529877406152909e-5,2.7401345594697467e-8,0.00293348183921598,-1.2826952297089921e-5,2.7835835906596038e-8,0.0029337508490475143,-1.3138354603080276e-5,2.829083170402535e-8,0.002934093645838865,-1.3433894030281315e-5,2.872201713802254e-8,0.0029345016544849406,-1.3684880135773215e-5,2.908736254701938e-8,0.0029349561406361926,-1.386840837531521e-5,2.935340201831078e-8,0.002935430486740117,-1.3971275110489517e-5,2.95009506018706e-8,0.002935893835760189,-1.3992889279387817e-5,2.9529348563241594e-8,0.002936315747796631,-1.3946693107954746e-5,2.9458526641335536e-8,0.0029366714399644074,-1.3859725730502529e-5,2.9328347332084718e-8,0.0029369471463227275,-1.3770076163005065e-5,2.919483182596872e-8,0.0029371450608840764,-1.3721886782902614e-5,2.912277265954847e-8,0.002937286864066753,-1.3757394229001907e-5,2.917400350300773e-8,0.0029374138979444495,-1.3905986529102212e-5,2.9391340967481903e-8,0.002937581299334286,-1.4172039349156543e-5,2.9780814874648412e-8,0.002937844163109093,-1.45262281968288e-5,3.029905020497397e-8,0.0029382377175291947,-1.4907319198974039e-5,3.085599616240686e-8,0.0029387598782889463,-1.5239082205155629e-5,3.13397558100923e-8,0.0029393676298225253,-1.5457827043506526e-5,3.165695446938089e-8,0.002939992216838139,-1.5536378976067384e-5,3.1767915909756623e-8,0.0029405653190518453,-1.5490797301223943e-5,3.169654522724492e-8,0.002941041254771594,-1.536815347138079e-5,3.151235350452084e-8,0.00294140542344543,-1.5225670745632641e-5,3.129971116966001e-8,0.0029416699353257774,-1.511314588614597e-5,3.113191036723647e-8,0.002941863403875871,-1.5063955018859357e-5,3.105791466104839e-8,0.002942020994539501,-1.5093505935668198e-5,3.110013611490886e-8,0.002942177366646585,-1.520170158147927e-5,3.125814014183412e-8,0.0029423625508156873,-1.537654151057894e-5,3.1514004634474597e-8,0.002942599690849947,-1.559743059921687e-5,3.183721614696178e-8,0.00294290359336924,-1.5838011990550073e-5,3.2188849522134435e-8,0.00294327957060671,-1.606891948600009e-5,3.252562907878252e-8,0.002943722566359027,-1.626091105834113e-5,3.2804552667574874e-8,0.0029442169460562008,-1.6388674978272435e-5,3.2988495583917805e-8,0.002944737613991192,-1.643514977217652e-5,3.3052553288382284e-8,0.002945253028492552,-1.6395599116742716e-5,3.299000825108424e-8,0.0029457301748656087,-1.6280316984019043e-5,3.2816276383530096e-8,0.0029461409054937337,-1.6114844458962526e-5,3.2569189442586106e-8,0.002946468467779173,-1.59369584836108e-5,3.230452078197805e-8,0.0029467127007430827,-1.5790452065963385e-5,3.20867790313752e-8,0.002946892484190752,-1.571653783339316e-5,3.19765091292342e-8,0.0029470444074099875,-1.574421226294738e-5,3.201610119609517e-8,0.00294721700040216,-1.5881334913556607e-5,3.2216717921521556e-8,0.002947460426363542,-1.6108825234197094e-5,3.2549869520431156e-8,0.002947812788728661,-1.6380947123874963e-5,3.294795449427606e-8,0.002948286406491707,-1.663423983095662e-5,3.3317466246604255e-8,0.0029488597757889802,-1.6805051579412595e-5,3.356478318315856e-8,0.0029494809972528905,-1.6850594771345913e-5,3.362711592054566e-8,0.0029500837834087173,-1.6764027436157334e-5,3.3494691584581735e-8,0.002950609547099543,-1.65754022846451e-5,3.321214488618771e-8,0.0029510248489415226,-1.6338277873894157e-5,3.285874310463184e-8,0.002951326908519711,-1.6110067758768604e-5,3.251932528889389e-8,0.002951537740617979,-1.5935923031543694e-5,3.226045946019777e-8,0.002951692897861342,-1.5841154803625142e-5,3.2119268917177497e-8,0.0029518308167177263,-1.5831373922113136e-5,3.210371527010424e-8,0.002951985680243071,-1.5896753371837802e-5,3.219898309769699e-8,0.0029521838394617654,-1.6017149276703177e-5,3.237510141211502e-8,0.0029524425171660266,-1.6166416508957604e-5,3.259333287301716e-8,0.002952769476479237,-1.631566760743691e-5,3.281097659429368e-8,0.0029531628666808734,-1.6435949662826805e-5,3.298530817637135e-8,0.002953611072809355,-1.6501010877409013e-5,3.307765926789581e-8,0.0029540929521073237,-1.6490693620487103e-5,3.305842467294873e-8,0.002954579264429746,-1.639499922671663e-5,3.291305556929234e-8,0.00295503617946976,-1.6218085914775832e-5,3.264794315872196e-8,0.0029554312636725514,-1.598068794654785e-5,3.2293958485677294e-8,0.002955741283648492,-1.5719093070127868e-5,3.1904895652031e-8,0.002955959806034109,-1.547937573783238e-5,3.154889715991773e-8,0.0029561017019983917,-1.5307268455907255e-5,3.129343797151466e-8,0.002956202124345455,-1.5236171399037398e-5,3.118759456372629e-8,0.002956309344895545,-1.5277053681785616e-5,3.124717312307237e-8,0.002956473061121083,-1.5413664099591182e-5,3.144774573045378e-8,0.002956731321048645,-1.56048785559379e-5,3.1728248939181924e-8,0.00295709965139376,-1.5793981380019647e-5,3.20047831722283e-8,0.002957565526219128,-1.592284518104132e-5,3.2191570296512827e-8,0.002958090281759539,-1.5947524626471783e-5,3.2223937815342005e-8,0.0029586188407144266,-1.5850738642942996e-5,3.2076690446522256e-8,0.002959094945026436,-1.5646720190761735e-5,3.177121976954928e-8,0.002959476848073268,-1.5376083073574004e-5,3.136786811924238e-8,0.0029597476091094625,-1.5092533249955837e-5,3.094622473963542e-8,0.0029599165389014807,-1.4847001851064014e-5,3.058161120537158e-8,0.0029600126576895124,-1.4675368085643121e-5,3.032691574396036e-8,0.0029600742944759875,-1.4593152680899354e-5,3.020479859533819e-8,0.0029601393336397405,-1.4596748310243467e-5,3.020960605628144e-8,0.002960238698290419,-1.4668406120361078e-5,3.031483113270092e-8,0.002960393348094185,-1.4782054688900286e-5,3.048176038556993e-8,0.0029606137208240614,-1.4908213038661743e-5,3.0666732803764704e-8,0.002960900307724539,-1.5017561814104221e-5,3.082638893027108e-8,0.002961244434757364,-1.50835587775595e-5,3.092151102287129e-8,0.0029616289196745093,-1.508481954343969e-5,3.092053838966425e-8,0.0029620288994349014,-1.5007922270276185e-5,3.080373072655211e-8,0.002962413625758523,-1.485083932757977e-5,3.056826258788275e-8,0.0029627502369207145,-1.4626387490437281e-5,3.023332794121676e-8,0.002963010182597418,-1.4364071234967201e-5,2.9842834228472035E-08,0.002963177767764606,-1.4107920694885702e-5,2.9462135061082662e-8,0.002963258245024794,-1.390835698351417e-5,2.9165907356940043e-8,0.002963281197327158,-1.3808595017261191e-5,2.9017964910745684e-8,0.0029632955592347656,-1.3829869002871433e-5,2.9049396981577167e-8,0.0029633562901483323,-1.396211303207011e-5,2.9244867118890364e-8,0.002963507429295757,-1.4165122782118485e-5,2.9544476640865564e-8,0.0029637685076608447,-1.4380196230406393e-5,2.986111941278739e-8,0.0029641293995320965,-1.4547336536681909e-5,3.010599812437667e-8,0.0029645544477331213,-1.462147944059388e-5,3.021262159737794e-8,0.002964993199433165,-1.4582947790407866e-5,3.015220993420224e-8,0.002965393786237881,-1.4440252912374524e-5,2.993775541428279e-8,0.002965715263846332,-1.4225700000439636e-5,2.9617431791449873e-8,0.002965936105661564,-1.3985740295725363e-5,2.926023813664994e-8,0.0029660572013795127,-1.3768956215185547e-5,2.893816297894991e-8,0.0029660991821764673,-1.361495218959358e-5,2.8709729777681658e-8,0.0029660954822132313,-1.3546940317984253e-5,2.8609061319606824e-8,0.0029660836753954115,-1.3569374678669404e-5,2.86424548981107e-8,0.002966097715672726,-1.3670152439685494e-5,2.8791723939980673e-8,0.002966162758787371,-1.382559151959131e-5,2.9021622975413763e-8,0.002966292909415142,-1.4006141463460001e-5,2.9288313696922994e-8,0.0029664912327432187,-1.4181368889154244e-5,2.9546719679842586e-8,0.00296675098439865,-1.432364071392131e-5,2.975594063607446e-8,0.0029670571768570203,-1.441068763053631e-5,2.988302426452729e-8,0.0029673880824924595,-1.4427641005829092e-5,2.990599124607975e-8,0.0029677168251591012,-1.4369146872198044e-5,2.9817001755657374e-8,0.002968013691011178,-1.4241810907193253e-5,2.962601250879183e-8,0.0029682500709710805,-1.4066513065220714e-5,2.93642059457502e-8,0.002968404731954602,-1.387910107568484e-5,2.9084963591962518e-8,0.002968471978193223,-1.3727039399383037e-5,2.88588007731629e-8,0.002968469059433979,-1.3659767445614165e-5,2.875897632722551e-8,0.0029684378958154877,-1.3713145157645224e-5,2.8838395498620046e-8,0.00296843646941631,-1.3893353069001035e-5,2.9105800690051132e-8,0.0029685202671800416,-1.4169383669450605e-5,2.9514779524273305e-8,0.0029687215722676882,-1.4480741544933563e-5,2.997532983204709e-8,0.0029690374925616814,-1.4758063993347154e-5,3.038452227517716e-8,0.002969432550313911,-1.494625005415047e-5,3.0660807023103234e-8,0.0029698527534371528,-1.501941615613648e-5,3.076614564288683e-8,0.002970242975131316,-1.4983590593674082e-5,3.070991787329774e-8,0.002970560707010411,-1.486978332026129e-5,3.053852833456252e-8,0.002970783380041674,-1.4722598896256202e-5,3.031840881526067e-8,0.0029709096528671933,-1.4588664344004444e-5,3.01187930361603e-8,0.0029709563531596737,-1.4507263299708571e-5,2.999782950169233e-8,0.0029709528196634203,-1.450412607323851e-5,2.9993430059943106e-8,0.0029709340930672533,-1.4588613765477793e-5,3.011917526326649e-8,0.0029709342235076834,-1.4754157039491757e-5,3.036503994043903e-8,0.0029709808089967682,-1.4981337496558506e-5,3.070201327711546e-8,0.0029710914938153535,-1.524256500555707e-5,3.1089054340748793e-8,0.0029712726180356206,-1.5507206205397086e-5,3.1480689014010646e-8,0.0029715197167699482,-1.5746211713835314e-5,3.1833846061620287e-8,0.002971819217195222,-1.5935676545529305e-5,3.211310994113541e-8,0.0029721506391493777,-1.6059298169857467e-5,3.2294356226821274e-8,0.002972488915422919,-1.6110085669579795e-5,3.236730284468479e-8,0.0029728068475521232,-1.609171171330991e-5,3.233754856855953e-8,0.0029730780491342918,-1.6019684593364873e-5,3.2228331099957483e-8,0.002973280996517472,-1.5922014544477006e-5,3.2081488017266414e-8,0.002973404663571169,-1.5838170077771026e-5,3.195582334149546e-8,0.0029734552005521004,-1.581431674792034e-5,3.1919928221359786e-8,0.002973461188362297,-1.589302000644207e-5,3.2036819078499595e-8,0.0029734728689441363,-1.609792381140514e-5,3.234121094806937e-8,0.0029735507610109523,-1.6418860094304986e-5,3.281753040259766e-8,0.002973744280704623,-1.6807320664665265e-5,3.3393348896120576e-8,0.0029740698756861514,-1.7189700640362698e-5,3.395915574472174e-8,0.002974502213153519,-1.7494403406110863e-5,3.4408643234550394e-8,0.002974984560957685,-1.767802825408724e-5,3.4677597890506306e-8,0.0029754513730213712,-1.773672456282881e-5,3.476073805538473e-8,0.002975849730807777,-1.7700253301847003e-5,3.470280180238341e-8,0.0029761508530331345,-1.7616516953682456e-5,3.4575409590022556e-8,0.0029763511916333146,-1.7535807952942615e-5,3.445351817065031e-8,0.0029764671850589274,-1.7499734982786542e-5,3.439891544803893e-8,0.002976527814731713,-1.753553605886131e-5,3.445182277720747e-8,0.0029765674333753333,-1.7654482487030005e-5,3.462863214504655e-8,0.0029766197783471023,-1.785285028144174e-5,3.4923452338110174e-8,0.002976713303471049,-1.8114495901758313e-5,3.531200044507124e-8,0.00297686786306883,-1.841450460826479e-5,3.575704849602197e-8,0.002977092820345906,-1.8723439945705067e-5,3.6214741069552453E-08,0.0029773865940886136,-1.9011730919729806e-5,3.6641106825301627e-8,0.00297773758195352,-1.9253744086145604e-5,3.6998098021908325e-8,0.002978126225410339,-1.9431077092030192e-5,3.725847234837322e-8,0.002978527778364898,-1.953481608938666e-5,3.740914085341509e-8,0.0029789154040244796,-1.9566826718393777e-5,3.7453087807647996e-8,0.002979263474936315,-1.9540223734977267e-5,3.741007038668588e-8,0.002979551126528603,-1.9479037319080024e-5,3.731610210216535e-8,0.002979766242014358,-1.9416859969519788e-5,3.722137847792964e-8,0.0029799099497124348,-1.9393715173435276e-5,3.7185523694292244e-8,0.002980000915971834,-1.94498533312271e-5,3.7268276541520824e-8,0.0029800772524500073,-1.9615566721707554e-5,3.7514326950814606e-8,0.002980192469529219,-1.9898167604817833e-5,3.7934040287157073e-8,0.0029804022602219083,-2.0271164712515565e-5,3.8487521814506124e-8,0.0029807434701728474,-2.067424132501533e-5,3.9084720785291444e-8,0.0029812147089178787,-2.1030261025836366e-5,3.961077233026522e-8,0.0029817719928732045,-2.127449949752043e-5,3.99694784583061e-8,0.0029823449666828935,-2.1379992430783766e-5,4.0121037663042906e-8,0.0029828645165091085,-2.136410513008704e-5,4.009182899623436e-8,0.0029832854451143304,-2.127531976246566e-5,3.995464665032265e-8,0.002983594498668351,-2.1171712511966522e-5,3.97964527218785e-8,0.0029838054954291746,-2.1103248487216302e-5,3.9691834147374094e-8,0.002983948836829765,-2.110276132606735e-5,3.968953147631429e-8,0.002984061290257191,-2.1184288397485705e-5,3.981006008442894e-8,0.002984178513731084,-2.1345484561751207E-05,4.004945855912969e-8,0.00298433040769511,-2.157146104983014e-5,4.0385128619668554e-8,0.002984538433971821,-2.183875045296736e-5,4.078179890719198e-8,0.002984814157245484,-2.2119128743535838e-5,4.1197228817699106e-8,0.0029851587068223267,-2.2383338100873876e-5,4.158774803164346e-8,0.0029855631058775885,-2.260472386163859e-5,4.191366897386889e-8,0.002986009558291577,-2.2762699849510053e-5,4.214444460091879e-8,0.002986473810408079,-2.2845709776562213e-5,4.226307152736928e-8,0.0029869284555065143,-2.285321248440732e-5,4.226903134195116e-8,0.0029873468009023675,-2.279640960153469e-5,4.217934987696174e-8,0.0029877069362470323,-2.2697618488155953e-5,4.202762496290873e-8,0.002987995706883981,-2.2588196005956238e-5,4.186087368514205e-8,0.0029882122724941918,-2.250493424394035e-5,4.173407992678916e-8,0.002988370845250907,-2.2484777608857293e-5,4.170223881865493e-8,0.0029885017936435655,-2.255756728162393e-5,4.180950622118746e-8,0.002988649508545319,-2.2737002269993502e-5,4.20757789848222e-8,0.002988864944534272,-2.3011660125789477e-5,4.248345478531366e-8,0.0029891917531914853,-2.3340375925996207e-5,4.2970713042447454e-8,0.0029896486141179545,-2.3657833305475466e-5,4.3439950290240724e-8,0.002990215930999584,-2.3893473135528555e-5,4.378597223794274e-8,0.0029908371871804683,-2.399812996226874e-5,4.393568517521914e-8,0.0029914382467285117,-2.396417191820179e-5,4.3878147729951906e-8,0.0029919551613743003,-2.38265851199188e-5,4.3666186218943454e-8,0.0029923547556799392,-2.364535922564181e-5,4.33899815622375e-8,0.0029926388924618567,-2.34815530183942e-5,4.314111317342226e-8,0.0029928352743501543,-2.3379858232251807e-5,4.298635560434982e-8,0.002992983643000855,-2.3362211966869825e-5,4.2958145653724355e-8,0.002993124239325345,-2.3429729514789833e-5,4.305762336091702e-8,0.0029932908205783236,-2.3568260581625195e-5,4.3263117748307686e-8,0.0029935075467194595,-2.3754218892099406e-5,4.353897939933425e-8,0.002993788115402275,-2.3959322132927218e-5,4.3842700238288005e-8,0.002994135865131543,-2.415427368613513e-5,4.413039745178603e-8,0.002994544317604473,-2.431187474329782e-5,4.436143642962751e-8,0.0029949981369148688,-2.4409940834154676e-5,4.4502773677267694e-8,0.002995474733920963,-2.4434159363146072e-5,4.453322269139798e-8,0.002995946867852737,-2.438065412063379e-5,4.444727962470359e-8,0.0029963863997792425,-2.4257633800533217e-5,4.425756592263305e-8,0.0029967688850502656,-2.4085455016201706e-5,4.399488097416399e-8,0.002997078338300538,-2.3894673268282683e-5,4.370522458009922e-8,0.002997311349129843,-2.3721945852451404e-5,4.344359182276227e-8,0.002997479656226587,-2.360404297666528e-5,4.32649398235654e-8,0.0029976103593761477,-2.357065305448074e-5,4.3213385803306306e-8,0.002997743110787153,-2.3636926496027646e-5,4.3311086910764544e-8,0.002997923748088096,-2.379704664473801e-5,4.354874311053949e-8,0.0029981942175954005,-2.4020889171051923e-5,4.388077348084879e-8,0.0029985799058661606,-2.4256592745038067e-5,4.422930981774514e-8,0.0029990778745615423,-2.444143335305884e-5,4.450051619084297e-8,0.002999651934402648,-2.4520419116148653e-5,4.461236561595702e-8,0.003000240119555401,-2.4466536425871935e-5,4.452486712152954e-8,0.0030007744382348467,-2.4292342453891288e-5,4.4257372821343864e-8,0.0030012043836071256,-2.4045254021272564e-5,4.388146492212079e-8,0.003001512146798215,-2.3788596603881732E-05,4.3492440534199405e-8,0.003001713011004348,-2.3579216292932016e-5,4.3175608587979206e-8,0.0030018440201570076,-2.345253767991309e-5,4.298382851303703e-8,0.0030019492490419297,-2.3418849803166555e-5,4.293202980731309e-8,0.0030020683571267115,-2.3467794115789163e-5,4.300412504387121e-8,0.003002230577040951,-2.3575924418412295e-5,4.3164515275253525e-8,0.0030024530481396073,-2.371369072928725e-5,4.336864156691746e-8,0.0030027414546316424,-2.3850507219765965e-5,4.357057053753451e-8,0.0030030914014577796,-2.395813305179184e-5,4.3728004665977624e-8,0.003003489836964812,-2.4013129247926298e-5,4.3805913400348664e-8,0.003003916505986112,-2.3999045197511412e-5,4.3779791639210484e-8,0.0030043458018004154,-2.3908648392456543e-5,4.3639009503235175e-8,0.003004749546491452,-2.3746015567883387e-5,4.338995688522113e-8,0.0030051010544452283,-2.3527756377723387e-5,4.305786620408989e-8,0.003005380278727441,-2.3282359290256304e-5,4.268578367873625e-8,0.0030055791218540325,-2.3046814799346892e-5,4.232942511550203e-8,0.003005705403471987,-2.2860300990568903e-5,4.2047613637055405e-8,0.0030057838269298923,-2.2755768795899834e-5,4.188959157506121e-8,0.0030058528292368726,-2.275134395340437e-5,4.188212374752424e-8,0.003005957307061821,-2.2843946110056914e-5,4.2020014794074985E-08,0.003006138413427418,-2.300724171618979e-5,4.226319699714995e-8,0.0030064225790959894,-2.319527741556905e-5,4.254234844837243e-8,0.003006812562702178,-2.335201743558618e-5,4.277330694714285e-8,0.0030072836012702583,-2.3425444976355578e-5,4.2878234687331705e-8,0.003007787264335132,-2.3382901257872224e-5,4.280856410095554e-8,0.003008263689228249,-2.3222450315454287e-5,4.2561953877304193e-8,0.0030086592071474436,-2.2974830200955383e-5,4.218511547518296e-8,0.0030089426676550976,-2.26937486182808e-5,4.17591305405803e-8,0.00300911333844383,-2.2438134195979213e-5,4.137267939823414e-8,0.003009197487585295,-2.225432969879038e-5,4.1095226879594374e-8,0.003009236757661162,-2.216547948200621e-5,4.0961121500672567e-8,0.003009274709149118,-2.217043771176245e-5,4.09681037873079e-8,0.0030093468102407217,-2.224960297551781e-5,4.108625065125137e-8,0.003009475717436156,-2.2373205783984607e-5,4.1270546851323725e-8,0.003009670815179887,-2.250862585044295e-5,4.147189797251425e-8,0.0030099299700386954,-2.2625428795493783e-5,4.164463699013084e-8,0.00301024187402901,-2.269838136100306e-5,4.1750971465696804e-8,0.003010588197802463,-2.2709282253166442e-5,4.17636812926794e-8,0.0030109454772800953,-2.2648401738654642e-5,4.1668279995880246e-8,0.0030112871514783373,-2.2515993789587058e-5,4.1465320020488957e-8,0.003011586410402015,-2.2323777967550487e-5,4.1172650945728414e-8,0.003011820354517727,-2.2095615453953176e-5,4.082642765490463e-8,0.0030119753682766987,-2.1866121724890676e-5,4.0478962804724885e-8,0.0030120526329220835,-2.167596603147096e-5,4.019155827324615e-8,0.003012071619005174,-2.1563470526289128e-5,4.002177521312465e-8,0.0030120689879420764,-2.1553983387326334e-5,4.0007412510859045e-8,0.0030120914835277484,-2.1650539471334874e-5,4.015251477306536e-8,0.003012183981443884,-2.1829957093484467e-5,4.0421644155871945e-8,0.003012376436940448,-2.2046872823385574e-5,4.074612539538994e-8,0.003012674385510726,-2.2245060636632923e-5,4.104120937557746e-8,0.003013056385483303,-2.237249037808146e-5,4.122877520759659e-8,0.003013479206572159,-2.2395363336080645e-5,4.125840285038834e-8,0.00301388907552939,-2.2307009988112173e-5,4.112064949092303e-8,0.003014235716569667,-2.21292539477236e-5,4.0848957479960844e-8,0.0030144852458368573,-2.1905904722336058e-5,4.0509715506145036e-8,0.003014628140393211,-2.1690273931464643e-5,4.0183354013727575e-8,0.0030146798861370155,-2.1530670765035162e-5,3.9942465173289727e-8,0.003014674513909391,-2.1458647516230403e-5,3.9834154839566405e-8,0.0030146539150070514,-2.1483480978725524e-5,3.9871866653527925e-8,0.003014657045850174,-2.159355446238517e-5,4.003762590554032e-8,0.0030147123189946208,-2.1762610361229233e-5,4.029158028075859e-8,0.0030148344079461886,-2.1957660138997936e-5,4.0583952504102195e-8,0.003015024723893025,-2.214588593896058e-5,4.0865392615269084e-8,0.0030152739036193445,-2.22993320272481e-5,4.109395623141755e-8,0.0030155648211872598,-2.239750335835605e-5,4.123893927793968e-8,0.0030158753159103555,-2.242862410171888e-5,4.1282740545661414e-8,0.0030161804959735242,-2.239035571976067e-5,4.122196425411615e-8,0.0030164549748184135,-2.2290484655788065e-5,4.106850249505057e-8,0.0030166756785176938,-2.2147566876471484e-5,4.085053467582822e-8,0.0030168257902463656,-2.1990840651876128e-5,4.0612367627877493e-8,0.0030168998356597245,-2.185809576971141e-5,4.041113557692705e-8,0.003016908801918456,-2.1790004412026398e-5,4.030814374624823e-8,0.0030168827390098687,-2.1820318277313286e-5,4.035402021045058e-8,0.0030168675107474373,-2.19637983748077e-5,4.057054444845606e-8,0.003016913871536386,-2.220687703617631e-5,4.09366942603126e-8,0.003017061280745224,-2.2507121073764624e-5,4.138801109760418e-8,0.0030173232653145413,-2.28042122748035e-5,4.1833304318833444e-8,0.0030176816547766365,-2.3038752114974032e-5,4.218308051823787e-8,0.003018092461901088,-2.317060860472061e-5,4.2377204037070425e-8,0.0030185000617629827,-2.3189358211647577e-5,4.240056434796237e-8,0.0030188531890023565,-2.3114278349446322e-5,4.2282916648184983e-8,0.0030191172695145925,-2.298608274263823e-5,4.2086230161827244e-8,0.003019280521670172,-2.2854616393563075e-5,4.188596434454325e-8,0.00301935377876645,-2.27664496809722e-5,4.1752283274555145e-8,0.0030193653932179577,-2.2755137035095014e-5,4.173540981919782e-8,0.0030193531828910203,-2.2835689436507088e-5,4.185743087774839e-8,0.003019355569264338,-2.3003756094996915e-5,4.211123646364793e-8,0.003019403958407845,-2.323899690414335e-5,4.246574371735947e-8,0.003019517875462904,-2.3511172447957385e-5,4.2875145551518413e-8,0.003019703373553423,-2.3786991097561844e-5,4.328922423781491e-8,0.003019954219332213,-2.4036029761377636e-5,4.3662218358333147e-8,0.003020254766068992,-2.423482031971884e-5,4.395891153209101e-8,0.003020583367897793,-2.4369010761043288e-5,4.415784033020523e-8,0.0030209155492026242,-2.4434102956819604e-5,4.425239523927991e-8,0.0030212267021837735,-2.443546844269732e-5,4.4250868318591255e-8,0.0030214945520319145,-2.438812313993975e-5,4.417614262844354e-8,0.0030217018620748537,-2.4316298536123176e-5,4.406504030121207e-8,0.0030218398456035413,-2.4252307744576375e-5,4.396654725060574e-8,0.003021912331535931,-2.4233602777596313e-5,4.39372627104561e-8,0.0030219396761021347,-2.429662036167427e-5,4.4032012805518794e-8,0.0030219599100410016,-2.4466782499552282e-5,4.4288740896769435e-8,0.00302202361177359,-2.4746531459929342e-5,4.47105455738881e-8,0.003022180395983599,-2.5107010582484676e-5,4.525329764117915e-8,0.003022460057180725,-2.5490814286278737e-5,4.5829951905006934e-8,0.003022857627761485,-2.5828964736561783e-5,4.633626256410645e-8,0.003023332267934383,-2.6065721301283244e-5,4.668826880948124e-8,0.003023821927221237,-2.6178133626157623e-5,4.685181828073514e-8,0.0030242654527104103,-2.618060722133502e-5,4.6849397702988095e-8,0.00302462064736006,-2.6115003315723564e-5,4.674500325784846e-8,0.003024872054652819,-2.6034210741007566e-5,4.661907867346306e-8,0.003025029247398639,-2.5987096868666402e-5,4.654559337911846e-8,0.003025119674183166,-2.600869221520683e-5,4.657718713531259e-8,0.0030251798618585422,-2.6115962524536738e-5,4.6738915646380234e-8,0.003025247304514287,-2.6307892425086884e-5,4.702858653637406e-8,0.0030253540345252404,-2.6568373656992416e-5,4.742130825887169e-8,0.003025522180290973,-2.6870812112854194e-5,4.7876552038498893e-8,0.0030257616742353777,-2.718362842899639e-5,4.834647617031556e-8,0.0030260701248843638,-2.7475754898200334e-5,4.878418797216237e-8,0.003026434531440565,-2.7721296131052857e-5,4.915072369570908e-8,0.003026834267375794,-2.790282528074767e-5,4.941997646359749e-8,0.003027244652317317,-2.801310467185596e-5,4.958126578195143e-8,0.00302764045789911,-2.8055375984440208e-5,4.963976761859313e-8,0.0030279989828120874,-2.8042678247256376e-5,4.961548465878466e-8,0.003028302732030385,-2.7996614735003015e-5,4.9541371336797554e-8,0.0030285419382640503,-2.7945668380696642e-5,4.946074008271887e-8,0.0030287171664962805,-2.7922799028450726e-5,4.9423540183523226e-8,0.003028841979820805,-2.796162115926255e-5,4.948048077466765e-8,0.0030289448272879803,-2.8090202994150213e-5,4.967360897101288e-8,0.00302906808799766,-2.832216698757468e-5,5.002291747065914e-8,0.003029261393516597,-2.8646859820436187e-5,5.051165188848918e-8,0.0030295674732655794,-2.9023648863821986e-5,5.107788139765754e-8,0.0030300035036457318,-2.9387468552092513e-5,5.1622994265168756e-8,0.003030547654439084,-2.966892547984612e-5,5.204210187529804e-8,0.0030311419708281494,-2.9821700123341288e-5,5.226546402242462e-8,0.003031713429022907,-2.9841451121119933e-5,5.228710697781398e-8,0.0030322015269454838,-2.9764614366811912e-5,5.216297581619774e-8,0.003032576700297681,-2.964992539693665e-5,5.1982771928407634e-8,0.0030328427049061664,-2.95558177823456e-5,5.18354400080819e-8,0.0030330273738204275,-2.952483864326578e-5,5.178537523848844e-8,0.0030331699517057442,-2.9577898541893805e-5,5.1863748181959154e-8,0.0030333104138618784,-2.9715604944099784e-5,5.207074030425486e-8,0.003033482465717576,-2.9922976396352082e-5,5.238294189196952e-8,0.0030337098242709487,-3.017493755703473e-5,5.276185486031358e-8,0.0030340047066781646,-3.0441434203506502e-5,5.316170038656006e-8,0.0030343677318868385,-3.069201162682167e-5,5.353632168723621e-8,0.0030347889661070187,-3.089987345211356e-5,5.384526338775909e-8,0.0030352499978571756,-3.104524236184448e-5,5.405880170678398e-8,0.0030357268634388502,-3.111778908424594e-5,5.416158516454266e-8,0.0030361935715449567,-3.1117887001919675e-5,5.415451590233293e-8,0.003036625814699871,-3.105651407747209e-5,5.4054586154864e-8,0.003037004388893214,-3.095390233892545e-5,5.3892806738359834e-8,0.003037318044491069,-3.083722670992275e-5,5.3710656905416486e-8,0.0030375656938618433,-3.073753439132445e-5,5.355535566628204e-8,0.0030377579336559293,-3.068595891553895e-5,5.347403607373892e-8,0.0030379177300265737,-3.0709070813912385e-5,5.350663829087113e-8,0.00303807966723912,-3.0823076928323533e-5,5.367713979638666e-8,0.0030382864205653216,-3.102708512509555e-5,5.3983480616954495e-8,0.003038580787609243,-3.1297162733261364e-5,5.438876948576837e-8,0.0030389926926067358,-3.158502205672186e-5,5.481947606929273e-8,0.003039524072818,-3.1826340398447944e-5,5.517809779127173e-8,0.0030401396754807146,-3.196074975273588e-5,5.5373393880473416e-8,0.0030407732402690456,-3.1956872342941396e-5,5.5358273365942866e-8,0.0030413506216760183,-3.1827784431995975e-5,5.515324561172027e-8,0.0030418182463314066,-3.1625541651179424e-5,5.4838080988230775e-8,0.003042160215499455,-3.141800758364335e-5,5.4516451859117366e-8,0.003042396527409552,-3.126315753054347e-5,5.4276642795710085e-8,0.003042568426483442,-3.119410063882663e-5,5.416865946881467e-8,0.0030427219468042673,-3.121729790939866e-5,5.4201628447496637e-8,0.0030428965072263536,-3.131876817788899e-5,5.435349924198628e-8,0.0030431195875498325,-3.1472417249374476e-5,5.4583966139684054e-8,0.003043405671120528,-3.164719823662061e-5,5.48454888443154e-8,0.003043757278206,-3.181220441401584e-5,5.509103044165085e-8,0.0030441666670632966,-3.194016210578213e-5,5.527928024881129e-8,0.0030446177728978936,-3.2010055857858906e-5,5.537854846801234e-8,0.0030450884814295937,-3.200922767702134e-5,5.5369895852801475e-8,0.003045553386619406,-3.193493319092446e-5,5.524947681257876e-8,0.003045987115545042,-3.179510076572901e-5,5.502968803317016e-8,0.0030463680745412454,-3.1607871380829794e-5,5.473845618856727e-8,0.0030466821164058687,-3.139963516825679e-5,5.441621391559135e-8,0.0030469255028017037,-3.120163298944072e-5,5.4110664553357935e-8,0.003047106649642553,-3.1045429760949075e-5,5.3869815322197836e-8,0.003047246264489913,-3.0957724333207185e-5,5.373401644060654e-8,0.0030473756148905722,-3.0955076276420677e-5,5.372793333790556e-8,0.0030475327337165107,-3.10391075449408e-5,5.385333611732599e-8,0.0030477562593878016,-3.119291882112134e-5,5.408383161903094e-8,0.0030480767420623433,-3.138019112187306e-5,5.436371344206401e-8,0.003048506271394186,-3.154923496407961e-5,5.461427067933738e-8,0.003049029398017934,-3.164403612417949e-5,5.4750595244403097E-08,0.003049600741217892,-3.162181473782961e-5,5.470817249590223e-8,0.0030501546590933595,-3.147129459702184e-5,5.447053534930495e-8,0.0030506267199089275,-3.122124129326912e-5,5.408216609011085e-8,0.003050977543809847,-3.0931489493301834e-5,5.363475132421305e-8,0.0030512056349143645,-3.066970206362606e-5,5.323164358366911e-8,0.0030513427951945633,-3.048709541508865e-5,5.2950735410073135e-8,0.0030514375272195533,-3.0405493613713788e-5,5.2824725934812176e-8,0.0030515374213706445,-3.0418359774685625e-5,5.284287745599565e-8,0.003051677995809869,-3.050014466075965e-5,5.296553808075435e-8,0.0030518790092155215,-3.061696562449272e-5,5.314062781446654e-8,0.003052145625853913,-3.073469977610028e-5,5.3316031028704927e-8,0.0030524714707749288,-3.082377392153637e-5,5.344682144560079e-8,0.0030528417493476028,-3.086160174564249e-5,5.34988474804598e-8,0.0030532358836312897,-3.0833881042707114e-5,5.345060667689741e-8,0.003053629879526026,-3.0735485986035706e-5,5.3294565854492434e-8,0.0030539988364117142,-3.0571146292916206e-5,5.30382059792326e-8,0.0030543199507090837,-3.0355674406952507e-5,5.270438907050841e-8,0.0030545760956502454,-3.0113150877368533e-5,5.233010961195881e-8,0.00305475954547292,-2.9874438142143042e-5,5.1962653663563995e-8,0.003054874940487383,-2.967277780668974e-5,5.165280031939516e-8,0.0030549404324154324,-2.9537825570307475e-5,5.144563962738253e-8,0.0030549861390338404,-2.9489134143288323e-5,5.137059250576423e-8,0.0030550495976808005,-2.953061394193003e-5,5.143300630399881e-8,0.003055168710759939,-2.9647526534915528e-5,5.160970828560753e-8,0.0030553733364540553,-2.9807121158297693e-5,5.1850176986509324e-8,0.0030556770688369554,-2.9963521348213533e-5,5.208418350889287e-8,0.0030560711382057876,-3.0066914121891328e-5,5.223590149011024e-8,0.003056522783852153,-3.007606385331831e-5,5.224295582005858e-8,0.0030569803906741184,-2.9971466768568165e-5,5.207634125974998e-8,0.0030573862107332603,-2.9764480348069197e-5,5.1754164969916074e-8,0.0030576939719519337,-2.9497043921062268e-5,5.134105271121149e-8,0.0030578844960596806,-2.9229485363525857e-5,5.092940536552576e-8,0.0030579714726823846,-2.9020378842860718e-5,5.060856308901679e-8,0.00305799430929109,-2.890783769790072e-5,5.0436246780448754e-8,0.0030580024833647516,-2.8900743931462217e-5,5.042530128741445e-8,0.0030580398139917744,-2.8981793723107103e-5,5.0548579370877406e-8,0.0030581349144192635,-2.9117796452997896e-5,5.075489270553819e-8,0.0030582989710085853,-2.927092112731661e-5,5.0986296117823764e-8,0.00305852838098303,-2.9406906130383003e-5,5.1190589621726315e-8,0.00305880913029923,-2.9499417804318987e-5,5.132784410791377e-8,0.0030591209014314944,-2.9531615236497716e-5,5.1372652866946216e-8,0.003059440241717404,-2.949633831159525e-5,5.131434068941656e-8,0.00305974298908132,-2.9395907947313022e-5,5.1156659354477445e-8,0.0030600065090859636,-2.9241933794825013e-5,5.091753916282965e-8,0.00306021229511157,-2.9054948323373344e-5,5.062856693783168e-8,0.003060349177847135,-2.8863199511689882e-5,5.033312632870034e-8,0.003060416814008068,-2.8699745555567035e-5,5.008188395273282e-8,0.0030604284223485962,-2.8597283966096064e-5,4.992478512143156e-8,0.0030604111977471983,-2.858098323762389e-5,4.990002248696701e-8,0.0030604029204521956,-2.8660871126497475e-5,5.002240613766968e-8,0.0030604443802250266,-2.8826475438747818e-5,5.027527520898142e-8,0.0030605691021830185,-2.9046441406551585e-5,5.061009175503469e-8,0.00306079346737266,-2.927436144349517e-5,5.0955543464884993e-8,0.0030611106463299936,-2.945974872572592e-5,5.123445153963956e-8,0.003061490627398194,-2.9561147187201426e-5,5.1383839021491824e-8,0.0030618866932196325,-2.9557585511589545e-5,5.137235223398255e-8,0.0030622468460100747,-2.9455021239405097e-5,5.1209933881528055e-8,0.0030625273270125427,-2.9285654512983767e-5,5.0946554534423536e-8,0.0030627045011972953,-2.909970499319971e-5,5.065943900038011e-8,0.003062781223049597,-2.8951506243513924e-5,5.043168206571564e-8,0.0030627851170516554,-2.8884214842026012e-5,5.032886811317642e-8,0.003062759221135395,-2.8918582214671775e-5,5.038203695084455e-8,0.0030627487734678108,-2.9049687038960627e-5,5.0582911500186546e-8,0.0030627893702877065,-2.9251814457828465e-5,5.0891584468485985e-8,0.0030629003148716434,-2.9488179827505706e-5,5.1251525998749074e-8,0.0030630839037973016,-2.972103318011528e-5,5.160504457192073e-8,0.0030633288315558426,-2.9918997653759335e-5,5.190441062046527e-8,0.003063615124797014,-3.0060785653816723e-5,5.211739828811116e-8,0.003063918729338474,-3.013609360645597e-5,5.222854366679751e-8,0.003064214995878956,-3.014497667576545e-5,5.223815136496016e-8,0.0030644811540353513,-3.0096760320048008e-5,5.2160662139867385e-8,0.003064698316991432,-3.0009023509637796e-5,5.202315302953461e-8,0.0030648536429064674,-2.990656924730143e-5,5.1863784882354814e-8,0.0030649429933266646,-2.9819741475536308e-5,5.1729180727117875e-8,0.0030649738454125133,-2.9781167475517766e-5,5.166933721709507e-8,0.0030649674206902153,-2.98201748061254e-5,5.172897531156119e-8,0.0030649581828044383,-2.9955006804012056e-5,5.19355879701887e-8,0.0030649887015580467,-3.0184701153387606e-5,5.2287079973691934e-8,0.0030650993228122743,-3.048438554024296e-5,5.274472973817438e-8,0.0030653151426291397,-3.080799959377198e-5,5.3237545317571995e-8,0.0030656356436287177,-3.109971429626911e-5,5.36798936350581e-8,0.003066032397083313,-3.131062399609393e-5,5.3997123564829124e-8,0.0030664566457068772,-3.141392264624986e-5,5.414878191396371e-8,0.003066853673243906,-3.141241782904111e-5,5.414000445922996e-8,0.003067178107954643,-3.1336255718859404e-5,5.401782535141934e-8,0.003067405017322031,-3.123297452844401e-5,5.385569119674471e-8,0.0030675342967685115,-3.115406523908855e-5,5.3732673458228506e-8,0.0030675883450696387,-3.1142126616185284e-5,5.3713731593782084e-8,0.003067604598905477,-3.122165258980363e-5,5.3835712946092174e-8,0.0030676253853558076,-3.139518885501176e-5,5.41016984091395e-8,0.0030676878955794595,-3.164514859820826e-5,5.448403678006608e-8,0.0030678167760080873,-3.1940102956282886e-5,5.4934156079083943e-8,0.00306802082106185,-3.22432379520567e-5,5.539556794925043e-8,0.0030682938008947383,-3.252038055262967e-5,5.581610023286302e-8,0.003068618188348601,-3.2745712319185725e-5,5.6156527333722295e-8,0.0030689700372110436,-3.290455445210272e-5,5.63947158589191e-8,0.0030693235621584002,-3.299368835276426e-5,5.652604281911584e-8,0.0030696546829265168,-3.302018003318915e-5,5.656158441311524e-8,0.003069943501781531,-3.299964329710182e-5,5.652548727111865e-8,0.0030701761356594238,-3.295448884467991e-5,5.6452316329964884e-8,0.0030703464351241215,-3.2912168983386934e-5,5.6384348797087725e-8,0.0030704579205523843,-3.290292724600728e-5,5.6368046064395786e-8,0.0030705257705411666,-3.2956240209135014e-5,5.6448491101539555e-8,0.003070577902929506,-3.3095212754677564e-5,5.666072725949836e-8,0.003070653303256023,-3.332901887976236e-5,5.7018206275630994e-8,0.0030707954675129484,-3.3645317050531466e-5,5.750131258839977e-8,0.003071040281409215,-3.4006866132882734e-5,5.805237688321617e-8,0.003071401442066699,-3.435724590922433e-5,5.858460257890024e-8,0.003071860664240823,-3.463707718078335e-5,5.900700173455468e-8,0.003072369948294953,-3.4805077484133635e-5,5.9256687131385314e-8,0.0030728668933984586,-3.4853323968064e-5,5.932224867940723e-8,0.00307329574470014,-3.4808729472292477e-5,5.9245906426521214e-8,0.0030736238628414326,-3.472127382584356e-5,5.910521892617646e-8,0.0030738476136962186,-3.4646440956723325e-5,5.898583976281836e-8,0.0030739883560582247,-3.462984017376718e-5,5.895772090868357e-8,0.0030740829181741033,-3.46981445897087e-5,5.906122528438606e-8,0.0030741729261370603,-3.485661305223858e-5,5.930354340403719e-8,0.0030742957031104122,-3.509154811261891e-5,5.966276668283171e-8,0.0030744779277463736,-3.537572740023708e-5,6.00964697542749e-8,0.0030747323559975367,-3.5675189893930766e-5,6.055223916889516e-8,0.003075057487670119,-3.5956061174078274e-5,6.097812908001633e-8,0.0030754397046584866,-3.619027550379833e-5,6.133134047523962e-8,0.0030758570531433604,-3.6359408441814945e-5,6.158398173260262e-8,0.0030762836935755364,-3.645637499575067e-5,6.17255797130405e-8,0.0030766941332692503,-3.6485215974385064e-5,6.176270393282051e-8,0.00307706662715048,-3.645952970605651e-5,6.17165520944473e-8,0.0030773855806581914,-3.64002479832436e-5,6.161954383422073e-8,0.0030776432027652626,-3.63332416409525e-5,6.151163570192726e-8,0.003077840759611733,-3.628682113866609e-5,6.143643256726638e-8,0.003077989627912044,-3.628885788142236e-5,6.143667890109774e-8,0.0030781120193623807,-3.6363006241524466e-5,6.154837667649236e-8,0.0030782405956229293,-3.652349964920907e-5,6.179278977302228e-8,0.0030784153961581056,-3.6768720995789186e-5,6.216668724687254e-8,0.003078676287039924,-3.707542807113103e-5,6.263368664319519e-8,0.0030790504999446576,-3.739763323181358e-5,6.312273725650803e-8,0.0030795385416962856,-3.767491089624212e-5,6.354097060212617e-8,0.0030801063485889927,-3.7851372011602716E-05,6.380282181650783e-8,0.003080691860843348,-3.789839797156401e-5,6.3864909335135015E-08,0.0030812263089583505,-3.782804205247127e-5,6.374660437345014e-8,0.0030816595018051856,-3.768799022595951e-5,6.352218567186832e-8,0.003081975175275685,-3.754141745986299e-5,6.328960513196501e-8,0.0030821904003572086,-3.7444257862379394e-5,6.313520651894206e-8,0.003082343638281676,-3.743069219176931e-5,6.311124043335557e-8,0.0030824800552818033,-3.7509564541134194e-5,6.323047245576145e-8,0.0030826400072475326,-3.7668452785068254e-5,6.347276711043042e-8,0.003082852413765722,-3.788093848520992e-5,6.379661295313797e-8,0.003083132266538477,-3.811403698482697e-5,6.415076333549884e-8,0.0030834808667202927,-3.833449478651092e-5,6.448396137955909e-8,0.0030838877341181153,-3.8513714836371074e-5,6.475242681002939e-8,0.0030843336004778847,-3.8631288755844996e-5,6.49251538042667e-8,0.003084794042322366,-3.867707285475078e-5,6.49869875714132e-8,0.0030852433321181686,-3.865183435490819e-5,6.49395475346079e-8,0.0030856581339217173,-3.856655888053119e-5,6.48001336398034e-8,0.0030860206460516367,-3.844058492853828e-5,6.459884806542256e-8,0.0030863208771382037,-3.8298947069799535e-5,6.437449277747022e-8,0.0030865580404335806,-3.816935596666206e-5,6.416988298112212e-8,0.0030867412223701774,-3.807898089265322e-5,6.402682842646071e-8,0.0030868893766480983,-3.8050984731237867e-5,6.398072676630348e-8,0.0030870304944824955,-3.810068561233592e-5,6.405462439468387e-8,0.003087199430753806,-3.823122572618231e-5,6.425261522376926e-8,0.0030874333446925814,-3.842914766591009e-5,6.455320872359164e-8,0.0030877636895722525,-3.866159342862816e-5,6.490525234810125e-8,0.0030882049718960573,-3.887836166676586e-5,6.523127311346362e-8,0.003088743561312213,-3.9022341755227606e-5,6.544356507347711e-8,0.003089333590640843,-3.904860755320145e-5,6.547348840413299e-8,0.0030899071036917716,-3.894510170953161e-5,6.530322358465656e-8,0.0030903979050176593,-3.8742004346281896e-5,6.498015271661827e-8,0.003090767228006569,-3.8501181533249536e-5,6.460049051721142e-8,0.0030910160608724553,-3.8290854101103754e-5,6.426997931057188e-8,0.0030911786470456865,-3.816087723268984e-5,6.406549047523721e-8,0.003091304636594572,-3.81308943961482e-5,6.401668515462453e-8,0.0030914415331645385,-3.819243835001492e-5,6.410948319588161e-8,0.003091624053373996,-3.831851468248846e-5,6.430123035197483e-8,0.0030918706623143453,-3.8474104361764894e-5,6.453722136219927e-8,0.0030921846709144477,-3.8624255014770126e-5,6.476330985906157e-8,0.0030925572633731823,-3.8739191826344275e-5,6.493373044917373e-8,0.0030929709124494467,-3.879722444333691e-5,6.501542077873879e-8,0.003093402731555433,-3.8786312162609277e-5,6.499027635350036e-8,0.0030938277663450082,-3.870467412242986e-5,6.485599547202599e-8,0.0030942222139669767,-3.856054410640383e-5,6.462566902485165e-8,0.003094566519648795,-3.8371053174280506e-5,6.432606100579885e-8,0.0030948481721392368,-3.816012347433993e-5,6.399436069664364e-8,0.003095063804553022,-3.795541247827492e-5,6.36734419165358e-8,0.003095220250846101,-3.778464042825393e-5,6.34061366452044e-8,0.003095334440344874,-3.76716671513097e-5,6.322910755980504e-8,0.00309543208101415,-3.76325912073004e-5,6.316677889485286e-8,0.0030955450293822886,-3.767217508425234e-5,6.32258396731875e-8,0.003095707183071852,-3.778095740397159e-5,6.339090801722296e-8,0.00309594862334514,-3.793365750566644e-5,6.36222778804018e-8,0.003096287931628474,-3.80901905074783e-5,6.385770713701393e-8,0.0030967236941520254,-3.8201303672671125e-5,6.402124536059043e-8,0.003097228280907147,-3.822036947682624e-5,6.404140759803494e-8,0.0030977490184312755,-3.8120022723220564e-5,6.387670810024808e-8,0.0030982210755350135,-3.7907147081520453e-5,6.353864073301886e-8,0.0030985900761617553,-3.762610731223205e-5,6.309655120907573e-8,0.0030988336384995293,-3.734434007536094e-5,6.265523738702239e-8,0.003098968816215725,-3.7126254709522466e-5,6.231441792645098e-8,0.003099041425769494,-3.7010331236075636e-5,6.213318613669418e-8,0.0030991055833493103,-3.7000963291756114e-5,6.211747094970239e-8,0.0030992057850765756,-3.707503307238412e-5,6.223050579274813e-8,0.0030993681475792695,-3.719515769679686e-5,6.241367766141261e-8,0.0030996000182369945,-3.7321886461173106e-5,6.260562024590069e-8,0.0030998940056717068,-3.742152940130405e-5,6.275433238229519e-8,0.003100233021590866,-3.7469791909199243e-5,6.282264287237035e-8,0.0031005946146256498,-3.74527865541713e-5,6.278957087078115e-8,0.0031009543309571943,-3.7366892039579344e-5,6.264995951136436e-8,0.003101288498980592,-3.721816385706405e-5,6.241351573364313e-8,0.0031015767979117176,-3.702139137135275e-5,6.210337620395833e-8,0.0031018047687390517,-3.679862687950359e-5,6.175387343947005e-8,0.0031019661991720264,-3.657686241831285e-5,6.140695022313485e-8,0.0031020649564957345,-3.638462538015085e-5,6.110684934249384e-8,0.0031021156285978737,-3.624768225270253e-5,6.089338495755532e-8,0.003102142484188417,-3.6184428286903e-5,6.079473351831937e-8,0.0031021765631752685,-3.620172937410701e-5,6.082097958568538e-8,0.0031022510076930674,-3.629208197157182e-5,6.095979473559371e-8,0.0031023950750430954,-3.643289906673445e-5,6.117550104443778e-8,0.0031026275545373554,-3.658852828809345e-5,6.141241349154455e-8,0.0031029505897565103,-3.6715498961018746e-5,6.160314515690131e-8,0.0031033454561945222,-3.677128760644678e-5,6.168223979401771e-8,0.0031037725875075316,-3.672594194239396e-5,6.160407633853862e-8,0.0031041783170027994,-3.6573890333345214e-5,6.13609507617016e-8,0.0031045091130757767,-3.634081561194844e-5,6.099349544356457e-8,0.0031047297909969312,-3.607980110758601e-5,6.058452494813771e-8,0.0031048374201034855,-3.585494963702326e-5,6.023352619407363e-8,0.003104862516995215,-3.5718644691785436e-5,6.002135737673514e-8,0.003104856093193385,-3.569405931092349e-5,5.998319444364333e-8,0.0031048700872880267,-3.577137790618058e-5,6.010288490586609e-8,0.003104941604094109,-3.5916960865466545e-5,6.032745899023271e-8,0.00310508658575867,-3.608784938858073e-5,6.058987181278256e-8,0.003105301813939656,-3.6244129061960325e-5,6.082825896614451e-8,0.0031055709169320175,-3.6355939860998774e-5,6.099670423139435e-8,0.003105870647986892,-3.6405690275413666e-5,6.106846533436347e-8,0.0031061756914431407,-3.638750956805874e-5,6.103492926911871e-8,0.0031064618740461935,-3.630572623697611e-5,6.090315332297189e-8,0.0031067083897661323,-3.617327510332381e-5,6.069340518034317e-8,0.0031068996748370463,-3.6010179052804656e-5,6.043687697777326e-8,0.0031070273067826453,-3.5841809895788134e-5,6.017304374810048e-8,0.003107091924907097,-3.569640763286369e-5,5.994580924865879e-8,0.003107104690948129,-3.5601421586642455e-5,5.979775912534584e-8,0.0031070874280543044,-3.557871974140187e-5,5.976263364692894e-8,0.0031070705639987084,-3.563939705212548e-5,5.985721638430891e-8,0.00310708845076731,-3.577953751271076e-5,6.007479140748683e-8,0.0031071724854550274,-3.597857902840596e-5,6.0382741421625e-8,0.003107343449944664,-3.620155104969642e-5,6.072622362437715e-8,0.0031076051132779385,-3.640540195274204e-5,6.10381901744192e-8,0.0031079410880545904,-3.6548419234103456e-5,6.125412657583635e-8,0.0031083163328670636,-3.6600797795219e-5,6.132843658673388e-8,0.003108683776045806,-3.655377779638129e-5,6.12484672972554e-8,0.0031089953478281146,-3.642449473760269e-5,6.104178540723422e-8,0.0031092151923365167,-3.6254006005909544e-5,6.077284786520125e-8,0.003109331132111241,-3.6097367552710236e-5,6.052739707346827e-8,0.00310935954808475,-3.6007610042852635e-5,6.038750927329051e-8,0.0031093404361101393,-3.601917120844064e-5,6.04059490162074e-8,0.0031093239113226005,-3.6137917913298556e-5,6.059089030936383e-8,0.003109354124427072,-3.6341991680345246e-5,6.090751315544337e-8,0.0031094576079410963,-3.6591899919457295e-5,6.12939239128099e-8,0.003109639723574992,-3.684400498898479e-5,6.168222747975021e-8,0.003109888172433052,-3.706155993675539e-5,6.201562972733295e-8,0.003110179865335902,-3.7220522609188814e-5,6.225730522644977e-8,0.0031104876813696455,-3.731061864999249e-5,6.239184703464731e-8,0.00311078539719096,-3.733367074941028e-5,6.242252235980394e-8,0.0031110506840359895,-3.730106234421321e-5,6.236728729470829e-8,0.003111266829818254,-3.723134017143124e-5,6.225510727514509e-8,0.0031114239398752712,-3.7148181411718e-5,6.212287206499815e-8,0.0031115201531575613,-3.7078419428024274e-5,6.201236188919679e-8,0.003111562975299694,-3.7049500972479054e-5,6.196625586571644e-8,0.003111570240611829,-3.7085775629295866e-5,6.20222732746493e-8,0.0031115696907623807,-3.720350361712773e-5,6.220533256957703e-8,0.003111595961660061,-3.740535774526301e-5,6.251900193071125e-8,0.0031116842348012787,-3.7676298720104116e-5,6.293919212979045e-8,0.0031118612256879658,-3.798340020650173e-5,6.341407163920447e-8,0.003112136139777003,-3.828150901245256e-5,6.387306782824209e-8,0.003112495379209596,-3.852427301854293e-5,6.424415997620797e-8,0.003112903926884855,-3.867726198381603e-5,6.447432367142958e-8,0.0031133136874417224,-3.872848224078679e-5,6.454579824951314e-8,0.0031136761793375063,-3.8692456923064395E-05,6.448222652228261e-8,0.0031139554371912236,-3.860656882561176e-5,6.434267804320025e-8,0.0031141372703484766,-3.8521032659985596e-5,6.420576709598722e-8,0.0031142324513703736,-3.848555621137015e-5,6.414873497201981e-8,0.003114273122112332,-3.85363882869955e-5,6.422732768153216e-8,0.0031143034616922818,-3.868736365238427e-5,6.446208120483557e-8,0.0031143674207793413,-3.892758353008189e-5,6.483503018920008e-8,0.003114497459059395,-3.9226240381586666e-5,6.529750515880651e-8,0.0031147078121036174,-3.954245370409532e-5,6.578559894383833e-8,0.00311499378960663,-3.983627974908429e-5,6.623730004445356e-8,0.0031153360888836355,-4.007726426013293e-5,6.660567612073376e-8,0.0031157075151952004,-4.024868825724295e-5,6.686529743458914e-8,0.00311607947574405,-4.034776414925683e-5,6.701237492469503e-8,0.0031164267230209515,-4.038331710088937e-5,6.706105409678788e-8,0.0031167301083817336,-4.037260325837689e-5,6.703845169512361e-8,0.003116977890976981,-4.033831580823609e-5,6.698004129434217e-8,0.0031171663505323325,-4.030610095786534e-5,6.692583316158584e-8,0.0031173002857739405,-4.030233658179883e-5,6.691691302618574e-8,0.0031173935830516013,-4.035158745219613e-5,6.699141672014888e-8,0.003117469472534857,-4.047311163717984e-5,6.71790093138832e-8,0.0031175594775110223,-4.067616621474953e-5,6.749354678239481e-8,0.0031176996760878236,-4.095478103045957e-5,6.792501578391407e-8,0.003117923245200117,-4.1284097202451735e-5,6.843400804444655e-8,0.003118249965451604,-4.162156390749211e-5,6.895378532468487e-8,0.0031186762577232225,-4.1915651713568604e-5,6.940399276282996e-8,0.0031191714040973333,-4.212116830683181e-5,6.971456663709166e-8,0.0031196840741649716,-4.2215346438736336e-5,6.985077033810668e-8,0.003120157847027817,-4.220674667049533e-5,6.98269624957057e-8,0.0031205489414833265,-4.2132362620646234e-5,6.97018734876997e-8,0.0031208383916512266,-4.20448327662397e-5,6.955836204462521e-8,0.003121034785095203,-4.199616018547974e-5,6.947774286240719e-8,0.003121168632125931,-4.202421267565137e-5,6.951862361251391e-8,0.0031212820770698153,-4.214528318978495e-5,6.970544612819716e-8,0.0031214177248149594,-4.235306877230772e-5,7.002722768273191e-8,0.0031216092731973467,-4.2622792035729374e-5,7.044435725304227e-8,0.0031218754919343627,-4.2918580516760454e-5,7.090035608149642e-8,0.0031222181803268524,-4.320209457310386e-5,7.133539946884241e-8,0.003122623947005099,-4.344044848734895e-5,7.169857291254788e-8,0.00312306884485219,-4.361179467816571e-5,7.195639886437939e-8,0.003123524289638139,-4.370774340490241e-5,7.209642624241596e-8,0.0031239626656890764,-4.373282262997294e-5,7.21262580887302e-8,0.0031243615440335547,-4.3701909396077086e-5,7.206948965492392e-8,0.0031247061538028763,-4.3636780471882876e-5,7.196033443639855e-8,0.0031249903765416783,-4.356272900897019e-5,7.183837800351165e-8,0.0031252168682957006,-4.3505688790359626e-5,7.174410685588453e-8,0.0031253968441908885,-4.348975073626395e-5,7.17150048965672e-8,0.0031255497310814042,-4.35346390742139e-5,7.178155313739291e-8,0.00312570246406995,-4.3652662272077505e-5,7.196242839516862e-8,0.0031258876523310264,-4.384487979547073e-5,7.225856364534224e-8,0.003126139361453899,-4.409699636109416e-5,7.26468964950289e-8,0.003126485461480311,-4.437689592985936e-5,7.307674195249288e-8,0.003126937079372063,-4.4637120813428204e-5,7.347383911846252e-8,0.003127478854765807,-4.482535361453673e-5,7.375675854161458e-8,0.0031280666690904416,-4.490213927602775e-5,7.386449999496449e-8,0.0031286382404406153,-4.4858518891369295e-5,7.37839353542856e-8,0.0031291344460409416,-4.472272685316552e-5,7.356017852034121e-8,0.0031295207052957296,-4.455029894921475e-5,7.328095575302624e-8,0.0031297969026368396,-4.440289276125083e-5,7.304320913549977e-8,0.0031299925059136854,-4.4327735522592144e-5,7.292069128837017e-8,0.0031301525953489643,-4.4346566926362245e-5,7.294663172919162e-8,0.003130323040755186,-4.44552245163689e-5,7.311334170083266e-8,0.0031305398839340287,-4.463002091424208e-5,7.338260528006618e-8,0.00313082404631057,-4.483652215332876e-5,7.369977824422968e-8,0.0031311803606072124,-4.503787355813529e-5,7.400698484506922e-8,0.0031315994383132096,-4.5201450522542784e-5,7.425347439859536e-8,0.0031320612381614877,-4.530356848674249e-5,7.440279963037097e-8,0.0031325396046175753,-4.533218545978504e-5,7.443682235158883e-8,0.003133007088926917,-4.528754210138793e-5,7.435654510846008e-8,0.003133439334571156,-4.51809403698077e-5,7.41801159799911e-8,0.003133818472273233,-4.503213230381495e-5,7.393873233871031e-8,0.003134135205289634,-4.486591093923118e-5,7.367133504974223e-8,0.0031343895555660316,-4.470855447784281e-5,7.34190699593144e-8,0.003134590575431148,-4.4584622562577654e-5,7.322027017012072e-8,0.0031347554245567386,-4.451420562905288e-5,7.310611312884732e-8,0.0031349080100163845,-4.451044644791041e-5,7.309669605942408e-8,0.0031350771198854635,-4.457710742852157e-5,7.319723119373661e-8,0.0031352936217133444,-4.47060605212665e-5,7.339422020383135e-8,0.0031355858958112227,-4.487510826442938e-5,7.365224958348347e-8,0.003135972822388433,-4.5047645339306655e-5,7.391369496033267e-8,0.0031364549294214225,-4.517674188187485e-5,7.410524949995039e-8,0.003137006880828943,-4.521608014150156e-5,7.415499865583744e-8,0.0031375773084138556,-4.513707215275879e-5,7.401903658596108e-8,0.003138101428611319,-4.494515854131807e-5,7.370680978793502e-8,0.0031385245037932065,-4.468383466731007e-5,7.328731665396651e-8,0.0031388241332245405,-4.441996388809048e-5,7.286597138629206e-8,0.003139017499846824,-4.421722026618582e-5,7.254276438257211e-8,0.003139150157383647,-4.411342074013215e-5,7.237653893372397e-8,0.0031392756212672386,-4.411288523762928e-5,7.237306272266767e-8,0.003139437968769991,-4.4192948719133804e-5,7.249557334607343e-8,0.0031396632755686426,-4.431658177299298e-5,7.268500837724008e-8,0.0031399588406845693,-4.444412071309936e-5,7.287870894461722e-8,0.0031403166737552367,-4.454122642373622e-5,7.302295817715162e-8,0.0031407183126958165,-4.4583109623867075e-5,7.307944575839242e-8,0.0031411394477191415,-4.4556196731207386e-5,7.302762227868937e-8,0.0031415539994911366,-4.445830099035177e-5,7.28647417048713e-8,0.003141937728993228,-4.429775179132686e-5,7.260437295376374e-8,0.0031422713373744243,-4.4091609934731785e-5,7.227358181570472e-8,0.0031425429027575314,-4.386309308749254e-5,7.190893225978437e-8,0.0031427494576673834,-4.363836426557965e-5,7.155149576181157e-8,0.0031428974772572276,-4.3442976873453624e-5,7.124128957024562e-8,0.003143002214192302,-4.329843267004607e-5,7.101185038058907e-8,0.003143086052266109,-4.321920239699395e-5,7.088551186228275e-8,0.0031431760678829164,-4.3210361139567735e-5,7.086966698763124e-8,0.0031433008971223707,-4.3265945431617366e-5,7.09542336198036e-8,0.003143486895319873,-4.336813785078726e-5,7.111052058211447e-8,0.0031437533847702066,-4.348759147027911e-5,7.12919612296051e-8,0.0031441069213620117,-4.358585463469756e-5,7.143813366953108e-8,0.003144535476545944,-4.362139298757207e-5,7.148429942205696e-8,0.003145005091611609,-4.3560203673701036e-5,7.137795505629189e-8,0.003145463126681861,-4.3389675112285365e-5,7.11003324650128e-8,0.003145851574927433,-4.3129979926205826e-5,7.068402441148508e-8,0.0031461283507413433,-4.2833959953962696e-5,7.021264040871186e-8,0.003146286100171612,-4.257032356693477e-5,6.979432110562806e-8,0.0031463558591178996,-4.239669820392884e-5,6.951932082306872e-8,0.003146392327049763,-4.233819904869464e-5,6.942631862677053e-8,0.0031464507043553205,-4.2383168839997224e-5,6.94958958380317e-8,0.0031465688651928546,-4.249459392815535e-5,6.966883115670779e-8,0.0031467612849682977,-4.262689345829094e-5,6.987285185595196e-8,0.0031470222789782287,-4.273918499304871e-5,7.004366315740973e-8,0.0031473330289561153,-4.2802158807808166e-5,7.013567759431403e-8,0.003147668417268007,-4.279983806022786e-5,7.01245308551207e-8,0.0031480021049310764,-4.272860133319068e-5,7.00052672228628e-8,0.0031483099313495784,-4.259528124034335e-5,6.978916831189976e-8,0.0031485723125253334,-4.241509647530167e-5,6.950045735299453e-8,0.0031487761173877083,-4.2209454417396814e-5,6.917289890407978e-8,0.0031489161538580373,-4.2003459881328945e-5,6.884596295593158e-8,0.003148996162170557,-4.1822953882087386e-5,6.856021556609623e-8,0.003149028978654053,-4.169106752864223e-5,6.835188836388549e-8,0.003149035482429731,-4.162464544196019e-5,6.824720046102467e-8,0.003149042199251593,-4.163112014627014e-5,6.825739085675065e-8,0.00314907771956232,-4.170639233813112e-5,6.837538674971382e-8,0.0031491682653819867,-4.18342132313785e-5,6.857492364962827e-8,0.0031493329122884942,-4.198742613049102e-5,6.881267918772647e-8,0.003149579039836493,-4.213120402571019e-5,6.903358555963276e-8,0.0031498986271138838,-4.2228420130555436e-5,6.91794432100356e-8,0.0031502664228729867,-4.2247298350746497e-5,6.920097199180307e-8,0.003150641701734798,-4.217078712182122e-5,6.907238815589541e-8,0.0031509754961388586,-4.200545381164349e-5,6.880509810771359e-8,0.0031512238608324395,-4.1785638196682574e-5,6.845392811745735e-8,0.0031513640821730364,-4.1567794289340616e-5,6.810802378555436e-8,0.003151406157010707,-4.141327484247085e-5,6.786370323995615e-8,0.0031513912510576945,-4.136560918026271e-5,6.778876311671728e-8,0.003151375804577231,-4.1434395174820625e-5,6.789730029476199e-8,0.0031514098642566202,-4.159482257943738e-5,6.81492342574456e-8,0.0031515215625475173,-4.18012216288661e-5,6.847194098192803e-8,0.0031517136174996478,-4.200494130433833e-5,6.878861599395965e-8,0.0031519692707481077,-4.216756787951769e-5,6.903911030241721e-8,0.003152261517243071,-4.2266490087485424e-5,6.918851693440988e-8,0.0031525610670786637,-4.229461685062819e-5,6.922644943555905e-8,0.0031528414655990046,-4.22573706176436e-5,6.9162068457332e-8,0.003153081775375267,-4.216923255662013e-5,6.901853417953314e-8,0.0031532678798198805,-4.205077312180638e-5,6.882835975902144e-8,0.0031533932546355388,-4.192616457967239e-5,6.862959482793142e-8,0.0031534595708972847,-4.1820803001536924e-5,6.84621653927876e-8,0.0031534770784778826,-4.175861379115542e-5,6.836364650161207e-8,0.0031534643622982412,-4.17588032667655e-5,6.836409543908077e-8,0.0031534468701465957,-4.183228856251606e-5,6.848035579602831e-8,0.003153453782052926,-4.197854007215975e-5,6.871105220452271e-8,0.003153513263736754,-4.218384148552481e-5,6.903390427614672e-8,0.0031536467429532566,-4.242196322172231e-5,6.940693592124387e-8,0.003153863430347162,-4.265783483101526e-5,6.977446531891138e-8,0.003154156585993926,-4.285397543340932e-5,7.007742427316526e-8,0.00315450279718283,-4.2978622186424466e-5,7.026625449926472e-8,0.0031548650041122103,-4.301400854080456e-5,7.031388230440871e-8,0.00315519943918034,-4.296289169347691e-5,7.022577473855363e-8,0.003155465859320983,-4.285109888117147e-5,7.00436294628589e-8,0.0031556391659936065,-4.272394847220358e-5,6.983943122484468e-8,0.0031557188612724523,-4.263555517927237e-5,6.969842457165365e-8,0.0031557317728420436,-4.263280101975123e-5,6.969387032889604e-8,0.0031557249027450757,-4.2739520543408744e-5,6.98623192302485e-8,0.0031557498994496218,-4.294833096833603e-5,7.019104128047928e-8,0.00315584589866597,-4.322452786249621e-5,7.062447804376743e-8,0.0031560287243041687,-4.3519737897634517e-5,7.108598411323216e-8,0.003156290210848438,-4.378791545601902e-5,7.150311106554863e-8,0.0031566054069980037,-4.3996660675542415e-5,7.182534984786604e-8,0.0031569423808284628,-4.4131253208340974e-5,7.203026754938302e-8,0.003157270337523358,-4.4192994871844845e-5,7.212064457656072e-8,0.003157564470837877,-4.419496903596624e-5,7.211761487890475e-8,0.003157808015852627,-4.415761251223253e-5,7.205364259861087e-8,0.0031579926823708912,-4.4105138784809375e-5,7.196695049477917e-8,0.0031581184957774153,-4.406285452731199e-5,7.189738913692536e-8,0.003158193599416625,-4.4054911516432865e-5,7.188294750699247e-8,0.003158234031798483,-4.4101897275740684e-5,7.195593087373301e-8,0.003158263018098467,-4.421788006294162e-5,7.213822712040806e-8,0.003158309054218505,-4.440704337455989e-5,7.243594276621938e-8,0.0031584021289597524,-4.466069514352587e-5,7.283470938809992e-8,0.0031585679463628875,-4.495603322513259e-5,7.329786169090022e-8,0.003158821045759386,-4.5258255933040026e-5,7.37699600181512e-8,0.003159158924190263,-4.5526890236963015e-5,7.418696615489833e-8,0.0031595597943583466,-4.572549126524957e-5,7.44916678688917e-8,0.003159985788919604,-4.5832004494916494e-5,7.465002833083531e-8,0.003160391467505701,-4.5846244908167024e-5,7.466284408960723e-8,0.003160735390904223,-4.5791651761595475e-5,7.456824370500927e-8,0.003160991329864051,-4.5710340506587154e-5,7.443354724124745e-8,0.0031611557652805296,-4.56525958579643e-5,7.433840211999739e-8,0.0031612493653574466,-4.566356507695597e-5,7.43536688058528e-8,0.0031613116320375638,-4.577082683019708e-5,7.452191859422641e-8,0.00316138983687732,-4.5976704493927694e-5,7.484561016922063e-8,0.0031615255351170207,-4.625816721714404e-5,7.52873081576349e-8,0.00316174330606514,-4.6574539940815696e-5,7.578215147025375e-8,0.0031620456464795553,-4.687999059605023e-5,7.625769376845123e-8,0.003162415165519021,-4.713588347181678e-5,7.665335200741533e-8,0.003162822036835446,-4.731880660958561e-5,7.693289460631574e-8,0.0031632329785881486,-4.7422738256966696e-5,7.708762391075058e-8,0.0031636185498555743,-4.7456548574135615e-5,7.713222429686289e-8,0.003163957394531511,-4.743930170684533e-5,7.709723112409955e-8,0.003164237749092535,-4.7395460395258866e-5,7.702145770310557e-8,0.0031644572629982944,-4.735103026805132e-5,7.694598016390119e-8,0.0031646221440750945,-4.733077694987257e-5,7.690981863864776e-8,0.003164746262745098,-4.735610332844896e-5,7.694660644621445e-8,0.003164850315648308,-4.744295341822404e-5,7.708123668442743e-8,0.003164960615211108,-4.7599282087552986e-5,7.732580598792541e-8,0.00316510674443353,-4.7822150507262595e-5,7.767502077308712e-8,0.0031653173075884386,-4.809522158373371e-5,7.810233831505504e-8,0.003165613500816317,-4.8388234367153477e-5,7.855932068502407e-8,0.003166001527547761,-4.8660505245747866e-5,7.898136490858256e-8,0.0031664667240323473,-4.886967395690606e-5,7.930165483686465e-8,0.0031669732473650035,-4.898427913808119e-5,7.947106008168446e-8,0.0031674717018881997,-4.899555012818512e-5,7.94766938590658e-8,0.0031679131839261526,-4.892263568963575e-5,7.934999749978144e-8,0.0031682643359964833,-4.8808002238974886e-5,7.91591853553536e-8,0.0031685171259444567,-4.8704610129976645e-5,7.898863798646383e-8,0.003168689888016564,-4.866027347872532e-5,7.891391738685978e-8,0.0031688203554882553,-4.870497925930795e-5,7.898168134647224e-8,0.0031689541483683986,-4.884458925824059e-5,7.919995944645049e-8,0.003169132666912061,-4.90615415154104e-5,7.953967154409288e-8,0.0031693835370994743,-4.932123743816433e-5,7.994513150365482e-8,0.0031697155633991425,-4.958174182690445e-5,8.034963065946353e-8,0.0031701188096189092,-4.9803993111668386e-5,8.069160780662406e-8,0.0031705690690595756,-4.995993501816825e-5,8.092735112553882e-8,0.0031710349046023332,-5.003685841512912e-5,8.103761860361142e-8,0.003171484997353245,-5.003758483585365e-5,8.10276899103105e-8,0.0031718939250299756,-4.997743721292307e-5,8.092241368604767e-8,0.0031722454763997874,-4.98796363572316e-5,8.075886678430627e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json new file mode 100644 index 000000000..841a3deb4 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_21.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":21000,"numberOfSamples":1000,"samples":[0.0031725336341924394,-4.9770637985046546e-5,8.057900832626396e-8,0.0031727619720193665,-4.967631255249218e-5,8.042370582661394e-8,0.0031729423213677447,-4.961918610821703e-5,8.032842301827844e-8,0.003173093301004051,-4.9616439750269165e-5,8.032005503717977e-8,0.0031732388512125246,-4.9678142521825614e-5,8.04140915834666e-8,0.003173406461172115,-4.980531114277095e-5,8.061152056197695e-8,0.003173624434517486,-4.998780080363393e-5,8.089554409980637e-8,0.0031739174410596086,-5.02027153676187e-5,8.122921958837977e-8,0.0031743000569504428,-5.0414905317985565e-5,8.155645946622467e-8,0.0031747693572844707,-5.058170552271261e-5,8.1809696462639e-8,0.003175299754099858,-5.066328166614758e-5,8.192630588543693e-8,0.003175844728509721,-5.06368615606572e-5,8.187106223913913e-8,0.003176348378152092,-5.0508762136083794e-5,8.16550486069026e-8,0.0031767639923363524,-5.0316402748498936e-5,8.133866443459827e-8,0.0031770709661550177,-5.011689791600365e-5,8.101329428919594e-8,0.0031772811274633317,-4.9967147620633346e-5,8.076944687326912e-8,0.003177432030673561,-4.9905479367471625e-5,8.066745206192551e-8,0.003177572270523811,-4.994259580574966e-5,8.072317955227706e-8,0.003177746439699948,-5.0063033684474547e-5,8.091070950808379e-8,0.0031779848344744835,-5.0233470557248106e-5,8.117598151931799e-8,0.0031782992076989803,-5.0413262606724425e-5,8.145387798184555e-8,0.003178683508504494,-5.056397454491497e-5,8.168346678500409e-8,0.0031791178624765563,-5.0656360805938936e-5,8.181895509495128e-8,0.003179574229733301,-5.067436252240991e-5,8.183576329438713e-8,0.003180022490647086,-5.0616168724939576e-5,8.173192449420742e-8,0.0031804358927458322,-5.049270511433461e-5,8.152548156884965e-8,0.0031807950553075313,-5.0324297904340744e-5,8.124910490024964e-8,0.0031810901697997096,-5.013646650496189e-5,8.094342997127281e-8,0.003181321456190578,-4.995570801310683e-5,8.065043893174666e-8,0.0031814982527144423,-4.9805917795511555e-5,8.040785329190629e-8,0.0031816373210504898,-4.970574993088201e-5,8.024497887522197e-8,0.0031817608717426495,-4.9666782981278536e-5,8.017978161620004e-8,0.0031818944706078238,-4.969213348437762e-5,8.021665586604609e-8,0.003182064656150664,-4.977526990474911e-5,8.034455083019423e-8,0.0031822958582123618,-4.9899054210053294e-5,8.053555151866265e-8,0.0031826060765792474,-5.00355420814562e-5,8.074475516704612e-8,0.0031830011463665404,-5.014786026254351e-5,8.091345990457809e-8,0.0031834686693217383,-5.0195995982255704e-5,8.097846711663703e-8,0.0031839746468371897,-5.01475748419181e-5,8.088913626890179e-8,0.0031844673261262986,-4.999173257679851e-5,8.062922765445895e-8,0.003184891172592454,-4.974957666882377e-5,8.023331134917238e-8,0.0031852075073160895,-4.9472597723993216e-5,7.978406694492346e-8,0.0031854111053174357,-4.922574084934537e-5,7.938518959159813e-8,0.0031855320833315435,-4.9062718900561163e-5,7.912193983519057e-8,0.003185621952271365,-4.9007423813544054e-5,7.903149987919705e-8,0.003185733140730741,-4.905026352546958e-5,7.909733195325303e-8,0.003185903073154297,-4.915750209942922e-5,7.926446313102022e-8,0.0031861477150601954,-4.9285511618747645e-5,7.946261622724468e-8,0.0031864630412842053,-4.9393086955828754e-5,7.962606325736776e-8,0.0031868305582437354,-4.944910682330027e-5,7.970578335261417e-8,0.0031872237417380285,-4.9435815064372105e-5,7.967442526435043e-8,0.003187613799646374,-4.934910556784959e-5,7.952642648280632e-8,0.0031879743406409483,-4.919701658863508e-5,7.927535204629794e-8,0.0031882849181979036,-4.899707191619981e-5,7.894954072044581e-8,0.0031885333705692622,-4.8772886247731465e-5,7.85867133852273e-8,0.0031887169235430774,-4.8550472591157195e-5,7.82281831475899e-8,0.0031888421191353347,-4.8354611885566905e-5,7.791317453714298e-8,0.0031889236591736768,-4.820561826479776e-5,7.767373204135999e-8,0.003188982392912168,-4.811685191685343e-5,7.753076281390647e-8,0.0031890428229633568,-4.80931088914721e-5,7.749144001256398e-8,0.003189130371339149,-4.8129751866914776e-5,7.754779717892457e-8,0.0031892684093893045,-4.821248076042052e-5,7.767640704932689e-8,0.003189474936144377,-4.8317827589117846e-5,7.78393091488724e-8,0.003189758740824415,-4.841472688601514e-5,7.798671830001753e-8,0.0031901151496382964,-4.846801130205281e-5,7.806277470675716e-8,0.0031905224205677797,-4.844497532884705e-5,7.801604196463123e-8,0.003190941284990858,-4.8325353983456495e-5,7.781525298490396e-8,0.0031913210506145494,-4.811258839800113e-5,7.746697340533311e-8,0.0031916141519961177,-4.784055752540146e-5,7.702604990677442e-8,0.003191795418319783,-4.7568255887754585e-5,7.658695371946121e-8,0.0031918755740832448,-4.73600221174305e-5,7.625217949764229e-8,0.003191898603829455,-4.725988960279658e-5,7.609132297246147e-8,0.0031919229650166662,-4.7275184045738147e-5,7.611500607230232e-8,0.003191998333085281,-4.737827479416436e-5,7.62779363395227e-8,0.0031921508881996145,-4.752216804202383e-5,7.65041794434679e-8,0.003192381393929433,-4.765854984268982e-5,7.671628736820805e-8,0.0031926718219546014,-4.7750056416319196e-5,7.685497758163076e-8,0.003192994371773742,-4.7775167613736925e-5,7.688676322707986e-8,0.0031933191121518447,-4.7727892633397725e-5,7.680310882032987e-8,0.0031936191057208192,-4.761498877639121e-5,7.661565929511285e-8,0.0031938734231599622,-4.74525826505499e-5,7.635065824624502e-8,0.0031940688710230926,-4.7262880918771545e-5,7.60436847923047e-8,0.0031942008964133926,-4.707097737875328e-5,7.573466367930087e-8,0.0031942737606263116,-4.6901719035824056e-5,7.546299629687368e-8,0.003194299972841271,-4.6776661718682426e-5,7.526278957837741e-8,0.003194298887206334,-4.6711226468842323e-5,7.51583342891208e-8,0.003194294386829285,-4.671240074914931e-5,7.516039741374076e-8,0.0031943118407074603,-4.6777394668392805e-5,7.526403312546946e-8,0.0031943746893159835,-4.6893437644436546e-5,7.544826377873212e-8,0.0031945009495270385,-4.7038759907479775e-5,7.567773903852656e-8,0.0031946998830175675,-4.7184820903478814e-5,7.590646855791671e-8,0.0031949691011137634,-4.729986237129749e-5,7.608369607755573e-8,0.0031952925157211496,-4.735397448743149e-5,7.616211706606225e-8,0.003195640046002511,-4.7325873413935426e-5,7.610866131565764e-8,0.0031959707011487326,-4.721084275969199e-5,7.591694218179518e-8,0.0031962407678702612,-4.7027544120006907e-5,7.561778712416466e-8,0.0031964172220154555,-4.68193172139658e-5,7.528100427078354e-8,0.003196492459990767,-4.664522204584982e-5,7.500092425591764e-8,0.003196492024360513,-4.6560407478603466e-5,7.486507180241458e-8,0.0031964677331033607,-4.6593856889802264e-5,7.491877034751068e-8,0.003196477403032644,-4.673659702635629e-5,7.514654134177191e-8,0.0031965625176653793,-4.694773588519694e-5,7.548204705047288e-8,0.0031967362693748544,-4.717322873987367e-5,7.583837429474331e-8,0.003196985533609338,-4.73651776342118e-5,7.613905990916508e-8,0.0031972812138878572,-4.74929888958597e-5,7.633588427653374e-8,0.003197589462630078,-4.7545490933105095e-5,7.64119965822908e-8,0.0031978796496195555,-4.752757942989125e-5,7.637620017022061e-8,0.00319812848863574,-4.745512493931714e-5,7.625453549820702e-8,0.00319832144886984,-4.73503257355979e-5,7.608275219379998e-8,0.003198452856742482,-4.723812082730018e-5,7.590064580016247e-8,0.0031985255501511783,-4.7143356527051194e-5,7.57476813144896e-8,0.0031985502819583764,-4.708825806567633e-5,7.565908112945316e-8,0.003198544736531598,-4.708995351933302e-5,7.566191375034777e-8,0.0031985318797554075,-4.7158036203798245e-5,7.577116598009077e-8,0.0031985373474858482,-4.729251335254058e-5,7.598640463765804e-8,0.003198585869566576,-4.7482775567525455e-5,7.629010685976644e-8,0.003198697155597323,-4.77081476564717e-5,7.664860219081877e-8,0.0031988819238857836,-4.794029858008897e-5,7.701607636820799e-8,0.003199138852327985,-4.8147471043280815e-5,7.734153154992998e-8,0.003199453210956632,-4.830010600773658e-5,7.757794512375888e-8,0.003199797758983186,-4.8377126251611665e-5,7.769236057072432e-8,0.0032001363178023106,-4.8371976704389703e-5,7.767540881795748e-8,0.0032004303140051693,-4.829716076321788e-5,7.754825940028813e-8,0.0032006480922657813,-4.818534649742223e-5,7.736402060215561e-8,0.0032007754503471137,-4.8084736666072045e-5,7.720004750070717e-8,0.0032008237523528764,-4.804734673697885e-5,7.713910918442968e-8,0.0032008304786310298,-4.811209016681051e-5,7.724247975155619e-8,0.0032008488052868407,-4.828932206014769e-5,7.75255161602495e-8,0.0032009288771208118,-4.8555592301733185e-5,7.794960329169746e-8,0.0032010998408043487,-4.886272668875077e-5,7.843695977208304e-8,0.003201361960637265,-4.915635461273817e-5,7.89004476629134e-8,0.0032016912406135044,-4.939361188750261e-5,7.927192014721211e-8,0.0032020513707647475,-4.955240233850549e-5,7.951689650027676e-8,0.003202405716929175,-4.963141986809062e-5,7.963431614369855e-8,0.003202725094131901,-4.964474472975755e-5,7.96475824883057e-8,0.0032029909049170156,-4.961523348656123e-5,7.959378125967193e-8,0.0032031952157390927,-4.9569099471490336e-5,7.951497736532009e-8,0.003203339535741044,-4.9532218017991734e-5,7.945241230521701e-8,0.003203433394698867,-4.9527674213515084e-5,7.944273135170713e-8,0.003203493051170196,-4.9573859322178696e-5,7.951503476725994e-8,0.0032035401504446515,-4.968261143955701e-5,7.968790885396807e-8,0.003203599881864006,-4.9857248372708116e-5,7.996622623173358e-8,0.0032036981474841027,-5.009083623491609e-5,8.033833401588e-8,0.003203857560932273,-5.036549668524096e-5,8.077497791863144e-8,0.003204092697562571,-5.0653692877754714e-5,8.123148677107812e-8,0.003204405679190628,-5.092213317310819e-5,8.165420910353239e-8,0.0032047836194003913,-5.1138171334250516e-5,8.199093925766638e-8,0.0032051993388942314,-5.1277508026645685e-5,8.220333981594443e-8,0.0032056159214573134,-5.1331152612609345e-5,8.227803147217174e-8,0.003205994476325643,-5.130950962968257e-5,8.223291039616594e-8,0.0032063034747539243,-5.124205747668012e-5,8.211628608958799e-8,0.0032065274675029567,-5.117202959915313e-5,8.199800522314307e-8,0.0032066727907678195,-5.114661833837934e-5,8.195353656090792e-8,0.003206768020942503,-5.120449980278048e-5,8.204400434520673e-8,0.003206857735831905,-5.1363916576045276e-5,8.229736031489842e-8,0.0032069901253816147,-5.161569359479557e-5,8.269759795845019e-8,0.0032072020803685336,-5.192501441612641e-5,8.318797642795423e-8,0.0032075077397297554,-5.2242393867866604e-5,8.368882847285539e-8,0.0032078955532431,-5.251946367429561e-5,8.412289258504691e-8,0.0032083345384939406,-5.272262269658563e-5,8.443706503733802e-8,0.0032087857334492185,-5.2839458337762004e-5,8.461246000974382e-8,0.0032092132683576424,-5.287735806351859e-5,8.466190722367029e-8,0.003209591378752329,-5.285732676741347e-5,8.461980304623928e-8,0.0032099067777057117,-5.28068081968459e-5,8.45304822826286e-8,0.0032101578456377655,-5.275393921740916e-5,8.443903221733049e-8,0.0032103524731652163,-5.272386017376191e-5,8.438550073902889e-8,0.003210505786562472,-5.273660287213019e-5,8.440164096217491e-8,0.0032106382225371155,-5.280577247081059e-5,8.450886182259405e-8,0.0032107738321281018,-5.293736316606222e-5,8.471631689347386e-8,0.0032109383060951215,-5.312841217033488e-5,8.501870672494748e-8,0.0032111560978738906,-5.3365752533195204e-5,8.53942849508674e-8,0.0032114462795934918,-5.362571089155793e-5,8.580446840164302e-8,0.003211817437324192,-5.3875979778961625e-5,8.619700739786424e-8,0.003212262941595191,-5.408075100149098e-5,8.651439387397291e-8,0.0032127589082548043,-5.42090965214644e-5,8.670741201761251e-8,0.003213267160170133,-5.4244595572723914e-5,8.675057308886833e-8,0.0032137438024166646,-5.419248668805494e-5,8.665344939450431e-8,0.003214151231767454,-5.4080711291759844e-5,8.646208359285265e-8,0.0032144693035585834,-5.395352361443707e-5,8.624839037585663e-8,0.003214701461565474,-5.385958237500533e-5,8.609072790016972e-8,0.003214873783886847,-5.383864063516811e-5,8.605238679805011e-8,0.0032150276171485034,-5.391105610832501e-5,8.616487457733809e-8,0.003215208326315366,-5.4072889410851724e-5,8.642041535988369e-8,0.0032154533705997484,-5.429755486548332e-5,8.677506471248515e-8,0.0032157828754069747,-5.4543390211428154e-5,8.716123185097693e-8,0.0032161952720170784,-5.47649828140714e-5,8.750601063943785e-8,0.0032166691643119804,-5.492483570390711e-5,8.7749822276115e-8,0.003217170484883344,-5.500177601999277e-5,8.785966932376333e-8,0.0032176621369899984,-5.499386164298536e-5,8.783350388091249e-8,0.0032181127441866936,-5.491583634520034e-5,8.76958803060696e-8,0.003218502126948113,-5.479314994168618e-5,8.748819344576886e-8,0.0032188229483265337,-5.465521433334049e-5,8.72578166749344e-8,0.0032190794757014783,-5.452988429357098e-5,8.704931644272088e-8,0.0032192849457666393,-5.443991014971355e-5,8.689888287838887e-8,0.003219458734952503,-5.440110974291796e-5,8.683149639470852e-8,0.003219623918717538,-5.442154904813298e-5,8.685964506488469e-8,0.0032198052118412182,-5.45010330062948e-5,8.698248405259667e-8,0.0032200268668433098,-5.463053766414709e-5,8.718490554543236e-8,0.0032203099278025797,-5.479171920972871e-5,8.743680309860852e-8,0.0032206683696555803,-5.4957218224956276e-5,8.769370344416006e-8,0.003221104252445989,-5.509302127948437e-5,8.790074530833945e-8,0.0032216031987040658,-5.516423932315975e-5,8.800209652952139e-8,0.003222132914621037,-5.514457142603367e-5,8.795617458979574e-8,0.003222647901010924,-5.502711200558859e-5,8.775290593353369e-8,0.0032231013851103294,-5.483131338436564e-5,8.74247239172623e-8,0.003223460966712298,-5.4600702849415643e-5,8.704264763661174e-8,0.003223720696988658,-5.43901749473945e-5,8.66955543476372e-8,0.0032239032022557705,-5.4248004296358326e-5,8.646099319840247e-8,0.003224051050262102,-5.4200944786757004e-5,8.638114273675721e-8,0.003224212268778945,-5.424827912428962e-5,8.645345453958669e-8,0.0032244265358801734,-5.4365234327404105e-5,8.663660081008881e-8,0.003224716276502034,-5.451231450454134e-5,8.686597920410975e-8,0.003225083737911467,-5.4646403659949004e-5,8.707189019189658e-8,0.0032255131188312245,-5.473059972318432e-5,8.719538813836393e-8,0.0032259761006378034,-5.4741087113638165e-5,8.719911679190398e-8,0.0032264390598020325,-5.467034723233956e-5,8.707212789604444e-8,0.003226870334335864,-5.452668660564738e-5,8.682879510984012e-8,0.0032272460710804887,-5.4330699940323715e-5,8.65029138253738e-8,0.0032275536298945894,-5.4109915442819836e-5,8.613902532997006e-8,0.003227792304669776,-5.389313593906661e-5,8.5783374691673e-8,0.0032279718677233277,-5.370570458175747e-5,8.547642058179856e-8,0.003228109845550558,-5.356634066004432e-5,8.524786544988952e-8,0.003228228456413095,-5.348557339633553e-5,8.511420042723426e-8,0.0032283518197443535,-5.346531342893715e-5,8.507801310989298e-8,0.0032285035568127823,-5.349896832429377e-5,8.512814037196994e-8,0.003228704536722173,-5.357174984312455e-5,8.524016481482288e-8,0.0032289703539402797,-5.366119984972382e-5,8.537735462686527e-8,0.00322930813206437,-5.373842092470895e-5,8.549282323459017e-8,0.003229712689921856,-5.377103839587337e-5,8.553448506801853e-8,0.0032301631836865975,-5.3729107718665944e-5,8.545465152637074e-8,0.0032306227277087924,-5.359428799950994e-5,8.522472059019744e-8,0.0032310441986026,-5.337012969281068e-5,8.48515280839209e-8,0.0032313836582013745,-5.30879790841398e-5,8.438660592029636e-8,0.0032316176061930268,-5.280197806460897e-5,8.391790250084734e-8,0.0032317548261706127,-5.2571609399665335e-5,8.354146004605948e-8,0.0032318343808087915,-5.243934120871027e-5,8.332524114371036e-8,0.00323190997001867,-5.24157284474321e-5,8.328513968311465e-8,0.003232029903870015,-5.247922773889295e-5,8.33849749888785e-8,0.0032322230037252673,-5.2587959715898925e-5,8.355594128527012e-8,0.0032324945300250224,-5.269508974157829e-5,8.372185756843382e-8,0.0032328299476484103,-5.2761097382812485e-5,8.381914925073835e-8,0.0032332022647684135,-5.2760565068347416e-5,8.380767128683809e-8,0.0032335796804347913,-5.268412304439345e-5,8.367349551296979e-8,0.003233931955256522,-5.2537170491451925e-5,8.342645104170425e-8,0.00323423510297691,-5.2336755010051395e-5,8.309480474079313e-8,0.003234474406802793,-5.210743061617814e-5,8.271847665355266e-8,0.0032346457437325534,-5.187668488346703e-5,8.234172294838152e-8,0.003234755280902423,-5.167055575138879e-5,8.200621219761825e-8,0.003234817807050895,-5.150997501251897e-5,8.174527616602243e-8,0.00323485410132211,-5.140821394599531e-5,8.157988013641992e-8,0.0032348878601373273,-5.1369622605597356e-5,8.15166024002056e-8,0.003234942697918216,-5.138953284328997e-5,8.154743911983669e-8,0.00323503947037617,-5.1454958354580704e-5,8.16508993774942e-8,0.0032351938886941546,-5.154582187779148e-5,8.179401797604287e-8,0.0032354142832091816,-5.16366609641141e-5,8.193524012891515e-8,0.003235699333554656,-5.1699018157927345e-5,8.202847891428973e-8,0.0032360358332845078,-5.170513116825102e-5,8.202923924758582e-8,0.003236397395298634,-5.163367599192616e-5,8.190391001440081e-8,0.0032367460274376706,-5.147751296830587e-5,8.164208997353886e-8,0.003237038911014802,-5.125146075858404e-5,8.126881868503913e-8,0.0032372413519731985,-5.099546813545693e-5,8.084938120768122e-8,0.0032373424767896393,-5.076735769152771e-5,8.04773994266105e-8,0.003237364737593232,-5.0623575968753e-5,8.024369261604461e-8,0.0032373583817348877,-5.0595930934664296e-5,8.01987556722749e-8,0.0032373814263608053,-5.067835383782129e-5,8.033154293976049e-8,0.0032374767927001143,-5.0831888417986464e-5,8.05778502518239e-8,0.0032376595358681605,-5.100299476696643e-5,8.08503013355666e-8,0.0032379179830066707,-5.1142929781694154e-5,8.106998345596535e-8,0.0032382234578475634,-5.121949714913483e-5,8.118548183125027e-8,0.0032385413765336594,-5.1220034229706235e-5,8.117745244402647e-8,0.0032388396301233986,-5.1148784000511076e-5,8.105395968506553e-8,0.00323909343633175,-5.1022080757357263e-5,8.084232217504016e-8,0.003239287476598087,-5.086344596635564e-5,8.058099601387515e-8,0.003239416418574005,-5.06993062299847e-5,8.031267394281034e-8,0.0032394844711164405,-5.055531403368913e-5,8.007849327535253e-8,0.0032395041778899027,-5.0453203864372276e-5,7.991313554603084e-8,0.003239494528968082,-5.0408228290502986e-5,7.98408045445796e-8,0.0032394784475627734,-5.0427301336513986e-5,7.987225828658261e-8,0.003239479791896909,-5.050810067219918e-5,8.000332058699083e-8,0.0032395202194974377,-5.063931236648878e-5,8.021522493846629e-8,0.003239616293252338,-5.080193546123921e-5,8.047671952390412e-8,0.003239777049036872,-5.097147176821398e-5,8.074769163503124e-8,0.003240002171167665,-5.112088531384368e-5,8.098412232278307e-8,0.0032402808961741075,-5.122423243494423e-5,8.114415044682696e-8,0.0032405918090109447,-5.126100829262938e-5,8.119521335082708e-8,0.003240904131438615,-5.122133435508816e-5,8.112236888320618e-8,0.003241181684719136,-5.111146117220087e-5,8.093692711688671e-8,0.003241390622446391,-5.095766931217798e-5,8.068237971757372e-8,0.0032415106650658305,-5.080520775946731e-5,8.04323546602781e-8,0.003241546514068598,-5.070868740467566e-5,8.027494782684523e-8,0.0032415324844812794,-5.071373081832885e-5,8.028313812372978e-8,0.003241523709398545,-5.083705921425271e-5,8.048281634683229e-8,0.0032415751240446157,-5.1057319994444045e-5,8.083823631077988e-8,0.003241719537245258,-5.132391935969942e-5,8.126660197144499e-8,0.0032419576140943988,-5.157842278878715e-5,8.167296421774885e-8,0.0032422632301883753,-5.177516910115313e-5,8.198373070848606e-8,0.0032425973491017465,-5.189151237656024e-5,8.216316480911329e-8,0.003242921385633165,-5.192728220314501e-5,8.221219939811576e-8,0.003243205429064354,-5.1898436692860174e-5,8.215775773060924e-8,0.0032434313058024543,-5.182970678799692e-5,8.204054311489319e-8,0.0032435923938506023,-5.1748673330064326e-5,8.190536290404036e-8,0.0032436920809447035,-5.1681708633171465e-5,8.179466859600291e-8,0.0032437419250657485,-5.165123951677518e-5,8.17443236041018e-8,0.0032437597611700603,-5.167373948957442e-5,8.178051974505204e-8,0.0032437676397874047,-5.1758154968282606e-5,8.191729901686929e-8,0.003243789408658554,-5.190473825027876e-5,8.215464440259327e-8,0.0032438478099100776,-5.2104555505873134e-5,8.247762756783664e-8,0.0032439612563935362,-5.234009583257239e-5,8.28573715553115e-8,0.0032441407595725984,-5.258721229750601e-5,8.325425050664329e-8,0.0032443875424479525,-5.281834024054875e-5,8.36232428780749e-8,0.0032446918276209393,-5.300675228469284e-5,8.392100559929466e-8,0.0032450332255609038,-5.3131371114476176e-5,8.411381289746435e-8,0.00324538295404514,-5.318148371486626e-5,8.418520437848297e-8,0.003245707983573782,-5.316071079859441e-5,8.414223757206918e-8,0.0032459772192329835,-5.3089364431137183e-5,8.401896535485175e-8,0.0032461694781570896,-5.300370532228837e-5,8.387484551908885e-8,0.003246281847351533,-5.2950284714670026e-5,8.37853066862844e-8,0.0032463352544695014,-5.297443793121066e-5,8.382308719834454e-8,0.0032463728424833803,-5.310479309421307e-5,8.403337508404443e-8,0.003246448216996769,-5.333992759564566e-5,8.441256609303461e-8,0.0032466062921121183,-5.364552457477591e-5,8.49040114435253e-8,0.0032468659901151594,-5.396605828032138e-5,8.541718992475005e-8,0.003247214553528512,-5.424562065011762e-5,8.586156956307863e-8,0.003247615679936334,-5.444642162568678e-5,8.617657458590432e-8,0.003248024912597425,-5.455655514944839e-5,8.634399975468773e-8,0.003248403432332568,-5.458687626580262e-5,8.638262859372707e-8,0.0032487255353343303,-5.4562352771310106e-5,8.633386467620277e-8,0.00324898008935198,-5.451326661190067e-5,8.624724859115626e-8,0.0032491685238771285,-5.4468896133598934e-5,8.617020704301661e-8,0.0032493017385686698,-5.44538837415368e-5,8.614231992982142e-8,0.0032493972235823195,-5.448639212370825e-5,8.619253072529561e-8,0.0032494766715691,-5.4577106999117414e-5,8.633766110669544e-8,0.003249563821635595,-5.4728537878472483e-5,8.658130339795376e-8,0.0032496821379050258,-5.4934496846960336e-5,8.691293350608795e-8,0.0032498520196944476,-5.5180047124981716e-5,8.730779131766455e-8,0.0032500875683692987,-5.544249647615775e-5,8.772852392629017e-8,0.0032503934051933206,-5.569395062737085e-5,8.812944569042736e-8,0.0032507623946056432,-5.5905572624570456e-5,8.846361811302392e-8,0.0032511752416808635,-5.60531534073218e-5,8.869203900002466e-8,0.0032516027189509527,-5.6122949655416366e-5,8.879316740083876e-8,0.003252010653866079,-5.6116271961945236e-5,8.87702629117698e-8,0.0032523669850277413,-5.605136928982403e-5,8.865417136694602e-8,0.0032526495630223616,-5.596163996267052e-5,8.850004846746351e-8,0.003252852996146235,-5.588978132512746e-5,8.837752315420322e-8,0.0032529925562878982,-5.58782471815996e-5,8.83550511189378e-8,0.003253103082055259,-5.595758026448335e-5,8.848108953757554e-8,0.0032532314776745693,-5.613576384150119e-5,8.876716640678854e-8,0.0032534234568621025,-5.6393001850667115e-5,8.917985280515563e-8,0.0032537084871765787,-5.668575826548498e-5,8.964767779069584e-8,0.0032540894242032077,-5.696017640428366e-5,9.008307761306017e-8,0.00325454214619616,-5.716962075359378e-5,9.041084937999461e-8,0.0032550252674333844,-5.728830620990315e-5,9.059011621990187e-8,0.003255494511827089,-5.731556283163272e-5,9.06209904156305e-8,0.003255914883576044,-5.7271048375594106e-5,9.0536487245569e-8,0.003256266746644497,-5.71854418674298e-5,9.03871423788393e-8,0.003256546050101389,-5.709145577327869e-5,9.022629331978918e-8,0.003256761198809244,-5.701770488175832e-5,9.010018411835402e-8,0.0032569290319573213,-5.6985589687069876e-5,9.004308407198988e-8,0.0032570712782715805,-5.700820517414628e-5,9.007569729439265e-8,0.003257211829634789,-5.709019855395602e-5,9.02050273070369e-8,0.003257374555642879,-5.722785472994945e-5,9.042451477474267e-8,0.0032575811280771455,-5.740918789972536e-5,9.07141464433097e-8,0.0032578484112563417,-5.761434937787547e-5,9.104111671626653e-8,0.003258185352705804,-5.781702102123823e-5,9.136217618930464e-8,0.0032585898547709312,-5.7987501554828986e-5,9.162880083070914e-8,0.003259046711760422,-5.8097856157750106e-5,9.179571951463989e-8,0.0032595281106661137,-5.812865707175766e-5,9.183195308320635e-8,0.003259997899742414,-5.807559874358659e-5,9.173151942039728e-8,0.003260419534272522,-5.7953377600878414e-5,9.151954278320197e-8,0.003260765818064894,-5.7794560130481856e-5,9.125009531413922e-8,0.0032610273094332534,-5.7642803315349266e-5,9.099481763997835e-8,0.0032612163205118245,-5.754195090058938e-5,9.082492438170712e-8,0.0032613648222029144,-5.752416949150301e-5,9.07918667306029e-8,0.0032615165714595593,-5.7600716096652344e-5,9.09125486368035e-8,0.003261715522120589,-5.7758163232549566e-5,9.116362370356967e-8,0.003261993680028687,-5.796146329096944e-5,9.148694570509478e-8,0.0032623620293660872,-5.8163394938097374e-5,9.180524978805767e-8,0.003262807665272582,-5.8317766793719975e-5,9.20437012761951e-8,0.0032632983134054426,-5.839199548958222e-5,9.215020451540345e-8,0.0032637924706452283,-5.8374669624859956e-5,9.210741718701442e-8,0.0032642511156409566,-5.827592207902026e-5,9.193302480930112e-8,0.0032646467560847373,-5.8121634092867766e-5,9.167002565308534e-8,0.003264967464613854,-5.794476140729533e-5,9.137245205768258e-8,0.0032652161360441057,-5.777729029325265e-5,9.109227604970783e-8,0.0032654068966987506,-5.764485386744147e-5,9.087078295628466e-8,0.003265560763456718,-5.756421591411039e-5,9.073466938213295e-8,0.0032657018358711034,-5.754278131830879e-5,9.069539608026732e-8,0.0032658544101094944,-5.757911789189286e-5,9.075008999633211e-8,0.0032660408074434333,-5.766372839766714e-5,9.088277448331733e-8,0.003266279396647697,-5.777976701135738e-5,9.106550153542938e-8,0.003266582301739539,-5.790395532285883e-5,9.12598753635655e-8,0.0032669526451217174,-5.80083795326496e-5,9.142009964322477e-8,0.003267381767555401,-5.8063972041273024e-5,9.149881185930952e-8,0.0032678476163183977,-5.804619770493952e-5,9.145646309337639e-8,0.003268316164476314,-5.79424713012002e-5,9.12733988533491e-8,0.0032687475221006164,-5.7759070899220414e-5,9.096097972973574e-8,0.003269106529960257,-5.7523825509117984e-5,9.056570793575683e-8,0.0032693746058921917,-5.7281393394498796e-5,9.01612217244734e-8,0.0032695575700859222,-5.7081169177186004e-5,8.982829299441299e-8,0.003269685200835826,-5.696205583363011e-5,8.962983858648573e-8,0.003269802214385346,-5.69404396125155e-5,8.959138558936853e-8,0.0032699545344188102,-5.700604476264368e-5,8.969464615227079e-8,0.0032701763009091883,-5.7126338282034846e-5,8.988518777066455e-8,0.003270481677542585,-5.725676162404585e-5,9.008956185060092e-8,0.0032708629470038705,-5.735286992395743e-5,9.023531943545998e-8,0.00327129431081459,-5.73809369580062e-5,9.026823726629858e-8,0.003271739599354458,-5.7324683909892404e-5,9.0162995318363e-8,0.0032721614993477402,-5.7187059246788255e-5,8.992569167509696e-8,0.0032725298445275717,-5.698731841848309e-5,8.958873870059514e-8,0.0032728270521627735,-5.675482647236528e-5,8.920055536744774e-8,0.003273049851570274,-5.652171851946322e-5,8.881356947561132e-8,0.0032732076970815966,-5.6316492523811355e-5,8.847388481842329e-8,0.003273319145670565,-5.615979289425225e-5,8.821459453534936e-8,0.0032734076545255755,-5.6062581528121386e-5,8.80529729256984e-8,0.003273497839452653,-5.602614665502433e-5,8.799058220459504e-8,0.003273612612866018,-5.604313201827532e-5,8.801494830994981e-8,0.0032737710867281598,-5.609888691693807e-5,8.81017115844299e-8,0.0032739868282610452,-5.617282175496241e-5,8.821681580619211e-8,0.0032742660365082388,-5.6239927611709573e-5,8.831905491514963e-8,0.003274605453936708,-5.627300819139812e-5,8.836386764965425e-8,0.0032749903608651097,-5.624637481283029e-5,8.830953041101465e-8,0.0032753938061936853,-5.614154823740327e-5,8.812653176627841e-8,0.0032757789936782864,-5.595449360495289e-5,8.78092919463083e-8,0.003276106647287594,-5.5701960526054305e-5,8.738628367074491e-8,0.0032763471421135533,-5.5422576587764e-5,8.692152997987455e-8,0.003276493258995722,-5.516877259292599e-5,8.650115186701256e-8,0.0032765664014518425,-5.499014654352684e-5,8.6206007430559e-8,0.003276610999942624,-5.491529491512299e-5,8.608196484440229e-8,0.00327667876464851,-5.494164014254628e-5,8.612345199946136e-8,0.0032768108494707626,-5.5038149965003114e-5,8.627829358674474e-8,0.0032770262708863127,-5.5157998227194705e-5,8.646888984364038e-8,0.0032773198064892668,-5.525387498988542e-5,8.661760852501955e-8,0.003277667339223204,-5.528988528837087e-5,8.666631731922832e-8,0.0032780346135977243,-5.5247658906088445e-5,8.658614562003795e-8,0.0032783860663120725,-5.512713483912658e-5,8.637835326428021e-8,0.0032786918994025917,-5.494363190933129e-5,8.606912261480339e-8,0.0032789327276445193,-5.472280951801439e-5,8.570104945011115e-8,0.003279101674465376,-5.449476059083265e-5,8.532342409842275e-8,0.0032792040453030104,-5.4288301754132294e-5,8.498301212375031e-8,0.0032792550494914192,-5.4126402494692005e-5,8.471678473867611e-8,0.00327927635003745,-5.402331015253779e-5,8.454741469132955e-8,0.003279292261048445,-5.398344931011103e-5,8.448159405887646e-8,0.0032793262697919023,-5.4001841681931624e-5,8.451073771217038e-8,0.0032793983038223334,-5.406554644950239e-5,8.461328637466328e-8,0.003279522775013503,-5.4155543035676e-5,8.475773055077884e-8,0.0032797071337421773,-5.4248736184423704e-5,8.490590178054932e-8,0.0032799506498463736,-5.432014534373688e-5,8.501666483516674e-8,0.003280243299674806,-5.434560660615751e-5,8.505051210231342e-8,0.003280565004985942,-5.430549748269372e-5,8.497579494488648e-8,0.003280886168989561,-5.4189871664097075e-5,8.47771184438119e-8,0.003281171139090372,-5.4004474659509736e-5,8.446499011144445e-8,0.003281386101154559,-5.377533480404946e-5,8.408301336304262e-8,0.0032815110470657827,-5.354778435894943e-5,8.370597725390225e-8,0.003281551525320081,-5.3376005048922325e-5,8.342256462979238e-8,0.0032815423544261006,-5.3303997698127796e-5,8.330417977081286e-8,0.0032815375199139597,-5.334662167257096e-5,8.337402779899631e-8,0.003281589425999078,-5.3482477388724635e-5,8.359571772677401e-8,0.003281729077837722,-5.366347603158219e-5,8.388931201996357e-8,0.0032819577992785165,-5.383448660629819e-5,8.416390530143764e-8,0.003282252028816867,-5.3951461208844274e-5,8.434755805679241e-8,0.003282575064733863,-5.399087527054447e-5,8.440270284958065e-8,0.0032828888308288045,-5.395041499415586e-5,8.432692167156779e-8,0.0032831620823933123,-5.384442525035143e-5,8.414501783308623e-8,0.003283374577592845,-5.369758720472906e-5,8.389827797025655e-8,0.0032835182149421297,-5.3538900495709054e-5,8.363445972132653e-8,0.003283596317507677,-5.3396677990892325e-5,8.339967143688218e-8,0.0032836217594359217,-5.3294597136367996e-5,8.323212142857587e-8,0.0032836142689651616,-5.3248868881598726e-5,8.31577096068053e-8,0.0032835972456282487,-5.326663219322064e-5,8.318754756177193e-8,0.003283594445314077,-5.33455619881586e-5,8.331735797629278e-8,0.003283626858166137,-5.34746355750414e-5,8.35286872417797e-8,0.0032837101355881193,-5.363590835227975e-5,8.379175121758466e-8,0.0032838527983820075,-5.3806929427041975e-5,8.406937560267436e-8,0.003284055181100754,-5.396343946274494e-5,8.432148778286718e-8,0.0032843089773761463,-5.40822511951771e-5,8.450998775388706e-8,0.003284597358913076,-5.414438100313206e-5,8.460404446842303e-8,0.003284895834787221,-5.413857912979374e-5,8.458595257932233e-8,0.003285174445296768,-5.406532947278778e-5,8.445757818292492e-8,0.0032854023338345904,-5.3940697089698616e-5,8.424636958756322e-8,0.0032855554831677934,-5.379806390910282e-5,8.400782714837921e-8,0.003285626815766494,-5.3684562539693467e-5,8.38193737194727e-8,0.0032856347701112503,-5.3649414340871245e-5,8.376117760633833e-8,0.0032856235616832005,-5.3725485877918647e-5,8.38860837426238e-8,0.003285650142636974,-5.391249164401037e-5,8.419236027689752e-8,0.0032857616382241683,-5.4173556173630084e-5,8.461836300416228e-8,0.003285976011289329,-5.444965808100916e-5,8.50665090145353e-8,0.003286277545198635,-5.468347961861177e-5,8.544264341871019e-8,0.0032866275363075573,-5.483838580460321e-5,8.568728752895917e-8,0.0032869809330381304,-5.490461627338049e-5,8.578565026164803e-8,0.0032872996339806037,-5.489474335285152e-5,8.575977711296552e-8,0.003287559053510933,-5.48347345844862e-5,8.565341922089876e-8,0.0032877491677817746,-5.475543920672599e-5,8.551775502054806e-8,0.0032878725457978937,-5.4686451467669074e-5,8.540127833973602e-8,0.0032879413934742783,-5.465235422268597e-5,8.534381381044643e-8,0.003287974597188788,-5.4670536130827427e-5,8.53731992403231e-8,0.003287994886136215,-5.474993658443841e-5,8.550343585455102e-8,0.003288026004617243,-5.489052942074253e-5,8.573393033814724e-8,0.0032880898877680324,-5.508355309891816e-5,8.604985500404462e-8,0.003288203921857211,-5.5312587539400495e-5,8.642385409484243e-8,0.0032883785505384453,-5.5555608027442216E-05,8.681938148259401e-8,0.0032886156357365445,-5.578790705412445e-5,8.719554080619211e-8,0.0032889078436774757,-5.5985521987479445e-5,8.751283667062376e-8,0.003289239125545009,-5.612881998939157e-5,8.77392146012537e-8,0.003289586318797038,-5.620594849831879e-5,8.78558281449679e-8,0.0032899218910641607,-5.621585137160659e-5,8.786195042061433e-8,0.0032902179191576634,-5.617054021271309e-5,8.77784760736655e-8,0.0032904515278464005,-5.609599525829377e-5,8.764903319639631e-8,0.003290611690989794,-5.603034994237022e-5,8.753663675600585e-8,0.0032907060886177963,-5.601757230920074e-5,8.751312401969255e-8,0.0032907648315062244,-5.60957001758165e-5,8.763993271030684e-8,0.00329083651219213,-5.628175714456582e-5,8.794367269940098e-8,0.003290973902945432,-5.656023599277606e-5,8.839762192953688e-8,0.003291213321631433,-5.6884077700507716e-5,8.892363541663668e-8,0.003291558763057707,-5.7191191598862794e-5,8.941943124269481e-8,0.0032919809643103797,-5.742839856654776e-5,8.979798297636507e-8,0.0032924313677109907,-5.756902600419823e-5,9.001640079964623e-8,0.0032928611324823196,-5.7616237434723784e-5,9.008120657162066e-8,0.003293234884122227,-5.759476981903807e-5,9.003437623650073e-8,0.003293535602904595,-5.753893290328132e-5,8.993321103832823e-8,0.003293762927268325,-5.7482792094576774e-5,8.983397854989548e-8,0.003293928650397064,-5.745439610101603e-5,8.978246898705095e-8,0.003294052074754002,-5.7473344437337244e-5,8.981023130920463e-8,0.003294156313027807,-5.755021904012821e-5,8.993390698836747e-8,0.0032942654733313977,-5.768674160814335e-5,9.01556607176256e-8,0.0032944022662521263,-5.787621616364838e-5,9.046394738638393e-8,0.003294585697181951,-5.810428412374258e-5,9.083470767938509e-8,0.003294828730883638,-5.835025192829971e-5,9.123350329312376e-8,0.0032951361110117538,-5.858935210068161e-5,9.161924961334033e-8,0.003295502862145243,-5.879608733804884e-5,9.194981099819587e-8,0.0032959140922813155,-5.894836427269165e-5,9.218894166181916e-8,0.003296346501630117,-5.903178845858687e-5,9.2313465377073e-8,0.0032967716942378903,-5.904330752969372e-5,9.231927451156279e-8,0.003297161013652729,-5.8993325195830865e-5,9.222465017716898e-8,0.0032974912528637187,-5.8905595820280855e-5,9.206977518622295e-8,0.0032977504065195102,-5.881449638135142e-5,9.191186754025751e-8,0.003297942473857903,-5.875940209359208e-5,9.181563871498607e-8,0.0032980898714052753,-5.877616173854993e-5,9.183921908280787e-8,0.0032982314957932714,-5.88866346272826e-5,9.201718962789459e-8,0.0032984146833885644,-5.908904162486795e-5,9.23451566292984e-8,0.0032986812779857745,-5.935379884542151e-5,9.277334751463147e-8,0.003299051997951586,-5.962945134656554e-5,9.321663709787946e-8,0.003299516827886728,-5.985901363351853e-5,9.358146928311346e-8,0.0033000378122319263,-5.999998453310655e-5,9.379868554416737e-8,0.003300563468977945,-6.003775679601342e-5,9.384541959529023e-8,0.003301046759699778,-5.9986342425414024e-5,9.374604054768167e-8,0.0033014576765286454,-5.987863396959832e-5,9.355579500500295e-8,0.003301786809054379,-5.975339670750789e-5,9.33390980278829e-8,0.0033020419823445663,-5.964508164161518e-5,9.315264867329e-8,0.0033022421362587082,-5.9578548895871055e-5,9.303685979764736e-8,0.003302411561432909,-5.9567748630520254e-5,9.301394192772079e-8,0.0033025757102160976,-5.961647141519134e-5,9.308938092423752e-8,0.003302758454813665,-5.971971311326604e-5,9.32543085753427e-8,0.003302980149123383,-5.986499809573707e-5,9.348767984635991e-8,0.0033032558966772426,-6.003362496588928e-5,9.375826851834662e-8,0.003303593705146403,-6.0202192353766145e-5,9.402715772445558e-8,0.0033039926166897105,-6.034495084095433e-5,9.425167222522078e-8,0.003304441386900897,-6.043737478577002e-5,9.439138689843304e-8,0.003304918618617791,-6.046082993353868e-5,9.441594479608006e-8,0.0033053952081656575,-6.040751190609572e-5,9.431324511412548e-8,0.0033058394190006372,-6.028418972979809e-5,9.409552551950787e-8,0.0033062239072710452,-6.011307792870043e-5,9.380056022170947e-8,0.0033065329819612454,-5.99287475949815e-5,9.348622559924204e-8,0.003306767914704313,-5.977122717532698e-5,9.321879190076651e-8,0.003306948486177933,-5.9676703637333575e-5,9.305741226162379e-8,0.0033071098761496675,-5.966803032891732e-5,9.303855751819586e-8,0.003307295078633383,-5.974750722150152e-5,9.316446634613662e-8,0.003307544114132092,-5.9894223093106617E-05,9.339925812123948e-8,0.0033078824817017226,-6.006764076265878e-5,9.367527554290179e-8,0.003308312428674662,-6.021771715946743e-5,9.390997219756039e-8,0.003308810868846452,-6.02993136284251e-5,9.402960860305769e-8,0.003309335890088662,-6.028585030600706e-5,9.39915224159716e-8,0.003309839846317023,-6.017646168426142e-5,9.379561381316522e-8,0.003310283495942255,-5.999380790271972e-5,9.348042402784567e-8,0.0033106453888089448,-5.977450811021991e-5,9.310709708273535e-8,0.0033109239015205183,-5.955734946844783e-5,9.273979011758474e-8,0.003311133299984977,-5.937407692846487e-5,9.243051520461885e-8,0.0033112972340637236,-5.924481776115903e-5,9.221178385233012e-8,0.0033114426199441147,-5.917750316763905e-5,9.209590179549796e-8,0.0033115952609545363,-5.9169497804775444e-5,9.207784107991695e-8,0.003311777204723194,-5.920987375766593e-5,9.213904652853273e-8,0.0033120052080999,-5.92814938356559e-5,9.225082851606375e-8,0.003312289594904694,-5.936274846059623e-5,9.237717028262174e-8,0.003312633024578902,-5.942929679557276e-5,9.247760893901174e-8,0.003313029137070735,-5.945642637260442e-5,9.251122688928723e-8,0.0033134615879803833,-5.942257807852542e-5,9.244260873645003e-8,0.0033139044987459776,-5.931413137224047e-5,9.22498336783901e-8,0.0033143255654085853,-5.913063940039792e-5,9.193309185903323e-8,0.003314692523404364,-5.888852657791199e-5,9.152061902109267e-8,0.003314982071759978,-5.862063074863608e-5,9.106765658072329e-8,0.0033151883441194956,-5.836990960235362e-5,9.064573525743296e-8,0.003315327061036844,-5.817820907612507e-5,9.032387007253822e-8,0.003315432756404787,-5.807381239007963e-5,9.014792415786519e-8,0.003315549502730872,-5.80625870862475e-5,9.012617527068651e-8,0.0033157184572218204,-5.8126053541180765e-5,9.022654455023874e-8,0.003315966551858763,-5.8226689676969886e-5,9.038585941639497e-8,0.0033162996332138915,-5.831825523870404e-5,9.052728727571216e-8,0.0033167015288640424,-5.835787971070538e-5,9.058041563143791e-8,0.0033171388754599613,-5.8316694902620264e-5,9.049864230177064e-8,0.003317570199537387,-5.818631498100734e-5,9.026951683504713e-8,0.0033179566224040904,-5.7979533462259516e-5,8.99154851350754e-8,0.0033182710352989515,-5.772533753434543e-5,8.94853309482593e-8,0.003318503156852944,-5.746022504077495e-5,8.903967082003617e-8,0.003318659520612165,-5.721893166409305e-5,8.863565691424088e-8,0.0033187593907932924,-5.7027409664830245e-5,8.831554830627552e-8,0.0033188288152567313,-5.6899447070337116e-5,8.810136402150192e-8,0.0033188949683195744,-5.683663868685322e-5,8.799503967854189e-8,0.0033189820031886176,-5.683044444173091e-5,8.79819251290983e-8,0.0033191086079180677,-5.686498657172212e-5,8.80353851458633e-8,0.0033192868090701146,-5.6919687627007744e-5,8.812108202417043e-8,0.0033195213608058194,-5.6971468212093134e-5,8.820056393045532e-8,0.003319809205334997,-5.6996756676009524e-5,8.823463939940167e-8,0.0033201388682853913,-5.6973850769248384e-5,8.818741927408212e-8,0.0033204901645404743,-5.688617916715095e-5,8.803185327819643e-8,0.0033208351653437364,-5.672667481568836e-5,8.775700668157399e-8,0.0033211417606726764,-5.650258196722333e-5,8.737589343481958e-8,0.0033213807589085697,-5.623860290952227e-5,8.693042466255639e-8,0.003321535704580842,-5.5975194089382036e-5,8.64882803546673e-8,0.003321611779853912,-5.575964063734652e-5,8.612788421461543e-8,0.0033216383488875716,-5.563121550563371e-5,8.591372038897917e-8,0.00332166160133251,-5.560648771923718e-5,8.587208299016034e-8,0.003321729332346463,-5.567246407025703e-5,8.597999999454416e-8,0.0033218749696411454,-5.5791288194139026e-5,8.617344710132884e-8,0.003322108078793622,-5.591357362818337e-5,8.636987047930183e-8,0.003322414074917141,-5.599359775464645e-5,8.649361999558831e-8,0.0033227610657908736,-5.600062818328033e-5,8.649468343439781e-8,0.0033231098129842453,-5.592409172339057e-5,8.635693899550423e-8,0.003323423401229845,-5.577304858807897e-5,8.60968278743868e-8,0.0033236746106560327,-5.5571625019046895e-5,8.57553706414179e-8,0.0033238501378285963,-5.535223551652658e-5,8.538670353148495e-8,0.003323951512978097,-5.5148243821503265e-5,8.504591708672522e-8,0.0033239930515267515,-5.4987516475655016e-5,8.477855814651931e-8,0.003323997693098464,-5.4888022929405465e-5,8.461360179444422e-8,0.0033239919654675055,-5.485601986581888e-5,8.456067453943338e-8,0.0033240012834951657,-5.4886614374086276e-5,8.461111130656435e-8,0.00332404640453801,-5.496599005265156e-5,8.474164448132102e-8,0.003324141328817078,-5.507438956499113e-5,8.491926542726227e-8,0.003324292421254159,-5.5189074106772154e-5,8.510604823670503e-8,0.0033244982624229583,-5.528690636714247e-5,8.526342573891019e-8,0.0033247498139609742,-5.534665974060568e-5,8.5356116539381e-8,0.003325030738318475,-5.535139742517621e-5,8.535622814349039e-8,0.003325318078773487,-5.529132808874682e-5,8.524810407518335e-8,0.0033255840434287193,-5.516732559483926e-5,8.503412127897562e-8,0.003325800025884042,-5.4994500283684165e-5,8.474038755337137e-8,0.003325943636647162,-5.4803921202816106e-5,8.441925947919739e-8,0.003326007954119694,-5.463949661780294e-5,8.414386557641033e-8,0.0033260093929748016,-5.454751850488496e-5,8.39906316797749e-8,0.0033259881913321188,-5.4560143825206843e-5,8.401195873056964e-8,0.0033259972865628765,-5.4680122236649234e-5,8.421112518435034e-8,0.003326082679984568,-5.4876669269890736e-5,8.453576539427439e-8,0.0033262656698723574,-5.509660108184346e-5,8.489670021080734e-8,0.0033265367421952,-5.528454025680654e-5,8.520177547374201e-8,0.0033268625692368203,-5.540089651290604e-5,8.53858406600953e-8,0.0033271997836301316,-5.5430263445104554e-5,8.542454745717457e-8,0.00332750801243725,-5.538020410605459e-5,8.533193941439912e-8,0.0033277582273325535,-5.527451512296222e-5,8.514878834424156e-8,0.0033279360985943923,-5.514504454421498e-5,8.492865234127454e-8,0.0033280417206101223,-5.502443713341801e-5,8.47257264967664e-8,0.0033280872119350394,-5.494062573953781e-5,8.458583816329359e-8,0.0033280931856418602,-5.4913121909954754e-5,8.454056432249686e-8,0.003328084687829209,-5.49510529651956e-5,8.460424445406648e-8,0.003328087119786794,-5.505287514330795e-5,8.477367296994299e-8,0.003328122619004344,-5.520754438276987e-5,8.503008040542494e-8,0.0033282072794208633,-5.539681605654844e-5,8.534289014342119e-8,0.0033283494784650124,-5.559823205385741e-5,8.567459021016955e-8,0.0033285493241682613,-5.5788247308437714e-5,8.5985886311372e-8,0.0033287989546007955,-5.594511202878772e-5,8.624053969095568e-8,0.0033290834152926,-5.605145404558202e-5,8.640978601385084e-8,0.0033293820025522038,-5.609665354800625e-5,8.647641681844645e-8,0.00332967012765513,-5.607914249037254e-5,8.64386360154981e-8,0.003329922108265471,-5.600868372770514e-5,8.63137014691309e-8,0.003330115618151409,-5.590807269377462e-5,8.614043768918587e-8,0.0033302381328333365,-5.58126677029861e-5,8.597808953775239e-8,0.0033302943335076583,-5.5765475825965935e-5,8.589791861426393e-8,0.0033303112431023363,-5.580611329656748e-5,8.596488539474054e-8,0.003330335893358347,-5.595512706192685e-5,8.621187561535514e-8,0.0033304217950196257,-5.620076748901601e-5,8.661809726569148e-8,0.0033306077541668403,-5.649824615334275e-5,8.710815973363818e-8,0.003330900673735715,-5.678551821777345e-5,8.757850948338549e-8,0.0033312733708816735,-5.7007580014031255e-5,8.793794593475561e-8,0.003331677827847687,-5.713506396332166e-5,8.81385544183494e-8,0.0033320641462310304,-5.7168762976044525e-5,8.818303689777447e-8,0.003332394888741356,-5.713232454494835e-5,8.81121521924967e-8,0.003332650948899174,-5.706056072566515e-5,8.79848172366316e-8,0.0033328307387244707,-5.69892054818512e-5,8.786079588531413e-8,0.003332946103134148,-5.6948270940260595e-5,8.7789662082767e-8,0.003333017524013881,-5.695869565914077e-5,8.780546633003202e-8,0.003333069785980845,-5.7031151550971855e-5,8.79250644837299e-8,0.003333128293176569,-5.7166122827538784e-5,8.814848616597651e-8,0.003333215942814037,-5.735486447701515e-5,8.846062555209589e-8,0.003333350526081416,-5.758107712399529e-5,8.883400189972032e-8,0.003333542711568079,-5.782323256543382e-5,8.923255045240708e-8,0.0033337948024626724,-5.805748921759443e-5,8.961641831353482e-8,0.0033341004955474854,-5.826092281925177e-5,8.994735848331943e-8,0.0033344456574180216,-5.8414663420069585e-5,9.019404254409442e-8,0.0033348099763535065,-5.850667539814434e-5,9.033680470762473e-8,0.0033351693972139954,-5.8534013007029704e-5,9.037145788055351e-8,0.0033354992652454255,-5.850435337312846e-5,9.031176994724097e-8,0.003335778150817505,-5.8436628216984924e-5,9.019026948162117e-8,0.0033359924676545083,-5.836033415719681e-5,9.005674088553579e-8,0.003336141696475799,-5.831247259530645e-5,8.99728131408324e-8,0.003336242937122228,-5.833081796090152e-5,9.000064726389226e-8,0.003336332072852576,-5.844314497737879e-5,9.018519988192054e-8,0.003336457993721301,-5.8654611621949015e-5,9.053364701309959e-8,0.003336668034416213,-5.8939341334053395e-5,9.100181248328803e-8,0.0033369886308538366,-5.9243988034202145e-5,9.15003563787348e-8,0.0033374117211466396,-5.950577741976175e-5,9.192485569877443e-8,0.0033378966406314506,-5.9676814334938345e-5,9.219623025373824e-8,0.003338387060585492,-5.974061238822445e-5,9.228818050131115e-8,0.003338832161640395,-5.9712769824558396e-5,9.222809662066525e-8,0.003339200660884803,-5.9629238348668325e-5,9.207713490030904e-8,0.0033394839946629365,-5.9531508527586526e-5,9.19051435138701e-8,0.00333969194933606,-5.9455615021928336e-5,9.177216062406416e-8,0.0033398456958361393,-5.9426735296063406e-5,9.171952556625893e-8,0.0033399714625476887,-5.94580076063395e-5,9.176821138029921e-8,0.0033400959454044452,-5.9551503177061825e-5,9.19207583444299e-8,0.003340243216604815,-5.969991931487511e-5,9.21642828744451e-8,0.003340432528612182,-5.988845372977386e-5,9.247363390315894e-8,0.00334067661964073,-6.009682747560091e-5,9.281470236403697e-8,0.003340980391006287,-6.0301603901974886e-5,9.314821825194654e-8,0.0033413400860247433,-6.047899922745841e-5,9.34344253905957e-8,0.0033417433406987395,-6.0608161718892285e-5,9.363861218700703e-8,0.0033421704338331562,-6.0674530868574566e-5,9.373681434940468e-8,0.003342596793867571,-6.067274472862805e-5,9.372073186756808e-8,0.003342996619504433,-6.060857747387037e-5,9.360092417739725e-8,0.0033433472973181913,-6.049938316515723e-5,9.340736779360886e-8,0.003343634076313921,-6.037265637678459e-5,9.318674843140178e-8,0.003343854352958671,-6.026253039672385e-5,9.29962869527095e-8,0.0033440207974379525,-6.02040503597778e-5,9.289398103642671e-8,0.00334416209570793,-6.0225227664861864e-5,9.292540486542561e-8,0.0033443195738953684,-6.033783862182839e-5,9.310869759814082e-8,0.0033445382535737425,-6.052967926745262e-5,9.342213643036966e-8,0.0033448528768625176,-6.076271261213488e-5,9.380146725962548e-8,0.0033452733341006566,-6.098129519580642e-5,9.415379750598335e-8,0.0033457773304763423,-6.11302103754188e-5,9.43875995339562e-8,0.003346316441695281,-6.117498982465232e-5,9.444642575943193e-8,0.0033468338086486238,-6.111354333006799e-5,9.432810795018451e-8,0.0033472838692474196,-6.097324927755117e-5,9.4079645301939e-8,0.0033476441985163447,-6.0797240704200516e-5,9.377398884436344e-8,0.0033479163084475117,-6.062888070521747e-5,9.348385258171712e-8,0.003348119017326552,-6.050124738963157e-5,9.326410433273226e-8,0.0033482798563691583,-6.043317112036643e-5,9.314535120928058e-8,0.0033484280459571253,-6.0429873261064216e-5,9.313533471622201e-8,0.0033485900303240564,-6.0485597297215256e-5,9.322360188274091e-8,0.0033487870427821647,-6.058650061285441e-5,9.338645264051759e-8,0.003349033779148276,-6.071317745669125e-5,9.359112405668456e-8,0.003349337512154647,-6.084287930407258e-5,9.379941019517652e-8,0.0033496973868342426,-6.0951778738148076e-5,9.39713912066027e-8,0.0033501040189214903,-6.1017654657638296e-5,9.406994902831682e-8,0.003350539852327468,-6.102313701204754e-5,9.406628005534092e-8,0.0033509808424563464,-6.0959184102096446e-5,9.394579478956938e-8,0.0033513997985662727,-6.0828035243102085e-5,9.371305998195274e-8,0.003351771242630648,-6.064464806465786e-5,9.339407682046672e-8,0.0033520770502697586,-6.043567280060645e-5,9.303431185934628e-8,0.0033523115992083793,-6.023549059632611e-5,9.269175686275925e-8,0.0033524849538567095,-6.0079656147178764e-5,9.242570667708549e-8,0.003352622868607595,-5.999683644913714e-5,9.228321247007672e-8,0.0033527629108964156,-6.0000858451751614e-5,9.228598308330152e-8,0.0033529466888537886,-6.0084899028015664e-5,9.242109352946563e-8,0.003353209163212818,-6.0220101719581925e-5,9.263915942649568e-8,0.003353567452423346,-6.036056292024498e-5,9.286301996208644e-8,0.003354013074553909,-6.045506176241125e-5,9.300742375322236e-8,0.003354511938151932,-6.0462793179074204e-5,9.300515855826013e-8,0.003355013937094379,-6.036701837740332e-5,9.282957547814603e-8,0.0033554690078815767,-6.018006277425595e-5,9.250263119120252e-8,0.0033558424476254254,-5.9937221757790955e-5,9.208440293612802e-8,0.0033561228412348943,-5.9683282240027307e-5,9.165030735952862e-8,0.003356320744440452,-5.9458664926667036e-5,9.126781835699132e-8,0.003356461215846782,-5.929059997108527e-5,9.09818074709203e-8,0.0033565749791113304,-5.919060979973586e-5,9.081060603989335e-8,0.0033566915189816907,-5.915640839670276e-5,9.07494897969949e-8,0.0033568350305881473,-5.91755770416691e-5,9.077702401431161e-8,0.003357022613830941,-5.9229226963443656e-5,9.086121990946202e-8,0.003357263701159578,-5.929496452229679e-5,9.096440629587108e-8,0.003357559911226247,-5.934921839576949e-5,9.104702421945221e-8,0.0033579049385909485,-5.9369383956175455e-5,9.1071192375381e-8,0.0033582845835001054,-5.9336313704812116e-5,9.100494733703145e-8,0.00335867744667257,-5.923739982099832e-5,9.082751861971475e-8,0.003359057001605932,-5.906997363720898e-5,9.053508695821385e-8,0.003359395616398978,-5.884413276926084e-5,9.014546329210125e-8,0.003359670484111321,-5.858354614172143e-5,8.96992412648217e-8,0.003359870306372325,-5.83227294745991e-5,8.925494292974744e-8,0.003360000476205311,-5.8100244081356475e-5,8.887733886137964e-8,0.0033600842939887445,-5.794905158876692e-5,8.862112733910623e-8,0.0033601588394004405,-5.7886876867381644e-5,8.851484939281549e-8,0.0033602660797591934,-5.790993390908707e-5,8.85506789176601e-8,0.003360441674025316,-5.799244505104898e-5,8.868407215376571e-8,0.003360704848971143,-5.809247460735285e-5,8.884397868653839e-8,0.003361052408555661,-5.8162610399993446e-5,8.895098477449679e-8,0.0033614587985430038,-5.816263041067814e-5,8.893850581578914e-8,0.003361882595100984,-5.807055435201572e-5,8.877103313526498e-8,0.0033622778382321966,-5.788851232418176e-5,8.845357733079992e-8,0.003362606646946412,-5.764123357960088e-5,8.802875740347297e-8,0.003362848722009863,-5.736772166360094e-5,8.756257923304475e-8,0.003363004624307182,-5.710951428610873e-5,8.712465566458204e-8,0.0033630925651310676,-5.690004657624532e-5,8.677046271557997e-8,0.0033631411170110623,-5.6758424875231495e-5,8.653114040510852e-8,0.003363181256001812,-5.668835779717318e-5,8.641199419472419e-8,0.0033632402740149748,-5.6680785627308535e-5,8.639713164955336e-8,0.0033633383786634027,-5.67180183840242e-5,8.64564805526587e-8,0.0033634874868962595,-5.6777755378881375e-5,8.65524655651299e-8,0.0033636912810481303,-5.683628445550697e-5,8.66452477529796e-8,0.003363945718484768,-5.687086249094485e-5,8.669663650025481e-8,0.0033642395389277832,-5.686171426360383e-5,8.667346696354637e-8,0.0033645548029027344,-5.6794222114151424e-5,8.655138743646585e-8,0.0033648679728196743,-5.6661634264931834e-5,8.631952160889124e-8,0.003365152316192434,-5.646808727765676e-5,8.598556119531746e-8,0.0033653823440695273,-5.6231009443925796e-5,8.557966538825618e-8,0.003365540348867742,-5.598115619209057e-5,8.515425825459867e-8,0.0033656236291926926,-5.5758262063050816e-5,8.477643543829795e-8,0.003365649237974656,-5.5601580627967396e-5,8.451187493962213e-8,0.003365652653538818,-5.5537505781072915e-5,8.440402629396734e-8,0.0033656789459104476,-5.5569291146105796e-5,8.445703766415184e-8,0.003365769023611574,-5.5674099565599833e-5,8.463116901817921e-8,0.003365946605285959,-5.580935658495085e-5,8.485389455646114e-8,0.003366211262409989,-5.592573091926771e-5,8.504204720695987e-8,0.0033665395943343838,-5.598132333980049e-5,8.512577176624952e-8,0.003366892961472996,-5.59521898282755e-5,8.506604596898847e-8,0.003367228357217615,-5.583677491599288e-5,8.486175343471328e-8,0.0033675090217883843,-5.565418314517531e-5,8.454632832083293e-8,0.0033677122812087027,-5.543770395775392e-5,8.417651191158752e-8,0.0033678331653782018,-5.522579913828783e-5,8.381704806824443e-8,0.0033678834944036373,-5.50530389308712e-5,8.352552276592036e-8,0.0033678872697589877,-5.494321345418341e-5,8.334103225252462e-8,0.003367874119813055,-5.490600237086945e-5,8.327889130742978e-8,0.0033678728417263332,-5.493731937946403e-5,8.333146207894089e-8,0.003367906582298691,-5.50223028120182e-5,8.347329601819736e-8,0.003367990240931756,-5.5139459330814e-5,8.36680693328067e-8,0.003368129820921837,-5.5264706650024884e-5,8.387526013174893e-8,0.0033683230141878383,-5.53746278372721e-5,8.405550425907457e-8,0.0033685602874602904,-5.544884667401181e-5,8.417455801548991e-8,0.0033688260245799536,-5.5471875403664845e-5,8.420648096017351e-8,0.0033690996964164,-5.54349217648513e-5,8.41368044105891e-8,0.0033693574390171246,-5.533796983745346e-5,8.396611154911362e-8,0.003369574738556079,-5.51920190230235e-5,8.371373979967595e-8,0.0033697309471166486,-5.502062543221554e-5,8.342014676700197e-8,0.0033698157191195807,-5.4858963662490004e-5,8.314502135403152e-8,0.00336983588693757,-5.4748211466438515e-5,8.295758836096101e-8,0.003369819180796456,-5.472435396786891e-5,8.291770942984493e-8,0.0033698103447281362,-5.4804144817696605e-5,8.305241791698605e-8,0.0033698580327925177,-5.497509215486744e-5,8.333937840761425e-8,0.00336999704671909,-5.519660736781785e-5,8.370918090270701e-8,0.003370235023755808,-5.541355414664154e-5,8.406846696487325e-8,0.0033705505910493,-5.557548077177791e-5,8.43325066766928e-8,0.0033709027002781183,-5.565191209448797e-5,8.445094442884492e-8,0.0033712449573918956,-5.563811944371171e-5,8.441726573141519e-8,0.0033715383281370122,-5.5551947479558465e-5,8.426301455023264e-8,0.0033717588003342688,-5.5425603682988634e-5,8.404350744757277e-8,0.0033718997534319347,-5.529628730757146e-5,8.382176259040501e-8,0.0033719703516509663,-5.519808521396885e-5,8.365483265879684e-8,0.0033719915125817105,-5.515616301581334e-5,8.358424368986457e-8,0.003371990670460589,-5.5183508520810655e-5,8.363084262341449e-8,0.003371996312094328,-5.5280222125438397e-5,8.37938999603007e-8,0.0033720332014755966,-5.543506986883743e-5,8.405389123547616e-8,0.0033721189855487107,-5.56286157858378e-5,8.437778720791833e-8,0.003372262458821144,-5.5837078683713314e-5,8.472545698884107e-8,0.0033724633940253805,-5.603614789623234e-5,8.505597653427594e-8,0.003372713546608454,-5.620417709122976e-5,8.533294234846123e-8,0.0033729982668022603,-5.632452546423462e-5,8.552844070193068e-8,0.00337329829570848,-5.6387235045065904e-5,8.562597120345452e-8,0.003373591662554191,-5.639037939243083e-5,8.56228158420924e-8,0.0033738558827816345,-5.634128823507716e-5,8.553209949381927e-8,0.0033740709065428706,-5.625757728164715e-5,8.538435984518772e-8,0.0033742233614416587,-5.6167318041165296e-5,8.522753464272809e-8,0.0033743120850930324,-5.6106839883563096e-5,8.512295286558207e-8,0.0033743535182657845,-5.6114284681771475e-5,8.51343302306435e-8,0.003374383584560917,-5.621816091412462e-5,8.530860378052354e-8,0.003374451653711905,-5.642363033026548e-5,8.565316246357324e-8,0.003374604874548048,-5.670392651341919e-5,8.612176775673318e-8,0.003374868363272367,-5.700515151316815e-5,8.662290807184912e-8,0.0033752327666612806,-5.726543902108981e-5,8.705223569982031e-8,0.003375657734454065,-5.743861941957818e-5,8.733251492462779e-8,0.00337608883276525,-5.7508964679654286e-5,8.743842547911098e-8,0.0033764770314720334,-5.749109053497066e-5,8.739613430904317e-8,0.003376791288154108,-5.741928432963936e-5,8.726484516431357e-8,0.003377021873463669,-5.733428391425587e-5,8.711405749206888e-8,0.003377177244553692,-5.727289468373037e-5,8.700584615729924e-8,0.0033772782065038614,-5.7261975296652276e-5,8.698482352101486e-8,0.003377351897211726,-5.731608876134401e-5,8.707450164078988e-8,0.0033774266600864046,-5.743750053577925e-5,8.727765185706965e-8,0.0033775279397840904,-5.761758344607225e-5,8.757892428997106e-8,0.0033776751676794963,-5.783921764291742e-5,8.794897670651642e-8,0.0033778797227997696,-5.807988352583364e-5,8.834963725304223e-8,0.0033781440270615184,-5.831509017006301e-5,8.873957895692964e-8,0.0033784617768650477,-5.8521803894550365e-5,8.908001953560924e-8,0.003378819238634322,-5.868149381761238e-5,8.933984781642511e-8,0.003379197323670683,-5.8782439093002966e-5,8.949957584080041e-8,0.003379574066231394,-5.882122050843463e-5,8.955393397490966e-8,0.003379927308581292,-5.880351542948081e-5,8.951323372093641e-8,0.0033802375736910525,-5.8744255904977356e-5,8.940353066295135e-8,0.003380491220639322,-5.86670851430349e-5,8.92654614473728e-8,0.003380684061250688,-5.8602724717853605e-5,8.915117457299559e-8,0.003380825238790617,-5.8585283278155506e-5,8.911787039413452e-8,0.0033809400725077258,-5.8645366370736766e-5,8.921617853680288e-8,0.0033810692089788217,-5.8799874204040243e-5,8.947323513780382e-8,0.003381260821250198,-5.904106722336901e-5,8.987469296042821e-8,0.0033815547925915685,-5.933123263112307e-5,9.0356110182332e-8,0.003381964109575867,-5.961028832185029e-5,9.081592148861166e-8,0.0033824647851254143,-5.981713959083937e-5,9.1151422106769e-8,0.003383003169851391,-5.9914358833980524e-5,9.130033548932249e-8,0.0033835175357943767,-5.9901254032734106e-5,9.126278647579509e-8,0.0033839605590798446,-5.980890433849116e-5,9.10926902260356e-8,0.00338431099616989,-5.968366488858203e-5,9.086948355865654e-8,0.0033845727837585357,-5.9570442762593056e-5,9.066948346775116e-8,0.0033847670858004075,-5.950243521857609e-5,9.05484296124944e-8,0.0033849232362922243,-5.9497727807565615e-5,9.053594275132374e-8,0.0033850716583332255,-5.956024397003957e-5,9.063751388399143e-8,0.0033852393421935963,-5.9682490187505253e-5,9.083949487511646e-8,0.0033854472176725985,-5.984859127500225e-5,9.111441080009529e-8,0.0033857086133339863,-6.003720459463659e-5,9.142588647628522e-8,0.0033860284271986017,-6.022439650227471e-5,9.173340583043047e-8,0.003386402955846923,-6.038656005091193e-5,9.199713865518988e-8,0.003386820462731965,-6.0503374088305864e-5,9.218289744117541e-8,0.003387262658810295,-6.05606230682693e-5,9.226693315388558e-8,0.0033877071395750856,-6.0552452997181255e-5,9.223981379163578e-8,0.0033881305330445235,-6.048266726105932e-5,9.210864890465263e-8,0.0033885120041810286,-6.036487174837796e-5,9.189727295160823e-8,0.003388836782278121,-6.022136221100909e-5,9.164417689053099e-8,0.003389099364723984,-6.008071140194549e-5,9.139814912203612e-8,0.003389306087909998,-5.9974056769629564e-5,9.121173103792565e-8,0.0033894766507592314,-5.992991778520634e-5,9.113234376727132e-8,0.0033896436217253243,-5.9967392439029444e-5,9.119094033650632e-8,0.003389848331184142,-6.00884494472235e-5,9.138938243016609e-8,0.003390131696696725,-6.027176738671097e-5,9.169052134537972e-8,0.003390520408645742,-6.0472489173007385e-5,9.20181223124543e-8,0.003391013048776062,-6.0632291852483944e-5,9.227391611926006e-8,0.003391574685345615,-6.069936708195099e-5,9.237117323434914e-8,0.0033921465752053356,-6.0649508463182645e-5,9.227013011226155e-8,0.003392668019375996,-6.049561955058757e-5,9.199390213601754e-8,0.003393098109249708,-6.027985582758634e-5,9.161498325294656e-8,0.003393425788317697,-6.005472021645174e-5,9.12229510324662e-8,0.00339366621882231,-5.986502345047448e-5,9.089367784604274e-8,0.003393849764889761,-5.973824800765525e-5,9.067301795341194e-8,0.0033940108887349028,-5.9683418753718195e-5,9.057517474706375e-8,0.0033941806177451347,-5.969475502631139e-5,9.058927390461232e-8,0.0033943828082887316,-5.9756555264083074e-5,9.068792616803152e-8,0.0033946329021984417,-5.984744069403636e-5,9.083450585144963e-8,0.003394937808251754,-5.994358255246006e-5,9.098854172687638e-8,0.003395296161910116,-6.002127117598997e-5,9.110993548500498e-8,0.003395698804414143,-6.0059267214638514e-5,9.116285658288206e-8,0.0033961296425301405,-6.004122350292775e-5,9.111984405853812e-8,0.0033965672449549665,-5.995817702591761e-5,9.096608893871411e-8,0.0033969875056327195,-5.9810681332088226e-5,9.070310529653611e-8,0.0033973673472186662,-5.960989551896998e-5,9.035055940505286e-8,0.0033976890073721226,-5.937702862808381e-5,8.994519524467432e-8,0.00339794414966279,-5.914078600227383e-5,8.953626954603158e-8,0.00339813686265762,-5.893285864413488e-5,8.91776383701858e-8,0.0033982846760873316,-5.8782022201718587e-5,8.891757350029357e-8,0.0033984170426695744,-5.8707756459061303e-5,8.878796990728907e-8,0.0033985710041651773,-5.8714419523522015e-5,8.879474808736464e-8,0.003398783964213327,-5.8787308590801815e-5,8.891163690828701e-8,0.003399084097724401,-5.889244323337396e-5,8.908026373626042e-8,0.003399480270250761,-5.898203293481756e-5,8.921967011645284e-8,0.0033999551699554283,-5.900646431000797e-5,8.924656326463904e-8,0.003400466358786225,-5.893049216975236e-5,8.91024588459512e-8,0.003400957801068039,-5.8747104648884236e-5,8.877683281588798e-8,0.003401378527359106,-5.848118000125292e-5,8.831304298309702e-8,0.0034016995373273343,-5.817987411373497e-5,8.779181892187154e-8,0.0034019205448226966,-5.789489120259509e-5,8.730103063936285e-8,0.0034020649231812825,-5.7666180030203005e-5,8.690798801868969e-8,0.003402168049287801,-5.751375176227864e-5,8.664571506488682e-8,0.003402265858276145,-5.743804869788241e-5,8.651389470980682e-8,0.00340238747932283,-5.742519852330234e-5,8.64881096032888e-8,0.0034025522455255973,-5.7453234933997976e-5,8.653057385184077e-8,0.0034027695489980392,-5.7497130460310654e-5,8.659865614011625e-8,0.003403039886903058,-5.753221388492227e-5,8.665054230622828e-8,0.0034033560870460524,-5.753644074444263e-5,8.664895352331391e-8,0.0034037044047870047,-5.7492186034072585e-5,8.656414307834132e-8,0.003404065680014834,-5.738807359108861e-5,8.637705347880114e-8,0.0034044170305128105,-5.722099116240365e-5,8.60828262613509e-8,0.003404734597935735,-5.6997926909140374e-5,8.569395943787588e-8,0.003404997558905359,-5.6736793275923886e-5,8.524163215191012e-8,0.0034051929890715296,-5.646520876211743e-5,8.477344074418974e-8,0.003405320408160798,-5.621648018227168e-5,8.434631513995815e-8,0.003405394300451476,-5.6022900264124296e-5,8.40149123124777e-8,0.0034054430646795236,-5.590772696450894e-5,8.381791884209707e-8,0.0034055038606741876,-5.587815564824331e-5,8.376626228374444e-8,0.0034056142384550816,-5.59216390476811e-5,8.383721738396868e-8,0.003405802567121793,-5.600706841995555e-5,8.397686437719106e-8,0.003406079762115114,-5.609104831024885e-5,8.411111539414267e-8,0.0034064347003346877,-5.6128202268790945e-5,8.416335082003054e-8,0.0034068351738956544,-5.6083285215666045e-5,8.407483916197228e-8,0.003407235151776666,-5.594181500695267e-5,8.382243623901492e-8,0.0034075871596243503,-5.5715353849958e-5,8.342714398589868e-8,0.0034078560389337632,-5.543856994368361e-5,8.294878555047174e-8,0.0034080288015259303,-5.5158405656903775e-5,8.246741739171249e-8,0.003408116556022004,-5.491960304745137e-5,8.20587213493105e-8,0.0034081483496585887,-5.475262430635319e-5,8.17736335484883e-8,0.0034081606287834965,-5.466819510979342e-5,8.162935251217643e-8,0.003408187213574958,-5.465879991060622e-5,8.161218884734959e-8,0.0034082529479952245,-5.470438823302094e-5,8.168747464274309e-8,0.0034083714747449156,-5.477893708194855e-5,8.181075694408507e-8,0.0034085458513296286,-5.4855751000708015e-5,8.193669718795236e-8,0.003408770414545297,-5.4910925975911326e-5,8.202480039048432e-8,0.003409032781106392,-5.4925363401297566e-5,8.204274072682829e-8,0.0034093155318804143,-5.488606600123461e-5,8.196858076576507e-8,0.0034095977133735593,-5.478735913882586e-5,8.179294852554372e-8,0.0034098566636729913,-5.463228818846857e-5,8.1521508229844755E-08,0.003410070752139286,-5.443391476149148e-5,8.117715796819658e-8,0.0034102233957102024,-5.4215684339399623e-5,8.0800505879973e-8,0.003410308068531649,-5.400958289018258e-5,8.044648266424068e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json new file mode 100644 index 000000000..5a65685cc --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_22.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":22000,"numberOfSamples":1000,"samples":[0.003410332914201753,-5.3850894022675106e-5,8.017517098961131e-8,0.003410322528879365,-5.376958194615e-5,8.003701237438996e-8,0.0034103145652221627,-5.3780481135696216e-5,8.005617875605212e-8,0.0034103506775372276,-5.3876274061593275e-5,8.021888857849169e-8,0.003410464307410866,-5.402707135418975e-5,8.047308167596654e-8,0.003410669971601388,-5.4187778507499705e-5,8.074133887896081e-8,0.003410958362427396,-5.431078402439631e-5,8.094271511350002e-8,0.0034112988966924413,-5.435925986441926e-5,8.101538020005893e-8,0.0034116483046836123,-5.431671386401488e-5,8.093263501288651e-8,0.0034119621492173344,-5.41904204198061e-5,8.070834304160092e-8,0.0034122059256284677,-5.400841636122217e-5,8.039138838903804e-8,0.0034123629141804617,-5.38113276447821e-5,8.005145827068325e-8,0.003412436926427523,-5.3641509849942013e-5,7.976047048128742e-8,0.0034124495366027988,-5.3532666321671336e-5,7.957504010808949e-8,0.0034124330661485227,-5.350283981451321e-5,7.952484351765614e-8,0.0034124218722404974,-5.3552370565715433e-5,7.960947036368768e-8,0.0034124447457084236,-5.3666539079328896e-5,7.980316491937519e-8,0.0034125202858526367,-5.382106091332426e-5,8.00642647210325e-8,0.0034126555868305777,-5.398815305369993e-5,8.034545908014444e-8,0.0034128473776592204,-5.414152490629849e-5,8.06021342297411e-8,0.0034130843642180496,-5.425966542015235e-5,8.079783644736344e-8,0.0034133497512128354,-5.4327618445658844e-5,8.090725685897239e-8,0.003413623435855102,-5.4337869912637006e-5,8.091781018622006e-8,0.003413883907454681,-5.429097539492461e-5,8.083081580105819e-8,0.0034141102665403125,-5.419622361028624e-5,8.066268207707981e-8,0.0034142849136512055,-5.407215162017978e-5,8.044570051432896e-8,0.00341439730488426,-5.394617096384391e-5,8.022718223765307e-8,0.003414448551881033,-5.385201336379878e-5,8.006482802604857e-8,0.0034144554442633347,-5.382365677022172e-5,8.001619006311863e-8,0.003414451133210198,-5.388562472720168e-5,8.012215438343905e-8,0.0034144795115925615,-5.4042269894100845e-5,8.038890648236031e-8,0.003414582717752921,-5.427144088560471e-5,8.077748959286917e-8,0.0034147858366957128,-5.452785635760065e-5,8.120990068433355e-8,0.003415086335408109,-5.475685197042185e-5,8.159276299340531e-8,0.0034154541675420077,-5.491264135361651e-5,8.184854560101504e-8,0.003415842328369328,-5.497241133679643e-5,8.19395012048398e-8,0.0034162020648540446,-5.494079694397467e-5,8.187500799224558e-8,0.0034164960597480513,-5.484509224563486e-5,8.170297816008171e-8,0.003416705855690934,-5.472520370648011e-5,8.14923147861858e-8,0.0034168331491478627,-5.462263220717812e-5,8.131389578844407e-8,0.003416896425673255,-5.457135459703978e-5,8.122506662590603e-8,0.003416924864737033,-5.459196701501527e-5,8.125992201462119e-8,0.0034169512624180483,-5.468942093895768e-5,8.142580537893595e-8,0.0034170054267853647,-5.485407812356393e-5,8.17054100824689e-8,0.0034171092005408077,-5.506533196508355e-5,8.206310391954363e-8,0.0034172737893538854,-5.529662285957986e-5,8.24534661992994e-8,0.0034174994368857004,-5.552057481406241e-5,8.282992315001632e-8,0.0034177769459542693,-5.5713266654435735e-5,8.315188937008223e-8,0.0034180902481047706,-5.58571185539423e-5,8.338960767448971e-8,0.0034184192209990544,-5.594239734507513e-5,8.352672714006698e-8,0.0034187422744122974,-5.5967759795049916e-5,8.356130894842189e-8,0.0034190386613258106,-5.5940313585960716e-5,8.350600300356605e-8,0.0034192907451060053,-5.5875438829459745e-5,8.338772029482915e-8,0.0034194865853197334,-5.5796286755981725e-5,8.324661178228372e-8,0.0034196231618546383,-5.573239332743332e-5,8.313343416160889e-8,0.0034197100026956712,-5.571629566234729e-5,8.310353167794132e-8,0.0034197718373557965,-5.5777017730924494e-5,8.320565011677361e-8,0.0034198476546487924,-5.593045265235306e-5,8.346570742357244e-8,0.0034199832418701356,-5.6169307155583144e-5,8.387000547866622e-8,0.0034202166393619616,-5.64584557493018e-5,8.435767926960611e-8,0.0034205614639800535,-5.67418663020452e-5,8.483274082655738e-8,0.003420997727034218,-5.696140593963007e-5,8.51962311929662e-8,0.0034214773558268368,-5.707879301142648e-5,8.538365211417604e-8,0.0034219421419332224,-5.708851047552745e-5,8.538688805157197e-8,0.0034223438059788605,-5.701585691614104e-5,8.525060072019697e-8,0.0034226564954146083,-5.690413699843295e-5,8.504993386503595e-8,0.003422878920363075,-5.679944106094893e-5,8.486413227000239e-8,0.0034230291674335464,-5.6739176541925223e-5,8.475681081074442e-8,0.003423136660697731,-5.6746178962097036e-5,8.476606168603778e-8,0.0034232343831674863,-5.682746769406769e-5,8.490269488349289e-8,0.0034233527024106186,-5.697594757338996e-5,8.515352124084064e-8,0.003423515048462373,-5.717372366496969e-5,8.548725451920484e-8,0.003423735360724929,-5.739623453008071e-5,8.586162778920173e-8,0.0034240171921175824,-5.761661689063496e-5,8.623076555625632e-8,0.003424354282394761,-5.7809781532945634e-5,8.655200921001188e-8,0.003424732337212298,-5.795580012171021e-5,8.679159414405439e-8,0.0034251316600929604,-5.804228112995662e-5,8.692867283680107e-8,0.0034255301389273553,-5.8065571370678764e-5,8.695739993818016e-8,0.0034259061435299876,-5.8030942708281336e-5,8.68873016976559e-8,0.003426241192945239,-5.7952061490074354e-5,8.674237096252997e-8,0.003426522442310002,-5.784987818084441e-5,8.655906513984539e-8,0.0034267450710929025,-5.775090698206635e-5,8.638314938058331e-8,0.0034269146613510586,-5.768461436478088e-5,8.626498016672915e-8,0.0034270492888037753,-5.7679206341423455e-5,8.625215296635437e-8,0.0034271801115048016,-5.775513150463932e-5,8.637847340111039e-8,0.003427348318837799,-5.791673040416302e-5,8.66500111928406e-8,0.003427596290732135,-5.814466196255829e-5,8.703260278195282e-8,0.0034279529627239238,-5.8394327194921334e-5,8.744949479355945e-8,0.003428418470586544,-5.860576263431353e-5,8.77983298726461e-8,0.00342895785967562,-5.872474275422114e-5,8.79870966366347e-8,0.0034295111225311516,-5.872520138069127e-5,8.797231646130829e-8,0.0034300159367414112,-5.8619276575255356e-5,8.777608739665868e-8,0.003430429936364875,-5.8449346719175054e-5,8.747221956219683e-8,0.0034307409539403753,-5.8269005362368705e-5,8.715330218992734e-8,0.0034309636874953423,-5.812488879415304e-5,8.689927969838687e-8,0.0034311290547955646,-5.804651663753494e-5,8.676002574361577e-8,0.0034312730856115364,-5.804431513186724e-5,8.675224016919222e-8,0.003431428842749821,-5.811258599710215e-5,8.686495556850346e-8,0.003431621833748501,-5.823424073945281e-5,8.706799112634763e-8,0.0034318679871170456,-5.838549788451625e-5,8.732014432177786e-8,0.0034321731793053077,-5.854001187955921e-5,8.757621999925782e-8,0.0034325337535511193,-5.8672442465983527E-05,8.779300375802679e-8,0.0034329377969641297,-5.876149483775846e-5,8.79343338304245e-8,0.0034333670820067457,-5.8792422402358875e-5,8.7975316488367e-8,0.0034337996533433854,-5.875886549720411e-5,8.790547650809066e-8,0.0034342129023982814,-5.8663743295375374e-5,8.773032040338553e-8,0.0034345867528595554,-5.8519040728693963E-05,8.747098149349937e-8,0.00343490662495616,-5.834457618854895e-5,8.716204139286165e-8,0.003435165997133961,-5.816584043444344e-5,8.684766473704805e-8,0.003435368377604481,-5.8010940498476064e-5,8.657614158669101e-8,0.003435528469312809,-5.79066894188021e-5,8.639300030976978e-8,0.0034356721817477088,-5.787374966119817e-5,8.633265875065238e-8,0.0034358346431882215,-5.7920805816179714e-5,8.640865043476558e-8,0.00343605489737805,-5.8038637339463834e-5,8.660388209222903e-8,0.0034363663675272185,-5.8196543664505935e-5,8.686495377469283e-8,0.003436784132872785,-5.834498191690136e-5,8.710692888866458e-8,0.003437293776835478,-5.8427735873480615e-5,8.72341254787051e-8,0.0034378497110881335,-5.8402092841660325e-5,8.717442687949159e-8,0.0034383882973978448,-5.8257765502926945e-5,8.691145603639477e-8,0.003438851408713721,-5.802240303565348e-5,8.649384664598423e-8,0.0034392073380863355,-5.774932951993929e-5,8.601401185593557e-8,0.0034394577744100104,-5.749559608304214e-5,8.557022184800596e-8,0.003439630233895451,-5.7303386349150334e-5,8.523451882013677e-8,0.0034397639148655676,-5.71921018810065e-5,8.503923334835471e-8,0.003439897152082377,-5.716002300749245e-5,8.498019404726612e-8,0.0034400599773055985,-5.719061355114749e-5,8.502796230293353e-8,0.0034402713672934656,-5.725932344600479e-5,8.513976877355545e-8,0.0034405393098027363,-5.7338962376120295e-5,8.52687687250456e-8,0.0034408620305790096,-5.7403458295962594e-5,8.5370360365332e-8,0.0034412295639111826,-5.74305399376233e-5,8.540661686558558e-8,0.0034416255077720182,-5.7403819017073256e-5,8.534975049941572e-8,0.0034420290593737894,-5.7314494475115625e-5,8.518502074925517e-8,0.0034424175204084556,-5.7162649725107814e-5,8.491300299198063e-8,0.0034427693744096327,-5.695780291358059e-5,8.45505703435799e-8,0.003443067694390436,-5.671827027498391e-5,8.412977141244271e-8,0.0034433033585062117,-5.6469137408961e-5,8.369422260683416e-8,0.003443477522363603,-5.6238888006486065e-5,8.329312068593308e-8,0.0034436028265143223,-5.6054927768332085e-5,8.297335687745774e-8,0.0034437028776761053,-5.593849466785818e-5,8.277067663956046e-8,0.0034438096971042514,-5.589961405993521e-5,8.270110737924363e-8,0.0034439589152577502,-5.593284157050621e-5,8.275395289466784e-8,0.0034441825909026142,-5.601493075148707e-5,8.288821797121621e-8,0.0034445001635288017,-5.610621465702858e-5,8.303535737202917e-8,0.0034449095226591654,-5.615762951966539e-5,8.311147869532069e-8,0.0034453821233687756,-5.612393855092263e-5,8.303989847633601e-8,0.003445866927768903,-5.598013860657117e-5,8.277898571579688e-8,0.003446305117155568,-5.573359851034611e-5,8.234268399454156e-8,0.003446650688170405,-5.54237541297035e-5,8.179975395214818e-8,0.003446886420895123,-5.5107576665760024e-5,8.124862318937609e-8,0.0034470267259821934,-5.483846667724602e-5,8.078097385183255e-8,0.00344710766051307,-5.464993566767857e-5,8.04536936374894e-8,0.003447171789706657,-5.455038535028025e-5,8.028012646114274e-8,0.0034472558389312216,-5.452741901483898e-5,8.02378602589795e-8,0.003447384454009153,-5.455622510521429e-5,8.028347230580017e-8,0.003447569166450617,-5.460748845901849e-5,8.036626359875367e-8,0.003447810144196527,-5.465292154467429e-5,8.043768722291936e-8,0.0034480987268725206,-5.466849659176279e-5,8.045671557812648e-8,0.003448419783191651,-5.46362499989435e-5,8.039277888315682e-8,0.003448753772593059,-5.45454637568273e-5,8.022774113086465e-8,0.0034490787902391605,-5.439364106836301e-5,7.995762374625734e-8,0.003449372967644381,-5.41872734508112e-5,7.959400330433788e-8,0.0034496174799257423,-5.394199608711304e-5,7.916430464845655e-8,0.003449800033082265,-5.368150494101013e-5,7.870985989025718e-8,0.0034499182123150364,-5.343472982432336e-5,7.828086678372597e-8,0.003449981722370573,-5.323117506956941e-5,7.792815673433031e-8,0.0034500124919465153,-5.30949612652312e-5,7.769278778854012e-8,0.0034500419488425822,-5.303878495366926e-5,7.759565134357626e-8,0.003450105483013042,-5.305939695552917e-5,7.762989261880157e-8,0.0034502349108771345,-5.3136052000312036E-05,7.775860628781301e-8,0.00345045036327994,-5.3232896856317525e-5,7.791934553656435e-8,0.0034507534559009615,-5.330563477313901e-5,7.803586216602371e-8,0.0034511239123253042,-5.331189940292976e-5,7.80359816725961e-8,0.0034515217741313154,-5.3223411868618484e-5,7.787229296285301e-8,0.0034518963778732035,-5.303630985682997e-5,7.753954870439826e-8,0.003452200772443476,-5.277494601652743e-5,7.708083438603485e-8,0.0034524067233620208,-5.24857622131667e-5,7.657676351766069e-8,0.003452513539318852,-5.222238745671445e-5,7.611970105647155e-8,0.003452546358006263,-5.202834487641089e-5,7.578401494859984e-8,0.003452545316805372,-5.1925238857953614e-5,7.56059228122419e-8,0.0034525517079226162,-5.1910531969244896e-5,7.55799748568084e-8,0.0034525973425899702,-5.1963341595560646e-5,7.566935879164173e-8,0.003452699860306806,-5.2053492925631584e-5,7.582168477769657e-8,0.003452863075258511,-5.2149607426261665e-5,7.598291155508565e-8,0.0034530799060755258,-5.222439818684115e-5,7.61063070119408e-8,0.003453335818338361,-5.2257343532068194e-5,7.615685892232103e-8,0.003453611766785339,-5.223571891965294e-5,7.61129377116946e-8,0.0034538864899658996,-5.215494408708145e-5,7.596690383151867e-8,0.003454138506384482,-5.201882998128307e-5,7.572562427973521e-8,0.003454348337076918,-5.183978826068164e-5,7.541091271463072e-8,0.0034545013314538756,-5.1638552963418784e-5,7.505903324803353e-8,0.003454591043269122,-5.144265642680074e-5,7.47179322561575e-8,0.0034546224963198295,-5.128290588661151e-5,7.444094709790633e-8,0.003454614029832736,-5.118756231866206e-5,7.427657654620211e-8,0.0034545960964780477,-5.117499667449252e-5,7.425575471974446e-8,0.0034546059759224725,-5.124696696840789e-5,7.438038383349255e-8,0.003454678971542103,-5.13853618139435e-5,7.46180167622108e-8,0.003454838496800186,-5.155451806553497e-5,7.490622976898416e-8,0.003455088410098183,-5.170923490366474e-5,7.516676020545438e-8,0.0034554104312331923,-5.18063784397559e-5,7.53256558047392e-8,0.0034557677626890567,-5.181660232781692e-5,7.533338722547459e-8,0.003456114043853787,-5.173270086815992e-5,7.517894604581043e-8,0.0034564052677747885,-5.157212308820495e-5,7.48937718027089e-8,0.003456611436614271,-5.1372648185342906e-5,7.454392055414663e-8,0.0034567244663298784,-5.118206849108857e-5,7.421205085109125e-8,0.0034567595924578005,-5.104487112438851e-5,7.397444303572169e-8,0.0034567496932292933,-5.0990411029647274e-5,7.388079046187029e-8,0.0034567348219838017,-5.1026634462844345E-05,7.394368941315555e-8,0.0034567511208470503,-5.1140910162072285e-5,7.41404001886787e-8,0.003456822969488365,-5.130640701071599e-5,7.442407063670418e-8,0.0034569600809666373,-5.149059048477161e-5,7.473844540174441e-8,0.003457158836079232,-5.166263101478568e-5,7.503054191154755e-8,0.0034574058624226842,-5.179814342816616e-5,7.525864485773623e-8,0.0034576819982162126,-5.188131487414444e-5,7.53958236160267e-8,0.003457965624434055,-5.190529764163641e-5,7.543055726802653e-8,0.003458235153642075,-5.187182989119657e-5,7.536613158997809e-8,0.003458470988800748,-5.179074706531707e-5,7.52198852644471e-8,0.0034586575036994354,-5.1679536585510255e-5,7.502247538759579e-8,0.0034587855033521653,-5.156254212189298e-5,7.481641900418598e-8,0.0034588552057932243,-5.1469030724573484e-5,7.465256143383775e-8,0.0034588791061978532,-5.142920657003421e-5,7.458297859873786e-8,0.003458883218149259,-5.1467660711166246e-5,7.464955268013278e-8,0.0034589045776179444,-5.159510836468649e-5,7.48697763858947e-8,0.0034589835250980615,-5.180135000044591e-5,7.522485150187091e-8,0.0034591517840109193,-5.205370320062124e-5,7.56573232920082e-8,0.0034594206555359705,-5.2303828254811026e-5,7.608317761780516e-8,0.0034597750906966754,-5.250174966429808e-5,7.641623908985145e-8,0.0034601771049745287,-5.2611539439694236e-5,7.659526793472266e-8,0.003460577222136936,-5.262200185778321e-5,7.660223703442587e-8,0.003460928903507887,-5.254861496345348e-5,7.646534203758294e-8,0.003461200559315436,-5.2427345790902366e-5,7.624789704143432e-8,0.0034613819623500147,-5.230371513415596e-5,7.602909490634815e-8,0.00346148446467581,-5.2220931733726785e-5,7.58833715008536e-8,0.003461536103359664,-5.2210117968981436e-5,7.586364467457609e-8,0.003461573517811942,-5.2284544913011865e-5,7.599167543503633e-8,0.0034616329485504336,-5.243864613206289e-5,7.625673698865155e-8,0.003461742549106104,-5.265142211148723e-5,7.662177846795173e-8,0.003461917703165235,-5.2892782274308036e-5,7.703449448843473e-8,0.0034621599737674246,-5.313072477304534e-5,7.74396760194996e-8,0.0034624591084389793,-5.33374098966768e-5,7.778955053911857e-8,0.003462796779292467,-5.349304510582412e-5,7.805033191515012e-8,0.003463150686187144,-5.3587487694671127e-5,7.820488911072816e-8,0.0034634980867577683,-5.362014291759816e-5,7.825256020973388e-8,0.0034638184347490337,-5.35989854743125e-5,7.820751398896041e-8,0.0034640953366142095,-5.353936163065365e-5,7.809672470592285e-8,0.0034643182806015373,-5.3462782486652334e-5,7.795785220255605e-8,0.0034644845501561154,-5.339545627403919e-5,7.783656035226323e-8,0.0034646014413177184,-5.336592005983549e-5,7.778221516267927e-8,0.0034646882637985664,-5.3400881599815127e-5,7.78405393635882e-8,0.003464776653159077,-5.351867683920702e-5,7.804231285445772e-8,0.003464906957150965,-5.372111733504216e-5,7.838949782169935e-8,0.0034651189235659127,-5.398689725856593e-5,7.884418711991946e-8,0.0034654377510551313,-5.427171287388532e-5,7.932912268318844e-8,0.003465861181889111,-5.45189747063227e-5,7.974637922620187e-8,0.0034663557995089868,-5.4679006723517416e-5,8.001057810235294e-8,0.003466866832075317,-5.4727667638690595e-5,8.008101605182355e-8,0.003467337213583027,-5.467430917764118e-5,7.997525515932372e-8,0.0034677259185634294,-5.45558137956383e-5,7.975848386026634e-8,0.0034680175758430914,-5.4421850197762574e-5,7.951758779610465e-8,0.003468221945391668,-5.431943863471243e-5,7.93341221303494e-8,0.003468366749984431,-5.4282189894998705e-5,7.926564782173139e-8,0.003468488253575451,-5.432554626942201e-5,7.933775100923389e-8,0.003468622577673265,-5.4446940976185534e-5,7.954473091422483e-8,0.00346879910386759,-5.4629139136083834e-5,7.985575566520995e-8,0.003469036315266957,-5.484531500646757e-5,8.022385234336574e-8,0.0034693400970225562,-5.506482644748267e-5,8.05959068464886e-8,0.003469704347103154,-5.525874833196587e-5,8.09221138287859e-8,0.003470113426848338,-5.54043045866477e-5,8.116348069551332e-8,0.003470545719066106,-5.548767615842907e-5,8.129655797854296e-8,0.0034709775149081618,-5.550506450046016e-5,8.131522490515083e-8,0.0034713865350294564,-5.546223505877917e-5,8.122990831469518e-8,0.00347175466700389,-5.537307165347207e-5,8.10651077332558e-8,0.003472069935483391,-5.5257707024367603e-5,8.085614780070984e-8,0.0034723279767847086,-5.514048489525153e-5,8.064555763367976e-8,0.0034725332728849033,-5.504767565387728e-5,8.047894670947377e-8,0.0034727002510506733,-5.5004592720721175e-5,8.039983781883514e-8,0.003472853897452726,-5.5031486682279284e-5,8.044249502323219e-8,0.0034730286883273595,-5.513778809238864e-5,8.062209526950794e-8,0.003473263973229728,-5.531544130156531e-5,8.092351809161323e-8,0.0034735943076693245,-5.553413717659481e-5,8.129347436960563e-8,0.003474035665897499,-5.574326882078972e-5,8.16441259001113e-8,0.0034745731955609315,-5.5884742086398796e-5,8.18752580591423e-8,0.0034751596486798657,-5.5914583892773785e-5,8.19115493205368e-8,0.003475729749079442,-5.5822556153648676e-5,8.173640984494093e-8,0.0034762246796353497,-5.563705319293436e-5,8.140033666182622e-8,0.003476612701492186,-5.541203574155975e-5,8.099801039245487e-8,0.003476895422108325,-5.52051656998577e-5,8.063001150121857e-8,0.0034771002354880218,-5.50597528893753e-5,8.037124816213464e-8,0.003477266808137206,-5.499678333889154e-5,8.025718895626209e-8,0.003477434878777277,-5.501575513956466e-5,8.028567476587208e-8,0.0034776364077081026,-5.510010155564282e-5,8.042677847876208e-8,0.0034778919129647623,-5.522370891534653e-5,8.063443431098723e-8,0.003478209655577147,-5.53567664624354e-5,8.085668027157581e-8,0.003478586484780268,-5.547053781197861e-5,8.104383769654996e-8,0.003479009745324267,-5.5541137233202974e-5,8.115488223399064e-8,0.0034794599661624203,-5.55522999409954e-5,8.116209039532e-8,0.00347991406310937,-5.5497055559913984e-5,8.105385714697197e-8,0.00348034877409459,-5.5378226962704636e-5,8.083554656447708e-8,0.003480743967899695,-5.5207701396177e-5,8.052824678244802e-8,0.003481085399356866,-5.500462615502403e-5,8.016563989201027e-8,0.003481366669257658,-5.4792906661938594e-5,7.978960191727658e-8,0.0034815903954937507,-5.459831114198394e-5,7.944505128213398e-8,0.003481768645435652,-5.444530524158718e-5,7.917429462220676e-8,0.003481922641158277,-5.435363020679066e-5,7.901097650404148e-8,0.003482081557943241,-5.43344611388244e-5,7.897344901624152e-8,0.0034822796949849086,-5.438607219406785e-5,7.90574880741661e-8,0.0034825508886991334,-5.4489814677525574e-5,7.922969966297901e-8,0.003482919510198329,-5.460863179618924e-5,7.942530879637457e-8,0.00348338922468968,-5.4691530175031036e-5,7.955606784582527e-8,0.0034839341482262006,-5.468684887826709e-5,7.953314250976801e-8,0.003484500044929782,-5.456236411226566e-5,7.930171563250027e-8,0.003485020395764967,-5.432242661163013e-5,7.887051211495277e-8,0.003485441830665722,-5.4009666442778456e-5,7.831463037203127e-8,0.003485744308334187,-5.3687830051453043e-5,7.774555423085291e-8,0.003485944356059249,-5.341619454208322e-5,7.726643890430705e-8,0.0034860824605426953,-5.323068031905013e-5,7.69391413336341e-8,0.003486205192699337,-5.313887848336849e-5,7.677573716104043e-8,0.003486351616487765,-5.312585818689202e-5,7.674902644824243e-8,0.003486546989851855,-5.3163832246076e-5,7.680975614919294e-8,0.003486802071512451,-5.322081037736187e-5,7.690188262653895e-8,0.003487115234474545,-5.326655085161755e-5,7.697289095930539e-8,0.003487475361305784,-5.3276107450321254e-5,7.697977967690026e-8,0.00348786468748232,-5.323188756023941e-5,7.689243976502786e-8,0.003488261541112851,-5.3124867656400085e-5,7.669564695902987e-8,0.0034886431118577687,-5.2955187271283527e-5,7.639006967152842e-8,0.0034889883345022694,-5.273207584356439e-5,7.599217164183895e-8,0.00348928082718179,-5.247287143335613e-5,7.553253065060545e-8,0.0034895115406157772,-5.220092938007728e-5,7.505217138911657e-8,0.0034896806403166163,-5.194253721386278e-5,7.45970984578306e-8,0.003489798281891112,-5.17231700616895e-5,7.421163449310192e-8,0.003489884081885023,-5.156346255637453e-5,7.393127924950925e-8,0.0034899651917605482,-5.1475349070217194e-5,7.37759579390884e-8,0.0034900730046242873,-5.145880727187514e-5,7.374448490150087e-8,0.0034902384487222934,-5.149957504391051e-5,7.38108940008001e-8,0.003490485713360978,-5.1568581097192085e-5,7.392383226896056e-8,0.0034908247516596694,-5.162452953725788e-5,7.401135645851316e-8,0.0034912442178913756,-5.162129070334261e-5,7.399384833356589e-8,0.0034917082870866084,-5.152067046187914e-5,7.380600775763368e-8,0.003492161919526589,-5.1307906470345714e-5,7.342344472404727e-8,0.0034925468003312904,-5.100251708159784e-5,7.28812436475048e-8,0.0034928230231711763,-5.065567102917774e-5,7.22692085054129e-8,0.00349298480607223,-5.0332008284307815e-5,7.170010948102879e-8,0.003493060486880091,-5.008509810197167e-5,7.126687367301145e-8,0.0034930978108644877,-4.994040408769448e-5,7.10129659368693e-8,0.003493144812116986,-4.989292212429899e-5,7.092852991350264e-8,0.003493236329890927,-4.991616821749949e-5,7.09664233386691e-8,0.003493389382240401,-4.997451260323819e-5,7.106400377600212e-8,0.0034936049670886314,-5.003303046878982e-5,7.116036558566628e-8,0.0034938724850190725,-5.006315699024087e-5,7.120605641471014e-8,0.003494174181710002,-5.004500801825621e-5,7.116689888635155e-8,0.003494488647240114,-4.9967898958017656e-5,7.10247226686362e-8,0.003494793491455296,-4.983017838931351e-5,7.077701977191036e-8,0.0034950676495118685,-4.963883343406836e-5,7.043629688622425e-8,0.0034952936893218015,-4.940884123717768e-5,7.00290073852739e-8,0.0034954602703394025,-4.91619116469257e-5,6.959337044053813e-8,0.003495564525333123,-4.8924164351532744e-5,6.917524860206665e-8,0.0034956137545527114,-4.872255946766232e-5,6.882178267966077e-8,0.003495625715726868,-4.858035828766625e-5,6.857332667336269e-8,0.003495626962793271,-4.8512296531638016e-5,6.845495049254806e-8,0.003495649053141319,-4.852049680516395e-5,6.846936904534974e-8,0.00349572299679345,-4.859225484338337e-5,6.859329915473242e-8,0.0034958728136478237,-4.870052145709375e-5,6.877863372874697e-8,0.003496109274904872,-4.8807474643686194e-5,6.895900381066696e-8,0.0034964250870034323,-4.887130098211752e-5,6.906179269833887e-8,0.0034967931639454048,-4.885581409325789e-5,6.902485348345956e-8,0.0034971698712657363,-4.874139651093061e-5,6.881530246607359e-8,0.0034975044920154213,-4.853405294472491e-5,6.84449092255104e-8,0.0034977539089692195,-4.82679369446728e-5,6.797415829244196e-8,0.0034978977356623906,-4.799750824878962e-5,6.749837862946622e-8,0.003497946438249529,-4.778016802970108e-5,6.71174247409688e-8,0.003497937170337883,-4.765667743097292e-5,6.690162413586374e-8,0.0034979190953097782,-4.763908471093491e-5,6.687094352623798e-8,0.003497936251514583,-4.771117288133363e-5,6.699607854306233e-8,0.0034980160892215074,-4.783863709240464e-5,6.72164958349271e-8,0.0034981665960245093,-4.798196106874302e-5,6.746304065721289e-8,0.0034983797653029723,-4.810632101892896e-5,6.7675162011292e-8,0.003498637465113023,-4.818668505636025e-5,6.780961989824135e-8,0.003498916867361659,-4.820909523255125e-5,6.784251930616007e-8,0.0034991943722301896,-4.816994545602405e-5,6.77679407084832e-8,0.003499448182358842,-4.8074658565751284e-5,6.759564195017042e-8,0.003499660159392372,-4.793641707463699e-5,6.734892080114882e-8,0.003499817561197899,-4.777495464323169e-5,6.70625616249293e-8,0.0034999149556601225,-4.761498368904733e-5,6.678005875369204e-8,0.0034999561644388504,-4.7483672003196496e-5,6.654908362581237e-8,0.003499955598723389,-4.7406752130685654e-5,6.64145242188782e-8,0.003499937981419274,-4.7403373506660164e-5,6.64093764187308e-8,0.0034999354725625304,-4.748062569635709e-5,6.654518620862992e-8,0.0034999818663642855,-4.762947778629249e-5,6.680512211808298e-8,0.003500104737353191,-4.782411608126126e-5,6.714310459443665e-8,0.0035003176166506283,-4.802589279357225e-5,6.749101949715656e-8,0.0035006147541124916,-4.819155958831892e-5,6.777333062458293e-8,0.0035009704717046735,-4.8283900302600454e-5,6.79257035406021e-8,0.0035013438418472647,-4.828195062171539e-5,6.791269545624289e-8,0.0035016879794580935,-4.818789700989003e-5,6.77394776851162e-8,0.00350196195728518,-4.8028314713332036e-5,6.7453611515929e-8,0.0035021422800556846,-4.784851634702435e-5,6.713486096804716e-8,0.0035022301857497284,-4.770064526201016e-5,6.687425034339409e-8,0.0035022515726871335,-4.762872570098612e-5,6.674801281177754e-8,0.003502248809025409,-4.76559744371242e-5,6.6795665439382e-8,0.0035022673478896467,-4.777938593190681e-5,6.701087743219682e-8,0.003502342631637575,-4.7973344665574994e-5,6.734808187955503e-8,0.0035024922414820824,-4.819969702053791e-5,6.774024524213613e-8,0.003502715017307082,-4.841926028605082e-5,6.811897897486228e-8,0.0035029954034810603,-4.8600480484494276e-5,6.842952899629088e-8,0.003503309784163736,-4.872362633221379e-5,6.863790981889476e-8,0.0035036322351094896,-4.878127146575032e-5,6.873159448741184e-8,0.0035039386022962613,-4.877672372667128e-5,6.871671928860393e-8,0.003504208970165578,-4.87218399559206e-5,6.861430714964363e-8,0.003504429141433504,-4.863501729753385e-5,6.845682584882933e-8,0.00350459182981821,-4.853945290340068e-5,6.828516088744188e-8,0.0035046979735865453,-4.846124060565817e-5,6.814520400131455e-8,0.00350475808642424,-4.842667362547513e-5,6.808297903800876e-8,0.00350479302443529,-4.845822639406622e-5,6.813746753851686e-8,0.003504833027239744,-4.8569169986268695e-5,6.833115419174137e-8,0.003504913702238319,-4.8757838383985466e-5,6.866012446657687e-8,0.0035050683853181447,-4.900391199350466e-5,6.908782646579392e-8,0.0035053182256271995,-4.926964452673352e-5,6.954751938057267e-8,0.003505663509814919,-4.950767016413277e-5,6.995616209346973e-8,0.003506080502214955,-4.967398233611283e-5,7.023720489982495e-8,0.0035065262851390663,-4.974153435641874e-5,7.034430756266863e-8,0.003506950416802348,-4.970896615211756e-5,7.027638385694825e-8,0.003507309058355678,-4.960110682063593e-5,7.0078148342398e-8,0.003507576569966767,-4.9461571981689524e-5,6.982680430100155e-8,0.003507751260505524,-4.9340525835212706e-5,6.961036660223815e-8,0.0035078543380118467,-4.928155435713404e-5,6.950463542881697e-8,0.003507923017411245,-4.931120710474176e-5,6.955507505634865e-8,0.003508000088817847,-4.943373386134086e-5,6.976794205386932e-8,0.0035081230318595195,-4.9631997266688886e-5,7.011223942234489e-8,0.003508315707408989,-4.987372010955851e-5,7.053089174394624e-8,0.003508584634184765,-5.012067906449034e-5,7.095689951327328e-8,0.003508920154172877,-5.033779131119303e-5,7.13291488630146e-8,0.0035093011174319503,-5.0499608977751295e-5,7.16036029544808e-8,0.0035097008909079027,-5.059322819724562e-5,7.175822123658268e-8,0.003510092795370233,-5.0618099620991336e-5,7.179252228933486e-8,0.0035104540074803628,-5.058396686418179e-5,7.172395576915468e-8,0.0035107678630634256,-5.050815563358695e-5,7.15831936559844e-8,0.0035110250474179707,-5.041300190160958e-5,7.140965978633763e-8,0.003511224303772449,-5.0323602655051194e-5,7.124755864747469e-8,0.003511373081760116,-5.026556563032649e-5,7.114182180173342e-8,0.0035114881227789486,-5.026219499321855e-5,7.113303314780363e-8,0.003511595434404246,-5.0330578468163386e-5,7.125049337013055e-8,0.003511728512620591,-5.047647794780582e-5,7.15033405278639e-8,0.0035119233836461974,-5.0689046876978714e-5,7.187153222950117e-8,0.003512209769178392,-5.093800093324406e-5,7.230120436607415e-8,0.003512599955153083,-5.1176799888461815e-5,7.271049692322936e-8,0.003513080034794742,-5.135392592457402e-5,7.300940477436388e-8,0.003513609502076132,-5.14298349934786e-5,7.312941724983363e-8,0.0035141320281950124,-5.139216413429823e-5,7.305001548325024e-8,0.0035145936629104664,-5.1261041454466944e-5,7.28077595651944e-8,0.003514959887450534,-5.108168091747994e-5,7.248300624823855e-8,0.0035152241266274524,-5.090867675710344e-5,7.217204520177112e-8,0.0035154059396990682,-5.078968882418096e-5,7.195828527441259e-8,0.0035155420813633245,-5.075426745699315e-5,7.189270617613542e-8,0.0035156751083582306,-5.0809654038145116e-5,7.198679130075311e-8,0.003515843117254807,-5.094257374417173e-5,7.221607476825528e-8,0.0035160725094786714,-5.112494538587068e-5,7.253048594280297e-8,0.0035163744088703465,-5.132142690619098e-5,7.286773029032713e-8,0.0035167446049327736,-5.1497064920155425e-5,7.316666417595633e-8,0.003517166385541075,-5.1623642515698906e-5,7.337826896105822e-8,0.0035176151934762446,-5.168374224689177e-5,7.347259275945112e-8,0.0035180638474490854,-5.167220679053694e-5,7.344117159692746e-8,0.003518487230567752,-5.159533656149261e-5,7.329555446259182e-8,0.0035188657466365884,-5.146856119474064e-5,7.306321274190783e-8,0.0035191873567905307,-5.13134535075297e-5,7.278232032475649e-8,0.0035194484899109596,-5.1154771029381724e-5,7.249655785721567e-8,0.0035196543025420254,-5.101775638284942e-5,7.225031546170417e-8,0.0035198186084428556,-5.0925530397301455e-5,7.208400788541844e-8,0.0035199635105888586,-5.089622436322815e-5,7.202894163244655e-8,0.003520118343208592,-5.093945103045378e-5,7.210112224469392e-8,0.0035203169511922577,-5.105206016209678e-5,7.229397007328736e-8,0.003520592065648051,-5.1214188069510806e-5,7.2571689142489e-8,0.00352096625240208,-5.138810927673326e-5,7.286756429012272e-8,0.0035214411001403445,-5.1523353653888815e-5,7.309310451119305e-8,0.0035219896591436894,-5.15702050538723e-5,7.316168179423694e-8,0.0035225589618442157,-5.149859927706176e-5,7.302152157725176e-8,0.003523085668432638,-5.1313067895405906e-5,7.268175566529078e-8,0.003523518917940908,-5.105359802726036e-5,7.221375246224139e-8,0.003523838095962248,-5.0780520742168284e-5,7.17243210762634e-8,0.0035240564761216146,-5.0552185506667285e-5,7.13161973079306e-8,0.003524211505779421,-5.040730619616483e-5,7.105688273569124e-8,0.003524349502340482,-5.035813602950126e-5,7.096680808680643e-8,0.0035245122820342207,-5.039321453053906e-5,7.102455458373297e-8,0.003524729076631242,-5.0485092313253465e-5,7.1180850127246e-8,0.003525013583176288,-5.059899047337806e-5,7.137404304621766e-8,0.003525364590777378,-5.070022815478351e-5,7.154318300099117e-8,0.0035257686958330417,-5.075977742115368e-5,7.163764186847562e-8,0.003526204144558562,-5.075793251795897e-5,7.16233638631601e-8,0.003526645154897335,-5.06861406598159e-5,7.148591957241648e-8,0.003527066167471657,-5.0547118838004726e-5,7.123062042100954e-8,0.0035274455836368955,-5.03535175473795e-5,7.088014482938875e-8,0.003527768623758874,-5.012545639882056e-5,7.047021401502236e-8,0.0035280290362206864,-4.988738877980477e-5,7.004408058198917e-8,0.0035282296839363246,-4.966483945398808e-5,6.964675729891865e-8,0.003528382291270085,-4.9481325891113706e-5,6.931952735975422e-8,0.003528506567199636,-4.935546278755109e-5,6.909476075587484e-8,0.003528628724271695,-4.929815291741338e-5,6.899092748257108e-8,0.0035287791842859104,-4.9309749713025403e-5,6.900767973450815e-8,0.0035289888641371506,-4.9377284113068966e-5,6.912119895490268e-8,0.003529283256307753,-4.947268367777429e-5,6.92813827041382e-8,0.0035296742313782816,-4.955407009659888e-5,6.941439827038625e-8,0.003530151349516904,-4.957278427309963e-5,6.943511266213218e-8,0.0035306772094212354,-4.948747198735312e-5,6.92717079077621e-8,0.003531192964839601,-4.928195652942658e-5,6.889685346018671e-8,0.0035316365215482056,-4.89774365236009e-5,6.834895029601523e-8,0.003531966575744259,-4.862874958980648e-5,6.772540073203424e-8,0.0035321786442322665,-4.830377164926679e-5,6.714615431489767e-8,0.003532303511122255,-4.805750770984733e-5,6.670788672264682e-8,0.0035323910644271955,-4.7915439884981005e-5,6.645464473265158e-8,0.003532490905278016,-4.787198094158151e-5,6.637538089556046e-8,0.0035326391070453276,-4.7899603242805185e-5,6.6420465804465665E-08,0.003532853457600977,-4.79609329089279e-5,6.652335567882734e-8,0.003533134764875135,-4.801870810507902e-5,6.661826425948239e-8,0.0035334709225311187,-4.80420607780708e-5,6.6651124930788e-8,0.0035338414892082007,-4.800969554135657e-5,6.658497123133597e-8,0.003534221883309781,-4.791109649069916e-5,6.640185991590025e-8,0.0035345870911481937,-4.774650430734176e-5,6.610271983901248e-8,0.003534914922415681,-4.7525956167852065e-5,6.570564041722356e-8,0.003535188784668761,-4.726751897573049e-5,6.524278234784632e-8,0.003535399869757837,-4.699475689773158e-5,6.475593288560843e-8,0.003535548488616758,-4.673352273796198e-5,6.429082959559262e-8,0.0035356443027719678,-4.6508419457597334e-5,6.389085743601263e-8,0.003535705452163371,-4.633936348530399e-5,6.359090277517784e-8,0.0035357567090917945,-4.623851257366044e-5,6.341187165168234e-8,0.003535826730715225,-4.6207747236638295e-5,6.335626221346214e-8,0.0035359444328626815,-4.62369186224868e-5,6.340521229944e-8,0.0035361343987252193,-4.6303140463713727e-5,6.351750974087675e-8,0.0035364112077063,-4.637182901460024e-5,6.363172583245652e-8,0.0035367731674912405,-4.640084478194753e-5,6.367372155706706e-8,0.003537197303637594,-4.634911429135081e-5,6.357183762261232e-8,0.0035376391122535576,-4.618966433176537e-5,6.327964211385549e-8,0.003538041119459337,-4.592349949638268e-5,6.280007246840904e-8,0.0035383510638224264,-4.558644822183458e-5,6.219724757422401e-8,0.0035385429814836127,-4.524104977366377e-5,6.158200500178063e-8,0.0035386287865788782,-4.495389988038994e-5,6.107183348045023e-8,0.003538652157842681,-4.477026159769317e-5,6.074602879654554e-8,0.0035386688439036844,-4.47004078804151e-5,6.062170724859673e-8,0.003538726003163398,-4.4722809906257866e-5,6.065974926915645e-8,0.0035388505435425223,-4.4797903515981296e-5,6.078947944701308e-8,0.003539047874416657,-4.488281287540454e-5,6.093489620785433e-8,0.0035393068814284787,-4.4941391084842396e-5,6.103238884542969e-8,0.003539606554146499,-4.494882794965666e-5,6.103867464873075e-8,0.003539921676724328,-4.4892499760318906e-5,6.093205597538492e-8,0.003540226919719803,-4.477102781459113e-5,6.07105950251088e-8,0.0035404997394379314,-4.4592754938286915e-5,6.03893845810904e-8,0.0035407226338242614,-4.437398906963968e-5,5.999749164758063e-8,0.003540885022134315,-4.413694086471505e-5,5.957436958624628e-8,0.0035409847601478635,-4.3907158055120185e-5,5.91653320895687e-8,0.003541029039603609,-4.371029443432704e-5,5.881578782502931e-8,0.003541034222876167,-4.3568356911767184e-5,5.856451374224705e-8,0.0035410242820919035,-4.34959360356527e-5,5.843690932693798e-8,0.0035410278165807162,-4.349704460319828e-5,5.8439391136652944e-8,0.003541073866467474,-4.35631774348635e-5,5.8556051173999174e-8,0.003541186954993939,-4.367314619920436e-5,5.874856491748497e-8,0.0035413819586960823,-4.379504612211161e-5,5.895993621631804e-8,0.003541659481115643,-4.389056974908652e-5,5.9122364071120686e-8,0.0035420026717852874,-4.392188556736655e-5,5.9169501196338025e-8,0.0035423770266627625,-4.386091460591744e-5,5.9052739202674654e-8,0.003542735137307152,-4.369954534362978e-5,5.8758966934382756e-8,0.003543027709928473,-4.345726115647605e-5,5.8323693696870554e-8,0.003543219432923343,-4.318096116450492e-5,5.783045574779396e-8,0.0035433037039722254,-4.293306375151269e-5,5.7389662664115485e-8,0.003543307510625984,-4.2770211481893025e-5,5.710096925546551e-8,0.003543281657416864,-4.2722564889928e-5,5.7016803661170176e-8,0.0035432808969128654,-4.2784998811324036e-5,5.7127048886294805e-8,0.003543345083182791,-4.29237431526913e-5,5.7371094348610354e-8,0.0035434901225729534,-4.309218173774192e-5,5.766603094543882e-8,0.0035437096200434323,-4.324625449648452e-5,5.793397699501254e-8,0.003543982437111229,-4.335377416740421e-5,5.811844457672117e-8,0.003544280963361055,-4.339731616568985e-5,5.81892230593214e-8,0.003544577345674607,-4.337307492070495e-5,5.814014309175838e-8,0.0035448472547188253,-4.328818788598209e-5,5.798423922921832e-8,0.003545071945356522,-4.315800457900615e-5,5.774893393946444e-8,0.0035452395202854154,-4.300371531604833e-5,5.7471914844255585e-8,0.0035453459408502194,-4.285012265748278e-5,5.719723861116069e-8,0.0035453958923160433,-4.2723120313231096e-5,5.697084279090594e-8,0.0035454032149012556,-4.264651128545993e-5,5.683482254338785e-8,0.0035453903011499546,-4.2638151061864956e-5,5.682050114724788e-8,0.003545385835098054,-4.270593783651835e-5,5.6941284815840156e-8,0.0035454206037119564,-4.2844639289619016e-5,5.718710304786205e-8,0.003545521737679013,-4.3034763683612925e-5,5.7522579910149e-8,0.0035457064554863466,-4.3244478586494526e-5,5.7890672855239426e-8,0.0035459768841103315,-4.343484771283477e-5,5.822218243869248e-8,0.0035463175130871715,-4.35676865911608e-5,5.8449803092231185e-8,0.003546696374372438,-4.361459001005239e-5,5.852408386886376e-8,0.003547070408275864,-4.3565227278255075e-5,5.842791123349795e-8,0.0035473947092906958,-4.343266116837182e-5,5.8185596798430805e-8,0.003547634245769986,-4.3253317404532224e-5,5.786248016398101e-8,0.003547775128552845,-4.307980993012999e-5,5.755198880500784e-8,0.0035478310759871168,-4.296686019185961e-5,5.7350653828112885e-8,0.003547840931561206,-4.295416001320256e-5,5.732790326738767e-8,0.003547856465191098,-4.305323561587963e-5,5.7503072995357236e-8,0.0035479251065484753,-4.3244764513410865e-5,5.7840967381065036e-8,0.0035480755467052556,-4.3487437490787506e-5,5.82678059755974e-8,0.003548312159234838,-4.3733132149183526e-5,5.869821561074207e-8,0.003548618609759482,-4.394085957403888e-5,5.9059893258797215e-8,0.0035489665155445534,-4.4084657379925696e-5,5.930742385274079e-8,0.0035493243155301293,-4.4155064485646884e-5,5.94246850590516e-8,0.0035496635912923074,-4.415657349882108e-5,5.942017343141657e-8,0.003549962454933137,-4.4103723515838815e-5,5.932002348157367e-8,0.0035502068853032385,-4.401745537774121e-5,5.91615814739689e-8,0.0035503910919313167,-4.392223541541534e-5,5.898836758135166e-8,0.0035505176599334156,-4.3843716170544275e-5,5.884594653272736e-8,0.0035505977261718136,-4.3806355923926305e-5,5.877765373835154e-8,0.0035506509029348764,-4.38304481117814e-5,5.881923373523053e-8,0.0035507042417583052,-4.392838644885185e-5,5.8992150582505356e-8,0.003550789375607358,-4.4100629561268414e-5,5.9296460179193444e-8,0.0035509372747178996,-4.4332623510118206e-5,5.970549942120029e-8,0.0035511709877155606,-4.459455929913146e-5,6.016568287046157e-8,0.0035514981633926815,-4.4845618151110135e-5,6.060425933750863e-8,0.0035519062473257645,-4.504285818124529e-5,6.094521953949166e-8,0.003552363010141798,-4.515265199572119e-5,6.112959670344877e-8,0.0035528232538145662,-4.516091931665212e-5,6.113348597576136e-8,0.0035532400588138987,-4.5078419810363994e-5,6.097717700290937e-8,0.0035535771481694945,-4.4939099071296303e-5,6.07218955472018e-8,0.0035538186514130496,-4.479186991256323e-5,6.045492489427308e-8,0.0035539735035672354,-4.4688098423139305e-5,6.02672442098929e-8,0.0035540731748337205,-4.466810631879039e-5,6.022963420680442e-8,0.0035541630731403067,-4.475043551216551e-5,6.037388305148787e-8,0.003554289865126375,-4.4927280773815736e-5,6.068503341769779e-8,0.0035544886846951913,-4.516779476639947e-5,6.110755581298996e-8,0.0035547745839082123,-4.542805241964009e-5,6.156319330980759e-8,0.0035551408759050616,-4.5663759910920776e-5,6.197350799964669e-8,0.003555563963135248,-4.5841008864221135e-5,6.227883337795943e-8,0.0035560116876657694,-4.5941979139417047e-5,6.24482093400329e-8,0.0035564516280192447,-4.596527201117455e-5,6.24798008660841e-8,0.003556857010155012,-4.592266312849646e-5,6.239502440655055e-8,0.003557209714814007,-4.5834565631833704e-5,6.223046308066282e-8,0.003557501080364987,-4.572581403912075e-5,6.203040815733011e-8,0.0035577315537230697,-4.562240269450946e-5,6.184110140786349e-8,0.003557910036471095,-4.554903608560832e-5,6.170637764909142e-8,0.0035580533024840793,-4.552692161730423e-5,6.166368747736406e-8,0.0035581853049642667,-4.557119728743023e-5,6.173946177102266e-8,0.0035583356940717664,-4.568768485662425e-5,6.194333838364082e-8,0.0035585365708927026,-4.586927857225371e-5,6.226185510588425e-8,0.0035588166627198116,-4.609326999183041e-5,6.265390851272246e-8,0.003559193137323904,-4.632193829336071e-5,6.30520372167614e-8,0.003559663281878733,-4.650876999059089e-5,6.337362542760012e-8,0.003560200245713937,-4.661063021140253e-5,6.354254648899662e-8,0.0035607569317794813,-4.6602396654738655e-5,6.351506594055439e-8,0.003561278648384015,-4.6487494514614917e-5,6.32983887923139e-8,0.0035617199935504846,-4.6298558243764545e-5,6.29516014692535e-8,0.003562058627582537,-4.608741314362649e-5,6.256758166751812e-8,0.0035623004672044175,-4.5909078533960046e-5,6.224430829280521e-8,0.003562475581175662,-4.5806486601264316e-5,6.205760310203278e-8,0.0035626279001984354,-4.580067735294027e-5,6.204384806523509e-8,0.003562802954124633,-4.5888015756848204e-5,6.219537779330008e-8,0.003563037055132452,-4.6043654273636875e-5,6.246701201447148e-8,0.003563350070700666,-4.622932203076322e-5,6.27901620525839e-8,0.0035637427913076075,-4.6403085941301916e-5,6.309025042503193e-8,0.003564198880158738,-4.6528682381631946e-5,6.330320173165173e-8,0.0035646903766327347,-4.658232632749611e-5,6.338736538669235e-8,0.0035651848849890845,-4.6555732749513495e-5,6.332870370697999e-8,0.0035656523705938485,-4.645535269046844e-5,6.313929883122431e-8,0.0035660700713561725,-4.6298937321714985e-5,6.285117367268997e-8,0.003566425004528302,-4.611096934697695e-5,6.250815533966789e-8,0.0035667143995241142,-4.591827694533483e-5,6.215809174271331e-8,0.0035669448573334944,-4.574655007561588e-5,6.184666832943819e-8,0.0035671310343054594,-4.561778706202556e-5,6.161284724828767e-8,0.0035672942787601126,-4.554824175451044e-5,6.148516952915002e-8,0.0035674611803288114,-4.5546361387194964e-5,6.147805454901015e-8,0.003567661543033928,-4.5610385548273515e-5,6.158757512312564e-8,0.003567924912442449,-4.5725767445714075e-5,6.178702994408387e-8,0.0035682748142848095,-4.5863544983274e-5,6.202428486357496e-8,0.0035687207877180566,-4.598192357438832e-5,6.222480065079293e-8,0.0035692503506583244,-4.603366023380281e-5,6.230484445613422e-8,0.0035698255742100237,-4.597995195287227e-5,6.219611092854864e-8,0.0035703895352063105,-4.580682740172019e-5,6.187471998839677e-8,0.003570883632004423,-4.553525834522834e-5,6.137904502638934e-8,0.003571268864222055,-4.521699225352601e-5,6.080211684283172e-8,0.0035715396695708015,-4.4916408899932836e-5,6.025908338968015e-8,0.003571723198393817,-4.468799023289393e-5,5.984686372144387e-8,0.003571866379697392,-4.456067955242553e-5,5.961625196141818e-8,0.0035720191409290983,-4.453406964456066e-5,5.956536150564443e-8,0.0035722211083410766,-4.458410992868764e-5,5.965019352482582e-8,0.003572494625911943,-4.4673173061435514e-5,5.980293252365561e-8,0.0035728434568544545,-4.476028636567257e-5,5.995034390494367e-8,0.0035732552997467812,-4.480936493091201e-5,6.002839604720158e-8,0.003573706429317807,-4.479480285769821e-5,5.99920413721776e-8,0.0035741673042217212,-4.4704415364411226e-5,5.982025244393188e-8,0.0035746082437256763,-4.45398457623661e-5,5.951659167339322e-8,0.003575004335958261,-4.43147481520429e-5,5.9105889956792483e-8,0.003575338940318722,-4.405137481478573e-5,5.862814161090186e-8,0.0035756054724064797,-4.3776367002100296e-5,5.81310100746709e-8,0.0035758075061845546,-4.3516565870462726e-5,5.766237414128631e-8,0.0035759576042431298,-4.32955011747464e-5,5.726406668644314e-8,0.003576075473322457,-4.313078064462699e-5,5.696719548910158e-8,0.0035761858511276887,-4.3032185858342236e-5,5.678871564724287e-8,0.0035763162079560256,-4.300017921430965e-5,5.672876610846801e-8,0.0035764940524594456,-4.3024605140873026e-5,5.6768438605918676e-8,0.0035767432881861085,-4.30836704446525e-5,5.686814868430869e-8,0.0035770790275487753,-4.314407216803266e-5,5.6968106744896594e-8,0.0035775010573515023,-4.3164050813275044e-5,5.699394484154996e-8,0.003577987803146952,-4.310136895375068e-5,5.6870952361826546e-8,0.0035784948165471183,-4.292678335936257e-5,5.65479221696561e-8,0.003578962840272767,-4.2639405852658924e-5,5.602429479005061e-8,0.003579336851006414,-4.227498438897039e-5,5.536473452635238e-8,0.003579588685688661,-4.18979968512765e-5,5.468488805835137e-8,0.0035797296080622783,-4.1578011198993515e-5,5.4109049105691114e-8,0.0035798042114301037,-4.1363105981440804e-5,5.372259413331688e-8,0.0035798702564199783,-4.126542984896543e-5,5.354626012529212e-8,0.0035799774382410184,-4.126391236459329e-5,5.354128307652321e-8,0.003580154993927935,-4.1317791469285e-5,5.363395239974795e-8,0.003580409608935486,-4.1381581597515776e-5,5.374262013811699e-8,0.003580729783643385,-4.1415934670145685e-5,5.3797139133405634e-8,0.003581092408746188,-4.139336320909661e-5,5.3748926352074026e-8,0.003581469034566333,-4.130007224972205e-5,5.357400193982709e-8,0.0035818310034735766,-4.1135487314135264e-5,5.3271956810880735e-8,0.0035821534692491988,-4.0910476824976e-5,5.286268340386592e-8,0.003582418418358619,-4.06446935945381e-5,5.238161243589318e-8,0.0035826166797022483,-4.0363280171443215e-5,5.187384845082181e-8,0.00358274884529989,-4.009317462540421e-5,5.1387588037206476e-8,0.003582824995614943,-3.985933882274082e-5,5.096737917280055e-8,0.0035828632611508504,-3.9681384105172434e-5,5.064806914993073e-8,0.0035828875139954875,-3.957098298811167e-5,5.045014818249678e-8,0.003582924529544475,-3.953016479695639e-5,5.0376688098463605e-8,0.00358300081862799,-3.955047708564117e-5,5.0411877426842314e-8,0.0035831392261010796,-3.961300640930363e-5,5.052117648958689e-8,0.003583355214352302,-3.968931328155379e-5,5.065319072165797e-8,0.0035836526718863154,-3.974377438611344e-5,5.074407946967609e-8,0.003584019676710392,-3.973841845099247e-5,5.072633320424865e-8,0.0035844258489106545,-3.9641235948389545e-5,5.0543575221023724e-8,0.003584824176308066,-3.943762986883524e-5,5.0170788891649215e-8,0.0035851605988330357,-3.914173842671066e-5,4.963424297277142e-8,0.0035853918960880448,-3.880043670747472e-5,4.9018405921792256e-8,0.003585505322328108,-3.848249328671764e-5,4.844644654517097e-8,0.003585527515563994,-3.8253569503164206e-5,4.803549689485371e-8,0.0035855144146158527,-3.8149888897543195e-5,4.784960245800021e-8,0.0035855273906091824,-3.8166487904675314e-5,4.787887836846632e-8,0.0035856104495281117,-3.8265157169492204e-5,4.805402080142565e-8,0.0035857798816200707,-3.8393560363288984e-5,4.828082047147677e-8,0.0035860268763078557,-3.8503227747035004e-5,4.847250586230702e-8,0.003586326680961035,-3.855986372475001e-5,4.8568113786697065e-8,0.003586648121636525,-3.8546152355993225e-5,4.853728942981486e-8,0.0035869605978639182,-3.846010828728895e-5,4.837710529272839e-8,0.003587238303345829,-3.8311783073421156e-5,4.810602981932446e-8,0.0035874625495865785,-3.811982896336047e-5,4.775775329407981e-8,0.00358762304655042,-3.790829412712801e-5,4.7375493462969575e-8,0.003587718543212155,-3.7703539314087314e-5,4.700651815697953e-8,0.0035877568854504843,-3.753109690746856e-5,4.669652828927809e-8,0.0035877543189045003,-3.741240911193318e-5,4.648378792509094e-8,0.0035877337821993926,-3.736170012036886e-5,4.639348279578213e-8,0.003587722146397466,-3.738348798138e-5,4.643324183247487e-8,0.003587746637258956,-3.747117499085622e-5,4.659063494568057e-8,0.0035878308010265218,-3.760702188597041e-5,4.683321176191194e-8,0.0035879904688035855,-3.776372946249842e-5,4.7111485215557924e-8,0.0035882302134709367,-3.790765307608103e-5,4.736488113389693e-8,0.0035885407027646038,-3.800358818517712e-5,4.753047496748133e-8,0.0035888975265631912,-3.802122612155703e-5,4.755460390198331e-8,0.003589262683625903,-3.7943134492679234e-5,4.740703403510289e-8,0.003589590313060849,-3.777295305645327e-5,4.709535929441549e-8,0.0035898376636516174,-3.754070148435225e-5,4.6674180657203245e-8,0.003589979939820703,-3.730052104784748e-5,4.6240824276023414e-8,0.003590023371945228,-3.711708048632642e-5,4.5910925049693536e-8,0.0035900077501635065,-3.7042871910765236e-5,4.577784781514526e-8,0.0035899933020088546,-3.709707415007798e-5,4.587502096050476e-8,0.003590037208575344,-3.725873614994456e-5,4.6163979998570615e-8,0.0035901730111987757,-3.747812082032692e-5,4.655494611376622e-8,0.0035904033060219416,-3.769784537258867e-5,4.6944876133643913e-8,0.003590705852666982,-3.787137405914086e-5,4.725061888805473e-8,0.0035910458330059257,-3.7972004750569304e-5,4.7424881917477886e-8,0.0035913870901548824,-3.799305368319623e-5,4.7456342834723396e-8,0.003591699210907479,-3.794340612840332e-5,4.736148608065085e-8,0.0035919606768198722,-3.7842095199116786e-5,4.7174801397497153e-8,0.0035921596171359957,-3.7713708795726786e-5,4.6940568127754947e-8,0.003592293558379161,-3.758490512066759e-5,4.6706667488679346e-8,0.0035923688823323,-3.7481625279828046e-5,4.651961895285797e-8,0.0035924001126666325,-3.742650014676788e-5,4.641991343171655e-8,0.003592408782381076,-3.743612894819133e-5,4.643708427178588e-8,0.0035924214411165024,-3.751830128528744e-5,4.6584688608919025e-8,0.0035924664696293106,-3.7669705308534085e-5,4.685621045027915e-8,0.003592569774155505,-3.7874901547291835e-5,4.7223301285490726e-8,0.003592749902450613,-3.810728859606727e-5,4.763765035237718e-8,0.0035930135281971444,-3.833251364146036e-5,4.8037268016193544e-8,0.003593352477999401,-3.85142094254474e-5,4.835692293551611e-8,0.003593743318325711,-3.862124028617287e-5,4.8541211620976406e-8,0.0035941500803349773,-3.8635219635304036e-5,4.855799005285224e-8,0.0035945303054739485,-3.8556856029829644e-5,4.8409563859566875e-8,0.0035948441441678958,-3.84093266238022e-5,4.8138450958546775e-8,0.0035950652932258955,-3.823653707192244e-5,4.7823971958565097E-08,0.003595191000352243,-3.809453371200407e-5,4.7566669363102354e-8,0.003595246796889517,-3.803631027123147e-5,4.7461060314247433E-08,0.0035952816700368603,-3.809404780623166e-5,4.756396298769029e-8,0.0035953529476908017,-3.826654280703843e-5,4.7872228760978966e-8,0.0035955064360887307,-3.851914359448242e-5,4.832290540180464e-8,0.0035957614102684605,-3.8797097685212365e-5,4.8817364790469434e-8,0.0035961074408753227,-3.904519065318432e-5,4.925659081088645e-8,0.0035965125426542463,-3.922380619036841e-5,4.9569925989950274e-8,0.0035969362675940465,-3.9315732962972006e-5,4.972712682605005e-8,0.003597341109482439,-3.932441886961113e-5,4.9735041797245097e-8,0.0035976991308152764,-3.9267828750470704e-5,4.962644042986901e-8,0.0035979941492756103,-3.917176770050048e-5,4.944797265987095e-8,0.0035982212646163817,-3.906461231436291e-5,4.925073309806581e-8,0.0035983853864858173,-3.8973731332623625e-5,4.9083882869826816e-8,0.003598499705108412,-3.8923037020490345e-5,4.899027237780294e-8,0.003598584313547959,-3.893093107139329e-5,4.900272753215885e-8,0.003598664665047769,-3.900814200916675e-5,4.914012707459969e-8,0.003598769295912446,-3.91554181102269e-5,4.940325446403414e-8,0.003598926296552057,-3.936159589408526e-5,4.9771395938974046e-8,0.0035991584178781378,-3.9603052569638225e-5,5.020149262688757e-8,0.0035994774570306106,-3.9845742495034574e-5,5.063196470603437e-8,0.003599879456446016,-4.0050595060088164e-5,5.099254875986903e-8,0.0036003427551529487,-4.018188155414745e-5,5.121939647495595e-8,0.0036008305267239238,-4.021666105614067e-5,5.127201267350899e-8,0.003601298082359539,-4.015241628723848e-5,5.114683795044416e-8,0.0036017034785005065,-4.001010080325409e-5,5.0882498429844205e-8,0.0036020186446318633,-3.983102151691306e-5,5.055393791953197e-8,0.00360223784043595,-3.966773922720605e-5,5.025583994965174e-8,0.0036023807275160397,-3.957088011118183e-5,5.0078834765566855e-8,0.0036024884440489483,-3.957514576006304e-5,5.008445593779248e-8,0.003602612836630004,-3.9688759093846825e-5,5.028643421396089e-8,0.003602801507346342,-3.9890448396384285e-5,5.064559582445518e-8,0.0036030837132397233,-4.013591224250133e-5,5.1081729897139555e-8,0.0036034625787910108,-4.037175117016467e-5,5.149873123423126e-8,0.0036039164745840613,-4.0551277524241955e-5,5.181297742668326e-8,0.0036044080529050305,-4.0646004294966926e-5,5.197384946590186e-8,0.00360489619893693,-4.064945869958866e-5,5.197041780922286e-8,0.0036053460251226866,-4.0574082061552914e-5,5.182570742191499e-8,0.0036057344318386826,-4.044453999591332e-5,5.158455566701788e-8,0.0036060514579108944,-4.029075668722807e-5,5.130104481965624e-8,0.003606299011004411,-4.01424970484346e-5,5.1028778692332877e-8,0.0036064885833287518,-4.0025849226308426e-5,5.081459498933569e-8,0.003606638973317254,-3.9961099891688534e-5,5.069476213733481e-8,0.003606774332411993,-3.9961203232245695e-5,5.069221405358963e-8,0.0036069222452277806,-4.003023028212907e-5,5.081374865009258e-8,0.0036071112182922568,-4.016168303508934e-5,5.1047028727656355e-8,0.003607366963232316,-4.033714988858951e-5,5.135826999643147e-8,0.0036077072303672525,-4.0526398781894345e-5,5.169257162187404e-8,0.0036081358410376746,-4.069044856608033e-5,5.19795998409735e-8,0.00360863791472181,-4.0788768684664725e-5,5.214662964419998e-8,0.0036091792602710175,-4.079000858969095e-5,5.2137837160242114e-8,0.003609712280943959,-4.068309768113012e-5,5.1934170132578293e-8,0.0036101880918484254,-4.04838562463079e-5,5.1565076095717744e-8,0.0036105710604826644,-4.0233135214053623e-5,5.11049366675387e-8,0.0036108500263461432,-3.998610781681087e-5,5.065355467128838e-8,0.003611041677968052,-3.9796540409886596e-5,5.0307660035659015e-8,0.0036111851665100313,-3.970186618515915e-5,5.0134017422303575e-8,0.0036113304864999287,-3.971382372907988e-5,5.0152753919674675e-8,0.0036115247250119607,-3.98167918000583e-5,5.033467938084641e-8,0.0036118001491949494,-3.997345877334354e-5,5.061180843179813e-8,0.003612167114637999,-4.013564216404726e-5,5.089703004119631e-8,0.0036126132814578962,-4.025692196720492e-5,5.110687626163271e-8,0.0036131087640671185,-4.0303479742982214e-5,5.118093281193777e-8,0.0036136150876857724,-4.026034802700086e-5,5.109292725088119e-8,0.003614094856008835,-4.0132016043704154e-5,5.085165351686192e-8,0.0036145193074628326,-3.993836208888382e-5,5.0493512681573206e-8,0.003614872292763547,-3.9708210576448246e-5,5.0070825982924494e-8,0.003615150815762236,-3.947285164647236e-5,4.9640137095099506e-8,0.0036153632808230353,-3.926096931140428e-5,4.9253097195019005e-8,0.0036155267616432177,-3.909538048400595e-5,4.89506275147321e-8,0.0036156642392711075,-3.8991230807476714e-5,4.8759693003331155e-8,0.0036158021749105296,-3.895495080175904e-5,4.86914245950835e-8,0.0036159682275933073,-3.8983383111791493e-5,4.873955389149923e-8,0.003616188577386115,-3.9062911493915725e-5,4.887889729439448e-8,0.0036164842465590077,-3.9168981167351876e-5,4.906461395007111e-8,0.003616866127419069,-3.926707099410478e-5,4.9234122993500053E-08,0.003617329348913702,-3.931673398289274e-5,4.9314522167269587e-8,0.003617849150796829,-3.928001916208648e-5,4.923780665633049e-8,0.003618381798653043,-3.913360777112033e-5,4.896267227430695e-8,0.0036188735440883186,-3.888055553865431e-5,4.849554188132768e-8,0.003619276853702225,-3.855491658006466e-5,4.789873129478229e-8,0.0036195676184713646,-3.821416389457841e-5,4.7276580612196774e-8,0.0036197545025373444,-3.792090095161403e-5,4.6742254073388355e-8,0.0036198753513412853,-3.772222272857822e-5,4.6380371688515686e-8,0.0036199830801991757,-3.763623905030227e-5,4.6222755173165736e-8,0.00362012849213772,-3.7650144684676776e-5,4.624521707582522e-8,0.003620346940104583,-3.77278873639625e-5,4.6381754134727366e-8,0.0036206519317770578,-3.7822429509832206e-5,4.654694600928876e-8,0.0036210353347296935,-3.788800232657244e-5,4.6658156643896576e-8,0.0036214722356083732,-3.7889552847069945e-5,4.665250017723497e-8,0.0036219282737146377,-3.7808250334028e-5,4.6496606350338104e-8,0.003622367558528604,-3.764294604213074e-5,4.618907856043481e-8,0.003622759613618764,-3.740807222574171e-5,4.5756568470016735e-8,0.003623084197594277,-3.7129000539556704e-5,4.524531717165578e-8,0.0036233334897944123,-3.6836271033352585e-5,4.471070197478162e-8,0.003623511822352105,-3.656004150987419e-5,4.42072171491852e-8,0.003623633625770037,-3.632568696345636e-5,4.378055463898182e-8,0.0036237204746564565,-3.615095303416537e-5,4.3462496938331666e-8,0.0036237980238943072,-3.604451542869379e-5,4.326833725239851e-8,0.0036238932087061873,-3.600542881626248e-5,4.3195891834918523e-8,0.0036240316260941043,-3.6022998605292114e-5,4.322528366433578e-8,0.003624234754252283,-3.6076927455552074E-05,4.331926852948421e-8,0.0036245165668879796,-3.613800749232242e-5,4.34246123367742e-8,0.003624879311897084,-3.617023187311202e-5,4.3476066000601294e-8,0.0036253090835464646,-3.6135726391495956e-5,4.3405390637871034e-8,0.0036257732585274127,-3.6003592967351125e-5,4.315733397260209e-8,0.0036262232058954036,-3.576186980901324e-5,4.271111422394686e-8,0.003626605331546473,-3.542823247726426e-5,4.209956869519151e-8,0.003626879436036661,-3.50518579454549e-5,4.1412337399755736e-8,0.0036270365079126123,-3.470071004044956e-5,4.0772704917605835e-8,0.0036271047904969573,-3.443736111457935e-5,4.029373159298715e-8,0.0036271389316380864,-3.429581521273013e-5,4.003629528591115e-8,0.0036271983746661196,-3.427189565117347e-5,3.999186380888534e-8,0.0036273272627723543,-3.433001504928174e-5,4.009507060595036e-8,0.0036275443605000503,-3.441929039714666e-5,4.02532013146905e-8,0.003627843559349204,-3.448978456372097e-5,4.037574941419381e-8,0.0036282007307444626,-3.450355291645972e-5,4.039436204166938e-8,0.0036285824334346233,-3.443962968437811e-5,4.027168052144104e-8,0.003628953774846586,-3.4294406238919776e-5,4.000181674287031e-8,0.003629284453436167,-3.4079224683629005e-5,3.960585055025596e-8,0.00362955288864694,-3.381643465683662e-5,3.912462715686188e-8,0.0036297485036715003,-3.353465476085004e-5,3.8610171191587416e-8,0.0036298722480067286,-3.3263883330298314e-5,3.811684927278125e-8,0.003629935574821214,-3.303104643643447e-5,3.769332757952957e-8,0.003629958188257625,-3.285642390889165e-5,3.737611903004188e-8,0.003629964993502037,-3.275128511796277e-5,3.7185320702803963e-8,0.0036299828010852926,-3.271683137367501e-5,3.712271268820873e-8,0.003630037189355566,-3.274419552984249e-5,3.7171770693712e-8,0.003630149597490292,-3.281517977483511e-5,3.729903127915843e-8,0.0036303345419651353,-3.290362286671258e-5,3.7456641443449155e-8,0.0036305967997701106,-3.297753462876925e-5,3.758635247116539e-8,0.003630928513207681,-3.300252642506156e-5,3.762587782766384e-8,0.0036313068265694214,-3.294744940956532e-5,3.7519188323039196e-8,0.00363169380297549,-3.2792780456482834e-5,3.7231652891866554e-8,0.0036320412779389313,-3.254062980327011e-5,3.676798183842747e-8,0.0036323028298620714,-3.222229600651305e-5,3.618566999286661e-8,0.00363245144150968,-3.1896535693968474e-5,3.559165692670533e-8,0.003632494924818845,-3.163343128727202e-5,3.5112974053962996e-8,0.003632477752238004,-3.148784739433187e-5,3.4848610971418145e-8,0.0036324645616411712,-3.147677766139223e-5,3.4828549478256566e-8,0.003632513929295136,-3.1574620316264846e-5,3.5005434477029905e-8,0.0036326579319382944,-3.1727711619258e-5,3.528122902984301e-8,0.0036328967617592235,-3.187682011716218e-5,3.554823526809591e-8,0.0036332061434049393,-3.197502524181992e-5,3.572156454636925e-8,0.0036335495974229026,-3.1995847248725226e-5,3.575374279393732e-8,0.003633889293870905,-3.19333227910892e-5,3.563461873953822e-8,0.003634193172744235,-3.17978842240923e-5,3.538369154094479e-8,0.003634438615965457,-3.161109030916799e-5,3.504045625380042e-8,0.003634613855985011,-3.1400671454106465e-5,3.465541572534082e-8,0.003634718071699902,-3.11961575856113e-5,3.428219175465637e-8,0.003634760562279025,-3.102500639946222e-5,3.3970535921702535e-8,0.0036347591134491177,-3.0909251987672765e-5,3.376025962304962e-8,0.003634737607805422,-3.086278268132625e-5,3.367629517795057e-8,0.0036347229490649663,-3.088948453492992e-5,3.372533325761154e-8,0.003634741563228235,-3.0982560065987805e-5,3.389460784514429e-8,0.003634815901229414,-3.112512713113596e-5,3.4153020033679004e-8,0.0036349612766972193,-3.129198170965659e-5,3.4454394956192596e-8,0.003635183245992869,-3.145240784677646e-5,3.4742669582784826e-8,0.0036354757079425717,-3.1573956992053166e-5,3.495886526255861e-8,0.0036358199160614058,-3.1627212256825974e-5,3.504983415027823e-8,0.0036361849045063073,-3.159171660721317e-5,3.4979039620345153e-8,0.003636530479561921,-3.1462895172653124e-5,3.473901011215707e-8,0.0036368142578559253,-3.1258495477149596e-5,3.436280051338025e-8,0.003637003387374721,-3.102115681331883e-5,3.3928392231956515e-8,0.003637088755021439,-3.081237158304347e-5,3.35475459720963e-8,0.003637094946225761,-3.069500019812094e-5,3.333402234292594e-8,0.0036370770559699434,-3.0708848592774254e-5,3.335935424561485e-8,0.0036371013292986853,-3.085231309250355e-5,3.361973574732224e-8,0.0036372186076369544,-3.108268917674487e-5,3.4036836713625407e-8,0.0036374461301725914,-3.133543760619602e-5,3.449300493597974e-8,0.0036377666800752285,-3.154966294649507e-5,3.4877648547478624e-8,0.003638141297749838,-3.1685759118405125e-5,3.511925103365506e-8,0.0036385252843173046,-3.173024090401332e-5,3.5193980505349496e-8,0.0036388799750885084,-3.1691380373824776e-5,3.5117541386689996e-8,0.003639178463924923,-3.1591479016366276e-5,3.493096321710203e-8,0.003639406831918024,-3.145964120367891e-5,3.4687408289269027e-8,0.0036395631103395176,-3.132641488984484e-5,3.444246310972407e-8,0.003639655535314708,-3.122008096808154e-5,3.4247456211883176e-8,0.0036397006665107633,-3.1163893875378406e-5,3.414448139816457e-8,0.003639721329488939,-3.1173806420359784e-5,3.416226804857164e-8,0.0036397441644748767,-3.125655767899938e-5,3.431270209771732e-8,0.003639796568166988,-3.140832386339877e-5,3.458839076722247e-8,0.0036399030331303018,-3.161441580614675e-5,3.49621599593727e-8,0.0036400812861970703,-3.1850493516183555e-5,3.538933414193512e-8,0.0036403388783366928,-3.2085469069802425e-5,3.581309683606768e-8,0.003640670899708472,-3.228595888933305e-5,3.617266898678714e-8,0.003641059410890908,-3.242184074945234e-5,3.6413480741849684e-8,0.003641474976614793,-3.2472192397990765e-5,3.6497992784001544e-8,0.0036418804736073327,-3.243081777099901e-5,3.6415684316993066e-8,0.0036422373048892133,-3.231046066567557e-5,3.619054998193656e-8,0.003642513965287651,-3.2144261682321465e-5,3.588351146600024e-8,0.0036426959856221573,-3.198235682061668e-5,3.5586005065773693e-8,0.0036427944977556605,-3.1881697208743154e-5,3.5401356745524745e-8,0.0036428486849075714,-3.188933045907144e-5,3.5414444145402196e-8,0.0036429173685921887,-3.202403752604784e-5,3.565852233264122e-8,0.0036430596414088368,-3.226577445343364e-5,3.609629779052436e-8,0.0036433124954249867,-3.2561078847616284e-5,3.66299793816928e-8,0.0036436776177795477,-3.284337212027593e-5,3.713830880496045e-8,0.0036441242313400286,-3.3057030277970586e-5,3.7520345040000954e-8,0.0036446041810241324,-3.317277180321848e-5,3.772337507096917e-8,0.0036450692490085615,-3.3189738563198884e-5,3.7746545722749065e-8,0.003645482899676809,-3.3128175256394194e-5,3.7627357042686266e-8,0.0036458246434632187,-3.301933774306142e-5,3.7423151774873677e-8,0.003646089234413236,-3.289707990184836e-5,3.71957515176344e-8,0.003646283665094115,-3.279244336538491e-5,3.7001641525103554e-8,0.0036464239349174375,-3.273067656021924e-5,3.6886607019548715e-8,0.0036465323149864697,-3.272957018214073e-5,3.6882747854165715e-8,0.0036466349961541663,-3.279825429446103e-5,3.700630533575309e-8,0.0036467596710251142,-3.2936106766617314e-5,3.725568811188398e-8,0.0036469325807821826,-3.313193807407561e-5,3.7610026698915855e-8,0.0036471748124150484,-3.3364069240662704e-5,3.802938859382088e-8,0.003647498169133209,-3.360210126412473e-5,3.845809149088258e-8,0.0036479015316435363,-3.38109253939106e-5,3.883209072712449e-8,0.003648368986541947,-3.395689666898082e-5,3.909027582893097e-8,0.003648870921029724,-3.401521748118757e-5,3.9187927000580045e-8,0.0036493686380024244,-3.397675991479839e-5,3.91090927084104e-8,0.0036498219897588453,-3.385230235314705e-5,3.887418894134722e-8,0.0036501985693956885,-3.367263505175776e-5,3.854000701640252e-8,0.0036504824684245895,-3.348382883038354e-5,3.819088250354824e-8,0.003650680396759058,-3.333785800459016e-5,3.792145205144569e-8,0.003650822939161007,-3.3279840876376515e-5,3.781338373671198e-8,0.003650959134371577,-3.3334613467666114e-5,3.791106516073476e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json new file mode 100644 index 000000000..3f54533a6 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_23.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":23000,"numberOfSamples":1000,"samples":[0.003651144035305788,-3.3496975736922465e-5,3.820410327566936e-8,0.0036514219143992843,-3.3730554777606135e-5,3.862552436820353e-8,0.0036518112676496577,-3.397791609056264e-5,3.907035721036122e-8,0.00365229870095008,-3.417907449598782e-5,3.9429383363913e-8,0.00365284489977173,-3.4290356787269744e-5,3.962343833009104e-8,0.0036533992613388363,-3.429527055965991e-5,3.962310443890886e-8,0.003653915601993734,-3.4204210437811016e-5,3.9448034728001705e-8,0.0036543625588809866,-3.404606217387052e-5,3.915149562803171e-8,0.003654726821743164,-3.385745548023324e-5,3.880065521411588e-8,0.003655011114586897,-3.367402646076845e-5,3.846060844958942e-8,0.003655229952491537,-3.352516388562213e-5,3.818482941081412e-8,0.0036554053665251193,-3.343165583497147e-5,3.8010946814686524e-8,0.0036555634966590643,-3.3404964167691095e-5,3.7959478606448984e-8,0.0036557319972541605,-3.3447035834001456e-5,3.803352192134055e-8,0.0036559377077366316,-3.355009646938942e-5,3.821840523078073e-8,0.003656203941986329,-3.3696494348695236e-5,3.848145228658821e-8,0.0036565469978612378,-3.3859223781751256e-5,3.877301569526761e-8,0.0036569720596978405,-3.4004124438745524e-5,3.9030579556823116e-8,0.003657469498455847,-3.40947073072433e-5,3.918763315500793e-8,0.003658013393850613,-3.409978236972752e-5,3.918760770228968e-8,0.0036585642841328063,-3.400250012732713e-5,3.9000338042948336e-8,0.003659077039174998,-3.380774452480385e-5,3.8635466490843415e-8,0.0036595124517896076,-3.354428513728769e-5,3.8146233975437406e-8,0.0036598488695074555,-3.325957393919969e-5,3.761980345160911e-8,0.0036600895177045143,-3.30080589998171e-5,3.7155744789631976e-8,0.0036602626699706706,-3.2836659874036776e-5,3.6839414480127626e-8,0.0036604145345912036,-3.277203283919482e-5,3.671875744486885e-8,0.003660597076071134,-3.281332359526204e-5,3.679128814107534e-8,0.0036608541980586175,-3.293230507705976e-5,3.700462952878297e-8,0.003661210012998719,-3.308093000187256e-5,3.7270537712529526e-8,0.003661662575751951,-3.320440094368456e-5,3.74888633727299e-8,0.003662185161327315,-3.325597408349231e-5,3.7574542846225874e-8,0.003662734729255613,-3.320874898829924e-5,3.747900861351535e-8,0.0036632644530644296,-3.3060666580031256e-5,3.719917570818271e-8,0.003663735688217234,-3.283177311008349e-5,3.677230797634811e-8,0.003664125550367317,-3.255600900274537e-5,3.6260899113540797e-8,0.0036644288159946347,-3.227144312843095e-5,3.573475239964142e-8,0.003664655379067319,-3.20122786606644e-5,3.525635740926294e-8,0.0036648256060508692,-3.180406776074698e-5,3.487218993328028e-8,0.0036649655917790954,-3.166186058055134e-5,3.460940215582945e-8,0.003665103342555086,-3.15901849968733e-5,3.4475849367541365e-8,0.003665265988254904,-3.158372346364206e-5,3.4461364201339914e-8,0.003665477540567749,-3.162801003528849e-5,3.4539055157405407e-8,0.0036657565338192736,-3.17000936026722e-5,3.466655892539428e-8,0.0036661130590637785,-3.176968248208968e-5,3.478820502904388e-8,0.003666545202793297,-3.180174937323968e-5,3.483986629008923e-8,0.003667035788941662,-3.1761745550580205e-5,3.475855435760227e-8,0.0036675514497473767,-3.162389916152661e-5,3.449759311569503e-8,0.003668046654744528,-3.138114071038292e-5,3.404470126419763e-8,0.0036684741721542814,-3.105261032794423e-5,3.343560777759723e-8,0.003668799974560434,-3.068345735179965e-5,3.2753539214570226e-8,0.0036690165364966303,-3.0334013759936222e-5,3.2109244036842246e-8,0.0036691474276989216,-3.0061206934846583e-5,3.160683200695938e-8,0.0036692401145173264,-2.9900241087574385e-5,3.131020806459519e-8,0.0036693503292834495,-2.9854613982101406e-5,3.122493185911916e-8,0.003669525187357138,-2.989751080207272e-5,3.1301037813817e-8,0.0036697912282753556,-2.9982013376298203e-5,3.1452001909760237e-8,0.003670149929656101,-3.0055069990531985e-5,3.15804774867729e-8,0.00367058012275416,-3.007069224005011e-5,3.160245845426072e-8,0.003671045233915078,-2.9999480736268876e-5,3.14646043020311e-8,0.00367150289146305,-2.9833136999524488e-5,3.1152343179196404e-8,0.0036719145236925356,-2.9583830819543413e-5,3.068856987855197e-8,0.0036722528819754623,-2.9279274289988172e-5,3.012451965536157e-8,0.0036725060723375516,-2.8955216659429878e-5,2.9525956515840337e-8,0.003672677754130943,-2.864755268356975e-5,2.895869275364607e-8,0.003672784291843022,-2.838594682136872e-5,2.8476927435519246e-8,0.0036728502871910297,-2.8189969093245898e-5,2.8116221838894727e-8,0.0036729039195573616,-2.8067750927584617e-5,2.7891105878276732e-8,0.0036729730472076353,-2.8016458620949784e-5,2.7795998669456532e-8,0.0036730823256591566,-2.8023639314141942e-5,2.7807699502206006e-8,0.0036732510393670506,-2.806876922500443e-5,2.7888233842029837e-8,0.0036734911388206174,-2.8124848250507907e-5,2.7987802985082756e-8,0.003673805048096844,-2.8160365318995213e-5,2.8048454388623762e-8,0.0036741831643614118,-2.8142417714421486e-5,2.800989211450284e-8,0.0036746017845311393,-2.8042014596425726e-5,2.781926303572099e-8,0.003675023305396148,-2.7842042600133794e-5,2.7445742165138232e-8,0.003675401277467576,-2.7546573380207877e-5,2.6897486202051013e-8,0.0036756920590245525,-2.718737099853137e-5,2.623340000871415e-8,0.0036758711240840844,-2.682142732552505e-5,2.555844943167183e-8,0.0036759465937811365,-2.6515692647237495e-5,2.499551903112205e-8,0.0036759605227197774,-2.6323182982489206e-5,2.464151777744949e-8,0.0036759744983032644,-2.6262593443452535e-5,2.4530039671133795e-8,0.0036760466285700347,-2.6312844659637143e-5,2.462156779143457e-8,0.0036762123044454384,-2.6424126112870143e-5,2.4824015221802194e-8,0.003676476786014314,-2.6537239075107872e-5,2.5028430559382807e-8,0.0036768192350094923,-2.6601221243758545e-5,2.5141395201407517e-8,0.0036772028513650874,-2.658386925131194e-5,2.5104237965815816e-8,0.0036775858883604795,-2.6474864491415744e-5,2.4898599976612817e-8,0.0036779306440379686,-2.6283647779182486e-5,2.4542371246482394e-8,0.003678209538973982,-2.603439997978615e-5,2.408037372138913e-8,0.003678408358108114,-2.5759783494692988e-5,2.357282896906436e-8,0.003678526948850447,-2.5494493653466036e-5,2.308351403533256e-8,0.0036785777355817883,-2.5269467883076505e-5,2.2669143006386352e-8,0.003678582593628918,-2.5107461818455048e-5,2.2371273529194018e-8,0.003678568782474355,-2.5020417507422695e-5,2.2211520779320994e-8,0.0036785647042003374,-2.500871973525351e-5,2.21902445854814e-8,0.0036785961805071692,-2.5062054156622615e-5,2.228816628316454e-8,0.003678683593958781,-2.5161266743696174e-5,2.24697994986493e-8,0.003678839813725382,-2.528068865976697e-5,2.268772363615898e-8,0.0036790686589521994,-2.5390721102639514e-5,2.28873548323344e-8,0.0036793636633603534,-2.5460766843175067e-5,2.301239734670839e-8,0.0036797070625050198,-2.5462938404665122e-5,2.3011746096490555e-8,0.0036800695540226,-2.5377224112577794e-5,2.2849032250097418e-8,0.0036804123072578534,-2.5198284596178738e-5,2.251506689142407e-8,0.003680693157902537,-2.4942526484895308E-05,2.2040681988927512e-8,0.003680878158399637,-2.4651854910035483e-5,2.150341156448466e-8,0.0036809565821238504,-2.4388619881055524e-5,2.101802531841774e-8,0.003680952179938686,-2.4218042502926116e-5,2.0704157135192892e-8,0.003680920788736872,-2.418258152607271e-5,2.063924897056901e-8,0.0036809307429876595,-2.428216159309294e-5,2.082238656290625e-8,0.0036810354111426534,-2.4473729304710523e-5,2.1173726237950885e-8,0.003681253971997315,-2.4690578711906134e-5,2.1570233191745147e-8,0.0036815697161010955,-2.4868511669727512e-5,2.1893875946001677e-8,0.00368194233743989,-2.4964629040890916e-5,2.2066135288962184e-8,0.003682324212490332,-2.496342898745231e-5,2.2059068741709067e-8,0.0036826731166814996,-2.4873277705717296e-5,2.1888636709994033e-8,0.0036829591588462465,-2.4718729832185195e-5,2.1600441398920033e-8,0.003683167023967205,-2.4532594782350245e-5,2.1255080252265367e-8,0.0036832954099022645,-2.4349370543578626e-5,2.0916081024659693e-8,0.0036833550335923348,-2.4200218198591833e-5,2.0640692551785886e-8,0.0036833658565634006,-2.410924176009306e-5,2.047307011231562e-8,0.00368335380237866,-2.4090944865297163e-5,2.0439619325797367e-8,0.0036833471475006176,-2.4148859135246296e-5,2.054650508300012e-8,0.003683372810946003,-2.4275435196936255e-5,2.07794955328708e-8,0.003683452919780664,-2.445325289733475e-5,2.110623168930102e-8,0.003683602046501696,-2.465734339942249e-5,2.1480525304410102e-8,0.003683825298735307,-2.4858264023953814e-5,2.184802813428788e-8,0.0036841172991974114,-2.5025683730293013e-5,2.2152849985111426e-8,0.0036844620856947494,-2.5132324086251992e-5,2.234486049199623e-8,0.003684833943600737,-2.5158192450841574e-5,2.2387540094785343e-8,0.0036851994497372497,-2.5095227283073492e-5,2.226654684123872e-8,0.003685521611166236,-2.495214102688181e-5,2.199854944989616e-8,0.0036857671361551635,-2.4758044853092278e-5,2.1637716007903936e-8,0.0036859169029455434,-2.4561976529873085E-05,2.127462522493109e-8,0.0036859772914223593,-2.44246555966739e-5,2.102094321803886e-8,0.0036859863765741317,-2.4400569866343113e-5,2.0976459090247287e-8,0.0036860072100742725,-2.451503865503077e-5,2.1187033549314085e-8,0.0036861059724534228,-2.4748908547852973e-5,2.1616674172997784e-8,0.003686324629094954,-2.504318975211854e-5,2.2156284356747038e-8,0.003686664486266351,-2.5323155005089623e-5,2.2668137696737203e-8,0.0036870898114569946,-2.5527244493044108e-5,2.303909962374833e-8,0.003687546149128421,-2.5624766795011134e-5,2.3213143420424893e-8,0.00368798044731879,-2.5617338941137874e-5,2.3193859568407812e-8,0.0036883539373483384,-2.5529670793774248e-5,2.3027315403045705e-8,0.0036886463867155743,-2.5397760191839542e-5,2.2780188658898496e-8,0.003688854693802478,-2.5259351496340612e-5,2.2522155643143783e-8,0.0036889891708466456,-2.5147850491353615e-5,2.231471497123031e-8,0.0036890695533378795,-2.5088946206269493e-5,2.2205016955307542e-8,0.0036891214131626097,-2.5098827308126288e-5,2.222261384963983e-8,0.0036891729137179556,-2.518329063537529e-5,2.2377841591020216e-8,0.0036892516769625227,-2.5337494371236543e-5,2.2661397865423784e-8,0.0036893816097385863,-2.554645169281843e-5,2.3045303929869593e-8,0.0036895797925711486,-2.578657672893664e-5,2.3485809567516533e-8,0.0036898538468566012,-2.6028463573269312e-5,2.392855402626147e-8,0.003690200266554174,-2.624073990187162e-5,2.431568410168666e-8,0.0036906040827712275,-2.6394652975592825e-5,2.4594312535909952e-8,0.0036910401320671615,-2.646892578198544e-5,2.4725481010514338e-8,0.0036914760290490357,-2.6454258869800837e-5,2.469246723504824e-8,0.0036918767628710283,-2.6356872170899155e-5,2.450728188668473e-8,0.003692210885339878,-2.6200462392483775e-5,2.4214168577148188e-8,0.0036924581686777775,-2.602543095805307e-5,2.388800430693621e-8,0.003692617733382483,-2.5883626505455566e-5,2.362443103435925e-8,0.0036927139953002153,-2.58271594885082e-5,2.3519158494680385e-8,0.0036927961075991973,-2.5891978747853797e-5,2.3637775773338626e-8,0.0036929267649546634,-2.6081277797364088e-5,2.398538810384016e-8,0.0036931609455419815,-2.6358161739026842e-5,2.4493348826303326e-8,0.0036935234174346435,-2.665549718890737e-5,2.5037572254635175e-8,0.003693998101314756,-2.6900775812927172e-5,2.5484402286752192e-8,0.0036945360219985063,-2.7042710855034788e-5,2.5739608547857825e-8,0.0036950760446270714,-2.7065371302568437e-5,2.57743737612283e-8,0.003695565661023816,-2.6985691375977797e-5,2.5620578062499176e-8,0.00369597274607554,-2.684069713273219e-5,2.5347080120574853e-8,0.003696287324292012,-2.667345195030066e-5,2.5033662232297028e-8,0.0036965173262114045,-2.6523010525635966e-5,2.4752456189175374e-8,0.0036966825886261623,-2.6419227346433036e-5,2.455840471365584e-8,0.003696809522700842,-2.6380986372349695e-5,2.4486064306819182e-8,0.0036969270936339123,-2.6416117172469423e-5,2.454950799475654e-8,0.0036970637745599656,-2.6521893503182198e-5,2.4743286277766767e-8,0.0036972449046433265,-2.6685737210574117e-5,2.504376987032764e-8,0.0036974900334030988,-2.6886274245188e-5,2.541115595707101e-8,0.003697810176347896,-2.7095219934198905e-5,2.5793006605434385e-8,0.0036982053804941253,-2.728057365079077e-5,2.613018555159297e-8,0.003698663356525077,-2.7411217452902692e-5,2.6365357275177697e-8,0.0036991599725369096,-2.7462484334453646e-5,2.6453253365305067e-8,0.0036996621606698965,-2.7421763096580724e-5,2.6370997112730044e-8,0.00370013328491362,-2.729281033021235e-5,2.6126029195423446e-8,0.0037005403211717563,-2.7097411250876837e-5,2.5759105766375958e-8,0.0037008616198824073,-2.6873458549975153e-5,2.534063229254157e-8,0.0037010937154705065,-2.6669054268328128e-5,2.4959623377691335e-8,0.0037012553893138378,-2.6532771677849146e-5,2.470560529795536e-8,0.003701386925754609,-2.6501162935385394e-5,2.464554459140342e-8,0.0037015427319560873,-2.65862451416973e-5,2.4800881221936585e-8,0.0037017770840136652,-2.6767600671031702e-5,2.5133175185444305e-8,0.003702126226889177,-2.6994365678892358e-5,2.5547991564237983e-8,0.003702594034496086,-2.7199503702774686e-5,2.5921361512321817e-8,0.003703149146929241,-2.7322124217394617e-5,2.6140992193989e-8,0.0037037362260185593,-2.732763109091641e-5,2.6143421934714618e-8,0.003704295665546802,-2.721607872496196e-5,2.5929372282700263e-8,0.0037047816795343263,-2.7016566312550213e-5,2.5553267597604028e-8,0.003705171555362991,-2.6773370862474705e-5,2.509745527697299e-8,0.003705465407158616,-2.6531809403462105e-5,2.4645955131628586e-8,0.0037056802842188206,-2.6328749558537203e-5,2.4266888380384873e-8,0.003705842962671197,-2.6188473724591307e-5,2.4004889346311846e-8,0.0037059839388316924,-2.6122241314280676e-5,2.3880388417301026e-8,0.0037061332623507665,-2.6129556128220352e-5,2.3892034999399584e-8,0.003706317770909461,-2.6199800840217618e-5,2.4019772205175913e-8,0.0037065589557418377,-2.6313745875571078e-5,2.4227665838511646e-8,0.003706870840343872,-2.644512355745995e-5,2.4466855843329514e-8,0.003707257688373799,-2.6562856852741105e-5,2.4679720562225874e-8,0.003707711915905993,-2.6634592082949376e-5,2.4806441695489335e-8,0.003708213120455237,-2.663186058357122e-5,2.479455939697902e-8,0.0037087294412449907,-2.6536451255494063e-5,2.4610743259413702e-8,0.003709222214515911,-2.6346543661015368e-5,2.4252099963225886e-8,0.0037096538724641567,-2.6080329046030495e-5,2.3752812169666824e-8,0.003709997524539029,-2.577492734907529e-5,2.3182040780489726e-8,0.0037102454227998637,-2.5479672505274922e-5,2.263137359655951e-8,0.0037104132986381126,-2.524481178501241e-5,2.219379012489409e-8,0.0037105385684950997,-2.5108446768208215e-5,2.1939440481081604e-8,0.003710672201591465,-2.5085405601484373e-5,2.1895121723236657e-8,0.0037108659074224157,-2.5161493732589e-5,2.2033822651041703e-8,0.0037111577917986476,-2.5295461489293446e-5,2.2278586025456243e-8,0.0037115606470070174,-2.542917933201141e-5,2.2521498478199035e-8,0.0037120571654388006,-2.5503837048517596e-5,2.2653719725711947e-8,0.003712604656330799,-2.5477070966070233e-5,2.259714366597435e-8,0.0037131481138471807,-2.5334611035146297e-5,2.232587717598007e-8,0.0037136365417578987,-2.509202414715311e-5,2.1869364929837613e-8,0.0037140360486028587,-2.4786787143587042e-5,2.1297584304020552e-8,0.0037143354755474435,-2.4465255139622436e-5,2.069678054959071e-8,0.003714544467024974,-2.4170306202152613e-5,2.0146497047207724e-8,0.003714687020580643,-2.393338515246342e-5,1.9704838425664365e-8,0.0037147941125955726,-2.3771532108372094e-5,1.9403042636394202e-8,0.0037148976705766875,-2.3687944947412868e-5,1.924662719845783e-8,0.0037150265340877417,-2.367419895466894e-5,1.9219583030809972e-8,0.003715204015883382,-2.37127525260934e-5,1.928905809182854e-8,0.0037154462776015544,-2.377915294824585e-5,1.9409457545578542e-8,0.0037157608120527794,-2.384409788521174e-5,1.9526274662557453e-8,0.0037161447586631148,-2.387597552240848e-5,1.9580823667812967e-8,0.003716583383528966,-2.384460787773986e-5,1.9517213785745727e-8,0.0037170496879362957,-2.372665990986959e-5,1.929240272445178e-8,0.003717506623292282,-2.3512366057301022e-5,1.8888665065491976e-8,0.003717913280569818,-2.3211764390501293e-5,1.832510925529357e-8,0.0037182350231976446,-2.2857213753819283e-5,1.766226069432184e-8,0.0037184549931704456,-2.2499015996168416e-5,1.69938183046161e-8,0.0037185822522199053,-2.2193400184984013e-5,1.642422937600723e-8,0.0037186520125712316,-2.1986125984029035e-5,1.6038180871423233e-8,0.0037187166025020217,-2.1897980951190913e-5,1.5873715102312037e-8,0.0037188302313518797,-2.1918094714878887e-5,1.5909975868926e-8,0.0037190333250862505,-2.200738683831528e-5,1.6073822676410523e-8,0.003719341736464505,-2.211021106517147e-5,1.6261616807192078e-8,0.003719743573072058,-2.216979978548509e-5,1.636795341593824e-8,0.0037202036700935363,-2.214280148765948e-5,1.631260873446929e-8,0.0037206737661205037,-2.2009147434640982e-5,1.6058763393847896e-8,0.0037211051970497504,-2.1775071201819367e-5,1.5618506174731158e-8,0.003721460458739193,-2.1469112666244478e-5,1.5045318183279198e-8,0.0037217205729197273,-2.113297412457324e-5,1.4417004888548999e-8,0.0037218868002361744,-2.081050254733132e-5,1.3815164650950308e-8,0.0037219772900882707,-2.0538209327698315e-5,1.3307554545741322e-8,0.003722020789722907,-2.033950176989565e-5,1.2937408851043707e-8,0.00372204987109083,-2.022296133826621e-5,1.2720322617019088e-8,0.0037220953992123298,-2.018363795951063e-5,1.2646747001885697e-8,0.0037221828649194387,-2.0205878245740093e-5,1.26873047206367e-8,0.0037223303313133104,-2.02664502220618e-5,1.2798609312135926e-8,0.003722547317866394,-2.0337344535813425e-5,1.292845264550573e-8,0.0037228339677174557,-2.0388317730423293e-5,1.3020518278734751e-8,0.003723180190839855,-2.0389705420379754e-5,1.3019629712220013e-8,0.0037235650128087322,-2.0316187736311858e-5,1.2878799919059847e-8,0.003723957027956693,-2.0152005616268402e-5,1.256897561523051e-8,0.003724317479797812,-1.9897320189773163e-5,1.2090860847159705e-8,0.0037246074892309214,-1.9573777293026863e-5,1.1485194896322013e-8,0.0037247994563825186,-1.922551672634567e-5,1.0834500081040653e-8,0.003724889413287953,-1.8911635022200557e-5,1.024891375539621e-8,0.003724903860006442,-1.8689419208005423e-5,9.834890386340725e-9,0.0037248950039658825,-1.8593936835862856e-5,9.657227552497414e-9,0.0037249241617011717,-1.8624070004157957e-5,9.713213497022367e-9,0.0037250406734058938,-1.874272347827841e-5,9.933231932671707e-9,0.003725266442256563,-1.889068343187049e-5,1.0206743013046786e-8,0.003725591957814072,-1.900639132302381e-5,1.0419161121580107e-8,0.0037259828367480837,-1.9042941445738243e-5,1.0483445088589561e-8,0.0037263919105630754,-1.8977532859680972e-5,1.0357575288150131e-8,0.0037267718541946424,-1.8812970780198845e-5,1.004722544629047e-8,0.0037270852122032435,-1.857321752592454e-5,9.597390829866145e-9,0.0037273105106150057,-1.829556589372417e-5,9.077766944676528e-9,0.0037274442822466383,-1.8021665816886436e-5,8.566019197106112e-9,0.003727499446205275,-1.7789180452793088e-5,8.132238797880786e-9,0.0037275009651962054,-1.762549477405663e-5,7.827238632585327e-9,0.003727480107433613,-1.7544324987777415e-5,7.676278027300595e-9,0.003727468693735596,-1.7545252223564655e-5,7.678260381961283e-9,0.0037274943796830745,-1.7615546114334517e-5,7.809198521585769e-9,0.0037275775048591624,-1.773333185341448e-5,8.028155894012631e-9,0.003727729461688348,-1.7871140037744037e-5,8.283855986333845e-9,0.0037279521045785026,-1.7999224672154963e-5,8.520831022886832e-9,0.0037282376812551145,-1.80885880022614e-5,8.685033780576021e-9,0.0037285690243083164,-1.8114038809190196e-5,8.729555432946514e-9,0.003728920113641478,-1.8057767593507887e-5,8.621345067804234e-9,0.0037292576952676747,-1.7913835381609194e-5,8.349624258909386e-9,0.0037295452618239825,-1.769325645659619e-5,7.935342096310923e-9,0.003729750685610381,-1.742782377238727e-5,7.438195143004906e-9,0.0037298573864923707,-1.7169070621178025e-5,6.954523489002591e-9,0.0037298756982351187,-1.6978346810287705e-5,6.598664526266755e-9,0.003729847357057938,-1.690734999300974e-5,6.466620041821976e-9,0.0037298361456615196,-1.6976011363689884e-5,6.594939654273422e-9,0.0037299052651525726,-1.716065001020904e-5,6.938856540972064e-9,0.003730092529452638,-1.7401587629302746e-5,7.386701385086378e-9,0.0037303974273488636,-1.7626624987369516e-5,7.803782958842304e-9,0.0037307856005640463,-1.7776600142330956e-5,8.080023637204767e-9,0.0037312048557727917,-1.782075236454326e-5,8.158500185359126e-9,0.0037316025984929033,-1.7758874434021704e-5,8.039315141398938e-9,0.003731938096263313,-1.7614499874872118e-5,7.76676690099454e-9,0.0037321881752387263,-1.7424800949631686e-5,7.410439462798648e-9,0.003732347832913049,-1.7230987288991442e-5,7.047285654047261e-9,0.003732427807332729,-1.7070752855394434e-5,6.747564430999931e-9,0.0037324505819447216,-1.6972951318685194e-5,6.564937105062063e-9,0.0037324456392299724,-1.695435236964585e-5,6.530439072511247e-9,0.003732444524964121,-1.701842445824136e-5,6.650238763256346e-9,0.0037324762624747466,-1.7155994000405556e-5,6.906918712508451e-9,0.003732563584080442,-1.734745000939961e-5,7.263649467205659e-9,0.003732720347862681,-1.7566052220995436e-5,7.670403442963853e-9,0.003732950305259306,-1.7781762662003478e-5,8.071102483695934e-9,0.003733247046701793,-1.796503766997897e-5,8.410658713739836e-9,0.003733594793483443,-1.8090329320746774e-5,8.641476568061361e-9,0.003733969829689655,-1.8139333953936072e-5,8.729522514097567e-9,0.0037343425695851745,-1.8104141430392796e-5,8.660245887318678e-9,0.003734680606263795,-1.7990430125363365e-5,8.444572497323546e-9,0.003734953553838489,-1.782034694147802e-5,8.124239420623847e-9,0.003735140403146867,-1.7633507226156773e-5,7.77352976095781e-9,0.003735238848109435,-1.748329459267977e-5,7.4921953391734e-9,0.003735273477531778,-1.742550583944127e-5,7.384151459049214e-9,0.0037352966592492363,-1.749922907883764e-5,7.52182191537506e-9,0.0037353759026406193,-1.7706708770883272e-5,7.908742842178216e-9,0.003735568740471046,-1.8005201420696946e-5,8.464598259716825e-9,0.003735897522340255,-1.8320262806021934e-5,9.050180658370451e-9,0.0037363400742964556,-1.8575326378219387e-5,9.522633384422312e-9,0.0037368415776035976,-1.8720037863678725e-5,9.788290822532997e-9,0.0037373380712256233,-1.874245668787921e-5,9.825363797506921e-9,0.0037377771555825133,-1.8663787364666786e-5,9.673974471483982e-9,0.0037381282616453346,-1.852433494079792e-5,9.409797508911304e-9,0.0037383834002827367,-1.8369540890756483e-5,9.117901324121186e-9,0.003738552757404369,-1.824019873721411e-5,8.874473223547163e-9,0.003738658809558917,-1.8167100505264942e-5,8.736870253285727e-9,0.003738730844138739,-1.8168783218842287e-5,8.739462794445459e-9,0.0037388003329487827,-1.8251037280980622e-5,8.892751862877826e-9,0.00373889698628947,-1.8407514500518183e-5,9.18453775255549e-9,0.0037390453516148825,-1.8621272393550024e-5,9.582855243041857e-9,0.0037392620029640536,-1.886722395403692e-5,1.0040612490717398e-8,0.0037395535311001136,-1.9115464924135617e-5,1.0501851379362463e-8,0.0037399156645016815,-1.9335279841595094e-5,1.0909231443508442e-8,0.003740333727271666,-1.949936503986908e-5,1.1211879486748627e-8,0.0037407843754003085,-1.9587781487259298e-5,1.1372730485053469e-8,0.00374123843967038,-1.9591286559904284e-5,1.1374739407503882e-8,0.003741664694071747,-1.951376722599113e-5,1.1225445494692067e-8,0.003742034426709988,-1.9373566096839915e-5,1.0959456056172562e-8,0.0037423268826330203,-1.9203348136011737e-5,1.0638143074060602e-8,0.0037425355319994974,-1.9047512251718933e-5,1.0344682395521544e-8,0.003742674153842459,-1.8955552707843683e-5,1.0171510875620036e-8,0.003742780075672932,-1.897020365172007e-5,1.0198117014107015e-8,0.003742910352084255,-1.91115247419747e-5,1.0461391980825988e-8,0.003743127236642866,-1.936274082819314e-5,1.0929372494595087e-8,0.0037434748877366456,-1.966787992300605e-5,1.1497025901544866e-8,0.0037439582292228346,-1.994830716850865e-5,1.2017239417133448e-8,0.0037445380916303205,-2.0132874757777342e-5,1.235715857869903e-8,0.003745147304945264,-2.018475709919423e-5,1.24483095139559e-8,0.003745717536123864,-2.0110039024257403e-5,1.2302602979977455e-8,0.0037462009957385913,-1.994718213155144e-5,1.1992528512288664e-8,0.003746578533952196,-1.9748112336383324e-5,1.1615631205305184e-8,0.0037468562058775336,-1.9561943110626034e-5,1.1263957057301948e-8,0.0037470568320752493,-1.942580720910747e-5,1.1006894832462288e-8,0.003747211591296955,-1.936188801722068e-5,1.0885690830408487e-8,0.0037473537091404366,-1.937798694893093e-5,1.0914592901045096e-8,0.00374751426169476,-1.9469411529319156e-5,1.1084443738119213e-8,0.003747719306811906,-1.9621107982094123e-5,1.1366715498674678e-8,0.003747987653823677,-1.98098865025236e-5,1.171772196127629e-8,0.0037483289877986337,-2.00069900657524e-5,1.2083476553019989e-8,0.0037487424409848157,-2.018133651430223e-5,1.2405790481457967e-8,0.003749216049729212,-2.0303576953806943e-5,1.262985740223278e-8,0.0037497276616432853,-2.0350656359240593e-5,1.2712744009555985e-8,0.0037502476097356495,-2.0310161881186038e-5,1.263147987969798e-8,0.0037507430698388022,-2.01836052339569e-5,1.238917732256602e-8,0.003751183640813286,-1.9987806416820744e-5,1.201762072309364e-8,0.003751547358372743,-1.975377558398845e-5,1.1575159589463945e-8,0.0037518262278624856,-1.9522888966651756e-5,1.1139487350292194e-8,0.003752030366449994,-1.9340357022812065e-5,1.0795307888503861e-8,0.003752189575101569,-1.9246075080711368e-5,1.0617115929008991e-8,0.00375235065514588,-1.926362082860626e-5,1.0648597353873207e-8,0.00375256874733072,-1.9389760757096198e-5,1.0883103913087454e-8,0.0037528923589819,-1.95889336244771e-5,1.1253515334163685e-8,0.003753345377221318,-1.9798233653190108e-5,1.1641722277737352e-8,0.003753914085684261,-1.9945444226348306e-5,1.1912441558529761e-8,0.0037545482183929373,-1.997468342657704e-5,1.1961217063101045e-8,0.003755178268860511,-1.9866841003214947e-5,1.1752664664935419e-8,0.003755740498054235,-1.9643572837075e-5,1.132790926630942e-8,0.003756196287862252,-1.9354386897528227e-5,1.078027677361611e-8,0.0037565380292510645,-1.9056473937833167e-5,1.02173374524946e-8,0.003756783287516352,-1.879808625982981e-5,9.729641408606765e-9,0.003756964059188642,-1.8610299848009276e-5,9.375278483928095e-9,0.0037571168822495586,-1.850601029274588e-5,9.178087064121487e-9,0.0037572761536310796,-1.8482743679660896e-5,9.133032553034088e-9,0.003757470458105261,-1.8526444575679007e-5,9.213386299761704e-9,0.003757720726876309,-1.8614862202039136e-5,9.377117285257808e-9,0.0037580391353763576,-1.8720347719301517e-5,9.572164083264661e-9,0.0037584281701537876,-1.88124868526117e-5,9.741392613497707e-9,0.003758879845331222,-1.886115999095588e-5,9.828343171502811e-9,0.003759375547369298,-1.884045521805883e-5,9.784556157303305e-9,0.0037598873171901443,-1.8733336140393533e-5,9.578297218737537e-9,0.0037603812993048536,-1.8536245409891986e-5,9.20316322759362e-9,0.003760823522734917,-1.826223272290799e-5,8.683933253519903e-9,0.0037611872682305502,-1.794102306496649e-5,8.07668074991078e-9,0.003761460322951104,-1.761495849043393e-5,7.461118830695648e-9,0.003761649939215854,-1.7330967802997768e-5,6.925453527388214e-9,0.003761783669047966,-1.7130080930370736e-5,6.546618226195867e-9,0.0037619052215471355,-1.7036850169632218e-5,6.370380696093653e-9,0.0037620655927134623,-1.7051287457088965e-5,6.396265383341771e-9,0.0037623107889809214,-1.7145824206739997e-5,6.571987750426438e-9,0.0037626686506996173,-1.7269316797664524e-5,6.8011328521040325e-9,0.0037631385620556235,-1.7358826009662052e-5,6.965369983083214e-9,0.003763688525936491,-1.735727517214488e-5,6.957620478797519e-9,0.0037642627046168722,-1.7231514285195872e-5,6.7159383377332736e-9,0.003764798192409383,-1.6983144070799588e-5,6.243784790204022e-9,0.003765244475384821,-1.6646684177942917e-5,5.606514320308481e-9,0.003765577041731878,-1.6276113749033035e-5,4.905976489211403e-9,0.0037658001496303955,-1.5926872483978327e-5,4.246574565661419e-9,0.003765940043113608,-1.5641428521669665e-5,3.7080826046676444e-9,0.0037660339883212393,-1.5442580188857785e-5,3.3330932819261697e-9,0.0037661202972565054,-1.533378212849883e-5,3.1277370664346276e-9,0.0037662317987403426,-1.530331931720143e-5,3.0696368494463564e-9,0.00376639269783391,-1.5329353706236113e-5,3.117459743615627e-9,0.0037666175999535394,-1.5384239766858776e-5,3.2190461479142756e-9,0.003766911424015544,-1.5437798596845338e-5,3.3175546155956647e-9,0.0037672694199051165,-1.5460010735471215e-5,3.3565118674225895e-9,0.003767677144880793,-1.5423844881946676e-5,3.285127707090549e-9,0.0037681108405431198,-1.5308808573030386e-5,3.0649759961602738e-9,0.00376853909328297,-1.5105335091860154e-5,2.678249819012819e-9,0.0037689267978603287,-1.4819271966290807e-5,2.1362017496681052e-9,0.0037692419464796334,-1.4474679157593949e-5,1.4843891964449467e-9,0.003769464408607395,-1.4112525842013234e-5,8.001758661740843e-10,0.0037695940570376656,-1.3783562552421724e-5,1.7924187200268179e-10,0.003769654513644912,-1.3535943066435279e-5,-2.877953882684514e-10,0.003769689655352273,-1.3401132828683478e-5,-5.419454827697908e-10,0.0037697528877103145,-1.3383352936094304e-5,-5.756719343471206e-10,0.0037698924838657317,-1.3456848768446041e-5,-4.379133873754168e-10,0.0037701379529232566,-1.3572133855236433e-5,-2.2219011005250034e-10,0.0037704917152187136,-1.36690613658659e-5,-4.190341608565942e-11,0.003770928286669406,-1.3692704936665648e-5,-4.184426881656405e-13,0.003771400984222682,-1.360764722503169e-5,-1.6419689144365008e-10,0.0037718542846100875,-1.3406801484918508e-5,-5.462400593197952e-10,0.0037722383742051645,-1.3112239502991186e-5,-1.1045888736203505e-9,0.0037725215280944423,-1.2767820548965187e-5,-1.756277314541145e-9,0.003772696517123917,-1.2426225277517897e-5,-2.4018373226817705e-9,0.003772779492258509,-1.2135018031827889e-5,-2.9516198186066968e-9,0.0037728027992608884,-1.1926333275018554e-5,-3.345233937647147e-9,0.003772805248437262,-1.1812618336310583e-5,-3.559509949169215e-9,0.0037728234022769208,-1.1787985186950563e-5,-3.605855082757096e-9,0.003772885871274732,-1.1832888997680663e-5,-3.5213519611769673e-9,0.0037730107830056705,-1.1919671821302818e-5,-3.3582733409701644e-9,0.0037732054834411486,-1.201738319949041e-5,-3.1750111515168823e-9,0.0037734672788120238,-1.2095393134790393e-5,-3.029308059715573e-9,0.0037737843623683997,-1.2126141515841897e-5,-2.9731078275435696e-9,0.0037741366633792803,-1.2087713479066177e-5,-3.0477005332985616e-9,0.0037744969434948855,-1.1966854684521575e-5,-3.2780044851181107e-9,0.0037748329505799573,-1.1762652811277419e-5,-3.665584516120736e-9,0.0037751117090649177,-1.1490296257088035e-5,-4.1815534879312055e-9,0.003775306671071242,-1.1183066734645489e-5,-4.762857357367671e-9,0.0037754069823609203,-1.0889694911885241e-5,-5.3173572358538974e-9,0.0037754256798606545,-1.0664706834353456e-5,-5.742147928915882e-9,0.003775401726689244,-1.0552455653838138e-5,-5.953742048116789e-9,0.003775391866454253,-1.0570337492320954e-5,-5.9196954740658214E-09,0.0037754533346908404,-1.069965404964022e-5,-5.6757115830877735e-9,0.0037756245234761812,-1.0889973474384802e-5,-5.3172574611983255e-9,0.0037759125769722722,-1.1075505491388981e-5,-4.9685789284492975e-9,0.0037762927653174714,-1.119569145297422e-5,-4.743856103245313e-9,0.0037767180710236953,-1.1211551456236634e-5,-4.716422581730153e-9,0.0037771336262513635,-1.1113289439129748e-5,-4.904484620551893e-9,0.0037774906920141566,-1.0919093669290008e-5,-5.273435637376515e-9,0.0037777568305629415,-1.0667562119560446e-5,-5.750186818487831e-9,0.0037779208867569462,-1.0406866195721732e-5,-6.243650787702565e-9,0.003777992767016646,-1.018352746019933e-5,-6.665958168127169e-9,0.0037779989182269913,-1.0033140590648544e-5,-6.949989656900959e-9,0.0037779751011073896,-9.97469904417571e-6,-7.060078675057539e-9,0.0037779584786724603,-1.0009194292538516e-5,-6.994608417451776e-9,0.0037779809048557934,-1.0121958368840203e-5,-6.781516708789922e-9,0.0037780645720082466,-1.0287344353781977e-5,-6.469394097223917e-9,0.003778220234630747,-1.047413085648688e-5,-6.1172540917545026e-9,0.003778447456985994,-1.0650388607779883e-5,-5.785368244403539e-9,0.003778735979536752,-1.078723859059365e-5,-5.528224279977244e-9,0.0037790674522738318,-1.086163687447547e-5,-5.3893085312301e-9,0.0037794172242492487,-1.0858682366088469e-5,-5.396741791551607e-9,0.003779756331525049,-1.0773944571270184e-5,-5.55883105247937e-9,0.0037800542820276006,-1.0616049404699768e-5,-5.859127603922072e-9,0.0037802835715694304,-1.0409041615552987e-5,-6.251958361016585e-9,0.0037804265587483227,-1.019284428731572e-5,-6.661632999833887e-9,0.0037804839392265306,-1.0019107510829138e-5,-6.990419724209726e-9,0.003780481632655872,-9.940027335123063e-6,-7.139785874260027e-9,0.003780470551458204,-9.990760852975178e-6,-7.043636122099973e-9,0.0037805145003715693,-1.0171924492472818e-5,-6.701260118724001e-9,0.0037806679024364473,-1.0443026877787217e-5,-6.189548974586507e-9,0.003780953749669685,-1.0734040814978671e-5,-5.640990002948598e-9,0.003781354446672115,-1.0970848138577473e-5,-5.195569712053512e-9,0.0037818202123343133,-1.1100878236964057e-5,-4.952398320323635e-9,0.0037822885451625726,-1.1106690075405191e-5,-4.9441331682067115e-9,0.0037827037918562686,-1.1004732221553931e-5,-5.139393429677356e-9,0.003783029580921028,-1.083450210581651e-5,-5.463297256101165e-9,0.0037832528926456414,-1.0645014240624529e-5,-5.8230619263333884E-09,0.003783382008619057,-1.0483107839539345e-5,-6.130107278142606e-9,0.0037834411521074293,-1.0385293670330903e-5,-6.315462602182711e-9,0.003783463866855065,-1.0373167422302901e-5,-6.338434431871988e-9,0.003783486346677699,-1.0451924135314523e-5,-6.1894075059543604e-9,0.0037835415059761126,-1.0611498941792025e-5,-5.887657773983901e-9,0.0037836543994592214,-1.0829747870240204e-5,-5.475280541301254e-9,0.0037838393893894684,-1.1076912436351042e-5,-5.00868499477498e-9,0.0037840991940355684,-1.1320547095963303e-5,-4.549244861849569e-9,0.0037844256115939245,-1.1530111692398709e-5,-4.154636535393267e-9,0.003784801380528869,-1.168067724546158e-5,-3.871892905681978e-9,0.0037852026131201958,-1.1755664641185652e-5,-3.732277813199833e-9,0.0037856015155439153,-1.1748839795853997e-5,-3.747515652641209e-9,0.003785969367532291,-1.166580442859177e-5,-3.906921033511718e-9,0.00378628001510182,-1.1525110745466617e-5,-4.175235589964458e-9,0.003786514449205436,-1.1358637205725354e-5,-4.491921267897067e-9,0.0037866667919770496,-1.1209875032777431e-5,-4.774493370527981e-9,0.0037867507548969247,-1.1128029735137191e-5,-4.929817589830909e-9,0.0037868036489551913,-1.1156279232741838e-5,-4.8764159931144795e-9,0.0037868831215570773,-1.1315159538627571e-5,-4.575860551166065e-9,0.0037870524179700496,-1.1587432273622035e-5,-4.061235434398263e-9,0.0037873563096598654,-1.1915434657407038e-5,-3.441960618087722e-9,0.0037877994416602927,-1.2218268853877623e-5,-2.871179678081107e-9,0.00378834159065941,-1.2422814649923206e-5,-2.4871089224278254e-9,0.0037889140278449785,-1.249102829822317e-5,-2.361451809750297e-9,0.0037894464319104034,-1.2428832387716597e-5,-2.4826372919214795e-9,0.003789888854569995,-1.2276000741283246e-5,-2.775033513542293e-9,0.003790220598166225,-1.2087372015433666e-5,-3.13458685349092e-9,0.003790447689810322,-1.1915907774812648e-5,-3.4609407828149515e-9,0.0037905948035725874,-1.1802236082212254e-5,-3.6772233896817644e-9,0.003790696401172688,-1.1770385986698964e-5,-3.73808626895047e-9,0.003790789335206898,-1.1827575732369238e-5,-3.6300747743801807e-9,0.003790907337032187,-1.1966138926110403e-5,-3.3679632150517645e-9,0.0037910770946163676,-1.2166553303929558e-5,-2.9889909055131355e-9,0.0037913156361942314,-1.2401135693384962e-5,-2.545809144827838e-9,0.0037916289168516333,-1.263815898674036e-5,-2.0986190900712304e-9,0.0037920116463947694,-1.2846175399722612e-5,-1.7069510131467538e-9,0.0037924484233062025,-1.299819527970367e-5,-1.4217770124520617e-9,0.0037929160329965078,-1.3075228465631499e-5,-1.2788768709480869e-9,0.0037933865555892653,-1.3068858631174979e-5,-1.294030013439374e-9,0.0037938309814365434,-1.2982776331081918e-5,-1.4601266957738199e-9,0.0037942231481280977,-1.283322743822306e-5,-1.7462770627408988e-9,0.003794543866539171,-1.2648304256008901e-5,-2.0991058430070644e-9,0.003794785242433129,-1.2465858940810928e-5,-2.4467144889246194e-9,0.0037949550625008244,-1.232927438422763e-5,-2.7067816859225326e-9,0.003795080187817642,-1.2279927284374798e-5,-2.8009626097236014e-9,0.0037952065161867134,-1.2345871523227187e-5,-2.6763892980301933e-9,0.0037953921373555235,-1.2528542983790664e-5,-2.3307936469979733e-9,0.0037956913857025054,-1.2793157015980988e-5,-1.8305356927816436e-9,0.003796132776286854,-1.3071563213552118e-5,-1.3050406169510527e-9,0.0037967017325761278,-1.328280143626571e-5,-9.077926254452141e-10,0.0037973411548898497,-1.3364516232244082e-5,-7.568234874396928e-10,0.0037979727650269374,-1.3297561018064426e-5,-8.881042448926196e-10,0.003798527090663047,-1.3109356495992466e-5,-1.2492122368724608e-9,0.003798964917021712,-1.28570520619648e-5,-1.7313517826797332e-9,0.0037992820034057637,-1.2603783737617608e-5,-2.2145093402545987e-9,0.003799500926082306,-1.240063635168012e-5,-2.6017407417391375e-9,0.0037996585584883936,-1.2278587025970907e-5,-2.8344302677579545e-9,0.0037997952173949366,-1.2248205620853774e-5,-2.892780987975255e-9,0.0037999474748775944,-1.2303191954665917e-5,-2.789037696090718e-9,0.003800144171209063,-1.2424890429828608e-5,-2.5588855394347242e-9,0.0038004044225855666,-1.2586549203308632e-5,-2.2533402981175947e-9,0.003800736709459013,-1.2757180681021012e-5,-1.9313801867040904e-9,0.0038011386726849684,-1.2905234943333781e-5,-1.6529274004774604e-9,0.0038015976307220777,-1.300228941643676e-5,-1.4718298071475957e-9,0.0038020920655212837,-1.3026745702081325e-5,-1.4288825387251392e-9,0.0038025942999659027,-1.2967137471847075e-5,-1.5456250913598982e-9,0.0038030742779153713,-1.2824453504739554e-5,-1.8199956009474816e-9,0.0038035040835843223,-1.2613005619355985e-5,-2.224696148359336e-9,0.003803862725819495,-1.2359515273662385e-5,-2.7088896073266286e-9,0.0038041406058219682,-1.210021971862752e-5,-3.203654961905564e-9,0.003804343039903815,-1.187601536262798e-5,-3.6312222314006306e-9,0.0038044921992625045,-1.172572264151848e-5,-3.9178384073525195e-9,0.00380462650870891,-1.1677577510893996e-5,-4.010014190249887e-9,0.0038047960105914956,-1.1739750231113836e-5,-3.892553967922982e-9,0.0038050522524015824,-1.1892359741202971e-5,-3.603641811340095e-9,0.0038054328722651374,-1.2085474055587181e-5,-3.238495369877979e-9,0.003805944893983198,-1.224821847258572e-5,-2.931950879082715e-9,0.003806555314129275,-1.2310374852742212e-5,-2.8173999266934114e-9,0.003807197680863527,-1.2229146407934576e-5,-2.9759540232212596e-9,0.0038077950074467274,-1.2006673466743497e-5,-3.4031768325958983e-9,0.003808287639007238,-1.1687444632760447e-5,-4.014049779331443e-9,0.003808650970431554,-1.1338022030420527e-5,-4.681632012604156e-9,0.003808896131037573,-1.1022265614456972e-5,-5.284306129734353e-9,0.0038090582406506883,-1.0784417102233183e-5,-5.738002868905132e-9,0.0038091815513970188,-1.0643809594594406e-5,-6.006202185145872e-9,0.003809307974440942,-1.0597903969188504e-5,-6.094047127429888e-9,0.0038094707196667066,-1.062865600428072e-5,-6.036147477861492e-9,0.0038096919065528753,-1.070881560223071e-5,-5.8845641294033734e-9,0.003809982306819115,-1.0806887438420577e-5,-5.699365884995947e-9,0.003810341878982876,-1.0890883083801036e-5,-5.541482188826337e-9,0.003810760558410313,-1.0931470433055232e-5,-5.466698369518253e-9,0.003811219360612792,-1.0905036479831683e-5,-5.5198308461602985e-9,0.003811692191355198,-1.0796853778255012e-5,-5.728734249431048e-9,0.0038121488378866334,-1.0604042188757008e-5,-6.098714331775193e-9,0.0038125593293713445,-1.0337543772812268e-5,-6.608803289335694e-9,0.003812899313522184,-1.0022178567600895e-5,-7.211652084835195e-9,0.003813155569947561,-9.694053505107579e-6,-7.838435889364233e-9,0.003813330410478557,-9.395101236701062e-6,-8.409236512806301e-9,0.0038134436413059824,-9.165292526420089e-6,-8.847896464769259e-9,0.0038135310890633975,-9.033789295919845e-6,-9.098924795496566e-9,0.0038136392405932478,-9.010703935907942e-6,-9.143237881021444e-9,0.0038138161247166904,-9.081404582108e-6,-9.008993457535895e-9,0.003814099382214336,-9.205645720023213e-6,-8.773169562587337e-9,0.0038145038512597245,-9.323767143029389e-6,-8.549656250554983e-9,0.003815012795942145,-9.370894020933878e-6,-8.462137200027408e-9,0.0038155779477628124,-9.29673571143693E-06,-8.606350895718982e-9,0.0038161315938342274,-9.08397255339519e-6,-9.015063906599803e-9,0.0038166080185463146,-8.755923206484596e-6,-9.64348405426532e-9,0.003816965037754244,-8.368207760136484e-6,-1.0385219024877421e-8,0.003817195248806939,-7.988222530295059e-6,-1.1111520776134655e-8,0.0038173229340541176,-7.673167559394442e-6,-1.1713278449963451e-8,0.0038173910001939285,-7.456361956860252e-6,-1.212711923818663e-8,0.0038174460930694254,-7.344703089557365e-6,-1.234016488954878e-8,0.0038175278039535875,-7.323953104584782e-6,-1.2379836417372083e-8,0.00381766349450458,-7.3667834734719346E-06,-1.2298441630227018e-8,0.003817867345920316,-7.44006181186134e-6,-1.2159268639340678e-8,0.003818141527292887,-7.510114938000029e-6,-1.2026573341010378e-8,0.003818477933177015,-7.546220680736763e-6,-1.1958946292781465e-8,0.003818859819405176,-7.523169308927341e-6,-1.2004439996582582e-8,0.0038192634063506886,-7.4236603910782554e-6,-1.2196000644852678e-8,0.0038196599709800997,-7.2408663983656445e-6,-1.254657877456703e-8,0.003820019070571289,-6.980898470168708e-6,-1.3044426574530458e-8,0.0038203132898458427,-6.664287919255013e-6,-1.3650268900585339e-8,0.0038205242460868597,-6.325154432293589e-6,-1.4298887743684189e-8,0.0038206486164603457,-6.006817141678243e-6,-1.4907506500728048e-8,0.0038207020750147184,-5.75354803338733e-6,-1.5391558345619086e-8,0.0038207189146382747,-5.599839594091006e-6,-1.568521212544733e-8,0.0038207461938191602,-5.560151445206347e-6,-1.5760970711142652e-8,0.00382083315281559,-5.622636517693993e-6,-1.5641635859755003e-8,0.003821018492077559,-5.749455228146534e-6,-1.5399662200224305e-8,0.0038213190875863523,-5.884391306755396e-6,-1.5142562499287096e-8,0.0038217235693960125,-5.966361142703782e-6,-1.4987076158289204e-8,0.0038221931563597426,-5.9456270845393625e-6,-1.502819170366169e-8,0.0038226704818977797,-5.798272337779563e-6,-1.531149257821805e-8,0.0038230947974088572,-5.5340664292121286e-6,-1.581812655956149e-8,0.0038234191450172406,-5.194116998158923e-6,-1.6469310260958883e-8,0.003823623312951976,-4.838285790666961e-6,-1.7150435861376128e-8,0.0038237175482825378,-4.526986941152714e-6,-1.7745939341755873e-8,0.0038237362016777052,-4.3046651521168036e-6,-1.8170927741837015e-8,0.003823725137708133,-4.1908453164058315e-6,-1.8388262055022257e-8,0.003823728754133948,-4.180212251173304e-6,-1.8408322336149633e-8,0.0038237809830387044,-4.2490079943162265e-6,-1.8276693046141356e-8,0.0038239015028385787,-4.363551982793333e-6,-1.8057833412152605e-8,0.003824095946593768,-4.487740674388706e-6,-1.7820751134813358e-8,0.003824358126063857,-4.588281903972761e-6,-1.7629039709488436e-8,0.0038246727136478013,-4.637862217435199e-6,-1.753487003336477e-8,0.003825017627068585,-4.61711276381841e-6,-1.7575256806811815e-8,0.003825366118825118,-4.516259894351772e-6,-1.7768895996776932e-8,0.0038256891088083935,-4.336919177129825e-6,-1.8112701958105336e-8,0.0038259584950023394,-4.093846046758095e-6,-1.8578421203903003e-8,0.00382615197722384,-3.815735474025295e-6,-1.9111084395452904e-8,0.0038262592364493595,-3.543489200549398e-6,-1.963234108463913e-8,0.0038262880282502877,-3.3242349858685718e-6,-2.005195595532296e-8,0.0038262672917729517,-3.200584377536259e-6,-2.0288421016364784e-8,0.0038262439982333636,-3.197318624244381e-6,-2.029444817156697e-8,0.003826272400189211,-3.3105522427901474e-6,-2.0077656752741834e-8,0.0038263982363601133,-3.505059768382942e-6,-1.9705603558615896e-8,0.003826643866615569,-3.7224637285441357e-6,-1.929005491723827e-8,0.003827000550067141,-3.897808129259171e-6,-1.8955276671465806e-8,0.0038274307773840765,-3.9781801362031975e-6,-1.8802446818552187e-8,0.0038278791501668245,-3.936838386802747e-6,-1.8882656721060616e-8,0.003828287511464482,-3.7789936758587133e-6,-1.91858484343628e-8,0.003828609599833306,-3.538639788532877e-6,-1.9646859993872794e-8,0.0038288214789188135,-3.2682591437941436e-6,-2.01651251887211e-8,0.0038289254924217973,-3.0247269062595245e-6,-2.0631684713590868e-8,0.0038289472814131997,-2.855414110560565e-6,-2.0955834728401942e-8,0.0038289273259179074,-2.788188187669053e-6,-2.108429624581785e-8,0.0038289100096469695,-2.827593307999e-6,-2.100851341943847e-8,0.0038289336504991763,-2.957270847791984e-6,-2.0759969177050435e-8,0.0038290239989857604,-3.1466075062872564e-6,-2.0397397678011425e-8,0.0038291919363631554,-3.358735621529485e-6,-1.9991428033826533e-8,0.0038294345412146105,-3.5575484015966483e-6,-1.9611153660184545e-8,0.0038297379974115684,-3.7126062375014595e-6,-1.931477643950267e-8,0.0038300809546290265,-3.8019422327944494e-6,-1.9144289526878937e-8,0.003830437556664625,-3.813471476213471e-6,-1.9122815383613343e-8,0.0038307800423785735,-3.7458453013279217e-6,-1.925296167705247e-8,0.0038310813355700818,-3.6092600087004904e-6,-1.951522260747604e-8,0.003831318289772106,-3.4261620143933223e-6,-1.9866570427390518e-8,0.0038314761727888578,-3.2310651372663914e-6,-2.024078705408704e-8,0.003831554328173983,-3.067891478985199e-6,-2.0553606536838275e-8,0.00383157155253598,-2.9829338185445362e-6,-2.071629056719002e-8,0.0038315679388297268,-3.0127134004410304e-6,-2.0658964500687748e-8,0.0038315991481782685,-3.1692879484097765e-6,-2.0358751628086406e-8,0.0038317214021556132,-3.429727904878386e-6,-1.9859827008455862e-8,0.0038319713636641617,-3.7377031114383478e-6,-1.9270251199510938e-8,0.003832350581616624,-4.0199454376947184e-6,-1.8730381252591345e-8,0.003832823444733821,-4.211063811726861e-6,-1.8365375552540856e-8,0.0038333298168283644,-4.2746105018214276e-6,-1.82449115700899e-8,0.0038338051698647065,-4.211439514210527e-6,-1.8367216874901712e-8,0.003834198761806769,-4.0546278942909735e-6,-1.8668806860764246e-8,0.003834484151940069,-3.856273197654131e-6,-1.9049773936193798e-8,0.0038346613147808603,-3.6724518049993973e-6,-1.940260611015573e-8,0.0038347524550533677,-3.550605899014387e-6,-1.9636361789940677e-8,0.0038347942577808274,-3.52127028068912e-6,-1.969253972068335e-8,0.0038348288874075678,-3.5944825007219915e-6,-1.9551978029488838e-8,0.0038348954913967792,-3.7604912766397788e-6,-1.9233502467926943e-8,0.0038350235792819626,-3.9939514459539405e-6,-1.8785861778853742e-8,0.0038352291926199416,-4.260277158951203e-6,-1.8275496622939114e-8,0.003835514073341714,-4.522523088560736e-6,-1.7773291753942183e-8,0.0038358673369616493,-4.7473979554075516E-06,-1.7343025332758908e-8,0.0038362687210526454,-4.9095732722181525e-6,-1.7033139263666595e-8,0.00383669236799276,-4.99408908331157e-6,-1.6872194841765404e-8,0.003837110381916312,-4.997253315309627e-6,-1.6867206012024054e-8,0.0038374959397268127,-4.926686817006647e-6,-1.7003556999435392e-8,0.003837826168240292,-4.800973729438346e-6,-1.724561889505605e-8,0.0038380852198412027,-4.64897087800454e-6,-1.7538006826362915e-8,0.0038382680055769084,-4.508244405378731e-6,-1.780856000998818e-8,0.0038383845372422826,-4.4213473667315845e-6,-1.7975542156029803e-8,0.0038384635487548452,-4.428331072852901e-6,-1.7962111992879813e-8,0.003838552412999034,-4.554891468079644e-6,-1.7719129920892407e-8,0.003838709449637709,-4.79857611780019e-6,-1.7251579776228027e-8,0.003838986727658379,-5.120008018211622e-6,-1.6635275122453434e-8,0.0038394080255532118,-5.448208410521412e-6,-1.6006525398447498e-8,0.0038399539523913803,-5.703228860578149e-6,-1.5518689679738132e-8,0.003840565607656355,-5.826728491288216e-6,-1.5283563189269852e-8,0.0038411666084649057,-5.803303992373885e-6,-1.5330502316579828e-8,0.003841690669226006,-5.6615015185918996e-6,-1.5604511736937722e-8,0.0038421002535852433,-5.457713918832178e-6,-1.5997183329700725e-8,0.0038423907809453407,-5.254822630049416e-6,-1.6387728287251544e-8,0.003842584084612968,-5.1054363205735894e-6,-1.6675159725889587e-8,0.0038427176193724898,-5.043044755021766e-6,-1.6795248365588627e-8,0.003842834018332966,-5.07989312250766e-6,-1.6724578044920652e-8,0.003842972942410085,-5.209054269116863e-6,-1.6476567824802356e-8,0.0038431654789848045,-5.4086399567047076e-6,-1.60933997922233e-8,0.00384343077449617,-5.647036470412883e-6,-1.563595510392797e-8,0.00384377466746861,-5.888566057774086e-6,-1.5172890552403953e-8,0.003844190175581018,-6.098988812967744e-6,-1.477000694122479e-8,0.0038446595948861905,-6.250255466342545e-6,-1.4481091439427506e-8,0.003845157818995818,-6.324023724179862e-6,-1.4341201409106802e-8,0.0038456562996112983,-6.313615647304992e-6,-1.4362989566193652e-8,0.003846127011783707,-6.224437602563978e-6,-1.4535971378501742e-8,0.003846546039512686,-6.073206328661482e-6,-1.4828020425045514e-8,0.0038468967151338742,-5.886318244836747e-6,-1.518844046641186e-8,0.0038471724104394123,-5.6974965543184785e-6,-1.5552409101517088e-8,0.0038473791476006172,-5.544524492413738e-6,-1.5847232591313744e-8,0.0038475379016441485,-5.464345014145458e-6,-1.6001824499551356e-8,0.0038476855030219305,-5.485613097100651e-6,-1.596112434254084e-8,0.003847871879727775,-5.6186931393504005e-6,-1.5705383768277254e-8,0.0038481508803807564,-5.845389848453475e-6,-1.526986177286528e-8,0.003848563503714657,-6.114171536753636e-6,-1.4753886498476955e-8,0.0038491178160156275,-6.348715588209728e-6,-1.4304328128888127e-8,0.0038497770085141143,-6.472740813382431e-6,-1.4067840281603289e-8,0.0038504673064347367,-6.441502007513236e-6,-1.4130328256331074e-8,0.0038511053849232322,-6.261082594443713e-6,-1.4479857491646347e-8,0.003851629844832358,-5.983091492067725e-6,-1.5016874116127136e-8,0.003852018859395578,-5.680152288202065e-6,-1.5601434430578248e-8,0.0038522882875718684,-5.418923444947771e-6,-1.6105201466218447e-8,0.0038524776393092323,-5.243503092060938e-6,-1.644339124890214e-8,0.0038526343526436983,-5.171293042120779e-6,-1.658266798991624e-8,0.0038528022610099396,-5.196803821713961e-6,-1.6533754071038998e-8,0.003853015203081441,-5.2983925912731155e-6,-1.6338444310091512e-8,0.003853294442269686,-5.444945618229092e-6,-1.6056762373860484e-8,0.0038536482567425854,-5.601504835855946e-6,-1.5756133822008962e-8,0.0038540726814287585,-5.7339517789242305e-6,-1.550233250246981e-8,0.0038545530770026947,-5.813032433141409e-6,-1.535167747524828e-8,0.003855066511348219,-5.817774971569551e-6,-1.5344433001374196e-8,0.0038555849763886965,-5.738119863076067e-6,-1.5499788248752717e-8,0.0038560793166990247,-5.576384824864866e-6,-1.5813120373490353e-8,0.0038565234608473496,-5.347216994734051e-6,-1.6256150387493468e-8,0.0038568984147355433,-5.075979025649893e-6,-1.678004601450871e-8,0.00385719557764678,-4.795731754718215e-6,-1.7321162029551486e-8,0.0038574190570229696,-4.543041028615571e-6,-1.780903983008837e-8,0.003857586762326891,-4.352859428110214e-6,-1.817625138390654e-8,0.003857730049101876,-4.252572787910336e-6,-1.8369938134093778e-8,0.0038578912513364937,-4.255213948707043e-6,-1.8364992404288677e-8,0.003858117874957074,-4.3525404651654585e-6,-1.8177456727680517e-8,0.003858452354547486,-4.510210597999658e-6,-1.7873784612501723e-8,0.003858917791777117,-4.669051428707108e-6,-1.756829129472984e-8,0.003859503672194377,-4.756979406824098e-6,-1.7400082133742694e-8,0.003860160107605068,-4.712384004790362e-6,-1.7487936966225806e-8,0.0038608091664962376,-4.510570068775836e-6,-1.7879323414882926e-8,0.003861372398538454,-4.177424357879907e-6,-1.8524047943606895e-8,0.003861800506333025,-3.7795425476321384e-6,-1.9293349565570984e-8,0.0038620880164654562,-3.396288792625095e-6,-2.0033913711143205e-8,0.003862267166860147,-3.0911799396654256e-6,-2.062317555474824e-8,0.0038623893494130436,-2.8966628210158406e-6,-2.099867596807234e-8,0.003862506563495998,-2.8140990119499413e-6,-2.115798768293966e-8,0.0038626598321244918,-2.822389550608056e-6,-2.114198102596278e-8,0.003862874873005275,-2.8882527356427605e-6,-2.1014973901108832e-8,0.003863162336153394,-2.9744902195046028e-6,-2.0848814677809523e-8,0.0038635199304515298,-3.045533830271848e-6,-2.0712205478631623e-8,0.0038639348992436243,-3.0710234770790767e-6,-2.066378398501029e-8,0.0038643864355204357,-3.028367117469868e-6,-2.0747147455070232e-8,0.00386484822728367,-2.904831494192115e-6,-2.0986801911394604e-8,0.0038652914752601592,-2.699236644680084e-6,-2.1384920240420773e-8,0.003865688624510196,-2.4228755743300013e-6,-2.191962018272638e-8,0.00386601767419727,-2.0990064949875313e-6,-2.2545976090700474e-8,0.003866266452299767,-1.760409030734062e-6,-2.3200715561079226e-8,0.0038664359843247702,-1.4449098341719433e-6,-2.3810796904036255e-8,0.0038665420780329414,-1.1892409375748905e-6,-2.4305217895457498e-8,0.003866614450261009,-1.0220808697119544e-6,-2.4628464023641513e-8,0.0038666931331427633,-9.574329517630934e-7,-2.4753373068809092e-8,0.00386682224894407,-9.894664267422647e-7,-2.469119648990868e-8,0.0038670414158975728,-1.0900193002419434e-6,-2.449647640784153e-8,0.0038673755149895308,-1.2103925169421118e-6,-2.4263553007702945e-8,0.0038678247276590877,-1.2892296045959293e-6,-2.4111252377403624e-8,0.003868358444959499,-1.267252656795297e-6,-2.4154311249935473e-8,0.0038689178723244452,-1.106609395965305e-6,-2.446591385034712e-8,0.0038694306364283385,-8.077989637281885e-7,-2.504494355576824e-8,0.0038698345342124824,-4.141703486132289e-7,-2.5807311711834674e-8,0.003870099809101716,1.7314109784301966e-9,-2.661245619101961e-8,0.0038702378083155316,3.6458720020279093e-7,-2.7314567339474627e-8,0.0038702920854368386,6.214663267685033e-7,-2.7811317375819918e-8,0.0038703190910244194,7.53858335647063e-7,-2.8067074676155508e-8,0.00387036974897286,7.748010931081934e-7,-2.8107228302703305e-8,0.0038704788581488724,7.175311052953002e-7,-2.7996153658333026e-8,0.0038706626331334653,6.232083040671878e-7,-2.781347285744613e-8,0.0038709211656908133,5.318687125353667e-7,-2.7636609917695287e-8,0.003871242513436442,4.772284502188831e-7,-2.753078648423058e-8,0.003871606525933271,4.841804967947889e-7,-2.754418615260003e-8,0.0038719879135084533,5.675785755217659e-7,-2.7705577960566147e-8,0.003872358880346966,7.314004543716178e-7,-2.8022675148351287e-8,0.0038726919022138077,9.680249185641712e-7,-2.8480732932027746e-8,0.003872963138652044,1.2579586782204766e-6,-2.9042030043767234e-8,0.00387315657601737,1.5708285211382788e-6,-2.9647789466682646e-8,0.0038732683373289547,1.86855923238929e-6,-3.0224309921934445e-8,0.0038733099271485473,2.1112153111972303e-6,-3.069424612561177e-8,0.003873308852725411,2.2650543922665764e-6,-3.0992188082449424e-8,0.0038733053736022243,2.3111642765606837e-6,-3.108140596859698e-8,0.003873345192169577,2.2521788410355123e-6,-3.0966904370240415e-8,0.0038734693367986866,2.1146262125177263e-6,-3.0700024716839653e-8,0.003873703593536369,1.9454980220390796e-6,-3.037183659191588e-8,0.0038740502205765353,1.8030645268901052e-6,-3.009534652539585e-8,0.003874484463380578,1.7433559304306285e-6,-2.997927136727451e-8,0.003874957745425761,1.805067475563303e-6,-3.009872427079351e-8,0.0038754081819814224,1.9969121911983876e-6,-3.0470633717663e-8,0.0038757768904046563,2.2921729176794824e-6,-3.104314330933098e-8,0.0038760255596562514,2.6342273406501153e-6,-3.1706344087442033e-8,0.003876148467003275,2.953007064522305e-6,-3.232426651598912e-8,0.003876173208269964,3.1867247516892045e-6,-3.2777089184574225e-8,0.0038761496228379723,3.299682974732298e-6,-3.2995681880150156e-8,0.0038761325461103228,3.2890272755367357e-6,-3.297463097922817e-8,0.003876166403606068,3.179714693762658e-6,-3.276239593634084e-8,0.003876276896591104,3.0126859225590633e-6,-3.243833774524097e-8,0.0038764701624275557,2.8325579269208208e-6,-3.208888404389721e-8,0.0038767365992111737,2.6787515873070964e-6,-3.1790385133102694e-8,0.003877056148306675,2.580816495240054e-6,-3.160009687833867e-8,0.003877403029010765,2.556826343211539e-6,-3.1553084495681475e-8,0.0038777493008821016,2.613289973686861e-6,-3.166203618942354e-8,0.0038780675614554605,2.745446505360736e-6,-3.191780672517262e-8,0.003878333476381656,2.937524412643369e-6,-3.2289889347489e-8,0.0038785287779384415,3.1632353044676755e-6,-3.2727348319001116e-8,0.0038786449743421613,3.38733667833281e-6,-3.3161835770498974e-8,0.0038786873128192818,3.569409484611795e-6,-3.351491898098499e-8,0.003878677591593657,3.6707118908738144e-6,-3.371139093728882e-8,0.003878653651155005,3.663736005572876e-6,-3.369782934114989e-8,0.003878663611183559,3.5420997935283253e-6,-3.346179770353897e-8,0.003878754731082063,3.3267106762652564e-6,-3.304380167421774e-8,0.003878959662882301,3.0642480397399228e-6,-3.2534349810315585e-8,0.0038792851193151815,2.8166766000497898e-6,-3.2053637071171815e-8,0.003879707781335941,2.644580007151263e-6,-3.171924924585675e-8,0.003880179414535661,2.590044261113597e-6,-3.161296170025512e-8,0.003880639462395093,2.664856929841553e-6,-3.175779169109812e-8,0.003881030963909623,2.847441295081661e-6,-3.211196330829822e-8,0.003881315132026455,3.088989773401876e-6,-3.258074793403881e-8,0.003881480673019954,3.3267950065992406e-6,-3.304234350010906e-8,0.0038815453906210946,3.500934082932849e-6,-3.33803219040278e-8,0.0038815497710628015,3.5694288741531944e-6,-3.3513127109619604e-8,0.003881544796778198,3.5173837589184617e-6,-3.341184114435914e-8,0.003881578212321525,3.3577257039687044e-6,-3.310159999772678e-8,0.0038816837406748395,3.1243817248589497e-6,-3.264830861127478e-8,0.0038818760151617553,2.8614164265762064e-6,-3.213752525507882e-8,0.0038821512694009203,2.612341272483004e-6,-3.165370238768937e-8,0.0038824917692874394,2.4124461107722537e-6,-3.1265314802538124e-8,0.003882871480346175,2.2849072067360234e-6,-3.1017329356398934e-8,0.0038832611824149987,2.2398928027330586e-6,-3.0929494207351274e-8,0.0038836323245214632,2.275318774487282e-6,-3.099781618751069e-8,0.0038839597921307414,2.378108423025778e-6,-3.119699030134757e-8,0.0038842242152507703,2.5254286212354412e-6,-3.148275781095068e-8,0.0038844144663355965,2.686059250390416e-6,-3.179451894543604e-8,0.0038845306688387576,2.822639547206788e-6,-3.2059675183163195e-8,0.003884587357003466,2.8959475224504465e-6,-3.220196455639171e-8,0.0038846153737523,2.8722310269464106e-6,-3.21557550736718e-8,0.003884660056959134,2.7333387608771316e-6,-3.18857668919105e-8,0.0038847732762158013,2.4869046599035173e-6,-3.1406851357082614e-8,0.0038849991252745794,2.1712642698410145e-6,-3.0793495921892944e-8,0.0038853574442500984,1.8496451423368823e-6,-3.016850650976043e-8,0.0038858330515733975,1.5925789224385644e-6,-2.9668865383990577e-8,0.003886377556622482,1.4547566015723252e-6,-2.940082528056271e-8,0.0038869241473787107,1.4569552475180457e-6,-2.9404819127186324e-8,0.0038874085176017156,1.5809669809562609e-6,-2.9645564220367717e-8,0.003887786800305342,1.7780034980890623e-6,-3.002832302171855e-8,0.0038880447159318995,1.9850173646662214e-6,-3.0430573951043864e-8,0.0038881971924163384,2.1420596256770285e-6,-3.073574438290413e-8,0.003888280961175994,2.205781072292864e-6,-3.085948449380518e-8,0.0038883435694981065,2.1568374784550173e-6,-3.076410840731744e-8,0.0038884319296096136,2.0009593416802778e-6,-3.0460718017368735e-8,0.00388858281744708,1.7646673454508626e-6,-3.000089846925649e-8,0.003888816937092785,1.487387634284406e-6,-2.9461380448588014e-8,0.003889137213009564,1.2122368285186793e-6,-2.8926083312790018e-8,0.0038895308769200843,9.77741933194379e-7,-2.8469964105098837e-8,0.0038899740437511265,8.120453633245923e-7,-2.81477220260484e-8,0.003890437171818333,7.300902557734322e-7,-2.7988343358411724e-8,0.0038908900772970704,7.333723847624609e-7,-2.7994672649499975e-8,0.0038913058202770783,8.11313345377628e-7,-2.8146131740211625e-8,0.003891663485624368,9.432958331578632e-7,-2.8402680159512044e-8,0.0038919502946732623,1.1008399990349611e-6,-2.8708996787877187e-8,0.0038921635340459903,1.2499486900889057e-6,-2.8998973546822423e-8,0.0038923125934744473,1.3541502616078596e-6,-2.9201603267134142e-8,0.0038924208408559866,1.379197734291158e-6,-2.9250157793629576e-8,0.0038925260361622285,1.3003034856014153e-6,-2.909634192665132e-8,0.0038926769630940033,1.1115916402400212e-6,-2.8728743103664676e-8,0.0038929238963934187,8.34996763450161e-7,-2.819013439953649e-8,0.003893302729372596,5.229491681716229e-7,-2.7582633768285374e-8,0.0038938176635446077,2.486270920040773e-7,-2.704868519022275e-8,0.0038944323474479204,8.290889866841129e-8,-2.6726217478885122e-8,0.0038950779585628413,6.71542862886964e-8,-2.6695708784190685e-8,0.0038956768103849595,1.9679611586948285e-7,-2.694825472718397e-8,0.003896169311776245,4.2495370109331924e-7,-2.73925766726845e-8,0.003896530677936019,6.822594553111313e-7,-2.7893606935094835e-8,0.0038967721729981984,9.007324311420936e-7,-2.8318972956552194e-8,0.003896930972109137,1.0312737312306008e-6,-2.8573056292209646e-8,0.0038970560356940956,1.0512333616440805e-6,-2.8611714898809007e-8,0.0038971954492596143,9.637576168076825e-7,-2.84410251401411e-8,0.0038973875128366286,7.922909732076531e-7,-2.8106623400673385e-8,0.003897655773663217,5.73039745366953e-7,-2.7679078820458593e-8,0.0038980074203048315,3.470975623162463e-7,-2.723855936562174e-8,0.003898434383602654,1.532557749678879e-7,-2.686076811069166e-8,0.003898916483642837,2.2273778031217942e-8,-2.6605698033749048e-8,0.003899425869944706,-2.6879705272445377e-8,-2.651026260606674e-8,0.003899931946443452,1.135752503116599e-8,-2.658517606455315e-8,0.003900405988380751,1.2952483923987927e-7,-2.6815784333920333e-8,0.0039008248607193337,3.0902597073996624e-7,-2.7165815642283763e-8,0.0039011736945926885,5.228355224148576e-7,-2.7582659172522265e-8,0.003901447733469793,7.385703341824681e-7,-2.800327930437387e-8,0.0039016535931530446,9.218576909926763e-7,-2.8360689234556944e-8,0.003901810063641041,1.0402342282423203e-6,-2.8591513682344532e-8,0.0039019482346590566,1.068114437545263e-6,-2.8645727584383664e-8,0.0039021099156309434,9.933162871447647e-7,-2.8499486010026745e-8,0.0039023425147539973,8.245733393134014e-7,-2.816985246159411e-8,0.0039026886667243655,5.973876226969504e-7,-2.7726207946250197e-8,0.0039031709184319144,3.732053312467776e-7,-2.728856993304565e-8,0.003903776436955178,2.2643689124575264e-7,-2.7002203145251322e-8,0.0039044517336320776,2.1908852626009318e-7,-2.6988107235954432e-8,0.0039051160269753435,3.7343990320735743e-7,-2.728970832405026e-8,0.0039056904602020087,6.597257455398579e-7,-2.7848816986833218e-8,0.0039061274952976715,1.008182754458275e-6,-2.8529159419230002e-8,0.003906424029832539,1.337864454440272e-6,-2.917267690733211e-8,0.0039066143239121455,1.584673185538172e-6,-2.9654276855512307e-8,0.003906751629333246,1.7160417124478927e-6,-2.991045051383723e-8,0.003906889981347287,1.7312807173328777e-6,-2.993987957694521e-8,0.003907072257425082,1.6535639424178371e-6,-2.978777180552823e-8,0.003907324953080964,1.5196860399174986e-6,-2.9525923596991393e-8,0.003907657617907691,1.3710174126904936e-6,-2.9235136326534077e-8,0.003908064791635279,1.246627938272527e-6,-2.8991808582392042e-8,0.003908529121213566,1.178355331974727e-6,-2.8858246582644022e-8,0.0039090251008069895,1.1874723538953122e-6,-2.8876064406570793e-8,0.0039095231741027164,1.2828026766380307e-6,-2.9062457134925734e-8,0.003909993971965604,1.4602429723720258e-6,-2.940930205385144e-8,0.003910412376088683,1.7037257014122688e-6,-2.9885126077279e-8,0.003910760972899444,1.9875614267849495e-6,-3.043974711070414e-8,0.003911032543742426,2.279815827653438e-6,-3.1010855542352346e-8,0.003911231493909528,2.5463069029857515e-6,-3.153173238001942e-8,0.003911374222650876,2.7549910335127733e-6,-3.193972170951845e-8,0.003911488384327841,2.880624085469085e-6,-3.218531726661661e-8,0.003911610864352182,2.909667982481857e-6,-3.224183476086153e-8,0.003911783886839922,2.84536194505679e-6,-3.211546429333361e-8,0.003912048236733935,2.7121190655270843e-6,-3.1853969077637996e-8,0.003912432956737331,2.5569177610852085e-6,-3.1549408250500364e-8,0.003912942711842446,2.4439948046497946e-6,-3.13276712957956e-8,0.003913547494005578,2.439525781374463e-6,-3.1318405148871284e-8,0.003914182801008766,2.587612510786791e-6,-3.160796365905382e-8,0.00391476670682019,2.8876813198392386e-6,-3.219515496038958e-8,0.003915229878465214,3.288612511808708e-6,-3.297977441605243e-8,0.00391554262842195,3.707168304776008e-6,-3.3798756641249064e-8,0.003915722816780819,4.061134667377567e-6,-3.449114586943816e-8,0.0039158221519932715,4.297554871760769e-6,-3.495337435976911e-8,0.003915902612886247,4.403020028690837e-6,-3.5159304982510026e-8,0.003916016771863963,4.3972762305046315e-6,-3.51476057496457e-8,0.003916198069716032,4.319425094326008e-6,-3.499472431255641e-8,0.003916459596845121,4.214738888555488e-6,-3.4789167335719515e-8,0.003916797401300606,4.125457418511884e-6,-3.46135897824814e-8,0.003917195121291198,4.085545626385126e-6,-3.453456558879286e-8,0.003917628376812855,4.118078743411213e-6,-3.459741276197698e-8,0.00391806864547818,4.234057023541767e-6,-3.4823781820516536e-8,0.0039184868549933145,4.432100524385358e-6,-3.521100643460954e-8,0.003918856894454718,4.698942282664103e-6,-3.5733089149345645e-8,0.003919159062997544,5.010909292212568e-6,-3.634366398414867e-8,0.003919383180819294,5.336673361384431e-6,-3.698142096457321e-8,0.003919530829987342,5.641296545403175e-6,-3.757799607711368e-8,0.0039196162213828035,5.891218249778886e-6,-3.8067651883344666e-8,0.0039196653747344806,6.059652716046391e-6,-3.8397777275256785E-08,0.003919713456096689,6.131770978781817e-6,-3.853905013964011e-8,0.003919800276775679,6.108967573413839e-6,-3.849390802272054e-8,0.003919964045053333,6.011521522845613e-6,-3.830191792649171e-8,0.003920233494230299,5.878730153642338e-6,-3.804014811232711e-8,0.003920618992780859,5.764983763374026e-6,-3.781547454419313e-8,0.00392110459247313,5.730010496430183e-6,-3.7745352062984805e-8,0.0039216448866342514,5.822802882578071e-6,-3.792614771435408e-8,0.00392217165582521,6.062441369382195e-6,-3.839540769990899e-8,0.003922612784897084,6.424343781374744e-6,-3.910483982583697e-8,0.003922918279510956,6.842549813656679e-6,-3.9924854655693004e-8,0.0039230801956615,7.231684285990491e-6,-4.068779460101494e-8,0.003923134148926395,7.5187772284920845e-6,-4.125047503163074e-8,0.003923141833425455,7.667435752105012e-6,-4.1541586012182924e-8,0.003923166269325025,7.683166138878378e-6,-4.1571999586433136e-8,0.003923253198934327,7.602234341381125e-6,-4.1412808153840096e-8,0.00392342418128479,7.474463541507354e-6,-4.1161593315289665e-8,0.003923678875818511,7.348774715809465e-6,-4.091417238620076e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json new file mode 100644 index 000000000..509a7d10c --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_24.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":24000,"numberOfSamples":1000,"samples":[0.003924001349468574,7.264665173102422e-6,-4.0747989552475184e-8,0.003924366586169156,7.248790607297544e-6,-4.0715438046854016e-8,0.0039247455983737215,7.31449699975775e-6,-4.084288354023843e-8,0.003925109134008881,7.462510402409807e-6,-4.1131928535769936e-8,0.003925430619334403,7.681943579661476e-6,-4.156132990390201e-8,0.003925688916221978,7.9515663056217e-6,-4.208949033990723e-8,0.003925871139610513,8.241724001493012e-6,-4.26582543580377e-8,0.003925975343160025,8.517452558510482e-6,-4.319903585164052e-8,0.003926012408625573,8.743124708146312e-6,-4.364190844664137e-8,0.0039260062351111815,8.888393011087458e-6,-4.392721436513869e-8,0.0039259914819518545,8.934553769547599e-6,-4.401802379763859e-8,0.003926008601681654,8.87995541059872e-6,-4.391078722925618e-8,0.003926096603853184,8.742886424791559e-6,-4.364111335220435e-8,0.003926284700461693,8.560700555841224e-6,-4.328218871863738e-8,0.003926584419799495,8.38460458304358e-6,-4.293463839580567e-8,0.003926983982520055,8.27018419490559e-6,-4.270791978660203e-8,0.003927446933578442,8.26450952654458e-6,-4.269489056436631e-8,0.003927917035426422,8.392007583137403e-6,-4.294388907717355e-8,0.003928330548152765,8.643213090672838e-6,-4.343648270886796e-8,0.003928634404239271,8.97202431142347e-6,-4.4082022548759444e-8,0.003928804571353034,9.306016764539644e-6,-4.473798796749362e-8,0.003928855847415065,9.568840746130847e-6,-4.525415343428905e-8,0.0039288366735898165,9.705875342600683e-6,-4.552310678124801e-8,0.003928810708523999,9.70075387287824e-6,-4.5512697637589113e-8,0.003928834802404048,9.575566014901797e-6,-4.526632710582171e-8,0.003928943827175889,9.377534807333275e-6,-4.487669985208786e-8,0.003929146690245219,9.161289638700064e-6,-4.445102369531869e-8,0.003929431010766044,8.97479258527682e-6,-4.408344678591044e-8,0.003929771249439363,8.851942834798086e-6,-4.3840594450064106e-8,0.003930136299987928,8.810775413828423e-6,-4.375803213461219e-8,0.0039304949376361325,8.854733935909684e-6,-4.3842713182813283e-8,0.003930819251349883,8.97490756364095e-6,-4.4077307493303816e-8,0.003931086911330102,9.152169769274805e-6,-4.442436000944777e-8,0.0039312831240633185,9.359120650070548e-6,-4.4830096409770687e-8,0.003931402736278697,9.562353565431697e-6,-4.522888479978551e-8,0.0039314523679986994,9.725809891954073e-6,-4.554983213541918e-8,0.003931451821677968,9.81581544058732e-6,-4.572667330703574e-8,0.0039314335373014,9.807739373223678e-6,-4.5710846370490446e-8,0.003931438847422937,9.693139686684408e-6,-4.5485541526462294e-8,0.003931510540598468,9.485126741041124e-6,-4.507628154878644e-8,0.0039316827752822045,9.21922505098598e-6,-4.455269004539336e-8,0.003931971055312627,8.947933809120098e-6,-4.401789076476449e-8,0.0039323657307728825,8.729358784614993e-6,-4.358622919525109e-8,0.003932831731699162,8.612643855888081e-6,-4.335462841531593e-8,0.003933315344617792,8.62429738570606e-6,-4.337560654570439e-8,0.003933756715300976,8.759463349484685e-6,-4.363994931455601e-8,0.003934105106059232,8.981053856326873e-6,-4.407485811762412e-8,0.003934332913929343,9.227877438043526e-6,-4.4559891225405716e-8,0.0039344440871193175,9.430525068002884e-6,-4.4958286576969273e-8,0.003934473402796723,9.530858688927084e-6,-4.5155432327327116e-8,0.003934475863914978,9.498545685117723e-6,-4.509149078422063e-8,0.003934509718222492,9.33827824991407e-6,-4.47756142603218e-8,0.003934619792227327,9.085158588882537e-6,-4.427682786107174e-8,0.003934827415641757,8.791280140237335e-6,-4.369760258181166e-8,0.00393512933343696,8.510038014808986e-6,-4.31429928445453e-8,0.0039355035636141015,8.284081649552148e-6,-4.269695029529051e-8,0.003935918018543304,8.139406686077033e-6,-4.241070000822375e-8,0.003936338353846052,8.084775818140693e-6,-4.2301584302013366e-8,0.003936733445406277,8.114176353890525e-6,-4.235787766689351e-8,0.0039370785461212525,8.210197709692123e-6,-4.254541828860122e-8,0.003937356971767464,8.347130480599071e-6,-4.281369430236631e-8,0.003937561263758311,8.493567783692922e-6,-4.310094762045791e-8,0.003937694438031615,8.615002843389891e-6,-4.333926631812809e-8,0.003937771330134241,8.67725650150846e-6,-4.346131796842194e-8,0.003937819322870859,8.651508326884634e-6,-4.3410256470381495e-8,0.003937877058427044,8.521099894445721e-6,-4.3153137231452934e-8,0.003937989463885939,8.288931327634417e-6,-4.269550841092151e-8,0.003938198228981029,7.982475866423666e-6,-4.209131265757179e-8,0.003938529202136906,7.652421272823026e-6,-4.144024574779018e-8,0.003938981172624146,7.362348631112524e-6,-4.086748201679056e-8,0.003939521858698951,7.171057158621901e-6,-4.048891544782165e-8,0.003940094615197016,7.113880374154503e-6,-4.0374365707466556e-8,0.0039406342007793785,7.190918645244552e-6,-4.052432522098116e-8,0.003941085456845227,7.366953288287352e-6,-4.086966435709471e-8,0.003941417979926735,7.582297213206803e-6,-4.1292902967637985e-8,0.003941632550878733,7.769811582108233e-6,-4.1661704613367465e-8,0.0039417586573959,7.872367731094012e-6,-4.186332403044912e-8,0.00394184498935138,7.856147459827803e-6,-4.183089280710224e-8,0.003941946090056001,7.716963831159671e-6,-4.155595404739903e-8,0.003942108844751583,7.478721284531861e-6,-4.1085488184775086e-8,0.003942362280649743,7.1851264448118275e-6,-4.0505610055412035e-8,0.003942713056297738,6.887545188092401e-6,-3.9917635489093076e-8,0.003943147094181412,6.63285056822077e-6,-3.9414089140640513e-8,0.00394363576055283,6.45458746493619e-6,-3.906122521138246e-8,0.003944143851940386,6.3689698481875325e-6,-3.889108334065558e-8,0.003944636869159611,6.375238897636767e-6,-3.89021835862169e-8,0.003945086178514301,6.458758785510235e-6,-3.906566285644976e-8,0.003945471885644119,6.595087712929455e-6,-3.9333345409787816e-8,0.003945784062145488,6.75381682031183e-6,-3.96453240801719e-8,0.0039460231949269235,6.9018086924852714e-6,-3.993631138475404e-8,0.003946200484182494,7.0061699834473986e-6,-4.0141443325436696e-8,0.003946338123548155,7.037663514739489e-6,-4.020297398706976e-8,0.003946469030517169,6.975321308310946e-6,-4.007939202239149e-8,0.0039466347171631935,6.8125615268396335e-6,-3.9757548945000605e-8,0.003946879526314831,6.563781000662389e-6,-3.926572917290399e-8,0.003947240113576192,6.26832771088985e-6,-3.8681519815076635e-8,0.00394773162032693,5.987155767768718e-6,-3.8125213666258697e-8,0.00394833606959585,5.788678511154436e-6,-3.7731893344309e-8,0.0039490010315956,5.726070108611301e-6,-3.760663760887806e-8,0.003949653254363835,5.815841448021564e-6,-3.778221021701663e-8,0.003950222933085804,6.029784395114221e-6,-3.8203094717768544e-8,0.003950666763769117,6.305251283013329e-6,-3.874572335149639e-8,0.003950978997636163,6.567633107643007e-6,-3.926282625402561e-8,0.003951187946508848,6.753390037519353e-6,-3.9628897768472654e-8,0.003951342970045106,6.82499234587586e-6,-3.9769697357740485e-8,0.00395149899125544,6.775528812781524e-6,-3.9671369919487616e-8,0.003951703461040263,6.625121099539185e-6,-3.9373432374454456e-8,0.003951987858015527,6.412572497682793e-6,-3.8952382552237284e-8,0.003952363959429004,6.185216687773946e-6,-3.8501729618800614e-8,0.003952824318389738,5.9890392604355895e-6,-3.811248119847719e-8,0.003953346084383744,5.8605580191022866e-6,-3.7857015174201214e-8,0.003953896995412957,5.821583390244034e-6,-3.777860582122305e-8,0.003954442092751837,5.877359468380301e-6,-3.7887672658214384e-8,0.003954949781935346,6.017769412892624e-6,-3.816417373000497e-8,0.003955396289717578,6.220694202785564e-6,-3.856432318594815e-8,0.003955768174884203,6.456367672750993e-6,-3.902927598979735e-8,0.003956063179994125,6.691705169501888e-6,-3.949369249275251e-8,0.003956290051901221,6.894111093467348e-6,-3.989319559509603e-8,0.003956467854520423,7.034854759428582e-6,-4.017095218887658e-8,0.0039566249669400816,7.092436622888951e-6,-4.0284290088954386e-8,0.003956797478346305,7.056481487425291e-6,-4.021245059161304e-8,0.003957025994777186,6.932388600346256e-6,-3.996590300588929e-8,0.003957349414623954,6.7458410699163445e-6,-3.959537173887109e-8,0.003957794778545756,6.544498614818847e-6,-3.9195220973930975e-8,0.003958364489074411,6.392651543668574e-6,-3.889283923884582e-8,0.003959026190955713,6.355295837039837e-6,-3.881705762450065e-8,0.003959713978117959,6.473712946892012e-6,-3.904975388942963e-8,0.003960346658841707,6.743821961530491e-6,-3.958294960032686e-8,0.003960857575990237,7.112323350996538e-6,-4.031115186969541e-8,0.0039612197932018854,7.496174919039376e-6,-4.10699402100219e-8,0.003961452306299503,7.814588012843276e-6,-4.169936348567501e-8,0.003961606574536528,8.01530911676443e-6,-4.209596468724888e-8,0.003961744529834369,8.08439052342442e-6,-4.223205431160473e-8,0.003961919898203691,8.041055608842375e-6,-4.2145503385516964e-8,0.003962167934107929,7.92540646416268e-6,-4.1915471608097986e-8,0.003962502766954194,7.785608877629877e-6,-4.1637175222764884e-8,0.003962919504652272,7.667738377555936e-6,-4.140189174962666e-8,0.00396339860412415,7.6088866362392024e-6,-4.128330394764023e-8,0.003963911081389532,7.633028280277278e-6,-4.132919427751386e-8,0.003964423927548092,7.749152914604407e-6,-4.1557593105492124e-8,0.003964905318504584,7.951432583245587e-6,-4.1957026443146924e-8,0.003965329172806784,8.221199670866641e-6,-4.249046155503989e-8,0.0039656786145144665,8.530378408627668e-6,-4.310220299700377e-8,0.003965947990889918,8.845841392371245e-6,-4.37266017606286e-8,0.003966143368775138,9.134007815143316e-6,-4.429715430491004e-8,0.003966281763390242,9.365126081644348e-6,-4.475489492347632e-8,0.003966389432433808,9.517028569907252e-6,-4.50557398961551e-8,0.0039664994413490615,9.578380169243303e-6,-4.517691762130738e-8,0.003966648478154706,9.551562333274848e-6,-4.512279719134597e-8,0.003966872442131501,9.455213790585541e-6,-4.493010285476397e-8,0.003967200009096507,9.325645135291122e-6,-4.4670856835179115e-8,0.003967643942139405,9.215087087823338e-6,-4.4448923046119814e-8,0.0039681916280942,9.183905742556441e-6,-4.438445858297688e-8,0.003968799131557344,9.284666046934797e-6,-4.4582129386551373e-8,0.003969395714603861,9.540259293398974e-6,-4.508756258136944e-8,0.0039699037202130414,9.926237027984614e-6,-4.585222439096121e-8,0.003970268552470416,1.0371684773005795e-5,-4.673521137896835e-8,0.003970482142169558,1.078412203468818e-5,-4.755282003004367e-8,0.0039705843561092195,1.10860283048514e-5,-4.815115477383973e-8,0.003970642360386332,1.1241376583518066e-5,-4.845874452293147e-8,0.003970722821708415,1.125981504453911e-5,-4.8494689966727235e-8,0.0039708723071808566,1.11829441885822e-5,-4.834134805360363e-8,0.003971110919069601,1.1065211622363857e-5,-4.810650188240576e-8,0.003971435431608885,1.0958632735931508e-5,-4.7893216781566505e-8,0.003971826265812919,1.0903990546723049e-5,-4.778250186894762e-8,0.003972254586729742,1.0927283245886881e-5,-4.782624238951511e-8,0.003972688105211575,1.1039249843146977e-5,-4.8046116883982526e-8,0.0039730955939297884,1.1236386675066273e-5,-4.843545087392066e-8,0.00397345054557075,1.1502799362280447e-5,-4.8962807876693554e-8,0.003973734208169738,1.1812792318729848e-5,-4.9577158828296015e-8,0.003973937950405579,1.2134265111817801e-5,-5.021471558067026e-8,0.003974064679006379,1.2432918992578263e-5,-5.080734411592102e-8,0.003974128944467808,1.2676973960732623e-5,-5.129190491821449e-8,0.003974155556457899,1.2841827542246017e-5,-5.1619414061577866e-8,0.0039741767870729505,1.2914097734147498e-5,-5.1763003268766806e-8,0.003974228381508199,1.2894585117898373e-5,-5.1723840310494984e-8,0.0039743446740342315,1.2799778794775203e-5,-5.1534278839920305e-8,0.003974553031218095,1.2661651645222267e-5,-5.1257656952560386e-8,0.00397486770830553,1.252526192551265e-5,-5.0983665712715536e-8,0.003975283624309093,1.244306855380536e-5,-5.081702986908633e-8,0.003975771762776541,1.2464764616558008e-5,-5.085712444532777e-8,0.003976279358595454,1.2622668128129355e-5,-5.1168686224427466e-8,0.003976738806949802,1.2915806066879637e-5,-5.174997205879499e-8,0.00397708712480231,1.3300494013523065e-5,-5.251398213335525e-8,0.003977290708495544,1.3697307875515348e-5,-5.3302462984544026e-8,0.003977362035950759,1.4017395454687275e-5,-5.393846232144907e-8,0.003977355858695399,1.4196719691249908e-5,-5.429455632185751e-8,0.003977345605575303,1.4218583669657343e-5,-5.433755885903962e-8,0.003977394646971235,1.4112859234273654e-5,-5.412679978292305e-8,0.003977538120767945,1.3937040535825622e-5,-5.377637606636613e-8,0.003977780313015663,1.3753373811437281e-5,-5.3409789340420174E-08,0.0039781024005110955,1.361276026355333e-5,-5.312812805725196e-8,0.003978473023124186,1.3547849219766439e-5,-5.299644136530384e-8,0.003978857094370713,1.3572654477401475e-5,-5.304293291262342e-8,0.00397922161367756,1.3685187261991948e-5,-5.326404503945597e-8,0.0039795391090315735,1.387078103509612e-5,-5.363091484811033e-8,0.003979789799970764,1.4105237357237993e-5,-5.4095556401576257e-8,0.0039799632178153825,1.4357845076354077e-5,-5.45968922420498e-8,0.003980059500806607,1.4594673222991368e-5,-5.506737604277994e-8,0.003980090142970023,1.4782539911570218e-5,-5.5440930753357645e-8,0.003980077642195864,1.4893710156689642e-5,-5.566226817310781e-8,0.003980053468419345,1.4910803096605801e-5,-5.56965853216742e-8,0.0039800541106269635,1.4830983623911673e-5,-5.553787293347947e-8,0.0039801154418540406,1.466838142817004e-5,-5.5213797919344863e-8,0.003980266139921954,1.4453775388946017e-5,-5.478524269653043e-8,0.003980521287767714,1.4231023369268172e-5,-5.4339391697161045e-8,0.003980877353979621,1.4050315119139707e-5,-5.397640762167942e-8,0.003981309717837675,1.395868469966156e-5,-5.3790488944141864e-8,0.003981774090037387,1.3988628469092594e-5,-5.3846999457069773e-8,0.003982213281677193,1.4146764402475845e-5,-5.415961657859051e-8,0.003982570011449755,1.4406143821260008e-5,-5.467482526558627e-8,0.003982804131697453,1.47071498764841e-5,-5.527369286809923e-8,0.003982908778352366,1.4970992193698437e-5,-5.579891732093303e-8,0.003982916824397885,1.5124448073961797e-5,-5.6104337480320424e-8,0.003982891263406429,1.5126160410236833e-5,-5.610742482232311e-8,0.00398290215454356,1.4980743595872157e-5,-5.581730514030468e-8,0.0039830019202654705,1.4733222541316497e-5,-5.532354528930037e-8,0.003983211326857249,1.4448727937037265e-5,-5.4755680309660146e-8,0.003983520104257227,1.4189885389384998e-5,-5.423828496751849e-8,0.003983897259054235,1.4001826693159665e-5,-5.386125283385029e-8,0.003984303459136277,1.3907216352427944e-5,-5.366993275012876e-8,0.003984700579759181,1.3908279420985249e-5,-5.3669095525382856e-8,0.003985057207973846,1.399170223752423e-5,-5.3832563887307894e-8,0.00398535107067196,1.4133635001783242e-5,-5.411306762933109e-8,0.003985569881970607,1.4303771905497005e-5,-5.445033306625039e-8,0.0039857117052029475,1.4468652878353123e-5,-5.4777689929636526e-8,0.003985785248092382,1.4594817843348775e-5,-5.502840613731594e-8,0.003985809897015252,1.4652472383143383e-5,-5.514301337657362e-8,0.003985814826438397,1.4619974837042523e-5,-5.5078226609295487e-8,0.0039858363205629195,1.4488750116827408e-5,-5.481669944437828e-8,0.003985912714645442,1.426742833517886e-5,-5.4375274115178266e-8,0.003986077146685968,1.3983468945714063e-5,-5.380829619913038e-8,0.003986349418788184,1.3680607655818763e-5,-5.320267121504874e-8,0.003986729243878734,1.3411429492368585e-5,-5.266321054783875e-8,0.003987193368925278,1.3226052188088213e-5,-5.229014065094215e-8,0.0039876982347206835,1.3159498917999302e-5,-5.2153854337675876E-08,0.00398818833657533,1.3221106579292605e-5,-5.227358445765773e-8,0.003988608901007278,1.338916970518754e-5,-5.260647556617648e-8,0.003988920183252699,1.3613194193081244e-5,-5.3051916801022585e-8,0.003989109646982799,1.3824650626505712e-5,-5.347299765131535e-8,0.003989197746223967,1.3954767944424933e-5,-5.373215558025435e-8,0.003989233827788415,1.3954763566654355e-5,-5.373171638754063e-8,0.003989281800794039,1.3811236850979288e-5,-5.3444699852450874e-8,0.003989400134260441,1.3549823535973889e-5,-5.292209959911019e-8,0.003989624365284392,1.3225093106393183e-5,-5.227268643727621e-8,0.003989959279866753,1.290162083662521e-5,-5.1625249279043706e-8,0.0039903824814073756,1.2635093520500604e-5,-5.109093995112096e-8,0.00399085532254792,1.2460509228031144e-5,-5.0739748289693165e-8,0.003991335096141489,1.2389290014694273e-5,-5.0594703090057124e-8,0.003991784193685639,1.2412788238110021e-5,-5.063879306432595e-8,0.0039921750376531425,1.2508400657934924e-5,-5.082710027342623e-8,0.0039924916979013365,1.264552801312763e-5,-5.109866380876292e-8,0.003992729733420645,1.2790244411010073e-5,-5.138580639540977e-8,0.003992895505481774,1.2908774182592685e-5,-5.162109554086806e-8,0.003993005539841018,1.2970483448082949e-5,-5.1743325651077926e-8,0.003993085805853583,1.2951169554634605e-5,-5.170407528089941e-8,0.0039931702182065525,1.2837098930575677e-5,-5.1475750096119304e-8,0.003993297356816803,1.2629535465925717e-5,-5.106062222453551e-8,0.003993504537036869,1.2348458326471559e-5,-5.04982889205154e-8,0.00399381928261621,1.2033164964636035e-5,-4.9866956012253766e-8,0.003994250001187529,1.1737322154317254e-5,-4.9273662215669775e-8,0.0039947794474397376,1.1517572315967707e-5,-4.883161802180583e-8,0.003995364932969854,1.1417909076784898e-5,-4.8629022529340004e-8,0.0039959471867255245,1.145512467560501e-5,-4.8699907040692296e-8,0.003996465923696541,1.1611411554188564e-5,-4.9009176717670445e-8,0.003996876828671035,1.1837637422183225e-5,-4.9458966925161574e-8,0.003997163971009506,1.2066380201857806e-5,-4.991458667779847e-8,0.003997343759283495,1.2230228260355551e-5,-5.024110820721207e-8,0.003997459714537061,1.227962356731739e-5,-5.033913205513782e-8,0.0039975700174394516,1.2195246540345806e-5,-5.016966528746188e-8,0.0039977315793668896,1.199171433994848e-5,-4.9761614483588085e-8,0.003997985303974457,1.1711837911922054e-5,-4.920037428897476e-8,0.003998346858193554,1.1413566865496914e-5,-4.8601769213070115e-8,0.0039988053495900785,1.1154143067304714e-5,-4.808037527313077e-8,0.0039993293627035445,1.0976671983429418e-5,-4.7722620398013583e-8,0.003999877225762814,1.0902767894712806e-5,-4.7571985490559816e-8,0.004000407493370264,1.0931979187466173e-5,-4.762776490445662e-8,0.00400088668699902,1.1046120607170104e-5,-4.785368769200271e-8,0.0040012933178902805,1.1215681826101956e-5,-4.8190753288722657e-8,0.004001618824597613,1.140602944436198e-5,-4.856968419517292e-8,0.004001866716617343,1.1582292382143262e-5,-4.8920729394387654e-8,0.004002051089467816,1.1712900988527266e-5,-4.9180732644461024e-8,0.004002195134543225,1.1772393926335084e-5,-4.9298705411811596e-8,0.0040023296147842545,1.1744241358596293e-5,-4.9241438831947997e-8,0.004002490702025333,1.1624164492064202e-5,-4.9000150214148706e-8,0.004002716177242634,1.1423787492992013e-5,-4.859784391910101e-8,0.0040030390227214704,1.1173356864132723e-5,-4.8094833920023865e-8,0.004003478361347815,1.0920997712239193e-5,-4.7587334303852796e-8,0.004004029802038545,1.0725563863908767e-5,-4.719320099784125e-8,0.004004659792221574,1.0641953511935584e-5,-4.7022548424382676e-8,0.004005309358395405,1.0702231547952575e-5,-4.713991105371558e-8,0.004005909305357476,1.0900742430031743e-5,-4.7534332339053704e-8,0.004006402231050277,1.1192022790909333e-5,-4.8115061170983004e-8,0.004006761493609258,1.1504328555145381e-5,-4.8738556290387605e-8,0.004006998416788491,1.1762810600434922e-5,-4.925487801263246e-8,0.0040071557972175655,1.1911802199676452e-5,-4.955234189469917e-8,0.004007292492485376,1.1928068755813912e-5,-4.9584090451901684e-8,0.004007466154921649,1.182270536529946e-5,-4.9371962164986925e-8,0.004007719484345561,1.1633960677447274e-5,-4.8992235679285965e-8,0.004008072516982853,1.1415035698476774e-5,-4.855132546462214e-8,0.004008521247009628,1.1220739757355388e-5,-4.81591306861145e-8,0.004009041556486812,1.1095986552782165e-5,-4.790595409748483e-8,0.004009596684482728,1.1068126254001404e-5,-4.784699794194256e-8,0.004010146061004549,1.1144061978931795e-5,-4.799641499742937e-8,0.0040106533603855915,1.1311869844993711e-5,-4.833044905420133e-8,0.004011092236707525,1.1545566812726804e-5,-4.8796997573800546e-8,0.004011449171177877,1.1811239466230054e-5,-4.9327987188523245e-8,0.004011723764818403,1.2072971677857698e-5,-4.985134835693644e-8,0.00401192736389657,1.2297623888833959e-5,-5.0300619813788786e-8,0.004012080963416897,1.2458294160137046e-5,-5.06218316152855e-8,0.004012212952149902,1.2536886563441079e-5,-5.077857415701251e-8,0.004012356748830488,1.2526361690877996e-5,-5.075648134300845e-8,0.004012547921684051,1.2433048238960548e-5,-5.0567928963629637e-8,0.0040128199805693305,1.2278886932150372e-5,-5.025666471468604e-8,0.004013197985529161,1.2102470950470938e-5,-4.990002190519058e-8,0.00401369000353784,1.1956510006150005e-5,-4.960388878819715e-8,0.004014278532066863,1.1898883530667995e-5,-4.948472066423443e-8,0.0040149167491389135,1.197622246061075e-5,-4.963648586630433e-8,0.004015535619726837,1.2203997061740317e-5,-5.0090569001978953e-8,0.004016064005360639,1.2553240036393509e-5,-5.0789018255737813e-8,0.0040164548830214815,1.2954750430225737e-5,-5.1592962190804215e-8,0.004016703733644348,1.3322431746732769e-5,-5.232951731508461e-8,0.004016848431434354,1.3584310465564186e-5,-5.2854110685949694e-8,0.004016951977140229,1.3704978067918915e-5,-5.309550581731473e-8,0.00401707918422125,1.3690726517722423e-5,-5.3066050186417026e-8,0.004017278464444657,1.3580022117076173e-5,-5.284257367174307e-8,0.004017573349390648,1.3427603643939568e-5,-5.253461517336548e-8,0.004017962524787026,1.3289293461804937e-5,-5.2254123260796106e-8,0.004018424992325505,1.3210932934703492e-5,-5.2093339215260626e-8,0.0040189273729024705,1.3221997414880813e-5,-5.211190437947683e-8,0.0040194315062708425,1.3333214209773679e-5,-5.2331872879317006e-8,0.004019901334926071,1.3537385768781908e-5,-5.273915282943784e-8,0.00402030839443015,1.3812681913253474e-5,-5.3290015781132485e-8,0.004020635440219238,1.4127527132908653e-5,-5.392095666905157e-8,0.004020878035146411,1.4446146519830484e-5,-5.455996088115213e-8,0.004021044226821732,1.473392798977689e-5,-5.513737746601209e-8,0.00402115275112109,1.496191131793451e-5,-5.559493860655362e-8,0.004021230393628464,1.5110074592057919e-5,-5.589227823087387e-8,0.004021308993990323,1.5169566143298608e-5,-5.601133518705951e-8,0.004021422225284333,1.5144214158221058e-5,-5.595940175161358e-8,0.0040216019835709,1.505150937068162e-5,-5.57712373201424e-8,0.004021873939755527,1.4922916833095616e-5,-5.550989215428107e-8,0.0040222517467002885,1.4802621499919506e-5,-5.5264327043482085e-8,0.004022730175355548,1.4742845077977562e-5,-5.513999395696767e-8,0.00402327924617558,1.4793651408929851e-5,-5.5238179247849234e-8,0.004023843665981839,1.498685836194858e-5,-5.562340967782772e-8,0.004024352851506316,1.5318263529964064e-5,-5.62874975195311e-8,0.004024743118745088,1.573836892528872e-5,-5.7130821512435726e-8,0.004024984194842726,1.6162535861771282e-5,-5.7982877436069443E-08,0.004025094377176705,1.6501026274800637e-5,-5.866291758713605e-8,0.004025133037057492,1.6693810177365013e-5,-5.9050065212816505e-8,0.0040251747474465615,1.6730082192383597e-5,-5.912247029379822e-8,0.004025281332087344,1.6644195416193686e-5,-5.894897656672424e-8,0.004025485746450353,1.6495866969054968e-5,-5.864930998217878e-8,0.004025790429201538,1.634835179138792e-5,-5.8350370181822665e-8,0.0040261746462862255,1.6253223052331517e-5,-5.815584387978385e-8,0.0040266044641294775,1.624327250382378e-5,-5.813200951807451e-8,0.004027041638836209,1.633135361213576e-5,-5.8305293951082345e-8,0.00402745025711566,1.6512469372403883e-5,-5.866622925242898e-8,0.00402780134494779,1.6767326438795646e-5,-5.917637987828972e-8,0.004028075926393701,1.7066612366788847e-5,-5.977686171643531e-8,0.004028266748303052,1.7375686093179322e-5,-6.039784671300595e-8,0.004028378700267617,1.7659404592882538e-5,-6.096841423803015e-8,0.004028427921096438,1.7886793273255926e-5,-6.142604364033798e-8,0.00402843964084909,1.8035151508268353e-5,-6.172486403108444e-8,0.004028445012514573,1.809312331270539e-5,-6.184175008856881e-8,0.0040284773268235005,1.8062494703952662e-5,-6.177988665082503e-8,0.004028567910222432,1.7958723498241694e-5,-6.156990468255793e-8,0.004028741861400401,1.781021131030546e-5,-6.12686094634135e-8,0.0040290136622913525,1.765619786846825e-5,-6.095496322789188e-8,0.0040293826809504,1.754280016104753e-5,-6.07222216328837e-8,0.004029829124215082,1.751619084809753e-5,-6.066410876225836e-8,0.004030312256108125,1.7612020509539247e-5,-6.085324393616324e-8,0.004030774031389632,1.7841815454699297e-5,-6.131341293797681e-8,0.00403115142107213,1.8180564860966387e-5,-6.199433879515745e-8,0.0040313974300052735,1.8563852856182064e-5,-6.27659191383855e-8,0.004031503203472192,1.8902856758312773e-5,-6.344869780801121e-8,0.004031507215610012,1.9116091643266002e-5,-6.387812802255732e-8,0.004031481930153734,1.916242569246173e-5,-6.397118926916185e-8,0.004031503768949901,1.9055383830683572e-5,-6.375504333127174e-8,0.004031624504421274,1.885153534554923e-5,-6.334344369125224e-8,0.00403185885677837,1.8623798019755862e-5,-6.288296518438462e-8,0.004032189274944319,1.8436620157024645e-5,-6.250321630029159e-8,0.004032579178971542,1.83324637336343e-5,-6.228981683190497e-8,0.004032986090714059,1.8329161981569122e-5,-6.227911243671427e-8,0.0040333708125981456,1.8423493871162983e-5,-6.246522183995398e-8,0.004033702484811329,1.8596808258675e-5,-6.281112340841897e-8,0.0040339608469825575,1.882045266602357e-5,-6.325939983367222e-8,0.004034137070431829,1.906045203237547e-5,-6.374161530130195e-8,0.004034233855241526,1.928170635220029e-5,-6.41868612531973e-8,0.004034264876079334,1.9452018078757834e-5,-6.453000617107153e-8,0.004034253391531761,1.9546047063260236e-5,-6.47197441623075e-8,0.004034229755724816,1.9548977882390267e-5,-6.472596597020264e-8,0.004034227730682795,1.9459320969577683e-5,-6.454533452522716e-8,0.004034279865723162,1.9290186380915923e-5,-6.420383235003002e-8,0.004034412486171448,1.9068594732676885e-5,-6.375547510633614e-8,0.00403464093034948,1.8832637893526655e-5,-6.327679436677401e-8,0.004034965687074627,1.8626536313167505e-5,-6.285707244922939e-8,0.004035370034247165,1.8493819644007736e-5,-6.258465123000945e-8,0.004035819874790727,1.846886648562048e-5,-6.252971679787746e-8,0.004036266904185114,1.856732169763407e-5,-6.272465029492704e-8,0.0040366565598250765,1.8777113738250836e-5,-6.31455681508602e-8,0.0040369414612311345,1.9053783781087113e-5,-6.370271942688705e-8,0.004037098344333292,1.932539834606959e-5,-6.42504851948613e-8,0.004037141902942749,1.951083270094533e-5,-6.462457097034529e-8,0.004037125865169994,1.954813798447868e-5,-6.46995458547251e-8,0.004037125861820998,1.9419995141300983e-5,-6.444028053955575e-8,0.00403721048480607,1.9160768124473176e-5,-6.391602935018678e-8,0.004037416430514758,1.88403649270376e-5,-6.326771012194285e-8,0.0040377405727112705,1.853563684839144e-5,-6.265022145619625e-8,0.004038149143064464,1.8305856043064805e-5,-6.218312567891382e-8,0.004038594479970898,1.8181596820678142e-5,-6.192833669694351e-8,0.004039029805036155,1.8165835433560526e-5,-6.189230839848963e-8,0.004039418015136255,1.8241197474729e-5,-6.204049708155263e-8,0.0040397350446880215,1.837815198734788e-5,-6.231370568667206e-8,0.004039969999138671,1.8541650006683282e-5,-6.264136381327966e-8,0.004040124041563737,1.8695860404660215e-5,-6.295108921511804e-8,0.004040209074777056,1.8807706049100226e-5,-6.317591860236914e-8,0.004040246363654397,1.88500021655281e-5,-6.32607471793734e-8,0.004040264737547788,1.8804636954320954e-5,-6.316879237455187e-8,0.004040297831687618,1.866571824947087e-5,-6.288791561688243e-8,0.004040379958326903,1.844201983765977e-5,-6.243550964565625e-8,0.004040540705219954,1.8157672301950075e-5,-6.185990253089828e-8,0.004040799030115895,1.7850119174229367e-5,-6.123634554926798e-8,0.0040411581509778,1.7564868093298403e-5,-6.065660011340943e-8,0.004041602732207329,1.734741098407994e-5,-6.021277355052825e-8,0.0040420995762303815,1.7233639004230466e-5,-5.997796689164541e-8,0.004042602323436688,1.724067110935005e-5,-5.998756494201581e-8,0.00404305992163886,1.736012884995211e-5,-6.022533875758978e-8,0.004043427966196684,1.7555910433464828e-5,-6.061865961283453e-8,0.0040436810936756275,1.7768500926616962e-5,-6.104709566844615e-8,0.004043823230883101,1.7927149455153616e-5,-6.1367140862782e-8,0.004043891164479845,1.7968977540453174e-5,-6.145110341710769e-8,0.004043947176700689,1.7860007267002482e-5,-6.122984744605595e-8,0.0040440603521150744,1.760913353792817e-5,-6.072111082777755e-8,0.004044282997667049,1.726658843338252e-5,-6.002633777071843e-8,0.004044633306112802,1.6905912165610116e-5,-5.929416783466505e-8,0.0040450925842591984,1.6598297213721576e-5,-5.866858772554347e-8,0.004045616463144047,1.6391968202125593e-5,-5.824729428445154e-8,0.004046152091763345,1.630410509649094e-5,-5.80653572847142e-8,0.004046652760383014,1.6324348036651065e-5,-5.8102214711525505e-8,0.004047085929565268,1.6424100266681775e-5,-5.830035937199191e-8,0.004047435228495953,1.6566189179488793e-5,-5.8584786032397173e-8,0.004047698959744002,1.671216642566975e-5,-5.8877737365682856e-8,0.004047887444712365,1.6826943646276348e-5,-5.9108127517374904e-8,0.00404802049508203,1.6881670483517197e-5,-5.9217433706880595e-8,0.004048125273323472,1.6855947238255258e-5,-5.9164217502915826e-8,0.004048234127401434,1.674008799311883e-5,-5.8928701076803824e-8,0.004048381670060571,1.6537530470193916e-5,-5.851761039418674e-8,0.004048600436416601,1.6266746291805815e-5,-5.796802584768781e-8,0.004048914984056892,1.5961326425245878e-5,-5.734760338043135e-8,0.004049335282066074,1.566668088020222e-5,-5.674801447212363e-8,0.0040498513719114376,1.5432414454828066e-5,-5.626965875165331e-8,0.004050431921230339,1.5301075079280176e-5,-5.5998974280483204e-8,0.004051028668995067,1.5296083993458358e-5,-5.598395649797168e-8,0.004051586738790464,1.5412983005455173e-5,-5.62162478465142e-8,0.004052058328986434,1.5617600591062285e-5,-5.6627167195976384e-8,0.004052415758160085,1.5852514347711364e-5,-5.7100596870077054e-8,0.004052659913064241,1.6050494133565283e-5,-5.7500160816537554e-8,0.0040528214440387015,1.6151570852562244e-5,-5.7703907353645075e-8,0.004052953861013157,1.611931020329749e-5,-5.763746552942237e-8,0.004053119682835466,1.595162622613579e-5,-5.729612717276807e-8,0.004053373025435257,1.5682212292362576e-5,-5.6747852350428666e-8,0.004053744027610918,1.537106055446932e-5,-5.611410681536437e-8,0.004054230846152612,1.5086637935810276e-5,-5.553375453822118e-8,0.004054802304411898,1.488624806595296e-5,-5.5123232299645195e-8,0.0040554095026198176,1.4802029857689209e-5,-5.494808734565473e-8,0.004056000829014219,1.4836834906018199e-5,-5.501449222707493e-8,0.0040565344012080526,1.496913360261363e-5,-5.527907211829798e-8,0.004056984713435475,1.5162646600086324e-5,-5.5668377746635783e-8,0.004057343673139978,1.537616244421555e-5,-5.609881419197702e-8,0.004057618154709957,1.5570907870645105e-5,-5.6491651348612124e-8,0.004057826336088842,1.571498161585009e-5,-5.678207302107251e-8,0.004057994236563965,1.5785663812756403e-5,-5.692387796847087e-8,0.004058152876449292,1.5770755436499932e-5,-5.6892175274642595e-8,0.004058335730497766,1.56698047725992e-5,-5.6685842838322767e-8,0.004058575736492297,1.5495479753201927e-5,-5.6330312045967666e-8,0.004058901067412491,1.5274593050186677e-5,-5.587969998232432e-8,0.0040593292989023755,1.504744016568601e-5,-5.541556302293769e-8,0.004059860688647646,1.4863522530534258e-5,-5.5038323485976716e-8,0.004060472924789321,1.4772178278052189e-5,-5.484831991380623e-8,0.004061121016256655,1.4808824187926628e-5,-5.491786333355384e-8,0.004061745398388068,1.4980995070619321e-5,-5.526278213620586e-8,0.0040622878335508355,1.5260905424743596e-5,-5.58271445794069e-8,0.00406270977840194,1.5589957864201896e-5,-5.6492254117461846e-8,0.004063005280007226,1.5895053516072876e-5,-5.71096919262533e-8,0.004063202722944347,1.611033761314179e-5,-5.7545486920249105e-8,0.004063355322523949,1.6195737978189514e-5,-5.7717829505718655e-8,0.004063524982892078,1.614629397440836e-5,-5.761611433490631e-8,0.0040637654881181635,1.5990874718776372e-5,-5.729846921069878e-8,0.0040641096822484745,1.5782374878243806e-5,-5.687200018963553e-8,0.004064563196214051,1.558309622417832e-5,-5.646323142518138e-8,0.004065105372946402,1.5449401160722053e-5,-5.6186965778914343e-8,0.004065696400389077,1.5419375479983378e-5,-5.612111731815594e-8,0.004066288252635861,1.5506240841777267e-5,-5.6293121212787874e-8,0.004066836155862962,1.5698542971993716e-5,-5.668010909236039e-8,0.004067307459695976,1.5966009975132922e-5,-5.7220705532581126e-8,0.00406768613309999,1.6268363193234948e-5,-5.783296271933897e-8,0.004067972917711898,1.6564106468153707e-5,-5.8432340733695405e-8,0.004068182486831887,1.681727652571284e-5,-5.894554234053274e-8,0.00406833933892352,1.7001503611134662e-5,-5.931880776278692e-8,0.004068473756113949,1.7101841750667816e-5,-5.952159722920657e-8,0.004068618388467829,1.7115337876791556e-5,-5.9547687041123166e-8,0.004068805319711415,1.7051183194416186e-5,-5.941546370891142e-8,0.004069063045413328,1.693080237181354e-5,-5.9168176976249445e-8,0.004069412642286213,1.6787584460103433e-5,-5.887352588619779e-8,0.004069862675046376,1.6665125654505054e-5,-5.862021049541122e-8,0.0040704033862420915,1.6612132979317868e-5,-5.8507611354420696e-8,0.004071002433343476,1.6672362317351996e-5,-5.8625252169843815e-8,0.004071606146962371,1.6870078458229394e-5,-5.90230533337598e-8,0.004072150180031084,1.7195707718266797e-5,-5.968194828764344e-8,0.004072579327330133,1.7600304654934825e-5,-6.050250155157372e-8,0.004072869038903364,1.800622384140864e-5,-6.132663264350784e-8,0.004073036765467772,1.8332569931295446e-5,-6.1989505493645e-8,0.004073135737926338,1.852349328887892e-5,-6.237718185712606e-8,0.004073234663677566,1.85650892687075e-5,-6.246099877342193e-8,0.004073394556097025,1.848476914851136e-5,-6.229627231999442e-8,0.004073652726352091,1.833737723399551e-5,-6.199414171839608e-8,0.004074017372470005,1.818678426452505e-5,-6.168431508746106e-8,0.0040744707750797445,1.808984214398682e-5,-6.148259812586677e-8,0.004074977337424825,1.8085790232343694e-5,-6.14693541796517e-8,0.004075493263269258,1.8191439776279438e-5,-6.167952512829171e-8,0.004075975798354961,1.840124607827241e-5,-6.210249277646861e-8,0.004076390776901895,1.8691144047334405e-5,-6.268964660170682e-8,0.004076717622217568,1.902494399145827e-5,-6.336732629192284e-8,0.004076951353972912,1.9361837440099986e-5,-6.405219775676581e-8,0.004077101746210127,1.96635091438295e-5,-6.46659095300111e-8,0.0040771903314508785,1.989970237527024e-5,-6.514655672234517e-8,0.004077246262806788,2.005165635670929e-5,-6.545569860243698e-8,0.004077302032084395,2.0113486301099913e-5,-6.558109876386352e-8,0.0040773896466789,2.0092092019349717e-5,-6.553647593087778e-8,0.004077537342209875,2.0006253451383885e-5,-6.535969647604283e-8,0.004077766555167821,1.988527789663943e-5,-6.511016738314298e-8,0.004078088689458051,1.976710784085783e-5,-6.486516989220184e-8,0.004078501328342447,1.96951136887764e-5,-6.471343334262049e-8,0.004078984379126887,1.971216651307541e-5,-6.474300004433253e-8,0.004079498090171917,1.985082590723176e-5,-6.502100525056876e-8,0.004079986278779378,2.0120252289371937e-5,-6.55667052274478e-8,0.004080388235941525,2.0494122797303468e-5,-6.632662153528476e-8,0.004080659282108669,2.0908086133771597e-5,-6.716933519624624e-8,0.0040807921628955995,2.1274886377819846e-5,-6.791652262392293e-8,0.004080825530396653,2.151542116556529e-5,-6.840653341073122e-8,0.00408083076942298,2.1590301346052778e-5,-6.855881484240877e-8,0.00408088328291802,2.1513241158620907e-5,-6.84010788689678e-8,0.004081035155949392,2.134019848115492e-5,-6.804703209129059e-8,0.004081302546732209,2.1144355238359504e-5,-6.764545015636383e-8,0.004081668918553097,2.0992072249557375e-5,-6.733141248227607e-8,0.00408209685499066,2.092848134334002e-5,-6.719713964870882e-8,0.004082540990125184,2.09731231952271e-5,-6.72830951751148e-8,0.004082958197133572,2.112218615191573e-5,-6.758231956110174e-8,0.00408331422869279,2.1353847294547875e-5,-6.805099975797541e-8,0.0040835874057665485,2.1634567155020024e-5,-6.862106700376206e-8,0.004083770116681637,2.1925434668298697e-5,-6.921309213990532e-8,0.004083868551366543,2.218816882099307e-5,-6.974866033503243e-8,0.0040839008942840345,2.239039499761978e-5,-7.016132947403248e-8,0.004083894232067077,2.250978778831476e-5,-7.0405207142333e-8,0.004083880571241067,2.25366960163881e-5,-7.046030306590217e-8,0.00408389252947929,2.2475031488631666e-5,-7.033426314434203e-8,0.004083959249418965,2.2341562177163083e-5,-7.00608865512821e-8,0.004084102836943754,2.2163971654346905e-5,-6.969625158825354e-8,0.004084335399848269,2.1977972812721735e-5,-6.931302372966625e-8,0.004084656614019778,2.1823582213426522e-5,-6.899305140282665e-8,0.004085051725131036,2.1740298666453316e-5,-6.881758196303943e-8,0.00408549043013785,2.1760499615591525e-5,-6.88536205880247e-8,0.004085928134416261,2.1900671848150498e-5,-6.913569532030017e-8,0.0040863118371121795,2.215161693360532e-5,-6.964550832191338e-8,0.004086592559838579,2.2471365259167905e-5,-7.029728262333709e-8,0.004086743511323791,2.278742626781085e-5,-7.094245749548945e-8,0.004086777069432108,2.3014650869490377e-5,-7.140649996468963e-8,0.004086748324489586,2.3086554162397423e-5,-7.155319319147187e-8,0.004086737210606845,2.298478523801362e-5,-7.134486880118048e-8,0.0040868162246094596,2.274751838270059e-5,-7.085933294161156e-8,0.004087022774633262,2.245098166859568e-5,-7.025197183973786e-8,0.004087351063401967,2.21773293531232e-5,-6.969023534135919e-8,0.004087762942117613,2.1988078250473938e-5,-6.929965848306815e-8,0.004088206426731321,2.1912888693068682e-5,-6.914113536613453e-8,0.0040886315320029145,2.1951514131721826e-5,-6.921484527465759e-8,0.004088999563181579,2.2082048330308014e-5,-6.947683655171173e-8,0.004089286694209541,2.227007195705091e-5,-6.985740065000953e-8,0.0040894840997412005,2.2476260228544262e-5,-7.027641992708612e-8,0.004089596524746182,2.2662126678655353e-5,-7.065510425729817e-8,0.004089640201779963,2.2794420332461283e-5,-7.092513321189004e-8,0.0040896402838893646,2.284862699133553e-5,-7.103599943485881e-8,0.004089627705490863,2.2811697616913437e-5,-7.096068474456991e-8,0.004089635411507748,2.2683801109797253e-5,-7.069921973276663e-8,0.004089694115390104,2.2478677051700234e-5,-7.027932793650815e-8,0.004089828036207196,2.2222286505042233e-5,-6.975365444924291e-8,0.004090051161470819,2.1949786269337134e-5,-6.919369964114232e-8,0.004090364511991667,2.170103932630054e-5,-6.86808528694382e-8,0.004090754790796106,2.151498959955255e-5,-6.829506592183514e-8,0.004091194666195651,2.142330844766789e-5,-6.810185855541579e-8,0.004091644993372157,2.1443624281504225e-5,-6.813824314344391e-8,0.0040920596967446154,2.1572833523424404e-5,-6.83986719144852e-8,0.004092394222561333,2.1782031162445324e-5,-6.88243378416857e-8,0.00409261763274889,2.2016102025325163e-5,-6.93022303226837e-8,0.0040927261558925485,2.2201941671687712e-5,-6.968213454108016e-8,0.004092752390399775,2.226781056753669e-5,-6.98165868041908e-8,0.004092761828782771,2.217010941896625e-5,-6.961594162020133e-8,0.004092832347522563,2.191489742469643e-5,-6.90924145000651e-8,0.004093023916310563,2.1559197363135236e-5,-6.836256507621499e-8,0.004093355382863215,2.1188443825140062e-5,-6.760103065423595e-8,0.004093801442773309,2.0883140487863215e-5,-6.697239893387999e-8,0.004094308353665391,2.0693642127327703e-5,-6.657980636574702e-8,0.004094815962852751,2.0632674505226746e-5,-6.644971858931919e-8,0.0040952745320277885,2.068224872375703e-5,-6.654596569206641e-8,0.0040956524926629954,2.0806194730034872e-5,-6.67951505187713e-8,0.004095937126088291,2.0961685991746184e-5,-6.711000602505771e-8,0.004096131713874594,2.1107263596701378e-5,-6.740571701477901e-8,0.004096251810518326,2.1207630473032185e-5,-6.760979080112129e-8,0.004096321810660583,2.123646163530461e-5,-6.766796655208107e-8,0.004096371868974252,2.117828020698269e-5,-6.754820351325027e-8,0.004096434786498749,2.102987222746858e-5,-6.724363080817744e-8,0.0040965424713340064,2.0801158863912584e-5,-6.677428971329367e-8,0.004096721827951759,2.0514974467630822e-5,-6.618661611930796e-8,0.004096990403276643,2.0205057223031076e-5,-6.554934138305202e-8,0.004097352573177603,1.9911884762201487e-5,-6.494509874821933e-8,0.0040977972420050135,1.9676507214749987e-5,-6.445798705026133e-8,0.00409829795293573,1.953307645034436e-5,-6.415839226662203e-8,0.00409881595753222,1.950131413892924e-5,-6.408749767114518e-8,0.0040993062317397294,1.958041987144307e-5,-6.424454113672405e-8,0.004099725949858662,1.9745840788228674e-5,-6.457984351456717e-8,0.004100044534043069,1.9950335607570126e-5,-6.499672432697775e-8,0.004100253632198516,2.013084019847643e-5,-6.536554032319219e-8,0.004100374104936217,2.0221969791798727e-5,-6.555157283498206e-8,0.004100455954183344,2.017477740412432e-5,-6.545379905395303e-8,0.0041005675891791,1.9975516702515512e-5,-6.504358355699308e-8,0.004100774805833544,1.965545542492212e-5,-6.438482789008002e-8,0.004101116885460426,1.928372582152993e-5,-6.361922074229146e-8,0.004101591870619371,1.894360567216253e-5,-6.291755062884213e-8,0.004102159238000308,1.8703470116557066e-5,-6.242018269746027e-8,0.00410275747591571,1.859703517591237e-5,-6.219659152435074e-8,0.0041033257619690735,1.8620141853715126e-5,-6.223872071816769e-8,0.004103819526959297,1.874065523208672e-5,-6.248114525442182e-8,0.004104216341986781,1.8912959818053868e-5,-6.283064370406833e-8,0.004104514378076207,1.909031638156852e-5,-6.319144791179558e-8,0.004104727475774354,1.9232607115184218e-5,-6.348113509152911e-8,0.004104879851426564,1.931006277488053e-5,-6.363836365897142e-8,0.004105001750774871,1.9304641429037065e-5,-6.362581755356893e-8,0.004105126061105588,1.9210481227772614e-5,-6.343120965738759e-8,0.004105285298052878,1.903412670485694e-5,-6.306774716776545e-8,0.004105508333763851,1.879451414608241e-5,-6.257405625726658e-8,0.004105816518487927,1.8522105372562953e-5,-6.201237977882163e-8,0.004106219408261088,1.8256224455901378e-5,-6.146316659960243e-8,0.004106711031782206,1.8039834534071813e-5,-6.101448588822051e-8,0.00410726820104739,1.7911758794004197e-5,-6.074620274769431e-8,0.00410785241819564,1.7897526858302653e-5,-6.071123337928272e-8,0.004108416180285091,1.8001212401072268e-5,-6.091866896065255e-8,0.0041089130241994485,1.820113748087769e-5,-6.132469615222139e-8,0.004109309104207408,1.8451646262672002e-5,-6.183595690444914e-8,0.0041095931983087045,1.869153552715818e-5,-6.232669811154938e-8,0.004109782084836411,1.8857869433917337e-5,-6.266717936609684e-8,0.004109919049387194,1.890226775739589e-5,-6.275732940350907e-8,0.004110064678761718,1.8805497319272342e-5,-6.255697025959145e-8,0.004110281124285083,1.858555641793577e-5,-6.210261238000375e-8,0.004110613703963449,1.829511610327427e-5,-6.150227952510236e-8,0.004111076186029953,1.8007169267841526e-5,-6.090602884987728e-8,0.004111646199815092,1.779292050803584e-5,-6.046048759796877e-8,0.0041122733354077975,1.770055011084275e-5,-6.026514317284309e-8,0.0041128962379817155,1.774357289428051e-5,-6.034829633072815e-8,0.004113460777981091,1.790224628658376e-5,-6.06698069713779e-8,0.004113932211375858,1.8134726118468195e-5,-6.114390913053563e-8,0.004114298813701848,1.8391239948785017e-5,-6.166830949707429e-8,0.004114568894174971,1.862570592744579e-5,-6.214811466500701e-8,0.004114764817887481,1.8802594772439982e-5,-6.251002429640857e-8,0.004114916941016438,1.8899611324047082e-5,-6.270792853777051e-8,0.004115058788903396,1.8907892822336005e-5,-6.272336282371548e-8,0.004115223529956793,1.883126597625609e-5,-6.256398245923092e-8,0.00411544112890223,1.8685396522870248e-5,-6.226179188618023e-8,0.004115735426728429,1.8496880076378558e-5,-6.187126850283822e-8,0.004116120670135077,1.830166124887891e-5,-6.146615285795259e-8,0.0041165976094830435,1.8141735245261587e-5,-6.113275473128614e-8,0.0041171501459813615,1.8059102673713814e-5,-6.095761535265301e-8,0.0041177444298378775,1.808677278934742e-5,-6.100903876410642e-8,0.0041183326482072515,1.8238377845822922e-5,-6.131565461947553e-8,0.004118862644895194,1.8500025366803055e-5,-6.184947666116739e-8,0.004119291845670744,1.882888305936909e-5,-6.252277761117837e-8,0.004119600995524518,1.916129270179671e-5,-6.320463576506777e-8,0.004119802051454148,1.9429176950619105e-5,-6.375467477591138e-8,0.004119936452241972,1.9579389208801835e-5,-6.406297574667329e-8,0.004120063979010977,1.958911524116044e-5,-6.408192449547398e-8,0.004120246088908799,1.9472222424355246e-5,-6.383944294513096e-8,0.00412052913259154,1.927501773422856e-5,-6.343041897475507e-8,0.004120932292519319,1.906320686341203e-5,-6.299000026420115e-8,0.0041214433902594435,1.890409343719484e-5,-6.265701578056743e-8,0.004122023468462977,1.884920647966687e-5,-6.253815085908088e-8,0.004122618451191795,1.8922390072082127e-5,-6.268323571647604e-8,0.004123173897075194,1.911656377839061e-5,-6.307832429936484e-8,0.0041236480036418895,1.939920158835302e-5,-6.365677983994343e-8,0.004124019202185466,1.9723461236942205e-5,-6.432213367561228e-8,0.004124287288244285,2.0040448516884058e-5,-6.49734234542431e-8,0.004124469567213898,2.0308896945277934e-5,-6.552527867409888e-8,0.004124594685466592,2.050066336393985e-5,-6.591937018917111e-8,0.004124696486907284,2.0602417835979338e-5,-6.61279466825767e-8,0.004124809121272801,2.0614914334906605e-5,-6.615231627858997e-8,0.00412496354787499,2.055127128513555e-5,-6.601926590271963e-8,0.004125184918062037,2.0435134717556e-5,-6.57772755655983e-8,0.004125490124622406,2.029885113054249e-5,-6.549281651963915e-8,0.004125884999648892,2.0181120072676474e-5,-6.524562199853932e-8,0.004126361187835996,2.012312227810521e-5,-6.512079755335909e-8,0.004126893637683346,2.016202160381174e-5,-6.519543374690128e-8,0.0041274407643772945,2.0321520249793008e-5,-6.551902559572129e-8,0.0041279499280898095,2.0601210358685798e-5,-6.609131944530118e-8,0.00412836969991199,2.0969274287628928e-5,-6.684706034379096e-8,0.004128666706476001,2.1364544730577544e-5,-6.766013860494177e-8,0.0041288402130868545,2.1711284432474734e-5,-6.837410979895914e-8,0.0041289260941142205,2.1943052421982018e-5,-6.88515335136089e-8,0.0041289863790102055,2.2025323150899638e-5,-6.902071138081227e-8,0.004129088666642758,2.1966206179071726e-5,-6.889782614187511e-8,0.0041292849632450085,2.1811418243791324e-5,-6.857662713945957e-8,0.0041295982485091585,2.1627811881081866e-5,-6.819461136355642e-8,0.004130019713586947,2.1483464269815928e-5,-6.789215710034456e-8,0.004130514847826705,2.1431037977969292e-5,-6.777831067919666e-8,0.004131034556120914,2.1497848193685356e-5,-6.79102050168444e-8,0.0041315275855180284,2.1683260008845836e-5,-6.828741599827955e-8,0.0041319514162801475,2.196236627165169e-5,-6.885922779761631e-8,0.0041322797208666745,2.2294052841138688e-5,-6.95410620986726e-8,0.004132505435793167,2.2631076927335552e-5,-7.023526137874012e-8,0.004132639559466678,2.2929656701609897e-5,-7.085103297987233e-8,0.0041327068073958445,2.3156619956378226e-5,-7.131941152567361e-8,0.004132739789933165,2.329325563893979e-5,-7.160135080100659e-8,0.0041327732697304005,2.3336073204430915e-5,-7.168931655885992e-8,0.004132839498526474,2.3295362222597494e-5,-7.160425905283545e-8,0.00413296489491445,2.319267720853539e-5,-7.139037898864675e-8,0.004133167727447015,2.3058081690060263e-5,-7.110948143247038e-8,0.004133456251584568,2.2927368246838634e-5,-7.083536734083875e-8,0.004133826864680379,2.2838893766911416e-5,-7.064744138921729e-8,0.004134262246139552,2.2829234263837425e-5,-7.062178621276581e-8,0.004134730285875639,2.2926717969593375e-5,-7.081769093706275e-8,0.004135185707911027,2.31425991815179e-5,-7.125916402041035e-8,0.0041355769071945506,2.346164589422353e-5,-7.191520269449173e-8,0.004135859441965122,2.383687117408675e-5,-7.268874415754124e-8,0.00413601369908566,2.4195039750171892e-5,-7.342810252300716e-8,0.004136058529573073,2.4456681249135846e-5,-7.396855759155849e-8,0.004136050487278654,2.456513384479195e-5,-7.419258398190955e-8,0.004136065019007573,2.4509860369459744e-5,-7.407805053129414e-8,0.004136168231272512,2.4330162569653813e-5,-7.370577611668552e-8,0.004136394459822497,2.409789030051738e-5,-7.322376999160329e-8,0.0041367395368764786,2.389056192725738e-5,-7.279186780905995e-8,0.0041371686481556655,2.3768649735412706e-5,-7.253505860848046e-8,0.004137631091783037,2.3763952092816136e-5,-7.251957894397494e-8,0.0041380747660009765,2.3878490225956004e-5,-7.275049880309497e-8,0.004138456791204421,2.4090059448810835e-5,-7.318286374029693e-8,0.004138749601503419,2.4360668956780575e-5,-7.37387885346733e-8,0.004138943194899096,2.4645468588374668e-5,-7.4325712073413e-8,0.004139044422775969,2.49009409295305e-5,-7.485336553975188e-8,0.0041390740178470385,2.509158954761269e-5,-7.52478055388981e-8,0.004139062078858488,2.519450532721772e-5,-7.546109277291754e-8,0.004139042857680081,2.5201537323836e-5,-7.547591881161818e-8,0.004139049681730755,2.5119185084212284e-5,-7.530538123596477e-8,0.004139110696144454,2.4966623708413148e-5,-7.498882514872912e-8,0.004139245793706889,2.4772544989273615e-5,-7.458527889421062e-8,0.004139464664095014,2.4571523457755883e-5,-7.416602259172535e-8,0.0041397656452513715,2.4400247311316832e-5,-7.380696250121588e-8,0.004140135103394312,2.4293510720908743e-5,-7.358048043260725e-8,0.004140547313718007,2.427954414351527e-5,-7.354575599206736e-8,0.004140965413628404,2.4374141223041407e-5,-7.373639326420042e-8,0.004141344873455721,2.457362346913388e-5,-7.414551482757032e-8,0.004141641326420783,2.48483642172095e-5,-7.471205791422762e-8,0.0041418235765014145,2.5141002654557318e-5,-7.53169965475809e-8,0.004141889215372904,2.537511100337642e-5,-7.58014858398564e-8,0.004141874921065243,2.5477517766043897e-5,-7.601342829768719e-8,0.004141851043315424,2.5408217951499304e-5,-7.58696248028512e-8,0.004141897199717203,2.5181416417097176e-5,-7.539927233814727e-8,0.004142070032062376,2.4862233791190885e-5,-7.473692425033855e-8,0.004142382136416294,2.4539521848464896e-5,-7.406615519129582e-8,0.004142802962387187,2.4291862821753357e-5,-7.354938496791458e-8,0.004143276515293847,2.4165133492908547e-5,-7.328171206236878e-8,0.004143742610608551,2.416776805253065e-5,-7.328119646301892e-8,0.004144152149564842,2.427840550811608e-5,-7.350451056510971e-8,0.004144474270556827,2.4457891470911152e-5,-7.387144252687797e-8,0.004144697408744952,2.4660435604785124e-5,-7.428767698568889e-8,0.004144827026181618,2.484202674459949e-5,-7.466207837487929e-8,0.004144881994566124,2.4966196964502726e-5,-7.491871231531306e-8,0.0041448905048311665,2.500781452275799e-5,-7.500493400442998e-8,0.004144885711446158,2.4955282841337656e-5,-7.489617429690564e-8,0.004144901261135358,2.481120187725696e-5,-7.459741678649363e-8,0.004144966982912023,2.4591489692204364e-5,-7.41413441693972e-8,0.004145105121592094,2.4322991873659133e-5,-7.358329870301691e-8,0.004145327544473218,2.403980237268326e-5,-7.299364256044502e-8,0.004145634190738719,2.377879003345024e-5,-7.24485997969921e-8,0.0041460127758167105,2.3574818073592004e-5,-7.202053283003591e-8,0.00414643966336036,2.3455929817344242e-5,-7.17680808924154e-8,0.004146881876040019,2.343860803994068e-5,-7.172625974921142e-8,0.0041473004753961136,2.3523144481116746e-5,-7.189658153429537e-8,0.004147656007247302,2.3689506623327728e-5,-7.223811648289735e-8,0.004147916808771172,2.3895221603221915e-5,-7.266284458651311e-8,0.0041480699650081705,2.4078275121643128e-5,-7.304167053080141e-8,0.004148132195104441,2.4168654642653938e-5,-7.322864004199276e-8,0.004148154320381181,2.4109831376965727e-5,-7.310586674653458e-8,0.004148211444887462,2.388423375298592e-5,-7.263656875158706e-8,0.004148377033934869,2.3528252738308904e-5,-7.189610084153054e-8,0.004148691963497075,2.3123109596003326e-5,-7.105280147716092e-8,0.0041491473031022115,2.27629923552026e-5,-7.030185625864194e-8,0.004149691355374006,2.251899382813585e-5,-6.979067613092937e-8,0.004150253959921051,2.2418989460666156e-5,-6.957735617198645e-8,0.0041507716459602394,2.2449203170718728e-5,-6.963393426794152e-8,0.0041512023452277315,2.2568972898863263e-5,-6.987681903782312e-8,0.004151528686471275,2.2727414027209948e-5,-7.020106669410957e-8,0.004151754402958528,2.287579296648152e-5,-7.050582576156142e-8,0.004151898371708361,2.2974592076086222e-5,-7.070894000466604e-8,0.004151988885126911,2.2996670531363484e-5,-7.075363347500511e-8,0.004152058955955876,2.2928322974470473e-5,-7.061092750138042e-8,0.004152142382845093,2.2769356506527704e-5,-7.02799821925708e-8,0.0041522701226427315,2.253246200945357e-5,-6.978684571499767e-8,0.004152466791086021,2.2241707192617996e-5,-6.91812637823709e-8,0.004152747431065876,2.192983419561754e-5,-6.853098876725601e-8,0.004153115009949348,2.163416853510276e-5,-6.791329347391853e-8,0.004153559267504416,2.1391372281000134e-5,-6.740420502635174e-8,0.004154057371060857,2.1231670864169294e-5,-6.706668724391143e-8,0.004154576533781043,2.1173336928637963e-5,-6.693925978559595e-8,0.004155078480972005,2.121824985076246e-5,-6.702665399660066e-8,0.00415552544495053,2.1349266802329204e-5,-6.729405133405011e-8,0.004155887326128362,2.153005321203464e-5,-6.76663910045802e-8,0.004156149549489265,2.1708297200182368e-5,-6.803485371706521e-8,0.004156320429207047,2.18236504091612e-5,-6.827342868724723e-8,0.004156435436193511,2.1821325191162423e-5,-6.826745995209362e-8,0.004156554325266331,2.1670061717922965e-5,-6.795132318021076e-8,0.004156747395736589,2.137880483492358e-5,-6.734326680703699e-8,0.004157071827894007,2.100211751024774e-5,-6.655662407843876e-8,0.004157547507220719,2.0626045399976664e-5,-6.577030263586701e-8,0.004158146618620178,2.033725265562143e-5,-6.516458127082557e-8,0.0041588047435924405,2.0191197783449442e-5,-6.485500848833399e-8,0.00415944679960301,2.0196654226797564e-5,-6.486025586921148e-8,0.004160012347865569,2.0321627878139327e-5,-6.51143438105989e-8,0.004160468885463152,2.0512010737360385e-5,-6.550526134746365e-8,0.004160812154099564,2.071068901280456e-5,-6.591452917912113e-8,0.004161059067630895,2.087014425419266e-5,-6.624331294613351e-8,0.004161239040043181,2.095792204410952e-5,-6.642382604808944e-8,0.004161386829742425,2.095738077188751e-5,-6.642102047979822e-8,0.0041615375835493676,2.0866361049708102e-5,-6.622998144256762e-8,0.004161723445766619,2.069540030448162e-5,-6.587231810027344e-8,0.004161970833005958,2.0465957657424777e-5,-6.53924752623177e-8,0.004162297807662163,2.0208374532718804e-5,-6.485342857751e-8,0.004162711465524075,1.9958972538912966e-5,-6.433060157681065e-8,0.004163205788963567,1.9755721872438256e-5,-6.390289279020207e-8,0.004163760874885751,1.9632401292486634e-5,-6.364064398012052e-8,0.0041643445126078645,1.9611945515193513e-5,-6.359191191485507e-8,0.004164916661599382,1.9700370056451175e-5,-6.376982675484982e-8,0.004165436593260296,1.9883038081479463e-5,-6.414465536185601e-8,0.004165871533002719,2.0124840290481865e-5,-6.464389273479223e-8,0.004166204973161034,2.03750141868381e-5,-6.516203187808346e-8,0.0041664427071129,2.0576291719662896e-5,-6.557950750839939e-8,0.004166614831251215,2.067725739446178e-5,-6.578854573835485e-8,0.004166772201513261,2.064596860090837e-5,-6.572180046924913e-8,0.004166976394844767,2.0481684872547044e-5,-6.537706967734264e-8,0.004167283762105637,2.0220289969068403e-5,-6.482876722062341e-8,0.0041677270966903575,1.9928853053708316e-5,-6.42166276496646e-8,0.004168301889621721,1.9687639520167372e-5,-6.370817178698891e-8,0.004168964945397345,1.9564346141463034e-5,-6.344493463573707e-8,0.0041696482095524585,1.9591663234778752e-5,-6.349560115607152e-8,0.004170281928490304,1.975909669494271e-5,-6.383883261318782e-8,0.004170815776114936,2.002177562328637e-5,-6.438149484450375e-8,0.004171229165072177,2.0319307693815556e-5,-6.499787658365365e-8,0.004171529641595815,2.0594371506068787e-5,-6.556842529790701e-8,0.004171744205095692,2.08044574697309e-5,-6.600426377969002e-8,0.004171909319060356,2.0925909999591906e-5,-6.625570255367975e-8,0.004172063035543002,2.095283945319605e-5,-6.631007474738575e-8,0.004172240006446445,2.0893942567726186e-5,-6.618518936112582e-8,0.004172468631381149,2.0769185793469826e-5,-6.592244924085984e-8,0.00417276921141435,2.0606998287037323e-5,-6.558098507505531e-8,0.004173152263607924,2.044171213681954e-5,-6.523229587640529e-8,0.004173616699217774,2.0310521591751063e-5,-6.49539193513707e-8,0.004174148228173609,2.0249146804649307e-5,-6.482044670278411e-8,0.0041747190205534725,2.0285797724636808e-5,-6.489100076513135e-8,0.004175290038969232,2.043401685070224e-5,-6.519431780277011e-8,0.004175817138082009,2.0686286120805764e-5,-6.571531492271147e-8,0.004176260742955059,2.1011275247548487e-5,-6.638915896100802e-8,0.004176596947866172,2.135738903704526e-5,-6.710846106930013e-8,0.004176826283818876,2.1663316572518304e-5,-6.774516430718877e-8,0.004176976440504031,2.187329985370935e-5,-6.818241888125293e-8,0.004177097171342621,2.1952541600749897e-5,-6.834687461472092e-8,0.004177248393652027,2.1897850265493772e-5,-6.823110493770005e-8,0.004177484698447774,2.1740143881249863e-5,-6.789904756326871e-8,0.004177840456289382,2.153777152476557e-5,-6.74722389787032e-8,0.004178319648003268,2.1361956093379974e-5,-6.709951969906079e-8,0.004178893720907776,2.1277850737766288e-5,-6.69174602353876e-8,0.004179508920172153,2.1326593435868438e-5,-6.701273548062968e-8,0.00418010143870764,2.1514398644594126e-5,-6.739909921106913e-8,0.004180615325979776,2.181278040040501e-5,-6.801760816720763e-8,0.004181016588925626,2.2169477458321236e-5,-6.875930338309788e-8,0.004181298828271539,2.2524986894682156e-5,-6.949975199756988e-8,0.004181480040607371,2.282791399696808e-5,-7.013122390191389e-8,0.0041815939531634075,2.304443453220907e-5,-7.058260201965475e-8,0.004181680312312281,2.3160968578745368e-5,-7.082508197011263e-8,0.0041817771738139765,2.31820016723154e-5,-7.086767934850143e-8,0.004181916138040746,2.3125777208913207e-5,-7.074824050457918e-8,0.004182119981389813,2.301988109644779e-5,-7.052420786013162e-8,0.004182401587912403,2.2897560902910874e-5,-7.026493333350233e-8,0.004182763226082177,2.279464572132352e-5,-7.004528039888718e-8,0.004183195714757309,2.27463722411251e-5,-6.993905040066949e-8,0.0041836776903782045,2.2783245722880823e-5,-7.001037080800247e-8,0.004184175936522711,2.2925337371297516e-5,-7.030174363642383e-8,0.004184648351533992,2.3175376573468616e-5,-7.081948145094982e-8,0.00418505106926234,2.351265779926658e-5,-7.152078397866612e-8,0.00418534981740814,2.3891456557676195e-5,-7.231026107348822e-8,0.004185532699444083,2.4247798955379997e-5,-7.305402455302344e-8,0.0041856186975773695,2.4515523630203316e-5,-7.361333203789702e-8,0.004185656116733408,2.4647127383329684e-5,-7.388829334143641e-8,0.004185709463990267,2.4630561585255983e-5,-7.385309068068146e-8,0.004185839553237669,2.4494045601495442e-5,-7.356612233607162e-8,0.004186085175026919,2.4297013898756418e-5,-7.315119149276783e-8,0.004186453058714402,2.4111865678345753e-5,-7.275951997366621e-8,0.00418691819641979,2.4003918546233812e-5,-7.252797509274851e-8,0.004187432570247736,2.4015686123816057e-5,-7.254618294928173e-8,0.004187938527366445,2.4158751006996613e-5,-7.283932258420115e-8,0.00418838289655064,2.4413937365967342e-5,-7.336815666881627e-8,0.004188728513422404,2.4738606360928003e-5,-7.404399556996649e-8,0.00418896077263449,2.5078536869024493e-5,-7.475342352649681e-8,0.004189088187108331,2.5380979408035573e-5,-7.538568393181177e-8,0.004189137637378765,2.560542386655624e-5,-7.585541248978948e-8,0.004189146482758514,2.5729746333905715e-5,-7.611571356090715e-8,0.004189154226481784,2.5751295531856018e-5,-7.616056328669566e-8,0.004189195811872894,2.5684118435083626e-5,-7.601902615037475e-8,0.004189297432699497,2.55542284301067e-5,-7.574531169066045e-8,0.004189474640743976,2.539461358412779e-5,-7.54082984053367e-8,0.004189731923761839,2.5240920754474522e-5,-7.508253449426259e-8,0.004190062893369365,2.5127892543049684e-5,-7.484086743090381e-8,0.004190450577587119,2.508605327542561e-5,-7.474758404267058e-8,0.004190867863493793,2.5137902888573805e-5,-7.48504270355493e-8,0.004191278851066964,2.5293029167128904e-5,-7.517021445445091e-8,0.004191642553303303,2.55423836176811e-5,-7.568861108228818e-8,0.004191920429727899,2.585359199989586e-5,-7.633807975528864e-8,0.004192087961726734,2.6171043691637975e-5,-7.700197953776512e-8,0.0041921473996541884,2.6425138639552714e-5,-7.753404214212685e-8,0.004192134962329874,2.655208648022618e-5,-7.780007245043969e-8,0.004192114992464122,2.6518357750800253e-5,-7.772933711625707e-8,0.004192159595389882,2.6337159580545134e-5,-7.734907825665287e-8,0.0041923223662205,2.6066037508450072e-5,-7.677941655751047e-8,0.004192619875803577,2.578592305862587e-5,-7.618950486964727e-8,0.0041930293080447165,2.557321200031067e-5,-7.57392457018824e-8,0.004193500258489232,2.5478197525003033e-5,-7.553431849801728e-8,0.004193972401104941,2.5516253407646417e-5,-7.560771560475328e-8,0.004194391412284077,2.5670481527066318e-5,-7.592504671513956e-8,0.004194719476384159,2.5901118869691845e-5,-7.640387556528128e-8,0.004194939943894964,2.6157253045760205e-5,-7.693795310378307e-8,0.004195057196908215,2.6387965736528168e-5,-7.742045708403442e-8,0.004195093049339342,2.655137914482246e-5,-7.776307074307687e-8,0.0041950809049979216,2.662075619193178e-5,-7.790902792572845e-8,0.0041950589164355375,2.6587196549228087e-5,-7.783901651533447e-8,0.004195063418449753,2.6459035460426867e-5,-7.75700484300396e-8,0.004195123687424457,2.6258649342688074e-5,-7.714875237095379e-8,0.004195258624765763,2.6017731648806405e-5,-7.664139315682479e-8,0.0041954753979068695,2.5772178721423704e-5,-7.612311259338277e-8,0.004195769575099257,2.5557431308106203e-5,-7.566822001278618e-8,0.004196126138573454,2.540453466231477e-5,-7.534204817948078e-8,0.004196520954855405,2.53367037714102e-5,-7.51938225051339e-8,0.004196922622790946,2.5365966871741377e-5,-7.524954946219042e-8,0.004197295156724912,2.5489504985313087e-5,-7.550410520029874e-8,0.004197602564194241,2.5685951525308174e-5,-7.591317047680027e-8,0.004197816369561635,2.5913292788382522e-5,-7.638861304882352e-8,0.004197925960352721,2.6111518336327034e-5,-7.68040568734833e-8,0.004197949030411529,2.6213720596972247e-5,-7.701841069760118e-8,0.004197935777056729,2.6166841984154432e-5,-7.691972134593537e-8,0.004197959246279704,2.5955973534895593e-5,-7.647632694596954e-8,0.004198090449018128,2.561816100677808e-5,-7.576574198158926e-8,0.0041983690577137925,2.523320397695459e-5,-7.495518310321368e-8,0.00419878704502883,2.4893403872054307e-5,-7.423809664192561e-8,0.004199294657828197,2.466944744060831e-5,-7.37627848726335e-8,0.004199822567905109,2.4590529631573546e-5,-7.35909004360926e-8,0.004200305861270729,2.4644214422214637e-5,-7.369713717322046e-8,0.0042006995521685,2.478930388189759e-5,-7.399597656866322e-8,0.0042009837510207735,2.497203494463084e-5,-7.437531825774549e-8,0.004201161612568837,2.5139530804678885e-5,-7.472443695283559e-8,0.0042012538478359,2.524867550071118e-5,-7.495254886807737e-8,0.004201292331705662,2.527094607106964e-5,-7.49991216701699e-8,0.00420131393742547,2.5194311755950153e-5,-7.483814941996342e-8,0.004201354951284227,2.502295376661067e-5,-7.447781373617757e-8,0.0042014462866753815,2.4775206437341213e-5,-7.395626000164893e-8,0.004201609778427287,2.448005996210069e-5,-7.333420007618452e-8,0.004201855844869758,2.4172631007671907e-5,-7.268529378705414e-8,0.004202182698645817,2.3889171851144942e-5,-7.208562808425933e-8,0.004202577017310062,2.3662279170995062e-5,-7.160372968477706e-8,0.004203015758641201,2.351672818202007e-5,-7.129194406720078e-8,0.004203468829726377,2.3466037764782944e-5,-7.11792747736706e-8,0.004203902457944527,2.3509754658052647e-5,-7.126556074908164e-8,0.004204283346550584,2.3631449505063676e-5,-7.151698648158335e-8,0.004204584061959764,2.3797752657327603e-5,-7.186374646115213e-8,0.0042047900364866496,2.3959694992948275e-5,-7.22027000677904e-8,0.0042049075001769935,2.4058568751254713e-5,-7.240978381987185e-8,0.004204969667533672,2.4038460412971196e-5,-7.23666645880367e-8,0.004205036113172845,2.386531479855544e-5,-7.200115046387884e-8,0.004205179685910332,2.3546624248548318e-5,-7.132872503889457e-8,0.0042054607744250174,2.313929579412769e-5,-7.046897812798647e-8,0.00420589989798239,2.27347232082449e-5,-6.961404483515537e-8,0.004206466015888612,2.242427014344388e-5,-6.895601774624227e-8,0.004207089445384607,2.2264274521212205e-5,-6.861351443079364e-8,0.004207690765000283,2.2260358548173973e-5,-6.859880736537034e-8,0.004208207794816714,2.2375384589948536e-5,-6.883449347627073e-8,0.004208608832725967,2.2550256047354552e-5,-6.919700655526116e-8,0.004208892174623421,2.2724239908018644e-5,-6.955907850228315e-8,0.0042090782601795,2.284808125073127e-5,-6.981713891001085e-8,0.004209200296160906,2.2889691428958756e-5,-6.990328564693268e-8,0.004209296350094005,2.283492007234416e-5,-6.97870980120373e-8,0.004209403565906254,2.268592751806816e-5,-6.947247890090181e-8,0.004209554005893156,2.2458595057271006e-5,-6.899240475833879e-8,0.004209771538720962,2.2179411033598958e-5,-6.840241608206303e-8,0.00421006954601963,2.1881833085248087e-5,-6.777287276654248e-8,0.0042104495193963105,2.1602047665670182e-5,-6.717991814560981e-8,0.0042109008189892645,2.137421177667367e-5,-6.669544160393412e-8,0.004211401868604031,2.1225620883696596e-5,-6.637699983388579e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json new file mode 100644 index 000000000..ea9010347 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_25.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":25000,"numberOfSamples":1000,"samples":[0.0042119228229227776,2.117242668988509e-5,-6.625892772821196e-8,0.00421242951621424,2.1216421815835606e-5,-6.634559593072919e-8,0.004212888396602669,2.1343324948057996e-5,-6.660764965178544e-8,0.004213272077688695,2.1522955697259163e-5,-6.698208934125665e-8,0.004213565153061029,2.171164617537871e-5,-6.737707330135306e-8,0.004213769823711238,2.1857483451438128e-5,-6.768286051317844e-8,0.004213910198871436,2.190927122349849e-5,-6.779084064030356e-8,0.004214032922657624,2.1829493537962127e-5,-6.762116816618272e-8,0.004214200852587069,2.160938196621095e-5,-6.71548148810529e-8,0.004214477322022827,2.1280462370500936e-5,-6.645802296286292e-8,0.004214903100503305,2.091373094832423e-5,-6.568048925307495e-8,0.004215475880773675,2.0600151223130995e-5,-6.501412598684065e-8,0.004216145898744334,2.0417442948628495e-5,-6.462301093688222e-8,0.004216833579580056,2.0400376819345232e-5,-6.458079850055622e-8,0.004217459970123071,2.053157579362677e-5,-6.485132807375522e-8,0.004217972502130171,2.0755398012646987e-5,-6.531780445307867e-8,0.004218354775674382,2.100283844312381e-5,-6.583514699901046e-8,0.004218621473875984,2.1213061032032433e-5,-6.627523661803764e-8,0.004218806437975746,2.1344829856945014e-5,-6.655094448616457e-8,0.0042189509605779895,2.1378863630848206e-5,-6.662115374902181e-8,0.004219095409105211,2.1315105530184897e-5,-6.648517553484988e-8,0.004219274283414654,2.1168357298914947e-5,-6.617374421911176e-8,0.0042195135261831026,2.0964046864058137e-5,-6.574021509881736e-8,0.0042198289277669875,2.0734467344645254e-5,-6.52526270229363e-8,0.004220225061155502,2.0515161357874974e-5,-6.478598265567233e-8,0.004220694716869642,2.0341013243499278e-5,-6.441392136515793e-8,0.004221219187507694,2.024179213121955e-5,-6.419932023758131e-8,0.004221769966808666,2.0237378693578086e-5,-6.418431147260425e-8,0.0042223122778394,2.033346797221274e-5,-6.438129961003437e-8,0.004222810379006872,2.051879431947242e-5,-6.47670814186124e-8,0.0042232340746766765,2.0764877854194254e-5,-6.528213506219293e-8,0.004223565395287756,2.1029006330211313e-5,-6.583665389689409e-8,0.004223804128873946,2.1260585340412296e-5,-6.632374566900979e-8,0.004223970876957566,2.1410361180324564e-5,-6.663887945834917e-8,0.004224106369310762,2.14415465441151e-5,-6.670356203916723e-8,0.0042242657983087495,2.134115638552841e-5,-6.648957977625455e-8,0.004224507399419219,2.112855412696634e-5,-6.603731852191216e-8,0.004224876159364572,2.085686994094544e-5,-6.545888489491197e-8,0.004225386732174476,2.0603067839644234e-5,-6.491709513429656e-8,0.004226013160943935,2.0446027498544085e-5,-6.457905743766462e-8,0.004226693128151923,2.043932475634994e-5,-6.45585312505897e-8,0.004227347974683707,2.059163946791718e-5,-6.487440472016235e-8,0.004227909703767054,2.086563813515611e-5,-6.544822544194953e-8,0.004228341362829596,2.1195202646072075e-5,-6.614053530613902e-8,0.004228642402086946,2.1510125092377255e-5,-6.680302045077538e-8,0.004228840647210552,2.1755805619472572e-5,-6.732012834688552e-8,0.004228978598476052,2.190213346099413e-5,-6.762786101905045e-8,0.0042291010496863166,2.194302357527711e-5,-6.771287814009528e-8,0.0042292470592518745,2.1891133200885374e-5,-6.760145956889963e-8,0.004229446049571827,2.1771621167792976e-5,-6.73464393792848e-8,0.004229716468222322,2.1616855272094037e-5,-6.701607817399818e-8,0.004230065522044785,2.146232151279719e-5,-6.668539495546459e-8,0.004230489183412082,2.134317016838142e-5,-6.642880367863476e-8,0.004230972374903851,2.12906866823376e-5,-6.631261090471438e-8,0.004231489771832401,2.132821216102119e-5,-6.638640134078987e-8,0.00423200798906628,2.1466603019303647e-5,-6.667347585959588e-8,0.004232489876042049,2.1700112891328544e-5,-6.716214332465655e-8,0.004232901078212662,2.2004253231900497e-5,-6.780110661848243e-8,0.0042332180115707534,2.233735468493118e-5,-6.850259405413669e-8,0.004233435294041164,2.264690582136456e-5,-6.915558955274176e-8,0.004233570081750011,2.288024682846949e-5,-6.964836523197342e-8,0.004233661175459219,2.299740945877807e-5,-6.989570010663392e-8,0.00423376212210765,2.298272324126421e-5,-6.986362270031153e-8,0.004233929261141872,2.2851697779811398e-5,-6.958422181245012e-8,0.004234207211841524,2.2650495622957343e-5,-6.915475814576002e-8,0.004234615425259081,2.2446809897144912e-5,-6.871849564593151e-8,0.004235140014210337,2.231313047848069e-5,-6.842929415254376e-8,0.004235734703969059,2.230620625541042e-5,-6.840801170460767e-8,0.004236332511029088,2.2449320169543877e-5,-6.870475534746973e-8,0.004236865352914913,2.2724777630289437e-5,-6.928273029224622e-8,0.004237284245080581,2.3080599212484498e-5,-7.003223837757029e-8,0.004237571736415137,2.3448608166368112E-05,-7.080893495957507e-8,0.004237742342841121,2.3765484141766943e-5,-7.147847424023432e-8,0.004237833085799702,2.3988137660734125e-5,-7.194917126202141e-8,0.004237890189882673,2.4099447950975766e-5,-7.218425790080511e-8,0.004237957595590428,2.4105773514283147e-5,-7.219670738284095e-8,0.004238069919582637,2.4030269658422523e-5,-7.203516533111505e-8,0.004238249618365501,2.39056679238968e-5,-7.176871236223504e-8,0.004238506777009503,2.376842054507791e-5,-7.14744782604305e-8,0.004238839960336995,2.3654485763485328e-5,-7.122870298290076e-8,0.004239237195182148,2.359612316887198e-5,-7.109993006965748e-8,0.00423967689584437,2.3618836515735366e-5,-7.114251881836275e-8,0.00424012919339875,2.3737839999153642e-5,-7.138914208350213e-8,0.004240558555859129,2.3954028829091893e-5,-7.184219988672258e-8,0.004240928632216016,2.425035359666654e-5,-7.246603747851151e-8,0.004241209686151803,2.4590515496345863e-5,-7.31840475098621e-8,0.004241387602314709,2.4922420371615704e-5,-7.388587732093796e-8,0.00424147157146284,2.5187961743731242e-5,-7.44481247159738e-8,0.004241496426214619,2.5338027012562994e-5,-7.476619148263978e-8,0.004241516665120159,2.53481927416961e-5,-7.478765248745461e-8,0.004241592614544567,2.5228750538790737e-5,-7.453362965654456e-8,0.004241773093309497,2.5024267468472517e-5,-7.409800415341168e-8,0.004242080828456248,2.480219962828495e-5,-7.362345063271682e-8,0.004242505642303187,2.463448176734963e-5,-7.326256531566072e-8,0.004243007230734643,2.4578174120876555e-5,-7.313688342900408e-8,0.004243526169055569,2.4660842178798045e-5,-7.330574786416262e-8,0.004243999680967984,2.4874463362710607e-5,-7.375310120416703e-8,0.0042443776570801894,2.5179193207145155e-5,-7.439515440950807e-8,0.004244634361830328,2.551555261019759e-5,-7.510602778954726e-8,0.0042447725833558445,2.5820973313206575e-5,-7.575282082432305e-8,0.004244819645713096,2.6045265557054406e-5,-7.622855268466984e-8,0.004244817657500771,2.6160427534331055e-5,-7.647316726976563e-8,0.004244812063322777,2.6162998914343238e-5,-7.647870316326475e-8,0.004244842201737484,2.6070232563465724e-5,-7.628128320228887e-8,0.004244935733735506,2.5913058455968382e-5,-7.594622609168704e-8,0.004245106822619801,2.572872050475992e-5,-7.555241538069889e-8,0.004245356804103788,2.5554802441117856e-5,-7.517960510152853e-8,0.004245675934005867,2.5425040582432493e-5,-7.48995353162313e-8,0.004246045266184226,2.53664067068817e-5,-7.47697603900719e-8,0.004246438382144604,2.5396616745149382e-5,-7.482836234073875e-8,0.004246823330043397,2.552139706651534e-5,-7.508808847131201e-8,0.004247165619004974,2.5731389115804212e-5,-7.55296442638736e-8,0.004247433275937945,2.5999499171301278e-5,-7.609589214748047e-8,0.0042476044631466715,2.6280705900143398e-5,-7.669131102787287e-8,0.004247676613223559,2.6517177808645175e-5,-7.719284879324458e-8,0.004247673609435171,2.6650746595202952e-5,-7.747651982304646e-8,0.004247645708001549,2.66412350943042e-5,-7.74564776254694e-8,0.004247658309913079,2.6483856580341366e-5,-7.712204781528955e-8,0.004247771456591539,2.6216061034290582e-5,-7.655226898516179e-8,0.004248018640476505,2.590800755606473e-5,-7.589568494417051e-8,0.004248395212570714,2.563994069145496e-5,-7.532244221725396e-8,0.004248861259489376,2.5477021622606432e-5,-7.497104067998361e-8,0.00424935590167607,2.5452038700586148e-5,-7.491170753332291e-8,0.004249815624233812,2.5560514080836893e-5,-7.513587325912593e-8,0.0042501900081495896,2.5766672608186727e-5,-7.556853344785969e-8,0.004250451383611506,2.6015861961209102e-5,-7.609427999654669e-8,0.0042505977356969114,2.6248914551540066e-5,-7.658758795271883e-8,0.0042506498090625795,2.6415031884901112e-5,-7.694017883491166e-8,0.004250644097952955,2.648096828203765e-5,-7.708071584908982e-8,0.0042506237812728765,2.6435303290169302e-5,-7.698415129034421e-8,0.004250629816343292,2.6287691938557887e-5,-7.667036324682085e-8,0.0042506940711203485,2.6064200669597658e-5,-7.619435383064163e-8,0.00425083548128867,2.5800616341765846e-5,-7.563201480582007e-8,0.004251059186062351,2.5535598231431913e-5,-7.506549954746807e-8,0.004251357853991461,2.5304981396812947e-5,-7.457106386619228e-8,0.004251714123475805,2.5137752884505912e-5,-7.421052674232194e-8,0.004252103288002902,2.5053445751813735e-5,-7.402578044122805e-8,0.0042524958808914486,2.5060282096586535e-5,-7.403485203242214e-8,0.004252860347046862,2.5153483119387155e-5,-7.422821487858902e-8,0.004253166420302202,2.5313592833064807e-5,-7.4565027741937e-8,0.004253390056795452,2.5505445065978426e-5,-7.497072826604751e-8,0.004253520373611728,2.567954717105097e-5,-7.533987563241299e-8,0.004253567583483577,2.5778553226866115e-5,-7.555000192971296e-8,0.004253568477479618,2.57508981459835e-5,-7.549083696491824e-8,0.004253583802551681,2.5570092233629636e-5,-7.51055603806773e-8,0.004253683035294351,2.5251865633977112e-5,-7.44273175308893e-8,0.0042539191944363595,2.4857202588394434e-5,-7.35855734003273e-8,0.004254305764216735,2.447438286380503e-5,-7.276784994537231e-8,0.004254809815918776,2.4186839495990022e-5,-7.215147164839955e-8,0.004255365549942023,2.40441206534225e-5,-7.184200794898621e-8,0.004255899200387112,2.4050089820884473e-5,-7.184826829956902e-8,0.0042563516080044266,2.416972185021108e-5,-7.209662433728606e-8,0.004256690396141003,2.434605252160264e-5,-7.246675786316027e-8,0.0042569115892744334,2.4517943449023026e-5,-7.282912443145628e-8,0.0042570344588616455,2.463347637775471e-5,-7.30732558512375e-8,0.0042570934805204125,2.465775417313392e-5,-7.312438614433928e-8,0.004257129932313604,2.4575925834567138e-5,-7.295011734563332e-8,0.0042571843494951115,2.4392667825468296e-5,-7.255962537821784e-8,0.00425729039774817,2.4129023933815476e-5,-7.199717208281165e-8,0.004257470606229811,2.3817370327804808e-5,-7.133146006679518e-8,0.004257734255741909,2.349544247400287e-5,-7.064283667735547e-8,0.004258077393204028,2.3200390137071024e-5,-7.001050679824002e-8,0.004258484618862725,2.2963666553012255e-5,-6.950158216921607e-8,0.004258932027056634,2.2807293789006354e-5,-6.916316297269846e-8,0.0042593906153518026,2.2741586385370254e-5,-6.901757022449099e-8,0.0042598297434363165,2.276399055898611e-5,-6.905989169541386e-8,0.004260220606168873,2.2858651267932304e-5,-6.925694232532747e-8,0.004260539991874552,2.2996585299082128e-5,-6.954740578872719e-8,0.004260774793749827,2.3136869567961894e-5,-6.984415171021355e-8,0.004260927452055153,2.3230106921002925e-5,-7.004155848425731e-8,0.004261021309681241,2.3226075701983406e-5,-7.003196358517582e-8,0.004261102938290243,2.308688722779646e-5,-6.9733984200722e-8,0.004261236712509181,2.2804045770392858e-5,-6.912910597515336e-8,0.004261487734137989,2.2412204909363093e-5,-6.829103484152083e-8,0.004261895857940792,2.1987951130290533e-5,-6.738297115674651e-8,0.004262453748847359,2.1626559517556065e-5,-6.660796308383029e-8,0.004263104835077354,2.14049565306401e-5,-6.613002381831203e-8,0.004263765230072934,2.1352073118542486e-5,-6.601108302348439e-8,0.004264356348996169,2.14434400684497e-5,-6.619951822339648e-8,0.00426482929740014,2.1618744627758198e-5,-6.656745990661841e-8,0.004265171943391067,2.1807560186110623e-5,-6.696539410340849e-8,0.004265402331610535,2.194966411597293e-5,-6.726522140368924e-8,0.004265556764276095,2.2005321336605362e-5,-6.738204521109695e-8,0.004265678484351986,2.1957407300082035e-5,-6.727876331639272e-8,0.004265809259589074,2.1808924150594526e-5,-6.696101507231523e-8,0.004265983904005325,2.1578682448027443e-5,-6.646826954849454e-8,0.004266226920993157,2.1296504146896058e-5,-6.586379168206377e-8,0.004266550629286272,2.0998265292050864e-5,-6.522408289024045e-8,0.004266954602654954,2.072086530767614e-5,-6.46280184319503e-8,0.0042674264408546,2.0497353315112702e-5,-6.414629674705478e-8,0.004267943861511287,2.0352576012947905e-5,-6.383209365453901e-8,0.004268477960877023,2.0299833661802612e-5,-6.371398436365584e-8,0.004268997253092252,2.0338959047789847e-5,-6.379193925228933e-8,0.004269472004022922,2.0455923406950072e-5,-6.403649435074647e-8,0.004269878504480831,2.0623872099556896e-5,-6.439082513227808e-8,0.004270203091943123,2.0805512560485156e-5,-6.477560803074754e-8,0.004270445852852126,2.0956944805511876e-5,-6.509700275244613e-8,0.004270623800199121,2.10334314266037e-5,-6.525895403540025e-8,0.004270772558072353,2.0997890319405713e-5,-6.518152289098647e-8,0.00427094441011345,2.083220432249813e-5,-6.482534637528951e-8,0.004271199798210908,2.05492416329248e-5,-6.421755267416815e-8,0.00427159041645784,2.0199863007888447e-5,-6.346677840095314e-8,0.004272137010630017,1.986641311092636e-5,-6.274914812415897e-8,0.004272812866192905,1.9637907019181664e-5,-6.225512618287865e-8,0.004273546661830289,1.957484111226967e-5,-6.211428300886088e-8,0.004274248084309201,1.9683554754882735e-5,-6.234052528862284e-8,0.004274842584556,1.9916585609271047e-5,-6.283284863669002e-8,0.004275294989396107,2.0196932839426866e-5,-6.34271221447608e-8,0.004275612111248886,2.044876157713103e-5,-6.396157774097112e-8,0.004275829854443942,2.0618302854561106e-5,-6.432132893338302e-8,0.004275996344867708,2.068048102350494e-5,-6.445246254988373e-8,0.004276158761153353,2.0635703336763096e-5,-6.435525871581819e-8,0.00427635575964747,2.050278681984088e-5,-6.406929194779216e-8,0.004276614264766545,2.03118344130943e-5,-6.365844604760266e-8,0.004276948681532183,2.0098462742130343e-5,-6.319870838452115e-8,0.00427736112987467,1.9899240304877655e-5,-6.276838480380487e-8,0.004277842211255956,1.974773290141609e-5,-6.243949971073313e-8,0.004278372391904025,1.967077619426468e-5,-6.226968673760751e-8,0.004278924276628769,1.9684968915617704e-5,-6.229464867897638e-8,0.00427946603046503,1.9793798937027695e-5,-6.252207128612635e-8,0.004279965907331355,1.9986115124125946e-5,-6.292842834492383e-8,0.004280397398965965,2.0236567080278434e-5,-6.345990398536185e-8,0.004280744247696593,2.0508303055502708e-5,-6.403801521126411e-8,0.004281004505802116,2.075787626038736e-5,-6.45698971255669e-8,0.004281192901995228,2.0941958152062637e-5,-6.496252518206134e-8,0.004281340930710332,2.1025255578912166e-5,-6.513969573609285e-8,0.004281494037741554,2.0988991621400003e-5,-6.506040387677097e-8,0.004281705020143845,2.083884172795236e-5,-6.473613988226346e-8,0.004282022932066112,2.0609966237029076e-5,-6.424190093837948e-8,0.004282478182800925,2.0365345667199266e-5,-6.371269223823294e-8,0.004283067616495902,2.018344302717714e-5,-6.331700549222439e-8,0.004283747241477742,2.0134651144824004e-5,-6.320619458649664e-8,0.0042844407554519515,2.0253973496551404e-5,-6.345578723847007e-8,0.004285064598384449,2.0524555265033713e-5,-6.403009214368057e-8,0.004285558228008341,2.0883667246896797e-5,-6.479498002189184e-8,0.004285903068305841,2.1248575485531713e-5,-6.557331881327865e-8,0.004286121591209917,2.1546759971092086e-5,-6.620971443688664e-8,0.004286261550244254,2.173512138139228e-5,-6.661161891835543e-8,0.004286377010822107,2.1803562222643158e-5,-6.675698118613891e-8,0.004286514639174886,2.1767962224157696e-5,-6.667927461907289e-8,0.004286707249844844,2.1659831340824737e-5,-6.644549978914754e-8,0.004286972651294204,2.1517288514130502e-5,-6.613702981233638e-8,0.004287315036407035,2.137879459328305e-5,-6.583625969488997e-8,0.004287726996196279,2.1279125575024203e-5,-6.561792724729806e-8,0.00428819142343141,2.1246497524740444e-5,-6.554282703858169e-8,0.004288683412819257,2.1300005175710134e-5,-6.56522121072733e-8,0.004289172646002349,2.144705325197606e-5,-6.596225331674356e-8,0.004289626831671317,2.1681083267848825e-5,-6.64591918001667e-8,0.004290016489747565,2.1980505883871905e-5,-6.709706780234995e-8,0.0042903207017423875,2.2309974166205005e-5,-6.780039689973465e-8,0.004290532704681695,2.2624802256956494e-5,-6.847351420232322e-8,0.004290663720481053,2.2878545281189634e-5,-6.901668815447957e-8,0.004290743428588021,2.3032647343331645e-5,-6.934675430215987e-8,0.004290816160740989,2.3066060527652307e-5,-6.941783186631997e-8,0.004290932973482719,2.298241860165485e-5,-6.923692897416443e-8,0.004291140720082246,2.281268438762679e-5,-6.886989001401675e-8,0.004291469988513568,2.261171092999127e-5,-6.843422945885471e-8,0.0042919245712092595,2.244789438370406e-5,-6.807700264279899e-8,0.004292475971297328,2.238658804783379e-5,-6.793912075922681e-8,0.004293066649609138,2.2470558774809148e-5,-6.811318501504072e-8,0.004293623937526895,2.2703998892035536e-5,-6.860890598586648e-8,0.0042940818493636184,2.304812006375384e-5,-6.934344898792616e-8,0.004294402362672422,2.3432831436448893e-5,-7.016645002765099e-8,0.004294586104386337,2.378055743966283e-5,-7.091121590795328e-8,0.004294667795317409,2.4030920659155234e-5,-7.144780929009046e-8,0.004294700566059802,2.4155324165777983e-5,-7.171440891510901e-8,0.004294738209100082,2.4157840931771394e-5,-7.171925710040148e-8,0.0042948226573763385,2.4066452881318333e-5,-7.152192906009953e-8,0.004294978812281802,2.3921337639631674e-5,-7.120830502904449e-8,0.004295214901080934,2.3765000948817973e-5,-7.08694876550506e-8,0.004295525436407369,2.363587044291823e-5,-7.058807624485363e-8,0.004295894601684546,2.3564786623837452E-05,-7.04305813207749e-8,0.004296299122201778,2.357308522950433e-5,-7.044321503200956e-8,0.004296710657229467,2.367115187319423e-5,-7.064870539544668e-8,0.004297098295590391,2.38568917503796e-5,-7.104295898373251e-8,0.004297431906932636,2.4114275885103977e-5,-7.159190498213205e-8,0.004297686870625992,2.4412901902798002e-5,-7.223050607165677e-8,0.004297849991681794,2.4710049162891303e-5,-7.286710575334312e-8,0.00429792530231652,2.4956591162591826e-5,-7.339606327152146e-8,0.004297937372396556,2.5107015043400802e-5,-7.371925088269417e-8,0.004297929510021779,2.5131737805527713e-5,-7.377254984435431e-8,0.004297955548234345,2.5027789983162344e-5,-7.354890403274291e-8,0.004298066575615005,2.4823310836198834e-5,-7.310812995376074e-8,0.004298296552607654,2.4573070322224938e-5,-7.256747872959403e-8,0.004298651648983001,2.434559188780995e-5,-7.207413756368472e-8,0.004299106911661393,2.4205518413300738e-5,-7.176741926718479e-8,0.004299611453430702,2.4196312655059432e-5,-7.174150839999789e-8,0.0043001009376553104,2.4328171010078167e-5,-7.201924724959771e-8,0.004300514215980978,2.45747458074727e-5,-7.254478183774332e-8,0.00430080955408668,2.4880164403869278e-5,-7.319841098782959e-8,0.00430097535914321,2.5174795560467062e-5,-7.383040760602065e-8,0.004301031639911904,2.5394822709818133e-5,-7.430318462394381e-8,0.004301021854896047,2.549876742515806e-5,-7.452698087324046e-8,0.004300998826632299,2.5475424898201563e-5,-7.447707677090092e-8,0.0043010105133326326,2.5341837209243172e-5,-7.418955573869462e-8,0.00430109035070397,2.513426620792213e-5,-7.374198268112992e-8,0.004301253742716078,2.48970164755011e-5,-7.32294267491531e-8,0.004301499427306543,2.467299592201586e-5,-7.274417707510015e-8,0.0043018132999952385,2.4497627550464064e-5,-7.236262240548909e-8,0.004302172657874503,2.4395814589290057e-5,-7.213867310051331e-8,0.004302549817683467,2.4380785913499932e-5,-7.210122313442096e-8,0.0043029149958991805,2.44536492446394e-5,-7.225313252007961e-8,0.004303238964457443,2.460296377691644e-5,-7.2570238773880585E-08,0.00430349625434463,2.4804348391217722e-5,-7.300042578258291e-8,0.0043036695281246816,2.50209511462533e-5,-7.34645445614565e-8,0.0043037550770795956,2.5206324498041653e-5,-7.386254745634518e-8,0.004303768148276709,2.5311391686062272e-5,-7.408849797523384e-8,0.004303745290754547,2.5296058710614142e-5,-7.405564302472968e-8,0.0043037402219377715,2.5143263129179642e-5,-7.372674513257676e-8,0.004303811401843918,2.486984655474745e-5,-7.31375476237472e-8,0.004304003924871586,2.452738717704159e-5,-7.239861410051003e-8,0.004304332998053507,2.4189634346796077e-5,-7.166837537127397e-8,0.004304777053220583,2.3930305794275484e-5,-7.110548942813876e-8,0.0043052839373079,2.380055815885997e-5,-7.082046368346776e-8,0.004305786979287081,2.381512406074437e-5,-7.084577599968396e-8,0.004306223908680077,2.3950918898359302e-5,-7.113265222969439e-8,0.0043065521824008435,2.4156359154944985e-5,-7.157081214482665e-8,0.00430675720105395,2.4366745878058644e-5,-7.202132826384251e-8,0.00430685272341944,2.452074994873828e-5,-7.235202054839195e-8,0.0043068746876313785,2.457397362237289e-5,-7.246674040986775e-8,0.004306870807432403,2.450692094765032e-5,-7.232274420159353e-8,0.0043068889333198876,2.4326274108967804e-5,-7.193368553734489e-8,0.004306967157178836,2.4060115372153373e-5,-7.135951482856131e-8,0.004307127792060001,2.3749312473508598e-5,-7.068800846487233e-8,0.004307375847549257,2.3437998378882705e-5,-7.001424126954424e-8,0.0043077011487614265,2.316559033074148e-5,-6.942331161839482e-8,0.004308082476774727,2.296156998550824e-5,-6.897901648309085e-8,0.004308492160407662,2.2843008936849732e-5,-6.871848008341235e-8,0.00430890014225028,2.2814028032551207e-5,-6.865098180169714e-8,0.004309277281921247,2.2866200020617407e-5,-6.875880227967708e-8,0.004309598220494261,2.2979234337591817e-5,-6.899862356038913e-8,0.004309844408536244,2.3121853538730567e-5,-6.930329429478826e-8,0.0043100078615668095,2.3253479651415424e-5,-6.95853524949172e-8,0.004310095640386761,2.3328083445441076e-5,-6.974529757037752e-8,0.0043101338257101485,2.3301787131791224e-5,-6.968807200575135e-8,0.004310168187241177,2.3144787924465443e-5,-6.934892854607553e-8,0.004310257826444425,2.285531683637069e-5,-6.872365125157918e-8,0.004310459684221365,2.2469228310805165e-5,-6.788925321183882e-8,0.0043108073193948325,2.2056750050369026e-5,-6.699692997284909e-8,0.004311294032439131,2.170255209789584e-5,-6.622910378436072e-8,0.004311871307369093,2.1476062378587954e-5,-6.573553756794064e-8,0.004312465198993063,2.1407057452158824e-5,-6.558081946270183e-8,0.004313001977162613,2.147859710794636e-5,-6.572910476913147e-8,0.00431343005920553,2.1637960989153616e-5,-6.606750631843108e-8,0.004313730316577628,2.181691089414023e-5,-6.644950764688654e-8,0.004313914738250244,2.1951418489715036e-5,-6.673726332891451e-8,0.004314017860593639,2.1995240270097538e-5,-6.6830778021755e-8,0.00431408563427076,2.1926188546349096e-5,-6.668152880876458e-8,0.004314164844430976,2.1746350005664837e-5,-6.62931915957548e-8,0.00431429466372932,2.1478088191753095e-5,-6.571331506627689e-8,0.004314501024681896,2.1157447735519515e-5,-6.501929657323107e-8,0.004314794068269408,2.0826407239506826e-5,-6.430170217264929e-8,0.004315168523400873,2.0525388218328684e-5,-6.364798919827755e-8,0.00431560642180513,2.0287173353931803e-5,-6.31292183912412e-8,0.0043160812455876356,2.0132909454777427e-5,-6.279132138753954e-8,0.004316562520177888,2.007033177327738e-5,-6.265126152698634e-8,0.00431702006617794,2.00938082788825e-5,-6.269717769742918e-8,0.004317427588706235,2.018551638500187e-5,-6.28909388180351e-8,0.004317765712734754,2.0317234227004703e-5,-6.317193328846631e-8,0.004318024775138963,2.0452628316515763e-5,-6.34618604024906e-8,0.00431820770093002,2.0550394730606987e-5,-6.367139110618334e-8,0.004318332893899484,2.0569188001987255e-5,-6.371081436092053e-8,0.004318436011644906,2.04754635624101e-5,-6.350712260775898e-8,0.0043185681789404615,2.0254385622796044e-5,-6.302778494565895e-8,0.004318787523787666,1.9921423273137004e-5,-6.230594134708772e-8,0.004319142414166795,1.9528518015015e-5,-6.145372829533996e-8,0.004319650180655444,1.9156534321257355e-5,-6.064588141621515e-8,0.004320282432594846,1.8890460254098007e-5,-6.006610839445816e-8,0.00432096924731175,1.8786257539194468e-5,-5.983551079099197e-8,0.004321623889974825,1.8848028753740572e-5,-5.996331107102821e-8,0.004322174856199251,1.9029232241916958e-5,-6.03494594472305e-8,0.004322587553187694,1.9254995930678356e-5,-6.083272565155132e-8,0.004322867520357473,1.9450265918529555e-5,-6.125132934634046e-8,0.004323049667978551,1.956007946768571e-5,-6.148655784160723e-8,0.004323182862961931,1.9557648041747735e-5,-6.148015369528662e-8,0.004323316556168647,1.9443050480583164e-5,-6.123159791433297e-8,0.004323491840940722,1.9237131005163212e-5,-6.0785188942898e-8,0.004323736659978244,1.8974013586600857e-5,-6.021415798447603e-8,0.00432406401637427,1.8693883726101143e-5,-5.960523413418266e-8,0.004324472264424686,1.8436553474490432e-5,-5.904470094336049e-8,0.004324946983099295,1.8236033860153257e-5,-5.860648003866715e-8,0.004325464084859797,1.811635649105119e-5,-5.8342897748555724e-8,0.004325993794135984,1.8088868183602328e-5,-5.8278740560323874e-8,0.004326505053826906,1.8151193617222837e-5,-5.84090469392405e-8,0.004326969827564337,1.8287871460248693e-5,-5.870057233852731e-8,0.004327366867667058,1.8472348280178974e-5,-5.909613070587311e-8,0.004327684784604043,1.8669955227489085e-5,-5.952094345795759e-8,0.004327924409123366,1.8841706401499647e-5,-5.989069354469142e-8,0.004328100446453682,1.8948978694444737e-5,-6.012153384588638e-8,0.004328242207755195,1.8959396499784854e-5,-6.014285604854431e-8,0.00432839251061342,1.8854306712077532e-5,-5.991366270790545e-8,0.004328602976287375,1.8637363771232864e-5,-5.9441399495521534e-8,0.004328923808193235,1.834172061702968e-5,-5.879768517306489e-8,0.0043293877420519525,1.803074398317214e-5,-5.8119858923673065e-8,0.004329992303019424,1.7786082973530267e-5,-5.7585025996974733e-8,0.0043306904239555155,1.768141014178147e-5,-5.735306902442807e-8,0.004331400140317573,1.7751344357086818e-5,-5.749928204325917e-8,0.00433203358321681,1.797402614272783e-5,-5.79766211094402e-8,0.004332530332663138,1.828016466901793e-5,-5.8635303908857e-8,0.004332875915402321,1.858298602165903e-5,-5.928765562337491e-8,0.00433309804217549,1.8810034258350935e-5,-5.977689798049865e-8,0.004333248483983109,1.8921204984793378e-5,-6.001607106531904e-8,0.00433338344031064,1.891050947589809e-5,-5.999178553599807e-8,0.004333550076056095,1.879802272931174e-5,-5.974688447449809e-8,0.00433378028617974,1.8619161178224815e-5,-5.935746777534596e-8,0.004334089547866698,1.841532739235039e-5,-5.891288378805079e-8,0.004334478361386218,1.8227051919153682e-5,-5.8500987248132956e-8,0.004334934676237755,1.8089192813388756e-5,-5.819765687811798e-8,0.004335436753461419,1.8027479513569926e-5,-5.805910095808496e-8,0.0043359564346629785,1.805604332199269e-5,-5.8116315662884676e-8,0.004336462854060841,1.8175905259323786e-5,-5.837173979925861e-8,0.0043369265589401195,1.8374650843245116e-5,-5.8798606028170783e-8,0.0043373237749320314,1.8627644789034814e-5,-5.9343665372251605e-8,0.004337640287689868,1.8900903887741546e-5,-5.993342885257249e-8,0.004337874393414731,1.915541028175581e-5,-6.0483416036833585E-08,0.004338038508031595,1.935252810257927e-5,-6.090974291052553e-8,0.004338159117798005,1.9460134108828392e-5,-6.114232980148806e-8,0.004338274774933433,1.9459013263327866e-5,-6.113884811203717e-8,0.004338431681466829,1.9348999136279857e-5,-6.089826911602292e-8,0.004338676165081497,1.9153806772625883e-5,-6.047161761109011e-8,0.004339043688685932,1.8922294391678095e-5,-5.996487910391701e-8,0.004339545635601907,1.872276095381814e-5,-5.952661815361361e-8,0.004340158161930944,1.8627380820978457e-5,-5.9314042383671195e-8,0.004340820587457169,1.8688023122385006e-5,-5.944030774359304e-8,0.0043414499059315215,1.8912570225124942e-5,-5.992294543545765e-8,0.004341969354982378,1.9256317958197064e-5,-6.066513104038634e-8,0.00434233727438235,1.963727956575248e-5,-6.148895689362684e-8,0.004342559700425284,1.9968375421524345e-5,-6.22053917653275e-8,0.004342681194553419,2.0187890581981525e-5,-6.268039485374884e-8,0.004342762928135588,2.0273446998614515e-5,-6.286515201466919e-8,0.004342861762115175,2.0238340874590014e-5,-6.278807051788223e-8,0.0043430181177510525,2.0118621313219873e-5,-6.25268278416331e-8,0.004343252686041884,1.9959504096147545e-5,-6.217910056180777e-8,0.004343568466291725,1.9805367104343365e-5,-6.184105171446118e-8,0.004343954731686096,1.9693836953182042e-5,-6.159455561595036e-8,0.004344390973704534,1.9652723436851773e-5,-6.150043408182522e-8,0.004344850331140559,1.969838524407601e-5,-6.159471002910778e-8,0.004345302792489047,1.9834740731576415e-5,-6.188629404236862e-8,0.004345718569954192,2.0052786388798823e-5,-6.235588467085406e-8,0.004346071890108299,2.0330942481172956e-5,-6.295676357140448e-8,0.004346345120939216,2.0636843362656404e-5,-6.361874562488397e-8,0.004346532649407227,2.0931092520010435e-5,-6.425633112670948e-8,0.004346643556812209,2.1172987348254808e-5,-6.478105282775598e-8,0.004346702139067369,2.1327622981692872e-5,-6.511679997367014e-8,0.004346745608778673,2.137326837845882e-5,-6.521581332631904e-8,0.004346818808370958,2.130755124320618e-5,-6.507223672428581e-8,0.004346966320702236,2.1150975510158874e-5,-6.472999399619078e-8,0.004347222824520035,2.0946473775532036e-5,-6.428207114555517e-8,0.004347603087958219,2.0753784072168932e-5,-6.385844812624413e-8,0.004348093942432825,2.0637814013072452e-5,-6.36007815326696e-8,0.004348651739160019,2.0651659508830847e-5,-6.36252925003523e-8,0.0043492091234758985,2.0818025289423062e-5,-6.398208836552688e-8,0.004349692649033529,2.1116545144798856e-5,-6.462735152225057e-8,0.004350046851532632,2.148558579412229e-5,-6.542717677117046e-8,0.004350254077818288,2.1841590704683874e-5,-6.619972247540033e-8,0.004350339218690546,2.2108334127427978e-5,-6.677897296497183e-8,0.0043503570289232605,2.2241363549602545e-5,-6.706795464383658e-8,0.004350370300956235,2.2236598604831392e-5,-6.705740408002692e-8,0.004350430646805905,2.2122994339245096e-5,-6.680980212150948e-8,0.004350568672542956,2.1947338186704e-5,-6.642641374111236e-8,0.004350793241612556,2.1759652050497017e-5,-6.601571687264844e-8,0.0043510958731244245,2.1603418432720286e-5,-6.567227801223937e-8,0.004351456464205779,2.1510811396030194e-5,-6.546638399293138e-8,0.004351848247956533,2.1501213936502228e-5,-6.544069492800358e-8,0.004352241536665431,2.1581184167779784e-5,-6.560999904068952e-8,0.00435260671995346,2.174478040527643e-5,-6.596178678053824e-8,0.004352917203110646,2.1974004373243897e-5,-6.645716600620018e-8,0.004353152776554337,2.2239771173006768e-5,-6.70329889115276e-8,0.0043533034557195595,2.250423557099356e-5,-6.760694213289382e-8,0.004353373159793762,2.2725320394767957e-5,-6.808739588456914e-8,0.004353381934028024,2.2863721397970617e-5,-6.838860655220757e-8,0.004353365144473504,2.2891593869259356e-5,-6.844958399294913e-8,0.004353368520464555,2.2800891768739177e-5,-6.825225963723115e-8,0.004353439178980252,2.2608536352457108e-5,-6.783284315230564e-8,0.004353614398994551,2.235592337679717e-5,-6.728093363331758e-8,0.004353911091254241,2.210179351953395e-5,-6.672420060605343e-8,0.004354319093981324,2.1909457854221882e-5,-6.63007028625976e-8,0.00435480070535855,2.183105798865961e-5,-6.612459579585697e-8,0.004355297564439238,2.1892701313526038e-5,-6.62535720399581e-8,0.004355744274261172,2.208486894760374e-5,-6.666768156040473e-8,0.004356085988373349,2.2362140804206785e-5,-6.72684784304803e-8,0.004356294790867451,2.265429960519879e-5,-6.790310472655907e-8,0.004356378446729466,2.2886711643210605e-5,-6.840875002736263e-8,0.004356377083974059,2.300287959510685e-5,-6.866191818023424e-8,0.004356348835649946,2.2979906602058662e-5,-6.861222380829316e-8,0.004356351070803769,2.283100298627068e-5,-6.828791603511024e-8,0.0043564253033482265,2.2596103437619816e-5,-6.777550831067574e-8,0.004356590438485916,2.232692894571213e-5,-6.71873398673657e-8,0.004356843977258533,2.207328036231141e-5,-6.663181407464889e-8,0.00435716773989199,2.1874255200302816e-5,-6.619429149558181e-8,0.0043575345277402245,2.17545974438534e-5,-6.592907552880914e-8,0.00435791364940389,2.1724473774609717e-5,-6.585880479157714e-8,0.004358274835255978,2.1780736857639492e-5,-6.597708420358102e-8,0.00435859102021611,2.190842428008057e-5,-6.625166759485598e-8,0.004358840788105637,2.2082124326210005e-5,-6.66273960160543e-8,0.004359011140673432,2.2267590761594875e-5,-6.702970759557112e-8,0.004359100770459174,2.2424521416654e-5,-6.737069654700543e-8,0.0043591232349589806,2.2511572931629804e-5,-6.756005138998922e-8,0.004359108521787183,2.2494178942973776e-5,-6.752211476792377e-8,0.004359100878157092,2.235434252364082e-5,-6.721725820444066e-8,0.004359151203790916,2.209952344550378e-5,-6.666129656422452e-8,0.004359304391648528,2.1766202486049173e-5,-6.59333189575158e-8,0.004359585156155929,2.141440124607869e-5,-6.516384241477555e-8,0.004359988028082468,2.1112991988769316e-5,-6.450292098818624e-8,0.004360476321122433,2.0920264451710092e-5,-6.407788779132097e-8,0.004360991139310915,2.0866833130000284e-5,-6.395608344448584e-8,0.0043614672632936585,2.094691373648151e-5,-6.412567446990825e-8,0.00436185047259702,2.1120373710730043e-5,-6.449986452881506e-8,0.004362111124733698,2.1324180464702604e-5,-6.4941620161576e-8,0.004362250570187353,2.1489435250093217e-5,-6.53007002748905e-8,0.004362299121386524,2.155913544719217e-5,-6.54524253343876e-8,0.004362306490900004,2.1501808725852057e-5,-6.532755100187959e-8,0.004362327761153033,2.131732881203479e-5,-6.492513324816661e-8,0.0043624093738372635,2.103373524474476e-5,-6.430576510522246e-8,0.0043625793884881775,2.0697054625575986e-5,-6.356950528095524e-8,0.004362844207020741,2.0358383999011046e-5,-6.282776240788013e-8,0.004363191208127825,2.006260880711081e-5,-6.217865603614356e-8,0.004363594835992581,1.984133466131531e-5,-6.169150041406605e-8,0.004364023394089613,1.971031936272081e-5,-6.140108548051583e-8,0.004364444713893855,1.9670147056786693e-5,-6.130906149278202e-8,0.004364830116595006,1.9708457183723877e-5,-6.13887614197793e-8,0.004365157008842049,1.9802456355045293e-5,-6.159066614971228e-8,0.0043654108447642925,1.9921222630134676e-5,-6.184741174273681e-8,0.004365587133171469,2.002805687530203e-5,-6.207888714985402e-8,0.004365693773882021,2.0083687956816993e-5,-6.219920719112305e-8,0.004365753261816067,2.0051413982690625e-5,-6.21279557727769e-8,0.004365803266929434,1.990492580654581e-5,-6.18073352015643e-8,0.004365893211815998,1.963812772857377e-5,-6.122369196067238e-8,0.00436607468587738,1.9273718051626967e-5,-6.042630561545666e-8,0.004366386030933518,1.8864892817626648e-5,-5.953112197574838e-8,0.004366836077417156,1.8485075349996475e-5,-5.869834534688314e-8,0.004367395636384049,1.8206114824510273e-5,-5.808489610024617e-8,0.0043680034475078715,1.807342018736887e-5,-5.779018629925774e-8,0.004368585429190273,1.8090183319349116e-5,-5.7821670584522674e-8,0.004369078205338029,1.8218018646954217e-5,-5.8096130493753056e-8,0.004369446485515545,1.8391914972714372e-5,-5.8472137246485704e-8,0.00436968898915749,1.854111673960781e-5,-5.879546235081837e-8,0.004369833869388169,1.8607666783746486e-5,-5.893945230499611e-8,0.004369927829734204,1.8558083076927652e-5,-5.883053071818364e-8,0.0043700232722843815,1.8387261432697222e-5,-5.845686139765173e-8,0.004370166642890487,1.8115771799109823e-5,-5.78626810222891e-8,0.004370389908592708,1.778250420799372e-5,-5.7132479090411445e-8,0.004370706190176643,1.7434832951346612e-5,-5.63696521066772e-8,0.004371109765100231,1.7118586178875612e-5,-5.5674571774707e-8,0.00437157972214823,1.6869939219546253e-5,-5.5126719806860253e-8,0.004372085769119738,1.671054970042191e-5,-5.477386649502183e-8,0.004372594495239376,1.6646123535862942e-5,-5.462880762363998e-8,0.004373074761423813,1.6667710334556395e-5,-5.467217352867607e-8,0.004373501568673639,1.675457816700928e-5,-5.485876153998176e-8,0.004373858478157565,1.687756120804058e-5,-5.5124896858937915e-8,0.004374139111879542,1.7002287531392034e-5,-5.5395470307775045e-8,0.0043743482958161295,1.7092346989803696e-5,-5.559079621301812e-8,0.004374503133939031,1.7112951246571128e-5,-5.5634563689226273e-8,0.004374633720251839,1.7035925052044434e-5,-5.546478116239983e-8,0.00437478225005965,1.6846665517467146e-5,-5.504911354774486e-8,0.0043749983953135655,1.6552475631203626e-5,-5.440324873724291e-8,0.004375328872488854,1.618927976830758e-5,-5.360566541222857e-8,0.0043758013925030695,1.5821068508656155e-5,-5.2796405543630164e-8,0.004376408267399701,1.552634116046679e-5,-5.214735730105396e-8,0.004377099954417064,1.5371900421595234E-05,-5.180488666204743e-8,0.004377797060914417,1.5385036173928835e-5,-5.182897065432117e-8,0.004378418187720637,1.5540645773084347e-5,-5.2165003016123936e-8,0.004378909008357041,1.5771884933839974e-5,-5.266706122898232e-8,0.0043792572209281865,1.599719360222389e-5,-5.315697219265368e-8,0.004379488986244382,1.6147744983164754e-5,-5.34842622002332e-8,0.004379653735493992,1.6183696763184442e-5,-5.356159676976171e-8,0.004379807029548539,1.6097454183882332e-5,-5.337188796430934e-8,0.004379997377027852,1.5908215829117925e-5,-5.2956489809098333e-8,0.004380258535441446,1.5652790384862128e-5,-5.239536296392365e-8,0.004380606499311609,1.5376010872551103e-5,-5.178635373794103e-8,0.00438103981704955,1.5122274389860483e-5,-5.122678455064238e-8,0.0043815422062817,1.4928716380928159e-5,-5.079841505994918e-8,0.0043820867949589636,1.4820349015323273e-5,-5.055656434916802e-8,0.004382641303252554,1.4807475268811135e-5,-5.052422039228374e-8,0.004383173380248949,1.4885420145896664e-5,-5.0691348370280644e-8,0.004383655356796422,1.5036302184118528e-5,-5.1018815625741976e-8,0.004384067847834171,1.5232293344004387e-5,-5.144564428159387e-8,0.0043844019828522774,1.543961315370945e-5,-5.1897827868784535e-8,0.004384660446837142,1.5622634657119858e-5,-5.229728990740927e-8,0.0043848576711448175,1.5747902572815793e-5,-5.257058563354719e-8,0.0043850193932531934,1.5788236658408824e-5,-5.2657827564574646e-8,0.0043851814481957125,1.572732220635757e-5,-5.252279948825495e-8,0.004385386970873339,1.5565072314536914e-5,-5.216487783723147e-8,0.004385680534183977,1.532309143986357e-5,-5.163119876709418e-8,0.004386097920633204,1.5047759637200314e-5,-5.102352030618483e-8,0.004386652021040343,1.4806503360449029e-5,-5.0490006751438264e-8,0.004387319473877426,1.4672634763753373e-5,-5.019184730718326e-8,0.004388037475553013,1.4699180145777687e-5,-5.024571194944651e-8,0.004388719358254085,1.4892581471994294e-5,-5.066597535539156e-8,0.004389286252243407,1.5203884862031068e-5,-5.1345376667470573e-8,0.00438969797548042,1.5546829342512437e-5,-5.209476228885879e-8,0.004389964650890107,1.583302129175502e-5,-5.272030351592314e-8,0.004390134913807563,1.6002864742013964e-5,-5.309129370757188e-8,0.004390272271287374,1.6037840528340582e-5,-5.3166940446750974e-8,0.004390434097429688,1.595511112825302e-5,-5.298445643173724e-8,0.004390660057645578,1.579392903294117e-5,-5.262936255347156e-8,0.004390969109008046,1.5602006407262715e-5,-5.220585215637865e-8,0.0043913615412258964,1.542537772061049e-5,-5.1814795817357e-8,0.004391823037389939,1.5302039558842245e-5,-5.153985439117854e-8,0.004392329121287766,1.5258332624760626e-5,-5.143939304550827e-8,0.004392849551497714,1.5307073316800725e-5,-5.1542117695367437e-8,0.004393352682154456,1.54470359086033e-5,-5.18457185429351e-8,0.00439380971458905,1.566375392426153e-5,-5.23185628529972e-8,0.004394198597306122,1.5931683059558592e-5,-5.2904527284831545e-8,0.004394507186734965,1.621768345692803e-5,-5.353077333402549e-8,0.004394735227108045,1.6485492657756142e-5,-5.411762647781867e-8,0.004394894902223298,1.6700626893534787e-5,-5.45892803278868e-8,0.004395009971871057,1.6835218512750443e-5,-5.48843068576531e-8,0.004395113603586854,1.687246367982367e-5,-5.496537371682426e-8,0.004395244949411491,1.6810475067017456e-5,-5.482779901120044e-8,0.0043954442427448425,1.6665347947444088e-5,-5.450649984627839e-8,0.004395745883391455,1.6472740140844224e-5,-5.407968384406357e-8,0.0043961693024316155,1.6286178870649144e-5,-5.366522773031633e-8,0.0043967088244268844,1.616943709032258e-5,-5.340384348847231e-8,0.00439732633496883,1.6180870696195093e-5,-5.342443633742838e-8,0.004397953375547895,1.635135413255929e-5,-5.379535836427356e-8,0.0043985084347460835,1.6664842817597192e-5,-5.448152340898046e-8,0.004398926535594353,1.7055762545965226e-5,-5.533868602056141e-8,0.004399186184162931,1.7430878674003617e-5,-5.616169045398201e-8,0.004399316502889809,1.7706012639717648e-5,-5.676535310620799e-8,0.004399380619391071,1.7836085828877507e-5,-5.7050496127308454e-8,0.0043994479138703985,1.782330059445976e-5,-5.70217692683362e-8,0.004399571685962228,1.7705329205192075e-5,-5.676158687960766e-8,0.004399779842592975,1.7535919356775476e-5,-5.6387604272475e-8,0.004400076250313624,1.736849329520766e-5,-5.601691660456328e-8,0.0044004470021380936,1.7246443601718784e-5,-5.574493496590799e-8,0.0044008672958289925,1.7199144884804796e-5,-5.5636639903815625e-8,0.004401307044890794,1.724130099925887e-5,-5.572497188992369e-8,0.00440173510197177,1.737368836590099e-5,-5.6012208288017816e-8,0.004402122691783258,1.7584415933249197e-5,-5.6472543144591716e-8,0.004402446537357039,1.785064042267672e-5,-5.705582151470724e-8,0.004402691816659508,1.8141037663291022e-5,-5.7693066337959046e-8,0.004402854735432183,1.841939830699297e-5,-5.8304506128850546e-8,0.0044029441466111215,1.86494319283523e-5,-5.88101859483882e-8,0.004402981550175842,1.8800342453498846e-5,-5.914217622460607e-8,0.004402999067764595,1.8852377164001726e-5,-5.925669183407802e-8,0.004403035359985339,1.8801411674438728e-5,-5.914416507577008e-8,0.0044031298139103415,1.866162281600663e-5,-5.883524829467042e-8,0.004403315601073636,1.8465518632622366e-5,-5.8401102927705954e-8,0.004403612303337892,1.8260820798133723e-5,-5.794674902359043e-8,0.00440401903455858,1.810360352195355e-5,-5.7596036212635465e-8,0.004404509752154576,1.8047165882872968e-5,-5.746702598309528e-8,0.004405033516436402,1.812725114889848e-5,-5.763917890945277e-8,0.004405522902615492,1.834684093381671e-5,-5.8119578846809494e-8,0.0044059119457882465,1.866727755270758e-5,-5.8823215461512124e-8,0.004406159440016461,1.9013925428711905e-5,-5.958550245976834e-8,0.004406266628248096,1.9299284542711648e-5,-6.021339687547807e-8,0.004406277737108989,1.945484969608813e-5,-6.055575571644973e-8,0.004406261496645234,1.9454837423611572e-5,-6.055559500071444e-8,0.004406284449775708,1.9319660877416878e-5,-6.025761062267969e-8,0.00440639062788073,1.910099176720538e-5,-5.977521664665257e-8,0.004406594829344743,1.886022453602534e-5,-5.924323335780905e-8,0.004406887078573716,1.8651292088100253e-5,-5.878025539400848e-8,0.004407241761031286,1.8511880264080445e-5,-5.846944211875105e-8,0.0044076263524043535,1.8461551898719056e-5,-5.835435137480919e-8,0.0044080076754981525,1.8503530268696664e-5,-5.8442683603324096e-8,0.00440835579500999,1.862755742929406e-5,-5.871235534719573e-8,0.004408646532290339,1.881262321625275e-5,-5.911736690258402e-8,0.004408863496128932,1.9029458207028737e-5,-5.959328119831901e-8,0.004409000066919958,1.924325840921723e-5,-6.006330961355848e-8,0.004409061253908856,1.9417302526743488e-5,-6.044637646552229e-8,0.004409064800155661,1.9517894893698925e-5,-6.066804549783033e-8,0.00440904055014602,1.9520391771617026e-5,-6.067376479634501e-8,0.004409027212339246,1.9415263477098266e-5,-6.044217579738232e-8,0.004409066265143777,1.9212538136596372e-5,-5.99949182565613e-8,0.004409193715141178,1.8942795303234154e-5,-5.939893403493536e-8,0.0044094314113227616,1.865344497733075e-5,-5.875845298339941e-8,0.004409780143242562,1.8400286623901103e-5,-5.8196555817766816e-8,0.004410216569539457,1.8235638567657733e-5,-5.782905216370578e-8,0.004410695422717016,1.8195238170461436e-5,-5.773546974239403e-8,0.004411157650944433,1.8286844900537162e-5,-5.7933659296607315e-8,0.004411543971861461,1.8484117436023682e-5,-5.836601541020027e-8,0.004411811395675748,1.8729348317482946e-5,-5.890535923731313e-8,0.004411947793992804,1.89470109132833e-5,-5.938486561457419e-8,0.0044119780011767805,1.906592214848751e-5,-5.964712702981143e-8,0.004411956808968038,1.9042277832868503e-5,-5.9595124411453214e-8,0.004411950401682743,1.8873156757466962e-5,-5.92220569871064e-8,0.004412014554899769,1.8594182067809693e-5,-5.8606156280090905e-8,0.004412179536671111,1.8263848967560027e-5,-5.7876134214088945e-8,0.0044124466739733125,1.7943581917926447e-5,-5.716729690606632e-8,0.004412794575472388,1.7682304086576782e-5,-5.6587619247160394e-8,0.004413189368832398,1.7509204078874898e-5,-5.6201810628385806e-8,0.004413594086340192,1.743345530047553e-5,-5.603059765879325e-8,0.004413975065031127,1.7447630029714103e-5,-5.605809066694707e-8,0.004414305472350097,1.7532025516451413e-5,-5.6241179923360305e-8,0.004414567041261399,1.7658503065552773e-5,-5.651793566777759e-8,0.004414751115520992,1.779363418722658e-5,-5.681456751260478e-8,0.004414859663338807,1.7901658854669397e-5,-5.7052019121006296e-8,0.0044149062993784445,1.794805755027884e-5,-5.7153915757579485e-8,0.004414916691840586,1.7904389601374315e-5,-5.7057269944060924e-8,0.004414927200000021,1.77543682378513e-5,-5.672588204884182e-8,0.0044149804922138025,1.750003314877578e-5,-5.616395099473292e-8,0.00441511759337999,1.7165714561544804e-5,-5.542484487782527e-8,0.004415367428776234,1.679696126662312e-5,-5.460881274387819e-8,0.0044157368984729635,1.64525946058128e-5,-5.3845568238601775e-8,0.0044162055472075626,1.6190716787134946e-5,-5.3263516737987664e-8,0.004416727899593218,1.6052589799655223e-5,-5.295419024084609e-8,0.0044172437234548155,1.6049869174066154e-5,-5.294395078197559e-8,0.004417693384688244,1.615974344870538e-5,-5.3183040430361466e-8,0.004418033663467096,1.6329784446188893e-5,-5.355607037861073e-8,0.004418249405605174,1.6491255741248804e-5,-5.391129234465096e-8,0.004418357633513688,1.657727659886784e-5,-5.41007360539825e-8,0.004418402673640693,1.6540796109409133e-5,-5.4020027084270734e-8,0.004418443391223361,1.636694373579072e-5,-5.3635805163711675e-8,0.004418536429934856,1.6075637077552477e-5,-5.2991599870440183e-8,0.004418721153570862,1.5713686813819345e-5,-5.219048380509432e-8,0.004419011327149181,1.5339827180016276e-5,-5.136208116526004e-8,0.004419395436149071,1.5008693642004086e-5,-5.062720950800594e-8,0.004419843763828487,1.475917925423041e-5,-5.0072119853676645e-8,0.004420318190940414,1.4609543041482485e-5,-4.973758066953034e-8,0.004420781006999231,1.455837640529271e-5,-4.9620879180614367e-8,0.004421200875707693,1.4588855571197866e-5,-4.9685116993361385e-8,0.004421555921818236,1.4673832615992423e-5,-4.9870423302738325e-8,0.004421834861138942,1.4780363310829798e-5,-5.0103979045361175e-8,0.004422037237442245,1.4873349197413976e-5,-5.030810679146616e-8,0.0044221735003303324,1.4918708687383351e-5,-5.0407314602882546e-8,0.004422265076734925,1.488684665139391e-5,-5.0335987892971714e-8,0.004422343894139628,1.4757129675741033e-5,-5.004829930915722e-8,0.004422450182798508,1.4523472760162985e-5,-4.953057889944237e-8,0.004422627129488367,1.4199935359410018e-5,-4.8813710361903955e-8,0.004422911606825086,1.382367526534905e-5,-4.7979688149729203e-8,0.004423322237828266,1.3451651182103001e-5,-4.715436315562399e-8,0.00442384901396835,1.3148639319550321e-5,-4.6480995689175956e-8,0.004424450465700748,1.2968277830758903e-5,-4.6078384882655163e-8,0.004425062411682258,1.2934115116972632e-5,-4.599895383332543e-8,0.004425616532075163,1.3029713949506274e-5,-4.620678002907812e-8,0.00442606125460747,1.3203026493029452e-5,-4.658713648167632e-8,0.004426376247492937,1.3382921571667098e-5,-4.698291956016331e-8,0.0044265757656095205,1.3500398155340669e-5,-4.7241493967355725e-8,0.0044267015746751685,1.3506656906523134e-5,-4.7254652877251136e-8,0.004426809564985756,1.3383317501207797e-5,-4.698127400556689e-8,0.004426954798878417,1.3143641854113754e-5,-4.645015416988944e-8,0.004427178862902963,1.282611238434304e-5,-4.574598280569655e-8,0.004427502065621027,1.248309395401886e-5,-4.498442593684408e-8,0.004427921557662274,1.2167909243147152e-5,-4.4283605507852286e-8,0.0044284149290582065,1.1923590626574095e-5,-4.373914849628887e-8,0.004428947492553156,1.1775726251332769e-5,-4.340818287378602e-8,0.0044294807498054785,1.1730276245194692e-5,-4.330431159108967e-8,0.00442997978210213,1.1775616157272551e-5,-4.3402016286169154e-8,0.004430418284203898,1.1887104697408922e-5,-4.3646763807176316e-8,0.004430781078167451,1.2032394059880673e-5,-4.396683813881441e-8,0.004431064723837474,1.2176260557030221e-5,-4.428411771350637e-8,0.0044312770935376515,1.228454666456542e-5,-4.452283720664672e-8,0.004431436570445023,1.2327479539015128e-5,-4.4616919616307796e-8,0.004431571073044788,1.2282959424570596e-5,-4.451723465126646e-8,0.004431716519505703,1.2140402085948442e-5,-4.420012359781004e-8,0.004431913708413011,1.190525144918933e-5,-4.367745401611296e-8,0.004432202271488714,1.1603137979985335e-5,-4.3005902031456583e-8,0.00443261096494701,1.128105558813796e-5,-4.228959825337529e-8,0.004433145658560025,1.1001798769206879e-5,-4.166779716993523e-8,0.004433779801368679,1.082900401217352e-5,-4.12817006687968e-8,0.004434454646972603,1.0805123199301839e-5,-4.122560821070611e-8,0.004435094025680583,1.093179184586048e-5,-4.1503363883340675e-8,0.004435629850168535,1.1164738583475233e-5,-4.20170322203088e-8,0.004436026030782993,1.1428372850655338e-5,-4.259921088755147e-8,0.004436288544140871,1.1642827137621819e-5,-4.30729574358741e-8,0.00443645852333741,1.1749408550127374e-5,-4.33081550485094e-8,0.004436594888881352,1.1724150687214207e-5,-4.3251474414460785e-8,0.004436755874140951,1.1577909422798677e-5,-4.292656969019233e-8,0.00443698556045168,1.134743368171151e-5,-4.241440383930332e-8,0.004437307141160754,1.1082923092713402e-5,-4.1825890935872864e-8,0.004437722000943753,1.0835997728485317e-5,-4.1275427325207346e-8,0.004438212894918262,1.0650076781292515e-5,-4.0859608303239765e-8,0.004438749638289341,1.055393982394728e-5,-4.0642808497137944e-8,0.004439295959152751,1.0558721353467244e-5,-4.065026502851615e-8,0.004439816265453436,1.065819146280534e-5,-4.0868482817672476e-8,0.004440281272009354,1.0831676496297347e-5,-4.1251640135869176e-8,0.004440671831938921,1.1048643543678123e-5,-4.173183848769729e-8,0.004440980777783971,1.1273898329578631e-5,-4.2230779881881195e-8,0.00444121303269828,1.1472474912977608e-5,-4.267071508775094e-8,0.004441384565236301,1.1613723431763203e-5,-4.298351149337096e-8,0.004441520716355006,1.1674659260946504e-5,-4.311801611635916e-8,0.004441654103827259,1.1642927188475744e-5,-4.304658575328331e-8,0.004441821893723169,1.151970903380154e-5,-4.277157863485106e-8,0.004442061733825511,1.1322569755221519e-5,-4.2331789891194374e-8,0.004442405367359218,1.1087324544257746e-5,-4.1806717475930976e-8,0.004442869542993695,1.0866655575333044e-5,-4.1313536007648224e-8,0.004443445735403163,1.0722317764963522e-5,-4.0989728756109695e-8,0.004444093284368835,1.0708865030730829e-5,-4.0956817567218523e-8,0.0044447430760904995,1.085167507562386e-5,-4.127142029165161e-8,0.004445316435740319,1.1129602124610225e-5,-4.1886642259513546e-8,0.004445754128237322,1.1475626607160576e-5,-4.2653546623268654e-8,0.004446040101964218,1.180003031512926e-5,-4.3372752883896014e-8,0.004446205530673317,1.2024629257590159e-5,-4.387057130415036e-8,0.004446312162708855,1.2108771182796773e-5,-4.405669777283164e-8,0.004446427135514646,1.2055740045207085e-5,-4.3938284164400834e-8,0.004446602819718554,1.1902415131929761e-5,-4.3596893302424874e-8,0.004446867462772274,1.1702280581489064e-5,-4.3150880569211476e-8,0.00444722502652385,1.1510013581017392e-5,-4.272141346034424e-8,0.004447660112373166,1.1371009258943887e-5,-4.240940734950581e-8,0.004448144592351008,1.1315808141326373e-5,-4.228315760058449e-8,0.00444864413440166,1.1358103698667109e-5,-4.237371725707588e-8,0.004449124029971733,1.1495141539025288e-5,-4.2675501313854964e-8,0.004449554153193063,1.1709878328814522e-5,-4.315087896932633e-8,0.004449912835517964,1.1974488478859295e-5,-4.373794004970734e-8,0.004450189440411732,1.2254789064169708e-5,-4.4360459045246395e-8,0.004450385488268202,1.2515133469631053e-5,-4.493894052335691e-8,0.004450514285615522,1.2723218588808307e-5,-4.540139076746559e-8,0.004450599251519201,1.285424788009527e-5,-4.569253626675187e-8,0.0044506713012207,1.2894201090678989e-5,-4.578100104332719e-8,0.004450765540459394,1.2842246866083047e-5,-4.5664633203186566e-8,0.004450917284953617,1.2712332911019386e-5,-4.537412450667041e-8,0.004451157155322636,1.2533780867555994e-5,-4.497450577626395e-8,0.004451504873237557,1.2350163721766086e-5,-4.45628020467471e-8,0.004451961919675364,1.2214876307893983e-5,-4.425820466465791e-8,0.004452504731610211,1.218142064773772e-5,-4.418032467973815e-8,0.004453082319776596,1.2287689702351628e-5,-4.441399178406356e-8,0.0044536237576869794,1.2537566429059222e-5,-4.496809227303929e-8,0.004454058600129623,1.2889221277017663e-5,-4.5749448011482285e-8,0.004454344557171657,1.3261764007055407e-5,-4.657774011379726e-8,0.004454487209756872,1.356321056345686e-5,-4.724799032523849e-8,0.004454537817108847,1.3726577222573843e-5,-4.761103975360433e-8,0.004454569953530231,1.3733042945322505e-5,-4.762500825386583e-8,0.0044546503114754445,1.3611019367534598e-5,-4.7353008192290663e-8,0.004454819540444871,1.3417353161617989e-5,-4.692121901981639e-8,0.004455088006355839,1.3214963151419203e-5,-4.6469264458608674e-8,0.0044554417320164475,1.3056798315819873e-5,-4.6114776888332594e-8,0.00445585181070049,1.2978205618864193e-5,-4.5936593073707565e-8,0.004456283063848414,1.2995515360089378e-5,-4.597157388372203e-8,0.004456700455403941,1.3107894323916252e-5,-4.621850553884396e-8,0.0044570734879752745,1.3300386432833933e-5,-4.664459015113946e-8,0.004457379329847273,1.354733210799182e-5,-4.719288460843296e-8,0.004457605083715164,1.381611653844664e-5,-4.779065425340231e-8,0.004457749208594007,1.4071308351959136e-5,-4.835873390854053e-8,0.004457821935847933,1.4279162754995978e-5,-4.882171487818592e-8,0.004457844413589892,1.4412244841220207e-5,-4.9118304592704225e-8,0.004457846392811299,1.4453606997495086e-5,-4.9210578647334747e-8,0.004457862579541846,1.4399892313824196e-5,-4.909080557286075e-8,0.004457928006711199,1.4262935015950712e-5,-4.878499921089497e-8,0.0044580728160356475,1.406956442522464e-5,-4.835259699152093e-8,0.004458316817654614,1.385936585539174e-5,-4.7881662798881046e-8,0.004458664213340158,1.3680097018682372e-5,-4.7478820736234354e-8,0.004459099197509258,1.3580228791160693e-5,-4.725262339870064e-8,0.004459584026033035,1.3598195514992196e-5,-4.728940689142557e-8,0.004460062199621417,1.3749252092781208e-5,-4.762371409222547e-8,0.0044604695823886415,1.4013664681784223e-5,-4.8211740969940616e-8,0.004460753777901616,1.4333327715772738e-5,-4.8923755358978294e-8,0.004460895857321044,1.4624178301927179e-5,-4.957195585635171e-8,0.00446092230560696,1.4804495669279922e-5,-4.997383459421404e-8,0.004460896977374359,1.4826692738442146e-5,-5.002318300311229e-8,0.004460895349738283,1.4694329378561483e-5,-4.972790533985917e-8,0.004460976016780967,1.4455254987504552e-5,-4.919452719357374e-8,0.0044611646111219405,1.4178234027314433e-5,-4.857603680579923e-8,0.004461454185855782,1.3928460573193122e-5,-4.801746458935442e-8,0.0044618157539403095,1.3752419469232318e-5,-4.7622364855750946e-8,0.0044622107137216325,1.3673354803297678e-5,-4.7442825841443116e-8,0.00446260043945746,1.369354382664959e-5,-4.7484455725649896e-8,0.004462952022908023,1.3799219006272274e-5,-4.7717131725367e-8,0.004463241121058138,1.3965553328710682e-5,-4.8085882901992276e-8,0.004463453324834858,1.4160873361938923e-5,-4.852016867099879e-8,0.0044635849469705675,1.435036495631774e-5,-4.894218569650978e-8,0.004463643417515637,1.4499782775240661e-5,-4.9275285274911396e-8,0.004463647051016639,1.4579493829923948e-5,-4.945312739285398e-8,0.004463623708041326,1.456882906403381e-5,-4.9429429021382195e-8,0.004463607842406662,1.4460176219189537e-5,-4.918704040982184e-8,0.0044636357910401445,1.4261818394534823e-5,-4.874420470914212e-8,0.0044637397511841466,1.3998495202235436e-5,-4.815581116683994e-8,0.004463941391235043,1.3708962880863763e-5,-4.7508063679370155e-8,0.004464246337336341,1.3440376771153735e-5,-4.6906117413019404e-8,0.0044646407956383674,1.3240001878015215e-5,-4.645569825673976e-8,0.004465091381001237,1.3145269848031426e-5,-4.624087973870854e-8,0.004465549066273715,1.3173598219246631e-5,-4.6301165592733985e-8,0.004465957939694511,1.3314136875100861e-5,-4.661280004540448e-8,0.004466268576327031,1.352468763662037e-5,-4.708169932958065e-8,0.00446645372428031,1.3737541360524216e-5,-4.7556478385599956e-8,0.004466520878302181,1.3876287526487771e-5,-4.786615773013864e-8,0.004466514326078782,1.3880445157377903e-5,-4.7875375783545784e-8,0.004466502142877897,1.3727918531229615e-5,-4.753461483998569e-8,0.004466552086217613,1.344312403337607e-5,-4.689826847344771e-8,0.0044667082651349286,1.3085819784721498e-5,-4.609959388131855e-8,0.004466980019477852,1.2727550786706039e-5,-4.529813388914731e-8,0.004467345755137234,1.2428783962732317e-5,-4.4628795806165725e-8,0.004467765779943532,1.2225982089979055e-5,-4.4173112494455235e-8,0.004468196005854024,1.2129693991677846e-5,-4.395498255353792e-8,0.004468597642816224,1.2129490543834448e-5,-4.395156917433471e-8,0.00446894206410521,1.2201011417455164e-5,-4.410885737385981e-8,0.00446921225500677,1.2312244640502023e-5,-4.43555394468987e-8,0.004469402654481283,1.2428213420078234e-5,-4.46134499502362e-8,0.0044695185950805304,1.2514503621319245e-5,-4.48055188286882e-8,0.004469575723049835,1.2540430548831996e-5,-4.486296672886854e-8,0.004469599148903078,1.2482479511679878e-5,-4.473308223481721e-8,0.004469621667375493,1.2328204497541601e-5,-4.4387945702341005e-8,0.004469680258111596,1.2080054076724377e-5,-4.38329250854799e-8,0.004469810440791369,1.1757832861630705e-5,-4.3112118745779403e-8,0.004470038938882233,1.139812552580378e-5,-4.2307071423256166e-8,0.004470376233823944,1.1049363336854192e-5,-4.1525836645826615e-8,0.004470811437085582,1.0762470256707936e-5,-4.088220096014905e-8,0.004471311827050345,1.057885493987764e-5,-4.046892914926202e-8,0.004471828174441778,1.0518954079644614e-5,-4.0332120643179816e-8,0.00447230517930829,1.057478045414597e-5,-4.045439322306815e-8,0.004472694773246646,1.0709058764895794e-5,-4.075274930775221e-8,0.004472969079340785,1.0862056909000877e-5,-4.1093716830421817e-8,0.004473129460972397,1.096542999972803e-5,-4.1324306385980915e-8,0.004473208349376754,1.0960344314636686e-5,-4.131265117419883e-8,0.004473261801176122,1.0814980769902441e-5,-4.098727821687716e-8,0.004473353611162491,1.0535090952922028e-5,-4.036078520359405e-8,0.004473535890618031,1.0162456216834655e-5,-3.952640941680167e-8,0.004473833792415958,9.760956408521302e-6,-3.862688960352953e-8,0.004474240602953426,9.396173414810474e-6,-3.7808898628385294e-8,0.004474724001444978,9.11738920258227e-6,-3.718281945206038e-8,0.004475238859403357,8.948272943174389e-6,-3.6801887768029544e-8,0.0044757402350894555,8.887048525787006e-6,-3.6662466891908055e-8,0.004476192324498001,8.912754115928486e-6,-3.6717928510436886e-8,0.004476572466872101,8.99328366656885e-6,-3.689655835364853e-8,0.004476871540255352,9.092325994737656e-6,-3.711706737226179e-8,0.0044770926280973825,9.174281950373387e-6,-3.7299643889725875e-8,0.004477249315061717,9.207572991317009e-6,-3.737343689531388e-8,0.0044773641629216165,9.167232096321902e-6,-3.7282422144220036e-8,0.004477467204936426,9.037578898248145e-6,-3.699141801660316e-8,0.004477593756950581,8.815347168589488e-6,-3.649307148880597e-8,0.00447778058690321,8.512872182307729e-6,-3.5814955514758316e-8,0.004478059745215661,8.159958224253264e-6,-3.502372164908136e-8,0.004478450365817333,7.802247766408065e-6,-3.4221459193305144e-8,0.004478950468601355,7.494062159631074e-6,-3.3529720730520204e-8,0.004479532465119492,7.285542176108168e-6,-3.3060801908352687e-8,0.004480146136971822,7.2072554470058906e-6,-3.288331103792207e-8,0.004480730224220354,7.258279349781589e-6,-3.2995444030558204e-8,0.004481229449583244,7.4035582392112385e-6,-3.331896233314279e-8,0.004481610689525678,7.582522644393277e-6,-3.371838931973838e-8,0.004481872292063173,7.725939025928392e-6,-3.403868938062639e-8,0.00448204374844317,7.774910697168804e-6,-3.414782399457034e-8,0.004482176671298304,7.696059172490782e-6,-3.397078855811176e-8,0.004482330435030019,7.4890430319435334e-6,-3.350650916046562e-8,0.004482556672721601,7.1850969128227755e-6,-3.282465246101726e-8,0.0044828866992572885,6.837522641746615e-6,-3.2044432737991846e-8,0.0044833250857910616,6.507056498926579e-6,-3.130192899832561e-8,0.004483850858172803,6.24650987263678e-6,-3.071570165203201e-8,0.004484425307959444,6.08924159396039e-6,-3.036088489326645e-8,0.004485003194359061,6.044356934728174e-6,-3.025827024763154e-8,0.004485543401858622,6.098712850233066e-6,-3.0378643182073185e-8,0.004486016219005494,6.2234233182378906e-6,-3.0657287324259747e-8,0.0044864064166258944,6.3817652026060565e-6,-3.1011736157922704e-8,0.004486712974298434,6.536100940869929e-6,-3.135738930785751e-8,0.004486946987567679,6.652794334948827e-6,-3.16186317416998e-8,0.0044871290855611435,6.705289352964788e-6,-3.173578594963119e-8,0.004487287039748156,6.676139966458214e-6,-3.1669660514816774e-8,0.004487453549021817,6.558809591876483e-6,-3.1405558068106883e-8,0.004487663626245549,6.359694715241642e-6,-3.095779699979666e-8,0.004487950667436226,6.100153211559874e-6,-3.0374268126452117e-8,0.004488340386805238,5.817319379742182e-6,-2.973828357636435e-8,0.004488842722498734,5.561454687988725e-6,-2.9162651978515495e-8,0.004489443758855133,5.387386078451001e-6,-2.87704753805209e-8,0.00449010207955269,5.339481305214199e-6,-2.866142686948672e-8,0.004490754688042762,5.434077367358827e-6,-2.887228736862537e-8,0.004491334130057058,5.647948607453723e-6,-2.9351019643881805e-8,0.004491791249757919,5.921297869142392e-6,-2.99634549511861e-8,0.004492112629279643,6.17644552752166e-6,-3.0535254824106297e-8,0.00449232388491216,6.343735825162951e-6,-3.0910079891972617e-8,0.004492478423788278,6.3824291151391336e-6,-3.0996454297399085e-8,0.0044926387333911215,6.288994539844147e-6,-3.078631234061721e-8,0.004492858636300761,6.092913739653983e-6,-3.0345562453837724e-8,0.004493171588724417,5.844789364045817e-6,-2.9787493231587065e-8,0.00449358619792652,5.60206433789655e-6,-2.9240893731404095e-8,0.004494087869175982,5.4161245069199806e-6,-2.882123891207294e-8,0.004494644740160421,5.322864554289205e-6,-2.8609503663609465e-8,0.004495216006784931,5.337654872160231e-6,-2.864069875751362e-8,0.004495760772876803,5.45491845871229e-6,-2.8902689986086383e-8,0.00449624562807949,5.6517357057193595e-6,-2.9344127629553888e-8,0.004496649625176552,5.894052353282223e-6,-2.988837234120634e-8,0.004496966197981279,6.14368973988668e-6,-3.044936038422412e-8,0.004497202413708704,6.364618307242032e-6,-3.094585642668188e-8,0.004497376491928267,6.527582409948589e-6,-3.131194447327545e-8,0.004497514640436966,6.6129278100694005e-6,-3.150337999113445e-8,0.004497647925917268,6.612117621637158e-6,-3.150093270015358e-8,0.004497809336845073,6.528610724443239e-6,-3.131231070153016e-8,0.004498030707089667,6.3785361876222695e-6,-3.09736925859592e-8,0.004498338829174895,6.191080665260008e-6,-3.055066942661581e-8,0.004498750077775436,6.0076683654676744e-6,-3.013646953689903e-8,0.004499263612814337,5.8780642609847445e-6,-2.9843203850422515e-8,0.004499854940636369,5.851244450515609e-6,-2.9781269629881294E-08,0.004500473936466841,5.960397636023314e-6,-3.002551100540538e-8,0.004501052719345036,6.205775394502228e-6,-3.057655086561226e-8,0.00450152565398311,6.544818406940442e-6,-3.133855594471292e-8,0.004501855052718436,6.89991925988118e-6,-3.213677936923044e-8,0.004502048299394567,7.184984577129539e-6,-3.277745584916125e-8,0.00450215485481849,7.337928245096862e-6,-3.312096524996092e-8,0.004502244939964075,7.34104622514252e-6,-3.31275673941889e-8,0.0045023832883471036,7.220589179745083e-6,-3.285626158580508e-8,0.0045026110823796145,7.030850470500054e-6,-3.2428926008768215e-8,0.0045029404092560505,6.834169236371335e-6,-3.198546698313869e-8,0.004503358106314494,6.685082210089396e-6,-3.1648403907449894e-8,0.004503833931529304,6.621199922123047e-6,-3.150250475699595e-8,0.004504329393182454,6.659916022098113e-6,-3.158735035096041e-8,0.004504805490228415,6.79906815339101e-6,-3.18986098972113e-8,0.0045052288712172945,7.020052500014815e-6,-3.239479081077634e-8,0.004505576291020284,7.292536290791366e-6,-3.300768877577651e-8,0.004505837190189702,7.580099251624076e-6,-3.3655110613896705e-8,0.0045060143045280365,7.846042790020471e-6,-3.42541110553583e-8,0.004506122446663604,8.058625318459529e-6,-3.473295260761845e-8,0.0045061858442556986,8.195104654863028e-6,-3.504028264202122e-8,0.004506234642510104,8.244233774000591e-6,-3.515070923594395e-8,0.004506301185498216,8.20730170658394e-6,-3.506705303538336e-8,0.004506416396345633,8.098093426558627e-6,-3.482021907021817e-8,0.004506606235169193,7.94206498498607e-6,-3.446740371929097e-8,0.004506887964378976,7.774744655900673e-6,-3.4088620681013444e-8,0.004507265898608951,7.63883680811971e-6,-3.378026681707891e-8,0.004507726866888514,7.578827637892328e-6,-3.364294154809401e-8,0.0045082369085281135,7.631796357853752e-6,-3.376059550196789e-8,0.0045087423408103665,7.81442404265071e-6,-3.4171064362557586e-8,0.004509179270358261,8.109527450340536e-6,-3.48355963905556e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json new file mode 100644 index 000000000..d989a12f4 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_26.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":26000,"numberOfSamples":1000,"samples":[0.004509493310776733,8.460255546355793e-6,-3.5625800851343465e-8,0.004509663584584268,8.78152154032578e-6,-3.634960149730122e-8,0.004509716789810693,8.989819707723907e-6,-3.681866430913203e-8,0.004509719059465651,9.037418772725032e-6,-3.692552117143939e-8,0.004509748243703133,8.930185223519827e-6,-3.668355434778159e-8,0.004509863647122957,8.719470842231082e-6,-3.620846132642241e-8,0.004510089653785742,8.476972036399517e-6,-3.5661533171045015e-8,0.004510416800722429,8.269299770251092e-6,-3.51925282944491e-8,0.004510813094911667,8.1427235238956e-6,-3.4905561743649874e-8,0.004511237012805131,8.118815983827459e-6,-3.4849442039030304e-8,0.004511647598100416,8.19695215375018e-6,-3.5023237901990346e-8,0.004512010754110658,8.359585736620415e-6,-3.538793530902102e-8,0.004512302608721269,8.577895407180773e-6,-3.5878908014654e-8,0.004512511101780664,8.817020399356672e-6,-3.6417590410461715e-8,0.004512636407156604,9.040913865577355e-6,-3.692247406897225e-8,0.004512690307657771,9.216869444768706e-6,-3.7319489010541575e-8,0.004512694498577715,9.319590010896785e-6,-3.755134208751638e-8,0.004512677812454461,9.33448051439994e-6,-3.758499305360356e-8,0.004512672525088187,9.259714461186162e-6,-3.74162487552752e-8,0.004512710155956202,9.106773676260358e-6,-3.7070886445067697e-8,0.004512817232229619,8.899452134994748e-6,-3.660239062283695e-8,0.004513011361703757,8.671416905011533e-6,-3.6086549932726506e-8,0.0045132978459024205,8.462410007400726e-6,-3.561303803422552e-8,0.00451366700674806,8.313087368408677e-6,-3.5273853268424084e-8,0.004514092641922462,8.258223307030978e-6,-3.5147920393724736e-8,0.004514532771288454,8.318077690988317e-6,-3.5281410931936163e-8,0.004514934630932754,8.4888481118899e-6,-3.566597134940736e-8,0.004515245854344678,8.735374126556136e-6,-3.622214330179837e-8,0.0045154316998782295,8.991891199064452e-6,-3.6801147360575755e-8,0.004515492902915043,9.176856590224277e-6,-3.7218586920753816e-8,0.004515473030595792,9.22132948769478e-6,-3.731873347690093e-8,0.004515445973338222,9.09843419372188e-6,-3.704104339955742e-8,0.00451548682469044,8.835578371895206e-6,-3.644751863773576e-8,0.00451564268107663,8.500985857177386e-6,-3.5692080359945736e-8,0.0045159197183348996,8.174205711565663e-6,-3.495399269113799e-8,0.004516289609363855,7.91891452501725e-6,-3.437668106843999e-8,0.004516706111846334,7.769533914623208e-6,-3.403776290168179e-8,0.004517121078763411,7.73134067417984e-6,-3.3949388348932536e-8,0.0045174946878258695,7.787734155315276e-6,-3.4074540770568025e-8,0.004517799867137044,7.908923469211388e-6,-3.434642142253354e-8,0.004518023021591153,8.059160327422076e-6,-3.468456742654183e-8,0.004518163140214663,8.202005982025426e-6,-3.50066650311153e-8,0.004518230411948181,8.30424890030949e-6,-3.523747823122548e-8,0.004518244570725208,8.33915192550796e-6,-3.531634932075353e-8,0.004518232782286238,8.28935594403696e-6,-3.5203891163581475e-8,0.004518226774465987,8.149365170645358e-6,-3.488762043767852e-8,0.004518259006711036,7.927116613346235e-6,-3.438542274392408e-8,0.004518358060544222,7.643963370228097e-6,-3.3745425584923236e-8,0.004518543856405558,7.332621283429884e-6,-3.3041356370972954e-8,0.004518823498710852,7.0329632269025115e-6,-3.236314547040654e-8,0.004519188579967757,6.785903929501321e-6,-3.180325247605029e-8,0.004519614661144808,6.626048418181081e-6,-3.14401232958339e-8,0.0045200634304379044,6.5740276672578925e-6,-3.132079397132222e-8,0.004520487966458727,6.62956304606739e-6,-3.144502131997278e-8,0.00452084147546764,6.766843341505083e-6,-3.175463526314589e-8,0.004521089187148414,6.934764185105069e-6,-3.2134004538126606e-8,0.004521221269959029,7.065025688552307e-6,-3.2428442843453624e-8,0.004521261859102045,7.089574850293132e-6,-3.248384715700535e-8,0.0045212674299407694,6.964089990219654e-6,-3.2199939344201606e-8,0.004521310513078177,6.687544084459722e-6,-3.1574464342686096e-8,0.004521453447203763,6.305670157088708e-6,-3.071085821791362e-8,0.0045217253573987225,5.893958647960642e-6,-2.9779688167653515e-8,0.004522114733755025,5.529133856038296e-6,-2.8954214723599135e-8,0.004522579377927455,5.264744210794258e-6,-2.8355366465152043e-8,0.004523065009217748,5.120982847527676e-6,-2.802885167464862e-8,0.004523521972907846,5.088150002782038e-6,-2.7952986672350293e-8,0.004523914736487703,5.136932989628306e-6,-2.8061821235107004e-8,0.004524224518460753,5.229079919518181e-6,-2.8269112293518485e-8,0.004524447866784532,5.325356167857952e-6,-2.8486202260608446e-8,0.004524593830297251,5.390497834119252e-6,-2.8633216627973057e-8,0.004524681160259874,5.396171432205578e-6,-2.864585654482284e-8,0.004524735849207278,5.323027317101781e-6,-2.8480176026552257e-8,0.0045247886943237964,5.16249823096028e-6,-2.8116730602371682e-8,0.004524872353940403,4.918444281738836e-6,-2.7564280225240977e-8,0.0045250174349796965,4.608134848323794e-6,-2.68619228883987e-8,0.004525247591606092,4.261615509273891e-6,-2.6077583364155316e-8,0.004525574321292053,3.918549452938378e-6,-2.530086898948843e-8,0.00452599277311532,3.622150479587777e-6,-2.462943302074595e-8,0.0045264801545203655,3.4107258886289212e-6,-2.4149954956603862e-8,0.004526998018263306,3.308450392319929e-6,-2.3917312554474847e-8,0.004527498775693957,3.317760005942039e-6,-2.3937301228621522e-8,0.00452793558120547,3.415707219466181e-6,-2.415823276235786e-8,0.00452827373820132,3.555942963102195e-6,-2.4475281614218993e-8,0.004528501076735233,3.677053577969154e-6,-2.4749321189987848e-8,0.004528634255226658,3.7166708540264696e-6,-2.4838951555615288e-8,0.00452871788049019,3.6288209284880697e-6,-2.4639908971730102e-8,0.004528814461392247,3.399578871249497e-6,-2.4120586107355082e-8,0.004528986348915549,3.0544546974012395e-6,-2.3338735228699577e-8,0.004529275447593868,2.652362755159554e-6,-2.2427751850493508e-8,0.0045296894826229355,2.266809562799965e-6,-2.1554061940523532e-8,0.004530201357681512,1.962172998408435e-6,-2.0863453384503786e-8,0.004530761107800889,1.7757792179593227e-6,-2.044053421769499e-8,0.004531313427122603,1.7122786235617054e-6,-2.0295983770420518e-8,0.0045318125655776954,1.749367675975404e-6,-2.037944352447753e-8,0.004532230187937357,1.8490802478591477e-6,-2.0605011670815894e-8,0.00453255650096998,1.968861091375431e-6,-2.08762767548505e-8,0.004532797413529103,2.069429992863889e-6,-2.1104137100273155e-8,0.004532970455627508,2.1191957801873115e-6,-2.121685754164669e-8,0.004533101006844266,2.0963386322046738e-6,-2.1164869031366592e-8,0.004533219236241922,1.9898190337828303e-6,-2.09231193072752e-8,0.004533357423629913,1.8001513809640854e-6,-2.0492836790277707e-8,0.004533546992225019,1.540165048997408e-6,-1.9903207651827864e-8,0.004533814625910253,1.2352637227640804e-6,-1.9211889086172134e-8,0.0045341773121543635,9.220902568912064e-7,-1.8501932634248034e-8,0.004534637007950439,6.443360771918933e-7,-1.7872295458798828e-8,0.004535176664792075,4.4499167138597644e-7,-1.7420339103780497e-8,0.004535760035304328,3.557925328380303e-7,-1.7217978115692215e-8,0.004536337215533742,3.866412902473646e-7,-1.728772350881937e-8,0.004536855876733859,5.191842687487436e-7,-1.7588072274695526e-8,0.004537275385870752,7.081369882607212e-7,-1.8016430469229954e-8,0.004537579125593926,8.912435030713721e-7,-1.8431639886474907e-8,0.004537780530744449,1.005317578228007e-6,-1.8690357071296403e-8,0.004537920538034231,1.0034699039837472e-6,-1.868616129977461e-8,0.0045380570398233745,8.682810605385142e-7,-1.837946472292758e-8,0.004538249294644987,6.169983072998986e-7,-1.780931248930263e-8,0.004538541670781989,2.970358272201004e-7,-1.708319176747392e-8,0.004538951579800054,-2.7231731686069303e-8,-1.634711520277816e-8,0.004539465565272268,-2.9245638234442717e-7,-1.5744867236873657e-8,0.004540044817016876,-4.530987714794202e-7,-1.537993968878856e-8,0.004540637691521912,-4.913904592554641e-7,-1.5292863661002783e-8,0.0045411941681401885,-4.179588426089708e-7,-1.545968048557915e-8,0.0045416771529875445,-2.646725790176748e-7,-1.580808820140591e-8,0.004542067915028178,-7.389589463817978e-8,-1.624181308946475e-8,0.004542365941693601,1.1161571806108388e-7,-1.6663601282918254e-8,0.004542585366851695,2.557719936323004e-7,-1.6991327574329404e-8,0.004542750301596352,3.328556897280507e-7,-1.7166487509062615e-8,0.004542890539772055,3.288339048433999e-7,-1.7157205799619142e-8,0.004543038110357333,2.4148307307612337e-7,-1.6958505979006495e-8,0.00454322442352209,8.020747945813414e-8,-1.659185787564851e-8,0.004543477357567356,-1.341554185295706e-7,-1.6104693284517906e-8,0.0045438176089469635,-3.6995599015852086e-7,-1.5568968349127696e-8,0.004544254057927853,-5.868612278189073e-7,-1.507632289085078e-8,0.004544778812882803,-7.409000787411416e-7,-1.4726631776247386e-8,0.0045453638821404034,-7.933529756111925e-7,-1.4607830316871693e-8,0.004545962512626217,-7.226259496806341e-7,-1.4768947865738407e-8,0.004546517831531095,-5.353354038386974e-7,-1.5194914668309396e-8,0.004546978401910495,-2.705801777601392e-7,-1.5796839796783648e-8,0.004547315606031961,7.426064280520287e-9,-1.6428760347708144e-8,0.00454753489003374,2.2771495362971647e-7,-1.6929398929145512e-8,0.004547674975302893,3.348200634734904e-7,-1.7172762210130373e-8,0.004547795269270398,3.0546407671952013e-7,-1.7106022758788838e-8,0.004547957342816333,1.5361082419481356e-7,-1.6760923023671023e-8,0.004548207818776337,-7.620926519655014e-8,-1.623857269178295e-8,0.004548567688113334,-3.2310178950335675e-7,-1.5677235728358874e-8,0.004549029689400049,-5.261904517049809e-7,-1.5215224434557068e-8,0.004549562879332015,-6.387181991297879e-7,-1.4958938590346338e-8,0.004550122119909111,-6.369676213818445e-7,-1.4962560924246113e-8,0.004550659547407562,-5.227487180281773e-7,-1.522226203843342e-8,0.00455113503524916,-3.198295674394947e-7,-1.568415057741117e-8,0.004551523306381531,-6.614611648123595e-8,-1.6261898726347644e-8,0.004551816641272785,1.9551328796095916e-7,-1.685796274830549e-8,0.004552023601182218,4.2580724108011224e-7,-1.7382583753550408e-8,0.004552165189758773,5.945892816202448e-7,-1.7766991018379748e-8,0.004552270093790798,6.837932410099917e-7,-1.7970026091410244e-8,0.004552370226282839,6.880617875256065e-7,-1.797954851084639e-8,0.004552497089156715,6.141061808103928e-7,-1.781091130786019e-8,0.004552678823971549,4.796156243032983e-7,-1.7504429067141582e-8,0.004552937441607541,3.1202357072442164e-7,-1.7122570952647516e-8,0.004553285657210565,1.4683488458868566e-7,-1.6746191281231358e-8,0.004553723072438308,2.461230159602889e-8,-1.6467701649164962e-8,0.004554232297584862,-1.4673606685835707e-8,-1.6378198838017022e-8,0.004554776931368462,5.916408340345163e-8,-1.654648595704409e-8,0.004555304544316013,2.5471410996338887e-7,-1.699210890005788e-8,0.004555757580182239,5.487508779098537e-7,-1.766206390844868e-8,0.00455609163018589,8.847980560550384e-7,-1.8427567403072217e-8,0.004556294266149341,1.1862585904106192e-6,-1.9114066338961307e-8,0.00455639356224145,1.3819276275300728e-6,-1.955944643880223e-8,0.004556449423840962,1.4320994076717743e-6,-1.967347844662727e-8,0.00455653146260646,1.3415196289400694e-6,-1.9467164239301853e-8,0.004556695250636879,1.1538974614742377e-6,-1.9040064669564954e-8,0.00455696762660136,9.337292242152009e-7,-1.8538868697838413e-8,0.004557344253094815,7.457228920368247e-7,-1.8110674855141883e-8,0.004557796262614695,6.393184058846508e-7,-1.7867944352973605e-8,0.004558280964655819,6.408021303045762e-7,-1.7870661006435703e-8,0.004558752717751708,7.521507776956689e-7,-1.812364701480733e-8,0.004559171865542613,9.545520907436515e-7,-1.8584396920373626e-8,0.004559510918417762,1.214685417394258e-6,-1.9177186559210626e-8,0.0045597577345257365,1.492268065989241e-6,-1.9810175736451022e-8,0.004559915758252532,1.747525782261627e-6,-2.0392490975707653e-8,0.004560001790681829,1.947399946982737e-6,-2.084852456530275e-8,0.004560042130719432,2.069755428846989e-6,-2.112766147211479e-8,0.004560068031127442,2.105379942421046e-6,-2.1208875035905857e-8,0.004560111313149676,2.0580137470542224e-6,-2.110073390215724e-8,0.004560200668904181,1.943025512553438e-6,-2.083829693588606e-8,0.004560358702285993,1.785412603296129e-6,-2.0478523102675264e-8,0.004560599413535639,1.6174458646150957e-6,-2.009495393525646e-8,0.004560925771429382,1.4758038902445344e-6,-1.977126696599221e-8,0.004561327227637577,1.3976103681723366e-6,-1.9592281027131787e-8,0.004561777687863393,1.414475222692563e-6,-1.963031184849548e-8,0.004562235579990404,1.5439760444566057e-6,-1.9925614673578647e-8,0.004562648675447503,1.7796412722016043e-6,-2.046341689014831e-8,0.004562966076598825,2.0834817290894464e-6,-2.1156859279096877e-8,0.004563156563769151,2.3880171788488707e-6,-2.1851733662215338e-8,0.004563226026995868,2.6134961406077906e-6,-2.236596297709388e-8,0.004563222002259049,2.697182257226839e-6,-2.255654425324677e-8,0.004563218140920344,2.6200473503104345e-6,-2.2380369070183947e-8,0.004563285177328307,2.4142697533356353e-6,-2.1911080480621846e-8,0.00456346510562536,2.1474700508499156e-6,-2.1302898831592876e-8,0.0045637614855055355,1.8952029862123072e-6,-2.0727876983910757e-8,0.004564146109374209,1.717390042126911e-6,-2.0322347502066937e-8,0.004564573586655692,1.6467160412382832e-6,-2.0160696512706902e-8,0.004564995621143562,1.6879982482464885e-6,-2.025403919365333e-8,0.004565371098880404,1.823849272809698e-6,-2.0563061761098215e-8,0.004565671575998424,2.0224636955771143e-6,-2.1015577494141815e-8,0.004565883304822525,2.2451570701558744e-6,-2.1523520714831093e-8,0.004566007062175339,2.4528861969496664e-6,-2.1997743592595424e-8,0.004566056469157245,2.6116666971517507e-6,-2.23604574329312e-8,0.004566055109573586,2.6967378051573467e-6,-2.2554903643749895e-8,0.004566032787591015,2.6952576374760298e-6,-2.2551638035756678e-8,0.004566021340058094,2.6074130943391173e-6,-2.2351082445335482e-8,0.004566050456020915,2.445916611802514e-6,-2.198229461679592e-8,0.004566143978834918,2.234071638222029e-6,-2.1498460356284963e-8,0.004566316991076654,2.002834908710053e-6,-2.0970174692905903e-8,0.004566573698773829,1.7872369419549948e-6,-2.047735188978444e-8,0.004566906025496633,1.6222415688750605e-6,-2.009987915744285e-8,0.004567292941820179,1.5378947751270364e-6,-1.9906572258774763e-8,0.0045677009482845456,1.5534732761251689e-6,-1.9941722705096247e-8,0.004568086845586504,1.6706423254153708e-6,-2.0209304708076832e-8,0.004568404479915657,1.8669001932336232e-6,-2.065787129431821e-8,0.004568616641222311,2.0927296815380814e-6,-2.1174057753546027e-8,0.004568710628782926,2.277737563029436e-6,-2.159677431671749e-8,0.004568710906383361,2.3496980887248315e-6,-2.1760931647364762e-8,0.004568678450507578,2.2627328227331568e-6,-2.1561913449607736e-8,0.004568690934995052,2.0202730399911163e-6,-2.100789416692359e-8,0.004568811461316786,1.6765736725135978e-6,-2.0223021008261412e-8,0.004569064102334118,1.3138502582226867e-6,-1.939501198865483e-8,0.00456942983638702,1.0095623883627573e-6,-1.870048308376553e-8,0.0045698609228537225,8.126805895776015e-7,-1.8250956905805127e-8,0.004570301299600792,7.370286449055343e-7,-1.8077863586350383e-8,0.004570702395164331,7.675146472653699e-7,-1.8146849034032396e-8,0.004571031105591736,8.712119800734532e-7,-1.838299920858834e-8,0.004571271553897738,1.0077872223193491e-6,-1.8694474593890068e-8,0.004571423431715869,1.1371794672960694e-6,-1.898988427190855e-8,0.00457149912894306,1.224623094486609e-6,-1.9189713805360918e-8,0.004571520661368493,1.2439529482437433e-6,-1.9233970167685107e-8,0.004571516461258664,1.1798659800376192e-6,-1.90875063062554e-8,0.004571517887299565,1.0292685411183112e-6,-1.874320617434184e-8,0.00457155544903053,8.015811947188519e-7,-1.822266996676711e-8,0.004571654890494846,5.177527012148897e-7,-1.757386049492885e-8,0.0045718335249696285,2.0776980474633583e-7,-1.686531683855287e-8,0.004572097388308316,-9.323396016944465e-8,-1.6177255542095043e-8,0.004572439665645757,-3.4987692521596087e-7,-1.5590463436344316e-8,0.004572840644505964,-5.31972816140779e-7,-1.5173961796713732e-8,0.004573269348815289,-6.200415053200593e-7,-1.4972436045635267e-8,0.004573687024026574,-6.10406095595246e-7,-1.4994491965318193e-8,0.004574052809641157,-5.192579563073559e-7,-1.520320779417572e-8,0.00457433198222599,-3.843987328357727e-7,-1.5512049283710714e-8,0.004574506433080039,-2.6231970700412053e-7,-1.57915871799184e-8,0.004574585098804139,-2.1787955603130257e-7,-1.5893271807468845e-8,0.0045746091849351205,-3.056827632750247e-7,-1.569220003592137e-8,0.004574645498676162,-5.476968892825376e-7,-1.513834525051923e-8,0.004574765267068838,-9.184797312588896e-7,-1.4290196294897466e-8,0.00457501606601899,-1.3499749934384158e-6,-1.3303575679860455e-8,0.004575402559457306,-1.7569182650377685e-6,-1.2373436343486388e-8,0.00457588755670308,-2.0690376161348062e-6,-1.1660288023729968e-8,0.004576410675222101,-2.2521266223356963e-6,-1.1242149216779647e-8,0.004576911396180024,-2.3103385627944873e-6,-1.1109414454615705e-8,0.004577344958268909,-2.275047092560445e-6,-1.119036156480763e-8,0.004577688009744958,-2.190125367673378e-6,-1.1384764724171442e-8,0.00457793703023403,-2.1001362793857524e-6,-1.1590799048558753e-8,0.004578103680851678,-2.0432033769984585e-6,-1.1721260373927869e-8,0.004578209903486739,-2.0476287663152695e-6,-1.1711299731405369e-8,0.00457828387494594,-2.1305649056463137e-6,-1.1521549135013692e-8,0.004578356691217041,-2.2974938653969773e-6,-1.113942510021554e-8,0.004578459254883159,-2.5420904405371936e-6,-1.0579494532798996e-8,0.004578618975408969,-2.8466169571197294e-6,-9.882523233547e-9,0.004578856169100808,-3.183321162571054e-6,-9.112167432714705e-9,0.004579180478803452,-3.5174083811508843e-6,-8.34808453913955e-9,0.004579588120477424,-3.8118316727193404e-6,-7.674971745318212e-9,0.004580060934558044,-4.03352156185739e-6,-7.168392305513895e-9,0.0045805679854873955,-4.1600968235078126e-6,-6.87951141941344e-9,0.0045810699651512255,-4.185692981165825e-6,-6.821782230335321e-9,0.00458152603375295,-4.124467505914989e-6,-6.962856854404446e-9,0.004581902189684743,-4.010657797913334e-6,-7.224349646031663e-9,0.004582179915574498,-3.894438306832133e-6,-7.491268811747432e-9,0.004582363424246814,-3.833098119282915e-6,-7.632267271587255e-9,0.004582483126184382,-3.8777855317296025e-6,-7.53011848341852e-9,0.004582592398102796,-4.057840675385612e-6,-7.117693448106915e-9,0.004582755475052093,-4.367487092300224e-6,-6.408428922268497e-9,0.004583027684494128,-4.761913130848646e-6,-5.505193981758026e-9,0.004583434904318093,-5.1682652158940795e-6,-4.575001218916299e-9,0.004583962740856525,-5.509717091332434e-6,-3.793847647778333e-9,0.004584562235224711,-5.731726984261732e-6,-3.286608037184449e-9,0.0045851690079899594,-5.8173444046123675e-6,-3.092013230972495e-9,0.004585724984926677,-5.785936446522613e-6,-3.1655856948169594e-9,0.004586192672434863,-5.680003803249362e-6,-3.4098510201368928e-9,0.004586558909587067,-5.549240041603622e-6,-3.710862720240599e-9,0.004586831090544941,-5.438473165345392e-6,-3.965824489806852e-9,0.004587030516411275,-5.381337431846182e-6,-4.097587491428378e-9,0.004587186126494469,-5.398361853965937e-6,-4.059053627389166e-9,0.0045873298103882906,-5.49731379182367e-6,-3.8324359563939324e-9,0.004587493095288864,-5.6741958005571095e-6,-3.427014054705955e-9,0.0045877044693880785,-5.914235263036652e-6,-2.876857912876998e-9,0.004587986651218072,-6.192958116809043e-6,-2.238299632400325e-9,0.004588353448843592,-6.477950803344133e-6,-1.5858038797377467e-9,0.004588806428404769,-6.73216177730537e-6,-1.0043412823020856e-9,0.00458933233628059,-6.919340188748711e-6,-5.769299288868636e-10,0.004589902743292579,-7.011376771941958e-6,-3.6786881572565e-10,0.004590477310455618,-6.996130497857601e-6,-4.0485922692968167e-10,0.004591011167147137,-6.883260760486553e-6,-6.656513658249578e-10,0.0045914652682251846,-6.705371049354524e-6,-1.075393733113511e-9,0.004591817010039603,-6.512924106794449e-6,-1.5182606557942965e-9,0.004592067796621043,-6.363468442006583e-6,-1.8621675068497396e-9,0.004592244944227824,-6.307637731525589e-6,-1.9909320328163395e-9,0.004592396800370081,-6.375463343972728e-6,-1.835720290287429e-9,0.004592581636072272,-6.566741952320174e-6,-1.397147556305703e-9,0.004592852503308843,-6.848670800862258e-6,-7.506592754098574e-10,0.0045932418347822595,-7.16265852740837e-6,-3.085310633349787e-11,0.004593750787773998,-7.439775464126724e-6,6.039907256439864e-10,0.004594348004365676,-7.620693551409611e-6,1.0176568839792315e-9,0.004594979307958952,-7.67285027729872e-6,1.1353900564086016e-9,0.004595584733360852,-7.597882344516838e-6,9.60993606260401e-10,0.004596115629330661,-7.427042036220201e-6,5.663444100107817e-10,0.004596545284004681,-7.208277314545172e-6,6.172570217697634e-11,0.004596870828408168,-6.9916428475073475e-6,-4.377209163440163e-10,0.004597108555701069,-6.818392915343977e-6,-8.371051908542961e-10,0.004597286586221487,-6.715617670183615e-6,-1.0741512526115635e-9,0.004597438018468549,-6.6953943241077795e-6,-1.1211643140079087e-9,0.004597595917342151,-6.7563461785649045e-6,-9.814428534041288e-10,0.0045977900559172604,-6.8858632210796456e-6,-6.841521467843064e-10,0.004598044659033155,-7.062128212677125e-6,-2.796287018101613e-10,0.004598376318128057,-7.255916920005681e-6,1.6480339335871812e-10,0.004598791545151504,-7.4327601793754e-6,5.698408862789437e-10,0.004599284036273952,-7.55641510487658e-6,8.521963256757693e-10,0.004599832545317101,-7.59449169585154e-6,9.37519703522967e-10,0.004600401089893143,-7.526267837569374e-6,7.783330705853753e-10,0.0046009435048163455,-7.351117380604259e-6,3.7337668699399923e-10,0.004601413323426574,-7.094082392306315e-6,-2.1959916877791475e-10,0.004601777276461345,-6.804398311453375e-6,-8.872456883447427e-10,0.004602027574734469,-6.544807205465784e-6,-1.4852269544859042e-9,0.004602187108824936,-6.373998484428838e-6,-1.878640796994688e-9,0.004602304305622246,-6.328662725555859e-6,-1.983290254130587e-9,0.004602439234285484,-6.4122851305789306e-6,-1.7913894121004542e-9,0.004602646341656962,-6.59454075292182e-6,-1.372856112257814e-9,0.004602959791749618,-6.820555679744346e-6,-8.539567811146143e-10,0.004603385401025903,-7.026168406663905e-6,-3.8223413598513426e-10,0.004603900535041509,-7.154432726648315e-6,-8.862971018962839e-11,0.004604461221360877,-7.16909923779504e-6,-5.6530923583887666e-11,0.004605014161836207,-7.061911347469658e-6,-3.0496913721986693e-10,0.004605510173710997,-6.852198505821913e-6,-7.894778705239851e-10,0.004605915231864156,-6.579480498016876e-6,-1.4190378636351609e-9,0.004606216233404941,-6.291994615044852e-6,-2.0824711583876744e-9,0.00460642071017142,-6.035108556079831e-6,-2.675171494544614e-9,0.00460655193149057,-5.842863718623184e-6,-3.1186589302558516e-9,0.004606641995139615,-5.733972110264688e-6,-3.369853455113043e-9,0.004606725264452894,-5.711711571864843e-6,-3.4213163304000836e-9,0.0046068334424430035,-5.7661813773756325e-6,-3.2960088168680032e-9,0.004606992447073734,-5.877366283212291e-6,-3.0401786490361465e-9,0.004607220525040382,-6.01804827384349e-6,-2.7166204947669695e-9,0.004607526828035787,-6.156368380259616e-6,-2.3987754818787228e-9,0.004607909878637184,-6.2584771004198995e-6,-2.1646433927517645e-9,0.004608355861891447,-6.292108699703443e-6,-2.0885544550141327e-9,0.004608837460403657,-6.231941022115572e-6,-2.2288041686048496e-9,0.004609314869247811,-6.066944432541149e-6,-2.610692390028512e-9,0.004609741181179981,-5.808287594175388e-6,-3.208296374163034e-9,0.004610073532643847,-5.494016982094601e-6,-3.9337217762102935e-9,0.004610288280096579,-5.185259144008995e-6,-4.645941435360547e-9,0.004610393895995997,-4.950873931477467e-6,-5.186269288801948e-9,0.004610433184336685,-4.844246198175972e-6,-5.431895389162019e-9,0.004610470758879338,-4.8829096485003395e-6,-5.342766223918112e-9,0.0046105707030473,-5.0419564476459976e-6,-4.976589310976798e-9,0.004610775446429694,-5.26417400954597e-6,-4.465310329754646e-9,0.004611094963682681,-5.480348310975678e-6,-3.968302033161426e-9,0.00461150823724263,-5.62972692844612e-6,-3.625329611994953e-9,0.004611973094222571,-5.673786679284628e-6,-3.524987578971608e-9,0.0046124390559712505,-5.60146915226002e-6,-3.692726761576285e-9,0.004612859222188488,-5.427288532920816e-6,-4.095184948750271e-9,0.004613199097686521,-5.184761096077944e-6,-4.655216115005645e-9,0.00461344157660515,-4.917463952163088e-6,-5.272388730713527e-9,0.004613587996069912,-4.669665926120923e-6,-5.844552407820035e-9,0.004613655691602776,-4.478251084401866e-6,-6.28652082530562e-9,0.004613673077859672,-4.367267921755222e-6,-6.542744128551488e-9,0.00461367367651798,-4.345651474038695e-6,-6.592631310893555e-9,0.0046136904516331,-4.407814373872608e-6,-6.449178045460803e-9,0.004613751389181142,-4.536239263420983e-6,-6.152919507168062e-9,0.004613876649815567,-4.704994955452618e-6,-5.763751856803909e-9,0.004614077028175075,-4.883303608630905e-6,-5.352690069082215e-9,0.004614353162834188,-5.038827337005442e-6,-4.994329710158694e-9,0.004614695036423012,-5.140875843306533e-6,-4.759499974144619e-9,0.004615081647533657,-5.164078436357073e-6,-4.706796509128987e-9,0.004615481345908867,-5.093156815280933e-6,-4.871507157630509e-9,0.004615854140456318,-4.928932317867542e-6,-5.251665030544923e-9,0.004616157793161933,-4.694284295014727e-6,-5.794263848231378e-9,0.004616358878782183,-4.436656622864292e-6,-6.389541647842568e-9,0.004616447225878722,-4.222062557520083e-6,-6.884973524270293e-9,0.004616447316459371,-4.117217975337249e-6,-7.126660174101772e-9,0.0046164171712829195,-4.163817419832329e-6,-7.018720722844495e-9,0.004616430002982171,-4.358091358751388e-6,-6.5703061256921416e-9,0.004616545920780777,-4.64955458388336e-6,-5.898225015384205e-9,0.004616789519416018,-4.961068379082266e-6,-5.180477898492885e-9,0.004617144952363664,-5.21797868115541e-6,-4.5890532040936815e-9,0.004617567428571435,-5.370589400078979e-6,-4.238257150629672e-9,0.004618001377383055,-5.4024523567296e-6,-4.165786813726474e-9,0.00461839617858386,-5.326689531338634e-6,-4.341319230810882e-9,0.004618715659086564,-5.176427103811998e-6,-4.688546619249612e-9,0.004618941704013463,-4.994299138923035e-6,-5.1092602716603065e-9,0.0046190738457956015,-4.823500218588578e-6,-5.503860695653606e-9,0.004619126539673815,-4.701021915286869e-6,-5.786919842108562e-9,0.00461912513350184,-4.6530002781485684e-6,-5.897985711351209e-9,0.004619101113456684,-4.692128922859444e-6,-5.8076723886911916e-9,0.004619087174435325,-4.817110070681227e-6,-5.5190059356818914e-9,0.004619112672785507,-5.013950645613634e-6,-5.064416509080086e-9,0.004619199956383798,-5.258745206492392e-6,-4.499227652478228e-9,0.004619361925076508,-5.521396310506229e-6,-3.892989039720409e-9,0.004619600861690062,-5.769630238686212e-6,-3.3201995651143257e-9,0.0046199082837785595,-5.972903127371703e-6,-2.851352592334347e-9,0.004620265553426885,-6.106140175320044e-6,-2.5443702178223045e-9,0.004620645157437597,-6.15344235394916e-6,-2.4360418005486742e-9,0.004621012910332626,-6.111969284666793e-6,-2.5329705998129033e-9,0.004621331889116244,-5.995896088586415e-6,-2.8023280874564467e-9,0.004621569196957076,-5.839257062531263e-6,-3.16525563366286e-9,0.004621705946598681,-5.6949592448301445e-6,-3.499245426945735e-9,0.0046217486369424686,-5.626269776579186e-6,-3.6579976183436843e-9,0.004621736346891752,-5.688589628394338e-6,-3.5136773121236357e-9,0.004621735560203208,-5.9056093086997374e-6,-3.011976455429588e-9,0.004621818663207311,-6.252544277839716e-6,-2.2106262735571202e-9,0.004622034186749106,-6.660327133482274e-6,-1.269447535738715e-9,0.004622386277920894,-7.0421296244785226e-6,-3.8895869566759596e-10,0.004622835921998608,-7.326987257096725e-6,2.672247922603419e-10,0.004623320597655784,-7.481387241366695e-6,6.22078154458821e-10,0.004623778166074979,-7.511256501722334e-6,6.895832720469361e-10,0.0046241631750252934,-7.4503005879202574e-6,5.476957123973267e-10,0.0046244526906444455,-7.344777280885875e-6,3.031921981158643e-10,0.004624644751104253,-7.241142852555951e-6,6.324918068849496e-11,0.0046247535293354415,-7.178329664083658e-6,-8.227089394819571e-11,0.004624803929537004,-7.1838293799132266e-6,-6.982495105222414e-11,0.004624826696230001,-7.272134715425384e-6,1.3414464882997706e-10,0.004624854095060916,-7.444583539571314e-6,5.327371256362688e-10,0.004624916026302616,-7.690267618702546e-6,1.1006291093985203e-9,0.004625036574007785,-7.98793405485864e-6,1.7885067099525766e-9,0.004625231133799637,-8.30888821439031e-6,2.5298802519654072e-9,0.004625504428824734,-8.620815020618825e-6,3.2500039740028935e-9,0.004625849747329165,-8.892151827359156e-6,3.875986187591585e-9,0.0046262495157665465,-9.09652545200698e-6,4.346970267559263e-9,0.004626677147753625,-9.216883627944467e-6,4.623605244888573e-9,0.004627100098948487,-9.249002221467704e-6,4.6961442314090165e-9,0.004627484100502901,-9.204044867914665e-6,4.590434874603475e-9,0.004627798689161824,-9.109776567161958e-6,4.3708109803278244e-9,0.004628024187515499,-9.0095003276215e-6,4.1376398888795614e-9,0.004628159602392367,-8.956974239448121e-6,4.015455545081188e-9,0.004628229255540625,-9.005485803645908e-6,4.127521100134283e-9,0.004628283803510658,-9.1910726190435e-6,4.556926589182645e-9,0.004628390435834369,-9.514454774165462e-6,5.304877259037512e-9,0.004628610918423801,-9.931843970056032e-6,6.269651296939101e-9,0.004628975503068454,-1.03648245865506e-5,7.2696549997176675e-9,0.004629467998225569,-1.0728850454589621e-5,8.10939549229837e-9,0.004630032512152586,-1.0965482676576773e-5,8.65397700401509e-9,0.004630597398772655,-1.1060056137677217e-5,8.86984853736169e-9,0.004631101082919748,-1.1038122203419039e-5,8.816457412620772e-9,0.004631507147841215,-1.0948389067229884e-5,8.606690701628071e-9,0.004631806481354592,-1.0844288661248472e-5,8.364204739480547e-9,0.004632011465302068,-1.0771358781577292e-5,8.194291991699351e-9,0.004632147892557216,-1.0761401585255883e-5,8.170455351365712e-9,0.004632247893263616,-1.0831308542105932e-5,8.331728476942694e-9,0.00463234477781505,-1.0984114505098195e-5,8.685073680741978e-9,0.004632469369290628,-1.1210771926742844e-5,9.209415190899736e-9,0.004632647141513031,-1.1492171204089592e-5,9.860291714348777e-9,0.004632895765556187,-1.1801489544677315e-5,1.0575356211698413e-8,0.004633222987185644,-1.2107161747595294e-5,1.1281365019742708e-8,0.004633625109689717,-1.2376748980879223e-5,1.1903214390625413e-8,0.004634086659004174,-1.2581610090192167e-5,1.2374746891829162e-8,0.004634581752502566,-1.2701806877036646e-5,1.2650024924146413e-8,0.004635077356706937,-1.273044813037253e-5,1.2713298103112125e-8,0.004635538281190807,-1.2676599340062202e-5,1.2585709492729057e-8,0.004635933426539173,-1.2565907068775515e-5,1.2326775887080312e-8,0.0046362425090470906,-1.2438342120984666e-5,1.202920592778017e-8,0.004636462294497865,-1.234271921279755e-5,1.1806193185873564e-8,0.004636611028747824,-1.232775517799123e-5,1.1770617073140064e-8,0.004636729067608224,-1.2429993538057063e-5,1.2006973681361427e-8,0.004636873204322435,-1.2660614669240317e-5,1.2540806146547426e-8,0.004637103047741207,-1.2995764214321633e-5,1.3316407776853431e-8,0.004637461294852211,-1.3376967540621544e-5,1.4197950262497705e-8,0.00463795534065098,-1.3726217412767458e-5,1.5004554273269622e-8,0.004638550845381015,-1.3972478316380603e-5,1.5571711376454045e-8,0.004639183148953752,-1.4077211752893863e-5,1.5810383357853653e-8,0.0046397812865391925,-1.4045280259926954e-5,1.5732214181573113e-8,0.0046402914283477465,-1.3917086868911308e-5,1.5431235497281092e-8,0.004640688992994678,-1.3749519789539588e-5,1.50396004361683e-8,0.004640977811977925,-1.3597154104758875e-5,1.4683939035007512e-8,0.0046411816590931215,-1.3500634643284917e-5,1.4458435271925997e-8,0.004641334337283517,-1.3482814716284878e-5,1.4415936504639937e-8,0.004641471841569615,-1.3549864644392499e-5,1.45705737914381e-8,0.004641627345314647,-1.36943373473814e-5,1.4904873429144573e-8,0.004641828265389255,-1.3898382253809021e-5,1.5377192152694978e-8,0.004642094369945667,-1.4136568493739574e-5,1.592827642183505e-8,0.004642436229981527,-1.4378530825307724e-5,1.648746362443435e-8,0.004642853793025203,-1.4591962398589605e-5,1.6979710468902657e-8,0.00464333536372152,-1.4746476784586312e-5,1.7334602810121096e-8,0.004643857739129038,-1.481845010519349e-5,1.749756817785199e-8,0.00464438837763796,-1.479624509342569e-5,1.7441917675913e-8,0.0046448901141322415,-1.4684572553892183e-5,1.7178880316379137e-8,0.00464532817306209,-1.4506395760338885e-5,1.676197448758261e-8,0.0046456782783954416,-1.4300948688484878e-5,1.628240091514535e-8,0.004645933875498211,-1.4117326680498562e-5,1.5854168093428857e-8,0.004646110289799332,-1.4004423473821114e-5,1.5590715394014384e-8,0.004646244116896511,-1.399911276381716e-5,1.5577449679665026e-8,0.004646387005593405,-1.41153100211975e-5,1.5846355805771457e-8,0.004646594141764705,-1.4337032558028205e-5,1.6359950354097322e-8,0.004646909305258094,-1.4618613247030586e-5,1.701188561366317e-8,0.0046473503812339495,-1.4894178333601433e-5,1.7649042879564176e-8,0.004647900916773948,-1.5095625610264924e-5,1.811329983033688e-8,0.004648512809389593,-1.5173842404411922e-5,1.829077431406508e-8,0.004649120903019922,-1.5114403601433032e-5,1.8148248545685655e-8,0.004649663817187577,-1.4940331193331636e-5,1.7739550224659373e-8,0.004650101646361556,-1.4701189768492982e-5,1.7180166575556488e-8,0.004650423559198932,-1.4455016176381626e-5,1.6605176919502795e-8,0.004650644665764515,-1.4251827770794912e-5,1.613086614501808e-8,0.004650796624019296,-1.4124141025250696e-5,1.583268895658235e-8,0.004650917415804542,-1.4084914955533756e-5,1.5740543813909623e-8,0.004651043598431591,-1.4130241265291127e-5,1.5845089278510927e-8,0.0046512057278376125,-1.4243729279101672e-5,1.6107974164142077e-8,0.0046514261340793615,-1.4400690454054686e-5,1.6471579916206996e-8,0.00465171789456136,-1.4571531090473221e-5,1.6866922638427443e-8,0.004652084137226091,-1.4724599130893931e-5,1.7220302263998086e-8,0.00465251732741125,-1.4829134893015994e-5,1.746020024223448e-8,0.004652998819609395,-1.4859005735948932e-5,1.7525983107701823e-8,0.004653499526234626,-1.4797478165342453e-5,1.7378984205893643e-8,0.004653982822792938,-1.4642447874902636e-5,1.701461884775316e-8,0.004654410522758944,-1.4410540357957179e-5,1.6471859896107837e-8,0.004654751676673082,-1.4137726039344877e-5,1.5834608479389963e-8,0.0046549921899199246,-1.3874312315314267e-5,1.5219993013443092e-8,0.004655141733859297,-1.3673984905797297e-5,1.4752835810267254e-8,0.004655234441725839,-1.3579420898515158e-5,1.4532174851046341e-8,0.00465532189043984,-1.3609191262358246e-5,1.460084197006534e-8,0.00465545992364021,-1.3750758727023153e-5,1.4929278998332993e-8,0.004655693328327301,-1.3962304090208998e-5,1.5419907146882814e-8,0.004656043110456753,-1.4183068768481111e-5,1.5931259431933548e-8,0.0046565001678516875,-1.434927671056179e-5,1.631501554350779e-8,0.004657027305155954,-1.4411158052329369e-5,1.6455548921583325e-8,0.004657569281103155,-1.434612452943196e-5,1.630052615942731e-8,0.004658068049326739,-1.41639120076071e-5,1.5872851697627348e-8,0.0046584782426453645,-1.3901969676808915e-5,1.525993191601153e-8,0.0046587776708922075,-1.3613082255371558e-5,1.458484088844579e-8,0.004658969832612916,-1.3350233172794423e-5,1.397103491590227e-8,0.004659079003760188,-1.3154157206487545e-5,1.3513330900768914e-8,0.004659141208384155,-1.3046837117797856e-5,1.3262761688597618e-8,0.004659194957403009,-1.3031068730407019e-5,1.3225604937819598e-8,0.004659274330167408,-1.3094026415269862e-5,1.3371747416260096e-8,0.0046594050651191455,-1.3212282800757067e-5,1.3646426315830232e-8,0.004659602999671059,-1.3356523513515203e-5,1.3981232874721674e-8,0.004659873789227049,-1.3495310852038219E-05,1.430287645128278e-8,0.004660213024776066,-1.359808005239616e-5,1.4540151248134795e-8,0.00466060633304002,-1.3637992835869933e-5,1.4630579714044076e-8,0.00466102965981684,-1.3595349253137439e-5,1.4528372069494455e-8,0.004661450563042212,-1.3461902340691184e-5,1.421449651710166e-8,0.004661831730217652,-1.3245578696188559e-5,1.3707678548966238e-8,0.004662137755511344,-1.2973872164911173e-5,1.307227092715899e-8,0.004662344999202101,-1.2693012432152884e-5,1.2416231574338447e-8,0.0046624519407560735,-1.2460082818593682E-05,1.1872648439435237e-8,0.004662485004202495,-1.2327880026386206e-5,1.1564379854227212e-8,0.004662494901102442,-1.2327021407297365e-5,1.1562375295099926e-8,0.004662542595555069,-1.24533420275431e-5,1.185644126351985e-8,0.0046626799506357805,-1.2667322066857839e-5,1.2354101779958266e-8,0.004662933402383711,-1.2906251170550697e-5,1.2909087247827492e-8,0.004663297073919368,-1.3103506845817271e-5,1.3366273288023952e-8,0.004663736575308624,-1.3207064274389993e-5,1.360471420722314e-8,0.00466420034455511,-1.3191474217760806e-5,1.3565421464328888e-8,0.004664633821846689,-1.3061257113502004e-5,1.3259181775894936e-8,0.0046649923454657955,-1.284657142486857e-5,1.2756441236261749e-8,0.0046652500093320995,-1.2593575575264028e-5,1.2164869400910327e-8,0.004665403125135055,-1.2352518526780268e-5,1.160163133759852e-8,0.004665468293837048,-1.2166612359423423e-5,1.1167452954822372e-8,0.004665476372929213,-1.2064179756235221e-5,1.092829431744967e-8,0.004665464527011558,-1.205536188602705e-5,1.090765701107904e-8,0.00466546866248559,-1.2133139463074206e-5,1.1088976843000324e-8,0.004665517840456056,-1.2277264814901737e-5,1.1424838647350068e-8,0.00466563119751025,-1.245936221956031e-5,1.1848924275875613e-8,0.004665817006354218,-1.2647802841822536e-5,1.2287410809984839e-8,0.004666073053110041,-1.281166414378168e-5,1.2668190698852117e-8,0.004666387542373383,-1.292381306206243e-5,1.2928022906658796e-8,0.004666740117300406,-1.2963606556451226e-5,1.3018805625924864e-8,0.004667103089208761,-1.2919782368290056e-5,1.2914336858847914e-8,0.004667443516313451,-1.2793855787151033e-5,1.261828935995056e-8,0.004667727216102982,-1.2603634007130076e-5,1.2172443742013038e-8,0.004667925717887047,-1.2385223968453717e-5,1.1661335221281164e-8,0.004668025982969037,-1.2190587373047782e-5,1.1206425769168459e-8,0.004668040124918859,-1.2077562615726495e-5,1.0942668267392677e-8,0.004668009332740903,-1.2092131257680859e-5,1.0977046211594681e-8,0.004667995963365245,-1.2248776168792324e-5,1.1342816317376177e-8,0.004668063394253834,-1.2519839245074089e-5,1.1974895693262607e-8,0.004668252213447853,-1.2842352538933383e-5,1.272604191553377e-8,0.004668565476656956,-1.3140346753934688e-5,1.3419026252516424e-8,0.004668970137839872,-1.3350798188378615e-5,1.390712963685913e-8,0.00466941145688206,-1.3440881943664238e-5,1.4114239617360718e-8,0.004669831352637258,-1.3411820715628956e-5,1.4043647933471819e-8,0.004670183125758375,-1.3292231840828618e-5,1.3762398499525709e-8,0.004670439551567326,-1.3126587614643615e-5,1.3374333363953765e-8,0.0046705947835942166,-1.2963357965618242e-5,1.2992486691062576e-8,0.004670661871582767,-1.2845325839862214e-5,1.2716578643366719e-8,0.004670667699865216,-1.2802931475699457e-5,1.2617538625965364e-8,0.004670646681376949,-1.2850763728081769e-5,1.2729307862896565e-8,0.00467063427678483,-1.2987111806417097e-5,1.304775137827414e-8,0.004670661343090428,-1.3196164916613432e-5,1.353577457443399e-8,0.004670750064167247,-1.3452020070287972e-5,1.4132715042564545e-8,0.004670911777831962,-1.3723508501828329e-5,1.4765677409608379e-8,0.004671146597861861,-1.397894625705489e-5,1.5360669460035923e-8,0.004671444375319671,-1.4190158848444865e-5,1.5851986140975655e-8,0.004671786392194452,-1.4335593144657587e-5,1.6189419371909977e-8,0.004672147385320302,-1.440277455442945e-5,1.634395024210514e-8,0.004672497882915822,-1.439047323877524e-5,1.63128171558708e-8,0.004672807221955093,-1.4310754474099981e-5,1.6124358297051074e-8,0.004673047967062916,-1.4190585450886653e-5,1.5841798023873977e-8,0.004673202402940901,-1.4071681804180103e-5,1.556283414706472e-8,0.004673270739720579,-1.4006175424222032e-5,1.5409373309145138e-8,0.004673278417874302,-1.4045585886180635e-5,1.5501616287218707e-8,0.0046732771097705355,-1.4223112429589761e-5,1.5916656213600744e-8,0.0046733335426375954,-1.4535231411889031e-5,1.6645637433110732e-8,0.0046735060396706435,-1.4934337773744007e-5,1.7576826633511244e-8,0.004673819189801707,-1.5341741234222534e-5,1.852618723245616e-8,0.004674252268579398,-1.5677278964770178e-5,1.9306615085994873e-8,0.004674748944885229,-1.5888924620635015e-5,1.9797027686382072e-8,0.004675240882951573,-1.5966460031890974e-5,1.997414641383107e-8,0.004675670613593522,-1.593625842060622e-5,1.9900119679567408e-8,0.0046760041793818975,-1.5845643844857367e-5,1.9685820881802324e-8,0.00467623309851158,-1.5746690960885734e-5,1.945294625392006e-8,0.004676369818220206,-1.568457041001168e-5,1.930686205008403e-8,0.004676440772138309,-1.5691203227189234e-5,1.932191376955323e-8,0.004676479528732202,-1.5782987495501686e-5,1.9536206216259085e-8,0.004676520954653062,-1.5961033347667108e-5,1.995215400474037e-8,0.004676596422060922,-1.6212951573783454e-5,2.0540610281932875e-8,0.004676730027189161,-1.6515837372076925e-5,2.1247813816331533e-8,0.004676935979999788,-1.6840152095742693e-5,2.2004505046599017e-8,0.004677217318990602,-1.7154102391278926e-5,2.2736247570911134e-8,0.00467756602649892,-1.7428077777037665e-5,2.3373860561672378e-8,0.004677964479425937,-1.763863379374355e-5,2.3862716425329537e-8,0.0046783879238457065,-1.7771596392012232e-5,2.4169923607945506e-8,0.004678807583239352,-1.782417897198473e-5,2.4289203675387195e-8,0.004679194192743565,-1.780618647288843e-5,2.4243687912563586e-8,0.004679521978008149,-1.7740311713799754e-5,2.4086639550366526e-8,0.0046797732769125674,-1.7661270247751158e-5,2.3899445231071237e-8,0.004679943926326737,-1.7612934963310745e-5,2.378485408762777e-8,0.00468004874105327,-1.76419904879494e-5,2.38520116422879e-8,0.0046801248137174605,-1.7786845602176726e-5,2.4190427202702886e-8,0.004680228593309382,-1.806263404032576e-5,2.4834927068767032e-8,0.004680422650323219,-1.844760764224442e-5,2.5734020536887993e-8,0.0046807527992763975,-1.8880759513499523e-5,2.674458018490809e-8,0.0046812254701966765,-1.9278549072575866e-5,2.7671099756894892e-8,0.004681800427430815,-1.9566523632612258e-5,2.8339657629219468e-8,0.004682406079741662,-1.9708395147643984e-5,2.8665861411746463e-8,0.004682968366748158,-1.9715465849410977e-5,2.867679352392317e-8,0.004683435608529261,-1.9634266355882566e-5,2.8481924313167707e-8,0.0046837883337889595,-1.952439154406978e-5,2.822106187628867e-8,0.004684035487230924,-1.9439673756009193e-5,2.8020203083391307e-8,0.004684204485088165,-1.941806770279495e-5,2.7967929163297136e-8,0.00468433116167156,-1.9479029937500837e-5,2.8109428435669545e-8,0.004684452186456466,-1.9625176187452407e-5,2.845049597540157e-8,0.004684600168465979,-1.984553498761316e-5,2.896517248241957e-8,0.0046848006032723915,-2.0118998764571928e-5,2.9603786467988204e-8,0.0046850698397548065,-2.041773635670475e-5,3.0300926191513015e-8,0.004685413783371999,-2.0710763850050337e-5,3.098384943257845e-8,0.00468582740770953,-2.096777642395736e-5,3.1581541361914726e-8,0.004686295292293071,-2.1163165376747107e-5,3.203417446835051e-8,0.004686793459251504,-2.127986172954694e-5,3.230208207219933e-8,0.004687292561605285,-2.1312386356273433e-5,3.2372809600881676e-8,0.0046877621105637915,-2.126854613740853e-5,3.2264991110637834e-8,0.004688175258111988,-2.1169442043346494e-5,3.202831932504239e-8,0.004688513640797768,-2.104761290672734e-5,3.173919627450822e-8,0.004688771804655766,-2.0943260277204035e-5,3.149188772523059e-8,0.004688960704666771,-2.089847309766487e-5,3.138494951118754e-8,0.004689109427812848,-2.0949239557927876e-5,3.150244410680444e-8,0.0046892635417487075,-2.111546408427255e-5,3.189053130139887e-8,0.004689477922148566,-2.139077308886334e-5,3.253367882818093e-8,0.004689802698454854,-2.1736387602686895e-5,3.3340499356742825e-8,0.004690264446209853,-2.2085256460148676e-5,3.415361339714332e-8,0.004690850572478942,-2.2360461861946586e-5,3.4792836260214054e-8,0.004691507905376526,-2.2503277074614084e-5,3.512087981369812e-8,0.0046921603699025816,-2.2496547289027997e-5,3.5098078105129547e-8,0.004692737515622717,-2.2369205648309436e-5,3.4792895698371355e-8,0.0046931977430484575,-2.218033828194287e-5,3.434443116540985e-8,0.004693535450245421,-2.19946049648199e-5,3.390460552743203e-8,0.004693773572452373,-2.1862829343110403e-5,3.359254933534034e-8,0.0046939501630360635,-2.181362607661693e-5,3.3475032195887265e-8,0.004694106408800557,-2.1853986931876104e-5,3.356800326714713e-8,0.004694278929507639,-2.1974145041739544e-5,3.384814078091561e-8,0.004694495986966662,-2.2153135943492177e-5,3.4265942399950725e-8,0.00469477605708682,-2.236343686777121e-5,3.475658838964401e-8,0.004695127385027143,-2.25745849279392e-5,3.5248415385464474e-8,0.004695547882976639,-2.2756322352379375e-5,3.567032900021728e-8,0.004696025355911659,-2.2881787560675736e-5,3.595935203368904e-8,0.004696538399017729,-2.2930998865573962e-5,3.6068830865346576e-8,0.0046970585118214685,-2.2894428695522926e-5,3.597678695177047e-8,0.0046975538398428066,-2.277591695522771e-5,3.569266368776685e-8,0.004697994417085737,-2.2593897361128732e-5,3.52601055038316e-8,0.004698358163045725,-2.238005741037552e-5,3.475374675121492e-8,0.0046986364344812365,-2.2175013783692378e-5,3.4269031535764016e-8,0.0046988377483364,-2.2021316841364653e-5,3.3905777612987485e-8,0.004698988505350433,-2.1954843872662592E-05,3.3747957039559153e-8,0.00469913001615439,-2.199603289469974e-5,3.384312019587815e-8,0.004699311555481439,-2.2142626039551497e-5,3.418542095617081e-8,0.004699579681160445,-2.2366028659942287e-5,3.470720003209844e-8,0.004699965159038889,-2.261379023439517e-5,3.528496641002932e-8,0.0047004707613474824,-2.2820209470544427e-5,3.576439822294622e-8,0.004701065275270101,-2.29245915141501e-5,3.600321104272019e-8,0.0047016890656927665,-2.2891951736126434e-5,3.591970431021748e-8,0.004702272011748362,-2.2726666777386748e-5,3.5524736397453896e-8,0.004702756920507253,-2.2470877734699576e-5,3.491788013206634e-8,0.004703116987165939,-2.2187808782063738e-5,3.4248104068405246e-8,0.004703359534640568,-2.193925935774467e-5,3.3660754039070295e-8,0.004703517130520162,-2.176842696306175e-5,3.325714330433221e-8,0.004703633418269326,-2.1693450292192006e-5,3.3079469125848756e-8,0.004703750784664788,-2.1710014565138826e-5,3.311710181821752e-8,0.004703902999268972,-2.1798210735348334e-5,3.332284229703271e-8,0.00470411241473192,-2.1929606093883388e-5,3.362958798550564e-8,0.004704389870876045,-2.207267688476105e-5,3.396308166894864e-8,0.0047047356012256255,-2.2196523423997598e-5,3.425061394883235e-8,0.004705140226676658,-2.2273583221930157e-5,3.4427402906015455e-8,0.004705585684179088,-2.2282131344618075e-5,3.444250019797068e-8,0.004706046484988976,-2.2209080754436687e-5,3.426539393023329e-8,0.004706492021561705,-2.205305499960459e-5,3.389321201807501e-8,0.004706890608130669,-2.182697129221664e-5,3.3356730967267744e-8,0.00470721539646339,-2.1558758464267093e-5,3.2721977504560417e-8,0.004707451321018943,-2.12887104727388e-5,3.208392178194558e-8,0.004707601124258925,-2.1062650368795808e-5,3.1550339335174934e-8,0.004707687923092548,-2.092164673284272e-5,3.1217597646232705e-8,0.004707752373939844,-2.0890881213821516e-5,3.1144495257733445e-8,0.004707844271649323,-2.097124597532204e-5,3.1332583670419434e-8,0.004708010475613604,-2.113670162270532e-5,3.172008981581706e-8,0.004708282385389394,-2.1338748014371744e-5,3.219257613945702e-8,0.0047086664359290925,-2.15173693706775e-5,3.2608780636782456e-8,0.0047091404880734164,-2.161606952423453e-5,3.283599569519555e-8,0.004709657840613588,-2.159728736032355e-5,3.278626927707014e-8,0.0047101587972046815,-2.14536381865304e-5,3.244275536750323e-8,0.004710587092019814,-2.1210639927389882e-5,3.1866026733256766e-8,0.004710905784652387,-2.0918934500008726e-5,3.11756702803512e-8,0.004711106530119068,-2.0638435018091832e-5,3.051288304831013e-8,0.004711208865517889,-2.0420804081158147e-5,2.999917704131898e-8,0.004711250995690448,-2.029710843358638e-5,2.9707348003223693e-8,0.004711277151420492,-2.0274053881011356e-5,2.9652724627549498e-8,0.00471132674977426,-2.033766978305856e-5,2.9801983439850805e-8,0.00471142806619857,-2.046071242907155e-5,3.009067825446045e-8,0.004711596296366146,-2.061020016312087e-5,3.044100612335261e-8,0.004711834389857875,-2.0753171954947886e-5,3.077533281366249e-8,0.004712134965726818,-2.086041685204148e-5,3.1024925417154556e-8,0.004712482251510385,-2.090882235568343e-5,3.1135456149055995e-8,0.004712853737906606,-2.0883211847782863e-5,3.107133595210802e-8,0.004713221881139335,-2.0778334625325025e-5,3.082042383122008e-8,0.004713556597760101,-2.0601134262572815e-5,3.0399376917884984e-8,0.004713829354068818,-2.037263915355485e-5,2.9858068237885336e-8,0.004714019207495355,-2.0127999853239356e-5,2.9279591365504785e-8,0.004714120040236812,-1.9912737159773322e-5,2.8771311538676714e-8,0.00471414655809,-1.9773869991005393e-5,2.8443873226592142e-8,0.004714135386249772,-1.9746861801332327e-5,2.83804276963628e-8,0.004714138370032906,-1.984258160661189e-5,2.8606000254505665e-8,0.004714208596707071,-2.004036454826956e-5,2.9071316232283385e-8,0.004714383927031075,-2.029154199139544e-5,2.966130936884501e-8,0.00471467478824134,-2.0532945180363846e-5,3.022705867006223e-8,0.004715061013315357,-2.070513244011117e-5,3.0628741349271914e-8,0.00471549819391272,-2.076855953990602e-5,3.0773644450018024e-8,0.004715930398805945,-2.0712828599232458e-5,3.06378229761092e-8,0.00471630479798327,-2.0557372487725065e-5,3.02675794944921e-8,0.00471658419168978,-2.0344538606421003e-5,2.9763064924636998e-8,0.004716754587575241,-2.012762846230072e-5,2.9250034311585e-8,0.004716826391143379,-1.9957347775696705e-5,2.8847903519089865e-8,0.004716829482927148,-1.9870328926400146e-5,2.8642734974974278e-8,0.004716804183631088,-1.9882591570309303e-5,2.8671899620700577e-8,0.004716791192796836,-1.9989005281011388e-5,2.8922902741116466e-8,0.004716823437325514,-2.016770532199581e-5,2.934387756265717e-8,0.004716921469150951,-2.0387043502867066e-5,2.986002387931219e-8,0.0047170924226144694,-2.0612596164450385e-5,3.0390138793191444e-8,0.004717331446500595,-2.081266616228881e-5,3.085955828244744e-8,0.00471762425529221,-2.0961852660023846e-5,3.120852397033979e-8,0.004717949786709429,-2.104309008518074e-5,3.139695112234478e-8,0.004718282560551554,-2.104890203008696e-5,3.1407378398035346e-8,0.00471859492533725,-2.0982516486430054e-5,3.1247623321056654e-8,0.004718859796079545,-2.0859052414961204e-5,3.0953605446153896e-8,0.004719054624823485,-2.0706285041295662e-5,3.059112867970817e-8,0.004719167008269947,-2.0563643657749342e-5,3.025342322589191e-8,0.0047192012609654915,-2.0477478018717793e-5,3.00498426889888e-8,0.00471918345441392,-2.0491050133859172e-5,3.0082155472353386e-8,0.004719160711673773,-2.0630138351970563e-5,3.041060704503147e-8,0.004719191097019601,-2.0889406258420564e-5,3.1021931692673706e-8,0.004719325043469325,-2.1227769789697886e-5,3.181866698159706e-8,0.0047195859260143365,-2.1578468896618452e-5,3.264310559084911e-8,0.004719960156972756,-2.187111814865657e-5,3.3329373513019146e-8,0.004720402230039262,-2.2055137896671795e-5,3.375863627291979e-8,0.004720851199728154,-2.211368644516015e-5,3.3891818178741824e-8,0.004721249742534635,-2.2064084478755165e-5,3.3770422384395773e-8,0.004721558271420089,-2.194802371751545e-5,3.349326327499581e-8,0.004721761248337392,-2.181765833721016e-5,3.318355542341268e-8,0.004721866556401599,-2.1722520963282726e-5,3.295805030285286e-8,0.004721900238871268,-2.169987115382176e-5,3.29043510790176e-8,0.004721898892204645,-2.176929055241197e-5,3.306826983285239e-8,0.004721901529417458,-2.193141803818353e-5,3.345092527192641e-8,0.004721942348745987,-2.2170269412426117e-5,3.401426136456454e-8,0.004722045516212493,-2.2458138717909424e-5,3.4692640398515564e-8,0.004722222546618573,-2.2761699487966296e-5,3.540726851507083e-8,0.0047224722135377,-2.3047940802877143e-5,3.6080226653327896e-8,0.004722782394577666,-2.3288951948910685e-5,3.6645758612571877e-8,0.004723132980101565,-2.3465103100195668e-5,3.7057739558551584e-8,0.004723499026608934,-2.3566743782828097e-5,3.729363200615465e-8,0.004723853726366984,-2.3594919509001365e-5,3.7356145869933e-8,0.004724171226410891,-2.356158846622636e-5,3.727375668144662e-8,0.00472442964344223,-2.3489522051841577e-5,3.710048713221879e-8,0.004724614776565834,-2.3411574874169688e-5,3.691415587823861e-8,0.004724724794459883,-2.3368277341243487e-5,3.6810591870453345e-8,0.0047247752100325596,-2.340213360934399e-5,3.6890033197833116e-8,0.004724801818033701,-2.354741153860014e-5,3.723294414462482e-8,0.00472485768521177,-2.3816423663497148e-5,3.786770260091306e-8,0.004725000635390749,-2.418751526032683e-5,3.8742466858000376e-8,0.004725272431033011,-2.4603620051597823e-5,3.972202334985268e-8,0.0047256788219663705,-2.4987702204493527e-5,4.062439541897351e-8,0.004726183285667441,-2.5270759185625143e-5,4.128696584233639e-8,0.004726720126803429,-2.541754230471784e-5,4.162712542300643e-8,0.004727219448344189,-2.5435941739691993e-5,4.166429361538732e-8,0.004727629770664268,-2.536784151980682e-5,4.149811650246318e-8,0.00472792886355938,-2.5270329894455154e-5,4.126387077300937e-8,0.00472812265068321,-2.5197835046972124e-5,4.109015364379114e-8,0.0047282373150355555,-2.5190669974525258e-5,4.1071880240448236e-8,0.004728309665470908,-2.5270343003186838e-5,4.125937504726307e-8,0.004728378624615121,-2.543968430350618e-5,4.165883422548709e-8,0.004728478767596398,-2.5685707126707573e-5,4.223916565564198e-8,0.004728635885651726,-2.5983880913205705e-5,4.294209090323031e-8,0.004728864409439411,-2.6303109090072288e-5,4.369389967187808e-8,0.00472916659618418,-2.6610845597161917e-5,4.44175634064523e-8,0.004729533321857145,-2.687781278328495e-5,4.5043926732075706e-8,0.00472994622235607,-2.708187235910797e-5,4.55208730022123e-8,0.004730380793270376,-2.721067737099242e-5,4.5819553184842186e-8,0.004730809906752847,-2.7262961196945158e-5,4.593735403726144e-8,0.004731207297948036,-2.724866569169805e-5,4.589813042879811e-8,0.004731550882303068,-2.7188193463415645e-5,4.5750407942570875e-8,0.004731825972564864,-2.7110878798737e-5,4.5563763450471336e-8,0.004732028530653421,-2.7052515132200603e-5,4.54229491228676e-8,0.004732168446389242,-2.7051350258781955e-5,4.541834024160813e-8,0.004732272116670077,-2.714157631827611e-5,4.563044734216501e-8,0.004732382358303023,-2.734381236381859e-5,4.610740117539504e-8,0.004732552676207028,-2.765400554259749e-5,4.6838853150868065e-8,0.004732833512182073,-2.803550331529912e-5,4.773748847006038e-8,0.004733252285295634,-2.842190019560124e-5,4.864598097253564e-8,0.004733796293531172,-2.8735835655547945e-5,4.9381511830951945e-8,0.004734411109839088,-2.891853713979851e-5,4.980557132802008e-8,0.004735019503554785,-2.895397730306729e-5,4.9880998252676156e-8,0.004735551138537044,-2.887270533546891e-5,4.9680920882470014e-8,0.00473596575267552,-2.873482839748109e-5,4.9348284107208375e-8,0.004736259519104328,-2.8605104853960317e-5,4.903667122874668e-8,0.004736457060975534,-2.8533821667809858e-5,4.886493863585071e-8,0.0047365979415711565,-2.85485921602435e-5,4.88979128990018e-8,0.004736724583238949,-2.8654807118183317e-5,4.914769787656253e-8,0.0047368742116397,-2.8840382877356432e-5,4.958511728727826e-8,0.004737074552126241,-2.9081541619000465e-5,5.015347478913712e-8,0.004737342012367782,-2.934812648323624e-5,5.078111482310837e-8,0.004737681309886265,-2.960821833601568e-5,5.139231870366264e-8,0.004738086098954303,-2.9832193363411564e-5,5.191692419486976e-8,0.004738540469209245,-2.9996259595434974e-5,5.229874245767923e-8,0.0047390212881655396,-3.0085394338945098e-5,5.2502529913061444e-8,0.004739501377336211,-3.0095423581682325e-5,5.251886124976056e-8,0.004739953305782397,-3.0033870472254683e-5,5.236603682676017e-8,0.004740353348319325,-2.9919407976351642e-5,5.208868447062693e-8,0.004740685200385828,-2.9779991128983356e-5,5.175327771239827e-8,0.004740943182403257,-2.9649741613378564e-5,5.1440738209547884e-8,0.004741134674185391,-2.9564621576085497e-5,5.1236171222247815e-8,0.004741281429687509,-2.955689735080932e-5,5.121571324845782e-8,0.004741419089674041,-2.9648317114137292e-5,5.1430346955513816e-8,0.004741593583568248,-2.984236535396184e-5,5.18876132323745e-8,0.0047418528064249385,-3.0117417530783683e-5,5.2535574522677666e-8,0.004742232999460031,-3.0424697664623252e-5,5.325821214909581e-8,0.004742742611363063,-3.069609207813721e-5,5.3894094209571386e-8,0.004743351393757184,-3.086414788615748e-5,5.4283751424790724e-8,0.004743994368040548,-3.088836563852584e-5,5.433186801908802e-8,0.004744593460110826,-3.0773559410401626e-5,5.4050676811265004e-8,0.004745086788273111,-3.0567784478253706e-5,5.3554919237006306e-8,0.004745448989905369,-3.034083898991905e-5,5.301067418598428e-8,0.0047456930853903715,-3.015732469647893e-5,5.257126350003612e-8,0.004745857698513026,-3.00585998089884e-5,5.233439298931279e-8,0.004745990240669041,-3.0058200221043662e-5,5.233146185427817e-8,0.004746133999600095,-3.01466801907586e-5,5.2539325380684306e-8,0.004746321325199566,-3.0299826522431672e-5,5.289999214373297e-8,0.004746571565708012,-3.048628868783824e-5,5.333878061980279e-8,0.004746891547053987,-3.067323831866283e-5,5.377769034777425e-8,0.004747276976592629,-3.083031101807034e-5,5.414468688672485e-8,0.0047477141402886116,-3.09325591886319E-05,5.4380693556431183e-8,0.004748181886555148,-3.096289364885244e-5,5.444541244979396e-8,0.004748654088097438,-3.09141513535335e-5,5.432224087989675e-8,0.004749102826477359,-3.079058892868887e-5,5.4021765189798875e-8,0.0047495023578297945,-3.060826542501298e-5,5.358256772490767e-8,0.004749833466407175,-3.0393770407297746e-5,5.306810148158317e-8,0.0047500874842839194,-3.018108231591561e-5,5.2559163277776153e-8,0.004750269208928283,-3.000667785776047e-5,5.214226026089898e-8,0.004750398005292498,-2.990333609399654e-5,5.1894905169507964e-8,0.004750506508683392,-2.9893424852776115e-5,5.186969825178604e-8,0.004750636541043871,-2.9982645840082855e-5,5.2079533030619567e-8,0.0047508320083346,-3.0155421919572188e-5,5.248676449937229e-8,0.004751128908639331,-3.037369192805859e-5,5.300052553271625e-8,0.0047515437134295745,-3.058146946640733e-5,5.348771766126394e-8,0.004752063484848125,-3.071700733657849e-5,5.380196084787112e-8,0.0047526432287152715,-3.073156493559227e-5,5.382809002665862e-8,0.004753215530274019,-3.060859876345908e-5,5.352758456900073e-8,0.004753711939495655,-3.0373149193153703e-5,5.2960713748294996e-8,0.004754087100048578,-3.0083973403278307e-5,5.226769683183297e-8,0.00475433293603724,-2.98112136590755e-5,5.1615475629158006e-8,0.004754476264544549,-2.9611822552670604e-5,5.113920082596975e-8,0.004754563953700199,-2.9514823359041654e-5,5.0907249040929476e-8,0.0047546455613278705,-2.9520016886330627e-5,5.0918372072733805e-8,0.004754761071596459,-2.9605722627759065e-5,5.112036823852704e-8,0.004754935662167024,-2.9739033755819657e-5,5.143462572713782e-8,0.0047551796096890735,-2.988434036747737e-5,5.1776389895648226e-8,0.004755490589258526,-3.0008869624587908e-5,5.206783588245407e-8,0.004755856442393838,-3.008584029224015e-5,5.224546763974042e-8,0.004756257668350731,-3.0096339668500227e-5,5.2264540791731686e-8,0.004756669706745484,-3.0030731792701057e-5,5.210242554479061e-8,0.004757065414585785,-2.9889908539192638e-5,5.176159886049536e-8,0.004757418195542284,-2.968619040159789e-5,5.1271759843174285e-8,0.00475770601363651,-2.9443203318333868e-5,5.0689459342253564e-8,0.004757915965546911,-2.9193873541743718e-5,5.009323271378707e-8,0.004758048438176281,-2.8975983699953833e-5,4.957295059706262e-8,0.0047581194741599594,-2.882542250153593e-5,4.921372935448555e-8,0.004758160019778779,-2.876818870394926e-5,4.9076934374705044e-8,0.004758211358591651,-2.8813062505827567e-5,4.9182827912228046e-8,0.004758317093348088,-2.894711954955259e-5,4.950002836532726e-8,0.004758513086696229,-2.913579719092093e-5,4.994582695633771e-8,0.004758817511140333,-2.932837760191171e-5,5.03993731608605e-8,0.004759223605850981,-2.9468701036464705e-5,5.072723219425754e-8,0.004759697867909933,-2.9509504216527897e-5,5.0817464553032814e-8,0.004760185864983653,-2.942696235017769e-5,5.061410130962157e-8,0.0047606259543624555,-2.9230317643366145e-5,5.0139889000795495e-8,0.004760967607467908,-2.896139174117637e-5,4.9494965504536796e-8,0.004761187350905263,-2.8682116608214554e-5,4.882704196243258e-8,0.004761294966547717,-2.8454389880011927e-5,4.828336259201367e-8,0.004761327275387122,-2.8321230768383856e-5,4.796585845162461e-8,0.004761333553681048,-2.829714704173953e-5,4.790836114893017e-8,0.0047613601652829966,-2.8369688621673795e-5,4.808053312846534e-8,0.004761440321646852,-2.8508399895063426e-5,4.8409387338905586e-8,0.004761590551451071,-2.8675522491192136e-5,4.880485640357133e-8,0.004761812082991868,-2.883449707617644e-5,4.917998782520274e-8,0.004762094385548418,-2.8955069947828657e-5,4.946298307321452e-8,0.004762418882065095,-2.9015693696433737e-5,4.960280392062293e-8,0.0047627620311700624,-2.9004461174501594e-5,4.95713500331758e-8,0.004763097828331392,-2.8919547543918302e-5,4.936452599578333e-8,0.004763400221147088,-2.8769621484632385e-5,4.90032528762637e-8,0.004763646058855578,-2.8574085268911304e-5,4.8534040160042696e-8,0.004763818946533213,-2.8362398774863e-5,4.802731915464349e-8,0.004763913739565946,-2.8171404920085826e-5,4.757097276326134e-8,0.004763940543520972,-2.8039773963918373e-5,4.725700354486537e-8,0.004763926283878361,-2.7999613583819032e-5,4.7161505527736824e-8,0.004763911790083301,-2.806694015820014e-5,4.732201788368541e-8,0.004763943561668426,-2.8234348316907707e-5,4.772020956502153e-8,0.004764061768513518,-2.846950262937871e-5,4.827848357257109e-8,0.004764288248044224,-2.8721294087771193e-5,4.8874818169044365e-8,0.004764618840848933,-2.893247019251986e-5,4.93729414401414e-8,0.004765022978940383,-2.905493603698263e-5,4.965875709174304e-8,0.004765450868508584,-2.9062967578863874e-5,4.967170122917772e-8,0.004765846191254104,-2.8960399760946087e-5,4.942169071629253e-8,0.00476616076776282,-2.8779715550303997e-5,4.8986766544630736e-8,0.004766367084636814,-2.8573141543301774e-5,4.849172329484978e-8,0.004766464911858467,-2.839814847115955e-5,4.807347695622499e-8,0.00476647980983421,-2.8301831799976193e-5,4.784386143983262e-8,0.004766454199070231,-2.830937480805551e-5,4.7862255367856655e-8,0.004766434603844106,-2.8420157629011527e-5,4.8126495550133353e-8,0.004766459867818386,-2.861169104607286e-5,4.8582435764613466e-8,0.004766553900979995,-2.8848469249434867e-5,4.9145161379864336e-8,0.004766723895020026,-2.9091731049801776e-5,4.9722271610959204e-8,0.004766962652236033,-2.9307102792118214e-5,5.023203099217928e-8,0.004767252783211253,-2.946903329270971e-5,5.061383669831442e-8,0.004767570966247876,-2.956252059197733e-5,5.083224211036534e-8,0.00476789143265435,-2.9583263200849124e-5,5.0877272768619633e-8,0.004768188657904238,-2.9537233992896767e-5,5.076341708753041e-8,0.004768439713838026,-2.9440208044921784e-5,5.0528530531352904e-8,0.004768626910754468,-2.9317193423369705e-5,5.0232483468787865e-8,0.004768741178477299,-2.9201099070795987e-5,4.9953931538163455e-8,0.004768786027644776,-2.9129513499080413e-5,4.978252629146496e-8,0.004768780936853772,-2.9138496012208616e-5,4.980400285879896e-8,0.0047687618966803106,-2.9253256552848995e-5,5.007792821246455e-8,0.004768776430770757,-2.94777909524039e-5,5.0613091054872876e-8,0.004768871988096792,-2.9788111750287958e-5,5.13515752527904e-8,0.004769080444607102,-3.013432954967566e-5,5.2173957718739495e-8,0.004769405284770623,-3.0453486715106665e-5,5.293006343952431e-8,0.004769818220406904,-3.0688999004594416e-5,5.3485350267577706e-8,0.00477026743433048,-3.080834002271513e-5,5.376298803352503e-8,0.004770693577738604,-3.081168201237658e-5,5.3764285152528835e-8,0.004771046589895863,-3.072935915638893e-5,5.3562407814568835e-8,0.004771297631526678,-3.0610999818195513e-5,5.3276237909610404e-8,0.004771443711692161,-3.051122681918304e-5,5.303613422492912e-8,0.004771505396973143,-3.047631542556714e-5,5.295212013490912e-8,0.004771519499267242,-3.0534710642808274e-5,5.3091406911566415e-8,0.004771529205577235,-3.0692816320908944e-5,5.346855026149306e-8,0.00477157418650815,-3.0936189653487376e-5,5.404847750248202e-8,0.004771682921045021,-3.123511651048176e-5,5.4759893534474465e-8,0.004771868687189363,-3.1552574400663744e-5,5.551430977654335e-8,0.004772129449714966,-3.1852223337845775e-5,5.622508871487745e-8,0.004772450721118148,-3.210457768014518e-5,5.682212037646142e-8,0.0047728099065585915,-3.2290564110685556e-5,5.726024480323222e-8,0.004773180754965365,-3.240266257319448e-5,5.752190311025016e-8,0.004773537085899212,-3.244442374528547e-5,5.761592957241243e-8,0.004773855633711976,-3.242925814099788e-5,5.757463774878549e-8,0.004774118342142201,-3.237905496994603e-5,5.7450525834272396e-8,0.004774314614586185,-3.23226647010406e-5,5.731264700502641e-8,0.004774443914942631,-3.2293765111534964e-5,5.724146147285952e-8,0.004774518652136438,-3.232717786829844e-5,5.731994509929363e-8,0.0047745663374796085,-3.245259117379958e-5,5.761852250142311e-8,0.004774628801644312,-3.268548015279706e-5,5.817341730913397e-8,0.004774755642402249,-3.301726301171104e-5,5.896332753649877e-8,0.004774990554962329,-3.340982109567715e-5,5.989660608993938e-8,0.004775353818295921,-3.3800784181514464e-5,6.082409330155231e-8,0.004775829687604098,-3.412186477507274e-5,6.158296115132251e-8,0.004776367868533359,-3.4323594773016025e-5,6.205572173406188e-8,0.004776900497853547,-3.439347655809735e-5,6.22134491263007e-8,0.004777365818310518,-3.435798439395554e-5,6.21203712505869e-8,0.004777726423271264,-3.426947678704886e-5,6.190234646575702e-8,0.004777975587727213,-3.418704078505039e-5,6.170085067616404e-8,0.004778133031878161,-3.416016772550692e-5,6.163388088984261e-8,0.004778235183303571,-3.42193194337018e-5,6.177353927618648e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json new file mode 100644 index 000000000..2cb27659e --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_27.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":27000,"numberOfSamples":426,"samples":[0.004778324486778677,-3.437325503603603e-5,6.213990841775234e-8,0.0047784403655323285,-3.4611193149972956e-5,6.270647293317436e-8,0.004778612794687001,-3.490776213298559e-5,6.34120907874662e-8,0.004778858592736182,-3.52292773450405e-5,6.41760174740733e-8,0.004779180332297561,-3.554033000747647e-5,6.491361305699471e-8,0.0047795676373042825,-3.580972313910667e-5,6.555048782196374e-8,0.004780000304382801,-3.601491695515349e-5,6.603309632804475e-8,0.00478045244087296,-3.61445559073166e-5,6.63347373647879e-8,0.004780896788498023,-3.619907152539314e-5,6.64569282050896e-8,0.004781308537182374,-3.6189716300693844e-5,6.642701476463283e-8,0.004781668287402928,-3.613665338138569e-5,6.62935418736394e-8,0.004781964263597514,-3.606664631235279e-5,6.612070094818705e-8,0.004782194088007322,-3.6010502207012165e-5,6.598220199376154e-8,0.004782366358377176,-3.600003307813221e-5,6.595397202033107e-8,0.004782501973157172,-3.6063967015481664e-5,6.610431957871602e-8,0.004782634428155468,-3.622211612037997e-5,6.647996630880908e-8,0.004782807312744113,-3.647777437681964e-5,6.708796154697767e-8,0.004783066725500625,-3.681018070253991e-5,6.787788985789277e-8,0.004783447527929692,-3.717158351927006e-5,6.873512189479286e-8,0.004783956543699519,-3.749495769285591e-5,6.949941757309266e-8,0.004784561694818515,-3.7714824470447004e-5,7.001467512930746e-8,0.00478519734376055,-3.779386901530488e-5,7.019245393058328e-8,0.004785787298279908,-3.773988586048272e-5,7.005238005891471e-8,0.004786273540716633,-3.760159745695435e-5,6.971198893123057e-8,0.004786634261718939,-3.7446681679021194e-5,6.93338948131939e-8,0.004786883955125812,-3.7336538281738074e-5,6.90651418882107e-8,0.004787060855944783,-3.731025026111713e-5,6.89987545085644e-8,0.004787211498019626,-3.738052485901743e-5,6.916423518663561e-8,0.004787378723491085,-3.753768633517913e-5,6.953747098677388e-8,0.004787594743852002,-3.775688736390837e-5,7.005827277528313e-8,0.004787878341866488,-3.8005421267547694e-5,7.064797754466723e-8,0.004788234677867704,-3.824887091042978e-5,7.122411974828502e-8,0.004788656578890198,-3.845602832364749e-5,7.171211724931977e-8,0.004789126866304347,-3.8602762874008655e-5,7.205447458736902e-8,0.004789621527438917,-3.867476505188969e-5,7.221733392634786e-8,0.004790113453092092,-3.866900598852055e-5,7.219394452663505e-8,0.004790576389242894,-3.859380569021363e-5,7.200475975629059e-8,0.004790988658217021,-3.846749668906106e-5,7.169414035802423e-8,0.004791336185455692,-3.831592746623132e-5,7.132428928460062e-8,0.004791614602286293,-3.8169236193829984e-5,7.096748066882624e-8,0.004791830442019499,-3.8058199395276177E-05,7.069730505809583e-8,0.00479200147328233,-3.8010251494226334e-5,7.057912997799612e-8,0.00479215608282581,-3.8045112493544786e-5,7.065962097547686e-8,0.004792331243570715,-3.816988109148568e-5,7.095502401154791e-8,0.00479256801539422,-3.837391090721481e-5,7.143902873254914e-8,0.004792903356231363,-3.8625101009650084e-5,7.203412021826269e-8,0.00479335809982377,-3.887092912081732e-5,7.261428947824125e-8,0.004793923998139211,-3.904832069801235e-5,7.302876037880577e-8,0.004794557121329183,-3.910366330394545e-5,7.314982344552248e-8,0.004795186187943556,-3.901641098772414e-5,7.292918982979318e-8,0.004795737032643518,-3.881216157437762e-5,7.242916797983955e-8,0.004796161501972789,-3.855411099464743e-5,7.180203477009054e-8,0.004796453566145229,-3.831658356890081e-5,7.122636889591443e-8,0.004796644767523727,-3.815714860499036e-5,7.084000022037542e-8,0.004796785949434881,-3.8101951194646106e-5,7.070485098911682e-8,0.004796928139441377,-3.8146598603855446e-5,7.080934608157665e-8,0.004797110480654036,-3.8265789851055167e-5,7.109188904690533e-8,0.004797355877127002,-3.8424311612934556e-5,7.146748579270787e-8,0.004797671612426517,-3.8585616852327366e-5,7.184835086333892e-8,0.004798052093481322,-3.8717282547673696e-5,7.215687639979793e-8,0.004798481982683185,-3.879416904832568e-5,7.233306811500727e-8,0.0047989392109531745,-3.880032466659669e-5,7.233903786826962e-8,0.004799398014519919,-3.873014716490181e-5,7.216177815700216e-8,0.004799832156249859,-3.858883316916818e-5,7.181423253686315e-8,0.004800218353251468,-3.839193072968296e-5,7.133417138730679e-8,0.004800539728226463,-3.816370201797726e-5,7.07801739212383e-8,0.004800788798428815,-3.7934150450836535e-5,7.022440790334248e-8,0.004800969422381577,-3.773493298607536e-5,6.97427737273164e-8,0.004801097307136082,-3.7594608437565975e-5,6.940350057998089e-8,0.004801198860837516,-3.753375575082618e-5,6.925545753494772e-8,0.004801308307002621,-3.7560557353341817e-5,6.931760143740602e-8,0.004801463061629263,-3.766739513003747e-5,6.957089748412672e-8,0.0048016973159992595,-3.7829085241195104e-5,6.995424232825527e-8,0.004802033897188718,-3.800393663211438e-5,7.036721161540528e-8,0.004802475381486049,-3.8139426649914707e-5,7.068384881196978e-8,0.004802997237534293,-3.8183940325160886e-5,7.078086051437349e-8,0.0048035477616877155,-3.810365748834886e-5,7.057799420498539e-8,0.004804059432364746,-3.789890582121566e-5,7.007704800926735e-8,0.004804471058177286,-3.76100617891968e-5,6.93758159734603e-8,0.004804751226949466,-3.730566920695092e-5,6.863938578566553e-8,0.0048049094711126545,-3.705654492532993e-5,6.803781398940207e-8,0.004804988697932718,-3.691017647857788e-5,6.768458911635844e-8,0.004805045208603211,-3.687881976068849e-5,6.760819207952647e-8,0.004805128912216125,-3.6943695478478026e-5,6.776250536534154e-8,0.004805272128763522,-3.706800766501402e-5,6.805842303113509e-8,0.0048054875443432725,-3.72102043926267e-5,6.839587172762585e-8,0.004805771578807736,-3.733305531184578e-5,6.868556225257375e-8,0.004806109373196501,-3.740819210339049e-5,6.885971585954908e-8,0.004806479267214914,-3.741763766075652e-5,6.887556737614801e-8,0.00480685624919262,-3.7353970688048305e-5,6.871568343569287e-8,0.00480721474503835,-3.722005965565962e-5,6.838732853486281e-8,0.004807531254878627,-3.70285788369557e-5,6.792132402469517e-8,0.004807787168840347,-3.680107359176237e-5,6.736978068548045e-8,0.0048079717908961535,-3.656606685754552e-5,6.680147748275388e-8,0.004808085124176199,-3.635572067784862e-5,6.629375291303479e-8,0.0048081395655390005,-3.6201003683608846e-5,6.59208353445968e-8,0.004808159619935799,-3.61259119702826e-5,6.573995300854134e-8,0.004808179052187587,-3.614182096799145e-5,6.577781399967254e-8,0.0048082354644977225,-3.624339663861216e-5,6.602088125342372e-8,0.004808363016906486,-3.640739698014146e-5,6.641263422122376e-8,0.004808584568140996,-3.659514206004428e-5,6.685967165663355e-8,0.004808904762436531,-3.6758854267688404e-5,6.724710168628325e-8,0.00480930579650223,-3.685155258136531e-5,6.746239580653564e-8,0.0048097478566896616,-3.683927126708737e-5,6.742470100953433e-8,0.004810176029910032,-3.6712847565078014e-5,6.711298772615927e-8,0.0048105340254307105,-3.649482817530326e-5,6.658239512536003e-8,0.004810781727205723,-3.62365842449442e-5,6.595705126594526e-8,0.004810909644980501,-3.6003671889103674e-5,6.539470778083783e-8,0.004810942478516832,-3.5853999525254e-5,6.503419712779448e-8,0.004810929054258762,-3.581891665158464e-5,6.495006857326439e-8,0.0048109239580987374,-3.589619723046781e-5,6.513597488805307e-8,0.0048109704482596355,-3.605632765339819e-5,6.552011162684835e-8,0.004811091479469972,-3.625616637154878e-5,6.599830095926331e-8,0.0048112894999106535,-3.645235261818129e-5,6.646628961790225e-8,0.004811551496979631,-3.661003899809157e-5,6.684062633294758e-8,0.004811855326073649,-3.6706519877171644e-5,6.706718834733222e-8,0.004812175008010524,-3.673147922115121e-5,6.71216166824625e-8,0.00481248442724685,-3.668578285980148e-5,6.70063528600365e-8,0.004812759857408077,-3.6580011791983614e-5,6.67471364140862e-8,0.004812982021847438,-3.643312892218514e-5,6.638984182107787e-8,0.004813138260380984,-3.627105788419161e-5,6.599705939990736e-8,0.004813224984539436,-3.612453739463318e-5,6.56428706687843e-8,0.004813250027706149,-3.6025539008764395e-5,6.540413556464342e-8,0.004813233901618618,-3.600194055235022e-5,6.53476083256435e-8,0.004813208641342787,-3.6070981482546236e-5,6.55141956879046e-8,0.004813213185891162,-3.623309956685937e-5,6.590422431888505e-8,0.0048132853329533815,-3.6468577247922494e-5,6.646953796652841e-8,0.00481345196089862,-3.6739232782648675e-5,6.711775543238068e-8,0.004813720524850067,-3.699585543676539e-5,6.773031548224511e-8,0.004814074915372328,-3.718990777229592e-5,6.819070851646075e-8,0.004814477519636433,-3.7286327454266165e-5,6.841524919716474e-8,0.004814877412507499,-3.727371265226798e-5,6.837744468682739e-8,0.004815222824200392,-3.71687674239285e-5,6.811846623591315e-8,0.004815474776181273,-3.70132472069625e-5,6.773954080785747e-8,0.0048156180606356,-3.686348225678969e-5,6.737652512252384e-8,0.004815665783668138,-3.677486127562191e-5,6.716247159200004e-8,0.004815655222405848,-3.678604759224073e-5,6.718971555136587e-8,0.004815636005506843,-3.690868613654817e-5,6.74853269118757e-8,0.004815655154643246,-3.712641741469069e-5,6.800902880734398e-8,0.0048157448657402905,-3.740272786418989e-5,6.86723392503097e-8,0.004815916982414414,-3.769330697538445e-5,6.936842915828944e-8,0.004816164398472773,-3.79575991566434e-5,6.999989097850887e-8,0.004816466732888395,-3.8166161444911164e-5,7.049630552378684e-8,0.004816796998892661,-3.830332545250297e-5,7.082047667647441e-8,0.004817127128752034,-3.8366574426466915e-5,7.096680517792435e-8,0.004817431716377734,-3.8364425072400815e-5,7.095614538559232e-8,0.00481769031494261,-3.831406952629976e-5,7.0830151666776e-8,0.004817889007363463,-3.823930287395324e-5,7.064632660863894e-8,0.004818021924002364,-3.81685964240486e-5,7.047337979987863e-8,0.004818092995005395,-3.8132677946559405e-5,7.038533637487357e-8,0.004818117609598462,-3.8160829347254704e-5,7.045252292139183e-8,0.0048181231757472446,-3.8275439457385075e-5,7.072838433001155e-8,0.004818147032808319,-3.848524220234855e-5,7.123323584537503e-8,0.004818230263552585,-3.877913888410908e-5,7.193954194116859e-8,0.004818407376247594,-3.9123929426344404e-5,7.276667979907158e-8,0.004818694517905241,-3.946919365675648e-5,7.359290131063591e-8,0.004819081226702352,-3.975987623674142e-5,7.428575222689352e-8,0.004819530473516512,-3.99528372131395e-5,7.474192447320143e-8,0.004819988207444505,-4.003071053802827e-5,7.492052207630327e-8,0.0048203989246250615,-4.000728896884301e-5,7.485582965376748e-8,0.004820721175466344,-3.99227597487728e-5,7.464556945092878e-8,0.004820937782280773,-3.9831445677784674e-5,7.442110541926777e-8,0.004821058434419171,-3.978679151255124e-5,7.431111753324506e-8,0.004821115078288102,-3.982808284365596e-5,7.44096350669423e-8,0.0048211522270188,-3.9972043873461636e-5,7.475600152324611e-8,0.004821215190839854,-4.021085655268812e-5,7.533039650683856e-8,0.004821339447086454,-4.051642323333889e-5,7.606436621672032e-8,0.004821543793180569,-4.084903826994292e-5,7.686186217830935e-8,0.004821828560137223,-4.11675330397259e-5,7.762370019061549e-8,0.00482217843219588,-4.143791773110746e-5,7.826830249781045e-8,0.004822568060222116,-4.163862375087511e-5,7.874420409142698e-8,0.004822968276370532,-4.176204785493435e-5,7.903364411314588e-8,0.0048233512962861805,-4.1813332547424874e-5,7.914952587908982e-8,0.004823694268337095,-4.180773689787612e-5,7.912902718095061e-8,0.004823981341733217,-4.176770959006623e-5,7.902653839294732e-8,0.004824204843306262,-4.172022434438517e-5,7.890725119874452e-8,0.004824366170721857,-4.169434217802275e-5,7.884127164436675e-8,0.0048244767088938545,-4.1718500655906905e-5,7.889702962949885e-8,0.004824558542278362,-4.1816828861910714e-5,7.9132317175072e-8,0.004824644046356498,-4.2004005130913916e-5,7.958186192139638e-8,0.004824772810595939,-4.227902970506275e-5,8.02424031086156e-8,0.004824984330163837,-4.261986981161869e-5,8.105999852427741e-8,0.0048253063789773926,-4.2982701249766916e-5,8.192845535537351e-8,0.004825742302472369,-4.330968240475467e-5,8.2708249557431e-8,0.004826263889668254,-4.354578668059347e-5,8.326714000557609e-8,0.004826816164327769,-4.365883275531775e-5,8.352838122738419e-8,0.004827334389224904,-4.3652515189787744e-5,8.350199407923697e-8,0.0048277656748831246,-4.356505406150206e-5,8.328128245698638e-8,0.00482808475136242,-4.3454640222978786e-5,8.300742298950006e-8,0.0048282979694060126,-4.337986978855226e-5,8.282198985286413e-8,0.004828436715004647,-4.3383781338829196e-5,8.28283556019412e-8,0.004828545452468338,-4.3485739353153795e-5,8.307227830943268e-8,0.004828669442671055,-4.368097256269977e-5,8.354112596095182e-8,0.004828845131978453,-4.394543747541324e-5,8.417594361299053e-8,0.004829094332003,-4.42434357404026e-5,8.489003053203357e-8,0.004829422222056958,-4.453594609792681e-5,8.558908046994333e-8,0.004829818689134246,-4.4788154520325726e-5,8.618928271603903e-8,0.004830262162433468,-4.497503014521456e-5,8.663067376891177e-8,0.004830724791376845,-4.508429236527066e-5,8.688419593273334e-8,0.004831177763389958,-4.5116784857431304e-5,8.695250414418422e-8,0.0048315958105310045,-4.50848066644472e-5,8.686584714086303e-8,0.004831960372320328,-4.50092207251216e-5,8.667501419792826e-8,0.004832261385448886,-4.4916181410082026e-5,8.644339426785272e-8,0.004832498085672877,-4.4834021165063305e-5,8.623945104183476e-8,0.004832679280731162,-4.479034989518507e-5,8.612971656792317e-8,0.004832823322580668,-4.480906858922817e-5,8.61715560370843e-8,0.004832957631610085,-4.490685000713927e-5,8.640463908636807e-8,0.0048331170643941285,-4.508874878499018e-5,8.684036295819687e-8,0.004833339822081472,-4.5343323574385394e-5,8.745021561454051e-8,0.004833659599911437,-4.5639123415037367e-5,8.815754137046817e-8,0.004834094074838598,-4.592604139982e-5,8.884105976880853e-8,0.004834633097564738,-4.6145321609871045e-5,8.935914049205118e-8,0.004835233759482804,-4.624855257649796e-5,8.959560230484134e-8,0.004835829415303181,-4.621862951064732e-5,8.951018080070509e-8,0.004836352230776127,-4.6080232054244594e-5,8.916366565204528e-8,0.0048367583349983355,-4.589150422661235e-5,8.869757625100208e-8,0.004837041591904654,-4.572106996194247e-5,8.827831621545146e-8,0.004837230223456968,-4.562385027524527e-5,8.803847379686291e-8,0.004837371762779652,-4.562714338453696e-5,8.804318221037112e-8,0.004837516153686477,-4.572936473719342e-5,8.828738354028514e-8,0.004837703559825233,-4.590705729913291e-5,8.871321255880796e-8,0.00483795842100459,-4.6124666861455577e-5,8.923395641208231e-8,0.0048382884248457615,-4.634354743735913e-5,8.975592732878355e-8,0.004838686449812278,-4.652885932931713e-5,9.019505444720963e-8,0.004839134059291325,-4.6654302346770156e-5,9.048817401084265e-8,0.00483960577414928,-4.670490119196287e-5,9.059963781515475e-8,0.004840073592346507,-4.6677962776577816e-5,9.052354945919353e-8,0.004840511260350432,-4.6582397345525144e-5,9.028205993460479e-8,0.004840897899231785,-4.643670396318439e-5,8.992042145949509e-8,0.004841220660300779,-4.626596989787898e-5,8.949965282921296e-8,0.004841476202205037,-4.6098371678003375e-5,8.908802385796573e-8,0.004841671077489782,-4.596168029442229e-5,8.875259106524241e-8,0.004841821307091204,-4.587997080031785e-5,8.855125453694367e-8,0.004841951292609372,-4.587045888723051e-5,8.852512147964674e-8,0.004842091964053706,-4.5940344193465115e-5,8.869088863412212e-8,0.004842277739297711,-4.6083631809650075e-5,8.903322182845005e-8,0.004842541493972926,-4.627838807084122e-5,8.949828371537751e-8,0.004842906839177331,-4.648600438823033e-5,8.999219477976895e-8,0.004843378264295116,-4.665522221668618e-5,9.039097681872455e-8,0.004843932381435793,-4.6733606371812626e-5,9.056834871587784e-8,0.004844516593310677,-4.6686017948423326e-5,9.044026966797496e-8,0.004845061297440305,-4.651301745333522e-5,9.000924058638993e-8,0.004845504427784852,-4.6256995746914114e-5,8.93789350952813e-8,0.004845816313409309,-4.598827316210438e-5,8.872033893206934e-8,0.004846009719910427,-4.5777184591241536e-5,8.820391758061302e-8,0.004846129972474116,-4.566860671556084e-5,8.793778061329034e-8,0.0048462338316596935,-4.567181248329228e-5,8.794324136066889e-8,0.004846370227429732,-4.576600567215227e-5,8.816863162886767e-8,0.0048465699861102345,-4.591338738919411e-5,8.852141023091782e-8,0.004846844129874208,-4.6071908146491065e-5,8.889930925992923e-8,0.004847187112262369,-4.6204138643279386e-5,8.921179902089594e-8,0.004847581703514996,-4.6282067896565305e-5,8.939150694429025e-8,0.004848003735402131,-4.6289076937789076e-5,8.939877769506586e-8,0.004848426256645651,-4.6220321509909585e-5,8.922246700657916e-8,0.004848823209408606,-4.608209856359733e-5,8.887836627853265e-8,0.004849172664527739,-4.58903562975773e-5,8.840557932192903e-8,0.0048494595475039315,-4.5668426291373705e-5,8.786099087737668e-8,0.0048496777143903665,-4.544400174802944e-5,8.731188333905859e-8,0.004849831083297237,-4.524549703219852e-5,8.682706510070045e-8,0.0048499335706496585,-4.5098191704872816e-5,8.646751496052212e-8,0.004850007839811998,-4.502058698290767e-5,8.627758023189437e-8,0.004850082971399407,-4.502123491055191e-5,8.627733894012528e-8,0.00485019108473835,-4.509627653317102e-5,8.645669590689583e-8,0.004850362866722029,-4.522799803925022e-5,8.677198648497969e-8,0.004850621906510939,-4.5384910987798636e-5,8.71463393443206e-8,0.004850977946640694,-4.552441540774088e-5,8.747633199424684e-8,0.00485142013660625,-4.5599608404899196e-5,8.764862963748815e-8,0.0048519131380055204,-4.557121093968653e-5,8.756886324253519e-8,0.004852400538216197,-4.5422915883702246e-5,8.719862480298039e-8,0.004852819081156075,-4.517383633579113e-5,8.658536065820687e-8,0.004853121273694221,-4.4878623615075926e-5,8.586240756352643e-8,0.004853295526580276,-4.461012521329985e-5,8.52067471895604e-8,0.004853370910340709,-4.443133874108983e-5,8.477085726904584e-8,0.004853402989489355,-4.437253239360528e-5,8.462723494908248e-8,0.004853450340338429,-4.442557395851914e-5,8.475489986913897e-8,0.004853555566747505,-4.4554520782041413e-5,8.506551757055743e-8,0.004853737798332979,-4.471246662007726e-5,8.54446544743408e-8,0.00485399486389547,-4.485554721718429e-5,8.57858896141624e-8,0.004854309864890948,-4.495075979662197e-5,8.600964247263456e-8,0.00485465803028982,-4.497849770452831e-5,8.6069040778254e-8,0.00485501203358417,-4.493206747983682e-5,8.594850455856457e-8,0.00485534568228858,-4.481608527441229e-5,8.565974574854902e-8,0.004855636618776108,-4.464461889212684e-5,8.523726941055656e-8,0.004855868536584048,-4.4439150233652795e-5,8.473347207406128e-8,0.0048560330722339125,-4.422617519806977e-5,8.421282174134603e-8,0.004856131296365982,-4.4034205116743515e-5,8.374453608584602e-8,0.004856174444895931,-4.389004599187381e-5,8.339349699528367e-8,0.004856183359155293,-4.381463425405478e-5,8.321012126246628e-8,0.004856186304500604,-4.381908244061987e-5,8.322079181766202e-8,0.0048562152009108475,-4.3901681750652377e-5,8.342065742125228e-8,0.004856300584346492,-4.4046572784289005e-5,8.37705159905011e-8,0.004856465867596215,-4.422466583704176e-5,8.419918887759595e-8,0.004856721671702306,-4.439714167069116e-5,8.46121777512187e-8,0.004857061176355107,-4.452169624559631e-5,8.490696041970339e-8,0.004857457829840346,-4.456149265628484e-5,8.499476400738042e-8,0.00485786732258919,-4.4495941699599566e-5,8.482662558070934e-8,0.0048582357611451545,-4.433064375541632e-5,8.44172762033907e-8,0.004858514335168011,-4.4101716857274364e-5,8.385533918607352e-8,0.004858676764439197,-4.386931833014717e-5,8.32873433067394e-8,0.004858731337204977,-4.369916734671689e-5,8.287271910808891e-8,0.004858719353578516,-4.363884359422422e-5,8.272626402178683e-8,0.004858699079100403,-4.370113971203409e-5,8.287790899006382e-8,0.004858723862983524,-4.3863152455982114e-5,8.32708541147057e-8,0.004858826040038608,-4.4079389942548624e-5,8.379377681762571e-8,0.00485901243298159,-4.429951477497208e-5,8.432416681478761e-8,0.004859269289883763,-4.448198863401187e-5,8.476146671893096e-8,0.004859570954995191,-4.460045524794661e-5,8.504236029963514e-8,0.004859887795941977,-4.464428204949593e-5,8.514179476144743e-8,0.004860191622124641,-4.461614115330714e-5,8.506688634502332e-8,0.004860458789785439,-4.452889224023546e-5,8.48492775788132e-8,0.004860671945597038,-4.440278682495274e-5,8.453839235720549e-8,0.004860821241729715,-4.426305156165498e-5,8.419563819915824e-8,0.004860905419245433,-4.4137473414217795e-5,8.388856225560573e-8,0.004860932724572903,-4.405349915154474e-5,8.368376120026044e-8,0.004860921196088654,-4.403452027360999e-5,8.363778704610134e-8,0.004860897562807879,-4.4095524083173727e-5,8.378654746993848e-8,0.004860894101884112,-4.4238943389541296e-5,8.413526183041853e-8,0.0048609433408634845,-4.4451997534014956e-5,8.465211854456047e-8,0.004861071294856948,-4.470688491827875e-5,8.526891053304732e-8,0.004861290736213975,-4.4964675805282034e-5,8.589067031036176e-8,0.004861596402411748,-4.518269904195639e-5,8.641375721967553e-8,0.00486196380325942,-4.5324110154403064e-5,8.674916232953769e-8,0.0048623525742310615,-4.536760086172835e-5,8.684603658726279e-8,0.004862714420798966,-4.531482706925229e-5,8.670954354944289e-8,0.004863004623796651,-4.519303097661249e-5,8.640693812132527e-8,0.004863194723425296,-4.505076964306804e-5,8.605688184505726e-8,0.0048632825102846704,-4.494612337857568e-5,8.58005774809639e-8,0.004863294732214557,-4.492967036023607e-5,8.576036145889535e-8,0.004863279646140609,-4.50281209417457e-5,8.600009804265731e-8,0.004863291238192513,-4.5235972657266385e-5,8.650521261792416e-8,0.004863371875000471,-4.5519265521149334e-5,8.719217023603693e-8,0.004863541092600532,-4.5828989880735264e-5,8.794132978880563e-8,0.0048637941431590335,-4.611699389480268e-5,8.863570335939151e-8,0.004864108348633099,-4.6347665140982225e-5,8.918925654220265e-8,0.00486445241548828,-4.650270904600831e-5,8.95582979767788e-8,0.0048647945683711405,-4.658026758675538e-5,8.973908538631549e-8,0.004865107760312099,-4.659122884457311e-5,8.975868058567857e-8,0.004865372216069882,-4.655509521210519e-5,8.966485595145175e-8,0.004865576369720018,-4.649651590121914e-5,8.95177115085765e-8,0.004865717179949249,-4.644257685804242e-5,8.938315205316097e-8,0.004865800395588709,-4.642041241650156e-5,8.932709842864613e-8,0.004865840829426269,-4.6454505120622764e-5,8.940887781848442e-8,0.004865862139653059,-4.656317873149144e-5,8.967262906616372e-8,0.00486589520436499,-4.675433988431925e-5,9.013692766243163e-8,0.00486597415698355,-4.7021367342236717e-5,9.07848659725663e-8,0.004866129742279287,-4.7340909048838094e-5,9.15588685419079e-8,0.004866380968437412,-4.7674714425056845e-5,9.236536298478788e-8,0.004866727661902241,-4.797676853483728e-5,9.309231162293983e-8,0.004867147324684734,-4.8204752728047944e-5,9.363717379329655e-8,0.004867598631309231,-4.833237436364809e-5,9.393686151571851e-8,0.00486803127888161,-4.835807099496604e-5,9.398874966956663e-8,0.004868399226752945,-4.8306738611208255e-5,9.385460419655338e-8,0.0048686730911499205,-4.8223736532853264e-5,9.364566598366033e-8,0.004868847969216985,-4.816304071077976e-5,9.349354754634237e-8,0.0048689445715649204,-4.817300077705271e-5,9.351546946352385e-8,0.004869003383995121,-4.8283613222312364e-5,9.378341924616291e-8,0.004869073380924081,-4.849890638879081e-5,9.43059380023238e-8,0.0048691985524858695,-4.8796843985408144e-5,9.50282614209952e-8,0.004869406558763143,-4.9136789945777165e-5,9.585077822881535e-8,0.0048697031730176215,-4.947169627205198e-5,9.665881714263925e-8,0.004870073718317038,-4.9760441298475204e-5,9.735263346838005e-8,0.004870489786100687,-4.9976304469416066e-5,9.786787764373727e-8,0.004870917867218918,-5.010990840288102e-5,9.818254906626896e-8,0.004871326805083185,-5.016747905294032e-5,9.831256717497081e-8,0.004871692531052498,-5.016661596207553e-5,9.830134495028733e-8,0.004872000142688164,-5.0131652452055496e-5,9.820844897666668e-8,0.004872244237261572,-5.008976155652556e-5,9.810014547881626e-8,0.004872428488982316,-5.0068019068499616e-5,9.804229692860984e-8,0.004872565118915182,-5.0091037618228904e-5,9.809461966944169e-8,0.0048726744092658725,-5.017854275436142e-5,9.830475483883204e-8,0.004872783856378547,-5.034234927557437e-5,9.870086948139556e-8,0.00487292606572329,-5.058265619676878e-5,9.928265588588883e-8,0.0048731343054660824,-5.0884445663438285e-5,1.0001269113882292e-7,0.004873435129492483,-5.1215919899950034e-5,1.0081284930929764e-7,0.0048738390660209,-5.153170034332811e-5,1.015723136253397e-7,0.004874332805219763,-5.178266204412348e-5,1.0217165527867006e-7,0.004874877889632444,-5.1930947916088274e-5,1.0251939608479708e-7,0.004875419222669628,-5.196437324983978e-5,1.0258697726965176e-7,0.004875901546822159,-5.190279042143044e-5,1.0242405238386324e-7,0.004876286929160504,-5.179247995187442e-5,1.0214451691172397e-7,0.004876565554442809,-5.1691121210262656e-5,1.0188954108256096e-7,0.004876756238178176,-5.165032541885692e-5,1.0178476106510073e-7,0.004876898311797196,-5.170234825273362e-5,1.0190790776405611e-7,0.004877039291090606,-5.185415619525043e-5,1.0227463542533915e-7,0.004877222603926023,-5.20886997024062e-5,1.0284205932149231e-7,0.004877478233490123,-5.237148471881915e-5,1.0352515418660084e-7,0.004877817707882309,-5.2659998699574115e-5,1.0421992098956346e-7,0.004878233764547773,-5.291357147653802e-5,1.0482740644614637e-7,0.004878704103850562,-5.310151400306657e-5,1.0527339067231532e-7,0.0048791978095219886,-5.3207947753445196e-5,1.0551996632875121e-7,0.004879682486508378,-5.323275948828798e-5,1.055676880907866e-7,0.0048801303140343175,-5.318929968967715e-5,1.0544982140066945e-7,0.004880521970866183,-5.3100190207577814e-5,1.0522202640813102e-7,0.004880848294653186,-5.299267897057388e-5,1.0495098947741473e-7,0.0048811102117961675,-5.289457264711433e-5,1.0470451475918726e-7,0.004881317747189281,-5.2831136722353006e-5,1.045440020638691e-7,0.004881488756100408,-5.282274765893747e-5,1.0451875219165502e-7,0.004881647595748994,-5.2882791831743e-5,1.0466084584560046e-7,0.004881823499265498,-5.301535663747745e-5,1.0497951455693293e-7,0.004882047968987757,-5.321257874700818e-5,1.0545473459947656e-7,0.004882350207115018,-5.34522364381064e-5,1.0603152097503244e-7,0.004882749931583773,-5.3697319596594616e-5,1.0661911602920183e-7,0.004883248411975124,-5.390029444311228e-5,1.0710159048430002e-7,0.004883821223283848,-5.40142565780382e-5,1.0736509452548331e-7,0.004884418535029374,-5.400964585550486e-5,1.07338516263783e-7,0.004884977331862179,-5.388945231346987e-5,1.0703038492932809e-7,0.004885442982784979,-5.369291520334631e-5,1.0653767571805211e-7,0.0048857896031786405,-5.348285896525935e-5,1.060146273029446e-7,0.004886027899428079,-5.33225701704739e-5,1.0561598542362421e-7,0.004886197488183362,-5.3254761974328e-5,1.0544546399226637e-7,0.004886350220054461,-5.329186339414478e-5,1.0553216327134056e-7,0.00488653376420074,-5.341832436145469e-5,1.058366269418165e-7,0.004886780973520583,-5.3599972431194304e-5,1.0627419538425782e-7,0.004887105836022719,-5.379505921217329e-5,1.0674231474866518e-7,0.00488750437159898,-5.3963749688183614e-5,1.071437647657893e-7,0.004887958428542934,-5.4074868096297026e-5,1.074029666188478e-7,0.004888440866556042,-5.410987220354813e-5,1.0747544257958971e-7,0.004888921197063378,-5.406429862465683e-5,1.0735113586693954e-7,0.004889370931079509,-5.3946902121682926e-5,1.0705217492870693e-7,0.004889767913025726,-5.377692855867965e-5,1.0662613496775146e-7,0.004890099148351,-5.3580229669963764e-5,1.0613649899040003e-7,0.0048903619623596834,-5.3384985707783635e-5,1.0565218481282615e-7,0.004890563646224889,-5.321774155887791e-5,1.0523787065252472e-7,0.004890720050330306,-5.310023848256073e-5,1.0494629332969267e-7,0.00489085365033552,-5.304708763981897e-5,1.0481260896297154e-7,0.004890991351657461,-5.306401912048959e-5,1.0485014474108545e-7]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json new file mode 100644 index 000000000..9767b1b50 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_3.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":3000,"numberOfSamples":1000,"samples":[-0.0016674126654346861,-5.729007527752374e-7,-1.4186514962201376e-8,-0.0016673064653587321,-6.734015165127343e-7,-1.4270276706700349e-8,-0.0016671184978181936,-7.942288639572809e-7,-1.4371055120518062e-8,-0.0016668581653082658,-8.937549802808163e-7,-1.4454094104781238e-8,-0.0016665462863460693,-9.416288807763305e-7,-1.4494058993362982e-8,-0.0016662092022260732,-9.201664606449159e-7,-1.4476216298494372e-8,-0.0016658745541862263,-8.237755484396502e-7,-1.4395945891238539e-8,-0.0016655683268689287,-6.578186550518726e-7,-1.4257765362438796e-8,-0.0016653124526036561,-4.3741842925891825e-7,-1.4074304544820363e-8,-0.0016651224530400707,-1.8607276082775895e-7,-1.3865132894139859e-8,-0.0016650049642489826,6.643303169026634e-8,-1.3655018765663274e-8,-0.0016649554928538104,2.8739437967418395e-7,-1.347113935991257e-8,-0.0016649572160637774,4.4604795424859426e-7,-1.3339056817593825e-8,-0.0016649817855313575,5.194876808583452e-7,-1.3277813795917761e-8,-0.0016649928181043465,4.985157505581373e-7,-1.329507262967021e-8,-0.00166495207648607,3.9179414860133283e-7,-1.3383654246342673e-8,-0.0016648274069321705,2.26664827416035e-7,-1.352084347660865e-8,-0.001664600739494372,4.5708357821865315e-8,-1.367124421905444e-8,-0.001664274219706894,-1.0088239670451744e-7,-1.3793127784445051e-8,-0.0016638726869829803,-1.6616023108150796e-7,-1.3847473701249546e-8,-0.0016634410124484337,-1.1869904209770958e-7,-1.3808176255662588e-8,-0.0016630354517974334,4.659577780072841e-8,-1.3671009811639623e-8,-0.001662709627560605,3.030262655914423e-7,-1.3458136463059741e-8,-0.0016624982880314673,5.958730436677693e-7,-1.3214963229037875e-8,-0.001662404794976831,8.568537842964569e-7,-1.2998163907749735e-8,-0.0016623988702162175,1.0254972177202318e-6,-1.2857973826241794e-8,-0.0016624271346917532,1.0685455003698803e-6,-1.2822084766277138e-8,-0.0016624319248438782,9.883600460942418e-7,-1.2888614390257493e-8,-0.001662369242835807,8.174787260993229e-7,-1.3030565315055226e-8,-0.0016622183938909184,6.041843871353809e-7,-1.3207794337616674e-8,-0.0016619818565370786,3.9717316279278375e-7,-1.3379782718210806e-8,-0.0016616789185444716,2.3502260822879676e-7,-1.3514435597222689e-8,-0.0016613377123989804,1.417265131744283e-7,-1.3591822041815075e-8,-0.0016609886089808544,1.2662367606576446e-7,-1.360423147824086e-8,-0.0016606598282278315,1.863922842656112e-7,-1.3554490273298172e-8,-0.0016603748199426104,3.0744517886406376e-7,-1.3453938412913645e-8,-0.0016601505255394024,4.680421085231016e-7,-1.3320649411749458e-8,-0.0016599957713533597,6.402384067973255e-7,-1.3177803860265977e-8,-0.0016599094977454972,7.922656339357963e-7,-1.3051723165875262e-8,-0.0016598791098382528,8.920717595398815e-7,-1.296895475612751e-8,-0.0016598798337515695,9.124839151887528e-7,-1.2952012505708826e-8,-0.001659876379622952,8.376861160842476e-7,-1.3014014454721298e-8,-0.0016598280484381447,6.695105801256583e-7,-1.3153456420237919e-8,-0.0016596973256014155,4.309782162426044e-7,-1.3351256087288848e-8,-0.001659460185844518,1.644717783767708e-7,-1.3572258355341262e-8,-0.0016591147270322442,-7.656124715275952e-8,-1.3772130406953462e-8,-0.0016586845140589572,-2.408327142852044e-7,-1.3908356700286018e-8,-0.0016582146152118225,-2.934361433791715e-7,-1.3952042824758485e-8,-0.0016577609941446497,-2.2641155822799227e-7,-1.3896646268225657e-8,-0.0016573762399432718,-6.21980795145008e-8,-1.3760786009222337e-8,-0.0016570956693766155,1.5125835864904947e-7,-1.3584155440668849e-8,-0.0016569277304044742,3.526938844470182e-7,-1.3417439166449944e-8,-0.0016568517179810498,4.838995413033776e-7,-1.3308801583491872e-8,-0.0016568239567060939,5.055051370474298e-7,-1.329085416886814e-8,-0.0016567907846579653,4.069873023778711e-7,-1.3372361772156796e-8,-0.0016567038867919353,2.0748592272561992e-7,-1.3537525963856996e-8,-0.001656532487673912,-5.231661404744325e-8,-1.375267653077842e-8,-0.0016562685745488837,-3.2332365832738283e-7,-1.3977143471321514e-8,-0.0016559247754694372,-5.607837026808751e-7,-1.4173848477561865e-8,-0.0016555275418913935,-7.327632792039998e-7,-1.4316343411791168e-8,-0.0016551092006448183,-8.233258722118555e-7,-1.4391445802169112e-8,-0.0016547013993568505,-8.316848376668471e-7,-1.439852456672699e-8,-0.0016543308264849162,-7.693391900307951e-7,-1.4347111821174578e-8,-0.0016540168884855639,-6.568154472154755e-7,-1.4254194224863743e-8,-0.00165377050241833,-5.208100635030763e-7,-1.4141844859881727e-8,-0.001653593196269087,-3.917048152325665e-7,-1.4035172614624135e-8,-0.001653476129350162,-3.0088888763530243e-7,-1.3960118899539777e-8,-0.0016533992421155022,-2.7714172882948965e-7,-1.3940479436687606e-8,-0.0016533313967630901,-3.4151069511884616e-7,-1.3993675666328718e-8,-0.001653232946576946,-5.008677652271779e-7,-1.4125420729844042e-8,-0.001653062183142646,-7.418000865678651e-7,-1.4324648124704472e-8,-0.0016527858361718897,-1.0281008249946432e-6,-1.456142157572885e-8,-0.0016523911376223348,-1.305464686483764e-6,-1.4790826634502255e-8,-0.0016518942603108112,-1.5146795210217696e-6,-1.4963914427081036e-8,-0.001651339688429203,-1.609920243457309e-6,-1.5042853245080335e-8,-0.0016507887609035258,-1.5746267527137686e-6,-1.501402985970417e-8,-0.0016503014049699613,-1.4275884845194972e-6,-1.4893009020259092e-8,-0.0016499186673924447,-1.2167625516751627e-6,-1.4719368976416159e-8,-0.0016496525262988243,-1.0042695210536724e-6,-1.4544312694847968e-8,-0.0016494852722868205,-8.488903215522008e-7,-1.4416272286595473e-8,-0.0016493768933366411,-7.916520763817829e-7,-1.4369068693422452e-8,-0.0016492770441696662,-8.477319335831267e-7,-1.441525088113211e-8,-0.0016491379089976894,-1.005586142802875e-6,-1.454535921366001e-8,-0.0016489247906258263,-1.2324077723442385e-6,-1.4732398295614608e-8,-0.0016486222435663186,-1.483745124523919e-6,-1.4939753931208416e-8,-0.0016482349077829455,-1.714387062746813e-6,-1.5130169934377415e-8,-0.0016477837047942081,-1.8876251196414704e-6,-1.5273388453025773e-8,-0.0016472992687706423,-1.9809318567924716e-6,-1.53508288088995e-8,-0.0016468148667739665,-1.987610693939075e-6,-1.5356941194346824e-8,-0.0016463605427636564,-1.915263460295526e-6,-1.529794271457019e-8,-0.0016459592556230336,-1.7824940981911972e-6,-1.5189110139549575e-8,-0.0016456248820582223,-1.6151699815473968e-6,-1.5051713360546717e-8,-0.0016453614347904178,-1.4430148462818047e-6,-1.4910218742385646e-8,-0.0016451628120618224,-1.2966201405178637e-6,-1.4789829372760213e-8,-0.0016450127057533186,-1.2044728826030512e-6,-1.4714032583746818e-8,-0.0016448847709624051,-1.1893868953393184e-6,-1.4701653351213367e-8,-0.0016447437874436506,-1.2638103881750775e-6,-1.4762980827432679e-8,-0.0016445491773054968,-1.4241708565546202e-6,-1.48951005064794e-8,-0.0016442623193067107,-1.645902905672155e-6,-1.5077791633897704e-8,-0.0016438578535539828,-1.8825890625995552e-6,-1.5272828105373147e-8,-0.0016433361724119703,-2.073293524915233e-6,-1.5430051194420875e-8,-0.0016427306855190664,-2.1595591992381907e-6,-1.5501400836018825e-8,-0.0016421028587470339,-2.107131410238427e-6,-1.545878784662949e-8,-0.0016415236596336047,-1.921503495197351e-6,-1.5306805835881395e-8,-0.0016410491716874508,-1.6475995048951014e-6,-1.508237666232406e-8,-0.0016407026930217476,-1.3532595827599134e-6,-1.4841150585489634e-8,-0.0016404710798181709,-1.1058220927750292e-6,-1.4638324030823384e-8,-0.0016403140434198668,-9.529880693486804e-7,-1.4513000663883932e-8,-0.0016401794241349037,-9.138189075949228e-7,-1.4480834585139251e-8,-0.001640017698453548,-9.79444485492997e-7,-1.4534599598191043e-8,-0.0016397921504842823,-1.1199629554508742e-6,-1.46498259445195e-8,-0.001639483962540219,-1.2938873374757163e-6,-1.4792536911725107e-8,-0.0016390929025693608,-1.4576102121358978e-6,-1.492701055511908e-8,-0.0016386346780947172,-1.5734220969873702e-6,-1.5022352898574618e-8,-0.0016381360741017184,-1.615194314249089e-6,-1.50571474431728e-8,-0.0016376290513289884,-1.5712506992188948e-6,-1.502179647791281e-8,-0.0016371449438908516,-1.4444928408342774e-6,-1.4918620999811586e-8,-0.0016367096648583616,-1.25031555175269e-6,-1.4760165902237422e-8,-0.0016363404739891797,-1.0131188796195411e-6,-1.4566365366279228e-8,-0.0016360443826047542,-7.623240043753878e-7,-1.4361298196704363e-8,-0.0016358178081207191,-5.285826195157557e-7,-1.4170084868955413e-8,-0.0016356469788772767,-3.4036970890659786e-7,-1.4016082203265821e-8,-0.001635508814606122,-2.207663722595964e-7,-1.3918227118982464e-8,-0.0016353723164385856,-1.840892669518823e-7,-1.3888261221685396e-8,-0.0016352009622329746,-2.3204470491520787e-7,-1.3927578205263703e-8,-0.0016349571713373055,-3.4963943026521634e-7,-1.4023883873503605e-8,-0.0016346099310555375,-5.023932688054426e-7,-1.4148931817790818e-8,-0.0016341454885156152,-6.3792299560969e-7,-1.4259849140121573e-8,-0.0016335782650784292,-6.955174267981529e-7,-1.4307009536395608e-8,-0.0016329555381133835,-6.248455078933967e-7,-1.4249353069369657e-8,-0.001632348566823429,-4.0811994916454653e-7,-1.4072462495238987e-8,-0.0016318292392897165,-7.307325909948915e-8,-1.3799065103672127e-8,-0.0016314426223732346,3.1411804635436726e-7,-1.348317422928833e-8,-0.0016311911484804568,6.740899862647185e-7,-1.3189486706427881e-8,-0.0016310385568320672,9.431757478148973e-7,-1.2969887537649966e-8,-0.0016309281956906096,1.0909595365989285e-6,-1.284917620325891e-8,-0.0016308035869936743,1.1218851358131656e-6,-1.2823744428951683e-8,-0.001630622539391083,1.0659851233981184e-6,-1.286910999649688e-8,-0.0016303628898681499,9.662126791094569e-7,-1.2950244535657924e-8,-0.0016300220532569065,8.673019924964457e-7,-1.303067628890683e-8,-0.0016296132995635643,8.078877149326865e-7,-1.3078931636879651e-8,-0.001629160810966706,8.157006448712503e-7,-1.3072446478192921e-8,-0.0016286945140845575,9.051596921306019e-7,-1.2999506114425888e-8,-0.001628245126395128,1.0769022975441644e-6,-1.285960415768863e-8,-0.0016278397306271277,1.3189544201936767e-6,-1.266248230864526e-8,-0.001627498165347806,1.6092434451098838e-6,-1.2426094284497363e-8,-0.0016272305284777825,1.919140067868813e-6,-1.2173739988352222e-8,-0.0016270360259148394,2.2175661941671596e-6,-1.1930728972988056e-8,-0.0016269031154630333,2.475096567993343e-6,-1.1721030329836182e-8,-0.0016268106690123906,2.6677037698851066e-6,-1.1564201830643506e-8,-0.0016267299509751117,2.7800877693262435e-6,-1.1472661493037969e-8,-0.0016266273869119789,2.808609891480967e-6,-1.1449301618478332e-8,-0.0016264683188791577,2.7638226285538478e-6,-1.148545475645509e-8,-0.001626222281076474,2.6722456015579204e-6,-1.1559486532781036e-8,-0.0016258702666007566,2.576093825543154e-6,-1.1637054006801947e-8,-0.001625413368763386,2.528652681956703e-6,-1.1674892793466553e-8,-0.0016248800163113045,2.5829769218688514e-6,-1.163000825805575e-8,-0.0016243264182511817,2.7739410660516134e-6,-1.147422855629942e-8,-0.001623824448257784,3.0994362029174313e-6,-1.1209399713251122e-8,-0.0016234371005962335,3.5125193005639037e-6,-1.0873674286989874e-8,-0.0016231924460283597,3.934280626806754e-6,-1.0531046713794774e-8,-0.0016230722116879442,4.2839261521980505e-6,-1.0247004462157263e-8,-0.0016230223920017024,4.509022315061528e-6,-1.0064052989792204e-8,-0.001622977701628644,4.599308318664541e-6,-9.990503166746648e-9,-0.0016228844735368534,4.580979504172208e-6,-1.0005062897292258e-8,-0.0016227124043607017,4.500425340947215e-6,-1.007001881606373e-8,-0.0016224552660553113,4.4079367639713336E-06,-1.0144494972609784e-8,-0.001622125516269599,4.346659224530802e-6,-1.0193467505461069e-8,-0.001621747326018003,4.347159211571133e-6,-1.0192193851439426e-8,-0.001621350394160166,4.425844840376646e-6,-1.0127472727933714e-8,-0.0016209651093993971,4.585398795260131e-6,-9.99724721593909e-9,-0.001620618755614523,4.816205832030953e-6,-9.809405621898151e-9,-0.0016203324293711152,5.0984795936064065e-6,-9.580037457445881e-9,-0.0016201185778446112,5.4050620808012625e-6,-9.331168050521922e-9,-0.0016199792751218015,5.7049341968223675e-6,-9.087925536625024e-9,-0.0016199055449921847,5.967355112173079e-6,-8.875191668941198e-9,-0.0016198780222882233,6.166231880713312e-6,-8.714053321567563e-9,-0.0016198689897785872,6.284171358720325e-6,-8.618507598772804e-9,-0.0016198456428020592,6.315766071306402e-6,-8.59280112903386e-9,-0.001619774385405621,6.26973000154361e-6,-8.629727496350617e-9,-0.0016196259296935819,6.169525357590731e-6,-8.710169915500509e-9,-0.0016193810015156772,6.052090182629365e-6,-8.804188184311565e-9,-0.0016190363271137104,5.963922429773775e-6,-8.87422587160706e-9,-0.0016186098081281857,5.953407381087274e-6,-8.88131796854117e-9,-0.0016181424573248472,6.058817784323751e-6,-8.794748910421731e-9,-0.0016176935536342239,6.293589642068541e-6,-8.60386918296675e-9,-0.001617326219104022,6.634329004002173e-6,-8.327694536227654e-9,-0.0016170853930605306,7.020289243504353e-6,-8.015286175478002e-9,-0.0016169778930223832,7.370415677596483e-6,-7.732028934152944e-9,-0.0016169675000937544,7.6131522800298654E-06,-7.535643904942126e-9,-0.0016169901136538418,7.713155380487486e-6,-7.454642010804234e-9,-0.0016169800837689205,7.679978347262525e-6,-7.481256003272846e-9,-0.0016168922572558102,7.556948303108508e-6,-7.580374851378752e-9,-0.0016167104555515727,7.400752728903742e-6,-7.706059646917471e-9,-0.0016164437683271215,7.26360821746386e-6,-7.816027752541982e-9,-0.0016161173530747812,7.183346466944154e-6,-7.879724076888564e-9,-0.0016157633104902577,7.180632707092512e-6,-7.880570755501255e-9,-0.0016154140207041772,7.260286490250837e-6,-7.814851788477083e-9,-0.001615098001463881,7.414069548772224e-6,-7.689396067402687e-9,-0.001614837378113596,7.623584166153096e-6,-7.519187049980965e-9,-0.0016146461104334338,7.863038966555796e-6,-7.325110558075486e-9,-0.0016145285922477045,8.102151822196889e-6,-7.13161729702838e-9,-0.0016144786655525626,8.30954750461279e-6,-6.963995681741373e-9,-0.0016144794389958994,8.456851025280304e-6,-6.8450772368244266e-9,-0.0016145044863076245,8.523247037034214e-6,-6.791555454796449e-9,-0.0016145208238440725,8.499790759989043e-6,-6.810504300559879e-9,-0.0016144936330299336,8.392510891781708e-6,-6.896885929710203e-9,-0.001614392228170857,8.223343280763281e-6,-7.032834909617165e-9,-0.0016141963521061268,8.028183732838383e-6,-7.189288356946133e-9,-0.0016139016436967962,7.851860839942969e-6,-7.330101133146092e-9,-0.0016135231106711163,7.740313336524296e-6,-7.4183830864822594e-9,-0.0016130954016894184,7.730606125699386e-6,-7.424519615650904e-9,-0.0016126685428214326,7.840105042654435e-6,-7.334806831697677e-9,-0.0016122981087462733,8.057474208610399e-6,-7.1585873366644e-9,-0.0016120303080747725,8.339676729142519e-6,-6.930579850289531e-9,-0.001611885615787256,8.619402313112867e-6,-6.704899178695777e-9,-0.0016118481928508355,8.824139607217275e-6,-6.539785116730204e-9,-0.001611868604140801,8.90107812285037e-6,-6.477642765675682e-9,-0.001611881154272387,8.835912981377337e-6,-6.529915716142489e-9,-0.0016118277460059921,8.655388821984905e-6,-6.674986610903632e-9,-0.001611675919713035,8.41338736769802e-6,-6.869352972909047e-9,-0.0016114237381993468,8.169993921702883e-6,-7.06452679210035e-9,-0.001611093177231819,7.974354515474472e-6,-7.220908293079042e-9,-0.0016107187721478148,7.856385780125358e-6,-7.3144902295771e-9,-0.0016103373933631776,7.826230747315016e-6,-7.33726541883732e-9,-0.0016099815773490676,7.877830737849756e-6,-7.294288237410739e-9,-0.0016096761674665666,7.993507370107692e-6,-7.199928950656389e-9,-0.0016094369744081014,8.147984768505116e-6,-7.074608444117655e-9,-0.0016092702451640983,8.311598200694667e-6,-6.942216930039938e-9,-0.00160917228355665,8.453152537768642e-6,-6.827830668858108e-9,-0.001609129179254943,8.543077992903146e-6,-6.755189047281374e-9,-0.0016091171262881026,8.557333011262786e-6,-6.743558851885236e-9,-0.0016091041391435737,8.481979668330493e-6,-6.804049103358642e-9,-0.0016090539129368906,8.317618601666572e-6,-6.9360391917084e-9,-0.0016089320065604345,8.082194724983374e-6,-7.1249350615802805e-9,-0.0016087135318696238,7.810443188597418e-6,-7.342654995567478e-9,-0.0016083904469439763,7.548814847622212e-6,-7.551773316743061e-9,-0.0016079759933311404,7.346151109873746e-6,-7.71307892483668e-9,-0.0016075042761180575,7.242056143792723e-6,-7.794939036152872e-9,-0.00160702430711951,7.255973870729432e-6,-7.782022387653911e-9,-0.0016065893832426634,7.380066935880531e-6,-7.680904798184895e-9,-0.0016062439692449664,7.578337494266571e-6,-7.520654677956422e-9,-0.0016060111996290365,7.793284040925081e-6,-7.347429731587253e-9,-0.001605884722251656,7.959699219668078e-6,-7.2134347447406345e-9,-0.0016058284903456366,8.02276170190471e-6,-7.162490523129645e-9,-0.001605786300256652,7.954794950983538e-6,-7.216659725347376e-9,-0.0016056989183379042,7.763856680531235e-6,-7.3693711382787e-9,-0.0016055223349501092,7.489910937153623e-6,-7.5884774454684e-9,-0.0016052394922760655,7.190282869697641e-6,-7.827929734487749e-9,-0.0016048613732839356,6.9214213509586415e-6,-8.042440056461898e-9,-0.0016044191014809085,6.724717813606781e-6,-8.19887721405118e-9,-0.0016039523942876091,6.620315668122966e-6,-8.281210552001504e-9,-0.0016034994404368291,6.608103489245576e-6,-8.289661775609236e-9,-0.00160309058100955,6.672612775449543e-6,-8.236730302719379e-9,-0.0016027456251598608,6.788717605477168e-6,-8.142605180973005e-9,-0.0016024734564696638,6.92643298585074e-6,-8.031328805630021e-9,-0.001602272562723833,7.054461000471735e-6,-7.927975303945096e-9,-0.0016021316395473646,7.1429733909865235e-6,-7.85643420942448e-9,-0.001602030096147785,7.166416618010949e-6,-7.837159326460504e-9,-0.0016019389325304322,7.106967943498292e-6,-7.884384590805072e-9,-0.001601822909317285,6.958748005321464e-6,-8.002733282683978e-9,-0.001601645025670833,6.732028706082511e-6,-8.183846196126166e-9,-0.0016013737843991493,6.455595568760507e-6,-8.404514185145453e-9,-0.0016009923060795966,6.174736476004758e-6,-8.628343547216521e-9,-0.0016005063926833,5.943025935706647e-6,-8.81240660038963e-9,-0.001599947436018963,5.80863970378304e-6,-8.918249717289788e-9,-0.0015993671346443959,5.799343297164342e-6,-8.923895711975885e-9,-0.001598824450917896,5.912206177088279e-6,-8.831981049727163e-9,-0.0015983691261643967,6.112691262219383e-6,-8.670353040535608e-9,-0.001598027750726865,6.34370842368762e-6,-8.484735141405814e-9,-0.001597796970333321,6.541210365541908e-6,-8.32624668865039e-9,-0.0015976453400901444,6.6511270032490696e-6,-8.237927113772566e-9,-0.0015975225826418882,6.642865882163979e-6,-8.244027233433758e-9,-0.0015973733172837778,6.5160674645092064e-6,-8.344671256899067e-9,-0.0015971514460371861,6.299134854850162e-6,-8.517063826659138e-9,-0.0015968312197721644,6.040236787256278e-6,-8.722695998097968e-9,-0.0015964119337554,5.793741677183589e-6,-8.918192024461737e-9,-0.0015959153524303371,5.606512708157547e-6,-9.066246268690955e-9,-0.0015953776009036073,5.508240931702783e-6,-9.143302312759663e-9,-0.0015948390145066778,5.5079279870896205e-6,-9.142302190616902e-9,-0.0015943353730508711,5.595937570596819e-6,-9.07100224242127E-09,-0.0015938924112206762,5.749295724445448e-6,-8.947734194601513e-9,-0.0015935237022038366,5.937745603497693e-6,-8.796600268425784e-9,-0.0015932308952599915,6.128923308494835e-6,-8.643381449495809e-9,-0.0015930050349990598,6.292138592490837e-6,-8.512542405787741e-9,-0.0015928280496299403,6.401112560124816e-6,-8.425039499555748e-9,-0.001592674118163697,6.436402325511549e-6,-8.396358552439093e-9,-0.001592511242825915,6.388162226916735e-6,-8.434284847973138e-9,-0.0015923038548076277,6.259479463662382e-6,-8.536238644079333e-9,-0.0015920175360308354,6.069704190545227e-6,-8.686647143544019e-9,-0.0015916265581974022,5.855945053772369e-6,-8.855809836079169e-9,-0.0015911234432686942,5.66982094337028e-6,-9.002557749844637e-9,-0.0015905271902137126,5.566980643098267e-6,-9.082660120678599e-9,-0.0015898846649755427,5.5901058549402035e-6,-9.062364074658102e-9,-0.0015892607401442954,5.751420421663427e-6,-8.932240034166934e-9,-0.0015887185141690312,6.0241142294602755e-6,-8.713870498328418e-9,-0.0015882979764191441,6.3490168297115175e-6,-8.454426383873467e-9,-0.0015880035039804617,6.654182728757788e-6,-8.211064945180594e-9,-0.0015878052699886624,6.877775058584288e-6,-8.032786882775957e-9,-0.0015876517590710897,6.984489838970192e-6,-7.947450754328946e-9,-0.0015874863779336544,6.971221701182685e-6,-7.957325293941682e-9,-0.0015872619917445506,6.863185748489404e-6,-8.042215733171648e-9,-0.0015869502414554443,6.704200258300083e-6,-8.167230467721707e-9,-0.0015865450265327885,6.544861833301743e-6,-8.292209810873044e-9,-0.001586060881771174,6.431419708027262e-6,-8.380562643969391e-9,-0.0015855275390838218,6.397223103243651e-6,-8.4060105625722e-9,-0.001584982293378186,6.457920516330214e-6,-8.356321717507075e-9,-0.0015844620349776742,6.61081898948137e-6,-8.233749425801078e-9,-0.0015839966677754043,6.837813403661317e-6,-8.052680242552925e-9,-0.0015836049744388627,7.110512974486875e-6,-7.83558877254055e-9,-0.00158329313272495,7.39599782801762e-6,-7.60852007937778e-9,-0.0015830553572955281,7.661943418484884e-6,-7.397063210929995e-9,-0.0015828757453601038,7.88048537908479e-6,-7.223288825216026e-9,-0.0015827305073950087,8.030921094971425e-6,-7.103576255489422e-9,-0.0015825902239223386,8.10175707948008e-6,-7.046953362750228e-9,-0.0015824222470464458,8.09261347207407e-6,-7.0535751904136625e-9,-0.0015821938020142208,8.016239439311893e-6,-7.1131587433406575e-9,-0.001581876678930113,7.90023529461386e-6,-7.203688583790658e-9,-0.0015814541506088944,7.786937005316729e-6,-7.291589958387156e-9,-0.001580929437716428,7.72886735500687e-6,-7.33539011103742e-9,-0.001580332627237802,7.777305469592599e-6,-7.294769075619663e-9,-0.0015797203731629178,7.964409090283794e-6,-7.144630568893987e-9,-0.0015791630814620142,8.285391603077017e-6,-6.889058321940481e-9,-0.001578720878001717,8.692298812053108e-6,-6.566101724486824e-9,-0.001578419502984907,9.10747486170557e-6,-6.2370916464480965e-9,-0.0015782405062512823,9.452091527792786e-6,-5.9641611304561455e-9,-0.0015781312909732138,9.674079549613374e-6,-5.7882606428250385e-9,-0.001578027360075597,9.761402781761969e-6,-5.718703551331627e-9,-0.0015778737449317608,9.738155742011253e-6,-5.736256424581671e-9,-0.0015776373992268053,9.650582774239132e-6,-5.804222309092312e-9,-0.0015773098917586672,9.551555633876995e-6,-5.88077278945436e-9,-0.0015769037319662415,9.488450878456881e-6,-5.928572703455147e-9,-0.001576445875891479,9.49569390768316e-6,-5.920653078048749e-9,-0.001575970674530697,9.591327497139855e-6,-5.84304192231517e-9,-0.0015755133171369835,9.77658865659438e-6,-5.694997471322311e-9,-0.0015751042615903047,1.003778163139329e-5,-5.487458624638412e-9,-0.001574765041689377,1.0349895109118027e-5,-5.240176643150512e-9,-0.0015745057554236149,1.0681318357532525e-5,-4.978030419643896e-9,-0.001574324361526077,1.0998934195309128e-5,-4.727059345412328e-9,-0.0015742076584801335,1.1272847997949395e-5,-4.510760254880358e-9,-0.0015741334933916324,1.148015300643822e-5,-4.347106597166391e-9,-0.0015740736145208995,1.1607546540740536e-5,-4.2464524410951475e-9,-0.0015739967905234456,1.165297766004052e-5,-4.210215818202505e-9,-0.0015738721019847755,1.1626573124438477e-5,-4.230176567081147e-9,-0.0015736725816667494,1.1550994953670337e-5,-4.288272760115865e-9,-0.0015733796828682138,1.1460984868635478e-5,-4.357060355334619e-9,-0.0015729888863822469,1.1400977627530216e-5,-4.401668546947189e-9,-0.001572515654131937,1.1418948321355508e-5,-4.38465144129614e-9,-0.0015719991378984194,1.155499016771094e-5,-4.27489553861985e-9,-0.0015714991590845522,1.1825387317786e-5,-4.059992614526739e-9,-0.0015710820407434478,1.2207971645261938e-5,-3.757587705347629e-9,-0.00157079647604091,1.2639630181296142e-5,-3.4172617851035963e-9,-0.0015706506457699233,1.3034205729014649e-5,-3.106531606911105e-9,-0.0015706061696304065,1.3315507185698884e-5,-2.885049906609442e-9,-0.0015705947849098492,1.3446774868260129e-5,-2.7815199812259615e-9,-0.0015705471798354855,1.3439686701807493e-5,-2.7865797392088607e-9,-0.0015704165589056223,1.3341690442592115e-5,-2.8627232184856177e-9,-0.0015701872847721412,1.3213818456770147e-5,-2.9617956699222407e-9,-0.0015698706765883304,1.3111683729022345e-5,-3.0400379076245207e-9,-0.0015694951802119525,1.3074916344619818e-5,-3.0664473087197053e-9,-0.0015690965559719964,1.3124045477720016e-5,-3.02518922812497E-09,-0.0015687104237655423,1.3261776187223445e-5,-2.914483963298332e-9,-0.0015683672849147719,1.3476135614623932e-5,-2.744017121960997e-9,-0.001568089331561201,1.3744221248213585e-5,-2.531925583923272e-9,-0.001567888481635352,1.4036199389495978e-5,-2.301652902586154e-9,-0.0015677654444036897,1.431949385617295e-5,-2.0787019259425203e-9,-0.001567709854690696,1.4563082634763757e-5,-1.8873090716874538e-9,-0.0015677016010537767,1.474164561397543e-5,-1.7472081474154697e-9,-0.0015677133377832947,1.4839081201440235e-5,-1.6708576042155112e-9,-0.0015677139033290711,1.4850945784761677e-5,-1.6615071481920558e-9,-0.001567672273456403,1.4785614343760266e-5,-1.712298071717079e-9,-0.001567561728035762,1.4664077909571058e-5,-1.8064872373507266e-9,-0.001567363964362006,1.4518342278869283e-5,-1.9188087740274477e-9,-0.0015670730416101715,1.4388371092908044e-5,-2.017975036911366e-9,-0.001566699009351379,1.4317124795163991e-5,-2.0706086887569183e-9,-0.001566270342050259,1.434288706438812e-5,-2.0471994116831762e-9,-0.0015658331609196012,1.4488670512990482e-5,-1.9302484376469083e-9,-0.0015654445000836176,1.4750408147840926e-5,-1.72331580198987e-9,-0.0015651576376926135,1.5088818242514955e-5,-1.4572399696723894e-9,-0.0015650016611725502,1.543273520838367e-5,-1.1875289074112136e-9,-0.0015649646525930018,1.5699315031914638e-5,-9.786981777112633e-10,-0.0015649932080395524,1.5825615668091956e-5,-8.797288461446118e-10,-0.0015650127561441629,1.5794360168681763e-5,-9.039460652179229e-10,-0.0015649578766231919,1.5637909598140213e-5,-1.0258340424130335e-9,-0.0015647946888691952,1.5419919015121727e-5,-1.1953572908828253e-9,-0.001564525408102832,1.5208671664966406e-5,-1.3589165068917122e-9,-0.0015641786040441487,1.5056893076463547e-5,-1.4752664574075088e-9,-0.00156379486909857,1.4993534545273575e-5,-1.521981552315444e-9,-0.0015634150399108117,1.5024788854757072e-5,-1.4945831313107964e-9,-0.0015630731490801214,1.5139317110787819e-5,-1.4023153307767539e-9,-0.0015627932503844573,1.5314097884522007e-5,-1.2634546568637839e-9,-0.0015625884467632353,1.5519419283943223e-5,-1.1013546330723007e-9,-0.001562460875346721,1.5722949233932406e-5,-9.412785609553453e-10,-0.0015624021479970563,1.5893311969822037e-5,-8.076525173200512e-10,-0.0015623942663999986,1.600355815982286e-5,-7.213957276926135e-10,-0.0015624113087739449,1.603464562664121e-5,-6.972120092446669e-10,-0.0015624222244725121,1.5978599480086515e-5,-7.411073308205331e-10,-0.0015623947894483653,1.5840685366149302e-5,-8.486840929629714e-10,-0.0015623003825704094,1.563995164582476e-5,-1.0047498832725248e-9,-0.00156211896716867,1.5407677934949402e-5,-1.1846143530044873e-9,-0.0015618434715127026,1.5183522199556461e-5,-1.3572122413585078e-9,-0.001561482731818114,1.5009579708722523e-5,-1.4898312300154014e-9,-0.0015610623229379093,1.492287455651844e-5,-1.553978673492256e-9,-0.0015606225925568506,1.4946887881331915e-5,-1.5318866836714567e-9,-0.001560212971251659,1.5083203136375069e-5,-1.422837639342225e-9,-0.0015598818401117295,1.530556706953706e-5,-1.2475983890907835e-9,-0.0015596626235708532,1.5560011265301256e-5,-1.0482226412439358e-9,-0.001559559627593272,1.577486934926789e-5,-8.802955933378288e-10,-0.0015595405570984476,1.5881538273988095e-5,-7.9692043926817e-10,-0.0015595430360532403,1.5839771966023374e-5,-8.291538101517867e-10,-0.0015594959955338393,1.5654660779172335e-5,-9.72801001056983e-10,-0.0015593463001946208,1.5374391353418983e-5,-1.190114515735307e-9,-0.0015590762116928854,1.5069709060576866e-5,-1.4258030022227316e-9,-0.001558703847788798,1.4807611900845037e-5,-1.6276153266680996e-9,-0.0015582703547364113,1.4632787290015397e-5,-1.7608768873779355e-9,-0.00155782354477752,1.4561962806159921e-5,-1.812864234105201e-9,-0.0015574055106049006,1.4587994709651823e-5,-1.7895075593158592e-9,-0.0015570463687551211,1.4687835068240819e-5,-1.7090593224017948e-9,-0.0015567627265973315,1.4830172836249719e-5,-1.5960694700656643e-9,-0.0015565585721585488,1.4981143223910987e-5,-1.4769346528028385e-9,-0.0015564268779924705,1.5108248878273527e-5,-1.3768878228299211e-9,-0.001556351184307716,1.5183283689987646e-5,-1.3177718726983572e-9,-0.0015563071846080817,1.518499355836712e-5,-1.3159931882651027e-9,-0.001556264759061091,1.5101840586844419e-5,-1.3803631127402186e-9,-0.0015561910289953722,1.493467497760959e-5,-1.5099983155967233e-9,-0.001556054769142461,1.4698525876528096e-5,-1.692928407678446e-9,-0.0015558319325716652,1.4422419435365395e-5,-1.9062865699394374e-9,-0.00155551134062967,1.4146276673803998e-5,-2.118820791349384e-9,-0.0015550990200105716,1.3914554215767493e-5,-2.2959501362179986e-9,-0.0015546195256492723,1.376733680242155e-5,-2.406755127218841e-9,-0.001554113115567492,1.3730683214261952e-5,-2.4314473667369036e-9,-0.001553628664032215,1.3808584379673326e-5,-2.367474165297039e-9,-0.0015532132442453931,1.3978822784027847e-5,-2.232532482775318e-9,-0.0015529002123789554,1.4194626461009348e-5,-2.063117347756414e-9,-0.0015526985302697924,1.439325938164884e-5,-1.907804521574992e-9,-0.0015525869004329388,1.4511149461068737e-5,-1.8155962076796212e-9,-0.0015525163561113226,1.4502518791870292e-5,-1.821618126894051e-9,-0.0015524229966605255,1.4355340596169604e-5,-1.934861536785402e-9,-0.0015522480046320417,1.4097085782131253e-5,-2.1337720574238567e-9,-0.0015519570630758844,1.3785964147240603e-5,-2.373056019133126e-9,-0.0015515502090884452,1.3490805690072358e-5,-2.5993134735632945e-9,-0.0015510581583219735,1.3269136012428824e-5,-2.7680732374480753e-9,-0.0015505287216183647,1.3153018247135854e-5,-2.8547493909096727e-9,-0.0015500111337097319,1.3146302784594268e-5,-2.8566824400189927e-9,-0.0015495446374244918,1.3230505435768768e-5,-2.788469542937826e-9,-0.001549153320614908,1.3373991814169866e-5,-2.6747740927702085e-9,-0.0015488458317407083,1.3540368315253085e-5,-2.543818936185515e-9,-0.0015486175736199625,1.3694424215569561e-5,-2.422826603784886e-9,-0.0015484534953238353,1.3805782453544893e-5,-2.335244042665086e-9,-0.0015483305799586244,1.3851194736815257e-5,-2.2989915178837034e-9,-0.0015482199989999771,1.3816427644258473e-5,-2.3249912029369815e-9,-0.001548089463216438,1.369826171317471e-5,-2.41558809311908e-9,-0.0015479064843226234,1.3506495043573231e-5,-2.5629790637511724e-9,-0.0015476430650823826,1.3265142070830212e-5,-2.748308110889761e-9,-0.0015472817047777522,1.3011433188873347e-5,-2.9425170054115522e-9,-0.0015468215378123499,1.2791153939947237e-5,-3.1100615838046316e-9,-0.0015462823008519895,1.264978126784404e-5,-3.2158634430605283e-9,-0.0015457034820694632,1.2620793299373853e-5,-3.23437207800151e-9,-0.0015451371557708795,1.271461979911524e-5,-3.1580199349164043e-9,-0.0015446354809309358,1.2912598720449401e-5,-3.001718234269623e-9,-0.0015442364302565255,1.3169086681883902e-5,-2.801040276875315e-9,-0.0015439524938185769,1.342193894043896e-5,-2.604019123633512e-9,-0.0015437662068975597,1.3608488064402962e-5,-2.4588197532468753e-9,-0.0015436340713854192,1.3682357584886e-5,-2.4008622169249547e-9,-0.001543497962354699,1.3626252232787606e-5,-2.4430807619033354e-9,-0.00154330101649021,1.3456844397511336e-5,-2.572263294225788e-9,-0.0015430034083978895,1.3219882326718478e-5,-2.7529027871083723e-9,-0.0015425929181858147,1.2976711436722279e-5,-2.937645646025132e-9,-0.0015420866882192013,1.278670592403656e-5,-3.080856310691857e-9,-0.00154152398796979,1.2691851204048305e-5,-3.1504613502583297e-9,-0.001540953480044075,1.2708519035282108e-5,-3.1341863973903237e-9,-0.0015404202334010281,1.2827867903263539e-5,-3.039126457904035e-9,-0.0015399566733843208,1.302256759212801e-5,-2.886485245993735e-9,-0.0015395788942260255,1.325586308652444e-5,-2.7045866919813093e-9,-0.0015392872954454852,1.3489692472678766e-5,-2.5226746116671805e-9,-0.0015390695180788213,1.3690362719305401e-5,-2.3666060094382767e-9,-0.0015389039426561332,1.3831829101966165e-5,-2.2563601055744896e-9,-0.0015387628159656927,1.3897428531583792e-5,-2.20469239650718e-9,-0.0015386148936828994,1.388103058929039e-5,-2.2162086122068876e-9,-0.0015384280799308537,1.3788188762037226e-5,-2.28644706084773e-9,-0.0015381727896268602,1.3637252599749298e-5,-2.4010335015984904e-9,-0.00153782662638598,1.3459685165893791e-5,-2.5355047694054314e-9,-0.0015373803606947806,1.3298103454663454e-5,-2.6569224773298658e-9,-0.0015368439449366434,1.3200271754010526e-5,-2.7285944715443808e-9,-0.0015362497069414172,1.3208268582747388e-5,-2.7184455758695063e-9,-0.0015356491281297727,1.3344727868614513e-5,-2.609535624585385e-9,-0.0015351012857119798,1.3601376685119754e-5,-2.4087144532296773e-9,-0.001534655333305587,1.3936432395579682e-5,-2.1484399499017215e-9,-0.0015343338675460306,1.4284442308400234e-5,-1.8790986065537597e-9,-0.001534124900712501,1.4575769360907748e-5,-1.6540268609434805e-9,-0.001533986063403117,1.4757650849527079e-5,-1.5134089313619608e-9,-0.0015338585577077514,1.4808523097929115e-5,-1.4733758294952858e-9,-0.001533684646016743,1.4741520547899112e-5,-1.5234227094639102e-9,-0.001533422629589494,1.4597945041350879e-5,-1.6315309243635806e-9,-0.0015330556633583313,1.4434363097761433e-5,-1.7541719141681908e-9,-0.0015325932941699795,1.43077142414427e-5,-1.8477863331828831e-9,-0.0015320665277323265,1.426230754346835e-5,-1.878725396982042e-9,-0.0015315185461519663,1.4321473573738102e-5,-1.8295328556822685e-9,-0.001530993934766879,1.4485180350014558e-5,-1.7006180859558923e-9,-0.001530529287402824,1.4733246178698408e-5,-1.5076755247691595e-9,-0.0015301472235543963,1.5032273750256648e-5,-1.2763383865137975e-9,-0.001529854434526647,1.5343751423442615e-5,-1.0360201232972493e-9,-0.0015296430494533845,1.5631173065596047e-5,-8.145421075795626e-10,-0.0015294939224596445,1.5865044960165455e-5,-6.343581941131169e-10,-0.0015293804665335667,1.6025681201232713e-5,-5.104211518947967e-10,-0.0015292721800424954,1.6104406698012555e-5,-4.492264661427397e-10,-0.0015291376898846022,1.610398838942385e-5,-4.484456737093128e-10,-0.0015289476443276155,1.6038826092304203e-5,-4.967851368558057e-10,-0.0015286780300962212,1.5934920116292352e-5,-5.7407767303816e-10,-0.0015283144581671828,1.5828995706173513e-5,-6.520649957069123e-10,-0.001527857433495814,1.5765420962771622e-5,-6.968641554284709e-10,-0.0015273273599870595,1.578919190086431e-5,-6.74377333345776e-10,-0.001526766307082904,1.5934197950098757e-5,-5.592021348606761e-10,-0.0015262325434225242,1.6208917896855537e-5,-3.454009983392546e-10,-0.0015257856016340661,1.6585900155219326e-5,-5.434009904032178e-11,-0.001525465322369261,1.7003376453317625e-5,2.6667254099619e-10,-0.0015252747715500247,1.738282006332563e-5,5.577945753003107e-10,-0.0015251774516648478,1.765614484759572e-5,7.673293029466002e-10,-0.0015251111941016761,1.778888314628154e-5,8.693422948032573e-10,-0.0015250108675460873,1.7788373699605145e-5,8.698678813149482e-10,-0.0015248284104435656,1.769597096092772e-5,8.008933904221264e-10,-0.001524543138352943,1.7570342537972436e-5,7.074837082249667e-10,-0.001524161958697962,1.747014596631279e-5,6.344307222398109e-10,-0.00152371290844506,1.7441141511317046e-5,6.163780060845438e-10,-0.001523235851785127,1.7509215448337496e-5,6.72585413499027e-10,-0.0015227730669315363,1.7678694633934106e-5,8.058200670495614e-10,-0.0015223612736943114,1.7934688640477055e-5,1.0043203383510617e-9,-0.0015220259505717274,1.82482101335355e-5,1.2458005545171251e-9,-0.0015217783771147274,1.858278154644696e-5,1.502482588468059e-9,-0.0015216153779278,1.8901176203271382e-5,1.7461563926156706e-9,-0.001521521286606779,1.9171184850908933e-5,1.9524855806838318e-9,-0.0015214713531420381,1.936973086375099e-5,2.1040967574472464e-9,-0.0015214357043695024,1.9485117407839795e-5,2.1923000740043392e-9,-0.001521383137404215,1.9517692447771478e-5,2.217627952739704e-9,-0.0015212844821984616,1.9479511468266107e-5,2.1895835175049778e-9,-0.0015211156742934025,1.939342867657197e-5,2.1258913140746853e-9,-0.0015208608563400331,1.9291673965034527e-5,2.0512979780619082e-9,-0.001520515854495682,1.9213505125941906e-5,1.995657851135691e-9,-0.0015200919884612346,1.9200901897949216e-5,1.9905876211772794e-9,-0.0015196190517206686,1.9290978781291798e-5,2.0637415938522103e-9,-0.001519144803733725,1.9504713196396947e-5,2.2304122471037216e-9,-0.001518727462232059,1.9834280591372538e-5,2.484141135478913e-9,-0.0015184192950395239,2.0235367514319987e-5,2.7910634415758664e-9,-0.0015182452262433325,2.0633099952696904e-5,3.0944338572009063e-9,-0.0015181877354138221,2.094520859440517e-5,3.3320858875781925e-9,-0.0015181899043198905,2.1113683302729238e-5,3.4603240998125803e-9,-0.0015181776587180065,2.1127106051478163e-5,3.4708520228233463e-9,-0.0015180885131474918,2.1021030404410242e-5,3.391091106264991e-9,-0.0015178909438639508,2.0859213783789e-5,3.2698730446144373e-9,-0.0015175877233646422,2.0709171992738493e-5,3.1587082248994756e-9,-0.0015172073558787026,2.0623842481949752e-5,3.0977101310951086e-9,-0.0015167914191089214,2.063317965218757e-5,3.109204821067375e-9,-0.0015163832619076432,2.0743705953134367e-5,3.1975368071754336e-9,-0.0015160200669873704,2.0942485608743105e-5,3.3523023756736195e-9,-0.0015157281682930876,2.1202788343014117e-5,3.5528268410564887e-9,-0.0015155208240000008,2.1490072546112796e-5,3.7727761422749006e-9,-0.0015153978329193042,2.1767775800983042e-5,3.984512020996164e-9,-0.0015153466823297202,2.2002561279956053e-5,4.162975427671088e-9,-0.0015153449752000046,2.2168662578104594e-5,4.2888951154383054e-9,-0.0015153638372301824,2.225102728825126e-5,4.351136659371982e-9,-0.001515371889179471,2.2246993016359994e-5,4.3479874066622305e-9,-0.0015153392563930425,2.216641597337143e-5,4.287271959233951e-9,-0.001515241213541778,2.2030490914074532e-5,4.1854284582402095e-9,-0.0015150613338686283,2.1869574703626888e-5,4.065761994294679e-9,-0.0015147941551076818,2.1720147110229897e-5,3.956004055400928e-9,-0.0015144474064621842,2.1620798118500058e-5,3.885163322724043e-9,-0.0015140436280418352,2.160676344805545e-5,3.879380610579873e-9,-0.0015136202312386242,2.1702388771875214e-5,3.956357484574458e-9,-0.001513226034844196,2.191177437422689e-5,4.1185205826258535e-9,-0.0015129120080209172,2.221001677650227e-5,4.346649078495528e-9,-0.001512715541928629,2.254041791686142e-5,4.597890678761155e-9,-0.001512642323751254,2.282451516198137e-5,4.8132638236435735e-9,-0.001512656112032841,2.2987226657755368e-5,4.936448725917021e-9,-0.0015126871339836351,2.2987814401065566e-5,4.937036368579893e-9,-0.0015126589666124984,2.283832816494508e-5,4.824488181507253e-9,-0.0015125191642603442,2.2596939508072832e-5,4.643164810446097e-9,-0.001512255771697461,2.234135481963672e-5,4.452159952580022e-9,-0.0015118937115124553,2.2139907404171068e-5,4.303255975411923e-9,-0.00151147883232571,2.203443093930126e-5,4.227845582902372e-9,-0.001511060993239207,2.2037202305538674e-5,4.234671953457867e-9,-0.0015106824975225093,2.213657085421608e-5,4.314282868663287e-9,-0.0015103725536317254,2.2305348342064856e-5,4.4455958177446396e-9,-0.001510145935250769,2.2508543748264166e-5,4.601885979825811e-9,-0.0015100037941396729,2.27093975733727e-5,4.75536669510632e-9,-0.0015099353530227085,2.2873996336669858e-5,4.880600371514767e-9,-0.0015099200916151164,2.2974973370313923e-5,4.957188134048892e-9,-0.0015099304637137257,2.2994496007904244e-5,4.971952359005194e-9,-0.0015099352286913673,2.2926461766264454e-5,4.920579998432417e-9,-0.0015099033645110472,2.277759522000927e-5,4.808472749402745e-9,-0.0015098082535331882,2.256704567886276e-5,4.650450638927179e-9,-0.0015096316019525189,2.2324318804894625e-5,4.469136915658275e-9,-0.0015093665766133704,2.208567924099814e-5,4.2921241199986e-9,-0.0015090197629728298,2.1889299652124044e-5,4.148176635499323e-9,-0.0015086116448405531,2.1769507934527783e-5,4.062815296740895e-9,-0.0015081753500045245,2.1750466832938717e-5,4.05360291565382e-9,-0.0015077531763032308,2.183960388547096e-5,4.125383508132904e-9,-0.0015073900399322092,2.202167990402843e-5,4.2660809956394935e-9,-0.0015071232263286609,2.225573764208077e-5,4.44462415416496e-9,-0.0015069693776782423,2.2478572667533146e-5,4.6136193435732875e-9,-0.0015069127900212765,2.261830809440704e-5,4.719430802140069e-9,-0.0015069025568193628,2.2617773461514468e-5,4.719545121206075e-9,-0.0015068654430890603,2.2459193836491986e-5,4.601005606662283e-9,-0.001506732732291867,2.2175454413684737e-5,4.388897633440769e-9,-0.0015064676102254564,2.1838262916960467e-5,4.1374773793336535e-9,-0.0015060770908259737,2.152899176668202e-5,3.9081543995164606e-9,-0.0015056034531821725,2.130964096087466e-5,3.747499605308365e-9,-0.0015051039831142801,2.120817745888039e-5,3.67616765940978e-9,-0.0015046318558587788,2.121994692951462e-5,3.6900798243215312e-9,-0.0015042251268647423,2.1317953608248667e-5,3.768369282876351e-9,-0.0015039036630436163,2.1464388035088392e-5,3.88222893943776e-9,-0.0015036707819547192,2.1619516091843104e-5,4.001665844105285e-9,-0.0015035165886605325,2.1747302655433718e-5,4.099689013291884e-9,-0.00150342132600212,2.1818716266063703e-5,4.154695925069204e-9,-0.001503358325448771,2.1813879500024203e-5,4.1519986156729824e-9,-0.0015032968462424501,2.1723736492507323e-5,4.08503905892022e-9,-0.0015032052341075262,2.155133538091197e-5,3.956368101994074e-9,-0.0015030546872407823,2.1312355770057032e-5,3.778071180337243e-9,-0.0015028235326783174,2.103420332333634e-5,3.5710789610787957e-9,-0.0015025013887804367,2.075307806093682e-5,3.362886440108658e-9,-0.0015020922453497882,2.0508886287330707e-5,3.183598559287639e-9,-0.0015016154742786625,2.0338452391119222e-5,3.0607104114683997e-9,-0.0015011040515861569,2.0268076034948164e-5,3.0134867470089806e-9,-0.001500599804274013,2.030688168146457e-5,3.04807733049152e-9,-0.0015001460726057133,2.044239395900025e-5,3.154424023362247e-9,-0.00149977856352969,2.0639604039527855e-5,3.305819021705255e-9,-0.0014995156172464786,2.0844817059723325e-5,3.461959279396227e-9,-0.0014993500137638414,2.0995399978085027e-5,3.576249789876038e-9,-0.0014992456432738306,2.1035335583678028e-5,3.60729449457631e-9,-0.0014991428844553212,2.0933644184201608e-5,3.532476786791916e-9,-0.0014989745730104767,2.0698804268457708e-5,3.3586078624101303e-9,-0.0014986888360896111,2.0380406021878866e-5,3.1231135922833585e-9,-0.0014982686733544998,2.0053717417477414e-5,2.88245886837212e-9,-0.001497737525690711,1.979300837962255e-5,2.692135997911263e-9,-0.001497148017881539,1.9647196210900128e-5,2.588415637713842e-9,-0.0014965613991866607,1.9629093705834248e-5,2.5803785904338805e-9,-0.0014960289411646245,1.971968706434261e-5,2.653283174951249e-9,-0.0014955820412908304,1.9880736800477454e-5,2.778157555940626e-9,-0.0014952309905867504,2.006787897714019e-5,2.9216817011335566e-9,-0.0014949687552116315,2.0239968863611068e-5,3.053154202397362e-9,-0.001494776174475137,2.0364131096063462e-5,3.1481831138080597e-9,-0.0014946265704327824,2.0417849223123522e-5,3.1901577490234746e-9,-0.0014944892845262566,2.038968095963877e-5,3.170735822070018e-9,-0.001494332545660484,2.0279629489477603e-5,3.090127645122555e-9,-0.0014941263545837618,2.009946410020862e-5,2.957370145196969e-9,-0.0014938459444002585,1.9872625600314708e-5,2.7902699955053625e-9,-0.0014934759328347927,1.9632856641228426e-5,2.614335134584265e-9,-0.0014930145655336932,1.9420569813598002e-5,2.4599538294097267e-9,-0.001492476702076429,1.9276431553751654e-5,2.3574741074222654e-9,-0.001491893815555032,1.923270705234934e-5,2.3306640563010123e-9,-0.0014913096645020614,1.930428755097455e-5,2.3900526656468323e-9,-0.0014907716135890666,1.9482318555866433e-5,2.5283426168944e-9,-0.0014903193643921373,1.973316438958572e-5,2.7198781518158167e-9,-0.0014899741448074898,2.0003956799043533e-5,2.9249937542774248e-9,-0.0014897315523588778,2.023395845028581e-5,3.098573729705269e-9,-0.0014895604078392077,2.036929696434408e-5,3.200967785115278e-9,-0.0014894086578894246,2.0377579597678796e-5,3.2087039570247428e-9,-0.0014892158047863976,2.0258385868426954e-5,3.122098731804692e-9,-0.001488929416536435,2.00457625312811e-5,2.9669485121319134e-9,-0.0014885210657221955,1.9800292408669174e-5,2.7885218058526498e-9,-0.0014879957071757151,1.9591794282292342e-5,2.6386436925550972e-9,-0.0014873899746012964,1.9478359809753334e-5,2.5601312681883347e-9,-0.0014867596618360918,1.949011570768919e-5,2.5748323704033555e-9,-0.0014861620498762876,1.96239922223134e-5,2.6799132147527057e-9,-0.0014856407320978139,1.9849868774778618e-5,2.8525944425785092e-9,-0.0014852179082245765,2.0123138972227992e-5,3.0595746869390322e-9,-0.001484894404555705,2.0397436089605455e-5,3.266468246613373e-9,-0.0014846544662120268,2.063358248057847e-5,3.444366312054756e-9,-0.0014844719149976677,2.080401172999627e-5,3.573026893968126e-9,-0.0014843155256631664,2.089389600951698e-5,3.6416569247405195e-9,-0.0014841529717873015,2.0900677734307805e-5,3.6485643076621275e-9,-0.0014839536957402732,2.083324538196875e-5,3.6005774495059056e-9,-0.0014836914694317035,2.0711220588510544e-5,3.5125354304605184e-9,-0.0014833473561297718,2.0564086382282243e-5,3.406608295349423e-9,-0.0014829133688975399,2.0429297886048457e-5,3.3108019367196984e-9,-0.0014823963710327067,2.0348185310062236e-5,3.25579730356668E-09,-0.0014818207428450856,2.0358734524199104e-5,3.269510016130022e-9,-0.0014812274772494347,2.048563738802864e-5,3.369725367338494e-9,-0.0014806675693328044,2.0730221397913308e-5,3.556767697544755e-9,-0.0014801896123771137,2.106481501301274e-5,3.809538836492915e-9,-0.0014798249253679303,2.143590416769047e-5,4.088059593597637e-9,-0.0014795761455542354,2.177709692752412e-5,4.3431788306475135e-9,-0.0014794146511569793,2.202796158292254e-5,4.530508461441201e-9,-0.0014792883061481331,2.21516328538685e-5,4.623353141774396e-9,-0.0014791364524373138,2.2144870224967428e-5,4.620002061129199e-9,-0.001478906684187595,2.203791530288745e-5,4.543444647931511e-9,-0.0014785683235115793,2.1885258092804413e-5,4.434360357647662e-9,-0.0014781193401062422,2.1750689691606835e-5,4.339933827235743e-9,-0.0014775854795386373,2.169092982823376e-5,4.3017291032046366e-9,-0.001477012299802205,2.1742145708306606e-5,4.345842348530162e-9,-0.0014764526498468376,2.191281179061359e-5,4.477843345187745e-9,-0.0014759534363243591,2.2184454181331846e-5,4.683549499194312e-9,-0.0014755455960484022,2.2519217855883682e-5,4.93475027814799e-9,-0.0014752396898019221,2.2870962823821085e-5,5.1974073013490225e-9,-0.0014750271342094889,2.3195958122338928e-5,5.439457561441334e-9,-0.0014748851544931095,2.3460421517391652e-5,5.636259530417908e-9,-0.0014747829673421675,2.3644120169039524e-5,5.773169265596725e-9,-0.001474687320693333,2.374080291527646e-5,5.845840169919798e-9,-0.0014745666070528286,2.3756880234768512e-5,5.859274017653767e-9,-0.0014743937130802754,2.370958754850038e-5,5.826487086509059e-9,-0.0014741482569230124,2.3625217663658505e-5,5.767179828898929e-9,-0.001473818894785108,2.353730629244631e-5,5.7063097259063755e-9,-0.0014734060778071696,2.3484074946004946e-5,5.672082995091509e-9,-0.001472924981874492,2.3504008874457454e-5,5.692603170476783e-9,-0.0014724072644037177,2.3628534088270373e-5,5.790480507708103e-9,-0.0014718991918354172,2.387197597384268e-5,5.975569281186334e-9,-0.0014714535304005726,2.422153315886059e-5,6.2378093646216116e-9,-0.0014711147480171334,2.463284924493281e-5,6.5441791770475725e-9,-0.0014709018005976526,2.5037149761910478e-5,6.844044438239558e-9,-0.0014707971735682401,2.5361087416693702e-5,7.08371765685339e-9,-0.0014707499231823534,2.5551998946229314e-5,7.224937628064112e-9,-0.0014706928556039132,2.559617122586235e-5,7.2582251778159335e-9,-0.0014705654035565266,2.5521412187611647e-5,7.204692681405604e-9,-0.0014703314954858874,2.5384704814681434e-5,7.106814374546921e-9,-0.001469986538679709,2.5252782134341083e-5,7.013936096625625e-9,-0.0014695540981764408,2.5183955143550453e-5,6.968766442288963e-9,-0.0014690762900327096,2.5215950258180403e-5,6.998456432120111e-9,-0.0014686020708823385,2.5360870206104967e-5,7.1110940673169154e-9,-0.001468176386598783,2.5606318665205407e-5,7.296811789583651e-9,-0.001467831922902369,2.592100301791191e-5,7.532134484148677e-9,-0.0014675843884544473,2.6263002803544234e-5,7.786145194716698e-9,-0.0014674316308986469,2.6588795756606222e-5,8.027060457500164e-9,-0.0014673561469447757,2.6861167542429433e-5,8.22790296065784e-9,-0.001467329858105644,2.7054651629686617e-5,8.370365121482301e-9,-0.0014673197245071011,2.7158013293985568e-5,8.446566196624374e-9,-0.0014672929285562525,2.717410966689769e-5,8.458950180331899e-9,-0.0014672208834997042,2.7118011201820044e-5,8.4189307986924e-9,-0.0014670820001531884,2.7014370775278294e-5,8.34495143072538e-9,-0.0014668636033767842,2.6894642929169563e-5,8.260369284515231e-9,-0.0014665634811135814,2.6794222102966245e-5,8.19123024785904e-9,-0.0014661914098972825,2.674909228562432e-5,8.163696466874626e-9,-0.001465770520724381,2.679114846664634e-5,8.200590836488431e-9,-0.001465337400999473,2.6941364730020337e-5,8.316505230393117e-9,-0.0014649388274165344,2.720105595585084e-5,8.511638713086152e-9,-0.0014646228477321868,2.7543744071366404e-5,8.766111014759959e-9,-0.0014644237187200332,2.791300341092992e-5,9.03854416039646e-9,-0.001464344966501293,2.8232690622237343e-5,9.273507511061049e-9,-0.00146435037296069,2.8431059296295023e-5,9.418980704214775e-9,-0.0014643722903750673,2.8469546292426055e-5,9.447272055057291e-9,-0.0014643365365555757,2.835968319109381e-5,9.367378735882624e-9,-0.0014641906956874835,2.8157374663821298e-5,9.220801767421116e-9,-0.0014639203699168175,2.793907130398366e-5,9.063972153156974e-9,-0.001463547743641747,2.777469392086682e-5,8.94819704622287e-9,-0.0014631181589848093,2.770971394278009e-5,8.906400483072525e-9,-0.0014626840013922983,2.7759615661242276e-5,8.949152904876544e-9,-0.0014622919778576426,2.7913376841285792e-5,9.067487925009645e-9,-0.0014619755187329977,2.8141209895819113e-5,9.238874894232356e-9,-0.0014617515941158011,2.840319839203045e-5,9.43374255358404e-9,-0.0014616206414562979,2.8657228590944903e-5,9.621316724398479e-9,-0.0014615686117483452,2.88656511750599e-5,9.77438646312151e-9,-0.0014615705063021332,2.9000359578134314e-5,9.872855466969257e-9,-0.0014615948598680729,2.9046009835060456e-5,9.905967029354836e-9,-0.001461608579480747,2.900124632155569e-5,9.873148682283592e-9,-0.0014615815016667387,2.8877991973552452e-5,9.783504838835818e-9,-0.001461490094774729,2.86991569091944e-5,9.65415693656674e-9,-0.0014613200429391873,2.8495379357004293e-5,9.507823393054517e-9,-0.0014610677949529376,2.8301325099769305e-5,9.370010304543687e-9,-0.0014607412749224225,2.8151769243240655e-5,9.266016170060544e-9,-0.001460359934266054,2.807741831222614e-5,9.217802419101563e-9,-0.001459954104262802,2.810012125881796e-5,9.240548810429125e-9,-0.0014595629027557774,2.8227079611997363e-5,9.338632920695437e-9,-0.001459229207373408,2.8444570378339046e-5,9.501348366973721e-9,-0.0014589903312328463,2.8713478214577256e-5,9.699906185659169e-9,-0.0014588646330113623,2.8970928160528702e-5,9.888704607981145e-9,-0.0014588380390138703,2.9143000527045176e-5,1.0014441084658272e-8,-0.0014588592510678298,2.916941323267889e-5,1.0033827086917958e-8,-0.0014588523821274818,2.9030953044343186e-5,9.933409035109415e-9,-0.0014587456644553276,2.8762477106263568e-5,9.739062259576716e-9,-0.001458501091057045,2.844024437257861e-5,9.506799999855063e-9,-0.001458127143420008,2.8150315430128008e-5,9.299622484807696e-9,-0.001457669435461303,2.7957472722960843e-5,9.164649386359438e-9,-0.0014571891196582215,2.788982620398424e-5,9.12181556433836e-9,-0.001456742655817562,2.7940470402478702e-5,9.1652351867303225E-09,-0.0014563700347164715,2.807848674258035e-5,9.271524962474886e-9,-0.0014560912588836175,2.826144010513699e-5,9.409190716108027e-9,-0.0014559078903742333,2.8445360201978687e-5,9.546033498517481e-9,-0.0014558067229891146,2.859145029300421e-5,9.65399985693406e-9,-0.0014557639343839687,2.867025540336573e-5,9.712068997365372e-9,-0.0014557492065120391,2.8664138594720785e-5,9.707890097359682e-9,-0.0014557298001960863,2.8568493551007577e-5,9.638560286519974e-9,-0.0014556745936851589,2.839177608483774e-5,9.510625422205857e-9,-0.0014555579370875656,2.815423714782051e-5,9.339183329667601e-9,-0.0014553629537277198,2.788526924195518e-5,9.14595894628804e-9,-0.0014550838573302906,2.7619586166606147e-5,8.95646433151999e-9,-0.0014547270310782067,2.7392671032165182e-5,8.796565507284847e-9,-0.0014543107698863327,2.7235881381529104e-5,8.688803061502544e-9,-0.0014538636547068316,2.7171559156514596e-5,8.648806078255112e-9,-0.0014534215710303232,2.7208440099601352e-5,8.68207399305285e-9,-0.001453023162629078,2.7337595874378007e-5,8.781285876904159e-9,-0.0014527031545351094,2.7529636906441165e-5,8.924571639210088e-9,-0.0014524833008458392,2.7735059993107925e-5,9.075970709988018e-9,-0.0014523621957538728,2.7890571544417234e-5,9.19001842577633e-9,-0.0014523077282724134,2.793379091660291e-5,9.22219677030714e-9,-0.0014522585937687897,2.7825223830983982e-5,9.144582317840528e-9,-0.0014521403795198652,2.7569149189017554e-5,8.960821255109384e-9,-0.001451893505617349,2.7219493141957345e-5,8.71038541518176e-9,-0.0014514989868257015,2.6862149989671336e-5,8.455773632611902e-9,-0.0014509858377754307,2.6581283086955036e-5,8.257991564297597e-9,-0.0014504161415827162,2.642918854125528e-5,8.154588223766253e-9,-0.0014498591074915373,2.6414918608475404e-5,8.151437565096828e-9,-0.0014493694267968629,2.6511849721997745e-5,8.228438049517682e-9,-0.001448977429522189,2.667403387196817e-5,8.351639483937653e-9,-0.0014486894408670674,2.6851542282472955e-5,8.484552463610772e-9,-0.0014484932417684118,2.700055872143433e-5,8.595494996252945e-9,-0.0014483645278005612,2.7088384874182358e-5,8.661115546099852e-9,-0.0014482724252906584,2.709519725146361e-5,8.667505390416874e-9,-0.0014481837922433506,2.7014246607076915e-5,8.610209915657879e-9,-0.0014480667630384213,2.6851367625677863e-5,8.493819386236972e-9,-0.0014478939985973695,2.6623968239600285e-5,8.331252341426477e-9,-0.0014476458307236476,2.635924813759418e-5,8.142498231074953e-9,-0.00144731311061095,2.6091231865376743e-5,7.952456649511876e-9,-0.0014468992107673786,2.5856444834127285e-5,7.787722099695875e-9,-0.0014464205463444633,2.5688537660867144e-5,7.672567457310853e-9,-0.0014459051593164764,2.5612502082256553e-5,7.624669465502379e-9,-0.0014453891705153014,2.5639343311066898e-5,7.651283894303304e-9,-0.0014449112632642608,2.5762226244715e-5,7.746636370364774e-9,-0.0014445057152640856,2.595501245227754e-5,7.891145026699935e-9,-0.0014441946694093064,2.6173960497131583e-5,8.052917461887092e-9,-0.0014439806475695987,2.636349963132186e-5,8.192048807278225e-9,-0.0014438411873451745,2.646690890427581e-5,8.268250609640819e-9,-0.0014437286296687954,2.6441511003512633e-5,8.251567637578792e-9,-0.001443578444853297,2.6275165731848128e-5,8.1339948899965e-9,-0.0014433273202660133,2.5997083928831833e-5,7.937096006765073e-9,-0.001442936409115405,2.567444219779277e-5,7.709508223593939e-9,-0.0014424086701659907,2.5391506100637698e-5,7.511889392046065e-9,-0.0014417892862947695,2.5219227646515815e-5,7.3950023164529674e-9,-0.001441147821285167,2.5191187270965408e-5,7.382424698161206e-9,-0.0014405525671188652,2.5297654232244746e-5,7.46642211059057e-9,-0.0014400506984845914,2.549697136888099e-5,7.616367322101587e-9,-0.0014396609875323325,2.573422047511667e-5,7.792362299919142e-9,-0.0014393770763216152,2.595731091946943e-5,7.956884889193762e-9,-0.0014391755390315833,2.6126299063856226e-5,8.081435414644157e-9,-0.0014390240648945822,2.621661961154909e-5,8.14872862017226e-9,-0.0014388876944924675,2.6218749094750767e-5,8.152319004850451e-9,-0.0014387330155882449,2.6136521805769236e-5,8.095315097039274e-9,-0.0014385310964584244,2.5985249879172986e-5,7.98902323659588e-9,-0.0014382599562942464,2.578984727441783e-5,7.851630723953415e-9,-0.001437907000473791,2.558258430097201e-5,7.706602007982529e-9,-0.0014374713475980292,2.539984818095332e-5,7.580298299298504e-9,-0.0014369654370357835,2.5277430919184726E-05,7.498481675769508e-9,-0.0014364149450387434,2.524445155724815e-5,7.481837634246073e-9,-0.0014358560907401488,2.531680732424275e-5,7.541239382042651e-9,-0.0014353299421923447,2.549174348391302e-5,7.67395063074306e-9,-0.0014348742608147498,2.5745447771436074e-5,7.862124322155557e-9,-0.0014345144552345818,2.6035180886781052e-5,8.074600559849243e-9,-0.0014342558619612528,2.6306381027453562e-5,8.272200047331242e-9,-0.001434079589311781,2.6503932782313694e-5,8.415841468953633e-9,-0.0014339437223416472,2.658569469617018e-5,8.476099349229682e-9,-0.0014337909162949274,2.653533090809111e-5,8.442148816768944e-9,-0.0014335620776601706,2.6370518693983798e-5,8.32738512813637e-9,-0.0014332136074441035,2.614232716045764e-5,8.16878953155742e-9,-0.0014327328436069065,2.592319956427502e-5,8.01823403658462e-9,-0.0014321447131647473,2.5785451237951414e-5,7.927095900408931e-9,-0.0014315049081303302,2.5778022969174607e-5,7.92972291182139e-9,-0.001430881462440153,2.591187567232032e-5,8.0331743458699e-9,-0.0014303331772278684,2.616035797685171e-5,8.217711692267238e-9,-0.0014298944934438224,2.6472481447071226e-5,8.446469961108673e-9,-0.0014295714210435305,2.6790920056085873e-5,8.67839265732808e-9,-0.0014293466416022695,2.706669905365202e-5,8.878682424407924e-9,-0.0014291886521796292,2.726698482237647e-5,9.024249768378522e-9,-0.0014290605250002484,2.7376714200605378e-5,9.104750656058354e-9,-0.0014289262535661926,2.7396668664601868e-5,9.121125674470142e-9,-0.0014287546376585928,2.734037378186705e-5,9.083361209742851e-9,-0.0014285215854872378,2.7231132652078738e-5,9.008387004102195e-9,-0.0014282118094740023,2.7099446056366132e-5,8.91824477219024e-9,-0.0014278205169719102,2.6980369162120895e-5,8.838165817857077e-9,-0.0014273551041353886,2.6910052790540644e-5,8.794014126806641e-9,-0.001426836217410468,2.692081607168585e-5,8.808668492982802e-9,-0.0014262969989791532,2.703467650249471e-5,8.897360695655925e-9,-0.0014257791653392638,2.7256366225002294e-5,9.062761040100194e-9,-0.0014253252294257476,2.7568169951920956e-5,9.291482753990074e-9,-0.0014249678412150235,2.7929586139618507e-5,9.554082763102208e-9,-0.001424719247272349,2.8283922152095817e-5,9.8099633515569e-9,-0.0014245649540888968,2.857138997614607e-5,1.0016784431585915e-8,-0.001424464819701088,2.874523105273305e-5,1.0141889729331605e-8,-0.0014243621807249333,2.8785614912595313e-5,1.0172034668321106e-8,-0.001424198594399113,2.8706550061364885e-5,1.0118076747905602e-8,-0.0014239298298215845,2.855338333973738e-5,1.0012952173362216e-8,-0.0014235384273948743,2.8391359153604704e-5,9.903332600293055e-9,-0.001423039068963574,2.8288237213866135e-5,9.837163726172813e-9,-0.0014224748046457894,2.8295862255426144e-5,9.850620457112531e-9,-0.0014219048911750486,2.8436423102220665e-5,9.95855573897215e-9,-0.0014213881167722824,2.8698019217145672e-5,1.0151643259449534e-8,-0.001420967450066756,2.9040746996965335e-5,1.0400951762124473e-8,-0.0014206611416994707,2.941022918094345e-5,1.066766982712532e-8,-0.001420462210050991,2.9752840746124096e-5,1.0913884054961945e-8,-0.0014203445464611544,3.0027360180390388e-5,1.111072374244291e-8,-0.0014202718523974758,3.0210625033603962e-5,1.1242230035220288e-8,-0.0014202059478694213,3.0297793467362173e-5,1.130543514634517e-8,-0.0014201126851082163,3.0299379741317255e-5,1.1308212546961511e-8,-0.001419965354967399,3.023722740125861e-5,1.126641797154726e-8,-0.0014197463754245395,3.0140745523510838e-5,1.1201222166966375e-8,-0.0014194482287997765,3.004374201377961e-5,1.1136832656018542e-8,-0.0014190743137684472,2.9981438465230445e-5,1.1098298258684281e-8,-0.001418639809555389,2.9986901963587264e-5,1.1108885328964141e-8,-0.001418171968272546,3.008617815680982e-5,1.1186579824169502e-8,-0.0014177085861886171,3.0291942135319834e-5,1.133964646008498e-8,-0.001417293059956346,3.05967206924271e-5,1.1562003200599675e-8,-0.0014169650708668305,3.0968510049347896e-5,1.1830355814926381e-8,-0.0014167481369272308,3.135278601208798e-5,1.210581797947972e-8,-0.0014166384270926171,3.168371673086619e-5,1.2341922339142801e-8,-0.001416601011852032,3.1903068064781095e-5,1.2497950944243014e-8,-0.001416577597530908,3.197990561297152e-5,1.2552765821321245e-8,-0.001416504023895075,3.192205189348772e-5,1.2512782170450044e-8,-0.0014163303334027324,3.177388113563488e-5,1.241023118085146e-8,-0.0014160352058320256,3.160197306166359e-5,1.2292773285630224e-8,-0.00141563020412267,3.147525183817631e-5,1.2209223647116733e-8,-0.001415154182806351,3.144686499940079e-5,1.219665427065755e-8,-0.0014146612944608804,3.1542588220823e-5,1.2272337128455885e-8,-0.0014142068212377667,3.17574992652059e-5,1.2431711044918489e-8,-0.0014138345495532411,3.206030619328251e-5,1.2651790954942593e-8,-0.0014135683760217552,3.240316711893786e-5,1.2898338055852669e-8,-0.0014134095167311366,3.273394154711765e-5,1.3134557510283644e-8,-0.0014133391618895421,3.300757270905415e-5,1.3329020931988017e-8,-0.0014133249690354472,3.31939594183018e-5,1.34610409333419e-8,-0.0014133289896605121,3.328119077205221e-5,1.3522794560786908e-8,-0.001413314822460721,3.3274656159752014e-5,1.3518607273504532e-8,-0.0014132527079583823,3.3193518643689525e-5,1.3462443644765452e-8,-0.0014131223461608018,3.3066195373724894e-5,1.3374722960227905e-8,-0.001412913992766144,3.292604615376844e-5,1.3279258055873786e-8,-0.0014126286522506636,3.2807704536436217e-5,1.3200599557144906e-8,-0.0014122779793304208,3.274378481004234e-5,1.3161617579820244e-8,-0.0014118840527596287,3.276134215889836e-5,1.318093997452497e-8,-0.0014114785988180107,3.287744387268909e-5,1.3269863918137662e-8,-0.0014111005438624472,3.309364278437632e-5,1.3428626290622916e-8,-0.0014107903444190032,3.339035361538781e-5,1.3642698341029341e-8,-0.0014105801213301545,3.372401496582465e-5,1.388102605623399e-8,-0.0014104809172316352,3.403140528598448e-5,1.4099169038639324e-8,-0.0014104721889999377,3.4244418459823575e-5,1.4249623837810556e-8,-0.0014105012730983308,3.431313016865975e-5,1.4297897851110098e-8,-0.0014104976530675871,3.4227232153276674e-5,1.4237483279052317e-8,-0.0014103978203613941,3.4023102917727105e-5,1.409478258989675e-8,-0.0014101683041605874,3.37710788967813e-5,1.3920030577394821e-8,-0.0014098152448564095,3.3549879175073367e-5,1.3769043937615413e-8,-0.0014093780596700428,3.342166325020871e-5,1.3685419104499984e-8,-0.0014089135400348065,3.341756238018929e-5,1.3690309226175862e-8,-0.0014084788334548454,3.3535493238112093e-5,1.37811189010826e-8,-0.0014081186845767038,3.374669781848928e-5,1.3936497322555077e-8,-0.0014078585339577186,3.400633332696204e-5,1.4124144409347155e-8,-0.0014077028508541673,3.42645878758073e-5,1.4308805334751806e-8,-0.0014076373664685578,3.4476340111075574e-5,1.4459025629545484e-8,-0.0014076339312917433,3.4608360343685586e-5,1.4552028310657353e-8,-0.0014076568208633863,3.464345854701809e-5,1.457641017245677e-8,-0.001407669277186434,3.458141606859998e-5,1.4532638817739162e-8,-0.0014076391876356137,3.443714237304597e-5,1.4431695615751243e-8,-0.0014075431589499628,3.42369134134312e-5,1.4292440206539112e-8,-0.0014073687088618709,3.401369363319955e-5,1.4138337135936162e-8,-0.0014071148025871514,3.380247774740365e-5,1.3994150056515684e-8,-0.0014067912957618034,3.363619137526845e-5,1.3882976655598566e-8,-0.001406417785833611,3.3542132876375727e-5,1.3823657520053249e-8,-0.0014060220696082155,3.3538605100390865e-5,1.3828389059174037e-8,-0.0014056380007306819,3.363132267047934e-5,1.3900311168766636e-8,-0.0014053019647113963,3.3809476163547754e-5,1.403098639393186e-8,-0.0014050467952829435,3.404235090138576e-5,1.4198316878603361e-8,-0.0014048925106380783,3.427900969237467e-5,1.4366522015636952e-8,-0.0014048352740607154,3.4454830578689884e-5,1.4490717899879615e-8,-0.0014048394576729162,3.450785686877302e-5,1.452817586539771e-8,-0.0014048405652307403,3.4402642110255266e-5,1.4454790297227312e-8,-0.001404764049178016,3.415061768516878e-5,1.4279243287251102e-8,-0.0014045544794032856,3.381223147440442e-5,1.4044512501709342e-8,-0.001404199019517501,3.34753415760048e-5,1.3812662721467575e-8,-0.0014037308928993113,3.322120032523223e-5,1.3640780805957817e-8,-0.0014032126628860826,3.309751484531842e-5,1.3561886833224022e-8,-0.0014027118105852483,3.311012467826726e-5,1.3579138976547671e-8,-0.0014022815504324637,3.3230920394382554e-5,1.3671690150678322e-8,-0.0014019518800177807,3.341272421638346e-5,1.3805518700988216e-8,-0.0014017290980962978,3.360354473780993e-5,1.3943711301648619e-8,-0.0014016000243125806,3.375694744860536e-5,1.4053807349603574e-8,-0.001401537920759662,3.383830386691697e-5,1.4112051071441454e-8,-0.001401508516602354,3.38278961316903e-5,1.4105333153706423e-8,-0.0014014756088146735,3.372177220527613e-5,1.4031568509718768e-8,-0.0014014060660440912,3.353076489929489e-5,1.3898885331730495e-8,-0.0014012739860668733,3.327793091957308e-5,1.3723815329935129e-8,-0.0014010636973225197,3.2994742987017955e-5,1.3528667448275764e-8,-0.0014007713279077503,3.271646976821572e-5,1.3338315101143095e-8,-0.0014004048383781237,3.247734073521475e-5,1.3176767910392181e-8,-0.001399982720160362,3.230609707347399e-5,1.3063963984102755e-8,-0.0013995317115542282,3.222223618554686e-5,1.3013065431940527e-8,-0.0013990837824146862,3.223298100013896e-5,1.3028362806501945e-8,-0.0013986724408224693,3.2330914871978444e-5,1.310378977963939e-8,-0.0013983280897938944,3.249234472603756e-5,1.3222059543851011e-8,-0.0013980719157413676,3.26771022098923e-5,1.3354806377875613e-8,-0.001397908301055983,3.2831582187595467E-05,1.3464847011626819e-8,-0.001397817347062273,3.289747667782527e-5,1.3512189019105797e-8,-0.001397751512132713,3.28277047548693e-5,1.3464871106866769e-8,-0.0013976423203658295,3.260691801970788e-5,1.3312974762696126e-8,-0.0013974208313565252,3.2266892279175194e-5,1.3079220779759064e-8,-0.0013970462170215551,3.188350281420138e-5,1.2816866134850941e-8,-0.001396526429072313,3.15504266134185e-5,1.2591347003175733e-8,-0.0013959162362914407,3.134208482490942e-5,1.2454319312828303e-8,-0.0013952934212709952,3.12876940613365e-5,1.2425488800691024e-8,-0.0013947290248052181,3.1368994960239776e-5,1.2491155941132685e-8,-0.0013942677926455445,3.153656609401135e-5,1.2615901943459306e-8,-0.001393923604268954,3.173094679442987e-5,1.2757639356311874e-8,-0.0013936850245932673,3.189863660685751e-5,1.287894027262053e-8,-0.0013935243292366379,3.20005016684368e-5,1.295286703830315e-8,-0.0013934059148908537,3.2014351751696166e-5,1.2964583482053157e-8,-0.0013932926868055352,3.193431439306784e-5,1.29106853876459e-8,-0.0013931506171936453,3.176890244780789e-5,1.279767711238989e-8,-0.0013929521622677431,3.153852371658084e-5,1.2640170940633758e-8,-0.0013926789463034916,3.1272453315631026e-5,1.2458806214965603e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json new file mode 100644 index 000000000..fb9e3f35a --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_4.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":4000,"numberOfSamples":1000,"samples":[-0.0013923237156324762,3.10051313115372e-5,1.227772476593132e-8,-0.0013918913030339685,3.0771749723490945e-5,1.2121506307793586e-8,-0.0013913982265213998,3.060338976954708e-5,1.2011722091998317e-8,-0.0013908707040811456,3.052231698115309e-5,1.1963565646016446e-8,-0.001390341194667023,3.053811122326968e-5,1.198311590315129e-8,-0.0013898437960375297,3.064516965374932e-5,1.206567850949141e-8,-0.0013894089283486013,3.0821985171837794e-5,1.219550046257788e-8,-0.0013890577325521491,3.103246124664618e-5,1.234697235237071e-8,-0.001388796542557306,3.12295787680487e-5,1.2487412403812631e-8,-0.0013886120720738905,3.136210718279558e-5,1.2581786671309725e-8,-0.0013884688947041909,3.1385084006792996e-5,1.2599819994917749e-8,-0.0013883119458332274,3.127360474065753e-5,1.2525244839418013e-8,-0.0013880771300425396,3.103666131759266e-5,1.2365079707027838e-8,-0.0013877108551321243,3.072388276790292e-5,1.2154123117817592e-8,-0.0013871929430152989,3.0416606360292832e-5,1.1948741207200948e-8,-0.001386550391714903,3.0201205713724095e-5,1.1808429582903155e-8,-0.0013858506737383077,3.01357997768827e-5,1.1772803776767341e-8,-0.0013851759104291312,3.0229273883448915e-5,1.1847175892297428e-8,-0.001384592881220668,3.0443874540562336e-5,1.2004550146250928e-8,-0.0013841349373795028,3.0716035009628255e-5,1.2200281016361826e-8,-0.0013838008265632472,3.098058540822912e-5,1.2389009867920565e-8,-0.0013835645353088798,3.118712181259742e-5,1.2536034707260684e-8,-0.0013833877106148682,3.130621279611001e-5,1.2621499602221395e-8,-0.0013832296076505604,3.132862793970199e-5,1.2639667607070031e-8,-0.0013830533398082588,3.12615629520694e-5,1.2596119024238894e-8,-0.0013828292717648978,3.1124447793189026e-5,1.2504739208443173e-8,-0.001382536894290198,3.094526718665489e-5,1.238515875044467e-8,-0.001382166093661862,3.0757242436986546e-5,1.2260502826500002e-8,-0.0013817180828804721,3.059536687843876e-5,1.2155030689028627e-8,-0.0013812057662645032,3.0492356610198686e-5,1.2091316281131741e-8,-0.001380652965115511,3.0473944416237442e-5,1.2086924984252354e-8,-0.0013800918794172976,3.055405387965315e-5,1.2151015510603047e-8,-0.0013795585330693598,3.073089776278415e-5,1.2281664264941277e-8,-0.0013790865545975047,3.098519781713838e-5,1.2464780864846123e-8,-0.0013787002512115332,3.128152698517288e-5,1.2675280274755086e-8,-0.0013784083744284533,3.1573186320784075e-5,1.2880703491497357e-8,-0.0013782000273174174,3.181021399913377e-5,1.3046891803617532e-8,-0.0013780438976636682,3.19495350745652e-5,1.3144947940134445E-08,-0.0013778917807731484,3.1965865743675875e-5,1.3158522917130986e-8,-0.0013776871187557247,3.186125601721507e-5,1.3090054814128084e-8,-0.0013773784345414448,3.167005542915762e-5,1.2963872114938864e-8,-0.0013769355296510653,3.145540027821075e-5,1.2823586040322064e-8,-0.0013763632310821636,3.129451925350386e-5,1.2721957602677264e-8,-0.0013757051938257864,3.12548297658547e-5,1.2704580862237566e-8,-0.0013750325167593762,3.136980980661643e-5,1.2793513871866098e-8,-0.0013744200205683455,3.162705495398507e-5,1.297932656913296e-8,-0.001373921486003332,3.197529339541822e-5,1.3226141868971426e-8,-0.0013735559011152846,3.2345581764334165e-5,1.348632479099502e-8,-0.001373308834962327,3.267443076739067e-5,1.371638565723486e-8,-0.0013731440063741707,3.2918760928589506e-5,1.3887174851188765e-8,-0.0013730169969555664,3.306017025212218e-5,1.3986670884338575e-8,-0.001372885707505598,3.310177282032628e-5,1.4017645484980559e-8,-0.0013727161916267327,3.3062157152929236e-5,1.3993385650784678e-8,-0.0013724849650755444,3.2969528124314865e-5,1.3933613214447525e-8,-0.0013721795043743403,3.2857132549704686e-5,1.3861350571725312e-8,-0.001371798199420233,3.275975393211377e-5,1.3800541749182052e-8,-0.001371350267391638,3.2710546394120883e-5,1.3773879566233536e-8,-0.0013708554660210265,3.273748651144435e-5,1.3800332746004124e-8,-0.0013703429392595617,3.285908614832062e-5,1.3892159705457934e-8,-0.0013698482842253537,3.3079732505826116e-5,1.4051723281032588e-8,-0.0013694081789119867,3.33859216188847e-5,1.4269017354682299e-8,-0.0013690527752354515,3.3745292715916165e-5,1.4521206280880815e-8,-0.0013687973523058758,3.411026251376824e-5,1.4775341685527618e-8,-0.001368635864809167,3.442685430142285e-5,1.4994571911094206e-8,-0.001368539190809793,3.464725058126877e-5,1.5146764379461272e-8,-0.0013684596653155585,3.474271507765218e-5,1.5213225547749854e-8,-0.001368341412275528,3.471292842213015e-5,1.519483961915156e-8,-0.0013681340963783179,3.458864103148684e-5,1.5113572919781048e-8,-0.001367806641243441,3.442624486265195e-5,1.50084742827696e-8,-0.0013673571913396174,3.429481060775766e-5,1.492663952720893e-8,-0.0013668159712882611,3.425816744323766e-5,1.4910976651613327e-8,-0.0013662389537410337,3.4356679623137404e-5,1.4987969233571176e-8,-0.0013656929127156684,3.45948313307106e-5,1.5159539607809455e-8,-0.0013652362239514341,3.493996318255312e-5,1.540252269790559e-8,-0.0013649025854399397,3.533339206451559e-5,1.5676457844807535e-8,-0.001364694017006319,3.5709311516460834e-5,1.5936510012581336e-8,-0.0013645848390629765,3.6013317990182196e-5,1.6146000719145376e-8,-0.001364533006244744,3.6213785847992433e-5,1.6284003030435945e-8,-0.0013644928514191061,3.630413358810897e-5,1.6346724249025713e-8,-0.0013644247321696538,3.629841553527456e-5,1.6344369702902035e-8,-0.0013643001276189908,3.622421100892573e-5,1.6296216699097295e-8,-0.0013641030557909385,3.611585301733881e-5,1.6225972675099123e-8,-0.001363829489218644,3.6009284510185593e-5,1.6158272516967093e-8,-0.0013634861732545276,3.59384398039273e-5,1.6116209694143087e-8,-0.0013630895393642458,3.593237657339973e-5,1.6119355456194334e-8,-0.0013626646638417342,3.601230966247092e-5,1.618170797397962e-8,-0.001362243629102119,3.61880268938273e-5,1.6309266089582144e-8,-0.0013618622841067652,3.64538655276576e-5,1.6497393820657673e-8,-0.0013615544772974737,3.6785502430891855e-5,1.6728827194428735e-8,-0.0013613437161679772,3.713991173468955e-5,1.697386187057922e-8,-0.001361234021080087,3.746108911824493e-5,1.719439828116546e-8,-0.0013612037638524796,3.7692536866159856e-5,1.7352457140518053e-8,-0.001361206847971344,3.779396838960132e-5,1.742144636974678e-8,-0.0013611832374142226,3.7756031020244054e-5,1.7396011201743785e-8,-0.001361076191644119,3.7606086154550635e-5,1.7295762883204998e-8,-0.0013608496577971183,3.7401677631123275e-5,1.716059227166306e-8,-0.0013604990488915285,3.721408821670011e-5,1.7039232838343093e-8,-0.0013600520125571307,3.710835900255645e-5,1.697551683056106e-8,-0.0013595600099726545,3.712640498271043e-5,1.699695432191236e-8,-0.0013590841935409244,3.727760024130748e-5,1.71086275657347e-8,-0.001358679890204125,3.7538440708709115e-5,1.7293378278633092e-8,-0.00135838372132039,3.7860514706880266e-5,1.7517577456580113e-8,-0.0013582064390924846,3.818407848658802e-5,1.7740504047095585e-8,-0.0013581329272131877,3.845318903981301e-5,1.7924558906917483e-8,-0.0013581286541984837,3.862806850028087e-5,1.804345582610699e-8,-0.0013581498661130592,3.869159882723496e-5,1.8086397228283904e-8,-0.0013581539476281528,3.8649261142348775e-5,1.8057850041261867e-8,-0.0013581071226586598,3.8524189345567815e-5,1.7974088393725628e-8,-0.0013579883897526658,3.835008509330396e-5,1.7858356144320932e-8,-0.00135779018044884,3.8164384929534315e-5,1.7736239335068338e-8,-0.001357517027048097,3.800295694389865e-5,1.7632074255281237e-8,-0.0013571835099064594,3.789645286761099e-5,1.7566453802397066e-8,-0.0013568122323385436,3.786770844912354e-5,1.7554432313878906e-8,-0.0013564319146861178,3.792940545542113e-5,1.760394100218013e-8,-0.0013560751230173448,3.808144637277682e-5,1.771409396726125e-8,-0.001355774723096159,3.830809315615486e-5,1.7873437098055103e-8,-0.0013555581129589143,3.85759738967685e-5,1.805883775217439e-8,-0.0013554390847187276,3.883530834118127e-5,1.8236503204011578e-8,-0.001355409076240439,3.9027250633763036e-5,1.836699003058032e-8,-0.0013554321238842734,3.909874292882928e-5,1.8415131641263553e-8,-0.0013554490528045462,3.90218298649933e-5,1.836291168093209e-8,-0.0013553934777036426,3.88088274293409e-5,1.8219570358978306e-8,-0.0013552148739573212,3.8513364752411945e-5,1.8022193158569097e-8,-0.0013548976458011926,3.821394753241361e-5,1.7824422483376295e-8,-0.0013544662886432806,3.7987376502045904e-5,1.767824374087245e-8,-0.001353975167144596,3.788495877740173e-5,1.7617747380746665e-8,-0.0013534897169433626,3.792082265498023e-5,1.765132964873523e-8,-0.0013530679623867672,3.807359000944715e-5,1.776318309780284e-8,-0.0013527479846985185,3.82970266342332e-5,1.7920945154219862e-8,-0.0013525427737545379,3.8534126622979775e-5,1.8085549434599747e-8,-0.0013524413684721215,3.8730475725509086e-5,1.8220348872787433e-8,-0.0013524143580498815,3.8844550459139665e-5,1.829793515757917e-8,-0.0013524218120327396,3.885388259987187e-5,1.830403299861606e-8,-0.0013524218425320289,3.8756778190668846e-5,1.8238389323156565e-8,-0.0013523781464381873,3.857000249417001e-5,1.8113029207340084e-8,-0.0013522652859119853,3.832360437107422e-5,1.7948697828581297e-8,-0.0013520711816035556,3.805446144349454e-5,1.7770522740602527e-8,-0.0013517970474576544,3.7800026057570636e-5,1.760383303417335e-8,-0.0013514555502732262,3.759328234789039e-5,1.7470765883749638e-8,-0.0013510681406707162,3.745922197053802e-5,1.7387859156658665e-8,-0.0013506622145259056,3.741251692416933e-5,1.7364450412879974e-8,-0.0013502682953014952,3.7455843878886433e-5,1.7401577299135237e-8,-0.0013499170098815133,3.757843888576176e-5,1.749114206947162e-8,-0.0013496352319221148,3.775487577483726e-5,1.7615323797154796e-8,-0.001349440649488639,3.794495617766193e-5,1.7746750386563e-8,-0.0013493347424008647,3.809671819615431e-5,1.7850659872577422e-8,-0.001349295890582923,3.8155046902679206e-5,1.7890635669466993e-8,-0.0013492766959825838,3.807708327935155e-5,1.783874654599152e-8,-0.0013492110735612106,3.785133903622449e-5,1.768815260529381e-8,-0.001349033855976422,3.751108479626499e-5,1.7461969909133265e-8,-0.0013487069795288752,3.71303580506857e-5,1.7210535401503925e-8,-0.0013482379377772538,3.67993136705882e-5,1.6994726215196717e-8,-0.001347678208637462,3.659042766946213e-5,1.6863046213677397e-8,-0.0013471024913643088,3.6534216931232214e-5,1.6835204236635903e-8,-0.0013465817610538201,3.661531138061667e-5,1.6899639174625656e-8,-0.0013461637307948591,3.67855921967629e-5,1.702274689456107e-8,-0.0013458659040266978,3.698362593147122e-5,1.716236688366139e-8,-0.0013456786096961092,3.715150481672573e-5,1.7279353443021854e-8,-0.0013455729607305563,3.7245547989349e-5,1.7344764650321256e-8,-0.0013455098437546319,3.724113849988471e-5,1.7342896275356996e-8,-0.0013454479816408654,3.713333537401668e-5,1.7271384802952297e-8,-0.0013453504339775678,3.693472237791048e-5,1.7139497446621565e-8,-0.0013451893773290563,3.66714125531848e-5,1.69653115025737e-8,-0.001344949053305138,3.6377906041960216e-5,1.677225728879621e-8,-0.0013446268270830342,3.6091487557028635e-5,1.658542561013439e-8,-0.0013442324429496473,3.584683872566402e-5,1.642801203779135e-8,-0.0013437858000863968,3.567151610583387e-5,1.6318286339007397e-8,-0.0013433138090793446,3.5582718952246464e-5,1.6267381969080993e-8,-0.0013428468552322856,3.5585336135370534e-5,1.6277959343087233e-8,-0.0013424151246411572,3.567102736278635e-5,1.6343650045473796e-8,-0.0013420448217986622,3.581815905326798e-5,1.6449191850671144e-8,-0.0013417540843769415,3.5992621037087415e-5,1.6571231526067074e-8,-0.0013415482762467888,3.6150103914661236e-5,1.6680073457991738e-8,-0.0013414149103668283,3.624123041516313e-5,1.6743183400191018e-8,-0.0013413198868642417,3.622112481074397e-5,1.6731446982117347e-8,-0.00134120845189209,3.606369069563323e-5,1.662842184473864e-8,-0.0013410151654745213,3.577732086480887e-5,1.644054815603201e-8,-0.0013406846000409867,3.5413460407537786e-5,1.6202722853245097e-8,-0.0013401964609990825,3.505743910760731e-5,1.597215167212452e-8,-0.001339580425708274,3.479926151774641e-5,1.5808809507200667e-8,-0.0013389081886428587,3.4697739505285814e-5,1.5751417893888703e-8,-0.0013382653066040724,3.475913717423584e-5,1.5803205836748927e-8,-0.0013377198411129057,3.494136132320177e-5,1.593492656261746e-8,-0.0013373043650111932,3.517656334298736e-5,1.610030358752367e-8,-0.001337015439682562,3.5396327466275055e-5,1.6253166407767607e-8,-0.0013368239990238354,3.5548502293726705e-5,1.6358821610884963e-8,-0.0013366882809558854,3.560374914900627e-5,1.639832805964985e-8,-0.001336564467218173,3.55549452941308e-5,1.636783817572624e-8,-0.001336413776905145,3.541320348266067e-5,1.627564290331889e-8,-0.0013362066349266496,3.520293709170862e-5,1.6138666700184393e-8,-0.0013359249232274644,3.4956909941254224e-5,1.5979096337218204e-8,-0.001335562924155841,3.4711420854670354e-5,1.582122151313896e-8,-0.0013351271377057652,3.4501629448674695e-5,1.568840971408109e-8,-0.0013346349529169633,3.435711455278746e-5,1.5600199028356044e-8,-0.0013341121333342526,3.429797828590833e-5,1.5569686455152157e-8,-0.0013335892705868344,3.433199575848479e-5,1.5601580165570786e-8,-0.0013330975858291425,3.4453164621146024e-5,1.5691228226897585e-8,-0.0013326644706178011,3.464175000353744e-5,1.5824749599259128e-8,-0.0013323090899715643,3.4865868704546576e-5,1.5980301002253026e-8,-0.001332038338966892,3.508467362609938e-5,1.6130447896255385e-8,-0.0013318434113794785,3.525330077002587e-5,1.6245627748951825e-8,-0.0013316975322695253,3.5330051294305984e-5,1.629891139049964e-8,-0.001331556286785722,3.528619312938393e-5,1.6272293810409786e-8,-0.0013313628892067757,3.5117465072944155e-5,1.6163989779264318e-8,-0.0013310606240185723,3.485372509921916e-5,1.5994525193249938e-8,-0.001330612092239529,3.4560074860567006e-5,1.5807325007709106e-8,-0.0013300188819388664,3.432251695865668e-5,1.5659203035008636e-8,-0.0013293294672254824,3.4218415257834896e-5,1.5600856484188996e-8,-0.0013286258106659328,3.4284781738908746e-5,1.565595284409048e-8,-0.0013279927272366466,3.45034557497139e-5,1.5811466092247673e-8,-0.001327487245815521,3.481218305757908e-5,1.6025241776050835e-8,-0.0013271243297834456,3.5132573390047304e-5,1.6244759544611692e-8,-0.0013268819281744182,3.539726971412401e-5,1.6425301589944376e-8,-0.0013267165573191055,3.556482846968116e-5,1.6539830337867083e-8,-0.0013265791200544272,3.5621827657685704e-5,1.65802341767557e-8,-0.0013264257556151145,3.5577571686315266e-5,1.6553560503722946e-8,-0.0013262233226004878,3.5456646993180176e-5,1.6476832678516347e-8,-0.0013259512363842734,3.529220284957108e-5,1.637245418374682e-8,-0.001325601512184336,3.512067149730725e-5,1.626470172512635e-8,-0.0013251780734556981,3.497753493359976e-5,1.6177001160356565e-8,-0.0013246955832461917,3.4893601735033355e-5,1.6129548566876927e-8,-0.0013241776457557696,3.48914999010468e-5,1.6137021291032074e-8,-0.001323654076904617,3.4982458503977466e-5,1.6206426975212878e-8,-0.001323157041794967,3.5163901163299414e-5,1.633548781930137e-8,-0.0013227162371304468,3.5418581049974166e-5,1.651211397605036e-8,-0.001322353687199993,3.571581068946272e-5,1.6715367990939248e-8,-0.0013220789387146789,3.601504810064792e-5,1.6918061706656873e-8,-0.0013218855424575772,3.627176280866538e-5,1.7090842854582353e-8,-0.0013217496703317407,3.644508967537851e-5,1.720733490398808e-8,-0.0013216315923340778,3.65064979819164e-5,1.7249749168249524e-8,-0.0013214807524120568,3.644842841848515e-5,1.7214291107647377e-8,-0.0013212451222116156,3.6291038759722376e-5,1.711523751546295e-8,-0.0013208846495029996,3.60839095678969e-5,1.6985751198887913e-8,-0.0013203863550454039,3.5898854230369885e-5,1.6873006904681262e-8,-0.0013197752519399667,3.581166273538234e-5,1.682623169287687e-8,-0.0013191132255276836,3.587626651540886e-5,1.6879911863534467e-8,-0.0013184815790603076,3.610241659999537e-5,1.7039381967031404e-8,-0.0013179528033887597,3.645020189165614e-5,1.7277474450637978e-8,-0.0013175658344386403,3.684610326885073e-5,1.7545256584706124e-8,-0.0013173174371027003,3.721139594219093e-5,1.7790800848516823e-8,-0.0013171711591591722,3.7487162393554715e-5,1.797564920289059e-8,-0.0013170751083556422,3.764583818573417e-5,1.8082333520008842e-8,-0.0013169783809209286,3.768958704883004e-5,1.8113134460390254e-8,-0.001316841058972772,3.764169488899078e-5,1.8084193168326844e-8,-0.001316637900558923,3.7536910324560003e-5,1.8018963620713753e-8,-0.0013163581227781179,3.74137736701684e-5,1.7943079177386814e-8,-0.0013160036253867771,3.730942928907114e-5,1.7880963442603383e-8,-0.0013155869869080489,3.725613444561233e-5,1.7853614375631473e-8,-0.0013151295414577234,3.7278505354125304e-5,1.787686235519351e-8,-0.0013146592408699255,3.7390914042800114e-5,1.7959684433815758e-8,-0.0013142077768859126,3.759497729467439e-5,1.8102557862085905e-8,-0.0013138065061219567,3.787768395385184e-5,1.829626511989185e-8,-0.0013134811566555547,3.821118959139425e-5,1.852186865762894e-8,-0.0013132460042088404,3.855535190871637e-5,1.8752556581883928e-8,-0.0013130988888896927,3.886358760935178e-5,1.895768052314085e-8,-0.0013130187880983333,3.9091668685304416e-5,1.9108648012779857e-8,-0.0013129673945528086,3.920788927157972e-5,1.9185567048502283e-8,-0.001312895240496861,3.920217618512819e-5,1.918302681873874e-8,-0.001312751730863596,3.9091588709663886e-5,1.911338071545348e-8,-0.0013124973851131767,3.892009752658912e-5,1.9006243630838438e-8,-0.0013121156803837925,3.875132474201483e-5,1.8903462645629538e-8,-0.0013116210944716046,3.865427657691962e-5,1.884969011796569e-8,-0.0013110596023093825,3.868436788208665e-5,1.8880112079492577e-8,-0.0013104989534392041,3.8865074759319735e-5,1.9008779400316116e-8,-0.0013100096397849926,3.917783531577995e-5,1.9222392671536106e-8,-0.001309642829716195,3.9566441267412706e-5,1.9483464693369486e-8,-0.0013094148936341004,3.995569860122959e-5,1.974262974906959e-8,-0.0013093055437344233,4.027611457180882e-5,1.9954738594955732e-8,-0.001309269039156997,4.048329051082387e-5,2.0091415425642147e-8,-0.0013092512762208149,4.0565121305456764e-5,2.0145608286767512e-8,-0.001309204630257768,4.053753924890765e-5,2.012862157893427e-8,-0.0013090962818779034,4.043433842048082e-5,2.0063277178960123e-8,-0.0013089102465701447,4.029664197237238e-5,1.997689758602726e-8,-0.0013086455823332675,4.0164989376255385e-5,1.9896096938048397e-8,-0.0013083132488531785,4.0074480065967925e-5,1.984365052124649e-8,-0.0013079330725531747,4.005204604799757e-5,1.9836785608003348e-8,-0.0013075312073712847,4.011466197911539e-5,1.9886069633644747e-8,-0.001307137746835643,4.026767679567208e-5,1.9994358344677895e-8,-0.0013067837953618638,4.0503094151805196e-5,2.01557240211866e-8,-0.001306497350497541,4.079836018355392e-5,2.0354765247593485e-8,-0.0013062978171497592,4.111688713507512e-5,2.0567103458832157e-8,-0.0013061898867567608,4.141184316071489e-5,2.076202115095573e-8,-0.0013061586859034154,4.163420723263055e-5,2.0907824211338083e-8,-0.001306168888940125,4.174442656977121e-5,2.097944515467198e-8,-0.0013061699709006594,4.1724685296821706e-5,2.0966324787464215e-8,-0.0013061076049721034,4.1587191985985025e-5,2.0877595932876798e-8,-0.0013059383156452651,4.137443165518275e-5,2.0741958445759947e-8,-0.0013056425938951044,4.115010375057371e-5,2.060146632532868e-8,-0.0013052319085176942,4.098302152604378e-5,2.0500810520890916e-8,-0.001304747148248314,4.092874780265062e-5,2.0475326047336553e-8,-0.0013042487662768554,4.101434730128175e-5,2.0541288681716853e-8,-0.0013038012226081626,4.1230688242288156e-5,2.0691321547541416e-8,-0.0013034559571685768,4.153480564579156e-5,2.0896370294196396e-8,-0.0013032379646765557,4.186207205593781e-5,2.111390047210881e-8,-0.0013031404096450596,4.214456168589532e-5,2.1299885763046148e-8,-0.0013031290193728036,4.232935992827865e-5,2.1420571741681682e-8,-0.0013031540596875038,4.23905340975399e-5,2.1460031357444974e-8,-0.0013031647722243158,4.233156537247573e-5,2.1421513055924925e-8,-0.0013031210288061141,4.217942322107834e-5,2.132339132411696e-8,-0.0013029993698451085,4.19743987627646e-5,2.1192421768565933e-8,-0.0013027936105723457,4.175999540557228e-5,2.1057114924379603e-8,-0.0013025120277159838,4.157542941681899e-5,2.094288448231488e-8,-0.0013021733414850117,4.145125605159004e-5,2.0869268627645957e-8,-0.001301802931785606,4.1407329810052036e-5,2.08486684580033e-8,-0.0013014297605223135,4.1451908374797514e-5,2.0885812894513818e-8,-0.001301083724057496,4.158098532303902e-5,2.097737756976615e-8,-0.0013007927456693646,4.177756479690925e-5,2.1111607157953057e-8,-0.0013005788777021498,4.201134797256275e-5,2.126826146359011e-8,-0.0013004531008736547,4.224008178027535e-5,2.1419659516259312e-8,-0.0013004095063849311,4.241435176037529e-5,2.1533904163364884e-8,-0.001300421059288809,4.248719684661846e-5,2.1581120022324038e-8,-0.0013004404355749176,4.2427837091928494e-5,2.154224223145945e-8,-0.0013004089398097013,4.223528221728633e-5,2.1417667998620045e-8,-0.001300273032166463,4.194483810430357e-5,2.1231287584532605e-8,-0.0013000028044365167,4.162178844603964e-5,2.1026176296912758e-8,-0.0012996038559836165,4.13426408192214e-5,2.0852193780685487e-8,-0.0012991166051237216,4.117141562699113e-5,2.075042537733095e-8,-0.0012986036072820868,4.11409724530234e-5,2.0741091404972655e-8,-0.00129813093698426,4.1245817779201306e-5,2.0819172199719124e-8,-0.0012977508063343123,4.144686388868798e-5,2.095795336418839e-8,-0.001297490230837804,4.168441992169005e-5,2.1117875653405696e-8,-0.0012973474395914163,4.1894427134593377e-5,2.1257279803455193e-8,-0.001297295439153459,4.2023506126082147e-5,2.1342116234441085e-8,-0.001297290782074011,4.2039616230905444e-5,2.135260920238544e-8,-0.0012972848326498105,4.193654440887813e-5,2.1285844007437435e-8,-0.0012972345579685953,4.173200901824314e-5,2.1154255926592056e-8,-0.0012971103085002236,4.146082617494708e-5,2.0981029477300475e-8,-0.0012968992859630204,4.116578087591e-5,2.0794135694006106e-8,-0.0012966049398672192,4.0888917956883526e-5,2.062073980233298e-8,-0.0012962436295018886,4.066503581169255e-5,2.048307865442981e-8,-0.0012958401889284622,4.051793533458231e-5,2.039611146731544e-8,-0.0012954236654983476,4.045897416475759e-5,2.036662737785466e-8,-0.001295023782419015,4.0486965044612695e-5,2.039320583348045e-8,-0.0012946679941183582,4.058855472756083e-5,2.04665171281949e-8,-0.001294378612670228,4.0738730472340536e-5,2.056977240662803e-8,-0.0012941693814056939,4.0901748941956324e-5,2.0679500965812705e-8,-0.0012940411451917645,4.1033526442706687e-5,2.0767257575044023e-8,-0.0012939771911233996,4.108715604463087e-5,2.0803239961642293e-8,-0.0012939403977219072,4.102298074380838e-5,2.0762689854466084e-8,-0.0012938758566673656,4.082263405184535e-5,2.0634736809638925e-8,-0.0012937224662835883,4.050242606522025e-5,2.04308134609819e-8,-0.0012934330065076513,4.0117530900919203e-5,2.0187204767311665e-8,-0.00129299496709262,3.974958987689844e-5,1.995693470396842e-8,-0.0012924399284722028,3.947942732467301e-5,1.97920270271869e-8,-0.0012918341252307118,3.935776650460108e-5,1.9724509449887175e-8,-0.0012912547182092019,3.938930857514804e-5,1.97562193674393e-8,-0.001290764690673244,3.9536318616132313E-05,1.9861433777957795e-8,-0.0012903973760540492,3.973598386964465e-5,1.999850762256767e-8,-0.001290153512484858,3.992107605315687e-5,2.0123564778314824e-8,-0.0012900074223779303,4.003630507822636e-5,2.0201177921784495e-8,-0.0012899173653183767,4.0047651738485965e-5,2.0210256251888748e-8,-0.001289836338458807,3.9945200597234635e-5,2.0145554957262593e-8,-0.0012897212998023743,3.9741174964429464E-05,2.0016045030261284e-8,-0.0012895399514628268,3.946480109359224e-5,1.984132894245313e-8,-0.001289274703109967,3.915530609271689e-5,1.9647018285539673e-8,-0.0012889236983102278,3.885435148165427e-5,1.9459904493796818e-8,-0.0012884992067051736,3.8599204907948656e-5,1.9303690980758627e-8,-0.0012880241094008248,3.841760919532316e-5,1.919581678542283e-8,-0.0012875274288492854,3.832480054634275e-5,1.9145604099175267e-8,-0.0012870398381923532,3.8322598965528926e-5,1.9153682307136752e-8,-0.001286589752637628,3.840001624621069e-5,1.921238243257403e-8,-0.001286200095515784,3.853470660398659e-5,1.9306731004946026e-8,-0.0012858854886256378,3.86948874374072e-5,1.9415831342562718e-8,-0.001285649499877651,3.8841815281819475e-5,1.9514646939711093e-8,-0.0012854817125208561,3.893347048250045e-5,1.9576511347082232e-8,-0.0012853550995704204,3.893063802338816e-5,1.957702413451274e-8,-0.0012852255062502298,3.880636244566652e-5,1.9499927026725242e-8,-0.0012850362965845573,3.855807120421911e-5,1.9344575221523857e-8,-0.0012847311762881526,3.821819412132976e-5,1.9132471126811794e-8,-0.0012842747415224602,3.785512960173213e-5,1.8907745295762985e-8,-0.0012836727720354248,3.755682902569352e-5,1.8726620068053298e-8,-0.0012829784848701268,3.739895052372073e-5,1.863702330001396e-8,-0.0012822761530718633,3.7413406126274804e-5,1.86584821716486e-8,-0.0012816490975353263,3.7576622715437714e-5,1.8774747376732938e-8,-0.0012811506382189232,3.782352818577273e-5,1.8943030423325083e-8,-0.001280792436308164,3.8075703038799706e-5,1.9112370169816575e-8,-0.0012805506354879592,3.8266803390174146e-5,1.924016463208864e-8,-0.001280380738437669,3.835616719714332e-5,1.9300925603521577e-8,-0.0012802324630361284,3.833113206068958e-5,1.9287565495948508e-8,-0.0012800605197691444,3.820264194508425e-5,1.920823586964087e-8,-0.0012798308757682997,3.799830026151315e-5,1.9081529959526996e-8,-0.001279523586304221,3.775524645033635e-5,1.8931707405877297e-8,-0.0012791333774328948,3.751366233471992e-5,1.8784512978711527e-8,-0.0012786686262423056,3.731102412992637e-5,1.866362274807214e-8,-0.001278148993439162,3.717726455085912e-5,1.858772206348688e-8,-0.001277601942460214,3.7131143654458575e-5,1.8568311190285357e-8,-0.001277058498171101,3.717813474632904e-5,1.860839408251708e-8,-0.0012765487555219646,3.7310038774287194e-5,1.8702216632045073e-8,-0.0012760977084929888,3.750624505138479e-5,1.8836075192321827e-8,-0.0012757217769639956,3.773626898786361e-5,1.8990020553034313e-8,-0.0012754261510291623,3.796321117292025e-5,1.9140234836138346e-8,-0.0012752029370164196,3.814797161205375e-5,1.92619071682081e-8,-0.0012750300928311285,3.825433491231409e-5,1.9332571089335484e-8,-0.0012748715426223701,3.825537269909844e-5,1.933609650898041e-8,-0.0012746797344262949,3.814138317428424e-5,1.926746861138821e-8,-0.0012744025805871105,3.7928235466975745e-5,1.9137729803848053e-8,-0.0012739963106319753,3.76626292022581e-5,1.897701998328715e-8,-0.0012734431088101711,3.741827327675125e-5,1.8832033009774208e-8,-0.0012727667106644165,3.7277449564075795e-5,1.875439150470419e-8,-0.0012720341118107905,3.730026444876515e-5,1.8781318347441222e-8,-0.0012713356167803904,3.749648014380484e-5,1.8917966913490027e-8,-0.0012707503868975216,3.7818967997163176e-5,1.913345694695096e-8,-0.0012703173742792029,3.818460780063819e-5,1.937431495323869e-8,-0.0012700276843224567,3.850870965846999e-5,1.958648929745315e-8,-0.0012698377681131297,3.873234768920965e-5,1.9732821725893906e-8,-0.0012696906468235986,3.883226562099348e-5,1.9799315570624595e-8,-0.0012695333572401244,3.881646913695297e-5,1.9792123553590806e-8,-0.0012693264687479164,3.8713735516634753e-5,1.9730552119127156e-8,-0.0012690470332673868,3.856312435152506e-5,1.9640099461015192e-8,-0.0012686878191508922,3.840594630060172e-5,1.9547213377593627E-08,-0.0012682550883168057,3.8280251328920796e-5,1.9475836828836382e-8,-0.0012677659821863632,3.8216972883763434e-5,1.9445125675948716e-8,-0.0012672456478990807,3.823702573972687e-5,1.9467782522189376e-8,-0.0012667239315270157,3.834915450270301e-5,1.954879813655444e-8,-0.0012662315252516165,3.8548712365379255e-5,1.9684700622829385e-8,-0.0012657956741872701,3.881779556352557e-5,1.9863631777743846E-08,-0.0012654358895180374,3.9127111421915734e-5,2.0066562567351532e-8,-0.0012651603219259492,3.943960149495701e-5,2.0269701099621573e-8,-0.0012649633922718845,3.97155188282893e-5,2.044787773900412e-8,-0.0012648251191054683,3.991847051986315e-5,2.0578512385264233e-8,-0.0012647124020133814,4.002181530954318e-5,2.0645672703362345e-8,-0.0012645824423290432,4.0014854271467307e-5,2.0643806946391964e-8,-0.001264388687972703,3.99081829052254e-5,2.0580779083148893e-8,-0.001264089784429187,3.973682895821391e-5,2.0479457047750557e-8,-0.0012636612589438738,3.955863316563664e-5,2.0376410433125773e-8,-0.001263107692385635,3.944474943991824e-5,2.031587286383709e-8,-0.0012624700916807313,3.9460627398303827e-5,2.0337965483915675e-8,-0.0012618210646095807,3.9641206055020366e-5,2.0463436185732815e-8,-0.0012612438544760331,3.997186027742948e-5,2.0682014530823786e-8,-0.0012608019231333165,4.03889145758586e-5,2.095293879084057e-8,-0.001260515403514942,4.080331509500292e-5,2.1219900523197546e-8,-0.0012603580066779792,4.1134769690694334e-5,2.143251915066937e-8,-0.0012602736669382706,4.133709908764442e-5,2.156229199212994e-8,-0.0012602001674625438,4.140455790552599e-5,2.1606510199617428e-8,-0.0012600871138250655,4.13627425982667e-5,2.1582334626039323e-8,-0.0012599037723692542,4.125395520943257e-5,2.1517286350261602e-8,-0.001259639059405887,4.112448324373034e-5,2.1440993984703374e-8,-0.0012592978126801822,4.1016374406620794e-5,2.1379934028673295e-8,-0.0012588963729254486,4.096310517242658e-5,2.1354792900167895e-8,-0.0012584587728795547,4.0987516848376617e-5,2.13793433801656e-8,-0.0012580135545439072,4.110070043061135e-5,2.145990419081642e-8,-0.001257590729174874,4.130124851631068e-5,2.1594960240885516e-8,-0.0012572184068382751,4.1574933436424366e-5,2.1774990856265992e-8,-0.0012569188758809874,4.1895365866185666e-5,2.198290829395347e-8,-0.0012567044061644376,4.2226400284913416e-5,2.2195638913385633e-8,-0.0012565736154616957,4.252676325544257e-5,2.2387154231576545e-8,-0.0012565095347204847,4.275674007069808e-5,2.2532803702984725e-8,-0.001256480413149145,4.2886024148070224e-5,2.261430451888185e-8,-0.0012564438185601924,4.290116127527485e-5,2.262433259898739e-8,-0.0012563537977570908,4.2810748157597085e-5,2.256953566001536e-8,-0.0012561701266762151,4.264685474788228e-5,2.2471059965738813e-8,-0.001255868216795208,4.246161786198218e-5,2.2362052663867524e-8,-0.00125544775922725,4.2318356345838705e-5,2.2281882031267264e-8,-0.0012549374800614776,4.22774052795677e-5,2.226731056823057e-8,-0.0012543928884045982,4.237873413357958e-5,2.2341924508824796e-8,-0.0012538846382849707,4.262624486160383e-5,2.2506767656905367e-8,-0.0012534783871114205,4.2981135163356555e-5,2.2736596297391955e-8,-0.0012532126561929605,4.3370682260662835e-5,2.2985558206766268e-8,-0.0012530852538086268,4.3711798272939364e-5,2.3201876301994538e-8,-0.0012530559769681426,4.393918260812166e-5,2.3345305957001018e-8,-0.0012530638749481211,4.4024288239515566e-5,2.3398863033464984e-8,-0.0012530490271740113,4.3977672971138264e-5,2.3370162208987406e-8,-0.0012529684380834512,4.383778762251783e-5,2.3284209882351702e-8,-0.0012528018888721966,4.365500575092296e-5,2.317318439808869e-8,-0.001252549834499636,4.34782797526141e-5,2.3067930135885604e-8,-0.0012522276998212633,4.334721846604825e-5,2.2992993745712078e-8,-0.0012518599576908918,4.3288848879161106e-5,2.2964722563118695e-8,-0.0012514754687159037,4.331706400168195e-5,2.299109201556656e-8,-0.0012511041057524219,4.343305080609753e-5,2.3072114029472213e-8,-0.0012507740089569535,4.362583037811218e-5,2.3200256491004583e-8,-0.001250508740600051,4.387284960062057e-5,2.336086149484763e-8,-0.0012503238892904954,4.414121645053139e-5,2.353297738143989e-8,-0.0012502232383400124,4.439057639247119e-5,2.3691245534858623e-8,-0.0012501953913701654,4.4578519987771495e-5,2.380937649691334e-8,-0.0012502124466062187,4.466862199857083e-5,2.386522426953918e-8,-0.0012502324655709908,4.463985453790723e-5,2.38466230351851e-8,-0.0012502066668911443,4.449465916127025e-5,2.3756267679178933e-8,-0.0012500904907569506,4.4262301368479445e-5,2.3613540810084584e-8,-0.0012498556988007213,4.3995081325114545e-5,2.3451824758728542e-8,-0.0012494996714732477,4.375734202677175e-5,2.3311357072906797e-8,-0.0012490486343557058,4.360978994232384e-5,2.3229326501100328e-8,-0.0012485532799728183,4.359328030608507e-5,2.3229896399582473e-8,-0.001248077323762565,4.3716595091107244e-5,2.331696995481848e-8,-0.0012476814413027032,4.395208150458591e-5,2.3471965518926978e-8,-0.0012474066926813987,4.424143994728845e-5,2.3657815110514976e-8,-0.001247262641945451,4.4511219507711075e-5,2.3828756487483382e-8,-0.0012472248755787513,4.469382181566311e-5,2.3943301525145774e-8,-0.0012472435198697964,4.474664503382738e-5,2.3975912178036033e-8,-0.001247259506344416,4.466205719091103e-5,2.3922954185837815e-8,-0.0012472217473297215,4.446513739596869e-5,2.3801066644975018e-8,-0.0012470987187946957,4.420202198632878e-5,2.3639715221988536e-8,-0.0012468817729012385,4.392519162060175e-5,2.3471897838937096e-8,-0.0012465817445801888,4.368137901444268e-5,2.3326586331146017e-8,-0.0012462224178688196,4.3504603084736476e-5,2.3224476425034505e-8,-0.0012458339394664786,4.3413868956406416e-5,2.317671064191687e-8,-0.0012454477067935401,4.341371210977519e-5,2.318536732956266e-8,-0.001245092875503066,4.349582099726864e-5,2.3244572533892913e-8,-0.001244793861427751,4.364070138997217e-5,2.334159650208275e-8,-0.0012445680145702208,4.381919330597018e-5,2.3457855646996076e-8,-0.0012444228840729505,4.399437802864513e-5,2.35701808197754e-8,-0.0012443530695937283,4.4124913953168016e-5,2.3652983748257247e-8,-0.0012443375127046577,4.4170905959475854e-5,2.36819578137255e-8,-0.001244339050323051,4.410267397222573e-5,2.3639490947179656e-8,-0.0012443085409083597,4.391102098493597e-5,2.352090842966235e-8,-0.0012441949428326805,4.361529559426061e-5,2.3339274923289387e-8,-0.0012439599109511782,4.3264248999509696e-5,2.3125688607710063e-8,-0.0012435919172900148,4.292632418466513e-5,2.2923014333021052e-8,-0.0012431132807987672,4.2670863701421686e-5,2.2774032688701237e-8,-0.0012425758812366372,4.2547004754978845e-5,2.2708303443627026e-8,-0.001242046681417017,4.256875652229016e-5,2.273310098467663e-8,-0.0012415887940260054,4.2711639999148036e-5,2.2831736522023835e-8,-0.0012412448848635037,4.292095325018456e-5,2.2969151481539737e-8,-0.0012410276081992223,4.312771971755229e-5,2.310214052847942e-8,-0.0012409187405165644,4.3266945611404475e-5,2.3190749585606232e-8,-0.001240876179833917,4.329319757536537e-5,2.3207763152117412e-8,-0.0012408462077011405,4.3189822733976015e-5,2.314410023143346e-8,-0.001240777320283415,4.297005585476495e-5,2.3009154427995445e-8,-0.0012406317702474867,4.267059575677806e-5,2.2826536022629307e-8,-0.0012403919863629748,4.234042689642282e-5,2.26269926746929e-8,-0.0012400610415698615,4.2028799199970334e-5,2.2440951581700866e-8,-0.0012396584394359302,4.1775753442481906e-5,2.229275950494211e-8,-0.001239213642370792,4.160681735016447e-5,2.2197568374873713e-8,-0.001238759622997134,4.153164993599383e-5,2.21606545642313e-8,-0.0012383277669794706,4.154532626799311e-5,2.217831390256571e-8,-0.0012379443945620973,4.163077699858882e-5,2.223941511624005e-8,-0.0012376284470835346,4.17613701854737e-5,2.2327028899360917e-8,-0.0012373896362990083,4.190335157601163e-5,2.2420000164546246e-8,-0.001237226498897373,4.201852746249583e-5,2.2494706995441768e-8,-0.0012371242703294284,4.2068080603654364e-5,2.2527507113518604e-8,-0.0012370533291036505,4.201858038815096e-5,2.249845761104157e-8,-0.001236970018387961,4.18506164139745e-5,2.239652980094868e-8,-0.0012368223070618539,4.1568658962976625e-5,2.2225481522563593e-8,-0.0012365619116138991,4.120801712255095e-5,2.2007914498811416e-8,-0.0012361611416612153,4.083280694899721e-5,2.1783828379414836e-8,-0.001235627714205694,4.052073423663693e-5,2.1601104914924004e-8,-0.0012350082702082678,4.0337708897671565e-5,2.149979267276202e-8,-0.0012343757042772982,4.031356310619789e-5,2.1497194944095898e-8,-0.0012338050721628741,4.043155020851939e-5,2.1581628688838263e-8,-0.001233349834870539,4.063630930677973e-5,2.1717708568439122e-8,-0.0012330286624901638,4.0854394434720134e-5,2.1859385815913868e-8,-0.001232825543872876,4.1016780529853954e-5,2.1964061307544442e-8,-0.0012326994687433222,4.1075328421856106e-5,2.20027389188401e-8,-0.001232597984556413,4.1010377237678075e-5,2.196447509602127e-8,-0.0012324701701386766,4.083038763729262e-5,2.1855784862297425e-8,-0.0012322765508626758,4.0566046838917725e-5,2.1696628675659008e-8,-0.0012319949600370919,4.026131873137667e-5,2.151464212796346e-8,-0.0012316222127142264,3.996359807215556e-5,2.1339009160521587e-8,-0.0012311720726316338,3.971485937041825e-5,2.1195127901571155e-8,-0.001230670573013148,3.954524762662862e-5,2.1100877649413684e-8,-0.0012301501032358588,3.946977464651513e-5,2.1064790494578928e-8,-0.0012296436170803153,3.9487963552311815e-5,2.108595595697376e-8,-0.0012291799191749856,3.958568949318732e-5,2.1155185653788322e-8,-0.0012287803742935324,3.973818698101526e-5,2.1256853700710867e-8,-0.001228456809047748,3.991337515449703e-5,2.1370956879184295e-8,-0.0012282101383242943,4.007518264093764e-5,2.1475236423481508e-8,-0.0012280293349605576,4.0187061533075706e-5,2.1547450730279715e-8,-0.0012278906587169442,4.0216265386799466e-5,2.1568075140606426e-8,-0.001227757733952711,4.0139660658889306e-5,2.152381649965794e-8,-0.001227584040852701,3.995131561109933e-5,2.141206714008766e-8,-0.0012273199557392438,3.9670437193476325e-5,2.1245481814044025e-8,-0.0012269256617048919,3.934568255249432e-5,2.1054357934419238e-8,-0.001226387988600605,3.9049849819512705e-5,2.088324803621528e-8,-0.0012257337792927004,3.886073981427376e-5,2.077925099285005e-8,-0.001225029176986983,3.8832259555441034e-5,2.0774438780732722e-8,-0.0012243597146831978,3.897014608672804e-5,2.087118383561181e-8,-0.001223799174185458,3.922790438935534e-5,2.1039910874573118e-8,-0.0012233842237546633,3.952612757691313e-5,2.123118242844517e-8,-0.001223107335217403,3.9782946538246464e-5,2.139456934167179e-8,-0.0012229273220081428,3.993907780657064e-5,2.1494114292522025e-8,-0.001222787747765819,3.996887325239496e-5,2.1515041468992588e-8,-0.0012226337779387417,3.987869845089384e-5,2.1462498186417195e-8,-0.0012224231672501788,3.9698352797038394e-5,2.135591073507243e-8,-0.001222131287192134,3.94706075535104e-5,2.1222223071618265e-8,-0.0012217517999359017,3.924165377627985e-5,2.1089871554669243e-8,-0.0012212945943425393,3.905340977839935e-5,2.0984126176207197e-8,-0.0012207820344604945,3.8937868022761935e-5,2.0923847255017387e-8,-0.0012202442110411317,3.891356765329418e-5,2.0919587003276005e-8,-0.0012197138193019857,3.898419985757117e-5,2.0972925719657997e-8,-0.0012192212575737466,3.913919956043711e-5,2.1076902982625034e-8,-0.0012187904880345962,3.9356035455342134e-5,2.1217396945348294e-8,-0.001218436045934365,3.960367962125383e-5,2.1375213106972125e-8,-0.00121816125440768,3.9846620466140236e-5,2.1528562534707792e-8,-0.0012179574526165029,4.004903399140244e-5,2.165570613461297e-8,-0.0012178040605647724,4.0179078031285165e-5,2.1737684879836926e-8,-0.001217669467291421,4.021348370120589e-5,2.1761144819940345e-8,-0.0012175131332450237,4.014272182328031e-5,2.1721351070588032e-8,-0.001217289990042325,3.997662689165655e-5,2.162532349147562e-8,-0.0012169585457825218,3.9749007528304005e-5,2.1494297600574853e-8,-0.0012164931847068905,3.9517836703297245e-5,2.136358703249228e-8,-0.0012158983378917096,3.9356329110915773e-5,2.1277115324960004e-8,-0.0012152176438466392,3.9332104759699913E-05,2.127493647531436e-8,-0.001214528479586985,3.947928991470707e-5,2.1376600643727462e-8,-0.0012139177363669367,3.9778311663362115e-5,2.1569180758206194e-8,-0.0012134484162272517,4.015900048914238e-5,2.180933946924029e-8,-0.0012131363021741985,4.052837642935356e-5,2.2040280902569133e-8,-0.0012129497831343294,4.080665261167639e-5,2.2213672818770073e-8,-0.0012128291159121656,4.095125233841926e-5,2.230428148992462e-8,-0.001212710628911282,4.096082546243361e-5,2.2312340353820234e-8,-0.0012125440419645064,4.0864936103992574e-5,2.2257017392004202e-8,-0.0012122998065612566,4.070927702557695e-5,2.2167052698862267e-8,-0.001211969092054254,4.054291261138361e-5,2.207270204179144e-8,-0.0012115601294701622,4.04096307802744e-5,2.2000393390250897e-8,-0.0012110935055385707,4.034290695442932e-5,2.1969806882960636e-8,-0.001210597514896922,4.0363263803066746e-5,2.1992540281281542e-8,-0.001210103734529621,4.047720018381726e-5,2.2071717239761007e-8,-0.0012096427900898502,4.0677387217859966e-5,2.22022573473533e-8,-0.0012092403935229314,4.094407090176532e-5,2.237175494917936e-8,-0.0012089138646246408,4.124773087837309e-5,2.2562054742508997e-8,-0.001208669509931094,4.155294488543246e-5,2.2751575294808985e-8,-0.0012085012343950414,4.1823087158483395e-5,2.2918206290301382e-8,-0.0012083905541689021,4.20253509279023e-5,2.304245225579731e-8,-0.0012083080279941285,4.213570362400274e-5,2.3110503419034456e-8,-0.0012082161114372763,4.2143459888724324e-5,2.3116949841108062e-8,-0.0012080735324706796,4.2055159230597596e-5,2.3066900585552403e-8,-0.001207841533426535,4.189723091537656e-5,2.297724001603263e-8,-0.0012074923383279116,4.171613868549196e-5,2.2876363669851336e-8,-0.001207019283053891,4.157362669411139e-5,2.2801120538061767e-8,-0.0012064459189305014,4.1534493783767346e-5,2.2789521758592166e-8,-0.0012058286024298984,4.164656524482071e-5,2.2869009240234377e-8,-0.0012052460554162017,4.19184087749905e-5,2.3043477200400544e-8,-0.0012047743940046401,4.2307229374438395e-5,2.3286316882609802e-8,-0.0012044572585227797,4.272895499439604e-5,2.3546579750409415e-8,-0.001204288381331058,4.308962693418823e-5,2.376779519103741e-8,-0.0012042176630236775,4.332107815521141e-5,2.390938507508682e-8,-0.0012041753802073372,4.340093341660907e-5,2.3958706867713977e-8,-0.00120409843142815,4.335014281596996e-5,2.3929491995290315e-8,-0.0012039461046134032,4.3216266495513626e-5,2.3851510393422998e-8,-0.0012037033879847602,4.305483536435831e-5,2.3758982441867673e-8,-0.001203376539335363,4.291599030590616e-5,2.368228317218689e-8,-0.00120298613557427,4.283755592078561e-5,2.364376268900528e-8,-0.00120256066507784,4.2842730196850536e-5,2.365655954004364e-8,-0.0012021315896690958,4.29401323049733e-5,2.3724918753893763e-8,-0.0012017295357681474,4.3124764351869256e-5,2.384500705422323e-8,-0.0012013810188355309,4.3379445958178134e-5,2.400589014719376e-8,-0.0012011053959982453,4.367684303151363e-5,2.4190760318183176e-8,-0.0012009120711434845,4.3982426851927915e-5,2.4378686124360526e-8,-0.001200798320179096,4.4258666524398955e-5,2.4547135559008024e-8,-0.0012007483813156155,4.447035815567847e-5,2.4675237441635286e-8,-0.0012007344048218429,4.45904789956841e-5,2.4747373111654414e-8,-0.0012007195396916456,4.4605667043112055E-05,2.475647427648304e-8,-0.0012006630679124704,4.4520319606676825e-5,2.4706349244549025e-8,-0.0012005271433299393,4.435834252862902e-5,2.4612444809990292e-8,-0.0012002844344340745,4.416178423355356e-5,2.450065938028214e-8,-0.0011999257549066937,4.39856842762662e-5,2.4403951995426074e-8,-0.0011994662184232547,4.3888471317910234e-5,2.435650342589999e-8,-0.001198947460842372,4.3917923813857226e-5,2.43855173915342e-8,-0.001198432684587654,4.409482178445086e-5,2.4501884310528832e-8,-0.0011979921332492878,4.43998509534339e-5,2.469284335350204e-8,-0.00119768078598594,4.4772044938470945e-5,2.492136091235081e-8,-0.0011975168459692923,4.512476493318901e-5,2.5135693210741254e-8,-0.00119747326559844,4.53756385533257e-5,2.528710231716238e-8,-0.0011974888649364393,4.547604253094459e-5,2.5347319618533324e-8,-0.0011974930862349044,4.542451975687877e-5,2.5316491092253453e-8,-0.0011974302262546881,4.525952548655604e-5,2.5218719541367353e-8,-0.0011972721728209824,4.5039793706352555e-5,2.509006550443868e-8,-0.0011970183063790395,4.48245155389913e-5,2.4966396418741908e-8,-0.001196687932279745,4.4660550904328974e-5,2.487559033145641e-8,-0.0011963111623788396,4.457738285834904e-5,2.4834604037411308e-8,-0.0011959215436754737,4.45871920184613e-5,2.4849769736576936e-8,-0.0011955511692190652,4.468712727908596e-5,2.4918432734679642e-8,-0.0011952275920148667,4.486193679281758e-5,2.5030717037665653e-8,-0.001194971551310585,4.508639373150898e-5,2.5171047327290172e-8,-0.001194794863314542,4.5327777567539424e-5,2.5319623085596163e-8,-0.001194698341899172,4.554901617532855e-5,2.5454274898017947e-8,-0.0011946701458042791,4.5713081220382614e-5,2.555310251854561e-8,-0.0011946854231435274,4.5788787339589856e-5,2.5597980508971714e-8,-0.0011947082714650892,4.575734391539159e-5,2.5578493326096783e-8,-0.0011946966519119835,4.561819225984636e-5,2.5495358009355167e-8,-0.0011946100335258174,4.539218001394653e-5,2.536213072497259e-8,-0.0011944184455051122,4.512031317912244e-5,2.5204163446924352e-8,-0.0011941107653257608,4.485734384224478e-5,2.5054453515492776e-8,-0.0011936999083235803,4.466088478508766e-5,2.4946937452023213e-8,-0.0011932230592092813,4.457796164782929e-5,2.4908499047797812e-8,-0.001192735881163747,4.463180004644925e-5,2.4951402925395812e-8,-0.0011923007264965835,4.481237616870531e-5,2.506816181625162e-8,-0.001191970530689217,4.507461064861558e-5,2.523093820360962e-8,-0.0011917724140860335,4.5347229185161454e-5,2.5397066980609755e-8,-0.0011916972032087528,4.5552150560644986e-5,2.552053976524705e-8,-0.0011917008223672682,4.5628853227269786e-5,2.55662585680403e-8,-0.001191718836140086,4.55536438037028e-5,2.5521241678494558e-8,-0.0011916882079971906,4.534483429463704e-5,2.5397506076360736e-8,-0.0011915661764232738,4.50523352358896e-5,2.52256885925892e-8,-0.0011913387387294007,4.47385355732246e-5,2.504346293478613e-8,-0.0011910180546011024,4.446011631860293e-5,2.4884567965759092e-8,-0.0011906333941084394,4.425692301702829e-5,2.4772196056940904e-8,-0.0011902211184680275,4.414860982271032e-5,2.4717178867113547e-8,-0.0011898169790774708,4.4136455261757274e-5,2.4719329452121577e-8,-0.0011894514485054754,4.420725000515381e-5,2.4769977404092045e-8,-0.0011891472970888017,4.43372203473938e-5,2.4854416724191735e-8,-0.0011889182539292847,4.449528806773453e-5,2.4953861754942293e-8,-0.0011887678749798924,4.464592966057503e-5,2.504712463555681e-8,-0.0011886883030289687,4.4752380198887884e-5,2.5112510632544797e-8,-0.0011886592771498138,4.478098874931083e-5,2.5130424449580425e-8,-0.0011886483992062577,4.4707117457076194e-5,2.5086889829383304e-8,-0.0011886140329250244,4.4522010180780784e-5,2.4977592415005244e-8,-0.0011885119078034235,4.4238713784012066e-5,2.4811273251672534e-8,-0.0011883051844906306,4.3894051675223444e-5,2.461069041472246e-8,-0.0011879756183442926,4.354386275480496e-5,2.4409531085824178e-8,-0.0011875317045031677,4.3250911754683235e-5,2.4244998266980886e-8,-0.001187009814984017,4.306830808202916e-5,2.4147865942933328e-8,-0.0011864667588603476,4.302388062774488e-5,2.4133330210664937e-8,-0.0011859656180111609,4.3111034611001064e-5,2.4195943412766552e-8,-0.0011855592107146609,4.328925296709795e-5,2.4310387221332328e-8,-0.0011852761111206852,4.349413359054941e-5,2.443782423047731e-8,-0.0011851131455521931,4.3654131747047644e-5,2.4535986395746288e-8,-0.0011850365116463047,4.370946428713365e-5,2.4570271546609728e-8,-0.0011849914632903148,4.362784368851426e-5,2.4522773768495008e-8,-0.001184917896100419,4.341215487751708e-5,2.43964861556252e-8,-0.0011847668283073867,4.3097519747167916e-5,2.4213256739576758e-8,-0.001184512183165127,4.273915270154866e-5,2.400637699709233e-8,-0.001184154359433377,4.239606712181469e-5,2.381082880477647e-8,-0.001183715829325232,4.211673537541401e-5,2.3654834718410355e-8,-0.001183232091457753,4.193072848064575e-5,2.355508585492585e-8,-0.001182742076052658,4.184692919527811e-5,2.351593181722576e-8,-0.001182280783554334,4.185637277082278e-5,2.3531280291149167e-8,-0.0011818749650736491,4.193705913158789e-5,2.3587563717348847e-8,-0.0011815412371566454,4.20587459208501e-5,2.3666591547139997e-8,-0.001181285518418681,4.218688550045602e-5,2.374784651401943e-8,-0.0011811028444095974,4.2285853886151184e-5,2.381037385561812e-8,-0.001180977123076948,4.232217251513254e-5,2.3834703066651765e-8,-0.0011808810539391222,4.2268560697046846e-5,2.3805269882627502e-8,-0.0011807771612472478,4.2109361969074505e-5,2.3713602572318883e-8,-0.0011806214602274067,4.1846957049957275e-5,2.356200196449372e-8,-0.0011803711677501327,4.150714518977967e-5,2.3366529209186637e-8,-0.0011799963986054275,4.113978509884284e-5,2.3157162420999488e-8,-0.0011794927933482826,4.08108363408142e-5,2.2972909369344754e-8,-0.0011788890049142986,4.058504354233647e-5,2.2851491515976213e-8,-0.0011782430294203484,4.050438512482597e-5,2.2816671906510717e-8,-0.0011776263052778516,4.0571991173592686e-5,2.2868981508891815e-8,-0.0011771016155169122,4.074982996867079e-5,2.2984703383283737e-8,-0.0011767044632477951,4.097122380197114e-5,2.3123630234264177e-8,-0.0011764349839248737,4.1161829736862925e-5,2.3241707139593455e-8,-0.0011762614801303043,4.1260299791107996e-5,2.330328303434297e-8,-0.0011761320404088328,4.1232336783918625e-5,2.328924297558214e-8,-0.0011759893133244327,4.1075838938516295e-5,2.3199711124094704e-8,-0.0011757842580515552,4.081779203779472e-5,2.3051819147004552e-8,-0.001175486057786376,4.050513963720658e-5,2.2873984543674025e-8,-0.0011750866908770193,4.0192525827399625e-5,2.2698514425147638e-8,-0.0011745998913217442,3.9930000443378806e-5,2.2554401861589946e-8,-0.0011740555181366963,3.975350915748105e-5,2.2461942074838184e-8,-0.0011734914447389271,3.967996159531561e-5,2.2430123462058758e-8,-0.001172945410878914,3.970705295686038e-5,2.245677720924922e-8,-0.0011724486794790487,3.981662159239835e-5,2.2530685939862905e-8,-0.0011720222605774908,3.997974255206267e-5,2.263458529327139e-8,-0.0011716754580197422,4.0161947727554296e-5,2.274816904236688e-8,-0.0011714059108263474,4.032766224367516e-5,2.285064391621753e-8,-0.0011712002787532773,4.044378850159482e-5,2.2922839703133115e-8,-0.001171035100466492,4.048293650443117e-5,2.2949153547451752e-8,-0.0011708778846540614,4.042697766162125e-5,2.2919658210313572e-8,-0.0011706891457959967,4.0271429475899425e-5,2.2832600750891778e-8,-0.001170426728995793,4.0030416719605716e-5,2.269711830719015e-8,-0.0011700538042031948,3.9740414742010276e-5,2.253517245414926e-8,-0.0011695506069301434,3.945916078722506e-5,2.2380689483545792e-8,-0.0011689268944945577,3.9255517922141815e-5,2.227353935744273e-8,-0.001168228173677312,3.918909798715985e-5,2.224769728531718e-8,-0.0011675279781217165,3.9285907063139966e-5,2.2317220439852915e-8,-0.0011669049542857158,3.952322670802093e-5,2.24676871654407e-8,-0.0011664145207980038,3.9834885125080155e-5,2.265953681114611e-8,-0.001166070295452867,4.013563731944959e-5,2.2842517129925196e-8,-0.0011658440641923867,4.035108613749354e-5,2.2973299450432576e-8,-0.0011656808972777184,4.043846993678506e-5,2.302764914878378e-8,-0.0011655191438936243,4.039246802510346e-5,2.300366653105076e-8,-0.0011653067613803536,4.023909875147127e-5,2.291788321046429e-8,-0.001165010689103841,4.002390781978695e-5,2.2797942341975254e-8,-0.0011646197556137458,3.979940906101893e-5,2.2674938420648966e-8,-0.0011641429633779334,3.961443280877213e-5,2.2577103601577477e-8,-0.0011636049134929856,3.950632417993853e-5,2.252541402741315e-8,-0.0011630396411959254,3.9496218494349576e-5,2.253115281543781e-8,-0.001162483900516477,3.95874667786907e-5,2.2595320378682432e-8,-0.0011619709327954436,3.976699600781008e-5,2.2709638135691125e-8,-0.0011615255979191684,4.000893838449559e-5,2.2858712233979922e-8,-0.0011611613858706039,4.0279582776409567e-5,2.3022849008527116e-8,-0.001160879376169587,4.054263299169933e-5,2.3181024514051384e-8,-0.0011606687592218374,4.076394687408465e-5,2.3313608208272293e-8,-0.0011605083240079387,4.09154288041749e-5,2.3404666156265128e-8,-0.00116036847554564,4.097823517679709e-5,2.34438834621506e-8,-0.0011602136824594566,4.0945659648512586e-5,2.3428227761797474e-8,-0.0011600057215318002,4.0826012397539306e-5,2.3363471925632195e-8,-0.0011597086232655231,4.0645264473458956e-5,2.326545539839303e-8,-0.0011592962457193116,4.0447999006798314e-5,2.3160337368834338e-8,-0.00115876229853727,4.0293821820255384e-5,2.3082332980724006e-8,-0.0011581301558147067,4.0245920350732926e-5,2.3067127381392428e-8,-0.0011574563121098651,4.035081622828792e-5,2.3140425634618856e-8,-0.0011568199270357543,4.061526212816023e-5,2.3304961265381497e-8,-0.0011562968471505665,4.099409631845051e-5,2.353376588241085e-8,-0.0011559290458727804,4.140161770840252e-5,2.3776854904296303e-8,-0.0011557078806939019,4.1744238983237644e-5,2.3980097768470524e-8,-0.0011555814912751524,4.195588110422897e-5,2.4105697188319998E-08,-0.001155479481195814,4.201658493401853e-5,2.4142985129680127e-8,-0.00115533863075793,4.194919447273282e-5,2.4106395513946268e-8,-0.0011551182129401877,4.1802901903976074e-5,2.4025610864818883e-8,-0.0011548035981328402,4.163510488935334e-5,2.3934641492285587e-8,-0.0011544024679921467,4.149790402491649e-5,2.3863731188845464e-8,-0.0011539381598193543,4.143037373269924e-5,2.3834886083816383e-8,-0.0011534428504190312,4.145529592249755e-5,2.3860242372633465e-8,-0.0011529515734318722,4.157867605802834e-5,2.3942156152824156e-8,-0.001152497126030711,4.17910018793201e-5,2.407424330087287e-8,-0.00115210581430915,4.2069853360416185e-5,2.4243037050196697e-8,-0.001151794185245135,4.238365328686831e-5,2.4430139497299415e-8,-0.0011515669930675036,4.269628302794372e-5,2.461478437537122e-8,-0.0011514166348674099,4.2972125399724006e-5,2.4776661433350763e-8,-0.0011513241096236361,4.318091082678523e-5,2.4898702175336794e-8,-0.0011512612721551612,4.330181717597658e-5,2.496949457208967e-8,-0.001151194039557355,4.332656629776271e-5,2.4985098203453446e-8,-0.0011510862887999457,4.326145348232724e-5,2.4950132422663092e-8,-0.0011509043845628019,4.312830423117919e-5,2.4878096818187747e-8,-0.0011506225888506414,4.296414251839801e-5,2.4790856099194497e-8,-0.0011502295873348479,4.281860836006933e-5,2.4716871495239724e-8,-0.0011497354598191344,4.27473669523015e-5,2.4687324428481763e-8,-0.0011491767132249047,4.27998987093043e-5,2.4729297172923822e-8,-0.0011486149745644995,4.300208635109734e-5,2.4856210146960896e-8,-0.0011481242788471762,4.333890754543513e-5,2.505836780419132e-8,-0.0011477663805973333,4.37484335258334e-5,2.529978271595454e-8,-0.0011475638693054652,4.413754488074797e-5,2.552713565537854e-8,-0.0011474880690233208,4.441675095791563e-5,2.5689536506059154e-8,-0.0011474716437174161,4.4535329714636256e-5,2.5758576446798924e-8,-0.0011474381423005444,4.4496153607781065e-5,2.573686319342581e-8,-0.0011473298248947472,4.434525522139947e-5,2.5651963688180006e-8,-0.0011471206519927625,4.4148021131686344e-5,2.5542431090685233e-8,-0.0011468143867924144,4.396712744434881e-5,2.5444745012451112e-8,-0.001146435178096694,4.384958556407789e-5,2.538566338712817e-8,-0.0011460173053052653,4.382244135856911e-5,2.537984964690841e-8,-0.0011455972066733823,4.389369052636168e-5,2.543072424927479e-8,-0.001145208205189756,4.4055310810386594e-5,2.553258147049571e-8,-0.0011448771116926027,4.4286732802865605e-5,2.5672846892049696e-8,-0.001144621838537778,4.455834866317327e-5,2.5834176207532318e-8,-0.0011444496596464482,4.483524010238264e-5,2.5996533958276677e-8,-0.0011443561757723407,4.508136367107901e-5,2.6139484084071172e-8,-0.001144325302176957,4.526422796836885e-5,2.624479996609313e-8,-0.0011443306796744088,4.5359678801102835e-5,2.629920696942144e-8,-0.001144338684074093,4.535607232962796e-5,2.6296805202445227e-8,-0.0011443128443530714,4.525711697688811e-5,2.6240674007741413e-8,-0.0011442192204715602,4.5082805045375516e-5,2.6143256225398415e-8,-0.0011440321422607781,4.4868033997148654e-5,2.6025290536327584e-8,-0.0011437397009143968,4.465876200865301e-5,2.5913293776335838e-8,-0.0011433483936894827,4.450556201387472e-5,2.5835666573269417e-8,-0.0011428859132346458,4.4454301330230345e-5,2.5817407374967364e-8,-0.0011424002463549068,4.4534205124580296e-5,2.587362598157788e-8,-0.0011419527122034946,4.474530750720313e-5,2.600289980431649e-8,-0.0011416033368196802,4.505002810376823e-5,2.618294554588382e-8,-0.001141390428908636,4.5375931822066494e-5,2.6372385764556846e-8,-0.0011413123883100827,4.5634818511907473e-5,2.6521473534591453e-8,-0.001141323589395823,4.5754058078499044e-5,2.6589641295518906e-8,-0.0011413505127724332,4.570482861131677e-5,2.65614039044391e-8,-0.0011413207093381398,4.5510745451041515e-5,2.6451239643199213e-8,-0.001141188094617734,4.523323032317512e-5,2.6295158823665544e-8,-0.0011409425267060696,4.494512245552072e-5,2.613539055975473e-8,-0.0011406039242835295,4.470782444666231e-5,2.6007055239340012e-8,-0.001140209199720666,4.455976514490526e-5,2.5931497221064563e-8,-0.0011397998215520568,4.451513360626569e-5,2.591575701768682e-8,-0.001139413450043509,4.456814837601221e-5,2.595536246540539e-8,-0.0011390795966643849,4.469876670368622e-5,2.60379203690528e-8,-0.0011388178217883774,4.487777100093782e-5,2.614620234117578e-8,-0.001138637029323737,4.507087406977781e-5,2.6260499784491232e-8,-0.0011385351171898522,4.524231213375679e-5,2.636058011508952e-8,-0.001138498908997064,4.5358536475447353e-5,2.6427687830903223e-8,-0.001138504742717813,4.539239795883406e-5,2.6446876610957435e-8,-0.0011385203577618363,4.5327686077719404e-5,2.6409596426616204e-8,-0.001138508626476679,4.5163215308385346e-5,2.6316020938140107e-8,-0.001138433164520453,4.491524922861346e-5,2.617635271007851e-8,-0.0011382651611644248,4.461705208805853e-5,2.60103768433134e-8,-0.0011379901212315725,4.431475914112068e-5,2.5844832363761734e-8,-0.0011376128472153897,4.405962607495448e-5,2.5708742448517676e-8,-0.0011371591432191399,4.38977377850055e-5,2.5627459120037902e-8,-0.0011366732292220137,4.385892899825392e-5,2.561652405049774e-8,-0.0011362103950232623,4.394710877414942e-5,2.5676581411835278e-8,-0.0011358251542952108,4.413475261191414e-5,2.5790765942044402e-8,-0.0011355565320898134,4.436471443508226e-5,2.5926126309661128e-8,-0.0011354142388612493,4.456177182242592e-5,2.6040272006294392e-8,-0.0011353715564004837,4.4653360616528623e-5,2.6092925147649926e-8,-0.0011353705510015804,4.459362909579968e-5,2.605922322764486e-8,-0.0011353404038372476,4.4380227560943225e-5,2.5938971302698022e-8,-0.0011352217466509087,4.405454262243014e-5,2.5756616732937143e-8,-0.0011349852948189293,4.368490247039827e-5,2.5551578991552723e-8,-0.0011346366674042077,4.334216194977203e-5,2.5364227495662016e-8,-0.001134208126523297,4.307971922662928e-5,2.5224447033233243e-8,-0.0011337443916172296,4.292448780803408e-5,2.5146609857361533e-8,-0.0011332897864486306,4.287791196077834e-5,2.5130427988720302e-8,-0.0011328801743606684,4.292232941936807e-5,2.5164886702881576e-8,-0.0011325395437544183,4.302832693352377e-5,2.5232645329543546e-8,-0.0011322795036267984,4.316082969546979e-5,2.5313558114926845e-8,-0.0011320999644248192,4.328354167402069e-5,2.538712994851353e-8,-0.0011319900022255828,4.336233306022805e-5,2.5434328063291953e-8,-0.0011319286947636842,4.336840808418778e-5,2.5439298179225213e-8,-0.0011318863330729578,4.328188187579225e-5,2.5391365668682646e-8,-0.001131826798984989,4.309582777844892e-5,2.5287327028303578e-8,-0.0011317119237820342,4.282000536402383e-5,2.513352362103692e-8,-0.0011315081184450266,4.248267021715128e-5,2.4946745756693704e-8,-0.0011311944679122136,4.212855215251888e-5,2.47528810798855e-8,-0.001130770145740669,4.181171313272162e-5,2.458263730132284e-8,-0.0011302581872849279,4.158375073838242e-5,2.446470685820663e-8,-0.0011297031604086858,4.1480108144529596e-5,2.4418045723061402e-8,-0.001129162188693781,4.15087736209508e-5,2.4445738038119535e-8,-0.001128691235841923,4.164541695493883e-5,2.453267453652789e-8,-0.0011283303644603515,4.1837167858544846e-5,2.464812593336712e-8,-0.0011280922029762194,4.201470996660632e-5,2.4752841228200912e-8,-0.0011279572033331556,4.2109977185660934e-5,2.480903447905591e-8,-0.0011278777807429035,4.2074869072542864e-5,2.4790706388729773e-8,-0.0011277911058960631,4.189530837193729e-5,2.4691226160505966e-8,-0.0011276372138476932,4.15954194176583e-5,2.4525357679971217e-8,-0.0011273763094417542,4.1229584247699144e-5,2.4324526909304625e-8,-0.0011269987883137111,4.0865150594873515e-5,2.4126913313744505e-8,-0.0011265246487921932,4.056282496645149e-5,2.396636013648397e-8,-0.0011259939870450367,4.0362229990203176e-5,2.3864352719984643e-8,-0.0011254538280006646,4.027651035222083e-5,2.3827236887481313e-8,-0.0011249466443459084,4.029509964658356e-5,2.3848081936514294e-8,-0.0011245033782163948,4.0390924133027086e-5,2.3910968573532058e-8,-0.0011241409403492657,4.052829514471608e-5,2.3995517170635476e-8,-0.00112386263638038,4.066934213518109e-5,2.4080458369857855e-8,-0.001123659844043524,4.077852227744454e-5,2.4146059818045725e-8,-0.0011235138537491161,4.082575535334954e-5,2.417579891950277e-8,-0.0011233975399612892,4.078906093563617e-5,2.4157813543967808e-8,-0.0011232772130354719,4.065741806846923e-5,2.4086515680471002e-8,-0.0011231154772805123,4.043402590037051e-5,2.3964410167377178e-8,-0.0011228760409062776,4.0139252991621545e-5,2.380366568263808e-8,-0.0011225309508780508,3.9811507466245704e-5,2.362643573893063e-8,-0.0011220694021852218,3.9503593998477884e-5,2.3462607402847364e-8,-0.0011215052868612503,3.927276808058977e-5,2.334405693151438e-8,-0.0011208791815421717,3.916532907922445e-5,2.32959719470691e-8,-0.0011202512996662164,3.9200465609938846e-5,2.332793726446843e-8,-0.001119685750452599,3.936055511280073e-5,2.3428801926640012e-8,-0.0011192313624241938,3.959351310628623e-5,2.3568365483427852e-8,-0.0011189067970222813,3.982728786145331e-5,2.370580293829856e-8,-0.0011186957125675833,3.9990849821071303e-5,2.380156013682102e-8,-0.0011185529359586416,4.003380335406222e-5,2.382827657042045e-8,-0.0011184183604654927,3.9938559297950844e-5,2.3777363910180102e-8,-0.0011182335261142832,3.972257873820071e-5,2.365991178424167e-8,-0.0011179561348970367,3.943138742499119e-5,2.3502406776038373e-8,-0.0011175690250342211,3.9125231705559594e-5,2.333898219278873e-8,-0.0011170818909624026,3.8863484851492184e-5,2.3202592856615218e-8,-0.0011165261146400343,3.869113689297805e-5,2.3117576365828163e-8,-0.0011159450191786187,3.863070018781825e-5,2.309541688994295e-8,-0.001115382950846316,3.8680782729081375e-5,2.3134291481037248e-8,-0.0011148763323054643,3.88202433349568e-5,2.3221657136516122e-8,-0.0011144484116093652,3.9015366788503146e-5,2.333836405534532e-8,-0.0011141077300649053,3.922741200952648e-5,2.3462821981382622e-8,-0.0011138492060015412,3.941880989590515e-5,2.357433208540127e-8,-0.0011136564631223104,3.955748183796071e-5,2.3655382121537695e-8,-0.001113504398766395,3.961966181875024e-5,2.3693174947865333e-8,-0.0011133616119702572,3.9591985478981636e-5,2.3680806672121074e-8,-0.0011131929173312004,3.9473502927766754e-5,2.3618399758240768e-8,-0.001112962646214551,3.927781992830418e-5,2.3514237054040706e-8,-0.0011126396430199091,3.903476453581059e-5,2.338553477815076e-8,-0.0011122044622860591,3.878987372235069e-5,2.325794563447264e-8,-0.0011116579050496058,3.859916050478475e-5,2.3162471082326266e-8,-0.0011110277638066819,3.8517161490373446e-5,2.3128770665243614e-8,-0.0011103686318442126,3.857932217863279e-5,2.317550345585091e-8,-0.0011097504345893342,3.878498007287958e-5,2.3301147042226735e-8,-0.0011092368658773112,3.909083067031221e-5,2.348067606937274e-8,-0.001108862561025627,3.9421677057301995e-5,2.3671766690779e-8,-0.0011086207894536008,3.969541345367182e-5,2.3828789988108746e-8,-0.001108467784835197,3.9850203582443234e-5,2.3917930158623212e-8,-0.0011083400223898265,3.986149013467848e-5,2.3926558339224554e-8,-0.0011081749835332257,3.9744019406875444e-5,2.3864144977322292e-8,-0.0011079272311021648,3.954206227866765e-5,2.3756473773474773e-8,-0.0011075764036130426,3.9314276041815806e-5,2.3636846724881514e-8,-0.0011071276513506274,3.911872082508301e-5,2.353751460723729e-8,-0.001106606712234522,3.9001210256697606e-5,2.3483218868648787e-8,-0.0011060519911277476,3.8988244203939216e-5,2.3487531140898155e-8,-0.001105505670300844,3.908468395961993e-5,2.3551953376769463e-8,-0.001105005565791467,3.927568764132802e-5,2.3667339954019526e-8,-0.0011045790708096976,3.9531788880221474e-5,2.3816896490402398e-8,-0.0011042398847317478,3.9815546406795756e-5,2.397985579796228e-8,-0.0011039874767033147,4.008822786866677e-5,2.413504494817365e-8,-0.0011038086569949937,4.031539899273079e-5,2.4263827315283715e-8,-0.0011036803427045844,4.047087645509333e-5,2.4352204679952328e-8,-0.0011035726966564098,4.053916604625667e-5,2.4392162684179795e-8,-0.0011034522434320714,4.051692930416066e-5,2.438250815301555e-8,-0.0011032850399023103,4.041397991610771e-5,2.4329393420554233e-8,-0.0011030403485004744,4.0253960514007384e-5,2.424655679752155e-8,-0.001102695483905325,4.0074227905403326e-5,2.415503580398189e-8,-0.001102242193580227,3.992352368685253e-5,2.4081660659305638e-8,-0.0011016936673696796,3.985525563697915e-5,2.4055253488353385e-8,-0.0011010891641663526,3.991473667135059e-5,2.409971221190807e-8,-0.0011004912378463276,4.012168328025906e-5,2.422468321626409e-8,-0.0010999711538006204,4.045477360482803e-5,2.4417430252093232e-8,-0.0010995842055226655,4.084938248726866e-5,2.4641830821643385e-8,-0.0010993460929871167,4.121581701041971e-5,2.484844677700392e-8,-0.0010992250658169746,4.1472215284716905e-5,2.4992557013455944e-8,-0.0010991556460179283,4.1574464276116506e-5,2.505058969589844e-8,-0.0010990652089385281,4.1527398961356164e-5,2.5026265284520233e-8,-0.001098898156768374,4.1375312448001e-5,2.4945200752454744e-8,-0.0010986280334354423,4.118167475058328e-5,2.484337320183111e-8,-0.0010982574815838655,4.100937470290851e-5,2.4755843824772127e-8,-0.0010978110406426043,4.090738485072404e-5,2.4709226856153248e-8,-0.0010973257121964122,4.0904499228446404e-5,2.471836767874099e-8,-0.0010968421791160742,4.10083665738254e-5,2.4786177550209052e-8,-0.0010963977347210852,4.120779805968306e-5,2.4905329142025246e-8,-0.0010960210677344888,4.147702335351955e-5,2.506090255556026e-8,-0.0010957289251758702,4.178110279291195e-5,2.5233456325869303e-8,-0.001095524697387541,4.2081778366454555e-5,2.540215364575196e-8,-0.0010953988246681838,4.2343079153780506e-5,2.5547670181248777e-8,-0.0010953307583887954,4.253610901231246e-5,2.5654681311269465e-8,-0.0010952920447938042,4.264254236325311e-5,2.571372890267199e-8,-0.0010952499739452775,4.2656633559821643e-5,2.5722338660353446e-8,-0.0010951713587064734,4.2585944785351156e-5,2.5685421940828945e-8,-0.0010950263137780906,4.245110365085979e-5,2.5615053368196092e-8,-0.001094792159453469,4.2284683294743016e-5,2.5529653777638224e-8,-0.0010944577225138132,4.212890345796607e-5,2.5452477208888395e-8,-0.0010940280855575993,4.2031223829935575e-5,2.5409021613321293e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json new file mode 100644 index 000000000..3a712547f --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_5.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":5000,"numberOfSamples":1000,"samples":[-0.001093528836966317,4.203642676149489e-5,2.5422725793163846e-8,-0.0010930072646208094,4.217440867148639e-5,2.5508574660559997e-8,-0.0010925265640548522,4.2445448281040656e-5,2.566549440168746e-8,-0.0010921498584701538,4.280927315836898e-5,2.5870776828536737e-8,-0.0010919163003251823,4.318794211770871e-5,2.6081780444674054e-8,-0.001091820523294629,4.348883154959585e-5,2.624831762871915e-8,-0.00109181029138295,4.364045659227296e-5,2.6331989440280285e-8,-0.0010918072934319603,4.362110831307491e-5,2.6321766949888615e-8,-0.0010917391971531742,4.346321105608486e-5,2.6236404835428295e-8,-0.0010915640090047574,4.323393624900339e-5,2.611370862534541e-8,-0.0010912766199280236,4.3007345034387695e-5,2.599493426705449e-8,-0.0010909009016498547,4.284299979150903e-5,2.5912727223068096e-8,-0.001090476431342811,4.277625215835485e-5,2.5885719367964947e-8,-0.0010900465218413144,4.2817753215300766e-5,2.5918503099339365e-8,-0.0010896499951765957,4.2957752709860237e-5,2.6004412180594708e-8,-0.0010893164869373976,4.3171842376795946e-5,2.612906955898042e-8,-0.0010890641035068592,4.34265580743787e-5,2.6273675178051805e-8,-0.0010888984776027527,4.3684563677071033e-5,2.6417842719480934e-8,-0.0010888129019089097,4.3909513777838174e-5,2.65421057988998e-8,-0.0010887895341848287,4.407054827337014e-5,2.663018859077577e-8,-0.0010888016920848876,4.4146217427231046e-5,2.667102788931276e-8,-0.001088817192482838,4.4127450376416946e-5,2.6660363442769395e-8,-0.0010888024752733671,4.401909753500576e-5,2.6601590837686793e-8,-0.0010887270459753056,4.383981898364833e-5,2.65056658451493e-8,-0.0010885677996571497,4.362036647066958e-5,2.639002532249307e-8,-0.0010883129235325867,4.3400346577718806e-5,2.627658759927833e-8,-0.0010879651578661836,4.322346930498476e-5,2.6188934255361087e-8,-0.001087544097987234,4.313109216854214e-5,2.6148709458164907e-8,-0.001087086674855694,4.315374123594729e-5,2.617116796712862e-8,-0.001086644066498112,4.330094126455337e-5,2.6260046435218025e-8,-0.0010862728381159504,4.3551620609182124e-5,2.640284239026193e-8,-0.00108601928226965,4.38502022017017e-5,2.656903579292576e-8,-0.0010859001135970722,4.411523709589743e-5,2.6714781887700585e-8,-0.0010858889754997796,4.426383145393484e-5,2.6795876138844725e-8,-0.0010859203351680025,4.424423453619814e-5,2.6785128110422738e-8,-0.001085913618912209,4.4058578601592776e-5,2.668460538734044e-8,-0.001085805393800295,4.376072785978275e-5,2.6524487039470494e-8,-0.0010855708545136362,4.343117507166159e-5,2.6349304657863846e-8,-0.0010852250584937636,4.314592290426317e-5,2.620071963961655e-8,-0.0010848090868554553,4.295570916633156e-5,2.6105975798650347e-8,-0.001084372654611788,4.2880291469861494e-5,2.6074830737518084e-8,-0.0010839610398885847,4.291308032542563e-5,2.6102403255115617e-8,-0.0010836081790852113,4.302959653013973e-5,2.6174200961517643e-8,-0.0010833344520610171,4.3195574161869046e-5,2.6270850944433867e-8,-0.001083146945167361,4.3373198164366636e-5,2.637160337223827e-8,-0.0010830405767407777,4.352569954505452e-5,2.645674242392391e-8,-0.0010829995124754573,4.3621083270509026e-5,2.6509425138913995e-8,-0.001082998991414148,4.363548696163819e-5,2.6517334874121295e-8,-0.0010830078695757855,4.3556232067080865e-5,2.6474252100274967e-8,-0.0010829921546684827,4.338421730365343e-5,2.638134536379059e-8,-0.0010829195457739626,4.313495597945831e-5,2.6247737743075178e-8,-0.0010827645199852117,4.2837568459182473e-5,2.6089894868217516e-8,-0.0010825131481838203,4.2531405839397756e-5,2.5929625306960433e-8,-0.0010821667257754604,4.2260415291339646e-5,2.5790800121408916e-8,-0.001081743391863589,4.2065789758412284e-5,2.5695202717475755e-8,-0.0010812771260442285,4.197779093233889e-5,2.5658116797976546e-8,-0.00108081368235774,4.2007788209395396e-5,2.5684279138019833e-8,-0.0010804030553122393,4.214188129809646e-5,2.5764875776401685e-8,-0.0010800884167244415,4.2338329128859495e-5,2.5876603076949472e-8,-0.001079892778156456,4.2531881372048156e-5,2.598424858567189e-8,-0.001079807154698478,4.264767562282009e-5,2.6048107274120274e-8,-0.0010797867060579334,4.262394191909685e-5,2.6035904077434437e-8,-0.001079760973783162,4.243610779021697e-5,2.593546226975552e-8,-0.0010796577282035234,4.210950720238184e-5,2.5761387251077892e-8,-0.00107942993302375,4.171117273294466e-5,2.555057096694696e-8,-0.001079071274203828,4.132383281774707e-5,2.5348037433669575e-8,-0.001078613065447523,4.101676275871758e-5,2.5191031444188244e-8,-0.0010781076445001167,4.082789625905243e-5,2.509930154443339e-8,-0.0010776094725232313,4.076147500814069e-5,2.507401361434535e-8,-0.0010771620659250866,4.079616385676292e-5,2.5102488709573008e-8,-0.001076792527426751,4.089624684549766e-5,2.5164595184415124e-8,-0.001076511483357941,4.102115014348993e-5,2.523807558214155e-8,-0.001076315486299618,4.1131846253385905e-5,2.530198861820359e-8,-0.00107618985214185,4.1194730844247526e-5,2.533864785318205e-8,-0.0010761111699562399,4.118418519494565e-5,2.5334821170315685e-8,-0.0010760496321073894,4.1084740905426734e-5,2.5282775112651636e-8,-0.0010759717151872302,4.089317638698599e-5,2.5181368331821842e-8,-0.0010758437806077928,4.062025720268964e-5,2.5037000465379675e-8,-0.001075636874965737,4.029124488214523e-5,2.4863872287821255e-8,-0.001075332344175619,3.994403311673042e-5,2.4682887122784044e-8,-0.0010749270772761371,3.962409533524119e-5,2.4518755050929554e-8,-0.0010744366625150808,3.937631781230898e-5,2.439541151761965e-8,-0.0010738948032005251,3.92350369958662e-5,2.433057466908826e-8,-0.0010733481764564313,3.9214698025557454e-5,2.433083409288902e-8,-0.0010728472503692334,3.930384295442124e-5,2.4388737863373705e-8,-0.0010724347731497891,3.94645175457536e-5,2.44828950313044e-8,-0.0010721343835682733,3.9638151634969455e-5,2.458148402653822e-8,-0.001071942205574794,3.9757775235519326e-5,2.4648932372444277e-8,-0.001071824440490328,3.976485588304506e-5,2.4654800605721794e-8,-0.0010717234455627444,3.962693202706781e-5,2.4582909766611626e-8,-0.0010715727554048086,3.935008138551149e-5,2.4437676459267312e-8,-0.0010713175244551965,3.8979848282591754e-5,2.4244352737564492e-8,-0.0010709326265880106,3.858785169979547e-5,2.4041693976913273e-8,-0.0010704300073954966,3.8248525783302696e-5,2.386941805332488e-8,-0.0010698520086136918,3.801636200014798e-5,2.375603419291011e-8,-0.0010692550526086402,3.791333074165718e-5,2.371227592816189e-8,-0.0010686922574283954,3.792939556885814e-5,2.3731673323543086e-8,-0.0010682017404291997,3.80320722103819e-5,2.379598347049132e-8,-0.0010678024504110503,3.8178531959137147e-5,2.3881867002065674e-8,-0.001067495548138812,3.832556322890049e-5,2.3966240581430207e-8,-0.001067268273277274,3.843582509864842e-5,2.4029501058277472e-8,-0.0010670980487706369,3.848102746680633e-5,2.4057051807740725e-8,-0.0010669558863532884,3.844342728250387e-5,2.4039967070581163e-8,-0.001066809160826231,3.8316803241082525e-5,2.3975457859135465e-8,-0.0010666243579828204,3.810746586828673e-5,2.386741669396789e-8,-0.0010663705574710293,3.7835149903862285e-5,2.3726898442079206e-8,-0.0010660241691441985,3.753288897009294e-5,2.3571997852970833e-8,-0.0010655747063436035,3.724442359481839e-5,2.3426335194630528e-8,-0.0010650302250668731,3.701779702157739e-5,2.331547794071486e-8,-0.0010644199291991467,3.68949742785659e-5,2.3261297539301097e-8,-0.001063791223981958,3.6899545236002384e-5,2.327544760228617e-8,-0.0010632000453968727,3.7026820203446666e-5,2.335429289972638e-8,-0.0010626963599818942,3.7241111127013385e-5,2.3477789197827204e-8,-0.0010623095681190381,3.748268981872828e-5,2.3613519575245354e-8,-0.0010620391726174265,3.768289862153553e-5,2.3724946388273585e-8,-0.0010618540779868658,3.7782581455481364e-5,2.3781234371721873e-8,-0.0010617006609737272,3.7748061352030124e-5,2.3765573920194672e-8,-0.0010615170480434892,3.758012724746697e-5,2.367965267011593e-8,-0.0010612495768359004,3.731371428715724e-5,2.3543130785882002e-8,-0.0010608669746345562,3.700835235428079e-5,2.3388256328231037e-8,-0.001060368182069979,3.6731912216637085e-5,2.325105313533104e-8,-0.0010597813426304625,3.654245594481344e-5,2.316169727120985e-8,-0.0010591544075762823,3.647402066316346e-5,2.313718174627855e-8,-0.0010585410167500333,3.653074230958909e-5,2.317853751683003e-8,-0.001057986920975386,3.669012758790272e-5,2.327290785733631e-8,-0.0010575211579176061,3.691257472653399e-5,2.339881300069309e-8,-0.001057153350837812,3.715260399430297e-5,2.3532138314401993e-8,-0.0010568758374386459,3.736812754225494e-5,2.365093104713143e-8,-0.0010566681914793606,3.752620921432137e-5,2.3738273286109503e-8,-0.0010565020401735535,3.760563844652094e-5,2.378349597906288e-8,-0.0010563451015339039,3.759754719033252e-5,2.3782437194464704e-8,-0.0010561643423562313,3.750528822528541e-5,2.3737377447389552e-8,-0.001055928777775758,3.734426906295574e-5,2.365696343832137e-8,-0.0010556126783150875,3.714173971895337e-5,2.3556054900511646e-8,-0.0010551998123746519,3.693577609363618e-5,2.3455071168099988e-8,-0.0010546886977346502,3.677200754758798e-5,2.3378106802298378e-8,-0.001054097575413405,3.66964742503015e-5,2.33490503669857e-8,-0.001053466266416154,3.674410830929957e-5,2.338552532428398e-8,-0.0010528513171096396,3.6925144473778674e-5,2.3491902560416617e-8,-0.0010523125721679219,3.721530665965493e-5,2.365441113669717e-8,-0.0010518941136466624,3.7556866487537555e-5,2.384196911473466e-8,-0.001051607652331739,3.787365765176419e-5,2.4014260649323585e-8,-0.0010514271013640408,3.809514403546298e-5,2.4134458275138142e-8,-0.001051297410707953,3.8178799703989044e-5,2.4180962088243847e-8,-0.001051153003686843,3.812136015142763e-5,2.415318391268279e-8,-0.00105093733776516,3.795628189484318e-5,2.4069945427589834e-8,-0.001050616809646753,3.7741095264425834e-5,2.396246019827039e-8,-0.0010501863481547247,3.754067586859115e-5,2.3865199592522806e-8,-0.0010496673073456411,3.7411575394765774e-5,2.380750812194908e-8,-0.0010490998191358019,3.739064048823195e-5,2.380774834712807e-8,-0.0010485322021737509,3.748944550858809e-5,2.38707245777141e-8,-0.0010480100257824426,3.769477583367159e-5,2.398835336975793e-8,-0.0010475672083879396,3.797425178348991e-5,2.4142928600404912e-8,-0.0010472208647171518,3.8285082197056416e-5,2.4311824887822292e-8,-0.0010469704046910332,3.858335909600687e-5,2.4472287017073512e-8,-0.0010468001087383734,3.883168894481607e-5,2.4605240478689e-8,-0.0010466836675630368,3.900401645641016e-5,2.469763622155349e-8,-0.0010465891449321784,3.9087623690885925e-5,2.4743396088065535e-8,-0.00104648333056439,3.908308679776768e-5,2.4743374271449885e-8,-0.0010463351903678341,3.900321589613522e-5,2.4704818833201865e-8,-0.0010461187174899236,3.887169112109677e-5,2.4640634398441143e-8,-0.0010458157657489216,3.872153411276594e-5,2.456847676636226e-8,-0.0010454194198092652,3.8592904649491364e-5,2.4509434847279802e-8,-0.0010449379598351336,3.85290470767447e-5,2.4485769249212857e-8,-0.0010443983417922637,3.8568960460999586e-5,2.4517067123617403e-8,-0.0010438466104127784,3.8736263817727636e-5,2.4614598497805885e-8,-0.0010433416549984493,3.902636136480175e-5,2.477493404220497e-8,-0.0010429399987465788,3.9398027050649106e-5,2.4975871277955936e-8,-0.0010426746362297934,3.9777843434769186e-5,2.5178904654138547e-8,-0.0010425380922074639,4.0081503788804406e-5,2.5340291710930592e-8,-0.0010424814444555638,4.0244644241275436e-5,2.5427023133151833e-8,-0.0010424322947735387,4.024690202392131e-5,2.5429321392407133e-8,-0.0010423219582340482,4.01162830340403e-5,2.5362869290134385e-8,-0.0010421073140257824,3.9914219183457514e-5,2.526080398688154e-8,-0.0010417790504298643,3.9712303792083824e-5,2.5161204349048078e-8,-0.001041357514815806,3.957206053756882e-5,2.509620077309175e-8,-0.0010408820867983744,3.953305791576254e-5,2.5085701841939114e-8,-0.0010403994183290342,3.960922925354849e-5,2.5135719972456448e-8,-0.001039953473752625,3.979097235888994e-5,2.5239903766051643e-8,-0.0010395783534878653,4.005056096735985e-5,2.538278306056733e-8,-0.0010392939602767437,4.034918264408066e-5,2.5543680164653243e-8,-0.001039104389012981,4.0644480901831106e-5,2.5700644896490313e-8,-0.0010389988421567525,4.089757785496551e-5,2.5833941072896978e-8,-0.0010389545970551956,4.107865514075927e-5,2.5928726316951552e-8,-0.0010389412824983889,4.11705030871186e-5,2.5976731161695342e-8,-0.001038925600905446,4.116986580467381e-5,2.5976894786312716e-8,-0.0010388757116827172,4.108687415422475e-5,2.5935077860987764e-8,-0.0010387648487817887,4.094320887370908e-5,2.586310945168862e-8,-0.0010385741873378635,4.0769583233729096e-5,2.5777407288912374e-8,-0.0010382952268426782,4.0602784133407614e-5,2.569728649515853e-8,-0.0010379320091739295,4.04820837611387e-5,2.564292327050562e-8,-0.0010375031926033312,4.0444330838904017e-5,2.56327270085341e-8,-0.0010370431136598767,4.0516825192555824e-5,2.5679750881275533e-8,-0.0010365998252919112,4.07078727032145e-5,2.5787103029239512e-8,-0.0010362274507746704,4.0997023108730364e-5,2.59432896351184e-8,-0.0010359711779905647,4.133023718538513e-5,2.6120005918730713e-8,-0.0010358476721283505,4.1627586877103866e-5,2.6276137158887212e-8,-0.0010358308191826967,4.180745449119192e-5,2.6370052259346927e-8,-0.0010358552027499252,4.18193769451226e-5,2.6376375102413223e-8,-0.0010358403135057738,4.166678727036104e-5,2.6297719124715485e-8,-0.0010357228189093813,4.140456572009227e-5,2.6163449539399887e-8,-0.0010354780401623975,4.111391003936417e-5,2.6016503918615263e-8,-0.0010351214402610947,4.0871490524131414e-5,2.5897043112633257e-8,-0.0010346952781462417,4.0728626709958974e-5,2.5831362930703574e-8,-0.0010342513894169626,4.070496768499591e-5,2.582864079884688e-8,-0.0010338376130666347,4.0792468598692156e-5,2.588333975697396e-8,-0.001033489928572441,4.09637112677769e-5,2.5979990127741127e-8,-0.0010332292836012598,4.118057987218832e-5,2.6098059615421084e-8,-0.0010330613284611158,4.140165888760393e-5,2.6215931638488723e-8,-0.0010329777530100068,4.158819846524718e-5,2.631390656871405e-8,-0.0010329586810779521,4.170886241656704e-5,2.6376437158564403e-8,-0.001032975936317296,4.1743274993385874e-5,2.6393736765147437e-8,-0.0010329969885598913,4.168421213030391e-5,2.636277559384442e-8,-0.0010329892783965391,4.153821954893292e-5,2.62875676595281e-8,-0.0010329244588995863,4.132454750884092e-5,2.6178635261370543e-8,-0.001032782060381272,4.10726094101633e-5,2.6051674387741775e-8,-0.0010325522769319654,4.0818357819433007e-5,2.5925576579428118e-8,-0.0010322377709549141,4.0599882712942876e-5,2.5819988038191913e-8,-0.0010318544785740738,4.045240035953763e-5,2.575258468299546e-8,-0.001031431325710975,4.0402610592020545e-5,2.5736166079833738e-8,-0.0010310082903914864,4.04622844238969e-5,2.577556155474702e-8,-0.0010306315696239265,4.062155526853457e-5,2.586455506912295e-8,-0.0010303445107737654,4.084394736602622e-5,2.5983723580936618e-8,-0.00103017415051348,4.106712011714914e-5,2.6101034286724267e-8,-0.00103011645990442,4.121429379152592e-5,2.617762452180817e-8,-0.0010301283373702107,4.1218183604357294e-5,2.617978519094077e-8,-0.0010301360479824519,4.1049891214193474e-5,2.6093535091742128e-8,-0.0010300617418679534,4.073592787552085e-5,2.5933314593629573e-8,-0.0010298552834028627,4.0349707833675383e-5,2.5737635695545288e-8,-0.0010295123624857808,3.9981058901976845e-5,2.555325702866578e-8,-0.0010290699371210256,3.970266737753418e-5,2.541762182017323e-8,-0.0010285862799355606,3.95510226577242e-5,2.5348871652570656e-8,-0.001028119665030133,3.952567217658717e-5,2.5345604153804084e-8,-0.0010277146398166707,3.9599592103778894e-5,2.5392608827923747e-8,-0.0010273969445857086,3.9732019239784237e-5,2.54679029136312e-8,-0.0010271741439923543,3.987889635605635e-5,2.554837330653049e-8,-0.0010270387420002831,3.999979218338487e-5,2.5613362144150908e-8,-0.0010269717730998133,4.006209216467498e-5,2.564665439659544e-8,-0.0010269462335600545,4.004361181148552e-5,2.563758062373979e-8,-0.001026930475247916,3.993429582593155e-5,2.5581696150718296e-8,-0.0010268917955752411,3.9737131056284514e-5,2.54811632465487e-8,-0.0010268003254188763,3.946803547779058e-5,2.5344696049297998e-8,-0.001026633045285693,3.9154302349015926e-5,2.51867793373167e-8,-0.001026377413673644,3.883136780108241e-5,2.502596843310329e-8,-0.0010260339595217747,3.8538067531633994e-5,2.4882331374804033e-8,-0.00102561729797183,3.8310807330376756e-5,2.477430480252826e-8,-0.0010251551932449294,3.8177261675103885e-5,2.471538175976041e-8,-0.001024685487708184,3.8150384280356484e-5,2.4711128828705612e-8,-0.0010242508292970316,3.822352571453758e-5,2.475696413222644e-8,-0.0010238910923221203,3.836763523516221e-5,2.4837113045173785e-8,-0.0010236336767047106,3.853222377882937e-5,2.492543131105467e-8,-0.0010234830537858264,3.865239008611646e-5,2.49891058187856e-8,-0.0010234129983969168,3.8663590948988006e-5,2.4996031285257513e-8,-0.0010233670245726736,3.852273512816904e-5,2.492524814844594e-8,-0.001023271959887443,3.822833359285693e-5,2.4776942964655382e-8,-0.0010230632432314934,3.782769524653137e-5,2.4575998844550145e-8,-0.0010227107525744934,3.740279961889332e-5,2.436473371991324e-8,-0.0010222302402959167,3.703969137491942e-5,2.418716232193019e-8,-0.0010216740030515826,3.6798124988745376e-5,2.4073362152007457e-8,-0.001021108290579188,3.669683896443461e-5,2.4031974626159863e-8,-0.0010205912572348655,3.6717350983459955e-5,2.4052398420585333e-8,-0.0010201604372997207,3.681830406381751e-5,2.411249122180296e-8,-0.0010198303307530497,3.6950727918991715e-5,2.418666800590093e-8,-0.0010195960756659162,3.706898533184759e-5,2.4251597017513103e-8,-0.001019439056359185,3.713670445797552e-5,2.4289132019925126e-8,-0.001019332059571601,3.7129221763336125e-5,2.428734485125245e-8,-0.0010192433493335681,3.70343141516297e-5,2.4240686043212892e-8,-0.0010191400194511332,3.685229866278754e-5,2.4149908608415946e-8,-0.0010189911883879065,3.659580376531763e-5,2.402192783224623e-8,-0.0010187714343872375,3.628895436908966e-5,2.3869435845986977e-8,-0.0010184645132939021,3.596533710163379e-5,2.3709873676371996e-8,-0.001018066855839815,3.566412672527142e-5,2.3563393719128077e-8,-0.0010175898667280023,3.542425031334137e-5,2.3449761052332165e-8,-0.0010170599390659412,3.5277162817117435e-5,2.3384558945173422e-8,-0.001016515394012989,3.523949770501541e-5,2.3375440811865953e-8,-0.0010160002224420199,3.530738001007149e-5,2.3419397704779323e-8,-0.0010155553831384591,3.545419198619564e-5,2.3501928264935122e-8,-0.001015209142874551,3.563302488615149e-5,2.3598624983890202e-8,-0.0010149684067089226,3.5784346527384886e-5,2.3679292211144022e-8,-0.0010148133891465872,3.584860072421633e-5,2.3714344288769612e-8,-0.0010146982630651578,3.5782055660811007E-05,2.3682629377636572e-8,-0.0010145599654888093,3.557207326886522e-5,2.3578848270284908e-8,-0.0010143351722388912,3.5245823371830506e-5,2.3417678410022003e-8,-0.0010139811800521554,3.486632047924191e-5,2.3231576085062046e-8,-0.001013492050599654,3.4513974439642034e-5,2.3061330561170134e-8,-0.0010129013184621315,3.4259974954934804e-5,2.2942555475658693e-8,-0.0010122691652813616,3.4143842428325755e-5,2.289440024171102e-8,-0.001011660964001645,3.416527319904436e-5,2.291564249859294e-8,-0.0010111280235503381,3.429134318278579e-5,2.2988645742694414e-8,-0.0010106976785511353,3.447205752042876e-5,2.3087503664077148e-8,-0.0010103730798261847,3.465571175252602e-5,2.3185940039964153e-8,-0.0010101387428839818,3.479919616418346e-5,2.3262469964226124e-8,-0.0010099675794849883,3.487271276682596e-5,2.3302608900919384e-8,-0.0010098269209837737,3.4860699206272e-5,2.3299134968487392e-8,-0.0010096829020666328,3.476102080226269e-5,2.3251535621906485e-8,-0.0010095036482449427,3.4583741581220033e-5,2.316533851284319e-8,-0.00100926202814437,3.434990375649573e-5,2.3051517011118484e-8,-0.0010089385902406682,3.409004467856952e-5,2.2925769286763956e-8,-0.0010085248696185096,3.384168830235557e-5,2.2807227493595864e-8,-0.0010080265806791115,3.3644931550302674e-5,2.2716140262856692e-8,-0.0010074654828322916,3.353571640167953e-5,2.26703687608163e-8,-0.0010068782778092742,3.353743271134205e-5,2.268110345686206e-8,-0.0010063112194841138,3.36528689313314e-5,2.274888894220196e-8,-0.0010058104572475534,3.3859569732431347e-5,2.286150383963712e-8,-0.0010054101212326877,3.411145176628525e-5,2.2995062591133473e-8,-0.0010051217418514823,3.434769733360527e-5,2.3118734876600543e-8,-0.0010049287823506632,3.450726125747007e-5,2.3202145373587556e-8,-0.0010047886815621875,3.454511779650876e-5,2.3223469127649264e-8,-0.001004642523791172,3.444551550645358e-5,2.317587375654054e-8,-0.0010044301777682276,3.4228082912857005e-5,2.307029016040388e-8,-0.0010041070053985303,3.394428660482434e-5,2.293333606477324e-8,-0.0010036572007801948,3.366424530591849e-5,2.280046957873214e-8,-0.0010030989670374397,3.3457142010512746e-5,2.2706067870780697e-8,-0.001002478977520436,3.3371580578821594e-5,2.2673661179006083e-8,-0.0010018578283530568,3.342312200493025e-5,2.2709939398912565e-8,-0.0010012922882052613,3.359334378293894e-5,2.2804621910948108e-8,-0.0010008212275209021,3.3839363188058443e-5,2.2935524319804295e-8,-0.0010004594328713067,3.410840614322706e-5,2.3076001992787873e-8,-0.0010001992187818722,3.4351274842747164e-5,2.320166356575127e-8,-0.0010000167281470184,3.453101661995363e-5,2.3294552412610813e-8,-9.998793317252265e-4,3.462633409658824e-5,2.3344654270450874e-8,-9.997518470452732e-4,3.4631318428131296e-5,2.3349607127017085e-8,-9.996009199043014e-4,3.455348552109253e-5,2.3313647478180466e-8,-9.9939795849614e-4,3.44114906802232e-5,2.3246470434010358e-8,-9.99121407187035e-4,3.4233040893128126e-5,2.3162210737379513e-8,-9.987590833800812e-4,3.405276743515656e-5,2.3078368950141786e-8,-9.983108679056524e-4,3.390926822320403e-5,2.3014265042933495e-8,-9.97791306534957e-4,3.384032770146051e-5,2.2988554306834156e-8,-9.972307991430098e-4,3.3875718713881964e-5,2.3015580148524872e-8,-9.966733564831009e-4,3.4028221102158114e-5,2.310094837163757e-8,-9.961691020362934e-4,3.428546408696686e-5,2.3237638825588425e-8,-9.957615865134595e-4,3.46069401339788e-5,2.3404762682669036e-8,-9.954733186501152e-4,3.493021100327155e-5,2.357086532821176e-8,-9.952956330342465e-4,3.5186762200118035e-5,2.370192787102682e-8,-9.95188477807128e-4,3.532262383638006e-5,2.377162507367407e-8,-9.950913872963697e-4,3.5315508210565336e-5,2.376975873492727e-8,-9.94941500795456e-4,3.518154860532421e-5,2.3705430116577784e-8,-9.946916452042978e-4,3.496972133573339e-5,2.3603993034892922e-8,-9.943224955306555e-4,3.4747072949003844e-5,2.3499389344168517e-8,-9.938459958236127e-4,3.458033160070616e-5,2.3424766870853507e-8,-9.933002965673123e-4,3.451936283405707e-5,2.3404222600228282e-8,-9.92738532106868e-4,3.4586492210376424e-5,2.34477123751599e-8,-9.922149570488884e-4,3.47737697346077e-5,2.35500702634693e-8,-9.917723365169562e-4,3.504802300243e-5,2.369389615669735e-8,-9.91433801696836e-4,3.536137626092322e-5,2.385500900287136e-8,-9.912006576782077e-4,3.566352992413874e-5,2.4008564476421496e-8,-9.910555099664157e-4,3.591217265700787e-5,2.4134077453991628e-8,-9.909685467225334e-4,3.607935109184319e-5,2.4218367354514807e-8,-9.90904493799253e-4,3.615353059249766e-5,2.4256393376223053e-8,-9.90828480212809e-4,3.613845925610944e-5,2.4250587005171246e-8,-9.90710154736621e-4,3.605041340979941e-5,2.420946428455628e-8,-9.905262925749175e-4,3.5915102415850375e-5,2.4146106990416895e-8,-9.902625674466235e-4,3.576480559520487e-5,2.407673810359449e-8,-9.899151595612757e-4,3.563558997580312e-5,2.4019285840091026e-8,-9.894925239248037e-4,3.556393259086711e-5,2.399161892926978e-8,-9.890169789091286e-4,3.558183032668142e-5,2.400906596769323e-8,-9.885248529442735e-4,3.570977187754583e-5,2.4080982598891237e-8,-9.880631022206629e-4,3.594816942793109e-5,2.4206693186517794e-8,-9.876803749587692e-4,3.6270078383065484e-5,2.4372152484305683e-8,-9.874125517596248e-4,3.662032117452578e-5,2.4549731590826265e-8,-9.872671120179847e-4,3.6926008414473374e-5,2.470348797116585e-8,-9.872146960178598e-4,3.7118461255131244e-5,2.4799926090503432e-8,-9.871951531337715e-4,3.715829143129886e-5,2.482028574407889e-8,-9.871375620403313e-4,3.705077677427379e-5,2.476806781996489e-8,-9.869847448893906e-4,3.684329236067619e-5,2.466765451933042e-8,-9.867105450566658e-4,3.660725536650436e-5,2.4555140657066402e-8,-9.86323904247596e-4,3.641469724773145e-5,2.4466432455541804e-8,-9.858615016007492e-4,3.631928880259697e-5,2.442766534764061e-8,-9.85374633250025e-4,3.634645237112784e-5,2.4450388419430107e-8,-9.849156337300748e-4,3.649235218034662e-5,2.453139904021426e-8,-9.845270231932197e-4,3.672923823051199e-5,2.465582036281864e-8,-9.842346708626541e-4,3.7014300862134964e-5,2.4801822245291615e-8,-9.840451716688692e-4,3.729969081586018e-5,2.4945700886248175e-8,-9.839470708571595e-4,3.754181375466232e-5,2.5066377411016933e-8,-9.839150653915634e-4,3.770836043790428e-5,2.514864253568232e-8,-9.83915845150665e-4,3.778218739727299e-5,2.5184832131647895e-8,-9.839141440703577e-4,3.776204586365129e-5,2.5175023720621267e-8,-9.838778946578378e-4,3.7660825559131726e-5,2.5126110722890017e-8,-9.837819111355383e-4,3.750231363693385e-5,2.5050212268447694e-8,-9.83610120160167e-4,3.731747931219535e-5,2.4962853060990782e-8,-9.833567922937184e-4,3.714089212336408e-5,2.4881163070795294e-8,-9.830272886633775e-4,3.700727412351498e-5,2.4822096717103307e-8,-9.826385911278707e-4,3.69477424015823e-5,2.4800505830703303e-8,-9.82219396284537e-4,3.698509836147771e-5,2.4826830050034716e-8,-9.818087670899545e-4,3.712771767756578e-5,2.4904243886600084e-8,-9.814515702841564e-4,3.7362648046258683e-5,2.5025539421476875e-8,-9.811889802018954e-4,3.7650571338024e-5,2.5170939795615703e-8,-9.810442154511204e-4,3.792755371116602e-5,2.5309102919604293e-8,-9.810080333830023e-4,3.811864493199592e-5,2.5403711739960307e-8,-9.81033207624282e-4,3.8163102204115404e-5,2.5425633123846726e-8,-9.810462359989666e-4,3.804100654306584e-5,2.5365828059548833e-8,-9.809743731534347e-4,3.778505688611488e-5,2.524112956896296e-8,-9.807739041156364e-4,3.746843502401319e-5,2.508825210734586e-8,-9.804438663459916e-4,3.717577379911337e-5,2.4949313572355698e-8,-9.800204118408863e-4,3.697428727925494e-5,2.485733884169189e-8,-9.795593431768212e-4,3.6897909348930136e-5,2.4828320900585492e-8,-9.791176972697106e-4,3.694613487266822e-5,2.4860822858248447e-8,-9.78740821256568e-4,3.709208601691692e-5,2.4940346749398108e-8,-9.784561041063255e-4,3.7293678129001164e-5,2.5045249521682385e-8,-9.782718489133458e-4,3.7504071244625615e-5,2.5152145120602866e-8,-9.781792758595254e-4,3.7679941882763186e-5,2.5239992535436655e-8,-9.781562333794412e-4,3.778745647138105e-5,2.5292850462091087e-8,-9.781718882523143e-4,3.780606999115621e-5,2.530147602469855e-8,-9.781918620216884e-4,3.773013883351006e-5,2.5263886480747403e-8,-9.781832167389938e-4,3.7568458080856365e-5,2.518501010675023e-8,-9.78118742072559e-4,3.7342042791065954e-5,2.507558218052921e-8,-9.779801236071979e-4,3.708061130398327e-5,2.4950452157285786e-8,-9.777597868775496e-4,3.681839353569755e-5,2.4826535622686178e-8,-9.774615375963498e-4,3.6589861622145944e-5,2.47206704952449e-8,-9.771002958644923e-4,3.642562803302159e-5,2.464752335844287e-8,-9.767011177636903e-4,3.6348412775412787e-5,2.461757103592887e-8,-9.762974059618317e-4,3.636884684333104e-5,2.463512177599872e-8,-9.759277035517238e-4,3.648101405343806e-5,2.4696356361916733e-8,-9.75629951246629e-4,3.665840901177218e-5,2.4787660934629145e-8,-9.754322748465593e-4,3.685252659570957e-5,2.4885193908702775e-8,-9.75340987613693e-4,3.699788916582287e-5,2.495739454375517e-8,-9.753299684090048e-4,3.702722840929396e-5,2.4972198717358794e-8,-9.753395265608093e-4,3.689599167738356e-5,2.490869287630752e-8,-9.752920720559031e-4,3.6606102877796636e-5,2.4768523544825133e-8,-9.751219280535475e-4,3.62127126348543e-5,2.457919604533296e-8,-9.748035378869218e-4,3.580501071706199e-5,2.4384716721739845e-8,-9.743604317943561e-4,3.5470563709328834E-05,2.4228018734390125e-8,-9.738510761405169e-4,3.526450154078282e-5,2.4135686744524703e-8,-9.733435765106256e-4,3.519840608946445e-5,2.411249078547065e-8,-9.728943634004211e-4,3.5247780682422384e-5,2.4145284649450995e-8,-9.725377477092212e-4,3.536768335651393e-5,2.4211049479849402e-8,-9.722848444423038e-4,3.550754893515966e-5,2.428448154165182e-8,-9.72127563371285e-4,3.562150854076412e-5,2.4343174928178926e-8,-9.720441769973178e-4,3.567417242302132e-5,2.437035998268252e-8,-9.720046367152485e-4,3.56432887461309e-5,2.4355963585866076e-8,-9.719752390974952e-4,3.552063301357858e-5,2.4296779131561367e-8,-9.719228596586245e-4,3.531171554305102e-5,2.4196141313711178e-8,-9.718188423673552e-4,3.503437202507118e-5,2.406317927089353e-8,-9.716423998941957e-4,3.471621408885309e-5,2.3911605715671775e-8,-9.713832408989576e-4,3.439096166140005e-5,2.3757978780585042e-8,-9.710430366130846e-4,3.409389102193965e-5,2.361948593481193e-8,-9.70635446133547e-4,3.3856923351839665e-5,2.3511491505683215e-8,-9.701846919981149e-4,3.370390574741038e-5,2.3445165212560717e-8,-9.697228228770885e-4,3.364647614797688e-5,2.342546325722505e-8,-9.692857745624962e-4,3.368081166293388e-5,2.3449670440655165e-8,-9.689081926968012e-4,3.378557365972413e-5,2.3506650641077334e-8,-9.686168099705691e-4,3.392170644199995e-5,2.357703705485365e-8,-9.684224658620934e-4,3.4035563171401795e-5,2.3634937383161203e-8,-9.68312113340623e-4,3.406746818840269e-5,2.3652061632635778e-8,-9.682443258694862e-4,3.396706662113197e-5,2.3604922859051918e-8,-9.681538286062369e-4,3.371329935534211e-5,2.348419799835916e-8,-9.679692761326831e-4,3.333058404686902e-5,2.330235800983941e-8,-9.676407409410866e-4,3.2888734991917684e-5,2.3093584924486144e-8,-9.671629996624705e-4,3.2480309923178234e-5,2.2902797651000153e-8,-9.665791080763037e-4,3.2184835146996645e-5,2.276825671546724e-8,-9.659613244934983e-4,3.204046428493923e-5,2.270778086296016e-8,-9.653822640887052e-4,3.203767611505963e-5,2.2715798323767404e-8,-9.648929276683705e-4,3.213287335072607e-5,2.2770213229558723e-8,-9.645149837962753e-4,3.226903530996189e-5,2.2842729866168465e-8,-9.642442355567376e-4,3.239247708087407e-5,2.2907171397624284e-8,-9.640587530216115e-4,3.24620993246358e-5,2.2943963859402317e-8,-9.639270001539048e-4,3.245248074250296e-5,2.2941464499432092e-8,-9.638140578411377e-4,3.235353569481727e-5,2.2895550510650823e-8,-9.6368595444148e-4,3.2168912493880215e-5,2.28086319018673e-8,-9.635128997527551e-4,3.191410788621952e-5,2.2688634455621677e-8,-9.632720633656184e-4,3.161432337084309e-5,2.2547969983926774e-8,-9.629500908473864e-4,3.1301728190777524e-5,2.2402276055104036e-8,-9.625451789726969e-4,3.101176374193039e-5,2.226867575507521e-8,-9.620681774777247e-4,3.077836455776551e-5,2.216345368450055e-8,-9.615420329416084e-4,3.0628500411465295e-5,2.209935540113096e-8,-9.609991467969121e-4,3.057690888665009e-5,2.2082994490797295e-8,-9.604766797714861e-4,3.062205911343596e-5,2.2112942498469528e-8,-9.600102747775835e-4,3.074434601472043e-5,2.2179018433807102e-8,-9.596270214263777e-4,3.090724439259373e-5,2.2263089974248304e-8,-9.593386562986945e-4,3.1061771792007744e-5,2.2341454918293274e-8,-9.591361349101454e-4,3.1154428547892235e-5,2.2388764734143828e-8,-9.589871735461636e-4,3.113854434292479e-5,2.2383389507898628e-8,-9.588390052667267e-4,3.0987899671081076e-5,2.23137088373979e-8,-9.586285812047179e-4,3.0709291166627064e-5,2.2183841699676357e-8,-9.583004549904042e-4,3.034807980718291e-5,2.20160808943815e-8,-9.578277490469907e-4,2.9980170319710332e-5,2.1846942684937246e-8,-9.572262091683876e-4,2.968886340238766e-5,2.1716059377740093e-8,-9.565515092747311e-4,2.953507814969651e-5,2.1651963566920276e-8,-9.558790138711099e-4,2.9536365304518656e-5,2.166217296734255e-8,-9.552767930981623e-4,2.9665583334704913e-5,2.173278583758932e-8,-9.547860467171304e-4,2.9867061406297094e-5,2.1836474927304304e-8,-9.544158266696612e-4,3.0078540975903094e-5,2.1943173400982044e-8,-9.541492278461368e-4,3.024805141205629e-5,2.20281932369835e-8,-9.539540335951516e-4,3.034185193150517e-5,2.2075920768301698e-8,-9.537924048895253e-4,3.0345247140230987e-5,2.208000983233228e-8,-9.536275311546465e-4,3.025982229495277e-5,2.204185499562896e-8,-9.534275077413425e-4,3.0099841725022342e-5,2.1968736705240954e-8,-9.531675967845711e-4,2.9889041402266785e-5,2.187225621318765e-8,-9.528318988517542e-4,2.9657867759765324e-5,2.1767059789256722e-8,-9.524149404686213e-4,2.9440645440285744e-5,2.1669541941369942e-8,-9.519231274636026e-4,2.9272003957849185e-5,2.1596154336982085e-8,-9.513754532627277e-4,2.9182105324352853e-5,2.156109047838405e-8,-9.508024505321581e-4,2.9190878090889825e-5,2.1573483188737836e-8,-9.502424663511357e-4,2.9302351813132366e-5,2.1634700321363326e-8,-9.49735030418587e-4,2.9500882232911995e-5,2.1736638845838566e-8,-9.493122042363756e-4,2.975120128025421e-5,2.1861931766478845e-8,-9.489899450602254e-4,3.0003488125871785e-5,2.19865714491652e-8,-9.487620601966599e-4,3.020311750055373e-5,2.2084695992892515e-8,-9.485988957950232e-4,3.030316317880326e-5,2.2134553407674564e-8,-9.484518091654521e-4,3.0276810472256283e-5,2.2124270364054122e-8,-9.482632222856166e-4,3.0126538386465414e-5,2.205597301242971e-8,-9.479807554179524e-4,2.9887047408005317e-5,2.194689841841948e-8,-9.475724436270446e-4,2.961960692398054e-5,2.1826477535904775e-8,-9.470384606933393e-4,2.9397309036501518e-5,2.1729216202936675e-8,-9.464140919087501e-4,2.9284117233135745e-5,2.168479093152599e-8,-9.457607135250013e-4,2.931474722874649e-5,2.1708699518209903e-8,-9.451468703045619e-4,2.948415363474355e-5,2.179756824154432e-8,-9.446272642077682e-4,2.975166154093429e-5,2.19313942223417e-8,-9.442287741878977e-4,3.005706659105484e-5,2.2081348790756766e-8,-9.439480612138644e-4,3.0340177706433605e-5,2.2219059244211306e-8,-9.437587330039747e-4,3.05555047742844e-5,2.232346391891961e-8,-9.436224123828684e-4,3.0678595514250895e-5,2.2383640253534496e-8,-9.434987028230832e-4,3.0705355294702186e-5,2.2398300631400305e-8,-9.433518093842979e-4,3.0647746413302585e-5,2.2373619930447855e-8,-9.431539596951896e-4,3.052879162175852e-5,2.2320812424416252e-8,-9.42886827941632e-4,3.0378337056025078e-5,2.2254139731918605e-8,-9.425421763466582e-4,3.0229750427711546e-5,2.2189391361884014e-8,-9.421224563862095e-4,3.011700715597695e-5,2.2142531937943215e-8,-9.416414774327706e-4,3.0071346469157127e-5,2.212810620989906e-8,-9.411245660268458e-4,3.0116816661240038e-5,2.215710354642401e-8,-9.406070615964384e-4,3.026467552618603e-5,2.2234316233793085e-8,-9.40129838692488e-4,3.050774422637882e-5,2.2355753528190237e-8,-9.397312194328286e-4,3.0817081031483444e-5,2.2507225708871276e-8,-9.394363651629871e-4,3.1143952690525606e-5,2.266544635054926e-8,-9.39247469629382e-4,3.14289902634384e-5,2.2802467253505157e-8,-9.391392811567771e-4,3.161734154321736e-5,2.28928419535772e-8,-9.390631834203985e-4,3.1675072753920046e-5,2.292128485717643e-8,-9.389595011470184e-4,3.160054917881444e-5,2.2887892684632222e-8,-9.38774017044829e-4,3.142629938669554e-5,2.2808821851867562E-08,-9.384731170441491e-4,3.121073248180759e-5,2.2712144428496986e-8,-9.380529653295315e-4,3.102263562512172e-5,2.2630329259409035e-8,-9.37540421932073e-4,3.0923179639618185e-5,2.2591680785415607e-8,-9.369857583175107e-4,3.095034383443137e-5,2.261312414301245e-8,-9.364492385837592e-4,3.1109898640259824e-5,2.269626110812058e-8,-9.359853619300495e-4,3.137546064701527e-5,2.2827755619925506e-8,-9.356295240548179e-4,3.16974681512932e-5,2.2983821119346855e-8,-9.353911527823038e-4,3.2017802198202046e-5,2.313717510433112e-8,-9.35254811672147e-4,3.228479107023496e-5,2.326399499414142e-8,-9.351875597689146e-4,3.2463820357644084e-5,2.3348709349042408e-8,-9.351488611202442e-4,3.2541398176328435e-5,2.338570291153537e-8,-9.350994833205346e-4,3.25234996917194e-5,2.3378386345866902e-8,-9.350074661012362e-4,3.2430678404906835e-5,2.333682380228043e-8,-9.348510276335349e-4,3.229243028857118e-5,2.3275080016553152e-8,-9.346193314669444e-4,3.214231620297721e-5,2.3208959235950077e-8,-9.34312262797197e-4,3.2014221186669155e-5,2.3154273367792384e-8,-9.339400414025882e-4,3.193933185076618e-5,2.3125418905859264e-8,-9.33522913696338e-4,3.194305448645945e-5,2.3133910756853474e-8,-9.330904862493931e-4,3.204115275895757e-5,2.3186578394138074e-8,-9.326796244283101e-4,3.223492294630654e-5,2.3283386135426127e-8,-9.323295184334296e-4,3.250635238251842e-5,2.3415326287966734e-8,-9.320730236673442e-4,3.281574833663746e-5,2.356349553000111e-8,-9.319252711366798e-4,3.310543782936856e-5,2.3700943505328696e-8,-9.318736216132645e-4,3.331219177128394e-5,2.3798471243414568e-8,-9.318752640651988e-4,3.338676318697942e-5,2.3833655432768257e-8,-9.31866963948998e-4,3.331301147491189e-5,2.3799668733206908e-8,-9.317849968972861e-4,3.311655040946259e-5,2.3709231637614105e-8,-9.315865645433877e-4,3.2857438239323513e-5,2.3591073380549135e-8,-9.312628626536916e-4,3.2610345594110236e-5,2.3480457903216238e-8,-9.308393005661033e-4,3.24417200448329e-5,2.3408301483171562e-8,-9.303651936824847e-4,3.239281090859414e-5,2.339318150193606e-8,-9.298986864069065e-4,3.24725338782039e-5,2.343818307136948e-8,-9.29492219127464e-4,3.265959531263871e-5,2.3532245846076462e-8,-9.291818021359038e-4,3.2911055999915944e-5,2.3654527540462002e-8,-9.289814804693926e-4,3.317408157338681e-5,2.3780107907133812e-8,-9.28883102878134e-4,3.339795710135585e-5,2.3885603751994195e-8,-9.288606081706539e-4,3.3543937048918637e-5,2.3953598676844333e-8,-9.288772589118661e-4,3.3591181371482934e-5,2.3975172255395918e-8,-9.288937419745458e-4,3.353814016920971e-5,2.395033272948154e-8,-9.288751893623011e-4,3.340004673214571e-5,2.3886721538417358e-8,-9.287959268978146e-4,3.320403594462646e-5,2.3797303763589087e-8,-9.286417064222096e-4,3.298355112980294e-5,2.369778683496962e-8,-9.284099392258089e-4,3.277328729013441e-5,2.3604298515993387e-8,-9.281087947963245e-4,3.260518664063019e-5,2.3531530406527254e-8,-9.277558922978596e-4,3.25053020042501e-5,2.3491259018736307e-8,-9.27376881127838e-4,3.2490978444289704E-05,2.349102519309791e-8,-9.270036743482587e-4,3.2567791005183e-5,2.3532761106056747e-8,-9.266715169341242e-4,3.2726055504754945e-5,2.361130945511728e-8,-9.264137151151058e-4,3.293770276831043e-5,2.3713172494102367e-8,-9.262532777753961e-4,3.315574465668824e-5,2.3816439311101114e-8,-9.261924253535585e-4,3.331972423030237e-5,2.389335984974595e-8,-9.262040127993932e-4,3.336992217268715e-5,2.3916815814377182e-8,-9.262317722939682e-4,3.326872605091641e-5,2.3870037451283865e-8,-9.26204733848964e-4,3.3020183443077696e-5,2.3755545743126395e-8,-9.260627882338456e-4,3.267485106444268e-5,2.3597373291928313e-8,-9.257806549268176e-4,3.2313603001887904e-5,2.343349628055146e-8,-9.253766285983505e-4,3.201794497161325e-5,2.3301884783205278e-8,-9.249026226141552e-4,3.1842977355389055e-5,2.3227766419155888e-8,-9.244236141866019e-4,3.1804942562237756e-5,2.321783898637054e-8,-9.239978305283136e-4,3.188429203691447e-5,2.3261932645223352e-8,-9.236643245273065e-4,3.203781785436325e-5,2.3339012154274225e-8,-9.234386977616611e-4,3.221281488408803e-5,2.3424069805742805e-8,-9.233147289125141e-4,3.235906739356297e-5,2.3493825767808208e-8,-9.232692914346888e-4,3.243722377144107e-5,2.3530540271546322e-8,-9.232686902572398e-4,3.242362191865267e-5,2.3524031114582375e-8,-9.232753070314963e-4,3.231198064538372e-5,2.347219924760264e-8,-9.232537561991422e-4,3.211234823824068e-5,2.3380345332508162e-8,-9.231758558037119e-4,3.1847866001873865e-5,2.3259584838009844e-8,-9.230239270817444e-4,3.155012781518374e-5,2.3124710835478002e-8,-9.227922362546493e-4,3.1253999746506684e-5,2.299185234886264e-8,-9.224867387452752e-4,3.0992724464646724e-5,2.2876250708263638e-8,-9.221236055597706e-4,3.079385597163362e-5,2.27903811393233e-8,-9.217270560533948e-4,3.067609570471294e-5,2.2742468990955336e-8,-9.213267796337176e-4,3.064680318714811e-5,2.2735346156833847e-8,-9.20954912564315e-4,3.0699934328855683e-5,2.2765581416612138e-8,-9.206421478418023e-4,3.08143607477365e-5,2.2822873109824424e-8,-9.204122660196305e-4,3.095320827010874e-5,2.2889943688910157e-8,-9.202747886912586e-4,3.106597764009101e-5,2.2943650815208422e-8,-9.20216936947342e-4,3.1095988189358365e-5,2.2958395502173376e-8,-9.201985234595585e-4,3.099497926622176e-5,2.2912665548665453e-8,-9.201557642877907e-4,3.074296687634402e-5,2.2797948208220792e-8,-9.200186966514138e-4,3.0364621739963786e-5,2.2626137511840795e-8,-9.197385636888824e-4,2.9929213138156976e-5,2.242949417390068e-8,-9.193108394574188e-4,2.9527970187913423e-5,2.225019669376877e-8,-9.187785340875029e-4,2.9238845703639758e-5,2.2123997801802605e-8,-9.182134225021054e-4,2.9098989670442113e-5,2.2067447146301895e-8,-9.176879830111815e-4,2.9098589555165532e-5,2.2075132170368005e-8,-9.17253784391652e-4,2.9193712335522423e-5,2.212586268610836e-8,-9.169332050515159e-4,2.932621852597383e-5,2.2192168520093514e-8,-9.167219505579218e-4,2.944065181810668e-5,2.224829932694638e-8,-9.165966656263807e-4,2.949439756587482e-5,2.2274934020959177e-8,-9.165233093736817e-4,2.9461840863147958e-5,2.226094758259148e-8,-9.164642868928159e-4,2.9334685108527463e-5,2.220331133229603e-8,-9.163839913645998e-4,2.9120232422900573e-5,2.2106066579955823e-8,-9.162530317647461e-4,2.883851348103519e-5,2.1978863978225656e-8,-9.160513185398048e-4,2.8518597058158136e-5,2.1835244906513958e-8,-9.15769988624412e-4,2.8194298243653313e-5,2.1690730238489156e-8,-9.154120664548803e-4,2.7899535170271005e-5,2.1560765750180442e-8,-9.149917488095805e-4,2.7663738874698725e-5,2.1458654195702416e-8,-9.145323801553542e-4,2.7507851429598272e-5,2.1393709233720136e-8,-9.140634112563936e-4,2.744128142921948e-5,2.136983448703116e-8,-9.136166435043148e-4,2.745994641856036e-5,2.1384644526880326e-8,-9.13221944692427e-4,2.754549808736449e-5,2.1429208794373388e-8,-9.129024910120398e-4,2.7665888640565562e-5,2.148847949703196e-8,-9.126694819496386e-4,2.7777706431344518e-5,2.154253176218981e-8,-9.125166098566058e-4,2.7831321553144563e-5,2.156899691685832e-8,-9.124157000485842e-4,2.7780165658292776e-5,2.1547232079309533e-8,-9.123165267733067e-4,2.759442992476146e-5,2.1464373542698462e-8,-9.121548623777333e-4,2.7276427140508372e-5,2.1322119221499095e-8,-9.118711019526034e-4,2.6870144591949852e-5,2.114094313683426e-8,-9.114350063079968e-4,2.6455006129514234e-5,2.0957209029743784e-8,-9.108634742462995e-4,2.6120092101343845e-5,2.081139801841706e-8,-9.102178200814272e-4,2.5929424367736944e-5,2.0732255869559906e-8,-9.095797117160946e-4,2.5898353086471822e-5,2.0726067368364644e-8,-9.090202329768966e-4,2.5993933266429337e-5,2.077699539719869e-8,-9.085793014011967e-4,2.615479802733407e-5,2.0856387709915296e-8,-9.082619863653898e-4,2.6315579246745158e-5,2.09341239475786e-8,-9.080467696016204e-4,2.6424152758084614e-5,2.098656643738969e-8,-9.078974977973308e-4,2.6448875948786817e-5,2.0999792057647626e-8,-9.077736775849799e-4,2.6378608518081082e-5,2.0969414117202983e-8,-9.076374388060467e-4,2.621931034153885e-5,2.089880711320176e-8,-9.074576563940846e-4,2.598981028468818e-5,2.0797007293920687e-8,-9.072123555606045e-4,2.5717763310892864e-5,2.067680801973962e-8,-9.068901702931364e-4,2.543581375595846e-5,2.055305287961445e-8,-9.064910919600087e-4,2.51777245706118e-5,2.044096225969404e-8,-9.060264239903059e-4,2.497429600456872e-5,2.0354350101638346e-8,-9.055176396903595e-4,2.4849147035049042e-5,2.0303725663131417e-8,-9.049938331462582e-4,2.48148520431951e-5,2.0294513960783498e-8,-9.044877759473634e-4,2.487013629166907e-5,2.0325761996341625e-8,-9.040309431041147e-4,2.4998716181532725e-5,2.0389648367651206e-8,-9.036480496186143e-4,2.5170219741609872e-5,2.0472012539751645e-8,-9.033517513971097e-4,2.534346091236584e-5,2.0553994872596846e-8,-9.031382345469437e-4,2.5472113323665762e-5,2.0614734900078757e-8,-9.029845516590252e-4,2.5512741628428336e-5,2.0635033273204925e-8,-9.028490149929373e-4,2.5434954827073677e-5,2.0601836238167363e-8,-9.026764902106563e-4,2.5232408447057923e-5,2.0513003051675774e-8,-9.02410173775587e-4,2.4931333305205534e-5,2.03809375747986e-8,-9.020092509206674e-4,2.459113424824214e-5,2.0232703367730958e-8,-9.014671775780341e-4,2.4291763948560345e-5,2.0104263036672917e-8,-9.008206650653747e-4,2.4108119510329703e-5,2.0028949316011377e-8,-9.001407652157997e-4,2.40815816794724e-5,2.002473027343289e-8,-8.995076036470077e-4,2.4204454860463047e-5,2.0087372224985797e-8,-8.989819618378563e-4,2.442640209534498e-5,2.0193550978397385e-8,-8.985886426926948e-4,2.4677367529835956e-5,2.0311351442965695e-8,-8.983168875609791e-4,2.489249041554455e-5,2.0411570672683616e-8,-8.981321994515865e-4,2.5027742305275945e-5,2.0474734817052442e-8,-8.979905680705888e-4,2.506411353886881e-5,2.0492861273368607e-8,-8.978493659111419e-4,2.50042478933684e-5,2.0467761838839778e-8,-8.976735626310779e-4,2.486629512223054e-5,2.040810250953443e-8,-8.974383807300419e-4,2.46779904367794e-5,2.0326637181998767e-8,-8.971300793370073e-4,2.447195277178342e-5,2.0238087853917463e-8,-8.967460299014721e-4,2.4281946492655756e-5,2.0157529321890946e-8,-8.962944874862408e-4,2.41394984040332e-5,2.009894778188007e-8,-8.957939342688571e-4,2.4070383811391924e-5,2.0073707412014148e-8,-8.952715333108823e-4,2.4090842783267837e-5,2.0088849549234874e-8,-8.94760107898572e-4,2.420397021695154e-5,2.014545178891125e-8,-8.942933680114259e-4,2.4397265038716906e-5,2.0237535845060154e-8,-8.938997498069575e-4,2.4642474151023778e-5,2.0352064205131918e-8,-8.935958998883974e-4,2.4898610660257977E-05,2.047041270308535e-8,-8.933813137979958e-4,2.5118392150347438e-5,2.057138082449648e-8,-8.932357382837027e-4,2.525738915614616e-5,2.0635360425476936e-8,-8.931205738507962e-4,2.5284299096435977e-5,2.0648906749984923e-8,-8.929848689198422e-4,2.5190265415252555e-5,2.0608774843090036e-8,-8.927757350545704e-4,2.4994824362930195e-5,2.052437537467493e-8,-8.924519189134882e-4,2.4745797708676503e-5,2.0417514294488545e-8,-8.919975931406865e-4,2.4510848006438183e-5,2.031846414448125e-8,-8.914314961573257e-4,2.436039906856739e-5,2.0258291785338553e-8,-8.908058509117407e-4,2.4345690900774747e-5,2.0259156353576073e-8,-8.901923458736179e-4,2.4480408023514104e-5,2.032632704668696e-8,-8.896591855754514e-4,2.473538117757218e-5,2.0446077286436584e-8,-8.892494467896753e-4,2.505003874490458e-5,2.0590986107984132e-8,-8.889707658958967e-4,2.5354671159387962e-5,2.0729934824061592e-8,-8.887992171195747e-4,2.5592069573353648e-5,2.0837712880844427e-8,-8.886922966930062e-4,2.572983863637043e-5,2.0900398514110002e-8,-8.886031916452067e-4,2.576187327548421e-5,2.0915874009217856e-8,-8.884910916697882e-4,2.5702806387382103e-5,2.0891201501616617e-8,-8.883263469942507e-4,2.5580247122862124e-5,2.0839048300129043e-8,-8.880918126579759e-4,2.5427917810549098e-5,2.0774582188619598e-8,-8.877822930623571e-4,2.528066113611859e-5,2.071327182632323e-8,-8.874034503409459e-4,2.51709375729389e-5,2.0669390176493168e-8,-8.869707261418254e-4,2.5125989723721748e-5,2.0654810035291582e-8,-8.865081500699982e-4,2.5164954314173364e-5,2.067774642510077e-8,-8.86046435520712e-4,2.5295625909005256e-5,2.074132329135633e-8,-8.856195799846079e-4,2.5511276908268373e-5,2.0842176511925037e-8,-8.852594627043434e-4,2.578871501824554e-5,2.0969645761179816e-8,-8.849887434082308e-4,2.6089236359805585e-5,2.1106290594163275e-8,-8.848135668142814e-4,2.6363915683878577e-5,2.12303363316089e-8,-8.847186517320325e-4,2.6563437790964064e-5,2.132009779085571e-8,-8.846674515235134e-4,2.6650601378864086e-5,2.1359523275735847e-8,-8.846087189309281e-4,2.66117823350549e-5,2.1343206192558952e-8,-8.844884826177575e-4,2.6463259603390726e-5,2.1279054822091283e-8,-8.84264302201615e-4,2.6249677950410016e-5,2.1187425909026206e-8,-8.839176546726403e-4,2.6034332006823362e-5,2.109662263366006e-8,-8.83460649868888e-4,2.588342561020468e-5,2.1035784916221402e-8,-8.82934630955511e-4,2.584833167410523e-5,2.102703848956324e-8,-8.824002202963414e-4,2.595091364572211e-5,2.1079174189276926e-8,-8.81920975885244e-4,2.61768927835987e-5,2.1185003004173495e-8,-8.815456299885851e-4,2.648030419312936e-5,2.132360042425762e-8,-8.812952960849518e-4,2.6797977084991984e-5,2.146685384949102e-8,-8.811602994497689e-4,2.7068443874576867e-5,2.1587808754275467e-8,-8.811068251980501e-4,2.7247856141716944e-5,2.1667584069800153e-8,-8.81089260979772e-4,2.7317788146902162e-5,2.169866440830599e-8,-8.810626671495409e-4,2.7284359038585255e-5,2.168436095027221e-8,-8.809914703339173e-4,2.7171697969967655e-5,2.1635803660338795e-8,-8.80853375306616e-4,2.7013728986054004e-5,2.1568241334736312e-8,-8.806396376131523e-4,2.6847076911299085e-5,2.14978976330453e-8,-8.803534902028214e-4,2.670608170906783e-5,2.1439805851815076e-8,-8.800081064751453e-4,2.661959400830792e-5,2.140644761622855e-8,-8.796247407013677e-4,2.6608697363742646e-5,2.1406789555317838e-8,-8.792309875330124e-4,2.668453948521081e-5,2.1445354689839482e-8,-8.788585456571649e-4,2.684586308158884e-5,2.152116684744657e-8,-8.78539601693883e-4,2.7076554888474195e-5,2.162673250547703e-8,-8.783011687268403e-4,2.7344451028370228e-5,2.1747606543339466e-8,-8.781575952511767e-4,2.760340690883203e-5,2.1863392752506867e-8,-8.781030584565838e-4,2.780060405021578e-5,2.1951002414711444e-8,-8.781075985026394e-4,2.7889387640801088e-5,2.1990279643567898e-8,-8.781205807905475e-4,2.7844561840664714e-5,2.197066505165757e-8,-8.780829418086908e-4,2.767387999018061e-5,2.1896173090185512e-8,-8.779448870805086e-4,2.74194206923248e-5,2.178590013371832e-8,-8.776820355245091e-4,2.7146767973214645e-5,2.166911671129024e-8,-8.773032995196551e-4,2.692589193920319e-5,2.157667830482182e-8,-8.768478522267831e-4,2.6811226903755186e-5,2.153215088316852e-8,-8.763733034865937e-4,2.6827771709541934e-5,2.1545755773169187e-8,-8.759398672705631e-4,2.6966612293309254e-5,2.1612637371882027e-8,-8.75595423955086e-4,2.718972268856917e-5,2.171528609991872e-8,-8.753651397527334e-4,2.744156484383133e-5,2.182888124213572e-8,-8.75247681912975e-4,2.766380317219204e-5,2.1927841507686533e-8,-8.752182834583848e-4,2.7809084316441637e-5,2.1991802394858896e-8,-8.752370705991506e-4,2.78503969031841e-5,2.2009553750829985e-8,-8.752596751637627e-4,2.7784140827711733e-5,2.1980196488628183e-8,-8.752468743315799e-4,2.7627256123099378e-5,2.1911727125109708e-8,-8.751709906385506e-4,2.741056684869909e-5,2.181802519722558e-8,-8.750184292407893e-4,2.717106230583093e-5,2.1715442258405405e-8,-8.747891179445456e-4,2.6945211256019782e-5,2.161989799005169e-8,-8.744942264117304e-4,2.6764246324536103e-5,2.1544865267399724e-8,-8.741534012510591e-4,2.6651298588158375e-5,2.1500162537119337e-8,-8.73792188217311e-4,2.6619664630001775e-5,2.1491228293641114e-8,-8.734396730616577e-4,2.6671435073366737e-5,2.1518551762450664e-8,-8.731258580016011e-4,2.679606382670435e-5,2.1577100432093963e-8,-8.7287798682881e-4,2.696908317973565e-5,2.165584590639723e-8,-8.727151324958717e-4,2.7152056798777518e-5,2.1737843898724333e-8,-8.726411876491597e-4,2.7295776371153268e-5,2.180169400597056e-8,-8.72638123277193e-4,2.7348884643569248e-5,2.1825288578833227e-8,-8.726635290724197e-4,2.7272385770363037e-5,2.1792059497611342e-8,-8.726572026318421e-4,2.7056308642078688e-5,2.16981558387545e-8,-8.725583379939474e-4,2.673014546177635e-5,2.1556946339519295e-8,-8.723277672615219e-4,2.6358529275551267e-5,2.1397083391496553e-8,-8.719640776249092e-4,2.6020955368897574e-5,2.1253534423843147e-8,-8.715045501738401e-4,2.5784651947306544e-5,2.1155571953329428e-8,-8.71011034255676e-4,2.5683903518439307e-5,2.1117663450457478e-8,-8.705491307552995e-4,2.5713812934991007e-5,2.113685431521052e-8,-8.701702166525884e-4,2.5837496324388218e-5,2.119617587482424e-8,-8.699014006819977e-4,2.6000426627921144e-5,2.1271201276789622e-8,-8.697436570127698e-4,2.6145631661998167e-5,2.1336868320268546e-8,-8.696759171271625e-4,2.6225891752515828E-05,2.137282593288771e-8,-8.696624900426764e-4,2.621144415050257e-5,2.136666972028361e-8,-8.696616766384265e-4,2.609309797451578e-5,2.1315093592520665e-8,-8.696339802855976e-4,2.58812240139253e-5,2.1223246173929514e-8,-8.695486258957221e-4,2.560145694153938e-5,2.1102720086846007e-8,-8.693875014404906e-4,2.5288439658636282e-5,2.096877998090809e-8,-8.691463110554454e-4,2.4979158898865863e-5,2.083749001199522e-8,-8.688333814216199e-4,2.4707133641329762e-5,2.0723252879501703e-8,-8.684669509396333e-4,2.449818770419122e-5,2.0637035505226535e-8,-8.680718625220174e-4,2.4367943926356345e-5,2.0585317375536392e-8,-8.676763190924599e-4,2.432063005736646e-5,2.0569587886541e-8,-8.673088635246923e-4,2.4348592526606557e-5,2.0586157121313442e-8,-8.669953180759233e-4,2.4432155464044134e-5,2.0626149014017224e-8,-8.667551694766482e-4,2.4539935083866278e-5,2.0675728630559995e-8,-8.665969051568935e-4,2.4630410220170644e-5,2.0716875446414914e-8,-8.665124727648299e-4,2.4656354944466406e-5,2.0729342915038327e-8,-8.664725697134575e-4,2.4573949994687252e-5,2.0694555012387574e-8,-8.664264664054185e-4,2.43569138231536e-5,2.0601608133330403e-8,-8.663110139622543e-4,2.401199304406164e-5,2.0453867175701917e-8,-8.660704693962533e-4,2.3586965902470763e-5,2.0272378725582345e-8,-8.656806366986982e-4,2.316147155005631e-5,2.0091868871878088e-8,-8.651633988921566e-4,2.281978312873848e-5,1.9948869925345905e-8,-8.645805810525198e-4,2.2618527290404762e-5,1.9867633866200034e-8,-8.640097643843145e-4,2.256770525095591e-5,1.9851904328723277e-8,-8.635166675543678e-4,2.2633614094821955e-5,1.9886336038762515e-8,-8.63137948012429e-4,2.2757311910044172e-5,1.9944743482180508e-8,-8.628781813717942e-4,2.2875933655872637e-5,1.9999555353413913e-8,-8.62716501594731e-4,2.2938215554097242e-5,2.0028639520069148e-8,-8.626167844185233e-4,2.291219190087368e-5,2.0018587878018706e-8,-8.625373867297079e-4,2.2786717609544522e-5,1.9965210231098124e-8,-8.624388179572647e-4,2.256927580919071e-5,1.987237287145151e-8,-8.62289189850553e-4,2.2281913356921493e-5,1.975006320331657e-8,-8.620677332013985e-4,2.195621272300181e-5,1.9612130462789248e-8,-8.617664966194991e-4,2.16277997444501e-5,1.9473928068892485e-8,-8.613902656342819e-4,2.1330954467429593e-5,1.935006757875441e-8,-8.609548908336364e-4,2.109389378252815e-5,1.9252475069560743e-8,-8.60484364617139e-4,2.0935189055747062e-5,1.9188905233103563e-8,-8.600071436128826e-4,2.086164348674763e-5,1.91620410767755e-8,-8.595522857630777e-4,2.086763182325774e-5,1.916920143547591e-8,-8.591457649603986e-4,2.0935595960451394e-5,1.9202563113239573e-8,-8.588070106868445e-4,2.103741778004402e-5,1.9249802291736785e-8,-8.585455278490724e-4,2.1136657572340328e-5,1.9295144248855717e-8,-8.583574459539792e-4,2.119206027325631e-5,1.9320951414396224e-8,-8.582223041875423e-4,2.1163256231024873e-5,1.9310193204886934e-8,-8.581015046639913e-4,2.1019633830437e-5,1.9250187621650533e-8,-8.579412331421961e-4,2.0752106826417253e-5,1.913751847356446e-8,-8.576831677947019e-4,2.0384459053393114e-5,1.898276909784322e-8,-8.572838524692297e-4,1.997686961930766e-5,1.8811952221028124e-8,-8.567366035007616e-4,1.9613260947646273e-5,1.8661045623987466e-8,-8.560824766647061e-4,1.9371935268362093e-5,1.8563376708157653e-8,-8.553990379155328e-4,1.9293084341216936e-5,1.8535706064271064e-8,-8.547703530167884e-4,1.936321412352537e-5,1.8571651992880513e-8,-8.542559556665059e-4,1.952555465174852e-5,1.864632532315067e-8,-8.538756727449201e-4,1.970687106733324e-5,1.8727989569739696e-8,-8.536133022643489e-4,1.9843141688829028e-5,1.8789169711081318e-8,-8.534305325201742e-4,1.989357508587466e-5,1.8812667709058706e-8,-8.532814843157356e-4,1.984307509264013e-5,1.879252452479186e-8,-8.531232008002682e-4,1.969807749884717e-5,1.8732068113313398e-8,-8.529215833508998e-4,1.9480194465247334e-5,1.864101205609392e-8,-8.526540395091069e-4,1.9220106769211913e-5,1.8532719999846374e-8,-8.523103008730304e-4,1.8952387630912345e-5,1.8421969114052342e-8,-8.518922166171214e-4,1.8711017815063302e-5,1.83230973754797e-8,-8.514126718644334e-4,1.8525339647629737e-5,1.8248378472723516e-8,-8.508935758492765e-4,1.8416482805648164e-5,1.820658103690855e-8,-8.503628746581636e-4,1.839451037204468e-5,1.8201787199229734e-8,-8.498506739728784e-4,1.8456726342008194e-5,1.823266217066025e-8,-8.493848597949864e-4,1.858755364818312e-5,1.8292382925859e-8,-8.489867877928165e-4,1.8760075533750793e-5,1.8369304773500778e-8,-8.486675197616957e-4,1.8939094885436825e-5,1.8448317961918758e-8,-8.484249414374999e-4,1.908551666785093e-5,1.8512794690847823e-8,-8.482420318448436e-4,1.9161892414962764e-5,1.854700959220887e-8,-8.480866947760388e-4,1.9139120485201888e-5,1.853898427741999e-8,-8.47914089849887e-4,1.9004229019293404e-5,1.8483705191242097e-8,-8.476729841454053e-4,1.8768219337488148e-5,1.8386304668266145e-8,-8.473174336537129e-4,1.847105600233066e-5,1.8264025543393118e-8,-8.46823043761053e-4,1.8178888378359918e-5,1.814493877116609e-8,-8.462024594710862e-4,1.7968779622830955e-5,1.8061442704564362e-8,-8.455100213327113e-4,1.790201857047041e-5,1.8039011781499097e-8,-8.44827387250912e-4,1.7997506299222376e-5,1.8085063263440332e-8,-8.442336473553949e-4,1.82219741246474e-5,1.8184995677384506e-8,-8.437761660142642e-4,1.8504766407932626e-5,1.8308588065556925e-8,-8.434584576481965e-4,1.8767662195956877e-5,1.842267679658266e-8,-8.4324815382798e-4,1.895151458304113e-5,1.8502419193258396e-8,-8.430953104809079e-4,1.9028223922689918e-5,1.853631028756183e-8,-8.429494942284543e-4,1.8998849917980934e-5,1.852528741826402e-8,-8.427701821877676e-4,1.8884905878580218e-5,1.8478909462789927E-08,-8.425307640973115e-4,1.8718917804788393e-5,1.8411232187863652e-8,-8.4221863676526e-4,1.853706175763964e-5,1.8337626368837928e-8,-8.418337179676496e-4,1.837420046907955e-5,1.827269721178165e-8,-8.413866423383756e-4,1.8260484347668602e-5,1.822893007494307e-8,-8.408968704231464e-4,1.8218648925198794e-5,1.821564458019552e-8,-8.403904546985228e-4,1.8261602613572497e-5,1.8238040596675744e-8,-8.398971047784783e-4,1.8390365569227584e-5,1.8296347683661744e-8,-8.394462933471349e-4,1.859286581010708e-5,1.8385307406524103e-8,-8.390625554693548e-4,1.8844349042141637e-5,1.849434016111365e-8,-8.387606740926772e-4,1.9109956838288736e-5,1.86086555425353e-8,-8.38541735765671e-4,1.934955354341349e-5,1.871133966197072e-8,-8.383910411803681e-4,1.9524369896896514e-5,1.8786212347626552e-8,-8.382786396254357e-4,1.9604517498810704e-5,1.882101552190826e-8,-8.381628606157513e-4,1.957613104080785e-5,1.8810378176449664e-8,-8.379968680478822e-4,1.9446885164135782e-5,1.8758024552986323e-8,-8.377380159940519e-4,1.924845999124919e-5,1.8677651607636933e-8,-8.373591718549969e-4,1.9034058927322546e-5,1.8591733411884385e-8,-8.368597531357094e-4,1.886904423475679e-5,1.8527502435010273e-8,-8.362722099438048e-4,1.881422597460021e-5,1.8509963766801086e-8,-8.356585036787218e-4,1.890516421021724e-5,1.8553367099453363e-8,-8.350935969910999e-4,1.913599743885326e-5,1.865465529485676e-8,-8.346403242080155e-4,1.945802313397077e-5,1.8793064946602195e-8,-8.34327545916489e-4,1.979670869488179e-5,1.893732043323308e-8,-8.341432058884843e-4,2.0079064624085877e-5,1.905704488089487e-8,-8.340443957116498e-4,2.0256813697895776e-5,1.9132370964305275e-8,-8.339762461212966e-4,2.0315496394862994e-5,1.915767659009268e-8,-8.338890176634837e-4,2.0269954024688864e-5,1.9139616310843984e-8,-8.337477088005211e-4,2.015310994528189e-5,1.9092327487425826e-8,-8.335344195487556e-4,2.0004740360878148e-5,1.9032641784256222e-8,-8.332464619472108e-4,1.9863456916696745e-5,1.897669433393755e-8,-8.328930721117551e-4,1.9762094713418337e-5,1.8938027533986976e-8,-8.32492297882966e-4,1.9725314418621403e-5,1.8926665101186917e-8,-8.32068415293489e-4,1.97681582273195e-5,1.8948588036477114e-8,-8.316495311428089e-4,1.9894810847537727e-5,1.900526818571205e-8,-8.312647852018803e-4,2.0097427747145573e-5,1.909320121864192e-8,-8.309406311115315e-4,2.0355522535096095e-5,1.9203660731413604e-8,-8.306961138447342e-4,2.0636898921431595e-5,1.9323105247655924e-8,-8.305378232200559e-4,2.0901137965268803e-5,1.9434664802670044e-8,-8.304559556956476e-4,2.1106081507306507e-5,1.9520878928693548e-8,-8.304232734093543e-4,2.121667553013109e-5,1.9567400873830927e-8,-8.303983658234531e-4,2.121422167099143e-5,1.9566836162855173e-8,-8.303333870477527e-4,2.1103220227911646e-5,1.952153119702011e-8,-8.301848490250651e-4,2.0913258553630374e-5,1.9444248405592745e-8,-8.299248979192241e-4,2.069466744819484e-5,1.935621254368111e-8,-8.295501421522738e-4,2.0508232040964325e-5,1.928269583340997e-8,-8.290853574454966e-4,2.0410715377186484e-5,1.9246942812164235e-8,-8.285801055587781e-4,2.0439332177392955e-5,1.9263794111536346e-8,-8.2809766077195e-4,2.059951905236773e-5,1.9334808940806114e-8,-8.276980402284858e-4,2.086083916102179e-5,1.944680759157122e-8,-8.274201421640853e-4,2.1164367562493242e-5,1.957510063623294e-8,-8.272700826664273e-4,2.1440488239337026e-5,1.9690891838981256e-8,-8.272211164209307e-4,2.163042771909038e-5,1.9770119508971764e-8,-8.272248984694739e-4,2.1702369405362463e-5,1.980002378644996e-8,-8.27228099796603e-4,2.1656229173428763e-5,1.9781034701150995e-8,-8.271868289199328e-4,2.151765544352276e-5,1.9724204114230814e-8,-8.270743741962598e-4,2.1326531390819485e-5,1.9646358599563786e-8,-8.26882219952542e-4,2.1125677324855516e-5,1.9565355735798533e-8,-8.266169368517766e-4,2.095292185174144e-5,1.94967870339568e-8,-8.262957480189584e-4,2.0836914464318622e-5,1.9452286083130493e-8,-8.25942474644233e-4,2.0795532754586838e-5,1.9438941053262905e-8,-8.255843718992038e-4,2.083550384946244e-5,1.9459206265133282e-8,-8.252495647333255e-4,2.095228065573517e-5,1.9510899184512012e-8,-8.249644062349847e-4,2.112985311313308e-5,1.958715392852858e-8,-8.247500865889223e-4,2.1340896571258705e-5,1.96765117319045e-8,-8.24618243855376e-4,2.1548299489712724e-5,1.9763583444848516e-8,-8.245661579256653e-4,2.1709369314150928e-5,1.983081139445514e-8,-8.245731982415894e-4,2.1783542272099323e-5,1.9861656355918796e-8,-8.246010337711906e-4,2.174293624505869e-5,1.9844932417100713e-8,-8.24599762693081e-4,2.1582829143363222e-5,1.9779092489063103e-8,-8.245199320168276e-4,2.1327443144663598e-5,1.9674559193285197e-8,-8.243271463267552e-4,2.1027056964939968e-5,1.9552443886955017e-8,-8.240137478913354e-4,2.0745880537874062E-05,1.9439417625111437e-8,-8.236027048837928e-4,2.054443207807126e-5,1.9360323569771445e-8,-8.231420981185931e-4,2.046260583006955e-5,1.9331166390175837e-8,-8.226923062309316e-4,2.050897293837082e-5,1.9354816716611825e-8,-8.223101620532402e-4,2.065914064149752e-5,1.9420558033546697e-8,-8.220346412416486e-4,2.0863033376546166e-5,1.9507310836051278e-8,-8.218778118280972e-4,2.1058697312165184e-5,1.958944171580837e-8,-8.218233231961076e-4,2.1188662210092975e-5,1.964349015093813e-8,-8.218326197553458e-4,2.1214125651217814e-5,1.9653903415513317e-8,-8.21856605729153e-4,2.112285109501725e-5,1.9616154125454246e-8,-8.218486723198633e-4,2.092896166987658e-5,1.9536534435121197e-8,-8.21774900682099e-4,2.0665900016862456e-5,1.9429164058162805e-8,-8.216189955439171e-4,2.0376078120981753e-5,1.9311669317101807e-8,-8.213819939742871e-4,2.010103213726683e-5,1.9201115798957357e-8,-8.210785719648872e-4,1.987447711399243e-5,1.911118281263017e-8,-8.20732153301422e-4,1.9718757169934105e-5,1.905076891931154e-8,-8.203703758138432e-4,1.964388881521585e-5,1.9023668998090353e-8,-8.200215277640999e-4,1.9647991667492965e-5,1.9028805308153496e-8,-8.197118007420141e-4,1.971813517172542e-5,1.906061049159396e-8,-8.194627667111748e-4,1.983118207998987e-5,1.910940136475893e-8,-8.192884188063901e-4,1.99548908795387e-5,1.9161861647232118e-8,-8.191914615513263e-4,2.005020377589606e-5,1.920200887423933e-8,-8.191593400069361e-4,2.0076033762683125e-5,1.92131658914827e-8,-8.191616964490206e-4,1.999753215727303e-5,1.918132541360626e-8,-8.191520734989105e-4,1.9797250015148836e-5,1.909967483876304e-8,-8.190765586708921e-4,1.948575838000759e-5,1.8972896885336155e-8,-8.188893026085382e-4,1.9105659284594878e-5,1.881876618035338e-8,-8.185698549347501e-4,1.8723588649551148e-5,1.8664805935860888e-8,-8.181336800547649e-4,1.8410527065246534e-5,1.8540121068539456e-8,-8.176292682317155e-4,1.8218322499468568e-5,1.8465698823274743e-8,-8.171225750854558e-4,1.816336880244077e-5,1.844774602721915e-8,-8.166763753560664e-4,1.8224017124166648e-5,1.8476781130729858e-8,-8.163333375780404e-4,1.8350561857245017e-5,1.853193523194076e-8,-8.16107745214289e-4,1.8481632209535812e-5,1.8587831243527868e-8,-8.159860616604793e-4,1.8560533642340127e-5,1.8621333711184525e-8,-8.159338548044192e-4,1.8547406867931718e-5,1.8616474714546974e-8,-8.159059685028022e-4,1.8425544094309115e-5,1.856691337547998e-8,-8.158571772717478e-4,1.8201877478809365e-5,1.8475986230218312e-8,-8.157511568267292e-4,1.790263037304738e-5,1.8354797984609146e-8,-8.155662647845826e-4,1.756578402681822e-5,1.8219061692464088e-8,-8.152974777324008e-4,1.7232463817564305e-5,1.80855624276064e-8,-8.149548380423059e-4,1.6939285910434784e-5,1.79690735294896e-8,-8.14559552341495e-4,1.6713010048744217e-5,1.7880250136234366e-8,-8.141391520903434e-4,1.6567887899189816e-5,1.7824625038532265e-8,-8.13722894907782e-4,1.65052911686815e-5,1.7802510165505718e-8,-8.133380240113629e-4,1.6514764792978118e-5,1.7809448528021547e-8,-8.130068823177181e-4,1.6575692411162992e-5,1.7836899066496914e-8,-8.127444898746023e-4,1.6659173301351172e-5,1.787301036505299e-8,-8.12556110967037e-4,1.6730231029844328e-5,1.79035428156178e-8,-8.1243455505061e-4,1.6751012160459823e-5,1.7913194389418595e-8,-8.123576337801389e-4,1.6686038010803166e-5,1.7887740556088877e-8,-8.122873281432063e-4,1.6510317217035855e-5,1.7817300812807638e-8,-8.12173296759821e-4,1.6219656866485414e-5,1.7700472205744483e-8,-8.119633169768517e-4,1.5839706948872637e-5,1.754794502201198e-8,-8.116204935794114e-4,1.5427302108426434e-5,1.7382995748216617e-8,-8.111412381260521e-4,1.5058049525129414e-5,1.723638629723847e-8,-8.105632272728717e-4,1.4801145884299286e-5,1.713607209252042e-8,-8.099554919138893e-4,1.4692744717581516e-5,1.7096374287795603e-8,-8.093939263332287e-4,1.4722847634811913e-5,1.7112747706322244e-8,-8.089353936498745e-4,1.484233801753127e-5,1.7164799969601408e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json new file mode 100644 index 000000000..36daa4505 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_6.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":6000,"numberOfSamples":1000,"samples":[-8.086030009769924e-4,1.4983810405869992e-5,1.7224897231104907e-8,-8.083859978917138e-4,1.5083891420443416e-5,1.7267300877946733e-8,-8.082495498012613e-4,1.5098334698112563e-5,1.727428602498279e-8,-8.08147627922185e-4,1.5007880436382382e-5,1.72384405012867e-8,-8.080344588306433e-4,1.4817024022017442e-5,1.716203842239244e-8,-8.078727223656254e-4,1.4548770451198794e-5,1.705477562558989e-8,-8.076383715174149e-4,1.4237727414253643e-5,1.6930867623711068e-8,-8.07322519250199e-4,1.3922902257012772e-5,1.6806096847405343e-8,-8.069308512481781e-4,1.3641062334595963e-5,1.6695163186853533e-8,-8.064810674365431e-4,1.3421371907981373e-5,1.6609600165603765e-8,-8.059989962711845e-4,1.3281793410593358e-5,1.65564122262766e-8,-8.055140919096513e-4,1.3227437282497666e-5,1.6537470119423336e-8,-8.050550211507427e-4,1.3250758311506548e-5,1.654960752689265e-8,-8.046459011976815e-4,1.3333167640947059e-5,1.658525704041747e-8,-8.04303377210941e-4,1.3447472960351647e-5,1.6633415280209964e-8,-8.040343930544604e-4,1.3560785131852206e-5,1.6680814883554258e-8,-8.038344371049681e-4,1.3637887698738715e-5,1.6713305884428016e-8,-8.036861808400415e-4,1.3645376246194308e-5,1.6717552173535383e-8,-8.035588881624019e-4,1.355715046434086e-5,1.668324932697258e-8,-8.034098545481887e-4,1.3361633179672876e-5,1.660599824235996e-8,-8.031899161995416e-4,1.3069806636622722e-5,1.6490473396248044e-8,-8.028548171317579e-4,1.2720836118968e-5,1.635260915989386e-8,-8.023817298130074e-4,1.2379672673151174e-5,1.6218567533971117e-8,-8.017848916609258e-4,1.21214866090865e-5,1.6118432225501397e-8,-8.011195394685814e-4,1.2004672862047483e-5,1.6075358566152277e-8,-8.004664161243661e-4,1.2045064498369676e-5,1.6095295025865495e-8,-7.999018683719954e-4,1.2207888551202842e-5,1.6163899894807838e-8,-7.994702224832471e-4,1.242340488168506e-5,1.625294935668257e-8,-7.991732540075557e-4,1.2615665237930678e-5,1.6331930886767175e-8,-7.989782632286061e-4,1.2727385321542004e-5,1.6378010390939176e-8,-7.988353176257354e-4,1.2731278778766297e-5,1.6380533700705246e-8,-7.98693545654588e-4,1.262891363153558e-5,1.6340492793338305e-8,-7.985117563218257e-4,1.2443008649451221e-5,1.6267331548458157e-8,-7.982633092416262e-4,1.2208291416633506e-5,1.617517573988445e-8,-7.97937024226046e-4,1.1963551111059878e-5,1.6079587401967125e-8,-7.975359220318068e-4,1.1745517867734186e-5,1.5995123017000115e-8,-7.970748169146011e-4,1.1584298423249006e-5,1.5933578635139873e-8,-7.96577147084504e-4,1.1500116000004205e-5,1.59027823489698e-8,-7.960712612774264e-4,1.1501312858278244e-5,1.5905873133149612e-8,-7.955863788122124e-4,1.1583659586297626e-5,1.5941057128577827e-8,-7.951485028139105e-4,1.1731083070377464e-5,1.6001886167851592e-8,-7.947767272267163e-4,1.191780985300591e-5,1.607808021319529e-8,-7.944803671342594e-4,1.2111620389700717e-5,1.615680382240154e-8,-7.942570988685387e-4,1.2277833661532118e-5,1.622426162217438e-8,-7.940921495251726e-4,1.2383811890041994e-5,1.6267523534675877e-8,-7.939586304605242e-4,1.2403888228974189e-5,1.627651653757225e-8,-7.938193280601158e-4,1.2324675476991541e-5,1.6246136706354253e-8,-7.936307142675456e-4,1.2150538325271284e-5,1.6178380649204796e-8,-7.933502814410618e-4,1.1908091876990174e-5,1.608405253597014e-8,-7.929477558193591e-4,1.164701184564693e-5,1.5982993948326116e-8,-7.924185834346178e-4,1.1433225812865484e-5,1.5901308272972388e-8,-7.91794201526995e-4,1.1331683271163489e-5,1.5864503448445484e-8,-7.911404620961953e-4,1.1381697803054312e-5,1.5887775959579784e-8,-7.905387505296019e-4,1.1576581858174432e-5,1.5968081661271605e-8,-7.900557579253249e-4,1.1862063556780149e-5,1.6083659449037498e-8,-7.897185238722374e-4,1.2157584885353175e-5,1.6202533533502623e-8,-7.895090488599649e-4,1.238821600505574e-5,1.629512295943271e-8,-7.893784662655317e-4,1.2508703453700893e-5,1.6343711956180873e-8,-7.892687928634058e-4,1.2510154891614356e-5,1.6345059350363414e-8,-7.891303130012338e-4,1.2412762325594466e-5,1.630746636423513e-8,-7.889301607306106e-4,1.22532563576661e-5,1.6245726990312346e-8,-7.886537075923972e-4,1.207350096757021e-5,1.6176528951831164e-8,-7.883021088407754e-4,1.1912612868365128e-5,1.611529698390703e-8,-7.878886554381245e-4,1.1802366938175958e-5,1.6074404646753326e-8,-7.874351827903575e-4,1.1764678405500699e-5,1.606225725212218e-8,-7.869686785579548e-4,1.1810193745663737e-5,1.6082821884922013e-8,-7.865178808041266e-4,1.1937644143326378e-5,1.613543027797478e-8,-7.861097334099989e-4,1.2134002375285157e-5,1.621485643068633e-8,-7.857657050956631e-4,1.2375715139896458e-5,1.631178566628287e-8,-7.854982761710509e-4,1.2631342722271491e-5,1.6413830995212057e-8,-7.853082129742637e-4,1.2865627763957707e-5,1.650712800670973e-8,-7.851832404152557e-4,1.3044611801087987e-5,1.6578365268496393e-8,-7.850984979333072e-4,1.3141234772513003e-5,1.661701655440917e-8,-7.850189859904393e-4,1.314074642924285e-5,1.6617484545055545e-8,-7.849040783473408e-4,1.3045167089176555e-5,1.658083277620777e-8,-7.847140887854131e-4,1.2875989940709468e-5,1.6515781106734278e-8,-7.84418739673568e-4,1.2674020385660439e-5,1.643854403323704e-8,-7.840067264380274e-4,1.2494690124657561e-5,1.637089555624342e-8,-7.834940629310338e-4,1.2397202649814611e-5,1.633586078646625e-8,-7.829269123445694e-4,1.242762480633356e-5,1.6351121218225165e-8,-7.823738580167101e-4,1.2600199243328678e-5,1.6421819173272966e-8,-7.819059640317111e-4,1.2886068491034284e-5,1.6536310251172648e-8,-7.815711190078477e-4,1.3218908359013295e-5,1.6668481029581357e-8,-7.813760467322517e-4,1.3518369457025356e-5,1.678692018769316e-8,-7.812866097556989e-4,1.3719738169680302e-5,1.6866455278038853e-8,-7.81245043675736e-4,1.3793772038801468e-5,1.689586528796916e-8,-7.811924892995569e-4,1.3748855436262393e-5,1.6878708749903426e-8,-7.810853126995724e-4,1.3619700644445478e-5,1.6828864667497608e-8,-7.809012145161698e-4,1.3452099763330615e-5,1.6764485192192976e-8,-7.806376216935296e-4,1.3290653946538645e-5,1.6703112676782687e-8,-7.803066615377375e-4,1.31716120529323e-5,1.6658847878700447e-8,-7.799298430182615e-4,1.311988593603372e-5,1.6641219568441624e-8,-7.795337437080761e-4,1.3148379669826384e-5,1.665500141543589e-8,-7.791466519745774e-4,1.3258192670318894e-5,1.6700371540229692e-8,-7.787956166079658e-4,1.3439123013885566e-5,1.6773161126941902e-8,-7.785034521569552e-4,1.3670540636302536e-5,1.6865211246133127e-8,-7.782855194761558e-4,1.3923070098588027e-5,1.6965022456657025e-8,-7.781465158733033e-4,1.4161671472159447e-5,1.705894395665733e-8,-7.780780274644127e-4,1.4350439747166847e-5,1.713304166764391e-8,-7.780578724819625e-4,1.4458808126371696e-5,1.717552433911576e-8,-7.780520945693767e-4,1.4468165316748068e-5,1.7179332308174036e-8,-7.780199264883032e-4,1.4377381074197417e-5,1.7144283672725583e-8,-7.779212697790456e-4,1.42055818063788e-5,1.707811591367681e-8,-7.777254715128031e-4,1.399092160934568e-5,1.6995928407681764e-8,-7.774196852037493e-4,1.37848241088391e-5,1.691784077706239e-8,-7.770148281025337e-4,1.3641905255902624e-5,1.68649932739021e-8,-7.7654695118254e-4,1.3606723344494496e-5,1.6854386908037733e-8,-7.760719733956719e-4,1.3699981752654324e-5,1.6893614104122298e-8,-7.756528920660803e-4,1.3908611710779359e-5,1.6977171984468366e-8,-7.753414973715193e-4,1.4185135339496087e-5,1.708636928482128e-8,-7.751607783545031e-4,1.4459758828692502e-5,1.7194078255654558e-8,-7.750965022472446e-4,1.4662655192892729e-5,1.7273331572288793e-8,-7.751031768498831e-4,1.4747011345581016e-5,1.730618293517172e-8,-7.751215862559233e-4,1.4701900854900151e-5,1.7288656969080978e-8,-7.750986283316115e-4,1.45502732264208e-5,1.7229950783472687e-8,-7.750005720993924e-4,1.4336090541435382e-5,1.714739884303355e-8,-7.748166257563864e-4,1.4108830030091316e-5,1.7060381671628664e-8,-7.74555246270904e-4,1.3911680743308552e-5,1.6985680755460048e-8,-7.742375216046733e-4,1.3775437312394145e-5,1.6935101840957774e-8,-7.738908672395347e-4,1.3716934985120997e-5,1.691492118059338e-8,-7.735443296708602e-4,1.373987657547806e-5,1.6926288994825302e-8,-7.732253688257358e-4,1.3836379992091725e-5,1.6965903557041073e-8,-7.729574201870145e-4,1.398850143961783e-5,1.702664562074045e-8,-7.727575479089458e-4,1.41697546103367e-5,1.7098179346093112e-8,-7.726338127068317e-4,1.4347167415583573e-5,1.7167741915981117e-8,-7.72582526013079e-4,1.4484672906976143e-5,1.7221441721592798e-8,-7.725862452751478e-4,1.4548420666369706e-5,1.724630156120042e-8,-7.726138958417847e-4,1.4513823225779425e-5,1.723297684502607e-8,-7.726244080267737e-4,1.4372974279860863e-5,1.717861929269323e-8,-7.725743889406402e-4,1.4139927504773041e-5,1.708890500581759e-8,-7.724286327675101e-4,1.3851021527237483e-5,1.6978122122320604e-8,-7.721705055599232e-4,1.3558663671444288e-5,1.6866694872960056e-8,-7.718085762849863e-4,1.3319387181004731e-5,1.6776479385700888e-8,-7.713767987397502e-4,1.3179295367351444e-5,1.6725086614472134e-8,-7.709275714331829e-4,1.3161122848693512e-5,1.6720920077215314e-8,-7.705191844169844e-4,1.3256827859980563e-5,1.6760442718757147e-8,-7.702008063045723e-4,1.3428227793557443e-5,1.6828582942267516e-8,-7.699990644679152e-4,1.361618554202354e-5,1.6902388068197547e-8,-7.699104039245936e-4,1.3756467861176603e-5,1.6957151603506948e-8,-7.699023224946573e-4,1.3797806695198463e-5,1.697331252819716e-8,-7.69923693570122e-4,1.3715970518988264e-5,1.6941802014512077e-8,-7.699204730517889e-4,1.3518607018056203e-5,1.686585566047806e-8,-7.698506029324883e-4,1.3239647040700348e-5,1.675881321149357e-8,-7.696928309426752e-4,1.292679553392078e-5,1.663924458294889e-8,-7.694477547487295e-4,1.2627916951666916e-5,1.6525649634657365e-8,-7.691330174202381e-4,1.2380977939982187e-5,1.6432564147368763e-8,-7.687761526504343e-4,1.2209237379755138e-5,1.6368739832210366e-8,-7.684079653894965e-4,1.2120781661778011e-5,1.633703602331063e-8,-7.680577369530784e-4,1.2110432408898472e-5,1.6335228492463344e-8,-7.677501944254693e-4,1.21623329271923e-5,1.6357054465017322e-8,-7.675035516029946e-4,1.2252353588631538e-5,1.6393155437041988e-8,-7.673278510063229e-4,1.2350244031443248e-5,1.6431898304259127e-8,-7.672231013092557e-4,1.2422047112441263e-5,1.6460286860244704e-8,-7.671772688900853e-4,1.243363156115782e-5,1.6465302548663993e-8,-7.671649640707796e-4,1.2356108383738767e-5,1.6435971563363704e-8,-7.671484101972802e-4,1.2173134658280302e-5,1.6366160768870968e-8,-7.670825263514741e-4,1.188858814480631e-5,1.6257519307403445e-8,-7.669249561884815e-4,1.153125860759139e-5,1.6121270567197454e-8,-7.666492306156377e-4,1.115245465159126e-5,1.5977261511360678e-8,-7.662560978121537e-4,1.0814456656206232e-5,1.5849466079461248e-8,-7.657770512027595e-4,1.05724402594284e-5,1.5758977593618244e-8,-7.65267023298901e-4,1.0456872508954073e-5,1.571723833544501e-8,-7.647885985095952e-4,1.0463873633946137e-5,1.5722417018223885e-8,-7.643941100002343e-4,1.0557097979145212e-5,1.5760262592280024e-8,-7.641121194876584e-4,1.0679365871370066e-5,1.580868049828012e-8,-7.639418824019487e-4,1.0769014504534602e-5,1.5844044262621295e-8,-7.63856040874777e-4,1.0775642632836637e-5,1.5847200884499e-8,-7.638095816807227e-4,1.067134664327151e-5,1.5807708446849496e-8,-7.637520719001363e-4,1.0455341968064698e-5,1.5725533933861105e-8,-7.636398633410946e-4,1.015159717703648e-5,1.5610082730947348e-8,-7.634452271731003e-4,9.80080001717917e-6,1.547706895850993e-8,-7.63160419406769e-4,9.449412193445568e-6,1.5344290126782374e-8,-7.627963935193374e-4,9.13916163473737e-6,1.522760366709052e-8,-7.623775983584871e-4,8.899634906261868e-6,1.5138131787055436e-8,-7.619351862275943e-4,8.745021320744058e-6,1.5081084100568852e-8,-7.615007251523846e-4,8.674467790722235e-6,1.5055961298020598E-08,-7.611015754607918e-4,8.674636046522299e-6,1.5057573206547553e-8,-7.607580727699104e-4,8.723012138457471e-6,1.507730793528806e-8,-7.604819845856674e-4,8.79104729455283e-6,1.5104310215033872e-8,-7.602755220059144e-4,8.84693302571431e-6,1.512651308174354e-8,-7.60130395955743e-4,8.858401879917029e-6,1.5131688225382546e-8,-7.600268787531797e-4,8.796280560370882e-6,1.5108794499177295e-8,-7.599335469922736e-4,8.639531259323042e-6,1.5049899963453894e-8,-0.000759809210702789,8.381910431287344e-6,1.495271925500096e-8,-7.596089689111743e-4,8.038852722231386e-6,1.4823230368913413e-8,-7.592954714676379e-4,7.651012523481406e-6,1.4677004696445236e-8,-7.588534536653339e-4,7.279557888325591e-6,1.4537373653592984e-8,-7.583012167940397e-4,6.990438849818558e-6,1.4429384557414762e-8,-7.576907836367265e-4,6.831496399448591e-6,1.4371061617021388e-8,-7.570930731261787e-4,6.813281142864784e-6,1.4366159181078007e-8,-7.56573893838745e-4,6.904553518906711e-6,1.440256548875904e-8,-7.561728030269616e-4,7.044803405478948e-6,1.445716559337654e-8,-7.55894167206311e-4,7.166043359666975e-6,1.450415417168199e-8,-7.55711412564325e-4,7.212993883249746e-6,1.4522671727194704e-8,-7.555791656848098e-4,7.1549930276133835e-6,1.4501273602714309e-8,-7.554470640511585e-4,6.988776194001312e-6,1.443893097512812e-8,-7.552712370159999e-4,6.734529749762169e-6,1.4343479112262025e-8,-7.550218631592772e-4,6.428246653777687e-6,1.422866437274883e-8,-7.546866678361489e-4,6.112788824185316e-6,1.4110719482184918e-8,-7.542707923333388e-4,5.8292867079302145e-6,1.400510243390426e-8,-7.537936783321645e-4,5.610111184424559e-6,1.392387568318107e-8,-7.532839358400108e-4,5.474383321977379e-6,1.3874075234006555e-8,-7.527734587962739e-4,5.42640635004478e-6,1.3857186797906472e-8,-7.522919859404003e-4,5.45669894844625e-6,1.386957766596827e-8,-7.518629339501932e-4,5.544851652733658e-6,1.3903575419281547e-8,-7.515008253699221e-4,5.66324214311497e-6,1.3948838400251825e-8,-7.51210094786353e-4,5.780767390543559e-6,1.3993723032625362e-8,-7.509847483529711e-4,5.866229168685598e-6,1.4026532943938554e-8,-7.508084438557491e-4,5.891537175053618e-6,1.4036723339664531e-8,-7.506548991499108e-4,5.835186884660035e-6,1.4016225902040902e-8,-7.504890649576297e-4,5.6865153995048614e-6,1.3961069522205696e-8,-7.502702069824309e-4,5.450810519333698e-6,1.3873309470797243e-8,-7.499584705215199e-4,5.154093641144201e-6,1.376281194863296e-8,-7.495258303846799e-4,4.844492327076601e-6,1.3647730610076522e-8,-7.489697010459084e-4,4.585680212391129e-6,1.3551982235163058e-8,-7.483229773845283e-4,4.439424944083938e-6,1.3498642646116442e-8,-7.47651384167147e-4,4.441135789993236e-6,1.3500781498633393e-8,-7.47033630108719e-4,4.5810783550153105e-6,1.3554518828823992e-8,-7.465319640685318e-4,4.8048662841334895e-6,1.3639340521473976e-8,-7.461696806020518e-4,5.035072310667735e-6,1.3726250888424918e-8,-7.45927649234082e-4,5.200984456189078e-6,1.3788876550238137e-8,-7.457581262680648e-4,5.260058265685222e-6,1.3811432021938078e-8,-7.456046602651826e-4,5.203880705388684e-6,1.3790914319102578e-8,-7.454181631269655e-4,5.052110434397819e-6,1.373481274651468e-8,-7.451656280700271e-4,4.841472760620587e-6,1.3656958068869079e-8,-7.448325507537849e-4,4.61494382342504e-6,1.357343640410499e-8,-7.444214445461733e-4,4.413322175715639e-6,1.3499417669267064e-8,-7.439484346229335e-4,4.2694368736615086e-6,1.3447009746671435e-8,-7.434389857049532e-4,4.204518303627032e-6,1.3423957631836567e-8,-7.429232000552066e-4,4.22642353337615e-6,1.3433047936838739e-8,-7.424310713391792e-4,4.3296407656193255e-6,1.3472159698785832e-8,-7.419881612882491e-4,4.496920195240808e-6,1.3534885426142835e-8,-7.416121363128246e-4,4.702242436589464e-6,1.3611614172495427e-8,-7.413105280088105e-4,4.9146848337064315e-6,1.369092983616905e-8,-7.410798564648585e-4,5.102579289552534e-6,1.3761123342581654e-8,-7.409059284613239e-4,5.2374620959614515e-6,1.3811649751762265e-8,-7.40765021747722e-4,5.2976581500819286e-6,1.3834473325427858e-8,-7.406258251361314e-4,5.271569720175211e-6,1.3825313013330133e-8,-7.404522940607082e-4,5.16079816624066e-6,1.3784817350730312e-8,-7.402080188256512e-4,4.982998369865964e-6,1.3719616164717567e-8,-7.398629579022926e-4,4.773502162654375e-6,1.3642888630399176e-8,-7.394027814983437e-4,4.583451075155526e-6,1.3573616754794363e-8,-7.388391120671625e-4,4.471358391383276e-6,1.3533406453527241e-8,-7.382156353710173e-4,4.486293417993243e-6,1.3540246689754017e-8,-7.376025584177996e-4,4.646263952038066e-6,1.360057244394542e-8,-7.370753966750942e-4,4.923220958661702e-6,1.3703844593894654e-8,-7.366853493943496e-4,5.247831278658755e-6,1.3824412277992002e-8,-7.364384127765779e-4,5.535851078356583e-6,1.3931243008841947e-8,-7.362964904189415e-4,5.721421847439438e-6,1.400013251189647e-8,-7.361977969831083e-4,5.777834083495166e-6,1.4021317172913075e-8,-7.360817614101209e-4,5.717840477241389e-6,1.3999596259483795e-8,-7.359055977095308e-4,5.580085272187351e-6,1.3949330970951832e-8,-7.356494891230436e-4,5.412741838724204e-6,1.3888375540751401e-8,-7.353140711726487e-4,5.2611317114854454e-6,1.3833462198014537e-8,-7.349148352444343e-4,5.160747629068616e-6,1.3797605620566516e-8,-7.34476381499244e-4,5.134402307300587e-6,1.378907362699951e-8,-7.340275945238301e-4,5.1916865952263e-6,1.3811240956866352e-8,-7.335976379390709e-4,5.3295409738639065e-6,1.386285790594125e-8,-7.332124264851362e-4,5.533583318487555e-6,1.393857552488052e-8,-7.328914883847182e-4,5.780224195792896e-6,1.4029729175094004e-8,-7.326453464977734e-4,6.039657534633526e-6,1.412541622107681e-8,-7.324737353478441e-4,6.279722160979335e-6,1.4213885118568412e-8,-7.323650721376349e-4,6.470322863277057e-6,1.4284138014656952e-8,-7.322974036581984e-4,6.587844288483066e-6,1.4327549734585913e-8,-7.322407659586676e-4,6.619032470350085e-6,1.4339305787613665e-8,-7.321607813179032e-4,6.563928060747684e-6,1.4319492082724502e-8,-7.320233046863541e-4,6.4374966021072834e-6,1.4273690279829042e-8,-7.317999978283977e-4,6.269641412024475e-6,1.4212954276300681e-8,-7.314747508146167e-4,6.103003158628865e-6,1.415295567438129e-8,-7.310503956340962e-4,5.987372946262786e-6,1.4111888222525968e-8,-7.30553886574779e-4,5.969501086118192e-6,1.4106716472582734e-8,-7.300364338939657e-4,6.078516230287104e-6,1.4147877299553037e-8,-7.295642924788504e-4,6.3107236580662384e-6,1.4233817360402606e-8,-7.29198788762624e-4,6.622175486804494e-6,1.4348383535941494e-8,-7.289720333664855e-4,6.9380135239147e-6,1.4464270004578152e-8,-7.288720132220635e-4,7.178968146684719e-6,1.4552629285696456e-8,-7.288478475491566e-4,7.292033122646066e-6,1.4594189017363577e-8,-7.288324425920637e-4,7.267653302542506e-6,1.4585519239748402e-8,-7.287681356467766e-4,7.1358561174840265e-6,1.4537665753835853e-8,-7.286220514824529e-4,6.9483598487620115e-6,1.4469630977301123e-8,-7.28388085845522e-4,6.7592678922152605e-6,1.4401275496516345e-8,-7.280804913481166e-4,6.612273121504457e-6,1.4348581630811597e-8,-7.277252407959589e-4,6.5354231757555416e-6,1.4321716844225746e-8,-7.273527660572583e-4,6.540950211029966e-6,1.4324997142073501e-8,-7.269930114233965e-4,6.6273182842564705e-6,1.4357691570767854e-8,-7.26672240266485e-4,6.781718300136292e-6,1.4414990002890305e-8,-7.264107154812758e-4,6.982473886382033e-6,1.4488915944389668e-8,-7.262207318281119e-4,7.201524453767113e-6,1.4569238469116222e-8,-7.261048945983162e-4,7.407366857871365e-6,1.464452799757507e-8,-7.260549073749619e-4,7.568797659062485e-6,1.4703494431167381e-8,-7.26051465526772e-4,7.659436861891897e-6,1.4736614332348274e-8,-7.260658689683676e-4,7.662469338693832e-6,1.4737849783051846e-8,-7.260636091525101e-4,7.574690894230019e-6,1.4706123818166879e-8,-7.260097162467727e-4,7.408843381596091e-6,1.4646170303919831e-8,-7.258751869359084e-4,7.193327753172565e-6,1.4568414770672015e-8,-7.256434329193616e-4,6.968816351578809e-6,1.4487705994885722e-8,-7.253155606930208e-4,6.781829885047062e-6,1.4420936000282275e-8,-7.249132562182546e-4,6.6756763505280914e-6,1.4383719471977372e-8,-7.244778292372096e-4,6.679612946037396e-6,1.438647617104953e-8,-7.240638597492315e-4,6.798235959896041e-6,1.443065370266917e-8,-7.237266826504071e-4,7.004766318589259e-6,1.4506391489857573e-8,-7.235054613225411e-4,7.243025516191428e-6,1.4593301323513466e-8,-7.2340765660686e-4,7.441405783647142e-6,1.4665511557876749e-8,-7.234034010785615e-4,7.53631382926181e-6,1.4700082991218885e-8,-7.234351925205399e-4,7.495034347391305e-6,1.468523799630331e-8,-7.234393429224217e-4,7.325932982914151e-6,1.462407472647779e-8,-7.233679091640017e-4,7.071240070168453e-6,1.4531993918580552e-8,-7.2320061796834e-4,6.7884821942071435e-6,1.4429962503804012e-8,-7.229442000740695e-4,6.531515408382787e-6,1.4337580335722595e-8,-7.226237824510028e-4,6.338676971745417e-6,1.4268730878278133e-8,-7.222726609371696e-4,6.229186086844068e-6,1.4230270463511608e-8,-7.219243370456767e-4,6.204979076589403e-6,1.4222735101428858e-8,-7.216077209136364e-4,6.254637305234233e-6,1.424182454315981e-8,-7.213447052154808e-4,6.357313551246988e-6,1.427987548429127e-8,-7.211489353260135e-4,6.485977719230195e-6,1.432706196354135e-8,-7.210249390732579e-4,6.610178726644471e-6,1.4372391800318248e-8,-7.209673047686168e-4,6.69888928465445e-6,1.440471413451235e-8,-7.209601280974389e-4,6.7240278150433335e-6,1.4413965009805703e-8,-7.20977427897608e-4,6.664882671759e-6,1.4392744472576701e-8,-7.209854343714221e-4,6.51295128433434e-6,1.4338056762127022e-8,-7.209473640933031e-4,6.27595967171071e-6,1.4252764848687728e-8,-7.20830498270342e-4,5.979351536502665e-6,1.4146129546232638e-8,-7.206142541252474e-4,5.663667819126294e-6,1.4032848951131945e-8,-7.202969652261338e-4,5.377288241995543e-6,1.3930404038766788e-8,-7.198989165010806e-4,5.1656853148451214e-6,1.3855144520274798e-8,-7.194600346572165e-4,5.059761967389392e-6,1.381807600558674e-8,-7.190320840484526e-4,5.066413372274996e-6,1.3821501796020195e-8,-7.186667008859963e-4,5.164217116728777e-6,1.3857550892980985e-8,-7.184018625214499e-4,5.306290101127747e-6,1.3909277458429183e-8,-7.182503872805278e-4,5.430848543585556e-6,1.3954476928807232e-8,-7.181945402363831e-4,5.477745639924967e-6,1.3971593615188382e-8,-7.181899363308149e-4,5.406401461740874e-6,1.3946114620028615e-8,-7.181787956068019e-4,5.208432912413644e-6,1.3875092760960466e-8,-7.181080232052682e-4,4.909307597908525e-6,1.3767756999698908e-8,-7.179446434546303e-4,4.558250395919083e-6,1.3641890350548404e-8,-7.176825410055812e-4,4.2115104900122955e-6,1.3517783575060329e-8,-7.173394303115774e-4,3.9166207270580965e-6,1.3412530864261023e-8,-7.169476918402883e-4,3.7030604472824477e-6,1.3336657086835069e-8,-7.165441754546074e-4,3.5802790936875876e-6,1.3293434686648582e-8,-7.161624370313028e-4,3.540740334466443e-6,1.3280030267105057e-8,-7.158283342384227e-4,3.5648889198243974e-6,1.3289336702046267e-8,-7.155582446948228e-4,3.6259309695520506e-6,1.3311712356351884e-8,-7.153587035969551e-4,3.6936410852722728e-6,1.3336343509346127e-8,-7.152264834437153e-4,3.7373251672731826e-6,1.3352284086218272e-8,-7.151486443905965e-4,3.7285507918335262e-6,1.3349406474614047e-8,-7.151027106872547e-4,3.6443643170977546e-6,1.3319531867733131e-8,-7.150577088567976e-4,3.471371309569102e-6,1.3257885044742072e-8,-7.149771233861474e-4,3.2102934517910352e-6,1.3164734543938834e-8,-7.148246566289133e-4,2.879607352494538e-6,1.304671174381637e-8,-7.145727155168279e-4,2.5159715205526265e-6,1.2916970172838227e-8,-7.14211741474117e-4,2.1691340011926946e-6,1.2793345447593278e-8,-7.13756704294834e-4,1.8907340958244058e-6,1.2694309938959155e-8,-7.13246867286023e-4,1.7195895090076379e-6,1.263368292154631e-8,-7.127372110269032e-4,1.6687917986243744e-6,1.2616035558109819e-8,-7.122837106314069e-4,1.7200599947476228e-6,1.2634736954970411e-8,-7.11927625851379e-4,1.8279231828251246e-6,1.2673513419775649e-8,-7.116842639270483e-4,1.9322272870562014e-6,1.2710931582090524e-8,-7.115395372739504e-4,1.9745795969288553e-6,1.2726232447310445e-8,-7.114547557725002e-4,1.9136654302389338e-6,1.270474472926178e-8,-7.113777961538001e-4,1.735292690655213e-6,1.2641441637291946e-8,-7.112572859060644e-4,1.4546876493828617e-6,1.2541763992937194e-8,-7.110556761496227e-4,1.1107338000528394e-6,1.2419577806846834e-8,-7.107574398631749e-4,7.542984399074633e-7,1.2293006190122626e-8,-7.103703854584871e-4,4.3467766591549663e-7,1.2179579666103922e-8,-7.099206413352514e-4,1.8848792044254664e-7,1.209227121863942e-8,-7.094440058956009e-4,3.38112439872334e-8,1.2037433652280913e-8,-7.089770272256449e-4,-3.005946575574514e-8,1.2014751159396523e-8,-7.085502677011695e-4,-1.8942666134325098e-8,1.2018584823579895e-8,-7.081845728037587e-4,4.1504324056836106e-8,1.2039859175127503e-8,-7.078898530136206e-4,1.2085396250360532e-7,1.2067846450829226e-8,-7.07665357590904e-4,1.8796389173417595e-7,1.2091574008084617e-8,-7.075005062641622e-4,2.1404627281451953e-7,1.2100880394544461e-8,-7.073757642706145e-4,1.7527949313218791e-7,1.2087321949694448e-8,-7.072636271028598e-4,5.563556618695607e-8,1.2045175593473184e-8,-7.07130371455471e-4,-1.496666377152965e-7,1.1972682276401499e-8,-7.069396260706627e-4,-4.3038263800395507e-7,1.1873415802529695e-8,-7.06658736467273e-4,-7.585342773530107e-7,1.1757266370952408e-8,-7.062679103912365e-4,-1.0893111587869973e-6,1.164011958067034e-8,-7.057699493448573e-4,-1.3683565279279107e-6,1.1541242460665835e-8,-7.051958014848092e-4,-1.546143275736306e-6,1.1478149826314971e-8,-7.046006461074884e-4,-1.5955509000684547e-6,1.1460378253613378e-8,-7.040489785775769e-4,-1.5244730508863847e-6,1.1485082661954835e-8,-7.035938487042454e-4,-1.3758182686775965e-6,1.1537113738876136e-8,-7.032597812034259e-4,-1.2137575651664247e-6,1.1593901613711014e-8,-7.030369079407669e-4,-1.1027795845962554e-6,1.1632801609042198e-8,-7.028872532957906e-4,-1.0889580682558247e-6,1.1637630789638363e-8,-7.027584678100196e-4,-1.1897271998792792e-6,1.1602238033439061e-8,-7.025988796732991e-4,-1.3932883666335377e-6,1.1530725736851102e-8,-7.02369467900341e-4,-1.6652872066721532e-6,1.1435125811886794e-8,-7.020507465969052e-4,-1.959328698109832e-6,1.1331711320640786e-8,-7.016442939978633e-4,-2.2282184952551496e-6,1.1237034626369414e-8,-7.011697035243303e-4,-2.4335618600813347e-6,1.1164544945400339e-8,-7.006583801112918e-4,-2.5521150452073807e-6,1.1122365961218336e-8,-7.001460060304543e-4,-2.5781375982917395e-6,1.1112496075816941e-8,-6.996655112290227e-4,-2.5220161431554106e-6,1.1131319063948755e-8,-6.992418776281199e-4,-2.4062965783673872e-6,1.1171004748331547e-8,-6.988893060139256e-4,-2.260591788360715e-6,1.1221277939326513e-8,-6.986105278643894e-4,-2.1166353920163535e-6,1.1271116834225942e-8,-6.983975667488254e-4,-2.0042272969958953e-6,1.1310137596645092e-8,-6.982331775114807e-4,-1.948167868728002e-6,1.1329646935505253e-8,-6.980924984224593e-4,-1.9658036073505293e-6,1.1323502940205919e-8,-6.979449169280985e-4,-2.064692866216944e-6,1.128895545665963e-8,-6.977566158534427e-4,-2.240091878769088e-6,1.1227562045779688e-8,-6.974946560896657e-4,-2.4725062008836e-6,1.1146078731656455e-8,-6.971334322778307e-4,-2.7265579611108132e-6,1.1056870056968845e-8,-6.966634001809645e-4,-2.9535495920723803e-6,1.0976992639682918e-8,-6.960998225694706e-4,-3.1003923112501523e-6,1.0925024976391107e-8,-6.954864809875409e-4,-3.125514095301827e-6,1.0915470365326537e-8,-6.94888405730523e-4,-3.0171655312078273e-6,1.0952385872816837e-8,-6.943721615170897e-4,-2.8040956720319907e-6,1.1025740558355747e-8,-6.939812476892919e-4,-2.5493950355256136e-6,1.111363121856989e-8,-6.937199582600355e-4,-2.328052856844355e-6,1.119007794880418e-8,-6.935545525919977e-4,-2.199995786806156e-6,1.123431816683279e-8,-6.93429179173718e-4,-2.1924546956316556e-6,1.1236874298485071e-8,-6.932862200777068e-4,-2.2974342328778687e-6,1.1200440938200634e-8,-6.930818299262455e-4,-2.4806963116481874e-6,1.1136809772812793e-8,-6.927932877982263e-4,-2.69515791678022e-6,1.1062250907052743e-8,-6.924193527516066e-4,-2.8932872464684024e-6,1.0993214408490107e-8,-6.919763333906085e-4,-3.036081365862266e-6,1.0943205101581768e-8,-6.91492215226939e-4,-3.098326934476717e-6,1.0920952638432522e-8,-6.910002904512773e-4,-3.070683044984637e-6,1.0929697707612377e-8,-6.905331356871504e-4,-2.959140124946023e-6,1.0967394783237994e-8,-6.90117596465121e-4,-2.7823877442401985e-6,1.1027633804261848e-8,-6.897712626577218e-4,-2.567793687719598e-6,1.1101026790081565e-8,-6.895006358475275e-4,-2.3467550008997916e-6,1.1176795508382824e-8,-6.89300944615274e-4,-2.150115599113473e-6,1.1244329229978124e-8,-6.891573100006782e-4,-2.00424231133623e-6,1.1294520632905088e-8,-6.890467540316551e-4,-1.9280356409594636e-6,1.1320793607430406e-8,-6.889406381638624e-4,-1.930734024848246e-6,1.1319874885504703e-8,-6.888074504279619e-4,-2.0102414136189414e-6,1.1292397488351405e-8,-6.886161724085662e-4,-2.1518695593095066e-6,1.1243363432643985e-8,-6.883407101463712e-4,-2.327739840236361e-6,1.1182368829498123e-8,-6.879658514959947e-4,-2.497813089077346e-6,1.1123245267791766e-8,-6.874944007746656e-4,-2.6143891697839814e-6,1.108247815801189e-8,-6.869533275424424e-4,-2.6320148015926607e-6,1.1075749525894508e-8,-6.863944546199724e-4,-2.522826202578732e-6,1.1112635168862053e-8,-6.858844538666012e-4,-2.2926275030821306e-6,1.1191109583836215e-8,-6.854832279089802e-4,-1.9877298379677976e-6,1.1295269233710088e-8,-6.852191743942243e-4,-1.6834486218362717e-6,1.1399318636952878e-8,-6.850762207670568e-4,-1.4561494259965552e-6,1.1477115718733162e-8,-6.850017506227822e-4,-1.353885669014518e-6,1.1512169978020316e-8,-6.849299395502611e-4,-1.382232489232581e-6,1.1502489363880025e-8,-6.848057305429362e-4,-1.5099055715152289e-6,1.1458706325152704e-8,-6.845983153559325e-4,-1.6859188037799119e-6,1.1398245647313847e-8,-6.843027428170722e-4,-1.8571846721204412e-6,1.1339299333489303e-8,-6.839342878524915e-4,-1.9804742909492373e-6,1.1296704524613013e-8,-6.83520537940993e-4,-2.0280142608472192e-6,1.1280001238857747e-8,-6.830941226507634e-4,-1.9884992920636643e-6,1.1293074773063915e-8,-6.826870433621648e-4,-1.8656132505174621e-6,1.13346680053564e-8,-6.823264387413217e-4,-1.6753696630438363e-6,1.1399305110651174e-8,-6.82031487121087e-4,-1.4427423697938251e-6,1.1478456664893744e-8,-6.818114056550049e-4,-1.1978017957364357e-6,1.1561864398442774e-8,-6.816645845240956e-4,-9.716026242010502e-7,1.1638940368353777e-8,-6.81578901101889e-4,-7.920793248862827e-7,1.1700156773758746e-8,-6.815332503350359e-4,-6.803319074311323e-7,1.173830361103633e-8,-6.815001275355418e-4,-6.477490111422285e-7,1.1749467706559448e-8,-6.814489184104265e-4,-6.941843501332436e-7,1.1733661035226025e-8,-6.813496403718091e-4,-8.071935459534741e-7,1.1695093476635976e-8,-6.81177053403738e-4,-9.623862476189849e-7,1.164206416834527e-8,-6.809151476327394e-4,-1.1251098518570805e-6,1.158639073471916e-8,-6.80561933977751e-4,-1.254012468855875e-6,1.154218474453644e-8,-6.801338767888566e-4,-1.307464024167702e-6,1.1523643336190613e-8,-6.79668066854345e-4,-1.2535982747354408e-6,1.1541612761355467e-8,-6.792188902309273e-4,-1.0830088825351644e-6,1.1599275967291585e-8,-6.78845970446115e-4,-8.196398734036575e-7,1.1688487599342648e-8,-6.785938804680131e-4,-5.21865523976247e-7,1.1789443842818592e-8,-6.784716853381285e-4,-2.670917135713526e-7,1.1875898145539714e-8,-6.784454801674145e-4,-1.229862560247459e-7,1.1924869708763637e-8,-6.78451422731065e-4,-1.2039502744957288e-7,1.1925808501975738e-8,-6.784224136183189e-4,-2.4413852327126643e-7,1.188376744728601e-8,-6.783122474568518e-4,-4.450160638167141e-7,1.1815400961230667e-8,-6.781056774875232e-4,-6.622121589485789e-7,1.1741382274874111e-8,-6.778146379208505e-4,-8.426921141446391e-7,1.1679787181502826e-8,-6.774678679897052e-4,-9.513665380458594e-7,1.1642596348323024e-8,-6.771004646386013e-4,-9.730261227384026e-7,1.163500954750871e-8,-6.767463032638174e-4,-9.096388229470013e-7,1.165635793010542e-8,-6.764335621130428e-4,-7.761178639860844e-7,1.170155308564171e-8,-6.761823408651586e-4,-5.962181208590508e-7,1.1762500661860506e-8,-6.76003339470729e-4,-3.9886548663780184e-7,1.1829366116277767e-8,-6.758971746004418e-4,-2.1465214616865e-7,1.189177429067364e-8,-6.75854349008327e-4,-7.229850977163453e-8,1.1940006997847552e-8,-6.758560464209218e-4,4.947983413017979e-9,1.1966210837941946e-8,-6.75876029123182e-4,2.7488136745964224e-9,1.196554475242547e-8,-6.758837935815457e-4,-8.161918553295126e-8,1.1937085753012027e-8,-6.758487615666738e-4,-2.3790708629766936e-7,1.1884286585775744e-8,-6.757450114730958e-4,-4.432901815565406e-7,1.1814847546413683e-8,-6.75555981832124e-4,-6.647221873892998e-7,1.1739927591423942e-8,-6.752785440219556e-4,-8.632714013106472e-7,1.1672680443195546e-8,-6.749257989924772e-4,-1.0003070529774613e-6,1.1626159710092367e-8,-6.745277736728225e-4,-1.04533785405786e-6,1.1610666373841045e-8,-6.74128768082691e-4,-9.849061499935828e-7,1.1630749295767326e-8,-6.737798662443241e-4,-8.306924641557072e-7,1.1682486866486084e-8,-6.735259935027122e-4,-6.231378273326227e-7,1.1752281613645974e-8,-6.733897881249691e-4,-4.257941722485988e-7,1.1818755484053001e-8,-6.733589931298577e-4,-3.0779861157673254e-7,1.185861347121806e-8,-6.733862647382449e-4,-3.189045445843042e-7,1.1855019353474524e-8,-6.734052719418553e-4,-4.6933352922082787e-7,1.1804407956455615e-8,-6.73356095178138e-4,-7.26669545411652e-7,1.1717608951207223e-8,-6.732058920007578e-4,-1.03135768079192e-6,1.1614681309859787e-8,-6.729549688437168e-4,-1.3203085634674708e-6,1.1516948301661333e-8,-6.726292231984343e-4,-1.5456410863813466e-6,1.1440629950089799e-8,-6.722669138054278e-4,-1.6825813512472906e-6,1.1394139323916218e-8,-6.719069745690607e-4,-1.728292691642922e-6,1.1378462534167964e-8,-6.715817867987357e-4,-1.6963310651301452e-6,1.1389032635968985e-8,-6.713140269531039e-4,-1.6104898771342205e-6,1.1417818254359392e-8,-6.711159576172181e-4,-1.4997911391117643e-6,1.1455027849828653e-8,-6.7098967808978e-4,-1.3947627025395655e-6,1.1490377166722129e-8,-6.709276170943395e-4,-1.3244157649111584e-6,1.1514110299334853e-8,-6.709132260466664e-4,-1.3133527174552276e-6,1.1517964713543777e-8,-6.709221924822578e-4,-1.3787160274900425e-6,1.1496180968261428e-8,-6.709246793383498e-4,-1.5271024239717297e-6,1.144652479963841e-8,-6.708890101922466e-4,-1.7521057789037506e-6,1.1371108056069637e-8,-6.707867329827515e-4,-2.03349427394575e-6,1.1276673671676083e-8,-6.705983390374779e-4,-2.3389296906621046e-6,1.1174033427878806e-8,-6.703183942720542e-4,-2.6286525837106187e-6,1.1076507144233978e-8,-6.699586275639561e-4,-2.862764821608109e-6,1.0997482902064068e-8,-6.695477636789244e-4,-3.009877260332382e-6,1.0947514998244096e-8,-6.691275106414471e-4,-3.0553669347500317e-6,1.093155672567259e-8,-6.687448110835039e-4,-3.0073333148598256e-6,1.0946969098039167e-8,-6.684411914721439e-4,-2.8982694801256994e-6,1.09829603567278e-8,-6.682410506419115e-4,-2.7805932569171573e-6,1.1022061743662119e-8,-6.681420923177971e-4,-2.7151112480580224e-6,1.1043947687668447e-8,-6.681122430425281e-4,-2.7538322953627776e-6,1.103115103055556e-8,-6.680967532338296e-4,-2.922229780866871e-6,1.0975005824736362e-8,-6.680351768836946e-4,-3.208938989025025e-6,1.0879155445024393e-8,-6.678818198079746e-4,-3.569206800689314e-6,1.07584697087957e-8,-6.676199799142348e-4,-3.941264216912157e-6,1.0633592515886972e-8,-6.672637124200508e-4,-4.26723863883779e-6,1.0523919613312888e-8,-6.668484745365341e-4,-4.508722102625259e-6,1.0442353880863865e-8,-6.664173881818245e-4,-4.652194081672177e-6,1.0393476953270497e-8,-6.660096559372878e-4,-4.705856726945458e-6,1.0374609216835914e-8,-6.6565400917304e-4,-4.692450116383464e-6,1.0378215067070535e-8,-6.65366691378365e-4,-4.641992506869934e-6,1.0394325668100645e-8,-6.651520724436302e-4,-4.586289293999795e-6,1.0412367136578511e-8,-6.650041770194664e-4,-4.555288303349263e-6,1.0422370733593156e-8,-6.649082145975189e-4,-4.574557922642622e-6,1.0415807035090087e-8,-6.648419516531094e-4,-4.663098319825658e-6,1.0386306849815094e-8,-6.647772977923628e-4,-4.830967209773467e-6,1.0330446811403125e-8,-6.64682793482468e-4,-5.0767082913095886e-6,1.0248610310513204e-8,-6.645276535009935e-4,-5.385272368662441e-6,1.014569716509483e-8,-6.642874935506787e-4,-5.727739295789978e-6,1.0031241672519338e-8,-6.639508926581502e-4,-6.064303841982294e-6,9.918438764338643e-9,-6.635248175263377e-4,-6.351327713612035e-6,9.821803180388749e-9,-6.630363208422775e-4,-6.551644593751551e-6,9.753736842483382e-9,-6.625286011154107e-4,-6.6453412099685115e-6,9.720943269391243e-9,-6.620515220562129e-4,-6.637210765563028e-6,9.721958663164957e-9,-6.616490030515382e-4,-6.557815458928014e-6,9.746799934408593e-9,-6.613470434299081e-4,-6.457206611119339e-6,9.779019488102298e-9,-6.611460182660693e-4,-6.3927400851426745e-6,9.799687434697574e-9,-6.610196289517972e-4,-6.414181155194645e-6,9.79227361540468e-9,-6.609211623926225e-4,-6.550090663171576e-6,9.747151909141079e-9,-6.607958578615187e-4,-6.799453044112043e-6,9.664428684028409e-9,-6.605961968829965e-4,-7.131600161094896e-6,9.554052462247139e-9,-6.602952658559864e-4,-7.495192731900008e-6,9.432897717263338e-9,-6.59893337291204e-4,-7.833471097170003e-6,9.319721647992294e-9,-6.594154199307799e-4,-8.10003951822256e-6,9.229912967892944e-9,-6.589015974741606e-4,-8.26940720505979e-6,9.171982193286219e-9,-6.583948475325114e-4,-8.339570999084169e-6,9.146702941363071e-9,-6.579310057521284e-4,-8.32782653290947e-6,9.1484953460235e-9,-6.575332522116057e-4,-8.26326332931551e-6,9.167892353553748e-9,-6.572109057110091e-4,-8.179301464685762e-6,9.193979644439203e-9,-6.569608894446945e-4,-8.108097437895046e-6,9.21621770862212e-9,-6.56770170806039e-4,-8.077049399664383e-6,9.225578151807406e-9,-6.566181353193237e-4,-8.106736580969876e-6,9.2152178288862e-9,-6.56478602741209e-4,-8.209430423295186e-6,9.18097422655523e-9,-6.563217982510564e-4,-8.387533414582957e-6,9.121895607077113e-9,-6.561169927829369e-4,-8.631800308226666e-6,9.04085550962115e-9,-6.558365936151278e-4,-8.91992576094595e-6,8.945052981019506e-9,-6.55462020900297e-4,-9.216878126763627e-6,8.845932484547084e-9,-6.549905970801155e-4,-9.47883318251498e-6,8.757896962005024e-9,-6.544410174747893e-4,-9.66200422791736e-6,8.695387849400742e-9,-6.538536905887626e-4,-9.73541782277881e-6,8.668667779698704e-9,-6.532830284212719e-4,-9.693338183562016e-6,8.679746644976681e-9,-6.527824423394355e-4,-9.561069012846983e-6,8.72050444633388e-9,-6.523874598641779e-4,-9.389804754378765e-6,8.77438033627454e-9,-6.521043283306284e-4,-9.24162630277522e-6,8.821227300503736e-9,-6.519088365606864e-4,-9.170835057503315e-6,8.843328210896267e-9,-6.517549256998489e-4,-9.20896440435165e-6,8.83024338053133e-9,-6.515887679402991e-4,-9.35797527614904e-6,8.781065819974303e-9,-6.513631828401716e-4,-9.592194273994584e-6,8.703882366870197e-9,-6.510485784423071e-4,-9.866901365965093e-6,8.613066195460134e-9,-6.506383852720353e-4,-1.0130449155765347e-5,8.525370284901691e-9,-6.501484713535216e-4,-1.0336665778532513e-5,8.455876704000505e-9,-6.496113485493177e-4,-1.0454609877589606e-5,8.414782975243667e-9,-6.490671674646127e-4,-1.0473577830441985e-5,8.405737418544261e-9,-6.485542315122563e-4,-1.0402716045749107e-5,8.42594207718587e-9,-6.48101570190052e-4,-1.0266290315339773e-5,8.467673384414735e-9,-6.477249772667448e-4,-1.0096801161149698e-5,8.520499798179897e-9,-6.474264817325805e-4,-9.928189624151298e-6,8.573469231980985e-9,-6.471962142913522e-4,-9.790591753984345e-6,8.616798727509629e-9,-6.470153398393853e-4,-9.707072173579713e-6,8.642931881769316e-9,-6.4685902944632e-4,-9.691946903899617e-6,8.647090904414083e-9,-6.466990567131604e-4,-9.749935634588221e-6,8.627569008879582e-9,-6.465061945891082e-4,-9.875497327061216e-6,8.585973740369635e-9,-6.462529770962636e-4,-1.005213254042066e-5,8.527489357020453e-9,-6.459175297868126e-4,-1.0252057697941712e-5,8.46101921967877e-9,-6.454888874271263e-4,-1.0437434177263124e-5,8.398808897746156e-9,-6.449732096697071e-4,-1.0564966265109888e-5,8.354946495019238e-9,-6.4439852831923e-4,-1.0595381812212404e-5,8.34225639995346e-9,-6.438138844513587e-4,-1.0507072144502154e-5,8.367854756241516e-9,-6.432790367365826e-4,-1.0308974899831868e-5,8.428993979308454e-9,-6.428454586197086e-4,-1.0044472629606271e-5,8.511840347096126e-9,-6.425364546618369e-4,-9.780404242463435e-6,8.595019151624936e-9,-6.423374992473061e-4,-9.584105091257316e-6,8.656940621566346e-9,-6.422025862017104e-4,-9.499924509528801e-6,8.683268961814048e-9,-6.420723318815535e-4,-9.536788226021915e-6,8.6709032555823e-9,-6.418937058551346e-4,-9.670339340684684e-6,8.62736165406817e-9,-6.416333150807353e-4,-9.854985606826542e-6,8.567021549391805e-9,-6.412819489618678e-4,-1.0038675384978085e-5,8.506456394204669e-9,-6.40852233208935e-4,-1.0175358821881159e-5,8.460459308358457e-9,-6.403723843214741e-4,-1.0233119886925515e-5,8.439407583253215e-9,-6.398785177155639e-4,-1.0197922583846564e-5,8.44800812947473e-9,-6.394070755339369e-4,-1.0073651943128085e-5,8.485229457435074e-9,-6.389883923031362e-4,-9.879211991447938e-6,8.545190825663756e-9,-6.386421940044092e-4,-9.643564938301254e-6,8.61872891621823e-9,-6.383754932638375e-4,-9.399866438278023e-6,8.695270282083074e-9,-6.381828126059341e-4,-9.179868626602678e-6,8.764629424150486e-9,-6.380482197594612e-4,-9.009455497870036e-6,8.818449463555083e-9,-6.379484020972791e-4,-8.905757191846968e-6,8.851137444227476e-9,-6.378559844764216e-4,-8.875794396678722e-6,8.860308373744816e-9,-6.37742611576723e-4,-8.916182840260416e-6,8.846890961194638e-9,-6.375817826161573e-4,-9.013389503892508e-6,8.815063136955268e-9,-6.373517365413405e-4,-9.144324590548281e-6,8.772088767448038e-9,-6.37038822435467e-4,-9.277480646007872e-6,8.727983133697308e-9,-6.366416476230471e-4,-9.375433709051482e-6,8.69473010267958e-9,-6.361755073060954e-4,-9.400076070259292e-6,8.68460137525384e-9,-6.356751215483993e-4,-9.321725715954837e-6,8.70721463674457e-9,-6.351921226563311e-4,-9.131431137281154e-6,8.765577089452952e-9,-6.34783668220924e-4,-8.851983055038034e-6,8.852573074499977e-9,-6.34492590110691e-4,-8.53933103808297e-6,8.950528563696693e-9,-6.343273922649219e-4,-8.26772377613986e-6,9.035920785086607e-9,-6.342551582389573e-4,-8.102013804904856e-6,9.088118007656425e-9,-6.342142013915741e-4,-8.071933386762328e-6,9.097504097485443e-9,-6.341394360266019e-4,-8.163387841999844e-6,9.06827899549311e-9,-6.339853162802021e-4,-8.329403778276332e-6,9.01508325066568e-9,-6.337359214736137e-4,-8.510810762680521e-6,8.956528860220945e-9,-6.334023030696212e-4,-8.65473815155575e-6,8.909374863487501e-9,-6.330132471509208e-4,-8.725202991217194e-6,8.885158614041552e-9,-6.326051717095914e-4,-8.706169178413972e-6,8.889176992237429e-9,-6.32214019748295e-4,-8.599843727994052e-6,8.920959050065301e-9,-6.318697327111989e-4,-8.422780448879686e-6,8.975440229886825e-9,-6.315928418750007e-4,-8.20125617049522e-6,9.044392176943476e-9,-6.313926873838825e-4,-7.966459175451952e-6,9.117945199759327e-9,-6.31267082506243e-4,-7.749777386235528e-6,9.186104282521891e-9,-6.312033160743475e-4,-7.5785372180136775e-6,9.240130028371382e-9,-6.311803126735913e-4,-7.472534294452365e-6,9.273661681811642e-9,-6.311716770969148e-4,-7.441681249593242e-6,9.283469414099118e-9,-6.311491861629334e-4,-7.484987837433047e-6,9.269772409499044e-9,-6.310862639818491e-4,-7.590780571477355e-6,9.236162458649285e-9,-6.309612058273856e-4,-7.737892241529536e-6,9.189230845951367e-9,-6.307601275839634e-4,-7.897660405035442e-6,9.137956611667645e-9,-6.304796987183105e-4,-8.036756534142556e-6,9.09284140190737e-9,-6.301296693209371e-4,-8.121168651637492e-6,9.064674114885852e-9,-6.297347052073675e-4,-8.122014010732786e-6,9.062695008476826e-9,-6.293340333682221e-4,-8.02357893613418e-6,9.092032490280441e-9,-6.289764922907992e-4,-7.832498886235678e-6,9.150771158405365e-9,-6.287088356458074e-4,-7.584313389584958e-6,9.227855564074418e-9,-6.285582300395714e-4,-7.340955663643736e-6,9.303857526237659e-9,-6.285162181702288e-4,-7.173981894358338e-6,9.35622506385365e-9,-6.28535844534191e-4,-7.137050918742098e-6,9.367918818323381e-9,-6.285482266619833e-4,-7.242236086511384e-6,9.334891322630107e-9,-6.284908233474023e-4,-7.4556587282647425e-6,9.267547066221383e-9,-6.28330425274692e-4,-7.714648020679488e-6,9.185435045716488e-9,-6.28069302206002e-4,-7.95377724697567e-6,9.109102634548203e-9,-6.277362671666278e-4,-8.124785819023314e-6,9.053825972438715e-9,-6.273721375619873e-4,-8.204270724462586e-6,9.02715680817319e-9,-6.27017398081553e-4,-8.191793049541557e-6,9.029461806338658e-9,-6.267047725449272e-4,-8.103665827061228e-6,9.055810702686439e-9,-6.26456043916988e-4,-7.966249400547607e-6,9.098033223137005e-9,-6.26281416479543e-4,-7.810389877515416e-6,9.146451274581206e-9,-6.261800463441795e-4,-7.667092566462788e-6,9.191260130576387e-9,-6.261411718711373e-4,-7.564004290537873e-6,9.223675064183579e-9,-6.261457836463466e-4,-7.522438367703082e-6,9.23690378724907e-9,-6.261689058554466e-4,-7.554911651594159e-6,9.226935824039986e-9,-6.26182575765119e-4,-7.663394769762143e-6,9.193084339014298e-9,-6.261594321595429e-4,-7.83867655737204e-6,9.138166390547462e-9,-6.26076519398364e-4,-8.061135092227624e-6,9.068247870454783e-9,-6.259188201018052e-4,-8.302926480673475e-6,8.991964522431026e-9,-6.256821123187454e-4,-8.531474630101965e-6,8.919455933728389e-9,-6.253747887567023e-4,-8.714062415411706e-6,8.860964423618094e-9,-6.250183114255093e-4,-8.823240323023451e-6,8.825167866103795e-9,-6.246458882436894e-4,-8.842823215536685e-6,8.817300503612222e-9,-6.242985755887415e-4,-8.774026346559433e-6,8.837199099376945e-9,-6.240177934968095e-4,-8.640273119230142e-6,8.87774343727035e-9,-6.238340168367981e-4,-8.487734929015043e-6,8.924628410892147e-9,-6.237537835039231e-4,-8.37786762163323e-6,8.958649435262117e-9,-6.237508622334895e-4,-8.370050553809897e-6,8.961109428361436e-9,-6.237694285501078e-4,-8.498608243715725e-6,8.921029687418638e-9,-6.237425116459058e-4,-8.75592709653261e-6,8.840509552635665e-9,-6.236182223750581e-4,-9.0935440897417e-6,8.734482255018053e-9,-6.233789176946422e-4,-9.44210315649724e-6,8.62453087546554e-9,-6.230431618178639e-4,-9.738006393072087e-6,8.530559779025655e-9,-6.226528415322329e-4,-9.942072412796151e-6,8.464944949980187e-9,-6.222558156538971e-4,-1.0044216892862036e-5,8.431044644216811e-9,-6.218928123420268e-4,-1.0057759649626142e-5,8.424931676993069e-9,-6.215911924046659e-4,-1.0010051523072495e-5,8.438260126232764e-9,-6.213639804945358e-4,-9.934048776771606e-6,8.460847692598394e-9,-6.212115296909202e-4,-9.862436775050359e-6,8.482499035264433e-9,-6.211238864357817e-4,-9.823973462843352e-6,8.494171700339035e-9,-6.210830596535341e-4,-9.841115150435778e-6,8.488757155704299e-9,-6.210651942122257e-4,-9.928215073960674e-6,8.461672312188594e-9,-6.210429443543682e-4,-1.0090001829574346e-5,8.411340895070526e-9,-6.209883936927952e-4,-1.032045635967511e-5,8.339532086435201e-9,-6.208766895726924e-4,-1.0602611237518307e-5,8.251410557946112e-9,-6.206901011511374e-4,-1.0909904384581257e-5,8.155117882712867e-9,-6.204217801816662e-4,-1.1209428967393452e-5,8.060785794006027e-9,-6.200783346355796e-4,-1.1467000570356854e-5,7.978999665257574e-9,-6.196803527606607e-4,-1.1653487857353938e-5,7.918867885019981e-9,-6.192602675084233e-4,-1.1751341629004252e-5,7.886009589301413e-9,-6.18857430993645e-4,-1.1760013081941588e-5,7.880853644284182e-9,-6.185107199373036e-4,-1.1698990162283051e-5,7.897639687734814e-9,-6.182494033759342e-4,-1.1607106693188978e-5,7.924550386176266e-9,-6.180837782626559e-4,-1.1536704553317361e-5,7.945441153139379e-9,-6.17998354061986e-4,-1.1541930108901036e-5,7.943422534415343e-9,-6.179514865732182e-4,-1.1662608663681637e-5,7.905878369024749e-9,-6.178847530264709e-4,-1.1908666705688085e-5,7.829382187794986e-9,-6.177413716940561e-4,-1.225291771545529e-5,7.722050838337925e-9,-6.174866683392963e-4,-1.2638281908291842e-5,7.601388082277714e-9,-6.171202061499132e-4,-1.2997807711744528e-5,7.488094639614473e-9,-6.166733164451345e-4,-1.3277552122048224e-5,7.398956214429256e-9,-6.161948260617495e-4,-1.3451111439177265e-5,7.342324255674225e-9,-6.157338992816079e-4,-1.3521276834735159e-5,7.317585667968248e-9,-6.153277910312762e-4,-1.351221220619276e-5,7.3175400954822244e-9,-6.149969832299286e-4,-1.345864223227892e-5,7.331678474457581e-9,-6.147459001310118e-4,-1.3396792379450818e-5,7.3489284361196675e-9,-6.14566195981989e-4,-1.335865891362545e-5,7.3594093806847335e-9,-6.144404163975216e-4,-1.3369061432935648e-5,7.3553652588823905e-9,-6.143451013492217e-4,-1.3444276092296466e-5,7.331624223806665e-9,-6.142533201726146e-4,-1.3591271145411236e-5,7.285864502738724e-9,-6.141370824533147e-4,-1.3807054893883965e-5,7.2188286363125555e-9,-6.139701752177742e-4,-1.4078197634895255e-5,7.134475176715785e-9,-6.137317622253945e-4,-1.4381127354302392e-5,7.03989660873347e-9,-6.13410548401449e-4,-1.4684067691371548e-5,6.944744457685035e-9,-6.130086364730966e-4,-1.4951295234998012e-5,6.8599511266353936e-9,-6.125436581487522e-4,-1.5149749237378634e-5,6.795727421966501e-9,-6.120476639627279e-4,-1.5256983677622905e-5,6.759136642679807e-9,-6.115619176413706e-4,-1.5268340231572266e-5,6.751886205597447e-9,-6.111281095430912e-4,-1.520077746265615e-5,6.769114447606619e-9,-6.107779587857513e-4,-1.5091461683002552e-5,6.799746818271109e-9,-6.10524015294988e-4,-1.4990666324170982e-5,6.828571027830531e-9,-6.103544553284269e-4,-1.4950126437351983e-5,6.839718154874809e-9,-6.10233932630094e-4,-1.5009403395997819e-5,6.820816675408024e-9,-6.101112797303565e-4,-1.5183860384006196e-5,6.7667449207401965e-9,-6.099330136988942e-4,-1.5458296216177136e-5,6.6817180549403645e-9,-6.096591780398321e-4,-1.5789545255279567e-5,6.578625916310926e-9,-6.092759401267423e-4,-1.611861496564348e-5,6.475384794437283e-9,-6.087995316766636e-4,-1.638857118742033e-5,6.389456320634693e-9,-6.082696917744599e-4,-1.656102986792536e-5,6.332762451172584e-9,-6.07735931357823e-4,-1.6624724248411486e-5,6.309028251969762e-9,-6.07243028636269e-4,-1.659408062376702e-5,6.314176973263146e-9,-6.068212130456064e-4,-1.6500688633924005e-5,6.3388763395423195e-9,-6.064828882107512e-4,-1.6382732655089433e-5,6.3716957047222936e-9,-6.062244250029457e-4,-1.6276375396916556e-5,6.401688363734559e-9,-6.060303124501623e-4,-1.6210566121514825e-5,6.41997117246288e-9,-6.058775295989655e-4,-1.6204774019256874e-5,6.420448907864246e-9,-6.057391575612956e-4,-1.6268443228459086e-5,6.400024095330046e-9,-6.055871563899351e-4,-1.640110876257458e-5,6.358597590462493e-9,-6.053947651586242e-4,-1.6592563064539658e-5,6.299040120511544e-9,-6.051391799853258e-4,-1.6823062293831563e-5,6.2271479239230684e-9,-6.04804958969757e-4,-1.7064185629920318e-5,6.15140407656365e-9,-6.043880305658054e-4,-1.7281339145854306e-5,6.082244629251485e-9,-6.038993664978827e-4,-1.743882255386278e-5,6.03054138334135e-9,-6.033664982363028e-4,-1.7507647128342022e-5,6.005236775662678e-9,-6.028306776843586e-4,-1.747471621344875e-5,6.0105545030052955e-9,-6.02338498179153e-4,-1.7350074414647643e-5,6.043785475000533e-9,-6.019293636463869e-4,-1.7168208077473955e-5,6.094852354472843e-9,-6.016229799273229e-4,-1.6981102965108023e-5,6.148328418570691e-9,-6.014120043088848e-4,-1.6844415703121967e-5,6.1875079574704055e-9,-6.012631542790681e-4,-1.6801491798937394e-5,6.199152357907398e-9,-6.011264926259588e-4,-1.687094638850435e-5,6.177250027198649e-9,-6.009494858060641e-4,-1.7041783355707502e-5,6.124605564008008e-9,-6.006912495843881e-4,-1.7277030403387907e-5,6.051910031149934e-9,-6.003329547922971e-4,-1.7524265175610315e-5,5.974701125327572e-9,-5.998817609412311e-4,-1.7729749635034893e-5,5.909152133979997e-9,-5.993674834698096e-4,-1.7852060415235455e-5,5.8679359897686786e-9,-5.98833377167506e-4,-1.7871308208750187e-5,5.857377281089162e-9,-5.983242961249349e-4,-1.7791603804934904e-5,5.876628602108236e-9,-5.978761089750183e-4,-1.763692721889734e-5,5.9188348328191164e-9,-5.97509246371083e-4,-1.744281060909608e-5,5.973566370425565e-9,-5.972272340443155e-4,-1.724717783696112e-5,6.029530158965291e-9,-5.970191412732754e-4,-1.708303930127975e-5,6.076760853223087e-9,-5.968639601907031e-4,-1.6974182393121108e-5,6.107949062772968e-9,-5.967351618909186e-4,-1.6933562355692315e-5,6.1189757620988596e-9,-5.966044914543551e-4,-1.6963408114122988e-5,6.108924653343465e-9,-5.964448552706594e-4,-1.7056054741231575e-5,6.079858424794432e-9,-5.962326779452772e-4,-1.719488339402509e-5,6.036551327657856e-9,-5.959503269411983e-4,-1.7355296242159556e-5,5.9862122504836265e-9,-5.955890709894159e-4,-1.7506243438176608e-5,5.9380510048463094e-9,-5.951525234145372e-4,-1.7613258416163484e-5,5.902393637339857e-9,-5.946596553230791e-4,-1.764400034962936e-5,5.889033529766786e-9,-5.941454005656148e-4,-1.757658081028564e-5,5.9047300999132285e-9,-5.936562505153676e-4,-1.740909145309199e-5,5.9503386560754e-9,-5.932393300043767e-4,-1.7166185049999746e-5,6.018820818675055e-9,-5.929270253618056e-4,-1.6897363809678338e-5,6.095715953083003e-9,-5.927235829331455e-4,-1.6664334583585255e-5,6.162832492505709e-9,-5.926012168281408e-4,-1.6521086061127168e-5,6.204080876826821e-9,-5.925088318791681e-4,-1.6495650783895652e-5,6.2108462578212325e-9,-5.923893296595289e-4,-1.6581983910685432e-5,6.18445634623603e-9,-5.921973240230338e-4,-1.6744373968298434e-5,6.135018198325406e-9,-5.919105305805832e-4,-1.6930486544110382e-5,6.077709827522491e-9,-5.915325837551485e-4,-1.708674963487434e-5,6.028320742756395e-9,-5.910887401414671e-4,-1.7171114333858196e-5,5.999481940305171e-9,-5.906173977802621e-4,-1.7160751663905477e-5,5.998318193545036e-9,-5.901602907269286e-4,-1.7054266849847147e-5,6.025679671747184e-9,-5.897536026274595e-4,-1.6869186278252847e-5,6.076768658723353e-9,-5.894215706944987e-4,-1.6636088071657184e-5,6.142787676934763e-9,-5.891734417193177e-4,-1.639112845867565e-5,6.21311247089221e-9,-5.890037891503861e-4,-1.616881901687457e-5,6.277444531418832e-9,-5.888953870874903e-4,-1.599649526801642e-5,6.32750261058349e-9,-5.888234156540204e-4,-1.5891120266408232e-5,6.358035497480615e-9,-5.887598278097893e-4,-1.585830828911002e-5,6.36716114540014e-9,-5.886770911880141e-4,-1.5892951435849457e-5,6.356201350362242e-9,-5.88551067772663e-4,-1.598065881617845e-5,6.329251478975357e-9,-5.883632730491481e-4,-1.609944079656462e-5,6.292675486505938e-9,-5.881029486085081e-4,-1.622153632414498e-5,6.254574948934901e-9,-5.877692932525501e-4,-1.6315735016464423e-5,6.224131558643309e-9,-5.873738337045345e-4,-1.6350916709415508e-5,6.2105932820424296e-9,-5.869421485315761e-4,-1.630165097021894e-5,6.221632150191717e-9,-5.865131121598357e-4,-1.6156063475258574e-5,6.261002414793579e-9,-5.861331744440621e-4,-1.592434760802166e-5,6.325989749491587e-9,-5.858441940187316e-4,-1.5643598634390996e-5,6.405942312898085e-9,-5.856671951075539e-4,-1.5373106219251778e-5,6.483607719282582e-9,-5.855897763285556e-4,-1.517729276675414e-5,6.540086767802591e-9,-5.855664407766135e-4,-1.5101743305100796e-5,6.561819413722951e-9,-5.855345304499817e-4,-1.5154956209859986e-5,6.545946710766161e-9,-5.854378007236991e-4,-1.5306366023333386e-5,6.500984799091855e-9,-5.852448952227367e-4,-1.550045098503084e-5,6.442830961710452e-9,-5.849551516575722e-4,-1.567734639813534e-5,6.388848412759949e-9,-5.845930082893017e-4,-1.5789777542943528e-5,6.352965558410412e-9,-5.841969678310368e-4,-1.5811729052473348e-5,6.343113417189745e-9,-5.838084552194186e-4,-1.5739511632880423e-5,6.360814546463471e-9,-5.834633032295308e-4,-1.5588003820527e-5,6.402145833924053e-9,-5.831864760835484e-4,-1.538472081382847e-5,6.4593502606737386e-9,-5.829896181558738e-4,-1.5163375096637597e-5,6.5226561160815544e-9,-5.828708999533577e-4,-1.4957769589611858e-5,6.582074977801076e-9,-5.828167555766546e-4,-1.479662672105976e-5,6.628984531476504e-9,-5.828049993600993e-4,-1.46998740108272e-5,6.657304486326205e-9,-5.828086784632086e-4,-1.4676619073704028e-5,6.664156600488167e-9,-5.828000486403008e-4,-1.472477456925716e-5,6.649997471487258e-9,-5.827541399829672e-4,-1.4832100153552331e-5,6.618295601842242e-9,-5.826515746817173e-4,-1.4978198357449995e-5,6.574915976578972e-9,-5.824806499688132e-4,-1.5136975222470618e-5,6.5273858129103555e-9,-0.00058223891266244855,-1.5279382997478107e-5,6.484113573877451e-9,-5.819343932522649e-4,-1.537659130322262e-5,6.453510098108357e-9,-5.815864337643335e-4,-1.540395190071223e-5,6.442875322162274e-9,-5.812255138914551e-4,-1.5346207013270155e-5,6.456887019322757e-9,-5.808906783087563e-4,-1.5203879326331496e-5,6.495696015125998e-9,-5.806227398257667e-4,-1.4999252917115385e-5,6.553106536171523e-9,-5.804523980144355e-4,-1.4778150938693694E-05,6.6159779015583296e-9,-5.803857787226134e-4,-1.460244790593015e-5,6.666344613112382e-9,-5.803949019080188e-4,-1.453107430828226e-5,6.68691651811743e-9,-5.804222577193308e-4,-1.4595598468279076e-5,6.6681996557004115e-9,-5.804015691477434e-4,-1.4784365571006996e-5,6.613182223466211e-9,-5.802844416075218e-4,-1.504659664064087e-5,6.536251455252701e-9,-5.800572407115345e-4,-1.5314205201811868e-5,6.456956105272316e-9,-5.79740462121484e-4,-1.5527257460748158e-5,6.392682319350163e-9,-5.793754455308698e-4,-1.564997575685766e-5,6.354031421288331e-9,-5.79008526869674e-4,-1.5673984575231003E-05,6.3438332685434564e-9,-5.786793595545836e-4,-1.561305703577987e-5,6.358555023821292e-9,-5.78414926698478e-4,-1.5494822966848187e-5,6.390561211013941e-9,-5.782279782895778e-4,-1.535291284406682e-5,6.430282529202295e-9,-5.781179986625985e-4,-1.5220866757312826e-5,6.467953037038186e-9,-5.780733038593612e-4,-1.5127728821522725e-5,6.494942808591026e-9,-5.780737214613339e-4,-1.5094878202343984e-5,6.5047765753731806e-9,-5.780937304323509e-4,-1.5133945325895573e-5,6.493829724860568e-9,-5.781059012122124e-4,-1.5245845768728994e-5,6.461654192249107e-9,-5.780844231366714e-4,-1.5420967008494582E-05,6.410916404303534e-9,-5.780084375089962e-4,-1.5640566187065733e-5,6.346952753693187e-9,-5.778647777628711e-4,-1.5879285361295647e-5,6.277008199105833e-9,-5.776498175490725e-4,-1.6108436934896513e-5,6.209288793870668e-9,-5.773703656839252e-4,-1.6299721111280603e-5,6.151931069035016e-9,-5.770436111533959e-4,-1.6429208290678547e-5,6.111913238799296e-9,-5.766960225533119e-4,-1.6481506020845262e-5,6.093889659946264e-9,-5.763608734161528e-4,-1.6454038016908552e-5,6.098936037071565e-9,-5.760736744361726e-4,-1.6361021724264736e-5,6.123317511020036e-9,-5.758647102549619e-4,-1.6235696451862072e-5,6.157725998483951e-9,-5.757488547335339e-4,-1.612803540234014e-5,6.1878352067051535e-9,-5.757153315080947e-4,-1.609480237938911e-5,6.197125012537102e-9,-5.757234435926061e-4,-1.6181340271018654e-5,6.17217305833007e-9,-5.757111211388329e-4,-1.6400971995423106e-5,6.108703432860775e-9,-5.756170143529824e-4,-1.6724228696811727e-5,6.014819069588441e-9,-5.754058752564376e-4,-1.7087730422599016e-5,5.908527015219574e-9,-5.750819117894468e-4,-1.7419566737748216e-5,5.810457691770534e-9,-5.746829127406637e-4,-1.7665934924859706e-5,5.736209930949652e-9,-5.742617293776332e-4,-1.7804887133825812e-5,5.692403621165638e-9,-5.738676244788915e-4,-1.7844643668928444e-5,5.677123312045796e-9,-5.735352118200017e-4,-1.781324586487339e-5,5.682774688163753e-9,-5.732813705044003e-4,-1.774712544477777e-5,5.699224028512855e-9,-5.731070706253558e-4,-1.7682465513048927e-5,5.716183635261324e-9,-5.730010810481334e-4,-1.7650014543434743e-5,5.7246996299768535e-9,-5.729437243720952e-4,-1.7672436560521165e-5,5.717992329661441e-9,-5.729101327422091e-4,-1.77629912703616e-5,5.691943387538161e-9,-5.728732254490138e-4,-1.7924881686606425e-5,5.645364913125561e-9,-5.728066872098459e-4,-1.8151183111504288e-5,5.580046983978404e-9,-5.726880446715707e-4,-1.8425518479711568e-5,5.500544376149344e-9,-5.725017360320156e-4,-1.8723776519021976e-5,5.4136497171616706e-9,-5.722417478110209e-4,-1.901709758465021e-5,5.327525281669176e-9,-5.719132058612187e-4,-1.9275973453983113e-5,5.250556794951275e-9,-5.715324599224961e-4,-1.9474966424702655e-5,5.190061549896955e-9,-5.711254487065863e-4,-1.9597425970417595e-5,5.150993130292952e-9,-5.707243215314012e-4,-1.963951786184574e-5,5.134796911166756e-9,-5.703624645452386e-4,-1.961289496480425e-5,5.138582384870229e-9,-5.700681701023597e-4,-1.9545349551733103e-5,5.154808129149603e-9,-5.698573617980196e-4,-1.947850234148492e-5,5.171796776237571e-9,-5.697265168248463e-4,-1.946126166119291e-5,5.175504776714801e-9,-5.696483046445741e-4,-1.9538307489946467e-5,5.152814866181088e-9,-5.695737447050487e-4,-1.9735023712205888e-5,5.095954657144991e-9,-5.694440581573207e-4,-2.0044122435153433e-5,5.006492424902162e-9,-5.692107976121244e-4,-2.0422259733411498e-5,4.896447185420986e-9,-5.688556702159739e-4,-2.080239735784011e-5,4.784807248298537e-9,-5.683984430252771e-4,-2.1118146298752406e-5,4.69055903235853e-9,-5.678877874524411e-4,-2.1327200844530532e-5,4.6259837892894646e-9,-5.673813072802742e-4,-2.1421699487486857e-5,4.593705379214873e-9,-5.669266461901139e-4,-2.1423333992840117e-5,4.588040913127525e-9,-5.665515251973581e-4,-2.1370168449335505e-5,4.598631280140418e-9,-5.66262954244887e-4,-2.1303510202976556e-5,4.614029495947506e-9,-5.660516519242294e-4,-2.1259150169743164e-5,4.624106881604416e-9,-5.658977760906469e-4,-2.1263246516499423e-5,4.621241923637268e-9,-5.657758344743934e-4,-2.1331262909287216e-5,4.600715978969188e-9,-5.656582879656547e-4,-2.146824690958318e-5,4.560744399958647e-9,-5.655182799852074e-4,-2.166944979816653e-5,4.502372881234427e-9,-5.653320939464026e-4,-2.19210611198664e-5,4.429288721729575e-9,-5.650817267772786e-4,-2.2201302733604196e-5,4.347494108741701e-9,-5.647576281566446e-4,-2.248238891148829e-5,4.2647329227178e-9,-5.64361175875774e-4,-2.273385814627313e-5,4.1895539317782425e-9,-5.639060211063388e-4,-2.2927360460003696e-5,4.129994037758887e-9,-5.634173669126164e-4,-2.3042324624474837e-5,4.092025805841426e-9,-5.629285951340259e-4,-2.3071330028784256e-5,4.078067292741761e-9,-5.624753358397186e-4,-2.3023652525244365e-5,4.085953126634584e-9,-5.620879235594856e-4,-2.2925599059856908e-5,4.1087412604200885e-9,-5.617838311213657e-4,-2.2816948292584702e-5,4.13556726191145e-9,-5.615618506350042e-4,-2.274366245931516e-5,4.1535543827756625e-9,-5.613996862607292e-4,-2.2747751693369897e-5,4.150602400752755e-9,-5.61256426475516e-4,-2.2855979724977274e-5,4.1186293748158945e-9,-5.61080812039059e-4,-2.307016575944345e-5,4.056477812301431e-9,-5.608247544560862e-4,-2.3362823347901296e-5,3.971353014138016e-9,-5.6045888275338e-4,-2.3681771753724775e-5,3.877666551810311e-9,-5.599840255643514e-4,-2.3964648029816697e-5,3.7929726560466655e-9,-5.594323224548366e-4,-2.4158896301923775e-5,3.732284697554104e-9,-5.588562140180068e-4,-2.4238382403495358e-5,3.7033386543166194e-9,-5.583104935056323e-4,-2.4208922097151482e-5,3.7049913841555217e-9,-5.578362118896362e-4,-2.4101634993633252e-5,3.729013562684922e-9,-5.574526700823866e-4,-2.395959922159319e-5,3.763717738012945e-9,-5.571580150477938e-4,-2.3824918225424018e-5,3.7974724057465164e-9,-5.56934945270612e-4,-2.3730431642789787e-5,3.820986693463586e-9,-5.567575402096818e-4,-2.369650431855389e-5,3.828264474037562e-9,-5.565968561839238e-4,-2.3731175634325677e-5,3.81667238499676e-9,-5.564247258473144e-4,-2.383170766272784e-5,3.786608603817477e-9,-5.562162343773809e-4,-2.3986308687498875e-5,3.741076017959136e-9,-5.559516320965893e-4,-2.41756410521933e-5,3.6852669334650524e-9,-5.556182989939095e-4,-2.4374329729557413e-5,3.626126257835752e-9,-5.552129829469255e-4,-2.455308708972398e-5,3.5717509128408136e-9,-5.547439478003086e-4,-2.4682169708976556e-5,3.5304410056635687e-9,-5.542320441001034e-4,-2.4736519034990855e-5,3.509299202176376e-9,-5.537093394875636e-4,-2.470209240070845e-5,3.5124945121858324e-9,-5.532141884717492e-4,-2.4581739735308707e-5,3.539625413001244e-9,-5.527827987017785e-4,-2.4398065123244182e-5,3.584874043486559e-9,-5.524392207026548e-4,-2.419093064879187e-5,3.6375935558350362E-09,-5.521871673866484e-4,-2.400904254983496e-5,3.6845003460724823e-9,-5.52006996859421e-4,-2.3897600320895216e-5,3.7129769442225496e-9,-5.518594417411545e-4,-2.3885806156130697e-5,3.714505319352247e-9,-5.516952472542898e-4,-2.3978206075858976e-5,3.6871706513466653e-9,-5.514680023266997e-4,-2.415252676916681e-5,3.636467576060659e-9,-5.511466570996784e-4,-2.436472997812125e-5,3.5741160763841065e-9,-5.507243054631822e-4,-2.456016575596165e-5,3.5151030037156743e-9,-5.502204943898792e-4,-2.4688078368491355e-5,3.4736716022299434e-9,-5.49675845316952e-4,-2.4715297420699776e-5,3.4594450841273604e-9,-5.491403496431156e-4,-2.4634524609268043e-5,3.475010754579904e-9,-5.486594079579832e-4,-2.4464309834586896e-5,3.5158016687115214e-9,-5.482626949453814e-4,-2.424130364105868e-5,3.572121989232335e-9,-5.479593003710058e-4,-2.400859263852101e-5,3.6322781071167195e-9,-5.477393924139225e-4,-2.380483572567349e-5,3.685543859039702e-9,-5.475800136344878e-4,-2.365734300350956e-5,3.7241138416981567e-9,-5.47451900115605e-4,-2.3579686113701558e-5,3.743864278401933e-9,-5.473251545092862e-4,-2.3572576485177517e-5,3.744220422532077e-9,-5.471730460260657e-4,-2.3626248739021626e-5,3.727569108803425e-9,-5.469742478632765e-4,-2.3723043848052887e-5,3.6985616396725427e-9,-5.467142469598954e-4,-2.3839630731377964e-5,3.6634824609621807e-9,-5.463866264206015e-4,-2.3948973655604125e-5,3.6296880385067596e-9,-5.4599456793534e-4,-2.4022629138410048e-5,3.604980769764583e-9,-5.455523444943196e-4,-2.4034135649642785e-5,3.5967054365603564e-9,-5.450858818683846e-4,-2.396401744104895e-5,3.6104037986387385e-9,-5.446308564687652e-4,-2.380610222496027e-5,3.648086038965713e-9,-5.442267710418497e-4,-2.3573376044700058e-5,3.7065940327411654e-9,-5.43906780201333e-4,-2.3300037015731352e-5,3.776970362392915e-9,-5.436858585814063e-4,-2.303631065445945e-5,3.8457757017923984e-9,-5.43552613478327e-4,-2.28353475000358e-5,3.898554409891338e-9,-5.434699258623914e-4,-2.2736277504907688e-5,3.924381501274142e-9,-5.433855832143338e-4,-2.275078970747129e-5,3.919540539705527e-9,-5.43248646299094e-4,-2.285936214945721e-5,3.888688548443496e-9,-5.430245801652687e-4,-2.3018194797770242e-5,3.8431759853901846e-9,-5.427037893107168e-4,-2.3172944399802506e-5,3.7974973736510936e-9,-5.423020260258028e-4,-2.3273629234107787e-5,3.765329016282113e-9,-5.418542195221602e-4,-2.328631805513169e-5,3.756319626683319e-9,-5.414045400541133e-4,-2.3199382210688513e-5,3.774257587440266e-9,-5.409955890221134e-4,-2.302384304625818e-5,3.8167930066406206e-9,-5.406592269132189e-4,-2.2788582348018324e-5,3.876564618794517e-9,-5.404109156371855e-4,-2.253214165155441e-5,3.943315026925249e-9,-5.402484736817223e-4,-2.2293496058127136e-5,4.00637464546443e-9,-5.401548723226671e-4,-2.210423231623976e-5,4.056855142789439e-9]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json new file mode 100644 index 000000000..f56819cf3 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_7.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":7000,"numberOfSamples":1000,"samples":[-5.401035826582183e-4,-2.1983771746004456e-5,4.089071108861903e-9,-5.400645679375473e-4,-2.1937995914044596e-5,4.1010390739496695e-9,-5.400093979365809e-4,-2.1960549237341188e-5,4.094200825458988e-9,-5.399147607226752e-4,-2.203560775605646e-5,4.072680770337793e-9,-5.397644338651072e-4,-2.2140989396072942e-5,4.0424039620270295e-9,-5.395502643031555e-4,-2.2250959079911428e-5,4.010291455194114e-9,-5.392727708698771e-4,-2.233868896010399e-5,3.983582390762636e-9,-5.389417235021638e-4,-2.2378792834005243e-5,3.969178139964558e-9,-5.385766058145648e-4,-2.235055698671764e-5,3.972815745495291e-9,-5.382062428829531e-4,-2.2242365349685453e-5,3.9978965146973945e-9,-5.378662132655593e-4,-2.205712418011711e-5,4.043993326717811e-9,-5.375924932704364e-4,-2.181705877637256e-5,4.105479870305896e-9,-5.374109340395555e-4,-2.1564488189815053e-5,4.171221914461289e-9,-5.373252109046606e-4,-2.13546121672999e-5,4.226432351021938e-9,-5.373095626709229e-4,-2.123923851906108e-5,4.256999417283581e-9,-5.373130817418842e-4,-2.1246850964482913e-5,4.25485673473855e-9,-5.372765380678705e-4,-2.136960735856047e-5,4.221561718856039e-9,-5.371540300970259e-4,-2.156549994879516e-5,4.167859343731849e-9,-5.36928145915775e-4,-2.177449463181616e-5,4.109507993256763e-9,-5.36612298142394e-4,-2.193926959851254e-5,4.061836554881471e-9,-5.362421974391817e-4,-2.202084762893932e-5,4.035594559950374e-9,-5.358628658080441e-4,-2.200502185841941e-5,4.035163172736923e-9,-5.355167351147426e-4,-2.1900830823744038e-5,4.058798324504693e-9,-5.35235449411885e-4,-2.173439788390032e-5,4.100071676730384e-9,-5.350357193602122e-4,-2.15410881740401e-5,4.14980207032798e-9,-5.349185757880749e-4,-2.135782693181579e-5,4.198050291539687e-9,-5.348712290073628e-4,-2.121657442592248e-5,4.2359280087428855e-9,-5.348708000481933e-4,-2.1139615342117445e-5,4.257004944159546e-9,-5.348890826615417e-4,-2.113709309176623e-5,4.258128208977309e-9,-5.348974104172614e-4,-2.1206799246401138e-5,4.239584522007182e-9,-5.348708384321045e-4,-2.1335822917691524e-5,4.204678615706449e-9,-5.347911231697716e-4,-2.1503424398811796e-5,4.158913513206647e-9,-5.346483663470459e-4,-2.1684383203511062e-5,4.109023325019758e-9,-5.344415971986584e-4,-2.185222293312799e-5,4.062070768370815e-9,-5.341787121227865e-4,-2.198213649495927e-5,4.024683100836483e-9,-5.338760303296781e-4,-2.2053786749643512e-5,4.002365575691231e-9,-5.335574557412858e-4,-2.2054309116071213e-5,3.998758028608726e-9,-5.332528017860458e-4,-2.198181627770456e-5,4.014702338546216e-9,-5.32994271803446e-4,-2.1849184863030615e-5,4.047158626760407e-9,-5.328099775273082e-4,-2.1686695872980368E-05,4.088373074123842e-9,-5.327143982259301e-4,-2.1540670747909262e-5,4.1261167888255816e-9,-5.326982547305342e-4,-2.146472539588816e-5,4.145954976805639e-9,-5.327237676269208e-4,-2.150269819024173e-5,4.135827219007261e-9,-5.32732172820136e-4,-2.166880035547954e-5,4.091442962833996e-9,-5.32664363807273e-4,-2.193675634261866e-5,4.019307535221708e-9,-5.324850262715923e-4,-2.2247356034033065e-5,3.93482109123221e-9,-5.321959712692641e-4,-2.253169043764306e-5,3.856170494966331e-9,-5.318318024819819e-4,-2.2736299986202895e-5,3.797697407775919e-9,-5.314434001136979e-4,-2.283727543038531e-5,3.7661716224598815e-9,-5.310801862783224e-4,-2.2840328090950416e-5,3.760701663621395e-9,-5.307784695622606e-4,-2.277209911293882e-5,3.774865010501329e-9,-5.305570300482153e-4,-2.2669296597542187e-5,3.799377675031908e-9,-5.304177923198672e-4,-2.2569563199808032e-5,3.824373068544768e-9,-5.303490345079164e-4,-2.2505211219014473e-5,3.841055895162692e-9,-5.303294436667859e-4,-2.2499458669989806e-5,3.842819986704146e-9,-5.303323047521583e-4,-2.2564506861846283e-5,3.825934653411622e-9,-5.303295770130921e-4,-2.2701095439328812e-5,3.78981094362531e-9,-5.302956400451363e-4,-2.2899349303107257e-5,3.736840685640963e-9,-5.30210473665667e-4,-2.314073527658426e-5,3.6718507329490764e-9,-5.300620142371433e-4,-2.340093393614476e-5,3.601265981895817e-9,-5.298474349228372e-4,-2.3653284469214588e-5,3.532132956929273e-9,-5.29573308984056e-4,-2.3872320401723e-5,3.4711768964710575e-9,-5.292548431176042e-4,-2.403707365259649e-5,3.4239812057610383e-9,-5.289143407918906e-4,-2.4134058857944783e-5,3.3942741989696835e-9,-5.285789266630395e-4,-2.4159906281443744e-5,3.3832709646259577e-9,-5.282773952237134e-4,-2.4123609199085298e-5,3.389033411558258e-9,-5.280357364388392e-4,-2.404808982327215e-5,3.4059246595776906e-9,-5.278708810726782e-4,-2.3969949940549298e-5,3.4245089739342943e-9,-5.277831391864141e-4,-2.3935357712190903e-5,3.4325187746853774e-9,-5.277497546540487e-4,-2.3990053843999665e-5,3.417490568679712e-9,-5.277243373408124e-4,-2.416362760309801e-5,3.371043381811958e-9,-5.276472969010053e-4,-2.4453303594010498e-5,3.2933522318209953e-9,-5.274672038760931e-4,-2.4817592116745615e-5,3.1949762152372857e-9,-5.271634422555336e-4,-2.5188059386224728e-5,3.0937979755767632e-9,-5.267559068389037e-4,-2.549567899523349e-5,3.008057415556971e-9,-5.262952781608044e-4,-2.569664316277229e-5,2.9495561606916857e-9,-5.258412694183832e-4,-2.5783493066863733e-5,2.9207489680924703e-9,-5.254425066389419e-4,-2.5779503885456728e-5,2.9161612247094987e-9,-5.251263833011977e-4,-2.5724489785007588e-5,2.925940256027055e-9,-5.248986095698239e-4,-2.566102959629115e-5,2.9392604634341714e-9,-5.247480432907525e-4,-2.5625368004893986e-5,2.946595015690205e-9,-5.246528338231885e-4,-2.5643091786020372e-5,2.940887498147975e-9,-5.245858121778989e-4,-2.572797628618578e-5,2.918009092055048e-9,-5.245186697908287e-4,-2.5882406676612352e-5,2.8768303754599108e-9,-5.244252403009383e-4,-2.6098529986454154e-5,2.8190430572214277e-9,-5.242842104460674e-4,-2.6359918036558112e-5,2.748752781998075e-9,-5.240813809095547e-4,-2.664376012583758e-5,2.6718566779627634e-9,-5.23811405473642e-4,-2.6923697743507696e-5,2.5952305181850944e-9,-5.234786998958045e-4,-2.7173303690041893e-5,2.5257824612885647e-9,-5.230971720563157e-4,-2.7369871435687406e-5,2.4694878843742183e-9,-5.226886747385083e-4,-2.749801736194075e-5,2.4305157487672832e-9,-5.222802740203602e-4,-2.7552679878417226e-5,2.410501767346455e-9,-5.219004721067165e-4,-2.7541114744677728e-5,2.4080150610133087e-9,-5.215746064004773e-4,-2.748348611429587e-5,2.4182963593044943e-9,-5.213196916609409e-4,-2.741169261001642e-5,2.433387542607336e-9,-5.211390633776294e-4,-2.7365830864708946e-5,2.442883976030173e-9,-5.210177939670833e-4,-2.7387386588784694e-5,2.4356382416405185e-9,-5.2092103264559e-4,-2.7508753633437043e-5,2.4025749182162106e-9,-5.207983793056417e-4,-2.7740648686792387e-5,2.3401865242185253e-9,-5.205966266482828e-4,-2.806223642295004e-5,2.253350576167634e-9,-5.202789824851698e-4,-2.8421269302758358e-5,2.1554312055901617e-9,-5.198423209709797e-4,-2.8748981292602243e-5,2.064380772209385e-9,-5.193213569961983e-4,-2.8985277857182498e-5,1.996093068377223e-9,-5.187754286828383e-4,-2.9100856801229018e-5,1.95860814721846e-9,-5.182654734879904e-4,-2.910408008464851e-5,1.950328402209735e-9,-5.17834468885133e-4,-2.903146570281326e-5,1.9624204795998646e-9,-5.174994717055985e-4,-2.8930642345991606e-5,1.9830589980046977e-9,-5.172543344144145e-4,-2.8845521813800735e-5,2.0010793286060667e-9,-5.170775031307184e-4,-2.8808046397317225e-5,2.0080420772500573e-9,-5.169400421587481e-4,-2.883586587420426e-5,1.998918998843043e-9,-5.168116638617822e-4,-2.8933416322078027e-5,1.9719933681402133e-9,-5.166645952694134e-4,-2.9094191480639365e-5,1.928446821526537e-9,-5.16476024252827e-4,-2.930309443473024e-5,1.8718459878098334e-9,-5.162298604848831e-4,-2.9538674218475745e-5,1.8075644448687839e-9,-5.15918183163581e-4,-2.9775463189840496e-5,1.7421226458261029e-9,-5.155423951219354e-4,-2.9986754143992856e-5,1.682415416929058e-9,-5.151137407302886e-4,-3.0148054298078004e-5,1.6348102041026057e-9,-5.14652612618079e-4,-3.024103796625174e-5,1.6041685250154395e-9,-5.141862173715009e-4,-3.025736743569097e-5,1.5929194416540232e-9,-5.137445594032925e-4,-3.0201544061071227e-5,1.6003442662174793e-9,-5.133551073665073e-4,-3.0091913298744713e-5,1.6222546448333353e-9,-5.130369284461957e-4,-2.9959105712960137e-5,1.651244127376648e-9,-5.127954099507898e-4,-2.9841663506552026e-5,1.6776263789056898e-9,-5.126187743607301e-4,-2.977911818282605e-5,1.6910763709352394e-9,-5.124775920139699e-4,-2.980317215645477e-5,1.6828919402962205e-9,-5.123285291058596e-4,-2.992827896807966e-5,1.6485704768880652e-9,-5.121232184702717e-4,-3.0144080674584436e-5,1.5900146804836555e-9,-5.118216874803194e-4,-3.041333535976552e-5,1.5163090868023582e-9,-5.114069216089788e-4,-3.06788578426189e-5,1.4420450362417905e-9,-5.108941341159282e-4,-3.087997193374652e-5,1.383045829244638e-9,-5.103283884814538e-4,-3.097314754523197e-5,1.350950290890561e-9,-5.097696659935665e-4,-3.0946985077149386e-5,1.3492802047218747e-9,-5.092722871601308e-4,-3.0823751756630565e-5,1.3729826486285837e-9,-5.088689790088103e-4,-3.064783528784369e-5,1.4112787115572115e-9,-5.085657929059659e-4,-3.046880866802487e-5,1.4518356546063253e-9,-5.08346811352875e-4,-3.032757248561428e-5,1.4841879987672864e-9,-5.081833205273989e-4,-3.024951848205968e-5,1.5014927928567059e-9,-5.080425577921641e-4,-3.024389232124672e-5,1.5008319918093534e-9,-5.078937898414977e-4,-3.0306504584070308e-5,1.4827093655212703e-9,-5.077117106050379e-4,-3.042331137863873e-5,1.4502784815439696e-9,-5.074781087294359e-4,-3.0573627604291196e-5,1.4085697181512755e-9,-5.071827632231985e-4,-3.0732762305829554e-5,1.363783212066794e-9,-5.068241386956512e-4,-3.087440447664662e-5,1.322616276444108e-9,-5.064099743494193e-4,-3.097328317084115e-5,1.2915471371343079e-9,-5.059573813360568e-4,-3.100850766576199e-5,1.2759963019804067e-9,-5.054917280931815e-4,-3.09675266499804e-5,1.2793674539120017e-9,-5.050436028710859e-4,-3.085000943630236e-5,1.3021016279347987e-9,-5.046435847782699e-4,-3.067039629349787e-5,1.3410151010863194e-9,-5.043154041700915e-4,-3.0457621016956392e-5,1.3892739397176436e-9,-5.040690924503929e-4,-3.025093383015183e-5,1.4372920683562972e-9,-5.038963498673596e-4,-3.0091976510982597e-5,1.4745708467378526e-9,-5.037701041335682e-4,-3.001474285367648e-5,1.4921523724764496e-9,-5.036491510419384e-4,-3.0036038672483e-5,1.4850891219563646e-9,-5.034873278369172e-4,-3.0149240525066758e-5,1.4542250103523055e-9,-5.032453132593057e-4,-3.032361586041559e-5,1.4066373962624775e-9,-5.029021178492986e-4,-3.0510322165871625e-5,1.3543382658568904e-9,-5.024627404979756e-4,-3.06545113386691e-5,1.3112907864465489e-9,-5.01958677253733e-4,-3.0710749963624354e-5,1.2894420761309303e-9,-5.014397693770699e-4,-3.065674386674007e-5,1.2951067361437504e-9,-5.009594637119274e-4,-3.0499774007028698e-5,1.327181960804589e-9,-5.005591265624038e-4,-3.027289359707675e-5,1.3779593095465411e-9,-5.002577464773517e-4,-3.002286754188913e-5,1.4360302437884732e-9,-5.000502980916162e-4,-2.9795642680252517e-5,1.4898545010720947e-9,-4.999135018056022e-4,-2.96252177016554e-5,1.530564984614016e-9,-4.998148703059288e-4,-2.9528734833433275e-5,1.5533180663703762e-9,-4.997210391324866e-4,-2.9507108813167577e-5,1.557313949211449e-9,-4.996033580441727e-4,-2.95486805281199e-5,1.5450349761472517e-9,-4.994407134467235e-4,-2.963354086042027e-5,1.5212284427432084e-9,-4.99220513807549e-4,-2.9737275227078863e-5,1.4919412361183264e-9,-4.989388300780407e-4,-2.9833867578447486e-5,1.4637165471569636e-9,-4.986003615032496e-4,-2.989808300652266e-5,1.442933990607473e-9,-4.982184149831263e-4,-2.9907927865987277e-5,1.4351810441446417e-9,-4.978145252172193e-4,-2.9847712851288548e-5,1.4445248582206659e-9,-4.974169169914042e-4,-2.971176155615385e-5,1.4726359068551763e-9,-4.970569165391165e-4,-2.9508056286774713e-5,1.517893845763169e-9,-4.967628303390822e-4,-2.926026998042455e-5,1.574829976621728e-9,-4.96551978398408e-4,-2.900608455871382e-5,1.634431128285346e-9,-4.96423302209712e-4,-2.879027553840682e-5,1.6857146709917446e-9,-4.963541060645736e-4,-2.865323310167557e-5,1.7184681499924557e-9,-4.963036761354488e-4,-2.861842652841363e-5,1.7263462753477494e-9,-4.962236841992082e-4,-2.8683800491744274e-5,1.7091218148852898e-9,-4.960720233794146e-4,-2.8820919804120417e-5,1.673117417745899e-9,-4.958250916601518e-4,-2.898244031513813e-5,1.6295915726764063e-9,-4.954843911405692e-4,-2.911516518981793e-5,1.591663143962164e-9,-4.950757567029083e-4,-2.9174289607850693e-5,1.5708062654753593e-9,-4.946419883627445e-4,-2.9134683182893188e-5,1.5739443674704452e-9,-4.942313197632331e-4,-2.899634780038582e-5,1.601897900139963e-9,-4.938850760519116e-4,-2.8782878175581034e-5,1.6495407345080696e-9,-4.936280480341194e-4,-2.8533738897703263e-5,1.707525662802973e-9,-4.934641902772148e-4,-2.8293088750190768e-5,1.7649546067683797e-9,-4.933783032088761e-4,-2.80988640410467e-5,1.8121051613246878e-9,-4.933422254005704e-4,-2.7975289802310766e-5,1.8424210940995162e-9,-4.933227875226166e-4,-2.793022331205908e-5,1.853363241919422e-9,-4.932888738289174e-4,-2.7956735636432285e-5,1.8461872237371115e-9,-4.932160962554518e-4,-2.8037116641906087e-5,1.8250326211687373e-9,-4.930889594766327e-4,-2.8147435486230603e-5,1.7957702854856959e-9,-4.929012427190119e-4,-2.8261502965497104e-5,1.7649326447086253e-9,-4.926554961798312e-4,-2.835390391705434e-5,1.7388763334173934e-9,-4.923623095573031e-4,-2.8402349479687208e-5,1.7231683216680764e-9,-4.920395867133475e-4,-2.8389889647024718e-5,1.722073563894763e-9,-4.917115540492151e-4,-2.8307497965287012e-5,1.7379836944677346e-9,-4.914067695061618e-4,-2.815714883271202e-5,1.7707008124423624e-9,-4.911541935152892e-4,-2.7954758530073625e-5,1.8166878141640076e-9,-4.9097673506944e-4,-2.773135265619518e-5,1.868683014872907e-9,-4.908829819257416e-4,-2.753002578310636e-5,1.9163130986412e-9,-4.908600342594571e-4,-2.7396792960745575e-5,1.9482274136412787e-9,-4.908721173909682e-4,-2.736633164669827e-5,1.9555585722015448e-9,-4.908685218729858e-4,-2.7447945016454782e-5,1.935427847646306e-9,-4.907995565142859e-4,-2.7619289411182313e-5,1.8926347984558103e-9,-4.906336832509187e-4,-2.7832348344015255e-5,1.8383867655335314e-9,-4.903676923646972e-4,-2.802925951189207e-5,1.7865984348223615e-9,-4.900260027571856e-4,-2.81603898676814e-5,1.7495716625922467e-9,-4.89651135545775e-4,-2.8197278587712897e-5,1.7348223698973235e-9,-4.892906052692192e-4,-2.8137212384925217e-5,1.7438257478064728e-9,-4.889850187707911e-4,-2.800028120231637e-5,1.7725003438639047e-9,-4.887600631930353e-4,-2.782169608840279e-5,1.8128296668897378e-9,-4.886231415493295e-4,-2.764229676123075e-5,1.8550063239660704e-9,-4.885642484701803e-4,-2.7499550273375093e-5,1.8896080581632753e-9,-4.88560103003217e-4,-2.7420633789239168e-5,1.9094190965771907e-9,-4.885802098906471e-4,-2.741859369588705e-5,1.9105887095828677e-9,-4.885932963466409e-4,-2.749186494528233e-5,1.892958847920264e-9,-4.885727070221833e-4,-2.7626586385723848e-5,1.8596151082628022e-9,-4.884999125827284e-4,-2.780056601507957e-5,1.815912403162441e-9,-4.883659918181414e-4,-2.7987688626019622e-5,1.7683031663824352e-9,-4.881714965792303e-4,-2.8161857991136438e-5,1.7232621331153711e-9,-4.879253817230721e-4,-2.8300053385778088e-5,1.6864793191295907e-9,-4.876435954604153e-4,-2.838460913858599e-5,1.6623231380987314e-9,-4.87347570898538e-4,-2.8405127125376862e-5,1.6534487206287574e-9,-4.870624676766653e-4,-2.8360400428380635e-5,1.660397458157364e-9,-4.8681464921107224e-4,-2.8260451760282097e-5,1.6810999234867354e-9,-4.8662762504571956e-4,-2.8128194590838857e-5,1.710378936760407e-9,-4.865159493111669e-4,-2.7999259061439134e-5,1.7398402884595435e-9,-4.864778001628795e-4,-2.7917688216241995e-5,1.758782346831438e-9,-4.864891773662556e-4,-2.7925623648319725e-5,1.7566564873211407e-9,-4.8650469881442816e-4,-2.8048055389582203e-5,1.7268436941845679e-9,-4.8646900022718986e-4,-2.8278862045047066e-5,1.6701987909042514e-9,-4.863366661408441e-4,-2.8577505119019685e-5,1.596014686119699e-9,-4.8609095859314307e-4,-2.888149066944309e-5,1.5191180487893385e-9,-4.8575031131327785e-4,-2.9129303897496962e-5,1.4543917377772392e-9,-4.853594628443761e-4,-2.928127077721007e-5,1.4117786999065398e-9,-4.8497195747729835e-4,-2.932864068445588e-5,1.394071849831376e-9,-4.846337505125269e-4,-2.92901557766113e-5,1.397598481510503e-9,-4.8437354423659196e-4,-2.9201624636557654e-5,1.4144787727407432e-9,-4.842002284292061e-4,-2.9104393029698005e-5,1.4351477859261177e-9,-4.841052181270292e-4,-2.903609161431683e-5,1.4504558263885193e-9,-4.84067228217977e-4,-2.9024670479161186e-5,1.4531643834621424e-9,-4.840577748119623e-4,-2.90853939257728e-5,1.438879930124667e-9,-4.8404655015113853e-4,-2.9220176531956694e-5,1.4064663055144139e-9,-4.840061936266715e-4,-2.9418854952069273e-5,1.3579222509944927e-9,-4.839159970403585e-4,-2.9661986241126522e-5,1.2977592972372048e-9,-4.8376421255598803e-4,-2.99245694584744e-5,1.2320364517035848e-9,-4.8354887698368103e-4,-3.0180063885511402e-5,1.1672683012708056e-9,-4.832772700501507e-4,-3.0404142004948953e-5,1.1094257627540442e-9,-4.829643557323166e-4,-3.0577722626730395e-5,1.06319106972272e-9,-4.826306810340864e-4,-3.068915192762852e-5,1.0314937573263063e-9,-4.823000236618913e-4,-3.073572511170575e-5,1.0152261736262526e-9,-4.819967854440488e-4,-3.07247596187981e-5,1.0130129991719876e-9,-4.8174290438235536e-4,-3.067424662353938e-5,1.0209817846856487e-9,-4.8155387647187757e-4,-3.061273027346073e-5,1.032629336411569e-9,-4.814336608023644e-4,-3.057734555154527e-5,1.0391143981355627e-9,-4.813692597631775e-4,-3.060832201910778e-5,1.0304832601707698e-9,-4.813275459614071e-4,-3.073869463472397e-5,9.981998565152625e-10,-4.812585659790297e-4,-3.09804507134622e-5,9.386721541243323e-10,-4.811087866201458e-4,-3.1312961751180574e-5,8.56262021686922e-10,-4.8084200197442165e-4,-3.168291882514008e-5,7.634346976835111e-10,-4.804573453938174e-4,-3.202098523525012e-5,6.767668830172286e-10,-4.799919742448245e-4,-3.226863232885468e-5,6.104833504614054e-10,-4.7950561722214457e-4,-3.239963129412474e-5,5.713324640502453e-10,-4.7905711130771735e-4,-3.2424683834516966e-5,5.57489239643948e-10,-4.7868648919253005e-4,-3.2380572165611614e-5,5.61014998658449e-10,-4.78408756745913e-4,-3.231372536823076e-5,5.715060758294507e-10,-0.00047821695541208484,-3.226672810540936e-5,5.790543339561175e-10,-4.780892929635116e-4,-3.2270696159169436e-5,5.759797425532569e-10,-4.7799654019284706e-4,-3.2342694027153804e-5,5.575709307492149e-10,-4.7790798337904856e-4,-3.2486240286347094e-5,5.222191413059654e-10,-4.7779572256916394e-4,-3.269322339193252e-5,4.712137846897875e-10,-4.776377532430203e-4,-3.294643314889626e-5,4.0828191455557877e-10,-4.7742011900052996e-4,-3.322255415686779e-5,3.3887550315425643e-10,-4.7713813362436103e-4,-3.3495522236272236e-5,2.692723543611399e-10,-4.767966058786844e-4,-3.374005506219493e-5,2.0561845121165476e-10,-4.764089810761079e-4,-3.3935100660724256e-5,1.5304719488686107e-10,-4.759953978571277e-4,-3.4066794130658526e-5,1.150012473363178e-10,-4.75579914293648e-4,-3.4130529894258694e-5,9.281539758685568e-11,-4.7518726401693057e-4,-3.4132012358599385e-5,8.552166664277137e-11,-4.7483937947707337e-4,-3.4087283256587925e-5,8.9808001360197e-11,-4.745518134530909e-4,-3.402168289331611e-5,1.0012352749726892e-10,-4.743301302744044e-4,-3.396758918434555e-5,1.0901384685598315e-10,-4.7416643965561046e-4,-3.3960444197777966e-5,1.0790405985855532e-10,-4.740368979791793e-4,-3.4032281179469596e-5,8.86169595898152e-11,-4.739021227586955e-4,-3.420250408423377e-5,4.5725881072999446e-11,-4.7371326042227083e-4,-3.446757033559661e-5,-2.0710561717845824e-11,-4.734254927457585e-4,-3.479429725681101e-5,-1.0330249928567228e-10,-4.7301639236006836e-4,-3.5123672220509924e-5,-1.881476569178234e-10,-4.725000431178112e-4,-3.5388839961071916e-5,-2.591876480176443e-10,-4.7192604541348076e-4,-3.554105374407855e-5,-3.044707002743182e-10,-4.7136099969806975e-4,-3.556883779945993e-5,-3.206993534357789e-10,-4.7086294225468346e-4,-3.549888047725581e-5,-3.1342792392102554e-10,-4.7046352272326177e-4,-3.538050951555742e-5,-2.935213287305637e-10,-4.7016473226171217e-4,-3.5265590743997314e-5,-2.726806915020762e-10,-4.699464136836216e-4,-3.5194260656001715e-5,-2.6030955535709985e-10,-4.697770469616606e-4,-3.518932915329649e-5,-2.622205939252974e-10,-4.696228012465099e-4,-3.5256920462369833e-5,-2.8060094716625834e-10,-4.6945333703288087e-4,-3.538992906669341e-5,-3.145484253008059e-10,-4.69244867902677e-4,-3.5571919634512485e-5,-3.607624652693146e-10,-4.6898164086817774e-4,-3.5780529452895425e-5,-4.1425452821863957e-10,-4.686566863176195e-4,-3.5990449974228233e-5,-4.690962154934373e-10,-4.6827208786035787e-4,-3.617631589754077e-5,-5.192139267408718e-10,-4.678386863652773e-4,-3.631568320727738e-5,-5.591870571551936e-10,-4.6737497335989225e-4,-3.6392083291211825e-5,-5.849904896303589e-10,-4.6690488301707415e-4,-3.639782201853782e-5,-5.94602599597509e-10,-4.6645445102384944e-4,-3.633592139146378e-5,-5.883906819014525e-10,-4.660476945176547e-4,-3.6220661871468307e-5,-5.692228942796334e-10,-4.657022695838701e-4,-3.6076407131886816e-5,-5.422815071321678e-10,-4.6542554666657507e-4,-3.5934607127357874e-5,-5.145430862929582e-10,-4.6521176990474016e-4,-3.582914597600692e-5,-4.93889587145379e-10,-4.650408921003716e-4,-3.579037660247443e-5,-4.878228226654467e-10,-4.6487973809540686e-4,-3.583822677071e-5,-5.017887049330647e-10,-4.646864289969452e-4,-3.5975183793548686e-5,-5.37296846788472e-10,-4.64418929535433e-4,-3.618107017587765e-5,-5.903807450996709e-10,-4.640473748557744e-4,-3.641280549063968e-5,-6.513004445318026e-10,-4.6356706963375163e-4,-3.6612571972860786e-5,-7.064066461510136e-10,-4.6300573393137634e-4,-3.672503075757567e-5,-7.42296675743031e-10,-4.624182914159778e-4,-3.671797163766815e-5,-7.508047679955584e-10,-4.6186855565977626e-4,-3.659550128472903e-5,-7.321670756526646e-10,-4.614064225580401e-4,-3.6395389241618036e-5,-6.944563282812404e-10,-4.610528332327597e-4,-3.6172385710832e-5,-6.498299076742612e-10,-4.607987283925611e-4,-3.597801715887471e-5,-6.100320374056605e-10,-4.6061468507508637e-4,-3.5846959612404006e-5,-5.833503649471653e-10,-4.6046349004600013e-4,-3.579313229929127e-5,-5.736387227312834e-10,-4.6030994274539054e-4,-3.5812705095171745e-5,-5.807834219497946e-10,-4.601262422144594e-4,-3.588972134772124e-5,-6.017486078129592e-10,-4.5989390505752053e-4,-3.600142119002202e-5,-6.316505581854882e-10,-4.596038614192552e-4,-3.61222398339944e-5,-6.646706362294414e-10,-4.592559568531993e-4,-3.6226694452753686e-5,-6.948193567656552e-10,-4.5885834703375316e-4,-3.629175808199892e-5,-7.166060109300918e-10,-4.584267277797475e-4,-3.629920933167143e-5,-7.25651034334448e-10,-4.5798303120869814e-4,-3.623817319516776e-5,-7.192617233124736e-10,-4.575530806030977e-4,-3.610762730040304e-5,-6.969458465337379e-10,-4.571628892970559e-4,-3.591815255208761e-5,-6.607620683323364e-10,-4.56833823604343e-4,-3.569198142091502e-5,-6.153534493322551e-10,-4.5657747279228704e-4,-3.54605678450924e-5,-5.675121322431022e-10,-4.5639155317605325e-4,-3.525945503013983e-5,-5.251872676244543e-10,-4.562582877399368e-4,-3.5121101489857186e-5,-4.960025021303906e-10,-4.561462404911574e-4,-3.5067166813251846e-5,-4.855281510313871e-10,-4.560157354184803e-4,-3.510209657136758e-5,-4.956760285975314e-10,-4.558271844438492e-4,-3.520973052125918e-5,-5.23642942124648e-10,-4.555509722539143e-4,-3.5354377231198915e-5,-5.618485388203806e-10,-4.551767900011865e-4,-3.5487271728465515e-5,-5.99216862288837e-10,-4.547194931700101e-4,-3.555821241925147e-5,-6.238372524193589e-10,-4.5421824807652514e-4,-3.553016757808225e-5,-6.264728450339745e-10,-4.537270827198009e-4,-3.539206308847836e-5,-6.037125880351339e-10,-4.532987076358123e-4,-3.5163679660655164e-5,-5.592847955933052e-10,-4.5296792741134556e-4,-3.488912728160238e-5,-5.027086388929701e-10,-4.527422313081323e-4,-3.462138798450755e-5,-4.458766460131134e-10,-4.5260323410913533e-4,-3.4405453702598874e-5,-3.9926413768010085e-10,-4.5251644486876176e-4,-3.426740951649623e-5,-3.6938487658784766e-10,-4.5244332300902997e-4,-3.421213627964388e-5,-3.5808595438001316e-10,-4.523505626185003e-4,-3.4227480505678286e-5,-3.632636675315268e-10,-4.5221482312207624e-4,-3.4290899461766846e-5,-3.8020116677613763e-10,-4.5202375557595886e-4,-3.437554371425792e-5,-4.029081427514244e-10,-4.5177505774483904e-4,-3.445460262322402e-5,-4.251869797649234e-10,-4.514749547370295e-4,-3.4504079311446706e-5,-4.4139362238526164e-10,-4.5113679020358777e-4,-3.450468018923218e-5,-4.469651496899405e-10,-4.507797731939009e-4,-3.444350711070474e-5,-4.388225099902334e-10,-4.504274678763231e-4,-3.431595710739258e-5,-4.1574789980056126e-10,-4.501053968208255e-4,-3.412772239306382e-5,-3.7876689398194317e-10,-4.49837245052929e-4,-3.3896171321560205e-5,-3.3143923698792594e-10,-4.4963967883302245e-4,-3.364990241377015e-5,-2.7982500286964254e-10,-4.495167350280108e-4,-3.342519780636138e-5,-2.3182893325347959e-10,-4.494557916595384e-4,-3.32588698365336e-5,-1.9575098987866422e-10,-4.494275238613324e-4,-3.317868246084438e-5,-1.7822526619476317e-10,-4.493912544321645e-4,-3.319433112785999e-5,-1.8215182067943742e-10,-4.4930491559363935e-4,-3.329257874488547e-5,-2.0541584757431906e-10,-4.491366544886963e-4,-3.343893518934762e-5,-2.409915239755049e-10,-4.4887423428689434e-4,-3.358582747083409e-5,-2.785249749837473e-10,-4.4852918924545023e-4,-3.3684857564196356e-5,-3.069592004180854e-10,-4.481345025764483e-4,-3.3699547562141865E-05,-3.174400965017838e-10,-4.477364173205387e-4,-3.36150453685436e-5,-3.056899582009406e-10,-4.473824653024104e-4,-3.3442075559446554e-5,-2.731645840371916e-10,-4.471089794236686e-4,-3.3213746559910004e-5,-2.2659609678642381e-10,-4.4693193476726584e-4,-3.2975892326254515e-5,-1.7600234698550785e-10,-4.4684415933761597e-4,-3.2774072581832724e-5,-1.318180279743324e-10,-4.468195596048631e-4,-3.264180812728822e-5,-1.0215906621877542e-10,-4.468221350963377e-4,-3.259390394722096e-5,-9.111564082088563e-11,-4.468159270102211e-4,-3.262613831507543e-5,-9.843768488394674e-11,-4.4677253154619184e-4,-3.271981887431175e-5,-1.2037327381122013e-10,-4.466747593938944e-4,-3.2848326037323585e-5,-1.5107991793165482e-10,-4.465169535590928e-4,-3.298315215165685e-5,-1.8405170853296948e-10,-4.4630337571044507e-4,-3.309824656748056e-5,-2.1323351666357844e-10,-4.4604597579605345e-4,-3.317263929462189e-5,-2.337308573244723e-10,-4.45762317539977e-4,-3.3191928530204014e-5,-2.421841171496663e-10,-4.454738218877487e-4,-3.314935956184844e-5,-2.369644191333686e-10,-4.4520398080873634e-4,-3.304699535971351e-5,-2.1835135532547503e-10,-4.449759188950929e-4,-3.289697404544757e-5,-1.887628854791514e-10,-4.448087241116615e-4,-3.2722220146874976e-5,-1.529489231537002e-10,-4.4471242614531716e-4,-3.2555363695373645e-5,-1.1787226547448037e-10,-4.446825403539786e-4,-3.2434324371631275e-5,-9.188130706746193e-11,-4.4469655992664646e-4,-3.2393735943472714e-5,-8.291075104452407e-11,-4.4471563063769776e-4,-3.245364245052461e-5,-9.596818943647909e-11,-4.446933654754844e-4,-3.2609831845342675e-5,-1.3086158754423952e-10,-4.445900359888028e-4,-3.2831347836709934e-5,-1.814400172328324e-10,-4.4438642125605143e-4,-3.306811219248421e-5,-2.370680722983898e-10,-4.4409080264432883e-4,-3.326622792760892e-5,-2.858581212801058e-10,-4.437360837083105e-4,-3.33843518504114e-5,-3.1823887552277983e-10,-4.433690949210459e-4,-3.340463330407339e-5,-3.294487374573945e-10,-4.430370755530498e-4,-3.3335321031998855e-5,-3.203184353265311e-10,-4.427759960089928e-4,-3.320596713714179e-5,-2.9650278742528307e-10,-4.4260339341241914e-4,-3.305809413124731e-5,-2.666935334285821e-10,-4.425164934095727e-4,-3.293443729480453e-5,-2.403889490512539e-10,-4.424951037855245e-4,-3.286939195932481e-5,-2.2573681301802528e-10,-4.4250792553513906e-4,-3.2882577323854434e-5,-2.2789539745179735e-10,-4.425203905633074e-4,-3.297653466831185e-5,-2.4823497974085815e-10,-4.425019734590562e-4,-3.313848660280707e-5,-2.8448803781729026e-10,-4.424313311491289e-4,-3.334499881923905e-5,-3.3168004394333305e-10,-4.422985572981347e-4,-3.3567784931305844e-5,-3.834657566606249e-10,-4.4210484891880924e-4,-3.377905354369237e-5,-4.3346022827032136e-10,-4.4186050614891556e-4,-3.3955460677570604e-5,-4.762630706971752e-10,-0.00044158229376506733,-3.408047587119074e-5,-5.080560853142402e-10,-4.4129088951131405e-4,-3.4145537682724034e-5,-5.268328707022444e-10,-4.4100864451780675e-4,-3.415060214756904e-5,-5.324321778308508e-10,-4.4075744431709034e-4,-3.4104538515809105e-5,-5.265509515466792e-10,-4.405562048159596e-4,-3.402543308853396e-5,-5.128193797311413e-10,-4.4041749799388676e-4,-3.394031824044413e-5,-4.968520411437988e-10,-4.4034317371603764e-4,-3.388321666420194e-5,-4.859836819661576e-10,-4.4031985380117906e-4,-3.389003663385937e-5,-4.882781596747447e-10,-4.4031667309458187e-4,-3.398947734201114e-5,-5.105417250572887e-10,-4.40288726603928e-4,-3.419139460117802e-5,-5.556392875995702e-10,-4.4018852720764694e-4,-3.447763007612022e-5,-6.202734840122589e-10,-4.3998312776834925e-4,-3.4802253044518366e-5,-6.948530997978604e-10,-4.396688525708522e-4,-3.510470657110431e-5,-7.662719727894685e-10,-4.3927463938373874e-4,-3.533108692677226e-5,-8.225278615720626e-10,-4.388514849831018e-4,-3.545261924397217e-5,-8.567545923869293e-10,-4.384542114569926e-4,-3.5472467064472854e-5,-8.687704570663886e-10,-4.381250309194333e-4,-3.542007387575285e-5,-8.640367362840351e-10,-4.3788477725332484e-4,-3.533865244353876e-5,-8.512299465652137e-10,-4.377321566231613e-4,-3.52722511840646e-5,-8.396926899517458e-10,-4.3764830456916964e-4,-3.525614476523123e-5,-8.374333127536711e-10,-4.376036478383992e-4,-3.531151963905395e-5,-8.498330044244647e-10,-4.3756499698159503e-4,-3.544392307484552e-5,-8.790159276265403e-10,-4.3750174764789934e-4,-3.56445680225368e-5,-9.238259471745557e-10,-4.3739057794072914e-4,-3.5893675770702265e-5,-9.803621067461992e-10,-4.372182577922428e-4,-3.6165025749781834e-5,-1.042950971201023e-9,-4.369824734841252e-4,-3.6430802734025703e-5,-1.1053246753441703e-9,-4.36690901264442e-4,-3.6665949804834746e-5,-1.1617407465670032e-9,-4.3635900542241446e-4,-3.685147801086402e-5,-1.2078249534317108e-9,-4.360071976804138e-4,-3.697647114841903e-5,-1.2410262063482944e-9,-4.356579555231565e-4,-3.7038915732516285e-5,-1.260728985867218e-9,-4.353331667358742e-4,-3.704575670653252e-5,-1.2681800873321904e-9,-4.350516275750907e-4,-3.701249208677096e-5,-1.2663789075441324e-9,-4.348264748497907e-4,-3.696235632581322e-5,-1.2599873663792249e-9,-4.3466228069439307e-4,-3.692480626009468e-5,-1.2551736513394884e-9,-4.3455177288540366e-4,-3.6932510170417106e-5,-1.25912798564809e-9,-4.3447301468774706e-4,-3.701572674939781e-5,-1.278902275184977e-9,-4.3438916026796164e-4,-3.71935894381788e-5,-1.3194060826546412e-9,-4.3425376802956616e-4,-3.74638561498117e-5,-1.3809346111075104e-9,-4.340236163024067e-4,-3.779593543622154e-5,-1.4574024307369292e-9,-4.3367640876553675e-4,-3.8134118564692025e-5,-1.5369256916288049e-9,-4.332244241737091e-4,-3.8414502041651824e-5,-1.6055222702572017e-9,-4.3271386018431076e-4,-3.858948430017033e-5,-1.652481129483999e-9,-4.3220787923143326e-4,-3.864607462666557e-5,-1.6743270763616353e-9,-4.317629656468537e-4,-3.860761863456337e-5,-1.6752156913577408e-9,-4.3141176547786695e-4,-3.8520414864384305e-5,-1.6642240440609935e-9,-4.3115868222643985e-4,-3.8435327419660585e-5,-1.651702421749401e-9,-4.3098557996193025e-4,-3.8393580822086956e-5,-1.6464759363415677e-9,-4.3086147835504085e-4,-3.841992287116871e-5,-1.65440671246263e-9,-4.307516674336233e-4,-3.8521823132790755e-5,-1.6780078303099869e-9,-4.306243804306794e-4,-3.8692067403099935e-5,-1.716664885505569e-9,-4.3045497513185133e-4,-3.891267180424769e-5,-1.7671843133691706e-9,-4.302282105989142e-4,-3.9159095494623204e-5,-1.824566327370246e-9,-4.299390751286171e-4,-3.940438880534627e-5,-1.8829431790449586e-9,-4.295924025130069e-4,-3.9623034498814555e-5,-1.936562263178734e-9,-4.292014630930585e-4,-3.9794261037469396e-5,-1.9806593157273097e-9,-4.287856876623859e-4,-3.9904630596068394e-5,-2.0120950226613972e-9,-4.28367754503315e-4,-3.994964610903417e-5,-2.0296763544745215e-9,-4.279704452993792e-4,-3.9934237516808346e-5,-2.0341813886434956e-9,-4.276136265667553e-4,-3.987227137249826e-5,-2.0282039753249915e-9,-4.273114688402678e-4,-3.978527077197651e-5,-2.0159259234067885e-9,-4.2706992488113834e-4,-3.9700366198973295e-5,-2.002829069662559e-9,-4.268845197863682e-4,-3.964737840173896e-5,-1.9952647642030475e-9,-4.267386265969893e-4,-3.965471131576109e-5,-1.999700373052887e-9,-4.266029510717304e-4,-3.9743544324180614e-5,-2.0214358793739664e-9,-4.26437834568534e-4,-3.992039295746758e-5,-2.0627867533072652e-9,-4.2620038657907274e-4,-4.016980373449743e-5,-2.1212012265236316e-9,-4.2585728334790284e-4,-4.0451299582123726e-5,-2.1883606719571155e-9,-4.25400265363133e-4,-4.070596598753596e-5,-2.25155109322746e-9,-4.248561337280175e-4,-4.0874859811857436e-5,-2.2977411834001216e-9,-4.242820619720334e-4,-4.092274432793028e-5,-2.3187965446079723e-9,-4.237451316903482e-4,-4.085341822572131e-5,-2.3147791360394584e-9,-4.2329694415442286e-4,-4.070654441064251e-5,-2.2932869092235596e-9,-4.229578411734412e-4,-4.0538947222353454e-5,-2.2656447239000503e-9,-4.2271688421275413e-4,-4.040304127911455e-5,-2.2426165588610284e-9,-4.225427433080427e-4,-4.0333144803596924e-5,-2.231704275563879e-9,-4.223968689264773e-4,-4.0342043136537935e-5,-2.2363639652971267e-9,-4.222434398179648e-4,-4.042433106460874e-5,-2.256430112670042e-9,-4.220548334090586e-4,-4.056222883882198e-5,-2.2890006714688703e-9,-4.218136677594013e-4,-4.073117018433807e-5,-2.3293788637137593e-9,-4.21512946299068e-4,-4.0904258616967875e-5,-2.3719643641673716e-9,-4.2115531676598317e-4,-4.105575217512033e-5,-2.4111025484600863e-9,-4.207517952197999e-4,-4.1163907229954436e-5,-2.441863734119646e-9,-4.203200113401336e-4,-4.121333480514526e-5,-2.460678044086568e-9,-4.198819221794372e-4,-4.119688223171917e-5,-2.4657691210332674e-9,-4.194609188969578e-4,-4.111682572964086e-5,-2.4573520283086842e-9,-4.1907848888926417e-4,-4.0985005162454883e-5,-2.4375869987131062e-9,-4.1875086145044143e-4,-4.082171835588424e-5,-2.4103369791762464e-9,-4.1848604840921634e-4,-4.065342570658751e-5,-2.3807851127628465e-9,-4.182816061708275e-4,-4.050935427302264e-5,-2.3549026071762925e-9,-4.1812347686722286e-4,-4.041715861848515e-5,-2.3387103150409148e-9,-4.1798629068454416e-4,-4.039789505126642e-5,-2.337275945283984e-9,-4.178356307985684e-4,-4.046059638808345e-5,-2.353438615303446e-9,-4.1763304542852736e-4,-4.0597133531294696e-5,-2.3864309135234715e-9,-4.17344485054109e-4,-4.07791348421971e-5,-2.4308988000567276e-9,-4.1695157842682465e-4,-4.095991780817399e-5,-2.477108670627579e-9,-4.16462448119742e-4,-4.108433698392642e-5,-2.5130503328766345e-9,-4.15915771968092e-4,-4.1106404871525956e-5,-2.528346010590168e-9,-4.153721159190534e-4,-4.100833523430551e-5,-2.5184530965389194e-9,-4.1489323356661917e-4,-4.0810007275967356e-5,-2.4867440031700544e-9,-4.1451934265011636e-4,-4.056149998336314e-5,-2.443004015897615e-9,-4.14257057163492e-4,-4.032253315069391e-5,-2.399280027476654e-9,-4.140829643037679e-4,-4.014115402159914e-5,-2.365624213252662e-9,-4.139573594589503e-4,-4.004203540654317e-5,-2.347719850083814e-9,-4.1383883902764264e-4,-4.0026135838993726e-5,-2.346648557292666e-9,-4.1369395521428763e-4,-4.007714518494776e-5,-2.359918634965156e-9,-4.1350116283010187e-4,-4.0169438678037385e-5,-2.3828275358386247e-9,-4.132509204849382e-4,-4.02745458009851e-5,-2.409672202656709e-9,-4.12944098431814e-4,-4.036544899383293e-5,-2.434693727626981e-9,-4.1259003312596384e-4,-4.0419283786942026e-5,-2.4528076757501718e-9,-4.1220463180241106e-4,-4.041920894315126e-5,-2.460165886913844e-9,-4.118084241146482e-4,-4.035589750016881e-5,-2.4545551866637317e-9,-4.114243079808707e-4,-4.0228769440772255e-5,-2.4356339267987566e-9,-4.1107472547243434e-4,-4.004674770704506e-5,-2.4050065497151834e-9,-4.107782411517076e-4,-3.982801465533893e-5,-2.3661110631512318e-9,-4.1054594259781567e-4,-3.959827057314572e-5,-2.3238887851075064e-9,-4.10378395758591e-4,-3.938732383127705e-5,-2.2842171118400988e-9,-4.1026395191599125e-4,-3.922422342717951e-5,-2.2530908614786637e-9,-4.101791123460307e-4,-3.9131562701737556e-5,-2.23557803383868e-9,-4.100913745510124e-4,-3.911997116984464e-5,-2.2346619299068557e-9,-4.099645570075549e-4,-3.9183950507037974e-5,-2.250178149363926e-9,-4.097661972198411e-4,-3.930021397784681e-5,-2.278150153434694e-9,-4.0947612025577423e-4,-3.9429780090729804e-5,-2.310922006873919e-9,-4.090943862753506e-4,-3.952493336780649e-5,-2.338459230035468e-9,-4.086456517799025e-4,-3.954111611657848e-5,-2.3508883014153373e-9,-4.081763984351799e-4,-3.945141594102922e-5,-2.34172318966217e-9,-4.0774310491620253e-4,-3.9258165010706924e-5,-2.3105104000586573e-9,-4.0739410414728915e-4,-3.899487440782558e-5,-2.2634068239480487e-9,-4.071530517716821e-4,-3.8715380711305496e-5,-2.2110648360130516e-9,-4.07012517735472e-4,-3.8474663908117465e-5,-2.1647814676881445e-9,-4.0694031503661626e-4,-3.83111097332982e-5,-2.132885090794267e-9,-4.0689355328915437e-4,-3.823811500140989e-5,-2.118905391336737e-9,-4.0683245131795863e-4,-3.824611552137267e-5,-2.121744169365106e-9,-4.0672875066320724e-4,-3.83106584547127e-5,-2.137053712749919e-9,-4.065681541205749e-4,-3.8401284561318635e-5,-2.1588842425524963e-9,-4.063489170280104e-4,-3.848820200325258e-5,-2.181051087605659e-9,-4.0607899542711783e-4,-3.854620981262006e-5,-2.198080022710527e-9,-4.0577321760118843e-4,-3.855665233157998e-5,-2.2057933114142437e-9,-4.054509336224549e-4,-3.850839314776131e-5,-2.2016348705458945e-9,-4.051339790749997e-4,-3.839848304650612e-5,-2.1848218714545927e-9,-4.0484452728607707e-4,-3.8232763492249975e-5,-2.1563917184551757e-9,-4.046024009615301e-4,-3.8026166396044666e-5,-2.1191704389762e-9,-4.0442170184689123e-4,-3.780206287518215e-5,-2.0776109012345515e-9,-4.043071522932379e-4,-3.7589916539575194e-5,-2.037394588277785e-9,-4.0425112417486777e-4,-3.7420805564781884e-5,-2.0046841607319565e-9,-4.0423270413599097e-4,-3.732108474951415e-5,-1.9850017433876396e-9,-4.042199941499895e-4,-3.7305461211264305e-5,-1.9818909364028005e-9,-4.041759729458141e-4,-3.7371576180890595e-5,-1.995722476799383e-9,-4.040669367934563e-4,-3.749819781395151e-5,-2.023080949156707e-9,-4.038714430168704e-4,-3.764824543910441e-5,-2.0570719150784504e-9,-4.0358723837979936e-4,-3.777652245214125e-5,-2.088652532821821e-9,-4.0323392522940814e-4,-3.784066890271968e-5,-2.108786263221883e-9,-4.028499668827034e-4,-3.7812733764463005e-5,-2.110917795052249e-9,-4.024839213955273e-4,-3.768809159565209e-5,-2.0930452841422504e-9,-4.0218154105103323e-4,-3.748838143603014e-5,-2.0586134771402745e-9,-4.0197245691300375e-4,-3.7256296497542606e-5,-2.0156987881971886e-9,-4.0186148165965595e-4,-3.7042976733979594e-5,-1.974586200188155e-9,-4.018283808339541e-4,-3.6892494178303976e-5,-1.944623987475064e-9,-4.0183608868270894e-4,-3.6829760565161567e-5,-1.9316327261505804e-9,-4.0184323029191903e-4,-3.685629057238657e-5,-1.9367984159228025e-9,-4.0181540972463755e-4,-3.6953941902521246e-5,-1.9571606390107712e-9,-4.0173160962337696e-4,-3.7093205760581396e-5,-1.9871078224997477e-9,-4.015852743493223e-4,-3.724183204408453e-5,-2.0200937211791826e-9,-4.013819118193629e-4,-3.737112093517171e-5,-2.0500268935527753e-9,-4.0113546642722405e-4,-3.745934046666174e-5,-2.072145790532876e-9,-4.008649162475529e-4,-3.749303145455463e-5,-2.0834320591036338e-9,-4.005915876567197e-4,-3.746722429672266e-5,-2.0827005722215756e-9,-4.00337051736825e-4,-3.7385338843855984e-5,-2.0705219071079996e-9,-4.0012112723467486e-4,-3.725911600757237e-5,-2.0491068141487655e-9,-3.9995945006566694e-4,-3.710838880148392e-5,-2.02219878218256e-9,-3.9986036290861937e-4,-3.696000071532959e-5,-1.9948926212214277e-9,-3.9982147601925637e-4,-3.684496081292581e-5,-1.9731958999948373e-9,-3.998270224104261e-4,-3.6793151712941985e-5,-1.9631309255681626e-9,-3.9984782850540707e-4,-3.6825820017548094e-5,-1.9693326621769157e-9,-3.9984567314217234e-4,-3.6947721487253395e-5,-1.9934475370821446e-9,-3.997823060669654e-4,-3.714229558595796e-5,-2.0329994613703186e-9,-3.996308094008664e-4,-3.7373115060623765e-5,-2.0814266273117242e-9,-3.99384988712439e-4,-3.759249203934011e-5,-2.1295566994293455e-9,-3.9906271036433164e-4,-3.775472405457742e-5,-2.1681019565900638e-9,-3.987016202917927e-4,-3.7829193936713294e-5,-2.190272534708571e-9,-3.9834887836798216e-4,-3.780875269054671e-5,-2.193608295241445e-9,-3.980485538263064e-4,-3.7711034648837475e-5,-2.1805271009791155e-9,-3.978305141809676e-4,-3.75729460791574e-5,-2.157555028882998e-9,-3.9770366530245046e-4,-3.744037328616604e-5,-2.1335311050243456e-9,-3.9765504299890545e-4,-3.735613027207092e-5,-2.1172878104897155e-9,-3.976546923721489e-4,-3.7349520461290274e-5,-2.1154458093897077e-9,-3.976645841027215e-4,-3.7430385886824955e-5,-2.1309453027747796e-9,-3.9764857481630915e-4,-3.7588969553787584e-5,-2.16269710822895e-9,-3.975803240688057e-4,-3.78008285196242e-5,-2.206328545718188e-9,-3.9744725472712117e-4,-3.8034406317778884e-5,-2.2556260006985536e-9,-3.972504331599879e-4,-3.825848207709496e-5,-2.304116143937135e-9,-3.970016678082849e-4,-3.8447576129588216e-5,-2.346328968114079e-9,-3.967195597523896e-4,-3.85847761019194e-5,-2.378535140950185e-9,-3.9642580202908984e-4,-3.8662499543895226e-5,-2.3989805580658325e-9,-3.9614227617272086e-4,-3.8682093918056946e-5,-2.407778956750608e-9,-3.9588887819566896e-4,-3.865305185717903e-5,-2.406662527805749e-9,-3.9568165300506234e-4,-3.8592229765188354e-5,-2.3987512411946675e-9,-3.9553072846361295e-4,-3.852295871827556e-5,-2.3883867003944353e-9,-3.9543774790634314e-4,-3.847345808670505e-5,-2.3809297326839213e-9,-3.9539305003282924e-4,-3.847364136251777e-5,-2.382287114028292e-9,-3.9537371824626544e-4,-3.854948972135635e-5,-2.397910865159832e-9,-3.9534454501332527e-4,-3.8715107497318946e-5,-2.4312142198376576e-9,-3.952641095528031e-4,-3.896460770802551e-5,-2.4818178598376683e-9,-3.9509636929992376e-4,-3.9268210077471814e-5,-2.5445577437541576e-9,-3.9482433024793544e-4,-3.957704143478872e-5,-2.6102337078048142e-9,-3.944590437311957e-4,-3.983728465279895e-5,-2.66827632892777e-9,-3.9403811672779804e-4,-4.000826568398732e-5,-2.7102607573795425e-9,-3.936136334447647e-4,-4.007582516475161e-5,-2.732568246881595e-9,-3.932354489171214e-4,-4.005509986930359e-5,-2.7370829288428234e-9,-3.9293735005261444e-4,-3.9983124149450465e-5,-2.730028550413103e-9,-3.927304162113228e-4,-3.990616554842289e-5,-2.7198283129693987e-9,-3.926037104670152e-4,-3.986712394333029e-5,-2.7148744382944538e-9,-3.925300340245018e-4,-3.989630581245046e-5,-2.721726552456415e-9,-3.924740322961887e-4,-4.000673567964125e-5,-2.7439566656949624e-9,-3.9240044960224226e-4,-4.0193797020507027e-5,-2.781711773518208e-9,-3.9228100027058804e-4,-4.043835453992976e-5,-2.8319939335662753e-9,-3.920988397429943e-4,-4.071220949346134e-5,-2.8895632795737313e-9,-3.918501286346216e-4,-4.098447018044798e-5,-2.9482215655903276e-9,-3.915428759247042e-4,-4.1227354423628e-5,-3.002126932202798e-9,-3.911938860598323e-4,-4.142035578932055e-5,-3.0468184632871506e-9,-3.908248865257149e-4,-4.1552391217979064e-5,-3.079773043002786e-9,-3.904587877773441e-4,-4.162213920665322e-5,-3.100490246668063e-9,-3.901166540589265e-4,-4.163716629526032e-5,-3.1102498369570066e-9,-3.898154596295406e-4,-4.1612528206521545e-5,-3.1117545046976984e-9,-3.895663343014008e-4,-4.15692477287104e-5,-3.108816873159751e-9,-3.893729274795302e-4,-4.1532643167673676e-5,-3.106122424164249e-9,-3.8922964958095066e-4,-4.1530120920376783e-5,-3.108959796232942e-9,-3.8911993547672825e-4,-4.158773400879558e-5,-3.1226873440949273e-9,-3.890154780111431e-4,-4.172477613316137e-5,-3.1516937951170783e-9,-3.8887832398421657e-4,-4.1946490302301866e-5,-3.1978260954989524e-9,-3.8866798799491536e-4,-4.2236923527193535e-5,-3.2587392014650204e-9,-3.883541075724722e-4,-4.255643026767475e-5,-3.3271796700881e-9,-3.879309179981178e-4,-4.2848970224092304e-5,-3.3923178303223024e-9,-3.874252936797595e-4,-4.3060086306725585e-5,-3.4432808142227515e-9,-3.8689085406422015e-4,-4.315822428367038e-5,-3.473343383367832e-9,-3.863889877673784e-4,-4.3147231358598694e-5,-3.4823712443678767e-9,-3.859670303418556e-4,-4.306282988945449e-5,-3.476235200012914e-9,-3.856450179732965e-4,-4.29567332020061e-5,-3.4640108169692097e-9,-3.8541502948697586e-4,-4.287851646215824e-5,-3.4548315486565543e-9,-3.852493149355605e-4,-4.2863147399264384e-5,-3.4556957290431317e-9,-3.851111325842977e-4,-4.2926194690833945e-5,-3.4704676625369628e-9,-3.849641750666217e-4,-4.306488479653104e-5,-3.4997555963823663e-9,-3.8477904449105344e-4,-4.326230537360815e-5,-3.541315667419064e-9,-3.845368505256895e-4,-4.349269606106779e-5,-3.5907716079917845e-9,-3.842305470775176e-4,-4.372677264988809e-5,-3.6425556238611925e-9,-3.838644713396162e-4,-4.393662457551494e-5,-3.690971057311515e-9,-3.834524001017426e-4,-4.4099766813166904e-5,-3.731195660582228e-9,-3.8301455462920074e-4,-4.4201952462350065e-5,-3.760022682061001e-9,-3.8257407697839317e-4,-4.42385677285092e-5,-3.776219192075404e-9,-3.821534971407641e-4,-4.42146190699868e-5,-3.78049345493217e-9,-3.8177167811354886e-4,-4.414353188785048e-5,-3.775176115440497e-9,-3.814415037458072e-4,-4.404520966037506e-5,-3.763795599090132e-9,-3.811682438952999e-4,-4.3943745048884684e-5,-3.750686091708826e-9,-3.8094841874788385e-4,-4.3864881721126706e-5,-3.740645067077998e-9,-3.807690606418496e-4,-4.383310219135978e-5,-3.738542478624394e-9,-3.8060747113549404e-4,-4.3868015094879415e-5,-3.7487069852998005e-9,-3.8043212896826716e-4,-4.397964230952124e-5,-3.77392849591353e-9,-3.8020614214202126e-4,-4.416283549922484e-5,-3.814126337469046e-9,-3.7989477348660916e-4,-4.43925934432593e-5,-3.8651369785543476e-9,-3.7947723172862823e-4,-4.462397219530305e-5,-3.918497560033356e-9,-3.789593875598948e-4,-4.4800964639163135e-5,-3.96317158934382e-9,-3.783796554624242e-4,-4.487522211492297e-5,-3.989310173516736e-9,-3.7780028171270733e-4,-4.482731494297352e-5,-3.992457390009027e-9,-3.772848187336151e-4,-4.4677289049787794e-5,-3.975587279866091e-9,-3.768738589342568e-4,-4.4476302813578715e-5,-3.947557776892742e-9,-3.765731596693725e-4,-4.4284647088400656e-5,-3.919157973229763e-9,-3.763583684669076e-4,-4.415011216339383e-5,-3.8993178944763496e-9,-3.7618935482083637e-4,-4.409689236608701e-5,-3.893153730927883e-9,-3.760245905568384e-4,-4.412564418670974e-5,-3.901816527226052e-9,-3.758305281239963e-4,-4.4219737409461237e-5,-3.923290331122069e-9,-3.755856622553639e-4,-4.435289044370741e-5,-3.953443754350989e-9,-3.752809867131644e-4,-4.449563849145108e-5,-3.987032034029203e-9,-3.749186681115099e-4,-4.462002058569582e-5,-4.018598786101294e-9,-3.745100126286204e-4,-4.4702883418774216e-5,-4.043293546650498e-9,-3.740730272909859e-4,-4.472824114947566e-5,-4.057558558959361e-9,-3.736296275242296e-4,-4.4688796131403827e-5,-4.059581153155581e-9,-3.732025909944763e-4,-4.4586579231906474e-5,-4.049448013925343e-9,-3.7281240901532864e-4,-4.4432606619089756e-5,-4.029008414573869e-9,-3.724743361521061e-4,-4.4245446122239154e-5,-4.001513612609417e-9,-3.7219604683176886e-4,-4.404881315412431e-5,-3.971147889469539e-9,-3.719761559946201e-4,-4.386851506422404e-5,-3.942550572712875e-9,-3.718036869016746e-4,-4.3729011292962504e-5,-3.920339561133363e-9,-3.716585476438696e-4,-4.364979112255484e-5,-3.908574248164302e-9,-3.715130942800803e-4,-4.364173138022532e-5,-3.910078188684471e-9,-3.713350457921283e-4,-4.370352841575415e-5,-3.925586069346227e-9,-3.7109238380513845e-4,-4.3818651024463044e-5,-3.9528488394828995e-9,-3.707607845405598e-4,-4.395425389302266e-5,-3.986112633364346e-9,-3.7033298488081413e-4,-4.406449097933762e-5,-4.01659369367896e-9,-3.698271408886742e-4,-4.4100617660546984e-5,-4.034478858226037e-9,-3.6928850300559833e-4,-4.402761136944001e-5,-4.032309510928544e-9,-3.6877886950402043e-4,-4.3841161627626426e-5,-4.008397336623387e-9,-3.68354844176475e-4,-4.3574127073054776e-5,-3.9681227490621515e-9,-3.680456442399449e-4,-4.328536888044946e-5,-3.921896540270247e-9,-3.678438514995482e-4,-4.303605390842075e-5,-3.88088052714649e-9,-3.6771344272492777e-4,-4.286765668321312e-5,-3.853066475373028e-9,-3.6760744211130974e-4,-4.279271827029995e-5,-3.841571155142976e-9,-3.6748400287878505e-4,-4.279868404809011e-5,-3.845110101089603e-9,-3.6731503805980255e-4,-4.2858040425471004e-5,-3.859505188909107e-9,-3.670878782353395e-4,-4.293828963274571e-5,-3.879232548481663e-9,-3.668030259099282e-4,-4.300887457302174e-5,-3.8986149146387406e-9,-3.664707239972699e-4,-4.304497730933188e-5,-3.912649349560868e-9,-3.6610775839668016e-4,-4.302929792015812e-5,-3.917575783781463e-9,-3.657347454762509e-4,-4.295287241734541e-5,-3.911245377621743e-9,-3.653736412651876e-4,-4.2815417391808795e-5,-3.893281236926014e-9,-3.650452228879931e-4,-4.2625259277326516e-5,-3.865029786249455e-9,-3.6476641984123815e-4,-4.239866016669585e-5,-3.8293301914713776e-9,-3.645476115673927e-4,-4.215819173345968e-5,-3.790137077788593e-9,-3.643903517009124e-4,-4.192994909126311e-5,-3.752032661708107e-9,-3.642861036996599e-4,-4.173977362622034e-5,-3.71966635491313e-9,-3.642164327955368e-4,-4.160892942215545e-5,-3.697132215015159e-9,-3.641549093482707e-4,-4.1549858066543754e-5,-3.6872863278909777e-9,-3.6407072313266787e-4,-4.1562773802817286e-5,-3.6910546876715064e-9,-3.639337297548633e-4,-4.1633785245227165e-5,-3.706842402789998e-9,-3.637205402382895e-4,-4.17351263688552e-5,-3.730239026226662e-9,-3.634210733541716e-4,-4.182826882524199e-5,-3.7543125950062615e-9,-3.6304426985984744e-4,-4.187077889867399e-5,-3.770791848359487e-9,-3.626205679360432e-4,-4.1827023967553126e-5,-3.772195287003563e-9,-3.621980590998262e-4,-4.168082324199709e-5,-3.754465893092228e-9,-3.6183040236259707e-4,-4.144515737090433e-5,-3.719051514202747e-9,-3.615588707716338e-4,-4.1162290906568653e-5,-3.6731031521314867e-9,-3.61396538504054e-4,-4.089083947416614e-5,-3.627175685529882e-9,-3.6132387086853867e-4,-4.0684523717909506e-5,-3.5913642442355727e-9,-3.612984871112935e-4,-4.057381858184938e-5,-3.57191628278744e-9,-3.6127263538453984e-4,-4.0559572504084276e-5,-3.5699106570700582e-9,-3.6120844626298833e-4,-4.061897653845609e-5,-3.5820719173724824e-9,-3.610852118619653e-4,-4.0717434213808e-5,-3.6026558942381903e-9,-3.608991626924136e-4,-4.0819528038116416e-5,-3.625305177385425e-9,-3.6065929725962267e-4,-4.0895889554540754e-5,-3.644354040211268e-9,-3.6038248887045136e-4,-4.092611299111932e-5,-3.6555594903413846e-9,-3.6008948797461456e-4,-4.089924983103489e-5,-3.6564197922185135e-9,-3.598020583044798e-4,-4.0813324951301555e-5,-3.6462285238279096e-9,-3.5954081132138837e-4,-4.06746448702424e-5,-3.625955167087689e-9,-3.593232203764928e-4,-4.049706401005377e-5,-3.5980159849031315e-9,-3.591614767911618e-4,-4.030096233320472e-5,-3.5659792059672047e-9,-3.5906017581369425e-4,-4.011143008152642e-5,-3.5342021902016163e-9,-3.590142746293756e-4,-3.9955202075565014e-5,-3.5073577657903728e-9,-3.5900813493897933e-4,-3.9856294031816824e-5,-3.4898049410216977e-9,-3.590165228657977e-4,-3.9830885148132995e-5,-3.484809323888809e-9,-3.5900811619758537e-4,-3.988259608517585e-5,-3.4937187933879266e-9,-3.589513508368191e-4,-3.9999692692636196e-5,-3.515316951993148e-9,-3.588215300116031e-4,-4.015553409221791e-5,-3.5456245459726613e-9,-3.586074994236263e-4,-4.031277515563591e-5,-3.578347724118303e-9,-3.5831611404968134e-4,-4.0430887172238557e-5,-3.6060328154525907e-9,-3.5797300106842354e-4,-4.0475752013014714e-5,-3.621798180660383e-9,-3.5761860209188446e-4,-4.0429328523306393E-05,-3.6212892232579545e-9,-3.572993273213688e-4,-4.029669010026284e-5,-3.604282007806e-9,-3.5705516107877836e-4,-4.01074134564653e-5,-3.575261109336151e-9,-3.56907171864305e-4,-3.990910227757714e-5,-3.542466178765705e-9,-3.5685000952815797e-4,-3.975360446642084e-5,-3.51546370509442e-9,-3.568535768631939e-4,-3.968060851260814e-5,-3.502095452651505e-9,-3.568738387353768e-4,-3.9705767185260144e-5,-3.506123139270059e-9,-3.568676969066613e-4,-3.981847075560239e-5,-3.526548679024781e-9,-3.568050583051709e-4,-3.9988930782059254e-5,-3.558632436406407e-9,-3.56673931076042e-4,-4.017965642244248e-5,-3.595815124716367e-9,-3.564788653472729e-4,-4.035578451744323e-5,-3.631596410599711e-9,-3.562358193015023e-4,-4.049130472750036e-5,-3.6608170038248088e-9,-3.5596655047241536e-4,-4.057119598922274e-5,-3.6802591959901357e-9,-3.556941971200325e-4,-4.059099060777297e-5,-3.688733399766354e-9,-3.554403466676326e-4,-4.055530827745248e-5,-3.6868596918516015e-9,-3.552231502274103e-4,-4.047630480756108e-5,-3.6767210257453985e-9,-3.550558309426621e-4,-4.0372330118324426e-5,-3.6615103358701634e-9,-3.549450842029947e-4,-4.0266541812810685e-5,-3.6452166207126978e-9,-3.5488926874896996e-4,-4.018488717008979e-5,-3.6323023478007748e-9,-3.5487679855453013e-4,-4.0152863925988295e-5,-3.6272565039705226e-9,-3.5488564634128154e-4,-4.019082120417089e-5,-3.6339063053833576e-9,-3.548851821818268e-4,-4.030831790087331e-5,-3.6544836887830023e-9,-3.548412788564619e-4,-4.049915486044093e-5,-3.6886696467672877e-9,-3.547243771613122e-4,-4.073952000048624e-5,-3.733057102710848e-9,-3.5451840841679887e-4,-4.0991294984085655e-5,-3.781467494098887e-9,-3.5422725173712733e-4,-4.121070540757682e-5,-3.826258266543762e-9,-3.538757710829669e-4,-4.136004087638724e-5,-3.8603033376723175e-9,-3.53504443877645e-4,-4.1418554823238366e-5,-3.879000807542093e-9,-3.5315908496719346e-4,-4.1388813578662445e-5,-3.881636157749867e-9,-3.528788443462086e-4,-4.1296476166252965e-5,-3.871679975513234e-9,-3.5268596813342254e-4,-4.118364620333568e-5,-3.855939529728651e-9,-3.525801622010045e-4,-4.109766926615156e-5,-3.84277572321506e-9,-3.5253922633776333e-4,-4.107846753507557e-5,-3.839853266345332e-9,-3.5252589900936437e-4,-4.1148172477191464e-5,-3.852089139473279e-9,-3.5249873593641004e-4,-4.130635182893659e-5,-3.880468677924388e-9,-3.524232758040045e-4,-4.153215835850133e-5,-3.922098707575269e-9,-3.5227977421103506e-4,-4.179200475176239e-5,-3.971370515911904e-9,-3.5206553777650213e-4,-4.2049383308559924e-5,-4.02168889154195e-9,-3.517923456022032e-4,-4.22732706596802e-5,-4.067108127961648e-9,-3.5148116482799436e-4,-4.2443054420599876e-5,-4.103423630040207e-9,-3.5115656427665365e-4,-4.254990072284108e-5,-4.128602719456839e-9,-3.508422977149487e-4,-4.259571927212223e-5,-4.1426852963775e-9,-3.505584283820493e-4,-4.2591075740938084e-5,-4.1473814440995675e-9,-3.503196597354921e-4,-4.2553010117369735e-5,-4.145588069811775e-9,-3.5013425081355416e-4,-4.250315194947812e-5,-4.140977734111264e-9,-3.5000296732766683e-4,-4.246594915992028e-5,-4.1376949637137355e-9,-3.4991789475969336e-4,-4.2466442610266224e-5,-4.140069290235601e-9,-3.4986146693382345e-4,-4.252696515740907e-5,-4.152177172551735e-9,-3.498066307483597e-4,-4.266243723623054e-5,-4.177099698568324e-9,-3.497195305195477e-4,-4.287472041112924e-5,-4.215884841538455e-9,-3.495659175480646e-4,-4.31478811621325e-5,-4.266536865943841e-9,-3.4932096349046604e-4,-4.3447520413318964e-5,-4.323660910585198e-9,-3.4897946134101256e-4,-4.372699512012349e-5,-4.379354851830018e-9,-3.4856132871286715e-4,-4.394038767390347e-5,-4.425380590164783e-9,-3.481082489458901e-4,-4.4057719624662955e-5,-4.455829749739181e-9,-3.4767160295073125e-4,-4.407548988414973e-5,-4.469069235668393e-9,-3.4729671592580966e-4,-4.401761276765464e-5,-4.468122927844235e-9,-3.470101043459885e-4,-4.392694681445468e-5,-4.459514042827404e-9,-3.4681399513372885e-4,-4.3851866775344917e-5,-4.4512484058967996e-9,-3.466884675872167e-4,-4.383320048423082e-5,-4.450711814114548e-9,-3.465989335162038e-4,-4.3895141685846634e-5,-4.463003731704032e-9,-3.4650592936654275e-4,-4.404155435899953e-5,-4.4899789588464385e-9,-3.4637451628011674e-4,-4.425746261242522e-5,-4.53010146035591e-9,-3.46181278482088e-4,-4.451449326164072e-5,-4.579071229769213e-9,-3.459177599712526e-4,-4.477844122387709e-5,-4.631023039653653e-9,-3.4559013570456575e-4,-4.501691233562397e-5,-4.679952084717743e-9,-3.452158716119919e-4,-4.520525913805162e-5,-4.720973867124305e-9,-3.4481879495999203e-4,-4.532981541959789e-5,-4.7511223937350465e-9,-3.4442408015957925e-4,-4.538843813449534e-5,-4.769589480143558e-9,-3.440542089166945e-4,-4.5389084894805184e-5,-4.7774936884748956e-9,-3.437263070319252e-4,-4.534740102436488e-5,-4.77738576894948e-9,-3.4345067735983324e-4,-4.5284143124787143e-5,-4.772713716467364e-9,-3.4323003778487113e-4,-4.5222842054429787e-5,-4.76739691027074e-9,-3.4305901194424496e-4,-4.518761784714889e-5,-4.765524511352927e-9,-3.429236989818069e-4,-4.52007347246193e-5,-4.771068404277782e-9,-3.428015696217947e-4,-4.5279382227483e-5,-4.787430575127021e-9,-3.426625060919474e-4,-4.543136538951815e-5,-4.8166784633623644E-09,-3.424723163020663e-4,-4.565015092623224e-5,-4.858517932523486e-9,-3.4219991287895055e-4,-4.591113849483137e-5,-4.9093917591879784e-9,-3.418278103507178e-4,-4.6172490727433865e-5,-4.962406765475092e-9,-3.413624942079579e-4,-4.6383736833411844e-5,-5.008742784565768e-9,-3.408383536332906e-4,-4.650185695871724e-5,-5.040476506469633e-9,-3.4030994982600497e-4,-4.650853684917004e-5,-5.053640312983224e-9,-3.398339484712107e-4,-4.641889431496161e-5,-5.0498114969366615e-9,-3.394494690556336e-4,-4.627597601679743e-5,-5.03533340901495e-9,-3.3916682212753793e-4,-4.6134299214963423e-5,-5.018789578479401e-9,-3.389684970747851e-4,-4.60416761329767e-5,-5.0082068715226695e-9,-3.388189563580666e-4,-4.602714616208865e-5,-5.009119290870518e-9,-3.386770001401216e-4,-4.609734320211425e-5,-5.023773996416256e-9,-3.385060967047203e-4,-4.623938128036451e-5,-5.051224680335727e-9,-3.382808819877009e-4,-4.642712042057251e-5,-5.0879722483668916e-9,-3.3798991630609986e-4,-4.662831095629719e-5,-5.128915587919849e-9,-3.3763548039858775e-4,-4.6811176467318076e-5,-5.16845422831316e-9,-3.3723121913479214e-4,-4.694969103565298e-5,-5.201576989894772e-9,-3.367983998553216e-4,-4.7027084779648636e-5,-5.224733145745607e-9,-3.3636159656376993e-4,-4.703738149569362e-5,-5.236319126134027e-9,-3.359445418555763e-4,-4.698513068870385e-5,-5.236724866703748e-9,-3.3556670577894265e-4,-4.688372871358966e-5,-5.228009274195705e-9,-3.3524095168534554e-4,-4.675286146676685e-5,-5.213367901026198e-9,-3.3497229454820115e-4,-4.661567260074138e-5,-5.196589566113095e-9,-3.3475746495397114e-4,-4.6496053972731513e-5,-5.181629379466889e-9,-3.3458496403935856e-4,-4.6416067332450106e-5,-5.172290074158099e-9,-3.3443550989848553e-4,-4.639329367171046e-5,-5.171902756508261e-9,-3.3428303229029717e-4,-4.64378573046309e-5,-5.182859497219969e-9,-3.3409679136510515e-4,-4.654895942300463e-5,-5.205901867299847e-9,-3.3384565314112754e-4,-4.671137333713532e-5,-5.2392644177281354e-9,-3.3350538321036714e-4,-4.689360879171389e-5,-5.278078891925973e-9,-3.330683964243518e-4,-4.705068211910057e-5,-5.314688239576653e-9,-3.3255256023083976e-4,-4.713428191609814e-5,-5.340419822664278e-9,-3.320027438393118e-4,-4.71097541805525e-5,-5.3486420687704235e-9,-3.314797357602177e-4,-4.6972927801329136e-5,-5.337761831657595e-9,-3.3103860655846234e-4,-4.67558263411006e-5,-5.312260680512601e-9,-3.307076685003807e-4,-4.651535747158061e-5,-5.28090259224886e-9,-3.30480214378984e-4,-4.6310845214460665e-5,-5.2532057684234896e-9,-3.303220348953695e-4,-4.618357322333606e-5,-5.236272390095169e-9,-3.301874844254908e-4,-4.61477186883596e-5,-5.233313814606197e-9,-3.3003452239918076e-4,-4.619282888887948e-5,-5.243799607308075e-9,-3.2983367667361197e-4,-4.6292393090905275e-5,-5.264447531098321e-9,-3.2957087722242947e-4,-4.6413211027825386e-5,-5.2904004316313725e-9,-3.2924630863698787e-4,-4.652281087401979e-5,-5.316302669134748e-9,-3.288714144932077e-4,-4.659436358753661e-5,-5.337217434375077e-9,-3.284653025069503e-4,-4.6609576179093505e-5,-5.349376028202255e-9,-3.2805103471112654e-4,-4.656006986482792e-5,-5.35069069746132e-9,-3.2765205016821133e-4,-4.6447489372098676E-05,-5.340948027169847e-9,-3.2728894386480116e-4,-4.628254233746377e-5,-5.321669265696422e-9,-3.2697676918230653e-4,-4.608314579988514e-5,-5.295709141439522e-9,-3.2672307735294367e-4,-4.5871826451843845e-5,-5.266715731905392e-9,-3.265269163253492e-4,-4.567268490866273e-5,-5.238595811180517e-9,-3.263787833299249e-4,-4.5508326939279494e-5,-5.2150856928611045e-9,-3.262613612892449e-4,-4.5396953226487785e-5,-5.199410066665686e-9,-3.26150973687626e-4,-4.5349627530952965e-5,-5.193932690177878e-9,-3.2601983786595027e-4,-4.5367769831319596e-5,-5.1997081785981995e-9,-3.2583937029624085e-4,-4.544098475670977e-5,-5.215918457321146e-9,-3.2558503734766617e-4,-4.554569690961154e-5,-5.2393381578890325e-9,-3.252430307869566e-4,-4.5645933134909383e-5,-5.264196058241929e-9,-3.248178384294444e-4,-4.56983335628188e-5,-5.282923877448141e-9,-3.2433764411315686e-4,-4.566298738150629e-5,-5.288101154267343e-9,-3.238524934028116e-4,-4.55187894312056e-5,-5.275271384380036e-9,-3.2342122598822694e-4,-4.527677794176033e-5,-5.245365700942163e-9,-3.230898582700321e-4,-4.498163827286755e-5,-5.205044425823437e-9,-3.228725935037573e-4,-4.469651453348592e-5,-5.164266989512154e-9,-3.2274750094473347e-4,-4.4478159074842894e-5,-5.13235180184745e-9,-3.226689152698676e-4,-4.435700005748701e-5,-5.114830829337623e-9,-3.225871774071815e-4,-4.433186738587753e-5,-5.112508862693316e-9,-3.2246425807672813e-4,-4.437776497525427e-5,-5.1224162241922625e-9,-3.2228031504722966e-4,-4.445858657848031e-5,-5.139485592758135e-9,-3.2203286741891803e-4,-4.4538062588412724E-05,-5.1580709737048375e-9,-3.217324318411406e-4,-4.4586481028774453E-05,-5.173027330322962e-9,-3.213975733128406e-4,-4.458364652752997e-5,-5.180397855754135e-9,-3.210507152123642e-4,-4.451955192695055e-5,-5.177821168001773e-9,-3.20714821071863e-4,-4.43939735421001e-5,-5.164703758157465e-9,-3.2041064399458284e-4,-4.421548906702248e-5,-5.1421458139077516e-9,-3.2015437220027257e-4,-4.400000934734236e-5,-5.112638550353013e-9,-3.199556359923085e-4,-4.3768795235697604e-5,-5.079609309330488e-9,-3.1981598750983545e-4,-4.354585021416585e-5,-5.046904699548832e-9,-3.197281840014739e-4,-4.3354726543107915e-5,-5.018289250760496e-9,-3.196765829420705e-4,-4.321510531744181e-5,-4.997015044656991e-9,-3.1963870183165634e-4,-4.313959806056474e-5,-4.985452141399794e-9,-3.195878597550035e-4,-4.313112514042971e-5,-4.984725308729074e-9,-3.1949679113388595e-4,-4.318123126172128e-5,-4.994338339842217e-9,-3.1934206103072054e-4,-4.326970683766678e-5,-5.0118522340722995e-9,-3.191090769027233e-4,-4.336592775766331e-5,-5.032784985900198e-9,-3.1879727330728615e-4,-4.3432619842126424e-5,-5.0510003085641095e-9,-3.184242585414621e-4,-4.3432905625344e-5,-5.059844813029959e-9,-3.180265341602522e-4,-4.3340679734383175e-5,-5.054050804727019e-9,-3.1765375634226675e-4,-4.315212077889462e-5,-5.031931810784182e-9,-3.173550483018549e-4,-4.289299386726835e-5,-4.996837554368338e-9,-3.1716080997909414e-4,-4.261505262909454e-5,-4.9567039021442e-9,-3.170692069796597e-4,-4.237923706416617e-5,-4.921374850462595e-9,-3.170465026363197e-4,-4.223264659485568e-5,-4.898891858407981e-9,-3.170418960140496e-4,-4.21921256965402e-5,-4.892790866082162e-9,-3.1700761388347835e-4,-4.224278875220216e-5,-4.901672313350512e-9,-3.169131831034806e-4,-4.234911923149743e-5,-4.920678900423363e-9,-3.16749371627084e-4,-4.246978287171236e-5,-4.943593716023741e-9,-3.165243898644444e-4,-4.2568904032282556e-5,-4.964541739482594e-9,-3.1625720934575716e-4,-4.262161789567898e-5,-4.9789925323940574e-9,-3.159714090148497e-4,-4.2615163483100204e-5,-4.984192983307216e-9,-3.1569080936814757e-4,-4.254769010175503e-5,-4.979239205595006e-9,-3.154366980394452e-4,-4.242640923152246e-5,-4.964927408765917e-9,-3.1522594108550356e-4,-4.226576420878259e-5,-4.9434488536958256e-9,-3.150694594909588e-4,-4.2085617046374826e-5,-4.9179780034059015e-9,-3.1497088780468846e-4,-4.190919872197873e-5,-4.892216555795521e-9,-3.1492551795328115e-4,-4.1760510317359374e-5,-4.869937621819285e-9,-3.1491993926755705e-4,-4.166103135750512e-5,-4.85453930904946e-9,-3.1493292291119807e-4,-4.162602317937051e-5,-4.8486082924002386e-9,-3.149378852148921e-4,-4.166109759027768e-5,-4.853496717228234e-9,-3.149068763252208e-4,-4.1759869297922245e-5,-4.8689420569251265e-9,-3.1481563886056355e-4,-4.1903492821241635e-5,-4.892817724760096e-9,-3.146489018901334e-4,-4.206263788736928e-5,-4.921152563389806e-9,-3.1440486675449474e-4,-4.220199291018188e-5,-4.948556753677259e-9,-3.1409782736031844e-4,-4.2286972882281444e-5,-4.969141215356648e-9,-3.1375783301927705e-4,-4.229193221838251e-5,-4.9779020409811375e-9,-3.1342629281164673e-4,-4.2208473219180394e-5,-4.972322659694826e-9,-3.131469410284784e-4,-4.205134100763301e-5,-4.953675901336095e-9,-3.129532228356514e-4,-4.185850783786602e-5,-4.927339367737182e-9,-3.128559402293983e-4,-4.168268583803075e-5,-4.901590331357037e-9,-3.128372712174129e-4,-4.157504774094596e-5,-4.884996661975068e-9,-3.1285591758021213e-4,-4.1567376446027606e-5,-4.883435028626847e-9,-3.1286216261514294e-4,-4.166161325502891e-5,-4.898203035129861e-9,-3.128152510161355e-4,-4.1832011412133305e-5,-4.926093299613993e-9,-3.1269456478840265e-4,-4.2037319835952676e-5,-4.96108661782143e-9,-3.1250114325379443e-4,-4.2235381879465134e-5,-4.996540702951394e-9,-3.1225205877241923e-4,-4.239361488219513e-5,-5.026892948270938e-9,-3.119724750885652e-4,-4.249330688871886e-5,-5.048533140222312e-9,-3.116889276893549e-4,-4.252921835778996e-5,-5.059987008882629e-9,-3.1142503078342897e-4,-4.25069961860904e-5,-5.0616921955618265e-9,-3.111992283429283e-4,-4.244023805497469e-5,-5.055583300773006e-9,-3.1102368764590496e-4,-4.234797844643438e-5,-5.044617784933671e-9,-3.1090358734081304e-4,-4.22526006575234e-5,-5.032321067688745e-9,-3.108364399804756e-4,-4.217778740604939e-5,-5.022387283844178e-9,-3.108115257297438e-4,-4.214600986581236e-5,-5.018313830814128e-9,-3.1080993296466673e-4,-4.2175257475328325e-5,-5.023008475613783e-9,-3.1080593916080375e-4,-4.227521362395652e-5,-5.038322479284464e-9,-3.1077034837130563e-4,-4.244369565068855e-5,-5.06453984568056e-9,-3.1067585579162317e-4,-4.266468404943358e-5,-5.099969884051941e-9,-3.105035849258535e-4,-4.290936505875487e-5,-5.140877929168914e-9,-3.1024899896644803e-4,-4.314094465863473e-5,-5.181956628701638e-9,-3.0992505626402714e-4,-4.332264950955875e-5,-5.217361941575282e-9,-3.095610883380589e-4,-4.342700451466909e-5,-5.2421145403966415e-9,-3.091971222357173e-4,-4.3443817524911114e-5,-5.253502474396329e-9,-3.088746927985775e-4,-4.338445254519018e-5,-5.252067765269822e-9,-3.086262289687441e-4,-4.328075377912741e-5,-5.241813665026146e-9,-3.084657459880443e-4,-4.317815751980895e-5,-5.229427402694319e-9,-3.083838136062314e-4,-4.312402180818095e-5,-5.222569664693657e-9,-3.083492587428513e-4,-4.315408297432371e-5,-5.227650075739371e-9,-3.083181203766566e-4,-4.328165458806027e-5,-5.247856867561176e-9,-3.082471429138195e-4,-4.349411061585933e-5,-5.2822613795529054e-9,-3.081064848257633e-4,-4.375827146070421e-5,-5.3263709887758225e-9,-3.0788661043989416e-4,-4.403198008161343e-5,-5.373792020884821e-9,-3.0759759139367557e-4,-4.4276497491867025e-5,-5.418190385136207e-9,-3.072628362842785e-4,-4.4465056129220834e-5,-5.454790327401472e-9,-3.0691106900856074e-4,-4.458588788817899e-5,-5.481074258715986e-9,-3.0656967318466223e-4,-4.4640878311394534e-5,-5.496772186340735e-9,-3.0626062010192915e-4,-4.464213768265969e-5,-5.5034243148592386e-9,-3.0599865177202766e-4,-4.460833959835805e-5,-5.503787246380918e-9,-3.057908013060658e-4,-4.4561687503291136e-5,-5.501265100167681e-9,-3.0563641143263365e-4,-4.4525580714277986e-5,-5.4994619326435316e-9,-3.0552715792361276e-4,-4.4522582031122806e-5,-5.501861033144501e-9,-3.0544706109613843e-4,-4.457210286773981e-5,-5.511548919490009e-9,-0.00030537297561927964,-4.4687381552856436e-5,-5.5308628299553145e-9]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json new file mode 100644 index 000000000..2eec9421f --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_8.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":8000,"numberOfSamples":1000,"samples":[-3.0527640252829807e-4,-4.487182696660493e-5,-5.56088448082571e-9,-3.051274863200565e-4,-4.511556230951057e-5,-5.6008437940501195e-9,-3.049014822200931e-4,-4.5393887171247894e-5,-5.647698563779582e-9,-3.045865825423837e-4,-4.566978863347711e-5,-5.696284894052496e-9,-3.041902526794886e-4,-4.590165294193654e-5,-5.7403050551512475e-9,-3.0374053440293064e-4,-4.605480630272924e-5,-5.774008768966934e-9,-3.032803042778928e-4,-4.6112832816305496e-5,-5.793973590280497e-9,-3.028557483245855e-4,-4.608383761616052e-5,-5.800251345674449e-9,-3.025032355259023e-4,-4.599882516164128e-5,-5.796427523208801e-9,-3.022393949447573e-4,-4.5902896545994185e-5,-5.788631331365615e-9,-3.020574267495867e-4,-4.5842714571687194e-5,-5.7838921806700334e-9,-3.019300694661608e-4,-4.585434504667538e-5,-5.7883384069394884e-9,-3.0181769376023336e-4,-4.595468543172006e-5,-5.805682519418446e-9,-3.0167899235319e-4,-4.613834629665025e-5,-5.83635658405951e-9,-3.014813398322303e-4,-4.638044052124705e-5,-5.877534282545917e-9,-3.0120806044062887e-4,-4.664417952898078e-5,-5.924029708374941e-9,-3.008608032921932e-4,-4.689076983299546e-5,-5.969769115749644e-9,-3.004568895018775e-4,-4.70885065576558e-5,-6.009334760264992e-9,-3.000232042040917e-4,-4.7218579979817117e-5,-6.039104695872155e-9,-2.995891071912802e-4,-4.72766796425179e-5,-6.057736521969508e-9,-2.9918053358217385e-4,-4.7271135672653113e-5,-6.066024169441235e-9,-2.9881634126882297e-4,-4.721922325858296e-5,-6.066350982343671e-9,-2.9850682571005375e-4,-4.714317647578276e-5,-6.0620073426491385e-9,-2.982536857147729e-4,-4.706682514849363e-5,-6.056588919504954e-9,-2.9805063249734796e-4,-4.7013055973122464e-5,-6.053577596287479e-9,-2.978841024009395e-4,-4.700177778028711e-5,-6.0560846647952315e-9,-2.97733963612634e-4,-4.7047861809806975e-5,-6.066639640409404e-9,-2.975745746966664e-4,-4.715862391952254e-5,-6.086875521052076e-9,-2.9737697702912646e-4,-4.733079302488828e-5,-6.117026762619431e-9,-2.9711318240313096e-4,-4.754766231303244e-5,-6.1553289826818086e-9,-2.967630328757633e-4,-4.777820603997843e-5,-6.1976547684464505e-9,-2.963225516133362e-4,-4.7980702799556336e-5,-6.237878353608434e-9,-2.9581034269964766e-4,-4.8112531767448336e-5,-6.26929277722192e-9,-2.952671701271256e-4,-4.8144449769795835e-5,-6.286810452998715e-9,-2.9474584957997816e-4,-4.807330163392616e-5,-6.28897999422168e-9,-2.942942146728656e-4,-4.7925741507049555e-5,-6.278697823265868e-9,-2.939390776646052e-4,-4.774982986598883e-5,-6.2621933111198565e-9,-2.9367888471910724e-4,-4.759858957460034e-5,-6.246887112949443e-9,-2.9348722961036977e-4,-4.751366495959348e-5,-6.239195834786848e-9,-2.933236015115482e-4,-4.7515401306169104e-5,-6.243051945843658e-9,-2.9314581436119905e-4,-4.760093779409941e-5,-6.2593279168203955e-9,-2.9292007500896937e-4,-4.774844549298213e-5,-6.286013467788338e-9,-2.926269983387905e-4,-4.792463505513392e-5,-6.318926256564662e-9,-2.9226350769051096e-4,-4.80930810595307e-5,-6.352759512595941e-9,-2.918412941194005e-4,-4.822168516898902e-5,-6.382264012712696e-9,-2.9138274761924426e-4,-4.8288192173938596e-5,-6.4033284884177525e-9,-2.9091546827443674e-4,-4.828307144331461e-5,-6.4137142155758484e-9,-2.904666459630382e-4,-4.820960531850297e-5,-6.413290100567614e-9,-2.9005845372039675e-4,-4.808169188193544e-5,-6.403779607548024e-9,-2.897051121066428e-4,-4.7920298339887756e-5,-6.388175539851937e-9,-2.894117280467004e-4,-4.77495594070045e-5,-6.3700487926475646e-9,-2.891745460224369e-4,-4.7593309240161246e-5,-6.352958916462981e-9,-2.889819981834109e-4,-4.7472392700331755e-5,-6.340071065896678e-9,-2.8881605249833365e-4,-4.740260960082055e-5,-6.333942633116508e-9,-2.886536932128631e-4,-4.739292957383811e-5,-6.336355114475078e-9,-2.884687014832789e-4,-4.7443667570689896e-5,-6.348050662755428e-9,-2.8823427250380447e-4,-4.754452904089668e-5,-6.368308311532382e-9,-2.879272735231633e-4,-4.767303651414079e-5,-6.394467888137689e-9,-2.875345818250315e-4,-4.7794856179294424e-5,-6.4217381728864196e-9,-2.8706055734247936e-4,-4.786832012302628e-5,-6.443756519509059e-9,-2.865324198422822e-4,-4.785486234755549e-5,-6.4542037210419195e-9,-2.859983895327293e-4,-4.773390713864742e-5,-6.449179015088165e-9,-2.8551497623516194e-4,-4.7515537099475336e-5,-6.429222290163076e-9,-2.8512656698742036e-4,-4.724172825041583e-5,-6.399602792241161e-9,-2.8484791237568235e-4,-4.697228518879425e-5,-6.368414825098121e-9,-2.846599731981497e-4,-4.676227057336778e-5,-6.343524830079535e-9,-2.845204990113826e-4,-4.664360730421715e-5,-6.330077698450703e-9,-2.8438137789211793e-4,-4.661903031892221e-5,-6.32954910609419e-9,-2.842033332610527e-4,-4.666740117899054e-5,-6.340163616828402e-9,-2.8396352830062366e-4,-4.6754274987887116e-5,-6.357961127061933e-9,-2.836566692220362e-4,-4.684229725179311e-5,-6.377959739889069e-9,-2.8329216427076527e-4,-4.689886773239183e-5,-6.395189096969708e-9,-2.828896488527907e-4,-4.6900720390375284e-5,-6.405540596281919e-9,-2.824742018907562e-4,-4.6836037546351875e-5,-6.4064023526000905e-9,-2.8207178859335354e-4,-4.670471097933904e-5,-6.397002591025266e-9,-2.817052464373959e-4,-4.6517083949337426e-5,-6.378389721142845e-9,-2.8139115347079264e-4,-4.629149712487325e-5,-6.3530658178796655e-9,-2.811378256204399e-4,-4.605106192105769e-5,-6.324396845660935e-9,-2.8094456582733565e-4,-4.582011369839805e-5,-6.295969795469077e-9,-2.8080213121061873e-4,-4.562084808863251e-5,-6.271061910825657e-9,-2.806941282722342e-4,-4.547056083835451e-5,-6.252305778500468e-9,-2.805989529923734e-4,-4.537959014034061e-5,-6.241511789741509e-9,-2.80492067241958e-4,-4.5349843601162954e-5,-6.239532828776588e-9,-2.803485913613245e-4,-4.5373805665704785e-5,-6.246068068716576e-9,-2.8014639891832464e-4,-4.543399639996473e-5,-6.259380228216586e-9,-2.7987013346108646e-4,-4.550321157816095e-5,-6.276047783203556e-9,-2.795162996405821e-4,-4.5546626057891795e-5,-6.291045688354151e-9,-2.790984739623287e-4,-4.5527321372703615e-5,-6.298505516465384e-9,-2.7865004000894166e-4,-4.541620148794469e-5,-6.2933199008508685e-9,-2.7822043288384707e-4,-4.520484869900707e-5,-6.273276588202333e-9,-2.7786184532760936e-4,-4.4915535087074116e-5,-6.240723143326448e-9,-2.776091852793529e-4,-4.459975553570474e-5,-6.202458787212566e-9,-2.774638632702066e-4,-4.432123225548417e-5,-6.167368360824802e-9,-2.7739275622409024e-4,-4.41307893297388e-5,-6.142942429461774e-9,-2.7734363791847937e-4,-4.404793703195258e-5,-6.132712569902154e-9,-2.772666481119829e-4,-4.405873879426259e-5,-6.135803693451539e-9,-2.7712954630060494e-4,-4.41272344392883e-5,-6.148198003690473e-9,-2.769220926915838e-4,-4.421078330515423e-5,-6.164515668643785e-9,-2.7665243775120893e-4,-4.4271847046803456e-5,-6.179465722684056e-9,-2.7634044414996943e-4,-4.42840858576599e-5,-6.188763867311319e-9,-2.760112787880964e-4,-4.4233969441495255e-5,-6.1896325079837635e-9,-2.7569053678467995e-4,-4.4119908832911274e-5,-6.1810143630256235e-9,-2.7540081443001705e-4,-4.395037973603709e-5,-6.1635500652351195e-9,-2.7515925763830574e-4,-4.374163186724933e-5,-6.13931893200916e-9,-2.7497583229343773e-4,-4.351509382685275e-5,-6.1113765985356755e-9,-2.7485228599034487e-4,-4.3294504323835476e-5,-6.083191373407955e-9,-2.747818899337699e-4,-4.3102814240736015e-5,-6.0580978536060394e-9,-2.7475014030275356e-4,-4.2959058861573174e-5,-6.038863549547172e-9,-2.747364727847155e-4,-4.287561578709453e-5,-6.027414092691353e-9,-2.7471679197166814e-4,-4.2856211898555225e-5,-6.024680664675889e-9,-2.74666552518033e-4,-4.2894856634732136e-5,-6.0304870842090665e-9,-2.745641634544586e-4,-4.297583426922976e-5,-6.043429961128174e-9,-2.7439449831047824e-4,-4.307484329777695e-5,-6.060781782144661e-9,-2.7415239183585174e-4,-4.316139154284506e-5,-6.078538519547611e-9,-2.738458939963984e-4,-4.320289628151456e-5,-6.0918223659286445e-9,-2.7349833665268886e-4,-4.317111271140737e-5,-6.095829254040278e-9,-2.731473286401864e-4,-4.305077016877184e-5,-6.087300751131777e-9,-2.728384066406977e-4,-4.284850797286421e-5,-6.0661306830069746e-9,-2.726122464122091e-4,-4.2597682445614436e-5,-6.036317211131248e-9,-2.724883882208636e-4,-4.2353186226421395e-5,-6.005346149629137e-9,-2.724538993112942e-4,-4.21739660621937e-5,-5.981721324392774e-9,-2.7246601864680027e-4,-4.209994110375406e-5,-5.971667694606237e-9,-2.724694960632973e-4,-4.2136627145050584e-5,-5.976871636177898e-9,-2.724184831524113e-4,-4.225643997788255e-5,-5.9944559253544774e-9,-2.7229051896981396e-4,-4.241362759713718e-5,-6.018773549341146e-9,-2.720878961454436e-4,-4.2562043557314734e-5,-6.043635716054438e-9,-2.718303929497391e-4,-4.266714123706157e-5,-6.063913242192316e-9,-2.715458512132313e-4,-4.271024379125761e-5,-6.076285881259704e-9,-2.712626659453091e-4,-4.268748746246162e-5,-6.07938776767281e-9,-2.710052329722968e-4,-4.260653559518088e-5,-6.073631332430156e-9,-2.707916949070718e-4,-4.248307887576607e-5,-6.060863861100873e-9,-2.7063291676093104e-4,-4.233782096456377e-5,-6.043919283576518e-9,-2.70531999054325e-4,-4.2193858972839276e-5,-6.026112658845783e-9,-2.7048412159524855e-4,-4.207417276834723e-5,-6.010749252660998e-9,-2.704768085276078e-4,-4.199898085891688e-5,-6.0007083249929064e-9,-2.7049091718653486e-4,-4.198292846456885e-5,-5.998122765150181e-9,-2.705026716692996e-4,-4.203245930769175e-5,-6.0041500657964715e-9,-2.704867786001442e-4,-4.2143960157053555e-5,-6.018813110137525e-9,-2.7042033326989443e-4,-4.2303217237346e-5,-6.0408918160634616e-9,-2.702869966792254e-4,-4.248659500899885e-5,-6.067897441023674e-9,-2.7008072908028737e-4,-4.26641123975258e-5,-6.096212887106141e-9,-2.698083301299173e-4,-4.2804202514864496e-5,-6.121495193355481e-9,-2.6949017078992116e-4,-4.287971029548579e-5,-6.139410707238995e-9,-2.6915846953213103e-4,-4.287457712691834e-5,-6.146692366322419e-9,-2.688523188530164e-4,-4.2790136468926805e-5,-6.142330933965789e-9,-2.6860905054935876e-4,-4.2648942394378234e-5,-6.128480097984698e-9,-2.684529386021688e-4,-4.249325511328419e-5,-6.110525799006696e-9,-2.683846561272461e-4,-4.237577162193681e-5,-6.0958916495610374e-9,-2.6837713845480256e-4,-4.2343242447415576e-5,-6.091676533973367e-9,-2.6838259865424467e-4,-4.241897119821026e-5,-6.1020278393601044e-9,-2.6834954243159544e-4,-4.259356052706968e-5,-6.126618946744287e-9,-2.682414538672124e-4,-4.282968580925502e-5,-6.161071746178656e-9,-2.680473788683876e-4,-4.307777590451198e-5,-6.198928228542621e-9,-2.6778068952418554e-4,-4.329323584064263e-5,-6.233932842908828e-9,-2.6746984498891765e-4,-4.3447294758245534e-5,-6.261585257801009e-9,-2.6714767994234935e-4,-4.3529579126087075e-5,-6.279696539448954e-9,-2.6684354540698494e-4,-4.3545106782298875e-5,-6.288235271926127e-9,-2.6657927046700944e-4,-4.3509317188260445e-5,-6.288838671033637e-9,-2.6636794026195363e-4,-4.3443465401146905e-5,-6.284232359286678e-9,-2.662140688653375e-4,-4.33711394559145e-5,-6.277670357631493e-9,-2.661141777281877e-4,-4.331570058397092e-5,-6.272450417208355e-9,-2.660574130223562e-4,-4.329813146063895e-5,-6.271533343649169e-9,-2.6602631028516745e-4,-4.3334832510506525e-5,-6.277259574999488e-9,-2.6599810856047266e-4,-4.3435186752350394e-5,-6.291119283070944e-9,-2.6594709819864e-4,-4.35991710667151e-5,-6.313534449691571e-9,-2.6584826187483416e-4,-4.3815728146144786e-5,-6.3436577175095264e-9,-2.6568197080015167e-4,-4.406282185693006e-5,-6.379260979809167e-9,-2.654388737832523e-4,-4.4309976961368614e-5,-6.416844899921613e-9,-2.651235904796523e-4,-4.452352360454744e-5,-6.45208973946681e-9,-2.6475574490715504e-4,-4.467379291793127e-5,-6.480660100582804e-9,-2.643674413816663e-4,-4.474263772198858e-5,-6.499235785255884e-9,-2.639972203386808e-4,-4.472932230357101e-5,-6.506524425656316e-9,-2.636814333534693e-4,-4.4652981742684745e-5,-6.50394943475184e-9,-2.6344474410546685e-4,-4.455031096217054e-5,-6.4957052750673075e-9,-2.6329215242018296e-4,-4.446797824163044e-5,-6.487971527226249e-9,-2.6320539661309406e-4,-4.445066132419316e-5,-6.487318143828218e-9,-2.63146231141766e-4,-4.452761326611089e-5,-6.498693327228091e-9,-2.630670795117471e-4,-4.4702593314460794e-5,-6.523735117410233e-9,-2.629259962418986e-4,-4.495205403355389e-5,-6.560195481816707e-9,-2.626998326199566e-4,-4.523322969000845e-5,-6.6028055138425835e-9,-2.6238984542081514e-4,-4.5498615964264204e-5,-6.645151128486782e-9,-2.620181139265042e-4,-4.57101034480172e-5,-6.681643636040315e-9,-2.6161796896905014e-4,-4.584720776675456e-5,-6.7088001834994565e-9,-2.6122365300701173e-4,-4.590801043953323e-5,-6.725594759670876e-9,-2.608629732320002e-4,-4.590508421570969e-5,-6.733110680725014e-9,-2.605538971319134e-4,-4.585973386898697e-5,-6.733869753505527e-9,-2.6030410219870376e-4,-4.5796853823059685e-5,-6.731122265893311e-9,-2.601120119629486e-4,-4.574121346938611e-5,-6.728248726724007e-9,-2.5996821459528486e-4,-4.571499884470834e-5,-6.728333811525041e-9,-2.5985675252670267e-4,-4.573601546615178e-5,-6.733900781581118e-9,-2.597563470776258e-4,-4.581593891770877e-5,-6.7467347208660815e-9,-2.596420276961034e-4,-4.5958327928148174e-5,-6.76770494879153e-9,-2.594877524327709e-4,-4.6156630892450285e-5,-6.796534200413236e-9,-2.5927042693107434e-4,-4.6392942692009576e-5,-6.8315565589601714e-9,-2.589751849875842e-4,-4.663871238482509e-5,-6.86962752289666e-9,-2.586008062635789e-4,-4.685864046342157e-5,-6.906416881867135e-9,-2.5816311466290005e-4,-4.7018104873896896e-5,-6.937219567577798e-9,-2.5769402554871504e-4,-4.70926588010539e-5,-6.9581636155644655e-9,-2.5723517884218273e-4,-4.707644773329669e-5,-6.967428938305518e-9,-2.568273908815006e-4,-4.6986025040791123e-5,-6.966001210496018e-9,-2.564992393431867e-4,-4.685748280218821e-5,-6.957630999254399e-9,-2.5625871902160277e-4,-4.6737400412949545e-5,-6.947966529409689e-9,-2.5609074998136574e-4,-4.667043573132832e-5,-6.943105351110571e-9,-2.5596122517727485e-4,-4.6687347367702306e-5,-6.947967062704738e-9,-2.5582634783583117e-4,-4.6796866950713174e-5,-6.964938644351132e-9,-2.5564461158371896e-4,-4.698373076282578e-5,-6.993209196686726e-9,-2.553879109156633e-4,-4.7213518226825917E-05,-7.029044733220987e-9,-2.5504832832596024e-4,-4.744277599023395e-5,-7.066933407213379e-9,-2.5463858429774843e-4,-4.7630969964505535e-5,-7.1011838454172516e-9,-2.541865650862485e-4,-4.775023325017012e-5,-7.127396703046114e-9,-2.537265402404863e-4,-4.7790107831489385e-5,-7.143345909601783e-9,-2.532904918374822e-4,-4.775683549761495e-5,-7.1491178104008635e-9,-2.529021042786563e-4,-4.766889086299671e-5,-7.146663004807935e-9,-2.525741732148423e-4,-4.7551249353078e-5,-7.139062192878236e-9,-2.5230871169483677e-4,-4.743029000875771e-5,-7.129782907503167e-9,-2.5209851175530824e-4,-4.733012368995658e-5,-7.12209759254885e-9,-2.519291245187472e-4,-4.7270279788107355e-5,-7.1187265860613594e-9,-2.517806968882801e-4,-4.726422556842384e-5,-7.12166746585097e-9,-2.5162963986732293e-4,-4.731809415808857e-5,-7.132097650423624e-9,-2.514505510713131e-4,-4.742927313984141e-5,-7.1502341423829864e-9,-2.512190030433243e-4,-4.758501628393123e-5,-7.175103678264232e-9,-2.5091568236328035e-4,-4.7761815907209246e-5,-7.204305121348925e-9,-2.5053181294401e-4,-4.7926849500478765e-5,-7.233991717484305e-9,-2.500746237911642e-4,-4.804301276238442e-5,-7.259360514494356e-9,-2.495701519604955e-4,-4.8078046570921506e-5,-7.275783141609628e-9,-2.490601882212913e-4,-4.8015746621047336e-5,-7.280321967292176e-9,-2.4859206990471175e-4,-4.786450499113676e-5,-7.272987851368456e-9,-2.4820404096295365e-4,-4.7657974491023386e-5,-7.2570490683069305e-9,-2.479123719305355e-4,-4.744593983612639e-5,-7.238137844085153e-9,-2.477062542180496e-4,-4.7278801363755583e-5,-7.2225323219480234e-9,-2.475523859045091e-4,-4.719243023421515e-5,-7.2153509223338515e-9,-2.4740634073176207e-4,-4.7199163254914456e-5,-7.21928276128765e-9,-2.472256149075255e-4,-4.728689651818537e-5,-7.234113502680999e-9,-2.469800996566623e-4,-4.742481447800407e-5,-7.2570090226968695e-9,-2.4665781472638505e-4,-4.757279635380423e-5,-7.283374548153914e-9,-2.462655369996502e-4,-4.769151536169288e-5,-7.308038135183422e-9,-2.458251322065457e-4,-4.775085456159175e-5,-7.326465854721028e-9,-2.4536711100036463e-4,-4.77350886691006e-5,-7.3357152755733405e-9,-2.4492329122390537e-4,-4.764420066221715e-5,-7.334911212083219e-9,-2.4452039783219196e-4,-4.749169496663902e-5,-7.3251748443696005e-9,-2.441758732145271e-4,-4.7300134577938174e-5,-7.309112821670338e-9,-2.4389627170717684e-4,-4.7095968591426874e-5,-7.2900891206745445e-9,-2.4367780651202367e-4,-4.6904922721911e-5,-7.2715143086660904e-9,-2.4350820404063506e-4,-4.674862028056588e-5,-7.2563236900772534e-9,-2.4336901910568495e-4,-4.6642494199979074e-5,-7.246701350541432e-9,-2.4323787902715116e-4,-4.6594604978692496e-5,-7.243991435989502e-9,-2.4309057272598025e-4,-4.6604855006113405e-5,-7.248666445835073e-9,-2.4290326713360635e-4,-4.666429753503088e-5,-7.260234391154556e-9,-2.4265533867043101e-4,-4.67546250155109e-5,-7.2770527231963495e-9,-2.4233328045250883e-4,-4.684845105661854e-5,-7.29615811529741e-9,-2.4193563237893614e-4,-4.6911622727816726e-5,-7.313363425619466e-9,-2.4147769061437337e-4,-4.690904210391057e-5,-7.323911274472526e-9,-2.409931846698145e-4,-4.68145030450435e-5,-7.3237831866979765e-9,-2.405293638181594e-4,-4.6622304985804496e-5,-7.311327256640174e-9,-2.4013397134164407e-4,-4.6354911420302454e-5,-7.288398575368516e-9,-2.3983792521253927e-4,-4.606009583001144e-5,-7.260171753226957e-9,-2.396424964711392e-4,-4.579591722183568e-5,-7.233460507133913e-9,-2.3951876787466002e-4,-4.561007369104896e-5,-7.21434469153871e-9,-2.394196251219914e-4,-4.552433842374012e-5,-7.206304347525716e-9,-2.3929702425245816e-4,-4.553082614515197e-5,-7.209572961363757e-9,-2.3911604156302504e-4,-4.559902693265397e-5,-7.221607636814043e-9,-2.3886148969033618e-4,-4.56878141259867e-5,-7.238141334743658e-9,-2.385376124584638e-4,-4.57569458542221e-5,-7.25434375948497e-9,-2.381635151221613e-4,-4.5775227331894453e-5,-7.265844606590987e-9,-2.3776689984276165e-4,-4.57248113055291e-5,-7.26951760352044e-9,-2.3737775512568452e-4,-4.560224089873021e-5,-7.26396202658587e-9,-2.3702288262502963e-4,-4.541701560695537e-5,-7.249620171308552e-9,-2.3672182048234104e-4,-4.518837706556744e-5,-7.228512886555455e-9,-2.3648451210419064e-4,-4.494110071809932e-5,-7.203679129923876e-9,-2.3631073766417756e-4,-4.470112417759971e-5,-7.1784915077864556e-9,-2.3619104748406788e-4,-4.449166637344944e-5,-7.156032804897266e-9,-2.361087730659606e-4,-4.433028327220373e-5,-7.138674148007875e-9,-2.3604256281260482e-4,-4.422705852302139e-5,-7.1278965459513375e-9,-2.3596896071219697e-4,-4.41837594790764e-5,-7.124282211477298e-9,-2.358648734407393e-4,-4.419359846967748e-5,-7.127541904743606e-9,-2.3571005457793368e-4,-4.424139308519803e-5,-7.136477505700135e-9,-2.3548986076137152e-4,-4.4304182265018096e-5,-7.148875985336727e-9,-2.3519855436410849e-4,-4.435271161882365e-5,-7.16145714276836e-9,-2.348430390860336e-4,-4.4354724701945077e-5,-7.170110582162483e-9,-2.3444587375598763e-4,-4.428117792866847e-5,-7.170657306550671e-9,-2.3404509111068765e-4,-4.411557127942225e-5,-7.1601656476032516e-9,-2.3368771973065835e-4,-4.386412570504797e-5,-7.138447255205115e-9,-2.334157329157928e-4,-4.356117057573164e-5,-7.108920211252188e-9,-2.3324859251575434e-4,-4.326304457334257e-5,-7.077986722810363e-9,-2.3317225159038513e-4,-4.3029164658112595e-5,-7.0528241170588876e-9,-2.3314325821755143e-4,-4.289880884221161e-5,-7.038651316312173e-9,-2.3310674475310233e-4,-4.287707539508815e-5,-7.037006731343113e-9,-2.330173793949718e-4,-4.2937138101060195e-5,-7.045793591462278e-9,-2.3285221519255721e-4,-4.303448249497462e-5,-7.060613085178226e-9,-2.3261221161084732e-4,-4.312326355963217e-5,-7.076380098752534e-9,-2.3231616237874106e-4,-4.3167782922615494e-5,-7.0885642907420745e-9,-2.3199226213489643e-4,-4.3147504709399666e-5,-7.093925360427784e-9,-2.3167066135599025e-4,-4.305722178644823e-5,-7.090854405127532e-9,-2.3137815592412457e-4,-4.290464072813479e-5,-7.079431225173229e-9,-2.3113482317374794e-4,-4.2706990561187926e-5,-7.061239222047379e-9,-2.3095210624270325e-4,-4.248733394858226e-5,-7.0389514644621475e-9,-2.3083209319112942e-4,-4.22708356697799e-5,-7.0157556508521975e-9,-2.3076787058155768e-4,-4.208124244565444e-5,-6.994754152444318e-9,-2.3074481404720975e-4,-4.193779429781794e-5,-6.978475418029599e-9,-2.3074269629111773e-4,-4.185278131262165e-5,-6.9685812919441475e-9,-2.3073838954341724e-4,-4.183002690679065e-5,-6.9657828504140465e-9,-2.307087773182823e-4,-4.1864416184094224e-5,-6.969890191920407e-9,-2.3063358371772487e-4,-4.19423194920427e-5,-6.979881232260712e-9,-2.304980447362638e-4,-4.204276810737836e-5,-6.993919691136392e-9,-2.3029541532778425e-4,-4.2139396145542684e-5,-7.00935383163725e-9,-2.3002929420596648e-4,-4.220331442258605e-5,-7.022821179996584e-9,-2.297155277725766e-4,-4.220735882242904e-5,-7.0306406913778314e-9,-2.2938274641947577e-4,-4.2132214476566026e-5,-7.029632424365228e-9,-2.2906972807424893e-4,-4.197407643695822e-5,-7.018296801761733e-9,-2.2881761972917472e-4,-4.175160042946605e-5,-6.997961873684011e-9,-2.286567093282979e-4,-4.15075256296687e-5,-6.9732029722847966e-9,-2.2859182172845228e-4,-4.129977684881916e-5,-6.9508561159118375e-9,-2.2859518852719337e-4,-4.118158264999498e-5,-6.937623078004585e-9,-2.2861445669427582e-4,-4.1179317366699686e-5,-6.937368890191579e-9,-2.2859373178187907e-4,-4.128165726085842e-5,-6.949709434593278e-9,-2.2849535207625107e-4,-4.144683429672747e-5,-6.970641653126126e-9,-2.283102601143957e-4,-4.162180946726997e-5,-6.994513297007544e-9,-2.280546314648973e-4,-4.1760936140705576e-5,-7.015996457807604e-9,-2.2775905137933017e-4,-4.1836162324814815e-5,-7.0312662464705675e-9,-2.2745750303615093e-4,-4.183854159207291e-5,-7.038384862713035e-9,-2.2717978153226345e-4,-4.1774688473891304e-5,-7.037214328561364e-9,-2.269476550317656e-4,-4.166168283592476e-5,-7.029107904443636e-9,-2.2677360769187676e-4,-4.152239765949198e-5,-7.016489998134974e-9,-2.2666086428735168e-4,-4.13817553708349e-5,-7.002360297324509e-9,-2.2660400530891817e-4,-4.126365474609324e-5,-6.989766583218536e-9,-2.2659004542151717e-4,-4.1188304668478054e-5,-6.981333927974789e-9,-2.266000219235072e-4,-4.116989011754661e-5,-6.978931288333946e-9,-2.266111881676761e-4,-4.12146495166316e-5,-6.9835033237536505e-9,-2.2659985001449061e-4,-4.131967774449151e-5,-6.9950455254666655e-9,-2.2654460748588225e-4,-4.147283960401956e-5,-7.012666563520272e-9,-2.264295628693442e-4,-4.165394006870694e-5,-7.034672741319516e-9,-2.2624709886908756e-4,-4.183709352380845e-5,-7.058654437906543e-9,-2.259998866238783e-4,-4.1994173550205136e-5,-7.081632424729571e-9,-2.2570180047419192e-4,-4.20991362790095e-5,-7.100361989265034e-9,-2.2537742095192945e-4,-4.213298776272619e-5,-7.111886301353217e-9,-2.2505959382885995e-4,-4.208912506154797e-5,-7.114348718520941e-9,-2.2478421898691062e-4,-4.197821401236689e-5,-7.107904138739319e-9,-2.2458174592226204e-4,-4.1830607186345735e-5,-7.0953504217620375e-9,-2.244663606137209e-4,-4.169327376221295e-5,-7.081979987657558e-9,-2.2442665203386655e-4,-4.1618683723854355e-5,-7.074284006802257e-9,-2.2442408061700852e-4,-4.1646821969372816e-5,-7.077692877238242e-9,-2.2440397415766895e-4,-4.178786877968106e-5,-7.0943342038050634e-9,-2.2431615173148974e-4,-4.201628734466668e-5,-7.122132208245681e-9,-2.2413418489370047e-4,-4.2281316841771065e-5,-7.155838491573877e-9,-2.238625036955378e-4,-4.252762716447894e-5,-7.189267752364687e-9,-2.2352958981585374e-4,-4.271389191467571e-5,-7.217364886846549e-9,-2.231742512295794e-4,-4.2821232086966055e-5,-7.2372470959088515e-9,-2.2283320562756947e-4,-4.285179730744506e-5,-7.2482661351785805e-9,-2.2253387205703278e-4,-4.282232746248896e-5,-7.2515555960049095e-9,-2.2229206566917885e-4,-4.275713751688142e-5,-7.2494356512215224e-9,-2.2211260756237194e-4,-4.2682685880708425e-5,-7.244838453971768e-9,-2.2199099538278396e-4,-4.262399641811782e-5,-7.240796077498677e-9,-2.2191514949620428e-4,-4.260230497054901e-5,-7.240011891369483e-9,-2.2186707232957353e-4,-4.26332616889838e-5,-7.244543832697758e-9,-2.2182464125580366e-4,-4.2725338241283515e-5,-7.255615619695993e-9,-2.217638453501513e-4,-4.287842690194515e-5,-7.273534478793906e-9,-2.2166170729793913e-4,-4.308298693357485e-5,-7.2976765517466445e-9,-2.2149980429336165e-4,-4.332033803452491e-5,-7.326522432477613e-9,-2.2126785688274673e-4,-4.3564584276414805e-5,-7.357751075488498e-9,-2.20966584781167e-4,-4.3786290015324124e-5,-7.388436436288333e-9,-2.2060898292754956e-4,-4.395759483340187e-5,-7.415404439706891e-9,-2.202193504707468e-4,-4.405796910551689e-5,-7.435775583366592e-9,-2.1982983813928416e-4,-4.407947682940211e-5,-7.4476444040565705e-9,-2.1947474914701923e-4,-4.403040203489803e-5,-7.450766846569757e-9,-2.1918316392070605e-4,-4.393615767618415e-5,-7.447040423172644e-9,-2.1897091886597989e-4,-4.3836355658260945e-5,-7.440501159279104e-9,-2.188338255077648e-4,-4.3777167322247025e-5,-7.4366017543605706e-9,-2.187450180632313e-4,-4.379926707359548e-5,-7.440747299185002e-9,-2.1865951766138927e-4,-4.3924079338995526e-5,-7.456451577868975e-9,-2.1852701523895825e-4,-4.414394644131482e-5,-7.48388495394003e-9,-2.1830915181893224e-4,-4.442241000664643e-5,-7.51964660486929e-9,-2.1799327092026865e-4,-4.47064341649404e-5,-7.558021886353412e-9,-2.1759542948186208e-4,-4.4945093539923776e-5,-7.593080121112747e-9,-2.1715190572061313e-4,-4.510525927973701e-5,-7.62051102463403e-9,-2.1670511352975532e-4,-4.5177775919498044e-5,-7.63846614779529e-9,-2.1629130702600425e-4,-4.5174263035486545e-5,-7.647414111500688e-9,-2.1593400226015044e-4,-4.511913434864514e-5,-7.649461867526958e-9,-2.1564283671687278e-4,-4.504151932089862e-5,-7.647573809127245e-9,-2.1541555700511315e-4,-4.496945565191675e-5,-7.644907915657562e-9,-2.152409460728591e-4,-4.4926547873120016E-05,-7.644326527091175e-9,-2.1510150205944102e-4,-4.493027145003056e-5,-7.648080390942638e-9,-2.1497560662559327e-4,-4.499101379307958e-5,-7.65764086825275e-9,-2.1483945926710325e-4,-4.511125926355644e-5,-7.673632641449619e-9,-2.1466926637521481e-4,-4.528477274004901e-5,-7.695803268049495e-9,-2.144441173207301e-4,-4.549613641988964e-5,-7.722992976764426e-9,-2.1414962209211983e-4,-4.572138551931352e-5,-7.753133503949428e-9,-2.137817825713578e-4,-4.5930557875204e-5,-7.783365806364265e-9,-2.1334992695909555e-4,-4.609259275443571e-5,-7.810385927253544e-9,-2.1287718132165904e-4,-4.6182138061975344e-5,-7.831058043246478e-9,-2.123972901802133e-4,-4.618667111745394e-5,-7.843194529569795e-9,-2.1194776550871445e-4,-4.611156504767954e-5,-7.846275859882824e-9,-2.1156084382754122e-4,-4.598097245517623e-5,-7.841849026160612e-9,-2.1125475027746477e-4,-4.5833615902049135e-5,-7.833415837621815e-9,-2.1102786191385352e-4,-4.57141563789811e-5,-7.825754714870187e-9,-2.1085766176323766e-4,-4.5662121102797614e-5,-7.823773717687805e-9,-2.1070526783781765e-4,-4.570112440445812e-5,-7.831148800367581e-9,-2.1052503260910168e-4,-4.5831388471697066e-5,-7.84914193292144e-9,-2.1027715631769618e-4,-4.602835716858338e-5,-7.876058836978009e-9,-2.0993957436240816e-4,-4.6248926026246374e-5,-7.90766713758257e-9,-2.095146194759454e-4,-4.644402823389973e-5,-7.938509723459188e-9,-2.0902749841148404e-4,-4.6573103373786205e-5,-7.963593692431587e-9,-2.085173003005473e-4,-4.6614726939852604e-5,-7.979751223426029e-9,-2.080247685004384e-4,-4.656971988276465e-5,-7.986202202748241e-9,-2.0758195037667867e-4,-4.645702153575651e-5,-7.984303236040702e-9,-2.0720680107128868e-4,-4.630568678322192e-5,-7.976805592462343e-9,-2.069027746736158e-4,-4.6146864470554793E-05,-7.967006829227965e-9,-2.0666149949068237e-4,-4.6008053738656595e-5,-7.958051544835984e-9,-2.0646643337144435e-4,-4.591001322147901e-5,-7.952478950941206e-9,-2.0629619473845173e-4,-4.586558575032321e-5,-7.952010523962518e-9,-2.0612715730170046e-4,-4.587946155808738e-5,-7.957511462395227e-9,-2.0593551752786214e-4,-4.594814009737746e-5,-7.969025447952002e-9,-2.0569936999224403e-4,-4.6059814191126656e-5,-7.985789917193825e-9,-2.054013396767555e-4,-4.619444426954505e-5,-8.006201300389058e-9,-2.0503200586908336e-4,-4.632476440606799e-5,-8.027795774410303e-9,-2.0459370977526643e-4,-4.6419232557928356e-5,-8.04739911864323e-9,-2.0410341514187733e-4,-4.644771828424737e-5,-8.061606874456355e-9,-2.0359249297940358e-4,-4.6389591386022976e-5,-8.06761967917358e-9,-2.0310152417526018e-4,-4.6241943470151586e-5,-8.064208675557398e-9,-2.026701314330422e-4,-4.602412220191169e-5,-8.05238930586289e-9,-2.0232482212882342e-4,-4.5775201703916056e-5,-8.035415203185357e-9,-2.0206981769589567e-4,-4.5543952383211005e-5,-8.017995799141722e-9,-2.0188503857131567e-4,-4.5374719563007136e-5,-8.005002937932091e-9,-2.0173208974531864e-4,-4.5294685661682146e-5,-8.000132839061242e-9,-2.0156558865288865e-4,-4.530694102432007e-5,-8.004940251523124e-9,-2.0134563404935994e-4,-4.5390862347908655e-5,-8.018476540387911e-9,-2.010477628284383e-4,-4.5508700213428396e-5,-8.037583629336856e-9,-2.0066816008643582e-4,-4.56159424839469e-5,-8.05775420557668e-9,-2.002233040454102e-4,-4.5672547498502866e-5,-8.074324603901956e-9,-1.9974456130923202e-4,-4.5652156194690424e-5,-8.083656540042794e-9,-1.992695170896543e-4,-4.554701856445397e-5,-8.083957366931921e-9,-1.9883270591920156e-4,-4.5367698049175715e-5,-8.075522287619769e-9,-1.9845841745310465e-4,-4.513832170771045e-5,-8.060398815725766e-9,-1.981572124953109e-4,-4.488951139782889e-5,-8.041672208553757e-9,-1.9792619199168255e-4,-4.46514605035761e-5,-8.022654713173082e-9,-1.97751818665741e-4,-4.444885607769098e-5,-8.006221420156825e-9,-1.9761372928278598e-4,-4.429815409582809e-5,-7.994418534127477e-9,-1.9748834183331958e-4,-4.4206787770554826e-5,-7.988349103172298e-9,-1.9735172150645567e-4,-4.417347840913245e-5,-7.988243219864344e-9,-1.9718177685405577e-4,-4.4188897515318655e-5,-7.993577576316224e-9,-1.969602185929472e-4,-4.423633228093872e-5,-8.003137811219496e-9,-1.96674791367231e-4,-4.429249144944042e-5,-8.01500158984719e-9,-1.9632209229852586e-4,-4.43290434847933e-5,-8.026530943997656e-9,-1.9591072087203853e-4,-4.4315855466975366e-5,-8.03455558004738e-9,-1.9546352222861362e-4,-4.422685189198833e-5,-8.035926730100295e-9,-1.9501665604001342e-4,-4.404835137258371e-5,-8.028456381532183e-9,-1.9461311284592976e-4,-4.3787482447394696e-5,-8.011956426634773e-9,-1.9429036612252486e-4,-4.3475903590539156e-5,-7.988819905738023e-9,-1.9406609579109184e-4,-4.31641133352837e-5,-7.963631507898714e-9,-1.939293801808378e-4,-4.290607476846081e-5,-7.941776010191559e-9,-1.9384326424020214e-4,-4.274050836180446e-5,-7.927647618378034e-9,-1.9375801371840964e-4,-4.267820492195053e-5,-7.923311832665135e-9,-1.9362806935360174e-4,-4.270088509049269e-5,-7.928124868965717e-9,-1.934249241067107e-4,-4.277008015595093e-5,-7.93923136862352e-9,-1.931422172148227e-4,-4.284026359050476e-5,-7.952533831849908e-9,-1.9279378906395382e-4,-4.287086605432226e-5,-7.963753390058145e-9,-1.9240746774724533e-4,-4.283438753175265e-5,-7.96935681810304e-9,-1.9201729184363728e-4,-4.272004332166115e-5,-7.967224995384466e-9,-1.9165604145344355e-4,-4.253352928312996e-5,-7.956980058119363e-9,-1.9134921912310286e-4,-4.229384282667856e-5,-7.939923003820991e-9,-1.9111121492372828e-4,-4.202818834980984e-5,-7.91860535841166e-9,-1.9094402083634387e-4,-4.176615800307559e-5,-7.896162848299419e-9,-1.9083831639714896e-4,-4.1534410208336746e-5,-7.87561120850624e-9,-1.9077625422079947e-4,-4.1352743879738196e-5,-7.859295143438076e-9,-1.9073505303328413e-4,-4.123196142628293e-5,-7.848605195695082e-9,-1.9069054410135802e-4,-4.1173414159399545e-5,-7.843964753064974e-9,-1.906201224278099e-4,-4.116971136664543e-5,-7.844982280018888e-9,-1.905050256123524e-4,-4.1205978856558556e-5,-7.850625899117948e-9,-1.9033218543530693e-4,-4.126132493487268e-5,-7.859318656901609e-9,-1.9009597946679268e-4,-4.131052250053904e-5,-7.868951080561997e-9,-1.8980014139863044e-4,-4.1326260782891054e-5,-7.876912836277283e-9,-1.8945967012305145e-4,-4.128269700216912e-5,-7.880323549005257e-9,-1.8910169760086778e-4,-4.116102678475968e-5,-7.876614821307504e-9,-0.00018876338867391296,-4.0956863108143176e-5,-7.864445949430287e-9,-1.884847853602136e-4,-4.0687258733253435e-5,-7.844654109638144e-9,-1.8829616966925856e-4,-4.039278804799636e-5,-7.820672655457958e-9,-1.88203845813791e-4,-4.012954778719805e-5,-7.797856014628003e-9,-1.8818277508791647e-4,-3.995054240701812e-5,-7.781684520999545e-9,-1.881832875362198e-4,-3.988448188439229e-5,-7.77566376533795e-9,-1.8815018874959586e-4,-3.992443525486756e-5,-7.780096416824334e-9,-1.880434791354815e-4,-4.003285000490112e-5,-7.792321866458137e-9,-1.8784973035415947e-4,-4.015822215563545e-5,-7.808013539986401e-9,-1.8758115050261835e-4,-4.025292234742e-5,-7.822655543413694e-9,-1.872668184883031e-4,-4.02846843903453e-5,-7.832609350063291e-9,-1.869421745375567e-4,-4.024036343886389e-5,-7.835668960723405e-9,-1.866405011096358e-4,-4.012421563344865e-5,-7.831233109466725e-9,-1.8638746606769327e-4,-3.9953517066443375e-5,-7.820209997762073e-9,-1.8619833336478678e-4,-3.9753447846682424E-05,-7.804705559277455e-9,-1.8607713456172942e-4,-3.955211791223761e-5,-7.787528077260694e-9,-1.8601733956143633e-4,-3.937609305312275e-5,-7.771594675631029e-9,-1.8600372362801028e-4,-3.924671808006975e-5,-7.759377516311174e-9,-1.860151033940145e-4,-3.9177490549839045e-5,-7.752521038826082e-9,-1.86027579535179e-4,-3.917265795237302e-5,-7.751697825195558e-9,-1.8601784500762417e-4,-3.922712275877602e-5,-7.756683939980297e-9,-1.859660991240961e-4,-3.932748873083235e-5,-7.76655338904938e-9,-1.858583415306685e-4,-3.945386020008228e-5,-7.779863803220138e-9,-1.856880765199331e-4,-3.9582104032858643e-5,-7.794764745634513e-9,-1.8545751111847034e-4,-3.968648336286518e-5,-7.80905273811186e-9,-1.8517832726768282e-4,-3.974272194646584e-5,-7.820277095975539e-9,-1.8487191715710737e-4,-3.973182286832981e-5,-7.826043324454552e-9,-1.84568326062585e-4,-3.964498003485806e-5,-7.824607063924266e-9,-1.8430252736954805e-4,-3.948909619720772e-5,-7.81567723225054e-9,-1.841068015813026e-4,-3.9290916557531185e-5,-7.801120265142914e-9,-1.8399941650295114e-4,-3.9096168023688346e-5,-7.785080204503404e-9,-1.8397315757144196e-4,-3.8959732030985414e-5,-7.773061430941858e-9,-1.8399121969710352e-4,-3.892667494260442e-5,-7.769999153806498e-9,-1.8399720413110593e-4,-3.9012062532908605e-5,-7.778165646339316e-9,-1.8393709799280938e-4,-3.919247414624714e-5,-7.796192327999907e-9,-1.837809253347292e-4,-3.94159913142451e-5,-7.81983562463752e-9,-1.835314504140859e-4,-3.9624174692404916e-5,-7.843866044999501e-9,-1.832175926465497e-4,-3.9772376929694886e-5,-7.863852973816922e-9,-0.00018288007799367867,-3.983939802399363e-5,-7.877101234873762e-9,-1.825581525567214e-4,-3.9826609012344015e-5,-7.88278698428171e-9,-1.8228153953364634e-4,-3.975151493070294e-5,-7.881673076367993e-9,-1.8206747389102235e-4,-3.96403257759107e-5,-7.87567869457065e-9,-1.8192093438847728e-4,-3.952183195728649e-5,-7.867403264403688e-9,-1.818363144226791e-4,-3.94230088792691e-5,-7.859627774104685e-9,-1.8179960057993597e-4,-3.9365938879669173e-5,-7.854836651382487e-9,-1.817908037429815e-4,-3.9365650403408574e-5,-7.85483970570868e-9,-1.817866154295425e-4,-3.9428705477013426e-5,-7.860566324909944e-9,-1.81763290141203e-4,-3.955254076382139e-5,-7.872043997922005e-9,-1.8169966125836646e-4,-3.9725745338659054e-5,-7.888521312020506e-9,-1.8157997375724025e-4,-3.992943179925509e-5,-7.908654800013727e-9,-1.8139615201193202e-4,-4.01395859443014e-5,-7.930677800847704e-9,-1.8114926843234067e-4,-4.0330149429537525e-5,-7.952524911278175e-9,-1.808500494869329e-4,-4.047662276442048e-5,-7.971962158343955e-9,-1.8051827933978514e-4,-4.055992560857808e-5,-7.986810256067089e-9,-1.8018101316444614e-4,-4.0570277674346596e-5,-7.995336625795394e-9,-1.7986930754112723e-4,-4.0510916503467394e-5,-7.996822725172099e-9,-1.796128754203871e-4,-4.0400967753350356e-5,-7.992167447243349e-9,-1.7943243126465743e-4,-4.027577035424067e-5,-7.984224841668468e-9,-1.793308527151646e-4,-4.0182267013651894e-5,-7.97751603843064e-9,-1.7928650189256697e-4,-4.016762654034507e-5,-7.977085620844553e-9,-1.7925412028238575e-4,-4.026237728195528e-5,-7.986681974367066e-9,-1.791774416147169e-4,-4.046502137035069e-5,-8.007050548514257e-9,-1.79010578141659e-4,-4.07384889308924e-5,-8.03541534862946e-9,-1.7873692411944845e-4,-4.102346717380981e-5,-8.066621496285543e-9,-1.783741420058078e-4,-4.1261830836882335e-5,-8.095249938080533e-9,-1.7796361074475225e-4,-4.1416463164230464e-5,-8.117421582789139e-9,-1.7755290410782594e-4,-4.1478368578888085e-5,-8.131520449449486e-9,-1.7718135033389617e-4,-4.146198733197798e-5,-8.13797055610707e-9,-1.768730990346715e-4,-4.139529321745453e-5,-8.138602365296292e-9,-1.766365818208645e-4,-4.131042648440153e-5,-8.135996394797593e-9,-1.7646729539195152e-4,-4.123728457209718e-5,-8.132931548149722e-9,-1.7635140912427015e-4,-4.119998363428822e-5,-8.131940782911007e-9,-1.7626901592075078e-4,-4.1215139264067615e-5,-8.13497319552361e-9,-1.7619688175239353e-4,-4.129104627639256e-5,-8.143187102834443e-9,-1.7611095329391106e-4,-4.142731358893801e-5,-8.156888519239014e-9,-1.7598889716912629e-4,-4.1614887437690714e-5,-8.17558928584182e-9,-1.7581281192462515e-4,-4.183670829192403e-5,-8.198133122013413e-9,-1.7557194116890116e-4,-4.206939570725801e-5,-8.222846596370708e-9,-1.7526489185315834e-4,-4.2286145337228534e-5,-8.247693685378518e-9,-1.749007892130791e-4,-4.246067239676419e-5,-8.27045287578726e-9,-1.7449889291473196e-4,-4.257177890837406e-5,-8.288966601271894e-9,-1.7408636134491067e-4,-4.260785569445014e-5,-8.301502622549816e-9,-1.7369417612683185e-4,-4.257044116629862e-5,-8.307207425135431e-9,-1.733515749373912e-4,-4.247603925671317e-5,-8.306560538240727e-9,-1.7307951561946385e-4,-4.235546258407321e-5,-8.301660768772593e-9,-1.7288404300892215e-4,-4.224980670333177e-5,-8.296116391034056e-9,-1.7275126742316764e-4,-4.220232082429011e-5,-8.29435675977847e-9,-1.7264662508130276e-4,-4.2246603872407674e-5,-8.300377709365537e-9,-1.7252121501086634e-4,-4.239390927424923e-5,-8.316260399484159e-9,-1.723259194563172e-4,-4.262512746453453e-5,-8.341125038747223e-9,-1.7202921853819408e-4,-4.289359303196469e-5,-8.371205255110296e-9,-1.7163005621497463e-4,-4.314027956941037e-5,-8.401196120311941e-9,-1.7115808212438073e-4,-4.3314891182245837e-5,-8.426208336859534e-9,-1.706611339045414e-4,-4.3391899781138715e-5,-8.4432830383759e-9,-1.701876762651756e-4,-4.3374419715413495e-5,-8.4518562411058e-9,-1.6977323193821857e-4,-4.328714577136297e-5,-8.4533209117178e-9,-1.6943492968409378e-4,-4.316484300779904e-5,-8.450215049832509e-9,-1.691728141266524e-4,-4.304229490465962e-5,-8.445454567334958e-9,-1.689743734967421e-4,-4.294814563749508e-5,-8.441762371783732e-9,-1.6881942342299218e-4,-4.2902261156559144e-5,-8.441296223429344e-9,-1.6868404487941965e-4,-4.291519214458628e-5,-8.445444774098598e-9,-1.6854347563705814e-4,-4.2988495594045744e-5,-8.454766529152133e-9,-1.6837439851704656e-4,-4.3115257163194266e-5,-8.469036389597806e-9,-1.681571293442517e-4,-4.3280710287122344e-5,-8.487346444855007e-9,-1.6787800682957013e-4,-4.3463272785180736e-5,-8.508217625345404e-9,-1.675319055511752e-4,-4.363653952219832e-5,-8.529718093993882e-9,-1.6712433065999726e-4,-4.3772654109465174e-5,-8.549625270960761e-9,-1.6667221550076703e-4,-4.3847053130506195e-5,-8.565688893545171e-9,-1.6620251090174813e-4,-4.384394863589244e-5,-8.576022891083493e-9,-1.6574805161057994e-4,-4.3761243185843136e-5,-8.57958137502147e-9,-1.653410166729793e-4,-4.361321227414499e-5,-8.57659196538238e-9,-1.6500526069332353e-4,-4.3429595920686075e-5,-8.568780938240553e-9,-1.6474941938175833e-4,-4.325061380526027e-5,-8.559242374508827e-9,-1.6456278474184848e-4,-4.311845658282386e-5,-8.551872091484495e-9,-1.6441558827007797e-4,-4.306679435913246e-5,-8.55041163875152e-9,-1.6426459590353389e-4,-4.31107428021797e-5,-8.55731514316368e-9,-1.6406370565747632e-4,-4.324040567689213e-5,-8.572814975918328e-9,-1.6377738091422734e-4,-4.3421136814201817e-5,-8.594619277300757e-9,-1.6339259528422065e-4,-4.360218549923664e-5,-8.618509053213847e-9,-1.6292403742707357e-4,-4.3731933663244515e-5,-8.639692356752142e-9,-1.6240945516230828e-4,-4.3773994492029846e-5,-8.654343911008955e-9,-1.618968607756375e-4,-4.371721460881521e-5,-8.660647603934844e-9,-1.614295836691662e-4,-4.357579691594396e-5,-8.658990171403235e-9,-1.6103554540079272e-4,-4.338116258064244e-5,-8.65143750147207e-9,-1.6072371734170566e-4,-4.317072694826411e-5,-8.640899300411265e-9,-1.60486597377181e-4,-4.2978486922922624e-5,-8.630346264051817e-9,-1.6030553083480994e-4,-4.28295955015562e-5,-8.622255741822829e-9,-1.6015613527411944e-4,-4.2738546072660895e-5,-8.618310231123223e-9,-1.6001252941236853e-4,-4.270953342717434e-5,-8.619310983523769e-9,-1.5985023392522713e-4,-4.27376696865566e-5,-8.62524258194941e-9,-1.5964820616548375e-4,-4.281026269130828e-5,-8.635407427994393e-9,-1.5939063606626693e-4,-4.290797545834162e-5,-8.648555381100611e-9,-1.5906893911632526e-4,-4.300622619989431e-5,-8.662980381924239e-9,-1.586839320425307e-4,-4.307745905419132e-5,-8.6766176574788e-9,-1.5824763893893554e-4,-4.309485149551601e-5,-8.687224944489166e-9,-1.577836553301402e-4,-4.303761508032331e-5,-8.692728743322592e-9,-1.5732473003351639e-4,-4.2897150815443866e-5,-8.691735505534104e-9,-1.5690673041701025e-4,-4.2682099455994495e-5,-8.684069583127032e-9,-1.5655967783061677e-4,-4.241963218334136e-5,-8.671100768675983e-9,-1.5629842252569848e-4,-4.215106331379977e-5,-8.65564776892293e-9,-1.5611654367897435e-4,-4.1922027222526855e-5,-8.641393519477788e-9,-1.5598634365727104e-4,-4.1769990723229766e-5,-8.631943434242865e-9,-1.558655337576891e-4,-4.171332468953909e-5,-8.62980875112357e-9,-1.55708599326998e-4,-4.1745676230751626e-5,-8.635639653747643e-9,-1.5547926756793228e-4,-4.183738871643539e-5,-8.64796410233513e-9,-1.5516040876164026e-4,-4.194344529267842e-5,-8.663544317198107e-9,-1.5475857077794318e-4,-4.2015642345345564e-5,-8.678275332417251e-9,-1.5430178219828054e-4,-4.2015487508945786e-5,-8.688346657903147e-9,-1.538312653883322e-4,-4.1923888974596855e-5,-8.691272266061803e-9,-1.5338985144061818e-4,-4.174464729428951e-5,-8.686443715723425e-9,-1.5301108912570144e-4,-4.150107912857046e-5,-8.675074640975934e-9,-1.5271247020407983e-4,-4.1227745509928506e-5,-8.659650972450587e-9,-1.5249412865362623e-4,-4.096082102643691e-5,-8.643154944543995e-9,-1.5234202142190386e-4,-4.0730361657362306e-5,-8.628341074666747e-9,-1.522332666590427e-4,-4.0556036818412694e-5,-8.617240877586801e-9,-1.5214146355814283e-4,-4.044607832465574e-5,-8.610948820189256e-9,-1.5204082770238207e-4,-4.0398276306418136e-5,-8.609649713449356e-9,-1.5190894966737008e-4,-4.040182404940597e-5,-8.612791693953891e-9,-1.5172855998777816e-4,-4.04392073340307e-5,-8.619289651721801e-9,-1.5148890221367985e-4,-4.048788673301634e-5,-8.627671304566296e-9,-1.511871960678653e-4,-4.052207249406931e-5,-8.636154913727928e-9,-1.5083025434630082e-4,-4.051521495503619e-5,-8.642725787473477e-9,-1.5043574158394175e-4,-4.044383852156764e-5,-8.645327734018624e-9,-1.500319353466808e-4,-4.029297377626192e-5,-8.642261093560134e-9,-1.496544166579292e-4,-4.006242686937451e-5,-8.632759521112276e-9,-1.4933857066749907e-4,-3.9771500609913104e-5,-8.61753525645397e-9,-1.4910878327908136e-4,-3.9458613965874134e-5,-8.598961074703302e-9,-1.4896817540041468e-4,-3.9173255620837376e-5,-8.580634729706417e-9,-1.4889434793359147e-4,-3.896143953895252e-5,-8.566369717397555e-9,-1.488446779231985e-4,-3.885027635490195e-5,-8.558992598500318e-9,-1.4876971971684565e-4,-3.883878985692342e-5,-8.559461170923111e-9,-1.4862882605840358e-4,-3.889897430693147e-5,-8.566637964807312e-9,-1.484015496846831e-4,-3.8985699273179814e-5,-8.577719545041904e-9,-1.4809146958670756e-4,-3.9050500471712874e-5,-8.589075917670951e-9,-1.4772283139077166e-4,-3.90541832810773e-5,-8.597200861671296e-9,-1.4733252302452735e-4,-3.8975093804996464e-5,-8.599531021666814e-9,-1.46960319709348e-4,-3.8811988524448995e-5,-8.594969943036304e-9,-1.4663989849332713e-4,-3.8581911562734315e-5,-8.58402541962936e-9,-1.4639243737691714e-4,-3.831439622032589e-5,-8.568556760394407e-9,-1.4622381432699978e-4,-3.8043832331238845e-5,-8.551221326080342e-9,-1.4612546696149864e-4,-3.780203085357788e-5,-8.534793996272362e-9,-1.4607800835754142e-4,-3.761267871861787e-5,-8.521560570514165e-9,-1.46056126596556e-4,-3.748848840769632e-5,-8.512936995642796e-9,-1.4603336462438332e-4,-3.743087337648366e-5,-8.509368863912567e-9,-1.4598588657925202e-4,-3.743138625583485e-5,-8.510465027645555e-9,-1.4589496353338089e-4,-3.747399290628529e-5,-8.515247763091069e-9,-1.4574843347403674e-4,-3.753744263121957e-5,-8.522385868843517e-9,-1.4554162934537264e-4,-3.759745129656199e-5,-8.530332304446479e-9,-1.4527818133022795e-4,-3.7628889350479104e-5,-8.537375532161534e-9,-1.4497079464529807e-4,-3.76084521534279e-5,-8.541699439939246e-9,-1.446416124057033e-4,-3.751836753687077e-5,-8.541581339326527e-9,-1.4432111704455668e-4,-3.7351398285757994e-5,-8.535812444372269e-9,-1.4404404714688575e-4,-3.711638518574359e-5,-8.524282605408122e-9,-1.438412079624837e-4,-3.684187866182322e-5,-8.508477097627533e-9,-1.4372811461076546e-4,-3.657397293866363e-5,-8.491503673689153e-9,-1.436949746655447e-4,-3.636532952138359e-5,-8.477371791217123e-9,-1.437049148338037e-4,-3.625715011489158e-5,-8.469647157873269e-9,-1.4370460041685984e-4,-3.626225419817731e-5,-8.470096677118393e-9,-1.436435657655829e-4,-3.6359182629031623e-5,-8.478059693349249e-9,-1.4349217679652826e-4,-3.650097828056397e-5,-8.49083875172551e-9,-1.4324944734727836e-4,-3.663301747612782e-5,-8.50476357027434e-9,-1.4293924274250757e-4,-3.6710244446883646e-5,-8.516318183217591e-9,-1.42599606440927e-4,-3.670734481993864e-5,-8.522934387042323e-9,-1.4227107692698355e-4,-3.66208983276144e-5,-8.523380609554418e-9,-1.4198762087161575e-4,-3.646586091026803e-5,-8.517827359725516e-9,-1.4177127123896665e-4,-3.626931158012475e-5,-8.507668428407443e-9,-1.4163010445375599e-4,-3.606360234221836e-5,-8.495144285064709e-9,-1.4155881398565556e-4,-3.588006957388633e-5,-8.482821921176052e-9,-1.4154122929864088e-4,-3.574396664003745e-5,-8.473039059830415e-9,-1.4155410250967632e-4,-3.5671120527783085e-5,-8.467454781925923e-9,-1.4157137341078065e-4,-3.5666522461359366e-5,-8.46681890030178e-9,-1.4156819516112225e-4,-3.572468450852716e-5,-8.4709875707388e-9,-1.4152418460917606e-4,-3.58313730753767e-5,-8.47912807725831e-9,-1.4142558873947818e-4,-3.59661705458511e-5,-8.489992557926502e-9,-1.412664184643966e-4,-3.6105261696455e-5,-8.502137383045136e-9,-1.4104888166358994e-4,-3.6224110895191465e-5,-8.514032189748423e-9,-1.4078340386514088e-4,-3.630008132933925e-5,-8.524097794432883e-9,-1.4048831120426743e-4,-3.6315244359799485e-5,-8.530777751256682e-9,-1.4018893987105985e-4,-3.6259700669489686e-5,-8.532761075544734e-9,-1.399154045802046e-4,-3.613554770648095e-5,-8.529406358796928e-9,-1.396978493880879e-4,-3.5960758369385744e-5,-8.5212719609298e-9,-1.395584274220083e-4,-3.5770777754258144e-5,-8.510484614118273e-9,-1.395010799090941e-4,-3.5614419533547606e-5,-8.500584815712752e-9,-1.3950347955379841e-4,-3.554134224026499e-5,-8.495600252331792e-9,-1.395181326667312e-4,-3.5583057711782186e-5,-8.49852886633527e-9,-1.3948692048425989e-4,-3.573661667274257e-5,-8.509976577861838e-9,-1.3936409233349114e-4,-3.596248146847602e-5,-8.52783178092342e-9,-1.3913464178440764e-4,-3.6200002121230084e-5,-8.548219699136488e-9,-1.3881747770678196e-4,-3.6391341144876804e-5,-8.567072309384218e-9,-1.384540237025143e-4,-3.650005380239695e-5,-8.581375137160207e-9,-1.380914704582618e-4,-3.6517145395985524e-5,-8.589669620504838e-9,-1.3776939627770373e-4,-3.645667302158028e-5,-8.591982763540148e-9,-1.375129529417687e-4,-3.634680402050186e-5,-8.589508759325445e-9,-1.373315794560991e-4,-3.622095854655851e-5,-8.584220023840957e-9,-1.3722091216789167e-4,-3.61110737959683e-5,-8.578448656336925e-9,-1.3716598999432205e-4,-3.6043161150447865e-5,-8.574449379800085e-9,-1.37144819913883e-4,-3.6034601772228566e-5,-8.573995788120039e-9,-1.3713202193536196e-4,-3.60927847497726e-5,-8.578098184526851e-9,-1.3710237308793484e-4,-3.621495858814332e-5,-8.586914569799196e-9,-1.3703402980724396e-4,-3.6389181641333254e-5,-8.5998516774355e-9,-1.36911205202354e-4,-3.65962542961265e-5,-8.615789199981454e-9,-1.3672602214730465e-4,-3.68124573584491e-5,-8.633327431858329e-9,-1.36479349089764e-4,-3.701271677512592e-5,-8.650970819822634e-9,-1.3618068653054776e-4,-3.717379627140313e-5,-8.667222550115315e-9,-1.358472662707308e-4,-3.7277344343605105e-5,-8.680647089426607e-9,-1.3550242612119607e-4,-3.731274903926245e-5,-8.68999424871703e-9,-1.3517320152061808e-4,-3.727978006702851e-5,-8.694459140313209e-9,-1.3488680793789882e-4,-3.719092897384664e-5,-8.694073713436727e-9,-1.3466544021457864e-4,-3.707279073129639e-5,-8.69010051987593e-9,-1.3451925275556113e-4,-3.696481485133304e-5,-8.685177236944263e-9,-1.344388658671642e-4,-3.69131046298267e-5,-8.682934876706395e-9,-1.3439108416693466e-4,-3.695778715724225e-5,-8.68695839392729e-9,-1.3432331140892352e-4,-3.7116200157038535e-5,-8.699334814541392e-9,-1.3417981211901297e-4,-3.737010340084863e-5,-8.71951455375979e-9,-1.339246580951755e-4,-3.7667420214442775e-5,-8.744316749020727e-9,-1.3355816900488716e-4,-3.7941435370631326e-5,-8.769244026211392e-9,-1.3311593340372153e-4,-3.813725721253883e-5,-8.79029609068621e-9,-1.3265197371800877e-4,-3.8229929052285945e-5,-8.80518898519348e-9,-1.3221793913426716e-4,-3.822643977336777e-5,-8.813555366407018e-9,-1.318492290963614e-4,-3.8155740932226004e-5,-8.816480101901048e-9,-1.3156091565529496e-4,-3.8055615871408505e-5,-8.815891247203971e-9,-1.3135036452187486e-4,-3.796239043644523e-5,-8.814051427765528e-9,-1.31202438800492e-4,-3.7905049072083586e-5,-8.813160873514698e-9,-1.3109463784149872e-4,-3.79028210263575e-5,-8.81503385420893e-9,-1.3100122611687848e-4,-3.796469387651649e-5,-8.820852830416448e-9,-1.3089648863076503e-4,-3.80897908046812e-5,-8.83104051118581e-9,-1.3075748536931842e-4,-3.826825886682798e-5,-8.84527997381368e-9,-1.3056648321026467e-4,-3.848267424904795e-5,-8.862659526172724e-9,-1.3031305885508222e-4,-3.871009371470224e-5,-8.881878607082005e-9,-1.2999564462678402e-4,-3.8924886973358905e-5,-8.90144922639146e-9,-1.296221126551315e-4,-3.9102224081252054e-5,-8.919852317394064e-9,-1.292091137554164e-4,-3.9221787764163894e-5,-8.935653170963314e-9,-1.287801342980387e-4,-3.9271231345139034e-5,-8.947626178113364e-9,-1.2836237102655372e-4,-3.924893370147562e-5,-8.954946573809908e-9,-1.2798264289840097e-4,-3.916561004732102e-5,-8.957459750970044e-9,-1.2766262594780724e-4,-3.9044431207776e-5,-8.955969094344736e-9,-1.2741366297480022e-4,-3.891923161696911e-5,-8.952404162384802e-9,-1.2723168997357461e-4,-3.883000967390067e-5,-8.949679509496966e-9,-1.27093748029005e-4,-3.881487829910734e-5,-8.951097831921052e-9,-1.2695870357679422e-4,-3.8898685950468335e-5,-8.959323326278861e-9,-1.267751555869125e-4,-3.908106724078372e-5,-8.975233990146882e-9,-1.2649729890266872e-4,-3.933002315131596e-5,-8.997238422616873e-9,-1.2610380646318407e-4,-3.958793924368254e-5,-9.021623338742478e-9,-1.2560933231630603e-4,-3.979117636916569e-5,-9.043949542052622e-9,-1.250601064281325e-4,-3.989428803618717e-5,-9.060747657363913e-9,-1.2451535807132656e-4,-3.988519479442612e-5,-9.070550347589108e-9,-1.2402584828578883e-4,-3.978414776435241e-5,-9.073886011159246e-9,-1.236205981940215e-4,-3.963065544738354e-5,-9.07260038223968e-9,-1.2330492479386814e-4,-3.946804731107443e-5,-9.06907791995821e-9,-1.2306592379153069e-4,-3.9332584341514184e-5,-9.065663183276685e-9,-1.228800828847495e-4,-3.9248605036294036e-5,-9.064298093394783e-9,-1.2271974809462355e-4,-3.9227959023930204e-5,-9.066308761174449e-9,-1.2255751932836511e-4,-3.9271422800291845e-5,-9.07230522767062e-9,-1.2236902385258616e-4,-3.937056825807537e-5,-9.082190481665708e-9,-1.2213485314795255e-4,-3.950953825587356e-5,-9.0952670217167e-9,-1.2184219766310128e-4,-3.966680598205627e-5,-9.110401741288104e-9,-1.2148636162885278e-4,-3.981726696521993e-5,-9.12619905571748e-9,-1.2107197250418744e-4,-3.9935062083796264e-5,-9.141156188037495e-9,-1.2061333772280514e-4,-3.9997258003077964e-5,-9.153805898123638e-9,-1.2013331124746263e-4,-3.998800386203117e-5,-9.162873756252375e-9,-1.1966030668005657e-4,-3.990236796499482e-5,-9.167476141008514e-9,-1.1922355711720542e-4,-3.9748848224879454e-5,-9.16735668291749e-9,-1.1884727409519039e-4,-3.9549573910041856e-5,-9.163106709226148e-9,-1.1854484500946807e-4,-3.9337626281964046e-5,-9.156273357353645e-9,-1.1831435745928925e-4,-3.9151554868869843e-5,-9.149247534449742e-9,-1.1813661119487769e-4,-3.9027669333984225e-5,-9.144851147026704e-9,-1.1797667960421902e-4,-3.899110483450793e-5,-9.145628060950681e-9,-1.1778991790734548e-4,-3.904737063700308e-5,-9.15299150810211e-9,-1.175325624741728e-4,-3.9177091689939015e-5,-9.166537396277783e-9,-1.1717523308225653e-4,-3.933731131848976e-5,-9.183898816605155e-9,-1.1671489921126038e-4,-3.947171279421601e-5,-9.20137620436505e-9,-1.1617906373001206e-4,-3.952820645458404e-5,-9.215188158288917e-9,-1.1561807446250038e-4,-3.947694802803824e-5,-9.222771080593783e-9,-1.1508795403832579e-4,-3.931977427169145e-5,-9.223487247363517e-9,-1.1463218392673738e-4,-3.9086539305895255e-5,-9.21849929028679e-9,-1.142709592978943e-4,-3.8821745934336895e-5,-9.210076040428456e-9,-1.1400074179654687e-4,-3.856946273893001e-5,-9.20078618611514e-9,-1.1380094799943816e-4,-3.836294492571193e-5,-9.192886631995141e-9,-1.1364261812623197e-4,-3.822069459714716e-5,-9.1879765359956e-9,-1.1349551541127026e-4,-3.814719957123449e-5,-9.186871306246775e-9,-1.1333258761490281e-4,-3.8135736535814055e-5,-9.189633338269424e-9,-1.1313230069867286e-4,-3.817141008984336e-5,-9.195706259883106e-9,-1.1287982382393343e-4,-3.823369291997683e-5,-9.204097657482591e-9,-1.1256786310513337e-4,-3.829851605574717e-5,-9.213553802888529e-9,-1.1219751803139118e-4,-3.8340376762559447e-5,-9.22269414066259e-9,-1.1177904223869293e-4,-3.833503671167999e-5,-9.230116686601745e-9,-1.1133191698447232e-4,-3.826315103578705e-5,-9.234523255112086e-9,-1.1088335748373442e-4,-3.811461096830071e-5,-9.234910233392347e-9,-1.1046449079987319e-4,-3.789262697562118e-5,-9.230826308386785e-9,-1.1010413601670693e-4,-3.7615910350771354e-5,-9.222627139411862e-9,-1.0982130517158393e-4,-3.731722308065027e-5,-9.21160402770721e-9,-1.0961868889767661e-4,-3.703748088216355e-5,-9.199872312326249e-9,-1.0947969429209346e-4,-3.681630820680492e-5,-9.189976537874282e-9,-1.0937067838856088e-4,-3.668157414423921e-5,-9.184272074658242e-9,-1.0924829447019257e-4,-3.664109554625678e-5,-9.18424056176897e-9,-1.0907020550257687e-4,-3.667913877536005e-5,-9.189954915184103e-9,-1.0880642515705916e-4,-3.6759033088402764e-5,-9.199907267392656e-9,-1.0844824947981108e-4,-3.683171835853091e-5,-9.211326762762983e-9,-1.0801195079731945e-4,-3.684853152381634e-5,-9.220949393187014e-9,-1.0753533107081977e-4,-3.6774884340293415e-5,-9.225997564122934e-9,-1.0706735543311275e-4,-3.6600269285523224e-5,-9.22499909034669e-9,-1.0665405844386353e-4,-3.634060345263345e-5,-9.218128116932532e-9,-1.0632599695639417e-4,-3.6031911809698865e-5,-9.206981038369621e-9,-1.0609189824736788e-4,-3.5718319405997615e-5,-9.19395506438557e-9,-1.0593992002165717e-4,-3.543962353913638e-5,-9.181522987160879e-9,-1.0584432970216088e-4,-3.5222894444418944e-5,-9.171654265312317e-9,-1.0577377509585269e-4,-3.5079615353876484e-5,-9.165501882736301e-9,-1.0569811427307857e-4,-3.500714701067259e-5,-9.163352800650679e-9,-1.0559264518508524e-4,-3.499226206662488e-5,-9.164771801813917e-9,-1.0544004786505433e-4,-3.5014920510423576e-5,-9.16883982493074e-9,-1.0523095671395252e-4,-3.5051391464275926e-5,-9.174389778026609e-9,-1.0496405295401565e-4,-3.507665669286638e-5,-9.180172150801203e-9,-1.0464618835727268e-4,-3.506655725701059e-5,-9.184939032839345e-9,-1.0429252092118758e-4,-3.500030193581135e-5,-9.187495988674884e-9,-1.039261276946598e-4,-3.48637823947789e-5,-9.186800523449334e-9,-1.0357615793353864e-4,-3.46536541858101e-5,-9.182170455832e-9,-1.0327350441689744e-4,-3.4381246691956354e-5,-9.173580720955574e-9,-1.0304364939716516e-4,-3.4074253186413085e-5,-9.161923230549191e-9,-1.0289802766204464e-4,-3.3773697803369534e-5,-9.149039646343281e-9,-1.0282725778280255e-4,-3.3524929232600696e-5,-9.137394421723031e-9,-1.0280029662432293e-4,-3.336441855594974e-5,-9.129418606410994e-9,-1.0277162008556858e-4,-3.3307298589755e-5,-9.126750143428798e-9,-1.0269452672034878e-4,-3.334132380659976e-5,-9.129679824022376e-9,-1.0253530901109662e-4,-3.3430128766657056e-5,-9.137028969170211e-9,-1.0228281327026914e-4,-3.352418168582912e-5,-9.146483951023313e-9,-1.0195058478501845e-4,-3.357486167811767e-5,-9.155243273725392e-9,-1.0157200536431759e-4,-3.354696552794696e-5,-9.160762004820197e-9,-1.0119077576295845e-4,-3.3426523116505044e-5,-9.161389983981338e-9,-1.0084972538708518e-4,-3.322258471680729e-5,-9.1567428994038e-9,-1.0058085340582454e-4,-3.296319855077416e-5,-9.1477233287177e-9,-1.0039895151362752e-4,-3.268715204906611e-5,-9.13620386476633e-9,-1.0030009479870362e-4,-3.243403248359135e-5,-9.124482475916777e-9,-1.0026481761500761e-4,-3.2235448634192776e-5,-9.114685797381227e-9,-1.002643617789796e-4,-3.210959204158094e-5,-9.108299298278605e-9,-1.0026767382911762e-4,-3.205986487873324e-5,-9.105941746310106e-9,-1.0024717983614368e-4,-3.207681406252085e-5,-9.107401083971613e-9,-1.0018239318013028e-4,-3.214184576455504e-5,-9.111860642617299e-9,-1.0006142614792553e-4,-3.223125875718116e-5,-9.118191582072067e-9,-9.988108258667136e-5,-3.2319691729833556e-5,-9.1251948611398e-9,-9.964632646321523e-5,-3.238278403756544e-5,-9.131729422340635e-9,-9.936964829441685e-5,-3.239938756272473e-5,-9.136742201877834e-9,-9.907040628933112e-5,-3.2353857807257145e-5,-9.139278262243717e-9,-9.877374852922494e-5,-3.22388541842853e-5,-9.138569270716463e-9,-9.850827687016545e-5,-3.2058685656720396e-5,-9.13425646517205e-9,-9.830143939364078e-5,-3.1832365719454527e-5,-9.126703455871307e-9,-9.817223068137955e-5,-3.159432274657247e-5,-9.117234559865558e-9,-9.812252419680496e-5,-3.138997708142053e-5,-9.108071823699427e-9,-9.813089016549055e-5,-3.126452109365012e-5,-9.10182146027846e-9,-9.815412222958905e-5,-3.124710157480261e-5,-9.100604093125194e-9,-9.813914491830552e-5,-3.1337456387429606e-5,-9.105211374499513e-9,-9.804153498796248e-5,-3.150322611607172e-5,-9.11475449547984e-9,-9.784154686536156e-5,-3.1690737195221436e-5,-9.127000792101932e-9,-9.754967528636868e-5,-3.1843765894223964e-5,-9.139172281973027e-9,-9.720055366819144e-5,-3.192085559051927e-5,-9.148776150107598e-9,-9.684015327249356e-5,-3.1904655488520306e-5,-9.154172659673398e-9,-9.651257696551535e-5,-3.180236177111936e-5,-9.154822358487452e-9,-9.62504127431069e-5,-3.163996841124646e-5,-9.151274976782774e-9,-9.60698168291565e-5,-3.145374077091899e-5,-9.144961054288212e-9,-9.596984265486474e-5,-3.128151423757891e-5,-9.137828523893096e-9,-9.593497386265119e-5,-3.115537334164327e-5,-9.131885483864583e-9,-9.593976606922285e-5,-3.109656681303233e-5,-9.128751308860314e-9,-9.595447136657913e-5,-3.111310201829616e-5,-9.129337933414458e-9,-9.595049936624177e-5,-3.119999178987712e-5,-9.133745810921736e-9,-9.590477548725535e-5,-3.134160856925637e-5,-9.141380171958168e-9,-9.580246226255177e-5,-3.151529116825042e-5,-9.151211708597388e-9,-9.563797539391283e-5,-3.16952830703858e-5,-9.162060481302314e-9,-9.541467373049275e-5,-3.185625961327806e-5,-9.172796825714589e-9,-9.514380915860319e-5,-3.197615493895167e-5,-9.182419310694514e-9,-9.48431552537596e-5,-3.2038443093745316e-5,-9.190051974883061e-9,-9.453543133902659e-5,-3.2034182987011704e-5,-9.194952520053085e-9,-9.424633486772374e-5,-3.1964113362905855e-5,-9.19662086089252e-9,-9.400158823504068e-5,-3.18408340759899e-5,-9.195038235111904e-9,-9.382220633420554e-5,-3.169033305608827e-5,-9.19095818861579e-9,-9.371778135278529e-5,-3.155104568024974e-5,-9.186065400464665e-9,-9.367914980804929e-5,-3.1468046822899884e-5,-9.182785199579648e-9,-9.367412170350315e-5,-3.1480918711509026e-5,-9.183626205872267e-9,-9.365156347345576e-5,-3.160755715402989e-5,-9.19020294586336e-9,-9.355668865963729e-5,-3.183175941432533e-5,-9.202419571888166e-9,-9.335267713728581e-5,-3.210430056471749e-5,-9.218371347956345e-9,-9.303667906521569e-5,-3.236020861117679e-5,-9.235103819495216e-9,-9.264032211325917e-5,-3.2543385860012626e-5,-9.249755228307922e-9,-9.221548591093086e-5,-3.262483810785695e-5,-9.26041652356236e-9,-9.181507378196565e-5,-3.260698117914955e-5,-9.266413523353581e-9,-9.147845491400025e-5,-3.251632942914815e-5,-9.268166415699002e-9,-9.122520847559706e-5,-3.239154168921172e-5,-9.266889513425695e-9,-9.105564635912965e-5,-3.227244723700269e-5,-9.2642646836748e-9,-9.095498913811478e-5,-3.219240887699171e-5,-9.262101784399266e-9,-9.08987318910297e-5,-3.217406213098664e-5,-9.261994204243429e-9,-9.085793054099272e-5,-3.222762121230062e-5,-9.265019829464496e-9,-9.080392835417925e-5,-3.2351052738033134e-5,-9.271567916967034e-9,-9.071228168806134e-5,-3.253168391369461e-5,-9.28134185774094e-9,-9.056569168800201e-5,-3.2748874236925676e-5,-9.293522462109239e-9,-9.035578936575062e-5,-3.297739074658915e-5,-9.307015941925984e-9,-9.008365802729651e-5,-3.319108369388331e-5,-9.32068773621464e-9,-8.975916266917992e-5,-3.336636099032471e-5,-9.33350717957054e-9,-8.939940883763627e-5,-3.348509546284864e-5,-9.344592008056796e-9,-8.902663953210632e-5,-3.353691102753202e-5,-9.353211946825554e-9,-8.866569313938621e-5,-3.352090126483869e-5,-9.35883336145802e-9,-8.834103551839693e-5,-3.3446806313605515e-5,-9.361261938630803e-9,-8.807317448099914e-5,-3.333560303798455e-5,-9.360872293875294e-9,-8.787408489854848e-5,-3.321895898344246e-5,-9.35881896249169e-9,-8.774178162211213e-5,-3.313618048205553e-5,-9.357051719661311e-9,-8.765551941425548e-5,-3.312704407820512e-5,-9.357971217288903e-9,-8.75747733839315e-5,-3.3219976944643985e-5,-9.363691049098633e-9,-8.74461410016907e-5,-3.341812218722618e-5,-9.375114762347986e-9,-8.7220065678816e-5,-3.3690479945789706e-5,-9.391311854138805e-9,-8.687212463896635e-5,-3.397702246395055e-5,-9.409699673510456e-9,-8.641654285989432e-5,-3.420979174434094e-5,-9.427069578077248e-9,-8.590181922728967e-5,-3.433967242416912e-5,-9.440848661633535e-9,-8.539061620032401e-5,-3.435314501297649e-5,-9.44984340985916e-9,-8.493672097339013e-5,-3.4271269582614564e-5,-9.454233252297501e-9,-8.45709727893319e-5,-3.413584988272384e-5,-9.45513539359531e-9,-8.429907159057472e-5,-3.399315338192215e-5,-9.454135610822126e-9,-8.410710066635141e-5,-3.388222278476255e-5,-9.452932691116559e-9,-8.39694300761685e-5,-3.382927951155617e-5,-9.453065287658341e-9,-8.385576288840835e-5,-3.384661045247159e-5,-9.455682021020762e-9,-8.373632656338405e-5,-3.39337961074905e-5,-9.461372860972362e-9,-8.358545827544782e-5,-3.407987563331084e-5,-9.470111676055729e-9,-8.338408132706894e-5,-3.426590539557689e-5,-9.481331913003121e-9,-8.312136430352067e-5,-3.446778153328366e-5,-9.494105686910258e-9,-8.279564587432089e-5,-3.465932720987703e-5,-9.507355644814983e-9,-8.241450667287213e-5,-3.481564090403858e-5,-9.520030613693909e-9,-8.19937854235765e-5,-3.491646452503521e-5,-9.531207314372736e-9,-8.155553782746594e-5,-3.494912799250977e-5,-9.540129776878508e-9,-8.112514759519504e-5,-3.491073158250606e-5,-9.546243568285508e-9,-8.072780222779476e-5,-3.480934834136822e-5,-9.549283156140592e-9,-8.038456389393579e-5,-3.466401475530754e-5,-9.549426224657887e-9,-8.010831362600719e-5,-3.450333338545574e-5,-9.54746360191402e-9,-7.989980971585162e-5,-3.4362440274271346e-5,-9.544875278633311e-9,-7.974437782718713e-5,-3.427773727254322e-5,-9.543676237437192e-9,-7.961061805952735e-5,-3.427884237468908e-5,-9.545950110564333e-9,-7.945341861300056e-5,-3.437837958684637e-5,-9.553132576768602e-9,-7.922353858236074e-5,-3.456254513569184e-5,-9.56529984876067e-9,-7.888371631202135e-5,-3.478810345141471e-5,-9.580865713138687e-9,-7.842594949679023e-5,-3.499174125974583e-5,-9.597013547859506e-9,-7.787972052612896e-5,-3.5111823238104886e-5,-9.61077091176288e-9,-7.730339317992335e-5,-3.5112654366270275e-5,-9.620133730535203e-9,-7.676190727235558e-5,-3.4997103078953485e-5,-9.624598331243174e-9,-7.630368913524509e-5,-3.480106932702219e-5,-9.62496228087358e-9,-7.594864786183333e-5,-3.457584341541249e-5,-9.622755990773589e-9,-7.568955618661085e-5,-3.4369955647098174e-5,-9.619710536672963e-9,-7.550120699012476e-5,-3.4218070735318946e-5,-9.617407235355379e-9,-7.53506844299028e-5,-3.4137703834965904e-5,-9.617061902570326e-9,-7.520512620818642e-5,-3.4130887726558557e-5,-9.619389347609227e-9,-7.503635353608889e-5,-3.4187713250424024e-5,-9.624544759331411e-9,-7.482323554456231e-5,-3.4289930549698735e-5,-9.63216195796353e-9,-7.455284746952063e-5,-3.441408243113663e-5,-9.641484197830746e-9,-7.422104933606681e-5,-3.4534311144901265e-5,-9.651545196785234e-9,-7.383266982034839e-5,-3.4625139821498456e-5,-9.661340808730684e-9,-7.340115252227199e-5,-3.466447763315732e-5,-9.669951148188559e-9,-7.29472860281118e-5,-3.4636811794840895e-5,-9.676610258024069e-9,-7.249670181575391e-5,-3.453612755069931e-5,-9.680751536488109e-9,-7.207617225320659e-5,-3.436789907206864e-5,-9.682071150846721e-9,-7.170907254595313e-5,-3.414954611457939e-5,-9.680633872207702e-9,-7.141062395474628e-5,-3.39088790257861e-5,-9.676997430229804e-9,-7.118375946617258e-5,-3.3680346460547944e-5,-9.672282908069223e-9,-7.101650731517465e-5,-3.349931488623629e-5,-9.668098481187566e-9,-7.088172523947388e-5,-3.33948756399492e-5,-9.666247026220778e-9,-7.074007291564022e-5,-3.3381977619494795e-5,-9.668224096412342e-9,-7.054706001923604e-5,-3.345448175111133e-5,-9.674640120668145e-9,-7.026421186175586e-5,-3.358188659485631e-5,-9.68481262676929e-9,-6.987236648803186e-5,-3.371310919852034e-5,-9.69679586348801e-9,-6.938216497629712e-5,-3.3789366876241454e-5,-9.707962916374584e-9,-6.883511643281062e-5,-3.376368965928737e-5,-9.715940864866819e-9,-6.829161852117123e-5,-3.3618736578177726e-5,-9.719434092883315e-9,-6.781005922500603e-5,-3.337302815858778e-5,-9.718519685799377e-9,-6.742756648217968e-5,-3.307197650765509e-5,-9.714369050431293e-9,-6.715167109481134e-5,-3.276964162612763e-5,-9.70868572509175e-9,-6.696431540140377e-5,-3.251149483555875e-5,-9.703181489926008e-9,-6.683272014943683e-5,-3.23249804831107e-5,-9.699229967536756e-9,-6.672046595425307e-5,-3.221830593712131e-5,-9.69768646622021e-9,-6.659514882482948e-5,-3.218413792480631e-5,-9.69883261424372e-9,-6.643222102070501e-5,-3.2204715407059465e-5,-9.702422223220024e-9,-6.621623206383647e-5,-3.225639014403438e-5,-9.707811412099236e-9,-6.594084229704343e-5,-3.231307689206832e-5,-9.714134303646899e-9,-6.560847130759857e-5,-3.234892257240772e-5,-9.720473000120565e-9,-6.522984548096849e-5,-3.2340745725612146e-5,-9.725978398839142e-9,-6.482324202400488e-5,-3.227068092840828e-5,-9.72993539962299e-9,-6.441292964570893e-5,-3.212909927557402e-5,-9.731798587080863e-9,-6.402628163536215e-5,-3.1917364877182857e-5,-9.731239839313383e-9,-6.368937200887575e-5,-3.164953586182567e-5,-9.728232443086724e-9,-6.342148728367543e-5,-3.135192586641782e-5,-9.723155862069091e-9,-6.3229704409613e-5,-3.105968506127635e-5,-9.716864968224381e-9,-6.310518395759158e-5,-3.081035792541784e-5,-9.710646408580894e-9,-6.302274843342547e-5,-3.0635492967811876e-5,-9.706009068758345e-9,-6.294459210654977e-5,-3.055226083848084e-5,-9.704313675315504e-9,-6.282790628516361e-5,-3.0557342633427204e-5,-9.706329094269245e-9,-6.263513206345579e-5,-3.062513212686725e-5,-9.711875217337033e-9]} \ No newline at end of file diff --git a/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json new file mode 100644 index 000000000..76c3a68e8 --- /dev/null +++ b/public/Cesium/Assets/IAU2006_XYS/IAU2006_XYS_9.json @@ -0,0 +1 @@ +{"version":"1.0","updated":"2008 Dec 02 20:00:00 UTC","interpolationOrder":9,"xysAlgorithm":"SOFA_DEL_PSI_EPS","sampleZeroJulianEphemerisDate":2442396.5,"stepSizeDays":1,"startIndex":9000,"numberOfSamples":1000,"samples":[-6.23446137633139e-5,-3.071164556992463e-5,-9.719731332151204e-9,-6.19586809157847e-5,-3.076438157665265e-5,-9.727914890125598e-9,-6.150587794551883e-5,-3.073654937098242e-5,-9.734280833128142e-9,-6.1034943329782044e-5,-3.060168191808949e-5,-9.737216476929997e-9,-6.0601038606681665e-5,-3.036287029042388e-5,-9.736134809126074e-9,-6.024888746053323e-5,-3.0051869736974383e-5,-9.731565682588457e-9,-5.999994090928063e-5,-2.971789522758825e-5,-9.724862066857019e-9,-5.9848834314815545e-5,-2.9411354882677176e-5,-9.71770907732456e-9,-5.976923198886019e-5,-2.916989718887004e-5,-9.711648469978378e-9,-5.972462316432335e-5,-2.9011586735457638e-5,-9.707751149758674e-9,-5.967870819510338e-5,-2.8935387308633597e-5,-9.70647628370283e-9,-5.9602228253192676e-5,-2.89259970676844e-5,-9.707695687073557e-9,-5.947591112549622e-5,-2.8959747148304846e-5,-9.710838540242717e-9,-5.929077173354268e-5,-2.9009608654381066e-5,-9.715094525623705e-9,-5.904719567985657e-5,-2.9048773862964067e-5,-9.71960852884578e-9,-5.8753773367436014e-5,-2.9053136374370507e-5,-9.72361187781754e-9,-5.842624685184096e-5,-2.9003338061866847e-5,-9.726475623750488e-9,-5.8086360356536405e-5,-2.8886966009567993e-5,-9.727714468149827e-9,-5.776002754298137e-5,-2.870105742876016e-5,-9.726995392498005e-9,-5.74741651198525e-5,-2.845449366073143e-5,-9.72419549652686e-9,-5.725183467800746e-5,-2.8169256139263426e-5,-9.71951151762819e-9,-5.7106100541113594e-5,-2.7879041181757347e-5,-9.713564114276547e-9,-5.7034227249689176e-5,-2.7623923778951554e-5,-9.707405962417725e-9,-5.7014849044397024e-5,-2.744114170465607e-5,-9.702361282140308e-9,-5.701050918052841e-5,-2.735425399096375e-5,-9.699698830847758e-9,-5.697609718243167e-5,-2.7364576162975244e-5,-9.700232368303819e-9,-5.6871038817050416e-5,-2.7448633497066595e-5,-9.704002376450864e-9,-5.667116781282969e-5,-2.7563221973356075e-5,-9.710182005555758e-9,-5.637617678776307e-5,-2.765667320675218e-5,-9.717264987992663e-9,-5.601027591624169e-5,-2.7682736375781414e-5,-9.723480590272698e-9,-5.561600483675091e-5,-2.7612936285683867e-5,-9.727297528384073e-9,-5.524303937361784e-5,-2.7443956618506687e-5,-9.727850312943274e-9,-5.493513840003189e-5,-2.7197955922928915e-5,-9.725154651913568e-9,-5.471906725691787e-5,-2.6915691607899557e-5,-9.72005407261872e-9,-5.4598911019501836e-5,-2.6644703453075705e-5,-9.713934027115233e-9,-5.455730383150816e-5,-2.64266189741069e-5,-9.708311206523093e-9,-5.4562420129529145e-5,-2.6287768574123053e-5,-9.704433569738843e-9,-5.457752704343605e-5,-2.623553492658023e-5,-9.703008653848694e-9,-5.456957532646678e-5,-2.6260220049275858e-5,-9.704121931504624e-9,-5.451464446828428e-5,-2.6340246599419492e-5,-9.707335422027123e-9,-5.439995050230707e-5,-2.6448131932234545e-5,-9.711898924726039e-9,-5.422339633670513e-5,-2.6555532499365036e-5,-9.716981565914689e-9,-5.399194066121386e-5,-2.663678226094542e-5,-9.721842938139277e-9,-5.37197431734721e-5,-2.667116151947731e-5,-9.725902670942154e-9,-5.342650643560834e-5,-2.6644534881516494e-5,-9.728727486336505e-9,-5.313587618209729e-5,-2.655097739679037e-5,-9.729995225631237e-9,-5.287334596399925e-5,-2.639462790136861e-5,-9.72950469114869e-9,-5.266297173036476e-5,-2.619143036945524e-5,-9.727266597271218e-9,-5.252243553464907e-5,-2.596971389861331e-5,-9.723645863256587e-9,-5.245681707745194e-5,-2.5767877042401753e-5,-9.719459836489783e-9,-5.245295661436816e-5,-2.562748717562385e-5,-9.715914975816248e-9,-5.247784135201871e-5,-2.558182145120203e-5,-9.714321344765071e-9,-5.248433005910525e-5,-2.5643167778965002e-5,-9.71565414605581e-9,-5.242443255043768e-5,-2.5794981125069657e-5,-9.720157774265109e-9,-5.2265507859568556e-5,-2.599424952537427e-5,-9.727205074415084e-9,-5.200192042456586e-5,-2.6184413784918434e-5,-9.735490249337039e-9,-5.165673914621095e-5,-2.6313264574752945e-5,-9.743443035999223e-9,-5.127351919687404e-5,-2.6348054742647138e-5,-9.749667801257827e-9,-5.0902725125982576e-5,-2.6282713166082426e-5,-9.75326720347049e-9,-5.0588284184408174e-5,-2.6136491038281e-5,-9.754009356253531e-9,-5.0357993370069754e-5,-2.5946393683606597e-5,-9.752342082004198e-9,-5.0219232993974796e-5,-2.5756667981670227e-5,-9.749262933352734e-9,-5.015982106504244e-5,-2.5608303159542794e-5,-9.746061951023208e-9,-5.0152906269271166e-5,-2.5530759317958693e-5,-9.743991748123502e-9,-5.016424167598713e-5,-2.5537314473559887e-5,-9.743957229389409e-9,-5.015987799753719e-5,-2.5624510658344092e-5,-9.746324283706057e-9,-5.011244865581866e-5,-2.5775123374663638e-5,-9.750904754883811e-9,-5.000492623338741e-5,-2.596321755352963e-5,-9.757101352467545e-9,-4.9831698223674514e-5,-2.6159651038122543e-5,-9.764134932390347e-9,-4.959756293540752e-5,-2.6336794409959954e-5,-9.77125471218565e-9,-4.9315586018946434e-5,-2.6471880876366733e-5,-9.777857341227311e-9,-4.900467765247903e-5,-2.6549048296052148e-5,-9.78350042703132e-9,-4.868733505302663e-5,-2.6560573645593127e-5,-9.787854781108205e-9,-4.8387507995782974e-5,-2.6507830841147043e-5,-9.790671063781774e-9,-4.812820015775109e-5,-2.640221991296037e-5,-9.791823659827242e-9,-4.792822925558667e-5,-2.626586053182433e-5,-9.791440657019166e-9,-4.7797688235235664e-5,-2.6131146731513124e-5,-9.790058210807481e-9,-4.7732434736905576e-5,-2.603750245204811e-5,-9.788680030956192e-9,-4.770949127982192e-5,-2.602362103765612e-5,-9.788622629016349e-9,-4.768699088683465e-5,-2.6115132800391774e-5,-9.791115783371455e-9,-4.7612514838547504e-5,-2.6311416798164514e-5,-9.796791594098938e-9,-4.744004786748611e-5,-2.6579162837951064e-5,-9.805340798551625e-9,-4.714894275327642e-5,-2.68596183979786e-5,-9.81558384504337e-9,-4.675409408145582e-5,-2.7088789244523173e-5,-9.82593563524379e-9,-4.63007016373858e-5,-2.7220538865820394e-5,-9.834966162719081e-9,-4.584698755933853e-5,-2.7240537539346205e-5,-9.841756608580806e-9,-4.544489497457328e-5,-2.716612358051693e-5,-9.845989371386469e-9,-4.512720869220526e-5,-2.7035870592725035e-5,-9.847894204339548e-9,-4.490350340869352e-5,-2.6895966227287968e-5,-9.848150476851382e-9,-4.4762813526265216e-5,-2.6788619054627426e-5,-9.847749002642056e-9,-4.467974944751262e-5,-2.6744535726717833e-5,-9.847788854326644e-9,-4.4621551529998665e-5,-2.67793858092927e-5,-9.849227199555758e-9,-4.4554711427458415e-5,-2.6893402551401513e-5,-9.852654250504786e-9,-4.445048423814215e-5,-2.7073346152810357e-5,-9.858177344922723e-9,-4.428881976659844e-5,-2.7296183901073322e-5,-9.865455416384905e-9,-4.406041691263042e-5,-2.753370714423536e-5,-9.873857188997167e-9,-4.376691930956634e-5,-2.7757247847319554e-5,-9.882664459772306e-9,-4.3419538053046194e-5,-2.7941805347373132e-5,-9.891234414250543e-9,-4.303660454191013e-5,-2.8069095603610774e-5,-9.899069051818642e-9,-4.264069174434751e-5,-2.8129368229640377e-5,-9.90579879900749e-9,-4.2255769073996823e-5,-2.8122238695490774e-5,-9.911139409555858e-9,-4.1904486407320275e-5,-2.8056896725693683e-5,-9.914892497705433e-9,-4.160543814119917e-5,-2.7951878164291356e-5,-9.9170275201943e-9,-4.137010911506443e-5,-2.783431847991674e-5,-9.917825281106567e-9,-4.119921521788755e-5,-2.7738086497587085e-5,-9.917998408072091e-9,-4.107878264055179e-5,-2.769954625238172e-5,-9.91867215364473e-9,-4.097763615938715e-5,-2.7749689768273665e-5,-9.921139370467895e-9,-4.0849404904229084e-5,-2.7902797854934692e-5,-9.926407792259145e-9,-4.0642441010064514e-5,-2.8145057541786642e-5,-9.934713814169385e-9,-4.031787237599612e-5,-2.8430538779043658e-5,-9.945298702787681e-9,-3.9868810330146976e-5,-2.8691908882654146e-5,-9.9566665170196e-9,-3.932833565054289e-5,-2.8864961803409028e-5,-9.967212572062042e-9,-3.875854394725441e-5,-2.891437192128338e-5,-9.975808367109482e-9,-3.822616913640833e-5,-2.8845330760606945e-5,-9.98201180056612e-9,-3.777943806979286e-5,-2.869613572190929e-5,-9.98594693625295e-9,-3.743725664498184e-5,-2.8519754654329504e-5,-9.98810862349428e-9,-3.719134397363045e-5,-2.8366020937962917e-5,-9.989234069973608e-9,-3.701525587842487e-5,-2.8270836040562245e-5,-9.99020103086058e-9,-3.6874340673262915e-5,-2.8252557552493445E-05,-9.991881928374356e-9,-3.6733633947777075e-5,-2.831302992680173e-5,-9.994958846882884e-9,-3.656313374093195e-5,-2.844073037686516e-5,-9.999766501751608e-9,-3.634100881655143e-5,-2.8614561011922926e-5,-1.000623541918002e-8,-3.605533964519792e-5,-2.8807801587885512e-5,-1.0013957531492734e-8,-3.570465334841229e-5,-2.8992079074828512e-5,-1.0022338457116705e-8,-3.529734816247884e-5,-2.914116709250595e-5,-1.0030762046344616e-8,-3.485006993645185e-5,-2.92343805861204e-5,-1.0038702615702036e-8,-3.4385142229079815e-5,-2.9259238226273796e-5,-1.0045757091094494e-8,-3.3927359255493513e-5,-2.9213049460563632e-5,-1.0051621058011619e-8,-3.350058407226353e-5,-2.9103332940466208e-5,-1.0056066702504657e-8,-3.3124457063630464e-5,-2.8947189972084985e-5,-1.0058976990550987e-8,-3.2811366323358286e-5,-2.8769735723801098e-5,-1.0060445345746964e-8,-3.256375787328263e-5,-2.8601623226662544e-5,-1.0060897143616392e-8,-3.2371816097269846e-5,-2.8475488693954947e-5,-1.0061145174295647e-8,-3.221189052935458e-5,-2.842075314931494e-5,-1.0062287880142022e-8,-3.204694100578321e-5,-2.8456309260332803e-5,-1.0065415316236122e-8,-3.183109485034811e-5,-2.8581804503757855e-5,-1.007118993199182e-8,-3.152026648812525e-5,-2.877048997646703e-5,-1.0079484318373714e-8,-3.108835216793204e-5,-2.8969238348406404e-5,-1.0089312218910324e-8,-3.0542974461299724e-5,-2.911131486583659e-5,-1.0099182540644034e-8,-2.992994780628945e-5,-2.9140766616140142e-5,-1.0107715115987456e-8,-2.9319253695152042e-5,-2.9036541761832005e-5,-1.0114124886146775e-8,-2.877809393386789e-5,-2.8820960229194144e-5,-1.0118307228329601e-8,-2.8346852894650365e-5,-2.8547443251060635e-5,-1.0120625267983092e-8,-2.803055359693186e-5,-2.8277133796314353e-5,-1.0121677071264258e-8,-2.7805852942645365e-5,-2.8058810315545394e-5,-1.0122171969069935e-8,-2.7634885870697304e-5,-2.7919586021142028e-5,-1.0122851241518537e-8,-2.7477784344898564e-5,-2.7865136011979794e-5,-1.0124374041290903e-8,-2.73005681768325e-5,-2.788470342701019e-5,-1.0127178785398857e-8,-2.707876938176712e-5,-2.7957027015369363e-5,-1.0131386580299943e-8,-2.6798428484780897e-5,-2.8055381987984983e-5,-1.0136799525049531e-8,-2.6455880523470634e-5,-2.8151496961065997e-5,-1.0142993650083491e-8,-2.6056989964450905e-5,-2.8218751221123247e-5,-1.0149458252670142e-8,-2.5615936366383297e-5,-2.82350089513246e-5,-1.0155717100330529e-8,-2.5153423477268736e-5,-2.8185218808561722e-5,-1.0161389371918144e-8,-2.469410784372093e-5,-2.80636100261117e-5,-1.0166188348621973e-8,-2.426321414819864e-5,-2.787501653366006e-5,-1.0169893731105325e-8,-2.3882668480529245e-5,-2.763487038497263e-5,-1.01723489245492e-8,-2.3567286234310905e-5,-2.7367666919278267e-5,-1.017351616196784e-8,-2.332156842397692e-5,-2.7103905438103306e-5,-1.017357593949472e-8,-2.3137641969046203e-5,-2.6875705732266855e-5,-1.0173013410180529e-8,-2.299476051584912e-5,-2.6711500845227497E-05,-1.017261329344951e-8,-2.2860705750699917e-5,-2.663018704620786e-5,-1.0173308322342749e-8,-2.2695665047880168e-5,-2.663518611623227e-5,-1.017589092482202e-8,-2.2459337873909423e-5,-2.6709603552242226e-5,-1.0180685150351775e-8,-2.212140867809451e-5,-2.6814846177850375e-5,-1.0187337375833014e-8,-2.1673671732367735e-5,-2.6895869468464378e-5,-1.0194873028803975e-8,-2.1139047774474032e-5,-2.68952440266726e-5,-1.0202044877588625e-8,-2.0570501852735378e-5,-2.6773653165214853e-5,-1.0207808391111026e-8,-2.0035779945461135e-5,-2.6527596262472074e-5,-1.0211650200164242e-8,-1.95929968856085e-5,-2.6192859779762135e-5,-1.0213616507492086e-8,-1.9270119523824262e-5,-2.5830075681245798e-5,-1.021413380368983e-8,-1.905933904298975e-5,-2.5500927912146165e-5,-1.021381348729072e-8,-1.892657043021345e-5,-2.5248592103061754e-5,-1.0213321886218076e-8,-1.8827443033921196e-5,-2.5090146839981592e-5,-1.0213277816654462e-8,-1.8720869387209668e-5,-2.5019585350191788e-5,-1.0214142627298827e-8,-1.8576464284264876e-5,-2.5015668692887527e-5,-1.0216127260583814e-8,-1.8376611843414558e-5,-2.504980617624261e-5,-1.0219166169699748e-8,-1.8115567499788158e-5,-2.5091878000311348e-5,-1.022297593256864e-8,-1.77975879404375e-5,-2.511396168920078e-5,-1.0227169183059294e-8,-1.743505293856026e-5,-2.5092754555130803e-5,-1.0231368833090536e-8,-1.7046707371919865e-5,-2.5011456803880348e-5,-1.0235274298180084e-8,-1.6655740859370975e-5,-2.4861532084328557e-5,-1.023866489114029e-8,-1.6287282974612118e-5,-2.464432330060455e-5,-1.0241365206381334e-8,-1.596501252310151e-5,-2.4372025169081737e-5,-1.024321801882643e-8,-1.570702113141324e-5,-2.406725812436014e-5,-1.0244103967347291e-8,-1.552160951313559e-5,-2.376063009939192e-5,-1.0244017040254267e-8,-1.5404061827608693e-5,-2.3486101581026236e-5,-1.0243161489551215e-8,-1.5335535519959935e-5,-2.327460877469775e-5,-1.0242006517918706e-8,-1.5284891552236783e-5,-2.314712391361825e-5,-1.0241237021644048e-8,-1.5213603604440276e-5,-2.3108728191468194e-5,-1.0241580512137116e-8,-1.5083201808082548e-5,-2.3145172717351075e-5,-1.0243555303704379e-8,-1.4864218209902013e-5,-2.32231622645874e-5,-1.0247243960115732e-8,-1.4545036900022462e-5,-2.3295366098052616e-5,-1.0252208937023976e-8,-1.4138251105215157e-5,-2.3310524416851092e-5,-1.0257614027791928e-8,-1.368146422366092e-5,-2.322748601135849e-5,-1.0262512342819018e-8,-1.322989051622768e-5,-2.3029486169829173e-5,-1.0266164007946504e-8,-1.2840855736179594e-5,-2.2732545405069593e-5,-1.0268236392507776e-8,-1.2555169579427251e-5,-2.238231187733215e-5,-1.0268825150242116e-8,-1.2383914527037539e-5,-2.2038912589209548e-5,-1.0268347802691693e-8,-1.2307249887307113e-5,-2.1756613087809175e-5,-1.0267393640885903e-8,-1.2284812012886326e-5,-2.156813016555327e-5,-1.0266572608916944e-8,-1.2270971936084373e-5,-2.1479552451146128e-5,-1.0266376938115249e-8,-1.2227457536302338e-5,-2.1474911265539056e-5,-1.0267077590847187e-8,-1.2129749205895953e-5,-2.1525263563921737e-5,-1.0268689111523196e-8,-1.1967892292312714e-5,-2.1597450054922837e-5,-1.0271017429226725e-8,-1.174422548889918e-5,-2.166023896731968e-5,-1.0273764819876203e-8,-1.1470257655664928e-5,-2.1687790859828148e-5,-1.0276640831595281e-8,-1.1163872918540682e-5,-2.16613873970703e-5,-1.0279429528370393e-8,-1.0847087574647729e-5,-2.1570437594962387e-5,-1.0281991235380007e-8,-1.0544002989509588e-5,-2.141339145539365e-5,-1.0284216045362617e-8,-1.0278390240021108e-5,-2.1198652865103365e-5,-1.0285974464584003e-8,-1.0070447996162899e-5,-2.0945037086426453e-5,-1.028711043152021e-8,-9.932690801530476e-6,-2.068088652200719e-5,-1.028749799157689e-8,-9.86563644678306e-6,-2.0440844298465255e-5,-1.0287141168707594e-8,-9.854764583517574e-6,-2.0259766952748523e-5,-1.028626273479879e-8,-9.870619619233569e-6,-2.01644508838674e-5,-1.0285319481300823e-8,-9.8733786193769e-6,-2.0165339281957866e-5,-1.0284908068411034e-8,-9.821625784056985e-6,-2.0251252759600633e-5,-1.0285579389915266e-8,-9.683168074476673e-6,-2.0389683901633625e-5,-1.0287635145367275e-8,-9.444561568473699e-6,-2.053338593781372e-5,-1.0290997813059452e-8,-9.116224347150207e-6,-2.063177957102368e-5,-1.0295216467786993e-8,-8.731339354531077e-6,-2.0644132770129046e-5,-1.0299605534523448e-8,-8.338457137712565e-6,-2.055092931652111e-5,-1.030345694288755e-8,-7.98933323349338e-6,-2.0360097137701205e-5,-1.0306242488373733e-8,-7.72506620945875e-6,-2.0105711184980106e-5,-1.0307743277604975e-8,-7.564775484823967e-6,-1.983876173135379e-5,-1.0308080804889762e-8,-7.500921681843046e-6,-1.9612526930376168e-5,-1.0307656350511951e-8,-7.503139782780013e-6,-1.946768074753192e-5,-1.0307019062928134e-8,-7.528820005869814e-6,-1.9422601531502887e-5,-1.0306699910081859e-8,-7.535794278292598e-6,-1.947177763761887e-5,-1.0307063665786794e-8,-7.492269894596984e-6,-1.959128917115925e-5,-1.0308233957531626e-8,-7.381486721375345e-6,-1.974765598713154e-5,-1.0310113143840973e-8,-7.201498312177095e-6,-1.990624677978869e-5,-1.031247670749912e-8,-6.962107167616799e-6,-2.0037161470478344e-5,-1.031508699283958e-8,-6.680993863389137e-6,-2.011834907841151e-5,-1.0317770097194946e-8,-6.380273436048308e-6,-2.0136768138740442e-5,-1.032042648831648e-8,-6.0838277247680745e-6,-2.0088636779103125e-5,-1.0322983928965702e-8,-5.815108860030673e-6,-1.9979521669310532e-5,-1.0325335032912242e-8,-5.594817165694961e-6,-1.9824453315227466e-5,-1.0327309582072665e-8,-5.437930590768389e-6,-1.9647685779100526e-5,-1.0328712972235372e-8,-5.349939383493514e-6,-1.948122710398913e-5,-1.0329423078834094e-8,-5.3228826376455855e-6,-1.936095973346019e-5,-1.0329498903693821e-8,-5.332864110333339e-6,-1.9319532507723174e-5,-1.0329235310495402e-8,-5.341522628441661e-6,-1.9376734531154476e-5,-1.0329117209882681e-8,-5.303353476159965e-6,-1.953039383977173e-5,-1.0329676054612896e-8,-5.17823507516099e-6,-1.9752454282041895e-5,-1.0331308373795825e-8,-4.945019491343102e-6,-1.9993909540435985e-5,-1.0334140752283602e-8,-4.610138350751177e-6,-2.019829297048899e-5,-1.0337995748268947e-8,-4.206914461260477e-6,-2.0318725218684748e-5,-1.0342450652703292e-8,-3.7858145479968068e-6,-2.033162353691172e-5,-1.0346947057188743e-8,-3.3999204340748854e-6,-2.0242322080569558e-5,-1.0350921705190584e-8,-3.090978422107698e-6,-2.0081863583639396e-5,-1.035394277316305e-8,-2.879939472361453e-6,-1.9897267305424163e-5,-1.0355827001534681e-8,-2.7637461044958318e-6,-1.9738805558921248e-5,-1.035669501194934e-8,-2.7182918430026305e-6,-1.9647845328083208e-5,-1.0356930437472887e-8,-2.706078182001334e-6,-1.964815539595743e-5,-1.0357046501868146e-8,-2.6861280184476436e-6,-1.9742416449230415e-5,-1.035751449251452e-8,-2.623356484294166e-6,-1.9914165200530054e-5,-1.0358627867133187e-8,-2.495051690997066e-6,-2.0133848461016657e-5,-1.0360457505484327e-8,-2.2933525948354025e-6,-2.0366613404506264e-5,-1.0362901596694904e-8,-2.024101506874866e-6,-2.057945330065126e-5,-1.036578541391425e-8,-1.703438490176005e-6,-2.0746243231691587e-5,-1.0368950180661795e-8,-1.353670649395772e-6,-2.085034603832491e-5,-1.0372285844231933e-8,-9.995092065925437e-7,-2.0885306200609506e-5,-1.0375703780683756e-8,-6.650892091385618e-7,-2.085449651147433e-5,-1.0379079635308058e-8,-3.715968940342627e-7,-2.0770428531116953e-5,-1.0382217349452199e-8,-1.3503446063713592e-7,-2.065397945826239e-5,-1.0384871607393536e-8,3.635039213145238e-8,-2.053328258334241e-5,-1.0386834569506982e-8,1.451554926153161e-7,-2.0441523455916053e-5,-1.038805057918194e-8,2.0789280435282035e-7,-2.041250688557186e-5,-1.0388697272151172e-8,2.56355366977416e-7,-2.047315309918241e-5,-1.0389176849844525e-8,3.3464806040304173e-7,-2.0633626967615144e-5,-1.039000389350313e-8,4.896682666698106e-7,-2.0878520990299207e-5,-1.0391635630909641e-8,7.558554175414243e-7,-2.1164864508976094e-5,-1.0394332164603972e-8,1.1400137473200676e-6,-2.143168146622313e-5,-1.039811235383832e-8,1.6149011662753742e-6,-2.161972150492724e-5,-1.040278944838272e-8,2.1267889603254867e-6,-2.169252145724684e-5,-1.0408016370122865e-8,2.613791080986166e-6,-2.1648099623553002e-5,-1.0413314414030032e-8,3.0255611796536674e-6,-2.1516600834236966e-5,-1.0418136661790554e-8,3.335896657502066e-6,-2.1347475609993867e-5,-1.0422008383847894e-8,3.5455028334495375e-6,-2.1193595706788387e-5,-1.0424695027343131e-8,3.6771057866818085e-6,-2.1098205117584193e-5,-1.0426297045670991e-8,3.766730983759074e-6,-2.1087212163472165e-5,-1.0427207186394536e-8,3.8543118584060025e-6,-2.116678673670468e-5,-1.0427955059979016e-8,3.97556153049034e-6,-2.1325112935168602e-5,-1.0429021553114722e-8,4.156112148298531e-6,-2.1536968915716497e-5,-1.043071137120023e-8,4.4083884967787636e-6,-2.1769858276116903e-5,-1.0433124870667529e-8,4.731238299426264e-6,-2.199039967092715e-5,-1.0436213182297564e-8,5.111871251593329e-6,-2.216982148981789e-5,-1.0439862617282118e-8,5.5293180610449155e-6,-2.228781360239789e-5,-1.0443951826756803e-8,5.958483105439134e-6,-2.2334471279948907e-5,-1.0448355486385057e-8,6.3739591557127685e-6,-2.2310548005592115e-5,-1.0452908274701619e-8,6.753167656295747e-6,-2.2226596306971968e-5,-1.0457371227043073e-8,7.0788641774440105e-6,-2.2101555638768476e-5,-1.0461442256004719e-8,7.341270437022586e-6,-2.19610250197676e-5,-1.0464828194753588e-8,7.540107011405848e-6,-2.18351220744106e-5,-1.0467357564690674e-8,7.686656069240698e-6,-2.1755428418429816e-5,-1.0469080980364281e-8,7.805377469636384e-6,-2.175014455624397e-5,-1.047029980195859e-8,7.933563002743403e-6,-2.1836872868918745e-5,-1.0471493607166954e-8,8.116719413656968e-6,-2.2013889674084526e-5,-1.0473170238320335e-8,8.397782946960609e-6,-2.2253242470900754e-5,-1.0475713376965965e-8,8.801167458084262e-6,-2.2501424654771112e-5,-1.0479313312473675e-8,9.31809147430383e-6,-2.2692544610459407e-5,-1.0483994091602052e-8,9.903277804372193e-6,-2.2771894060168208e-5,-1.0489651043077342e-8,1.0488693236733184e-5,-2.2718401944810526e-5,-1.0496011071352977e-8,1.1008517592282977e-5,-2.2552507598399298e-5,-1.0502567400688094e-8,1.14214527653244e-5,-2.2325484053898436e-5,-1.0508639692043991e-8,1.1719729539192924e-5,-2.2098427892878435e-5,-1.051360321451119e-8,1.192434757606461e-5,-2.192293983959106e-5,-1.0517149141774825e-8,1.2073148493867486e-5,-2.1830348879371115e-5,-1.0519399549919799e-8,1.2208507379845121e-5,-2.1829582167914723e-5,-1.0520823108331641e-8,1.2368142087573956e-5,-2.1910517424363665e-5,-1.0522026852220468e-8,1.2579647860001937e-5,-2.204963465047748e-5,-1.0523548294514526e-8,1.2858046046948135e-5,-2.2216044306126058e-5,-1.052573427092128e-8,1.3205504635807662e-5,-2.2377097194277054e-5,-1.0528728383253077e-8,1.3612660353343853e-5,-2.2503232700248113e-5,-1.0532528837699294e-8,1.4061128311368573e-5,-2.257179941745656e-5,-1.053705767622001e-8,1.4526835423976653e-5,-2.2569659248670465e-5,-1.0542194374134102e-8,1.4983796312142356e-5,-2.2494425657141477e-5,-1.0547763574333112e-8,1.5407831934948618e-5,-2.2354282969079747e-5,-1.0553504640982075e-8,1.5779770461427512e-5,-2.2166624359187616e-5,-1.0559067684047334e-8,1.608797482690634e-5,-2.195590135189993e-5,-1.0564065337397685e-8,1.6330245854374478e-5,-2.1750905552668204e-5,-1.0568177866410433e-8,1.6515130621988764e-5,-2.1581513602797013e-5,-1.0571271898841906e-8,1.6662595891771928e-5,-2.1474755707688038e-5,-1.0573475716392125e-8,1.680367989659793e-5,-2.144982680559584e-5,-1.0575164031555221e-8,1.6977991855744892e-5,-2.15119081550659e-5,-1.0576851619497795e-8,1.7227451460833117e-5,-2.164590037929872e-5,-1.0579043607594197e-8,1.758528349482335e-5,-2.1813063305720084e-5,-1.0582122319913347e-8,1.8061786594786307e-5,-2.1955189701945334e-5,-1.058632473338257e-8,1.8632948981106676e-5,-2.200995658499017e-5,-1.0591773118012249e-8,1.9241195983456193e-5,-2.193466323120593e-5,-1.0598445172373046e-8,1.981317133003406e-5,-2.1726452282952587e-5,-1.0606040069575834e-8,2.0287448616256157e-5,-2.1425281858291863e-5,-1.061388459734303e-8,2.0636332778655594e-5,-2.109672690297479e-5,-1.0621077002227759e-8,2.087033260256244e-5,-2.0805852875933422e-5,-1.0626847060734854e-8,2.1026869693195923e-5,-2.0597119217422514e-5,-1.0630882019558624e-8,2.115329294074093e-5,-2.0487273010198692e-5,-1.0633405474768798e-8,2.129300028400665e-5,-2.0468775249628576e-5,-1.0635008899056331e-8,2.1477766769687902e-5,-2.0517857674518222e-5,-1.0636384654839218e-8,2.172530639983127e-5,-2.0602735888928814e-5,-1.0638109815842078e-8,2.203989369531137e-5,-2.0690072956350867e-5,-1.0640550610319622e-8,2.2414327228279076e-5,-2.0749586688981025e-5,-1.0643876480653403e-8,2.2832428864176618e-5,-2.075731437602081e-5,-1.0648123545462657e-8,2.327186373709147e-5,-2.06979052512023e-5,-1.065324691100052e-8,2.370725263408254e-5,-2.056607264478361e-5,-1.065912813728469e-8,2.4113571523498897e-5,-2.0367140342581537e-5,-1.0665546197757955e-8,2.4469666599175597e-5,-2.011644324456059e-5,-1.067215081453571e-8,2.4761457155718238e-5,-1.9837455761494462e-5,-1.0678483547801098e-8,2.4984396740016067e-5,-1.9558825643028435e-5,-1.0684064625935296e-8,2.5144939672969598e-5,-1.9310587473940774e-5,-1.0688525639022025e-8,2.5260818881569855e-5,-1.9119802585786575e-5,-1.06917361236997e-8,2.535994562171527e-5,-1.9005914717674657e-5,-1.069386581323808e-8,2.5477696466233576e-5,-1.897609088271257e-5,-1.0695349149176802e-8,2.5652094341733997e-5,-1.902096367210599e-5,-1.0696767956414568e-8,2.5916298087693046e-5,-1.9111975005796678e-5,-1.0698709732170148e-8,2.628859728374691e-5,-1.9202643001807574e-5,-1.0701666562329869e-8,2.6762094197675117e-5,-1.9236556751696734e-5,-1.0705996336353121e-8,2.729911355674748e-5,-1.9163344524585584e-5,-1.0711891767678148e-8,2.783684602254258e-5,-1.895885387153898e-5,-1.0719277613221644e-8,2.8306670586864564e-5,-1.8639334239086277e-5,-1.072766183557865e-8,2.8659855505782475e-5,-1.8258763113995928e-5,-1.073612159190717e-8,2.8885279659063856e-5,-1.7888184927921706e-5,-1.0743575505291491e-8,2.9009231738796605e-5,-1.7588764782654586e-5,-1.0749225136080199e-8,2.908000233439939e-5,-1.7393518711195572e-5,-1.0752864147570606e-8,2.914855079008243e-5,-1.7304111401313012e-5,-1.0754868997586099e-8,2.9254770735155143e-5,-1.7298721919266967e-5,-1.0755947029287413e-8,2.9421960148790195e-5,-1.73433769434448e-5,-1.0756840443938963e-8,2.9657262395368594e-5,-1.7401543433202763e-5,-1.075813349050785e-8,2.9954830790562838e-5,-1.7440335048629465e-5,-1.0760197584755174e-8,3.0299471035757358e-5,-1.7433879737981824e-5,-1.0763229561035464e-8,3.066988743140981e-5,-1.7365039408173015e-5,-1.0767308977273792e-8,3.104156445903691e-5,-1.7226340848682806e-5,-1.0772421289059723e-8,3.138958150404849e-5,-1.7020431608455362e-5,-1.0778433463519163e-8,3.169160978062888e-5,-1.67599800034654e-5,-1.0785050830896731e-8,3.193113385062856e-5,-1.6466649719056538e-5,-1.0791801522036606e-8,3.2100549457274216e-5,-1.6168735086317945e-5,-1.0798090040294278e-8,3.2203473041458363e-5,-1.5897357896149383e-5,-1.080332573716205e-8,3.225558795119785e-5,-1.568153341658853e-5,-1.0807089151843031e-8,3.2283527758016355e-5,-1.5542734995758057e-5,-1.0809272801144117e-8,3.232156973954858e-5,-1.548986537631878e-5,-1.0810136690642487e-8,3.24062788787755e-5,-1.551564386066977e-5,-1.0810253821627843E-08,3.256954672694955e-5,-1.5595319915829232e-5,-1.0810370807169095e-8,3.2830743045217534e-5,-1.5688646392023816e-5,-1.0811243374832355e-8,3.318930936264058e-5,-1.5746136030541182e-5,-1.0813499406816032e-8,3.362016828548337e-5,-1.572010074949781e-5,-1.0817540474292183e-8,3.4075238666891787e-5,-1.5579179787124913e-5,-1.0823450353064908e-8,3.449382518613816e-5,-1.532196370613026e-5,-1.0830892582439516e-8,3.482107455406541e-5,-1.498254328611866e-5,-1.0839063244369992e-8,3.502767239053273e-5,-1.4622079522363778e-5,-1.0846829814097262e-8,3.5120439857015004e-5,-1.4307820231652071e-5,-1.085309302508078e-8,3.51375862864246e-5,-1.4089687106817873e-5,-1.085719959088525e-8,3.513199200269295e-5,-1.3986345854532377e-5,-1.085914650566585e-8,3.51525500412995e-5,-1.3985560988209588e-5,-1.085947705163363e-8,3.523209339490654e-5,-1.4054646803086456e-5,-1.0858988747294016e-8,3.5384088933798624e-5,-1.4153334684894148e-5,-1.0858452300955869e-8,3.560538153213612e-5,-1.4243709791482467e-5,-1.0858457682387729e-8,3.5881218350812025e-5,-1.4295764431560704e-5,-1.0859389106431877e-8,3.619005612992247e-5,-1.4289538747822578e-5,-1.0861464399875234e-8,3.650727263331189e-5,-1.4215445163763979e-5,-1.0864770150441248e-8,3.680795793798622e-5,-1.4073968871802461e-5,-1.0869255064842456e-8,3.7069338849790505e-5,-1.3875233842953704e-5,-1.0874690311021376e-8,3.7273324238066565e-5,-1.3638322204225281e-5,-1.0880636211450608e-8,3.740935211446729e-5,-1.338984019635138e-5,-1.0886460859978193e-8,3.747723555199965e-5,-1.3161108246832657e-5,-1.0891439508632244e-8,3.748918890039127e-5,-1.2983612439641286e-5,-1.0894923864558378e-8,3.746992648426565e-5,-1.2882969889767162e-5,-1.0896531846094513e-8,3.745388166964016e-5,-1.2872486930655807e-5,-1.089628939077259e-8,3.7479301400060466e-5,-1.2948111531254483e-5,-1.089466332568615e-8,3.758006931596514e-5,-1.3086710784613064e-5,-1.0892467653005773e-8,3.7777099336497654e-5,-1.3248905734680901e-5,-1.0890674230236611e-8,3.807156828641263e-5,-1.3386503835473725e-5,-1.0890190192257392e-8,3.844207700891592e-5,-1.3453370708504295e-5,-1.0891659080748418e-8,3.8847217212184006e-5,-1.341755372714709e-5,-1.0895313751720727e-8,3.9234030267991595e-5,-1.3271607631699584e-5,-1.090089279363746e-8,3.955132226947631e-5,-1.3037539781839813e-5,-1.0907643242370493e-8,3.976462669241938e-5,-1.2763223288738137e-5,-1.0914452499003047e-8,3.9867493531828635e-5,-1.250952451713426e-5,-1.0920130006578416e-8,3.988372523989806e-5,-1.2331758085782543e-5,-1.0923768775661982e-8,3.9858740281902724e-5,-1.226291312067013e-5,-1.0925025267279314e-8,3.98438771345933e-5,-1.2305852412647015e-5,-1.0924174807119913e-8,3.988096864166715e-5,-1.2436775734862486e-5,-1.092193559817097e-8,3.9993234799773925e-5,-1.2616327199137168e-5,-1.0919186656117713e-8,4.0184029323987886e-5,-1.2802124998079611e-5,-1.0916728214422174e-8,4.0441034122307655e-5,-1.295806215039957e-5,-1.0915158387722742e-8,4.07423430323965e-5,-1.3059008181614689e-5,-1.0914851840032176e-8,4.106194258997215e-5,-1.309190696252388e-5,-1.0915982377055156e-8,4.137369026554492e-5,-1.305496471159586e-5,-1.0918538217819229e-8,4.165397699143815e-5,-1.295627528662622e-5,-1.0922312589289403e-8,4.188372567499801e-5,-1.281253335343146e-5,-1.0926886273075621e-8,4.205038798547874e-5,-1.2647779157268254e-5,-1.0931637253225023e-8,4.2150263329725885e-5,-1.2491600175957169e-5,-1.0935808929506866e-8,4.219089514943613e-5,-1.2376014975777942e-5,-1.0938645719799141e-8,4.219264556971658e-5,-1.2330443038611213e-5,-1.0939574041035733e-8,4.2187994684927e-5,-1.2374868917154073e-5,-1.0938381011529256e-8,4.221708942536862e-5,-1.251262722220375e-5,-1.0935330563847715e-8,4.2319148750577894e-5,-1.272563608677644e-5,-1.0931164753811414e-8,4.252146931834362e-5,-1.2975210570017808e-5,-1.0926967333923104e-8,4.282981205890698e-5,-1.3209939979367455e-5,-1.0923913734952636e-8,4.3224317253663856e-5,-1.3379021269503886e-5,-1.092296888156952e-8,4.3663191015489984e-5,-1.3446687017306154e-5,-1.0924616375420668e-8,4.40932553261884e-5,-1.3402692615521834e-5,-1.0928699864093918e-8,4.446391154055205e-5,-1.3265486287865059e-5,-1.0934436131087437e-8,4.4740262897078254e-5,-1.3077370375528966e-5,-1.0940609312170373e-8,4.491180449520049e-5,-1.2893262674070154e-5,-1.0945898968800855e-8,4.49944176700801e-5,-1.2766207079580588e-5,-1.0949239480507803e-8,4.502512200115446e-5,-1.273370298418019e-5,-1.0950092267772875e-8,4.505116850684658e-5,-1.2808910095088956e-5,-1.0948539845884595e-8,4.511705275984765e-5,-1.2979305349759284e-5,-1.0945188231944347e-8,4.5253768849291526e-5,-1.3212635289537497e-5,-1.0940942427650663e-8,4.547343858202198e-5,-1.3467274984818715e-5,-1.093675586758881e-8,4.576991139681106e-5,-1.370288962080165e-5,-1.0933437996680767e-8,4.6123562686564354e-5,-1.3888173614010929e-5,-1.0931552459312198e-8,4.6507586318521756e-5,-1.4004532581867268e-5,-1.0931388495325245e-8,4.689364295154041e-5,-1.404638935558007e-5,-1.0932970781736282e-8,4.725592017948633e-5,-1.401955872819049e-5,-1.0936077710211673e-8,4.7573669880768315e-5,-1.3939013934426217e-5,-1.0940262282537435e-8,4.783282623871706e-5,-1.3826794886489019e-5,-1.0944887017204275e-8,4.8027394648472436e-5,-1.3710116999369636e-5,-1.0949190756732851e-8,4.816102679731794e-5,-1.361918978051325e-5,-1.095239527820225e-8,4.824866180786038e-5,-1.3583965343721564e-5,-1.0953844774146032e-8,4.8317389669767263E-05,-1.3629077500997938e-5,-1.0953156144793383e-8,4.8404937665998705e-5,-1.3766894228811147e-5,-1.0950352515756894e-8,4.85539270343216e-5,-1.3990186698127629e-5,-1.094594628661613e-8,4.880120852726276e-5,-1.4267952993854126e-5,-1.0940929580088114e-8,4.9164604434804093e-5,-1.4548760923785778e-5,-1.0936627198037842e-8,4.963284107903462e-5,-1.4773613411439147e-5,-1.0934389782899522e-8,5.016508945338154e-5,-1.4894876338232566e-5,-1.0935178671721424e-8,5.070227547728938e-5,-1.4892932210451892e-5,-1.0939190020118924e-8,5.118560276541905e-5,-1.4782534477633037e-5,-1.0945713139716886e-8,5.157392379064546e-5,-1.4606625431828425e-5,-1.095332893238933e-8,5.185338963389235e-5,-1.4421810233716862e-5,-1.0960371481365232e-8,5.203770610741841e-5,-1.4282157086463557e-5,-1.0965440644733544e-8,5.216122418436789e-5,-1.422646572966351e-5,-1.0967760623641757e-8,5.226841451573015e-5,-1.4271353392898255e-5,-1.0967288706004566e-8,5.2402901302713924e-5,-1.4410350265664105e-5,-1.0964601820102489e-8,5.2598368352539667e-5,-1.4617978010402564e-5,-1.0960658830434025e-8,5.2872840342696726e-5,-1.4857176091440661e-5,-1.0956540629101209e-8,5.322704970841118e-5,-1.5088075305254894e-5,-1.0953236332976238e-8,5.364663492512684e-5,-1.5275993367745722e-5,-1.0951500603035131e-8,5.410696514106418e-5,-1.539698624027727e-5,-1.095178087382418e-8,5.457893133346143e-5,-1.5440298921740233e-5,-1.0954194761142424e-8,5.50342383558213e-5,-1.540806131983914e-5,-1.0958542424790509e-8,5.544932692850507e-5,-1.5313173657149106e-5,-1.096434545062792e-8,5.580777697902618e-5,-1.5176465955951547e-5,-1.0970910845978872e-8,5.610161114139606e-5,-1.502389729946295e-5,-1.0977420875607443e-8,5.633207828382777e-5,-1.4883981469539802e-5,-1.0983045974823884e-8,5.651030827952544e-5,-1.4785143953867945e-5,-1.0987069782932988e-8,5.6657843445042456E-05,-1.475241870537396e-5,-1.098900869828785e-8,5.68064043339674e-5,-1.480281230944594e-5,-1.0988713689162896e-8,5.6995445257911e-5,-1.493919710310919e-5,-1.0986451645489575e-8,5.726569833881333e-5,-1.5144085304198487e-5,-1.0982961665724738e-8,5.7647873217573626e-5,-1.537676462498628e-5,-1.097945336000276e-8,5.8148783022304093e-5,-1.5578618482013747e-5,-1.0977468969124607e-8,5.8741629395056166e-5,-1.5689303712884644e-5,-1.0978518978595156e-8,5.936880170599819e-5,-1.5669452550320848e-5,-1.0983516728908241e-8,5.995982222233368e-5,-1.5518212400740367e-5,-1.0992265385709335e-8,6.045655109961612e-5,-1.5274524989521094e-5,-1.100336461316192e-8,6.083213388443301e-5,-1.500128721893175e-5,-1.1014687824535179e-8,6.109517706905173e-5,-1.476232162248893e-5,-1.1024177858417426e-8,6.128078642644321e-5,-1.4603933293794295e-5,-1.1030515003487311e-8,6.14360565632286e-5,-1.4546623392676997e-5,-1.1033379525122147e-8,6.160676979381152e-5,-1.4585862441534919e-5,-1.1033325129027129e-8,6.182836446050053e-5,-1.4698115916188576e-5,-1.103144492460905e-8,6.212137962144658e-5,-1.4848716247797194e-5,-1.1029016395917635e-8,6.249043218855688e-5,-1.499957486442772e-5,-1.1027231651313366e-8,6.292575713367833e-5,-1.5115848315998846e-5,-1.1027035010884309e-8,6.340659244996193e-5,-1.5171078050374148e-5,-1.1029042575856415e-8,6.39057084276371e-5,-1.5150397168465046e-5,-1.1033511588368882e-8,6.439430170432664e-5,-1.5051632264841132e-5,-1.1040338007405747e-8,6.484651366485014e-5,-1.4884453987230887e-5,-1.1049078955669309e-8,6.524295871579131e-5,-1.4668006957840344e-5,-1.1059009733669053e-8,6.557293822920603e-5,-1.4427696477046931e-5,-1.106922243082436e-8,6.583546021894932e-5,-1.4191801641639522e-5,-1.1078757988711264e-8,6.603942429151922e-5,-1.3988227254888844e-5,-1.1086754263160646e-8,6.620324712438544e-5,-1.3841351539194972e-5,-1.1092584244638724e-8,6.635399675116738e-5,-1.376871069724712e-5,-1.1095960923446284e-8,6.652567539394843e-5,-1.377713360613599e-5,-1.1097002545640146e-8,6.675562941069513e-5,-1.3858317394900903e-5,-1.109626926494747e-8,6.707780774668518e-5,-1.3985038180359028e-5,-1.1094780789983727e-8,6.751241829499467e-5,-1.4110813964274978e-5,-1.1093985695546706e-8,6.805398404589733e-5,-1.4176969697956724e-5,-1.1095592658974113e-8,6.866384590550756e-5,-1.4129570457204582e-5,-1.1101140430408416e-8,6.927548828970987e-5,-1.3942193950697216e-5,-1.1111323602410547e-8,6.981586375490909e-5,-1.3632135932979031e-5,-1.1125409233657399e-8,7.023376113526364e-5,-1.3257268294156674e-5,-1.1141255562749935e-8,7.051856313032443e-5,-1.2893039413830864e-5,-1.1156102060587921e-8,7.06990864524921e-5,-1.2603544775620664e-5,-1.1167680283957444e-8,7.082667807448929e-5,-1.2422764469719474e-5,-1.1174960488599823e-8,7.095499623308146e-5,-1.2351727669469376e-5,-1.1178226969257668e-8,7.112590319904138e-5,-1.2366745927631601e-5,-1.1178667858819269e-8,7.136360199813396e-5,-1.2431038164156497e-5,-1.117783577309838e-8,7.167471562637514e-5,-1.2504825814492575e-5,-1.1177222677717251e-8,7.20513073116622e-5,-1.2552337068439892e-5,-1.1178022183958767e-8,7.247483939519828e-5,-1.2546082636510993e-5,-1.1181041603564716e-8,7.292025057925622e-5,-1.2469246626440453e-5,-1.1186692155499417e-8,7.335996924164086e-5,-1.2316707228409032e-5,-1.1195001134773114e-8,7.376777185043507e-5,-1.2094851223874839e-5,-1.1205627668886617e-8,7.41223204444516e-5,-1.1820215935622424e-5,-1.1217891224875756e-8,7.441008632046292e-5,-1.1516986111407657e-5,-1.1230839822596301e-8,7.462727595584035e-5,-1.121357421653002e-5,-1.1243374292470443e-8,7.478054238337684e-5,-1.0938760084437633e-5,-1.1254418929902535e-8,7.48865297826223e-5,-1.0717820966566956e-5,-1.1263107130437595e-8,7.497036903850236e-5,-1.0568904309436396e-5,-1.1268942299422062e-8,7.506321783824891e-5,-1.0499811842188604e-5,-1.1271900341615984e-8,7.519881869817697e-5,-1.0505257389349248e-5,-1.1272463646632064e-8,7.540869080999105e-5,-1.056479190521469e-5,-1.1271600290428743e-8,7.571546174872404e-5,-1.0642370424357846e-5,-1.1270700670162078e-8,7.61246291272292e-5,-1.0689513165947758e-5,-1.1271446895380041e-8,7.661678435223831e-5,-1.0654320433158899e-5,-1.1275546237460665e-8,7.71448147730922e-5,-1.0497201563490087e-5,-1.1284249952033519e-8,7.764205458950148e-5,-1.0209521680141907e-5,-1.1297711821998253e-8,7.804347387462571e-5,-9.824875614952504e-6,-1.1314530735816466e-8,7.831185681715099e-5,-9.411967862924406e-6,-1.133196933848187e-8,7.84533388443129e-5,-9.048847109690942e-6,-1.134696307423481e-8,7.851205357156255e-5,-8.792740654590127e-6,-1.1357361358067248e-8,7.854866512846068e-5,-8.662856311024963e-6,-1.1362623719687482e-8,7.861729582289454e-5,-8.642245361453145e-6,-1.1363680031735883e-8,7.875197622822127e-5,-8.691794929389404e-6,-1.1362277223349593e-8,7.896418283479847e-5,-8.765841602924702e-6,-1.1360297098831838e-8,7.924709191886245e-5,-8.823284793479496e-6,-1.1359315593534433e-8,7.95818503140842e-5,-8.833269852576455e-6,-1.1360426738010168e-8,7.994322616848324e-5,-8.777041367256928e-6,-1.1364233495034238e-8,8.030394161526125e-5,-8.647855079034407e-6,-1.1370898907447606e-8,8.063800618353983e-5,-8.450099063104403e-6,-1.13801913797548e-8,8.092351739561471e-5,-8.197986994855086e-6,-1.139151507594174e-8,8.114517708580553e-5,-7.913748681025796e-6,-1.1403947928868321e-8,8.129649091610874e-5,-7.625053643838189e-6,-1.1416325803923466e-8,8.13812925714093e-5,-7.361498470228608e-6,-1.1427396960663914e-8,8.141408671042445e-5,-7.150374877007221e-6,-1.143603391639288e-8,8.141887617018724e-5,-7.012246466696308e-6,-1.1441458496670813e-8,8.142639354204631e-5,-6.9569547070524565e-6,-1.1443423882852663e-8,8.146989071188947e-5,-6.980733178277085e-6,-1.1442305223764873e-8,8.157988588747373e-5,-7.0650386142183395e-6,-1.1439079612900346e-8,8.177834068751832e-5,-7.177494714956207e-6,-1.1435206339439226e-8,8.207274310460953e-5,-7.275416748518267e-6,-1.1432431508335396e-8,8.24510452990543e-5,-7.312655501458012e-6,-1.1432513684254343e-8,8.287939415777408e-5,-7.250137973215447e-6,-1.14368513607406e-8,8.330545375814392e-5,-7.068926237825051e-6,-1.1446018896562171e-8,8.366980628525399e-5,-6.781801504635946e-6,-1.1459328098698728e-8,8.392475651610919e-5,-6.436424280153653e-6,-1.147469615909485e-8,8.405365240588183e-5,-6.103856380286995e-6,-1.1489120917511639e-8,8.407948845031888e-5,-5.853970011362507e-6,-1.1499731792143241e-8,8.405583920133282e-5,-5.729599983451548e-6,-1.1504887252346792e-8,8.404479026302159e-5,-5.733734864168806e-6,-1.1504668019600196e-8,8.409487550610288e-5,-5.8348805222652595e-6,-1.1500567610929476e-8,8.422953279231353e-5,-5.983832090974439e-6,-1.1494726575699467e-8,8.44475135877195e-5,-6.130958240035688e-6,-1.1489203384318796e-8,8.473016954110671e-5,-6.237308506807428e-6,-1.1485549198160168e-8,8.504997460131159e-5,-6.278822698858891e-6,-1.1484684339034437e-8,8.537722202659041e-5,-6.24604350020151e-6,-1.1486947837148801e-8,8.56843216611937e-5,-6.141962433049987e-6,-1.149219497561945e-8,8.594839135529726e-5,-5.979584647913548e-6,-1.1499878642207251e-8,8.615303700245352e-5,-5.7797022876110846e-6,-1.1509108282661373e-8,8.628989016331793e-5,-5.568700527437504e-6,-1.1518717192858226e-8,8.636003840534361e-5,-5.3759285752394796e-6,-1.1527377565087991e-8,8.637502793286532e-5,-5.230188533993722e-6,-1.1533784620290696e-8,8.635675385529202e-5,-5.155286769746592e-6,-1.1536897415011626e-8,8.63355224875678e-5,-5.165182714998419e-6,-1.1536184302568082e-8,8.634591892159362e-5,-5.259775561616308e-6,-1.1531803962477889e-8,8.642073115040163e-5,-5.4226586174864975e-6,-1.152465872996433e-8,8.65839351077441e-5,-5.622046886179956e-6,-1.1516287597576716e-8,8.684430755827092e-5,-5.8153923203604484e-6,-1.1508609070013934e-8,8.719130249188195e-5,-5.95728092691672e-6,-1.1503558232602766e-8,8.759455242721197e-5,-6.009491974966764e-6,-1.150267039330855e-8,8.800800850055604e-5,-5.95147211987009e-6,-1.1506668360848453e-8,8.837913286366379e-5,-5.7886627769627485e-6,-1.1515138637633855e-8,8.866225574551908e-5,-5.555373933240397e-6,-1.1526431984484355e-8,8.883301404506053e-5,-5.309063543337344e-6,-1.1537937388838975e-8,8.889840023466499e-5,-5.115164449411993e-6,-1.1546777723907165e-8,8.889656623832367e-5,-5.026383401286591e-6,-1.1550737585091733e-8,8.888441107440784e-5,-5.065123260574208e-6,-1.154900893343037e-8,8.891787950494431e-5,-5.21765631045529e-6,-1.1542374452129857e-8,8.903443511633252e-5,-5.442337151279303e-6,-1.1532775965427147e-8,8.924516874443352e-5,-5.686194762207577e-6,-1.1522563607641413e-8,8.953744138069596e-5,-5.90108623252899e-6,-1.1513813593362013e-8,8.988360538093972e-5,-6.053558073616242e-6,-1.1507938669655695e-8,9.025045498071756e-5,-6.127657333921901e-6,-1.1505594789433005e-8,9.06062942791196e-5,-6.123105910016481e-6,-1.1506768232466762e-8,9.092503624012695e-5,-6.051676523403866e-6,-1.1510921388865986e-8,9.118813404710323e-5,-5.933591903961702e-6,-1.1517128603869335e-8,9.138545565664259e-5,-5.794575433039127e-6,-1.1524189430321015e-8,9.151591271894805e-5,-5.66334449111308e-6,-1.1530742462923101e-8,9.158811085003475e-5,-5.568946066028995e-6,-1.1535410442970295e-8,9.162072310193748e-5,-5.537335450390624e-6,-1.1536995250412474e-8,9.164182458652515e-5,-5.58694690455087e-6,-1.1534711584048976e-8,9.168620213239225e-5,-5.723696108466005e-6,-1.152841879943091e-8,9.178992959661302e-5,-5.936777568263604e-6,-1.1518779345972147e-8,9.198249027190544e-5,-6.197337314678204e-6,-1.1507263760530225e-8,9.227820821065515e-5,-6.461935833751877e-6,-1.1495944136778205e-8,9.266993147833276e-5,-6.6812950165578724e-6,-1.1487076652143873e-8,9.31278874804674e-5,-6.8125918600802576e-6,-1.1482550916430714e-8,9.360510332344588e-5,-6.831677883244499e-6,-1.1483350519634967e-8,9.404841563306238e-5,-6.741163582188049e-6,-1.1489195433374426e-8,9.441208477567966e-5,-6.57151688468949e-6,-1.1498505989231926e-8,9.467017588287623e-5,-6.374429642810231e-6,-1.1508741618074349e-8,9.482411049793587e-5,-6.20983930092064e-6,-1.1517053215341923e-8,9.490280063124226e-5,-6.12986333255191e-6,-1.1521069363394867e-8,9.49546446025167e-5,-6.164351503798526e-6,-1.1519561592846616e-8,9.503343971679581e-5,-6.312991752990002e-6,-1.1512751366586703e-8,9.518296893644879e-5,-6.546957614728857e-6,-1.1502154648514587e-8,9.54258618892581e-5,-6.819249442704191e-6,-1.1490053068776307e-8,9.576033063758811e-5,-7.079181183195936e-6,-1.147882172959562e-8,9.616458460450145e-5,-7.285251177458946e-6,-1.1470361003639736e-8,9.660557779129375e-5,-7.412533789784719e-6,-1.1465779950685564e-8,9.70480253349657e-5,-7.454061673847203e-6,-1.1465342600263835e-8,9.746107955264904e-5,-7.418094434670623e-6,-1.1468592015480105e-8,9.782204348641294e-5,-7.323724614127018e-6,-1.1474549309030842e-8,9.811778004559563e-5,-7.196576837891347e-6,-1.1481914889362466e-8,9.834488254743438e-5,-7.065336659585935e-6,-1.1489242896633806e-8,9.85094970832235e-5,-6.958985648334306e-6,-1.1495095179541215e-8,9.862717385640469e-5,-6.90413645241066e-6,-1.1498196338733799e-8,9.8722513616579e-5,-6.921815594705209e-6,-1.1497607920369037e-8,9.882784972662761e-5,-7.023345607949021e-6,-1.1492923262731212e-8,9.897986411696639e-5,-7.205665995436498e-6,-1.148446098537155e-8,9.921318771121227e-5,-7.447586546246423e-6,-1.1473395307025696e-8,9.955120060763667e-5,-7.709619295232465e-6,-1.146172404791077e-8,9.999642762624879e-5,-7.940035443749168e-6,-1.1451968869426325e-8,1.0052494732063333e-4,-8.087647613726074e-6,-1.1446579632065744e-8,1.0108913471724907e-4,-8.117933472199266e-6,-1.1447169892722494e-8,1.016297505105532e-4,-8.025879558080473e-6,-1.1453875399227287e-8,1.0209339869072522e-4,-7.839290063002508e-6,-1.1465163461608666e-8,1.0244827762320929e-4,-7.610760831100816e-6,-1.1478236898852096e-8,1.0269227243374284e-4,-7.4019405703705335e-6,-1.1489879553959839e-8,1.0285149371859283e-4,-7.266368505272329e-6,-1.1497391887392736e-8,1.0297118136782965e-4,-7.236336161787715e-6,-1.1499280042755185e-8,1.0310270675950262e-4,-7.316726316035047e-6,-1.1495523318503002e-8,1.0329056362595021e-4,-7.486349598341804e-6,-1.148742159707798e-8,1.0356255453322497e-4,-7.705430672579288e-6,-1.1477144225777614e-8,1.0392519544575366e-4,-7.926623660176716e-6,-1.1467147125266295e-8,1.0436481553339658e-4,-8.106347722194308e-6,-1.1459615835618466e-8,1.048532139215313e-4,-8.213492770649762e-6,-1.1456056721422704e-8,1.0535556460250918e-4,-8.23373787288498e-6,-1.1457100913129077e-8,1.0583805546501133e-4,-8.169439622731186e-6,-1.1462518463608636e-8,1.0627352735391126e-4,-8.036400609196678e-6,-1.1471385560392026e-8,1.066445607363988e-4,-7.859266130393587e-6,-1.1482325768957206e-8,1.0694441306334356e-4,-7.666977342055716e-6,-1.1493758257334187e-8,1.0717666268625118e-4,-7.489017281889044e-6,-1.1504111986789331e-8,1.0735435490295485e-4,-7.35244966639261e-6,-1.1511999323604564e-8,1.0749903983642938e-4,-7.2792806829164845e-6,-1.1516363131548234e-8,1.0763957831135115e-4,-7.283580274524651e-6,-1.151661702847303e-8,1.0781007680501017e-4,-7.368012685883945e-6,-1.1512793302970118e-8,1.0804590054700001e-4,-7.520061810504988e-6,-1.1505692043057436e-8,1.0837680611466255e-4,-7.709425069854278e-6,-1.1496977420176755e-8,1.0881740161785823e-4,-7.889347522041987e-6,-1.1489103221812277e-8,1.0935759791410143e-4,-8.004876957400208e-6,-1.1484917776821892e-8,1.099584343313986e-4,-8.008601428695032e-6,-1.1486882532745956e-8,1.1055881062444225e-4,-7.879155597116695e-6,-1.1496092004950944e-8,1.1109371258594231e-4,-7.633039843956237e-6,-1.1511581608136922E-08,1.1151663459051103e-4,-7.321605202687162e-6,-1.1530431309502565e-8,1.1181492903404441e-4,-7.013454241810893e-6,-1.1548741122352925e-8,1.1201106022014476e-4,-6.771340174468865e-6,-1.1562985724005811e-8,1.1215140197415839e-4,-6.634405209780007e-6,-1.1571068149846324e-8,1.1228984212495073e-4,-6.611278102413541e-6,-1.1572697123814852e-8,1.1247315925664164e-4,-6.6831267112462406e-6,-1.1569144942454731e-8,1.127316993096942e-4,-6.812598750203812e-6,-1.156266778319374e-8,1.1307579932787652e-4,-6.954602663343077e-6,-1.1555859496188551e-8,1.1349688400417341e-4,-7.066217820959545e-6,-1.1551101049908461e-8,1.139717903089487e-4,-7.114299397794903e-6,-1.1550167056351804e-8,1.1446891416054345e-4,-7.080077937874377e-6,-1.1554002562827165e-8,1.149548174283551e-4,-6.960537575809596e-6,-1.1562667346861427e-8,1.1540007923220339e-4,-6.766933444370123e-6,-1.1575426285469924e-8,1.1578354861211906e-4,-6.521295786051894e-6,-1.1590947546989276e-8,1.1609463410885247e-4,-6.2519478086589645e-6,-1.160756007562344e-8,1.1633376296363593e-4,-5.989012039941205e-6,-1.1623518348194946e-8,1.1651156393922294e-4,-5.760573051355079e-6,-1.1637234212047214e-8,1.1664740182339614e-4,-5.589622358594828e-6,-1.1647459659802337e-8,1.1676759334021895e-4,-5.4915067272458905e-6,-1.1653428976732367e-8,1.1690326783015823e-4,-5.471531648050538e-6,-1.1654974611229112e-8,1.1708746557034123e-4,-5.5225030012895636e-6,-1.1652632718742514e-8,1.1735068033667883e-4,-5.622479874781477e-6,-1.1647735276380047e-8,1.1771412944112854e-4,-5.734062550996382e-6,-1.1642435438662262e-8,1.1818113725851937e-4,-5.8076621481172495e-6,-1.163954187668793e-8,1.1872926880585935e-4,-5.791344442245663e-6,-1.1642004245374285e-8,1.1930855430309953e-4,-5.647553044674574e-6,-1.1651984086518556e-8,1.1985155215788543e-4,-5.371443175151925e-6,-1.1669760410394222e-8,1.2029547121095116e-4,-4.99995084485974e-6,-1.1693115291372944e-8,1.2060678781026997e-4,-4.6024408688642385e-6,-1.1717833613867049e-8,1.2079400904598451e-4,-4.255199093046226e-6,-1.173926368756903e-8,1.2090126966665237e-4,-4.0137842781003e-6,-1.1754062382778059e-8,1.2098843584166365e-4,-3.897678566972292e-6,-1.176115704922468e-8,1.2111008984554611e-4,-3.891400665164609e-6,-1.1761637208694449e-8,1.213022496940009e-4,-3.95630760713687e-6,-1.1757971241563372e-8,1.2157839399120963e-4,-4.044896229076136e-6,-1.1753097167220337e-8,1.2193195516922581e-4,-4.112420305157807e-6,-1.1749718015863004e-8,1.2234182152848596e-4,-4.124267718560327e-6,-1.174987984666976e-8,1.227785275255919e-4,-4.059624660286843e-6,-1.1754780294877045e-8,1.2321007408265877e-4,-3.9124489345179326e-6,-1.1764728817057517e-8,1.2360698042256985e-4,-3.6904598768444323e-6,-1.1779212189448352e-8,1.2394631226203136e-4,-3.4126109266878824e-6,-1.1797041115608418e-8,1.242144823774108e-4,-3.1055077065965403e-6,-1.1816559520484416e-8,1.2440867826661164e-4,-2.799226073876711e-6,-1.1835897138338729e-8,1.2453685337986063e-4,-2.523031477587932e-6,-1.1853238148010125e-8,1.2461646512564885e-4,-2.301547896694e-6,-1.186706784611472e-8,1.2467235994619418e-4,-2.1516861724259745e-6,-1.1876371614580685e-8,1.2473410454800834e-4,-2.0803083645591164e-6,-1.1880779589050701e-8,1.2483283115915695e-4,-2.0825349597226646e-6,-1.1880660082478308e-8,1.2499748069359724e-4,-2.14069314709482e-6,-1.1877165836353078e-8,1.2525010295091812e-4,-2.2241823656063393e-6,-1.1872226457607199e-8,1.2559995192754653e-4,-2.2912602137460035e-6,-1.1868437590207958e-8,1.2603705811992328e-4,-2.2945068883105327e-6,-1.1868742828901586e-8,1.2652772420829495e-4,-2.191539426597471e-6,-1.1875794007561012e-8,1.2701630641300356e-4,-1.9604423994929207e-6,-1.1890987874401511e-8,1.2743771444703272e-4,-1.6147035257241735e-6,-1.1913481241468902e-8,1.2774003479321577e-4,-1.2075860053489198e-6,-1.1939854087612531e-8,1.2790733523272295e-4,-8.17705683285339e-7,-1.1965019553764724e-8,1.279679628288094e-4,-5.194673008425952e-7,-1.1984174542305361e-8,1.279816584662349e-4,-3.5470155045429583e-7,-1.1994671485721905e-8,1.280138942373341e-4,-3.2155917529888203e-7,-1.1996712018024326e-8,1.2811314916667707e-4,-3.832848611376374e-7,-1.1992721904466058e-8,1.2830082617175774e-4,-4.869902782138533e-7,-1.198611016092719e-8,1.2857305116365837e-4,-5.810461096132203e-7,-1.1980164163535222E-08,1.289084172136336e-4,-6.257202090277428e-7,-1.197740043466469e-8,1.2927653296285668e-4,-5.972525154990381e-7,-1.1979329944634138e-8,1.2964491995966202e-4,-4.877474608997493e-7,-1.1986472365228349e-8,1.2998387075651414e-4,-3.031311612369654e-7,-1.1998477370081351e-8,1.3026979244258862e-4,-6.038288953220458e-8,-1.2014282732417834e-8,1.3048752957989842e-4,2.1562191863560383e-7,-1.2032296857404085e-8,1.3063183983413705e-4,4.956069602951913e-7,-1.2050612633462722e-8,1.3070798712429174e-4,7.49696777087375e-7,-1.2067254493324593e-8,1.3073127127371782e-4,9.513984761652111e-7,-1.2080450782354818e-8,1.3072533232997706e-4,1.0813761032640532e-6,-1.2088898078971734e-8,1.3071932425519906e-4,1.1305045965556356e-6,-1.2091976791290884e-8,1.3074424349902703e-4,1.1018477731859764e-6,-1.2089887050399828e-8,1.3082870101893535e-4,1.0113362985932872e-6,-1.2083690937629776e-8,1.3099441618179766e-4,8.869501908669666e-7,-1.2075251931326807e-8,1.3125168068481923e-4,7.662116754938402e-7,-1.2067066918911372e-8,1.3159510738595574e-4,6.915586905267705e-7,-1.2061965515433264e-8,1.3200056820097142e-4,7.028841658829567e-7,-1.2062624571151364e-8,1.3242528918228636e-4,8.270198550287169e-7,-1.2070869118686841e-8,1.3281385380364976e-4,1.0657937989025924e-6,-1.2086852795495238e-8,1.3311208615874337e-4,1.3873940278361398e-6,-1.2108442324416934e-8,1.3328674475046086e-4,1.728378788589479e-6,-1.2131335420364398e-8,1.333423026531807e-4,2.011359960326922e-6,-1.2150284217646462e-8,1.333230859574093e-4,2.173641367897251e-6,-1.2161076558038903e-8,1.3329628509418603e-4,2.1916886718834704e-6,-1.2162183678561086e-8,1.3332488742110422e-4,2.0869799011873835e-6,-1.2155091872515184e-8,1.3344631607287334e-4,1.9118834458728775e-6,-1.214330168860428e-8,1.3366614959370036e-4,1.7270017762180142e-6,-1.213081977253317e-8,1.339647660819936e-4,1.5827822630531564e-6,-1.2120978054806648e-8,1.3430900171919165e-4,1.5107505188582636e-6,-1.2115885232530696e-8,1.346625507586368e-4,1.5227555156633589e-6,-1.2116379839448163e-8,1.3499278908367805e-4,1.6143357752029857e-6,-1.2122232655650623e-8,1.352743630890875e-4,1.7691319425712106e-6,-1.2132411706736463e-8,1.3549082147805045e-4,1.9628976716705375e-6,-1.214532559179744e-8,1.3563536205606977e-4,2.1669414090184472e-6,-1.2159041601093816e-8,1.3571114539193986e-4,2.3513531864422336e-6,-1.2171504657912729e-8,1.3573115122892719e-4,2.488365757099318e-6,-1.218077928907646e-8,1.3571726302195615e-4,2.555989521491244e-6,-1.2185316078541546e-8,1.3569814446294577e-4,2.5416602671032738e-6,-1.2184217684665625e-8,1.3570568585111713e-4,2.4452206623935392e-6,-1.2177449976565543e-8,1.3577024230789847e-4,2.280427964073108e-6,-1.216594442676682e-8,1.3591527737192273e-4,2.0743135607314645e-6,-1.2151550454018783e-8,1.361522991152803e-4,1.8640121265254014e-6,-1.213681987513195e-8,1.3647708727637718e-4,1.6911483786144465e-6,-1.2124630980449703e-8,1.3686810998498884e-4,1.5943000966245994e-6,-1.211767957644585e-8,1.3728794824521178e-4,1.6002951590033876e-6,-1.2117875538135754e-8,1.376885995265603e-4,1.715563961241601e-6,-1.2125719871977474e-8,1.380212492054774e-4,1.9198116421548985e-6,-1.2139827416802713e-8,1.3824979653251647e-4,2.16545754172393e-6,-1.2156862702966804e-8,1.3836476748777283e-4,2.3863798766054845e-6,-1.2172165361997345e-8,1.3839118089512586e-4,2.516681597723158e-6,-1.2181109204786456e-8,1.383836958661086e-4,2.5139173425388923e-6,-1.2180756018019766e-8,1.3840809682379775e-4,2.3754960365028225e-6,-1.2170971847677191e-8,1.3851731397930713e-4,2.1385549249810985e-6,-1.2154358737266609e-8,1.387345180742526e-4,1.8635150257748393e-6,-1.2135089041809021e-8,0.00013905061657867654,1.6115027181214983e-6,-1.21173713319074e-8,1.3943376606727773e-4,1.4271981388203693e-6,-1.2104305360794658e-8,1.3984300364040437e-4,1.3321511005655048e-6,-1.2097427842395805e-8,1.4023941764179271e-4,1.3266107575433846e-6,-1.2096814698533307e-8,1.4059252722173118e-4,1.3952876797859035e-6,-1.2101447432625885e-8,1.4088264636512158e-4,1.5134604515907064e-6,-1.2109616882522158e-8,1.4110100645417162e-4,1.651840139911393e-6,-1.211925900245617e-8,1.4124909369002032e-4,1.780117071596497e-6,-1.212821380203447e-8,1.41337902381737e-4,1.8698047521882043e-6,-1.2134441476175163e-8,1.413871243968482e-4,1.897057213198281e-6,-1.2136236886680415e-8,1.4142383018431504e-4,1.845841427761066e-6,-1.2132461012287831e-8,1.4147997719204125e-4,1.7113175489430788e-6,-1.2122777537746821e-8,1.4158823504138685e-4,1.502646517645388e-6,-1.2107840476713205e-8,1.4177619737628733e-4,1.2439767012537168e-6,-1.2089354094720186e-8,1.420599003828967e-4,9.723315462248096e-7,-1.206992596215161e-8,1.4243837480090518e-4,7.317359454874271e-7,-1.205266945550483e-8,1.428912639706557e-4,5.641719353741576e-7,-1.2040586686537376e-8,1.4338097885540922e-4,4.993306811954009e-7,-1.2035847099509482e-8,1.4385960277296563e-4,5.458783176763343e-7,-1.2039139663143369e-8,1.4427940471458366e-4,6.868122641353136e-7,-1.2049291370737595e-8,1.4460478846783334e-4,8.807411239238364e-7,-1.2063317321420302e-8,1.4482281559751307e-4,1.069839105541091e-6,-1.2076991054963683e-8,0.00014494904837242869,1.1937309248725323e-6,-1.2085887289049307e-8,1.4502568900064648e-4,1.2064426101944527e-6,-1.208665562177113e-8,1.4511070047506638e-4,1.0911379333922037e-6,-1.2078100163221958e-8,1.4526028585175462e-4,8.663198283372468e-7,-1.2061600256805915e-8,1.4551122674497707e-4,5.797058648325919e-7,-1.204063541031233e-8,1.45870714182893e-4,2.919007977922922e-7,-1.2019605889673682e-8,1.4631756661427476e-4,5.7383281304037876e-8,-1.2002481688680475e-8,1.4681257082234934e-4,-8.908235910099019e-8,-1.199182771411262e-8,1.4731178048653533e-4,-1.3681974382092278e-7,-1.1988462719314775e-8,1.4777718123388823e-4,-9.589928020150776e-8,-1.1991666707489123e-8,1.4818241807458256e-4,9.827970495226143e-9,-1.1999669866292774e-8,1.4851424057603252e-4,1.4975826284681487e-7,-1.2010174857616424e-8,1.4877150780700368e-4,2.9190903564939884e-7,-1.2020776035974408e-8,1.4896338718739874e-4,4.064988238931833e-7,-1.2029249027716422e-8,1.491076446423247e-4,4.6841038637613003e-7,-1.2033745868534184e-8,1.4922916257107874e-4,4.5938546572257956e-7,-1.2032953779941988e-8,1.493582247095228e-4,3.705242197180493e-7,-1.2026262139108474e-8,1.4952777954767635e-4,2.051005400277564e-7,-1.2013946805018194e-8,1.4976894050346446e-4,-1.904479417246828e-8,-1.19973299130609e-8,1.5010454947427974e-4,-2.6906541765304796e-7,-1.1978814248321542e-8,1.5054183504320976e-4,-5.005400438808663e-7,-1.1961656886072548e-8,1.510667193509588e-4,-6.659267765992611e-7,-1.1949384554955782e-8,1.5164312623254563e-4,-7.269820831206918e-7,-1.1944897119523432e-8,1.5221953156980696e-4,-6.673181911368249e-7,-1.1949511382214759e-8,1.5274192731700445e-4,-4.998737686083151e-7,-1.1962335916114308e-8,1.5316902981055573e-4,-2.655106490847173e-7,-1.198030645635063e-8,1.5348421088217352e-4,-2.266891378647792e-8,-1.1998944827432675e-8,1.537000877768807e-4,1.6834438575237464e-7,-1.2013585861232607e-8,1.538547110431581e-4,2.613132906223005e-7,-1.2020649305678164e-8,1.5400096519828458e-4,2.3581112219275996e-7,-1.2018566303697278e-8,1.5419235863208593e-4,1.0173672189554832e-7,-1.2008120314198619e-8,1.5446908544374386e-4,-1.043344103221339e-7,-1.1992147545698048e-8,1.548482390991489e-4,-3.2985719788034745e-7,-1.1974709621771796e-8,1.5532098094650596e-4,-5.207662508907146e-7,-1.1959996690102956e-8,1.5585716932915963e-4,-6.350241871756243e-7,-1.1951293605787887e-8,1.5641522266013897e-4,-6.511187991959759e-7,-1.1950307300835039e-8,1.569532769257661e-4,-5.697016549164902e-7,-1.1957005001839564e-8,1.5743798528095797e-4,-4.09469379855435e-7,-1.1969906863521253e-8,1.5784917981561064e-4,-2.0015710169451744e-7,-1.1986632887038163e-8,1.5818066995231428e-4,2.4528128874972442e-8,-1.2004482272335572e-8,1.584385964221662e-4,2.3238212408654543e-7,-1.2020894960770384e-8,1.5863886107822444e-4,3.9624199560292434e-7,-1.2033748244121223e-8,1.588046247824748e-4,4.961257588820515e-7,-1.2041519855910776e-8,1.5896414577085214e-4,5.208075434900433e-7,-1.2043387212766305e-8,1.5914861628490783e-4,4.6946391491526275e-7,-1.2039325589190074e-8,1.5938926955830503e-4,3.53541008361074e-7,-1.2030232908600866e-8,1.5971294009466412e-4,1.982741610365036e-7,-1.2018050074089633e-8,1.601357000258253e-4,4.2346553631336995e-8,-1.2005764507559371e-8,1.6065547610377416e-4,-6.653262914643824e-8,-1.199711354071502e-8,1.6124655500583345e-4,-8.178371801242496e-8,-1.1995829366236498e-8,1.618604147678731e-4,2.7237558855628032e-8,-1.200446695222325e-8,1.624361983654284e-4,2.6113543526894443e-7,-1.2023214939678597e-8,1.6291924082183584e-4,5.850389636777833e-7,-1.2049358081100115e-8,1.6328002909722807e-4,9.37029053897171e-7,-1.2077889657121621e-8,1.6352419934365228e-4,1.2479123374621913e-6,-1.2103126439366304e-8,1.6368904604779273e-4,1.4631281062483648e-6,-1.2120552485357369e-8,1.6382956183236765e-4,1.557395384432055e-6,-1.2128060940280816e-8,1.6400122926582002e-4,1.5381144862877748e-6,-1.2126239058948575e-8,1.6424588726093894e-4,1.439208355081074e-6,-1.2117853915445577e-8,1.6458370748174056e-4,1.3096328102448778e-6,-1.2106913755361764e-8,1.6501154402339606e-4,1.200644338827852e-6,-1.2097641160415495e-8,1.6550648589063686e-4,1.1547586852730628e-6,-1.2093577694547275e-8,1.6603290776267415e-4,1.198176070928625e-6,-1.209694831318382e-8,1.665511035023388e-4,1.3375614745420673e-6,-1.2108362039271342e-8,1.6702550418416318e-4,1.5612138983333382e-6,-1.2126873437650308e-8,1.674307780932752e-4,1.8436692523999273e-6,-1.2150349328123835e-8,1.677549195800197e-4,2.152050182706575e-6,-1.2176009110305286e-8,1.6799940801179606e-4,2.4524165413076667e-6,-1.2200981766056503e-8,1.6817724583540448e-4,2.7148658232038214e-6,-1.2222754118217347e-8,1.683099873280913e-4,2.9168866968960664e-6,-1.2239454785978735e-8,1.6842467146592558e-4,3.0452180407235236e-6,-1.224999322944638e-8,1.6855102695086848e-4,3.0968539557096263e-6,-1.2254119042353992e-8,1.6871880126855085e-4,3.079744230574199e-6,-1.2252464324778996e-8,1.6895472067160068e-4,3.0133940896606534e-6,-1.2246598903420829e-8,1.6927840464195295e-4,2.9289893043908684e-6,-1.2239070910506032e-8,1.6969685867088022e-4,2.8677904600524987e-6,-1.2233319274918822e-8,1.7019831718506845e-4,2.875824828445984e-6,-1.2233272151029017e-8,1.7074810284391787e-4,2.993272269193482e-6,-1.224246480019927e-8,1.7129098425295404e-4,3.2394101336393448e-6,-1.2262719249205929e-8,1.7176398102373194e-4,3.5987654038797006e-6,-1.2292867630372567e-8,1.7211809981800891e-4,4.018086806079489e-6,-1.2328398800877828e-8,1.723391427347796e-4,4.420818917734477e-6,-1.2362681188303285e-8,1.7245473153053103e-4,4.734662467285292e-6,-1.2389396409868513e-8,1.7252252726735316e-4,4.917578549027333e-6,-1.2404843785782865e-8,1.726071540897258e-4,4.968749604148368e-6,-1.2408893192054333e-8,1.727589046978858e-4,4.9221724964740185e-6,-1.2404411962237101e-8,1.7300260344177033e-4,4.83048076677902e-6,-1.2395876284086118e-8,1.7333699122422784e-4,4.748210739532242e-6,-1.2387966354953343e-8,1.7374060169450008e-4,4.719717242328655e-6,-1.2384556320964524e-8,1.7417998643729247e-4,4.77276442662093e-6,-1.2388155529251713e-8,1.7461775716833916e-4,4.916710446013261e-6,-1.2399710045232228e-8,1.7501937203030822e-4,5.1438468128633355e-6,-1.24186647572412e-8,1.7535828951289732e-4,5.432860035887848e-6,-1.2443225854658522e-8,1.756192629618798e-4,5.753664444472852e-6,-1.247077258016822e-8,1.7579965373443565e-4,6.07283129609336e-6,-1.249834752183416e-8,1.7590884946030766e-4,6.358829228718526e-6,-1.2523139875377372e-8,1.759661130968674e-4,6.586381943570775e-6,-1.2542883039875933e-8,1.759974500115724e-4,6.739459298134962e-6,-1.2556116611078232e-8,1.760321637278397e-4,6.812845618154416e-6,-1.2562313354106072e-8,1.7609950601134763e-4,6.812603660833107e-6,-1.2561914546371991e-8,1.7622548831381987e-4,6.755770295736606e-6,-1.2556315384687489e-8,1.7642970412317874e-4,6.669448359319251e-6,-1.2547819558221092e-8,1.7672181959903853e-4,6.589129298634931e-6,-1.2539538164845853e-8,1.7709754531837021e-4,6.555409184978373e-6,-1.253513882005936e-8,1.7753484841258758e-4,6.6077367992058346e-6,-1.2538298544744623e-8,1.7799261074736457e-4,6.774298835042637e-6,-1.2551762208519981e-8,1.7841520147040621e-4,7.059131678797954e-6,-1.2576102085454612e-8,1.7874610453487877e-4,7.431432411420299e-6,-1.2608660039097732e-8,1.7894917443968755e-4,7.825953175386766e-6,-1.264353962001558e-8,1.7902774380033063e-4,8.161207083206408e-6,-1.2673296174765145e-8,1.790278108183074e-4,8.37057801926549e-6,-1.2691829535203863e-8,1.7902000252517539e-4,8.429111940731165e-6,-1.2696822098010562e-8,1.7907052731275117e-4,8.359865779353108e-6,-1.2690259514578959e-8,1.792184376056174e-4,8.218710920752939e-6,-1.2677033409507345e-8,1.7946899122588982e-4,8.070217272528202e-6,-1.2662824877992331e-8,1.798005516314884e-4,7.968098174834111e-6,-1.2652431102927129e-8,1.8017678902342154e-4,7.945639373964074e-6,-1.2648941656457344e-8,1.8055783018827178e-4,8.014489469180937e-6,-1.2653594995131369e-8,1.809079743025977e-4,8.167991049630246e-6,-1.2666002492302427e-8,1.8120015594670137e-4,8.386055770599257e-6,-1.2684515636010646e-8,1.81418169137406e-4,8.640136272423779e-6,-1.2706635648062213e-8,1.8155745362714864e-4,8.897929471115659e-6,-1.2729437938407207e-8,1.816247890930127e-4,9.127778918254038e-6,-1.2749994232411722e-8,1.8163698371062952e-4,9.302709168045539e-6,-1.2765766433492419e-8,1.8161856182727902e-4,9.403888438419948e-6,-1.2774938041748913e-8,1.815985642893323e-4,9.423138551089404e-6,-1.2776645313126941e-8,1.8160681506560852e-4,9.36415692920561e-6,-1.2771087603012172e-8,1.8167007529985502e-4,9.242389932513445e-6,-1.2759527269267482e-8,1.8180839374719023e-4,9.083630182385395e-6,-1.2744194260900506e-8,1.8203189191582484e-4,8.921407254932055e-6,-1.272809684680252e-8,1.8233811686921964e-4,8.793234923543979e-6,-1.271472568547752e-8,1.8271007573164471e-4,8.735513832696627e-6,-1.2707603433132443e-8,1.831156226205783e-4,8.776587215035303e-6,-1.2709611967731912e-8,1.835098044135818e-4,8.927979072561361e-6,-1.2722097762312471e-8,1.8384221630675696e-4,9.175500192615347e-6,-1.27439367278731e-8,1.840705475552472e-4,9.474371020128938e-6,-1.2771002906062082e-8,1.841780628060236e-4,9.754616948466088e-6,-1.279667951127827e-8,1.8418683651227492e-4,9.940934290960093e-6,-1.281380356682737e-8,1.8415563603335129e-4,9.98187460304554e-6,-1.281747050358581e-8,1.8415861263877017e-4,9.872544364405676e-6,-1.2807136409084753e-8,1.842552921475183e-4,9.65575714304891e-6,-1.278665574601449e-8,1.8446960989311107e-4,9.401323160175794e-6,-1.2762350921109002e-8,1.847878917819339e-4,9.177921705907351e-6,-1.274048999348862e-8,1.851716145817177e-4,9.033077144764868e-6,-1.2725517880425859e-8,1.8557404333119885e-4,8.98674862545095e-6,-1.2719465951244568e-8,1.8595285565285299e-4,9.03489153155634e-6,-1.2722206457539776e-8,1.8627673471227903e-4,9.156961441484826e-6,-1.2732052732514901e-8,1.8652737698281774e-4,9.323291635298407e-6,-1.2746379558568107e-8,1.8669908398996258e-4,9.500851281252383e-6,-1.276214259667023e-8,1.867974540649122e-4,9.657494220093313e-6,-1.2776296198795173e-8,1.868377674238962e-4,9.765290802188679e-6,-1.2786140679959678e-8,1.8684306967336814e-4,9.803397871508996e-6,-1.2789619363565743e-8,1.868417147083351e-4,9.760610094037025e-6,-1.2785567727151342e-8,1.8686412458466885e-4,9.637324414561794e-6,-1.2773894189412115e-8,1.8693880886411663e-4,9.44635537749392e-6,-1.2755655110877828e-8,1.8708806034181723e-4,9.212124471751703e-6,-1.2732996276901077e-8,1.873239407935784e-4,8.968006164774606e-6,-1.2708946706398693e-8,1.8764524855502274e-4,8.751851247504868e-6,-1.2687053344743047e-8,1.8803613506589658e-4,8.600047003777075e-6,-1.267086308882513e-8,1.884668350213392e-4,8.540750156571121e-6,-1.266327943929974e-8,1.8889688401037388e-4,8.586957156317759e-6,-1.2665841049346619e-8,1.892813662336039e-4,8.7303677532984365E-06,-1.2678028004774141e-8,1.8958055151708885e-4,8.937957777496288e-6,-1.269682650981506e-8,1.8977205698003573e-4,9.154221964303619e-6,-1.2716894887330907e-8,1.8986226816951858e-4,9.312023948278568e-6,-1.2731645634466873e-8,1.8989097282145473e-4,9.3523306591095e-6,-1.2735235873700964e-8,1.899229344963519e-4,9.246977657328054e-6,-1.2724818924541804e-8,1.9002600500419477e-4,9.012639158824845e-6,-1.2701873808086355e-8,1.90245267253111e-4,8.705899735453676e-6,-1.267169944090641e-8,1.9058743747324758e-4,8.400731767561984e-6,-1.2641284800066107e-8,1.9102317062649488e-4,8.161375525659737e-6,-1.261678823134974e-8,1.915028135995743e-4,8.024638131175617e-6,-1.2601877107848063e-8]} \ No newline at end of file diff --git a/public/Cesium/Assets/Images/bing_maps_credit.png b/public/Cesium/Assets/Images/bing_maps_credit.png new file mode 100644 index 0000000000000000000000000000000000000000..15109db3cd4937eddafbb1400e5cd778cc4cb7e6 GIT binary patch literal 18831 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 z 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Images/google_earth_credit.png b/public/Cesium/Assets/Images/google_earth_credit.png new file mode 100644 index 0000000000000000000000000000000000000000..a7622d822d38c661a56b32be271b815691b6df7f GIT binary patch literal 7703 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 Rvh4r>002ovPDHLkV1jBLV0Hii literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Images/ion-credit.png b/public/Cesium/Assets/Images/ion-credit.png new file mode 100644 index 0000000000000000000000000000000000000000..71b7bdf1c993b6a03d5ee7e021a3116173b2fd62 GIT binary patch literal 6028 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

-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%0AGV@2|d;eeu^iq@gYmFr!di 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%0DUz<)3u)Mq?O05Y3|nMn{x%p?;Ula0o30%ZgN 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

tS)XRORWB8Mt2rUnXP5R@#$;Zf?EB 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%0A+}OQql|61ruuq<&g(RD(Wf3__M0>0$sb? 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/0/1/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7e63bd63e15e41ae5cc6de1cf5c9d16ce6a3ac48 GIT binary patch literal 14055 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�^LnCJNOiE^|dQAevN1N8_>y7MSL3^S0uzkkUwQ+k)H z?Kg~*G@`El5ZO9O>6%A;_7tCfa@F4meqU}kDTcmjt|LbJg5xzSY;QgnvsT+r>Qp=Rq5=|3NKa1-vHE8V zuGxk;F+o`+YL_Z~E(LlRsOL4%CSRKbEZ=Fu^W08hmrS%2sLz0sN?GbEk1^{^N@4q( zaKvhwSCI5{Okbroit$ra|J{rrE#6hmqWS0oSKnlr*n)t70FpyOWJmvYx8;wtmf#7!~$b-~V)Sby55kTW^=>;-Ehojjp8yTtq>Oxo5Y#a-|71RM9kj0^5_d7qf9Q--=%KLzi*p z9ocbR>`7D%3hh;Ln}!|q&DhSddnl8;#uzeDL0D(?Ep8TT@5;K z7vk6-FDH28qOnrR2JH^#{c()JI88V9?rMsHl9NJ044bdYta-=OB%8k%Q{=#r&if!k z^Ge)@h|!fL-dBq}QDHX^HvI3cT!853CcI2;s=>TgWl8knEdzHN{%kD*m-&O^$4>8; zSL7IGQ>)6t^cyj%9loE-)nw$tz%ndvQ|Ha{hfJcG5ldXHA6U6Ndbu^JE8>*@im0g? zHzdNtw=(~fd+k!6JoYS=NMT0Lj}kifl~1iUYTU@Jht{1>j&g7|S=GO^ttT_GPkADu zHcv`3-Lk_=@tR{1CWK5XP-<#E`h7 zuceLahG|F^D9^>K{(g5LRuF&S&!|KHnq&PSEhkqN$AJkty)C%JSMw*)**3A(ZzWxE0nT{fI5#KymTA!jo`W;;%R! zcW>Lgd!c9F2%d^q!;2_Ut*Ts-%ogYEAX}}#cngNR5fEr_o<>1j)5sz zl|FHot?eYynAh>A2lR5QgMp9nJoVc?0D1A#+p%ibJ+@MyYf0!C zz^R`9q55mh?9QN;rZ_K)BoV=OY-B|Ifv%EB59(B!V~F-i`)n1 zPY9~ytvu&n-Irbjq6?_PelFhH3B9~-$uCS3k&ar8tJ`-4E? zgQlUS0*<1K084rB6G=<#>;%jsKmaDAI7E*sH8y@5MZj+^#&blIEc!14vZBr^G9sn z%DrL1HaM8wnAH0$umb6<{scRCXn~^On;ex=iM({c=C_POSsqIGri@mSqO>8_v&<~T zpVZzPVp)3qmZ86bII#8d{gZx$qn!MzSoh)6NtxD&ihO3ed!V$xG%5e>4#+si&0V=t#1#RJa(Net{;vh{h z1tK^4vqbS#`6-4)`m2rNB7*~$w>pbJmaiaIz`pucvO7}Wzr|cD1>_{NH`$M~N7`F3 zj*4^`D6&`3Bn$e@Z!DvicV$mX;~h;vpS)oWyCv9GZhkbY^NBEHWqaIqNPN`@7wFHN z@A~%>+8QHPULO%TCQ7frQd^YE8>7fm)!!iu(TO=3QZ-qtUw%^T`u1g7uc5olN!hWV zSz-%nz548z9>|i?d}HWogA`+()D-qln=9#|%4Yg<=oh4-*=^GAG+^PIBfVR{2-U z2Uc$#Y>%q)`@%b07vN(cXECuscm7m~E)JDo2=Y;*)W_d`dezjH=vCsfcoVx-KUOUk zbZ>xuQ9xSw^u9;$9>sr^C(FoS%#d>gd53jS%=;PO1*uV3C^??@UnIyfaX7|+Sq7)7 z9di47q#25t%$AYzT~cOHz6{`uM!$^cHBrrk;UVQ?~@O*}D@z0&+I%{NAQL4(bY5U{mrcr4Q`MW`~b~T@dz3Vn*7G$oAo&PZZ zMI;pha*IpF%?w}OmAcGLMKa`^yp5fH2AC>?#QHO98e(v7`-Rvo?^XNW0w1F+?@3fW z0&o_IGN(7)_T(X6{_|561Z`%0@}F>N%*+MP1Fi@>6|$PuADIoQ`#y^c8M3QB(4Ob~ zmD+?HTb$(2qbgZ{hphO6JPfatcNJ1F%BuX|BHd`{WLqf0CLc`@grzmUOl}a6VEZ;= z#fJSlav=SzFaC)#(a>g|mbohK=QS;4v^*s?gcL=?e2P^&@OxzJ6iu{gj}iVl@dqdQ nGEs^3tOoyPaiQ126}_~o(HS23x87XbhQfdK3C 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 N=ZW^Fvg+)|e*opc=PUpK literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/1/0/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..605f63f13ae6f7304fca2ebffa0420afdc3e1f8c GIT binary patch literal 11399 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 M%z23(+5O!A0yWH#b^rhX literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/1/1/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..319458e12a338f54f662f01f8a5966acbb26a891 GIT binary patch literal 10652 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 O(89*{jodQtXa5H+guAo= literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/1/1/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a6a3859d6c448595bf674abb88bc3c51c7d083b2 GIT binary patch literal 13142 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 I`Q!5c09|P>?*IS* literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/1/2/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6913a2b087bcaab44d4b1cb2a4cf7e92cea59062 GIT binary patch literal 9643 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/1/2/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..df89ed220abff86b7a6ebde048cd6427533a1e68 GIT binary patch literal 15312 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

^0hw>=ycdl0c0`L%NK1XE9zY5 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/1/3/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8f27415e273302f8e68b11f041dabc05d323e8f7 GIT binary patch literal 10532 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 CbCZDp literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/1/3/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ce2b06ecb08af6d7f0ed5a71aede2e75d7c1da79 GIT binary patch literal 13262 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 Q{d+fdY9K(zemDKU0L;K*x&QzG literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/0/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e3c0312010a8ff72e5d03f840ec730869f9d7642 GIT binary patch literal 8157 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/0/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f3ec3215035c09e69bb908d948cf84ac199f847d GIT binary patch literal 9307 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

B(0oLYLG5>jB|SL<8z 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/1/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..32c6e5ae28e354be0e2bc54ad06cdd5421087c4f GIT binary patch literal 15862 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/2/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7c390948178866dcbea9f05c0726c306ef073385 GIT binary patch literal 10657 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 M*_KK>`gZ!i0SZmd6aWAK literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/2/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3e7abe713796c195cd9b2fdd35bab1a56d93d923 GIT binary patch literal 12456 zcmbWdXHb(*`2HIR5PDHSN@xNiMJ4nW5ctx2?+Aq61Bwv33Mz)sK|0bxN2Ci%HKBv_ z-U39rbm@P7r_P*L=bU?IpEtX+bAM)cXRqDox}CmV2GDA%YN!GT2nYancLi`e2T%qO z6Ws;yf4(Hd#3ZCtq@*AaDJ=yh8P$DS`uq22@7<$+z{X6^2xh!@kA<5B%+A5Z#YNA| z!^gweqr^M3{*ASNLp1(DK_lG1Q8++*PU{~WjN06J0v0096<@DM;qM*yTFxa|gT z000EUciH|=!v9AQ5CVyaNkF7z

(UqMK&i1Or?IyTt{CzX<&VbSiEcEjuuy@wiy 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�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 E1AMk3J^%m! literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/4/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eabb83c797f17f2d050def7490a89ec0dadfd923 GIT binary patch literal 8474 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 DwUaJM literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/4/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..54e6b007638c5635711fd66bf0e865cf2d293713 GIT binary patch literal 12265 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 L57JeI-u?a`tsc*t literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/4/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..311241c8d8dd68f5e0c9e6bdd93c92450720fc7d GIT binary patch literal 16477 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 ONjPipD?QNFkN*H+1YbM= literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/5/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..01a1caf81b392c69579a146845461cb84fa24c72 GIT binary patch literal 10274 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 MtS(79^>69F0GRHO1ONa4 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/5/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fbcfa628f1d8b16cb5923858a851722ac939ab2d GIT binary patch literal 11877 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 bIl1ie$J5y!#kB{r>L`lu6K13!ALjlW031w_ literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/6/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..334ab2581e88ff5d677a0f9d27b6647242f5d6bb GIT binary patch literal 6636 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/6/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ebbc3a099b5bbe6d8d22b0e79231e6ccf595a969 GIT binary patch literal 11564 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/6/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c3a8e97c87b91e3dfd53501aec18385b34ad3f5a GIT binary patch literal 16411 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/6/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8f730f364ebd0a3db37383a638b4384662f1f733 GIT binary patch literal 12756 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 V@<3z0L8+)r-_^Uk2K+GpKL7*R`uP9= literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/7/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..75235d6f8763163e1aff35b916422c00cc3a12a2 GIT binary patch literal 9032 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/7/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..036d682ec89d85ce8bd3a0aaf645ad008a621850 GIT binary patch literal 12957 zcmbWcbyyT{827tKiU@+B#FC42_fktp3rKe(DP7Vaf{IHmU5iL8jpULN0!xE*EalP& zNGwRd{LXpfy3SwcoO`aBf9APnp3gk@%zb~qb2oRl3V5QftfmaW!NCDo-*14sMSvmz zAMZYJ|2q=k;}Z})CL$svBzp3QbJXZPs%

{${_o=QKd%2c z|5yCqVE+#;@_Via_sfDu_#YR}gMj-TmmCkDS&)E2UWd@e>nV#+BoU=TQhrU>Ly)lU zUn*PgU&PN?Mb=&%{fG8{k^R2|d;kB7?05|Ava0k_8*-E z&~paVY?0CJfU?v#i7`5D8B|a^MSnkqbQNZjrZ21k;en{o3fcRVS(6hKJlp=IZ=!2u zp%qzX5nipgu|}i41~x=CHNO7S!F^8eqSHD=qD5%Bec)EHOb-*#%2{8Fhj3N0B`_n0 zT?!q`&Z*+*#Ji_Whf*)@0Px({;`H4@uzm77x9`dlHtzuCPMNF&12&!X7ner*(y*(-lGE;iIvK3 z%C>G@^SIaw;%l?mGVlb(6D@=9)V&`O+Xg?Kd)u1>TQci^u;o4r;SV3TEv(CO-h?>| zc6CyDZD+uXCP=5vVNQ!Ekqw6hZN*o-y}s1=3WG&I9D3DW`SL{HKetLY5#5Z7xLW4C zuLfR5U;7o{z&^ve*pkJ$=-~ahxuiRECx>{79_9)CKv7ErZRQrEwYH zY~lGs;$6CzE(kz@3`^~1FdSPULdNm4^KviL*{9)h_kW#C1rG>RXhtO}OJ*wNm!Vmw z!l?`%!ns*}s%ncZHY;uhN+h`WjFwH8M%t1WUIQtKDehk>Bp_OCjyom`IYN@GGvhI~ zo?Y_&)T645qdyAxM-kvM*ZqPG=1TRmU_Thv#9#UA-eG-8GirHRT>)3 zypGPuWR>Xt3JjAr_*eO@0jbgY`NuHSztmx2G&pkdr0SIxOPr*;Ua;@U1+9Wma;>0! zyz1onU`36f9W7(Z)+`t@no&!gSwza3?!>=gz0c0xq19k|VyLO0(Ldv~MzR0d4r-sO zt8JR6*mB+s7Stp435DZb4o@_N)|JXR@t1e7#+pE+8Ioh7g8 zSi=u<7-!mg{b%_QFYPg<3T|4fYREuC?vsxeoqp>9c;}thtqs?uEKP8!OuP>?79S!N zf#Jd6y@Znyy=((xG>Y;O3of(+QH&3{(xpi(i}K*Ez23rCejIcMm~U#p*O~MW?HKZ^ z&}Y4{9}Fs*JqyWpXEG~&VKKPzeJJVY6M}b`sDZ7l%|+cdWM*4FwXXKcTi>%g0PVi$ z7vA4uN!Rn!r0VgW!O1(Y&|}x6DG}bm#1b|~u!OYT^=A9?9}F;!hLj4>E#k_iekpOG9c>rS4CIVu?jzd&!)^JP_{}11|K|uT zPXV%-Z+Tj6jgK~d>k=531GBK48}-gZaDh6(vl~8pzGPRb=E3Hqj*S9wmhw3(iyiT9 zv1DIX=(8JFYmYet%+J-EO~_0heZm4RNSVlP%$l(D(#YdQ%dBzPog+f^hwcakA$m-9ToP^b>B3 zhVzGa*L|=cYIt6Bw%uCzhS#FM8{G$)h6N=C>;CkNV_gTIvBYF(Bl{ z;VU?u4eel+I3N({b0D$V(*8}8?~2?NRx6VG9bZ3_h1w#RuHjvbYz(SxI{ba=k(U(XBi1If{>rsmhFozek}_k$?<_s6|em>S*2j2W-!KO z)Yd{2sr&$wIc`PwV^#>-T_}1W{hKBs$On-s5?S%sGrS!MOuXf7EjZvu;ld{VDu zisz2S%NItr)q8vV#t35Fj(ukjUz z=cVj97a#3ld(E3PjO}hV#(8%bhvhNH2s8PoFZuXhmIAImkr&vSavpU#Fos_H;=H1_31<^|CDD{?7R|naI|a`uJDct9 z3o(CLNrS=j4%}aaM9T&*v2eb~qIv&Wj&PXTUCJv_%1|H#zPDGMo{8Wc;+dTUSgsjJ z5vhQXjF?!}w|Yab;im3hIX2m|rJ@#CS2Z2og{3WW_*wN?LyAPSsQLY@^-TTsH?%eW7$%70+ zWeAsu%flO&XP*uk*`y-CpbjjR|Eug&H52N-z|>&hek_#- zAGeK`%lnaryFXm({{i+NM#ZBiT$|N0H^tEJMj>2EmJrhE2Ku%D^0asXAxVY?qd!74 z0{Tfg*2Lz}kY0uY+0#3~!B+LXbl97Tbrx1bGOeD(ZE3eYar!Z-FNRl$~SbiVwIxuk5 zlw)OpzucpCzryI=!qO!7)WD^cqRmv^RHvzhp*_ zm9(JMQ%5@%ajW{y|jc_*~9x6E$;q(Ah|6ij~mjLEwfM zOh3`xlkDpj<)n}7AvTjCH7wY8-72XMyLw{cK^ZGtKjHi>^# zJjX`i9eu;m1%5cU(|L10x)~6_R&S%mYUm*>D5m_!du}hm!$%V)p&z=6gKECMIy)7PR{beBsb?$Pjb~uu~VcnwfoZFrH=P z_gct~o~|PHx3h6*sf+RR#QjRwG$Nz~E#rFMAx7j8zBTdf*Ls?TBvJnZi2!av>?oI- zbje!xlU^T~;F$JaR{0W(nA^im7_kZnhq>!Q4$pDr@)yIzaPMHXQGiT11LFEf(=v)F z4h;zGyoS)GkSd0>${+UMa3EjPd6BpqqZm_~cqUZkc!KT|Ud9>j_p`?~{s{rPKK|b& z{9|llVYm?73?g+p#*|~XQptDwfak5stbTGc?Y00b8+KH z!tlBjfVCpd*{@wQ{R0_&p%(4N>$44Ncs^_>gEvg?$rRz!{kxWrk;%SkZ>_yG>}aeI z4I#=p@Lxq*BHXC7MbS%mBR8%%yMz>aHMBHzH~5QGHkc$ppxz$nEdhyBV%hg@je6ph z=nav)Dw+E5=l7vcuXE){H8JKYi0V!M!eYYtyS*C-E%sr4ysO) z(QdidQ3)Y=JC-qJhx>e zbQ*biA6BDYgvHbK`{q+Yd)rYU}7b1PE#VxSrzna}U^%#P)QIoR$eW zPcUD2tJrc|eDQ3;ly-LZaySsiHvmi13V)5NJykg`ec$N#VFV<*)Z=%luk8SW*657` zgiV_2l$eQVZC+DK(YhPp7@IVx1&Ry2vw^w$!M+mCrHM0%86ZpzaP`Qt= zFg?Phzn#+i`S;84yt1^;7z^{Zs6UvE&+odSj^m+(Hm4=j^`kz0zrnZLlp4nmR#1n! zDnPH^%~w|uGz$=U9ovCr$`_RGZ@uO4Fc5Y3y^_v&4!D&=H)fm^`zQi#*8dWgd@kIb zfGFZ#mX%ZN+H#`Cy*`=w5*_!2dLuzq;lD7B2_ErjVDOtjMfN!dy&9&^}pvHP2}Y|3)R)OcWaG3f3o2X1)Fxl^o%$fbjuF1a_VmK5&fBAr9If z8}1}CRU!;udW2-(+}T%a_6Erv3xXZEytS((?f{HM&mU2Iri!0>i-9Kh(lF(Ou@$PC z3qI8<9b4)OC#N%pqj*k;P$UOOK zT)nO;PBzIh!YsnoPsjL&*x9*f;XVqr>Xqyvr_~ySnZE_xS|}PuUFOvN!dQKRw32VK zUFkd69la%UHXGaC%Z-NRy4-Y^EDTIi;RB~Nt2>GMjrzm95zs|PR!F9>|uTSJ;DP3sDBmuh4vd=p+5)Swl>4@ z$b*gd%IwgMGB>uH50P z=X4M4KeGSx4%gGm{rFFb;|bJL?X)tB{Iwd}4BC5Sma?$EN4X|lcC$DD3K{(9QC%rF zy!ba4Q81e)w-9CJABQcuYWL{Fn3Cx{lygDwEgB zeRl?}e&SqA7nLX1W?T01hx+Gr7Z+&g0=fLl zE>G0*i;ZBTXrJaxlxb+gH?;few<^ZXZLj;fmJipAZo!@0=nJou1RD>EKYRVot#T?z z$6l(oeah=1{yVDq9H%Wg8D4nrd}5896LB_@v;LA;+JBTtwU)imJi!Ec{Qyqx94%FqcFh{_8X`gE!J-T6cg1 z$`+*_&tBfP%(yxH(dB|hF5XgYedowy*w0dco-w}Yi^;}Qo;_LtTwCnU%EVX4tw#qw zUF?$$E=4}vqMe@e(s8Yr_32-Y=w|?uNE=2}}^BW)rV6kmC#i zp(ICrL9_ITSSa!*pbAaP%c1QD3|g2n+vg=OE~r) zMs^K0+*E@VCPum6i{oO(e z8-ft|JCJHyX?s-oVj})sX;r?{!A64fy){MPiVcx@XM~_l3NF~%cuphIHM_AlIq}uz z1D`RIrJ5)h5+@J2Y+PjUmYRX#iQyd}oS^RII!Zu}V!0kHYa;9 za(Ru6?*Qp}t4__9(0Jn+6XHUTw)hI~hqnz;rDknB$wU{*Lu5J@FY_GV@Y4}MF>)p1*W=Mn+ z(u>0@9W|v}{6P*YgtoG8!)slY!TFhX#tW=cJ~6)=GzDBsI)w7Ft0d2^IsMZ|Wv#+b zumv86Y5^~mZpA>?@Ra!~-h3O1VUrfBxBxI@@~EsG$<~#e_$2QHi+JX=#y8SHpfZx< zh(5=5-dE)kdEyIapv_6=zVxs>RH8CMBl@)0ZQdHWj#;xexL2#B6&0!^fKO;5!_|$`=>C5ZfD}7xw zH;5~@!?djSBlW1-zEv!1STt>riz~|4bM7KyJ1ERgJo7eT6CbS&Fp#32bsYk^;X)lN zOR719w$cHSpQdd*{2$F_urOG1&!lT%YQOJZ09i?6HIB?v1yHl;Tb_U=BhZ=EBk zIWGcHMdG%(S)xhM42OFkQ8%|x=wz04+96XH#G2W;&E*h!wvo6FPmQ}*3?zHaxMqLQ z8lG+5K{HgnHM%CUC;pXz1`9gxRlpKuu&DM(Lx5fKO7(rObXxTZC@Koh{$j%BA;cpV zIB?kO6X4ZmL}DVwef$Hvtl}QqYG*A+-%5*`;x(AhcBu^@k-D61PIDk5G=tBY36J!= zK1%}Q9!}(^InA)KM@S6pm_C1235=9OSA|&xZ5`Ok`p<5Y8o{|w-`O&o68kPqN{1=u z7CM<~<=HCfFCVDc29tIp(B*JcF}_V*z0ZZq967cx2wREY@_CVaY|1bxQT+vMMU)uI zN>Wp^GJUeLqsB%a!J8(NKqc5?3odkARtE5PUULmF45SiE>O=gzgQxPpknp?Maq}ycOwNfxxm4t@5!PDi!1kz?T#IVH|*e=i4kpyXs!GAkT! zAD7DM zK&e+4%x)TwVMhFDfm}0gVxFNgH{3@}T?5-;36eQU9F;k-_VMzcu0&Nh-?1$;S(n3& zAerS0?LT=Q0bk}zr%^pFWH6Vm&e)H;*s4^EO-oP8sSP}~8)3pO?&)fJhD?93dAA_E z{Ove>Kb&uF$qZrsJL4!pQrTf(SHPRgx7lAa`I+^fw(ldVRr8OV&aUwl8|4`$gyy@b zBuO}cr@e}TS&C+^5B6sAgMC=7le%aKt2DLjx+L(f^pezLmhw`3DXYAjGGn;k+1Wp8 z{z#3|GcghKeE?_`zkXg{G(^D7i~Vl zt|&0EL%bn~0O8W7tc5EchM@ZC@@#kFz+quf5b7s-o{2YEB;nWM82#BW%OL=e!=bZy z9i*QaGm?=5R9@DP$4$_38!T0Acx3M;g&tfetw zP*BxL#k+05?~W*ETGchHa&*`o28?~L9R4!6802-s#V=L0(iW7qKJ@{AOgh#!zG>H0 zQKjCI**25XnlOV7rS#2N3u1DWPocy#=2Z`>N<%o8EbsbAr?H;x$Y%a)igmlS2`RAdx9M z6$)GbYA*Peam(O=yG>-*t)I83u76Db%|mSYOW_4veDeJe;1+xuiCC&I)THzE_6`b# zm~K?uju#oOX>jb%)EAH;ZEN&Bv;wP9JNoOXzb<)Qocm_^%`N0vzxIDfaQ~Joz-c?? z%4xm+z?Dyh90k&Zfp*o_^NvdEFW6n5!<4!Q!(Ph>zs9~Oth8+{co-G1hY}67MqYtl zQC~zj!u!gGi4yJb0tgB-+d7uYt;ut6jnUpSUATmF+JqAoAw{vtQ3k(zxSP}6gD11> zNwp^0?2<;5;$7m0Ys-w+DF~~$UPb8hzZeBz%Z~bw%kiZn|Al3g50(?1h{5Cz7mBv6 z*Y(rp`m}aPgVuei(gQ>iQEZgr9a`MV$A`XJEP5UP>gJ53!hO35yvcAQ-c^<=U*)8} zc#}V7IXt-p88t}3M8$)tx?TAmPu9W+mG+b2kW@b*a~@lh{J1YvXp0zv@M_aF`$V)w z+x|IaV!>=f=%|u98Y}aB_YR=g+cUV&Y^r!>h+L`>s(3dbu??wS)1U(aglCH(TraHz zr{ym)YX&;0{0E;Pt0rY%Io8}7U^RRa+j%H>+gOxA5_H-gCnIVe)F=If`CVsaljc0L z#LX9qq(QMA#1%SXD;YJ?`v8)eJww|wg2h2-&ZMztufdL*&b_ zlEOwUnR=G$dD0jt%eH^;N0ZV1ocM0IitBF<=&^Wdfxh&#R0p4!>qKW zXJYstwbc=&QffXF`%KZ&Ajh1e5l*K_mw~|w!(A;((!e_aME$k&JPDMvM;Zqus-7v6@#5yUlKMCq!rEsK`x zD5_tPogt5jL z9=l~h-fe@ZL6ZE|b}(&-xM2O)&oqJe(zznn!-6)n?z@e2;Xc$IWr_W_&oN!CE3#V6 z7TVg=C+M!N=%a@u7#dz^=05>|M}xxEi}Akq3CvLg4IAp={vRom_XA-9Bk>kWrVv3$cLrl!nBRLsy*T>^h=xfc_?(M!iNtfEBhX-NWEhh`&>_ILOTB^PJ$m5wck_rV}n99W& zVsQyar1tR!{pb=Vw|VcneB4x6yvA`DY9WjiJQ$_KKrp5{XwmLQqoGstqxh9*N3|FA z&9c^yBcWNX*8RM|59`VARd^3gQ9j_e#;0^YQmEV`Vx2vIg0h0I+qvyn8u#lSulRp6 z4=uX5C>J2iFCGFfuiG~+N1Kf4$>@X>vXgz&T26gpZN)Kq z2yLZ^rkHd+&8?rNdCD-lZUbo#_lkfdBJdgY^cq@ASTXSh3pwK#R@|Pb8tkRMae3T( znPHsr=Sq#dU$w}FSL7!lYg))f277md=U!!NmKGDL6_$E%c~%3N3efj2Jq#)zF`r5I z8eZVI56xX+dvzwBnKZof;3F@JGp}ns7Qz9sA6JDf?^q}dFf9k3{%)8)U8&uFcVKGK z7ShQfx;{jx6(<=RJ5zM9?_YglMo(N(#BtKj62L$|n{`Q-2idR>D=5ItA*-hP)k{1= zn7b*IJf5hEnrMraQTV+~#x{4s+3E!<57qu>+s^niD0x@%l}iV=$`x{84Ag;{`5_J- zEQ)q-msogwv-|^58P$8G?X9i%CiVHc9w+_7G1E_7vR3O3P~UAKu1>wY_LY)Kkpzy) zS*qjfGa3EimAXb*Z@qb!cS*9F0$iabUxmKEIp|n3$T}R5n^0j;kr-1qpM6@Awy`k} zWXf43OBel8qKUU&<*j9ePS%`iQ+URd)K}q^*O9Q3wZT_yDMzcqU~?7QwlCuyE_%He zB*J>Ll|Q8WEr{9A$>vxgv5WF>uCfcFmAaL6`*pCJ5=Y^>?CZT-u~(ID+L59nEEQ7n zHOD&PWaV$QbRcU}YH=dgmP#qKSSdPaHeK_-I#IQi{5kjLS4m;W$a_>3=g)SIQ5k$0 zWnpCU>5i3UQV&ZNxX()?4v{pl8QGkWR%X$%8gTx#)bI_6@P~7R+VN3qwL3OIGc}1; z6q>vrc{xq^TEG*>4m$ZQd+5!JALhpe@54u(w1zb;=<;XTH@4pa&P%NhNWHap^j{tc z?uK~2TWlx_zA_kX7}PR3({VG2blt3bWf#wrP&-6cWw z(kAb~f+4QJUT#v%#p3b$)(xCfIhelv-=R*%9iTPox^%lpe(8i3PYS{}^A@@l8;}x` z(`Ns`o4T4YMoC$lni$`rrZrx~zFG5Ec)fU7D(XwAAylSF;>65vW8GO(S!=?dbAO=_ z)*=3u%(CHOoJpjN*W{j|y%n3kC8>b2jAX)&!SzU0NCOS-Aw$$1V0y$?*(*msZ8%%x z4{Mh=Z*30w$He&M_n9CfeW8$1BbP14&nS;OfC2yC96wucl=RiO(bj-2+8Q89%%_W0i>jJc7G>)~d-+d(bCS=XQ78RHi6zSq87G6Tg+oTWYI*tU<195*h>D;89l zA-(2M4#Ed*X^X~FZsUdGq>4}8$v`CMkVm51gXof!0P2OG$JMdrKaDdiCS9zeu6?hy z)$CSpc}ZI^rdN`G%J<1974I7J>yY@#(-W%J_nk5?E>Wa;gx3X%T+ro#v%KV^s z$21R)p-w;}@zKBYiXH63H+n!97V|p*VfdtIwot#qhvXre_1Q2wmQo2HqmUmOdf?v^ z{*gYWO_3Fw)`KRsC=acSJ@c%at{X{%?8ZRGfu|lyS3OS$ZnzkWLJ6KfzSp-}l7&8l zT3UZ7?boLw)9HL(y&m?jW*^tRFZ`!l4Csi2iO{@)Ci%s6<0)~v7II!?t$0NB(CeAm=ajssX!=sL$6}r!2e$qJe>d67*xVZ;74JiNesp{*HFjuxsk55A=5n ze|~fWTY{7BlD52V6tZ3MZD+pjSIjcpMA=g?PrXosVI`vY>a65kxBMx})Rw-%X9E6| zYpLm)^Cxjpj{mA-DME?9_ZKHcM43=vCw(*9HyUz$vKd1)7WfdECf8t>!IzGVb&Le>3!Zw*pIy@-`}9;Evm zM^5gUWi{sGG%}bxZH+?^;>g4V&2mMqJ0{jqpd#ZVj3!r)sP?)BD+1k5E!?*503`8T zDQkpIt(nAao9RyAQYlAJwYoqcC>EVh%#n~cBvTUiUVu5sSL7x?Re2IyocfcG^tV7? z#+S5{8k>_RuC_}PI@^@iMqVWsLQOPtZ2s*v(l70;yaVv{C6IBb zWWCyqL|1fq7Ut-S3X|~t8UX4WV|OfTSOAak7dzOgWp;YcpVFr4>(mM6wU4n&03EWl z2Nl@BjNo0u5ZzUL153gpEeu1MVAG|ZdiAif4>VY>sgJWL#gPW0o==|R7cCtaftbl!;SbYP?WGsgRbG5Sf}j>9eTN|Zki3XEEhdO)9*$9NIfSlRkymBIL$nV};sIs;>VIA_XNN=uZr`JSZ-@L@nuR&-TO__WsU`@qeJaIIZIbM zI-=OJc@L|>?DH?;0EU%H&3d0bY)P1d0X4H%Cl)i?&i?h$;@?866f8?RwRsRp(21&w zP1o1Q!F2Btw$*svu7;1I^?j|$$GDbUa~g~sS%h$jf7Ho#)5v-lbWu@l|0LI*A5KBP z7>@reidSb~U3L&=6SK1j?)6#7U0D#-Ljqx29@JwG3IdA^AZ>AheeZ7l3@N@D`Ma&> zwa+wp28K#=Z^qY#hQzTO8i>!;Hnuhc9pNtZzle^Bub0aHwY&zHJE9#*%vGsNgglsl zN0#L^vCT#@EfY~=?IOvs&t*cn9^=~*QvQm;BX&lkkQiO&2at4X5KL;K>Cw5*djOW; zo81li#+fzgGjV%Z{dh%C1DoJVoV5Gx;kYA>NN3xL))vziB~k0+ZeCLY(+dBf|yX!N5^P&L0W2U3X_a?>jj4PJ@m!YnO zb(3qaS=*Y1I+nO3EHMe5WV2MFH6nkHHcNVGy-T@Y7LoAtlmfl#Sb~Lg|3iG#Q9i*6mA}asnO!$gWXt zi@rAe#c6d~?-oT**yekr7~K61khDG7r3~9D9cTHBX%ruOgmR`vkLHp}k!Ie=RcYv^ z(QE5a2=zDi3zUr{?-@2QKHW{PC4cejGuid`h__b#e%G!bA1QacF-zB9gU5)EVH52+ zEoO*oM&Ug2*t0Kbv@CO1JZjN#UWX(2YkM2)8?j|5xN}jh7A42|=8pusG2ToTCNh3( cfdKh!MP6x{SuDa1Bh!zA%^s=Id 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 n!t@hwGU0hTWP&Zid5IhuC%> literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/7/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..82c2a34aae83ac3608136b3b6faaf132a409dc25 GIT binary patch literal 11859 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 DcH2J` literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml b/public/Cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml new file mode 100644 index 000000000..d7734cce0 --- /dev/null +++ b/public/Cesium/Assets/Textures/NaturalEarthII/tilemapresource.xml @@ -0,0 +1,14 @@ + + + NE2_HR_LC_SR_W_DR_recolored.tif + + EPSG:4326 + + + + + + + + + diff --git a/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg b/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mx.jpg new file mode 100644 index 0000000000000000000000000000000000000000..67192282d950d99c8a6e46de20c6e2291295be2b GIT binary patch literal 118775 zcmb5VcT^K!^e-BE6BGn#0#c=y03zK&uM+8yfHajVCG@Hw(xr(&03q}i5$O<6Av8fD zK)^r(MudRW5PErhe|Nq6-dgvsJF_OUGjq<}-0Spv80GdmQ;_?Wm;Qin7OA2uS)&E?lyu7IZxcmgL zT^`9)6#u&njEd@i>it(2U~%n#$^U(^Up8v0H7)30t?=X(^sta*A@2z}u2ilK(YAK}S!|$iT?X z#KbOnlk2AB|Mhm!2VkYAzU&7Tg%E&}m4b?u;-VkG^WVV!xBXAI{-p%KlFM7u`hy*?_`N2g!^GH<9zF{}yOZHtoAXv>tFNhqa{b;XL zjDjJL=k4m@#sz>omLAgrj-KVLmftsecPH|FxEBqG{4GgvCBUdHtj2gI=Y7}0PmWM7 zNS#lcPdml80n&>4_n7IJI>ZCI^5eumYn0z2F>-z|QrF$SaQ?40}(d1ws1J{^87AIK9+Bq$R{;WGk{*4~`JBa7uzQJhn6SY^wnOSm!&l=c>^gR=R1 zK{3QRJ;_9yTStf;SolKv7F89TI5?FRE#mw(r{|bm7Kz|Ca3>ajAd9kLZe9RdpO$}` z)J8sk(s9k5U6yQ)B_=$nsQB9&`~_Zpio1S?Itz#}Un#-JnJMJepjE2ORmQvyzAADc zLyu7YLL;KeGLJ*ASu!I$$Dq1*85&itFs?EPR?2(%Jy4LV+~k; z`MY!-Nz02np~V;BAtEAJn#W9v%OVItU^VF|qJoGPtkGchRaYP+l|T$nSqoPn2NkhB zA}sNN&rJSy1qpC5@BcBuDhT^OlknX-svj2cy4%ZvBWV$%sA-|AI|?h-mR;nAV*NHin*Fq&sBg9Kt0 zlr^HW?+;RACMbu?aIZ&ydxb&BU`hK=-@x9_{eN3xovXeYjP4R_Z&=IE@uMgur32NS zxSS71sAuS4}o8XLO;K3VQ`h0s4-L^J zi4jQMnzC0|K31g7^u|uka|w>nKKm?4EPO@Q9cbPWW4+C$C7P-S+V`}!IXi#P*+7hD zA0o50XI)P#`L>ZCb^+k>iTu;n(y~I4d)uN89ExHe#Z7>>-!%9|b^q9|o=SG83^?z#L7<^8A{Pw~wn!O6%5Syp#}sY%YGHaO zToi8XxnYWr!)@OwTRHl_S9|{Nk90*30>+R`LyWL~pa-rnpBuC35P@HRc-E}O3_G~V z*i&bI2*kF9c~y4d46fIC9@Wz*)tTvp7knG$$b=Aw0*nScRVn<{J3D1zMnCr zuC})a!gqTq;}PtGT6C{BYS4^k9;rZm*sEH3dx`8j^RmkWtaY6tRc%sURJDQiDw+0Q$5br|= za0@nA{reK0)koRwVbua|uN{tPXD>R`YR8zgNSfkIM3A$}&<1S&iL*rMCMoxEQ$5CN zWZ4wPQ$Mobchk35rl3lB%@}QNvbQ)O{MgRvvG16dr48z_v=|5for8u&J{8`ilRrHV zx>vK+IJ-+Lx+s4;x&w;74Lpk;?p6hnGKbfj1?DJZJhy$Mu0bQbw z``_0sHT+h%hUp^r`+oSUq+9?RR{gbQy8iJiIB2iJ3Ll$*yzL>^xqwRSwzlq ztZut~#@b4+fnhV>;Mi+N{@bnMY?g^jOgV3gV@mt*+lmAO!$slLj&U~N3r z6j_*Pj82_o6o1i?IAHbEfImCR8*bs*if{#_+yeib8@K=VRL{qpFT@xaq={KfQS30i(a96*cj9p{kGp#{2yPj(YT+A<6^kjz}}g*5hRIt zT%0LBES=L9O&D$_LKO4Lji)k+eFyuEPO02bkzPd4CSH9Uy{BnzgFZC~x1bOfld>*w zAjORcuW9{N;J~f`dHjfbqds&T^Yv5uJ5FZIQ01eR*a(7uZrsq{y2>k2299+Oa|Bk= zEwWR;3V-HYg9m^0Joh6~%uQ$MUd}SDS(~==K;R9hcgWY$YLDv@k3vV$PqdO0F#a>! zW!D>M7c{q&Xl_^URaAtHKNmN!NE!Bco@W{9yAbk~nijD%^O$&EjAIEXP43*N@8mD; zVq2#QjDPdh>fzjZWd8TGf@h5v0Ib?E@^giN5fH!ht$g9YiS!=vhfM>sD4!9EyfvMd<*t;6?* z8pGYdI?z3oft66A;JAedSyNm0~4QU6^o_8w~+i#IYmgQzP{58d7my?QoNqS~0m%3vfYPWCzarsG@S zR1;U|<67`i&wo8dJnKN`xjDB&bp|!kkHIiIz-{}w7V8Oc};PvOY6P&J@ z)lsCYxTS9`{w}Lc0G7PM!knhw_pHH+a3*?&d~q8@)r9TH-fYaukky5(BJi|7yy8Ue z`EIqPmJ1v7|GD{Q{*?nMvxOImrDV(8LRrUHMp&2`$tKU}cld<95XAF+nk~8M_NEkD z;HSKiO@)_|w56HIIs2`6*M)*bTCK`NZwE+2%oa{*CEZu@u&L)el*M0g`R+msAQeY?c%7YJEMbX4h{sH0405 z;RZ#dd*PYn+Y<3*^xD&%|IN(!ERBMhXBm!v9=yz1i{RqCZ!tUPdx(drd9Q^MxSCco zm8+b?m}4S`c{vB~UU8`sxN(HCcyhb8QAQYn1=<*U?TuRBJY7_55XqNaei}o1U2J`x z4>=fQ@hTUYi&~9vcD+t|uGJV61?0~i2d?MJ&%FQVG^HJR>o_R-R`vFal7qPSBf1HG zh4QC;bbQ}naM^r2a||6h^%2pt5nN?nYYm*aRCT^C#(|r_*4ATX%TU$ z*zM?c?%QII9@kYR%iHGJAe9SBD!+R)K1jr0q?_Fl%}Sp5?SuHs{lykhH}^6!@lpM;jgf$ zkG3@y5899cElC1J+;vI3br5e1mf{Jong<_AZv2JImBx>2)Jj zP_%Aj^<1QlTDV`C892%df|3A(5rnqgk5TbS1L^Vb9(V4b@2>u-9X)s$Wk5-_biT2B z=+67|^s9~D&QRMO-Mc0=^brvd>Q9%`;@bKev4L~U15O)o%Obp`?7V|LJOeBq94%ju zIluR8!Dr^ND0kDlAx2M^aY?g?^xSrC+dbK7?@^6o&0uy6~h$oVko3Z zbBlqra^kL4!v``C^c!7K7(bNb>XG^!@i=zO{Z0T~#6#n(5kJe~%GQG~TyLsxq48=D zEOHwE8t~MfI0xv-sF_TGuM|P;HFr*T>_ibTQT{q2TWiUWR@x+i*C;Ja?ZysPam^}b zzsqlTp+n4_dE2-SHYctgfBhdEghOZQ&Sz{!7w$LX}SK>k=orx3(Xpg$yj?#?W;7;*t1TmXJv4)FzGS^Ma!{@K;zyV(~2i}j(z3T~6w;l(zGaVc?SFq^Ez zH&Up$#iaNKG9ayZP2^_ArSbu#YSaGkPG0_VIOA?b+2xU6-uZ7WWN)dPCo3$p4}M2c z(-g=%7rX>kXEE1sm(6-W{<^Sn>Q(p9i)m|f(T=FVD*An}9x%^n0Wr$;97DvYYl8`Ji|e9R|5W*=S* z%;~H+67pR=>U%59HC zI9be6m*LKHbQ~}%2v>k1t-mIe*O4-8y6S8~P#;|~a37V9pVL0Lh5ocfB&^V9W!v=a z&fM6;xc5t^`9N(c7i?Vbga_v88StF`C?>}X-?{F}A;gvyEZf`Z@kBNWWvR5FahHd< zM!sJCvlXd$V{1kE7W10%;43B!Ej9SLO0IorV|0FvNw@*brxSZxuc`MJAr*7lYuly4Vmb|eg;>D~&9>R&sH5$k9e31a7+GyEcw+>9aE;Ir zS-11 zF&XD?d_mF1+SFQH>)Af_0yO)k&*{ZQ6u~luT{veWoF56xJ>sp{7<+Q2HXGQe5YAqz zjF0%1aFg-+6G8UMo#g8b{Mfd!r~t~`1yv&~)QvWKH zm;0d@Oz+ZrH}rB%O!+~5j`|FS!Vu`&jya2-B0Ywdf>V<}JwmWZKXj5DNHZe&pQ!nI zvJue53@8}1kT`tMH(I^vNJ0}7c}1uBtV!ijdRp;ka^KR-EbJ6IIKuf+2YZUrq8#ff zI<;WrES(jq1cRh+=*M_ZxlS`kzbc>T`4a$4vZ&Kor1BgB`zcz&vFzpN*1#0LPtsmy z)JE^&Xz=&)#v%-hM@s?mU%*`o&e~TVx15wBm$0p$dY@6a{(#Xs<=-hvrFO|dcpMJf z-M$QG;66J)gA_>CA^FP%%uL)s9?|*m`DxCxZAnAGjqSj=A4*39ouV@PifVmO%d^(i~BB@kXb+>qb!9jxMc?YwmG;F`Vougn*}>RX&;`I;tQ-YOlb6eY^;1nH){aAk zgzQ3kv4FL3i8ai!hVw`;RGF*@5;>;%?qYxS?s0TZPYi@Vhf4|(`9=Wx?06CQ_F9yL z*>Sl0>9KWSJbzC)>sFB*Ig_kTT(4t~?a1GTrZO*m?0(-+sYRNBk@-e`5z6GT zUeJ7aTTR~*21hD-maJ*r7CuyNP#Pr}I4<~4haWM5Uye>h(+`kkRv+EzC#=X>q`x0W z_j^gQ6n_@<&YElv$g4T@Ut)R_cdjU1al39>RJ(9RBK%W6n@^_rp*(%>1t2x=5jcO+ z{CBvpoDKeZr2-3nVB9~OIMzvkjc~X|?8H^?p)BkoKl{I&xMdWmW5i%c7a6jV&!~5M z4M)R9MyQ7kRzEp%Wxt99r6#-a+?{d9PxZ}<5^)4UqH$_n6ms@jdt8UHyEguM_1^Ml zQJbg>KyFTFi~^%pXP-;FK!1jXDW9We310609(*kWK^&btUL{s(k5B+xN`@k%)_OwV)hv3PW-B{2d5P>dN6-5>J#btk-uuY zlYO#^Uz-5DsSr{C-##Kr@Ar_$E&!_Edo;yrv?HnXM@a>YB4u9or1-J{nI>tI@WIK9 zszZNd#ri@oztl!tQPYD}T)QGz>|A+ouRg%b(TVz7q#C=rOUt((~OFsGs z*dWEUdW@I<^iL;%8ne?CHFz!n-OM%?_sD_cS3sh$o&8}RxxK&;iCZFGZI=;_71@f8 zn+LVsGnapM{P~YWHvOg1+7+KbxM&J(d~eChIPC))HsR^;Mt|7K+GX$FfvmE256+KX z40JuVoL05M#j5rV2Vw9klq}2Kk9I@k+ncSG{PexYzhtRnKtYF5S_<@+lHMMd1S&rfHc98r2b{^D=XTD#8uvGP^mgp8-$ z_cP2NW0MKKE{8td%<<1YdTv(O5P+>%to@9qP`yK4YihZn4`r-ZoA(u^;j#>VMd;le zBUEEi6iLeGQd6V3qd9+%$eEPKcggsjyr)JqDJxWYQNOR5$65x zi!wGbXyM(B5nSY-GIncf8;jt)f=c-Z9k{1p4R^F`mgVI1qQlk+VRCQ#2q+x9uZpvP zz21U4dDEvYRHko&Z!bASnN%NN`X}7*>FhNlU8ouA%Sv(RilSDS(^V7=cTmcM3cpsX ze>{gPNKVi0j+(u}shlWP#n>LUOzW_EMjcn4uD6viu2&o0ok*ZEKh5&tARInTBu8~s zo;X9c%ph}8v;^VwFko|~rd8D|GpcCpK7uo+bi&4g4o079JKXu9bSsndLw4D(81n;^ zh@r?HFFw1~4XL^UW2pVRE$w~gPgmjP=#&~7h2($1h5tRcoszrC)Os57eP%UmIMbC+ z3@m3XIX%62|8HwZ=*YjSjVzp5n)k7@p;4fHH=66MRqGyi;eG|L?=A?mn0EH8?=$SY zWAgpm9B>bb3N0l$ep9ZZo!IjjMdMv7`LiJ=W+T<;?Oem31l$_wQI4xZj$L@TD4XTz zR$SUYUM--7^0j(Hk))fs&8;B%k$dF+-;OLteL)pu0~RgS3qa%;-g5;4|e%U+*Rco3hn49IU@YB@uVI;n0{WZ?8(J>CK(O%Y>IX zntW#PaO%|0Oz{%P0|j3E<(&_a(fJ6_wY@XQ z`|q%4;Wg?`r_LVo?!Y@&3OGKTEK*JZY#@7>(!Zt_=~i%g}cpX?4Gwf84BsvG;AN8hkY%CT8&d5N^PX- zPgR!`wlY`rv=rKBER9%!&g2!NvF8ZY$>_EkZ40tNrcIOrCHhOl3eSvhIr}EDu1`I+ zNOoOE(&zW`(ZaMfTB#?T5gUmdd4GHF=43o>P6e2qy7$+2Ze+K19M!u3!<1yvr;9YLVJounYkaq# z!se!lt(qdg3-DNA*XC8ZNC0HkqqDX+tMTBiqi^-^^B3IVseg=&s-WF1F-OYyfn^3G zE8=xwZc(iM^jV-N)ilSg@zRBoN`3n4T+Dk>1 zxgdK^Df<1esK{!(eS?$VL0>5iS@<3s|6^q{cVS^@%$~mADm-MSe;F<~SfyhhMpKl~h$=T4OAIW^2Sh1#$ zj$%P}Jm`5~1-8NduECG{8>R>}4c4)2#5>?Cz5@ zHy7RQ*TQV9Io#2LQIG|?qpeur+MYpcn|t&n;Nj2S_I7Y!I>fm(rX+PO>=c-W1S z|7s(a%-pnmit=za6aqb$Cw|a@Hlv<#*3%)r5ReoM_fq?P(l`e3;wVBuE!)`?1|1`EIq$ocht0>m)CDhn_fVvYy`XtK%zfBf& zH#FT#Eo_`UM$Q?d*HYh%G~QIkQ_(z*sUWa3vFBn2oO5s!1f{M6Z4LrJbZhNHgf+)T zuWDmXoD}Z{;mEd0o4Lrq?vZuf`myuV?LRs>a3RU~I%9(P@HI2|Agr^1(v&%2CrQ7& z8*4RvE>A0dk{o&W9ZKhMOK~7Lx;)FgL&f*k(f8YCXv2EOW#I_;-l(Or!%%pbN*Jea zJ=4QiRGK?bEP41BUR9V|0el&yEq09UeD^6!Ca)Xc0JfUcr4*0k;@Usx4iDPwPXCxR zeXFw-q0I1DsB8`$utADtIE0$pShrv$?QFuga;IY2P&NT}DUoflVk5q!N4Ab|$;{ea zA?+WqA8e&_c%Eb(`>YMHb=~PAurfrX4tu=~W)9NP1nc8i^_xNvXw?>{yK}$K+i6cc z-h6rs6$r8YN)-hn_6W${xXQV`XtQBDy-rX$gjAVV=MwuXQY&@!llgkRhl%*|@e6>| zrwc%ds*&b#Z@KZ-PHaGYAyq4Mz@RQ(~n`Q zL+R^@k*j^_MM@Z!?FKp5YxInTVCxG&AqvRA>Fqn&(Koz}dN?5{A3_I4i{kUw9_Z zvl}HZ)ajs=eq$QaRF>HCd&mdi2$K^Y4Yz$@&@IZ&!vt5;t z=eF0uj-Ds()~nH1{C=U#I%aqwF^*KpUUr>pS$l6K*MYf>KLob27MQ(IG*6&0+y0GnG*Kk_{Hh6*pt2>$vb3d*|FFLVWfBF?SUoKaxd>UtEd$h$(ZTbXsp19UeGoyRi`3*QxfrC=ZMD zD$lEODG$>o$Om3Rp!&R!`#Z4{G z(^@W>G2Ai{$qP95YaJnkusi(`FPyDy=(xq#6bQYM&qR$8mG&ZJj$hr*ELcdu&tKqu z|MO(#-L}(n)k3e5RJuG}H>DECJ3>l-tHwv7@AkQ|o;HhmtVU~>cz=&k5hRc5Y8>6H zA&T()-sW9%_?95&#J7`kk8(qo7@TJ%F*_xqqvBIp~)cB)!J z`fL_4jmfcU+$YiCtBF#H%voUO_(xv1Ex}Tms<*>sfW_b zyqg*Okn!A9U@BZ;Ehn@=+k_(dL&eT`>W9osNm27t0FdCRPtlrIw}tz9fxYg4_{SPvD<16{*LO zwTqtmI^hB)YCYek!~0weQ#&m%;VR>vQ1lFxPN|@~7Ho1IOHr3GFr!PYO;WH;%=pClF8lX2fg|ueGg>Yd%W7z2bAoxtC&t(L-}(Jb-QA3D2RImmS6y1Un+7dNgA@L~8@deQJ3i zds2ZjOZjw{5rHA7K!$GohS8KtY*w#XXQwXpRX&oIT&iTpiAR~A!E@}lI9_|I-y}n{ zXv$RZK1%4igdq7iR`z{9FP#k)_qx%2o1JDudGe;YSFF!iE5o%CAI`V{{5 zOn##vjXY7Aosmir!JJ<+0xYp~`L-4OS0L3hE@CG(D)9MaQzlaBpqruTTCLggC6pdx zO_6lB-e|BX=wr-T_fNyM=D*eQyT$YG^k}5fD(?1Y=x;=r7+mkt!MeHa@j6-Sxcka} zKi+$Sy^x!zlp(g8HZ1I}RvW}>}ciakAkQlC|K&{wnbC9G0QgXcIu zxAzDo*Qv%6vG~+xMfT`J?wmKg&BpfFrNO+)2@$gsSBO5|;u?%vA908Jdz11Y$&=CV zY1A=Z!)y-taXQYo6_`k7b^6r?Y$DJ39L<9L&2=g1E{r$rKLB0V3Uf&R!ulojt8x9o zqY~>ErDBWmI#WpP^e{);HqARM;9%c7q3B3o+#yE`8Vjocn;SnZsGrtjW8kxdn;~bR z#0jWPT%imG%P;IGOpu|A81i)pTVA1@haZrV0{Dsp?k7!dHhfhQmX(9XRn-Cy^jf}# zDGIv(ZJDenQOz-eypX)-WoBtbIv8lz)Ha?mH4c|q>@$?Bny6iCnQ?DO?Cd&lZsVR9lP-Geyq#tZb6IX2ueC8H+&|M|P zsO*cT5+3U=oB^g_Hr1kUs#WjTxZhpF6=^uTE4k?U+0<9gPbIM~=zbh(y6#ZgryBhC zr8twr@sdxYJ$@t3DCyZrXy3r}i;05uOESYxy#B4Q-`l{z$f%oBY9a2p4g%c}@iK#E z{wOo()n(?Z`^xlD1lJ&mE&`!?=a~^6PmMW}7tvP>kFHy-?~zcj{RmmjIUn)hAwIeQ zxXNS(N4HaABSQydW*AJ__ffiD?g3ga_{JFBRU`crOV!sUtynP|1*sL@opC*Ef}FiIc9}|H;HF@A#7O4*wBzvuN2aoeGBV(TfmVv$WW+e&ZwDbI*>df zpY!*Dg1dwgMay7jYqj_b*@8stOizS|)zmYs*Bm}{ctKoCH@%Pa#|@MaNbTsw4RxMw z?MRmFy<@S5Q(RSln`0^=Rdw1nm5{O_C6*_edsj7&zIZF6X!mGm#&Ye_0|NxvBqFr; zwGIvBVtalrazdlhytpl&zR0ugFgx3Jf@a`ZYoB>hsg-q%`F+44Y+ib|o}RjjJQ971 zrYx~4a;zZbj>z1x@gDPSw$`)nY=BU>>a$08D8185A-(qGlP)tP$_3QHiLpVwqyqY& z*78^OU4g<5n@5WNWHAL|E=V-E{t8ycbD^cA#reAI_AD9n5w`8QT~ z{lMy_Q$Vk`;Nx)XTMj)>Es`cK02{-4K%4pb3>I>xZPB-x_I|E}qdk%^up1FFV3&7q#^AP&{ zht<{!oziTiM+wK7se@xdbyle>{7FS@iJ%~T#4jsccH|K$ZfwaD!b?grygqgMxh(Ls znc*INM6W`mf4*|C_C{RwWEt;f@E4XIW4(s4@YoS=&1Jj|L+swb1Ty+Pk2|r6dmy#< zcn90Io*(}3p~uEn0ywiOt*0qRz#POBTCU$ptB;R-YVdrHvtnx}Usw+GhNc>@yKMdJ zq_a=lxcN_Kz1uj5LGERd_-=EmY9a=KArma{Tc|^==;&{^?BL#djEj({x zR(6ZY$ZmPY&G_@y3Pp|uWsy@Gk1+j^-po?8#$SS{kX}sT`-F<8O3b`C8s5B53LUc5 z3x90wHD!_QqM(wetfm}hhusu);h{ZtDN=49lpU?ytceY7oXlQDWUIwn14LJYe`Z=8 zm!^QVa@{uTv~A!(4zT#VIaNg_&!)w{F)z{SrkkD>ra|k)?Mh{b7;ibx!U*do_V8C* z30^g3p?!JxZt@0NQlO*EwT&({3guUFq{X=9Iqw`_A)a))$dBD3<^7#9p594=n!oMA zr>Zyx#wqA^Ezim6b609I%+SB1%1`p8y-XnF6gRZlDbgD$h-ay1uWu= zxUNZ3>m_`PQi9C8LdUp0?>PB{bOXGKPTd>#qZC2;s=q8|@5(dDOhDt<3@oaGVKd1w zMZ0hH{k{E)%^NkNWR6|07Je_hw4ZL9LJ2!*(&6ttgyNDsa4i6Q)_Q4 z%_gx2eX@v;o^6u=nmKWyz(PEqibzO#xl7`q7)nv-+%BY#xb)~O@Ij`iOur`rHl(Qw zJKBni3|M{;iy19=x*=T7dlnHrSLoKdMdkFm@DW0j99E?6=)3;9HxgqQRnuEKPD8Kt zd8qFIL6M(Yrl*qt;U%zCIS^7YR^dgD-UPLBJUv}>&&kP_a)M1RD11!wCM8Vf;jSp28(!0vXIZ^5GWz+*=@mu$-o)Q;VV;YHH30V!Upn5x#vQ6r+DOETlVbk^5YFfD8)P-AOyCWnVg4L_}^STX)>}n-Nl1x-jq3bhG5{cfw)4ge zj3WO#VCQxBgFY|p^iwnvAgOmQGh)#HLF!<%d~Pc0KOzagVd* z^Tulf{XTqbZI{v7q?Ij@z_q0CXH~er*l z@BWZlw`9l3aeA6I0gQ4{yPok?U$T3u*uNqX_iI2J3klKC$z?EG31`N8d6EjVFxjB;6z-8(R?i=pV z+o2W=K?sec!8KP^txra#6AoveN}uv%Jal4Ph{lhOm|R=$k`9SD{2KlCAy#mCrS+)<^16p%>bk!$}_8%g4R&1j=4FfZTt%MDC;$FU9 z`EfWFpHQQ)#@q4uJ~ZDw<}y#en4Vbtf}OgpwKKxwCEP{`xH34n6(_u-wj#EY-@2@yw`XjK z${J~#)UN3T9+L^;@Lp2qD@i1NY>_RqeJwJg4N(aOX0zp*KK|j&?z5F^s8+nei3i9? z`5q2&-Vg6_8O2R={@!($O)so2`ba(f`gv~u1z`60yglfb^$%E;(0zn|1v1i^Z6-w{ z17_#wx}jusgo8}p7HNx?=UD+Td9I>rj*tq@KNH6d-c~F@=VMB+RABI}Uq*5*%Cx2rYc{VWxf3(<$ZYM%z%P8J_MczEmn(pDTqZav%53U_}hHV;amsEfk-(|c~M z(2vE##Wf|m_zzO4O4rtiJyjD8&TdA&Tbz|erDv+e^HDp0j-5?0XeEPN7Cw2Qy3;@5 z5nK5@1Qey(Mm8dIX&_3gzkQ)+7c#SlqsIDhM758SG(}ZPUodnzBie9 z-PeEX(fDFkLq<~ww>V}kBKq>I2$FJH%@(i^MRG>o(X)ETpq@70-f>#%`ROUILK2n< zbb>Q$R13jUB0`MEW}0A{2Ilao6mE+uCllTeUQVj*|1^8<|2^D_E3{xDF4H-U{SCC4 z0x0?56o^p<#bqc?WKn5EpRmrLfrjSpX`R2uV=Pn4vty5Cb~610H?#Vut#MjmG_pdu zRxZr?r?yG4w=yYBAB!Ca@C7t(@imE@3m8iTHSFPIjt7$L|DIG~DP_Atk@Aca`rc(t z_E)*B-ub_ESh1x)fxIPzkT>#Zh>!!6%48wWMtpgNdLu94D3t0qdH2cepab8bNwDud zGEb!6xjf+ao+im6*Z9rQZ`f#6M7_n#tMr?Uoqq0ojR&u@Fn-RX;7>lk0%JLH|5&LI zRDh4jBIb{IGI1x19+;lrx|AR`CL1Tj!PmNX#j``RP#m%dLE+1mT78JQ`v9!r)iS+S zCn90gh+iS(alX+*xD1(sGty4xQHv{fQtU6;%c*2|S{ zw#ga>Bib6YG(wGA`Y_M^?Lb@ZDwOSjT6)>|$wrFdIE5s^e!6J4tVE@Ls9=7u2chK-{QNRSu9>>SJ?2U%>wxNMmD&x-zr-n11W|vf65uMSc@Ot-A z2n_tlXZ>AdRWjSm5oEi}ZC$Nj*yo1HC{38vdlh-A2>cpSSN2OA1p z4FQh1qQkqsB-2zL*uDjTW?$cw$~v4fMLup!>lKq)#_Z=NhrPvvY;}5nbzP zer#*%JzY1BFDsN3O}U{n&&q2%dxNiqLrV3uH2xGc+ITK1rV7RDeOs9RmgCNs7DO_a zLqVhTr}mNy{iUi@zoa?^c{iktbM%^{GpZ5%F#QnIzufa> z*1;oIccGVy5K1f_y00bUH)0)B6|F7O?4sK12Mt-*RDPZOIeso_{c?1sDd+m}xcVJy z*6OJRUU8KKV|V|D_Vt3?lQG8Qw#6ehd zaGA`DK9Q4)*@_p_yPlyC?1z*R_>#)?ICxB=Q9ehQn@`a$MDnAACdgfs^C?=v;1Ld# z*Jaudy`+Hal!Is!36yV1GL;p7&LOOt^<_K5gl`3I!)wKzMVS(T!f4(QDF8)S{mQ0FY(MHQlf34{HsVa zOhMWRSX9c{%55YXPT#N>;ks>q0SKXVG9|96c_QjU-h(ew1b3R;MzTFqu#C*iS;~+X zLid~eioBT0*O)Rq&kyyBK8Kji8QRqacl9hPSN^;-{qILB;pQyc)#v<28X==kMi`D4 zDRb5d$_X9%#D~tGLGr zTxX79FOQFl|pozCR`qUX^k+2_;4(KuJ+DSO^ zJlV;uG=kdog!K6kC2)s*GN{@+N#?2ey7g$0&Y{d~r<@PR&Mt0nk+9FtyWJU%eT>9E z?954@nT%k43;ubOa{29W^LSMS&-6x8P`rgbseKrMflav$x_~prJ!+~9<07Y7Y<`@$ zKn-r`;X-j7_dT{EE^!1~=uQqC{a~vXWrix)vZ*%|#zgQzD25olcpJKQY_yb^KYh z+Rx(--#RHcWmn^I!?L^Q5usJ#nQ?DoY9{0@9z_Gz7v9D3@cBh{cov1s?7ST`$ncjJ z?tHe?U7?%#w!|cNeZO1n!KXKMsB~g%!^4WZ-nE-CGj6gP?>_@z#dnW}z=H;nGl2d2 z;KAAlOtY8%$W8u;vmII!7yX4VD}a`tfwP12Kc#FC+?*Y@Vh4EUl+O`cRG>m3b~+tT z0^X|^bJerrGdS{Z<#8Z+`S9sdctEyJabwmV*iYVSE0yuAODkW&1zz9|Hgt%HQO@a9 zqtt>WvCP;+1|tybJF!8N(9d44pmA-He;mqMj|QOw`zMQR*{Z;YKCAF+*+DTVR){i$ zlM5Zf@!0aG%IJPKMT3=pcd+A)6dXCve3=fW9ym_T8C55$tk30Y1om9pma#5rbo6dU zN?Qo|9v<~c;Ds$0rHhdjZR32kDG`4HTjWyXoAf^NNwl7Jj#zlrH2l%c9RI0cyvMhLzyo{Gey~w2#fMy*$op$m=3WnJI((e+uJ!m;9`(V| z)0-g8Z+T2IwuM8_{Bt^UAN;u-pj16KH;TU9^LHMy@T!fZ>kfDPL-jkXE2${5t$Dzw zoGAqhWP!mDP|n3j;>olQStC;tfw;ej(VIBD#4%*K4N_p`Y>yiO=Uv_3;xJhx3J!- z>A05L<0V@wjq&DIMT-xtX4=Agg zBbUnYnn>UhvF_MeH)PN=t8TNW=`?AIvnTXB(b|mC=?|YATItx&L`PTzxnI<*Rav=t zdN|y=Q@_psYeWX0o ze$}{Ijsp_$>!S$j%X73TBxq0QxLH#?qvsA2qLNMysZK%omIAiw3;3g>X^>jR9MN%w za_(lsle#Ut&#T$uhNbAQe|_7K2$i^MU9y-yIz>XQZW$W?;VUS4K(E02EObOYt1_*^ z*|B{3#@Q8?^5kT}|A(XVj%V|I|F+%IYD;SuEwyV?t7vQQ8WAg~)e;1?w~r1Zs9n1? zVgxB_lW0p6MTv+}qEgaOVsF0B{d@lBCGxuN`?}8ad>_YU0UM2Ts@n9FD>pBHPzK}4 zV}FgcjgV3X$ZI!?lMafx7BTwjSAm8vaIxbWcYahxW5~Xypp`&-EhQ2SKbN&q5wz0! zu+KbXK4?FP5UchJ@u}@^lWlho!NrHvU;bC#c=|GrM7Lnl=AGm6NQj{vHor^W8`WN8 zW_w#r(H8@QizZOn4kt?B(JQpgbxo-P^k@*NLT zaPLmNl|1JX+x8QrH_n3yTf257{+g$KV`XF)tCBRqSSLtoy-P!5Ilb`mA>G?8n~n$Yio{894LPcDkCQ z*8&sdzWc`oKJ}vV_oR0~=yp48n*ZqltCz(vi3eO`QkknVx%Fo!Wj(d8AmnAc(BoST zy;MdB70VjhXIuq2z&dS%5I|Gs{YmDT;V<2mR7LIl$k+}J{27U@GWyw2_lSS@cKq;t zACj%lX=zYX7Gdr8R4`u9`M4%SH|sQ%dWON#t5bj$(;5=pxVG>|BFbBWsOsvp3t;&L zlA9Kib0q$cjS+zdSmmls;Ptwjkc*yjZVH`y(_?#^Pb;V{dup46rg6Kki#I9ps?tJP zS;Gyl#Km#5I~h4z*H4GszUc|0vRMb;hRpT>yAKqJ(BT((81^l{ z@U}zwLSa2UWz6uBa96$c+=GYPW4i6G9GFI$4gAN2(X8|W-Oz);-zuKFE>6n0m@WPVaSBnbh;aCwAhKMD3umPE#=La=D-)?* z%^q`8L?HJecI=^AsTywXlMH8B#~%m33T1~BoBFeE+~BEN3R+G{YuPAdp2VAaL&nN{ zq3HXarq+r=l`;Cs`#vSUvkA3($=teA-fp|?apOFth<8>hA(1`3Itww7SWmLp+pd@` z@jb-!di)SV#WfcIVYR8E%ybTmduegNnB6ll!8V5%9XR=y(xo<%v-V<#dq8)MN8VUK z>pcS`ctv{*7iXHZ&_FvB^{uGxDkHisQ(wW+q>bWFRe8xyjRv5;qpEwIDJ8RtNtD3K8eVlKXDVScQDA)#Fcu*yCUCmhO=K|I4>WW&gRZjKePMDJ? zPI&Sj*fi(k!nxYFia8OC>fPDiC17K1b#nEeuNIEv6$tVSsW4bi2rhRr5M)%Kd!5qZS6}od0R*g)= z@)aKr6R`A-rRRvX>>su`I{ ztZuujx^dQ%$9P5+m94vat(L9wT5MdKo>z>*FQJ4n7>?y#Sy2I>jyzs`l7nd9QUx#2 zOZpda32PHfiP6~>GC}GVq0kZ3MjfFZ1d4m$uLp-i_o%T#A`XX})A>WD+ZVc#q{kI} zAfQqp7%=>&Ol|V++OTYc=)J=A(A%LujBY*-JAS>$h*#6Mbb2 z8u^Gsg=%i6;x^&ojiwT7hwuq;UPA|Bsxk1mFF?z+42Hzu=vNgujFPC0bs*F z=I+MQ!=itktL{Yxi5eAbN~rUls}hNde32%}&Q6|!R^lh0az_^JN(_pxVn-;9$VFJi zWIkd9g?Qqv*5cozO;r1r``x5J>1X97jCLb~jr(W_2ig9vV30P)fV)QdN1XoX1qPva zBc=&<0{qGDrKf48jzVXI!@fh~yHCQNo^RV5TS@EBLt}#qjo-6Yb)5%@P35dA`lncl z!qr(;f|ZN*dSPFRWHRBeGVl1t_QaSK43Ex&2eC|in(I76wmR2*g@ECMe8}^4 z^h-T##Ybl+ChK=vg_n(wWcSI6xQ*t_^T2FAcYL6#PZQiDs^VI?=mLRAlWJiB()-xL zbNBLvy*H_i?z6t;9*8P&^I%AM7RAjh>lWhVYq#s~CEH4~x+7KKdlcoNfK*NOq8%I= z2p{yman7_;cr%mt-C@12*uSOUK-GK|7=db4JNXt{vXK<;t>v51&wN3cM4x$ZKA_UV z|2$4O2G?qp9l|}b?D}o{DCm#^gG#IPIWqT167O@Fg)tYXv4SmcHB{Fu6+@aVIl zdPZl&UuUSugu^v?57Fi8*jr2lr!rOg3wa}Ux3t4AHW=RTD6Vj}P(h;dg!t&I)>$Vy zQ_eY+t{sxD14x$7z zB0nrF>94XsnQJA{>G{_kW~ui;-@&Bt%HfyTmQEIZGnqA?-OZo}5l>emCWtLL?s%?W z%%7sR&rV(W4Lj+_-@@E^^zL$I9rnC+_qNd9PGHOzqZDOSiA~37n_K1)BliX#{;ESC z52H=-bnF{5({z~>5nfX2%88dAq^G^d!DDZLveZ++{y-BP77etC5{z4I*1wU&_bLmF z-yI~3c%hZ!5c29(+^GkuefqCarC3H!ed=oItflRtn)&U@>dzs2*2soW+_UGYwxE$`#hf44MVEt&>3~zj<$YOVlS@ zN40HyTRqIZ+MgX&?for&qJo-yH@AuR-{MXL>c z&7Azgp8bm2Qp`zgqigOo{M6fF`wi{m=M?2lum3#FRpn9^y1*fL4m$Q@%CK#eRdfR; z=dkV1ApMz}BMSP!_D_8T34?V<)A3tLuaE^Ab1C#S%N^%|Pc#R*8vjQ#e(<9Tl2cO5 z+Lz3OuCKb4(VW^g8k=8mBhjTGd<0^%-nzmrD+Sqar+c+RG0ovrNUaPXndemCJT|WT zYGG4FNOD{gImA*a|WTk15$Y+S(x z0v^_!$VWNn1L#FX(Vr+BJ!bi&w2STar&QeJ0|Bk#RoIjp?&%Z^wAUlD7GjpgS!5Q9 zof$+}@*lP&(ib4t)>`z`CJV3zpq{p8G|$DckNsE<0MCn{6|SZlV=>Wl>7}}HlCQ|f z=`#+-^zOi+|6biW)!h!;-_BcWJZVGd-IYmA1$(_*pa49;hdu^Q|LhNDM_(_*-&xm36hF4GAgL~3>8jrc3DVE6k1Mi(^Les055{X4>?MY0t)O{H%ic-L8 z)dPbIliXXEHvapiKD!ZnY(#N>ljdy{x_ee%lgudR=)8wZ_!uE&%cLo0AEfdXdVM{! zQW|s8H~+kfd!IeUKBkmReGgYJVGTOe(J-0FugT_bYVlM)BbCk$yId3&$~xBV#Q8F- z3K0>#HX1-QGTN;{UkWGto@()!y|QjDf$fl)bTj8U_AWY`8YUM7sB*AL;1&R|OVeb-H>B%=yQxM+yjGeT2U9CD;xL1y z_7xi4BUTUv>h`*H^23P77{WcDRio^MVSw7|SC6PD1F(vZOlJCB|9w$A!pe!reMFyD ztQX{d3_@d_SF;uemU#8Q?izKaPC@L6JcdG?!!~}ZM;GBg{$AwV#2of@RX$3igb$lp zk~%Y`_Gb2oQQMhTnNx>zOSf(>9MvymRBu+Mr+EKJl$6B(yuE_6>~17FF?XPs3x8|4 zcl}mxLkA_YVV(*oldqN5e)vl||D;TrX@(~xM``Jt{kF=PQwJFSr>&l0-#$%{=sfZ5 zg+tdWsxk16{EqM5hcIeFtV@wfu3Z$yd1mp?H-prTw<`WjwV?OytyD6*d_I!9S#yCp zp8M4@$5UG5Wuult?u(kzg~L92=Z)w$AWoZxV>0LcV2u!+u&gZecj@WcXht3zOZBd9 zTdzkC53uFKVz#Y*&k%YqLgL@D6HZ;@yLsEt5kgau4#uF zhoKfo#Rh7&M)I%6jUC-eP#>0F+IXGoLb~PN$h){zs}Jd4#Gq-~UAS`q4FW{c4yr8p zk~`65$^g1+$3A7)-2AU`F|H}!!gOYM-&5eFN?os;&v2h%RuK)C+w>)>p{R2bkihVMQ=@hCj6iq$)DQ%(`Wy5`s zr~H~x*JO&Xyy-mgG?Cm*mGx#LDe106>b_7R(`$k{W~lD-Z~@laq1Z9^inmwV7O%sZ zvmejDBlAFXJ%b}iXx@L_WbThL5t|1<*HJ<*m4kchDCn2_mzL612i~yiGQ^b_rFM+nX(xRHtd{oaZthgg=w#1Jad>{_qol@WsP&<3Q4LD;XB4!t@%ym+PkQ17m)t+x#ND;Wzg`qXzrgb zZx7g4k169@8#XZ8@w~CB*1%a+ko!C3qX8JP!^)DgNPB)4UmZfaf_D?8MsCBwI}6uE z)@iP26{EPn2alYjV$`Hj7Hy{j@(4LG9*x!ddM3*=iI3v-&Tcd3yOJFGV}Twu3m{If z;OlYR9K}7`_JJ-IjW6JljK#A5qk$}XnCC=nByd7g6|#kArD`y_8~Im&@k7C74lE;f zsmG6`1lfFS5yolhE*h9qEo|k?N8TF?NvO`%K^_26}>rBm1ze)eo5hNZ-b6m&Usj5{ijZ>G>|v*GfF90LHrGTdy@}Y1+$IOmeUE{Txg$ zM*7FFvhGQR!Sy3-;NHnIoJ_4)H(*_o+rP(F?ER(|SID((*Le46|`P}roP$*6W8sy~CrqavHXuw%0L_iOnv z>BQ|qc;vZVKPAJqpIcgoGG41hvhWWN;X zKSw_ETESCJT4e)Xtm&Hk=vU9KN%U0Z(NixYaD7fYCM&C7|7Mcokx$;Zc&TadJ2zAr z24~2^TRM}lmTqGPW_ruQZ|#2;u8yyG*kvj0hVyH}OmKTAo_|j;X#$zHSHmXn$9h|D z#OxLcBNT)!$^=b??t`1gwn7>S@r|`j^>!tiI_z_l&1d&A+1qW<0Z28H&60NBlbGTP zjuL&Tm}XekIPg1&6uCQ+v%DJ_W}gFx;P(csZ9)7y#jclh3+yx`TY*tYSN_ym+h~3l z5S;lJv72^!lF0y#8#|^mWNAI9IIE|7BjtCr3wTnZZOfIUz0oRfC8qE_yRRW1>zVDJ zwmT>WvL|0nj$40SU$5jhEmkXJnd1RBKFF0cHP{xJ z#A^5(aE6jQfpgV-9pky2vaC2=36Mldz36^1L@rvMQ>{!J@@LYb$TVCxrzGDwo)J% z$C>9lN|O|su(b#*VFHoP-)89a?U-eb-S^yuD4$M(HuT#oRVW8>#i}!+t1kuKyS?KZ zQvdn^Bb1UTYHjNX0_U?l-stM{z9O9w+_#J>eQ8=bSSa(o_;%<;U~Z+p=-WbI-?}O70L*_%8}shl)dH_Rr;W2OQH|GXO!T1TRd8MH#>?k0wf zl70btEPksQM^J)(kWfE^WytdB`3}z$Fo&S1Wi~Cvsy|5oTTLDL%=K1SRH&i}$K*DV zMnunVx_fEYu@4p!!ngG8yJ}LLkpnqgeEY_UtHdw;Q(Kq93|@t`Nm-ooltES6!0PyR z!n>4LuLOSkGj=Ve&w5LTIq`(_ntVO#1H1SPvD|!n`Wu>(g``V4C?nDHGMAsq=p{ zDL;xrGNp2dO#Ht^aMR6D?V7V<5ou z$8Wjjp=Y9#p~?YTSQ;!$s-1cGN4-J69eu>k>`{c&{WiQD;-ek8o3N4hrFtVl1-CRB zC{O_UXt;gi71@AuF-@wsQ6I+N+L)uOk82Fz{1d z9*JNK!fhSSI#OL*cXRL>i=5ip$=av$+v&@l7})U8Ea$pMR6e8WFLb^EmTG3``(1w>X>{ua_*6<68~hu1`S~ zU(ajNt@%J6V}uIqfuor|Z|&NRl!XM&eTpE_(S}a^w+Jn2&M2K>+&bt(jjBnO{2ew# zKU|hIF!j{!RPAB0x;e+V^NfRE8BVg&OG~qCVSRYZRU}y)zliRz#D(>AL-$7|aJN{Y z)OZOT@8rv!C4H+U@}*LkKxOdkZoK1|ru4No=eyHy1(g$~z9$iVSu(d%uVmQhcg!y~ zpEV!qDfdlFI`mUg`>6Cvw|7b0lSZ?54qgE#zj+oUrp}K0BOkx1O z7WnrlfTokyac5dnAu{{KBBWEFeV?oRAluI4|taQ9Vu zt%QJ2mmh0j?tnwGuTT4_E3}-=EJVuBc;AKTCimV||5WDNRFYtS+v=vC#LP0rcl>vY zh+M8NkNw&7El`b8NzdwU=Z}IWQ#r}3TwjWlX$N|#>iPyIJer14kO+(*x89nKrqMv; zf6lXIcub3ZEtWxNV*lPiZayytvpXI=g1>G7kp=M^#Keu6T&ksH$v@c9{3Qlfv9?R79p!J*2OQ4;KUzpsju@!_FHI>gc}=JxE= zkH737n7;<~a@Lv1JvQ04EwOUlYb^doL^-+=9kxv`e2#uRi^Dc~|EpG+-Co+k=lZL7 zuCNP*x=bq}ZMCXq*?j}Dc;fN<#03m&mzq#}sTQwQ@udOQ_R<|ETKD+Z?;#mm8{|9m zY*plnv%!D@u=tR6Cn z%dhwdPYq}M)!Dms*zfQ0MC$n^HG>5p#Ly0wwx!2uoMDv1Z|G5pcAP3Cr?G{v|$J@E6)by?yFLD zAigbUh|KV8Sp0sVG1ylaJj(syr{+$`4Uh`t6O;4Lw)8Roz?$?5luD%HwZ>wU`#6@4 z7u-Gu()m^|3#}k2uNh13C570@UV>jORB0N_wOQN?jE7uOskq8WhBxf|IU~#~%UYRU zH}hdAVB^06KF`3>EBXJLY%$4g1y(#q!7*0POe1~f%=LM@Z$_I;O0Oqp(UpyaMxddv z!{vvHJuVbD-QqDeMGRY5)uFBsS zJm1@X4SbVm`Fvx|(IvcnHJ0vk@jCemO?jEN>Q9k2*~L#AfCV8bGmBkP51*%W@s{$& z{2Mb&KI%y zaon+8KOAwzl7C3W8LAjN2Ot5+^85BmQS~4ECNSJQgP5*gkLXgtJSN*>r@Zx7yH4H* z779O^5qmC!q;tCD??i*1X$3`U$^UW|9BDlNltTYpw1^bFbeW$T-j_3ZBc-v1n!ss- z<5+m{z4Exv>K;SZ@VwOH`M5@!wnT$Co{*@nk`8zzTlWT#p2M2jHJKX}j|n+^KUYqu zrt87)+xJn6RndaQew(ZuXXgRJ)phgk+g0D~CWkG}rLdf@wG`C;EeU^)$}Q^94?JM6 z>~=T_9SaH8o7*m={H?~oxG!}saNK?^{LSQ`k7EK0I#Wq#6q=~+Sn!JSp^kyNRC+y) zKo-#qJkn_LxXi60(?^Jl#UPss2Pt~%e3xpj@^^?w^rUvRl%qPbGJb*=-YPzo2-y{a zfMsQUFCz_NRSFN~MG0njj`QZY9g8|c$F48B^l=udH$pTCgYc?apTelXOn%7Z%SJg` z>S2J2YV7UW9B`*#$TKOiAaZ`yj{vF)(}zt|dojHwT`jfV!-35>oT%->1D}eNgqW{` z$n=#$!;(1v%AYQH5}F-eZKVGK=FIo1o{m-}A!X1D3@z$fpNb<)duvbCbq*^x-BGWe6t{cwqU}tzr>^pu&XH!J?NG zo=4YVL3{I=f&7a{vM}wDQNy%_C~F8B@b`G>Fp;F9ss&B;A@cc8_hKzW{rBUo?>@b* zIwgEBb$YGd0(I)XW`M9x;NgQ59}#?s)#8yJj?!W3o?xb3J>aj z^B7C9nf$qJWKs^6YspaSyjm$x)tuu$tnJcvNtJD1^J&iefza0zg)}!&pe`!>*;-_Y zR^sLx0widf*Y6`;k4Sj3SSu@Q z@i~fWZ!CY$1mW^l3gLh$BZv=Kb`|+;ipsm+TU%@G_2kyu7e6fi8xD96eC`PwfK;~5 zUM3XfJZfL)LI=qxE0ix3|DotM90X<5eAO+ltT?tLk!jvto2I5r2d7Rj_Z#Qmtc!hb zg7-3Lu-8S#wNneirmz(PK1YB;j+PTJ{@$@&+1Sqb^q)ifulf<0&rffb6|)*^q)K?N zroC}651G>*N4P@WAx&ECP8{)ArxGLlckO7IK4(ayrsh+t&kN6PvHF=U(lhI;zpJQT z>Pi0(6egH0!OuJ?47tFdpL})DFCrb2X@ch<8bmdDw;<@ZLNN*Uw3M8)f)e_Mk}Zz> znqn^f_=_1aQ*(iabA=}n){f4HDKh^oqU;KCIJdWw1(9t6T?W zb{ohL%+s8W;`x6SG?xQKFI&fr>^DGz;@x)AAjaDTI~^~|}8sSy=Q!A&3|0dF;J@|f3gM@q@B4ptZ? z;gZt(e$Nn>=mZn909D=3%Fu=S%Rb_XakX$Lly772%Sv3EpxM$3XJf+HZI1f4Mkt)* z!9tlyAF=j^|Gh5IUlGzC@k}kR&`o{y?6)BfIjY3}FA4Sig7q$boEOmNf>seCs`Y*I^PE{Tn zN!DB)0`?8wK4U>)z<601(-!JDyu6TuXIxSz(?vEGHT6_*8hRQFDAc{^eM_XB38S3& ztY3nCMxlj5GVZ=B_V4!pbSXnyO=2+pcHJIlkEcksU*JqV#&49AdvC)bc%6LT>lV3IY>Niqz zrtvw)3YiYHW8zPUl-{^K;@khx`~k+)RY#wImty1n$mMOJV?ni~Nh<7N5+X)&o2TMZ-{d@wk2;RT{=RBXd(TG5$%E=vVrwx8ocSho3y4Uwc zLySFyMJVYRz~>{=pwqHL6g=nyzQN_oe7C*m)u=F(_ zqfrWtoe?zIF0_Bx6aD-AAzwtFb>7zlm*^=mioSvvvyqv6iM0iG1cg&%s&sPKPPU7K zU&6!{UqNq};|p_}KoH8t-d9P(cPs&-pRU#Bz3%DZ=D>rs0<-ZZBKaZx$rGla%t|wr z1WBulaB70nySYr|@pkqQc1^a}szr-h*{5(%Nul8WjRFn85w6g52u`8aBhAzsT8X0k znoshehQI4bacy*qz4dO}IlXE+*6I)+hp@u+=KHhIo!RHwYHuJ$&#|A_E$jx3zN*q_ zZJgh>d%cd~YT+@A5g+X6&7j6h_s=#y{B7*wYk5bSFSdho#0f1Y5xh5u*z6^ckL?&& z(~<^W;6qPVKLB};lWe!QZSonbu-Cn=H_9xoHjXJ57>9z626z7Do!UOl790WQwe9e0 znVp%GZeB_nkpM@OR`wc|CCvpbq8(0L-^JKvW?yz5%vN4g3MNLb)e+|D0Kav@`d-uC ziYP-i}h^FkrBI0;-BCzf&1==kgdS9G` zk!7t)^KNM>y^d2I<`8(_v<}`O9{JtYgVjTLaq^1dvRL1~maPVA}M>wi? z$9MEmPOp2VyYf%y;g9-1`hR*wxaLVb?0**)@cYaO0vWa1`p%W^K$GO=9ppDDpo3a< zE?@f-%Sd-&-G2BZO1}toskqZ;Jhg9~0!W&R)m{2CfBv#IeTt9S&50opguX#cPM#aV z{coo7Tns}Zuh4klowS52}qk*92i}!0(GCbv(OgTi4tx@jAWq+(b60`G3!tTO3T;@Wa zH_gRpL1uBkpbO&Mvz=ggpjWrCKV%C5q4&TC!}TWjqhF@ovsc>gxtx}Cu=xx$&^5}h zSP*0C?Tg^&ck93Mia*K@L@kn9CMZn#ib?l=I z{sWJIizAfH8xvU>+PNYeRzl!|NVFgRnHdC{I*^QWhhjg`>JLVHZh!S0iklfVu)QPG z=K4HA{N!k`Ds5j+1J(kslut51q@8uro+}8IL6*E~*!9msv3GzoYji4ka3k+~{BWs7 zF>8oT%F=>?eSA;%70lZkm(hQ6%Zx8<8G#4>Lr-9wYMMn3W%<<0xcM;qxCg^TKgB0o z_s;;HR)_akvqhY8heWZrhK2JQ!;LJF$6vsYY~i4HK?X>Z0$oJbQGk+7=qpt7YWPN~ zNVX(la{bbO9ew4vfmxE|r0T>(@b1u;vF6Kr|2^ngq(QHQMIVls*8JYh+E>Ua>7F27 z3rq0nAQpQ&G!(DH_2+Vj&op|Jan<2$XtM|fl_!7j4bZlSJ3AX>8Z*bZXa|#PrTFM2 zOf;(Zpf5}Tm8e6cWFwQ-hkgxPyI7XcwcCIxSlYAyBiM+d9bc}&oC8IK-SFTuSALx@ zdP`4k0~a9FZJH4-`O?>cTq8!FPo8=A{nC8kzrwAH%qe7jizm13%KT@La-w#>ynNFB zRf_wj#Itpv-ZXi9ba>KAlHjNY&$YRVuTznIo%x?5CdTxM8>y7)%E)|y zJX2^523L68x3G9dP~|L3EUYmuoUo+4l} z%QVB!lCx<|tLmcN*pLFp`IFVM5M8rdFJ!|nStLfg<_=;=z|IfC|el=(DR8t&fhGJyFRB?z0{x_o~Z?ul82r z(D>08IzvN~vw>-bf5(`IWWy75do{&eKIb>()-JwKt*L+ zZ2BFNsE_d{R(WYappu?w!l)bE(=$UD%V4hKmPPD3ShTrU`k~>?;ogwM%+&}k#rZZm zmg$DwESwcOdIgO2`8JQ=2;1O9%PERNEWoP~Um6KX?4i?8e1<{IV51^S+ZCtiCDzJd zg0_Qe3sh>SGurbfHUzwN3P z5|QrSC_pc?yo7%rfPMVE5$tlPD7~{zZ^ejT&xTXf^aE4&Ce`oPk*F8PZ>P?T_RZ1j z@YR#Dx6D%928b)X4X8sWrt`|k&u_koKi+r8F)=#q8zv7vn0}7S^?moW6nJiXZ7&&K zt$NZNHb{U=(XmyrX@riBBVHajuCAZACrI=kUST@?;!RfS)r|v+hqs^CKWp$X-Q^x$ z{`uzfX&LvJ)xMVr#z*R4BS#0Z7)*G6xlRIlu6Hn;pl)p7Sv2f9)I{&7dO{L%c+SxP z*sr_1RgaJx?>*?kRG(m+3`dz9 zlZX8?itpGmsz*(Stmps6-k=C8dEEJTz8*LH^-`6Zc9NXUSyPt=Kz_@zTE^lLN`H?5 zNhhy|{jI_KcCY!6az%>!VeFW8kPrURS5ynozxn%n%Z)@KP zdG}ttXH8#A{T-kmU&;HSKa!I_h?1|VJr$!ty7NleR%uK1QtR1>d#!+W?yJ_dUJd`< zfZEJg`i8?8Dh1ce8}ZPVW-M?G|9N{bHlSlWGQu>TGS&O7yz}9b z_C;Bp9L3J})4Ov6bGFQ>n>mk^N~vd3D(1^xddJ|3KpBht1cmdcu2 z{!vAr{YJRBz*!a`P?FTihI@}c+b(=W~I`BIq z3f0DFB$)c$@@5%)O6Ox2*%62op<`#RmP)11@R9X(K4k4JOv@n;TLtzUq&NZ zbBaDlewx$f>qCWs(wbQzK7gIdIpTXA$LBcd&^}dF*qEk;F^$1M+(XYP(SM+}%~7bd zK}c9jw5#6F&-ovNV$RKYiPY2I^GtvHbZUiO&XV|8gQO9>fa50Dkq9Qx;VCahLhSGj zi0sjo4>G5NkjW=qzV_Jg%g z+zZ99Hp|8WJ4xt%-|}YjHRR;Sc{=@t=yfTA@8ih4zbm6Ulf^??#hx;Wb;0)RYs6Fw z0==e||6CQ6MNg&}gJ>OBb5Y-LTDmi=E=^7cYzjGrCRK-bUI48sQ$7JHN}<~zE(IX> z*md*}V`D&zCz~eO2c+^Q{WdCrNR(6=L(56+gbt)!2e%%teDfch8{Y3>Za|-?v zL)q!?(utRu{RozU82v=k2(K4Z05L%P3oTQ<)hb30IN0@WZ5Ql(#;Cfp?_WUaBG4uy zAs33qgh#!?F;d8{Z`ApN-Z1cWa{BC04ukX1^g=k$<8GgA_4 zc+$Tws+&9+{29f%%pu?8vm=ffVJ<-H5C1N>40%32_y6%!K1|E0w7rujtjrJ9%vfQC>D6mcz_siX9NM-E+Iw}W3ou!VVoU%lL0aK=cVO+26AURL&a#GeY_siA9k%E z+LeZFdlt|_5RcH1&R$=3*DUr?F!8C%fQLhH9?F+cD`A?^cK7n$ltnKF%~YCI9o#@L z_sxmBQC20S_=(8Z(|;~8xFFuExmfs>Mz2gMMnS^xUiSDZI<_D;vf;&osDH50nVQkh zeeims#BeO7IoB};Nw==<<+8eaGXv$T>1`Y&CX;DFp+EJ!JZyd7^yi9Y+qzKP(Y#~+ z9q(cINVO#|eVL4pWsb;%^dS-`)Sk1^SRL}=N<^5o3d9YH8sGdpKG*iW^s%_hokPEn z(0$~^Zn$rC%l>d-mCiELsHLdh{+F#SDyk0v5wISfYaBM;7gP$MjnAutGVX*mZu(U5 zxR}~2>skVra?!#o(?rYJF>OrGrT$+2%E8|RMy`+}YQ9$EI3Y5Pbz^ftHd>Tfla|ddFSF4jn|17S}lA$hJn__zP`(acluPpin{QZ9D^0zW=gf1}e zgFokaV#%)O8~gq%h==n_v_U(82L3wV>Rs5K|IzfWcG-yG0%rZ;*L}}NR(e`*tR<^f zQBGZTE}vwyQa1Qz0sV3C6c2CXP(<+DeUHM1gYAe&c$J7tNe6F^MSt1vePed#WOM|YGiSa!_()J;=qO=&r76W{@sIwu|WgwF<9-|$dnJEuHwe^rV4tMxqlml7w?kq z$|B=Pl>Dxj(T7{GG0uFWaa9f=+`T2V|FqP9oz0D6&=NPU7WzlLAxR1d>El9V*ZSt@P*1DQ8__uWM;eHwMilC|1i{~DQ6imh^^H;& zx;F9}+9}DQmen>uhamdDcCd>ohe#9YwSrI3R_H}saXW67IO(%aqc`xh$~Y zKQi}wqZ$T&rtISM-&|Dqq9F>#HBVd15sRPcYU=BZbv9e4p_<*Ee)u1Cb>m!4LOX0d zu>s8gYsv&AQ~ToLnD<}=fy(`KJk1nYI{`pMcM6AXhdiYq^F$dr=?HA0tWHP-Gstl_ z@iBHwpe#s+3WE`ZJ?W+|-aFvk#fRlm#hccYZqEdsaGw>+jef;G>^)HSfVl zlIXLZ4qmwDdgR0_lbk}D?%3PBCFvy3PvxtbZr{#n*B-Uy zbIE{LN!*d1hBLtV*0S+_>jq<<(Y{BBN=FLbQv{w`rGQ3G|nk7cZaDMIeyJ-qGBU{Ks9?(^K1o3 zRelWP`|-Xt7)GWCO&A}~5H||0RQ)_0I`46-HczBcC6UvExVoq=PB?-0oCMp`e_cSc z=W4jnMF(Sh98oFPGE1hemMm>7IvZ&5>?j}F$>k%{v2WO~bH@QwWWyZ1YTr~k>T|1nDc zS1Axn^c~^nM<4Nu{G0nc zZz57vPCQi=d&wsM5#-Ec%7O1#_4FC{;u+_P^Zaf-)3TY}dL&vQWJ4?vxWPEyi{5tU z;7i>fQc9nJOHODM1`FC)XSmALXRi2BWY5lE>ao7%+Eg87xfMg8FRahkJDPscU3v4r z1)g`E^l`qF_5aaS?`z{u7ON}P`L$40qU>+Q(=X)I`kNY~-GB71`E(pjJC`d)hMz1l zL$+k}CiJ~u>$BrU2v09sTc`zH8}s6O`}|OFmr8tn@YmthUtL-JN-x6-Mks@DMxx+8 z+#Mft`Vxb?YYD<^7qrvIRz`+Eah2{iM}6?zzdV+H{7s!A3LS$jl0SM_mqLx=Y%(nB zWG?|Yzs73hW3WSG`1IA@CoxjE$y%<&u@>j|+4%-GJ}1b*w|Bhn;@7^--3mQu|erU@FaLS)~QTXtGFvh)*AQBck;6jns6e@FCJW@ zFh_*7d8Qw1eiF7&M!!T=i$Ae?TZ-mbTQX0|5hYm(B_d} z6AAA|ub_zZvF|OWlPTXtVyA=DpPT|$3iW@V;@{WEiV4^kVK(#0wGn>2H#FZ0_NSlP zBUXFW=5w9(+{Fpnhz$-Axnkd6zCFFQWi z>xbf9$gWii_UFwkq=LlMfiZEHM2CTLz*>(+bw$>ytEV<7i(5u|l=msjdnQ8^zjn{| zgqo&%#Rrm3F^Y_`nqv9kEtz=kA%@Cb2*&sQuvVr_KEh$G!DaV!iQlqeFxIqu(h{bQ z-IKjeO#p-Vfi%M}9u8FYY1r2q|9^pH7T_j=(OkPD_3ZqUTjs5>f%k0R?T0@1;~mbx zqF(Q;wm&{ZHZ17{Q{%*ZUFB`^O$L?6vKcy()N$xzWWK47L8}xANOwyi7wYl=)Z=5#!vBC_Nm+3A7?R>5+YQBlAA3HU~#vBEjYVkE8RBXY+mE zzERq0OKGW5v_=)RsZFc3SIwA-8nwly5v%>Q)T~vtTeD`2T0!U#YHP#_q7BkSBQ!Sg zeeU1$PyX|I<#u1WuIoI{<2c^tcSt|@Vv?s(@>YJIb`pj^<%71@ZU{lD719wNJs`&< zMoN%wa*L>3xCKjW4<+Z<{pX5BSeMug)x_%&7w-E)Ardr{H6x}5b%Rnjr)!ouT2rFN ze<~S{estYb%AgZJglGTocF4I;7bjU+*^=fSEvFPUvCShX0I9Z(>Mx#p+(W3(5HHyN zAHxI_Z5WhRX>yzIV!a$Odc^F*jjNh0@pv^QRMZ3B8(nYHqZ^WHGB$?9Gz=6eZRo=R zVke%Fy*eFP!6NjfX#w1h&{aFp(^g!JX&@ZN7oUG{k_}<4XBxuwMH58sH$X-Ss7=|d zR?VY<#?JmPOlG4RgHRK_fw;HrV4w_gML=l z!BE(I{64(X4i$O{7{`e_Ocf6JC4CBNm^JkcUu&lkqW;T^nv5ApdWg^*=gRc}wuakM zWOm?H$Ey8*ju}iL*7!KtfK%4w5A(#K(xvu~z2^&{nLlaTG*=1?QJidoR>(8<5DYz} zk6l7E#{_NmZ)Q=9fgT^8*%h&wo16`^lQXe?&yA0-7M1)@53@Jm<3~Yji)DN?o%d~E zSff)#yOS0D?kqn&E)Blb)zm=AUWycU30w%;U%3RwdCRgKb(gmp061`I7Se1NEn#b` z6w1_Oad;AcrNhKF zK=`z$!q2fR*HS1%MOyV_@ss0PTnFn1z4xt`>a91UZy&~=RWL7OdET;5|;t*kw)0tRn5|;0>K1-(b-Wh8ABUB1-PQb!V=QZS*KVGY9CaZ!b!rF<^d-pf0_`-!g zh=EGy5{!jpXwS8cQ2?iVC$^cC&)wM$WwI{Q30))Z0;$KtIn%Q5vbWlu&SwE65`%iHPwgS7is_|Ahk1Ni`^(GLH=+HQiKoW4;K7C0$wtCA8a%TlqsFnI zfw=bnMX1Iq7@wbdMVKOcb>o310(8r^F=m~Agp1s zB}s9?664Umjby+&>gAKpNh2Q75=L&{R$d6-$(flrXYCT6RD3BI{4ObVd2OeX(9wJ_ zpr!ul4f&iG-)(FJLV4xfP{mC7<4#Jh;WEv_s!C&4;rUtAx1}71AL(boEmp?^3l(7D+Edo1TLw8*6{k|eFlVH zxb!Ek!nBvxDACx=BeX&f!(p!o=1Aj{0U)0{hrPjn^exadFlt=m4I+zLa6JGpOb*P% zDq3ZlHJQ5J?nltj_WylA+B~Y)?5{uG@VaAhhUatj)rFt4$gPOoWJ6Rt1Hi}7`5)mn zqi4Z)GfgnAQ~ko!0((l}@kW*4y#M-FWIjw2B`;QY^)u$VF)o~%HCnlB1WeZ~-oJ9{ zjXVL4H-plg`mNBg_-d{cmVl;swDlXlmNbIs{}|j!^w16SA2lcz$!t-I2+OUWqZR!< zo?Y?~>^m&>dz~#kK7I8ai#CMN!3g*Hp6B#(9yNbKgtKec2*Q zsHRM?e?oxGJ}LEEp^78JlxsgPhgtG9Q4vLl?C2vr{@_c@%}AyAbh1#^S!rA)-aye4 z77PAqbjbyrdi)F$P`bOyFZ~GjJaleSovHmSgamW6d1MOI)hx9*5!H`M59e-WDwby) z6+O@>6p~|<2Klbey1M)z-f}Qj!*(5qor*sQx);eI9;I8x%kc9~rD|3eYBi{Sa*{UT zliw|+m^YP#Q(7nE1DL5fL-wWfFJo_mh?0H`LvUab1Jx+Ux9pa_b5Zd&9rXwFE6g9a zHz3TOI|N;W&NL4op8mz->f^TFt_4oxST*+|A`yZ znP80GDRl3P(|V|1gGySSs(I99#=2kqO<){$=VZN0%f@x`j!0jIB)|{d3mbwr`k+*D zCXT3C@aF?_E(P~{!#n$)L81S)mp$wOn2zGRav7+B5@kVs?#i#GvSI|Z_?$`Q$y(q2 zTPw@)S{u<(Z3MyX_JpDohbZ)$5pzzIT!#Zj{lp#lS@laNlb_1Z<(CPLO`&?}+OFHz2ZCyq3Eoz4Khl>7 z7kYEkuLjl!GWR1xz;(!UL%Xy1vW^>KOq*Zc&elUvETe<|X>Y}ia({a8tBQVVct4zE z#~pD>-xg{rh|n7e(x%B+ISpFF!%ul{z@idEsrw4;$*TI*T)ZmYIR3xqN;J;qnRw;| zJM+`~DQOvRM1MRROVm@~S%$CLj-t+7_|?$MY)SiHq%-7shiX5bj|%jc;_#PJUh(cw zbTsz4^w(#gN;(@SJ9jTBeS2k8e*Hr)CMdi_3xNF?e)ii*euL%FR{Y58WmK0HS_gh*yGrp z&Oj09;jf6QHUdLrQ)ac5OgUxRA$R5L1abdsr@^*RUeMt2>ZYDQ+H~@1ysXAsEJqT9 z*E8JVw-Qfxs~?G~04Bq~y4>P^X><*m#VOISSe!@EFsGQkZI5rJ&vC?t30c%k>*p@$ zY5`Z`9^zE6huIKoaK*q$BjQ-8xZPqrdH~1eOis4?_GL&Y^eJV3%u8rm#fge9!zl?> z4|i07iXHWtt1AwA*&8$r0xF=p;XhRgc0>L|wRXvdXcYhW)y!W?5B5_of78^B5H5U0b=8P+Wu0Yfcw%`JlZ$Y?7qNq^5!X&X}QFCo0f0B`{8?jsjxa? zzzFhb_s4HJ`o{T1XCr^c95IWJb@)T2ng$rhacS9ZYyPiF)4dNDrm=&6ps^!91O*^J5b+xZ$BwXCzI6>0V4mKI+;h8O1>u~Il-+O`P6Gm**ljeakS zGohb$LZ-bBN03i)9d8P&cmK#8?o+tZvMMYrBrpGX>T`cJhzEvbn~PUBDfofuAxght zE#FFt-B!7HcC)cc+O-T(JR17umZcnYU${`7%R)%x@M(Mr;7k~|R zRXp?w9xhjiS)(QfO4;F#PJW*`$qj0b%h+j_BNS|X`rMSr3!*8D&Ni_n|HU2`hM{w5Yo5yr%}D$5C>${x$!rW4~M*jBJH`W%c?y1 zT3#5~0*=_Fas_f@xqbT4PQjerHb=?t|FTPQT2Eu{9d~itG=eu#e&i7GpIMrDu?Nl} zyV_72x^As7@KG;kIwNSo+IR5{bdoC=1@*v$pXlIQ-G1OJ%xNpQ_|U?y)IET^4^fNui_##dZTW@Dy2BrKcno*M9Ua{4=XJTVDM}(I!M)M$H_vXi)E}D( zrjf{we+W42v!E%SdfI!@EgU=QEVK}&^vRX16PykCJliy}m;FRhIC5x$_#^|xtw1<}nJV_rFwErI@iuOS}|S2&-bmL8{_~@mFrzH`@g| z4@~nAlpPu`*4MS3{vESl`qLJxlN6HZ#oE+%AxqtZ*uLtLFYXUG#-h~6BOdG?!vIbe znXE?FonV~%pbWt=HLD3mQL=455FMp~HQAvg(0v*Fx2Nk|Mj@-BdfSQHKi|tQ7O!-* zh#D*EMGET3voW~$zJ5kM1Q);CXwYrIh1&G z+Ity4+hz?bg4-pj$H1&mjrMy5H_xf`AXIWBqJXFyyPLl+H6vvP)K~KQ>_s#`XAM4u zS^{4Bhcn-$O2^L*Sw6%nW=!2Z3Z@iFSFQU`PMovh$ohJAX2{=_o1_M&IB%QRz41%2&1ykrL{4YE4Ti|JM2Ob^*RSIk@V@Eo!ugE|JMJ9E2UtHeIaREF3{a zL?n-digbLwam>rIIboK|f}DhQYC z)?0}QH(YW>h_51MsPvG-e+$q~wN5)zql1vht|K(&A9-T_oM#SaWq4r&Mj$sYv$NA~ z1z1sIuxNc0G2l_{y^2@S^k&&}Ez%v$XGPM3QRA2Ws-R(;1;}s^rh`d=G`|N~Y%{$G z%Z5E=3>UN$-kPHVR~{$&Kc>uZaD)XTe~NJp?3$xVY-nzk{XUznna=<1cRcLp9FZ-v zv`5}HQSc3Y0Uh(TWG4w6lQZrOX694Y;W+HyZVef69B&a<%>QX376AGg#{7?=G^|X< z&F>=L85js_bZW>RliAux$##4YDSunQdIc@^!t$wPIZgLYOZuq3-|~Aw_i%G!<&ST*paA!ngXVT<1H?3gZk~rRDRxDR5O+O`^k| zMW~&`9m+fE9<@aD?hsb|?9-lvfJV7xm1UzYf>KNj=d!4<%i~Y$XZIx`tlZFBAV61G z_^dtF@VXb}PdhnZ_z|_puv+Ig_*xF()~Nb%i9+#0^z*p)*&bx*OuNkU8|ryKX~#RK zv%Xgs9)81a&F(umG)i9VH{BhbcEDL3?8( zNZA($Xb{DyUEtRl+)Zf@HkEa)vOeu$WAxb}I`c^`{j3DQ1A*wL9<|{EdME7<)=2=2 zvdXafGX&FL%m&VHF(g9r_eN(5VV<5T_)Cpv1@Adk$Ucynyd4x$;XF8afLejHHhyUWQ zk5PB&(atFiX|tdLJ=DirBBNd>|AZFx z+50RR8xs!DcIqx=Bmg)!1hgKXO7-}w@b;;S;s#&4-oBmmDK^rcVYj`R2$&SWfSEG_ zRAcYh#wB5nlL;1v66X}}xi0S{`nDrF?6%6=--xGc>ZPcCeUj@YsW-KM7BFCZtC(hK zvF-Z?rG9+YeGl?)trSPtOaLN>O}vJo0wOAw-VO>uNKciZZh2`SH52}jGhOamTA#7} z=^c6YYQts$|9+JwP3Y)*MBsdBBP1|~b}bfK3YQ`$MyIPD$1;ct^g zgLwQ7Qud6Red<&aYhjs2tQl09Jc!wt7X~IkLk_3Tqy^$}Y!+s0r&NCG2jaOZkG9s5 zRxI}f3+!;`UE{(YEjdDkmx`7VVABa^%1@6z9NDXy*6VBD=(J1G7VG;=P9ou$V%t0- zFV(k+VOuKFpZ{Rgu>TY&%|3Y6#UXwx+LD$Xjwa#R!ruLncG>x_17D_g@TmXq=Ii%gw~zh@i?6l(_&mBPhA@-7vbD_y3qWeFW#Cq<%PlR1)fMfR=`pMK z3QQF{y!VQ5zZw8`B`jX(=O$cf;clKr zDX1-n)DPE+FYL-+y#6!YZ{qNZBkcM3lFvxxmYbaNI%k5w9&-XCNq$Qv=i|V{H1dp}0dT%_>ZBAOCZ!2-;CLnqo zYa7<%@IL&^X=AqY)j5tfuuNbQX&_ej*y|f{^584t6xjjy-VNUNoXNu%;fDX zwyCvLEz=c&tM-7A*nG=pN`6NXW?qdR+;@63nh|p_@B)*eMa#`ww_EORR56h&WEmq{ z`rt-!%vKk>0Is83FaUTW^{9890|HQ#gLr7?%|$o-!RG6 z(J}MX(<$e$m8rFZj6cOjROtIOjCWlrvG?o35-u7Q97dW<sE-E-oE{*mwSoA`ONiSPrn?mTI2jU5*l7EyAT+RokHs6_YZ(D z^QmiMBUY)`^a2m3lk|9!Z*JZR6pP>{9PN#kTam0T@;D|qh^P`BMlK6(K6+Q)cXuBU zTK$^PNsDy^J)TuKxS5M2b|=36NvatgO)l(=3%RIlehUGEa>)sJ*F=fsjcu{4ue>%r2j*Ck9V{s*5jF$LwotGOUAnnrq*z_e=XW*u! zL4NIZ-}4Y}_RlGh@jK^U_1(#zJQ{~ZoGb2Y@MVV*pL2FEszNXVjnQAUXVa4UC<7i_ zWTC>$o{j@t>WEq2t+ZzfZ&mo>CPcB;?zUk6(l00RaO7%4%S$;f$jH&z5%(M8c=<3N zMgS+|_|+<_`yrX<^E$X#o71A!=+nRO4rq!+n6~TV9x??tVXG>BQO|6>i@bHF#64+` zXnwY!^h!Y^#hArkNm?0uY7-B?2!?10+?;*iE?Zc~-!odd+vlW>$Di$d$O$1;`W?g* zn8o$UX~?pS6-6@B7ZhFp|K@&`%$^q(jvy+NM`MF9&?g~P`~)-UYAUyf#Bqft+X-}c zM4o&#Vw8ph>Qq^G8{`5INiKR6^ex}@XrMCB;s|x+Xt;X5kC9k}jw|~$r?vy}`Bt+uADr196b<}9Z*>}si0oNyEO4Z|b zsh80L?8-P=Vb|M(;}}#>JK>y{trlpVlGw$S`zJdh6fhvG@5v}qzM&s2`JxP;J2?i% z`ZKkxH~Q0C@_zV-sCe^T|Gq3SsrDUWot&1q4^RxB9YPOPN#x9({7iB zm`j_h9?Y3_Tq)Hl({g*JXab9^+Kw+C)wA)QxD}4qwUJ4$0!CU-BxRRojS{6Suh{z} zS0OCEY_#$z{(0i7)&q}EyNvj(cIB5dF*>Pd;~+_4U|Pc4=%BgsM{x})3ld;=o_N;m zo@R3NoAh$$b?uSwu|jY>~% zAd2q~i;Kpt%#U35EGzuno^V0DBZ`u9t}kQ~&5b0IiqdN2YE^L6&*#!`gKcDwb+{5ju7#`E#}W#0&X9nn*Y) zXVlWEhj>n?vog>aVfgT8>$jZUPGneedH9ce^X{%FY_4+-$Z(=rNn&NCaTOh!%F8MK zbjzNCGWWM5rcxie^=a9kg^60QzA-tMJYq$bvc(q0g%C`maD@jJ{l=t$JEU&o$RSa4=?5X~{uxy)p zc{ym0FW^E3#ZdRZ?v>}f-g)=yMs+)g$n*-DiDzEePp< zrwEU6;FJp@M7#7u;|^FANNq`uM01UO#o_xkzlE}YGCA-We&33jsh zUte>qrTh6V*(C<`&hDgDkt#plk;`hZg>G+&>M0V>R9^Y+_ww=qSyC+Msr4q|U;kB3 z*ypxCuoo^sQWG79zU|;|c_v8@@|MT=^f#`D1@&w?@Ev=Y${bMNt* z;q;e>5Z!)-=@mELel^qbO4RWEpduh=)FuN-85b#C)=P&^Undt(*ae7a$&(75!;>CddW+}97FNN zmuK5-Z)0LzM+Uo&U!jEk*T&oe{+#OBq)v5W_<|4<|75`xL;GVH2j3<%NIjJV2mTk# z0L-aQC>m&00@xRI!A7UNF`WpqWt_f9^uo&)l z;ggeP>3Apr_m5s~D8v_inSDiydN)enzM5o-JkI1$XWYKn*zA}WmU22Suyx7~BhUgU)s{_aQo2yQnfk8Cu zk}8>-K&R4$Y1mPyz;PrbxATrwihj5nE3)oO4coHDz>H9SZK6C@71D82c~-^R-3Z7V zI4WkR#9cRrg_0Yk?VrI6^ev@d5>N5t2#BaAi`vVWpS80fjcZ;!E_?_LXAe-;LM|?hb5=H1Ro3skwogR%i zpa+Y%n)F#CSRb9s&B{D$U*3sRh}C&BSN~TwbGGN1^s;XVcD9vGTk_{hZ`6naxofI- zQzbU+%~O$z=Hys^rE=TA{`+41Y0n^!D?Fh&Y3@IqA42O)&i3BlDS0RE8)h5RT|w9# zVCCv?Qe%%gTj&a420krawSM? z4p+F+i_X+b5%$V^M$S&NIoTGw@iT`6Dm%ku`b%TPhRi6~Y|Hp9o)67Q&dJ7I_m2Q$LQDJUVu{MD67CkElOLa29(@7^`e-1DY-A*^>#7pWD0Ou4 z&li=I!Iq(rr6&lEoZGo4jRI{C(X9Hck3cmYIumo~`dj4L(ccHJ%3guYcU<0IQG%bY z`uN#yQ)R2`PV5f~|MQk`Dqlg|Ty<3}wikP^4~+Zw3bdQ3tKZMhFm)VEzp~k4S0gaB zRZSmzesuGnEPi_Ayo!s*@uHCJ22D2(FiuwMf9yN@P%L$IbQo#Z(nr2{*Se_rAxS^Cm3 z03D=7dE3oS0^=z(T@O6(kmilyNHs| z@GMH;Do++RGwQyt1HVBbYN2R=v_`sT|e9+rQFiU4fncj4hc#_mTv$GSVhu1*d<11paJvRn%>iP@#`E+slTT3*~- zh6*d@5h`s2#>MHaLq%AnO00xGp%Bm(hBwG)cRos>t}fu2mX-w~45XGy!eYKbw4S~B zD0UYvxP2~JJp1U|w@8AJD|?rVpd=v9z=nTsfpr4W^9r7LDWv+hW1aJ8DTUeEqu$Fv z&u39k!{=!12RE@urc=~czl%LR%(?AO6Con-c|%bUb@Vy&b%Xq8jG*@RqXDAJZ}_w1 z`l-;~=fO%aO=ySYvhSAHKyF;u2tZhA_zXp{8hsk(SBHB+?)HOuApKFS zbPgv7iSBTWDtlZdFhf_H&<)kot#&u+kjBNy{}m?QCT*{r)8upY`rb1|zu6#a7`=RC|xF+eSSD6wMt&Bah4E{L+S3rKg#5?)=e37X6 z8#ie=5$3vPptzq2zv$aynO2}EGz%`B@N){Qzg2h^mbYXy0}Wi$7JIGxek-JxrQZZ< z67mCOHh$6|9oyr1IWtEJ79Gsnm=}3pLN(tngY-qpjvyM8VZJIo^Y^&=9+#rAKAYhG z7?Psz7IsqdO@$|XDA8==Oy<*8oi7PW6*(%cf9LJgByHav-DE`G*Zy}{v6)A1<>~;l zR*_oL94)j*dd!BmPCfWUpA}LH{5uZ@Tnn0C>Y0`r%7>Nj%o*{h_5^c1ym&setOS2J zkVU!U5C%NYE0!qO3VWd|M*y=eNSg-JmJ(ZB1kJHDPuU|TZ1)c!FPWsP3x^vqb@X5s zAB|$iy|6|We*S?97C!rmk;3Drak^B2M~hRNN(tM`>FatjuOe4=tllNa-CfRo5wvt6 z<;3!n{gN~U?rH13r{DH6XEW=fiMCJ6U5GF*2Uph$M=~hrm;Vn zP=_Uouh%isP?uGuSoMi8W{lw5^y!^W`VP4Tc6ZsNYdqrH_KUjU-}WNWb;m@Ro2FC( zb3=hpB3bc;2?5ho(YJ#@%qj30E=|lL2D@ubysMa@=F=GOGTQqKo1Yq=6B)7c#Hfom|R)qJMM5MeWKDe&Ai)ykL#K&z(nR9H!TLr)(W# zxM99)CxB1I$`H@ruL1Nk1geyy!a|mexJYEi8x}y}SODr*Z$zus)Duou1^hCP#`V@k zKP1mtY(_N!cam}EhY&rQHIv?!aooz~OPE|)?MF3PHH3q2+w0+i`dFY#Sq7xl){|p0 z{k~6$tDec8m7DkFreg?oEtUO$3;DwD?O`^9hs}ZR5g*$H}_T3 zgcI=`a8EI$;ipwB#D9RHayG+1L+hzn_l&06xtQ~ z-~%V{$!Ez~n0Z})?0XG$rT046c-s7p2oQ4^&&&GO)g85xpEcVe;$Qz-$|f$}j3whU zGL2$b%m_C}|RMkLEIK zNv6vem%LqvENB{(e!fN%<;Ma)A*2b0@a^fQV8eci06^pGIGm<$pRl+Js%vORcC=Cm z5|I0D5SQAz={9Z$>vktOqPT|9>l0Kk`+-xawD;E94fM%cf}8m+mOJuUX%=Zs-T!&n z*k`XOSCdr*n{Gn1xL|Ks9sq8TQyofU8(c6%gZ=jKV($Ib_TgA)PvT8o^}v7o^1yr1 zdWP(qlj*@voZDKELC8{$f1#D~Z4oYv4}$GkM|KjPWu>{1+FUo`@mlK)o_m*S9_xp`|2|-X2-=BGizO5*(j}WA{O7+mCnK&Y|&*F)KNuUxa8(nLoM!a6c3j7nn zeD{YJ#KrpcB65FL@zsNX-xxr#0+-d^k9&XFp{y*4@Vvwswb<~!#aDWh{x7!?DK~6& z?53$|8`pIwWhbq2oNSPwe)#o7wpsQb#*xtiMGeq|KSShr)6y9HK=c;RvGo32k}w~a zsG^ndT-4skmSHJXdz<-RbsMEs)JQ(CJtwm}U`+ zQhdvh%`Kz)j8miXv8<`VdB~nHSsS`nM(%^`>5}`5fn zqD$8$<;nEoQiSt$RP<=oF8=w-``%RrK3I)?4? zT!U=k+Q@Mf-4&(OP_6I^X3pQ^OpiEurfqo|mL=?qi^L=t*xk1hP(_Al8;5_CWd6*P z-+l%JAb6-{30wr96{I)*QKuy~6?KH($Nr;-YOD_PJzQ4<;DRR`bl#j|(M?!p4e3X< zHL_{RTMhdM&q$2EUNJ473K!9>!SIC-e<}j>zhZh5rgezSgRfdknLa`7@zg{?rMD8M zYm@>W^a^gLsO!tyAh{cOjfjuJ_KKupn-A=kncXL=VQDWw&f&7C%>A(s5WCtRc%Ben z_SXl_BmSi0QhZQ7&I6!ti74@tlkp~idrJGOP?V#2@(FVlBQ-9rfHUKGc{X`#*^SvV zi}dIv%FF38NiNt=!QCz@23L?4#M5rhI7)Q58ex>eDY(5+W~FUM{{4lhm_Adgu37MY zE_9RtQ0l9|z{%sPtwV+xylX-ztt7%dzJ{l0U7;m@I_^0zX7I06r|gc+kArUvc72B> zpSO`^9^I3Vl1AwSi++5F#MWTaK8ghx^;In$gWv^ssG;jyYd|lyTV~nK{(hnCW`_dA znCx!kPCDX`k3pmDF_h|rsd%04bacdZ|9)XS)2g^WqFAE|5gs+}q{@Al7SG3!iL8&6 zWx(~PpapN8XcVsdsI73B?+&@pl?>Oa!OF4Q^2M{0#YJ^kcK<5v@y$$P(EN;OySQub z4zPk4`Ai>kbMW#fJvpfRT6zh6@68Dix--Xg)q+lqAo7ZBT1*m{tkM@0vHy!BX!lY*x1jZNl#5N{Ubz2ai* z*ciC-LPVL`hkR+C6aVvl zw4KDz)8E>n?Q(XFt5qk_M+!Ka%Pd0&ZzFcWsbc8gzs!wuJSPWVMV8qF{29|6uM7Dz zefyG*Os<7PWCQoEVRB&}812G)h{Cq~{cX3f-|yRB|LN~gc(?$a{vzPTpYbMGAwq9xwcVQ?Ml$X`7}1wAe18M-vK4_#*F`vu-Qf5JelC9 zE-P)|vRXNF2Mcg9(qYM|g;VEu8GIrisygLgB`KGJ`3dLVzxZ_gX5 zhOF0&>vE+ykCYa(F86>?cGi#L_wr48m*WG}XU|0#Z(x^u*FbQOJ0gbNCr^j_w(pQJ zr7DFgj&QwP? zhwzAefFyRSc_E&R6%tUKk+KgwC;w^ptFftN9> zE5%l#Y>1E#(7xFIO?KSI(dZlH<=}L;d&u@%S3lMvFl;>w4G1qVDumQk`(@(Xy{P?_ ze^zhn3VU@cKNERBOAMvTE8&RzLb~t>@FwMri}EnE~zMUNW7uq&cSVGB}8t=5LH;+#!cCt_|OhyV`yCqR}m6h4Kj`!f~#h3Nv0{uJ05=dD!#eTb> zDcV_>Z~#lq>$7eJ5BsoGKfUjLPy_HsE=yDI{ej5|1r|Jscx~ysO<|40aGGse)5M&^ zc~EcOrN}o8j^i&cT9}z9kPpYiW8v=97btlqM0|%I7_BXHI}-eCvECmYWP{XzJs?mf zShc#^ANZXeF-x6~dRSOQYJlC!y@8eP?Dt@{G}3bw%j%AfheI4=9byU|GcV(Q?DlTh zmch$V(5gS8`mc7{*lOyVsbB+q&Ab#w%xs%B2#OzsKtRT{f+y zgOzT0JyvUc9lndUZ}HQ=e!Yv&9aRNWCEI_`JRA=<#iS|*JM_tQ?Eo7py?5iP*xNuM z%L6pCWIjJ;r3vN2{J!uCNhRx{ukSBnEDiXXsEyseFQ~8DqWfC;*r?J@#aky-ngva2 z15%&wOmuFszioPyrcq{LDS9KRG*r^V-=*C&@7fWxLF$F(Fq03xNXsqiT?JUaJ(1IQ z5!}pmuO#&B(1%@4=)MtzLQ9({%=~0yZ@>G_O=z8S6@xbO6*Q4}+B;*2WfiL-->7S? zKcgvR+V-`w?l#&piGiC+RuGckb?+f77JEDmY&?_0-z|c0BKJy7sEa*rdf)Xnqv9uv zSzT4IA>hj2m=nMxBQqGm9~B+K^(g#re3=VVm#|jBCsvRfB&@WY`DknZJL#86$^9&#?(Yu5RbaOd`yA!TXl z*y}sd*XZD%KvJN#p$EL{{<(KQ;46|=54(Ei!cX95hYUVkt11jqX-dwavrxO5Do)z5d^@ys&=MJ!mhZ_kAf{nLKg)ib|!ts;5-*-TR+S|83 z0RfJ>)srY+pfoU&U{x%CsJ3q^c%)hoPU<}uIrYuJ{lQDz!Z-7Hk3$JDFq z;+O`r9&MqX5?GVPwe6z_6Rq`xvT7EdhA7w~B zL~t>0T~M2jqd9iFiV7ce{29nbQ=ch1ArW9fd@;vZDEx5ncM_V>1yBOQ>v2#y-uRcw zQg&D1Zh8vr1+r9F-Q3ZSx(9-!ueya(aX0nf{M*?{SX>A>Z4dGSyf%_z7<#;FF0w4n_*Q3G{Osrv&81LtE1z&F!lh*UM%|OC-OLhpPMyxh z-gVd_e&XS?rnC2)rsI4~xqa9FdNqtIWV!2_&3N3H(dB$9^dXNY2?KPvVebn+5Qr@0 zNt^klAA7!8qM1Pa$1Aqwxk*Vf;63_Irg;odzLduNPP11`m+)-pQO(Y$04-9Z#$50w z`d_Y5gTrvv!q`4Q1nBw)f!7bQtk3LX$y?3AQiEDi==)@u=baWDtVcTuDNxJIG$$YB z1F+obGtl3Ik$eN-`w2AC@_Fu@_O&7dSHyS!5ORarR`#Bom=!%As3 zvVNjg&C=wg4RK->fHk=)g{XP~}VfZN&)>sPIyGmTu|xz+Pk(1``;)bJ|e# ze+tSidoc}4Dl}!~T)t}M!_~-H32XDY$%(OviFU5J>+}Ztl0o*<_om$Pt>el{k~piU!L;r9x~`t=7K~#d=RVk^u9#B z=+v{XB}jkSZhaLWmDr@aXtVcIKYZ$jujdvRzquv(*5_;?qvqe}(st0M3ZHIzm~m8K zf9X+0<(`Q3w>t8xOTb;#(cq4e(TLtOs(#kzDIjdyW3GAaa!486c+&6TtwK~GB|WJd z`ZQlbgG}<;@jiYkIbxMoHpw+lzXaTKtxGI6X}5>w_;wB6E0QaV9j@~e;#dF2;CJj8 zQ^i?c*FcFm?7j8E3JZc|3O99))_Ee^xtCAX^Q#sbU6E8A58cxG#hfALCDR}GP$!65 zz)a$7C%T__?H^7Ad##`DfeG1XW0~kuh2T$CZ#3nOTKBF zogkL>rY>7!YRLKc7uJeo8fV5PltVU2tjKRU7z&pBZ5U5PUypO%=te7&Qk?m;fv)MX zo8aAc95LvkXn4sXeW!RqK-89B`e;ZUkkp5IllzlLUImTJb`qFNk@lk~&5gI}%b~$5 zUiGs>9sn22uQ`@vhSXV-s^h&SHhnW zq5MV;8|-eTJu5(KHsLz-kJznQBPwpI*D& zWoa;44&u`Nf$1#xLmwUx8@(aJveIA%M$RAN;^Z0fOeP3J7>UqFCvF{38vJm;T_1&L zkNP&rCuK6y(|7Y3vR(QYu;xjE2IFDz2WX)M1<_}9Yo})mc`X$X*)go*-UYPmV)Aub zqL{-y1LcFDNz9#VsbXc8+6OV;?Q?wSaYw_!C@cPA4JCIt{LAjbolG0O=0;=fZ=Tt4|fhU*Sr`|nl704U+I zBcdXxL=KK1IB@;M%Tbds2P1oZb9@4_U55jurP)m zA=HGsKYWR=`tj_l5VJX#%AqE+9E&=;HA&o}y;by!Jl?RQuo7951JH>%Zph!l8P&tNWSBrM_)&^WBM$cOe~iRnKXN z`s41>xEohj4iFfodbqIK<(Orx)-yPi+kP!{B?WB~eH?l;kZ$;_@vHfMgK1O5IGFo$ z%hABopAq1d5^g}wTTfT?TakyWYXu=rR&|eSy^Io=$VsgYeSUIg2ROR^u3)Q^- z4B~!Ce0@0lWLA+sqwcc`2!FcD(gI4qbb9Q8z5DfvxX7gdXfCpC>#XZy+-5@;a}+S1 zlS=*f8~dX%a+bxe>BM7;y|R^zVW^MoC^IYn@IvtLoAjZ)kaOL!2PdfJ+X+;f1U7sL ze>yY!f0Zmd(z6}7td~8=yJH!{+_D5;xvG)Prq@U|gw$YUKV5Z?Y2-FB(bQ2r;pIcF zow#3zc-7Gg#wNMackg-eeE+F7RGpR5-neSZ(i0O+ z{m%(J1otJ^MiSYA#e7`Z$HUS-U9o|Kf)?zKBS(%SAi|T>oNN8b=xAPBr3HYr7zFS5ijsNk5*ka5( zbMyao>H#-19r^Qd#4{Ico(AiPEq-|+^{;{^PVf|u$ z-A+MliIs0qgWMGx>EAsE1B`h!SjsE+aO~D8U%YA5+6prlw`{jWCr+PAMB6gYiofJP ziwzYQS=;*CNdz)ZKXZHqpWChLJW!{-xCP(%pzjB=d>I8<-1gKdxbmd&^@{r0^8rl{ z3M_rPHIrIEuq#YaT&Vjy%Pf@9)ha#}dPS}nFlT!s$T~?tWV%^t@^QArUG%OD)9LiC zlES+>kS*3f`sQZR1k>Yui)9*xa6SqXE1I)2gc1C3e~y*W)U=-JFl^$N@sm9?|1$}D zBru1&WJ~WvGYh5UL+s`{dhzh2_kV?0Mx-vfLIj%+37d)dnO(XX3~H=iJm`TrrqOBV zt%B3^@2j+36i*1BeLHUS)LLVBG8H4ru;Ez+#2=&H_xV4`5npTcR{;N$#t76?QY9T3 zr}k;5@~R{Q%SQsal~WJ8Atyxfm2agBtxsNY2SiGg?T;8L?X$(%5Sh~IoCBWkOb!L` zp>xVL1LuS-=akPqy^AzKHlCL8bBWq!J$@QoFco~{rd_Zt&j@W zLPZ2`dl!#{&zqL0;V_3080p3KTuwWObN)l8zgrVZ?69?u!RmNgho4ZEvbe}~%DdK7 zp{%>PkP%nYgJbT*WWUSEz}3#vXUXy@o4+>Nz?EeXx*<{_$u>9f)7KT|=4TpS9c;oi zr*16G4+@JgAE*uG_fnS+9|@!x>uaw>G-SQ`v88E3K6}sIVw7ow%_b0(Zfv>E6$2U> zE7^(^1U0W^il@R=%gqQ6K9XGno4M}Jyz3M|P;yHP6mmi{8Xf~dPqqBfjrq<4OnW~U zCKQ`$tueUMr$3jzA6&6>PxLz}honH6U=HWpRt_WqV+^m=h-L%@AG^AfgJ}2&;2~teO~AJ zIWLr5P5kN84{RkWcq_A8ooZtC$&(l7;{5nV+G`)db*!j~_vDMDK~A%VJIx&S&H(S; zf6f7p&+Av_ciI_y!7A?;Pa&PQmj&t_U}kjnzv^EE0E8Lz=?vc8{^ry#Gbu(*ng)nM zJ1XQEv*@^4g2Kp**&9skCgj3X9%BP7alf@Z6T@nu?>!5UcrYsMWre7Q1&3n~hiEdL zk`#xXD+$8ghaIAv{m)x0%nxpA1ldsBNWzsn^9@}G!L3{zvy=0@Uj*XzMyFXa_H;aJ zjKP~9lsO?T?B30GeJF4QOyzf@%WPy+K6^M8yI(5&C!^~Zhq zv!=3=?GGNN&g<*8l<%s$5gC4K$5LH9^TlJMWhQ=l@tayh?TX2SvXY6bal8PG19%s4 z*)I8Y*#Kn?)*xYJ*}Y-34hD2<1I^lWV;2#6`p!24yNphI^p9x6ZsE?`{|o)wKqmYV za39PDxaw&<_jb<@Fg5)V$-PoP9Ut1W^Mkix>_;f!###s>l z=x|wJDes!oV>ik=?10L&=4_j{ig3`-a0g5cxWmHje%b$(XJaqqrNL`%YRq z4hdRyJ~3W3Evpt`N!qU0>Wp$JLZcX$e#AdLCEum^3zbSZAaw4U=O}DWI$0Hg;@Zhv{C$0n`D1?5z_Un zYGWL6l1BQ2QTgY@qUQf@7%+X`$C**UR#m~Pr78`5%sOcCvU)1Z@$ zFC|_VN0feF-@aNHK_4|S3rHD?SFP{>LY-;Y@9Wm?TP50qarF9zaO`Q1>^J_K96Y;| z>1UDqf2=BU#M-8iaj7IRoJF=$W#`0&r`##l(&J&8`~NX0`o!}n*Qq$Ck3|fb9T3@s zxRZHgH*%0=E{r>cPBA>6;o|`UNV_P*8=ul7G8I{IY zf#_a-3^}E`^hC!2cC@dJ!xA5Kc__2~j^aM<{lPiZT1Xy}deynIA4b{SAKF>rI(Dj6;mLw@<9wDP{ zl|1C`ZL02H&uO!$`2o-txkyHgj1f#F|5^>Z|F@`W1VB2lvT=4=Foi;3&vK*A=-N3@ z6R`(0DC5zFdi8aq$>U|Oe*DpDGuX-m&GOLoqou~=U0Xnu%gL6W7G3Oo2fF5${;ki-Qk!3Lojx$~Y7dxRC)aC- zV5M$?s6Fc^bW|dQsNNJoHzOXcMmV3CdtC~=1wC{(>I%s@J7r2c^zPHO`W%1fKZap` zn|)_sYCyx*4pj0Z^k*Wi4pEKxw)B_|w@05{R-QOTO#J(@y%3bbL~|TcEP7z^hi&}O zUFp_YH0wl)ZhBI6che8Fi@Ktoib!z3mCgXu2ORM0@TRZ%d9n*g(njI#oCx*ZqNCqb z+&Qa9zJ0e&RIP*2#tO3gUA||40)Z7>UsJYR@iQc@j<(O+7TT`ZLNV-M@)C7mD>9A{H7 zh?a?|zn3xR&k@0uQpbINrg%;8sQ;$=@GI&oc-AKJ8Jt0gCPiOg1Yk9zK@ z?Cw-O9#W*lpAOi!>&jdQ${a%H%)E~@(!n?TdM=)-QkpOow!ol&5~fygi@9Bnr(tj6 zW-hmUk&bI~7C9+<8J*gd90C88Fjg_KHQpN6ntMjTJidOvW3DbX6#e)exp_V z>v$cI2%a@$W>_UaA`SR9~w(?4jB=p$(sVwhQ3G(xB z2{tc15=;d)XsHcUlB88GITw^V+-jMDNjl34(2Wbq5H|iyC{34Y(E{tfv?uRkGcAdU zL!QQKX$`nxj7m)749rX`aH%`;&xqkm0?_gFaqP#VE}mkaf3CFV=I_Swy!EVCX|(Q} zuFz$}!UT!NzJ}^fJK7|h7X~?)m*fl0CEdgd=Qrfy_a_3C^F(+aY9KYU>AKOT)@jQ8 z*ApI*KM!2!$ljg4@*yD%9QEt@Dd27)_`{VvgLoz4#2#Hza%i9Ib-qLd_Nl2gByD zKHqxvaa#J>i>>fbq27djel9YXCfZJ{b`>zib;+p^;~f%}IQ$}K+4>46SEfaS*=gzL zu8+H5C2a&^>US1tJ0~IH=k8QQtQ;=i<%=mh@Q`abdlmd8&qJ^0Fj#!-KL+tY%24!| znPNTdJQ<$9`ej`YpxE@c;+@7A2qlqjX=PhgVGqpZv+h5oYanqLS(YU-1c&CzbDSB1 ztunC_9qPhET~DDeUte<|lzc~(CtB=Pm+*KtdnkPf0vc?C-E=4XC*k)MI|SdX$ttnV zA{I$nT^}ov)wljs`p;y3TED=cXi*%l@#%El>80KMWRjXvU2Tk?k7sOmlc&oHsCQ11 z#rEl(Y4z?;2wMIj|LuPw9}dzmPa+!j~w9LDWr@t(% zV&9+Ou9b4B11?s#m%XJN;@6wirALbSj>gt^DV?Xd!A+Hn&dBCxXSg=b)`H8o1U(e% zNu#N@s5tEb?L#RdX!gJ(&Ar}(uiz-)|+_?jpXe4PY z2y;SJd_EQj&IQ!xbm_~r7`VH&Wku0#Pp;=3_T8Uf9Y;>It?w+G$m%WKQ3rRd;HHup zc$6*KX~4PC$4Q#;4at)YpT**R%(BeQ^yAo6Up7-&=D4t{zJH$|40z1P{vGbD`H8z>B+@6Xn^n9){W zlfUK7c_?_&ZXB?#cl(bC55TQw#AgsC_h*7i`lhArB>V?E6QWS2P1{kbRnfdFN59IY znIkr-)MM(~cu^lA2h9ta`ETVi$eIbkcGb?B)SR~`EhNT1;$t!4myYLqEH zH-}aD6$k%wX)@T-mhWz!urQD+letsJ!dMucbT%gJjq1y^?YPHB?p9VoLimJ`bnWWw zaOco_UlI~DKi6(54c|T(GcpHejzE2va~*!A96yqLAE6J3vJ_a{G8AeNMP)Bw zio_)4To;$T-J0+}OL^;K-Cd|Ls`U-3z)M{CbGPHwAI&hau2iH5j`_a9Mj7AVa{+;; z%1jwmy}r#;L3~F*hXkNCT)&NHb@+0)Vh6=y|0I1$0vZ^=13i^B8`&NaX$s5|4cNb^ z32z{z_Hf3cS5)s;^Ym7Ouh<^y93{;j3qU^3L$jK^gBX1mBNoR7Ac`+7{Z!*s`qcMO z9y||n>Q%Z3?`D1W+MspU^A{!L;@fXQQ4Z;vb5v9!h?)`m*cVnm{^iY*7f?ZZ+2X33 zMqXn6Sy^n!(^DJVY!*KYkGO(YFE zygMcvT(R}%qJ1wAEgdtHk%#671RuC80+85EZRr{c^gi~7NE{TTGjL(2L$|CX#)&}~ z$VOQV$;){y-$H9!CaijrPN?k0`Ab2U=zwWaNZf0^tt&Zbf`4l3 zk5Rq#UHM04)%Q)LPd2NN)psjCN$@)_>gL|O)aPp93bM&djkYg$*qzMrx@c7W>!7c3 zabt>*1+yNZIJmf7Exl-I^oie;doAx>=~2`Iow&cMy*dshzk!3|t!#D=P}k*a*^WPo zxL8>l&$EMvAo#$WNj&oTtJ<=Q{gd(5-L)dc!Dq^f?_o2jMcP8DwUpcx`seDyr^4sQ ze;Rf+vu(-Tk$w2Ch&1U!*Y@9ZKck@UGCdx$zOHqbL{2gUU20&Z37sPSZ*ae!=zKg4 z0C*qr?c}s66Nf0#iOB|So&n8c$I;}Zx-r*!Q?S&>H&u3597?YiK9-5sUS@_=bDkKA z@?iTK-%3*A0D??v1WOP3&MI8(mFii;Q57h6b8hs_52KIW$@>5WieMhW)eh}q%GXjh z{`}mgv&cjA5?#OYA>2)b@?KrDszl1(rw6Y0>GOSl_h*OqUtuMaySCPMU)g2?NAq(Q zcka*?x4j|QhZLVd?WSFn+=7E(Dt@mRuxifG-E17fg6gs?2-L|)EM0&MM0qOzLgepH zK^fMYM*^2NSld#A0(-tfDvL2O%*FpPRNP!z?>fbylt#Rh?<30el;O`C<}|SdZ(Zj6 z&xP`HJ;PqUca6UYkkHc|>H%6>1GEm)&5D6IVe$XUflS zyXnVW=)Z&SY{ZTm3q)Oz;40*sW9J=Ec*?soaIP?X5B~h5HFaoCM+>+FR4#RpX*kj3 zCGM1V$MXkOHWv0rt9L9Dx_*7B>E0-M@pWAmJ&t-;k@RbhPaCU_Z?iLqeLlQ6Dkb*& zZX*-0j#hNO{bs9Zl=H(-a5Q>QO(#KFm2leG7*m9Z4N~-&5^B|#mAJM9ES@_FJUy?v z|9st`OIi0$x-j~k9&kOAiiIDb#zll$o!|a({+iVp>k!%ETYDZB#Gp7%lIr)SuGRMn zuJ%8Pbc$PQ9NN#SKBo2`mrf7p%yUgOUvyW5N}g7~Je6$4CrT7=)^fWt-7E zz=QE2GbPBrwkeLn7?A!raZ^alMn_G)!b=+A8lcEZh>r9Ila zX$SUaqIDu&tYqJ>U?e#Qj0l~JYsdpgAgSF=!g|W{;HJk#UehY60ms-=-=p55-R6gS zx0ju$1%2Qt-!E#P4ia!gCRpH|S0}+gL?^DzHnXP=k^JJ^ZR7r-3m3yW%K_H?DaW7r z|G|9?*o;3_!9+v|J7WsBKnGvbe#{sdLgOhXC1WM_EP8X3^3QeDeKjUI|89BUb2{-` z=UAy3pPay}TLL8ZpmY|s{)^38kriN^g3y7^HBad{_v?ABo!=d_95v*eXlUNxnl58> zp$Lqnnx0>3Ks|g~C*GX#9^A5t&X)vvPjMn6~yQ$Yre}UEX~1 z0U74aipQsKs`)kt;TYtqy3?6szvjWpt2a|_(gD9xXaA9h&|3DT4y67UiJE!^5H-&> z|5f#_`?Oetxyxx=K9~Fh6MJ-LbC8 zD*3Ul5-2bo3??z8Sx^y{3-)<$(e^|MGO4mtwKnKq z!#pEXJGPPaGFUm=IqlvSS>M0YnbhUaU$Gv0eG9EU`?Pa3sW&?}p@feEvF3M^4;P=& zoIchR=UsK_ok4$7=c%&Vg(uicM89OYGMnbeSpwo#PM2WRZLc|*d-rBMake7WSBh&Y z3!2J*dZ~iM8Jy;6^lwA!F;$_WMLZkCqQMH83+KDHmsR!aZG85BmT4Ni(ZJIkip3I& zCDa>o?e{Cxlyzn3F{+Q%*&FT?4x-t_)=e~fBON;JJ)d?p3$?ziL|g9+IYTGxw-hVK zjC4}TW0_gMjvm$J;3P0qyQ5VrOY7e3cLtoFenk;*%73L>HdmWw|23~GtBJ>}hm&ce}4s?c`IwNyC1BMRSJKfEvY@9u#hj% z;6%e|>!rWHeBG=re$Is_e{V8eC9T1BO{98DxVl>sgP?qdnmy}yzJ3?(de-KF549*> z@@5`O4`THnb&p#YS|^Gj#6b5a9qh(3au!NNiU2MBnoff5EQMpJwb z4e_yYL>~ROp)8<$M*#);*}LLPKhsW(Zq7+M7p*r@p)0uRj-?f;dfP6edr?R}7Hh%W zh^9X@#U>5hRqaOw{VSV3yGNFvlf+{TaSh=j)iz=eO+Ju2^p>c{v?PiL-|!O3s6UOn zLqMqrmAym4sI<;+$lQvL9&99+9}I^)5E9kbymY_HPGcTH01zDn^%Gi1ifiBJTXesJ z$&1}zXh~*O>XqN42W_EV`(q#tn4Ftdt;LInK37pW){aeP2%HsP$fxc$_s)uE*F4pK z26LO|0s(2RdgV{*Q|XnZR;D%nTv~F>CLtRMDKyF}`(lZR+@_?%KTBg3XhJ&6($C)6 z?f7yvfOe>GnDaK?CL*-JnUe4yg9L1gQ-PIaT`ys7~M=utY4tBp)qsHn0Q;N&qW}R8K!V6|sIn5Q0 z>$>{g!4)MYApjUNWg{t0W=wBF z(Wc>lNhO+N&1n%yVx5Ot57lbp_yrkhQ^`OhRl{(QW`liEM0v_h+-cZ@a0&w{*Tq%h zaoj#RX>#W&;aRN}AFFTxB2=RSocU&cb8Jq_F{AS*7SCuh*;Y?d6jZuS=(qPlmHGEH z*X0t6C`He|pZ%hw6%!V(Z*x=TDV?QUav-zh!tQu>h-Kb_jn3{je0_^LzjC0eQJTQu z+Et_^sF{BF`_UIkH*<#n7#eF24;mlRj{L;Fkah5k+nLYvhk=HiV&ct-&U8<-1AjQe z!ku%j8sOu~k_j7)%|U{rt~Kq>jc0Gos#a%WRD58BX_9$cEzQZBS1-Uto`Z$7|RI~L?I2VQ{4XOFN6!LXpFMYh8@`sM*$x_ zIjbDBxF(~N)4#0FYv{@gVNOhOsB==9DAP0jWK!pSGTG@mIw7)?r_tlEcs}<1{c4me|!hDJ7rjwB4!xM=Rc$r^mkOjLDz- zhiCI5q#-VVjw1KWh=8K@yiD_*&5s-IV?C$#jIKXm5zzwjKBGT|2psn=MC<`qh5uPj|t4oCYLcA?LTXb7aeH3p*O5^XCjQ=*Z6<)(zo;^V$TYS ztG(|OYs&UL0z+Ib-tpCi~w=!50f1xDo8fNopMd{VzpJZIZMK{(8 zh-=|>HcLjxIX;8Go}~|jf+(lg&ci-Ub7ZN^6_2U%E7ki83k08oT3K}bC9!{+iQB`s zToV6D`b-}%L8~xWYdqV0Qa;+<9C!zjbCJ8{AK>}oV_VC!lsh=`xFNYzA5Q~;l-FVk z*6)8l#zk%jX86J;miViq`fyr!WtYqhBam$(NqG~C=EXNz9Q%(1tFBTU0&`z=Q|6^zm64LA>w!>K+q4KkcvX(x+3mv9Pa!T7*G zVq)q=zY{XAO^C-rzZ4}g>K<7d$U)36;IJXmv5_GHh_brC?Np;}dW3z$=O0LY2k+$%55oa%!FYVAc+R?b)`tVfVo~QsI-rm8 zKjIh4CX$#9RARav?#kl5ghth|eY?zVhfM|J{j;fdd#Yc^bj<7U2zhXw>xGHEN zL?-U4nd%OH+k5H~`TtYVHJ(*F=pjQd_(cyC8URRhXLNih{9X|UitdB4I7>a$?p`SH~~#UdbtyT zpyM#kazS!mYj-pAbP5w5XB@TZPYYbukid= zf55K`W5o^eSErdi07_!S-z{w+Zrbd`8-Kw(Tbq=skBAA)eo*neCg&?Mg;^gHArRzn zsw8c(b7K5$&9Uo@F|wjYa#ZD>ObzGHAjUqd`z~kHT%3n-4jImGR24tVh+}|Xn@jhY z9^tl2SYK_?_}Dq&I+>K-5W9k6Zg}~2h2};roL^1lNQgaTVUoPR^j?? z*d4h3Bh3GhX2Ojz@y0{tUKvuMpATPq-xo-K>lZ=4?e4nPEeC99S2HhCUjbD~YL-Sd z(&$hz@pVlR-WT{qFwT*Et_&vbipZ-2J!&R&G1h@AT4|XFeaOz`tB2kdST++$ZWgfB z%M+RgxdEVgeFGKa9QoIPaz|)a86SKooK}djn~LK|c-*;zNyZoS`$?t65}p2BgfYg0 zdXyC>C>xojb$*8)irL1_A~KGwr${ZOxy?V()OT`s2%48%yP-SV@hWR>X|$K`H)_yy z0%N}Pxx7$^xxFuMwi0^MY=au?90*-DFWk^&DGX}*UHsmkMk5T@P*+_8`|%e?9SKYe zCv76ZNCXqt62*xC!KnHWg@uyyV;#zhQ9sKJ%f6(eD?rA(dy%x^d%qqm`U4` zqTgHMZT|+m(?T+Y_F}(0v5qE1n*e*gOY7aq(#Go3AX>!kx4j8FvuY24IKXk`rBOYy zSZ1z888CR+Y;jvtRJVo0J9W;29vA&Npo6eC;vaC*!Y+$l*qIo{mCTcyuWnl;ns$JbAr^4EqQVL9?)bn2#i>Nts&j0k6yGSa+3@PX|tD z>%TF9Hz_sTM!)`Ju&7M{0!c3JqOM6z|Hi^MvC%GuJlI!Y_UODNNZdK|pv4>8cpvZ2 zZNG2tUYigSi@tXIv`6TP))&lsW=LUPkdfbs^5y!?#swFT^(2jWKU)9ER<^a*b!}t~ zr2BZ;Gt2p-0=Y-B>N9a_H7P_y7$JJK~TKV zeoflg`5B&uK^=`!eJ(ya-9nua>VH8#zvu{tT|8d7QBrVN;Ovl3$$mr^yVCR;7y1(m zwN3h?P9I2R3rW2wW$Kp(2ow@C*sg>1?#I2Rj}m8|>K_j00q@fs?s9vyDzK(@4b9A6 zdxF{Yiha7)H@Ej~jO!WS{TWH!k7jOl@88weX1zRJ=*Glrnl313*BQN<(>EJbPL}Pb z1RXzxUtVaq^btZ-l#u@Bkf=WJQ|#~Qwf`6{&lDfir0}|m^Q*XC!obEfEn;~%I?cOT?PKq@EMW|X29}MA9d6%IR zb)S9_qlGA2iP)4UtvR~cHaTze!vrzNfUO`j+a)E4`O~A{0dH{<)~z2|^CIJ;jfLu#d$A}dC4&OBjg6?`YWQycN5IT^ zO+;tbZ;pQQ|ABBThdKJQjl&P+W3H96Hn}Sx7@OM8KIQS_`;mmJ=;v#9l!mA;UvqhQ zf0(+x%!_F1JbDj&su~`pQPU6E;5twLV|cV9|GB#1nILU@*=zsnahGcuzd{~6P7!Et zATe>6tY&DSsTh&atc_^nvmfXC@G9BgOCn$=hTeuh>5t{eybB+G&T>;#!Zd#$VJ#%g=z=KPW$V z`;_yvhhx21od~3^wPF3g4GPLb#vouG^VNufgJ6!aJG|i`xvfD+-lCm&twa2Pu9Ep) zOpYjvgP&oVTbGB~R6?-&%uwxih-;Xb<3#EaIOm2H-SzV##x4iDD}4-CWoQmFkWi1e2j$DDI(rl2GbNw++8<%E%oVM=WNY16 zo7YL&Tf_sS+NCS{Iw&68$3suMAo@_Q?00p0KLwT9++yHg%c@K9z6xsq+C|#@kwzrCgS;Pb7^2^U6F z>w+-XF;kO0sG`H)({#n=?GLKif-(MCenE;HVPBFgx<;@m3b>_{;FIltK^xT6g-|uAbiB zSs26o(mr7rm-g+Ax~Zx?$WkIbPxNBh79GzvRloXeJCh-W^RoJ41IVG*$0Tc}ZL= zbPgaf8=G1gVE;zW-Wg9_tv~+dyyqunI5D8xz{nHo5R@4tllOYFOTs>A23qIoC2>90 z&|x}i|IphQZ8E~%i#ZHQDk4JM(mR`;UfUV1u?oUTcao>|ES1li+LYUP8X4{ny{?iD zFl4A^>3n27rv#*utfF< z=;-Qbzz(|1C^>ClxkKXmp(?^?b`Sg3W@sJby=|@LM_V2mTLsS^fn4<<6s>0aT9FLzK0i!X&UZxc*#M%E z4BFQd!gZZKnJ_{+C{6`}WpbCVwf@CMsNH_lVOh1e z=gXIwMZn-!2r*YIIUD%89%(-FW9K8iEyhPY0o0edUr!yUhxx@j=hZF@IEEWb)PYni z%KXoA_AI^PjXy0c3tWRB{OZ3fJaBCiJak(-Ts`5Bx%nT1-NpYHBoiuiZyEiz!X#-i zkhVfmM^?wZ5qp9Kk4nIT@Pdq@np7&LE;p%zCc-aN&#w+MpBY7 z*0l(>aGsy}sBcu(0z6>+cgcA|TUoJ6&hE1j?Z9y~_e{*A*9S-`>{GVy>ArOBs8!${^ayzOTl_GsH-i2Qh%ZvQ%Z9=_7IQY zqP6=upX{T0QgeiV{^{O%-sHx|-Rm@WP4mOjwmqB82m0c-Cm_#v?*dY>D?|Mv)2$c3 z-mjGgQds&$sG6oRy+2*2;OK0Rc31VH$HvuWE}S%Z9|L_C=En^m1HY1S#B=Sg8c}Zq zHsimY$@SjF6Q_S;92w7u9N5uu+8PIOjQ<8|q+}*dYAb%Nt0Y(W_%F zL2K69Vm!3C@9ik?04bMmu4E#gvb^b`oqy`M3`Uv2h6icsR9qb0+H4)wftST&I;7xBS$)3hwZ%1bkNfrRC2@ zuQY&Hpim&t+-4Pb*0Kh7|LBRwo0+##_M0CLN?48uiv|kjAhg%=e^AL%m9|O_#~02B zM$L_8b-v-nZiVGpOx!5RjQeY>PL!XlGd%7U1ena4Q z3x9a&gYy~dmPLoI+#FJz*F5TR5I)|(kc`-vsQ~i%Z}8fowxUl&#(S#9Bhb+=@BGpy zZ+M`)lSCtZ)T+gW>tWR!0LwPAX7b)pYi0O*o>UVM&@qe)Me7CUV#uU^>*$X5Y z6%&@a-_0K3n}zFC*6gmd9l(^&-_{h6KW>XDy%14TGX6|LJ#Bho&1*U&ZpDMgylNJq zrPrNk-!zMKd9)ZF5%+6Ykb|0uRE?S|IcG7tj2LFS07bVcv=9-ho^}JJ#VAhA(G$H3 z7}rW7-=Ok$-~SjK%3#-GA3@B|J@RB~3JKVd^DX~KLxhNtBR3!-TK54>?^3+;U(n9B z2p>Ors3N~hbb+94dSe~=_ImS)jJ`M0e6i>)mN7^etlO6`P}_MR)xSr7o)ie+Kw4!kpQ2Htc`4F+!Y0cA@gjjbMnUfefZ z_Rg`RF)G3z%DJ*lU2=~-lq}2Q;r3`7?5d^g{=(K?#LgJM?M2_E3KJsJ2tK!z$O}`~ z>g1(`xslG~i8@vvJrQu)A@cUeDk6?oE@SSL;^HD>BS%H7738Y-j`8P3tguL!imZ|k+(tK14cBIL&DN{=h;$(831570L09-{H)xptq4$E)r;-|}MK!NkUivTD|A z@}(o6vWkE0H&dY<>edGSPG*_U(OCk>~e~n17ScQ~-gum<&t!Dj zw)y*j7?$nnptRl6?2-KyWvG?yWcD&~_=qS_@a84#u&=%~eyZ0q#mZ)0IHB-;j)|e( zYBB6HfcRzee=XhzqZb{k6^hvZ4r^zw3fN%&y}?mDrw?N_9x+r1yzTB_eAMx8;D@NP z0l`=6GqmefJte6d1ALmf+rBSdg}5D}0=;1xi1$lzd@2?N9Ij?^cj4Q`D9N%nHIQrk zj5o-Jy4>;iuGfPVY1fg^AZ;ML(zgiD_`U7o>tZi^YeZdfiu^J=lJ3W#A)81D(tIh~ z40fX(({ex~m$deSO~JNve1hzlXLfgrqrY*@j~h@UGP1>a;R%5YAHa5rAMYIi^^9NB zrlr7XBp!ABgo?;dQ`6gUCGJgvCcmL-<)7cJd9dbTe-BZ;ibx~rX{ihuD%stB`{m@w-8&`b2T9h$Mh4&-6cl7@wx_6zScdK_WJ4}w^F)wSmz;MY zMrgJO458rw7~(mHp_eVkEmczoK?W|?ct&LRH4pCmYN8dt=%c3nkax~44QhUSsHy90 z*R+Q%p9#L^y3? zwT4Z2#^Q{WXaDKKhiDg!jAkNbgTp^na~?_7;P+Izadu%`!64_ zuUh0~*)02FxuVg4u9uqirwg%tD^4r8Bq80j*yATx)oHJ~!QEF(S3f8*^#L$M+!{3# z@X7@7y_nb5H@~o2AZsl>>_FHk1Xev-y=Vs=lkom`OUKI|&?_Gglw@r=nyg%0?A~=*zQDxj4!mRe9=Ea(`F}Y$qqI-F7${KQHVqHe# zE&|$t;_sSk{im*M_b^>PS^d>gk3ii?wo6OCEp{a4I@ul4Y{5pA2AxP$mgz^#{KDmO ztOM*>8z0&0uOz(TN){!Z(gshv*PlaN57J_u!x9d9!j0YRZMk-nx`&6Us6K+#4`|H~ zuDrJqQauesA^?XHQhj>~@hX3ZtPVzCPiQ5EyE62~OIRSOmQcJlR^_Z@@>URPYa(v; zu$~NofxH;P*9$ZT`Y`nxqGJ`H{a_sphO??U)_tGINU`@XiG0Qj5`Ut;=HZ+qhE+Sd#(Z5({-vg{oNq#`jgXzSKf`T z=YBY$o^bYZrC5w?mXS1WsfVPSJWzK64%cdIb2}*gm3Y(Rs_%|kDKhGkNf-=)q{s#3 z=3!*^?{DHi7rSy>MD*D_cSkmko7E@0%h9SaLtO31^b6>zFyY#wz>PKN&ceh$5?_*B zHiYlWwcDU&-@d0~VkXY)5lBkP&0V41=JZ!h);oR*5$cySIo`8(HCmJ3{EH=|E1K4K zcR~=p1`lnE$cQMEXe?}lb1oLaxlpH}R}<-MNzgaH+}WofJkM)9k!9_*NNwg*yI>4m z8P9$I2ogD_+;s-2w~^FS-^@$VwMm1D@uRteA2q}jL%a3L^Xu#i9{W5yD7LV&PO$K7;WL~Qy_D(@xZ!jCCa`f=hv=f+oQA$6@;X5!N6;mGci>tD0yo-CaYR)ss; zxdvToKl;OZD}<;@i9y|4gr9_5Z}GA+CO5_FKT{Y5h6aM1!b74Rn(Y(+;fGHmmO^3S zT-s3Ao9Z*q7idW>I&ND2EhjBJ3Y(ep9B+KLS1T^Z`5|mS!4iTMO-DJimk_bP-dw?% z3{Ntvm(@u$ILF-4``ma*Er=vg`E;S^Ex()$7slRq!-#eo%wGG_ZvCyhhEeVTNyTYG zCC^>@WtX10VzC)-L}Ht#{H*B`>@>JRK$E24FtvwLKw(Ql1ZVdLf54;1W5KY4PftXx zjbd7&_Jd{DEsMP*YxTRl?^bSlk~=l>U#Rb*8rv7`j#pv;d5~^x-MV?QwZ7PoRAh0E zA%2Fk8KO?-sb-t|!Ay;(bLsW;geao;dOn;`Lr!hHJOA8uo}ZMK(93~c5>}P4+^0sf z_cb$;W}2KQJCEE!U9QbhJ9Su>zjI2-^wG3_GQeM8+HmWIu0lKd|MA8BHZXWoX_gbI zpUILijCT96H=Ot`YtTDz>2&_0NA+&d1xwr!zk%7g1&jA=%|bSkM;dR^ghwb1-r@hd zZsI_&E%CRVQrHj_ang#>-Wj6Ol5#t#KUI&r zhY1(D4*ZyFs$)F=W7w`&@vCWfI@wT}E^em}yljG=s{Y{w!k28ef#ZE1$Fs}`v^?MN z&qu$;%fd54nyUf#?*aTzGu_Fv+mDd3TDjw^%6$h&idZZ^dy{waU}9)z%0Sy|zx1A2 z0}k`kbaex~`|Y9Y56$8Dt6+p2v%cAYFOi(~Y&FC%xtA7QmNv^?2VsqQ#?SRUy&`Zj zHbpoj2f0Q#P8P9P6IFuXj!AkoGxRK*3NC1G`g6VKKX%b}>*?{gUfT)YBU1)afp1~k zDCpr*;q)bXOocSZ=>Ji4?(t0je-wA`f<(E8a>*^Xm3ye%@3}7I7IMGe=Uz&3%RLO` z&Y0XYY`T~b%FJk(T4)oanafW`Mh86*E#2TyzVdNgg$_LZ>E=^DX-qr z!^_gWhm>=dqMaS>L0TsU>17w%aES!tc3--GmvMO7@QH?My88#o`?*8FGWGN@&-88O z88bEbsq!T|3BJ3IyVd0#MYVc%O~97P)^>0QvXe$;@x5c_IyIWT&WAyvndSbDbuG~* z@87pAFc(HaFV#VIzsU8bsJ=>eYvy3r8PI1ex_UYb7rIg6r0~PyV-_Z);-uw z_;V3~{8VP*CwB0q4IR1hWVb%g`tf_ja^&K({}=)%&3F-NVYeTNu4G-*^cf*gig|`q zP?7TkM?QKM`^K2&izyo4s$zG)npr$K0uofv=lj_C`4rXEhm!U{QfuyL|LelErTbKe zbuiDR(n{}<9=3L7J82$CxQr~#=STFfCpn4s{@Oxj+nwm;emD7(Mtho^#F6x3K+>8}uohctlO1E_v5Ms?c z{ebcxoTQiw9EU>z$d2;Y!Z^IfR7FCYl)@xuny4RY}my_?@9P@v}OZh9^Y;Ssc z!&u(WtzW!Ixr*9Q&be06F|2U+`4qRs6`${IdK%*f1;bSN(4*h^f3kx2^?J|bwrIo; zFJPqfBwYgBbcd+S5d(y={Hep=VOpU?G^_n{sg9W+n+dD3!q-Ie;V$9pKfqi{BD6F+ z5eqLE%krcio-3+cecMASw2zq}kLY{Slg55GMz|FLH-jF``H?-;YaQIDt1)MXK#2M6 z*UY0Bhw`)EmLl=M6w6K7MMp?UWuL9AaTXB7YFnRyJ}*saP@UbVOYSMWyVd7hhohpI zN_o|n4#qE=)$h(kp5lt{-F3XJV-570E2;YZ8`@@pgcQhwU8j#GjZEdmwJb}2bjh*u z(k8MlF(DTP?OHU)Wamy_SGbiQ%>ibMWtHNf7vx?yuGO{u7v0}!!_)kk?Tv}=btBA5 zstexn$e%NLb1`_~xb@7C*UT=Ey&%X;0@jl0nWDEcwU_-b4Xv=+O_Sn^g?Ru_L?7(K z@>f=Iwq@YQ*Is_pR;I>nt{pV6Mk6v|#gLtC^%BJ*RrAk6jZhES>+QL%t3G7>>s-(A zdBBUA8qh$9wF?LZQwge=as0JKcS>3T?8wJimXQ5EPfuXs`(0GSHs^C1(Wxo>Wp>QJ zjp@z7bm*MDYp;;l+p^;FSDAQbF?a+)Kv9pZlli!s{PtDIsBJ zUM{WTnS^2j`=9B-9rC30g3cyS?|)Xbww@k&9k!wHVMl_I1cA`qa+P{c!uVeK9Zo#1 zj2$oU%hNa)u9OE9Yx_zTy*7Bcj}h5NCz8q@o*;{(gS5BIR8 zsR#iCc^~>fYWK}Y*3<#qna@J!L+JhdY=tka3iq4UJ3nsFgH1sd`rI}>P zau+{s=pVD1OZo@&L!aLn*h$Uex4gZOfA~^~IOQtGYqmEY;Ug>G)BBDybUM3_pnBDN zmxm;z6z5o}!GSN&nRoTraj0%xDu6!w9$qU;9y}i zs$p=a#@~-bHC*w+E~o-5fW4ZY`OPN@g)h;Upw}T)(0aj~g4{yNlgVR{<=O}hq$V&vFUOXi9Min1lBU!6W6OStIa0-2r zM{&v{5m6dK*&zy-M+1hsv!KCf} zac;%5rV79HL)w@9sNsH7+-l2KQdol?R$Q{c@w4jj$xYwJ4SF&_Ci!TaO|P9BfoYx# zBTd;!82>b~>RsA8W$JQu6>YiDwKLJ? zHQC7kmiZoSnO2@x{~yDPvTLs2>rUdwpQx6WKWSqY~#}w@?DEKH=n6NuU z{h_ADl$wRfyZ2GDLm*`M2;!@un*0Mi#+WPjfMdvMvR|zYHn=Dy?z=)eySF6x#O=ph zyZ&;|g9xvnoS=6p&cmZZqRF&Mr4|v3V4fe?6nUACwpq%ZQgY8CfUM3(<3@Xw4vwt$uBUdMPIA7&=L5LVJ*9=?pWFW@K-Z^nIkJSrU#pPQ|fRNwnRB+ z{Ps<9vr~<1IH~`ED|ygI090;7`yr8P_AFnwX17rB+y#&zu zf;y^QDU_$ON|SM`>+$Wj-ZdgY1dtrEf|z~YfmD#~D;R>P6}~h%@YR1Iq%S$rt`FhhT!d&@@{MqpaKb%_34&YX^&x(x&uE`DcWHU>!&i>$e zd&wG}3+CUa-u--E^?eb{b8q4<9~gte><<^ctXEH5xmh%3@+!|^e3C!_ody#3zR3M; z`TG+NkBS{eAUO!OB||MhQY%HysT*K6P9n&4+DZcFB%fV?rMUlmdMA_K*bs-coPGE6DRcE)FC5Q6lkB+Piay4oLE-_p=N;~sQYzhi&ocrfH}vk0XPgl--keOcvly(%eHvX{+(jL$r<`%Zo*; zSC0~@RNzju@`a?Q+#Qp!Vo=LlV=cAhTK;uuoS;28TjrEFw?B=O9S6}QKby$Un7LY* zQ(?oB*FsaS_{`EmceyYRViS(v?+)qs!``;(O(ws;T!VJFChwx2p>z5kGjnz5VD4eC z5@TuqzNuCedsN)lPFI}{_MFmKXVv^q3BuTYYAQno?#O$mwWZ1*jjjDxl_0>>XHCjB zhd3GOY#EOVBrgA>I65-b7>F(={fpv?B`Q|rED)iF8(MdVf(9A1VkHV4BU58TIuJJq z!7GkEQGm2{YXcI|GBDRu&ZedU$*asP!;50q8Ou8tGaXwgW$=?O+w`~1hBtV|*W*P= z4%mNi#^i64W~vw3MD>n@7j|05lF3%;g8|Qvlav{HdY>%)KB{oXsVZj7Jh72Cy1LVn zd~|YCZXo$JPtZzSt7lLV+cRT!h<|kA<1$mh;2VAGy)0%n&36q>YYRc{ywu`v5;>K3 zA=C#yP3Mlh2e9gyyO&&*1PTbu0_p5I(6MGLQmBc zg*0gs1}=D2qcPVfJ$#=`&<`Srd7GKmvUE>{A!|ii+7+t11xj5B5Qw_%5|?#AT#@=H zIHN*(OM9#!& z3Mhx!#{{cRK;uwre^EpRT;Rck#Vs9uVy`=6h(U;}&eq_H ztfjdFp1B^`U?_yepMrvth;bb=G%Z5~1s5GU>t<=TXNyn~y zpfKQ&l4{cU5_sPx8Xej~f1ai!W-PdFp?8=8noiU*uvHsmyl(~Da&+5*pEw*jg0js> zuNJyS_t0+8w?_FFgb&x5b#AnE#IGO5B?%+ZDqei#KU+V|g*)@0EIrOWC)*^WX3?1x6vXL(`T3>A z$RS05W5HAs`Zu)qQoq@H<22NZ$0jIbqh&XFp|s==N4S4c!#V7xWS>jI##1LYqNdR*se>_w zlb=R^Ec%*Ki+7k-Iyv~_`DmVtrO%zR_u<6{NI+IsM!Y@=BM8db9d*&G{Fj|%+ACrk zP(jcbGOiUn{*1`_BMdjQUf1BXcPr1q7y)wX%K0y>@2I7BS_Za-(8L*FKZH*#D^_%t zo*w|zMAmOKlca9<0mU-ua|5AjX32%K=n^7EW&`a-_p;w>87BQXl^pWebx-hcc(5i< zhdi%z1dJ0PF(Qr?W)68a5Y%R&&i%T9!K8O=FZkr~y(r67!Ma}qEx3b^F#NscI?Y~vu1SS}_QGCP zS!=h_COg*O^MH@Jy>#j^NB|?URVeFn{mvnH(v7jMFIOw2TI1p~jLC*@)6QYIc!A60To=^&6~%HP3nB}j^*9?H%TE7&p5odzQg&6KG-hI8 zhbZp0F^~0cJ=0hq^*t2*i00IGpAP`2J1+4M(9H6=uRC60l2CXiwP0*=8OjA)+O}bp z{Fb|5+~DdR-XViGx|||iN(i0XQI!DvAm50krmttnd#gIf4sE+P+SpLsGfYl*#o2T* zy)e5oBt^|I>kg&7h~1=S>DH+D)aJ1~z}+aKH*%zR=-_BgI{iADvr^L_xh9O^wL?!*Xdyj}ULs zscJ#gG)1xT%Bi^FZa?9~m4G8hH~SNfNq(=o6>=*F#UjBwP|S}rk9Ioo&Q(ST#-( zSiwMZsH13B2OdfsA};wrfx}(9kxxfDe2~fJ(QHkLldqoUmCbhOqlD(wz;iBYK&{pJ zsA8A7&(`Y#^s1s0F~{U;7~7?%7>zGRvUOHdXK8BG0qPTRnlL3TVB=^*=0~dhkB%98 zGlGWBJ1H5as{Qi4sJ|ioWLz?K_vCaA#nG=PHoYEngLLoqe*Ewy{aT_D2@jutbK7ro zU7!x)s1n$tO>5%*<|mlibXF$f{ z9?kp{>Aaim-02G)717i@%yvBfT2aU z3O!!|isf6Rvba7!tiz^N$Qmj6;_pBUktiQ8c6;LiA13RDYT~4wNx>+E z)b?9q{AoNSXUel7)g5B?Oh=)^s8>F4oMhR&iaKUvGyko$nQf>)SdKTcarv$4viz=P zoe5qv;U2nK0z;bno`JH>sJ6JQ0C}tqpZ^&0^Mwi4()gSB>{{WHzI8@{0`Stb))8@5 z#rp>>^xay*cDEvg=32i81sacR3`z zNPhx?{eKP$DhM&ahwyK%$SQAP4Z9^?M_Hk)F;U4m9J=nX4pC572s{D!Y! zv=p9LO)ZnaD&Vp{Hi;&#&Ud+msRCDjz}4oMT-qjD_R+#S&;(OPmU}WlNJLg5BmBYH zoT0NW=Ie?58PGppboepHG9Yggn))p7sOphh|JMRi!Dt_UTCmQ{=F&vNhsJuGZR}^{ zlTgPZqQf!ZpL6^UpJ$)p1)i0gz};AoZhMX%B-JdUADvzrVMhLytyOTtOZu(h?M5II z?Dk^$_m`hST+|F}`wfibMh0n6)D`%N1)AIgk@vQC50$l|cv3%M>VtkP9{?X-EvYi) z^p|d(IN+1diQGGhbRbP*atyliV-5)iU&pGONn--9dc20+(T3b97u1a8V%@MsA9aiD zu!3gRHoKG*wV&riWIyK=i0Ve(--o;<51rwt?;P|olz4kQ+M;CJsI|;&^Y~S>jA8Hl z(@6)i`RhXt99Kn|p}4h&|=`J8>j8g2+o^EGoc-{iv<&#w9wZ^crm&o|5KABaXH z^s?${^+xLL@1uBTSx>{*R+*|T0{`h@!;8hZP%z-mK+i*hJap;(Zsn)R^Q;ezRMap6 zy?ck_t`^`r*nVg%>TohS^nnCf3sxDvN>5y4m$2WZ*;fDfmsVh2S&o_VqYas)G?vy} zBTd;9)wXq9{EvYS_3Fm;ZYIW{G>z+X4{v4AJh``y?{WK(PJP-wBg8~DC}qV~-|gq{ z4`=K}HgZ(mgI;tJ?(dfN?W(5UQz?^fCUY9_e#x`&s#)!+1T>`Oeyvx z(~sP44O#0)9)WXDNszDCC5g=CmA7RG4`xEtyd3KG>dR5A*ob(`j{eDpepajtNT!$q3CcNP&@sRq| zbokblNNVxj)Xvh>*7KQL*5r6vScb ztJqLt*jK1PGoZALC#i?)yyv})@k;nP?Ae*-lZ@$Ac{%y^PH&&_)cw6BajnLqHOKNS zxYAf0S6r)K!XetbUdpm9v{xUIC-OV+;E}-tl7d$HTfuYN*O&^cuY-EQs%|dv zw*g|i__XNAs%U-9#*47k0{J0`P*Um{`#zxE&@TAa z$;O42oOsG9sHY7pz$(0S{QK>-OoxT#9rCxWX`LM}W7`VFytQ}d1xQM0hEA54gGm=b z4xgb!i6V&Q7e|`VObAda!jluU+)jG3Oi6q+f{-xVDc?61E@a+Koro8GUD2 z>pyjr1p5eY9elECUk!|7JoG^>#!uv7E_q1t_aR*)l612mA!J%|AY(@<5b@m-@Vj5y z$LIPamAGkM#?;rC%_@O6o(N2f)t~Aq&y0Wr@Rx>2HAlx*~`uAwZgfa|CZJ^z7rGMr^0GZ7)+uLp9-CU%u^5qy5 zL6KG(zCIQBn%vX2e>kk!YlzccTJ?;Y``g8`w|@c}ibMe~yVSl+4vvjk!G-7{1Bf-n z@M*4~NjKyHZ=STM_9`B>IjS*OLLgj!aRtCJ+LxMRmd1}rIE*mv%%8_GNnzJWuD~Lh z7LM(5{YZf4DV3m z+%|Jb)0}qTGhGdiq;H}Bx}~%i(kmKZ3_sd_tX0a6CTVoA6#zLKN@_azO~8lcZ4i4+ z-#X9lS8u?iC*Yu$>g}~@DrR)|?AcmZxzPp}St0tt*S}{TOwSgrjk^?%!$K?fhn+Y! zGne4=W|QIjHG0f!WSHn2i`mM=hnNM}Hc0Vp`pp>p?sXu%#=zjYtZDv7A|0@4U zED{RQ4ClWo{F#Iu03G#kg^Qu!sYge;aT5+xOoM!vV<=CqCZisP+)A)64|l5)$%Qec zcJ(z>#RxW;?j}9>%EIlXlLtw@30OO5D7G6AFW!dJu$xr8TGXEczDVN6vxoSmllLF* z>HfV?Rb5NA;-Ts2nI+dHf!03TN@06G;CmnY_R>u#9`DC;W)>VJMn?q;rU7mJd-^$p ze$)0?ll#Y^N>)6+*AcaxH}0PbD*cS+mJkoG_uNg`8FDI;$9R!NZWbfaYGO*hM;-x@ zf271dY56?NqykE}CM4*ZRJnQmg$m5B#djXv`VsH3?w6Ofl}lTuxazodw2Pkp5I;W2 z@$hYI^3~iXCsro|9vQQbdKkUXHTatoYv_>P*!9#FZ@cL|3i@U{pa9Q2QKLCKxPIT; zeCDB58{2jF2cBA%x?F>__`@Hb&T?8(k(}$9Nvc|-)iOtTeapvq3RmK)cj%9OG~IQi zz}@Sd=_ccU5pd0|UmQbfs}novDix$DVuzgl+(79oNO(qnh}#8rI_2!WMji~zujNU2%LVWYZ z7iJ~Dq7!ZZ{y*s0SVM*-9r;`g{u@6e7UaXHi~Uv-2Y7I59jhy{rt(St-aJKnZ7D%t zORO!M15p~$4)wHHF#@wU*N41jvb<=WAJHui*coJN)rwhWSX7usIDml@^>rq1h&?!G z4J9EF;}AamZ(Dt1T;e;I-(;^)B#VATr^D-8wI|ELBo1+pt`uI8c9daQwb{XySPww&+=r*C^9&?`;oB z-+YT&1jb%3nZ@YoY9P=P2`#hIZd*XXsDm8Z_5PIXEzpfNA+ya!P|ly0opN%Xd3z+? zgLB-F(q^>px;S!m4<21oLnUN0cHrr&F^;DkUgqu%!d6gDlaw0;Z(>dp z*Q)OyYkY!x8#gI|2_(YaSB7G^>#9f&g6_tWRztbaV0%Mbh*_)whi3FW+(}cQ+|oO! zzuX-Znx}Q5XE8~*Hjf4?93=ROAkC!s$%1z7c4i~PI1>8o`b$l#y~Q7^V{xo6kK zXYGtg2GtK3ucMiTh>nMv1c9iIVx=#+Dx`a$xqT(J`%g8wg+%S||Jz_H6h+otjxhTB zp%^a(uK0u!==|$A@SH_NPIVOe=4kTrfT*(0;x~a^>_{GBx^KjT*LJV(-=j1+ByN;z z%2IE3hj6Jl{s%D4sHfU|3!=aeIUthK{XaioVC{ua45AzUkjWz0Lxtb*hX+7{NNh=u z9}SA}`!>h=cD1$VDno81B~DZ|OZ<+_rJ>kZ6oDaVW~aP#txzc<_NIExl&&T^s8Q2& zc~hT(T}an8JZI}*$Ej#1y8L)7S|nn>mPvr7W7L9t9WueZQ4R}Se;1h%`GS1B!ryvd zQ!la3nC|#Ac3n^>8EA03SlsQW3_1?aNibp;s-N>W z4TDOc&z^P1J@lTBqB(7EFd38(_D8a!eU|(O`SxF4mR1Tnn`alrx4|5{zEL>THt6H{ z07$K?D@C{oann*LWC;KM1X)0=tD?_D%Ek4m?w|S4>7wW}UB)DBPLI=(YX( z8HT=Mzq=GkP!&2hE45i~ECl&0`3eNk&}_ACzif@V*`OMm`L#)>5j<11##gZ`4zLpd zNpW^2+^OBsd&u96+lw9Ib)9ZCDn`6HmCcgbvDWRK?WXU<)AVgX7M;|hhglkApGPui zeC?Y^0rNcE*_shL{M4+Vy}@`{v8Bp5-b9e0^TFS|^vR?8Of4%?l z2}?I6`*Ah{yVzvnTIgLOqj;nv=dI0gRTndDJ>q%pO?Twg`N%{MaV8gV;+$6=)OOXq z^fGJj;ljW$qb)2EXe$R?G_eyvC$)9UBL@lhhv#(t+!m7d6{-x{yV=2n3_rwnzyUPvh`DvMm(*4AGH zH_ObHBiBhq9%lXmW6<~F*d&-b2`$>*O!_oeMxtBPn9p8IVx<~uCQF+^!o{oU)Y#oG zt!5TU>NAQe*5i~EA|TDTByYvg9zpE1bX+_oZw%l&;2KjF0jf5IlezYRZ@i^_a{jjQIN*jfNtsmF zKtAnfWhc?BvfdG^kG|Zns>`m+-CbpzN$Bp)bUrHmLh;l8!C}Qh{2`p zIjWjknPhA89?~J9XXzEz7)zMOft2ow)cd(|rc6aPSb_&&*%H>~BD;9PRgsv)e@WX7 zWNp`UFGBWr-ck!8>*yu-4ca)Dk@7yWt~$u^noBf1T#%awj_|*i4OjMY(0!YGl(^AoMG{1eABC8@EAl8D_goiEcnf#`;-wS(FnQGZkx^PpjB> z(v4va%8%=r;(=#o1@_Jlzgnp64Fj2YwvB_wk6CR11)lX`E2mUwq6Vw+Tm2NBj=YWs z=o!H98U32lNGaEPfK0JqtNoV4b)(dk)+)6LeNwPn`XK*VWq>WuG6qPJ&E;Mo5g73T zyPG$N?vuYK>I8~cBG^E4g;VUCYW|y3tYAO4qy9cvOEbU#Io$iuY@}p*>6xgXUUec$ z1ruDYA!v@}i=<`>-3UT)>H$m~fI*QAoGg!B+H-eTY_cRJ1Wo@6qlZS_SAW7Sgf1j( z-}d6EX+<~#L!AJltf73;dlaQ0)6*?@h$y0_4OD>lZ{q)B=vbhn0xT7rQBmV`P^ONl z4S$8kr1dtPNp7siE>AF3EBWDBC4Ks8fMbVP1X)}ah)0y$IvXLwRCV-Tmt;WuB`^^A zC4fm}A3%FF=waqo5kAK(pEExa!|NP3CTRpRkhe?(RuL929@Z#uK~^YfzVA_NOdpN= zO5U%bil4Rmsh;dOxF*dXx_fam@wmEy0mZmGS_5`fD*vce zQZRj64}SGI5YCJCYrnjFv^?m6KV8sX@0g!FbE>-6Lq%aIfc4Y-{N10&NF}7trgiX! z^oxzYs)*mwJ;Sq4ZrKLLo`Rr#O5?5Yk0||7JZC|V(t5o7oo6v~Ea%f7b;dD6`Bo!( z_b5;#jTULEmY!)#nPQ9f318k}{OwBVy(%*C}|Ij zK?5Y&$JLRhQ5*owbt;BC^ zHF$U$ndF(`~1Dq z$@XR5+LztG-VY*@`h*j4L5TPRYCHZ+mdxe@zGt1Mxys^GdYRW%hB_3u8dUV7LUwn` zWR_X5;a08++Z1&H9x0H43D(GJb$9N5I^f|DjA=O-{u=cSTaoDL_-F1m=ucF7lpT=oyZKY-fgPNgy`c@1eH@M$UwzB+{yGy4s(2Ya;A_sz?-}-d`@tbnr)S zv(!}Jf*33ZmOCkqfk+eVAWGxHuOlMjmm5g(BbYRn+k)Fd`_IF0J>6DhBuWAsvze*Ir#`7EIa`Q)EHH(`Qw$LP^!h{?Ic z$TrW1>n!QM*0!$Hov9F>QtM{f^F}&)CBNMA8a0h!L-Z&D2G z;@bD8I(8rJ-lU~mxb#DDTFf2p3zVc;oGp-cTsX!)X7GCw3UtBF-3Jz}!P$`1-$YWW zy-5fAPnV%Jgcr!|Q52SaeRYg{*yi}ymUf|O z%5^iI9Fg5-Ri}&iC@-Ls5KuFNm_$7{EUFWIGwU^!hyaM$k3M&jVA$2<*LnTxzXm-5 zq%AT}r7f3C)+uGz6!Y`t+MK4vC>1`J8Z4ZQJ4PBFv*WNcvev5rHy%{va`py=_5;pSdvN1I_S_&8?KERBR5f}rS( ztIkvivf)l}r}#epm6-&$==&W$8a2%@DrTqniTx|M-%d_Q$xF5J@fq%dXQIh*VP{LO zx2CB6JNQHw`gTk$e@vbz#(=6{hIUtAANkQ*+!^cxQf=8!0Nf|BL?U1qE#%g(^* z;oYT&_bTj&E8`Kngea|FML_uq3eI9r-gvo*mn+UTy9=*Ag8>B?GOcxwcnJ*w>2@@m z)2$L@>=eksDROy3K4lLW5ETNQ13?sa9%DqCBsS}jVRDdP=6z76+`?pvz&H%t zkQ2~}vq$U=QDUEz4s!)>Ftw$>LXxuK1IA$Z!8nVK`=?c1?St{x^r|11hL+i^gMtc^ zFDx{@8L50X^wcs=1XyH$i8fuOOkD=LUY!5582vSNAaH#>($D3%c?YI+Wd+!AUMSvt zS$P9uRDlGEW>~s!Zl5j~2pm2CO$Osp2g5eI)mCoRP0l<5-6H^O^znDU-%F(hY#-n{ zOURq12CeuJt)2bh$uGCh?GCN#K1Z;8ldK@bX8T}gN6d3y2B|L$yC%Sr!$ezlH#+wa zrzuFuqCe;Fz0{N@|TNd!WvdcS~#1Ed|k1dA^sMwq{8qHb?bc^1LR5@q9n6@sm z`_yyd=kRUyDJ}EDK7r@$c{AHqJM9{Rk%5XY-9srT`d5M@6#1Id@w?Gf7^ka`RLP$s z-kc-%;0sK@G1Q>_`6B9MAe!Z6w7Pk{=Bb+@3`Y0Zd58Z( zJV~H-E3<+ANS->}1#Vo6Xj=s0{_m3r4S3KF+VBnZI5JgXiTCCF17N|2IviVwMnSpq z8a2)(8k3Jb+ci4ZE02LTW7mJnEKxYb>68VcZv4rSXF~G(jb0d2L58(&0^P?APx7bW zCGy6ifAx`Io$W|qw;>J+8Ck!Xp%p-wP1*0(R+a6Z~6RVNF zB1uP%U~{v|*5RH+F<;?6h!lYh{G%(JOuKGi?yOa=4(l_NJ%(3{Mz-^vjysK=eC~7#FfV?-nUR1A({?`2HUTn z^~6LPu{?YUGY4OLE9rCsZ36nZTfXRLEkikjJax;rg60Ed6MkOKBxFRzfApWdZ}jvZ zu-`i@4S}B3KVFtHl0VV^=xvM-Y(?oc?dpeev$vjiDd^T29{Yh+omjs)s`;(*uDD}g z$TmnHFBKCO$a$sA*l{UIMSP6GNkL3QkgfsUI$da<5s`p{r&y9^gTmN84(@$^ikaJq z!gOtxKP4H7Ha?V+-K{)#Rebqx8~Laz`KDYGO|F9a>z%A*MX+o86d)9ws?Q3{UNkbI z5H%eGh!-(fsza)TtMf@j^DW9q|K)#SF(Cijj%Q*FhRm2Kc=KOR`_MXpJi2vd9a>(z z0aExqpcTbcx%Aga`cK77j)3awsuYXa6H_zpKR^wPRuY0bzut!t?~(x)jslYmtCnJ7 znmnl{OOYaLio-=wyfHoHW&bf0Sm@mCGOHjYa+H#08jFyz1XVRj7P8k^N+Uk|YbGS+ z;I~r@E-^o#P5co_;Pg~zOT_M%4)|+vC@{*GWnceJ8hJHXpOFHrUKFhmTA@CuUo}a}vR4OD>=$xw#`5IEZ(x^~83{rDTkx8;&a8{61Rc zbE~%3Stc5$Oyi`(!42}$)W5%NzT<>tl3n{R+B|x|hs*IHeU%p8%gCb?ov29<775yM z->M3gJFmE)*blpn+eas)v8Xh_4a$dH|aGSRQ|Z@8;09w zG|eRA3$Bf(ton!+`L|asdT=ZH3~8(FO{z%9&DQ=7r|EIhe3kCq@Mt&iRcyBX^G=;= zEEpxiEu|bVLafq5vg9Z6+AbtmiM6F@e6_>)*eo0+4|Nosn7&Oi|G7rBYcjk@o}*BF z0#CP9z7=ZGLeJ>+Dt8)&Cuj_^vr3F=eUU-9Tw+}GF2B?nR#x#yS>Nw3fg1P4=j~R`YmeAH+_)8k2>?Ux!pwOOu z7-YGIn4Vy?^R0Ly3g3HcQfH_ar*XN*Mpi?1w6?+6y;q!_kI?iu>CW8KE~k6)im$*B z&0&PwGm_l^^?0xkAOktFq*Qh}e%?3ul_yP&&%wqZr-AO*qdZ4QSsw>M+jF znfstDcn|C#(IpIk?&^8dYZvFJDvu%uy+9Iz_dtEnrUI<-d+E(o6KtpOk_U2?3h<7H zG$G5aNgB+ueuCV3U{I?8V(1p>G?3|~QAxcue+lBrEM>4|A>dSBVLzHS{NU(&(q0Zx zbNp9=f&33PpJw5=KYmkA!xV=d_orMPv4I_N<2>YME?ZZv&DK!>N!OM+2!p7Rv%gT{ zs;{hERZw%9D6YlGYilhB+=!#G!QSzn9=^KKJAK8&rjWa3!LjsYTP!$6FL5SYIBSG+ ze~zV2vZhAeSI=cwDzvE0JsWe*s4k$&YF>*N6E^}MD6}aC9{xObllqA5>bhxL`9SDRg{}Q%eBbpFNw$rI)emx3=z+@Z zOG{Fvy7Ex@{?REF_!}tJ-t)%v~Vbp4S6cBiU}`>`u2>lGyEj?;|5e6OoeGqeoS&UA+H94UFa#xj~4iy zh2IU=-s61;SU%M2;{~tpiV_L!fL$-g~eS=njHsv!Q2c$I{8)2|IPD*w5gcUAC zsn0fR_rvA@K%u?ma`{agtbnm^X{s3{lQW+fKiqfj+U~;CozigGzZ+Nc9OpW_pT!Sb z6@U~_(uoqErZ3w}WLHku?6_|}Tfq2-p5ae*;0FlL>gTMRQ0ID&9~<>`Y-Y~P=ga}H zK=YyM=7Hhk-U|bS3;KktotGPR!@5eR5oV3k=&K_O<_kE@vod~(E8GQUyX3yz@z>q| zF(iirp>a~;<>1fRjl0?&-hutQpEk=G+}^6T!yQ?nE1+kP@YklU zdw)eN_v$0~3&ma0TgCvt4+ZPqL zuQOt0gQEc%VDI27%^)W#D@F-m;0fSGr1G9hENTCL^Ta{qi6kjX7^Jlm1azTE4<@iu zS4$Bp`tCr^vzJ58`hBwT&B^yd-czA&?GWa@&%5+mS+nr$Cv+bIiCQLgy${KijcZbB z)2-p|Nh+$o_wMZYkXsW}jURo9w1KiPfj@UFGqRP&vinT#qi@M;IQ`p61D1VjVuB5^ zLS7dw!9eO!)x7c=dA1^5QrsS%F|D_=llJu`nnou&_ZkZwerStC|C_7EGk+KOG%IM9 zOko7_woY>={t%HUWmViqHS95PByp^Kxo-Uifh_I-@S!EPMb7z~w*`5d{$u#%muE|E zH9AgS$mEF)XrTA58#T%xDFN>GlnvvouQpuwdw+HB?o$a2PW0s3=6hT1uRiS7Vq~*s zu4AAnlEy|CXIM`u|~dtt*oup9H_4XT0@(>4!z)-k&-PzwRIw8ce4Uq91_++TZ%2;aop>2TB4=) z5YdL9Pcs5NN+lDxp3d6;E=5~In;_nYHYCw9)49)GeEa}@W3 z86A|x4fPBwZ2J*AE^9z4>MyA?Q#uoYY(`~E@U_S)zMAqMG*}>ae7OQ{L3c7>2jPJ;kn~l( zim^gL=cutwSMj9I`{_p4d#Fxch0fJ&SM)yd8y?6AR=erKq&%rUXf;Ry(!< zd{`DP%krTVJ&VUYvmr+rLDkWfV5!Yf9Pw5MO~;fw`<@H4K{6EhU!NpU{YY2UyyioC zT_i%|W-XTQzRt~sX1DJPr;&M9B&&Iz%4?$d?vL${kJp~ND$*41u5+hwHOS>|tTSc5 z6}Vln>29>2LKGr-D*jVP>OFaE+VTIq!x*1L1H5NHB^NvkDjND=)Q|PBdau~u#o)%4 z8!qTC8@H@v@p~d%c!?0iu>~iMIB^cNH+0B`*w)QA>hV&a)0GAY$H{Aq#+J>a0;Zxj z?ajDhWJDArF{Pc9=1z4UuF1D*TGAeq8Q|589()BUKL0oNQ%~DqWE!~7`gU0q;%#Ko z^{u2E#)YWauk3u2x``gvleF;i>=$h@^UFSFZu_m}mx-j6DtgJ*@cY2eZWY=11t>gnd_9ba9DIOd%JiA+x zLyZVBeB%gANxkEL{)|P{0xyrgQm*E0;I9yFPg7%ogHc4rsdM-BnS?ikLEW7_-J^cv zA9ERTf<<*BnP{v)F3Q5X(HFRmG)j22XVNFG6pNr;ZSxyRA0Id^2dUxnNEa=qv0}~%4 zJ9ktDUhXZsy>wih_AsMV*bSWH{U)FScy*7&*)f9t$w~}Be{Hth-H+j~`tUyCuTr3F zpyDHE%c2f zuJ;jWfGyAy{|2Pp5MWVHj*gC2kYD{+bZ}_FP$<@wFd}yyz3=eM#ff=0Oo%kwT3ilP zapYDYb;EN;9$?1&eZ@2kT!s6dmNIFBH}h8Iz|&m7T4}W6l6Y}%M)`2kJp)Ajtm%G2 zCB>_(mP9QL4xQ?}n1Bm8;JE*Ki~?D<=UZA87*Bpl$WBJpgT%ta50_GqH->;k6s}(x)QgWH4)^$q^^DmiOa6Uy5KlTDgA#US^Ur zcbvF!Ra6x=24}qO68Bk)D`28x2n^gagE$aFiLO5WC;NGpZ`%aRd+r)@t(l|gFT zUN-L0pV{c<%NxgD`ZHlT>BJY~VSb|3^((G6>JlwPXTToLj58u+NU{t(awxT)3J~ts zvA^(f-+3o3S3~b%XbV_x{_C$51>oD4Vcoky$qDqiez1NW#1&RNymFNzbMqE=X^Nia zH37-I=(7cKo#~KF0}}bS6IkpafAdbuaB)%p-wO@_-%9QE@HZ#W_Ay9h?s|BF&qVCe zYKtmj7=9pBRQjaHGIltQIYqG9-NC_c71Ju=?9Kat!~4pTs^{W|-2HZb0;u9w2g^QN z1{827H4D&7L8hjguWo}?U;9Xy1H4YFPRX3CI1W=&h*xwse4dO?gO3KUITzsi9{RLH zFBCvcP16J9y+xi!7PV^NQbCIW_qe3Ar`|z{Bs%I)pzuP|OP-}Cjt7HG$)&JAkaV3C zt7ItM)SwJg*Fo?OrM%9+dQMA?|8eLnt#QK`hNDT5ts7LbG+hm3bW<6(eRV+J#eq?q z@@JeoU-Q$B1mx-G`k!rc1gJDGt?G>eyz(1vY6mJI1Eh&iDnb5x!87|Skvzo-5HDZV zPtW)TARaE#)!9ErNK$M-jY!cXFmiBbZ%NxFk_IYC4V(xdozw`TR|LpPDW7|2O^S-=Z&sWO)n+l=lp01gty|mp}Cplt{ zu34E)&2Yz*kgbWF+19Uj{ry-9x9iE5Ga5LK10k?*=gs{r3}4K;Fm0oU*`wz0!t>_Z z+)o|NIafm=;WIN^$qHn3+oyuYAFTqTG1?}r$1*A7gw_I%HVJpX zaDNyM0D@_aNdmcl6>t!C@9NjbvLxPIMZVmw(=`?k?R0qBU!*3?%kZF*m?IKW84!5a zyW`Kkm(Wq4G<;~@Z}x!k*}ElJ{r9~%IHfjio!sZ<%u~-k@d}S?iJXHXRU~o=7QpAK zTJ^W?k6Az}PxMKB-9Vah=vlzsx*hEPBpsDhpeb#l99w9Mz@0&Yh}2j}s#povK;KNJ zjLBWq)_v3ys>AE)bsLv^JUS&`eALJUn1{fN@G#3eJpEHNt|Pf!+XQ2~?o@cze-v%& zVv3s@!Dfc=FuR7EU?1ALD!-raKc127?G!_nwmfrb${G{ma6<0tSEoNKa!@$G8UzjoP`e+R z1bJo}iPl#q+n^?-1nxyJFO$#6VuP-7zkR|RsPlOTZ_1qv)GSH@#|T>Tu~T7HI_~M1 zFK%hzvmvTu80Z>LgKQ6Uv>H~8E=LQn-0AgpW8IJYi&wbjC(N~LC7zgilI2IAQ8-$; z8?!Qki^2hmiFRFR46TR^kNw$(#74H`U0&Z^q2a2ofonezv?}*=<|LlNdx9CS5#V6P>ENsRnaU-R3fY-1zu3szl>JDDt2*Q8~-ar&NDIvLJyrDiZ~W^*KfLZ%8P3Ni8$cy9p~S^h9}%?~AfjLf&Q)2-K`H-fuAQb3hw8JWc>Uyj_YBY{?3G)<0K2pU(q@hA zSKeQeoSHwDldS(W9ThpC@N+k!wz0JC%sJmAmE9JR3BP<+?s%hhz9%*BOu#Ban@$FcTixTg;<6>?k?A@Iyl>OB{@# zKHrIV6!7hF)fdt{J*?|*e8IJD zwy%om0ytTCkmoKU)kA615lR=vr4Drn;B1|9?0bT!y2^Yp&ze1RC)nrfk&UO-t3hv> zNf&cM4>s~4ci+ytmQEN@eP}ESV|ZWE*@z&Tv24tD4bpUe@4X@Qqx^FIyj^nfO6A74 zW={RGXe-=#`?cQ5k8(#8C2Bkr8jOkgJ)=av4&Z9;zPFpdGWC1rneTVt2EtL0USX#A zgCc>Q89dnVStgtiO=S;~s9PPJ_JRK-P&*WzY$im%T5mQ1cYVvm%QL$+h8}gCMG~mZ z=)l25r5AR~B{=^f1-p|DngTJia6K9;L@Av1`F|8u2QgX~${J-luyV@hgIgGykSF%e z7i}nhWhENzG$K9{id}At;D+@*KgiA|2gDt&_LHG8ie|I6;q!mDkoT*!3)E693-S`3 z`<1Up(S>fL_7h-GKfS3tf3NSQnVB~eNG{%)h(S)hv}cE8Q^=sJ(@#kSVn(-K)dVEa z`NF9F;ydO+Z1j?gPfd!MqhDl^EF{x|Gqh@qpujmkbHJ}`rfiv1O`#?0&2;%`nd&Cc zz`=U3LOTw>hk4FcG-mS0!+))OYaPZ+`3OAy^}GOK$fJFpdH8SryC!==`o~50x2Szi z*_&DKg_8k<#}YZSp(6b+`{6*>X+aS=)nzCmg2#<(VXR?iiXtRd?qnXg%|Tcp=H*{5 zWq-@5W@yHCSFL|ae%*mqiW?FpY5BMYD>wDLkd$n7??FY&w3_7iIG0mS-HtdfO24Yi ze!+&ahdF)D$-*tE<;Z7-;NlRcmjWV~M<+5I9inBj;;pqSJID}q`&MT>ITJn33ilZ( zDvH@P)R2W3IQ^iHbLg%RFzy$Ow?@F;mX*Zb-%KyD8zA!S@5S&9)g^|Bd@*b}?juOR zgY2Agk+QFKs_r4OHmE-_yvw>QUn-0t{{d&kNiEVpq;YkJre*l1KlmGV4IuwKs8@6G zy$0sdey30Vk3tkfFJX3|u1)4hHp?$HvI`&EiA4WLu?8LSZ4WunC}07Hw%ABEc5BPa>a^jjG(f7+~0 zLm4Gz!nN#GWwxIe*tYq@$*)Sr@)@MO%9{IYuH$>IdiN4y?vVB z`aTL|3}insxf{NvWUc7AXll^^+u7zFxP_EU>K0<u(BuJ7s;%+CH66E_Lbp zKu=v$MI9~UioHxtf?@h2&RX<}S2m8f9V4cKy8?A~oHPn%%=W)qEVL4T4m*!sDnHtv z3Jt~hVQhdEDAN6iN0sEQ08CJXPyJr)0zoTPGTlEP_G9ssSv7kyxxXgdvpDX#E3u%z z!+ro#+05~z?J`5sYbD+mbf z$Nwl6>OY0O;j*!hT?Bpe%6~Oi%A)gk`M#`s!N$E&)O~)S3{SkJOjZh%iZY91!|Tq zGXm_%vW{Nca=$~R*z|NXdkjqaK+1+Seo8K>!bDv1_i9v15sB?W*-p=QDFo=LCctf? z&vU%GQesyXU3_KV7}We)vEW}*MNCzNl<#3T? z`qi66(sW)0ZvbdkP7829%!#dT$z^9RekLnYt@HWYjVW0j9H@F{WY#^$q{s-6$I<_= zpOPi@`*#QBA%k;^tQun%3v2VjVw#wrzSzuC>f7_Wxa@N3Tp59XH19ngE0Ym@AJ`<+ zwAB?#Iw`-)wG=sEL1?Eb8*KEK#u3m0=I`}+%X?b)CoXL~$w497-5y(u-*zJgCNVJA z{dyZ$|1V7Ks;FKY4wgVsGl}X96{;GSH_veBTN&mCS|#*LeiU_C7G5BZxrL~AN1Dio z`|zbZ>wXT(w=1bd#PR=@ADss!bE&QP79xig8YGuif}8t1^ck+e8@pGAKbzD)U-99VjI(x~U61(jz+Oa0dkak8#0-*>sGVp) zhzzWKhEay-s}hVND4uP2MZ^0gqvi_oUah}X*h<^5JQ^ss*-D%L)tv=@|0nSTCunTY zJP*sPBuYXk>l(WK3TVkWGF|v7MT>F|n+(`hqCke3lB$WrV|0{nk4m z2*w>{R^a*PskI}Q3agU^_o&{UnBq8!giwwGH($l&C6&lza9rQ`_^#umr|Uu1SC1(yIeUa#s##;w2&AJVt0HSZhuQ*pZ6IBy4!-v+`#N!LAx&hPG3@4v zb;~Pm>|TN_XH;m+OV>deDiul-$gxnqCqs&(6x>&8Iy0pci75OY;y@})$YhT1Ddh&d|(Q4Pl zv}LLyqCDdC!?{w`GiZ3YU?$$y(9sJ0Z4^hK3%%|4>(!i#`%emXct~tLzy@2BF1zV# z?f2CS;C^k5nU$r+Nz;VeFpa#2e`z_1(OCKCQa-^2HW( zEJ!r~m;SDIcjYk~ooFTfJpx`%CyVJl@{b`TzXj}& zQ_%CzlfU&ca~=mOlOJFNE0jI*@_P)@p;?YRghr?_fm}Fa01<>5HuI`0m4gzrR%KCS^gB31I!~xp*MR`o6tB@am=;$C48^4B8DY(?MfV790~B?o%1Hrz>(vTL}mZwRwhR zijIgBQ%`O^jGrVcOxMaUGs)2wp@+7fh4^mzjyHM;SaBezB^=}8AlK*Bt&cmV3^ib! zMy@%IZ950#6mhB{WTVDXY*$H@JagF3{m6lg@HH{haEKvzI0#~gjKmy`-9DEwm)oy2 zhg+nIPyC4TV6QuaxdaF@uPotwjU&$1V?L*~^iiH4PlobH3JJFS3Euj=^3|-s>Ol*a zA4QUZQN_={Cn08zV^T(^7FM{6Cfrk7TY7L@UZH;c%)$bZ4?`{VAI0`|Sn1qXK7!c5 z-;NSsLCk^boBmK;io298YWgc6wHOZQvG~OfuIu28kWuc%yj69M@)vOq!*(yr*8%Pp z950C;jUSt_ z<;Non)Ku(2g1=MQ@)%%iU3vO3m)r4pqOaZ-VNq!*$g99}u>(o}L=;LRXY>O}ybXdp zF-HW&(`Faceep_}FLoCW6ALXVx64?6I-17DMUPQflJ?`5sSMegN$Cemnnfd>vu&Fu zuAchR2~H9{tJbM{-~F$_i;dD|+zlH*UV$glGZK1V*8(i+6ynUQ7(*M#|jy3H&wWIrvbxIjZUZKXE>^Yi3QUj$O!%Abb6l27zv1+nH{tPbH?FKxgE3Gk2eh=U{ zB&aeAxsV%pw$7ZGq09wcBk?Pqn&c-_W-2~>S)``kDz3-wMTC^2n>7|#j6Uq&49qM1 z0+dLdJ2(ZVEM2J|pU2WQVhh+E{1p%!oFuip%>7oB61g+cI5*^QAp6H~ErO?sxmZ`-gN1%=rv;E%?2 z$k`|=9^I`pv#gLfUxnQEvB~E)(w4Q2-4x5z=-WA|y;mA90CfqcT#O`s^}{HS@w}0WasDbeqODX9f!fjT=2++P@xa`LrUO@hK)+KEZ}!jm zerE_JIOkOtWj!vN^?7FB&Hdw(LBYO0qTzst1$6C&&NMDE=@Ig5S(ZfdcC^`On4UfL z6Tq`|{Wd+mXj19rK6CpjQW8`ha5tn^IquIkt94hb9KVFSPR&fU|7*z+-aGQIoH>{l zn#i$ovE>bO#Wan$=&5eN)Q_Uxf*7+(Ks56?IhHvsY92M!AX4P+Jaog zM}7~$aLlR47q2ZB@!MVfjrk3>MyIZaDRH<5v#D!Qs|HutvcnS02>T-$0JyV})T(oE z#cXpYIX1sLw=IEkqNi{eu2+?}nQ46PVi~9SZ}V-pw+w+&x+7F0m|y%lyAA+-F*_;i z7fiCOl8pAFv^RDxBEQqwUp<-wWpqSOl-phGh|8k^j($8i+*K;1b@ONvT+&d<0SO+w9Ib@5No0>uTI| zv;kE|3(EwgaQ~og?)iE@oJ*#FwNYmAR{C_EcPk&ObAiKN=hxmc6Q)OmTt0=k)B&1oC#Jm#^f)0ks@4x)fQx0QKWxZYnhVs~w4h=0s;g}0_pOoxBi?9Kp74wneU}? zo#uai`gv|wJo-gYT&4Z`nVUpuEpS?Xj=3*!Xm9UVJNAbpOSK=|#g!s<0vP(juU#xN zEYLdl)El=i#W|7>X9?&K{q%aFSi*>Slo#Uv`W^f@qD)^C7ixz!);XaHa8 zf12=DzH%mc^UTFuQ6dozdd}E(yS{m6@5~K7x0xbwm7?SO;a5AH54+s}cuQ8ba&x7R z!H9*;X?3}-iI`_&dee_MB~NRvL})#qr*Y?A!Z5-r`KLKbh4D|gNsD{ggo6R)&c(}< zM$5OUSE}!8EXQqdY{@(L`C;)??oEPqZFPW;oi8tsNRUQ^jsJp^Vfkay_;T`d>Z*?K zob~3Pbzb^5a)%Fb6#fEvZp)dIu|-g@_q$&`>Rpl#!WL->uvct2o+fHny`e5^L>Mr3 zn$l}S14IA`HI;#xVp&(J;K+-kw*^jkzO+A-#JYe-QP!+M6gZiwE9C>xzhi&Q`v!}O z_%MZ=iOCU7pTa!2k+dFwkSLCvAfpe_Htado9REVJmyZaKU&i1g)zX$aP*)MBgIA0s z6mhTur*pEKbLJJ z68Pbde-Cgv#%a715;MX&xXtnwapjrs&DEW{(U>K5d(DV;7xqI25?jXclm% zRK|;qs5<$4F26>$irHp4bhaX=UhLM>)ZlG}^&E~aW4pA1Q#Vb{-%{zv{}6h=IJ{AC zwP^vQD`Oa?ecF-jy0O0eQnDNyO2mOUe6iSrNhYI3$3xHqFyf9`{D@wXnzKK1udBMH zbKu#inyt?K1l^zVXpra_+rvmXq5XY|i#Hd+S+~Kg?}(Wl)aEpDnZ*6G9#xG8l#PXx z`_uF3y??(rWsSYxBT#4^o`DLnA5a~vOTp~*{#w&SbrV)GRX75)@nelf#yb?z65)$S{&@VdEM^0 z8yLYJcl3H|19|n7XBPnqD3}=;0eF`>#YX#t``+Dskpuj-3ynQE~cnSvZ?Io*ShI& zIC<~v1+!8}p25Y#%U;)Q9uFJd2kPS7F!>TpBBi=vdNIx>s<&c)VMqviz#28F+peqe zg9xjM+KpTGbPUn8KJdm&J?_^P-}qKFK0SRm_p;xiOxFxJ;8M4uJ=?B1H%vgeYAV+S zB_JO=<|c>t#~PU4=%>yu>EOvwH?E`SZ#Iy7{_pdwn44y`(vGLXf4u9!U)wkiQWqPa z%?YzdJL7HhZ^OWXU)s}X*^W0ei4E4_bMR6EmUfXOd%F^?C&Dt7-{&XtT54wqG~{~g zoUN1oC?vu`xJJx|Fp1P?yd0_n1%7|BvcAthi<07M=G6pipUD6U(Df|)p;w*r9w&10sgI# zI88ZxffMXzW@Kz|`@28xkN)2S_XGZ!J62qmF)xXw^(27oVCtKp*__Cf0}dgj8duuv zZeJUPR8C8@)J8t^nDui|IvjI17)k1D{!uAIjC^p5`lrETLPzW|i^aRwBUKYnPFYpG z#6lHJHCsTPp!nL8k*{FLxZsLRPPiokEes0q@L3A;X zdxoo?bT*;cO*QV5uA!c#ax$(XkK^q+bmsi16~e2QA6om;SqQ%>j6}dajN95;zd#la z)Y<4gsedr`0hqLIH%CQL^-UaK`_m%c_C##Y_|N%xwZ3fy<;y!?&6Sw#^gcwz#8%yN z{kAAvYql4602_B_k+h1eptt@|-l7z5_n1(G7faa6v8e0)g({D-Zz);Kew~z3YXEEs z=daw8O1qH`_*W6Q>pWVRGyKVWsimvu?&^07qoY@J21zVu>)Jg3BA0!#nS`G8M?>=r zwR+Srdl0HhX$%k~D_5|Laag`WY=!EvY~&R7lj9wI6r#o+FG{WMT;BH!3&Y+eJ?WmO z>Sk_xmzkeo_NOV?2y7L4X9a}|951J|OJjuuvgtqmgj~MwpJwIRrui(brTtAgweU54 z<-N=&TgX!CL@RjIpV30*Ttr?wO-|nDm}YRg+PZg2aP#WP+3y()XE3OpTCAg|yYJ|d zGrDj&gJWo6L`ZKEz0)v>xyeBDuEI9(JzLwVroU=MmYPpoX>_HTuT2g7rW z8FA#?7GV~iDQe_%KARwJojcJa#K^aP2f`jB!=mgRt9iOcvj*No1x~V`u5sGP3Mqy* zQZHVRDHy7f%B@$1C^NM?Cy_D|Oq@vet z4JcP6&)1mTB+fS49UuGntqqhTF$bGjp>x7GFNk#J+{FX^ePNHVe4Ivsz3y3kI19Ho8`Mv`-PqJ+Ns2n*$ddxf z6Dy749g8}&xE!T<3FSb8%gu%35y2?Z?({FdJyA3?bD4JvJ?gPfqdXeEan4i~D4>hT7W46f9BskCAxJ97x(I|-!$ zJK;mUE}ugWduPY;y46)TFZNWC?BoQ0NwRIb+O&&JXVrfc>E?&Uiu*n5Qwjy|Tdt9o z)m-=rBwFpfiCSH1WY{f8*Ua;^xv%6B2Rg<|-;xE#;rOzKNYrSc2?jhQ@JPZj{IG#a zOz=tHGDW#r_s`;1?LeVS8Y}oB(+9yvYP{b^6BrE~1%Ez4?8OgPhwnyC-WKI8n1d4} zF?+-Uhz`8`&2o(9qy4n5^(4G31#VsT9fg{?sDxcQYr;tn#U+s!3jz zqYlWygIhPoB=0c=fp9o6j278{Od^-VO5Ug&j9Aa}e~b3~b1(wwGs!nhuTD61BTk*NYi3I;0hC^W{YjL9dB-$rmjUZDRJO2*Xrd`<1?w9>3%c$cA)6vUvwj^PkO$Fci?-#O8BC8kb@$ zAbv}BaFr4LsXu?cpC9hoie>V@g2Ik~j`Hj(yAL;^}d5=>a+j~VYf;&rD#mz^w5ANRjMweL}h!0b)YnWpb|-F)&fCoDkC zwZTKiBpqI7rs+k|Vh0-SofaRSA%@Xe=z;rBMv~s4EX|#;NE1zmky&&2dFgk2g4|)~ zKCE7_{}^*Jn8}IKF{&yaJ{&c?PHfctPTxk*)ezkcr%f^TnSK?nimBZLCHNSN}SI&Lza7oT|%3 zDm6_k3(*Fq|2lQ$KJ4eR?d$+uUpt#dzBFKP;H*J8Qd!xD=AnR(pi9zMx*Iwdr6=nFR%{TJxfTH;p>38IfLWF;lh*X{{b7;n+7C{AbY#>3S? zO7)$^9zM|C`MOcv9*){7h$TcVD%!)6Y+Fm`+1Ii<@b;dTR)F1Qvto@p*Q@Q(D_cyGsaYgg|T z1(zzD*{I^HT%%dT69~S zo=Sb#V13;Cix@6e_MH4;KJjiRyoM0EV#XWIe)gyDzDefi+K0(IV+Slh=}a~VM_-N% zOsbJ51KB@C@UfDTBugjdPss?jX;kAx+a?CrCNy`!mD7*KoQZQ}F0C`-}vb%U$3aSk`f z(OHSZR9w;PoCenp#JrCOSSG1?KOHuokRz_x;eD-KN1?AW66K)fSaF@yZ;lPC1NyTz zs6qfVrW}qJ?(k6Yq3(xWOPx(G%~ptcpvpav6(p`rFpVx|k$Sj673kBqZ9k0Kh1e=^ z-RcibJX@g(M;@f?SN;nh@DiJPLZw65@g-jFVf|4MnoGvE_#w7|KKxMzq+@3BD00-P zaV~%Co;#HyO9qU-4azHX7h^8poBu-&5f-so2qo|tZO^;2*X)yj%7FI(bq@!~6h;LN zdE7%E31AP0;8hX~G_P;G8#Pi%iQ2qe%r{7M*UhW|jutQ&=2)7m+j=D{I~z&!ZhSUS z7FuYXTDLYaFL9Us$tMtP@!`OnBEOlP+8VbIfAfV#Fp;ehXxY;+`cO`k;6gp0T~A)7-2HSX=9}V;%y&eN`<<;#BAu z|M+$(xhO>?Ec=M*UfLXE1|j;Jrp0_dxTK=bP`>W(PC>G{flS?DGL4S^xiaMQQ2F*+ zxJ=RT?CUIux{B5Zw>jWyA{_{8e5mUDIPZmKsDLI`yT={IF7RkF2z3jp7A%S}MD|0* zujgq?=m+;}Ry~ceX(U21=6Pzpzxr;^?7w}QqGa|-qw`LBnHldzZrj1w11Q*yH?Zwj zln3`;cj?a9$gi^2V0K%?#%-^0inhq54cZIr9esV8Uy{F|4k2F~IRf7=6IuHjSgLmFMQ1>2 z1K{KJ(HvJxlSjjVK=ljVApTiQ6CzveI|8Vbpmn0_NX^2DAy+AqjxG1VFTZUMO>6z~ zA57e_;c+-fw=YYQUue%}^3yU*tyeqwDf>Z)q)Js5`(ifsD#-nGK_~M_QnL|Jq`K zS@-s-szA*I&SWrxeBMAfv2T+Js~^NXv7X0EBGvb1bMD1e~^FjG3S3TX09r z`yoh_-kx1lf2m5WOrz$LnSDO%r~D$%QWZb8dB1dI-@h-$TUi3THtO^x0OpK)Fd|F& z(B1Hc0BxsA*lU^U>Y9vU4(<=J!V@)y8|7#7o>Lh?9X*-+DZH8WoBfR|pBoc@Laq@r zY8|Z^MWexP;(<=se{qln=XySX-xtDu3X9R)zwD_0+d`it^5|XN!PB@{UHCU0M^%rSjqpd4+@dDbOTmC^YLbosv0mKz_5EukgQ$Ui z#w9V;4|Y~BK>(Lww|)6=4IX*{5>PjYMfb$-L;9+X+ru96bR3PBm2(=_8Ag-(adJ9d zdR>mR(eAg3g)NQ-ra42yAf~k85D~K`_0h&TPrbUgt4^ttr?I7f6o|X@(iPYDVwzOa z0@3mn9zhXd9)GY#+QFG!UQgNXynw*7MCRe|?;A`s~LQXXX1#QK4-9Oz^~6{^=C&Rf1clIT$n zUV32$|Nk5w#YlrgQlq2!M2?5+>`5IC$opxvw@c=7a{7)Ry3jK0ZuZ=Gn^bQhvZUup zYve(ED%nVE3pyNKSlSC7mzF1XUJ9UE6E1Z7_0ceuE8t##Hhi{8EvILoU-9P zyU@yiXDe(E|1jAdhaXOwsLM)Wher#fz=|9!uh(XlR5AW@j$*o++=#VxFGssHzk_cc zi_Oc_{G?2g%JG<8WC^sAkS^!!uEk#upqeOwNdu#mk&BG#-s=wYCBK+v*RPg2zj}G9 zOO)cfKmCDkV{2fSCkP_L2VwxAxu3Gg7IoLgd?xrMlzOu%s*Pvv#X#&$s*?%B7waZ3 zl_+!CLhZ4(C5rOLW5QS)-FrH7L3O_`US9k7k2GWbWQ)^&e^9zNpuF9Sn9zaF<{NbV z0F=1=sW=asTa+AoaTUCUe|)w&`kp=4x1RpXzTl#8O>Aop;Yauhp?BE3l!j zXfvUND<=ob!ov$t8(Tiy@%`ETC42v$ncYCKkwI}E-+vTbfRv_IlvI4X=4%X{bg7&7 zf&ok8Yui^ZeW(NhA2S`1w~7ch-MhR`XVnn#l6eycvvg#M=*?AU`Xman@DL4nMUL0G zGIz0)BUhG)=kBzs0Hw~~-d_Vk%WbOlcb%wN*`oV$0Qj3O1=CIEv){9q3qP+9%y<4C z&@B76;}ndn695gp=*x)XSfKm|4`Rx@T;o}I18T)pZ63sHp<%gmQeJZrV9fDyUV9{VK{kGXa4p2 z!5x)`Ly{?I5Kd$WO(qa-$#VlgKaz34A9y1Vd9~xr^$X8ds$W>nerPky8llISR-pGv zt(T(y=w`%&XR6EjC`{VgZFo=`Q=jd{E)nYf6-*3gpQ4F!^h=ERgm%xU^eoj^r;2%L z74zmmZv!i9s*eF-C|B2O$OWga{HD?hb8=+?AA7I=v7(AT8d3E`1>so33Ntyfgw$QR z>P{xYqTu#y=qak6qhR0WTBEuba2s0)uG@@rlqhc>7O%Y}aw3;hYC0>-R!@%S>OgvP zqSJ!b46fRoko~Id4X?2G5ICWxdw!aSw^18ZnrP8>b zIy%9M=&KN|Ni*Tc_XP}}zT16!kgsacvqeo5CklNKevRr`D`+>Y;2po!rgO`5E*fQbPv$EQK?) z#kD^NdGa>*X(+wj^5bfB+)dS#&^E3x9BYi}Aav2h;A9m54H`bkD5nVm3wsxzIe7-9 z0eB{^Q)^3$X4Mp$9xqcP^tq{1%5YeWsljRg)XV*`te;vPB8r?ve@TDAWzdbV=oMxy zg{#EAlGqT7q*Mr;U*hkTW!kE=D3Dz)GHNG2?3&g%p&w0UYtLMxtXA-`-|Pq_EAI>_ zpm}RPj==F>4#q%6yzfFYHRXaa%GPl=NzYSnKQY;b^j%os!lUuxx_+XDn+SyeB#&ls zPMpbhvh!Pq+J83w*Z(fheO%E928XpVIPXB**geyiOyIyHl5!)@(L|3&F#<2obgp6m z4J2L07K~StK7!g?jc@%{b5>lDM_Gv}jNTDyv6iKGZr?Sd5$!&{!3Rp}$530SHh$2_ z4s(2nqlE~t3Kn9X{T*n(t#<@-rS+@J9jkN~HTD?31hre_Xm4$`7HMnthpp!}COzSdU0$P)_55%2ndMCLtcHOTXskG((is@>@y3oPL!E%o z0c35iB?&V4NKSaYP(BcnO0y~!+E_sGDDKcNrq!w9wGU@jhRr@yQ<>wiP2Y#W!kGm6 z#iazgSTmOr$PC>$!C#pZkc{9G<1G!7x9#wVk$c}td~Cgp*n_?h%H}gMe<$4&-5ENZ z-*+6fqBuwl?0WLHXU(jFm?;f9+mJGxk=nDG@<3}WkRDH*l27Ai!NLV>5^IDCZF`r6c&hMQB(SXR_6m=k2^@GN&lp}A@ z?N5LxWWY7FpFovKIW7=)C)-Z}{QZO9M z$08#(7JG{#}Jqz2M8FbZEd z%P%a?W}{D0|gC zno=P@R^jF{)IfOMjPCYiF1kG5b_X zjPJD`+`qrRnx$uk90tKzLdno(yZ{0SsCcU}o@QZvrzG~JhrkW>2Ft+YjMDzYiQS!3 z*RxKEwD~KA{cUS=W#z+p9Qu$ypQHgep+6U}{R*cmo&q)3_fB2BdvF}@ z{AqgEW)pjun>e)8dvHoUwpKa;iF7L}EndbnT`T$1zG|qQWR`Jl2hwd2 z#VQGH=(g-E2@U4B#pRxZr%LF3*OJKr$@zG*^D83QNbQb#)7_RYKn5|gmi^2%^h5UC zR`>NyAXQgQ#V9Y87F3B%B^pmmE^d`$9DjS6Q##o_))SMg-$U6?nr zTIbIC2X#3|&6}?VzAjpS++aAH9L=zuab_Ej8l6E6?nSR~!6PqPq^0INyL+<)wSmT` z8D(y(6oB-IU;@HBKVRI*t=79ks}d&lcM;FhgdFyw@RhoGGA{>4dtasQzR%U7))xeQ zzBP=GpbxV9U{<%~X-wab5$^atWx1W>(0Oax9syTCw`8}zX)fL~#VAgskaT4sDRCBj za)^buL*#h zKDy6eueJl1eNt`r#0`6`=e#)zbbW5c4j#Tgl=C%Jt&$kM$}jq>@FMnprq%Mq^<_;| zpi?&SR2KH`SBYweWpD&erSSINOYgY$>l?K#s#gcV{)b!bpHNRj9nuP-z{Z_so`62~ z3bVTY9C5SoK*VU4ls{^WopSFBZST#=yt^(KuYd)QaLsSD1!bM%Mhl@HT%_Cz$E9=FvPsi41q^@P65)F)sq3TCa3{NZ$pG?YAS2t2LxU!z(brqU7N_L z=fI2FJwN>@gr_@4EDwk7oDuo zJBea;o(jzYA`KHTGl0$MJmK8HP*z~P&QyHi|IrflQ@qvs2T>lPp+Uo_dwxGiFzb0l zx7GTHj_PS0GdBd}Y_tgtQRE47fv>W{e@;F@Z|oBu?0&gmgx{vPdkRUnhob!Wree=2bDf(~9oYKdds_sbq7W~GiTG_*$ zU1TueTC^aY%kc>NtSQ7D6sT*5w>Xsg4q)m9f)AMSG)A`zck(+vrl64*d!LTom99qv z^X$Nr@hY8%5nmO=wRBIrdw#*Ov9fB^zBU)is2HnRmP_~b-Z&WdhTtu@sR*S&pRr!K z7GMSgE{bXC+%k5- zhLac8tvbTP#rX>9cZfQzsGsxE;~J>^cOZr1T_qn42_A={o?@^ofYlJ`YVb&4r`)PA z^;zM;LsfvS+^!>AT1)fv9>(zN*Z!OW(%sOd9D}{2in-_By)i18Nq=>9#CC0SxCCX) zgE&x(HtX3>fD(Sn-B$Y}bxyew$xNxr&Rpje**43|Ox(M#dA&ulqK~&=3>YPv5TzdO z6yz71RsH#gzzEQG;K=oQ&W0h9;(5}QQSg%B@`_5@dD6Zs6KOU;;Wv3_%AJ_j5c!^w z`xvE-7uQLXwM+TZ2e@NzGXSuhRY;jOxID}!tTj7>Yp3@{NhRZ>yuB}lNp5O<&w!dJ zyiY#n_-x&SxAFZE==*L9iMJ%*#-Ka$rJMuXWy+c7e7DDKGju@e`Q<_ughu15HlnWR zf#PUZh|L*@;uGjlHk+lQHd5Kx?YoiGZrr^2BeD@H?G+FS%Sm6J9bIrsVM{IKy~({# z1cNvnKbP<)yaR|TlfTw!9KqS{VJLL9Pbo$;1E*p!n`eWSk9E?oAC1?kbARrG6WKZR zLHLXibNR(^)zX<#1Y_roe9KQV4lW>c5<&UY31T~CJY2DK{6HK{spJ)MFzT~vgS;|z z3z0}|bQ~=3F8vQID2H`c)UCRI&(?sVv-+zQZX3l|Ei)0?e_`X{LVs6ND%RGI2)pZ>oZY|Md~_P@dVqTBn_M&?aDz)|9IRaTwT9^Daq+-Re*&8E zR;1yJ1YRoqz7Sc+5Bnrb^Q~~m(I(VxA6v0<3J{NYtAEvlJ78DMDH?-$fUuA0nU1^l zfG?mlx=xI}uO6HBLO9&mMw%i;B6Fs2(N<3ENFaW>dyYwMCO{;iY~)!ZNB)}~*69%i4 zCyRx}-qoRVOd;^T#`Au(2tV^bb79GuQ6vEiN2P))`7uQ`jUYoQr)o%I)gmMH=1aMd z!XClf3EfVoUouQ8!=DtrpK`TI@A5;@Fqj-?LV;4_p7cL*Dw`0vScW}5Si3GTcTaab zFik2Jb2w2xpF$v9`5#5+;ZODdM{!X`gD5+cEpg4PQ1%|z4)-dn%#2Ge*C=IOSyy(l z$2Ai&E?U=CT$gllm5h63b?-H<@%?>%|G~ZYaX;_R>-{?CJP*3hn6dtx{6E*AjA}JR z=g$_phd-fO5mV0*P+lj?YYvzZt)y{d;kmtI^^0#nPQ9$&LSK!SU25;qB#oAx+`*4@ z4s$Ozyxu0X_v|LLCh$!MuA1*p?lpYujQB0NuTMDF#^~P}gOd@5{~1x(`{I6XK?HX4 zB-hmW$eQqTHbir-sdDIYmVac_17rf3f`d|Qr{Kt zrnE1PH27MOnU+L^`uzqpUpmQp#z1(g_(-e2)IHC>ri$8XNlZ zXBozEKc4$5q-!)K`aMxcF`eh_tal`eO{sRtD69I7V&+HGqnXm?Sw?r!C`#(Qc?SDD zQ{4rj^z2Kk6=a1=>|5W1X+zXGCC1G8;KGWY{tj^Ihjp132+-*c-?03ZX8-Whf|nMB ze~(?0)Yep@y;=gas?XfxnVA}olNEbj-2wKPbxe=>ja@ud5G_Z(Dj$bx^c&`AP!;95 z`aUe8*SFUce|1}U|AiZ5K7Yz$e*c!%;rK`Ly=I-Y(zJ;fsW6FIH6oKg6Hw1~=hcIr z&Ts0CT4x)XvaUa4p6a9xREb3Ky*>{5cl?p(3ng!*&rsFMv7=dV;O+Ea>qP5AMbz5_ zI4`VVtyJh=Cd#D#j)!8l-rb_VN&6#SVj94a{R<980e4|-U0j?omj$G3k)dZLHq1a1 zqhwIwJ^wVeUt{(=?H6efDDZ@u<7i@JgEUE{j&IBP&8W&_e z&-Jr8?7{m3EGKy{tNm8P+oSsRW?ll5bVTIS`0RiyF-u4KF$d%3Vck88M@tcina^Zz? z>OsA}KElma!le!*j;PQ5rF#>h2}~B^i$&cHRV0o|Al1zyl-Kc3wz+|71o}0h_){44 z>@*jkj9QapMQY($#TeBz!B<@>&f~RwmFd?V^oo%=tzN!D-6d{Q3iE2TIW;nF)G^zZ znmtxOm9k?cH?=7~gjeRf#N~#8O^vh_n9LDBi3F8#R2*yKL!h>3{(2HH>-4?vzD|E< zY?}s@^2wNitz82G2!o{jJPRM{+&pHrK)A9SW4X9uWhk5vZQs$HcvI}Djumc5{+Q2Y zrPg<0ImTCe7*a0YHKPRmVrpJ5^C)Du;-(7SiNkI>Q4=9O`Zfq3)cGF+v-gJq1|#gN z*x*e9*0)Z=_PsktjJW86%HobHX>8sr+6%a|gj+4i1u!4nsh)i0gJ|{RmN&t!9AbO)-4}Y&duA~z5(o|DI4%?B)|2vwkX~1-%Day z@y9${(ibt#p15zt#OhoBF{nHXx5Q`xeSQVG!a01l!cINA)B%r?E9BIu`^!(2(%red zN8RGSY1pYAtBSgFX~c+V;3jE^*p#?x>WNi`H6G>im!BuD|Psps`IHmohRyv8E#w0fWJ z&!!zJp?hMTfjcjW7Op7S=z|ppJw2!VcGD3L)p1@_SZ=8XNVCMYBqInK?VmR>QP2Ol#aKlD?(Ne*_t z`~>H|(GdgzAakH5xIf9r{o>G(>23VU#j)gc!MIi^kqs+ebr9;!S@uNC@har7cN`_g|^=6SORNfmi+VI z`$>+^a|S0KQD;>@>Kw(hqK3v*Er6cznMoq27QgG`Xk<;}b_othLM$Feus9`LY`0!n z7BC^g7tzZ%(j;<4*7%Hmsh}QW)hy>buEus!uU#Z?C6&yu#8C>V7_}MN1JYNd%TR{> zA5OKAJ)I|MIOUq)K##kz0>nP5Q^53G!`o4GjpJ>9w}VCB&_LdC?}sdG=$$ywnPU2y zMr(58#=RYHeR-kxF~0=buejFqQ4BOw%u?+lu$a27Cf8rK+&HAKnr-$s*|$>?Dw`h4LO)-EVdRY4 zG4Hzb3t3pw5eib#fS2X$YH5=qv%aWB^sI(q+0E@@#y793w(lWdl5R&}4gF12t9O#$ z9Mp6^<@E^qB_^uh!$pdMx$6x^~>>p`7RkB zz0w=5cbGY+Q^ilTb7-=-M?G=RoBB)HZ5Td$_jFc>7C&OperOKKoXn=NoV)7ti}bE3 z!QuRNKY#K>uS=UVlbhqjVe|MW?yuK`C|Y(2F{_nFC5s0+@%0&CO|`gcuiQt$5M4Kk zKlr`za2q9oVBc#Vx4NGRFPi6k+W&@z#oHeZ&^3pWF?S%vY#&gFe>t;~q2>{j z&<XP%SQb@LA+ZWp(CK~F?&sAsaImq`8 z4)^{q{w1XzrNh~F7!I2r@ zY60n%-|g5imDQJ(j_qz9Ktd^D)!9-)R#bnfpYqIZ!Y^UU+$q78v+?T;MYUUvI)0|o zwQ&y18$^W$oRL-W6RLYUy1;g2U+|s7#C^T`1%%EMZCmOuU9e6wn#?eqa`oWzZa>qB zMGa#&rq*(f20$%xIA~XU7?5Vp8-uIAq=-!KWSHvZU{1wC zP`|MkZ%3n&{fjYA!_C0dE!&EEk|zOnJo5m4BA;I*?%#jSTfnYn+H-31K^aJq-%Scb z#TBN0o}_83;Y?i~4{bxO_r~ZU;nW7}Z&N!^4&;p-v8lvL#^mV7)@z5@*f!t_s#5{9 zkH{NGuf_Oy%X>RfEpF#pGYQt6<01Uj<044~wyB%Y@mRtK$Gg zU9l7`YPaD&qCd`GXQrFP@hRP8ug~@LkQs3|ryu8h~yCYX~w9Rx`tHnR{;-|naPW_G`|99ZrbBqympE7B)D@;|$psk|G zT)tvwns6oD+bFxg@N4sDDgMSS8%u8N(H|}niiJ1=%AjQYDVij^>cE|1EiSftZ)tav z?=MSdITJSB-}v(zQs?wS*0aGD0l=m4#%(1CZFr6nKXNg+Ugv<6WGwjtMbd>wHtpLzA`1sD$X$MY^1!`G(Y1^yyxZSRj8vTCY} z5_RGT%6N$`nhBv#r<%nYEJG5qMValXe*3oWt1+aVnT>sgmW|bQ9eXEx&)VlsF5m|u82#|X{6!R%(QPd-bv&PG#{ zZYkeIZ?ZKmuWHJyjz8`m=EBFV(dl)BKeFKC1hxnYKSPx8Eie4qGzvDt`rss8Pq#O106I41wZWaP2?*AA_BLL9wxbj0y z>DsIs&sjRc)_|xVxGE++fZ{VUd$Sv$m2?s@_U31HOzPu-pMyI`@1nI!0bh^?+`E-E zr-R(@HeMTikJ3=s@m_A$u|?Hi{quCrchg5iYm{!WH=eUgA6*a9?C3i3f+HioSov-A zQ}zeuxu}||k@1k)@PMZWUr^Q-4BbJeopHvm6fT;shvXe=30_Rpmdz|g|xwGAO@2|MlwczU4cXl&=YmsW_wn+FT+blLv9T(gT zLdC_gQ;ZvxPju_n#aSn83;Xg%KAz8Yw$EiQlwWVay0d<+ngs?Ljr^}R!fuyDGS89) z7q<_c&41dv15h%;nxvG|`@85)jJNcHoyb)W0a2;AV($%j4$@ONJ`Vfs#@ktGnl zAL@ekpxnH z)1OY-8be3suY++G1FT-5?aiHThMsM!3z#M#7mNc}Yr3{33N|&pHcSFeuK+gQt)=e= z10=O?KtWNNb_GJa<>n)kjidh-Zr&fr=36vebjx!N0}z^qy+ zWs$|k0}936Y&8djHj&Y>7yAu3*`F|5!yONdhuUg~_2|Q1MrqMP`nKpM37W?gbVQ!7 zyW%k4%X~K5UFuxF1t`K_A1su?Y|wb1eyv|RTjSu=k!fb|pQ_+o%xv-KIQg9!T|=me9{f~DfQq?Y zBj4rbTqp}|+*TCituku$qGDyeBCb)M2ZCbV&U#*jLuU_(3@z+XqKa^FKCCU73|^xS zlv;Ec-Ge`UBJ&0LD(^nG)@0P1x<^g~?7@iTEb|BDN|O<#R7`|u?0x3#wG1KyNnA({ zZMkYy{$qDRN$yPE`==0*U-2_JR!nlI_v`5%x!pLd*pz=)_N-R#dApM567}^lA}4uK9Hu^zL?GZ|*Ih+#DXU-e%>3V}ykA$6$BIi-!Erc&a;+*4)n&0F^G zAV#N$hBs}P^<2I=ZcAg+^v}pXU-m3$wX$pUmqW*k~yi}uVwv-U%3myh14*n z5a zO(4gNF%K@OtK#9aSSF(`%Cc~Izj$D9U!P8aQT~t(J}-e&)6r7ZcOtmj=6t3~a)f-} z;j3z}F6VvOi5Ba}?p*`=jbfL(H;L?^@ZX#dgULP^74lp5y>@^xk-EwLR_5LM*XrlS zp2eE$tc{V^vg9=*9fQxTXV`y=Ng_ULv%%^NN$`@J9hqwo-;=3V%% z%|gc7l6*N}bKyiG3uMY@_;%hqAt&F zzdz_}Y4;ea-6kLf^Fl%Lr_Qlrj(Jnu z)PoULo*Q`EbRty6Pr@KIm2jmLvSGY2LjI2~bj6oHd<24X8YQagTG=G4hRU6N zv`IWu{KARt6uN#!8#*3cmqjGd$5A&?F_)eVsim%-n2skfYir+4il*eU)J%XiDR<|~Tae+Fx>l$j2CRr_6=%ZB$Q`_!47>X$$9Z}gkOFjAb zz>YN!Hqm)ZNi>%<>aH4}`Il$QeOC%_g7Eh{0WIX2w4|v=6(>6;rxzG`m7t~Q&eTtx zBETTSug3Ey+B^besxe_sYGm#`-c9^N&q@8FYG9=tTXf?;1^{P3qA^Xsheqot zq~XQkSydgprVgm;zQh~ShL!t~jT>*2m8frC`QVgEO?TrS46-jku&zDcy5)aIt6A*KsIn% zrCPbv9%D%JmI$v|9Zvr|cWB17MbsrS!X#Dssy49ij+NpwJFeb2{)OYi%AGzufE_nX z;-u!~Q7Lbami!x%EFO?eQ>uY6rGv{XCon#!cFejOjQU*ZZnSw4!q?bD{;9R3ZJ+ME z|Lf@K*!Q7qp<5qR>7G~6^$MEk1sH+Z+em(6?L0iiNN4d)$)jTeCI2kYC2%l48k$$< zfdBct6xp=wc-6^L4Y8A;DJb0*GKQPPTe?G(=D3A`s1xg#HDJdaGX&c`p@gNe8BZtj zaCpu1#O#et3s)KlyQ@-1anzL?QwgvK@x~_Re&kETq!Kq;+aXc*BrBhMx06xV{kQr&?^7P4>)VX-LgzBd);&FgD+rh_es_Afr!mtWH6tLRWjOowr_MDDkOKjiurhuHnh2&Ad>&x zw(nvEdz~>ZRT=f1V%w*1L;j`D5dIkAzsrf?y^sFgqGYI%>X=J8wiu-;&G($RIWJIO z3+>2-GvTAHxsQ8Ijfzr!woh;tS0FU|!YnYj+-#>pfUPUg#L}}{*o3?Ms;{7_*_8S= zR>({(w1-UGd}ek7GMSz?KOkzPkAEo8++ITMst#(L#Wk&F+f%W5zvi58Yd zV7;T7lhP)JkrxLF+_Scx(GA0n?yHsdf548}+tR~q1MCH1o4io%7G`n7v}p9_!i8hL znhttVWLvSV73j;nN!uRhwA(vc2g*F^Z(mXHu6fS1%$sFxIuwcQ9g5 zRh}WN@bsehBS`%BB|l$NK)#dwvaq1x9H;z3eq;@h-5@GN?xcKoE2^0Ny;mBC8c&Zdhk&38^v?NDXp0*(;ceR5uN`S zz=|}-R=mdmc*g%3;}I%JaeK?Nm~m z^@JhjcKn@#0qJ0%$d%w|D#8)t6W(q-yEZ#3m)C?572_!cNA@&1?%8vbg3P zH!>&*@&z=wo)fQ?LAKI9wOO(03DcNs6M9^ADuI=Dt?6 z@@r9qFLUlycfKj5#%*XrPjzRharn3@6Zm3AqlnW~A#hiARUs`rRz|LY9P;XvBt{nV zUlO06wkUmBZ@uNutnxhrrwPvn>>De2ZnYfgX9)0#5X7f;ic`WZ;Pj=W;obZ(AuoEE z2aDm}o4M}0M201N@E+D*WB!?%8#l5>*LAu}Oh$*PbTjeyCkM4S!ZH(p@6_K({-lbl zVm~a1epPB_MZP{7q=?WYrN{++UkspP^mNl`{(~(r(snN~@FbewSi|teS0c~XzWE2*Rzsyhb8pjxtErEo0o@-P zJS7gGbJZKFS+(b%b3WSV+Ur)QuUUgRNm(Kf@tHxO#lx{q7&u2xaV>5;uSVU-T&}XY z%KdOa1e{kbZY24+aF-SqqRXS8tziWY(pJUnx|Gs*MeM3_9lP~kk*K|%z-Fh@xJE{= z$n_T`A;VGOrZ!h%7m?%0t3&}_X=WW89(U1KeW>Mr;FUw7vcnDPPo_6Y=_OoRsp65Y zePKdU7DXQp|DD|NS#jdDDlAj|cH*lAoBt6U#o`>!g+e^aVq91EU+W9o-*ItNLm{BY zrO8;GDsav%>kjRJ?3wy+8ioQH)uu?nnU((-G(Vb}nG3+&H7|N`RPhX26QTggq>eg0 ziH9#Z0sQ@3vFl>}Baq-~>zXY>c${vrk2hYehNAf0;AFSSTk;iAUH?k;Z$nge;=)R~ zQmfZSddyOIuBiPsf2}9$+pI zGQ70R1|A8yKQpl%dDh!~b_r|z>uPx~P#&abbW6K=JggvRs$KT=S7Cf+bL~WmZQ$xM z(CT9TKR%UTuG%$_7~`zLpcYzniboy^IYCQRNz0 zFjs{A*i?=BK0n+|_&^`BxC9^U6^+7xu3hud z^qRsp_nhpCZBCoA)xgK7=}D^arGZ(uoGPnqM^$u~EcYI^@$I;wNd+jdaAxClht|)f zQ#WI#RJI>x>ihGppc(UPk$x>^SMtpnIBnmx5zeauAY(ZzT) zU!WjsHtYHJDDX~3pkwYzKjE-p$hdhPqc+@&=gDsQbLsShoMDr=$D>SF`6kp`z?y6ATH#!78`LpN*IV{{# zsm^1~cdk4~q-MfzMKk@K*vD~x<7xoc&$~&1ZX-oT`995j?F$$f6Ey?B7uxP*x7@k0 zqT(^vTGje#*57;oiK@=q8?sCYkS}yMC)_w$zWFigap92K%Et^77e`=_XY7zaY{p%w zd|f1T;aV-SBqRMX_6b5pG0!5uA$)Q0%(}N1sNzvqN*4FCs`i)}UScVdq@is=H^G7t zSxehc%cTeJwI;E)JU`yg3J1HOJz&UXDaXhw(PLP5rFSMpSF#2w(G6x}ls=KJ=kGrC#Vq-S zq{u$2;+}Tg5beJ#8;O3@Up$7{7foH0w8+gJj_zH$7IBE>ku5tMp*M&kT0QmKGq#YHwQop1kmUzUwwzwfuB-&r<}Iy}xhYegYvnm2M~ zD`MbMuHp~-huyR`ZW&ZRm*G6HD&*&0E>ERu60?o}aO`?kZeWzWelKdC4zB`;5sO} z_gQ)Oy~^$QBb&aU7QU}p#-ns^kacD1P#uq?soARxdDE)p7>~P;svvW9FiR^3ds#(c zkynRJJqBma`*$Uv>RUlkoT&P=J|>Ayf9xZ^%=~KF)Ygu2J64VViAvN!8TaGWu7-z# z29uwOjP5jJu!u%&_-J$ea8HJ%!@=j8I+KfUiYAv9IWyUA#02*-$(T>m;CZqB%5vx) z%m!zzY7Z{Thzlhl-JJ}@G4<0yv^ULksTl;HUI+~%1J|iUn9vNxpZjF)ye)(q^xk|iOcv#8TGfmy#qptCcDcvRJ-f$wD*vJ z3@?pgqb|`wzcTED(YYL($hc{xq+cVPIp2+>9awP1Yi#;EzIegH4XjjkINIR(^SCDN zesjXQeGP6pySavAe{?FBu9OlQr}iJiKlj}IHI1+HE~YFPV(cM{0j7;4e8>c{u2&Qz z4MiTG9=Pz>Jl;g~h4=^;2}(d9u?5!C8Ro2<(q;ADeQvcCQ{lsKbpA1-uSroGux6KY zEpQ*k5x+i|rf1&Z0u9*ZcNd6v7Jlj;FW!PwwYlcy#=X?(uMx4b@FtyJEa$o**NBfL zOoXH|@u;R?IR*I?@^&J3fvfAh*X!zG**n{+W>krl31cy@|rd>d194~QRxW`Th zZ5C1ESZSWq)aPAVCun6socugDC4Z{7Xz5csP%mFqW*CJHb-c9_7*Vg_|I^tx@c+1u zYzt56@3hz-df`=gTa33rOOZZ7I!`lgd^KvOYhas1r7NexTYHR}^_w?~gSsPOSzIfD zEIC2J_!}aQAykns)Mcsa&=*QNB`wOa3yxH5*Lbvx0WuP;+35Dg8yCK3E<#X~76aGT zsGc71{}hVI8{bX)K6gRL=0vS;u8|9Dn|2wm)m-f*Ca1)~6LUBqQ+=9&waox05GKHx zBO{=|s}N8}@UPc`!cWBNq_um>@`x%%92FYMq+**JxXAI&JzdBT0}1K7!stdpx{s%z zjQ;VGg)92I^Rb4JQgM9wY!K4BHV@x zBV0XON%xH8=gN&_>N)OBT`%AKGcE+8M^^GLj_+bl*GLI3$g9nM1uRxS=hnpj%?i1n zDrRxP^Xy~I2F7_QKPFyZzD$Cr!@{5Hud*eGWczI>m`zau5lDL_E7muSy1z7 zn4(#Ys|>n9NJccL!w&$U@pD3gI=i2LtTL~zI-Q);A{_7((@cl+YDd90RapEMw7EmX4#mvZRk|mk&7*wa(fg-AuIvYqfrSu?&SsDdvl}n?MtR(kdNB>aSQ3o`;8N%O z^253RDcT)F8bZ`Z#*~*~VKSieY$el5l3$XrbiY1%CIZheL0nCEh|9{3Z~huH=NJwIa4O!2@ zpmSXPT5~!s-rWIWeJ-pJ?oA?yXOdOx2VU3F`7Yi#C`Bz1H~wRA*7=d>b^FdWL`ZPR z&55-bHOZNu147!TVXnzv3?6p_rkT-zp5_3@1>(e6sc&h$O(SAJ)T$P1j^iXQ%y@7_ z94xOf#T5v*)mrWYxK2JJ8*!L%ZKXM2x0&#vo-rk|D`>W4^z2L-Tp)L2W;qB7BWppY zbM*;#-$6L|tdtY;;jNz1J#9YcHXjP$hDSWiidOCvn6UM~Z2x%}0!RgEPNPq+!Yr?9 z0e(K?dJE=yfckniu%ro`iH%nyFfUK)N!(G_x1a8l=CC*9{=nkYc6kSO-wU*Aw0WUy#{XN#EmJJw5$_ ze8C0Q)|C5^K+_b+w@y@UD$gMeSNpR#ts_X3zL~vZp>N|e+HJHHawx*FV08aze@lD(@?0$V9vJaG~ zHXe-1&>@65#^?4PVF(v1Zoj*%FWZwW4WA2^EEJtk`fGeE$T~}T;xLGEQoR|ZLPp!7 z$UEj2?_DFE>N=YYMBJj^e+(CJPEsU^9Dc7F5eB8(;m3edbcdiF=~;oc`DdbYS`hI#BlFh6IK zrTMPdO;pts#Z|Y@Ywwfp)I$2UrWq%dKCEX84?uR!eZw)LM2y_Um!&ELUZ+Dh`e!vt zE}kcE2zvi~=bS5aT-PRINviw$a7$+~Hm>g+-*&ZywO>O|+=TF)o~0{1x}ZZvfrfCZ z3w*V{y1mAKq^T`mJCs`D%MPdn+83{aba4^8y zf%;u9WTO)okT$65e2;m0cYb?+uw1#+LR{}=AdD8*$JRCSOes5jpK|&G0BJvvF-b%l zh-;7S11(W-%#E9e)VZ6;M_zoI~{V^RX&X7rg>;z|$Wf z;+2XD4|{?C{`}{W7d0>B>C6FrNl_cw`J4RNWs)X9N}Hv0r_X%;#y<|0sNK4ES@bP|a%G2;+b6EXB{ZL+qWzS5D%B(qV*_4?6K%F&Qw(*T_>9S-9 zd;S+Rq;kEBQl7-6EiWh&-!`NCWrm)4xt2ilkKb2 z8=9P^T{6&oSk9cT3F4T<{g8x|tkXB>&ENpJ^|HzC5zA+t_09a#rr~sDJq0qF0^RWl zHSp$U`1E(X2^$3VuCv4d$0`7$)V(DAnA4J&QOyFip318`eG{e`$Iiax@l(6&>2C2F z^S)?O^$s%GYUs*`D)T?)N1+IXv+^an)#pZ?lFk)tlnXDtDG+eWYiyg+^aCk?Y9Lk=6{ZjSR-NFw2mz4#Uf9r~ffnyvo)R+JSBqW;7}}ZW(y-{xCkFoDI6*Aqbda zK}@k_(}v{qUY5Y!-Z8jAOTem&G32e4>_Ev*O7Nwy3MTM_DQXFNJov(ju;p>E^4$4` z$*oMI!`ewAlTBjPm1#78c*6LvmcB~-AY8X-tYe%!NB6*(f2Lp=_x-Z#TQ&U`R<~tL z@@hxiSKu>pMvCG@_%$Zu>Qk_zR3Y(b)pC7&LF!#kx z_?3?sX6Zt43L$#L=a=_rcY^9pqXuSc(YQ*j!K5{5&cbYzS(-VlEY9iZgM!$4j<(5s z;kx|iZyCf6cdZW~+=nIJza-7}PI&){w;TiNpaJ~yH_aXVz+CP&eskdaMWbi!v{j1I z`myx``J&%e|MKi-Oep{|g|!WYnzi<2x*)ih?!+E|thqq8`Lj#OtGt&v;jSp|9tP#l zA9=4z8z>#MRS7*DPT_nX{rDr!QKM;M8KW!s9|MvZyzt_MbZ+m^7h)`ou*^@m{k^%# z57LZQdo1=SRLE#Y0R!%7k08dF8=XH}w{&{a1{w`Abf|Yip1oBw9^7FO_+jSY;<(@T zW|8E4emmq3Ikyi)Ee_34O;G>NJVafVH3ys(f`# zs5W5tp)qoIbdEP2h`@21B1V^)42^^gUhK|)x>F{MRtGwMle4)_I-8LQ6LVaiF`Cqp zdr9=puzCTQdTo{kq?IYk1! zmwwnw2pG`{AXPvSfmMNIVbpD3s5u@bMux{0oTXWnK9y<3&CRfAkt_T=`I_}@flmhZ zac~U`D+h8Ov(woYejpZPohQP<%{A*va|PNesl)C$ ziJqN!n3}A;BMPcL0^Y7P$}=5lcP|PYgbmNI_??r*&^@))zclbEG|o1%*IR)4JD%-m zMZ`9#`pYFs2DCq}Xl9=eO|$3d&ZTnWws z-dB(IS6iNQ&B=&%KWf`93=+<=&sKY?XaAh9CbmgIJ`bM@_nujoW&Qa75F%gEqw-E) zq_=pYp5Fy1AFv;H)c<;Te%yQ#poktjd?(-OJXJ;&1(&D2omi`2zEx`Lr)Ikl0}UoJ z0HzNk>pDSJTdKNlDZl!x! z4f4Zd%lLGPSUXPr?3Z6Hv|79FtoZS80e3aE#PVBOi$4w&8d?I$XjStP?MLu8NsS=0 zC+W>Wv;t?PS^!jvvp@EEdkeniKQLVJM(2s*)X3kuIC2dC)a8v761}gCkMSManuRhE zxPBu9C6m)isDA$!z!WWOkx}KFz^ZwM*_)N-=WESd$ZA{;DK0PxkWD88W+680IhMMJ zOHOh825~%!C1i*3Uw{UDF318s?nMu$rp&Y(`6<*{bfc`i@VX)z6YxB(t$ZO?7B_iq zHv^-YBcJ;Z1>xqwF3o1a)z~N5c6ComjXQ)K_$C)@X4+rqzEDM(%|AW{Q^55QAYfb17+ln_xfkhr~78Jv;dQZEn zu1QE(Hsq*%7p{Cjwyr#_t=No>v$!ZaXdJlF;a^iV8`xRd^h3_!>YM%)Y;(L72H1WFdadG+;e8>Hs}=vYBr0ti3> ziaeg~uJ0K)g4Dbvu#&&U7~YE3g>EL4i~w;Wb8~`=3Bz{+kl!4KXKR}pHFaCEzzGG3 z2#f()|7{O_>3riCM!7ub#GI5R&b^(es$pDFnXdMbQarQ0H(-q3pd@)b{qnkg-EyNV zV>QKH4Hj?M{6yvH-_`Pl=IV*dcUEOY_9oJJRM{&|2bYQ(dNJfSO_7q&tlUS5yL#Lhdav^G+sw!b2x`z0Uz}b3wzuemkmo8&c~XDGJsQSrtiH{g-xQ z>1{vHgX(rYeA79)h}*;Ao9FsJ%Uqm6FhDs~<0rpu#xEG#2+tIl=&H!Pg(49OUTTg& zy|9lEjMvsB&>wlR2srVdAJ`#R7;RUpKBGKfLXn)6b~zK?=V}iJ)<@K)puf_lw4R`# z*3(%g5(hIEH&y)i4@dNH68Ghzg<6#1;l7SsWP}M2D)@*IvGf&lZy*2NfpB9*z0FR| z$odNR7QLg{c{4lw#mSRPLUM<9JS@lCcS3-`tegCNkaNfsmL>`uthnFK~R$V*={I@p%w` zrn@{cO@#di7Pa-!!eM$;Dbx4un+3Y^dmOy+pWL~ogJ@gy710Y#W=jAa`H*gexfb%`Hj2P*=;&ud@W>pCCEF!CjYCjDt%ly?+?~8h{E%(z#f(ktR|I!l@!n zv#Ay|e-KilgM{Ge!AOzM#U5@IM%&Q?#72^m7#Zu;{fZ%7#jh=|M&nKGwWjcXuyED| z5^`ar3-Cc?)MD$cO}n4EG0R8~2jms441Rw&^dZ|5v)=G={+9ch!eg0J$@2GGsYK*C z64^MAaCupc)QTLbTdeJd44(Ly>b|6lvkvFdG#fsvpYjX5UzqtPTXSj+kU0ilI!!^( zowPp}`I;hPUhn01>F*3|5x}=^ZZ=m-ny7j zE55(!GP42GJPG4d*_I~baPO_e#~2Zj?OZ-`tpPb;fJ89nwp{(1xE`W|B>UmZqhMx=C)DaM3cGah3IMLfyqR{P=d%)ml>yVTC8Cc#I8^VA=QA8V4&T0QW}8O(5@g)HAFB+qHn1z9@t2^$+U*H-DWE6LxYSm7 znQ>gsQ_wvpyl)utd}}tYh6!x8?bEe<81<$o2kwvc3*Cq(kCL52gH_o$YR&PQMMUtn zn}-h@KNj+~s$5{`zNc5f_u?g0&N4yiaVvNG=d9NepHFraByi2ueh`v5x*#BKLsK}Z zmOh3Mt4qT@iE;&|rxnPS%C^zj*RY7+Km{ZheKug2YohydaHwAjny+-aT%{#vZG5dQ}(o5{_ z^X$`4lyyt4yn!?~G22?j$;5q|RVfjEd$t^Jg4yl$D-*Ru95%-3n#qDDc z&J^(!uY_$k!Ljgnep+GvipfF}8{E}468zu}Zf_vf!N+HnpP@K6zi9F3T+x_)D;omYLWM>FPBvQGzG9vjUW&apj7lYLIPG9)*3 zE9~HAsy#h6wN756X(NSu?;=lDmRqxV5vOuB&+ma-&=CM%)&4ncjr1GUm`+`Dl!%co z`c4mwV{E#iXHM`b#!y(yFHMc|61giy|K0?>|ffuTeW&Uk5q3`iv)Vt4ba#Re*cFuw#7C8{TG9vOCyS_pH}h zFG(m9mihi`^v-Qk9lPLlPr`#6ZhxCY?b2p?q4;4Kbo!lNn3r#+X8NR2@y-jo4wb;y z5?kuCoTCAc_xjEMwjQKHe%>90-mnH<-jnk3S-hPDi!RP_>8Qq6Rw(}fjL3_>*8wFeYeiG6NY%0s zO+U}3M5KCs0Th#b7lI%XyYcaW)ISc}WZsV7Ki@JQ+a29wuB-f`X;>0L4jcs1^=%#= z{{R?29AuUK^6757-Btr3BOTe!yI`!g?<;s37rrv;-%{^?d;t#n63X5&zBOFC;{)vT5i@i$$GL>ipc+zCX@m+*q`SesCd=;ipZ?^yBz)kEG3o z#`=1^ISN=8Fa3urk?py3%9Oetf6f8*Vo) zN~IE;W2IhB)tQS;(CfZxL}&pXS1YqhQAf*xj6+{~an(9{yWq)g*LWI}9-8S%4>!q@ z&=A#b?|2o_Y<~Be3nIvo>E5r545ZjHT`vB)L)4e1NR3p^nOSyS{{W2Z{+O3fuhAIG z{{S0tkUF!ElbwHS%ybW@)zy0Zr)L8tKG=<}pNwim>C}x?W=iQ!m6GYo+HAMZ0|gr- z$Fk!3lIm3z-PPq7^*u3{K6~piUGO*kKJ#wJH4;CD&UX8_8obP6`je>DeD=mMh{*LW KC|1t+AOG1BP&b$W literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg b/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_my.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3dfe883b32634e08fef90982bbfe4f75388bdb0b GIT binary patch literal 152501 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 eF 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®J-Y=N_BX>PM&2>Pl*4dvTzM zoh^+F5=|+1_0{z{*9bc{MnEzHo7U(Mk4a<^>PM(jynB_B^h#Y`w2MYjXoYc)@CVC5 F|Jn05A1?p^ literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg b/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_mz.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7ef2363f27a8b6743202502fa4183362e9540def GIT binary patch literal 167980 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�-8bTv~t(sA?F;I>(_QRC?ge#}ExX)N~d>w@Yo8+(jM}Z3ow%nbD z!#VrV8tzG*QcB*N&nKtTIv>*8M*iA)`lHHNagNd%h7ShM!}Mg(!mXS^g^V&~!>+_< zY4U}=VXB$}sTt11?S23L%|9mcY&r9$`@4WzIJ;8X^a)fSH|}PTsy3)I5sk-g!5f_x zD6u9Aj)K85IkT0A#5B!9PC9S%i}U<3NYQPk>Cq+gt03T zK_|Gl5_{^0geiP);?qW!RLRlT2^5+RA64%~&9OVlez61ElV(ka)N0z$N}?I7ZY7_vRP(hW z^m(B+jeKdB^LJh!`lOTudy!YNsq)@Yh_?sm|3Fyd7oqP|ee*l=3E6+sBI&{zcW`MN zFj4IpO--_P6_2tD8XcbE({A;$ESJiU^g}aMKE|p(A4zlR+~JX>&v)4iV$`kOFMm}+ z83FV+M5Uwkgv_DjN;}SlujM0vs#<^rJ+q!=t1l5CM51DVNM^8|=W8RvvQ?xh^@W$+ z3a5Bvfck)Z<)CkJm>bg1M+1awvMOvyM29{g4aOs4DbuZF)p z)CF0!+FR4{BVf^OP7D?s!yi21d(&dpT|D$9UU$iG-k(G%C~KD^6Cq)8qKlSlrNngV zDnO!r7%I=SeDfydE z#f`pJUCE%~@DRS~u_|q_hSF+AnYilCEUzRn%d11yN^S)C6Yo4cW_Vyk!4tAs&8)zq z(}(YJ9p}OKBt;7kiCH^n5lhA%-Rsy&PX+BT#`UR}vsSOcXHvMddGaNN; zPg(*xg7uuAyFG}fATjLcXnz*6$5fV7MW4t$X1>l>l^Er8R@HVkuMB0XEe2U`Hht`V zhgxNG+Q(*jx&3_Q_k?y#G%m+$)UwOv&M6(!x7B7fD$2>)>)z}AJiC= z$7Ac^?27m3b-OCo0KJTQ`thqhX(KdHvoa;=JXz448T1C{%u`L^7TaO_czGA+LZv2I zktB>P?kOcMCwQ;w8@f0)dl>G8YpFq{+D?59pAfBRjK9U>WF85MZAbPJ&4 zL$*tQ;SijKmAlnQ&ty2xe09rh&Zd*gb)H5KF-qYIX3pOI@JbxD^Art9Mfq*P81C)e zAdp2r(T}*{7Q+P{7=+WOgOwThO=-=-9v0@S2Bh_f6go)Szp%RY>(krF;0;Fbd5=6I zK%l->{yd?KX6PhSA2-pd+f#p3Zq5;W{q9Y&0ct7~5Bft)&H`MG#%?iXYeQ$kS!=tG z=62R?Hr4#-Qd~x`SD0xoE1A9 zGEbtHdxqah7(?kOP}q>Pef6qNcaxFb{gv~XosV6ZCjEGOqBAAHxF`Z?lMBWB zj_h`W&Q&$&I+M3)D%pwunruBxI;=A(e842*%4+Io9DSs(XAonM`2=FUoatXTiz=`! zC;s&}utDFurxx?ajCTB@P>y| z<%;!>!J82JNYa^gr`qgzQN9j4Ie(`zH3NtwuOTAB`Y8LL{@sbfD}_6MP8yXQ^VW<) z*yq6{xHu_eTX1EF1B~)MsDne=(ojjG@@1GX@#*}KFu~#_xKnD%CRgaGKP5V1NX1#% z^oeUv$b)=M|E)Fyh%-fEi{s?Ch{=w@=z)hL-k#L>*u2O*-sW@MqUG19mpI2B zMMt8ivv!44wdVC7*;P99NQ14B2%QjvFKY~)#;Ef<2oS|d%@oI!N6f#}=((!q-e}h= z{W}iM8&&NV{|@%JDF@Cmhr$kBX`7nGjmO8yTVT#FpzaTEKKVaL{8(4B; zQ{WsyXJWS1!}i|ahjE&J>zOM)4?~aT*x*a^>5N|?9*8`%LxE4!c{UEnP2BypbPm2O zk@fmcKjd_gt^6g_iEX1ELfjzLzBpz2jL?+3&%KkHY4>v)svpeBs5*kHKQtO>m(o@=nslc4NtDfGTZ-d0!Hs@Q4o`+gl{ZpiNr!^?; zN|EPkMi~}oC1U0rCrKC4P~f%Z42Rpi*tp-$)4CGQ+3r?q3PFN^<@QLfyP09d8k9K3 z6mCU-PzwUtA6ZrI{bW$N{*Nf*b$NjuC7K_1qsJr@fy^-?-)rgzkveVjC-98}%Iz0xFZAWY?uD+m3yA_=Oe z@+-D27I=*l>8u(_lDKC-} zE_O5E=2Z@L0lC0kBoX(eos^;EtMQ}A%lV7_%vZeWc}Eq(M06=z;|d&N)5C4hA~vf9 zj&EJT`?aO;lNfzQ*`8+uKfDo&0@{_29hs0>Ei)w?W(0nk4;+vkHK-=(RJ5UZL~qQ@ zwDRxR!`7{5Z}OoW`+8dAm)-vDTC0mblT3^n8FA5deh*6xXtE_jQI(B;Ka#AR|g^^u8|ce`i406x>Tp#{ia}WiFG-3MI(Q&fLcIq0U=!R+M43U*;fQ z5oK&Y3jvsUMvFf7Qv6NILyNd7$l(*(jL!Bzd7*>i==XY|F^M+PO^|x=K*x2AblybM z(XR{iZ%q_XV@xL7lPpeVk5i=!q`0fm6QZH=!L>;!cX>TRHvA@+mD;1P$y^rwMX)Ty z+vw3#RlP;;@fgLQkvuYl3f5|sRU<49Do+BvnmZC7c%9tA#irkS=XHXTvp!mSp+!@k zok0FAB#u#cbZ%J>@&@aWqLgX*;3=4kRx%FLbP z;It4rbzfdYhG;RPs=`Bi%5dcNw&`6GC#FUKRg9dju<&FeBqewFi@44Nv?0jgVo)B;M6Tz8;Q>x=v< ztf$CG@D^}AtY_3yIPx>#kB8?FIQ|Y*`>bcMhhSKSdtW-QsgKC>DcVt*3)Va}4}W@s zIaRmRIHIjp%6)MvKQ(SD*SO&P5MP@wbw=%L(yAD4CN{Q=hN@p3;@i30yLnIE}9O<;=PbPKR z;Yw1O8#luHRTfQVFW*KyuI6Qz=+ruVY}M^L^fncaQpLZF5%$3#liQjNz4)C59c}F` zaow~T0Yf7_ygS23F$y?JEp_a%h-k&eu`^TItSOk)KFs#l4BwfOp5WQMZ%Y?bzT4Ie zy0OTJd{~RMY3OP43hu(SJ{1yj$N4@hHfD9DZkeh^U!+0gtMjF0l`c%mrk(4b;|k$k0wfg zHoul1s(|@aAKw`cMe9~Zj5u%;-Ze~# zNF1C4a6ER9cz7f4X(A1Qoz7}B(N2b`>@<2WEsCE-l&uDMVUWn;=5jhnsl+Rr`cFGU zVd53zcVX@05kdFOz%bxfHx^OXrp%@n;->wVds!0+~~NGJ1mWh!Rc)t|VL`%63cHLNpG3yfyi$v~K_x1S;B3~9R`e~~K-2~*q^ ziFoU+-5mIyDIZkYE|h-0Q!NPO!8vuy)2kEm%kSHi)1K|nMN%Ocdn++ln0Yaoh4Y#h zh258Ea3hB!zK1c>%{7jIs`;}a0*Nqvv__SMNFh!1s+bjCUIN7*RX+{WKj)aM%`5jG zs?4e4h(4&x37-6%r;t%fsk;igk4lZ!Y4DD2P_b{Ld?vIz$*V%=Q{lhp3Z~ffi9&;(`2B{79GQdt0{wTXz*S*C4n^tgAeQR|;uq30m!3X7W zPs=*JANq^CXVx?85}BTTb>Y;BP3;NV`qdCFKGLS1*FRY&==njOSP9s6upYBf`-%(Mwobt9cenY17DxYM)qu=|U5jYYw1Qt#RBR+}CxyKeB@6 zZvns-0*l(f+E*hhDlj=%-hF%UZ~)FX-jkbs*4%rltwg7s)7Z;stiuj;A6v?UV>>Pt zIDNfPLsJ!>PRUZZT>s@Osio=|7**=f7f18$<@)+q3zgrHwWFxN53m!>DrB(va`)_X zPAiUFttQd)Zvul4_%0SEO)#u9O7rb_Q96Hml^0fblGdVnkS(1a$o@g6y||LhfK?-I zHS0aKRcxYhb-b3$8%WeWF1D$YI)Q1l{>GWw*}Gs@7E4bq-jdcxe7@8`-al{hU_Kdn z>0ZoJ{R%6RKgRQs3SWrVDfRf;8lMVVFWZqGAr30uI>6o3^TU)4K7N|<_eV@Ayr&Vg z9knaKKGh#2t(XJR$9p@zRH{V0N$@Y_T~Y0m?U2Rd!=c`K{~Fmqcaz%?uBjHM6=3V0 zwC-psnQSsVC>?7OVY)dfHQABqum5yk+pA&9fTAp&&uVZNA#SayM9Hz4k?OQ{N10Gt z(&C&I&+EDgU#>cEN--t>FqU)fR`YovXVX4^!5zK``uQC}JEZmL;BE&Km+w1A>Oj1~ zV7EB+H$BrmWD1Omr7g5St93v^NK94Kzxru>sc^f=bSV2hF4AXz@2t`aU$lQtUe44& zT)^J_Y~wNt?kF!)`&_{uwKCM;`?S_XXqup0bjvTNxc)ea^zqX}NHuNMU?@NZ+CIVGq{uH13s7YBZ2q?3!Wrxv)EbyLHm|iS;iBrGGPyA^W zFnd~m3us^0-u$fcXc9j%xgznW0~yWv`B8Zz(?;OV0cKuZ12;14wQ^vOCOO!zvS;ip z@t_Ox9zA#4lJeVDqd-*?l&J@-yB|UJq7juZg}sDsEH6HHtE!ZX_Djy0>LZ~D)0X@N zPSzmb313Wqg(BgdRwJx+c7~DHdr`#x++LR4|Ay{}7m0+~hD)?mo=neZlp}O~^{Erg zE2I*{L3na3P`1JMpaxGMLq=oYXL3DvH-1F7y-_AoW4k92t?5;o+{ z57rSTcIFr1P*q6CW!wM(BYZxlCkVU9GZ`kOq@r@O2UlOJlSAFh&WN=Jwz*XItt zEMub`pDhXGuTM56*B9qRoKPlR&-AS(%YS!G70iFd#yHd33y(;&Wb=SZju|=T_>=ap z09*MrDe`x|Z8>iXdskGm5L2?r&8T#>-eAX{q`bPf2D}A?@p~zJNLo`1hoznbbtZdH z2@rW@Y%s9F9fbL1PaOA<7A#Deqp>n3I)&>XZ9>sJO3|Y`zVFsH`i_@m&(}zAd%=@6 zO*fEHrboV=90bFwZ|nP;~E(knH9;n$h_ty zd&}lp4X#x#?lp3a5ZAr3_cgx1`}_a?a~|iO&v=dJ+e)YD9EE<4`rJIyUESfQ(snxD z{of6QQGBL0E$;L3>a!lOP3rj;tE(o`N2VTS7t;?DSS~UG=E@b@1 z%+;is)XSC{TaN#3)Y$YaM+PRNs-hw1h<|5@CgBxd4Z*>g z%oCyE8G1yFBFcIz1HV*^$O2hNJ`A-C6L&cF^lbgLulq4I0M zx=j3nvyhDxF;c=#oVZ_Ww0lU}ub3piAtvv!EKMl&C+P4Tgh<3~56uY7h_hWhhM z0^nB}^U+>ej$v}YUAd`6$vV(lPQb!i=Msb2X>zeBHGbaNV`DkIwAHC}I(IuR zFF{G9#E)|jmbT{AYa z_EiZL2>y&EK_94S#(1qXe}WB3ExZci?b!ZO*ZybH(45Y>T?2fcdRmh}-za5!pW0I? zqE<1b5*R{p?8cjV=el6i?Pf-^-dDYmGn}cDW&X6QmAd>Yp>gYSv)PiiAjF<){O_72 zf|rL$^hLo~Ps=rATr^}+D&2K;kqn){JY3*ebFb$L;(PM?t-;g59|HNQ@TjnuTET$O z`H&E$yxx|4j#^euG@b15c+@;~q?+Q9Lk82YEgu)Oo7oRy$=`^!*ZNCOnWA#i01l0+ zktVV5jaybb%16w7Wg0!*KBd-u?izoP;bRrIBO3cr=AG9Y>QM#PMb_IT;XD}U$q>em zAC4!iNy0wbq;`@3;WAWI6EFGP`ek>EXAeDtMQ=Ul{}u0eHZ5&)AwPSA5|s4cjl{qj z9>GzmY-@%$CTnUsX4uGe3AC2#n(j9~5$xM)`;U2(&4%$4=K^VeuY;$B_%oq#v67a> ze|KDHu}ml5NTK~Of+{slg_uQM>ciUVxhDN=Y`gL8@yg0hN+fXay3ycjzeHjU!jUm0 z@CS6ExzYA3Gh~pbJymHuCqk88?iN2ocC^ZTjQ|EK9M8}_h96JNX#q<}hem~|OAR=4 z>D%{QTh)*cMsW^MkclQUjh$fVVs-Py3$WHT;vkjJ9GU#FVlD_9lKin<>o%EkT_7Mj z1m+d;lfgGCH-^OPEGN@J)km0n*xSfU%T@8i$BvZ-5jnGll1zPmaB5|2k2xyHW@%L_ z-i(9zD-Fuy$@!@LFnTLlROOMLc87MZ(#QD}Vrl04e`}U~tCrn{bQP&%n4blFE!E6g zO1fnei%av9?EDdWLe>)We?9QWOms;UKhrFEQq9f#%rre~h62^=3|_zXV5WVPf`53= z8Vf=IVH(xwtzIU5N#AnzNmxmUjB?P6!T6NdSEPVT)hBP7Mh59k{vt|L859{H+0 z-|J)dHt7L1IduzxAiA!4D z4Y1XoGgga^Q7Kqw-81kitSQR6Iw~~&eD^lGGGH%BYr5YBU;HUiEB=0>V`QXEVVR3f znhWT%wI$;g4||hR*o^e=r*~sS_%Am3+yFmYwuj(3q)pc>ol42)bZEQ2jf;!i_vzKq zgHo4}1>^ZUu@y-OU~l!MN5KPHL*|a>z8S&qR_nH;jYTrxm?u?1P2Ar+-1K#`R|5)Zk)~<}+wo8=ZMx*+(TgZR# zYmK4q$dwMZB1Bte4^@qBj|j*3xw4BYbE6$_v&Os3&niq^D|+|0>ci`v@`p3+77yg; zv+Ij`Gi6?O=cUpvHB#5OIg-tt%q%)GWe%z0o)7Pp5=)<89dnUQtJ-B>zdDIoWgN+c zr&9V0DnKNgycD#X&bNwf=?Hbs9GN~yI~d0*^mh;jhGS zTg$weu;4LUFru5gULwiY$+{Ey#zL;3D8;aF^B}mq2<)U0^-2pO*VL(iylGIXCX0-s zn9kvKY-ranqZ$avY2oavFr%dHY|fJRmT0>?<_X17zmFCBu7zA{FYGp|zbE3J4PLg* zLJkjk8`T!n_k(zWba1Bc&WQ0fn{zK=x7%5Ah#%yU(nA&cX1a|ZjvI++W*!Wvg-y57 z(HO_xCY6c!B$hsKKO^*L!qP7mk&bmb8>qRwW|y$9ews9$J@*ygf8CMHF7zqowF~8V z#ZbP*Q1r7)j~lMJ!&I)`wx*3GmjzQ&&a{?q_=Ez~g1-7mLYEWhC{ zaDTmsp8f?xD>;J7ZTv3#ygM)BI2JrJOT3|mGg>`_2LtmmKOG7e_ESeEVimLW3!EY? z+?mvR2THk1tWl}}&0wCDYMQq0_KS#qpF2iL()iV##7ek~UT^m&DgE`9R5*k;PK3#{ z$G6t&<9gUjq=fjt8w~4(G}l`Ay*1Qch6rMsHFEa`)9Oly?9u%Di6A=v;OMhJax0T zyrtP@QV;#aRZ#E_W1wO_leVEzn~g>vpg)pqnu|hTN--^`sakihbe(iaE7IqG^~&@Y z+XZ|Xp8hTN7f!jT2n30nr||M5%)BF5) z1Dre@XmxdL@61eJILsFSRTgt9G&`LD2-R(<%?;NeBvLi{nkJXISxcE4s4K|-yRmV8 ziYesCNB773vN*3J{Zfd$lK8SgM6@23A-b@Y#q2DQcT~!EYZfyL<{sBf@YZsTYV_-a z;Dk>>+&7WR*YjbKwnIn9eCQEFM`^~}i##4Xg1e~j!`*}FBch*EBS)rI!DiLQvQlW@ z_L@1yOX;JmWbnkToTKx=hF<2QAN4AwV*3fr#gYM3xYVB>{5LeI%RUM_-u?0$d$$f| zUQR)3ctWkgaIfWsS$P958vG}V#6_6XSlBK)mRN)?6wf3&&u9mv+4ckvsk*CiGFGZo zI@PX@kvu<+rMX#YsN&>V0M>YFz9q^2bXrBcI4zcE*gkLY)F?1Bf`%fASsLA?3}3h= zQsj+fri<^=tF!P*1GI$YNd{79(6Cg&_FHF~e)n}d#iWP#6Rdgs#N#(~zM|iJTLy8_ zKDO?MOVXoGFqg~=??nW$2lu1$az+1+`i%G-2C-gnGIUth0dLL?Bc}O26}uS?+SciX z$TAj-ihNf=;02p~6~3^fdi&QMZN1cTQ7&-*IctJnLua0hIz5b}?HTa9=$?tu@eT`k zOTA;=f_w&3)HA50iv61@WKp1M$hl?z$E2Du+N^WkUf;C8F9*VdPCu%|U;~n#jxipd zPCBeH_1fy&ms8BQ-><2bb>P*#GO2Zf&&z$-al@R&fu{2xUmjk1@Qy0kXuV-Mz}zzY zFl=)I%dK4P{2lq0m1An;pUcWq{EeH!N7u=K6C^$bn z!B|U%73%(@npLyw|49E>Ux%=a8|2)zucYp_g|h<1wc=-#mnb3SehhYcpsu`8%p^&JxeMLRfJO97~T(6ML?}&yvZwuYx!wM z>^=WttQ9P5wQR{yhZo?|)xwcNJ5jF%x$~_W#RL3Ul`${_Q-WyPP)^+@z45=0!m9ZZ z1WTm_eb#Suw6*GK4fHP(B#-qC^oh&)PMZ!1@hO{U;Hp!WN1U$BnxvMo>nSmZ*8SRO zrNxBkoAbCc4o4TVma+iLtnrs8(}j8i$)b8Q!PA9p@Pgm7#`dL%lC-^s;)WisW(r;S zr0I`;(F(I-6R{(=-P(S#HppNb*RYr^h`V^3x1Q{u!yX2;lUX>&UEvV$vf5-Oh+xZ; zL3tp#j$1Zo*1|Uef$66Av18U^g&bw>Q%~I+ryh@`LyTr$R zHzQFUazNWt7xwP6y453}7>b4VB$JSK$dm*y5|G9x^!?Lf=m~~xZ7Q>Ds8X=28*#XU zPiy9ezS`U$W$e@fHMWBs)`{1Teru`Eb11i&p;nHgm;ntVGR{c{Q^*I!g9~Pz2}2c) zuPJ+D{U3{fecINMP%S9Js(wi@h$i2Pj*rEv(dO;ZKVc1GE`#OZn=M|qRfqp>1b3r| zF{^1j)MbH=EDL=Ql%mLof9o$RCDCl(S2SZf#Di#3W(KM)2?&rr_^5En;sC>zZCGy^ zv?#(r734Pc5lHuTyyy`yB|M@niQo_xnpo!|K6iNTRSIKxBLlS6UZayd=yA-b$0!EG zzKZ=Wm2fqUEL)LX#67Po@kY?|=N!}VhKM?R*$!*?j6O3fG6?8z5Q;x%Tm}xyMJUDR zG8Sw;V_%S=^*WZJ0sSE9!JoF+fbQNh9 zToUE3mhjl`0UN=pu|)$ox%9Y^#}9Y4gYo^m{l zJ$5YGlJmWPC5NcqsC96r(_`SSx0?W~IrEzx=#U4rGOHp)I+AuPluEfffL4+&B?P(d zkN;0?8M}9O2?W<3Cg0M%I||F$%s^NpV5q*L2Z*#qvy}VK4(pAQ|5%SP6t^2H=D#(6 zHw^ZTE!)QbV`TQn<0@8>lJi=1!#hzdY;=?heDF7?GB>3vLK6+>+ap?yB}Kp{lp%+` z7OzJ2Xlx$|)olw)CWzkOt+@epj$Bq1&BJzB3F; zF)Y}HoT7g|e{-?PiJo%%;9xsav|q!@!!*C-v0Ys&+PW6L5ncbXRIFKCsW~Tz2^E*e zav$MjlHIy4niTVo_=dU#N1x@Z&75vSy|FZQI%nBr4X-wyt(8Fh+B(f}1oQV_s zMqqt8>3jbTsd{dt`BKKyy8Xhdq=fU~qtQIF_3C6K+%E%#w#n-A!}m+IsbLnhC2eUJ zC_mkASucEa^UM0J`R(g)PYRt%pcyVz=OK2hs%oSvQ(SDM0Scz?fcW${b#GU3&lmF~ zN{sEJZ$jM%b+K<9qZXnZW8;x}AMvE6v+0$#lp&Q54rM_*PY1J-8rM8s!$%vr*^Y@O z1w^N2*H(Kr(-vbxmuMOszoP00)WYeoE~v9^1~V) zZVqOP*fQaNqror*v(z{lE2%IMuG_Zo(_8h~D+{r)_U3F)gnrg6 zk?er0HvO4BB?+057Uy=3WdpKn9?R5 zGj$tIb=92^!SYGww1HbO?X@dfTQYp{0nA4&8vG#d-1ey*$Gj?RDYH(5rBu-_u+;TS zTGcGB4>49MR`mgC5tD)bNAMt+c-y_j_*+L_=OvEGpON!6$cS>n>ZuDF%wdKa7xs1g z_07bz%)jGoHaHgNyV3NXD*-*6sIX}Uiru6@Mc;*NN3k{S4I0@o>6a3?Pk5uk;B^GP zsi*5N(Zl)SL(>fNr}ZUHs>fB#qaYiAaSLmGkK3E^E~JT3npS5c)$t8rHB`mD1%b!p}q^Rl|2O|p&Iw16Ju(tl)Lc?5j*2nw1B*mxK={-P7Z?)!u z+{ln05%bW#Tpr@igj{D+VQrM#zLpsa+-F<5H4g6BZ-BZ{71O<^Z{Gj!hIN&8nf+YZ z#!l0}rK+v{a_X)?+mJ(vvx$Ju_-(iwn>LA~1p$~m3b~_+02Y~`B7aJ6Py!PhLe3iJ#k1eTdxS?Ynvi)Q|vf!{$I)1ETEWt4(#5s3NKTl}>96pf{Sz#GsP< zxyI{B!GaF_!G%ZW8ncwRP;5B7NO&eTJBncrC0%P}xmirh{aHOJKhO>xg2SX*FU{ucRlM#cst5|ygYqe5n& z2|)$Di4UXqJfvMXJ`2g*t8Y@s4hL7-6C>Z6xVqC-(5?1|0D1~v>o$92Hhu&l(0GVq zq9Xl<&stwr6|*q;k(f`cz55}d>)=~hSfO}9*fqtkckII(dXblHyof?c zE_zvMe|&X+oDBDdYXEshRl}F;xlxe3Qu%VQ26m}0t{oZ4wb+?Vg|%HH^dmcdyck-g z6U9Cnd;>pMLGVl$gqd~iJgI(j2gmYYKv5GY-1oSeRJ|#m&fFM=#@`D%)eDYtafCM> z^s%qX*WXJIE|FaW@j8JY zGY@uaZrQ7k&0y*M;vMbT!n{Tb1;>j;M;~9R{6EpZ0~$5xB?aGNvXmSJaYju)-NsW` z9Ku3oez3I`u(z4km9It^q=MYR-PAHo+J5L{uYsKQkO={xDII;9oAiuQo@J)4?p+Cy z5_SdS`0UO#TdNR?ZEUeDZ%p?(DQHD}O@i+b{N8rES-N|_YO9UFwe#N@bpfK8Y(BKl zysPZ|?}l83qr~(|_{Ek!t7-DjP;mMMSO)ORI{Ur0QegHMYnB@F5MxVA>+ysv>8!!0 zc{$U>lkxWjolnnMWZ#x0kx{oz|XIFhJYmsWc{idMW#elo*ooSa%BX<`b_8Dn9e!Zl45KXS4hOjT7xYyZM;oi@B$4 zDo@FbJb9#%A*vwYr+e*A3(5k0Wh@knWAS9sOYIx(Xezh`BYYTQmY zYDK;qqZx{FT#joR_-yt@XY8O2q-y|{HLWe~InPw6XKm`^pZsnuPDE$k&(w2ULTm(T5ojWtx~i$)d!LXzkQ53$&5d#ZIFpK z2{JAo3c+Xgo}YA2zw{`dnqzOmS3Tp`U^a`4DFCx;UU`+~=;IHsrA1GgKKy&;Xk8{) zJy3t{2PH-vYk6}dJ+;eVR(j3e60w5WX&&rtv$nbHz3txOA1;#l17G%4ij2?TiXi0D zOc#=&o!nlytN7mDbqTDJ_Z@XD^<09Qtmv>F{gQ5x{a0w9#qS~%zyg>~ryN3p%JP8e zOLmso;+%x9qrxV1$LEsck%aR#^FQ~-QZ!}@8BC$M2^>owCa+tyGSjimJ+|AH7hcvJ z@Tjh-3O9kl2oI>f`skr({rPWX)eBRYGw1?miVdh4VjOR*L`cC>K*~NqOO1~Ubyn{( z|GQzqcQq+IE+27qjYuk3rL(0GJ(AFx9+Zs(|3Xs?@nU{phliHcfceh`Eor%Q8ZWNe z5RzxT#zlsiVc}&DaNi)m*w_eOf6X2V)k`O^W8Lym4{^ICts#=X-eB1UB=sa+NMN_h z==KUOe_LJ+Ayj(}oy+v%)cSzWE)I_?Zq89R^)ftrymoMUsq}4cZt&xW6f@rg;+rUU zdoYvq;9inR{sjT75N)MS%HTlm{`}i2H5L{2QfFXvlSRDc+{x&ETPM^%S*n8Xj?ce+ z{0YdyY&s2MAUM^eyxTwKFv8b-w`ajC>kKYPw|yiyty6WhCZ74AcWQ~YQH1@DvG*F2 zPML;lumq${VP%`t#s(JMlSq12$;P*LC7r@+-cc3R{i!)IiAr!-hIbtyyjQ|gsp@vl|!tE}4G|nh_exxC|q>P|{^dKkwpLT53DSj0Ft9l)@jO z^CQlu&+fx4yn@pbETIt%eZ&$suJL(J+4*C1zn@lpw^idsx9ZTcrn~OIy*tT)PB=^9 zEqZs=*pG2S#OB-H2Vy7}P1e)zxcpx#(Ot+I31hj(&te;jXyDVSCKXlq?M-$M5`8MO zf#_BR4HS|0L#3S$Ac{C^bbjR8?8BeoN;;BUgcfd9*R~Fg6?*7Yi;ht4PI zOt+ddT~;#uYZcZsUTFIVyC^G61cw0?oBq2oRJ95;gw`tJA12afHQPfiw>$j0Vpwn! z&|IIC-}*p+?*civ9}9AyK1F-KVkvDFKO}PtH zPe0F^>z8mczrx4ziFbS@95W5T@c3cfHk8aan&fXtF{cP+gR~ zV_|_sn^eT`ma`vK-s){h_JD%09(0x?j{QC%VtPTPk@7VV*=_$V+)xxTx-!g(<#tJv zu@n!DrWnoI*}2+KT9 zB^9_`F~y}?p-&SIJlLldA7RyEmX=Um?uqsDZNcJ;p&+9I#=3EdEy~4S4NcjR1Edds& z>CSEF!fl`Le;qnuJGH0n%|GJ%D3_WPrS=;BphVT7-T)Bk`uqfVU@K` zKIYBOc-6RqwT(9f{6s$4NZd|AM@ESRVcsS0 zd@J9gK}WzZ(!v~=S=K${Fx7hu(&yE;KuR{nCbf1uk~q+^QU%VBHIM;;CDzSKWj+rn zU$DlY_}L7 z!GoPG>MP$@H!K_KaS=@-0h;Ka#G0_$3T}VSI?~N0rS9NFtr!I%v1M!JWnUGd?00!H z7*BA-5i|7V@HjnuqqX9h1LIO}v`Su>cWyJ&j?~B-B0i12`jO2y-=iT3a7|a6QVZ)(7Hf0ERpyj>64y{dvjE1Zm&4F&6v%r)@2>WLbD{J(aiFpl8soNL!Q2ae$!*siOn`X zjEv&TyU*o<|0pTc%Dfhm8!hMCS8zGNY0pLIej=#tB@P#R{dYsPkUq=c8()0uQqb)` zZ~Fubk=J$;rfH$IbqgEVbjT2Iit^N-S3j+MaAyW$j9z`J$% z4O-#kST&1Yv4N89zbhmd*^00vN*J*)CQg)zFRRHqnqYHb#MSwS=?2vESgg!I*C}_B zovOobCkZv`(*?dA_1K#UFF34_;$f!R@efHh;))njgGAabcHSSFwdwrnI;fNDN=m9s zU^^A_YZX#eceR;(2lqC`-X5QfA~e6uy=w?*eHs`x?$Lb!$@7gzrbrat`LZlz{FDL| z>Y%fANzjc2&9&U~(DX8L7s#$kKY|yI(Ft>7f*Iia3s#*0ybuV{b`v6FvZ+AsQA#%DQ zT12x$n>V7Rc#QsY%L?Yy@xWMfMb)oJzJj|fc3*!GX}lb%6(9r!>z{$Cg^=(6yKxzA zyC~P*v~|Jam~FH3gxaV12ijcdHpQUDdXN9mZhf=a%QZgOc_EqnxcK;I;drr)SP?Dl zlB73Gv*bm)^}^XWNNB%%qxo|#x|Ff5* z?qsmc*ltPuKxUFZt`6k=-;FU4h5B-mFpqF>QPmMLev}dLr~1SAn@M^$zPS)&(BMnD zcohlZi%kLcHi!1ss5e`(AE*_ENC>}sDc&fOpV8$=qx>IG4{hZ*kq*WC%iYE7mccSijpU!PrUFmM zADM$n%iKU9W3sT z2$;;4xV#BZ+k1qlmKJRPvS#7Ga*C#&=|!+6FZPcz>D!T?N%K#h1N0ZQC(4f7$5F+t z|Dn=;D}_s>>C%i??PqKTCPlT5uh` z^xk@ko2FU)Pk()si`r*db{mLz`*4~`BaDP14@UA?J+tjFF=N&@dvBYrx131YFUEvz zw6hB>UY2LoJeFNNcUiB;WMBx-TypKUZ=Byure18QIxckh=i%XNBB-L?)u<6$8^f`ZoQ&b^PGQe>ae&;M+&XE0gSQ z{A*IoBYao=J_dIQ&*eHKI7x!g2VCG%JXM7T!cH2g~1SS~J=e(3kC9^~Vy57Z=akBWJag9MkO zZ4bmgjJrLRcX%A`*kS9Mu{eCNRO|PZ;7vIC3kd`MbUjE|8Dc+X4Kd?Qc!5h*_MjZ^ zku9j!S;K1b4|>)A^~YMhdIqiYw^6==lo``64I&uQP zj768pG%5V?+Y&5z%CrH8^5!?kDq){91*`#QO<6CFu6CCVD?w6HvF5Tp^UQtWQI1WI zozNWW`*XD|`1)DsoOXa<#NPS-{Q1Fz0iWlfo5=1(q)esQqR4{6$SZ)xR!!ze5FVeF zm0#he6ah26qir*|Lmknt62`qo4qoFf;4pf#)u^|KQM_H+9x(qe{eHwe@n9>{g}o_z z?hZdM_LoF97^L_KUzSiOa96rKe7O;&6{dKl0@EO7b54z#$CB{|goVAoN;V8D)C0)X ziq(+^tKI*IHyfb^V>ZzEQoh}~v;F*N$$jY4Z=X0DcPLhB-{W+f_LQI*@a>!*{N;+)ey&_RLLjGQbSzN(;ofYyy! z#3A_Nuwe?1iC#;+boKIC#WzSsG2-jSB~15?5&k1=uh}9WI_|tDo#SHmF0C1?iYPdu ztg(rG^SLzl{JdTCIxYK9{gvl4bG$q`>AMB8Yehf7hN;NLct#O7wyd*FIiQ3VR`tI8 z4nX2zdxB9y3f&v z#S~!denYz6etK-#hpjujZqwiz zh!Yfv+d`i~5Rtk71$M`LIgg+XdZ%Ek`3~{G% zGs)4HbqY+H@W(Q%myBR@XUYBck7t%|dQoo=0!C+Im-4=wUa@^cI6hmie7&8hZqYvR zs$V6KvYEgex3`}%Pw5&aKMvj< zBBlMB3d)&}V|=`YQ||rQt;d+Ti@1NEw)Wd^2(Mn`#K=Y2-AgqVEj5oYVqm)tJet-0 ze!KYC?NRNmq=R0a0b64rL3Ej3sY~w-YF52D0n+j7mq*?0lDm#ak!{$O@6X=R60{}V z1k24G=hrAD6ZMA=KlVCLAHV9%9&BrtLCp>NS22~niqJQgCt28b8)KnOUiyn$jp~vF zlDR|yA?{rlRm#HaMtJWBnu(pW;II6SQjeCWjRE34(bd;^foW6M#mNAh6u!3M5^0=F zEr7#Q=bNbxPmIXlkcprTt-^oB5incqeQr8GIuz~-&(9-dKsuYQdL-e8@q>hPJ`CrB zK$2VpTdQ(P;G|_u$PKaF#g&LJV&SiGMet8yk$`cDN9E`HRpqg?pW@cO-E2igS0wrJ zFs)7P_Og zexOzCOIKFp+YE5lF+`7+lGWpvTv&cYigN3cm?VkS?v61P|G_VfsuUbPi}(GNE3M=v z`&?Vu@>+3t(8}KRWl9jmLRs^C^zq6>Ghr0?v#e&a=+8J9yEO zN8GP2ZrlO$kkWxje;(FYi!Z-ymQ{MZUN8r?r=Ki^N3&2`+T;2H>p?q3JcfGrFXuCEUPtotv2S% zLvnR>``8iK=x(2wsAv$co8iCO9dt1dLXU0g1N()CmlQInxl6wkM37)X&WvcavGTp0 zcv(38aadw^yX>EIJkctB0}~9b_bFCxA+h8^O-~J8Z|vLM1A~>Tp~QmC-#mlQJPg2z zQF*+&>Aqi{`BtYU5@Qj;3{dy8`ddO$#m2nBXQhsX-ANZ-d;+U_rfx7l@OC}Rdfc-g zHFIkaU;Sh*6K0|!ReRyUIpgBNB=5ZT7m?J%YI<-8QfRlvG}#C1V(?}>=B6tB*TU9O z)rVDI#aLMk4v1M*3%}jHrUAxfRSdfQW!qWTL9Bti4d4soNE!dQrAm_^9?P!8B^6sh z|9IDLhxXhS&H~T)f3GA5AC+HSwLa(v4UIR5{YJJ)$=#Is`33(XLdKS&J62j>;0OEf zx|`!c%z6&(@od(k`|I`gyy;A98;bpm#(LclMs3m#7K z>zId{l-%&W9@2s*EE^%Et~_SLBcy%E;l{KAkfys2BP$Bro7Us?dHXvK)nCzJvZ4k< z@=29x#>Q`aS(HbRa=V32I<*uKZj(x9N^J*m9R<3v3pRy`!21KHsE%c$2Lf$>9{=nM z8~7eiF%1}+JweO$oi#GBk=C}71aZuQ>2_~9oI zNw$ZI+v)x3?SvY`Bxh^VUnKQ7z%fZgNA(t`K((J&pV{&h2srLmlv9CJ2v^AZNKtR0X@)gBt0O9Yq3MHemi> z(e&DB%zRqdLMg6VM3u+zuPJYUEbjl4S8ltoR1ZJP-^Suf{U4vi*#*{qLuf`wFnt@B zBC%Vg2qgHf{D(9~5^S#eLy(?N_WXLH{ZhACYC{A2n`YPP;W{h~Hx7E-EB_s+%YcwH zs6=-ct(i0X5af9{D!Ah69cTuFZygDwW;WD~M6-Q))kRK9F7w zQn`&b?Uu$9x^Ls)D+Ki?Wr@KtPBeSNh`%hgpzq?fePy#K5qH80JVY+tK>`znC`!gi>7{J;S8d~uaOT{9Kns%W<)oAk z;E04X=jOK!^oa_Y)qHQ@DRDbuYpkO~k>}w9*Q0d@ropWea&3+0$A%owNx6cD#EIF1NRZ}Cjff?a7x8xo-J<19U%Vr{kL4(G z!dh@K1(hY6_*zq0Mr~ie!Au|0FZB!P|zN4Y4~Rm^YPK?AmS@o zl+Yh}jfcf}p|6DD2-^OH^=%84a^mGN5+Hc&*6~@X7d0UX>IvgE#2-N@c3={r}(n>AS=-_^LMJ)qglGZbYoz%P4>UjJ|cd~MJ&UF zobH{=le$Q|UMinOKwHi`Hh7Qw;h2_TCe+;Pxoq}g@AbT;x>qQl368^>R^`%CyLr7?aTscD`%WfxWUnnMuKB`DHv_Ypv{FPdvETsx*Bk zA0b~-n8vcU?Fc#^1ummqeci9H`TawOET6skN7rxOa!9ly$7+I5iIh|C%Y15gt_iuE=Fh`Wj40VJq;L4Fpe^{@&4~nvmJ0UgVfqnrek~ISW&d#74amVM zu#Q5TSg$}7e<~^wU-xJS@WS5|AE4yLYaE^_+0xfO&% zr=bh@?#A-5cY1QV2B`qr_T?N=v| zxf%am$V>J)zwC1|*L0_Y4J>xzP={zc$?QWnJ)I6*Lk&~$lh*UdMmzb!Q54xncDPJH z_VBitrZOqGhc$~5zPD_1bUFTR6KPK1q?Sv0iqq7V%{TNNvvX58R=n8Y;d3ciE+m9~ zc_t|7@=HesPD~8TfF3F>bw%`y_EIvpWUoN=A8^e7{IkQy`jrGyLEVNo>TmukNIsu! zuUco;O+KWp_^J30z|HQID7>${GA?p?4$c``l@svw=-E=Y)nmf3u^6 zKFv}C76TGUGknB9hgO}F97p0LhW{%J=ol9|U568gPmw0XQABm5n)H=)A*0I%%^_o- z-;dWfZZB9#FOCJS@XX2hS@DnD?`8kN=Hz3cmIl2~%`)B!Uf~|^GBz29B=C99f9OK( z)+2!L)8}RU*EsTo1RhKAJ>V>nUAdH22fb3u_35%mdMKwD7DD+0a+J@E0{;Po-cChb$hK{r_P&Yy=QwP{BBo{*RFX6!@8!G+N;(Y=yfG@yae zuW>R|3ORHOzeCA_; zX4aMyv1KoF#w6dFvSzH|6YLK2I1B9P8h;;9ho%c>LU(1XcA4$k%q)v_TVns7Z!QeD zXs_M3BM;zUyoAp){&$0w=n2(%U3_Q#s^>`O(dbE|YG2Gu6TP{0}<$rX7Xer%=*xT6Kfxe4D)ge2FL1#-|IO zyZ*>r%Dd0`ZsmO#^W7DmVER24QpRkf<Vp`bqV`lJ5fd->!jdpW#PAdi^zoCh;iJ++JYH@2(+u2j09lMB;h>_=Fqw2N}nKgVIbqm;)RERU_4MY+UPD2 zpfdn`{BMz*-D&C{3c^ z6-d6{^VfM*#%4Y#dzy@gV`|K7l|}HJ{JfqDEX4PDgYwZ$&fCoe zW)9bml@jbJ5D)J~O!`R8$&9R>u6iTMg2|bX9;u4aYWsGcd`rsqo}AU`4AWwH*82-W zdB-<@c_rmnN3=A^UGxSU3AJ4(l}@)#b{q*>&r22b0W}Q0-WNOyV6EPnW3q zrm#rGd4+Zjl-Jb}-F(ATO;MywXmVOq7+SW`D4Qp{XTSIsUGR?j?lAHl#ptsL0}jEz zhk@G_W-h`&nPs%8FJUmTZY%WFk2PR4n=QazWbsAo0m~ZHuVdp|L}hVFO=Fh(W=l(~UzcZo7olG4Dmj zb7d9MF0e@rUP+$uAYQda+I~0BM}PdD^6$<}s8oLu$OCCgfFiu;s_(eDaAZ_ki|ttE8cWC;q%j| z);_@6UEQa`tQ~s*kUd2SEwSJlR@F~xm*C-EplEKX&-GH{x(8fQHc zal!J6tX)cPX`ZB6?=BtXzdZXBUlQ5+AQ)grh}8>-Spkq)s7vC1rR_g{uah-H4(J!* zEi2?DKpVK|lbc1(IE&hobM+(4Xbl1V;S(|)#oJjsHy5lMi%L8R+5lM^_Hpc9+@nL% zBuJY!!6It26!Q-#&i1O}7&L*$;$)EN;PAqOyL`3auH?>-rlDo?eM*z}wA9P}eF({1 ziWc3BL28F3jlZ}vjIj*WUPAM~M=j{>VlGwwPa9uF)(g!=+ysUEefRT7{cJ-GMo~+q z{_Hwv`P72GjqKY$tV83=eO1V_VJN79P};n92GK;2AAP|eA*9Z*|4($l1vu|%ickW7 zbwmS!gdn-w99cu&U!ZktxSz96ZfuM>&c7!nAnZk4gjzxRz>U8i;HsFzi_^mnLiOCNUWXA{g%i2T%yHhAT6H8MP|G*VlXA{q;aV zq}sC6r=3>;!2mn@&b@l!E=C2oz|-@$)||JW{}rZ(E8UvuCWq^1glWr(pDh?u?D|OSGfYt^s2&qa3uHV?WwEZ2 za9t4}@n}E6SC+VT*sTEZw~BVAhDR0bCHR6F3pTwtl^p3-B3IqvduWv2T&8xm_Z9;J za|q*YVOX;PDZOHhV0B~TQb>h-H)%c|K|53ygHVqsbjhhQe1y&|W=%A5*e&u;W$r02v&2txy={I25e8#poH zwA$KEzeC*-D(bH?EkP3BqV4$_UIeeA={_5HP>{cVp5Q(rvIXlo$JTXQ$)*M3H$VBJ zkekU;WbyN_pVh-`%-A#Ey(3(%L~lTlv!uF@`-VE6@s1QQ_L%R^frJFF>as@8=3j(J z5lXj>*Ul2-v9=hSK6j*TPFD%t<>1i>OTW&QrH&P0SiVa7&|~5ynGyD^BvXFU_~wRC zUbp%|(vf^nQ|+hl4T(~OTK$JvOUJ#8>##`H6XllGFU z1=SzBv4+=+oJz}MmA>NR$_-DGOd3*BADOUfK>v@l3y~up3!h8tVq+3LzFvd2&?_XWD(HYA8L=R#BIiYuP*L1n(FM6Pe;=m61Z76X#&* zk;xbmlZ+ZxAToZcE#spbW5@_<1|#G`OfKM0)1hiEr?YB#(`ohUN7FEo=M&BcFmci) zojAsV(O998z}r3(Z94&+Samn^dPqp2fX=3Ygv!7hTXsM7L%GN=%$7*`jGH|fvvD@Mwhs0%L_=#xs-5$LunC(gu%y-iS89u z6QjvJJ_C+Ej|$I63S6qIua5kt9HUg1Sw@StTPI~y2ZJM}a=U9s+#4F}*F&GNCn^sd zF6hxJW+A*Q1Jpc2&I$ZGq#2gh=i@jLACnnZ3bh_TeTTp17vg&VKG3c%HDt^+%{JYh z#Eu5vn^*~SRE6|FUIp%{^%nb>PVu})Z+DdFfl*{+1=V4jl(FNCmFVLVXT^wepQRz$ z!24V&IvkSSk>h?EZS%zMF44L@W$Z6r?0xvMd=vl_op{-WBq^|on{J*AZC|^;UK_bU zzL|S$J92*n&jGrvoWBi0(g0yFadFClp;dj+LSfHXVoE5E7DP3|;=~H$B=qp9mt3KC zQuB7aZ%|?ZcmdeYXy9vJ8eF%0?caOO`a}RPHl}*JL^z6#B$r_!4 zfZ2~$t5xxvGV%I41q>#dAMOvZN^6!Y{gn+}Jlreda8?5mCLt47%_o`ZBa!`$4eetl zyEYjK;k>FbdpS3b?8ho}PD(ZXn#SFQk8oMGNyY{hQWo(p$?H8K>LT!KOElGvn6y>i z9?h@XL;*=Z%hK?N_YNxv^))C?6PNC#^4N26uk>@cyzRXDW(e2q?-GKp78czx&^lj+a64nV^^Ey8=n<~$dQ0aIxIatc+>IP zbEf?C303|+W11O2_ZK)jv1J>21$KX`JLZIEvDwJ!KnRdrtPdu@%wLOm z(qJmEp)C%;;1x<=WtKS)4Q6q~Wy_;^!H#anITrEsHg6D-fofVFu5~x3ieeJ4Z#~ zBMSV{`qWe?&`5CDiqrD`(x_9dMWcH|R1i&b^Mn141j3p-y&oX|h=tv={c0k$x_XbvDtb010>2Fvhv{n!|1wHI)|-K+ z`aAz0|2$jng{vFK^sj=p9tBHT@Yv);U{^dr;h%~~?v!9&HvRLHI_GSSYVJLC{qL=C zXYMcj0LG$+M(Msoz4axd=GMwj`?q`iTOI-9YlbG8J@K}1ea?r_Ce4xwFjYhD zTP1%8!#t`ck1Rz=k-L5>3n7;)`+{%bZy+5)|?J@@2ly_W_Sdf<4N>~5Nd$7tB zH0705Eo~KW&1gPj3=S|q7QMj*IvoL~h-9krf{-@q=!`6w9Pn7~v!Q?4{~w;~e2t(9 zY&>MjN_@6m%>OhA4bhd49cH4A$b66UpEXkF+fRq{+sywtNaeCEhAXMJ|NHe+gSRJ34Po(8J(NX z96dCGWbA7tx2x>0bs*JT2n)qF>rrno)2d@yP8*hYcF*x#V`yz$Pf>@Lvqn0ur5hii zxSY~r{4&7t+05s;p+rK1j>qP#J*+v~(v_Aaa8$X)JQB(nRiqiFZ)8Kbk%btn^NX}= z+p3>hhGI!%qZ0K@DH>Q--Yv*PbnAr~guWD_JNp$mZzZm1Oa9IL=K6FEWjS4VHdM;| zq$eG;zZZ`ona#sG^*(o8T>`%dux``bY5JY!_Pu5zL`Il^jUfdbd13-}H`kM#$txMl zIAZ3VgNEF^@SCHgqF7dV%U*_X18L*^z1d64Ru{~DSLH`~c-WAnvmx}RTZwi=MBPi^ggZ;1YBdr| zFt&F&^F1^2CEjUh{aT@WMYv|wbi2i0jSa?k8?_7jTcv}|^~v5uYva55-Vw~R7zRC%E3+P-NlQCz^_j_F^3}wwuMhf{F!s9zk!*o-Kr3}7&KG{FL z-YcU$OkBBHJM4bro{Gx%l8ldyqe~z>Slr*LNsBp)uAbe020vBF@F=ot-u0fCIIQ+_ zJvl`mU})ibpG~;+S68mlNHg$JT3r7l#eJ)D1GiEk&_mfLAw40&FV_1jIh!6lD3LkF z<-HG}GF+J&(A@ujWg}Z!y9E&Ec+OikZcL-_zi-wbTBfx2ksp z+XW0h@Q#EDRQ9*GfWXgd27*s-cGEtu&GM@*3Q)*G&BHZtrnzXf4*@~wy?WAIF2wp( z`$^OJNQXPh0GYAt>dX39j90PtUl67onX#x*Nm&(141xqfUzylcCnn?4xzm}UwdlWU~jOi=9WhsF6PnN}D zw>E68S)bn+_sLCrlVNCI@11pXXq27X!Gp|9$YWNGv!qWA_r|$1l=#MheO0L)Ld8$E zO7>kLJUTk%9+~=9{H4h7c7s3h$xD2Je14T0ukBP}LTSP3;h`#P<|6F^`Xar3^D8tz z*Y1KaF$x@UH~#L0uFlwo9T>gnD19kU@Ns955G!6QSS>EW%-x8+ge6UD>oQo zZ8>rh^6A75n|F#dGWQsW03!BK!?w zeJ|#Py=|&-V9YBaE@xO^vAS(4SQ3R1&%DBTemIUg-8z@Ft>Z6kYYXx+j}5zK#alE{ z3FVyg>Gs@(v2MlKby>M&iAGO3xMPv{>*pkYYr6&!bj5)CN48O4hIYJmdPVVKpOs;+ zy%8rqINTLSPEza+TIRaJT#@1_)Be?Fl7COv-a(``9`tVX7i5JRP*qa+ zH>_GZ$CUE)^f2m8>vhMC$DPbKQYbZ_(O1uA8e3pf?RlxTrrVCei7xFmS;NWn2$A>o zzshMoG^CZ^3e&|XgI-Pe_c%VzK#5O!Kf;yVI4X0CN`s2vtzgFV8iuTmJwdm&GJ_37 zd$YWUcjrgH?bgQtwV&Eo`w)m>V*GWbFu7ne|Jsa_{a(`WO6{P)rd%!xw$3#3%ubBF zVQ=}hO^7W9;2ki@xcrf>6_DGMR~%jOqxH@+dQ^l`bR zm6v^3J$ZdiLV=}ohAfp}s!gqz?VT{;PI9wMjmd3DTPaUC!w+kM%~LvkVldyN8~pJU zA4q=kb6)$zH%d_4NPDZPR0BoIu@23}Y5kl1f3n!BHo-haxsJFq*eBiz-;+60k=OT7 zlTFnY@-7I5^Ecz=Ty9V0Y4umOdyb0|c?TN`No^i(bZBPP;{xwQ$g7Z!Nf68at3~p} zm04*=RyHE~A(<{x zZi(6}4+KZQkI67j(7*F4rN`!O7mq-PJe7W#eD>#9)<_|G!INhKJQtEA(lkb=!UCA znJ{gnaNK~a+EZvwAUSrPrYGC#L)_N>*-TUH{;|W8ujt+LDOTe5b41Et;nqT#&F!QUJ<=*gzAkm-Uz8YrE*gqw5ve`n`z zxSrB&E)nV)6PP@YD!hk6;5smDpZdE z=KNzZHQ!O*CQ`}JPk~xwk!1ig2^_vBn`l2XWGeO5p3-Gha?1 z25X&@PKNA%c#);m`Tzj5FBxK6vnToZDrGre&48S5U3<*{r3u*`OVVW_w+pZl`B@cI(2}!z+STyslP#$R>x7v`MI!b%ld3^?>z*}th z<=CnP;Q-CAD{W_5^Bt{)GokfZx=YDZM>Y4+HDa1^Qq&&5r9Pb2Mu53Syw!#i{J$%C zoSt1=F1!Xh_31(>OG*6&-6Pecd7y562PO4R>kyy=d2a^TsA$IEi|!V9*@v#KwRgnI zNIbRu?bcp%r6U(+Wulq)SE=*aQ2~9x=EB~Zm0T?lDg1|LzMZqatXRVNb^U zV$;wIEO6JY;0Zc@l!98HVD22o2D&7&elv1q0i*;nK3OsvS3zZY(|$hjj(Nju0Gowu z7r|5zNSXv_-{c>qufI3F94QZ6tX{d-TCzNnc{RUFW>WJega6l`O<+Td-VT!9{Jg=x z4p7ERjJ^#nQdUY|V+@1vA4Hw=x!Spr$8dg;CM&rCLnEaa`a~Lb<4z9uuN)2GMroPZ z)?U|_)3pELrB>Nm1eph)x2xS}W@SPGjYF?M4vHt#BcRSr;{iL6kkkX;`n60nVqD&e zIY~Rjds$_`oDEHud8#9sH5+kW>@P7TSivCTo(wq0Cb2c|=_Y;wxLz1QVvY?IT9g>N z_wC0DWo>i6)Sb^PN+MrA85!R~a)yR4T?a-M{79Ub?x)-onCxqNhSAnb?iR9yTL&;LAMWnfFeVMH zBzz*saI##W&OAgwRCGU3WAp;PoWkj+d zFB*PuftK8zje`>F=Efy?pG-L!0v3(^hgm}tlqY?7JdaMm1Ey$=BS1Ckr;82ck4=~q z5=}lGf%l#hCeB!twSmNPq}z&A2K#;Z_0WZzz(%)n`x^(TJC{))^RMc^XOYs=>HPqv zPQKkN%+OD*`aPWFI8*D`*V5yryXYnETlI&xQ7FXP?T%BjW>#+lwR9lbP-8YNlK=e! zxB1NdBK9GSx&pR~yLv%&Y_ZKx%~|is;n~*gq?NJV_BbW*0m<|)G=zI+VgvHcyuqw@ z1e+c{tlJi9SEpa@gJ z$O%?t>pl9LP+W+eRg5rAvEQ&a1T$j0*f)bs2P{o8D+{_-;010gJ{Uwb=g3C0uZpYT z{$Cr2?zvWaIbbQ%HaHLor*02 z{Py}5!}FP)FJ>$CtubWI-^I&_*QkR*YdWc+hBH_H2gS*z{)Dti4ZXucHR=R=7wGpb|dUiQx9dbV9q+AmV9WR+NF*~W(P1dcZ zG_iCtcHxe9Lp})1a}>trcIOU4PMocOA1>dxs5V>&@FW&W--n?}W6RTc|oD_qUOI`S?Zx*CaEpn!k6JTg-aW z;l1610JYwvVBSTvyd;1Aj9N#VZxk$5kzXGWc-w;kQ++AduO#nd?)?>MVnM!q3X6R= z+%P{Qb8{Vhb}y?wJk%VVY-iOq`8~|ei_7-Q{_V-!D-Ms{xQ>1%o0};W!oQ}+w-`W) zxhkS%MLWV}K6Eimj9LS3v^gXH#0#w|C#@;@J9gLJNX~`TK4PjhP%UTLlsBH#&*kkh zfhIJQuM5#`{+b%nO*HQ8GaT9-SOyt86e6HNF>RxB?&bZjvZ|X$(-UYX9fW)*f%v+V zqbT-Ue&^}@I?Y@l+O+tEMt2xpyBZmBBF~(hTmqgx)m(ss!lKH()dWkdD=1)jv5j63 z$D_}TeWC&PbbR%hS#WvYp2wbUBpKGe%f3Wsd9i=8Urf@A0>WE@w35CIDfdnfTpLK` zApi~sm{J;J&jk-_7H5IisH)3HA-6~q<2!G>SJB75Ie@*{XG6RZ5%QtK;)N&DXRAKH zJWKrcTJlL+`_;$Ny+RdTHBg6VqW-z|P9dpAyXcprzP-OL#%>O5U5)(0#Ll5y64Hg* zSPoH-uH=>(sQl0R8HPWLmec@e&~dftK8E%TU5I)EkrK@lo zqIc4T^mFRns!QtK?h<+I_DLYrd?tq3RyTy{m!t1^RWUaGp&TDRhwtyT;=&m(v;TK! zK_3-%lLujP5Iv7h`2Kd+?WT^t0S1`bIlA@vk(sg6Z`64Qg}Iel;5h71_c!0saaE3A zcfcDBHh@p0Yzx;~7kp#P=oNCsBLRYPPzDgUT>y~{w1~9u;+JhE!d<;lMhJ>wd;XEp zCRCW`sI(J0Xex~Zz;ASEUMqhtFuD{-luLN}LrpV^gBk95bAbimT_ZFdx_C5mp<#XUFKv4=x){tJ)q!U7 z-ldf{#l&FqmoN zuiCtzwtCuUw(n4paU=Z;$H;7aWVNv)_i=%27%Y54)4qMS5jhzY6ejuEK|k#sYg$bv zP<*W?Gs2wPo};_o*mH?lGQE*CZ>N{^T;UY@0^j8KNRZLNX{~S;8PUK^7UUrJwXx42 zw37#e{lSibNxE+6=aZZF3M*+4ho#=85_sngoSR0^AmPcpItneQ4wO7VVZ^UQl3X_5 z8>v6F#&vH|=p|mM(iFRgAtrs0)vu~x#1ASAe{W!Jc2tq+kU{)H=7Ns0(4G&ALKUI$dIQdVT=Gdc zsdc&15jVd?81Y`RaJFtVyVHZDVCY;uC;X{oa;`_?Q{xcn-8t7}s_GF}Q+_W5uzP0y z$l0UnatNjo^C0cD+Jg!5tTK!EZ4BOjif0BJYl%R&4^t6ra0ENY--qE~kw+HprJ$Bet-Q z)*E;bbPKNssn19InqV&+PV+^Fvnr0c?W*e57MQeD6ph&CGBtH(H*TS(Q?^_k8y~m- z2IOIPL*IuEM z`Xy#38Cm%C$R2sz?kO1TovVtreDkV5emA*A9*e?9?E`*cbpo%u89xKmce>7V=P)W6 z&Nne#G|ew;@A#qJTSFym!fYFN|KSDoNrBq}o0EB3n5=_#D!90#4Y>TvwhzY*xYIMV zjgOgX1FJ{eZ(SiIzrBWWu#!-IKtXix37<`R4s#bm@Dm*GN~0(=y*OiyxJVri#ccx5 zWH`K+5Z#ea3Ck*y+F5pRvYx)i)O?!Bjd2y z0gKc_eseMs>iBcnbiVt^Ij6uK`!i%7Y1+)|t9D2^%4z`-jmic2FC+KV|bH|*+87g2GZ;L^fqp6sOyi} z&o*02_?bA6w?R8s@r&vps(s~n+!AS>WGXHhvn)%*LLkekcI?-F(0{|`yFhz?MvxfH zv9Nl!kI{6PyoOv}yC`2Aq<`NqO7^lgg4GDlit2_I?B!g$Xgdt2ty2hQ_+e3-`jbvJ|wQ+o-o z^@k{1vqnCO#;DHhZhcpfVZe>Uehs&Z?(w+CdecTP@UPiACe$2LZ*H{-M$17DyvKWpFX`?Lr9v}UVPJbMDZ}gF4{_P^W>!%VlOdTQp+xD&{{u( zN@S+GQ0jDQA7F3Kc(S;KfL2AY%_J!C)vvk(mzVryNu(RgjgnogfqzTjhKh7G9$}NM ze{^cNwXKvf`~i384=IisnBY^LXt8|DZVPa?ev$x1&+M3)@LH8uO*}y z&r{&b^c(=-Tn0_r{1bXc8ulK4ckYE@SDQB8{Moo|B{3v4-iVtwja6xzO+63FZ=L(K zLd!13p3t-eN$qK}1|$yh)e%jj4s^bTkaRLHHte2j_EeHS!1^g0`S@P5{Q568higpD zfsTaLYj7~P?|tVyigX>;N;2q1W_~gM{14-5;QeZt#SgkN^OOg}X#BHlXN4`jfIoeX zg8kGedENSy&ZTmm!Rs4mJOAJN#CNjY_2UwdnB1cMeE@y3q2hhe2Ux@pOWh8 zWWLfD$a__Z2KgDoLYy5K=CE&m7Ok>0r|0?3mku1TIZ(s$2a!SJV<&(YSVmR$4b=f% z3$5_evh*;M^!GmHM0)Hzl=6@1$WB6hV)gVF#BMO=FNn5^id}{`E-zp)+y@qpLTeD? z`;kY90t!l*;e(W0{!=pI&*JBjTiZYm%!T~k&tYaLo)&mN&)ewiXX9E20j~UqyG1lt zQ{59nCo>c3vhV0Vxu@g+HrI>yIUM{lVCgFdJ=b9(Ut$xo>a7 z>O(r>0^ycA$#R z+SRT>{P_=0>v;s-21~1rOKC?&CnI}t+97(fwN#hwlP6+F~9Yv#QFcPb*+-<7GT~g;-Q?Ba{9y|@AsaG zdzv+^%CW)9B%0=)8{LyzSoq^l)3L&C4pL9-C(x>OX0JWya6G#e6jiKl0%h)n)@zp~ zi_V#WctLsqfet25@E4< z6ezae;)mw8&*%qDC|Wp_Od_qRYB^{R%fU3J2W2Cf2*r0vyQ~KS6x;$#hda)H&Lu+> z^j44<-2-zc#M<@3EA5oxlrHJXmH+Sn)OP2&?SOv#Q4D%J1Q!@PRTwKJ?@w1bem%`) zC7f{~(-W}c@FX*Gb5VFmny9s>*;1s2-&N%kDjGlvZC!`a#Zb`MdBCA6cP>JU{50cY zZQ4Hi%2Zv zluFRM*OMhF#J2GFobzwnU5tplyHki1TA~LTZn`e6F+{gq^d)6>mTdM5pzFZ=zuk6^ zmby;QL{z*g^4YCq%arc{l8{9v>F{_5b1R8A+GT9Wr$(PY696rJ@QgBRv0!% z=iT{){o0XNw7#!6S=<4efnH2tzLMqtUl&vS8IO;vz0 zWI{J0#e_K;3e1!zvxq7C(S&82EhH-5G`?lE4)58jD((KCaz;&Bu5IyQ+{yP{-%5XoAFdE9hRq5a#t#PdJbU1kx{vd8fh)3muXm>9 zH*AXi3tc)p>psP0r@jB8J;S9eetF?-!q^&0X0DfUrG5eDF*ZZ2bwEBQEXPoxAG#fM z%b3Y1*~D;3#cg@4_1{d>3c0+WO-s$~Kq|_A%pY+b%^Z%DTWty&A8_FB_Ered#jvSI z>i_U45Gm4@a`0zudpQ_42xNzF8MQZ$no~kk_V_z=)7bdamKH^Y0y>VS8OyK$>C<*Y z8`&&wz|ewlV{j`pa4mmSRO>0-v(Rya4!oze9Pl14p5B*sFs z{&-UG@NB;78^&#Se{z${D*O^)O5&#x>E?ET5b!e}(ScWL+$&!ryhi$i&GHQ&T^W0p z-)Xv|&u1wg7^$nH+vpzKbEyPyuV8cQuBTDZ#_D$cLjBFGix`uC9@Wp|xP(U)K&G!# z0JJAvK^{ZO0jxa!GbYc|kt>eK<_n1G?c_mdo=0^wfjyVarN4)Dp0k}vBG=+z-SB53 zAdw-z%N2goZvU><&1%AWzfW8N-oYV3qG~vBNe13GM|PC?3-R^Z^f|H%YxAnOX{u7M zjjO_6UAg>m_9^7^PNum3`L1PU@sy|IW>#By^qaBqSdbk55{blrcn6YY727=y;o}G$ zV|tKBPY;XNv%JcR3JvD>$%pbMQ#~~lKWJFI4r{`Fe&V)H(N;vaX3Z#y;56I*`Iw3L z6GM+L-+ecsQQ$5%-_7SY-LcR@`MfP;(UO~8CyxwJ3r@8hT2}F7nErEEmWTBwZjW-q za>X{7H=5wi6HdR`=1}5yY7NeZvN_?( ziXU#Zelg7|q5H2Ev>R_54x-eq6n9>8@F?b4STBpuhKK|k+arAg`R&VP8uXIuPfl|+ygWS(hT zylRt-|H5-o7~0k<_&l_Pxx=F;Zn7Fgq{;RkYXB{?(C<7!u7laqRbM@n#8Xhp3v|vN zfB)de0kH9OHQ&`l#Pg)PkG`^d-eh9cn{-Kxon=O{Z{=m-twjeV8KofbTE&7GlCvfH zBxqxFV){EmG`r&)z0*7ky73{$<39sO+q*8&M#%WGx)0B4+l|lxw`j{fxx+UJc1{11 z==94cz-#89UI8cmOVjx}`k|J=*p|sNI!%|z8;=B5ht~r_o~_n$0vZp473~)Z&y?6+ z1(Q3v$akx&X;b7eoM&Y}e}*vfh_EAa|9X@tBi%VmZg=V~NhsJg)FM8vGI?(Grtg@o zZ7jC3YwOA}BDu%ys5dZuuexKj{(-VK#(Fe>x}<}L^+Yb*jL6EilWN6)R$1+3W4dhD z)Vq}LOS!OOC`Ttdd_fl zSg(AyqI28qH~k;p97C;rb|V5MUxiu^88K(}Gg-?KpOLa4mLI+b9I&?D7rfXMw&o3G z)&`53yfmY}8?Yz=e5~l8&JAEs$uz$02#>{ff8YKaB=c|fKRl-%F96X_T%X7mpgxtU z5huW;_ zfiVv&Lm96Qi+=Q^Jx!9$pyM8SxRAg$Y1G}A?l}L3I|;C~gFP7LBFA+AY->dUmGG$_ z>U*FwyPz-h_PD%+I~(Snl<_5tBJy%D?M}M*`eJJNB|$_`s7G=75Pj)_*-JI@fS*Z_ z2SR!BDN%&@Oq1!PDer^ck4)ZRD6sy5)H$c8Sf>`Bf6n`?r|5iwg!O(eO|WMXFk$e$ z;-JfOwOyC~5060u+n|0K0{j;Dc~&v42dMjLP`%eDNNS$WU!Eo?^Q~{z9&N)r971%^ z*9k@`U#isMl?6eLIjx}Z1;w%hKhM_d9U8S&JT;Hu)vRyTw_ZEdu5_ z(-ZKG(ekz8?tOH=W9=HWR_OkMPdzSu$3EAA@95Q@p;(ZNYhmX_D7!LM3saX=#BTl3 z-{vLRrz`Qaho`Xm%^;SaFFxjl)Q<00$v4Z^S0)D%3lBTJT(4tWBduZ3YL1VNAsiiN z!6r$&D1klzZ0+2ixUfCFJn|6dL!^8hl{6Vg##iv r~U3f_bfnnnY3(c@L4w3$Z)P3-{v?P*EV_|q_tXaCVXXZHi8~md*cQva=R0LuI-u2b&$_C`p>2yazn~@ zG%cXvNn<9RZ&R>dK=;`t_D-1El&$^ZMs91$_#k<%|7$m~Rg>kayupIxbbR~I$F&p2 z0dfg4GELe2)%+QXD0*1ve|Q-#@>d~F#KWy=Uyg%OCFLqra8pQg3uI53J|dnM9gpK5kM&pbXt5?$a zVG*az^AeKF{SgSWK8k~6Zc|e0PGa!Jv?qKQCmc~o{N6=D*eEpAtE!IPk2rtUsPeG( zYPwoR+1*I(8HcssL_5y9D;3P?W4oWGH;}N#5thAGlc}5LdME$$_ZVUv6d*Nzw9f` zqn^M8U@r5W`su4B)b;HpDz??PWPB!>$b!pd@!cb>_5lA%1GbbLHt`dpeo$zG*d|TQ zzRxJ}gkj<${h~o!q-?;7g*7kC_G199C71;wgSFdLKpwQOWhnAV++4mJ#60PG@4Nh=NN8JhAi7WWUDzPjwA8|4foQ`R1- z3ntFE8D)6wV1stno_{M>=>_kPphFDxyfS9CDVD0YuY>b-v?*+d2FSz;GZ$38M*Glx z+g_DEL|X>##vNgUvc9H=s!bG31fS^|@;`CdO{EqI01{ju$-44p1Lh!wMDBR>;bfN& zSB^=ygm}jS?wp73UlEM0fU+ml9~h7&lnq|%hjpDChPpMY%do}!skqJSKl$siH6mFe zcdTgoQwm;pIwErx_Tg{E%FL-?qF_DB{PfN+Y;V1m?f3^~^uC zXzKxxX$i)tUDWK0j-s8jv>|o*&#}R$Tc?2jl-cu`B4z*xGXoJr$M~8j!!>h19FU&l zfD-QF36sn9T^nK2V3PiQc~Fj*`_<-QomQ0U7k47wM37Gs`gqDa(rDIBgYyB?d6XJm z1Y@s#i|+?oS1DN)Mr>8~R3m}U7|}kS$!TUrrCd%UVGc#>bo4%f*Ne1L##m)fJ{dyiBw?0oZ)Td+_93a zh+^%|PTf#03+3>Nk&9}z8%=LVoE(q2j6MY$J&hfhpZ*lPvqCe;buX4gRpV@MMCKfS zrcnEp-&^m7)3r6(TNi(Osg>taA5DG%&92T!H;JW>3$$c~r{&)a9Xum+kRN1n&gY&9 z3GR-(mq7?Ph}VG)RaxL46GYYlS-FEEl=*cK^9Ea}gMOXa8!i_nSrL4$r=mZKai?iF z;H`>Y{UmMH#!)5yOFi|aI$ zcRt9K5&qglT2h;JUEn5ugE4zSNwHLU33N_9xLE0q3Tp*iok02(0+B{sBf~a_=<2%A zWPx09If(hwyi$gIjg61JjCpbf@`8gb7h<+?YW|n|^F_I?#SMxd{dJnz4& zDZ2ZvHSOjr-D9YxE8n&>k!d9m8-Db!$B!fkEQu7;aW$>$QS`{9D+bLh3T<&eCb+xv zCJc-(_gL;|O|WVE=p>o%mTApkowu54Ou?#6QNg#)xW;Gepk9!%^NSyryP3H3=?Pfc zhHT5Z_%pTd?*7}H9;{RD-Ejg9LkS5Z?jUQRn6JtHU9&hDJJeiEisEagZv@VVvIHhb zfRa4w>p9)4{@tUVF5(JZs`i%5r%~|wr2K9sqcCb~k0L%oO}U|}=g=nc6Sq#Zgo)gt z<~z6KS*KDLRN>9(+-F+1JRCjyp8LO$wh2;}0h72&x`$=TGKLDDo3Bd~?$I_zy|WkS z$Y^nR>snTd4SInK5eX_iN_uWwn*(00?O!uu46M;Z(9P5i7l2WkCNIfK>v^nxHJ=te zeR{Ut_Azn8h*sSwp|deenzU8*ShoIN;`P)j2J?F%)SCdrU!s7|#dmMKzLof{$AyX- zV&g7jFiV>JNb$7`q!Vi*XGIu8@%WsJEqdP59ab4sVN^*|HOv=oiPRt;Qd(`P0EQV;!*@%qp@o{sd zP!R~dRIBR`){jHnVIuXDMcr4h zEBG74ybJr{5l|iIqV9=N?dB|rg|%=iGcx-7==#>+hjd9y*@o(Q2drh+_i#vW^-RSZ$4TWp=H0z^b7818%cgN% zq-q?h-|h>M?%5%pF&F7r(0CfoMl?+LXe~^A|MGH5!}WT31q{t|Rgl;KcrUF~q-zaX zFbgyJv)b{{9FkCmYWiMjNulQcxjJTM7Flq8_jfK79WfC%4pTEH7E4o4ZUBM z;JpEid@v=RykG=Ry<(sEro84-?==d&TYRjPmK%I7=3L*9g(jq4pd(Sht#;eexZUxX zCQvm6l=f64bOh&bjt3ISDs8NoU{Zqvyh>Y)R0{Gl8Ky^nFUSTvvhNF|pU$+B{x#^> zui1q?%kruCp)+S4Y$vv638+CgrJv|6Sr=FXR4bzvmSjR^ikgWZv zxOqH3V~oyYuX+}4@*vuv?jJzma_m36Fd0ItA>Xtp>DA`%c|EGZol~IJ^z^SM2#C== z)1K3oH$tfl9nstQ3ExNNr{Cel;bnI+yn6@tIiB&D2 zPp%qwRa4fxZ&8!ULG1ty&(-Tp*slACDadQrx--(O6EkBzSYO&fWCG)Us z3G5YSeCh7fTBXQ(A@t-URX>R7(BP$OeCJkgaH2QW6Y?Xd=^XoNDXn@nZhkFwO+K+; zy*%B(x?qWoRym!|QSs*51;RQC`UVXVhCgzP1Alt4z;@S08L|2*(ZdH_v6{C>o;uXb z9wH}L!ed7z7;EtPcJj-rxn|aR&6EX;-ghv~^*eN-mG-HvIzc8>-N&LkjD$#VAb|=8 z?q9G(cOA1+lZ~Gq7VXLuk_sioYBjHnZ>^n5W~=jKq`ev}8Viv|MC8r1=^sq1k{J4Y z>M@gog?cC@xLHN(v#^Sd$mNie;In+iXC9FoYyBCyEW}{C;mmP>jB}s9Arc{7V0Bu= zVpz`N5f>%5c{ICheDb_}`x-d1_%8VfK5D7v5`joD=C63vU6l>E(U*ceZVL!-fWvBYr}?L1!Qxy3$I16<>KQTI|9MAS|xy#TeqtImfBk9?c8vUgtmX@$+Hh z`cVaCOGU_XbZogKk0C)Dp;vRi1Zi^f%BmHlZP0gKAa<595H+Jifvhy?SFF?Cx>jb;K6msB z>fLD+-d5L(c~(i?yy#O;3n`d4dM?JXFgpjQrqG^ei=+ERY1{0ttN>-~&x;j^8?q6;fR6S4P_`PO&lQka}d8 z@+=tNipvs-ifB{*D@|OQB8!63jo=Xy|9_P$&rMp3++x?oaEZKt@qx^Vy7~2sf3Q?uAr}{H?&g*6uOzJ z%oF))wwwDWw}<0Z#%u)X6r))hOkL-5I&Ns6>eZ$LjOl)w?Lb**X&6Yyq`tZz1@}Sxi6T z-WXysc(fc+2oik&1POr;n047`pHh3~-?dE&)uefV&X6f>dRm|LsYH0EP3oBzbjcHp zk)YFA<0A67frRt2dUp=Ru&-}C(mB)=!;Ip@Bw>vDG!`XV_;ZG~eaEXUuwMwY6Q)PWi%s=YCX zo7GS%P~yJ(eew5vjspKO^H}5JadWww3t=SKtt5p?$U~}9JLyMKn;R&AoS)3~1wRheo=rS^WV|E()xwS`If{hWzx-HiHkf;7tu3olKcw+E`4efJ(>Dym(yRtqhPB6=j$A~9 zoGDu3PGrAj6-qwBj_? zs%e%&*orE^4aTPSpBtAv`qm|c`g@K+MDkF_X#t{wt!x_nc)ORuixm6tPkMys-qltC z#S)yzSJY9%NIQP;mVXB=F|f;cPuU9mK0oieLbq&8d}jHX3a<%LcN8%W56hNXCE%a8 zs1NM@i@aYdm)c>t3VK8=pEx#+%%+ic5%Y@z$m9DcqyuLH;bBmowXBi%Lv=##wINZY zG~Y4HnEoIWzpBRjxFOX@D*wZ)L6^C>aI`?u0Sbx@z7?eyjHQQrn$5p{Dh5z*;yq@k z(CyV&U}&|qCM=aJDWo)D;aB3fkRUSB>PY{7PgZcj4tPZps>hMVB z5PI0|nkXmoT<=A->yM$RMAihpIVfb;A>MasS#yGxIICb9#qS7oR2K!M1U4HFw~A-~ zV)r*1aYLWCggy~9JpWsStEl~DO%Oj?g+gks5(cfx9+zedWT{g}9a+;pP5?{$yY`-i zE`%E2`mD{~HC+QTGU0II9B}imhED^^?-@ZYgQ;S3J^Yhjlk9k$_x-0F=vdY=b~EH< z$$qUBmNa*}zMI|R-Rj!iG;-jAvL(5QuVo+=1h66v(W=x!l|8D7I)VsO4lUmIE!v>z zU$X{xskBecUlX#lAv?}t6tTGZLA1?~#wpkn#lzGRQUr+B; zxb{dvJKUadd$d8fU%@u}bF+rYK}!#$^RU*|pTy?x4#P|g61wgDfGaMIYFQAsRqV}1 zZWxI`TWqvCm3GyIJ=cL1e@Go}#T?cs=iHvuLr9&MPeQ;j?&3UN1^ud@6|hc*UIu*a zxNt=pMngsY4~;!N9cka{mY(dYC<`x{JIMA}aJ5SmFBm^w&WaiRo#0*R>W+WgOs@I1 zPmlb$cqHx|>6_BQH|TeIDoPZ??mOA+>EWFSdT5csa+M|N3E3@j?@DJl9ctjg#je+M zJdJsfLrzf~KmY;%!G&Cpnfg;@AJ)>~Q&+n%f4JHa=@OP6ZmqBT(z24a-txYpV&Et} zB@n%UG@x3&Ii>TCPf<6p!&+UW^- zHs}*R8t^pcw|^XNlcX;0`wwpcSMVfu%@zaOFDp?_-@deJ13XnqQ?=|isbo0g z4^uqP>g5b0s7d@~<=)?V-r&)rFG?#4w`yt#C(LxeJ!XzqhX_7J1= z&E>2n3AIqXkyN5K%#%ft+$umKP;#D`wUn`L!M4_MU!v~vbiCcQ z9TQfYnh_sLLArcAvS#e?f-;mXj^h=_;?_1^i|VYBaQDXe&)@%eYte)h7aETVUl)(5cZ# z8;XVj-5nb56w4x%MB-0k)AZM&g#yB^ z_&LUw`N{E*c9$PShh=QlDA$vCCkpm-{1@oxm6{Q!pQ|jitFWUXP3B^R;IqRal=4bC z+@eZ&eJXp_@-^$AlS&FtUb0`A-ny0)BqbW?^4d_5lOJ2PBnm7MzV5^a%(kkbF2W3%S z;jo%*I$P`IcS*SSpC80m-d#TUKe< zv*OAIVO;s4XSMT-t0N7G7mkUnoLhk|38s(AYEaL9{liP%7TxjQ4%jW`$~CZLm*5|8 zSUdxgSzd7?BN2OPI!((0d#U_ay8*8*-PzTm=H{rbFa`Gb@Ru80{KxxyxLWU+!J~Ba z7bdM>QGFDLv_`A6d+%X>T@ytzbscI+6tpK>pCF<@#CORXG znj@OeWHUEAJ(>NPpeAf<>@Fm}hSB22nJeHVnirQ|5D%rdWTuNI20 z1@cc14ZQBE)Muo;-pJIxl|O8nY@2*NR!j{yq#XjN3+QglUJNt5t_hcV3=&4`0Mw`m5=UnjQkYM*3>J-@51T5ibWUu$B&0b^fJ zxqi$*!pJ>_*SBxe{XtH%{7!%A9W_Um-D;_<%#TkHYgU|!ppVexX$Elm7OXh2tnKB&`$ zN9KjF(Wxt3)H`2A@7LoIr(^Xk-~x44-uZ*~Rn)=xorsF5Sn!)k>VxWTeS-*AE}u>J zFVj9=@=XQoayeZlb8L;%d%zhiIiUIStpwxvQ0eV`fs%Jbq$d6OWuOODL(&wzv!jE5 z{atnF0;0t*?J}>}9or+X=FX&&L(3vn*K*}b*ih{zH-kmpB*9*`ME$u7vBPBrj@-5z zWKS+%2D_Th{+jvv1OYwhdf@r}7ob>hK)$|&CTRABE})e@ldHO>=_@@1$F1V-PREv{8vXbilF(&Py}tVtHn76(66u>G zDWRs}o=uyM;nX;+*w`x>-O3d9OhKvV9y)Ap+jm(!)ZfEvDUV2Kdz!C5QI7#ul-F8B z-96V|m+(fSR<3~39i)%_@lk09YrS=`K-@Oej(WVDKP4&=vtadEv;Alj5t{z(k+vPu zoCZBY%fnvVvh05Xa75UYvr_4E&kX9y4Szg~(?xPyKlHB5iIy%K_E}kszNnLpw=E~* zd8#VvcZI2njIQ=q|6p}zBr8^=@L%c*l z^z>!yY`PxKa{2{tw#=ESXOeWBOo;yufl!zF2E{P^%Qd$7@qyk5qx%<92R{_9=X3lh zgk8YXB7THJ^K8my{Y?LCZ9m{a6tz|>rXW7|bGt5r|0Vt0X7x-;8Y8!Rx^y+RAnl08 z0|ieh=SoR_MrT>K{}!sZOvcKS(c6m;7aPrM^#sc@qc(MW9Rc<32BVX)|-DY zYmfo3CsN$Ch(!(271uA4ngx`=fyRl+4)ftMVkmEOrsOOv|I zwro=k!~{lIid=Jwj}Y1ow-f()7-$2z&aHV+ zO6=1xDA(`MTqn}3bi$#%i{X9TwAeU4lMJBid|LWp(2!`)Rx|FLbqj5_k{j{6f34ez zibaT0^W!9D{B^}$V=V?@mO$?Gr;Gb8m+}vxZ$|6bae(cdppG!hd-QPu>x(oK0o+#2 z(B?iO_g%{;8y1$f_eTM@P?=2czdL+K8l3v+^RU>_NW*tawl?Gb&>T(4dXSJU(N-Xu z_GxD!8Ec%}HU6V}K*G5{?%J`vH0mAi3&OUe9cmwpTnQ^OOj7-5;1%DTN$!l}v278% z5KrFR>6DP)TiS~9+}nmC#ZGQM`jDmnz_gtmbqp>)vi)m~>^csq&*u$<$@&|^3RK;S zxd)Qo)hqQH`^-K1@zLcNor6tSMD%kql^!@9<2S5%M#ev6nTTyE*{%H|R#YzZOx zAfY5%zM@bs8OL1BUy|FWlxjJw51E-kzdDNd6NW=w^8c6>7{6<(mFis9_)9(SJP1CZ zJ1k(&r{K&>ez>j)cgF$m_Lbj^VkL*DBMw~ir2RqyFh6{Rz=8^<#$Z0tNF2OQKkjV{ z-Ms^o`f=O>BA1Secgq4x9s`MHmTy7SUQB6$ng%5{5auwBCMDye!5SA!7Jji4z<~?L z?_{5kf$FG*-*_VN~r1R5w36WmNw~NOI!BzXAuAioabG{y|D_%$R zWKD~m5v|hdl6%ANg0QPY%yIwl&QFFC7uIVL0z5sr%_Q0mTrK3WP*#$jZ*u%?gJQqH z*Qvrsy*cTZ zdyx90q7q!%Z|g~VfV<>d%?HWU4>0XPx1kWH1FZTNn;=ER)yZ&XfleCIbA>&bD&}-P z?7fq@S(+*4u*@44trPQp(em{0j=`C&BTlL@THF1}2_nx`!IU^(cila1dnEO}zBd+o zaZR^4R_>|LJ!tuE1Fa0n&|i7(G9`0$w=|PEyCa;UIzX;}es$aP@$*kADCNN;Bu6GB zSyIK`hW1GKXSaONmtbut9m9$~p*D8?jB$=&SK0u(ncY5+_R(@lg`c9Fw$sbO*fm() zr?m71am+;Eo(?Cla&kXcmBeYNTCG3dP1XqeGR(x&dh1FD5IHkq_}+8;3FMp&3Ajgk z8Fk-`wYmBqo(IH9M_-Qq{h0E+#0CnzVDUirJ)NDVLxvTyE|pq(Tj|a0`qFD+4ARK^ z%lzWlwdB|g@lsYVxQ0&pJK~&58 zsN=aIp?m}BiIR$=44d)u`9$r{m$oy5^`!oX$s3lH&J4NB1Gt*rLj^Wj&YDaWdiRt#7J!}OD&Lpnxac93zY%+)Zwqbd0&p;Wr#FeBZD(DwMC4ZWm~IvNri~S1F7uGGIg$w;wr3j#DMGBsqkorTzQG*4!D#*n3Wehh0J}d3UWr7^`SWZs}{rjy>jZJFYMT zGY*f|83fb>;)ZR&!^zx1E%goc*x>J}eQhHuQM+LxgRR7KXWCOnI}jw23l z0_|u{W`>kx^v8Y!Kh_?R`p;SjTZMqKALv_Hr~T&a4=cY8z>yJ<&8Eh?+E3|%%GY7r zPF}xvscSlZ>mrqFTANoTToEzF^`s8C`+JMic@q1wZl%-%$h?Zmqy0EHOBK@?fKNx~ z@XA@zHzVf45l&>p$#r_2^0MvLiqSe)XH-4*V~zcNC7}v&+G@J$^44u=`LxZHRIb_x zC)=`t8570=WG)1An9V7)e7^y_aZn$yxc_oFHm!Q8Vi?X!G=YI!_FVTAH92zUs>m@h zfI?+xx0>nrQ~QH@vU+m19*?9!Jh?_N;$VOpNgJ*3ZqQ{{A{6qp@YwdxGEqayWjEt> zrdtd@{H;cfYYqF+HKCg$Z+k$1(_?k16dMY$isTLeBw1Z1`=;ZaK_ttf?X>?`Qt#Poz~(~R8nS?pQB`wA3=a?fyHTVq>8mx;Dn z%X6BehWAWEQJ=4a)yB)k_$;Nqz;LK>3;muPd#Jc5zzEj~4zU84rcNHO`$^Dw_vOi>k_f}<3H9gMJ2oqs$n7aP!(Zdj3#OsH{1ID?h=4#+TAY3b1 zSmRe~$WY_*P8v;n@BE9#!uYr{>t;fp``=R)C zvUhqr;EvlV6gMH6%k`L>WkuHfc1WzZv(QgEj^yB(c)&(OXQFIPA3_^$Gg|;NBv{7H zsrJ>xNQ?T{iDs&>1j#ma)q7}6X{#l*h6L0hho(z-^YaQ%B)qF=2_!w*3#Oxmj_-q( zgmPW&!&912nh)Ty@t;w%>HlO3tk02~mW{~D@)D{c`i(5j+pSUMM%qMx)Fo!rZ>=uNDfm8&U( zjW*-GntXC!+v0Z&bIU)xkfnR+#s&c~tXGp^yq_=UJ6z`5E>5R|re^$C!%A$WEyC;R zBY|j2Vt8lz-0#!*OfvPr>U(xfvPMy%K_z2*t_e?M?y`sow~dFz2k$(K3<7!tN-{m^ zyp{D&pIkXpRnKZ8v&IhgA-9K$qiszYu2~ld2!6xpbMgK%R=DERtJcJ_Ol|)v|JS|s z2psLt3vHw02ZdL;|FI{HIjtC)9Pib1t52l5m0~g!ov$O*JuYYLP0*iGpa$V*VAC3by%8qT=Ac zA$IzW>+0XYzeLEB{DjkT(5YAqdcQ8tjs&|QpNM>?9@&@7`=t99Pu-*k(yHVoJB0@S z6UhnrU_1B2nXN)sLCk@_lfd)KV9EZx3i$T0~ouGv%_qH)>pU8iM)@~T9tww&8 zzJGY_7*ob9pV5>@z9S{EUB1F;q43WeM8`uH{h6jqfD;xX{0VMI{55&`-nE^a=|8-n zy{sWwzT)h!0MaA-!5$&+LuA4c>ZrXYw@S17LG|GHcpwt7irUYaek0wZ`>sky6^ z$8OVcw=tX%a#6(G7)8a?`3j@jBSLO5H|*xw?w%-h6#~xP?d!;XV_BqfAedy`;_~K^ z_Ag{?bGv)rv7?+n4r8E0nw!gxis1fOj|T4WMehwP@WZ3D_uBiP8D38pc=D=_qmb~$Ne%>_%GGo7u3n4T z5msciIY}%()c-ZkG#v>fD#R#$46odsd<+q8&D*EBY(?Ds6|Hy&}h$D%Lf~M-Ax=cD3dY zxSPLGlw4Yy#1}*Ia!b<+<~lDNJ?_k3+9t|!nuHRCJ93tdz&h;oU1P7?f%ji(2WoM$ z%@1DddAcYJW>AAV+>S0C<=ZT$6Dr%HG-k(jY4!!gnHI3cUkxDxFq9s6b5a zfbEcZYx0JSDMLNT;a2dB2^p$8b5|A2SP%F}J6TKT0^C>2mNi}0ss+c+2Ew@a;|^C! z7v}GPSsMi8)aB3QZ-HrC=N}&OA70g69msm8_q1(Ne)^O)dYWT7A6hQx!T%_%l0d^| zKK`57_|FW#^D)=8dsuudOA&9a_tGuecP4C!=&v@I0NHo^t3D}BCW3rC);YDDf2X!fy96K|$t;=g zH`@l#vX&cG4^6`Cnxg@zmXrATH5N-j36kh6G*FG|`LNM|6CEQI!8WD~-2)VNE?W;L zi^-m)#cF~V4gy`cc5S6y*_Vj?aI<6PL2Tf^hO$3H<1HVbNmVkm@x?WS>efr8tKZ`@ zj$O@?X{I=uI#N!7sae-W4ss2q@|O|Fm$!s0eTA}V;(J1~uXbSXhBTQThw-@Z`UK~f zRWZ@bsa#aI(XU|Qok{I}*UOA_IpsvWrRllflcE>*$eCLMpsu((4=-#L%%lqBp0V>L z+&glVLmz^eU$iyu262@9kq$HKna9j6$exK=zJ<5*A>4KlI)P6dT4aPzafdgnF}2gn zV*aDm7o8V>T?FNb(Q<*iWoJ^JmtKG>i;rKTDLsFTG_zEV5q>c-SZWSxCm+_)s;@B~gK`^DOpeZ2Y0wwlDzUfv@nMU-AWyE6envOUR^2Msn680v#QLCMK1h+% zc?S0S)!WsW6?Iu~MYy_V67Ehkny?#IE^%^|+up0qF{E=iXY#CyDHMS*Po?|Pmm^9_ ze&VC@rKDzGWr3>l*Q{*{+i{+&))pMvY}U1co<<_k1ltB*KB)Wq@7^Pgm3X2e_7oX! z6qPIXo+Tw)8MxfL*ElqloN>i{;ik8icfXE83gU-q23ot_Emdt*hey?vxR0*=4yN6& zfpT_xc%_}!dJwkf*5_^HW0dZ92tOfKOK36N=mimr)5tQ2eB!Sg+!CSS>eC7#6r2I? zzB0dZdgM!g^>u#f8w_5fD*Q((8-W+>LyfB@GAjPf-Vi-3vnQ-_J{(``>hYVFq_@3b zoH@lt=$%kO{1YM9`DRfg2iy$Y(&X+M|NAg|9*;=M%V%_SD;TT=tK`F%nT*d-N-4_l zQ3&WEPgBHEmurFQyB+215a_VP9rUN~%n*WOPvc~YF$-^!nIiqe$@%=f6i}NEIupq{ z5a+8l=y-C*zVhGM6!T&rIIoyS-G)}yG9&=6TIbFO3)3EW+xTrC{hH#s!kJQ#1a0hf zsn8MCqEaTI&VDU>N-h{M#c$!hV#P^2s>)jB>us%S+-OaZ$wlhsqP*TNaMSxREQ2bb zf9bfoEOS+(&vfk$D&}RI<3yEB8I(V2nC5qrE6(ROBbi0$qNJTL#5HtQaXWayZ|x*l?dotaYl5?&OdF7MMu-+@CwN zIkw~(*vV+=*uwy|qS%%VgYzjDkA=B;!sO*Sw%3p#1R}3QyE)$j^Sa=kDUG1cFLQFQ zMbF7-;^07kR}Z)M`c_WFXJInfvBm>$lz9>8)*Ed!`*SRe!s4F6vDx`a?cc1w~7PNN##lgmd zRnfxhUDDRpuRA;@tnxff8FwwRT$+`_FN+L)WBD7d>N1U&>ws}6WXON&xkco~deO~p z^P?{r{C;Ohym%lq2X?OU6SZ{k6ua!c0xz-5uj3tZ^8jqu+h#+q>=<=pD`!AEedFrE zN)aoIURrfOx|I)polJ;pT|lbqu)guLMhNy4F;p3@#oGco9}#!w!S1=aH>EsDnzAu+ z0Z+b;zYjeV*y}w1yF(F>x-z>9#xrgG4;zMx*VW-Gr+y<{DuTz~IrnfipLE#Q3Nvn) zLaO%Ls!Xu=xQfp_#bN$#`dDV3SO1k0{X$^3!G4^5N&Ns7G=rdUvy*k=JoHsXZN~;& z_$=h|FE;6oVcaBTDLF>YY_<{{<2xMuvdkd4H4!-pDA6f}7?*#0;`UGG+;cWRxrWim z%F8s%N)x3Mu^*$&s0VyUS0=t*-+5Mu>nNEzx7&Vls*e48+bpC$Mvl{l0SAD5x~NMH z8Ug8zUZmAt&_|NMIhv!Im+6-D3z*}ogu9wMdOL0?NA~NnD^r9;G3|GMnXBNlMySlQ z<}Uf}5YHkW@=3NX?%VNAy9JzIeqZTQ|-OBKz_Si zWv2#Ub`X1VT%(sAes5;Hs9^so#}mz{+#77<`-VtI$Xdp>yH`*F^!OAri<(Qt za|gCkx{g`W=6ToE89FZmU_iJ)(@V}u5D~Z9{*Jwe%Te(D$zdYA4k{+}Y2D65liG?g zxcT`jP6Kn+q_4>A;$2rCd5~H%^xDpc*t4wF;+fcTE}~_@qpX>kSE{oy)bqzC@O=gn z90WWBfr_W&ts$;jY~Wu;niZpI2G*hFsQ8yyq1^#;u6J$2V%~QX3}Q26*bA?U`c@3> zqe>)m8#`C&)6(aHLHS>289Dk?_>XP1L-WxlKE=mOv29ULzsBmeE{vml%7ha8{Kn+y zXSKTg@9a=Ux)yoWM??4-ZuTpTbtF16mosxocrXWOguDkjURS@`&)t~6tmm424)$BQ z?1h=kT>fNKg-~3rm@j*f+}c&71zDU;SYDu9Ue@#?42DUMIh|QB$dto#?eMFwF6!{P z0nwaJeyxu(H+ZlZd`60`&~%pR0bf{*2qm(%QZdc`u15&Ua?fH_T5b4kapiDaE2W;ky*DgF(E z@h85YM+d>MlVN(7CmClXcgWwm&ZK5m5A4_Hn-W8SB9!n7_n34Qf-K!K(YiJG6-=r` zCtn+@_*Ok9(-9cPUxMrwPF>m{bU#a2S6p`zP*$!dPB=TUmHZvB%q9!Qj@nZs0^!sdYz?D zA+f5hw-*a$M7E8Blk+-z5^(XRnL=~UA?zX^S)JipJ2 z*^9%E+kC6Go|WNhMQX<1WGsQGGq}SU-5i%(X`4^*Vanrn*yO%j9he+fvcFn^xm@7R zBhW3Ua!ar2_`7>P=4lUM5kq*M$R5{;HTimID5A zwrFuMPu+r#zY}(HL)iU1zNR!Tv{n_;hiNmGV%eHqnd^kbJU)cnXBwu>^lB7{d8K@H zy{i|e_jU6}fGab3dBP#11#xmuxr%O|gHdDbkG=CLPQ_{(l}wcq1K8iy`qG(QAiic4 zAWNJo*SxL5AOJHLPW>327W}F*L$Puu3mV`Zeqq3FxU93f#1mi}OZ|({qJv46sz-Q( z-VVgco7V3&?eg{nkro)-f={-oVhfrl;aAYZcAXQdt!=mOmlx9*Lsr^+mrW^P68m+E zoDn9r;s<*rtUX&?B`Fi-^12}We|VQ;4-fkST!oLQo}_gqLwaSc_R8m2MPRyo`N5FC zBYg(c#9}ZK46cANTfgx|JP|>~Pd_qLo=bkOM|!7E2LKdZmU8Rc(5mer6pYv80t$e` zyEHZ)S-}4yI!>`*$>HQT4oUsUgqhV-;FJlxL{Nf`q#}OA{TyMruIbsqN&PlQUn8(&K_^p)4-WZtAr_vQ%6PT=!6EU%oZFhn{a?&S-L^$e*OmrZfhL+V8R)=Q-`c@DjxHwW-UYi*)hFjee=;@Y>Ux-GXq z0OWS9Ph!#J5SH*?b+D-#W_^JxtwnBL$<4Fw3Pkx>{iO-%0YHVg!-Ub6)-YBi#hxp58>CB zT<^{G1*B(|v-x+q$h+vBQ{oKGO72|6!uwUVwuVF_zEnM3`(y_FaPL|u-*BA7Y^+v^ zWSoIS<0-43rMJzU$dGhxG@rvT#BE=F#rP}67(W6f(I1>E{Dw{}Jn{@&vi!8zW)Mp& z(FD90h>X21l`&<~CM6_Lk7{?h3$SB()vogMcYXTTx%{%E$yvMqBaF`Goa{ro3~D|8Na7JJm?QjV4^Ug^fa5K>Q>nPwQfuub*~e61YK9nOzMjA}M9 zCoMcEAHSi`S*L~)_btVQ3Tq%3+>Og4Y7D$m`-^eT4#_^G=E&u1#Jj7vC$(DPm|h7a zrI`DDNk!)Up|CeXuqrQGLnE*&!_A(Vt!mHSs9AkoMn6BwgwN9%*@%;gYZ{Y+C#4A$ao#l3}>C})Igrh*l5na zsF^(6*1gfxcaLKSQEApO=68F_51u`yAzsa#s!2;uU$#@oVncoa)+GUxQ-`7O?4mZF ze5;*w)KLzFX~;Ek{Hye-T*`e~%pSIaReyyl4=pQgiJI^uhUWIg>&Hn9!#`4|b9!S- z3eqt-U*~@a&J_9K{;r>ud%?e%K41iO?!5A;^N5VSsU>aWx$kRX?SX)By^7P}8U#pR zMgp<#?QnYqIb^R8Wf}Ofb*n+nyZHX>&R-7q_T%3bYw{m^D;}B_Ed0Zx0kbiNw#qhL z1(b*lnc1$Vw-hry=O(02H(m+}tz}S))VJ}_nc<6Zy_|mCY@o~)>|K0%&U50A{lKbJ z5AfW>RAl`(l-Mfn2?gz+P1C3)H;=VTA`NpOR5mAsf4wh6hO|fHlI!<}p!g+j;a(TP zK{0a#jHSaA+Weq*4JY%p(~{ji?%sZtX=D```Z<@_ukC!0W&VG7jD8hy@RskbAr`X( zllybYJn`Zki~D~JJ_;07Wm0R;h?@}BnD+MGCdFMhCg1Z$QL0Z8S_NBIS2UWsT>E2; z85$bYRdYZt#lpvp8BwRhsBs+aIE{uS%bR5-H()Dwfimc{a4u(Gxj8e1%XQZ)Ta~C* zX`a3IhUN)vRj4J2jb`Wv2HkbH6xACLBP+;m$wE!bUgZb7z5IYo@%?I4+eaO~u6zJG0J*1PO;o~CdZ0^E>y66QvKsdDxM?F^ zLPftOV?D^I!VV_uH4ZH<>3J=n^(<#UwvcKpjW%{wHEx~`wGD+q`M|G+5qov%WAIBm z&enz2UbMmQ@M4Wr4eIN2(yBiB_fvDKU)CcS+a8QVvo8O4>@yoFPw%tGxWiOfB=?B%t>cgBfcH+CYu5Mqf!qm2BpgGVrO3HhS~N zDegqyhzo<>X!vGCV{icEVv8Z$oK3-&^6qY>rHIO2nblWxbv0P1uBLRBs!F(@w#M$p z8!dPJ5wtPu=rhP7-fp!ad3xigF_t-N!?Di%eW>x|io+lJAlm_+e)2Ww7T~B;{(88% zo?~|j=n#dm2uBMc0g>@6fdO5`R?ePw01})H-uLZ6gO_si3pk8dtTD-VEk3!tC>l|- z%?*jW5R0OY&=dEBbK%|xowkhro`~`DRBsND1UHp*+tqxjo!>)!vn?TvgX7UW%-@+0 zA{2aiGR3J~DXU;AoCdQ0hbPzF!l08RZV6(Q5> zuNn-J|8a$Xs9ELm^7p@TN&r0vHhQhQ00_KTqW_MCL5Q9Idx}vpq)W5G+|WIlX+Z%Z zt`gMaA;p-(v2Oe^hPvLGpNY&BRg>QA>gqUvFh`F=BSMkv#>%>UK~=|(>Mgan zi0{Q&?Hed{#NlH|eK%9?nP*B#2SkHC<>{vo@DlNKnb0jrB}5y{h)8e$xf|C*U-Rih z+SilGmw_AVlF;jqHDyE)vDNpFI&YjEj%Ghnf^qm+L&Wl{F;U&RUuJjJ)6(elQ2UrI zW$!Xs6$8Qu;mq<*Xw~lNY7E&C!ZTR9llN$P7W)VL)RBhfD6?#-*ZR01s*lfsLysNW z_=d9{wN)*Zlr~(w@mxAcI%(MbrN7_Bf?WF6n{b+tg7;vmUkjap!1fLoU(-?jy&wM;|AAHJ&ZL{&FRE&Q+4Z zi)yI_QBI@cK63cJhfcO_)&vF8z0}gkkG#&H*}zo07|@IfWg7`Sdm19&Q(uHWy*2f3 zr+m3pp2sNh;e*g*`xNBXV1>f`!=r{nosW0L{tIk_tLh!6b!U^%{z?~Nu(a=FXt2)_ zTLIZa)m@UjP@qh}SYu}QY`N(uneYrDcSHLaTa$#%=6pDMz>*L5tku>0F^dfw>BCz))z(ZzK=sJ zC?L6$*DE1hohP;T8OCW;qAj=(DxusMby%CueKit-|W>)p2&}9P!gd04mxr_{b4=FHNhx-N7u)>yK z)VAaBI}5w#8!GI%B@!Mg$FRxomfR1GhEirndL3WhDRc93pd>&A? zN*a;~cGdh|czr2jA+d}Qq`7XGL@HCo{+H_e{li%KL6<0CJ+r07gwZmJS9PY5>|Hv` z#6RfMOqU?C1&LSo8Lqj9T}(NP&Y~&5U_=aKra7qm5*Ew$jM)O*u_^w;tXEg@22eI7 zVlC@XYi-g=(b=3#v6*e-ki8n~ei{$(Kps1ob&Zn_~y%4?$mb%O%M9Vm3qNmg1Xsl~7cZULQ__pY9aa*4Yh4)UmH( zNvX33_hae~V#2_ZkM302&j}YK`$~<$7R*Eqg1uuC&Lh6ruI}WAwQWm%3N}g!b9LQf znq*|l6-jl$R>94t&m`MC(XahA(MV-{)sEeYbd3#8+83p8arlpJSLp|H;&sU@B+(2h z#~*|Q=ngSM?aNML@PLyY>N8H{t*}NDN#3`oY@cV|bp~ML-VSvCtg9fF#wcO9RfJ&m z&Z>oe*4AhRp&+xZA(0r-R&PFgqt?O^4EAQsSt;NBM6z-Ynmo zk?c;$E$J2TuHK3e5HQF`!!19sgU%$DGv||x69ig}+*$>DrS8*#B{wXN7{7|fu~#np zoCr#^d&cb$uLd`i|2@!OlI=>&i>kPE9yH7)mdOX*%hq0L8?6#2YvdVbT^1P&eeP!Z zIU-RSk>67$YR{H@{Lb`_2oF$Q?gcV!SX8laikkwwDihYvpX;%S{P?3C)k|-w;`vS3 zcy>QqhN>UdsAz4#rAr0(HM<}FFo+HOusJIxgBc&!AqW6#zk|ECn2I@xEi<}94Zkg( z$ZqH&453!#fpfAPJS-#LEwr)#lIOiRbiXw1?H}Wf^3IKPcptDEzmYAb*AP-OVjtU)5h z-}kne6dQmgt~U_tCri7G6IIIq&Sy2}Dpz-#^1=A#qSx8?+I^_`%2X>qh}LoNih`G> zUC7!w37Eu>eMbGrauhW1ieq}=A7hYfExJ^KNL@V?o41v1!+s$ZlnQjPXOt3N8l1B} zxQ_)!;>Y}h{2Rde`5pU5$9Umgoww>P->iWSd4>g8pqP3_*joYU>ps;`B9mCo$k{Qf z-e^G%Rm7EY=zmg;b+fz&@Ghs|vwG4LKviNY4LsjUFa!txk|@ref2a`r)4w|rW$7?9 zrk45PaJcSsRJpb~Tf&b#rXv?uI|G*aR_s_qvN5*mh?N5Gd-;TC0grZ9)Lod;1-b0E zdAVL~yFt-g9jh)UNdyH33;1_89CST9XSWStX&KP!s~t~9tM~pPj%IeN;<}7kPhwxP z5%16yeR}8L{dzx$-`E}*ek5eLVeYaDv5F}$P5H#Sum>Nqm$)4vY}DVgmD8@9 z4vW0xH87obe}9V>uE%8za=(>3-=P}V;4UuAPwkl|IU&M2s(bljOB7u z4-c-p4NmU@!R8v3PkOvrQ_%@-^qRdGh^;;qWFvei3C-J4bmH=ew3?Ogg&;P>9O?Oq zn^LH%qx0tPd_jL3WhV$orIer_xcW+VUYr1^?rNyYTjL1h6jnJrp3*fD;%XCq(k8L7V3uf5Wc4)#cPa;J zN3!gQ!StbjkE>wiEbCUbr0-M)_wN9uMR`aXgNIT%L2wDvc z*j00n+aRG>mw)xTxs;xc_kZN%zh1arNtF%WN-ASV?<-gLc*8+7j)(r<8u6~0nv>5?jnPV5bS zFkWnp9DZ2=Uf$mOLIT{g$LsK=Qc}4nnJQf>0#_w#0$q_vR;nN+fwGvF-k80=!2!?? zvYnCDh`ogMH!SUCRX9Xu0S?+BD+zTxI#EsU^!%XzXYFvj0M#L!l_pQoiplqozo@$n ziCAqlEk*8~md_-9+!j*MN9%PEvA?9pPSR{Pyj_h3WDAG9M;eJ?`z-2)Zv zystoZ(t$jHQLcpjJ?u?ID1+6;u~fZo1!+Z1Mbjg9e_fesY#q;;RO7DM8U2*OyEfcm zqU z-_1vcmDaO5#`lv~6owr|QE^U^(gy3ZPA+Pe2@9$DAfPCkQOT_qVC!ys9hzZE$-u3E zJy1#-kEIVDZ~VI(BJx|;zLfIfFeNrC5R;GAQ!1l#cxaGB*pW1;u_h>=8L?Wpn*Hnt zI^G2yG28VQAXK`Q(uls@+`wV0!rrg;iEmigyyt2oL(g5cg0bMQ$ZjXExo* zIg(6I^SkUJ@#hV$5|!fngE{Ez!~d&wp`@LH1JkS?`RIgeaQe1zI9sE~TW)LJ^r*A) zM!k5*5-cARkIza!B)YoLbTwHCGy28h<<-c2z1pH;%8&xfX|x353;|fKaIsPiW~Y$U zxW79R`_!>YnIWY^={@A3YGLS{EC1b}J{ZC98!i2B(T@LR!7oXPcvw#C{4a5)ec zAu7fzWq*Exnb#a1~3}L)nQ4X#NcO7!9_ll{*zr$os*l&qNOyaf(npJ%g>>X3F zsk!cjvv1WtHFP-DTlvmvGE&1e#lGxz>E&?nk@a@6ge*N;*E}8baj5G*0d%XNTS;cp z?Uc(8=hIwjFrd6}((lQcHSvBU(wLi-?iuEE75(NP-egp!a`+ql>i6dE%@z23H4Cl_ zrfZ^H#R6vY^70-aub5W_n7_*9${vr0A%fmWt*_nYg^{P9=R1s~8dmGpj)BSK`v#8D z9Mc;4BIov0sd1$@r|qzk58l^=*srFI5|EU@fL;lt@8^-sTs`v0T@6c{wWIOb6B~V% z%U9Vr>K)2Y7li+F9BNEalkGb(>R;4CA=AWr~SLbvslsk=VEGWL#AUI1-Go*>j(Rxw*u;NKtKJ4NUE**@d@DY3_ri~xgpDd zKz3U3C)19&i&@@|1p&`mm~k%vIwplB7q_%tOhMYgf(h4-)O{lA=z-6vyOOh?e;*bs zzRUz54z|NNChyTQE*7%ZWyz0wLVLov-V;B)-Yd7PB(7%21(u_3k1uIHB>l{`>eYR* zAlphPDak7}LoLisiy$Z%ZJE%dp3E5Z8m4KrXt1AH*sJXFEO20`_2S^}oVVe!)wjLq zg*UrYnc!aUDW$FxKDGR@RY1(h6fCi5Hy9G!Voh=<=GrRpJXL~OYmo=&fuOH< zWVTP{I5ouV(CH<~|L`cDP9y4p;x1!O_u2j&jMbdJ8;P@2lPOa-BYJqKUB1gOMkGqE z7>0fH($aIzr=nx4bvp3VS6EvgGu*IX>(nwyh!7*1U5He;t_p7;j;P8=j@!W>U+lV& z^NABNx^Hc>qash9!Z$1L`G{xpULrWHrH>c~Ko}$~?62qbRtBLkC=*dvNKT4RnnVkiMxo3i^%qJOMc{X#?2f-ZqQxE# zH_?SF66+swo777bT>#xl$)!VF0*m{TcWZtc@&r2S26*v)Yf2puPi;&3sOcTqbFrVV z^|&Ddt-K0i2%O}ScQA{y9-d`2Shkm$<^JZm!i&MTMA*R8gZ!+5q%`y#Z$23++~xI- zbB02Ewzmke@~^cvXL>QcdzA#a!mPelxNR-5YMf6xqIC8{1HC8b&-N}`;ce)Z9OQJ^ zUTY-LT#~u9J2Kj@Va?m1sAVKq0A+Uy2ju7~hk-ON0ul~S=Q2YklkDdk2v@K`RDvJ1 zsX|BTQS?q>5-C@9Ojl~~G`tiKi?ijoIjBvewk>7dyN%?PCM~4h5vfQf_Y-se7H*Lb@Xoy1m+^5;1danq} zd3uT56Qf%KS*4C5Zpt|jXAL05>)nehw(Z|sTQ<(JjJkHXy4k7G(X;7&<6=eJchpNX z^|S4DP}=y**=`bV@@PY*Isi}xa8q6P$kB7aSUAT>Ud0x53+S)a{)incd&ODk3;OPhDnb!Q^mXxnbcpY#Euc@(xQkjTusI5ago}PeGX8VGa z>a(2}5_El)IWjpB7XE%7J{}EQc`IsRZRm3+zza)OCvKg+0jXMCju{kI(2 zsu=xqnM<=FNVa@)lrbN?1CL(sS%OjBplVnCX}bzQs#(gnf6`Ol{o)r}W6xS^25|<+ zMfcZ`O_oCg_-szbQEx7B4L|;&>meJQM5&2tyTLx8zd`=0Yt|bohvn*cN^ZOD#ty#A zpjm%^j1gz%BA)GZxulR@5*M(jStR{t0MbAkj8$l*x%i zth?iEm{YlLEL_3O%|cYxk4EpYU0G5dGzR>xC_S;GfPb0mHE8rQrr2zu!9pjn;vZ@m zI3G7J74+o%}gjc;{o0z(AO-4b*AON&yUN$(fO@_MFu5*3{qDB8XwODCL=C z`sZF9@N3T&d0u(OiQ$?)OQZO1K5nxTlwJNMQySz^)q+d@9b8;y%D^dt+TbL=BUjh! z5jb!p5oN-C94%XKiwG42rIQ4dNc7pd=qTvdXfH5Ewtksy;0@JC;Tc$W?(!tQ04mZV zbvFf(s@^(2W7Fd<4TnEJ2X1$+n*P9)M)_1}O&S&OGFNAzWCb{;MBl0zY@=jZkB^3e zyUtcD>t#-yujOPS`I^v+ygghWdk&37ej-SGno5EKZyXZGl+YViXP?nS;<}MFgX*Z6 z#_;BO&n+G0tqg(Tn7qS^?HS45jB4)LPag7@u~OnnKzxkHRBuPS=Dm1?wE6yM(%Q5 zbHMnN8UtcVg`^v@b669>8| zS{^YcJULAY{w3Dh2qrLrSW=%d3ST#jV=a~u{z;(Ga}J%MBYvpU5Iwqo#zq{M);(_W zq8#Us92CDLVHYyn#{6pg!n68!-Y1xHi7FpkPUl?#z81`uhR1-levGUgFNC((vH5&(d2TNn z+p;zkUZ9?m-!_of;L5MFNMJuN3I8u{l-CdQXO~BuV;nBgB0?a*1NLH>MQN&ZA8_hs;$lg4I137ep`2oTb->ePZA4)ZtD zRXLXCe&G6^+3l}r<79W|+dAIlpqiBHVJG zuoe98mgadZlGEYEl5GR8Jsp?xmT1|)#j#(@Yx5p)`U&dWjni4COh?l4DKUzDc9TXa zJU@!Nm?-*^52gUpBnVPGC6VwYDnnwp;eK;zBZO6`UxsN{oI< zmvv&*rq&<$7lJFxY|uqP_9@lJOTydLw5A69(D4&2H?m)>8HBbvDW|A^>z@5TJuylf zTPMdhtHZ>KdH@k3v0hU#X$o*U2y-l~+byUcx-+ zWKN4N-6H^L1&IsjVI!dQT*gy46X4L2irHWs{9UX5?GN?A7uVv}{I3Jv%K_e#dL~?tIs8P*x(^seSvScr?Tsl)&)GS~;ogo5f zIsY|D?i-3G-rEMx(hw>?`dg?iooq^2A-_VawLed+yi$1*0*;;Qd^>Pse(9m1)aduZ z>VGI!dYx@sjCGUsRj<5PXZR+VNt!A<3obaIZ%AFRRl3Zb9+s z@Rm5yJI(?bvB_+!IZwAGa^j2~&#GAo0?EOlf`Fc-ActWn_##SrIop*+lyA)_z5FI{ z&QPrEus)ThuU**t&m7&E1wmJar5$1@OmRtfO^{G)X@bRSZC>p1murV+{0UpY56$`t z+Yzym&mmozUC_;w+1RRQb(q1QH!)0~T`pEyvg=abtd_!s`Q0@P(1BzF#nYu-C|g9q|b1IH?#Z1z`=hUVpj$=|Fp zs>uCDk~TE_cNCsR(sv@xdWRNqp61L>;n?{6(zeA9m_&kQU{OI8QcC`J(Iu?SH@cC?c-tDr6(c?v7E7g!vtKFPi2yE=U3pO ze4aA%-ye)uiC20{Hd6YaLc0C$Z@{&RluL@aa0uADfJd2CF7{+*SJ}(iwyGX?8rC9q zXLwoL)3_PG(G0RGa2Hvf5WVDeM_2o?54*TO-2bP8o(-!39x;by$s?JtmrNx6CliOb z`u|*`l(+WeWP?E|^ga}Age3}l>r9$w+YJheK2?$@e{yvUmeyP*&IA8i`|yQ{%B8-g zNz{JarVztVlzoQUJi1e2+$g@1m>qHtGG)I3;KdJL?MO4;54FQ?Gmg5{KI@6Mrn6j} z>a^I?^=_lc2n+}lL~hr}h5OaZov~KGa$K8(DJZrJGSZK0t%a{!UM%St)%xHHkmL;A zlmX`fW%F5&vK$x)_h_%%j-&Ric$eaxAC-Q*CD>Pv$Jjjk%LtZnEB*;*;=FSY%}d*p zEhK|}b)}TVpwq5XHKh@XgU6Ik&NGffa+!PkYj zOGYJV;o%rEuS;qo8YOi1ZtJ4+NDqS#pYMP#L(t>+EuNEPrCJWQn6pN%gMuZjS%F#E z_eKE}CMt-Rrb2Vegq>1AbZV)%->I!a=KEs+(aG|=Kbz6ql1u`qbjePOg(L%|Gx;fRe?>#%#o_h zjTJi6pftqWOQKgi5Mo>i&p^2f^}=iiu$791*P0pt{`9}L0yinR&p93z)Hh7lC>?~B z34{%Z=672+NIQU1nwEA2flfTspBwSUxE~bIqO{Qi^E*!y3xh!9fr)LXU%3b>=PcZ0 zVZ8NY;BPmd9j{0`a=++>ck3~@WePn>hqYG-3rjW`yH;kFaoyE4-weUe-C z%<{vN0&WpU{ z3$Xf<-O$(4%oqDv0bjmZzr7BM63+Q0OVUch!@H# z6ZrjhMDXYS!^i<3eWmrI9`d$2>~HVcCSMyp=jH+|mumRH-PRw$D(ZlqJW4wWXf+f*K%kAqgP~KUBN+!QsNY z&C7=*=aG5rc@10!dL`-OTGjN%0!dCi6E)&yTFCgj42KPSFVEXtH}BM?mdfGh?|z@k zZX9ul{z7B2D%O5fxEdY3dJDwVZjuWY)GHpeUq~GL%fK$ACEqwBaT64faNskdm~L5(aA?vs zF&pW;EBi=jHX`87`hZ7x5M8pK!l8}aHll~UapC;1LO?sa3Ks7*?0K>Kf`eM)Hm?_b zcVlGCMvak_MrvEYI{pu$B8Bnw(AA|^)9;M+mpm;T$00XC_cWNhpJ=VTor2Ylb`#zg z+#W9JJJATRYJ&`J2Uc)e9P$NlbzH*T{Z{ruw@jPi)7Bmb0?|+A}u2n>-7AvkO}G7%Ff>#1aCqOpek+=IZ9dG z`kY$(u}|i5S8SamG0Yue?ebFoCc-0;pLI-E-q06gWAUAv#F_PkIdF*9_5C%gH%!qX zy}r3qh=$v`Fbs{_t9T_nZ2Ncjao>F?o6yU9tn=njL38_cO&{^LUtAvQPrWaAJ`{PH zg=Xk67%IFt?oRJ{U7&T;*FxCR8U#|ZREO`~&9+m5ij#m-Q~lg}8v>X}ull{LG*s+- zNih4PH-w_@d#A5r#LB+p?fuU6JZjhyDr;+v(wQ<7)Oh%N$(mf(gHbb`o}VyB2P%tN zNu`0&9i=VR^8E-1`WaAF30|b9a>L6~Zn|B!3G}b94|PZs2)a+mG>dXR{sDk-MVzWuKyA150rPbL;JnrhTQlfhc79MBUw_BN2%ICq4NYDb(eljC`<|fWbv$k{j6p) zALe;mvQS}aKJ5yRc)gOD75}%m{Ur=hVpFeB64m+86$-1~hL;pbJpO&)DAKxOHL0l> zF7RWHJ|*<>3NS?4rZQsku0jwv@BrC6{E|-wReTV`$PxFZZi@n{vHX5>!a2g2>6iU= z=)%U71E4{0QtIrG^Jyh^W(w|~*@>)>#fMyOYN43!7?hdNb73^$A1VV(_%gVMOqYe)72 zO$NFWFEA2?62S{o_HpdpxTbc9hOxYQDvM|H?8s`7{ZF8IJ*-d4HAc(DO|tH#U{H;N zH1RjXd8>(iQs4~jO&>H8smGJG&Vs8Z{J>x;xFyeB-u?v$NwU~B$a=zPMf1c=tCEm! zytgY`(_3yFxzWZW!If*Y-LJ`Z55c}(he!e~Z?ZY(B0H>)rUa%2EJG(FFQW$f-Gf8( z>y5wRYXhr=Mmn7jN_=T0 z**}Uo2BKB1^=(<}{HD_@_;ewUH+f_0gTj}*C7soDQl7X2zi&~UTFzYi$_%GEVRL5C zCpED+mDcSFF3BU#$=d^%wPse8XPUvn%fbR_8{suv;U9QCLbDzLe@-baaV-C#=0mj( zdAEz@5H;Wi8KS42bJPCHJrHeEExiZo|>553_bpCJC~j44HZv z%^peHLt2Hdp%+!z2r>ze*A)0c55sys&1&JMd<~PLXOa|ZS=&!G1|=#s_GTZyqqX(W zi%EAJN<2`|Y}{Hi3^Z9zva$XHAhdzN2kaz#FvUwgGSnI!c zC24eUT#a5RitKv0%~m~<#FJd+j~Z6E?xf}Wn=SPUVpsLGwv}mTB1SoH&pDc@<>KrQ z#(Zi2B{p*%oSrPnJ@Eg?MuP+sL;ZCGht8|-yLoSp1!wTUQ}6C#NFCc_K6cH7ZsFb_ z*M;yP2C%B9&+z|l6(*lt4F<8*z&ID_{&aOi4Mjw{yfmJiGY^RFoqRWtqVB5Dw+OT> zt-)o|>2z?Ir`JkddR3JVH}Zfdi$w=V_FYl<8vjg0p>&Q;3Sv-tmcj+x5nv^@4V1r^ z<7##Mux;r!QC8;%4wfkZM^j%D7Ed%e|Ky+aE6NKGhv%7y-#T#58FH}Ef|2{_dIfNl zZd|&vRR?h^)=i8H+%Hr+Os>Q;&6984vo=kjBU!%;o@bci%By7rw{;9EI-tPd4S{o? zJ!>9(|Is|dd9k+rc+LF7V9=Fk2l)$U`tS45F`cVnAwvs$$sZ>b;tt4B6p$0S7tQ;j z$e9l_c2hf#PM7MQRu9ZnE(#yM`WpO;bEcai1|_?7@3UF*&ZUwe(yWVhjI+xlDux}} zAQ@PplH;8fiWf{5DK9Gmf9p4VkdK+R(0KWQLsY+3nhZ7U+tT;a$yl(9(Pxz{#PtZ% zVtN17b62|BvnYMiBnItFnxwewEQbR8{Cy4McM1!lGZ7)n_y3d1(3YB__jShFYb`8II6Xmb8~{5e;xIIyTuwpZ-G z?MLTo`?GEInCKPSR|vp%Lg~A_47k125wJx;5b<@eUgX(!osmnhl6 zIABkkTK>Zy_1qEc2z-lxj=u4=2jYLXkSF1TVS!ErxAuq7iOZ___g?aDcEtE_1&8tl zE*Ms<0O~;aMZ_l5Fa8(ng4KVYzJ@+5HVZz%@(YL>)HAW$#S|O-nxZm_cUd|Z0$_{A z=e#CtY-OiP@`Ex#w|iuxv6%2EG&*P7$UW6@81#=d(xSTC(Px7ZaAYVoWszTkg z_Q4q>t6F?nYeZSGe=1*Wdl@d=sXdp+2ezB>Vj&YZrgF}!aI`r>C}-3wmv0JZ&okMKFs@eU&$5g|Yh$-9cERl?+@pz}UYgNmWc}*xN>V(o-ea=y;+4l1X zub&uoQ2@l62V%1n45#EAT2%;w=6!S@aHo)CYso+oA)j8%-A@as`m|G_eJUa=vT!vh zVa53hQ?$#26lovjkfE;H7;D?<)Ma@WuX`7TR8J#i19 z!j!=#d?k%3 ze}JLVzDkW}=_1k^G#i;^lSI+$`ln#->0P(vtD_58J>+Gkbad|oQ`*VD0F8!@#JN9f zr*p1H(Uoh5%^+8yrM^q4iVKR`j)r=p%Abw!YNk8VDX&|ZTB%^sENoRI<@`<|9xzIk zx8EBeeR6b{?#z9l?b?8UKU-wbR@s&OGEB9s#kaU`@dnKqeT{rxa<3nUQY#z#k$IqK z^9>|rh0i0f0gfnB%Qx%d_um#~?Vc`EQ5Tn^q~{@TfQP(e?(WA_ zU&}#9IffPf z6{J}Jf)Z}v+jy^6mLHYNG3H%dnYbVF30W0<=jKS%)&AR7hH=sl*)CugAW^LD;Cbz@ zq;ECvf7CEW?lK-FP4pDzD-4(^SzY^aOE{G@TX3BDXI)InL_uT8`d`hUc@)sjr-Zr{ zj$WiX6+Ym@Y{NcqwFN&V^%Zvz!=KFkX~b;NJbmuu+RhR%l>R5Z0x zBe-LURvOPM$2z{{=d{;qUU2-PX|yj->?e7U_i<3S7VVI~yrNA$^5)X>440S_*7g6I z@G@>0o?neDRla09il1`L{7N<9YE%zGj)6ser>tL5G`od@E(tP1j{#b0m?s>k;$OY4 zR+JDjZT2es^SRG_b6Zhc^mU5TMh*AL5wGMuflH^}rao65F3(TLV^x19hAN;0tf;U` z!pAB=xU$OSQy>s&H}D6u4jlMMUwnvN=#)X@uRSpc*R2Ssd~Nf}FkBh*emskBibu$E z$R<-yHr4DhT(;Jw?+wEPCpbI?+V!1}OQYpF@FALyl`q%uGwF204SPxDc<2+k*6Aw` z{U5W&7tV1u_Agy&>(xih4=+6{X`f~|nU5Vr$-{?I_ijPHFte6z$n66fkRKXVQhxZw zKD+5UZ4KC3Kv`8{hHO)6h1t6^O{CJkNtX;w8aB&2IRJBW@;JMcG9V`^EV65{z9-wD zYEqMMYyEO4ocynfAYVar2|y(WKb?{*AgPDvNnc=LT=LRt-%uqQ*U58LIIR&#=mSvP zFs3E0)v%t!&qX!JC-*N^vn{gzcagU6amcYH710IYpe;-XRQl#)ZgdVY-1S&Zb3s**8m-BIj&Y*4ep zXZs`Pzz@a`RF3z)i(#KnCK++*0SCxq!VGIiBE>?ZR|1_I@@yh|;>LogE-CP%an{~r z*3d>QzgaX>Zgt2EFyh5!*6Ng0Rmo&KoxON^aYK|X*05JGsn_k%h+AYG>?Fv>?|hAW zjPqoi3t~w4BqWK7sY%@J@L>hrn+(MFVOK?seCEHl$b!w)eAq$(*W(Mph$E>l7CEkOCRc%$^PxjN;`fj znGwyB&Yq<@8|^^cQk0(F0;vtoKR^$nl%TaWFhlH79coV@=vR?!d{yB0S09lf(;nE! z!GMY$TsE<)rUT8W(!+cVUo_<~&ZMQ$;Xb!naVTVHFM>YLdZ&p|Er|#tdTRX(q7ooI z#ccFkpRjBr(#Kq(Ab)RU>}7-}sJC9%rMKqB28Z}S0}^wz0}5?qRjC1lL|}8Qv77oEm%nlgj=k9U2JKtjYT#7$!4WXEj`XBqV?j zr+EGKyb~9z))?UEwVcH8BilvX9_ok&LU==k_fJe*n#OC$&TyA|vC}oMKN@FasZUoV z$}%5*vJG#!k)#hQg|_rXSz+oWo~_UOuSc%GLm^k}PTNM@4EBQ8!!IHSCG@O4|VQHWkiYFyCsZk&liF5-q-sc!mR+gE9OKSm|3?A)PvcB@&ekDlP?nL{<2e z`~7x~S_>f#hIIz?X)TT zl1W$|ZZ|@#xrl=@T8*FWyjzuOdJBg*`5X=+MM_atE*cug=M%!AtY$Rl{>kS_5x?Nb z!v+Qp-L{R32`1jH?jASxoQjtz43K(ECh$+7JNaP-MFs*d+);-Gxnx+I;=)5LjkB>P zrjImHR;&wEj;6dVK~FUTWU^F8klO^}UPU8;{0oUfXQYbOEV9DZW+JzNi`Xz`t=&ZL z)j%G&-2e(zS6#$s4m1zh&zgBR9|u?A*TkZ2@}Cqi1fI4Jm_I6WO&qDA z0Gl%$ztb<({14M3zZ-%QGQPW*1k7pTs$y-2^{Mvqz%SK5ujc>^6#@0&G^gi9!GKak z5?{PRgY?f$w(cNcp>^{S9FZ}DZJ$*|o+ zSV=ag#88v0tw0REM*)SqZE`?&#an)k*IsPU4(0 zEMx+TcQe!WkdA~C_V?>UcMc8RMn;g(K&IZ#iQ>Lre!t+-%N_3FrxI0~e*b>ysS-3g ztYz@Sgt8i8)Ke2+FNWW)Ut0*?R){2oo;&d8F|r>m+inZ~B$mEVKKIvpp<~trDClSs zrM9>Nw(GL3eu18J(;hb2s*lMZRlA&gbM2fG20nb1du5DtT&kobz)$E@s~mve2RXUf zWXqK#Fp+`H1^mJ-5~!FhgxK;<08X#@eIdq&fF9SfLTR0}e(K}Duw9A5h#|KX*(EL) z#};u!HEaAQ&=CpI?R0Kpq$f?db$0mg+zTMhU#XANynpGQ%bdD_y7C-;L~NcG$6}P>MUm zqx=2LK5e8E0FSbMsOr9CDO)IsDUt9;y2iWT6Hx-XE@1s}p?+WG;cofh1@%%BQ0fD; zzorPTSw_d!S>PW;Ez!Y}A1*(%-f3k`bJ&l3)q<#yjGVB(zLNxzAa+$~6b|I8!6N(7 zHmU>tN32tG_Y3$=gNC(WfaK@v!&XU)cERimV0qEYzGR1D`p>O1_m^p44HIyN%;mQ7 zq6=B%7q$4>%m@o)Y9Td(!02yc6>%;JF`&-?GH8g#9yd_ukzMIM{v58fky1z3BP` zJT38I0&~<%>(i_GscBBs;x_+!oc=F6mas4{9+o1q2!$AV!ix~$c|6*7S#wc2FL0YL ziFRO{DjcyMO>C3oQQve>TwTcB%#*Ui-vmA=eC)HKS>koJMDvFKF3bHQ=i&3^XQBBM z8RLqN4u4)^-B>$tMMto*aU*S*H0~mNc7gks&^lhDeN8~dB~29TJoqtyUNV9oFXY1OD%{v)v_P+uIH6J!CTD zCF?gfr2Ja*vyOWEK3V}eH(1}&f{X1+@HaWuaroiSlerA!hsW)+ktg)zI!{zO=ni;Z z5U%KLM1S!lJ^adPe$!|jZvxtzLi}L-9Wz_~Uy|y#t>QIL0iyTw2U{iqez?LL@t_Cq zeYpOa4I9`+AAqt{pA`xh{1P*)&8_=9JDS09fll$R~)Qu$RUwNsbBm7*}v!~@c zbDtCjIwyb0ocz(O|5US~Gx{a6bPCa?H3kv(%3pjd{_wZTTndMsvHfMhdDwo2xu?{4 za1g5QyJ+br*SgTyb6lyCf?BtR|9O0p%wZ(vG)OH|ncV1%e)2}bKjfsly~?jhv80IT zSI4c&!^!a<_AsEonf^WZH)j?`SfZ80zm-~=O3A7hO)#G(mi(}RFX0M~@f!95kl#1G zckRr>Ov9bMU0t4xrLg(IORq7u6`47rPCB0)qI!r}!N(uy8#!wwg}%;&46(3;`CIf( z=49Ue^60QTdUcO)RzZgB6Qftgc#I;^wIiT^OKbR$A3TL&9k^Jc^|eY7xudxNYR$l5 z>Sd344&t?-MN1oAS~P`-@HcG184ahA>G-l|vwRi0EYi5?GH&{6-kMLFAtYJ`Ow&8q zH;63y&B<7Lqd$~pTd#6|Z8kUgpu`jpeS!)O;`piPRK8IhA2@o)#L57a<2?eoZe2c( z7j*_7%H?wA(@9d%PmK=7ukiDSQ8@!^uG;frM{Ht@;UceMg$5{T3NU1o!_bT`bZ^PD zhMz_S&8pIJ`?2Xv)>x8DE;#)_+dt>t?^?WX52mO%EcGD@4xg+m*4jOvmrYfCkOMBy zBpTr4B4 z<5$4O$B?x>JR<2z)xB3{=t@2+2tLl%CYOt$zCj5Dq$z=^jk5d7+c~8bnZ(vF{Z7!P zk8*GFb2dlO95IRpHJ~gGdzHWAXE~l5g?!KCZigLy3qL}_)zzvIT&y5f(gT5m!H%=# zNE)Pcy3ffHdf{4ebq~Rz#`$;3SceT$@+fG!?mStN*81gj=aVC0Aq^qZfW}eHVfk<` zqxPd0cI!(KH>>}-#2mA|*wTo^$K)@Q0OI!s#J^eo@r7W!2#(WQw}M{fn#dR zaip1)=5uttAoyl=KAA!n@-=U7Ldho-VIlir;SH#(zhA!X0%^B3{;fan!G5a=?`Yf+ zsZsi#QLDaMHRCxtt>O;_dqd-FY&Xh4ZEFBDk{;;+5K3eYk?d^2-!)4a&`8rGNu8C* ze!Ehti;2TVpdDja%VBU-*X+DJtRQ|b++0#Y%e0>od3tq%pm|hf9-NM)Yy_76gO(W5?>J_ z$c`~J&rhh0vO}BbG9+7ZM|H_n{a_NL-ER1}Iu@R{?Hp9@%JDM5`d_Oeku0M*8pPib1|*Tq1$9PqYJvzAn%c*);Ju!t=rH9)H%x!QkXC~+>* zNwOq-kFp(m-q+9Cnl98if8|wr#`twffA7j;kVZ|Zqu-(L{tLg^MsGBSD9v6it`eN4 z=iUu=>is=uOm$UUVO6VCFvm^wNTC&mpnuG5Zj((9y|04FUo7|Gs`84w4;*EGl691g zzF{$6xA^?Vo#>bDy(_SvHr>Q1<+77R`hFmySDujmg6M3n%}o8oM(_@rN76h&@ogOG z?lE(yi00|rCLGE}f3iCmfIj=9x^`)_xf3E^FF)n0&XZloPACaIqML7WXZb{zz-C$g zV!%rx+6~O(2q?8mlwp0W(pQ}IemjlROF*yh3?!vp@#nNzm)J{jJg2mFa69tI2FBkM z?%A!mNxe!VGM=nyY7sC3^L<6_;^2urnJVBl5DL)sz*Jdfij4APhh5!>r=6?|kfud) zmT^$LrKsLXW#d2xMxfQ-4Df>8*sPD|w46tG~yPP5|-NT&oT$F*H=;q zgD;Ev0=SusnUocsXXAu!+l3tB8ptCxM6I}g7Q^*bXASMX_{iA_{`%|wlES24u3%z& zFIC4uGUr0J;#ECcujB>>1x z_#~f17bIcF{hqIg&q2B%3A=iZcqFiq!wLrva5taS98W8#~zC zJXwC2XdkS9SAf?K6l$7t!UqX9 zZRXLwc{>sXGtbGV^qj|h)8#!hBU2MoLB34ni9RGmPiUx=o3DKMa<_ps@#U#k}r$UG!6T=ca~#9Oh&yDXu}pmd(J(3<|IYepQSw{1Mb`)vw}hT zu6VYq;LCljPQ4sdcVlzUdBMx2WpU=wx6;!1!0OSUP-~J_B!1D@H7uN|+iTOl&7<%4 z?EBX+v+}nRU=0P{8tuXyXH>FSX^fH=0xXKhgJAinG0w+PT=sqB2sBl3E%Zu02RsHxrW6SwEz5*>Md&lb2RNZ|DG1fuf+y$&$`jVWY`ytUK#0 zibBxecJd<+SCaeeWwXjJ_dMiaaR%)BmR{~;Q|A67=XBzg1aLiPSJ)sl zLx$Pj6?8LrV#N7W@}Rw^G4ke1J#Yr#BUCQDSv-1`19OT0{EQ>d1QaYCkm|obx&LI} zm`A7m@vMxJ%!+tc-xku+O?nt@7MQG}x~S=U|J{XDOGkF!%Z$EmeOh&$@oW2lB*wt1 z$qx!Y1A_LBl~%HW5=71JfF|XzMABN?ztb7Bx7`x@2K}9(OmQgcX4O@u8RqY$ z)R;bX>BVSMMnW%f5zeXOJNj%2{e&z=L4oH*r3q5-`v5zvp|zGT&Kok?@XbQkhyzX`&opJBTE3<+BNY5fi4m z6BT;8;sbGnOf-B;1zX!f7su64j|Xpe#RpH+1#xx+R#-COGlmc|-FWWl962Wo>@V6jch}Fc0fQVAR3tZ9y=IT19PBo-NZzIZKc{vd z0Y_kvd(F!q6d|$*Q@?7m+an?N>Ao5t&x@5F29R5(d~IRzA0#}^c4lZ}lv(4Y-;X9z zoQvHif1xJ<9abuSYiy?vsrJyi*W5UK*5KPjlhQR1aY6jwE&BbIfalU=@iU}Sn_Eg=F5G0vHdlt}0rQt;E?1C5Qp|W-NE8*7f2?Pb< z0cR%J&tEaIdjOK`amu5zm~cftowZBZc?eeFRetJ3{YX0RUVXN*PfuMMF?i$FeIeOCZj)43T42mz=N0BWrXJ@sXPad zqv4BoKmVgs8ULE|=5)|;EbH~yt4S57#%{QwgMuh0i!&oDF#J^(z^`86ravgW!Jq8Ej)%RXZAJuXJ!Ql`pAh$h7(2Ax1Q0Ej8<#h-AKn-_^W;ywyH%qn0@htf zR-IreUSv0%T425%ZXC>C7!n;LyP(K`xUvI3l#06i->o4c`MDqWCfs}Q#-<^re*XnU zc8dFNncp`OpoFX7az>fRVG$bzjhCE^U%3{a%|r(;Y4kkPF=_B-hA%SZup+lTMso=f zZv;aMo&Vg~O+(lBdOhWRlsr!%rSjpAsv2jXyY_fPNda1|>R{bF>u>O!1dmqRX6sp9 zJbiuaQXSgn$s0kaR5H_&vUi>ajHKZRS6{54qhl!|TV}vf=$BcVbvCE5+Rd`d8B(Gk zp7(gNXhrs6+JPw19{dcExFARLraUI1T{PN3kUfN-*<3*O64Qqk> zo6|wC;(sq|yh>YQO*wY18ud2+5pzT{G-NtZCg9q4$Z^@alWKkt)nj`hr`DnO^&-Ac z``wh%K9S!P^E~{*BENn%_ZsgWPy-nM@(FH>nI{-NJF6x?CzmKfMd{;>{)lruwzx8m zxSfFFr$3LP2!I4loAV#+Z*ut``m2_j>Nckr!ri=4BwDTy8D#RlU_Ca|qKW){ItD>K zlOi>7HM{Y{=ue^3ewX|C_GF4Jg>`YKftqlJh(1z~HF$Msb)?gK=x6Bi*L5>&MP|m3 zp4Wgs9zMLN4BEl&%X?Y3Z5;wd-#ZGRE=$Tccz9*mOuehyqOytKR%&rk4#tL$+6m_$ z(qRK~W*ub#rV4-S=+y^raX+`@kHFZlTRQ}`Sldr(X;1p=$+EqMVkZJ|(Cx_c(qea{ zYZ2=Jp)!GVXTaF-2v<%GFOEE+4O$@87iyFCg1Ea-*Y$f(Vwysq>e96GbUNuD=_(Af zk^;hC@YTh#PR<6GGduVWyDMcFjlOrBQm?{I|??1cl?Czx9^;QbDKPUYRF@>87s_&I)d3uht2)wwklI zHq$ZiId2Jku>CP^`*gVrHcy8TLTjzH*6Z@*TBgZ&GOyfsYD1|ra01;?PI9gB)HhG| zul6k%`F+869~*@>^<|82L=%Gz&Ztc;I8*-2SzAtU_sn?-lE~_&dB%?(&(+hE4l`Ag z>-xq?r{}?6IeTz~NYNH~*(>`B3oh!NX|T#A)B0tF30;_{l_jS#$V7IshQ9-Fmd28- z3_AXt{9uT+nUko^-&>8_;oID>0-<0Go~igQ;6AnzTsrW8J?JTTN7Yh1gm4tejgz-n zyEtmT8^BOUpCc^+VSC;)3}#HR4EnRn$ZS+(Vux9s5ldkh8Jw~&9_C-pp=Vg7&|N!S zcKW>D#qqC(e)#ZA{LW!!Z&;w?!#H@V>C+kxN5+%otjNye4c}LPw?MoDWATSR65_q0 z7^#M|xeCWdDrq>nf@iaNA;b37;l%~=)d&7itO#vWm3@DFtId^CDou6*_!lhNW=W`9 zXyXudc74Je;o`0QUE*!W8*NB!*6Pjb#3$5&^a)}9DHWYpa*RUY!w*vLfJ*&JNs@k1 z>apwlZgB=!LpQS#bz|R!8>YUon;NGPYarALc6~`oHI$cvo<`aXFg-|Y8!-OZ8d9p@ zi@VG6>kl?WL5A7;^EE3~jsBgamdz`R7T@IYU(=c4Q(9I|C5}@9n zs}>U7Dnz>wW&Pj%Z)tN7t6%Q{UGCKh&HAE#W&5&mO4v8W{7bC$gcFHqB|XwKDG+_% zVcYs``fPOHy{2=udpgVOtleV6toze8_I9^rw3M`fT{F{*TosG3Zp8az#9u6G-y;x zLF^ljP5Mt+PW8eC52G!-t6g$Up!&x*(Zs#wbR7kbmslE;MX#q(5mE941+(-1DMcRF zJI^%bSxyhGPZ;ae`*a%vg3^(AS-6E`4fF!@nYb z9(IdMmMiMGfq&!Ia-Jse(yv(Zgp+IQ1MQR3u}Hlw$FA!AVbyBHp87efVS>zf?4KOY zw{oU<(BW|H5zJmd`^P$+7WnpXaKm8ZP+uiyj9C)h2x^P_*dcVdqz+$*ruy{p`}gE* zJO9hmP&m_ba?#u$3&VAv$rSddq5Xu)-t3)XnKx2WpD}q~fFdQ6TX)qxSN~q!Ack_U z^Fvr15I$;%F%`iQOBYW{_l9eBBOj$368&xpt6pJ^iB-o_)|RFVSk;=7(oaFqpa*0= z*w79UQs1H8^KgTokFg5a#ize_AQ%+N*nvFAB}rYZ`{tSe{sTTzhe)1a1OobE+oIZl z>_U*Xf^^`PI>(j^e;)`IO1RwHO`&YlU)J=qBTDT!4F*N2r>p6=XT6QF%)*>|K2k!o z$)b)7>>$g4qC(J#u z>5qn*E-nsuPdz~OPK^Z-Jl#0S;aH2pL-VQ;+=v{t=QCOr8^6$o2KR{e+EEkARF^bT@RY7YVxU2rINTm+_*YrLnVv1p5 z{UkM+8V`)s&4>e;C2)KKm*S~m(pP9@6gruu)Ps!cj59--F=(qJ9z6%&?6iCw1QRyq z`6-1gOXx{(F2@fqzueB7!i~SO6msiiYqyoivpg;VK%MG6AkRdyAE;q1zNO( zlHtI!O+U7F9Lk2XGpWtLE!+c5R_SA+=Z@Md2NPZ&{#2Lvz-#A+ds=%Mn5&1##Dw6m zBtZ(7c^kOO`-$&ifUqOqK`QlG+T@g}rf9R{`b0p_KD;JHePeFn97_`JS@ z9RBpPxCV<-lfb0}r~AC=X0fdIxutY{+AJW-pGNH-la5lAO1juBKdUlXEo{Id55Q2{ zApeR~gPgo|Rw?-V!~LueBW464n`HJ{q}=zA830`^!Bmw?$HnTkVTC*D7*9?bXz5Fp zJ)j9aw^~A~zByn8?MZJ~g%o?4c>GGx7elf~)f#{Sd&^JSsv6$KC@rRSD^+nF8h#lSye~r}$$M>I5k!eyUru;XefP=7_Ocrg% zj?L@UHD6LM{IUwJQbKEv)UrYr*LFuRjc9T4>AVY{8P+B*(r}ofn3FX zEwb9>;R{DDUFRMY5~_m>4%-7l%!l;ATC~G!U8;xLS@fG=|Me=gnroE+$D<%}Yln!g z*jjO3t_)j9e>y^mPa8Z>QmzeNxkMYjSbzTU!h_$_CqKa5FONA}c7%x(m*U`@n_b6J zRDY!mnrSl&J{s{5G#6m0-q4Cx3VP%-9K4geV>{zEaz|-!F;lS5CFZZgZB6j~&~Q(T zG~?fpjp^vM7`qtBJEZI^?4&hyKW=OB{e5`;Ikwcu(8)MZnt%zptts3FJDb-`MXuIB zuO%5MS=O09yxl1FR@TOVE!|S>h>?-X(2|C*-t`3|9-~4%A^zo?K0X5N1Hg!jZSpT3 z8~p^}+Bb}Qc4=ggGF_j6iLHK)AKkYXCG;@Xo(vI^bKwZl%?tv{XcQ&F1Z6l=5-t{9 zZhFhW!#uUbwy^TjpKF6&amHy3&_cvhY6ROT`2XNY^S}{_m9dX*s1&r1jlKYW_M3(l z1{c~QcK}YQIZ_ss2=kMvZzy6L^ZoQ6ncJ@j5a@cju5PfQBJB+2gfWv-Ai4MfEn+Kqeu+T1L7IN#9Dt8fOBsv+875lBCD{N|ny$rk~JqyS^M$ zkzbMnFJwIB?Y(d4TkV3}{gLg;TV!_uty%!wx=Ht&JUFGNwtq(<0Jp@ui{GWPq;>o7 z^$&LM95lPTp4ERdb(RO{a5jRSnH3p$iyylWpMh?TE>#F9N>$bS4Wxq9=-$2A5^oL!nx=(&MeZ8N&16{)w-_i*dYM) zyQ!VLTiIaCT&7~$oUgXZDpDVqfB;OYsfld;atkGL-znA#lDi4MEq*&;a4~I5Kig{t zjkueG;Ue!EXs@F)i*k0}+4zwDwj$gxFLeTMtz2!xjqu1HIajhor(<)1q((dNF z-tjwdJ4VRxL6d>Ge5O8s76Oe{d)BVCR$Ucpa!09GcHvl zZk{7ic7m~I^HCC_0vwmQR-|s8(|pHhkl-{=dK$(T#I->yFe&4*qmD^1@CO}RkCX$? zPM_}B_Cz;<`=+^EgO`euzZFm}C6S!C_Z0QXr`Vza^8-iRJqhFyk8$WW4Kkp(FItzx z`|#j&BwD_?{mGQ|#C~rN9v+1MpDpBp0SE$vVAJX{q)ig2}VMUL&HBh27((D)~X_E1pHRz#=Brn z4kDT<70ey@HO1TmTeBnWcK|uFQ&OV58tq}s$a7+&`9^id=dD7?gJSty2HqpUGuW~l zz`yqO!#?u;&4y1Y)nlapX%pFFIiNAh!p@0$lHn-{?$4&t@)00bODZ+$hXsLPALIK) z^FmqvIo1cHQ}ByPvpPc;%t7l`YGq3uWxFEz=CTV6nb_a2HK+fGn_;Q1N;Oy2vOYE_ zr2e|({i{~kg_eW4|(sTJdM}oY_GY!n{nR zKL{Q&BVG$U5S-yKL+Dh!^P=mv0=1OP*QXRVL|%CM1PFQEitrGhYU2=J95$v4h}c=_ z*-GLk9AL}y;yYa2Jf7!XDK=Uw(s(X6zjC`RQpa>H<*s|?y=ijCrxkRJg~YJR#3F5R zQ(#iGDQ(#ERIckxWZ?`e`6xT+J45{0^TzCWy`+%&HZYws34VIdnYM2# zPxS{zSRqxN4^QSGZ%8u-a;#+{R3g>P!ai*K>D>Il+M9OkFrTf?Gi9cPpw0G1h%yvz ziFqAJ^Zv8R*fGX(Lc`h6+KyW$#Ol(kNH+}~>DkRpk?chm5{BgOqcqRd^TioO2iU6A zG&oY6oh<%v{u8j7b&RJtfA$M%r~d-tN%C&DRhNBahQzXZ2|X>NTtT>)Vq=*p{*@tC6DsXRZqs2yvaRNQt$u_ zLM3oRsN+t!fq9znI&c)bWF0&-Ons~v9}_6f;FUci!^Eo%2}tjrG|l0u7A=yU(=rI* zs8+)tT&ftpeRgcw3oN<8eJf;ZDbfXbYp-Edv^YQ0c}~FHS0!L;XD8zbkoH&7ETJ2F zwarK2d*M=cRBPtWpJgd7J-iybx4cT5%>N6wz~T~uq+PdS#Gejk;3zA~rw;e(%tq(k zH<%9jb``H{dndGnVv}0YW@y$@5Y6W}%i4Ki*HMALHlUnUp)${}mRV(wHHg>pFfM)S1(9dUKZ}9()e6K`YY`g+h_4}TebMcjL5R6{iwaR*3dFgsE?z_Yz&^Dhn zKds3j&S!jvNrE4ld;jn)*9)hC@WosF!+Am7y=7v=c@au`n9ZWcz2}qHlJuPn?|w~{ z9jKaGe>~h1dG${A7)Bhiz_7IJ@uZ0{<2upAP@*^Jyjr zWcZ!*bi$^U2#kP?5p-T{rcORTf{k?Z-pIRECi*X?>ajIH#l8oAKDEzIkAjl#PYGYY?qb!U6-}V&NejwLubM&MmC3A%SN=uu=304co zVS~~k4gYRSLr7N}Gv$NCg%oE!%LP_gd}pF2wEpOu*44$J8dM;XU=R<4?tG9mX>!OGOP4&-r#mg{FcR7)mBG zuk78iVPW&kY68O_7`4EDe+P?q1Vf7+uG)RChry+wb8(+{d{cCiVQ$Ut-RIXqd`7g} zFTm_gj#YAi?Tp-Qa<|ah?b^dt=k1bg37&RZEH*m6InR;<2{*_U&O$)KF!X0$^oWsP z17PQg_BN6a%li8}`Lti=(2U>qNc)h0-EAd~iwxCQqV-hVPXb)20SV^Z1TS1H&+Km(5m2Jgwet3SL2-=O$Q0nXGs@9&c1I zpLe|$scx*ZhW`}}+(^IWD7+>&nQCQ4e0wRde^?^!E_)B*?`-wmfwY!Tu{i?@7{O;6D1G zytGW`tcsDwe{L-F@A7s^&3y9QYw9+=)tm7CE00mdOJZPweRWgqZICPT143DAOV6cF zQ-#0gm1!!5kyM)L0&)zWF5Y7L_N#^3+>I&FS<7hSFWIM4M1-Xr(JRj?Y@8AKI%kli z?{x^=8NvWSrSdEqE1U__FsBiEgf}RQn+q5#w4$#K6hmrxmX~D#ddwTy{p?NYW=|T1dlEKx&kc`n6{8M{r%hvk>lKn-?-FL zGOO-P6#a=CiHwHV@|h?LJ7;HGl-gocS^RaTRaAu3wmG4G!#RF^P;nHjmq6hl8ME-a zz43GbuW~*no_%UBD6)BS=|$R*s~hkM@Mv&*GBsk4Q`J<+ z5oj|=^}|G;r^BY?{K zhnqhf7;sLJ0TIvA#(J;+Jtv$VFRWkyjsgK)F0Qye)cH)nW5XXJTQ(Qakd9q-Hp4#W zMegM*2^_YDOLs++$xgjYc-Op^{o%dNeiHT9lpUn z1M-}2;CGBiG;2;eCN(ZiBAygup0=)!1_QcI!z{tGM^7f4q- z!R3F3^G&MCJRfQv36TuOkmADN}g3^q9+;2Iu%VEeXAq-JZ{Le-}|)c#H`c4 z^6e%sBmrsqvG-Y@JyJ(G_9s6fO{RcM<|DJVbpbTk7*9+3P% zMB-+P#KUR_okK@S|W0^>TRK+FO7p}9P^Nw%q{!mxMQ!E1;(Ppp*Z-5Rj$k* zoxA;1?8gYdQ?RdD7NiLJjM)Htol2nq$Z==*7F0sxJf3*aq(4-A?$IPCUcO+$Ybbkp zdC*YN2=S9#D?w@T)O1ZUkZ)J>{&?{K_I~6XgMyUIW&R7{*I3OyzG}3UOrHFYEOCGO zQ*Nk`WhQpZgUw7go!~|J_s2et6M8E&Y*nT1)v8D>Wb)rGtJS5e0V1{cz!Ml*$ zXyw9%_SW99^KI#gt5C)7_~{{cHe^zuUcW+*k+$OLOg~>Q+8qy#VMDbCMl_p=~#v8ap7UX>l0Bj-K-QAL3 zrvTRPx;&_yfNhF$g30%tX}kxavRf8$9he)>yvA zhQXBTRRvOjhD!7yCJhJ%l6cI`UwK6PU~gi^t!H6X(kom+d6Z97vZ&3bgEt|#-T*qz1{5qHNMVgn471#haLLyUtU;0i(k}{{2r6$Xd|QyNc)|bNgJ+Ce zK=(ZQM*OMaTa~_Mjyud|}Yx<-eR-*K>#S?Oe6iveH~m%Qx+^2jwn@ zyXufX%Z%Y}gv%g~LC}I0z=(;}^_1S0q8RnzGV6=Qo+-sq-hrpd;O?jCgXDLD8& z9nAd#DQN(p;JqLAuS|h>iD%Y``+Dyzmc93&`Q=Jk?QYJO#oWJy8!SIsRXG!~ZlKk? zejjG*enX%%{JgaG>ljAaV9`0vPg3@rshp@*^06AJNv51((W&%|Ui5nnI|OCcUq0*} zR@4E<*v(3Hxo)(nN0Jk@VlWb_gmI{!|L9gXJ9nmD!(_8L>Px&wo?`;ZlXOAb#D3c# z&`5RLrhGYGl6R)7Vt>Ykz96A5Edsk=r6P;bB>xAc58%&t>(5eAwzDvd?@@%LD#eqVRuMASRwj(gJ>*UO9)i@CH2zB} zun*jnnsFgEd2KtTXLH|nIA!;9?3n1!Q$5uAlYLw`N}>0P>78$q9AKJFSJ8Xc*$b!w z$2~h)!a*~?+Q)BRQoWdiX4>qck2!%17PuMnDge+0@>$$RYP6->Je!@r@jg_6J=(#y zkibXV%O+9v&@FPeHTjC5u4LHWt0(!w%kAf%rZTLF371LlWboExU*FI%R^AyN1IVtT z*tOswplto+OLUFwy2m@l@k??VynH-<^yq^I`RnZLPXw7?fHs5_Vaac&g1ycr&&ZUz z-Tm%FrX<+Ulj9VG3v_Ml$*x-FP9`kXRS5(_tD%v)FV@FD<8!hF+xc>sl%7|LRZsi# z9?~>ZV8f>+EI zOC-bFr*}(Ub?uhvMb8I4YPPu{&-vJ3-uwyGmg$%`jf|VsTwT$cbReJc*iM3`VAm>jAU>4Csm{`zZQ{ z;GkZqcN|Gi<-V9_87W$Pmfdgp8#9T%@``(fHZlzv4WJWQnf2D+RR@55 ziBXod{*EQ^aOvD>p$*c}WY?1VK#eP=7_{=MAvqQy<;J^DHF{F)bZw%_2Ss!~$7S?n z{Gijk4qH+WnNM4*e&sNrliZ6ah+GBw3P$zap=}*9HznATX9nMTb^YdxlWi0ipU8lB7CJ-#A<^mRZlbWrh6|u?rNl)Zb&nIM>g&>HFHA6 zMGy~s(HL_j$C@CPvX?d@g6IcDMe{7V6kD5qpAI(h&8oK(-`5!l`0d_Fc(7lG&)fy% z&I%eEh)tprEVx3#T|}0;$+H(Q*o$*do5}Tr55*G6S{qT!dEicE zb{?m+4tvX10NV_jUB$u-akN?ICE7+0vO>&V1Wd;$i(Vw&R8n{>o>_W%aTS=Skn{oY zv*6)5u|AKK_W{#ZC7a zDzoYuE;A$$7{6K#qBYh&mr315(hRm3|0A1hF z7o*NENTg$Bdph)(j+?~e9ij5A(`eAEjd&lu<+ zjqVGZoH9qrwnQfyjkb|!=D7N@-tzis6Y2_v%r}5R<>lo5H)&p^#q<5Q0qH-k@ZiG8MBjn$vbMD*frL?F!{El)Qz?04O=@Fzdzuph(X@C6|f7$G8 zv`l7|d60fuPDNd{gKda&dzwV{qcwJF(e={sLiO<%ONFp7k8ZJDw^cvbd$0D(Rda{x zTt`6?+r7B#6s)-5HJA&Iu&Y6HqSWG2seJlKc^E`DjV9QN{8R@&7cei?GbMxTqq`C* zRMmqqFFw!&hseV+3;BuhxgcqZSn}S{2q6&`Pny@`4}&iUVKG#W?~vUHo6pNvG|N-0 zIYkvn(~zj*$6LKuc*f*TuiWN?^UGbAM2DlHCaE!W>1S0+*Ie$RbB}v94A|-VEQ&`T z;aXY}2UzfpG(YB-1lS31r+iABWHg$FtagYH-S?Y{I=)5rEV@PmNh9ppsWntyNOx^s zpkS%cQ-RBYTb&)<^bOK&tGV_QXS3RIDIcvMveV$a;enBfqf$8{t~~h=9=|+^sKeqa zX9uRSJ*44`q?%P&X7H$J<2y4B8nGg$=+e$XGg@m~RW~^BJQW}#EwqeQoe}R`W{9{W zQ-xoDKAv8iNrkx0D?qVTg|e|8r}7ngTYrz9YUxx|Qrp{A@6Gn=!s5Q(qQV2V&bizk zjJZc%sy$7G`9hMJZ9e>u_I(oSw}P*3zDL2;HA7ToEmlat8=WBi)0P8sO;WVc`vI>e zPZmEt$%|fn_2C?J6S<=uNx{ATcnE1>Ky%?G#@03W>`m=q&WEY)O>j&y*W==*MyzcT zr)=vdOe}w?6FmQW)rTX-2=q~7%70{E?gV;`20bcvN89Q%8rRnCfi-+a53aj3^rY4^ zXHjynbrOHrAXPkB5Tf>TAN(n+c0CZAgj+I>ACS=Vr_lQMAK55cLzuma5hm>(-zVmY zd@@KEuc|d}-}j2>a_K4L9qc%{9??4$&J6BIk@#W8&i-o1^eZ;4%~Ae4*X7%8<{k&>pCaVKiS_0`=a!WTXL&Dc&}exPIvm` zcg>5Qp!E0fGZa5<)@`>4I|*ha%Yc6`L|BipGzYGbKgx`Qi)ZX^TwXRJt+e%IpyyS% zD~~j+g?t-mz-F>O(Y0~8EV>06q1^N|2oxzs&k~}I4GqW}ENGQClAv56!76CNQ_tOL z2Bf;Z7~4_no*yGix1tx5RvoMBC?a+3t0x1k%bK6>`|Ue)ZC@AFEpTbCzwq{aSxRy! z+=%pSNb_^_AaE}1jqLpN6FyOa#6Z)F_E3ma(*EWp`SKjb(9J*OOnX0 z7ktA%0zADod{p+WoDaFnxT~f003o^tjV*>o%CtP+rBcy@ z2%pSw@iAg>u==thE>?TDGBma>`m(9~FZPCp5vylnYSyms&$^x3Jf+yZ`f9^9##|rY z19P~f9@yRl)nReDODvVsGKrge8WKKes0KGZ)VgWVb&xEzkW%BkKcY`}{`(kS%hAFK z_?DHrXwi*dT)oRejC>w=_VFk4y|eJw^PnED!IG0Zn=3|dmuB$LYm+y0n3pK&d%(SC6x2c)iE%raar&MF@Ql4?2t zsgAr3Vq01tbX3{Xys4X-DK4OYxh?3QvT+x%@xDbFx&{9y+cxp8(30h!#P}*^NzL?b za^I<9mr2px35|{+(e=${-mH$=@%J0t(Qv2+s6^?@mFAiL%9X;6$j+}VWkbRH#Wq@| zZV5mCEqDqQyD)%FlhDoK9@&gYrq{{DPL0e*iEM4g^EuJ+og13EyhO_e{tu6AdrBOcxr`0a%Na3U{Wp1;9H)LgRpjfv-UpXY;9$@%g-pBJ@8q;jkZ#IHTBr`Kq%8&wOjVsRti-$~k)-(BKPX72y+^s?GlyD@{G}!;b57}l>>WaGZCp4T}<=nYOrBF`c2aK;-f(HMI>ad+w;)<&B}d8;=L7d>hdEf$z-Yb{^Vdol6SP| zU#YE6QE!eo*|j8q>6>3}VQ~9%Y?>4a1TeAv+~)Tp#K#m?c*hrex46$plA9%Y8*3Ax zc=}tawO2iSo5{yDH26c7Mhr6ePnc|AgU0fcjTJ1cP9VzmPAuzb^Xugb^rWGaVFo2F zbk))^Q1IhrHdgKB0DReXqv4l)e$!Lew;;^MbT>=27URhkPbc>Qhv>2a8yn3 z!b3i3@%%;Vp<-n#a7No7?MVw)9toLYec6HAbD7RFQZ;ec9K&A{9rO0F@XnHNL!@rk zw)ljVt(j(I#&x`*lk)AnTyKoNCN>N3`S8(_;AnYoQ;N0gdV5BIK^w8Ptt>azyRVFK1>SE8{t>7IBq(v7`5F+onq0AmIHK_^eSn&jFC=lMJ}L{#wx0O0@m~UVrDg-+Dv@NasQ0iSli<135Q4&DYO3B`#l-9X4}w1c zj5YuQ_o1EGO+*gSgV|b3!Pa-c_T+Lve0vfsJ5)z$(*IB`I9JAsZg!9o}o_2_sf&&K-K=!Rf9m7w~J#91GG>h$& z{7P<51~6L&hN?l+GYH7TJtduCR;&4Ix#>^BPd+Ns<OZ;r7^!pGPv+8BwQA@A3Z*}jEr z?e|9vDB)Llkw3MN(zw9LFIPd&l1paYJgj99ehPKWA%WlX6jwq|FekGPlmz+gpc;2$ z;is`7=Jc`16i=u>T0(qB+l#A4E*hAS7nyIbzF3%*TC>c8X7L}&d^{m)^KF@UVO|%KSQaE}E ztrjVu%G;mK-25>I!8FbOAKB?hwmZ^Bs|cdo=N}AP1I?vi_(zy@JY)X01di4|EUp&U z=oOKQ$e5=BY*Oz*tE-alAkfzY2c2o2{zy43$*lD#Cns1(X|+rA(c=7aby&Ye$!ZWu zipNOUoJ*-%&tX%SsEy^F0|r@@<5G-RK85Bc4B^Jg3&~>UzGr`Q zX_MkYL}v~VPd}u*RS5XTSN3DAKK3nR0Z?{6M zcR^I7)TB4)bJo4JW47eqmk0Iy6vjrTE&zpgpZ>6r(*-tDC6Ow*Nov_=q2a{6;#@N~ zh=cVggBbS}vr+B2xUQDyi)=i5w3yoS+~duztaO@3$W*Gtz*AM-=zz^XdsR&I^Toju zio%8Sn(4!L_3X62|IS%jQk_t8Or{JZ*6#5=e)Pj>9sWg!m%1%`V~%wLmlg$L+*fxn zXs&Sp?S!b27n81#jJF78>V;ijzP`G4Ee9B(V%L}$y~{bj6J#C4mBmY*q|`$?`c76u z6bCmUQI2U%@DN6J#+av(sLh$%ZDPqc{aqDmA(0nrxuTPONoz}GMYt83zI_I{l>PUoZ%FkhPD$_xb%w6vt8J5Zk z2Xlqd^3lRczS2-55ab&=^@>vdUXsIuHFCT3FocAvPIM{_&<^{my3 zl$LV}O2yzso|>djU)`ksV+kLzdIL*3M^K9a=<429n5^OGXg5eaYWTQfrp+;(l>JGs9b-)7IKp4JL+F z{H3G_9wo0FXe*)T={JL*?h?J_DZdzbK9K3+-#$|9nEUNfj~R& z_@V)dCc9A|t{RnP=L-+uYojlp=&W%O+sqAGg|MLac@n-ojf;Z)PA{zgg~$r2b&!*@ zi=_wH+`FV{_d~trt zrO;vZAnC>o*@X@_B&W2$^KBW~6#w$@?sO-m+wW#^9d>?kKs2m_*H4kzTD;vPgF8c3 zMM#w*AOYfK;8URgEwW31>WDB+ak|sb0;9UL@qI{*oha?)?%wRFKPm?}N@jC%d`ST<-C+& zskB@Z$>6S>Q}6K0i!H_DSzGeM=3iD8J=wuL@9N)2UfX*G{^A*9G)Tz1T0*^;%F$0g zoiQ;z3X;xoy!E{fdw@2!j0Pn0AC>}SWnUiD^KiAYRDHs8sS1L!RWj(;3&p zCEnM_p_h5nG9^^zmC9U8Of5l$WbKw93=)S>)fe@$;Py#|Q|+v*GA8bsJ24BIfc0dx zv;;4rh(U*Ou6!Q_1L{c(bc2P@_W-p0jW2* zMclXK$y;dz`aPj3?xbKu>X@Gnvz4-<>i=X_lq9Lvxx}-m+cJO=ldUVW91mF_OUw(v zitf(9xPmZn&^i1)Dn8v!DkpXS3vNInk==27PG5EOB1z~y{&WUV>jg;u26}5j`)^Um zbicL*pQK5VZg@*<@u*BmJngTqV7FN^elCnwAu;S^5p3GsJtZ7~B@jLM!cFdQ$Dhr` zLEv0rEmEet901cDj(ZXv-aa?_8FuV<-6>VUnvd>gZ{LNlwmfcR*lFrYoi=VsUbe(4 z##VPxPg*Aj*;4n{e+F1h9qre|GTORK`Qt`wrJ5S4M1dByUu*5EoR$N2;4ydnT5G&& z|D+gkGtLaxz(}v3t|yJ7Ois}buk5rb!p6%{%<2}XF(txl&k@{);$@#FSLn|8mNTNX z<;LA6%m(XyrxLsc9%^hVSq*v}_ISmG{pxH$HE`^KVcszC0(j;D;K`;cRwRY0R>|Bp z9RFaDKyMr4)|Ec|M9WIo&F)WR(3}g??eA8mJg;+zN9dE2d0%G*HzvnB(}d=o&B(z7 zwfy0oZr9vQ9M-SyY+i+|w@>c8Ju9h7nqwXDW5`{eu zq`KQVp4BN~zX04ItT!+~SYU;YeT?nt-gnx*iGZEp7s1Ap>I{YO^j^AfJcnK``g zE{C)()^Pc{(JLj6qNxe8`3&8q)sGyUZV{%>njbjS1`McV09z%NJE5zTdXHxV#F(KdRUMkL+EI z)$kx0FVOn?xn=D3r3`T*0l&({W@8m^!8ori1&x{#<|TW(xn^EEhQ-( z=mP@M<38Ibt8_1M3|#+%j>)G6lJICx2o3|X8lI%}#&X!DkQ&@+7D3bwUaCd1CFvZ0 zcgPF7nzB+?GTs9jxG)ji=42#xzM0DTikeDNcA1jk!Zp5Jt89A^C}C_pcV@!=qn?m7n$;_t zm{Py1sp_oInt2sfk_SnOe_1fk$gd6!r(!=FENU#hP9YYZv_2iB_3KiB^o$8U*zNdK z9MDq1`)SMMvjU3s%@s)iSHYgIWfBWubmPYbm1&zHi;yXmUnwg*Iik?;cwru7*oMR^ zY8GQ1A(2u8zv$qUWL z-w4qXE@e=HMHSAD8i^UbyXkmOQIEY~=7A+WL){VAn6J2J5!}Mwvet|}<%R#B^Rhu@ z;$Sk9L|nY4xoBI8dwOXv!7X}TAISCZKupXJqpD|Dl=Wgcp|x~5&w~8Qu4O@pmxqTYqkF6ODM_|L^pd( z`YuxZ5w;^y_CKW#(mtRpBuUxP7F-HiJZh=43W!#uwyFQF4A1mE92Tu1l2ScGZoOFF zt6dik*=SDN4@il|WR6J}yIk(+8OJ{l9ot8o2O(SK{4x}n%Uw3~`*-hVu(aM~9Q?6Y zd+>4Y7JmE>G&AJl+^ZNG&hd!lKe7=vfhV>12GE8kQyRxDx6G2o*q6I>2DsW$K+&u7 zb1x-1o;t=Rt}WHs2oIiy#d|n53$;9cu0QL?i>utOpxo~wA2Ext!kav zZS!|m@nORoj{+ch^CFTa=>3KpZS`0N)cJyf;|E6k>S5-DRnk}I{)54Qv~__pdeqjo z8%YcQ=MNcj-NoPTk0Ju2rWWL$vwgq&i(^*s{Qi{6C`zAqCDt)yw6?9otAP5Wr4THt zr1Oy{%4@23@h&myxQFv6U=%3~LaP63SpTk?socrpy}tduhRpuHRtYaP zQ4xOj+S`|dd6DjXjd|uD9$W?# z2b333qlykHe0!9-OgZj<)Gx=_G-Jr`o*Hb6i=A!y=X8=^N68nFKCY;Y4-u=;biD@; zC}#mqdFFV~H{IbZRfY<ucXcXC78*Qyf4^}j&&p2LP5=Z=-U{L$Eh9^b zb%C5W9NJ~>_(m_G)MEZ}a2uhir$Q7NPG`uF2}`VAnn(A`LX5?qYqv(b&?oL%Kq;omGoe)UZz2#-Lk$OKO5v8h9qZHH@`iPx4q{A3$w-DM?w82nF(y#F+dvl63 zxCeCK$l8aeeCF|KUdeI0y6}3UUevI0?sxUp?da~Av+iNLnF>a&?y+eX_0Lq8bz_wM zuI`;Dr!V&}J)s#pnKZ>U&)*WObY}WRDJIWnzf}om#P#|dI}yr1`gmJR`XyU1w(r}2 zu)i7zo2A|0+fByJ0)-oAO!aGTcWXo(rTa}w6}Wc$yeqgw98}eXeHL~pFf)vbB5n)u z1$4C!^_^dA*MH9A1N6Zj_?XunJ+Uv=O0$nZ>n(Cgq`2o=M`(o_F>1sfEiFYzZM9+tA!=_rh@u2BN|0KO z#6Q%CP2ap<^7(h<$atRnzOM5mqC!sGxMoA1pPf7J%7OLh9q@YyMn6kA?7#qVBb;yL?e3UMdM3KZCjvH@~vvL(Niql&O-<$b& zE#TT3=t@n7TrR0s>Ch#xKv>|ZNA+iSuCXuTKyhD;~3>I9F~-bfZN7PkU2FhoTgBTk~rI|Gi|6FU*&rMKL(!d4y8PtHYIHdRaA z_hvO)9V;vk7y00RZL>fDEY!}SQ_Q=&EjmWv)bri4!-upIVP{610)dD?tZs}fTa$i* znbCfi3Ia!nrJY)A!#B5a)+eB&?Ew#xAzYu!`Q}3DoTc@Xa6GQHR@ua)A5*EE$q+c4~l%= z+!r)lT;ctdn`V1FTNGD=DLJ<^E@LsPTBv>(o9g7hzPoDHR3=f-*%lCESjKVNMULR7 zgvF95%C4Yu4Kt!v_HN|>bQ3Ov9qu9_W`)jOJNu?Xrxi?)UI+z0are{+>$lK~zc2Y# zzNGyIaSjXYKo*daBds0!uRDT}_0X;DB{I zh3YNiG!vKVS*pbGpczY}Y|twqhuG)(_rV zRSqxopmbIXqoooPpSI0!D!}W@N;3KA99@I{Kv9?3I>jhsku6uhhgj6@XgHf7R;&#U zx(KN%Ufh}4_ujpHq~HkW>uH}hS{QttuQkxKyK|v9UA-I$*iC%)9H#0@EwEp;tWX?< zea}pT7Qdg7BF1U-wwZWNw*!7$^L^(m2_7q3;fS?JU7VW_{`z*1r?nEOj<7d(Mc!PL zk^ADoLx&wSHsy5MyiO!n!X|nOE~hj+>GK6UtVr(vg;_jlfogxp&u^Tt6Q&H$R35@B zjb@L>)%1SE>YiJe>FI>UZ+8FC2k2G3PHIUgvG>!0gnC5(h!c4z@$*=Mf&P=o0SAi(Ed_MiVT4 ztfz&)6RI0pVYBQ*A54OjO|2rZ?>6Mo)Lr`VW+A3})(9>6gwf6AB8Z!@u97I@Mm|osB=-hxPd>D)x|3O;B-UTpnfJtTYea*sJ(Mn zm3E!5cuIOCe5OlLuJ|Tw^I+S#=tMa^$E12Hamu3lZpOe`OrQnh1_Y$kkgI>Nn0`2J zVs6quB9`M91H8ew)X-8XnEy!j_N&2jb-^F=BodRE+)j!=QGX?%hyVDd>tl*t#nq+OFfvT?%E;RFHY+S!h-usT3 zwZH0iJ;cJ>FxFj>K&%w|G~lN6v;imT)yU2u+<1TF3)lecAPLR8`TF-By$r7Fo0<0E zGyvq_$KuSc;()i`DDBPDryWVl@3xMOB(**aqKzY z#pr;A*BIOD+JDy%PpvC@U7WP}iDiQ$vPYjK+}~iuZWP)31-0qh$n9>IWCofMW>YNP zr{3}F2;9<6sP7FMH}dUFYH?GJ^fBnj?>;4&X!K<_7mmh7?cZ*|Q-ZnY2PKSEHtc)a zOp3Dk_>=Feq}-X+EaL`F!_+*jCtG_f(>&gCO?HPIvrqIll8tDAShr?L*%xYZtu^G8 zro5>|?r3T;4-unw`KoJvypWvR#%Hd!LXC@#*4UQZciIMl8G?c$u6ihsBbr2P)xQ*KZ9D6Zxc<El$v-?$eB-tWTv_O zUfI8zccn-zXvm(~B|3k%=Zes4^JaH-ic==LyqK>NZ7n;7r!}`uj+gKKZr^I*U1XQ{ z7N^JkdF_-XjvfO^)sxMD+6>j1f}v#vDz%qQrw8o(zC^L-`Yo7`Ejd|OPXLp^I<8+O z8l(1Ncgw#bz!wH;@vn=}3Uqhp*?vmroeM+wSb~y~Ll_KTNQ&w!-;KXTnQ{Al^@&Zy zSZwe8qGUz1n9Dln+U~9@RexA19V{3*90SX)Y$OmWrAwbjnh^`Hp&1JpvvkkZy90ey zHr$k+Rfs|(&)cUKcPt}YnzFmFuio0^eCzmH!Fyu>@AfK=?eYK9>mtq;G1t8YTM@y; zP?Yf%<;z76Y}gE302>l8jE!NLI?RlpqqO7C=6~5!lu%aj2EKETWI9SYvSVyaM=MIIpHnKih*4|$OLYuYM|R7&6f8olt~$KEkslSOL5 zuomvTTF6+&2WHx(-UF}f9t5Eu7V5Xt%l_#(>Y)PBc#|Y_zONr|d5oPmG~81d*~XcA z0LC+(djVfH&uf*+*>%`3lXpSH`q5#k%Mb^xi1=B`%U6rKHwV|2LJ&2Yc3_}2F~y6W3z;n|;pDj|p)KS%-% zS+NCpI9uIwiK}xgk0Tsad^?yfikYYQ{0+<307QQZ6d^rz+^pUhnG*O0fwGArq6NI^(Qh$V$!( zF9h)0^UL3i0yD$<7!nM#jHN%=h8DQfM#R*MJFY~6`WGr%Wr1eeQC(hfh;foZKfkL> zcKPlOKB>ns1`%_}uN<=rdGd|fyL=i{bm81vuH46Nmey$=8tG6#C?Eh4toxJhX4&&8 zTgwC*5Va%ygyj7en?_eIaf_o19Tj%)l{{N70ufR)RJKYH0B2(bRZH9onr-|}9{6W=Pw zxJh{=8K+d}F(6EuzT*1;HZ374zV~s{0D1nLMePan2F$Q(@p__~-*%Pa{wiA#6uZN6_kHm@F!br@tQngrUmwK9H~BC7ZgW}R=Fh7ffSGb9KD!sa)G zm)~8wO{pD(NnXK+IE7*Arxgs43Z9=)d@L6ZKGDIOF(&d3AYn9w>+`}zevDERQ2BL^ zwb{m1P~TVY5F}cO@Y&{AH1o%^D7AAtthu$Q*d*ui>yyLToZ2Rm9}YO+SlHEq>x&A` z(Z8E$;nv||XQqlf^~?o`F9L0*QRYXMU_j5a!WYT>W>d~ue8Fu1&gW$@)8E5@LK(iPxXZa&0>mt2C?x{&(9ioOg5rg z1Z~%Ywo{_=p?W_$#+pkUO`jPz+oCPZrCfY}Fxc}%9F7|by)L94-n);NYRq6}Zj+^t z0;nr_AIl11?fU|J3U~Jjj>~_Y;E9>;>(&P9>ma2?WB}+ZXzmeYLB!jeKD`)zY2*em!!qktw;)x^IE| z`{~jOxtt4rni!v!TmI{{xzzp0Cdi!%KiVbN`HfCLXHxMs*TGq&o&;Lu3>Urx93PI0 zWug{SE_o<&Z?!r(3`UthOQP!3FU_yAt&tHv#eD53dbjpJDmvHv>lF2`>Sb20;xq-& z^ZQY9377+{+wJ#v#G)u4{?uy#uTtGU0wM-gt%U2!gJE*}+tuvjHm^S0Ftj*YQq>f7 z?YImfR&?8yIK{EJM{e{XV{OIfkP0RVw#YHahsG@K)4oC)HpF)2XftT4dsBbAAnbUf z$&YQ1T&&HDu0NVl)muIZnStGZfS*D)2fi68mche;R5T%dJEG8!?s4ui0$eFo-Xi&< zO|xx?H4qYqrG+tvv!UZ#cNceTv7wk~&(jUYzjAvsi!Wrdq&v7^ho!@vwN?x*6VE>V zP^Qn#nmgUN_%CFpTQI=$n;4QBhc8$8G(Zg2zf7g-ICItXo(NCdG24w+0ve}d?tI%U2!nVWx?jUk2OhH z#RA{k5SaZ8FS%1ZhPlGgx#L{e9d6|*VeSH0tMcA+?nP)U!gcJ@gkZfvH^_-EdCAG& z>s*Z|o1m+$l?(brvV9XmyzK@mxSgtJ(lEN(PR8k6qh`I|yJzi2bvH{PR68&cByZPw`^uX$$X;Q8XAN+=Jxi@0CcwnqgE9jB+#p#7 z5n06`qb-StJJ1=K<6W#X!*gb2|0?xaUQvDWw!zhJ_r`sC8O_wg#amUG0@x>If^vSz zb$HdY)zRKYhzDaWIlO-Egwy_9WRxrw&oZmg|b@6aIrOjja^jzu!!mO!_$36XFnIiuu4r7=_%#?k(i#Z3oSbur# z!D4wWf&CU8dh21_bMDAfYLo6cC$L&?0sHzBqbmqqhs!(mCwx2cDko>YPg_V#I+JBO zDy4t^hNC`a@pv;*sXuLs)#l)b_E{YxN?-_=qC!u$XWOfzO=In^#sOR2H3HP~#;V;^ zES%x2T^aMsn4E%O;;kXhO|p&3rAO4uH7K-w!16{_A59$r;{09Is3A%lH%a z*K6*JTc^bGfWbZ-b544p2kf^U@=3Snwy7%5T%F4Nz$f~(K$Sf_fNzSfjeAELk+x}E zX-oTaH6ReJ+DyN|#$iL51&wUhC}&bZ=89 z>LF)@J7(KNpP9}N)GN4{os2=W!sDioo-kA{1FD$Xk>r(wJ*gUTs1P>1hlUY1CJ>DG zr6TY&5@{`RQ#2Ud`h zaGz^qft!@ELQ04v)U#_ZA_9p5dj9Bz==K<<7WD|8+{JYdY$D zqgy#w3MTQ2D&9?Y zTc-DgQ8>bx@TP3(Ne@i2uKQucb&{BfpOcx)1n$Gs-hJ*IiiYJ!DZ{apPBn(~?MOFy3e`SliM z`*5m313{8agA;u_p`If|I7TtU!IQtzmE{s4oT2e0N3BdXAh7tB@9+TzflcU7CD#(f zRupSB+Hk6y<*GnMOtqGu$Jm-x$Zl;I2&mkZdv&EL4XAso!`E{7!j_OK%emeNG02V0)-Sska6qy32R{vU{B!WFgcUl73)@Tp^GU9MJ=% zhV_iD0SvCX-$3uM9f~!B*HNy@2_}zL72TM|7XQ)6?1C6Kxb(C$Fb_tlR2inBGcyT( z|GWQaAXP$0g%zfPxqmbPTMPKQL+lg@Ad~#uyo3X1M7{Wp8;NCVvlw>ti7M9b;k8oG z#}bQEI#D)}PC-{o7+{vrHQkp1zi<%9afQX;s@_l{&X71h_> z-YxQ6hq-tIQdD5RqK3$}T6eUF8a3?n=Z_t6d(2rh-&=C8{2u9^hsiz71xcPl3X^T3 zNSP(~t2mQjX({%dT&d0D6vJ?+viS!lH05(9mY*=Qj^7>xtTsk3Y;YIAlbOM)!}i1pL~UcT0CR^` z{WclN$53xA1`;tgx1gGSU^`YQH9Lb90|-RG&clO>U~7#HkJa%x^8MKoo%h&0$!z)D zi1^{ZOyQM{91ViqJEwf{uZ{p?@CeM|WP>}$VtM{u!vg2=#k_!IvY>OhGxGy`{$X=J zsqX%PaBlm$4jc==ee0MSwLPDibhXn^#Ob6z#Npe68agt+ZrHOeB-Vn1e)||h zqFUI7ibo4FsZc5jKLtW%M7OAwt=QL+HE%zO*zyiy1}n^$2l(=3L|DzLVDl#z^FPmr z#>ykYR@Its^dl(hRw>MWl`Y5TE$^?Y>=jpQWxtS(u2yxbgbOZ7)y@jGbO#ftedb^I z_ik|_mNUkoGi^nFgx-T_%PQz%V>v1Oa& z;w7%`wl(%CpFTNs(&v~$uI2}gHmtFY{zfnaUdtn++u6r!xkfIDgQcD>L34Z~#++)z zktD57ej11VFhH`Z(DA1AN+fXS#YX9VC8B+Y_;Z);OSxC{0fRLtcQ&bUhf0l;uybe2 zizJ{4wJ~SX^J@$lyd=@JId(G;g2URpsG8Q_?RqZa?!>}7E_(!P5?$#t+J9O1(<+&U9@TzE;umsoVq zU%=g`ZH|m<%ik5(Ihr;=@QSk5zKDA~(Ct3c@PE*A@ZPwm%_AF}p(Q(Lk9suZT1%*K zYFGw2hH`&LGm2IVoq1od-2=acI1)uVso*S@;KkXu-eUQbnYLvqQkuG z>s8eAYUZ=$Jfp)e0jz(`g0M!u*=xZcL=R5EK9yhemxDkV$+a77Dx~9^p<^u%V?hOZ zX^6Mea)71pRCR^_yJ~s?4{IAi?Ro}3`$X&L1 z3-=K&!;%B!T3+Ct%2=?bS=Q1jH{OJx*(4HhN50!Ly({4xTg_Okv<&Okw?!w#KBN0= zXNTh!EL>X2-rlw?do!25I-p`v7x1DJ@mTaz-EUGuCFzHjUrsz8|B7EyUE&#@f}cfo z5PEZmyrjLa4zE6A>lPC5P;dj|9C&|6H6iIMhg`I(dqIR0W3DeLuiKlRW@xsK7aQ!J z_*X}H4zj;w&SLBx%ecip7?L;k2HLtzB_o(R?4E4WfiAI+wjGlZ!N1$&bg;AQC5+y* zJzXw^jFSh-v#>$0%xXtD66}a^4r~_!ixaRDzVy|pgE~#NB;(ybq$-~|2Xy8 zNPX0^qj)=1pmCMa0x$g7=8r7%=X(f#kr5%rK?16nezqOuUrs*@NfmIiAEGH)7(gZ_ zvWihN6zj&-@jnW19ouMMiS4E~J}t$lgK%T1h6d+P)H$AVSAi{z zl;J-=F3%QP>*e421l*LgJA>!`bRU{p9_VP35d&WlQ4kSHW8@v!XTTdtWrjofrc&;v z$cU!{o5fWx+{ShDwAe(OQx=2COFeR8?jW(jG~bLf5AK5UE`MPwYNjv9DEmw1GbwY4 zd8Yt`h6c`IMV5|DXQ9Nd>fCbe}J24KXMcPAdn^Ij}s5OP>x;hH2qmB)`|!JfvKy7 z$(4THpdRbGf<0cjD%i`*2k z&X)NCS+Uk$>s+joO7eS|NHLcj9)r-4vCy#&JJznm{$Ib5)X%zFcqe0ya}~&UBdr6d zomKXoNSXfneUQ7nf(;PS&0q22*gv^`@z`QApL!s~855|lt4Zk6V;~lvBe&*{KPk%j z@{i`vy=vZa@qA+jH9pIOS$L@^oAlpjPo?3U))BUmNKNyClQh2R9DQNA!G!fKje@Q6 z@RobXw8R^&)=T?4qyK0M0}6_-UWhFRR!X(vGc{=y!!PXq9e(3~ z_PLnMHuSYpKXpD59;%Ju31~?1MCjDFnrB9{Kgsw<^Ix67$vK6imxscX@chCFZXyj@ z>N`1P0B@q6a~FbiwRo7PEu0HGW+jP(0|LS5Py7JX zUZDdPMqx68@(F#>#;qq|;Q1*3aQOXFT`>aFMt2AXuWcBfXz0(>nx4`=b`Q5rBDGzu zOBDViJS04L4S((_&{s)@F|kSc!zKHAzz7Q0<7BRU`*Y5+u6JFR`wFkCm-97;h_&Wt zk_U6D50AU3Q)m4xNdzY&v^J$J=sbUVqy$S%d`qh&{as_l3NI0g_v1Xy)JV!%G< zz2WPMA2Y7>=hkf3sEiqwHxdC!DgA@2-UmIegELZ(j{GAWNgteMq!;QLl{6&nL+-ig zf)&m&aIEHY#i96>2lunZBM48mNj{lAeL`)5O^N{jk0X9w5WPzR6ZhkNhTg9ko{iF$ zWQaH3?Y3Z4?E1cWMpFJz>)OKoI*fhu+{BLRyG6A*Unr`Dsp;LNj$T=j5LWb?T^a_o z++fu_xoFwC35F`}iEa2KJaX!29=@3;D-yaV?Ns--?{1?2i@-71m{D2B3?!)Ep`xCu z*3-RzdBn5FO5AOfRTN`zEq)m|>t+)T9#PIs&m3+1SkFjC#(rBsQ~xWxhF1wk9y}c4 zJ%CA+aQ1Oz^QDIP^UuyxeeRnzNB$r5GF`0yQ`#M@kMhr)(PVw+cWrNPJcx)khks84 zFQWo&WyMaA&D{jVy@QFVgtKN2WNvCyB&E}?;IYh7^OJ1g6{Vom@(X4P-y>XK?&-;S zv%Wd*icD$s?|LJRDLoDOT!EW#be80HIrL-7%jKE+ z`?jf}+rGIzi(KnE?=_+XsnI9eXUh+vF|>d83=^? zNHZA~o*^|qOGtDn|9U;@@9NV~0+v6m~Uh3+z$)>ov>lyml zV7pvRAH4`hu6W}8{@PajoyiVD8zG9p_jANviBIe7tljDax!CP)Aro~0`Y>cVXjz2v z=!T^mKdm{h`}CLaPTKXAR;qjA>)TpRQlfNRuknu^#%=O0!ORO+!Fx>~@9iPgQ92)3 zX|ed}^5KMy)zfwi`$WNqhQ3>Kzlmhhmy*7ra#Q($=;mfWc?bak#lVS%Pn93 zV0_VyQf8=W;j`L=ehUrhditafd?8nE;dpTGN*(j#E~UZs4a1cr)njxV2t0Zc9YL&S z%05Ca9nVBqqSWX0&@%BGOi*x;qc5g1R;M9Z6mLn+u~L4{+W0p;Yc{K;@LtuCuMckU&u;J{ht|)6VboR*JCPC8s@GMqIu`?^}eF)drd*X zi!TS3jC7r^yaHMXd?NiYIaf%ejXmxxGhLp9a z8c#N2ePdMHvGMvjX6(7Xkg&5SLt^8G0s8-V{= zISv9BbBa<6(wDuzb+1UIHt+IkdsU_?FttUyHQ4G-QC=da{Ye4%5u47Vfy4-E7Qy70 zN$Dwu7}-FmhJARd*u7Fi(Gnbb#Jrt48@FvQdLjO+Zjdf&pKZrqyMVRsHdx$Ufmlr2 zpc7)##bG#`t)a5PcdgMUbabX6XCP0d(^}fKH6(Fw)r!tcaT~;@GXOkIXqm<0G(~>6 zvU9B3qpWBXFe%b?xMLnw;s=rI`xh}Ov>&Xsekj$W5W%;8+~0`-@+%lZB?9efxvbiF50PDB3Raupx49F%(ZiNkefqJA_P+izT@3Vxv6I&dlOd@ z^;@9(9FdsR?5M+jSql33C_kat9hdO*qrSA_Co#L?$pTBan=Os1f}#ghODl7<#B$0| z${#z=zM@2vKz@J%NUUVN@Lr|uNLQ=Wwtew0GZAf^dlGfK*Mtn$DjmDJrqv<$ax=ye zlwz2a7%(;qi`FRmQ)w>m<4HXwKWQIRundiG=8hRSm#OV{H%-DVvy79sVb3k7LpJ7n z*9yB^CS}sb-@VMpEK}`MS8KT}^-;*aGTZvEVQ;Y=`eSAL}Waa1*7`E=vPl-3;E)jp$^wZLuU0xy@SVU96g zV-+qQ5Xod73_r?ipiW1s02ZFDxZiD3{YZEEteGq)$!GzOLTx^BcAnxhkQ8#Sqtfroc5mV5^5b-0EReKu9Nh^k8f$ugVuKNR@h87z-6ZS^iclbJk(VMcm18VHxd&N{ zJSJCf0vNM*&9tiY&m%rj%P7y%DkaU-IYUJQxM!*L2A=@IVQ%&&mGzVC_F3b6HW7(B z)l?GioYVP5Ps?y%{Ev?*%zvC?#5JQH<~RyTOWS{GiB9PAkvvO>uHSuUe&=SyPV`A? zes?RXH}_Dr*+EGr(hQdLtT+4I!qTQ6cdq)Oxx%QJ>4@?ha)SmfNEDJDLgGYpB5jx! z+Vs|D3Cin$5Tk3_Fdj8cEEt+>lLbY z8LRPB)*~d!Sn>;85;#K!ql4~or4xPDQ+>azLeD5>Z$(`%U;d9l3Kkum+CFTi`eZ>N z!ihcz${N&`7Cd@m;NuqBe@~VPg1{y=7)^i%`QA+kXR*0^xlv}F5NAUoCJ-&Cjx3dv zemoUa3}I~%(d#`s_Ik6(P&6m~9nT-QzB|qM?j*oha5~0Bm6HckkAV=les;Qszo60X zGIqwO`9ed6-t}voJ8BsF+sEF>a0PsNHP=x*g354t8pl~cZI@D`NseHH(&!HT+QFn* z;wiX@T%wB)@7yJ5s^A>Cz0Hu4t3CNI`4QkaVLqS%Jm6Of3Fk^6h~K*lC;$qLFuIj<=N*9vIEhMZLlfP!m~i z@t>aL>U~U5AScP1sF`JgNUxQJ0y+lo_FI-jQ65h`2>wAT1=EWXs(Z)syXhHZ5S)X_ zwKH!k+yoW0S7Rx1K6}YC)cbJV3vM_2TQD=&v)A*M6V|+05F@)?f`uS)e}*PY&#SxT z9j{f`+PE~Y{_o};6CUN6G{&#Is`7vKZ3p`apV=?({Moph*)8NfNz7my-rzZVmNes; zrN7m|F}~v$b+ymLNJuthTDJfdka|->stg((GOn1c42tC35Qer6LzDo-v^X<^dwF}) z>ClP*TWyV2zPw{E0G_${1sARUn_1;&(n%|0*mlWhAR`IP0!% z?~*LOFByGh-M)aeq7K1tYEk7Jaj zDBR;n8n3j~@Gf}4LVj^Iu5Ge~l`5ADv0Hf(W`;WlYmdAb-@EAARPxb#F+^VWIfN;;?WK7BI^gz)`55KyJ?NFa4TiL|p3X(*PP8?RM#%ykfaZS+ z;{EZOkNlMDPTd6(#Rp@YjwW8Rmr;vQ*>4$E$;G*75$mnp-)98dif_5Q`!ndL4ste~ zPLG$%j>=}A2CWODhNQY*BB?Wigr}F%hUR8&%g%>+mBmYgdM`_->=h3tnyWOVt&Uju z2o*VcwLau~*9rOLmp5_~&raX*&it{n5C(?(JHr)cIYRPeGlD9}PUl3O^~UtZbAZEy z$CXr%PF=@cDtM8B!K$7)2^H*b*^XgeeFSoe{Er`V1!3@Q+eFb8iHSN|#~rHzRk@PK za!cJkq2m|G!9uPUq<6LAe|fi{rTSu^2gw4C1acj(q@6n?Yu*}6E?ukvP~V2$lglUZ z3Xkm;$9?{5;5U}R88!&{=M*e)(de5kl`P(xd>g-|s20TjLSEkEgT7Th8Ms#iePkh| ztb63qXq4MKB^nJ^(_=j|YWf?ee{eYdN|s5+9cv{!pCnFahFY3ut9@VC0tOzR1)*&n z6p=Y?*>4gI3-jOp7a0ChJbmGT@hx(t(><`j7juCyxR5NlzS7Ca?lii=z(&{?VYvyRgBbsoI{R zm}gf*q#4bj&V;?1WPy8#mTLQ3t&`B`vyl4d_6BVHtITP}GB%Mt7)mYR2}$q0_i9jl z8T|Cb3&aOzC@`8`4@uEBbQ}Gf6%ldPytHx5xWy1kpzd^|=dqWW!&;DBuWbKlg{ptr z->#w4WkvJOh)}3M>c)~rnF?Zem;pNk%5y>`jgLD!&n*!iAtHfTJ>NiQddYF8O6^W!Qv_4p9fg9C-UC1C26|Ci34u0NA zdr~Hqv3$8ID%c{|HMClc3Sjz5Xzx%vkw&ZjM3f zv=EcyV?h^V9Q*wzNaf~kWzj`=EMbbxFEd2_mo-Cx$B1xWTIqm&i^d0>tL`)cG ze+aUtO1%^FcW=^8)F0nZaFPBOvi~yInVrtY(ZW;t-%iY~x zE=?u__ivZU{zNDyinv7pXJsG2=l9U2Il9Rb=}s;PlK37uK`6Vc|B3$95Y^w$hdWLV zX4!()d(B+5?`Q3{t)F=)Qxtsp{x0A0U~^c4m92TiKCi}RK1?SbQGwPzXGm_V!J^97 zAYMzxy4g$ha11^}`yb6HN7k#ky==<0blV>F;ywl=3Uk$(TB`cRe9FMqk-NE=1SCln zBXrJ=s^-pdei1)sVFNecA){zMyyc|zr?Mn^E2~gF-^@qvXWCRsy<0V#fW|A(=?YNI zFuT)RsLbGndzXjnyT~|0H>~nse5dK3q20)zubsHLu0Mokve&w+pZBFel+F3Xe(;6i zY>b@oeJ4{HO9LdSsy4y*QQb$gCd9rfQjEzo71Za{W>YquB$er^&F~u)msz3Ms$18Q zC}zcqQR}8qAO4f0HECy0JsiY3d^h=KqObHwADLLapf7uQ)zJlM zn)bo(5h({mQr`Ssu+tpBjg4?E3K{6wo6=iS`H`HRdM|F|sV~fQkx{faNuGtY*QD%|&5u`!H&P8nmBb>@hcoO8}d9SQ_#XG#xH&uis-?F=P zx`e2pgSh`a0SZ-%Nc`#_xqx7Lv_ClWe?Hl)cc{jKSo`(=(F{k_^T0PvpHIFrZXNWl z2R|-3B-jI${6N_3Rj{1!*RY9)scYFRFy|r^9oDHto+(M|W!gQ=xrb6lFPO<8g7jk` zx!LiLT=0p8x~y@$De-5ntV>&9MsKW{K9048nkrN--tkWH&9FoRl*qOHDPP{yDP(D+ z_~rq$lLnSMFbr=q<5dqaK1?@; z6PZ*;>MUKYiGJ$gW18wk_Dd-dM6(aieukoKftSa=5qV9mG<<^qQrej{UDiM^JOAh` z+wsE9oYvUNr^NjOq@bv1sLzG0@ola~CLLZYuyp1My=BxL{Ce^A?1u2`uB8BPuEw64 zKzq=$5R~y)!u~JG8h->rI7y$Qws<#kpO#;(CAY#BE)KquoKyIF;+4|DxLK4ZT1vu4 z>&E*7#cc#g3E)~cI2)e?C=mt@kn z@j6NR-5r=&O=L$BW%B5c^hY4e!BkF585h=a$QNjkA+cFpbm8t}$$G2z=(PvzRo-?T zo0h7XMQ;$>f>zTVdhpA{=N)^K&khaz*(InfLwhl>6z4%;@z2uljPrPfvA4bYcf`GL zgf>J?6s;i_bIY=x3R{uA1!JidKdKFGp=b<1Rfg?c!xAkosW{nGTkObL~W)kHP` zQz_sscuI;$tV;LuY}~0$e<(~21sBr(EnT#^wpX(tDs-YLD!2QTE}b#;9vWzRvknv)|=bZ!D8^6#R~TJ6X;MmbIGdNL)Ye05+93^ zt!W21Mc!vSp)ES-HYi|u7wv;Btkwc!M(l0>4h*y#%U+%;62)l7mpVV#MnC{BT!4M< zT4Gr#FTb3(yv{V}EU(xuI=R6+^V_S*gsUYa9cYjR?2XY-fpCNxZ$B98)Tt0;Wn`Iq zXay>~uDmQTw>mUCQ7|xBV z8VeS=ayuoT|7?^8Ns+9MR}Lm;=DSeK$H(D(zHAQA5I_6pY?kCu1oIzvEz@j+-kaZ% z`Q1=U`GI=Fx`++lX9kZ5_EldBu`2;wa2dRoHN(bO#bEsD>KXHSwlea0e{2+nBBCr+f)_c?pN`CzPVszLBawCYUXLL8Bm2&m<@aR1BiW`G&+*JOg zpfeTmmr5lOXN7*~@pqZGU?W{O zp0-|D!;Lq?cCPe&elkASKl=WRT zU)RAZVV`YFQ_g67;djK>%t|x_`C_RWh;uO>+Hu~Zt_oZle-dagzB-DL5U(UW~@w5qhtZn{b_vJq0@XR z|MJeuDd^oQE$P|d_OXuWSd~Ntc0K*K~go8rWcUqngZS5j$EAO zLa90yJd5*XE_FC;pew?kg0cr&Ewl$c^gDn(1oiEmQB@rW34x?SDJe^B~7K4QxDo`S%2(9E>#c zgZ-qoXbtHKSxfkAkqI(ffEzOkiIylwpW|x<7xP2wASCbe? zhB@X;zi|Eo-5n--W2K1@U>~wz#zXa7(rU7RA#duXn~r}XuY~`xJsQ-ihs~bgnn7eZ ziw8nOMmt&L^<-kUHO-+QiIT~CJjfM#|1hPK%_Pe;-Fdw~lv%g^!!chn&Q9QLzUqpP83jfA*z~gmwU$K6 zKN7F~qjPHH)3ABV z&(G0;wO0hUo{ZW&=C-G0I%=$-)o0?e8BKe0_ydG~x!~=33^2Tp3QMy)R~>`flo&3v z4R~oKa=bHio#tGdIcBZyA%f`PgVky_yRnjss@lJ(*QY{rXN2(N7kKl~PoC zO=e94mr>PO+S|ya|5Aq>-0V)GW|`}D1o*R8=&$G;UUu;VV7R9nN=-Ih& zf}W+P&#GSc5lW>#OU@;{iMg6g)nJ8)v0AolpSY!w5}19$SU8HyyNp;@B+GH?7Z`2- zi#IEuV8upf=zTjFF^j>OMo@!+-lb&F1Bja$%NcUSyrZU+lK3d~oT3@^G(Wi_)j2z` zn8pyqNlfIRtCDaw@nOJ=g>6dQY*HwGc6DvO-~W~Ks+DW`l%-v;J%HegC%#q9`FKT_WAmIYQ~~9w;FV(lAN| zr3OehqdTM5+jLx528ksamTOzK~o8Q3^~49mn-5K(QaUDj1@IEqH4SF zzjl8G?!wPLWR|+}sL}^9j7HJb@oG}W8n)>FIg*a{>UjLd+;gYsxglXLfiP=!AK`+~ z*z=p44roYt6Gjo8jG0j}^(yH(mT&m&nG?OlFV zuVro{+WHDmTTp3D_+X*;S+2Qcg<8>SrZu^9{P<23a@>Gs8}C zNhB|{nl;h=j2X5ajrGp=jF@FIx%C5IP~Rv7^^@?W2BL~2CUVEWz8;IO$Q6!(xabp? zaqFJ+SXdsH4jh#4=!~b`;F%E7`2p{c{MYT~KO^}q2ZC!_62$k5Yor|v|5D->fX19Y zbiV|5C;klPJB*g7?eT-c8Ye|njpEco( zOSgJABQhD-eZ#S7iQC4{sl&bPZdcx_^whU@L~9D$L_#X>&T&uX8u=`pBS-F5C(EOk z3dO#5Z0L`?_bpbH?q>3Zl}V-Pc+Is9sKW#1y!*YG z_6;ttHS#`(G#}P?_dZQ*(i5vi0bSgKU3z}65pC$d@GB1iBQE+bsbVrO}2Eof74WK{Z$RWN~vFT~Ws(>D;+ zuH>a#6FeF(g5@2}lr~;Yy!&Ijm`iB)TYGzHo0)^qL46J`{jd(IYwK?O%cisyhQd~p zgegz{UH?>RP_^L5zQ!aVGa7n)1=yX|kXDkR--8is^9xa@c;UL&PpJ3{f{^BGuiL7- z1Y1#O3o$jRTF-DP(~*~)obj)Y7aFdcR@#BJTv?CUk&bBFy_tV`)d==1`GlQcXb7%4 zg-NxpqHaFdi6>`iCuFhIuiI!JKx(RqCy&1rmMEU2M5(57z7lI#MSCw1P8I?R(;!6; z+=fO@FYP-dMRNk54-N4SR(qh7M{9YP;`>KPQ9Lua`uAeWg0}&@8Ufx}`7&V`-Pc~{ zb*6#u&;9JO!sur;1O)njmVxt$~H z;4|=I_6XaYDq!wc?lqJj0Z2nk9pG<V5t)wO#kN?pR;xP-Q}1ON^^?jIlZL_sNo#o@V-< zWB@QDWSfqJ+=Xp^}9!BYL@I6Uhn<{G?(x9IeL<3*{h?XglLq1eZ2g8*>CSQI^_JPfxeNZ+#&g%83B|V9;8xUNk%GCJQ=o!j z<}in^iFA=c(~OEuyat>|tUc2^n=WtQ46UKz)Z>BVjelJ*0CbI6duDVY@AJFTUo1-( zAmBNBWdmpWltw)(V>T4wct$XvO^=8{4bv)}viTo@Y&!!zRyvhWzwFj~pI@1m{lu?L zhY4LoE%pQoV#}7+^pQI$QSFd0SGm{Kgy-Q}sTxCGL_615q&{_`l(DJ!vd=A{?4kY> zt>1Q=ACYN_A_hNO#QC_krqc#`68b;95|7u^FVQhQu^No3%$G)9zJE$fK8cn@Hy
    VgSX6(C|`aqvIXNV)MP9xJDefjlSWv{zvthXft^+Qk`E ze}|MyKczXom8`uc3l3>K$e!)L&$)a}Uq3(%fJA;TYW>7K2#%K?#m+b{31~q>WTZpg zOML*tz`S#3%9cu8{2PCpdfAgDjZK3J;pQXyQ5!3&;$HU~l}nF&W@l((6Dh1RkAu8* zE#hM{ixa6721eiXMKz2>BKhG{It0{T$4}96TK# z0=cIbn`}yn1B3_F_VE`8!^WDqF{CF~o!|OJ>&cK{VNYGfaHgh)Gj7*e0WnH>b$IOG(H`*wMvfpi- z(>@c}NE6BWWRACcy)M)v^TbVIQFi7c;jXR>KLJmWnCdHkn-!1_K%TaEPk zM1zB1+Go2TC5a3sD1=#_D{s9XW8u+Rp}%SdS2N(vedm=uRSc)@c$fi zI^{}K_;YPb_H6OHSIB^#>*#DoN3PfGxpN|0<)@0EYdsV+LV_|gDd@1C-kMd`zy4kQ zo$cvpb+L?3(tfT))~3%*z|(;L*>xc@)#q`!x2(s-b;Di9h^F3B`x*zMaPU5rd8vIz ztt2NDree!TGz4yJtIu&B`RB^mJCoIczW@7OZGMzeA<3bO=bDFCXqIRsfCcm3@4}8h zCuJL%~Y1DCMJRy9HvUf%G8o923GIHiIM4PjRQ0kFH5O_K@h z98F!_smoMG@|jr;1U%cOSoj!uDgD@o#!|qFemE7q=iaFaeIcx1V{z~7icRm{PtNC~ zcAVz_y8}{M3S#46$1jGR7^9P>>}-S%Ra^$EPPWPT z-!Gq%`o{l;h)4qEyUCS2dG}&6ove91A+T#wA_tS7$x!ipI-hqwU%{hGH-};ERDMBx z9dNK_&G+@X*$XtuO@H*gS3eM-{Xut0QU7a3X$Nc2_M9D;159An9M>-;DAsZ1sJ@@P zoHbm=96^w_jj3zd>uAmkBvoP59$%id^)`Cq^g%U}V0W28N}NEZ=v`Mm`-Gsaf(Z3ixj$pJjBJu`L?PyxUizr&UHo{A0Zb_MO`))Vz^Szp_^^~B% z<##MDGu&@7s5&e$XKzbJ6di736-=^!4hLH?NGC5JqO7wN8NZ5LM_OWVr_-M}tSoqZ zKsMxKEzl3rN(Fn~OiUo6?OQ@lYDS|=sWgP7%-kkwh1u|6`U->cn9`HuvHx-c6x<%>iW*A z!5jqe={2tIa&*|PDFW^hsiy;V!fq&?V#|$;)1R8{okhP#La*F4$5D3MY!PmvQF@se zv>x3H?J62f1RA5pQ~^ru2vdFRi>ohFa!DcAg-q|P4wxlHk(d*U^- zI)_#LdgSU&8|}F|Rxn(Qv7gK=T728*U6h@MxFBs7mkc~;w3i!&SjNBBY>}{>qwg=ugp^4?|x%o zV4&yvg9}C;l*VR5I9USsyIgj^@=IJuv}qPKFg{cP$pG*>hQLeTOb6;juKMGLq5gPD zV&{M54r-QX;-5*$QK8IV0&5|uGll1VdJFj*&K_25gPNQ36AqI4%5LzZoR{EKRmGZLWVx%voNET zZk!$nd$RB{9{EmrFQisJfhUMw9RI&NUBFzpUoE3be^b#Eje~SniuT7QQU!fjSPRD! zzZlC8`!HeIV9ZR53`L8QHXOW z#Em_hXY%+^`Px0!m?{3}>kWHEk$cS{0oVA{kqN3LLY115y+}Y@#*aKGxu?jK9_;7l zcYO{LpRP1!&8XB&=Ss3$d3xY~0t$Fw;S@)ep5F5olrpk#0L3t3SLr-H>N~nysqpCymUE>vcbxymSgIk=+#)fQ*p%RX(d!uhGrzj%}h-hk* zA_IFO$Y)o-asNtQTADt`!1SK%!^;Nb|E7Og)<8j}tGQJzhq0^9Lq1Ux*MFccgFbxF z3pB2=alOiD&l}pu)%@87m6Ba{*eK8alfRl-XzrR}fg!2IimHA!1mXYYt1*Z6AKRrF z%ea;`!-Q@skx8J8d8~(egXvtsv#|f~4xPT!=DUu1^TX36Ze76T&^RHN=A@n zIk&Zz=)tVw_y9v^foDVEN5R;lK>1UzVNbU^K1-8e4nEbGzmpCVi?%?t$b?DS0Khe6 zDGYV873_-j=De;l7Hylja?R)@c%t0J^bhJhdrVl%e0d`@}W4wPbrBLei)!+5NgLnmDY_ysajw?wy2l z!*5D)Wn{&2V1|Q>;>veXbE`iJ_=#;s9GOY1N(ndJbFODADG_9y#+w$o0);ewf6oF; zicMFZfmaH!#`Y`r?(=g9sb!4MUW7yl%T(F#1|s4QEy6V?@q5EIMngoQ!* zS@#|xd;SHx3$&4qKZ@n19mtdGS2vrFYP=gHC$3!Lh_r6FrK6gP^7bvZoOhfk*f*OT z((qfm8))m>;5ZFx%dlY&_+vvLM@RJSD=a_-(4 zj@|J)wD!n32GRbOx+KXfcSG7td8^`I4gNE7LFF1hQMQTovTXuMG{JV(#I?P^{zvdF z1BcLvWzKXo!Rk4VFdOxEbc!hLjQnz6uoEpYhecWKl%Xj?=SJ8MYqjGxn9W66&v$uxyAcxyBN&oe zMcL8EDG-Q5~QDcgHO4t5Krt^>lo*ds5efJYY5?C)7iOyKOHO%sIjqqu8wL z`e_%6reQb*H5mgT)9?^yWBx9|vspc_DTs^Zs*28oq1}D$dX$?6PlVF|e`E3km9#`3 z)a%hAW`A&d#btLZ8fZcD&AGk&Q{4H zToX6sxdRxDAQ2i>&LfW8VpKCuL#3x9HS%fYJYGJJ>NAhYf=CQa=wvI zFaTpTwVHp2Xws~mUx4WWOysPgJ=;LUzd1z&ZK&90k5W$T`d#HED8=cLe9ZI|bQ94Y zhyFaAhI60!wb!xCokpbF3!y)$+TDG=Vf$I;rtL0+iBN~X^;{~qJ(Z0QS}_V_1S*v4 z9pt=eyC3&OM>MJsUvK&Sk&j|v%2|U^I4@s78U`A9`F(25HxUlt8g$F0KAP3WY;DjV zN;?Q0ZKwPST42$f5|($Elj!(mAATEN%<(33IjZo!n)G;N{9 z4c9PV24M87Gq_|9x>eoc6Oz^*7jp=;yr89~KGOe~bdb-L*%>uh6fk!0*~_nvondS< zLZ-{Op4@RiAB7S^KMfzh8|$J!z)BY)o|E1GFwg#9ST%0skHT@)4RxKxKWYoimk7DWhGm?PvG!CSC71*5*0rKiWlY>8d0y6l}1Tq=_^61_y%crqQ|TyAxrh_$Vtbe~il2 zUL?)e-vP~x!f|<3yf2Dx}TXpXpGbm z|ErW)53drg{f+5OIO&CV#A)qv_V_v4*1@XM-&WGmH#bp|uM3`RaYq(eKYCh4%W2nS z3|5Jm=46Vg?e*P8GmN5y3;rUQ4-_P)IEs*iUScs6Uk{U4Cw~SXvi)-BY~0T%Bl;rS zcu}>q1Oq*&YT^xa=$G7uSLGa-$**mq$}oqG#sx1%pl{Sgn-jARelefKc62yCk2U;_ z+_Uw6_4)MTq^x=ji{G>n>YUye1{Wz7`D8^m*)+`WMVataJg8#$g9WOW`Ge|*#<&!7 zJ6@ft09y_ECfL!LbU+2|#tTD>0KMtO6zU6;#)wzcrR$`$h7cpvwJW2`;@B_Ui~d$y zx+MQE2j!ah<37qFSAu_~{Uc+V4BT*7L};Vpr3*i5K1RP%+zZWSfbRGdudy*<@Wos; z`K8INEDnRxUoXEjS((s94C$pjINYD^t}?=gYf({c4N6Bv1_+k@fqfz8<2!8>I4Ptu zpURLclnHQo4JN5D88WlLUhm4{ zA;#G@Z>cRt#^O)xBuoFx4_KaDC-~kLfz{l{Mtc6s9j{5zE7+pQ-LyUet&5k+1xN?J z{nzvQMJDwL=9Jtu5K>4w5h44lYYf`yRl;x7d%!pIxa<#=Gp+9$^+YOrwtExEmAarr zk==>&KcbUFq&WuzLGImO?#15>_{g3)tR5{j%2HZV>v}zY3@Ekm6;{i{De3dh2Ebxw z0^BKt?h}+)h`&0L+SoXS*oL3f%Yrw0WaFJ75$$E9U_6emAMRtlq@@u)?&*m5&iP0b zdKQ6a&QT&myF6c_0Ss{#VYp4o&Imxk?DkW1PiRrer^+X*xFHSu#OYY`M&mMocn!sg zT6Rus@|Ktu#vTTZPv(P${m};cPL|pcV!oAilmqfx12r*`oE4;;>^T^oNtK_kDGJXb zWC;tSPF&n#LZW$9tk!vOY`69atH5?0_N&90lAbRBs-OmVkK7N2F9%^>O0?it&Mi}R8Q3AF{uSH(oMF}ErNPGXY>TP|ZgtE9(pyOlPS#vr;mtEvjiU0phCnQpb&BB^ z;q4uFT1Bd)2O`0$OyQ=!Qzz=#&LL5TELXclPUS&r;i6%T6U{5eYJHKH}21 z>XtVDzegUPqzuliyYAWpuhGgS=1QI(k;N2&^_15s;I~q}r2~3L#lP1!vy?6|uU~H{ zHthQXZPIZI^pbMMm=(AGS_9Boss8V<_Z!QgfOU(lZ4No{*>rWn=yYH-exU6^fi7HThx)HN)^>@Sn6Y?`LVc+LA}#VWt)#Y|cSyA0GCX8;dRGFCgt=t{zf$`PGK zF$bx(6T4qV-kr&YPYiyiH?8#@3sfKq2}6b-=^P@$1(CVtz+*%02)J%7g)}%A`}Pdo?@|&utXDNa+T``Ke`=*| zQjrwYQG8uliz~-f>guZB91s-Htl_Q#0SWvSm{9F4lVE`cbCki8ohG2A9R55QR~%Fy z#-yV*`vq0mB|5VsS^5yNxlaBr-ssK6g)6@R@5eC5ENMaroTM~?@%7BqbpywG*VcYz z8k60$_IT2LgR0i|lR;628zTEPoH})0&LJbA{#CB$JL5^)C&((_K^u&6C3~Qc2{U`JnoA!+or=0)CpshEs`qXDGFVad>jVIRxTjPg0ue+oMi zV&|*>p_ix`rN2u%)nPku39{*)HY5H0$L&)L_1*Zci!=Ln0pu z%ti(y^l-^&vZj9Diwl%W`9WnehOyf#m(Oe2&-Fi6^S!sA`p#ia~tH(EZ;;ip{ z6~`xVxe@)~1x^+;M(?E!A7e}H;jcw^Dhsg@Bk0MkVh@SY*N0rzjx?By?Ru3LluX^n z$QnK&9A45m{fLt~qrTJvHgi%O)X(vL$P=ot=4dDeCC(DwKSArpr|mfwsr(sGtcvi4 z8HA60cM*9$GpVNex3Y<@Hj!n*Zi(E_-cgP(OJM%6P@tE}#=Qz=d_M+)X_}S|n!Bpa_T#0XBW&&*Ff}RlXE*0_6EtKh2<@b!gEq+HFG`Re! zy%Jt^zK6OZqY{$aSMS>HJ|u8$SW+ojb>f$^d0KxHRS}1 zkqt1{3R`Bcx1M5VY;Bx0O}}u7L`__}@}j96JTvC_?z1jz7X^Z}w876pqW2RAJ9_Zs zBVDQAH~FT0*9TT=W&*fK)R#qn>0wO`FYOCu@Uy-UW9NB{XW4rcjq!Z1J$I3CJ%;+*l^2u0ucdG0`&^W=8xRG~vg4Ul z(yFldZ$BELlRomGi3XE`y$`w4Z_y47Nxox4<0t)=l{!e3X@w*(S8}1g#<;4U#hYN_(W=Lyh7S zEnJn^gv|)q>tP9CxW3VYJGml>26}#q%ypiH`^K%zp}SE0wqmaEooP{&QiSRj{Q=a? z^U%8&fBH2G%|b%kdl62U{2@0`$c~C-8%W@IDU)Dx*)6$fyvCcFDl`1>fH%}1g2|#T zeeM|Kk6+M=HC7*M*_$rVp~5#+g}XjfmV+JZyd!pIO1iuRo(GX>zK$uB)mK5tuPG*O zR2kbzC7Jz!dw57QY)DQ^z~GCCK?%wvqJm_wQ^1+=QBWXCHnxFOaxmbZTJKI^kMh)mFX>d(Ob*Cso0%YaM^q^pL zGyMAe%GG6n34`p`7-GS&Ump=>+3Kn~UOFQ>1{L!bgsX;PAT3#A^;%NOlN#GDXftFC zhhqAZMDtRNOjMG_PiH<+Rg$z8#z$WXkoS-F`19X{#Dn$+vnMr-)_Boo=%?P=+Bk?@ zCq)JR9}l^2W9nOB*iSiCyMpC#16u4z)8mX0Nww|C1WLh5kltL(8@m_QY+wqTlf~|5 zs2#ULE$5L_JyY>qP83Ts^i>vtv-<}OfKmyar#f$Vcv$^+bUJ7DbqiZuIa-=hY;{ZE z7$XV4a<7mzcX;$Wr-@MN=X8)Q5`@2Rlgwha>K5i(Ps*ZbDx2Eke)o~W?oQq3fn4<2J$k;i znd)k9>yzDPi5-5PIInc+`eGXBaW<&8`5G{c+|+FWPPP)SZtBo!FB~l)%Ej2|hOugQ z4N588w+)@?NSfF-Bg_ifJw924`m}6ywA;GNUbrk-Xd#q?CWpb8_S;KRgFC7gnPtaq zZ=N-V_*a$=%M@Y~F83_%Iv&rym44)?W90rHKCrc;p$_;sv64mNx6rU%aU1h%9e8D$ z)_jIuJEw_j7vTcnv7!nAT4L4*ge!sRWf6>K4 zFGe&q!X}wwdY|F4SSFeB#b? zIwhPgTpz`8^>*PGi-lSdGXQ61mw9hXcEYJrr)HZ?>g88EzfIjDQ5MCdK*Yk?nREeVwSeQGyAH zB?UU)Uu%D5bg;{5Pu;DdXG8<~=Jt@GhSh$uBDMR+U4cXbJS$o=m(hy;SvC^h5m>ch z+84FCMIH*gMo&1E%}ZxTGr{;}FWp7R+*5=D7##WPly|xo7U3?&ydyrXk%J)Bf4|p~ zLKho#U69qpZ=-)I+U}gJT`Wpao9oJmyrFYPYoGFIi+6Y{*)Ov;OG}sI7un)#R!Pts+E}T_gf#h#Gn71I^rN z4YUNd=z}#3UYy$8q5Z^Z@gmaJ4^PTE8J(X7#PvpZya(O=J$+3QY z?5OyKpSDH?~+%`YRWQqo<5JshYmM#8@!AAqE{)QtRibHM7i} zyu1ahOlo?aqdtkk1EJTWA2YZZHTyfpE))P`N2wTgylUqB=C)^!bZk}2^V_xrV+O?> zuOg)P(UIxq!S@GY7FpiQ(#Gd=(vev5LB zOL)&VG#i6o(DvN!-m~4#eSt2DZ!OTT`9Sw%5U$(7HLzKtr%@ zsH6M15x}e2evhdLZSoPkwLq9o+tg(3-N;WzfdY&qlv{pmz>AvXt3=|z+lk%US2l}w zRxr?>8aEDKEhawHZskt6j7mWnT4-lo=39Pr+qEA=Xu}&A#9lP}{O=Bvz~J^CNhH02 z@8jlibb8U*XuG{`l+N8FX|&`v{v=T2U09ai$9c_NKjWf!!mKhgt~qwLTm+4=}2dEyB&jVgBR*lyLrzt8 zmT3A@LZkgaQRVNhf=aQ6abYfszt0vOW$}N-UZ$=P?&~jLP$?K?g21K;=UWwwFkjO^ zeSzX5bFB7mC&8hqHL<}@kz;O;IGk?E(gcgP){Tua_T!XEFSxpJmDA?YsNtOu;MH(C zq+OTwZCDhxA@BQqP}jEu)N$YeUt=nqf(FZ_y~mV1Fh&gC)f393EBpHw$Fmyx)VVx? zp5iQj?Oqd2`jCW%ump4TmiG&nbn(S9b+;`QS zCv6)FXbqE1M|EV`$&6yA8*R29Y~04FWAYT5ceiwN128ZU+*2V!d*ijCy$9=G%%Gwx)bIF$B}y4-7K!EDm`bM^!;MtRAFf%JWQxMZvAXN_V+mv(20NUtq3XOHziN z7HSfbbmWT5G~HP+xV^2^9WL80{%c#$r|!=Q4qO5mHV)u=VwNey<$ zZ&A7{@6DxeX<6;-%9mO1_*Av)gAdUiJ^e1#0Y6_by!hW8ANPTf2GuR(nsklOe0GAd z^8}{ovZ&Qem{c&DZB#-H-(w>!Zfq84k-s6y5ut8MR%Vwg090P5dm>(MQgdc|x``+O zOh8fTpEgdFL_EH8W)gB7)Mk-<(ldiy`+3wNRayI|4Mq}DhO37V3-qKl0~Wcg%H>x^ zGqPCRdiiO2;)xH*9nrLuU#^w@N%vom@H8JwsH^F+qSw#}FvJG-S!VPp47)PotQZ!` zNFkb0!3l}ctFt6NmdM}p#~yZN&Dr?T-mYKfY6Oj&c1E_%GymchX*Z~gGytKh z%=+`EkCArXG|b~|`y$TjbXNT4i7&kH?8>#SXDXC&-3*r1bIn(15GzAf5X!SrJME(~ zElRyi;-NI~MIVq;Hx1rxTAC%DC4B+x`HDIVl(T&uqQtGgdv9PZJ*d<&{E93Ju(!g8F>_${8S3 zy^Qk~`+`Pc4}PBHZ7HxWpjocu?oD5ewsi3itT+mN2I>HN+K0spu!oBWS^!E* zKn|G8J^Bx99vJPp&9G`btef0Q`l@reNBS67;|u7~?06BT9p*|&be4-v_t)O_<0-7; z(3$&6Rm_nqj#6ieOcTIoHQc*sgqe%>k zAA&g2Bz(v{lTefuGV79OB>!?^FT~XNAB)&Cmt=pfD>u_ZsuxEZ9ns|K%B*KK6qA57Tlo|mmNIEW6GC}y zyB;n1z1`}pfyNI-H81?|{t;XbF@f-MVaqPQA1;F_h`e+S=4k(+?=xf7qw)iQK0{Du z{SDnsnMcK0H?d%b@!KL6u{*DHJD)sYp9HFNJ>s@KkAjICC#T~}dmYt9m_c}^>Vve# zeOrvCZB6y)VJBm9D8iIC9?p0#abB`Wvas1*_GPVkT?IEt?|*m5_S9uFs8+Jq>lp8( zjqn!N#||n&hAtD16u=(R+y~KjJj9-GjU7iqTt#zD8M&bC#q@nHlnNf|!;Uk!3N3>+ zpUISg51?Dfw>LOr+U)FGf)GH?nz2ao;1tPpm6Sq%77t94rq8^rOA(lbILm_w##$Qq z-t6>*(^;Qb_N*(;XezOFgU+Lp%+XzuQ-o8eX_^GXHUMA$D0G~`<;TYv>7v3`NBTV& zSDX9pf}{Jr1+JVyH3P@2o*Z%8lhmTOZs3T(7K^}vR47G{sq=ykTv7Pq8l&ng1OMJ0 z=)!kly$I4h@=^=I&yx6==xyUF%Ia)fxrVzi2pv5q(mn(ZMyT!)3#t!}2zbnPf1cdo zY6$~4OOcj~Lp+Y$6c@)^CT@&Q&4Zu^pE#51=m>t0hgV8qWs>Q}oXQz8iP_3S>{>24@p8lD7fXR}ysSKeqSr4$$`QLEh#{YVcI% z^9gu#RG%rWe_Xq1F`y(JO~ZVB?05f0u?b-<3Ta(wUdtOV@+BaR^mT*7cIkEAVOkmg z^Pr;sJ@6_N4P;mwIaCXC(kdd&mSzk!yfl5ocUgKrW~__G>gEebPVU#MZ@_~XeeSe&_?Ex(g!u7<#DUi= z*t~q0t;BAOf?C2~7adOOR&i@m3;xn|I=s4lPxlaZ6>9rzbJ1M$ld_(WLxKd01XCO<|E>b z`32OP!Uy7h#mC!0g>_>eUIJxZ`UAeu;A`H`FNzNGK{^3V5eM!*vG@9S9o6G`}`n z;+fd8p6mUs2AuF z!L{BIU=4OA&z};e+p4jdZL5fulj{fx>X9IwC<*6AC33F(isxk1Z5`K57RVzq)fpP)qE`Cs!9lD=+0~UyK5qxsrRaRBvb_RQ%rY*AhpGwen|s_lvP=pEF7t%x z$6Y9iENb04gnO?zrD8dPIrpcTwE*o`?f{ijm{1kHzx2vHQ z$Y-(Fj@@J^0x(!7maFHi=J{fA+edf?|2`p>dw;kSe7jVW&Y=0>mHI1v*+aHFthN1d`1Wp*|*VLC)3qXhK=KwVtdYM|F$lOVJipDg?Yy0S}Qh&kZ`k!3`nNP_{ z&sO~3MY(rtKYaU;vA4ah++eN17it_EJ=M`!7qS2xLy`VX<$vP0f$V=Wav!9w&C*Q` zK&qY4M$Va&`GZAYzOA%Zu2}QUAHekT+c}IT?8jz3YECR?T#$<>8qG2HRNtDr?nk&n z+a7xgn|C7y*Zwe}y90)LT`SA*!}(&#glv$)kwC758 zK!YhUx;dMrQCq5@iuuj(*e{Fcpsa-%3!MNrkysCDDzemUK0h zY9|zXekmt$0ywQ`E_e`K>7YT!S5zw_K1C9woj%S3ER?bMlc_wIu6uC>z{rgH zpSG?~*L{^5~9L#%+r|d^>r3;nvBOvu70{S$=V3+bmaK5}-NpV+dzU|dsshlbIZ9nXqA zOQVmB?_(msxa<5#Vx_$S0}UjAr(r3LQ@b1s16MXHSV~EGmzeZcCP7 zxnpatx181%G;fsyyu6w=C;tIVDXdLKk3_v?J?;Xs*4-pT#8}=c z6DaLI>;92Hz$~Yq;@v^XtcRo8`fAQ-nwM!RULTN2P|*k}B+jl?O0YOS%i>~tW;%kd zh-m-SEo`0w67}#O8Y|e>l(yvqDd6uPcuf|_;2Nm>f)E?16u|+AQ;QRBD75$L*1uRJ zpX}_o;l=o{Xg3mMzgW?$KZDsxfFM(nSEzyQ9)fGc6ND8E)?K@|z`r0)^!`pD(RJ;SD z{-YlqMmZdWMAt&)uUxFps9uCLJ#$f`jEd58YIpBfXuF^4$UDHH@P02TrY~6E7qwk~ z?rzhmISm}A+VOE1=-*k10pXj&p1m}C%Frg&;x>{uV~*Go2ckGE8e8R)2#+Z&bW z%*1>(^~YanHOmA_G=JL}VzWn^P6nFqfRdMzhn(b)v6A~#Mg$0i zr_AV)WG84Lb^JffPe>TCPMNp1Wu$qtJ;q+`lN{s~|5qhY08kT1-U_wU#nC33TcNNG z$a^8dG%h8;(O!T1VJ(nwy=9CLFfXzLKQPa^)+`~_lG@QFb2-0|%Ykp+HdY9{!?2!} z?gR?BYJZ9zWCObetZ;caXR_W*k#xjc@&9C*R)R0t_^E56neqWjRQd74H@t@x52!M& zeBo7WMLhyuikxrf1}fSa74&_f7^sI=1}r|W$4*HmGS4QLk~GlL1F;{wUn(?N)6Y4N z4h4D)@<>LB^Ef+k=9>W7La{-c9}Vfgbm@7R<2J&>)}&D9R7;#oN3|4;G*_+@9}Ltk zatr|U(u!hKN8EP^bvlw{hTNHOyr9i7i^UZ2_hvFxn!#iy z?<=2?|Uex0h;VR8akc%lw&T_x#EXTn|1pT`mNy z9Mx@9THGve$!yIbJ*%lx3OO+N1|#~(^7AqVAE-*RI_kJl{sI^%&&L}3Vc}IIAk9*( zOy=2@S^J29y$9+MG64{fC80+-P`@TnK-6qQgf(>OA++P8Zr<8x!=BhmZ$%5SmN2f} z-W!cEwYLWAS7IkTEhlo;)myH5Bi6iO021So?p)EW<;8xk*pIt?eIH{VEd5)6kE)M- zPw&uSLu1d7Mhv!Fe4g=wB(sO;>)pMX5e5}U?b|w^8C`=|-fu#-+M@&Z1_SjF-`F7s ztxVe{diV+9c<$-qrzj(&+&2_^@EwL}qDh;#ci;R?8smDKhe;6%dJZ_z7`*w8IHLn0 z7Sr8B(_Lxj5waRX&;3cJ-`~Qcgq|h;4itVRN_wBA`3yO&dhHHdVg46-b$j_%ylx?e zGj3~m$@?(-H}WSDuR0N*@gGb!BWbF~E45l@>^AncZL;b;kL+FdQ9kVNt@J{B_#VqE z{ty4wDLKX_2}^vo-fQJ4h`gw!^Eu*{M|a^0l|8tOZF;p5_5Y*jEZmxW+c0cWA_~%} zbR*p23efE#_*8xu%;FWt44S}U6ZA(MK=k*P? zS>Aw+)^&bBpUO_5kzGwZ`ZtA{?>)$6gV429#h{aAH5cw*b!r8ecy#m|9ZRPK zuCDB3sH8MEC(YyXQ77Na%|2x+N4Zw@&m2}dQ#JWnTzz6hSA&xGN9$g^+57aUY4@Ov zQZC%CAnr+K!2`>w?88QughNIS8@1Es#?|hZnFC_$(*o~oP^SQWOM;Lt#6e&E)`;a@ z!@l7oGC4HOtM@CN?m(+YvVu|E{e$dEJBd%tI@PS7vX3tj3J>s-E zWdvBeYdaMwHm%8HS2j=&(Jomd?rq17gR_lhuW^;1iLR9VOQQ0ERHXAwp?l^X+78 z&b%eMZb?g4-z)!7Y?x6dG3VRrVb5D;K{<);Voq$-J@PCk91NnZRjo(^g~PDG1qc_T zbz`aP_1avOL8QKd+$wZ#E{f8tCkRHLA|Cf?b_b@0fVOP+yFA~Cn!|(DL~~*Kl1R`u zbWO zUei%mYF`U&EMi_&C^+n7AO2;XE+&4JL3M++S9bo7f7jpdbz}dei|0|QY5Y6$^sx2- zjd0_3q^1lm^Pth6XHce*$l`dYjr&FzO2IHbDpV$7JzMB=~ zbVoIMcO*gKWSnFs`G*%iWlhyRiUByKsm(V1$Z%P)e=gm1m>7LN%y;JT=T53^$~KC( zUFrA~H${1E@F^NnR~9b$f6?`tdZnnWaME6D=<1l%?TtWJWW5n>*jYvuS9=ji)78{AA-j&x?ZSkrGgS5&In6JJl!>n}_5X6Ts64tHqwj_scB`jFmk9Vm1R zZ4sM_7wWc3hSQ~gcjfkFm-*E^KfU10$FkUo>g=2;BiEIS5_#%AZ^mvz|1+^l1dA-5 zUQS0a2m2sY+G^6imjr$ITNRm7741-wS|06-ZV<=~vIZ3)@pX5haI<$4mBh~09>TosFU2v2of4C|)KUHVC(p>T6 z!LI~0kdJ^u&M2xj`^QhZpq_x$3K|vh(-i~g{+cw<3IN~tC)KS5zkqgiUtAoN8TXuj zX{Qr_d}S?&fHxJ8YSv^VYSEId54HkUXrpY{no1h~-#NGI!@Bf|E>D}3$io}F;8#Z4 z3o=}Tc0TsQAjMJyZK9D|#{z+Rl}P7YaBJh5S>>BZ{L6e4NIl4W5A! z&l>}n1!&K!HvrYg#Dj3b!PE&iD%gP~`DX2lh!9Db2|74%B-_t>dfzZ)i9!PuGq^5+ zTEoP%{$!EjnajP*GhU?!sN)|57h1tLWhKE!t3k_YNDg=1kw&fr{<6RB;CmrYvacId z*cl?6-GHYhsr~&5^>S%%q2g|s9{se%)3<_Vhwg@3lr{cb(Z5IMBE5$?TWk8G@SeWK zGYd-e(Z3*hY$exty4ELoeW+og*%%E!Bi+i~SJ5Zo+}ol>=q5=v(5D zDp)0k6NBAoTt?# zVq1pn2lt{`qQpK6BWzc$8yc1P{CoC^ms>fwS)>r4btSlEG^alie{)K9zfTAml3n^X2X93!9(8)>i8wEQ9rGXGY*W*Za-hgQtI-AHAFYDFFP+XGo{aGow`qHjqv!H9vs7)wd zwn^aNY>_b}R7^+Tg0syiBG@1Px=Zw1gQ65MS>d z>X2wP`EK-GC>%HTiLKveWqUARywiZ=jBeqH=V2>`MtLP#k#|Ezg}U?ctKVcil6A;% z$15p@)xsqpElv4^TDI}CHQD)X19@X4d+pJJ2}zs7cdE0t;IIQlyx@4C`t>sl^i*9z z^-3b4P}{4ZX@7scxv9KP9Zvaxcm}BoHfY$nTb4AUs`ElB#1|U(0`QhF)oR9=-3fJj z+GNyl8w;qz{mWsAvB_u&UNZ*fv!R`l%@fMLckh#Ky^?Lh*Co~oR!u)ie)X-{|LkZX zEqR{VqYl2|j6>BJd6ZoYiKyCKJ(JRR*uRAALi_v(%_ot|ESBRN#AIvL^R{vxrOPSC zWLjD0)`s3fff$gwl0skc5ne8*O-*vP%RGFO3HNHg2A5*+HnEiIu&^5%>U&{5Z?e@A zWAHqUWOHvf>;PfAY%x7NOkwXlmZX_r3f-)G4or}Yvn)XEnH;VNGbU=9<3T?R zNKvWT_&H0f%lRkWKLP$zo-NIuM(&hFxq?oLp z0EB5ZB8TR}tU@Bx2dDglGJdXrx!UvBEZH-c-LDiov@+kMe;?|5xH(VNbI@qU6k#nJ zG+&js|2YDFdlVX0_-0DJcL1$(=vg!1^2bW;a!*QXC~r|(i#l$Ur>j%;pmFjcBiVYE zKJIu&y*4(jj?h;-t=D8j^z4ZXn?eMEGEx7EYwQ9LQQS&HK>oUU_4uoJ+Q=&4Qx8Q4 zyA#Cr7_?0pnJbak0~p=V)!a@(AecknWqU?~f`fLX9bM|#_sH|r!2L_tSBY^92|%sZ z7&le6XQ(Xn66E0^=vndmkup-N|3(G#weVZgE>u|4oUdG zY~*f@M+7WChv=c?%>3kELPD>G~+~f9PU-%KY+Ar#FN^q;n46>YV595GVB+#)# zdjCLxh>=tm%rEu%ja~K7(y{H{kZbwW%2Z~&?XBbRVa1LoOk$9Saypqkoif`SwC~A= z?5w|v_Me?Bcyaw~Yd=}4GvSkdadah_`QWv=pa-fePCLCm68fPvS964EeTNKC*NjrwLc&725f2uK@pTJ7n&H;YgbjQ@?ixeMBA!p#bc{ zUmP>=^*k7LeC5WR6Mzoto2ah~Xx)&^EZWo@`jEC=^@9Fa_36OsC%6gY-<|CLZpke2 z<`XHw%SU-c!d9a^l^Fl5_LPK1%8eyxF&Q`rb)PJk_S~z#)>_Ri;%7;6AxY14Pn~sF zZ!35dxpTT&?wOUWi?Vt5>aPV&Nn?_hbE2*YPmv;?=FOdReG3fjI0ZE{)LoQ))svXZ zT!NT>bVFVaVZ{$-UV~_fMiIcj0!*%49JxW5=J^?wLPM4{A`Vn(y2F`CR97xkEHlg| z@+fFw#!oGgC0T+#E967s+3`{w?xx3#e^ zvwdvy!A=w+$-uJdR15N`w2`Id;QKoqWAFs5@UD-QMj9+C72$W`HUQ=pX0O_t%xPj1 zSBl8X)v*bkTMwA9fVcB zWZu#uk6G9Dw!im7RQIslGqmQmf0;)?x$H~L%R%6{icTO|D;|v8{A|bknsq$b0#_yY z>^TPX9T4-iF1Sumpsn(}2VEVfI{QiBEb)s>8d>cPqzF`lG6m;Hc-x%#P2v5*7uB*v zfc^5_TjRj9vymDe`V(hTkZ}Q~V&Kl{K@h>+KcMcUChosm@bw$w852h6_H;G2tX7TE z@%Q!99k0mZ?-(_V==6$FeN9?d(PZFUxevX`Egy@^y`*a>8?DOfca*^Nz#60WeC2YA zMb&(@;PXsV^?7Z9`H+<_^vYiW*#P@?8mV#CY%({(H{| z{EJ(R9M*A*mMRPM%+_ZXs0!Q(WlePQ7s%8Rw@p9=VADklE1i=CESQqXnA+ff{~Vwi zX~BG=0MOS+?f;6zX4s(uXVn%6E30!Nk>;jn-F|m67(=3{J%$DuJHEA0_$41X=#M_> zE7bCrOWUh}uq-+7J^2tW)Oc^)N#;Gx^;v-hisd9sc8;?|Q^;=Tp`F41T?bf2nJLJV zH(0krHhujo4W`G}Ivv5Rd5`q^P=*9ZrA&UeSdVC#&`X7DyG=swEE>=C^iaL_{&ang zt^N_D1u6CZfz!TgW30}jn1{pO`o!K?CF(97Jv5&7pXY5dC9C;xpUu`%E#YpROIg2UU4O}Oo$4Scn6><6O< z?!(7*0lK+!Kad}t9u-<3UTXSwVLd!D)`x|N?J-K+lTZ)mca{cX17M{Aj7wtKc%p}C zHS_TiY!U8{;yc-r0X-oxn46T44oI?B*s(TgYBm5XB9bi&q!Giol02!@yzGc(J7^Ft zc-hbKMeRF;x^ac2opSz~mhL+PT}@1yck^bl|MTqKfsU2wde&i~JAP1`KI4X;eF<04 zJ~bY5GCh_r>&m*oRh@^|?mX@uqf2ezEnMKy3jTDa_P<+z+aiuDkyLD=@iKJp8P5tv zH*93a_1Gr77)(x)A8wjnn05rP!Q88L6lML)RhNs_935l~4p@f08$_*enE*OTO(w!w z5jdMyYg0pBsmJx;A`Sk#HCI&d=%atSkYwk#?JH;hhg7Ndf3@oK^Uzx=v$) zw-vqTfPxOqG>aI7NP0y9AVH$7%e_{Yj17QjeDhfidcGd^>?vY~!ORiA+RV_W>(f}C zONeZIJnCSa=|tOew0JuPe;@v6-eMVDOc}zl@)@-?esp{(S2LMoiZOVE>5@mY6%Kcm z^>lWR_I7ieu29$0N2^N>A+a`922&vA%4_AJW)BXYs&D2~b@Mqq=PT+u&IS-75o6wr zSmLElF{?vT`dP>DNQF)x2rTU|B=na|D%VXU<7eUP3d=Rxa)YR59cdYVo=4|ccV6iE z$)Ki9&71++YacN&T-3@g%HGfEfPEHN+Ou!;g-42OC?r0lqEv<|?!i6rget5B%!ylm zw@oa#D!b(u?9i?cq^Rw{1nJ#YKJP{x!(JB2vMn3BahT<(j>M#RgxSFho#x0+SHsCx z)F==^GG{O*`1Cx0P{;x|98~%B@HPRBEQssp4%`!}M;fbu>$#Rcnw-RjuwQnOWXRSO(+FYFeS7T<$xesu$0M6E#_~ogVuDvDwYK0^7 zq{(wrT#1*w+mKiLPCE3duO>ug<Bs@3s=TXR+F zVK%^eUVabO3OZU%psJh(JnkH=tf3cf_VRPx$CdQZACt`X&PTIE2$t#up`W(y8n<_> zpthS5o0RoK@-B~XZTE@nQP!i`SFL3O4|+yz!tlnHSKmV@-gCXwvzIC^3Nd*&iGMKH zS$tm#0Cxi2@`RTBv7EcR$b-v0uFiG%Tal`4zY4FOS^MnDagID3LQc2y09O(wA2ffa zY#=c$yy{3Y=7vRHx#&Yt{@w255S;@uWp&@Y0|XX$1*xo<7;B^Ln1ltL%CG^HDOBaN z8au(~rsIC%3sDQ5JB$;VYRBZM?NWGZ9(UYV@E_GdXB6wC&FTz(tdgLN0|@zmC$v; ztAW*+BfNhnCT8gZ0Pz_kyR+(6bflLynAK}~4{or=P#x&_ObFNGuh|R>e%9JAzIwGJ z_&0>v6`Z{hB8$Y2LwcdTxqZ0xqm{R>yJJ}DRT7rmjQV`3FO=Zv+5+jn=kwe(KbO1a zAguJ)Km1VWxDy8rKiSCMG`JXi4L>xD1iyJm72A6J@b1HgFjH1h6ef^9UBq0(5owaZ^KxNvVOpVyhof_XJw?~$@feMwfF&2sV_76 zul3-RZ{xou(SotW=BVR;el&asw1@(oW(s`mEYFs;REw6A7K4Y2>ZqPhkBZhA z0MVL*S}u#g$YFppDfdy{o$vsXTJAciKlU1onQYH1)*xcDY=9TP9t0>h<+YNhK zI58t+;zsP)|0Q~Tt4m}4eNcb>Ww^g_LCB1h!Jk8^{eItFdwm)v#DBLk@SgvQh5+~m z)MA-?-}#5UZug9_j?W&Bn)^4~imlc0s+&osO0;K_&&YhZYWMs$xrYOUCfSd#0}|-@ z>mpKaO_!SYUn3HC4C7Cp4*K)2_{)lh3Y>QNEO0db>cR!`xV95pOhGtFGXSJ--5hOmZ&|4 z1jC?C(+~qmO42 zSBJ*SrRldjJp6GuKI};z_LO}?Vdq$mqL5uI*3E`Z^Cb@8Q+*#*g0Ze2c z`|_VrJ%4c9$rG@K4eL_|WcMhWPwyZsvjq5Gz%K@k*e+~!eVzQpL59sU=#p=9s*GwG zdC9)^(l2$4o8#DbK3)JxcM%Io>P(k(PC!r9y8LB{x=omyW%KL^`Z3Ii-OB`j_XiHw zRH!{@S9P)8O=jbYL>3B`%`wTqH8Ss4)x)OoNaq*7`~<3H{W;Gkb*4x>n|Z_pI_VeQ z?r8)pTcuyiyLy~l(A9<9bAnBbK6%%yuoCeuc*hJDc}6r>Y*-CT0-K8#M_$e{4i)1c z*?|p;t!-8Y&#u=jG8Arn%Bt(uG^<&w&=X!eZ{KZA6>VH~eiILQo)6107ToE2slLI~ zj^wn@?(l&fk|xj5VePCLuI!3tqh={(A}3Jcl#g#YNb^Nx;trZBC~8Sgws`ThUB}MS zS3WlvEydpw^Eq7j;K_Jw!`J8^Q(VtL<||+qVK5(5m*X9rC}{ZKwIo>>@A8X)=g16b z?%Eh)#fha-gQ(!^t-P@Z*m~s~w%YBF~Xbdyc27R@ja0E4A~Uu$w3J~+Q&)F)Q;)rA`h znHh-Q3K$z&%UjWt^RUaHD7)J;p!CDXHj=S4pQjG=_K*nXEHY!O?VVWK>BRSX4csP| zuS#EFZjYIl(r+rg5(?9K6JEWlfUA-htgXlH-}kwNeahjxVE zO`gx2RJ2&kSZ4XX#tCP{j9lz4H~IOC-`6KMar>U179;G|>JTt@rUA^Jva+WtgSymY zg4nPb#LOuA$p3Tgs3ApeiEfdozPs4C!$1cp^Rs#G*{V~JPyFKe2k$S9&zuNumoCh- zk{OS(J4{Y`g|G1y;}5(2^A8$yT|BStLhko|2%{HRGtuXbb-%x3$pn3(>WHza%_v^U zI||1$Gme-r(As$q)sjy4`M8F$!&$9KJ#6^4B*6yt;?=Z|<6y}PiEhUM15KfqZ;3uP z_!_$7Dpa?{1_1X~NnZD8{@cLS5%ATlZ5c>KFT=ubt4TRY-5PaJ;Qv_F# zKO}fx4zITR>)^UN?uNXZQLaB-b)1CSsqgo=bN+@Q83Sfor}woLCnr)Apn7mgwUK=ai;WcHIZO zo9>KDQXlDqLR}Lp^g`Zcede3beh=m9!sZ7r<$I8?Ddj z2-Unqv7RRXuJu4>pNe(00LaPjo#B}jqzaycz6yGoi^E?0Tu#?@v0#uGC-n;WVdZpH ze}xqp>nzJQ5Kt}CkIyoaU+X@ua@BJRose0U3}h7{suQ$2D2S51TX-vHG|HO2|E&$O zD=wk}e>`aVOv>zuumpJ}85}eix@QwVCY3APER8=X6qCN~Z%KytXNtko5+EvFnjB`J z0#2V|z;`b{tg*e^;0vTd(MwS)iHksaMcCr0ljkejAr9i#p>h=Z8Y2;eALixdE5l9A zZ!VxLGF=@Zdv`Er?|hC|**&bh=uQ^rKI(o7Sfgt+7g}#lx=W9%Y~JkPFY-sC>e4ty zWtMAvXD!ZeB)i$jjPy3eQvjO6V%E>`O2)!(`8Wz_S^&;1al=`U>mMO4gG!ytUzmB1 z)ZntAE-S*m)166AJ8i2i`MN{8dl7%o=<>e9krhrxB$&RfSmX-4>y<-pQO{2R8=he>wo?$s?r*^^RQ@d^R$j_E4YnxXLV0uK3*y7_OV?N%2vV1R z48m_VmM|V(2jD_)MKp8-6Wl>vIu-G`$E%%iX;rgX*Yd4)8>c@ZsPoG`X>%s(khBci z=)N>mhF_lM!3I zyx7atsPB88_fQNh+)!3FuA3N>Vp2$zAr?bhB@ulFqE08bXuih$W-%yHyOq{Lv3~7- zy5Q^ES9|QgH#vVJ-(chR(ge0wF|D*272q~?GN`;$EuL_&eeR<;-RVzt2WsRrqrrxuFML$NyI z9}RsAh=J!ROr8G<^lR`AO;V=}Qo%y*>3ab>NrTKZp$0cFV*v%@z5yQY@$r`W2L)N9299plZvmoeGK1 zO@#FFe+Q!qiuLWdsO3`Qm_KitH|(4pEvD=A`o!cfPy3X=20#-4jGp@ZkGSJh3XJ|n z$(j__#pxi^by#Fr)lVhYn%M;s2L=cMlR}~qjm*I)m@TJ=LpI0jtG%+fq?|$B!v60t zPl&yiKf_Z3=hud>U81$UAp8zqKtTVnVcEgPv3%rU0)C=O7JH!dqR_PONsMWXwIF{h zca5$R9NQBE5<7Rog&EKG%J?An+|wVtic*?+2`g{`mQsQkxF6b^oLi7wewEgKp=2Nkhy2djwBIV^mBtAx-wAWgcX)VoF!re&b01%@#Ryl+w#ksGQoMe>~Vd+BeA z{d*Kydrb6rDA5fpbF#yIoatLEH&@iGAI0m}H7FJ}1(=Z|@94ck8tkf9OeTkKk{?ef zS;u}ypE!e`czmWrdcFO*i{Pn>JsPG8g}ieqpFCMfO=Hpt+ccbB!G{DA*9#YD{os6K zl_CsP>`)Xgy;jx%n<3IgzoaNQuc@d#fe^~nt=B6odc!-!IAEk7$8|SCdybZW;L`XJ zg+unrit?JZQaeT|A#)$2wx`e;IWOxzu@*J)cR+nGl$KC2Mow*km7$+&LYD*^M-%3v z$OCXlx`R$q$?v)*`5T{-!U=;HU^S!MZSb&w8ElWmpkjNPQb#7dX?XlHa6vz-P_7f% z(|-{WxB?Z&s9;1BdK+7OMY7}5`@p7{*~Cu>UR@tnW@HouW7GH)g<3Z{ zv#AHF{KI9kmhzW>7Iqa7E4+&wWO?CEWDt^6!8&t+s$tjEOJEsV8vc$>F{y_+twcG- zXa6}sqEA;79dvx0wlri>H&{IR}~s2n(oln*tiV<>99iklR}Zb%14;j*Sf1A#bks>dP!lb0&h`nc6xA# zdT?y|9v^=im&Uh{kmIIS^j9n{Q+jc@*U37pz3>J7$A>$QiVNNP6g4Yl@DGwVpGX8s zm?v^A^C)G0WDhc2F+}0&Fdpb~2GCod(UjWSA20^n+u!ISm8*LHrh<@UfeQUD$z~sh zvva2_LqY9^j9Ow^nM#fBAhO=riH<^|fM_$b-=YmTn>dTSzivUW&oZ~=H$QN(BpMBA zTFVCt^-MJeZfAtigki~;l{PwvLsL9W*~_=#JQ067r}?OCG?-=176nK)AVl6O?bJzA z=<$H$j%=4^g!S)eXZ~1T+4`f!p8&fpY>!kstIc!BuPx2WV>M7zA2ObhT2!G+<3nk)J1n#=aHx&>tI*7#C}%I0Hi0JlrK|dllvgMV^iKb#Jqq4_xl)v{EX; z1J+aN0ghs;O%W=;#2NMj=!rc^$~;6U*}6=I*tvrO=*N%i9L~Ldd}eI0SGHO3oEXc< z)Wp9Vikz!DE?8CQY`P@ufH}3Ch%~%9xSYdwRPRLp?~ z((BeP!y~F^8;Me2JsUm^P<2o-9X-l=o`w(Jk#AZ0>3D&hQ{7cVw+ZFl+n6qBJSZ^S z^ij`Ibli1g+naOH?`}+6uxpy(f497L16P9j^c?q`wj`icO-&&e)qPmTyYDFG&W1AB%|^>-dd<`idLo>D1--34EGfF( zL{N?EXP7bsf@s!Dsgn%_UGK1Vv@*vM3?y5Bj>GcWKcq^sZ+BR%4Mnn$;aHvK-5MXo zf1N#*V3eH>rrW)+etF1Fu)>x?M*0T2U75OkY&0JdMX5Ym+iIN&hDtme!hY*URa!}V zoPUktHAPiR@HxKWOtNq$a&kZC_yIr+YU{#o}ci z^bC~6)Of3PO9 zuatOaADMr;YNfWr-IdFFp?sj?l}3N=D)!7EH@(2e3l=paeYGdWRtNu6Fa-Y@OLkZg zu;77&m=pPxy_OV0;-TutA-z-<|UPT9Px+%kj@> zhEn$t%9Ok!HTjo3{R9eWvg~N+%hL4>SMohQkWaf#cpYf;8Cf}Y-Q=)^yYS0*OWPf6 z)gsb@e7yu0#51{Iad+yofFujMZBi*m=FvmfCghTd)zvACUoI4)@eZY2JomxtHm$_| zkg^3*@#Hq6kKpfz=BRoGfywyWiRO~urM0Ry%@(YBJ}=QSWGVcMl;ao0FhD8AcPkIa zF_du7rvWTT`LXTa*dE*gx{&BvQNj(8w9_f~okovbMGs|dI@Vdw3WU;{jD;PitWAl> zHVz};@tGO)QGNmj$~a(%@I~EeIrY_Xw!aEKq~1nz?5ABvIPW5iLG+%u+s<*)OB#oq z+ew3io!u0Z?@c@vusVWoRJCI=oEzoP%Q;%`lfZEfO3n@C4aB@87M=byTI)$>((3+u zW8z+Wd|gQ7lL{TqynhKAPR)_w>hZ(0mt%Q8#rS4T9WjjjQ?YN;lpn@)htGCHDBe0; zX*P3H!CMe)D}t}R=?73s81dvu=*z?4HZp6`xya2H5LI+YLu}bk3v^up*S#ET7Mon{ z1nO3i;V=4xJd$XVHnJxSXUE5D%>=E;7i)X|A(6{WA(${eP0HQ=?&SY&onU8SZt68? zSg298axu#KEqWfZ?B=e$m+K*W1JyUYWfS(yLgUVvsP*yp3=Thsptmb_LJPo3)oBIYj)wZaN-z3x$SQR7;8CEa zvCYoI26HLXx{vEOfy>MJ8H8q!&x*&5uFDxxw><)&ZDuZVVcJ^fgW*fPl8-KN(CYf- z^9*DA$L6Bh(xDft{+i}&5AY(Kq*7x|V#ba*gl+j^<{NLJqlEmvMe`FcBROMs`G(?{ zL@@&O^Ln#bFaFWnZEyM;Sl#>*MMhYE&dnvIMifq)$gLl~3sVz|8svQYIc z1}~?);z#(09ytfAvP3aRJB@z}F>}}P)=Fior83jLuwG2u5w0LCBs$Umr6ppltE;b{ z{}P7z?H}^HV)F4Fu6t$o1Ly8`XV+k_MN9}Tid;RK)yi=qi6GUYMV%ZE9=C&L<{wiE zoV>BAU59hFN|7T;A#z}u`NpN2B1NTY6TdP}1)Uz116=Uh{S-qVQY{0!CF1TJR%?!G z?G$@LL<5g-fkAu0SnxG|T6O5& zPR`qxq2-)i|2_EN5PXBz&?EUv zk98IW^I}O;Mz}i1zcG85YccK$a6J+Bfnj0Qf430+a>Kwnm!f<*Ma!Cj=r@~~D1q^h zUvAq^Tk|DI7>d3@*;9?&@eA>Px7d;2QARfPqBQFHg*{WK(#!}J1F^nQYQbOjN`ziK zXWGUSf8WpZgw+_UxXx%NvH>_-_NKwC4Tj`ho$vzG zzm@Ix(xB<}A!f%$-{{3x(~U#VcNlL4%*hLhy}~!R4}XKJP9%6eJv}&HlM(&sPqOY- zVRTB6d&WD_;CZi()a=^-7SyQLt5*A4cX7BM4<8=ITILtm+n`~natwR{=kof&rILD> zieVW za8O%Bpp^$iMwxzQAh6bWG{f4^AH>-r>ucTLe|O9}zQ@r#{~ z5@GEu87jcl%lnr6+3);#urPQ>n$ep4lUx10oqi9u-R_u~mrM2!!~IvC)s&Y&k}Ln+ zT0aPcdvItN&2AuPRA;!2ubOq2(w0(;6vQl(0{Q>Dt)jw$J{!1xsKM z3t0TvbTa2#P$74*eZ6W~`AR-}*o*#}X=Be_3l*m#&u&?iHH^0Keqvh2E;-ZijCjuByNCjEzNzPyI!KtJro_03;X-=6VEXFQOH(mzsQI0${EeY#v__yeqEIZe! zqo|(*El3AmZ;4;eDX5(|oTx>CJJ@wcS7=aHqtfWt^~prV6}LMXw?+cL##WR2BQ~Wq ziLv?zfAS}`N=A7(64ZYMLpy$I_hzZQYWlITxhs~!-I}{XC@*PT7K+bAOzbiWWlD{; z>{5g^+l1|M>rd-U*)|tqP0jfij;$K+@&)C@t9@)x#;SM;pvrzTnbi#|`QiTQ%06K$ z{<7c~B91mchxJBLd-1Y`9ip4S-9Am9_DS|L1g)~NfW2)&C4HyhVggEa;bWwZKmCg> zJm;9#Z_)Y*Zq7Hu&bFuLskJYaUnGH+_rp4kZ{3weB@unq&UW%wO+G8G%CLdU7elZ1N4tivZK8T=S#q21o>_I%1zy4{r&KHE61$UQNHpgV| zts)q_5OBq-o4zTf1eu8%vlXaimRyGDG(^?tmEV$Gc<;^?R;(}0;jKOHc+h+UvCHoe zlye_pshpzkG7)I{=}P_v9U$>|tR?o>T)kVTFy;3Lj%&DDj&1mZ35G$_yk1lNpL{#2 zNCIi3{v#})#KcB|>1r3{{^gidGajm4X~OISfiHbCR{19H26)WiR( zTgFXAh_hieFHXcej^bx?dGq&Hk~VJ3+_Qr!{_%QBDu98AtK24`Or5M7@N~ucK7(h95LchG=o@~MujFiD)2CvL=FfY6IgBzpB#ks=O@qabo7-;) z$ear7AD7f8EFwG1Re!51&z01fcOxlyfy_Y}YLtd^bjMiO(U zUo%sz&NR>KtA7Dmu$0@lDfYWrb!2S?DResWEIAG27^rq96F9VgN^#{|J9Gg}CcN`< z!R}h2S3x(QMqLkul65Yw@=prN=5e6kzUjL|#4)<0cUs=?^BV!*(4P6NGWVV&QRsbW zScg~CVy0G5?=b%2Y*kzOU0;d9y#8$}a2cf7xcS__TxcSEZT1=;c_aCQ{BR;7QV}12 zo{M-#L~OYD28DL%zcEk*I(mG&#B#`6?Kw#f0>MB z0cFO0@k~dtEDtZf=u@Deq{v!J(ZEAdte?n&7pS#xv^~3UDZo}i1q|;W0(i2bPFmxq zB%X~$mNP}`$axK2v2a(txO>kvM)s6Xck~RJ4NSP&JWA|-`PlRm7}0?0okWfN8LtN0 zlbxHLF4##KdnGUDqnRhA zb|%u?JyabEoG>bFw%X%i#nTF%7<8nnQuR&#wISZyhT!szMN17#ihogeu%40V(<8Mj zvku{onumRo4{0{%4+{7v;)WkK9O`(@4z?nnQkk7NNfru?TUP{|+@1JMB zxNwWxFW9;3qx6Ng_p6%xZroeg)^ViR$(y3qDSU=a3(NFEEg$Vw?Id z+IZZPjQlmVsp^wMBFmUBMY1Rj_1tBxx{V==yn~C&pZ`ufd0c!nl7WRVV^VkFxD*v6 z;emfRFC_+-V*q24Z(@cN&k@-9jWbgNKq@-U#dK%T{u4ri2$QA`xmJ1V-@HEtPJSr< z9K**6%!lKln0)j^sB*lHyhHldurR9XL#$@)!&yIYmwNv(|IF;xYKjs1+q-ls2X#5u zcg!f*MI$8!3BdMB6U);CQlwcfF__0U`88qO#@W(Y+ID7%C|p?ydZu~lrPKUpnI@Z~ ztDt32Xs&u%;8gsXy9HfsN5Wvk%zQD}H*t$Jh*RBdZ-=e;K;4B?ZXt7wXsN+O0h5%1 zf6^ANlmXZ6PiT@Kh>(NjD_>9)kQkU!x<2@IbcspY&>v*b(bG2SD;SLF_9V)=`J)UQ z1m958#My2No<`)M7XjdJNIN!6sbWfX=KUj3Ytp+fCOHYC8DktzaT_w11ox!;cauqf z@}W_S!0ozmF~-1HC4pW$Zkxd;;;iY_w|fw&*8^TaVs~O_Y<@3m(l3t z{A^iMSl!!Ib)ZK;eM=%9TfO6=mcmW$unpDMFV;|^b)I}}i-8;sUGG;{Kf@r6v?$P& z?z=?-NY`AM)_J4^Y5l<(07-GD`T=iXh9!fr&dqHk?$9B(a+0J^3w4y+t^ z|7od0Ze-!(G?H~+fkOyQqhdZ?=|F>)jX--6q*AyX_SAOwhwkxCw_FW+*xPV>EO{3` zEs7$Z!Chh))M)rl4g!3H!%wtAJOc2FQHGk1atp;4Rd`4QZ!<=r6&k;z=a^u*_>SY# zeHi`zj#5tPW8te4jV3O3(PRwCryD{d$e$fM1*7+RG20~Z_u=I-wY&sInLZBHejyjr@0v17=h;u3m?5*Ba7C zGC|dv80YB6ZWEb;9oj_}LsN^q>CDH*k# zLYnHbTg2SobFlzP;_68>w%f>zKab(vjR_=^#x=!kzraFA#Y&47h!XoY0SyD{!YO z6)3!O@*5B_%-w|3>Gr6oVO>#mz|4nP0J9V~r51 zx{rC;l;`LC^(=Ae4#)8qZuH9+|?d~d}Zpbafq61TmF1ihZC<>ZaE#v z5)WgT7ztEBs&3eg;3DBBCe;;-33W!-xf%7x9)dc2kOhz#)pEYaX{=8sEYiO#WivV~ z=jB5FFRO+x@sLnP>LqO^*ENgsX7;jHk69L_aFAVFDY`u4D;VO@WAlh#r0m?NC zV$r4CVr`n-Z8v!wQCOrL@H8$%)kTSO zC+ItiHC3q_V9R>Tw4AX6jmIr{nvROY*3+e zug}>4#S?)2_2_az)iF#Gv)Qe~Sw*Gw`+J_UGBoM>wD5*d3mQNR=G>^JR4Ktp`mTY{ zQlpuGkLbl*{aZb`w3fd{XBU0h<#fa{`b2e{1WP1KhnJJbN^s}ys+a6@;W{dZM6%TM z&48;L339n;$OlgPEU+^E(j_r>JWlrUwU$p0;}zZ?EHi?9C(KPWyOB2`3!tz~_?@T^ z`3#3XMjDsq_sOj4(%fx%6mDyS&3{pFSF_8XGmtjZ0)s0tjo)rK>RY{IHwKc2sA)HeJ1Hf>(8JL&cpD<|CF=sbUS_*O!bLuf{PNVZt)Akn;uC^u!N* z9G_(Q=i3_}CtB%deArquX!;px#5>^;_O!p@<+RN1+A~YfzOCxJ7Qo&og!tYY^76bB zLmurrU=?(3hT36qq{xou_{K8NapM0TUcNy8TM=)7HsTyF7rybt{EwpZjA!$G+qkw` z)j?5;7Pa@@6s7ivy@gh&O_kWAMa`i0ialeN5}SXm7&Q~LViYA3P0d)v@427Xd6j(b z+}Cv;=W%=wpT`afICI--huWAa!9~^hzgc`V;`A4n$KtL5O&&r0!d{b0MI1$I5HtV3 z1YzGl^To)h_XAvSoE+xu`fRH59>_hMw>+P!Y7lre-mVpH*A>%Wm1_9wxKvKZzSYuy z%v?jHraJ0y>DRsIU(P-U$Z(g;2fJz2pgcBmZwLIYC6(*vk?ub2_Jo0cZf-X%+So=s zW%6PukjNbg_eqshf2*W@Tqc&ry%o%?)-S){_yAP8Hmqrioo4=EmF{Hq3DO@4v^b{2 zFN|{=@o%-a_kq*3ylV7g8;1C?~5aca-W#X%V~dFyZ?#!>Aex&=IrQs5>lHE(+KLMi!mX04JkJb`<3`^p2E81QFB zO^N{?5vjnq;Y&|(r%|vqaQi$oWVdKTMtp2iwrDDTXvBs4$83mqmsZTZswR=(e;)Th z7lF@Y&e=%+c1z`0`24r1ievS!IrN~G_`{~0Y1Q%gGc`%>0(t2<_M5mq&NQl(Iuk7~ zML%E$+?ICAeUL|MQpcG#-E`$z;^;rw;`GVV$EUl@+lmI2ePq8pIrC#{g12&tlX|? z;)sE10Pf7k{a)^8?_eqAo77IY{^n$}q>ulRJ+^KROdrllV6$JMvJLgFQKeRh940)e z@_&OobQ|BdWpBt-%)CXRXoD4rpX{XCrA`g?fcB7@ALXfdua@z|RnF^;Nk zldvBYeFF5c+Lh01gCz7?_nT5xQb%W5OIy8`BFg0YbI?`@5K!E8JE$_b3HTG0DMGn< zFM@FXzi@R7`&sR~m%Gz)Ubzx0e0kp2xC#5zk0SjByI-B31?5 z9a0F4RD9+z-ygC4ftyFa4D}xws~l!PzSGL)7W~?x#Hzw8@9m?ly}AMBXn+>L z%g9*B{Hc*+>6>lb&W5C}N^mg1O08-pX2Gwdjiy+%kK4W6O2b1fCoE^KYj&o?x__6Y+IocD*5LM=8${p^UY4-TTu zRBx)um%-PNE!1Yz6!k^Y#!=!cy_wFeWP7WZZBJnCqkkcc&c0ivOL~LO%7LddZ!(fD zb`>2rl`n*-#Wpd>k$N*h4X~JsWJ5X0ctJk-*Ku93Rzl)2!E;alP%$ogKS7UuU z$(h|YI2e=m?i{b@IeNRaWOv~@0~j-p*MPg6@giQYdhWVRs7oTvftF)9ZQCkmIAL`0 zF(0Q3xt0oB}A{>S}>izY~z6Kb+B?$&?8s)@vmV9E6l< z4Za>wY$C}nIs5;(C1~I2*SY>Cz4;$fg*K}dcoeffj3(HY`#~lmH z9OnBU(ffPO9Dj`y@|8k83YW7%e@^$RAJW@*QHpOa?IJ&R-dZLRE8$gXj=E;*~fQ?Tjy$&W^zD#=S=>e$|DoEr`i`591e)GG~U;;bu|mM;6HLVBq4EuuEl8k5sw7lNW$5L-AC#1S(10w_JZr<#E(k9O@HwhK^Ow zaEn}8Xnx+ZG^4F^<1w+el$U#K*f$VJIV5U0)1^HCQ|0+@85h{PaNV?63-epcfuAc- z8Zi=IXs`L9ZOn8Na}db}%;Z&_aNbe2b=oKFhn`~*JB&SJ}Y7Eb< zKZr-p?tX}XVoh%f*w3cAMF!#yO0tk9uY`YntIZnbm|v;RZjXx;2*`QnAs&~|ML`jv zva4DiT+)#|zt$J^YuRr7D>B`<#A|>P#rSWvI=y~V^)oHvYqY^eZ8Hho;Z6f?-)fMX z5-P{E7;hf~t-s5Z|B;<5%n@`lB+5I@I8`IeOQRnm?T=VH|0CncyCt11`aEEUBQ-W4 zGYdEAp@GFHOFi!W&h`*~MT#}%MaR@mGw8<#W6m@(ZEG7wqT=iGh-r*-ZK0sGej;LW zo3mXZhkgrRCHRDKBJfS=BMeJQZ%we8^I5#cEF5rk99)d(X9m7q1)Q%sK z0xw&lnGR>4j_iW2fJ#p#uNu2BwcK;}N(X9JAxIj?hYf{Q<&5B)W`Crcg1{$8Y*YLG?Y7ubxVNvvrj9qp+j(k_JNQcKvBezEvr3k=>;!rSTjRus z=ertMAxyhp*L5JGrX`SS`S+jg)wAxJv7-I<(_I2?Kv zE?KU-mj*IXTJ<=au@fx6I~7X*C24uRzp;{|-n#nKlzGy(8rTiILQo#F#mOn2YK$hY zoDh#OLZxWPb0j=Zg?i1%a@gweb+vL(6HY~#zEd-pImyb<(zcq3#o_jFs%+x)m3yiD z@wmm!is)wn^K^3KjQQgmw{?N|Ip#~9XTLC4VH)JSeK258JPSw5mK@;}B8F9FBu$iD@s{^>W!qoDHUe>)X2IxBa6v~2(s^T^XO z$sCIaT?=ZCelM;HiMT|zM-`t3C`5fi*Fth)q zw;9q$7Fq(*bfNY@Ifo4G^`B3X3R_f&R_Ne2)6+s^>E~G58?>02z1#B@oP((m5_v&g1LMr9A@Dj*~sy z)EBKpbI!vYE?sF9af`eYFFk9>6%2>Oc`4)CvBcUqUA8&kMCt=^_yC;`K~;5~jo~sh znU^;NoyVcAkew~#Sy+P=E4^+1|E;A zru_8M?+a7FaVuEfW%Tl3PYmy$>Y9q&f7)dPXY9Y8^|P}Ch(H=T=v2Kr^e&VVRi*7t zRI@(u(PM>o84losVn?|5QmNZ<(|MeT`TwC<1Ad|B@Dc|j5?`1sbi*T{Ws*EbpLI=Y zV*eZj0^L>AdNqKfK*4*o!Wk1!xL32_STtQ7ak0ybK*K0Oq1+tr z@qM)VhWB?b;1_)%g0QZPti+$R?Wav7o3DTc^WsXmT8-=COC4b?YL@OrmGD>DNglla zmQ=?256LggqKSLgq;N>}Tn=a(O6h+JB4-p!f2$&(Bt@aq7Sih$2BhSW)hV(;Lf3@w zqp1W@y^E}!k9?!ATaWM~ov+qcNN-0Pt{5D=rRQkhTfChj_heqL4g-&s$X44b3cFtO(nCAH2&$OyQg5@D zqGtq!i^Wtj*t29!pJN_<@$}Pe!&)xLut?TPK$b*aEwb$u>Q{CIJkXH)ycfHrvcR{LF@ge(H;5#4rzv*S_bBa7h zGsRH6Zm!LIcaGB!fc?~4AO1ABh_=Jc{lt_x6<_!FeMr%JhH5YBVo}<9ZCrJr>3jZf z2iW+;buzw?0~sD)FF_6-Cwd0UOHr65VU(Hue?q)20Qzu3-y6Yg;oK&JfV20zq!X{+ zLBX6jY=8Bd9VoMIQ&awhPCJxkO;{sP0gXp(4&lWK262PD`L(rA#g6bzQV_1plk_}+ zipyTRkn~->>YFi%Ar=leL(5t%F?<@5IPv%p5F5&&pbRwkEUXkG_)f+lEMQ?*&ConW zR``s1z5z)aNbDS+OxuUQA)TO^v?}LdwX$;KPhDKCZF}W0&nVo0qTQ9#MaA}MFek?F zF?nv|IwlSNrbF!XWL}fo2x8Z>8uQm4Jq_CZq+|2zaK>qJcDgFs_N&(~@3xutN}(3^ z=zQr(++YE5dC@lMil0$Uf6T6EHTU8_vf9!2!)rX*3suC)(6BZ`kjeucp{8M&*5&RK zc{@bwV`9nE4Eij`#+s3jmDrDhuY9-n3dKtfLzQiAd9?dQ?V8I=7M+u1$AoP!JYGrO zhq=B#U4RF4MQ1-JC9z8mncPx;oQg$nP&0heMCn)>IkE>Q8%( z*_{J3p8A%VgaCLfi7eo|H8P(1!gr(!4yfIIur}j1bpmmHjfy|I9e*Rs6Q${ro{5)^ zl{gI>G}lr2r>CK_ZNEXV6Gsz9zIvKjJt<0cFYi3v1T6`RSN%wTG*-O!5&-8*10c+5 zUe5qHk?p9=Hr)TM_ zT-+;D&$BBqS>CxPG{s7)ON|OG`TIPE&}|8?+p30AwpRAu_9`C4lNf_U-T2>C ztLRDJTE8brLf>8Lw%`?hjk#XBV`=?J?Ec`IE>@R#giF>w37Yo`h`00EIk*3q3W)IY zm7BZ&TvI>68qQz1uV&np_^d1X?p@^~E~D`+w?oZ~?i~f%*W=ntGDT}Rg#`6f%5MXsW}%+m!<+Q+Y;@~ko^W97aE*}a#o^z^W@5%c_B@kaO= zZ2a$QQy`S{yp_rMe{P?&>R7gag}qustF{Lj#dz-pghwjd3{RD~$k=B+l|WBdAveG* z6^`Owp*^nREsg3(Kp@ydh3lTF-c0-k{)gB78vMzV*1sCWgHC-<3F z7$+im3s3tb0k6l%OI=~n2IELlEy0^Z18X2{Jr;P5L!|5_uvUZUH}-R!S0C)sXiF9p z@$Us*<|pR7!^N&mSJl=0CD5jG)hX~&$8kuo-tV{DF)<0EcwqrG`ukCj!9q5Fs&2!8 z{lP|(DY!#E1>3v!RL0$+i~>x;}4wg*Am-R|(*E8lv*Zk2E#mr*rWW@`fS zr#4FC`LmMBj=rC27_gm2$G#OZr%-&E{%V8oMffdbB#Jo;Va*IH-~$Y~RE3}>%LYai zP~xg9ZobA{7c2?LqjnW_R`)J;+wF~WENkwJ(pn9TfonKL0hY0f3$J+$}_QT6TGu#j#QmEW>52jE~ ztGOYe^ekX~QBIJzCdlMpgl~f!nchDn>{IVz#?czq%;0in+IR{ zD;X5>Rs0|^{uKVjQ}kbZ!+-I%IF@Vu$5=jjyO-v|1M3V%-tt=yoPYIeCm zRV5NJ+N7LH;nsQ`hB(jjqccK4b)u3QwS-{Ox%onCNF!eB;!~g*_oL0n;nHB|4&buV zJ4|~1IIr=tqkXH44S$iQpbxGsr4M_B$Db!_X<)CkF4LAZhP~wmHbGl-zqzKzWIWD5Q!MF zh0dI+zI@iWfvw#`lu2|<8o6yM+)o9%E}+U>+MkoXmNn>RaiS|2|B5hk@2Hc)LFtg( zZ-g?yZWZ8$yUIsoYT(aGS!IiA z3sWexD)eqLQR1Y9Lpl?%431aOraB%W90%dn7QSSLw_{gzNmJDWz|-aNk&qUI_{Tt4 zKitxoDt1hRN6u6fcl7^VFDTJR+CRisIHnKEdj2iw2=v%x02B=?O_~geEhd_~*Lf_5 zFRtK(498NrAL)%Fot{;903=4AzlJV_Y5iw`=m7VgV-#W?J0CbA@=HGKXsiw<^FM-C z1LOER8|PvHG^dYV^+Lvm$e%4X`(W|1)(hAsqi4=Q`uI)sVT5L<1|;+&m$@Zt7x7BP zh%lDuAPlz2JN~00?5A>es`L2Q5iyy31&!Iian*tBJe~1RP`{rl+^O6*-$1EYxep0i z7iHe1zUK3Sor=b`C~nF^XCWa3;nir% zsoY^Tps7PcDWlJ(W=>JYF4N zO~G1ZbE8mG+@k5Si;U~Mqd&XttaES@qAl&7X5)V;Qp#w6AB8Qt=VtlY+*Aiu#4B#_ zNm~RHvW;>Q**TMlWweMN4!Q6PcQ+DR_J)mR8#;}O9yCrE zjc_S?5qP`w)0(7q_GGViG^6U*oPx`d6kcTDt8|fEH3>pmj)|DSsWTC}hdn&L@t9oi z@UMratc09Jw48LM;OM84`mYD`5U}dMzFk25c7m>x71Jy}a znaN4DWooR#eXQkr4^D^cQSfgf0{Ed8hepdfPzpD(Jx7I3KzQ5ef9dXje$9A$K7!?= z{>?m_m)k4JaBjDAlew<^3z=5!txrB3b+2qodM^qO2BgY7;Cx^$=okvMMPfi>v@EoJ{HQ4@w;(c};zCkfo zYT((9|gyKo97IF6edzid5_twxV}e))fByWI}N z>sQ`)iUeC)L6GUo$Y26a>6;M@GO2|>-$QIvgk#TL8K;b5rr^J6_eT|rV`J5`g8d4e zbj0(%_5tSEvn8?F^O@=nRnFX4cN>v5k+r;jWw2>89nB%$lidT~H093V`Fj*{FMCJbs(Ho# zytufp)(Ij{6R*|Gv%Bqn`)646NSvIo3i7g**`)7YJF(u({(XpVgTRK!i%Sw%PLkPG z#S)`ZNM54dNqaPJ%{MX!)OF+faoJUhcCtPXfgw4!enXmN-ah}K+AmWpff?VaT1Bpy zp4-lK(_5}ZTnm!_+hOLRWa;g{Dn^;4C(>@B`|>~n6#*AvZF9aM;f{0Un6368 zV9XBR3`K#H>r}BHLRi&z_06)^9ug)KocQXxX zA6N{g7guR9c`#q(kkwdt7dY9KSyyJ0xa_~}<)BTb9;u0^3F^pj_@)ZE-+Ny3GkQ(k zpI0U60+t1j6+FR^J8~R3pG1n+adUcBvdqG2OklsS`or}<5YCvqm>He}?6>8R28>hX(GV%auN(Cn}u36R6!o*iyl<9x;(%D_vDvMNDJ?Yq^Xr;Ftmk$9YFf=JQN zKgpFVw6`8_b>0rIflims!`bH*JYOMLT9&DVJYKx>wFxmjv)#H2<27>Jp7Qt;>Rt}q z@VM&yE1LTIq+c-}zm*r)0T#1Bo(E<4(RGR>B}dUSBq%<*VS z<5w%;Dhsu~2cu5nJ(g^_(&&=opK;dNo&x5F7hU|tFJtE3bBMEgiJl*ibb4oShR>L%nu^zUz5@CtcMe!}7LpibL9E0D(NZ*~G zr*J#xq$)!l=n$Bg1n49EEaT5CyM59#RZ5_069%5e8hS&HaJH<=vWmNdp|YtDBfSC) zd6^O9Jx;Z{8f!r$`{js>G0KVc;Sk>+j@F&Vk&!@iBWn{#63BG?g}f(#3LIyseO@ev zo4vwB9c;AIX5Sj`xq{AtUkx&;6Lck?J(ep!Tga@O$NOJDt3FV8m1mR}bTk~YoB!$! zCV3>Z-!N}PWmm)h1FG^#t+ZQ? zt!-h1^8VgU&l-GYZXV*%PND`WdG)e186v<2t?Nr?Vf%<(8|oLO#-CP_*KP*jbcy)C z@o2N}TYH861b>wpE*3S1M^?mjLA3tGT;R79XO{uuz4d=xoG}GO_?zJ73Y6U8e3)$Y z{7*E1F1cLe{)-!&8KLsn1H8n5#k;aWAi^k}?vyPsN7MDR2F4}>uL#N&|9 z@jauQ0wv8(cm|UI(b@BV?(0lY1*a{_0h;!2Ppj%9*1R5)*zeeKb}3TcS(2ReJ37P^T5DAi z%OrFZbwh#d@?(wYMbldIO)9Mnp6^d;X>FRhv%!GBBM zYjlxH_~QD4qw5RzTu46y*Z-_6oX&y5mT=JdpY>wUL)vm=@N5x=EJ%n>ZcE9c@(<`crBl*um*8 z_XXPkKNoI3cahPJY&ci}F^Fg}%8xI4T-W#b5~sRYrniprjFnhk`5rhospbH}PF-$DwVE zU_bw;Qpxo?Qs^3ZlTlTPdel-=EhuRkKlt^+KIATxHC>adE6CcCS!evc$-T`Xd%FI< zE|&0KzQ4s5@Maaz-o)&))t)YJ0QiX)yjpJhsFvW5c5;LjGi=pED0fx?whH@Vs|+rR zQ}mtDj4QD%O_*CJ9huKbavN+GVHu{7-;j<7GdlB)sL71d2@7 zf~cD1)`Dzj%oTH{lI_$qE*prYh;fq)cw^|!-LV9r%B)mj$GoSfo*S2KxtrrDf2-R) zT@`db>56|6ib>xOw!|@igrJDE1<#E0ucevq^^AmmMH_}6CtgnNlVbd!yG$UXc-Y1FNakVxcb}%8*~Kk zbSkx#+#gl;xsyCcW2;*?^)ZVsn<_|7>P@$8y?eWoPLr`yL(AXuI)v`wj9Bj~L;mb{ z55_q%K>?3MoEF|f;&|j^?^t-EAT#Ry=;itGj8jQFTAP-^$md!@Z&RjMEzp;?N-xs|T{hSr@E_B`Qfa7Fr*7rE|~W zb?F~z+J1f6ZyPQ>+PlcAzoVeP*Hzy~J5ld`V`((y7vR~~wL<>XlMTCe(dVVx@JMEdm4a6p3&71z9+vVP-Ucu1W(ggcE0@onLz_ey3Hlo2c#iMqpix=iOgl1szG z?*kVyT_`82F#%QJ5%1Q!4+0&Vx1c3_3LiT_e`}v>n()wHHStG88UTw3F?tw%_27OK zw*5&oY)5)I1L551KdxT(h~`0YF<8x^zpuz+s0kUhn+Vx-|AXqs+Wkd{of9ga>Pk*B z3psDGu9pno7+tJo~@4>IbrKO@#(-szs{^Mefdu+RVB^*RGSSt6S8}+#riP!o-HU#t0ni<(~+4~^! zxAqgbLw0m)SGYZ_3k>QvI0z~MsnoOjjpC-0)jbgF@X_0qzc;6M+-3DM&9ir2ujC&u zykDLVww)2#@k&{8KYY)7c17xXt>gSV0lL)2`c$5TeqSe;B?%!u7Hq|!aOSJX8zZ!*vf6De&79im)C+O-?$6$Tk(qYEyc~x zs@$g5?Ck*J2#~pMYgJKKn_MOzZ6#w*04(OY8bualQ2Zv2V zhX%m8ze!R^FE&N^<(OzX^X#pyY0y~JBZtZm5B;(}Y6+M-TFq)dIbYxNV;Pzst?Zip+Elgd!}D9jWPaswH&EA*&W@DKfw%` z62$SxOWl&3$47;JRzxgaEK#y?_9ts@OPcTw@z*V+Uxa;8mjF9IC2fyA8#=;z799^V z%HBD%D~3Z1jbp5Oh2nXR;!X_o^t}<5Pd*SY3HJkERlh4tOMz_VPfyz=IZ~hCwyKmF z%h6m7EA2Kr8CfKSQXRddO>>6ni$KIXy!g(%_^L$L_U^QiICw7qjy`yzE$4izjwX|- zc?_w@;ZRvf63fQMVtK8ydh8>*1pOC-=palHNs)$qEsu5;n`(5jZa*0fKE*&4iDt~* zzew{ePgnRfuyn&gY6DjiJFFGXR2A+4qe2-M4x(7_Dq;>$g7%54iXYdR_q-N5)h##1 zHPYHLTj1diN9CTCb4kkO@Jd@CTOO{uWDGd_|H+x?gpSK@f^rlm;c zRE2^`rn-otOo45fEa`lq=fL6Wo8pj@*;~KEMeF9X&lNfP%gGmkl6LMe(pKjVsjTH; z+Gj?uYu}n2kP)!0Rrz}`l>JDoxSe^cKk^vMmnhWOt=zL)Uv+%(IeWm@ah9XIx0gjV z!^Pr4G7YW8woJdq+S}%rs<-jL8N>K^^>|84gKS>2q zJct0d-8`7QtTUq}K+Rzl*7p2JJm8pa z(?8J^ncHOGyI<^6xbta=|NhS?Sxd{{BV4h8YuZY0mUw2sH)h|0!%g|U#@QXEh`8f@ zd^$YOaFC8<@h;T9Blfyt)c>dWr?~+6fA&#%qaErUGzc#rzrbKpQ(uSn3g7sjUrN&0 zIz#=;2##rGmGa_nmRlYz4)=UBO}3y6oq~NI&RWbrc8KEb^PBMYO`7@_CNQq!-*)-k z{7p7c3NNHrjhEsw*iYs6Gv7S%h1S64c-nY&ce%ZDG{4(#SGB^0EWh zj@HpVi_d5{?4Mh0lz_9ulw;zRnas@(?V}V5K}C2md`!Oney}V10Ud<#Z}v)g_94V{ zo&fRzJ<}9y{p(`RKj52s38A|)`?Y_stV%5JiO(%$cyE(!rMxXmITPds^Voqx`VYJ9 zU(D6TMGa?0se>Hj@4(ZFsowJr;WTU*t#y+2kfS8XL zd{W(v@Y-H==JG5!S!zUh0d%<|KnH^eugHxpMXieV_m!miE?Wh=4l~=_dvQJ^s~2FM zVLDjo0Ln{qQV#|z0WYWu7db7&{R1@%x(9QaxLFo*v-c_Jpe`TD{hwfj?5owSd6AXY-;?hu%@h z-Kt;sw)$C&&iAKHbU!h2I#L%Fc{H#e=>Vd}<96l#xu4Ag*%!Zp>pe6dl=DBVwDWVr zk(v+6x}@D znw-x)mX3k8N4i5k+c5&ptviNf>xzp!gcE&DRx1Nvy=jeiK4Y!QfpYOz%-QL8P1PTcdEe^7G`&y>xmc3!M zM{x=i&?SicUS*waMNp(t>uoerqbQ|_&E#OKu7LUz6&%9h_&0l(J3=E;q;nXOLBH%* za_iw*76FMHh+_krdFC-`Ha6QYadtffbDwOC&oFYRB@Zk&72cR&_e2|D+(rzQlt5)9 zp7ieb=Q|7zw2Ha0i$yERx;N2b%5V>@Ig!;1ehvds=%*cKP=Q*GWd(8s$uz!Ly;plS z*U+moZv4BN#;#+QsgQrfmJ^fW%Pxv9DcIM!_v_o+);uk*k-F#kGx;J0b*{gmrdBZL zhmE4}ox97{-ev!hSu!qyf4_dhNTlJw$$@=8dk@bCE_&^$<1Zx?NB??f@Mhru5d`kG z`O*+^F5%?45Bc*QAxOlT7#_+=IsV=h$e56(r2Lbw)I?~p^7E>pNjbY4%ML{mA=4%% zPTo#>?S;M(T}EL#fgUcn&;^+GVCchPX~Vsmr}%L(_U?B<+0lI!oJf(S0}Feoy1;tW z?CcvcD`_UJssG44 zRlqN4;XlX!f}Fe8OryZXS`^IRv9g-K^DK*}H`NOsml-!IwQ2k>#7}m<>{qJ?^9<9p zga#4bRiaS%JjP(i@b4aUEo($c`tIPpwzcRZHZKj+7KXGh?o$^EEL!DPT81^B1GGCv z14g^6x?K;#*f8@4huv4C1=FO?@d2I{6vDyFNDHByV`H3Tv7MTe!^};oRn9l>l~vuu zHWeQx8dG3ml3|kZ;kfbg3M%eXYxZNrsviU(%Z^8UV}IjE8SHL^Utip{)F+I=;?jE~ z7wX;(!(FSrY?_*I;eJ2oXfKi&zS;qvn~y7Cl^I>(uwv1^+Mn4s&3OYCPe!U(3~ICk z*4>&=AUxFNDfY=!G}_4GB%H3AK3)iUv6)&GZ@_s2pZ-RWulrv2k(4Z*geXfg<-LS1sJ+C26=E*JbwKpY zVKRQe?(H$lTk%wj-=wn4&btc?R|mwpR2yRgs($qT@_;D*w?{F`DkkK8$D(bdK1VXw zm#bn#*`plWw>x6-#2gde+;!zOFgY>DP$IyJNI|)Cx_-XfZUW}_chU>SBx;(bsTR@Y z+-hXefSBHgSSMTf&^PuPCd_iPmTn*=crRjll-t&jQ3{8Y64`-uZ1h!txW-Imj*z$G`Z|A$@oVz9#{VKMr|OO-Y>bz* z8fG#pES&x$^Vo_kY`gPD?#)n{iXpE#I;Na*IPJ^Rr??~_{~b?aG!Ou7Ab^BDRg{+A zMZ)bV9`R*qW2tmU^Wv(nh0sp_i_e*NjFZ_RHYC`pp)xEu*86X$tyadR4GYPPWZ#AsnAeKvV{3YQ zn=%&%)1q|(OZq2otXD3ONNbMzP7p&{%J>p@ zQ^De?h6u`u8X3n2b_2yC7e@tMk!!7KAHqmrD_t=>i8A9^%|132nfQC+Mk`8TWMLlr z+oG^t(3k!{ z(b8p`>4r2jN;zaMmEU{^pFOAO#vRr~k>$#LPq28+pyh?07PAX=?6~9$tMwT>*uJZj z8ul}Np<}!Z)8@4G!{wE8=37*vxDwA*IX|~=#Ij&`I{ai)V>a2&)XVG1hFG`$r_&(!a5_UZFba_EK&z|i5 z0(1C5NsUW~#Ui1^|ItU z;3GS?m><*O)b2n&E<3fVCbRt8#TP*BTSd|6cwr5p|B->J{?uUn!thQk1}pNq|C-ip z$gMR98g&P6n_jBBB;Ab_{?+TjtMU}79LKC}H+lv-2j)B&1*8At1-#e6!+F3&HN3Lj zHk0jS|6_i3%?7M9UCR1d%hPFmH0OVQYwS1hFxj5tG~K zLv7|mJTk2$wj|7PY+1=(b1)~`nu**bgGek1dN(>~Dk@!HbNv3-HCx0T2}(JA={W3O z$dYE8_s=m6LHJBb)X<1|BMwWo8h}J@R?G-MHE_}$FC!U+UwMy#GzN0$%2)Iw8(DOQKQrZg3O!U2k)lUeWN_7F-p?tb z?kmaY_I$6*DnN=cu2*jbnv?Zyo@w+b9n;S(LEYaQ@+cKPE%Tp?)w}2cc%*d*Oviv& zT-L8^=(LAVbvT7_s%ia=yDLw4DVX!9zBRX?J8+i{XlrZ>&rILde`N9tF~DvUIby;g z5c_Icwfg2gP4$ePAm}Y?@!zXmdg~4U8>GEro?boXqSWChKi`ox*(w|la9&f7} zpx{A$cl?!(ox)mOg-!yk+?OrVC9#B8aA%+l=5*F`*1(cWJg_dhnBezU^-N02VI9ex z#YE|3DMNwl_U~_y4NeYvA*&w9)+vSs+)5)f^>_ED|0K7JY4W{!Ii-hev{GMXyJ5=K z7&`r$co%b5ZNXtk(x%+uT;x$P)jzT))7f2Y=u6p)z&Z}G-9caecTaNxK+gst<*ATh zf1ozztIjq&ze8`Gs6C)-qsL*L3X*zNHC?Nk3GwyH7=Ci;N--FqU2hA|A7kh-Sn#om zG>SUu@5|M4JCMEOzNbLOF_fC-Q&+{JDVaS+1a_w(lX`=U^S?=#Q@Ivs$4iYR?u~zd z%hi?dCuKp-Jz3VpvE8YJIWc^TzSIGtca~nXWu+HLd4Uz)zu|Zlzha7#x?0iDS1>er z8sh7M!FCVAZ}y|mI&!EAj>__O1_*VPbj1*Ugj|)2m=Sk$MesGy9b+1np5CjC6913v zbEX}Ar@VA9?-&N=&5dJ?oGKG{_WeY)yehhTo-8QukNh+uzmHP>Tb3;m^YDNU;o6rC z_)L-2)hr`(4KMASkDw+=NE6=f*RTJ8fe-qs((nF9=I^6)gavND$=~Q|V9rk^-L}qm z8<o0a`0WqDNozf71u)043EN-iQr;IF zrr&e$++h%U-V(jp5&z~l?kL$1h%u^Qpe}c(D;bpJNh-hdXs`@A9+MAQmL8PWlgwZ9 zQ)+h%)sdQts%g9>#$HEn;^Z-w_SLcCnUy>s?>|C|to2km<|&&sT2IT?!=*Cv?kKKg z0h}Q&RQ01Ji4E{>U+qnQZAzwli$5i(tUO?=~1GEV9C*b z)7?ru-zwSZKWvV2tdLNv842&Z$OwB2qJwnHGRdC<{PMVjlnCyH)uli6A=1wVq3dJN z)OM_@??-u^U0sQ1=~Olj8?7V-OLX?+X%Ms(Z{!eCH^K= zb_0~RH|Wf2yAMN|wQI%M5nWNBiZ=`R-dF$H+q|gVF9;!@A>4SM=M=j#l_#i%D^V@e z4b9N5tR8-DX7`@HE``rIyXn#Ext(mH2F98zUzNF1N*Ox03C%}~%ITVcLe#}Lg}(AT z;x*%9&YqPMwQvaKL?EF7TUVqQcC6)q&xNWWIGX#K;sT9_xZ)BItX1~R=dX*`kGpb| zi~gn>#c1mAYaj>zBcqWl{ww_ruN#T(u24;J|L2P;K3m8lvA3=XcX0UzDPFc(N_uj( zYB-7K{%VrMoh-_ug*1EWz!wtu!HZl2{OVXisfBj`cZGx@ywpT+*lpA0srV2lB#BFt zPisi2L9+NeK0&0yyJFPDVpU0cN)j%sSIx!y_*G9h^hes)Y93AOfnrNoUq4R6@Bael z0T}-35tRCpu)h&l`BtoiI-%7Mg&U;1E7Q|mAt-dZ(U)EU82*~c?fmI_usVuFk4;M= zH4)8c%NgfH9Z%}7`WXKJPX7Q*N2v)nJln_ZTIUX|WzmFslPWTN8)*)3>jXNx$j@sK zBXRwC?)>!(WhGdV&fT@g*N*xMgd;Ah>`T84Ws}SJ)b$O~jN>ZCPAk~gPOBCK*u5~8 zHk7`3eN9X*71WHK*4EaZInYcbOQkbxFPxS1`)jZC{VtxxleekFORjO>TjO=7)t^_z zAcYbD#~JOZ>hFPx3_#`^X;OKiL{(!5-UmK;l6yk>yy&zbo$RvtV^dmsYZSm=dRs( z^r!tpE}ul{^uQR8KcAkw`ptD?adr=caMp;?l!84-j^cJFKRsy0>Jyr>+veuH>%P4Q zP7~Qh`5CK{~DpW!oYBq z@#>vx*Y1el<+v;U|Mzjx4Pa)tMExIhGy(uxW*RzXnu{I)=l=%we`EW94;lb1-6aNU zk-{yiNJ~RUM|=4aEp@~IS7>ON0sKHZmd667&wZnBgHpc!eNy-R*Kgt_K{IFBJASE` z-#n#0$ol`&-v4R%e_gRM|9^M$e{KUW<^b2JP17>dF#|LJ_Esp2I%bpgmaUBjY&N39;|?CzO2qn$=IylC)(Hz|MO*i@ktTRpJ> zS85gRLwbojks1Bj?QsU8>y2(+8aJ==^s@UFQaCtvcVjGfVX>Ox#d$aHY*ADfCh;QdrQ8yXXu9E96nHR7u)Bz5qnzorR{voD_BH6VUwC zQC?%(_3$vHwq1M0IvPVCRwY%ywiUlB_VU!ZZK*CZ+zL{MGC52$j^viSs!SSM@Idq)m00f?OETGiyzGP{7+@C8=m$4Zfd;;T$4#qiph88-r zq-=hZMqyxO4ExSZMzSC9n$0965Grb-nKXNqZcU@no%LplUHbH$_Z}4*lG8WN>!7~L zeqrCLr?)?vIzK63ui$EBwIqGUJH&Mk?XSmQ2u=h#z+p#{<(MV7)p5f>cx-`G*m9mF9 z9EhBmU0o8tA6Qzy^JFXx-i3iCTyhmwRR_LZQn`kDjREaOW3%H>gOKN%jpEG04H3{| z-}IAax5bC9A5}b>vV@5-?QtkZ-qiCvuWMzu;zbuH<}>!f_1hJ#IdtO(#_|%^VS`Qx z!SII2IvVa?6*+N_zzvElyQo~I5#Rk_evbX$atWTilNDri7i-_QaOVm8wUNipw-ed} z-kaC-=+$p38Kb*+^M0g`2tNaV`>ZuLYDSW>UQ%ccd>sv6fWLxb6K`3MKRl(XScHiB z`l|MeS7`2&Wi#g^Jpm@VHd$>icisZC-!68qkdD3f@tCgM$YY262h}Zy-J&~*0`}o0 z@|OfURfN2>nn>b>-h9^VANBucJ_=n@edgnbkNRT-H>#W+;nXvl4!-~>4VTu(n>EF| zO*sS#E(}?9P4~a$sP~Z zatlJf;hP9KCuyp|E&$y5VJFM(P4CT$Q}eTbOO*sXZ2~&urYLz$ns6pbuc$nOFyF9F zqs70_i0sDKRTdWj7LgS`Brasp8T4Ccvw%$~EM4pF=^sItN5w|1TaEtS3ex0BGMZUG#vQH z@oE~q$%ZbBv{O}Wl$kpP)|{5?W;ZlAfP&+Q>cTFWoXx=b^20&1?A*yNY{GH(!U{%c z%v`dp_IS83>Z)3ut=*vYszpTTxu2C#^h|<7WQN1%x~E#Fo@dK4_$R{sX%7jz)lo^% zCdksq5ujt<3Q*t9(-?gu%gow>(i&ejczG1%<6mN+;@U45hW5MwAb#Ha4eQ%V(G2Aw zZqV*iI2{skl*!mvOfW3lOkZ1KZn|Dbb+Ri5t-N1o`(ybde#YIahWEo6}e^PJ12&8d1w6GHCJA=(Q>?2}%e zwq5OE*qmNR=gMX+0Nz2)BdON&vF8}CjO>oOLQecBzbLMoAk4=-s{QiK;o0P>gW8m5 zi~QNtW#QC@PMTD{T$8$dW@&c@mP}_FA%Bgm)Tc-8u zEBJcMl@WNYljG3wD`n$au3dI(Tv$GO)GxEXi9*I!Z05mU0{3eIDQ9kXQe(;=epz<- z>sXJ>*md~Tp_rVrK6T2_PN-I0q<5LSwvbw7iZH1@DQX^tF0?MSXQp9W4u8BgTT;A} zI~x=)niz`^s=$S(&ph|>zHhi2&!){K1GMgKTfzj`$|i6IjYW$qpKO52(B3XDEs88& z7+mH6|M#t0)i+V|&AXFtt?z_aO3!^Q3L(p;mwYU^jiZVm`AQ^bRZ1tjDDY0*E^Q7b zw`e3?(NG53eafols+?%Iz5v(|>xdcE|2aCUf4;`nTsRpzqNY^qZv4AfU^EjA+dFZC z^zXeShhkRQ@CRFq^!XI_@S8Y;!qo@Or_aCs#h$FA6*eAK$d6%Yq&9LN{`#JyoRfM1=-cYg zhE5`jaJRfxx)i$9y8M$oQWt7GkGi9z3c|7foF9Y*FXo-~ovyPvI%SW?$h)@qpkZED znN^@-kh>yX(9}VKQ^bU`PN$6%RnP5*36n6o8vU;tXVo=c!n6ScXGVq2o)L}cB!8Zi z4@Z(#nH9rt^*r}7QLq&suMgCT^h%89Z9vW2=c%CNU}h%iJo%H~?9V2-OGaVnE@mN~ zPW5Z#?jEP{^9Fa5XwkkVQ)m>jGs>&r0`S*nKtPvexHpRk?s_H9fsVT#7p#%H@2=BV zfJG=bg#RovHb~dgRv=ygLI=I{%7SfQW-FET@H55-k?f9ZHWYc6QD#nWrx*@gwPMXH z)WW?DqZ(A#^e+GoD?dz_chj#W8&}+l&PQ5p_mopxCu zWAhS7qgtJe0FTao+hS*Mq}JJ3>)|Nq?J>-{ZYQT__fI5xOlc8r+`APiVrGhLZ=A0< zNk83C{I2XA7G_w6tCOI}D8{sN4n}N~q7Yl-f?@!jkN>?TAliI|0j&*EA7~f~c$Q17ose?^#x|^XCD6Zf6X-Q*GVOp5Y1h2miyfS_op_Ii?_hy`Du0kW? z3nBxAR7t`p}F7tr($(s*dqMffJ88YGiYF|^UL)l*v3IW=XH-i zh7JMevVM7`X;Pb#L6XNCN1n1AN4=dXTyaEFO#gQCVoM1iVV+;OV$keHmOaNn+aVU&7vbO?)_#Aw}4SlG)U zje3^c`&j3y?FG(TuT5hpqGhw)I5_$9^a9`%%+(dT#A#ZMUANxZ`Qgc?N$_qATE@H= zQ7Ae-!U!r&^v{?>P4_B446x~GzaEz7RiN@riy+xP z1*>y5``Xs&4ifJX3?^(my!9MQuSpQDig?b26ic{S2y5M+--2HNHb4t&()cyk=xA|* z>*A;}=e>ax4Fw;1rw^;&F)s)FfGtnN*jVcrr{PV_fAy8vJ` zU31gkY=sQ>7W_--@`qPcXE>cpZ&6;|mx=id+O3`Krq(`7T%$}7PgnEcJcFFGHE5|c-t>5S8! z?QtO;30}vqxWWYmtj*4{&i!F#x2YCACcKFA37)@r(T98*rJKEW-xNW={ecqkn?-ft zl>Uk>-`lD1HO`=+MrqQOv3Z$UVHROaCy^#DLi!dFVXMn1(v9;S4{Y^{BtTR5Jr7x5DiaJw3B-1e#K{>*;(gp>vN zsFz4+prwhk*ZE7PaJ=bk$mw}mlX(F^?`4SIDL?AG04QVZn?c>{% z*>M$Ym2Vjb|zm0s@ZnS4f~q*C>KyzzG*ABX~xL195I8bj}*@l!~Tb`pjWrraHp zHyYFEV^U99ma;8l$+nFfG{c43hjed{8}-&d2r5qQlv(LR^!Y6R{atqxiY9g3s4d%T z4l8Z8eLb0kOCA;a0lL;{b!mJIadpgdiqdM&ZLI2O`Xxo`saw zDb2~8p0u^^{dXXon~_AW2B$jBP}c@g(3f_EnUk6^fl!5c_DdF}k)ndUx@ ztEp<0R&W6eO5|SUNS7dRkn{)Q>0Jx3Z0Q75(^1IdEg{cs^akR3C9F;G_Un#cH)p_4 zbW=}4pCZJ8e3p#`&7&Zcc?EXX)!St8eBrw8?u1wTi*Pse9b`2GXfxFai>p z{If)==PH*4!n$FJRZ(FPwc-_yb@h$*&^S=Qb zBhv!A3qa1QRCe|K47~$BzG52D3&75kyeP#xdhdu~4PyFOUGH{M2D^Ptv6xwStkLi# z!c49zDfH8<+DJ*RuO;f$o&zZhp`5nWK;U@l{VO`|1RCZUGBlpll{@o5han8LWEuM^ zkua$~bIaxoCU1!~T1~SYHAM_)zFz~qkvb|LgeyI*kU|!iBihaOLT*d_ws-BQS`W8+ zkofK~HL43$@ug z-n)kL=BkXV>Q5>dS$^_krj+QCC6uFd>A9HU#=r$2_;cDqXA$pY)|IlUdq&JNEOzpw z=+QEmbO0A+hGK=<-cSx~`<2_KCRlKl5iCB(9lX0+tHjRr5w#it)qiAn>K{KpU)R3D znWIonVN@UEnGflfdg_}BI`s9>nrhxV7|!--sCil^bYOepvbhtt&~f8$WQTPYV3&aJ z*?toD@BTvJEt>)1IU=XiUN&LnaWTGjec=XZSMd@I(Ugn-&&tC^D%(ZZF~S9#ptNK_ zSZ|Jg4-#CMxxvvlIr%GyJSgZz-=ckA=B3u{WkeG+b*=r)l%g_6^niIV17R_7L@26{GvGIGWriAVIN2oqpOufs zai>w99^BR-=VND_hPuD`*2e?M zlu*^x%Uhj4L5)ond;9&eQ%L1>#nhEN#80W^wNF#$B*m@t29aNB)BnMH`8@J7Gg4N|I{P!x(^3UuQ>)!Vk@6pn zjpSP`_F~VMCkp!+I^GcxV?Xt(uu)5A>o2?YLI>Zs*R)mPd?+n+3u^BZN@CfpvGH4V zo(r;mcu@L6yU+!|YHyqL&R?YxLT2=}Egc*k-1Wq+cdSDtT3-8*;8Go5#q=;ySTU!P zVCT>&=A=G!qq-6a;ktW0&(yf-L4k;wq2Kv=ecasp!f<=*RhoMs{t2Y>jbL8NY@i^= z5ztC1za!6KSVTQ<&7*Mq@7hcd2r;C@r%a5l>B%#RQBE!0AGv#<>c=QZ286-W-try@ zo@@O=UjUlPp-HKS!^v*3#;U4r-l_H8`oW|B#NEXnIEx~0Zf~WCZ`HkRHKCBzRBVWX zFVbz(Td!B5y-JframSP( zSb>Lkb{&tk_Vq+EJEq-@fUSmmb=5eL=_PV#X1JuN1z*Ye=Ubh585?fkuaUbzT(FY| zAzo#Fo)~%e#!!)Zo*^1z}J|m{x^{{#{(twuC(sV9UjSw{X zN_hEeiDWzW`S=v-HIHl&?Xdp0DL>->dT7E1lHSL90bqT9TB-uEJv(*oC(xUPM@iSU zcZY}fcOgr9KWVHosFZOnmJN+-H^q7`K+a_$PatB0YC3fp=VHCfK|~F>4)JV?#?QsA zVqO_kdc{Qe)xOC6GfMJy_N<5aZWmCT-~HzvRrRkQ$n7A)UFHrK|Jw-J{#(w=-KY-A zzM;qD1zlhtaOBICWymIl%P8FU#nYxf|G8>2;4Za<*W+H+*jAEji$r}&R&cwb3)VJ( zdWz?tap)N&tye8yy)Mv8tEW?c=Bg5I7(PXd*eF(6rS=vI22HX%mMf5AY-V&!^^H6^ zj2p`Jq}QY*sD&Z7uwiolB79>#B~ti|J6#9jbs*us83}WH0}juEo|xc`m?$m9MNg`z z*5`S&=nKr;1Bq=t`V<@{qhuaIH-VW z=3tdd5&`#HbjyY8QZ-5KmtLoS=H=n3%aXRw=S5)3^VKo(NMD6iiFOGU{?abIVw$4< zv+X}Ilzg?~e0229GO2l~pG&JeTF!}F(+aPjCg6U7nbyixs;B83b9)m8>i#TVeS8aC zmxYtyo}Q-$%@tiU4z%k&o3;57im?w zQ1cl>t!>N&*$Pvr-4)ou!nJ z;Xz%=ig4}GdwrfFFIdDzvUsm^3WGP+5nae_u zX^`#VkFXG?lAE$`z@WNaX-D-I8sBziu2n>I+B`4MwwQwV09v{Wn7ncz$kFF%M|!QE zLTBX%;~aqEz|yc42VL&+D6dBO8`2LtYe9BP&{dwR_qy)tWmt+?1QI(2P0iY6rzmRP1^;r7PMGq%oRozJKjz*#OjG%~`{}b# z@~Hd@5oJ^iW>mo(!R+kW9OX=c&^}Yx8^5O=KPGi}OXN4W-ezV*j zd~3^-m*J)uNP*Ol;0pN_bC^Ma`sbl!%M+)P(;wm|Q6(ect|KnDdqOHp<_@Hb^_yR( z`CRJtdA#NDwtJV{*R{d}Hqa_fbm97?g0S`qcJjLZ#@@;|6iE1}yOD`=OO?T&*s}Ja zR%Jnz%_L#PTPNQbzvGf$?PI?+cHtMV+n~w=-As=?N_=Sh{);-;33qW{VZlc_QK1h5 zF(4c|Z21xX#zA#bXR)is4Skj{QT?Xt z7`R-$azmgKx2!pSAlbNNf**(d0CqHun4S#Ijt6GW-|u|sgLp1^M2e9YQ zsLDRP!>0-5oF>>iZ2ijqJgkgxnF-d6dbn9RFtrbME!4T4Km}p^O*k$9t4Ft=9q#Oi zJ*bX6zGMYaM&|v9Zy8KRACf|IQy4)yU?Ka5TZd{(h+nb=O66Yr7XXtpr$%>Wlom4F zKBf5hP_Mgf_|(TtVc_h#jf-f!Z?E?PldyTG}4Um(W+2ZLWBw z-XEMMA@Fs1U?!cNjKVI%zt-eo{fgTq^VspNrZZSymuG2Lz1hMG?QT!H?248$7M^ez z8{O?DsRWN-HOC_c%D!8jxtZ*1i_WK?%o`&m0C!ly&QdU?!p^BfHq^>+UZ(w;Inefo6 z!}ZQb`Es0f-tSCzB>`5BO_uJTXg@{|H0NjCgV4zMy;5%R6C;f5$U`E z`Nov_AQYrC)28@kL;ff4oG?od&)G9KkeCqYWxiYfM4RpwjsnXT^ecUIB@6lXXuw@m zrR4}xOdv&nV!SVvRq6cn?|i+shVbzKvXJVfO1}*)t8=@o3SkZ5T+q{lBV0s}RIyx( zQk%TXfW@ELZ9tTD8G|O&kCv`ggY%BA;KW%@XWNz4rM(!Ry@1Hs>f(YTRUJ5aP);r< zKkDvP)2qVdnN4dL4zUWbx^8w| z7+WUllpE!*6qMear__3lO|$)5uzz$0L~=H`CVMU|V*#%*o*uY=JnDW`-nO|!iZWvk znriM{+Igls?7~;#bGEEw3p!hfMbNf4E^yT}X{(Kg$lGvfH>rW6GDj7ol6bz~*-`lh zK}VDbM|0}#ACpPv$ygb=Z8}o|pF?=evS)|@8!g1$s3agK~u9(Tbu$b@J;pmgI(`PrY~N8mDvYC2tANh{hC1xdo*11%lc|7Lm0P$EP$xHngh+i- zq)@KZ9rFQbqUW(R>b5wiA^GRuVx2H}=!E$Cu%DnhIq7>=DXC6pJ1&zo?#?jlYN2Rf zuw8OAyx=aTv!62;D;IuVdr$Z#UJBod`%85(v38Mu6~BUfC^HSktGE6=vv}Aw<&^!^ zQU60`+amO+-O=Aq<0d2y0aI&KfryhWDwr6X(58&BA>}Q+X5(i#)JjOj%;~xcR9R7a~e_Ww3k1%&LoA zY|geAMDD<G_hFtEBqa8RK)n_piALAOa5X9Pghs05KYo|8m zEIw7W$;girP#X&_O>_obiAuvy^qBfEFHFVAz9pdUYs`+|5HXWpe@jS{h>^#}fc3>3S1qngi#3Yf5?!PJ zNe6sa)lai=e+sRC*z@jt&fx{%pLqwTo_S+4u3N?Dt!L&=xJp687{)a_-Ue$~xuEP9 z=9hEbIg}V36A|ZcTe^Q5JHeu=TLmZi2jl9oqy zyJFY>vy*C!18u5i6 zd&YW(8T#j@Y#y^@Azr;oU*oXhn4w;%5=A^TB(&Pj6OMkp=Ftt(#0RWAvEEwB)41t8 z7_*|^kt%P!`gS|nN)~Z>w_e!Ncdv4L8vnCmYHO@u{EVYV0HgekCUmU=;&a@+L2E)K zO4*z^qJSAe#Iw^C4EnG(j`Vc&$Z-Z3mh-gi0+2F^vKlh87IBDDtKGyvp7;tmz1($F znjU%f0s zkI7`zopAmnSTl|I^k5AHLbP|vIo(|kgG&{*k7gJ6;vkV3RJ7ziOS1O?RCEv+-d+=U zu#|l%Ln?=gvA&$u#DVc+F#6DSU7DD}#mqm$6hSM(hjDk0K%ty}>8I-6htpkG_?gR^ zN5W6nORyJ!34J0X&jd41G2sy=S01T1q|b?24CE&rpMTlpc6Wv*@k3-06dn zz|TV!Yzp#xT=4Q*mP;7{c!w*=zlH}==H1t-!k=kEl^)onuWXNmj<6ZTWJJEyIfY^q z#0hbOc2`E$GkC_8zixeCGPo9@>b10mbeWV#*fsv$+iH zV$H6L+zEO=#J)grycK}aE?mJ89hNn7QEd)L!tuz1K&in5_p@~^{GCA=ey+BPr9Rc) zc1uQT2=Le)vOkaFmpZr=xO@pq^IYo6BFO~xyULuhO?maU>^>|Y{nLALx6f0}l&i!{ zSG7CEyL)0ie1;P*4p@!HHkUQyFlxQ++T>CH{UGx0d4u2UqrQ~0L5Gxq9J=gZ;8upb21^QsQ z8%!R=Q7@I1BjA75N9c_%Ex)9-5l?xME+A3|V{JF({&P9Vt{uk%JlR@ z{ia^?=R2prnMTa?oae}gJuy^fjjnXL4wm4wNACF0TVZv{`*MTa$w~7hYW>q1QW)zv zo4}&{sGWQ~qIsrkr}a2JZ$p$O)*MnVu%ztyXVjuA0;a58CYmbrC8^oC$xQ+0(pIgJ zD-+uU!rpuA9Xibc+;{Rp8I!hCsO*91_xsZt9I5S0>ej)p^}NWRezXu#!7nU~ZilZA zUqBvSlP&!zQB25dpd zV(}wO@6%^$4fj2pET5ebKbPybjRcp3q%_+ro#NVa{9_zAaYdAvA=N zdY$|?1Pr8`G%FYByr0OPb(}zcf3t-kc|nsF`kuiEBZBH*ja3>oGiAuH>WzsuspeCt zDM7eN!7$x{3Y+u^e#vjaXx%Teub@OM-{Gmu;-k;(tr@mdUPTn~!&UuQ`!H?^Uz^Cp zXkHX_TT0qqR!fFZGT0hC9nOarn*yY64SOUEL`<2six#a4ltZQ?6+TXTyESd zLdDbL9m(mn7KbBx@LygJ7ZEO8Dv5SI-zcHoqtlqZ517wAwc5RVHwXN#-u)W#uE)@O zJ{qb0!T%Nb6fGZShyIkG#r(rY=vA&de}T(rv?pty_e z>>ZphB5v>w#-&OUiLt_F@BfND$f*iBaXSfCiV+y~LlvuE07#$1b+RlKh{#(=Te13? zf6vUog7{sM&kGfypk`lqCwfnoIaRYFFikk$k?JPXze7G}b1mT3(d+(4X$=g^OPof| zV1%*=NpZQo$Fe}e6gK?$1ghyKse^UoL)-wNesAq3#mcsZ=}oqlfgztZdDSRUxwAQQ zpX7ZmHCsIlXZ?5*2%kQs5>ndLEmvoVT=idi_$iKI+<3cTm?FevrVlHxAW6C!V_3QvR1U z4k(%QzR+4@1j?XCMeKl34z|Wpl>NECX?78aO~2iq6nPY#0nCPe7aU`Ab7uAS^B4&f zz`W>?^BFuIu5b9JetZLw%)7l86Nqe{D&?cDJ%cQv{ z=nYQfH!FN+_8WsD|H6mOuN5R-NGzcM2j*I2-#V3aS8MfG8bFaKha3BUB84(u#n;T$ zFzSBVr8vTCKWmrvq=+s7NytK-I8D(a)#XQns>qO@R9hTm;q>{rJojRDQudnEf8RC$ zda926IA!k>x3-Tv+eQ!a2W1I$E$Aq(p)EVopI0<4W=ut&d)_&qa;_*+X;bjGT%1uI z42e~Cyffm{b(vOXYL?}e!?EmCrSf?Me#-qZU33V1EB%^pTmG5b$5=BU9t@AEHrXx7 zc}ww>6{YamQtcADm>@%2bW1~?0I~9c*y@N?W1AhUG^LA#9&ufsJ9BgG-A{MGJ-b`p zJk(4hR=U`6JlYA|(xN&go(o|r1pjRspzKUtt#O*=g9tMhyp&-qOT|ZuMhqhSBX6V zB0?Cr)H8Ami^Rf;A}3~^i`G^AbF|`zn%Z?A1oCFL`6Aof&x?GP$ct_e9ktgoZ(T+Yx%s|1Y3{ig~jH7j_G30BYzKr>D@Es zwa%gj*lIr6H&X;;MSg@FQs91x->a8XbZQ!pyO+#fy?(;vagXX^eBV$SVXVVzL3!X# z_q%+{0)@sZuunSG>acc0Wr}*i9F-F9UPM`+E(ajjsO-mDRDk1nQQtpO9;LsJSXk#~ z0kuo{;c{G$@?uQCCNN}4dOMLONKDqn)MVd~*`z2K26% za{9asY|dx|PIIs(9gYUyx;>G!H}PFu$GR_mUyAhuwXynm4KhqO7Rlz&Q9J&gWA#VteiqKX0K3Z=sL< zSy$mkUo240ovzsSwx-7`Mp=QB7Nkh~(TNo7uZzZ+d*y+Phedp!2%kZ}(L*CpoL|tc zLZ8y;y?v-Z!u;)UtJ~TF(X!ANlyx|KsSOU&+{w^or;^t-yi}~(F=^v#TIzc}LBWvC z@`&|yJ&^OeJtz#+!wqY};x?9)#jw97*GifX&>KyxxgRiQvA&l-=msAUGhYWXo% z7BbzXntI+T_&85R^ZeOw*Fw#r&c#useg<#ks!1FLvQ{ev!Hu_*qN1uH=|V3ShbqH5 zbNak&Jv|SCD;agwbd{mM&qIly@nDG9rO!icLhnIbJjcI}zZ?CIJD+c6gZ!Gg9!0(> zAv)KGE)lhtI4j+w9DNS=`chb>9!VZQ*NEqgxVnCCfA!&M%BrKSU2j*@4X&tA3yv^+dYeP_f_^VK~`_aCRaUsi~ZGQ z(aF9+H*wN&-bFTjU~AVUw!!h0O~NqA+YxPfCKZj%pLw#WUfy^#3@e>9-|xoWOT0}l ztfhLoZnSnF*KX0?UD{tSE8n!u0wP?kO?QgjdJX2meSJA|1&xq0!p%Btco_N7<~=oS zuWdZ>KX16sJG%DuWwyk(3o5*?o_aOEQjtK6mXKV~wO{$q~Il!e~_&7GTP8OzSL$ zxjH*W!Y}?y;%xg5**rr;--MURsmNA_s2wjaFUZQ?X?XXzyO2e4a&bG`@w2YbJ9%XL zN$TE5uQ^Soc?IPi=Q|-Gi%rYVi=lM4Qxt~wFJMfus&Hn>6q&vM&}uP zY7Ck_T(q*jvvqfSDta8xoNQh)@dyW?1d`FTBBc9mGxmPGe?`x`{nG^a0Y<_7xkM|g_Z=sVnxo+#kh;8zX2%<7Vsua^ zif3wiAUUGgqGZe7dP(SG9X`xv>vnJi{1rZsw=kooto_T4(`O!M>N6jAE#|hPjJvMC zu=c%EcmCIP80r{uQ%3aDZinL~T_)Ya%6ZZ6;bw-jHF+D`8II&+Q_sP>90P=>t)595 zT>y;2(+GB(QH|J%k18KfN0oh9%f!t5DP5>ZX!o>h5pSliBx`Tp&x7Ig3&2UPCpRL@ zEK$GH@VJIbAXWYGR0H&KCR0WjoyrpTt?W7fv1Z&XUQy2-4gF~^nQ z@_*M}Y%Kmu<1{uiof}#j+lyxzT_2*L`m(RL%e@#J67`dtgZRg#kWQa5R$w!oStTYX zLwh&|v$zjflb`KFWt(-_PV&A+j}mNEdR|6+qm6KYDgZcKRJbA>|x=y1D zZ<|nTYOnR=rURD*o^$HmNv&vbphjV#587wd%j{u-uPG0{&d&w$k9C>3_Uwb%AzXI)Wcg%|FJP*LyrzS#IG0tM zmI#el-;gkqqkHCNVYd1xvV}`11#KByw9@=eEoM4Qyg>p=v@OHRBW!vd=jTtz-NNc? zP;#EaTf2sBM}Ih_#&FNt!Oh(M_sU=SIsNzZ4C$?IV!^u`Ps?*`4kTM9t&1z>8d!Zk z@Je>yH)FLyS@W2O``(}Ft%)wDEXD z^R8$((50gL$o(i7*AgjY$uE*0r)4_g8fNsn%&J8jfEbVKL@QuC>veCN-fp45Yw>#K zSvdZXDMYEOQy&Mjh^2sh{?UfW^h1+GQ*RehJ$_!;M}^O|CsVbO)=K3QM%#(Uim$++ z3dKJ?xVPc$-EGbe+igIj75tc2W-3r@4YvmQRq~yRrzP&a`5!h#FKQGoV7($30op0o0+6R3d8lD zMfDhnR0+!|_q66&*8C(dCi#N>adL!;a*T6dt7zBt;bskkr~MJGVegQo3XZ$9nuNL; z`tu`uvv-hNrdlJs^a{?X=vfNt5H{8@)=xId$)k;w0voIV93p#o7Os8*ol+37QF zgEO<5h7pzcJsTO9o4cF+A*z%lp9ea%TRGF>ZgQk`o!pQ+n#VQ(frX zQ?J(HbTVAWubjBVWjx_q%QPZZGV+c!1F!ju1_7B|eB2^rb0EUI*-Myz;<=HtE^r_s zTc0$P;#WaB8XDKyJ^StaGB0l_r4b7J2ZrI9L1gxMxEXFTmzMYjWL0n zn!7PK%OJLw3IrPW{`sG{@iUn*ONtl1ga1v|+7Xew+EX=0kM^f~EMNw}Q>lrb+fH6% zC4VP`bf2iKp09=z@U{ej^^5^ zv{_=c4Lb5MtH9M9cYo7NKeObNeRPSY>(}I}dKOmAE(d#OI2pthxJu_MQ2H*??1nJ2M_IF$qMecF{|T&=Jj(OyrD&C*RQ3( z7eI3EaDJZP zc+3=_b1D7k`h!lM$<9?qFc1}BrTa91qmExb!PMe%C%hKuC5!{BOz_xu5)u7}6z@b6 zWvY!WVYP?Ru=w4mvV_+nX4GTn9jW^?u#mbqyIkR)9{&UQ!C9Y9n~VSQUk#7&$FR)z zsdS9TCEyid$%vm-cH1^wP9Tj9&Lu;X(UVs?dYa$aQ4#2ENuLV)N_x-Z1W*>yGB&~% zRKq3Q0ky=_Bvsl+ZS$6xnZf-<6k}jBSH(`~=?ky>m`cG)nzcv$kgjaK*S`K;AElgX z06V8hc}W|Tzj7ikba0jfzxIJyw;N;A+}u4_!&3k=aXoDx9j}N)NNp=2Z&Jrb+!WFiQ;c5-HQ}mtJO{* z#pG$-Q(h!=hk+16gAm1ot46aBctEy)jKENfqF`W%j^?MgPk|JzRd-Y_!*Nns{LOVofVaTO0TmeZjDfX%$|HU9 zMl5xh*{&M2|5nIAa4LVbo42{fy%j%dhIFLzJAD!P3Ie#zU=k{mbN6?S^D2z?5GdC z;=auIb_A!8t9D(PIj;Hq*<}?wX)R)gxh8B6VK^JStb|d?Q0mbt=UqDKemJ-}b%3#A zK0;wFGe7FLX?wZg$lC7Mp)|q2ouYQL(V05$e>k2g-81JtS)1qm4&Cc^;g~5>SE{^T zXQX-R)}DF0?HG+1;=Tjp=uI<~VexBfZSQD*!RZ8RzR673(G~p{ibn8UX??x978Ej? zmaNA&F&J)lbIuS>9`%*}Ug6zax1Y$n(FAz>te@-Fsz^(|cG6v2h_(EF)gSDA4>4X# zQnUffa^t@}hUO8^WX{%!&xbu*9g#k;krtg@TRnH~={&FNgL>TP3LjX3LW#hd)O0Fn z(VrGiCS^f+`y=^`n@rCJm;57_R_O|OXRfz@_BP+Z_$ONx5edIfGUh7-jH2g-awwYq zZ1w*SMdumF=GVqy9q6K^wTqfHYPO169rmofM{BiK>>!A?IuKQ>ilDV(Z-Nlo5}Vp1 z2!b>;f>;s!-{<|BFL@+K&V7F4I-lO$$^QsdX1h51=djN^N25yiBceoK(?D8sqjF82 zw^Tf$gDPXWf7GuAI=v_SijS##G>nV5w>E!6B{Ph=q~V||@6IWy^{$uNn`D~g2AppK zp{gFoCI-$4{7==o!f7C4%wc~NtGr&j{Ja0?K4A;6Uds!dP<&`NDXqxt#&@6*^l0G= z`9q3M;c~TdUyJ7FUuNj}g2H^AQf5=1wBQbtahYE-acmNiZ2O1Zsa%3zwYzAhSwb4W z9;K%59l0)ajFV_?w{7|#d}rt%>P!0`+?qV^PFyNK{P_>&^F=K$ts|O;7VxQ}uo*+wv4`joxM zyJ!5umG^SUO<CGi)l zN>3^BUMnoTiJmrUg68BhEy>@RIcfy~Te!du9hwqHq)zc;oyG)D#U2XrTSh*pnT#bU zu(H6pj(@E3nZO3P_Eso!+eiK?K(3mjathXQwMcQh6`C+Hs_COrjrH7wzpQ1q7ng+p z;BpSOQY$eX;W?Yt+cL&B|p?^aGO2%!pfx#oA|#%mtU_B78E1 z7Ce#=Sh-;H4avkMFH?hmkX(;lcWYJ!Jt``znuGQYV+xZ3OWwd@UJ5KoPpOqwkqH=j z=&8PSkGj0;+$4hBHpxnQ!$%zbv4)mSE1JydS0y`4(Oa_%XBIYM4`^$Aiz|*#lKl!K zkb8&y_cM%5Rc}w=1umyW?bBEV6$@$4UOb254> z9fGee7@?4IXg(t=KQm<0qju{K%;gs%lao;O<{J(cW~a^78hH9?-}bi2Rr%7;g}_W? zVUAJ*89&m*06n{Fo=c|R%?uG@Mfq}OL~~>E!P(QXl#@0wQqgQ1!yV(V-y5UVTbzTV zEQg$%WM9k*mGp0pJ2=8mlVDdq9a^5ZCF9S#vo7X*4G;AW2VWM4y`))d7=G#_&L?R) z76aCQg@}OIr@MJ~cmIDxjv5g6%EbeEW)Sjpp5V;7nay*z9Go4qZ#lxF>M1KlW z6gAtpm%B&BV;qsPHx%$3MtRYFLQGC1N{G`5fFNV%wA{^{dC zyTI?wg8Y=F^cb;RW7s{+uMw}nq`S3v;I(<5AA%TKVk6dR<=%JB5n|5trE^@9_?O7X z;tctPYNF$txzz&sJj?yPuU$2FAYJ=!lw!ZnudKS9B?px$gB3}qnc4X($;wk~Rpdyf zx_5sBpB8Z`s;qj&pF#l~h2TwIUFq1q3FV3GkdwpS1OqIsZlN&ry8&lp%@PbrkFEd!VjD3}(IVS?s0h}XK>64n_v9{8zo<=w&0 zT5E&$7if6dTkVQPLuEur9sFvuZd`eza^NM3xW>8tU(I-8*ogjfPzX6j$Y3L-F6X+r(e?QqZ$oyb!oBmqqi`4UT(~ ztOVb9R-LQfG7w->JiVC)ftH_th8hYtS|@Pk=;f%q0Q0T3hSAo&bdNO~Pvu-$uSvNV z=8qsSbicCUt9f5Czth{TS^0QfKUviH ztogc-GrRPrAZlelE)=3;6zR^Flc20EVhd8zS1?NH@L>{So;{fMFX~XzZIYZ69>|T- zaD@7ZhW5c)6o%!9*k^2LSvBYPM>(RJqB&EVGc;-kR!QIg>sG4H!)QP{_W2vamt<^W z>?R^2rd3v)n)GNmAZL%zPA#=uH6M?NTG1MBrNFCVx4_HyTZ0$jg?yy}L?ETuvk8YV zpX!=01*P*IN7WKB!G}Jr;}wvi8O!9djGrs}<8Hwiisb5wjM(_Lne+3KsB%7CmiUCmM+ zMbwnX;@`p4dB3gtf(eO2ZTrU1o|FzqCxQ5`)G>RS-|%(L=#TAVtqbFTvgwP+tte!*iKdljWw%c4yfHgPk9U(x^&Ly zQKTYlx>VFe4Cu#2zK}@0+w30V1ac;y6Ev3@v?#%c@c=Pc&5{J-1E;pI#TT5%@gy9F zv&s0?Sf8smv-{0C3-x8Rmd#kINYOt*<{JQ>UWlb^+TH(d(`3AoQXnERTnQ)-6!d3TnIG~U_ZShDG>^T^e1@L>n&)ueL%upoJ>r$>`*LVzvnJAfd+USeZgp%guaQ_`c9G&z@Ys2N9x=W1*F_; z3G*@&wlFuL*l;<$a;0BdG)op~0XOhs|GcWk!bcDd3yK8J6zJWc;et2x>g8(X0wu8E zvY-wwxr|q1d|QS^R7+J+h61+hEOygyr?I#Jv)$W#v)>L`#|`br>+0De!(<=U!Ag?F zcEfJRmW#Ba9J-I~r6O^h!vdl?VQByBqMHwDwx&jkl(a57PRIAE-C6KMH(v%DpFRLx z6xSL815YcaxQeHSfAOn&01D$+j|;xbWpAa*8CJZRqjV^&@~SFKX1{YHdrxd^oA~oz z{+ehWmQ~{TscJ-3xoz^iT|Tw*#hv5`jneC!zW3U_>hwuwvF*{B=g>0ePZW`;cimLN zsdBM=tdKZwVUrN)ZOH`;8rLJAh2k$}$Um;yyZzxA-y{gt{qpksh+{)2PJ``Rg1tef zUTD^7R9&)D;Y4$nd zr&xL7aXbRHGDGnzdU-%qONt^Z-Dim@;OFL^lwtb7FK@s5Rlj5MN=<@y6pe;o2=zmf z-_Z5B7r<@0q5CNyEy`O9U#9=)78Q}rOQSuc7^^vuO&4cb&JWUBXJYadBsh$C)$q!7 z?}aza9G!Ik(AEKaDtr9~e$c-en zxl4H^vbnw~6j3%n1S^8x?wZ*rP8fOLUv1xfl4_c)HH|(ue6s#tWF8omEl)tw>yIDY zcJy#k%U)yzO0h7F>qUylQfr_YVrJt_{ua+WJ#x+#V8WnQyPT#}Z|}5S32dT0J%yEz zd(0EhA16B@+>BBl=FawuM^{N==sV-^)>&U;&eEo~s|b%F47+CW;j5j*sR#?5V%f?qMETi;FZe&K2&x)aH2-TC5%_P&$< z75Dt+wrT%Qwl{m=DxcDMsD9P#tgegnk*WcB@-TxfcYZ4SwX0wLHRI=yp$brEAGY!- zs>bm75Vt3Z#MQ$g>i~74V!i*&@L?x$?Bs!7@)pyfLU=Tfbgg>nEDNQBAN^8}Xl(AMDJTxDIh)Nu);uuCZi^>R zrg>aa;Ai=x{vRDyj@1n4k-gAw1SjsTbf-b|>|f(aCsQ6~8P13<0f%z{y-20gZJpg0b5KZ?)Ui4y8US8mF2CMSz0>!Y!?fC_eX4D$W3XS&$n z#r^?a;l_zBZ|%m`7YQmQKD0~XT+Pe|HHsRPd8t&hLa}^y=Z!&03QR;i^Z{wAA^L+M z^a{s{jsk&sJ%IGluoiVzb>C6x-MN4Jw+kw#7=$JS&OaAlt|Ke3eX?+`cfQ*}!73g_ zDTNqkP9>Qa&Cl5`IA3ResWzq`XTjbDd@LJ#$Bx%e+ZoK<{WF5NkHaFvhC>!^YNB3} zpwK3>Sru<BR*fEK?@ zc@%;d%fS#N-OxB3IV)4`S1G?m*Y36xj8nd$N?j>TvD)7lfUJD8&40ZCwoyMz@yK`GHZZHLW; zesv0ZI}ZQ>C1C_{2L1@w)4gm5bCtBf$Ky{ttnHGA94(<35aMo0t)PAA3wFAO!@QHf z)p`40JT7J@NE2v7bf^sYFPp*t|`-g;MoJ@nAo?6<~6 z#*m(#BzS>>iut5o)5l=|lVbV@LxhwM3yU0?O@Nx!!Dm1~`j3cwkkM5s`hd3I%?#xj zw5&p>7qb38y6Pt55!;9->DdJ`zg1@C#mb)z1)Ne;@*ioOLKaQ6(yn(2TC;amxby$o zIM7SLO1x&FWtkK|Gu_K>5OG+lOZ5943_n@EDMIW)h-s3nn;$L&o_3(UD|M{gE(r*W z@FtB>GW#6?O<827t{(ZA2F1Sl(qJ5&iJs{<_}K@#+r%La7rB}|&kj`&Obu*kD#zPg zY~(YDw0cqy5xgiDGb@~wd~iy6gv?e|=^TGVJh&@{Q@?q#T8NNT$ru92d{E|=;`veB zWl;0eBKPR#>(5#7caqjgTWB2HH(Tvj^WF)o7@6S0QlD@GX=>YneV*w`GX+NzU<{A@ zJ&k7)=CbPf_TJwL5D?O{CXm0m>)B04&kR`Bs{MjpF?=QXFx)A6CgSsEYkQt@2}Z3h ztw?N;;Z9I&?*Y}_{>WdzT{JMI9MrnT(O^72x#gs$Y=W3dGP@ZO6dR`<@S0CE(yhs$ z8Bn}*o1^TaUy<7nE%UGOox$11Sk?GQ#tC1yfw zE4*0dI70q;n5GZpfyE{tPSprkE`&|P$LI_KcaTF+pwezUXCLC^%-JicrDAVFK-2Th z40<@|@kP3Il2Q!C(9>ztw2u0i#9i@

    )hegfIVL#-p=Yl$v>*sSgQk8>f$Rv^tm&WnTVyZ3JEVRvk zO8i2pAXBHEJ4Dr;zkkv>35q1fyz-hj=;Peyky2IZe@-%8Enj>lK$4PqK{&S;BZufe z*=uo=oF_J|_Mmz^mF`BS@ZRF)6^N}rG;-Q6$0y8zQ8&9% z=~8=7uy)7sL3c{;hCa!6S~*XIFD$6Abzy-oPnWni^4mR#X?QcQ$ea8oK}Dy5?;$FR zqHa$B#!;-4?qq;X)z3K34xrIn;Pdq1q{@_cvF-*&4#Jin`Fd)z2MDQU8r!EeS6|=V zZVIG3zXx*WyqITE!g|8l#1MN0jjLihyqB}}4yENpv= zLV!!wWj(Zo6r8I~sRd*%E(hqf1a6Z}#qdn+yR3D!r2uw`#j41mb@D8)if+ht?j!n@ zg1F}A#6>Eg26?;%8gHcZ*tl~&0GiBw3?Y4?_`@m1^e*S&L3>?u0uM*u{%q!js3Ckx3?3S>IzR73SYFcLQ%)z}PGl_V@{Z&53;I+Oz z${STwDH6q$1pO7SK$Zj>0-40%PqnLw-6e^T5-&RGUY|4y8ossk9}eoob`a zjo!C@E!F&Xv^63Lk$35D|5CqTVdRgtrzr}<#3_b?ajwv7kgQVq?}K)x!;P>{9TPUA zRfZ@}u|B@PJsCg4xSTfXqmR zMI|9cvks@kOEJK%3{Ds)UoPvn2;F$MxXrxymo6fqec`lTUgg!+)-jO=sf~O1o_$zMmlP50T+r^?y)UeYa z1tUYFu=`Q+5A{E^Yz40i_TS$kHslU7YC>lA@C)J(O+na)_A@_yLH>0L|2$e#H--&G z#D2z^GReeusCsht2bCN?-;SPT1J0&AKgKrqBce1;ax0)a$MRo~e=cCVOZ?C?Hxg^# z%xl{8%hV53X;%IUJe7{VQ^9Y+h62yi>D0qz71TRcg3U|hpXSf7T#p~@DchrUT>ety zDs={e5`KPrsZ;9MK8&{xm&?DORNhiaa&)p_X`Lk^hJ$(P-OQWgWI)FOX>L8JN_LjC zHXiB}3vmzs$5ZrQCI43&D;KbCtzh_p437WTEmN2~)%+#xrM8ULhC#Vl$YpD9hSULQ zG1^~Lr*ct&Fg|c5&(tpVOJUwlUHl9rcRAwHhA65rghE@t(8Rj$_@M*iCmgqF_Ni5R z^JwX%X>$A64|k{gsdLu1H*uS(b^m?)td*MYh%Y7DJUt)im<>h7z z@5h6|Tl3%g)q~rhi(Y|`JvX_>G3dOZRc;N|`}Yz&za8O2;O~W{v3Q2aH*=QfP8R*_ zQYy5b>Yh0lx#*-xacd(xe1xB_Bn6bKW@^5WUeS<4a^5IFON4vduo<$e%n1y){YM8E z;6u1h+^Kmh|D=TGvNup#V#C%0{*O*42`v$-<%)Ik$`Gu3IG=Cu#&6`P%baqmbTqXS$E9ul z1#|i7bNTCswsB%NKjq2*MA`>?D<+irvbm(|sf-9m%})pM&cM%h#E%K5l$3Y#hOehn zX#|s#4~{xJo=PEnbwjS!^OP5u-Ot_)jT(fj24&WILr$gw z+L(A1{{1TsOlP@zfLjDyh~FZKcW)DP0luD30Y~WD@WE^0m6Nxln_2EG)s;hjSq*)$ ztonQnqOGAk{bL&F99jd|44}r6q==Xz4#I^szUo}2xGV*L@q0s|Jx#ML_Vt$vorq3t zd{l!;Y@?FHxf{ua?FE2jtg(hqq=Q6GFqUr~)2y2`Tff9>o0L@?9(0bB#ZGQ= z?yG1v)F+JZBB(`+4FlQArsb#pK;|2GcA)3q1629n z6--2^DeEAPa>_aDwp@9rq;&o>XHVtW5P^nO(EeZ(SgU?Mz!l5F!tW!g_4r@a+G`D; zLB%`ukyVb^8m1s9mtKSR1k=$@?EQo}eN$sfv$F_-LX6pxZyHG&XIN`hpDjDl8Dlwz zz){04t}SZ)d2jLfPf*(MWSpd6qq{qn_#<(OjM+}|ZSp3^q&!XZ8wmUa7TjoT-T63l z-byz6GOL(Q^W-}`oM9oVqsjFh)OVfST=d;wnw)vwnLGN38(sJ%LEP$H2HuuKLZu`% z@aN)CH4>)sdA+KQV`Tc=4|ETqv2(RtGDBR-hXDDdVg!^^`f{dbg;&GcQ28HyOa(s! z6LgBCiC^6oR_nURl9!M7cy$(mdKUQ67YACv-xqnweQAdrCmgpBl~D%(7Nr>H=wNbmB>>Gko?;FDW<-fl-9Z?K-eq{x3X*xKgYNiIBBNcVV zQdX*>eFP9tu=Txfkci0G+Zs%ZOZ4UYnUe|X!adC;DGdD2_t zewPY(K0d6|rts4cQ*>UjBAczesS|$KUBRG-U%9j{b@M7dzN}M-b)aT<%Hx+Ep0-Z= z9{hhz2?rOY3ms`bwsg_4(o})`37)#Kq4p488WuR|pjFw5=OfhDQ^FA#hJ1ZTwH|9P zl?+OF);3!tSoKBdqbq9E;RV}aHI3h_j+cfWpS1Vshlj~3O%8slPKtDAl~bIDB%1H_ zy3a~Wv~AKOC+^m`1Pcxnv714p-|w8&>zJ9jk4ekzKR|mEh#vuFo-mR-5)yU4u;6Bq za(@7TU$JCaJj*&*ldaH~ldLbt38LB`{YRJA?jh<6W6*hYwzgtafF6-kx+WwZZDYjm zYRjn2t0^M=w}yF<;0y8KI)=O`8L*dw7l}MdB_u1p$S&FM%D-n~f;u_uT$a&9X-VdI z%wkM0%?pzbI<8~jms#qv!ue#A1ud1;)uS^_TUZ46w5(Am1x}3PWn)Xr%wphu6 zwTBL$n-%YV{iEn>!a?M9jbg8xaONp_W5(7uQ2c!@`3|kAeds`+ZvV2lIUXAsxnyQc zyjc9J4X`1mw!a9>W!N9}o9C?zw2-#a8w<{m+0D-i_^OTdCbu-1*mQA6NBy4zQpG~4 zi=a}L0#HNp>3umE>Zz=|GCE6UrK|;`SIVkVoz=-@mi}Wk0||HOwUQ_8H3qB>e@W)c z;(h(Qc}6u!134V@e$Sn+xP7Hx5EA~Y@m7)^35oiHEn7VuS@RHdI2A4ow5s_oy+9r6 zcD-L0BDSpy-uc37#(kpBy0?&rP`Vi+s2SEOm-m`gB-;@l89f_3`_$BgF=*cV%wIhH z0cs(xjpwmcl^ubZXfP>~8d@H@hP_)l$JAXGMV8M0|}N50g)`&wNX9B^{bxdowl zYXO`Jbg4l>X;-m)l&T}N8qO@x%9ynX_IQR?(-=|;-Dh~{J&QwP0&G=;D{|1l34Pkt z6k=zPlt*A@C=xe7VCO?OM;T76`F%QDfzaBSGdV%@!+FWU=tysJX8Iv-51-Pn+_k^x zYTb7{6tc6AJ8mLXc*|WXhU3^(dTHFk@-Q4QlGG^NS9F>w(XxsCJ~Oa($M&WG%L3)( zy}G*Q@vWk==wMm31EUZ`Zejdl8n`A(dVaW)tm3n z>$BO!C#tif?ndxYmBU-7spuR#8Hd)Eib<5R`4v|66$oF@2-? z_Ly)dDq(P{1yfN=3&)fR*b~C&DHJrFnXDWgK%F>Qa(r8)EYH!mT zX)PcF9q7?-mR8WH@*3P$)+qI1&R=Sh&4Da4B8Bp`7HoRE8G@%)5Y>OeHNRZc ziKIe3_d5x-BL9e$-iqABeZ3GNt{qXS@$yQjdS;UJqFSv!>oag0W5b1v=6VOv8AV~i zveMnB33cd@e_OQ!d%B!xtq zRWL@b%~>*`{(#8IWqxPZId9lMwI0?5BaldP257dtXP$0Si7}wCPNzvR&`U8woeBjs zD)>68y}K<)8HYWY~NUE4>}r-el3Hs z^WGc%lxr-j0$ux$ZgszdqOp6NN9CucMzs4?po$c*JC)Y)O2cM*z0FfOiWMIO9sCsQ zQGQp~bz>6P%?eMDc}Q8H1?U>i|xByK|T+-?xIIi~+EDA@hh3?I~R(0y*Epl4c| zaTfp3*ns511aWZ#ukJ|58VZRZP z)J2mf^h|=jbiX&vMavRo-_t4}=vFwDT^5ClL{*#-xbm>)wjhq)L!3FITS7$E97^Uw zrR`^$b))OnlE@z)Sknn5ah_FX-gUy^(u)XhH$|Q-3|XEO;ey zHft*txHP15!Gk9??CRsNz^m+1rnHxOZVI)h{+6k8l}DWhk3hlBmzwo6OHsj=uI7%c z7AtKYc3WN>`(fPWDn5r7#9)OM!72wsGKle7CH_3+Zx>qT6i=Vfnt5(UsR(gBYy<+} zpO-{fg^|=l&+)TBGg`joBi0@AUcWs1WR>_~#kE4+S?_55`%$uKV@}@?_ukeEvXCT$ z>%b=jd6EkFO}-2`SW~DS)s=nOz|eYNn58MAim*`jyP@c&NyY^ujAOn*E#dd^`f>fn zzMDY_)7#J(r~-!NZ@;x@vd47uW-|L)c^RpdL!7y zT;`~Y1(mlN56zq}X>&}f*PdU_KE40bAmC$8A#0_nF{GeUs-%0N-S**VbXBnMY zP#|upFR}O$tNfu8IZqv~b{zIHw{`g)_-lW3En8KCSWMe3VGqI^dH#>V|^#V}9VzUjUP%9~6Kx`A&&E8X*ksA*@DB`hP@YbM3uc1M^UMqQf9qoM`n$m7Hdh>9 zMQbWsf=>*f5`^8}y4S_`XYnvWfM}K4y$S81`bN&I7Zri1J}{Htx?a z7OgKmb_fEV;hCH({v`!?lkbh|iw<{^z*gF`MiY0$EeS0F#UJ@Y!*Gj`8~HfRm&Hje0;U7|*lQh!d2X4t_@f-Cosn6*-w- zSn}9n5w>k*^c*%XkLwIdLkYOZ^Qpue0S9e|%$$W$HJOhgF`s|An(jZ~^A`Ua``#=` z`HQgS*KGzf5<@#$mc@k^Wp<)0e_2~gp-u2B*pa8eW;lK?ZY9^BqtsD3xa(y>_s-kv zUi7Wil=qrO*%VTa5EeTt-H9vZ3EtUv z-A?6OO%WZlYToCZFBq?yj_DY`@)H}4(Ard#hPC?8R<1cshz6Y*sSIkPa{nfA1DdwB zW8oJ!%OD%=f};Rts;&_%dNvVNjaJJzce{Y+L)D0@F0*qVgPYbI&YG>tZ zZ;Wu>^|j@L&iH_Sua2xP;9-k4=9DTfqece`uy}z3$g_crb%{L=K;=-(oaDbvhBIla zjm3G)L2^94_MI<_^T6@{mhTdX9zGlbU>~kR1#F2|ORXt5I{P233SUnGBHAV%8P1w{ z-Ag|j6kS7sepWD;KK4${i?jvb4f(Nrx?A*d-8;)c`rrBq`sh+D6rsC8`uz$?(e}G& z`+EmeLulMNi4MvFm=_8+cSP1wvI&w9yVSZAblA_Wt4Jf2U&C{iv?Zrx;Mkj@`~A=6 z@~@#${K(0WzV^4%hm*?F0$N?Kqn@>aa!Zm2&H_E6ImT@|t4Lx)GSP@$K0RZXLv*yrB!l?pLtnmBd2qIBu4a@M$O zr>4710+Ak0e;cLlqR&@e3{!QT#~QC8#r~0e!^?j+i#B@3A9j|mavxr+ZZ;?n4oYM` zxt^o|%kL?+v2Ry7>=b?o4$?ZeQ;|-}w_fPwvJ{eH+|2O!x6kjmBzQyYGX@*7QYWa- z)B$Cr*rw0HA!~ZVs!i?^72)w9Z?7;c{Q^RK07>*#AYNVwo#aQ^q`a9 zBG-CgXw}RTv`DG=bkmjV-pflh^daDmDwp_R+TSV}0$rT%Kk7B9#Bov&v&g~5e!E+e z4vK%W_YzFh%aP7pbtUkzABrk^T(S9?nNX8#Zw<5!P5r}bI=-tSfOF$eJ$ zIqr;L9;E)WSWwJNQH9=SUP{VmMPi4&B>6d2-@uoE|N_9QZ~FYVmd)5P`{?>#)IC zOJb6%FF1fS?9p*3>?5=3jFZgKm#axng_$ti5d4EN^p0qao@La-Xp+*wyt|7dUQwI0 z^*c{P%vEM{Gq0C#W+{ppAXw!;$I0iPQJuj)h;bDI3HfrMsQ;eJoaijjgPEVghe&UA z@Bhv^{Jkw5DfG9JD*=$M3RK?7mV;L=fZRItS%GN z+}$>lGEQG6ndL5Mw(pQhUp!ROzG^x%nGOd}KZn0qSPj}O9UTrmN{i=z_<2w~&(6_|?lDR15=AFuf5+G%SqVqU!g;yyUq-%Z7cDgpv+CJ4k>$BAkI$BpL|CUZ_ zV`|r_iF>Rnr_q69B2|j+C(mmo2R~3}JYBxq>Qpw1zhI`I^D2uJyff@p_b9rrVqu>* zqAD`I@yyEoW6}l_`P|9azC&#JN{7RF|68M4;}K^{uk-hvW}{svWfvx0ti|=*U;B0( zetG7WmOr2zQccc$+OWQ&o$FpX-E^@~gjmWmjW!qJy6b(J)n}W3VDNo<1aHgt1aOB} zC-)X-E|b9`GNUY?ou7%!uk}_pfxQelq*28p&Hd?PkH$b}w$c~bSJl<%$G;Pu$s>6H zKO&voS0i%r`kL6)lkUZf$Bt8Pzn~~>zZ^;w_bc2jrUUpn+T03hMSP)PmzRhA>Oga3 z4uUtVI*Q736*uQ3l^M~5JD>(Q>@ko*`3PF}-Nc4Pq0YK7{f6fDz=)Ez1259ST3K#v)M4{QhMW&2V&{!O zzI2`pEIWPp9qvpnUEi!IBm1y(b#jW%_d3*P@+N8Ds@+O8^M3P({b1Ts=%IbxP=Lop zVS9?LxxkkFY6tF0$%5l1+ys{|V^m}LL1#HvVx%jp1UO(PwLJKNSIyO8 zYY}rj0++8li{zJ?sBKu8{l0BIP85}*h}{JW=|lDR;G5cuQi@|FlxAMvGvA;kp{$K|f$MsRJ zbF%~|f9`*I6`Es~?&4xvO}QK&leS;n;(xSovKG}pw7#giB=@;A9RvvX-euDJo(F^3 zA;UtQ5x`mC9J|^=?fJaHD^9E+sGnSBpc6bw;=7`a@1Ml%PDrLsEn>Fs5(50?@xdV6 z@fAjD=tAq!)CJ~jg_d(STUz*$s92!|*#}1$0#B)_@T>4&c;8$F`_AgtS&25Z^@EumTBv?MlnmBd%j^DbFs`xYJ zdj`vMBr!IZc<&|m5=JKSty%fx(f#Kxx+flHZ=Ak;M=3H4vc1~Qm%l80;+^vXxXXql<8LiNg?j-ApxQfwnAWz7X(bvY0yfPNZUT;6J+M;)+*? zou3zHB}Jcx_5*i)dBP_OW`FNcGRzD&^jpuL!kF9LZ3VDB!O`Z*ImX0mjW>UuT^qm5 z`zKx8Sq7j6Uy9}^gB;)}*mFq$0<(d&CeoV#+rpS92FKmyO~F=fF38Xb07|@Af*V1? zc*(fA={kvRRnvMa$UA%~Re$RfX`WAoZJ*K*ERxyL3gP_%SnGmCL_&))Ji8wV{LH>~be=J*Pk% zq1U>Ob4D4nPn9a>d-dfJ$lAT`&^!l8`Pf{9PwQ)$yGj+g5n=(F4KmFZ z(|@#2YR*-UbaB^KC+^TzSYKuc-q^RK`U~DKm;9ZT7yLKP^_F^4`|?G%f9x|rsJ1|C z?>I0y;LG@7FGECfyFEsa-`vFam>zKM_uqJzs?RL6e)cf4+*&`(x_p^?0buR;6E7?6 zKdNOd;~ki9GrJ5}BC7|Zj)QGgexH|T=j<+N*wdEhzW+z3-$=$wG=Gm_#|}*~_$5vn zU>~H<$K>@7G@%Mgoi9VH9+!wQ7CKj-ES*yh#-0>cW2tTDN!vT&rMzR!yQ9Xsd;ig? zx^ul|v>S{3M|qQ)mQJ?)?oy#TmLQEWx!ctc0tT@cbym*W|mbqXqA4|;Xs(Dbd?R$^53)SvFUa^R;4jPAT_t7c7+#rNTOmf1=G} z{O@BU6@QwbHPVG+o2x2t{}VTFsw^ZaBjrhQFq z!xY=D5>I!e?}j)o?uw+N%Ncj z%2>GkOYlWEMFQ+n$@d>fJhzAQ1IUt@t?$mT(e8W8O@S8zIJBJCeMvoQ8#Xzc$=-!s z(Hr?zTgVDmE_u#$5y_r$##Yw-OABKzk8LAQgDg$sMJjJ7I)KQTlUVTSPE9gC`iRcq z(>X7Wuron=3-4YKGe7s?Z+je!-icJc*7mee-?Laez;Q}VJ?%J_<|=+8;ci1Kb@0t9 zB$8UeAXqM8qL}0(9C6W!9(Qo~^L3K@rwzE0noQ!7cd6N?L494)nRFJV{bZTd@O1{l z4sdk27$aMBv#1sJX_w_Eq6ErMW#tP!zkA#FmIhR*&vYeF8^VrHmLdvi1D%{#VDzh# zi)_BMo%c+mUuji$RjtmS|1*gjW_&bB#q-`$IqW^@b6k!9(894Iw^Wjsm%Czn4-X3Y zWw;5Kn&f^s$zY80d8gE`107}SD22$+S3yA{DO=R8+R3PGdM}aYYt=1|WRP-AN-r@^ zYhbbhgYvc}f6=KA`5#5+;m&5;hH<4vhbl#dqP1$&tXZqWDn(ISP5H2|flIPWG2e%zK`nLw?5>p}J;-p;Euj+Uuw2W>8nVn``*X-(2a+eFL3H zQWXH%+@J0yHmWp&Cf-;UWy%fViFOBN@nYqmhtD#*bEs!uuGt%F|8`?$^W-OsM2^nz zPw~9Sx_FuFnKuhIgkSFB%7>*fop`zPJ}n$IDww(c9^AL%_<8_NF(0OfZXeP`=Z9Vq zTn=)dh$}>w*3T0UXWj0bwCAOFq{MoCr zzdrc%ZE|5%TTEq8S3)OCHJ`C_@#kWXPi9Ill{gcmbDG0I21gf5{Ue&O5x^<81#}>| zauTIGHfX5W%TPA%qiM5{t$ozRfD7{emO@I|5mz%43;?VkCx{0+={vrn=sIxc6`4HI za#0)FMp(?rhp`31{NA0L9BqF*zZ^xligOuO`!Nw5Ma0a&Sz(YpV&n zh#-F4OP_f5eeU+9UEAHnM{SnwH<#OIfdBgwag3&B(r0Fo%Zf77ups4+ zfoCejjf>x^E!~Q>TSRbSyD(1yU9LOjzxfj!#*Jilwj+VjA|^AA8m~=xa`lo!(@H$8_MxG%q9!5G_|nF=lMUU+ zkG_T-uiT91)2_drb6N`URXaTyuEs+Itt_stHbHZy-@Ho*V4tjdaE_F=u4Worb5x@`a2PuBoGHCWc1w=4Qr6kwZnlVyF8#p1E^Bqx$(B5a;=@#nIkf%fq3l@3! zLs^Hu)W9|)EgC6RAIyK3}=pRG`fidph6zi=C%cNE5Lc3wP3Y)A!P9u!xsbBA^ z(kMcnlpw>H<{0p+BUKU~0hTDyjm^?CAuW#rp~O7H>BHUV{%K20SC6rpbz*2Lt0M*N z+4jA6syZMoZ79FraO&9LbdJwRQ>T#Ucjwe+<=1A`m0LR@J@8oWR(SM9!=c#kA&er?b6v2ld_CXb#95WbuNw#@7a7d^dND zbFAmk4}s2Rd#lCCchfrLGfxv=Y#EM1-w}D1L6sLHvUUfoL=9I`21}|ed0bF@oHPSf zQIpdX0%%0xy&pb+*TUd1z>u7`n^>8Js<&4~>y+*Y%?G^_U}!X=yd3?qD?YE3ItZ1Y z@cba|`C-I57KEI+ip2J99VC9#+&R-)sTD#X<&dHpld5CUEbGW~jVLrVYc zJ52tNKN@3q{mpM>Hy-8ymr;YlNu>jyzFB7l(Idd&Jp!jXU;c=7HV?3GL$09`Js$r!uouElL24Ifoa#*+RbCB(Rt(`Tc(ilY8DCET2R)NhdVx9d9>an+OpnJS< z0ERz^=Vs%Z7G=_Tv+3Nmu8=bTy6W{C6TV~9;=J`4DS1~%Czy{Oh{+cjheZdIbENgG z0nhZ!VTO%#Pj2zhWmbdxkMHT($H*E|>9o|lV<}6D%E-v^coD~AgsyEVc(Lk02Tsi2;S-g>f0#wG( zJ3YZyXM7`fVTc&xf`P-?WURe%-=G!ByN5d z;vg61J2q>%LhtoimFlFiBP*tFAJs1q~K2FRr5xhy|pi`PSss)^m=)4|ds;Z?ZdAtoLa5fbuCw$!_aWcwyYm zy?x!?ZF17wG5n(SO&QGq5!KyRghpG5%3D zWVrT>(2pfqjaZjCMG?g`!M~V+vo=jTM;4lgvhC(eBavY7f)mg4qIjiSTTyl6hP7;9 zbd{>r;O>akU;nD(N7$I%_}~=N$2VF39i%28IXNPZ5r*L*C%>Ia%*qlp(AxIqJA~=% zHMXaEQE~^zs3xmx_38(Ah{9$gQ3NKIvPF?Nf92cW2bcJl$#mskm#eP|6qobmqTKLR z7U@PGx`%uO@z{&w#*qIQW@LZD#N};k327T54~-Hewfnx#@+>773PpVGXT?|>(NO`u zw?0FuH!4MxG$R@C6WWu3;=DkG`D)Vh{aTUAueU+SsoKb$sDvk1A7q3@1Z1cifQ!t2 z84Yx|&YtbCwI9ETTbj=KoNA$!00j*$@NHva{;lOy4zvD`LGIkmL&LWT#YYaB{w}oz zU;F~}?!-@=lVMMv(?szxLv4Bpo9TjBGhK6lfv|L5oC_+M$z!%s>YB?qep2W3KZYCsvWR)&1ag_vMvp_XYV7xr zw5F}3Ceeg0-H~HgFY{0meSRpZ@8P^t^5|>r-_DQ;<{S8N^^0iRguLZf%vz5fhuUop zHUy^;>3DewW}a+ccMJGF5iUcghuvD8o0C2~TY40o)0p2MlX-fg4kf%D$%^j~)12M0 z0QmLb9=l{k`G}WUW~FlLk_+;;Czw-X8h6tJQ#R|ZV3mQstmK#MBDnIr*bSNnnpEu;nSIh6`oK=2**gA4fN(-Ua(t~a;zckU*|5-E!$3)7C~aJK zvINi4Y!er^7nu+f%=LI9BaR>iYbu*<_eCo`zhLP!VxamuqgeenjXIX!(s$Hw$&vxN z9lM3f&8-vQj~l#HSG_+jR*vJ9MGyO@)3N=mKT33#R%U$6ML<=p+^_kEGqC<(82gv_{%1%)i#eXr4V^nN5}LhW-gAkvx1J^% z;-6+J;e|b&#jA7A5A%IbwSM%%zbn`970lB-;5pa0eS9M&=~?(}A@lz54mhlr?|TlH z%yP>mI?4R44*iIqJ2%+yS(oWL!ah>Ft;fDRmvArv&B9ZUT}}GdC(4hMHd|jSW4R7u zb)nAjXu-_tIj%l3_MOiBO=TnFb)kS#-n4eca`Uji9%cWdf96Y5CtiUqgnk4~3S*hBf5SS| zQ@;*vOEYE z4NaLv4XSgOFDUw1Y?%LD3(ZmHpPM{c7S6-5%9+NyyOT&e{461Pj~feg7M@xjXWVMu zIDHO?|A<&}?s;Ms2Y;~mobSLwR8~w(tft90l&j3h`mY)}smho$9Z^4CI|7M>;l$MDl}?Cdf-`&hG<^ELx1y`2^9n^7Z{e8aX2?N;OB)xw_WhZ}%g$S9tflFnMV2VL!af3@7(zZXo( zhJX1pxbxM}ycYK#!1>Kv-?zp ztsH08q?+|NYioUUa|jBdshg_p;Dj6Vkp~HCLDZ$W*=^V>#(zn#4ByV)7F@2`Yt!uv zpY~oh7O@vv4$zpe6f>GZ%1h3)Y(`d6k83HEB+;cqyi|GgxMGHzfv29-2a`3X?c6vs zD{;x{HMgDSv)`Fp-e7;;L!WmD6c}oh;=uKe%c6JP$ zX(+%Njll!Rp9IzYUwWOLTc_KMYnYgJAvN2*_-@{a^LCA36nu@J%$H;|pqJ&0qnveo zLf9yp5C|$*KC_V`!$4)-5%gW%%jE3zBU~O&Hok_13ent6zbMLpG!%!~TTD#utm#w~ z7l4=qL$2cAX{?Q;UMbyVKBDC139T#CysFi7)&MWo~c8 zS#!fp@ST2E$e#sD5}6A-UgwhjW1#2aRY$ZRE8Wb>`l0iFmjVDlG}oMP03(V{dt4s< zo;k*gAa#u|R3KraB;e}>+)-??JY(k*cqYs^rrzPJ@o-jTlOI&B(C2T;xvpt)!U3!t zuMsKu^HRrd68O=ag{Ug=Jsv7RhrIY$#3_N9D5w@uSlmOr`i#vPf?$~Vg;NWoV!jZ3RG6VhSs^JdR236@UH#Ps!ra4}91zoAn zkMy^{9RbV&v95Z4vaMZ%B^xJSxsA67zv1H&Ygh;4TlBSGK9+*K%VdmAu8Oh+tQ*i^fuNqd#Tpmc1hfe9)DSE3?uJ$^MQ930kiF z*=1TjgFR;7+BvGJl-#RtFJ9`Jt6%5+8yC8;HIyp^{QBl%O-9&!oZJR-csqUYY zaawHTAFHE10`IvgM;8mn*|3=YpkW%yC3G_PZbg3qqH5P-G4T2>?rx=PrUC0@A^})f zaAy3nFx8Ufz>8?_B{_e-^0CD1bo*>QCO&nC@I68nZl)ls*fuyCJzUVveire8SIKYO zpX4g`e4rVHrz=Rl8cX@PG2su_i;$M_TxV#CU+9VE{eKP%Pz*|WVz&p8ZjQKRQTAw0 z!h}RQRtRXEm_y-VOdXft!_^^OHp%Jhl`@X0vOzAB7~!wRZy9MwdD!K-ih3D5Z~1hM zn!w&BeIfHHyZ@^R#s3(#=HDP*Jt8os8-$R~@9FL)MN&-tg??GuUysGu=Ly8M$Rqc5 ze_tnN;pgz;)4-qz9uW7fFP9|#+V)MS8bVk%KfNF@0q=8M)DycRTwh~;ywi{mN%G?W zoo2sD>;{Uw=zN!YM%#&kKkKyHMDa&i-khm1398>*8tFZ`=DK10oYj-tFR@s^SkQ-L zyA&Qd{h3&=C+C}H8y-a+$M^{LcKc8GS6wDtsiOHq?!B%nS*VGYY$)jVsS=Z-XK` zaLAd`FmQG4b?1do^ygX-&lSao9+f_#2ZNc$l1&<8v)d)*FKi~Z`-^mL1d0FLFg=0eQQ{#hCeV%cNY93;1FO4 zyFBAkeXyHmnEY!@xsfLpWS!Rd0vXJQUX1^EG{l$}MbG(7Pl$alUAMJ2{XV^!@7mUf zMMzOpIlCx8i?`|3I#~rNLJ}4u;6gS!syy(9*x818?^o=bg?P9u*{iS9k`y_qA7I6 z{}i}a%5qx4ixt?T#^=JYd~e%hy)09vI-SQ{onG@6o#`AgI&z8IHy7r1Pv6&WlO93z z<{JLTaJ!S)Xvr{|087%XOPpnZp3m0$`9c_iWXUFVj}$wmLx_2C_c&=vSA18{YO2~g zEAmf@uD@gt!XAwq9~YTg1-);c|N1ttxiktbR)qIm3s%lBW}F}LJ2F!r^U2UWY;YH- zOyP{gxiPkV0<=qBSC1-s@q$T5!I(L#dS72D(D8?5Iq4W4;JYxb_nE`5S9Fa-=!Rf` zoUVi-)Ypq)ont`$KadUjVYzn28?Buw9zF}B%s#vf&Y-)z0x5UF^k*h?BMUQ8-*IU zZR$ueMHAqz2PeUkEdV`NG{y*z!S(08;=P7Y?aiNvWU7p#*iNT{0&wZi)fEe_Q?5T> z?cbcRB6`kVvA5ehPdwQKwYoV$lJjNw?!HSmh`r7rM&n4uy1volg_0 zf%VzSx_m+H<{2>Yu$P-_%)|`5eIYi>wz{$2y*)?Pl`d+=ha5DNynTmgTf)0c_l7@g|QyvqP^|EWX?#p*rl&_Uv z=@$sn0*9P#++8wuZoV-z)Hn>wNzu#s8IVE!bT4E7C3^|~ZV{h>d8OMAo>nSe!c9Bt zZ5xp&neGCZS+AZ#p4<+ttc_v>u2F?$=nL0Pj!(QkbjG~f&#dc>{s4oo$$Pi)pM<izG)-^)x5oa0RC;*Jyb4!I`VLZGdbMj zu*SC}arYRLol_F-?o3_neFM+@#326jxrOjI|s*ka}p+&_#Ng8nw4nW)#|AMr79teO8x;T?DspHn}5C>WA|Khz+Yiq~qHbIZB8? z2y|vN2E$CW?tpD4iLd%{25dF#u^xR+ajk(O0$);qk@XYDzKgrC)gsQ|l(K7|>*!(y zjbhDXK{>IY>QI}Ps;DOsi`J?yqDBs@`r0Ut5zR0bN9X0~xW#5ZsSDA*&1zl_;Es6b z%e)!H#Huw}{pNE7mUm?jx{o}G+2-~k@SW#;+S4VT4QzTVSL>JQJ=TA!cEIpPYxn-# zt__B|h~5TNK#$DL&hA;D7Y3$Tm33;g^S!F3^l6>*Xi7(yq40r_TY; zbql}kf)sOZwp7@BkX!pcD(&nziXAPbg*z8uhK}6K7dImM+S4QX7ULLJ9=6 zOA^Yr|6?edY&sY2!`Oukft7<6a7I6jKR6$xYnzn{a`|a-%D-aUy7O9#JM_er)8mo= zhn#KD5AAJ(Iq*af0`> zS`OB*q>uq5UK-6aoVCf`RStrhOp{*$YPzmzw}6;}yL4l8-BjNfhN)e{LWd^ja8I)5 zjW`9CO%xxp-rlL`%&APWa(jM+H4IA+mRp1s|M@&O3ee5rM*zmk%s2|YdZg#h{Hb1i z#+K)Fm&z1sYP|yzxBDoOf4Jv*yU(5F_ES%x6`W4|4F*I^LZ?30;#^ODjyC=bj9Yo_ zdkx*w{|by(Dd!c$h+c9LO6cS^>GAM^-!(PLu2|#-3!7sZQUu6})u!E?*}n~RYGu!D zs7Qd#C6<*v!mDRWAjVuuwgEGedq}y)h$?4ML{TZv;bI9cP(zmrJnQpSWH=dV?XeI=(EXdBtQ(%UR zX;ElP7{VF}Svpx2QSE~t#jYqw|5kBmv;OBx_Q&$29pToz(_x<|I00nMa{k7Y|I!AN z*Ru8wvybe!k`=YS-{%Tx=Jm{sOHZD79qt8(My)ZpuPqy4i|8c3D4sJZr6e}dWan== zfsB#^d=FmCQ8qXkA7BI+XJ);FeJB;ZtUs|P4hv2_W;{33|7v_?l6oe1q}5Z!srgz? z7Cdv-ayLX`A!MbY?oRvm__o|)Za^h=tLjK6tn_-VihK(^=c%wct$&+~3%NYs`V*7s zRvAVB(8hI2f6&8Jb_4UZCO;%f{e3n(bc-{FF;9qho5ehiZFnXJp-n#mWmd&!t|t#- z)c6Zes$*pV8&P_EULLg-iT@`0=Y{;lF0sU_CP$~)(y<&$p}gF8XZd|t+x*R7t(hAj zB5WS2aLI?jXX0}QVPmUu+2t&Ai#pfQ7vyFA3;MTlKvNqnQroPgRxhV(edHH%uG|}x z?vT};&ST&QR#Hr5qu$kQ^0bE74elJ{Dx$+Oyv?WeNglbVS4_f2nb#XQgqaIxC=yK{>jstrON<8SSz`P;tEgoi)NCkg=Zob~XlMYknh+ z@^tImLeoNELIUPO_|R|?qAcBUaQmgP49J0fPV-E+&?_dUEY++&0aSKge0v4{Iq)kN z(O$W7d*j4|UuM^+g@Ns}<$nxur|Y(z?-q3&&y+SZIkz6_1y$gL&6E;Bc1G`VNR;N2 z5iTPEd0L>=Ai|z+=^>tIRJ{QQ=1Q|RNZT^ozmez37VC2AP9+1b=*BOZLMj{Gyxt93r z2%zIk-v$h@8Q-rMifFgh8uUIZR?A~`g-Yx@E4fR5h%8=0IU5Pey)!rD26%F^2}z{9JPUjUvNPl9}*sVx4}Mqeh=P&vHLvx$WaW zs0rj<3z&D@l!)F=SW@HrkzpP6hRZWWrGb>)g7=XXHIFs>n%YPgo@`xO63%HBB@UiG z_xAde8$qw`a1|=J*jxgeGZTa7ID}W>TgfjGj0eXaeT&XlS^SZWL1$p>zRx+4EMNWhC;tqig z_-1Ts5!A6P>Pf7t#9B1<8~H`eusCkfWa%UMZX^p!0};WVdrc|+*&NbTlYqUp=BEV= zLqqunt*Y&rZ4Bjb?A{e~iSt(6vHZ>I z{(fY1>y`E2Qsju7oCog5D>h0i@`uA2{*Hv)NzA4C-~Q-UsLi`>Em!L$r~H#xcb#(e z{;a;tveUpg;8H7qIopM;3AhzEJz`-0e74gB!3PCBEko2`#tZNn8lQ5Peq_o6?rx)t zR-OTbyThd3)dtMN*QX11j8=ATm&)ITR9UW3*LQBYA1^aE{>QNAwY``4gRrc&I|LW?%rY!W zSeiKIrbGh>c$=-HUbC&Ox9YCJ@ol=Tz6oe?m;&1A(_Ds_#aEi3$~?2NXk5la&E3y@d1EB*q4R@^vK&&BEk(4Fk! zKZXwog%_W(i@LhAEqu=WyBYGOT5XDZ7llz2%X(_Ce1(0*^n$?sVaS8aV9g_jia78URL=$@(4#{M;UU>^CtK0bdWxg*2+EgGELq<;MCYMkW* z)KJJLcpr+_@q^rf5BEIJ%lX6f!{WOE#xUrTY%2WNE9i-;K2JbOPu2o9=DNAMP|0b0 z#$(uW!`J(fEKN3{N76@O*`H^=6UA459#W490(?VR#GkcaslL!bRmD&Pc_^(P;v7psx0F~~ z7LBZ_96W}~*GDy%m0#RnYB)vIBjeg64eqwr^4bc?2=)y$I`q0lrb!8o;9vZE*f7x6 zITBubdN?9H8ft39PKlV{k}F<|qSlRvVNPoU4ISc3CN*?C@jMTOyqlv)HNngE&N@96Jp)kOmga-_{}`%-%4eiO{Ip#nN}cCMTZ&~40gD#=Laay7 zi%!Dw?}2d-71K;Dmi%yzNm-!+-8ui73eg_$I#;oVn=0aTM@H_X-d)mp_=-(Fpi>(! zpaVe%-5G{vYPy)$-IGVNK#-bIKcF!}^TslZw)M-jk*S-<5NJ}313&Gn@?nQD79N`9 zf%iK$+paf1NcLY8e^t7>kCr(~YT9(ngeK-7#MR=#B@-bT-mAlpoE%7d>HoTmnoSU0 z)FTy5{D*tb2eBtZwebX@?+@LXoSPoGQ1c$NgNfHSsAz2irJvWa-7Pp;f4*i7>kvIp zf$?B~c-FR$ufy}cK$|yr8qEn!oU?GpIUVs=?UFPfrNRAUZNUFt6$wNf1LA?mu?ex< zc)73T_A|ReN<^~HEv1IKU&v59ZMi8+t&@FI1Kk9e4y=!KxjpSXVsDi@TRzh{49 zg}?=7m&UE4&Hek!46LI&n~shNN1-Z?6KAy zB2lQG)^tU8mN#-vm+zyDEy>fB8-izuT`ja-dG?eg1sbML#`UGIWl>xxWvU=2|C_OjYteXM$(JS;Jn5kbhtu zi_uVW#(v{1d2ib8OVuZ}0k~q?^|7FBA%1C-Z+Y)IFlH>ZDSxm-M~C!zIl4}$xy{SN zLntMs6z3r5KXGnV=AA$PovX3i6GFM$E4!JzoY7Sv{awjGB=moR7HnqDG zO!AMgw@Au(*yuAMQ_Z0u{oRA_AQ#`46WXwHs97H{^r>4qoy9BdSA8V^<&&=?#{zF- zO?SSj7wrvslZ~?_R`nWYVfMzBfmxLJBa^^3(r#2JeX-vYPHmp!gB9cKwBVz9Cn>G6 zfUTrZ%A|=f!Hjj7+Xl?&7|~6Pr(yh+csw4jMA>XXGfaqm`tIz^@v$q>`iOSoQG_%! z6jrxw>c$s#Jq`?=WfmjFK)MD9kvYvs%d#gIF2v@VPuxG^KI+$W#DQeK6>Lu1+dWlV zil4W^4Z83#Nf-@V?{!5Twt34xc5D`YL?hhYpViS-{Nmktp7NzDMgh0AmqV3nCV=8S zfpiBY*42{azLfuK`{td#!Et})mX*PXh`Rb09FbdO#XGe6jTT@Y%dI`sZD?YxMM6Uhz zz!#(bO9pAXIV0xUqoiNvop;KjtD9JIe1;ey{aUi>h@efg+2>uN$H;(!#Ec^|T4W2BVRpovOl05i5_d zNgh-uGnYKHCY>LFM=R!ppSWKG4A0jg|IaUp1=tH5Z_8$_AP)Q8FN_!lEh5#A0ZpTO z3nLZzAH)3_UL-I9z5UPv3=r8*HS@V9ON0sMe;`B5>5w#tJr}gp@pr!y~UYT>H{XzT&mbzD$byZmC37|qFZ81#9IC`Itx{LU;96w2WT=+`;9s4NtFHm*=83${)7WKOOX+Og43vk|I%Es)^9cO zi1>xu_2GVJJ0i|WxW-@4Uh1mM-L&y+v?4@P(vy5R5zCA^AGOOy64w-#(nvkQLcyjS zArS>zWBCjWQF|xdpe(RnV-R-PPlb~YYVwWviR~2*>TnsK;FFmpG_j*_M^G7vxX(G`%hGQO~Nj#=y&ZBKbWuSPAJRv#(Fy^n{Gn|aSAYd z?I{?)T4jAa%hDCKR@@0e%Gh+AWR<5r_IGQj?f#rvLhR_Ra2A#_r7ztKE>`wA2{8-r zkKb{0`p9Mh9~;YFZFaYNsoY6cjq<_RR20Y`4@0v{C5OeGq7J_*El7@bWE|}7e{ENs z!b<$EuRcJ>1(p9e6)JIn7~CbpWJQes+4>U>S(yNvPUI8v8;F=cN`HnEZ+Bj<#`2VH z_cU5>laoS|>?6vI>ZfJ{|0ah&=kA_*j6WJH`jQILP6_R$(XOL()R)Rx%} zujy;=sa4EQF{p1}qwF?%xf;*%|6R2LHZg_Xk|QU zhx%pGy>b+5w#-6iB6NwHCZEvhrJePD$i~(+_=u9}_*YzrHlkI8Yh5VJPvcc1dE3!1 zs1JV`E04_+bLTs_g#+p1{mT~%FQea89*B!jGmem7EzYfGgDgz5fZW8LVoJv!T4NnE zZ;3qz!LsDt&e4N!ZKae)ly0bil1@smcP~W{$%nlh4%ZwID9wI{{Y(|7m>z@u$1%?= zewk5oe<>DvJhPj*H2|PCN;CCsnyAMf&rm1)aL0B9H!jlBYHX#mn8$TN=aX*XHP5(4 zCV_OwVBgvUUW*K$(wkg6r01S<-+E(`Ym8-GP_(bl%rP>3-K?QFi`Z?|+|`&!GMbsS zdS-tYXgeOnT)Z!T+Rbj=Yl0pb+vS>=o=?{D3{>r9cPWY8ocVKbFHWb#a^+hiuLUvt zndXP*G{+2f6?3-Ff*SPm$H)>r!g(*KgNntPwrnpy(qyEq@cluUyY+s<*hAB*^d8@p z{y9ZhjH6B@`EG0dxuZe&tYr*|L=TY`#p;M}(rEqa?+=gQH_9SWDnN{1{Swz7d~sO7 zhng(S=1h$QBooA)Z^Vam-@<YtM;4P(OkM;hT(HV!_=UY<7P+K!Ek_vFfKksE(TWZAN z)i0UIYNIfY4Z|T(I_o}~6;NI1X8z9$dd!C!bblsQ&X3r*o%sx*#qW{+&db5suaOS@ zZcep0-7}UQ?)Uk&)(vITG{{$#-gMRPkG>@~dp#uKGsnW3f%qm%lWn8tbm7`ec4gdX zY%}?#+VyB3b8`BEg#T^y>GGvM5)H4x;}idmxhx;`dgP{&XLtJ0jVa?3`||-PNR#`c zQRkye3#MVQ?@;D*BAL7KPN~*U{i**3^y_ITW+@KQg|H9V`*?{u}4|0Kq zG&&b6V8^MN<0hY`B75%%BX{m@ibOlc?I8o?(>>$b_%It@fZMkn;lh(xQgu(`O5BdF zY-`I5K_6oNRzaL(*rm@7s=xQ;;F;zMM(JG;+$|u)-$uMZLia9dK8mT*RUh1NQ;N13GR`YIpRoX6K+{wT* zCYd+)c{q#vI9QAmdGA|`P1V5c^*w)s7QIcQOy zAQH+qh3>T6q|)a(1s>to+YrboG-6FWr?HMk*|^)?>DT>)?K1@Ew0>p|ach&ybsoq| zFvDyDDxnKC3bBW^LL3^*^v~-FASgO z({-CH#ref-KiHQVO(eGPb}!IdEE1#fFg7Ek)zHpr43M=Im&>w7JJaz`#;K~nS;SU) zz#hZyj$90scbr*`FV+Z|Ql71AVG8#rXNXJbW3tY>*bKhiDA~X>qk@7tYXHGfbxb61 z#_g7`n6YUnfs^QrO&uL~bw6Eyg-NK*VVpYi2N~4EABD7aC7MjpZIt@ndAq2kZZ4%q zjb9V7kb3s^y+4ygf2p%@Knm8v=9FbGsW#A{J>80&pZ(CtYBAnDnMrcqs2QZZ6Q5@c zCXOskBKGHrr>H zoUvN|Zm!o`{Pjald-=bml@ zPEXw}vj1bK)o?mzuj};I!x@&R$q$r?wrS(&RR)=TE0F5>2zQNO)xn3!qu#*UFrZZG zTxf!9enh{=(sL0+=NGGQK_)=w{BWgE9FwTcm7S6? z-hSi7gr0$bZGOS!(-e+-8Xi%9&2RQO4>#a7wC&*uD-S32?FQno3fPWZW`VlubfiiRg0hJry|B<8B%WSWfai zA)dC~K14NvM?p{Ck^|Qsut-^c`8XLp>+{xWO@_GQi<;X`vKtmzdOo@c)va7dxb8nX z-pApQs7`(FPNg)dJ5MFeBFLv3=ZG=?A`Lw~MHD^=h$AdEq%FY+4p!>O8+F(w%JbY80=F zTUL^^QMTzar}qE6?oO*;?wBm>&kV>AB9=@jvUS+JS;P}z^St2;Q#&UyD|fEKJOyW( z$!A@;mSBJsi~;dF#tZE35@`1NsSCFsw=IFr8>jxQF7fNHq(w*`Pi$RLLkrfMT96Np z={;Gs_#0k`ikI8Zk-7!_2((8jzrj&2R{pyv*G-))(UBMCNO#oFHfiLH3qev4LsUul z#^`=CNXD=WRBWbp@LicIi(9tgsng0pQeRR7vZzKmb%>J{yr_Y9a=~~`+*C#+7SUfR zVUfPqg}iZv51=ofxbg@z#;lie9k>tStOJ2N@nv)`?xdi>nv?O}C3vs?2eXNUCxQrk zw%VZP7Bj|+jmWx0QfYzk0oYs*yFL(<TaL2oQPJci2u}Ww@1A+eSGU55nAx&$LeCk9ZO7QhCzUW3Mu& zJ7vX?1U%sqoM6_>xKE{fa=_fNG>^|STRYiyW={)aJnXUnx_nHNI0iKuvC@xOII^g6 zNg3{*(UWY%b)hO>^m$vt?rRn$=oa6VWRLawg|5Vdl-!@rGkI-wTAzffpNrc+-hPlb zSJ>#;6_w(jRRhSQJRyBrrwJOvj30~a?JKf9v2O3uQ1}T?f};Yjb4p4aWRn15pFYsH zYHt?qbgjg=IK`=k*|B`v-r%pQI{{aN^dT6xEtuSn&@7_NXJ*wgPRq?;yS>9li=LTZ5QD^^e%emMW_ zk2NpmF4(cM5TI$ijVcjkE!BJFz?&xRTHJ$diyHK^bl+8qiv#dS9SS%&$_`ZK`v9LxC z&<@Fe0ELMe zW3FU}_vd?L&WAL_J@Nmym%CzPu@w?d|HR#c!*j3QA5x7eaSkohGRE_xA5UW!RfcSd zFFEJd8!nPHn@~wLQ5Qo^EVe-Fnuh%@L_ziNNWV!b~1T(!u8c6BoEO9Lc_usTR)!Z)2McYpC)9Eb7qb%7dk4%<+v23gKf%tiEvCU#K2%_03$c-s>Bk!URNWZu(%k7a%Z^+Q z=1NtiM(Kodab1fb=lj61zY5B+)UnFPOj|LoilS1bOZYXmMWoiMwKad-(p%DJZ6_C4 zp6?xV_j9eCX)?|?w0QWt3N_xPv#+m7Qn8#f7L7n9^jP^;D@nuUWMssB(M1*U?N#Bl zCzs@=@h`x6&Lq-xj3cn6h5G4O1;#0zSD}@7?bc9>MkVL=&lFh7terc&L5?6cc;h=I zkcc8-N!O(?1>M}U{!h!jTT@%lj8d$J2(iVqydiRo_>#$pjb)Nq{T1Nwz7}pQ3dC^L zAN75(h`;}}Ln_N#waHof)#kBR%x}YgUg|8ZmotVDxz3~NB7c%*fsrXlw$Huy?_59% zIWYoN#WJsLXWBj3CeqQ9aCvo6&56=bVbp5Rs=QFJxj)eszH;2nfJstHxgH`u8Ss{* zfg*g`{O;i6TU`+AF6m&PB$59!&vPmF%fC?qFn66pr%JkCTL>I4eZRac4tY`{t`j_rPgiYOr!NXE-3jJAt zBY=VFiz3A4*}3|@Ch1ddNeD0QSrSC3Rd%6EE!T&5La@zGPDSmJ={BW z%z%c+McQ&Tc54Qem#5L==dW=*rl5D>Z~Nae%a=53JQnAQZTsMVI?GatS8rqWp6nvN zG`r(rP(SRxMH`VhXSi4|Vwv;xBL3y~Oi_yip2wg2^QbDSgMKp6Ur#Earbv+HtWOL! zt6Hi2;A@cz%0YS5q&-bYAV?$06hg3HA=abkk}^6!0evmCh+t%COa~SL=;pkl6Xg_QDfaPkjM=F4r?0m(_&e zM&PX&-1Cja9kmMw_f!<>-(HLgNSH81oBMGoOE_*dPi4c}3uiCT2p0)R=(Uu@~5VLfss9Lq@*WRhEB8d*WC^1S98pLP> zu}6OI^Zo%2$MJaF_w`)od45hqF$PjL6g(qt{-*QnSvQ%K;&igsa2-*R(b?-UafX*! zw+eIqGI8bwK!lGBQTj3iRJT+Q-HUVHf7>$YQ25slbL2j2M?SZRdl0KZ>VnMPU~k(5 zx;z=1U#^$Pay{<0Ec}%_uIb^rHH(L2Izd#ArFN$}3?)etpZtjdjnPM*d;e(`hBp=Y{}bffSz9_d2OVApWi4#Ly|A>F zKr}TxX2w=GMX`h*ihmGSu&Y8&ZO50G^eR0XNBNbnpU(0l-VfAHy-U7+BW-BH%{?6_ zmt&#IA=pieleRtw$%2nRjK-nD6ZIMU8_i~$3F6L@#{4h(U1pL1uY&3zta@XAm)C<^ zur=lxQ0xc(g#Fvc~uQ}RI5k@6r`O*g_|zX#XuVNuO9*2crjQdh}<*r(!R7<_10PGL)YK9((_;aRsyF| z%|kSo_Cy1Xf%as01mA*(ZZTg$rpy=Lm3HY?Sl&+J7i8f7sNOudiSN+;FuCe3-hbJ3 z9z~#fZxD~WZ6WI42IyG7D#|@Ye-!N0re58s!)c$9DPOL>{^xXbJZup@Khe*pdEwIy zr>9+=E#~P<#)~itiA*R*^=8VqAmU>xoemvd_PRbI$|$?ke+a(>)PcvIS4rQW3y-1B zeu@RC;A#Hp!II5%n#7LIKFo0cEsb6GUh=bwE}i6aKki}Nj5P)Z+9M$Ep#$7*z!%X8 zs{DUcxq$2A?cB*Qem-|tT! z3_o@vdmbxa(EM&DjiJLs=J*jRh~?4E+u_79%l8H3B#_HxsIJiQEv_kOwhWABqopSn ztoY?V-^7IpG^hEf426m}9a}2qp{L|&e8R!#YxT%xQNtr@+NOqC-YqG5q_GPhEA;T) zC6{Z0-5l7>LzCbDLIWUHxQKUsA9`YPQdH`CE#w zL8_!EBAL2LwO8##9>e^6KTSbU;s!x+r0bdr=k_|Bmd@2AJ@ochKUx_gU1+}YZ#O?n z!9H!Z-Z9^gIghe}4^VfLvbe)i!mA^1SiwMK=yNlN(hg-h`_a?UyYh75c1Js3$b*i4kzm_%7r1w7YRfSS+06Ms>nHs*45gJARbEZg{u*W)EDuffRDu8=|gv=Uqr z>i#C(&l*YUH+8Uin>CQm)BBKE9I?0wIrE6KtaRmW$Qvq-_8eI%&$uVdY7t;bMxXS4 zR)9Xb{cQwhvk192sQHAbLrP_bwpu; z{_73VKCHWHc?;_A+Z9eBQEleqW>Vpe<#5eYVA?bmO3rwkdk)ZXJS1#N{DED(gZ;|k z&D{eMMljw$&c(O>s8w0sJL0>#GB^%QD-~!+Yy>Oc=c@kr-flHCzWL*aeACM-H-kxj!+!3_FBgLOMyi6GRtbSkNI>MiWJwVTJ4ra%V;;{-$lDET!z z7C}n|HvyZszYt3^0SlC?>$5)Na$q|5$8BHkzcYw^!p7`-&U{}{4r28ZIl581jeGP4$*Ha@uYljgh@}KkN$K6puUb_)i5_mWwoasg@8ybou2vFm~?L^Ht1A;J@a7I zdrA#79s|{0XRbyE-ObUVn?tbw6e?7V+)hhJ={^f~qmQ!z*%keczV_Sz<)sS`M)RUdj(XR#v3;EGhflfGfHAc z3LhT{3bZ0B{E6&=I(NoVg7h1wmkp^AC&RPFTWQbR#a?}SstLLvpFh`?`3uYfQu#4_ z{m%~z-Udvq{ya(R@d)vdth?S?8j~{k9->tz1va^GpOs;{M4jppV-Zp!0P~Gm>30Sq?aqUb`kH?ZDgn}>)X>{^0JAFa9y)8GGrB>MC+czS!5-P&Y~^U zJW8*Hs=KvU}%K&5;S6dw@WRRsYH7q#M? zgzBsk;0NZY8|btzO9h+~I{j`PnK-|b-rB}s`!S(JJE7#TCRE(lkLYTYkP%ZT@p9q1 z+3@Od6oEBB*W`xD@vnEmUJk_reBtrqP4rQrVJ(6t|6*1oF8aV{LG(_&8~U#A+Rd!| z&rg22gm)~t2jBycwexKLL0LwwXwVGRA9Cw0zsV1(1nDbJ!DA*dntj8&3FOVs!ku3!`@LuBdA}He+zgM>B4WW zz(u+HP2UavkvSft<~%kp6Td_SZ{J0l&#)%Hs^rqRU0TJ)BbyF$E(JqaR4h_~Cry(> z6o+fZ?pC3f{N%o}2n<{B%qYORt+Ss8GK1KF!;_}jOEuajf+5}Sdrs#ViLcsXw}Q3B z#u#>q1m%_QwlJizGKQU@=RvA#C$g5jzIb-;~tvfN-_dmDVNt-!vUH08L1P1bSzSe7Z#f@Okg9hoe z{}Vj?b$3S=D{|ZGRy9Yh_|S#<1iQ&7Zh-4nYqvb7S(ysqWR)u!=;yF4 ze-?HY2P)!%2pM;6JSlBLqrz(re6aV6t~px~tqE$1Sk9l4{WezC9hr};mbUSVtkJO( zsp8^YMRBEAzRIvw=DP8xOPxQ;A8;-*hYS(_!)?A+cyS8gef^`*FRrl))okYicl3}R zf-uy`7NtNm$*t?Wv`-E+u)2l*VQ3rOcw?6DuG&xY$(du%^}5Fg1erf%;7Vwyyg8O4 zP`Dp?5+vf^eFb_iLUMtx`a_)3d6)K!J2>G*H_P0R{U*5L!AwcTJFx)%y`#Z~M;E`k z-~l?kYnCJ`XJyXelnCY^N4BGp4ohNP+q88|z9pti?;v9-)yI86twjT=Gd+fi@ieKv zx%cMx4QFNWw&UmYXD68+bMw<5F3v&Q84iWw@PnPL4KzME`I?hEDy-JjzAc5@ftr9F z7YPk0M#SYfKHaqAJ3Ae0(XC*u+SKY1v1APwn3@3iU)F3Q**oG*+GzZB8J_8+n#Og{ znc6n^p`+~;KT@iKXUk)$8U!;vi|fO`olc{n0@6ZZpZU?V*CTU`a(PY%+C_sIFupFJ z&BWJ-$HMM+o;Sr8nwq)#Qrw=1DKL zuCKV3Ou|POZPB;~SKr48eEj0g;qK3*zp9{`7~59miOfNk@A}i6*j=ulu&nm9c+;;6@yb&&!{4Cr1PPe;JUTy@ecpqe)Y-o+aTQf_ zsRHa68ho@+an(R5{&qs_sK>R(tVpN)Y8xfn@IwmMCq3R{5uATwq$m$0AlQ!YK*GVIX!;2%OMK{hKn>a$ixD^E^r`Zm}xkYpm4XCYpr1R3pb>XRw>OfnL zXqf#6-o!fsTK#aKG}z|rb*@C%@L+d01-f2g zo?=X@ap*>p$*uB(xb1}5u#Fp$4evUfo$F(snK?KpMe$68Crm6pW5&LiFL%L{v66`C+(1PwaB5om;fkXV|xRIFZF=*MlBHNk0Hqrq+1)hurP zb__5Va}!&baMu+#-{e>$++=oQ~}6YFQ-82kF*X>z4Ra`~Mkk#+9+eX^U{ zUjB|>8YrAVBO|TO7hH}0-GX#=#S2!;WM4H0TYu%0pE9#m>DU=oRYQi7fhsa9VF*wz zOb~U_J3dY9diu^fQZWD(q_8=*asZb+LOf-PC79o1YB`&3V`EpHG<%2%>OXjN8|799DxYuKKEzC zIa)=;4`RBg#H(Fa3J#-nKLg)QFZGvpum_0$jxK}bhI^0t?5AYYJEYvE(~iIPKWkprDR%BOHHVJc_n;F)b`Bz2ow|8{p; z%qq*%zuR$h_F*6Axru785Ua3Y9j{D&K z=IIZ2(}g$kuS&98hSA)|a{v@}-!g6|3{}zH;-llzmt93(#}aUA)BQm1^yZ|U>onWI z2en=);_}+(y*G%s;EVdc(in}}S#$?=vFv_pE~Hs681UZ75a? zIU4F{d1*v!xNcF*0SrckPvQ-VKH;myqu?jJZHm#W4NfevDJshe`ySVKFhIp7aI;`EGpxu z@M2;3sgL0r0gsQ}Z3qgt=(9#^(djVZ&s>OkKDiobH*(PkA~~)$%~3n)qn)*I7gul} zR2z)09vBN2`&j5Ve}3V~j>Y~V*TGMFD_K(JjggayM?J44r1dv;>SjQ@mkhQ$7dN-G zduBH&a>8sf%9xQ1?#+z6%%U{07J&Wen4*`zIDc&E)M&@{wCkK4iDeVB5Fg;O1^xMq z3ex zUTS^n8AZ$KRhALy$2@j8#s30V~o28B8Y#ep5c_*7FLmw=2-CluOY`|f=G6yzu5U+a!IU6PhL9s zww`4pTQd8<$Hm=v@jun!A1>lyl_DWNB1MQ4ooxU5%xwZqaz&h@fP?(3dce`B0iwn7 zbw#>u;E(vfWFCg;?z)rFj2g&dbd3bbo`QB^+!b;!e)eb6pfjh@$0yibt=9aNVkR#9 z^xVVrZds5L0mlbJGdFTIzkQk}B^)j|S9e*|dsP0!LbY=;)5_5IHtf2E|KSq@PI9f3 z9{1ki@NW%Ar?gWvCwI~&`Lwg)dQ!B1SY&?*zIzHnxOZ?ZI9DZxbax>0)H*j^^uoiZ zT(^v57F>{P9-K0rEqW4?#cJx5X_dR<_+lup8u9p~;e$*zvJ|1$X#$!~re&iYZDme_S%pPB z>cxPLsXMS$bgl%1o)Q2bCz7VOs<~`;L^|%n%KVnaogVgPTKV$aE>cr!JMJ~kFtI@N z(Hq11#kKg3W1jcU~gm3@-anYHKy;oex@Gys`CqC3=JawU_kprt=5GZ8 z!!n~BorI*rUj8(%Ti)#Y7bv-xkaM*PL6MC5>WtnI6OTLGvWg9}_Uq&ua?>6r8u`3H{H|8Uk6*B6pvP>>cz9UsqT))l#kIJVv zu&fjlr@0PADg|Og=(CkzV1KuH*%An#xeEQuGneo+S4y&L{<15*201O}lJ3-}`{7<& zAao?}vx%tx=8unQx`qr+=y&ZDTS5UL!XhtflY9YWJtV%9lrQLcw1IVZVLv^O@$j>e z&`;Ys`PCDm>?Xd@{*W&`ZQzTHWfp|!1P2BV7KcuM$k0a^qS9s0k^9{=b^s&#o|>sP zG4n*072#6B`*Su8>#lZpGQ(~t+-2F%NKHX--tx!!a+)}vAo0}Rg=et-IL6~Hwmopa z2^@A3qS7bTW2e<|2SAYM`W?H4?4WFQ##m%uEyPL2eH){Wx%g{onEG!`0)|xB(asl} zo$O5HWhG8U#RW||$GaEhi;*ovVb1?#EWkQ3*XuG)eZNUtr^i?cM3CGlL4-m)^@5L= zQ5wv`;62M4qVtgQCqQP$8F@0$T(eNV6@P}`CMM>-D3D*MXhW0koduI#pZft#)>pHI z-~lHTH&Z7x-|;)GUr{Fj_%8`#{bSYtTs!DN3u$t;Q}zANJL##R8qS}75N_?YjL*{C z?ks3xG(3ZjVvy=*lrDX#Pr~O_CI?Ghz2zYv?`R)8*mjTJI*iU#WYP}3Z-F7uOjMw& zKwonW--{_j`G8hxZI?F1nUeoojpA2%MI9zdmz5qS(FaF{Gv2p+$-(( zi&d*x0J#L#7k!#ugIeD?X&6s8viP*C9xi&);G-Z{!=mA-3vy$+fNLy;Mz96;;1Si+ zPMYiQ4uJR$VoyRp4+F*wkP_qsnFf7gnEA(>UYwN>FLy_sQtKpX#A)A?N!dwze6#kI zqlP3K8hIrr^lZ^DFPwx@{Swt8A6W9_GKAXq;t0SC%hRtJ$(F>Wd54YvP)jac7P`dp`Lsm3o$EQLkb(Ku2Cv)IY^7$LXNdn!Z%_b=mK@M~ zd(3hxP_XXYotSHW?jxd*@1i%08>4p>p4JpOB$imyKR@0`_VNfD)_4-2x~vd_#a$IIWMN%s@gcj_m9HSyLmjDKi}GE z5rV@qavr@uF(A4cSn|_J{HQvnz+umYZWwn@a8eJW#~glaaAs)Tm{JoX)-e zP`JdV)y;{N{1*1U>{rA?!T7+~){@40<|Z0ePu(VP-`e~xd2C4`{l2hPsXtmORsy03 zIRCgL`Z8SGWH#2*2}ODG>0#ep;UL4(Rc@C;O|R~f4}l@(x&j>$p)3lkATKlw%1pj-2J9&g92)q&hy7NT>+hIjPh0{P$4Do$o}uc;o5-qm{x4nxG~eS)8$ zn>aRO<+a=lnBv%4kW&`m^<9A*9A;_S3-L=&>FZ|a@La~SR$Hk^@&Sb_qook;g`=r3 z{0uIdf;zph=u$*QjfA9iOaykR{yG|pm3P|byb3G~OcvwjjD+gPzu3{bPOlE<_SGH+ zacTdDcjL_)35j)L!`hQFBy+32lPJN4W#50R<(8=S-pcZ17;Cj`qHO#uR~ryVADAJDJ4!9mO3s&X>g;}N0eyK_%YF(8HXh#hp|eNVDa|0xfK_Xn6A>hE zpNo4(dpaM@1ae}I!Dz%v@}wD;#OLG_F}?@9H^SYR{Vm_g=gOi_evxl!yM8URrFzGT z*y*LaULF0z#*v^nE%fR5#n_#Q0x*rhWdHp72Sx!*Y`H-xDTUplBR8I_&QJdSma9f5 z)_p8Uen9gt;*QGTb93>_P@DUZ=X6i%naGjXxhKKw?q}x~@n@7Bo|auBi-ynwJ ziu0)aN@o=rQ{4?i8%9CJ@i8-qSL&%dK!$BJeo41}zi}^~tEoam9TvW6S?hRK5I2`m zb(rYZ)t`SzGp7)B?82mjzukF&idhzttX6xFC}ya^(^*{52qL@~eX)J+8PQ?X=+|P5 z(rR0#Qpew&Cz{RSWqE@M?3N_XzUxxXXD7!LRcbECt#IE;I4O&0FlN^Wy>r)hFTc0z zX!IKNOI)N}R4Z4YJ-_A*-D(dahYhu)(r?zS85!)f$2P4*+)FHWvzd6e-9|>EXkLL{ zWYLgw+&LSdVmDAhcpBu>ZRP1`ZwddpUw~Lu~{*1m_jr@`?M@(57nU5Dp87CUo zj{ZF{2JGNg@4&s&K|orfF*oTuqbg)b3zmeQePUvt{fRe^!|SwTDFM#19H zU<-~!ePRV%)i#P;@amhsfMH|qSle19W%l2o!~)wJFC#QSl*~8JvHbN%(Q^`&!8TRkSKR ztik$G;IG7NaJC^Xw}a{&zGHm`qdfs zlDZQGyYF@F1$FOQ?m9rhG#`4BM%O{9kLS;xFBO$bNc6+IEM{RpT~B7wMf79%`A!F# z4eb!RZkg6tH92UR-k#MGz5mOaGmFZV0O!_MyL;h<7Z#VIW+}CX3|UCHcJ3 zVX<0!n@?(I;;$5PN;i-?l-9m$aaG7L3QkSE&@uo{ST%!vaJ7Jymb8oYDM27buhh=S z6#kIy?1gzl#X(X%yP)W-TU=ax%y*;I5SSO+L8i(|-LR`Tg;A8R)G|3AP;|ermx>7h zONS(zmg!4*&P<|y*2S~%n}dBe$Pdlg&^xuDLWv&1oa!CV** z=aGtZe~C`u1FAP2WH{$tzUr_!8_-{Br=|ytZX;E1vF_uCsqXnR|0IhXnxWBe!TuTi zoLrBm)3kpSOy`!lS*-68i2!Rg{M=(FJUBP?xYyGuRS%!m1gmjiddl>etEQMJFb`)9>+dZSj+0g}yInJXDzG7ns|J=0Wx&ZJMPe!LbBvJpF zyr)*XUVA)Fq%eSPZSm4&yiQ_X)9qo+%i~#2?igygjCIX|*L|?>0G697+Ixz}?e6o) z+nCYw<*-f4os{pscNLN=G?N;k?Re}fa-Lpe-XF^g2&DFH98HR)($JnJ1!N*HK& z!+f}c_~AMkxn7UE--VGat$ZHUjbHk5Z*nn~Y|sF$ly-{JLAiF%yN|AMv6x(oAo9aG zuejlCD{*|GLAh0bVEU>5UlQFjIK-3_ja-v{J!I2Opg~Qf?8uJUZ?UFF&$yY7YHG|l zH_ewd0=bJRs5rIGX@GxU{?yRXEdb7KTZW9(2uHJNzFf~C55Tz$MSYR8%t~5tE_H510Wn;mOBo|3Y>kB z{AWPdhj|RoY=;ZofNdvE6cT+TDJv{`)*FzcE){A>gpqiX*Wr((1^ zR3SkcvQ6MtZQV?hZdT-hbH$QKDIo{AsvYzg9lx*!27?B@2EWe^R$^$7lw{(kQ=Yk!I{sKGF(hs)JkuvK|H9zy6?Y#_(cgX_LNXE z;quv?9ll9h)Xe6k9CNyi@cZdmoPdqP)LVB>aA(%i7bVks{ZF;bE7Ed^7kgRqd|Ta2 zPyKrA9%Oq1hUJI$0<#*&Sjv~e5Nu#-56wd;?#^l|yXo7w^HF{6uBkGJ-`Y3)wTO>b zI}kzFcm+Eng$KHn1~A-DnEu?xL@r2mem7gZ4u;qTx!DFIWZySj(K*|L z_I#}WKjAfV$FgSuf1`s=3N+0*!r;Fzu@{CN$|^j6f{itgM^uESjasW(_N0 zWZW;Jt#9}!QK1~zkkePdUZbyt|)KM>A9O}=I zqfu+jguXa;I>>(X% zD1b{ej;h1sis(;$c+e6vF9tApAM89u;o34JMVrjtYSOfYcn^zu6X{;j^^#kLLfW>5anhSY`f8*{s;gi0F@5A#xkmr#TYjRbYqq^@-mN! zn!6_FO?g*%7l4W{cfah^P&`vtmjYwm;7(}vkgdU#+bFw?>ok{07^7&&qJh#P>#fxJ z*Qm@=L~@l$>!entdi|0QQPugVfgw0-iOCh@)XJSg$6{AMbnc-k2ErHJ%yhbEWWi$Z zJZdht1AQUhw@^8E>CVqzjZqS^?sokxG!@tmxT;~_EbHH7j;x$7Ut63Xk}L)(JwTh5 z!|#t{Z#D>DosAK8IU2#?6-_$J3~FgIh&k=!{d%5SdZhtEu1cfND;kmA z@DNMP4z!Mj+1U!(M*~-BUzWI@fveF`)0#f7ooM1HS?^9Nzzw z6}pB}0*3-iV%FW=&1dZS`5r)I{(3tMN_GoE+(H;5HYWA<&pqIQUFf(VbIsbl_a>G1 zyGzyga+rg{Jg>aLIy(NX*(IN?@I0p$L^zSNOy3BZeH=QwUNPqOmjIW9&md zcSou$(4TNKl%*^DiZtJC6`{`pvIyu&Z!&EU6zn_FmoKE;!rtkaIaqt@YTRnY?j@O) z8uve{(PjHygM?=CMbBu?mnJ@p#EL#}OxlTWUKccRAszMFdLo;DTbBd=)t6K^Do=-d z%G`dCa#bXwLa8Rv0AM<2)(!r%B_&-1ZrSU7oi>o49~j3kjU$h0Pelq ziU^0;)+ek_?q>(WQ{`^1Cf-d#Md`dTktxb3bLJ;-e%OSjz1F4#RhgOxOsgaYG`U7C zf^W=;ZEF3hv>*GWgSw(Lu;bGxs{Lm^Ct9^vro$slHg*-E@nL6SObkdXuJ8&${WNVS2b$kCS7+x0U85B=HX7iKtzug<43g zJoO5807fIZ5M95vm)U{S;cSEZ;$7kVP1k#t=>E+#3$@DFblYDEocMc85TU5f?1~nz zy`Z`90j#leJ#@Pz%re)d>-NsP?xeP^e79Y>WTd}80@y>jEEkXWaxybNgK+pFL{`@w z6krrvL?04p+|FfLWy5V{=|W$V2UNLR=5NmzjUVh0ib|h1sA(=!^0={OnmpvDpykP! z8Iekm{TSaexrbiilo;7l&Tb`!W*Fn>JNXHXwfr<(;mb=~P}kqDu{xozX;-I?B>qZV z1FF&lwo5w{DCH(GdBI~&oHLgL4!3Rueh9Vurt2vziY`*Ij|?R>)GWRH?njD!L&smr|MXWsA@91YSnR^ybHn!{{F}rRG*u@;*)+ zsd1rfeMQ>5<1&GkFelNtj6cA){;*wEjMv;f8)K;RwCerAC3k;%<7;&>d~$c~Q;$ai zQGcun)RU*g%YDM7*Eg9ZEsV60AZus61u0>q%PO2t*IaVoD={C%EsJB}%8poS&mAB| zvbpnx(4J*S;fs_W(w%~f9tP|Px-b{fYl8E3MY80b01i&Zjz+fZN2E_&L0e48$u(J^ zHrd#57k9bRG|~9svL!p8IxZ^-D@|kDo_NEIgHPFe+eL&*Y4qGqZfA~$RG{f${>?4Q zg}LNGaBhHn!cJcru)808t*Eg=PBh}ME0M)s=O2lOu)g)UP-8T!4o`8hAG;#u^=&Y< z=d;5iHS#M6GY>Fd9BE3n6N9aMPriR#B)#po?XHiL(`=$?C=AgkZyC|lR){rgiBKBm{L=p|4clqIn^L(O*A?yzSnAuFV9 zKRAlf=fNJ2Y>Ct_4A4;?o+$s&vf7JOVBPt|f&(u<=0`Ol+9CPXYKE>%ddGs8V}rC( zbX=#%P2_SAwiB%%2E=&NvVDOw7kP4YcFrCBBKLVj^FI=>gbFQqYMk_xi|cDudwbPJ z4C?@B!qOF_yR%G@ELnF4-VXc^YF&XMQbISS;$$hi95vz5PE{IF8DDbo}a1#$O zt<7)nd-N>Vz;2a6hla|_QrBk&{@ria%0yP#azPv&3Oup}aQJ4rXIK+n@T=lKe35!a zQ$6Rf^hEH(kb8!MznO3TkBT6;KX16V7>(vkzGt}g-D)PU-7Km#DzAUa$o*S(U=S32 zsIYbG;F#705Vn3AOJAd(-z#`Cooc0gtoY2!Uf}D?nJZ)d;NGXx&lc_UxA7P2?-b9< zpSa-uMV@}w{X7}5y_p~jGFXf4S@y4o>)?PQ&&n2p0PqiWRp%m2%{LCrEhhpsDl&RF|d-`5$K=$=lY|p#x?26yH#_>Yrm=IOCxJLcWpF4tVXJiTz}m_> z>H%}XN~GMKtB*G!mwWI_n1_o`-}dE-IQlhTp%It(G5j#I#WwdMR!(vF>?z;g*{14n z@Vz?@pE|=wgU+EBD?mwrOc%rDioau~)j`r2oofqm?T70-TzEu?y;K9YTS&?1qJ+}(I8!`Z&VaN^(E~=p^aay9ie6l$ar}KeDHDhq^O=Als zKVUYU^J;d=!SUeB$hfci4b4xo?hs|Y4tj@c(H+uve)e91ZPPdFpPi zopl21#Ynpvx=3s>xZvG!v}}4{EU+}ywKz`5F$SoHPgMfZrWH8NRfkVXiI(o#b2Vqr zUkL`I)1!xl90LvM=gG+sKfVi(N74Q`E+IWxmmI>?RKbzmXL#Dj)w3^-; z?z_Xpn1G?lAHyy$9Bp%h0$rw|1#GI0;BiF$&wXHca+9ia=W;Oq+ujtMM*NH!+S^Oo zHe-n-mFEuHhqaodmw33drL-cP&i9UDCBxe>FBGLELa$9r^qP^1qjGx&8D^**yJL zJCP0kuuBb12v-IXJVZ*o(S((}Pk@?ce})$hgxfz0bDg1n?7Qf;59x35hOaw`q5Wf^ zv2xOPHW?L1FaxQhEDl2{9s!!q%`{~He(kMIMeusHv%h!8vOB4ME}!H;YXcY0h{cylN>|{HwpL4Z^W$$= z7jFlshYRnWzt&+Y%YYs66{FWbwU5NWBd721{QDpn2iYW7pVs}=?jWGb0tegh!aJ7Lp*`7cAs+2!+kzCw$ADIJWem>Cdrvx7~ukFlYXl*(?MBWUXI~sy;gkBx8=ajfC^u1?2l-S*dFu7rE_LhM#iT3_&cXL0^6B6P}bb2!j8awOEJNS z^_Tygu>SztA5jp2z*BFHS${m_`N;CO?M}QuS9Hol;+dL$qijE_Ys~&?0r^=ZRqjjU z5`~G|Zc&4kjpv{!3AV*&agx$SglvtXa2g7%b;vQ%vN(Y zUd|8y5{N3=$9_AaeGpY{2buWcX3{GQcvoW&3z8~`JCbh)#%^(iQ>lR>TMjJGH1l|J zt!`j^wgjvf$1&`FalBB3kapJiJ`95~hX-WsDAPr>pIhgra*bwZAAMH3I9s(;euROh zL9u3gADcIaWnV6eqQ?w?;+{R(&M;P;4$u5}Jt#JZWs&vuEQ2W7v8Hz!OXj@-H+7pe zE{b`6wx2bX9i4qvP?oe2#L2s~LzqmdxIS9!_@rW>T8Jc}YgZ9!lsSnMJ33Zo$6;jf zwbR7pXEZj9XlyvZH$KX2meLOC`r;4niyX_`j2Lemjl(9AF*Pa_F?=?vym4$rB@uBck$(-_DR2sXXqy5JE zdcSp-3sU6IY}y98h;hohQ|Q!mO5c)GuS!3lr!l1LS2VBIe#7-n9nuLE2|4dL3 zX8`eZACv>;7gfaqy<8S~4Gjq^3VN9R?H&L^p2|EF7BZ3^o+OQv3Um&B71=wdx}cl9 z3rr!NB0x4NW3EGmFY5A(M5=_2Y%V1@-LG6(SPap|Jxk1M#5|76Z^C>fw*H9!OZAJ-l`wMa;jh;w(~=VZj_Ze=b|fLlxKP30 z#B>)2Htrqwx@|)CB; zH~am7FW0}pUadugTJPL2jSI(_dTIfi{!9xRX0RP7#``LFXc_m2I=LGV70ce#6rV zFnYs&`Lv1g*^}pw$GFu(E?a%I3moTX+MRkwxV!zEOnpRLf0eAe#RXkGo%pXQSinB? zo=gokA>z#WanCcmSOsP!pz1H&J%;`n8_e5~dq*{QY&SO`+Lk$#3hf`pi%@C`x~Bm_ z@4am)7<~x!=~gt^j0~1!Ed_HjdvQgSnGEK*yTr4)zr`-ztIJV0>AtkUD##1$;+KQA7HkbPIwb;%=%$w+n?*jeJ&SM6YpHR^@C4Yuz|r`nHT4vMnbn%+bh+*}=Vq_| z9iRBswg*|?<=OQ;iyD3F8_r; zh@Jcjh7KyCy$1=G%XUq;>HdGU(D|9&dAnAC%mYzGP~4{(s+8g zOM@y^t5Q*x&rp`Ws{Q$>=i7(+z+J{Ee}7m12IPG6M5JUOF)E0&R#+pj^cS<}*v*2G z$D~biVV3rfF2kXgt{z5;9j0)}roilC#R>61SEE8-!+RpZ<+1l`&}2Fj7%G6#VVfeaL3w*g2B)<*Q?B($GzeoF!-V}3Hnl= zA=ZXi{Vx~jP?{P{_en!UpA!~I5@~DUPwE%)JdQ3k`j3nTpi(*H+-n}I`qmko?@yRk ze={8QT1^6fMwWVbmB@#cD@O!c^B?J|jE2aE*}cdi?qRdKyVXfiPwzN=So_p;L`-v7gnCkeKx1eEYnNx1>3=SG>LS)ZrI8d|$eYXZ)HzlcXn z%-63Ee^*(oN3&%v@-Z4rmDOjbqe>@*Rpe+ym+ioRI=_BL;B&EVb``z!>tiG(zf>+CxDXo9;wm`zgqyDp{1D> zgMNSQiWtl1rK>p#v*)I&4WGtpwF=I6-1v7gGPPyiarQ;McVqBls_4Gf&nMgP!}Jhp zzKT5KJ0Bw#r*%{xI>>KEl*i6@q`}EpzUp91#zM2NIZmgqcYMV>2!>~WJY8tNImR}p zn}wTPLU)93u`$$7ZUSwKNmi~io0QPJV!f{hQ*cdw6g5Uv{U6Nx)#a<>k55``6pD-M z%X)y#d##afk#m465LlgwXNi8qbEE-?E-zw9hX%MlH~WQzvtq~k(eQ3uDt6=kEgJdk zkC*o15%d|&oiWSLtuX(IDQ=5jWy};@CXfjCYL1Wfm~1ie=5eRx)k3hc{`2|{Brt`) zm=enE0w8^V?dghqK<>$45(7_`(uNEpD_s4p)IOM&VZ0L}D5{?>2tSV`@lTniNAhVUcpSP}285&f>rz0HeOnVS;f-w2$7)3SjqC zy2)ygcS?yGwq1%S&Um@Bt!RU{Oa?E4E|y)ff|wm5p)K$?;e2KB?qK5y*!l9}c{yi< zP4CC)>pIY1py?+@B>brZcOBQK%HZhJU&Y8iofrw;f0tz43?Ys8c3-#_o+e7%z#jK{ zSRm@zfRN^04-!HTrzVv&rTEFc^kjy%@=AKZzUI1Fr_kCx+-7Mf(7HeK_WLRt26>Lv^6gTv0`V1a7 zS8KmAb3QZWZ^2Ix`;}b2$U}Sf6ujL-uT_yI=vM67rMHt8U5_t?4NA4SV~cz^`&4s^ z_~d9FqB2-pL;ihO-l`GeAfK;G3`Hm0V2-JYIq9vlw8~mAoyvS7BHn9%)7tINH=x|9 zcK4J0@%hRXAspKm@?HX8-CATF`P~D)$&0Ede_CJ_=OWZ`vdh3J`6aFr&ss=q{l51m z38<8v;jTyGI_N8%uJOj@SbbJ4S!A-rjHrQj@HTTX1`5nPmy z_t)3GBVfvnRo85~Sd)a+{p5@6zT6e^H>v7|!--wUDlF1)SFEVjOMk?57=OtjF zvdp0uc``_M@aIHp_m69P?|SCf?nO6xyVa4l#f`m!WTVDIL1vA+ls7*3z{~m~{b7r* ziSB$)2IwsX4zC`w+~G1wA~+9$q1DAp92Iz4m+wRDk<8U(VnT77dpEErdCQdMNq3Ea z>%RiPzI&D|X1kP{6lmMSZP$R;!FsX$?-#{}wZ(;Fo%|p=Y`;skECwe^wywiC(1ryM zyp=rpf7~gX>YDNknDG7PC6WLa$UCC@jX`xy$ukxeK|@opMQrx!-#=jcVK%Sl^E}Uaoc}Sj2R`gbuKf243@-+FhPl2@ zhdqg^P-688Z;dEe@PSp*h?Frgz2rkz3sJ9T4hQwasq|qeZT1}a(c3$S(!-%V?n)~DlFD4K!r6%Srg?Mrdq*aBVsjr41D2u=xAgsuCS@x?}zC)h$Sw6np_$Ws#|U z8$JPy`%_)VtGtWK3uD09N1G#y>7ZN#~{oJ}jss+#Z zQo3oY=byK{xN9F2imHUlV5KX}{=mne1Volr9T(lV6->`S>Tz2GXrF<6hD+#y_!|Fl__ z)6^^J!0ja{)Azx%>Bh~yuSresfQn|#Mp3;LA3K9BZPAb~tB$XRyMVVvDKkCuQ`>P2 z+_-lgW`DL|n|PThFq?A+d8NCry|%=o-o{OBrp0MB*qD?@zKR}Lrs>X!zvSOo8`z2QIzD=nO~&1*tL<*m%W>d zw^ocEJ(1=ZFRx0p#ODbvPBP0KzRlY8;O?A`T@mSPU|xO4H7@W|WXR$5adhyFmDvSj z_t7XpnDuM^9)1z{H3tMos{p6e`DJ|NkM(Z#VqF+Z5;m5HWCM1R`u{FlUf=i`>8ywLdoVg1k;>LYNG|+5 zr`LOzzgpC;phRPErXukKwrS947i*Io&B9rV@sc;=7$$x0)dMcxVG zvKGnU#2iLTgcfk$(TH>il@1A+Wle$2IMkPobzJxVuz=p50sfrUS0dQY-2KO(4#MmS zH=n4t^WDJ-L-qK_q7Wn3f}P^`PMSaW@k8@p9a56{+NTcs`wtQnO%i&qRXr*^T2)mN z!PN4DaP08%?!%4#I{ZtOpX_C$7GIIlak>DDQ@+p+oY}7OKL)d51n+-6p$@!U6j*)c z*XKf3h)Cc3nN&Dzxbz@0S#t(=bxH0tBycREszd?J?6&M7HJD$u2ot<>-PF5 zfFr5BekC0lq3`wl3@mOfS=-&R^Uk5`Gj)hF-biy!L#R9Xk1%MQa}zO9~QI#i2zNZjyb}8yt@3(C4b;v{qyUAF>NDG zykqJ*eijr&31!&L8(1yx3{$ATYQ<;3n1T4)eDNfuxfkDL`*xpJdD{=buSZdVpS$1f zSCpjC)}E-5lsR~>=A92G5apyjtin!OHBYS$tok5QWze?!3=9OTumZfg%WDybOXKZU zC;chC!YdcNg{VHxt|g5;eXz7n7@&huhUbS2Evy?x9~nvzXY2I3@&X^;Mp> zrOBUnlKFHYEn-Pf0w~ZSXeH$k>9k*I^I4*cD-8EKESr^I4bBPWN#&LfI!!&hJ@pFN z4~Pchqnk#$^Tsu@)S<=mTX+W8#=REUM^p2p{^mY8PPk=~Z)4I2(C1!ZG4!p!9Yd?a}o!5?Sc%CEez%sg5(D+ih zfz1xj?7C;IWcxN5!#_y*r2wErj&`+H)XzE5NY}I9I3ig?T_2~*gbi=SK8b|V*0X4$3RpcRaWS$ z&AsH{VB}738vrs{@7tTD^o{%mB zD4^yjxUi*7Jb*TW-LB<4-Q_d-Ggz6!=(gIa7M!qnN|D{tDuR$c-W$L(e*LY3869uR zrSf9JOX)xJ{|IvD@z{CH&=m_F=l{%n%EHZ;c|q%N^g%8rHhO@4EX%%UP$Hd*-%8RZ zwwQ(7H2oC4)}l}p(nCH(wk;mxMmQM_**QE>dpZqogDy-@=(`rl)UN(Wnn{Ee5@Vz2 z$k(k>+9#W3qFajDHD*=>k@dSLI*VAACm5+FOEb|cFb+AnixfhkW;GAjhQce#M=yYh za;4Yl($2)`E~|a>rKxnKCK0}~h3eW{kDiL6{{HIMnR@eC*BkIR-Yjo?-Wlto5FuE3 zonqkl?4HE1QL)B(*YdvVT^29ug9?S)%q=K@4dujg?A<;)x0C#LyJZ`7;nUgtXE@!k z1-3HPR=(SPs$3o@GO_jQfD`J^h5hquzrqy+|3;XvD5NE#nI|m1(Bj>yo;^y>hJ@?t zfgFrIC)uh+q=mX0E5Xgmf1BB-pKaRK#A{3u(4jp1QZT;~e@0lc+!A;|<9my%mQgO? zcpc+`)7&Z4cB96o%eYv%-qLcR{$WulxlAIQt zy~b}3rtkNw{I0i?bA>2a1D`$@>t0zb4nAewrIs+^5gM z#VRkr2gij@mDC=ytSU-!fEO3l?7bF%@m9*nK=WwBt-f_Glk-gaJR-@N{BHyMIWU{Q z&Lqj#8B>VVvath^&USaPy3{w(t3ReO>8pMU0h9mkXH)1=%P)H_&5jlH;Xbwu=EaVf zjucn+?4I8w93pDHop(RvMhi9EwPSUz_fP`~<9K8I9qN44pZ$C5X%Uuo4|NyosbJp4 z*N9s>L|zu%QX}F9-^SM}JB>6Pp!_T&!PnnB&Y5zfv4MxpL;uC^UfN8?GCbYBVbrto z=;Q71&yTqTgi0-~ZH$c}@b*T)2>cJMn5Y7?_fsSa)t+B|sdOHN^=DUuz$PcQc_9h( z60JE{o0|fb3BUKDC?4w{m9?7{`tfokq?biHQf>D7nD+TGFrLl8{gXTyb1^=?BzuX8 zXxv1N%=Fy!T-s1~*YMRD&x6IbI}O3dH3ZwroN#u9PnR$Td|a@LZ@0*lk2It&YLQ_% zGEUnk9A_tlR9jOlL>t3;1{Lz zn=qkL+z|u_1)^px*T?qV@?%cb|Hp9aN{RkEw8*`j{IXaM@r%(_e^)Q(e^%n+=)g)w z|9VY+$8Uj%+l;ek?rIrqS8Oe)&BFYTLE)0&o~_3-udHryFFS>ch=v9BD7 z*AtAcXWkg?HRqi8c8FYsy)_V5edzKB-JFxoscPgr;vsOmDO zv3rrQj$nwV(FSyGe|3lWm&p(Fa6R7XxUvuM-7d;?aOQ&cK3xi$JobJT5KTojNY0KT zn8sNxmTE*5YjT>-7GfM4QWxCk7<3Jrq-*(6%{B65R%=I>uNcHN53k&tY2s>eKBZMM z`mIN^%-5ls^&0^<8{Kq+ScDrB{p%%`YVe|eB7|xE+MiZ}1O_|$Sar{TZBiwYlzUi7 zmx+;8fatJnsEL=(v{sTfnDEct?$TY^isZow`x!5%EgqTVfR( zMgb%yK&-fj=>D{LR@60UVElVwyyV~&@M@u3ceWWZKMl$f`>;yCCuDU$Pz{`g$adpf z?~6X`(yq2+LMYL}mf4l;R2vYqUVR@qgBgVzz1U$@ym|h5{c_x_e%MkUD-ZiH*QImy zZ@O@r`$yK>0F*1GPv*`&cmAWk-q4Pvp*X$Kp#uK~?X2u}mL)%-hiUh07BGv}-N34L z8IU=hGqsE?enX;!Z=bUzJpBEW0^}IBW?mR?hdY=&-#3PCQxU%s$wxhbjeqtvt#>SL zNBUo{vBQYYhij%}cyMBylEWF)#f=zaxuygS^@{T=Vq0fUIzP=?*D@a1!lVfj($D8F z(hreOB-MGWTz}#-w?t`EQ*zoA$JGBZnC83#$P;IwSI@+vkyDL$G;{oE)A`&pK=01U ze#DE-RF_K@%cTHm!INJ}Q-slEegSY-RZZ1&;))&9{BVuPoF4U~gdqARC}wTh;c!Hf zeS36;1tU)y$1L-8lapmWv#pLj4)^`0i$1S|Qp&wugP7(0k|a`&f(Kxylrg&49|zoW z|Kw9g-5*ss1#%M0PW1#M25{M_QHI?c(n`q-TZH|q!R~!9y@R1{fHkxEl*x6f|CX~f z6N%aNr`OCYdpbmMX|Ol!mZ|D=V3`%bbOyTI2@8 zaXU>t{H#S~C3P!_d>1OYk_CbZN03}PCm$2DODmQLLSW2kqW{3cK$Uto@;&eU(Qb{Q zwTCxzYDTupO>X)(lGCKkzK(XZ6VIZNT7i}xL+8W4r-HHKTD3SHjxpxiIE{#Wb+-*o zWCj7t2gZy=%vo4_3si`-E|GA9^pSZfDP8Mt4t0g=v$UgCZ*}i4q(Y!)?sL?y?OM_S zx>#c*^y@Ycc%`>PfH+^9;1(L17fdXEovwl3U-5ij9Dm_IFKeLLF&o^v9+cl;%1er_ zF%iC5@%wC^&(K8$(>D&|CzNsnD3LI<;-26 z2#7niAk_Nz+wNLAA=5tIOv@ajEx@RzcroE@{$lPum-N~1;R*BgKXW)WoSK3-zvf!% z`8RyJ@bbtU5uC;C&6}}Cucw?)kx70xUtq9oXwE}QDo?axUhD*fwU(*x{-18ue5msk z6vZm#sOQ@j$_DzIrF}P{vrztLZT%|$=P~X)*0A3>k0+k>Eu8M=EyFjuE-9`ga)7W(Q_Xyl7G@-s`YkEw5{F3W8~fuaIpikxS=&!hx;# zun8H>n7~&nFy;NFy;(}`*e3NivJl7+UYQ<-9=GL}M(V)r&mdwhqLU`VW|R4=_7h-- z98!*xeG!@RYGt_sRIC0YY53VKn?Q@bce#;+Fu55ZkV&++c9eqyba_y~&Sq2I)ig%c z?REm7K!HCcbj;+-T=QT(aeLUU*KSw#OoLWljue>7Bjka`dg*pR$XY4ZQX!kq>+b71F& zAckHwn$pG$Nx~T6$t$@94Mm@uKRhb)Rs#|k-ius=*Z%yf(G5pL9X1`U+HFPQ#*0^J zm^Dyg8H~fe_|pXrDKYuI8g)EMHDtNgd_||ObS6gaA5E7gc(`JK2nc@IS__gVJ%}g* zA`O>}hUfr0;_J^$1I`-tk8WEs0lQ%CfBwyegXxEl*dOTSQ~KiIqK!3LA}IHTk@lUJ z-%~}|81t4#EM)^Jy4TFR9~Ss%w%23j&&j&wh{q;2Ht>f{9FCkhD`s}{zy66upVMVJ zNRu|a^F)PbV;jJDL>slH4~c+_@F)==(4TR0$>8r&5~@zpW2Q;&!f6#O!gi+X~n zor-wPD70yrWp8XSl|b($5@*A=q}#AZq5SoJB?639cy9fCr+3?(W22S*VIvp+#{dc{ zartFI&zb3xV+JS+9q|gBp-C0IXLhzcwejgiLzyib`8yegH{8`zf2q@yyut z@uqkNJJ%q~nQLqA{dkUdfT%BW2Z(B{Fyw;^*P0|BC0@cg6MI&k*?-biESKq}T}(MH zE%f&aIQIWV^?SET8~LZpHFx{{j@$gjlrWv;H{@3?;qT7;YAhu;KcVMydP%Y6l8=|H*9ij+)1846?&(H=@T@?fxQc;2j%gNf@K+l(L^#I0qOwhIWS%qo@Y5RVtE z6X?7~)@h2%Y1eNL7D(^oIPQER(4>My>byjs-&LLDP|W;*lHD%owaMNnNI4nn8yT}~ zN&(f3!OnlPiG#eoH(GuB>%(srOx$Z{>L)7(p_wlyUt9yW0@?F|kropX^s!$t;3=4O zPxV>o$M;`^b9xRxDU}%+&m2gw`JqpM?Ig{vx9xClN_uQtai+~S0I&3T#*G!HaGFvk z@B<#ECm5Nyqvc^*@~cSqUcZ$*2#59)X)&JE59o9d6JP=Q?(2_%e6~JxTk*lAd5qgZ z=C7+1o`q%xmYGMxZPy}} zKM;!@-P?DWySM^C+C`03nHicMS@Q3esDoYNE)K_s@YB5~>gATr@$Y{^{pgJifV1p^ zmO?UQ2Cow1mD_;;_4S<5vwnvX5L@@q&u`9KgY@(?uCC3DC(UVLGkim|L%YqWCQ;_5mL zD$P9@PBzNI!uiq9aPBrL2*}nx%IfVKrNB0KF@bYAU1=iq*TnF*q$4y--9G8zuXl=; zO%uLf_39II;gBAd(KBrF4(8l{buk)GqLTBzzUL>oc-S5~ex7UlBd#C+fZzFE+6gx=sPy{{=GqRhg-if8Z$qO`llR=8!sXl z-&c3{WwLIY@s=5MUdj$dgSI>?)%0|O5;{0Q+q%$XdPW$+Ry^}wft;R+T4&LW8q0a=tAN6TxiT99f0DgJ!(ynj@ zn_ES9pFpS)8eGc})|Iz)a6>BmhWvt|fue;z0HDiDO`r+g$H?gp^GOsk zAYF@}ezv!|-u+$S&#ET zDO3pt4}1*y_vd)?i);NW;fkeXppHI3ICv30uJ_}5rb+Pw{cej9YD-Ca-xBLu@5wEu z04$q2wDC=0|Bt~Xpk&B*(*W}~>U%@niD&;n?HY0K-+vK~^`Yb>)q{{WS@$KLnu^Lc zgR@Qpj`K|S|MaZ#Md8ukOs&=j3%(b|YCRnQ(hKCs)0%HeWd_!o2E z9l3y%5yKZxH$@Xy6I^TvxRo8g(XGVC@dYw|iABydeYS3X!>UKGx-eOE!PHr%wu75| za2A{+PcKQ6WaNxG1TIw<`7rmYBNk}!lUz|V5L~hMRKAJGi6ejyJPo}CFAoPL(d{QF znIArLbE(zO!P|9=f9?7^QK;Obqn<5At11arw5|lz8vH>k|eqq2o@w?lPPd z%Eph|+hF<;d)D8IdQv9%zHHZ@+2(gf?d6)ifVDl-)j}D!mz6*}cWH~QoF1&->8KDv z`!%$*6y}Y78zcd5YwF`D)XW3=5Nu*+jhS?KC6$yv7^~{JZlgQ{xOqH@dkZhbgYjLd@@5yvJ`!YxPsAXR7 zejyRSv`yT&s8s-avaRFVgjMKV`{v|zlSePKL?E~HP4V!3vDh;jmxbQ3p+AmmJ4a*= zmj9+nU+OFlCpBsG)fg5o716F8xGb+&^youFE9BJU0{ifRL77R@X^XgsO0R1{k;5Zm z{`>pjTO>MAuk5OJQ^%U^wb2wF&#XS54R)FCSg4zO6k!|Nnt`K7f2gZGIU`Le4a}Cj z*j0<^di5$Y>Oc2J)|>H>t`>w^o*rV0NR@B>;5?qEj+E7}EB^9m)v9xUQZc_`?9~q7 zZV^}dx9z76_dBs$9cm6cac)t@{ESZPaoQejHBc?TCx+G8@UH0-KEzDENs^L#| za9M`lKjd^Gr(%vqv(0bReRKL$j0m`-1$wX;gyCXCU2u{wQh+(#X>H`iA0P!?e18Y_ zEXS05vcODI0v~yC8@GuMsBA3R)g$;39Ip=FosVN*QLMc0?^!!FzDLev$xk!A?h^N} zar4`DxMs0!fqe)x#l+l|f#rn3gFE+u)f5F!M`WS0A^vp@R}#NumIYsyvgx24AcvGz z`{V?g;Q_O+5G96dy^0UprMA>QiR>`O6q<^U@nzY2ye*Lne!n5SPt$2}t-h`@mr5r& zu)G*Dn@p6wrDaI`tHdbv5QlE2fD-~+Aq)kB)G_0mj?MdjPn#4FH$vE#md5N)e6CC- zE+Dh*cn8~cV{JOI8q&CAN^aXI6**NZ&KB$zz^LwE)>JLxck)_B!1iIS_ zJ7Wqk)G_hF5=-sVL_F)-;V7yV=Vl94bw=t)Em@{3+hJ^NAJBizNUZJ6@Vr0WLKZjy z84VQ#IUL7#Gf|_R9d^syKoY&LkjZQif%((yEZ;-EL@+AA!(KO3_l4}samLOlZIjN8S8T_*k`$p=;*L``5&AK~GnARDxa7Us7k6R8pjLtHo@O*ITjSqvGyAG`A2|E~`LOFH*p_t} z9mq}WN^k8_*a80atjvgnCW>hY5iRmp&Hq_>LbNJ-)#53t0gv6$%>{wo&PUK(TmRM` zZ4dr}?9gNHsu#^N?O>*3uL;|gmY|vgoiCM$&By1u|KQNff>Lg8$P%_^9~>?DKdz{f zeVBRlrf2Az-<%_G;^NQ4V`a}oikq z>kQ#lCVf-4j%(D#|F)F0Gdi!eK}p6S-pr1T2D71cNcN|@oZS%6h)-9siN!*p&N!bX)}aDzZ~Foui3_=S!@b7qmDiQZ z0uo9zV&g&Q>Zwz2^uHw6w7Y6txK14l8&b-Q$;}a6 z+u%92R8fU2~5Xt9Fg?I68AD z1ag|$}=u6=aSJlA{eDQfmX+g8mNy7tHC4C*eJ)oXHlPfe?3-I`@k|fif8BN4lP`7^tK^NX8JxoWSUe86z#vz8rkWjV`x3RYbm_mE#NO)+J@wh2 z^d2#RA~1**fkAV!TTnL=6J!wUE}!wM)T~YV+Jm*ZEO>qeMmFH6gM}8~Vs~k3mg+{- zKMAC%iyYNI+J&xEQ!yWt{eHF7pDB+w7i2fD|wQa7eW zUj6%1*WI2{Bipt4O>`;N$nrKR$;2&MS82v~t`{7tr@kRmA%C8n8kRk(PQWpyblbb> zG?t_)y_rs-xcCe!r%gr4e_eT+7fwzV)^?MNC_2sj^mjPrYlX1J50kZB^(hPDx@ye> zSWHt)xZwVqE`R5N!~;Xu!ZkV2wOt5GsYnuf|A=?6kdFK{)E`C~8EDdb>*dN^mK3)k zUtXn4kh9NDM<)m6Ns<73=>?NO;v!>);}zIbL!J*8KhN%{GI2d{ozM>?_8d@f94~kn z($=M%kfkVBO;yG23iqkYDP2w3)^?(}IkVbL#Cqg`_=7u}_3zFfZ$2&83h=zWw^G3Q z%f4xRQZk*LnQ(q`Qc zt=7}NzvQ`FaS%Fq@2kj4@x0EL_Ope2LKX&+T2PY7Jhkll^E8BLDmUfxTiLs z_#l@BLNgI}thC*3*x&y8laL>4uei|#r`L^<7m2jHsyr9$BTM^r-HUgmn=~5(6fa)v z)m<>PAr^S=y7JaTj-N=?c}mRGpLlRd3)LA^8{VqHKEvNe1}<%4dpT>b*REu8W=8-< z)ig2l7tj_}(W*b{oSg<4!6K5;_kI~?hI{1;Yur_r)-g1f&u%K?KWvE z2Uh&dWV~pUv*m2w+OaacAo18|>Vq)`Qzh8^hrD0_v&eji$CnQBo$Gd~i64l@7tft|lsytiG^FvNURSl-x zuAMiqp&p{d{h@BXpJ~h&ZK*7$m28hnR(GW=39{Y<^wY zlCv|=O+!OwX#qpFuT26LcfI*<93?fqj`M-)jVnc?tBtV(*R*i~c zOAO#vUoq1AAs8g_Q5nYOsS4kONAOvQB=QA|(DAB)$${D0vUU5LtYE_Htg9!uu%q*A z6#JbM4{kX*^?KU(?gdnfRe3-x0%&>(tkd>T`c@tCg!o~mZ8`YJBcG4hfvo;^Ha}82 z4cR2;iEztq1Pn_q-pL|%!%t>ee!|WDY8s`M{t|)C&g=$D4|WMRXSkF>3COyV)CrvT zN9(nNvr~j;4^C*`SGB-#>v2I_$hVPoGdZd}yFCeB7E1WNy;vY+=Y?K5ZgzHqa9kAs z2S7#pt0x5(_jhuoM_T}xO0wFEGnx;sH40ElrlQ+q z`5G1;>7)%TsqL$Nir(Uv1M=<p>UQM428IlYZ?)lJbOZ{N*^nCCTL zADyoMI!p%t_c*ixf{m_fX+P&|z2R*W7usCQthzO)8;-hJaW3bkzUgGFO|C1s3ii6< zSzormh4Cveaw~3&Hb0W3x^NjG8C|m{$8oD8+dBqN3;d&~;mP1O z5SVZlRLPIUh;Jj^8}CgP`@Cv9 z9#D#+Gl3h-M0Y2|*D^ouRN=3U{3x|D2xOwc=%zOI^iLO<-?tsD3$dXU+0xv^4(( z3aNz%CI-6a&IF9ArDQowImHKRMIW(t*lgkDy13fU&3=9KbmetV!?!F)?@w64%G*zd zN{`Y3EX0LYv#i+AT%9u9PC@!+vA4DLb<9jOlG!1HgD0cK6AIECp1XyOV=4k5&foeT zsA+1~=D)?L{Kb{T-OSjMDgz~r=%r3;`B+qUVChPRSG3X|Q0=~dG`a72Bg6TML`si` zl+E^?M3?TK+qY_W-ie@*b=?~>#DZW^4qcsZnlb}h3DN>Ah!>|il*@6vE|aqX+ZGa# zfIV4+#r&Z~yprK@Y1??42V1Cg#G5mZjF!X0Un%9X7ej_Me&`oHKk{7S(`jdSq9LmU zYo(3+u-Qu}NEK^P&Q$v7uLq0xB}GApOY54T!#dArVPzeKu?RP|`w~~Gug2sRJ@znd zqZ~9S7p%qHXW^tE($j6B!djO9HdhVaZiK!sl{P$S6!X6nF<%?$y(9l&#LKW3oIRy7 zcA{y(Hr2z0x)SSmgZpArG+-+Gdbl(F#;@ay9^+^`gnHFXZBQg#`nWW`tzQr0-|u@F zUDc6NHnlyRb^h}G#De2>d&wJVA{4z{G-(E^) za8R>X+uML8$_|1sbKhsK5Yxf})3Ak3G!vpJ4<)ap3 zy)^Fm{f({MiS5Jwhob<^5z47ZBx=L_NGw1m@Bva-b!_ekslEsmw(7JT=Ue?vGN!*c+yi)C`Jej@a zV0uT=`tU42NTs;SD=lEZXBt#OMvS?bE>aMt3sS_M?Pia|f#0JqM`Bk+=7fOhucM3u zG6+c(_~}^>AAs<2Mfz*zd|blR9=0wF4=yb+JryQtmC;j2AzZLuHUGMfyf8ha(FIqwT@@UIi|pDZQp~VuDJt$%l0@!9ZQudzkR0A#>&&4|1r2+unSG=JV$){&{1vpGXHm+tW6QnF)KH1 z$Jj&rxgfc!fzWnzgm~wB$R9pEiu5z30R~dl7uQfzSe96Dc+v<@dagjzr1r;~23p-c zd8twZ`EM}l&g7&fA?t%if6i)hq310n@PDpnA9O1h6~Z0Oo&`IvYeN_^{@@C(J28TA zu(azhAELG8G}nOC6C8T&{hU49sTXBwd13%~P8n?_D?+BN3lJ~o5sqM&Shq_wS;n>c zuwcTQshHLup?+|;3m>Iezt-EIobF1;*cTfgsZvgN*?efD5sofVDC)QOh*iEC7^N=o zi!B(fXK5iVcAF(?`AH zd%k%M%k=@tb2m2vf|8uKF=hlu-1fRRyJy(&EL|zUP*K9;F$G6O<^!+m2nj{mr;<=6 z>r^CHgTLpmcCt~sx4?q;i4Wn(|rxW^La?EKGY5%;X#=Sn4ml6@F7{!2J1S{FRfmMAP|5OBbeX| zi>^<+_v`B{d;{s|P_VCLt7Vgb-^ovlbRlATRzmEp-Q{=L0w^1O_o}*%{S08Bw~yq! zZPovIiJX`LIJ6De(m&t26GTkx?{28?fk(shhg)z{>-xs^`Clj2B{>aQb< zO~-7=8QYSQr%iHPwvWMyTgay=mU9`%az@bwl)bY(2t|>bi=b{$(zbXWcFjrz)c|r& z#%aR*x$(ylvl(}>fQ3oWuNQpdT=Tf(s?n{NctQW(jmnN$QTaBU0B7j@ZIFX!RR2$eaBOqL0xqIYQ(fzn;>8>2rz$A7heETl6xNXrkQtaU1 zv_;AwSN$@<#$`1OR`EZEz293SUS-1XcpvY3$h@&B)2pM{Ueqzc=l|x1_q% zi7PiVy(*Zl-g^*|-yM}#8|P(pL*(V+)FFKgWE!j$e-*xr-FnfZD4{4RWCNS_#0WHJ z&^))Hz*thIM0|;5|JHqP!4V2P#JJ|hw+b`Mc)v!DAXoYV{zw^~m#jSCJEb8cZWg(x zqcd^av4Q+S+zpYNS&5#~Cie-Rwbs-gty5*4$p^d;;j?*W(ch1iAA$Yhk{xHTP1m}L z3V)qFFS+y7I)>Qi<K82l2 z4S&%*mla1+8zN+xn&uZH;)QAGh-PmPDbI})2V-kXsh%Qa2wHhJ-#J?-;-Bfuld

    _%KXClDpn5FL8ECcR6H5g0cI(o;HYUP|8%t-&(au~+RC>A5`RX)6ivTX74oW2YL( zD_SU+ohg;fqKdm+n4iOq#s!snVWxNNsrW%Sx&Ma3jf2pLA#uBC^3f`LMD?OBN(`!% zJeOJOo^J2YMevcU=;r-M66p1Bt#~RaSv7F*Z)hRG;fO{1xNt>ey0yD5uN5BQp%R5FCiW^z z`S#ToJ-rU9*@BeNe>KnWQ&$-HWkj7;d_A!vgQ*TI{4sqECi>MpJ9$hPM0|6&t?FKA zYI>QV`MXFPTfjv0DL<-Lmu6S;p%M1FBwGb<@fY>TjX3uq4SjZ3=_hFS_`{N^^&IL# zcc-3ZrFFaFH-;}YJ%0kQ?JQNr-r*=%RduNiIkQUItTVTFr^n;JvGZrp<(Jt<$X-Ii zN5`_fV%$>L&%R8i|1_zn9kVdI#5z5hv|hzKQoReRZZw86;Pj~Wdlx4R2GkB*U~`d zw$qJy3E68Fv0~9fYGz%zbBY-^CK24WiG9Ha5?1#yvgz z@VCYJc$Q@#SN^m_qg`vl4)kY*fdd2S@N52(Z1*H^R|4Kav{q1Yb`UG_flYL5OBP0= zeO9K)N!QlO#MBEtrPv}jK6-2KC5CdCd-W1_92l!PoK}9t|Cc3PIaV? zN+AlVXVprpRk+SkNh_+cjWUkjwQ^fRp?5qzzvH%&uRF-@{~68@jA{KuyIqqCGu%(* zB_tQY6N170eg18v7d8&uZlO*xJJF0!I^zTq+@GPC6lG}fok;7gM^6vS_^^H>9}0eu zq6BBD~wl2XW<>#BrkO2u7hWj&6fC?o4^>B1dS1BS1JB_lhl?O%fLcpc#K$oR-^qgCgceVMQgABkAW@}=OH0b zUp%1k+;kQmMHTMA?2;YqS`&!O)w;TIUi7wbyj^PggUsxrMh)J-LS;BU{SsRXA;PTt zB$ICO1nOk-i@@E2u-pjlEABEYeMZbejp}*#>$N3UOM3nEJ_umvj#owf77@PQUp(|4 z`NTjCp6`zq@oYaL`Aj9e_vY zSO*r;f0b0tF^4bkSWo^_R^3{1zobhpJssO9!n)XL{?ath%?k(Kfu#Hj<)neCC zbDdoGbfah4%svi?rCxnC1sNTsDFHRS7vy-rSGGEQoQ!B79?CxSfFhY*H@MSK52bp+fi#@zl`iEi#jGr95ELi& zBipi9#G&V}Vm0)De){MFPyW*ZU+v&T$_K9@mWl5%%3j~w)yQ4_`aL=m58ThdbR2U? zB3t$JiSBfGaGu){j{3{OikDEatL+uBjEKL&nbp2v;Bhzenbbb+S79semRoHSRyM-t zQ~AREe4IFg;dd!oor8&i1g}=s?^ml{pfm)eor);E^Onxt0s?Laal;slQCJy43_nQ7 zb*XOwxSTKVddO(?io5@VC}kcyo!9n>7;UXwj`{!iLiv$(zBk{nLHY5jWu%3%G^pw4 z(?CV{SAS;r3VgTy*9x1f`_&gG{nr}N4DV;ypd$o=ZPqDRK;QG$*tOdVD3Os??)IHQ zN|f-9DVLMwBZt6`A;${nXV$fOKVop)X&Th+tl5VP>YjVi$hW_%;1E@mj}jqlZuo6l zaAVjIGytG4v!pziqXK=V??>TCFe4NSX+q1ta2+@nU@dOz0i*7Z_;=BV!iHPdvYyl) zie9+L&i>LHf_nA?wMQ;<>@;+lN#zP~V|BJSL2Kqm)@TbF+W*XRZrC{Ks}%VX+1&bp zQ^oA%4^m2lnWXm`Ic*9XdfN!%AMHPQ$TwiVVc^f-xX1W4cl)cD*qq-Hta*nqNH_+ z>NMvpsR*++TAWK_SumK$8&Duc+dZK7#NW-bM$D$;8F9|yfXvA+I*`M(;A(|PdUC5+ zlncfwSh0e!?;FX+4QO> z^E~ZoCOn^~#d%eE-!76Kc~o&D$2^v0huNYqNZoa>-st-kd4fT)v5>?d1@=QSz>*c* zep9@;JA&VbMN!%$VyL4UbYi*0LgYdhAvIWlM)4Z z2NkkrJe=#vP_Wy=7hX3vofd)f1G-9*=9HQhi`Fu{oYfyH6Qxfs*eGhgXP9-+zsP?1mExbv|M*{m&9mNh8Xhi!zMM<$XaBlH%wolR1Xu(tm+ zChvXrHJrI#K_(xvZ1EsDa`Z{}>E88v*4b}i8)8{;tA3I-z7#iL*$YYA5+bbXm4K9S zj@-`Llq9i7(_Sd0n(F+&PEE(bsp)Yvv`Pc^`p3!f4q~SUhm;E?$hhymq9sguKC@KL+O8j3t#cd zCMD%&zPFi*EZyyz8XSa`PGKIdDp@QZa803@S=z0Moa26=(Gm} z(LZ`>hcg`)`mWSUEn!x@$Ok<>l|NIihm{H1DcxE=>u$`7eJ0b_NW=+P*1*+ z>G2qT)%Ds3wpjL&hwSvU!8xUXP80R6F{9SZZtq1J_QXRWu3rf|7Ih|ANHke~dO|uJ zi+r5mDmj=4M!8y)@n&(Ca{BuAw+KcoScavG(2qB9(x$FTp${g3ABe>78DK5ZvHXETY#Q9{Utap4CCtV zwLcGy4bhJ2$;z<6OICNSlB3K&7`2!eDcr^d>Yv^85IefqM!gvi1u6?1VJP3~yVdef z-FP0IV8JLFpNaxPlyR~|$`|k7^)_FabB;KOs8H3tzegI98?9>Yx@K!8MU;VcU1@?y z+Khc*hQDJ+5UdCeM%2%2uL)HoFl>0A?FaxRb=Ga6M*C2JE_0AnJ^P&bNzG&Zu;*Ay zb8wovzTo^w@RU5tk9UUfbmm`FBycO)J$l^UFm2MNTP@e~q$ z7tiFjHISt2w*bc3`ix|iET|sLK)R?eJ=oF(_{gS_^n5*+vp>NQ=9%<+spP_#s~-&M zB>}?+z_Mw29ss&=G;q(oujf$RGnbf%>HCnjKK2TmnNJWT-s4VX#4u>)Zrl6J)`ILQB$F?LUG85XUI>vQCxTN54>UAS zKU6N4VlFLgovnp_>Z>(F(V)ZIJWHPi)Ng!@@v4WPeQ8%i%)8vg1|N^L`%_h_XZRG2 z+#uk$w0J8A>I#R$?ruT;Z`PzcR${-R@Gp)BB^tjhGdA>IV3GdqFWs`|NL>?kAM3`l zmhX>+Vf6&A`qJ%hZ`a?-d7r*C=kBAp1K4`vp^t=dH=aIn23EU@1)P91_xa>8!2B0775<7dq*PZhrY9W?!q#y}4(am72kaYX=))S7YpwcXs=-?Qm} zB^VS74&9w88g0!Tyk;D>bmX)Q)-fl28jh$2uZP)shZh{GOyDC#pX|>waEOFsscviy zZN+n{CnS3Nm9U25o!CGD+H34hI}E$MZq|+-@C@Spoh2l1DB0oiJ{pBmsdDUs}WHXbFch(xRYB zY*6Zjlsyh_RGJj-c$&Hv=O_)kKiye%}0^aUU+m zxb7J=l5{+puxgY+d?ZW0i)Q#AtH2UR^6MB6a>6@R87D`VVHJ6pbPF%xMaKmnrvtK$ zph`P2!+$YAa7G8ad|?>6>3UbV`u@Qr6g)3=(*=EBrNfb-h=xR<6FqDq_c1Jc6?^f|}|sY*t{WV;pVudNYBnq=)eB(KAWBQ)!$y-!(9d z=~U36z-GjH%(xoo_weoMg+~LG=2?12vVP%tF|Of9oYU)_ukAV`nPcl3RehNZtzv_> zt0rRv7R$IK=8wBUqy!!FWS!Ib7Z0Xc#ryf@eNLnOUw!20J0ua}I-wBy;HP%3tT??=AmKN=XqJHw^2%-ih)!M5gaBp$_3{gHmp{Z)Ol*V++f z{Hsy6t_h3We24OtN|sD^Wl-41lz`(VdH1@`UK#pc*ymZ|_Di--?NngR!N@-B;ocgX zBN!kZq1*fhWA=12sF1s%tm(yCM+rwd31Q+!3gbtEbYYhb5i&?08P9UMnL>X&L3Xwp zE0(G9xq;3Q%9w)|1|;T4v+zs@n5~88@U|VjKh-n& zaMW%)H|o*5t?gxi`wUx9c8U&>FiTOrUYh>Ci}Tesk>`~w=lE+CG+D@E!O`?z`; zH}Bc8uF410soy!oOW46@;A<0BELHswmVsygUZ!^d$300#4nCEhc|%>R%QG9~4|B0Q zoDVL0*RwsH5QrLG6e{F;B!E%Njla_8#{-pJ({+?{@cp5YtwI}Mo&50(baA-o-4P9C$Az~wdQxgStPTfdbBgGX zS9w~pk=U(7lgrUE@JEwUAdx5viCJUyQI)aY?0hqiTn42KD5E(k$Zgfb<_QOP>dDfwSCjI$tUZ2gTNyusmHL2%8_uxYi1Sri$U_R?_=#nF3>Q`c^9V@up^|h zU21Hk#ShPeBgWO$mwL<5Q+6^fyO!%{e`Sp%U3>0gm^r1a4HFU6$1x| zoi&azar?1*&ozt13hOCaZ!WO9iB6vfEPqxUKf>qDC)xm^Fj=oxlnB&2wX_d)m zF^U>fEL(Jrt)e&HjB5to-tReXrBE9r+t+T~$R0t9kLFug%J|PWwd7P8)1<9kt3-N{#M_^tw0Rbd%^7x~b4iMi;Tt9S*wMMNNNdD2!s&D$dM8Y?3z3I-MX z2gmN(u-{!2a{Q79ES@S4DmfZ1q(o?k4dvhIib`kbA@^Fe^+H@;d*iZi^k~ktMl!JD zl5Cj@&?u=lL#YxibrqTM7#iygugdSg`j9}@4v2ZXch^J zTN>L|fR=XxI^O++c{=aqhQslLhi6*pPfSxIuN1>~>(y7dSbq-@qk@@=9tyR`L#DVd zVM4ixg_*n;b&WoQZ9mL($BGSJR*E~m0JPt#QTzyc z+|w4##|B)9+5U7?&zFCu2SZoVM&I`<7F`A!h6&zt-sm4fO5XqD&C4fw?mL4b#qK>B-SXV4aXu3+fl)hamV%dH)FV8%A{Zb-T;G z7iV8z5a2SE&(yK1I+qi@KdUQ++fQe7vtV8CyG_bjUDU(~mcPx)oA3zEYH`j-F~%c8 zyW%)&KK#EYH8$}xfDSF?dq-w9rErC9M+|1F{dU&Rh;`gmX@vNmadHc#ZQJNyKj2|; z;CD3Ns`}0f>#7*EJ}djfZ(z$&MTgVOvTKD#-ns``vV3(WW9H7KiDcn%F0b{EhK}5! z-vu%|@^<9JBfg0W>#aYC2SY{1d{9ac)y~L40u{bp`g$e-XDu6jXDYg}@k6kuhRc6e z&;k+U1i4znyVeS$chA=K<sHL6WTYTQKYGOHHgyX5nfWM_x@!6LU)~^OwhkubeEtxn(exFckk>c)^-YQb%6<7ORcGo? zJlQ>+OKC@da_;s&{qaC-!Gt{>&>s=x=2s1(I`v*Hza#%h|46j=ZE2O(e>B%BnMLxf z(~f)A`bK{KdW2pa}3nnZKd}~ZnYRB3GA8bs35{4f#M?GJcWvUhY zmX+QhbNZ(xlO6g}fsZnfXYu|`O3J6wcpkvnVzPk;I01i7ugZI{Cf{kwPaU8~NWgcR z@hAgbbQ+UqB0*{6whY9c^~@If)yrY;qs!o z)>dM-p%P=Q2(TF}HchRtqQq&0R&HT*@R!tJvoUWOdSSmrw@X#MYuq!s|IxI2IPQc; z$4LSwLX0eWG!Zd6@yP>IzYaTI_uq-?h1X;TAA}%+XT6Q$jTwZ7>%>n<+@`MOZA5VB z^I4%uqC0UmZQkJo)~yst%iTPv?R9U_$q(o4f-ITW-GbU)DEd1?Hn4YwYBfq2{T7!jJfuWMbig zQiI%M1!$<)U5uo7^`s}^j-!F8tg6Q%H})}xj(A4aEKtG63mP*@GWBS{M8_0^$obKS zM}EnA@3H53tNi2U9@Xc2vBtS9&J}2?3x5xR?Q}mvOU2Hf|LOt$5?b|SMc70kVoF); zSfMcr`Hl=GCQ8rM!75jLeMW0-eTi8Xy#2fcW`nt%$gf9}EAkn>PAjPmYJC@CI|t8p zxdP_9d+(Xbip|gV>}F2BL4+7DqrP`IE`jAs3Z0W^#S9n`U0=EyeB0&$La*_SpW+|_ z?$X}w*^a{P8Ef_1u!z$??3tOm!$a{T_AfbJELO{mp{E>3x$NhHpN|Hv&N+8@UBLKz z4O~pPpK4IG2R-%FZ|BqOwtE%vxT&+@ooSUE^YHpjW`OI0MDYRc-tJoVqgsd04(z<}#6+6c zJ26qC+8w9MRs>NgVXwcF{MuV_GWxf&w%>s}4}h!{_gw8+J+H7>%Oa{IexA$2xfId{ zIbD(e<@Tv&yO(qc41hZ`dFw)q-5(ZSGtRj_H|;^SJy|hR?a`_vNbhe{fMzWq&Q#CG z_|WP4!(c=2-KIcE3xLIrxdVE^{>S zJ@;IaE+0dXp8psq5W6?$geW<_*w-FS?v?1)f>idMqmdSD`JbJ=%?`4{zqkGUf&pU15=CEn+DWs(=wQVVS$a3^1*o~=y7YtAila2WuA@Yaw@rZLxP2r9v4_8{BH}&T&L2H;Z5Un z1Uo1t_VJBv8PpHVs%E`qhg!OjxW`-d;<}_cQDx1N38t4A6gC!aso`S$ANP}3GbgiTF%JFOSti29TlKu zj7>vxa4o-k|8(EdXgUf2O|<19i#z>3fN4gq{vgPfH$I(l0U7_ENR$$l+S)(6FD@|6 zd~*pABJ8X(cbhv&JZt-x&9t*UftdL2RZ4SI=k@&vZLgoy)hdbUe~iy&J*;_gg2vZC zp#Nwj%nu8wfOcAk6v61N|2F>XDv_{u)m{$niFx;X)*YA+> zSSILK4Ld7ANN84oB){HXuw9{D48WY7!F`@}Y)L9(ayzdX4jc+GA@(Y{7)rnv@scn5zwpZWHhB==ZQ%8g8{ z_079GvTLi)cK0Xw^=JDz?-$koIATx=-)JqmvUF0o-FLfM=_)Z7z;>8HhX#8Pz6wAO z=IX+CNHw2QobuU@h-%iw*pF&g#>TAbl~rI>KHD1T8xTe^@1=TYKc*ayfKo;LjUK5q zTqTPWS5G}lP?GS8A@*(O4837^^ja|NX6ZGmOX{UX3?9RiE8=EPkl(iR>(>la*m!Q` z9|w3KAs#qRnb;#+Gev>>Vk3{WjM3oG%$(3YCL$^EJzUK(?{>!iAteI!h|^p;Lz-P) z-x(OVA0|3bzTM;N`@wxVEbJgeM@rXB(=<@NQy_8&Phq}fJ#;5`8!b*?R#Soz6ZMHz zQ|6(O%hs~gL>=2Tc>iwV3l=AZ>IKSxYbJHN-)DePy3<9e97v(3nx#^Pg&vw2!!l&Z z)DE^PQtm+x^oQGle`lB62_P zvaJ5Oq z#}DpmsQu1IE!6(hafPk;;k&VY#$}Dxo9k&t@BMb}&@ah3k<6`l2{>w87cIv35ZPzn zVwSM`n%7^D(}iPw@DSNaX*z4w(S2<1Lc+-}_+0}HZ=LT5>jm4izqYRjL0qNMjvKoy zL3RV6aMG`Vx~P60pQBUvd^iC|OW!$bND+jNSM~L^8d$gr#UD7yrWY>vHA_Z)yBem4 zvS2V@!%J^Un%1DX*}hRb%|utDff$?h2H{qxEdZX~L%yG}N zWSL?awDY~HZ*xbUhJVNib=#tG>u|u!4Dx>GE}9Ol5*co-=3;kOeV5wMQ#`RIKHg)9 zi2ws+&&rdlKWjU7*3}E*hOV-u$4!*Bq3LDv{33p0Got{B5~Ku`*%jg9PRddtYY< zl=lp{CUYV~`8E&)%1@w|{Or}|S*-ivrxYUYqqd#ckKVZze;hGUAg*L#*tXR^v#+-w zB5V&|ZcoPE=n~-oUfLowYIZt)vlTVn4d$Fix<~Z>)a%fwtKCEc$^HfwW-*J*m|R~x z^YwlMVV(3NhyQ5eDHA2?ROO>P2hlT$Ml&KJ`VlXvB*t_th?{J-__yL@3xsbmuoM3J ziEiemg=BlNoN`Fgnjij|kd;cn$R`fR~zg*Vkabew}V7fT4|WMl5m*{+3Nu>9ih zh5`5DT0Wsp5HQ^ABbz~72eOxlS8t9FCe}uL7gaoK{A!KVEGTOypsrP!XjK<+_+SR! zWU`yx@iD7<4|+TLmaCP!uZ26WWNk$+T?VGu_$M9;%e_w+{yG)|A^eXb<` z5?Iv5h+=X+EH1K(QKw2(3~!xyRIK;=UD<5!iwT0dw$!AclWuVr_>O@O$5j1%bSLQA zz{E^W6S{um$k#W?$O+EupMp(0Z1q9TvFoR9zr0=fQmgMP{=U7Wd0%6k9a44vfwj*H zA<5dkO2xXXf5IzE0Ym>bnCS!Khdb23~;rT%pS2dDE-`110DZ-gT?a%2i zjYqiu^I7F16!aRjG_7lU+-#uniHUajWbLAnlZ$B!2cy)>FVD0#=&K$ z<O@}6P(b>`$`Z)>B zOoI_R>mMKHPPk9-0g`$$gd%%iC~$Lh(^j&xYw5SXcSc43vn1Trwc-Usc>o^%e{)H$ zQB4mNgdDn6&8Z-+?@q$8Z%e(Rayd`=z0JjshL)!a@0{A6M9~mR;!A>G*2SL;UnZEu z0Dv)`D}Oe_LqrE#k~N0SEhdA+`M>1t_j2=Yj6!1_O@C^tpS9jdH7_`MvHl+o!Xl@7 zE-Q2W;L*Mu=ZCDC#yHpJve++$j<7V|5Q}7$G4uF?q6qySK&9xa_Cruw*j=x!Nz_KS z$x)v#QLN~%4P~(AW5)wn06N41>+_MS#s!TWW zJ6$dR(Y&w?6BVB<%7^$KO44>8G4nxupoNcF6O{12iO~|j|E=RD_hJA8+?97l_IS2i zEIAa#(y{Lup)q+!4$AB{-#lcjl0npSZu6L#+$%#TVPX5rBJdZkz{7A8Er{I$rIh^- z1Whn{s($)g!L5EkIUp6G(YyE5%gFLjiv=s)QyI}ghFh8+X>RbT-Z5E$iN82}qhY_$2FQ|4>7 zg_m#WuiHSQm`(Uj+~?YE|K8zk-aF;i?xrCjy-O?9BRii{9XR)uh`JYEd6;GRNoHem zkeap8e_n1o;gk<9yfHDTb4Tv2>EcPr z#qA?P^f}}?^O!vAnUkzXPz62%T6yQ$Bq%i&dii0%(&%ia(w|-tkxX#`jW5KdxZFgJ zfMW%6ra6<*6q!Ph^6n(qG7!xmG-+cECu<`eLOS_u;!0-+S+b4CE0F`r$#w6^nRnF1 zJtx8_9(dd!F~Jc`{}fswFtk=KpR*AjCHL>~y(W!czS+=6l}DVw6?lPJ_@1bcm;qBZj&7HU>?#mdSx(qK%oc~PSxf7$|w$vOMlmg56fxn>cS&hNz^$$5$T{w7Q;EBh4`b`q4 zyO9*S?3pj>JORt?ye0ZHd0EKkyJ}t}cCs1wgxT4X zW!(*}h{Hi2ka$F-?!N)8`sw=lJ>SR2N4?4^#}v65^g5ni&;7Xt6rNejhStP2T@eXi zd>nDD`_;5iR5GY#TlB4Mwj&5C%#<`R7RZJ?s zNrp%Ny%#Um1I+4p8a1#Xur9~z3bgppoU29xM}_5`BONaK+ilc!B=c=4M;Y40JTdvF zOhYlK)}oVQHnxJ$lhC1RarNG5QsbHC$2Y+_6(?PnK{kdKUy9&$3V@D~sv=S+e_dPI zTShF7j|b_CUA^3jVlg%U2YuP7Vz_orsR~qmj&WHyr7B;rG5pG&zvR>(ArjA!jWOD` zcSg9dP-M38v$nJFcrmuz#xt-`XK;}PYgw|DfaY6NFtOVQL@tgFQH?dqHDqz%P($4R z$Q&lBr)HTlmh7$eBu?dbagDnl ziZ5#OhuD?{J=x{4J$nKkOyr+85vW0Q?#GbSJy#L~Str}*lEX@xh*iZT9f{6XlyLW;x<+w?2XqSG4k3HK~4+^m2s{F+)Th+!T(i^2qM`JAsGvD>O`Hnq&2rK za=*{|+R4Z(gcc6_Ke%YwKyz}8d<~6B=m8}WSo$X4BJ|U&8Gd2YeA*l8;~I<_^n5$`7pj4V10!*6U(gT{#d7~p zvy0a+n}?;q49soa%kJ69u9wv|W1DO8f#G#=Z$T$?wq!#-`xm^`{;SDk%wyb``-oE* z0Jw`}JMy9z^&>bPL*8T{tm?1v4Ln|b7&12hK;J^XF_s=YZRo`dOGn>KZewRm*OI#JJVagsm{DWR8oT^Ku) zrZ@@&7Hv&pN>@i8!0XrBsd&1s@bQu@iJczcaa79p+3FOO@y#K75Gfhc@i@88r!&i_ z)9oN|N4OPF@BF6kZf($Krdg+v5t*C2Bi$eIZ%wU`N@C3xLqXdQ@_~PXx!?E+q_%&( z*~x&L&aX)>-!w4a@AoiKRKLJTa3=DG)YbeWywLnn`3ThDy0F-N)t8vzSlRX;&fmdw zY2H10qi+xhhLN7i=(sAK{@gI&!vHMDFzCA@Ls6hJ{=Le|BvOWc{A*BRZFoO$bdVQf zfWkuUN4Vn2um5h7|E0FTqWFX(iW!DdTr+BJlr8uo%Y^h8@VR#`R!sG@?DdQ8SK7ikNqNOpL+dbNd)&;7AZ(DSLQ}lk?eNzy=HJa(F|kT7>kv^9i7{Mx zb7V5~ovr~-#K;hmYq-uhYJzi}fb#{KiA^w{oq@L$s6038Ws(9z5HEhmoz zfpi^;FxQ$;mT4UR0Bi=R!6BQl36-Z%xewGKk03qk@Y&wE>Tdyn?5KXI8#yW>293+Z5UOc@8Qe_35XzuXZUeJNK@S++yh!3rOET<^(o zQukPWQXG^J09uD;ssQI{NO#y^Hl!VlWX$tsn@z6U@z5H&6MnCZNsbuMS$_l!+-;x5 zWEol2ExQ|u)t#=$<-4Dj*Wr0CxC|%z2<<&r0q*h&W_;s6SuDwkH;Z2Tt9-`@S;U?< zIZlE7e{`Z+GEM)5_0pv(d2(ZXc-VjR3^Yg}j(TUE=C{pLoAB`tlRl}jyE^P*0JjuP z7CZ0y;#w$EtduCh%0g+9W05N3MQaVww|U&H+IO$elD7i2%)f{b{Hmqc{(@XIuEJsA zHNUK}rNASXtD&7Z8b{52?fO%Z*KQH%6@QhBM_5wiYQ2qvehGdew%wV)R#Ni4LzV#d4ADvp&udVx}eM1p~v+%4AT{ zBB%=Ii?{u0^fNg~LT}9sr-Gc9lK}KWx4?VTzmKTPmeoP%;Voi9W={($BQiF!DI#6Cr=d;U~d4RJwA7%5HMJyj1rU!0oJ?WUZy>QD7}i)aSY z2X$y248E%Lzoa)3zL(SVMlOYYi<=epENs1?m8P|TKggMFYjM5S6$j!R85TLt-kga;X3 z9b6+r2~Tx$x_|cq`r(f=64Q2)(CN+hhURLR`K|jwIot0z&J=nTuHkvF@aB2sG{#B%av^S&J*U)L(RwSDn((;9k3bB|z)#(hxd) zjG|EYo!Vv~InqHZ9sx=alY5`q6N?ge89=-j6ls>YdOReI(AqeH7F}3bcp8Ko&G7Tl)+!xhpEl`fH=(=)v6`qBSoohe^aqs@UBSN9N3d`J946|C|^y>FQFPZ zj0OaiRt58!Zg0d}Q-IYHiu#(#M3)kn*F`V#?p{-Z%6BSEbJ0Fpk~Y7EgzEQWfEkqM z3#_R-=Z{AP^0K%*`4wFpiTdq+@-&$ZL$Dq8U(-l=>f0K;iv!EUp z^4stu;u|!0c*R?&o$};hBE2pnX7aJ~n?)n5@sHc@+sJHFt(X)Um)nmohC{>GPpa4`;-Yf)mb?3(sRm1y9ltvY{tH~I8Trh7=V}BdGe+~(Uw061&&jCDRPq@~{M!-U#;8153WB(q8IDnsW? z7%5BCrUYG(!#z+`vmMGDACfK4<KB&Q!2Fi|d})e!CWCIyIvt4YO=?P8B!n5Yai$#%v^- z%H1-xFF4o35SSlwB>no<21{FCn=gva$~S9N{{CYahEtJo=k*Al=~HIioEEh5to~WL zZtlz#@Wi~PD#N<|e8=X<(A;ZB&4ES6`?&NC|1aAY+v}e-|FTj|tE0=gbME#nQwdIq zbAWE{)lYu;$;21DyC_Hf(0)$*b(3%wFUhIWwdW4_`HYn>R5fC0l+Y`5uFMe(x_%|a zMLuuXr?uffnoF`9cKf4XexLfsI-l^Q1KkG{o z7SeZyGZcu00>xtAeP6NqH2s^9ud!UhkvDR$53_!T^fOV$yDU5K=UR|5?G6w|-?Ed9 z^|sKHUtBL}Z7!5-Jm@QtjScB2INOrpleF_K@|<&Q>9?wc1SRIG`F4_0Z)>XKln2Na zI@K$It?k@>TM^N)D#ovDe+}REHWq=Vwoac5j(uT?KjWT*Qe>8X`za{J{ z%)(f*V*ljTMbokDpqP~HX_NBkYKE4&<8mV?+;btkfU)19Tu~;Z?Yfs)6Qj|ycjWR1 z4jFw#dp$0rjSCk?~VbB51xMX~wLMsU~Khi z8;I1aX5^D~BR8jO(4TT?KXt+y0juCk-8bq{oiwg*3&P#Hkd3um4VGbY4?rn{b&I{1 zntIRFJ=o-D3r=`iV-3!)yvJDR|1wo49;4zODD$Ny-Etbp!U1!OB9UT}&l#xbnkX3> zA#r9*+lW>gcDLE}#w*SLNAn%%X8hsT8reEf?SD;QeU$=pHx+WG?en~Ma{FY(Kg0Mh z^K3lZMn*u=Ryakt8)F0Q0gu*tCHHKMyG-$_|I=Jxc5-Ia z6!Mh2cp2hb3K`m_9DdUYczxE)#G|V%EUuf(>08Qm>VDXg8-z!4?ShpOPO2m~iI^R) z;SFQBRz)uE?R^UkD;VSH_kzq3!T!)POBBVQww?>`lu-TbyW)gswFSB;U=iGLwF z7j-ls;}E+m2;z#PX!63yX_B9Tktsr=*7vfVAOnw0pq7~*ykxBz5ti@`R{zFFpLzhSk$>ur3(F8NzFb;m2serRzMWgP1^E*b61Tu+-dn&Q za_ahS_FImfcHLL|XZTYWd3Ue8B-;l`!?+>=4YIKZ9owevBl#7CQT>Tcso#~EuoEY- zcM~&*ty`JC07aq~ZeN}cy=3fD7V8{e^Z@4!)ulO~0|J`yt zCDPDwzHu}{lt9~b^YU=HgJTr(p5K=oo$yO`4 z-9UHPDL(d#Hs6CY%2(0l4HhSjIRM*!JOY0tF`ptSJR|n~taxpMz6%_VgEC(d-~EWt z>hPUqU+}>4?vDg8z_WDwkyi^_iG@P^3N7>93P=y4tA9T!k*NxVC)}#Dm-+Qg!a#;W zyw`P%4Vpfubs}?c^NO}DgMFAyFIMnB8q>#!kLo)JS(BF^fKvv*KZrV-j0<_&4FTUb zssq!TS>R2nj;BFMf!<1Fyg0~fb2%b+&RJlA%`t%LAzyhbjm!S{`zJ_K+u9$}(_>jd z;~v9L=@~H-xw;r~me2STA&DNZ_0)2@*u#?JxzrUhH2Hd>*bgMWu9dp`0rq@ggJ&V) z-@DfjO5))OGuT1hZ>dS3+&CJe7ayr=4?x@( z*GV#^3!m|%a)*p4efq9AcSm#NZn2AT`VS&6`8C!Fu~=q>)nVIF=LXO&`aXXtvCYzd zL_12sS`Hdo%C3f4!9(O@uXNa0)` zwK^M_==2CDFwM4pX3iyyawozR)^M1TK zaGE3IB{TflqoeYGpHjY2kA}D*S9riyCxOwMdoSvSjX(x9p4tlRQ1#2WAoiY~$c3#8 zp7^!+KU0mz2BQ0D4hXdu6NS9kclH3_76Xh9)19NJ* zqyCdI?e7s0w7-goPGKm8YhNvE*e-pdV&d`impS&Y_O_4Au(WT^tRc;6o^|9;dX_H= zmyAmKwje%ScrNpem<(oL#oTaDt#3$h^Yc-U;2vPzZxg6EoM-suIPMx`tAoKvE3xU| zmcF`SxErg=TQes)LT$|PM z%&|MGi@5!4#ny)I3+q%Enxpp0rK-U{1EbpnXKEZAz?uC=lNI*-YS9{BdF{+yE-ODr zEy&bo7JbQ0Cr`D^9DTxjOTQ(~)$3;G#ulvvTRr3)ep% zBppiQW@PEqanO9oiW2-%lYHY%DtG3#elj1vdmvRl?bGLdOrq}idUoiZlN?diS8}_x z({5sKE`wOe_hIt!ORLGCkr|qPGtu1%adn!yn=CW2->wV`W^0u7Zs_Z^+GpUDOW#cIUw% znV9X~=x)pk`0?x=o2dU|t0)bO%ir=ysk?;xLd8M9cMWa6XcKT8 zX?1+cFfBa28g(Si9mq!rEYwsgABi8tWFuinT8Ykf{!d9Z;E0-N8eT;m>9*O^GI?vW?7KKVni67_G2GY&7^iXoSoWVhF<#u6EeW?2p zLu55@M~h@)BIcb&M9&My)$-4+k`IR6B{`dp`_(`2tg1Ppm7w-D@DSu(yF^j#~$_TlyXk0N)cA`FSHKkwd*}mMB9y$Eih%GbF9kp6izRBmrb93)Cz z=(wp8)BgAjC`oJc0DiK=MFLC0u9Gjfxt47?fa^e8(aCcOVs1cp{~JVgr^=gk)wm|A3(Jq~(hNUW|DGq_q*ss~ z^jopfq+h_8|1Xra#U$jbO6UT=zG2{9?oP3#h?r8IH--##EwWXjo0JCaCbamF+bJM=kjzkLke^K4ubAhU zJDDXpNQr`!yKqnrrg2R1LowU&H_vQK;qc zCsX?|%+c*ENHt{jMQ4Af#w+ox0Pt(|B09e_z8=YV@-)M&`nb;k6!uMGS>=3jlskd* zwxQ=*$i|qybYcH)KE#zpGy5bDji=Ypwc>8mZMepxVK$bIe-?Qj-`k|H`SW>3SpqUhaFEWT(e1mkcG zNsr|o-OmQ+&Omi7*tg55zrTKrFy}g{kDv6^O=$!W2=^P`i)FyWfy@-zzFv#k)OLam zsEz>Dv}6?mte5GCilJ@~-+nD+J|D46#h^(Kb7Hx6u?$YWpvir!T$pzq87iJT({xP<&+dwTTCqEnn90LW4I-vW6(xQm+dh`xoPfHHdMOkT zlV>yMxx;hIj!srCT+WE=J9`wjSZKe1Q!3;*&{a)tKZmR>Ct|id#71 z@Vjj_K#jjS`O<6t2#E7QQNJe@xJF2c#asm2+2`D0pC4qsbrX=DJkKxs%~_65B`64> z=1}+pXsD;sM)Su5g44&p~*LlNQ1irWE8RI#VZU zD~gnBHX%`V6KFjYaTu2Bex%7<5-2UaRU^wBWg7J=oXJOs@cCd-u6 zZ{=H+T;?nGP4`C3XJOe6wh4XJ#;IHgOia67BM3d!`D;<|Y4LCYV4wIrlS9DpK6Pv# z1S<=#;h`)HUqQbTUkrWZlW3e|O|x5!Q;46cV#x}_*a6XH%*OT~l}TF<&gsJjR9y#R zF+u`Y5|*fdbq||VX{5XSt6h(SdcK%lV23;uWm$BRmAFW`={Dyw-g%PZCs;Hl?i+zp zjJLQ|pfVr{vYRxBc`|8T%JtDsEF0=M@|G4ZWFGZDiq1Tc>Hm-8j*tpb?oi2<+~nq4 zxfQwZBTTuE+;f%^=Dx4wj=8TfY*Z$M+_7dD)@X)d?tY)&fBS2H?6c4N{W_k{$1@Lx z+HL-A+cdZPFl4AEFvqOt)LH*Vf!b#3GZIxYXSYs=HulzO_(+3SFdi$3J$JwiDWCzm z>%Ew2d-6*zmB{%%mzIpr(+2}i5@*ZiEP|9lzYhG6vUYf4+jew;!edp;vXtr5%cB8l z>jJl8>hId8r#p~hYOplo>}sxrZ8RthVCQ+PULXSgOP#P1Qqe3N5QDm~~{xAmpjN)uy{Sj9!@cmt zUAGhZHH_&eYUH5}-f4@WGzJoseCMP%Mrm|LF>ZI;NV?RLH5+$%nBEkgHrH@2#b0Bd zx1PwpF8O=Zp*J_u+0fK*8{-r|@(udrdz1{3vs-V__D8YkvIUyg=$Rjj>fD{*@6Kh) zN`bxY=2=l#ak!J@K^vY)V>m&8z9oi}s9 zvR+?fzs$FP%FV&iJoRnaFG1$3bpufhCN2G36`L)1ND7D0se4t_z@S&;%71zFSNmG1 zj0C(BXMbx&f;iN7NeJ`-E1sB8(@C&9brxb%JA2W>ylC{)Hsku`qwoR#jiO^pzp+sj zU%mr<{4mT1$6s6->#%GBHUWUq^Zr5kck=?mr1pRGSQjQO_;KGzmw~~4_*uo3`JQU$ z<&6hzGq+1#sHrPc0I-ufaXYKl1`-O>IEKW3K> z7MV@n&U#foSlg=RKvp{&!mu&QwS#B+2G5BPC!40JxF12%=LM9bc{ig(L&F9I+eAB!)06;lfuZ6c1|FR(kJ`voy$>>v^` z=htuOYDa9-izmbIfZ`YYy%m#Lv+riybb1iKzBs*|6_PBDfbbGaS-$2+>Ar4)sqV&p zd$T=(m8=jua2rt&6W2|H#OYXmvOQk%=x(#cxY#evm!!v+pOIY-E0rz!C~b`UKhi&va7_z#SA@< zVWil*Lp_IIavHr@dww};f3c%1jMM!&Q|Jy|s<3SWR{oF%$7omrgFs|gv-y#~0!B<7 zdYnm_m_1$R8s`7iejJ87T_%5?A6!{}pb^!4T{YCQ! zdP~EfSJmX|#%{xQvc^I-OOc#Wn&C^uSiR(XggUz?BhK$$kK40QzBhUG7nb$);_NCh zYqfyzezVztfktcAk3;lQ(mLn3!mn#D*&B%tMYt_IlQuXmte!>;On-pnw%{eBRCwqP zM?N5$yu@kT-rk(+^*b0Lku{_rk~77^uH-dfJJYJ=bUZ^%(ZA6rxa*q?#x*SVc+2li zZzIDor(oB)Kfw`fcjn^Dgjq`rE%okcY5~>r?|9u`^%I5HK#t*iJoW8>FyEvIy%1dl zAI@a-4D)x0TyK)!!5;Oy-WSj-wvE)B=w$hV6O0hI=2=5F(w66wH^x9*!;t*JSBtmY zJ|Ieqq0?<|Y1Ucm&0VzUVNpHN0@c(Y_UskW1r43d9qNs8#d3gqBg8=>JJLC5075De zzmy&42VO27l#x8`HPt?qnp2lym#a-pQm6eBvxDXw4kH#)^ycAtC0k)pjmSvG79$0C zK)mV!`1z8wSyGD}lO`3j@&yIhXKyyDv%Tgx8*ixR~ zjP7nclw~U=XP1X)Gj#XJDF$N(kNT6Ea}Jlb?jM9;wwoRraNd5W{lTYGvH@Vgz_tpa zOv$0^=vZle5e+Req)4IS7lrcGVl=b}BJ}G=CmqJi_8*lyy#bugw$6W%%=y{Ynvv0fGwDI5eiI<;^=mToMi#r6vk_ zYLwFXJKr3f+~@>haB(|fD7j*hqx9nVi_h(Ue{|R_9``amV?6w#^IrCtMi~ zp0Ty0zC{bdc9y`TqS+|v?J`ksXg&S=t3he}$0gHFk+$L;J&G@xjW)BQ)tm2VxrV&J z6?dI%y#F=KA2RA1SM;>a`EcY>fHI(YE`(`sQA1LPb)K`=Wx|KElNm+H|J?eMYw#a2&D1Pq@x#IM@%O}5FzQw=kW#(dH0C) z(r14+1rlD|j`5c240y?pw^WNRXw3dZ3B9_kp-#H{VSim*#pQb#a0<%XZz^grOdQ-M(pUOtn@xC~M^mw@Q$ms@)xiM-BQA8r{@r3`dp)spucoQJmQ0 z?rz88r1Hb`1E)|KEE@6+s!zC)H||#htQ}VZ2xPR${AfauP&<_-%AD;U$KD?#>CMdh zS~;x>{)X??|ESD;>kpCBm&a;vdM_rB(X_Jndm1qnB@unlD5ZPW7=>zBajfs6`c^UV zNUQWL=IiDS61527_M!#6NfC7+t=#%KEw}?^DkP?&T6tk+ZNy>>6*V?ZwuoQHNN&8_ zz0QKBPJdK0eTQi5U9~CtPz|#@C>W!*#Ez$}iK%uh`gwWQOZsDxfa*8ieS-SOn5Q!+ zzRM7>o5ACyGiTjbPDW3?YeR3nKEcarW866t6|3GSw^kWWuHAIoHCwS+wPMF7Ml+M5Ozm}h|Zc7%{( z*_#IVf-xVx#1zF-JM6;yn`Wlo`&DPWN$>neB{wwn(H~R?w$RS>{*hYbL&X~$+sd)| z4lWDHb!hR(E!FgPJ2cR(aS@F?`Xc3aS~vYNgtF%hibCW!eM*X4$oMbEPi;$)p}Vny zPhcJ#ri6tN;t~Th(tN@~aMSVd66^jvFA2LC9M?#t?8#&kG1f?@Cq4XRnOzdqSl@=H zX^M0|Y01za970fzh0IZ@4+Gv5S`|&=sP<#g(M!L8i*1P8K?OTAWVBsMiVMA&7}Mdb zZK(Eox9}c&+0#Lf{#T8P2V<;Yi#$KnHS6(=d#dU!4l8G9ixD@WYfDyQ|8?kPNBYrZ*cur5VMQWR7?ec( zHpHMZRga!|6<-O=K7mx%S8W3Fg@kq(002vaQ<&DVJl0hM*CHHs}hb>n8-o0ou5AryQK5%IpJt|V4l56;~2WV?H19^ ztXKe#(q4%Bd|_VQN35V1>Vw@T+pyBk!2W_v;QW(w=%!+t`KectjuxgmeEWEC! z*+taDQWC8!xVpn~sdaH7BPg#1b^qaiQ>T73jcA?)66AB?Vp_LN=A(g4%AmJre;7hq z%)^jF){MvuF#LfTXa!uuX@11S2}_n?t6XUkq{-2}== zDAu%0p+3jZ3r)A5@d>EhGeXWm*@$Xp;k_hFhZCns56m3(B9C7pBhf-Pv_YJmR!!Yu-+J=imY(z%+#d-Q zw(7yG{C>wa=jkN%T3b0Yd0PrclR{y4igZaWl@d0@h%d)<@?cRkF zdh@ysoi@?u!A8eKg5>(99sic(~;s=a&fX@L`92n2uh?S43Wo{1K7hP~B8N;aStA-~uR)T5`TLl-H<;pTL0@-~ra7 zTs10DEg6x5wv(|U*~XpBzbCI3wVLpU8p&pxJAo_S;;0@;7KPE;m?sNWt7t8}pAAPz z_@PlWqwq@{ci3xSrG1X>GS(xy49X0Fw4q5OwDbc|>8lk*M-3oQfRnN%FkKeTN}%<2 z<<>I44%>>G$qw_<~HOF#6^(VgZ2B-0S{=!3$}+wI7F@(E5EXrvX#s88tW zOzx>Gr0a%Qo*jSj^M1p29h2;YcqBUFP<6-HUpXaVp4L8u!h`=9xb3RStTe||HyfoS zi_~)>;HWD)_umc`i^7w74)GFKwdb*XIrmzd9|l|h{Pv2t{93jB3YLGNdjeK-+UF;UhoI0+C9j7nMz^LnA@r^zFVc+Mmn2gj!JQvaYvt3EI9Ozf05)>HU ze&$70Ei?0ebfybsW^?I@g-P19n1Kxa&Dz%Xu=Bupc!rLOk@^mel}awm{AgHo{T~&% zxAr&qy$J7!3B-V8aWqG___Z^DPi?;F$8QgC^nJ1^#N{8AscKz4?erKz&+OSUBH$tf1a)qXR`96wG{zny_ zD+f8XQw?F;#XmIeG;`PSk*W3Vb?n`+Q-AtotI=QX+okCPy!;{Gbzfm>Dvbj^m^}Q zbuEvyVB5R`uY{p21vFYQQv;Y#81IY}4^FXaHFZ*PXnY1ZS@yc|2&v1pL)b7>0jJId z)}H>p!OHN^(70*aWTZki*wA!3&6_s5?A(j?d9kyeWN+w?bU_ zaadkTDu>WKf|!)u0?7E}1Si7L6J9>?~Jz@!-$NaXFIxQ23xJ8m}K-mE@R6#omNJbNBXk zh0i+QD;NJ|FjBMBJr9_fcfjv?rg+^9TF8ZN5H%L)u5_hkwVUh#BQvG zQz5F7b_EW+4!>@O?GnKQR6Uaas3e@_z(udT1`5F7_6}gf`XZejhNpeTT3+80wbwm; zd6+TUGq>vCN9?Soy-p{;_+dX!g*7BNpf3*&Omh^g&)oA_^a^A$D_Cw@l2Xto&U{Ti zEnZlZY2#W-*+kESl*@R+vIvNg@7 z;1wqUJWcio`!w?|jqXG%;f%`HcW3$iRkVrCF81LurQU-xeY(MstH&7lh>Y7$Rh%`e zMDqTem7@n<=kYtXvW-$^Qx<~N_zyb28J*ZG8pX@QuI6+{niFUyg>7=C(Cau)0<`xTQ5i5|+|G#nTR-QUsGv+?P zEAQoAAKPqkkV2w7?Q$#t z4wiIF1E7$&EljfNHHXaTi?F4p5euN0i!P}_XZfCs1scTC_S5&&=$0re9Qv39A$Xe~ z_X}`aY>LotjkDw9#`tE%wCkpg5meB!X3@FFn;mx2lUb39ah)28`Z~7Z8{~Ucb@o5? zNuTy}ceeuynx2u#aa!976VoV}#yy9}rth{3&3^fNEE_`}9hf-)Ff&nJ`mspo&4D&T z-W(;5o)+D(^_@Xesj~dStC96$p>STgoFadn;x8-050p>~n{~`$OQ2Kt(jUmG<)>@k zlD0~2Ez6%rjgDzg;G%YxeM;4k(c>uG}YF8R6G16E&frB4>>*MYeXpbKTkG1@!jbVm4sC& zFq(*~_9^rZl{iZ&l86~mbq2Modn z3t)uq;#i;qk1CuGrHoVw71D+}?IsFKXY2ayCqTY6pvPbUuFXwHE1wO?oQCE)h?3n- z*(}GdUvQ-by$BRs^r)wUfSxTJM=STI=#*e@I;!i3lmU{l<1rvCp^A>S@YN++^eJ9h z=ThwKP)^^O<;?+5zzfgcl|4Wn3&#-F35dg%losV zL?yn8w((0(WyyeUs-_dMKtEa_s1Ts6MImFnsp1Q$IV>l2r8@P7;F1VA1J>lr)6bw` z7J?7Y4w2q8dX?pL*>CIX>_ScUn-oI-Q7JdpJhzPpyEab-M@Ny_e75;|=MnUqaoP}6 zo(1AHqs6%a*d57+W0OJr`nwA>YZ?Wn4=n`zB57OxvZj)r_%|~JI0U3f^d>BQ`SVw4C=k}z{dG* zO@n%xU+uSY`kV(PJNW}ZV&b>W*Vl#}Kf#+%ydalLbSi?)Nu`kT`U#Pa*Y#5Kzu6ss zdG6bg<0{DBAp4vozK-jXs@REQuu!>0S1PRORzUvGyS`1-A)$g#>^ELLAm^Ms-n-G| zgrKX#k#dM`PAHkYSChyXB^b-oatZP{y)E(}{XXZoka?o@k)PF@JFT#|T912tP~6Zw z{ZFyeHAMl7SF=E8ueN1T5i6nCRE5Ehoh$i}~Vbku)o+X@11{H#=CO_vJ<1ernZh#II*LCWO`aO@(9 z821L&#Is~-ad7`^9cMkf9m$WSrz%u%;v#E$&9!VJ#<7MsO8b_mgx=O)L8*xCovy!h zHVKUcnX`Q%^w&2CARH!Acq_Q|KQ2Wgj>wuuTanK0vW-ztG4(04(J-5}p&>3tM*YjA zo>=X3Y2ZWB(X|dM{2eLKvZt<_OV+)rt&`|m`F$0VybW$_**s@35?-!xY8yDUj{3p^ z1%U5IoXi&oc~9eL&RSdv7{w8gB};JRi#v9Cl6S~XX4Ev}YpY$j^A*e{FE+23iZbXK zhmfWnL6dU4vRH{Z?@E=j3=%g#{L=8h@?RDwC~q*}T`~W&g~FuAFa7ltpH1%;v}T+- zo6mmK2;^zSkZqhoHzK`+_CKc2YaFpYJAo3%HP13RBUzMQMK3Mzw!VAjEYDJHCo4tv z@S_orSYFyY4h>@ysOj`{7URB=_=P>Z$famyXN^`WnH)#g;d-dCdvoHFZmh zSfIYSh4SUo55i-v@E911O;60z3Qxn|?ho!4r<}T-^g``=lMJ%Vy|&`mT*Z03jQ9_H zTpY~(dX`av+gDn@cI~=T|INHAoj28H7(n%TH~P2;3mb@Q>?fe2cEQ;$fsx22VnM_G zomp4jyHoSTgt>S!DK7kQP9g)p3B*~yP+2Epf#;B`QLdXtI&YSN;ve$;Cq&`^8cp}N zv$lr;*E^GAycxR0EGJ+b)|pXurFse6A$4MUt4*1M@Ly!N@Oqhlj40;l#M$ug7Mg!p zX7>9LM#)L&b*7pXmbPUo&ysC(e^o2iVWchV=A#rR$e&QH1mju`nG(Ul(qt1h4Hq2_t-G> zMdHLN^}eMibfQm|5BoF-;^GF&O8sLu?Er~hOTx;hyH{~xmtJ0nygbT$CHNKPY33@U z*CCNOapvp_>vF5GpNH59V$d~vP0Ee))n;5LDOpgU&G#M%4Y8e9VljiYzra{*n&rty z--@sk!uUyMTxob+ybzWQ-4nnnaGO4M6-_$a?Y)Kt67Do)l9lxYCsgLS^#o0_Jx3|W z(zLLblBM2EL0_Zxh??Wi?{JTpJx~39oI4ijxtI4Tt-6#Yp7LY1Ca8}x&fs^JS{V_q z62)Ka%Jtv9Z@$Jk9VebCJmbNl!$~l^n&a?~TWmti(>Lj>%@(}?b;Are81RvIvZ-?G zx+ox`^S`S)PF^LC8%#F-8KlgUt*;;MpUY}b31@L@bznU}4(Ez-z-e*?{)JTtG`+eb z?6s`%UL%u9963#+RjqDF{5c69`SLef&6(4v*LQuKL}OO7G56pywE0K?;(K2 z0tIu8$9D{;tvRriBGfB|qwi?U!0XK9fDWzSYNnMQkiT%aSKQuIU}wFIMYV|$xc(}8 z(LO_|XU?kLptJc4G+m6HPTu@6b99956;~qo>yR>{j7E2b67uPHHyld}FIACN5HpC< zH~vg9va=f5cty06g$F0zGkm2PZA1>uW0XQ#-I)~>?b!Wk44JZYU zS-B|%zgW11IX+$X%GY`hRm@*Iaj(3oI5AG`YM;*&)=msRSvi+z5S`4j8WeC?yDu%u zvBSZ3CJ4P#t54rvV)NL+v9j!Pe@^9{s2128^d}1J zbVD`UrviNj60`#MO01LPEZa$Fo-A7n9A3Pu!%0_Y8*UfQY0Y|9uJtSGzd_H_H1?A< z&*>Mt?{Ol(g&9 zD*0#l)r)6lAnYI@Z!Hp~J{FKvH>y0zdZ}Pxc|I@tr^fM_yZYyTSK)^!^QtJ_`;ReT zH(PnJQR^|zXWxQB3bE{?;Q$OqQ|V)V*|`o0aB6Tz+gQ(cUeYHL)nLhJQCZtkKxDNg zXV>6zk~|5V5B;=Yx#u8mllww7kp)GQy0=#OFf*~fxy@p_9r~9GPgl@?i^INE1y7{W z%ZesWXc~9Y>lBf33e0F5)m`Y1*bWjY^MnSi*-4*hSR<<)s!i^N!u6-&=sqtwAD|?# z3BM^V{J?t1;7t?-QURn)N{mpREf42lb9eXWFhGG@)L*OO_Wi`-!_rwy?*vb{`VYe# z%UbA;bKjKhalf~bI5VFMGEpe=%6a$qYDcKlSO8%BRXkZstb{J@x?qIV&Rg&4DEyM` zYos3GeE%v+6u<;i`NqLe)MIwZi=i}#34}o&A~@$FmG1iUEN$Xd|0aY2{7WH{>zXS@ zR>*d4QPbW!LKj!;GD$E5Xq{(x*+tHQ3Yv@9q$Qw70 z_T0yE_ErNK!MX!D0A78&y)&Oh!Twyf>aFC}^PSzeiFxX@i4r#J(s&9@$(NtNp^ka71^52L8z&?zU8cgSjfoW z@iG9J{$qBeF|C;1PzaM3QqY)YwPT~6ktN!~?NqZ?Q_9;GcFlFV*v+ng3Gy8sWX0Sp z-_ju%jVm~7JOjJ03z%_LabWPOzNE10b~;||4)RvAU!TBr55JdT1pq^V5LYr+`7bGj z;kPrE4jrbmLdZt<_u_c;J%%D_ZvDS^e&6})tgr_LS=f71dNUw(k42PNYEy}cL!G?P zT_E0_=gN|&q3f)ad89KR2J@u%C9ZT@B`BgqqtrqrW1G)mjy1cCTX57#b>PoED1s4< ziCSFU+S*Omx(cyXO=;*uDzScO$+kwGOL54N3dL7na7QcZ z%xz>fLv+v4tJCD|-Gj*m?urOMaR&LlfoKtD(~^drE((tZ zwC6hl;y&qBJoVk~8ZqS#6{tXxcH^FoGaciE4P+`}E}qiMX5Q<{@$0YL&>q~@M$27y7B=R@dOdBR6BpPEHljr$tfU;e1(&a)d=`FB%~t0SlsClM;zh*{_O zNYELX4=t`_@wi;B3-0lkTQQDu)TnVfTYf(|9~YY2qr8rz5+8r1LEp>-aG1;qpUJxb z)1nnLmCO|yp|5B5D-1a;V?B7a3)=}4A|_)}Tpa04$HD3CZ@g;`zB6ykM_T2HvETPr z`}m7{VR&4oar?oZqpScYdiA_D@n*N426I@yh_ET>en)3p)XKErq9~cz1iWeke7qa2 zOr9lSyS+3$w&wwohU+IULeQgl?&0hO1Ba2tUZg#(cFkg&Y2(tOK2PYlo5Sqc#vE&b zWKOoO>Czu$2bLH+1Ve)MagrQO$2LFU@L9{CY{ya)SE|1uqC3FaB4!uPV)u_qm``+s zHGAq_&0QI(kzN4}Y2_0=PZAb=Twnf=>ZESrV2o`$`ISj|J96}gRY`Og^QwU)jFkQp zeMlM8Q>|HKcQie7mkJ^FEYVqgakI*#4B!>SL~m+cnKOmeN(|~|CE%%^L(1P_Fy2i9 zNMfATW@MO*n{~!&IA)$#F&7MF|~_d-d%7Amc>vk{0K`TZYF??->h1BvVL#T z<92ry%E)I&qs~U6W-AMEA@w~*;nC_l&*H2Oz6GHwV5QX@x!ORW6q_QOUdFBXd zot?Z@r!07BuxRD!#s4Em1U@R)pr{Tv`(SU!txxAh4*MH?ni^Y!Cq$4C@Jkxmy6p$Y zlF07t>XE=q)@{o-ZwYZXvb7-T23}SNl;J!mTtaOUNBiv4e8RZ=xPe7ag;O;h1{*q| zDW1SEe`!f_-eSKW#J`9XN(pp65|6Q;(LtpIicr3ol#hhsAoKwr*y4K$FK7SRjps1XqZun5|u5Ul8JZqJh~=EmCo4`D3&=qt7b{P ztP3>RdPM8qRQ1}$ks&3m;< z#V-Mngz=438lgjVAsaxbxQEZ-62F``Y}mu7BOxeXN1}xzd5+53hEy47pjgAdy_g+@ z*+N|_Flq8;hB(LIz62DB$?6ZJu&x%7!RK;?OHUp@#}09A!oD9#OH|EbQ6@)FbxK%P zwvJTc>xY9=Xa*;#0xjg7gZ_CB*=5=xpN(+CU{cY&FIIFg z!;5AYRBAnl&!+CgIYRh?!BpL->9JI#uS`)yWDj0R#anv;y^OLD>G6KtRWGLZZ6?Lk z&1_0YWBY4xP$Ws`o6nknDjrhzG3|9)q5{^NU9Q4gyk^Gq~zvhkYw>UW;(?w|WB&*~5n3OL2-4C=1D zmD2*lDvfL%=TNO2%+^C$z<68?FNua-3`Lh&S?h{fQ=B#qfjfHaVa7p}T)Pm%##r?6t#!A@r++6K<8?QhnSYp=AA|7I+ z_F;eHAtxFk&m{p9w>MRO=pi1BbsB+t4iC(|qPBUEC&i@=o zH_I|Fr1}w~9Txf0sML5jqJ^;k#Vq^#P&bixa)RsDk)JW@G1d02^##}UgDb5R1tAbq{O=ke=qX6GcUNW zQ(<|3DAt>oCp~@qhoOgRGCHc*h(Kj~>uO#Q)O5M7_x;1Z+$jG`4H`?wRHKC&fyBtI z#l4M`fY_5Xfjn^+b*K@dn}>e-`*O}WeNXDDmY`17(aJr&$xn^4kPoEL)x!E2c-&m^ zCyM%rQSHe*&8b@JN`^T7gaB{< ziC+=WL_+828nMPwDuX(oS(u!sk!YNXxxR6yh^f#e*cryzIrCajiX?K}VSsr`=(K0# zKmE#VpUT-)12er5+vDB1q&Y=L6D5?s2>Ma|OEieuc`^o1l_9iULXm)GXsgX9p&GSb zu=}Crnb$Ld=2NBVkP%}#72+;%a>HDk!wNU6;4fqj{s3~?(E+5Mve4ZY& zIs-_U+ef=`!ehIryCEVz2+A87O3ll0`b_D&Z!v3m2t@`m+dCNHmp~+b)N7&`6xz#l zTmG(q*JyKFr?yb3fc@~-Hp#WTnvV)`pGANRNv~IN^JvZs%60MJW3k(RVNU#tzzdQX z2jC!{;=5#8lAmBg=HAk{hZtQG^m2o}9KhXmehS?dHFMv~;(pSXwKVDyO(}qY6J~BY zX!u{>=FLG|n>ZX}2sCH6ui)R3*tWd_*eR_)p*e&cC8qxA+jxITC1cacKf-G? zhLWEiQqn`~%b+*nU+NutU+4E2N;FvTx5Ww25^)Rv?YU|L;>k1F06;_cK9bD(YB-A! zX{P2ELWi5vrJ*=EDlOJ!%fD)K&-0AbmDMxtDt?KbADv5IuI0)V0vzuyl;~SUyk$pU zq8=&)zmgXzSwTPk2I9e^X)8?PBQoMYd%SE3{#u-gdL%5IfMzDVL(YiP6KClRuHV7;bSUHMl_#>Bvatg+{AQ6cY8$TH!E7=~h)G%Tt}8XZUHucU zF&Oa19?=hTG&UkS{|bmIxPpCkzlxqpZ-vKUK1*18Q|2oCJJ`+8$kg=XsF2 zE<`;~fH)f_2L}^LS-Qr1xt#{Uy6C=1Zm;hIH@5a4RfY!4Qhh1{;__HF@AgfBCrShQ zztiic9M0Qhb9OAesKIqb2R>~I=mih6&&NF2^9^wNe5uA$u%0`GmSoDG z{Z;b6aw;q)?lQ|%_HG+P;xFUn3J^@7oRg@Tw?6PFkKh-thBzsrWDun$s!`ggO2?zu zA}VLdr!*bz=Lbc?=@7x|+Ten)*gb)c=&2zY4+eKHX;r3o54V$le7_V(>Z+r7@%vJQfD)fbK)W8r`r8_|bXunE zH&WR{%y^o~YMl1miZ5K^TNp8wGQlOtr)hgQ+$tD(wyf=Q-nR>}xz9uA-$)1(h;^WVQ9tazwsGyR%L)fx{$o zkmv=|?MelyIvowWe16s7xN{Y&?2vulD)gATZ5Wc_oyduU&@7GxyIyWNQ?~x*urnEh zU~Aw0#5n|cbI(Tb9~Isn-Y<4o!K&)j`CFe2c-HaH6{!(Y)c1y5(f6SWq|gEeefu?z zj^$pL9LW`6Alge)_-)0|W4`lNc(09(!$dNy_zE=o+45XZG^NlYHI-@77D*|1#@sBJ z;B)3uOYmrL<JGz7s@LCHGEl3s*u?{PwxMYj=^do#K6Y9@BnjroL&j6P z^-U?bQ4T8Acrk-@5O2=#~=WJd@Q(SizB7VfF7Tx=#NNIF-)R=-huO zSeR+$jGcb>qoMPB_cBYZ*C5yRJFmPwcT$VWnplcmLO-{pHe%mG=p<-2M*A(Uq^+Oe zn1B5sIbyce^7mDY?HVr2r5VYktLtOEwV_@pGEcv&L+iFsu!~CH>%(5jl&C$pLK|LU zFRb6){LK+WekkpW#?u;@@OkWzQR}9Gyips(42@c-}4rs8z4#;LRJvW7;@$p z#!{_SVAJ#re0JV+DNfEad`={P=QT`D+oK-rr}#7m^3R=>R?`EypI*k7H>lV8!pBSW_{4?+a=zuDtSlX6 zRop;I-_zS4Tm6pmm(7H5sAC!{i=(8$HtZg{N&eelueb6c%~arCbUlqs*NA0Aq=tW6 zXHO_8?29^)Jx0m@*JLc^jd4_))UOs3=s2^j?_W zM|qbs{iCw{dxWQ^m+;j@>@beP_05@+aSFGS(a+%*xyQ$2(xv8XtPpQ?%`M44nc4SP z6J27FV`2SxuUdmN2!U{u0Ao{aZTJe%+oA+(n94^xr(~A*7YvGl1N1?Z3K1g zpLlT#-r<@<;-#PIwdNeMv!46E4IsY2*q!kE(~Ahc>~mHztp8OBlK2*E;z@qsDY&8# z_X)CkVg~a)dokm4g-XHVLi*nO!oj4WZYp_`(YR_^h<<8jQpF$=ds%K{%8S%p;MbX_d9M& z?$rjtKbAqtcfTlq4!%3CnaumHWVT9k$*UY?y2)o$U&gaKb_tFT{(BUg5jvbNXYLF6A&HV!S=>jT*9{$?^63WiMc&l;BI^*g_Vro8^3c zy;TIHX6F+$O?C&ebOW#t>&SKA%7M<0zczaQoNRr~(zLqISQ5%iT{ic3_Gk5NyVl`F?P7b>~5Alwl~#Zty#|ZkbZk(3;T@-dk#FX*d;A)n;U~hmkxUU*4gbA*3cnkT|Z6HBWQFzd6o8z%{d z#VD5xoT{?+G$A4R#M@cQ%}rc4;hCkc#qN{IJtGQiR&37ysD_TuTlRIU2PL)Q^XGb3 zB$rN-e^cXtMKQ?jg~MPwKWS&c7dem>@(RWTc7Ap66z9j?SYxsk42FL&*ZWvFIa?0;6SHRgkBY-IPdhE> zB#M4D*s1g==^_ zXYmi-`U~48HQ!0>NtZ|F=O}4zJtwe_KS)@-5Hr6eco;Ly(cR6t0wBd6B)2)rs#gC2 z>6~pz>8@S8 zd$=NR2tg}q!2C@Iam2rPx;CQ!G`pv2Bu%p{E)3e|G|d82bB|A&o19)nq&|(hD;TY| zY+<(An}3`BqNejUYv|@$Q^i|u)_YZk_?T+?;b9vFNy<2^0K~0tCxI>^Wd7Zhxhc45 zOn89ZOu)*Cw#0+bTJQ75cf=mOLAm}ms04#cC%oC7XRVfU%N3dlNfP{fJSO8hmk&ox zlg|BQUfc;Kk#l-NkxDA_no2wn8*#2*%uOk7?7Ts}is@ArmwzqWkpV^A&zwirzyge} zuFs8takQ6*_c#7wDn;CKp}o79GjblPEJI?ONr?xvC=>#5Zafg!<4c zNfc{xS37Gtk@6jS-~bFa-9k|JLl!{c$Nj8TJ?a;M*>0?E&vR|8a5odD7E2y2tTtx} z-;2}&CLp{0z@mTmL+k>`|MYZyz^%Cg<`hYPdoZLX4f29@lgcMZzhZmCFs$R^SA(Ko z6lRH*Tm7LkyI==TaOj0Huy4!emvgW&c>QuFFLLd7PDkK9)Mc%13j=gRBGGA!D%+aE zBIEHD#G1SGge%MO*ZmsWIJ?;<0WKEJ0?M2j0AsF0a;Dp%Ut+oXrqW(>9Tv9$u6#Yc z?Yhru>(e0aK?0(Qom4QZ5qLd4VJl9M(J$z{I33DMLH#GMK6bOT`_1IyL#KuQ`I?>i zp7~%4+|`;Hhy1{hSlGDvpK~di4}RUxyzJMZM zspXyZ4sV75coJICZ-fEJumgqtsr`2*{(#oJ6QnnvMjildoqn-xX&N+P3nqYY9&L{fNX)CU=vT5qMt`3wZ!5hR()SV9= zJ36ZS!K5n1##S0s!Kc;P%XKpqtKai$*FC)a+-hWqX$t-x30Lw z@-u6WzjVKl>502ZmAeiB6gJ-&FK%}>Rri{lEW3S3`#eu7Ofz_zpKilI?@%d(o>7(` z>{X58n`4@FQsTS&e7KzlULmKD&GKK!wrK;Dl#Lgx^~CsuhV7p-tP*PWs`ID_(LDdC z{%$JnkZmR^?cd$oPNIBo z5Q$m4#QfTU3w3Y!3yc3-h5hO!Ii531Id6qODR1r}FcZXl_D?@rCH8j1BbR6?>=IrHY*V zW@1KC*oVe-FR*0@Us6{W&$quAbp!tZ<|a|xK0hzd+XE6kHzJphrb$tZWFyFZa0YFC z_29>~k83Eq;g=W?vF;*(#+rGxF&k8B8)OSt59ow~gfroei=Ijjl2 ziq)4~avbL(7VnRYq%fgJ_;D^VcsYN%<|^zfTU?s$u+{(;fOEy<4C*mAd0X3FF^sAbkH4G%lR@Kt zGDpsjoMS;Hmx=?1VUa{l~+3a9wx3wZ~YHs)B%+lntVp|w{XaZjPvN~7k&M3+xwiFGRekUF!;egw3)iz)2_EKxhTZ!aOQyqX+VT%L z0GoX9xM^x4-xvwKjU)VVVlfzZG7Fvf-;dif7QMda6x)6|z*3F#fGF1n{+YC{kdupV z1=;+(5SJXh1^{Z4oR6j9@BVSIh<^A9aqX0Oj{g9BJ9NG-uOn?(U%oxXXx&xdXIat_ zmr)3jD0Ovpzd3|EeD_}!s>iqFJ?{XNyQIoa*7BD>+S|!}Pn_Jyq@~ib0s$nyI2a8I+G@nsu*#oC~&4V#q<+ z^Sb`#UV=i}c?~(Jq;*!v^W%6(?K@}@Z5#W3*bx`--l9FEgNPqb^mefY*CqkTxn zz7Z--Xzm?-dCp|1viPjEcG_Rx0Uey(=6_9Q{R_JuHO3JnA{^+m15%8-X>rt>JG|1E zGkBrZeq1F)sn{P(9&}(@UMt@vy4$WZM@h6qdwZ$&tj{HK{9tR+^!7`*^Lnr4W=N_7 zSBKLPrt00Wau((&Ay_{(C)=Ys;f zH}=H>8cBbQJ6_S&{&GdNz(gdpYs2R!cU!MHRN*CTOofcZzT;-FGw1teiAGPXXyA|6 z{_?U?zsglKV7=1yE%A60OXM+Ng06;#8k0MlYJ1@;ldXZsU>r-IzG{+BZ3fFYb3L`T z!s_!?+RBn$t$lC^#h8)gx1SjF`$^!k9t)B28far6E&ETtNP}F9muN=i=i4Cfm{@l|V*^h+H-M39$sGIUb5fG>wRiXT!Pg63Fd|->OERXf z#}|`woy%9eV_mZD9yMP06A+z6@82h%rbBXH9!y}djH)6uDt|q&kQM`Dz2H(wr9~R5 zGLSEJfp=ap>MW*30=38Y%yF^6Y}vlt)I+%oNA;}7o^_j-YXJ|3d%N?2ki68EY27Vx zw~w|n>6aRq_eS}>`(|~-eDi+z9l!AU-~RwB{{WlP>yU?4=}ebzQY51~@QGQ+sP}al z)e=C0xf z^M!gz3uCgl#xa+D1wPIqN2%(HRoQ_tBQ2xmjK;NJzG^b4$Uzeds#91VkNki9IsX9V zThaofDFoiqU8TquRvWDIsah(yawL&s;qimc2Gs6lsVn(kIMn4UlwVb$!Gi$_BfyellWcikHuERhpDiO|e?zPul>LPS#q8{#f$X zB0&?ksClu<Q){!sOor_x_nVSlD_nzFXR;9J&i9apDMWG~)P z9~Hxd=N_bC7QDY`Dc4tnH;r7q*3HKsFf^+hFR$+{yl9X(B@aEyt*piFs z?g76%d|+lhz40cY=LI{Ib$Y&QH$&3y7~RniHShfS%=F_KL#WB5j)%_h2!IlyO{d07 zalQ9DSBEoCwrcJ^sc6yVz?r(BjTNss5ZT)+*64MN`f`Mh_{i=qE9Aa@a*U-53f1iS zD+4!gsru&UZBBonReNPF-kMX~{5lH3Mgk60%l4}RO*8!ELnGIMyj#s^v;Gd;B(^6{(*PREPzdt_Q3 zYl6Oi=L@>F^Qg#(g_lL_y>Wrd;J4%F7EF1iNvA)xU3SLG2c*>&5<<_d*ezdr2u>&yD!NiZrtU&d$Nu^RUMFe8T`Yr3_?<0QATO?y@@?qTT@_5K(XA~T6Kj2EAe zIBqp9Vs^`?E22im`S`Ej2)?7VSw1iZ`@P&==rR+vY)p!XvyJx}zwesuU=kzUA1QSF zU}sUVZv2|V#W`+I`*Jxocl+Q>P>R?{zqR7YU_}bMy5H;e!tAHV9~oDs-#l*uIMyRj zQ8}u4;}cP8PR;}8jLKIg1>IN1%EOKS0DRP9&R|87_>VYq8}`*;YEQ08SB})!W@5@R zjH0B6N#VvVNtB=Y!``o04Cc;V&puy&oT7}s_6)V*rxpVng|PzK^Ms;C5lIcZJ+LXk zgHrfSC7$^}zM&rKB+}uzUB5fawoi2rr=4+uqEch{akRUv&3M};t28IzBL@4mKkk2T z%k#yz%oU0&-c6(k$` zW~b9&#A4c8^ydJLNRJ50Cep(w#SfwlE;~P4BXRvcHv? zOk;t{&6DRB|LB6FG=0Yt$3`o zr>U0Xt_)aW2c@`?=1sFOOpk4O0qa2$ox#sd{BG zB9=cFm_9!E{F-maj0RG;*i!NwVW5liys4`fyLYZLHLiZx8Y;-Hhmi4xhW6!E@3RmQ zQSQ5vSLrt*FC9oKQYF=5(-nzHc@?x1%N7ng$YGt0bax;M`2E!V$p5t9iLIXJ+XEUn+y zG%<{qw3fBBG9K>Osq8O|1|j8nJ+L(*9lbBYlPR&e*~4y+wSKsrIZ2ehT5Fd%som%k z?}r?i8|u^4X=(Enp^(>AGQVp@oK1CDb~5;Hy+t_0#-$L z+FE>u25Ii?azF%b`8~0*^w~xFnC~A$6o}rE{+r$gd{(m27LmMS@D{iS?cu<^J)EO_ zR%%H(y}&;jw=y9iO?zgUM$rU#=U4(V?nCnJ%$B;%7ZG_KFZ|$1yD#GcbrW0W@0>!w zId#ry>Uv^AtiAT_va>RccIhngU`UgxzvmcBw38EN$$36-gr(D%#Hk34W!oq(b-_6v zZ~~R?zpgJ$I*ch3!;Fs0go4b=Cr!3{;8w{A$*wKkW~%Lrv*xfPQSQI6?8fI9REOfv z7#UlY<#xK~7|*s7k8ED@tt~ft_RNZLfvrk0BOg}p=OOK6N;j(dU~^-}_l$;DJ#Bcv z1mV}tY8Igsw^p@ScCweG@qA{b(j(FDxn0(ai}%3Cb5v3ObA9seJAXH@W7HuYoI|_u zNl0CG_Ufzm{j(AL;ZFQuYob){Md<>r@`+8!q&*;<=9=iK-`w%(UBCjFZ^jsto|HE<6fs|eJ-!fUU}nx(r?_xJ>|+4SCbgBWIf%# zCadQFZX#aZOiGj58@@~kGPy2-@A>t>;oWQXz|>(btf-L5=eexU2F>1+BZ9SCyu9y! zOa?OTZmq)h*A8ky8KF4HfwCuWt?jz2GcAF7*X@RszixAKs*m+D^TxQ} z>4BL6;;VtfLAyP(QuWD^8om!~2?P>_eEVQrM~lBM5ua?V45RMsJYj*VZ@NYK=LeZ=B;=yZYc6 zJ~Mq@uUG#7Bdad2U#TvnO=+CZ`8oZUEZj?q>lw2*>^R4&GGie zado{`t-yL+UZ+E?4!257I-N9>WO63Q9<}}|%I(|S+xPjxZ6F=2b*A$CO@2s{Jk|zY zMkf`#U=wOnj3~Qrf2I}bzZZ!S;#^=2SNX^bd#{Ww%~{*;C*0!z8Wx4|@$;G>n<`ta zK64zoq@cLbcoQhSx^z>%T+Ox4y|YtA7{G}}i{H*SW7|cWFfe^FRh8R*`30M^?S=$b zaou(1vttiRKxy1<*jN1EcDH&K@QrTT*0s(8$!5x0Zs^ty!adjQdt?i3D01fdJr1Y- zM_2IrFqGxnDR#uRfnV6b=bP!&dZ*%89GqG0_sr85pV7*YAAAS3l)FNgfx_6?d*Q65 zC6%{#=QMQg5Ro|Cq{p}0kN1IxZ?ir52y!caP}da-2- zJAv9>_krCt+rEBqTj$0rQts|-;r{@f3R2S=t=oS1I|j^qS|p~|&$efm0YkRO&lQ@V zZ*oCcibYCOGsIgt;msiw^*6Dv7#YUBD?==9>seMF379rr6i`ru~4;B}8rsVMKf-SJo%b?oC7o3Qb-6gd|CvZ}h-?}3~4 zGgiE6xAegZ@$HO>cE(Q*uKlnxzJ2qrORd)b0LJS>tN#Fx)R#-E(vc`m5~e8FiNZO^ zE!Ju>s7M25*Zg2i<<#mk>PeKP%I#bmmAuivjL=0OcT@EF#9(yg-50v*$!e+9eQS4t zmb*ab%aU`TPZ+1CND?l+s~)6CdOM=NSjx}lurNugFrN<=zHu z8n;HT86xl>Ln%nmJ;Cqv$}_0d3uChbJ~_?CQt6SDUfEreGcu2FJo{vNsvr*+fdJae zf8QAmcZEjlPn;8smsD|g#_%GyW$Rg~N4ifo7f#+YKGfqTQBq^v?%rwt0K5$2825SJ zH2xj;Y1L#u`qR6~>Hh#Y5;Cbtvy1l1C6>~CYY!K9m&j<=0^FOt&!3FdC3?PonI$Y) zSbmrcdkILAr)x>A_`_bL(cpKCfQ&+Mm7AlC$}uS69^FyZrh%i;8<9VaDT`sRyT}a2N+*ePv^$ps1*17l2YHE%@eCs)NSa$WL`5+J{ zb{BMhxA$-{DXSY(w?XZifzoBx?v%&1{65m{z8iR}{j(jfWzj?Lyb39_ea{#X7eVLe zoY6KgltoDt{h|@r$S% zvGMJY_Qlor8owVn5gU!I9xpZ8MlI>O@R^l+0X4|v$s)x3uIt+ZBk65@@_LNO#&UaN zQSp~_r5@YY&bYz=yIvkJB1~?)m7AH;{2rX6HR?7_DWlmR@$sDbc*~QXFdb^!_fHtT zzlT)!UY~Oq_Yjnbl8Az*9@(2l;-zu%fhU&h-yMySs^<<+U)L7MrB>;{E0Zqgx3zVG z+j-I*8BeD^q*$a7Mc(|^^OFM>Yg}{ljhA#+wdT9RHa96*Au|;A-;OXC(Ke(7JeQCY u4esiz##RUA-@B7Usxjx^cmkkq!$xWnSoU^_cU)kX65~vC`?;N)!2j6}U^Auw literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg b/public/Cesium/Assets/Textures/SkyBox/tycho2t3_80_py.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a8421113e0b4a7a51160372eb19a6f2ab2e35884 GIT binary patch literal 152999 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 UE9TaW1e4Xu)s0izmhVrFn?oG1&1>9)rdqYW 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� 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

    b*&C#e?R-c!Y+IkGbf!#zix}h$ez$2xDZM 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
  1. 1gDa_Mei!z}iDsxNWvxUXUPBWjvR%B0?&YB26}8}w^22-X3p z)tut4rs+oaA<*9nqLGr&qQ4BAhw%8!59Jh|uQ@+s z=NzBXNAh~5MnnSIl!sS9NZAQv`T1IgZlF`>Zs$+L(F{|Ap1kntG&0B+J9#oh!o`yg zLL)Xnex{KO6P8+M&HCPtfvFwNJCQ0!wU zs!?CL894SSf9F-r*9|u1vE;v6_s(W*`aJ`v#Q0WE?yT8v^ z`b1|$aqqz{UYWi|ihB1ul;_(ti>Ie<$q_)FgqH4yRrmonWy7)Od^D-nBWA+{Oxbi? zxz^hiqgJ)qRMWy%ncq`U!QX8ZBwQ1wll-Yh!$B5ARH0!;GPi#FvmO(Kw`?1PrRSWp zmuR2_+V0{`3y++eVNrZ_Bpu_$FM>N;xsikJ{_a-?jrTP@oE7AVX9%$7pRlnP&EwJP z!{*WQUPK_F*8t@`m|M>j%_KS*X!`);Yd5%kiejzv8W4fanQ%(`Wp1mM3B5m=hN(gw zex!eSnSXQ*HUTsQ4P9dG-z{Cev2}dD6eLEOjt-B@t>fnZN0h_NJyXZ{sn1tX-cB|h zHnn{q691wD|E&o)yU&pPr*Lrh&fma;qI3U&y;DZ z60ktfLbaH9pi@sBbzI5c(S5Y4U8`w?NmY5YIp5-YAOU~(M)bi{Ou3oKy+Acm<)S7` zX;6WI;kjq&2m*G~#d6S)Rz|+8iKfQlTH1PIn6?C%TcsT@7lZ!9@Ose$p4rBq)Z6sJ zdFNLie2PsJ6|r9bZX$2t!4eRz{$0FHnRT7A??-dpH?o?;zQ&o<*$B&gvA-FT5A=8zt!|q3mpxv{y@jT5H&*e&DWd)%L;~{k)L~oF zB5li-*}JD_%guS;8(%xwDUYSfp{thjL-a)NV1MDnLd}9w50*-tw))O|yI)@nsck*! zeuLe!_pc;H{+s%PGpX~{E>B9gGOJLd!^;H<;#kYDgz`2ToZ+klEeY4@;dD*GCsIPM zWQNz_`GQ5W+z|gn6$+}?AyeRebxX*kUg5OE{D-2sp88~0^`(Fivd}=E_NZ{IQENdEM93;*;R;+Ju|j-!BCNYl4Q+ri20i@0~hWg?Oo^)uZaPd*;xfB193DM&MXzcKaW3vQiIx+Q_jy&BX4Cyf=yHgIB1 zi)nkAhHk217?CK9#^&kYZy`_Pm}CJhC)B<`2vh1__2SCd$I8e*)5H}8*-WN}2{(

    U+p|UPy^_6=WSVr}?kN_M8tN`>HdZ_u>u!JY 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 M5gp@4I2{N7*#rT|-v9sr literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/airfield.png b/public/Cesium/Assets/Textures/maki/airfield.png new file mode 100644 index 0000000000000000000000000000000000000000..b7746842450337edd3077787e78714d54613eac1 GIT binary patch literal 1188 zcmV;V1Y7%wP)Px#32;bRa{vGi!vFvd!vV){sAK>D1UX4WK~#9!?VU|% z6G0TmYpYchs-mFa(T|IjDoR`F!K%%7VqyXwvbA9B#ioT`gkmnGjXhYUc<|8NiU&pU zQm}fo)QFc}O6koUM8s$z7>ULPHqJtX5VrZ)%naQ@az+f;K z3ZkWn;)!Rk9iYmLaIkN+HPS^L^n8K(!>iva%8(_J*cA9FAZ02o($lH)uaQolXb2 zOTr}pT}Dm$>K&19005xg1b!F**aGOU6fGW)KcWSI_z|dFJ^Z*TMYGv#c`X1Y zCnq1P0Js8`8;}38761g?UzN{uLuCUJaLHxl0k!~;hylPHGoOQMvmdJVXq6^+$uiy*-RJvU`a$|PETS-Sw8od#t)4sql)5LNbn=-jv&Oban z{F>s426=pZ{Ar<3@KJ!#OZvH&r&-Gxt)Zpd6N$tNf-wc3>iHU@kpCo4XP5`44Yc)@$Qa5zC!LpUf zWUe=Q57<)TkB*MMFyeSfJRW~&>feZNK>Utc9aL_tlhK)D^g@Qu*=#mY$9>;c;YNQX z5_!wfp((jWuILs902%Fncs{-6bUL%bEZ)reei;A&000000MG}(^z`%`?=Ca|lfE&v z-^}$N5dfI?-7x|H=oO(JPx#32;bRa{vGi!vFvd!vV){sAK>D1*b_wK~#9!?VMdm zTt^hgHKs8eDTP4OrcEU+lsqJD+LzEaB$RY_vtQa;rKa0jKTvm3mxUs%F9}GYf_)JL zp$YmRk(AbAw-2?(w$g`SMMMy>NPV#hrb`K?Qj4j$b_RCodcF7VxgWDL_ug~iuRh4# zng4I*%{T-_U4&R!7l2;{$E6lEE7r8}BSEEPSxNyGoJSL_OEiy&uVgVvK4!Qxc~xkhRT_rl|nCg9o^IiV4s=6VDJw$0L{(K z-(fE>XYei8+WPbKf--c~VC(Pd>bd~|AU75epl)>4AOMK@RH0DlK87J<=DVck(YZbp zfKnL3g*yYYpP`|lgcbnH%ga|}0Ff00e*l5C8%Y^r3nEO8K2;1E33jxIette79PbGXnrw zopXA)c@>go&JaL$iTVYn8GjUFOe&SC*1Hs)XGz+b$D2q6OCUyMa)5S>7%x>tMaAzL zKor}t)q5b7Z)j-v!A#?&>hA9DbJP(hQjxQe3itK(eZtassivl;nt{FHq*aYS2JP}@ zha0GTKHr9huyn{OalRN@DPq9iJdBsBs;X)QSmvPUt=F%n4eW35cpHWd1Mz4^MjDW zk@@$1D;Y0UI2^tMgy1Wb@jgg_5{bm;RyJO$iHV5_5X42Uah{&fvXk*rt*)-V2Ly4# ztZC)b&{$}-IImZgm6fX+#)mS!#+N|jd`(Twf)k9Fs->mnTOfqXOy={wy}h40(Rit5 zXJqAf5&7#mX%c`~CjE&}?N@S6BZEgy7XQr?0E4 z`xy;}tFyCn2s~v~`=^0{fvae!e#xCz-jkt0ew<;k7mM1Xv>E`>%-^Bghpnxx$(fm% zdNVfV$HvBDB!vDH3We5qf&c>;A0LktU=9AaSS)sHbaXV%Gb>_naIh;HjebL*-(_9r zwY9Yx5PW+t*skGB-C@rx^e}qZou^xu1oUAmrKgkf9-)nc{C<-;0P-PE7<`eJ=(v;42V{Cq(1>ru z_k+1FELC|S-G;nKKa_Req}2~-WcE=`WqMA4>;5sGkijEL2mk>f00e*l5C8%|00;m9 z=*_}ouozd0ZtrjT&lGqy)P=79Z~k#5qo${)8yGG}V^2^!%turHSZ#*e`b@9}^A%6n z(A^_5H^jHLwklO1lwizf(DF4xIE>~qG#@x7xSU|V;($vNv3Mm&IpV?&wU|#c33z9z z*?M4ByD5cr*in*N9+T}LC{>guIEj|8nbBLe2f(Z4Lm}A7{8G`=-)+BWhX4cw;Pra{ z5&2w~-2end?F9wBa)2X%Cq+C8r7{h*-^H$KUw&3rR<1-Mkt9uxXRUZVepBwWiX}4F zSV9mcW!&a#K`xQacf_62oX;fS=1fj+cv%qhPw?{KKUxVkp5=ta761SM07*qoM6N<$ Ef)m}|HUIzs literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/alcohol-shop.png b/public/Cesium/Assets/Textures/maki/alcohol-shop.png new file mode 100644 index 0000000000000000000000000000000000000000..b75a5d9eaa9f28c1903123abfb7e53f381abe74e GIT binary patch literal 1293 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 FV1ko^?Tr8c literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/art-gallery.png b/public/Cesium/Assets/Textures/maki/art-gallery.png new file mode 100644 index 0000000000000000000000000000000000000000..a663512ef383476c5371146562eb372718a0936d GIT binary patch literal 3159 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/bank.png b/public/Cesium/Assets/Textures/maki/bank.png new file mode 100644 index 0000000000000000000000000000000000000000..a67cee06eb706317409be669ca47654565aca264 GIT binary patch literal 936 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1qt-49vEkE{-7;x8BZ;^$1RsIDVa7R8XW;P$JMJ zJa$S#S+K~ZZBf}bRisT8`k0BnVa{K6K|H5Pg7+Z5T4O-?B&pPJrQK4BPUfBFuI5fX z@7Ut5nQbLj zwE=b4IntjL%1$|A`EW`>$g3T%GS}6H%;GTXkK#x=X%DLDzKcZ8bqqtJ7N>`^j zmz`g~&_eX_o(;C~2OcI#>+9&;>2O=TZ{|!%`xnW1dGFGUX6^}EvTbX9_x{igS>_V* z^80V!xbfp++GgG8wbyv29MPYC`s>!^%b#a5GWsRXcdZM_{BL1qR(3ycd;Ri;wu$dv zy{cNbcJrGbSF_kcp7XELynNxpht5Tk-7=n&Hb%VJ=GGK@w&C*6=2thC_5_+d=44?~ zz7?5pQct3Yd7{S?#-m2<+qP{p&*qYlk*V?7c;?{y@B5t@m;@RcdKDbzntlELoxQ!i zUEZm3$K7}5cd@Q$jj)m1f2?%&r;imj@&XMEED8*a91buIcR61JL1?$3M*pv0zw~3e z9z+Si6(FfaVTy=exN=40^@|r3OWVJF`*z)Iwyx_#UI7CGgAXq6doxO%=kxzkWMCAL zW8_%DvUcs-e0O(u=GU#)U)TPR=YH|-om}Mk^8G6xDFGc~;M(x&o1wk^`>V~bx)qq} zLcAQ()1Q0qU4PLdDk^H3ukeDfEw9e*viceM@|uC_9=F32{_j7uRYC6tb%!1nWR#VC3!8XaJU#XK{W;n9R~tG&3EE#Uk9ySpymVO!_+$xbtytlqqd{9MhFa(M5dk2(ICDN~NOzPZjM kb3*nrCvxhYaO#FVdQ&MBb@0JrL$(*X{S~Knx0v0)W;cxF|w$-$6+@4;P?$So8C~z!E%zlK?>W&+mZxaolDU< z-fx}b4eV-*ON+5CRdz7C7Z&S+P>P(8180KrA(?pdV#=vQx8|BxoI8A|yrC~&Si@A( zc1}?an!sl9Dk_CSwq~EfV3Z{^mCCxR%KWH7olg}1o~M?-H>QxmzM0_4 z=P*2wW>>m@gYO|Sy5vVhaX@&NB3Qh5BRwcIv`I@{{l)0?^p3mn{T)M+@9YyAZBI7h z_`0>N?d+AfxR*AzwtR74U*B0viSyIK=;P(uupF1*Y&L# zu#da(JR3I!2@DLJg+xK;SK2dwc_uS7G7<*Jd_vhu*%_lGhlMd%E~yGKl9LcV19#y@lT(2 zgXQLbr95!!>B*Zy&dL`u2_GgVlAS!cb#--TVS;GZk&ms#JZEkK79*vxQ zO;z4P1UsU5Rw4$2Q6wcOYKhF>;5IhuE+kTQ=6S8_>hIPZ-xMHALi9|qj@o+zeq09! zhj=-gJ*gz0Zh$r*t(@6j@+n zZvHk}Qan0}do|8My-hdNJp62#n(%z(3@eEu;ffs>O{gsBp@ySW?YTr536aUzdYxoC~pui4x(wx>6kX=D;Zf-meuQ%9R z)V~NfKI-~mbo6Ttqcw*P>=BKv4u#w$lgVMX;V&gBp6(t+qu7&*F$e9Sv+`a;dmoG7 z_RLyq!dQl@1H7%Pizqc6o7z0oUK5i+RP~~I32YoE!1Y^(S&H6a!X4cix;v`LMlHLg l-Mc}esmip9dtGU8T_^QbC-5%0ym|jn0WWuqTeC}e=6|d!rZfNm literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/baseball.png b/public/Cesium/Assets/Textures/maki/baseball.png new file mode 100644 index 0000000000000000000000000000000000000000..23f344bbfab9618ca1eb6d1390c104547211f9ab GIT binary patch literal 1838 zcmV+}2hsS6P)Px#32;bRa{vGi!vFvd!vV){sAK>D2E$22K~#9!?VWo_ zWK|r;$F*{)WDBF(h~3zww%x7WUQ4(ewUv(Z&>SamOeGb~K&8?me3We=>pBR&(0m|< zsG#K^4U`ZWNSTFFlOQY~x z3{?!G_?zr@RFtv!OG`^Bb8~a9si~=~g@uJwivKx@%IXwl@L7#9DyoOqJJmmu*snQwJ>A;)!r`tK^gIVS^y9$ zDJkgzAUuYuE42R3&dzeJ;%``1R@P@gOn4BL2LR|5f5Xz!(!K^f;V`Pt833{T{QM69 zPdFgD_(_N0EksoRI~w}aI?q&9`G0BoOH1UK&-d7_hkUWb)o_=`-_p2lk+hT z0K_~VPZ0niN<;v${zBB$)YS3WB`zw4sQU&a6Z8#Kjm0mU0sI|f?SMqI2=D30O1kH zkogE4837PTe;vd`Ede1&mXwtAQxJ26TM&X|85tR$2MdA}4|X90$%>1M2YCW;I-TEQ z%}4=4U0vN-o)88G242KvE|($LmLXb3uY2+(gbvIWcBu zXP@B(z~OLwkMZCNgky4IEH5u7^McUY+WNZCl~X?mcPb=oM&}3jiU{F0h5FH|!SP_X za1f*~eLVz$jOAGau-om67!S63LKFm{s;a7)HH6B_%C`~1R!@k8Ak56nWEi-_CDtVB zrL=DhlNcj+ zjDqM8B9!7ndV2a7oRhS@CebfaK87HW4d4tQ_=KO-SMY|Ll)OQ2_MDlS`6&ivon4aN z>CVBy!I!XTr(76{GF&1Zxg83oz|$jU4h%LTO%yk4(E zm~sViZC>JUSW!{YyJ{goXBr7plAf5D$WBg9{$aB)wY9Z1S|ChLPCm=9Tw&iS;s-26 zukS$y3vY#mh41l>3(%G*$#dg&Z0n~LC^0edycP%v2?-Zi%qfR;q9%QTQ!GXc9XK3$Xv)TRtKI@?!)B0U5*H;X)*chc%7^S79?=U)4>d1}&ptX!36PWEZqbxPE zZ3P7d?*pH8G@QhbGNP8_cTd?B+lz~fPt)F~yu7>}fN(5q3v1)!<2gJ5tV2jpnDV5$ zS6f@#Yhew6$MH9`2~(iczqEKEuo;BdJz+V~qE&p7tf|RZ$>u!;2tJ)FutPs4u-w*4 zGUfoEcS4~N>{giW{Fmn5_4V~{h2<)2GD`7(;OXh zG&D543B?4GolABfd6AK1_e;Ou7_xH$DlMA#^GKfXD-DE>j*bcq&;NKxdxApC-(^&z zpe<)BBx~Fo64RIvj8~pO^&{HRQG0uPrA7z`gFQsGD?H#SgFI6ff^;n~NY)^)-V-Wi zi|F+NUR0>XC^9QY1EHy@>5V{3?cHwoIXn|pCj^_#_B#!Po}QjpHpLMyML9*xP32mK zsIyn;6 zf4$}3jp}Ml&QelRzSG(AkD{{l0Jg0&B0Fq!OkLv3OI5~zYXS*L7W1kd?MQYPD#|b) z$ji(7khaf9@%4GZwa}VVx7&RddOs!xTsB^ybxQRJs>cq3MWy&S&gTFjmQsA|^Nk)E cX??ZI|7*Dd*pJ!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1quc4ZA&E978H@y`AgtArdHaeEFp}@-1#IWh*{} z1Xg?$`r8;&e%n4TReM>`t|XU9>=&IKQ>r%lxhioe-Q`jIG9@KZT##AtkX|L%eY5BN^Ru(Rr?uVppX8(WvBKv5t4VXhJQn*2 zx8|&1QlBBeX=jbWeWp!QKT1nWN6$&ww^m_-@ZGgnI!>NE`8sU+rJs|}ZM}Nx*>ml= zHJ+X)<@=9sPAqLb{7_PqWA_@1HzHbdO)_uHl0D;p;{EskL6VdBqE>e zq6f@cm(P@%&zLXpGRHn7@0_L5S^K3)b$5K9sXzJrQ!G^Bjd@Am{w-TdPWB!ZxU1?T6RcGan z!w0@R{rQ&&^Z{P0uDod?1xM*WN>+!M9OGl0z;cbh2oyO#$ z{AS68=QwyD+q&F+|`-i+)(K2t(8R?ZSk4=RRym^yzEiFblcc$Q6Al5E)?U2#3{rmTOF8OJq&Q!Jk*ip&a zD$PTGrcIj`=l5Q};kTBvpzji&;_0r7FPcxCI`#3F)q6!u;=;qf?^?e6xt#CONf-a@ zFPlG2YK6>>d5;284p`rG+Hto1fvJRpU`$xN{1d4wpUWfGuB~VM6h3uUQEOs0D3y7- L`njxgN@xNAi`h+a literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/beer.png b/public/Cesium/Assets/Textures/maki/beer.png new file mode 100644 index 0000000000000000000000000000000000000000..a15cf99119df13c3f50968f637e6df3170134342 GIT binary patch literal 1403 zcmV->1%&#EP)Px#32;bRa{vGi!vFvd!vV){sAK>D1rSL@K~#9!?VVdl zltC27*X&}Z(M?T5iry-^5SG1^L3?+#%vDpe+{M5mkZ4gN5)75dkbDu$$`|v=hm>%; z;6qO)A{Lq9qalT135I5vZZr6xjpI7sef;JO{NMJQ@67ql?#!7vGi$LhmbtmP1f(Po zvl1;z3#udz$pccXWXaACg+e>Paq0>AbC1;C4~|n=QhI+hILtr*=)=3nhsVdqv-jA(9dE;Ez!@d~FA0Ni9nd3kw#EJg$Zfv08yP*+!1#nNuK z+dZZxfE2Q#^78V>EQaLf=JqR|3ma6BohM1#OG-+fv$Wgi^Sz?9`;1&elF7>2+S*DP zzlw9J^#uI^EU`N?Gjo`w-8D5e_bJaGkYxy(ipFp;7;ylAwavY~y_YD@Cm3RkhyYZJ z0RR9eZB}9oZC6N9Z_uHjpWQXw18_Q>zvQloAjNXt`!^~{NYDa+jjYh?^$sWq#`bd# zAfB{27z~!MwAbVDeA5EJak9eF($Z%v2KoK|AjKdj=Kzk8Hdj?uJz!~Xetv#8WfkKvo|Lv=RHe%F(?XvBT4~8iM}eTZ~-z=lU@M;bewhr z00000NZIZ7DHfxqr>8Slv-5E<$p~OpO8|DV;`H?N?~nnpAQYTVPyo2q0+2>lURGB2 z1RTF0G*$gTnSxr?0)x)cyq2UhY8<3*b0#yX$iprX7Y~x~y7LsuR000000Kj|z zGBPs0fb;bOuq0Qey1Kd+oNo;k78btM13&`#g2BPTd;nk#wYRrlrvNyt_GWb?`I3o= ziE{wJ8X6fH$)QBSQECH#U`#^x2hOhGDqjW$U;qFB0DuMnSkDWXRSt(^N>2bO5DWaT z;^N{L6aWt0vc@_)JFkiips}&>HU+>wtrAzG73`UsQawFAmnl=wtz4#Vi!uNs0P6vO z*=9fhfMWo5yZtu+&<}u$rop5 zXMchiK&R_?(2G*Zmj?m?q0S57;8XV)Al!KYG$j)%N2s>8wp#Tw!4iIg)`~t5FLNFs z&d?L(Fat99NIw7o0Ad5M*=*B-0GQkY$V02qjuU51VU0HVx*00000004kf0A8>6BW%Rz2Vlv*Kz)7v zU6bbm1q~0v76I5!8q?q3f6>eU@GZK!=K{gLK=?cGG)+gBGY+`j?jL4!K9@HEE4}J* zwfBA=0L0Ra!p54(`S=R^Wjb5D#pn|5-c6i8iBA&ZEP~Z0pU?MtU|^siT>C7%6f^#H z;Yz~yXK(`m8M96>0GlnmmF50_#e_Y7y@lt3j67sg=clUetAEZ&&<#%~#s~la002ov JPDHLkV1oGCVwV5_ literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/bicycle.png b/public/Cesium/Assets/Textures/maki/bicycle.png new file mode 100644 index 0000000000000000000000000000000000000000..fb871be483a439271a6a9ec1123dcd82729f1ce8 GIT binary patch literal 3989 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/building.png b/public/Cesium/Assets/Textures/maki/building.png new file mode 100644 index 0000000000000000000000000000000000000000..885f1128a60dd5382036528c43f8fde8a1a432d9 GIT binary patch literal 1765 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 UyCZWW6#xJL07*qoM6N<$g0*?N_5c6? literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/camera.png b/public/Cesium/Assets/Textures/maki/camera.png new file mode 100644 index 0000000000000000000000000000000000000000..ec54e12a21c131a7d455fc6735e0b48356b0d1be GIT binary patch literal 1976 zcmV;p2S@mcP)Px#32;bRa{vGi!vFvd!vV){sAK>D2Te&tK~#9!?Oh8@ z990yhAL~Cx>L;nS(U>$Q8f~nfCMNX@?7s-REG#q#Xjv8#@B=Lgh!)!NiM657)Gwha zrXXsIO)F7Cup%a!U=gXL4F*F|6h%=hN?Cj-F3mEX-FdUjEDUpRaISKo@idAR&sCWBEdK`Z89y+ZZ0_+I{Nzhl9H2?JENkaybRMyBPAu}Q`itG``U%({A*-5{-U-OH^g)-k+AWw z|8)}+6E?fu{*4-r_lLvb=p7#)kM*~WvPhLToX)?N70RGM`+8Rp8&?S1{_^tjO0}Io z1K1Ll7iC%q&c7^ByBrFbu3G{$Kas+7Q&Ush!bLz@TH41V<&B(=fzR~}cQD+`utC@? z0F#rG*4oC;Y;o5GW{K?ECx=O!g3eGx7K zU`wQ|8v~S83isn_M~8&@Zv~IzmtZvL8*K)y!DyFRZQ-h!X0!R{BS((pg!;53CMJFv zE&^anrEaZ}`Si;Me~oTm8GFwxP`ks%-<8c)E3{s&uI zTQk*)x9A<)wrzV&_!LA4<2w8H?JFi{sROs$eOQu!nwpvta+W$kFOUcz0*C-2fCx|) zY|QeP)9L&wFE8(HHt4B1aNxl6M~@!$w6wHj<2#PwH$-gbb9}Sd2=KD;N`Gl->F)mi z{zTq5%$YN161Q*P{tB)QcXxZy5U^>}rop{?_r8evh)@G!xE4B~iwNMy`RwfMcSc7? z(4BcwKA2dsV!C?6F;K75>sU4@UudmN%w*DXj zW(TqU*}s2(QMfYVU<+YnA|OZrOKmWluM+{j>A^rVN@@Z&)tCm=6ai=k5E_^3xTdD2 zJUlfXkLO(gwHe3c5_#;{u`D!yx+NeZBjZCkj^DX+XQkC@JsTt|; zDcupUb?eqQc%0*QyWbDhMpjnVdptG@3JTuT9RZDvjk!F{!(3jH?Apm73o|YNFL0%r zAx#i~aKO;ekb|T4A68?IR*2!@VY^Zx3QZ7Tv)P8EqMZ0WSdT}JEuLNx&eIJ6>;-&E z${|RXM4pWjVGf=i5jq9BApo;hQVuzB;zT+-cS;F+ot>R&Qua_L-4K9vT2c<_?(R-e zC}1`fU}4@YurhtE8v>Bb%G3Wh8jZir)fUq+#xovZWg5^80Vb2_cb*xq&6_uWGFMyB z!9%veU>MiaIKYcGUdl1m)zvS})fVQ2rR=n~w?C!SbfsnnVr6AzFY^T8un=%A3o&>` z!pOSN-AI@<4IMnrLArM+?*i7$jiF}q*ifRW(;NXvv_k$4kAoT-8lE+q&7-`!aW1am z(apvi2}+DNG&vu@8;}Fgm-p=>5o~NQ#m@PRr{AweAWm}xpr#@YBWD(?v9a+P;1n?cl@S7Z6h(}?4v##fakuWu1`vv)uwe&qHk5~JUl$PQLWHO^iqPFv~sfd~@L^Yio3ddmOxtcX!?d7?e&yGf~MvZp@bTZu| zlpW2Pu!U|VZ)%BDN{h$iX;v#2bWyL6VSV&puw_nfZ?8+P<8ckHg$`OFqresb7~vKb z71d&07;3fuoHD-S7}kpw7Z=yKT&^xPx|p;|(l4t5BUqcw_C0{_3uWUGTBb?_5CKF0 z5ujgWW@fgC5wKA>!9mVa2f4Yq4Ppe`=YL>iWF+2XGW|*pQ$E?CuCA^?xR*8vxK+ps z`pe`nWr4AZNY3j6Gn-`_#WrSDaz0egH6IiE0W!XCp4l+_PO%|7qL0{391GnD@=;P! zQXOcim2dObr89ent`OUto1hwu7wyQ-4qVCbC^;uA&R-SiuR|{NZC7t5N2&G~S&=;d z;j$9@-uwQrfykH}Vtifw)$}KEBqSsxBqSsxBqSsxBqSvBEdK%j+k|KG;WoVh0000< KMNUMnLSTZ}C8~D- literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/campsite.png b/public/Cesium/Assets/Textures/maki/campsite.png new file mode 100644 index 0000000000000000000000000000000000000000..36e0a92deb342424d23a58fe325c74c07b11deb4 GIT binary patch literal 2411 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 A7XSbN literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/cemetery.png b/public/Cesium/Assets/Textures/maki/cemetery.png new file mode 100644 index 0000000000000000000000000000000000000000..df244fda024b8220e1b9e4dc496c24dedb952efa GIT binary patch literal 967 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/chemist.png b/public/Cesium/Assets/Textures/maki/chemist.png new file mode 100644 index 0000000000000000000000000000000000000000..eb1ea3574940e0d0fb4332518e3393016880bcfe GIT binary patch literal 1603 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/circle-stroked.png b/public/Cesium/Assets/Textures/maki/circle-stroked.png new file mode 100644 index 0000000000000000000000000000000000000000..88689e47fcd3e61645900d6b2f763264df148c45 GIT binary patch literal 2126 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 N002ovPDHLkV1g;=myiGe literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/city.png b/public/Cesium/Assets/Textures/maki/city.png new file mode 100644 index 0000000000000000000000000000000000000000..37d8fad8850f8e449ca94b0848c5d46d3ea7d99a GIT binary patch literal 788 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1qt-3`{FMT^vIyZoR#0*e&HKa-h(3f{PQ!&K8mI zmSzW!T_WN;PMKuKl-P1abQH)x$hox4E4_5<()$N)ou6<_Yihz&Jy(HslSJ~;{8=}@ zd3F14VS4%d{U4;xOCJATTz3DAXt0**jT>^}PFbcxm8OOlQpDfPC@_kIW)%kb@w zp7!(=56~w-(4)Tl75`U(x^ymu6dV3zF=76uU%?+eE^HGrns(f3)tvM|?;|3N-;TOJ z{Qg_v&3eHL-?nbZ)z14g|M<#_#!LkTN7wv|>%aBf@AhYj?CD-tqWdNnGpN52TNGC> zxOqSK)DuN#ww=}3|8F`gV?p1B+Mvsp(+n6+->)#6U8=hJ+QEc^#nKMnyDVSSUi!Br zclzn4OH16k*lxW3TKB?l&B`Lv7qy;gaX0$azNsleoQohOSzmnroqUqPeep%}yT9#r zeeVfkx*er0s1yG#}1VRO%%mCKZ6E5`U8Qg;0K(kFk#PH4?(Vz)N;R71 z{YzAQdA?hPVe-i*Q9_pty?A{-5c9Juv+M z0UzUyf8xg6fiJ^TFXPK)-mo`e7KnB!@b{p Z{~2!INpjQb4|osK^j!HCg}w literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/clothing-store.png b/public/Cesium/Assets/Textures/maki/clothing-store.png new file mode 100644 index 0000000000000000000000000000000000000000..ff5f8a2b18022fa2455b1c539a72a7e3599687e3 GIT binary patch literal 2037 zcmbW2`9IT-1IOQ+jg977QG^v*nj=lt{~OLIiA=1!Sf z7M8^3C~}{DB-gM|R=z&JeSZGF9*^hi`FQ;WuT&drON6MLC;$KmJkG*y&!m5V3Gekx zLD<#N7UT#&>FDeG^#Ay%W#sXB*WTHl4OZ-5e2nLgVTT-)G) zqU<7g(APa0^(iUpT^*$};$sYpr}64)W&KmNy~uOwOXF1HRQ^(|KTE z;P%480@YweBqb|rw~4`E-16`^YRa+)4YhQ*kl#9ukkpEEdI$1ybD2lTRCmO*iJRL5 zp3{uE@@>|VlkQa$!vEGcAHD@?Z*LbkySfSnc|6{LH7@0jw-f(Uc7ugx{UHT~7m9}A zwc5J6n~9x(xD$O)>+Fydt=`=A6hvC+?ZVQZzP`Tvt(Ec7&!eLhWpl9P;_8`9hy61M zaq)^#|E4YCu>mEH9A}^Td6vzQW`|nQH-oqz!wueCe0gMc$r`o0yIYZm1WS`9>LW{{ z{?JQ%b2DgKSSU zg=dd&w+|dRP?I=wLT*QiKp;#^5&u%OlS^vtc8L5_Y5#N`8*2&I(a|xM%9bqai0=6O zcvUMjDD!yRt(R}P78b;m+QWYWLVa&n|>pX{IOYX%1t zKlBzXEiGj=`k-bZyT-R?EJ{#;4fiT^1-@Btlc%&N>Ub(Sb-R`tp;kEDwm5hn2rh4A z1`e2e1Rv~3mqmWq{zCHVmQ zyztm(Wo2bRv=p)QZ+pG6zO%#q{dPyYluQlWE^;SPU2ZEQFBW$qbeX5G1%2>)5eq+c z1*YYG@cy(34Mr@tj?>lEb$~^`L#E-2jpC52W-&1_!-RGHAq*<`rjJj!8&AbQ#DMaY zEg?guJ;^7Rl@!fqqY%m{_m-eH@);7-$klcZ$C@(i{|AA1UT}Y*tE~k^zREflmTP@lu zd`u59Z0zxhiaQd5VM5Y7blP3I?(-&d!o{ZPt1FXlcdx0ij7)?bYcmi3jJuU0?W+z7so$&n?aVQJIMo;BUm99lB$~4YIkzMtFT2JKJI5};L=N7+;_B63^xGpXC zA2|FZ#axJ{$DFadU~u@hp6-|BO&Qfo;BM7o(L&M}5X0~5XW`Rw`MG>Rzkje=e;?)?U6GYrVK!Ly&#yzFZLY`Y}AdO02(*`Cml|C@69K zOoe_)#h^-So{h8fNc&u7b?5Ws?}Y&HS5HHff}OoR7Z%C1JvG~)f2|EXnOf_ z^s8tE-x>f2suBtY{Pnu)?;juV=M7A3=hAWRemBp=BmhwP?o}S2ol)+G=iLSy21b7n zekF+(O(F~xh7wz4&@O>(^D*-(8Z)Bt<8yo?vA)x7A}t?>`iGDQWA4WTzq;;`3boQJ zv;;6!>f}=f;Ao{Y^#WL8Lm0lJ-mt00&)lh=85-o<0#*SBNXJ7^p#NL(Y>0X;(_O(0 z{D4Z`P0%yvRlmFDt{j29rBpUUp*s&y*M9Cye82cxga?Q5j{&!|a n`7&TH1_(RJwlw`$9%6REODgbgc`LT!-cG literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/college.png b/public/Cesium/Assets/Textures/maki/college.png new file mode 100644 index 0000000000000000000000000000000000000000..102638704ac3a302655240bc8b51071492960438 GIT binary patch literal 2502 zcmV;%2|4zOP)Px#32;bRa{vGi!vFvd!vV){sAK>D30p}-K~#9!?Oh8{ zRAm&#@R3=Tr8y>LS~{7NrDd9BfSeM@I-tA)p|~ z%#3l+&@3{F95KtWEGLV!ED$=MU6|!^@BRN}ciFqU|Cu=h!!UPuzw*OR% zm@r|&gb5QSOqeiX!h{JECQQqknwoBJY-}7x{sQ>~@)6{H1TvNf{#F9|F>+7xDGEM@ z{->8f%KX50A%BDbc2@!3(7ot?pTsN?$e9j&X9DygayJg(<&If0oV>e0(slpb7=gg78A{LVDv;#>p1|ryKVQ@W_44J*ev1|@%J%T^_|4VT_1}ny zh?2_6%Gr!SOeTLAvq~VXJmPy3K+kG{cw;N?!U;!1LI@^;J;#xuv0 z--qBkaxOm-S&JG-_4V~rb8>Q${r&yFB5)g7;2XM^m)FnBmoHyeS6Ao52*fz@dmSba z9J%~WFD@>Q4G9T3Mqu7B26(won>Ov-x^?T)5KKlOz#;CkXW+Z?@C&a?l&x$* zF5iK`w{mcZdGqGIfBg9IFb)neSoa*l)LhZzdqI5 z+xx6ufLGuUzb7Up?!fHi;1K<-p1N8(m$#PdoGBVQAxxBT!5gcOQzI|LAf-t+S z!*coa=g$YupFcm3a`~%v2z(nd7aAIR4QmmTGTaiQjLmc7* zvvUZZT>kp?>(eNgU#+KH-pU*zzqYnE$RrLS)#b;qa``oD)};CP_?&Ze;1xK;AK(xd zFJAO#%!mnXI0XISeyz;L7IS%Pa)@QimaXUD5W{Z@=6RDu*a5D~px~0RebM z{>SX>?ALvLeQN}8=5cp-_qwE{r0rL(T=A8w_z-|0YGvcM$fi!6`lA4`{r!fBh=}4- zr%ugM*#n-tS>MrOx`^76B}+DWdV2mUK;>U@LPA0+l$IQshP8J~S((Lpu{SJSxNs-( zT>-GV`}z6RY}>Xig;BTzJMO1ca2rVOsuhT;s;Zf>v9a$G1N>V6-YWn9B`qy&4VG@L zQO|7lON!(nQj}B!ff~r1IdeY5I_Jp1qX3zZkg$t`0i$Es)7YlVFjnoqq@*Nf=FFMp zw%T+tVS}xw0a(T%3dSj(zU}Usp{`B-gjU-TzGu&#g@J*ApF7B?uPZ7liemupYE}`j zRI(Vw>i>fEVI#8V0H6xYp(W~Kk+vi~{2ubLEa{0oa|o3HU|^0kODBvo5Piv?X9WTr z0vUp>*81b(;`TyU$`OFUR*@gl3%f`<8BO_NVq#*Bt#Ake{;!yrm;&^;@&1E?f=;jk zfM$!e1-MKOar*S>8G7arXfsAdMHS22jJgj%J2^xdKCoVZpF4MM>CvM{Us8I%HWL7Y z{h=EVhd`|)G&J;6YjFtV^5Nm(2U!XSn+t$UGs-;Eo0pgO3Vq0v9oTh)JpJ&20|%mb z-k;3|K+?r<9jrFs5Z_ub5Dl|t%_@gv(wIZvHW>g(TQuI-6Yl7tu2``mlQ_f=<}44- zm@(rRhpNr40^lq^54L;v?nGV?z#*0{UAmDt#3d7tB%Qz#$Mc#q0cdq{ao4V0Nj#$!90EDJj6*bH z^WMC9^Aar`PP5~J58N-Ir2KHi0JH=G?@#1WAFk8qbY2!_A4#fWb z`{Pm6GX?l&r_}f}g#c8_0`QZ<02raG+g7AzO{+tFnVFd@%vsyPp>J~^gM~0z4z5(O zZ6!s~SPsYO=C&1i%My}zJ zWMr&VSO(AFbg0$|7(E1_kCJ}K9BZ|?Rm`}WKn={Anwk)$5(sYN0{d1ujx<5HC25F! z^#VRr-#j;IMMXswYCPj|R#sMK8|}YN_JRINA1Em)DaXn)p#gnq2nBe!1*)>RJ3{Sw z$ne^ne$i25W|UehQj#-voHVdv)NCNOS68Ld=3rOd0=rUGElq*v{ZL1&54Xlc0$ zG3u{5YD`Z_PHc0IInDshzlbUR~>T{@9-X6SlWGQCb%0D0DOmmlb%f~RrHgT z)?PfFFkFd)lurZrGln%H4WB4ooZ)Q5?Crsl=gTDOJ)LaDF#V-NAfBubhbwYYQ&ZOh zY=fFmEtV`6@Y2oc1C0S*ArLqxF-&@vS{cGNzt2Y6BZg>vxK=_gv@ch!T9v^AJnm&M z1$dREw1;%B5}rLsx{cl0$<|HM6uHQ+QE1Obh^yAbmo}I-EAGaI#owfne^5kW()C>{83lk!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1qt-49xYOE{-7;x8C0M_n2HLbNplE1kTd+-U_8J z1fD9sJ-;%i`dO9PaWg@0GlMr5l7yGJHd?zlaVp9k>b`Mnp?!k-($jjPWn6D2t=TVd zMN#a~f~b(yYwrtNpD{gpzyG-9_V3K{aw6Yq>d$}Q`uyYb{NgB`u4udY_a~ixI?MHz z%PrR}Rb3YKt8d7Q{@$Ck|8CGqUy(a1T<^p-c3Yg>|6-B8?y<>5YiI9|6v^|Sl_;gD1&a7EJ>>78<{%P;nvE#+uS+jPT7#S5Uo@ZodSC^WY`0$I7Ks&2T z^USmPI_2l*&zR9+HTRr<*lN@G{);AWt5t+L(>F(k&(uzApUH6c>8$+CH#dE~_2&^w z^Fj8f>zIrgr``E|`Q?`7^XC6d{Zw65Wfj9zaLK3P+oR^=k3Vvo)Mh#@yzuwZ>H|Iu zYkwSAym;~Tj9-_&eEq7b#a0lTV8}^(=qAtA zlIp!TWvytZOWt*z0~an_(4A`fZQZ(c;#>^&lTSX;ycuO|Z2X*&fuUg*i-d&4j${*8 zGrRfvE14#EsGK`>t?Ou#_)JzqZYE%K!aze5(~o4GNhjTG^p*$tFP-*k_E|F)2Mv*3 z=JxjQr}zHw{jt>PbN$(K=jKgbYiem(IdiMRwI-0}&y0WS{!jMWr(|Yhb4EMK#~ElX z94y$!SQ7jH&DW~LEbNq3ocJ%7an?Kun3+lLn6<(2Pxc#2d-v}7Ui&MPd)K|zoO-^{*v`j)TUdSl zf9GjR5nW)lD=Zl%VXHv5`A3ebv>5!7J&{a=V+UPeZhxYOh&>999Se4jf}V@%;0(N#Fh14nO>G*DEzI z@7)=$vt?6$*Qre|k z)V{Y1W-`n^!Wg~!CCkwneVw(7ZKBvc46gR8gIwn6>gTe~DWM4fpr)u0 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/cricket.png b/public/Cesium/Assets/Textures/maki/cricket.png new file mode 100644 index 0000000000000000000000000000000000000000..6642a3af2a8342896188779f3b75939d26565cc0 GIT binary patch literal 1677 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/disability.png b/public/Cesium/Assets/Textures/maki/disability.png new file mode 100644 index 0000000000000000000000000000000000000000..1cc355097788c5fe5252fe1958f04d492b68c279 GIT binary patch literal 3437 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/embassy.png b/public/Cesium/Assets/Textures/maki/embassy.png new file mode 100644 index 0000000000000000000000000000000000000000..46b7e1e1cd9a0e7a5a4eb7b18fd6b68ccaf59ad2 GIT binary patch literal 1680 zcmb7?YgEz)7{>pYre$v45(Uc4dF^PKnP91FX~Gs>7)F6b<}EKI>QXXwG%v$~Fg3F@ zZ`jmK$y*H5jCrZN;2EYS^Va?r;VnQ^YAUnu`?B|(=Y7s|-uKIM&M({F*GF$VY&!q| zdKk19Zqv_yk;;j$w}hKm%KMEm&(aLlSU4-vRYPgmg1(qoU6w0KiwB zUj%s(TOA4jTdgo&$M7`q!u{xzh(O~PcSd~nMNv3)6l`tXZ`Lj~BSh~ylgzMd@2qsL ze@lP7)qnEqPD@1=z4iLGz=~f~^HAmxD0GER8YSUs6c?nwX1TxuXf;Q*Gmh`DuzO=LyXJlkF=;-L^@jzcQHh81tCYiQ>jJ@l`&z=<|5W}-~ zD#3CeJ!;d3!;b_Xyz8i~t*zb#gC*NpTZg;Z*hnt;`3>GUn3|Duvo*n`no&AM)>a+{ zzjiBhDmvusY(x$UTHAeh-N)ZQXCQk6i$<&JIULaHuE$_*;?qu=mHdXXkYMI{H~us{5@4wRYu!&b*HM#Ix0mf zYy~BXUta$9c1uf(j!#HH&}wddV$#~tII&oKZUjL;5Mr!-&fi}qIK|=(CF5|S=?@<+ z=H@k&&X_)!)QbY4euylt84xhd?$h#caalf@mbUS$v8wdap|m_2yop$MS$Ha4HV~I{ zq2qeneJrMg`|x3M-bXXc*%IQ}v#gmN zcVEAL4G|VY09VNL)#9UlcM1wF>ZTJc6}dU0_vh`Z(6Yic}+^v`F7BEDIJ6K2FiIa#7mpNbZUdI-;sQbbp*$bl}C z$;fkabL1b9pn3CHjBCQ-qwcHQQG9{$)RyJ-hc^4Q^W>gOroz7^KiN)byzK4$d{Pi2 zneR#cN@0lPyz{l#8Q91!FE4LasZ<{)B2z*`XV`6{o9uhN>QZ+-$@i1#)0>VC?Y!Ah zL||~9y{Q(7L`fein_IoX2sj*0GQM;>;z?a%W)Vb_s$~oXk+U%_%GK3~?(S|@jf;o9 z{jB!0KZGyNY3*Bq5WrDgdMAn5J$0rY#@#x}lfpqLU!^+E<@5O%!KsjuE}FZBepvKw zsNu(N^gv3+YFx4>6UOSf%__WDLqvhB~Zs^21j3e(u>RB;t^)f%YS*+4+< zwLfDJTsgF3uuSqE3wZ5Gj01ZxATEd-Igq_~w10sNk;Mvfbb@^YFo00n55 zxBM@F{_9y52{c}Y{r;Y0_4bObfcalJvxMh%S1lb(`k=yo zNh2gZJzZ*eg||V)yVE;YfS#V767V|VX4>24%F3Cu*}Z!u?FYTl+9Z9oNo)@Of#E;m z9oBhLu0o;UJ;*JuVTVwMF6;OphQmM1&f3>hSJQ4pACmP_a|~fGF~ijOXwsjNP@{6} zy`8PHhQP-|nK4TL;*@b+fuA=eE1}hn_BQ=5gV6<)ojm@%QVobGO5QH&Z10MBa_8yN U_qHjIzLdmx`+C)Xcm9`u0ez_m1^@s6 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/emergency-telephone.png b/public/Cesium/Assets/Textures/maki/emergency-telephone.png new file mode 100644 index 0000000000000000000000000000000000000000..fac62396845e81e45b98752d76b3cd6cc35f1910 GIT binary patch literal 1533 zcmVPx#32;bRa{vGi!vFvd!vV){sAK>D1(HcbK~#9!?OaVr zRY4Sf_CuObN=XDoY5vfUErbXmiolya-m`jXkz&>>7ZSM9+_@;Ql_4m!EdrrcySJ%L zhzk=D7s*?_jU<&I2!bFzdapa=gWL7qnYs7QnYlk_;4CWh&V1jQ?|d`&&ctF8Td`Oy z)8llZP&g99Ca>v$SL%^8hfYQtq5}{9Nh|OT(T*s=fnUo2zZ8{{B(O?<)@9B1NbNGI+)Al9uV-M2_RNi0r;RZ*>mO_!G|P32Y)XMpqZJOr@g(sv&R1LL^7HD zF+M*2%9kXtG~YZJh)xq7rhzgwHTBXd=yuW3(Xq-PA>j+RV+B400j$hVBoeG4X>Dz-ld~{afVv&8 z1o*w+T7kc{wRPKxJCdULZU_h>_(XQ>ezv>2dyb0$k#5H=0UWaP$B&xtIq{$~pSL4H zb2~iXlbD~Me`Gsu2)E;gfS|b@E6ulyp`oGomg6SX7^>j%5)eeU<1{hH#>QUT5g-kG z2aA=!xgFOtUxw_sCBP>Ix8O$exd_mwe!0~@bar-Tp(0@57e#Y%lw_} zuQo5jTEi?mcHmo(P!N&%3kwTotc2 zRG`~&Av=s&UBeG&v$)F(Uy$YXJg2Phmy^fWhY=p&1E~bo`%sze0p|Li13X&$G=PH3D{h3Ebb` zpHX?`i*G&!mqb8|d9ayG<{5Sjz^?fUbF=#vl-z>=>2{pFu#du)MBHlNBO@bkWnFMbIsSh(vKw7ivfvv?Xy6?;5(dE+?T*O%1V+ZA>_ECB&Oo;#W1WC*2bP2u7k8{xA#wuS j&RuJ94)9wLt$*z=x$v=T>eQds00000NkvXXu0mjfj>pns literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/entrance.png b/public/Cesium/Assets/Textures/maki/entrance.png new file mode 100644 index 0000000000000000000000000000000000000000..b0ba8c5d6ad858d5b79edfe30fb0cefd28ddaf26 GIT binary patch literal 1307 zcmV+$1?2jPP)Px#32;bRa{vGi!vFvd!vV){sAK>D1h7d&K~#9!?VU|% z6G0Tm8;gQk{J{D_@gNo~l!8)4t-Xlmqsb;QBw%XP5IwXWEJ=F`p-3+U!IOu81PY=E z=`p7sya=UKDX~y0*h{b=ViYVCE0t*CjBFsJyPa*aGqbz%0{_d>oteJh&dlz-_hwpJ zIQ%M=iVdl~TrPK5SjSt8^g{+eh#KV;Rp|e}%FXzw0UnW!UkBn8YvY6Ax2hkE&tILi zjX$7Pd8t(LEiW%e^7;H-t7>s^@lLT=3~dL2%Y^H8yVvY?dqpJShfT#E4q8vYTd6|S zn6hZbuL}1HX1zeEqF^xiQB>ns#RLEvep*$Y{)*@-6bfPL08pWO0f4d|qaTYNunzzz zYkYh>4FCWD00000KwaoV?T6Wf+Wp5e0L-|q69@zf0000000000xB<9c6{_D}6<%$u zk+ViFSpzk4*T^GFsu2LtpbHF~OxFMaSqA_B=Q#ki;~W6sKM6|!zyNPSs7<>7fX)C` zR#tA+-1m2LbJI_Na0meC2teuH>FMb>;l4`%fFb~_a5(&)aIXgdPy~SGa5zdD=7m-O zKnXxqqPn6&9|D@OVf>{8ZF%p2Pa7=2m z^MWY=$PMi`8UVH6s5%|B1ORzHXfqlBtYk8oA(VgFPyo;$_8KkArP&AtNs_)c^1Z+e zfc!Qi8Py9#GhlYRbtEPLaE71J-GF+=>&(r~-6KF~X9fUWyl4hLtlmLW@p$}|mU)3H z0Cb_-ERJv*k!v20=R2WZH#GpHH`iGQjgj10YG#H$wR?E5wF&8nFkAjErOnW%pPi zI{KIqhai%py?(rh`~V#RG&0@;0386}9jzK2?;%I5NdQAbL!_{hZb;Ij1VGJ!UZeex zB}oYY_UI8NTN~sFQvl#{xqfO{&w)g39RRGauLo-Hi^XEE3HNltUJ(=`ljrB>W2EfI zM#p;qpo3t)AbtScuwxcK0Mt$>0sw?92e2Q5=ISm0P+3ku>SH7i0Dzry0RR91006*} z0K(yL-fVI@oxk7=88|}*00000006iHfU_jkH8C;qlv`8;08l>InHd0w!|@w(%{U(D zjJ;MO8$XlDq*wyzQK}3daxbFs)9LghRvtS|(Q$Yz#6eS$NaU?m6^%yU}(V-?w$2mWp^LU&eUhn7Q^$)z>-+t*%L8u;51poly zOeK5nNdGfX$j+5=;_y4{3MSD=0MJmNrU+Et>7W=-iaqdf0QGjKz@n(c82d2V(}u6Ws@6SF|;tyOh$2n7>nT;BsW7407bf%mHQmStDeaP|E7@VaSY>;TVz{>VYHikJ zkS=9|R?ZtyX7W8=s&v+1eaYYcA)oKt+}s>(WN0`e?(Yxp@99~LC2+Z$o15ro${Y@d z6&MtxLu$|bo!*YSS1+?mEjJS;eAD#k(Ywp1Pyehdm}t>LA_XfM(=%voc{d zn1aL9(6^uu`-~<hI>^fj)Qs{NpQbc&D)65yI=5Ux$P&%**BS+1J^! zOVQEqPQFOsTy4mjcFRso{S^EnLS@yjLi!^t$nkKECi&)KUs0jveI9T5DZP`@)z!6q z9FLc)T4M?q%OI$rU~99vZC)mb%E4_!ebtuYxg7wufy_2GHYRCAxEg@n^hWq~b#;S7 z^gh|=$O|=P@$vEH`ns*9I2>+MYJ-`j+~Pf_u@?g8Iz%CJp|`YfujA3hSP?(fbjlWw z$~P@KQPI+(@QY>gei=t%$>9D&$Y)ZhabX`p(pG(o&0Z}WhRkLEU)-(5lQ*eieFOun z{k?j3l_kB^Ad3=a6@p5meY(?sltWr#ySFA7FeY|yo-5Ij#*L4S@mzL`A|_YfJ3GQP zw6mQ2JA;FR|D&aH|G|R?|IJ`Bnf#!#y?R<#m`fDb)&Rv!d%JzKK3t@AdI$pTW%8-m zE}Qcv-YO=9A`>B6jr&X>5b&wb{iJc`pt5+PVnCrta?yuVU0iM>dH~kT*qM@3c6Qs9 zqhVZcUskaX#8{25OP}bN1h8(0d-aB9XUp?);NN#1Fl8kqCiFH^!HnOUNqcO6W#_$gF@HvPf!#p0D=I7;IBs%in(voh##_MxYNOuOey$fJ1;J1c{ zhdn(R4Cx*J&NyVR{xLJOx*C|Jwl8;Y`!xnxCe7J@O2_9?KI}R(9Izb8XgTOXBDGOo zYPXgO15Fy7@U^bss5eKpS?S5b>gr!<)DSNnY!hmCxA5l>g>72g$%bVV(geyJEdbd^ ztypf+DU@!S@C(ZlV8iuAo#bXE}brg^q7CrB{yFbr!K@d{^Z zdelW(a=WxNC$Ra6vBi;?TLO!VV-f%>y2L>L)Yqpt1717n>gqcC;pn0jfp9yt!6$`X zXg4PAetUcaq2a!Z#f3QRvDEmSaPi{&RJ8q|g@wi7x$nnh^RK-;J>R99z(rM7tIqG$ z^YZfMhq@zb!_%Gx*!7CVV#`ADdQL8M(aFJ~HCg#Mg(2y@85kyF>Py<<6ep*!X*c_;7Z8OK=Rs{8y#K+nxR3q>&+6RdcHs}KI zcRn5m21j1q4-T-@f~VdDVJlBr2c_Sk>4JX(%+uhQe@6~k-`KEPlM-;>d>}4gNb7hh zcZq1WwY8nNvy^4~Tec{`$I!1lH#e7*no_x5ksnEf!8Ch@ME_aL3*U>-nmtfk=6s*^f5_G(DW&h}wzUPx#32;bRa{vGi!vFvd!vV){sAK>D2Y5+DK~#9!?OhE_ zTtyJZpSCJh+s0yB|5DppYn!$jLz`CH+H!aN{~g>32bJIBOpjs?>}7s@HqMIQS$eG@^=Zrg1IE{o8Y0y!#yHAEC?ZRhQm+j5E}`+pwrAo z!7n9^-z4<5z*!Dof+u0r&S+&o;|LxUhIYUl5IhSiFjoY(%_PC!Od7UYZg0PI=~Be$ z)29>b>+265KYl!;yu3WStgP%MB>=pus;V;U>grx-Zf;KL>FIfPWMm{rrkUDAuxMI^ zPa1G95&Rx0jlO*Oa(F{SgE=QBrz9aE;lqfCh%P@rzbh)0YQ)FK=Q_cdn=uOaR;$%R zp`oD{_V3^SNqTyERb^$RwYRrdFHsR1f;G?y-QDYNB{$yU$kg=r_iGCZ3W~_XwGv_f zH4Q?R1)`L{bvoVGR;#t_%$YOKNl?U2B9q1L>h*UCZk*i))z;Qp;^X5#g5EV-ggynX z>-GAt3JVKg85|r8bzqhrP+It2!mwjD0_-dFoM|#CiX$i}=;yq=yf=o1hC=Mf04&0K zaKDu>J1Yotf7XrL+uP#}216UzRUQut<|;KcwGQBl=>i*1Mq;zYVtI$y`E$G!0dq!0 zMMc&WqhTXgB@l+og&{WKM&LmlJ$m#tjYc!b>*0vdh8r6jpC7*me1`Aj@XF54E)~y5 zAt50@avTxYOeWJw@ZwlX0C$yF&%c9ZcEBDcCMGuW>hJ| z=NeK{Qcf{O!EQP69W@|GtJVMTnsZ=rN-1EU;tifADA&xUckjg7m(tGJ5P)dIc)iHHJKan9t$Ehu`AytT8b$Z43ph zlA?gc^o6eY;$pSyCCZ&>(+hll^b<5@Kt%~i$-ST8l? zJmEsUUjHS}WCuKSWMt&GF0Ls?fd}vcp02bhI5@ZuIvK2Hd1l-g3fLr90cX*@bRMVx zQ~)Xf6@Usr1)u^@0jK~}z${Y0a{5BE+58?^^n8PG4zd)$iUlFKVV#sb@HP~bV%Tdp zGe&;6-O-*;1Q+;EO419vop+&d+*bxgWPZ1}_dmw^$Cj2Bqs3yWPD)Dp0CvG4oC9R- zU=OLCB9L7->I$IThPCfAGc&V7rBeNi?xgEsX-F2a_6yy}kU@D7{ll?i$6iIj@dXsA zFh;^Q51|5Z!u}tBfB!#GX#7V)O-)TYJr{TgHL(+_TTocaAT2GembNw?wD$v5E+{Nz zU^biIWhua0{6$}1pAHhrC@}sgEiKKV*94$|wX{|;GBPSrV0;0wA=oBQ$$AGUz?0sH z1^-BV|M%x=v7NgCTU|OkI}Hps^r7*U@K)AB40esh#l^Mgbh-|VZaNQx!O)(YoBJlc ziEKPB1Q7^v5N;oa2;2rJXZ51vK})8p0Y-4eYI_k;I813b3P>?%99B+3lnw=@45V(( zos^P1bm-9A7~OOptO|Ne%HysGQ~)Xf6@Utu$_u)OzEE!Y&wK_HjW86jLCOg5q%Sm? zOg0p%(^WS=NnU_4c1TRf5knXih3XuPM&n6_0=%RaYVV-alspQn=Mk>K(U^>_C<~=3 z02B2tCg2&p-`knPIu_Dq2yz5C8B3}U{;i{<%NoU8MZ*6T&va=U-sVk?TGfztd&j=2>fC*B8f}*0L0-Md2>frG2&0Nk86_ntM zF@2}N_wZKX^&Wdru#R8&0Pj&y@?8OIXUVHbrlas;t6N^~Ab3b%mYxtiCI5LUbQPQn z3aLh@Fv8a~At50lAt50lAt50lAt50lAtB9R`X3|ypq&mbx90!=002ovPDHLkV1ksY BqFDd{ literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/ferry.png b/public/Cesium/Assets/Textures/maki/ferry.png new file mode 100644 index 0000000000000000000000000000000000000000..58c2f27a8567c693ec875537330915b00cafa33b GIT binary patch literal 2879 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/garden.png b/public/Cesium/Assets/Textures/maki/garden.png new file mode 100644 index 0000000000000000000000000000000000000000..265edb8d6751d7cc9a4d15f4b81af52ab10e9163 GIT binary patch literal 2057 zcmV+k2=@1hP)Px#32;bRa{vGi!vFvd!vV){sAK>D2cAhpK~#9!?Ol6J z97P!47VE3NpS8yNjIr@Wv6k9mQz^$C$D89gI1V^SN-#b`fW%fHsSQ3Lxf)4>z#nL0 z|7g<03V)PDG-*V{hz3QXL5QghYKRXaDUm`8&NO%C#GToh-I?8;WxnJK$+7#*%D-QupU}YEBS_d={XbP~u9sFI-(l)S}1oSDOw<{tFsJI(w z7D9I!04EV+7wT>Ub$%RU*DVtGStP2%ZYD?DT{Q7p_{pjOe!%E}MpfhsO8{zBvF z+8DL<2g@$q21&6xK0_t#+T?u>%J0at!aP0jo9Hhn(dcR~{YVLDdv-xV^#}xJqjNK$$xq(37OBI{TLKA=j3KFAd{KbJE)4931JX*Vjg@xau>^YJE zs9vx4ch=zJKtpMMe*OflEk_UlH6tVAFGBDy&=7zcI#z2=PR)Mmf*)t__KQMTXO{1O(g-607-x(KoTGc zkOW8q=m~JSTnmx_3kfJKEgcdW{M_8!GeQ&4)z#G~G64+@4Lu?e;C9+PKy%P<2LkRe zy7Oo!h4UAJfX9UL3xY?4A`*Z)U$(nrR=QfHL!r>8B7qOjA%q%!NW9G)F!n>=rOOq& z3(A{qX=y221n@Cl6&Z>sf_j4NP6E!QMG;9rg>TjHMmTFH;5{DCISseT`xMbcE12Tc zsZ-C|0sNkxo|iP-S9U3)3aq@AZ%#)?N3#{czX626cPLd6T?oR8F6qq7j4vDxf5a2? zl9G~P=-f-_HMdJ~ih#!4M(eLRFfdTv+}wQB@ArQL-b&BYI%WBMzV8nnJlNIO*Y})` zc!e#B(lrr!fVSc03mpW&=$M-&y7WC`yAc8anR_LQk^o776iI+2K#C+l5+FqqAPJBn z2_W7QfQj+$0S)mG?yqD-vz%P(L;`@VtD}iT+@!gRfIdK-tPq#2gf>|c&^tvY0A@|3 z09@;wA(5oOOh(}U?|4to?xPh1M4ii?OuCW=s3XM|_O_wy2fas8$W&#G8sK#cQ zrLduPA^=>w$ISMtRp2_*#S04yIfoA)e$(&wf9-O)7FBXF{BY>dp|^&Ihr>E5bFY;I zpj_&4IyN>IYH4YS6c!eatJLEH{Jp8EsRL&Bq9I@_LxOplgef_6Gui5kmy9aw~_vm#{$u zB<$r$0LkiRettgJ>-GM|)6E@4zz(&G>+9>^VHkDz6U`*Wk^qtyO7O&f#j360aCiVw z&OY3vWJ+*FcX#*81ic}F1py@E{mGLjUob1kLu)y+Q(e&E1?ZZimIZ*PBvR~z86n@NZhxZx@*q8+QN zt9yA80Nvd!imu$GXDimFW^8b9u!?6RDk>^I=0O0Q77< z2P_HT{p2$ndQ=Fw+p56p#>U3CSrE|K+1X@OU^mc*SsV*`P_OK~8-`jPkrFUEIvV0# z$LZ;5Kh?fJ%b{p!XsD8R1J&LWNC+?^C>%z3niALz4Bmt)C=?2vHoJ?H5CFHuElTJC z^)4PRBD+xq>P-tws(E>NKhh8Y773qm&Lwo-=xLu`61=E_X+ueMboV9_0(idVM)jhl zU)y8+r3+m{5sm=P;4fSLkvCA#6&fU57>Gri`n$5jSKs`CN@wfuzy zSOvaO2QFIyd{LXvKho8ZgZ3A(^f)KY0j{%A|V-9$*QWV zei6YhDk>TkCY259C^M!fPMmmAB=94V$g3LQ?@{a~Bwp1V$7xnCSc?Sb5y^^Og(LyT zkt0W1>QkH&Y)2e<)7#toJnJuSz{wSU%Yf2jJ3(=hXf0Jy3NtCv z5(0;pU@$nOGk7FLak7{c3Z*NkP+3btGD(}HnWk(b+n9)b76I>3r2J>aw1H!o?7vSt n(2WvpvYxSn5$I3bwT=G(+JH4uNBw=x00000NkvXXu0mjfmN2@u literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/gift.png b/public/Cesium/Assets/Textures/maki/gift.png new file mode 100644 index 0000000000000000000000000000000000000000..866263e16b72f6bf5abdf6ffede21aeddc5a7c79 GIT binary patch literal 1606 zcmV-M2D$l(P)Px#32;bRa{vGi!vFvd!vV){sAK>D1=~qPK~#9!?VVpp zB~=)}N3FfGq*A505+iBQUy6np8#EPM#e zSHVXK^g&FBz`!6PF$|FvM35reySeMGtM+|xh0EQ0&dixRbIvz&zkv@$XXg9!JLfxR z&U`atSq8R)gM$b6_xGOwc?F~f1#@*fBw+{DTUtez+9v&Wa5{#9V zmF7ZPKI%bzhsU8EtE;O`km~MY3eSP1m45BS9EkBEbkxHemXYX5ASGO$Mx3#tPCl$R74Gq65 z08EktFf=sug-RZ^xo)^+*P^$#w^O2h;P`D-otTpHooi%d_U*~fmd)lcgkY@f;nYZKqZgq*qfWg7Rp+Eqbot=F@ zp9A&v^?$ex%HrbUyD9*1f492O&V1*bo15z-2LLWaUQ$UJ0|Nu!c%6p4Oh0I!$~n=0 z(>>svYOrw085|vUa$%$c0NR1}pk0!4?g;>#A-NVbJw5$_A8RtEWO;e{8rc<5$#U@R zFa*E3x%n4?k8u(Jpc|gjxgx4l;7U3zxieO7QQ2fUwzjtR&maaLrk!6&{EAzYHfRkG z*bR2Qy}e`L*goZ;<5KzP=;&t-?hBV#)HX2eaZQy8Mg@ZZFy+dKr$Qe56G5mAIu_F4 zmsvsDz~~o368K6h$QzcP2QcvQK%^T%z)SEF9m~S8#5`Lv_mE$P-`{Xi#`t<>pg${- zNAdis!3KF1=r5JPmu6a!i8N7>v7y{x znkqFJ{7Tcg+U_bmw1adeH&PfZj}e(EUDP?fJWpu0a+Q!R=Z!DCO-)UG7>mVj>a5Sy zwF--Vp?`%wLRDz+6OtmTw4V!QrU5uvqW1L(8c`vxu62JZ0PO7XZDu5zZYC0me~J+R z`mOa|K|W#yR=tB6nkBeE&xf2juHgm z&pU))TS?e6KeQ0MKu(Z%e^a5Pn~fqxS{*_ljd#Wdwd_rAPqmX|ITI zS{*SqHukAsAP4~1L;sAvGcE(*0-*|o*9h67@6)!B=c5yV4;n~D#H!uIbN~PV07*qoM6N<$ Ef(ec2SpWb4 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/golf.png b/public/Cesium/Assets/Textures/maki/golf.png new file mode 100644 index 0000000000000000000000000000000000000000..2169d91589d4f1e5de6ef5d7fa32ccec863040dd GIT binary patch literal 1999 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/harbor.png b/public/Cesium/Assets/Textures/maki/harbor.png new file mode 100644 index 0000000000000000000000000000000000000000..2814f3cd541ec74cc62887ac81597d334a21dd38 GIT binary patch literal 2048 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/hospital.png b/public/Cesium/Assets/Textures/maki/hospital.png new file mode 100644 index 0000000000000000000000000000000000000000..faf294e870656bbc24bb750a80e42df7d219ed7b GIT binary patch literal 909 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1qt-49rTNE{-7;x8B~}m@S+rbL`{lrs&1q?MkBN zTW7ektSq@;=KFpPr=rJ&7J-grw*PFcK7J?nCw}welVsVRcTjPKLdsgvRv*jz@)Z(~ z@0uExzn@#VpZ)xm3(xB2pDw)cyf!&f(({@cc8m!}EQ<2}|u0zkTE3>e~)_4q|{pP3Mu#5Na zhids(7k_M;$S~FGsf&683ozJlf)BDWZucH+@-%KZbyee>;i|^_7p|W66m*a|sb^B5 zTH#x6n01u#nSQ-$sJID>!XCDj8|Cth8tj{N5ngwhWmk+nE9l(2oJ~`^)M@>{pp{=HDjtjG;A465{r7pv zxDw7)$4$J;W3q ze{U|@`KNKA>#ZJ(*cGCNGJNxmcDzuM7Sv-=SQ)nZz2v=56MH$Fs~y+9e#f?V!NrU{ zsU832ZgvhHvElQM=5{Y^}n^Nv=&W;imb*EQTTZ$~_tDxaKh$T(-W%sZjlZ_0MmEWR-?@ZrgHPGCobOlv9mtp3=+V``_;2*(F>D zHwiurnmadiKX2vLA1kh_pOC8nidZgP$*sn?M*Ys&Is5f?9OAInl>DcB`ik;Nrw{8b troD7;y82_c*l~G*-Lu&K8|Xg&BYZe;o8YC=yNf{X@O1TaS?83{1OSi{ej)$> literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/ice-cream.png b/public/Cesium/Assets/Textures/maki/ice-cream.png new file mode 100644 index 0000000000000000000000000000000000000000..323c964948a2a1fd4cad80d51262d13b60b3b242 GIT binary patch literal 1602 zcmV-I2EF--P)Px#32;bRa{vGi!vFvd!vV){sAK>D1=mSLK~#9!?Okt3 z97h!2R3X&XK$GS}C?rrqghC`FCLte$hM2p0|Ee(;bN1}lsFc{$1O%@IK`5d0OTkuJ zLMs$S2&ErH@N@emfzVQlVkriS(Ao+ng5_Ehuk%_DuHMYt&hE_ao7ow7pyIxH@AsSc zX7|nPtm7bSrBbPm$csBtFH7(C_V$4topp|F{{sCC0i~HpN<_$Yhl%VVKQ|F+6}_Gz z&0tR?fG5r#k_4J6Ib`aHKa3pssz@^h_nEB{=ok8Tsi##Z@ME75HVDo}PZk4GGz7_D8om!ETPOz1Rq#8ag#Kbwf4yW%>Nhoncw2s4QSV zOAjXSkJAiXT3X5l1%6pbpI2)UaAR=rOF^AEhOXnNM}N@Zmqm6I@N{B$(mg>l>{4gv z&tVaePA31TML{bRNf)`$gx1?B&Y~l61z=q@Us8;ZLy;@b>lVQ#=ADCns-->LmVs zh9(U$M*mYR1gJ1c09yBA{wV!}kv! z^hSXI@Dl?8uT<5378Y_*AOQTtK)_3O4hVM+sIvsv+fYluZt3jkc!-FAr#$diS6914 zb+Xos(GUQuQdkHWA0K~@N5DXT|5u_qCnhEemhjxcFA>mb%!3Y1azaMbY@X>z~ zH32*C@R}R}dmQY|PQKw2aKumojySqBngdXuff_t^VbzfwofVIw!&9TwZ(T^~J5B3bB<|^=IGV#?(f0`ANn_b^z)txyzEex zDbT-h_x>CL4q{6~jP!HRF}2Ygez#EgI1KQi-^iq&TFaG~wlEq^0BcM8Yw`G>L4ptc zq1$R6W)$3=nHda{0O&7rqrV~wPKBL@7^DAGR0yE%9eSgu=Ux!tLqFQ?`B9mMR37f? z=1^8AN)0|K5>^^w-2EJIqSk0Y6cj%b6ryUq|W zfc=cuTZ=Nl2R&%ta>ty8W+Z+5VTSP$28;Ut2{@}N4KYUlS&O=h0$n1Jc={uYa_k0|Kt>-*Xb`0#&r^!q0u;WY}hIbsYs0gYb1 z%*y!!YNJI}oCIo_I-k!|*9ze8w(KnTnV^AHN*Ea#`J@tj_?>geQiDa)dla<#JmaU; zqNu1yXUqv#rjlS$lTSjsOYqw*S|Lo#I!?I%09b?*A1i|?9{>OV07*qoM6N<$f_oR< AT>t<8 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/industrial.png b/public/Cesium/Assets/Textures/maki/industrial.png new file mode 100644 index 0000000000000000000000000000000000000000..9b3b525db81c45627bcd6719793834151e035a1d GIT binary patch literal 1092 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1qt-49qt@T^vIyZoQrBogwVV&~{sE>%If*FGAmV zuD;UEK3~*xk>@Ovi_WtaY?>(3n!xAe@3odw%_-A0bwa;N5ABe9Qru^y zM)BLtYp!NF?)_jMDDqTx9c%2XIyE)5eH&O-I5(-V^q!ss zjf(O$3}Mrig=RR;-1R?no45nt3mx4ly}i8+CnofrxO1E@e&MG?77}j6^?d(=NP5i*GTW%{usx+iTyc^#9+I9D= z;SMK@OH(^THAGfP@OrN{JegvoyLn%((t@dpn%S0n7RyXLHsMojTJ7zShOXJ7`(}q7 z{Pd~lMoz%m-j&y1+s*tM>Co_RFaM{u?r#e-On!xhMQ9yOGF04br_HGllf_@}a*VM_ zx5n=N_10F_)}rHi=AUOLZP_Ywz}-ON&x*%oiSRf*vs42%pwSqI`J6&&0f zmj87vEmmYvo4<7FQtO!AOFQ2D=lKyhfAIp<1O{oduWSotHwUe}Qrx1}fAr|lYA2?U zPe1<%x1`UzdiAR3+#dIx+n3FsJ-gb*+S;1;hlU7Oe@of<(D_N~h2aqgo~^ic?P$25 zkH3ZM?LEIum|kfeub4mKiDN|2!OhPD1FTNPAI^7;m+tLX0OouKPgg&ebxsLQ0D`K| Ai2wiq literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/land-use.png b/public/Cesium/Assets/Textures/maki/land-use.png new file mode 100644 index 0000000000000000000000000000000000000000..f86b21bcd08af8c9ba96eda25409fe0357bd6245 GIT binary patch literal 1773 zcmVPx#32;bRa{vGi!vFvd!vV){sAK>D27*aMK~#9!?VVjr z9Yqv?(Q345YOy~?s|hBJ+L&OgR;#Hsid=r~DuML!FW^r|6o|%zAP;CTQi7ByQt|0FB$Y?v0}1+oxh*&+xi`68c4lXH=XZB*a$aEX-E+=2J9FmD z%-NhAPM_V~-NQ&uQp!U)A^RYk9uaCM`thfbyvayP_V)G;=;m~!^Jxz@9%AMAqYNE? zhaiJq(Wu2g=fl1uL2vpDFXv~ACIH0RhQ6F9!udKtK>EET)GqYs+)et??d|RIWHMQ^ zva-@ZBWr7G^_!cUmt2&6UE#jJ(5^4oWVdr?XQzw_0GyMSmX_WrEG*m$A`J}<^MpP# zSJ5XRX4loStWCRZ03k2{Xo*hF86O}2G^q145{t!lbn1$P0YG0kfpZKi=Vzp@uI?J< zUhyac5aRrdtgf!Ujk)Kk$N|7Pzp}FOIxheqgz?}mh7Pcd0MG>mPCwq>-aanU`Dxh=(iNfWE{L4D2L^x(IboJ7!TFicbP;2)<t(nZvIiU-c$h4A79{==V6$tNYO%o?#X`5`uci}482_es1S0}%IN6m=NMft zx;@QBMMWtk0T7&jTQvYKp=mD3CRzFt0Vo!7(#kEju1E_2xOH6!&lGlkX8qtQDKymu zfEN9}7sJwWRCxfnFs-VpYE>5igz>;q9)MF;aCv#TNhjy0L(~6g(*&wL0r`IO9S{o2 zjCTBrHe)~t0F>$izzQP(-R1%DkO4TX6@aWAy_V(x&b!U-l?C8+DNiPVAe#vc00Y1P zFaQhy1Hb?<01N;FzyL4+3;+XwYB%u_kz4y%9d1)e=RiBW5rBIXQv71%0Hlp6RY7Su zrRkyJ+^aAEOW1*AhR#3kL+2;7Z~Zod@@2G^AoU~C$B}>Q8}?N|oSvTkNcHXLtmA#J zvazvI#iaNk`qDXvqe|b02>{Od6%`dXIGtNNZUDH%`;(KCpYS}VKpiNA830tT<$Z3T zv9a;zK!b9~0SGyY3v(sRy$T`=fKc`855c>-k8uN#NF@HWe|KhP=0jQqc>%yxdz_!2 ze_uw49pZQpHUPMIU&P#|zP|n!&*MP|0Z6U-1-11sI$Q`n09?q4X0E@hT4EDEIdE4vKn8sTOC#3c%@IFFex`6B831z8Xqc0XTi9udnY*2{YjHkplpa zzKmpCe}Dgg=f)BQKyh*LzW^ayaOp(b0LHn-n=;*j2F%NVuG7B=e5LA?|XmmrK>nhB=v5VG01<>$Jl?^3dP!S0))J`+NYavNo6};9wAC3;+Yb z05AYl0x&o@*bA>2cayfZwkfBVz|nlyi--U~t4lJOtYHcOMrs{S$TJ4Ov?N22(mGm{ z`f@P%@qqR|rd0U^^drwkrS-FJbl4fLkFMyfCas@Y5huTCi!6E6%l-ZbAf3MZbLKKk P00000NkvXXu0mjfJQXlO literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/laundry.png b/public/Cesium/Assets/Textures/maki/laundry.png new file mode 100644 index 0000000000000000000000000000000000000000..53fd20de4216737841f12430ee9fb6d7d338b0be GIT binary patch literal 2407 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/lighthouse.png b/public/Cesium/Assets/Textures/maki/lighthouse.png new file mode 100644 index 0000000000000000000000000000000000000000..a78e21a5b5a78a08a78d660a0129a7e0eaffbda5 GIT binary patch literal 1944 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/london-underground.png b/public/Cesium/Assets/Textures/maki/london-underground.png new file mode 100644 index 0000000000000000000000000000000000000000..94972f7dd657dc83ea14b64875909009c651aedf GIT binary patch literal 2979 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/marker.png b/public/Cesium/Assets/Textures/maki/marker.png new file mode 100644 index 0000000000000000000000000000000000000000..825eeca6997b7946c5308d0208d9a39fbcf2bb77 GIT binary patch literal 2448 zcmV;B32*j^P)Px#32;bRa{vGi!vFvd!vV){sAK>D2_;EHK~#9!?Oh8@ z)>Rb$i<*zrOr;c4QO$ z(cRrWg2?!;uCB+3%qQ|J5oaQ6iEIENf4`o5t|qdQ$U-7cL?)6yA1T;}O`wk?06tD+ zDfzyUe7X_YVuR?&zh6aUHj%M*Wcy#~lL2%h1{(plCT6;GX4rQI13Wb^>xKbzp1eqY zcOH>Zng*W$;YjWGpa5)dZ}+@;^QQOp>(_m+UAwjozPGitZSCyrbRW$BLw?(pe9k4G z4q99FW2wXJ*S2?bbaHc+fb-hcz-!Yrb zH$6Q)8$&}wE92tg-YqF9No;9p@fn~pT!>83%Br8$pN$95j~zRfuw%!L3Ig`81mt@} zx(6$uq`<(yOIcZ2hXyLWFfIBzQ^X+A`0N?!TX>1wigz~<&=zwq$zPi(dC zLnYqc-rtv%l|@_G4bLc23G^gu#vbbA$&;^;RsXY;z_Vs4EiEnAN*JpwC6LKZ0JP8R2`HJHcR?EsMlL%gV~iRGQQ6Pr|~&KINnYQ@FHNysi(C8h1RSp9qU z?0HXx;NKS?AD;%ORmfr&&~!r|@ayX8f=njUpK4VA?1J3f+;l8gB!&4|sioE5YZrWn zB<=K~R?=w7!ORxQY5A~Q<4rM)+hMrtA1gs4tB%LgV0>)!GAGIC4`jgn$ z*bfjhG*_%rW1k;ROiV1&68Io~etxxx0+xxPfT!3W4i69iSZfM^{1BU}2AZWL4%pk< z`-;{S045hQz6=%yF?N76693=OpaQyq-N7zKF%+VEWUpq z1!QMuXJ}0UK&?ko5sSsx0i#$F)`bff!eL8lNdX5B9?VCwq0_~x2drm#KwGzN{ZUKy zzp}D25-HA)6RRS&Sc~=GUbkwlAm(R-XnaxHQlQTSDk>_Xv{DmDNJw}aQNTj6IYFCQ zGvw*%*`xsl+(XO{*#Aewrlma1PU66U18=Hb0sj8}HOT7UBn2_c!VEPuGz1t7hC6Cj z0Ed{hKoV*q)@TDL8)^lA%a$$ISvCaaM~xGt7#KMh8f&Q48OO)RzatxRF5Lwqv0Lzg zfq@s*20j#>;Bq;lfN4_S5m>}d>coi?acZj(z%5U#v4`Y$#c1yzBO8*EXrWp~tN%7I zzYzt%_gkirgLvga0Y zkt3Oi?O!k3)-|**oGUx&ef#z)j=byV=l3mAa)g|}qaf!&COC&x0Nfu?Qo#oN7N?7r zvmp0DQ`Ii)c=;%{es~TuNC@5jj!o8akuQ5S?i>9U~f5mppvPNSEhYWGG z0`CEDR$QNH8kSmg$W2dA&yj1kG&nf8iqp8yNl@Z|9&1=zVmaoCj7H-vPBT|$L8*f} zohzteU?*fSMF9Z; zmt>G^`=h$LI+SzbRmXb;Xk(`r*oTA%hg;`TMm^ct*{>lh-=w+@>a?M&g(-qtCQ_NA zu&}VtI1Tyc32GelHB=V;<;Vf;a|sv@zi{&WYZToveE?C>8jMdQa)-sc*bPTjL_Gu8 z1!#}af`Woq#mW^$MMa(FL_M;z{P1gJhi zOR(X5Yeso_`O8=nRw82rEe)D0(y?Fw^Vnc8+#ZgQGb1A-o74MqhM>hkTi;lutq&bK z^!iYTrVw&+5^YNbEf0+5KGem0cr6x2E2PXeZNFEN@=Gn=BMFXjC@y?Jd6CoQ&?sr! zVHt*|283xH4UY3c>^{5#QPUykAe7*Q0R@iJR(}v08u}&DYFPTN=Q38pQjR}3X9KC~ zDu+%EoX*j9wE6zP1@i~w05#yYXe5knKXc|x43^~-{W6_G3phsXd@#Vq;JkPrWR4x- zfhl1oc0S0>%}s+unl%ML_{vE!+wJ}!m9PW@GA1VGBWv%4GZ8=cJe?*b%i&3FEPRQB6%v2sBRZeS1AGFE5Rg=W((l`Cz8V5%UM|&iI~g zjo1|;$=+37= literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/minefield.png b/public/Cesium/Assets/Textures/maki/minefield.png new file mode 100644 index 0000000000000000000000000000000000000000..60e174abbcb228c0a069449a161e8d777fc7621e GIT binary patch literal 1907 zcmV-(2aNcMP)Px#32;bRa{vGi!vFvd!vV){sAK>D2M9?-K~#9!?Oj_; zV?`J)yRe|^eb)q|LR{Urn%##@$ZpiQ>jes>7bpS+DHo$4ay10CMj~Xn2?_+cB$bqy z00KUUgr`Ok#gK>~F@^^*E2cqFOp!=LK@^-ZttrQr&YW{*=CqwZ`5s8yGc(^e^Us-o z{uxv%Zrr$W+dBbp5#WB#23_J~0d!t)iL*o4_V@Q=e2~vYpw#2E(r#ke0gfSuwjQgA=M1Sl#h8s{uha6iCSy$JvjXhZ%8T*LrGD4;GkOX>Y? z?Ck8EQ$Sn7UA!Li^@S)Ofvr;vdw(Jd`Kzm|>4yoBo0~h$uni}C@OskoOOgH>sbu$~ z*Xvgf6TmeYhcl?Z+E3kMu^I})0ThR9v>fiojp^y>B#Ok}f?9W60jP}z)Vd4|47`9M z0GOnIpj7Wi@M76I(!%lpjNB@KoP*@h9U^o_j=rpj6DJp5)!rrLTF)_n04e6 z6$=XsPZAeuRc5XneM|pYquowZr$o-Rcug}iT{>;Zq z!FAXTH=E5L`)XWcW8>>mMgv?dk?j2*ZYY+9ulKh?7pfa4X46B6#Kgqk1iwkf=wX*= z2vAZ|@-9Z59v9i`KR>JvrKP1KLX{)rYsd%7#KoUQXjS7$!>z=LXL= zCDd|LQ&Yc{Ljc!X$Wf2-9}`1940Yp{3j~W}vIv4`YHDf~?l-{LI8FEC#@yUof>>X_ zwY8N(Wc~pU*Pv8jW@hFou@&&Liblf7$jI|@3IOLaG4)7KPhS*UrbeUr)t>;j(dv!; z{rxZDG#t3G9XSPXtqG9JUt3#yLTY*Q^Yccgu^5y$B^vI>4X4wYhEg_|v_F)iJXym5 zFe)k+5v{GQO^20bv)L>p1n@Tspg?k#g(|>(a;%DRk(89QNwfF+6CfuiXGYF)tXAtQ zsIiYQmTqBaXsC*&06jfDuafLo9zsXT9+i~KH+p$f`fvBGqN3s*k^;c8Jc5m%k}3x` z^m-8^_CbuCuCA^+lFxU;;c#SG7z+xv{aaa!$6_fZxwj1&HNtNIV7y z2XhsjC>89GC3O=cbFP<@egN_u76;^>7n}VR%4lwGevNv(i!7IK!CedN;RB?8Y=qw`d&7h&7T+y28T|k`!P8=*$EFhNKFC;&sm2DG~i`V z@W2JUao5X@FuriB63M?&3ehmP2oSQSv>h#&(d?tn7nDSPlo-;7hli^IDack?Svg4a z&Lm=Mf~u;jw*xua30&4!Ebr12l7E&})R8rydjg|BK45x(FvkAt>gqZJLV#f2fMIq` zzSN7gg9RxmDGzf27$PexD^Bq)2qvip@dkW2pM)6!o{?j{2#dxML8H<95-fS2t~Q-l z!dd`phYaSBVqE&9H2h_^+n-g;LQLuoS#@=_Ef9!@DVOlF4#8ePgkl81IbH7yQ&UsV z6c-o2rv$=HCes(Aqob9+BBYA_Pkkg}|L}@5cxeW_t_+IQ-Q8VVUtixL7A-9;&Ew9AMBi4-Fgts`+?w%nuPB#K))t-Ei)wRtU}p?LUTg tZQz_%7~$t&mWPTPH*VaxapM*m_74Whh|T#d9P0o8002ovPDHLkV1hw3Z7=`; literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/mobilephone.png b/public/Cesium/Assets/Textures/maki/mobilephone.png new file mode 100644 index 0000000000000000000000000000000000000000..a40ef9c1f6a026e82e340c37c3dcb7667399555e GIT binary patch literal 1474 zcmZWoXHXMp5dDH8k)o8LoeBXYaMCWK5I~fYUJW_M?Qy!Uoz-bPznT@(@gO%MPeVva%C@cQ+= zgdXD6iS!^OuN`zXwloHyB2kFz#Lt@{B%6ySpzQte8QyT%2V+kH;7IdcLfXBb5&_`1 zGe;T!b9;nCyN4m#9&dM*m$WcWbQq~o4#W=$$2^A(J-VURl|l1ulWl)h6_eO!(}zN1 ziarG{C(0G9t4bzgl zR~Zc^W~LmGQe$enunc$G)437`t4EO1IcgzmA!kAy4j){ABiDB!*`iF&{5<(R+b?+D z2ic%}r>d&z!YqdqY{u7w2rn1WytUIqdVJG8IC#5sX=%x$Ff^~ft*s5W^fxNk_dqu5 zT&QV%es6EDJv?P5IdWsSgHXXeZ(xuGH$nmx-QD%t2f9@Z2E*|^H(+IL%}xkRjDMem zu)4E`2L@Kd#Y1y)a`YjMN`(Ric}j&0%&SkddWX`)ysc(nBtnRuaMI5`aRouS_~TS% zD-`V9s(0i}dKY2ksQO_tpm7=LmX--&Y1l4xc6MH(QmNjjAgZdWGR0+O3$ZnvL+1VN0GkYaHBg5Qva#qU7)YKIJax3VNfI#k( zy7d+4b>`fPi`lWpt}d)1)&4UiPpgR@6~$lVL)cQyX9TLX)}^AgFWJ~M@P&q`xNxG4 z+8QMGHu--nL&uXpOj+O#0J`Q(IwwI+UOq%|1V~9srwqN0)P$s_rq&$K#xMypxbPlKjK4fHBV)r2hZ|7ws~qKMPmC@vzY@wP>SXPX zJ5R4&pb}CKP4x(xs6qFufF^;^=Y!3#j^dJ%SrJHM6iW|(dG9s$DRBZEYZf?4>Pg3spyKlFCTdEhwdMZA8 z%~xj=$8^~eV_Kgvh3r>_DN0mn4)*uInG9qYuv=>0NaC)nMd{~6zssI<&bFG;#Ukcg zj}n_YBKKghXJ9N=0Zdhcanw_(xJSx8$(1~V2a}am;Bdj0bq@-WeuHCUV=!?0asc29 zYxJ7%>cTaPKY&)dQ0(o8WusXNR`H;QU)ONVdN@BnKZeC(9eswI`{2o?YKT1vtRP2N z9(U35wMh4dJGfdqD?oK)@gqO)RjV?stYe9*Vvd85h)f~dAAx#ML>@9iO3-#$$~VY1 zz8f{-{n6&|g4Wv$uRoOAM?9%wtRrdd3N?Lf+{UslWx>Dh@|)D2z0=LnR;V(Q>*46G==`!I=i?(ehDRa~;!Aa6ClAGk5)eKM* zw?$cM&LnCc!!XokmT3f%i%^`Ih1tNVsez9Eh@Epk_j5i!+;i^v+|Rk^q9Q2>xFZ|@ z00cFR7-QlCUjSQU>VMZ12ABvuLZA@Agu<=7uHH0l>QF z3m|tQ- z=a88;D$cwbdj7gS3O5&(0OKxU$yf;txuA)KRT06e!hO z6%`ewUh6NkO*`LHLkb{c$hv0>S?TF-YBZ}(zYWzOUT7nR$VfwH zXXm5-?&`}t-a?YU?e!^eSBs_Q_Ig~pJqo21&a0glXOD7fYnSko-JPi3j-ZXQg-{xe zrnegp>IUH;F$Ps)7?X8zOBG5bFI$)-IR;I=PckYM3PvRM;5wclDSo%#fwKQdbqf^8)g^`#>gp1a0G!M zrAZds$Cqt%&{rx|>}e9dsHh0{#c79_V#VavvVT5JT0nV`s+CKMtRwdn+oMKQvOe?8 zJq5?VT~VRTPr~D-^^-TDoCaOVe9BaHtgDA8Z?Y8n=79ilqSAm}dFc&{;@Y%)WBBUS z&9$gMqT^FjnJze-5vkJB!ouENvc+IlA0>iqH?BURA2Nj}(|hYyi8Szjvk&FpyZcV? z^qB5Fl{Rl)O75urhKUpk)8;N&R^XW?W*RKokeVUQamy_H>;vz6`&j&sda+n+>+xOl z`$EqxTYi6Q(ZqxD9cN6zP5~KH*KgbimeGpm0?$ogQUzwu>o4>91}7*MfMOq_&2{K; zrBYeZ($ezz@mO49VzqXs*}}2K(90o@nkTJbYogk1n;VL2Uu+lzf|e2;rl$371A#JC kPMO<>jKk$Y8}hn<{9 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/museum.png b/public/Cesium/Assets/Textures/maki/museum.png new file mode 100644 index 0000000000000000000000000000000000000000..23c179003a5028a6345a3240900e1837ef04b8ca GIT binary patch literal 2578 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/music.png b/public/Cesium/Assets/Textures/maki/music.png new file mode 100644 index 0000000000000000000000000000000000000000..dbef56f228820e5b9270f81cba7fb9eac3fbe0e5 GIT binary patch literal 1371 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�a=nmM0A^3^Z z)RF~IJYqoIwIX=#LX83pRS^alWd{7jiJS@!D1Iix#UDC!Xfa$omD?&`O4LlAJh@sU z2LQ=~FDrOM^%pK&NF~~N$jI5>OZ*^cS``HxJ$iJZH#d?S;+)RVguCAV@)sKRLf^R4o z_WjDr$~59o*1-q^JRx=#^sEYIQUk|bKyGesu~DaJtviSX3lk31l zTM4XuK_%4t^y$;-SoSJ=hPOdapFaJUNP9)$56oELu?{QZ&fK|k%g|R978OJxv7Zdk z(*Pc&hPkUK9rMX%{JVP0cpUo5%E}f{61$CMmw2!OKrk;6wF71~7u~7(Jj# zMnIDj{diIj@5cjvIEiMY;@=0ZBaqhLE6KBG&(2CuPyaF7d+r$7XQ$Ko2H_2j@v8WFVY;t%}v5gP;zYlPw%ZlBN? zKs-^)t$*_@6&@ZRCS!!x_pb#PTWR_3f5NK7gF&v`waPzq0%M}#gSLKZtZiwD8hQQ$q zr(vB8;nG;ekNRSOzW&D5Q%8RsbN~YqiU*wZ@uyf43;_;{s#_-t_BMV{^y?)LjfWuy z`r`eJBBxrGg&=t`e;xH7d(%}xG_XEsSeP{u! zB5;;s9jT|JxZ(|~%frj4^%M)qQi8)K3QYOHSv64S7Nz%Ts2A=)yDGAbuer%B3B~s| zvo0Hd$E=5pA;8*lx?CEXaG~V$i+%ik$I)W7E6}d88BFR2F_bd}mqj2W82KI?UorroF6G0*pgbcW;KkBt$NQ>?ABNFV7;{c}xa= zJl=UhfUFMLj>!4yY2{an_=@O8z4WB&1p>B|->32N&dckvtffY_W0;+uhiV2*9xSlz zbtPhq2yQ6KD-3yg=cPe1Sm}4c^h6+)U8xWQ+o@7daFGP`WOuh30UPBgs zK=oR_s)%p&O0ldrbmYj9T&eeIDEI-rD*GXgN+-5|shX++sqz33XbmYCqHew> zPMr9rw8c#vB4}ujCN}ZSymMEL~Nx9^d0iwjPL)nv`#(ikeyvazNjZ{JyDcYU- zNHk%9R`DNMDntsue^+tVTLm6hv&cJ^j2&{x8X%n51HS7eo~JP}G4an-xH-6_kRba} z`avub=g1ngXm~KH#N>>S3O{itV1S5%|BE^hNasOT3vS1>DqLB*wx;i^ptBZ7gcCBH z5aDm7_~1m5+4g#rVc(6g@(;!U!It^XZT__T!#W nKb|$J6_14T!!YcLT9fntSflJP1jA9f00000NkvXXu0mjf3%pY& literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/park.png b/public/Cesium/Assets/Textures/maki/park.png new file mode 100644 index 0000000000000000000000000000000000000000..741110e37e065804f2460167763c03760291687c GIT binary patch literal 2059 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 W83OF7@gwd40000!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1qt-49sslT^vIyZoQp*He1+HrY(Ewwulw-x*bXt z9}+TOuho#t`Fmnk&f-iT?oP(rBDb0=M59~;PC71OuYR%cNc8^}E=!F?;*R_~GuCn_ zR(uKId8--ZIj2#l?dHt8H{Y0?eYelPfZ`>n z$y=k|N@Q%|tI|K2>$u3pOypba`+qauKk@6=FXel-DjYxV|IYp``=(8Sfe8~evF(d4N&mEf<%;{MzTZ+d zKO5$T9q!9xk5AdWY15}OX(u*a?%x}?S-PypMd@i6#{>z@#XH|kkF!_!yyeiFH*a=_ z9bA6V*UB8XROw4xd(WJQ}lR0mp*fv7vi-ek3olpEYNWj_E$lPrEV-7aEDNFqXtMX1toR z?)84@+a61U=Ig4=5&TxSdvzE$r=vi^t$n+8{n|3~_WgBjY_4H{bsC;DdButR3)uWU z$IQ%3u1IR{t768-b7ptHpS^eQ!MRFXHf;D1wd|me+UIHJ?@v8vQoE6RG2_d0pX%AO zXJ^i1xTn(TZ^WxM`DD|Xi}%u*d=mNhEV^LJ&Emj7CDibrWyZ6Tr$sxD-^}^8H1^uH zYx6!_>rdD|)obYzpX#?_7k^2-*(Sau<<{f1{_1;IEo|2O(X4el`*2Ly&3T(rx!$N5 z{Z>hwzCT|_#9-BmgA=Q&YwJW3*8E)jp}g<6^!09uqMJ81beERwVc6dtdFRQp(`NqV j3xGL}tJP}9FZSpA`Bn$LE&L2D3>Z9J{an^LB{Ts5?4$8s literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/playground.png b/public/Cesium/Assets/Textures/maki/playground.png new file mode 100644 index 0000000000000000000000000000000000000000..5270d3c424195b82c728422293fc4589edfebe11 GIT binary patch literal 3856 zcmV+r5AX1aP)Px#32;bRa{vGi!vFvd!vV){sAK>D4y8#%K~#9!?Oh9W zP1zX^@fxogj~cC+(eW5FLkt}=!Z7NQhulPoL?jaN42?%TqVawPgHl?QQIw*xyp2*d zs;a80s#Vo0qcx*CO6h176N&C`*1ogO-TBWsd!Ms!+#C0-^{-ggz4z?%|9k(B@Bj8b zVPT;wbcL?a6}og?j~+b=XHvhoxcD{pw*!-I?B7vLIx_hRljqp~RSIcJzv9a?d4VfD z-bP}WG-aQy5Yn6;Co*k<+Z02 zd-v|$uWi|~Wo&+a{^D7)W-VR2cJ0KQH*Y4I7@D>pZHEsP_6j~Spo?c2Qs zBY2q93~5$=_BRw~@zkkPS6V6FC_{%1eUETOEkc@=H-JypbNTY+6y{?7Eo*?NsHnny z`}SoMv7lT?yK=!d%BZ|~^X4s-RlZk7jT-es(G9WRt`gF)od1tADla=bdxxq4Qc_Y* z5yANBkcK64e^GIR2M^w_YJlFod;gJ$19d_gwqF4in4)5hip$B#*{o`S^z`&&gaK-l zWyJw9sKcZIa2xjbSv;_6;KSz;FpY{sp`~g7mNl&qlpj|n3o`a#Ut|&~`fX$O!KArL z00i18R=(`IB&&RuG2K3Y{(P$7|2vd5#n)i+mI5x*ouicHB!2r@@%se@1!Gxyd0)Z+ zMf2y+UqIZyNm){UJr4US17yqquiHVz+zoXUzq?|^is@{2e`1mUKbSs!`ge%?A_c8p zR(yReKATOI4A{WN5N+&M0{hGtsPCRUc`_4_gvaB#&J_MBiY~aE0Rsjc+P{DQ*KOeG zr-DAvnl(i*J2Nvgf7+u*kH5vo$6rfIN;)@o?AVQG&YVd%QAksXmDbG4$QLeL=zH$m zxwQND@Ar^gft`ao5VHq(ReUG}J681k#>_3m#Kim;2qqO1>;f})MG-Fg0ghH*AQwnJ zuIK92tI3Ipi5Fx7qlpokOWylMu{N-hRjXD_Wrf(ESpBfc1fFgbj0SjKe30zy?Cr9t zVRUr#-BYJd^>+%8!GAMpX=exy+}$!DqkD-reYil z=UG@2WK`nsO`A4txp3cNleDxeR&_8L;BDgrEM2;EmTGm1Vv2AF^<9jqsrY*=`2T^5 zLnawgWYEL|5h7M;kQgge(I+zneA!_}R!*E0NKp}QsC)P9+4C}D7GZ>D!D4`}#(~e6 zG2`2+28fG`yD6rOz>Qo~;y%jE%gcM$>i(=&c%LfL;L?Jj2IycM_=XJ|Ca4;qPoF+# z2nE!0XnuM5fpueJzv#8UjZ$RgGS?<6m1-h(#?#_rtCaofv?}rVp=OyOu3voE?w)F{5AUi9w~Hc_aJhAL8{kFpCjI*LJ8sqaI)424 zK*9(ObjF}HYt~HCt$ZVDirI~N#>&Vr2+{Ivt~&txprDs7UFr+|jnxA%1N~C;k8UbV z&c5?8D3s$b1E>g5$m!dMz$;&$2M6&ntVu5Q9F}Sx? zG6gCH1`94w48Y{!kt0Wjh%mbj1Joig_YI0*SK;Q(o5wk=4Y&*R*((g(#)=>MIArqV z$*YK!{*+ty6Cpwm?E0&NC3;b|HW1K7a)&%(OMoc8s8_FEm#}%{(4j+FvS6MH_eLA& zHDSVp?@_e@S9mxl;I@8k9q;VEez<|cN5Ku&E zC>;|fJw5#wXfRQ|W4i-FP_;WIoKb1t%9Sgp>3A>-@--7=7Lz7TTAiGn{Cfm*e=D8u zF?fH;k|p`Tx)hZT*VzIvgllF6MZ(R@%si~)Az5wkPjE`jPC(hQW5*~kni05>-uYSS z#i&()=d516dWu9pL!{FnNq7a>qE|f{~D8?ZV@8mTq73LguMo-_qeSaNDMUNX{b<7noH6(U(w&fI@(xb0aY-8;2DvbcB zYh}r%mE*^cUvJ@lV*J)xw3+=i#lfJ&4rHar#>U=3f`IB6{C|*tWxtE;3fPv#cG^~c zYqArwzbZd>(+BxXOicW9peY@`9Q|k@qT;kvl6m(>((*o*~(@{fHzR=Sp?!{uCpGl^rtz- z-^q+(=$7uMD_sPGnTkJCrcC*+Oa^o1%9UhJ94?ZqQ9edJVDX!8DChfJ>9zR&-p;b= z7m6aDmzS#IIl8zB1sU>mlh6D`C6!#ZY}ss7xw3&A+*abyKd-!|v=Z1C+NqS(s8W&l zqo-R6MUi*o-Unb(h+rLH0khSyZQHid1dTAlY*n8=eL6!Won~XYymRNyk*>*CB9Go| za5HDlT!sNgM@Qc)%^8nP8%7F}m64FM1MpnlH?>$LC?w(12?x*!Jdx@?OfU_ch}=Oeq{ShQ%-e6#&#{JCE++f@(XjrTWf12n5G ze(Q>SMQyJ07X~BwyG6j+&1R@9;~_OQ^%U{_mxO1pW_73(V0ODc2k4frc6L(TEsd;# zBIMgRf&k5TG%@Vb%Q0id{J<(ErKP2vkaZ74hpGfAij#VqnH{Nyc*E{#nsk_)!dp`% z6)kZJq07d05h`TtN<{hZO$k9*wfim*P^+_j01cq;Dmxa8LDoI+4JKX8NVjM?q7x=m z-8YC?T(iLUmkRAi!wbP!PIWn0tPnggc)NKa30ka ziH#y+O<>1C#k*!4o_QDR=$bKrN)BP>>g0RB1+oEr6MASImH0FY|jzNl9m& z7y#{3xK#1j0fk*RP3>?o-lTa>d$()Xu3e)P4!rYm7ZTX}L$;FMk@>ydyLXRp1AX8% zCPcARL%~B-=NmwxL`pqBbhfGv2)eqCJ-!HfY{mT8PAS0UEgIV**MFazbQp|n;$E*h z*@wnm6OLT2qP_91@J6EU;%x8=6lD8X)VFYbdX7b&SpgIvVr+ls%X>yQniX@8Lz zQ$#Sjp(a$i3J3%6g4wb3oKaRzC;&ZfPu*3av=E!8ql51K!h98UQmm9CMeYoB9$B;#a1>?nY_*NE(VI1F{Q$Z%1 za`IL@C-M%vh;at*8@9PGZ_43{cKmN+tA`Q~`atCi{2m-6e~Sqi_)^%Da&bzeM+X9{ zQJ$PPs){dT3ls_HlW}#%4ZBxeJw|E$Bp9GkfGXen_NIzqp(}KSuFzGsum1x>BBgN_ S?H-o^0000Px#32;bRa{vGi!vFvd!vV){sAK>D2q#HIK~#9!?Ol6J z97Pyk-)~b(ZK|!-s;%#8eHHr*kvANIcLn6`K+fbqdOSRc36EMxX|-wyP^-{J(Mkmj z2sBL*8>1AFkOoOAl2k|&6fw0VCZkohAEP}sI1dj!36iJ&(@KwvCI7KAKPWeY=gkJiEWLl#N_e0N)? zgHPYq>fnnuG&HnhaBwhIDH|Uje@@dR$bnx_Q1EVGVBi$8X{F3;Hg}AUj>cf#AHlsl zLIb>+CiotZ5XtSrjKaRl#SoAx`0gZ(jEp=_h>mXHk$_udz`v*_`0gZ(jg3W1`-J*> zKacKbjdY+zMMb3u2p0|TXUt-;v`;W? zU(hBXJUn~^lZ<z!2}n&%{fssN27}>e%p&|ak1lALbfCL-?Rtkc0rBziT^Ir$ zJAI`<>gqH|B zHt?;Og}9aC0(=3JhzmvpT)`^=E2RV+IdUY2mK#FurxxRWHVC{nG_$Tm0}OE=@Z{vA zAvQMlJGH?F*Voh2W5E!xT;RE(0X{4pbVEZ!dQec%KWY+?lauoS2K)e!&u~ou8sPP! z_GZ@Lp)jHr_(r4g2b?eq_3chU3k~9I>EK~8gqU27oo{=4yA3n@w{t)H-PZzXNIE0T zHJMD`E1CDHudmM}=tBJjEj4jx94-Z8czD=kHk-foHu#Z|k;BK2A5SCX{~r*v*wDc5 z#Q_5D2o_1SF#qiZ@Ld**@qQ5AiSCAEYsC|cbJlA+J3C)IaNs~;US3{BR#w)>85tR$Ab0it8>k&S zc5Ejmw~sxb2MXvp`m_f9&I(8(`Xca4kUil;DhN4)Kw&eaQQ&L!g;c|OY1)|=6W!KL ztb%_nENVOgFEPkv-O3vHaMFFd2Ecbe#^lFR6tfZ6Q7E{SmX;RT?e=CAi+_`lkkHA3 z!A1|NaU_6YLATj#pYPtiyZr3gvo8>SFPMo18WC_8u7gcYO*>H>-cP&ci!(@nlcJ@z zwziktt8|dQC@wC3n?S-wstYs3(bD`rSWQihlXj_5rVcPhNXA71DTtgN%->BB(${o# zq`0i+nKNh1ka1)YeAvVl78aI~To3FmWd3#v_8-h-QN@Kf1fzEQic#>V!T&=AjC>kZNv_9eH1>J&9N2y1)&d&t zXA_HBPm=3_$cE&4oKEM5^B{8c{Q2`n>24W3g4&DktX%%Uz(Bm0(#Kvmm>4A2)6me6 zf%-i$pXU+CT%{%fcSt+1ckkY}SOgyeg1){!Y%C9TVbliZ`%J6V+J<@FlWG$1KY(P0kE4Tfe(VP#YkZe9XgbUiH2^Z z;{T!6N?T-$sR93rLdIAe_%M5;qM`;D^Ze}W>?+K&SE^M^pY`HBd-jwtHv2E)W~ke_ zgeGs?vO-1HjyvgMx7(XoA^-v0NCF>-@y1>S4t7wv<_5jwKIx#8kdZ6`n4d5U9UaX?))N-h>gwuj((L!P6dtp)4pHL^*eKQTu#$Wu z$jvVq$Wy$1FCDI?paub(-CqcwVQ6S5_0%)e9tfB4&17gVc>A3d6%_?E2$*&AA>>79 zry$_{jg5`zq}i`jj;f@jq?iT)0a8IN?L7b_(@5a&-@pHLrTPc=9kD_HHSj^}kGpyj ztgEXl39^?;y&LjhnkE3Un60g?DLC*U`w0aYCEu@k0-%IQay{amq|-V9$|)OqNa9;4 zx!1EBmfpxlBlYsr6qMPWrI$@;*<@e z5L%LCkS3F=z(a!~3JLtWy1G{udW2Ocz{At+I5DiZlnpuobGRNkWkX6zN+aze5Z45N zbc6&x-1DaPzrE5F0pMCt+aaTD_=SZUG?xUxq6)G>QjXtdv$e1yf#H$>hr>}vay@WF zhy~ZfEdd}ECn+1?x)~*u4LSjC$_6+rL2^ATo;~A=0H@RW5e;R7PJpOvAe9%pySuG$ zz>dY!H(U?^1r#_UN;&(<3U@5Pc@_E73`R704otrw~vuzXH8mZQ81%h~w<`x}z*R#mhEfoBJ0V72l UK|+Dz9{>OV07*qoM6N<$g531-egFUf literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/polling-place.png b/public/Cesium/Assets/Textures/maki/polling-place.png new file mode 100644 index 0000000000000000000000000000000000000000..b2d02a9041f5e01f43c9b4f73359efcfd8e51ad3 GIT binary patch literal 1772 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/prison.png b/public/Cesium/Assets/Textures/maki/prison.png new file mode 100644 index 0000000000000000000000000000000000000000..355cba44adc86fa9820f59fe440e1c0d99d05702 GIT binary patch literal 1371 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 X_$`j+;@B!`00000NkvXXu0mjfxTOP= literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/rail-underground.png b/public/Cesium/Assets/Textures/maki/rail-underground.png new file mode 100644 index 0000000000000000000000000000000000000000..42cfeb7e18d5bfa514901f2417063be45cb6f3f7 GIT binary patch literal 1996 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 D-P^wD literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/religious-christian.png b/public/Cesium/Assets/Textures/maki/religious-christian.png new file mode 100644 index 0000000000000000000000000000000000000000..201bc81ca35ce5287e40f87e5974a3fef1f77a97 GIT binary patch literal 948 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1qt-49uRME{-7;x8B}8pMAMN;`m3asSAUT_y(vM z2^{&Eyx@UL!R)-hFIR0{)Wl&`y&scd+Q0UIB6ZRU8 zzj9mtFF(Ag=dns=@srhocQo#JEftE4kKey{+qSawNIC#1?NJiNBJ-a$TQ zVL*id58LUqL)UjLJHWH8>9We5DsG8u?90FX6g%|)?!}BRiy04y3gzu(?RnKang7oD zFvcrk6HcZ)+LanB{2+G89hroh;*3`U!Ll!JFs#tm(Xlc9u|Gjy)BHYb>|L2#r%s)+ zEiFlAPsq!AxAb7%ivB5#3=K>S48TO7!N9P90mwPH_j48H9U{8zXA(0e0>tIl~0b4ow^mP$5U|0?gZ z>gucBq>UB#SDs7T-2awoNzh7jzje_oLv}57FJMk6`pms<-MV{Qh0m3}xOwwtI4~_? z0|(65W?Y!Rf4<-H`PNrIsm0HpE4}Q!i_*t)CreL1E$X*oESM*sA{DQ8uy?Z<-^!V4 z3=-R{Co^pAPGtD-UgU;h`1&i0mi^D3&wly8VZ*HAXTiqS)GXV=XZCH$ zVTQlCG1ud!GNvCZ%u>SU1RP=xj0_CG>>$Fx5Wv8I;6PMg*l4tC{)bDKE?qu)^yrkU zVcVUa*B!dHy`h*dF6OZQ>HD6i&Ten0V`uc6xWTezGGC0yE2G8tr49wY6^o4Cx4!#J fXJ5?u<1T-hk`4c;O8@(n2r|{v)z4*}Q$iB}k9V4L literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/religious-jewish.png b/public/Cesium/Assets/Textures/maki/religious-jewish.png new file mode 100644 index 0000000000000000000000000000000000000000..e3c75f6b3087ab511b5d5b1f75c391633b7d5f2b GIT binary patch literal 2384 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%0AZtWr z)nphO^i;rNm_;QAB4Q9izzuop)~%aw^1c~FRqKY$jd>QGwmN}?cF~({_3G6N;L!rF z$qVT|3nYJl03j4A@Ibg2I)J-o+&r;T(e*SvTr5SZ8f+Ndunm(IZ2;hv0yLbPo4XRX z8{yV%z{AlF1{REwSW$$oTRPGiJ=6=qZ{dq_I+Uz%sG8W`gtZtfL@AySX`;FYR}&@j zwvjc%-mG-Wn?@RtBhxzB-Hy@=XxoDODivHMk8(lE^HgD7o}29uz$r=Km>=ME8gi)O jv&G(;DS1ksr~3Inte7zh<8AW#00000NkvXXu0mjf$I5Zq literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/restaurant.png b/public/Cesium/Assets/Textures/maki/restaurant.png new file mode 100644 index 0000000000000000000000000000000000000000..816282a6e07e44e9e667a42d5c4e8759b0438144 GIT binary patch literal 2499 zcmV;!2|V_RP)Px#32;bRa{vGi!vFvd!vV){sAK>D30O%)K~#9!?VSry zR8<&&d1#thV_KPrqUEDZO-(f4#dFyWSl(~q6_Y#!m4_sT=on!$Mogwj!9Xvpp+Sa; zDRPV$YKSI_7$!0)CWnb)!cdG-q4Uq&t-Jr8yL;~4WdruynSX%2hrR##zkAL-=Rg1X zubtf(9HXP7(?>=|mJ-=a#9fe$L>7~CQ-v~)?pJLH^!OWEGLw7Swkt`Mx>i=OXfRCFn$c-wJvO*Yt$Cklz;)aj+ZD2T|0Sh&PcZ zB*Yym3I;V&MkN5;XrzpW$Z7zo(C9PC|1T465+5Vi!LnZIHLYcQjf~1zLf~$-XEZvr zC?_JD%+&M#ac6v?+fiBB_&RZ6(C;px`?AFK+{WYGzZ@&t+uIvlT3T9o^5n_9Xs6B)fFyP=`&}}q#Zqa^tq;{rbK*Bcs|%m7~VnX*O~74{{H^J z*4EZ1tE;OsiS7l(#l=Mp4GmA@a^n%ec3csyR{NuehsP*LSXfxw@bIu7u1I`*{71Sn z8jYr}y}dmOmpORw;7jEEO(^5(={XF*C=g~+j6a2(d(@c0bvH?Ja&m28VBmK?K0bet z>x}4h0?EqCdVL}QP>U6WN{K50m8z?&OA(hjfBt+lG3ejoat96^cv)QL`t|F+{{H?K z#bsh+V?Ut)xEC4UQFy>o4PRANl?Cvu z%zQ&!23iei8NZ6lgocKGMKP)q(&u5C;o+L$;o+^i7R4eQfJ^`|cc2*`o--ME<@ zIRFI!goo}9eExZIkpI0Q*Z3TOOaSEP-S`}gVn|;5T;p>9>;M*Hk7r(9-U$xCdH@XE;i;*q z?{NUu17P5Mi;IhE%+WqEe}@P%1ow}LRIr73-0f5j#Q_lcf1fVw)t*fg`9V-B2I9qLM zCTxoU*5jz=;NakPOBt zt&al`8Dko4BQ`)FWB4yvEAH*>eWkg%IYGklHWyu!13(73mB`~*abbSIv{NM`BjYUz z<2zBV#{oz{aHlMmUtpPu-vN(^Y#IPD$Rl`o$QrCwQc`l5G8b@QxTd|3ncbVW0JMR+v$HdTb%In-P*6$% zFkJ@xTOiT45T)TwOJ8gY0CrGv_}nxj4Doh_EzyydQOgzp=;iQ%q}Z&(zm$}e8VZ0p zX6WK#QvieqqDpBJrMS4bk0}7=aRBoAV71bX8xk8aTsQ#s3g3nm&&|z!l@$P_la~`2 z!2vM%XJB^=D*#BgK>_d(2f$w8d$8h(iHRSu0`T$i8KC%s)^Y&s6?RtWh|}$?ABKe$ z^c@>H0QN4(VB8%X9NZzp6FCC!bCKha;{fylJb=T~X}KSaNli^nI(EphzP5^YLC7fv zsb}OSQGz!x;k-af-)3iv0M=7d$jDkKhj|0uAE0|3A_ri)!kh71ljN>O!Mwp7hn%eg z&~wBI$(Jm#EB+1+fXyeb=ZJ$uO>zN1@+R88U=Dx{fSR&tTNZ%G$jHx3y)%phpaU?7 zh}*w^{|NfZWC@pY}-9$NP!MQrOghr$Jg|;yxIXStux3@Q#mYP!O z-7nH-CH~&__Vy^;6~Ubk#;5Gkfg5V}gaH5sqrF}P1Qy&OOFFnHAb&)0adA;cM@OVY zAgx-d6AtM!o%XT^2pX=asK^05pj(ni6lFAH%Xo$`gO)c)hQM97z`{dhjRHNO4%6%= z;vqoTrl8W^O1+;Z^jV0#wI&4CqG#GogFKP)Px#32;bRa{vGi!vFvd!vV){sAK>D1hq*-K~#9!?Ok0+ zQ&AkBAE7T)H${oyme!p}6=iGDt9~Mg) zUfFE6o}eX@$#jt4odhSz-_7KAtpyh!f(fDR1a?la5gaGqTLX3(7a^#Ppob&r`EY}v z6{HgqN<_Gp7){kie76L|=YW`~E0t{5Ye^$}jS!Shr*9<^30FKG?_XVA^@hXY@u{h) zXOT$6AB)92^gjKZgAmqABEE(+>Sm!NP=beshTd4M)~rG7jg5`H*xufD79qyfayK=n z3Tg1@=;$j#ScU`XOmua1{hXYfd|sdst>xD159n>&!otEMLQ2X^(pj+CY{|8?wfj1s zwWnOj@6^*EpU?MB1nDeCbw zG83=F($dnfR-0roIfwH- z4G|hen4OM%4<%}4V;1`Q`o2md0^M0;J;=_^&fQ8PUI`78)F9O6Z*Feht7P*3B9%(r z7BVN~TkWi@tURa&^7V{_lCSgWBvno13lX8(%?=B6ht~8RRq}-ws&T^QFcOaNm~Py17u@^F8uudzEgXxBi-Ceh0qc+jWbz#a)NMz1@1K~Mm;;gAH|wtJ ze(}P(-|&0EH(h3k+&m5QQ_{(}S=0Os4i3HrfyOaEKOfX|g-7ofXogsO{vgj>Gqk_= zpHqIgyu3UN;>=wQk&b_eX@1;p_j?e>4>L0}PgHom1p8kiI2?{IOf$q&0GG@4LB;?) zUNB`IfB=#SkW41;K!6enKzE{Un*q{y#Y66^5-lV5F z5P-h`TU%RhH36 zegG1MfOzT&*kq~pi;&R9a)mL8^i~Tl=6q342x{j@xQ*`M(glHRZT$_F WAAK+j8%yN?0000Px#32;bRa{vGi!vFvd!vV){sAK>D1`0_;K~#9!?VVd_ zTtyhi*GpSl5wV3T#rDMu*oWS%QqX!Md*4mmbwe&L5%M4j!KUP5h{X63N?C$0#y}I; zU@##jgh-x*JcxvX5iycRG$d3oAsT%UQ=-u%8)tCExZSy&b7tnu%$Wlp^dX%y^ZU=4 z%lCaV>+_k%@srEtjskmRcX#&;uxG))!@y!i?0H}Z4KaI=@56w#Y(S_x4OPqo0PO>y zqO5=;M7Yb4{y+5nyrCDGq5jYC5)=vD2=E{Hh+E)2Er63@W_fuzRbF2Hbs!MkpH^6Hz z0L3^TcN4s}0)X-U0TTSOva*{pz}HRyQ2A3N__Bc4P5{!z3hrKIgRhMMpwa;x{6r%0 zt&H$1Dk{EGUI5bO3T&wUlo39(!NI{6r3D~`17!t|8-A1#Ky~;i0l+Hmg!0iU72qp7 z0fS2VQQ$W=Hp*0iUsF@_sd56~{5orEYe`k$D>?py%AJ(mt-wHlQ%brQRD&N1g>EU+ z`vLqrc*5`O?0j!!Wu^Sz@}{S!Ym>?3H)i;u@M=1NFf=sOMDiO&B9UJN3hh_Zu~uFt()WT2=DXhe-AdUO?fgOoc_>0?b75+hyy}!G=`-&UR zuwphhH}|TYcg)PpyoM+<%FHL@6vSRHq-ggt4g9O%u~T*`mAb*y<$yXd;t)d4ZQp)6 zot`dMhq1A-OR#<%#64mMK9}LASefnZ?blQbu2_H{W$F@km=X4+4w0=wo1L9aGxv5D zD=eGMwz2LdR*!eeW{r)FA2Ppw0JSl3Qqj@T(aVM9O-)U`t}^^sEcPR2=sC?iBE_Ni zt334VVBm+DhXe-(2Hs=|-|ZtpJeRXh;U8exTT$C`17FbagD5MfBYZG--pxe-n9t72 zAI>7eB_n)bhq|GD=WVswB>2p zj}o0!Re($;bCodcoRR(@9nAAoQGoUJ^_L0o+4j0Z3O4u)4W6lgV7cy{9k-$uk1boU#EE^AC2x*Vfj4LUAv2j?&$%rvUk( z=wTeFiHV6fET)3bk;e3NI{leNf4{y0fXdMS0{$vQLjN#$oW}5*Qy#>gB z3HQ?6;|~KPdx14HG<-z*f2*sjDTfg+{RNgsxzVa(TC z0^~(FZ3jF&496kp?mYqa2oVw)XEp+$=Z6v_fLso}^F{y({YgduBY+XW2w(&-0vG|* z5@5Tfr6r3=!rEtOvljph-Tb6D9|3k~p&J3%39!@L+&o}@&t0qlj-cl)Uu(A4g`o8=<0k02D%#}fKAjxs<-cNp!DL1_j$x~00000NkvXXu0mjfqwgCD literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/school.png b/public/Cesium/Assets/Textures/maki/school.png new file mode 100644 index 0000000000000000000000000000000000000000..fb20bf4e24eb49d5b4acfae16c143e714274f338 GIT binary patch literal 3838 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 Af&c&j literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/scooter.png b/public/Cesium/Assets/Textures/maki/scooter.png new file mode 100644 index 0000000000000000000000000000000000000000..41f74164946dfdadec10b1851bd68a6a2cc58b3e GIT binary patch literal 2942 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/shop.png b/public/Cesium/Assets/Textures/maki/shop.png new file mode 100644 index 0000000000000000000000000000000000000000..11a6b755a2b887a911ba0833071d857352fd307a GIT binary patch literal 1544 zcmV+j2KV`iP)Px#32;bRa{vGi!vFvd!vV){sAK>D1)WJmK~#9!?VVd_ zV?`LptLuucyC}QL>WX&+7jLY)EGsK6?j~)LUQN;~y`+-XqD$2h@u9JW7Ao~Yi(>7I z#rC1JFV)s66s>}_R9tI)s6`(X!5WBEBE@Rlu8C)q#qH!f$;p{HC+Ru=!2d1zCiDNz zne)w@nK=aodHzWx68jY$63~GHe6)R%$>bG^VW$+87$v0)hoURtc4|xa7->8uxc*HY!$ES8JD+mKyYGWo4x<7K=Tu0Yb5z%)dLG z8I_flUppL*q->RymHn6j!g0G~I-~(ZLqlOBjOP^&hX>O@*k|?DPgcCOwROr2^DnBZ zs_HA-Wk+gVk6A6BS6f@#J1P(!vQ6uc$Kz$`Ome&3zZDl3NA*hieJox4wY9ZMTU-T7 z-@litXklUDpOi77Q0Oh0sb+tF|4S+m5-PtrXtmbw7$oE-VN|iS@ zHujw5uL7!qN*D19Z-&?F{m#fiS0E7hh=6dxmH?>MXvWA_Yq?6dd6`xE|J{NBoC4BR zZZsP85dijB_6EGXyj*WaS3t${cs%QT*)uaUPZ8feWR>pcF1~W(>vDp zV1q;AKOEi(E&N0_b1}oi!!Piacez}@o4FD~8FMTV4`|-aGS10d8-GS;<-g=B9}EUR zFcW~vQ@DiActv?}V-=Z=oSU0#F?&6b?Ach;W>532;`#JH%($sK03fa0Mw-7T&9ajB za08m{<^MGss$M`}91_pWoz>y3D0v{T_+@0!v>gwt~2Y`R|x8XNp^#9psLjV8( z000000001xBLLDy!x#l;Ry-armA$6vQUJH|!6T7~561s5wgZO%a7-ByM_JLpvqVR;!f181w6wfW0C-d{fRuxlnwpwEhSBP(sHpf}+KreB zq*%61U88vyhv5{dYQx2-Bax(3@)^=Wo?_DQ1g9?13z zxRDRShS@MUvjztTUnBtBpY0WJgb&i!*Y`3E&a7ZCI70v^6h3FIp`qbZ7@S!ikLOq6 zOh{!x?s*t&QYwlJ2mk;800000G95PzX+OkC2mpJvER5AI>ZL&0n13^|FW3)bwTqq1 zD+1tf7Ow(?2sJl1&*=t0%>%8kuX|yv*n}Lipq-wE&d<+30dq5JWMt%d830aFLD(th zFj-yf-3Thn6J1gsNnUz2G&VMV!cI=KyV%yG$;rvH(vP-Resp~4N9 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/skiing.png b/public/Cesium/Assets/Textures/maki/skiing.png new file mode 100644 index 0000000000000000000000000000000000000000..4fc11e2e5edaede5a1efa409aca19b46619e7149 GIT binary patch literal 3345 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 bNwxn1+}=3eX&$w^00000NkvXXu0mjfOz$Od literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/slaughterhouse.png b/public/Cesium/Assets/Textures/maki/slaughterhouse.png new file mode 100644 index 0000000000000000000000000000000000000000..9b094cabd1d164d2d71bd420993478ed4a355baf GIT binary patch literal 2270 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/soccer.png b/public/Cesium/Assets/Textures/maki/soccer.png new file mode 100644 index 0000000000000000000000000000000000000000..2385daf916c328a4581974f3793f9d0d48a617d5 GIT binary patch literal 2420 zcmV-)35)iLP)Px#32;bRa{vGi!vFvd!vV){sAK>D2?&^7?e%~kc;{Gdd8C^1}%wz~oOkLjx< z+RKUQO0-*AY0H)x<98U$bS3g|b-Dg5DU+tAru@gp$AgB4hr_O3y&84p%9WVG!NJIp zk&#e%KRrF|M*#>=SDW!W^)dk%Sz20J=IiS_;^pNvhfBf1!CzHXRlR}(gfw9uclH^- zUeAClD=Uj^Hro#*4A-K-z`$?LpFf|j6Nr1Aan@T=XS$D%&-W~uu0;O+{?~PY;N>ig z-+(e85DP{yU4dpnpCE#0fhI$uqoaE}Iy%z& z`}P z(9)_I2L{tP;f{`uhV0+J|5uX!96EHUK?8*4JjKo$rH;UC!5w5kK)`iMCt1~#H11i$ zY&PFCd?iR9S*bQSoPlL$XV)8H`$SPqb~}0pQ&Lh=E`kv*K0dxnZ{H08 zftJ_-c`TYG6vp7~?L9*Y1RD$HTWN?L*s%y|ivE|*o;{mO352aQnZJp2=I`6L?+=j~ zFEg%L3OZpGQ@M}I{HUm?Pn?DMcapSQ`jK>ZL}T{b6i&B4qjWAaGqc$lnZH0`VPT(> zoD+zws8R!u$u-*4)bs*Mr{GlT%*b&rf#RGtXf`V$wyP;WvmA4xi07=&UrS^e}ii%>Afn2e<4I&NPT+FYkO`_t3YThtmpaNxj) z&LDnB0f>%{?j!lOLM-ZbO#pc8EJOwX*T*dv5UeVOlpO6E4c{hZeoalyOQHe*b|}`{ z;5%o(r{f=cdU_Jo8qCVdYNTM?8Wj-$76(IBJs|f-yWRe=tB4=H0I>MJLXya~B_aPs z001&|6vdDc0311T@4Mfe0=-|ya9lH zz0m;3h1&xFTV&Ej3t0jX8you(ZvY^n+h_nFi9}8WEviTY;o>X-7#bRi;0=HX`Uyn4 z+zMFafRBlZ>1BNeK=G^6BE2Sao~sZ5c*gN%Mn=Y4yxe=Nncvvh_@drErKF_1%c3uG zE=mC43CEY^<>e(j{j0ULwTEdBHZn5uQ_&^{6c~}y0gvd-Ze$hi0TB$OgA57^`kF>x z<{dCxc0u<$zJ#Ts)(~VJvI3#FxVQpma1h1JBB75a0MH)NNf?k)YpAcUFP=lX&@{@R zA|fI_V;v0#ajHVug0ix*ns|f(0?u0J2M@Xdpm(T*@@p~?a=R7)c-rxgZEbBCY7Ij988`Fq zif{c*uO$?U)2dcIp}h}IN=oWC@QQSP*OR1GTb| z67zTj&$4DbPL!LpZTt=~N8lZ`c3^cNCuzw2Bgkvf940)inh-uu(!N4^)Ltb3JdBKB zpvm}#hK5{P{elo0T;I0tA|7%-2n-Ay;sF3H#VqZ~Cs_2azP>&Ob?2iJj_9M6q-Qa5 z73AmV*NW_6Ti8;f=thM;?!d|u_Ve@mR&-IsJK9c-ph7Tqw!G2NY>*W04AFLaClTDA zfLbeJxm*JU1qD^2t^zGD9#2xTlTj(u#4D*zF94`Dj93$tX;$dtPQB%7?vZNY)6 zXv!r-59%#QEcF2n08pdH2Ml-~wQ=SbjHH?6AE@K>EN#Jj4+$0LP9UJ8GcV0p_pZaec`qr4G1LTM4vJ%n%R^!Ma+Z@vs7Ep9jFsq;YqQ zaaXFV>4ZB((yU0PVjUj3DTFJmR*G<$+Zrvgz|)jXgP=?^!UdmV-NcO|pLu%L7&?Qj zCQ%>M%bR&Q`cVmr(;_PQP0nzo?ON0w%Y59CAvyv|azb5H#J<{u6FCS#Y!$JD0aSz3 zd878DCTD%-J!>|-dwIxD&`J_PB`CiJHSjR*l=m{Z%A@4y*F%sW2F`czJV7!!Wb{K> z1*mNS1xBFC3)EwPdPjucvO1l((J7iNA|_e5)Qm?2!b1?|Z!|6CXFfE33umTpHn|_g mm9bhbagdNag)kd9JpTY$dWdjeo!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1qt-3{3K#E{-7;x8B~}*d^>J!~P&f`9|l`x2Eao z3tN3x@d~|L-02Z7U`-pt!xtz_=~T(3W%O7P#wsVS#FyB%#8K0mc|M~nHl#k)T3 z_R3QA5B5ISn$-8jbH}}u@ALM=t-rr6Y<2nRr=Rwkc)!Wsd~?sr*I(~1eQs2GD97w~ zh={9Z`RSyMKLU0eE}u8YM=gFzc|}Xazr$CAy-v?paftXoKa~I6^UwWUr{`apHzB6( z*yE4ktxx^$%#dc}X+QiPDE#9s2QVZU{8$%UfBpB>_uuyKs-495_cIwt@Jw6x`pvp^ zf*@%IhK9w=d*00XzzpHhf;^DR80Xp|+$W#+_3&Dd1qC$?9}d|oAFB1AqmtCtqiDy( z(2&9?(d%|!`jwVQu)2o-Jo*Tgd%$ zV-WbH+Sl&?HF{d=M{$Ke9~0!AV)`D<6EJ`FTKn! zJpXvZwM(MQPoGtP*uZ)E@6r1A)z{u~7QK#Xi#xw6_CMn${@LdfjZ&OIF7$Nub6Mw< G&;$SjWBh^u literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/square.png b/public/Cesium/Assets/Textures/maki/square.png new file mode 100644 index 0000000000000000000000000000000000000000..babc9c531005241fba7a844629e8acc4abff26a1 GIT binary patch literal 582 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaMM3p^r=85sBugD~Uq{1quc1-Ct2978H@y}i3I?@)k5+r#EaqwPNDl4i`l zp|dJ2aRuvTC#&>zO@SltXBMJX9yH|D{-dY_x+@rRrNELy_|LMPx!Q_XIKlO|8H2eO0)Ur`j1~+>H&%5o>g(CiXowIv zvHR=(&Ube?mMcE_d)u-)mnSn5^)B5ok^RT{ciAfC&zCc+)h?``z2en^eP69x9Uqo; Su*@+4IndM9&t;ucLK6V=cF+_6 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/star-stroked.png b/public/Cesium/Assets/Textures/maki/star-stroked.png new file mode 100644 index 0000000000000000000000000000000000000000..242e42e206ac917a8f6f2115291f97e9ecffc2d7 GIT binary patch literal 3460 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/telephone.png b/public/Cesium/Assets/Textures/maki/telephone.png new file mode 100644 index 0000000000000000000000000000000000000000..6d57dc61a8a62c84825a83c8fae7c1ddcc6d694b GIT binary patch literal 1702 zcmV;X23h%uP)Px#32;bRa{vGi!vFvd!vV){sAK>D20KYaK~#9!?VVpp zWK|r;XSb!7AcB3V-g+pamW{2pjh$LC9c8sqM|XBni;5nkfB0WVt#&nEL&twPGp&}X z=z~6p2tG=P`5=anwX01#IS7Iv2$E#XbPsgvdb;=AKXcDL=g#jO_~GE(nS0LXd*^rl z|BlB4ETz-whf}H43zA)vtXQ%)b?kNNGtWwP&Lff~;13yqY}S0z_nsAWod=Iwu@FKf zNnl=d0KU>L3F`mBFLW6GzrO|nKb0yn0&9PNzkGRl`MrgOg%9TD=04K0`T6+|S65fx zIXpZpGb#jR_{0{?z`(%m{QUfMhL)O`m}t-wL8=$dK!dLdBOZ_6v;qA8Ykl z!Nc$G@4rI>zHFgTC<isjI8|ju-gD!^59u zU5}Ymi2C~aF<#(DqtSL{-bzbLw~@Je?1%)vp`qa$Uf_?6jI?6#i`n`mX?+nFYt$khCa&_zR%}7;Yt9vwDZwiGS<$2VC8#`kB>{Z z5x^}y+}_^aPG#Q8%F5z4&mZT38rum5gFnjms;Q}&BVF6m)6=EQTObhFwsOy8G8yEi z7tC^06Ricp@430TS*dnyI2^{|-?tmSWKZ%mors6@00k|1CrKxr#h`wXQ=xJku5ymp-5NiZvadpQn=7C$z3dPqdMH z>MUL72Yz#N^Vc-t>-gV%LY^;ZeGb7T-4n04F}uvuG-AZ*PL>h)a+0ojO|OMiRaLd@ z^ZEX)uCD%G2RyPXV8-(g4h{ll+>TWdOc+1#+uPfR7{brBP!@02!0+hj7-R@PCxbFw zvLe`jas26XsEtl%dS ziJ+71d>-NFvhw*Tum;T@t{dQ=Cv>u64B_W^AS5jS-QC?^GK8NC1%93y02DcjmCt9g zc9OTJpH*we$V^r?!GBr}0$S6~XjBspe66Q{YisKki?y1d+zv?qtBX<%L=)KtU*Q@N zfY#H$wzl>*=%%I${70P>U}IyWS_D2lEx=Q1>tHCxSNmB+pFJ(WB^(5LN}b&D3Az$i z3v|7{zW$ceo1XEQ{Xzf+JI_J7BbEXnL)(Kui@;I<}13!fkefWx1io&A^~!W%*W zx;xPCtA+o<#)lpg0@z^TaQKcIeAy-^C+k5Sj^JcJps%m*HVM9LOG``dYy1k%WupL& z^n~${FIwh%YzIh~cLV`ThRi&3wL~px_Tk0z9MPhW@ewe|mbl)@)EygZqAqK+TF- zsSE6YujPIm--YO8`e)x$M(cvCMwB(W10BM^oa(QjtE;QWY!q>;@CkbYK#Yu@C+q>c zODm$Rk-fiQjt4{|k7j}_sYH}bQdlc=(E}-w_6H~r%)!r0p#=X`55z>;A%jG~PYY5z zIl_iRF=4{jtCVq5o|$4}bipegk@Q7CCk0V}|B4`QPy{R6mUQ4>7Q{`~31&8Ha~0Io zg(7$}30I&~;R^Vfx}%wynNQTf7Zw&Cot&KbxrwU@p>>2pNa{qj67Zd9qUxA%I}Ak- w@NE*oXBNKXb{-exY)t5=ZiDc>g4XHuH{NepCC=3qnE(I)07*qoM6N<$g31Lx@&Et; literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/tennis.png b/public/Cesium/Assets/Textures/maki/tennis.png new file mode 100644 index 0000000000000000000000000000000000000000..6cb63205403a91c1a22f1bc01fd498ae0da7865e GIT binary patch literal 1658 zcmV-=28H>FP)Px#32;bRa{vGi!vFvd!vV){sAK>D1`kO@K~#9!?VW8% zWK|f)$8|TU*r?rFqM(8z0;9g!Zbh}Ncizmo^R#)RcI(>X9h!*tKNFLUm_=Q;OWcvwFybI^ZWfb$H&LtHVC3vto)<&)D?z^hHuV zcyIlxg&rFl8-^l&#+H|tTS@Ckpn~q~?CcxR#Lw8?-d+s>!h>LDxlqN=7zkG+s`%*% zTY^wOFE8R3sTHuZv-1-X0ARx_u7puh0S^Gm)Yf%G5nsa-=srA!(0dmE6aMAi9EjO68xw*O5 zx!6T>W9v`bEyvvudf}Ze29R(YZn~f5Hg8+7R zc4{R62LYrH*h&C$7%Bls01|*p0mNdlFC+l_mZP7@efh$|LWcxkAAl2XcSAhviv6zu zUavPH0XTRjXmWD$P0@r#v2BT00H;NFLs)!Lowzt3q*jQ=#>Ov25I-7?eobpsya0GX z#9okl4wPE}q+Zb6+`I@?{HCU+D|#9fPXPR)^aAAbKi69qu1-p;6=r^Z{xwMAH#9VS zW#mgA-T<6eD^P81?Iz^2|6l-Ud?$7bYRiWP;0&~n^+-M+B!Ki9(MzOUKoCYd-~rHF z5&q~Iiq8iPfChnwz2oc|uCM^KvLZSam@{iTRsle!@YD;a$yi%jT0VmyzCi%|K)~na zwJHYrI7=uL`h~m9i)veydaSRn?|q06@I;df2&64aqc$`&^e*IOYey1#pqD(rI;S%p zvewnrtwDhh4u`*|q&X|KQvBPkPOyz9aWgYB7t71buk#F{qN3tDr5=7O+)e>axRsTa zR~1G1E4z@ry}cjgkzm^~>+kQM&;y~SrshZ6VgmMWYA@3BwM=_^`=_EpKrvz6@}59S zQ)A>q4V=_NR0xqs1z!1uq0x&yzz}a-UO9l2{Jxi=~N2VdL{7jV;3piTSDzP{)D@Of)A?vRsdC$w4 zc7aw7QI))UK%O7z{R1IKGYbeBleM5DF`%uj?J|^mTxb_k=!HOAw$NQ~0svFjknHd8 zSF8Nq;~q{QMlpf5fafy>z|6Yq%-1lm<4c&ib)m*3T1*wfSVp-7jg*)UHC&|c1T z&Bg=tVKF+=IIHwB?d43?XrSMU%_1gLRaIT3X!MxjBZ;E7d@CS?LZP2c>11+y@~lU& zheb@NudiPr{KkuV){5>W?H9P>+E_*qMn*>7Vd5>)i+4pHmpv?os3N;-5HUgRRzIn# zjYCwN07U|@I3^4X42)AQ7mZ2)HuMCwR6pTx_y-vSY>Ww+t=;wY^%(wF^f?okJwb;( zEEQw};b{}%D^fXz51Jp{V?g{1QZeg#L$QYVXR`nQzfY;c1)GgeumAu607*qoM6N<$ Eg3(O{?*IS* literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/theatre.png b/public/Cesium/Assets/Textures/maki/theatre.png new file mode 100644 index 0000000000000000000000000000000000000000..772c96e4e31b501c5ec76fd5838bcc98d7c4214e GIT binary patch literal 3233 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 CG6nJg literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/toilets.png b/public/Cesium/Assets/Textures/maki/toilets.png new file mode 100644 index 0000000000000000000000000000000000000000..e87cf19c072126f496cc1918a344fc3d595d8a0a GIT binary patch literal 2917 zcmai0`8U*!7yir`W0x2T$>g;j{i9$loppV zgOzCs;(;(l06=vT%O59t8U_X4G1LJnhpw#C0F%FwZ6E-!cm3y}KEF~|0AQvd^$?aJ z)0_4z{+3^P*~3q?3mEZtK-@5?k;R@ciRK!v9tjf)RGI|&uIQP9So`(df`6Ja*cK`(7(3p+{faO_hKj~%J9uM z8r2DIq%7GNY6{4YayvGp;JjqFn*ed;H{${5w_KVvTJVorW~z*VXQ>sodu51`p`9%a zhNN`FuCb;K21E?Qnxg|%-~CD8SAyoKV;)=D+S=|CGoLEMil(psEkT$2`=y#E5nM?>l%{oS-|5c}S zA`B3HA|fKvF3O4(?fB&f1!WwD+90Q6EI36c*p<>uW{9j$SJCd@c;8s>wx5R)oConF$N~qRj7;92o z4IeKyoiVP!N7DlbH4ed>(;u(Jhn`DX2(AvC9rvgFwVa}P)!qwMUVVEpocE^Z$bu_f za&9gb1m!$k1p5ujQ06~)S)@FCrcL7Y$c_q0r{sW1WgtH(*#_T*wr5&~(Br=jUiL+R z=hK-1gZRq<(+wuEX%BrSE6-jqyCAG9Y^qaj_NtBY7MN*;wFCR&MzNB(ANr1N7bGbV%eet}3nWap)(<%8F z^xO{6DVdrq+|n4Z-20-N)b82@AI~ZKn8>fRb>@Hf)Awo@E#SP^yZTxMQF(r0`M9}b zW_^8~%2>|>C_Y4_%s(uFTxMnt@+Cf-@7 z(C)u)6UEwJyhWSXL=c`*>}3+1zqpv6t{!^exmAQrlWcL=ehq3kloC%B)ciXHPq>=x zTz}9Pme#)&fB17!#vL*JQu{^WHQlHQX__RoI*Q=cw?7QUoa)18hramHnADppVuH1> zv1#Ci>>1KzBnMfPwM(k6YZRK%anv(Uu_`MsuO*1ktIETB2CX0Pnz5n&fj^QM+1L}_ zZfTf7!atA%TxWlQ>|J1Bw4GaGu@P%^W0-ZiJ*yTgKan2uIcYoe4UX zPVwsqbDc4g-P{m5Jl>f)X+D8-(}CX_V+Z^7Z}Om2c6>YZKN@qKQ!7~#&(U8r#&E_`BP-{gnBBhe5mZ=E04^Ak5%R<}G2W1JN+&-}yRp!-WT-M&Pc?~G2hI79d4C93bYPCQYI3X5QdTzpPN81Zj1@pV|TfNW`Q&udl=}A-K)Ha!dSd7$9 z{#q079P~IbMz2+!d#iqr5co+LSnf+&DB%Xm;9Ww*NjLsmfvbb2k>!&YgSGeDin59U z9FNf)pdROU*|$!vf1kiJt9c)A+PjH`M$TYw2pWGK= z^b?M|5ZteFCcq%^%5RS)+ry%bj?Xf?P&GSC-iDy{F-1!@9fnzY7DKp+VZC91Rhwp#Fh@Q4=k8 zIylcb$I2dkv)o6FmhpNY67cuH73ALz!e~i@hd$Yd5o`0&;Ep1tqPf!maiCgRGU^sg zV4mYwr5F%Hb)Zd4P9zK(?fkF=P$S85lxpFnmMBn6EssYKgWGh3Ou;UavK5lmygG9& z=L1H!3PH#4U?P|Pk!fQ`BXd37*RG?x&W6Uf3;1GPw2PWzr6~B-lDf!8L0o#l@oIMmr+YsoiTO_bvhXBgw{o zMparBadH%uptTV_tFQ?Dd5!>YD>FVk0TrdBHW5mlWh2YoN+I~UY zR6YA|o@Fw&MV=Lc`C=`Qx{3Q(W)_x(TVEk>v!dGSJ6}Ka6Q8x;r z4hkAO969Jr*~JSGdW}n_z=y)4pP$}UbHs1XHU>`DJ(^+G=Nt;hRCRGa?T$GYo#omR zAnB`Z77nl_^pGQ_FNPRJ)rv{?%K_m-UTaDBc=(^gdoQ>c`$B+_ou8%!V8FM3Q)%?~ z6-HcAdtnVmR;*wY>?kLmD=0V~A$SM!{?*23FK>bl0KKdPPvRuAcr-Ygx){rM<=gQXj2X IspE+MA2>mI{Qv*} literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/town-hall.png b/public/Cesium/Assets/Textures/maki/town-hall.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5c7ce4d8f5c83c0f596136ec9b8995874d52d GIT binary patch literal 2005 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/triangle.png b/public/Cesium/Assets/Textures/maki/triangle.png new file mode 100644 index 0000000000000000000000000000000000000000..d9c47f42180c8f91fa40e5d77abbd3bcf4bdb253 GIT binary patch literal 2137 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 VA@*_T;r3eq93@h$sw_Q|{|C9P$Q%Fw literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/warehouse.png b/public/Cesium/Assets/Textures/maki/warehouse.png new file mode 100644 index 0000000000000000000000000000000000000000..910f1e4c940c73334fe62ac0845f2783189dc191 GIT binary patch literal 1908 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 Dn66b{ literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/maki/water.png b/public/Cesium/Assets/Textures/maki/water.png new file mode 100644 index 0000000000000000000000000000000000000000..159a557de69a1b2f8998b56d3ebc85aec3203a6a GIT binary patch literal 2411 zcmV-x36%DUP)Px#32;bRa{vGi!vFvd!vV){sAK>D2>?k%K~#9!?Ol6J zm1P(|CX||}Np`WNnVOcRc}vs02Is;#T;d{(n?ymVnB26*UBDPtKyeABQIR-TLju{z znGs`T#hi^?)LaycC>xEUNQ{Kuhkc*Hd!82r4&VLTe*ZAwyyy44-}65ASErNV)8F5J zb6;QI0|Xm5EGIvksnZ@o$iIyc{v?5gf(yZXjiCvA2*FbcoDuSQmf zmJwhezdK!H%=Wu~8AfT-Y)3rl~4!w*Cf&A?}jluDeZwKmxCbpxa!;?JU5c2y0dcD58 zy1IHdA_NopAG0(j$1Z?Jv7H?j7Ium!pNE^9+xKm4Z9d5FZzKQ5USo6gdVfAfenv*d zD}?YqS^$9H;NV)up}d9&VUot`jqm(fpgw3KtE#GYgSx@U=aHD0Sjae(7i!Gjc$i^3 zO<-$l>kgu3T8ASa;Oy*t_1Ljvu?#28QDb;`@+X11pvmj)?RDL`bLYn+kpE?}Iu4wK7@(0HUIz-esHz zi!{cEl5Y>@B2CoAix>Stos5Ni?mXx%Dk@53L{4XG%>S?VS7LfUARyq=v69cj#l_{f z3l}Z~B0|^>2fikN{{DHGnn*}Ucw@Ze^YHWY`=YzM+a2={)PCqXV0!=f@#E1%ee~E$ z0D#!o*tZzx!2-4J{K;6H2kd=USJxkHNj`TT{8L(58pnti%~a#=e`vh+{%8RQdUJEL zKO%%Jup!h$z9SajPfbmIjTPsy6#@eT>lyyRgK9E4twIeoH8l}>z5efsB%eo8Qc^y{ zG<8(N?q5NF`L3=m4=*pTuZ18VU@#cE&zw0E&M-~wl)U@z!Yq;K=;%_R$mikh?fn%9 z9$C+FrSAM&AQ;9lIj;&W0679!6b_rHvsYS?Si9tRex-Ks-e;$jP!iG`O z?!O09J-c@8Iw=*SXHwX7Z<+>!7{N00NAr<&-;p1MOb1T zyj`=|{EHOG=Wwm0q~ryLRb($`)iVckxUi}Qu>tAM_V#vfL%{l z@@C9IlU11`S@2r=3!FZE`Z>K`e?{s7;A)EskhefDiwqiB=p9&?+27y)GdYkCFqurh zV`VLpKaja53acbbPEJmmT*&7U8XEc`BVy_x<=uZTy=d?$@cO^oEtY$@*kh4ex}kAgmxs{kN7mz$fLjtF3bq^j$RbG?ja*)DR}pDq$Gg*Y4U4pYo8S>&TnfZCnx72Z^7e|cnctfhb3CTickXi zd^H6lWbG&g0o;c*(Am1MN^GR0q`Zz*T8p0P!UAsL;o+y0L_YTxv?Jw>a2CuEJKQ{k z{Km${V5R7O8ql96DeoAI`N$#QHdc6gdVULG6=XDmy%_3e8t0l12{)U~=3kX60PqVK z^`-O0*!_#>g=A%AWh$8b0fdBve1zo-#1OzHdLceOK3^(b0ASrg=MIuJnvcmu3vw?P}I+5`aS05YFwyAT3cLsvYIr%i1F06<$6?GFecfQ@wc!Dux8rA7f1 z78WMa+CT^aY#IE4P|zxsGIODE`0(MEBq0E`c)&Cu_9cb@G!-PW3R*|En7X*Qbf{4P zSmBls0$4>`LC|NVMgcT5G(1g*BZP3omeNuW4i5fAZRDFwrawA6JD;LwP6+V^%%ueo z6BF}}+5`Zd{YWTcr4Ryepg$N6Bee-2EG(=_lv#9GG!$HNgTbIGODI1-KLrthFy)F^ zHH4btK`^}+T5XZ)2s@z!U^Uk{EiElaEdmG#2xvfd|6@Xzq?l#g|)gXX^f`Vkx zOH-ga7-_(+Ryz5N5=E2X4Sd)D4hYXGwJebbjMEgw{A5@|&Ppyz$9BJ@%G4nTN-yTz zxpN^(P0**Or)M*|=*4N&V6`T}Br2tm4#~VkPB&k@Vw0o01ed zWF`}Ar59IOSs5vp(F7ymz<~qBSkty-rl_z6v1Vjsyb8mRTf9&;R0vSi1(VZ7dK>!SG6#mGbA33IB5u~;Zp1dSz9>vq2?`3T6R5_t z55go^RU0*eV40$B+~YcHHV^Zq2f`O%DZ%{Ci69;h+3f7>bVg9^dTtkT9XcgGTn=G5 zOC=3%dELK%|C`)s`|%Y1_CeVsc;n^e<$JM^0;O`EfEHYx(jN%nVgWqNVuH~(Fe(Nv zYj$^cZ-MJahP%2DJXk+Jzt15ge&WQ5D8?-rG>j0{m6e%kqqku(<~a{15OC<~>+3^d z#4yaEK6>!nMVd`D0(n68If*Qq+SKHU8ROGYCI8-OQ%hE98i2x7rV2lY7N z%v~VopfNtYFlKR8*qi8)IAZ|JGF<^NDpl!t8wz6zSCI{BY7KXI8xTv%$dSFCv*Dqi d*+J^0{|9?4`azXttPx#32;bRa{vGi!vFvd!vV){sAK>D2mDDyK~#9!?Okh3 zTtyUymWZj3TCJ_E`okLQBU)o?qOG;H!tTQIkS#9n$F^=!V6i5WO1iZYQDSInN=Y%* z&?Zey6y*m5TN`W$(O3z=YHgaJ39*XkDoUkdQ3^OGF3I-py_b34U6_-cknD2r%>BN( zXU?2Cb2cVMi4rABlqgZ6M2Qk5R?F1X)S}7B$yG=bkf!RW1L@rgDNcgGTw(w;u0Ehp zBp>Cm2)K=mz+a*0p7Ry5c;K($3A~1cs};h=rY2q#@S&=Z)(8K75)fNjS}LlmtLuF} zU$a(s?b_8iK0cmia(#+I{7UfcGXZ}3^yvbd&Gv6%V&W8mPMDaYMGE=@WH=L4~XvW z?qZ(a4W{0zMt@K(0Dtvd1b>|Y_!FeyA31WQk^=N3@VsP9a&f4!O%xpjfNqjG`i~z! z{v3^$!yz8@s3`CgIR&g>LnEFe_^WxDo^$8U<#G(nJtl2QZ)Nya@4kM&|1Aq_znH*W zB!_U(wKwt_{pIE5A4FV;8W@y8Kv1vYF*ur=n_q~K(I5Jzucxv3i;ZsR^?KWJA1pUF zx2LtW)rZ;Hm8=AyHZSucprN6mIw>jX0`5I(YisLFNQmQNdTch^IBhH?D=X_u3=;0c z93TsLnI9l+`uf4a!KWP#$3=$d=x;{O2XjmXLa#ichdDVp-7}D|1Y>|W^>(so`r~rB zzJ=?Plav48@qF91ZEIti3&0+0FCH5kOXnTNH4Ac4nx6@pe!PJsqC(W@AMep#eE9I; zD&Cz0J#*$vJ`D*R&5sb(TT@_%s3Dj{GRu#Sjy{DZD{8wrFfiaYxc9P1B>6;Qz&sWbV5D#|MGxZ)4vMrAA}uH=_)Pk0IOvYrX&WVdNVnVl6;9`^u>TC; zuN57Ozn*9M$4mqmy_pt*A0HD5V$?yq-TpTR|2a0KoqM(4_x1JViUPm1wDd!RXG@NX zZ9%Z>Bo7=21Tu99SYWmSU*?qN408LdJ75&=H)%zoh# zShM;qAW4Wq-poH{BTlCMHy8}gm`E1AFvi)lXY+VW#6~&(GR+UX<&jRnd{&T*2tfB< zq5b^Ci4)JtBp_;YbT~|WH$(b|_HzjRiU1$YD$h*;{w|c7fjU2s`qI|cR$fd;R zL(nD!gq`8tvuDri1aX;BnuI8b=kv(ahLb{3O@Lme1WCe{&*yueB_)vLt%&HN8^Me; zoHWIa+D_BV118D3R0`P^tP^lBDIf{wP#zc02|zd63MA0$NC+_V{duU-F{ISg)Ip=; zQjBe`BPJtQzE{feR48@?lc>bwu%Tzlo;M432so~~aHa|KAuE8GYYMqjSni@yp_)tu zzT55o8mfxuq!f;4W@dhaUg->x9WN;>~8Dvvj+_`gSqsaDqdU}eWjG57SV}o=S zqcsHIL;H<7L}d}b(<$i`=FQK6y{|?eH*d)E@aFM&KEZi#$RR@H5Akdp4)Nih^vuY}=oj() zy}iAKmJ$$ZtLy9QU)8qT)z$S3^2dJ?**4UxfbC3e+q-w~ZlFD48+8QCRaFEi0u%v? z07ZZzfQbO~U3XJcQ`Pj(ctBYe@E{XgT<{bR?Dm5Ky@@7}$y;o#u+`wuV^uy5bK8rtQ1 zdwY8s&j&wx^yrHu?E_FeiPr-UN8zA4T2v035fE0I5;nMb#!*;m&F$E+;~kdvw`|#R zlD6&a?CjndelZDK;XZl`Kp6y;XPA|{4As&Tspl_0;AQN>N8;T2I z-}e?MJsd2a;k0OD1NL4Q>KzJ{q)-R@4%CNh(cec{2uQ&A=M5NJnd>Dz_-cb4y|t2v zU&Co}`H0%`;7Te2R@3>I_Z zQGeP&nx7L)A>q-sjkPEfl&eJdcra)xS6P);w1@(b<(%4HLD;T6v__EPx#32;bRa{vGi!vFvd!vV){sAK>D3Jys`K~#9!?Oh8{ zRAm$v-_OipEzDeM3 z-h>D*j+W~+zbgTEffew@GL^i)3rEeh+CP~F`t<43OD|u(9D$KQ2$)O$?Zc6C4fw-o zfN$QsxiBIk;`>F57X4ITUmwqS5;WW|IB$BogM+2P-Lz>_sh^+UeGsiydv*W*{oAbg zg|XZ(I0n8K0dG1D>X9Qy68-)CZ<+`IAwS>Vym@o+ojZ3z7(`41Kf+O!W_rfZK(@BF zE(#A1Zx(|umSxM99lLVnik|xg*92QS8pO40*M7_b-z1@-p)GZFbt@Q8LLm4Qj<9vp z(?y7K&A=-xEKDT;-?c@6;1~WbC@9!&#V@=_zNZsM8@Kx})1aL>b0$`&)3w?IzQ`}! zNls2Kwc;0M@OZ(}^o+)qoCbrTK??X{S-N!TiA$F*MKVb6;VUHbRD;gilG9Nke&Kv= zZS86X3EU?T5PA^tr@<*JD@%qYrn3Zq1Ox=!$jr>lLI{}Y>2|*p0bv#mOhZFM9I^X< zxB`5U+^wjnNTQvxr#oGXJkQmuSHmMCBfpcV;r|vF7pH9BzI`9~4D$1T*!$M3S#yN` zK2J71-k4opy?S+(M9ntt*s)`;_!=!OEsL|VvNB0$6 z%m#1Uwyglx?@|eXngDV=$RQ2jh?|4oQLw!h;P2YC>s?3}O9ekXJiG~_WaOIO9C1s{ zpNfH>ot?eY-olDlG#bsd6DLl*hFsH^+kH#$eK7F%?%kV4H2;51*?MC|bO0?SC8fxbrKU-Of`Wc)YHEr>z@NxXj?p-j z$g7yv1NiIKt*dk-!WE|)N=r+(V6BBjI(w?dcOmi&%h8(ZxGPqy_{`bD`NoYK4`L~1 z^8I~1(aa1X|4xElduxRa=wN_;eP_Xsii$b|>1pIUp7TV|18h~4z~n%$jnuY5RzK&d zQ>T_QTFbrE3_1i*!-d3IpuOchCfcX-S<;v;Y85%p+dq;YcJ?ffr4DT z!C?3XKyy{Y)T&jhsInjZ(~swaT8$qja! zKxOH1X}d=dAQZ#rBHd?(*x1;Uasgho1YrBD&Ye5ASPte!^#lmo??*2wV`5^ymLvG8 zBS6^bW~Ti)IXM|lriVEJ5(pSiYrkHvKPy-8)kuI@4`yRyV~o23Do(&d0_KTt@BA4}^#j39 zLlSlVBPRmD4wmN{60&vq^5vhm2LaZ4l^8=W>*ma zsRxZla~&DP`W51cM=JdZm_Rq{LKlLSbGVMPQWmZv03s{R8MtdT^itYg9l^PR`rbl6I~n08TZ+QX*Tn zY$-y_P;aFYFoV9CB}7yaSsTW!B=85*Hv-4|Vde)+58WE* z4g%nb!-jGr@xWxo*?!pSPv0=n@}rpP$;-=2v!`z0Y62huhnOK_b#?VxWGJ_nk_Z?` z-z?k|ru{$)297%jV40!R)YN?By}cA$0{{Wrigl&I_SMHpKyGesI(GCR^4_NvTLpuu zCrE0+xNqOS9V}qnMSu{LU8DT~vJ#r46z#X@30k>w<)?PeVs<+LAQ1e~$^r9V(L7Ls<|>=|oDmkY^fpR{Mb zsHpXPpr}rvlR#QeB?V$Y!Wh~gP!4ULaKKqd(dW7f>1&M@t)ESwS^>6MI0s&5#l-p0 nMRp-z^tE!@9S}QFF3$IVsXK)5%9ZmQ00000NkvXXu0mjf7KP~H literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/moonSmall.jpg b/public/Cesium/Assets/Textures/moonSmall.jpg new file mode 100644 index 0000000000000000000000000000000000000000..47f52522ea7501f58eb0cf14bd89e4f90c32fde5 GIT binary patch literal 18196 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/pin.svg b/public/Cesium/Assets/Textures/pin.svg new file mode 100644 index 000000000..7892c3682 --- /dev/null +++ b/public/Cesium/Assets/Textures/pin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/Cesium/Assets/Textures/waterNormals.jpg b/public/Cesium/Assets/Textures/waterNormals.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eb1baa2d62829297680a99ef890ef719599965cc GIT binary patch literal 294196 zcmbTdc{p3!|3B)So=#MIT2)2MX$@_SHH5a5 uQswqg2qvk}UhM39cv_(sC%oWoy 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�+MF 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

    wyy2=a9FLQ8h}6#D77{rNRn8IRs)5W|CzsVe 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𝔒gs%v+c8CCNCS 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 z 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μ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%0A{Q_eH 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 Ql)4Vfg;7(EzyCA+|7<^4(EtDd literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/waterNormalsSmall.jpg b/public/Cesium/Assets/Textures/waterNormalsSmall.jpg new file mode 100644 index 0000000000000000000000000000000000000000..57b19d8f46fdc4a7e6fe249da37f0fe9c3c461e8 GIT binary patch literal 34121 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�MKo&Lj{(*y=W)D+k z1YZEH#0F9xPW8@d!7WkJiW6+*hA(mNPqZ2%c{BK7a+c0woL$drk`<4n2!O_H19ed8 z$rzra;(iBZ;fv`07_F1ZL|2`FtlHTd20aMdw14T*6aFh*PV1$n9gEEb+=&O>pmYca z%6;t}Z#{xOp71OC3A=wn4G2Bp89OGP?O_ zbS?UdNk6>O>3gj%?O1#{zM@$}Cy;uZgnzsWnvDAPKQh!CW2?O@*2?8}8krk@V!N}g zhnF;E%Q3bq_nXsee^i02EOhC8Q};X+GI%5eI)w{Y?na^~N_gJ|YfA}xhP>B35Fbx` z;G9Tz%(ADmgy~+v%^aVnuXuA3l=_UAtW2oi(-h-!+yqeemXg zG!~8jXe>3sVvC5hxylqT%7aNtoi(>GfGr*0V+1N}6eYM6AcD%9+~2GXRorX}iFkeb zq7lngn;bKvMiN|DShPZ`4lukH(rPyS;LV$Ikw{8)b`x7P-f|)~*pB1VtGUWt-})V_ zmdLALa6m!}0FWqD2Bq-#Xu-9TnetHz4<>OTy_-7K=>@`G>-%XHsC{n;W9kh`SC6j~ z8;>0cpDR!w-DQbcc;yJwIs>XtgjPUsG{lh{P(;ENiZ7K=97q=2Ez%>sk(TOFd(WLtp(O%*3};DM$7_N8cG zgK*s2c*o9bMaFYByd$48D5hwh@5cJFFm&90lq|(_<4VfVr=5{9G^^Xf+@$3EDm~IU z$V`-;l={xM{5rt1z(>{~YA{fEy0EWvpbxmt{dh}c|B-Day@A=Ss#yIM3T$*J0RKqoO1w2Kon~cileBf6|pY{var HSe=Object.create;var _9=Object.defineProperty;var zSe=Object.getOwnPropertyDescriptor;var KSe=Object.getOwnPropertyNames;var JSe=Object.getPrototypeOf,jSe=Object.prototype.hasOwnProperty;var E9=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Pu=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),qSe=(e,t)=>{for(var n in t)_9(e,n,{get:t[n],enumerable:!0})},wee=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of KSe(t))!jSe.call(e,o)&&o!==n&&_9(e,o,{get:()=>t[o],enumerable:!(i=zSe(t,o))||i.enumerable});return e};var y=(e,t,n)=>(n=e!=null?HSe(JSe(e)):{},wee(t||!e||!e.__esModule?_9(n,"default",{value:e,enumerable:!0}):n,e)),$Se=e=>wee(_9({},"__esModule",{value:!0}),e);var C=Pu(()=>{globalThis.CESIUM_WORKERS=atob("dmFyIENlc2l1bVdvcmtlcnM9KCgpPT57dmFyIGR4PU9iamVjdC5jcmVhdGU7dmFyIEdsPU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgbXg9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjt2YXIgaHg9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM7dmFyIF94PU9iamVjdC5nZXRQcm90b3R5cGVPZix5eD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O3ZhciBkcj0odD0+dHlwZW9mIHJlcXVpcmU8InUiP3JlcXVpcmU6dHlwZW9mIFByb3h5PCJ1Ij9uZXcgUHJveHkodCx7Z2V0OihlLG4pPT4odHlwZW9mIHJlcXVpcmU8InUiP3JlcXVpcmU6ZSlbbl19KTp0KShmdW5jdGlvbih0KXtpZih0eXBlb2YgcmVxdWlyZTwidSIpcmV0dXJuIHJlcXVpcmUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3Rocm93IEVycm9yKCdEeW5hbWljIHJlcXVpcmUgb2YgIicrdCsnIiBpcyBub3Qgc3VwcG9ydGVkJyl9KSxUMT10PT5lPT57dmFyIG49dFtlXTtpZihuKXJldHVybiBuKCk7dGhyb3cgbmV3IEVycm9yKCJNb2R1bGUgbm90IGZvdW5kIGluIGJ1bmRsZTogIitlKX07dmFyICQ9KHQsZSk9PigpPT4odCYmKGU9dCh0PTApKSxlKTt2YXIgWW49KHQsZSk9PigpPT4oZXx8dCgoZT17ZXhwb3J0czp7fX0pLmV4cG9ydHMsZSksZS5leHBvcnRzKSxsZT0odCxlKT0+e2Zvcih2YXIgbiBpbiBlKUdsKHQsbix7Z2V0OmVbbl0sZW51bWVyYWJsZTohMH0pfSxPMT0odCxlLG4sbyk9PntpZihlJiZ0eXBlb2YgZT09Im9iamVjdCJ8fHR5cGVvZiBlPT0iZnVuY3Rpb24iKWZvcihsZXQgciBvZiBoeChlKSkheXguY2FsbCh0LHIpJiZyIT09biYmR2wodCxyLHtnZXQ6KCk9PmVbcl0sZW51bWVyYWJsZTohKG89bXgoZSxyKSl8fG8uZW51bWVyYWJsZX0pO3JldHVybiB0fTt2YXIgbXI9KHQsZSxuKT0+KG49dCE9bnVsbD9keChfeCh0KSk6e30sTzEoZXx8IXR8fCF0Ll9fZXNNb2R1bGU/R2wobiwiZGVmYXVsdCIse3ZhbHVlOnQsZW51bWVyYWJsZTohMH0pOm4sdCkpLGd4PXQ9Pk8xKEdsKHt9LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0KTtmdW5jdGlvbiBBeCh0KXtyZXR1cm4gdCE9bnVsbH12YXIgbSxmdD0kKCgpPT57bT1BeH0pO2Z1bmN0aW9uIEdzKHQpe3RoaXMubmFtZT0iRGV2ZWxvcGVyRXJyb3IiLHRoaXMubWVzc2FnZT10O2xldCBlO3RyeXt0aHJvdyBuZXcgRXJyb3J9Y2F0Y2gobil7ZT1uLnN0YWNrfXRoaXMuc3RhY2s9ZX12YXIgRCxIdD0kKCgpPT57ZnQoKTttKE9iamVjdC5jcmVhdGUpJiYoR3MucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKSxHcy5wcm90b3R5cGUuY29uc3RydWN0b3I9R3MpO0dzLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2xldCB0PWAke3RoaXMubmFtZX06ICR7dGhpcy5tZXNzYWdlfWA7cmV0dXJuIG0odGhpcy5zdGFjaykmJih0Kz1gCiR7dGhpcy5zdGFjay50b1N0cmluZygpfWApLHR9O0dzLnRocm93SW5zdGFudGlhdGlvbkVycm9yPWZ1bmN0aW9uKCl7dGhyb3cgbmV3IEdzKCJUaGlzIGZ1bmN0aW9uIGRlZmluZXMgYW4gaW50ZXJmYWNlIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseS4iKX07RD1Hc30pO2Z1bmN0aW9uIGJ4KHQpe3JldHVybmAke3R9IGlzIHJlcXVpcmVkLCBhY3R1YWwgdmFsdWUgd2FzIHVuZGVmaW5lZGB9ZnVuY3Rpb24gamModCxlLG4pe3JldHVybmBFeHBlY3RlZCAke259IHRvIGJlIHR5cGVvZiAke2V9LCBhY3R1YWwgdHlwZW9mIHdhcyAke3R9YH12YXIgJG4seSxXdD0kKCgpPT57ZnQoKTtIdCgpOyRuPXt9OyRuLnR5cGVPZj17fTskbi5kZWZpbmVkPWZ1bmN0aW9uKHQsZSl7aWYoIW0oZSkpdGhyb3cgbmV3IEQoYngodCkpfTskbi50eXBlT2YuZnVuYz1mdW5jdGlvbih0LGUpe2lmKHR5cGVvZiBlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBEKGpjKHR5cGVvZiBlLCJmdW5jdGlvbiIsdCkpfTskbi50eXBlT2Yuc3RyaW5nPWZ1bmN0aW9uKHQsZSl7aWYodHlwZW9mIGUhPSJzdHJpbmciKXRocm93IG5ldyBEKGpjKHR5cGVvZiBlLCJzdHJpbmciLHQpKX07JG4udHlwZU9mLm51bWJlcj1mdW5jdGlvbih0LGUpe2lmKHR5cGVvZiBlIT0ibnVtYmVyIil0aHJvdyBuZXcgRChqYyh0eXBlb2YgZSwibnVtYmVyIix0KSl9OyRuLnR5cGVPZi5udW1iZXIubGVzc1RoYW49ZnVuY3Rpb24odCxlLG4pe2lmKCRuLnR5cGVPZi5udW1iZXIodCxlKSxlPj1uKXRocm93IG5ldyBEKGBFeHBlY3RlZCAke3R9IHRvIGJlIGxlc3MgdGhhbiAke259LCBhY3R1YWwgdmFsdWUgd2FzICR7ZX1gKX07JG4udHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzPWZ1bmN0aW9uKHQsZSxuKXtpZigkbi50eXBlT2YubnVtYmVyKHQsZSksZT5uKXRocm93IG5ldyBEKGBFeHBlY3RlZCAke3R9IHRvIGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAke259LCBhY3R1YWwgdmFsdWUgd2FzICR7ZX1gKX07JG4udHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbj1mdW5jdGlvbih0LGUsbil7aWYoJG4udHlwZU9mLm51bWJlcih0LGUpLGU8PW4pdGhyb3cgbmV3IEQoYEV4cGVjdGVkICR7dH0gdG8gYmUgZ3JlYXRlciB0aGFuICR7bn0sIGFjdHVhbCB2YWx1ZSB3YXMgJHtlfWApfTskbi50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHM9ZnVuY3Rpb24odCxlLG4pe2lmKCRuLnR5cGVPZi5udW1iZXIodCxlKSxlPG4pdGhyb3cgbmV3IEQoYEV4cGVjdGVkICR7dH0gdG8gYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICR7bn0sIGFjdHVhbCB2YWx1ZSB3YXMgJHtlfWApfTskbi50eXBlT2Yub2JqZWN0PWZ1bmN0aW9uKHQsZSl7aWYodHlwZW9mIGUhPSJvYmplY3QiKXRocm93IG5ldyBEKGpjKHR5cGVvZiBlLCJvYmplY3QiLHQpKX07JG4udHlwZU9mLmJvb2w9ZnVuY3Rpb24odCxlKXtpZih0eXBlb2YgZSE9ImJvb2xlYW4iKXRocm93IG5ldyBEKGpjKHR5cGVvZiBlLCJib29sZWFuIix0KSl9OyRuLnR5cGVPZi5iaWdpbnQ9ZnVuY3Rpb24odCxlKXtpZih0eXBlb2YgZSE9ImJpZ2ludCIpdGhyb3cgbmV3IEQoamModHlwZW9mIGUsImJpZ2ludCIsdCkpfTskbi50eXBlT2YubnVtYmVyLmVxdWFscz1mdW5jdGlvbih0LGUsbixvKXtpZigkbi50eXBlT2YubnVtYmVyKHQsbiksJG4udHlwZU9mLm51bWJlcihlLG8pLG4hPT1vKXRocm93IG5ldyBEKGAke3R9IG11c3QgYmUgZXF1YWwgdG8gJHtlfSwgdGhlIGFjdHVhbCB2YWx1ZXMgYXJlICR7bn0gYW5kICR7b31gKX07eT0kbn0pO3ZhciBSMT1ZbigoRUcsRTEpPT57dmFyIFNpPWZ1bmN0aW9uKHQpe3Q9PW51bGwmJih0PW5ldyBEYXRlKCkuZ2V0VGltZSgpKSx0aGlzLk49NjI0LHRoaXMuTT0zOTcsdGhpcy5NQVRSSVhfQT0yNTY3NDgzNjE1LHRoaXMuVVBQRVJfTUFTSz0yMTQ3NDgzNjQ4LHRoaXMuTE9XRVJfTUFTSz0yMTQ3NDgzNjQ3LHRoaXMubXQ9bmV3IEFycmF5KHRoaXMuTiksdGhpcy5tdGk9dGhpcy5OKzEsdC5jb25zdHJ1Y3Rvcj09QXJyYXk/dGhpcy5pbml0X2J5X2FycmF5KHQsdC5sZW5ndGgpOnRoaXMuaW5pdF9zZWVkKHQpfTtTaS5wcm90b3R5cGUuaW5pdF9zZWVkPWZ1bmN0aW9uKHQpe2Zvcih0aGlzLm10WzBdPXQ+Pj4wLHRoaXMubXRpPTE7dGhpcy5tdGk8dGhpcy5OO3RoaXMubXRpKyspe3ZhciB0PXRoaXMubXRbdGhpcy5tdGktMV1edGhpcy5tdFt0aGlzLm10aS0xXT4+PjMwO3RoaXMubXRbdGhpcy5tdGldPSgoKHQmNDI5NDkwMTc2MCk+Pj4xNikqMTgxMjQzMzI1Mzw8MTYpKyh0JjY1NTM1KSoxODEyNDMzMjUzK3RoaXMubXRpLHRoaXMubXRbdGhpcy5tdGldPj4+PTB9fTtTaS5wcm90b3R5cGUuaW5pdF9ieV9hcnJheT1mdW5jdGlvbih0LGUpe3ZhciBuLG8scjtmb3IodGhpcy5pbml0X3NlZWQoMTk2NTAyMTgpLG49MSxvPTAscj10aGlzLk4+ZT90aGlzLk46ZTtyO3ItLSl7dmFyIGk9dGhpcy5tdFtuLTFdXnRoaXMubXRbbi0xXT4+PjMwO3RoaXMubXRbbl09KHRoaXMubXRbbl1eKCgoaSY0Mjk0OTAxNzYwKT4+PjE2KSoxNjY0NTI1PDwxNikrKGkmNjU1MzUpKjE2NjQ1MjUpK3Rbb10rbyx0aGlzLm10W25dPj4+PTAsbisrLG8rKyxuPj10aGlzLk4mJih0aGlzLm10WzBdPXRoaXMubXRbdGhpcy5OLTFdLG49MSksbz49ZSYmKG89MCl9Zm9yKHI9dGhpcy5OLTE7cjtyLS0pe3ZhciBpPXRoaXMubXRbbi0xXV50aGlzLm10W24tMV0+Pj4zMDt0aGlzLm10W25dPSh0aGlzLm10W25dXigoKGkmNDI5NDkwMTc2MCk+Pj4xNikqMTU2NjA4Mzk0MTw8MTYpKyhpJjY1NTM1KSoxNTY2MDgzOTQxKS1uLHRoaXMubXRbbl0+Pj49MCxuKyssbj49dGhpcy5OJiYodGhpcy5tdFswXT10aGlzLm10W3RoaXMuTi0xXSxuPTEpfXRoaXMubXRbMF09MjE0NzQ4MzY0OH07U2kucHJvdG90eXBlLnJhbmRvbV9pbnQ9ZnVuY3Rpb24oKXt2YXIgdCxlPW5ldyBBcnJheSgwLHRoaXMuTUFUUklYX0EpO2lmKHRoaXMubXRpPj10aGlzLk4pe3ZhciBuO2Zvcih0aGlzLm10aT09dGhpcy5OKzEmJnRoaXMuaW5pdF9zZWVkKDU0ODkpLG49MDtuPHRoaXMuTi10aGlzLk07bisrKXQ9dGhpcy5tdFtuXSZ0aGlzLlVQUEVSX01BU0t8dGhpcy5tdFtuKzFdJnRoaXMuTE9XRVJfTUFTSyx0aGlzLm10W25dPXRoaXMubXRbbit0aGlzLk1dXnQ+Pj4xXmVbdCYxXTtmb3IoO248dGhpcy5OLTE7bisrKXQ9dGhpcy5tdFtuXSZ0aGlzLlVQUEVSX01BU0t8dGhpcy5tdFtuKzFdJnRoaXMuTE9XRVJfTUFTSyx0aGlzLm10W25dPXRoaXMubXRbbisodGhpcy5NLXRoaXMuTildXnQ+Pj4xXmVbdCYxXTt0PXRoaXMubXRbdGhpcy5OLTFdJnRoaXMuVVBQRVJfTUFTS3x0aGlzLm10WzBdJnRoaXMuTE9XRVJfTUFTSyx0aGlzLm10W3RoaXMuTi0xXT10aGlzLm10W3RoaXMuTS0xXV50Pj4+MV5lW3QmMV0sdGhpcy5tdGk9MH1yZXR1cm4gdD10aGlzLm10W3RoaXMubXRpKytdLHRePXQ+Pj4xMSx0Xj10PDw3JjI2MzY5Mjg2NDAsdF49dDw8MTUmNDAyMjczMDc1Mix0Xj10Pj4+MTgsdD4+PjB9O1NpLnByb3RvdHlwZS5yYW5kb21faW50MzE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yYW5kb21faW50KCk+Pj4xfTtTaS5wcm90b3R5cGUucmFuZG9tX2luY2w9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yYW5kb21faW50KCkqKDEvNDI5NDk2NzI5NSl9O1NpLnByb3RvdHlwZS5yYW5kb209ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yYW5kb21faW50KCkqKDEvNDI5NDk2NzI5Nil9O1NpLnByb3RvdHlwZS5yYW5kb21fZXhjbD1mdW5jdGlvbigpe3JldHVybih0aGlzLnJhbmRvbV9pbnQoKSsuNSkqKDEvNDI5NDk2NzI5Nil9O1NpLnByb3RvdHlwZS5yYW5kb21fbG9uZz1mdW5jdGlvbigpe3ZhciB0PXRoaXMucmFuZG9tX2ludCgpPj4+NSxlPXRoaXMucmFuZG9tX2ludCgpPj4+NjtyZXR1cm4odCo2NzEwODg2NCtlKSooMS85MDA3MTk5MjU0NzQwOTkyKX07RTEuZXhwb3J0cz1TaX0pO3ZhciBTbSxDdCxWbCxTMSxQLEt0PSQoKCk9PntTbT1tcihSMSgpLDEpO1d0KCk7ZnQoKTtIdCgpO0N0PXt9O0N0LkVQU0lMT04xPS4xO0N0LkVQU0lMT04yPS4wMTtDdC5FUFNJTE9OMz0uMDAxO0N0LkVQU0lMT040PTFlLTQ7Q3QuRVBTSUxPTjU9MWUtNTtDdC5FUFNJTE9ONj0xZS02O0N0LkVQU0lMT043PTFlLTc7Q3QuRVBTSUxPTjg9MWUtODtDdC5FUFNJTE9OOT0xZS05O0N0LkVQU0lMT04xMD0xZS0xMDtDdC5FUFNJTE9OMTE9MWUtMTE7Q3QuRVBTSUxPTjEyPTFlLTEyO0N0LkVQU0lMT04xMz0xZS0xMztDdC5FUFNJTE9OMTQ9MWUtMTQ7Q3QuRVBTSUxPTjE1PTFlLTE1O0N0LkVQU0lMT04xNj0xZS0xNjtDdC5FUFNJTE9OMTc9MWUtMTc7Q3QuRVBTSUxPTjE4PTFlLTE4O0N0LkVQU0lMT04xOT0xZS0xOTtDdC5FUFNJTE9OMjA9MWUtMjA7Q3QuRVBTSUxPTjIxPTFlLTIxO0N0LkdSQVZJVEFUSU9OQUxQQVJBTUVURVI9Mzk4NjAwNDQxOGU1O0N0LlNPTEFSX1JBRElVUz02OTU1ZTU7Q3QuTFVOQVJfUkFESVVTPTE3Mzc0MDA7Q3QuU0lYVFlfRk9VUl9LSUxPQllURVM9NjQqMTAyNDtDdC5GT1VSX0dJR0FCWVRFUz00KjEwMjQqMTAyNCoxMDI0O0N0LnNpZ249TWF0aC5zaWduPz9mdW5jdGlvbihlKXtyZXR1cm4gZT0rZSxlPT09MHx8ZSE9PWU/ZTplPjA/MTotMX07Q3Quc2lnbk5vdFplcm89ZnVuY3Rpb24odCl7cmV0dXJuIHQ8MD8tMToxfTtDdC50b1NOb3JtPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGU9ZT8/MjU1LE1hdGgucm91bmQoKEN0LmNsYW1wKHQsLTEsMSkqLjUrLjUpKmUpfTtDdC5mcm9tU05vcm09ZnVuY3Rpb24odCxlKXtyZXR1cm4gZT1lPz8yNTUsQ3QuY2xhbXAodCwwLGUpL2UqMi0xfTtDdC5ub3JtYWxpemU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBuPU1hdGgubWF4KG4tZSwwKSxuPT09MD8wOkN0LmNsYW1wKCh0LWUpL24sMCwxKX07Q3Quc2luaD1NYXRoLnNpbmg/P2Z1bmN0aW9uKGUpe3JldHVybihNYXRoLmV4cChlKS1NYXRoLmV4cCgtZSkpLzJ9O0N0LmNvc2g9TWF0aC5jb3NoPz9mdW5jdGlvbihlKXtyZXR1cm4oTWF0aC5leHAoZSkrTWF0aC5leHAoLWUpKS8yfTtDdC5sZXJwPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4oMS1uKSp0K24qZX07Q3QuUEk9TWF0aC5QSTtDdC5PTkVfT1ZFUl9QST0xL01hdGguUEk7Q3QuUElfT1ZFUl9UV089TWF0aC5QSS8yO0N0LlBJX09WRVJfVEhSRUU9TWF0aC5QSS8zO0N0LlBJX09WRVJfRk9VUj1NYXRoLlBJLzQ7Q3QuUElfT1ZFUl9TSVg9TWF0aC5QSS82O0N0LlRIUkVFX1BJX09WRVJfVFdPPTMqTWF0aC5QSS8yO0N0LlRXT19QST0yKk1hdGguUEk7Q3QuT05FX09WRVJfVFdPX1BJPTEvKDIqTWF0aC5QSSk7Q3QuUkFESUFOU19QRVJfREVHUkVFPU1hdGguUEkvMTgwO0N0LkRFR1JFRVNfUEVSX1JBRElBTj0xODAvTWF0aC5QSTtDdC5SQURJQU5TX1BFUl9BUkNTRUNPTkQ9Q3QuUkFESUFOU19QRVJfREVHUkVFLzM2MDA7Q3QudG9SYWRpYW5zPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJkZWdyZWVzIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0KkN0LlJBRElBTlNfUEVSX0RFR1JFRX07Q3QudG9EZWdyZWVzPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJyYWRpYW5zIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0KkN0LkRFR1JFRVNfUEVSX1JBRElBTn07Q3QuY29udmVydExvbmdpdHVkZVJhbmdlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJhbmdsZSBpcyByZXF1aXJlZC4iKTtsZXQgZT1DdC5UV09fUEksbj10LU1hdGguZmxvb3IodC9lKSplO3JldHVybiBuPC1NYXRoLlBJP24rZTpuPj1NYXRoLlBJP24tZTpufTtDdC5jbGFtcFRvTGF0aXR1ZGVSYW5nZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgRCgiYW5nbGUgaXMgcmVxdWlyZWQuIik7cmV0dXJuIEN0LmNsYW1wKHQsLTEqQ3QuUElfT1ZFUl9UV08sQ3QuUElfT1ZFUl9UV08pfTtDdC5uZWdhdGl2ZVBpVG9QaT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgRCgiYW5nbGUgaXMgcmVxdWlyZWQuIik7cmV0dXJuIHQ+PS1DdC5QSSYmdDw9Q3QuUEk/dDpDdC56ZXJvVG9Ud29QaSh0K0N0LlBJKS1DdC5QSX07Q3QuemVyb1RvVHdvUGk9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImFuZ2xlIGlzIHJlcXVpcmVkLiIpO2lmKHQ+PTAmJnQ8PUN0LlRXT19QSSlyZXR1cm4gdDtsZXQgZT1DdC5tb2QodCxDdC5UV09fUEkpO3JldHVybiBNYXRoLmFicyhlKTxDdC5FUFNJTE9OMTQmJk1hdGguYWJzKHQpPkN0LkVQU0lMT04xND9DdC5UV09fUEk6ZX07Q3QubW9kPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoIm0gaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoIm4gaXMgcmVxdWlyZWQuIik7aWYoZT09PTApdGhyb3cgbmV3IEQoImRpdmlzb3IgY2Fubm90IGJlIDAuIik7cmV0dXJuIEN0LnNpZ24odCk9PT1DdC5zaWduKGUpJiZNYXRoLmFicyh0KTxNYXRoLmFicyhlKT90Oih0JWUrZSklZX07Q3QuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbixvKXtpZighbSh0KSl0aHJvdyBuZXcgRCgibGVmdCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgicmlnaHQgaXMgcmVxdWlyZWQuIik7bj1uPz8wLG89bz8/bjtsZXQgcj1NYXRoLmFicyh0LWUpO3JldHVybiByPD1vfHxyPD1uKk1hdGgubWF4KE1hdGguYWJzKHQpLE1hdGguYWJzKGUpKX07Q3QubGVzc1RoYW49ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJmaXJzdCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgic2Vjb25kIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBEKCJhYnNvbHV0ZUVwc2lsb24gaXMgcmVxdWlyZWQuIik7cmV0dXJuIHQtZTwtbn07Q3QubGVzc1RoYW5PckVxdWFscz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImZpcnN0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJzZWNvbmQgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoImFic29sdXRlRXBzaWxvbiBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdC1lPG59O0N0LmdyZWF0ZXJUaGFuPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgiZmlyc3QgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoInNlY29uZCBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgRCgiYWJzb2x1dGVFcHNpbG9uIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0LWU+bn07Q3QuZ3JlYXRlclRoYW5PckVxdWFscz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImZpcnN0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJzZWNvbmQgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoImFic29sdXRlRXBzaWxvbiBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdC1lPi1ufTtWbD1bMV07Q3QuZmFjdG9yaWFsPWZ1bmN0aW9uKHQpe2lmKHR5cGVvZiB0IT0ibnVtYmVyInx8dDwwKXRocm93IG5ldyBEKCJBIG51bWJlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMCBpcyByZXF1aXJlZC4iKTtsZXQgZT1WbC5sZW5ndGg7aWYodD49ZSl7bGV0IG49VmxbZS0xXTtmb3IobGV0IG89ZTtvPD10O28rKyl7bGV0IHI9bipvO1ZsLnB1c2gociksbj1yfX1yZXR1cm4gVmxbdF19O0N0LmluY3JlbWVudFdyYXA9ZnVuY3Rpb24odCxlLG4pe2lmKG49bj8/MCwhbSh0KSl0aHJvdyBuZXcgRCgibiBpcyByZXF1aXJlZC4iKTtpZihlPD1uKXRocm93IG5ldyBEKCJtYXhpbXVtVmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gbWluaW11bVZhbHVlLiIpO3JldHVybisrdCx0PmUmJih0PW4pLHR9O0N0LmlzUG93ZXJPZlR3bz1mdW5jdGlvbih0KXtpZih0eXBlb2YgdCE9Im51bWJlciJ8fHQ8MHx8dD40Mjk0OTY3Mjk1KXRocm93IG5ldyBEKCJBIG51bWJlciBiZXR3ZWVuIDAgYW5kICgyXjMyKS0xIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0IT09MCYmKHQmdC0xKT09PTB9O0N0Lm5leHRQb3dlck9mVHdvPWZ1bmN0aW9uKHQpe2lmKHR5cGVvZiB0IT0ibnVtYmVyInx8dDwwfHx0PjIxNDc0ODM2NDgpdGhyb3cgbmV3IEQoIkEgbnVtYmVyIGJldHdlZW4gMCBhbmQgMl4zMSBpcyByZXF1aXJlZC4iKTtyZXR1cm4tLXQsdHw9dD4+MSx0fD10Pj4yLHR8PXQ+PjQsdHw9dD4+OCx0fD10Pj4xNiwrK3QsdH07Q3QucHJldmlvdXNQb3dlck9mVHdvPWZ1bmN0aW9uKHQpe2lmKHR5cGVvZiB0IT0ibnVtYmVyInx8dDwwfHx0PjQyOTQ5NjcyOTUpdGhyb3cgbmV3IEQoIkEgbnVtYmVyIGJldHdlZW4gMCBhbmQgKDJeMzIpLTEgaXMgcmVxdWlyZWQuIik7cmV0dXJuIHR8PXQ+PjEsdHw9dD4+Mix0fD10Pj40LHR8PXQ+PjgsdHw9dD4+MTYsdHw9dD4+MzIsdD0odD4+PjApLSh0Pj4+MSksdH07Q3QuY2xhbXA9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5udW1iZXIoInZhbHVlIix0KSx5LnR5cGVPZi5udW1iZXIoIm1pbiIsZSkseS50eXBlT2YubnVtYmVyKCJtYXgiLG4pLHQ8ZT9lOnQ+bj9uOnR9O1MxPW5ldyBTbS5kZWZhdWx0O0N0LnNldFJhbmRvbU51bWJlclNlZWQ9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IEQoInNlZWQgaXMgcmVxdWlyZWQuIik7UzE9bmV3IFNtLmRlZmF1bHQodCl9O0N0Lm5leHRSYW5kb21OdW1iZXI9ZnVuY3Rpb24oKXtyZXR1cm4gUzEucmFuZG9tKCl9O0N0LnJhbmRvbUJldHdlZW49ZnVuY3Rpb24odCxlKXtyZXR1cm4gQ3QubmV4dFJhbmRvbU51bWJlcigpKihlLXQpK3R9O0N0LmFjb3NDbGFtcGVkPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJ2YWx1ZSBpcyByZXF1aXJlZC4iKTtyZXR1cm4gTWF0aC5hY29zKEN0LmNsYW1wKHQsLTEsMSkpfTtDdC5hc2luQ2xhbXBlZD1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgRCgidmFsdWUgaXMgcmVxdWlyZWQuIik7cmV0dXJuIE1hdGguYXNpbihDdC5jbGFtcCh0LC0xLDEpKX07Q3QuY2hvcmRMZW5ndGg9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgRCgiYW5nbGUgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoInJhZGl1cyBpcyByZXF1aXJlZC4iKTtyZXR1cm4gMiplKk1hdGguc2luKHQqLjUpfTtDdC5sb2dCYXNlPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoIm51bWJlciBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgiYmFzZSBpcyByZXF1aXJlZC4iKTtyZXR1cm4gTWF0aC5sb2codCkvTWF0aC5sb2coZSl9O0N0LmNicnQ9TWF0aC5jYnJ0Pz9mdW5jdGlvbihlKXtsZXQgbj1NYXRoLnBvdyhNYXRoLmFicyhlKSwuMzMzMzMzMzMzMzMzMzMzMyk7cmV0dXJuIGU8MD8tbjpufTtDdC5sb2cyPU1hdGgubG9nMj8/ZnVuY3Rpb24oZSl7cmV0dXJuIE1hdGgubG9nKGUpKk1hdGguTE9HMkV9O0N0LmZvZz1mdW5jdGlvbih0LGUpe2xldCBuPXQqZTtyZXR1cm4gMS1NYXRoLmV4cCgtKG4qbikpfTtDdC5mYXN0QXBwcm94aW1hdGVBdGFuPWZ1bmN0aW9uKHQpe3JldHVybiB5LnR5cGVPZi5udW1iZXIoIngiLHQpLHQqKC0uMTc4NCpNYXRoLmFicyh0KS0uMDY2Myp0KnQrMS4wMzAxKX07Q3QuZmFzdEFwcHJveGltYXRlQXRhbjI9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5udW1iZXIoIngiLHQpLHkudHlwZU9mLm51bWJlcigieSIsZSk7bGV0IG4sbz1NYXRoLmFicyh0KTtuPU1hdGguYWJzKGUpO2xldCByPU1hdGgubWF4KG8sbik7bj1NYXRoLm1pbihvLG4pO2xldCBpPW4vcjtpZihpc05hTihpKSl0aHJvdyBuZXcgRCgiZWl0aGVyIHggb3IgeSBtdXN0IGJlIG5vbnplcm8iKTtyZXR1cm4gbz1DdC5mYXN0QXBwcm94aW1hdGVBdGFuKGkpLG89TWF0aC5hYnMoZSk+TWF0aC5hYnModCk/Q3QuUElfT1ZFUl9UV08tbzpvLG89dDwwP0N0LlBJLW86byxvPWU8MD8tbzpvLG99O1A9Q3R9KTtmdW5jdGlvbiBidCh0LGUsbil7dGhpcy54PXQ/PzAsdGhpcy55PWU/PzAsdGhpcy56PW4/PzB9dmFyIGpsLHgxLHpsLHhtLHd4LGhyLEhjLGEsRHQ9JCgoKT0+e1d0KCk7ZnQoKTtIdCgpO0t0KCk7YnQuZnJvbVNwaGVyaWNhbD1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm9iamVjdCgic3BoZXJpY2FsIix0KSxtKGUpfHwoZT1uZXcgYnQpO2xldCBuPXQuY2xvY2ssbz10LmNvbmUscj10Lm1hZ25pdHVkZT8/MSxpPXIqTWF0aC5zaW4obyk7cmV0dXJuIGUueD1pKk1hdGguY29zKG4pLGUueT1pKk1hdGguc2luKG4pLGUuej1yKk1hdGguY29zKG8pLGV9O2J0LmZyb21FbGVtZW50cz1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4gbShvKT8oby54PXQsby55PWUsby56PW4sbyk6bmV3IGJ0KHQsZSxuKX07YnQuY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLng9dC54LGUueT10LnksZS56PXQueixlKTpuZXcgYnQodC54LHQueSx0LnopfTtidC5mcm9tQ2FydGVzaWFuND1idC5jbG9uZTtidC5wYWNrZWRMZW5ndGg9MztidC5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkseS5kZWZpbmVkKCJhcnJheSIsZSksbj1uPz8wLGVbbisrXT10LngsZVtuKytdPXQueSxlW25dPXQueixlfTtidC51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LmRlZmluZWQoImFycmF5Iix0KSxlPWU/PzAsbShuKXx8KG49bmV3IGJ0KSxuLng9dFtlKytdLG4ueT10W2UrK10sbi56PXRbZV0sbn07YnQucGFja0FycmF5PWZ1bmN0aW9uKHQsZSl7eS5kZWZpbmVkKCJhcnJheSIsdCk7bGV0IG49dC5sZW5ndGgsbz1uKjM7aWYoIW0oZSkpZT1uZXcgQXJyYXkobyk7ZWxzZXtpZighQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGghPT1vKXRocm93IG5ldyBEKCJJZiByZXN1bHQgaXMgYSB0eXBlZCBhcnJheSwgaXQgbXVzdCBoYXZlIGV4YWN0bHkgYXJyYXkubGVuZ3RoICogMyBlbGVtZW50cyIpO2UubGVuZ3RoIT09byYmKGUubGVuZ3RoPW8pfWZvcihsZXQgcj0wO3I8bjsrK3IpYnQucGFjayh0W3JdLGUsciozKTtyZXR1cm4gZX07YnQudW5wYWNrQXJyYXk9ZnVuY3Rpb24odCxlKXtpZih5LmRlZmluZWQoImFycmF5Iix0KSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiYXJyYXkubGVuZ3RoIix0Lmxlbmd0aCwzKSx0Lmxlbmd0aCUzIT09MCl0aHJvdyBuZXcgRCgiYXJyYXkgbGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzLiIpO2xldCBuPXQubGVuZ3RoO20oZSk/ZS5sZW5ndGg9bi8zOmU9bmV3IEFycmF5KG4vMyk7Zm9yKGxldCBvPTA7bzxuO28rPTMpe2xldCByPW8vMztlW3JdPWJ0LnVucGFjayh0LG8sZVtyXSl9cmV0dXJuIGV9O2J0LmZyb21BcnJheT1idC51bnBhY2s7YnQubWF4aW11bUNvbXBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLE1hdGgubWF4KHQueCx0LnksdC56KX07YnQubWluaW11bUNvbXBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLE1hdGgubWluKHQueCx0LnksdC56KX07YnQubWluaW11bUJ5Q29tcG9uZW50PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJmaXJzdCIsdCkseS50eXBlT2Yub2JqZWN0KCJzZWNvbmQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9TWF0aC5taW4odC54LGUueCksbi55PU1hdGgubWluKHQueSxlLnkpLG4uej1NYXRoLm1pbih0LnosZS56KSxufTtidC5tYXhpbXVtQnlDb21wb25lbnQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImZpcnN0Iix0KSx5LnR5cGVPZi5vYmplY3QoInNlY29uZCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ueD1NYXRoLm1heCh0LngsZS54KSxuLnk9TWF0aC5tYXgodC55LGUueSksbi56PU1hdGgubWF4KHQueixlLnopLG59O2J0LmNsYW1wPWZ1bmN0aW9uKHQsZSxuLG8pe3kudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHkudHlwZU9mLm9iamVjdCgibWluIixlKSx5LnR5cGVPZi5vYmplY3QoIm1heCIsbikseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG8pO2xldCByPVAuY2xhbXAodC54LGUueCxuLngpLGk9UC5jbGFtcCh0LnksZS55LG4ueSkscz1QLmNsYW1wKHQueixlLnosbi56KTtyZXR1cm4gby54PXIsby55PWksby56PXMsb307YnQubWFnbml0dWRlU3F1YXJlZD1mdW5jdGlvbih0KXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLHQueCp0LngrdC55KnQueSt0LnoqdC56fTtidC5tYWduaXR1ZGU9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguc3FydChidC5tYWduaXR1ZGVTcXVhcmVkKHQpKX07amw9bmV3IGJ0O2J0LmRpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksYnQuc3VidHJhY3QodCxlLGpsKSxidC5tYWduaXR1ZGUoamwpfTtidC5kaXN0YW5jZVNxdWFyZWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxidC5zdWJ0cmFjdCh0LGUsamwpLGJ0Lm1hZ25pdHVkZVNxdWFyZWQoamwpfTtidC5ub3JtYWxpemU9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBuPWJ0Lm1hZ25pdHVkZSh0KTtpZihlLng9dC54L24sZS55PXQueS9uLGUuej10Lnovbixpc05hTihlLngpfHxpc05hTihlLnkpfHxpc05hTihlLnopKXRocm93IG5ldyBEKCJub3JtYWxpemVkIHJlc3VsdCBpcyBub3QgYSBudW1iZXIiKTtyZXR1cm4gZX07YnQuZG90PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksdC54KmUueCt0LnkqZS55K3QueiplLnp9O2J0Lm11bHRpcGx5Q29tcG9uZW50cz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ueD10LngqZS54LG4ueT10LnkqZS55LG4uej10LnoqZS56LG59O2J0LmRpdmlkZUNvbXBvbmVudHM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54L2UueCxuLnk9dC55L2UueSxuLno9dC56L2UueixufTtidC5hZGQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54K2UueCxuLnk9dC55K2UueSxuLno9dC56K2UueixufTtidC5zdWJ0cmFjdD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ueD10LngtZS54LG4ueT10LnktZS55LG4uej10LnotZS56LG59O2J0Lm11bHRpcGx5QnlTY2FsYXI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkseS50eXBlT2YubnVtYmVyKCJzY2FsYXIiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54KmUsbi55PXQueSplLG4uej10LnoqZSxufTtidC5kaXZpZGVCeVNjYWxhcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSx5LnR5cGVPZi5udW1iZXIoInNjYWxhciIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ueD10LngvZSxuLnk9dC55L2Usbi56PXQuei9lLG59O2J0Lm5lZ2F0ZT1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLGUueD0tdC54LGUueT0tdC55LGUuej0tdC56LGV9O2J0LmFicz1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLGUueD1NYXRoLmFicyh0LngpLGUueT1NYXRoLmFicyh0LnkpLGUuej1NYXRoLmFicyh0LnopLGV9O3gxPW5ldyBidDtidC5sZXJwPWZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInN0YXJ0Iix0KSx5LnR5cGVPZi5vYmplY3QoImVuZCIsZSkseS50eXBlT2YubnVtYmVyKCJ0IixuKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbyksYnQubXVsdGlwbHlCeVNjYWxhcihlLG4seDEpLG89YnQubXVsdGlwbHlCeVNjYWxhcih0LDEtbixvKSxidC5hZGQoeDEsbyxvKX07emw9bmV3IGJ0LHhtPW5ldyBidDtidC5hbmdsZUJldHdlZW49ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLGJ0Lm5vcm1hbGl6ZSh0LHpsKSxidC5ub3JtYWxpemUoZSx4bSk7bGV0IG49YnQuZG90KHpsLHhtKSxvPWJ0Lm1hZ25pdHVkZShidC5jcm9zcyh6bCx4bSx6bCkpO3JldHVybiBNYXRoLmF0YW4yKG8sbil9O3d4PW5ldyBidDtidC5tb3N0T3J0aG9nb25hbEF4aXM9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBuPWJ0Lm5vcm1hbGl6ZSh0LHd4KTtyZXR1cm4gYnQuYWJzKG4sbiksbi54PD1uLnk/bi54PD1uLno/ZT1idC5jbG9uZShidC5VTklUX1gsZSk6ZT1idC5jbG9uZShidC5VTklUX1osZSk6bi55PD1uLno/ZT1idC5jbG9uZShidC5VTklUX1ksZSk6ZT1idC5jbG9uZShidC5VTklUX1osZSksZX07YnQucHJvamVjdFZlY3Rvcj1mdW5jdGlvbih0LGUsbil7eS5kZWZpbmVkKCJhIix0KSx5LmRlZmluZWQoImIiLGUpLHkuZGVmaW5lZCgicmVzdWx0IixuKTtsZXQgbz1idC5kb3QodCxlKS9idC5kb3QoZSxlKTtyZXR1cm4gYnQubXVsdGlwbHlCeVNjYWxhcihlLG8sbil9O2J0LmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmdC54PT09ZS54JiZ0Lnk9PT1lLnkmJnQuej09PWUuen07YnQuZXF1YWxzQXJyYXk9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0Lng9PT1lW25dJiZ0Lnk9PT1lW24rMV0mJnQuej09PWVbbisyXX07YnQuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJlAuZXF1YWxzRXBzaWxvbih0LngsZS54LG4sbykmJlAuZXF1YWxzRXBzaWxvbih0LnksZS55LG4sbykmJlAuZXF1YWxzRXBzaWxvbih0LnosZS56LG4sbyl9O2J0LmNyb3NzPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz10Lngscj10LnksaT10Lnoscz1lLngsZj1lLnksdT1lLnosYz1yKnUtaSpmLGw9aSpzLW8qdSxwPW8qZi1yKnM7cmV0dXJuIG4ueD1jLG4ueT1sLG4uej1wLG59O2J0Lm1pZHBvaW50PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksbi54PSh0LngrZS54KSouNSxuLnk9KHQueStlLnkpKi41LG4uej0odC56K2UueikqLjUsbn07YnQuZnJvbURlZ3JlZXM9ZnVuY3Rpb24odCxlLG4sbyxyKXtyZXR1cm4geS50eXBlT2YubnVtYmVyKCJsb25naXR1ZGUiLHQpLHkudHlwZU9mLm51bWJlcigibGF0aXR1ZGUiLGUpLHQ9UC50b1JhZGlhbnModCksZT1QLnRvUmFkaWFucyhlKSxidC5mcm9tUmFkaWFucyh0LGUsbixvLHIpfTtocj1uZXcgYnQsSGM9bmV3IGJ0O2J0Ll9lbGxpcHNvaWRSYWRpaVNxdWFyZWQ9bmV3IGJ0KDYzNzgxMzcqNjM3ODEzNyw2Mzc4MTM3KjYzNzgxMzcsNjM1Njc1MjMxNDI0NTE3OWUtOSo2MzU2NzUyMzE0MjQ1MTc5ZS05KTtidC5mcm9tUmFkaWFucz1mdW5jdGlvbih0LGUsbixvLHIpe3kudHlwZU9mLm51bWJlcigibG9uZ2l0dWRlIix0KSx5LnR5cGVPZi5udW1iZXIoImxhdGl0dWRlIixlKSxuPW4/PzA7bGV0IGk9bShvKT9vLnJhZGlpU3F1YXJlZDpidC5fZWxsaXBzb2lkUmFkaWlTcXVhcmVkLHM9TWF0aC5jb3MoZSk7aHIueD1zKk1hdGguY29zKHQpLGhyLnk9cypNYXRoLnNpbih0KSxoci56PU1hdGguc2luKGUpLGhyPWJ0Lm5vcm1hbGl6ZShocixociksYnQubXVsdGlwbHlDb21wb25lbnRzKGksaHIsSGMpO2xldCBmPU1hdGguc3FydChidC5kb3QoaHIsSGMpKTtyZXR1cm4gSGM9YnQuZGl2aWRlQnlTY2FsYXIoSGMsZixIYyksaHI9YnQubXVsdGlwbHlCeVNjYWxhcihocixuLGhyKSxtKHIpfHwocj1uZXcgYnQpLGJ0LmFkZChIYyxocixyKX07YnQuZnJvbURlZ3JlZXNBcnJheT1mdW5jdGlvbih0LGUsbil7aWYoeS5kZWZpbmVkKCJjb29yZGluYXRlcyIsdCksdC5sZW5ndGg8Mnx8dC5sZW5ndGglMiE9PTApdGhyb3cgbmV3IEQoInRoZSBudW1iZXIgb2YgY29vcmRpbmF0ZXMgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDIgYW5kIGF0IGxlYXN0IDIiKTtsZXQgbz10Lmxlbmd0aDttKG4pP24ubGVuZ3RoPW8vMjpuPW5ldyBBcnJheShvLzIpO2ZvcihsZXQgcj0wO3I8bztyKz0yKXtsZXQgaT10W3JdLHM9dFtyKzFdLGY9ci8yO25bZl09YnQuZnJvbURlZ3JlZXMoaSxzLDAsZSxuW2ZdKX1yZXR1cm4gbn07YnQuZnJvbVJhZGlhbnNBcnJheT1mdW5jdGlvbih0LGUsbil7aWYoeS5kZWZpbmVkKCJjb29yZGluYXRlcyIsdCksdC5sZW5ndGg8Mnx8dC5sZW5ndGglMiE9PTApdGhyb3cgbmV3IEQoInRoZSBudW1iZXIgb2YgY29vcmRpbmF0ZXMgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDIgYW5kIGF0IGxlYXN0IDIiKTtsZXQgbz10Lmxlbmd0aDttKG4pP24ubGVuZ3RoPW8vMjpuPW5ldyBBcnJheShvLzIpO2ZvcihsZXQgcj0wO3I8bztyKz0yKXtsZXQgaT10W3JdLHM9dFtyKzFdLGY9ci8yO25bZl09YnQuZnJvbVJhZGlhbnMoaSxzLDAsZSxuW2ZdKX1yZXR1cm4gbn07YnQuZnJvbURlZ3JlZXNBcnJheUhlaWdodHM9ZnVuY3Rpb24odCxlLG4pe2lmKHkuZGVmaW5lZCgiY29vcmRpbmF0ZXMiLHQpLHQubGVuZ3RoPDN8fHQubGVuZ3RoJTMhPT0wKXRocm93IG5ldyBEKCJ0aGUgbnVtYmVyIG9mIGNvb3JkaW5hdGVzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzIGFuZCBhdCBsZWFzdCAzIik7bGV0IG89dC5sZW5ndGg7bShuKT9uLmxlbmd0aD1vLzM6bj1uZXcgQXJyYXkoby8zKTtmb3IobGV0IHI9MDtyPG87cis9Myl7bGV0IGk9dFtyXSxzPXRbcisxXSxmPXRbcisyXSx1PXIvMztuW3VdPWJ0LmZyb21EZWdyZWVzKGkscyxmLGUsblt1XSl9cmV0dXJuIG59O2J0LmZyb21SYWRpYW5zQXJyYXlIZWlnaHRzPWZ1bmN0aW9uKHQsZSxuKXtpZih5LmRlZmluZWQoImNvb3JkaW5hdGVzIix0KSx0Lmxlbmd0aDwzfHx0Lmxlbmd0aCUzIT09MCl0aHJvdyBuZXcgRCgidGhlIG51bWJlciBvZiBjb29yZGluYXRlcyBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMyBhbmQgYXQgbGVhc3QgMyIpO2xldCBvPXQubGVuZ3RoO20obik/bi5sZW5ndGg9by8zOm49bmV3IEFycmF5KG8vMyk7Zm9yKGxldCByPTA7cjxvO3IrPTMpe2xldCBpPXRbcl0scz10W3IrMV0sZj10W3IrMl0sdT1yLzM7blt1XT1idC5mcm9tUmFkaWFucyhpLHMsZixlLG5bdV0pfXJldHVybiBufTtidC5aRVJPPU9iamVjdC5mcmVlemUobmV3IGJ0KDAsMCwwKSk7YnQuT05FPU9iamVjdC5mcmVlemUobmV3IGJ0KDEsMSwxKSk7YnQuVU5JVF9YPU9iamVjdC5mcmVlemUobmV3IGJ0KDEsMCwwKSk7YnQuVU5JVF9ZPU9iamVjdC5mcmVlemUobmV3IGJ0KDAsMSwwKSk7YnQuVU5JVF9aPU9iamVjdC5mcmVlemUobmV3IGJ0KDAsMCwxKSk7YnQucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBidC5jbG9uZSh0aGlzLHQpfTtidC5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBidC5lcXVhbHModGhpcyx0KX07YnQucHJvdG90eXBlLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLG4pe3JldHVybiBidC5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlLG4pfTtidC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5gKCR7dGhpcy54fSwgJHt0aGlzLnl9LCAke3RoaXMuen0pYH07YT1idH0pO2Z1bmN0aW9uIEV4KHQsZSxuLG8scil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImNhcnRlc2lhbiBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgib25lT3ZlclJhZGlpIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBEKCJvbmVPdmVyUmFkaWlTcXVhcmVkIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG8pKXRocm93IG5ldyBEKCJjZW50ZXJUb2xlcmFuY2VTcXVhcmVkIGlzIHJlcXVpcmVkLiIpO2xldCBpPXQueCxzPXQueSxmPXQueix1PWUueCxjPWUueSxsPWUueixwPWkqaSp1KnUsZD1zKnMqYypjLGg9ZipmKmwqbCxfPXArZCtoLGc9TWF0aC5zcXJ0KDEvXyksYj1hLm11bHRpcGx5QnlTY2FsYXIodCxnLFR4KTtpZihfPG8pcmV0dXJuIGlzRmluaXRlKGcpP2EuY2xvbmUoYixyKTp2b2lkIDA7bGV0IHc9bi54LE89bi55LEU9bi56LFQ9T3g7VC54PWIueCp3KjIsVC55PWIueSpPKjIsVC56PWIueipFKjI7bGV0IHg9KDEtZykqYS5tYWduaXR1ZGUodCkvKC41KmEubWFnbml0dWRlKFQpKSxNPTAsTixGLEksdixCLEEsUyxDLEwseixqO2Rve3gtPU0sST0xLygxK3gqdyksdj0xLygxK3gqTyksQj0xLygxK3gqRSksQT1JKkksUz12KnYsQz1CKkIsTD1BKkksej1TKnYsaj1DKkIsTj1wKkErZCpTK2gqQy0xLEY9cCpMKncrZCp6Kk8raCpqKkU7bGV0IGs9LTIqRjtNPU4va313aGlsZShNYXRoLmFicyhOKT5QLkVQU0lMT04xMik7cmV0dXJuIG0ocik/KHIueD1pKkksci55PXMqdixyLno9ZipCLHIpOm5ldyBhKGkqSSxzKnYsZipCKX12YXIgVHgsT3gsSGwsQ209JCgoKT0+e0R0KCk7ZnQoKTtIdCgpO0t0KCk7VHg9bmV3IGEsT3g9bmV3IGE7SGw9RXh9KTtmdW5jdGlvbiBfbih0LGUsbil7dGhpcy5sb25naXR1ZGU9dD8/MCx0aGlzLmxhdGl0dWRlPWU/PzAsdGhpcy5oZWlnaHQ9bj8/MH12YXIgUngsU3gseHgsY3QsSWU9JCgoKT0+e0R0KCk7V3QoKTtmdCgpO0t0KCk7Q20oKTtfbi5mcm9tUmFkaWFucz1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4geS50eXBlT2YubnVtYmVyKCJsb25naXR1ZGUiLHQpLHkudHlwZU9mLm51bWJlcigibGF0aXR1ZGUiLGUpLG49bj8/MCxtKG8pPyhvLmxvbmdpdHVkZT10LG8ubGF0aXR1ZGU9ZSxvLmhlaWdodD1uLG8pOm5ldyBfbih0LGUsbil9O19uLmZyb21EZWdyZWVzPWZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB5LnR5cGVPZi5udW1iZXIoImxvbmdpdHVkZSIsdCkseS50eXBlT2YubnVtYmVyKCJsYXRpdHVkZSIsZSksdD1QLnRvUmFkaWFucyh0KSxlPVAudG9SYWRpYW5zKGUpLF9uLmZyb21SYWRpYW5zKHQsZSxuLG8pfTtSeD1uZXcgYSxTeD1uZXcgYSx4eD1uZXcgYTtfbi5fZWxsaXBzb2lkT25lT3ZlclJhZGlpPW5ldyBhKDEvNjM3ODEzNywxLzYzNzgxMzcsMS82MzU2NzUyMzE0MjQ1MTc5ZS05KTtfbi5fZWxsaXBzb2lkT25lT3ZlclJhZGlpU3F1YXJlZD1uZXcgYSgxLyg2Mzc4MTM3KjYzNzgxMzcpLDEvKDYzNzgxMzcqNjM3ODEzNyksMS8oNjM1Njc1MjMxNDI0NTE3OWUtOSo2MzU2NzUyMzE0MjQ1MTc5ZS05KSk7X24uX2VsbGlwc29pZENlbnRlclRvbGVyYW5jZVNxdWFyZWQ9UC5FUFNJTE9OMTtfbi5mcm9tQ2FydGVzaWFuPWZ1bmN0aW9uKHQsZSxuKXtsZXQgbz1tKGUpP2Uub25lT3ZlclJhZGlpOl9uLl9lbGxpcHNvaWRPbmVPdmVyUmFkaWkscj1tKGUpP2Uub25lT3ZlclJhZGlpU3F1YXJlZDpfbi5fZWxsaXBzb2lkT25lT3ZlclJhZGlpU3F1YXJlZCxpPW0oZSk/ZS5fY2VudGVyVG9sZXJhbmNlU3F1YXJlZDpfbi5fZWxsaXBzb2lkQ2VudGVyVG9sZXJhbmNlU3F1YXJlZCxzPUhsKHQsbyxyLGksU3gpO2lmKCFtKHMpKXJldHVybjtsZXQgZj1hLm11bHRpcGx5Q29tcG9uZW50cyhzLHIsUngpO2Y9YS5ub3JtYWxpemUoZixmKTtsZXQgdT1hLnN1YnRyYWN0KHQscyx4eCksYz1NYXRoLmF0YW4yKGYueSxmLngpLGw9TWF0aC5hc2luKGYueikscD1QLnNpZ24oYS5kb3QodSx0KSkqYS5tYWduaXR1ZGUodSk7cmV0dXJuIG0obik/KG4ubG9uZ2l0dWRlPWMsbi5sYXRpdHVkZT1sLG4uaGVpZ2h0PXAsbik6bmV3IF9uKGMsbCxwKX07X24udG9DYXJ0ZXNpYW49ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LmRlZmluZWQoImNhcnRvZ3JhcGhpYyIsdCksYS5mcm9tUmFkaWFucyh0LmxvbmdpdHVkZSx0LmxhdGl0dWRlLHQuaGVpZ2h0LGUsbil9O19uLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZS5sb25naXR1ZGU9dC5sb25naXR1ZGUsZS5sYXRpdHVkZT10LmxhdGl0dWRlLGUuaGVpZ2h0PXQuaGVpZ2h0LGUpOm5ldyBfbih0LmxvbmdpdHVkZSx0LmxhdGl0dWRlLHQuaGVpZ2h0KX07X24uZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0LmxvbmdpdHVkZT09PWUubG9uZ2l0dWRlJiZ0LmxhdGl0dWRlPT09ZS5sYXRpdHVkZSYmdC5oZWlnaHQ9PT1lLmhlaWdodH07X24uZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG49bj8/MCx0PT09ZXx8bSh0KSYmbShlKSYmTWF0aC5hYnModC5sb25naXR1ZGUtZS5sb25naXR1ZGUpPD1uJiZNYXRoLmFicyh0LmxhdGl0dWRlLWUubGF0aXR1ZGUpPD1uJiZNYXRoLmFicyh0LmhlaWdodC1lLmhlaWdodCk8PW59O19uLlpFUk89T2JqZWN0LmZyZWV6ZShuZXcgX24oMCwwLDApKTtfbi5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIF9uLmNsb25lKHRoaXMsdCl9O19uLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIF9uLmVxdWFscyh0aGlzLHQpfTtfbi5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUpe3JldHVybiBfbi5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlKX07X24ucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuYCgke3RoaXMubG9uZ2l0dWRlfSwgJHt0aGlzLmxhdGl0dWRlfSwgJHt0aGlzLmhlaWdodH0pYH07Y3Q9X259KTtmdW5jdGlvbiBqdCh0LGUpe3RoaXMueD10Pz8wLHRoaXMueT1lPz8wfXZhciBxbCxDMSxQMSxNMSxDeCxKLGtlPSQoKCk9PntXdCgpO2Z0KCk7SHQoKTtLdCgpO2p0LmZyb21FbGVtZW50cz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG0obik/KG4ueD10LG4ueT1lLG4pOm5ldyBqdCh0LGUpfTtqdC5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGUueD10LngsZS55PXQueSxlKTpuZXcganQodC54LHQueSl9O2p0LmZyb21DYXJ0ZXNpYW4zPWp0LmNsb25lO2p0LmZyb21DYXJ0ZXNpYW40PWp0LmNsb25lO2p0LnBhY2tlZExlbmd0aD0yO2p0LnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzAsZVtuKytdPXQueCxlW25dPXQueSxlfTtqdC51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LmRlZmluZWQoImFycmF5Iix0KSxlPWU/PzAsbShuKXx8KG49bmV3IGp0KSxuLng9dFtlKytdLG4ueT10W2VdLG59O2p0LnBhY2tBcnJheT1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgiYXJyYXkiLHQpO2xldCBuPXQubGVuZ3RoLG89bioyO2lmKCFtKGUpKWU9bmV3IEFycmF5KG8pO2Vsc2V7aWYoIUFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoIT09byl0aHJvdyBuZXcgRCgiSWYgcmVzdWx0IGlzIGEgdHlwZWQgYXJyYXksIGl0IG11c3QgaGF2ZSBleGFjdGx5IGFycmF5Lmxlbmd0aCAqIDIgZWxlbWVudHMiKTtlLmxlbmd0aCE9PW8mJihlLmxlbmd0aD1vKX1mb3IobGV0IHI9MDtyPG47KytyKWp0LnBhY2sodFtyXSxlLHIqMik7cmV0dXJuIGV9O2p0LnVucGFja0FycmF5PWZ1bmN0aW9uKHQsZSl7aWYoeS5kZWZpbmVkKCJhcnJheSIsdCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImFycmF5Lmxlbmd0aCIsdC5sZW5ndGgsMiksdC5sZW5ndGglMiE9PTApdGhyb3cgbmV3IEQoImFycmF5IGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMi4iKTtsZXQgbj10Lmxlbmd0aDttKGUpP2UubGVuZ3RoPW4vMjplPW5ldyBBcnJheShuLzIpO2ZvcihsZXQgbz0wO288bjtvKz0yKXtsZXQgcj1vLzI7ZVtyXT1qdC51bnBhY2sodCxvLGVbcl0pfXJldHVybiBlfTtqdC5mcm9tQXJyYXk9anQudW5wYWNrO2p0Lm1heGltdW1Db21wb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxNYXRoLm1heCh0LngsdC55KX07anQubWluaW11bUNvbXBvbmVudD1mdW5jdGlvbih0KXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLE1hdGgubWluKHQueCx0LnkpfTtqdC5taW5pbXVtQnlDb21wb25lbnQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImZpcnN0Iix0KSx5LnR5cGVPZi5vYmplY3QoInNlY29uZCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ueD1NYXRoLm1pbih0LngsZS54KSxuLnk9TWF0aC5taW4odC55LGUueSksbn07anQubWF4aW11bUJ5Q29tcG9uZW50PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJmaXJzdCIsdCkseS50eXBlT2Yub2JqZWN0KCJzZWNvbmQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9TWF0aC5tYXgodC54LGUueCksbi55PU1hdGgubWF4KHQueSxlLnkpLG59O2p0LmNsYW1wPWZ1bmN0aW9uKHQsZSxuLG8pe3kudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHkudHlwZU9mLm9iamVjdCgibWluIixlKSx5LnR5cGVPZi5vYmplY3QoIm1heCIsbikseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG8pO2xldCByPVAuY2xhbXAodC54LGUueCxuLngpLGk9UC5jbGFtcCh0LnksZS55LG4ueSk7cmV0dXJuIG8ueD1yLG8ueT1pLG99O2p0Lm1hZ25pdHVkZVNxdWFyZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSx0LngqdC54K3QueSp0Lnl9O2p0Lm1hZ25pdHVkZT1mdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5zcXJ0KGp0Lm1hZ25pdHVkZVNxdWFyZWQodCkpfTtxbD1uZXcganQ7anQuZGlzdGFuY2U9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxqdC5zdWJ0cmFjdCh0LGUscWwpLGp0Lm1hZ25pdHVkZShxbCl9O2p0LmRpc3RhbmNlU3F1YXJlZD1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLGp0LnN1YnRyYWN0KHQsZSxxbCksanQubWFnbml0dWRlU3F1YXJlZChxbCl9O2p0Lm5vcm1hbGl6ZT1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IG49anQubWFnbml0dWRlKHQpO2lmKGUueD10LngvbixlLnk9dC55L24saXNOYU4oZS54KXx8aXNOYU4oZS55KSl0aHJvdyBuZXcgRCgibm9ybWFsaXplZCByZXN1bHQgaXMgbm90IGEgbnVtYmVyIik7cmV0dXJuIGV9O2p0LmRvdD1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHQueCplLngrdC55KmUueX07anQuY3Jvc3M9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx0LngqZS55LXQueSplLnh9O2p0Lm11bHRpcGx5Q29tcG9uZW50cz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ueD10LngqZS54LG4ueT10LnkqZS55LG59O2p0LmRpdmlkZUNvbXBvbmVudHM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54L2UueCxuLnk9dC55L2UueSxufTtqdC5hZGQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54K2UueCxuLnk9dC55K2UueSxufTtqdC5zdWJ0cmFjdD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ueD10LngtZS54LG4ueT10LnktZS55LG59O2p0Lm11bHRpcGx5QnlTY2FsYXI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkseS50eXBlT2YubnVtYmVyKCJzY2FsYXIiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54KmUsbi55PXQueSplLG59O2p0LmRpdmlkZUJ5U2NhbGFyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLHkudHlwZU9mLm51bWJlcigic2NhbGFyIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksbi54PXQueC9lLG4ueT10LnkvZSxufTtqdC5uZWdhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxlLng9LXQueCxlLnk9LXQueSxlfTtqdC5hYnM9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxlLng9TWF0aC5hYnModC54KSxlLnk9TWF0aC5hYnModC55KSxlfTtDMT1uZXcganQ7anQubGVycD1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJzdGFydCIsdCkseS50eXBlT2Yub2JqZWN0KCJlbmQiLGUpLHkudHlwZU9mLm51bWJlcigidCIsbikseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG8pLGp0Lm11bHRpcGx5QnlTY2FsYXIoZSxuLEMxKSxvPWp0Lm11bHRpcGx5QnlTY2FsYXIodCwxLW4sbyksanQuYWRkKEMxLG8sbyl9O1AxPW5ldyBqdCxNMT1uZXcganQ7anQuYW5nbGVCZXR3ZWVuPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksanQubm9ybWFsaXplKHQsUDEpLGp0Lm5vcm1hbGl6ZShlLE0xKSxQLmFjb3NDbGFtcGVkKGp0LmRvdChQMSxNMSkpfTtDeD1uZXcganQ7anQubW9zdE9ydGhvZ29uYWxBeGlzPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgbj1qdC5ub3JtYWxpemUodCxDeCk7cmV0dXJuIGp0LmFicyhuLG4pLG4ueDw9bi55P2U9anQuY2xvbmUoanQuVU5JVF9YLGUpOmU9anQuY2xvbmUoanQuVU5JVF9ZLGUpLGV9O2p0LmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmdC54PT09ZS54JiZ0Lnk9PT1lLnl9O2p0LmVxdWFsc0FycmF5PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdC54PT09ZVtuXSYmdC55PT09ZVtuKzFdfTtqdC5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmUC5lcXVhbHNFcHNpbG9uKHQueCxlLngsbixvKSYmUC5lcXVhbHNFcHNpbG9uKHQueSxlLnksbixvKX07anQuWkVSTz1PYmplY3QuZnJlZXplKG5ldyBqdCgwLDApKTtqdC5PTkU9T2JqZWN0LmZyZWV6ZShuZXcganQoMSwxKSk7anQuVU5JVF9YPU9iamVjdC5mcmVlemUobmV3IGp0KDEsMCkpO2p0LlVOSVRfWT1PYmplY3QuZnJlZXplKG5ldyBqdCgwLDEpKTtqdC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIGp0LmNsb25lKHRoaXMsdCl9O2p0LnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIGp0LmVxdWFscyh0aGlzLHQpfTtqdC5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGp0LmVxdWFsc0Vwc2lsb24odGhpcyx0LGUsbil9O2p0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybmAoJHt0aGlzLnh9LCAke3RoaXMueX0pYH07Sj1qdH0pO2Z1bmN0aW9uIEkxKHQsZSxuLG8pe2U9ZT8/MCxuPW4/PzAsbz1vPz8wLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJ4IixlLDApLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJ5IixuLDApLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJ6IixvLDApLHQuX3JhZGlpPW5ldyBhKGUsbixvKSx0Ll9yYWRpaVNxdWFyZWQ9bmV3IGEoZSplLG4qbixvKm8pLHQuX3JhZGlpVG9UaGVGb3VydGg9bmV3IGEoZSplKmUqZSxuKm4qbipuLG8qbypvKm8pLHQuX29uZU92ZXJSYWRpaT1uZXcgYShlPT09MD8wOjEvZSxuPT09MD8wOjEvbixvPT09MD8wOjEvbyksdC5fb25lT3ZlclJhZGlpU3F1YXJlZD1uZXcgYShlPT09MD8wOjEvKGUqZSksbj09PTA/MDoxLyhuKm4pLG89PT0wPzA6MS8obypvKSksdC5fbWluaW11bVJhZGl1cz1NYXRoLm1pbihlLG4sbyksdC5fbWF4aW11bVJhZGl1cz1NYXRoLm1heChlLG4sbyksdC5fY2VudGVyVG9sZXJhbmNlU3F1YXJlZD1QLkVQU0lMT04xLHQuX3JhZGlpU3F1YXJlZC56IT09MCYmKHQuX3NxdWFyZWRYT3ZlclNxdWFyZWRaPXQuX3JhZGlpU3F1YXJlZC54L3QuX3JhZGlpU3F1YXJlZC56KX1mdW5jdGlvbiBDZSh0LGUsbil7dGhpcy5fcmFkaWk9dm9pZCAwLHRoaXMuX3JhZGlpU3F1YXJlZD12b2lkIDAsdGhpcy5fcmFkaWlUb1RoZUZvdXJ0aD12b2lkIDAsdGhpcy5fb25lT3ZlclJhZGlpPXZvaWQgMCx0aGlzLl9vbmVPdmVyUmFkaWlTcXVhcmVkPXZvaWQgMCx0aGlzLl9taW5pbXVtUmFkaXVzPXZvaWQgMCx0aGlzLl9tYXhpbXVtUmFkaXVzPXZvaWQgMCx0aGlzLl9jZW50ZXJUb2xlcmFuY2VTcXVhcmVkPXZvaWQgMCx0aGlzLl9zcXVhcmVkWE92ZXJTcXVhcmVkWj12b2lkIDAsSTEodGhpcyx0LGUsbil9ZnVuY3Rpb24gTjEodCxlLG4pe3kudHlwZU9mLm51bWJlcigiYSIsdCkseS50eXBlT2YubnVtYmVyKCJiIixlKSx5LnR5cGVPZi5mdW5jKCJmdW5jIixuKTtsZXQgbz0uNSooZSt0KSxyPS41KihlLXQpLGk9MDtmb3IobGV0IHM9MDtzPDU7cysrKXtsZXQgZj1yKkx4W3NdO2krPUR4W3NdKihuKG8rZikrbihvLWYpKX1yZXR1cm4gaSo9cixpfXZhciBQeCxNeCxOeCxJeCx2eCxGeCxMeCxEeCxZLCR0PSQoKCk9PntrZSgpO0R0KCk7SWUoKTtXdCgpO2Z0KCk7SHQoKTtLdCgpO0NtKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoQ2UucHJvdG90eXBlLHtyYWRpaTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JhZGlpfX0scmFkaWlTcXVhcmVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmFkaWlTcXVhcmVkfX0scmFkaWlUb1RoZUZvdXJ0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JhZGlpVG9UaGVGb3VydGh9fSxvbmVPdmVyUmFkaWk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vbmVPdmVyUmFkaWl9fSxvbmVPdmVyUmFkaWlTcXVhcmVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fb25lT3ZlclJhZGlpU3F1YXJlZH19LG1pbmltdW1SYWRpdXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9taW5pbXVtUmFkaXVzfX0sbWF4aW11bVJhZGl1czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21heGltdW1SYWRpdXN9fX0pO0NlLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpcmV0dXJuO2xldCBuPXQuX3JhZGlpO3JldHVybiBtKGUpPyhhLmNsb25lKG4sZS5fcmFkaWkpLGEuY2xvbmUodC5fcmFkaWlTcXVhcmVkLGUuX3JhZGlpU3F1YXJlZCksYS5jbG9uZSh0Ll9yYWRpaVRvVGhlRm91cnRoLGUuX3JhZGlpVG9UaGVGb3VydGgpLGEuY2xvbmUodC5fb25lT3ZlclJhZGlpLGUuX29uZU92ZXJSYWRpaSksYS5jbG9uZSh0Ll9vbmVPdmVyUmFkaWlTcXVhcmVkLGUuX29uZU92ZXJSYWRpaVNxdWFyZWQpLGUuX21pbmltdW1SYWRpdXM9dC5fbWluaW11bVJhZGl1cyxlLl9tYXhpbXVtUmFkaXVzPXQuX21heGltdW1SYWRpdXMsZS5fY2VudGVyVG9sZXJhbmNlU3F1YXJlZD10Ll9jZW50ZXJUb2xlcmFuY2VTcXVhcmVkLGUpOm5ldyBDZShuLngsbi55LG4ueil9O0NlLmZyb21DYXJ0ZXNpYW4zPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG0oZSl8fChlPW5ldyBDZSksbSh0KSYmSTEoZSx0LngsdC55LHQueiksZX07Q2UuV0dTODQ9T2JqZWN0LmZyZWV6ZShuZXcgQ2UoNjM3ODEzNyw2Mzc4MTM3LDYzNTY3NTIzMTQyNDUxNzllLTkpKTtDZS5VTklUX1NQSEVSRT1PYmplY3QuZnJlZXplKG5ldyBDZSgxLDEsMSkpO0NlLk1PT049T2JqZWN0LmZyZWV6ZShuZXcgQ2UoUC5MVU5BUl9SQURJVVMsUC5MVU5BUl9SQURJVVMsUC5MVU5BUl9SQURJVVMpKTtDZS5fZGVmYXVsdD1DZS5XR1M4NDtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhDZSx7ZGVmYXVsdDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIENlLl9kZWZhdWx0fSxzZXQ6ZnVuY3Rpb24odCl7eS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCksQ2UuX2RlZmF1bHQ9dCxhLl9lbGxpcHNvaWRSYWRpaVNxdWFyZWQ9dC5yYWRpaVNxdWFyZWQsY3QuX2VsbGlwc29pZE9uZU92ZXJSYWRpaT10Lm9uZU92ZXJSYWRpaSxjdC5fZWxsaXBzb2lkT25lT3ZlclJhZGlpU3F1YXJlZD10Lm9uZU92ZXJSYWRpaVNxdWFyZWQsY3QuX2VsbGlwc29pZENlbnRlclRvbGVyYW5jZVNxdWFyZWQ9dC5fY2VudGVyVG9sZXJhbmNlU3F1YXJlZH19fSk7Q2UucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBDZS5jbG9uZSh0aGlzLHQpfTtDZS5wYWNrZWRMZW5ndGg9YS5wYWNrZWRMZW5ndGg7Q2UucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHkuZGVmaW5lZCgiYXJyYXkiLGUpLG49bj8/MCxhLnBhY2sodC5fcmFkaWksZSxuKSxlfTtDZS51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3kuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MDtsZXQgbz1hLnVucGFjayh0LGUpO3JldHVybiBDZS5mcm9tQ2FydGVzaWFuMyhvLG4pfTtDZS5wcm90b3R5cGUuZ2VvY2VudHJpY1N1cmZhY2VOb3JtYWw9YS5ub3JtYWxpemU7Q2UucHJvdG90eXBlLmdlb2RldGljU3VyZmFjZU5vcm1hbENhcnRvZ3JhcGhpYz1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm9iamVjdCgiY2FydG9ncmFwaGljIix0KTtsZXQgbj10LmxvbmdpdHVkZSxvPXQubGF0aXR1ZGUscj1NYXRoLmNvcyhvKSxpPXIqTWF0aC5jb3Mobikscz1yKk1hdGguc2luKG4pLGY9TWF0aC5zaW4obyk7cmV0dXJuIG0oZSl8fChlPW5ldyBhKSxlLng9aSxlLnk9cyxlLno9ZixhLm5vcm1hbGl6ZShlLGUpfTtDZS5wcm90b3R5cGUuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsPWZ1bmN0aW9uKHQsZSl7aWYoeS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLGlzTmFOKHQueCl8fGlzTmFOKHQueSl8fGlzTmFOKHQueikpdGhyb3cgbmV3IEQoImNhcnRlc2lhbiBoYXMgYSBOYU4gY29tcG9uZW50Iik7aWYoIWEuZXF1YWxzRXBzaWxvbih0LGEuWkVSTyxQLkVQU0lMT04xNCkpcmV0dXJuIG0oZSl8fChlPW5ldyBhKSxlPWEubXVsdGlwbHlDb21wb25lbnRzKHQsdGhpcy5fb25lT3ZlclJhZGlpU3F1YXJlZCxlKSxhLm5vcm1hbGl6ZShlLGUpfTtQeD1uZXcgYSxNeD1uZXcgYTtDZS5wcm90b3R5cGUuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW49ZnVuY3Rpb24odCxlKXtsZXQgbj1QeCxvPU14O3RoaXMuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsQ2FydG9ncmFwaGljKHQsbiksYS5tdWx0aXBseUNvbXBvbmVudHModGhpcy5fcmFkaWlTcXVhcmVkLG4sbyk7bGV0IHI9TWF0aC5zcXJ0KGEuZG90KG4sbykpO3JldHVybiBhLmRpdmlkZUJ5U2NhbGFyKG8scixvKSxhLm11bHRpcGx5QnlTY2FsYXIobix0LmhlaWdodCxuKSxtKGUpfHwoZT1uZXcgYSksYS5hZGQobyxuLGUpfTtDZS5wcm90b3R5cGUuY2FydG9ncmFwaGljQXJyYXlUb0NhcnRlc2lhbkFycmF5PWZ1bmN0aW9uKHQsZSl7eS5kZWZpbmVkKCJjYXJ0b2dyYXBoaWNzIix0KTtsZXQgbj10Lmxlbmd0aDttKGUpP2UubGVuZ3RoPW46ZT1uZXcgQXJyYXkobik7Zm9yKGxldCBvPTA7bzxuO28rKyllW29dPXRoaXMuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4odFtvXSxlW29dKTtyZXR1cm4gZX07Tng9bmV3IGEsSXg9bmV3IGEsdng9bmV3IGE7Q2UucHJvdG90eXBlLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljPWZ1bmN0aW9uKHQsZSl7bGV0IG49dGhpcy5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKHQsSXgpO2lmKCFtKG4pKXJldHVybjtsZXQgbz10aGlzLmdlb2RldGljU3VyZmFjZU5vcm1hbChuLE54KSxyPWEuc3VidHJhY3QodCxuLHZ4KSxpPU1hdGguYXRhbjIoby55LG8ueCkscz1NYXRoLmFzaW4oby56KSxmPVAuc2lnbihhLmRvdChyLHQpKSphLm1hZ25pdHVkZShyKTtyZXR1cm4gbShlKT8oZS5sb25naXR1ZGU9aSxlLmxhdGl0dWRlPXMsZS5oZWlnaHQ9ZixlKTpuZXcgY3QoaSxzLGYpfTtDZS5wcm90b3R5cGUuY2FydGVzaWFuQXJyYXlUb0NhcnRvZ3JhcGhpY0FycmF5PWZ1bmN0aW9uKHQsZSl7eS5kZWZpbmVkKCJjYXJ0ZXNpYW5zIix0KTtsZXQgbj10Lmxlbmd0aDttKGUpP2UubGVuZ3RoPW46ZT1uZXcgQXJyYXkobik7Zm9yKGxldCBvPTA7bzxuOysrbyllW29dPXRoaXMuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWModFtvXSxlW29dKTtyZXR1cm4gZX07Q2UucHJvdG90eXBlLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2U9ZnVuY3Rpb24odCxlKXtyZXR1cm4gSGwodCx0aGlzLl9vbmVPdmVyUmFkaWksdGhpcy5fb25lT3ZlclJhZGlpU3F1YXJlZCx0aGlzLl9jZW50ZXJUb2xlcmFuY2VTcXVhcmVkLGUpfTtDZS5wcm90b3R5cGUuc2NhbGVUb0dlb2NlbnRyaWNTdXJmYWNlPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLG0oZSl8fChlPW5ldyBhKTtsZXQgbj10Lngsbz10Lnkscj10LnosaT10aGlzLl9vbmVPdmVyUmFkaWlTcXVhcmVkLHM9MS9NYXRoLnNxcnQobipuKmkueCtvKm8qaS55K3IqcippLnopO3JldHVybiBhLm11bHRpcGx5QnlTY2FsYXIodCxzLGUpfTtDZS5wcm90b3R5cGUudHJhbnNmb3JtUG9zaXRpb25Ub1NjYWxlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG0oZSl8fChlPW5ldyBhKSxhLm11bHRpcGx5Q29tcG9uZW50cyh0LHRoaXMuX29uZU92ZXJSYWRpaSxlKX07Q2UucHJvdG90eXBlLnRyYW5zZm9ybVBvc2l0aW9uRnJvbVNjYWxlZFNwYWNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG0oZSl8fChlPW5ldyBhKSxhLm11bHRpcGx5Q29tcG9uZW50cyh0LHRoaXMuX3JhZGlpLGUpfTtDZS5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzPT09dHx8bSh0KSYmYS5lcXVhbHModGhpcy5fcmFkaWksdC5fcmFkaWkpfTtDZS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmFkaWkudG9TdHJpbmcoKX07Q2UucHJvdG90eXBlLmdldFN1cmZhY2VOb3JtYWxJbnRlcnNlY3Rpb25XaXRoWkF4aXM9ZnVuY3Rpb24odCxlLG4pe2lmKHkudHlwZU9mLm9iamVjdCgicG9zaXRpb24iLHQpLCFQLmVxdWFsc0Vwc2lsb24odGhpcy5fcmFkaWkueCx0aGlzLl9yYWRpaS55LFAuRVBTSUxPTjE1KSl0aHJvdyBuZXcgRCgiRWxsaXBzb2lkIG11c3QgYmUgYW4gZWxsaXBzb2lkIG9mIHJldm9sdXRpb24gKHJhZGlpLnggPT0gcmFkaWkueSkiKTt5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW4oIkVsbGlwc29pZC5yYWRpaS56Iix0aGlzLl9yYWRpaS56LDApLGU9ZT8/MDtsZXQgbz10aGlzLl9zcXVhcmVkWE92ZXJTcXVhcmVkWjtpZihtKG4pfHwobj1uZXcgYSksbi54PTAsbi55PTAsbi56PXQueiooMS1vKSwhKE1hdGguYWJzKG4ueik+PXRoaXMuX3JhZGlpLnotZSkpcmV0dXJuIG59O0Z4PW5ldyBhO0NlLnByb3RvdHlwZS5nZXRMb2NhbEN1cnZhdHVyZT1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm9iamVjdCgic3VyZmFjZVBvc2l0aW9uIix0KSxtKGUpfHwoZT1uZXcgSik7bGV0IG49dGhpcy5nZXRTdXJmYWNlTm9ybWFsSW50ZXJzZWN0aW9uV2l0aFpBeGlzKHQsMCxGeCksbz1hLmRpc3RhbmNlKHQsbikscj10aGlzLm1pbmltdW1SYWRpdXMqby90aGlzLm1heGltdW1SYWRpdXMqKjIsaT1vKnIqKjI7cmV0dXJuIEouZnJvbUVsZW1lbnRzKDEvbywxL2ksZSl9O0x4PVsuMTQ4ODc0MzM4OTgxNjMsLjQzMzM5NTM5NDEyOTI1LC42Nzk0MDk1NjgyOTkwMiwuODY1MDYzMzY2Njg4OTgsLjk3MzkwNjUyODUxNzE3LDBdLER4PVsuMjk1NTI0MjI0NzE0NzUsLjI2OTI2NjcxOTMwOTk5LC4yMTkwODYzNjI1MTU5OCwuMTQ5NDUxMzQ5MTUwNTgsLjA2NjY3MTM0NDMwODY4NCwwXTtDZS5wcm90b3R5cGUuc3VyZmFjZUFyZWE9ZnVuY3Rpb24odCl7eS50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpO2xldCBlPXQud2VzdCxuPXQuZWFzdCxvPXQuc291dGgscj10Lm5vcnRoO2Zvcig7bjxlOyluKz1QLlRXT19QSTtsZXQgaT10aGlzLl9yYWRpaVNxdWFyZWQscz1pLngsZj1pLnksdT1pLnosYz1zKmY7cmV0dXJuIE4xKG8scixmdW5jdGlvbihsKXtsZXQgcD1NYXRoLmNvcyhsKSxkPU1hdGguc2luKGwpO3JldHVybiBNYXRoLmNvcyhsKSpOMShlLG4sZnVuY3Rpb24oaCl7bGV0IF89TWF0aC5jb3MoaCksZz1NYXRoLnNpbihoKTtyZXR1cm4gTWF0aC5zcXJ0KGMqZCpkK3UqKGYqXypfK3MqZypnKSpwKnApfSl9KX07WT1DZX0pO2Z1bmN0aW9uIEtsKHQpe3RoaXMuX2VsbGlwc29pZD10Pz9ZLmRlZmF1bHQsdGhpcy5fc2VtaW1ham9yQXhpcz10aGlzLl9lbGxpcHNvaWQubWF4aW11bVJhZGl1cyx0aGlzLl9vbmVPdmVyU2VtaW1ham9yQXhpcz0xL3RoaXMuX3NlbWltYWpvckF4aXN9dmFyIGVvLHhpPSQoKCk9PntEdCgpO0llKCk7ZnQoKTtIdCgpOyR0KCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoS2wucHJvdG90eXBlLHtlbGxpcHNvaWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGxpcHNvaWR9fX0pO0tsLnByb3RvdHlwZS5wcm9qZWN0PWZ1bmN0aW9uKHQsZSl7bGV0IG49dGhpcy5fc2VtaW1ham9yQXhpcyxvPXQubG9uZ2l0dWRlKm4scj10LmxhdGl0dWRlKm4saT10LmhlaWdodDtyZXR1cm4gbShlKT8oZS54PW8sZS55PXIsZS56PWksZSk6bmV3IGEobyxyLGkpfTtLbC5wcm90b3R5cGUudW5wcm9qZWN0PWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImNhcnRlc2lhbiBpcyByZXF1aXJlZCIpO2xldCBuPXRoaXMuX29uZU92ZXJTZW1pbWFqb3JBeGlzLG89dC54Km4scj10LnkqbixpPXQuejtyZXR1cm4gbShlKT8oZS5sb25naXR1ZGU9byxlLmxhdGl0dWRlPXIsZS5oZWlnaHQ9aSxlKTpuZXcgY3QobyxyLGkpfTtlbz1LbH0pO3ZhciBCeCxTbixWcz0kKCgpPT57Qng9e09VVFNJREU6LTEsSU5URVJTRUNUSU5HOjAsSU5TSURFOjF9LFNuPU9iamVjdC5mcmVlemUoQngpfSk7ZnVuY3Rpb24gVXgodCxlKXt0aGlzLnN0YXJ0PXQ/PzAsdGhpcy5zdG9wPWU/PzB9dmFyIEpyLFdsPSQoKCk9PntKcj1VeH0pO2Z1bmN0aW9uIFR0KHQsZSxuLG8scixpLHMsZix1KXt0aGlzWzBdPXQ/PzAsdGhpc1sxXT1vPz8wLHRoaXNbMl09cz8/MCx0aGlzWzNdPWU/PzAsdGhpc1s0XT1yPz8wLHRoaXNbNV09Zj8/MCx0aGlzWzZdPW4/PzAsdGhpc1s3XT1pPz8wLHRoaXNbOF09dT8/MH1mdW5jdGlvbiBqeCh0KXtsZXQgZT0wO2ZvcihsZXQgbj0wO248OTsrK24pe2xldCBvPXRbbl07ZSs9bypvfXJldHVybiBNYXRoLnNxcnQoZSl9ZnVuY3Rpb24gSHgodCl7bGV0IGU9MDtmb3IobGV0IG49MDtuPDM7KytuKXtsZXQgbz10W1R0LmdldEVsZW1lbnRJbmRleChObVtuXSxNbVtuXSldO2UrPTIqbypvfXJldHVybiBNYXRoLnNxcnQoZSl9ZnVuY3Rpb24gcXgodCxlKXtsZXQgbj1QLkVQU0lMT04xNSxvPTAscj0xO2ZvcihsZXQgYz0wO2M8MzsrK2Mpe2xldCBsPU1hdGguYWJzKHRbVHQuZ2V0RWxlbWVudEluZGV4KE5tW2NdLE1tW2NdKV0pO2w+byYmKHI9YyxvPWwpfWxldCBpPTEscz0wLGY9TW1bcl0sdT1ObVtyXTtpZihNYXRoLmFicyh0W1R0LmdldEVsZW1lbnRJbmRleCh1LGYpXSk+bil7bGV0IGM9dFtUdC5nZXRFbGVtZW50SW5kZXgodSx1KV0sbD10W1R0LmdldEVsZW1lbnRJbmRleChmLGYpXSxwPXRbVHQuZ2V0RWxlbWVudEluZGV4KHUsZildLGQ9KGMtbCkvMi9wLGg7ZDwwP2g9LTEvKC1kK01hdGguc3FydCgxK2QqZCkpOmg9MS8oZCtNYXRoLnNxcnQoMStkKmQpKSxpPTEvTWF0aC5zcXJ0KDEraCpoKSxzPWgqaX1yZXR1cm4gZT1UdC5jbG9uZShUdC5JREVOVElUWSxlKSxlW1R0LmdldEVsZW1lbnRJbmRleChmLGYpXT1lW1R0LmdldEVsZW1lbnRJbmRleCh1LHUpXT1pLGVbVHQuZ2V0RWxlbWVudEluZGV4KHUsZildPXMsZVtUdC5nZXRFbGVtZW50SW5kZXgoZix1KV09LXMsZX12YXIga3gsR3gsUG0sdjEsVngsengsTW0sTm0sWGwsRjEsS3gsWixVbj0kKCgpPT57RHQoKTtXdCgpO2Z0KCk7SHQoKTtLdCgpO1R0LnBhY2tlZExlbmd0aD05O1R0LnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzAsZVtuKytdPXRbMF0sZVtuKytdPXRbMV0sZVtuKytdPXRbMl0sZVtuKytdPXRbM10sZVtuKytdPXRbNF0sZVtuKytdPXRbNV0sZVtuKytdPXRbNl0sZVtuKytdPXRbN10sZVtuKytdPXRbOF0sZX07VHQudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS5kZWZpbmVkKCJhcnJheSIsdCksZT1lPz8wLG0obil8fChuPW5ldyBUdCksblswXT10W2UrK10sblsxXT10W2UrK10sblsyXT10W2UrK10sblszXT10W2UrK10sbls0XT10W2UrK10sbls1XT10W2UrK10sbls2XT10W2UrK10sbls3XT10W2UrK10sbls4XT10W2UrK10sbn07VHQucGFja0FycmF5PWZ1bmN0aW9uKHQsZSl7eS5kZWZpbmVkKCJhcnJheSIsdCk7bGV0IG49dC5sZW5ndGgsbz1uKjk7aWYoIW0oZSkpZT1uZXcgQXJyYXkobyk7ZWxzZXtpZighQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGghPT1vKXRocm93IG5ldyBEKCJJZiByZXN1bHQgaXMgYSB0eXBlZCBhcnJheSwgaXQgbXVzdCBoYXZlIGV4YWN0bHkgYXJyYXkubGVuZ3RoICogOSBlbGVtZW50cyIpO2UubGVuZ3RoIT09byYmKGUubGVuZ3RoPW8pfWZvcihsZXQgcj0wO3I8bjsrK3IpVHQucGFjayh0W3JdLGUscio5KTtyZXR1cm4gZX07VHQudW5wYWNrQXJyYXk9ZnVuY3Rpb24odCxlKXtpZih5LmRlZmluZWQoImFycmF5Iix0KSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiYXJyYXkubGVuZ3RoIix0Lmxlbmd0aCw5KSx0Lmxlbmd0aCU5IT09MCl0aHJvdyBuZXcgRCgiYXJyYXkgbGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA5LiIpO2xldCBuPXQubGVuZ3RoO20oZSk/ZS5sZW5ndGg9bi85OmU9bmV3IEFycmF5KG4vOSk7Zm9yKGxldCBvPTA7bzxuO28rPTkpe2xldCByPW8vOTtlW3JdPVR0LnVucGFjayh0LG8sZVtyXSl9cmV0dXJuIGV9O1R0LmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZVszXT10WzNdLGVbNF09dFs0XSxlWzVdPXRbNV0sZVs2XT10WzZdLGVbN109dFs3XSxlWzhdPXRbOF0sZSk6bmV3IFR0KHRbMF0sdFszXSx0WzZdLHRbMV0sdFs0XSx0WzddLHRbMl0sdFs1XSx0WzhdKX07VHQuZnJvbUFycmF5PVR0LnVucGFjaztUdC5mcm9tQ29sdW1uTWFqb3JBcnJheT1mdW5jdGlvbih0LGUpe3JldHVybiB5LmRlZmluZWQoInZhbHVlcyIsdCksVHQuY2xvbmUodCxlKX07VHQuZnJvbVJvd01ham9yQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS5kZWZpbmVkKCJ2YWx1ZXMiLHQpLG0oZSk/KGVbMF09dFswXSxlWzFdPXRbM10sZVsyXT10WzZdLGVbM109dFsxXSxlWzRdPXRbNF0sZVs1XT10WzddLGVbNl09dFsyXSxlWzddPXRbNV0sZVs4XT10WzhdLGUpOm5ldyBUdCh0WzBdLHRbMV0sdFsyXSx0WzNdLHRbNF0sdFs1XSx0WzZdLHRbN10sdFs4XSl9O1R0LmZyb21RdWF0ZXJuaW9uPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJxdWF0ZXJuaW9uIix0KTtsZXQgbj10LngqdC54LG89dC54KnQueSxyPXQueCp0LnosaT10LngqdC53LHM9dC55KnQueSxmPXQueSp0LnosdT10LnkqdC53LGM9dC56KnQueixsPXQueip0LncscD10LncqdC53LGQ9bi1zLWMrcCxoPTIqKG8tbCksXz0yKihyK3UpLGc9MioobytsKSxiPS1uK3MtYytwLHc9MiooZi1pKSxPPTIqKHItdSksRT0yKihmK2kpLFQ9LW4tcytjK3A7cmV0dXJuIG0oZSk/KGVbMF09ZCxlWzFdPWcsZVsyXT1PLGVbM109aCxlWzRdPWIsZVs1XT1FLGVbNl09XyxlWzddPXcsZVs4XT1ULGUpOm5ldyBUdChkLGgsXyxnLGIsdyxPLEUsVCl9O1R0LmZyb21IZWFkaW5nUGl0Y2hSb2xsPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJoZWFkaW5nUGl0Y2hSb2xsIix0KTtsZXQgbj1NYXRoLmNvcygtdC5waXRjaCksbz1NYXRoLmNvcygtdC5oZWFkaW5nKSxyPU1hdGguY29zKHQucm9sbCksaT1NYXRoLnNpbigtdC5waXRjaCkscz1NYXRoLnNpbigtdC5oZWFkaW5nKSxmPU1hdGguc2luKHQucm9sbCksdT1uKm8sYz0tcipzK2YqaSpvLGw9ZipzK3IqaSpvLHA9bipzLGQ9cipvK2YqaSpzLGg9LWYqbytyKmkqcyxfPS1pLGc9ZipuLGI9cipuO3JldHVybiBtKGUpPyhlWzBdPXUsZVsxXT1wLGVbMl09XyxlWzNdPWMsZVs0XT1kLGVbNV09ZyxlWzZdPWwsZVs3XT1oLGVbOF09YixlKTpuZXcgVHQodSxjLGwscCxkLGgsXyxnLGIpfTtUdC5mcm9tU2NhbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJzY2FsZSIsdCksbShlKT8oZVswXT10LngsZVsxXT0wLGVbMl09MCxlWzNdPTAsZVs0XT10LnksZVs1XT0wLGVbNl09MCxlWzddPTAsZVs4XT10LnosZSk6bmV3IFR0KHQueCwwLDAsMCx0LnksMCwwLDAsdC56KX07VHQuZnJvbVVuaWZvcm1TY2FsZT1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5udW1iZXIoInNjYWxlIix0KSxtKGUpPyhlWzBdPXQsZVsxXT0wLGVbMl09MCxlWzNdPTAsZVs0XT10LGVbNV09MCxlWzZdPTAsZVs3XT0wLGVbOF09dCxlKTpuZXcgVHQodCwwLDAsMCx0LDAsMCwwLHQpfTtUdC5mcm9tQ3Jvc3NQcm9kdWN0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidmVjdG9yIix0KSxtKGUpPyhlWzBdPTAsZVsxXT10LnosZVsyXT0tdC55LGVbM109LXQueixlWzRdPTAsZVs1XT10LngsZVs2XT10LnksZVs3XT0tdC54LGVbOF09MCxlKTpuZXcgVHQoMCwtdC56LHQueSx0LnosMCwtdC54LC10LnksdC54LDApfTtUdC5mcm9tUm90YXRpb25YPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2YubnVtYmVyKCJhbmdsZSIsdCk7bGV0IG49TWF0aC5jb3ModCksbz1NYXRoLnNpbih0KTtyZXR1cm4gbShlKT8oZVswXT0xLGVbMV09MCxlWzJdPTAsZVszXT0wLGVbNF09bixlWzVdPW8sZVs2XT0wLGVbN109LW8sZVs4XT1uLGUpOm5ldyBUdCgxLDAsMCwwLG4sLW8sMCxvLG4pfTtUdC5mcm9tUm90YXRpb25ZPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2YubnVtYmVyKCJhbmdsZSIsdCk7bGV0IG49TWF0aC5jb3ModCksbz1NYXRoLnNpbih0KTtyZXR1cm4gbShlKT8oZVswXT1uLGVbMV09MCxlWzJdPS1vLGVbM109MCxlWzRdPTEsZVs1XT0wLGVbNl09byxlWzddPTAsZVs4XT1uLGUpOm5ldyBUdChuLDAsbywwLDEsMCwtbywwLG4pfTtUdC5mcm9tUm90YXRpb25aPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2YubnVtYmVyKCJhbmdsZSIsdCk7bGV0IG49TWF0aC5jb3ModCksbz1NYXRoLnNpbih0KTtyZXR1cm4gbShlKT8oZVswXT1uLGVbMV09byxlWzJdPTAsZVszXT0tbyxlWzRdPW4sZVs1XT0wLGVbNl09MCxlWzddPTAsZVs4XT0xLGUpOm5ldyBUdChuLC1vLDAsbyxuLDAsMCwwLDEpfTtUdC50b0FycmF5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSxtKGUpPyhlWzBdPXRbMF0sZVsxXT10WzFdLGVbMl09dFsyXSxlWzNdPXRbM10sZVs0XT10WzRdLGVbNV09dFs1XSxlWzZdPXRbNl0sZVs3XT10WzddLGVbOF09dFs4XSxlKTpbdFswXSx0WzFdLHRbMl0sdFszXSx0WzRdLHRbNV0sdFs2XSx0WzddLHRbOF1dfTtUdC5nZXRFbGVtZW50SW5kZXg9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoInJvdyIsZSwwKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygicm93IixlLDIpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJjb2x1bW4iLHQsMCkseS50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoImNvbHVtbiIsdCwyKSx0KjMrZX07VHQuZ2V0Q29sdW1uPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwyKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89ZSozLHI9dFtvXSxpPXRbbysxXSxzPXRbbysyXTtyZXR1cm4gbi54PXIsbi55PWksbi56PXMsbn07VHQuc2V0Q29sdW1uPWZ1bmN0aW9uKHQsZSxuLG8pe3kudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiaW5kZXgiLGUsMCkseS50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoImluZGV4IixlLDIpLHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIixuKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbyksbz1UdC5jbG9uZSh0LG8pO2xldCByPWUqMztyZXR1cm4gb1tyXT1uLngsb1tyKzFdPW4ueSxvW3IrMl09bi56LG99O1R0LmdldFJvdz1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwwKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiaW5kZXgiLGUsMikseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pO2xldCBvPXRbZV0scj10W2UrM10saT10W2UrNl07cmV0dXJuIG4ueD1vLG4ueT1yLG4uej1pLG59O1R0LnNldFJvdz1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwwKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiaW5kZXgiLGUsMikseS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLG4pLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixvKSxvPVR0LmNsb25lKHQsbyksb1tlXT1uLngsb1tlKzNdPW4ueSxvW2UrNl09bi56LG99O2t4PW5ldyBhO1R0LnNldFNjYWxlPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2Yub2JqZWN0KCJzY2FsZSIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pO2xldCBvPVR0LmdldFNjYWxlKHQsa3gpLHI9ZS54L28ueCxpPWUueS9vLnkscz1lLnovby56O3JldHVybiBuWzBdPXRbMF0qcixuWzFdPXRbMV0qcixuWzJdPXRbMl0qcixuWzNdPXRbM10qaSxuWzRdPXRbNF0qaSxuWzVdPXRbNV0qaSxuWzZdPXRbNl0qcyxuWzddPXRbN10qcyxuWzhdPXRbOF0qcyxufTtHeD1uZXcgYTtUdC5zZXRVbmlmb3JtU2NhbGU9ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5udW1iZXIoInNjYWxlIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89VHQuZ2V0U2NhbGUodCxHeCkscj1lL28ueCxpPWUvby55LHM9ZS9vLno7cmV0dXJuIG5bMF09dFswXSpyLG5bMV09dFsxXSpyLG5bMl09dFsyXSpyLG5bM109dFszXSppLG5bNF09dFs0XSppLG5bNV09dFs1XSppLG5bNl09dFs2XSpzLG5bN109dFs3XSpzLG5bOF09dFs4XSpzLG59O1BtPW5ldyBhO1R0LmdldFNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PWEubWFnbml0dWRlKGEuZnJvbUVsZW1lbnRzKHRbMF0sdFsxXSx0WzJdLFBtKSksZS55PWEubWFnbml0dWRlKGEuZnJvbUVsZW1lbnRzKHRbM10sdFs0XSx0WzVdLFBtKSksZS56PWEubWFnbml0dWRlKGEuZnJvbUVsZW1lbnRzKHRbNl0sdFs3XSx0WzhdLFBtKSksZX07djE9bmV3IGE7VHQuZ2V0TWF4aW11bVNjYWxlPWZ1bmN0aW9uKHQpe3JldHVybiBUdC5nZXRTY2FsZSh0LHYxKSxhLm1heGltdW1Db21wb25lbnQodjEpfTtWeD1uZXcgYTtUdC5zZXRSb3RhdGlvbj1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz1UdC5nZXRTY2FsZSh0LFZ4KTtyZXR1cm4gblswXT1lWzBdKm8ueCxuWzFdPWVbMV0qby54LG5bMl09ZVsyXSpvLngsblszXT1lWzNdKm8ueSxuWzRdPWVbNF0qby55LG5bNV09ZVs1XSpvLnksbls2XT1lWzZdKm8ueixuWzddPWVbN10qby56LG5bOF09ZVs4XSpvLnosbn07eng9bmV3IGE7VHQuZ2V0Um90YXRpb249ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBuPVR0LmdldFNjYWxlKHQsengpO3JldHVybiBlWzBdPXRbMF0vbi54LGVbMV09dFsxXS9uLngsZVsyXT10WzJdL24ueCxlWzNdPXRbM10vbi55LGVbNF09dFs0XS9uLnksZVs1XT10WzVdL24ueSxlWzZdPXRbNl0vbi56LGVbN109dFs3XS9uLnosZVs4XT10WzhdL24ueixlfTtUdC5tdWx0aXBseT1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89dFswXSplWzBdK3RbM10qZVsxXSt0WzZdKmVbMl0scj10WzFdKmVbMF0rdFs0XSplWzFdK3RbN10qZVsyXSxpPXRbMl0qZVswXSt0WzVdKmVbMV0rdFs4XSplWzJdLHM9dFswXSplWzNdK3RbM10qZVs0XSt0WzZdKmVbNV0sZj10WzFdKmVbM10rdFs0XSplWzRdK3RbN10qZVs1XSx1PXRbMl0qZVszXSt0WzVdKmVbNF0rdFs4XSplWzVdLGM9dFswXSplWzZdK3RbM10qZVs3XSt0WzZdKmVbOF0sbD10WzFdKmVbNl0rdFs0XSplWzddK3RbN10qZVs4XSxwPXRbMl0qZVs2XSt0WzVdKmVbN10rdFs4XSplWzhdO3JldHVybiBuWzBdPW8sblsxXT1yLG5bMl09aSxuWzNdPXMsbls0XT1mLG5bNV09dSxuWzZdPWMsbls3XT1sLG5bOF09cCxufTtUdC5hZGQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuWzBdPXRbMF0rZVswXSxuWzFdPXRbMV0rZVsxXSxuWzJdPXRbMl0rZVsyXSxuWzNdPXRbM10rZVszXSxuWzRdPXRbNF0rZVs0XSxuWzVdPXRbNV0rZVs1XSxuWzZdPXRbNl0rZVs2XSxuWzddPXRbN10rZVs3XSxuWzhdPXRbOF0rZVs4XSxufTtUdC5zdWJ0cmFjdD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG5bMF09dFswXS1lWzBdLG5bMV09dFsxXS1lWzFdLG5bMl09dFsyXS1lWzJdLG5bM109dFszXS1lWzNdLG5bNF09dFs0XS1lWzRdLG5bNV09dFs1XS1lWzVdLG5bNl09dFs2XS1lWzZdLG5bN109dFs3XS1lWzddLG5bOF09dFs4XS1lWzhdLG59O1R0Lm11bHRpcGx5QnlWZWN0b3I9ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pO2xldCBvPWUueCxyPWUueSxpPWUueixzPXRbMF0qbyt0WzNdKnIrdFs2XSppLGY9dFsxXSpvK3RbNF0qcit0WzddKmksdT10WzJdKm8rdFs1XSpyK3RbOF0qaTtyZXR1cm4gbi54PXMsbi55PWYsbi56PXUsbn07VHQubXVsdGlwbHlCeVNjYWxhcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5udW1iZXIoInNjYWxhciIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG5bMF09dFswXSplLG5bMV09dFsxXSplLG5bMl09dFsyXSplLG5bM109dFszXSplLG5bNF09dFs0XSplLG5bNV09dFs1XSplLG5bNl09dFs2XSplLG5bN109dFs3XSplLG5bOF09dFs4XSplLG59O1R0Lm11bHRpcGx5QnlTY2FsZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInNjYWxlIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksblswXT10WzBdKmUueCxuWzFdPXRbMV0qZS54LG5bMl09dFsyXSplLngsblszXT10WzNdKmUueSxuWzRdPXRbNF0qZS55LG5bNV09dFs1XSplLnksbls2XT10WzZdKmUueixuWzddPXRbN10qZS56LG5bOF09dFs4XSplLnosbn07VHQubXVsdGlwbHlCeVVuaWZvcm1TY2FsZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5udW1iZXIoInNjYWxlIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksblswXT10WzBdKmUsblsxXT10WzFdKmUsblsyXT10WzJdKmUsblszXT10WzNdKmUsbls0XT10WzRdKmUsbls1XT10WzVdKmUsbls2XT10WzZdKmUsbls3XT10WzddKmUsbls4XT10WzhdKmUsbn07VHQubmVnYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZVswXT0tdFswXSxlWzFdPS10WzFdLGVbMl09LXRbMl0sZVszXT0tdFszXSxlWzRdPS10WzRdLGVbNV09LXRbNV0sZVs2XT0tdFs2XSxlWzddPS10WzddLGVbOF09LXRbOF0sZX07VHQudHJhbnNwb3NlPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgbj10WzBdLG89dFszXSxyPXRbNl0saT10WzFdLHM9dFs0XSxmPXRbN10sdT10WzJdLGM9dFs1XSxsPXRbOF07cmV0dXJuIGVbMF09bixlWzFdPW8sZVsyXT1yLGVbM109aSxlWzRdPXMsZVs1XT1mLGVbNl09dSxlWzddPWMsZVs4XT1sLGV9O01tPVsxLDAsMF0sTm09WzIsMiwxXTtYbD1uZXcgVHQsRjE9bmV3IFR0O1R0LmNvbXB1dGVFaWdlbkRlY29tcG9zaXRpb249ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCk7bGV0IG49UC5FUFNJTE9OMjAsbz0xMCxyPTAsaT0wO20oZSl8fChlPXt9KTtsZXQgcz1lLnVuaXRhcnk9VHQuY2xvbmUoVHQuSURFTlRJVFksZS51bml0YXJ5KSxmPWUuZGlhZ29uYWw9VHQuY2xvbmUodCxlLmRpYWdvbmFsKSx1PW4qangoZik7Zm9yKDtpPG8mJkh4KGYpPnU7KXF4KGYsWGwpLFR0LnRyYW5zcG9zZShYbCxGMSksVHQubXVsdGlwbHkoZixYbCxmKSxUdC5tdWx0aXBseShGMSxmLGYpLFR0Lm11bHRpcGx5KHMsWGwscyksKytyPjImJigrK2kscj0wKTtyZXR1cm4gZX07VHQuYWJzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZVswXT1NYXRoLmFicyh0WzBdKSxlWzFdPU1hdGguYWJzKHRbMV0pLGVbMl09TWF0aC5hYnModFsyXSksZVszXT1NYXRoLmFicyh0WzNdKSxlWzRdPU1hdGguYWJzKHRbNF0pLGVbNV09TWF0aC5hYnModFs1XSksZVs2XT1NYXRoLmFicyh0WzZdKSxlWzddPU1hdGguYWJzKHRbN10pLGVbOF09TWF0aC5hYnModFs4XSksZX07VHQuZGV0ZXJtaW5hbnQ9ZnVuY3Rpb24odCl7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpO2xldCBlPXRbMF0sbj10WzNdLG89dFs2XSxyPXRbMV0saT10WzRdLHM9dFs3XSxmPXRbMl0sdT10WzVdLGM9dFs4XTtyZXR1cm4gZSooaSpjLXUqcykrcioodSpvLW4qYykrZioobipzLWkqbyl9O1R0LmludmVyc2U9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBuPXRbMF0sbz10WzFdLHI9dFsyXSxpPXRbM10scz10WzRdLGY9dFs1XSx1PXRbNl0sYz10WzddLGw9dFs4XSxwPVR0LmRldGVybWluYW50KHQpO2lmKE1hdGguYWJzKHApPD1QLkVQU0lMT04xNSl0aHJvdyBuZXcgRCgibWF0cml4IGlzIG5vdCBpbnZlcnRpYmxlIik7ZVswXT1zKmwtYypmLGVbMV09YypyLW8qbCxlWzJdPW8qZi1zKnIsZVszXT11KmYtaSpsLGVbNF09bipsLXUqcixlWzVdPWkqci1uKmYsZVs2XT1pKmMtdSpzLGVbN109dSpvLW4qYyxlWzhdPW4qcy1pKm87bGV0IGQ9MS9wO3JldHVybiBUdC5tdWx0aXBseUJ5U2NhbGFyKGUsZCxlKX07S3g9bmV3IFR0O1R0LmludmVyc2VUcmFuc3Bvc2U9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxUdC5pbnZlcnNlKFR0LnRyYW5zcG9zZSh0LEt4KSxlKX07VHQuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0WzBdPT09ZVswXSYmdFsxXT09PWVbMV0mJnRbMl09PT1lWzJdJiZ0WzNdPT09ZVszXSYmdFs0XT09PWVbNF0mJnRbNV09PT1lWzVdJiZ0WzZdPT09ZVs2XSYmdFs3XT09PWVbN10mJnRbOF09PT1lWzhdfTtUdC5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbj1uPz8wLHQ9PT1lfHxtKHQpJiZtKGUpJiZNYXRoLmFicyh0WzBdLWVbMF0pPD1uJiZNYXRoLmFicyh0WzFdLWVbMV0pPD1uJiZNYXRoLmFicyh0WzJdLWVbMl0pPD1uJiZNYXRoLmFicyh0WzNdLWVbM10pPD1uJiZNYXRoLmFicyh0WzRdLWVbNF0pPD1uJiZNYXRoLmFicyh0WzVdLWVbNV0pPD1uJiZNYXRoLmFicyh0WzZdLWVbNl0pPD1uJiZNYXRoLmFicyh0WzddLWVbN10pPD1uJiZNYXRoLmFicyh0WzhdLWVbOF0pPD1ufTtUdC5JREVOVElUWT1PYmplY3QuZnJlZXplKG5ldyBUdCgxLDAsMCwwLDEsMCwwLDAsMSkpO1R0LlpFUk89T2JqZWN0LmZyZWV6ZShuZXcgVHQoMCwwLDAsMCwwLDAsMCwwLDApKTtUdC5DT0xVTU4wUk9XMD0wO1R0LkNPTFVNTjBST1cxPTE7VHQuQ09MVU1OMFJPVzI9MjtUdC5DT0xVTU4xUk9XMD0zO1R0LkNPTFVNTjFST1cxPTQ7VHQuQ09MVU1OMVJPVzI9NTtUdC5DT0xVTU4yUk9XMD02O1R0LkNPTFVNTjJST1cxPTc7VHQuQ09MVU1OMlJPVzI9ODtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhUdC5wcm90b3R5cGUse2xlbmd0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFR0LnBhY2tlZExlbmd0aH19fSk7VHQucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBUdC5jbG9uZSh0aGlzLHQpfTtUdC5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBUdC5lcXVhbHModGhpcyx0KX07VHQuZXF1YWxzQXJyYXk9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0WzBdPT09ZVtuXSYmdFsxXT09PWVbbisxXSYmdFsyXT09PWVbbisyXSYmdFszXT09PWVbbiszXSYmdFs0XT09PWVbbis0XSYmdFs1XT09PWVbbis1XSYmdFs2XT09PWVbbis2XSYmdFs3XT09PWVbbis3XSYmdFs4XT09PWVbbis4XX07VHQucHJvdG90eXBlLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gVHQuZXF1YWxzRXBzaWxvbih0aGlzLHQsZSl9O1R0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybmAoJHt0aGlzWzBdfSwgJHt0aGlzWzNdfSwgJHt0aGlzWzZdfSkKKCR7dGhpc1sxXX0sICR7dGhpc1s0XX0sICR7dGhpc1s3XX0pCigke3RoaXNbMl19LCAke3RoaXNbNV19LCAke3RoaXNbOF19KWB9O1o9VHR9KTtmdW5jdGlvbiB2dCh0LGUsbixvKXt0aGlzLng9dD8/MCx0aGlzLnk9ZT8/MCx0aGlzLno9bj8/MCx0aGlzLnc9bz8/MH12YXIgWWwsTDEsV3gsSW0sVG8sWHgsWXgsRDEsbWUsX3I9JCgoKT0+e1d0KCk7ZnQoKTtIdCgpO0t0KCk7dnQuZnJvbUVsZW1lbnRzPWZ1bmN0aW9uKHQsZSxuLG8scil7cmV0dXJuIG0ocik/KHIueD10LHIueT1lLHIuej1uLHIudz1vLHIpOm5ldyB2dCh0LGUsbixvKX07dnQuZnJvbUNvbG9yPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY29sb3IiLHQpLG0oZSk/KGUueD10LnJlZCxlLnk9dC5ncmVlbixlLno9dC5ibHVlLGUudz10LmFscGhhLGUpOm5ldyB2dCh0LnJlZCx0LmdyZWVuLHQuYmx1ZSx0LmFscGhhKX07dnQuY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLng9dC54LGUueT10LnksZS56PXQueixlLnc9dC53LGUpOm5ldyB2dCh0LngsdC55LHQueix0LncpfTt2dC5wYWNrZWRMZW5ndGg9NDt2dC5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkseS5kZWZpbmVkKCJhcnJheSIsZSksbj1uPz8wLGVbbisrXT10LngsZVtuKytdPXQueSxlW24rK109dC56LGVbbl09dC53LGV9O3Z0LnVucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MCxtKG4pfHwobj1uZXcgdnQpLG4ueD10W2UrK10sbi55PXRbZSsrXSxuLno9dFtlKytdLG4udz10W2VdLG59O3Z0LnBhY2tBcnJheT1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgiYXJyYXkiLHQpO2xldCBuPXQubGVuZ3RoLG89bio0O2lmKCFtKGUpKWU9bmV3IEFycmF5KG8pO2Vsc2V7aWYoIUFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoIT09byl0aHJvdyBuZXcgRCgiSWYgcmVzdWx0IGlzIGEgdHlwZWQgYXJyYXksIGl0IG11c3QgaGF2ZSBleGFjdGx5IGFycmF5Lmxlbmd0aCAqIDQgZWxlbWVudHMiKTtlLmxlbmd0aCE9PW8mJihlLmxlbmd0aD1vKX1mb3IobGV0IHI9MDtyPG47KytyKXZ0LnBhY2sodFtyXSxlLHIqNCk7cmV0dXJuIGV9O3Z0LnVucGFja0FycmF5PWZ1bmN0aW9uKHQsZSl7aWYoeS5kZWZpbmVkKCJhcnJheSIsdCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImFycmF5Lmxlbmd0aCIsdC5sZW5ndGgsNCksdC5sZW5ndGglNCE9PTApdGhyb3cgbmV3IEQoImFycmF5IGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC4iKTtsZXQgbj10Lmxlbmd0aDttKGUpP2UubGVuZ3RoPW4vNDplPW5ldyBBcnJheShuLzQpO2ZvcihsZXQgbz0wO288bjtvKz00KXtsZXQgcj1vLzQ7ZVtyXT12dC51bnBhY2sodCxvLGVbcl0pfXJldHVybiBlfTt2dC5mcm9tQXJyYXk9dnQudW5wYWNrO3Z0Lm1heGltdW1Db21wb25lbnQ9ZnVuY3Rpb24odCl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSxNYXRoLm1heCh0LngsdC55LHQueix0LncpfTt2dC5taW5pbXVtQ29tcG9uZW50PWZ1bmN0aW9uKHQpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCksTWF0aC5taW4odC54LHQueSx0LnosdC53KX07dnQubWluaW11bUJ5Q29tcG9uZW50PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJmaXJzdCIsdCkseS50eXBlT2Yub2JqZWN0KCJzZWNvbmQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9TWF0aC5taW4odC54LGUueCksbi55PU1hdGgubWluKHQueSxlLnkpLG4uej1NYXRoLm1pbih0LnosZS56KSxuLnc9TWF0aC5taW4odC53LGUudyksbn07dnQubWF4aW11bUJ5Q29tcG9uZW50PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJmaXJzdCIsdCkseS50eXBlT2Yub2JqZWN0KCJzZWNvbmQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9TWF0aC5tYXgodC54LGUueCksbi55PU1hdGgubWF4KHQueSxlLnkpLG4uej1NYXRoLm1heCh0LnosZS56KSxuLnc9TWF0aC5tYXgodC53LGUudyksbn07dnQuY2xhbXA9ZnVuY3Rpb24odCxlLG4sbyl7eS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkseS50eXBlT2Yub2JqZWN0KCJtaW4iLGUpLHkudHlwZU9mLm9iamVjdCgibWF4IixuKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbyk7bGV0IHI9UC5jbGFtcCh0LngsZS54LG4ueCksaT1QLmNsYW1wKHQueSxlLnksbi55KSxzPVAuY2xhbXAodC56LGUueixuLnopLGY9UC5jbGFtcCh0LncsZS53LG4udyk7cmV0dXJuIG8ueD1yLG8ueT1pLG8uej1zLG8udz1mLG99O3Z0Lm1hZ25pdHVkZVNxdWFyZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSx0LngqdC54K3QueSp0LnkrdC56KnQueit0LncqdC53fTt2dC5tYWduaXR1ZGU9ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGguc3FydCh2dC5tYWduaXR1ZGVTcXVhcmVkKHQpKX07WWw9bmV3IHZ0O3Z0LmRpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksdnQuc3VidHJhY3QodCxlLFlsKSx2dC5tYWduaXR1ZGUoWWwpfTt2dC5kaXN0YW5jZVNxdWFyZWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx2dC5zdWJ0cmFjdCh0LGUsWWwpLHZ0Lm1hZ25pdHVkZVNxdWFyZWQoWWwpfTt2dC5ub3JtYWxpemU9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBuPXZ0Lm1hZ25pdHVkZSh0KTtpZihlLng9dC54L24sZS55PXQueS9uLGUuej10LnovbixlLnc9dC53L24saXNOYU4oZS54KXx8aXNOYU4oZS55KXx8aXNOYU4oZS56KXx8aXNOYU4oZS53KSl0aHJvdyBuZXcgRCgibm9ybWFsaXplZCByZXN1bHQgaXMgbm90IGEgbnVtYmVyIik7cmV0dXJuIGV9O3Z0LmRvdD1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHQueCplLngrdC55KmUueSt0LnoqZS56K3QudyplLnd9O3Z0Lm11bHRpcGx5Q29tcG9uZW50cz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ueD10LngqZS54LG4ueT10LnkqZS55LG4uej10LnoqZS56LG4udz10LncqZS53LG59O3Z0LmRpdmlkZUNvbXBvbmVudHM9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54L2UueCxuLnk9dC55L2UueSxuLno9dC56L2UueixuLnc9dC53L2UudyxufTt2dC5hZGQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54K2UueCxuLnk9dC55K2UueSxuLno9dC56K2UueixuLnc9dC53K2UudyxufTt2dC5zdWJ0cmFjdD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ueD10LngtZS54LG4ueT10LnktZS55LG4uej10LnotZS56LG4udz10LnctZS53LG59O3Z0Lm11bHRpcGx5QnlTY2FsYXI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkseS50eXBlT2YubnVtYmVyKCJzY2FsYXIiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54KmUsbi55PXQueSplLG4uej10LnoqZSxuLnc9dC53KmUsbn07dnQuZGl2aWRlQnlTY2FsYXI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCkseS50eXBlT2YubnVtYmVyKCJzY2FsYXIiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54L2Usbi55PXQueS9lLG4uej10LnovZSxuLnc9dC53L2Usbn07dnQubmVnYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PS10LngsZS55PS10LnksZS56PS10LnosZS53PS10LncsZX07dnQuYWJzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PU1hdGguYWJzKHQueCksZS55PU1hdGguYWJzKHQueSksZS56PU1hdGguYWJzKHQueiksZS53PU1hdGguYWJzKHQudyksZX07TDE9bmV3IHZ0O3Z0LmxlcnA9ZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgic3RhcnQiLHQpLHkudHlwZU9mLm9iamVjdCgiZW5kIixlKSx5LnR5cGVPZi5udW1iZXIoInQiLG4pLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixvKSx2dC5tdWx0aXBseUJ5U2NhbGFyKGUsbixMMSksbz12dC5tdWx0aXBseUJ5U2NhbGFyKHQsMS1uLG8pLHZ0LmFkZChMMSxvLG8pfTtXeD1uZXcgdnQ7dnQubW9zdE9ydGhvZ29uYWxBeGlzPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgbj12dC5ub3JtYWxpemUodCxXeCk7cmV0dXJuIHZ0LmFicyhuLG4pLG4ueDw9bi55P24ueDw9bi56P24ueDw9bi53P2U9dnQuY2xvbmUodnQuVU5JVF9YLGUpOmU9dnQuY2xvbmUodnQuVU5JVF9XLGUpOm4uejw9bi53P2U9dnQuY2xvbmUodnQuVU5JVF9aLGUpOmU9dnQuY2xvbmUodnQuVU5JVF9XLGUpOm4ueTw9bi56P24ueTw9bi53P2U9dnQuY2xvbmUodnQuVU5JVF9ZLGUpOmU9dnQuY2xvbmUodnQuVU5JVF9XLGUpOm4uejw9bi53P2U9dnQuY2xvbmUodnQuVU5JVF9aLGUpOmU9dnQuY2xvbmUodnQuVU5JVF9XLGUpLGV9O3Z0LmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmdC54PT09ZS54JiZ0Lnk9PT1lLnkmJnQuej09PWUueiYmdC53PT09ZS53fTt2dC5lcXVhbHNBcnJheT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQueD09PWVbbl0mJnQueT09PWVbbisxXSYmdC56PT09ZVtuKzJdJiZ0Lnc9PT1lW24rM119O3Z0LmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLG4sbyl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZQLmVxdWFsc0Vwc2lsb24odC54LGUueCxuLG8pJiZQLmVxdWFsc0Vwc2lsb24odC55LGUueSxuLG8pJiZQLmVxdWFsc0Vwc2lsb24odC56LGUueixuLG8pJiZQLmVxdWFsc0Vwc2lsb24odC53LGUudyxuLG8pfTt2dC5aRVJPPU9iamVjdC5mcmVlemUobmV3IHZ0KDAsMCwwLDApKTt2dC5PTkU9T2JqZWN0LmZyZWV6ZShuZXcgdnQoMSwxLDEsMSkpO3Z0LlVOSVRfWD1PYmplY3QuZnJlZXplKG5ldyB2dCgxLDAsMCwwKSk7dnQuVU5JVF9ZPU9iamVjdC5mcmVlemUobmV3IHZ0KDAsMSwwLDApKTt2dC5VTklUX1o9T2JqZWN0LmZyZWV6ZShuZXcgdnQoMCwwLDEsMCkpO3Z0LlVOSVRfVz1PYmplY3QuZnJlZXplKG5ldyB2dCgwLDAsMCwxKSk7dnQucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiB2dC5jbG9uZSh0aGlzLHQpfTt2dC5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB2dC5lcXVhbHModGhpcyx0KX07dnQucHJvdG90eXBlLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLG4pe3JldHVybiB2dC5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlLG4pfTt2dC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5gKCR7dGhpcy54fSwgJHt0aGlzLnl9LCAke3RoaXMuen0sICR7dGhpcy53fSlgfTtJbT1uZXcgRmxvYXQzMkFycmF5KDEpLFRvPW5ldyBVaW50OEFycmF5KEltLmJ1ZmZlciksWHg9bmV3IFVpbnQzMkFycmF5KFsyODc0NTQwMjBdKSxZeD1uZXcgVWludDhBcnJheShYeC5idWZmZXIpLEQxPVl4WzBdPT09Njg7dnQucGFja0Zsb2F0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm51bWJlcigidmFsdWUiLHQpLG0oZSl8fChlPW5ldyB2dCksSW1bMF09dCxEMT8oZS54PVRvWzBdLGUueT1Ub1sxXSxlLno9VG9bMl0sZS53PVRvWzNdKTooZS54PVRvWzNdLGUueT1Ub1syXSxlLno9VG9bMV0sZS53PVRvWzBdKSxlfTt2dC51bnBhY2tGbG9hdD1mdW5jdGlvbih0KXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJwYWNrZWRGbG9hdCIsdCksRDE/KFRvWzBdPXQueCxUb1sxXT10LnksVG9bMl09dC56LFRvWzNdPXQudyk6KFRvWzBdPXQudyxUb1sxXT10LnosVG9bMl09dC55LFRvWzNdPXQueCksSW1bMF19O21lPXZ0fSk7dmFyIHZtLEl0LHllPSQoKCk9Pnt2bT17fTt2bS5FTVBUWV9PQkpFQ1Q9T2JqZWN0LmZyZWV6ZSh7fSk7dm0uRU1QVFlfQVJSQVk9T2JqZWN0LmZyZWV6ZShbXSk7SXQ9dm19KTtmdW5jdGlvbiBzZih0KXt0aGlzLm5hbWU9IlJ1bnRpbWVFcnJvciIsdGhpcy5tZXNzYWdlPXQ7bGV0IGU7dHJ5e3Rocm93IG5ldyBFcnJvcn1jYXRjaChuKXtlPW4uc3RhY2t9dGhpcy5zdGFjaz1lfXZhciBBZSx0aT0kKCgpPT57ZnQoKTttKE9iamVjdC5jcmVhdGUpJiYoc2YucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKSxzZi5wcm90b3R5cGUuY29uc3RydWN0b3I9c2YpO3NmLnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2xldCB0PWAke3RoaXMubmFtZX06ICR7dGhpcy5tZXNzYWdlfWA7cmV0dXJuIG0odGhpcy5zdGFjaykmJih0Kz1gCiR7dGhpcy5zdGFjay50b1N0cmluZygpfWApLHR9O0FlPXNmfSk7ZnVuY3Rpb24gd3QodCxlLG4sbyxyLGkscyxmLHUsYyxsLHAsZCxoLF8sZyl7dGhpc1swXT10Pz8wLHRoaXNbMV09cj8/MCx0aGlzWzJdPXU/PzAsdGhpc1szXT1kPz8wLHRoaXNbNF09ZT8/MCx0aGlzWzVdPWk/PzAsdGhpc1s2XT1jPz8wLHRoaXNbN109aD8/MCx0aGlzWzhdPW4/PzAsdGhpc1s5XT1zPz8wLHRoaXNbMTBdPWw/PzAsdGhpc1sxMV09Xz8/MCx0aGlzWzEyXT1vPz8wLHRoaXNbMTNdPWY/PzAsdGhpc1sxNF09cD8/MCx0aGlzWzE1XT1nPz8wfXZhciBxYyxLYyxjZiwkeCxaeCxGbSxCMSxReCxKeCx0QyxlQyxuQyxvQyxyQyxzdCxrbj0kKCgpPT57RHQoKTtfcigpO1d0KCk7eWUoKTtmdCgpO0h0KCk7S3QoKTtVbigpO3RpKCk7d3QucGFja2VkTGVuZ3RoPTE2O3d0LnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzAsZVtuKytdPXRbMF0sZVtuKytdPXRbMV0sZVtuKytdPXRbMl0sZVtuKytdPXRbM10sZVtuKytdPXRbNF0sZVtuKytdPXRbNV0sZVtuKytdPXRbNl0sZVtuKytdPXRbN10sZVtuKytdPXRbOF0sZVtuKytdPXRbOV0sZVtuKytdPXRbMTBdLGVbbisrXT10WzExXSxlW24rK109dFsxMl0sZVtuKytdPXRbMTNdLGVbbisrXT10WzE0XSxlW25dPXRbMTVdLGV9O3d0LnVucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MCxtKG4pfHwobj1uZXcgd3QpLG5bMF09dFtlKytdLG5bMV09dFtlKytdLG5bMl09dFtlKytdLG5bM109dFtlKytdLG5bNF09dFtlKytdLG5bNV09dFtlKytdLG5bNl09dFtlKytdLG5bN109dFtlKytdLG5bOF09dFtlKytdLG5bOV09dFtlKytdLG5bMTBdPXRbZSsrXSxuWzExXT10W2UrK10sblsxMl09dFtlKytdLG5bMTNdPXRbZSsrXSxuWzE0XT10W2UrK10sblsxNV09dFtlXSxufTt3dC5wYWNrQXJyYXk9ZnVuY3Rpb24odCxlKXt5LmRlZmluZWQoImFycmF5Iix0KTtsZXQgbj10Lmxlbmd0aCxvPW4qMTY7aWYoIW0oZSkpZT1uZXcgQXJyYXkobyk7ZWxzZXtpZighQXJyYXkuaXNBcnJheShlKSYmZS5sZW5ndGghPT1vKXRocm93IG5ldyBEKCJJZiByZXN1bHQgaXMgYSB0eXBlZCBhcnJheSwgaXQgbXVzdCBoYXZlIGV4YWN0bHkgYXJyYXkubGVuZ3RoICogMTYgZWxlbWVudHMiKTtlLmxlbmd0aCE9PW8mJihlLmxlbmd0aD1vKX1mb3IobGV0IHI9MDtyPG47KytyKXd0LnBhY2sodFtyXSxlLHIqMTYpO3JldHVybiBlfTt3dC51bnBhY2tBcnJheT1mdW5jdGlvbih0LGUpe2lmKHkuZGVmaW5lZCgiYXJyYXkiLHQpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJhcnJheS5sZW5ndGgiLHQubGVuZ3RoLDE2KSx0Lmxlbmd0aCUxNiE9PTApdGhyb3cgbmV3IEQoImFycmF5IGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMTYuIik7bGV0IG49dC5sZW5ndGg7bShlKT9lLmxlbmd0aD1uLzE2OmU9bmV3IEFycmF5KG4vMTYpO2ZvcihsZXQgbz0wO288bjtvKz0xNil7bGV0IHI9by8xNjtlW3JdPXd0LnVucGFjayh0LG8sZVtyXSl9cmV0dXJuIGV9O3d0LmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZVszXT10WzNdLGVbNF09dFs0XSxlWzVdPXRbNV0sZVs2XT10WzZdLGVbN109dFs3XSxlWzhdPXRbOF0sZVs5XT10WzldLGVbMTBdPXRbMTBdLGVbMTFdPXRbMTFdLGVbMTJdPXRbMTJdLGVbMTNdPXRbMTNdLGVbMTRdPXRbMTRdLGVbMTVdPXRbMTVdLGUpOm5ldyB3dCh0WzBdLHRbNF0sdFs4XSx0WzEyXSx0WzFdLHRbNV0sdFs5XSx0WzEzXSx0WzJdLHRbNl0sdFsxMF0sdFsxNF0sdFszXSx0WzddLHRbMTFdLHRbMTVdKX07d3QuZnJvbUFycmF5PXd0LnVucGFjazt3dC5mcm9tQ29sdW1uTWFqb3JBcnJheT1mdW5jdGlvbih0LGUpe3JldHVybiB5LmRlZmluZWQoInZhbHVlcyIsdCksd3QuY2xvbmUodCxlKX07d3QuZnJvbVJvd01ham9yQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS5kZWZpbmVkKCJ2YWx1ZXMiLHQpLG0oZSk/KGVbMF09dFswXSxlWzFdPXRbNF0sZVsyXT10WzhdLGVbM109dFsxMl0sZVs0XT10WzFdLGVbNV09dFs1XSxlWzZdPXRbOV0sZVs3XT10WzEzXSxlWzhdPXRbMl0sZVs5XT10WzZdLGVbMTBdPXRbMTBdLGVbMTFdPXRbMTRdLGVbMTJdPXRbM10sZVsxM109dFs3XSxlWzE0XT10WzExXSxlWzE1XT10WzE1XSxlKTpuZXcgd3QodFswXSx0WzFdLHRbMl0sdFszXSx0WzRdLHRbNV0sdFs2XSx0WzddLHRbOF0sdFs5XSx0WzEwXSx0WzExXSx0WzEyXSx0WzEzXSx0WzE0XSx0WzE1XSl9O3d0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJyb3RhdGlvbiIsdCksZT1lPz9hLlpFUk8sbShuKT8oblswXT10WzBdLG5bMV09dFsxXSxuWzJdPXRbMl0sblszXT0wLG5bNF09dFszXSxuWzVdPXRbNF0sbls2XT10WzVdLG5bN109MCxuWzhdPXRbNl0sbls5XT10WzddLG5bMTBdPXRbOF0sblsxMV09MCxuWzEyXT1lLngsblsxM109ZS55LG5bMTRdPWUueixuWzE1XT0xLG4pOm5ldyB3dCh0WzBdLHRbM10sdFs2XSxlLngsdFsxXSx0WzRdLHRbN10sZS55LHRbMl0sdFs1XSx0WzhdLGUueiwwLDAsMCwxKX07d3QuZnJvbVRyYW5zbGF0aW9uUXVhdGVybmlvblJvdGF0aW9uU2NhbGU9ZnVuY3Rpb24odCxlLG4sbyl7eS50eXBlT2Yub2JqZWN0KCJ0cmFuc2xhdGlvbiIsdCkseS50eXBlT2Yub2JqZWN0KCJyb3RhdGlvbiIsZSkseS50eXBlT2Yub2JqZWN0KCJzY2FsZSIsbiksbShvKXx8KG89bmV3IHd0KTtsZXQgcj1uLngsaT1uLnkscz1uLnosZj1lLngqZS54LHU9ZS54KmUueSxjPWUueCplLnosbD1lLngqZS53LHA9ZS55KmUueSxkPWUueSplLnosaD1lLnkqZS53LF89ZS56KmUueixnPWUueiplLncsYj1lLncqZS53LHc9Zi1wLV8rYixPPTIqKHUtZyksRT0yKihjK2gpLFQ9MioodStnKSx4PS1mK3AtXytiLE09MiooZC1sKSxOPTIqKGMtaCksRj0yKihkK2wpLEk9LWYtcCtfK2I7cmV0dXJuIG9bMF09dypyLG9bMV09VCpyLG9bMl09TipyLG9bM109MCxvWzRdPU8qaSxvWzVdPXgqaSxvWzZdPUYqaSxvWzddPTAsb1s4XT1FKnMsb1s5XT1NKnMsb1sxMF09SSpzLG9bMTFdPTAsb1sxMl09dC54LG9bMTNdPXQueSxvWzE0XT10Lnosb1sxNV09MSxvfTt3dC5mcm9tVHJhbnNsYXRpb25Sb3RhdGlvblNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidHJhbnNsYXRpb25Sb3RhdGlvblNjYWxlIix0KSx3dC5mcm9tVHJhbnNsYXRpb25RdWF0ZXJuaW9uUm90YXRpb25TY2FsZSh0LnRyYW5zbGF0aW9uLHQucm90YXRpb24sdC5zY2FsZSxlKX07d3QuZnJvbVRyYW5zbGF0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidHJhbnNsYXRpb24iLHQpLHd0LmZyb21Sb3RhdGlvblRyYW5zbGF0aW9uKFouSURFTlRJVFksdCxlKX07d3QuZnJvbVNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgic2NhbGUiLHQpLG0oZSk/KGVbMF09dC54LGVbMV09MCxlWzJdPTAsZVszXT0wLGVbNF09MCxlWzVdPXQueSxlWzZdPTAsZVs3XT0wLGVbOF09MCxlWzldPTAsZVsxMF09dC56LGVbMTFdPTAsZVsxMl09MCxlWzEzXT0wLGVbMTRdPTAsZVsxNV09MSxlKTpuZXcgd3QodC54LDAsMCwwLDAsdC55LDAsMCwwLDAsdC56LDAsMCwwLDAsMSl9O3d0LmZyb21Vbmlmb3JtU2NhbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2YubnVtYmVyKCJzY2FsZSIsdCksbShlKT8oZVswXT10LGVbMV09MCxlWzJdPTAsZVszXT0wLGVbNF09MCxlWzVdPXQsZVs2XT0wLGVbN109MCxlWzhdPTAsZVs5XT0wLGVbMTBdPXQsZVsxMV09MCxlWzEyXT0wLGVbMTNdPTAsZVsxNF09MCxlWzE1XT0xLGUpOm5ldyB3dCh0LDAsMCwwLDAsdCwwLDAsMCwwLHQsMCwwLDAsMCwxKX07d3QuZnJvbVJvdGF0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgicm90YXRpb24iLHQpLG0oZSl8fChlPW5ldyB3dCksZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZVszXT0wLGVbNF09dFszXSxlWzVdPXRbNF0sZVs2XT10WzVdLGVbN109MCxlWzhdPXRbNl0sZVs5XT10WzddLGVbMTBdPXRbOF0sZVsxMV09MCxlWzEyXT0wLGVbMTNdPTAsZVsxNF09MCxlWzE1XT0xLGV9O3FjPW5ldyBhLEtjPW5ldyBhLGNmPW5ldyBhO3d0LmZyb21DYW1lcmE9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoImNhbWVyYSIsdCk7bGV0IG49dC5wb3NpdGlvbixvPXQuZGlyZWN0aW9uLHI9dC51cDt5LnR5cGVPZi5vYmplY3QoImNhbWVyYS5wb3NpdGlvbiIsbikseS50eXBlT2Yub2JqZWN0KCJjYW1lcmEuZGlyZWN0aW9uIixvKSx5LnR5cGVPZi5vYmplY3QoImNhbWVyYS51cCIsciksYS5ub3JtYWxpemUobyxxYyksYS5ub3JtYWxpemUoYS5jcm9zcyhxYyxyLEtjKSxLYyksYS5ub3JtYWxpemUoYS5jcm9zcyhLYyxxYyxjZiksY2YpO2xldCBpPUtjLngscz1LYy55LGY9S2Mueix1PXFjLngsYz1xYy55LGw9cWMueixwPWNmLngsZD1jZi55LGg9Y2YueixfPW4ueCxnPW4ueSxiPW4ueix3PWkqLV8rcyotZytmKi1iLE89cCotXytkKi1nK2gqLWIsRT11Kl8rYypnK2wqYjtyZXR1cm4gbShlKT8oZVswXT1pLGVbMV09cCxlWzJdPS11LGVbM109MCxlWzRdPXMsZVs1XT1kLGVbNl09LWMsZVs3XT0wLGVbOF09ZixlWzldPWgsZVsxMF09LWwsZVsxMV09MCxlWzEyXT13LGVbMTNdPU8sZVsxNF09RSxlWzE1XT0xLGUpOm5ldyB3dChpLHMsZix3LHAsZCxoLE8sLXUsLWMsLWwsRSwwLDAsMCwxKX07d3QuY29tcHV0ZVBlcnNwZWN0aXZlRmllbGRPZlZpZXc9ZnVuY3Rpb24odCxlLG4sbyxyKXt5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW4oImZvdlkiLHQsMCkseS50eXBlT2YubnVtYmVyLmxlc3NUaGFuKCJmb3ZZIix0LE1hdGguUEkpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbigibmVhciIsbiwwKSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW4oImZhciIsbywwKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIscik7bGV0IHM9MS9NYXRoLnRhbih0Ki41KSxmPXMvZSx1PShvK24pLyhuLW8pLGM9MipvKm4vKG4tbyk7cmV0dXJuIHJbMF09ZixyWzFdPTAsclsyXT0wLHJbM109MCxyWzRdPTAscls1XT1zLHJbNl09MCxyWzddPTAscls4XT0wLHJbOV09MCxyWzEwXT11LHJbMTFdPS0xLHJbMTJdPTAsclsxM109MCxyWzE0XT1jLHJbMTVdPTAscn07d3QuY29tcHV0ZU9ydGhvZ3JhcGhpY09mZkNlbnRlcj1mdW5jdGlvbih0LGUsbixvLHIsaSxzKXt5LnR5cGVPZi5udW1iZXIoImxlZnQiLHQpLHkudHlwZU9mLm51bWJlcigicmlnaHQiLGUpLHkudHlwZU9mLm51bWJlcigiYm90dG9tIixuKSx5LnR5cGVPZi5udW1iZXIoInRvcCIsbykseS50eXBlT2YubnVtYmVyKCJuZWFyIixyKSx5LnR5cGVPZi5udW1iZXIoImZhciIsaSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLHMpO2xldCBmPTEvKGUtdCksdT0xLyhvLW4pLGM9MS8oaS1yKSxsPS0oZSt0KSpmLHA9LShvK24pKnUsZD0tKGkrcikqYztyZXR1cm4gZio9Mix1Kj0yLGMqPS0yLHNbMF09ZixzWzFdPTAsc1syXT0wLHNbM109MCxzWzRdPTAsc1s1XT11LHNbNl09MCxzWzddPTAsc1s4XT0wLHNbOV09MCxzWzEwXT1jLHNbMTFdPTAsc1sxMl09bCxzWzEzXT1wLHNbMTRdPWQsc1sxNV09MSxzfTt3dC5jb21wdXRlUGVyc3BlY3RpdmVPZmZDZW50ZXI9ZnVuY3Rpb24odCxlLG4sbyxyLGkscyl7eS50eXBlT2YubnVtYmVyKCJsZWZ0Iix0KSx5LnR5cGVPZi5udW1iZXIoInJpZ2h0IixlKSx5LnR5cGVPZi5udW1iZXIoImJvdHRvbSIsbikseS50eXBlT2YubnVtYmVyKCJ0b3AiLG8pLHkudHlwZU9mLm51bWJlcigibmVhciIscikseS50eXBlT2YubnVtYmVyKCJmYXIiLGkpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixzKTtsZXQgZj0yKnIvKGUtdCksdT0yKnIvKG8tbiksYz0oZSt0KS8oZS10KSxsPShvK24pLyhvLW4pLHA9LShpK3IpLyhpLXIpLGQ9LTEsaD0tMippKnIvKGktcik7cmV0dXJuIHNbMF09ZixzWzFdPTAsc1syXT0wLHNbM109MCxzWzRdPTAsc1s1XT11LHNbNl09MCxzWzddPTAsc1s4XT1jLHNbOV09bCxzWzEwXT1wLHNbMTFdPWQsc1sxMl09MCxzWzEzXT0wLHNbMTRdPWgsc1sxNV09MCxzfTt3dC5jb21wdXRlSW5maW5pdGVQZXJzcGVjdGl2ZU9mZkNlbnRlcj1mdW5jdGlvbih0LGUsbixvLHIsaSl7eS50eXBlT2YubnVtYmVyKCJsZWZ0Iix0KSx5LnR5cGVPZi5udW1iZXIoInJpZ2h0IixlKSx5LnR5cGVPZi5udW1iZXIoImJvdHRvbSIsbikseS50eXBlT2YubnVtYmVyKCJ0b3AiLG8pLHkudHlwZU9mLm51bWJlcigibmVhciIscikseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGkpO2xldCBzPTIqci8oZS10KSxmPTIqci8oby1uKSx1PShlK3QpLyhlLXQpLGM9KG8rbikvKG8tbiksbD0tMSxwPS0xLGQ9LTIqcjtyZXR1cm4gaVswXT1zLGlbMV09MCxpWzJdPTAsaVszXT0wLGlbNF09MCxpWzVdPWYsaVs2XT0wLGlbN109MCxpWzhdPXUsaVs5XT1jLGlbMTBdPWwsaVsxMV09cCxpWzEyXT0wLGlbMTNdPTAsaVsxNF09ZCxpWzE1XT0wLGl9O3d0LmNvbXB1dGVWaWV3cG9ydFRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQsZSxuLG8pe20obyl8fChvPW5ldyB3dCksdD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IHI9dC54Pz8wLGk9dC55Pz8wLHM9dC53aWR0aD8/MCxmPXQuaGVpZ2h0Pz8wO2U9ZT8/MCxuPW4/PzE7bGV0IHU9cyouNSxjPWYqLjUsbD0obi1lKSouNSxwPXUsZD1jLGg9bCxfPXIrdSxnPWkrYyxiPWUrbCx3PTE7cmV0dXJuIG9bMF09cCxvWzFdPTAsb1syXT0wLG9bM109MCxvWzRdPTAsb1s1XT1kLG9bNl09MCxvWzddPTAsb1s4XT0wLG9bOV09MCxvWzEwXT1oLG9bMTFdPTAsb1sxMl09XyxvWzEzXT1nLG9bMTRdPWIsb1sxNV09dyxvfTt3dC5jb21wdXRlVmlldz1mdW5jdGlvbih0LGUsbixvLHIpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInBvc2l0aW9uIix0KSx5LnR5cGVPZi5vYmplY3QoImRpcmVjdGlvbiIsZSkseS50eXBlT2Yub2JqZWN0KCJ1cCIsbikseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsbykseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLHIpLHJbMF09by54LHJbMV09bi54LHJbMl09LWUueCxyWzNdPTAscls0XT1vLnkscls1XT1uLnkscls2XT0tZS55LHJbN109MCxyWzhdPW8ueixyWzldPW4ueixyWzEwXT0tZS56LHJbMTFdPTAsclsxMl09LWEuZG90KG8sdCksclsxM109LWEuZG90KG4sdCksclsxNF09YS5kb3QoZSx0KSxyWzE1XT0xLHJ9O3d0LnRvQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLG0oZSk/KGVbMF09dFswXSxlWzFdPXRbMV0sZVsyXT10WzJdLGVbM109dFszXSxlWzRdPXRbNF0sZVs1XT10WzVdLGVbNl09dFs2XSxlWzddPXRbN10sZVs4XT10WzhdLGVbOV09dFs5XSxlWzEwXT10WzEwXSxlWzExXT10WzExXSxlWzEyXT10WzEyXSxlWzEzXT10WzEzXSxlWzE0XT10WzE0XSxlWzE1XT10WzE1XSxlKTpbdFswXSx0WzFdLHRbMl0sdFszXSx0WzRdLHRbNV0sdFs2XSx0WzddLHRbOF0sdFs5XSx0WzEwXSx0WzExXSx0WzEyXSx0WzEzXSx0WzE0XSx0WzE1XV19O3d0LmdldEVsZW1lbnRJbmRleD1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygicm93IixlLDApLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJyb3ciLGUsMykseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImNvbHVtbiIsdCwwKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiY29sdW1uIix0LDMpLHQqNCtlfTt3dC5nZXRDb2x1bW49ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiaW5kZXgiLGUsMCkseS50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoImluZGV4IixlLDMpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz1lKjQscj10W29dLGk9dFtvKzFdLHM9dFtvKzJdLGY9dFtvKzNdO3JldHVybiBuLng9cixuLnk9aSxuLno9cyxuLnc9ZixufTt3dC5zZXRDb2x1bW49ZnVuY3Rpb24odCxlLG4sbyl7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwwKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiaW5kZXgiLGUsMykseS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLG4pLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixvKSxvPXd0LmNsb25lKHQsbyk7bGV0IHI9ZSo0O3JldHVybiBvW3JdPW4ueCxvW3IrMV09bi55LG9bcisyXT1uLnosb1tyKzNdPW4udyxvfTt3dC5nZXRSb3c9ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiaW5kZXgiLGUsMCkseS50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoImluZGV4IixlLDMpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz10W2VdLHI9dFtlKzRdLGk9dFtlKzhdLHM9dFtlKzEyXTtyZXR1cm4gbi54PW8sbi55PXIsbi56PWksbi53PXMsbn07d3Quc2V0Um93PWZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwzKSx5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsbikseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG8pLG89d3QuY2xvbmUodCxvKSxvW2VdPW4ueCxvW2UrNF09bi55LG9bZSs4XT1uLnosb1tlKzEyXT1uLncsb307d3Quc2V0VHJhbnNsYXRpb249ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2Yub2JqZWN0KCJ0cmFuc2xhdGlvbiIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG5bMF09dFswXSxuWzFdPXRbMV0sblsyXT10WzJdLG5bM109dFszXSxuWzRdPXRbNF0sbls1XT10WzVdLG5bNl09dFs2XSxuWzddPXRbN10sbls4XT10WzhdLG5bOV09dFs5XSxuWzEwXT10WzEwXSxuWzExXT10WzExXSxuWzEyXT1lLngsblsxM109ZS55LG5bMTRdPWUueixuWzE1XT10WzE1XSxufTskeD1uZXcgYTt3dC5zZXRTY2FsZT1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgic2NhbGUiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz13dC5nZXRTY2FsZSh0LCR4KSxyPWUueC9vLngsaT1lLnkvby55LHM9ZS56L28uejtyZXR1cm4gblswXT10WzBdKnIsblsxXT10WzFdKnIsblsyXT10WzJdKnIsblszXT10WzNdLG5bNF09dFs0XSppLG5bNV09dFs1XSppLG5bNl09dFs2XSppLG5bN109dFs3XSxuWzhdPXRbOF0qcyxuWzldPXRbOV0qcyxuWzEwXT10WzEwXSpzLG5bMTFdPXRbMTFdLG5bMTJdPXRbMTJdLG5bMTNdPXRbMTNdLG5bMTRdPXRbMTRdLG5bMTVdPXRbMTVdLG59O1p4PW5ldyBhO3d0LnNldFVuaWZvcm1TY2FsZT1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm51bWJlcigic2NhbGUiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz13dC5nZXRTY2FsZSh0LFp4KSxyPWUvby54LGk9ZS9vLnkscz1lL28uejtyZXR1cm4gblswXT10WzBdKnIsblsxXT10WzFdKnIsblsyXT10WzJdKnIsblszXT10WzNdLG5bNF09dFs0XSppLG5bNV09dFs1XSppLG5bNl09dFs2XSppLG5bN109dFs3XSxuWzhdPXRbOF0qcyxuWzldPXRbOV0qcyxuWzEwXT10WzEwXSpzLG5bMTFdPXRbMTFdLG5bMTJdPXRbMTJdLG5bMTNdPXRbMTNdLG5bMTRdPXRbMTRdLG5bMTVdPXRbMTVdLG59O0ZtPW5ldyBhO3d0LmdldFNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PWEubWFnbml0dWRlKGEuZnJvbUVsZW1lbnRzKHRbMF0sdFsxXSx0WzJdLEZtKSksZS55PWEubWFnbml0dWRlKGEuZnJvbUVsZW1lbnRzKHRbNF0sdFs1XSx0WzZdLEZtKSksZS56PWEubWFnbml0dWRlKGEuZnJvbUVsZW1lbnRzKHRbOF0sdFs5XSx0WzEwXSxGbSkpLGV9O0IxPW5ldyBhO3d0LmdldE1heGltdW1TY2FsZT1mdW5jdGlvbih0KXtyZXR1cm4gd3QuZ2V0U2NhbGUodCxCMSksYS5tYXhpbXVtQ29tcG9uZW50KEIxKX07UXg9bmV3IGE7d3Quc2V0Um90YXRpb249ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89d3QuZ2V0U2NhbGUodCxReCk7cmV0dXJuIG5bMF09ZVswXSpvLngsblsxXT1lWzFdKm8ueCxuWzJdPWVbMl0qby54LG5bM109dFszXSxuWzRdPWVbM10qby55LG5bNV09ZVs0XSpvLnksbls2XT1lWzVdKm8ueSxuWzddPXRbN10sbls4XT1lWzZdKm8ueixuWzldPWVbN10qby56LG5bMTBdPWVbOF0qby56LG5bMTFdPXRbMTFdLG5bMTJdPXRbMTJdLG5bMTNdPXRbMTNdLG5bMTRdPXRbMTRdLG5bMTVdPXRbMTVdLG59O0p4PW5ldyBhO3d0LmdldFJvdGF0aW9uPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgbj13dC5nZXRTY2FsZSh0LEp4KTtyZXR1cm4gZVswXT10WzBdL24ueCxlWzFdPXRbMV0vbi54LGVbMl09dFsyXS9uLngsZVszXT10WzRdL24ueSxlWzRdPXRbNV0vbi55LGVbNV09dFs2XS9uLnksZVs2XT10WzhdL24ueixlWzddPXRbOV0vbi56LGVbOF09dFsxMF0vbi56LGV9O3d0Lm11bHRpcGx5PWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz10WzBdLHI9dFsxXSxpPXRbMl0scz10WzNdLGY9dFs0XSx1PXRbNV0sYz10WzZdLGw9dFs3XSxwPXRbOF0sZD10WzldLGg9dFsxMF0sXz10WzExXSxnPXRbMTJdLGI9dFsxM10sdz10WzE0XSxPPXRbMTVdLEU9ZVswXSxUPWVbMV0seD1lWzJdLE09ZVszXSxOPWVbNF0sRj1lWzVdLEk9ZVs2XSx2PWVbN10sQj1lWzhdLEE9ZVs5XSxTPWVbMTBdLEM9ZVsxMV0sTD1lWzEyXSx6PWVbMTNdLGo9ZVsxNF0saz1lWzE1XSxxPW8qRStmKlQrcCp4K2cqTSxXPXIqRSt1KlQrZCp4K2IqTSxSPWkqRStjKlQraCp4K3cqTSxudD1zKkUrbCpUK18qeCtPKk0sYXQ9bypOK2YqRitwKkkrZyp2LGx0PXIqTit1KkYrZCpJK2IqdixfdD1pKk4rYypGK2gqSSt3KnYsb3Q9cypOK2wqRitfKkkrTyp2LFB0PW8qQitmKkErcCpTK2cqQyxndD1yKkIrdSpBK2QqUytiKkMsUnQ9aSpCK2MqQStoKlMrdypDLGR0PXMqQitsKkErXypTK08qQyxydD1vKkwrZip6K3AqaitnKmsseHQ9cipMK3UqeitkKmorYiprLEd0PWkqTCtjKnoraCpqK3cqayxwZT1zKkwrbCp6K18qaitPKms7cmV0dXJuIG5bMF09cSxuWzFdPVcsblsyXT1SLG5bM109bnQsbls0XT1hdCxuWzVdPWx0LG5bNl09X3Qsbls3XT1vdCxuWzhdPVB0LG5bOV09Z3QsblsxMF09UnQsblsxMV09ZHQsblsxMl09cnQsblsxM109eHQsblsxNF09R3QsblsxNV09cGUsbn07d3QuYWRkPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksblswXT10WzBdK2VbMF0sblsxXT10WzFdK2VbMV0sblsyXT10WzJdK2VbMl0sblszXT10WzNdK2VbM10sbls0XT10WzRdK2VbNF0sbls1XT10WzVdK2VbNV0sbls2XT10WzZdK2VbNl0sbls3XT10WzddK2VbN10sbls4XT10WzhdK2VbOF0sbls5XT10WzldK2VbOV0sblsxMF09dFsxMF0rZVsxMF0sblsxMV09dFsxMV0rZVsxMV0sblsxMl09dFsxMl0rZVsxMl0sblsxM109dFsxM10rZVsxM10sblsxNF09dFsxNF0rZVsxNF0sblsxNV09dFsxNV0rZVsxNV0sbn07d3Quc3VidHJhY3Q9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuWzBdPXRbMF0tZVswXSxuWzFdPXRbMV0tZVsxXSxuWzJdPXRbMl0tZVsyXSxuWzNdPXRbM10tZVszXSxuWzRdPXRbNF0tZVs0XSxuWzVdPXRbNV0tZVs1XSxuWzZdPXRbNl0tZVs2XSxuWzddPXRbN10tZVs3XSxuWzhdPXRbOF0tZVs4XSxuWzldPXRbOV0tZVs5XSxuWzEwXT10WzEwXS1lWzEwXSxuWzExXT10WzExXS1lWzExXSxuWzEyXT10WzEyXS1lWzEyXSxuWzEzXT10WzEzXS1lWzEzXSxuWzE0XT10WzE0XS1lWzE0XSxuWzE1XT10WzE1XS1lWzE1XSxufTt3dC5tdWx0aXBseVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz10WzBdLHI9dFsxXSxpPXRbMl0scz10WzRdLGY9dFs1XSx1PXRbNl0sYz10WzhdLGw9dFs5XSxwPXRbMTBdLGQ9dFsxMl0saD10WzEzXSxfPXRbMTRdLGc9ZVswXSxiPWVbMV0sdz1lWzJdLE89ZVs0XSxFPWVbNV0sVD1lWzZdLHg9ZVs4XSxNPWVbOV0sTj1lWzEwXSxGPWVbMTJdLEk9ZVsxM10sdj1lWzE0XSxCPW8qZytzKmIrYyp3LEE9cipnK2YqYitsKncsUz1pKmcrdSpiK3AqdyxDPW8qTytzKkUrYypULEw9cipPK2YqRStsKlQsej1pKk8rdSpFK3AqVCxqPW8qeCtzKk0rYypOLGs9cip4K2YqTStsKk4scT1pKngrdSpNK3AqTixXPW8qRitzKkkrYyp2K2QsUj1yKkYrZipJK2wqditoLG50PWkqRit1KkkrcCp2K187cmV0dXJuIG5bMF09QixuWzFdPUEsblsyXT1TLG5bM109MCxuWzRdPUMsbls1XT1MLG5bNl09eixuWzddPTAsbls4XT1qLG5bOV09ayxuWzEwXT1xLG5bMTFdPTAsblsxMl09VyxuWzEzXT1SLG5bMTRdPW50LG5bMTVdPTEsbn07d3QubXVsdGlwbHlCeU1hdHJpeDM9ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJvdGF0aW9uIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89dFswXSxyPXRbMV0saT10WzJdLHM9dFs0XSxmPXRbNV0sdT10WzZdLGM9dFs4XSxsPXRbOV0scD10WzEwXSxkPWVbMF0saD1lWzFdLF89ZVsyXSxnPWVbM10sYj1lWzRdLHc9ZVs1XSxPPWVbNl0sRT1lWzddLFQ9ZVs4XSx4PW8qZCtzKmgrYypfLE09cipkK2YqaCtsKl8sTj1pKmQrdSpoK3AqXyxGPW8qZytzKmIrYyp3LEk9cipnK2YqYitsKncsdj1pKmcrdSpiK3AqdyxCPW8qTytzKkUrYypULEE9cipPK2YqRStsKlQsUz1pKk8rdSpFK3AqVDtyZXR1cm4gblswXT14LG5bMV09TSxuWzJdPU4sblszXT0wLG5bNF09RixuWzVdPUksbls2XT12LG5bN109MCxuWzhdPUIsbls5XT1BLG5bMTBdPVMsblsxMV09MCxuWzEyXT10WzEyXSxuWzEzXT10WzEzXSxuWzE0XT10WzE0XSxuWzE1XT10WzE1XSxufTt3dC5tdWx0aXBseUJ5VHJhbnNsYXRpb249ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInRyYW5zbGF0aW9uIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89ZS54LHI9ZS55LGk9ZS56LHM9byp0WzBdK3IqdFs0XStpKnRbOF0rdFsxMl0sZj1vKnRbMV0rcip0WzVdK2kqdFs5XSt0WzEzXSx1PW8qdFsyXStyKnRbNl0raSp0WzEwXSt0WzE0XTtyZXR1cm4gblswXT10WzBdLG5bMV09dFsxXSxuWzJdPXRbMl0sblszXT10WzNdLG5bNF09dFs0XSxuWzVdPXRbNV0sbls2XT10WzZdLG5bN109dFs3XSxuWzhdPXRbOF0sbls5XT10WzldLG5bMTBdPXRbMTBdLG5bMTFdPXRbMTFdLG5bMTJdPXMsblsxM109ZixuWzE0XT11LG5bMTVdPXRbMTVdLG59O3d0Lm11bHRpcGx5QnlTY2FsZT1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgic2NhbGUiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz1lLngscj1lLnksaT1lLno7cmV0dXJuIG89PT0xJiZyPT09MSYmaT09PTE/d3QuY2xvbmUodCxuKTooblswXT1vKnRbMF0sblsxXT1vKnRbMV0sblsyXT1vKnRbMl0sblszXT10WzNdLG5bNF09cip0WzRdLG5bNV09cip0WzVdLG5bNl09cip0WzZdLG5bN109dFs3XSxuWzhdPWkqdFs4XSxuWzldPWkqdFs5XSxuWzEwXT1pKnRbMTBdLG5bMTFdPXRbMTFdLG5bMTJdPXRbMTJdLG5bMTNdPXRbMTNdLG5bMTRdPXRbMTRdLG5bMTVdPXRbMTVdLG4pfTt3dC5tdWx0aXBseUJ5VW5pZm9ybVNjYWxlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm51bWJlcigic2NhbGUiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuWzBdPXRbMF0qZSxuWzFdPXRbMV0qZSxuWzJdPXRbMl0qZSxuWzNdPXRbM10sbls0XT10WzRdKmUsbls1XT10WzVdKmUsbls2XT10WzZdKmUsbls3XT10WzddLG5bOF09dFs4XSplLG5bOV09dFs5XSplLG5bMTBdPXRbMTBdKmUsblsxMV09dFsxMV0sblsxMl09dFsxMl0sblsxM109dFsxM10sblsxNF09dFsxNF0sblsxNV09dFsxNV0sbn07d3QubXVsdGlwbHlCeVZlY3Rvcj1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89ZS54LHI9ZS55LGk9ZS56LHM9ZS53LGY9dFswXSpvK3RbNF0qcit0WzhdKmkrdFsxMl0qcyx1PXRbMV0qbyt0WzVdKnIrdFs5XSppK3RbMTNdKnMsYz10WzJdKm8rdFs2XSpyK3RbMTBdKmkrdFsxNF0qcyxsPXRbM10qbyt0WzddKnIrdFsxMV0qaSt0WzE1XSpzO3JldHVybiBuLng9ZixuLnk9dSxuLno9YyxuLnc9bCxufTt3dC5tdWx0aXBseUJ5UG9pbnRBc1ZlY3Rvcj1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89ZS54LHI9ZS55LGk9ZS56LHM9dFswXSpvK3RbNF0qcit0WzhdKmksZj10WzFdKm8rdFs1XSpyK3RbOV0qaSx1PXRbMl0qbyt0WzZdKnIrdFsxMF0qaTtyZXR1cm4gbi54PXMsbi55PWYsbi56PXUsbn07d3QubXVsdGlwbHlCeVBvaW50PWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz1lLngscj1lLnksaT1lLnoscz10WzBdKm8rdFs0XSpyK3RbOF0qaSt0WzEyXSxmPXRbMV0qbyt0WzVdKnIrdFs5XSppK3RbMTNdLHU9dFsyXSpvK3RbNl0qcit0WzEwXSppK3RbMTRdO3JldHVybiBuLng9cyxuLnk9ZixuLno9dSxufTt3dC5tdWx0aXBseUJ5U2NhbGFyPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm51bWJlcigic2NhbGFyIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksblswXT10WzBdKmUsblsxXT10WzFdKmUsblsyXT10WzJdKmUsblszXT10WzNdKmUsbls0XT10WzRdKmUsbls1XT10WzVdKmUsbls2XT10WzZdKmUsbls3XT10WzddKmUsbls4XT10WzhdKmUsbls5XT10WzldKmUsblsxMF09dFsxMF0qZSxuWzExXT10WzExXSplLG5bMTJdPXRbMTJdKmUsblsxM109dFsxM10qZSxuWzE0XT10WzE0XSplLG5bMTVdPXRbMTVdKmUsbn07d3QubmVnYXRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZVswXT0tdFswXSxlWzFdPS10WzFdLGVbMl09LXRbMl0sZVszXT0tdFszXSxlWzRdPS10WzRdLGVbNV09LXRbNV0sZVs2XT0tdFs2XSxlWzddPS10WzddLGVbOF09LXRbOF0sZVs5XT0tdFs5XSxlWzEwXT0tdFsxMF0sZVsxMV09LXRbMTFdLGVbMTJdPS10WzEyXSxlWzEzXT0tdFsxM10sZVsxNF09LXRbMTRdLGVbMTVdPS10WzE1XSxlfTt3dC50cmFuc3Bvc2U9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBuPXRbMV0sbz10WzJdLHI9dFszXSxpPXRbNl0scz10WzddLGY9dFsxMV07cmV0dXJuIGVbMF09dFswXSxlWzFdPXRbNF0sZVsyXT10WzhdLGVbM109dFsxMl0sZVs0XT1uLGVbNV09dFs1XSxlWzZdPXRbOV0sZVs3XT10WzEzXSxlWzhdPW8sZVs5XT1pLGVbMTBdPXRbMTBdLGVbMTFdPXRbMTRdLGVbMTJdPXIsZVsxM109cyxlWzE0XT1mLGVbMTVdPXRbMTVdLGV9O3d0LmFicz1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLGVbMF09TWF0aC5hYnModFswXSksZVsxXT1NYXRoLmFicyh0WzFdKSxlWzJdPU1hdGguYWJzKHRbMl0pLGVbM109TWF0aC5hYnModFszXSksZVs0XT1NYXRoLmFicyh0WzRdKSxlWzVdPU1hdGguYWJzKHRbNV0pLGVbNl09TWF0aC5hYnModFs2XSksZVs3XT1NYXRoLmFicyh0WzddKSxlWzhdPU1hdGguYWJzKHRbOF0pLGVbOV09TWF0aC5hYnModFs5XSksZVsxMF09TWF0aC5hYnModFsxMF0pLGVbMTFdPU1hdGguYWJzKHRbMTFdKSxlWzEyXT1NYXRoLmFicyh0WzEyXSksZVsxM109TWF0aC5hYnModFsxM10pLGVbMTRdPU1hdGguYWJzKHRbMTRdKSxlWzE1XT1NYXRoLmFicyh0WzE1XSksZX07d3QuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0WzEyXT09PWVbMTJdJiZ0WzEzXT09PWVbMTNdJiZ0WzE0XT09PWVbMTRdJiZ0WzBdPT09ZVswXSYmdFsxXT09PWVbMV0mJnRbMl09PT1lWzJdJiZ0WzRdPT09ZVs0XSYmdFs1XT09PWVbNV0mJnRbNl09PT1lWzZdJiZ0WzhdPT09ZVs4XSYmdFs5XT09PWVbOV0mJnRbMTBdPT09ZVsxMF0mJnRbM109PT1lWzNdJiZ0WzddPT09ZVs3XSYmdFsxMV09PT1lWzExXSYmdFsxNV09PT1lWzE1XX07d3QuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG49bj8/MCx0PT09ZXx8bSh0KSYmbShlKSYmTWF0aC5hYnModFswXS1lWzBdKTw9biYmTWF0aC5hYnModFsxXS1lWzFdKTw9biYmTWF0aC5hYnModFsyXS1lWzJdKTw9biYmTWF0aC5hYnModFszXS1lWzNdKTw9biYmTWF0aC5hYnModFs0XS1lWzRdKTw9biYmTWF0aC5hYnModFs1XS1lWzVdKTw9biYmTWF0aC5hYnModFs2XS1lWzZdKTw9biYmTWF0aC5hYnModFs3XS1lWzddKTw9biYmTWF0aC5hYnModFs4XS1lWzhdKTw9biYmTWF0aC5hYnModFs5XS1lWzldKTw9biYmTWF0aC5hYnModFsxMF0tZVsxMF0pPD1uJiZNYXRoLmFicyh0WzExXS1lWzExXSk8PW4mJk1hdGguYWJzKHRbMTJdLWVbMTJdKTw9biYmTWF0aC5hYnModFsxM10tZVsxM10pPD1uJiZNYXRoLmFicyh0WzE0XS1lWzE0XSk8PW4mJk1hdGguYWJzKHRbMTVdLWVbMTVdKTw9bn07d3QuZ2V0VHJhbnNsYXRpb249ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxlLng9dFsxMl0sZS55PXRbMTNdLGUuej10WzE0XSxlfTt3dC5nZXRNYXRyaXgzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZVszXT10WzRdLGVbNF09dFs1XSxlWzVdPXRbNl0sZVs2XT10WzhdLGVbN109dFs5XSxlWzhdPXRbMTBdLGV9O3RDPW5ldyBaLGVDPW5ldyBaLG5DPW5ldyBtZSxvQz1uZXcgbWUoMCwwLDAsMSk7d3QuaW52ZXJzZT1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IG49dFswXSxvPXRbNF0scj10WzhdLGk9dFsxMl0scz10WzFdLGY9dFs1XSx1PXRbOV0sYz10WzEzXSxsPXRbMl0scD10WzZdLGQ9dFsxMF0saD10WzE0XSxfPXRbM10sZz10WzddLGI9dFsxMV0sdz10WzE1XSxPPWQqdyxFPWgqYixUPXAqdyx4PWgqZyxNPXAqYixOPWQqZyxGPWwqdyxJPWgqXyx2PWwqYixCPWQqXyxBPWwqZyxTPXAqXyxDPU8qZit4KnUrTSpjLShFKmYrVCp1K04qYyksTD1FKnMrRip1K0IqYy0oTypzK0kqdSt2KmMpLHo9VCpzK0kqZitBKmMtKHgqcytGKmYrUypjKSxqPU4qcyt2KmYrUyp1LShNKnMrQipmK0EqdSksaz1FKm8rVCpyK04qaS0oTypvK3gqcitNKmkpLHE9TypuK0kqcit2KmktKEUqbitGKnIrQippKSxXPXgqbitGKm8rUyppLShUKm4rSSpvK0EqaSksUj1NKm4rQipvK0Eqci0oTipuK3YqbytTKnIpO089cipjLEU9aSp1LFQ9bypjLHg9aSpmLE09byp1LE49cipmLEY9bipjLEk9aSpzLHY9bip1LEI9cipzLEE9bipmLFM9bypzO2xldCBudD1PKmcreCpiK00qdy0oRSpnK1QqYitOKncpLGF0PUUqXytGKmIrQip3LShPKl8rSSpiK3YqdyksbHQ9VCpfK0kqZytBKnctKHgqXytGKmcrUyp3KSxfdD1OKl8rdipnK1MqYi0oTSpfK0IqZytBKmIpLG90PVQqZCtOKmgrRSpwLShNKmgrTypwK3gqZCksUHQ9dipoK08qbCtJKmQtKEYqZCtCKmgrRSpsKSxndD1GKnArUypoK3gqbC0oQSpoK1QqbCtJKnApLFJ0PUEqZCtNKmwrQipwLSh2KnArUypkK04qbCksZHQ9bipDK28qTCtyKnoraSpqO2lmKE1hdGguYWJzKGR0KTxQLkVQU0lMT04yMSl7aWYoWi5lcXVhbHNFcHNpbG9uKHd0LmdldE1hdHJpeDModCx0QyksZUMsUC5FUFNJTE9ONykmJm1lLmVxdWFscyh3dC5nZXRSb3codCwzLG5DKSxvQykpcmV0dXJuIGVbMF09MCxlWzFdPTAsZVsyXT0wLGVbM109MCxlWzRdPTAsZVs1XT0wLGVbNl09MCxlWzddPTAsZVs4XT0wLGVbOV09MCxlWzEwXT0wLGVbMTFdPTAsZVsxMl09LXRbMTJdLGVbMTNdPS10WzEzXSxlWzE0XT0tdFsxNF0sZVsxNV09MSxlO3Rocm93IG5ldyBBZSgibWF0cml4IGlzIG5vdCBpbnZlcnRpYmxlIGJlY2F1c2UgaXRzIGRldGVybWluYXRlIGlzIHplcm8uIil9cmV0dXJuIGR0PTEvZHQsZVswXT1DKmR0LGVbMV09TCpkdCxlWzJdPXoqZHQsZVszXT1qKmR0LGVbNF09aypkdCxlWzVdPXEqZHQsZVs2XT1XKmR0LGVbN109UipkdCxlWzhdPW50KmR0LGVbOV09YXQqZHQsZVsxMF09bHQqZHQsZVsxMV09X3QqZHQsZVsxMl09b3QqZHQsZVsxM109UHQqZHQsZVsxNF09Z3QqZHQsZVsxNV09UnQqZHQsZX07d3QuaW52ZXJzZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgbj10WzBdLG89dFsxXSxyPXRbMl0saT10WzRdLHM9dFs1XSxmPXRbNl0sdT10WzhdLGM9dFs5XSxsPXRbMTBdLHA9dFsxMl0sZD10WzEzXSxoPXRbMTRdLF89LW4qcC1vKmQtcipoLGc9LWkqcC1zKmQtZipoLGI9LXUqcC1jKmQtbCpoO3JldHVybiBlWzBdPW4sZVsxXT1pLGVbMl09dSxlWzNdPTAsZVs0XT1vLGVbNV09cyxlWzZdPWMsZVs3XT0wLGVbOF09cixlWzldPWYsZVsxMF09bCxlWzExXT0wLGVbMTJdPV8sZVsxM109ZyxlWzE0XT1iLGVbMTVdPTEsZX07ckM9bmV3IHd0O3d0LmludmVyc2VUcmFuc3Bvc2U9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSx3dC5pbnZlcnNlKHd0LnRyYW5zcG9zZSh0LHJDKSxlKX07d3QuSURFTlRJVFk9T2JqZWN0LmZyZWV6ZShuZXcgd3QoMSwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMSkpO3d0LlpFUk89T2JqZWN0LmZyZWV6ZShuZXcgd3QoMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCkpO3d0LkNPTFVNTjBST1cwPTA7d3QuQ09MVU1OMFJPVzE9MTt3dC5DT0xVTU4wUk9XMj0yO3d0LkNPTFVNTjBST1czPTM7d3QuQ09MVU1OMVJPVzA9NDt3dC5DT0xVTU4xUk9XMT01O3d0LkNPTFVNTjFST1cyPTY7d3QuQ09MVU1OMVJPVzM9Nzt3dC5DT0xVTU4yUk9XMD04O3d0LkNPTFVNTjJST1cxPTk7d3QuQ09MVU1OMlJPVzI9MTA7d3QuQ09MVU1OMlJPVzM9MTE7d3QuQ09MVU1OM1JPVzA9MTI7d3QuQ09MVU1OM1JPVzE9MTM7d3QuQ09MVU1OM1JPVzI9MTQ7d3QuQ09MVU1OM1JPVzM9MTU7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMod3QucHJvdG90eXBlLHtsZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB3dC5wYWNrZWRMZW5ndGh9fX0pO3d0LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gd3QuY2xvbmUodGhpcyx0KX07d3QucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gd3QuZXF1YWxzKHRoaXMsdCl9O3d0LmVxdWFsc0FycmF5PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdFswXT09PWVbbl0mJnRbMV09PT1lW24rMV0mJnRbMl09PT1lW24rMl0mJnRbM109PT1lW24rM10mJnRbNF09PT1lW24rNF0mJnRbNV09PT1lW24rNV0mJnRbNl09PT1lW24rNl0mJnRbN109PT1lW24rN10mJnRbOF09PT1lW24rOF0mJnRbOV09PT1lW24rOV0mJnRbMTBdPT09ZVtuKzEwXSYmdFsxMV09PT1lW24rMTFdJiZ0WzEyXT09PWVbbisxMl0mJnRbMTNdPT09ZVtuKzEzXSYmdFsxNF09PT1lW24rMTRdJiZ0WzE1XT09PWVbbisxNV19O3d0LnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHd0LmVxdWFsc0Vwc2lsb24odGhpcyx0LGUpfTt3dC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5gKCR7dGhpc1swXX0sICR7dGhpc1s0XX0sICR7dGhpc1s4XX0sICR7dGhpc1sxMl19KQooJHt0aGlzWzFdfSwgJHt0aGlzWzVdfSwgJHt0aGlzWzldfSwgJHt0aGlzWzEzXX0pCigke3RoaXNbMl19LCAke3RoaXNbNl19LCAke3RoaXNbMTBdfSwgJHt0aGlzWzE0XX0pCigke3RoaXNbM119LCAke3RoaXNbN119LCAke3RoaXNbMTFdfSwgJHt0aGlzWzE1XX0pYH07c3Q9d3R9KTtmdW5jdGlvbiBpQyh0LGUsbil7eS5kZWZpbmVkKCJhcnJheSIsdCkseS5kZWZpbmVkKCJpdGVtVG9GaW5kIixlKSx5LmRlZmluZWQoImNvbXBhcmF0b3IiLG4pO2xldCBvPTAscj10Lmxlbmd0aC0xLGkscztmb3IoO288PXI7KXtpZihpPX5+KChvK3IpLzIpLHM9bih0W2ldLGUpLHM8MCl7bz1pKzE7Y29udGludWV9aWYocz4wKXtyPWktMTtjb250aW51ZX1yZXR1cm4gaX1yZXR1cm5+KHIrMSl9dmFyIHpzLExtPSQoKCk9PntXdCgpO3pzPWlDfSk7ZnVuY3Rpb24gc0ModCxlLG4sbyxyKXt0aGlzLnhQb2xlV2FuZGVyPXQsdGhpcy55UG9sZVdhbmRlcj1lLHRoaXMueFBvbGVPZmZzZXQ9bix0aGlzLnlQb2xlT2Zmc2V0PW8sdGhpcy51dDFNaW51c1V0Yz1yfXZhciBhZixEbT0kKCgpPT57YWY9c0N9KTtmdW5jdGlvbiBjQyh0KXtpZih0PT09bnVsbHx8aXNOYU4odCkpdGhyb3cgbmV3IEQoInllYXIgaXMgcmVxdWlyZWQgYW5kIG11c3QgYmUgYSBudW1iZXIuIik7cmV0dXJuIHQlND09PTAmJnQlMTAwIT09MHx8dCU0MDA9PT0wfXZhciBmZixCbT0kKCgpPT57SHQoKTtmZj1jQ30pO2Z1bmN0aW9uIGFDKHQsZSxuLG8scixpLHMsZil7dD10Pz8xLGU9ZT8/MSxuPW4/PzEsbz1vPz8wLHI9cj8/MCxpPWk/PzAscz1zPz8wLGY9Zj8/ITEsZygpLGIoKSx0aGlzLnllYXI9dCx0aGlzLm1vbnRoPWUsdGhpcy5kYXk9bix0aGlzLmhvdXI9byx0aGlzLm1pbnV0ZT1yLHRoaXMuc2Vjb25kPWksdGhpcy5taWxsaXNlY29uZD1zLHRoaXMuaXNMZWFwU2Vjb25kPWY7ZnVuY3Rpb24gZygpe3kudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJZZWFyIix0LDEpLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJZZWFyIix0LDk5OTkpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJNb250aCIsZSwxKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiTW9udGgiLGUsMTIpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJEYXkiLG4sMSkseS50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoIkRheSIsbiwzMSkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIkhvdXIiLG8sMCkseS50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoIkhvdXIiLG8sMjMpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJNaW51dGUiLHIsMCkseS50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoIk1pbnV0ZSIsciw1OSkseS50eXBlT2YuYm9vbCgiSXNMZWFwU2Vjb25kIixmKSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiU2Vjb25kIixpLDApLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJTZWNvbmQiLGksZj82MDo1OSkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIk1pbGxpc2Vjb25kIixzLDApLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbigiTWlsbGlzZWNvbmQiLHMsMWUzKX1mdW5jdGlvbiBiKCl7bGV0IHc9ZT09PTImJmZmKHQpP1UxW2UtMV0rMTpVMVtlLTFdO2lmKG4+dyl0aHJvdyBuZXcgRCgiTW9udGggYW5kIERheSByZXByZXNlbnRzIGludmFsaWQgZGF0ZSIpfX12YXIgVTEsJGwsazE9JCgoKT0+e1d0KCk7SHQoKTtCbSgpO1UxPVszMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV07JGw9YUN9KTtmdW5jdGlvbiBmQyh0LGUpe3RoaXMuanVsaWFuRGF0ZT10LHRoaXMub2Zmc2V0PWV9dmFyIFhlLFVtPSQoKCk9PntYZT1mQ30pO3ZhciB1Qyx5bixabD0kKCgpPT57dUM9e1NFQ09ORFNfUEVSX01JTExJU0VDT05EOi4wMDEsU0VDT05EU19QRVJfTUlOVVRFOjYwLE1JTlVURVNfUEVSX0hPVVI6NjAsSE9VUlNfUEVSX0RBWToyNCxTRUNPTkRTX1BFUl9IT1VSOjM2MDAsTUlOVVRFU19QRVJfREFZOjE0NDAsU0VDT05EU19QRVJfREFZOjg2NDAwLERBWVNfUEVSX0pVTElBTl9DRU5UVVJZOjM2NTI1LFBJQ09TRUNPTkQ6MWUtOSxNT0RJRklFRF9KVUxJQU5fREFURV9ESUZGRVJFTkNFOjI0MDAwMDA1ZS0xfSx5bj1PYmplY3QuZnJlZXplKHVDKX0pO3ZhciBsQyxPZSxRbD0kKCgpPT57bEM9e1VUQzowLFRBSToxfSxPZT1PYmplY3QuZnJlZXplKGxDKX0pO2Z1bmN0aW9uIGttKHQsZSl7cmV0dXJuIHp0LmNvbXBhcmUodC5qdWxpYW5EYXRlLGUuanVsaWFuRGF0ZSl9ZnVuY3Rpb24gbnAodCl7V2MuanVsaWFuRGF0ZT10O2xldCBlPXp0LmxlYXBTZWNvbmRzLG49enMoZSxXYyxrbSk7bjwwJiYobj1+biksbj49ZS5sZW5ndGgmJihuPWUubGVuZ3RoLTEpO2xldCBvPWVbbl0ub2Zmc2V0O24+MCYmenQuc2Vjb25kc0RpZmZlcmVuY2UoZVtuXS5qdWxpYW5EYXRlLHQpPm8mJihuLS0sbz1lW25dLm9mZnNldCksenQuYWRkU2Vjb25kcyh0LG8sdCl9ZnVuY3Rpb24gRzEodCxlKXtXYy5qdWxpYW5EYXRlPXQ7bGV0IG49enQubGVhcFNlY29uZHMsbz16cyhuLFdjLGttKTtpZihvPDAmJihvPX5vKSxvPT09MClyZXR1cm4genQuYWRkU2Vjb25kcyh0LC1uWzBdLm9mZnNldCxlKTtpZihvPj1uLmxlbmd0aClyZXR1cm4genQuYWRkU2Vjb25kcyh0LC1uW28tMV0ub2Zmc2V0LGUpO2xldCByPXp0LnNlY29uZHNEaWZmZXJlbmNlKG5bb10uanVsaWFuRGF0ZSx0KTtpZihyPT09MClyZXR1cm4genQuYWRkU2Vjb25kcyh0LC1uW29dLm9mZnNldCxlKTtpZighKHI8PTEpKXJldHVybiB6dC5hZGRTZWNvbmRzKHQsLW5bLS1vXS5vZmZzZXQsZSl9ZnVuY3Rpb24gb3ModCxlLG4pe2xldCBvPWUveW4uU0VDT05EU19QRVJfREFZfDA7cmV0dXJuIHQrPW8sZS09eW4uU0VDT05EU19QRVJfREFZKm8sZTwwJiYodC0tLGUrPXluLlNFQ09ORFNfUEVSX0RBWSksbi5kYXlOdW1iZXI9dCxuLnNlY29uZHNPZkRheT1lLG59ZnVuY3Rpb24gR20odCxlLG4sbyxyLGkscyl7bGV0IGY9KGUtMTQpLzEyfDAsdT10KzQ4MDArZixjPSgxNDYxKnUvNHwwKSsoMzY3KihlLTItMTIqZikvMTJ8MCktKDMqKCh1KzEwMCkvMTAwfDApLzR8MCkrbi0zMjA3NTtvPW8tMTIsbzwwJiYobys9MjQpO2xldCBsPWkrKG8qeW4uU0VDT05EU19QRVJfSE9VUityKnluLlNFQ09ORFNfUEVSX01JTlVURStzKnluLlNFQ09ORFNfUEVSX01JTExJU0VDT05EKTtyZXR1cm4gbD49NDMyMDAmJihjLT0xKSxbYyxsXX1mdW5jdGlvbiB6dCh0LGUsbil7dGhpcy5kYXlOdW1iZXI9dm9pZCAwLHRoaXMuc2Vjb25kc09mRGF5PXZvaWQgMCx0PXQ/PzAsZT1lPz8wLG49bj8/T2UuVVRDO2xldCBvPXR8MDtlPWUrKHQtbykqeW4uU0VDT05EU19QRVJfREFZLG9zKG8sZSx0aGlzKSxuPT09T2UuVVRDJiZucCh0aGlzKX12YXIgVjEsSmwsdHAsV2MscEMsZEMsbUMsaEMsX0MsVm0seUMsZ0MsQUMsRHIsZXAsVm4sb3A9JCgoKT0+e0xtKCk7ZnQoKTtIdCgpO2sxKCk7Qm0oKTtVbSgpO1psKCk7UWwoKTtWMT1uZXcgJGwsSmw9WzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMxLDMwLDMxLDMwLDMxXSx0cD0yOTtXYz1uZXcgWGU7cEM9L14oXGR7NH0pJC8sZEM9L14oXGR7NH0pLShcZHsyfSkkLyxtQz0vXihcZHs0fSktPyhcZHszfSkkLyxoQz0vXihcZHs0fSktP1coXGR7Mn0pLT8oXGR7MX0pPyQvLF9DPS9eKFxkezR9KS0/KFxkezJ9KS0/KFxkezJ9KSQvLFZtPS8oW1orXC1dKT8oXGR7Mn0pPzo/KFxkezJ9KT8kLyx5Qz0vXihcZHsyfSkoXC5cZCspPy8uc291cmNlK1ZtLnNvdXJjZSxnQz0vXihcZHsyfSk6PyhcZHsyfSkoXC5cZCspPy8uc291cmNlK1ZtLnNvdXJjZSxBQz0vXihcZHsyfSk6PyhcZHsyfSk6PyhcZHsyfSkoXC5cZCspPy8uc291cmNlK1ZtLnNvdXJjZSxEcj0iSW52YWxpZCBJU08gODYwMSBkYXRlLiI7enQuZnJvbUdyZWdvcmlhbkRhdGU9ZnVuY3Rpb24odCxlKXtpZighKHQgaW5zdGFuY2VvZiAkbCkpdGhyb3cgbmV3IEQoImRhdGUgbXVzdCBiZSBhIHZhbGlkIEdyZWdvcmlhbkRhdGUuIik7bGV0IG49R20odC55ZWFyLHQubW9udGgsdC5kYXksdC5ob3VyLHQubWludXRlLHQuc2Vjb25kLHQubWlsbGlzZWNvbmQpO3JldHVybiBtKGUpPyhvcyhuWzBdLG5bMV0sZSksbnAoZSksZSk6bmV3IHp0KG5bMF0sblsxXSxPZS5VVEMpfTt6dC5mcm9tRGF0ZT1mdW5jdGlvbih0LGUpe2lmKCEodCBpbnN0YW5jZW9mIERhdGUpfHxpc05hTih0LmdldFRpbWUoKSkpdGhyb3cgbmV3IEQoImRhdGUgbXVzdCBiZSBhIHZhbGlkIEphdmFTY3JpcHQgRGF0ZS4iKTtsZXQgbj1HbSh0LmdldFVUQ0Z1bGxZZWFyKCksdC5nZXRVVENNb250aCgpKzEsdC5nZXRVVENEYXRlKCksdC5nZXRVVENIb3VycygpLHQuZ2V0VVRDTWludXRlcygpLHQuZ2V0VVRDU2Vjb25kcygpLHQuZ2V0VVRDTWlsbGlzZWNvbmRzKCkpO3JldHVybiBtKGUpPyhvcyhuWzBdLG5bMV0sZSksbnAoZSksZSk6bmV3IHp0KG5bMF0sblsxXSxPZS5VVEMpfTt6dC5mcm9tSXNvODYwMT1mdW5jdGlvbih0LGUpe2lmKHR5cGVvZiB0IT0ic3RyaW5nIil0aHJvdyBuZXcgRChEcik7dD10LnJlcGxhY2UoIiwiLCIuIik7bGV0IG49dC5zcGxpdCgiVCIpLG8scj0xLGk9MSxzPTAsZj0wLHU9MCxjPTAsbD1uWzBdLHA9blsxXSxkLGg7aWYoIW0obCkpdGhyb3cgbmV3IEQoRHIpO2xldCBfO2lmKG49bC5tYXRjaChfQyksbiE9PW51bGwpe2lmKF89bC5zcGxpdCgiLSIpLmxlbmd0aC0xLF8+MCYmXyE9PTIpdGhyb3cgbmV3IEQoRHIpO289K25bMV0scj0rblsyXSxpPStuWzNdfWVsc2UgaWYobj1sLm1hdGNoKGRDKSxuIT09bnVsbClvPStuWzFdLHI9K25bMl07ZWxzZSBpZihuPWwubWF0Y2gocEMpLG4hPT1udWxsKW89K25bMV07ZWxzZXtsZXQgTztpZihuPWwubWF0Y2gobUMpLG4hPT1udWxsKXtpZihvPStuWzFdLE89K25bMl0saD1mZihvKSxPPDF8fGgmJk8+MzY2fHwhaCYmTz4zNjUpdGhyb3cgbmV3IEQoRHIpfWVsc2UgaWYobj1sLm1hdGNoKGhDKSxuIT09bnVsbCl7bz0rblsxXTtsZXQgRT0rblsyXSxUPStuWzNdfHwwO2lmKF89bC5zcGxpdCgiLSIpLmxlbmd0aC0xLF8+MCYmKCFtKG5bM10pJiZfIT09MXx8bShuWzNdKSYmXyE9PTIpKXRocm93IG5ldyBEKERyKTtsZXQgeD1uZXcgRGF0ZShEYXRlLlVUQyhvLDAsNCkpO089RSo3K1QteC5nZXRVVENEYXkoKS0zfWVsc2UgdGhyb3cgbmV3IEQoRHIpO2Q9bmV3IERhdGUoRGF0ZS5VVEMobywwLDEpKSxkLnNldFVUQ0RhdGUoTykscj1kLmdldFVUQ01vbnRoKCkrMSxpPWQuZ2V0VVRDRGF0ZSgpfWlmKGg9ZmYobykscjwxfHxyPjEyfHxpPDF8fChyIT09Mnx8IWgpJiZpPkpsW3ItMV18fGgmJnI9PT0yJiZpPnRwKXRocm93IG5ldyBEKERyKTtsZXQgZztpZihtKHApKXtpZihuPXAubWF0Y2goQUMpLG4hPT1udWxsKXtpZihfPXAuc3BsaXQoIjoiKS5sZW5ndGgtMSxfPjAmJl8hPT0yJiZfIT09Myl0aHJvdyBuZXcgRChEcik7cz0rblsxXSxmPStuWzJdLHU9K25bM10sYz0rKG5bNF18fDApKjFlMyxnPTV9ZWxzZSBpZihuPXAubWF0Y2goZ0MpLG4hPT1udWxsKXtpZihfPXAuc3BsaXQoIjoiKS5sZW5ndGgtMSxfPjIpdGhyb3cgbmV3IEQoRHIpO3M9K25bMV0sZj0rblsyXSx1PSsoblszXXx8MCkqNjAsZz00fWVsc2UgaWYobj1wLm1hdGNoKHlDKSxuIT09bnVsbClzPStuWzFdLGY9KyhuWzJdfHwwKSo2MCxnPTM7ZWxzZSB0aHJvdyBuZXcgRChEcik7aWYoZj49NjB8fHU+PTYxfHxzPjI0fHxzPT09MjQmJihmPjB8fHU+MHx8Yz4wKSl0aHJvdyBuZXcgRChEcik7bGV0IE89bltnXSxFPStuW2crMV0sVD0rKG5bZysyXXx8MCk7c3dpdGNoKE8pe2Nhc2UiKyI6cz1zLUUsZj1mLVQ7YnJlYWs7Y2FzZSItIjpzPXMrRSxmPWYrVDticmVhaztjYXNlIloiOmJyZWFrO2RlZmF1bHQ6Zj1mK25ldyBEYXRlKERhdGUuVVRDKG8sci0xLGkscyxmKSkuZ2V0VGltZXpvbmVPZmZzZXQoKTticmVha319bGV0IGI9dT09PTYwO2ZvcihiJiZ1LS07Zj49NjA7KWYtPTYwLHMrKztmb3IoO3M+PTI0OylzLT0yNCxpKys7Zm9yKGQ9aCYmcj09PTI/dHA6Smxbci0xXTtpPmQ7KWktPWQscisrLHI+MTImJihyLT0xMixvKyspLGQ9aCYmcj09PTI/dHA6Smxbci0xXTtmb3IoO2Y8MDspZis9NjAscy0tO2Zvcig7czwwOylzKz0yNCxpLS07Zm9yKDtpPDE7KXItLSxyPDEmJihyKz0xMixvLS0pLGQ9aCYmcj09PTI/dHA6Smxbci0xXSxpKz1kO2xldCB3PUdtKG8scixpLHMsZix1LGMpO3JldHVybiBtKGUpPyhvcyh3WzBdLHdbMV0sZSksbnAoZSkpOmU9bmV3IHp0KHdbMF0sd1sxXSxPZS5VVEMpLGImJnp0LmFkZFNlY29uZHMoZSwxLGUpLGV9O3p0Lm5vdz1mdW5jdGlvbih0KXtyZXR1cm4genQuZnJvbURhdGUobmV3IERhdGUsdCl9O2VwPW5ldyB6dCgwLDAsT2UuVEFJKTt6dC50b0dyZWdvcmlhbkRhdGU9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgRCgianVsaWFuRGF0ZSBpcyByZXF1aXJlZC4iKTtsZXQgbj0hMSxvPUcxKHQsZXApO20obyl8fCh6dC5hZGRTZWNvbmRzKHQsLTEsZXApLG89RzEoZXAsZXApLG49ITApO2xldCByPW8uZGF5TnVtYmVyLGk9by5zZWNvbmRzT2ZEYXk7aT49NDMyMDAmJihyKz0xKTtsZXQgcz1yKzY4NTY5fDAsZj00KnMvMTQ2MDk3fDA7cz1zLSgoMTQ2MDk3KmYrMykvNHwwKXwwO2xldCB1PTRlMyoocysxKS8xNDYxMDAxfDA7cz1zLSgxNDYxKnUvNHwwKSszMXwwO2xldCBjPTgwKnMvMjQ0N3wwLGw9cy0oMjQ0NypjLzgwfDApfDA7cz1jLzExfDA7bGV0IHA9YysyLTEyKnN8MCxkPTEwMCooZi00OSkrdStzfDAsaD1pL3luLlNFQ09ORFNfUEVSX0hPVVJ8MCxfPWktaCp5bi5TRUNPTkRTX1BFUl9IT1VSLGc9Xy95bi5TRUNPTkRTX1BFUl9NSU5VVEV8MDtfPV8tZyp5bi5TRUNPTkRTX1BFUl9NSU5VVEU7bGV0IGI9X3wwLHc9KF8tYikveW4uU0VDT05EU19QRVJfTUlMTElTRUNPTkQ7cmV0dXJuIGgrPTEyLGg+MjMmJihoLT0yNCksbiYmKGIrPTEpLG0oZSk/KGUueWVhcj1kLGUubW9udGg9cCxlLmRheT1sLGUuaG91cj1oLGUubWludXRlPWcsZS5zZWNvbmQ9YixlLm1pbGxpc2Vjb25kPXcsZS5pc0xlYXBTZWNvbmQ9bixlKTpuZXcgJGwoZCxwLGwsaCxnLGIsdyxuKX07enQudG9EYXRlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJqdWxpYW5EYXRlIGlzIHJlcXVpcmVkLiIpO2xldCBlPXp0LnRvR3JlZ29yaWFuRGF0ZSh0LFYxKSxuPWUuc2Vjb25kO3JldHVybiBlLmlzTGVhcFNlY29uZCYmKG4tPTEpLG5ldyBEYXRlKERhdGUuVVRDKGUueWVhcixlLm1vbnRoLTEsZS5kYXksZS5ob3VyLGUubWludXRlLG4sZS5taWxsaXNlY29uZCkpfTt6dC50b0lzbzg2MDE9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgRCgianVsaWFuRGF0ZSBpcyByZXF1aXJlZC4iKTtsZXQgbj16dC50b0dyZWdvcmlhbkRhdGUodCxWMSksbz1uLnllYXIscj1uLm1vbnRoLGk9bi5kYXkscz1uLmhvdXIsZj1uLm1pbnV0ZSx1PW4uc2Vjb25kLGM9bi5taWxsaXNlY29uZDtvPT09MWU0JiZyPT09MSYmaT09PTEmJnM9PT0wJiZmPT09MCYmdT09PTAmJmM9PT0wJiYobz05OTk5LHI9MTIsaT0zMSxzPTI0KTtsZXQgbDtpZighbShlKSYmYyE9PTApe2xldCBwPWMqLjAxO3JldHVybiBsPXA8MWUtNj9wLnRvRml4ZWQoMjApLnJlcGxhY2UoIi4iLCIiKS5yZXBsYWNlKC8wKyQvLCIiKTpwLnRvU3RyaW5nKCkucmVwbGFjZSgiLiIsIiIpLGAke28udG9TdHJpbmcoKS5wYWRTdGFydCg0LCIwIil9LSR7ci50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX0tJHtpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfVQke3MudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9OiR7Zi50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX06JHt1LnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfS4ke2x9WmB9cmV0dXJuIW0oZSl8fGU9PT0wP2Ake28udG9TdHJpbmcoKS5wYWRTdGFydCg0LCIwIil9LSR7ci50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX0tJHtpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfVQke3MudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9OiR7Zi50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX06JHt1LnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfVpgOihsPShjKi4wMSkudG9GaXhlZChlKS5yZXBsYWNlKCIuIiwiIikuc2xpY2UoMCxlKSxgJHtvLnRvU3RyaW5nKCkucGFkU3RhcnQoNCwiMCIpfS0ke3IudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9LSR7aS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX1UJHtzLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwiMCIpfToke2YudG9TdHJpbmcoKS5wYWRTdGFydCgyLCIwIil9OiR7dS50b1N0cmluZygpLnBhZFN0YXJ0KDIsIjAiKX0uJHtsfVpgKX07enQuY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLmRheU51bWJlcj10LmRheU51bWJlcixlLnNlY29uZHNPZkRheT10LnNlY29uZHNPZkRheSxlKTpuZXcgenQodC5kYXlOdW1iZXIsdC5zZWNvbmRzT2ZEYXksT2UuVEFJKX07enQuY29tcGFyZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJsZWZ0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJyaWdodCBpcyByZXF1aXJlZC4iKTtsZXQgbj10LmRheU51bWJlci1lLmRheU51bWJlcjtyZXR1cm4gbiE9PTA/bjp0LnNlY29uZHNPZkRheS1lLnNlY29uZHNPZkRheX07enQuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0LmRheU51bWJlcj09PWUuZGF5TnVtYmVyJiZ0LnNlY29uZHNPZkRheT09PWUuc2Vjb25kc09mRGF5fTt6dC5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbj1uPz8wLHQ9PT1lfHxtKHQpJiZtKGUpJiZNYXRoLmFicyh6dC5zZWNvbmRzRGlmZmVyZW5jZSh0LGUpKTw9bn07enQudG90YWxEYXlzPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJqdWxpYW5EYXRlIGlzIHJlcXVpcmVkLiIpO3JldHVybiB0LmRheU51bWJlcit0LnNlY29uZHNPZkRheS95bi5TRUNPTkRTX1BFUl9EQVl9O3p0LnNlY29uZHNEaWZmZXJlbmNlPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImxlZnQgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoInJpZ2h0IGlzIHJlcXVpcmVkLiIpO3JldHVybih0LmRheU51bWJlci1lLmRheU51bWJlcikqeW4uU0VDT05EU19QRVJfREFZKyh0LnNlY29uZHNPZkRheS1lLnNlY29uZHNPZkRheSl9O3p0LmRheXNEaWZmZXJlbmNlPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImxlZnQgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoInJpZ2h0IGlzIHJlcXVpcmVkLiIpO2xldCBuPXQuZGF5TnVtYmVyLWUuZGF5TnVtYmVyLG89KHQuc2Vjb25kc09mRGF5LWUuc2Vjb25kc09mRGF5KS95bi5TRUNPTkRTX1BFUl9EQVk7cmV0dXJuIG4rb307enQuY29tcHV0ZVRhaU1pbnVzVXRjPWZ1bmN0aW9uKHQpe1djLmp1bGlhbkRhdGU9dDtsZXQgZT16dC5sZWFwU2Vjb25kcyxuPXpzKGUsV2Msa20pO3JldHVybiBuPDAmJihuPX5uLC0tbixuPDAmJihuPTApKSxlW25dLm9mZnNldH07enQuYWRkU2Vjb25kcz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImp1bGlhbkRhdGUgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoInNlY29uZHMgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoInJlc3VsdCBpcyByZXF1aXJlZC4iKTtyZXR1cm4gb3ModC5kYXlOdW1iZXIsdC5zZWNvbmRzT2ZEYXkrZSxuKX07enQuYWRkTWludXRlcz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImp1bGlhbkRhdGUgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoIm1pbnV0ZXMgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoInJlc3VsdCBpcyByZXF1aXJlZC4iKTtsZXQgbz10LnNlY29uZHNPZkRheStlKnluLlNFQ09ORFNfUEVSX01JTlVURTtyZXR1cm4gb3ModC5kYXlOdW1iZXIsbyxuKX07enQuYWRkSG91cnM9ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJqdWxpYW5EYXRlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJob3VycyBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgRCgicmVzdWx0IGlzIHJlcXVpcmVkLiIpO2xldCBvPXQuc2Vjb25kc09mRGF5K2UqeW4uU0VDT05EU19QRVJfSE9VUjtyZXR1cm4gb3ModC5kYXlOdW1iZXIsbyxuKX07enQuYWRkRGF5cz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImp1bGlhbkRhdGUgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImRheXMgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoInJlc3VsdCBpcyByZXF1aXJlZC4iKTtsZXQgbz10LmRheU51bWJlcitlO3JldHVybiBvcyhvLHQuc2Vjb25kc09mRGF5LG4pfTt6dC5sZXNzVGhhbj1mdW5jdGlvbih0LGUpe3JldHVybiB6dC5jb21wYXJlKHQsZSk8MH07enQubGVzc1RoYW5PckVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB6dC5jb21wYXJlKHQsZSk8PTB9O3p0LmdyZWF0ZXJUaGFuPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHp0LmNvbXBhcmUodCxlKT4wfTt6dC5ncmVhdGVyVGhhbk9yRXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHp0LmNvbXBhcmUodCxlKT49MH07enQucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiB6dC5jbG9uZSh0aGlzLHQpfTt6dC5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiB6dC5lcXVhbHModGhpcyx0KX07enQucHJvdG90eXBlLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlKXtyZXR1cm4genQuZXF1YWxzRXBzaWxvbih0aGlzLHQsZSl9O3p0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB6dC50b0lzbzg2MDEodGhpcyl9O3p0LmxlYXBTZWNvbmRzPVtuZXcgWGUobmV3IHp0KDI0NDEzMTcsNDMyMTAsT2UuVEFJKSwxMCksbmV3IFhlKG5ldyB6dCgyNDQxNDk5LDQzMjExLE9lLlRBSSksMTEpLG5ldyBYZShuZXcgenQoMjQ0MTY4Myw0MzIxMixPZS5UQUkpLDEyKSxuZXcgWGUobmV3IHp0KDI0NDIwNDgsNDMyMTMsT2UuVEFJKSwxMyksbmV3IFhlKG5ldyB6dCgyNDQyNDEzLDQzMjE0LE9lLlRBSSksMTQpLG5ldyBYZShuZXcgenQoMjQ0Mjc3OCw0MzIxNSxPZS5UQUkpLDE1KSxuZXcgWGUobmV3IHp0KDI0NDMxNDQsNDMyMTYsT2UuVEFJKSwxNiksbmV3IFhlKG5ldyB6dCgyNDQzNTA5LDQzMjE3LE9lLlRBSSksMTcpLG5ldyBYZShuZXcgenQoMjQ0Mzg3NCw0MzIxOCxPZS5UQUkpLDE4KSxuZXcgWGUobmV3IHp0KDI0NDQyMzksNDMyMTksT2UuVEFJKSwxOSksbmV3IFhlKG5ldyB6dCgyNDQ0Nzg2LDQzMjIwLE9lLlRBSSksMjApLG5ldyBYZShuZXcgenQoMjQ0NTE1MSw0MzIyMSxPZS5UQUkpLDIxKSxuZXcgWGUobmV3IHp0KDI0NDU1MTYsNDMyMjIsT2UuVEFJKSwyMiksbmV3IFhlKG5ldyB6dCgyNDQ2MjQ3LDQzMjIzLE9lLlRBSSksMjMpLG5ldyBYZShuZXcgenQoMjQ0NzE2MSw0MzIyNCxPZS5UQUkpLDI0KSxuZXcgWGUobmV3IHp0KDI0NDc4OTIsNDMyMjUsT2UuVEFJKSwyNSksbmV3IFhlKG5ldyB6dCgyNDQ4MjU3LDQzMjI2LE9lLlRBSSksMjYpLG5ldyBYZShuZXcgenQoMjQ0ODgwNCw0MzIyNyxPZS5UQUkpLDI3KSxuZXcgWGUobmV3IHp0KDI0NDkxNjksNDMyMjgsT2UuVEFJKSwyOCksbmV3IFhlKG5ldyB6dCgyNDQ5NTM0LDQzMjI5LE9lLlRBSSksMjkpLG5ldyBYZShuZXcgenQoMjQ1MDA4Myw0MzIzMCxPZS5UQUkpLDMwKSxuZXcgWGUobmV3IHp0KDI0NTA2MzAsNDMyMzEsT2UuVEFJKSwzMSksbmV3IFhlKG5ldyB6dCgyNDUxMTc5LDQzMjMyLE9lLlRBSSksMzIpLG5ldyBYZShuZXcgenQoMjQ1MzczNiw0MzIzMyxPZS5UQUkpLDMzKSxuZXcgWGUobmV3IHp0KDI0NTQ4MzIsNDMyMzQsT2UuVEFJKSwzNCksbmV3IFhlKG5ldyB6dCgyNDU2MTA5LDQzMjM1LE9lLlRBSSksMzUpLG5ldyBYZShuZXcgenQoMjQ1NzIwNCw0MzIzNixPZS5UQUkpLDM2KSxuZXcgWGUobmV3IHp0KDI0NTc3NTQsNDMyMzcsT2UuVEFJKSwzNyldO1ZuPXp0fSk7dmFyIHoxPVluKChYYyxZYyk9PnsvKiEgaHR0cHM6Ly9tdGhzLmJlL3B1bnljb2RlIHYxLjQuMCBieSBAbWF0aGlhcyAqLyhmdW5jdGlvbih0KXt2YXIgZT10eXBlb2YgWGM9PSJvYmplY3QiJiZYYyYmIVhjLm5vZGVUeXBlJiZYYyxuPXR5cGVvZiBZYz09Im9iamVjdCImJlljJiYhWWMubm9kZVR5cGUmJlljLG89dHlwZW9mIGdsb2JhbD09Im9iamVjdCImJmdsb2JhbDsoby5nbG9iYWw9PT1vfHxvLndpbmRvdz09PW98fG8uc2VsZj09PW8pJiYodD1vKTt2YXIgcixpPTIxNDc0ODM2NDcscz0zNixmPTEsdT0yNixjPTM4LGw9NzAwLHA9NzIsZD0xMjgsaD0iLSIsXz0vXnhuLS0vLGc9L1teXHgyMC1ceDdFXS8sYj0vW1x4MkVcdTMwMDJcdUZGMEVcdUZGNjFdL2csdz17b3ZlcmZsb3c6Ik92ZXJmbG93OiBpbnB1dCBuZWVkcyB3aWRlciBpbnRlZ2VycyB0byBwcm9jZXNzIiwibm90LWJhc2ljIjoiSWxsZWdhbCBpbnB1dCA+PSAweDgwIChub3QgYSBiYXNpYyBjb2RlIHBvaW50KSIsImludmFsaWQtaW5wdXQiOiJJbnZhbGlkIGlucHV0In0sTz1zLWYsRT1NYXRoLmZsb29yLFQ9U3RyaW5nLmZyb21DaGFyQ29kZSx4O2Z1bmN0aW9uIE0oayl7dGhyb3cgbmV3IFJhbmdlRXJyb3Iod1trXSl9ZnVuY3Rpb24gTihrLHEpe2Zvcih2YXIgVz1rLmxlbmd0aCxSPVtdO1ctLTspUltXXT1xKGtbV10pO3JldHVybiBSfWZ1bmN0aW9uIEYoayxxKXt2YXIgVz1rLnNwbGl0KCJAIiksUj0iIjtXLmxlbmd0aD4xJiYoUj1XWzBdKyJAIixrPVdbMV0pLGs9ay5yZXBsYWNlKGIsIi4iKTt2YXIgbnQ9ay5zcGxpdCgiLiIpLGF0PU4obnQscSkuam9pbigiLiIpO3JldHVybiBSK2F0fWZ1bmN0aW9uIEkoayl7Zm9yKHZhciBxPVtdLFc9MCxSPWsubGVuZ3RoLG50LGF0O1c8UjspbnQ9ay5jaGFyQ29kZUF0KFcrKyksbnQ+PTU1Mjk2JiZudDw9NTYzMTkmJlc8Uj8oYXQ9ay5jaGFyQ29kZUF0KFcrKyksKGF0JjY0NTEyKT09NTYzMjA/cS5wdXNoKCgobnQmMTAyMyk8PDEwKSsoYXQmMTAyMykrNjU1MzYpOihxLnB1c2gobnQpLFctLSkpOnEucHVzaChudCk7cmV0dXJuIHF9ZnVuY3Rpb24gdihrKXtyZXR1cm4gTihrLGZ1bmN0aW9uKHEpe3ZhciBXPSIiO3JldHVybiBxPjY1NTM1JiYocS09NjU1MzYsVys9VChxPj4+MTAmMTAyM3w1NTI5NikscT01NjMyMHxxJjEwMjMpLFcrPVQocSksV30pLmpvaW4oIiIpfWZ1bmN0aW9uIEIoayl7cmV0dXJuIGstNDg8MTA/ay0yMjprLTY1PDI2P2stNjU6ay05NzwyNj9rLTk3OnN9ZnVuY3Rpb24gQShrLHEpe3JldHVybiBrKzIyKzc1KihrPDI2KS0oKHEhPTApPDw1KX1mdW5jdGlvbiBTKGsscSxXKXt2YXIgUj0wO2ZvcihrPVc/RShrL2wpOms+PjEsays9RShrL3EpO2s+Typ1Pj4xO1IrPXMpaz1FKGsvTyk7cmV0dXJuIEUoUisoTysxKSprLyhrK2MpKX1mdW5jdGlvbiBDKGspe3ZhciBxPVtdLFc9ay5sZW5ndGgsUixudD0wLGF0PWQsbHQ9cCxfdCxvdCxQdCxndCxSdCxkdCxydCx4dCxHdDtmb3IoX3Q9ay5sYXN0SW5kZXhPZihoKSxfdDwwJiYoX3Q9MCksb3Q9MDtvdDxfdDsrK290KWsuY2hhckNvZGVBdChvdCk+PTEyOCYmTSgibm90LWJhc2ljIikscS5wdXNoKGsuY2hhckNvZGVBdChvdCkpO2ZvcihQdD1fdD4wP190KzE6MDtQdDxXOyl7Zm9yKGd0PW50LFJ0PTEsZHQ9cztQdD49VyYmTSgiaW52YWxpZC1pbnB1dCIpLHJ0PUIoay5jaGFyQ29kZUF0KFB0KyspKSwocnQ+PXN8fHJ0PkUoKGktbnQpL1J0KSkmJk0oIm92ZXJmbG93IiksbnQrPXJ0KlJ0LHh0PWR0PD1sdD9mOmR0Pj1sdCt1P3U6ZHQtbHQsIShydDx4dCk7ZHQrPXMpR3Q9cy14dCxSdD5FKGkvR3QpJiZNKCJvdmVyZmxvdyIpLFJ0Kj1HdDtSPXEubGVuZ3RoKzEsbHQ9UyhudC1ndCxSLGd0PT0wKSxFKG50L1IpPmktYXQmJk0oIm92ZXJmbG93IiksYXQrPUUobnQvUiksbnQlPVIscS5zcGxpY2UobnQrKywwLGF0KX1yZXR1cm4gdihxKX1mdW5jdGlvbiBMKGspe3ZhciBxLFcsUixudCxhdCxsdCxfdCxvdCxQdCxndCxSdCxkdD1bXSxydCx4dCxHdCxwZTtmb3Ioaz1JKGspLHJ0PWsubGVuZ3RoLHE9ZCxXPTAsYXQ9cCxsdD0wO2x0PHJ0OysrbHQpUnQ9a1tsdF0sUnQ8MTI4JiZkdC5wdXNoKFQoUnQpKTtmb3IoUj1udD1kdC5sZW5ndGgsbnQmJmR0LnB1c2goaCk7UjxydDspe2ZvcihfdD1pLGx0PTA7bHQ8cnQ7KytsdClSdD1rW2x0XSxSdD49cSYmUnQ8X3QmJihfdD1SdCk7Zm9yKHh0PVIrMSxfdC1xPkUoKGktVykveHQpJiZNKCJvdmVyZmxvdyIpLFcrPShfdC1xKSp4dCxxPV90LGx0PTA7bHQ8cnQ7KytsdClpZihSdD1rW2x0XSxSdDxxJiYrK1c+aSYmTSgib3ZlcmZsb3ciKSxSdD09cSl7Zm9yKG90PVcsUHQ9cztndD1QdDw9YXQ/ZjpQdD49YXQrdT91OlB0LWF0LCEob3Q8Z3QpO1B0Kz1zKXBlPW90LWd0LEd0PXMtZ3QsZHQucHVzaChUKEEoZ3QrcGUlR3QsMCkpKSxvdD1FKHBlL0d0KTtkdC5wdXNoKFQoQShvdCwwKSkpLGF0PVMoVyx4dCxSPT1udCksVz0wLCsrUn0rK1csKytxfXJldHVybiBkdC5qb2luKCIiKX1mdW5jdGlvbiB6KGspe3JldHVybiBGKGssZnVuY3Rpb24ocSl7cmV0dXJuIF8udGVzdChxKT9DKHEuc2xpY2UoNCkudG9Mb3dlckNhc2UoKSk6cX0pfWZ1bmN0aW9uIGooayl7cmV0dXJuIEYoayxmdW5jdGlvbihxKXtyZXR1cm4gZy50ZXN0KHEpPyJ4bi0tIitMKHEpOnF9KX1pZihyPXt2ZXJzaW9uOiIxLjMuMiIsdWNzMjp7ZGVjb2RlOkksZW5jb2RlOnZ9LGRlY29kZTpDLGVuY29kZTpMLHRvQVNDSUk6aix0b1VuaWNvZGU6en0sdHlwZW9mIGRlZmluZT09ImZ1bmN0aW9uIiYmdHlwZW9mIGRlZmluZS5hbWQ9PSJvYmplY3QiJiZkZWZpbmUuYW1kKWRlZmluZSgicHVueWNvZGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHJ9KTtlbHNlIGlmKGUmJm4paWYoWWMuZXhwb3J0cz09ZSluLmV4cG9ydHM9cjtlbHNlIGZvcih4IGluIHIpci5oYXNPd25Qcm9wZXJ0eSh4KSYmKGVbeF09clt4XSk7ZWxzZSB0LnB1bnljb2RlPXJ9KShYYyl9KTt2YXIgSDE9WW4oKGoxLHJwKT0+ey8qIQogKiBVUkkuanMgLSBNdXRhdGluZyBVUkxzCiAqIElQdjYgU3VwcG9ydAogKgogKiBWZXJzaW9uOiAxLjE5LjExCiAqCiAqIEF1dGhvcjogUm9kbmV5IFJlaG0KICogV2ViOiBodHRwOi8vbWVkaWFsaXplLmdpdGh1Yi5pby9VUkkuanMvCiAqCiAqIExpY2Vuc2VkIHVuZGVyCiAqICAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZQogKgogKi8oZnVuY3Rpb24odCxlKXsidXNlIHN0cmljdCI7dHlwZW9mIHJwPT0ib2JqZWN0IiYmcnAuZXhwb3J0cz9ycC5leHBvcnRzPWUoKTp0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kP2RlZmluZShlKTp0LklQdjY9ZSh0KX0pKGoxLGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgZT10JiZ0LklQdjY7ZnVuY3Rpb24gbihyKXt2YXIgaT1yLnRvTG93ZXJDYXNlKCkscz1pLnNwbGl0KCI6IiksZj1zLmxlbmd0aCx1PTg7c1swXT09PSIiJiZzWzFdPT09IiImJnNbMl09PT0iIj8ocy5zaGlmdCgpLHMuc2hpZnQoKSk6c1swXT09PSIiJiZzWzFdPT09IiI/cy5zaGlmdCgpOnNbZi0xXT09PSIiJiZzW2YtMl09PT0iIiYmcy5wb3AoKSxmPXMubGVuZ3RoLHNbZi0xXS5pbmRleE9mKCIuIikhPT0tMSYmKHU9Nyk7dmFyIGM7Zm9yKGM9MDtjPGYmJnNbY10hPT0iIjtjKyspO2lmKGM8dSlmb3Iocy5zcGxpY2UoYywxLCIwMDAwIik7cy5sZW5ndGg8dTspcy5zcGxpY2UoYywwLCIwMDAwIik7Zm9yKHZhciBsLHA9MDtwPHU7cCsrKXtsPXNbcF0uc3BsaXQoIiIpO2Zvcih2YXIgZD0wO2Q8MyYmKGxbMF09PT0iMCImJmwubGVuZ3RoPjEpO2QrKylsLnNwbGljZSgwLDEpO3NbcF09bC5qb2luKCIiKX12YXIgaD0tMSxfPTAsZz0wLGI9LTEsdz0hMTtmb3IocD0wO3A8dTtwKyspdz9zW3BdPT09IjAiP2crPTE6KHc9ITEsZz5fJiYoaD1iLF89ZykpOnNbcF09PT0iMCImJih3PSEwLGI9cCxnPTEpO2c+XyYmKGg9YixfPWcpLF8+MSYmcy5zcGxpY2UoaCxfLCIiKSxmPXMubGVuZ3RoO3ZhciBPPSIiO2ZvcihzWzBdPT09IiImJihPPSI6IikscD0wO3A8ZiYmKE8rPXNbcF0scCE9PWYtMSk7cCsrKU8rPSI6IjtyZXR1cm4gc1tmLTFdPT09IiImJihPKz0iOiIpLE99ZnVuY3Rpb24gbygpe3JldHVybiB0LklQdjY9PT10aGlzJiYodC5JUHY2PWUpLHRoaXN9cmV0dXJue2Jlc3Q6bixub0NvbmZsaWN0Om99fSl9KTt2YXIgSzE9WW4oKHExLGlwKT0+ey8qIQogKiBVUkkuanMgLSBNdXRhdGluZyBVUkxzCiAqIFNlY29uZCBMZXZlbCBEb21haW4gKFNMRCkgU3VwcG9ydAogKgogKiBWZXJzaW9uOiAxLjE5LjExCiAqCiAqIEF1dGhvcjogUm9kbmV5IFJlaG0KICogV2ViOiBodHRwOi8vbWVkaWFsaXplLmdpdGh1Yi5pby9VUkkuanMvCiAqCiAqIExpY2Vuc2VkIHVuZGVyCiAqICAgTUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZQogKgogKi8oZnVuY3Rpb24odCxlKXsidXNlIHN0cmljdCI7dHlwZW9mIGlwPT0ib2JqZWN0IiYmaXAuZXhwb3J0cz9pcC5leHBvcnRzPWUoKTp0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kP2RlZmluZShlKTp0LlNlY29uZExldmVsRG9tYWlucz1lKHQpfSkocTEsZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO3ZhciBlPXQmJnQuU2Vjb25kTGV2ZWxEb21haW5zLG49e2xpc3Q6e2FjOiIgY29tIGdvdiBtaWwgbmV0IG9yZyAiLGFlOiIgYWMgY28gZ292IG1pbCBuYW1lIG5ldCBvcmcgcHJvIHNjaCAiLGFmOiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLGFsOiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgIixhbzoiIGNvIGVkIGd2IGl0IG9nIHBiICIsYXI6IiBjb20gZWR1IGdvYiBnb3YgaW50IG1pbCBuZXQgb3JnIHR1ciAiLGF0OiIgYWMgY28gZ3Ygb3IgIixhdToiIGFzbiBjb20gY3Npcm8gZWR1IGdvdiBpZCBuZXQgb3JnICIsYmE6IiBjbyBjb20gZWR1IGdvdiBtaWwgbmV0IG9yZyBycyB1bmJpIHVubW8gdW5zYSB1bnR6IHVuemUgIixiYjoiIGJpeiBjbyBjb20gZWR1IGdvdiBpbmZvIG5ldCBvcmcgc3RvcmUgdHYgIixiaDoiIGJpeiBjYyBjb20gZWR1IGdvdiBpbmZvIG5ldCBvcmcgIixibjoiIGNvbSBlZHUgZ292IG5ldCBvcmcgIixibzoiIGNvbSBlZHUgZ29iIGdvdiBpbnQgbWlsIG5ldCBvcmcgdHYgIixicjoiIGFkbSBhZHYgYWdyIGFtIGFycSBhcnQgYXRvIGIgYmlvIGJsb2cgYm1kIGNpbSBjbmcgY250IGNvbSBjb29wIGVjbiBlZHUgZW5nIGVzcCBldGMgZXRpIGZhciBmbG9nIGZtIGZuZCBmb3QgZnN0IGcxMiBnZ2YgZ292IGltYiBpbmQgaW5mIGpvciBqdXMgbGVsIG1hdCBtZWQgbWlsIG11cyBuZXQgbm9tIG5vdCBudHIgb2RvIG9yZyBwcGcgcHJvIHBzYyBwc2kgcXNsIHJlYyBzbGcgc3J2IHRtcCB0cmQgdHVyIHR2IHZldCB2bG9nIHdpa2kgemxnICIsYnM6IiBjb20gZWR1IGdvdiBuZXQgb3JnICIsYno6IiBkdSBldCBvbSBvdiByZyAiLGNhOiIgYWIgYmMgbWIgbmIgbmYgbmwgbnMgbnQgbnUgb24gcGUgcWMgc2sgeWsgIixjazoiIGJpeiBjbyBlZHUgZ2VuIGdvdiBpbmZvIG5ldCBvcmcgIixjbjoiIGFjIGFoIGJqIGNvbSBjcSBlZHUgZmogZ2QgZ292IGdzIGd4IGd6IGhhIGhiIGhlIGhpIGhsIGhuIGpsIGpzIGp4IGxuIG1pbCBuZXQgbm0gbnggb3JnIHFoIHNjIHNkIHNoIHNuIHN4IHRqIHR3IHhqIHh6IHluIHpqICIsY286IiBjb20gZWR1IGdvdiBtaWwgbmV0IG5vbSBvcmcgIixjcjoiIGFjIGMgY28gZWQgZmkgZ28gb3Igc2EgIixjeToiIGFjIGJpeiBjb20gZWtsb2dlcyBnb3YgbHRkIG5hbWUgbmV0IG9yZyBwYXJsaWFtZW50IHByZXNzIHBybyB0bSAiLGRvOiIgYXJ0IGNvbSBlZHUgZ29iIGdvdiBtaWwgbmV0IG9yZyBzbGQgd2ViICIsZHo6IiBhcnQgYXNzbyBjb20gZWR1IGdvdiBuZXQgb3JnIHBvbCAiLGVjOiIgY29tIGVkdSBmaW4gZ292IGluZm8gbWVkIG1pbCBuZXQgb3JnIHBybyAiLGVnOiIgY29tIGVkdSBldW4gZ292IG1pbCBuYW1lIG5ldCBvcmcgc2NpICIsZXI6IiBjb20gZWR1IGdvdiBpbmQgbWlsIG5ldCBvcmcgcm9jaGVzdCB3ICIsZXM6IiBjb20gZWR1IGdvYiBub20gb3JnICIsZXQ6IiBiaXogY29tIGVkdSBnb3YgaW5mbyBuYW1lIG5ldCBvcmcgIixmajoiIGFjIGJpeiBjb20gaW5mbyBtaWwgbmFtZSBuZXQgb3JnIHBybyAiLGZrOiIgYWMgY28gZ292IG5ldCBub20gb3JnICIsZnI6IiBhc3NvIGNvbSBmIGdvdXYgbm9tIHByZCBwcmVzc2UgdG0gIixnZzoiIGNvIG5ldCBvcmcgIixnaDoiIGNvbSBlZHUgZ292IG1pbCBvcmcgIixnbjoiIGFjIGNvbSBnb3YgbmV0IG9yZyAiLGdyOiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgIixndDoiIGNvbSBlZHUgZ29iIGluZCBtaWwgbmV0IG9yZyAiLGd1OiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLGhrOiIgY29tIGVkdSBnb3YgaWR2IG5ldCBvcmcgIixodToiIDIwMDAgYWdyYXIgYm9sdCBjYXNpbm8gY2l0eSBjbyBlcm90aWNhIGVyb3Rpa2EgZmlsbSBmb3J1bSBnYW1lcyBob3RlbCBpbmZvIGluZ2F0bGFuIGpvZ2FzeiBrb255dmVsbyBsYWthcyBtZWRpYSBuZXdzIG9yZyBwcml2IHJla2xhbSBzZXggc2hvcCBzcG9ydCBzdWxpIHN6ZXggdG0gdG96c2RlIHV0YXphcyB2aWRlbyAiLGlkOiIgYWMgY28gZ28gbWlsIG5ldCBvciBzY2ggd2ViICIsaWw6IiBhYyBjbyBnb3YgaWRmIGsxMiBtdW5pIG5ldCBvcmcgIixpbjoiIGFjIGNvIGVkdSBlcm5ldCBmaXJtIGdlbiBnb3YgaSBpbmQgbWlsIG5ldCBuaWMgb3JnIHJlcyAiLGlxOiIgY29tIGVkdSBnb3YgaSBtaWwgbmV0IG9yZyAiLGlyOiIgYWMgY28gZG5zc2VjIGdvdiBpIGlkIG5ldCBvcmcgc2NoICIsaXQ6IiBlZHUgZ292ICIsamU6IiBjbyBuZXQgb3JnICIsam86IiBjb20gZWR1IGdvdiBtaWwgbmFtZSBuZXQgb3JnIHNjaCAiLGpwOiIgYWMgYWQgY28gZWQgZ28gZ3IgbGcgbmUgb3IgIixrZToiIGFjIGNvIGdvIGluZm8gbWUgbW9iaSBuZSBvciBzYyAiLGtoOiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgcGVyICIsa2k6IiBiaXogY29tIGRlIGVkdSBnb3YgaW5mbyBtb2IgbmV0IG9yZyB0ZWwgIixrbToiIGFzc28gY29tIGNvb3AgZWR1IGdvdXYgayBtZWRlY2luIG1pbCBub20gbm90YWlyZXMgcGhhcm1hY2llbnMgcHJlc3NlIHRtIHZldGVyaW5haXJlICIsa246IiBlZHUgZ292IG5ldCBvcmcgIixrcjoiIGFjIGJ1c2FuIGNodW5nYnVrIGNodW5nbmFtIGNvIGRhZWd1IGRhZWplb24gZXMgZ2FuZ3dvbiBnbyBnd2FuZ2p1IGd5ZW9uZ2J1ayBneWVvbmdnaSBneWVvbmduYW0gaHMgaW5jaGVvbiBqZWp1IGplb25idWsgamVvbm5hbSBrIGtnIG1pbCBtcyBuZSBvciBwZSByZSBzYyBzZW91bCB1bHNhbiAiLGt3OiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLGt5OiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLGt6OiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgIixsYjoiIGNvbSBlZHUgZ292IG5ldCBvcmcgIixsazoiIGFzc24gY29tIGVkdSBnb3YgZ3JwIGhvdGVsIGludCBsdGQgbmV0IG5nbyBvcmcgc2NoIHNvYyB3ZWIgIixscjoiIGNvbSBlZHUgZ292IG5ldCBvcmcgIixsdjoiIGFzbiBjb20gY29uZiBlZHUgZ292IGlkIG1pbCBuZXQgb3JnICIsbHk6IiBjb20gZWR1IGdvdiBpZCBtZWQgbmV0IG9yZyBwbGMgc2NoICIsbWE6IiBhYyBjbyBnb3YgbSBuZXQgb3JnIHByZXNzICIsbWM6IiBhc3NvIHRtICIsbWU6IiBhYyBjbyBlZHUgZ292IGl0cyBuZXQgb3JnIHByaXYgIixtZzoiIGNvbSBlZHUgZ292IG1pbCBub20gb3JnIHByZCB0bSAiLG1rOiIgY29tIGVkdSBnb3YgaW5mIG5hbWUgbmV0IG9yZyBwcm8gIixtbDoiIGNvbSBlZHUgZ292IG5ldCBvcmcgcHJlc3NlICIsbW46IiBlZHUgZ292IG9yZyAiLG1vOiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLG10OiIgY29tIGVkdSBnb3YgbmV0IG9yZyAiLG12OiIgYWVybyBiaXogY29tIGNvb3AgZWR1IGdvdiBpbmZvIGludCBtaWwgbXVzZXVtIG5hbWUgbmV0IG9yZyBwcm8gIixtdzoiIGFjIGNvIGNvbSBjb29wIGVkdSBnb3YgaW50IG11c2V1bSBuZXQgb3JnICIsbXg6IiBjb20gZWR1IGdvYiBuZXQgb3JnICIsbXk6IiBjb20gZWR1IGdvdiBtaWwgbmFtZSBuZXQgb3JnIHNjaCAiLG5mOiIgYXJ0cyBjb20gZmlybSBpbmZvIG5ldCBvdGhlciBwZXIgcmVjIHN0b3JlIHdlYiAiLG5nOiIgYml6IGNvbSBlZHUgZ292IG1pbCBtb2JpIG5hbWUgbmV0IG9yZyBzY2ggIixuaToiIGFjIGNvIGNvbSBlZHUgZ29iIG1pbCBuZXQgbm9tIG9yZyAiLG5wOiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgIixucjoiIGJpeiBjb20gZWR1IGdvdiBpbmZvIG5ldCBvcmcgIixvbToiIGFjIGJpeiBjbyBjb20gZWR1IGdvdiBtZWQgbWlsIG11c2V1bSBuZXQgb3JnIHBybyBzY2ggIixwZToiIGNvbSBlZHUgZ29iIG1pbCBuZXQgbm9tIG9yZyBzbGQgIixwaDoiIGNvbSBlZHUgZ292IGkgbWlsIG5ldCBuZ28gb3JnICIscGs6IiBiaXogY29tIGVkdSBmYW0gZ29iIGdvayBnb24gZ29wIGdvcyBnb3YgbmV0IG9yZyB3ZWIgIixwbDoiIGFydCBiaWFseXN0b2sgYml6IGNvbSBlZHUgZ2RhIGdkYW5zayBnb3J6b3cgZ292IGluZm8ga2F0b3dpY2Uga3Jha293IGxvZHogbHVibGluIG1pbCBuZXQgbmdvIG9sc3p0eW4gb3JnIHBvem5hbiBwd3IgcmFkb20gc2x1cHNrIHN6Y3plY2luIHRvcnVuIHdhcnN6YXdhIHdhdyB3cm9jIHdyb2NsYXcgemdvcmEgIixwcjoiIGFjIGJpeiBjb20gZWR1IGVzdCBnb3YgaW5mbyBpc2xhIG5hbWUgbmV0IG9yZyBwcm8gcHJvZiAiLHBzOiIgY29tIGVkdSBnb3YgbmV0IG9yZyBwbG8gc2VjICIscHc6IiBiZWxhdSBjbyBlZCBnbyBuZSBvciAiLHJvOiIgYXJ0cyBjb20gZmlybSBpbmZvIG5vbSBudCBvcmcgcmVjIHN0b3JlIHRtIHd3dyAiLHJzOiIgYWMgY28gZWR1IGdvdiBpbiBvcmcgIixzYjoiIGNvbSBlZHUgZ292IG5ldCBvcmcgIixzYzoiIGNvbSBlZHUgZ292IG5ldCBvcmcgIixzaDoiIGNvIGNvbSBlZHUgZ292IG5ldCBub20gb3JnICIsc2w6IiBjb20gZWR1IGdvdiBuZXQgb3JnICIsc3Q6IiBjbyBjb20gY29uc3VsYWRvIGVkdSBlbWJhaXhhZGEgZ292IG1pbCBuZXQgb3JnIHByaW5jaXBlIHNhb3RvbWUgc3RvcmUgIixzdjoiIGNvbSBlZHUgZ29iIG9yZyByZWQgIixzejoiIGFjIGNvIG9yZyAiLHRyOiIgYXYgYmJzIGJlbCBiaXogY29tIGRyIGVkdSBnZW4gZ292IGluZm8gazEyIG5hbWUgbmV0IG9yZyBwb2wgdGVsIHRzayB0diB3ZWIgIix0dDoiIGFlcm8gYml6IGNhdCBjbyBjb20gY29vcCBlZHUgZ292IGluZm8gaW50IGpvYnMgbWlsIG1vYmkgbXVzZXVtIG5hbWUgbmV0IG9yZyBwcm8gdGVsIHRyYXZlbCAiLHR3OiIgY2x1YiBjb20gZWJpeiBlZHUgZ2FtZSBnb3YgaWR2IG1pbCBuZXQgb3JnICIsbXU6IiBhYyBjbyBjb20gZ292IG5ldCBvciBvcmcgIixtejoiIGFjIGNvIGVkdSBnb3Ygb3JnICIsbmE6IiBjbyBjb20gIixuejoiIGFjIGNvIGNyaSBnZWVrIGdlbiBnb3Z0IGhlYWx0aCBpd2kgbWFvcmkgbWlsIG5ldCBvcmcgcGFybGlhbWVudCBzY2hvb2wgIixwYToiIGFibyBhYyBjb20gZWR1IGdvYiBpbmcgbWVkIG5ldCBub20gb3JnIHNsZCAiLHB0OiIgY29tIGVkdSBnb3YgaW50IG5ldCBub21lIG9yZyBwdWJsICIscHk6IiBjb20gZWR1IGdvdiBtaWwgbmV0IG9yZyAiLHFhOiIgY29tIGVkdSBnb3YgbWlsIG5ldCBvcmcgIixyZToiIGFzc28gY29tIG5vbSAiLHJ1OiIgYWMgYWR5Z2V5YSBhbHRhaSBhbXVyIGFya2hhbmdlbHNrIGFzdHJha2hhbiBiYXNoa2lyaWEgYmVsZ29yb2QgYmlyIGJyeWFuc2sgYnVyeWF0aWEgY2JnIGNoZWwgY2hlbHlhYmluc2sgY2hpdGEgY2h1a290a2EgY2h1dmFzaGlhIGNvbSBkYWdlc3RhbiBlLWJ1cmcgZWR1IGdvdiBncm96bnkgaW50IGlya3V0c2sgaXZhbm92byBpemhldnNrIGphciBqb3Noa2FyLW9sYSBrYWxteWtpYSBrYWx1Z2Ega2FtY2hhdGthIGthcmVsaWEga2F6YW4ga2NociBrZW1lcm92byBraGFiYXJvdnNrIGtoYWthc3NpYSBraHYga2lyb3Yga29lbmlnIGtvbWkga29zdHJvbWEga3Jhbm95YXJzayBrdWJhbiBrdXJnYW4ga3Vyc2sgbGlwZXRzayBtYWdhZGFuIG1hcmkgbWFyaS1lbCBtYXJpbmUgbWlsIG1vcmRvdmlhIG1vc3JlZyBtc2sgbXVybWFuc2sgbmFsY2hpayBuZXQgbm5vdiBub3Ygbm92b3NpYmlyc2sgbnNrIG9tc2sgb3JlbmJ1cmcgb3JnIG9yeW9sIHBlbnphIHBlcm0gcHAgcHNrb3YgcHR6IHJuZCByeWF6YW4gc2FraGFsaW4gc2FtYXJhIHNhcmF0b3Ygc2ltYmlyc2sgc21vbGVuc2sgc3BiIHN0YXZyb3BvbCBzdHYgc3VyZ3V0IHRhbWJvdiB0YXRhcnN0YW4gdG9tIHRvbXNrIHRzYXJpdHN5biB0c2sgdHVsYSB0dXZhIHR2ZXIgdHl1bWVuIHVkbSB1ZG11cnRpYSB1bGFuLXVkZSB2bGFkaWthdmtheiB2bGFkaW1pciB2bGFkaXZvc3RvayB2b2xnb2dyYWQgdm9sb2dkYSB2b3JvbmV6aCB2cm4gdnlhdGthIHlha3V0aWEgeWFtYWwgeWVrYXRlcmluYnVyZyB5dXpobm8tc2FraGFsaW5zayAiLHJ3OiIgYWMgY28gY29tIGVkdSBnb3V2IGdvdiBpbnQgbWlsIG5ldCAiLHNhOiIgY29tIGVkdSBnb3YgbWVkIG5ldCBvcmcgcHViIHNjaCAiLHNkOiIgY29tIGVkdSBnb3YgaW5mbyBtZWQgbmV0IG9yZyB0diAiLHNlOiIgYSBhYyBiIGJkIGMgZCBlIGYgZyBoIGkgayBsIG0gbiBvIG9yZyBwIHBhcnRpIHBwIHByZXNzIHIgcyB0IHRtIHUgdyB4IHkgeiAiLHNnOiIgY29tIGVkdSBnb3YgaWRuIG5ldCBvcmcgcGVyICIsc246IiBhcnQgY29tIGVkdSBnb3V2IG9yZyBwZXJzbyB1bml2ICIsc3k6IiBjb20gZWR1IGdvdiBtaWwgbmV0IG5ld3Mgb3JnICIsdGg6IiBhYyBjbyBnbyBpbiBtaSBuZXQgb3IgIix0ajoiIGFjIGJpeiBjbyBjb20gZWR1IGdvIGdvdiBpbmZvIGludCBtaWwgbmFtZSBuZXQgbmljIG9yZyB0ZXN0IHdlYiAiLHRuOiIgYWdyaW5ldCBjb20gZGVmZW5zZSBlZHVuZXQgZW5zIGZpbiBnb3YgaW5kIGluZm8gaW50bCBtaW5jb20gbmF0IG5ldCBvcmcgcGVyc28gcm5ydCBybnMgcm51IHRvdXJpc20gIix0ejoiIGFjIGNvIGdvIG5lIG9yICIsdWE6IiBiaXogY2hlcmthc3N5IGNoZXJuaWdvdiBjaGVybm92dHN5IGNrIGNuIGNvIGNvbSBjcmltZWEgY3YgZG4gZG5lcHJvcGV0cm92c2sgZG9uZXRzayBkcCBlZHUgZ292IGlmIGluIGl2YW5vLWZyYW5raXZzayBraCBraGFya292IGtoZXJzb24ga2htZWxuaXRza2l5IGtpZXYga2lyb3ZvZ3JhZCBrbSBrciBrcyBrdiBsZyBsdWdhbnNrIGx1dHNrIGx2aXYgbWUgbWsgbmV0IG5pa29sYWV2IG9kIG9kZXNzYSBvcmcgcGwgcG9sdGF2YSBwcCByb3ZubyBydiBzZWJhc3RvcG9sIHN1bXkgdGUgdGVybm9waWwgdXpoZ29yb2QgdmlubmljYSB2biB6YXBvcml6aHpoZSB6aGl0b21pciB6cCB6dCAiLHVnOiIgYWMgY28gZ28gbmUgb3Igb3JnIHNjICIsdWs6IiBhYyBibCBicml0aXNoLWxpYnJhcnkgY28gY3ltIGdvdiBnb3Z0IGljbmV0IGpldCBsZWEgbHRkIG1lIG1pbCBtb2QgbmF0aW9uYWwtbGlicmFyeS1zY290bGFuZCBuZWwgbmV0IG5ocyBuaWMgbmxzIG9yZyBvcmduIHBhcmxpYW1lbnQgcGxjIHBvbGljZSBzY2ggc2NvdCBzb2MgIix1czoiIGRuaSBmZWQgaXNhIGtpZHMgbnNuICIsdXk6IiBjb20gZWR1IGd1YiBtaWwgbmV0IG9yZyAiLHZlOiIgY28gY29tIGVkdSBnb2IgaW5mbyBtaWwgbmV0IG9yZyB3ZWIgIix2aToiIGNvIGNvbSBrMTIgbmV0IG9yZyAiLHZuOiIgYWMgYml6IGNvbSBlZHUgZ292IGhlYWx0aCBpbmZvIGludCBuYW1lIG5ldCBvcmcgcHJvICIseWU6IiBjbyBjb20gZ292IGx0ZCBtZSBuZXQgb3JnIHBsYyAiLHl1OiIgYWMgY28gZWR1IGdvdiBvcmcgIix6YToiIGFjIGFncmljIGFsdCBib3Vyc2UgY2l0eSBjbyBjeWJlcm5ldCBkYiBlZHUgZ292IGdyb25kYXIgaWFjY2VzcyBpbXQgaW5jYSBsYW5kZXNpZ24gbGF3IG1pbCBuZXQgbmdvIG5pcyBub20gb2xpdmV0dGkgb3JnIHBpeCBzY2hvb2wgdG0gd2ViICIsem06IiBhYyBjbyBjb20gZWR1IGdvdiBuZXQgb3JnIHNjaCAiLGNvbToiYXIgYnIgY24gZGUgZXUgZ2IgZ3IgaHUganBuIGtyIG5vIHFjIHJ1IHNhIHNlIHVrIHVzIHV5IHphICIsbmV0OiJnYiBqcCBzZSB1ayAiLG9yZzoiYWUiLGRlOiJjb20gIn0saGFzOmZ1bmN0aW9uKG8pe3ZhciByPW8ubGFzdEluZGV4T2YoIi4iKTtpZihyPD0wfHxyPj1vLmxlbmd0aC0xKXJldHVybiExO3ZhciBpPW8ubGFzdEluZGV4T2YoIi4iLHItMSk7aWYoaTw9MHx8aT49ci0xKXJldHVybiExO3ZhciBzPW4ubGlzdFtvLnNsaWNlKHIrMSldO3JldHVybiBzP3MuaW5kZXhPZigiICIrby5zbGljZShpKzEscikrIiAiKT49MDohMX0saXM6ZnVuY3Rpb24obyl7dmFyIHI9by5sYXN0SW5kZXhPZigiLiIpO2lmKHI8PTB8fHI+PW8ubGVuZ3RoLTEpcmV0dXJuITE7dmFyIGk9by5sYXN0SW5kZXhPZigiLiIsci0xKTtpZihpPj0wKXJldHVybiExO3ZhciBzPW4ubGlzdFtvLnNsaWNlKHIrMSldO3JldHVybiBzP3MuaW5kZXhPZigiICIrby5zbGljZSgwLHIpKyIgIik+PTA6ITF9LGdldDpmdW5jdGlvbihvKXt2YXIgcj1vLmxhc3RJbmRleE9mKCIuIik7aWYocjw9MHx8cj49by5sZW5ndGgtMSlyZXR1cm4gbnVsbDt2YXIgaT1vLmxhc3RJbmRleE9mKCIuIixyLTEpO2lmKGk8PTB8fGk+PXItMSlyZXR1cm4gbnVsbDt2YXIgcz1uLmxpc3Rbby5zbGljZShyKzEpXTtyZXR1cm4hc3x8cy5pbmRleE9mKCIgIitvLnNsaWNlKGkrMSxyKSsiICIpPDA/bnVsbDpvLnNsaWNlKGkrMSl9LG5vQ29uZmxpY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdC5TZWNvbmRMZXZlbERvbWFpbnM9PT10aGlzJiYodC5TZWNvbmRMZXZlbERvbWFpbnM9ZSksdGhpc319O3JldHVybiBufSl9KTt2YXIganM9WW4oKFcxLHNwKT0+ey8qIQogKiBVUkkuanMgLSBNdXRhdGluZyBVUkxzCiAqCiAqIFZlcnNpb246IDEuMTkuMTEKICoKICogQXV0aG9yOiBSb2RuZXkgUmVobQogKiBXZWI6IGh0dHA6Ly9tZWRpYWxpemUuZ2l0aHViLmlvL1VSSS5qcy8KICoKICogTGljZW5zZWQgdW5kZXIKICogICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlCiAqCiAqLyhmdW5jdGlvbih0LGUpeyJ1c2Ugc3RyaWN0Ijt0eXBlb2Ygc3A9PSJvYmplY3QiJiZzcC5leHBvcnRzP3NwLmV4cG9ydHM9ZSh6MSgpLEgxKCksSzEoKSk6dHlwZW9mIGRlZmluZT09ImZ1bmN0aW9uIiYmZGVmaW5lLmFtZD9kZWZpbmUoWyIuL3B1bnljb2RlIiwiLi9JUHY2IiwiLi9TZWNvbmRMZXZlbERvbWFpbnMiXSxlKTp0LlVSST1lKHQucHVueWNvZGUsdC5JUHY2LHQuU2Vjb25kTGV2ZWxEb21haW5zLHQpfSkoVzEsZnVuY3Rpb24odCxlLG4sbyl7InVzZSBzdHJpY3QiO3ZhciByPW8mJm8uVVJJO2Z1bmN0aW9uIGkoQSxTKXt2YXIgQz1hcmd1bWVudHMubGVuZ3RoPj0xLEw9YXJndW1lbnRzLmxlbmd0aD49MjtpZighKHRoaXMgaW5zdGFuY2VvZiBpKSlyZXR1cm4gQz9MP25ldyBpKEEsUyk6bmV3IGkoQSk6bmV3IGk7aWYoQT09PXZvaWQgMCl7aWYoQyl0aHJvdyBuZXcgVHlwZUVycm9yKCJ1bmRlZmluZWQgaXMgbm90IGEgdmFsaWQgYXJndW1lbnQgZm9yIFVSSSIpO3R5cGVvZiBsb2NhdGlvbjwidSI/QT1sb2NhdGlvbi5ocmVmKyIiOkE9IiJ9aWYoQT09PW51bGwmJkMpdGhyb3cgbmV3IFR5cGVFcnJvcigibnVsbCBpcyBub3QgYSB2YWxpZCBhcmd1bWVudCBmb3IgVVJJIik7cmV0dXJuIHRoaXMuaHJlZihBKSxTIT09dm9pZCAwP3RoaXMuYWJzb2x1dGVUbyhTKTp0aGlzfWZ1bmN0aW9uIHMoQSl7cmV0dXJuL15bMC05XSskLy50ZXN0KEEpfWkudmVyc2lvbj0iMS4xOS4xMSI7dmFyIGY9aS5wcm90b3R5cGUsdT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGMoQSl7cmV0dXJuIEEucmVwbGFjZSgvKFsuKis/Xj0hOiR7fSgpfFtcXVwvXFxdKS9nLCJcXCQxIil9ZnVuY3Rpb24gbChBKXtyZXR1cm4gQT09PXZvaWQgMD8iVW5kZWZpbmVkIjpTdHJpbmcoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKEEpKS5zbGljZSg4LC0xKX1mdW5jdGlvbiBwKEEpe3JldHVybiBsKEEpPT09IkFycmF5In1mdW5jdGlvbiBkKEEsUyl7dmFyIEM9e30sTCx6O2lmKGwoUyk9PT0iUmVnRXhwIilDPW51bGw7ZWxzZSBpZihwKFMpKWZvcihMPTAsej1TLmxlbmd0aDtMPHo7TCsrKUNbU1tMXV09ITA7ZWxzZSBDW1NdPSEwO2ZvcihMPTAsej1BLmxlbmd0aDtMPHo7TCsrKXt2YXIgaj1DJiZDW0FbTF1dIT09dm9pZCAwfHwhQyYmUy50ZXN0KEFbTF0pO2omJihBLnNwbGljZShMLDEpLHotLSxMLS0pfXJldHVybiBBfWZ1bmN0aW9uIGgoQSxTKXt2YXIgQyxMO2lmKHAoUykpe2ZvcihDPTAsTD1TLmxlbmd0aDtDPEw7QysrKWlmKCFoKEEsU1tDXSkpcmV0dXJuITE7cmV0dXJuITB9dmFyIHo9bChTKTtmb3IoQz0wLEw9QS5sZW5ndGg7QzxMO0MrKylpZih6PT09IlJlZ0V4cCIpe2lmKHR5cGVvZiBBW0NdPT0ic3RyaW5nIiYmQVtDXS5tYXRjaChTKSlyZXR1cm4hMH1lbHNlIGlmKEFbQ109PT1TKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIF8oQSxTKXtpZighcChBKXx8IXAoUyl8fEEubGVuZ3RoIT09Uy5sZW5ndGgpcmV0dXJuITE7QS5zb3J0KCksUy5zb3J0KCk7Zm9yKHZhciBDPTAsTD1BLmxlbmd0aDtDPEw7QysrKWlmKEFbQ10hPT1TW0NdKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGcoQSl7dmFyIFM9L15cLyt8XC8rJC9nO3JldHVybiBBLnJlcGxhY2UoUywiIil9aS5fcGFydHM9ZnVuY3Rpb24oKXtyZXR1cm57cHJvdG9jb2w6bnVsbCx1c2VybmFtZTpudWxsLHBhc3N3b3JkOm51bGwsaG9zdG5hbWU6bnVsbCx1cm46bnVsbCxwb3J0Om51bGwscGF0aDpudWxsLHF1ZXJ5Om51bGwsZnJhZ21lbnQ6bnVsbCxwcmV2ZW50SW52YWxpZEhvc3RuYW1lOmkucHJldmVudEludmFsaWRIb3N0bmFtZSxkdXBsaWNhdGVRdWVyeVBhcmFtZXRlcnM6aS5kdXBsaWNhdGVRdWVyeVBhcmFtZXRlcnMsZXNjYXBlUXVlcnlTcGFjZTppLmVzY2FwZVF1ZXJ5U3BhY2V9fSxpLnByZXZlbnRJbnZhbGlkSG9zdG5hbWU9ITEsaS5kdXBsaWNhdGVRdWVyeVBhcmFtZXRlcnM9ITEsaS5lc2NhcGVRdWVyeVNwYWNlPSEwLGkucHJvdG9jb2xfZXhwcmVzc2lvbj0vXlthLXpdW2EtejAtOS4rLV0qJC9pLGkuaWRuX2V4cHJlc3Npb249L1teYS16MC05XC5fLV0vaSxpLnB1bnljb2RlX2V4cHJlc3Npb249Lyh4bi0tKS9pLGkuaXA0X2V4cHJlc3Npb249L15cZHsxLDN9XC5cZHsxLDN9XC5cZHsxLDN9XC5cZHsxLDN9JC8saS5pcDZfZXhwcmVzc2lvbj0vXlxzKigoKFswLTlBLUZhLWZdezEsNH06KXs3fShbMC05QS1GYS1mXXsxLDR9fDopKXwoKFswLTlBLUZhLWZdezEsNH06KXs2fSg6WzAtOUEtRmEtZl17MSw0fXwoKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKFwuKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezV9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsMn0pfDooKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKFwuKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezR9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsM30pfCgoOlswLTlBLUZhLWZdezEsNH0pPzooKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKFwuKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKXszfSkpfDopKXwoKFswLTlBLUZhLWZdezEsNH06KXszfSgoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDR9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDJ9OigoMjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XT9cZCkoXC4oMjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XT9cZCkpezN9KSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezJ9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsNX0pfCgoOlswLTlBLUZhLWZdezEsNH0pezAsM306KCgyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldP1xkKShcLigyNVswLTVdfDJbMC00XVxkfDFcZFxkfFsxLTldP1xkKSl7M30pKXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7MX0oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSw2fSl8KCg6WzAtOUEtRmEtZl17MSw0fSl7MCw0fTooKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKFwuKDI1WzAtNV18MlswLTRdXGR8MVxkXGR8WzEtOV0/XGQpKXszfSkpfDopKXwoOigoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDd9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDV9OigoMjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XT9cZCkoXC4oMjVbMC01XXwyWzAtNF1cZHwxXGRcZHxbMS05XT9cZCkpezN9KSl8OikpKSglLispP1xzKiQvLGkuZmluZF91cmlfZXhwcmVzc2lvbj0vXGIoKD86W2Etel1bXHctXSs6KD86XC97MSwzfXxbYS16MC05JV0pfHd3d1xkezAsM31bLl18W2EtejAtOS5cLV0rWy5dW2Etel17Miw0fVwvKSg/OlteXHMoKTw+XSt8XCgoW15ccygpPD5dK3woXChbXlxzKCk8Pl0rXCkpKSpcKSkrKD86XCgoW15ccygpPD5dK3woXChbXlxzKCk8Pl0rXCkpKSpcKXxbXlxzYCEoKVxbXF17fTs6JyIuLDw+P8KrwrvigJzigJ3igJjigJldKSkvaWcsaS5maW5kVXJpPXtzdGFydDovXGIoPzooW2Etel1bYS16MC05ListXSo6XC9cLyl8d3d3XC4pL2dpLGVuZDovW1xzXHJcbl18JC8sdHJpbTovW2AhKClcW1xde307OiciLiw8Pj/Cq8K74oCc4oCd4oCe4oCY4oCZXSskLyxwYXJlbnM6LyhcKFteXCldKlwpfFxbW15cXV0qXF18XHtbXn1dKlx9fDxbXj5dKj4pL2d9LGkubGVhZGluZ193aGl0ZXNwYWNlX2V4cHJlc3Npb249L15bXHgwMC1ceDIwXHUwMGEwXHUxNjgwXHUyMDAwLVx1MjAwYVx1MjAyOFx1MjAyOVx1MjAyZlx1MjA1Zlx1MzAwMFx1ZmVmZl0rLyxpLmFzY2lpX3RhYl93aGl0ZXNwYWNlPS9bXHUwMDA5XHUwMDBBXHUwMDBEXSsvZyxpLmRlZmF1bHRQb3J0cz17aHR0cDoiODAiLGh0dHBzOiI0NDMiLGZ0cDoiMjEiLGdvcGhlcjoiNzAiLHdzOiI4MCIsd3NzOiI0NDMifSxpLmhvc3RQcm90b2NvbHM9WyJodHRwIiwiaHR0cHMiXSxpLmludmFsaWRfaG9zdG5hbWVfY2hhcmFjdGVycz0vW15hLXpBLVowLTlcLlwtOl9dLyxpLmRvbUF0dHJpYnV0ZXM9e2E6ImhyZWYiLGJsb2NrcXVvdGU6ImNpdGUiLGxpbms6ImhyZWYiLGJhc2U6ImhyZWYiLHNjcmlwdDoic3JjIixmb3JtOiJhY3Rpb24iLGltZzoic3JjIixhcmVhOiJocmVmIixpZnJhbWU6InNyYyIsZW1iZWQ6InNyYyIsc291cmNlOiJzcmMiLHRyYWNrOiJzcmMiLGlucHV0OiJzcmMiLGF1ZGlvOiJzcmMiLHZpZGVvOiJzcmMifSxpLmdldERvbUF0dHJpYnV0ZT1mdW5jdGlvbihBKXtpZighKCFBfHwhQS5ub2RlTmFtZSkpe3ZhciBTPUEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZighKFM9PT0iaW5wdXQiJiZBLnR5cGUhPT0iaW1hZ2UiKSlyZXR1cm4gaS5kb21BdHRyaWJ1dGVzW1NdfX07ZnVuY3Rpb24gYihBKXtyZXR1cm4gZXNjYXBlKEEpfWZ1bmN0aW9uIHcoQSl7cmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChBKS5yZXBsYWNlKC9bIScoKSpdL2csYikucmVwbGFjZSgvXCovZywiJTJBIil9aS5lbmNvZGU9dyxpLmRlY29kZT1kZWNvZGVVUklDb21wb25lbnQsaS5pc284ODU5PWZ1bmN0aW9uKCl7aS5lbmNvZGU9ZXNjYXBlLGkuZGVjb2RlPXVuZXNjYXBlfSxpLnVuaWNvZGU9ZnVuY3Rpb24oKXtpLmVuY29kZT13LGkuZGVjb2RlPWRlY29kZVVSSUNvbXBvbmVudH0saS5jaGFyYWN0ZXJzPXtwYXRobmFtZTp7ZW5jb2RlOntleHByZXNzaW9uOi8lKDI0fDI2fDJCfDJDfDNCfDNEfDNBfDQwKS9pZyxtYXA6eyIlMjQiOiIkIiwiJTI2IjoiJiIsIiUyQiI6IisiLCIlMkMiOiIsIiwiJTNCIjoiOyIsIiUzRCI6Ij0iLCIlM0EiOiI6IiwiJTQwIjoiQCJ9fSxkZWNvZGU6e2V4cHJlc3Npb246L1tcL1w/I10vZyxtYXA6eyIvIjoiJTJGIiwiPyI6IiUzRiIsIiMiOiIlMjMifX19LHJlc2VydmVkOntlbmNvZGU6e2V4cHJlc3Npb246LyUoMjF8MjN8MjR8MjZ8Mjd8Mjh8Mjl8MkF8MkJ8MkN8MkZ8M0F8M0J8M0R8M0Z8NDB8NUJ8NUQpL2lnLG1hcDp7IiUzQSI6IjoiLCIlMkYiOiIvIiwiJTNGIjoiPyIsIiUyMyI6IiMiLCIlNUIiOiJbIiwiJTVEIjoiXSIsIiU0MCI6IkAiLCIlMjEiOiIhIiwiJTI0IjoiJCIsIiUyNiI6IiYiLCIlMjciOiInIiwiJTI4IjoiKCIsIiUyOSI6IikiLCIlMkEiOiIqIiwiJTJCIjoiKyIsIiUyQyI6IiwiLCIlM0IiOiI7IiwiJTNEIjoiPSJ9fX0sdXJucGF0aDp7ZW5jb2RlOntleHByZXNzaW9uOi8lKDIxfDI0fDI3fDI4fDI5fDJBfDJCfDJDfDNCfDNEfDQwKS9pZyxtYXA6eyIlMjEiOiIhIiwiJTI0IjoiJCIsIiUyNyI6IiciLCIlMjgiOiIoIiwiJTI5IjoiKSIsIiUyQSI6IioiLCIlMkIiOiIrIiwiJTJDIjoiLCIsIiUzQiI6IjsiLCIlM0QiOiI9IiwiJTQwIjoiQCJ9fSxkZWNvZGU6e2V4cHJlc3Npb246L1tcL1w/IzpdL2csbWFwOnsiLyI6IiUyRiIsIj8iOiIlM0YiLCIjIjoiJTIzIiwiOiI6IiUzQSJ9fX19LGkuZW5jb2RlUXVlcnk9ZnVuY3Rpb24oQSxTKXt2YXIgQz1pLmVuY29kZShBKyIiKTtyZXR1cm4gUz09PXZvaWQgMCYmKFM9aS5lc2NhcGVRdWVyeVNwYWNlKSxTP0MucmVwbGFjZSgvJTIwL2csIisiKTpDfSxpLmRlY29kZVF1ZXJ5PWZ1bmN0aW9uKEEsUyl7QSs9IiIsUz09PXZvaWQgMCYmKFM9aS5lc2NhcGVRdWVyeVNwYWNlKTt0cnl7cmV0dXJuIGkuZGVjb2RlKFM/QS5yZXBsYWNlKC9cKy9nLCIlMjAiKTpBKX1jYXRjaHtyZXR1cm4gQX19O3ZhciBPPXtlbmNvZGU6ImVuY29kZSIsZGVjb2RlOiJkZWNvZGUifSxFLFQ9ZnVuY3Rpb24oQSxTKXtyZXR1cm4gZnVuY3Rpb24oQyl7dHJ5e3JldHVybiBpW1NdKEMrIiIpLnJlcGxhY2UoaS5jaGFyYWN0ZXJzW0FdW1NdLmV4cHJlc3Npb24sZnVuY3Rpb24oTCl7cmV0dXJuIGkuY2hhcmFjdGVyc1tBXVtTXS5tYXBbTF19KX1jYXRjaHtyZXR1cm4gQ319fTtmb3IoRSBpbiBPKWlbRSsiUGF0aFNlZ21lbnQiXT1UKCJwYXRobmFtZSIsT1tFXSksaVtFKyJVcm5QYXRoU2VnbWVudCJdPVQoInVybnBhdGgiLE9bRV0pO3ZhciB4PWZ1bmN0aW9uKEEsUyxDKXtyZXR1cm4gZnVuY3Rpb24oTCl7dmFyIHo7Qz96PWZ1bmN0aW9uKFcpe3JldHVybiBpW1NdKGlbQ10oVykpfTp6PWlbU107Zm9yKHZhciBqPShMKyIiKS5zcGxpdChBKSxrPTAscT1qLmxlbmd0aDtrPHE7aysrKWpba109eihqW2tdKTtyZXR1cm4gai5qb2luKEEpfX07aS5kZWNvZGVQYXRoPXgoIi8iLCJkZWNvZGVQYXRoU2VnbWVudCIpLGkuZGVjb2RlVXJuUGF0aD14KCI6IiwiZGVjb2RlVXJuUGF0aFNlZ21lbnQiKSxpLnJlY29kZVBhdGg9eCgiLyIsImVuY29kZVBhdGhTZWdtZW50IiwiZGVjb2RlIiksaS5yZWNvZGVVcm5QYXRoPXgoIjoiLCJlbmNvZGVVcm5QYXRoU2VnbWVudCIsImRlY29kZSIpLGkuZW5jb2RlUmVzZXJ2ZWQ9VCgicmVzZXJ2ZWQiLCJlbmNvZGUiKSxpLnBhcnNlPWZ1bmN0aW9uKEEsUyl7dmFyIEM7cmV0dXJuIFN8fChTPXtwcmV2ZW50SW52YWxpZEhvc3RuYW1lOmkucHJldmVudEludmFsaWRIb3N0bmFtZX0pLEE9QS5yZXBsYWNlKGkubGVhZGluZ193aGl0ZXNwYWNlX2V4cHJlc3Npb24sIiIpLEE9QS5yZXBsYWNlKGkuYXNjaWlfdGFiX3doaXRlc3BhY2UsIiIpLEM9QS5pbmRleE9mKCIjIiksQz4tMSYmKFMuZnJhZ21lbnQ9QS5zdWJzdHJpbmcoQysxKXx8bnVsbCxBPUEuc3Vic3RyaW5nKDAsQykpLEM9QS5pbmRleE9mKCI/IiksQz4tMSYmKFMucXVlcnk9QS5zdWJzdHJpbmcoQysxKXx8bnVsbCxBPUEuc3Vic3RyaW5nKDAsQykpLEE9QS5yZXBsYWNlKC9eKGh0dHBzP3xmdHB8d3NzPyk/OitbL1xcXSovaSwiJDE6Ly8iKSxBPUEucmVwbGFjZSgvXlsvXFxdezIsfS9pLCIvLyIpLEEuc3Vic3RyaW5nKDAsMik9PT0iLy8iPyhTLnByb3RvY29sPW51bGwsQT1BLnN1YnN0cmluZygyKSxBPWkucGFyc2VBdXRob3JpdHkoQSxTKSk6KEM9QS5pbmRleE9mKCI6IiksQz4tMSYmKFMucHJvdG9jb2w9QS5zdWJzdHJpbmcoMCxDKXx8bnVsbCxTLnByb3RvY29sJiYhUy5wcm90b2NvbC5tYXRjaChpLnByb3RvY29sX2V4cHJlc3Npb24pP1MucHJvdG9jb2w9dm9pZCAwOkEuc3Vic3RyaW5nKEMrMSxDKzMpLnJlcGxhY2UoL1xcL2csIi8iKT09PSIvLyI/KEE9QS5zdWJzdHJpbmcoQyszKSxBPWkucGFyc2VBdXRob3JpdHkoQSxTKSk6KEE9QS5zdWJzdHJpbmcoQysxKSxTLnVybj0hMCkpKSxTLnBhdGg9QSxTfSxpLnBhcnNlSG9zdD1mdW5jdGlvbihBLFMpe0F8fChBPSIiKSxBPUEucmVwbGFjZSgvXFwvZywiLyIpO3ZhciBDPUEuaW5kZXhPZigiLyIpLEwsejtpZihDPT09LTEmJihDPUEubGVuZ3RoKSxBLmNoYXJBdCgwKT09PSJbIilMPUEuaW5kZXhPZigiXSIpLFMuaG9zdG5hbWU9QS5zdWJzdHJpbmcoMSxMKXx8bnVsbCxTLnBvcnQ9QS5zdWJzdHJpbmcoTCsyLEMpfHxudWxsLFMucG9ydD09PSIvIiYmKFMucG9ydD1udWxsKTtlbHNle3ZhciBqPUEuaW5kZXhPZigiOiIpLGs9QS5pbmRleE9mKCIvIikscT1BLmluZGV4T2YoIjoiLGorMSk7cSE9PS0xJiYoaz09PS0xfHxxPGspPyhTLmhvc3RuYW1lPUEuc3Vic3RyaW5nKDAsQyl8fG51bGwsUy5wb3J0PW51bGwpOih6PUEuc3Vic3RyaW5nKDAsQykuc3BsaXQoIjoiKSxTLmhvc3RuYW1lPXpbMF18fG51bGwsUy5wb3J0PXpbMV18fG51bGwpfXJldHVybiBTLmhvc3RuYW1lJiZBLnN1YnN0cmluZyhDKS5jaGFyQXQoMCkhPT0iLyImJihDKyssQT0iLyIrQSksUy5wcmV2ZW50SW52YWxpZEhvc3RuYW1lJiZpLmVuc3VyZVZhbGlkSG9zdG5hbWUoUy5ob3N0bmFtZSxTLnByb3RvY29sKSxTLnBvcnQmJmkuZW5zdXJlVmFsaWRQb3J0KFMucG9ydCksQS5zdWJzdHJpbmcoQyl8fCIvIn0saS5wYXJzZUF1dGhvcml0eT1mdW5jdGlvbihBLFMpe3JldHVybiBBPWkucGFyc2VVc2VyaW5mbyhBLFMpLGkucGFyc2VIb3N0KEEsUyl9LGkucGFyc2VVc2VyaW5mbz1mdW5jdGlvbihBLFMpe3ZhciBDPUEsTD1BLmluZGV4T2YoIlxcIik7TCE9PS0xJiYoQT1BLnJlcGxhY2UoL1xcL2csIi8iKSk7dmFyIHo9QS5pbmRleE9mKCIvIiksaj1BLmxhc3RJbmRleE9mKCJAIix6Pi0xP3o6QS5sZW5ndGgtMSksaztyZXR1cm4gaj4tMSYmKHo9PT0tMXx8ajx6KT8oaz1BLnN1YnN0cmluZygwLGopLnNwbGl0KCI6IiksUy51c2VybmFtZT1rWzBdP2kuZGVjb2RlKGtbMF0pOm51bGwsay5zaGlmdCgpLFMucGFzc3dvcmQ9a1swXT9pLmRlY29kZShrLmpvaW4oIjoiKSk6bnVsbCxBPUMuc3Vic3RyaW5nKGorMSkpOihTLnVzZXJuYW1lPW51bGwsUy5wYXNzd29yZD1udWxsKSxBfSxpLnBhcnNlUXVlcnk9ZnVuY3Rpb24oQSxTKXtpZighQSlyZXR1cm57fTtpZihBPUEucmVwbGFjZSgvJisvZywiJiIpLnJlcGxhY2UoL15cPyomKnwmKyQvZywiIiksIUEpcmV0dXJue307Zm9yKHZhciBDPXt9LEw9QS5zcGxpdCgiJiIpLHo9TC5sZW5ndGgsaixrLHEsVz0wO1c8ejtXKyspaj1MW1ddLnNwbGl0KCI9Iiksaz1pLmRlY29kZVF1ZXJ5KGouc2hpZnQoKSxTKSxxPWoubGVuZ3RoP2kuZGVjb2RlUXVlcnkoai5qb2luKCI9IiksUyk6bnVsbCxrIT09Il9fcHJvdG9fXyImJih1LmNhbGwoQyxrKT8oKHR5cGVvZiBDW2tdPT0ic3RyaW5nInx8Q1trXT09PW51bGwpJiYoQ1trXT1bQ1trXV0pLENba10ucHVzaChxKSk6Q1trXT1xKTtyZXR1cm4gQ30saS5idWlsZD1mdW5jdGlvbihBKXt2YXIgUz0iIixDPSExO3JldHVybiBBLnByb3RvY29sJiYoUys9QS5wcm90b2NvbCsiOiIpLCFBLnVybiYmKFN8fEEuaG9zdG5hbWUpJiYoUys9Ii8vIixDPSEwKSxTKz1pLmJ1aWxkQXV0aG9yaXR5KEEpfHwiIix0eXBlb2YgQS5wYXRoPT0ic3RyaW5nIiYmKEEucGF0aC5jaGFyQXQoMCkhPT0iLyImJkMmJihTKz0iLyIpLFMrPUEucGF0aCksdHlwZW9mIEEucXVlcnk9PSJzdHJpbmciJiZBLnF1ZXJ5JiYoUys9Ij8iK0EucXVlcnkpLHR5cGVvZiBBLmZyYWdtZW50PT0ic3RyaW5nIiYmQS5mcmFnbWVudCYmKFMrPSIjIitBLmZyYWdtZW50KSxTfSxpLmJ1aWxkSG9zdD1mdW5jdGlvbihBKXt2YXIgUz0iIjtpZihBLmhvc3RuYW1lKWkuaXA2X2V4cHJlc3Npb24udGVzdChBLmhvc3RuYW1lKT9TKz0iWyIrQS5ob3N0bmFtZSsiXSI6Uys9QS5ob3N0bmFtZTtlbHNlIHJldHVybiIiO3JldHVybiBBLnBvcnQmJihTKz0iOiIrQS5wb3J0KSxTfSxpLmJ1aWxkQXV0aG9yaXR5PWZ1bmN0aW9uKEEpe3JldHVybiBpLmJ1aWxkVXNlcmluZm8oQSkraS5idWlsZEhvc3QoQSl9LGkuYnVpbGRVc2VyaW5mbz1mdW5jdGlvbihBKXt2YXIgUz0iIjtyZXR1cm4gQS51c2VybmFtZSYmKFMrPWkuZW5jb2RlKEEudXNlcm5hbWUpKSxBLnBhc3N3b3JkJiYoUys9IjoiK2kuZW5jb2RlKEEucGFzc3dvcmQpKSxTJiYoUys9IkAiKSxTfSxpLmJ1aWxkUXVlcnk9ZnVuY3Rpb24oQSxTLEMpe3ZhciBMPSIiLHosaixrLHE7Zm9yKGogaW4gQSlpZihqIT09Il9fcHJvdG9fXyImJnUuY2FsbChBLGopKWlmKHAoQVtqXSkpZm9yKHo9e30saz0wLHE9QVtqXS5sZW5ndGg7azxxO2srKylBW2pdW2tdIT09dm9pZCAwJiZ6W0Fbal1ba10rIiJdPT09dm9pZCAwJiYoTCs9IiYiK2kuYnVpbGRRdWVyeVBhcmFtZXRlcihqLEFbal1ba10sQyksUyE9PSEwJiYoeltBW2pdW2tdKyIiXT0hMCkpO2Vsc2UgQVtqXSE9PXZvaWQgMCYmKEwrPSImIitpLmJ1aWxkUXVlcnlQYXJhbWV0ZXIoaixBW2pdLEMpKTtyZXR1cm4gTC5zdWJzdHJpbmcoMSl9LGkuYnVpbGRRdWVyeVBhcmFtZXRlcj1mdW5jdGlvbihBLFMsQyl7cmV0dXJuIGkuZW5jb2RlUXVlcnkoQSxDKSsoUyE9PW51bGw/Ij0iK2kuZW5jb2RlUXVlcnkoUyxDKToiIil9LGkuYWRkUXVlcnk9ZnVuY3Rpb24oQSxTLEMpe2lmKHR5cGVvZiBTPT0ib2JqZWN0Iilmb3IodmFyIEwgaW4gUyl1LmNhbGwoUyxMKSYmaS5hZGRRdWVyeShBLEwsU1tMXSk7ZWxzZSBpZih0eXBlb2YgUz09InN0cmluZyIpe2lmKEFbU109PT12b2lkIDApe0FbU109QztyZXR1cm59ZWxzZSB0eXBlb2YgQVtTXT09InN0cmluZyImJihBW1NdPVtBW1NdXSk7cChDKXx8KEM9W0NdKSxBW1NdPShBW1NdfHxbXSkuY29uY2F0KEMpfWVsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiVVJJLmFkZFF1ZXJ5KCkgYWNjZXB0cyBhbiBvYmplY3QsIHN0cmluZyBhcyB0aGUgbmFtZSBwYXJhbWV0ZXIiKX0saS5zZXRRdWVyeT1mdW5jdGlvbihBLFMsQyl7aWYodHlwZW9mIFM9PSJvYmplY3QiKWZvcih2YXIgTCBpbiBTKXUuY2FsbChTLEwpJiZpLnNldFF1ZXJ5KEEsTCxTW0xdKTtlbHNlIGlmKHR5cGVvZiBTPT0ic3RyaW5nIilBW1NdPUM9PT12b2lkIDA/bnVsbDpDO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiVVJJLnNldFF1ZXJ5KCkgYWNjZXB0cyBhbiBvYmplY3QsIHN0cmluZyBhcyB0aGUgbmFtZSBwYXJhbWV0ZXIiKX0saS5yZW1vdmVRdWVyeT1mdW5jdGlvbihBLFMsQyl7dmFyIEwseixqO2lmKHAoUykpZm9yKEw9MCx6PVMubGVuZ3RoO0w8ejtMKyspQVtTW0xdXT12b2lkIDA7ZWxzZSBpZihsKFMpPT09IlJlZ0V4cCIpZm9yKGogaW4gQSlTLnRlc3QoaikmJihBW2pdPXZvaWQgMCk7ZWxzZSBpZih0eXBlb2YgUz09Im9iamVjdCIpZm9yKGogaW4gUyl1LmNhbGwoUyxqKSYmaS5yZW1vdmVRdWVyeShBLGosU1tqXSk7ZWxzZSBpZih0eXBlb2YgUz09InN0cmluZyIpQyE9PXZvaWQgMD9sKEMpPT09IlJlZ0V4cCI/IXAoQVtTXSkmJkMudGVzdChBW1NdKT9BW1NdPXZvaWQgMDpBW1NdPWQoQVtTXSxDKTpBW1NdPT09U3RyaW5nKEMpJiYoIXAoQyl8fEMubGVuZ3RoPT09MSk/QVtTXT12b2lkIDA6cChBW1NdKSYmKEFbU109ZChBW1NdLEMpKTpBW1NdPXZvaWQgMDtlbHNlIHRocm93IG5ldyBUeXBlRXJyb3IoIlVSSS5yZW1vdmVRdWVyeSgpIGFjY2VwdHMgYW4gb2JqZWN0LCBzdHJpbmcsIFJlZ0V4cCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIil9LGkuaGFzUXVlcnk9ZnVuY3Rpb24oQSxTLEMsTCl7c3dpdGNoKGwoUykpe2Nhc2UiU3RyaW5nIjpicmVhaztjYXNlIlJlZ0V4cCI6Zm9yKHZhciB6IGluIEEpaWYodS5jYWxsKEEseikmJlMudGVzdCh6KSYmKEM9PT12b2lkIDB8fGkuaGFzUXVlcnkoQSx6LEMpKSlyZXR1cm4hMDtyZXR1cm4hMTtjYXNlIk9iamVjdCI6Zm9yKHZhciBqIGluIFMpaWYodS5jYWxsKFMsaikmJiFpLmhhc1F1ZXJ5KEEsaixTW2pdKSlyZXR1cm4hMTtyZXR1cm4hMDtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIlVSSS5oYXNRdWVyeSgpIGFjY2VwdHMgYSBzdHJpbmcsIHJlZ3VsYXIgZXhwcmVzc2lvbiBvciBvYmplY3QgYXMgdGhlIG5hbWUgcGFyYW1ldGVyIil9c3dpdGNoKGwoQykpe2Nhc2UiVW5kZWZpbmVkIjpyZXR1cm4gUyBpbiBBO2Nhc2UiQm9vbGVhbiI6dmFyIGs9ISEocChBW1NdKT9BW1NdLmxlbmd0aDpBW1NdKTtyZXR1cm4gQz09PWs7Y2FzZSJGdW5jdGlvbiI6cmV0dXJuISFDKEFbU10sUyxBKTtjYXNlIkFycmF5IjppZighcChBW1NdKSlyZXR1cm4hMTt2YXIgcT1MP2g6XztyZXR1cm4gcShBW1NdLEMpO2Nhc2UiUmVnRXhwIjpyZXR1cm4gcChBW1NdKT9MP2goQVtTXSxDKTohMTohIShBW1NdJiZBW1NdLm1hdGNoKEMpKTtjYXNlIk51bWJlciI6Qz1TdHJpbmcoQyk7Y2FzZSJTdHJpbmciOnJldHVybiBwKEFbU10pP0w/aChBW1NdLEMpOiExOkFbU109PT1DO2RlZmF1bHQ6dGhyb3cgbmV3IFR5cGVFcnJvcigiVVJJLmhhc1F1ZXJ5KCkgYWNjZXB0cyB1bmRlZmluZWQsIGJvb2xlYW4sIHN0cmluZywgbnVtYmVyLCBSZWdFeHAsIEZ1bmN0aW9uIGFzIHRoZSB2YWx1ZSBwYXJhbWV0ZXIiKX19LGkuam9pblBhdGhzPWZ1bmN0aW9uKCl7Zm9yKHZhciBBPVtdLFM9W10sQz0wLEw9MDtMPGFyZ3VtZW50cy5sZW5ndGg7TCsrKXt2YXIgej1uZXcgaShhcmd1bWVudHNbTF0pO0EucHVzaCh6KTtmb3IodmFyIGo9ei5zZWdtZW50KCksaz0wO2s8ai5sZW5ndGg7aysrKXR5cGVvZiBqW2tdPT0ic3RyaW5nIiYmUy5wdXNoKGpba10pLGpba10mJkMrK31pZighUy5sZW5ndGh8fCFDKXJldHVybiBuZXcgaSgiIik7dmFyIHE9bmV3IGkoIiIpLnNlZ21lbnQoUyk7cmV0dXJuKEFbMF0ucGF0aCgpPT09IiJ8fEFbMF0ucGF0aCgpLnNsaWNlKDAsMSk9PT0iLyIpJiZxLnBhdGgoIi8iK3EucGF0aCgpKSxxLm5vcm1hbGl6ZSgpfSxpLmNvbW1vblBhdGg9ZnVuY3Rpb24oQSxTKXt2YXIgQz1NYXRoLm1pbihBLmxlbmd0aCxTLmxlbmd0aCksTDtmb3IoTD0wO0w8QztMKyspaWYoQS5jaGFyQXQoTCkhPT1TLmNoYXJBdChMKSl7TC0tO2JyZWFrfXJldHVybiBMPDE/QS5jaGFyQXQoMCk9PT1TLmNoYXJBdCgwKSYmQS5jaGFyQXQoMCk9PT0iLyI/Ii8iOiIiOigoQS5jaGFyQXQoTCkhPT0iLyJ8fFMuY2hhckF0KEwpIT09Ii8iKSYmKEw9QS5zdWJzdHJpbmcoMCxMKS5sYXN0SW5kZXhPZigiLyIpKSxBLnN1YnN0cmluZygwLEwrMSkpfSxpLndpdGhpblN0cmluZz1mdW5jdGlvbihBLFMsQyl7Q3x8KEM9e30pO3ZhciBMPUMuc3RhcnR8fGkuZmluZFVyaS5zdGFydCx6PUMuZW5kfHxpLmZpbmRVcmkuZW5kLGo9Qy50cmltfHxpLmZpbmRVcmkudHJpbSxrPUMucGFyZW5zfHxpLmZpbmRVcmkucGFyZW5zLHE9L1thLXowLTktXT1bIiddPyQvaTtmb3IoTC5sYXN0SW5kZXg9MDs7KXt2YXIgVz1MLmV4ZWMoQSk7aWYoIVcpYnJlYWs7dmFyIFI9Vy5pbmRleDtpZihDLmlnbm9yZUh0bWwpe3ZhciBudD1BLnNsaWNlKE1hdGgubWF4KFItMywwKSxSKTtpZihudCYmcS50ZXN0KG50KSljb250aW51ZX1mb3IodmFyIGF0PVIrQS5zbGljZShSKS5zZWFyY2goeiksbHQ9QS5zbGljZShSLGF0KSxfdD0tMTs7KXt2YXIgb3Q9ay5leGVjKGx0KTtpZighb3QpYnJlYWs7dmFyIFB0PW90LmluZGV4K290WzBdLmxlbmd0aDtfdD1NYXRoLm1heChfdCxQdCl9aWYoX3Q+LTE/bHQ9bHQuc2xpY2UoMCxfdCkrbHQuc2xpY2UoX3QpLnJlcGxhY2UoaiwiIik6bHQ9bHQucmVwbGFjZShqLCIiKSwhKGx0Lmxlbmd0aDw9V1swXS5sZW5ndGgpJiYhKEMuaWdub3JlJiZDLmlnbm9yZS50ZXN0KGx0KSkpe2F0PVIrbHQubGVuZ3RoO3ZhciBndD1TKGx0LFIsYXQsQSk7aWYoZ3Q9PT12b2lkIDApe0wubGFzdEluZGV4PWF0O2NvbnRpbnVlfWd0PVN0cmluZyhndCksQT1BLnNsaWNlKDAsUikrZ3QrQS5zbGljZShhdCksTC5sYXN0SW5kZXg9UitndC5sZW5ndGh9fXJldHVybiBMLmxhc3RJbmRleD0wLEF9LGkuZW5zdXJlVmFsaWRIb3N0bmFtZT1mdW5jdGlvbihBLFMpe3ZhciBDPSEhQSxMPSEhUyx6PSExO2lmKEwmJih6PWgoaS5ob3N0UHJvdG9jb2xzLFMpKSx6JiYhQyl0aHJvdyBuZXcgVHlwZUVycm9yKCJIb3N0bmFtZSBjYW5ub3QgYmUgZW1wdHksIGlmIHByb3RvY29sIGlzICIrUyk7aWYoQSYmQS5tYXRjaChpLmludmFsaWRfaG9zdG5hbWVfY2hhcmFjdGVycykpe2lmKCF0KXRocm93IG5ldyBUeXBlRXJyb3IoJ0hvc3RuYW1lICInK0ErJyIgY29udGFpbnMgY2hhcmFjdGVycyBvdGhlciB0aGFuIFtBLVowLTkuLTpfXSBhbmQgUHVueWNvZGUuanMgaXMgbm90IGF2YWlsYWJsZScpO2lmKHQudG9BU0NJSShBKS5tYXRjaChpLmludmFsaWRfaG9zdG5hbWVfY2hhcmFjdGVycykpdGhyb3cgbmV3IFR5cGVFcnJvcignSG9zdG5hbWUgIicrQSsnIiBjb250YWlucyBjaGFyYWN0ZXJzIG90aGVyIHRoYW4gW0EtWjAtOS4tOl9dJyl9fSxpLmVuc3VyZVZhbGlkUG9ydD1mdW5jdGlvbihBKXtpZihBKXt2YXIgUz1OdW1iZXIoQSk7aWYoIShzKFMpJiZTPjAmJlM8NjU1MzYpKXRocm93IG5ldyBUeXBlRXJyb3IoJ1BvcnQgIicrQSsnIiBpcyBub3QgYSB2YWxpZCBwb3J0Jyl9fSxpLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oQSl7aWYoQSl7dmFyIFM9e1VSSTp0aGlzLm5vQ29uZmxpY3QoKX07cmV0dXJuIG8uVVJJVGVtcGxhdGUmJnR5cGVvZiBvLlVSSVRlbXBsYXRlLm5vQ29uZmxpY3Q9PSJmdW5jdGlvbiImJihTLlVSSVRlbXBsYXRlPW8uVVJJVGVtcGxhdGUubm9Db25mbGljdCgpKSxvLklQdjYmJnR5cGVvZiBvLklQdjYubm9Db25mbGljdD09ImZ1bmN0aW9uIiYmKFMuSVB2Nj1vLklQdjYubm9Db25mbGljdCgpKSxvLlNlY29uZExldmVsRG9tYWlucyYmdHlwZW9mIG8uU2Vjb25kTGV2ZWxEb21haW5zLm5vQ29uZmxpY3Q9PSJmdW5jdGlvbiImJihTLlNlY29uZExldmVsRG9tYWlucz1vLlNlY29uZExldmVsRG9tYWlucy5ub0NvbmZsaWN0KCkpLFN9ZWxzZSBvLlVSST09PXRoaXMmJihvLlVSST1yKTtyZXR1cm4gdGhpc30sZi5idWlsZD1mdW5jdGlvbihBKXtyZXR1cm4gQT09PSEwP3RoaXMuX2RlZmVycmVkX2J1aWxkPSEwOihBPT09dm9pZCAwfHx0aGlzLl9kZWZlcnJlZF9idWlsZCkmJih0aGlzLl9zdHJpbmc9aS5idWlsZCh0aGlzLl9wYXJ0cyksdGhpcy5fZGVmZXJyZWRfYnVpbGQ9ITEpLHRoaXN9LGYuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGkodGhpcyl9LGYudmFsdWVPZj1mLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYnVpbGQoITEpLl9zdHJpbmd9O2Z1bmN0aW9uIE0oQSl7cmV0dXJuIGZ1bmN0aW9uKFMsQyl7cmV0dXJuIFM9PT12b2lkIDA/dGhpcy5fcGFydHNbQV18fCIiOih0aGlzLl9wYXJ0c1tBXT1TfHxudWxsLHRoaXMuYnVpbGQoIUMpLHRoaXMpfX1mdW5jdGlvbiBOKEEsUyl7cmV0dXJuIGZ1bmN0aW9uKEMsTCl7cmV0dXJuIEM9PT12b2lkIDA/dGhpcy5fcGFydHNbQV18fCIiOihDIT09bnVsbCYmKEM9QysiIixDLmNoYXJBdCgwKT09PVMmJihDPUMuc3Vic3RyaW5nKDEpKSksdGhpcy5fcGFydHNbQV09Qyx0aGlzLmJ1aWxkKCFMKSx0aGlzKX19Zi5wcm90b2NvbD1NKCJwcm90b2NvbCIpLGYudXNlcm5hbWU9TSgidXNlcm5hbWUiKSxmLnBhc3N3b3JkPU0oInBhc3N3b3JkIiksZi5ob3N0bmFtZT1NKCJob3N0bmFtZSIpLGYucG9ydD1NKCJwb3J0IiksZi5xdWVyeT1OKCJxdWVyeSIsIj8iKSxmLmZyYWdtZW50PU4oImZyYWdtZW50IiwiIyIpLGYuc2VhcmNoPWZ1bmN0aW9uKEEsUyl7dmFyIEM9dGhpcy5xdWVyeShBLFMpO3JldHVybiB0eXBlb2YgQz09InN0cmluZyImJkMubGVuZ3RoPyI/IitDOkN9LGYuaGFzaD1mdW5jdGlvbihBLFMpe3ZhciBDPXRoaXMuZnJhZ21lbnQoQSxTKTtyZXR1cm4gdHlwZW9mIEM9PSJzdHJpbmciJiZDLmxlbmd0aD8iIyIrQzpDfSxmLnBhdGhuYW1lPWZ1bmN0aW9uKEEsUyl7aWYoQT09PXZvaWQgMHx8QT09PSEwKXt2YXIgQz10aGlzLl9wYXJ0cy5wYXRofHwodGhpcy5fcGFydHMuaG9zdG5hbWU/Ii8iOiIiKTtyZXR1cm4gQT8odGhpcy5fcGFydHMudXJuP2kuZGVjb2RlVXJuUGF0aDppLmRlY29kZVBhdGgpKEMpOkN9ZWxzZSByZXR1cm4gdGhpcy5fcGFydHMudXJuP3RoaXMuX3BhcnRzLnBhdGg9QT9pLnJlY29kZVVyblBhdGgoQSk6IiI6dGhpcy5fcGFydHMucGF0aD1BP2kucmVjb2RlUGF0aChBKToiLyIsdGhpcy5idWlsZCghUyksdGhpc30sZi5wYXRoPWYucGF0aG5hbWUsZi5ocmVmPWZ1bmN0aW9uKEEsUyl7dmFyIEM7aWYoQT09PXZvaWQgMClyZXR1cm4gdGhpcy50b1N0cmluZygpO3RoaXMuX3N0cmluZz0iIix0aGlzLl9wYXJ0cz1pLl9wYXJ0cygpO3ZhciBMPUEgaW5zdGFuY2VvZiBpLHo9dHlwZW9mIEE9PSJvYmplY3QiJiYoQS5ob3N0bmFtZXx8QS5wYXRofHxBLnBhdGhuYW1lKTtpZihBLm5vZGVOYW1lKXt2YXIgaj1pLmdldERvbUF0dHJpYnV0ZShBKTtBPUFbal18fCIiLHo9ITF9aWYoIUwmJnomJkEucGF0aG5hbWUhPT12b2lkIDAmJihBPUEudG9TdHJpbmcoKSksdHlwZW9mIEE9PSJzdHJpbmcifHxBIGluc3RhbmNlb2YgU3RyaW5nKXRoaXMuX3BhcnRzPWkucGFyc2UoU3RyaW5nKEEpLHRoaXMuX3BhcnRzKTtlbHNlIGlmKEx8fHope3ZhciBrPUw/QS5fcGFydHM6QTtmb3IoQyBpbiBrKUMhPT0icXVlcnkiJiZ1LmNhbGwodGhpcy5fcGFydHMsQykmJih0aGlzLl9wYXJ0c1tDXT1rW0NdKTtrLnF1ZXJ5JiZ0aGlzLnF1ZXJ5KGsucXVlcnksITEpfWVsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiaW52YWxpZCBpbnB1dCIpO3JldHVybiB0aGlzLmJ1aWxkKCFTKSx0aGlzfSxmLmlzPWZ1bmN0aW9uKEEpe3ZhciBTPSExLEM9ITEsTD0hMSx6PSExLGo9ITEsaz0hMSxxPSExLFc9IXRoaXMuX3BhcnRzLnVybjtzd2l0Y2godGhpcy5fcGFydHMuaG9zdG5hbWUmJihXPSExLEM9aS5pcDRfZXhwcmVzc2lvbi50ZXN0KHRoaXMuX3BhcnRzLmhvc3RuYW1lKSxMPWkuaXA2X2V4cHJlc3Npb24udGVzdCh0aGlzLl9wYXJ0cy5ob3N0bmFtZSksUz1DfHxMLHo9IVMsaj16JiZuJiZuLmhhcyh0aGlzLl9wYXJ0cy5ob3N0bmFtZSksaz16JiZpLmlkbl9leHByZXNzaW9uLnRlc3QodGhpcy5fcGFydHMuaG9zdG5hbWUpLHE9eiYmaS5wdW55Y29kZV9leHByZXNzaW9uLnRlc3QodGhpcy5fcGFydHMuaG9zdG5hbWUpKSxBLnRvTG93ZXJDYXNlKCkpe2Nhc2UicmVsYXRpdmUiOnJldHVybiBXO2Nhc2UiYWJzb2x1dGUiOnJldHVybiFXO2Nhc2UiZG9tYWluIjpjYXNlIm5hbWUiOnJldHVybiB6O2Nhc2Uic2xkIjpyZXR1cm4gajtjYXNlImlwIjpyZXR1cm4gUztjYXNlImlwNCI6Y2FzZSJpcHY0IjpjYXNlImluZXQ0IjpyZXR1cm4gQztjYXNlImlwNiI6Y2FzZSJpcHY2IjpjYXNlImluZXQ2IjpyZXR1cm4gTDtjYXNlImlkbiI6cmV0dXJuIGs7Y2FzZSJ1cmwiOnJldHVybiF0aGlzLl9wYXJ0cy51cm47Y2FzZSJ1cm4iOnJldHVybiEhdGhpcy5fcGFydHMudXJuO2Nhc2UicHVueWNvZGUiOnJldHVybiBxfXJldHVybiBudWxsfTt2YXIgRj1mLnByb3RvY29sLEk9Zi5wb3J0LHY9Zi5ob3N0bmFtZTtmLnByb3RvY29sPWZ1bmN0aW9uKEEsUyl7aWYoQSYmKEE9QS5yZXBsYWNlKC86KFwvXC8pPyQvLCIiKSwhQS5tYXRjaChpLnByb3RvY29sX2V4cHJlc3Npb24pKSl0aHJvdyBuZXcgVHlwZUVycm9yKCdQcm90b2NvbCAiJytBK2AiIGNvbnRhaW5zIGNoYXJhY3RlcnMgb3RoZXIgdGhhbiBbQS1aMC05ListXSBvciBkb2Vzbid0IHN0YXJ0IHdpdGggW0EtWl1gKTtyZXR1cm4gRi5jYWxsKHRoaXMsQSxTKX0sZi5zY2hlbWU9Zi5wcm90b2NvbCxmLnBvcnQ9ZnVuY3Rpb24oQSxTKXtyZXR1cm4gdGhpcy5fcGFydHMudXJuP0E9PT12b2lkIDA/IiI6dGhpczooQSE9PXZvaWQgMCYmKEE9PT0wJiYoQT1udWxsKSxBJiYoQSs9IiIsQS5jaGFyQXQoMCk9PT0iOiImJihBPUEuc3Vic3RyaW5nKDEpKSxpLmVuc3VyZVZhbGlkUG9ydChBKSkpLEkuY2FsbCh0aGlzLEEsUykpfSxmLmhvc3RuYW1lPWZ1bmN0aW9uKEEsUyl7aWYodGhpcy5fcGFydHMudXJuKXJldHVybiBBPT09dm9pZCAwPyIiOnRoaXM7aWYoQSE9PXZvaWQgMCl7dmFyIEM9e3ByZXZlbnRJbnZhbGlkSG9zdG5hbWU6dGhpcy5fcGFydHMucHJldmVudEludmFsaWRIb3N0bmFtZX0sTD1pLnBhcnNlSG9zdChBLEMpO2lmKEwhPT0iLyIpdGhyb3cgbmV3IFR5cGVFcnJvcignSG9zdG5hbWUgIicrQSsnIiBjb250YWlucyBjaGFyYWN0ZXJzIG90aGVyIHRoYW4gW0EtWjAtOS4tXScpO0E9Qy5ob3N0bmFtZSx0aGlzLl9wYXJ0cy5wcmV2ZW50SW52YWxpZEhvc3RuYW1lJiZpLmVuc3VyZVZhbGlkSG9zdG5hbWUoQSx0aGlzLl9wYXJ0cy5wcm90b2NvbCl9cmV0dXJuIHYuY2FsbCh0aGlzLEEsUyl9LGYub3JpZ2luPWZ1bmN0aW9uKEEsUyl7aWYodGhpcy5fcGFydHMudXJuKXJldHVybiBBPT09dm9pZCAwPyIiOnRoaXM7aWYoQT09PXZvaWQgMCl7dmFyIEM9dGhpcy5wcm90b2NvbCgpLEw9dGhpcy5hdXRob3JpdHkoKTtyZXR1cm4gTD8oQz9DKyI6Ly8iOiIiKSt0aGlzLmF1dGhvcml0eSgpOiIifWVsc2V7dmFyIHo9aShBKTtyZXR1cm4gdGhpcy5wcm90b2NvbCh6LnByb3RvY29sKCkpLmF1dGhvcml0eSh6LmF1dGhvcml0eSgpKS5idWlsZCghUyksdGhpc319LGYuaG9zdD1mdW5jdGlvbihBLFMpe2lmKHRoaXMuX3BhcnRzLnVybilyZXR1cm4gQT09PXZvaWQgMD8iIjp0aGlzO2lmKEE9PT12b2lkIDApcmV0dXJuIHRoaXMuX3BhcnRzLmhvc3RuYW1lP2kuYnVpbGRIb3N0KHRoaXMuX3BhcnRzKToiIjt2YXIgQz1pLnBhcnNlSG9zdChBLHRoaXMuX3BhcnRzKTtpZihDIT09Ii8iKXRocm93IG5ldyBUeXBlRXJyb3IoJ0hvc3RuYW1lICInK0ErJyIgY29udGFpbnMgY2hhcmFjdGVycyBvdGhlciB0aGFuIFtBLVowLTkuLV0nKTtyZXR1cm4gdGhpcy5idWlsZCghUyksdGhpc30sZi5hdXRob3JpdHk9ZnVuY3Rpb24oQSxTKXtpZih0aGlzLl9wYXJ0cy51cm4pcmV0dXJuIEE9PT12b2lkIDA/IiI6dGhpcztpZihBPT09dm9pZCAwKXJldHVybiB0aGlzLl9wYXJ0cy5ob3N0bmFtZT9pLmJ1aWxkQXV0aG9yaXR5KHRoaXMuX3BhcnRzKToiIjt2YXIgQz1pLnBhcnNlQXV0aG9yaXR5KEEsdGhpcy5fcGFydHMpO2lmKEMhPT0iLyIpdGhyb3cgbmV3IFR5cGVFcnJvcignSG9zdG5hbWUgIicrQSsnIiBjb250YWlucyBjaGFyYWN0ZXJzIG90aGVyIHRoYW4gW0EtWjAtOS4tXScpO3JldHVybiB0aGlzLmJ1aWxkKCFTKSx0aGlzfSxmLnVzZXJpbmZvPWZ1bmN0aW9uKEEsUyl7aWYodGhpcy5fcGFydHMudXJuKXJldHVybiBBPT09dm9pZCAwPyIiOnRoaXM7aWYoQT09PXZvaWQgMCl7dmFyIEM9aS5idWlsZFVzZXJpbmZvKHRoaXMuX3BhcnRzKTtyZXR1cm4gQyYmQy5zdWJzdHJpbmcoMCxDLmxlbmd0aC0xKX1lbHNlIHJldHVybiBBW0EubGVuZ3RoLTFdIT09IkAiJiYoQSs9IkAiKSxpLnBhcnNlVXNlcmluZm8oQSx0aGlzLl9wYXJ0cyksdGhpcy5idWlsZCghUyksdGhpc30sZi5yZXNvdXJjZT1mdW5jdGlvbihBLFMpe3ZhciBDO3JldHVybiBBPT09dm9pZCAwP3RoaXMucGF0aCgpK3RoaXMuc2VhcmNoKCkrdGhpcy5oYXNoKCk6KEM9aS5wYXJzZShBKSx0aGlzLl9wYXJ0cy5wYXRoPUMucGF0aCx0aGlzLl9wYXJ0cy5xdWVyeT1DLnF1ZXJ5LHRoaXMuX3BhcnRzLmZyYWdtZW50PUMuZnJhZ21lbnQsdGhpcy5idWlsZCghUyksdGhpcyl9LGYuc3ViZG9tYWluPWZ1bmN0aW9uKEEsUyl7aWYodGhpcy5fcGFydHMudXJuKXJldHVybiBBPT09dm9pZCAwPyIiOnRoaXM7aWYoQT09PXZvaWQgMCl7aWYoIXRoaXMuX3BhcnRzLmhvc3RuYW1lfHx0aGlzLmlzKCJJUCIpKXJldHVybiIiO3ZhciBDPXRoaXMuX3BhcnRzLmhvc3RuYW1lLmxlbmd0aC10aGlzLmRvbWFpbigpLmxlbmd0aC0xO3JldHVybiB0aGlzLl9wYXJ0cy5ob3N0bmFtZS5zdWJzdHJpbmcoMCxDKXx8IiJ9ZWxzZXt2YXIgTD10aGlzLl9wYXJ0cy5ob3N0bmFtZS5sZW5ndGgtdGhpcy5kb21haW4oKS5sZW5ndGgsej10aGlzLl9wYXJ0cy5ob3N0bmFtZS5zdWJzdHJpbmcoMCxMKSxqPW5ldyBSZWdFeHAoIl4iK2MoeikpO2lmKEEmJkEuY2hhckF0KEEubGVuZ3RoLTEpIT09Ii4iJiYoQSs9Ii4iKSxBLmluZGV4T2YoIjoiKSE9PS0xKXRocm93IG5ldyBUeXBlRXJyb3IoIkRvbWFpbnMgY2Fubm90IGNvbnRhaW4gY29sb25zIik7cmV0dXJuIEEmJmkuZW5zdXJlVmFsaWRIb3N0bmFtZShBLHRoaXMuX3BhcnRzLnByb3RvY29sKSx0aGlzLl9wYXJ0cy5ob3N0bmFtZT10aGlzLl9wYXJ0cy5ob3N0bmFtZS5yZXBsYWNlKGosQSksdGhpcy5idWlsZCghUyksdGhpc319LGYuZG9tYWluPWZ1bmN0aW9uKEEsUyl7aWYodGhpcy5fcGFydHMudXJuKXJldHVybiBBPT09dm9pZCAwPyIiOnRoaXM7aWYodHlwZW9mIEE9PSJib29sZWFuIiYmKFM9QSxBPXZvaWQgMCksQT09PXZvaWQgMCl7aWYoIXRoaXMuX3BhcnRzLmhvc3RuYW1lfHx0aGlzLmlzKCJJUCIpKXJldHVybiIiO3ZhciBDPXRoaXMuX3BhcnRzLmhvc3RuYW1lLm1hdGNoKC9cLi9nKTtpZihDJiZDLmxlbmd0aDwyKXJldHVybiB0aGlzLl9wYXJ0cy5ob3N0bmFtZTt2YXIgTD10aGlzLl9wYXJ0cy5ob3N0bmFtZS5sZW5ndGgtdGhpcy50bGQoUykubGVuZ3RoLTE7cmV0dXJuIEw9dGhpcy5fcGFydHMuaG9zdG5hbWUubGFzdEluZGV4T2YoIi4iLEwtMSkrMSx0aGlzLl9wYXJ0cy5ob3N0bmFtZS5zdWJzdHJpbmcoTCl8fCIifWVsc2V7aWYoIUEpdGhyb3cgbmV3IFR5cGVFcnJvcigiY2Fubm90IHNldCBkb21haW4gZW1wdHkiKTtpZihBLmluZGV4T2YoIjoiKSE9PS0xKXRocm93IG5ldyBUeXBlRXJyb3IoIkRvbWFpbnMgY2Fubm90IGNvbnRhaW4gY29sb25zIik7aWYoaS5lbnN1cmVWYWxpZEhvc3RuYW1lKEEsdGhpcy5fcGFydHMucHJvdG9jb2wpLCF0aGlzLl9wYXJ0cy5ob3N0bmFtZXx8dGhpcy5pcygiSVAiKSl0aGlzLl9wYXJ0cy5ob3N0bmFtZT1BO2Vsc2V7dmFyIHo9bmV3IFJlZ0V4cChjKHRoaXMuZG9tYWluKCkpKyIkIik7dGhpcy5fcGFydHMuaG9zdG5hbWU9dGhpcy5fcGFydHMuaG9zdG5hbWUucmVwbGFjZSh6LEEpfXJldHVybiB0aGlzLmJ1aWxkKCFTKSx0aGlzfX0sZi50bGQ9ZnVuY3Rpb24oQSxTKXtpZih0aGlzLl9wYXJ0cy51cm4pcmV0dXJuIEE9PT12b2lkIDA/IiI6dGhpcztpZih0eXBlb2YgQT09ImJvb2xlYW4iJiYoUz1BLEE9dm9pZCAwKSxBPT09dm9pZCAwKXtpZighdGhpcy5fcGFydHMuaG9zdG5hbWV8fHRoaXMuaXMoIklQIikpcmV0dXJuIiI7dmFyIEM9dGhpcy5fcGFydHMuaG9zdG5hbWUubGFzdEluZGV4T2YoIi4iKSxMPXRoaXMuX3BhcnRzLmhvc3RuYW1lLnN1YnN0cmluZyhDKzEpO3JldHVybiBTIT09ITAmJm4mJm4ubGlzdFtMLnRvTG93ZXJDYXNlKCldJiZuLmdldCh0aGlzLl9wYXJ0cy5ob3N0bmFtZSl8fEx9ZWxzZXt2YXIgejtpZihBKWlmKEEubWF0Y2goL1teYS16QS1aMC05LV0vKSlpZihuJiZuLmlzKEEpKXo9bmV3IFJlZ0V4cChjKHRoaXMudGxkKCkpKyIkIiksdGhpcy5fcGFydHMuaG9zdG5hbWU9dGhpcy5fcGFydHMuaG9zdG5hbWUucmVwbGFjZSh6LEEpO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcignVExEICInK0ErJyIgY29udGFpbnMgY2hhcmFjdGVycyBvdGhlciB0aGFuIFtBLVowLTldJyk7ZWxzZXtpZighdGhpcy5fcGFydHMuaG9zdG5hbWV8fHRoaXMuaXMoIklQIikpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJjYW5ub3Qgc2V0IFRMRCBvbiBub24tZG9tYWluIGhvc3QiKTt6PW5ldyBSZWdFeHAoYyh0aGlzLnRsZCgpKSsiJCIpLHRoaXMuX3BhcnRzLmhvc3RuYW1lPXRoaXMuX3BhcnRzLmhvc3RuYW1lLnJlcGxhY2UoeixBKX1lbHNlIHRocm93IG5ldyBUeXBlRXJyb3IoImNhbm5vdCBzZXQgVExEIGVtcHR5Iik7cmV0dXJuIHRoaXMuYnVpbGQoIVMpLHRoaXN9fSxmLmRpcmVjdG9yeT1mdW5jdGlvbihBLFMpe2lmKHRoaXMuX3BhcnRzLnVybilyZXR1cm4gQT09PXZvaWQgMD8iIjp0aGlzO2lmKEE9PT12b2lkIDB8fEE9PT0hMCl7aWYoIXRoaXMuX3BhcnRzLnBhdGgmJiF0aGlzLl9wYXJ0cy5ob3N0bmFtZSlyZXR1cm4iIjtpZih0aGlzLl9wYXJ0cy5wYXRoPT09Ii8iKXJldHVybiIvIjt2YXIgQz10aGlzLl9wYXJ0cy5wYXRoLmxlbmd0aC10aGlzLmZpbGVuYW1lKCkubGVuZ3RoLTEsTD10aGlzLl9wYXJ0cy5wYXRoLnN1YnN0cmluZygwLEMpfHwodGhpcy5fcGFydHMuaG9zdG5hbWU/Ii8iOiIiKTtyZXR1cm4gQT9pLmRlY29kZVBhdGgoTCk6TH1lbHNle3ZhciB6PXRoaXMuX3BhcnRzLnBhdGgubGVuZ3RoLXRoaXMuZmlsZW5hbWUoKS5sZW5ndGgsaj10aGlzLl9wYXJ0cy5wYXRoLnN1YnN0cmluZygwLHopLGs9bmV3IFJlZ0V4cCgiXiIrYyhqKSk7cmV0dXJuIHRoaXMuaXMoInJlbGF0aXZlIil8fChBfHwoQT0iLyIpLEEuY2hhckF0KDApIT09Ii8iJiYoQT0iLyIrQSkpLEEmJkEuY2hhckF0KEEubGVuZ3RoLTEpIT09Ii8iJiYoQSs9Ii8iKSxBPWkucmVjb2RlUGF0aChBKSx0aGlzLl9wYXJ0cy5wYXRoPXRoaXMuX3BhcnRzLnBhdGgucmVwbGFjZShrLEEpLHRoaXMuYnVpbGQoIVMpLHRoaXN9fSxmLmZpbGVuYW1lPWZ1bmN0aW9uKEEsUyl7aWYodGhpcy5fcGFydHMudXJuKXJldHVybiBBPT09dm9pZCAwPyIiOnRoaXM7aWYodHlwZW9mIEEhPSJzdHJpbmciKXtpZighdGhpcy5fcGFydHMucGF0aHx8dGhpcy5fcGFydHMucGF0aD09PSIvIilyZXR1cm4iIjt2YXIgQz10aGlzLl9wYXJ0cy5wYXRoLmxhc3RJbmRleE9mKCIvIiksTD10aGlzLl9wYXJ0cy5wYXRoLnN1YnN0cmluZyhDKzEpO3JldHVybiBBP2kuZGVjb2RlUGF0aFNlZ21lbnQoTCk6TH1lbHNle3ZhciB6PSExO0EuY2hhckF0KDApPT09Ii8iJiYoQT1BLnN1YnN0cmluZygxKSksQS5tYXRjaCgvXC4/XC8vKSYmKHo9ITApO3ZhciBqPW5ldyBSZWdFeHAoYyh0aGlzLmZpbGVuYW1lKCkpKyIkIik7cmV0dXJuIEE9aS5yZWNvZGVQYXRoKEEpLHRoaXMuX3BhcnRzLnBhdGg9dGhpcy5fcGFydHMucGF0aC5yZXBsYWNlKGosQSksej90aGlzLm5vcm1hbGl6ZVBhdGgoUyk6dGhpcy5idWlsZCghUyksdGhpc319LGYuc3VmZml4PWZ1bmN0aW9uKEEsUyl7aWYodGhpcy5fcGFydHMudXJuKXJldHVybiBBPT09dm9pZCAwPyIiOnRoaXM7aWYoQT09PXZvaWQgMHx8QT09PSEwKXtpZighdGhpcy5fcGFydHMucGF0aHx8dGhpcy5fcGFydHMucGF0aD09PSIvIilyZXR1cm4iIjt2YXIgQz10aGlzLmZpbGVuYW1lKCksTD1DLmxhc3RJbmRleE9mKCIuIikseixqO3JldHVybiBMPT09LTE/IiI6KHo9Qy5zdWJzdHJpbmcoTCsxKSxqPS9eW2EtejAtOSVdKyQvaS50ZXN0KHopP3o6IiIsQT9pLmRlY29kZVBhdGhTZWdtZW50KGopOmopfWVsc2V7QS5jaGFyQXQoMCk9PT0iLiImJihBPUEuc3Vic3RyaW5nKDEpKTt2YXIgaz10aGlzLnN1ZmZpeCgpLHE7aWYoaylBP3E9bmV3IFJlZ0V4cChjKGspKyIkIik6cT1uZXcgUmVnRXhwKGMoIi4iK2spKyIkIik7ZWxzZXtpZighQSlyZXR1cm4gdGhpczt0aGlzLl9wYXJ0cy5wYXRoKz0iLiIraS5yZWNvZGVQYXRoKEEpfXJldHVybiBxJiYoQT1pLnJlY29kZVBhdGgoQSksdGhpcy5fcGFydHMucGF0aD10aGlzLl9wYXJ0cy5wYXRoLnJlcGxhY2UocSxBKSksdGhpcy5idWlsZCghUyksdGhpc319LGYuc2VnbWVudD1mdW5jdGlvbihBLFMsQyl7dmFyIEw9dGhpcy5fcGFydHMudXJuPyI6IjoiLyIsej10aGlzLnBhdGgoKSxqPXouc3Vic3RyaW5nKDAsMSk9PT0iLyIsaz16LnNwbGl0KEwpO2lmKEEhPT12b2lkIDAmJnR5cGVvZiBBIT0ibnVtYmVyIiYmKEM9UyxTPUEsQT12b2lkIDApLEEhPT12b2lkIDAmJnR5cGVvZiBBIT0ibnVtYmVyIil0aHJvdyBuZXcgRXJyb3IoJ0JhZCBzZWdtZW50ICInK0ErJyIsIG11c3QgYmUgMC1iYXNlZCBpbnRlZ2VyJyk7aWYoaiYmay5zaGlmdCgpLEE8MCYmKEE9TWF0aC5tYXgoay5sZW5ndGgrQSwwKSksUz09PXZvaWQgMClyZXR1cm4gQT09PXZvaWQgMD9rOmtbQV07aWYoQT09PW51bGx8fGtbQV09PT12b2lkIDApaWYocChTKSl7az1bXTtmb3IodmFyIHE9MCxXPVMubGVuZ3RoO3E8VztxKyspIVNbcV0ubGVuZ3RoJiYoIWsubGVuZ3RofHwha1trLmxlbmd0aC0xXS5sZW5ndGgpfHwoay5sZW5ndGgmJiFrW2subGVuZ3RoLTFdLmxlbmd0aCYmay5wb3AoKSxrLnB1c2goZyhTW3FdKSkpfWVsc2UoU3x8dHlwZW9mIFM9PSJzdHJpbmciKSYmKFM9ZyhTKSxrW2subGVuZ3RoLTFdPT09IiI/a1trLmxlbmd0aC0xXT1TOmsucHVzaChTKSk7ZWxzZSBTP2tbQV09ZyhTKTprLnNwbGljZShBLDEpO3JldHVybiBqJiZrLnVuc2hpZnQoIiIpLHRoaXMucGF0aChrLmpvaW4oTCksQyl9LGYuc2VnbWVudENvZGVkPWZ1bmN0aW9uKEEsUyxDKXt2YXIgTCx6LGo7aWYodHlwZW9mIEEhPSJudW1iZXIiJiYoQz1TLFM9QSxBPXZvaWQgMCksUz09PXZvaWQgMCl7aWYoTD10aGlzLnNlZ21lbnQoQSxTLEMpLCFwKEwpKUw9TCE9PXZvaWQgMD9pLmRlY29kZShMKTp2b2lkIDA7ZWxzZSBmb3Ioej0wLGo9TC5sZW5ndGg7ejxqO3orKylMW3pdPWkuZGVjb2RlKExbel0pO3JldHVybiBMfWlmKCFwKFMpKVM9dHlwZW9mIFM9PSJzdHJpbmcifHxTIGluc3RhbmNlb2YgU3RyaW5nP2kuZW5jb2RlKFMpOlM7ZWxzZSBmb3Ioej0wLGo9Uy5sZW5ndGg7ejxqO3orKylTW3pdPWkuZW5jb2RlKFNbel0pO3JldHVybiB0aGlzLnNlZ21lbnQoQSxTLEMpfTt2YXIgQj1mLnF1ZXJ5O3JldHVybiBmLnF1ZXJ5PWZ1bmN0aW9uKEEsUyl7aWYoQT09PSEwKXJldHVybiBpLnBhcnNlUXVlcnkodGhpcy5fcGFydHMucXVlcnksdGhpcy5fcGFydHMuZXNjYXBlUXVlcnlTcGFjZSk7aWYodHlwZW9mIEE9PSJmdW5jdGlvbiIpe3ZhciBDPWkucGFyc2VRdWVyeSh0aGlzLl9wYXJ0cy5xdWVyeSx0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlKSxMPUEuY2FsbCh0aGlzLEMpO3JldHVybiB0aGlzLl9wYXJ0cy5xdWVyeT1pLmJ1aWxkUXVlcnkoTHx8Qyx0aGlzLl9wYXJ0cy5kdXBsaWNhdGVRdWVyeVBhcmFtZXRlcnMsdGhpcy5fcGFydHMuZXNjYXBlUXVlcnlTcGFjZSksdGhpcy5idWlsZCghUyksdGhpc31lbHNlIHJldHVybiBBIT09dm9pZCAwJiZ0eXBlb2YgQSE9InN0cmluZyI/KHRoaXMuX3BhcnRzLnF1ZXJ5PWkuYnVpbGRRdWVyeShBLHRoaXMuX3BhcnRzLmR1cGxpY2F0ZVF1ZXJ5UGFyYW1ldGVycyx0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlKSx0aGlzLmJ1aWxkKCFTKSx0aGlzKTpCLmNhbGwodGhpcyxBLFMpfSxmLnNldFF1ZXJ5PWZ1bmN0aW9uKEEsUyxDKXt2YXIgTD1pLnBhcnNlUXVlcnkodGhpcy5fcGFydHMucXVlcnksdGhpcy5fcGFydHMuZXNjYXBlUXVlcnlTcGFjZSk7aWYodHlwZW9mIEE9PSJzdHJpbmcifHxBIGluc3RhbmNlb2YgU3RyaW5nKUxbQV09UyE9PXZvaWQgMD9TOm51bGw7ZWxzZSBpZih0eXBlb2YgQT09Im9iamVjdCIpZm9yKHZhciB6IGluIEEpdS5jYWxsKEEseikmJihMW3pdPUFbel0pO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiVVJJLmFkZFF1ZXJ5KCkgYWNjZXB0cyBhbiBvYmplY3QsIHN0cmluZyBhcyB0aGUgbmFtZSBwYXJhbWV0ZXIiKTtyZXR1cm4gdGhpcy5fcGFydHMucXVlcnk9aS5idWlsZFF1ZXJ5KEwsdGhpcy5fcGFydHMuZHVwbGljYXRlUXVlcnlQYXJhbWV0ZXJzLHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpLHR5cGVvZiBBIT0ic3RyaW5nIiYmKEM9UyksdGhpcy5idWlsZCghQyksdGhpc30sZi5hZGRRdWVyeT1mdW5jdGlvbihBLFMsQyl7dmFyIEw9aS5wYXJzZVF1ZXJ5KHRoaXMuX3BhcnRzLnF1ZXJ5LHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpO3JldHVybiBpLmFkZFF1ZXJ5KEwsQSxTPT09dm9pZCAwP251bGw6UyksdGhpcy5fcGFydHMucXVlcnk9aS5idWlsZFF1ZXJ5KEwsdGhpcy5fcGFydHMuZHVwbGljYXRlUXVlcnlQYXJhbWV0ZXJzLHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpLHR5cGVvZiBBIT0ic3RyaW5nIiYmKEM9UyksdGhpcy5idWlsZCghQyksdGhpc30sZi5yZW1vdmVRdWVyeT1mdW5jdGlvbihBLFMsQyl7dmFyIEw9aS5wYXJzZVF1ZXJ5KHRoaXMuX3BhcnRzLnF1ZXJ5LHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpO3JldHVybiBpLnJlbW92ZVF1ZXJ5KEwsQSxTKSx0aGlzLl9wYXJ0cy5xdWVyeT1pLmJ1aWxkUXVlcnkoTCx0aGlzLl9wYXJ0cy5kdXBsaWNhdGVRdWVyeVBhcmFtZXRlcnMsdGhpcy5fcGFydHMuZXNjYXBlUXVlcnlTcGFjZSksdHlwZW9mIEEhPSJzdHJpbmciJiYoQz1TKSx0aGlzLmJ1aWxkKCFDKSx0aGlzfSxmLmhhc1F1ZXJ5PWZ1bmN0aW9uKEEsUyxDKXt2YXIgTD1pLnBhcnNlUXVlcnkodGhpcy5fcGFydHMucXVlcnksdGhpcy5fcGFydHMuZXNjYXBlUXVlcnlTcGFjZSk7cmV0dXJuIGkuaGFzUXVlcnkoTCxBLFMsQyl9LGYuc2V0U2VhcmNoPWYuc2V0UXVlcnksZi5hZGRTZWFyY2g9Zi5hZGRRdWVyeSxmLnJlbW92ZVNlYXJjaD1mLnJlbW92ZVF1ZXJ5LGYuaGFzU2VhcmNoPWYuaGFzUXVlcnksZi5ub3JtYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcGFydHMudXJuP3RoaXMubm9ybWFsaXplUHJvdG9jb2woITEpLm5vcm1hbGl6ZVBhdGgoITEpLm5vcm1hbGl6ZVF1ZXJ5KCExKS5ub3JtYWxpemVGcmFnbWVudCghMSkuYnVpbGQoKTp0aGlzLm5vcm1hbGl6ZVByb3RvY29sKCExKS5ub3JtYWxpemVIb3N0bmFtZSghMSkubm9ybWFsaXplUG9ydCghMSkubm9ybWFsaXplUGF0aCghMSkubm9ybWFsaXplUXVlcnkoITEpLm5vcm1hbGl6ZUZyYWdtZW50KCExKS5idWlsZCgpfSxmLm5vcm1hbGl6ZVByb3RvY29sPWZ1bmN0aW9uKEEpe3JldHVybiB0eXBlb2YgdGhpcy5fcGFydHMucHJvdG9jb2w9PSJzdHJpbmciJiYodGhpcy5fcGFydHMucHJvdG9jb2w9dGhpcy5fcGFydHMucHJvdG9jb2wudG9Mb3dlckNhc2UoKSx0aGlzLmJ1aWxkKCFBKSksdGhpc30sZi5ub3JtYWxpemVIb3N0bmFtZT1mdW5jdGlvbihBKXtyZXR1cm4gdGhpcy5fcGFydHMuaG9zdG5hbWUmJih0aGlzLmlzKCJJRE4iKSYmdD90aGlzLl9wYXJ0cy5ob3N0bmFtZT10LnRvQVNDSUkodGhpcy5fcGFydHMuaG9zdG5hbWUpOnRoaXMuaXMoIklQdjYiKSYmZSYmKHRoaXMuX3BhcnRzLmhvc3RuYW1lPWUuYmVzdCh0aGlzLl9wYXJ0cy5ob3N0bmFtZSkpLHRoaXMuX3BhcnRzLmhvc3RuYW1lPXRoaXMuX3BhcnRzLmhvc3RuYW1lLnRvTG93ZXJDYXNlKCksdGhpcy5idWlsZCghQSkpLHRoaXN9LGYubm9ybWFsaXplUG9ydD1mdW5jdGlvbihBKXtyZXR1cm4gdHlwZW9mIHRoaXMuX3BhcnRzLnByb3RvY29sPT0ic3RyaW5nIiYmdGhpcy5fcGFydHMucG9ydD09PWkuZGVmYXVsdFBvcnRzW3RoaXMuX3BhcnRzLnByb3RvY29sXSYmKHRoaXMuX3BhcnRzLnBvcnQ9bnVsbCx0aGlzLmJ1aWxkKCFBKSksdGhpc30sZi5ub3JtYWxpemVQYXRoPWZ1bmN0aW9uKEEpe3ZhciBTPXRoaXMuX3BhcnRzLnBhdGg7aWYoIVMpcmV0dXJuIHRoaXM7aWYodGhpcy5fcGFydHMudXJuKXJldHVybiB0aGlzLl9wYXJ0cy5wYXRoPWkucmVjb2RlVXJuUGF0aCh0aGlzLl9wYXJ0cy5wYXRoKSx0aGlzLmJ1aWxkKCFBKSx0aGlzO2lmKHRoaXMuX3BhcnRzLnBhdGg9PT0iLyIpcmV0dXJuIHRoaXM7Uz1pLnJlY29kZVBhdGgoUyk7dmFyIEMsTD0iIix6LGo7Zm9yKFMuY2hhckF0KDApIT09Ii8iJiYoQz0hMCxTPSIvIitTKSwoUy5zbGljZSgtMyk9PT0iLy4uInx8Uy5zbGljZSgtMik9PT0iLy4iKSYmKFMrPSIvIiksUz1TLnJlcGxhY2UoLyhcLyhcLlwvKSspfChcL1wuJCkvZywiLyIpLnJlcGxhY2UoL1wvezIsfS9nLCIvIiksQyYmKEw9Uy5zdWJzdHJpbmcoMSkubWF0Y2goL14oXC5cLlwvKSsvKXx8IiIsTCYmKEw9TFswXSkpO3o9Uy5zZWFyY2goL1wvXC5cLihcL3wkKS8pLHohPT0tMTspe2lmKHo9PT0wKXtTPVMuc3Vic3RyaW5nKDMpO2NvbnRpbnVlfWo9Uy5zdWJzdHJpbmcoMCx6KS5sYXN0SW5kZXhPZigiLyIpLGo9PT0tMSYmKGo9eiksUz1TLnN1YnN0cmluZygwLGopK1Muc3Vic3RyaW5nKHorMyl9cmV0dXJuIEMmJnRoaXMuaXMoInJlbGF0aXZlIikmJihTPUwrUy5zdWJzdHJpbmcoMSkpLHRoaXMuX3BhcnRzLnBhdGg9Uyx0aGlzLmJ1aWxkKCFBKSx0aGlzfSxmLm5vcm1hbGl6ZVBhdGhuYW1lPWYubm9ybWFsaXplUGF0aCxmLm5vcm1hbGl6ZVF1ZXJ5PWZ1bmN0aW9uKEEpe3JldHVybiB0eXBlb2YgdGhpcy5fcGFydHMucXVlcnk9PSJzdHJpbmciJiYodGhpcy5fcGFydHMucXVlcnkubGVuZ3RoP3RoaXMucXVlcnkoaS5wYXJzZVF1ZXJ5KHRoaXMuX3BhcnRzLnF1ZXJ5LHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2UpKTp0aGlzLl9wYXJ0cy5xdWVyeT1udWxsLHRoaXMuYnVpbGQoIUEpKSx0aGlzfSxmLm5vcm1hbGl6ZUZyYWdtZW50PWZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLl9wYXJ0cy5mcmFnbWVudHx8KHRoaXMuX3BhcnRzLmZyYWdtZW50PW51bGwsdGhpcy5idWlsZCghQSkpLHRoaXN9LGYubm9ybWFsaXplU2VhcmNoPWYubm9ybWFsaXplUXVlcnksZi5ub3JtYWxpemVIYXNoPWYubm9ybWFsaXplRnJhZ21lbnQsZi5pc284ODU5PWZ1bmN0aW9uKCl7dmFyIEE9aS5lbmNvZGUsUz1pLmRlY29kZTtpLmVuY29kZT1lc2NhcGUsaS5kZWNvZGU9ZGVjb2RlVVJJQ29tcG9uZW50O3RyeXt0aGlzLm5vcm1hbGl6ZSgpfWZpbmFsbHl7aS5lbmNvZGU9QSxpLmRlY29kZT1TfXJldHVybiB0aGlzfSxmLnVuaWNvZGU9ZnVuY3Rpb24oKXt2YXIgQT1pLmVuY29kZSxTPWkuZGVjb2RlO2kuZW5jb2RlPXcsaS5kZWNvZGU9dW5lc2NhcGU7dHJ5e3RoaXMubm9ybWFsaXplKCl9ZmluYWxseXtpLmVuY29kZT1BLGkuZGVjb2RlPVN9cmV0dXJuIHRoaXN9LGYucmVhZGFibGU9ZnVuY3Rpb24oKXt2YXIgQT10aGlzLmNsb25lKCk7QS51c2VybmFtZSgiIikucGFzc3dvcmQoIiIpLm5vcm1hbGl6ZSgpO3ZhciBTPSIiO2lmKEEuX3BhcnRzLnByb3RvY29sJiYoUys9QS5fcGFydHMucHJvdG9jb2wrIjovLyIpLEEuX3BhcnRzLmhvc3RuYW1lJiYoQS5pcygicHVueWNvZGUiKSYmdD8oUys9dC50b1VuaWNvZGUoQS5fcGFydHMuaG9zdG5hbWUpLEEuX3BhcnRzLnBvcnQmJihTKz0iOiIrQS5fcGFydHMucG9ydCkpOlMrPUEuaG9zdCgpKSxBLl9wYXJ0cy5ob3N0bmFtZSYmQS5fcGFydHMucGF0aCYmQS5fcGFydHMucGF0aC5jaGFyQXQoMCkhPT0iLyImJihTKz0iLyIpLFMrPUEucGF0aCghMCksQS5fcGFydHMucXVlcnkpe2Zvcih2YXIgQz0iIixMPTAsej1BLl9wYXJ0cy5xdWVyeS5zcGxpdCgiJiIpLGo9ei5sZW5ndGg7TDxqO0wrKyl7dmFyIGs9KHpbTF18fCIiKS5zcGxpdCgiPSIpO0MrPSImIitpLmRlY29kZVF1ZXJ5KGtbMF0sdGhpcy5fcGFydHMuZXNjYXBlUXVlcnlTcGFjZSkucmVwbGFjZSgvJi9nLCIlMjYiKSxrWzFdIT09dm9pZCAwJiYoQys9Ij0iK2kuZGVjb2RlUXVlcnkoa1sxXSx0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlKS5yZXBsYWNlKC8mL2csIiUyNiIpKX1TKz0iPyIrQy5zdWJzdHJpbmcoMSl9cmV0dXJuIFMrPWkuZGVjb2RlUXVlcnkoQS5oYXNoKCksITApLFN9LGYuYWJzb2x1dGVUbz1mdW5jdGlvbihBKXt2YXIgUz10aGlzLmNsb25lKCksQz1bInByb3RvY29sIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsImhvc3RuYW1lIiwicG9ydCJdLEwseixqO2lmKHRoaXMuX3BhcnRzLnVybil0aHJvdyBuZXcgRXJyb3IoIlVSTnMgZG8gbm90IGhhdmUgYW55IGdlbmVyYWxseSBkZWZpbmVkIGhpZXJhcmNoaWNhbCBjb21wb25lbnRzIik7aWYoQSBpbnN0YW5jZW9mIGl8fChBPW5ldyBpKEEpKSxTLl9wYXJ0cy5wcm90b2NvbHx8KFMuX3BhcnRzLnByb3RvY29sPUEuX3BhcnRzLnByb3RvY29sLHRoaXMuX3BhcnRzLmhvc3RuYW1lKSlyZXR1cm4gUztmb3Ioej0wO2o9Q1t6XTt6KyspUy5fcGFydHNbal09QS5fcGFydHNbal07cmV0dXJuIFMuX3BhcnRzLnBhdGg/KFMuX3BhcnRzLnBhdGguc3Vic3RyaW5nKC0yKT09PSIuLiImJihTLl9wYXJ0cy5wYXRoKz0iLyIpLFMucGF0aCgpLmNoYXJBdCgwKSE9PSIvIiYmKEw9QS5kaXJlY3RvcnkoKSxMPUx8fChBLnBhdGgoKS5pbmRleE9mKCIvIik9PT0wPyIvIjoiIiksUy5fcGFydHMucGF0aD0oTD9MKyIvIjoiIikrUy5fcGFydHMucGF0aCxTLm5vcm1hbGl6ZVBhdGgoKSkpOihTLl9wYXJ0cy5wYXRoPUEuX3BhcnRzLnBhdGgsUy5fcGFydHMucXVlcnl8fChTLl9wYXJ0cy5xdWVyeT1BLl9wYXJ0cy5xdWVyeSkpLFMuYnVpbGQoKSxTfSxmLnJlbGF0aXZlVG89ZnVuY3Rpb24oQSl7dmFyIFM9dGhpcy5jbG9uZSgpLm5vcm1hbGl6ZSgpLEMsTCx6LGosaztpZihTLl9wYXJ0cy51cm4pdGhyb3cgbmV3IEVycm9yKCJVUk5zIGRvIG5vdCBoYXZlIGFueSBnZW5lcmFsbHkgZGVmaW5lZCBoaWVyYXJjaGljYWwgY29tcG9uZW50cyIpO2lmKEE9bmV3IGkoQSkubm9ybWFsaXplKCksQz1TLl9wYXJ0cyxMPUEuX3BhcnRzLGo9Uy5wYXRoKCksaz1BLnBhdGgoKSxqLmNoYXJBdCgwKSE9PSIvIil0aHJvdyBuZXcgRXJyb3IoIlVSSSBpcyBhbHJlYWR5IHJlbGF0aXZlIik7aWYoay5jaGFyQXQoMCkhPT0iLyIpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY2FsY3VsYXRlIGEgVVJJIHJlbGF0aXZlIHRvIGFub3RoZXIgcmVsYXRpdmUgVVJJIik7aWYoQy5wcm90b2NvbD09PUwucHJvdG9jb2wmJihDLnByb3RvY29sPW51bGwpLEMudXNlcm5hbWUhPT1MLnVzZXJuYW1lfHxDLnBhc3N3b3JkIT09TC5wYXNzd29yZHx8Qy5wcm90b2NvbCE9PW51bGx8fEMudXNlcm5hbWUhPT1udWxsfHxDLnBhc3N3b3JkIT09bnVsbClyZXR1cm4gUy5idWlsZCgpO2lmKEMuaG9zdG5hbWU9PT1MLmhvc3RuYW1lJiZDLnBvcnQ9PT1MLnBvcnQpQy5ob3N0bmFtZT1udWxsLEMucG9ydD1udWxsO2Vsc2UgcmV0dXJuIFMuYnVpbGQoKTtpZihqPT09aylyZXR1cm4gQy5wYXRoPSIiLFMuYnVpbGQoKTtpZih6PWkuY29tbW9uUGF0aChqLGspLCF6KXJldHVybiBTLmJ1aWxkKCk7dmFyIHE9TC5wYXRoLnN1YnN0cmluZyh6Lmxlbmd0aCkucmVwbGFjZSgvW15cL10qJC8sIiIpLnJlcGxhY2UoLy4qP1wvL2csIi4uLyIpO3JldHVybiBDLnBhdGg9cStDLnBhdGguc3Vic3RyaW5nKHoubGVuZ3RoKXx8Ii4vIixTLmJ1aWxkKCl9LGYuZXF1YWxzPWZ1bmN0aW9uKEEpe3ZhciBTPXRoaXMuY2xvbmUoKSxDPW5ldyBpKEEpLEw9e30sej17fSxqPXt9LGsscSxXO2lmKFMubm9ybWFsaXplKCksQy5ub3JtYWxpemUoKSxTLnRvU3RyaW5nKCk9PT1DLnRvU3RyaW5nKCkpcmV0dXJuITA7aWYoaz1TLnF1ZXJ5KCkscT1DLnF1ZXJ5KCksUy5xdWVyeSgiIiksQy5xdWVyeSgiIiksUy50b1N0cmluZygpIT09Qy50b1N0cmluZygpfHxrLmxlbmd0aCE9PXEubGVuZ3RoKXJldHVybiExO0w9aS5wYXJzZVF1ZXJ5KGssdGhpcy5fcGFydHMuZXNjYXBlUXVlcnlTcGFjZSksej1pLnBhcnNlUXVlcnkocSx0aGlzLl9wYXJ0cy5lc2NhcGVRdWVyeVNwYWNlKTtmb3IoVyBpbiBMKWlmKHUuY2FsbChMLFcpKXtpZihwKExbV10pKXtpZighXyhMW1ddLHpbV10pKXJldHVybiExfWVsc2UgaWYoTFtXXSE9PXpbV10pcmV0dXJuITE7altXXT0hMH1mb3IoVyBpbiB6KWlmKHUuY2FsbCh6LFcpJiYhaltXXSlyZXR1cm4hMTtyZXR1cm4hMH0sZi5wcmV2ZW50SW52YWxpZEhvc3RuYW1lPWZ1bmN0aW9uKEEpe3JldHVybiB0aGlzLl9wYXJ0cy5wcmV2ZW50SW52YWxpZEhvc3RuYW1lPSEhQSx0aGlzfSxmLmR1cGxpY2F0ZVF1ZXJ5UGFyYW1ldGVycz1mdW5jdGlvbihBKXtyZXR1cm4gdGhpcy5fcGFydHMuZHVwbGljYXRlUXVlcnlQYXJhbWV0ZXJzPSEhQSx0aGlzfSxmLmVzY2FwZVF1ZXJ5U3BhY2U9ZnVuY3Rpb24oQSl7cmV0dXJuIHRoaXMuX3BhcnRzLmVzY2FwZVF1ZXJ5U3BhY2U9ISFBLHRoaXN9LGl9KX0pO2Z1bmN0aW9uIGJDKHQpe3JldHVybih0Lmxlbmd0aD09PTB8fHRbdC5sZW5ndGgtMV0hPT0iLyIpJiYodD1gJHt0fS9gKSx0fXZhciBYMSxZMT0kKCgpPT57WDE9YkN9KTtmdW5jdGlvbiAkMSh0LGUpe2lmKHQ9PT1udWxsfHx0eXBlb2YgdCE9Im9iamVjdCIpcmV0dXJuIHQ7ZT1lPz8hMTtsZXQgbj1uZXcgdC5jb25zdHJ1Y3Rvcjtmb3IobGV0IG8gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG8pKXtsZXQgcj10W29dO2UmJihyPSQxKHIsZSkpLG5bb109cn1yZXR1cm4gbn12YXIgJGMsWjE9JCgoKT0+eyRjPSQxfSk7ZnVuY3Rpb24gUTEodCxlLG4pe249bj8/ITE7bGV0IG89e30scj1tKHQpLGk9bShlKSxzLGYsdTtpZihyKWZvcihzIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShzKSYmKGY9dFtzXSxpJiZuJiZ0eXBlb2YgZj09Im9iamVjdCImJmUuaGFzT3duUHJvcGVydHkocyk/KHU9ZVtzXSx0eXBlb2YgdT09Im9iamVjdCI/b1tzXT1RMShmLHUsbik6b1tzXT1mKTpvW3NdPWYpO2lmKGkpZm9yKHMgaW4gZSllLmhhc093blByb3BlcnR5KHMpJiYhby5oYXNPd25Qcm9wZXJ0eShzKSYmKHU9ZVtzXSxvW3NdPXUpO3JldHVybiBvfXZhciB5cixjcD0kKCgpPT57ZnQoKTt5cj1RMX0pO2Z1bmN0aW9uIHdDKCl7bGV0IHQsZSxuPW5ldyBQcm9taXNlKGZ1bmN0aW9uKG8scil7dD1vLGU9cn0pO3JldHVybntyZXNvbHZlOnQscmVqZWN0OmUscHJvbWlzZTpufX12YXIgSHMsem09JCgoKT0+e0hzPXdDfSk7ZnVuY3Rpb24gam0odCxlKXtsZXQgbjtyZXR1cm4gdHlwZW9mIGRvY3VtZW50PCJ1IiYmKG49ZG9jdW1lbnQpLGptLl9pbXBsZW1lbnRhdGlvbih0LGUsbil9dmFyIEoxLHVmLEhtPSQoKCk9PntKMT1tcihqcygpLDEpO2Z0KCk7SHQoKTtqbS5faW1wbGVtZW50YXRpb249ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJyZWxhdGl2ZSB1cmkgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpe2lmKHR5cGVvZiBuPiJ1IilyZXR1cm4gdDtlPW4uYmFzZVVSST8/bi5sb2NhdGlvbi5ocmVmfWxldCBvPW5ldyBKMS5kZWZhdWx0KHQpO3JldHVybiBvLnNjaGVtZSgpIT09IiI/by50b1N0cmluZygpOm8uYWJzb2x1dGVUbyhlKS50b1N0cmluZygpfTt1Zj1qbX0pO2Z1bmN0aW9uIFRDKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoInVyaSBpcyByZXF1aXJlZC4iKTtsZXQgbj0iIixvPXQubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4gbyE9PS0xJiYobj10LnN1YnN0cmluZygwLG8rMSkpLGUmJih0PW5ldyB0QS5kZWZhdWx0KHQpLHQucXVlcnkoKS5sZW5ndGghPT0wJiYobis9YD8ke3QucXVlcnkoKX1gKSx0LmZyYWdtZW50KCkubGVuZ3RoIT09MCYmKG4rPWAjJHt0LmZyYWdtZW50KCl9YCkpLG59dmFyIHRBLGVBLG5BPSQoKCk9Pnt0QT1tcihqcygpLDEpO2Z0KCk7SHQoKTtlQT1UQ30pO2Z1bmN0aW9uIE9DKHQpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJ1cmkgaXMgcmVxdWlyZWQuIik7bGV0IGU9bmV3IG9BLmRlZmF1bHQodCk7ZS5ub3JtYWxpemUoKTtsZXQgbj1lLnBhdGgoKSxvPW4ubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4gbyE9PS0xJiYobj1uLnN1YnN0cihvKzEpKSxvPW4ubGFzdEluZGV4T2YoIi4iKSxvPT09LTE/bj0iIjpuPW4uc3Vic3RyKG8rMSksbn12YXIgb0EsckEsaUE9JCgoKT0+e29BPW1yKGpzKCksMSk7ZnQoKTtIdCgpO3JBPU9DfSk7ZnVuY3Rpb24gRUModCxlLG4pe20oZSl8fChlPXQud2lkdGgpLG0obil8fChuPXQuaGVpZ2h0KTtsZXQgbz1zQVtlXTttKG8pfHwobz17fSxzQVtlXT1vKTtsZXQgcj1vW25dO2lmKCFtKHIpKXtsZXQgaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtpLndpZHRoPWUsaS5oZWlnaHQ9bixyPWkuZ2V0Q29udGV4dCgiMmQiLHt3aWxsUmVhZEZyZXF1ZW50bHk6ITB9KSxyLmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbj0iY29weSIsb1tuXT1yfXJldHVybiByLmRyYXdJbWFnZSh0LDAsMCxlLG4pLHIuZ2V0SW1hZ2VEYXRhKDAsMCxlLG4pLmRhdGF9dmFyIHNBLHFtLGNBPSQoKCk9PntmdCgpO3NBPXt9O3FtPUVDfSk7ZnVuY3Rpb24gU0ModCl7cmV0dXJuIHkudHlwZU9mLnN0cmluZygidXJpIix0KSxSQy50ZXN0KHQpfXZhciBSQyxhcCxLbT0kKCgpPT57V3QoKTtSQz0vXmJsb2I6L2k7YXA9U0N9KTtmdW5jdGlvbiB4Qyh0KXttKGVpKXx8KGVpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSksZWkuaHJlZj13aW5kb3cubG9jYXRpb24uaHJlZjtsZXQgZT1laS5ob3N0LG49ZWkucHJvdG9jb2w7cmV0dXJuIGVpLmhyZWY9dCxlaS5ocmVmPWVpLmhyZWYsbiE9PWVpLnByb3RvY29sfHxlIT09ZWkuaG9zdH12YXIgZWksYUEsZkE9JCgoKT0+e2Z0KCk7YUE9eEN9KTtmdW5jdGlvbiBQQyh0KXtyZXR1cm4geS50eXBlT2Yuc3RyaW5nKCJ1cmkiLHQpLENDLnRlc3QodCl9dmFyIENDLGZwLFdtPSQoKCk9PntXdCgpO0NDPS9eZGF0YTovaTtmcD1QQ30pO2Z1bmN0aW9uIE1DKHQpe2xldCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3JldHVybiBlLmFzeW5jPSEwLGUuc3JjPXQsbmV3IFByb21pc2UoKG4sbyk9Pnt3aW5kb3cuY3Jvc3NPcmlnaW5Jc29sYXRlZCYmZS5zZXRBdHRyaWJ1dGUoImNyb3Nzb3JpZ2luIiwiYW5vbnltb3VzIik7bGV0IHI9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXTtlLm9ubG9hZD1mdW5jdGlvbigpe2Uub25sb2FkPXZvaWQgMCxyLnJlbW92ZUNoaWxkKGUpLG4oKX0sZS5vbmVycm9yPWZ1bmN0aW9uKGkpe28oaSl9LHIuYXBwZW5kQ2hpbGQoZSl9KX12YXIgdUEsbEE9JCgoKT0+e3VBPU1DfSk7ZnVuY3Rpb24gTkModCl7aWYoIW0odCkpdGhyb3cgbmV3IEQoIm9iaiBpcyByZXF1aXJlZC4iKTtsZXQgZT0iIjtmb3IobGV0IG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG4pKXtsZXQgbz10W25dLHI9YCR7ZW5jb2RlVVJJQ29tcG9uZW50KG4pfT1gO2lmKEFycmF5LmlzQXJyYXkobykpZm9yKGxldCBpPTAscz1vLmxlbmd0aDtpPHM7KytpKWUrPWAke3IrZW5jb2RlVVJJQ29tcG9uZW50KG9baV0pfSZgO2Vsc2UgZSs9YCR7citlbmNvZGVVUklDb21wb25lbnQobyl9JmB9cmV0dXJuIGU9ZS5zbGljZSgwLC0xKSxlfXZhciBwQSxkQT0kKCgpPT57ZnQoKTtIdCgpO3BBPU5DfSk7ZnVuY3Rpb24gSUModCl7aWYoIW0odCkpdGhyb3cgbmV3IEQoInF1ZXJ5U3RyaW5nIGlzIHJlcXVpcmVkLiIpO2xldCBlPXt9O2lmKHQ9PT0iIilyZXR1cm4gZTtsZXQgbj10LnJlcGxhY2UoL1wrL2csIiUyMCIpLnNwbGl0KC9bJjtdLyk7Zm9yKGxldCBvPTAscj1uLmxlbmd0aDtvPHI7KytvKXtsZXQgaT1uW29dLnNwbGl0KCI9Iikscz1kZWNvZGVVUklDb21wb25lbnQoaVswXSksZj1pWzFdO20oZik/Zj1kZWNvZGVVUklDb21wb25lbnQoZik6Zj0iIjtsZXQgdT1lW3NdO3R5cGVvZiB1PT0ic3RyaW5nIj9lW3NdPVt1LGZdOkFycmF5LmlzQXJyYXkodSk/dS5wdXNoKGYpOmVbc109Zn1yZXR1cm4gZX12YXIgbUEsaEE9JCgoKT0+e2Z0KCk7SHQoKTttQT1JQ30pO3ZhciB2Qyx4bix1cD0kKCgpPT57dkM9e1VOSVNTVUVEOjAsSVNTVUVEOjEsQUNUSVZFOjIsUkVDRUlWRUQ6MyxDQU5DRUxMRUQ6NCxGQUlMRUQ6NX0seG49T2JqZWN0LmZyZWV6ZSh2Qyl9KTt2YXIgRkMsX0EseUE9JCgoKT0+e0ZDPXtURVJSQUlOOjAsSU1BR0VSWToxLFRJTEVTM0Q6MixPVEhFUjozfSxfQT1PYmplY3QuZnJlZXplKEZDKX0pO2Z1bmN0aW9uIGxwKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNUO2xldCBlPXQudGhyb3R0bGVCeVNlcnZlcj8/ITEsbj10LnRocm90dGxlPz8hMTt0aGlzLnVybD10LnVybCx0aGlzLnJlcXVlc3RGdW5jdGlvbj10LnJlcXVlc3RGdW5jdGlvbix0aGlzLmNhbmNlbEZ1bmN0aW9uPXQuY2FuY2VsRnVuY3Rpb24sdGhpcy5wcmlvcml0eUZ1bmN0aW9uPXQucHJpb3JpdHlGdW5jdGlvbix0aGlzLnByaW9yaXR5PXQucHJpb3JpdHk/PzAsdGhpcy50aHJvdHRsZT1uLHRoaXMudGhyb3R0bGVCeVNlcnZlcj1lLHRoaXMudHlwZT10LnR5cGU/P19BLk9USEVSLHRoaXMuc2VydmVyS2V5PXQuc2VydmVyS2V5LHRoaXMuc3RhdGU9eG4uVU5JU1NVRUQsdGhpcy5kZWZlcnJlZD12b2lkIDAsdGhpcy5jYW5jZWxsZWQ9ITF9dmFyIGdBLEFBPSQoKCk9Pnt5ZSgpO2Z0KCk7dXAoKTt5QSgpO2xwLnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24oKXt0aGlzLmNhbmNlbGxlZD0hMH07bHAucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpPyh0LnVybD10aGlzLnVybCx0LnJlcXVlc3RGdW5jdGlvbj10aGlzLnJlcXVlc3RGdW5jdGlvbix0LmNhbmNlbEZ1bmN0aW9uPXRoaXMuY2FuY2VsRnVuY3Rpb24sdC5wcmlvcml0eUZ1bmN0aW9uPXRoaXMucHJpb3JpdHlGdW5jdGlvbix0LnByaW9yaXR5PXRoaXMucHJpb3JpdHksdC50aHJvdHRsZT10aGlzLnRocm90dGxlLHQudGhyb3R0bGVCeVNlcnZlcj10aGlzLnRocm90dGxlQnlTZXJ2ZXIsdC50eXBlPXRoaXMudHlwZSx0LnNlcnZlcktleT10aGlzLnNlcnZlcktleSx0LnN0YXRlPXhuLlVOSVNTVUVELHQuZGVmZXJyZWQ9dm9pZCAwLHQuY2FuY2VsbGVkPSExLHQpOm5ldyBscCh0aGlzKX07Z0E9bHB9KTtmdW5jdGlvbiBMQyh0KXtsZXQgZT17fTtpZighdClyZXR1cm4gZTtsZXQgbj10LnNwbGl0KGBccgpgKTtmb3IobGV0IG89MDtvPG4ubGVuZ3RoOysrbyl7bGV0IHI9bltvXSxpPXIuaW5kZXhPZigiOiAiKTtpZihpPjApe2xldCBzPXIuc3Vic3RyaW5nKDAsaSksZj1yLnN1YnN0cmluZyhpKzIpO2Vbc109Zn19cmV0dXJuIGV9dmFyIGJBLHdBPSQoKCk9PntiQT1MQ30pO2Z1bmN0aW9uIFRBKHQsZSxuKXt0aGlzLnN0YXR1c0NvZGU9dCx0aGlzLnJlc3BvbnNlPWUsdGhpcy5yZXNwb25zZUhlYWRlcnM9bix0eXBlb2YgdGhpcy5yZXNwb25zZUhlYWRlcnM9PSJzdHJpbmciJiYodGhpcy5yZXNwb25zZUhlYWRlcnM9YkEodGhpcy5yZXNwb25zZUhlYWRlcnMpKX12YXIgbGYsT0E9JCgoKT0+e2Z0KCk7d0EoKTtUQS5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtsZXQgdD0iUmVxdWVzdCBoYXMgZmFpbGVkLiI7cmV0dXJuIG0odGhpcy5zdGF0dXNDb2RlKSYmKHQrPWAgU3RhdHVzIENvZGU6ICR7dGhpcy5zdGF0dXNDb2RlfWApLHR9O2xmPVRBfSk7ZnVuY3Rpb24gcGYoKXt0aGlzLl9saXN0ZW5lcnM9W10sdGhpcy5fc2NvcGVzPVtdLHRoaXMuX3RvUmVtb3ZlPVtdLHRoaXMuX2luc2lkZVJhaXNlRXZlbnQ9ITF9ZnVuY3Rpb24gREModCxlKXtyZXR1cm4gZS10fXZhciBFQSxSQT0kKCgpPT57V3QoKTtmdCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHBmLnByb3RvdHlwZSx7bnVtYmVyT2ZMaXN0ZW5lcnM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9saXN0ZW5lcnMubGVuZ3RoLXRoaXMuX3RvUmVtb3ZlLmxlbmd0aH19fSk7cGYucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXI9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5mdW5jKCJsaXN0ZW5lciIsdCksdGhpcy5fbGlzdGVuZXJzLnB1c2godCksdGhpcy5fc2NvcGVzLnB1c2goZSk7bGV0IG49dGhpcztyZXR1cm4gZnVuY3Rpb24oKXtuLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxlKX19O3BmLnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2YuZnVuYygibGlzdGVuZXIiLHQpO2xldCBuPXRoaXMuX2xpc3RlbmVycyxvPXRoaXMuX3Njb3BlcyxyPS0xO2ZvcihsZXQgaT0wO2k8bi5sZW5ndGg7aSsrKWlmKG5baV09PT10JiZvW2ldPT09ZSl7cj1pO2JyZWFrfXJldHVybiByIT09LTE/KHRoaXMuX2luc2lkZVJhaXNlRXZlbnQ/KHRoaXMuX3RvUmVtb3ZlLnB1c2gociksbltyXT12b2lkIDAsb1tyXT12b2lkIDApOihuLnNwbGljZShyLDEpLG8uc3BsaWNlKHIsMSkpLCEwKTohMX07cGYucHJvdG90eXBlLnJhaXNlRXZlbnQ9ZnVuY3Rpb24oKXt0aGlzLl9pbnNpZGVSYWlzZUV2ZW50PSEwO2xldCB0LGU9dGhpcy5fbGlzdGVuZXJzLG49dGhpcy5fc2NvcGVzLG89ZS5sZW5ndGg7Zm9yKHQ9MDt0PG87dCsrKXtsZXQgaT1lW3RdO20oaSkmJmVbdF0uYXBwbHkoblt0XSxhcmd1bWVudHMpfWxldCByPXRoaXMuX3RvUmVtb3ZlO2lmKG89ci5sZW5ndGgsbz4wKXtmb3Ioci5zb3J0KERDKSx0PTA7dDxvO3QrKyl7bGV0IGk9clt0XTtlLnNwbGljZShpLDEpLG4uc3BsaWNlKGksMSl9ci5sZW5ndGg9MH10aGlzLl9pbnNpZGVSYWlzZUV2ZW50PSExfTtFQT1wZn0pO2Z1bmN0aW9uIHFzKHQpe3kudHlwZU9mLm9iamVjdCgib3B0aW9ucyIsdCkseS5kZWZpbmVkKCJvcHRpb25zLmNvbXBhcmF0b3IiLHQuY29tcGFyYXRvciksdGhpcy5fY29tcGFyYXRvcj10LmNvbXBhcmF0b3IsdGhpcy5fYXJyYXk9W10sdGhpcy5fbGVuZ3RoPTAsdGhpcy5fbWF4aW11bUxlbmd0aD12b2lkIDB9ZnVuY3Rpb24gWG0odCxlLG4pe2xldCBvPXRbZV07dFtlXT10W25dLHRbbl09b312YXIgU0EseEE9JCgoKT0+e1d0KCk7ZnQoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhxcy5wcm90b3R5cGUse2xlbmd0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xlbmd0aH19LGludGVybmFsQXJyYXk6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9hcnJheX19LG1heGltdW1MZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tYXhpbXVtTGVuZ3RofSxzZXQ6ZnVuY3Rpb24odCl7eS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIm1heGltdW1MZW5ndGgiLHQsMCk7bGV0IGU9dGhpcy5fbGVuZ3RoO2lmKHQ8ZSl7bGV0IG49dGhpcy5fYXJyYXk7Zm9yKGxldCBvPXQ7bzxlOysrbyluW29dPXZvaWQgMDt0aGlzLl9sZW5ndGg9dCxuLmxlbmd0aD10fXRoaXMuX21heGltdW1MZW5ndGg9dH19LGNvbXBhcmF0b3I6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jb21wYXJhdG9yfX19KTtxcy5wcm90b3R5cGUucmVzZXJ2ZT1mdW5jdGlvbih0KXt0PXQ/P3RoaXMuX2xlbmd0aCx0aGlzLl9hcnJheS5sZW5ndGg9dH07cXMucHJvdG90eXBlLmhlYXBpZnk9ZnVuY3Rpb24odCl7dD10Pz8wO2xldCBlPXRoaXMuX2xlbmd0aCxuPXRoaXMuX2NvbXBhcmF0b3Isbz10aGlzLl9hcnJheSxyPS0xLGk9ITA7Zm9yKDtpOyl7bGV0IHM9MioodCsxKSxmPXMtMTtmPGUmJm4ob1tmXSxvW3RdKTwwP3I9ZjpyPXQsczxlJiZuKG9bc10sb1tyXSk8MCYmKHI9cyksciE9PXQ/KFhtKG8scix0KSx0PXIpOmk9ITF9fTtxcy5wcm90b3R5cGUucmVzb3J0PWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5fbGVuZ3RoO2ZvcihsZXQgZT1NYXRoLmNlaWwodC8yKTtlPj0wOy0tZSl0aGlzLmhlYXBpZnkoZSl9O3FzLnByb3RvdHlwZS5pbnNlcnQ9ZnVuY3Rpb24odCl7eS5kZWZpbmVkKCJlbGVtZW50Iix0KTtsZXQgZT10aGlzLl9hcnJheSxuPXRoaXMuX2NvbXBhcmF0b3Isbz10aGlzLl9tYXhpbXVtTGVuZ3RoLHI9dGhpcy5fbGVuZ3RoKys7Zm9yKHI8ZS5sZW5ndGg/ZVtyXT10OmUucHVzaCh0KTtyIT09MDspe2xldCBzPU1hdGguZmxvb3IoKHItMSkvMik7aWYobihlW3JdLGVbc10pPDApWG0oZSxyLHMpLHI9cztlbHNlIGJyZWFrfWxldCBpO3JldHVybiBtKG8pJiZ0aGlzLl9sZW5ndGg+byYmKGk9ZVtvXSx0aGlzLl9sZW5ndGg9byksaX07cXMucHJvdG90eXBlLnBvcD1mdW5jdGlvbih0KXtpZih0PXQ/PzAsdGhpcy5fbGVuZ3RoPT09MClyZXR1cm47eS50eXBlT2YubnVtYmVyLmxlc3NUaGFuKCJpbmRleCIsdCx0aGlzLl9sZW5ndGgpO2xldCBlPXRoaXMuX2FycmF5LG49ZVt0XTtyZXR1cm4gWG0oZSx0LC0tdGhpcy5fbGVuZ3RoKSx0aGlzLmhlYXBpZnkodCksZVt0aGlzLl9sZW5ndGhdPXZvaWQgMCxufTtTQT1xc30pO2Z1bmN0aW9uIEJDKHQsZSl7cmV0dXJuIHQucHJpb3JpdHktZS5wcmlvcml0eX1mdW5jdGlvbiB3bigpe31mdW5jdGlvbiBDQSh0KXttKHQucHJpb3JpdHlGdW5jdGlvbikmJih0LnByaW9yaXR5PXQucHJpb3JpdHlGdW5jdGlvbigpKX1mdW5jdGlvbiBQQSh0KXtyZXR1cm4gdC5zdGF0ZT09PXhuLlVOSVNTVUVEJiYodC5zdGF0ZT14bi5JU1NVRUQsdC5kZWZlcnJlZD1IcygpKSx0LmRlZmVycmVkLnByb21pc2V9ZnVuY3Rpb24ga0ModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKHQuc3RhdGU9PT14bi5DQU5DRUxMRUQpcmV0dXJuO2xldCBuPXQuZGVmZXJyZWQ7LS1IZS5udW1iZXJPZkFjdGl2ZVJlcXVlc3RzLC0tQ2lbdC5zZXJ2ZXJLZXldLGRwLnJhaXNlRXZlbnQoKSx0LnN0YXRlPXhuLlJFQ0VJVkVELHQuZGVmZXJyZWQ9dm9pZCAwLG4ucmVzb2x2ZShlKX19ZnVuY3Rpb24gR0ModCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3Quc3RhdGUhPT14bi5DQU5DRUxMRUQmJigrK0hlLm51bWJlck9mRmFpbGVkUmVxdWVzdHMsLS1IZS5udW1iZXJPZkFjdGl2ZVJlcXVlc3RzLC0tQ2lbdC5zZXJ2ZXJLZXldLGRwLnJhaXNlRXZlbnQoZSksdC5zdGF0ZT14bi5GQUlMRUQsdC5kZWZlcnJlZC5yZWplY3QoZSkpfX1mdW5jdGlvbiBNQSh0KXtsZXQgZT1QQSh0KTtyZXR1cm4gdC5zdGF0ZT14bi5BQ1RJVkUsbmkucHVzaCh0KSwrK0hlLm51bWJlck9mQWN0aXZlUmVxdWVzdHMsKytIZS5udW1iZXJPZkFjdGl2ZVJlcXVlc3RzRXZlciwrK0NpW3Quc2VydmVyS2V5XSx0LnJlcXVlc3RGdW5jdGlvbigpLnRoZW4oa0ModCkpLmNhdGNoKEdDKHQpKSxlfWZ1bmN0aW9uIEtzKHQpe2xldCBlPXQuc3RhdGU9PT14bi5BQ1RJVkU7aWYodC5zdGF0ZT14bi5DQU5DRUxMRUQsKytIZS5udW1iZXJPZkNhbmNlbGxlZFJlcXVlc3RzLG0odC5kZWZlcnJlZCkpe2xldCBuPXQuZGVmZXJyZWQ7dC5kZWZlcnJlZD12b2lkIDAsbi5yZWplY3QoKX1lJiYoLS1IZS5udW1iZXJPZkFjdGl2ZVJlcXVlc3RzLC0tQ2lbdC5zZXJ2ZXJLZXldLCsrSGUubnVtYmVyT2ZDYW5jZWxsZWRBY3RpdmVSZXF1ZXN0cyksbSh0LmNhbmNlbEZ1bmN0aW9uKSYmdC5jYW5jZWxGdW5jdGlvbigpfWZ1bmN0aW9uIFZDKCl7d24uZGVidWdTaG93U3RhdGlzdGljcyYmKEhlLm51bWJlck9mQWN0aXZlUmVxdWVzdHM9PT0wJiZIZS5sYXN0TnVtYmVyT2ZBY3RpdmVSZXF1ZXN0cz4wJiYoSGUubnVtYmVyT2ZBdHRlbXB0ZWRSZXF1ZXN0cz4wJiYoY29uc29sZS5sb2coYE51bWJlciBvZiBhdHRlbXB0ZWQgcmVxdWVzdHM6ICR7SGUubnVtYmVyT2ZBdHRlbXB0ZWRSZXF1ZXN0c31gKSxIZS5udW1iZXJPZkF0dGVtcHRlZFJlcXVlc3RzPTApLEhlLm51bWJlck9mQ2FuY2VsbGVkUmVxdWVzdHM+MCYmKGNvbnNvbGUubG9nKGBOdW1iZXIgb2YgY2FuY2VsbGVkIHJlcXVlc3RzOiAke0hlLm51bWJlck9mQ2FuY2VsbGVkUmVxdWVzdHN9YCksSGUubnVtYmVyT2ZDYW5jZWxsZWRSZXF1ZXN0cz0wKSxIZS5udW1iZXJPZkNhbmNlbGxlZEFjdGl2ZVJlcXVlc3RzPjAmJihjb25zb2xlLmxvZyhgTnVtYmVyIG9mIGNhbmNlbGxlZCBhY3RpdmUgcmVxdWVzdHM6ICR7SGUubnVtYmVyT2ZDYW5jZWxsZWRBY3RpdmVSZXF1ZXN0c31gKSxIZS5udW1iZXJPZkNhbmNlbGxlZEFjdGl2ZVJlcXVlc3RzPTApLEhlLm51bWJlck9mRmFpbGVkUmVxdWVzdHM+MCYmKGNvbnNvbGUubG9nKGBOdW1iZXIgb2YgZmFpbGVkIHJlcXVlc3RzOiAke0hlLm51bWJlck9mRmFpbGVkUmVxdWVzdHN9YCksSGUubnVtYmVyT2ZGYWlsZWRSZXF1ZXN0cz0wKSksSGUubGFzdE51bWJlck9mQWN0aXZlUmVxdWVzdHM9SGUubnVtYmVyT2ZBY3RpdmVSZXF1ZXN0cyl9dmFyIHBwLEhlLFpjLE9vLG5pLENpLFVDLGRwLG1wLE5BPSQoKCk9PntwcD1tcihqcygpLDEpO1d0KCk7em0oKTtmdCgpO1JBKCk7eEEoKTtLbSgpO1dtKCk7dXAoKTtIZT17bnVtYmVyT2ZBdHRlbXB0ZWRSZXF1ZXN0czowLG51bWJlck9mQWN0aXZlUmVxdWVzdHM6MCxudW1iZXJPZkNhbmNlbGxlZFJlcXVlc3RzOjAsbnVtYmVyT2ZDYW5jZWxsZWRBY3RpdmVSZXF1ZXN0czowLG51bWJlck9mRmFpbGVkUmVxdWVzdHM6MCxudW1iZXJPZkFjdGl2ZVJlcXVlc3RzRXZlcjowLGxhc3ROdW1iZXJPZkFjdGl2ZVJlcXVlc3RzOjB9LFpjPTIwLE9vPW5ldyBTQSh7Y29tcGFyYXRvcjpCQ30pO09vLm1heGltdW1MZW5ndGg9WmM7T28ucmVzZXJ2ZShaYyk7bmk9W10sQ2k9e30sVUM9dHlwZW9mIGRvY3VtZW50PCJ1Ij9uZXcgcHAuZGVmYXVsdChkb2N1bWVudC5sb2NhdGlvbi5ocmVmKTpuZXcgcHAuZGVmYXVsdCxkcD1uZXcgRUE7d24ubWF4aW11bVJlcXVlc3RzPTUwO3duLm1heGltdW1SZXF1ZXN0c1BlclNlcnZlcj0xODt3bi5yZXF1ZXN0c0J5U2VydmVyPXt9O3duLnRocm90dGxlUmVxdWVzdHM9ITA7d24uZGVidWdTaG93U3RhdGlzdGljcz0hMTt3bi5yZXF1ZXN0Q29tcGxldGVkRXZlbnQ9ZHA7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMod24se3N0YXRpc3RpY3M6e2dldDpmdW5jdGlvbigpe3JldHVybiBIZX19LHByaW9yaXR5SGVhcExlbmd0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIFpjfSxzZXQ6ZnVuY3Rpb24odCl7aWYodDxaYylmb3IoO09vLmxlbmd0aD50Oyl7bGV0IGU9T28ucG9wKCk7S3MoZSl9WmM9dCxPby5tYXhpbXVtTGVuZ3RoPXQsT28ucmVzZXJ2ZSh0KX19fSk7d24uc2VydmVySGFzT3BlblNsb3RzPWZ1bmN0aW9uKHQsZSl7ZT1lPz8xO2xldCBuPXduLnJlcXVlc3RzQnlTZXJ2ZXJbdF0/P3duLm1heGltdW1SZXF1ZXN0c1BlclNlcnZlcjtyZXR1cm4gQ2lbdF0rZTw9bn07d24uaGVhcEhhc09wZW5TbG90cz1mdW5jdGlvbih0KXtyZXR1cm4gT28ubGVuZ3RoK3Q8PVpjfTt3bi51cGRhdGU9ZnVuY3Rpb24oKXtsZXQgdCxlLG49MCxvPW5pLmxlbmd0aDtmb3IodD0wO3Q8bzsrK3Qpe2lmKGU9bmlbdF0sZS5jYW5jZWxsZWQmJktzKGUpLGUuc3RhdGUhPT14bi5BQ1RJVkUpeysrbjtjb250aW51ZX1uPjAmJihuaVt0LW5dPWUpfW5pLmxlbmd0aC09bjtsZXQgcj1Pby5pbnRlcm5hbEFycmF5LGk9T28ubGVuZ3RoO2Zvcih0PTA7dDxpOysrdClDQShyW3RdKTtPby5yZXNvcnQoKTtsZXQgcz1NYXRoLm1heCh3bi5tYXhpbXVtUmVxdWVzdHMtbmkubGVuZ3RoLDApLGY9MDtmb3IoO2Y8cyYmT28ubGVuZ3RoPjA7KXtpZihlPU9vLnBvcCgpLGUuY2FuY2VsbGVkKXtLcyhlKTtjb250aW51ZX1pZihlLnRocm90dGxlQnlTZXJ2ZXImJiF3bi5zZXJ2ZXJIYXNPcGVuU2xvdHMoZS5zZXJ2ZXJLZXkpKXtLcyhlKTtjb250aW51ZX1NQShlKSwrK2Z9VkMoKX07d24uZ2V0U2VydmVyS2V5PWZ1bmN0aW9uKHQpe3kudHlwZU9mLnN0cmluZygidXJsIix0KTtsZXQgZT1uZXcgcHAuZGVmYXVsdCh0KTtlLnNjaGVtZSgpPT09IiImJihlPWUuYWJzb2x1dGVUbyhVQyksZS5ub3JtYWxpemUoKSk7bGV0IG49ZS5hdXRob3JpdHkoKTsvOi8udGVzdChuKXx8KG49YCR7bn06JHtlLnNjaGVtZSgpPT09Imh0dHBzIj8iNDQzIjoiODAifWApO2xldCBvPUNpW25dO3JldHVybiBtKG8pfHwoQ2lbbl09MCksbn07d24ucmVxdWVzdD1mdW5jdGlvbih0KXtpZih5LnR5cGVPZi5vYmplY3QoInJlcXVlc3QiLHQpLHkudHlwZU9mLnN0cmluZygicmVxdWVzdC51cmwiLHQudXJsKSx5LnR5cGVPZi5mdW5jKCJyZXF1ZXN0LnJlcXVlc3RGdW5jdGlvbiIsdC5yZXF1ZXN0RnVuY3Rpb24pLGZwKHQudXJsKXx8YXAodC51cmwpKXJldHVybiBkcC5yYWlzZUV2ZW50KCksdC5zdGF0ZT14bi5SRUNFSVZFRCx0LnJlcXVlc3RGdW5jdGlvbigpO2lmKCsrSGUubnVtYmVyT2ZBdHRlbXB0ZWRSZXF1ZXN0cyxtKHQuc2VydmVyS2V5KXx8KHQuc2VydmVyS2V5PXduLmdldFNlcnZlcktleSh0LnVybCkpLHduLnRocm90dGxlUmVxdWVzdHMmJnQudGhyb3R0bGVCeVNlcnZlciYmIXduLnNlcnZlckhhc09wZW5TbG90cyh0LnNlcnZlcktleSkpcmV0dXJuO2lmKCF3bi50aHJvdHRsZVJlcXVlc3RzfHwhdC50aHJvdHRsZSlyZXR1cm4gTUEodCk7aWYobmkubGVuZ3RoPj13bi5tYXhpbXVtUmVxdWVzdHMpcmV0dXJuO0NBKHQpO2xldCBlPU9vLmluc2VydCh0KTtpZihtKGUpKXtpZihlPT09dClyZXR1cm47S3MoZSl9cmV0dXJuIFBBKHQpfTt3bi5jbGVhckZvclNwZWNzPWZ1bmN0aW9uKCl7Zm9yKDtPby5sZW5ndGg+MDspe2xldCBlPU9vLnBvcCgpO0tzKGUpfWxldCB0PW5pLmxlbmd0aDtmb3IobGV0IGU9MDtlPHQ7KytlKUtzKG5pW2VdKTtuaS5sZW5ndGg9MCxDaT17fSxIZS5udW1iZXJPZkF0dGVtcHRlZFJlcXVlc3RzPTAsSGUubnVtYmVyT2ZBY3RpdmVSZXF1ZXN0cz0wLEhlLm51bWJlck9mQ2FuY2VsbGVkUmVxdWVzdHM9MCxIZS5udW1iZXJPZkNhbmNlbGxlZEFjdGl2ZVJlcXVlc3RzPTAsSGUubnVtYmVyT2ZGYWlsZWRSZXF1ZXN0cz0wLEhlLm51bWJlck9mQWN0aXZlUmVxdWVzdHNFdmVyPTAsSGUubGFzdE51bWJlck9mQWN0aXZlUmVxdWVzdHM9MH07d24ubnVtYmVyT2ZBY3RpdmVSZXF1ZXN0c0J5U2VydmVyPWZ1bmN0aW9uKHQpe3JldHVybiBDaVt0XX07d24ucmVxdWVzdEhlYXA9T287bXA9d259KTtmdW5jdGlvbiB6Qyh0KXtsZXQgZT1uZXcgSUEuZGVmYXVsdCh0KTtlLm5vcm1hbGl6ZSgpO2xldCBuPWUuYXV0aG9yaXR5KCk7aWYobi5sZW5ndGghPT0wKXtpZihlLmF1dGhvcml0eShuKSxuLmluZGV4T2YoIkAiKSE9PS0xJiYobj1uLnNwbGl0KCJAIilbMV0pLG4uaW5kZXhPZigiOiIpPT09LTEpe2xldCBvPWUuc2NoZW1lKCk7aWYoby5sZW5ndGg9PT0wJiYobz13aW5kb3cubG9jYXRpb24ucHJvdG9jb2wsbz1vLnN1YnN0cmluZygwLG8ubGVuZ3RoLTEpKSxvPT09Imh0dHAiKW4rPSI6ODAiO2Vsc2UgaWYobz09PSJodHRwcyIpbis9Ijo0NDMiO2Vsc2UgcmV0dXJufXJldHVybiBufX12YXIgSUEsZGYsUWMsWW0sdkE9JCgoKT0+e0lBPW1yKGpzKCksMSk7ZnQoKTtIdCgpO2RmPXt9LFFjPXt9O2RmLmFkZD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJob3N0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpfHxlPD0wKXRocm93IG5ldyBEKCJwb3J0IGlzIHJlcXVpcmVkIHRvIGJlIGdyZWF0ZXIgdGhhbiAwLiIpO2xldCBuPWAke3QudG9Mb3dlckNhc2UoKX06JHtlfWA7bShRY1tuXSl8fChRY1tuXT0hMCl9O2RmLnJlbW92ZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJob3N0IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpfHxlPD0wKXRocm93IG5ldyBEKCJwb3J0IGlzIHJlcXVpcmVkIHRvIGJlIGdyZWF0ZXIgdGhhbiAwLiIpO2xldCBuPWAke3QudG9Mb3dlckNhc2UoKX06JHtlfWA7bShRY1tuXSkmJmRlbGV0ZSBRY1tuXX07ZGYuY29udGFpbnM9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IEQoInVybCBpcyByZXF1aXJlZC4iKTtsZXQgZT16Qyh0KTtyZXR1cm4hIShtKGUpJiZtKFFjW2VdKSl9O2RmLmNsZWFyPWZ1bmN0aW9uKCl7UWM9e319O1ltPWRmfSk7ZnVuY3Rpb24gVnQodCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1QsdHlwZW9mIHQ9PSJzdHJpbmciJiYodD17dXJsOnR9KSx5LnR5cGVPZi5zdHJpbmcoIm9wdGlvbnMudXJsIix0LnVybCksdGhpcy5fdXJsPXZvaWQgMCx0aGlzLl90ZW1wbGF0ZVZhbHVlcz1vaSh0LnRlbXBsYXRlVmFsdWVzLHt9KSx0aGlzLl9xdWVyeVBhcmFtZXRlcnM9b2kodC5xdWVyeVBhcmFtZXRlcnMse30pLHRoaXMuaGVhZGVycz1vaSh0LmhlYWRlcnMse30pLHRoaXMucmVxdWVzdD10LnJlcXVlc3Q/P25ldyBnQSx0aGlzLnByb3h5PXQucHJveHksdGhpcy5yZXRyeUNhbGxiYWNrPXQucmV0cnlDYWxsYmFjayx0aGlzLnJldHJ5QXR0ZW1wdHM9dC5yZXRyeUF0dGVtcHRzPz8wLHRoaXMuX3JldHJ5Q291bnQ9MCx0LnBhcnNlVXJsPz8hMD90aGlzLnBhcnNlVXJsKHQudXJsLCEwLCEwKTp0aGlzLl91cmw9dC51cmwsdGhpcy5fY3JlZGl0cz10LmNyZWRpdHN9ZnVuY3Rpb24gb2kodCxlKXtyZXR1cm4gbSh0KT8kYyh0KTplfWZ1bmN0aW9uIGpDKHQpe3JldHVybiB0Lmxlbmd0aD09PTA/e306dC5pbmRleE9mKCI9Iik9PT0tMT97W3RdOnZvaWQgMH06bUEodCl9ZnVuY3Rpb24gX3AodCxlLG4pe2lmKCFuKXJldHVybiB5cih0LGUpO2xldCBvPSRjKHQsITApO2ZvcihsZXQgciBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkocikpe2xldCBpPW9bcl0scz1lW3JdO20oaSk/KEFycmF5LmlzQXJyYXkoaSl8fChpPW9bcl09W2ldKSxvW3JdPWkuY29uY2F0KHMpKTpvW3JdPUFycmF5LmlzQXJyYXkocyk/cy5zbGljZSgpOnN9cmV0dXJuIG99ZnVuY3Rpb24gSEModCl7bGV0IGU9T2JqZWN0LmtleXModCk7cmV0dXJuIGUubGVuZ3RoPT09MD8iIjplLmxlbmd0aD09PTEmJiFtKHRbZVswXV0pP2A/JHtlWzBdfWA6YD8ke3BBKHQpfWB9ZnVuY3Rpb24gJG0odCl7bGV0IGU9dC5yZXNvdXJjZSxuPXQuZmxpcFksbz10LnNraXBDb2xvclNwYWNlQ29udmVyc2lvbixyPXQucHJlZmVySW1hZ2VCaXRtYXAsaT1lLnJlcXVlc3Q7aS51cmw9ZS51cmwsaS5yZXF1ZXN0RnVuY3Rpb249ZnVuY3Rpb24oKXtsZXQgZj0hMTshZS5pc0RhdGFVcmkmJiFlLmlzQmxvYlVyaSYmKGY9ZS5pc0Nyb3NzT3JpZ2luVXJsKTtsZXQgdT1IcygpO3JldHVybiBWdC5fSW1wbGVtZW50YXRpb25zLmNyZWF0ZUltYWdlKGksZix1LG4sbyxyKSx1LnByb21pc2V9O2xldCBzPW1wLnJlcXVlc3QoaSk7aWYobShzKSlyZXR1cm4gcy5jYXRjaChmdW5jdGlvbihmKXtyZXR1cm4gaS5zdGF0ZSE9PXhuLkZBSUxFRD9Qcm9taXNlLnJlamVjdChmKTplLnJldHJ5T25FcnJvcihmKS50aGVuKGZ1bmN0aW9uKHUpe3JldHVybiB1PyhpLnN0YXRlPXhuLlVOSVNTVUVELGkuZGVmZXJyZWQ9dm9pZCAwLCRtKHtyZXNvdXJjZTplLGZsaXBZOm4sc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uOm8scHJlZmVySW1hZ2VCaXRtYXA6cn0pKTpQcm9taXNlLnJlamVjdChmKX0pfSl9ZnVuY3Rpb24gQkEodCxlLG4pe2xldCBvPXt9O29bZV09bix0LnNldFF1ZXJ5UGFyYW1ldGVycyhvKTtsZXQgcj10LnJlcXVlc3QsaT10LnVybDtyLnVybD1pLHIucmVxdWVzdEZ1bmN0aW9uPWZ1bmN0aW9uKCl7bGV0IGY9SHMoKTtyZXR1cm4gd2luZG93W25dPWZ1bmN0aW9uKHUpe2YucmVzb2x2ZSh1KTt0cnl7ZGVsZXRlIHdpbmRvd1tuXX1jYXRjaHt3aW5kb3dbbl09dm9pZCAwfX0sVnQuX0ltcGxlbWVudGF0aW9ucy5sb2FkQW5kRXhlY3V0ZVNjcmlwdChpLG4sZiksZi5wcm9taXNlfTtsZXQgcz1tcC5yZXF1ZXN0KHIpO2lmKG0ocykpcmV0dXJuIHMuY2F0Y2goZnVuY3Rpb24oZil7cmV0dXJuIHIuc3RhdGUhPT14bi5GQUlMRUQ/UHJvbWlzZS5yZWplY3QoZik6dC5yZXRyeU9uRXJyb3IoZikudGhlbihmdW5jdGlvbih1KXtyZXR1cm4gdT8oci5zdGF0ZT14bi5VTklTU1VFRCxyLmRlZmVycmVkPXZvaWQgMCxCQSh0LGUsbikpOlByb21pc2UucmVqZWN0KGYpfSl9KX1mdW5jdGlvbiBabSh0KXtpZih0LnN0YXRlPT09eG4uSVNTVUVEfHx0LnN0YXRlPT09eG4uQUNUSVZFKXRocm93IG5ldyBBZSgiVGhlIFJlc291cmNlIGlzIGFscmVhZHkgYmVpbmcgZmV0Y2hlZC4iKTt0LnN0YXRlPXhuLlVOSVNTVUVELHQuZGVmZXJyZWQ9dm9pZCAwfWZ1bmN0aW9uIGhwKHQsZSl7bGV0IG49ZGVjb2RlVVJJQ29tcG9uZW50KGUpO3JldHVybiB0P2F0b2Iobik6bn1mdW5jdGlvbiBGQSh0LGUpe2xldCBuPWhwKHQsZSksbz1uZXcgQXJyYXlCdWZmZXIobi5sZW5ndGgpLHI9bmV3IFVpbnQ4QXJyYXkobyk7Zm9yKGxldCBpPTA7aTxuLmxlbmd0aDtpKyspcltpXT1uLmNoYXJDb2RlQXQoaSk7cmV0dXJuIG99ZnVuY3Rpb24gS0ModCxlKXtlPWU/PyIiO2xldCBuPXRbMV0sbz0hIXRbMl0scj10WzNdLGkscztzd2l0Y2goZSl7Y2FzZSIiOmNhc2UidGV4dCI6cmV0dXJuIGhwKG8scik7Y2FzZSJhcnJheWJ1ZmZlciI6cmV0dXJuIEZBKG8scik7Y2FzZSJibG9iIjpyZXR1cm4gaT1GQShvLHIpLG5ldyBCbG9iKFtpXSx7dHlwZTpufSk7Y2FzZSJkb2N1bWVudCI6cmV0dXJuIHM9bmV3IERPTVBhcnNlcixzLnBhcnNlRnJvbVN0cmluZyhocChvLHIpLG4pO2Nhc2UianNvbiI6cmV0dXJuIEpTT04ucGFyc2UoaHAobyxyKSk7ZGVmYXVsdDp0aHJvdyBuZXcgRChgVW5oYW5kbGVkIHJlc3BvbnNlVHlwZTogJHtlfWApfX1mdW5jdGlvbiBXQyh0LGUsbixvLHIsaSxzKXtmZXRjaCh0LHttZXRob2Q6bixoZWFkZXJzOnJ9KS50aGVuKGFzeW5jIGY9PntpZighZi5vayl7bGV0IHU9e307Zi5oZWFkZXJzLmZvckVhY2goKGMsbCk9Pnt1W2xdPWN9KSxpLnJlamVjdChuZXcgbGYoZi5zdGF0dXMsZix1KSk7cmV0dXJufXN3aXRjaChlKXtjYXNlInRleHQiOmkucmVzb2x2ZShmLnRleHQoKSk7YnJlYWs7Y2FzZSJqc29uIjppLnJlc29sdmUoZi5qc29uKCkpO2JyZWFrO2RlZmF1bHQ6aS5yZXNvbHZlKG5ldyBVaW50OEFycmF5KGF3YWl0IGYuYXJyYXlCdWZmZXIoKSkuYnVmZmVyKTticmVha319KS5jYXRjaCgoKT0+e2kucmVqZWN0KG5ldyBsZil9KX12YXIgTEEsREEsSmMscUMsWEMscmksbWY9JCgoKT0+e0xBPW1yKGpzKCksMSk7WTEoKTtXdCgpO1oxKCk7Y3AoKTt5ZSgpO3ptKCk7ZnQoKTtIdCgpO0htKCk7bkEoKTtpQSgpO2NBKCk7S20oKTtmQSgpO1dtKCk7bEEoKTtLdCgpO2RBKCk7aEEoKTtBQSgpO09BKCk7TkEoKTt1cCgpO3RpKCk7dkEoKTtEQT1mdW5jdGlvbigpe3RyeXtsZXQgdD1uZXcgWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIHQub3BlbigiR0VUIiwiIyIsITApLHQucmVzcG9uc2VUeXBlPSJibG9iIix0LnJlc3BvbnNlVHlwZT09PSJibG9iIn1jYXRjaHtyZXR1cm4hMX19KCk7VnQuY3JlYXRlSWZOZWVkZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBWdD90LmdldERlcml2ZWRSZXNvdXJjZSh7cmVxdWVzdDp0LnJlcXVlc3R9KTp0eXBlb2YgdCE9InN0cmluZyI/dDpuZXcgVnQoe3VybDp0fSl9O1Z0LnN1cHBvcnRzSW1hZ2VCaXRtYXBPcHRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIG0oSmMpP0pjOnR5cGVvZiBjcmVhdGVJbWFnZUJpdG1hcCE9ImZ1bmN0aW9uIj8oSmM9UHJvbWlzZS5yZXNvbHZlKCExKSxKYyk6KEpjPVZ0LmZldGNoQmxvYih7dXJsOiJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFFQUFBQUJDQUlBQUFDUWQxUGVBQUFBQkdkQlRVRUFBRTRnM3JFaURnQUFBQ0JqU0ZKTkFBQjZKZ0FBZ0lRQUFQb0FBQUNBNkFBQWRUQUFBT3BnQUFBNm1BQUFGM0NjdWxFOEFBQUFERWxFUVZRSTEyTmc2R0FBQUFFVUFJbmdFM1ppQUFBQUFFbEZUa1N1UW1DQyJ9KS50aGVuKGZ1bmN0aW9uKGUpe2xldCBuPXtpbWFnZU9yaWVudGF0aW9uOiJmbGlwWSIscHJlbXVsdGlwbHlBbHBoYToibm9uZSIsY29sb3JTcGFjZUNvbnZlcnNpb246Im5vbmUifTtyZXR1cm4gUHJvbWlzZS5hbGwoW2NyZWF0ZUltYWdlQml0bWFwKGUsbiksY3JlYXRlSW1hZ2VCaXRtYXAoZSldKX0pLnRoZW4oZnVuY3Rpb24oZSl7bGV0IG49cW0oZVswXSksbz1xbShlWzFdKTtyZXR1cm4gblsxXSE9PW9bMV19KS5jYXRjaChmdW5jdGlvbigpe3JldHVybiExfSksSmMpfTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhWdCx7aXNCbG9iU3VwcG9ydGVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gREF9fX0pO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFZ0LnByb3RvdHlwZSx7cXVlcnlQYXJhbWV0ZXJzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcXVlcnlQYXJhbWV0ZXJzfX0sdGVtcGxhdGVWYWx1ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90ZW1wbGF0ZVZhbHVlc319LHVybDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VXJsQ29tcG9uZW50KCEwLCEwKX0sc2V0OmZ1bmN0aW9uKHQpe3RoaXMucGFyc2VVcmwodCwhMSwhMSl9fSxleHRlbnNpb246e2dldDpmdW5jdGlvbigpe3JldHVybiByQSh0aGlzLl91cmwpfX0saXNEYXRhVXJpOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZnAodGhpcy5fdXJsKX19LGlzQmxvYlVyaTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGFwKHRoaXMuX3VybCl9fSxpc0Nyb3NzT3JpZ2luVXJsOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gYUEodGhpcy5fdXJsKX19LGhhc0hlYWRlcnM6e2dldDpmdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyh0aGlzLmhlYWRlcnMpLmxlbmd0aD4wfX0sY3JlZGl0czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NyZWRpdHN9fX0pO1Z0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFVybENvbXBvbmVudCghMCwhMCl9O1Z0LnByb3RvdHlwZS5wYXJzZVVybD1mdW5jdGlvbih0LGUsbixvKXtsZXQgcj1uZXcgTEEuZGVmYXVsdCh0KSxpPWpDKHIucXVlcnkoKSk7dGhpcy5fcXVlcnlQYXJhbWV0ZXJzPWU/X3AoaSx0aGlzLnF1ZXJ5UGFyYW1ldGVycyxuKTppLHIuc2VhcmNoKCIiKSxyLmZyYWdtZW50KCIiKSxtKG8pJiZyLnNjaGVtZSgpPT09IiImJihyPXIuYWJzb2x1dGVUbyh1ZihvKSkpLHRoaXMuX3VybD1yLnRvU3RyaW5nKCl9O1Z0LnByb3RvdHlwZS5nZXRVcmxDb21wb25lbnQ9ZnVuY3Rpb24odCxlKXtpZih0aGlzLmlzRGF0YVVyaSlyZXR1cm4gdGhpcy5fdXJsO2xldCBuPXRoaXMuX3VybDt0JiYobj1gJHtufSR7SEModGhpcy5xdWVyeVBhcmFtZXRlcnMpfWApLG49bi5yZXBsYWNlKC8lN0IvZywieyIpLnJlcGxhY2UoLyU3RC9nLCJ9Iik7bGV0IG89dGhpcy5fdGVtcGxhdGVWYWx1ZXM7cmV0dXJuIE9iamVjdC5rZXlzKG8pLmxlbmd0aD4wJiYobj1uLnJlcGxhY2UoL3soLio/KX0vZyxmdW5jdGlvbihyLGkpe2xldCBzPW9baV07cmV0dXJuIG0ocyk/ZW5jb2RlVVJJQ29tcG9uZW50KHMpOnJ9KSksZSYmbSh0aGlzLnByb3h5KSYmKG49dGhpcy5wcm94eS5nZXRVUkwobikpLG59O1Z0LnByb3RvdHlwZS5zZXRRdWVyeVBhcmFtZXRlcnM9ZnVuY3Rpb24odCxlKXtlP3RoaXMuX3F1ZXJ5UGFyYW1ldGVycz1fcCh0aGlzLl9xdWVyeVBhcmFtZXRlcnMsdCwhMSk6dGhpcy5fcXVlcnlQYXJhbWV0ZXJzPV9wKHQsdGhpcy5fcXVlcnlQYXJhbWV0ZXJzLCExKX07VnQucHJvdG90eXBlLmFwcGVuZFF1ZXJ5UGFyYW1ldGVycz1mdW5jdGlvbih0KXt0aGlzLl9xdWVyeVBhcmFtZXRlcnM9X3AodCx0aGlzLl9xdWVyeVBhcmFtZXRlcnMsITApfTtWdC5wcm90b3R5cGUuc2V0VGVtcGxhdGVWYWx1ZXM9ZnVuY3Rpb24odCxlKXtlP3RoaXMuX3RlbXBsYXRlVmFsdWVzPXlyKHRoaXMuX3RlbXBsYXRlVmFsdWVzLHQpOnRoaXMuX3RlbXBsYXRlVmFsdWVzPXlyKHQsdGhpcy5fdGVtcGxhdGVWYWx1ZXMpfTtWdC5wcm90b3R5cGUuZ2V0RGVyaXZlZFJlc291cmNlPWZ1bmN0aW9uKHQpe2xldCBlPXRoaXMuY2xvbmUoKTtpZihlLl9yZXRyeUNvdW50PTAsbSh0LnVybCkpe2xldCBuPXQucHJlc2VydmVRdWVyeVBhcmFtZXRlcnM/PyExO2UucGFyc2VVcmwodC51cmwsITAsbix0aGlzLl91cmwpfXJldHVybiBtKHQucXVlcnlQYXJhbWV0ZXJzKSYmKGUuX3F1ZXJ5UGFyYW1ldGVycz15cih0LnF1ZXJ5UGFyYW1ldGVycyxlLnF1ZXJ5UGFyYW1ldGVycykpLG0odC50ZW1wbGF0ZVZhbHVlcykmJihlLl90ZW1wbGF0ZVZhbHVlcz15cih0LnRlbXBsYXRlVmFsdWVzLGUudGVtcGxhdGVWYWx1ZXMpKSxtKHQuaGVhZGVycykmJihlLmhlYWRlcnM9eXIodC5oZWFkZXJzLGUuaGVhZGVycykpLG0odC5wcm94eSkmJihlLnByb3h5PXQucHJveHkpLG0odC5yZXF1ZXN0KSYmKGUucmVxdWVzdD10LnJlcXVlc3QpLG0odC5yZXRyeUNhbGxiYWNrKSYmKGUucmV0cnlDYWxsYmFjaz10LnJldHJ5Q2FsbGJhY2spLG0odC5yZXRyeUF0dGVtcHRzKSYmKGUucmV0cnlBdHRlbXB0cz10LnJldHJ5QXR0ZW1wdHMpLGV9O1Z0LnByb3RvdHlwZS5yZXRyeU9uRXJyb3I9ZnVuY3Rpb24odCl7bGV0IGU9dGhpcy5yZXRyeUNhbGxiYWNrO2lmKHR5cGVvZiBlIT0iZnVuY3Rpb24ifHx0aGlzLl9yZXRyeUNvdW50Pj10aGlzLnJldHJ5QXR0ZW1wdHMpcmV0dXJuIFByb21pc2UucmVzb2x2ZSghMSk7bGV0IG49dGhpcztyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGUodGhpcyx0KSkudGhlbihmdW5jdGlvbihvKXtyZXR1cm4rK24uX3JldHJ5Q291bnQsb30pfTtWdC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCk/KHQuX3VybD10aGlzLl91cmwsdC5fcXVlcnlQYXJhbWV0ZXJzPSRjKHRoaXMuX3F1ZXJ5UGFyYW1ldGVycyksdC5fdGVtcGxhdGVWYWx1ZXM9JGModGhpcy5fdGVtcGxhdGVWYWx1ZXMpLHQuaGVhZGVycz0kYyh0aGlzLmhlYWRlcnMpLHQucHJveHk9dGhpcy5wcm94eSx0LnJldHJ5Q2FsbGJhY2s9dGhpcy5yZXRyeUNhbGxiYWNrLHQucmV0cnlBdHRlbXB0cz10aGlzLnJldHJ5QXR0ZW1wdHMsdC5fcmV0cnlDb3VudD0wLHQucmVxdWVzdD10aGlzLnJlcXVlc3QuY2xvbmUoKSx0KTpuZXcgVnQoe3VybDp0aGlzLl91cmwscXVlcnlQYXJhbWV0ZXJzOnRoaXMucXVlcnlQYXJhbWV0ZXJzLHRlbXBsYXRlVmFsdWVzOnRoaXMudGVtcGxhdGVWYWx1ZXMsaGVhZGVyczp0aGlzLmhlYWRlcnMscHJveHk6dGhpcy5wcm94eSxyZXRyeUNhbGxiYWNrOnRoaXMucmV0cnlDYWxsYmFjayxyZXRyeUF0dGVtcHRzOnRoaXMucmV0cnlBdHRlbXB0cyxyZXF1ZXN0OnRoaXMucmVxdWVzdC5jbG9uZSgpLHBhcnNlVXJsOiExLGNyZWRpdHM6bSh0aGlzLmNyZWRpdHMpP3RoaXMuY3JlZGl0cy5zbGljZSgpOnZvaWQgMH0pfTtWdC5wcm90b3R5cGUuZ2V0QmFzZVVyaT1mdW5jdGlvbih0KXtyZXR1cm4gZUEodGhpcy5nZXRVcmxDb21wb25lbnQodCksdCl9O1Z0LnByb3RvdHlwZS5hcHBlbmRGb3J3YXJkU2xhc2g9ZnVuY3Rpb24oKXt0aGlzLl91cmw9WDEodGhpcy5fdXJsKX07VnQucHJvdG90eXBlLmZldGNoQXJyYXlCdWZmZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mZXRjaCh7cmVzcG9uc2VUeXBlOiJhcnJheWJ1ZmZlciJ9KX07VnQuZmV0Y2hBcnJheUJ1ZmZlcj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFZ0KHQpLmZldGNoQXJyYXlCdWZmZXIoKX07VnQucHJvdG90eXBlLmZldGNoQmxvYj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmZldGNoKHtyZXNwb25zZVR5cGU6ImJsb2IifSl9O1Z0LmZldGNoQmxvYj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFZ0KHQpLmZldGNoQmxvYigpfTtWdC5wcm90b3R5cGUuZmV0Y2hJbWFnZT1mdW5jdGlvbih0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10LnByZWZlckltYWdlQml0bWFwPz8hMSxuPXQucHJlZmVyQmxvYj8/ITEsbz10LmZsaXBZPz8hMSxyPXQuc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uPz8hMTtpZihabSh0aGlzLnJlcXVlc3QpLCFEQXx8dGhpcy5pc0RhdGFVcml8fHRoaXMuaXNCbG9iVXJpfHwhdGhpcy5oYXNIZWFkZXJzJiYhbilyZXR1cm4gJG0oe3Jlc291cmNlOnRoaXMsZmxpcFk6byxza2lwQ29sb3JTcGFjZUNvbnZlcnNpb246cixwcmVmZXJJbWFnZUJpdG1hcDplfSk7bGV0IGk9dGhpcy5mZXRjaEJsb2IoKTtpZighbShpKSlyZXR1cm47bGV0IHMsZix1LGM7cmV0dXJuIFZ0LnN1cHBvcnRzSW1hZ2VCaXRtYXBPcHRpb25zKCkudGhlbihmdW5jdGlvbihsKXtyZXR1cm4gcz1sLGY9cyYmZSxpfSkudGhlbihmdW5jdGlvbihsKXtpZighbShsKSlyZXR1cm47aWYoYz1sLGYpcmV0dXJuIFZ0LmNyZWF0ZUltYWdlQml0bWFwRnJvbUJsb2IobCx7ZmxpcFk6byxwcmVtdWx0aXBseUFscGhhOiExLHNraXBDb2xvclNwYWNlQ29udmVyc2lvbjpyfSk7bGV0IHA9d2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobCk7cmV0dXJuIHU9bmV3IFZ0KHt1cmw6cH0pLCRtKHtyZXNvdXJjZTp1LGZsaXBZOm8sc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uOnIscHJlZmVySW1hZ2VCaXRtYXA6ITF9KX0pLnRoZW4oZnVuY3Rpb24obCl7aWYobShsKSlyZXR1cm4gbC5ibG9iPWMsZnx8d2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodS51cmwpLGx9KS5jYXRjaChmdW5jdGlvbihsKXtyZXR1cm4gbSh1KSYmd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodS51cmwpLGwuYmxvYj1jLFByb21pc2UucmVqZWN0KGwpfSl9O1Z0LmZldGNoSW1hZ2U9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBWdCh0KS5mZXRjaEltYWdlKHtmbGlwWTp0LmZsaXBZLHNraXBDb2xvclNwYWNlQ29udmVyc2lvbjp0LnNraXBDb2xvclNwYWNlQ29udmVyc2lvbixwcmVmZXJCbG9iOnQucHJlZmVyQmxvYixwcmVmZXJJbWFnZUJpdG1hcDp0LnByZWZlckltYWdlQml0bWFwfSl9O1Z0LnByb3RvdHlwZS5mZXRjaFRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mZXRjaCh7cmVzcG9uc2VUeXBlOiJ0ZXh0In0pfTtWdC5mZXRjaFRleHQ9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBWdCh0KS5mZXRjaFRleHQoKX07VnQucHJvdG90eXBlLmZldGNoSnNvbj1mdW5jdGlvbigpe2xldCB0PXRoaXMuZmV0Y2goe3Jlc3BvbnNlVHlwZToidGV4dCIsaGVhZGVyczp7QWNjZXB0OiJhcHBsaWNhdGlvbi9qc29uLCovKjtxPTAuMDEifX0pO2lmKG0odCkpcmV0dXJuIHQudGhlbihmdW5jdGlvbihlKXtpZihtKGUpKXJldHVybiBKU09OLnBhcnNlKGUpfSl9O1Z0LmZldGNoSnNvbj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFZ0KHQpLmZldGNoSnNvbigpfTtWdC5wcm90b3R5cGUuZmV0Y2hYTUw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mZXRjaCh7cmVzcG9uc2VUeXBlOiJkb2N1bWVudCIsb3ZlcnJpZGVNaW1lVHlwZToidGV4dC94bWwifSl9O1Z0LmZldGNoWE1MPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgVnQodCkuZmV0Y2hYTUwoKX07VnQucHJvdG90eXBlLmZldGNoSnNvbnA9ZnVuY3Rpb24odCl7dD10Pz8iY2FsbGJhY2siLFptKHRoaXMucmVxdWVzdCk7bGV0IGU7ZG8gZT1gbG9hZEpzb25wJHtQLm5leHRSYW5kb21OdW1iZXIoKS50b1N0cmluZygpLnN1YnN0cmluZygyLDgpfWA7d2hpbGUobSh3aW5kb3dbZV0pKTtyZXR1cm4gQkEodGhpcyx0LGUpfTtWdC5mZXRjaEpzb25wPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgVnQodCkuZmV0Y2hKc29ucCh0LmNhbGxiYWNrUGFyYW1ldGVyTmFtZSl9O1Z0LnByb3RvdHlwZS5fbWFrZVJlcXVlc3Q9ZnVuY3Rpb24odCl7bGV0IGU9dGhpcztabShlLnJlcXVlc3QpO2xldCBuPWUucmVxdWVzdCxvPWUudXJsO24udXJsPW8sbi5yZXF1ZXN0RnVuY3Rpb249ZnVuY3Rpb24oKXtsZXQgaT10LnJlc3BvbnNlVHlwZSxzPXlyKHQuaGVhZGVycyxlLmhlYWRlcnMpLGY9dC5vdmVycmlkZU1pbWVUeXBlLHU9dC5tZXRob2QsYz10LmRhdGEsbD1IcygpLHA9VnQuX0ltcGxlbWVudGF0aW9ucy5sb2FkV2l0aFhocihvLGksdSxjLHMsbCxmKTtyZXR1cm4gbShwKSYmbShwLmFib3J0KSYmKG4uY2FuY2VsRnVuY3Rpb249ZnVuY3Rpb24oKXtwLmFib3J0KCl9KSxsLnByb21pc2V9O2xldCByPW1wLnJlcXVlc3Qobik7aWYobShyKSlyZXR1cm4gci50aGVuKGZ1bmN0aW9uKGkpe3JldHVybiBuLmNhbmNlbEZ1bmN0aW9uPXZvaWQgMCxpfSkuY2F0Y2goZnVuY3Rpb24oaSl7cmV0dXJuIG4uY2FuY2VsRnVuY3Rpb249dm9pZCAwLG4uc3RhdGUhPT14bi5GQUlMRUQ/UHJvbWlzZS5yZWplY3QoaSk6ZS5yZXRyeU9uRXJyb3IoaSkudGhlbihmdW5jdGlvbihzKXtyZXR1cm4gcz8obi5zdGF0ZT14bi5VTklTU1VFRCxuLmRlZmVycmVkPXZvaWQgMCxlLmZldGNoKHQpKTpQcm9taXNlLnJlamVjdChpKX0pfSl9O3FDPS9eZGF0YTooLio/KSg7YmFzZTY0KT8sKC4qKSQvO1Z0LnByb3RvdHlwZS5mZXRjaD1mdW5jdGlvbih0KXtyZXR1cm4gdD1vaSh0LHt9KSx0Lm1ldGhvZD0iR0VUIix0aGlzLl9tYWtlUmVxdWVzdCh0KX07VnQuZmV0Y2g9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBWdCh0KS5mZXRjaCh7cmVzcG9uc2VUeXBlOnQucmVzcG9uc2VUeXBlLG92ZXJyaWRlTWltZVR5cGU6dC5vdmVycmlkZU1pbWVUeXBlfSl9O1Z0LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9b2kodCx7fSksdC5tZXRob2Q9IkRFTEVURSIsdGhpcy5fbWFrZVJlcXVlc3QodCl9O1Z0LmRlbGV0ZT1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFZ0KHQpLmRlbGV0ZSh7cmVzcG9uc2VUeXBlOnQucmVzcG9uc2VUeXBlLG92ZXJyaWRlTWltZVR5cGU6dC5vdmVycmlkZU1pbWVUeXBlLGRhdGE6dC5kYXRhfSl9O1Z0LnByb3RvdHlwZS5oZWFkPWZ1bmN0aW9uKHQpe3JldHVybiB0PW9pKHQse30pLHQubWV0aG9kPSJIRUFEIix0aGlzLl9tYWtlUmVxdWVzdCh0KX07VnQuaGVhZD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFZ0KHQpLmhlYWQoe3Jlc3BvbnNlVHlwZTp0LnJlc3BvbnNlVHlwZSxvdmVycmlkZU1pbWVUeXBlOnQub3ZlcnJpZGVNaW1lVHlwZX0pfTtWdC5wcm90b3R5cGUub3B0aW9ucz1mdW5jdGlvbih0KXtyZXR1cm4gdD1vaSh0LHt9KSx0Lm1ldGhvZD0iT1BUSU9OUyIsdGhpcy5fbWFrZVJlcXVlc3QodCl9O1Z0Lm9wdGlvbnM9ZnVuY3Rpb24odCl7cmV0dXJuIG5ldyBWdCh0KS5vcHRpb25zKHtyZXNwb25zZVR5cGU6dC5yZXNwb25zZVR5cGUsb3ZlcnJpZGVNaW1lVHlwZTp0Lm92ZXJyaWRlTWltZVR5cGV9KX07VnQucHJvdG90eXBlLnBvc3Q9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS5kZWZpbmVkKCJkYXRhIix0KSxlPW9pKGUse30pLGUubWV0aG9kPSJQT1NUIixlLmRhdGE9dCx0aGlzLl9tYWtlUmVxdWVzdChlKX07VnQucG9zdD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFZ0KHQpLnBvc3QodC5kYXRhLHtyZXNwb25zZVR5cGU6dC5yZXNwb25zZVR5cGUsb3ZlcnJpZGVNaW1lVHlwZTp0Lm92ZXJyaWRlTWltZVR5cGV9KX07VnQucHJvdG90eXBlLnB1dD1mdW5jdGlvbih0LGUpe3JldHVybiB5LmRlZmluZWQoImRhdGEiLHQpLGU9b2koZSx7fSksZS5tZXRob2Q9IlBVVCIsZS5kYXRhPXQsdGhpcy5fbWFrZVJlcXVlc3QoZSl9O1Z0LnB1dD1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IFZ0KHQpLnB1dCh0LmRhdGEse3Jlc3BvbnNlVHlwZTp0LnJlc3BvbnNlVHlwZSxvdmVycmlkZU1pbWVUeXBlOnQub3ZlcnJpZGVNaW1lVHlwZX0pfTtWdC5wcm90b3R5cGUucGF0Y2g9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS5kZWZpbmVkKCJkYXRhIix0KSxlPW9pKGUse30pLGUubWV0aG9kPSJQQVRDSCIsZS5kYXRhPXQsdGhpcy5fbWFrZVJlcXVlc3QoZSl9O1Z0LnBhdGNoPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgVnQodCkucGF0Y2godC5kYXRhLHtyZXNwb25zZVR5cGU6dC5yZXNwb25zZVR5cGUsb3ZlcnJpZGVNaW1lVHlwZTp0Lm92ZXJyaWRlTWltZVR5cGV9KX07VnQuX0ltcGxlbWVudGF0aW9ucz17fTtWdC5fSW1wbGVtZW50YXRpb25zLmxvYWRJbWFnZUVsZW1lbnQ9ZnVuY3Rpb24odCxlLG4pe2xldCBvPW5ldyBJbWFnZTtvLm9ubG9hZD1mdW5jdGlvbigpe28ubmF0dXJhbFdpZHRoPT09MCYmby5uYXR1cmFsSGVpZ2h0PT09MCYmby53aWR0aD09PTAmJm8uaGVpZ2h0PT09MCYmKG8ud2lkdGg9MzAwLG8uaGVpZ2h0PTE1MCksbi5yZXNvbHZlKG8pfSxvLm9uZXJyb3I9ZnVuY3Rpb24ocil7bi5yZWplY3Qocil9LGUmJihZbS5jb250YWlucyh0KT9vLmNyb3NzT3JpZ2luPSJ1c2UtY3JlZGVudGlhbHMiOm8uY3Jvc3NPcmlnaW49IiIpLG8uc3JjPXR9O1Z0Ll9JbXBsZW1lbnRhdGlvbnMuY3JlYXRlSW1hZ2U9ZnVuY3Rpb24odCxlLG4sbyxyLGkpe2xldCBzPXQudXJsO1Z0LnN1cHBvcnRzSW1hZ2VCaXRtYXBPcHRpb25zKCkudGhlbihmdW5jdGlvbihmKXtpZighKGYmJmkpKXtWdC5fSW1wbGVtZW50YXRpb25zLmxvYWRJbWFnZUVsZW1lbnQocyxlLG4pO3JldHVybn1sZXQgdT0iYmxvYiIsYz0iR0VUIixsPUhzKCkscD1WdC5fSW1wbGVtZW50YXRpb25zLmxvYWRXaXRoWGhyKHMsdSxjLHZvaWQgMCx2b2lkIDAsbCx2b2lkIDAsdm9pZCAwLHZvaWQgMCk7cmV0dXJuIG0ocCkmJm0ocC5hYm9ydCkmJih0LmNhbmNlbEZ1bmN0aW9uPWZ1bmN0aW9uKCl7cC5hYm9ydCgpfSksbC5wcm9taXNlLnRoZW4oZnVuY3Rpb24oZCl7aWYoIW0oZCkpe24ucmVqZWN0KG5ldyBBZShgU3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCAke3N9IGJ1dCBpdCBjb250YWluZWQgbm8gY29udGVudC5gKSk7cmV0dXJufXJldHVybiBWdC5jcmVhdGVJbWFnZUJpdG1hcEZyb21CbG9iKGQse2ZsaXBZOm8scHJlbXVsdGlwbHlBbHBoYTohMSxza2lwQ29sb3JTcGFjZUNvbnZlcnNpb246cn0pfSkudGhlbihmdW5jdGlvbihkKXtuLnJlc29sdmUoZCl9KX0pLmNhdGNoKGZ1bmN0aW9uKGYpe24ucmVqZWN0KGYpfSl9O1Z0LmNyZWF0ZUltYWdlQml0bWFwRnJvbUJsb2I9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS5kZWZpbmVkKCJvcHRpb25zIixlKSx5LnR5cGVPZi5ib29sKCJvcHRpb25zLmZsaXBZIixlLmZsaXBZKSx5LnR5cGVPZi5ib29sKCJvcHRpb25zLnByZW11bHRpcGx5QWxwaGEiLGUucHJlbXVsdGlwbHlBbHBoYSkseS50eXBlT2YuYm9vbCgib3B0aW9ucy5za2lwQ29sb3JTcGFjZUNvbnZlcnNpb24iLGUuc2tpcENvbG9yU3BhY2VDb252ZXJzaW9uKSxjcmVhdGVJbWFnZUJpdG1hcCh0LHtpbWFnZU9yaWVudGF0aW9uOmUuZmxpcFk/ImZsaXBZIjoiZnJvbS1pbWFnZSIscHJlbXVsdGlwbHlBbHBoYTplLnByZW11bHRpcGx5QWxwaGE/InByZW11bHRpcGx5Ijoibm9uZSIsY29sb3JTcGFjZUNvbnZlcnNpb246ZS5za2lwQ29sb3JTcGFjZUNvbnZlcnNpb24/Im5vbmUiOiJkZWZhdWx0In0pfTtYQz10eXBlb2YgWE1MSHR0cFJlcXVlc3Q+InUiO1Z0Ll9JbXBsZW1lbnRhdGlvbnMubG9hZFdpdGhYaHI9ZnVuY3Rpb24odCxlLG4sbyxyLGkscyl7bGV0IGY9cUMuZXhlYyh0KTtpZihmIT09bnVsbCl7aS5yZXNvbHZlKEtDKGYsZSkpO3JldHVybn1pZihYQyl7V0ModCxlLG4sbyxyLGkscyk7cmV0dXJufWxldCB1PW5ldyBYTUxIdHRwUmVxdWVzdDtpZihZbS5jb250YWlucyh0KSYmKHUud2l0aENyZWRlbnRpYWxzPSEwKSx1Lm9wZW4obix0LCEwKSxtKHMpJiZtKHUub3ZlcnJpZGVNaW1lVHlwZSkmJnUub3ZlcnJpZGVNaW1lVHlwZShzKSxtKHIpKWZvcihsZXQgbCBpbiByKXIuaGFzT3duUHJvcGVydHkobCkmJnUuc2V0UmVxdWVzdEhlYWRlcihsLHJbbF0pO20oZSkmJih1LnJlc3BvbnNlVHlwZT1lKTtsZXQgYz0hMTtyZXR1cm4gdHlwZW9mIHQ9PSJzdHJpbmciJiYoYz10LmluZGV4T2YoImZpbGU6Ly8iKT09PTB8fHR5cGVvZiB3aW5kb3c8InUiJiZ3aW5kb3cubG9jYXRpb24ub3JpZ2luPT09ImZpbGU6Ly8iKSx1Lm9ubG9hZD1mdW5jdGlvbigpe2lmKCh1LnN0YXR1czwyMDB8fHUuc3RhdHVzPj0zMDApJiYhKGMmJnUuc3RhdHVzPT09MCkpe2kucmVqZWN0KG5ldyBsZih1LnN0YXR1cyx1LnJlc3BvbnNlLHUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpKTtyZXR1cm59bGV0IGw9dS5yZXNwb25zZSxwPXUucmVzcG9uc2VUeXBlO2lmKG49PT0iSEVBRCJ8fG49PT0iT1BUSU9OUyIpe2xldCBoPXUuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkudHJpbSgpLnNwbGl0KC9bXHJcbl0rLyksXz17fTtoLmZvckVhY2goZnVuY3Rpb24oZyl7bGV0IGI9Zy5zcGxpdCgiOiAiKSx3PWIuc2hpZnQoKTtfW3ddPWIuam9pbigiOiAiKX0pLGkucmVzb2x2ZShfKTtyZXR1cm59aWYodS5zdGF0dXM9PT0yMDQpaS5yZXNvbHZlKHZvaWQgMCk7ZWxzZSBpZihtKGwpJiYoIW0oZSl8fHA9PT1lKSlpLnJlc29sdmUobCk7ZWxzZSBpZihlPT09Impzb24iJiZ0eXBlb2YgbD09InN0cmluZyIpdHJ5e2kucmVzb2x2ZShKU09OLnBhcnNlKGwpKX1jYXRjaChkKXtpLnJlamVjdChkKX1lbHNlKHA9PT0iInx8cD09PSJkb2N1bWVudCIpJiZtKHUucmVzcG9uc2VYTUwpJiZ1LnJlc3BvbnNlWE1MLmhhc0NoaWxkTm9kZXMoKT9pLnJlc29sdmUodS5yZXNwb25zZVhNTCk6KHA9PT0iInx8cD09PSJ0ZXh0IikmJm0odS5yZXNwb25zZVRleHQpP2kucmVzb2x2ZSh1LnJlc3BvbnNlVGV4dCk6aS5yZWplY3QobmV3IEFlKCJJbnZhbGlkIFhNTEh0dHBSZXF1ZXN0IHJlc3BvbnNlIHR5cGUuIikpfSx1Lm9uZXJyb3I9ZnVuY3Rpb24obCl7aS5yZWplY3QobmV3IGxmKX0sdS5zZW5kKG8pLHV9O1Z0Ll9JbXBsZW1lbnRhdGlvbnMubG9hZEFuZEV4ZWN1dGVTY3JpcHQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB1QSh0LGUpLmNhdGNoKGZ1bmN0aW9uKG8pe24ucmVqZWN0KG8pfSl9O1Z0Ll9EZWZhdWx0SW1wbGVtZW50YXRpb25zPXt9O1Z0Ll9EZWZhdWx0SW1wbGVtZW50YXRpb25zLmNyZWF0ZUltYWdlPVZ0Ll9JbXBsZW1lbnRhdGlvbnMuY3JlYXRlSW1hZ2U7VnQuX0RlZmF1bHRJbXBsZW1lbnRhdGlvbnMubG9hZFdpdGhYaHI9VnQuX0ltcGxlbWVudGF0aW9ucy5sb2FkV2l0aFhocjtWdC5fRGVmYXVsdEltcGxlbWVudGF0aW9ucy5sb2FkQW5kRXhlY3V0ZVNjcmlwdD1WdC5fSW1wbGVtZW50YXRpb25zLmxvYWRBbmRFeGVjdXRlU2NyaXB0O1Z0LkRFRkFVTFQ9T2JqZWN0LmZyZWV6ZShuZXcgVnQoe3VybDp0eXBlb2YgZG9jdW1lbnQ+InUiPyIiOmRvY3VtZW50LmxvY2F0aW9uLmhyZWYuc3BsaXQoIj8iKVswXX0pKTtyaT1WdH0pO2Z1bmN0aW9uIF9mKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNULHRoaXMuX2RhdGVzPXZvaWQgMCx0aGlzLl9zYW1wbGVzPXZvaWQgMCx0aGlzLl9kYXRlQ29sdW1uPS0xLHRoaXMuX3hQb2xlV2FuZGVyUmFkaWFuc0NvbHVtbj0tMSx0aGlzLl95UG9sZVdhbmRlclJhZGlhbnNDb2x1bW49LTEsdGhpcy5fdXQxTWludXNVdGNTZWNvbmRzQ29sdW1uPS0xLHRoaXMuX3hDZWxlc3RpYWxQb2xlT2Zmc2V0UmFkaWFuc0NvbHVtbj0tMSx0aGlzLl95Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnNDb2x1bW49LTEsdGhpcy5fdGFpTWludXNVdGNTZWNvbmRzQ29sdW1uPS0xLHRoaXMuX2NvbHVtbkNvdW50PTAsdGhpcy5fbGFzdEluZGV4PS0xLHRoaXMuX2FkZE5ld0xlYXBTZWNvbmRzPXQuYWRkTmV3TGVhcFNlY29uZHM/PyEwLG0odC5kYXRhKT9VQSh0aGlzLHQuZGF0YSk6VUEodGhpcyx7Y29sdW1uTmFtZXM6WyJkYXRlSXNvODYwMSIsIm1vZGlmaWVkSnVsaWFuRGF0ZVV0YyIsInhQb2xlV2FuZGVyUmFkaWFucyIsInlQb2xlV2FuZGVyUmFkaWFucyIsInV0MU1pbnVzVXRjU2Vjb25kcyIsImxlbmd0aE9mRGF5Q29ycmVjdGlvblNlY29uZHMiLCJ4Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnMiLCJ5Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnMiLCJ0YWlNaW51c1V0Y1NlY29uZHMiXSxzYW1wbGVzOltdfSl9ZnVuY3Rpb24gWUModCxlKXtyZXR1cm4gVm4uY29tcGFyZSh0Lmp1bGlhbkRhdGUsZSl9ZnVuY3Rpb24gVUEodCxlKXtpZighbShlLmNvbHVtbk5hbWVzKSl0aHJvdyBuZXcgQWUoIkVycm9yIGluIGxvYWRlZCBFT1AgZGF0YTogVGhlIGNvbHVtbk5hbWVzIHByb3BlcnR5IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUuc2FtcGxlcykpdGhyb3cgbmV3IEFlKCJFcnJvciBpbiBsb2FkZWQgRU9QIGRhdGE6IFRoZSBzYW1wbGVzIHByb3BlcnR5IGlzIHJlcXVpcmVkLiIpO2xldCBuPWUuY29sdW1uTmFtZXMuaW5kZXhPZigibW9kaWZpZWRKdWxpYW5EYXRlVXRjIiksbz1lLmNvbHVtbk5hbWVzLmluZGV4T2YoInhQb2xlV2FuZGVyUmFkaWFucyIpLHI9ZS5jb2x1bW5OYW1lcy5pbmRleE9mKCJ5UG9sZVdhbmRlclJhZGlhbnMiKSxpPWUuY29sdW1uTmFtZXMuaW5kZXhPZigidXQxTWludXNVdGNTZWNvbmRzIikscz1lLmNvbHVtbk5hbWVzLmluZGV4T2YoInhDZWxlc3RpYWxQb2xlT2Zmc2V0UmFkaWFucyIpLGY9ZS5jb2x1bW5OYW1lcy5pbmRleE9mKCJ5Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnMiKSx1PWUuY29sdW1uTmFtZXMuaW5kZXhPZigidGFpTWludXNVdGNTZWNvbmRzIik7aWYobjwwfHxvPDB8fHI8MHx8aTwwfHxzPDB8fGY8MHx8dTwwKXRocm93IG5ldyBBZSgiRXJyb3IgaW4gbG9hZGVkIEVPUCBkYXRhOiBUaGUgY29sdW1uTmFtZXMgcHJvcGVydHkgbXVzdCBpbmNsdWRlIG1vZGlmaWVkSnVsaWFuRGF0ZVV0YywgeFBvbGVXYW5kZXJSYWRpYW5zLCB5UG9sZVdhbmRlclJhZGlhbnMsIHV0MU1pbnVzVXRjU2Vjb25kcywgeENlbGVzdGlhbFBvbGVPZmZzZXRSYWRpYW5zLCB5Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnMsIGFuZCB0YWlNaW51c1V0Y1NlY29uZHMgY29sdW1ucyIpO2xldCBjPXQuX3NhbXBsZXM9ZS5zYW1wbGVzLGw9dC5fZGF0ZXM9W107dC5fZGF0ZUNvbHVtbj1uLHQuX3hQb2xlV2FuZGVyUmFkaWFuc0NvbHVtbj1vLHQuX3lQb2xlV2FuZGVyUmFkaWFuc0NvbHVtbj1yLHQuX3V0MU1pbnVzVXRjU2Vjb25kc0NvbHVtbj1pLHQuX3hDZWxlc3RpYWxQb2xlT2Zmc2V0UmFkaWFuc0NvbHVtbj1zLHQuX3lDZWxlc3RpYWxQb2xlT2Zmc2V0UmFkaWFuc0NvbHVtbj1mLHQuX3RhaU1pbnVzVXRjU2Vjb25kc0NvbHVtbj11LHQuX2NvbHVtbkNvdW50PWUuY29sdW1uTmFtZXMubGVuZ3RoLHQuX2xhc3RJbmRleD12b2lkIDA7bGV0IHAsZD10Ll9hZGROZXdMZWFwU2Vjb25kcztmb3IobGV0IGg9MCxfPWMubGVuZ3RoO2g8XztoKz10Ll9jb2x1bW5Db3VudCl7bGV0IGc9Y1toK25dLGI9Y1toK3VdLHc9Zyt5bi5NT0RJRklFRF9KVUxJQU5fREFURV9ESUZGRVJFTkNFLE89bmV3IFZuKHcsYixPZS5UQUkpO2lmKGwucHVzaChPKSxkKXtpZihiIT09cCYmbShwKSl7bGV0IEU9Vm4ubGVhcFNlY29uZHMsVD16cyhFLE8sWUMpO2lmKFQ8MCl7bGV0IHg9bmV3IFhlKE8sYik7RS5zcGxpY2UoflQsMCx4KX19cD1ifX19ZnVuY3Rpb24ga0EodCxlLG4sbyxyKXtsZXQgaT1uKm87ci54UG9sZVdhbmRlcj1lW2krdC5feFBvbGVXYW5kZXJSYWRpYW5zQ29sdW1uXSxyLnlQb2xlV2FuZGVyPWVbaSt0Ll95UG9sZVdhbmRlclJhZGlhbnNDb2x1bW5dLHIueFBvbGVPZmZzZXQ9ZVtpK3QuX3hDZWxlc3RpYWxQb2xlT2Zmc2V0UmFkaWFuc0NvbHVtbl0sci55UG9sZU9mZnNldD1lW2krdC5feUNlbGVzdGlhbFBvbGVPZmZzZXRSYWRpYW5zQ29sdW1uXSxyLnV0MU1pbnVzVXRjPWVbaSt0Ll91dDFNaW51c1V0Y1NlY29uZHNDb2x1bW5dfWZ1bmN0aW9uIGhmKHQsZSxuKXtyZXR1cm4gZSt0KihuLWUpfWZ1bmN0aW9uIEdBKHQsZSxuLG8scixpLHMpe2xldCBmPXQuX2NvbHVtbkNvdW50O2lmKGk+ZS5sZW5ndGgtMSlyZXR1cm4gcy54UG9sZVdhbmRlcj0wLHMueVBvbGVXYW5kZXI9MCxzLnhQb2xlT2Zmc2V0PTAscy55UG9sZU9mZnNldD0wLHMudXQxTWludXNVdGM9MCxzO2xldCB1PWVbcl0sYz1lW2ldO2lmKHUuZXF1YWxzKGMpfHxvLmVxdWFscyh1KSlyZXR1cm4ga0EodCxuLHIsZixzKSxzO2lmKG8uZXF1YWxzKGMpKXJldHVybiBrQSh0LG4saSxmLHMpLHM7bGV0IGw9Vm4uc2Vjb25kc0RpZmZlcmVuY2Uobyx1KS9Wbi5zZWNvbmRzRGlmZmVyZW5jZShjLHUpLHA9cipmLGQ9aSpmLGg9bltwK3QuX3V0MU1pbnVzVXRjU2Vjb25kc0NvbHVtbl0sXz1uW2QrdC5fdXQxTWludXNVdGNTZWNvbmRzQ29sdW1uXSxnPV8taDtpZihnPi41fHxnPC0uNSl7bGV0IGI9bltwK3QuX3RhaU1pbnVzVXRjU2Vjb25kc0NvbHVtbl0sdz1uW2QrdC5fdGFpTWludXNVdGNTZWNvbmRzQ29sdW1uXTtiIT09dyYmKGMuZXF1YWxzKG8pP2g9XzpfLT13LWIpfXJldHVybiBzLnhQb2xlV2FuZGVyPWhmKGwsbltwK3QuX3hQb2xlV2FuZGVyUmFkaWFuc0NvbHVtbl0sbltkK3QuX3hQb2xlV2FuZGVyUmFkaWFuc0NvbHVtbl0pLHMueVBvbGVXYW5kZXI9aGYobCxuW3ArdC5feVBvbGVXYW5kZXJSYWRpYW5zQ29sdW1uXSxuW2QrdC5feVBvbGVXYW5kZXJSYWRpYW5zQ29sdW1uXSkscy54UG9sZU9mZnNldD1oZihsLG5bcCt0Ll94Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnNDb2x1bW5dLG5bZCt0Ll94Q2VsZXN0aWFsUG9sZU9mZnNldFJhZGlhbnNDb2x1bW5dKSxzLnlQb2xlT2Zmc2V0PWhmKGwsbltwK3QuX3lDZWxlc3RpYWxQb2xlT2Zmc2V0UmFkaWFuc0NvbHVtbl0sbltkK3QuX3lDZWxlc3RpYWxQb2xlT2Zmc2V0UmFkaWFuc0NvbHVtbl0pLHMudXQxTWludXNVdGM9aGYobCxoLF8pLHN9dmFyIFZBLHpBPSQoKCk9PntMbSgpO1d0KCk7eWUoKTtmdCgpO0RtKCk7b3AoKTtVbSgpO21mKCk7dGkoKTtabCgpO1FsKCk7X2YuZnJvbVVybD1hc3luYyBmdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgidXJsIix0KSxlPWU/P0l0LkVNUFRZX09CSkVDVDtsZXQgbj1yaS5jcmVhdGVJZk5lZWRlZCh0KSxvO3RyeXtvPWF3YWl0IG4uZmV0Y2hKc29uKCl9Y2F0Y2h7dGhyb3cgbmV3IEFlKGBBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSByZXRyaWV2aW5nIHRoZSBFT1AgZGF0YSBmcm9tIHRoZSBVUkwgJHtuLnVybH0uYCl9cmV0dXJuIG5ldyBfZih7YWRkTmV3TGVhcFNlY29uZHM6ZS5hZGROZXdMZWFwU2Vjb25kcyxkYXRhOm99KX07X2YuTk9ORT1PYmplY3QuZnJlZXplKHtjb21wdXRlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG0oZSk/KGUueFBvbGVXYW5kZXI9MCxlLnlQb2xlV2FuZGVyPTAsZS54UG9sZU9mZnNldD0wLGUueVBvbGVPZmZzZXQ9MCxlLnV0MU1pbnVzVXRjPTApOmU9bmV3IGFmKDAsMCwwLDAsMCksZX19KTtfZi5wcm90b3R5cGUuY29tcHV0ZT1mdW5jdGlvbih0LGUpe2lmKCFtKHRoaXMuX3NhbXBsZXMpKXJldHVybjtpZihtKGUpfHwoZT1uZXcgYWYoMCwwLDAsMCwwKSksdGhpcy5fc2FtcGxlcy5sZW5ndGg9PT0wKXJldHVybiBlLnhQb2xlV2FuZGVyPTAsZS55UG9sZVdhbmRlcj0wLGUueFBvbGVPZmZzZXQ9MCxlLnlQb2xlT2Zmc2V0PTAsZS51dDFNaW51c1V0Yz0wLGU7bGV0IG49dGhpcy5fZGF0ZXMsbz10aGlzLl9sYXN0SW5kZXgscj0wLGk9MDtpZihtKG8pKXtsZXQgZj1uW29dLHU9bltvKzFdLGM9Vm4ubGVzc1RoYW5PckVxdWFscyhmLHQpLGw9IW0odSkscD1sfHxWbi5ncmVhdGVyVGhhbk9yRXF1YWxzKHUsdCk7aWYoYyYmcClyZXR1cm4gcj1vLCFsJiZ1LmVxdWFscyh0KSYmKytyLGk9cisxLEdBKHRoaXMsbix0aGlzLl9zYW1wbGVzLHQscixpLGUpLGV9bGV0IHM9enMobix0LFZuLmNvbXBhcmUsdGhpcy5fZGF0ZUNvbHVtbik7cmV0dXJuIHM+PTA/KHM8bi5sZW5ndGgtMSYmbltzKzFdLmVxdWFscyh0KSYmKytzLHI9cyxpPXMpOihpPX5zLHI9aS0xLHI8MCYmKHI9MCkpLHRoaXMuX2xhc3RJbmRleD1yLEdBKHRoaXMsbix0aGlzLl9zYW1wbGVzLHQscixpLGUpLGV9O1ZBPV9mfSk7ZnVuY3Rpb24gRW8odCxlLG4pe3RoaXMuaGVhZGluZz10Pz8wLHRoaXMucGl0Y2g9ZT8/MCx0aGlzLnJvbGw9bj8/MH12YXIgeXAsakE9JCgoKT0+e2Z0KCk7SHQoKTtLdCgpO0VvLmZyb21RdWF0ZXJuaW9uPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoInF1YXRlcm5pb24gaXMgcmVxdWlyZWQiKTttKGUpfHwoZT1uZXcgRW8pO2xldCBuPTIqKHQudyp0LnktdC56KnQueCksbz0xLTIqKHQueCp0LngrdC55KnQueSkscj0yKih0LncqdC54K3QueSp0LnopLGk9MS0yKih0LnkqdC55K3Queip0LnopLHM9MioodC53KnQueit0LngqdC55KTtyZXR1cm4gZS5oZWFkaW5nPS1NYXRoLmF0YW4yKHMsaSksZS5yb2xsPU1hdGguYXRhbjIocixvKSxlLnBpdGNoPS1QLmFzaW5DbGFtcGVkKG4pLGV9O0VvLmZyb21EZWdyZWVzPWZ1bmN0aW9uKHQsZSxuLG8pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJoZWFkaW5nIGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoInBpdGNoIGlzIHJlcXVpcmVkIik7aWYoIW0obikpdGhyb3cgbmV3IEQoInJvbGwgaXMgcmVxdWlyZWQiKTtyZXR1cm4gbShvKXx8KG89bmV3IEVvKSxvLmhlYWRpbmc9dCpQLlJBRElBTlNfUEVSX0RFR1JFRSxvLnBpdGNoPWUqUC5SQURJQU5TX1BFUl9ERUdSRUUsby5yb2xsPW4qUC5SQURJQU5TX1BFUl9ERUdSRUUsb307RW8uY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLmhlYWRpbmc9dC5oZWFkaW5nLGUucGl0Y2g9dC5waXRjaCxlLnJvbGw9dC5yb2xsLGUpOm5ldyBFbyh0LmhlYWRpbmcsdC5waXRjaCx0LnJvbGwpfTtFby5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJnQuaGVhZGluZz09PWUuaGVhZGluZyYmdC5waXRjaD09PWUucGl0Y2gmJnQucm9sbD09PWUucm9sbH07RW8uZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbixvKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJlAuZXF1YWxzRXBzaWxvbih0LmhlYWRpbmcsZS5oZWFkaW5nLG4sbykmJlAuZXF1YWxzRXBzaWxvbih0LnBpdGNoLGUucGl0Y2gsbixvKSYmUC5lcXVhbHNFcHNpbG9uKHQucm9sbCxlLnJvbGwsbixvKX07RW8ucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBFby5jbG9uZSh0aGlzLHQpfTtFby5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBFby5lcXVhbHModGhpcyx0KX07RW8ucHJvdG90eXBlLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLG4pe3JldHVybiBFby5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlLG4pfTtFby5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5gKCR7dGhpcy5oZWFkaW5nfSwgJHt0aGlzLnBpdGNofSwgJHt0aGlzLnJvbGx9KWB9O3lwPUVvfSk7ZnVuY3Rpb24gJEMoKXtsZXQgdD1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0Iik7Zm9yKGxldCBlPTAsbj10Lmxlbmd0aDtlPG47KytlKXtsZXQgbz10W2VdLmdldEF0dHJpYnV0ZSgic3JjIikscj1xQS5leGVjKG8pO2lmKHIhPT1udWxsKXJldHVybiByWzFdfX1mdW5jdGlvbiBLQSh0KXtyZXR1cm4gdHlwZW9mIGRvY3VtZW50PiJ1Ij90OihtKGdwKXx8KGdwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKSksZ3AuaHJlZj10LGdwLmhyZWYpfWZ1bmN0aW9uIFdBKCl7aWYobShXcykpcmV0dXJuIFdzO2xldCB0O2lmKHR5cGVvZiBDRVNJVU1fQkFTRV9VUkw8InUiP3Q9Q0VTSVVNX0JBU0VfVVJMOm0oSEE/LnVybCk/dD11ZigiLiIsSEEudXJsKTp0eXBlb2YgZGVmaW5lPT0ib2JqZWN0IiYmbShkZWZpbmUuYW1kKSYmIWRlZmluZS5hbWQudG9VcmxVbmRlZmluZWQmJm0oZHIudG9VcmwpP3Q9dWYoIi4uIixYcygiQ29yZS9idWlsZE1vZHVsZVVybC5qcyIpKTp0PSRDKCksIW0odCkpdGhyb3cgbmV3IEQoIlVuYWJsZSB0byBkZXRlcm1pbmUgQ2VzaXVtIGJhc2UgVVJMIGF1dG9tYXRpY2FsbHksIHRyeSBkZWZpbmluZyBhIGdsb2JhbCB2YXJpYWJsZSBjYWxsZWQgQ0VTSVVNX0JBU0VfVVJMLiIpO3JldHVybiBXcz1uZXcgcmkoe3VybDpLQSh0KX0pLFdzLmFwcGVuZEZvcndhcmRTbGFzaCgpLFdzfWZ1bmN0aW9uIFpDKHQpe3JldHVybiBLQShkci50b1VybChgLi4vJHt0fWApKX1mdW5jdGlvbiBYQSh0KXtyZXR1cm4gV0EoKS5nZXREZXJpdmVkUmVzb3VyY2Uoe3VybDp0fSkudXJsfWZ1bmN0aW9uIFhzKHQpe3JldHVybiBtKEFwKXx8KHR5cGVvZiBkZWZpbmU9PSJvYmplY3QiJiZtKGRlZmluZS5hbWQpJiYhZGVmaW5lLmFtZC50b1VybFVuZGVmaW5lZCYmbShkci50b1VybCk/QXA9WkM6QXA9WEEpLEFwKHQpfXZhciBIQSxxQSxncCxXcyxBcCxicCxRbT0kKCgpPT57ZnQoKTtIdCgpO0htKCk7bWYoKTtIQT17fSxxQT0vKCg/Oi4qXC8pfF4pQ2VzaXVtXC5qcyg/Olw/fFwjfCQpLztYcy5fY2VzaXVtU2NyaXB0UmVnZXg9cUE7WHMuX2J1aWxkTW9kdWxlVXJsRnJvbUJhc2VVcmw9WEE7WHMuX2NsZWFyQmFzZVJlc291cmNlPWZ1bmN0aW9uKCl7V3M9dm9pZCAwfTtYcy5zZXRCYXNlVXJsPWZ1bmN0aW9uKHQpe1dzPXJpLkRFRkFVTFQuZ2V0RGVyaXZlZFJlc291cmNlKHt1cmw6dH0pfTtYcy5nZXRDZXNpdW1CYXNlVXJsPVdBO2JwPVhzfSk7ZnVuY3Rpb24gUUModCxlLG4pe3RoaXMueD10LHRoaXMueT1lLHRoaXMucz1ufXZhciB3cCxKbT0kKCgpPT57d3A9UUN9KTtmdW5jdGlvbiBuaCh0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVCx0aGlzLl94eXNGaWxlVXJsVGVtcGxhdGU9cmkuY3JlYXRlSWZOZWVkZWQodC54eXNGaWxlVXJsVGVtcGxhdGUpLHRoaXMuX2ludGVycG9sYXRpb25PcmRlcj10LmludGVycG9sYXRpb25PcmRlcj8/OSx0aGlzLl9zYW1wbGVaZXJvSnVsaWFuRXBoZW1lcmlzRGF0ZT10LnNhbXBsZVplcm9KdWxpYW5FcGhlbWVyaXNEYXRlPz8yNDQyMzk2NWUtMSx0aGlzLl9zYW1wbGVaZXJvRGF0ZVRUPW5ldyBWbih0aGlzLl9zYW1wbGVaZXJvSnVsaWFuRXBoZW1lcmlzRGF0ZSwwLE9lLlRBSSksdGhpcy5fc3RlcFNpemVEYXlzPXQuc3RlcFNpemVEYXlzPz8xLHRoaXMuX3NhbXBsZXNQZXJYeXNGaWxlPXQuc2FtcGxlc1Blclh5c0ZpbGU/PzFlMyx0aGlzLl90b3RhbFNhbXBsZXM9dC50b3RhbFNhbXBsZXM/PzI3NDI2LHRoaXMuX3NhbXBsZXM9bmV3IEFycmF5KHRoaXMuX3RvdGFsU2FtcGxlcyozKSx0aGlzLl9jaHVua0Rvd25sb2Fkc0luUHJvZ3Jlc3M9W107bGV0IGU9dGhpcy5faW50ZXJwb2xhdGlvbk9yZGVyLG49dGhpcy5fZGVub21pbmF0b3JzPW5ldyBBcnJheShlKzEpLG89dGhpcy5feFRhYmxlPW5ldyBBcnJheShlKzEpLHI9TWF0aC5wb3codGhpcy5fc3RlcFNpemVEYXlzLGUpO2ZvcihsZXQgaT0wO2k8PWU7KytpKXtuW2ldPXIsb1tpXT1pKnRoaXMuX3N0ZXBTaXplRGF5cztmb3IobGV0IHM9MDtzPD1lOysrcylzIT09aSYmKG5baV0qPWktcyk7bltpXT0xL25baV19dGhpcy5fd29yaz1uZXcgQXJyYXkoZSsxKSx0aGlzLl9jb2VmPW5ldyBBcnJheShlKzEpfWZ1bmN0aW9uIHRoKHQsZSxuKXtsZXQgbz1KQztyZXR1cm4gby5kYXlOdW1iZXI9ZSxvLnNlY29uZHNPZkRheT1uLFZuLmRheXNEaWZmZXJlbmNlKG8sdC5fc2FtcGxlWmVyb0RhdGVUVCl9ZnVuY3Rpb24gZWgodCxlKXtpZih0Ll9jaHVua0Rvd25sb2Fkc0luUHJvZ3Jlc3NbZV0pcmV0dXJuIHQuX2NodW5rRG93bmxvYWRzSW5Qcm9ncmVzc1tlXTtsZXQgbixvPXQuX3h5c0ZpbGVVcmxUZW1wbGF0ZTttKG8pP249by5nZXREZXJpdmVkUmVzb3VyY2Uoe3RlbXBsYXRlVmFsdWVzOnswOmV9fSk6bj1uZXcgcmkoe3VybDpicChgQXNzZXRzL0lBVTIwMDZfWFlTL0lBVTIwMDZfWFlTXyR7ZX0uanNvbmApfSk7bGV0IHI9bi5mZXRjaEpzb24oKS50aGVuKGZ1bmN0aW9uKGkpe3QuX2NodW5rRG93bmxvYWRzSW5Qcm9ncmVzc1tlXT0hMTtsZXQgcz10Ll9zYW1wbGVzLGY9aS5zYW1wbGVzLHU9ZSp0Ll9zYW1wbGVzUGVyWHlzRmlsZSozO2ZvcihsZXQgYz0wLGw9Zi5sZW5ndGg7YzxsOysrYylzW3UrY109ZltjXX0pO3JldHVybiB0Ll9jaHVua0Rvd25sb2Fkc0luUHJvZ3Jlc3NbZV09cixyfXZhciBKQyxZQSwkQT0kKCgpPT57UW0oKTt5ZSgpO2Z0KCk7Sm0oKTtvcCgpO21mKCk7UWwoKTtKQz1uZXcgVm4oMCwwLE9lLlRBSSk7bmgucHJvdG90eXBlLnByZWxvYWQ9ZnVuY3Rpb24odCxlLG4sbyl7bGV0IHI9dGgodGhpcyx0LGUpLGk9dGgodGhpcyxuLG8pLHM9ci90aGlzLl9zdGVwU2l6ZURheXMtdGhpcy5faW50ZXJwb2xhdGlvbk9yZGVyLzJ8MDtzPDAmJihzPTApO2xldCBmPWkvdGhpcy5fc3RlcFNpemVEYXlzLXRoaXMuX2ludGVycG9sYXRpb25PcmRlci8yfDArdGhpcy5faW50ZXJwb2xhdGlvbk9yZGVyO2Y+PXRoaXMuX3RvdGFsU2FtcGxlcyYmKGY9dGhpcy5fdG90YWxTYW1wbGVzLTEpO2xldCB1PXMvdGhpcy5fc2FtcGxlc1Blclh5c0ZpbGV8MCxjPWYvdGhpcy5fc2FtcGxlc1Blclh5c0ZpbGV8MCxsPVtdO2ZvcihsZXQgcD11O3A8PWM7KytwKWwucHVzaChlaCh0aGlzLHApKTtyZXR1cm4gUHJvbWlzZS5hbGwobCl9O25oLnByb3RvdHlwZS5jb21wdXRlWHlzUmFkaWFucz1mdW5jdGlvbih0LGUsbil7bGV0IG89dGgodGhpcyx0LGUpO2lmKG88MClyZXR1cm47bGV0IHI9by90aGlzLl9zdGVwU2l6ZURheXN8MDtpZihyPj10aGlzLl90b3RhbFNhbXBsZXMpcmV0dXJuO2xldCBpPXRoaXMuX2ludGVycG9sYXRpb25PcmRlcixzPXItKGkvMnwwKTtzPDAmJihzPTApO2xldCBmPXMraTtmPj10aGlzLl90b3RhbFNhbXBsZXMmJihmPXRoaXMuX3RvdGFsU2FtcGxlcy0xLHM9Zi1pLHM8MCYmKHM9MCkpO2xldCB1PSExLGM9dGhpcy5fc2FtcGxlcztpZihtKGNbcyozXSl8fChlaCh0aGlzLHMvdGhpcy5fc2FtcGxlc1Blclh5c0ZpbGV8MCksdT0hMCksbShjW2YqM10pfHwoZWgodGhpcyxmL3RoaXMuX3NhbXBsZXNQZXJYeXNGaWxlfDApLHU9ITApLHUpcmV0dXJuO20obik/KG4ueD0wLG4ueT0wLG4ucz0wKTpuPW5ldyB3cCgwLDAsMCk7bGV0IGw9by1zKnRoaXMuX3N0ZXBTaXplRGF5cyxwPXRoaXMuX3dvcmssZD10aGlzLl9kZW5vbWluYXRvcnMsaD10aGlzLl9jb2VmLF89dGhpcy5feFRhYmxlLGcsYjtmb3IoZz0wO2c8PWk7KytnKXBbZ109bC1fW2ddO2ZvcihnPTA7Zzw9aTsrK2cpe2ZvcihoW2ddPTEsYj0wO2I8PWk7KytiKWIhPT1nJiYoaFtnXSo9cFtiXSk7aFtnXSo9ZFtnXTtsZXQgdz0ocytnKSozO24ueCs9aFtnXSpjW3crK10sbi55Kz1oW2ddKmNbdysrXSxuLnMrPWhbZ10qY1t3XX1yZXR1cm4gbn07WUE9bmh9KTt2YXIgcnMsTm4sV28sWkEsUUE9JCgoKT0+e2Z0KCk7Tm49e3JlcXVlc3RGdWxsc2NyZWVuOnZvaWQgMCxleGl0RnVsbHNjcmVlbjp2b2lkIDAsZnVsbHNjcmVlbkVuYWJsZWQ6dm9pZCAwLGZ1bGxzY3JlZW5FbGVtZW50OnZvaWQgMCxmdWxsc2NyZWVuY2hhbmdlOnZvaWQgMCxmdWxsc2NyZWVuZXJyb3I6dm9pZCAwfSxXbz17fTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhXbyx7ZWxlbWVudDp7Z2V0OmZ1bmN0aW9uKCl7aWYoV28uc3VwcG9ydHNGdWxsc2NyZWVuKCkpcmV0dXJuIGRvY3VtZW50W05uLmZ1bGxzY3JlZW5FbGVtZW50XX19LGNoYW5nZUV2ZW50TmFtZTp7Z2V0OmZ1bmN0aW9uKCl7aWYoV28uc3VwcG9ydHNGdWxsc2NyZWVuKCkpcmV0dXJuIE5uLmZ1bGxzY3JlZW5jaGFuZ2V9fSxlcnJvckV2ZW50TmFtZTp7Z2V0OmZ1bmN0aW9uKCl7aWYoV28uc3VwcG9ydHNGdWxsc2NyZWVuKCkpcmV0dXJuIE5uLmZ1bGxzY3JlZW5lcnJvcn19LGVuYWJsZWQ6e2dldDpmdW5jdGlvbigpe2lmKFdvLnN1cHBvcnRzRnVsbHNjcmVlbigpKXJldHVybiBkb2N1bWVudFtObi5mdWxsc2NyZWVuRW5hYmxlZF19fSxmdWxsc2NyZWVuOntnZXQ6ZnVuY3Rpb24oKXtpZihXby5zdXBwb3J0c0Z1bGxzY3JlZW4oKSlyZXR1cm4gV28uZWxlbWVudCE9PW51bGx9fX0pO1dvLnN1cHBvcnRzRnVsbHNjcmVlbj1mdW5jdGlvbigpe2lmKG0ocnMpKXJldHVybiBycztycz0hMTtsZXQgdD1kb2N1bWVudC5ib2R5O2lmKHR5cGVvZiB0LnJlcXVlc3RGdWxsc2NyZWVuPT0iZnVuY3Rpb24iKXJldHVybiBObi5yZXF1ZXN0RnVsbHNjcmVlbj0icmVxdWVzdEZ1bGxzY3JlZW4iLE5uLmV4aXRGdWxsc2NyZWVuPSJleGl0RnVsbHNjcmVlbiIsTm4uZnVsbHNjcmVlbkVuYWJsZWQ9ImZ1bGxzY3JlZW5FbmFibGVkIixObi5mdWxsc2NyZWVuRWxlbWVudD0iZnVsbHNjcmVlbkVsZW1lbnQiLE5uLmZ1bGxzY3JlZW5jaGFuZ2U9ImZ1bGxzY3JlZW5jaGFuZ2UiLE5uLmZ1bGxzY3JlZW5lcnJvcj0iZnVsbHNjcmVlbmVycm9yIixycz0hMCxycztsZXQgZT1bIndlYmtpdCIsIm1veiIsIm8iLCJtcyIsImtodG1sIl0sbjtmb3IobGV0IG89MCxyPWUubGVuZ3RoO288cjsrK28pe2xldCBpPWVbb107bj1gJHtpfVJlcXVlc3RGdWxsc2NyZWVuYCx0eXBlb2YgdFtuXT09ImZ1bmN0aW9uIj8oTm4ucmVxdWVzdEZ1bGxzY3JlZW49bixycz0hMCk6KG49YCR7aX1SZXF1ZXN0RnVsbFNjcmVlbmAsdHlwZW9mIHRbbl09PSJmdW5jdGlvbiImJihObi5yZXF1ZXN0RnVsbHNjcmVlbj1uLHJzPSEwKSksbj1gJHtpfUV4aXRGdWxsc2NyZWVuYCx0eXBlb2YgZG9jdW1lbnRbbl09PSJmdW5jdGlvbiI/Tm4uZXhpdEZ1bGxzY3JlZW49bjoobj1gJHtpfUNhbmNlbEZ1bGxTY3JlZW5gLHR5cGVvZiBkb2N1bWVudFtuXT09ImZ1bmN0aW9uIiYmKE5uLmV4aXRGdWxsc2NyZWVuPW4pKSxuPWAke2l9RnVsbHNjcmVlbkVuYWJsZWRgLGRvY3VtZW50W25dIT09dm9pZCAwP05uLmZ1bGxzY3JlZW5FbmFibGVkPW46KG49YCR7aX1GdWxsU2NyZWVuRW5hYmxlZGAsZG9jdW1lbnRbbl0hPT12b2lkIDAmJihObi5mdWxsc2NyZWVuRW5hYmxlZD1uKSksbj1gJHtpfUZ1bGxzY3JlZW5FbGVtZW50YCxkb2N1bWVudFtuXSE9PXZvaWQgMD9Obi5mdWxsc2NyZWVuRWxlbWVudD1uOihuPWAke2l9RnVsbFNjcmVlbkVsZW1lbnRgLGRvY3VtZW50W25dIT09dm9pZCAwJiYoTm4uZnVsbHNjcmVlbkVsZW1lbnQ9bikpLG49YCR7aX1mdWxsc2NyZWVuY2hhbmdlYCxkb2N1bWVudFtgb24ke259YF0hPT12b2lkIDAmJihpPT09Im1zIiYmKG49Ik1TRnVsbHNjcmVlbkNoYW5nZSIpLE5uLmZ1bGxzY3JlZW5jaGFuZ2U9biksbj1gJHtpfWZ1bGxzY3JlZW5lcnJvcmAsZG9jdW1lbnRbYG9uJHtufWBdIT09dm9pZCAwJiYoaT09PSJtcyImJihuPSJNU0Z1bGxzY3JlZW5FcnJvciIpLE5uLmZ1bGxzY3JlZW5lcnJvcj1uKX1yZXR1cm4gcnN9O1dvLnJlcXVlc3RGdWxsc2NyZWVuPWZ1bmN0aW9uKHQsZSl7V28uc3VwcG9ydHNGdWxsc2NyZWVuKCkmJnRbTm4ucmVxdWVzdEZ1bGxzY3JlZW5dKHt2ckRpc3BsYXk6ZX0pfTtXby5leGl0RnVsbHNjcmVlbj1mdW5jdGlvbigpe1dvLnN1cHBvcnRzRnVsbHNjcmVlbigpJiZkb2N1bWVudFtObi5leGl0RnVsbHNjcmVlbl0oKX07V28uX25hbWVzPU5uO1pBPVdvfSk7ZnVuY3Rpb24gWXModCl7bGV0IGU9dC5zcGxpdCgiLiIpO2ZvcihsZXQgbj0wLG89ZS5sZW5ndGg7bjxvOysrbillW25dPXBhcnNlSW50KGVbbl0sMTApO3JldHVybiBlfWZ1bmN0aW9uIGFoKCl7aWYoIW0oVHApJiYoVHA9ITEsIUNwKCkpKXtsZXQgdD0vIENocm9tZVwvKFtcLjAtOV0rKS8uZXhlYyhTby51c2VyQWdlbnQpO3QhPT1udWxsJiYoVHA9ITAsSkE9WXModFsxXSkpfXJldHVybiBUcH1mdW5jdGlvbiB0Mygpe3JldHVybiBhaCgpJiZKQX1mdW5jdGlvbiBlYigpe2lmKCFtKE9wKSYmKE9wPSExLCFhaCgpJiYhQ3AoKSYmLyBTYWZhcmlcL1tcLjAtOV0rLy50ZXN0KFNvLnVzZXJBZ2VudCkpKXtsZXQgdD0vIFZlcnNpb25cLyhbXC4wLTldKykvLmV4ZWMoU28udXNlckFnZW50KTt0IT09bnVsbCYmKE9wPSEwLHRiPVlzKHRbMV0pKX1yZXR1cm4gT3B9ZnVuY3Rpb24gZTMoKXtyZXR1cm4gZWIoKSYmdGJ9ZnVuY3Rpb24gbmIoKXtpZighbShFcCkpe0VwPSExO2xldCB0PS8gQXBwbGVXZWJLaXRcLyhbXC4wLTldKykoXCs/KS8uZXhlYyhTby51c2VyQWdlbnQpO3QhPT1udWxsJiYoRXA9ITAsc2g9WXModFsxXSksc2guaXNOaWdodGx5PSEhdFsyXSl9cmV0dXJuIEVwfWZ1bmN0aW9uIG4zKCl7cmV0dXJuIG5iKCkmJnNofWZ1bmN0aW9uIG9iKCl7aWYoIW0oeWYpKXt5Zj0hMTtsZXQgdDtTby5hcHBOYW1lPT09Ik1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlciI/KHQ9L01TSUUgKFswLTldezEsfVtcLjAtOV17MCx9KS8uZXhlYyhTby51c2VyQWdlbnQpLHQhPT1udWxsJiYoeWY9ITAsY2g9WXModFsxXSkpKTpTby5hcHBOYW1lPT09Ik5ldHNjYXBlIiYmKHQ9L1RyaWRlbnRcLy4qcnY6KFswLTldezEsfVtcLjAtOV17MCx9KS8uZXhlYyhTby51c2VyQWdlbnQpLHQhPT1udWxsJiYoeWY9ITAsY2g9WXModFsxXSkpKX1yZXR1cm4geWZ9ZnVuY3Rpb24gbzMoKXtyZXR1cm4gb2IoKSYmY2h9ZnVuY3Rpb24gQ3AoKXtpZighbShScCkpe1JwPSExO2xldCB0PS8gRWRnXC8oW1wuMC05XSspLy5leGVjKFNvLnVzZXJBZ2VudCk7dCE9PW51bGwmJihScD0hMCxyYj1Zcyh0WzFdKSl9cmV0dXJuIFJwfWZ1bmN0aW9uIHIzKCl7cmV0dXJuIENwKCkmJnJifWZ1bmN0aW9uIFBwKCl7aWYoIW0oU3ApKXtTcD0hMTtsZXQgdD0vRmlyZWZveFwvKFtcLjAtOV0rKS8uZXhlYyhTby51c2VyQWdlbnQpO3QhPT1udWxsJiYoU3A9ITAsZmg9WXModFsxXSkpfXJldHVybiBTcH1mdW5jdGlvbiBpMygpe3JldHVybiBtKG9oKXx8KG9oPS9XaW5kb3dzL2kudGVzdChTby5hcHBWZXJzaW9uKSksb2h9ZnVuY3Rpb24gczMoKXtyZXR1cm4gbShyaCl8fChyaD1uYXZpZ2F0b3IucGxhdGZvcm09PT0iaVBob25lInx8bmF2aWdhdG9yLnBsYXRmb3JtPT09ImlQb2QifHxuYXZpZ2F0b3IucGxhdGZvcm09PT0iaVBhZCIpLHJofWZ1bmN0aW9uIGMzKCl7cmV0dXJuIFBwKCkmJmZofWZ1bmN0aW9uIGEzKCl7cmV0dXJuIG0oaWgpfHwoaWg9IVBwKCkmJnR5cGVvZiBQb2ludGVyRXZlbnQ8InUiJiYoIW0oU28ucG9pbnRlckVuYWJsZWQpfHxTby5wb2ludGVyRW5hYmxlZCkpLGlofWZ1bmN0aW9uIHNiKCl7aWYoIW0oeHApKXtsZXQgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTt0LnNldEF0dHJpYnV0ZSgic3R5bGUiLCJpbWFnZS1yZW5kZXJpbmc6IC1tb3otY3Jpc3AtZWRnZXM7aW1hZ2UtcmVuZGVyaW5nOiBwaXhlbGF0ZWQ7Iik7bGV0IGU9dC5zdHlsZS5pbWFnZVJlbmRlcmluZzt4cD1tKGUpJiZlIT09IiIseHAmJihpYj1lKX1yZXR1cm4geHB9ZnVuY3Rpb24gZjMoKXtyZXR1cm4gc2IoKT9pYjp2b2lkIDB9ZnVuY3Rpb24gUm8oKXtpZighUm8uaW5pdGlhbGl6ZWQpdGhyb3cgbmV3IEQoIllvdSBtdXN0IGNhbGwgRmVhdHVyZURldGVjdGlvbi5zdXBwb3J0c1dlYlAuaW5pdGlhbGl6ZSBhbmQgd2FpdCBmb3IgdGhlIHByb21pc2UgdG8gcmVzb2x2ZSBiZWZvcmUgY2FsbGluZyBGZWF0dXJlRGV0ZWN0aW9uLnN1cHBvcnRzV2ViUCIpO3JldHVybiBSby5fcmVzdWx0fXZhciBTbyxUcCxKQSxPcCx0YixFcCxzaCx5ZixjaCxScCxyYixTcCxmaCxvaCxyaCxpaCxpYix4cCx0YSxnciwkcyx1aD0kKCgpPT57V3QoKTtmdCgpO0h0KCk7UUEoKTt0eXBlb2YgbmF2aWdhdG9yPCJ1Ij9Tbz1uYXZpZ2F0b3I6U289e307Um8uX3Byb21pc2U9dm9pZCAwO1JvLl9yZXN1bHQ9dm9pZCAwO1JvLmluaXRpYWxpemU9ZnVuY3Rpb24oKXtyZXR1cm4gbShSby5fcHJvbWlzZSl8fChSby5fcHJvbWlzZT1uZXcgUHJvbWlzZSh0PT57bGV0IGU9bmV3IEltYWdlO2Uub25sb2FkPWZ1bmN0aW9uKCl7Um8uX3Jlc3VsdD1lLndpZHRoPjAmJmUuaGVpZ2h0PjAsdChSby5fcmVzdWx0KX0sZS5vbmVycm9yPWZ1bmN0aW9uKCl7Um8uX3Jlc3VsdD0hMSx0KFJvLl9yZXN1bHQpfSxlLnNyYz0iZGF0YTppbWFnZS93ZWJwO2Jhc2U2NCxVa2xHUmlJQUFBQlhSVUpRVmxBNElCWUFBQUF3QVFDZEFTb0JBQUVBRHNEK0phUUFBM0FBQUFBQSJ9KSksUm8uX3Byb21pc2V9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFJvLHtpbml0aWFsaXplZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0oUm8uX3Jlc3VsdCl9fX0pO3RhPVtdO3R5cGVvZiBBcnJheUJ1ZmZlcjwidSImJih0YS5wdXNoKEludDhBcnJheSxVaW50OEFycmF5LEludDE2QXJyYXksVWludDE2QXJyYXksSW50MzJBcnJheSxVaW50MzJBcnJheSxGbG9hdDMyQXJyYXksRmxvYXQ2NEFycmF5KSx0eXBlb2YgVWludDhDbGFtcGVkQXJyYXk8InUiJiZ0YS5wdXNoKFVpbnQ4Q2xhbXBlZEFycmF5KSx0eXBlb2YgVWludDhDbGFtcGVkQXJyYXk8InUiJiZ0YS5wdXNoKFVpbnQ4Q2xhbXBlZEFycmF5KSx0eXBlb2YgQmlnSW50NjRBcnJheTwidSImJnRhLnB1c2goQmlnSW50NjRBcnJheSksdHlwZW9mIEJpZ1VpbnQ2NEFycmF5PCJ1IiYmdGEucHVzaChCaWdVaW50NjRBcnJheSkpO2dyPXtpc0Nocm9tZTphaCxjaHJvbWVWZXJzaW9uOnQzLGlzU2FmYXJpOmViLHNhZmFyaVZlcnNpb246ZTMsaXNXZWJraXQ6bmIsd2Via2l0VmVyc2lvbjpuMyxpc0ludGVybmV0RXhwbG9yZXI6b2IsaW50ZXJuZXRFeHBsb3JlclZlcnNpb246bzMsaXNFZGdlOkNwLGVkZ2VWZXJzaW9uOnIzLGlzRmlyZWZveDpQcCxmaXJlZm94VmVyc2lvbjpjMyxpc1dpbmRvd3M6aTMsaXNJUGFkT3JJT1M6czMsaGFyZHdhcmVDb25jdXJyZW5jeTpTby5oYXJkd2FyZUNvbmN1cnJlbmN5Pz8zLHN1cHBvcnRzUG9pbnRlckV2ZW50czphMyxzdXBwb3J0c0ltYWdlUmVuZGVyaW5nUGl4ZWxhdGVkOnNiLHN1cHBvcnRzV2ViUDpSbyxpbWFnZVJlbmRlcmluZ1ZhbHVlOmYzLHR5cGVkQXJyYXlUeXBlczp0YX07Z3Iuc3VwcG9ydHNCYXNpcz1mdW5jdGlvbih0KXtyZXR1cm4gZ3Iuc3VwcG9ydHNXZWJBc3NlbWJseSgpJiZ0LmNvbnRleHQuc3VwcG9ydHNCYXNpc307Z3Iuc3VwcG9ydHNGdWxsc2NyZWVuPWZ1bmN0aW9uKCl7cmV0dXJuIFpBLnN1cHBvcnRzRnVsbHNjcmVlbigpfTtnci5zdXBwb3J0c1R5cGVkQXJyYXlzPWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBBcnJheUJ1ZmZlcjwidSJ9O2dyLnN1cHBvcnRzQmlnSW50NjRBcnJheT1mdW5jdGlvbigpe3JldHVybiB0eXBlb2YgQmlnSW50NjRBcnJheTwidSJ9O2dyLnN1cHBvcnRzQmlnVWludDY0QXJyYXk9ZnVuY3Rpb24oKXtyZXR1cm4gdHlwZW9mIEJpZ1VpbnQ2NEFycmF5PCJ1In07Z3Iuc3VwcG9ydHNCaWdJbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdHlwZW9mIEJpZ0ludDwidSJ9O2dyLnN1cHBvcnRzV2ViV29ya2Vycz1mdW5jdGlvbigpe3JldHVybiB0eXBlb2YgV29ya2VyPCJ1In07Z3Iuc3VwcG9ydHNXZWJBc3NlbWJseT1mdW5jdGlvbigpe3JldHVybiB0eXBlb2YgV2ViQXNzZW1ibHk8InUifTtnci5zdXBwb3J0c1dlYmdsMj1mdW5jdGlvbih0KXtyZXR1cm4geS5kZWZpbmVkKCJzY2VuZSIsdCksdC5jb250ZXh0LndlYmdsMn07Z3Iuc3VwcG9ydHNFc21XZWJXb3JrZXJzPWZ1bmN0aW9uKCl7cmV0dXJuIVBwKCl8fHBhcnNlSW50KGZoKT49MTE0fTskcz1ncn0pO2Z1bmN0aW9uIEV0KHQsZSxuLG8pe3RoaXMueD10Pz8wLHRoaXMueT1lPz8wLHRoaXMuej1uPz8wLHRoaXMudz1vPz8wfXZhciBnZix1MyxsMyxjYixhYixsaCxmYixNcCxwaCxCcix1YixOcCxkaCxsYixtaCxoaCxwMyxkMyxBZixlYSxtMyxwYixJcCx2cCxQaSxNaSx0ZSxYbz0kKCgpPT57RHQoKTtXdCgpO2Z0KCk7dWgoKTtLdCgpO1VuKCk7Z2Y9bmV3IGE7RXQuZnJvbUF4aXNBbmdsZT1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJheGlzIix0KSx5LnR5cGVPZi5udW1iZXIoImFuZ2xlIixlKTtsZXQgbz1lLzIscj1NYXRoLnNpbihvKTtnZj1hLm5vcm1hbGl6ZSh0LGdmKTtsZXQgaT1nZi54KnIscz1nZi55KnIsZj1nZi56KnIsdT1NYXRoLmNvcyhvKTtyZXR1cm4gbShuKT8obi54PWksbi55PXMsbi56PWYsbi53PXUsbik6bmV3IEV0KGkscyxmLHUpfTt1Mz1bMSwyLDBdLGwzPW5ldyBBcnJheSgzKTtFdC5mcm9tUm90YXRpb25NYXRyaXg9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCk7bGV0IG4sbyxyLGkscyxmPXRbWi5DT0xVTU4wUk9XMF0sdT10W1ouQ09MVU1OMVJPVzFdLGM9dFtaLkNPTFVNTjJST1cyXSxsPWYrdStjO2lmKGw+MCluPU1hdGguc3FydChsKzEpLHM9LjUqbixuPS41L24sbz0odFtaLkNPTFVNTjFST1cyXS10W1ouQ09MVU1OMlJPVzFdKSpuLHI9KHRbWi5DT0xVTU4yUk9XMF0tdFtaLkNPTFVNTjBST1cyXSkqbixpPSh0W1ouQ09MVU1OMFJPVzFdLXRbWi5DT0xVTU4xUk9XMF0pKm47ZWxzZXtsZXQgcD11MyxkPTA7dT5mJiYoZD0xKSxjPmYmJmM+dSYmKGQ9Mik7bGV0IGg9cFtkXSxfPXBbaF07bj1NYXRoLnNxcnQodFtaLmdldEVsZW1lbnRJbmRleChkLGQpXS10W1ouZ2V0RWxlbWVudEluZGV4KGgsaCldLXRbWi5nZXRFbGVtZW50SW5kZXgoXyxfKV0rMSk7bGV0IGc9bDM7Z1tkXT0uNSpuLG49LjUvbixzPSh0W1ouZ2V0RWxlbWVudEluZGV4KF8saCldLXRbWi5nZXRFbGVtZW50SW5kZXgoaCxfKV0pKm4sZ1toXT0odFtaLmdldEVsZW1lbnRJbmRleChoLGQpXSt0W1ouZ2V0RWxlbWVudEluZGV4KGQsaCldKSpuLGdbX109KHRbWi5nZXRFbGVtZW50SW5kZXgoXyxkKV0rdFtaLmdldEVsZW1lbnRJbmRleChkLF8pXSkqbixvPS1nWzBdLHI9LWdbMV0saT0tZ1syXX1yZXR1cm4gbShlKT8oZS54PW8sZS55PXIsZS56PWksZS53PXMsZSk6bmV3IEV0KG8scixpLHMpfTtjYj1uZXcgRXQsYWI9bmV3IEV0LGxoPW5ldyBFdCxmYj1uZXcgRXQ7RXQuZnJvbUhlYWRpbmdQaXRjaFJvbGw9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJoZWFkaW5nUGl0Y2hSb2xsIix0KSxmYj1FdC5mcm9tQXhpc0FuZ2xlKGEuVU5JVF9YLHQucm9sbCxjYiksbGg9RXQuZnJvbUF4aXNBbmdsZShhLlVOSVRfWSwtdC5waXRjaCxlKSxlPUV0Lm11bHRpcGx5KGxoLGZiLGxoKSxhYj1FdC5mcm9tQXhpc0FuZ2xlKGEuVU5JVF9aLC10LmhlYWRpbmcsY2IpLEV0Lm11bHRpcGx5KGFiLGUsZSl9O01wPW5ldyBhLHBoPW5ldyBhLEJyPW5ldyBFdCx1Yj1uZXcgRXQsTnA9bmV3IEV0O0V0LnBhY2tlZExlbmd0aD00O0V0LnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzAsZVtuKytdPXQueCxlW24rK109dC55LGVbbisrXT10LnosZVtuXT10LncsZX07RXQudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS5kZWZpbmVkKCJhcnJheSIsdCksZT1lPz8wLG0obil8fChuPW5ldyBFdCksbi54PXRbZV0sbi55PXRbZSsxXSxuLno9dFtlKzJdLG4udz10W2UrM10sbn07RXQucGFja2VkSW50ZXJwb2xhdGlvbkxlbmd0aD0zO0V0LmNvbnZlcnRQYWNrZWRBcnJheUZvckludGVycG9sYXRpb249ZnVuY3Rpb24odCxlLG4sbyl7RXQudW5wYWNrKHQsbio0LE5wKSxFdC5jb25qdWdhdGUoTnAsTnApO2ZvcihsZXQgcj0wLGk9bi1lKzE7cjxpO3IrKyl7bGV0IHM9ciozO0V0LnVucGFjayh0LChlK3IpKjQsQnIpLEV0Lm11bHRpcGx5KEJyLE5wLEJyKSxCci53PDAmJkV0Lm5lZ2F0ZShCcixCciksRXQuY29tcHV0ZUF4aXMoQnIsTXApO2xldCBmPUV0LmNvbXB1dGVBbmdsZShCcik7bShvKXx8KG89W10pLG9bc109TXAueCpmLG9bcysxXT1NcC55KmYsb1tzKzJdPU1wLnoqZn19O0V0LnVucGFja0ludGVycG9sYXRpb25SZXN1bHQ9ZnVuY3Rpb24odCxlLG4sbyxyKXttKHIpfHwocj1uZXcgRXQpLGEuZnJvbUFycmF5KHQsMCxwaCk7bGV0IGk9YS5tYWduaXR1ZGUocGgpO3JldHVybiBFdC51bnBhY2soZSxvKjQsdWIpLGk9PT0wP0V0LmNsb25lKEV0LklERU5USVRZLEJyKTpFdC5mcm9tQXhpc0FuZ2xlKHBoLGksQnIpLEV0Lm11bHRpcGx5KEJyLHViLHIpfTtFdC5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGUueD10LngsZS55PXQueSxlLno9dC56LGUudz10LncsZSk6bmV3IEV0KHQueCx0LnksdC56LHQudyl9O0V0LmNvbmp1Z2F0ZT1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInF1YXRlcm5pb24iLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxlLng9LXQueCxlLnk9LXQueSxlLno9LXQueixlLnc9dC53LGV9O0V0Lm1hZ25pdHVkZVNxdWFyZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgicXVhdGVybmlvbiIsdCksdC54KnQueCt0LnkqdC55K3Queip0LnordC53KnQud307RXQubWFnbml0dWRlPWZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLnNxcnQoRXQubWFnbml0dWRlU3F1YXJlZCh0KSl9O0V0Lm5vcm1hbGl6ZT1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgbj0xL0V0Lm1hZ25pdHVkZSh0KSxvPXQueCpuLHI9dC55Km4saT10LnoqbixzPXQudypuO3JldHVybiBlLng9byxlLnk9cixlLno9aSxlLnc9cyxlfTtFdC5pbnZlcnNlPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpO2xldCBuPUV0Lm1hZ25pdHVkZVNxdWFyZWQodCk7cmV0dXJuIGU9RXQuY29uanVnYXRlKHQsZSksRXQubXVsdGlwbHlCeVNjYWxhcihlLDEvbixlKX07RXQuYWRkPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksbi54PXQueCtlLngsbi55PXQueStlLnksbi56PXQueitlLnosbi53PXQudytlLncsbn07RXQuc3VidHJhY3Q9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54LWUueCxuLnk9dC55LWUueSxuLno9dC56LWUueixuLnc9dC53LWUudyxufTtFdC5uZWdhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJxdWF0ZXJuaW9uIix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PS10LngsZS55PS10LnksZS56PS10LnosZS53PS10LncsZX07RXQuZG90PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksdC54KmUueCt0LnkqZS55K3QueiplLnordC53KmUud307RXQubXVsdGlwbHk9ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pO2xldCBvPXQueCxyPXQueSxpPXQueixzPXQudyxmPWUueCx1PWUueSxjPWUueixsPWUudyxwPXMqZitvKmwrcipjLWkqdSxkPXMqdS1vKmMrcipsK2kqZixoPXMqYytvKnUtcipmK2kqbCxfPXMqbC1vKmYtcip1LWkqYztyZXR1cm4gbi54PXAsbi55PWQsbi56PWgsbi53PV8sbn07RXQubXVsdGlwbHlCeVNjYWxhcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgicXVhdGVybmlvbiIsdCkseS50eXBlT2YubnVtYmVyKCJzY2FsYXIiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLng9dC54KmUsbi55PXQueSplLG4uej10LnoqZSxuLnc9dC53KmUsbn07RXQuZGl2aWRlQnlTY2FsYXI9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInF1YXRlcm5pb24iLHQpLHkudHlwZU9mLm51bWJlcigic2NhbGFyIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksbi54PXQueC9lLG4ueT10LnkvZSxuLno9dC56L2Usbi53PXQudy9lLG59O0V0LmNvbXB1dGVBeGlzPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJxdWF0ZXJuaW9uIix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IG49dC53O2lmKE1hdGguYWJzKG4tMSk8UC5FUFNJTE9ONnx8TWF0aC5hYnMobisxKTxQLkVQU0lMT042KXJldHVybiBlLng9MSxlLnk9ZS56PTAsZTtsZXQgbz0xL01hdGguc3FydCgxLW4qbik7cmV0dXJuIGUueD10LngqbyxlLnk9dC55Km8sZS56PXQueipvLGV9O0V0LmNvbXB1dGVBbmdsZT1mdW5jdGlvbih0KXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJxdWF0ZXJuaW9uIix0KSxNYXRoLmFicyh0LnctMSk8UC5FUFNJTE9ONj8wOjIqTWF0aC5hY29zKHQudyl9O2RoPW5ldyBFdDtFdC5sZXJwPWZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInN0YXJ0Iix0KSx5LnR5cGVPZi5vYmplY3QoImVuZCIsZSkseS50eXBlT2YubnVtYmVyKCJ0IixuKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbyksZGg9RXQubXVsdGlwbHlCeVNjYWxhcihlLG4sZGgpLG89RXQubXVsdGlwbHlCeVNjYWxhcih0LDEtbixvKSxFdC5hZGQoZGgsbyxvKX07bGI9bmV3IEV0LG1oPW5ldyBFdCxoaD1uZXcgRXQ7RXQuc2xlcnA9ZnVuY3Rpb24odCxlLG4sbyl7eS50eXBlT2Yub2JqZWN0KCJzdGFydCIsdCkseS50eXBlT2Yub2JqZWN0KCJlbmQiLGUpLHkudHlwZU9mLm51bWJlcigidCIsbikseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG8pO2xldCByPUV0LmRvdCh0LGUpLGk9ZTtpZihyPDAmJihyPS1yLGk9bGI9RXQubmVnYXRlKGUsbGIpKSwxLXI8UC5FUFNJTE9ONilyZXR1cm4gRXQubGVycCh0LGksbixvKTtsZXQgcz1NYXRoLmFjb3Mocik7cmV0dXJuIG1oPUV0Lm11bHRpcGx5QnlTY2FsYXIodCxNYXRoLnNpbigoMS1uKSpzKSxtaCksaGg9RXQubXVsdGlwbHlCeVNjYWxhcihpLE1hdGguc2luKG4qcyksaGgpLG89RXQuYWRkKG1oLGhoLG8pLEV0Lm11bHRpcGx5QnlTY2FsYXIobywxL01hdGguc2luKHMpLG8pfTtFdC5sb2c9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoInF1YXRlcm5pb24iLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgbj1QLmFjb3NDbGFtcGVkKHQudyksbz0wO3JldHVybiBuIT09MCYmKG89bi9NYXRoLnNpbihuKSksYS5tdWx0aXBseUJ5U2NhbGFyKHQsbyxlKX07RXQuZXhwPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgbj1hLm1hZ25pdHVkZSh0KSxvPTA7cmV0dXJuIG4hPT0wJiYobz1NYXRoLnNpbihuKS9uKSxlLng9dC54Km8sZS55PXQueSpvLGUuej10LnoqbyxlLnc9TWF0aC5jb3MobiksZX07cDM9bmV3IGEsZDM9bmV3IGEsQWY9bmV3IEV0LGVhPW5ldyBFdDtFdC5jb21wdXRlSW5uZXJRdWFkcmFuZ2xlPWZ1bmN0aW9uKHQsZSxuLG8pe3kudHlwZU9mLm9iamVjdCgicTAiLHQpLHkudHlwZU9mLm9iamVjdCgicTEiLGUpLHkudHlwZU9mLm9iamVjdCgicTIiLG4pLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixvKTtsZXQgcj1FdC5jb25qdWdhdGUoZSxBZik7RXQubXVsdGlwbHkocixuLGVhKTtsZXQgaT1FdC5sb2coZWEscDMpO0V0Lm11bHRpcGx5KHIsdCxlYSk7bGV0IHM9RXQubG9nKGVhLGQzKTtyZXR1cm4gYS5hZGQoaSxzLGkpLGEubXVsdGlwbHlCeVNjYWxhcihpLC4yNSxpKSxhLm5lZ2F0ZShpLGkpLEV0LmV4cChpLEFmKSxFdC5tdWx0aXBseShlLEFmLG8pfTtFdC5zcXVhZD1mdW5jdGlvbih0LGUsbixvLHIsaSl7eS50eXBlT2Yub2JqZWN0KCJxMCIsdCkseS50eXBlT2Yub2JqZWN0KCJxMSIsZSkseS50eXBlT2Yub2JqZWN0KCJzMCIsbikseS50eXBlT2Yub2JqZWN0KCJzMSIsbykseS50eXBlT2YubnVtYmVyKCJ0IixyKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IHM9RXQuc2xlcnAodCxlLHIsQWYpLGY9RXQuc2xlcnAobixvLHIsZWEpO3JldHVybiBFdC5zbGVycChzLGYsMipyKigxLXIpLGkpfTttMz1uZXcgRXQscGI9MS45MDExMDc0NTM1MTczMDAzLElwPSRzLnN1cHBvcnRzVHlwZWRBcnJheXMoKT9uZXcgRmxvYXQzMkFycmF5KDgpOltdLHZwPSRzLnN1cHBvcnRzVHlwZWRBcnJheXMoKT9uZXcgRmxvYXQzMkFycmF5KDgpOltdLFBpPSRzLnN1cHBvcnRzVHlwZWRBcnJheXMoKT9uZXcgRmxvYXQzMkFycmF5KDgpOltdLE1pPSRzLnN1cHBvcnRzVHlwZWRBcnJheXMoKT9uZXcgRmxvYXQzMkFycmF5KDgpOltdO2ZvcihsZXQgdD0wO3Q8NzsrK3Qpe2xldCBlPXQrMSxuPTIqZSsxO0lwW3RdPTEvKGUqbiksdnBbdF09ZS9ufUlwWzddPXBiLzEzNjt2cFs3XT1wYio4LzE3O0V0LmZhc3RTbGVycD1mdW5jdGlvbih0LGUsbixvKXt5LnR5cGVPZi5vYmplY3QoInN0YXJ0Iix0KSx5LnR5cGVPZi5vYmplY3QoImVuZCIsZSkseS50eXBlT2YubnVtYmVyKCJ0IixuKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbyk7bGV0IHI9RXQuZG90KHQsZSksaTtyPj0wP2k9MTooaT0tMSxyPS1yKTtsZXQgcz1yLTEsZj0xLW4sdT1uKm4sYz1mKmY7Zm9yKGxldCBoPTc7aD49MDstLWgpUGlbaF09KElwW2hdKnUtdnBbaF0pKnMsTWlbaF09KElwW2hdKmMtdnBbaF0pKnM7bGV0IGw9aSpuKigxK1BpWzBdKigxK1BpWzFdKigxK1BpWzJdKigxK1BpWzNdKigxK1BpWzRdKigxK1BpWzVdKigxK1BpWzZdKigxK1BpWzddKSkpKSkpKSkscD1mKigxK01pWzBdKigxK01pWzFdKigxK01pWzJdKigxK01pWzNdKigxK01pWzRdKigxK01pWzVdKigxK01pWzZdKigxK01pWzddKSkpKSkpKSksZD1FdC5tdWx0aXBseUJ5U2NhbGFyKHQscCxtMyk7cmV0dXJuIEV0Lm11bHRpcGx5QnlTY2FsYXIoZSxsLG8pLEV0LmFkZChkLG8sbyl9O0V0LmZhc3RTcXVhZD1mdW5jdGlvbih0LGUsbixvLHIsaSl7eS50eXBlT2Yub2JqZWN0KCJxMCIsdCkseS50eXBlT2Yub2JqZWN0KCJxMSIsZSkseS50eXBlT2Yub2JqZWN0KCJzMCIsbikseS50eXBlT2Yub2JqZWN0KCJzMSIsbykseS50eXBlT2YubnVtYmVyKCJ0IixyKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsaSk7bGV0IHM9RXQuZmFzdFNsZXJwKHQsZSxyLEFmKSxmPUV0LmZhc3RTbGVycChuLG8scixlYSk7cmV0dXJuIEV0LmZhc3RTbGVycChzLGYsMipyKigxLXIpLGkpfTtFdC5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJnQueD09PWUueCYmdC55PT09ZS55JiZ0Lno9PT1lLnomJnQudz09PWUud307RXQuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG49bj8/MCx0PT09ZXx8bSh0KSYmbShlKSYmTWF0aC5hYnModC54LWUueCk8PW4mJk1hdGguYWJzKHQueS1lLnkpPD1uJiZNYXRoLmFicyh0LnotZS56KTw9biYmTWF0aC5hYnModC53LWUudyk8PW59O0V0LlpFUk89T2JqZWN0LmZyZWV6ZShuZXcgRXQoMCwwLDAsMCkpO0V0LklERU5USVRZPU9iamVjdC5mcmVlemUobmV3IEV0KDAsMCwwLDEpKTtFdC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIEV0LmNsb25lKHRoaXMsdCl9O0V0LnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIEV0LmVxdWFscyh0aGlzLHQpfTtFdC5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUpe3JldHVybiBFdC5lcXVhbHNFcHNpbG9uKHRoaXMsdCxlKX07RXQucHJvdG90eXBlLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuYCgke3RoaXMueH0sICR7dGhpcy55fSwgJHt0aGlzLnp9LCAke3RoaXMud30pYH07dGU9RXR9KTt2YXIgUmUsX2gsbmEseWgsWW8saXMsc3MsY3MsaDMsXzMseTMsZzMsQTMsYjMsdzMsZGIsVDMsTzMsRTMsUjMsUzMseDMsQzMsUDMsTTMsTjMsRnAsYmgsSTMsdjMsRjMsTHAsTDMsRDMsQjMsVTMsZ2gsQWgsazMsRzMsVjMsejMsbWIsaGIsd2gsajMsSDMsVGgsX2IsJG8sYXM9JCgoKT0+e2tlKCk7RHQoKTtfcigpO0llKCk7V3QoKTtmdCgpO0h0KCk7ekEoKTtEbSgpOyR0KCk7akEoKTskQSgpO0ptKCk7b3AoKTtLdCgpO1VuKCk7a24oKTtYbygpO1psKCk7UmU9e30sX2g9e3VwOntzb3V0aDoiZWFzdCIsbm9ydGg6Indlc3QiLHdlc3Q6InNvdXRoIixlYXN0OiJub3J0aCJ9LGRvd246e3NvdXRoOiJ3ZXN0Iixub3J0aDoiZWFzdCIsd2VzdDoibm9ydGgiLGVhc3Q6InNvdXRoIn0sc291dGg6e3VwOiJ3ZXN0Iixkb3duOiJlYXN0Iix3ZXN0OiJkb3duIixlYXN0OiJ1cCJ9LG5vcnRoOnt1cDoiZWFzdCIsZG93bjoid2VzdCIsd2VzdDoidXAiLGVhc3Q6ImRvd24ifSx3ZXN0Ont1cDoibm9ydGgiLGRvd246InNvdXRoIixub3J0aDoiZG93biIsc291dGg6InVwIn0sZWFzdDp7dXA6InNvdXRoIixkb3duOiJub3J0aCIsbm9ydGg6InVwIixzb3V0aDoiZG93biJ9fSxuYT17bm9ydGg6Wy0xLDAsMF0sZWFzdDpbMCwxLDBdLHVwOlswLDAsMV0sc291dGg6WzEsMCwwXSx3ZXN0OlswLC0xLDBdLGRvd246WzAsMCwtMV19LHloPXt9LFlvPXtlYXN0Om5ldyBhLG5vcnRoOm5ldyBhLHVwOm5ldyBhLHdlc3Q6bmV3IGEsc291dGg6bmV3IGEsZG93bjpuZXcgYX0saXM9bmV3IGEsc3M9bmV3IGEsY3M9bmV3IGE7UmUubG9jYWxGcmFtZVRvRml4ZWRGcmFtZUdlbmVyYXRvcj1mdW5jdGlvbih0LGUpe2lmKCFfaC5oYXNPd25Qcm9wZXJ0eSh0KXx8IV9oW3RdLmhhc093blByb3BlcnR5KGUpKXRocm93IG5ldyBEKCJmaXJzdEF4aXMgYW5kIHNlY29uZEF4aXMgbXVzdCBiZSBlYXN0LCBub3J0aCwgdXAsIHdlc3QsIHNvdXRoIG9yIGRvd24uIik7bGV0IG49X2hbdF1bZV0sbyxyPXQrZTtyZXR1cm4gbSh5aFtyXSk/bz15aFtyXToobz1mdW5jdGlvbihpLHMsZil7aWYoIW0oaSkpdGhyb3cgbmV3IEQoIm9yaWdpbiBpcyByZXF1aXJlZC4iKTtpZihpc05hTihpLngpfHxpc05hTihpLnkpfHxpc05hTihpLnopKXRocm93IG5ldyBEKCJvcmlnaW4gaGFzIGEgTmFOIGNvbXBvbmVudCIpO2lmKG0oZil8fChmPW5ldyBzdCksYS5lcXVhbHNFcHNpbG9uKGksYS5aRVJPLFAuRVBTSUxPTjE0KSlhLnVucGFjayhuYVt0XSwwLGlzKSxhLnVucGFjayhuYVtlXSwwLHNzKSxhLnVucGFjayhuYVtuXSwwLGNzKTtlbHNlIGlmKFAuZXF1YWxzRXBzaWxvbihpLngsMCxQLkVQU0lMT04xNCkmJlAuZXF1YWxzRXBzaWxvbihpLnksMCxQLkVQU0lMT04xNCkpe2xldCB1PVAuc2lnbihpLnopO2EudW5wYWNrKG5hW3RdLDAsaXMpLHQhPT0iZWFzdCImJnQhPT0id2VzdCImJmEubXVsdGlwbHlCeVNjYWxhcihpcyx1LGlzKSxhLnVucGFjayhuYVtlXSwwLHNzKSxlIT09ImVhc3QiJiZlIT09Indlc3QiJiZhLm11bHRpcGx5QnlTY2FsYXIoc3MsdSxzcyksYS51bnBhY2sobmFbbl0sMCxjcyksbiE9PSJlYXN0IiYmbiE9PSJ3ZXN0IiYmYS5tdWx0aXBseUJ5U2NhbGFyKGNzLHUsY3MpfWVsc2V7cz1zPz9ZLmRlZmF1bHQscy5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoaSxZby51cCk7bGV0IHU9WW8udXAsYz1Zby5lYXN0O2MueD0taS55LGMueT1pLngsYy56PTAsYS5ub3JtYWxpemUoYyxZby5lYXN0KSxhLmNyb3NzKHUsYyxZby5ub3J0aCksYS5tdWx0aXBseUJ5U2NhbGFyKFlvLnVwLC0xLFlvLmRvd24pLGEubXVsdGlwbHlCeVNjYWxhcihZby5lYXN0LC0xLFlvLndlc3QpLGEubXVsdGlwbHlCeVNjYWxhcihZby5ub3J0aCwtMSxZby5zb3V0aCksaXM9WW9bdF0sc3M9WW9bZV0sY3M9WW9bbl19cmV0dXJuIGZbMF09aXMueCxmWzFdPWlzLnksZlsyXT1pcy56LGZbM109MCxmWzRdPXNzLngsZls1XT1zcy55LGZbNl09c3MueixmWzddPTAsZls4XT1jcy54LGZbOV09Y3MueSxmWzEwXT1jcy56LGZbMTFdPTAsZlsxMl09aS54LGZbMTNdPWkueSxmWzE0XT1pLnosZlsxNV09MSxmfSx5aFtyXT1vKSxvfTtSZS5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZT1SZS5sb2NhbEZyYW1lVG9GaXhlZEZyYW1lR2VuZXJhdG9yKCJlYXN0Iiwibm9ydGgiKTtSZS5ub3J0aEVhc3REb3duVG9GaXhlZEZyYW1lPVJlLmxvY2FsRnJhbWVUb0ZpeGVkRnJhbWVHZW5lcmF0b3IoIm5vcnRoIiwiZWFzdCIpO1JlLm5vcnRoVXBFYXN0VG9GaXhlZEZyYW1lPVJlLmxvY2FsRnJhbWVUb0ZpeGVkRnJhbWVHZW5lcmF0b3IoIm5vcnRoIiwidXAiKTtSZS5ub3J0aFdlc3RVcFRvRml4ZWRGcmFtZT1SZS5sb2NhbEZyYW1lVG9GaXhlZEZyYW1lR2VuZXJhdG9yKCJub3J0aCIsIndlc3QiKTtoMz1uZXcgdGUsXzM9bmV3IGEoMSwxLDEpLHkzPW5ldyBzdDtSZS5oZWFkaW5nUGl0Y2hSb2xsVG9GaXhlZEZyYW1lPWZ1bmN0aW9uKHQsZSxuLG8scil7eS50eXBlT2Yub2JqZWN0KCJIZWFkaW5nUGl0Y2hSb2xsIixlKSxvPW8/P1JlLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lO2xldCBpPXRlLmZyb21IZWFkaW5nUGl0Y2hSb2xsKGUsaDMpLHM9c3QuZnJvbVRyYW5zbGF0aW9uUXVhdGVybmlvblJvdGF0aW9uU2NhbGUoYS5aRVJPLGksXzMseTMpO3JldHVybiByPW8odCxuLHIpLHN0Lm11bHRpcGx5KHIscyxyKX07ZzM9bmV3IHN0LEEzPW5ldyBaO1JlLmhlYWRpbmdQaXRjaFJvbGxRdWF0ZXJuaW9uPWZ1bmN0aW9uKHQsZSxuLG8scil7eS50eXBlT2Yub2JqZWN0KCJIZWFkaW5nUGl0Y2hSb2xsIixlKTtsZXQgaT1SZS5oZWFkaW5nUGl0Y2hSb2xsVG9GaXhlZEZyYW1lKHQsZSxuLG8sZzMpLHM9c3QuZ2V0TWF0cml4MyhpLEEzKTtyZXR1cm4gdGUuZnJvbVJvdGF0aW9uTWF0cml4KHMscil9O2IzPW5ldyBhKDEsMSwxKSx3Mz1uZXcgYSxkYj1uZXcgc3QsVDM9bmV3IHN0LE8zPW5ldyBaLEUzPW5ldyB0ZTtSZS5maXhlZEZyYW1lVG9IZWFkaW5nUGl0Y2hSb2xsPWZ1bmN0aW9uKHQsZSxuLG8pe3kuZGVmaW5lZCgidHJhbnNmb3JtIix0KSxlPWU/P1kuZGVmYXVsdCxuPW4/P1JlLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lLG0obyl8fChvPW5ldyB5cCk7bGV0IHI9c3QuZ2V0VHJhbnNsYXRpb24odCx3Myk7aWYoYS5lcXVhbHMocixhLlpFUk8pKXJldHVybiBvLmhlYWRpbmc9MCxvLnBpdGNoPTAsby5yb2xsPTAsbztsZXQgaT1zdC5pbnZlcnNlVHJhbnNmb3JtYXRpb24obihyLGUsZGIpLGRiKSxzPXN0LnNldFNjYWxlKHQsYjMsVDMpO3M9c3Quc2V0VHJhbnNsYXRpb24ocyxhLlpFUk8scyksaT1zdC5tdWx0aXBseShpLHMsaSk7bGV0IGY9dGUuZnJvbVJvdGF0aW9uTWF0cml4KHN0LmdldE1hdHJpeDMoaSxPMyksRTMpO3JldHVybiBmPXRlLm5vcm1hbGl6ZShmLGYpLHlwLmZyb21RdWF0ZXJuaW9uKGYsbyl9O1IzPTYqMzYwMCsyNDYwKzUwLjU0ODQxLFMzPTg2NDAxODQ4MTI4NjZlLTYseDM9LjA5MzEwNCxDMz0tNjJlLTcsUDM9MTE3NzI3NTgzODQ2NjhlLTMyLE0zPTcyOTIxMTU4NTUzZS0xNSxOMz1QLlRXT19QSS84NjQwMCxGcD1uZXcgVm47UmUuY29tcHV0ZUljcmZUb0NlbnRyYWxCb2R5Rml4ZWRNYXRyaXg9ZnVuY3Rpb24odCxlKXtsZXQgbj1SZS5jb21wdXRlSWNyZlRvRml4ZWRNYXRyaXgodCxlKTtyZXR1cm4gbShuKXx8KG49UmUuY29tcHV0ZVRlbWVUb1BzZXVkb0ZpeGVkTWF0cml4KHQsZSkpLG59O1JlLmNvbXB1dGVUZW1lVG9Qc2V1ZG9GaXhlZE1hdHJpeD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJkYXRlIGlzIHJlcXVpcmVkLiIpO0ZwPVZuLmFkZFNlY29uZHModCwtVm4uY29tcHV0ZVRhaU1pbnVzVXRjKHQpLEZwKTtsZXQgbj1GcC5kYXlOdW1iZXIsbz1GcC5zZWNvbmRzT2ZEYXkscixpPW4tMjQ1MTU0NTtvPj00MzIwMD9yPShpKy41KS95bi5EQVlTX1BFUl9KVUxJQU5fQ0VOVFVSWTpyPShpLS41KS95bi5EQVlTX1BFUl9KVUxJQU5fQ0VOVFVSWTtsZXQgZj0oUjMrciooUzMrciooeDMrcipDMykpKSpOMyVQLlRXT19QSSx1PU0zK1AzKihuLTI0NTE1NDU1ZS0xKSxjPShvK3luLlNFQ09ORFNfUEVSX0RBWSouNSkleW4uU0VDT05EU19QRVJfREFZLGw9Zit1KmMscD1NYXRoLmNvcyhsKSxkPU1hdGguc2luKGwpO3JldHVybiBtKGUpPyhlWzBdPXAsZVsxXT0tZCxlWzJdPTAsZVszXT1kLGVbNF09cCxlWzVdPTAsZVs2XT0wLGVbN109MCxlWzhdPTEsZSk6bmV3IFoocCxkLDAsLWQscCwwLDAsMCwxKX07UmUuaWF1MjAwNlh5c0RhdGE9bmV3IFlBO1JlLmVhcnRoT3JpZW50YXRpb25QYXJhbWV0ZXJzPVZBLk5PTkU7Ymg9MzIuMTg0LEkzPTI0NTE1NDU7UmUucHJlbG9hZEljcmZGaXhlZD1mdW5jdGlvbih0KXtsZXQgZT10LnN0YXJ0LmRheU51bWJlcixuPXQuc3RhcnQuc2Vjb25kc09mRGF5K2JoLG89dC5zdG9wLmRheU51bWJlcixyPXQuc3RvcC5zZWNvbmRzT2ZEYXkrYmg7cmV0dXJuIFJlLmlhdTIwMDZYeXNEYXRhLnByZWxvYWQoZSxuLG8scil9O1JlLmNvbXB1dGVJY3JmVG9GaXhlZE1hdHJpeD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJkYXRlIGlzIHJlcXVpcmVkLiIpO20oZSl8fChlPW5ldyBaKTtsZXQgbj1SZS5jb21wdXRlRml4ZWRUb0ljcmZNYXRyaXgodCxlKTtpZihtKG4pKXJldHVybiBaLnRyYW5zcG9zZShuLGUpfTt2Mz0zMi4xODQsRjM9MjQ1MTU0NSxMcD1uZXcgeXAsTDM9bmV3IFosRDM9bmV3IFZuO1JlLmNvbXB1dGVNb29uRml4ZWRUb0ljcmZNYXRyaXg9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgRCgiZGF0ZSBpcyByZXF1aXJlZC4iKTttKGUpfHwoZT1uZXcgWik7bGV0IG49Vm4uYWRkU2Vjb25kcyh0LHYzLEQzKSxvPVZuLnRvdGFsRGF5cyhuKS1GMyxyPVAudG9SYWRpYW5zKDEyLjExMiktUC50b1JhZGlhbnMoLjA1Mjk5MikqbyxpPVAudG9SYWRpYW5zKDI0LjIyNCktUC50b1JhZGlhbnMoLjEwNTk4NCkqbyxzPVAudG9SYWRpYW5zKDIyNy42NDUpK1AudG9SYWRpYW5zKDEzLjAxMikqbyxmPVAudG9SYWRpYW5zKDI2MS4xMDUpK1AudG9SYWRpYW5zKDEzLjM0MDcxNikqbyx1PVAudG9SYWRpYW5zKDM1OCkrUC50b1JhZGlhbnMoLjk4NTYpKm87cmV0dXJuIExwLnBpdGNoPVAudG9SYWRpYW5zKDE4MCktUC50b1JhZGlhbnMoMy44NzgpKk1hdGguc2luKHIpLVAudG9SYWRpYW5zKC4xMikqTWF0aC5zaW4oaSkrUC50b1JhZGlhbnMoLjA3KSpNYXRoLnNpbihzKS1QLnRvUmFkaWFucyguMDE3KSpNYXRoLnNpbihmKSxMcC5yb2xsPVAudG9SYWRpYW5zKDY2LjUzLTkwKStQLnRvUmFkaWFucygxLjU0MykqTWF0aC5jb3MocikrUC50b1JhZGlhbnMoLjI0KSpNYXRoLmNvcyhpKS1QLnRvUmFkaWFucyguMDI4KSpNYXRoLmNvcyhzKStQLnRvUmFkaWFucyguMDA3KSpNYXRoLmNvcyhmKSxMcC5oZWFkaW5nPVAudG9SYWRpYW5zKDI0NC4zNzUtOTApK1AudG9SYWRpYW5zKDEzLjE3NjM1ODMxKSpvK1AudG9SYWRpYW5zKDMuNTU4KSpNYXRoLnNpbihyKStQLnRvUmFkaWFucyguMTIxKSpNYXRoLnNpbihpKS1QLnRvUmFkaWFucyguMDY0KSpNYXRoLnNpbihzKStQLnRvUmFkaWFucyguMDE2KSpNYXRoLnNpbihmKStQLnRvUmFkaWFucyguMDI1KSpNYXRoLnNpbih1KSxaLmZyb21IZWFkaW5nUGl0Y2hSb2xsKExwLEwzKX07UmUuY29tcHV0ZUljcmZUb01vb25GaXhlZE1hdHJpeD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJkYXRlIGlzIHJlcXVpcmVkLiIpO20oZSl8fChlPW5ldyBaKTtsZXQgbj1SZS5jb21wdXRlTW9vbkZpeGVkVG9JY3JmTWF0cml4KHQsZSk7aWYobShuKSlyZXR1cm4gWi50cmFuc3Bvc2UobixlKX07QjM9bmV3IHdwKDAsMCwwKSxVMz1uZXcgYWYoMCwwLDAsMCwwLDApLGdoPW5ldyBaLEFoPW5ldyBaO1JlLmNvbXB1dGVGaXhlZFRvSWNyZk1hdHJpeD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJkYXRlIGlzIHJlcXVpcmVkLiIpO20oZSl8fChlPW5ldyBaKTtsZXQgbj1SZS5lYXJ0aE9yaWVudGF0aW9uUGFyYW1ldGVycy5jb21wdXRlKHQsVTMpO2lmKCFtKG4pKXJldHVybjtsZXQgbz10LmRheU51bWJlcixyPXQuc2Vjb25kc09mRGF5K2JoLGk9UmUuaWF1MjAwNlh5c0RhdGEuY29tcHV0ZVh5c1JhZGlhbnMobyxyLEIzKTtpZighbShpKSlyZXR1cm47bGV0IHM9aS54K24ueFBvbGVPZmZzZXQsZj1pLnkrbi55UG9sZU9mZnNldCx1PTEvKDErTWF0aC5zcXJ0KDEtcypzLWYqZikpLGM9Z2g7Y1swXT0xLXUqcypzLGNbM109LXUqcypmLGNbNl09cyxjWzFdPS11KnMqZixjWzRdPTEtdSpmKmYsY1s3XT1mLGNbMl09LXMsY1s1XT0tZixjWzhdPTEtdSoocypzK2YqZik7bGV0IGw9Wi5mcm9tUm90YXRpb25aKC1pLnMsQWgpLHA9Wi5tdWx0aXBseShjLGwsZ2gpLGQ9dC5kYXlOdW1iZXIsaD10LnNlY29uZHNPZkRheS1Wbi5jb21wdXRlVGFpTWludXNVdGModCkrbi51dDFNaW51c1V0YyxfPWQtMjQ1MTU0NSxnPWgveW4uU0VDT05EU19QRVJfREFZLGI9Ljc3OTA1NzI3MzI2NCtnKy4wMDI3Mzc4MTE5MTEzNTQ0OCooXytnKTtiPWIlMSpQLlRXT19QSTtsZXQgdz1aLmZyb21Sb3RhdGlvblooYixBaCksTz1aLm11bHRpcGx5KHAsdyxnaCksRT1NYXRoLmNvcyhuLnhQb2xlV2FuZGVyKSxUPU1hdGguY29zKG4ueVBvbGVXYW5kZXIpLHg9TWF0aC5zaW4obi54UG9sZVdhbmRlciksTT1NYXRoLnNpbihuLnlQb2xlV2FuZGVyKSxOPW8tSTMrci95bi5TRUNPTkRTX1BFUl9EQVk7Ti89MzY1MjU7bGV0IEY9LTQ3ZS02Kk4qUC5SQURJQU5TX1BFUl9ERUdSRUUvMzYwMCxJPU1hdGguY29zKEYpLHY9TWF0aC5zaW4oRiksQj1BaDtyZXR1cm4gQlswXT1FKkksQlsxXT1FKnYsQlsyXT14LEJbM109LVQqditNKngqSSxCWzRdPVQqSStNKngqdixCWzVdPS1NKkUsQls2XT0tTSp2LVQqeCpJLEJbN109TSpJLVQqeCp2LEJbOF09VCpFLFoubXVsdGlwbHkoTyxCLGUpfTtrMz1uZXcgbWU7UmUucG9pbnRUb1dpbmRvd0Nvb3JkaW5hdGVzPWZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiBvPVJlLnBvaW50VG9HTFdpbmRvd0Nvb3JkaW5hdGVzKHQsZSxuLG8pLG8ueT0yKmVbNV0tby55LG99O1JlLnBvaW50VG9HTFdpbmRvd0Nvb3JkaW5hdGVzPWZ1bmN0aW9uKHQsZSxuLG8pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJtb2RlbFZpZXdQcm9qZWN0aW9uTWF0cml4IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJ2aWV3cG9ydFRyYW5zZm9ybWF0aW9uIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBEKCJwb2ludCBpcyByZXF1aXJlZC4iKTttKG8pfHwobz1uZXcgSik7bGV0IHI9azM7cmV0dXJuIHN0Lm11bHRpcGx5QnlWZWN0b3IodCxtZS5mcm9tRWxlbWVudHMobi54LG4ueSxuLnosMSxyKSxyKSxtZS5tdWx0aXBseUJ5U2NhbGFyKHIsMS9yLncsciksc3QubXVsdGlwbHlCeVZlY3RvcihlLHIsciksSi5mcm9tQ2FydGVzaWFuNChyLG8pfTtHMz1uZXcgYSxWMz1uZXcgYSx6Mz1uZXcgYTtSZS5yb3RhdGlvbk1hdHJpeEZyb21Qb3NpdGlvblZlbG9jaXR5PWZ1bmN0aW9uKHQsZSxuLG8pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJwb3NpdGlvbiBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgidmVsb2NpdHkgaXMgcmVxdWlyZWQuIik7bGV0IHI9KG4/P1kuZGVmYXVsdCkuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKHQsRzMpLGk9YS5jcm9zcyhlLHIsVjMpO2EuZXF1YWxzRXBzaWxvbihpLGEuWkVSTyxQLkVQU0lMT042KSYmKGk9YS5jbG9uZShhLlVOSVRfWCxpKSk7bGV0IHM9YS5jcm9zcyhpLGUsejMpO3JldHVybiBhLm5vcm1hbGl6ZShzLHMpLGEuY3Jvc3MoZSxzLGkpLGEubmVnYXRlKGksaSksYS5ub3JtYWxpemUoaSxpKSxtKG8pfHwobz1uZXcgWiksb1swXT1lLngsb1sxXT1lLnksb1syXT1lLnosb1szXT1pLngsb1s0XT1pLnksb1s1XT1pLnosb1s2XT1zLngsb1s3XT1zLnksb1s4XT1zLnosb307bWI9bmV3IHN0KDAsMCwxLDAsMSwwLDAsMCwwLDEsMCwwLDAsMCwwLDEpLGhiPW5ldyBjdCx3aD1uZXcgYSxqMz1uZXcgYSxIMz1uZXcgWixUaD1uZXcgc3QsX2I9bmV3IHN0O1JlLmJhc2lzVG8yRD1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoInByb2plY3Rpb24gaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoIm1hdHJpeCBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgRCgicmVzdWx0IGlzIHJlcXVpcmVkLiIpO2xldCBvPXN0LmdldFRyYW5zbGF0aW9uKGUsajMpLHI9dC5lbGxpcHNvaWQsaTtpZihhLmVxdWFscyhvLGEuWkVSTykpaT1hLmNsb25lKGEuWkVSTyx3aCk7ZWxzZXtsZXQgbD1yLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKG8saGIpO2k9dC5wcm9qZWN0KGwsd2gpLGEuZnJvbUVsZW1lbnRzKGkueixpLngsaS55LGkpfWxldCBzPVJlLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKG8scixUaCksZj1zdC5pbnZlcnNlVHJhbnNmb3JtYXRpb24ocyxfYiksdT1zdC5nZXRNYXRyaXgzKGUsSDMpLGM9c3QubXVsdGlwbHlCeU1hdHJpeDMoZix1LG4pO3JldHVybiBzdC5tdWx0aXBseShtYixjLG4pLHN0LnNldFRyYW5zbGF0aW9uKG4saSxuKSxufTtSZS5lbGxpcHNvaWRUbzJETW9kZWxNYXRyaXg9ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJwcm9qZWN0aW9uIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJjZW50ZXIgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoInJlc3VsdCBpcyByZXF1aXJlZC4iKTtsZXQgbz10LmVsbGlwc29pZCxyPVJlLmVhc3ROb3J0aFVwVG9GaXhlZEZyYW1lKGUsbyxUaCksaT1zdC5pbnZlcnNlVHJhbnNmb3JtYXRpb24ocixfYikscz1vLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGUsaGIpLGY9dC5wcm9qZWN0KHMsd2gpO2EuZnJvbUVsZW1lbnRzKGYueixmLngsZi55LGYpO2xldCB1PXN0LmZyb21UcmFuc2xhdGlvbihmLFRoKTtyZXR1cm4gc3QubXVsdGlwbHkobWIsaSxuKSxzdC5tdWx0aXBseSh1LG4sbiksbn07JG89UmV9KTtmdW5jdGlvbiBjZSh0LGUsbixvKXt0aGlzLndlc3Q9dD8/MCx0aGlzLnNvdXRoPWU/PzAsdGhpcy5lYXN0PW4/PzAsdGhpcy5ub3J0aD1vPz8wfXZhciBxMyxLMyxXMyxYMyxZMyxPaCwkMyxOdCxUbj0kKCgpPT57RHQoKTtJZSgpO1d0KCk7ZnQoKTskdCgpO0t0KCk7YXMoKTtrbigpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGNlLnByb3RvdHlwZSx7d2lkdGg6e2dldDpmdW5jdGlvbigpe3JldHVybiBjZS5jb21wdXRlV2lkdGgodGhpcyl9fSxoZWlnaHQ6e2dldDpmdW5jdGlvbigpe3JldHVybiBjZS5jb21wdXRlSGVpZ2h0KHRoaXMpfX19KTtjZS5wYWNrZWRMZW5ndGg9NDtjZS5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkseS5kZWZpbmVkKCJhcnJheSIsZSksbj1uPz8wLGVbbisrXT10Lndlc3QsZVtuKytdPXQuc291dGgsZVtuKytdPXQuZWFzdCxlW25dPXQubm9ydGgsZX07Y2UudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS5kZWZpbmVkKCJhcnJheSIsdCksZT1lPz8wLG0obil8fChuPW5ldyBjZSksbi53ZXN0PXRbZSsrXSxuLnNvdXRoPXRbZSsrXSxuLmVhc3Q9dFtlKytdLG4ubm9ydGg9dFtlXSxufTtjZS5jb21wdXRlV2lkdGg9ZnVuY3Rpb24odCl7eS50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpO2xldCBlPXQuZWFzdCxuPXQud2VzdDtyZXR1cm4gZTxuJiYoZSs9UC5UV09fUEkpLGUtbn07Y2UuY29tcHV0ZUhlaWdodD1mdW5jdGlvbih0KXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpLHQubm9ydGgtdC5zb3V0aH07Y2UuZnJvbURlZ3JlZXM9ZnVuY3Rpb24odCxlLG4sbyxyKXtyZXR1cm4gdD1QLnRvUmFkaWFucyh0Pz8wKSxlPVAudG9SYWRpYW5zKGU/PzApLG49UC50b1JhZGlhbnMobj8/MCksbz1QLnRvUmFkaWFucyhvPz8wKSxtKHIpPyhyLndlc3Q9dCxyLnNvdXRoPWUsci5lYXN0PW4sci5ub3J0aD1vLHIpOm5ldyBjZSh0LGUsbixvKX07Y2UuZnJvbVJhZGlhbnM9ZnVuY3Rpb24odCxlLG4sbyxyKXtyZXR1cm4gbShyKT8oci53ZXN0PXQ/PzAsci5zb3V0aD1lPz8wLHIuZWFzdD1uPz8wLHIubm9ydGg9bz8/MCxyKTpuZXcgY2UodCxlLG4sbyl9O2NlLmZyb21DYXJ0b2dyYXBoaWNBcnJheT1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgiY2FydG9ncmFwaGljcyIsdCk7bGV0IG49TnVtYmVyLk1BWF9WQUxVRSxvPS1OdW1iZXIuTUFYX1ZBTFVFLHI9TnVtYmVyLk1BWF9WQUxVRSxpPS1OdW1iZXIuTUFYX1ZBTFVFLHM9TnVtYmVyLk1BWF9WQUxVRSxmPS1OdW1iZXIuTUFYX1ZBTFVFO2ZvcihsZXQgdT0wLGM9dC5sZW5ndGg7dTxjO3UrKyl7bGV0IGw9dFt1XTtuPU1hdGgubWluKG4sbC5sb25naXR1ZGUpLG89TWF0aC5tYXgobyxsLmxvbmdpdHVkZSkscz1NYXRoLm1pbihzLGwubGF0aXR1ZGUpLGY9TWF0aC5tYXgoZixsLmxhdGl0dWRlKTtsZXQgcD1sLmxvbmdpdHVkZT49MD9sLmxvbmdpdHVkZTpsLmxvbmdpdHVkZStQLlRXT19QSTtyPU1hdGgubWluKHIscCksaT1NYXRoLm1heChpLHApfXJldHVybiBvLW4+aS1yJiYobj1yLG89aSxvPlAuUEkmJihvPW8tUC5UV09fUEkpLG4+UC5QSSYmKG49bi1QLlRXT19QSSkpLG0oZSk/KGUud2VzdD1uLGUuc291dGg9cyxlLmVhc3Q9byxlLm5vcnRoPWYsZSk6bmV3IGNlKG4scyxvLGYpfTtjZS5mcm9tQ2FydGVzaWFuQXJyYXk9ZnVuY3Rpb24odCxlLG4pe3kuZGVmaW5lZCgiY2FydGVzaWFucyIsdCksZT1lPz9ZLmRlZmF1bHQ7bGV0IG89TnVtYmVyLk1BWF9WQUxVRSxyPS1OdW1iZXIuTUFYX1ZBTFVFLGk9TnVtYmVyLk1BWF9WQUxVRSxzPS1OdW1iZXIuTUFYX1ZBTFVFLGY9TnVtYmVyLk1BWF9WQUxVRSx1PS1OdW1iZXIuTUFYX1ZBTFVFO2ZvcihsZXQgYz0wLGw9dC5sZW5ndGg7YzxsO2MrKyl7bGV0IHA9ZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyh0W2NdKTtvPU1hdGgubWluKG8scC5sb25naXR1ZGUpLHI9TWF0aC5tYXgocixwLmxvbmdpdHVkZSksZj1NYXRoLm1pbihmLHAubGF0aXR1ZGUpLHU9TWF0aC5tYXgodSxwLmxhdGl0dWRlKTtsZXQgZD1wLmxvbmdpdHVkZT49MD9wLmxvbmdpdHVkZTpwLmxvbmdpdHVkZStQLlRXT19QSTtpPU1hdGgubWluKGksZCkscz1NYXRoLm1heChzLGQpfXJldHVybiByLW8+cy1pJiYobz1pLHI9cyxyPlAuUEkmJihyPXItUC5UV09fUEkpLG8+UC5QSSYmKG89by1QLlRXT19QSSkpLG0obik/KG4ud2VzdD1vLG4uc291dGg9ZixuLmVhc3Q9cixuLm5vcnRoPXUsbik6bmV3IGNlKG8sZixyLHUpfTtxMz1uZXcgYSxLMz1uZXcgYSxXMz1uZXcgYSxYMz1uZXcgYSxZMz1uZXcgYSxPaD1uZXcgQXJyYXkoNSk7Zm9yKGxldCB0PTA7dDxPaC5sZW5ndGg7Kyt0KU9oW3RdPW5ldyBhO2NlLmZyb21Cb3VuZGluZ1NwaGVyZT1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJib3VuZGluZ1NwaGVyZSIsdCk7bGV0IG89dC5jZW50ZXIscj10LnJhZGl1cztpZihtKGUpfHwoZT1ZLmRlZmF1bHQpLG0obil8fChuPW5ldyBjZSksYS5lcXVhbHMobyxhLlpFUk8pKXJldHVybiBjZS5jbG9uZShjZS5NQVhfVkFMVUUsbiksbjtsZXQgaT0kby5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShvLGUscTMpLHM9c3QubXVsdGlwbHlCeVBvaW50QXNWZWN0b3IoaSxhLlVOSVRfWCxLMyk7YS5ub3JtYWxpemUocyxzKTtsZXQgZj1zdC5tdWx0aXBseUJ5UG9pbnRBc1ZlY3RvcihpLGEuVU5JVF9ZLFczKTthLm5vcm1hbGl6ZShmLGYpLGEubXVsdGlwbHlCeVNjYWxhcihmLHIsZiksYS5tdWx0aXBseUJ5U2NhbGFyKHMscixzKTtsZXQgdT1hLm5lZ2F0ZShmLFkzKSxjPWEubmVnYXRlKHMsWDMpLGw9T2gscD1sWzBdO3JldHVybiBhLmFkZChvLGYscCkscD1sWzFdLGEuYWRkKG8sYyxwKSxwPWxbMl0sYS5hZGQobyx1LHApLHA9bFszXSxhLmFkZChvLHMscCksbFs0XT1vLGNlLmZyb21DYXJ0ZXNpYW5BcnJheShsLGUsbil9O2NlLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZS53ZXN0PXQud2VzdCxlLnNvdXRoPXQuc291dGgsZS5lYXN0PXQuZWFzdCxlLm5vcnRoPXQubm9ydGgsZSk6bmV3IGNlKHQud2VzdCx0LnNvdXRoLHQuZWFzdCx0Lm5vcnRoKX07Y2UuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG49bj8/MCx0PT09ZXx8bSh0KSYmbShlKSYmTWF0aC5hYnModC53ZXN0LWUud2VzdCk8PW4mJk1hdGguYWJzKHQuc291dGgtZS5zb3V0aCk8PW4mJk1hdGguYWJzKHQuZWFzdC1lLmVhc3QpPD1uJiZNYXRoLmFicyh0Lm5vcnRoLWUubm9ydGgpPD1ufTtjZS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIGNlLmNsb25lKHRoaXMsdCl9O2NlLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIGNlLmVxdWFscyh0aGlzLHQpfTtjZS5lcXVhbHM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdD09PWV8fG0odCkmJm0oZSkmJnQud2VzdD09PWUud2VzdCYmdC5zb3V0aD09PWUuc291dGgmJnQuZWFzdD09PWUuZWFzdCYmdC5ub3J0aD09PWUubm9ydGh9O2NlLnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGNlLmVxdWFsc0Vwc2lsb24odGhpcyx0LGUpfTtjZS5fdmFsaWRhdGU9ZnVuY3Rpb24odCl7eS50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpO2xldCBlPXQubm9ydGg7eS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIm5vcnRoIixlLC1QLlBJX09WRVJfVFdPKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygibm9ydGgiLGUsUC5QSV9PVkVSX1RXTyk7bGV0IG49dC5zb3V0aDt5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygic291dGgiLG4sLVAuUElfT1ZFUl9UV08pLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJzb3V0aCIsbixQLlBJX09WRVJfVFdPKTtsZXQgbz10Lndlc3Q7eS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIndlc3QiLG8sLU1hdGguUEkpLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJ3ZXN0IixvLE1hdGguUEkpO2xldCByPXQuZWFzdDt5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiZWFzdCIsciwtTWF0aC5QSSkseS50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoImVhc3QiLHIsTWF0aC5QSSl9O2NlLnNvdXRod2VzdD1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCksbShlKT8oZS5sb25naXR1ZGU9dC53ZXN0LGUubGF0aXR1ZGU9dC5zb3V0aCxlLmhlaWdodD0wLGUpOm5ldyBjdCh0Lndlc3QsdC5zb3V0aCl9O2NlLm5vcnRod2VzdD1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCksbShlKT8oZS5sb25naXR1ZGU9dC53ZXN0LGUubGF0aXR1ZGU9dC5ub3J0aCxlLmhlaWdodD0wLGUpOm5ldyBjdCh0Lndlc3QsdC5ub3J0aCl9O2NlLm5vcnRoZWFzdD1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCksbShlKT8oZS5sb25naXR1ZGU9dC5lYXN0LGUubGF0aXR1ZGU9dC5ub3J0aCxlLmhlaWdodD0wLGUpOm5ldyBjdCh0LmVhc3QsdC5ub3J0aCl9O2NlLnNvdXRoZWFzdD1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCksbShlKT8oZS5sb25naXR1ZGU9dC5lYXN0LGUubGF0aXR1ZGU9dC5zb3V0aCxlLmhlaWdodD0wLGUpOm5ldyBjdCh0LmVhc3QsdC5zb3V0aCl9O2NlLmNlbnRlcj1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm9iamVjdCgicmVjdGFuZ2xlIix0KTtsZXQgbj10LmVhc3Qsbz10Lndlc3Q7bjxvJiYobis9UC5UV09fUEkpO2xldCByPVAubmVnYXRpdmVQaVRvUGkoKG8rbikqLjUpLGk9KHQuc291dGgrdC5ub3J0aCkqLjU7cmV0dXJuIG0oZSk/KGUubG9uZ2l0dWRlPXIsZS5sYXRpdHVkZT1pLGUuaGVpZ2h0PTAsZSk6bmV3IGN0KHIsaSl9O2NlLmludGVyc2VjdGlvbj1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpLHkudHlwZU9mLm9iamVjdCgib3RoZXJSZWN0YW5nbGUiLGUpO2xldCBvPXQuZWFzdCxyPXQud2VzdCxpPWUuZWFzdCxzPWUud2VzdDtvPHImJmk+MD9vKz1QLlRXT19QSTppPHMmJm8+MCYmKGkrPVAuVFdPX1BJKSxvPHImJnM8MD9zKz1QLlRXT19QSTppPHMmJnI8MCYmKHIrPVAuVFdPX1BJKTtsZXQgZj1QLm5lZ2F0aXZlUGlUb1BpKE1hdGgubWF4KHIscykpLHU9UC5uZWdhdGl2ZVBpVG9QaShNYXRoLm1pbihvLGkpKTtpZigodC53ZXN0PHQuZWFzdHx8ZS53ZXN0PGUuZWFzdCkmJnU8PWYpcmV0dXJuO2xldCBjPU1hdGgubWF4KHQuc291dGgsZS5zb3V0aCksbD1NYXRoLm1pbih0Lm5vcnRoLGUubm9ydGgpO2lmKCEoYz49bCkpcmV0dXJuIG0obik/KG4ud2VzdD1mLG4uc291dGg9YyxuLmVhc3Q9dSxuLm5vcnRoPWwsbik6bmV3IGNlKGYsYyx1LGwpfTtjZS5zaW1wbGVJbnRlcnNlY3Rpb249ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgicmVjdGFuZ2xlIix0KSx5LnR5cGVPZi5vYmplY3QoIm90aGVyUmVjdGFuZ2xlIixlKTtsZXQgbz1NYXRoLm1heCh0Lndlc3QsZS53ZXN0KSxyPU1hdGgubWF4KHQuc291dGgsZS5zb3V0aCksaT1NYXRoLm1pbih0LmVhc3QsZS5lYXN0KSxzPU1hdGgubWluKHQubm9ydGgsZS5ub3J0aCk7aWYoIShyPj1zfHxvPj1pKSlyZXR1cm4gbShuKT8obi53ZXN0PW8sbi5zb3V0aD1yLG4uZWFzdD1pLG4ubm9ydGg9cyxuKTpuZXcgY2UobyxyLGkscyl9O2NlLnVuaW9uPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCkseS50eXBlT2Yub2JqZWN0KCJvdGhlclJlY3RhbmdsZSIsZSksbShuKXx8KG49bmV3IGNlKTtsZXQgbz10LmVhc3Qscj10Lndlc3QsaT1lLmVhc3Qscz1lLndlc3Q7bzxyJiZpPjA/bys9UC5UV09fUEk6aTxzJiZvPjAmJihpKz1QLlRXT19QSSksbzxyJiZzPDA/cys9UC5UV09fUEk6aTxzJiZyPDAmJihyKz1QLlRXT19QSSk7bGV0IGY9UC5uZWdhdGl2ZVBpVG9QaShNYXRoLm1pbihyLHMpKSx1PVAubmVnYXRpdmVQaVRvUGkoTWF0aC5tYXgobyxpKSk7cmV0dXJuIG4ud2VzdD1mLG4uc291dGg9TWF0aC5taW4odC5zb3V0aCxlLnNvdXRoKSxuLmVhc3Q9dSxuLm5vcnRoPU1hdGgubWF4KHQubm9ydGgsZS5ub3J0aCksbn07Y2UuZXhwYW5kPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpLHkudHlwZU9mLm9iamVjdCgiY2FydG9ncmFwaGljIixlKSxtKG4pfHwobj1uZXcgY2UpLG4ud2VzdD1NYXRoLm1pbih0Lndlc3QsZS5sb25naXR1ZGUpLG4uc291dGg9TWF0aC5taW4odC5zb3V0aCxlLmxhdGl0dWRlKSxuLmVhc3Q9TWF0aC5tYXgodC5lYXN0LGUubG9uZ2l0dWRlKSxuLm5vcnRoPU1hdGgubWF4KHQubm9ydGgsZS5sYXRpdHVkZSksbn07Y2UuY29udGFpbnM9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCkseS50eXBlT2Yub2JqZWN0KCJjYXJ0b2dyYXBoaWMiLGUpO2xldCBuPWUubG9uZ2l0dWRlLG89ZS5sYXRpdHVkZSxyPXQud2VzdCxpPXQuZWFzdDtyZXR1cm4gaTxyJiYoaSs9UC5UV09fUEksbjwwJiYobis9UC5UV09fUEkpKSwobj5yfHxQLmVxdWFsc0Vwc2lsb24obixyLFAuRVBTSUxPTjE0KSkmJihuPGl8fFAuZXF1YWxzRXBzaWxvbihuLGksUC5FUFNJTE9OMTQpKSYmbz49dC5zb3V0aCYmbzw9dC5ub3J0aH07JDM9bmV3IGN0O2NlLnN1YnNhbXBsZT1mdW5jdGlvbih0LGUsbixvKXt5LnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCksZT1lPz9ZLmRlZmF1bHQsbj1uPz8wLG0obyl8fChvPVtdKTtsZXQgcj0wLGk9dC5ub3J0aCxzPXQuc291dGgsZj10LmVhc3QsdT10Lndlc3QsYz0kMztjLmhlaWdodD1uLGMubG9uZ2l0dWRlPXUsYy5sYXRpdHVkZT1pLG9bcl09ZS5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihjLG9bcl0pLHIrKyxjLmxvbmdpdHVkZT1mLG9bcl09ZS5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihjLG9bcl0pLHIrKyxjLmxhdGl0dWRlPXMsb1tyXT1lLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGMsb1tyXSkscisrLGMubG9uZ2l0dWRlPXUsb1tyXT1lLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGMsb1tyXSkscisrLGk8MD9jLmxhdGl0dWRlPWk6cz4wP2MubGF0aXR1ZGU9czpjLmxhdGl0dWRlPTA7Zm9yKGxldCBsPTE7bDw4OysrbCljLmxvbmdpdHVkZT0tTWF0aC5QSStsKlAuUElfT1ZFUl9UV08sY2UuY29udGFpbnModCxjKSYmKG9bcl09ZS5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihjLG9bcl0pLHIrKyk7cmV0dXJuIGMubGF0aXR1ZGU9PT0wJiYoYy5sb25naXR1ZGU9dSxvW3JdPWUuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oYyxvW3JdKSxyKyssYy5sb25naXR1ZGU9ZixvW3JdPWUuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oYyxvW3JdKSxyKyspLG8ubGVuZ3RoPXIsb307Y2Uuc3Vic2VjdGlvbj1mdW5jdGlvbih0LGUsbixvLHIsaSl7aWYoeS50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJ3ZXN0TGVycCIsZSwwKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygid2VzdExlcnAiLGUsMSkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoInNvdXRoTGVycCIsbiwwKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygic291dGhMZXJwIixuLDEpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJlYXN0TGVycCIsbywwKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiZWFzdExlcnAiLG8sMSkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIm5vcnRoTGVycCIsciwwKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygibm9ydGhMZXJwIixyLDEpLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJ3ZXN0TGVycCIsZSxvKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygic291dGhMZXJwIixuLHIpLG0oaSl8fChpPW5ldyBjZSksdC53ZXN0PD10LmVhc3Qpe2xldCBmPXQuZWFzdC10Lndlc3Q7aS53ZXN0PXQud2VzdCtlKmYsaS5lYXN0PXQud2VzdCtvKmZ9ZWxzZXtsZXQgZj1QLlRXT19QSSt0LmVhc3QtdC53ZXN0O2kud2VzdD1QLm5lZ2F0aXZlUGlUb1BpKHQud2VzdCtlKmYpLGkuZWFzdD1QLm5lZ2F0aXZlUGlUb1BpKHQud2VzdCtvKmYpfWxldCBzPXQubm9ydGgtdC5zb3V0aDtyZXR1cm4gaS5zb3V0aD10LnNvdXRoK24qcyxpLm5vcnRoPXQuc291dGgrcipzLGU9PT0xJiYoaS53ZXN0PXQuZWFzdCksbz09PTEmJihpLmVhc3Q9dC5lYXN0KSxuPT09MSYmKGkuc291dGg9dC5ub3J0aCkscj09PTEmJihpLm5vcnRoPXQubm9ydGgpLGl9O2NlLk1BWF9WQUxVRT1PYmplY3QuZnJlZXplKG5ldyBjZSgtTWF0aC5QSSwtUC5QSV9PVkVSX1RXTyxNYXRoLlBJLFAuUElfT1ZFUl9UV08pKTtOdD1jZX0pO2Z1bmN0aW9uIGVlKHQsZSl7dGhpcy5jZW50ZXI9YS5jbG9uZSh0Pz9hLlpFUk8pLHRoaXMucmFkaXVzPWU/PzB9dmFyIFNoLHhoLENoLFBoLE1oLE5oLEloLGFvLHZoLEZoLExoLERoLFozLHliLFEzLEozLEVoLFJoLHRQLGVQLG5QLG9QLHJQLGlQLHNQLGNQLGFQLGZQLHVQLGxQLGdiLHBQLGRQLG1QLGhQLF9QLGJiLEFiLEF0LHZlPSQoKCk9PntEdCgpO0llKCk7V3QoKTtmdCgpOyR0KCk7eGkoKTtWcygpO1dsKCk7S3QoKTtVbigpO2tuKCk7VG4oKTtTaD1uZXcgYSx4aD1uZXcgYSxDaD1uZXcgYSxQaD1uZXcgYSxNaD1uZXcgYSxOaD1uZXcgYSxJaD1uZXcgYSxhbz1uZXcgYSx2aD1uZXcgYSxGaD1uZXcgYSxMaD1uZXcgYSxEaD1uZXcgYSxaMz00LzMqUC5QSTtlZS5mcm9tUG9pbnRzPWZ1bmN0aW9uKHQsZSl7aWYobShlKXx8KGU9bmV3IGVlKSwhbSh0KXx8dC5sZW5ndGg9PT0wKXJldHVybiBlLmNlbnRlcj1hLmNsb25lKGEuWkVSTyxlLmNlbnRlciksZS5yYWRpdXM9MCxlO2xldCBuPWEuY2xvbmUodFswXSxJaCksbz1hLmNsb25lKG4sU2gpLHI9YS5jbG9uZShuLHhoKSxpPWEuY2xvbmUobixDaCkscz1hLmNsb25lKG4sUGgpLGY9YS5jbG9uZShuLE1oKSx1PWEuY2xvbmUobixOaCksYz10Lmxlbmd0aCxsO2ZvcihsPTE7bDxjO2wrKyl7YS5jbG9uZSh0W2xdLG4pO2xldCBGPW4ueCxJPW4ueSx2PW4uejtGPG8ueCYmYS5jbG9uZShuLG8pLEY+cy54JiZhLmNsb25lKG4scyksSTxyLnkmJmEuY2xvbmUobixyKSxJPmYueSYmYS5jbG9uZShuLGYpLHY8aS56JiZhLmNsb25lKG4saSksdj51LnomJmEuY2xvbmUobix1KX1sZXQgcD1hLm1hZ25pdHVkZVNxdWFyZWQoYS5zdWJ0cmFjdChzLG8sYW8pKSxkPWEubWFnbml0dWRlU3F1YXJlZChhLnN1YnRyYWN0KGYscixhbykpLGg9YS5tYWduaXR1ZGVTcXVhcmVkKGEuc3VidHJhY3QodSxpLGFvKSksXz1vLGc9cyxiPXA7ZD5iJiYoYj1kLF89cixnPWYpLGg+YiYmKGI9aCxfPWksZz11KTtsZXQgdz12aDt3Lng9KF8ueCtnLngpKi41LHcueT0oXy55K2cueSkqLjUsdy56PShfLnorZy56KSouNTtsZXQgTz1hLm1hZ25pdHVkZVNxdWFyZWQoYS5zdWJ0cmFjdChnLHcsYW8pKSxFPU1hdGguc3FydChPKSxUPUZoO1QueD1vLngsVC55PXIueSxULno9aS56O2xldCB4PUxoO3gueD1zLngseC55PWYueSx4Lno9dS56O2xldCBNPWEubWlkcG9pbnQoVCx4LERoKSxOPTA7Zm9yKGw9MDtsPGM7bCsrKXthLmNsb25lKHRbbF0sbik7bGV0IEY9YS5tYWduaXR1ZGUoYS5zdWJ0cmFjdChuLE0sYW8pKTtGPk4mJihOPUYpO2xldCBJPWEubWFnbml0dWRlU3F1YXJlZChhLnN1YnRyYWN0KG4sdyxhbykpO2lmKEk+Tyl7bGV0IHY9TWF0aC5zcXJ0KEkpO0U9KEUrdikqLjUsTz1FKkU7bGV0IEI9di1FO3cueD0oRSp3LngrQipuLngpL3Ysdy55PShFKncueStCKm4ueSkvdix3Lno9KEUqdy56K0Iqbi56KS92fX1yZXR1cm4gRTxOPyhhLmNsb25lKHcsZS5jZW50ZXIpLGUucmFkaXVzPUUpOihhLmNsb25lKE0sZS5jZW50ZXIpLGUucmFkaXVzPU4pLGV9O3liPW5ldyBlbyxRMz1uZXcgYSxKMz1uZXcgYSxFaD1uZXcgY3QsUmg9bmV3IGN0O2VlLmZyb21SZWN0YW5nbGUyRD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGVlLmZyb21SZWN0YW5nbGVXaXRoSGVpZ2h0czJEKHQsZSwwLDAsbil9O2VlLmZyb21SZWN0YW5nbGVXaXRoSGVpZ2h0czJEPWZ1bmN0aW9uKHQsZSxuLG8scil7aWYobShyKXx8KHI9bmV3IGVlKSwhbSh0KSlyZXR1cm4gci5jZW50ZXI9YS5jbG9uZShhLlpFUk8sci5jZW50ZXIpLHIucmFkaXVzPTAscjt5Yi5fZWxsaXBzb2lkPVkuZGVmYXVsdCxlPWU/P3liLE50LnNvdXRod2VzdCh0LEVoKSxFaC5oZWlnaHQ9bixOdC5ub3J0aGVhc3QodCxSaCksUmguaGVpZ2h0PW87bGV0IGk9ZS5wcm9qZWN0KEVoLFEzKSxzPWUucHJvamVjdChSaCxKMyksZj1zLngtaS54LHU9cy55LWkueSxjPXMuei1pLno7ci5yYWRpdXM9TWF0aC5zcXJ0KGYqZit1KnUrYypjKSouNTtsZXQgbD1yLmNlbnRlcjtyZXR1cm4gbC54PWkueCtmKi41LGwueT1pLnkrdSouNSxsLno9aS56K2MqLjUscn07dFA9W107ZWUuZnJvbVJlY3RhbmdsZTNEPWZ1bmN0aW9uKHQsZSxuLG8pe2lmKGU9ZT8/WS5kZWZhdWx0LG49bj8/MCxtKG8pfHwobz1uZXcgZWUpLCFtKHQpKXJldHVybiBvLmNlbnRlcj1hLmNsb25lKGEuWkVSTyxvLmNlbnRlciksby5yYWRpdXM9MCxvO2xldCByPU50LnN1YnNhbXBsZSh0LGUsbix0UCk7cmV0dXJuIGVlLmZyb21Qb2ludHMocixvKX07ZWUuZnJvbVZlcnRpY2VzPWZ1bmN0aW9uKHQsZSxuLG8pe2lmKG0obyl8fChvPW5ldyBlZSksIW0odCl8fHQubGVuZ3RoPT09MClyZXR1cm4gby5jZW50ZXI9YS5jbG9uZShhLlpFUk8sby5jZW50ZXIpLG8ucmFkaXVzPTAsbztlPWU/P2EuWkVSTyxuPW4/PzMseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoInN0cmlkZSIsbiwzKTtsZXQgcj1JaDtyLng9dFswXStlLngsci55PXRbMV0rZS55LHIuej10WzJdK2UuejtsZXQgaT1hLmNsb25lKHIsU2gpLHM9YS5jbG9uZShyLHhoKSxmPWEuY2xvbmUocixDaCksdT1hLmNsb25lKHIsUGgpLGM9YS5jbG9uZShyLE1oKSxsPWEuY2xvbmUocixOaCkscD10Lmxlbmd0aCxkO2ZvcihkPTA7ZDxwO2QrPW4pe2xldCB2PXRbZF0rZS54LEI9dFtkKzFdK2UueSxBPXRbZCsyXStlLno7ci54PXYsci55PUIsci56PUEsdjxpLngmJmEuY2xvbmUocixpKSx2PnUueCYmYS5jbG9uZShyLHUpLEI8cy55JiZhLmNsb25lKHIscyksQj5jLnkmJmEuY2xvbmUocixjKSxBPGYueiYmYS5jbG9uZShyLGYpLEE+bC56JiZhLmNsb25lKHIsbCl9bGV0IGg9YS5tYWduaXR1ZGVTcXVhcmVkKGEuc3VidHJhY3QodSxpLGFvKSksXz1hLm1hZ25pdHVkZVNxdWFyZWQoYS5zdWJ0cmFjdChjLHMsYW8pKSxnPWEubWFnbml0dWRlU3F1YXJlZChhLnN1YnRyYWN0KGwsZixhbykpLGI9aSx3PXUsTz1oO18+TyYmKE89XyxiPXMsdz1jKSxnPk8mJihPPWcsYj1mLHc9bCk7bGV0IEU9dmg7RS54PShiLngrdy54KSouNSxFLnk9KGIueSt3LnkpKi41LEUuej0oYi56K3cueikqLjU7bGV0IFQ9YS5tYWduaXR1ZGVTcXVhcmVkKGEuc3VidHJhY3QodyxFLGFvKSkseD1NYXRoLnNxcnQoVCksTT1GaDtNLng9aS54LE0ueT1zLnksTS56PWYuejtsZXQgTj1MaDtOLng9dS54LE4ueT1jLnksTi56PWwuejtsZXQgRj1hLm1pZHBvaW50KE0sTixEaCksST0wO2ZvcihkPTA7ZDxwO2QrPW4pe3IueD10W2RdK2UueCxyLnk9dFtkKzFdK2UueSxyLno9dFtkKzJdK2UuejtsZXQgdj1hLm1hZ25pdHVkZShhLnN1YnRyYWN0KHIsRixhbykpO3Y+SSYmKEk9dik7bGV0IEI9YS5tYWduaXR1ZGVTcXVhcmVkKGEuc3VidHJhY3QocixFLGFvKSk7aWYoQj5UKXtsZXQgQT1NYXRoLnNxcnQoQik7eD0oeCtBKSouNSxUPXgqeDtsZXQgUz1BLXg7RS54PSh4KkUueCtTKnIueCkvQSxFLnk9KHgqRS55K1Mqci55KS9BLEUuej0oeCpFLnorUypyLnopL0F9fXJldHVybiB4PEk/KGEuY2xvbmUoRSxvLmNlbnRlciksby5yYWRpdXM9eCk6KGEuY2xvbmUoRixvLmNlbnRlciksby5yYWRpdXM9SSksb307ZWUuZnJvbUVuY29kZWRDYXJ0ZXNpYW5WZXJ0aWNlcz1mdW5jdGlvbih0LGUsbil7aWYobShuKXx8KG49bmV3IGVlKSwhbSh0KXx8IW0oZSl8fHQubGVuZ3RoIT09ZS5sZW5ndGh8fHQubGVuZ3RoPT09MClyZXR1cm4gbi5jZW50ZXI9YS5jbG9uZShhLlpFUk8sbi5jZW50ZXIpLG4ucmFkaXVzPTAsbjtsZXQgbz1JaDtvLng9dFswXStlWzBdLG8ueT10WzFdK2VbMV0sby56PXRbMl0rZVsyXTtsZXQgcj1hLmNsb25lKG8sU2gpLGk9YS5jbG9uZShvLHhoKSxzPWEuY2xvbmUobyxDaCksZj1hLmNsb25lKG8sUGgpLHU9YS5jbG9uZShvLE1oKSxjPWEuY2xvbmUobyxOaCksbD10Lmxlbmd0aCxwO2ZvcihwPTA7cDxsO3ArPTMpe2xldCBJPXRbcF0rZVtwXSx2PXRbcCsxXStlW3ArMV0sQj10W3ArMl0rZVtwKzJdO28ueD1JLG8ueT12LG8uej1CLEk8ci54JiZhLmNsb25lKG8sciksST5mLngmJmEuY2xvbmUobyxmKSx2PGkueSYmYS5jbG9uZShvLGkpLHY+dS55JiZhLmNsb25lKG8sdSksQjxzLnomJmEuY2xvbmUobyxzKSxCPmMueiYmYS5jbG9uZShvLGMpfWxldCBkPWEubWFnbml0dWRlU3F1YXJlZChhLnN1YnRyYWN0KGYscixhbykpLGg9YS5tYWduaXR1ZGVTcXVhcmVkKGEuc3VidHJhY3QodSxpLGFvKSksXz1hLm1hZ25pdHVkZVNxdWFyZWQoYS5zdWJ0cmFjdChjLHMsYW8pKSxnPXIsYj1mLHc9ZDtoPncmJih3PWgsZz1pLGI9dSksXz53JiYodz1fLGc9cyxiPWMpO2xldCBPPXZoO08ueD0oZy54K2IueCkqLjUsTy55PShnLnkrYi55KSouNSxPLno9KGcueitiLnopKi41O2xldCBFPWEubWFnbml0dWRlU3F1YXJlZChhLnN1YnRyYWN0KGIsTyxhbykpLFQ9TWF0aC5zcXJ0KEUpLHg9Rmg7eC54PXIueCx4Lnk9aS55LHguej1zLno7bGV0IE09TGg7TS54PWYueCxNLnk9dS55LE0uej1jLno7bGV0IE49YS5taWRwb2ludCh4LE0sRGgpLEY9MDtmb3IocD0wO3A8bDtwKz0zKXtvLng9dFtwXStlW3BdLG8ueT10W3ArMV0rZVtwKzFdLG8uej10W3ArMl0rZVtwKzJdO2xldCBJPWEubWFnbml0dWRlKGEuc3VidHJhY3QobyxOLGFvKSk7ST5GJiYoRj1JKTtsZXQgdj1hLm1hZ25pdHVkZVNxdWFyZWQoYS5zdWJ0cmFjdChvLE8sYW8pKTtpZih2PkUpe2xldCBCPU1hdGguc3FydCh2KTtUPShUK0IpKi41LEU9VCpUO2xldCBBPUItVDtPLng9KFQqTy54K0Eqby54KS9CLE8ueT0oVCpPLnkrQSpvLnkpL0IsTy56PShUKk8ueitBKm8ueikvQn19cmV0dXJuIFQ8Rj8oYS5jbG9uZShPLG4uY2VudGVyKSxuLnJhZGl1cz1UKTooYS5jbG9uZShOLG4uY2VudGVyKSxuLnJhZGl1cz1GKSxufTtlZS5mcm9tQ29ybmVyUG9pbnRzPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoImNvcm5lciIsdCkseS50eXBlT2Yub2JqZWN0KCJvcHBvc2l0ZUNvcm5lciIsZSksbShuKXx8KG49bmV3IGVlKTtsZXQgbz1hLm1pZHBvaW50KHQsZSxuLmNlbnRlcik7cmV0dXJuIG4ucmFkaXVzPWEuZGlzdGFuY2UobyxlKSxufTtlZS5mcm9tRWxsaXBzb2lkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiZWxsaXBzb2lkIix0KSxtKGUpfHwoZT1uZXcgZWUpLGEuY2xvbmUoYS5aRVJPLGUuY2VudGVyKSxlLnJhZGl1cz10Lm1heGltdW1SYWRpdXMsZX07ZVA9bmV3IGE7ZWUuZnJvbUJvdW5kaW5nU3BoZXJlcz1mdW5jdGlvbih0LGUpe2lmKG0oZSl8fChlPW5ldyBlZSksIW0odCl8fHQubGVuZ3RoPT09MClyZXR1cm4gZS5jZW50ZXI9YS5jbG9uZShhLlpFUk8sZS5jZW50ZXIpLGUucmFkaXVzPTAsZTtsZXQgbj10Lmxlbmd0aDtpZihuPT09MSlyZXR1cm4gZWUuY2xvbmUodFswXSxlKTtpZihuPT09MilyZXR1cm4gZWUudW5pb24odFswXSx0WzFdLGUpO2xldCBvPVtdLHI7Zm9yKHI9MDtyPG47cisrKW8ucHVzaCh0W3JdLmNlbnRlcik7ZT1lZS5mcm9tUG9pbnRzKG8sZSk7bGV0IGk9ZS5jZW50ZXIscz1lLnJhZGl1cztmb3Iocj0wO3I8bjtyKyspe2xldCBmPXRbcl07cz1NYXRoLm1heChzLGEuZGlzdGFuY2UoaSxmLmNlbnRlcixlUCkrZi5yYWRpdXMpfXJldHVybiBlLnJhZGl1cz1zLGV9O25QPW5ldyBhLG9QPW5ldyBhLHJQPW5ldyBhO2VlLmZyb21PcmllbnRlZEJvdW5kaW5nQm94PWZ1bmN0aW9uKHQsZSl7eS5kZWZpbmVkKCJvcmllbnRlZEJvdW5kaW5nQm94Iix0KSxtKGUpfHwoZT1uZXcgZWUpO2xldCBuPXQuaGFsZkF4ZXMsbz1aLmdldENvbHVtbihuLDAsblApLHI9Wi5nZXRDb2x1bW4obiwxLG9QKSxpPVouZ2V0Q29sdW1uKG4sMixyUCk7cmV0dXJuIGEuYWRkKG8scixvKSxhLmFkZChvLGksbyksZS5jZW50ZXI9YS5jbG9uZSh0LmNlbnRlcixlLmNlbnRlciksZS5yYWRpdXM9YS5tYWduaXR1ZGUobyksZX07aVA9bmV3IGEsc1A9bmV3IGE7ZWUuZnJvbVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJ0cmFuc2Zvcm1hdGlvbiIsdCksbShlKXx8KGU9bmV3IGVlKTtsZXQgbj1zdC5nZXRUcmFuc2xhdGlvbih0LGlQKSxvPXN0LmdldFNjYWxlKHQsc1ApLHI9LjUqYS5tYWduaXR1ZGUobyk7cmV0dXJuIGUuY2VudGVyPWEuY2xvbmUobixlLmNlbnRlciksZS5yYWRpdXM9cixlfTtlZS5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGUuY2VudGVyPWEuY2xvbmUodC5jZW50ZXIsZS5jZW50ZXIpLGUucmFkaXVzPXQucmFkaXVzLGUpOm5ldyBlZSh0LmNlbnRlcix0LnJhZGl1cyl9O2VlLnBhY2tlZExlbmd0aD00O2VlLnBhY2s9ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHkuZGVmaW5lZCgiYXJyYXkiLGUpLG49bj8/MDtsZXQgbz10LmNlbnRlcjtyZXR1cm4gZVtuKytdPW8ueCxlW24rK109by55LGVbbisrXT1vLnosZVtuXT10LnJhZGl1cyxlfTtlZS51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3kuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MCxtKG4pfHwobj1uZXcgZWUpO2xldCBvPW4uY2VudGVyO3JldHVybiBvLng9dFtlKytdLG8ueT10W2UrK10sby56PXRbZSsrXSxuLnJhZGl1cz10W2VdLG59O2NQPW5ldyBhLGFQPW5ldyBhO2VlLnVuaW9uPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLG0obil8fChuPW5ldyBlZSk7bGV0IG89dC5jZW50ZXIscj10LnJhZGl1cyxpPWUuY2VudGVyLHM9ZS5yYWRpdXMsZj1hLnN1YnRyYWN0KGksbyxjUCksdT1hLm1hZ25pdHVkZShmKTtpZihyPj11K3MpcmV0dXJuIHQuY2xvbmUobiksbjtpZihzPj11K3IpcmV0dXJuIGUuY2xvbmUobiksbjtsZXQgYz0ocit1K3MpKi41LGw9YS5tdWx0aXBseUJ5U2NhbGFyKGYsKC1yK2MpL3UsYVApO3JldHVybiBhLmFkZChsLG8sbCksYS5jbG9uZShsLG4uY2VudGVyKSxuLnJhZGl1cz1jLG59O2ZQPW5ldyBhO2VlLmV4cGFuZD1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJzcGhlcmUiLHQpLHkudHlwZU9mLm9iamVjdCgicG9pbnQiLGUpLG49ZWUuY2xvbmUodCxuKTtsZXQgbz1hLm1hZ25pdHVkZShhLnN1YnRyYWN0KGUsbi5jZW50ZXIsZlApKTtyZXR1cm4gbz5uLnJhZGl1cyYmKG4ucmFkaXVzPW8pLG59O2VlLmludGVyc2VjdFBsYW5lPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJzcGhlcmUiLHQpLHkudHlwZU9mLm9iamVjdCgicGxhbmUiLGUpO2xldCBuPXQuY2VudGVyLG89dC5yYWRpdXMscj1lLm5vcm1hbCxpPWEuZG90KHIsbikrZS5kaXN0YW5jZTtyZXR1cm4gaTwtbz9Tbi5PVVRTSURFOmk8bz9Tbi5JTlRFUlNFQ1RJTkc6U24uSU5TSURFfTtlZS50cmFuc2Zvcm09ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInNwaGVyZSIsdCkseS50eXBlT2Yub2JqZWN0KCJ0cmFuc2Zvcm0iLGUpLG0obil8fChuPW5ldyBlZSksbi5jZW50ZXI9c3QubXVsdGlwbHlCeVBvaW50KGUsdC5jZW50ZXIsbi5jZW50ZXIpLG4ucmFkaXVzPXN0LmdldE1heGltdW1TY2FsZShlKSp0LnJhZGl1cyxufTt1UD1uZXcgYTtlZS5kaXN0YW5jZVNxdWFyZWRUbz1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm9iamVjdCgic3BoZXJlIix0KSx5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsZSk7bGV0IG49YS5zdWJ0cmFjdCh0LmNlbnRlcixlLHVQKSxvPWEubWFnbml0dWRlKG4pLXQucmFkaXVzO3JldHVybiBvPD0wPzA6bypvfTtlZS50cmFuc2Zvcm1XaXRob3V0U2NhbGU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInNwaGVyZSIsdCkseS50eXBlT2Yub2JqZWN0KCJ0cmFuc2Zvcm0iLGUpLG0obil8fChuPW5ldyBlZSksbi5jZW50ZXI9c3QubXVsdGlwbHlCeVBvaW50KGUsdC5jZW50ZXIsbi5jZW50ZXIpLG4ucmFkaXVzPXQucmFkaXVzLG59O2xQPW5ldyBhO2VlLmNvbXB1dGVQbGFuZURpc3RhbmNlcz1mdW5jdGlvbih0LGUsbixvKXt5LnR5cGVPZi5vYmplY3QoInNwaGVyZSIsdCkseS50eXBlT2Yub2JqZWN0KCJwb3NpdGlvbiIsZSkseS50eXBlT2Yub2JqZWN0KCJkaXJlY3Rpb24iLG4pLG0obyl8fChvPW5ldyBKcik7bGV0IHI9YS5zdWJ0cmFjdCh0LmNlbnRlcixlLGxQKSxpPWEuZG90KG4scik7cmV0dXJuIG8uc3RhcnQ9aS10LnJhZGl1cyxvLnN0b3A9aSt0LnJhZGl1cyxvfTtnYj1uZXcgYSxwUD1uZXcgYSxkUD1uZXcgYSxtUD1uZXcgYSxoUD1uZXcgYSxfUD1uZXcgY3QsYmI9bmV3IEFycmF5KDgpO2ZvcihsZXQgdD0wO3Q8ODsrK3QpYmJbdF09bmV3IGE7QWI9bmV3IGVvO2VlLnByb2plY3RUbzJEPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoInNwaGVyZSIsdCksQWIuX2VsbGlwc29pZD1ZLmRlZmF1bHQsZT1lPz9BYjtsZXQgbz1lLmVsbGlwc29pZCxyPXQuY2VudGVyLGk9dC5yYWRpdXMsczthLmVxdWFscyhyLGEuWkVSTyk/cz1hLmNsb25lKGEuVU5JVF9YLGdiKTpzPW8uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKHIsZ2IpO2xldCBmPWEuY3Jvc3MoYS5VTklUX1oscyxwUCk7YS5ub3JtYWxpemUoZixmKTtsZXQgdT1hLmNyb3NzKHMsZixkUCk7YS5ub3JtYWxpemUodSx1KSxhLm11bHRpcGx5QnlTY2FsYXIocyxpLHMpLGEubXVsdGlwbHlCeVNjYWxhcih1LGksdSksYS5tdWx0aXBseUJ5U2NhbGFyKGYsaSxmKTtsZXQgYz1hLm5lZ2F0ZSh1LGhQKSxsPWEubmVnYXRlKGYsbVApLHA9YmIsZD1wWzBdO2EuYWRkKHMsdSxkKSxhLmFkZChkLGYsZCksZD1wWzFdLGEuYWRkKHMsdSxkKSxhLmFkZChkLGwsZCksZD1wWzJdLGEuYWRkKHMsYyxkKSxhLmFkZChkLGwsZCksZD1wWzNdLGEuYWRkKHMsYyxkKSxhLmFkZChkLGYsZCksYS5uZWdhdGUocyxzKSxkPXBbNF0sYS5hZGQocyx1LGQpLGEuYWRkKGQsZixkKSxkPXBbNV0sYS5hZGQocyx1LGQpLGEuYWRkKGQsbCxkKSxkPXBbNl0sYS5hZGQocyxjLGQpLGEuYWRkKGQsbCxkKSxkPXBbN10sYS5hZGQocyxjLGQpLGEuYWRkKGQsZixkKTtsZXQgaD1wLmxlbmd0aDtmb3IobGV0IHc9MDt3PGg7Kyt3KXtsZXQgTz1wW3ddO2EuYWRkKHIsTyxPKTtsZXQgRT1vLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKE8sX1ApO2UucHJvamVjdChFLE8pfW49ZWUuZnJvbVBvaW50cyhwLG4pLHI9bi5jZW50ZXI7bGV0IF89ci54LGc9ci55LGI9ci56O3JldHVybiByLng9YixyLnk9XyxyLno9ZyxufTtlZS5pc09jY2x1ZGVkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgic3BoZXJlIix0KSx5LnR5cGVPZi5vYmplY3QoIm9jY2x1ZGVyIixlKSwhZS5pc0JvdW5kaW5nU3BoZXJlVmlzaWJsZSh0KX07ZWUuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZhLmVxdWFscyh0LmNlbnRlcixlLmNlbnRlcikmJnQucmFkaXVzPT09ZS5yYWRpdXN9O2VlLnByb3RvdHlwZS5pbnRlcnNlY3RQbGFuZT1mdW5jdGlvbih0KXtyZXR1cm4gZWUuaW50ZXJzZWN0UGxhbmUodGhpcyx0KX07ZWUucHJvdG90eXBlLmRpc3RhbmNlU3F1YXJlZFRvPWZ1bmN0aW9uKHQpe3JldHVybiBlZS5kaXN0YW5jZVNxdWFyZWRUbyh0aGlzLHQpfTtlZS5wcm90b3R5cGUuY29tcHV0ZVBsYW5lRGlzdGFuY2VzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gZWUuY29tcHV0ZVBsYW5lRGlzdGFuY2VzKHRoaXMsdCxlLG4pfTtlZS5wcm90b3R5cGUuaXNPY2NsdWRlZD1mdW5jdGlvbih0KXtyZXR1cm4gZWUuaXNPY2NsdWRlZCh0aGlzLHQpfTtlZS5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBlZS5lcXVhbHModGhpcyx0KX07ZWUucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBlZS5jbG9uZSh0aGlzLHQpfTtlZS5wcm90b3R5cGUudm9sdW1lPWZ1bmN0aW9uKCl7bGV0IHQ9dGhpcy5yYWRpdXM7cmV0dXJuIFozKnQqdCp0fTtBdD1lZX0pO3ZhciB5UCxGdCxacz0kKCgpPT57eVA9e0RFUFRIX0JVRkZFUl9CSVQ6MjU2LFNURU5DSUxfQlVGRkVSX0JJVDoxMDI0LENPTE9SX0JVRkZFUl9CSVQ6MTYzODQsUE9JTlRTOjAsTElORVM6MSxMSU5FX0xPT1A6MixMSU5FX1NUUklQOjMsVFJJQU5HTEVTOjQsVFJJQU5HTEVfU1RSSVA6NSxUUklBTkdMRV9GQU46NixaRVJPOjAsT05FOjEsU1JDX0NPTE9SOjc2OCxPTkVfTUlOVVNfU1JDX0NPTE9SOjc2OSxTUkNfQUxQSEE6NzcwLE9ORV9NSU5VU19TUkNfQUxQSEE6NzcxLERTVF9BTFBIQTo3NzIsT05FX01JTlVTX0RTVF9BTFBIQTo3NzMsRFNUX0NPTE9SOjc3NCxPTkVfTUlOVVNfRFNUX0NPTE9SOjc3NSxTUkNfQUxQSEFfU0FUVVJBVEU6Nzc2LEZVTkNfQUREOjMyNzc0LEJMRU5EX0VRVUFUSU9OOjMyNzc3LEJMRU5EX0VRVUFUSU9OX1JHQjozMjc3NyxCTEVORF9FUVVBVElPTl9BTFBIQTozNDg3NyxGVU5DX1NVQlRSQUNUOjMyNzc4LEZVTkNfUkVWRVJTRV9TVUJUUkFDVDozMjc3OSxCTEVORF9EU1RfUkdCOjMyOTY4LEJMRU5EX1NSQ19SR0I6MzI5NjksQkxFTkRfRFNUX0FMUEhBOjMyOTcwLEJMRU5EX1NSQ19BTFBIQTozMjk3MSxDT05TVEFOVF9DT0xPUjozMjc2OSxPTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6MzI3NzAsQ09OU1RBTlRfQUxQSEE6MzI3NzEsT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBOjMyNzcyLEJMRU5EX0NPTE9SOjMyNzczLEFSUkFZX0JVRkZFUjozNDk2MixFTEVNRU5UX0FSUkFZX0JVRkZFUjozNDk2MyxBUlJBWV9CVUZGRVJfQklORElORzozNDk2NCxFTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HOjM0OTY1LFNUUkVBTV9EUkFXOjM1MDQwLFNUQVRJQ19EUkFXOjM1MDQ0LERZTkFNSUNfRFJBVzozNTA0OCxCVUZGRVJfU0laRTozNDY2MCxCVUZGRVJfVVNBR0U6MzQ2NjEsQ1VSUkVOVF9WRVJURVhfQVRUUklCOjM0MzQyLEZST05UOjEwMjgsQkFDSzoxMDI5LEZST05UX0FORF9CQUNLOjEwMzIsQ1VMTF9GQUNFOjI4ODQsQkxFTkQ6MzA0MixESVRIRVI6MzAyNCxTVEVOQ0lMX1RFU1Q6Mjk2MCxERVBUSF9URVNUOjI5MjksU0NJU1NPUl9URVNUOjMwODksUE9MWUdPTl9PRkZTRVRfRklMTDozMjgyMyxTQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0U6MzI5MjYsU0FNUExFX0NPVkVSQUdFOjMyOTI4LE5PX0VSUk9SOjAsSU5WQUxJRF9FTlVNOjEyODAsSU5WQUxJRF9WQUxVRToxMjgxLElOVkFMSURfT1BFUkFUSU9OOjEyODIsT1VUX09GX01FTU9SWToxMjg1LENXOjIzMDQsQ0NXOjIzMDUsTElORV9XSURUSDoyODQ5LEFMSUFTRURfUE9JTlRfU0laRV9SQU5HRTozMzkwMSxBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0U6MzM5MDIsQ1VMTF9GQUNFX01PREU6Mjg4NSxGUk9OVF9GQUNFOjI4ODYsREVQVEhfUkFOR0U6MjkyOCxERVBUSF9XUklURU1BU0s6MjkzMCxERVBUSF9DTEVBUl9WQUxVRToyOTMxLERFUFRIX0ZVTkM6MjkzMixTVEVOQ0lMX0NMRUFSX1ZBTFVFOjI5NjEsU1RFTkNJTF9GVU5DOjI5NjIsU1RFTkNJTF9GQUlMOjI5NjQsU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUw6Mjk2NSxTVEVOQ0lMX1BBU1NfREVQVEhfUEFTUzoyOTY2LFNURU5DSUxfUkVGOjI5NjcsU1RFTkNJTF9WQUxVRV9NQVNLOjI5NjMsU1RFTkNJTF9XUklURU1BU0s6Mjk2OCxTVEVOQ0lMX0JBQ0tfRlVOQzozNDgxNixTVEVOQ0lMX0JBQ0tfRkFJTDozNDgxNyxTVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMOjM0ODE4LFNURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1M6MzQ4MTksU1RFTkNJTF9CQUNLX1JFRjozNjAwMyxTVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSzozNjAwNCxTVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLOjM2MDA1LFZJRVdQT1JUOjI5NzgsU0NJU1NPUl9CT1g6MzA4OCxDT0xPUl9DTEVBUl9WQUxVRTozMTA2LENPTE9SX1dSSVRFTUFTSzozMTA3LFVOUEFDS19BTElHTk1FTlQ6MzMxNyxQQUNLX0FMSUdOTUVOVDozMzMzLE1BWF9URVhUVVJFX1NJWkU6MzM3OSxNQVhfVklFV1BPUlRfRElNUzozMzg2LFNVQlBJWEVMX0JJVFM6MzQwOCxSRURfQklUUzozNDEwLEdSRUVOX0JJVFM6MzQxMSxCTFVFX0JJVFM6MzQxMixBTFBIQV9CSVRTOjM0MTMsREVQVEhfQklUUzozNDE0LFNURU5DSUxfQklUUzozNDE1LFBPTFlHT05fT0ZGU0VUX1VOSVRTOjEwNzUyLFBPTFlHT05fT0ZGU0VUX0ZBQ1RPUjozMjgyNCxURVhUVVJFX0JJTkRJTkdfMkQ6MzI4NzMsU0FNUExFX0JVRkZFUlM6MzI5MzYsU0FNUExFUzozMjkzNyxTQU1QTEVfQ09WRVJBR0VfVkFMVUU6MzI5MzgsU0FNUExFX0NPVkVSQUdFX0lOVkVSVDozMjkzOSxDT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUzozNDQ2NyxET05UX0NBUkU6NDM1MixGQVNURVNUOjQzNTMsTklDRVNUOjQzNTQsR0VORVJBVEVfTUlQTUFQX0hJTlQ6MzMxNzAsQllURTo1MTIwLFVOU0lHTkVEX0JZVEU6NTEyMSxTSE9SVDo1MTIyLFVOU0lHTkVEX1NIT1JUOjUxMjMsSU5UOjUxMjQsVU5TSUdORURfSU5UOjUxMjUsRkxPQVQ6NTEyNixERVBUSF9DT01QT05FTlQ6NjQwMixBTFBIQTo2NDA2LFJHQjo2NDA3LFJHQkE6NjQwOCxMVU1JTkFOQ0U6NjQwOSxMVU1JTkFOQ0VfQUxQSEE6NjQxMCxVTlNJR05FRF9TSE9SVF80XzRfNF80OjMyODE5LFVOU0lHTkVEX1NIT1JUXzVfNV81XzE6MzI4MjAsVU5TSUdORURfU0hPUlRfNV82XzU6MzM2MzUsRlJBR01FTlRfU0hBREVSOjM1NjMyLFZFUlRFWF9TSEFERVI6MzU2MzMsTUFYX1ZFUlRFWF9BVFRSSUJTOjM0OTIxLE1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTOjM2MzQ3LE1BWF9WQVJZSU5HX1ZFQ1RPUlM6MzYzNDgsTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFM6MzU2NjEsTUFYX1ZFUlRFWF9URVhUVVJFX0lNQUdFX1VOSVRTOjM1NjYwLE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTOjM0OTMwLE1BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlM6MzYzNDksU0hBREVSX1RZUEU6MzU2NjMsREVMRVRFX1NUQVRVUzozNTcxMixMSU5LX1NUQVRVUzozNTcxNCxWQUxJREFURV9TVEFUVVM6MzU3MTUsQVRUQUNIRURfU0hBREVSUzozNTcxNyxBQ1RJVkVfVU5JRk9STVM6MzU3MTgsQUNUSVZFX0FUVFJJQlVURVM6MzU3MjEsU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OOjM1NzI0LENVUlJFTlRfUFJPR1JBTTozNTcyNSxORVZFUjo1MTIsTEVTUzo1MTMsRVFVQUw6NTE0LExFUVVBTDo1MTUsR1JFQVRFUjo1MTYsTk9URVFVQUw6NTE3LEdFUVVBTDo1MTgsQUxXQVlTOjUxOSxLRUVQOjc2ODAsUkVQTEFDRTo3NjgxLElOQ1I6NzY4MixERUNSOjc2ODMsSU5WRVJUOjUzODYsSU5DUl9XUkFQOjM0MDU1LERFQ1JfV1JBUDozNDA1NixWRU5ET1I6NzkzNixSRU5ERVJFUjo3OTM3LFZFUlNJT046NzkzOCxORUFSRVNUOjk3MjgsTElORUFSOjk3MjksTkVBUkVTVF9NSVBNQVBfTkVBUkVTVDo5OTg0LExJTkVBUl9NSVBNQVBfTkVBUkVTVDo5OTg1LE5FQVJFU1RfTUlQTUFQX0xJTkVBUjo5OTg2LExJTkVBUl9NSVBNQVBfTElORUFSOjk5ODcsVEVYVFVSRV9NQUdfRklMVEVSOjEwMjQwLFRFWFRVUkVfTUlOX0ZJTFRFUjoxMDI0MSxURVhUVVJFX1dSQVBfUzoxMDI0MixURVhUVVJFX1dSQVBfVDoxMDI0MyxURVhUVVJFXzJEOjM1NTMsVEVYVFVSRTo1ODkwLFRFWFRVUkVfQ1VCRV9NQVA6MzQwNjcsVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQOjM0MDY4LFRFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWDozNDA2OSxURVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1g6MzQwNzAsVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZOjM0MDcxLFRFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWTozNDA3MixURVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1o6MzQwNzMsVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9aOjM0MDc0LE1BWF9DVUJFX01BUF9URVhUVVJFX1NJWkU6MzQwNzYsVEVYVFVSRTA6MzM5ODQsVEVYVFVSRTE6MzM5ODUsVEVYVFVSRTI6MzM5ODYsVEVYVFVSRTM6MzM5ODcsVEVYVFVSRTQ6MzM5ODgsVEVYVFVSRTU6MzM5ODksVEVYVFVSRTY6MzM5OTAsVEVYVFVSRTc6MzM5OTEsVEVYVFVSRTg6MzM5OTIsVEVYVFVSRTk6MzM5OTMsVEVYVFVSRTEwOjMzOTk0LFRFWFRVUkUxMTozMzk5NSxURVhUVVJFMTI6MzM5OTYsVEVYVFVSRTEzOjMzOTk3LFRFWFRVUkUxNDozMzk5OCxURVhUVVJFMTU6MzM5OTksVEVYVFVSRTE2OjM0ZTMsVEVYVFVSRTE3OjM0MDAxLFRFWFRVUkUxODozNDAwMixURVhUVVJFMTk6MzQwMDMsVEVYVFVSRTIwOjM0MDA0LFRFWFRVUkUyMTozNDAwNSxURVhUVVJFMjI6MzQwMDYsVEVYVFVSRTIzOjM0MDA3LFRFWFRVUkUyNDozNDAwOCxURVhUVVJFMjU6MzQwMDksVEVYVFVSRTI2OjM0MDEwLFRFWFRVUkUyNzozNDAxMSxURVhUVVJFMjg6MzQwMTIsVEVYVFVSRTI5OjM0MDEzLFRFWFRVUkUzMDozNDAxNCxURVhUVVJFMzE6MzQwMTUsQUNUSVZFX1RFWFRVUkU6MzQwMTYsUkVQRUFUOjEwNDk3LENMQU1QX1RPX0VER0U6MzMwNzEsTUlSUk9SRURfUkVQRUFUOjMzNjQ4LEZMT0FUX1ZFQzI6MzU2NjQsRkxPQVRfVkVDMzozNTY2NSxGTE9BVF9WRUM0OjM1NjY2LElOVF9WRUMyOjM1NjY3LElOVF9WRUMzOjM1NjY4LElOVF9WRUM0OjM1NjY5LEJPT0w6MzU2NzAsQk9PTF9WRUMyOjM1NjcxLEJPT0xfVkVDMzozNTY3MixCT09MX1ZFQzQ6MzU2NzMsRkxPQVRfTUFUMjozNTY3NCxGTE9BVF9NQVQzOjM1Njc1LEZMT0FUX01BVDQ6MzU2NzYsU0FNUExFUl8yRDozNTY3OCxTQU1QTEVSX0NVQkU6MzU2ODAsVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEOjM0MzM4LFZFUlRFWF9BVFRSSUJfQVJSQVlfU0laRTozNDMzOSxWRVJURVhfQVRUUklCX0FSUkFZX1NUUklERTozNDM0MCxWRVJURVhfQVRUUklCX0FSUkFZX1RZUEU6MzQzNDEsVkVSVEVYX0FUVFJJQl9BUlJBWV9OT1JNQUxJWkVEOjM0OTIyLFZFUlRFWF9BVFRSSUJfQVJSQVlfUE9JTlRFUjozNDM3MyxWRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HOjM0OTc1LElNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRTozNTczOCxJTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVDozNTczOSxDT01QSUxFX1NUQVRVUzozNTcxMyxMT1dfRkxPQVQ6MzYzMzYsTUVESVVNX0ZMT0FUOjM2MzM3LEhJR0hfRkxPQVQ6MzYzMzgsTE9XX0lOVDozNjMzOSxNRURJVU1fSU5UOjM2MzQwLEhJR0hfSU5UOjM2MzQxLEZSQU1FQlVGRkVSOjM2MTYwLFJFTkRFUkJVRkZFUjozNjE2MSxSR0JBNDozMjg1NCxSR0I1X0ExOjMyODU1LFJHQjU2NTozNjE5NCxERVBUSF9DT01QT05FTlQxNjozMzE4OSxTVEVOQ0lMX0lOREVYOjY0MDEsU1RFTkNJTF9JTkRFWDg6MzYxNjgsREVQVEhfU1RFTkNJTDozNDA0MSxSRU5ERVJCVUZGRVJfV0lEVEg6MzYxNjIsUkVOREVSQlVGRkVSX0hFSUdIVDozNjE2MyxSRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUOjM2MTY0LFJFTkRFUkJVRkZFUl9SRURfU0laRTozNjE3NixSRU5ERVJCVUZGRVJfR1JFRU5fU0laRTozNjE3NyxSRU5ERVJCVUZGRVJfQkxVRV9TSVpFOjM2MTc4LFJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFOjM2MTc5LFJFTkRFUkJVRkZFUl9ERVBUSF9TSVpFOjM2MTgwLFJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkU6MzYxODEsRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRTozNjA0OCxGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FOjM2MDQ5LEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MRVZFTDozNjA1MCxGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRTozNjA1MSxDT0xPUl9BVFRBQ0hNRU5UMDozNjA2NCxERVBUSF9BVFRBQ0hNRU5UOjM2MDk2LFNURU5DSUxfQVRUQUNITUVOVDozNjEyOCxERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQ6MzMzMDYsTk9ORTowLEZSQU1FQlVGRkVSX0NPTVBMRVRFOjM2MDUzLEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVDozNjA1NCxGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVDozNjA1NSxGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlM6MzYwNTcsRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQ6MzYwNjEsRlJBTUVCVUZGRVJfQklORElORzozNjAwNixSRU5ERVJCVUZGRVJfQklORElORzozNjAwNyxNQVhfUkVOREVSQlVGRkVSX1NJWkU6MzQwMjQsSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT046MTI4NixVTlBBQ0tfRkxJUF9ZX1dFQkdMOjM3NDQwLFVOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTDozNzQ0MSxDT05URVhUX0xPU1RfV0VCR0w6Mzc0NDIsVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTDozNzQ0MyxCUk9XU0VSX0RFRkFVTFRfV0VCR0w6Mzc0NDQsQ09NUFJFU1NFRF9SR0JfUzNUQ19EWFQxX0VYVDozMzc3NixDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVDozMzc3NyxDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQzX0VYVDozMzc3OCxDT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQ1X0VYVDozMzc3OSxDT01QUkVTU0VEX1JHQl9QVlJUQ180QlBQVjFfSU1HOjM1ODQwLENPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUc6MzU4NDEsQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUc6MzU4NDIsQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUc6MzU4NDMsQ09NUFJFU1NFRF9SR0JBX0FTVENfNHg0X1dFQkdMOjM3ODA4LENPTVBSRVNTRURfUkdCX0VUQzFfV0VCR0w6MzYxOTYsQ09NUFJFU1NFRF9SR0JBX0JQVENfVU5PUk06MzY0OTIsSEFMRl9GTE9BVF9PRVM6MzYxOTMsRE9VQkxFOjUxMzAsUkVBRF9CVUZGRVI6MzA3NCxVTlBBQ0tfUk9XX0xFTkdUSDozMzE0LFVOUEFDS19TS0lQX1JPV1M6MzMxNSxVTlBBQ0tfU0tJUF9QSVhFTFM6MzMxNixQQUNLX1JPV19MRU5HVEg6MzMzMCxQQUNLX1NLSVBfUk9XUzozMzMxLFBBQ0tfU0tJUF9QSVhFTFM6MzMzMixDT0xPUjo2MTQ0LERFUFRIOjYxNDUsU1RFTkNJTDo2MTQ2LFJFRDo2NDAzLFJHQjg6MzI4NDksUkdCQTg6MzI4NTYsUkdCMTBfQTI6MzI4NTcsVEVYVFVSRV9CSU5ESU5HXzNEOjMyODc0LFVOUEFDS19TS0lQX0lNQUdFUzozMjg3NyxVTlBBQ0tfSU1BR0VfSEVJR0hUOjMyODc4LFRFWFRVUkVfM0Q6MzI4NzksVEVYVFVSRV9XUkFQX1I6MzI4ODIsTUFYXzNEX1RFWFRVUkVfU0laRTozMjg4MyxVTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVY6MzM2NDAsTUFYX0VMRU1FTlRTX1ZFUlRJQ0VTOjMzZTMsTUFYX0VMRU1FTlRTX0lORElDRVM6MzMwMDEsVEVYVFVSRV9NSU5fTE9EOjMzMDgyLFRFWFRVUkVfTUFYX0xPRDozMzA4MyxURVhUVVJFX0JBU0VfTEVWRUw6MzMwODQsVEVYVFVSRV9NQVhfTEVWRUw6MzMwODUsTUlOOjMyNzc1LE1BWDozMjc3NixERVBUSF9DT01QT05FTlQyNDozMzE5MCxNQVhfVEVYVFVSRV9MT0RfQklBUzozNDA0NSxURVhUVVJFX0NPTVBBUkVfTU9ERTozNDg5MixURVhUVVJFX0NPTVBBUkVfRlVOQzozNDg5MyxDVVJSRU5UX1FVRVJZOjM0OTE3LFFVRVJZX1JFU1VMVDozNDkxOCxRVUVSWV9SRVNVTFRfQVZBSUxBQkxFOjM0OTE5LFNUUkVBTV9SRUFEOjM1MDQxLFNUUkVBTV9DT1BZOjM1MDQyLFNUQVRJQ19SRUFEOjM1MDQ1LFNUQVRJQ19DT1BZOjM1MDQ2LERZTkFNSUNfUkVBRDozNTA0OSxEWU5BTUlDX0NPUFk6MzUwNTAsTUFYX0RSQVdfQlVGRkVSUzozNDg1MixEUkFXX0JVRkZFUjA6MzQ4NTMsRFJBV19CVUZGRVIxOjM0ODU0LERSQVdfQlVGRkVSMjozNDg1NSxEUkFXX0JVRkZFUjM6MzQ4NTYsRFJBV19CVUZGRVI0OjM0ODU3LERSQVdfQlVGRkVSNTozNDg1OCxEUkFXX0JVRkZFUjY6MzQ4NTksRFJBV19CVUZGRVI3OjM0ODYwLERSQVdfQlVGRkVSODozNDg2MSxEUkFXX0JVRkZFUjk6MzQ4NjIsRFJBV19CVUZGRVIxMDozNDg2MyxEUkFXX0JVRkZFUjExOjM0ODY0LERSQVdfQlVGRkVSMTI6MzQ4NjUsRFJBV19CVUZGRVIxMzozNDg2NixEUkFXX0JVRkZFUjE0OjM0ODY3LERSQVdfQlVGRkVSMTU6MzQ4NjgsTUFYX0ZSQUdNRU5UX1VOSUZPUk1fQ09NUE9ORU5UUzozNTY1NyxNQVhfVkVSVEVYX1VOSUZPUk1fQ09NUE9ORU5UUzozNTY1OCxTQU1QTEVSXzNEOjM1Njc5LFNBTVBMRVJfMkRfU0hBRE9XOjM1NjgyLEZSQUdNRU5UX1NIQURFUl9ERVJJVkFUSVZFX0hJTlQ6MzU3MjMsUElYRUxfUEFDS19CVUZGRVI6MzUwNTEsUElYRUxfVU5QQUNLX0JVRkZFUjozNTA1MixQSVhFTF9QQUNLX0JVRkZFUl9CSU5ESU5HOjM1MDUzLFBJWEVMX1VOUEFDS19CVUZGRVJfQklORElORzozNTA1NSxGTE9BVF9NQVQyeDM6MzU2ODUsRkxPQVRfTUFUMng0OjM1Njg2LEZMT0FUX01BVDN4MjozNTY4NyxGTE9BVF9NQVQzeDQ6MzU2ODgsRkxPQVRfTUFUNHgyOjM1Njg5LEZMT0FUX01BVDR4MzozNTY5MCxTUkdCOjM1OTA0LFNSR0I4OjM1OTA1LFNSR0I4X0FMUEhBODozNTkwNyxDT01QQVJFX1JFRl9UT19URVhUVVJFOjM0ODk0LFJHQkEzMkY6MzQ4MzYsUkdCMzJGOjM0ODM3LFJHQkExNkY6MzQ4NDIsUkdCMTZGOjM0ODQzLFZFUlRFWF9BVFRSSUJfQVJSQVlfSU5URUdFUjozNTA2OSxNQVhfQVJSQVlfVEVYVFVSRV9MQVlFUlM6MzUwNzEsTUlOX1BST0dSQU1fVEVYRUxfT0ZGU0VUOjM1MDc2LE1BWF9QUk9HUkFNX1RFWEVMX09GRlNFVDozNTA3NyxNQVhfVkFSWUlOR19DT01QT05FTlRTOjM1NjU5LFRFWFRVUkVfMkRfQVJSQVk6MzU4NjYsVEVYVFVSRV9CSU5ESU5HXzJEX0FSUkFZOjM1ODY5LFIxMUZfRzExRl9CMTBGOjM1ODk4LFVOU0lHTkVEX0lOVF8xMEZfMTFGXzExRl9SRVY6MzU4OTksUkdCOV9FNTozNTkwMSxVTlNJR05FRF9JTlRfNV85XzlfOV9SRVY6MzU5MDIsVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9NT0RFOjM1OTY3LE1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQ09NUE9ORU5UUzozNTk2OCxUUkFOU0ZPUk1fRkVFREJBQ0tfVkFSWUlOR1M6MzU5NzEsVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUl9TVEFSVDozNTk3MixUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX1NJWkU6MzU5NzMsVFJBTlNGT1JNX0ZFRURCQUNLX1BSSU1JVElWRVNfV1JJVFRFTjozNTk3NixSQVNURVJJWkVSX0RJU0NBUkQ6MzU5NzcsTUFYX1RSQU5TRk9STV9GRUVEQkFDS19JTlRFUkxFQVZFRF9DT01QT05FTlRTOjM1OTc4LE1BWF9UUkFOU0ZPUk1fRkVFREJBQ0tfU0VQQVJBVEVfQVRUUklCUzozNTk3OSxJTlRFUkxFQVZFRF9BVFRSSUJTOjM1OTgwLFNFUEFSQVRFX0FUVFJJQlM6MzU5ODEsVFJBTlNGT1JNX0ZFRURCQUNLX0JVRkZFUjozNTk4MixUUkFOU0ZPUk1fRkVFREJBQ0tfQlVGRkVSX0JJTkRJTkc6MzU5ODMsUkdCQTMyVUk6MzYyMDgsUkdCMzJVSTozNjIwOSxSR0JBMTZVSTozNjIxNCxSR0IxNlVJOjM2MjE1LFJHQkE4VUk6MzYyMjAsUkdCOFVJOjM2MjIxLFJHQkEzMkk6MzYyMjYsUkdCMzJJOjM2MjI3LFJHQkExNkk6MzYyMzIsUkdCMTZJOjM2MjMzLFJHQkE4STozNjIzOCxSR0I4STozNjIzOSxSRURfSU5URUdFUjozNjI0NCxSR0JfSU5URUdFUjozNjI0OCxSR0JBX0lOVEVHRVI6MzYyNDksU0FNUExFUl8yRF9BUlJBWTozNjI4OSxTQU1QTEVSXzJEX0FSUkFZX1NIQURPVzozNjI5MixTQU1QTEVSX0NVQkVfU0hBRE9XOjM2MjkzLFVOU0lHTkVEX0lOVF9WRUMyOjM2Mjk0LFVOU0lHTkVEX0lOVF9WRUMzOjM2Mjk1LFVOU0lHTkVEX0lOVF9WRUM0OjM2Mjk2LElOVF9TQU1QTEVSXzJEOjM2Mjk4LElOVF9TQU1QTEVSXzNEOjM2Mjk5LElOVF9TQU1QTEVSX0NVQkU6MzYzMDAsSU5UX1NBTVBMRVJfMkRfQVJSQVk6MzYzMDMsVU5TSUdORURfSU5UX1NBTVBMRVJfMkQ6MzYzMDYsVU5TSUdORURfSU5UX1NBTVBMRVJfM0Q6MzYzMDcsVU5TSUdORURfSU5UX1NBTVBMRVJfQ1VCRTozNjMwOCxVTlNJR05FRF9JTlRfU0FNUExFUl8yRF9BUlJBWTozNjMxMSxERVBUSF9DT01QT05FTlQzMkY6MzYwMTIsREVQVEgzMkZfU1RFTkNJTDg6MzYwMTMsRkxPQVRfMzJfVU5TSUdORURfSU5UXzI0XzhfUkVWOjM2MjY5LEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfQ09MT1JfRU5DT0RJTkc6MzMyOTYsRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9DT01QT05FTlRfVFlQRTozMzI5NyxGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1JFRF9TSVpFOjMzMjk4LEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfR1JFRU5fU0laRTozMzI5OSxGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0JMVUVfU0laRTozMzMwMCxGUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX0FMUEhBX1NJWkU6MzMzMDEsRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9ERVBUSF9TSVpFOjMzMzAyLEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfU1RFTkNJTF9TSVpFOjMzMzAzLEZSQU1FQlVGRkVSX0RFRkFVTFQ6MzMzMDQsVU5TSUdORURfSU5UXzI0Xzg6MzQwNDIsREVQVEgyNF9TVEVOQ0lMODozNTA1NixVTlNJR05FRF9OT1JNQUxJWkVEOjM1ODYzLERSQVdfRlJBTUVCVUZGRVJfQklORElORzozNjAwNixSRUFEX0ZSQU1FQlVGRkVSOjM2MDA4LERSQVdfRlJBTUVCVUZGRVI6MzYwMDksUkVBRF9GUkFNRUJVRkZFUl9CSU5ESU5HOjM2MDEwLFJFTkRFUkJVRkZFUl9TQU1QTEVTOjM2MDExLEZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9MQVlFUjozNjA1MixNQVhfQ09MT1JfQVRUQUNITUVOVFM6MzYwNjMsQ09MT1JfQVRUQUNITUVOVDE6MzYwNjUsQ09MT1JfQVRUQUNITUVOVDI6MzYwNjYsQ09MT1JfQVRUQUNITUVOVDM6MzYwNjcsQ09MT1JfQVRUQUNITUVOVDQ6MzYwNjgsQ09MT1JfQVRUQUNITUVOVDU6MzYwNjksQ09MT1JfQVRUQUNITUVOVDY6MzYwNzAsQ09MT1JfQVRUQUNITUVOVDc6MzYwNzEsQ09MT1JfQVRUQUNITUVOVDg6MzYwNzIsQ09MT1JfQVRUQUNITUVOVDk6MzYwNzMsQ09MT1JfQVRUQUNITUVOVDEwOjM2MDc0LENPTE9SX0FUVEFDSE1FTlQxMTozNjA3NSxDT0xPUl9BVFRBQ0hNRU5UMTI6MzYwNzYsQ09MT1JfQVRUQUNITUVOVDEzOjM2MDc3LENPTE9SX0FUVEFDSE1FTlQxNDozNjA3OCxDT0xPUl9BVFRBQ0hNRU5UMTU6MzYwNzksRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NVUxUSVNBTVBMRTozNjE4MixNQVhfU0FNUExFUzozNjE4MyxIQUxGX0ZMT0FUOjUxMzEsUkc6MzMzMTksUkdfSU5URUdFUjozMzMyMCxSODozMzMyMSxSRzg6MzMzMjMsUjE2RjozMzMyNSxSMzJGOjMzMzI2LFJHMTZGOjMzMzI3LFJHMzJGOjMzMzI4LFI4STozMzMyOSxSOFVJOjMzMzMwLFIxNkk6MzMzMzEsUjE2VUk6MzMzMzIsUjMySTozMzMzMyxSMzJVSTozMzMzNCxSRzhJOjMzMzM1LFJHOFVJOjMzMzM2LFJHMTZJOjMzMzM3LFJHMTZVSTozMzMzOCxSRzMySTozMzMzOSxSRzMyVUk6MzMzNDAsVkVSVEVYX0FSUkFZX0JJTkRJTkc6MzQyMjksUjhfU05PUk06MzY3NTYsUkc4X1NOT1JNOjM2NzU3LFJHQjhfU05PUk06MzY3NTgsUkdCQThfU05PUk06MzY3NTksU0lHTkVEX05PUk1BTElaRUQ6MzY3NjQsQ09QWV9SRUFEX0JVRkZFUjozNjY2MixDT1BZX1dSSVRFX0JVRkZFUjozNjY2MyxDT1BZX1JFQURfQlVGRkVSX0JJTkRJTkc6MzY2NjIsQ09QWV9XUklURV9CVUZGRVJfQklORElORzozNjY2MyxVTklGT1JNX0JVRkZFUjozNTM0NSxVTklGT1JNX0JVRkZFUl9CSU5ESU5HOjM1MzY4LFVOSUZPUk1fQlVGRkVSX1NUQVJUOjM1MzY5LFVOSUZPUk1fQlVGRkVSX1NJWkU6MzUzNzAsTUFYX1ZFUlRFWF9VTklGT1JNX0JMT0NLUzozNTM3MSxNQVhfRlJBR01FTlRfVU5JRk9STV9CTE9DS1M6MzUzNzMsTUFYX0NPTUJJTkVEX1VOSUZPUk1fQkxPQ0tTOjM1Mzc0LE1BWF9VTklGT1JNX0JVRkZFUl9CSU5ESU5HUzozNTM3NSxNQVhfVU5JRk9STV9CTE9DS19TSVpFOjM1Mzc2LE1BWF9DT01CSU5FRF9WRVJURVhfVU5JRk9STV9DT01QT05FTlRTOjM1Mzc3LE1BWF9DT01CSU5FRF9GUkFHTUVOVF9VTklGT1JNX0NPTVBPTkVOVFM6MzUzNzksVU5JRk9STV9CVUZGRVJfT0ZGU0VUX0FMSUdOTUVOVDozNTM4MCxBQ1RJVkVfVU5JRk9STV9CTE9DS1M6MzUzODIsVU5JRk9STV9UWVBFOjM1MzgzLFVOSUZPUk1fU0laRTozNTM4NCxVTklGT1JNX0JMT0NLX0lOREVYOjM1Mzg2LFVOSUZPUk1fT0ZGU0VUOjM1Mzg3LFVOSUZPUk1fQVJSQVlfU1RSSURFOjM1Mzg4LFVOSUZPUk1fTUFUUklYX1NUUklERTozNTM4OSxVTklGT1JNX0lTX1JPV19NQUpPUjozNTM5MCxVTklGT1JNX0JMT0NLX0JJTkRJTkc6MzUzOTEsVU5JRk9STV9CTE9DS19EQVRBX1NJWkU6MzUzOTIsVU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STVM6MzUzOTQsVU5JRk9STV9CTE9DS19BQ1RJVkVfVU5JRk9STV9JTkRJQ0VTOjM1Mzk1LFVOSUZPUk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9WRVJURVhfU0hBREVSOjM1Mzk2LFVOSUZPUk1fQkxPQ0tfUkVGRVJFTkNFRF9CWV9GUkFHTUVOVF9TSEFERVI6MzUzOTgsSU5WQUxJRF9JTkRFWDo0Mjk0OTY3Mjk1LE1BWF9WRVJURVhfT1VUUFVUX0NPTVBPTkVOVFM6MzcxNTQsTUFYX0ZSQUdNRU5UX0lOUFVUX0NPTVBPTkVOVFM6MzcxNTcsTUFYX1NFUlZFUl9XQUlUX1RJTUVPVVQ6MzcxMzcsT0JKRUNUX1RZUEU6MzcxMzgsU1lOQ19DT05ESVRJT046MzcxMzksU1lOQ19TVEFUVVM6MzcxNDAsU1lOQ19GTEFHUzozNzE0MSxTWU5DX0ZFTkNFOjM3MTQyLFNZTkNfR1BVX0NPTU1BTkRTX0NPTVBMRVRFOjM3MTQzLFVOU0lHTkFMRUQ6MzcxNDQsU0lHTkFMRUQ6MzcxNDUsQUxSRUFEWV9TSUdOQUxFRDozNzE0NixUSU1FT1VUX0VYUElSRUQ6MzcxNDcsQ09ORElUSU9OX1NBVElTRklFRDozNzE0OCxXQUlUX0ZBSUxFRDozNzE0OSxTWU5DX0ZMVVNIX0NPTU1BTkRTX0JJVDoxLFZFUlRFWF9BVFRSSUJfQVJSQVlfRElWSVNPUjozNTA3MCxBTllfU0FNUExFU19QQVNTRUQ6MzU4ODcsQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRTozNjIwMixTQU1QTEVSX0JJTkRJTkc6MzUwOTcsUkdCMTBfQTJVSTozNjk3NSxJTlRfMl8xMF8xMF8xMF9SRVY6MzYyNTUsVFJBTlNGT1JNX0ZFRURCQUNLOjM2Mzg2LFRSQU5TRk9STV9GRUVEQkFDS19QQVVTRUQ6MzYzODcsVFJBTlNGT1JNX0ZFRURCQUNLX0FDVElWRTozNjM4OCxUUkFOU0ZPUk1fRkVFREJBQ0tfQklORElORzozNjM4OSxDT01QUkVTU0VEX1IxMV9FQUM6Mzc0ODgsQ09NUFJFU1NFRF9TSUdORURfUjExX0VBQzozNzQ4OSxDT01QUkVTU0VEX1JHMTFfRUFDOjM3NDkwLENPTVBSRVNTRURfU0lHTkVEX1JHMTFfRUFDOjM3NDkxLENPTVBSRVNTRURfUkdCOF9FVEMyOjM3NDkyLENPTVBSRVNTRURfU1JHQjhfRVRDMjozNzQ5MyxDT01QUkVTU0VEX1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOjM3NDk0LENPTVBSRVNTRURfU1JHQjhfUFVOQ0hUSFJPVUdIX0FMUEhBMV9FVEMyOjM3NDk1LENPTVBSRVNTRURfUkdCQThfRVRDMl9FQUM6Mzc0OTYsQ09NUFJFU1NFRF9TUkdCOF9BTFBIQThfRVRDMl9FQUM6Mzc0OTcsVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUOjM3MTY3LE1BWF9FTEVNRU5UX0lOREVYOjM2MjAzLFRFWFRVUkVfSU1NVVRBQkxFX0xFVkVMUzozMzUwMyxNQVhfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQ6MzQwNDd9LEZ0PU9iamVjdC5mcmVlemUoeVApfSk7dmFyIHNlLGV0LERlPSQoKCk9PntmdCgpO0h0KCk7WnMoKTtzZT17QllURTpGdC5CWVRFLFVOU0lHTkVEX0JZVEU6RnQuVU5TSUdORURfQllURSxTSE9SVDpGdC5TSE9SVCxVTlNJR05FRF9TSE9SVDpGdC5VTlNJR05FRF9TSE9SVCxJTlQ6RnQuSU5ULFVOU0lHTkVEX0lOVDpGdC5VTlNJR05FRF9JTlQsRkxPQVQ6RnQuRkxPQVQsRE9VQkxFOkZ0LkRPVUJMRX07c2UuZ2V0U2l6ZUluQnl0ZXM9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IEQoInZhbHVlIGlzIHJlcXVpcmVkLiIpO3N3aXRjaCh0KXtjYXNlIHNlLkJZVEU6cmV0dXJuIEludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVDtjYXNlIHNlLlVOU0lHTkVEX0JZVEU6cmV0dXJuIFVpbnQ4QXJyYXkuQllURVNfUEVSX0VMRU1FTlQ7Y2FzZSBzZS5TSE9SVDpyZXR1cm4gSW50MTZBcnJheS5CWVRFU19QRVJfRUxFTUVOVDtjYXNlIHNlLlVOU0lHTkVEX1NIT1JUOnJldHVybiBVaW50MTZBcnJheS5CWVRFU19QRVJfRUxFTUVOVDtjYXNlIHNlLklOVDpyZXR1cm4gSW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVDtjYXNlIHNlLlVOU0lHTkVEX0lOVDpyZXR1cm4gVWludDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQ7Y2FzZSBzZS5GTE9BVDpyZXR1cm4gRmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UO2Nhc2Ugc2UuRE9VQkxFOnJldHVybiBGbG9hdDY0QXJyYXkuQllURVNfUEVSX0VMRU1FTlQ7ZGVmYXVsdDp0aHJvdyBuZXcgRCgiY29tcG9uZW50RGF0YXR5cGUgaXMgbm90IGEgdmFsaWQgdmFsdWUuIil9fTtzZS5mcm9tVHlwZWRBcnJheT1mdW5jdGlvbih0KXtpZih0IGluc3RhbmNlb2YgSW50OEFycmF5KXJldHVybiBzZS5CWVRFO2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiBzZS5VTlNJR05FRF9CWVRFO2lmKHQgaW5zdGFuY2VvZiBJbnQxNkFycmF5KXJldHVybiBzZS5TSE9SVDtpZih0IGluc3RhbmNlb2YgVWludDE2QXJyYXkpcmV0dXJuIHNlLlVOU0lHTkVEX1NIT1JUO2lmKHQgaW5zdGFuY2VvZiBJbnQzMkFycmF5KXJldHVybiBzZS5JTlQ7aWYodCBpbnN0YW5jZW9mIFVpbnQzMkFycmF5KXJldHVybiBzZS5VTlNJR05FRF9JTlQ7aWYodCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheSlyZXR1cm4gc2UuRkxPQVQ7aWYodCBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSlyZXR1cm4gc2UuRE9VQkxFO3Rocm93IG5ldyBEKCJhcnJheSBtdXN0IGJlIGFuIEludDhBcnJheSwgVWludDhBcnJheSwgSW50MTZBcnJheSwgVWludDE2QXJyYXksIEludDMyQXJyYXksIFVpbnQzMkFycmF5LCBGbG9hdDMyQXJyYXksIG9yIEZsb2F0NjRBcnJheS4iKX07c2UudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCkmJih0PT09c2UuQllURXx8dD09PXNlLlVOU0lHTkVEX0JZVEV8fHQ9PT1zZS5TSE9SVHx8dD09PXNlLlVOU0lHTkVEX1NIT1JUfHx0PT09c2UuSU5UfHx0PT09c2UuVU5TSUdORURfSU5UfHx0PT09c2UuRkxPQVR8fHQ9PT1zZS5ET1VCTEUpfTtzZS5jcmVhdGVUeXBlZEFycmF5PWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImNvbXBvbmVudERhdGF0eXBlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJ2YWx1ZXNPckxlbmd0aCBpcyByZXF1aXJlZC4iKTtzd2l0Y2godCl7Y2FzZSBzZS5CWVRFOnJldHVybiBuZXcgSW50OEFycmF5KGUpO2Nhc2Ugc2UuVU5TSUdORURfQllURTpyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZSk7Y2FzZSBzZS5TSE9SVDpyZXR1cm4gbmV3IEludDE2QXJyYXkoZSk7Y2FzZSBzZS5VTlNJR05FRF9TSE9SVDpyZXR1cm4gbmV3IFVpbnQxNkFycmF5KGUpO2Nhc2Ugc2UuSU5UOnJldHVybiBuZXcgSW50MzJBcnJheShlKTtjYXNlIHNlLlVOU0lHTkVEX0lOVDpyZXR1cm4gbmV3IFVpbnQzMkFycmF5KGUpO2Nhc2Ugc2UuRkxPQVQ6cmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoZSk7Y2FzZSBzZS5ET1VCTEU6cmV0dXJuIG5ldyBGbG9hdDY0QXJyYXkoZSk7ZGVmYXVsdDp0aHJvdyBuZXcgRCgiY29tcG9uZW50RGF0YXR5cGUgaXMgbm90IGEgdmFsaWQgdmFsdWUuIil9fTtzZS5jcmVhdGVBcnJheUJ1ZmZlclZpZXc9ZnVuY3Rpb24odCxlLG4sbyl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImNvbXBvbmVudERhdGF0eXBlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJidWZmZXIgaXMgcmVxdWlyZWQuIik7c3dpdGNoKG49bj8/MCxvPW8/PyhlLmJ5dGVMZW5ndGgtbikvc2UuZ2V0U2l6ZUluQnl0ZXModCksdCl7Y2FzZSBzZS5CWVRFOnJldHVybiBuZXcgSW50OEFycmF5KGUsbixvKTtjYXNlIHNlLlVOU0lHTkVEX0JZVEU6cmV0dXJuIG5ldyBVaW50OEFycmF5KGUsbixvKTtjYXNlIHNlLlNIT1JUOnJldHVybiBuZXcgSW50MTZBcnJheShlLG4sbyk7Y2FzZSBzZS5VTlNJR05FRF9TSE9SVDpyZXR1cm4gbmV3IFVpbnQxNkFycmF5KGUsbixvKTtjYXNlIHNlLklOVDpyZXR1cm4gbmV3IEludDMyQXJyYXkoZSxuLG8pO2Nhc2Ugc2UuVU5TSUdORURfSU5UOnJldHVybiBuZXcgVWludDMyQXJyYXkoZSxuLG8pO2Nhc2Ugc2UuRkxPQVQ6cmV0dXJuIG5ldyBGbG9hdDMyQXJyYXkoZSxuLG8pO2Nhc2Ugc2UuRE9VQkxFOnJldHVybiBuZXcgRmxvYXQ2NEFycmF5KGUsbixvKTtkZWZhdWx0OnRocm93IG5ldyBEKCJjb21wb25lbnREYXRhdHlwZSBpcyBub3QgYSB2YWxpZCB2YWx1ZS4iKX19O3NlLmZyb21OYW1lPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIkJZVEUiOnJldHVybiBzZS5CWVRFO2Nhc2UiVU5TSUdORURfQllURSI6cmV0dXJuIHNlLlVOU0lHTkVEX0JZVEU7Y2FzZSJTSE9SVCI6cmV0dXJuIHNlLlNIT1JUO2Nhc2UiVU5TSUdORURfU0hPUlQiOnJldHVybiBzZS5VTlNJR05FRF9TSE9SVDtjYXNlIklOVCI6cmV0dXJuIHNlLklOVDtjYXNlIlVOU0lHTkVEX0lOVCI6cmV0dXJuIHNlLlVOU0lHTkVEX0lOVDtjYXNlIkZMT0FUIjpyZXR1cm4gc2UuRkxPQVQ7Y2FzZSJET1VCTEUiOnJldHVybiBzZS5ET1VCTEU7ZGVmYXVsdDp0aHJvdyBuZXcgRCgibmFtZSBpcyBub3QgYSB2YWxpZCB2YWx1ZS4iKX19O2V0PU9iamVjdC5mcmVlemUoc2UpfSk7dmFyIGdQLE5pLERwPSQoKCk9PntnUD17Tk9ORTowLFRSSUFOR0xFUzoxLExJTkVTOjIsUE9MWUxJTkVTOjN9LE5pPU9iamVjdC5mcmVlemUoZ1ApfSk7ZnVuY3Rpb24gWHQodCxlLG4sbyl7dGhpc1swXT10Pz8wLHRoaXNbMV09bj8/MCx0aGlzWzJdPWU/PzAsdGhpc1szXT1vPz8wfXZhciBBUCxiUCx3YixUYix3UCxUUCxabyxiZj0kKCgpPT57a2UoKTtXdCgpO2Z0KCk7SHQoKTtYdC5wYWNrZWRMZW5ndGg9NDtYdC5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkseS5kZWZpbmVkKCJhcnJheSIsZSksbj1uPz8wLGVbbisrXT10WzBdLGVbbisrXT10WzFdLGVbbisrXT10WzJdLGVbbisrXT10WzNdLGV9O1h0LnVucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MCxtKG4pfHwobj1uZXcgWHQpLG5bMF09dFtlKytdLG5bMV09dFtlKytdLG5bMl09dFtlKytdLG5bM109dFtlKytdLG59O1h0LnBhY2tBcnJheT1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgiYXJyYXkiLHQpO2xldCBuPXQubGVuZ3RoLG89bio0O2lmKCFtKGUpKWU9bmV3IEFycmF5KG8pO2Vsc2V7aWYoIUFycmF5LmlzQXJyYXkoZSkmJmUubGVuZ3RoIT09byl0aHJvdyBuZXcgRCgiSWYgcmVzdWx0IGlzIGEgdHlwZWQgYXJyYXksIGl0IG11c3QgaGF2ZSBleGFjdGx5IGFycmF5Lmxlbmd0aCAqIDQgZWxlbWVudHMiKTtlLmxlbmd0aCE9PW8mJihlLmxlbmd0aD1vKX1mb3IobGV0IHI9MDtyPG47KytyKVh0LnBhY2sodFtyXSxlLHIqNCk7cmV0dXJuIGV9O1h0LnVucGFja0FycmF5PWZ1bmN0aW9uKHQsZSl7aWYoeS5kZWZpbmVkKCJhcnJheSIsdCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImFycmF5Lmxlbmd0aCIsdC5sZW5ndGgsNCksdC5sZW5ndGglNCE9PTApdGhyb3cgbmV3IEQoImFycmF5IGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNC4iKTtsZXQgbj10Lmxlbmd0aDttKGUpP2UubGVuZ3RoPW4vNDplPW5ldyBBcnJheShuLzQpO2ZvcihsZXQgbz0wO288bjtvKz00KXtsZXQgcj1vLzQ7ZVtyXT1YdC51bnBhY2sodCxvLGVbcl0pfXJldHVybiBlfTtYdC5jbG9uZT1mdW5jdGlvbih0LGUpe2lmKG0odCkpcmV0dXJuIG0oZSk/KGVbMF09dFswXSxlWzFdPXRbMV0sZVsyXT10WzJdLGVbM109dFszXSxlKTpuZXcgWHQodFswXSx0WzJdLHRbMV0sdFszXSl9O1h0LmZyb21BcnJheT1YdC51bnBhY2s7WHQuZnJvbUNvbHVtbk1ham9yQXJyYXk9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS5kZWZpbmVkKCJ2YWx1ZXMiLHQpLFh0LmNsb25lKHQsZSl9O1h0LmZyb21Sb3dNYWpvckFycmF5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkuZGVmaW5lZCgidmFsdWVzIix0KSxtKGUpPyhlWzBdPXRbMF0sZVsxXT10WzJdLGVbMl09dFsxXSxlWzNdPXRbM10sZSk6bmV3IFh0KHRbMF0sdFsxXSx0WzJdLHRbM10pfTtYdC5mcm9tU2NhbGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJzY2FsZSIsdCksbShlKT8oZVswXT10LngsZVsxXT0wLGVbMl09MCxlWzNdPXQueSxlKTpuZXcgWHQodC54LDAsMCx0LnkpfTtYdC5mcm9tVW5pZm9ybVNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm51bWJlcigic2NhbGUiLHQpLG0oZSk/KGVbMF09dCxlWzFdPTAsZVsyXT0wLGVbM109dCxlKTpuZXcgWHQodCwwLDAsdCl9O1h0LmZyb21Sb3RhdGlvbj1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm51bWJlcigiYW5nbGUiLHQpO2xldCBuPU1hdGguY29zKHQpLG89TWF0aC5zaW4odCk7cmV0dXJuIG0oZSk/KGVbMF09bixlWzFdPW8sZVsyXT0tbyxlWzNdPW4sZSk6bmV3IFh0KG4sLW8sbyxuKX07WHQudG9BcnJheT1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCksbShlKT8oZVswXT10WzBdLGVbMV09dFsxXSxlWzJdPXRbMl0sZVszXT10WzNdLGUpOlt0WzBdLHRbMV0sdFsyXSx0WzNdXX07WHQuZ2V0RWxlbWVudEluZGV4PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJyb3ciLGUsMCkseS50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoInJvdyIsZSwxKSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiY29sdW1uIix0LDApLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJjb2x1bW4iLHQsMSksdCoyK2V9O1h0LmdldENvbHVtbj1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwwKSx5LnR5cGVPZi5udW1iZXIubGVzc1RoYW5PckVxdWFscygiaW5kZXgiLGUsMSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pO2xldCBvPWUqMixyPXRbb10saT10W28rMV07cmV0dXJuIG4ueD1yLG4ueT1pLG59O1h0LnNldENvbHVtbj1mdW5jdGlvbih0LGUsbixvKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwxKSx5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsbikseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG8pLG89WHQuY2xvbmUodCxvKTtsZXQgcj1lKjI7cmV0dXJuIG9bcl09bi54LG9bcisxXT1uLnksb307WHQuZ2V0Um93PWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwxKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89dFtlXSxyPXRbZSsyXTtyZXR1cm4gbi54PW8sbi55PXIsbn07WHQuc2V0Um93PWZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGV4IixlLDApLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJpbmRleCIsZSwxKSx5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsbikseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG8pLG89WHQuY2xvbmUodCxvKSxvW2VdPW4ueCxvW2UrMl09bi55LG99O0FQPW5ldyBKO1h0LnNldFNjYWxlPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2Yub2JqZWN0KCJzY2FsZSIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pO2xldCBvPVh0LmdldFNjYWxlKHQsQVApLHI9ZS54L28ueCxpPWUueS9vLnk7cmV0dXJuIG5bMF09dFswXSpyLG5bMV09dFsxXSpyLG5bMl09dFsyXSppLG5bM109dFszXSppLG59O2JQPW5ldyBKO1h0LnNldFVuaWZvcm1TY2FsZT1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm51bWJlcigic2NhbGUiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKTtsZXQgbz1YdC5nZXRTY2FsZSh0LGJQKSxyPWUvby54LGk9ZS9vLnk7cmV0dXJuIG5bMF09dFswXSpyLG5bMV09dFsxXSpyLG5bMl09dFsyXSppLG5bM109dFszXSppLG59O3diPW5ldyBKO1h0LmdldFNjYWxlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksZS54PUoubWFnbml0dWRlKEouZnJvbUVsZW1lbnRzKHRbMF0sdFsxXSx3YikpLGUueT1KLm1hZ25pdHVkZShKLmZyb21FbGVtZW50cyh0WzJdLHRbM10sd2IpKSxlfTtUYj1uZXcgSjtYdC5nZXRNYXhpbXVtU2NhbGU9ZnVuY3Rpb24odCl7cmV0dXJuIFh0LmdldFNjYWxlKHQsVGIpLEoubWF4aW11bUNvbXBvbmVudChUYil9O3dQPW5ldyBKO1h0LnNldFJvdGF0aW9uPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pO2xldCBvPVh0LmdldFNjYWxlKHQsd1ApO3JldHVybiBuWzBdPWVbMF0qby54LG5bMV09ZVsxXSpvLngsblsyXT1lWzJdKm8ueSxuWzNdPWVbM10qby55LG59O1RQPW5ldyBKO1h0LmdldFJvdGF0aW9uPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKTtsZXQgbj1YdC5nZXRTY2FsZSh0LFRQKTtyZXR1cm4gZVswXT10WzBdL24ueCxlWzFdPXRbMV0vbi54LGVbMl09dFsyXS9uLnksZVszXT10WzNdL24ueSxlfTtYdC5tdWx0aXBseT1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89dFswXSplWzBdK3RbMl0qZVsxXSxyPXRbMF0qZVsyXSt0WzJdKmVbM10saT10WzFdKmVbMF0rdFszXSplWzFdLHM9dFsxXSplWzJdK3RbM10qZVszXTtyZXR1cm4gblswXT1vLG5bMV09aSxuWzJdPXIsblszXT1zLG59O1h0LmFkZD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG5bMF09dFswXStlWzBdLG5bMV09dFsxXStlWzFdLG5bMl09dFsyXStlWzJdLG5bM109dFszXStlWzNdLG59O1h0LnN1YnRyYWN0PWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksblswXT10WzBdLWVbMF0sblsxXT10WzFdLWVbMV0sblsyXT10WzJdLWVbMl0sblszXT10WzNdLWVbM10sbn07WHQubXVsdGlwbHlCeVZlY3Rvcj1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgiY2FydGVzaWFuIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbik7bGV0IG89dFswXSplLngrdFsyXSplLnkscj10WzFdKmUueCt0WzNdKmUueTtyZXR1cm4gbi54PW8sbi55PXIsbn07WHQubXVsdGlwbHlCeVNjYWxhcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5udW1iZXIoInNjYWxhciIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG5bMF09dFswXSplLG5bMV09dFsxXSplLG5bMl09dFsyXSplLG5bM109dFszXSplLG59O1h0Lm11bHRpcGx5QnlTY2FsZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInNjYWxlIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksblswXT10WzBdKmUueCxuWzFdPXRbMV0qZS54LG5bMl09dFsyXSplLnksblszXT10WzNdKmUueSxufTtYdC5tdWx0aXBseUJ5VW5pZm9ybVNjYWxlPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm51bWJlcigic2NhbGUiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuWzBdPXRbMF0qZSxuWzFdPXRbMV0qZSxuWzJdPXRbMl0qZSxuWzNdPXRbM10qZSxufTtYdC5uZWdhdGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJtYXRyaXgiLHQpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixlKSxlWzBdPS10WzBdLGVbMV09LXRbMV0sZVsyXT0tdFsyXSxlWzNdPS10WzNdLGV9O1h0LnRyYW5zcG9zZT1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm9iamVjdCgibWF0cml4Iix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IG49dFswXSxvPXRbMl0scj10WzFdLGk9dFszXTtyZXR1cm4gZVswXT1uLGVbMV09byxlWzJdPXIsZVszXT1pLGV9O1h0LmFicz1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoIm1hdHJpeCIsdCkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLGUpLGVbMF09TWF0aC5hYnModFswXSksZVsxXT1NYXRoLmFicyh0WzFdKSxlWzJdPU1hdGguYWJzKHRbMl0pLGVbM109TWF0aC5hYnModFszXSksZX07WHQuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0WzBdPT09ZVswXSYmdFsxXT09PWVbMV0mJnRbMl09PT1lWzJdJiZ0WzNdPT09ZVszXX07WHQuZXF1YWxzQXJyYXk9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0WzBdPT09ZVtuXSYmdFsxXT09PWVbbisxXSYmdFsyXT09PWVbbisyXSYmdFszXT09PWVbbiszXX07WHQuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIG49bj8/MCx0PT09ZXx8bSh0KSYmbShlKSYmTWF0aC5hYnModFswXS1lWzBdKTw9biYmTWF0aC5hYnModFsxXS1lWzFdKTw9biYmTWF0aC5hYnModFsyXS1lWzJdKTw9biYmTWF0aC5hYnModFszXS1lWzNdKTw9bn07WHQuSURFTlRJVFk9T2JqZWN0LmZyZWV6ZShuZXcgWHQoMSwwLDAsMSkpO1h0LlpFUk89T2JqZWN0LmZyZWV6ZShuZXcgWHQoMCwwLDAsMCkpO1h0LkNPTFVNTjBST1cwPTA7WHQuQ09MVU1OMFJPVzE9MTtYdC5DT0xVTU4xUk9XMD0yO1h0LkNPTFVNTjFST1cxPTM7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoWHQucHJvdG90eXBlLHtsZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiBYdC5wYWNrZWRMZW5ndGh9fX0pO1h0LnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gWHQuY2xvbmUodGhpcyx0KX07WHQucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gWHQuZXF1YWxzKHRoaXMsdCl9O1h0LnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIFh0LmVxdWFsc0Vwc2lsb24odGhpcyx0LGUpfTtYdC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm5gKCR7dGhpc1swXX0sICR7dGhpc1syXX0pCigke3RoaXNbMV19LCAke3RoaXNbM119KWB9O1pvPVh0fSk7dmFyIF9vLEJ0LHRuPSQoKCk9PntacygpO19vPXtQT0lOVFM6RnQuUE9JTlRTLExJTkVTOkZ0LkxJTkVTLExJTkVfTE9PUDpGdC5MSU5FX0xPT1AsTElORV9TVFJJUDpGdC5MSU5FX1NUUklQLFRSSUFOR0xFUzpGdC5UUklBTkdMRVMsVFJJQU5HTEVfU1RSSVA6RnQuVFJJQU5HTEVfU1RSSVAsVFJJQU5HTEVfRkFOOkZ0LlRSSUFOR0xFX0ZBTn07X28uaXNMaW5lcz1mdW5jdGlvbih0KXtyZXR1cm4gdD09PV9vLkxJTkVTfHx0PT09X28uTElORV9MT09QfHx0PT09X28uTElORV9TVFJJUH07X28uaXNUcmlhbmdsZXM9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1fby5UUklBTkdMRVN8fHQ9PT1fby5UUklBTkdMRV9TVFJJUHx8dD09PV9vLlRSSUFOR0xFX0ZBTn07X28udmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1fby5QT0lOVFN8fHQ9PT1fby5MSU5FU3x8dD09PV9vLkxJTkVfTE9PUHx8dD09PV9vLkxJTkVfU1RSSVB8fHQ9PT1fby5UUklBTkdMRVN8fHQ9PT1fby5UUklBTkdMRV9TVFJJUHx8dD09PV9vLlRSSUFOR0xFX0ZBTn07QnQ9T2JqZWN0LmZyZWV6ZShfbyl9KTtmdW5jdGlvbiBCaCh0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVCx5LnR5cGVPZi5vYmplY3QoIm9wdGlvbnMuYXR0cmlidXRlcyIsdC5hdHRyaWJ1dGVzKSx0aGlzLmF0dHJpYnV0ZXM9dC5hdHRyaWJ1dGVzLHRoaXMuaW5kaWNlcz10LmluZGljZXMsdGhpcy5wcmltaXRpdmVUeXBlPXQucHJpbWl0aXZlVHlwZT8/QnQuVFJJQU5HTEVTLHRoaXMuYm91bmRpbmdTcGhlcmU9dC5ib3VuZGluZ1NwaGVyZSx0aGlzLmdlb21ldHJ5VHlwZT10Lmdlb21ldHJ5VHlwZT8/TmkuTk9ORSx0aGlzLmJvdW5kaW5nU3BoZXJlQ1Y9dC5ib3VuZGluZ1NwaGVyZUNWLHRoaXMub2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlfXZhciBPUCxFUCxPYixSUCxTUCx4UCxDUCxQUCxNUCxOUCxVdCxZZT0kKCgpPT57a2UoKTtEdCgpO0llKCk7V3QoKTt5ZSgpO2Z0KCk7SHQoKTtEcCgpO2JmKCk7VW4oKTtrbigpO3RuKCk7WG8oKTtUbigpO2FzKCk7QmguY29tcHV0ZU51bWJlck9mVmVydGljZXM9ZnVuY3Rpb24odCl7eS50eXBlT2Yub2JqZWN0KCJnZW9tZXRyeSIsdCk7bGV0IGU9LTE7Zm9yKGxldCBuIGluIHQuYXR0cmlidXRlcylpZih0LmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkobikmJm0odC5hdHRyaWJ1dGVzW25dKSYmbSh0LmF0dHJpYnV0ZXNbbl0udmFsdWVzKSl7bGV0IG89dC5hdHRyaWJ1dGVzW25dLHI9by52YWx1ZXMubGVuZ3RoL28uY29tcG9uZW50c1BlckF0dHJpYnV0ZTtpZihlIT09ciYmZSE9PS0xKXRocm93IG5ldyBEKCJBbGwgYXR0cmlidXRlIGxpc3RzIG11c3QgaGF2ZSB0aGUgc2FtZSBudW1iZXIgb2YgYXR0cmlidXRlcy4iKTtlPXJ9cmV0dXJuIGV9O09QPW5ldyBjdCxFUD1uZXcgYSxPYj1uZXcgc3QsUlA9W25ldyBjdCxuZXcgY3QsbmV3IGN0XSxTUD1bbmV3IEosbmV3IEosbmV3IEpdLHhQPVtuZXcgSixuZXcgSixuZXcgSl0sQ1A9bmV3IGEsUFA9bmV3IHRlLE1QPW5ldyBzdCxOUD1uZXcgWm87QmguX3RleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHM9ZnVuY3Rpb24odCxlLG4sbyl7bGV0IHIsaT1OdC5jZW50ZXIobyxPUCkscz1jdC50b0NhcnRlc2lhbihpLG4sRVApLGY9JG8uZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUocyxuLE9iKSx1PXN0LmludmVyc2UoZixPYiksYz1TUCxsPVJQO2xbMF0ubG9uZ2l0dWRlPW8ud2VzdCxsWzBdLmxhdGl0dWRlPW8uc291dGgsbFsxXS5sb25naXR1ZGU9by53ZXN0LGxbMV0ubGF0aXR1ZGU9by5ub3J0aCxsWzJdLmxvbmdpdHVkZT1vLmVhc3QsbFsyXS5sYXRpdHVkZT1vLnNvdXRoO2xldCBwPUNQO2ZvcihyPTA7cjwzO3IrKyljdC50b0NhcnRlc2lhbihsW3JdLG4scCkscD1zdC5tdWx0aXBseUJ5UG9pbnRBc1ZlY3Rvcih1LHAscCksY1tyXS54PXAueCxjW3JdLnk9cC55O2xldCBkPXRlLmZyb21BeGlzQW5nbGUoYS5VTklUX1osLWUsUFApLGg9Wi5mcm9tUXVhdGVybmlvbihkLE1QKSxfPXQubGVuZ3RoLGc9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGI9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHc9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLE89TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2ZvcihyPTA7cjxfO3IrKylwPXN0Lm11bHRpcGx5QnlQb2ludEFzVmVjdG9yKHUsdFtyXSxwKSxwPVoubXVsdGlwbHlCeVZlY3RvcihoLHAscCksZz1NYXRoLm1pbihnLHAueCksYj1NYXRoLm1pbihiLHAueSksdz1NYXRoLm1heCh3LHAueCksTz1NYXRoLm1heChPLHAueSk7bGV0IEU9Wm8uZnJvbVJvdGF0aW9uKGUsTlApLFQ9eFA7VFswXS54PWcsVFswXS55PWIsVFsxXS54PWcsVFsxXS55PU8sVFsyXS54PXcsVFsyXS55PWI7bGV0IHg9Y1swXSxNPWNbMl0ueC14LngsTj1jWzFdLnkteC55O2ZvcihyPTA7cjwzO3IrKyl7bGV0IEE9VFtyXTtaby5tdWx0aXBseUJ5VmVjdG9yKEUsQSxBKSxBLng9KEEueC14LngpL00sQS55PShBLnkteC55KS9OfWxldCBGPVRbMF0sST1UWzFdLHY9VFsyXSxCPW5ldyBBcnJheSg2KTtyZXR1cm4gSi5wYWNrKEYsQiksSi5wYWNrKEksQiwyKSxKLnBhY2sodixCLDQpLEJ9O1V0PUJofSk7ZnVuY3Rpb24gSVAodCl7aWYodD10Pz9JdC5FTVBUWV9PQkpFQ1QsIW0odC5jb21wb25lbnREYXRhdHlwZSkpdGhyb3cgbmV3IEQoIm9wdGlvbnMuY29tcG9uZW50RGF0YXR5cGUgaXMgcmVxdWlyZWQuIik7aWYoIW0odC5jb21wb25lbnRzUGVyQXR0cmlidXRlKSl0aHJvdyBuZXcgRCgib3B0aW9ucy5jb21wb25lbnRzUGVyQXR0cmlidXRlIGlzIHJlcXVpcmVkLiIpO2lmKHQuY29tcG9uZW50c1BlckF0dHJpYnV0ZTwxfHx0LmNvbXBvbmVudHNQZXJBdHRyaWJ1dGU+NCl0aHJvdyBuZXcgRCgib3B0aW9ucy5jb21wb25lbnRzUGVyQXR0cmlidXRlIG11c3QgYmUgYmV0d2VlbiAxIGFuZCA0LiIpO2lmKCFtKHQudmFsdWVzKSl0aHJvdyBuZXcgRCgib3B0aW9ucy52YWx1ZXMgaXMgcmVxdWlyZWQuIik7dGhpcy5jb21wb25lbnREYXRhdHlwZT10LmNvbXBvbmVudERhdGF0eXBlLHRoaXMuY29tcG9uZW50c1BlckF0dHJpYnV0ZT10LmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUsdGhpcy5ub3JtYWxpemU9dC5ub3JtYWxpemU/PyExLHRoaXMudmFsdWVzPXQudmFsdWVzfXZhciBpdCwkZT0kKCgpPT57eWUoKTtmdCgpO0h0KCk7aXQ9SVB9KTtmdW5jdGlvbiB2UCh0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVCx0aGlzLnBvc2l0aW9uPXQucG9zaXRpb24sdGhpcy5ub3JtYWw9dC5ub3JtYWwsdGhpcy5zdD10LnN0LHRoaXMuYml0YW5nZW50PXQuYml0YW5nZW50LHRoaXMudGFuZ2VudD10LnRhbmdlbnQsdGhpcy5jb2xvcj10LmNvbG9yfXZhciBpZSxhbj0kKCgpPT57eWUoKTtpZT12UH0pO3ZhciBxZSxFYixSYj0kKCgpPT57a2UoKTtEdCgpO19yKCk7V3QoKTtIdCgpO2JmKCk7VW4oKTtrbigpO3FlPXtTQ0FMQVI6IlNDQUxBUiIsVkVDMjoiVkVDMiIsVkVDMzoiVkVDMyIsVkVDNDoiVkVDNCIsTUFUMjoiTUFUMiIsTUFUMzoiTUFUMyIsTUFUNDoiTUFUNCJ9O3FlLmdldE1hdGhUeXBlPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIHFlLlNDQUxBUjpyZXR1cm4gTnVtYmVyO2Nhc2UgcWUuVkVDMjpyZXR1cm4gSjtjYXNlIHFlLlZFQzM6cmV0dXJuIGE7Y2FzZSBxZS5WRUM0OnJldHVybiBtZTtjYXNlIHFlLk1BVDI6cmV0dXJuIFpvO2Nhc2UgcWUuTUFUMzpyZXR1cm4gWjtjYXNlIHFlLk1BVDQ6cmV0dXJuIHN0O2RlZmF1bHQ6dGhyb3cgbmV3IEQoImF0dHJpYnV0ZVR5cGUgaXMgbm90IGEgdmFsaWQgdmFsdWUuIil9fTtxZS5nZXROdW1iZXJPZkNvbXBvbmVudHM9ZnVuY3Rpb24odCl7c3dpdGNoKHQpe2Nhc2UgcWUuU0NBTEFSOnJldHVybiAxO2Nhc2UgcWUuVkVDMjpyZXR1cm4gMjtjYXNlIHFlLlZFQzM6cmV0dXJuIDM7Y2FzZSBxZS5WRUM0OmNhc2UgcWUuTUFUMjpyZXR1cm4gNDtjYXNlIHFlLk1BVDM6cmV0dXJuIDk7Y2FzZSBxZS5NQVQ0OnJldHVybiAxNjtkZWZhdWx0OnRocm93IG5ldyBEKCJhdHRyaWJ1dGVUeXBlIGlzIG5vdCBhIHZhbGlkIHZhbHVlLiIpfX07cWUuZ2V0QXR0cmlidXRlTG9jYXRpb25Db3VudD1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSBxZS5TQ0FMQVI6Y2FzZSBxZS5WRUMyOmNhc2UgcWUuVkVDMzpjYXNlIHFlLlZFQzQ6cmV0dXJuIDE7Y2FzZSBxZS5NQVQyOnJldHVybiAyO2Nhc2UgcWUuTUFUMzpyZXR1cm4gMztjYXNlIHFlLk1BVDQ6cmV0dXJuIDQ7ZGVmYXVsdDp0aHJvdyBuZXcgRCgiYXR0cmlidXRlVHlwZSBpcyBub3QgYSB2YWxpZCB2YWx1ZS4iKX19O3FlLmdldEdsc2xUeXBlPWZ1bmN0aW9uKHQpe3N3aXRjaCh5LnR5cGVPZi5zdHJpbmcoImF0dHJpYnV0ZVR5cGUiLHQpLHQpe2Nhc2UgcWUuU0NBTEFSOnJldHVybiJmbG9hdCI7Y2FzZSBxZS5WRUMyOnJldHVybiJ2ZWMyIjtjYXNlIHFlLlZFQzM6cmV0dXJuInZlYzMiO2Nhc2UgcWUuVkVDNDpyZXR1cm4idmVjNCI7Y2FzZSBxZS5NQVQyOnJldHVybiJtYXQyIjtjYXNlIHFlLk1BVDM6cmV0dXJuIm1hdDMiO2Nhc2UgcWUuTUFUNDpyZXR1cm4ibWF0NCI7ZGVmYXVsdDp0aHJvdyBuZXcgRCgiYXR0cmlidXRlVHlwZSBpcyBub3QgYSB2YWxpZCB2YWx1ZS4iKX19O0ViPU9iamVjdC5mcmVlemUocWUpfSk7ZnVuY3Rpb24gQnAodCl7cmV0dXJuIENiWzBdPXQsQ2JbMF19ZnVuY3Rpb24gVWgodCl7cmV0dXJuIHQ+PjFeLSh0JjEpfXZhciBTYix4Yixlbix3ZixDYixraCxubixmcz0kKCgpPT57a2UoKTtEdCgpO0RlKCk7V3QoKTtmdCgpO0h0KCk7S3QoKTtSYigpO1NiPTEvMjU2LHhiPTI1Nixlbj17fTtlbi5vY3RFbmNvZGVJblJhbmdlPWZ1bmN0aW9uKHQsZSxuKXt5LmRlZmluZWQoInZlY3RvciIsdCkseS5kZWZpbmVkKCJyZXN1bHQiLG4pO2xldCBvPWEubWFnbml0dWRlU3F1YXJlZCh0KTtpZihNYXRoLmFicyhvLTEpPlAuRVBTSUxPTjYpdGhyb3cgbmV3IEQoInZlY3RvciBtdXN0IGJlIG5vcm1hbGl6ZWQuIik7aWYobi54PXQueC8oTWF0aC5hYnModC54KStNYXRoLmFicyh0LnkpK01hdGguYWJzKHQueikpLG4ueT10LnkvKE1hdGguYWJzKHQueCkrTWF0aC5hYnModC55KStNYXRoLmFicyh0LnopKSx0Lno8MCl7bGV0IHI9bi54LGk9bi55O24ueD0oMS1NYXRoLmFicyhpKSkqUC5zaWduTm90WmVybyhyKSxuLnk9KDEtTWF0aC5hYnMocikpKlAuc2lnbk5vdFplcm8oaSl9cmV0dXJuIG4ueD1QLnRvU05vcm0obi54LGUpLG4ueT1QLnRvU05vcm0obi55LGUpLG59O2VuLm9jdEVuY29kZT1mdW5jdGlvbih0LGUpe3JldHVybiBlbi5vY3RFbmNvZGVJblJhbmdlKHQsMjU1LGUpfTt3Zj1uZXcgSixDYj1uZXcgVWludDhBcnJheSgxKTtlbi5vY3RFbmNvZGVUb0NhcnRlc2lhbjQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZW4ub2N0RW5jb2RlSW5SYW5nZSh0LDY1NTM1LHdmKSxlLng9QnAod2YueCpTYiksZS55PUJwKHdmLngpLGUuej1CcCh3Zi55KlNiKSxlLnc9QnAod2YueSksZX07ZW4ub2N0RGVjb2RlSW5SYW5nZT1mdW5jdGlvbih0LGUsbixvKXtpZih5LmRlZmluZWQoInJlc3VsdCIsbyksdDwwfHx0Pm58fGU8MHx8ZT5uKXRocm93IG5ldyBEKGB4IGFuZCB5IG11c3QgYmUgdW5zaWduZWQgbm9ybWFsaXplZCBpbnRlZ2VycyBiZXR3ZWVuIDAgYW5kICR7bn1gKTtpZihvLng9UC5mcm9tU05vcm0odCxuKSxvLnk9UC5mcm9tU05vcm0oZSxuKSxvLno9MS0oTWF0aC5hYnMoby54KStNYXRoLmFicyhvLnkpKSxvLno8MCl7bGV0IHI9by54O28ueD0oMS1NYXRoLmFicyhvLnkpKSpQLnNpZ25Ob3RaZXJvKHIpLG8ueT0oMS1NYXRoLmFicyhyKSkqUC5zaWduTm90WmVybyhvLnkpfXJldHVybiBhLm5vcm1hbGl6ZShvLG8pfTtlbi5vY3REZWNvZGU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBlbi5vY3REZWNvZGVJblJhbmdlKHQsZSwyNTUsbil9O2VuLm9jdERlY29kZUZyb21DYXJ0ZXNpYW40PWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJlbmNvZGVkIix0KSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSk7bGV0IG49dC54LG89dC55LHI9dC56LGk9dC53O2lmKG48MHx8bj4yNTV8fG88MHx8bz4yNTV8fHI8MHx8cj4yNTV8fGk8MHx8aT4yNTUpdGhyb3cgbmV3IEQoIngsIHksIHosIGFuZCB3IG11c3QgYmUgdW5zaWduZWQgbm9ybWFsaXplZCBpbnRlZ2VycyBiZXR3ZWVuIDAgYW5kIDI1NSIpO2xldCBzPW4qeGIrbyxmPXIqeGIraTtyZXR1cm4gZW4ub2N0RGVjb2RlSW5SYW5nZShzLGYsNjU1MzUsZSl9O2VuLm9jdFBhY2tGbG9hdD1mdW5jdGlvbih0KXtyZXR1cm4geS5kZWZpbmVkKCJlbmNvZGVkIix0KSwyNTYqdC54K3QueX07a2g9bmV3IEo7ZW4ub2N0RW5jb2RlRmxvYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGVuLm9jdEVuY29kZSh0LGtoKSxlbi5vY3RQYWNrRmxvYXQoa2gpfTtlbi5vY3REZWNvZGVGbG9hdD1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgidmFsdWUiLHQpO2xldCBuPXQvMjU2LG89TWF0aC5mbG9vcihuKSxyPShuLW8pKjI1NjtyZXR1cm4gZW4ub2N0RGVjb2RlKG8scixlKX07ZW4ub2N0UGFjaz1mdW5jdGlvbih0LGUsbixvKXt5LmRlZmluZWQoInYxIix0KSx5LmRlZmluZWQoInYyIixlKSx5LmRlZmluZWQoInYzIixuKSx5LmRlZmluZWQoInJlc3VsdCIsbyk7bGV0IHI9ZW4ub2N0RW5jb2RlRmxvYXQodCksaT1lbi5vY3RFbmNvZGVGbG9hdChlKSxzPWVuLm9jdEVuY29kZShuLGtoKTtyZXR1cm4gby54PTY1NTM2KnMueCtyLG8ueT02NTUzNipzLnkraSxvfTtlbi5vY3RVbnBhY2s9ZnVuY3Rpb24odCxlLG4sbyl7eS5kZWZpbmVkKCJwYWNrZWQiLHQpLHkuZGVmaW5lZCgidjEiLGUpLHkuZGVmaW5lZCgidjIiLG4pLHkuZGVmaW5lZCgidjMiLG8pO2xldCByPXQueC82NTUzNixpPU1hdGguZmxvb3Iocikscz0oci1pKSo2NTUzNjtyPXQueS82NTUzNjtsZXQgZj1NYXRoLmZsb29yKHIpLHU9KHItZikqNjU1MzY7ZW4ub2N0RGVjb2RlRmxvYXQocyxlKSxlbi5vY3REZWNvZGVGbG9hdCh1LG4pLGVuLm9jdERlY29kZShpLGYsbyl9O2VuLmNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzPWZ1bmN0aW9uKHQpe3kuZGVmaW5lZCgidGV4dHVyZUNvb3JkaW5hdGVzIix0KTtsZXQgZT10LngqNDA5NXwwLG49dC55KjQwOTV8MDtyZXR1cm4gNDA5NiplK259O2VuLmRlY29tcHJlc3NUZXh0dXJlQ29vcmRpbmF0ZXM9ZnVuY3Rpb24odCxlKXt5LmRlZmluZWQoImNvbXByZXNzZWQiLHQpLHkuZGVmaW5lZCgicmVzdWx0IixlKTtsZXQgbj10LzQwOTYsbz1NYXRoLmZsb29yKG4pO3JldHVybiBlLng9by80MDk1LGUueT0odC1vKjQwOTYpLzQwOTUsZX07ZW4uemlnWmFnRGVsdGFEZWNvZGU9ZnVuY3Rpb24odCxlLG4pe3kuZGVmaW5lZCgidUJ1ZmZlciIsdCkseS5kZWZpbmVkKCJ2QnVmZmVyIixlKSx5LnR5cGVPZi5udW1iZXIuZXF1YWxzKCJ1QnVmZmVyLmxlbmd0aCIsInZCdWZmZXIubGVuZ3RoIix0Lmxlbmd0aCxlLmxlbmd0aCksbShuKSYmeS50eXBlT2YubnVtYmVyLmVxdWFscygidUJ1ZmZlci5sZW5ndGgiLCJoZWlnaHRCdWZmZXIubGVuZ3RoIix0Lmxlbmd0aCxuLmxlbmd0aCk7bGV0IG89dC5sZW5ndGgscj0wLGk9MCxzPTA7Zm9yKGxldCBmPTA7ZjxvOysrZilyKz1VaCh0W2ZdKSxpKz1VaChlW2ZdKSx0W2ZdPXIsZVtmXT1pLG0obikmJihzKz1VaChuW2ZdKSxuW2ZdPXMpfTtlbi5kZXF1YW50aXplPWZ1bmN0aW9uKHQsZSxuLG8pe3kuZGVmaW5lZCgidHlwZWRBcnJheSIsdCkseS5kZWZpbmVkKCJjb21wb25lbnREYXRhdHlwZSIsZSkseS5kZWZpbmVkKCJ0eXBlIixuKSx5LmRlZmluZWQoImNvdW50IixvKTtsZXQgcj1FYi5nZXROdW1iZXJPZkNvbXBvbmVudHMobiksaTtzd2l0Y2goZSl7Y2FzZSBldC5CWVRFOmk9MTI3O2JyZWFrO2Nhc2UgZXQuVU5TSUdORURfQllURTppPTI1NTticmVhaztjYXNlIGV0LlNIT1JUOmk9MzI3Njc7YnJlYWs7Y2FzZSBldC5VTlNJR05FRF9TSE9SVDppPTY1NTM1O2JyZWFrO2Nhc2UgZXQuSU5UOmk9MjE0NzQ4MzY0NzticmVhaztjYXNlIGV0LlVOU0lHTkVEX0lOVDppPTQyOTQ5NjcyOTU7YnJlYWs7ZGVmYXVsdDp0aHJvdyBuZXcgRChgQ2Fubm90IGRlcXVhbnRpemUgY29tcG9uZW50IGRhdGF0eXBlOiAke2V9YCl9bGV0IHM9bmV3IEZsb2F0MzJBcnJheShvKnIpO2ZvcihsZXQgZj0wO2Y8bztmKyspZm9yKGxldCB1PTA7dTxyO3UrKyl7bGV0IGM9ZipyK3U7c1tjXT1NYXRoLm1heCh0W2NdL2ksLTEpfXJldHVybiBzfTtlbi5kZWNvZGVSR0I1NjU9ZnVuY3Rpb24odCxlKXt5LmRlZmluZWQoInR5cGVkQXJyYXkiLHQpO2xldCBuPXQubGVuZ3RoKjM7bShlKSYmeS50eXBlT2YubnVtYmVyLmVxdWFscygicmVzdWx0Lmxlbmd0aCIsInR5cGVkQXJyYXkubGVuZ3RoICogMyIsZS5sZW5ndGgsbik7bGV0IG89dC5sZW5ndGg7bShlKXx8KGU9bmV3IEZsb2F0MzJBcnJheShvKjMpKTtsZXQgcj0zMSxpPTYzLHM9MS8zMSxmPTEvNjM7Zm9yKGxldCB1PTA7dTxvO3UrKyl7bGV0IGM9dFt1XSxsPWM+PjExLHA9Yz4+NSZpLGQ9YyZyLGg9Myp1O2VbaF09bCpzLGVbaCsxXT1wKmYsZVtoKzJdPWQqc31yZXR1cm4gZX07bm49ZW59KTtmdW5jdGlvbiBGUCh0LGUsbixvLHIpe3kuZGVmaW5lZCgicG9pbnQiLHQpLHkuZGVmaW5lZCgicDAiLGUpLHkuZGVmaW5lZCgicDEiLG4pLHkuZGVmaW5lZCgicDIiLG8pLG0ocil8fChyPW5ldyBhKTtsZXQgaSxzLGYsdSxjLGwscCxkO2lmKG0oZS56KSl7aWYoYS5lcXVhbHNFcHNpbG9uKHQsZSxQLkVQU0lMT04xNCkpcmV0dXJuIGEuY2xvbmUoYS5VTklUX1gscik7aWYoYS5lcXVhbHNFcHNpbG9uKHQsbixQLkVQU0lMT04xNCkpcmV0dXJuIGEuY2xvbmUoYS5VTklUX1kscik7aWYoYS5lcXVhbHNFcHNpbG9uKHQsbyxQLkVQU0lMT04xNCkpcmV0dXJuIGEuY2xvbmUoYS5VTklUX1oscik7aT1hLnN1YnRyYWN0KG4sZSxQYikscz1hLnN1YnRyYWN0KG8sZSxNYiksZj1hLnN1YnRyYWN0KHQsZSxOYiksdT1hLmRvdChpLGkpLGM9YS5kb3QoaSxzKSxsPWEuZG90KGksZikscD1hLmRvdChzLHMpLGQ9YS5kb3QocyxmKX1lbHNle2lmKEouZXF1YWxzRXBzaWxvbih0LGUsUC5FUFNJTE9OMTQpKXJldHVybiBhLmNsb25lKGEuVU5JVF9YLHIpO2lmKEouZXF1YWxzRXBzaWxvbih0LG4sUC5FUFNJTE9OMTQpKXJldHVybiBhLmNsb25lKGEuVU5JVF9ZLHIpO2lmKEouZXF1YWxzRXBzaWxvbih0LG8sUC5FUFNJTE9OMTQpKXJldHVybiBhLmNsb25lKGEuVU5JVF9aLHIpO2k9Si5zdWJ0cmFjdChuLGUsUGIpLHM9Si5zdWJ0cmFjdChvLGUsTWIpLGY9Si5zdWJ0cmFjdCh0LGUsTmIpLHU9Si5kb3QoaSxpKSxjPUouZG90KGkscyksbD1KLmRvdChpLGYpLHA9Si5kb3QocyxzKSxkPUouZG90KHMsZil9ci55PXAqbC1jKmQsci56PXUqZC1jKmw7bGV0IGg9dSpwLWMqYztpZihoIT09MClyZXR1cm4gci55Lz1oLHIuei89aCxyLng9MS1yLnktci56LHJ9dmFyIFBiLE1iLE5iLEliLHZiPSQoKCk9PntrZSgpO0R0KCk7V3QoKTtmdCgpO0t0KCk7UGI9bmV3IGEsTWI9bmV3IGEsTmI9bmV3IGE7SWI9RlB9KTtmdW5jdGlvbiBpaSgpe3RoaXMuaGlnaD1hLmNsb25lKGEuWkVSTyksdGhpcy5sb3c9YS5jbG9uZShhLlpFUk8pfXZhciBJaSxHaCxRcyxWaD0kKCgpPT57RHQoKTtXdCgpO2Z0KCk7aWkuZW5jb2RlPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2YubnVtYmVyKCJ2YWx1ZSIsdCksbShlKXx8KGU9e2hpZ2g6MCxsb3c6MH0pO2xldCBuO3JldHVybiB0Pj0wPyhuPU1hdGguZmxvb3IodC82NTUzNikqNjU1MzYsZS5oaWdoPW4sZS5sb3c9dC1uKToobj1NYXRoLmZsb29yKC10LzY1NTM2KSo2NTUzNixlLmhpZ2g9LW4sZS5sb3c9dCtuKSxlfTtJaT17aGlnaDowLGxvdzowfTtpaS5mcm9tQ2FydGVzaWFuPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJjYXJ0ZXNpYW4iLHQpLG0oZSl8fChlPW5ldyBpaSk7bGV0IG49ZS5oaWdoLG89ZS5sb3c7cmV0dXJuIGlpLmVuY29kZSh0LngsSWkpLG4ueD1JaS5oaWdoLG8ueD1JaS5sb3csaWkuZW5jb2RlKHQueSxJaSksbi55PUlpLmhpZ2gsby55PUlpLmxvdyxpaS5lbmNvZGUodC56LElpKSxuLno9SWkuaGlnaCxvLno9SWkubG93LGV9O0doPW5ldyBpaTtpaS53cml0ZUVsZW1lbnRzPWZ1bmN0aW9uKHQsZSxuKXt5LmRlZmluZWQoImNhcnRlc2lhbkFycmF5IixlKSx5LnR5cGVPZi5udW1iZXIoImluZGV4IixuKSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiaW5kZXgiLG4sMCksaWkuZnJvbUNhcnRlc2lhbih0LEdoKTtsZXQgbz1HaC5oaWdoLHI9R2gubG93O2Vbbl09by54LGVbbisxXT1vLnksZVtuKzJdPW8ueixlW24rM109ci54LGVbbis0XT1yLnksZVtuKzVdPXIuen07UXM9aWl9KTt2YXIgbm8sTHQsWmU9JCgoKT0+e2Z0KCk7SHQoKTtLdCgpO1pzKCk7bm89e1VOU0lHTkVEX0JZVEU6RnQuVU5TSUdORURfQllURSxVTlNJR05FRF9TSE9SVDpGdC5VTlNJR05FRF9TSE9SVCxVTlNJR05FRF9JTlQ6RnQuVU5TSUdORURfSU5UfTtuby5nZXRTaXplSW5CeXRlcz1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSBuby5VTlNJR05FRF9CWVRFOnJldHVybiBVaW50OEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UO2Nhc2Ugbm8uVU5TSUdORURfU0hPUlQ6cmV0dXJuIFVpbnQxNkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UO2Nhc2Ugbm8uVU5TSUdORURfSU5UOnJldHVybiBVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVH10aHJvdyBuZXcgRCgiaW5kZXhEYXRhdHlwZSBpcyByZXF1aXJlZCBhbmQgbXVzdCBiZSBhIHZhbGlkIEluZGV4RGF0YXR5cGUgY29uc3RhbnQuIil9O25vLmZyb21TaXplSW5CeXRlcz1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSAyOnJldHVybiBuby5VTlNJR05FRF9TSE9SVDtjYXNlIDQ6cmV0dXJuIG5vLlVOU0lHTkVEX0lOVDtjYXNlIDE6cmV0dXJuIG5vLlVOU0lHTkVEX0JZVEU7ZGVmYXVsdDp0aHJvdyBuZXcgRCgiU2l6ZSBpbiBieXRlcyBjYW5ub3QgYmUgbWFwcGVkIHRvIGFuIEluZGV4RGF0YXR5cGUiKX19O25vLnZhbGlkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpJiYodD09PW5vLlVOU0lHTkVEX0JZVEV8fHQ9PT1uby5VTlNJR05FRF9TSE9SVHx8dD09PW5vLlVOU0lHTkVEX0lOVCl9O25vLmNyZWF0ZVR5cGVkQXJyYXk9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgRCgibnVtYmVyT2ZWZXJ0aWNlcyBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdD49UC5TSVhUWV9GT1VSX0tJTE9CWVRFUz9uZXcgVWludDMyQXJyYXkoZSk6bmV3IFVpbnQxNkFycmF5KGUpfTtuby5jcmVhdGVUeXBlZEFycmF5RnJvbUFycmF5QnVmZmVyPWZ1bmN0aW9uKHQsZSxuLG8pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJudW1iZXJPZlZlcnRpY2VzIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJzb3VyY2VBcnJheSBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgRCgiYnl0ZU9mZnNldCBpcyByZXF1aXJlZC4iKTtyZXR1cm4gdD49UC5TSVhUWV9GT1VSX0tJTE9CWVRFUz9uZXcgVWludDMyQXJyYXkoZSxuLG8pOm5ldyBVaW50MTZBcnJheShlLG4sbyl9O25vLmZyb21UeXBlZEFycmF5PWZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiBuby5VTlNJR05FRF9CWVRFO2lmKHQgaW5zdGFuY2VvZiBVaW50MTZBcnJheSlyZXR1cm4gbm8uVU5TSUdORURfU0hPUlQ7aWYodCBpbnN0YW5jZW9mIFVpbnQzMkFycmF5KXJldHVybiBuby5VTlNJR05FRF9JTlQ7dGhyb3cgbmV3IEQoImFycmF5IG11c3QgYmUgYSBVaW50OEFycmF5LCBVaW50MTZBcnJheSwgb3IgVWludDMyQXJyYXkuIil9O0x0PU9iamVjdC5mcmVlemUobm8pfSk7ZnVuY3Rpb24gRmIodCxlLG4pe2xldCBvPXQrZTtyZXR1cm4gUC5zaWduKHQpIT09UC5zaWduKGUpJiZNYXRoLmFicyhvL01hdGgubWF4KE1hdGguYWJzKHQpLE1hdGguYWJzKGUpKSk8bj8wOm99dmFyIHpoLEFyLFVwPSQoKCk9PntIdCgpO0t0KCk7emg9e307emguY29tcHV0ZURpc2NyaW1pbmFudD1mdW5jdGlvbih0LGUsbil7aWYodHlwZW9mIHQhPSJudW1iZXIiKXRocm93IG5ldyBEKCJhIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiBlIT0ibnVtYmVyIil0aHJvdyBuZXcgRCgiYiBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgbiE9Im51bWJlciIpdGhyb3cgbmV3IEQoImMgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7cmV0dXJuIGUqZS00KnQqbn07emguY29tcHV0ZVJlYWxSb290cz1mdW5jdGlvbih0LGUsbil7aWYodHlwZW9mIHQhPSJudW1iZXIiKXRocm93IG5ldyBEKCJhIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiBlIT0ibnVtYmVyIil0aHJvdyBuZXcgRCgiYiBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgbiE9Im51bWJlciIpdGhyb3cgbmV3IEQoImMgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7bGV0IG87aWYodD09PTApcmV0dXJuIGU9PT0wP1tdOlstbi9lXTtpZihlPT09MCl7aWYobj09PTApcmV0dXJuWzAsMF07bGV0IHU9TWF0aC5hYnMobiksYz1NYXRoLmFicyh0KTtpZih1PGMmJnUvYzxQLkVQU0lMT04xNClyZXR1cm5bMCwwXTtpZih1PmMmJmMvdTxQLkVQU0lMT04xNClyZXR1cm5bXTtpZihvPS1uL3QsbzwwKXJldHVybltdO2xldCBsPU1hdGguc3FydChvKTtyZXR1cm5bLWwsbF19ZWxzZSBpZihuPT09MClyZXR1cm4gbz0tZS90LG88MD9bbywwXTpbMCxvXTtsZXQgcj1lKmUsaT00KnQqbixzPUZiKHIsLWksUC5FUFNJTE9OMTQpO2lmKHM8MClyZXR1cm5bXTtsZXQgZj0tLjUqRmIoZSxQLnNpZ24oZSkqTWF0aC5zcXJ0KHMpLFAuRVBTSUxPTjE0KTtyZXR1cm4gZT4wP1tmL3Qsbi9mXTpbbi9mLGYvdF19O0FyPXpofSk7ZnVuY3Rpb24gamgodCxlLG4sbyl7bGV0IHI9dCxpPWUvMyxzPW4vMyxmPW8sdT1yKnMsYz1pKmYsbD1pKmkscD1zKnMsZD1yKnMtbCxoPXIqZi1pKnMsXz1pKmYtcCxnPTQqZCpfLWgqaCxiLHc7aWYoZzwwKXtsZXQgUixudCxhdDtsKmM+PXUqcD8oUj1yLG50PWQsYXQ9LTIqaSpkK3IqaCk6KFI9ZixudD1fLGF0PS1mKmgrMipzKl8pO2xldCBfdD0tKGF0PDA/LTE6MSkqTWF0aC5hYnMoUikqTWF0aC5zcXJ0KC1nKTt3PS1hdCtfdDtsZXQgb3Q9dy8yLFB0PW90PDA/LU1hdGgucG93KC1vdCwxLzMpOk1hdGgucG93KG90LDEvMyksZ3Q9dz09PV90Py1QdDotbnQvUHQ7cmV0dXJuIGI9bnQ8PTA/UHQrZ3Q6LWF0LyhQdCpQdCtndCpndCtudCksbCpjPj11KnA/WyhiLWkpL3JdOlstZi8oYitzKV19bGV0IE89ZCxFPS0yKmkqZCtyKmgsVD1fLHg9LWYqaCsyKnMqXyxNPU1hdGguc3FydChnKSxOPU1hdGguc3FydCgzKS8yLEY9TWF0aC5hYnMoTWF0aC5hdGFuMihyKk0sLUUpLzMpO2I9MipNYXRoLnNxcnQoLU8pO2xldCBJPU1hdGguY29zKEYpO3c9YipJO2xldCB2PWIqKC1JLzItTipNYXRoLnNpbihGKSksQj13K3Y+MippP3ctaTp2LWksQT1yLFM9Qi9BO0Y9TWF0aC5hYnMoTWF0aC5hdGFuMihmKk0sLXgpLzMpLGI9MipNYXRoLnNxcnQoLVQpLEk9TWF0aC5jb3MoRiksdz1iKkksdj1iKigtSS8yLU4qTWF0aC5zaW4oRikpO2xldCBDPS1mLEw9dyt2PDIqcz93K3M6ditzLHo9Qy9MLGo9QSpMLGs9LUIqTC1BKkMscT1CKkMsVz0ocyprLWkqcSkvKC1pKmsrcypqKTtyZXR1cm4gUzw9Vz9TPD16P1c8PXo/W1MsVyx6XTpbUyx6LFddOlt6LFMsV106Uzw9ej9bVyxTLHpdOlc8PXo/W1cseixTXTpbeixXLFNdfXZhciBIaCxrcCxMYj0kKCgpPT57SHQoKTtVcCgpO0hoPXt9O0hoLmNvbXB1dGVEaXNjcmltaW5hbnQ9ZnVuY3Rpb24odCxlLG4sbyl7aWYodHlwZW9mIHQhPSJudW1iZXIiKXRocm93IG5ldyBEKCJhIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiBlIT0ibnVtYmVyIil0aHJvdyBuZXcgRCgiYiBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgbiE9Im51bWJlciIpdGhyb3cgbmV3IEQoImMgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIG8hPSJudW1iZXIiKXRocm93IG5ldyBEKCJkIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2xldCByPXQqdCxpPWUqZSxzPW4qbixmPW8qbztyZXR1cm4gMTgqdCplKm4qbytpKnMtMjcqcipmLTQqKHQqcypuK2kqZSpvKX07SGguY29tcHV0ZVJlYWxSb290cz1mdW5jdGlvbih0LGUsbixvKXtpZih0eXBlb2YgdCE9Im51bWJlciIpdGhyb3cgbmV3IEQoImEgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIGUhPSJudW1iZXIiKXRocm93IG5ldyBEKCJiIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiBuIT0ibnVtYmVyIil0aHJvdyBuZXcgRCgiYyBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgbyE9Im51bWJlciIpdGhyb3cgbmV3IEQoImQgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7bGV0IHIsaTtpZih0PT09MClyZXR1cm4gQXIuY29tcHV0ZVJlYWxSb290cyhlLG4sbyk7aWYoZT09PTApe2lmKG49PT0wKXtpZihvPT09MClyZXR1cm5bMCwwLDBdO2k9LW8vdDtsZXQgcz1pPDA/LU1hdGgucG93KC1pLDEvMyk6TWF0aC5wb3coaSwxLzMpO3JldHVybltzLHMsc119ZWxzZSBpZihvPT09MClyZXR1cm4gcj1Bci5jb21wdXRlUmVhbFJvb3RzKHQsMCxuKSxyLkxlbmd0aD09PTA/WzBdOltyWzBdLDAsclsxXV07cmV0dXJuIGpoKHQsMCxuLG8pfWVsc2V7aWYobj09PTApcmV0dXJuIG89PT0wPyhpPS1lL3QsaTwwP1tpLDAsMF06WzAsMCxpXSk6amgodCxlLDAsbyk7aWYobz09PTApcmV0dXJuIHI9QXIuY29tcHV0ZVJlYWxSb290cyh0LGUsbiksci5sZW5ndGg9PT0wP1swXTpyWzFdPD0wP1tyWzBdLHJbMV0sMF06clswXT49MD9bMCxyWzBdLHJbMV1dOltyWzBdLDAsclsxXV19cmV0dXJuIGpoKHQsZSxuLG8pfTtrcD1IaH0pO2Z1bmN0aW9uIFVyKHQsZSxuLG8pe2xldCByPXQqdCxpPWUtMypyLzgscz1uLWUqdC8yK3IqdC84LGY9by1uKnQvNCtlKnIvMTYtMypyKnIvMjU2LHU9a3AuY29tcHV0ZVJlYWxSb290cygxLDIqaSxpKmktNCpmLC1zKnMpO2lmKHUubGVuZ3RoPjApe2xldCBjPS10LzQsbD11W3UubGVuZ3RoLTFdO2lmKE1hdGguYWJzKGwpPFAuRVBTSUxPTjE0KXtsZXQgcD1Bci5jb21wdXRlUmVhbFJvb3RzKDEsaSxmKTtpZihwLmxlbmd0aD09PTIpe2xldCBkPXBbMF0saD1wWzFdLF87aWYoZD49MCYmaD49MCl7bGV0IGc9TWF0aC5zcXJ0KGQpLGI9TWF0aC5zcXJ0KGgpO3JldHVybltjLWIsYy1nLGMrZyxjK2JdfWVsc2V7aWYoZD49MCYmaDwwKXJldHVybiBfPU1hdGguc3FydChkKSxbYy1fLGMrX107aWYoZDwwJiZoPj0wKXJldHVybiBfPU1hdGguc3FydChoKSxbYy1fLGMrX119fXJldHVybltdfWVsc2UgaWYobD4wKXtsZXQgcD1NYXRoLnNxcnQobCksZD0oaStsLXMvcCkvMixoPShpK2wrcy9wKS8yLF89QXIuY29tcHV0ZVJlYWxSb290cygxLHAsZCksZz1Bci5jb21wdXRlUmVhbFJvb3RzKDEsLXAsaCk7cmV0dXJuIF8ubGVuZ3RoIT09MD8oX1swXSs9YyxfWzFdKz1jLGcubGVuZ3RoIT09MD8oZ1swXSs9YyxnWzFdKz1jLF9bMV08PWdbMF0/W19bMF0sX1sxXSxnWzBdLGdbMV1dOmdbMV08PV9bMF0/W2dbMF0sZ1sxXSxfWzBdLF9bMV1dOl9bMF0+PWdbMF0mJl9bMV08PWdbMV0/W2dbMF0sX1swXSxfWzFdLGdbMV1dOmdbMF0+PV9bMF0mJmdbMV08PV9bMV0/W19bMF0sZ1swXSxnWzFdLF9bMV1dOl9bMF0+Z1swXSYmX1swXTxnWzFdP1tnWzBdLF9bMF0sZ1sxXSxfWzFdXTpbX1swXSxnWzBdLF9bMV0sZ1sxXV0pOl8pOmcubGVuZ3RoIT09MD8oZ1swXSs9YyxnWzFdKz1jLGcpOltdfX1yZXR1cm5bXX1mdW5jdGlvbiBUZih0LGUsbixvKXtsZXQgcj1uKm4saT1lKmUscz10KnQsZj0tMiplLHU9bip0K2ktNCpvLGM9cypvLW4qZSp0K3IsbD1rcC5jb21wdXRlUmVhbFJvb3RzKDEsZix1LGMpO2lmKGwubGVuZ3RoPjApe2xldCBwPWxbMF0sZD1lLXAsaD1kKmQsXz10LzIsZz1kLzIsYj1oLTQqbyx3PWgrNCpNYXRoLmFicyhvKSxPPXMtNCpwLEU9cys0Kk1hdGguYWJzKHApLFQseDtpZihwPDB8fGIqRTxPKncpe2xldCBBPU1hdGguc3FydChPKTtUPUEvMix4PUE9PT0wPzA6KHQqZy1uKS9BfWVsc2V7bGV0IEE9TWF0aC5zcXJ0KGIpO1Q9QT09PTA/MDoodCpnLW4pL0EseD1BLzJ9bGV0IE0sTjtfPT09MCYmVD09PTA/KE09MCxOPTApOlAuc2lnbihfKT09PVAuc2lnbihUKT8oTT1fK1QsTj1wL00pOihOPV8tVCxNPXAvTik7bGV0IEYsSTtnPT09MCYmeD09PTA/KEY9MCxJPTApOlAuc2lnbihnKT09PVAuc2lnbih4KT8oRj1nK3gsST1vL0YpOihJPWcteCxGPW8vSSk7bGV0IHY9QXIuY29tcHV0ZVJlYWxSb290cygxLE0sRiksQj1Bci5jb21wdXRlUmVhbFJvb3RzKDEsTixJKTtpZih2Lmxlbmd0aCE9PTApcmV0dXJuIEIubGVuZ3RoIT09MD92WzFdPD1CWzBdP1t2WzBdLHZbMV0sQlswXSxCWzFdXTpCWzFdPD12WzBdP1tCWzBdLEJbMV0sdlswXSx2WzFdXTp2WzBdPj1CWzBdJiZ2WzFdPD1CWzFdP1tCWzBdLHZbMF0sdlsxXSxCWzFdXTpCWzBdPj12WzBdJiZCWzFdPD12WzFdP1t2WzBdLEJbMF0sQlsxXSx2WzFdXTp2WzBdPkJbMF0mJnZbMF08QlsxXT9bQlswXSx2WzBdLEJbMV0sdlsxXV06W3ZbMF0sQlswXSx2WzFdLEJbMV1dOnY7aWYoQi5sZW5ndGghPT0wKXJldHVybiBCfXJldHVybltdfXZhciBxaCxEYixCYj0kKCgpPT57TGIoKTtIdCgpO0t0KCk7VXAoKTtxaD17fTtxaC5jb21wdXRlRGlzY3JpbWluYW50PWZ1bmN0aW9uKHQsZSxuLG8scil7aWYodHlwZW9mIHQhPSJudW1iZXIiKXRocm93IG5ldyBEKCJhIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiBlIT0ibnVtYmVyIil0aHJvdyBuZXcgRCgiYiBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgbiE9Im51bWJlciIpdGhyb3cgbmV3IEQoImMgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIG8hPSJudW1iZXIiKXRocm93IG5ldyBEKCJkIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiByIT0ibnVtYmVyIil0aHJvdyBuZXcgRCgiZSBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtsZXQgaT10KnQscz1pKnQsZj1lKmUsdT1mKmUsYz1uKm4sbD1jKm4scD1vKm8sZD1wKm8saD1yKnIsXz1oKnI7cmV0dXJuIGYqYypwLTQqdSpkLTQqdCpsKnArMTgqdCplKm4qZC0yNyppKnAqcCsyNTYqcypfK3IqKDE4KnUqbipvLTQqZipsKzE2KnQqYypjLTgwKnQqZSpjKm8tNip0KmYqcCsxNDQqaSpuKnApK2gqKDE0NCp0KmYqbi0yNypmKmYtMTI4KmkqYy0xOTIqaSplKm8pfTtxaC5jb21wdXRlUmVhbFJvb3RzPWZ1bmN0aW9uKHQsZSxuLG8scil7aWYodHlwZW9mIHQhPSJudW1iZXIiKXRocm93IG5ldyBEKCJhIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiBlIT0ibnVtYmVyIil0aHJvdyBuZXcgRCgiYiBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZih0eXBlb2YgbiE9Im51bWJlciIpdGhyb3cgbmV3IEQoImMgaXMgYSByZXF1aXJlZCBudW1iZXIuIik7aWYodHlwZW9mIG8hPSJudW1iZXIiKXRocm93IG5ldyBEKCJkIGlzIGEgcmVxdWlyZWQgbnVtYmVyLiIpO2lmKHR5cGVvZiByIT0ibnVtYmVyIil0aHJvdyBuZXcgRCgiZSBpcyBhIHJlcXVpcmVkIG51bWJlci4iKTtpZihNYXRoLmFicyh0KTxQLkVQU0lMT04xNSlyZXR1cm4ga3AuY29tcHV0ZVJlYWxSb290cyhlLG4sbyxyKTtsZXQgaT1lL3Qscz1uL3QsZj1vL3QsdT1yL3QsYz1pPDA/MTowO3N3aXRjaChjKz1zPDA/YysxOmMsYys9ZjwwP2MrMTpjLGMrPXU8MD9jKzE6YyxjKXtjYXNlIDA6cmV0dXJuIFVyKGkscyxmLHUpO2Nhc2UgMTpyZXR1cm4gVGYoaSxzLGYsdSk7Y2FzZSAyOnJldHVybiBUZihpLHMsZix1KTtjYXNlIDM6cmV0dXJuIFVyKGkscyxmLHUpO2Nhc2UgNDpyZXR1cm4gVXIoaSxzLGYsdSk7Y2FzZSA1OnJldHVybiBUZihpLHMsZix1KTtjYXNlIDY6cmV0dXJuIFVyKGkscyxmLHUpO2Nhc2UgNzpyZXR1cm4gVXIoaSxzLGYsdSk7Y2FzZSA4OnJldHVybiBUZihpLHMsZix1KTtjYXNlIDk6cmV0dXJuIFVyKGkscyxmLHUpO2Nhc2UgMTA6cmV0dXJuIFVyKGkscyxmLHUpO2Nhc2UgMTE6cmV0dXJuIFRmKGkscyxmLHUpO2Nhc2UgMTI6cmV0dXJuIFVyKGkscyxmLHUpO2Nhc2UgMTM6cmV0dXJuIFVyKGkscyxmLHUpO2Nhc2UgMTQ6cmV0dXJuIFVyKGkscyxmLHUpO2Nhc2UgMTU6cmV0dXJuIFVyKGkscyxmLHUpO2RlZmF1bHQ6cmV0dXJufX07RGI9cWh9KTtmdW5jdGlvbiBHcCh0LGUpe2U9YS5jbG9uZShlPz9hLlpFUk8pLGEuZXF1YWxzKGUsYS5aRVJPKXx8YS5ub3JtYWxpemUoZSxlKSx0aGlzLm9yaWdpbj1hLmNsb25lKHQ/P2EuWkVSTyksdGhpcy5kaXJlY3Rpb249ZX12YXIgSnMsVnA9JCgoKT0+e0R0KCk7V3QoKTtmdCgpO0dwLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZS5vcmlnaW49YS5jbG9uZSh0Lm9yaWdpbiksZS5kaXJlY3Rpb249YS5jbG9uZSh0LmRpcmVjdGlvbiksZSk6bmV3IEdwKHQub3JpZ2luLHQuZGlyZWN0aW9uKX07R3AuZ2V0UG9pbnQ9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInJheSIsdCkseS50eXBlT2YubnVtYmVyKCJ0IixlKSxtKG4pfHwobj1uZXcgYSksbj1hLm11bHRpcGx5QnlTY2FsYXIodC5kaXJlY3Rpb24sZSxuKSxhLmFkZCh0Lm9yaWdpbixuLG4pfTtKcz1HcH0pO2Z1bmN0aW9uIFVQKHQsZSxuLG8pe2xldCByPWUqZS00KnQqbjtpZihyPDApcmV0dXJuO2lmKHI+MCl7bGV0IHM9MS8oMip0KSxmPU1hdGguc3FydChyKSx1PSgtZStmKSpzLGM9KC1lLWYpKnM7cmV0dXJuIHU8Yz8oby5yb290MD11LG8ucm9vdDE9Yyk6KG8ucm9vdDA9YyxvLnJvb3QxPXUpLG99bGV0IGk9LWUvKDIqdCk7aWYoaSE9PTApcmV0dXJuIG8ucm9vdDA9by5yb290MT1pLG99ZnVuY3Rpb24gS2IodCxlLG4pe20obil8fChuPW5ldyBKcik7bGV0IG89dC5vcmlnaW4scj10LmRpcmVjdGlvbixpPWUuY2VudGVyLHM9ZS5yYWRpdXMqZS5yYWRpdXMsZj1hLnN1YnRyYWN0KG8saSxxYiksdT1hLmRvdChyLHIpLGM9MiphLmRvdChyLGYpLGw9YS5tYWduaXR1ZGVTcXVhcmVkKGYpLXMscD1VUCh1LGMsbCxrUCk7aWYobShwKSlyZXR1cm4gbi5zdGFydD1wLnJvb3QwLG4uc3RvcD1wLnJvb3QxLG59ZnVuY3Rpb24gdGModCxlLG4pe2xldCBvPXQrZTtyZXR1cm4gUC5zaWduKHQpIT09UC5zaWduKGUpJiZNYXRoLmFicyhvL01hdGgubWF4KE1hdGguYWJzKHQpLE1hdGguYWJzKGUpKSk8bj8wOm99dmFyIGduLExQLERQLHFiLFViLGtiLEJQLGtQLEdQLFZQLHpQLEtoLEdiLFZiLHpwLGpQLEhQLHFQLEtQLFdQLFhQLHpiLGpiLEhiLFlQLCRQLFpQLHlvLGVjPSQoKCk9PntEdCgpO0llKCk7ZnQoKTtIdCgpO1dsKCk7S3QoKTtVbigpO1VwKCk7QmIoKTtWcCgpO2duPXt9O2duLnJheVBsYW5lPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgicmF5IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJwbGFuZSBpcyByZXF1aXJlZC4iKTttKG4pfHwobj1uZXcgYSk7bGV0IG89dC5vcmlnaW4scj10LmRpcmVjdGlvbixpPWUubm9ybWFsLHM9YS5kb3QoaSxyKTtpZihNYXRoLmFicyhzKTxQLkVQU0lMT04xNSlyZXR1cm47bGV0IGY9KC1lLmRpc3RhbmNlLWEuZG90KGksbykpL3M7aWYoIShmPDApKXJldHVybiBuPWEubXVsdGlwbHlCeVNjYWxhcihyLGYsbiksYS5hZGQobyxuLG4pfTtMUD1uZXcgYSxEUD1uZXcgYSxxYj1uZXcgYSxVYj1uZXcgYSxrYj1uZXcgYTtnbi5yYXlUcmlhbmdsZVBhcmFtZXRyaWM9ZnVuY3Rpb24odCxlLG4sbyxyKXtpZighbSh0KSl0aHJvdyBuZXcgRCgicmF5IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJwMCBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgRCgicDEgaXMgcmVxdWlyZWQuIik7aWYoIW0obykpdGhyb3cgbmV3IEQoInAyIGlzIHJlcXVpcmVkLiIpO3I9cj8/ITE7bGV0IGk9dC5vcmlnaW4scz10LmRpcmVjdGlvbixmPWEuc3VidHJhY3QobixlLExQKSx1PWEuc3VidHJhY3QobyxlLERQKSxjPWEuY3Jvc3Mocyx1LHFiKSxsPWEuZG90KGYsYykscCxkLGgsXyxnO2lmKHIpe2lmKGw8UC5FUFNJTE9ONnx8KHA9YS5zdWJ0cmFjdChpLGUsVWIpLGg9YS5kb3QocCxjKSxoPDB8fGg+bCl8fChkPWEuY3Jvc3MocCxmLGtiKSxfPWEuZG90KHMsZCksXzwwfHxoK18+bCkpcmV0dXJuO2c9YS5kb3QodSxkKS9sfWVsc2V7aWYoTWF0aC5hYnMobCk8UC5FUFNJTE9ONilyZXR1cm47bGV0IGI9MS9sO2lmKHA9YS5zdWJ0cmFjdChpLGUsVWIpLGg9YS5kb3QocCxjKSpiLGg8MHx8aD4xfHwoZD1hLmNyb3NzKHAsZixrYiksXz1hLmRvdChzLGQpKmIsXzwwfHxoK18+MSkpcmV0dXJuO2c9YS5kb3QodSxkKSpifXJldHVybiBnfTtnbi5yYXlUcmlhbmdsZT1mdW5jdGlvbih0LGUsbixvLHIsaSl7bGV0IHM9Z24ucmF5VHJpYW5nbGVQYXJhbWV0cmljKHQsZSxuLG8scik7aWYoISghbShzKXx8czwwKSlyZXR1cm4gbShpKXx8KGk9bmV3IGEpLGEubXVsdGlwbHlCeVNjYWxhcih0LmRpcmVjdGlvbixzLGkpLGEuYWRkKHQub3JpZ2luLGksaSl9O0JQPW5ldyBKcztnbi5saW5lU2VnbWVudFRyaWFuZ2xlPWZ1bmN0aW9uKHQsZSxuLG8scixpLHMpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJ2MCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgidjEgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoInAwIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG8pKXRocm93IG5ldyBEKCJwMSBpcyByZXF1aXJlZC4iKTtpZighbShyKSl0aHJvdyBuZXcgRCgicDIgaXMgcmVxdWlyZWQuIik7bGV0IGY9QlA7YS5jbG9uZSh0LGYub3JpZ2luKSxhLnN1YnRyYWN0KGUsdCxmLmRpcmVjdGlvbiksYS5ub3JtYWxpemUoZi5kaXJlY3Rpb24sZi5kaXJlY3Rpb24pO2xldCB1PWduLnJheVRyaWFuZ2xlUGFyYW1ldHJpYyhmLG4sbyxyLGkpO2lmKCEoIW0odSl8fHU8MHx8dT5hLmRpc3RhbmNlKHQsZSkpKXJldHVybiBtKHMpfHwocz1uZXcgYSksYS5tdWx0aXBseUJ5U2NhbGFyKGYuZGlyZWN0aW9uLHUscyksYS5hZGQoZi5vcmlnaW4scyxzKX07a1A9e3Jvb3QwOjAscm9vdDE6MH07Z24ucmF5U3BoZXJlPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgicmF5IGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJzcGhlcmUgaXMgcmVxdWlyZWQuIik7aWYobj1LYih0LGUsbiksISghbShuKXx8bi5zdG9wPDApKXJldHVybiBuLnN0YXJ0PU1hdGgubWF4KG4uc3RhcnQsMCksbn07R1A9bmV3IEpzO2duLmxpbmVTZWdtZW50U3BoZXJlPWZ1bmN0aW9uKHQsZSxuLG8pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJwMCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgicDEgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoInNwaGVyZSBpcyByZXF1aXJlZC4iKTtsZXQgcj1HUDthLmNsb25lKHQsci5vcmlnaW4pO2xldCBpPWEuc3VidHJhY3QoZSx0LHIuZGlyZWN0aW9uKSxzPWEubWFnbml0dWRlKGkpO2lmKGEubm9ybWFsaXplKGksaSksbz1LYihyLG4sbyksISghbShvKXx8by5zdG9wPDB8fG8uc3RhcnQ+cykpcmV0dXJuIG8uc3RhcnQ9TWF0aC5tYXgoby5zdGFydCwwKSxvLnN0b3A9TWF0aC5taW4oby5zdG9wLHMpLG99O1ZQPW5ldyBhLHpQPW5ldyBhO2duLnJheUVsbGlwc29pZD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJyYXkgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImVsbGlwc29pZCBpcyByZXF1aXJlZC4iKTtsZXQgbj1lLm9uZU92ZXJSYWRpaSxvPWEubXVsdGlwbHlDb21wb25lbnRzKG4sdC5vcmlnaW4sVlApLHI9YS5tdWx0aXBseUNvbXBvbmVudHMobix0LmRpcmVjdGlvbix6UCksaT1hLm1hZ25pdHVkZVNxdWFyZWQobykscz1hLmRvdChvLHIpLGYsdSxjLGwscDtpZihpPjEpe2lmKHM+PTApcmV0dXJuO2xldCBkPXMqcztpZihmPWktMSx1PWEubWFnbml0dWRlU3F1YXJlZChyKSxjPXUqZixkPGMpcmV0dXJuO2lmKGQ+Yyl7bD1zKnMtYyxwPS1zK01hdGguc3FydChsKTtsZXQgXz1wL3UsZz1mL3A7cmV0dXJuIF88Zz9uZXcgSnIoXyxnKTp7c3RhcnQ6ZyxzdG9wOl99fWxldCBoPU1hdGguc3FydChmL3UpO3JldHVybiBuZXcgSnIoaCxoKX1lbHNlIGlmKGk8MSlyZXR1cm4gZj1pLTEsdT1hLm1hZ25pdHVkZVNxdWFyZWQociksYz11KmYsbD1zKnMtYyxwPS1zK01hdGguc3FydChsKSxuZXcgSnIoMCxwL3UpO2lmKHM8MClyZXR1cm4gdT1hLm1hZ25pdHVkZVNxdWFyZWQociksbmV3IEpyKDAsLXMvdSl9O2duLnF1YWRyYXRpY1ZlY3RvckV4cHJlc3Npb249ZnVuY3Rpb24odCxlLG4sbyxyKXtsZXQgaT1vKm8scz1yKnIsZj0odFtaLkNPTFVNTjFST1cxXS10W1ouQ09MVU1OMlJPVzJdKSpzLHU9cioobyp0Yyh0W1ouQ09MVU1OMVJPVzBdLHRbWi5DT0xVTU4wUk9XMV0sUC5FUFNJTE9OMTUpK2UueSksYz10W1ouQ09MVU1OMFJPVzBdKmkrdFtaLkNPTFVNTjJST1cyXSpzK28qZS54K24sbD1zKnRjKHRbWi5DT0xVTU4yUk9XMV0sdFtaLkNPTFVNTjFST1cyXSxQLkVQU0lMT04xNSkscD1yKihvKnRjKHRbWi5DT0xVTU4yUk9XMF0sdFtaLkNPTFVNTjBST1cyXSkrZS56KSxkLGg9W107aWYocD09PTAmJmw9PT0wKXtpZihkPUFyLmNvbXB1dGVSZWFsUm9vdHMoZix1LGMpLGQubGVuZ3RoPT09MClyZXR1cm4gaDtsZXQgRj1kWzBdLEk9TWF0aC5zcXJ0KE1hdGgubWF4KDEtRipGLDApKTtpZihoLnB1c2gobmV3IGEobyxyKkYsciotSSkpLGgucHVzaChuZXcgYShvLHIqRixyKkkpKSxkLmxlbmd0aD09PTIpe2xldCB2PWRbMV0sQj1NYXRoLnNxcnQoTWF0aC5tYXgoMS12KnYsMCkpO2gucHVzaChuZXcgYShvLHIqdixyKi1CKSksaC5wdXNoKG5ldyBhKG8scip2LHIqQikpfXJldHVybiBofWxldCBfPXAqcCxnPWwqbCxiPWYqZix3PXAqbCxPPWIrZyxFPTIqKHUqZit3KSxUPTIqYypmK3UqdS1nK18seD0yKihjKnUtdyksTT1jKmMtXztpZihPPT09MCYmRT09PTAmJlQ9PT0wJiZ4PT09MClyZXR1cm4gaDtkPURiLmNvbXB1dGVSZWFsUm9vdHMoTyxFLFQseCxNKTtsZXQgTj1kLmxlbmd0aDtpZihOPT09MClyZXR1cm4gaDtmb3IobGV0IEY9MDtGPE47KytGKXtsZXQgST1kW0ZdLHY9SSpJLEI9TWF0aC5tYXgoMS12LDApLEE9TWF0aC5zcXJ0KEIpLFM7UC5zaWduKGYpPT09UC5zaWduKGMpP1M9dGMoZip2K2MsdSpJLFAuRVBTSUxPTjEyKTpQLnNpZ24oYyk9PT1QLnNpZ24odSpJKT9TPXRjKGYqdix1KkkrYyxQLkVQU0lMT04xMik6Uz10YyhmKnYrdSpJLGMsUC5FUFNJTE9OMTIpO2xldCBDPXRjKGwqSSxwLFAuRVBTSUxPTjE1KSxMPVMqQztMPDA/aC5wdXNoKG5ldyBhKG8scipJLHIqQSkpOkw+MD9oLnB1c2gobmV3IGEobyxyKkksciotQSkpOkEhPT0wPyhoLnB1c2gobmV3IGEobyxyKkksciotQSkpLGgucHVzaChuZXcgYShvLHIqSSxyKkEpKSwrK0YpOmgucHVzaChuZXcgYShvLHIqSSxyKkEpKX1yZXR1cm4gaH07S2g9bmV3IGEsR2I9bmV3IGEsVmI9bmV3IGEsenA9bmV3IGEsalA9bmV3IGEsSFA9bmV3IFoscVA9bmV3IFosS1A9bmV3IFosV1A9bmV3IFosWFA9bmV3IFosemI9bmV3IFosamI9bmV3IFosSGI9bmV3IGEsWVA9bmV3IGEsJFA9bmV3IGN0O2duLmdyYXppbmdBbHRpdHVkZUxvY2F0aW9uPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoInJheSBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgiZWxsaXBzb2lkIGlzIHJlcXVpcmVkLiIpO2xldCBuPXQub3JpZ2luLG89dC5kaXJlY3Rpb247aWYoIWEuZXF1YWxzKG4sYS5aRVJPKSl7bGV0IE09ZS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwobixLaCk7aWYoYS5kb3QobyxNKT49MClyZXR1cm4gbn1sZXQgcj1tKHRoaXMucmF5RWxsaXBzb2lkKHQsZSkpLGk9ZS50cmFuc2Zvcm1Qb3NpdGlvblRvU2NhbGVkU3BhY2UobyxLaCkscz1hLm5vcm1hbGl6ZShpLGkpLGY9YS5tb3N0T3J0aG9nb25hbEF4aXMoaSx6cCksdT1hLm5vcm1hbGl6ZShhLmNyb3NzKGYscyxHYiksR2IpLGM9YS5ub3JtYWxpemUoYS5jcm9zcyhzLHUsVmIpLFZiKSxsPUhQO2xbMF09cy54LGxbMV09cy55LGxbMl09cy56LGxbM109dS54LGxbNF09dS55LGxbNV09dS56LGxbNl09Yy54LGxbN109Yy55LGxbOF09Yy56O2xldCBwPVoudHJhbnNwb3NlKGwscVApLGQ9Wi5mcm9tU2NhbGUoZS5yYWRpaSxLUCksaD1aLmZyb21TY2FsZShlLm9uZU92ZXJSYWRpaSxXUCksXz1YUDtfWzBdPTAsX1sxXT0tby56LF9bMl09by55LF9bM109by56LF9bNF09MCxfWzVdPS1vLngsX1s2XT0tby55LF9bN109by54LF9bOF09MDtsZXQgZz1aLm11bHRpcGx5KFoubXVsdGlwbHkocCxoLHpiKSxfLHpiKSxiPVoubXVsdGlwbHkoWi5tdWx0aXBseShnLGQsamIpLGwsamIpLHc9Wi5tdWx0aXBseUJ5VmVjdG9yKGcsbixqUCksTz1nbi5xdWFkcmF0aWNWZWN0b3JFeHByZXNzaW9uKGIsYS5uZWdhdGUodyxLaCksMCwwLDEpLEUsVCx4PU8ubGVuZ3RoO2lmKHg+MCl7bGV0IE09YS5jbG9uZShhLlpFUk8sWVApLE49TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2ZvcihsZXQgST0wO0k8eDsrK0kpe0U9Wi5tdWx0aXBseUJ5VmVjdG9yKGQsWi5tdWx0aXBseUJ5VmVjdG9yKGwsT1tJXSxIYiksSGIpO2xldCB2PWEubm9ybWFsaXplKGEuc3VidHJhY3QoRSxuLHpwKSx6cCksQj1hLmRvdCh2LG8pO0I+TiYmKE49QixNPWEuY2xvbmUoRSxNKSl9bGV0IEY9ZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhNLCRQKTtyZXR1cm4gTj1QLmNsYW1wKE4sMCwxKSxUPWEubWFnbml0dWRlKGEuc3VidHJhY3QoTSxuLHpwKSkqTWF0aC5zcXJ0KDEtTipOKSxUPXI/LVQ6VCxGLmhlaWdodD1ULGUuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oRixuZXcgYSl9fTtaUD1uZXcgYTtnbi5saW5lU2VnbWVudFBsYW5lPWZ1bmN0aW9uKHQsZSxuLG8pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJlbmRQb2ludDAgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImVuZFBvaW50MSBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgRCgicGxhbmUgaXMgcmVxdWlyZWQuIik7bShvKXx8KG89bmV3IGEpO2xldCByPWEuc3VidHJhY3QoZSx0LFpQKSxpPW4ubm9ybWFsLHM9YS5kb3QoaSxyKTtpZihNYXRoLmFicyhzKTxQLkVQU0lMT042KXJldHVybjtsZXQgZj1hLmRvdChpLHQpLHU9LShuLmRpc3RhbmNlK2YpL3M7aWYoISh1PDB8fHU+MSkpcmV0dXJuIGEubXVsdGlwbHlCeVNjYWxhcihyLHUsbyksYS5hZGQodCxvLG8pLG99O2duLnRyaWFuZ2xlUGxhbmVJbnRlcnNlY3Rpb249ZnVuY3Rpb24odCxlLG4sbyl7aWYoIW0odCl8fCFtKGUpfHwhbShuKXx8IW0obykpdGhyb3cgbmV3IEQoInAwLCBwMSwgcDIsIGFuZCBwbGFuZSBhcmUgcmVxdWlyZWQuIik7bGV0IHI9by5ub3JtYWwsaT1vLmRpc3RhbmNlLHM9YS5kb3Qocix0KStpPDAsZj1hLmRvdChyLGUpK2k8MCx1PWEuZG90KHIsbikraTwwLGM9MDtjKz1zPzE6MCxjKz1mPzE6MCxjKz11PzE6MDtsZXQgbCxwO2lmKChjPT09MXx8Yz09PTIpJiYobD1uZXcgYSxwPW5ldyBhKSxjPT09MSl7aWYocylyZXR1cm4gZ24ubGluZVNlZ21lbnRQbGFuZSh0LGUsbyxsKSxnbi5saW5lU2VnbWVudFBsYW5lKHQsbixvLHApLHtwb3NpdGlvbnM6W3QsZSxuLGwscF0saW5kaWNlczpbMCwzLDQsMSwyLDQsMSw0LDNdfTtpZihmKXJldHVybiBnbi5saW5lU2VnbWVudFBsYW5lKGUsbixvLGwpLGduLmxpbmVTZWdtZW50UGxhbmUoZSx0LG8scCkse3Bvc2l0aW9uczpbdCxlLG4sbCxwXSxpbmRpY2VzOlsxLDMsNCwyLDAsNCwyLDQsM119O2lmKHUpcmV0dXJuIGduLmxpbmVTZWdtZW50UGxhbmUobix0LG8sbCksZ24ubGluZVNlZ21lbnRQbGFuZShuLGUsbyxwKSx7cG9zaXRpb25zOlt0LGUsbixsLHBdLGluZGljZXM6WzIsMyw0LDAsMSw0LDAsNCwzXX19ZWxzZSBpZihjPT09MilpZihzKWlmKGYpe2lmKCF1KXJldHVybiBnbi5saW5lU2VnbWVudFBsYW5lKHQsbixvLGwpLGduLmxpbmVTZWdtZW50UGxhbmUoZSxuLG8scCkse3Bvc2l0aW9uczpbdCxlLG4sbCxwXSxpbmRpY2VzOlswLDEsNCwwLDQsMywyLDMsNF19fWVsc2UgcmV0dXJuIGduLmxpbmVTZWdtZW50UGxhbmUobixlLG8sbCksZ24ubGluZVNlZ21lbnRQbGFuZSh0LGUsbyxwKSx7cG9zaXRpb25zOlt0LGUsbixsLHBdLGluZGljZXM6WzIsMCw0LDIsNCwzLDEsMyw0XX07ZWxzZSByZXR1cm4gZ24ubGluZVNlZ21lbnRQbGFuZShlLHQsbyxsKSxnbi5saW5lU2VnbWVudFBsYW5lKG4sdCxvLHApLHtwb3NpdGlvbnM6W3QsZSxuLGwscF0saW5kaWNlczpbMSwyLDQsMSw0LDMsMCwzLDRdfX07eW89Z259KTtmdW5jdGlvbiBvbyh0LGUpe2lmKHkudHlwZU9mLm9iamVjdCgibm9ybWFsIix0KSwhUC5lcXVhbHNFcHNpbG9uKGEubWFnbml0dWRlKHQpLDEsUC5FUFNJTE9ONikpdGhyb3cgbmV3IEQoIm5vcm1hbCBtdXN0IGJlIG5vcm1hbGl6ZWQuIik7eS50eXBlT2YubnVtYmVyKCJkaXN0YW5jZSIsZSksdGhpcy5ub3JtYWw9YS5jbG9uZSh0KSx0aGlzLmRpc3RhbmNlPWV9dmFyIFFQLEpQLHRNLGVNLG5NLG9uLHVzPSQoKCk9PntEdCgpO19yKCk7V3QoKTtmdCgpO0h0KCk7S3QoKTtrbigpO29vLmZyb21Qb2ludE5vcm1hbD1mdW5jdGlvbih0LGUsbil7aWYoeS50eXBlT2Yub2JqZWN0KCJwb2ludCIsdCkseS50eXBlT2Yub2JqZWN0KCJub3JtYWwiLGUpLCFQLmVxdWFsc0Vwc2lsb24oYS5tYWduaXR1ZGUoZSksMSxQLkVQU0lMT042KSl0aHJvdyBuZXcgRCgibm9ybWFsIG11c3QgYmUgbm9ybWFsaXplZC4iKTtsZXQgbz0tYS5kb3QoZSx0KTtyZXR1cm4gbShuKT8oYS5jbG9uZShlLG4ubm9ybWFsKSxuLmRpc3RhbmNlPW8sbik6bmV3IG9vKGUsbyl9O1FQPW5ldyBhO29vLmZyb21DYXJ0ZXNpYW40PWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJjb2VmZmljaWVudHMiLHQpO2xldCBuPWEuZnJvbUNhcnRlc2lhbjQodCxRUCksbz10Lnc7aWYoIVAuZXF1YWxzRXBzaWxvbihhLm1hZ25pdHVkZShuKSwxLFAuRVBTSUxPTjYpKXRocm93IG5ldyBEKCJub3JtYWwgbXVzdCBiZSBub3JtYWxpemVkLiIpO3JldHVybiBtKGUpPyhhLmNsb25lKG4sZS5ub3JtYWwpLGUuZGlzdGFuY2U9byxlKTpuZXcgb28obixvKX07b28uZ2V0UG9pbnREaXN0YW5jZT1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInBsYW5lIix0KSx5LnR5cGVPZi5vYmplY3QoInBvaW50IixlKSxhLmRvdCh0Lm5vcm1hbCxlKSt0LmRpc3RhbmNlfTtKUD1uZXcgYTtvby5wcm9qZWN0UG9pbnRPbnRvUGxhbmU9ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgicGxhbmUiLHQpLHkudHlwZU9mLm9iamVjdCgicG9pbnQiLGUpLG0obil8fChuPW5ldyBhKTtsZXQgbz1vby5nZXRQb2ludERpc3RhbmNlKHQsZSkscj1hLm11bHRpcGx5QnlTY2FsYXIodC5ub3JtYWwsbyxKUCk7cmV0dXJuIGEuc3VidHJhY3QoZSxyLG4pfTt0TT1uZXcgc3QsZU09bmV3IG1lLG5NPW5ldyBhO29vLnRyYW5zZm9ybT1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJwbGFuZSIsdCkseS50eXBlT2Yub2JqZWN0KCJ0cmFuc2Zvcm0iLGUpO2xldCBvPXQubm9ybWFsLHI9dC5kaXN0YW5jZSxpPXN0LmludmVyc2VUcmFuc3Bvc2UoZSx0TSkscz1tZS5mcm9tRWxlbWVudHMoby54LG8ueSxvLnoscixlTSk7cz1zdC5tdWx0aXBseUJ5VmVjdG9yKGkscyxzKTtsZXQgZj1hLmZyb21DYXJ0ZXNpYW40KHMsbk0pO3JldHVybiBzPW1lLmRpdmlkZUJ5U2NhbGFyKHMsYS5tYWduaXR1ZGUoZikscyksb28uZnJvbUNhcnRlc2lhbjQocyxuKX07b28uY2xvbmU9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJwbGFuZSIsdCksbShlKT8oYS5jbG9uZSh0Lm5vcm1hbCxlLm5vcm1hbCksZS5kaXN0YW5jZT10LmRpc3RhbmNlLGUpOm5ldyBvbyh0Lm5vcm1hbCx0LmRpc3RhbmNlKX07b28uZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSksdC5kaXN0YW5jZT09PWUuZGlzdGFuY2UmJmEuZXF1YWxzKHQubm9ybWFsLGUubm9ybWFsKX07b28uT1JJR0lOX1hZX1BMQU5FPU9iamVjdC5mcmVlemUobmV3IG9vKGEuVU5JVF9aLDApKTtvby5PUklHSU5fWVpfUExBTkU9T2JqZWN0LmZyZWV6ZShuZXcgb28oYS5VTklUX1gsMCkpO29vLk9SSUdJTl9aWF9QTEFORT1PYmplY3QuZnJlZXplKG5ldyBvbyhhLlVOSVRfWSwwKSk7b249b299KTt2YXIgV2gsV2IsWGI9JCgoKT0+e3llKCk7ZnQoKTtIdCgpO1doPXt9O1doLmNhbGN1bGF0ZUFDTVI9ZnVuY3Rpb24odCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5pbmRpY2VzLG49dC5tYXhpbXVtSW5kZXgsbz10LmNhY2hlU2l6ZT8/MjQ7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImluZGljZXMgaXMgcmVxdWlyZWQuIik7bGV0IHI9ZS5sZW5ndGg7aWYocjwzfHxyJTMhPT0wKXRocm93IG5ldyBEKCJpbmRpY2VzIGxlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgdGhyZWUuIik7aWYobjw9MCl0aHJvdyBuZXcgRCgibWF4aW11bUluZGV4IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIik7aWYobzwzKXRocm93IG5ldyBEKCJjYWNoZVNpemUgbXVzdCBiZSBncmVhdGVyIHRoYW4gdHdvLiIpO2lmKCFtKG4pKXtuPTA7bGV0IGY9MCx1PWVbZl07Zm9yKDtmPHI7KXU+biYmKG49dSksKytmLHU9ZVtmXX1sZXQgaT1bXTtmb3IobGV0IGY9MDtmPG4rMTtmKyspaVtmXT0wO2xldCBzPW8rMTtmb3IobGV0IGY9MDtmPHI7KytmKXMtaVtlW2ZdXT5vJiYoaVtlW2ZdXT1zLCsrcyk7cmV0dXJuKHMtbysxKS8oci8zKX07V2gudGlwc2lmeT1mdW5jdGlvbih0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10LmluZGljZXMsbj10Lm1heGltdW1JbmRleCxvPXQuY2FjaGVTaXplPz8yNCxyO2Z1bmN0aW9uIGkoQixBLFMsQyl7Zm9yKDtBLmxlbmd0aD49MTspe2xldCBMPUFbQS5sZW5ndGgtMV07aWYoQS5zcGxpY2UoQS5sZW5ndGgtMSwxKSxCW0xdLm51bUxpdmVUcmlhbmdsZXM+MClyZXR1cm4gTH1mb3IoO3I8Qzspe2lmKEJbcl0ubnVtTGl2ZVRyaWFuZ2xlcz4wKXJldHVybisrcixyLTE7KytyfXJldHVybi0xfWZ1bmN0aW9uIHMoQixBLFMsQyxMLHosail7bGV0IGs9LTEscSxXPS0xLFI9MDtmb3IoO1I8Uy5sZW5ndGg7KXtsZXQgbnQ9U1tSXTtDW250XS5udW1MaXZlVHJpYW5nbGVzJiYocT0wLEwtQ1tudF0udGltZVN0YW1wKzIqQ1tudF0ubnVtTGl2ZVRyaWFuZ2xlczw9QSYmKHE9TC1DW250XS50aW1lU3RhbXApLChxPld8fFc9PT0tMSkmJihXPXEsaz1udCkpLCsrUn1yZXR1cm4gaz09PS0xP2koQyx6LEIsaik6a31pZighbShlKSl0aHJvdyBuZXcgRCgiaW5kaWNlcyBpcyByZXF1aXJlZC4iKTtsZXQgZj1lLmxlbmd0aDtpZihmPDN8fGYlMyE9PTApdGhyb3cgbmV3IEQoImluZGljZXMgbGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aHJlZS4iKTtpZihuPD0wKXRocm93IG5ldyBEKCJtYXhpbXVtSW5kZXggbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtpZihvPDMpdGhyb3cgbmV3IEQoImNhY2hlU2l6ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0d28uIik7bGV0IHU9MCxjPTAsbD1lW2NdLHA9ZjtpZihtKG4pKXU9bisxO2Vsc2V7Zm9yKDtjPHA7KWw+dSYmKHU9bCksKytjLGw9ZVtjXTtpZih1PT09LTEpcmV0dXJuIDA7Kyt1fWxldCBkPVtdLGg7Zm9yKGg9MDtoPHU7aCsrKWRbaF09e251bUxpdmVUcmlhbmdsZXM6MCx0aW1lU3RhbXA6MCx2ZXJ0ZXhUcmlhbmdsZXM6W119O2M9MDtsZXQgXz0wO2Zvcig7YzxwOylkW2VbY11dLnZlcnRleFRyaWFuZ2xlcy5wdXNoKF8pLCsrZFtlW2NdXS5udW1MaXZlVHJpYW5nbGVzLGRbZVtjKzFdXS52ZXJ0ZXhUcmlhbmdsZXMucHVzaChfKSwrK2RbZVtjKzFdXS5udW1MaXZlVHJpYW5nbGVzLGRbZVtjKzJdXS52ZXJ0ZXhUcmlhbmdsZXMucHVzaChfKSwrK2RbZVtjKzJdXS5udW1MaXZlVHJpYW5nbGVzLCsrXyxjKz0zO2xldCBnPTAsYj1vKzE7cj0xO2xldCB3PVtdLE89W10sRSxULHg9MCxNPVtdLE49Zi8zLEY9W107Zm9yKGg9MDtoPE47aCsrKUZbaF09ITE7bGV0IEksdjtmb3IoO2chPT0tMTspe3c9W10sVD1kW2ddLHY9VC52ZXJ0ZXhUcmlhbmdsZXMubGVuZ3RoO2ZvcihsZXQgQj0wO0I8djsrK0IpaWYoXz1ULnZlcnRleFRyaWFuZ2xlc1tCXSwhRltfXSl7RltfXT0hMCxjPV8rXytfO2ZvcihsZXQgQT0wO0E8MzsrK0EpST1lW2NdLHcucHVzaChJKSxPLnB1c2goSSksTVt4XT1JLCsreCxFPWRbSV0sLS1FLm51bUxpdmVUcmlhbmdsZXMsYi1FLnRpbWVTdGFtcD5vJiYoRS50aW1lU3RhbXA9YiwrK2IpLCsrY31nPXMoZSxvLHcsZCxiLE8sdSl9cmV0dXJuIE19O1diPVdofSk7ZnVuY3Rpb24gWXAodCxlLG4sbyxyKXt0W2UrK109bix0W2UrK109byx0W2UrK109byx0W2UrK109cix0W2UrK109cix0W2VdPW59ZnVuY3Rpb24gb00odCl7bGV0IGU9dC5sZW5ndGgsbj1lLzMqNixvPUx0LmNyZWF0ZVR5cGVkQXJyYXkoZSxuKSxyPTA7Zm9yKGxldCBpPTA7aTxlO2krPTMscis9NilZcChvLHIsdFtpXSx0W2krMV0sdFtpKzJdKTtyZXR1cm4gb31mdW5jdGlvbiByTSh0KXtsZXQgZT10Lmxlbmd0aDtpZihlPj0zKXtsZXQgbj0oZS0yKSo2LG89THQuY3JlYXRlVHlwZWRBcnJheShlLG4pO1lwKG8sMCx0WzBdLHRbMV0sdFsyXSk7bGV0IHI9Njtmb3IobGV0IGk9MztpPGU7KytpLHIrPTYpWXAobyxyLHRbaS0xXSx0W2ldLHRbaS0yXSk7cmV0dXJuIG99cmV0dXJuIG5ldyBVaW50MTZBcnJheX1mdW5jdGlvbiBpTSh0KXtpZih0Lmxlbmd0aD4wKXtsZXQgZT10Lmxlbmd0aC0xLG49KGUtMSkqNixvPUx0LmNyZWF0ZVR5cGVkQXJyYXkoZSxuKSxyPXRbMF0saT0wO2ZvcihsZXQgcz0xO3M8ZTsrK3MsaSs9NilZcChvLGkscix0W3NdLHRbcysxXSk7cmV0dXJuIG99cmV0dXJuIG5ldyBVaW50MTZBcnJheX1mdW5jdGlvbiBZYih0KXtsZXQgZT17fTtmb3IobGV0IG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG4pJiZtKHRbbl0pJiZtKHRbbl0udmFsdWVzKSl7bGV0IG89dFtuXTtlW25dPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6by5jb21wb25lbnREYXRhdHlwZSxjb21wb25lbnRzUGVyQXR0cmlidXRlOm8uY29tcG9uZW50c1BlckF0dHJpYnV0ZSxub3JtYWxpemU6by5ub3JtYWxpemUsdmFsdWVzOltdfSl9cmV0dXJuIGV9ZnVuY3Rpb24gc00odCxlLG4pe2ZvcihsZXQgbyBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkobykmJm0oZVtvXSkmJm0oZVtvXS52YWx1ZXMpKXtsZXQgcj1lW29dO2ZvcihsZXQgaT0wO2k8ci5jb21wb25lbnRzUGVyQXR0cmlidXRlOysraSl0W29dLnZhbHVlcy5wdXNoKHIudmFsdWVzW24qci5jb21wb25lbnRzUGVyQXR0cmlidXRlK2ldKX19ZnVuY3Rpb24gWWgodCxlKXtpZihtKGUpKXtsZXQgbj1lLnZhbHVlcyxvPW4ubGVuZ3RoO2ZvcihsZXQgcj0wO3I8bztyKz0zKWEudW5wYWNrKG4scixHciksc3QubXVsdGlwbHlCeVBvaW50KHQsR3IsR3IpLGEucGFjayhHcixuLHIpfX1mdW5jdGlvbiAkaCh0LGUpe2lmKG0oZSkpe2xldCBuPWUudmFsdWVzLG89bi5sZW5ndGg7Zm9yKGxldCByPTA7cjxvO3IrPTMpYS51bnBhY2sobixyLEdyKSxaLm11bHRpcGx5QnlWZWN0b3IodCxHcixHciksR3I9YS5ub3JtYWxpemUoR3IsR3IpLGEucGFjayhHcixuLHIpfX1mdW5jdGlvbiBhTSh0LGUpe2xldCBuPXQubGVuZ3RoLG89e30scj10WzBdW2VdLmF0dHJpYnV0ZXMsaTtmb3IoaSBpbiByKWlmKHIuaGFzT3duUHJvcGVydHkoaSkmJm0ocltpXSkmJm0ocltpXS52YWx1ZXMpKXtsZXQgcz1yW2ldLGY9cy52YWx1ZXMubGVuZ3RoLHU9ITA7Zm9yKGxldCBjPTE7YzxuOysrYyl7bGV0IGw9dFtjXVtlXS5hdHRyaWJ1dGVzW2ldO2lmKCFtKGwpfHxzLmNvbXBvbmVudERhdGF0eXBlIT09bC5jb21wb25lbnREYXRhdHlwZXx8cy5jb21wb25lbnRzUGVyQXR0cmlidXRlIT09bC5jb21wb25lbnRzUGVyQXR0cmlidXRlfHxzLm5vcm1hbGl6ZSE9PWwubm9ybWFsaXplKXt1PSExO2JyZWFrfWYrPWwudmFsdWVzLmxlbmd0aH11JiYob1tpXT1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOnMuY29tcG9uZW50RGF0YXR5cGUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTpzLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUsbm9ybWFsaXplOnMubm9ybWFsaXplLHZhbHVlczpldC5jcmVhdGVUeXBlZEFycmF5KHMuY29tcG9uZW50RGF0YXR5cGUsZil9KSl9cmV0dXJuIG99ZnVuY3Rpb24gWmgodCxlKXtsZXQgbj10Lmxlbmd0aCxvLHIsaSxzLGY9dFswXS5tb2RlbE1hdHJpeCx1PW0odFswXVtlXS5pbmRpY2VzKSxjPXRbMF1bZV0ucHJpbWl0aXZlVHlwZTtmb3Iocj0xO3I8bjsrK3Ipe2lmKCFzdC5lcXVhbHModFtyXS5tb2RlbE1hdHJpeCxmKSl0aHJvdyBuZXcgRCgiQWxsIGluc3RhbmNlcyBtdXN0IGhhdmUgdGhlIHNhbWUgbW9kZWxNYXRyaXguIik7aWYobSh0W3JdW2VdLmluZGljZXMpIT09dSl0aHJvdyBuZXcgRCgiQWxsIGluc3RhbmNlIGdlb21ldHJpZXMgbXVzdCBoYXZlIGFuIGluZGljZXMgb3Igbm90IGhhdmUgb25lLiIpO2lmKHRbcl1bZV0ucHJpbWl0aXZlVHlwZSE9PWMpdGhyb3cgbmV3IEQoIkFsbCBpbnN0YW5jZSBnZW9tZXRyaWVzIG11c3QgaGF2ZSB0aGUgc2FtZSBwcmltaXRpdmVUeXBlLiIpfWxldCBsPWFNKHQsZSkscCxkLGg7Zm9yKG8gaW4gbClpZihsLmhhc093blByb3BlcnR5KG8pKWZvcihwPWxbb10udmFsdWVzLHM9MCxyPTA7cjxuOysrcilmb3IoZD10W3JdW2VdLmF0dHJpYnV0ZXNbb10udmFsdWVzLGg9ZC5sZW5ndGgsaT0wO2k8aDsrK2kpcFtzKytdPWRbaV07bGV0IF87aWYodSl7bGV0IE89MDtmb3Iocj0wO3I8bjsrK3IpTys9dFtyXVtlXS5pbmRpY2VzLmxlbmd0aDtsZXQgRT1VdC5jb21wdXRlTnVtYmVyT2ZWZXJ0aWNlcyhuZXcgVXQoe2F0dHJpYnV0ZXM6bCxwcmltaXRpdmVUeXBlOkJ0LlBPSU5UU30pKSxUPUx0LmNyZWF0ZVR5cGVkQXJyYXkoRSxPKSx4PTAsTT0wO2ZvcihyPTA7cjxuOysrcil7bGV0IE49dFtyXVtlXS5pbmRpY2VzLEY9Ti5sZW5ndGg7Zm9yKHM9MDtzPEY7KytzKVRbeCsrXT1NK05bc107TSs9VXQuY29tcHV0ZU51bWJlck9mVmVydGljZXModFtyXVtlXSl9Xz1UfWxldCBnPW5ldyBhLGI9MCx3O2ZvcihyPTA7cjxuOysrcil7aWYodz10W3JdW2VdLmJvdW5kaW5nU3BoZXJlLCFtKHcpKXtnPXZvaWQgMDticmVha31hLmFkZCh3LmNlbnRlcixnLGcpfWlmKG0oZykpZm9yKGEuZGl2aWRlQnlTY2FsYXIoZyxuLGcpLHI9MDtyPG47KytyKXt3PXRbcl1bZV0uYm91bmRpbmdTcGhlcmU7bGV0IE89YS5tYWduaXR1ZGUoYS5zdWJ0cmFjdCh3LmNlbnRlcixnLGZNKSkrdy5yYWRpdXM7Tz5iJiYoYj1PKX1yZXR1cm4gbmV3IFV0KHthdHRyaWJ1dGVzOmwsaW5kaWNlczpfLHByaW1pdGl2ZVR5cGU6Yyxib3VuZGluZ1NwaGVyZTptKGcpP25ldyBBdChnLGIpOnZvaWQgMH0pfWZ1bmN0aW9uIHBNKHQpe2lmKG0odC5pbmRpY2VzKSlyZXR1cm4gdDtsZXQgZT1VdC5jb21wdXRlTnVtYmVyT2ZWZXJ0aWNlcyh0KTtpZihlPDMpdGhyb3cgbmV3IEQoIlRoZSBudW1iZXIgb2YgdmVydGljZXMgbXVzdCBiZSBhdCBsZWFzdCB0aHJlZS4iKTtpZihlJTMhPT0wKXRocm93IG5ldyBEKCJUaGUgbnVtYmVyIG9mIHZlcnRpY2VzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiB0aHJlZS4iKTtsZXQgbj1MdC5jcmVhdGVUeXBlZEFycmF5KGUsZSk7Zm9yKGxldCBvPTA7bzxlOysrbyluW29dPW87cmV0dXJuIHQuaW5kaWNlcz1uLHR9ZnVuY3Rpb24gZE0odCl7bGV0IGU9VXQuY29tcHV0ZU51bWJlck9mVmVydGljZXModCk7aWYoZTwzKXRocm93IG5ldyBEKCJUaGUgbnVtYmVyIG9mIHZlcnRpY2VzIG11c3QgYmUgYXQgbGVhc3QgdGhyZWUuIik7bGV0IG49THQuY3JlYXRlVHlwZWRBcnJheShlLChlLTIpKjMpO25bMF09MSxuWzFdPTAsblsyXT0yO2xldCBvPTM7Zm9yKGxldCByPTM7cjxlOysrciluW28rK109ci0xLG5bbysrXT0wLG5bbysrXT1yO3JldHVybiB0LmluZGljZXM9bix0LnByaW1pdGl2ZVR5cGU9QnQuVFJJQU5HTEVTLHR9ZnVuY3Rpb24gbU0odCl7bGV0IGU9VXQuY29tcHV0ZU51bWJlck9mVmVydGljZXModCk7aWYoZTwzKXRocm93IG5ldyBEKCJUaGUgbnVtYmVyIG9mIHZlcnRpY2VzIG11c3QgYmUgYXQgbGVhc3QgMy4iKTtsZXQgbj1MdC5jcmVhdGVUeXBlZEFycmF5KGUsKGUtMikqMyk7blswXT0wLG5bMV09MSxuWzJdPTIsZT4zJiYoblszXT0wLG5bNF09MixuWzVdPTMpO2xldCBvPTY7Zm9yKGxldCByPTM7cjxlLTE7cis9MiluW28rK109cixuW28rK109ci0xLG5bbysrXT1yKzEscisyPGUmJihuW28rK109cixuW28rK109cisxLG5bbysrXT1yKzIpO3JldHVybiB0LmluZGljZXM9bix0LnByaW1pdGl2ZVR5cGU9QnQuVFJJQU5HTEVTLHR9ZnVuY3Rpb24gaE0odCl7aWYobSh0LmluZGljZXMpKXJldHVybiB0O2xldCBlPVV0LmNvbXB1dGVOdW1iZXJPZlZlcnRpY2VzKHQpO2lmKGU8Mil0aHJvdyBuZXcgRCgiVGhlIG51bWJlciBvZiB2ZXJ0aWNlcyBtdXN0IGJlIGF0IGxlYXN0IHR3by4iKTtpZihlJTIhPT0wKXRocm93IG5ldyBEKCJUaGUgbnVtYmVyIG9mIHZlcnRpY2VzIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAyLiIpO2xldCBuPUx0LmNyZWF0ZVR5cGVkQXJyYXkoZSxlKTtmb3IobGV0IG89MDtvPGU7KytvKW5bb109bztyZXR1cm4gdC5pbmRpY2VzPW4sdH1mdW5jdGlvbiBfTSh0KXtsZXQgZT1VdC5jb21wdXRlTnVtYmVyT2ZWZXJ0aWNlcyh0KTtpZihlPDIpdGhyb3cgbmV3IEQoIlRoZSBudW1iZXIgb2YgdmVydGljZXMgbXVzdCBiZSBhdCBsZWFzdCB0d28uIik7bGV0IG49THQuY3JlYXRlVHlwZWRBcnJheShlLChlLTEpKjIpO25bMF09MCxuWzFdPTE7bGV0IG89Mjtmb3IobGV0IHI9MjtyPGU7KytyKW5bbysrXT1yLTEsbltvKytdPXI7cmV0dXJuIHQuaW5kaWNlcz1uLHQucHJpbWl0aXZlVHlwZT1CdC5MSU5FUyx0fWZ1bmN0aW9uIHlNKHQpe2xldCBlPVV0LmNvbXB1dGVOdW1iZXJPZlZlcnRpY2VzKHQpO2lmKGU8Mil0aHJvdyBuZXcgRCgiVGhlIG51bWJlciBvZiB2ZXJ0aWNlcyBtdXN0IGJlIGF0IGxlYXN0IHR3by4iKTtsZXQgbj1MdC5jcmVhdGVUeXBlZEFycmF5KGUsZSoyKTtuWzBdPTAsblsxXT0xO2xldCBvPTI7Zm9yKGxldCByPTI7cjxlOysrciluW28rK109ci0xLG5bbysrXT1yO3JldHVybiBuW28rK109ZS0xLG5bb109MCx0LmluZGljZXM9bix0LnByaW1pdGl2ZVR5cGU9QnQuTElORVMsdH1mdW5jdGlvbiBnTSh0KXtzd2l0Y2godC5wcmltaXRpdmVUeXBlKXtjYXNlIEJ0LlRSSUFOR0xFX0ZBTjpyZXR1cm4gZE0odCk7Y2FzZSBCdC5UUklBTkdMRV9TVFJJUDpyZXR1cm4gbU0odCk7Y2FzZSBCdC5UUklBTkdMRVM6cmV0dXJuIHBNKHQpO2Nhc2UgQnQuTElORV9TVFJJUDpyZXR1cm4gX00odCk7Y2FzZSBCdC5MSU5FX0xPT1A6cmV0dXJuIHlNKHQpO2Nhc2UgQnQuTElORVM6cmV0dXJuIGhNKHQpfXJldHVybiB0fWZ1bmN0aW9uIGxzKHQsZSl7TWF0aC5hYnModC55KTxQLkVQU0lMT042JiYoZT90Lnk9LVAuRVBTSUxPTjY6dC55PVAuRVBTSUxPTjYpfWZ1bmN0aW9uIEFNKHQsZSxuKXtpZih0LnkhPT0wJiZlLnkhPT0wJiZuLnkhPT0wKXtscyh0LHQueTwwKSxscyhlLGUueTwwKSxscyhuLG4ueTwwKTtyZXR1cm59bGV0IG89TWF0aC5hYnModC55KSxyPU1hdGguYWJzKGUueSksaT1NYXRoLmFicyhuLnkpLHM7bz5yP28+aT9zPVAuc2lnbih0LnkpOnM9UC5zaWduKG4ueSk6cj5pP3M9UC5zaWduKGUueSk6cz1QLnNpZ24obi55KTtsZXQgZj1zPDA7bHModCxmKSxscyhlLGYpLGxzKG4sZil9ZnVuY3Rpb24gd3IodCxlLG4sbyl7YS5hZGQodCxhLm11bHRpcGx5QnlTY2FsYXIoYS5zdWJ0cmFjdChlLHQsdHcpLHQueS8odC55LWUueSksdHcpLG4pLGEuY2xvbmUobixvKSxscyhuLCEwKSxscyhvLCExKX1mdW5jdGlvbiBiTSh0LGUsbil7aWYodC54Pj0wfHxlLng+PTB8fG4ueD49MClyZXR1cm47QU0odCxlLG4pO2xldCBvPXQueTwwLHI9ZS55PDAsaT1uLnk8MCxzPTA7cys9bz8xOjAscys9cj8xOjAscys9aT8xOjA7bGV0IGY9UWguaW5kaWNlcztzPT09MT8oZlsxXT0zLGZbMl09NCxmWzVdPTYsZls3XT02LGZbOF09NSxvPyh3cih0LGUsbmMscmMpLHdyKHQsbixvYyxpYyksZlswXT0wLGZbM109MSxmWzRdPTIsZls2XT0xKTpyPyh3cihlLG4sbmMscmMpLHdyKGUsdCxvYyxpYyksZlswXT0xLGZbM109MixmWzRdPTAsZls2XT0yKTppJiYod3Iobix0LG5jLHJjKSx3cihuLGUsb2MsaWMpLGZbMF09MixmWzNdPTAsZls0XT0xLGZbNl09MCkpOnM9PT0yJiYoZlsyXT00LGZbNF09NCxmWzVdPTMsZls3XT01LGZbOF09NixvP3I/aXx8KHdyKG4sdCxuYyxyYyksd3IobixlLG9jLGljKSxmWzBdPTAsZlsxXT0xLGZbM109MCxmWzZdPTIpOih3cihlLG4sbmMscmMpLHdyKGUsdCxvYyxpYyksZlswXT0yLGZbMV09MCxmWzNdPTIsZls2XT0xKTood3IodCxlLG5jLHJjKSx3cih0LG4sb2MsaWMpLGZbMF09MSxmWzFdPTIsZlszXT0xLGZbNl09MCkpO2xldCB1PVFoLnBvc2l0aW9ucztyZXR1cm4gdVswXT10LHVbMV09ZSx1WzJdPW4sdS5sZW5ndGg9Mywocz09PTF8fHM9PT0yKSYmKHVbM109bmMsdVs0XT1vYyx1WzVdPXJjLHVbNl09aWMsdS5sZW5ndGg9NyksUWh9ZnVuY3Rpb24gZXcodCxlKXtsZXQgbj10LmF0dHJpYnV0ZXM7aWYobi5wb3NpdGlvbi52YWx1ZXMubGVuZ3RoPT09MClyZXR1cm47Zm9yKGxldCByIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShyKSYmbShuW3JdKSYmbShuW3JdLnZhbHVlcykpe2xldCBpPW5bcl07aS52YWx1ZXM9ZXQuY3JlYXRlVHlwZWRBcnJheShpLmNvbXBvbmVudERhdGF0eXBlLGkudmFsdWVzKX1sZXQgbz1VdC5jb21wdXRlTnVtYmVyT2ZWZXJ0aWNlcyh0KTtyZXR1cm4gdC5pbmRpY2VzPUx0LmNyZWF0ZVR5cGVkQXJyYXkobyx0LmluZGljZXMpLGUmJih0LmJvdW5kaW5nU3BoZXJlPUF0LmZyb21WZXJ0aWNlcyhuLnBvc2l0aW9uLnZhbHVlcykpLHR9ZnVuY3Rpb24gc2EodCl7bGV0IGU9dC5hdHRyaWJ1dGVzLG49e307Zm9yKGxldCBvIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShvKSYmbShlW29dKSYmbShlW29dLnZhbHVlcykpe2xldCByPWVbb107bltvXT1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOnIuY29tcG9uZW50RGF0YXR5cGUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTpyLmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUsbm9ybWFsaXplOnIubm9ybWFsaXplLHZhbHVlczpbXX0pfXJldHVybiBuZXcgVXQoe2F0dHJpYnV0ZXM6bixpbmRpY2VzOltdLHByaW1pdGl2ZVR5cGU6dC5wcmltaXRpdmVUeXBlfSl9ZnVuY3Rpb24gbjAodCxlLG4pe2xldCBvPW0odC5nZW9tZXRyeS5ib3VuZGluZ1NwaGVyZSk7ZT1ldyhlLG8pLG49ZXcobixvKSxtKG4pJiYhbShlKT90Lmdlb21ldHJ5PW46IW0obikmJm0oZSk/dC5nZW9tZXRyeT1lOih0Lndlc3RIZW1pc3BoZXJlR2VvbWV0cnk9ZSx0LmVhc3RIZW1pc3BoZXJlR2VvbWV0cnk9bix0Lmdlb21ldHJ5PXZvaWQgMCl9ZnVuY3Rpb24gbzAodCxlKXtsZXQgbj1uZXcgdCxvPW5ldyB0LHI9bmV3IHQ7cmV0dXJuIGZ1bmN0aW9uKGkscyxmLHUsYyxsLHAsZCl7bGV0IGg9dC5mcm9tQXJyYXkoYyxpKmUsbiksXz10LmZyb21BcnJheShjLHMqZSxvKSxnPXQuZnJvbUFycmF5KGMsZiplLHIpO3QubXVsdGlwbHlCeVNjYWxhcihoLHUueCxoKSx0Lm11bHRpcGx5QnlTY2FsYXIoXyx1LnksXyksdC5tdWx0aXBseUJ5U2NhbGFyKGcsdS56LGcpO2xldCBiPXQuYWRkKGgsXyxoKTt0LmFkZChiLGcsYiksZCYmdC5ub3JtYWxpemUoYixiKSx0LnBhY2soYixsLHAqZSl9fWZ1bmN0aW9uIEtwKHQsZSxuLG8scixpLHMsZix1LGMsbCxwLGQsaCxfLGcpe2lmKCFtKGkpJiYhbShzKSYmIW0oZikmJiFtKHUpJiYhbShjKSYmaD09PTApcmV0dXJuO2xldCBiPWEuZnJvbUFycmF5KHIsdCozLFJmKSx3PWEuZnJvbUFycmF5KHIsZSozLEpoKSxPPWEuZnJvbUFycmF5KHIsbiozLHQwKSxFPUliKG8sYix3LE8sT00pO2lmKG0oRSkpe2lmKG0oaSkmJlhwKHQsZSxuLEUsaSxwLm5vcm1hbC52YWx1ZXMsZywhMCksbShjKSl7bGV0IFQ9YS5mcm9tQXJyYXkoYyx0KjMsUmYpLHg9YS5mcm9tQXJyYXkoYyxlKjMsSmgpLE09YS5mcm9tQXJyYXkoYyxuKjMsdDApO2EubXVsdGlwbHlCeVNjYWxhcihULEUueCxUKSxhLm11bHRpcGx5QnlTY2FsYXIoeCxFLnkseCksYS5tdWx0aXBseUJ5U2NhbGFyKE0sRS56LE0pO2xldCBOOyFhLmVxdWFscyhULGEuWkVSTyl8fCFhLmVxdWFscyh4LGEuWkVSTyl8fCFhLmVxdWFscyhNLGEuWkVSTyk/KE49YS5hZGQoVCx4LFQpLGEuYWRkKE4sTSxOKSxhLm5vcm1hbGl6ZShOLE4pKTooTj1SZixOLng9MCxOLnk9MCxOLno9MCksYS5wYWNrKE4scC5leHRydWRlRGlyZWN0aW9uLnZhbHVlcyxnKjMpfWlmKG0obCkmJlRNKHQsZSxuLEUsbCxwLmFwcGx5T2Zmc2V0LnZhbHVlcyxnKSxtKHMpJiZYcCh0LGUsbixFLHMscC50YW5nZW50LnZhbHVlcyxnLCEwKSxtKGYpJiZYcCh0LGUsbixFLGYscC5iaXRhbmdlbnQudmFsdWVzLGcsITApLG0odSkmJmN3KHQsZSxuLEUsdSxwLnN0LnZhbHVlcyxnKSxoPjApZm9yKGxldCBUPTA7VDxoO1QrKyl7bGV0IHg9ZFtUXTtFTSh0LGUsbixFLGcsX1t4XSxwW3hdKX19fWZ1bmN0aW9uIEVNKHQsZSxuLG8scixpLHMpe2xldCBmPWkuY29tcG9uZW50c1BlckF0dHJpYnV0ZSx1PWkudmFsdWVzLGM9cy52YWx1ZXM7c3dpdGNoKGYpe2Nhc2UgNDp3TSh0LGUsbixvLHUsYyxyLCExKTticmVhaztjYXNlIDM6WHAodCxlLG4sbyx1LGMsciwhMSk7YnJlYWs7Y2FzZSAyOmN3KHQsZSxuLG8sdSxjLHIsITEpO2JyZWFrO2RlZmF1bHQ6Y1tyXT11W3RdKm8ueCt1W2VdKm8ueSt1W25dKm8uen19ZnVuY3Rpb24gc2kodCxlLG4sbyxyLGkpe2xldCBzPXQucG9zaXRpb24udmFsdWVzLmxlbmd0aC8zO2lmKHIhPT0tMSl7bGV0IGY9b1tyXSx1PW5bZl07cmV0dXJuIHU9PT0tMT8obltmXT1zLHQucG9zaXRpb24udmFsdWVzLnB1c2goaS54LGkueSxpLnopLGUucHVzaChzKSxzKTooZS5wdXNoKHUpLHUpfXJldHVybiB0LnBvc2l0aW9uLnZhbHVlcy5wdXNoKGkueCxpLnksaS56KSxlLnB1c2gocyksc31mdW5jdGlvbiBudyh0KXtsZXQgZT10Lmdlb21ldHJ5LG49ZS5hdHRyaWJ1dGVzLG89bi5wb3NpdGlvbi52YWx1ZXMscj1tKG4ubm9ybWFsKT9uLm5vcm1hbC52YWx1ZXM6dm9pZCAwLGk9bShuLmJpdGFuZ2VudCk/bi5iaXRhbmdlbnQudmFsdWVzOnZvaWQgMCxzPW0obi50YW5nZW50KT9uLnRhbmdlbnQudmFsdWVzOnZvaWQgMCxmPW0obi5zdCk/bi5zdC52YWx1ZXM6dm9pZCAwLHU9bShuLmV4dHJ1ZGVEaXJlY3Rpb24pP24uZXh0cnVkZURpcmVjdGlvbi52YWx1ZXM6dm9pZCAwLGM9bShuLmFwcGx5T2Zmc2V0KT9uLmFwcGx5T2Zmc2V0LnZhbHVlczp2b2lkIDAsbD1lLmluZGljZXMscD1bXTtmb3IobGV0IE4gaW4gbiluLmhhc093blByb3BlcnR5KE4pJiYhUk1bTl0mJm0obltOXSkmJnAucHVzaChOKTtsZXQgZD1wLmxlbmd0aCxoPXNhKGUpLF89c2EoZSksZyxiLHcsTyxFLFQ9W107VC5sZW5ndGg9by5sZW5ndGgvMztsZXQgeD1bXTtmb3IoeC5sZW5ndGg9by5sZW5ndGgvMyxFPTA7RTxULmxlbmd0aDsrK0UpVFtFXT0tMSx4W0VdPS0xO2xldCBNPWwubGVuZ3RoO2ZvcihFPTA7RTxNO0UrPTMpe2xldCBOPWxbRV0sRj1sW0UrMV0sST1sW0UrMl0sdj1hLmZyb21BcnJheShvLE4qMyksQj1hLmZyb21BcnJheShvLEYqMyksQT1hLmZyb21BcnJheShvLEkqMyksUz1iTSh2LEIsQSk7aWYobShTKSYmUy5wb3NpdGlvbnMubGVuZ3RoPjMpe2xldCBDPVMucG9zaXRpb25zLEw9Uy5pbmRpY2VzLHo9TC5sZW5ndGg7Zm9yKGxldCBqPTA7ajx6Oysrail7bGV0IGs9TFtqXSxxPUNba107cS55PDA/KGc9Xy5hdHRyaWJ1dGVzLGI9Xy5pbmRpY2VzLHc9VCk6KGc9aC5hdHRyaWJ1dGVzLGI9aC5pbmRpY2VzLHc9eCksTz1zaShnLGIsdyxsLGs8Mz9FK2s6LTEscSksS3AoTixGLEkscSxvLHIscyxpLGYsdSxjLGcscCxkLG4sTyl9fWVsc2UgbShTKSYmKHY9Uy5wb3NpdGlvbnNbMF0sQj1TLnBvc2l0aW9uc1sxXSxBPVMucG9zaXRpb25zWzJdKSx2Lnk8MD8oZz1fLmF0dHJpYnV0ZXMsYj1fLmluZGljZXMsdz1UKTooZz1oLmF0dHJpYnV0ZXMsYj1oLmluZGljZXMsdz14KSxPPXNpKGcsYix3LGwsRSx2KSxLcChOLEYsSSx2LG8scixzLGksZix1LGMsZyxwLGQsbixPKSxPPXNpKGcsYix3LGwsRSsxLEIpLEtwKE4sRixJLEIsbyxyLHMsaSxmLHUsYyxnLHAsZCxuLE8pLE89c2koZyxiLHcsbCxFKzIsQSksS3AoTixGLEksQSxvLHIscyxpLGYsdSxjLGcscCxkLG4sTyl9bjAodCxfLGgpfWZ1bmN0aW9uIGlhKHQsZSxuLG8scixpLHMpe2lmKCFtKHMpKXJldHVybjtsZXQgZj1hLmZyb21BcnJheShvLHQqMyxSZik7YS5lcXVhbHNFcHNpbG9uKGYsbixQLkVQU0lMT04xMCk/aS5hcHBseU9mZnNldC52YWx1ZXNbcl09c1t0XTppLmFwcGx5T2Zmc2V0LnZhbHVlc1tyXT1zW2VdfWZ1bmN0aW9uIG93KHQpe2xldCBlPXQuZ2VvbWV0cnksbj1lLmF0dHJpYnV0ZXMsbz1uLnBvc2l0aW9uLnZhbHVlcyxyPW0obi5hcHBseU9mZnNldCk/bi5hcHBseU9mZnNldC52YWx1ZXM6dm9pZCAwLGk9ZS5pbmRpY2VzLHM9c2EoZSksZj1zYShlKSx1LGM9aS5sZW5ndGgsbD1bXTtsLmxlbmd0aD1vLmxlbmd0aC8zO2xldCBwPVtdO2ZvcihwLmxlbmd0aD1vLmxlbmd0aC8zLHU9MDt1PGwubGVuZ3RoOysrdSlsW3VdPS0xLHBbdV09LTE7Zm9yKHU9MDt1PGM7dSs9Mil7bGV0IGQ9aVt1XSxoPWlbdSsxXSxfPWEuZnJvbUFycmF5KG8sZCozLFJmKSxnPWEuZnJvbUFycmF5KG8saCozLEpoKSxiO01hdGguYWJzKF8ueSk8UC5FUFNJTE9ONiYmKF8ueTwwP18ueT0tUC5FUFNJTE9ONjpfLnk9UC5FUFNJTE9ONiksTWF0aC5hYnMoZy55KTxQLkVQU0lMT042JiYoZy55PDA/Zy55PS1QLkVQU0lMT042OmcueT1QLkVQU0lMT042KTtsZXQgdz1zLmF0dHJpYnV0ZXMsTz1zLmluZGljZXMsRT1wLFQ9Zi5hdHRyaWJ1dGVzLHg9Zi5pbmRpY2VzLE09bCxOPXlvLmxpbmVTZWdtZW50UGxhbmUoXyxnLGF3LHQwKTtpZihtKE4pKXtsZXQgRj1hLm11bHRpcGx5QnlTY2FsYXIoYS5VTklUX1ksNSpQLkVQU0lMT045LFNNKTtfLnk8MCYmKGEubmVnYXRlKEYsRiksdz1mLmF0dHJpYnV0ZXMsTz1mLmluZGljZXMsRT1sLFQ9cy5hdHRyaWJ1dGVzLHg9cy5pbmRpY2VzLE09cCk7bGV0IEk9YS5hZGQoTixGLHhNKTtiPXNpKHcsTyxFLGksdSxfKSxpYShkLGgsXyxvLGIsdyxyKSxiPXNpKHcsTyxFLGksLTEsSSksaWEoZCxoLEksbyxiLHcsciksYS5uZWdhdGUoRixGKSxhLmFkZChOLEYsSSksYj1zaShULHgsTSxpLC0xLEkpLGlhKGQsaCxJLG8sYixULHIpLGI9c2koVCx4LE0saSx1KzEsZyksaWEoZCxoLGcsbyxiLFQscil9ZWxzZXtsZXQgRixJLHY7Xy55PDA/KEY9Zi5hdHRyaWJ1dGVzLEk9Zi5pbmRpY2VzLHY9bCk6KEY9cy5hdHRyaWJ1dGVzLEk9cy5pbmRpY2VzLHY9cCksYj1zaShGLEksdixpLHUsXyksaWEoZCxoLF8sbyxiLEYsciksYj1zaShGLEksdixpLHUrMSxnKSxpYShkLGgsZyxvLGIsRixyKX19bjAodCxmLHMpfWZ1bmN0aW9uIHN3KHQpe2xldCBlPXQuYXR0cmlidXRlcyxuPWUucG9zaXRpb24udmFsdWVzLG89ZS5wcmV2UG9zaXRpb24udmFsdWVzLHI9ZS5uZXh0UG9zaXRpb24udmFsdWVzLGk9bi5sZW5ndGg7Zm9yKGxldCBzPTA7czxpO3MrPTMpe2xldCBmPWEudW5wYWNrKG4scyxmdyk7aWYoZi54PjApY29udGludWU7bGV0IHU9YS51bnBhY2sobyxzLHV3KTsoZi55PDAmJnUueT4wfHxmLnk+MCYmdS55PDApJiYocy0zPjA/KG9bc109bltzLTNdLG9bcysxXT1uW3MtMl0sb1tzKzJdPW5bcy0xXSk6YS5wYWNrKGYsbyxzKSk7bGV0IGM9YS51bnBhY2socixzLGUwKTsoZi55PDAmJmMueT4wfHxmLnk+MCYmYy55PDApJiYocyszPGk/KHJbc109bltzKzNdLHJbcysxXT1uW3MrNF0scltzKzJdPW5bcys1XSk6YS5wYWNrKGYscixzKSl9fWZ1bmN0aW9uIHZNKHQpe2xldCBlPXQuZ2VvbWV0cnksbj1lLmF0dHJpYnV0ZXMsbz1uLnBvc2l0aW9uLnZhbHVlcyxyPW4ucHJldlBvc2l0aW9uLnZhbHVlcyxpPW4ubmV4dFBvc2l0aW9uLnZhbHVlcyxzPW4uZXhwYW5kQW5kV2lkdGgudmFsdWVzLGY9bShuLnN0KT9uLnN0LnZhbHVlczp2b2lkIDAsdT1tKG4uY29sb3IpP24uY29sb3IudmFsdWVzOnZvaWQgMCxjPXNhKGUpLGw9c2EoZSkscCxkLGgsXz0hMSxnPW8ubGVuZ3RoLzM7Zm9yKHA9MDtwPGc7cCs9NCl7bGV0IGI9cCx3PXArMixPPWEuZnJvbUFycmF5KG8sYiozLGZ3KSxFPWEuZnJvbUFycmF5KG8sdyozLHV3KTtpZihNYXRoLmFicyhPLnkpPFdwKWZvcihPLnk9V3AqKEUueTwwPy0xOjEpLG9bcCozKzFdPU8ueSxvWyhwKzEpKjMrMV09Ty55LGQ9YiozO2Q8YiozKzEyO2QrPTMpcltkXT1vW3AqM10scltkKzFdPW9bcCozKzFdLHJbZCsyXT1vW3AqMysyXTtpZihNYXRoLmFicyhFLnkpPFdwKWZvcihFLnk9V3AqKE8ueTwwPy0xOjEpLG9bKHArMikqMysxXT1FLnksb1socCszKSozKzFdPUUueSxkPWIqMztkPGIqMysxMjtkKz0zKWlbZF09b1socCsyKSozXSxpW2QrMV09b1socCsyKSozKzFdLGlbZCsyXT1vWyhwKzIpKjMrMl07bGV0IFQ9Yy5hdHRyaWJ1dGVzLHg9Yy5pbmRpY2VzLE09bC5hdHRyaWJ1dGVzLE49bC5pbmRpY2VzLEY9eW8ubGluZVNlZ21lbnRQbGFuZShPLEUsYXcsUE0pO2lmKG0oRikpe189ITA7bGV0IEk9YS5tdWx0aXBseUJ5U2NhbGFyKGEuVU5JVF9ZLElNLE1NKTtPLnk8MCYmKGEubmVnYXRlKEksSSksVD1sLmF0dHJpYnV0ZXMseD1sLmluZGljZXMsTT1jLmF0dHJpYnV0ZXMsTj1jLmluZGljZXMpO2xldCB2PWEuYWRkKEYsSSxOTSk7VC5wb3NpdGlvbi52YWx1ZXMucHVzaChPLngsTy55LE8ueixPLngsTy55LE8ueiksVC5wb3NpdGlvbi52YWx1ZXMucHVzaCh2Lngsdi55LHYueiksVC5wb3NpdGlvbi52YWx1ZXMucHVzaCh2Lngsdi55LHYueiksVC5wcmV2UG9zaXRpb24udmFsdWVzLnB1c2gocltiKjNdLHJbYiozKzFdLHJbYiozKzJdKSxULnByZXZQb3NpdGlvbi52YWx1ZXMucHVzaChyW2IqMyszXSxyW2IqMys0XSxyW2IqMys1XSksVC5wcmV2UG9zaXRpb24udmFsdWVzLnB1c2goTy54LE8ueSxPLnosTy54LE8ueSxPLnopLFQubmV4dFBvc2l0aW9uLnZhbHVlcy5wdXNoKHYueCx2Lnksdi56KSxULm5leHRQb3NpdGlvbi52YWx1ZXMucHVzaCh2Lngsdi55LHYueiksVC5uZXh0UG9zaXRpb24udmFsdWVzLnB1c2godi54LHYueSx2LnopLFQubmV4dFBvc2l0aW9uLnZhbHVlcy5wdXNoKHYueCx2Lnksdi56KSxhLm5lZ2F0ZShJLEkpLGEuYWRkKEYsSSx2KSxNLnBvc2l0aW9uLnZhbHVlcy5wdXNoKHYueCx2Lnksdi56KSxNLnBvc2l0aW9uLnZhbHVlcy5wdXNoKHYueCx2Lnksdi56KSxNLnBvc2l0aW9uLnZhbHVlcy5wdXNoKEUueCxFLnksRS56LEUueCxFLnksRS56KSxNLnByZXZQb3NpdGlvbi52YWx1ZXMucHVzaCh2Lngsdi55LHYueiksTS5wcmV2UG9zaXRpb24udmFsdWVzLnB1c2godi54LHYueSx2LnopLE0ucHJldlBvc2l0aW9uLnZhbHVlcy5wdXNoKHYueCx2Lnksdi56KSxNLnByZXZQb3NpdGlvbi52YWx1ZXMucHVzaCh2Lngsdi55LHYueiksTS5uZXh0UG9zaXRpb24udmFsdWVzLnB1c2goRS54LEUueSxFLnosRS54LEUueSxFLnopLE0ubmV4dFBvc2l0aW9uLnZhbHVlcy5wdXNoKGlbdyozXSxpW3cqMysxXSxpW3cqMysyXSksTS5uZXh0UG9zaXRpb24udmFsdWVzLnB1c2goaVt3KjMrM10saVt3KjMrNF0saVt3KjMrNV0pO2xldCBCPUouZnJvbUFycmF5KHMsYioyLHJ3KSxBPU1hdGguYWJzKEIueSk7VC5leHBhbmRBbmRXaWR0aC52YWx1ZXMucHVzaCgtMSxBLDEsQSksVC5leHBhbmRBbmRXaWR0aC52YWx1ZXMucHVzaCgtMSwtQSwxLC1BKSxNLmV4cGFuZEFuZFdpZHRoLnZhbHVlcy5wdXNoKC0xLEEsMSxBKSxNLmV4cGFuZEFuZFdpZHRoLnZhbHVlcy5wdXNoKC0xLC1BLDEsLUEpO2xldCBTPWEubWFnbml0dWRlU3F1YXJlZChhLnN1YnRyYWN0KEYsTyxlMCkpO2lmKFMvPWEubWFnbml0dWRlU3F1YXJlZChhLnN1YnRyYWN0KEUsTyxlMCkpLG0odSkpe2xldCBDPW1lLmZyb21BcnJheSh1LGIqNCxpdyksTD1tZS5mcm9tQXJyYXkodSx3KjQsaXcpLHo9UC5sZXJwKEMueCxMLngsUyksaj1QLmxlcnAoQy55LEwueSxTKSxrPVAubGVycChDLnosTC56LFMpLHE9UC5sZXJwKEMudyxMLncsUyk7Zm9yKGQ9Yio0O2Q8Yio0Kzg7KytkKVQuY29sb3IudmFsdWVzLnB1c2godVtkXSk7Zm9yKFQuY29sb3IudmFsdWVzLnB1c2goeixqLGsscSksVC5jb2xvci52YWx1ZXMucHVzaCh6LGosayxxKSxNLmNvbG9yLnZhbHVlcy5wdXNoKHosaixrLHEpLE0uY29sb3IudmFsdWVzLnB1c2goeixqLGsscSksZD13KjQ7ZDx3KjQrODsrK2QpTS5jb2xvci52YWx1ZXMucHVzaCh1W2RdKX1pZihtKGYpKXtsZXQgQz1KLmZyb21BcnJheShmLGIqMixydyksTD1KLmZyb21BcnJheShmLChwKzMpKjIsQ00pLHo9UC5sZXJwKEMueCxMLngsUyk7Zm9yKGQ9YioyO2Q8YioyKzQ7KytkKVQuc3QudmFsdWVzLnB1c2goZltkXSk7Zm9yKFQuc3QudmFsdWVzLnB1c2goeixDLnkpLFQuc3QudmFsdWVzLnB1c2goeixMLnkpLE0uc3QudmFsdWVzLnB1c2goeixDLnkpLE0uc3QudmFsdWVzLnB1c2goeixMLnkpLGQ9dyoyO2Q8dyoyKzQ7KytkKU0uc3QudmFsdWVzLnB1c2goZltkXSl9aD1ULnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMy00LHgucHVzaChoLGgrMixoKzEpLHgucHVzaChoKzEsaCsyLGgrMyksaD1NLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMy00LE4ucHVzaChoLGgrMixoKzEpLE4ucHVzaChoKzEsaCsyLGgrMyl9ZWxzZXtsZXQgSSx2O2ZvcihPLnk8MD8oST1sLmF0dHJpYnV0ZXMsdj1sLmluZGljZXMpOihJPWMuYXR0cmlidXRlcyx2PWMuaW5kaWNlcyksSS5wb3NpdGlvbi52YWx1ZXMucHVzaChPLngsTy55LE8ueiksSS5wb3NpdGlvbi52YWx1ZXMucHVzaChPLngsTy55LE8ueiksSS5wb3NpdGlvbi52YWx1ZXMucHVzaChFLngsRS55LEUueiksSS5wb3NpdGlvbi52YWx1ZXMucHVzaChFLngsRS55LEUueiksZD1wKjM7ZDxwKjMrMTI7KytkKUkucHJldlBvc2l0aW9uLnZhbHVlcy5wdXNoKHJbZF0pLEkubmV4dFBvc2l0aW9uLnZhbHVlcy5wdXNoKGlbZF0pO2ZvcihkPXAqMjtkPHAqMis4OysrZClJLmV4cGFuZEFuZFdpZHRoLnZhbHVlcy5wdXNoKHNbZF0pLG0oZikmJkkuc3QudmFsdWVzLnB1c2goZltkXSk7aWYobSh1KSlmb3IoZD1wKjQ7ZDxwKjQrMTY7KytkKUkuY29sb3IudmFsdWVzLnB1c2godVtkXSk7aD1JLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMy00LHYucHVzaChoLGgrMixoKzEpLHYucHVzaChoKzEsaCsyLGgrMyl9fV8mJihzdyhsKSxzdyhjKSksbjAodCxsLGMpfXZhciBMbywkYixjTSxYaCxHcixqcCxIcCxmTSxicixPZixvYSxyYSx1TSxaYixsTSxFZixrcixRYixKYixxcCx0dyxuYyxvYyxyYyxpYyxRaCx3TSxYcCxjdyxUTSxSZixKaCx0MCxPTSxSTSxhdyxTTSx4TSxydyxDTSxmdyx1dyxlMCxQTSxNTSxOTSxpdyxJTSxXcCxHZSxjaT0kKCgpPT57ZnMoKTt2YigpO3ZlKCk7a2UoKTtEdCgpO19yKCk7SWUoKTtEZSgpO2Z0KCk7SHQoKTtWaCgpO3hpKCk7WWUoKTskZSgpO0RwKCk7WmUoKTtWcygpO2VjKCk7S3QoKTtVbigpO2tuKCk7dXMoKTt0bigpO1hiKCk7TG89e307TG8udG9XaXJlZnJhbWU9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImdlb21ldHJ5IGlzIHJlcXVpcmVkLiIpO2xldCBlPXQuaW5kaWNlcztpZihtKGUpKXtzd2l0Y2godC5wcmltaXRpdmVUeXBlKXtjYXNlIEJ0LlRSSUFOR0xFUzp0LmluZGljZXM9b00oZSk7YnJlYWs7Y2FzZSBCdC5UUklBTkdMRV9TVFJJUDp0LmluZGljZXM9ck0oZSk7YnJlYWs7Y2FzZSBCdC5UUklBTkdMRV9GQU46dC5pbmRpY2VzPWlNKGUpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgbmV3IEQoImdlb21ldHJ5LnByaW1pdGl2ZVR5cGUgbXVzdCBiZSBUUklBTkdMRVMsIFRSSUFOR0xFX1NUUklQLCBvciBUUklBTkdMRV9GQU4uIil9dC5wcmltaXRpdmVUeXBlPUJ0LkxJTkVTfXJldHVybiB0fTtMby5jcmVhdGVMaW5lU2VnbWVudHNGb3JWZWN0b3JzPWZ1bmN0aW9uKHQsZSxuKXtpZihlPWU/PyJub3JtYWwiLCFtKHQpKXRocm93IG5ldyBEKCJnZW9tZXRyeSBpcyByZXF1aXJlZC4iKTtpZighbSh0LmF0dHJpYnV0ZXMucG9zaXRpb24pKXRocm93IG5ldyBEKCJnZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uIGlzIHJlcXVpcmVkLiIpO2lmKCFtKHQuYXR0cmlidXRlc1tlXSkpdGhyb3cgbmV3IEQoYGdlb21ldHJ5LmF0dHJpYnV0ZXMgbXVzdCBoYXZlIGFuIGF0dHJpYnV0ZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGF0dHJpYnV0ZU5hbWUgcGFyYW1ldGVyLCAke2V9LmApO249bj8/MWU0O2xldCBvPXQuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMscj10LmF0dHJpYnV0ZXNbZV0udmFsdWVzLGk9by5sZW5ndGgscz1uZXcgRmxvYXQ2NEFycmF5KDIqaSksZj0wO2ZvcihsZXQgbD0wO2w8aTtsKz0zKXNbZisrXT1vW2xdLHNbZisrXT1vW2wrMV0sc1tmKytdPW9bbCsyXSxzW2YrK109b1tsXStyW2xdKm4sc1tmKytdPW9bbCsxXStyW2wrMV0qbixzW2YrK109b1tsKzJdK3JbbCsyXSpuO2xldCB1LGM9dC5ib3VuZGluZ1NwaGVyZTtyZXR1cm4gbShjKSYmKHU9bmV3IEF0KGMuY2VudGVyLGMucmFkaXVzK24pKSxuZXcgVXQoe2F0dHJpYnV0ZXM6e3Bvc2l0aW9uOm5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6c30pfSxwcmltaXRpdmVUeXBlOkJ0LkxJTkVTLGJvdW5kaW5nU3BoZXJlOnV9KX07TG8uY3JlYXRlQXR0cmlidXRlTG9jYXRpb25zPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJnZW9tZXRyeSBpcyByZXF1aXJlZC4iKTtsZXQgZT1bInBvc2l0aW9uIiwicG9zaXRpb25IaWdoIiwicG9zaXRpb25Mb3ciLCJwb3NpdGlvbjNESGlnaCIsInBvc2l0aW9uM0RMb3ciLCJwb3NpdGlvbjJESGlnaCIsInBvc2l0aW9uMkRMb3ciLCJwaWNrQ29sb3IiLCJub3JtYWwiLCJzdCIsInRhbmdlbnQiLCJiaXRhbmdlbnQiLCJleHRydWRlRGlyZWN0aW9uIiwiY29tcHJlc3NlZEF0dHJpYnV0ZXMiXSxuPXQuYXR0cmlidXRlcyxvPXt9LHI9MCxpLHM9ZS5sZW5ndGg7Zm9yKGk9MDtpPHM7KytpKXtsZXQgZj1lW2ldO20obltmXSkmJihvW2ZdPXIrKyl9Zm9yKGxldCBmIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShmKSYmIW0ob1tmXSkmJihvW2ZdPXIrKyk7cmV0dXJuIG99O0xvLnJlb3JkZXJGb3JQcmVWZXJ0ZXhDYWNoZT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgRCgiZ2VvbWV0cnkgaXMgcmVxdWlyZWQuIik7bGV0IGU9VXQuY29tcHV0ZU51bWJlck9mVmVydGljZXModCksbj10LmluZGljZXM7aWYobShuKSl7bGV0IG89bmV3IEludDMyQXJyYXkoZSk7Zm9yKGxldCBkPTA7ZDxlO2QrKylvW2RdPS0xO2xldCByPW4saT1yLmxlbmd0aCxzPUx0LmNyZWF0ZVR5cGVkQXJyYXkoZSxpKSxmPTAsdT0wLGM9MCxsO2Zvcig7ZjxpOylsPW9bcltmXV0sbCE9PS0xP3NbdV09bDoobD1yW2ZdLG9bbF09YyxzW3VdPWMsKytjKSwrK2YsKyt1O3QuaW5kaWNlcz1zO2xldCBwPXQuYXR0cmlidXRlcztmb3IobGV0IGQgaW4gcClpZihwLmhhc093blByb3BlcnR5KGQpJiZtKHBbZF0pJiZtKHBbZF0udmFsdWVzKSl7bGV0IGg9cFtkXSxfPWgudmFsdWVzLGc9MCxiPWguY29tcG9uZW50c1BlckF0dHJpYnV0ZSx3PWV0LmNyZWF0ZVR5cGVkQXJyYXkoaC5jb21wb25lbnREYXRhdHlwZSxjKmIpO2Zvcig7ZzxlOyl7bGV0IE89b1tnXTtpZihPIT09LTEpZm9yKGxldCBFPTA7RTxiO0UrKyl3W2IqTytFXT1fW2IqZytFXTsrK2d9aC52YWx1ZXM9d319cmV0dXJuIHR9O0xvLnJlb3JkZXJGb3JQb3N0VmVydGV4Q2FjaGU9ZnVuY3Rpb24odCxlKXtpZighbSh0KSl0aHJvdyBuZXcgRCgiZ2VvbWV0cnkgaXMgcmVxdWlyZWQuIik7bGV0IG49dC5pbmRpY2VzO2lmKHQucHJpbWl0aXZlVHlwZT09PUJ0LlRSSUFOR0xFUyYmbShuKSl7bGV0IG89bi5sZW5ndGgscj0wO2ZvcihsZXQgaT0wO2k8bztpKyspbltpXT5yJiYocj1uW2ldKTt0LmluZGljZXM9V2IudGlwc2lmeSh7aW5kaWNlczpuLG1heGltdW1JbmRleDpyLGNhY2hlU2l6ZTplfSl9cmV0dXJuIHR9O0xvLmZpdFRvVW5zaWduZWRTaG9ydEluZGljZXM9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImdlb21ldHJ5IGlzIHJlcXVpcmVkLiIpO2lmKG0odC5pbmRpY2VzKSYmdC5wcmltaXRpdmVUeXBlIT09QnQuVFJJQU5HTEVTJiZ0LnByaW1pdGl2ZVR5cGUhPT1CdC5MSU5FUyYmdC5wcmltaXRpdmVUeXBlIT09QnQuUE9JTlRTKXRocm93IG5ldyBEKCJnZW9tZXRyeS5wcmltaXRpdmVUeXBlIG11c3QgZXF1YWwgdG8gUHJpbWl0aXZlVHlwZS5UUklBTkdMRVMsIFByaW1pdGl2ZVR5cGUuTElORVMsIG9yIFByaW1pdGl2ZVR5cGUuUE9JTlRTLiIpO2xldCBlPVtdLG49VXQuY29tcHV0ZU51bWJlck9mVmVydGljZXModCk7aWYobSh0LmluZGljZXMpJiZuPj1QLlNJWFRZX0ZPVVJfS0lMT0JZVEVTKXtsZXQgbz1bXSxyPVtdLGk9MCxzPVliKHQuYXR0cmlidXRlcyksZj10LmluZGljZXMsdT1mLmxlbmd0aCxjO3QucHJpbWl0aXZlVHlwZT09PUJ0LlRSSUFOR0xFUz9jPTM6dC5wcmltaXRpdmVUeXBlPT09QnQuTElORVM/Yz0yOnQucHJpbWl0aXZlVHlwZT09PUJ0LlBPSU5UUyYmKGM9MSk7Zm9yKGxldCBsPTA7bDx1O2wrPWMpe2ZvcihsZXQgcD0wO3A8YzsrK3Ape2xldCBkPWZbbCtwXSxoPW9bZF07bShoKXx8KGg9aSsrLG9bZF09aCxzTShzLHQuYXR0cmlidXRlcyxkKSksci5wdXNoKGgpfWkrYz49UC5TSVhUWV9GT1VSX0tJTE9CWVRFUyYmKGUucHVzaChuZXcgVXQoe2F0dHJpYnV0ZXM6cyxpbmRpY2VzOnIscHJpbWl0aXZlVHlwZTp0LnByaW1pdGl2ZVR5cGUsYm91bmRpbmdTcGhlcmU6dC5ib3VuZGluZ1NwaGVyZSxib3VuZGluZ1NwaGVyZUNWOnQuYm91bmRpbmdTcGhlcmVDVn0pKSxvPVtdLHI9W10saT0wLHM9WWIodC5hdHRyaWJ1dGVzKSl9ci5sZW5ndGghPT0wJiZlLnB1c2gobmV3IFV0KHthdHRyaWJ1dGVzOnMsaW5kaWNlczpyLHByaW1pdGl2ZVR5cGU6dC5wcmltaXRpdmVUeXBlLGJvdW5kaW5nU3BoZXJlOnQuYm91bmRpbmdTcGhlcmUsYm91bmRpbmdTcGhlcmVDVjp0LmJvdW5kaW5nU3BoZXJlQ1Z9KSl9ZWxzZSBlLnB1c2godCk7cmV0dXJuIGV9OyRiPW5ldyBhLGNNPW5ldyBjdDtMby5wcm9qZWN0VG8yRD1mdW5jdGlvbih0LGUsbixvLHIpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJnZW9tZXRyeSBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgiYXR0cmlidXRlTmFtZSBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgRCgiYXR0cmlidXRlTmFtZTNEIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG8pKXRocm93IG5ldyBEKCJhdHRyaWJ1dGVOYW1lMkQgaXMgcmVxdWlyZWQuIik7aWYoIW0odC5hdHRyaWJ1dGVzW2VdKSl0aHJvdyBuZXcgRChgZ2VvbWV0cnkgbXVzdCBoYXZlIGF0dHJpYnV0ZSBtYXRjaGluZyB0aGUgYXR0cmlidXRlTmFtZSBhcmd1bWVudDogJHtlfS5gKTtpZih0LmF0dHJpYnV0ZXNbZV0uY29tcG9uZW50RGF0YXR5cGUhPT1ldC5ET1VCTEUpdGhyb3cgbmV3IEQoIlRoZSBhdHRyaWJ1dGUgY29tcG9uZW50RGF0YXR5cGUgbXVzdCBiZSBDb21wb25lbnREYXRhdHlwZS5ET1VCTEUuIik7bGV0IGk9dC5hdHRyaWJ1dGVzW2VdO3I9bShyKT9yOm5ldyBlbztsZXQgcz1yLmVsbGlwc29pZCxmPWkudmFsdWVzLHU9bmV3IEZsb2F0NjRBcnJheShmLmxlbmd0aCksYz0wO2ZvcihsZXQgbD0wO2w8Zi5sZW5ndGg7bCs9Myl7bGV0IHA9YS5mcm9tQXJyYXkoZixsLCRiKSxkPXMuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMocCxjTSk7aWYoIW0oZCkpdGhyb3cgbmV3IEQoYENvdWxkIG5vdCBwcm9qZWN0IHBvaW50ICgke3AueH0sICR7cC55fSwgJHtwLnp9KSB0byAyRC5gKTtsZXQgaD1yLnByb2plY3QoZCwkYik7dVtjKytdPWgueCx1W2MrK109aC55LHVbYysrXT1oLnp9cmV0dXJuIHQuYXR0cmlidXRlc1tuXT1pLHQuYXR0cmlidXRlc1tvXT1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnV9KSxkZWxldGUgdC5hdHRyaWJ1dGVzW2VdLHR9O1hoPXtoaWdoOjAsbG93OjB9O0xvLmVuY29kZUF0dHJpYnV0ZT1mdW5jdGlvbih0LGUsbixvKXtpZighbSh0KSl0aHJvdyBuZXcgRCgiZ2VvbWV0cnkgaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImF0dHJpYnV0ZU5hbWUgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoImF0dHJpYnV0ZUhpZ2hOYW1lIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG8pKXRocm93IG5ldyBEKCJhdHRyaWJ1dGVMb3dOYW1lIGlzIHJlcXVpcmVkLiIpO2lmKCFtKHQuYXR0cmlidXRlc1tlXSkpdGhyb3cgbmV3IEQoYGdlb21ldHJ5IG11c3QgaGF2ZSBhdHRyaWJ1dGUgbWF0Y2hpbmcgdGhlIGF0dHJpYnV0ZU5hbWUgYXJndW1lbnQ6ICR7ZX0uYCk7aWYodC5hdHRyaWJ1dGVzW2VdLmNvbXBvbmVudERhdGF0eXBlIT09ZXQuRE9VQkxFKXRocm93IG5ldyBEKCJUaGUgYXR0cmlidXRlIGNvbXBvbmVudERhdGF0eXBlIG11c3QgYmUgQ29tcG9uZW50RGF0YXR5cGUuRE9VQkxFLiIpO2xldCByPXQuYXR0cmlidXRlc1tlXSxpPXIudmFsdWVzLHM9aS5sZW5ndGgsZj1uZXcgRmxvYXQzMkFycmF5KHMpLHU9bmV3IEZsb2F0MzJBcnJheShzKTtmb3IobGV0IGw9MDtsPHM7KytsKVFzLmVuY29kZShpW2xdLFhoKSxmW2xdPVhoLmhpZ2gsdVtsXT1YaC5sb3c7bGV0IGM9ci5jb21wb25lbnRzUGVyQXR0cmlidXRlO3JldHVybiB0LmF0dHJpYnV0ZXNbbl09bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOmMsdmFsdWVzOmZ9KSx0LmF0dHJpYnV0ZXNbb109bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOmMsdmFsdWVzOnV9KSxkZWxldGUgdC5hdHRyaWJ1dGVzW2VdLHR9O0dyPW5ldyBhO2pwPW5ldyBzdCxIcD1uZXcgWjtMby50cmFuc2Zvcm1Ub1dvcmxkQ29vcmRpbmF0ZXM9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImluc3RhbmNlIGlzIHJlcXVpcmVkLiIpO2xldCBlPXQubW9kZWxNYXRyaXg7aWYoc3QuZXF1YWxzKGUsc3QuSURFTlRJVFkpKXJldHVybiB0O2xldCBuPXQuZ2VvbWV0cnkuYXR0cmlidXRlcztZaChlLG4ucG9zaXRpb24pLFloKGUsbi5wcmV2UG9zaXRpb24pLFloKGUsbi5uZXh0UG9zaXRpb24pLChtKG4ubm9ybWFsKXx8bShuLnRhbmdlbnQpfHxtKG4uYml0YW5nZW50KSkmJihzdC5pbnZlcnNlKGUsanApLHN0LnRyYW5zcG9zZShqcCxqcCksc3QuZ2V0TWF0cml4MyhqcCxIcCksJGgoSHAsbi5ub3JtYWwpLCRoKEhwLG4udGFuZ2VudCksJGgoSHAsbi5iaXRhbmdlbnQpKTtsZXQgbz10Lmdlb21ldHJ5LmJvdW5kaW5nU3BoZXJlO3JldHVybiBtKG8pJiYodC5nZW9tZXRyeS5ib3VuZGluZ1NwaGVyZT1BdC50cmFuc2Zvcm0obyxlLG8pKSx0Lm1vZGVsTWF0cml4PXN0LmNsb25lKHN0LklERU5USVRZKSx0fTtmTT1uZXcgYTtMby5jb21iaW5lSW5zdGFuY2VzPWZ1bmN0aW9uKHQpe2lmKCFtKHQpfHx0Lmxlbmd0aDwxKXRocm93IG5ldyBEKCJpbnN0YW5jZXMgaXMgcmVxdWlyZWQgYW5kIG11c3QgaGF2ZSBsZW5ndGggZ3JlYXRlciB0aGFuIHplcm8uIik7bGV0IGU9W10sbj1bXSxvPXQubGVuZ3RoO2ZvcihsZXQgaT0wO2k8bzsrK2kpe2xldCBzPXRbaV07bShzLmdlb21ldHJ5KT9lLnB1c2gocyk6bShzLndlc3RIZW1pc3BoZXJlR2VvbWV0cnkpJiZtKHMuZWFzdEhlbWlzcGhlcmVHZW9tZXRyeSkmJm4ucHVzaChzKX1sZXQgcj1bXTtyZXR1cm4gZS5sZW5ndGg+MCYmci5wdXNoKFpoKGUsImdlb21ldHJ5IikpLG4ubGVuZ3RoPjAmJihyLnB1c2goWmgobiwid2VzdEhlbWlzcGhlcmVHZW9tZXRyeSIpKSxyLnB1c2goWmgobiwiZWFzdEhlbWlzcGhlcmVHZW9tZXRyeSIpKSkscn07YnI9bmV3IGEsT2Y9bmV3IGEsb2E9bmV3IGEscmE9bmV3IGE7TG8uY29tcHV0ZU5vcm1hbD1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgRCgiZ2VvbWV0cnkgaXMgcmVxdWlyZWQuIik7aWYoIW0odC5hdHRyaWJ1dGVzLnBvc2l0aW9uKXx8IW0odC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcykpdGhyb3cgbmV3IEQoImdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzIGlzIHJlcXVpcmVkLiIpO2lmKCFtKHQuaW5kaWNlcykpdGhyb3cgbmV3IEQoImdlb21ldHJ5LmluZGljZXMgaXMgcmVxdWlyZWQuIik7aWYodC5pbmRpY2VzLmxlbmd0aDwyfHx0LmluZGljZXMubGVuZ3RoJTMhPT0wKXRocm93IG5ldyBEKCJnZW9tZXRyeS5pbmRpY2VzIGxlbmd0aCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIGFuZCBiZSBhIG11bHRpcGxlIG9mIDMuIik7aWYodC5wcmltaXRpdmVUeXBlIT09QnQuVFJJQU5HTEVTKXRocm93IG5ldyBEKCJnZW9tZXRyeS5wcmltaXRpdmVUeXBlIG11c3QgYmUgUHJpbWl0aXZlVHlwZS5UUklBTkdMRVMuIik7bGV0IGU9dC5pbmRpY2VzLG49dC5hdHRyaWJ1dGVzLG89bi5wb3NpdGlvbi52YWx1ZXMscj1uLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMyxpPWUubGVuZ3RoLHM9bmV3IEFycmF5KHIpLGY9bmV3IEFycmF5KGkvMyksdT1uZXcgQXJyYXkoaSksYztmb3IoYz0wO2M8cjtjKyspc1tjXT17aW5kZXhPZmZzZXQ6MCxjb3VudDowLGN1cnJlbnRDb3VudDowfTtsZXQgbD0wO2ZvcihjPTA7YzxpO2MrPTMpe2xldCBfPWVbY10sZz1lW2MrMV0sYj1lW2MrMl0sdz1fKjMsTz1nKjMsRT1iKjM7T2YueD1vW3ddLE9mLnk9b1t3KzFdLE9mLno9b1t3KzJdLG9hLng9b1tPXSxvYS55PW9bTysxXSxvYS56PW9bTysyXSxyYS54PW9bRV0scmEueT1vW0UrMV0scmEuej1vW0UrMl0sc1tfXS5jb3VudCsrLHNbZ10uY291bnQrKyxzW2JdLmNvdW50KyssYS5zdWJ0cmFjdChvYSxPZixvYSksYS5zdWJ0cmFjdChyYSxPZixyYSksZltsXT1hLmNyb3NzKG9hLHJhLG5ldyBhKSxsKyt9bGV0IHA9MDtmb3IoYz0wO2M8cjtjKyspc1tjXS5pbmRleE9mZnNldCs9cCxwKz1zW2NdLmNvdW50O2w9MDtsZXQgZDtmb3IoYz0wO2M8aTtjKz0zKXtkPXNbZVtjXV07bGV0IF89ZC5pbmRleE9mZnNldCtkLmN1cnJlbnRDb3VudDt1W19dPWwsZC5jdXJyZW50Q291bnQrKyxkPXNbZVtjKzFdXSxfPWQuaW5kZXhPZmZzZXQrZC5jdXJyZW50Q291bnQsdVtfXT1sLGQuY3VycmVudENvdW50KyssZD1zW2VbYysyXV0sXz1kLmluZGV4T2Zmc2V0K2QuY3VycmVudENvdW50LHVbX109bCxkLmN1cnJlbnRDb3VudCsrLGwrK31sZXQgaD1uZXcgRmxvYXQzMkFycmF5KHIqMyk7Zm9yKGM9MDtjPHI7YysrKXtsZXQgXz1jKjM7aWYoZD1zW2NdLGEuY2xvbmUoYS5aRVJPLGJyKSxkLmNvdW50PjApe2ZvcihsPTA7bDxkLmNvdW50O2wrKylhLmFkZChicixmW3VbZC5pbmRleE9mZnNldCtsXV0sYnIpO2EuZXF1YWxzRXBzaWxvbihhLlpFUk8sYnIsUC5FUFNJTE9OMTApJiZhLmNsb25lKGZbdVtkLmluZGV4T2Zmc2V0XV0sYnIpfWEuZXF1YWxzRXBzaWxvbihhLlpFUk8sYnIsUC5FUFNJTE9OMTApJiYoYnIuej0xKSxhLm5vcm1hbGl6ZShicixiciksaFtfXT1ici54LGhbXysxXT1ici55LGhbXysyXT1ici56fXJldHVybiB0LmF0dHJpYnV0ZXMubm9ybWFsPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpofSksdH07dU09bmV3IGEsWmI9bmV3IGEsbE09bmV3IGE7TG8uY29tcHV0ZVRhbmdlbnRBbmRCaXRhbmdlbnQ9ZnVuY3Rpb24odCl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImdlb21ldHJ5IGlzIHJlcXVpcmVkLiIpO2xldCBlPXQuYXR0cmlidXRlcyxuPXQuaW5kaWNlcztpZighbShlLnBvc2l0aW9uKXx8IW0oZS5wb3NpdGlvbi52YWx1ZXMpKXRocm93IG5ldyBEKCJnZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyBpcyByZXF1aXJlZC4iKTtpZighbShlLm5vcm1hbCl8fCFtKGUubm9ybWFsLnZhbHVlcykpdGhyb3cgbmV3IEQoImdlb21ldHJ5LmF0dHJpYnV0ZXMubm9ybWFsLnZhbHVlcyBpcyByZXF1aXJlZC4iKTtpZighbShlLnN0KXx8IW0oZS5zdC52YWx1ZXMpKXRocm93IG5ldyBEKCJnZW9tZXRyeS5hdHRyaWJ1dGVzLnN0LnZhbHVlcyBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgRCgiZ2VvbWV0cnkuaW5kaWNlcyBpcyByZXF1aXJlZC4iKTtpZihuLmxlbmd0aDwyfHxuLmxlbmd0aCUzIT09MCl0aHJvdyBuZXcgRCgiZ2VvbWV0cnkuaW5kaWNlcyBsZW5ndGggbXVzdCBiZSBncmVhdGVyIHRoYW4gMCBhbmQgYmUgYSBtdWx0aXBsZSBvZiAzLiIpO2lmKHQucHJpbWl0aXZlVHlwZSE9PUJ0LlRSSUFOR0xFUyl0aHJvdyBuZXcgRCgiZ2VvbWV0cnkucHJpbWl0aXZlVHlwZSBtdXN0IGJlIFByaW1pdGl2ZVR5cGUuVFJJQU5HTEVTLiIpO2xldCBvPXQuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMscj10LmF0dHJpYnV0ZXMubm9ybWFsLnZhbHVlcyxpPXQuYXR0cmlidXRlcy5zdC52YWx1ZXMscz10LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLmxlbmd0aC8zLGY9bi5sZW5ndGgsdT1uZXcgQXJyYXkocyozKSxjO2ZvcihjPTA7Yzx1Lmxlbmd0aDtjKyspdVtjXT0wO2xldCBsLHAsZDtmb3IoYz0wO2M8ZjtjKz0zKXtsZXQgZz1uW2NdLGI9bltjKzFdLHc9bltjKzJdO2w9ZyozLHA9YiozLGQ9dyozO2xldCBPPWcqMixFPWIqMixUPXcqMix4PW9bbF0sTT1vW2wrMV0sTj1vW2wrMl0sRj1pW09dLEk9aVtPKzFdLHY9aVtFKzFdLUksQj1pW1QrMV0tSSxBPTEvKChpW0VdLUYpKkItKGlbVF0tRikqdiksUz0oQioob1twXS14KS12KihvW2RdLXgpKSpBLEM9KEIqKG9bcCsxXS1NKS12KihvW2QrMV0tTSkpKkEsTD0oQioob1twKzJdLU4pLXYqKG9bZCsyXS1OKSkqQTt1W2xdKz1TLHVbbCsxXSs9Qyx1W2wrMl0rPUwsdVtwXSs9Uyx1W3ArMV0rPUMsdVtwKzJdKz1MLHVbZF0rPVMsdVtkKzFdKz1DLHVbZCsyXSs9TH1sZXQgaD1uZXcgRmxvYXQzMkFycmF5KHMqMyksXz1uZXcgRmxvYXQzMkFycmF5KHMqMyk7Zm9yKGM9MDtjPHM7YysrKXtsPWMqMyxwPWwrMSxkPWwrMjtsZXQgZz1hLmZyb21BcnJheShyLGwsdU0pLGI9YS5mcm9tQXJyYXkodSxsLGxNKSx3PWEuZG90KGcsYik7YS5tdWx0aXBseUJ5U2NhbGFyKGcsdyxaYiksYS5ub3JtYWxpemUoYS5zdWJ0cmFjdChiLFpiLGIpLGIpLGhbbF09Yi54LGhbcF09Yi55LGhbZF09Yi56LGEubm9ybWFsaXplKGEuY3Jvc3MoZyxiLGIpLGIpLF9bbF09Yi54LF9bcF09Yi55LF9bZF09Yi56fXJldHVybiB0LmF0dHJpYnV0ZXMudGFuZ2VudD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6aH0pLHQuYXR0cmlidXRlcy5iaXRhbmdlbnQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOl99KSx0fTtFZj1uZXcgSixrcj1uZXcgYSxRYj1uZXcgYSxKYj1uZXcgYSxxcD1uZXcgSjtMby5jb21wcmVzc1ZlcnRpY2VzPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJnZW9tZXRyeSBpcyByZXF1aXJlZC4iKTtsZXQgZT10LmF0dHJpYnV0ZXMuZXh0cnVkZURpcmVjdGlvbixuLG87aWYobShlKSl7bGV0IE09ZS52YWx1ZXM7bz1NLmxlbmd0aC8zO2xldCBOPW5ldyBGbG9hdDMyQXJyYXkobyoyKSxGPTA7Zm9yKG49MDtuPG87KytuKXtpZihhLmZyb21BcnJheShNLG4qMyxrciksYS5lcXVhbHMoa3IsYS5aRVJPKSl7Ris9Mjtjb250aW51ZX1xcD1ubi5vY3RFbmNvZGVJblJhbmdlKGtyLDY1NTM1LHFwKSxOW0YrK109cXAueCxOW0YrK109cXAueX1yZXR1cm4gdC5hdHRyaWJ1dGVzLmNvbXByZXNzZWRBdHRyaWJ1dGVzPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpOfSksZGVsZXRlIHQuYXR0cmlidXRlcy5leHRydWRlRGlyZWN0aW9uLHR9bGV0IHI9dC5hdHRyaWJ1dGVzLm5vcm1hbCxpPXQuYXR0cmlidXRlcy5zdCxzPW0ociksZj1tKGkpO2lmKCFzJiYhZilyZXR1cm4gdDtsZXQgdT10LmF0dHJpYnV0ZXMudGFuZ2VudCxjPXQuYXR0cmlidXRlcy5iaXRhbmdlbnQsbD1tKHUpLHA9bShjKSxkLGgsXyxnO3MmJihkPXIudmFsdWVzKSxmJiYoaD1pLnZhbHVlcyksbCYmKF89dS52YWx1ZXMpLHAmJihnPWMudmFsdWVzKSxvPShzP2QubGVuZ3RoOmgubGVuZ3RoKS8ocz8zOjIpO2xldCBPPW8sRT1mJiZzPzI6MTtFKz1sfHxwPzE6MCxPKj1FO2xldCBUPW5ldyBGbG9hdDMyQXJyYXkoTykseD0wO2ZvcihuPTA7bjxvOysrbil7ZiYmKEouZnJvbUFycmF5KGgsbioyLEVmKSxUW3grK109bm4uY29tcHJlc3NUZXh0dXJlQ29vcmRpbmF0ZXMoRWYpKTtsZXQgTT1uKjM7cyYmbShfKSYmbShnKT8oYS5mcm9tQXJyYXkoZCxNLGtyKSxhLmZyb21BcnJheShfLE0sUWIpLGEuZnJvbUFycmF5KGcsTSxKYiksbm4ub2N0UGFjayhrcixRYixKYixFZiksVFt4KytdPUVmLngsVFt4KytdPUVmLnkpOihzJiYoYS5mcm9tQXJyYXkoZCxNLGtyKSxUW3grK109bm4ub2N0RW5jb2RlRmxvYXQoa3IpKSxsJiYoYS5mcm9tQXJyYXkoXyxNLGtyKSxUW3grK109bm4ub2N0RW5jb2RlRmxvYXQoa3IpKSxwJiYoYS5mcm9tQXJyYXkoZyxNLGtyKSxUW3grK109bm4ub2N0RW5jb2RlRmxvYXQoa3IpKSl9cmV0dXJuIHQuYXR0cmlidXRlcy5jb21wcmVzc2VkQXR0cmlidXRlcz1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6RSx2YWx1ZXM6VH0pLHMmJmRlbGV0ZSB0LmF0dHJpYnV0ZXMubm9ybWFsLGYmJmRlbGV0ZSB0LmF0dHJpYnV0ZXMuc3QscCYmZGVsZXRlIHQuYXR0cmlidXRlcy5iaXRhbmdlbnQsbCYmZGVsZXRlIHQuYXR0cmlidXRlcy50YW5nZW50LHR9O3R3PW5ldyBhO25jPW5ldyBhLG9jPW5ldyBhLHJjPW5ldyBhLGljPW5ldyBhLFFoPXtwb3NpdGlvbnM6bmV3IEFycmF5KDcpLGluZGljZXM6bmV3IEFycmF5KDkpfTt3TT1vMChtZSw0KSxYcD1vMChhLDMpLGN3PW8wKEosMiksVE09ZnVuY3Rpb24odCxlLG4sbyxyLGkscyl7bGV0IGY9clt0XSpvLngsdT1yW2VdKm8ueSxjPXJbbl0qby56O2lbc109Zit1K2M+UC5FUFNJTE9ONj8xOjB9LFJmPW5ldyBhLEpoPW5ldyBhLHQwPW5ldyBhLE9NPW5ldyBhO1JNPXtwb3NpdGlvbjohMCxub3JtYWw6ITAsYml0YW5nZW50OiEwLHRhbmdlbnQ6ITAsc3Q6ITAsZXh0cnVkZURpcmVjdGlvbjohMCxhcHBseU9mZnNldDohMH07YXc9b24uZnJvbVBvaW50Tm9ybWFsKGEuWkVSTyxhLlVOSVRfWSksU009bmV3IGEseE09bmV3IGE7cnc9bmV3IEosQ009bmV3IEosZnc9bmV3IGEsdXc9bmV3IGEsZTA9bmV3IGEsUE09bmV3IGEsTU09bmV3IGEsTk09bmV3IGEsaXc9bmV3IG1lO0lNPTUqUC5FUFNJTE9OOSxXcD1QLkVQU0lMT042O0xvLnNwbGl0TG9uZ2l0dWRlPWZ1bmN0aW9uKHQpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJpbnN0YW5jZSBpcyByZXF1aXJlZC4iKTtsZXQgZT10Lmdlb21ldHJ5LG49ZS5ib3VuZGluZ1NwaGVyZTtpZihtKG4pJiYobi5jZW50ZXIueC1uLnJhZGl1cz4wfHxBdC5pbnRlcnNlY3RQbGFuZShuLG9uLk9SSUdJTl9aWF9QTEFORSkhPT1Tbi5JTlRFUlNFQ1RJTkcpKXJldHVybiB0O2lmKGUuZ2VvbWV0cnlUeXBlIT09TmkuTk9ORSlzd2l0Y2goZS5nZW9tZXRyeVR5cGUpe2Nhc2UgTmkuUE9MWUxJTkVTOnZNKHQpO2JyZWFrO2Nhc2UgTmkuVFJJQU5HTEVTOm53KHQpO2JyZWFrO2Nhc2UgTmkuTElORVM6b3codCk7YnJlYWt9ZWxzZSBnTShlKSxlLnByaW1pdGl2ZVR5cGU9PT1CdC5UUklBTkdMRVM/bncodCk6ZS5wcmltaXRpdmVUeXBlPT09QnQuTElORVMmJm93KHQpO3JldHVybiB0fTtHZT1Mb30pO2Z1bmN0aW9uIFNmKHQsZSxuKXt0PXQ/PzAsZT1lPz8wLG49bj8/MCx0aGlzLnZhbHVlPW5ldyBGbG9hdDMyQXJyYXkoW3QsZSxuXSl9dmFyIGx3LHB3PSQoKCk9PntXdCgpO0RlKCk7ZnQoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhTZi5wcm90b3R5cGUse2NvbXBvbmVudERhdGF0eXBlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZXQuRkxPQVR9fSxjb21wb25lbnRzUGVyQXR0cmlidXRlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gM319LG5vcm1hbGl6ZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuITF9fX0pO1NmLmZyb21DYXJ0ZXNpYW4zPWZ1bmN0aW9uKHQpe3JldHVybiB5LmRlZmluZWQoIm9mZnNldCIsdCksbmV3IFNmKHQueCx0LnksdC56KX07U2YudG9WYWx1ZT1mdW5jdGlvbih0LGUpe3JldHVybiB5LmRlZmluZWQoIm9mZnNldCIsdCksbShlKXx8KGU9bmV3IEZsb2F0MzJBcnJheShbdC54LHQueSx0LnpdKSksZVswXT10LngsZVsxXT10LnksZVsyXT10LnosZX07bHc9U2Z9KTtmdW5jdGlvbiBRbyh0KXt0aGlzLl9lbGxpcHNvaWQ9dD8/WS5XR1M4NCx0aGlzLl9zZW1pbWFqb3JBeGlzPXRoaXMuX2VsbGlwc29pZC5tYXhpbXVtUmFkaXVzLHRoaXMuX29uZU92ZXJTZW1pbWFqb3JBeGlzPTEvdGhpcy5fc2VtaW1ham9yQXhpc312YXIgcm8sc2M9JCgoKT0+e0R0KCk7SWUoKTtmdCgpO0h0KCk7JHQoKTtLdCgpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFFvLnByb3RvdHlwZSx7ZWxsaXBzb2lkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZWxsaXBzb2lkfX19KTtRby5tZXJjYXRvckFuZ2xlVG9HZW9kZXRpY0xhdGl0dWRlPWZ1bmN0aW9uKHQpe3JldHVybiBQLlBJX09WRVJfVFdPLTIqTWF0aC5hdGFuKE1hdGguZXhwKC10KSl9O1FvLmdlb2RldGljTGF0aXR1ZGVUb01lcmNhdG9yQW5nbGU9ZnVuY3Rpb24odCl7dD5Rby5NYXhpbXVtTGF0aXR1ZGU/dD1Rby5NYXhpbXVtTGF0aXR1ZGU6dDwtUW8uTWF4aW11bUxhdGl0dWRlJiYodD0tUW8uTWF4aW11bUxhdGl0dWRlKTtsZXQgZT1NYXRoLnNpbih0KTtyZXR1cm4gLjUqTWF0aC5sb2coKDErZSkvKDEtZSkpfTtRby5NYXhpbXVtTGF0aXR1ZGU9UW8ubWVyY2F0b3JBbmdsZVRvR2VvZGV0aWNMYXRpdHVkZShNYXRoLlBJKTtRby5wcm90b3R5cGUucHJvamVjdD1mdW5jdGlvbih0LGUpe2xldCBuPXRoaXMuX3NlbWltYWpvckF4aXMsbz10LmxvbmdpdHVkZSpuLHI9UW8uZ2VvZGV0aWNMYXRpdHVkZVRvTWVyY2F0b3JBbmdsZSh0LmxhdGl0dWRlKSpuLGk9dC5oZWlnaHQ7cmV0dXJuIG0oZSk/KGUueD1vLGUueT1yLGUuej1pLGUpOm5ldyBhKG8scixpKX07UW8ucHJvdG90eXBlLnVucHJvamVjdD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJjYXJ0ZXNpYW4gaXMgcmVxdWlyZWQiKTtsZXQgbj10aGlzLl9vbmVPdmVyU2VtaW1ham9yQXhpcyxvPXQueCpuLHI9UW8ubWVyY2F0b3JBbmdsZVRvR2VvZGV0aWNMYXRpdHVkZSh0LnkqbiksaT10Lno7cmV0dXJuIG0oZSk/KGUubG9uZ2l0dWRlPW8sZS5sYXRpdHVkZT1yLGUuaGVpZ2h0PWksZSk6bmV3IGN0KG8scixpKX07cm89UW99KTtmdW5jdGlvbiBGTSh0LGUsbil7bGV0IG89IW4scj10Lmxlbmd0aCxpO2lmKCFvJiZyPjEpe2xldCBzPXRbMF0ubW9kZWxNYXRyaXg7Zm9yKGk9MTtpPHI7KytpKWlmKCFzdC5lcXVhbHMocyx0W2ldLm1vZGVsTWF0cml4KSl7bz0hMDticmVha319aWYobylmb3IoaT0wO2k8cjsrK2kpbSh0W2ldLmdlb21ldHJ5KSYmR2UudHJhbnNmb3JtVG9Xb3JsZENvb3JkaW5hdGVzKHRbaV0pO2Vsc2Ugc3QubXVsdGlwbHlUcmFuc2Zvcm1hdGlvbihlLHRbMF0ubW9kZWxNYXRyaXgsZSl9ZnVuY3Rpb24gcjAodCxlKXtsZXQgbj10LmF0dHJpYnV0ZXMsbz1uLnBvc2l0aW9uLHI9by52YWx1ZXMubGVuZ3RoL28uY29tcG9uZW50c1BlckF0dHJpYnV0ZTtuLmJhdGNoSWQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOm5ldyBGbG9hdDMyQXJyYXkocil9KTtsZXQgaT1uLmJhdGNoSWQudmFsdWVzO2ZvcihsZXQgcz0wO3M8cjsrK3MpaVtzXT1lfWZ1bmN0aW9uIExNKHQpe2xldCBlPXQubGVuZ3RoO2ZvcihsZXQgbj0wO248ZTsrK24pe2xldCBvPXRbbl07bShvLmdlb21ldHJ5KT9yMChvLmdlb21ldHJ5LG4pOm0oby53ZXN0SGVtaXNwaGVyZUdlb21ldHJ5KSYmbShvLmVhc3RIZW1pc3BoZXJlR2VvbWV0cnkpJiYocjAoby53ZXN0SGVtaXNwaGVyZUdlb21ldHJ5LG4pLHIwKG8uZWFzdEhlbWlzcGhlcmVHZW9tZXRyeSxuKSl9fWZ1bmN0aW9uIERNKHQpe2xldCBlPXQuaW5zdGFuY2VzLG49dC5wcm9qZWN0aW9uLG89dC5lbGVtZW50SW5kZXhVaW50U3VwcG9ydGVkLHI9dC5zY2VuZTNET25seSxpPXQudmVydGV4Q2FjaGVPcHRpbWl6ZSxzPXQuY29tcHJlc3NWZXJ0aWNlcyxmPXQubW9kZWxNYXRyaXgsdSxjLGwscD1lLmxlbmd0aDtmb3IodT0wO3U8cDsrK3UpaWYobShlW3VdLmdlb21ldHJ5KSl7bD1lW3VdLmdlb21ldHJ5LnByaW1pdGl2ZVR5cGU7YnJlYWt9Zm9yKHU9MTt1PHA7Kyt1KWlmKG0oZVt1XS5nZW9tZXRyeSkmJmVbdV0uZ2VvbWV0cnkucHJpbWl0aXZlVHlwZSE9PWwpdGhyb3cgbmV3IEQoIkFsbCBpbnN0YW5jZSBnZW9tZXRyaWVzIG11c3QgaGF2ZSB0aGUgc2FtZSBwcmltaXRpdmVUeXBlLiIpO2lmKEZNKGUsZixyKSwhcilmb3IodT0wO3U8cDsrK3UpbShlW3VdLmdlb21ldHJ5KSYmR2Uuc3BsaXRMb25naXR1ZGUoZVt1XSk7aWYoTE0oZSksaSlmb3IodT0wO3U8cDsrK3Upe2xldCBoPWVbdV07bShoLmdlb21ldHJ5KT8oR2UucmVvcmRlckZvclBvc3RWZXJ0ZXhDYWNoZShoLmdlb21ldHJ5KSxHZS5yZW9yZGVyRm9yUHJlVmVydGV4Q2FjaGUoaC5nZW9tZXRyeSkpOm0oaC53ZXN0SGVtaXNwaGVyZUdlb21ldHJ5KSYmbShoLmVhc3RIZW1pc3BoZXJlR2VvbWV0cnkpJiYoR2UucmVvcmRlckZvclBvc3RWZXJ0ZXhDYWNoZShoLndlc3RIZW1pc3BoZXJlR2VvbWV0cnkpLEdlLnJlb3JkZXJGb3JQcmVWZXJ0ZXhDYWNoZShoLndlc3RIZW1pc3BoZXJlR2VvbWV0cnkpLEdlLnJlb3JkZXJGb3JQb3N0VmVydGV4Q2FjaGUoaC5lYXN0SGVtaXNwaGVyZUdlb21ldHJ5KSxHZS5yZW9yZGVyRm9yUHJlVmVydGV4Q2FjaGUoaC5lYXN0SGVtaXNwaGVyZUdlb21ldHJ5KSl9bGV0IGQ9R2UuY29tYmluZUluc3RhbmNlcyhlKTtmb3IocD1kLmxlbmd0aCx1PTA7dTxwOysrdSl7Yz1kW3VdO2xldCBoPWMuYXR0cmlidXRlcztpZihyKWZvcihsZXQgXyBpbiBoKWguaGFzT3duUHJvcGVydHkoXykmJmhbX10uY29tcG9uZW50RGF0YXR5cGU9PT1ldC5ET1VCTEUmJkdlLmVuY29kZUF0dHJpYnV0ZShjLF8sYCR7X30zREhpZ2hgLGAke199M0RMb3dgKTtlbHNlIGZvcihsZXQgXyBpbiBoKWlmKGguaGFzT3duUHJvcGVydHkoXykmJmhbX10uY29tcG9uZW50RGF0YXR5cGU9PT1ldC5ET1VCTEUpe2xldCBnPWAke199M0RgLGI9YCR7X30yRGA7R2UucHJvamVjdFRvMkQoYyxfLGcsYixuKSxtKGMuYm91bmRpbmdTcGhlcmUpJiZfPT09InBvc2l0aW9uIiYmKGMuYm91bmRpbmdTcGhlcmVDVj1BdC5mcm9tVmVydGljZXMoYy5hdHRyaWJ1dGVzLnBvc2l0aW9uMkQudmFsdWVzKSksR2UuZW5jb2RlQXR0cmlidXRlKGMsZyxgJHtnfUhpZ2hgLGAke2d9TG93YCksR2UuZW5jb2RlQXR0cmlidXRlKGMsYixgJHtifUhpZ2hgLGAke2J9TG93YCl9cyYmR2UuY29tcHJlc3NWZXJ0aWNlcyhjKX1pZighbyl7bGV0IGg9W107Zm9yKHA9ZC5sZW5ndGgsdT0wO3U8cDsrK3UpYz1kW3VdLGg9aC5jb25jYXQoR2UuZml0VG9VbnNpZ25lZFNob3J0SW5kaWNlcyhjKSk7ZD1ofXJldHVybiBkfWZ1bmN0aW9uIGkwKHQsZSxuLG8pe2xldCByLGkscyxmPW8ubGVuZ3RoLTE7aWYoZj49MCl7bGV0IGM9b1tmXTtyPWMub2Zmc2V0K2MuY291bnQscz1jLmluZGV4LGk9bltzXS5pbmRpY2VzLmxlbmd0aH1lbHNlIHI9MCxzPTAsaT1uW3NdLmluZGljZXMubGVuZ3RoO2xldCB1PXQubGVuZ3RoO2ZvcihsZXQgYz0wO2M8dTsrK2Mpe2xldCBwPXRbY11bZV07aWYoIW0ocCkpY29udGludWU7bGV0IGQ9cC5pbmRpY2VzLmxlbmd0aDtyK2Q+aSYmKHI9MCxpPW5bKytzXS5pbmRpY2VzLmxlbmd0aCksby5wdXNoKHtpbmRleDpzLG9mZnNldDpyLGNvdW50OmR9KSxyKz1kfX1mdW5jdGlvbiBCTSh0LGUpe2xldCBuPVtdO3JldHVybiBpMCh0LCJnZW9tZXRyeSIsZSxuKSxpMCh0LCJ3ZXN0SGVtaXNwaGVyZUdlb21ldHJ5IixlLG4pLGkwKHQsImVhc3RIZW1pc3BoZXJlR2VvbWV0cnkiLGUsbiksbn1mdW5jdGlvbiBVTSh0LGUpe2xldCBuPXQuYXR0cmlidXRlcztmb3IobGV0IG8gaW4gbilpZihuLmhhc093blByb3BlcnR5KG8pKXtsZXQgcj1uW29dO20ocikmJm0oci52YWx1ZXMpJiZlLnB1c2goci52YWx1ZXMuYnVmZmVyKX1tKHQuaW5kaWNlcykmJmUucHVzaCh0LmluZGljZXMuYnVmZmVyKX1mdW5jdGlvbiBrTSh0LGUpe2xldCBuPXQubGVuZ3RoO2ZvcihsZXQgbz0wO288bjsrK28pVU0odFtvXSxlKX1mdW5jdGlvbiBHTSh0KXtsZXQgZT0xLG49dC5sZW5ndGg7Zm9yKGxldCBvPTA7bzxuO28rKyl7bGV0IHI9dFtvXTtpZigrK2UsIW0ocikpY29udGludWU7bGV0IGk9ci5hdHRyaWJ1dGVzO2UrPTcrMipBdC5wYWNrZWRMZW5ndGgrKG0oci5pbmRpY2VzKT9yLmluZGljZXMubGVuZ3RoOjApO2ZvcihsZXQgcyBpbiBpKWlmKGkuaGFzT3duUHJvcGVydHkocykmJm0oaVtzXSkpe2xldCBmPWlbc107ZSs9NStmLnZhbHVlcy5sZW5ndGh9fXJldHVybiBlfWZ1bmN0aW9uIFZNKHQsZSl7bGV0IG49dC5sZW5ndGgsbz1uZXcgRmxvYXQ2NEFycmF5KDErbioxOSkscj0wO29bcisrXT1uO2ZvcihsZXQgaT0wO2k8bjtpKyspe2xldCBzPXRbaV07aWYoc3QucGFjayhzLm1vZGVsTWF0cml4LG8scikscis9c3QucGFja2VkTGVuZ3RoLG0ocy5hdHRyaWJ1dGVzKSYmbShzLmF0dHJpYnV0ZXMub2Zmc2V0KSl7bGV0IGY9cy5hdHRyaWJ1dGVzLm9mZnNldC52YWx1ZTtvW3JdPWZbMF0sb1tyKzFdPWZbMV0sb1tyKzJdPWZbMl19cis9M31yZXR1cm4gZS5wdXNoKG8uYnVmZmVyKSxvfWZ1bmN0aW9uIHpNKHQpe2xldCBlPXQsbj1uZXcgQXJyYXkoZVswXSksbz0wLHI9MTtmb3IoO3I8ZS5sZW5ndGg7KXtsZXQgaT1zdC51bnBhY2soZSxyKSxzO3IrPXN0LnBhY2tlZExlbmd0aCxtKGVbcl0pJiYocz17b2Zmc2V0Om5ldyBsdyhlW3JdLGVbcisxXSxlW3IrMl0pfSkscis9MyxuW28rK109e21vZGVsTWF0cml4OmksYXR0cmlidXRlczpzfX1yZXR1cm4gbn1mdW5jdGlvbiBkdyh0KXtsZXQgZT10Lmxlbmd0aCxuPTErKEF0LnBhY2tlZExlbmd0aCsxKSplLG89bmV3IEZsb2F0MzJBcnJheShuKSxyPTA7b1tyKytdPWU7Zm9yKGxldCBpPTA7aTxlOysraSl7bGV0IHM9dFtpXTttKHMpPyhvW3IrK109MSxBdC5wYWNrKHRbaV0sbyxyKSk6b1tyKytdPTAscis9QXQucGFja2VkTGVuZ3RofXJldHVybiBvfWZ1bmN0aW9uIG13KHQpe2xldCBlPW5ldyBBcnJheSh0WzBdKSxuPTAsbz0xO2Zvcig7bzx0Lmxlbmd0aDspdFtvKytdPT09MSYmKGVbbl09QXQudW5wYWNrKHQsbykpLCsrbixvKz1BdC5wYWNrZWRMZW5ndGg7cmV0dXJuIGV9dmFyIHZpLGNhLHMwPSQoKCk9Pnt2ZSgpO0RlKCk7ZnQoKTtIdCgpOyR0KCk7eGkoKTtZZSgpOyRlKCk7YW4oKTtjaSgpO1plKCk7a24oKTtwdygpO3NjKCk7dmk9e307dmkuY29tYmluZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlLG4sbz10Lmluc3RhbmNlcyxyPW8ubGVuZ3RoLGkscyxmPSExO3I+MCYmKGU9RE0odCksZS5sZW5ndGg+MCYmKG49R2UuY3JlYXRlQXR0cmlidXRlTG9jYXRpb25zKGVbMF0pLHQuY3JlYXRlUGlja09mZnNldHMmJihpPUJNKG8sZSkpKSxtKG9bMF0uYXR0cmlidXRlcykmJm0ob1swXS5hdHRyaWJ1dGVzLm9mZnNldCkmJihzPW5ldyBBcnJheShyKSxmPSEwKSk7bGV0IHU9bmV3IEFycmF5KHIpLGM9bmV3IEFycmF5KHIpO2ZvcihsZXQgbD0wO2w8cjsrK2wpe2xldCBwPW9bbF0sZD1wLmdlb21ldHJ5O20oZCkmJih1W2xdPWQuYm91bmRpbmdTcGhlcmUsY1tsXT1kLmJvdW5kaW5nU3BoZXJlQ1YsZiYmKHNbbF09cC5nZW9tZXRyeS5vZmZzZXRBdHRyaWJ1dGUpKTtsZXQgaD1wLmVhc3RIZW1pc3BoZXJlR2VvbWV0cnksXz1wLndlc3RIZW1pc3BoZXJlR2VvbWV0cnk7bShoKSYmbShfKSYmKG0oaC5ib3VuZGluZ1NwaGVyZSkmJm0oXy5ib3VuZGluZ1NwaGVyZSkmJih1W2xdPUF0LnVuaW9uKGguYm91bmRpbmdTcGhlcmUsXy5ib3VuZGluZ1NwaGVyZSkpLG0oaC5ib3VuZGluZ1NwaGVyZUNWKSYmbShfLmJvdW5kaW5nU3BoZXJlQ1YpJiYoY1tsXT1BdC51bmlvbihoLmJvdW5kaW5nU3BoZXJlQ1YsXy5ib3VuZGluZ1NwaGVyZUNWKSkpfXJldHVybntnZW9tZXRyaWVzOmUsbW9kZWxNYXRyaXg6dC5tb2RlbE1hdHJpeCxhdHRyaWJ1dGVMb2NhdGlvbnM6bixwaWNrT2Zmc2V0czppLG9mZnNldEluc3RhbmNlRXh0ZW5kOnMsYm91bmRpbmdTcGhlcmVzOnUsYm91bmRpbmdTcGhlcmVzQ1Y6Y319O3ZpLnBhY2tDcmVhdGVHZW9tZXRyeVJlc3VsdHM9ZnVuY3Rpb24odCxlKXtsZXQgbj1uZXcgRmxvYXQ2NEFycmF5KEdNKHQpKSxvPVtdLHI9e30saT10Lmxlbmd0aCxzPTA7bltzKytdPWk7Zm9yKGxldCBmPTA7ZjxpO2YrKyl7bGV0IHU9dFtmXSxjPW0odSk7aWYobltzKytdPWM/MTowLCFjKWNvbnRpbnVlO25bcysrXT11LnByaW1pdGl2ZVR5cGUsbltzKytdPXUuZ2VvbWV0cnlUeXBlLG5bcysrXT11Lm9mZnNldEF0dHJpYnV0ZT8/LTE7bGV0IGw9bSh1LmJvdW5kaW5nU3BoZXJlKT8xOjA7bltzKytdPWwsbCYmQXQucGFjayh1LmJvdW5kaW5nU3BoZXJlLG4scykscys9QXQucGFja2VkTGVuZ3RoO2xldCBwPW0odS5ib3VuZGluZ1NwaGVyZUNWKT8xOjA7bltzKytdPXAscCYmQXQucGFjayh1LmJvdW5kaW5nU3BoZXJlQ1YsbixzKSxzKz1BdC5wYWNrZWRMZW5ndGg7bGV0IGQ9dS5hdHRyaWJ1dGVzLGg9W107Zm9yKGxldCBnIGluIGQpZC5oYXNPd25Qcm9wZXJ0eShnKSYmbShkW2ddKSYmKGgucHVzaChnKSxtKHJbZ10pfHwocltnXT1vLmxlbmd0aCxvLnB1c2goZykpKTtuW3MrK109aC5sZW5ndGg7Zm9yKGxldCBnPTA7ZzxoLmxlbmd0aDtnKyspe2xldCBiPWhbZ10sdz1kW2JdO25bcysrXT1yW2JdLG5bcysrXT13LmNvbXBvbmVudERhdGF0eXBlLG5bcysrXT13LmNvbXBvbmVudHNQZXJBdHRyaWJ1dGUsbltzKytdPXcubm9ybWFsaXplPzE6MCxuW3MrK109dy52YWx1ZXMubGVuZ3RoLG4uc2V0KHcudmFsdWVzLHMpLHMrPXcudmFsdWVzLmxlbmd0aH1sZXQgXz1tKHUuaW5kaWNlcyk/dS5pbmRpY2VzLmxlbmd0aDowO25bcysrXT1fLF8+MCYmKG4uc2V0KHUuaW5kaWNlcyxzKSxzKz1fKX1yZXR1cm4gZS5wdXNoKG4uYnVmZmVyKSx7c3RyaW5nVGFibGU6byxwYWNrZWREYXRhOm59fTt2aS51bnBhY2tDcmVhdGVHZW9tZXRyeVJlc3VsdHM9ZnVuY3Rpb24odCl7bGV0IGU9dC5zdHJpbmdUYWJsZSxuPXQucGFja2VkRGF0YSxvLHI9bmV3IEFycmF5KG5bMF0pLGk9MCxzPTE7Zm9yKDtzPG4ubGVuZ3RoOyl7aWYoIShuW3MrK109PT0xKSl7cltpKytdPXZvaWQgMDtjb250aW51ZX1sZXQgdT1uW3MrK10sYz1uW3MrK10sbD1uW3MrK107bD09PS0xJiYobD12b2lkIDApO2xldCBwLGQ7bltzKytdPT09MSYmKHA9QXQudW5wYWNrKG4scykpLHMrPUF0LnBhY2tlZExlbmd0aCxuW3MrK109PT0xJiYoZD1BdC51bnBhY2sobixzKSkscys9QXQucGFja2VkTGVuZ3RoO2xldCBnLGIsdyxPPW5ldyBpZSxFPW5bcysrXTtmb3Iobz0wO288RTtvKyspe2xldCB4PWVbbltzKytdXSxNPW5bcysrXTt3PW5bcysrXTtsZXQgTj1uW3MrK10hPT0wO2c9bltzKytdLGI9ZXQuY3JlYXRlVHlwZWRBcnJheShNLGcpO2ZvcihsZXQgRj0wO0Y8ZztGKyspYltGXT1uW3MrK107T1t4XT1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOk0sY29tcG9uZW50c1BlckF0dHJpYnV0ZTp3LG5vcm1hbGl6ZTpOLHZhbHVlczpifSl9bGV0IFQ7aWYoZz1uW3MrK10sZz4wKXtsZXQgeD1iLmxlbmd0aC93O2ZvcihUPUx0LmNyZWF0ZVR5cGVkQXJyYXkoeCxnKSxvPTA7bzxnO28rKylUW29dPW5bcysrXX1yW2krK109bmV3IFV0KHtwcmltaXRpdmVUeXBlOnUsZ2VvbWV0cnlUeXBlOmMsYm91bmRpbmdTcGhlcmU6cCxib3VuZGluZ1NwaGVyZUNWOmQsaW5kaWNlczpULGF0dHJpYnV0ZXM6TyxvZmZzZXRBdHRyaWJ1dGU6bH0pfXJldHVybiByfTt2aS5wYWNrQ29tYmluZUdlb21ldHJ5UGFyYW1ldGVycz1mdW5jdGlvbih0LGUpe2xldCBuPXQuY3JlYXRlR2VvbWV0cnlSZXN1bHRzLG89bi5sZW5ndGg7Zm9yKGxldCByPTA7cjxvO3IrKyllLnB1c2gobltyXS5wYWNrZWREYXRhLmJ1ZmZlcik7cmV0dXJue2NyZWF0ZUdlb21ldHJ5UmVzdWx0czp0LmNyZWF0ZUdlb21ldHJ5UmVzdWx0cyxwYWNrZWRJbnN0YW5jZXM6Vk0odC5pbnN0YW5jZXMsZSksZWxsaXBzb2lkOnQuZWxsaXBzb2lkLGlzR2VvZ3JhcGhpYzp0LnByb2plY3Rpb24gaW5zdGFuY2VvZiBlbyxlbGVtZW50SW5kZXhVaW50U3VwcG9ydGVkOnQuZWxlbWVudEluZGV4VWludFN1cHBvcnRlZCxzY2VuZTNET25seTp0LnNjZW5lM0RPbmx5LHZlcnRleENhY2hlT3B0aW1pemU6dC52ZXJ0ZXhDYWNoZU9wdGltaXplLGNvbXByZXNzVmVydGljZXM6dC5jb21wcmVzc1ZlcnRpY2VzLG1vZGVsTWF0cml4OnQubW9kZWxNYXRyaXgsY3JlYXRlUGlja09mZnNldHM6dC5jcmVhdGVQaWNrT2Zmc2V0c319O3ZpLnVucGFja0NvbWJpbmVHZW9tZXRyeVBhcmFtZXRlcnM9ZnVuY3Rpb24odCl7bGV0IGU9ek0odC5wYWNrZWRJbnN0YW5jZXMpLG49dC5jcmVhdGVHZW9tZXRyeVJlc3VsdHMsbz1uLmxlbmd0aCxyPTA7Zm9yKGxldCBmPTA7ZjxvO2YrKyl7bGV0IHU9dmkudW5wYWNrQ3JlYXRlR2VvbWV0cnlSZXN1bHRzKG5bZl0pLGM9dS5sZW5ndGg7Zm9yKGxldCBsPTA7bDxjO2wrKyl7bGV0IHA9dVtsXSxkPWVbcl07ZC5nZW9tZXRyeT1wLCsrcn19bGV0IGk9WS5jbG9uZSh0LmVsbGlwc29pZCkscz10LmlzR2VvZ3JhcGhpYz9uZXcgZW8oaSk6bmV3IHJvKGkpO3JldHVybntpbnN0YW5jZXM6ZSxlbGxpcHNvaWQ6aSxwcm9qZWN0aW9uOnMsZWxlbWVudEluZGV4VWludFN1cHBvcnRlZDp0LmVsZW1lbnRJbmRleFVpbnRTdXBwb3J0ZWQsc2NlbmUzRE9ubHk6dC5zY2VuZTNET25seSx2ZXJ0ZXhDYWNoZU9wdGltaXplOnQudmVydGV4Q2FjaGVPcHRpbWl6ZSxjb21wcmVzc1ZlcnRpY2VzOnQuY29tcHJlc3NWZXJ0aWNlcyxtb2RlbE1hdHJpeDpzdC5jbG9uZSh0Lm1vZGVsTWF0cml4KSxjcmVhdGVQaWNrT2Zmc2V0czp0LmNyZWF0ZVBpY2tPZmZzZXRzfX07dmkucGFja0NvbWJpbmVHZW9tZXRyeVJlc3VsdHM9ZnVuY3Rpb24odCxlKXttKHQuZ2VvbWV0cmllcykmJmtNKHQuZ2VvbWV0cmllcyxlKTtsZXQgbj1kdyh0LmJvdW5kaW5nU3BoZXJlcyksbz1kdyh0LmJvdW5kaW5nU3BoZXJlc0NWKTtyZXR1cm4gZS5wdXNoKG4uYnVmZmVyLG8uYnVmZmVyKSx7Z2VvbWV0cmllczp0Lmdlb21ldHJpZXMsYXR0cmlidXRlTG9jYXRpb25zOnQuYXR0cmlidXRlTG9jYXRpb25zLG1vZGVsTWF0cml4OnQubW9kZWxNYXRyaXgscGlja09mZnNldHM6dC5waWNrT2Zmc2V0cyxvZmZzZXRJbnN0YW5jZUV4dGVuZDp0Lm9mZnNldEluc3RhbmNlRXh0ZW5kLGJvdW5kaW5nU3BoZXJlczpuLGJvdW5kaW5nU3BoZXJlc0NWOm99fTt2aS51bnBhY2tDb21iaW5lR2VvbWV0cnlSZXN1bHRzPWZ1bmN0aW9uKHQpe3JldHVybntnZW9tZXRyaWVzOnQuZ2VvbWV0cmllcyxhdHRyaWJ1dGVMb2NhdGlvbnM6dC5hdHRyaWJ1dGVMb2NhdGlvbnMsbW9kZWxNYXRyaXg6dC5tb2RlbE1hdHJpeCxwaWNrT2Zmc2V0czp0LnBpY2tPZmZzZXRzLG9mZnNldEluc3RhbmNlRXh0ZW5kOnQub2Zmc2V0SW5zdGFuY2VFeHRlbmQsYm91bmRpbmdTcGhlcmVzOm13KHQuYm91bmRpbmdTcGhlcmVzKSxib3VuZGluZ1NwaGVyZXNDVjptdyh0LmJvdW5kaW5nU3BoZXJlc0NWKX19O2NhPXZpfSk7ZnVuY3Rpb24gak0odCl7bGV0IGUsbj10Lm5hbWUsbz10Lm1lc3NhZ2U7bShuKSYmbShvKT9lPWAke259OiAke299YDplPXQudG9TdHJpbmcoKTtsZXQgcj10LnN0YWNrO3JldHVybiBtKHIpJiYoZSs9YAoke3J9YCksZX12YXIgaHcsX3c9JCgoKT0+e2Z0KCk7aHc9ak19KTt2YXIgYzA9e307bGUoYzAse2RlZmF1bHQ6KCk9PlVlfSk7ZnVuY3Rpb24gSE0odCl7YXN5bmMgZnVuY3Rpb24gZSh7ZGF0YTpvfSl7bGV0IHI9W10saT17aWQ6by5pZCxyZXN1bHQ6dm9pZCAwLGVycm9yOnZvaWQgMH07c2VsZi5DRVNJVU1fQkFTRV9VUkw9by5iYXNlVXJsO3RyeXtsZXQgcz1hd2FpdCB0KG8ucGFyYW1ldGVycyxyKTtpLnJlc3VsdD1zfWNhdGNoKHMpe3MgaW5zdGFuY2VvZiBFcnJvcj9pLmVycm9yPXtuYW1lOnMubmFtZSxtZXNzYWdlOnMubWVzc2FnZSxzdGFjazpzLnN0YWNrfTppLmVycm9yPXN9by5jYW5UcmFuc2ZlckFycmF5QnVmZmVyfHwoci5sZW5ndGg9MCk7dHJ5e3Bvc3RNZXNzYWdlKGkscil9Y2F0Y2gocyl7aS5yZXN1bHQ9dm9pZCAwLGkuZXJyb3I9YHBvc3RNZXNzYWdlIGZhaWxlZCB3aXRoIGVycm9yOiAke2h3KHMpfQogIHdpdGggcmVzcG9uc2VNZXNzYWdlOiAke0pTT04uc3RyaW5naWZ5KGkpfWAscG9zdE1lc3NhZ2UoaSl9fWZ1bmN0aW9uIG4obyl7cG9zdE1lc3NhZ2Uoe2lkOm8uZGF0YT8uaWQsZXJyb3I6YHBvc3RNZXNzYWdlIGZhaWxlZCB3aXRoIGVycm9yOiAke0pTT04uc3RyaW5naWZ5KG8pfWB9KX1yZXR1cm4gc2VsZi5vbm1lc3NhZ2U9ZSxzZWxmLm9ubWVzc2FnZWVycm9yPW4sc2VsZn12YXIgVWUsWm49JCgoKT0+e193KCk7VWU9SE19KTt2YXIgYTA9e307bGUoYTAse2RlZmF1bHQ6KCk9PktNfSk7ZnVuY3Rpb24gcU0odCxlKXtsZXQgbj1jYS51bnBhY2tDb21iaW5lR2VvbWV0cnlQYXJhbWV0ZXJzKHQpLG89Y2EuY29tYmluZUdlb21ldHJ5KG4pO3JldHVybiBjYS5wYWNrQ29tYmluZUdlb21ldHJ5UmVzdWx0cyhvLGUpfXZhciBLTSxmMD0kKCgpPT57czAoKTtabigpO0tNPVVlKHFNKX0pO3ZhciBXTSxhZSxEbz0kKCgpPT57V009e05PTkU6MCxUT1A6MSxBTEw6Mn0sYWU9T2JqZWN0LmZyZWV6ZShXTSl9KTtmdW5jdGlvbiB6bih0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVCx0aGlzLnBvc2l0aW9uPXQucG9zaXRpb24/PyExLHRoaXMubm9ybWFsPXQubm9ybWFsPz8hMSx0aGlzLnN0PXQuc3Q/PyExLHRoaXMuYml0YW5nZW50PXQuYml0YW5nZW50Pz8hMSx0aGlzLnRhbmdlbnQ9dC50YW5nZW50Pz8hMSx0aGlzLmNvbG9yPXQuY29sb3I/PyExfXZhciBwdCx4bz0kKCgpPT57eWUoKTtmdCgpO0h0KCk7em4uUE9TSVRJT05fT05MWT1PYmplY3QuZnJlZXplKG5ldyB6bih7cG9zaXRpb246ITB9KSk7em4uUE9TSVRJT05fQU5EX05PUk1BTD1PYmplY3QuZnJlZXplKG5ldyB6bih7cG9zaXRpb246ITAsbm9ybWFsOiEwfSkpO3puLlBPU0lUSU9OX05PUk1BTF9BTkRfU1Q9T2JqZWN0LmZyZWV6ZShuZXcgem4oe3Bvc2l0aW9uOiEwLG5vcm1hbDohMCxzdDohMH0pKTt6bi5QT1NJVElPTl9BTkRfU1Q9T2JqZWN0LmZyZWV6ZShuZXcgem4oe3Bvc2l0aW9uOiEwLHN0OiEwfSkpO3puLlBPU0lUSU9OX0FORF9DT0xPUj1PYmplY3QuZnJlZXplKG5ldyB6bih7cG9zaXRpb246ITAsY29sb3I6ITB9KSk7em4uQUxMPU9iamVjdC5mcmVlemUobmV3IHpuKHtwb3NpdGlvbjohMCxub3JtYWw6ITAsc3Q6ITAsdGFuZ2VudDohMCxiaXRhbmdlbnQ6ITB9KSk7em4uREVGQVVMVD16bi5QT1NJVElPTl9OT1JNQUxfQU5EX1NUO3puLnBhY2tlZExlbmd0aD02O3puLnBhY2s9ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJ2YWx1ZSBpcyByZXF1aXJlZCIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJhcnJheSBpcyByZXF1aXJlZCIpO3JldHVybiBuPW4/PzAsZVtuKytdPXQucG9zaXRpb24/MTowLGVbbisrXT10Lm5vcm1hbD8xOjAsZVtuKytdPXQuc3Q/MTowLGVbbisrXT10LnRhbmdlbnQ/MTowLGVbbisrXT10LmJpdGFuZ2VudD8xOjAsZVtuXT10LmNvbG9yPzE6MCxlfTt6bi51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJhcnJheSBpcyByZXF1aXJlZCIpO3JldHVybiBlPWU/PzAsbShuKXx8KG49bmV3IHpuKSxuLnBvc2l0aW9uPXRbZSsrXT09PTEsbi5ub3JtYWw9dFtlKytdPT09MSxuLnN0PXRbZSsrXT09PTEsbi50YW5nZW50PXRbZSsrXT09PTEsbi5iaXRhbmdlbnQ9dFtlKytdPT09MSxuLmNvbG9yPXRbZV09PT0xLG59O3puLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKXx8KGU9bmV3IHpuKSxlLnBvc2l0aW9uPXQucG9zaXRpb24sZS5ub3JtYWw9dC5ub3JtYWwsZS5zdD10LnN0LGUudGFuZ2VudD10LnRhbmdlbnQsZS5iaXRhbmdlbnQ9dC5iaXRhbmdlbnQsZS5jb2xvcj10LmNvbG9yLGV9O3B0PXpufSk7ZnVuY3Rpb24gaXIodCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5taW5pbXVtLG49dC5tYXhpbXVtO2lmKHkudHlwZU9mLm9iamVjdCgibWluIixlKSx5LnR5cGVPZi5vYmplY3QoIm1heCIsbiksbSh0Lm9mZnNldEF0dHJpYnV0ZSkmJnQub2Zmc2V0QXR0cmlidXRlPT09YWUuVE9QKXRocm93IG5ldyBEKCJHZW9tZXRyeU9mZnNldEF0dHJpYnV0ZS5UT1AgaXMgbm90IGEgc3VwcG9ydGVkIG9wdGlvbnMub2Zmc2V0QXR0cmlidXRlIGZvciB0aGlzIGdlb21ldHJ5LiIpO2xldCBvPXQudmVydGV4Rm9ybWF0Pz9wdC5ERUZBVUxUO3RoaXMuX21pbmltdW09YS5jbG9uZShlKSx0aGlzLl9tYXhpbXVtPWEuY2xvbmUobiksdGhpcy5fdmVydGV4Rm9ybWF0PW8sdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUJveEdlb21ldHJ5In12YXIgWE0sZ3csQXcsYncseXcsdTAseGYsbDA9JCgoKT0+e3ZlKCk7RHQoKTtXdCgpO0RlKCk7eWUoKTtmdCgpO0h0KCk7WWUoKTskZSgpO2FuKCk7RG8oKTt0bigpO3hvKCk7WE09bmV3IGE7aXIuZnJvbURpbWVuc2lvbnM9ZnVuY3Rpb24odCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5kaW1lbnNpb25zO3kudHlwZU9mLm9iamVjdCgiZGltZW5zaW9ucyIsZSkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImRpbWVuc2lvbnMueCIsZS54LDApLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJkaW1lbnNpb25zLnkiLGUueSwwKSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiZGltZW5zaW9ucy56IixlLnosMCk7bGV0IG49YS5tdWx0aXBseUJ5U2NhbGFyKGUsLjUsbmV3IGEpO3JldHVybiBuZXcgaXIoe21pbmltdW06YS5uZWdhdGUobixuZXcgYSksbWF4aW11bTpuLHZlcnRleEZvcm1hdDp0LnZlcnRleEZvcm1hdCxvZmZzZXRBdHRyaWJ1dGU6dC5vZmZzZXRBdHRyaWJ1dGV9KX07aXIuZnJvbUF4aXNBbGlnbmVkQm91bmRpbmdCb3g9ZnVuY3Rpb24odCl7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiYm91bmRpbmdCb3giLHQpLG5ldyBpcih7bWluaW11bTp0Lm1pbmltdW0sbWF4aW11bTp0Lm1heGltdW19KX07aXIucGFja2VkTGVuZ3RoPTIqYS5wYWNrZWRMZW5ndGgrcHQucGFja2VkTGVuZ3RoKzE7aXIucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHkuZGVmaW5lZCgiYXJyYXkiLGUpLG49bj8/MCxhLnBhY2sodC5fbWluaW11bSxlLG4pLGEucGFjayh0Ll9tYXhpbXVtLGUsbithLnBhY2tlZExlbmd0aCkscHQucGFjayh0Ll92ZXJ0ZXhGb3JtYXQsZSxuKzIqYS5wYWNrZWRMZW5ndGgpLGVbbisyKmEucGFja2VkTGVuZ3RoK3B0LnBhY2tlZExlbmd0aF09dC5fb2Zmc2V0QXR0cmlidXRlPz8tMSxlfTtndz1uZXcgYSxBdz1uZXcgYSxidz1uZXcgcHQseXc9e21pbmltdW06Z3csbWF4aW11bTpBdyx2ZXJ0ZXhGb3JtYXQ6Yncsb2Zmc2V0QXR0cmlidXRlOnZvaWQgMH07aXIudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXt5LmRlZmluZWQoImFycmF5Iix0KSxlPWU/PzA7bGV0IG89YS51bnBhY2sodCxlLGd3KSxyPWEudW5wYWNrKHQsZSthLnBhY2tlZExlbmd0aCxBdyksaT1wdC51bnBhY2sodCxlKzIqYS5wYWNrZWRMZW5ndGgsYncpLHM9dFtlKzIqYS5wYWNrZWRMZW5ndGgrcHQucGFja2VkTGVuZ3RoXTtyZXR1cm4gbShuKT8obi5fbWluaW11bT1hLmNsb25lKG8sbi5fbWluaW11bSksbi5fbWF4aW11bT1hLmNsb25lKHIsbi5fbWF4aW11bSksbi5fdmVydGV4Rm9ybWF0PXB0LmNsb25lKGksbi5fdmVydGV4Rm9ybWF0KSxuLl9vZmZzZXRBdHRyaWJ1dGU9cz09PS0xP3ZvaWQgMDpzLG4pOih5dy5vZmZzZXRBdHRyaWJ1dGU9cz09PS0xP3ZvaWQgMDpzLG5ldyBpcih5dykpfTtpci5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9taW5pbXVtLG49dC5fbWF4aW11bSxvPXQuX3ZlcnRleEZvcm1hdDtpZihhLmVxdWFscyhlLG4pKXJldHVybjtsZXQgcj1uZXcgaWUsaSxzO2lmKG8ucG9zaXRpb24mJihvLnN0fHxvLm5vcm1hbHx8by50YW5nZW50fHxvLmJpdGFuZ2VudCkpe2lmKG8ucG9zaXRpb24mJihzPW5ldyBGbG9hdDY0QXJyYXkoNzIpLHNbMF09ZS54LHNbMV09ZS55LHNbMl09bi56LHNbM109bi54LHNbNF09ZS55LHNbNV09bi56LHNbNl09bi54LHNbN109bi55LHNbOF09bi56LHNbOV09ZS54LHNbMTBdPW4ueSxzWzExXT1uLnosc1sxMl09ZS54LHNbMTNdPWUueSxzWzE0XT1lLnosc1sxNV09bi54LHNbMTZdPWUueSxzWzE3XT1lLnosc1sxOF09bi54LHNbMTldPW4ueSxzWzIwXT1lLnosc1syMV09ZS54LHNbMjJdPW4ueSxzWzIzXT1lLnosc1syNF09bi54LHNbMjVdPWUueSxzWzI2XT1lLnosc1syN109bi54LHNbMjhdPW4ueSxzWzI5XT1lLnosc1szMF09bi54LHNbMzFdPW4ueSxzWzMyXT1uLnosc1szM109bi54LHNbMzRdPWUueSxzWzM1XT1uLnosc1szNl09ZS54LHNbMzddPWUueSxzWzM4XT1lLnosc1szOV09ZS54LHNbNDBdPW4ueSxzWzQxXT1lLnosc1s0Ml09ZS54LHNbNDNdPW4ueSxzWzQ0XT1uLnosc1s0NV09ZS54LHNbNDZdPWUueSxzWzQ3XT1uLnosc1s0OF09ZS54LHNbNDldPW4ueSxzWzUwXT1lLnosc1s1MV09bi54LHNbNTJdPW4ueSxzWzUzXT1lLnosc1s1NF09bi54LHNbNTVdPW4ueSxzWzU2XT1uLnosc1s1N109ZS54LHNbNThdPW4ueSxzWzU5XT1uLnosc1s2MF09ZS54LHNbNjFdPWUueSxzWzYyXT1lLnosc1s2M109bi54LHNbNjRdPWUueSxzWzY1XT1lLnosc1s2Nl09bi54LHNbNjddPWUueSxzWzY4XT1uLnosc1s2OV09ZS54LHNbNzBdPWUueSxzWzcxXT1uLnosci5wb3NpdGlvbj1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnN9KSksby5ub3JtYWwpe2xldCBjPW5ldyBGbG9hdDMyQXJyYXkoNzIpO2NbMF09MCxjWzFdPTAsY1syXT0xLGNbM109MCxjWzRdPTAsY1s1XT0xLGNbNl09MCxjWzddPTAsY1s4XT0xLGNbOV09MCxjWzEwXT0wLGNbMTFdPTEsY1sxMl09MCxjWzEzXT0wLGNbMTRdPS0xLGNbMTVdPTAsY1sxNl09MCxjWzE3XT0tMSxjWzE4XT0wLGNbMTldPTAsY1syMF09LTEsY1syMV09MCxjWzIyXT0wLGNbMjNdPS0xLGNbMjRdPTEsY1syNV09MCxjWzI2XT0wLGNbMjddPTEsY1syOF09MCxjWzI5XT0wLGNbMzBdPTEsY1szMV09MCxjWzMyXT0wLGNbMzNdPTEsY1szNF09MCxjWzM1XT0wLGNbMzZdPS0xLGNbMzddPTAsY1szOF09MCxjWzM5XT0tMSxjWzQwXT0wLGNbNDFdPTAsY1s0Ml09LTEsY1s0M109MCxjWzQ0XT0wLGNbNDVdPS0xLGNbNDZdPTAsY1s0N109MCxjWzQ4XT0wLGNbNDldPTEsY1s1MF09MCxjWzUxXT0wLGNbNTJdPTEsY1s1M109MCxjWzU0XT0wLGNbNTVdPTEsY1s1Nl09MCxjWzU3XT0wLGNbNThdPTEsY1s1OV09MCxjWzYwXT0wLGNbNjFdPS0xLGNbNjJdPTAsY1s2M109MCxjWzY0XT0tMSxjWzY1XT0wLGNbNjZdPTAsY1s2N109LTEsY1s2OF09MCxjWzY5XT0wLGNbNzBdPS0xLGNbNzFdPTAsci5ub3JtYWw9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmN9KX1pZihvLnN0KXtsZXQgYz1uZXcgRmxvYXQzMkFycmF5KDQ4KTtjWzBdPTAsY1sxXT0wLGNbMl09MSxjWzNdPTAsY1s0XT0xLGNbNV09MSxjWzZdPTAsY1s3XT0xLGNbOF09MSxjWzldPTAsY1sxMF09MCxjWzExXT0wLGNbMTJdPTAsY1sxM109MSxjWzE0XT0xLGNbMTVdPTEsY1sxNl09MCxjWzE3XT0wLGNbMThdPTEsY1sxOV09MCxjWzIwXT0xLGNbMjFdPTEsY1syMl09MCxjWzIzXT0xLGNbMjRdPTEsY1syNV09MCxjWzI2XT0wLGNbMjddPTAsY1syOF09MCxjWzI5XT0xLGNbMzBdPTEsY1szMV09MSxjWzMyXT0xLGNbMzNdPTAsY1szNF09MCxjWzM1XT0wLGNbMzZdPTAsY1szN109MSxjWzM4XT0xLGNbMzldPTEsY1s0MF09MCxjWzQxXT0wLGNbNDJdPTEsY1s0M109MCxjWzQ0XT0xLGNbNDVdPTEsY1s0Nl09MCxjWzQ3XT0xLHIuc3Q9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOmN9KX1pZihvLnRhbmdlbnQpe2xldCBjPW5ldyBGbG9hdDMyQXJyYXkoNzIpO2NbMF09MSxjWzFdPTAsY1syXT0wLGNbM109MSxjWzRdPTAsY1s1XT0wLGNbNl09MSxjWzddPTAsY1s4XT0wLGNbOV09MSxjWzEwXT0wLGNbMTFdPTAsY1sxMl09LTEsY1sxM109MCxjWzE0XT0wLGNbMTVdPS0xLGNbMTZdPTAsY1sxN109MCxjWzE4XT0tMSxjWzE5XT0wLGNbMjBdPTAsY1syMV09LTEsY1syMl09MCxjWzIzXT0wLGNbMjRdPTAsY1syNV09MSxjWzI2XT0wLGNbMjddPTAsY1syOF09MSxjWzI5XT0wLGNbMzBdPTAsY1szMV09MSxjWzMyXT0wLGNbMzNdPTAsY1szNF09MSxjWzM1XT0wLGNbMzZdPTAsY1szN109LTEsY1szOF09MCxjWzM5XT0wLGNbNDBdPS0xLGNbNDFdPTAsY1s0Ml09MCxjWzQzXT0tMSxjWzQ0XT0wLGNbNDVdPTAsY1s0Nl09LTEsY1s0N109MCxjWzQ4XT0tMSxjWzQ5XT0wLGNbNTBdPTAsY1s1MV09LTEsY1s1Ml09MCxjWzUzXT0wLGNbNTRdPS0xLGNbNTVdPTAsY1s1Nl09MCxjWzU3XT0tMSxjWzU4XT0wLGNbNTldPTAsY1s2MF09MSxjWzYxXT0wLGNbNjJdPTAsY1s2M109MSxjWzY0XT0wLGNbNjVdPTAsY1s2Nl09MSxjWzY3XT0wLGNbNjhdPTAsY1s2OV09MSxjWzcwXT0wLGNbNzFdPTAsci50YW5nZW50PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpjfSl9aWYoby5iaXRhbmdlbnQpe2xldCBjPW5ldyBGbG9hdDMyQXJyYXkoNzIpO2NbMF09MCxjWzFdPTEsY1syXT0wLGNbM109MCxjWzRdPTEsY1s1XT0wLGNbNl09MCxjWzddPTEsY1s4XT0wLGNbOV09MCxjWzEwXT0xLGNbMTFdPTAsY1sxMl09MCxjWzEzXT0xLGNbMTRdPTAsY1sxNV09MCxjWzE2XT0xLGNbMTddPTAsY1sxOF09MCxjWzE5XT0xLGNbMjBdPTAsY1syMV09MCxjWzIyXT0xLGNbMjNdPTAsY1syNF09MCxjWzI1XT0wLGNbMjZdPTEsY1syN109MCxjWzI4XT0wLGNbMjldPTEsY1szMF09MCxjWzMxXT0wLGNbMzJdPTEsY1szM109MCxjWzM0XT0wLGNbMzVdPTEsY1szNl09MCxjWzM3XT0wLGNbMzhdPTEsY1szOV09MCxjWzQwXT0wLGNbNDFdPTEsY1s0Ml09MCxjWzQzXT0wLGNbNDRdPTEsY1s0NV09MCxjWzQ2XT0wLGNbNDddPTEsY1s0OF09MCxjWzQ5XT0wLGNbNTBdPTEsY1s1MV09MCxjWzUyXT0wLGNbNTNdPTEsY1s1NF09MCxjWzU1XT0wLGNbNTZdPTEsY1s1N109MCxjWzU4XT0wLGNbNTldPTEsY1s2MF09MCxjWzYxXT0wLGNbNjJdPTEsY1s2M109MCxjWzY0XT0wLGNbNjVdPTEsY1s2Nl09MCxjWzY3XT0wLGNbNjhdPTEsY1s2OV09MCxjWzcwXT0wLGNbNzFdPTEsci5iaXRhbmdlbnQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmN9KX1pPW5ldyBVaW50MTZBcnJheSgzNiksaVswXT0wLGlbMV09MSxpWzJdPTIsaVszXT0wLGlbNF09MixpWzVdPTMsaVs2XT02LGlbN109NSxpWzhdPTQsaVs5XT03LGlbMTBdPTYsaVsxMV09NCxpWzEyXT04LGlbMTNdPTksaVsxNF09MTAsaVsxNV09OCxpWzE2XT0xMCxpWzE3XT0xMSxpWzE4XT0xNCxpWzE5XT0xMyxpWzIwXT0xMixpWzIxXT0xNSxpWzIyXT0xNCxpWzIzXT0xMixpWzI0XT0xOCxpWzI1XT0xNyxpWzI2XT0xNixpWzI3XT0xOSxpWzI4XT0xOCxpWzI5XT0xNixpWzMwXT0yMCxpWzMxXT0yMSxpWzMyXT0yMixpWzMzXT0yMCxpWzM0XT0yMixpWzM1XT0yM31lbHNlIHM9bmV3IEZsb2F0NjRBcnJheSgyNCksc1swXT1lLngsc1sxXT1lLnksc1syXT1lLnosc1szXT1uLngsc1s0XT1lLnksc1s1XT1lLnosc1s2XT1uLngsc1s3XT1uLnksc1s4XT1lLnosc1s5XT1lLngsc1sxMF09bi55LHNbMTFdPWUueixzWzEyXT1lLngsc1sxM109ZS55LHNbMTRdPW4ueixzWzE1XT1uLngsc1sxNl09ZS55LHNbMTddPW4ueixzWzE4XT1uLngsc1sxOV09bi55LHNbMjBdPW4ueixzWzIxXT1lLngsc1syMl09bi55LHNbMjNdPW4ueixyLnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6c30pLGk9bmV3IFVpbnQxNkFycmF5KDM2KSxpWzBdPTQsaVsxXT01LGlbMl09NixpWzNdPTQsaVs0XT02LGlbNV09NyxpWzZdPTEsaVs3XT0wLGlbOF09MyxpWzldPTEsaVsxMF09MyxpWzExXT0yLGlbMTJdPTEsaVsxM109NixpWzE0XT01LGlbMTVdPTEsaVsxNl09MixpWzE3XT02LGlbMThdPTIsaVsxOV09MyxpWzIwXT03LGlbMjFdPTIsaVsyMl09NyxpWzIzXT02LGlbMjRdPTMsaVsyNV09MCxpWzI2XT00LGlbMjddPTMsaVsyOF09NCxpWzI5XT03LGlbMzBdPTAsaVszMV09MSxpWzMyXT01LGlbMzNdPTAsaVszNF09NSxpWzM1XT00O2xldCBmPWEuc3VidHJhY3QobixlLFhNKSx1PWEubWFnbml0dWRlKGYpKi41O2lmKG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IGM9cy5sZW5ndGgsbD10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1hZS5OT05FPzA6MSxwPW5ldyBVaW50OEFycmF5KGMvMykuZmlsbChsKTtyLmFwcGx5T2Zmc2V0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOnB9KX1yZXR1cm4gbmV3IFV0KHthdHRyaWJ1dGVzOnIsaW5kaWNlczppLHByaW1pdGl2ZVR5cGU6QnQuVFJJQU5HTEVTLGJvdW5kaW5nU3BoZXJlOm5ldyBBdChhLlpFUk8sdSksb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtpci5nZXRVbml0Qm94PWZ1bmN0aW9uKCl7cmV0dXJuIG0odTApfHwodTA9aXIuY3JlYXRlR2VvbWV0cnkoaXIuZnJvbURpbWVuc2lvbnMoe2RpbWVuc2lvbnM6bmV3IGEoMSwxLDEpLHZlcnRleEZvcm1hdDpwdC5QT1NJVElPTl9PTkxZfSkpKSx1MH07eGY9aXJ9KTt2YXIgcDA9e307bGUocDAse2RlZmF1bHQ6KCk9PiRNfSk7ZnVuY3Rpb24gWU0odCxlKXtyZXR1cm4gbShlKSYmKHQ9eGYudW5wYWNrKHQsZSkpLHhmLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciAkTSxkMD0kKCgpPT57bDAoKTtmdCgpOyRNPVlNfSk7ZnVuY3Rpb24gYWkodCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5taW5pbXVtLG49dC5tYXhpbXVtO2lmKHkudHlwZU9mLm9iamVjdCgibWluIixlKSx5LnR5cGVPZi5vYmplY3QoIm1heCIsbiksbSh0Lm9mZnNldEF0dHJpYnV0ZSkmJnQub2Zmc2V0QXR0cmlidXRlPT09YWUuVE9QKXRocm93IG5ldyBEKCJHZW9tZXRyeU9mZnNldEF0dHJpYnV0ZS5UT1AgaXMgbm90IGEgc3VwcG9ydGVkIG9wdGlvbnMub2Zmc2V0QXR0cmlidXRlIGZvciB0aGlzIGdlb21ldHJ5LiIpO3RoaXMuX21pbj1hLmNsb25lKGUpLHRoaXMuX21heD1hLmNsb25lKG4pLHRoaXMuX29mZnNldEF0dHJpYnV0ZT10Lm9mZnNldEF0dHJpYnV0ZSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVCb3hPdXRsaW5lR2VvbWV0cnkifXZhciBaTSxUdyxPdyx3dyxtMCxFdz0kKCgpPT57dmUoKTtEdCgpO1d0KCk7RGUoKTt5ZSgpO2Z0KCk7SHQoKTtZZSgpOyRlKCk7YW4oKTtEbygpO3RuKCk7Wk09bmV3IGE7YWkuZnJvbURpbWVuc2lvbnM9ZnVuY3Rpb24odCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5kaW1lbnNpb25zO3kudHlwZU9mLm9iamVjdCgiZGltZW5zaW9ucyIsZSkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImRpbWVuc2lvbnMueCIsZS54LDApLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJkaW1lbnNpb25zLnkiLGUueSwwKSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiZGltZW5zaW9ucy56IixlLnosMCk7bGV0IG49YS5tdWx0aXBseUJ5U2NhbGFyKGUsLjUsbmV3IGEpO3JldHVybiBuZXcgYWkoe21pbmltdW06YS5uZWdhdGUobixuZXcgYSksbWF4aW11bTpuLG9mZnNldEF0dHJpYnV0ZTp0Lm9mZnNldEF0dHJpYnV0ZX0pfTthaS5mcm9tQXhpc0FsaWduZWRCb3VuZGluZ0JveD1mdW5jdGlvbih0KXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJib3VuZGluZEJveCIsdCksbmV3IGFpKHttaW5pbXVtOnQubWluaW11bSxtYXhpbXVtOnQubWF4aW11bX0pfTthaS5wYWNrZWRMZW5ndGg9MiphLnBhY2tlZExlbmd0aCsxO2FpLnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzAsYS5wYWNrKHQuX21pbixlLG4pLGEucGFjayh0Ll9tYXgsZSxuK2EucGFja2VkTGVuZ3RoKSxlW24rYS5wYWNrZWRMZW5ndGgqMl09dC5fb2Zmc2V0QXR0cmlidXRlPz8tMSxlfTtUdz1uZXcgYSxPdz1uZXcgYSx3dz17bWluaW11bTpUdyxtYXhpbXVtOk93LG9mZnNldEF0dHJpYnV0ZTp2b2lkIDB9O2FpLnVucGFjaz1mdW5jdGlvbih0LGUsbil7eS5kZWZpbmVkKCJhcnJheSIsdCksZT1lPz8wO2xldCBvPWEudW5wYWNrKHQsZSxUdykscj1hLnVucGFjayh0LGUrYS5wYWNrZWRMZW5ndGgsT3cpLGk9dFtlK2EucGFja2VkTGVuZ3RoKjJdO3JldHVybiBtKG4pPyhuLl9taW49YS5jbG9uZShvLG4uX21pbiksbi5fbWF4PWEuY2xvbmUocixuLl9tYXgpLG4uX29mZnNldEF0dHJpYnV0ZT1pPT09LTE/dm9pZCAwOmksbik6KHd3Lm9mZnNldEF0dHJpYnV0ZT1pPT09LTE/dm9pZCAwOmksbmV3IGFpKHd3KSl9O2FpLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX21pbixuPXQuX21heDtpZihhLmVxdWFscyhlLG4pKXJldHVybjtsZXQgbz1uZXcgaWUscj1uZXcgVWludDE2QXJyYXkoMjQpLGk9bmV3IEZsb2F0NjRBcnJheSgyNCk7aVswXT1lLngsaVsxXT1lLnksaVsyXT1lLnosaVszXT1uLngsaVs0XT1lLnksaVs1XT1lLnosaVs2XT1uLngsaVs3XT1uLnksaVs4XT1lLnosaVs5XT1lLngsaVsxMF09bi55LGlbMTFdPWUueixpWzEyXT1lLngsaVsxM109ZS55LGlbMTRdPW4ueixpWzE1XT1uLngsaVsxNl09ZS55LGlbMTddPW4ueixpWzE4XT1uLngsaVsxOV09bi55LGlbMjBdPW4ueixpWzIxXT1lLngsaVsyMl09bi55LGlbMjNdPW4ueixvLnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6aX0pLHJbMF09NCxyWzFdPTUsclsyXT01LHJbM109NixyWzRdPTYscls1XT03LHJbNl09NyxyWzddPTQscls4XT0wLHJbOV09MSxyWzEwXT0xLHJbMTFdPTIsclsxMl09MixyWzEzXT0zLHJbMTRdPTMsclsxNV09MCxyWzE2XT0wLHJbMTddPTQsclsxOF09MSxyWzE5XT01LHJbMjBdPTIsclsyMV09NixyWzIyXT0zLHJbMjNdPTc7bGV0IHM9YS5zdWJ0cmFjdChuLGUsWk0pLGY9YS5tYWduaXR1ZGUocykqLjU7aWYobSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgdT1pLmxlbmd0aCxjPXQuX29mZnNldEF0dHJpYnV0ZT09PWFlLk5PTkU/MDoxLGw9bmV3IFVpbnQ4QXJyYXkodS8zKS5maWxsKGMpO28uYXBwbHlPZmZzZXQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6bH0pfXJldHVybiBuZXcgVXQoe2F0dHJpYnV0ZXM6byxpbmRpY2VzOnIscHJpbWl0aXZlVHlwZTpCdC5MSU5FUyxib3VuZGluZ1NwaGVyZTpuZXcgQXQoYS5aRVJPLGYpLG9mZnNldEF0dHJpYnV0ZTp0Ll9vZmZzZXRBdHRyaWJ1dGV9KX07bTA9YWl9KTt2YXIgaDA9e307bGUoaDAse2RlZmF1bHQ6KCk9PkpNfSk7ZnVuY3Rpb24gUU0odCxlKXtyZXR1cm4gbShlKSYmKHQ9bTAudW5wYWNrKHQsZSkpLG0wLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBKTSxfMD0kKCgpPT57RXcoKTtmdCgpO0pNPVFNfSk7ZnVuY3Rpb24gYWEodCxlLG4sbyxyLGkscyxmLHUsYyl7bGV0IGw9dCtlO2EubXVsdGlwbHlCeVNjYWxhcihvLE1hdGguY29zKGwpLCRwKSxhLm11bHRpcGx5QnlTY2FsYXIobixNYXRoLnNpbihsKSxSdyksYS5hZGQoJHAsUncsJHApO2xldCBwPU1hdGguY29zKHQpO3A9cCpwO2xldCBkPU1hdGguc2luKHQpO2Q9ZCpkO2xldCBfPWkvTWF0aC5zcXJ0KHMqcCtyKmQpL2Y7cmV0dXJuIHRlLmZyb21BeGlzQW5nbGUoJHAsXyxTdyksWi5mcm9tUXVhdGVybmlvbihTdyx4dyksWi5tdWx0aXBseUJ5VmVjdG9yKHh3LHUsYyksYS5ub3JtYWxpemUoYyxjKSxhLm11bHRpcGx5QnlTY2FsYXIoYyxmLGMpLGN9dmFyIGcwLCRwLFJ3LFN3LHh3LEN3LFB3LHkwLHROLGVOLG5OLG9OLFZyLEEwPSQoKCk9PntEdCgpO0t0KCk7VW4oKTtYbygpO2cwPXt9LCRwPW5ldyBhLFJ3PW5ldyBhLFN3PW5ldyB0ZSx4dz1uZXcgWjtDdz1uZXcgYSxQdz1uZXcgYSx5MD1uZXcgYSx0Tj1uZXcgYTtnMC5yYWlzZVBvc2l0aW9uc1RvSGVpZ2h0PWZ1bmN0aW9uKHQsZSxuKXtsZXQgbz1lLmVsbGlwc29pZCxyPWUuaGVpZ2h0LGk9ZS5leHRydWRlZEhlaWdodCxzPW4/dC5sZW5ndGgvMyoyOnQubGVuZ3RoLzMsZj1uZXcgRmxvYXQ2NEFycmF5KHMqMyksdT10Lmxlbmd0aCxjPW4/dTowO2ZvcihsZXQgbD0wO2w8dTtsKz0zKXtsZXQgcD1sKzEsZD1sKzIsaD1hLmZyb21BcnJheSh0LGwsQ3cpO28uc2NhbGVUb0dlb2RldGljU3VyZmFjZShoLGgpO2xldCBfPWEuY2xvbmUoaCxQdyksZz1vLmdlb2RldGljU3VyZmFjZU5vcm1hbChoLHROKSxiPWEubXVsdGlwbHlCeVNjYWxhcihnLHIseTApO2EuYWRkKGgsYixoKSxuJiYoYS5tdWx0aXBseUJ5U2NhbGFyKGcsaSxiKSxhLmFkZChfLGIsXyksZltsK2NdPV8ueCxmW3ArY109Xy55LGZbZCtjXT1fLnopLGZbbF09aC54LGZbcF09aC55LGZbZF09aC56fXJldHVybiBmfTtlTj1uZXcgYSxuTj1uZXcgYSxvTj1uZXcgYTtnMC5jb21wdXRlRWxsaXBzZVBvc2l0aW9ucz1mdW5jdGlvbih0LGUsbil7bGV0IG89dC5zZW1pTWlub3JBeGlzLHI9dC5zZW1pTWFqb3JBeGlzLGk9dC5yb3RhdGlvbixzPXQuY2VudGVyLGY9dC5ncmFudWxhcml0eSo4LHU9bypvLGM9cipyLGw9cipvLHA9YS5tYWduaXR1ZGUocyksZD1hLm5vcm1hbGl6ZShzLGVOKSxoPWEuY3Jvc3MoYS5VTklUX1oscyxuTik7aD1hLm5vcm1hbGl6ZShoLGgpO2xldCBfPWEuY3Jvc3MoZCxoLG9OKSxnPTErTWF0aC5jZWlsKFAuUElfT1ZFUl9UV08vZiksYj1QLlBJX09WRVJfVFdPLyhnLTEpLHc9UC5QSV9PVkVSX1RXTy1nKmI7dzwwJiYoZy09TWF0aC5jZWlsKE1hdGguYWJzKHcpL2IpKTtsZXQgTz0yKihnKihnKzIpKSxFPWU/bmV3IEFycmF5KE8qMyk6dm9pZCAwLFQ9MCx4PUN3LE09UHcsTj1nKjQqMyxGPU4tMSxJPTAsdj1uP25ldyBBcnJheShOKTp2b2lkIDAsQixBLFMsQyxMO2Zvcih3PVAuUElfT1ZFUl9UV08seD1hYSh3LGksXyxoLHUsbCxjLHAsZCx4KSxlJiYoRVtUKytdPXgueCxFW1QrK109eC55LEVbVCsrXT14LnopLG4mJih2W0YtLV09eC56LHZbRi0tXT14LnksdltGLS1dPXgueCksdz1QLlBJX09WRVJfVFdPLWIsQj0xO0I8ZysxOysrQil7aWYoeD1hYSh3LGksXyxoLHUsbCxjLHAsZCx4KSxNPWFhKE1hdGguUEktdyxpLF8saCx1LGwsYyxwLGQsTSksZSl7Zm9yKEVbVCsrXT14LngsRVtUKytdPXgueSxFW1QrK109eC56LFM9MipCKzIsQT0xO0E8Uy0xOysrQSlDPUEvKFMtMSksTD1hLmxlcnAoeCxNLEMseTApLEVbVCsrXT1MLngsRVtUKytdPUwueSxFW1QrK109TC56O0VbVCsrXT1NLngsRVtUKytdPU0ueSxFW1QrK109TS56fW4mJih2W0YtLV09eC56LHZbRi0tXT14LnksdltGLS1dPXgueCx2W0krK109TS54LHZbSSsrXT1NLnksdltJKytdPU0ueiksdz1QLlBJX09WRVJfVFdPLShCKzEpKmJ9Zm9yKEI9ZztCPjE7LS1CKXtpZih3PVAuUElfT1ZFUl9UV08tKEItMSkqYix4PWFhKC13LGksXyxoLHUsbCxjLHAsZCx4KSxNPWFhKHcrTWF0aC5QSSxpLF8saCx1LGwsYyxwLGQsTSksZSl7Zm9yKEVbVCsrXT14LngsRVtUKytdPXgueSxFW1QrK109eC56LFM9MiooQi0xKSsyLEE9MTtBPFMtMTsrK0EpQz1BLyhTLTEpLEw9YS5sZXJwKHgsTSxDLHkwKSxFW1QrK109TC54LEVbVCsrXT1MLnksRVtUKytdPUwuejtFW1QrK109TS54LEVbVCsrXT1NLnksRVtUKytdPU0uen1uJiYodltGLS1dPXgueix2W0YtLV09eC55LHZbRi0tXT14LngsdltJKytdPU0ueCx2W0krK109TS55LHZbSSsrXT1NLnopfXc9UC5QSV9PVkVSX1RXTyx4PWFhKC13LGksXyxoLHUsbCxjLHAsZCx4KTtsZXQgej17fTtyZXR1cm4gZSYmKEVbVCsrXT14LngsRVtUKytdPXgueSxFW1QrK109eC56LHoucG9zaXRpb25zPUUsei5udW1QdHM9ZyksbiYmKHZbRi0tXT14LnosdltGLS1dPXgueSx2W0YtLV09eC54LHoub3V0ZXJQb3NpdGlvbnM9diksen07VnI9ZzB9KTtmdW5jdGlvbiByTih0KXtpZih0PXQ/P0l0LkVNUFRZX09CSkVDVCwhbSh0Lmdlb21ldHJ5KSl0aHJvdyBuZXcgRCgib3B0aW9ucy5nZW9tZXRyeSBpcyByZXF1aXJlZC4iKTt0aGlzLmdlb21ldHJ5PXQuZ2VvbWV0cnksdGhpcy5tb2RlbE1hdHJpeD1zdC5jbG9uZSh0Lm1vZGVsTWF0cml4Pz9zdC5JREVOVElUWSksdGhpcy5pZD10LmlkLHRoaXMucGlja1ByaW1pdGl2ZT10LnBpY2tQcmltaXRpdmUsdGhpcy5hdHRyaWJ1dGVzPXQuYXR0cmlidXRlcz8/e30sdGhpcy53ZXN0SGVtaXNwaGVyZUdlb21ldHJ5PXZvaWQgMCx0aGlzLmVhc3RIZW1pc3BoZXJlR2VvbWV0cnk9dm9pZCAwfXZhciBmbyxjYz0kKCgpPT57eWUoKTtmdCgpO0h0KCk7a24oKTtmbz1yTn0pO2Z1bmN0aW9uIFV3KHQsZSxuKXtsZXQgbz1lLnZlcnRleEZvcm1hdCxyPWUuY2VudGVyLGk9ZS5zZW1pTWFqb3JBeGlzLHM9ZS5zZW1pTWlub3JBeGlzLGY9ZS5lbGxpcHNvaWQsdT1lLnN0Um90YXRpb24sYz1uP3QubGVuZ3RoLzMqMjp0Lmxlbmd0aC8zLGw9ZS5zaGFkb3dWb2x1bWUscD1vLnN0P25ldyBGbG9hdDMyQXJyYXkoYyoyKTp2b2lkIDAsZD1vLm5vcm1hbD9uZXcgRmxvYXQzMkFycmF5KGMqMyk6dm9pZCAwLGg9by50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkoYyozKTp2b2lkIDAsXz1vLmJpdGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KGMqMyk6dm9pZCAwLGc9bD9uZXcgRmxvYXQzMkFycmF5KGMqMyk6dm9pZCAwLGI9MCx3PUl3LE89dncsRT1GdyxUPW5ldyBlbyhmKSx4PVQucHJvamVjdChmLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHIsSnApLEx3KSxNPWYuc2NhbGVUb0dlb2RldGljU3VyZmFjZShyLGZhKTtmLmdlb2RldGljU3VyZmFjZU5vcm1hbChNLE0pO2xldCBOPU53LEY9aU47aWYodSE9PTApe2xldCBMPXRlLmZyb21BeGlzQW5nbGUoTSx1LFQwKTtOPVouZnJvbVF1YXRlcm5pb24oTCxOKSxMPXRlLmZyb21BeGlzQW5nbGUoTSwtdSxUMCksRj1aLmZyb21RdWF0ZXJuaW9uKEwsRil9ZWxzZSBOPVouY2xvbmUoWi5JREVOVElUWSxOKSxGPVouY2xvbmUoWi5JREVOVElUWSxGKTtsZXQgST1KLmZyb21FbGVtZW50cyhOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLER3KSx2PUouZnJvbUVsZW1lbnRzKE51bWJlci5ORUdBVElWRV9JTkZJTklUWSxOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksQncpLEI9dC5sZW5ndGgsQT1uP0I6MCxTPUEvMyoyO2ZvcihsZXQgTD0wO0w8QjtMKz0zKXtsZXQgej1MKzEsaj1MKzIsaz1hLmZyb21BcnJheSh0LEwsZmEpO2lmKG8uc3Qpe2xldCBxPVoubXVsdGlwbHlCeVZlY3RvcihOLGssYjApLFc9VC5wcm9qZWN0KGYuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMocSxKcCksdzApO2Euc3VidHJhY3QoVyx4LFcpLFFuLng9KFcueCtpKS8oMippKSxRbi55PShXLnkrcykvKDIqcyksSS54PU1hdGgubWluKFFuLngsSS54KSxJLnk9TWF0aC5taW4oUW4ueSxJLnkpLHYueD1NYXRoLm1heChRbi54LHYueCksdi55PU1hdGgubWF4KFFuLnksdi55KSxuJiYocFtiK1NdPVFuLngscFtiKzErU109UW4ueSkscFtiKytdPVFuLngscFtiKytdPVFuLnl9KG8ubm9ybWFsfHxvLnRhbmdlbnR8fG8uYml0YW5nZW50fHxsKSYmKHc9Zi5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoayx3KSxsJiYoZ1tMK0FdPS13LngsZ1t6K0FdPS13LnksZ1tqK0FdPS13LnopLChvLm5vcm1hbHx8by50YW5nZW50fHxvLmJpdGFuZ2VudCkmJigoby50YW5nZW50fHxvLmJpdGFuZ2VudCkmJihPPWEubm9ybWFsaXplKGEuY3Jvc3MoYS5VTklUX1osdyxPKSxPKSxaLm11bHRpcGx5QnlWZWN0b3IoRixPLE8pKSxvLm5vcm1hbCYmKGRbTF09dy54LGRbel09dy55LGRbal09dy56LG4mJihkW0wrQV09LXcueCxkW3orQV09LXcueSxkW2orQV09LXcueikpLG8udGFuZ2VudCYmKGhbTF09Ty54LGhbel09Ty55LGhbal09Ty56LG4mJihoW0wrQV09LU8ueCxoW3orQV09LU8ueSxoW2orQV09LU8ueikpLG8uYml0YW5nZW50JiYoRT1hLm5vcm1hbGl6ZShhLmNyb3NzKHcsTyxFKSxFKSxfW0xdPUUueCxfW3pdPUUueSxfW2pdPUUueixuJiYoX1tMK0FdPUUueCxfW3orQV09RS55LF9baitBXT1FLnopKSkpfWlmKG8uc3Qpe0I9cC5sZW5ndGg7Zm9yKGxldCBMPTA7TDxCO0wrPTIpcFtMXT0ocFtMXS1JLngpLyh2LngtSS54KSxwW0wrMV09KHBbTCsxXS1JLnkpLyh2LnktSS55KX1sZXQgQz1uZXcgaWU7aWYoby5wb3NpdGlvbil7bGV0IEw9VnIucmFpc2VQb3NpdGlvbnNUb0hlaWdodCh0LGUsbik7Qy5wb3NpdGlvbj1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOkx9KX1pZihvLnN0JiYoQy5zdD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6cH0pKSxvLm5vcm1hbCYmKEMubm9ybWFsPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpkfSkpLG8udGFuZ2VudCYmKEMudGFuZ2VudD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6aH0pKSxvLmJpdGFuZ2VudCYmKEMuYml0YW5nZW50PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpffSkpLGwmJihDLmV4dHJ1ZGVEaXJlY3Rpb249bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmd9KSksbiYmbShlLm9mZnNldEF0dHJpYnV0ZSkpe2xldCBMPW5ldyBVaW50OEFycmF5KGMpO2lmKGUub2Zmc2V0QXR0cmlidXRlPT09YWUuVE9QKUw9TC5maWxsKDEsMCxjLzIpO2Vsc2V7bGV0IHo9ZS5vZmZzZXRBdHRyaWJ1dGU9PT1hZS5OT05FPzA6MTtMPUwuZmlsbCh6KX1DLmFwcGx5T2Zmc2V0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOkx9KX1yZXR1cm4gQ31mdW5jdGlvbiBrdyh0KXtsZXQgZT1uZXcgQXJyYXkoMTIqKHQqKHQrMSkpLTYpLG49MCxvLHIsaSxzLGY7Zm9yKG89MCxpPTEscz0wO3M8MztzKyspZVtuKytdPWkrKyxlW24rK109byxlW24rK109aTtmb3Iocz0yO3M8dCsxOysrcyl7Zm9yKGk9cyoocysxKS0xLG89KHMtMSkqcy0xLGVbbisrXT1pKyssZVtuKytdPW8sZVtuKytdPWkscj0yKnMsZj0wO2Y8ci0xOysrZillW24rK109aSxlW24rK109bysrLGVbbisrXT1vLGVbbisrXT1pKyssZVtuKytdPW8sZVtuKytdPWk7ZVtuKytdPWkrKyxlW24rK109byxlW24rK109aX1mb3Iocj10KjIsKytpLCsrbyxzPTA7czxyLTE7KytzKWVbbisrXT1pLGVbbisrXT1vKyssZVtuKytdPW8sZVtuKytdPWkrKyxlW24rK109byxlW24rK109aTtmb3IoZVtuKytdPWksZVtuKytdPW8rKyxlW24rK109byxlW24rK109aSsrLGVbbisrXT1vKyssZVtuKytdPW8sKytvLHM9dC0xO3M+MTstLXMpe2ZvcihlW24rK109bysrLGVbbisrXT1vLGVbbisrXT1pLHI9MipzLGY9MDtmPHItMTsrK2YpZVtuKytdPWksZVtuKytdPW8rKyxlW24rK109byxlW24rK109aSsrLGVbbisrXT1vLGVbbisrXT1pO2VbbisrXT1vKyssZVtuKytdPW8rKyxlW24rK109aSsrfWZvcihzPTA7czwzO3MrKyllW24rK109bysrLGVbbisrXT1vLGVbbisrXT1pO3JldHVybiBlfWZ1bmN0aW9uIHNOKHQpe2xldCBlPXQuY2VudGVyO2FjPWEubXVsdGlwbHlCeVNjYWxhcih0LmVsbGlwc29pZC5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoZSxhYyksdC5oZWlnaHQsYWMpLGFjPWEuYWRkKGUsYWMsYWMpO2xldCBuPW5ldyBBdChhYyx0LnNlbWlNYWpvckF4aXMpLG89VnIuY29tcHV0ZUVsbGlwc2VQb3NpdGlvbnModCwhMCwhMSkscj1vLnBvc2l0aW9ucyxpPW8ubnVtUHRzLHM9VXcocix0LCExKSxmPWt3KGkpO3JldHVybiBmPUx0LmNyZWF0ZVR5cGVkQXJyYXkoci5sZW5ndGgvMyxmKSx7Ym91bmRpbmdTcGhlcmU6bixhdHRyaWJ1dGVzOnMsaW5kaWNlczpmfX1mdW5jdGlvbiBjTih0LGUpe2xldCBuPWUudmVydGV4Rm9ybWF0LG89ZS5jZW50ZXIscj1lLnNlbWlNYWpvckF4aXMsaT1lLnNlbWlNaW5vckF4aXMscz1lLmVsbGlwc29pZCxmPWUuaGVpZ2h0LHU9ZS5leHRydWRlZEhlaWdodCxjPWUuc3RSb3RhdGlvbixsPXQubGVuZ3RoLzMqMixwPW5ldyBGbG9hdDY0QXJyYXkobCozKSxkPW4uc3Q/bmV3IEZsb2F0MzJBcnJheShsKjIpOnZvaWQgMCxoPW4ubm9ybWFsP25ldyBGbG9hdDMyQXJyYXkobCozKTp2b2lkIDAsXz1uLnRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShsKjMpOnZvaWQgMCxnPW4uYml0YW5nZW50P25ldyBGbG9hdDMyQXJyYXkobCozKTp2b2lkIDAsYj1lLnNoYWRvd1ZvbHVtZSx3PWI/bmV3IEZsb2F0MzJBcnJheShsKjMpOnZvaWQgMCxPPTAsRT1JdyxUPXZ3LHg9RncsTT1uZXcgZW8ocyksTj1NLnByb2plY3Qocy5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhvLEpwKSxMdyksRj1zLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UobyxmYSk7cy5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoRixGKTtsZXQgST10ZS5mcm9tQXhpc0FuZ2xlKEYsYyxUMCksdj1aLmZyb21RdWF0ZXJuaW9uKEksTncpLEI9Si5mcm9tRWxlbWVudHMoTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxEdyksQT1KLmZyb21FbGVtZW50cyhOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLEJ3KSxTPXQubGVuZ3RoLEM9Uy8zKjI7Zm9yKGxldCB6PTA7ejxTO3orPTMpe2xldCBqPXorMSxrPXorMixxPWEuZnJvbUFycmF5KHQseixmYSksVztpZihuLnN0KXtsZXQgbnQ9Wi5tdWx0aXBseUJ5VmVjdG9yKHYscSxiMCksYXQ9TS5wcm9qZWN0KHMuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMobnQsSnApLHcwKTthLnN1YnRyYWN0KGF0LE4sYXQpLFFuLng9KGF0LngrcikvKDIqciksUW4ueT0oYXQueStpKS8oMippKSxCLng9TWF0aC5taW4oUW4ueCxCLngpLEIueT1NYXRoLm1pbihRbi55LEIueSksQS54PU1hdGgubWF4KFFuLngsQS54KSxBLnk9TWF0aC5tYXgoUW4ueSxBLnkpLGRbTytDXT1Rbi54LGRbTysxK0NdPVFuLnksZFtPKytdPVFuLngsZFtPKytdPVFuLnl9cT1zLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UocSxxKSxXPWEuY2xvbmUocSxiMCksRT1zLmdlb2RldGljU3VyZmFjZU5vcm1hbChxLEUpLGImJih3W3orU109LUUueCx3W2orU109LUUueSx3W2srU109LUUueik7bGV0IFI9YS5tdWx0aXBseUJ5U2NhbGFyKEUsZixNdyk7aWYocT1hLmFkZChxLFIscSksUj1hLm11bHRpcGx5QnlTY2FsYXIoRSx1LFIpLFc9YS5hZGQoVyxSLFcpLG4ucG9zaXRpb24mJihwW3orU109Vy54LHBbaitTXT1XLnkscFtrK1NdPVcueixwW3pdPXEueCxwW2pdPXEueSxwW2tdPXEueiksbi5ub3JtYWx8fG4udGFuZ2VudHx8bi5iaXRhbmdlbnQpe3g9YS5jbG9uZShFLHgpO2xldCBudD1hLmZyb21BcnJheSh0LCh6KzMpJVMsTXcpO2Euc3VidHJhY3QobnQscSxudCk7bGV0IGF0PWEuc3VidHJhY3QoVyxxLHcwKTtFPWEubm9ybWFsaXplKGEuY3Jvc3MoYXQsbnQsRSksRSksbi5ub3JtYWwmJihoW3pdPUUueCxoW2pdPUUueSxoW2tdPUUueixoW3orU109RS54LGhbaitTXT1FLnksaFtrK1NdPUUueiksbi50YW5nZW50JiYoVD1hLm5vcm1hbGl6ZShhLmNyb3NzKHgsRSxUKSxUKSxfW3pdPVQueCxfW2pdPVQueSxfW2tdPVQueixfW3orU109VC54LF9beisxK1NdPVQueSxfW3orMitTXT1ULnopLG4uYml0YW5nZW50JiYoZ1t6XT14LngsZ1tqXT14LnksZ1trXT14LnosZ1t6K1NdPXgueCxnW2orU109eC55LGdbaytTXT14LnopfX1pZihuLnN0KXtTPWQubGVuZ3RoO2ZvcihsZXQgej0wO3o8Uzt6Kz0yKWRbel09KGRbel0tQi54KS8oQS54LUIueCksZFt6KzFdPShkW3orMV0tQi55KS8oQS55LUIueSl9bGV0IEw9bmV3IGllO2lmKG4ucG9zaXRpb24mJihMLnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6cH0pKSxuLnN0JiYoTC5zdD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6ZH0pKSxuLm5vcm1hbCYmKEwubm9ybWFsPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpofSkpLG4udGFuZ2VudCYmKEwudGFuZ2VudD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6X30pKSxuLmJpdGFuZ2VudCYmKEwuYml0YW5nZW50PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpnfSkpLGImJihMLmV4dHJ1ZGVEaXJlY3Rpb249bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnd9KSksbShlLm9mZnNldEF0dHJpYnV0ZSkpe2xldCB6PW5ldyBVaW50OEFycmF5KGwpO2lmKGUub2Zmc2V0QXR0cmlidXRlPT09YWUuVE9QKXo9ei5maWxsKDEsMCxsLzIpO2Vsc2V7bGV0IGo9ZS5vZmZzZXRBdHRyaWJ1dGU9PT1hZS5OT05FPzA6MTt6PXouZmlsbChqKX1MLmFwcGx5T2Zmc2V0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOnp9KX1yZXR1cm4gTH1mdW5jdGlvbiBhTih0KXtsZXQgZT10Lmxlbmd0aC8zLG49THQuY3JlYXRlVHlwZWRBcnJheShlLGUqNiksbz0wO2ZvcihsZXQgcj0wO3I8ZTtyKyspe2xldCBpPXIscz1yK2UsZj0oaSsxKSVlLHU9ZitlO25bbysrXT1pLG5bbysrXT1zLG5bbysrXT1mLG5bbysrXT1mLG5bbysrXT1zLG5bbysrXT11fXJldHVybiBufWZ1bmN0aW9uIGZOKHQpe2xldCBlPXQuY2VudGVyLG49dC5lbGxpcHNvaWQsbz10LnNlbWlNYWpvckF4aXMscj1hLm11bHRpcGx5QnlTY2FsYXIobi5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoZSxmYSksdC5oZWlnaHQsZmEpO1pwLmNlbnRlcj1hLmFkZChlLHIsWnAuY2VudGVyKSxacC5yYWRpdXM9byxyPWEubXVsdGlwbHlCeVNjYWxhcihuLmdlb2RldGljU3VyZmFjZU5vcm1hbChlLHIpLHQuZXh0cnVkZWRIZWlnaHQsciksUXAuY2VudGVyPWEuYWRkKGUscixRcC5jZW50ZXIpLFFwLnJhZGl1cz1vO2xldCBpPVZyLmNvbXB1dGVFbGxpcHNlUG9zaXRpb25zKHQsITAsITApLHM9aS5wb3NpdGlvbnMsZj1pLm51bVB0cyx1PWkub3V0ZXJQb3NpdGlvbnMsYz1BdC51bmlvbihacCxRcCksbD1VdyhzLHQsITApLHA9a3coZiksZD1wLmxlbmd0aDtwLmxlbmd0aD1kKjI7bGV0IGg9cy5sZW5ndGgvMztmb3IobGV0IFQ9MDtUPGQ7VCs9MylwW1QrZF09cFtUKzJdK2gscFtUKzErZF09cFtUKzFdK2gscFtUKzIrZF09cFtUXStoO2xldCBfPUx0LmNyZWF0ZVR5cGVkQXJyYXkoaCoyLzMscCksZz1uZXcgVXQoe2F0dHJpYnV0ZXM6bCxpbmRpY2VzOl8scHJpbWl0aXZlVHlwZTpCdC5UUklBTkdMRVN9KSxiPWNOKHUsdCk7cD1hTih1KTtsZXQgdz1MdC5jcmVhdGVUeXBlZEFycmF5KHUubGVuZ3RoKjIvMyxwKSxPPW5ldyBVdCh7YXR0cmlidXRlczpiLGluZGljZXM6dyxwcmltaXRpdmVUeXBlOkJ0LlRSSUFOR0xFU30pLEU9R2UuY29tYmluZUluc3RhbmNlcyhbbmV3IGZvKHtnZW9tZXRyeTpnfSksbmV3IGZvKHtnZW9tZXRyeTpPfSldKTtyZXR1cm57Ym91bmRpbmdTcGhlcmU6YyxhdHRyaWJ1dGVzOkVbMF0uYXR0cmlidXRlcyxpbmRpY2VzOkVbMF0uaW5kaWNlc319ZnVuY3Rpb24gR3codCxlLG4sbyxyLGkscyl7bGV0IHU9VnIuY29tcHV0ZUVsbGlwc2VQb3NpdGlvbnMoe2NlbnRlcjp0LHNlbWlNYWpvckF4aXM6ZSxzZW1pTWlub3JBeGlzOm4scm90YXRpb246byxncmFudWxhcml0eTpyfSwhMSwhMCkub3V0ZXJQb3NpdGlvbnMsYz11Lmxlbmd0aC8zLGw9bmV3IEFycmF5KGMpO2ZvcihsZXQgZD0wO2Q8YzsrK2QpbFtkXT1hLmZyb21BcnJheSh1LGQqMyk7bGV0IHA9TnQuZnJvbUNhcnRlc2lhbkFycmF5KGwsaSxzKTtyZXR1cm4gcC53aWR0aD5QLlBJJiYocC5ub3J0aD1wLm5vcnRoPjA/UC5QSV9PVkVSX1RXTy1QLkVQU0lMT043OnAubm9ydGgscC5zb3V0aD1wLnNvdXRoPDA/UC5FUFNJTE9ONy1QLlBJX09WRVJfVFdPOnAuc291dGgscC5lYXN0PVAuUEkscC53ZXN0PS1QLlBJKSxwfWZ1bmN0aW9uIHVpKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNUO2xldCBlPXQuY2VudGVyLG49dC5lbGxpcHNvaWQ/P1kuZGVmYXVsdCxvPXQuc2VtaU1ham9yQXhpcyxyPXQuc2VtaU1pbm9yQXhpcyxpPXQuZ3JhbnVsYXJpdHk/P1AuUkFESUFOU19QRVJfREVHUkVFLHM9dC52ZXJ0ZXhGb3JtYXQ/P3B0LkRFRkFVTFQ7aWYoeS5kZWZpbmVkKCJvcHRpb25zLmNlbnRlciIsZSkseS50eXBlT2YubnVtYmVyKCJvcHRpb25zLnNlbWlNYWpvckF4aXMiLG8pLHkudHlwZU9mLm51bWJlcigib3B0aW9ucy5zZW1pTWlub3JBeGlzIixyKSxvPHIpdGhyb3cgbmV3IEQoInNlbWlNYWpvckF4aXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNlbWlNaW5vckF4aXMuIik7aWYoaTw9MCl0aHJvdyBuZXcgRCgiZ3JhbnVsYXJpdHkgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtsZXQgZj10LmhlaWdodD8/MCx1PXQuZXh0cnVkZWRIZWlnaHQ/P2Y7dGhpcy5fY2VudGVyPWEuY2xvbmUoZSksdGhpcy5fc2VtaU1ham9yQXhpcz1vLHRoaXMuX3NlbWlNaW5vckF4aXM9cix0aGlzLl9lbGxpcHNvaWQ9WS5jbG9uZShuKSx0aGlzLl9yb3RhdGlvbj10LnJvdGF0aW9uPz8wLHRoaXMuX3N0Um90YXRpb249dC5zdFJvdGF0aW9uPz8wLHRoaXMuX2hlaWdodD1NYXRoLm1heCh1LGYpLHRoaXMuX2dyYW51bGFyaXR5PWksdGhpcy5fdmVydGV4Rm9ybWF0PXB0LmNsb25lKHMpLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0PU1hdGgubWluKHUsZiksdGhpcy5fc2hhZG93Vm9sdW1lPXQuc2hhZG93Vm9sdW1lPz8hMSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVFbGxpcHNlR2VvbWV0cnkiLHRoaXMuX29mZnNldEF0dHJpYnV0ZT10Lm9mZnNldEF0dHJpYnV0ZSx0aGlzLl9yZWN0YW5nbGU9dm9pZCAwLHRoaXMuX3RleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHM9dm9pZCAwfWZ1bmN0aW9uIHVOKHQpe2xldCBlPS10Ll9zdFJvdGF0aW9uO2lmKGU9PT0wKXJldHVyblswLDAsMCwxLDEsMF07bGV0IG89VnIuY29tcHV0ZUVsbGlwc2VQb3NpdGlvbnMoe2NlbnRlcjp0Ll9jZW50ZXIsc2VtaU1ham9yQXhpczp0Ll9zZW1pTWFqb3JBeGlzLHNlbWlNaW5vckF4aXM6dC5fc2VtaU1pbm9yQXhpcyxyb3RhdGlvbjp0Ll9yb3RhdGlvbixncmFudWxhcml0eTp0Ll9ncmFudWxhcml0eX0sITEsITApLm91dGVyUG9zaXRpb25zLHI9by5sZW5ndGgvMyxpPW5ldyBBcnJheShyKTtmb3IobGV0IHU9MDt1PHI7Kyt1KWlbdV09YS5mcm9tQXJyYXkobyx1KjMpO2xldCBzPXQuX2VsbGlwc29pZCxmPXQucmVjdGFuZ2xlO3JldHVybiBVdC5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50cyhpLGUscyxmKX12YXIgZmEsYjAsdzAsTXcsUW4sTncsaU4sVDAsSXcsdncsRncsSnAsTHcsRHcsQncsYWMsWnAsUXAsVncsencsancsZmksenIsTzA9JCgoKT0+e3ZlKCk7a2UoKTtEdCgpO0llKCk7V3QoKTtEZSgpO3llKCk7ZnQoKTtIdCgpO0EwKCk7JHQoKTt4aSgpO1llKCk7JGUoKTthbigpO2NjKCk7RG8oKTtjaSgpO1plKCk7S3QoKTtVbigpO3RuKCk7WG8oKTtUbigpO3hvKCk7ZmE9bmV3IGEsYjA9bmV3IGEsdzA9bmV3IGEsTXc9bmV3IGEsUW49bmV3IEosTnc9bmV3IFosaU49bmV3IFosVDA9bmV3IHRlLEl3PW5ldyBhLHZ3PW5ldyBhLEZ3PW5ldyBhLEpwPW5ldyBjdCxMdz1uZXcgYSxEdz1uZXcgSixCdz1uZXcgSjthYz1uZXcgYTtacD1uZXcgQXQsUXA9bmV3IEF0O3VpLnBhY2tlZExlbmd0aD1hLnBhY2tlZExlbmd0aCtZLnBhY2tlZExlbmd0aCtwdC5wYWNrZWRMZW5ndGgrOTt1aS5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS5kZWZpbmVkKCJ2YWx1ZSIsdCkseS5kZWZpbmVkKCJhcnJheSIsZSksbj1uPz8wLGEucGFjayh0Ll9jZW50ZXIsZSxuKSxuKz1hLnBhY2tlZExlbmd0aCxZLnBhY2sodC5fZWxsaXBzb2lkLGUsbiksbis9WS5wYWNrZWRMZW5ndGgscHQucGFjayh0Ll92ZXJ0ZXhGb3JtYXQsZSxuKSxuKz1wdC5wYWNrZWRMZW5ndGgsZVtuKytdPXQuX3NlbWlNYWpvckF4aXMsZVtuKytdPXQuX3NlbWlNaW5vckF4aXMsZVtuKytdPXQuX3JvdGF0aW9uLGVbbisrXT10Ll9zdFJvdGF0aW9uLGVbbisrXT10Ll9oZWlnaHQsZVtuKytdPXQuX2dyYW51bGFyaXR5LGVbbisrXT10Ll9leHRydWRlZEhlaWdodCxlW24rK109dC5fc2hhZG93Vm9sdW1lPzE6MCxlW25dPXQuX29mZnNldEF0dHJpYnV0ZT8/LTEsZX07Vnc9bmV3IGEsenc9bmV3IFksanc9bmV3IHB0LGZpPXtjZW50ZXI6VncsZWxsaXBzb2lkOnp3LHZlcnRleEZvcm1hdDpqdyxzZW1pTWFqb3JBeGlzOnZvaWQgMCxzZW1pTWlub3JBeGlzOnZvaWQgMCxyb3RhdGlvbjp2b2lkIDAsc3RSb3RhdGlvbjp2b2lkIDAsaGVpZ2h0OnZvaWQgMCxncmFudWxhcml0eTp2b2lkIDAsZXh0cnVkZWRIZWlnaHQ6dm9pZCAwLHNoYWRvd1ZvbHVtZTp2b2lkIDAsb2Zmc2V0QXR0cmlidXRlOnZvaWQgMH07dWkudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXt5LmRlZmluZWQoImFycmF5Iix0KSxlPWU/PzA7bGV0IG89YS51bnBhY2sodCxlLFZ3KTtlKz1hLnBhY2tlZExlbmd0aDtsZXQgcj1ZLnVucGFjayh0LGUsencpO2UrPVkucGFja2VkTGVuZ3RoO2xldCBpPXB0LnVucGFjayh0LGUsancpO2UrPXB0LnBhY2tlZExlbmd0aDtsZXQgcz10W2UrK10sZj10W2UrK10sdT10W2UrK10sYz10W2UrK10sbD10W2UrK10scD10W2UrK10sZD10W2UrK10saD10W2UrK109PT0xLF89dFtlXTtyZXR1cm4gbShuKT8obi5fY2VudGVyPWEuY2xvbmUobyxuLl9jZW50ZXIpLG4uX2VsbGlwc29pZD1ZLmNsb25lKHIsbi5fZWxsaXBzb2lkKSxuLl92ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUoaSxuLl92ZXJ0ZXhGb3JtYXQpLG4uX3NlbWlNYWpvckF4aXM9cyxuLl9zZW1pTWlub3JBeGlzPWYsbi5fcm90YXRpb249dSxuLl9zdFJvdGF0aW9uPWMsbi5faGVpZ2h0PWwsbi5fZ3JhbnVsYXJpdHk9cCxuLl9leHRydWRlZEhlaWdodD1kLG4uX3NoYWRvd1ZvbHVtZT1oLG4uX29mZnNldEF0dHJpYnV0ZT1fPT09LTE/dm9pZCAwOl8sbik6KGZpLmhlaWdodD1sLGZpLmV4dHJ1ZGVkSGVpZ2h0PWQsZmkuZ3JhbnVsYXJpdHk9cCxmaS5zdFJvdGF0aW9uPWMsZmkucm90YXRpb249dSxmaS5zZW1pTWFqb3JBeGlzPXMsZmkuc2VtaU1pbm9yQXhpcz1mLGZpLnNoYWRvd1ZvbHVtZT1oLGZpLm9mZnNldEF0dHJpYnV0ZT1fPT09LTE/dm9pZCAwOl8sbmV3IHVpKGZpKSl9O3VpLmNvbXB1dGVSZWN0YW5nbGU9ZnVuY3Rpb24odCxlKXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgbj10LmNlbnRlcixvPXQuZWxsaXBzb2lkPz9ZLmRlZmF1bHQscj10LnNlbWlNYWpvckF4aXMsaT10LnNlbWlNaW5vckF4aXMscz10LmdyYW51bGFyaXR5Pz9QLlJBRElBTlNfUEVSX0RFR1JFRSxmPXQucm90YXRpb24/PzA7aWYoeS5kZWZpbmVkKCJvcHRpb25zLmNlbnRlciIsbikseS50eXBlT2YubnVtYmVyKCJvcHRpb25zLnNlbWlNYWpvckF4aXMiLHIpLHkudHlwZU9mLm51bWJlcigib3B0aW9ucy5zZW1pTWlub3JBeGlzIixpKSxyPGkpdGhyb3cgbmV3IEQoInNlbWlNYWpvckF4aXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNlbWlNaW5vckF4aXMuIik7aWYoczw9MCl0aHJvdyBuZXcgRCgiZ3JhbnVsYXJpdHkgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtyZXR1cm4gR3cobixyLGksZixzLG8sZSl9O3VpLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2lmKHQuX3NlbWlNYWpvckF4aXM8PTB8fHQuX3NlbWlNaW5vckF4aXM8PTApcmV0dXJuO2xldCBlPXQuX2hlaWdodCxuPXQuX2V4dHJ1ZGVkSGVpZ2h0LG89IVAuZXF1YWxzRXBzaWxvbihlLG4sMCxQLkVQU0lMT04yKTt0Ll9jZW50ZXI9dC5fZWxsaXBzb2lkLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UodC5fY2VudGVyLHQuX2NlbnRlcik7bGV0IHI9e2NlbnRlcjp0Ll9jZW50ZXIsc2VtaU1ham9yQXhpczp0Ll9zZW1pTWFqb3JBeGlzLHNlbWlNaW5vckF4aXM6dC5fc2VtaU1pbm9yQXhpcyxlbGxpcHNvaWQ6dC5fZWxsaXBzb2lkLHJvdGF0aW9uOnQuX3JvdGF0aW9uLGhlaWdodDplLGdyYW51bGFyaXR5OnQuX2dyYW51bGFyaXR5LHZlcnRleEZvcm1hdDp0Ll92ZXJ0ZXhGb3JtYXQsc3RSb3RhdGlvbjp0Ll9zdFJvdGF0aW9ufSxpO2lmKG8pci5leHRydWRlZEhlaWdodD1uLHIuc2hhZG93Vm9sdW1lPXQuX3NoYWRvd1ZvbHVtZSxyLm9mZnNldEF0dHJpYnV0ZT10Ll9vZmZzZXRBdHRyaWJ1dGUsaT1mTihyKTtlbHNlIGlmKGk9c04ociksbSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgcz1pLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLmxlbmd0aCxmPXQuX29mZnNldEF0dHJpYnV0ZT09PWFlLk5PTkU/MDoxLHU9bmV3IFVpbnQ4QXJyYXkocy8zKS5maWxsKGYpO2kuYXR0cmlidXRlcy5hcHBseU9mZnNldD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczp1fSl9cmV0dXJuIG5ldyBVdCh7YXR0cmlidXRlczppLmF0dHJpYnV0ZXMsaW5kaWNlczppLmluZGljZXMscHJpbWl0aXZlVHlwZTpCdC5UUklBTkdMRVMsYm91bmRpbmdTcGhlcmU6aS5ib3VuZGluZ1NwaGVyZSxvZmZzZXRBdHRyaWJ1dGU6dC5fb2Zmc2V0QXR0cmlidXRlfSl9O3VpLmNyZWF0ZVNoYWRvd1ZvbHVtZT1mdW5jdGlvbih0LGUsbil7bGV0IG89dC5fZ3JhbnVsYXJpdHkscj10Ll9lbGxpcHNvaWQsaT1lKG8scikscz1uKG8scik7cmV0dXJuIG5ldyB1aSh7Y2VudGVyOnQuX2NlbnRlcixzZW1pTWFqb3JBeGlzOnQuX3NlbWlNYWpvckF4aXMsc2VtaU1pbm9yQXhpczp0Ll9zZW1pTWlub3JBeGlzLGVsbGlwc29pZDpyLHJvdGF0aW9uOnQuX3JvdGF0aW9uLHN0Um90YXRpb246dC5fc3RSb3RhdGlvbixncmFudWxhcml0eTpvLGV4dHJ1ZGVkSGVpZ2h0OmksaGVpZ2h0OnMsdmVydGV4Rm9ybWF0OnB0LlBPU0lUSU9OX09OTFksc2hhZG93Vm9sdW1lOiEwfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHVpLnByb3RvdHlwZSx7cmVjdGFuZ2xlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLl9yZWN0YW5nbGUpfHwodGhpcy5fcmVjdGFuZ2xlPUd3KHRoaXMuX2NlbnRlcix0aGlzLl9zZW1pTWFqb3JBeGlzLHRoaXMuX3NlbWlNaW5vckF4aXMsdGhpcy5fcm90YXRpb24sdGhpcy5fZ3JhbnVsYXJpdHksdGhpcy5fZWxsaXBzb2lkKSksdGhpcy5fcmVjdGFuZ2xlfX0sdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50cyl8fCh0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzPXVOKHRoaXMpKSx0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzfX19KTt6cj11aX0pO2Z1bmN0aW9uIEZpKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNUO2xldCBlPXQucmFkaXVzO3kudHlwZU9mLm51bWJlcigicmFkaXVzIixlKTtsZXQgbj17Y2VudGVyOnQuY2VudGVyLHNlbWlNYWpvckF4aXM6ZSxzZW1pTWlub3JBeGlzOmUsZWxsaXBzb2lkOnQuZWxsaXBzb2lkLGhlaWdodDp0LmhlaWdodCxleHRydWRlZEhlaWdodDp0LmV4dHJ1ZGVkSGVpZ2h0LGdyYW51bGFyaXR5OnQuZ3JhbnVsYXJpdHksdmVydGV4Rm9ybWF0OnQudmVydGV4Rm9ybWF0LHN0Um90YXRpb246dC5zdFJvdGF0aW9uLHNoYWRvd1ZvbHVtZTp0LnNoYWRvd1ZvbHVtZX07dGhpcy5fZWxsaXBzZUdlb21ldHJ5PW5ldyB6cihuKSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVDaXJjbGVHZW9tZXRyeSJ9dmFyIEh3LGdvLEUwLHF3PSQoKCk9PntEdCgpO1d0KCk7eWUoKTtmdCgpO08wKCk7JHQoKTt4bygpO0ZpLnBhY2tlZExlbmd0aD16ci5wYWNrZWRMZW5ndGg7RmkucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHpyLnBhY2sodC5fZWxsaXBzZUdlb21ldHJ5LGUsbil9O0h3PW5ldyB6cih7Y2VudGVyOm5ldyBhLHNlbWlNYWpvckF4aXM6MSxzZW1pTWlub3JBeGlzOjF9KSxnbz17Y2VudGVyOm5ldyBhLHJhZGl1czp2b2lkIDAsZWxsaXBzb2lkOlkuY2xvbmUoWS5kZWZhdWx0KSxoZWlnaHQ6dm9pZCAwLGV4dHJ1ZGVkSGVpZ2h0OnZvaWQgMCxncmFudWxhcml0eTp2b2lkIDAsdmVydGV4Rm9ybWF0Om5ldyBwdCxzdFJvdGF0aW9uOnZvaWQgMCxzZW1pTWFqb3JBeGlzOnZvaWQgMCxzZW1pTWlub3JBeGlzOnZvaWQgMCxzaGFkb3dWb2x1bWU6dm9pZCAwfTtGaS51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe2xldCBvPXpyLnVucGFjayh0LGUsSHcpO3JldHVybiBnby5jZW50ZXI9YS5jbG9uZShvLl9jZW50ZXIsZ28uY2VudGVyKSxnby5lbGxpcHNvaWQ9WS5jbG9uZShvLl9lbGxpcHNvaWQsZ28uZWxsaXBzb2lkKSxnby5lbGxpcHNvaWQ9WS5jbG9uZShvLl9lbGxpcHNvaWQsSHcuX2VsbGlwc29pZCksZ28uaGVpZ2h0PW8uX2hlaWdodCxnby5leHRydWRlZEhlaWdodD1vLl9leHRydWRlZEhlaWdodCxnby5ncmFudWxhcml0eT1vLl9ncmFudWxhcml0eSxnby52ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUoby5fdmVydGV4Rm9ybWF0LGdvLnZlcnRleEZvcm1hdCksZ28uc3RSb3RhdGlvbj1vLl9zdFJvdGF0aW9uLGdvLnNoYWRvd1ZvbHVtZT1vLl9zaGFkb3dWb2x1bWUsbShuKT8oZ28uc2VtaU1ham9yQXhpcz1vLl9zZW1pTWFqb3JBeGlzLGdvLnNlbWlNaW5vckF4aXM9by5fc2VtaU1pbm9yQXhpcyxuLl9lbGxpcHNlR2VvbWV0cnk9bmV3IHpyKGdvKSxuKTooZ28ucmFkaXVzPW8uX3NlbWlNYWpvckF4aXMsbmV3IEZpKGdvKSl9O0ZpLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe3JldHVybiB6ci5jcmVhdGVHZW9tZXRyeSh0Ll9lbGxpcHNlR2VvbWV0cnkpfTtGaS5jcmVhdGVTaGFkb3dWb2x1bWU9ZnVuY3Rpb24odCxlLG4pe2xldCBvPXQuX2VsbGlwc2VHZW9tZXRyeS5fZ3JhbnVsYXJpdHkscj10Ll9lbGxpcHNlR2VvbWV0cnkuX2VsbGlwc29pZCxpPWUobyxyKSxzPW4obyxyKTtyZXR1cm4gbmV3IEZpKHtjZW50ZXI6dC5fZWxsaXBzZUdlb21ldHJ5Ll9jZW50ZXIscmFkaXVzOnQuX2VsbGlwc2VHZW9tZXRyeS5fc2VtaU1ham9yQXhpcyxlbGxpcHNvaWQ6cixzdFJvdGF0aW9uOnQuX2VsbGlwc2VHZW9tZXRyeS5fc3RSb3RhdGlvbixncmFudWxhcml0eTpvLGV4dHJ1ZGVkSGVpZ2h0OmksaGVpZ2h0OnMsdmVydGV4Rm9ybWF0OnB0LlBPU0lUSU9OX09OTFksc2hhZG93Vm9sdW1lOiEwfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKEZpLnByb3RvdHlwZSx7cmVjdGFuZ2xlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZWxsaXBzZUdlb21ldHJ5LnJlY3RhbmdsZX19LHRleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGxpcHNlR2VvbWV0cnkudGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50c319fSk7RTA9Rml9KTt2YXIgUjA9e307bGUoUjAse2RlZmF1bHQ6KCk9PnBOfSk7ZnVuY3Rpb24gbE4odCxlKXtyZXR1cm4gbShlKSYmKHQ9RTAudW5wYWNrKHQsZSkpLHQuX2VsbGlwc2VHZW9tZXRyeS5fY2VudGVyPWEuY2xvbmUodC5fZWxsaXBzZUdlb21ldHJ5Ll9jZW50ZXIpLHQuX2VsbGlwc2VHZW9tZXRyeS5fZWxsaXBzb2lkPVkuY2xvbmUodC5fZWxsaXBzZUdlb21ldHJ5Ll9lbGxpcHNvaWQpLEUwLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBwTixTMD0kKCgpPT57RHQoKTtxdygpO2Z0KCk7JHQoKTtwTj1sTn0pO2Z1bmN0aW9uIGROKHQpe2xldCBlPXQuY2VudGVyO2ZjPWEubXVsdGlwbHlCeVNjYWxhcih0LmVsbGlwc29pZC5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoZSxmYyksdC5oZWlnaHQsZmMpLGZjPWEuYWRkKGUsZmMsZmMpO2xldCBuPW5ldyBBdChmYyx0LnNlbWlNYWpvckF4aXMpLG89VnIuY29tcHV0ZUVsbGlwc2VQb3NpdGlvbnModCwhMSwhMCkub3V0ZXJQb3NpdGlvbnMscj1uZXcgaWUoe3Bvc2l0aW9uOm5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6VnIucmFpc2VQb3NpdGlvbnNUb0hlaWdodChvLHQsITEpfSl9KSxpPW8ubGVuZ3RoLzMscz1MdC5jcmVhdGVUeXBlZEFycmF5KGksaSoyKSxmPTA7Zm9yKGxldCB1PTA7dTxpOysrdSlzW2YrK109dSxzW2YrK109KHUrMSklaTtyZXR1cm57Ym91bmRpbmdTcGhlcmU6bixhdHRyaWJ1dGVzOnIsaW5kaWNlczpzfX1mdW5jdGlvbiBtTih0KXtsZXQgZT10LmNlbnRlcixuPXQuZWxsaXBzb2lkLG89dC5zZW1pTWFqb3JBeGlzLHI9YS5tdWx0aXBseUJ5U2NhbGFyKG4uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGUsS3cpLHQuaGVpZ2h0LEt3KTt0ZC5jZW50ZXI9YS5hZGQoZSxyLHRkLmNlbnRlciksdGQucmFkaXVzPW8scj1hLm11bHRpcGx5QnlTY2FsYXIobi5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoZSxyKSx0LmV4dHJ1ZGVkSGVpZ2h0LHIpLGVkLmNlbnRlcj1hLmFkZChlLHIsZWQuY2VudGVyKSxlZC5yYWRpdXM9bztsZXQgaT1Wci5jb21wdXRlRWxsaXBzZVBvc2l0aW9ucyh0LCExLCEwKS5vdXRlclBvc2l0aW9ucyxzPW5ldyBpZSh7cG9zaXRpb246bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpWci5yYWlzZVBvc2l0aW9uc1RvSGVpZ2h0KGksdCwhMCl9KX0pO2k9cy5wb3NpdGlvbi52YWx1ZXM7bGV0IGY9QXQudW5pb24odGQsZWQpLHU9aS5sZW5ndGgvMztpZihtKHQub2Zmc2V0QXR0cmlidXRlKSl7bGV0IF89bmV3IFVpbnQ4QXJyYXkodSk7aWYodC5vZmZzZXRBdHRyaWJ1dGU9PT1hZS5UT1ApXz1fLmZpbGwoMSwwLHUvMik7ZWxzZXtsZXQgZz10Lm9mZnNldEF0dHJpYnV0ZT09PWFlLk5PTkU/MDoxO189Xy5maWxsKGcpfXMuYXBwbHlPZmZzZXQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6X30pfWxldCBjPXQubnVtYmVyT2ZWZXJ0aWNhbExpbmVzPz8xNjtjPVAuY2xhbXAoYywwLHUvMik7bGV0IGw9THQuY3JlYXRlVHlwZWRBcnJheSh1LHUqMitjKjIpO3UvPTI7bGV0IHA9MCxkO2ZvcihkPTA7ZDx1OysrZClsW3ArK109ZCxsW3ArK109KGQrMSkldSxsW3ArK109ZCt1LGxbcCsrXT0oZCsxKSV1K3U7bGV0IGg7aWYoYz4wKXtsZXQgXz1NYXRoLm1pbihjLHUpO2g9TWF0aC5yb3VuZCh1L18pO2xldCBnPU1hdGgubWluKGgqYyx1KTtmb3IoZD0wO2Q8ZztkKz1oKWxbcCsrXT1kLGxbcCsrXT1kK3V9cmV0dXJue2JvdW5kaW5nU3BoZXJlOmYsYXR0cmlidXRlczpzLGluZGljZXM6bH19ZnVuY3Rpb24gdWEodCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5jZW50ZXIsbj10LmVsbGlwc29pZD8/WS5kZWZhdWx0LG89dC5zZW1pTWFqb3JBeGlzLHI9dC5zZW1pTWlub3JBeGlzLGk9dC5ncmFudWxhcml0eT8/UC5SQURJQU5TX1BFUl9ERUdSRUU7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImNlbnRlciBpcyByZXF1aXJlZC4iKTtpZighbShvKSl0aHJvdyBuZXcgRCgic2VtaU1ham9yQXhpcyBpcyByZXF1aXJlZC4iKTtpZighbShyKSl0aHJvdyBuZXcgRCgic2VtaU1pbm9yQXhpcyBpcyByZXF1aXJlZC4iKTtpZihvPHIpdGhyb3cgbmV3IEQoInNlbWlNYWpvckF4aXMgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHNlbWlNaW5vckF4aXMuIik7aWYoaTw9MCl0aHJvdyBuZXcgRCgiZ3JhbnVsYXJpdHkgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtsZXQgcz10LmhlaWdodD8/MCxmPXQuZXh0cnVkZWRIZWlnaHQ/P3M7dGhpcy5fY2VudGVyPWEuY2xvbmUoZSksdGhpcy5fc2VtaU1ham9yQXhpcz1vLHRoaXMuX3NlbWlNaW5vckF4aXM9cix0aGlzLl9lbGxpcHNvaWQ9WS5jbG9uZShuKSx0aGlzLl9yb3RhdGlvbj10LnJvdGF0aW9uPz8wLHRoaXMuX2hlaWdodD1NYXRoLm1heChmLHMpLHRoaXMuX2dyYW51bGFyaXR5PWksdGhpcy5fZXh0cnVkZWRIZWlnaHQ9TWF0aC5taW4oZixzKSx0aGlzLl9udW1iZXJPZlZlcnRpY2FsTGluZXM9TWF0aC5tYXgodC5udW1iZXJPZlZlcnRpY2FsTGluZXM/PzE2LDApLHRoaXMuX29mZnNldEF0dHJpYnV0ZT10Lm9mZnNldEF0dHJpYnV0ZSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVFbGxpcHNlT3V0bGluZUdlb21ldHJ5In12YXIgS3csZmMsdGQsZWQsV3csWHcsTGksanIseDA9JCgoKT0+e3ZlKCk7RHQoKTtEZSgpO3llKCk7ZnQoKTtIdCgpO0EwKCk7JHQoKTtZZSgpOyRlKCk7YW4oKTtEbygpO1plKCk7S3QoKTt0bigpO0t3PW5ldyBhLGZjPW5ldyBhO3RkPW5ldyBBdCxlZD1uZXcgQXQ7dWEucGFja2VkTGVuZ3RoPWEucGFja2VkTGVuZ3RoK1kucGFja2VkTGVuZ3RoKzg7dWEucGFjaz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoInZhbHVlIGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImFycmF5IGlzIHJlcXVpcmVkIik7cmV0dXJuIG49bj8/MCxhLnBhY2sodC5fY2VudGVyLGUsbiksbis9YS5wYWNrZWRMZW5ndGgsWS5wYWNrKHQuX2VsbGlwc29pZCxlLG4pLG4rPVkucGFja2VkTGVuZ3RoLGVbbisrXT10Ll9zZW1pTWFqb3JBeGlzLGVbbisrXT10Ll9zZW1pTWlub3JBeGlzLGVbbisrXT10Ll9yb3RhdGlvbixlW24rK109dC5faGVpZ2h0LGVbbisrXT10Ll9ncmFudWxhcml0eSxlW24rK109dC5fZXh0cnVkZWRIZWlnaHQsZVtuKytdPXQuX251bWJlck9mVmVydGljYWxMaW5lcyxlW25dPXQuX29mZnNldEF0dHJpYnV0ZT8/LTEsZX07V3c9bmV3IGEsWHc9bmV3IFksTGk9e2NlbnRlcjpXdyxlbGxpcHNvaWQ6WHcsc2VtaU1ham9yQXhpczp2b2lkIDAsc2VtaU1pbm9yQXhpczp2b2lkIDAscm90YXRpb246dm9pZCAwLGhlaWdodDp2b2lkIDAsZ3JhbnVsYXJpdHk6dm9pZCAwLGV4dHJ1ZGVkSGVpZ2h0OnZvaWQgMCxudW1iZXJPZlZlcnRpY2FsTGluZXM6dm9pZCAwLG9mZnNldEF0dHJpYnV0ZTp2b2lkIDB9O3VhLnVucGFjaz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImFycmF5IGlzIHJlcXVpcmVkIik7ZT1lPz8wO2xldCBvPWEudW5wYWNrKHQsZSxXdyk7ZSs9YS5wYWNrZWRMZW5ndGg7bGV0IHI9WS51bnBhY2sodCxlLFh3KTtlKz1ZLnBhY2tlZExlbmd0aDtsZXQgaT10W2UrK10scz10W2UrK10sZj10W2UrK10sdT10W2UrK10sYz10W2UrK10sbD10W2UrK10scD10W2UrK10sZD10W2VdO3JldHVybiBtKG4pPyhuLl9jZW50ZXI9YS5jbG9uZShvLG4uX2NlbnRlciksbi5fZWxsaXBzb2lkPVkuY2xvbmUocixuLl9lbGxpcHNvaWQpLG4uX3NlbWlNYWpvckF4aXM9aSxuLl9zZW1pTWlub3JBeGlzPXMsbi5fcm90YXRpb249ZixuLl9oZWlnaHQ9dSxuLl9ncmFudWxhcml0eT1jLG4uX2V4dHJ1ZGVkSGVpZ2h0PWwsbi5fbnVtYmVyT2ZWZXJ0aWNhbExpbmVzPXAsbi5fb2Zmc2V0QXR0cmlidXRlPWQ9PT0tMT92b2lkIDA6ZCxuKTooTGkuaGVpZ2h0PXUsTGkuZXh0cnVkZWRIZWlnaHQ9bCxMaS5ncmFudWxhcml0eT1jLExpLnJvdGF0aW9uPWYsTGkuc2VtaU1ham9yQXhpcz1pLExpLnNlbWlNaW5vckF4aXM9cyxMaS5udW1iZXJPZlZlcnRpY2FsTGluZXM9cCxMaS5vZmZzZXRBdHRyaWJ1dGU9ZD09PS0xP3ZvaWQgMDpkLG5ldyB1YShMaSkpfTt1YS5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtpZih0Ll9zZW1pTWFqb3JBeGlzPD0wfHx0Ll9zZW1pTWlub3JBeGlzPD0wKXJldHVybjtsZXQgZT10Ll9oZWlnaHQsbj10Ll9leHRydWRlZEhlaWdodCxvPSFQLmVxdWFsc0Vwc2lsb24oZSxuLDAsUC5FUFNJTE9OMik7dC5fY2VudGVyPXQuX2VsbGlwc29pZC5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKHQuX2NlbnRlcix0Ll9jZW50ZXIpO2xldCByPXtjZW50ZXI6dC5fY2VudGVyLHNlbWlNYWpvckF4aXM6dC5fc2VtaU1ham9yQXhpcyxzZW1pTWlub3JBeGlzOnQuX3NlbWlNaW5vckF4aXMsZWxsaXBzb2lkOnQuX2VsbGlwc29pZCxyb3RhdGlvbjp0Ll9yb3RhdGlvbixoZWlnaHQ6ZSxncmFudWxhcml0eTp0Ll9ncmFudWxhcml0eSxudW1iZXJPZlZlcnRpY2FsTGluZXM6dC5fbnVtYmVyT2ZWZXJ0aWNhbExpbmVzfSxpO2lmKG8pci5leHRydWRlZEhlaWdodD1uLHIub2Zmc2V0QXR0cmlidXRlPXQuX29mZnNldEF0dHJpYnV0ZSxpPW1OKHIpO2Vsc2UgaWYoaT1kTihyKSxtKHQuX29mZnNldEF0dHJpYnV0ZSkpe2xldCBzPWkuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMubGVuZ3RoLGY9dC5fb2Zmc2V0QXR0cmlidXRlPT09YWUuTk9ORT8wOjEsdT1uZXcgVWludDhBcnJheShzLzMpLmZpbGwoZik7aS5hdHRyaWJ1dGVzLmFwcGx5T2Zmc2V0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOnV9KX1yZXR1cm4gbmV3IFV0KHthdHRyaWJ1dGVzOmkuYXR0cmlidXRlcyxpbmRpY2VzOmkuaW5kaWNlcyxwcmltaXRpdmVUeXBlOkJ0LkxJTkVTLGJvdW5kaW5nU3BoZXJlOmkuYm91bmRpbmdTcGhlcmUsb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtqcj11YX0pO2Z1bmN0aW9uIGxhKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNUO2xldCBlPXQucmFkaXVzO3kudHlwZU9mLm51bWJlcigicmFkaXVzIixlKTtsZXQgbj17Y2VudGVyOnQuY2VudGVyLHNlbWlNYWpvckF4aXM6ZSxzZW1pTWlub3JBeGlzOmUsZWxsaXBzb2lkOnQuZWxsaXBzb2lkLGhlaWdodDp0LmhlaWdodCxleHRydWRlZEhlaWdodDp0LmV4dHJ1ZGVkSGVpZ2h0LGdyYW51bGFyaXR5OnQuZ3JhbnVsYXJpdHksbnVtYmVyT2ZWZXJ0aWNhbExpbmVzOnQubnVtYmVyT2ZWZXJ0aWNhbExpbmVzfTt0aGlzLl9lbGxpcHNlR2VvbWV0cnk9bmV3IGpyKG4pLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUNpcmNsZU91dGxpbmVHZW9tZXRyeSJ9dmFyIGhOLHNyLEMwLFl3PSQoKCk9PntEdCgpO1d0KCk7eWUoKTtmdCgpO3gwKCk7JHQoKTtsYS5wYWNrZWRMZW5ndGg9anIucGFja2VkTGVuZ3RoO2xhLnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSxqci5wYWNrKHQuX2VsbGlwc2VHZW9tZXRyeSxlLG4pfTtoTj1uZXcganIoe2NlbnRlcjpuZXcgYSxzZW1pTWFqb3JBeGlzOjEsc2VtaU1pbm9yQXhpczoxfSksc3I9e2NlbnRlcjpuZXcgYSxyYWRpdXM6dm9pZCAwLGVsbGlwc29pZDpZLmNsb25lKFkuVU5JVF9TUEhFUkUpLGhlaWdodDp2b2lkIDAsZXh0cnVkZWRIZWlnaHQ6dm9pZCAwLGdyYW51bGFyaXR5OnZvaWQgMCxudW1iZXJPZlZlcnRpY2FsTGluZXM6dm9pZCAwLHNlbWlNYWpvckF4aXM6dm9pZCAwLHNlbWlNaW5vckF4aXM6dm9pZCAwfTtsYS51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe2xldCBvPWpyLnVucGFjayh0LGUsaE4pO3JldHVybiBzci5jZW50ZXI9YS5jbG9uZShvLl9jZW50ZXIsc3IuY2VudGVyKSxzci5lbGxpcHNvaWQ9WS5jbG9uZShvLl9lbGxpcHNvaWQsc3IuZWxsaXBzb2lkKSxzci5oZWlnaHQ9by5faGVpZ2h0LHNyLmV4dHJ1ZGVkSGVpZ2h0PW8uX2V4dHJ1ZGVkSGVpZ2h0LHNyLmdyYW51bGFyaXR5PW8uX2dyYW51bGFyaXR5LHNyLm51bWJlck9mVmVydGljYWxMaW5lcz1vLl9udW1iZXJPZlZlcnRpY2FsTGluZXMsbShuKT8oc3Iuc2VtaU1ham9yQXhpcz1vLl9zZW1pTWFqb3JBeGlzLHNyLnNlbWlNaW5vckF4aXM9by5fc2VtaU1pbm9yQXhpcyxuLl9lbGxpcHNlR2VvbWV0cnk9bmV3IGpyKHNyKSxuKTooc3IucmFkaXVzPW8uX3NlbWlNYWpvckF4aXMsbmV3IGxhKHNyKSl9O2xhLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe3JldHVybiBqci5jcmVhdGVHZW9tZXRyeSh0Ll9lbGxpcHNlR2VvbWV0cnkpfTtDMD1sYX0pO3ZhciBQMD17fTtsZShQMCx7ZGVmYXVsdDooKT0+eU59KTtmdW5jdGlvbiBfTih0LGUpe3JldHVybiBtKGUpJiYodD1DMC51bnBhY2sodCxlKSksdC5fZWxsaXBzZUdlb21ldHJ5Ll9jZW50ZXI9YS5jbG9uZSh0Ll9lbGxpcHNlR2VvbWV0cnkuX2NlbnRlciksdC5fZWxsaXBzZUdlb21ldHJ5Ll9lbGxpcHNvaWQ9WS5jbG9uZSh0Ll9lbGxpcHNlR2VvbWV0cnkuX2VsbGlwc29pZCksQzAuY3JlYXRlR2VvbWV0cnkodCl9dmFyIHlOLE0wPSQoKCk9PntEdCgpO1l3KCk7ZnQoKTskdCgpO3lOPV9OfSk7ZnVuY3Rpb24gZ04odCxlLG4sbyl7aWYoeS5kZWZpbmVkKCJlcXVhbHNFcHNpbG9uIixlKSwhbSh0KSlyZXR1cm47bj1uPz8hMTtsZXQgcj1tKG8pLGk9dC5sZW5ndGg7aWYoaTwyKXJldHVybiB0O2xldCBzLGY9dFswXSx1LGMsbD0wLHA9LTE7Zm9yKHM9MTtzPGk7KytzKXU9dFtzXSxlKGYsdSwkdyk/KG0oYyl8fChjPXQuc2xpY2UoMCxzKSxsPXMtMSxwPTApLHImJm8ucHVzaChzKSk6KG0oYykmJihjLnB1c2godSksbD1zLHImJihwPW8ubGVuZ3RoKSksZj11KTtyZXR1cm4gbiYmZSh0WzBdLHRbaS0xXSwkdykmJihyJiYobShjKT9vLnNwbGljZShwLDAsbCk6by5wdXNoKGktMSkpLG0oYyk/Yy5sZW5ndGgtPTE6Yz10LnNsaWNlKDAsLTEpKSxtKGMpP2M6dH12YXIgJHcsQ24sSHI9JCgoKT0+e1d0KCk7ZnQoKTtLdCgpOyR3PVAuRVBTSUxPTjEwO0NuPWdOfSk7ZnVuY3Rpb24gSW4odCxlLG4sbyl7dGhpcy54PXQ/PzAsdGhpcy55PWU/PzAsdGhpcy53aWR0aD1uPz8wLHRoaXMuaGVpZ2h0PW8/PzB9dmFyIFp3LEFOLGJOLHFyLENmPSQoKCk9PntrZSgpO0llKCk7V3QoKTtmdCgpOyR0KCk7eGkoKTtWcygpO1RuKCk7SW4ucGFja2VkTGVuZ3RoPTQ7SW4ucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHkuZGVmaW5lZCgiYXJyYXkiLGUpLG49bj8/MCxlW24rK109dC54LGVbbisrXT10LnksZVtuKytdPXQud2lkdGgsZVtuXT10LmhlaWdodCxlfTtJbi51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LmRlZmluZWQoImFycmF5Iix0KSxlPWU/PzAsbShuKXx8KG49bmV3IEluKSxuLng9dFtlKytdLG4ueT10W2UrK10sbi53aWR0aD10W2UrK10sbi5oZWlnaHQ9dFtlXSxufTtJbi5mcm9tUG9pbnRzPWZ1bmN0aW9uKHQsZSl7aWYobShlKXx8KGU9bmV3IEluKSwhbSh0KXx8dC5sZW5ndGg9PT0wKXJldHVybiBlLng9MCxlLnk9MCxlLndpZHRoPTAsZS5oZWlnaHQ9MCxlO2xldCBuPXQubGVuZ3RoLG89dFswXS54LHI9dFswXS55LGk9dFswXS54LHM9dFswXS55O2ZvcihsZXQgZj0xO2Y8bjtmKyspe2xldCB1PXRbZl0sYz11LngsbD11Lnk7bz1NYXRoLm1pbihjLG8pLGk9TWF0aC5tYXgoYyxpKSxyPU1hdGgubWluKGwscikscz1NYXRoLm1heChsLHMpfXJldHVybiBlLng9byxlLnk9cixlLndpZHRoPWktbyxlLmhlaWdodD1zLXIsZX07Wnc9bmV3IGVvLEFOPW5ldyBjdCxiTj1uZXcgY3Q7SW4uZnJvbVJlY3RhbmdsZT1mdW5jdGlvbih0LGUsbil7aWYobShuKXx8KG49bmV3IEluKSwhbSh0KSlyZXR1cm4gbi54PTAsbi55PTAsbi53aWR0aD0wLG4uaGVpZ2h0PTAsbjtady5fZWxsaXBzb2lkPVkuZGVmYXVsdCxlPWU/P1p3O2xldCBvPWUucHJvamVjdChOdC5zb3V0aHdlc3QodCxBTikpLHI9ZS5wcm9qZWN0KE50Lm5vcnRoZWFzdCh0LGJOKSk7cmV0dXJuIEouc3VidHJhY3QocixvLHIpLG4ueD1vLngsbi55PW8ueSxuLndpZHRoPXIueCxuLmhlaWdodD1yLnksbn07SW4uY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLng9dC54LGUueT10LnksZS53aWR0aD10LndpZHRoLGUuaGVpZ2h0PXQuaGVpZ2h0LGUpOm5ldyBJbih0LngsdC55LHQud2lkdGgsdC5oZWlnaHQpfTtJbi51bmlvbj1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSxtKG4pfHwobj1uZXcgSW4pO2xldCBvPU1hdGgubWluKHQueCxlLngpLHI9TWF0aC5taW4odC55LGUueSksaT1NYXRoLm1heCh0LngrdC53aWR0aCxlLngrZS53aWR0aCkscz1NYXRoLm1heCh0LnkrdC5oZWlnaHQsZS55K2UuaGVpZ2h0KTtyZXR1cm4gbi54PW8sbi55PXIsbi53aWR0aD1pLW8sbi5oZWlnaHQ9cy1yLG59O0luLmV4cGFuZD1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLHQpLHkudHlwZU9mLm9iamVjdCgicG9pbnQiLGUpLG49SW4uY2xvbmUodCxuKTtsZXQgbz1lLngtbi54LHI9ZS55LW4ueTtyZXR1cm4gbz5uLndpZHRoP24ud2lkdGg9bzpvPDAmJihuLndpZHRoLT1vLG4ueD1lLngpLHI+bi5oZWlnaHQ/bi5oZWlnaHQ9cjpyPDAmJihuLmhlaWdodC09cixuLnk9ZS55KSxufTtJbi5pbnRlcnNlY3Q9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpO2xldCBuPXQueCxvPXQueSxyPWUueCxpPWUueTtyZXR1cm4gbj5yK2Uud2lkdGh8fG4rdC53aWR0aDxyfHxvK3QuaGVpZ2h0PGl8fG8+aStlLmhlaWdodD9Tbi5PVVRTSURFOlNuLklOVEVSU0VDVElOR307SW4uZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZ0Lng9PT1lLngmJnQueT09PWUueSYmdC53aWR0aD09PWUud2lkdGgmJnQuaGVpZ2h0PT09ZS5oZWlnaHR9O0luLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gSW4uY2xvbmUodGhpcyx0KX07SW4ucHJvdG90eXBlLmludGVyc2VjdD1mdW5jdGlvbih0KXtyZXR1cm4gSW4uaW50ZXJzZWN0KHRoaXMsdCl9O0luLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIEluLmVxdWFscyh0aGlzLHQpfTtxcj1Jbn0pO2Z1bmN0aW9uIEJvKHQsZSxuKXt0aGlzLm1pbmltdW09YS5jbG9uZSh0Pz9hLlpFUk8pLHRoaXMubWF4aW11bT1hLmNsb25lKGU/P2EuWkVSTyksbShuKT9uPWEuY2xvbmUobik6bj1hLm1pZHBvaW50KHRoaXMubWluaW11bSx0aGlzLm1heGltdW0sbmV3IGEpLHRoaXMuY2VudGVyPW59dmFyIG5kLERpLFBmPSQoKCk9PntEdCgpO1d0KCk7ZnQoKTtWcygpO0JvLmZyb21Db3JuZXJzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS5kZWZpbmVkKCJtaW5pbXVtIix0KSx5LmRlZmluZWQoIm1heGltdW0iLGUpLG0obil8fChuPW5ldyBCbyksbi5taW5pbXVtPWEuY2xvbmUodCxuLm1pbmltdW0pLG4ubWF4aW11bT1hLmNsb25lKGUsbi5tYXhpbXVtKSxuLmNlbnRlcj1hLm1pZHBvaW50KHQsZSxuLmNlbnRlciksbn07Qm8uZnJvbVBvaW50cz1mdW5jdGlvbih0LGUpe2lmKG0oZSl8fChlPW5ldyBCbyksIW0odCl8fHQubGVuZ3RoPT09MClyZXR1cm4gZS5taW5pbXVtPWEuY2xvbmUoYS5aRVJPLGUubWluaW11bSksZS5tYXhpbXVtPWEuY2xvbmUoYS5aRVJPLGUubWF4aW11bSksZS5jZW50ZXI9YS5jbG9uZShhLlpFUk8sZS5jZW50ZXIpLGU7bGV0IG49dFswXS54LG89dFswXS55LHI9dFswXS56LGk9dFswXS54LHM9dFswXS55LGY9dFswXS56LHU9dC5sZW5ndGg7Zm9yKGxldCBwPTE7cDx1O3ArKyl7bGV0IGQ9dFtwXSxoPWQueCxfPWQueSxnPWQuejtuPU1hdGgubWluKGgsbiksaT1NYXRoLm1heChoLGkpLG89TWF0aC5taW4oXyxvKSxzPU1hdGgubWF4KF8scykscj1NYXRoLm1pbihnLHIpLGY9TWF0aC5tYXgoZyxmKX1sZXQgYz1lLm1pbmltdW07Yy54PW4sYy55PW8sYy56PXI7bGV0IGw9ZS5tYXhpbXVtO3JldHVybiBsLng9aSxsLnk9cyxsLno9ZixlLmNlbnRlcj1hLm1pZHBvaW50KGMsbCxlLmNlbnRlciksZX07Qm8uY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhlLm1pbmltdW09YS5jbG9uZSh0Lm1pbmltdW0sZS5taW5pbXVtKSxlLm1heGltdW09YS5jbG9uZSh0Lm1heGltdW0sZS5tYXhpbXVtKSxlLmNlbnRlcj1hLmNsb25lKHQuY2VudGVyLGUuY2VudGVyKSxlKTpuZXcgQm8odC5taW5pbXVtLHQubWF4aW11bSx0LmNlbnRlcil9O0JvLmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmYS5lcXVhbHModC5jZW50ZXIsZS5jZW50ZXIpJiZhLmVxdWFscyh0Lm1pbmltdW0sZS5taW5pbXVtKSYmYS5lcXVhbHModC5tYXhpbXVtLGUubWF4aW11bSl9O25kPW5ldyBhO0JvLmludGVyc2VjdFBsYW5lPWZ1bmN0aW9uKHQsZSl7eS5kZWZpbmVkKCJib3giLHQpLHkuZGVmaW5lZCgicGxhbmUiLGUpLG5kPWEuc3VidHJhY3QodC5tYXhpbXVtLHQubWluaW11bSxuZCk7bGV0IG49YS5tdWx0aXBseUJ5U2NhbGFyKG5kLC41LG5kKSxvPWUubm9ybWFsLHI9bi54Kk1hdGguYWJzKG8ueCkrbi55Kk1hdGguYWJzKG8ueSkrbi56Kk1hdGguYWJzKG8ueiksaT1hLmRvdCh0LmNlbnRlcixvKStlLmRpc3RhbmNlO3JldHVybiBpLXI+MD9Tbi5JTlNJREU6aStyPDA/U24uT1VUU0lERTpTbi5JTlRFUlNFQ1RJTkd9O0JvLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gQm8uY2xvbmUodGhpcyx0KX07Qm8ucHJvdG90eXBlLmludGVyc2VjdFBsYW5lPWZ1bmN0aW9uKHQpe3JldHVybiBCby5pbnRlcnNlY3RQbGFuZSh0aGlzLHQpfTtCby5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBCby5lcXVhbHModGhpcyx0KX07RGk9Qm99KTtmdW5jdGlvbiBsaSh0LGUpe2lmKHkuZGVmaW5lZCgib3JpZ2luIix0KSxlPWU/P1kuZGVmYXVsdCx0PWUuc2NhbGVUb0dlb2RldGljU3VyZmFjZSh0KSwhbSh0KSl0aHJvdyBuZXcgRCgib3JpZ2luIG11c3Qgbm90IGJlIGF0IHRoZSBjZW50ZXIgb2YgdGhlIGVsbGlwc29pZC4iKTtsZXQgbj0kby5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZSh0LGUpO3RoaXMuX2VsbGlwc29pZD1lLHRoaXMuX29yaWdpbj10LHRoaXMuX3hBeGlzPWEuZnJvbUNhcnRlc2lhbjQoc3QuZ2V0Q29sdW1uKG4sMCxOMCkpLHRoaXMuX3lBeGlzPWEuZnJvbUNhcnRlc2lhbjQoc3QuZ2V0Q29sdW1uKG4sMSxOMCkpO2xldCBvPWEuZnJvbUNhcnRlc2lhbjQoc3QuZ2V0Q29sdW1uKG4sMixOMCkpO3RoaXMuX3BsYW5lPW9uLmZyb21Qb2ludE5vcm1hbCh0LG8pfXZhciBOMCx3TixRdyxvZCxUTixBbyxwYT0kKCgpPT57UGYoKTtrZSgpO0R0KCk7X3IoKTtXdCgpO2Z0KCk7SHQoKTskdCgpO2VjKCk7a24oKTt1cygpO1ZwKCk7YXMoKTtOMD1uZXcgbWU7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMobGkucHJvdG90eXBlLHtlbGxpcHNvaWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGxpcHNvaWR9fSxvcmlnaW46e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9vcmlnaW59fSxwbGFuZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BsYW5lfX0seEF4aXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl94QXhpc319LHlBeGlzOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5feUF4aXN9fSx6QXhpczp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BsYW5lLm5vcm1hbH19fSk7d049bmV3IERpO2xpLmZyb21Qb2ludHM9ZnVuY3Rpb24odCxlKXt5LmRlZmluZWQoImNhcnRlc2lhbnMiLHQpO2xldCBuPURpLmZyb21Qb2ludHModCx3Tik7cmV0dXJuIG5ldyBsaShuLmNlbnRlcixlKX07UXc9bmV3IEpzLG9kPW5ldyBhO2xpLnByb3RvdHlwZS5wcm9qZWN0UG9pbnRPbnRvUGxhbmU9ZnVuY3Rpb24odCxlKXt5LmRlZmluZWQoImNhcnRlc2lhbiIsdCk7bGV0IG49UXc7bi5vcmlnaW49dCxhLm5vcm1hbGl6ZSh0LG4uZGlyZWN0aW9uKTtsZXQgbz15by5yYXlQbGFuZShuLHRoaXMuX3BsYW5lLG9kKTtpZihtKG8pfHwoYS5uZWdhdGUobi5kaXJlY3Rpb24sbi5kaXJlY3Rpb24pLG89eW8ucmF5UGxhbmUobix0aGlzLl9wbGFuZSxvZCkpLG0obykpe2xldCByPWEuc3VidHJhY3Qobyx0aGlzLl9vcmlnaW4sbyksaT1hLmRvdCh0aGlzLl94QXhpcyxyKSxzPWEuZG90KHRoaXMuX3lBeGlzLHIpO3JldHVybiBtKGUpPyhlLng9aSxlLnk9cyxlKTpuZXcgSihpLHMpfX07bGkucHJvdG90eXBlLnByb2plY3RQb2ludHNPbnRvUGxhbmU9ZnVuY3Rpb24odCxlKXt5LmRlZmluZWQoImNhcnRlc2lhbnMiLHQpLG0oZSl8fChlPVtdKTtsZXQgbj0wLG89dC5sZW5ndGg7Zm9yKGxldCByPTA7cjxvO3IrKyl7bGV0IGk9dGhpcy5wcm9qZWN0UG9pbnRPbnRvUGxhbmUodFtyXSxlW25dKTttKGkpJiYoZVtuXT1pLG4rKyl9cmV0dXJuIGUubGVuZ3RoPW4sZX07bGkucHJvdG90eXBlLnByb2plY3RQb2ludFRvTmVhcmVzdE9uUGxhbmU9ZnVuY3Rpb24odCxlKXt5LmRlZmluZWQoImNhcnRlc2lhbiIsdCksbShlKXx8KGU9bmV3IEopO2xldCBuPVF3O24ub3JpZ2luPXQsYS5jbG9uZSh0aGlzLl9wbGFuZS5ub3JtYWwsbi5kaXJlY3Rpb24pO2xldCBvPXlvLnJheVBsYW5lKG4sdGhpcy5fcGxhbmUsb2QpO20obyl8fChhLm5lZ2F0ZShuLmRpcmVjdGlvbixuLmRpcmVjdGlvbiksbz15by5yYXlQbGFuZShuLHRoaXMuX3BsYW5lLG9kKSk7bGV0IHI9YS5zdWJ0cmFjdChvLHRoaXMuX29yaWdpbixvKSxpPWEuZG90KHRoaXMuX3hBeGlzLHIpLHM9YS5kb3QodGhpcy5feUF4aXMscik7cmV0dXJuIGUueD1pLGUueT1zLGV9O2xpLnByb3RvdHlwZS5wcm9qZWN0UG9pbnRzVG9OZWFyZXN0T25QbGFuZT1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgiY2FydGVzaWFucyIsdCksbShlKXx8KGU9W10pO2xldCBuPXQubGVuZ3RoO2UubGVuZ3RoPW47Zm9yKGxldCBvPTA7bzxuO28rKyllW29dPXRoaXMucHJvamVjdFBvaW50VG9OZWFyZXN0T25QbGFuZSh0W29dLGVbb10pO3JldHVybiBlfTtUTj1uZXcgYTtsaS5wcm90b3R5cGUucHJvamVjdFBvaW50T250b0VsbGlwc29pZD1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgiY2FydGVzaWFuIix0KSxtKGUpfHwoZT1uZXcgYSk7bGV0IG49dGhpcy5fZWxsaXBzb2lkLG89dGhpcy5fb3JpZ2luLHI9dGhpcy5feEF4aXMsaT10aGlzLl95QXhpcyxzPVROO3JldHVybiBhLm11bHRpcGx5QnlTY2FsYXIocix0LngscyksZT1hLmFkZChvLHMsZSksYS5tdWx0aXBseUJ5U2NhbGFyKGksdC55LHMpLGEuYWRkKGUscyxlKSxuLnNjYWxlVG9HZW9jZW50cmljU3VyZmFjZShlLGUpLGV9O2xpLnByb3RvdHlwZS5wcm9qZWN0UG9pbnRzT250b0VsbGlwc29pZD1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgiY2FydGVzaWFucyIsdCk7bGV0IG49dC5sZW5ndGg7bShlKT9lLmxlbmd0aD1uOmU9bmV3IEFycmF5KG4pO2ZvcihsZXQgbz0wO288bjsrK28pZVtvXT10aGlzLnByb2plY3RQb2ludE9udG9FbGxpcHNvaWQodFtvXSxlW29dKTtyZXR1cm4gZX07QW89bGl9KTtmdW5jdGlvbiBCZSh0LGUpe3RoaXMuY2VudGVyPWEuY2xvbmUodD8/YS5aRVJPKSx0aGlzLmhhbGZBeGVzPVouY2xvbmUoZT8/Wi5aRVJPKX1mdW5jdGlvbiBKdyh0LGUsbixvLHIsaSxzLGYsdSxjLGwpe2lmKCFtKHIpfHwhbShpKXx8IW0ocyl8fCFtKGYpfHwhbSh1KXx8IW0oYykpdGhyb3cgbmV3IEQoImFsbCBleHRlbnRzIChtaW5pbXVtL21heGltdW0gWC9ZL1opIGFyZSByZXF1aXJlZC4iKTttKGwpfHwobD1uZXcgQmUpO2xldCBwPWwuaGFsZkF4ZXM7Wi5zZXRDb2x1bW4ocCwwLGUscCksWi5zZXRDb2x1bW4ocCwxLG4scCksWi5zZXRDb2x1bW4ocCwyLG8scCk7bGV0IGQ9clQ7ZC54PShyK2kpLzIsZC55PShzK2YpLzIsZC56PSh1K2MpLzI7bGV0IGg9Tk47aC54PShpLXIpLzIsaC55PShmLXMpLzIsaC56PShjLXUpLzI7bGV0IF89bC5jZW50ZXI7cmV0dXJuIGQ9Wi5tdWx0aXBseUJ5VmVjdG9yKHAsZCxkKSxhLmFkZCh0LGQsXyksWi5tdWx0aXBseUJ5U2NhbGUocCxoLHApLGx9dmFyIE9OLEVOLFJOLFNOLHhOLENOLFBOLE1OLHJULE5OLHRULElOLHZOLEZOLExOLEROLEJOLFVOLGVULGtOLG5ULEdOLFZOLHpOLGpOLEhOLHFOLEtOLFdOLFhOLFlOLCROLFpOLFFOLEpOLHRJLGlULHNULGNULGVJLG9ULG5JLG9JLHJJLGlJLHNJLGNJLGFJLGZJLENvLGRhPSQoKCk9Pnt2ZSgpO2tlKCk7RHQoKTtJZSgpO1d0KCk7ZnQoKTtIdCgpOyR0KCk7cGEoKTtWcygpO1dsKCk7S3QoKTtVbigpO2tuKCk7dXMoKTtUbigpO0JlLnBhY2tlZExlbmd0aD1hLnBhY2tlZExlbmd0aCtaLnBhY2tlZExlbmd0aDtCZS5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkseS5kZWZpbmVkKCJhcnJheSIsZSksbj1uPz8wLGEucGFjayh0LmNlbnRlcixlLG4pLFoucGFjayh0LmhhbGZBeGVzLGUsbithLnBhY2tlZExlbmd0aCksZX07QmUudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS5kZWZpbmVkKCJhcnJheSIsdCksZT1lPz8wLG0obil8fChuPW5ldyBCZSksYS51bnBhY2sodCxlLG4uY2VudGVyKSxaLnVucGFjayh0LGUrYS5wYWNrZWRMZW5ndGgsbi5oYWxmQXhlcyksbn07T049bmV3IGEsRU49bmV3IGEsUk49bmV3IGEsU049bmV3IGEseE49bmV3IGEsQ049bmV3IGEsUE49bmV3IFosTU49e3VuaXRhcnk6bmV3IFosZGlhZ29uYWw6bmV3IFp9O0JlLmZyb21Qb2ludHM9ZnVuY3Rpb24odCxlKXtpZihtKGUpfHwoZT1uZXcgQmUpLCFtKHQpfHx0Lmxlbmd0aD09PTApcmV0dXJuIGUuaGFsZkF4ZXM9Wi5aRVJPLGUuY2VudGVyPWEuWkVSTyxlO2xldCBuLG89dC5sZW5ndGgscj1hLmNsb25lKHRbMF0sT04pO2ZvcihuPTE7bjxvO24rKylhLmFkZChyLHRbbl0scik7bGV0IGk9MS9vO2EubXVsdGlwbHlCeVNjYWxhcihyLGkscik7bGV0IHM9MCxmPTAsdT0wLGM9MCxsPTAscD0wLGQ7Zm9yKG49MDtuPG87bisrKWQ9YS5zdWJ0cmFjdCh0W25dLHIsRU4pLHMrPWQueCpkLngsZis9ZC54KmQueSx1Kz1kLngqZC56LGMrPWQueSpkLnksbCs9ZC55KmQueixwKz1kLnoqZC56O3MqPWksZio9aSx1Kj1pLGMqPWksbCo9aSxwKj1pO2xldCBoPVBOO2hbMF09cyxoWzFdPWYsaFsyXT11LGhbM109ZixoWzRdPWMsaFs1XT1sLGhbNl09dSxoWzddPWwsaFs4XT1wO2xldCBfPVouY29tcHV0ZUVpZ2VuRGVjb21wb3NpdGlvbihoLE1OKSxnPVouY2xvbmUoXy51bml0YXJ5LGUuaGFsZkF4ZXMpLGI9Wi5nZXRDb2x1bW4oZywwLFNOKSx3PVouZ2V0Q29sdW1uKGcsMSx4TiksTz1aLmdldENvbHVtbihnLDIsQ04pLEU9LU51bWJlci5NQVhfVkFMVUUsVD0tTnVtYmVyLk1BWF9WQUxVRSx4PS1OdW1iZXIuTUFYX1ZBTFVFLE09TnVtYmVyLk1BWF9WQUxVRSxOPU51bWJlci5NQVhfVkFMVUUsRj1OdW1iZXIuTUFYX1ZBTFVFO2ZvcihuPTA7bjxvO24rKylkPXRbbl0sRT1NYXRoLm1heChhLmRvdChiLGQpLEUpLFQ9TWF0aC5tYXgoYS5kb3QodyxkKSxUKSx4PU1hdGgubWF4KGEuZG90KE8sZCkseCksTT1NYXRoLm1pbihhLmRvdChiLGQpLE0pLE49TWF0aC5taW4oYS5kb3QodyxkKSxOKSxGPU1hdGgubWluKGEuZG90KE8sZCksRik7Yj1hLm11bHRpcGx5QnlTY2FsYXIoYiwuNSooTStFKSxiKSx3PWEubXVsdGlwbHlCeVNjYWxhcih3LC41KihOK1QpLHcpLE89YS5tdWx0aXBseUJ5U2NhbGFyKE8sLjUqKEYreCksTyk7bGV0IEk9YS5hZGQoYix3LGUuY2VudGVyKTthLmFkZChJLE8sSSk7bGV0IHY9Uk47cmV0dXJuIHYueD1FLU0sdi55PVQtTix2Lno9eC1GLGEubXVsdGlwbHlCeVNjYWxhcih2LC41LHYpLFoubXVsdGlwbHlCeVNjYWxlKGUuaGFsZkF4ZXMsdixlLmhhbGZBeGVzKSxlfTtyVD1uZXcgYSxOTj1uZXcgYTt0VD1uZXcgY3QsSU49bmV3IGEsdk49bmV3IGN0LEZOPW5ldyBjdCxMTj1uZXcgY3QsRE49bmV3IGN0LEJOPW5ldyBjdCxVTj1uZXcgYSxlVD1uZXcgYSxrTj1uZXcgYSxuVD1uZXcgYSxHTj1uZXcgYSxWTj1uZXcgSix6Tj1uZXcgSixqTj1uZXcgSixITj1uZXcgSixxTj1uZXcgSixLTj1uZXcgYSxXTj1uZXcgYSxYTj1uZXcgYSxZTj1uZXcgYSwkTj1uZXcgSixaTj1uZXcgYSxRTj1uZXcgYSxKTj1uZXcgYSx0ST1uZXcgb24oYS5VTklUX1gsMCk7QmUuZnJvbVJlY3RhbmdsZT1mdW5jdGlvbih0LGUsbixvLHIpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJyZWN0YW5nbGUgaXMgcmVxdWlyZWQiKTtpZih0LndpZHRoPDB8fHQud2lkdGg+UC5UV09fUEkpdGhyb3cgbmV3IEQoIlJlY3RhbmdsZSB3aWR0aCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMiAqIHBpIik7aWYodC5oZWlnaHQ8MHx8dC5oZWlnaHQ+UC5QSSl0aHJvdyBuZXcgRCgiUmVjdGFuZ2xlIGhlaWdodCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgcGkiKTtpZihtKG8pJiYhUC5lcXVhbHNFcHNpbG9uKG8ucmFkaWkueCxvLnJhZGlpLnksUC5FUFNJTE9OMTUpKXRocm93IG5ldyBEKCJFbGxpcHNvaWQgbXVzdCBiZSBhbiBlbGxpcHNvaWQgb2YgcmV2b2x1dGlvbiAocmFkaWkueCA9PSByYWRpaS55KSIpO2U9ZT8/MCxuPW4/PzAsbz1vPz9ZLmRlZmF1bHQ7bGV0IGkscyxmLHUsYyxsLHA7aWYodC53aWR0aDw9UC5QSSl7bGV0IE49TnQuY2VudGVyKHQsdFQpLEY9by5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihOLElOKSxJPW5ldyBBbyhGLG8pO3A9SS5wbGFuZTtsZXQgdj1OLmxvbmdpdHVkZSxCPXQuc291dGg8MCYmdC5ub3J0aD4wPzA6Ti5sYXRpdHVkZSxBPWN0LmZyb21SYWRpYW5zKHYsdC5ub3J0aCxuLHZOKSxTPWN0LmZyb21SYWRpYW5zKHQud2VzdCx0Lm5vcnRoLG4sRk4pLEM9Y3QuZnJvbVJhZGlhbnModC53ZXN0LEIsbixMTiksTD1jdC5mcm9tUmFkaWFucyh0Lndlc3QsdC5zb3V0aCxuLEROKSx6PWN0LmZyb21SYWRpYW5zKHYsdC5zb3V0aCxuLEJOKSxqPW8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oQSxVTiksaz1vLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKFMsZVQpLHE9by5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihDLGtOKSxXPW8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oTCxuVCksUj1vLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKHosR04pLG50PUkucHJvamVjdFBvaW50VG9OZWFyZXN0T25QbGFuZShqLFZOKSxhdD1JLnByb2plY3RQb2ludFRvTmVhcmVzdE9uUGxhbmUoayx6TiksbHQ9SS5wcm9qZWN0UG9pbnRUb05lYXJlc3RPblBsYW5lKHEsak4pLF90PUkucHJvamVjdFBvaW50VG9OZWFyZXN0T25QbGFuZShXLEhOKSxvdD1JLnByb2plY3RQb2ludFRvTmVhcmVzdE9uUGxhbmUoUixxTik7cmV0dXJuIGk9TWF0aC5taW4oYXQueCxsdC54LF90LngpLHM9LWksdT1NYXRoLm1heChhdC55LG50LnkpLGY9TWF0aC5taW4oX3QueSxvdC55KSxTLmhlaWdodD1MLmhlaWdodD1lLGs9by5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihTLGVUKSxXPW8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oTCxuVCksYz1NYXRoLm1pbihvbi5nZXRQb2ludERpc3RhbmNlKHAsayksb24uZ2V0UG9pbnREaXN0YW5jZShwLFcpKSxsPW4sSncoSS5vcmlnaW4sSS54QXhpcyxJLnlBeGlzLEkuekF4aXMsaSxzLGYsdSxjLGwscil9bGV0IGQ9dC5zb3V0aD4wLGg9dC5ub3J0aDwwLF89ZD90LnNvdXRoOmg/dC5ub3J0aDowLGc9TnQuY2VudGVyKHQsdFQpLmxvbmdpdHVkZSxiPWEuZnJvbVJhZGlhbnMoZyxfLG4sbyxLTik7Yi56PTA7bGV0IE89TWF0aC5hYnMoYi54KTxQLkVQU0lMT04xMCYmTWF0aC5hYnMoYi55KTxQLkVQU0lMT04xMD9hLlVOSVRfWDphLm5vcm1hbGl6ZShiLFdOKSxFPWEuVU5JVF9aLFQ9YS5jcm9zcyhPLEUsWE4pO3A9b24uZnJvbVBvaW50Tm9ybWFsKGIsTyx0SSk7bGV0IHg9YS5mcm9tUmFkaWFucyhnK1AuUElfT1ZFUl9UV08sXyxuLG8sWU4pO3M9YS5kb3Qob24ucHJvamVjdFBvaW50T250b1BsYW5lKHAseCwkTiksVCksaT0tcyx1PWEuZnJvbVJhZGlhbnMoMCx0Lm5vcnRoLGg/ZTpuLG8sWk4pLnosZj1hLmZyb21SYWRpYW5zKDAsdC5zb3V0aCxkP2U6bixvLFFOKS56O2xldCBNPWEuZnJvbVJhZGlhbnModC5lYXN0LF8sbixvLEpOKTtyZXR1cm4gYz1vbi5nZXRQb2ludERpc3RhbmNlKHAsTSksbD0wLEp3KGIsVCxFLE8saSxzLGYsdSxjLGwscil9O0JlLmZyb21UcmFuc2Zvcm1hdGlvbj1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInRyYW5zZm9ybWF0aW9uIix0KSxtKGUpfHwoZT1uZXcgQmUpLGUuY2VudGVyPXN0LmdldFRyYW5zbGF0aW9uKHQsZS5jZW50ZXIpLGUuaGFsZkF4ZXM9c3QuZ2V0TWF0cml4Myh0LGUuaGFsZkF4ZXMpLGUuaGFsZkF4ZXM9Wi5tdWx0aXBseUJ5U2NhbGFyKGUuaGFsZkF4ZXMsLjUsZS5oYWxmQXhlcyksZX07QmUuY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpPyhhLmNsb25lKHQuY2VudGVyLGUuY2VudGVyKSxaLmNsb25lKHQuaGFsZkF4ZXMsZS5oYWxmQXhlcyksZSk6bmV3IEJlKHQuY2VudGVyLHQuaGFsZkF4ZXMpfTtCZS5pbnRlcnNlY3RQbGFuZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJib3ggaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoInBsYW5lIGlzIHJlcXVpcmVkLiIpO2xldCBuPXQuY2VudGVyLG89ZS5ub3JtYWwscj10LmhhbGZBeGVzLGk9by54LHM9by55LGY9by56LHU9TWF0aC5hYnMoaSpyW1ouQ09MVU1OMFJPVzBdK3MqcltaLkNPTFVNTjBST1cxXStmKnJbWi5DT0xVTU4wUk9XMl0pK01hdGguYWJzKGkqcltaLkNPTFVNTjFST1cwXStzKnJbWi5DT0xVTU4xUk9XMV0rZipyW1ouQ09MVU1OMVJPVzJdKStNYXRoLmFicyhpKnJbWi5DT0xVTU4yUk9XMF0rcypyW1ouQ09MVU1OMlJPVzFdK2YqcltaLkNPTFVNTjJST1cyXSksYz1hLmRvdChvLG4pK2UuZGlzdGFuY2U7cmV0dXJuIGM8PS11P1NuLk9VVFNJREU6Yz49dT9Tbi5JTlNJREU6U24uSU5URVJTRUNUSU5HfTtpVD1uZXcgYSxzVD1uZXcgYSxjVD1uZXcgYSxlST1uZXcgYSxvVD1uZXcgYSxuST1uZXcgYTtCZS5kaXN0YW5jZVNxdWFyZWRUbz1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJib3ggaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImNhcnRlc2lhbiBpcyByZXF1aXJlZC4iKTtsZXQgbj1hLnN1YnRyYWN0KGUsdC5jZW50ZXIsclQpLG89dC5oYWxmQXhlcyxyPVouZ2V0Q29sdW1uKG8sMCxpVCksaT1aLmdldENvbHVtbihvLDEsc1QpLHM9Wi5nZXRDb2x1bW4obywyLGNUKSxmPWEubWFnbml0dWRlKHIpLHU9YS5tYWduaXR1ZGUoaSksYz1hLm1hZ25pdHVkZShzKSxsPSEwLHA9ITAsZD0hMDtmPjA/YS5kaXZpZGVCeVNjYWxhcihyLGYscik6bD0hMSx1PjA/YS5kaXZpZGVCeVNjYWxhcihpLHUsaSk6cD0hMSxjPjA/YS5kaXZpZGVCeVNjYWxhcihzLGMscyk6ZD0hMTtsZXQgaD0hbCshcCshZCxfLGcsYjtpZihoPT09MSl7bGV0IFQ9cjtfPWksZz1zLHA/ZHx8KFQ9cyxnPXIpOihUPWksXz1yKSxiPWEuY3Jvc3MoXyxnLG9UKSxUPT09cj9yPWI6VD09PWk/aT1iOlQ9PT1zJiYocz1iKX1lbHNlIGlmKGg9PT0yKXtfPXIscD9fPWk6ZCYmKF89cyk7bGV0IFQ9YS5VTklUX1k7VC5lcXVhbHNFcHNpbG9uKF8sUC5FUFNJTE9OMykmJihUPWEuVU5JVF9YKSxnPWEuY3Jvc3MoXyxULGVJKSxhLm5vcm1hbGl6ZShnLGcpLGI9YS5jcm9zcyhfLGcsb1QpLGEubm9ybWFsaXplKGIsYiksXz09PXI/KGk9ZyxzPWIpOl89PT1pPyhzPWcscj1iKTpfPT09cyYmKHI9ZyxpPWIpfWVsc2UgaD09PTMmJihyPWEuVU5JVF9YLGk9YS5VTklUX1kscz1hLlVOSVRfWik7bGV0IHc9bkk7dy54PWEuZG90KG4sciksdy55PWEuZG90KG4saSksdy56PWEuZG90KG4scyk7bGV0IE89MCxFO3JldHVybiB3Lng8LWY/KEU9dy54K2YsTys9RSpFKTp3Lng+ZiYmKEU9dy54LWYsTys9RSpFKSx3Lnk8LXU/KEU9dy55K3UsTys9RSpFKTp3Lnk+dSYmKEU9dy55LXUsTys9RSpFKSx3Lno8LWM/KEU9dy56K2MsTys9RSpFKTp3Lno+YyYmKEU9dy56LWMsTys9RSpFKSxPfTtvST1uZXcgYSxyST1uZXcgYTtCZS5jb21wdXRlUGxhbmVEaXN0YW5jZXM9ZnVuY3Rpb24odCxlLG4sbyl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImJveCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgicG9zaXRpb24gaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoImRpcmVjdGlvbiBpcyByZXF1aXJlZC4iKTttKG8pfHwobz1uZXcgSnIpO2xldCByPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxpPU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxzPXQuY2VudGVyLGY9dC5oYWxmQXhlcyx1PVouZ2V0Q29sdW1uKGYsMCxpVCksYz1aLmdldENvbHVtbihmLDEsc1QpLGw9Wi5nZXRDb2x1bW4oZiwyLGNUKSxwPWEuYWRkKHUsYyxvSSk7YS5hZGQocCxsLHApLGEuYWRkKHAscyxwKTtsZXQgZD1hLnN1YnRyYWN0KHAsZSxySSksaD1hLmRvdChuLGQpO3JldHVybiByPU1hdGgubWluKGgsciksaT1NYXRoLm1heChoLGkpLGEuYWRkKHMsdSxwKSxhLmFkZChwLGMscCksYS5zdWJ0cmFjdChwLGwscCksYS5zdWJ0cmFjdChwLGUsZCksaD1hLmRvdChuLGQpLHI9TWF0aC5taW4oaCxyKSxpPU1hdGgubWF4KGgsaSksYS5hZGQocyx1LHApLGEuc3VidHJhY3QocCxjLHApLGEuYWRkKHAsbCxwKSxhLnN1YnRyYWN0KHAsZSxkKSxoPWEuZG90KG4sZCkscj1NYXRoLm1pbihoLHIpLGk9TWF0aC5tYXgoaCxpKSxhLmFkZChzLHUscCksYS5zdWJ0cmFjdChwLGMscCksYS5zdWJ0cmFjdChwLGwscCksYS5zdWJ0cmFjdChwLGUsZCksaD1hLmRvdChuLGQpLHI9TWF0aC5taW4oaCxyKSxpPU1hdGgubWF4KGgsaSksYS5zdWJ0cmFjdChzLHUscCksYS5hZGQocCxjLHApLGEuYWRkKHAsbCxwKSxhLnN1YnRyYWN0KHAsZSxkKSxoPWEuZG90KG4sZCkscj1NYXRoLm1pbihoLHIpLGk9TWF0aC5tYXgoaCxpKSxhLnN1YnRyYWN0KHMsdSxwKSxhLmFkZChwLGMscCksYS5zdWJ0cmFjdChwLGwscCksYS5zdWJ0cmFjdChwLGUsZCksaD1hLmRvdChuLGQpLHI9TWF0aC5taW4oaCxyKSxpPU1hdGgubWF4KGgsaSksYS5zdWJ0cmFjdChzLHUscCksYS5zdWJ0cmFjdChwLGMscCksYS5hZGQocCxsLHApLGEuc3VidHJhY3QocCxlLGQpLGg9YS5kb3QobixkKSxyPU1hdGgubWluKGgsciksaT1NYXRoLm1heChoLGkpLGEuc3VidHJhY3Qocyx1LHApLGEuc3VidHJhY3QocCxjLHApLGEuc3VidHJhY3QocCxsLHApLGEuc3VidHJhY3QocCxlLGQpLGg9YS5kb3QobixkKSxyPU1hdGgubWluKGgsciksaT1NYXRoLm1heChoLGkpLG8uc3RhcnQ9cixvLnN0b3A9aSxvfTtpST1uZXcgYSxzST1uZXcgYSxjST1uZXcgYTtCZS5jb21wdXRlQ29ybmVycz1mdW5jdGlvbih0LGUpe3kudHlwZU9mLm9iamVjdCgiYm94Iix0KSxtKGUpfHwoZT1bbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGEsbmV3IGFdKTtsZXQgbj10LmNlbnRlcixvPXQuaGFsZkF4ZXMscj1aLmdldENvbHVtbihvLDAsaUkpLGk9Wi5nZXRDb2x1bW4obywxLHNJKSxzPVouZ2V0Q29sdW1uKG8sMixjSSk7cmV0dXJuIGEuY2xvbmUobixlWzBdKSxhLnN1YnRyYWN0KGVbMF0scixlWzBdKSxhLnN1YnRyYWN0KGVbMF0saSxlWzBdKSxhLnN1YnRyYWN0KGVbMF0scyxlWzBdKSxhLmNsb25lKG4sZVsxXSksYS5zdWJ0cmFjdChlWzFdLHIsZVsxXSksYS5zdWJ0cmFjdChlWzFdLGksZVsxXSksYS5hZGQoZVsxXSxzLGVbMV0pLGEuY2xvbmUobixlWzJdKSxhLnN1YnRyYWN0KGVbMl0scixlWzJdKSxhLmFkZChlWzJdLGksZVsyXSksYS5zdWJ0cmFjdChlWzJdLHMsZVsyXSksYS5jbG9uZShuLGVbM10pLGEuc3VidHJhY3QoZVszXSxyLGVbM10pLGEuYWRkKGVbM10saSxlWzNdKSxhLmFkZChlWzNdLHMsZVszXSksYS5jbG9uZShuLGVbNF0pLGEuYWRkKGVbNF0scixlWzRdKSxhLnN1YnRyYWN0KGVbNF0saSxlWzRdKSxhLnN1YnRyYWN0KGVbNF0scyxlWzRdKSxhLmNsb25lKG4sZVs1XSksYS5hZGQoZVs1XSxyLGVbNV0pLGEuc3VidHJhY3QoZVs1XSxpLGVbNV0pLGEuYWRkKGVbNV0scyxlWzVdKSxhLmNsb25lKG4sZVs2XSksYS5hZGQoZVs2XSxyLGVbNl0pLGEuYWRkKGVbNl0saSxlWzZdKSxhLnN1YnRyYWN0KGVbNl0scyxlWzZdKSxhLmNsb25lKG4sZVs3XSksYS5hZGQoZVs3XSxyLGVbN10pLGEuYWRkKGVbN10saSxlWzddKSxhLmFkZChlWzddLHMsZVs3XSksZX07YUk9bmV3IFo7QmUuY29tcHV0ZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQsZSl7eS50eXBlT2Yub2JqZWN0KCJib3giLHQpLG0oZSl8fChlPW5ldyBzdCk7bGV0IG49dC5jZW50ZXIsbz1aLm11bHRpcGx5QnlVbmlmb3JtU2NhbGUodC5oYWxmQXhlcywyLGFJKTtyZXR1cm4gc3QuZnJvbVJvdGF0aW9uVHJhbnNsYXRpb24obyxuLGUpfTtmST1uZXcgQXQ7QmUuaXNPY2NsdWRlZD1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJib3ggaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoIm9jY2x1ZGVyIGlzIHJlcXVpcmVkLiIpO2xldCBuPUF0LmZyb21PcmllbnRlZEJvdW5kaW5nQm94KHQsZkkpO3JldHVybiFlLmlzQm91bmRpbmdTcGhlcmVWaXNpYmxlKG4pfTtCZS5wcm90b3R5cGUuaW50ZXJzZWN0UGxhbmU9ZnVuY3Rpb24odCl7cmV0dXJuIEJlLmludGVyc2VjdFBsYW5lKHRoaXMsdCl9O0JlLnByb3RvdHlwZS5kaXN0YW5jZVNxdWFyZWRUbz1mdW5jdGlvbih0KXtyZXR1cm4gQmUuZGlzdGFuY2VTcXVhcmVkVG8odGhpcyx0KX07QmUucHJvdG90eXBlLmNvbXB1dGVQbGFuZURpc3RhbmNlcz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIEJlLmNvbXB1dGVQbGFuZURpc3RhbmNlcyh0aGlzLHQsZSxuKX07QmUucHJvdG90eXBlLmNvbXB1dGVDb3JuZXJzPWZ1bmN0aW9uKHQpe3JldHVybiBCZS5jb21wdXRlQ29ybmVycyh0aGlzLHQpfTtCZS5wcm90b3R5cGUuY29tcHV0ZVRyYW5zZm9ybWF0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBCZS5jb21wdXRlVHJhbnNmb3JtYXRpb24odGhpcyx0KX07QmUucHJvdG90eXBlLmlzT2NjbHVkZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIEJlLmlzT2NjbHVkZWQodGhpcyx0KX07QmUuZXF1YWxzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PT1lfHxtKHQpJiZtKGUpJiZhLmVxdWFscyh0LmNlbnRlcixlLmNlbnRlcikmJlouZXF1YWxzKHQuaGFsZkF4ZXMsZS5oYWxmQXhlcyl9O0JlLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gQmUuY2xvbmUodGhpcyx0KX07QmUucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gQmUuZXF1YWxzKHRoaXMsdCl9O0NvPUJlfSk7ZnVuY3Rpb24gcFQodCxlLG4sbyxyKXtsZXQgaT1hLnN1YnRyYWN0KHQsZSx1SSkscz1hLmRvdChuLGkpLGY9YS5kb3QobyxpKTtyZXR1cm4gSi5mcm9tRWxlbWVudHMocyxmLHIpfXZhciBNZix1SSxhVCxmVCx1VCxsVCxtYSxJMD0kKCgpPT57a2UoKTtEdCgpO1d0KCk7VW4oKTtkYSgpO01mPXt9LHVJPW5ldyBhLGFUPW5ldyBhLGZUPW5ldyBhLHVUPW5ldyBhLGxUPW5ldyBDbztNZi52YWxpZE91dGxpbmU9ZnVuY3Rpb24odCl7eS5kZWZpbmVkKCJwb3NpdGlvbnMiLHQpO2xldCBuPUNvLmZyb21Qb2ludHModCxsVCkuaGFsZkF4ZXMsbz1aLmdldENvbHVtbihuLDAsYVQpLHI9Wi5nZXRDb2x1bW4obiwxLGZUKSxpPVouZ2V0Q29sdW1uKG4sMix1VCkscz1hLm1hZ25pdHVkZShvKSxmPWEubWFnbml0dWRlKHIpLHU9YS5tYWduaXR1ZGUoaSk7cmV0dXJuIShzPT09MCYmKGY9PT0wfHx1PT09MCl8fGY9PT0wJiZ1PT09MCl9O01mLmNvbXB1dGVQcm9qZWN0VG8yREFyZ3VtZW50cz1mdW5jdGlvbih0LGUsbixvKXt5LmRlZmluZWQoInBvc2l0aW9ucyIsdCkseS5kZWZpbmVkKCJjZW50ZXJSZXN1bHQiLGUpLHkuZGVmaW5lZCgicGxhbmVBeGlzMVJlc3VsdCIsbikseS5kZWZpbmVkKCJwbGFuZUF4aXMyUmVzdWx0IixvKTtsZXQgcj1Dby5mcm9tUG9pbnRzKHQsbFQpLGk9ci5oYWxmQXhlcyxzPVouZ2V0Q29sdW1uKGksMCxhVCksZj1aLmdldENvbHVtbihpLDEsZlQpLHU9Wi5nZXRDb2x1bW4oaSwyLHVUKSxjPWEubWFnbml0dWRlKHMpLGw9YS5tYWduaXR1ZGUoZikscD1hLm1hZ25pdHVkZSh1KSxkPU1hdGgubWluKGMsbCxwKTtpZihjPT09MCYmKGw9PT0wfHxwPT09MCl8fGw9PT0wJiZwPT09MClyZXR1cm4hMTtsZXQgaCxfO3JldHVybihkPT09bHx8ZD09PXApJiYoaD1zKSxkPT09Yz9oPWY6ZD09PXAmJihfPWYpLChkPT09Y3x8ZD09PWwpJiYoXz11KSxhLm5vcm1hbGl6ZShoLG4pLGEubm9ybWFsaXplKF8sbyksYS5jbG9uZShyLmNlbnRlcixlKSwhMH07TWYuY3JlYXRlUHJvamVjdFBvaW50c1RvMkRGdW5jdGlvbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKG8pe2xldCByPW5ldyBBcnJheShvLmxlbmd0aCk7Zm9yKGxldCBpPTA7aTxvLmxlbmd0aDtpKyspcltpXT1wVChvW2ldLHQsZSxuKTtyZXR1cm4gcn19O01mLmNyZWF0ZVByb2plY3RQb2ludFRvMkRGdW5jdGlvbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGZ1bmN0aW9uKG8scil7cmV0dXJuIHBUKG8sdCxlLG4scil9fTttYT1NZn0pO3ZhciBsSSxoZSx1Yz0kKCgpPT57bEk9e05PTkU6MCxHRU9ERVNJQzoxLFJIVU1COjJ9LGhlPU9iamVjdC5mcmVlemUobEkpfSk7ZnVuY3Rpb24gRjAodCxlLG4pe2lmKHQ9PT0wKXJldHVybiBlKm47bGV0IG89dCp0LHI9bypvLGk9cipvLHM9aSpvLGY9cypvLHU9ZipvLGM9bixsPU1hdGguc2luKDIqYykscD1NYXRoLnNpbig0KmMpLGQ9TWF0aC5zaW4oNipjKSxoPU1hdGguc2luKDgqYyksXz1NYXRoLnNpbigxMCpjKSxnPU1hdGguc2luKDEyKmMpO3JldHVybiBlKigoMS1vLzQtMypyLzY0LTUqaS8yNTYtMTc1KnMvMTYzODQtNDQxKmYvNjU1MzYtNDg1MSp1LzEwNDg1NzYpKmMtKDMqby84KzMqci8zMis0NSppLzEwMjQrMTA1KnMvNDA5NisyMjA1KmYvMTMxMDcyKzYyMzcqdS81MjQyODgpKmwrKDE1KnIvMjU2KzQ1KmkvMTAyNCs1MjUqcy8xNjM4NCsxNTc1KmYvNjU1MzYrMTU1OTI1KnUvODM4ODYwOCkqcC0oMzUqaS8zMDcyKzE3NSpzLzEyMjg4KzM2NzUqZi8yNjIxNDQrMTM0NzUqdS8xMDQ4NTc2KSpkKygzMTUqcy8xMzEwNzIrMjIwNSpmLzUyNDI4OCs0MzY1OSp1LzgzODg2MDgpKmgtKDY5MypmLzEzMTA3MjArNjIzNyp1LzUyNDI4ODApKl8rMTAwMSp1LzgzODg2MDgqZyl9ZnVuY3Rpb24gcEkodCxlLG4pe2xldCBvPXQvbjtpZihlPT09MClyZXR1cm4gbztsZXQgcj1vKm8saT1yKm8scz1pKm8sZj1lLHU9ZipmLGM9dSp1LGw9Yyp1LHA9bCp1LGQ9cCp1LGg9ZCp1LF89TWF0aC5zaW4oMipvKSxnPU1hdGguY29zKDIqbyksYj1NYXRoLnNpbig0Km8pLHc9TWF0aC5jb3MoNCpvKSxPPU1hdGguc2luKDYqbyksRT1NYXRoLmNvcyg2Km8pLFQ9TWF0aC5zaW4oOCpvKSx4PU1hdGguY29zKDgqbyksTT1NYXRoLnNpbigxMCpvKSxOPU1hdGguY29zKDEwKm8pLEY9TWF0aC5zaW4oMTIqbyk7cmV0dXJuIG8rbyp1LzQrNypvKmMvNjQrMTUqbypsLzI1Nis1NzkqbypwLzE2Mzg0KzE1MTUqbypkLzY1NTM2KzE2ODM3Km8qaC8xMDQ4NTc2KygzKm8qYy8xNis0NSpvKmwvMjU2LW8qKDMyKnItNTYxKSpwLzQwOTYtbyooMjMyKnItMTY3NykqZC8xNjM4NCtvKigzOTk5ODUtOTA1NjAqcis1MTIqcykqaC81MjQyODgwKSpnKygyMSpvKmwvMjU2KzQ4MypvKnAvNDA5Ni1vKigyMjQqci0xOTY5KSpkLzE2Mzg0LW8qKDMzMTUyKnItMTEyNTk5KSpoLzEwNDg1NzYpKncrKDE1MSpvKnAvNDA5Nis0NjgxKm8qZC82NTUzNisxNDc5Km8qaC8xNjM4NC00NTMqaSpoLzMyNzY4KSpFKygxMDk3Km8qZC82NTUzNis0Mjc4MypvKmgvMTA0ODU3NikqeCs4MDExKm8qaC8xMDQ4NTc2Kk4rKDMqdS84KzMqYy8xNisyMTMqbC8yMDQ4LTMqcipsLzY0KzI1NSpwLzQwOTYtMzMqcipwLzUxMisyMDg2MSpkLzUyNDI4OC0zMypyKmQvNTEyK3MqZC8xMDI0KzI4MjczKmgvMTA0ODU3Ni00NzEqcipoLzgxOTIrOSpzKmgvNDA5NikqXysoMjEqYy8yNTYrMjEqbC8yNTYrNTMzKnAvODE5Mi0yMSpyKnAvNTEyKzE5NypkLzQwOTYtMzE1KnIqZC80MDk2KzU4NDAzOSpoLzE2Nzc3MjE2LTEyNTE3KnIqaC8xMzEwNzIrNypzKmgvMjA0OCkqYisoMTUxKmwvNjE0NCsxNTEqcC80MDk2KzUwMTkqZC8xMzEwNzItNDUzKnIqZC8xNjM4NCsyNjk2NSpoLzc4NjQzMi04NjA3KnIqaC8xMzEwNzIpKk8rKDEwOTcqcC8xMzEwNzIrMTA5NypkLzY1NTM2KzIyNTc5NypoLzEwNDg1NzYwLTEwOTcqcipoLzY1NTM2KSpUKyg4MDExKmQvMjYyMTQ0MCs4MDExKmgvMTA0ODU3NikqTSsyOTMzOTMqaC8yNTE2NTgyNDAqRn1mdW5jdGlvbiBoYSh0LGUpe2lmKHQ9PT0wKXJldHVybiBNYXRoLmxvZyhNYXRoLnRhbiguNSooUC5QSV9PVkVSX1RXTytlKSkpO2xldCBuPXQqTWF0aC5zaW4oZSk7cmV0dXJuIE1hdGgubG9nKE1hdGgudGFuKC41KihQLlBJX09WRVJfVFdPK2UpKSktdC8yKk1hdGgubG9nKCgxK24pLygxLW4pKX1mdW5jdGlvbiBkSSh0LGUsbixvLHIpe2xldCBpPWhhKHQuX2VsbGlwdGljaXR5LG4pLHM9aGEodC5fZWxsaXB0aWNpdHkscik7cmV0dXJuIE1hdGguYXRhbjIoUC5uZWdhdGl2ZVBpVG9QaShvLWUpLHMtaSl9ZnVuY3Rpb24gbUkodCxlLG4sbyxyLGkscyl7bGV0IGY9dC5faGVhZGluZyx1PWktbyxjPTA7aWYoUC5lcXVhbHNFcHNpbG9uKE1hdGguYWJzKGYpLFAuUElfT1ZFUl9UV08sUC5FUFNJTE9OOCkpaWYoZT09PW4pYz1lKk1hdGguY29zKHIpKlAubmVnYXRpdmVQaVRvUGkodSk7ZWxzZXtsZXQgbD1NYXRoLnNpbihyKTtjPWUqTWF0aC5jb3MocikqUC5uZWdhdGl2ZVBpVG9QaSh1KS9NYXRoLnNxcnQoMS10Ll9lbGxpcHRpY2l0eVNxdWFyZWQqbCpsKX1lbHNle2xldCBsPUYwKHQuX2VsbGlwdGljaXR5LGUscik7Yz0oRjAodC5fZWxsaXB0aWNpdHksZSxzKS1sKS9NYXRoLmNvcyhmKX1yZXR1cm4gTWF0aC5hYnMoYyl9ZnVuY3Rpb24gZFQodCxlLG4sbyl7bGV0IHI9YS5ub3JtYWxpemUoby5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihlLHYwKSxoSSksaT1hLm5vcm1hbGl6ZShvLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKG4sdjApLHYwKTt5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygidmFsdWUiLE1hdGguYWJzKE1hdGguYWJzKGEuYW5nbGVCZXR3ZWVuKHIsaSkpLU1hdGguUEkpLC4wMTI1KTtsZXQgcz1vLm1heGltdW1SYWRpdXMsZj1vLm1pbmltdW1SYWRpdXMsdT1zKnMsYz1mKmY7dC5fZWxsaXB0aWNpdHlTcXVhcmVkPSh1LWMpL3UsdC5fZWxsaXB0aWNpdHk9TWF0aC5zcXJ0KHQuX2VsbGlwdGljaXR5U3F1YXJlZCksdC5fc3RhcnQ9Y3QuY2xvbmUoZSx0Ll9zdGFydCksdC5fc3RhcnQuaGVpZ2h0PTAsdC5fZW5kPWN0LmNsb25lKG4sdC5fZW5kKSx0Ll9lbmQuaGVpZ2h0PTAsdC5faGVhZGluZz1kSSh0LGUubG9uZ2l0dWRlLGUubGF0aXR1ZGUsbi5sb25naXR1ZGUsbi5sYXRpdHVkZSksdC5fZGlzdGFuY2U9bUkodCxvLm1heGltdW1SYWRpdXMsby5taW5pbXVtUmFkaXVzLGUubG9uZ2l0dWRlLGUubGF0aXR1ZGUsbi5sb25naXR1ZGUsbi5sYXRpdHVkZSl9ZnVuY3Rpb24gbVQodCxlLG4sbyxyLGkpe2lmKG49PT0wKXJldHVybiBjdC5jbG9uZSh0LGkpO2xldCBzPXIqcixmLHUsYztpZihNYXRoLmFicyhQLlBJX09WRVJfVFdPLU1hdGguYWJzKGUpKT5QLkVQU0lMT044KXtsZXQgbD1GMChyLG8sdC5sYXRpdHVkZSkscD1uKk1hdGguY29zKGUpLGQ9bCtwO2lmKHU9cEkoZCxyLG8pLE1hdGguYWJzKGUpPFAuRVBTSUxPTjEwKWY9UC5uZWdhdGl2ZVBpVG9QaSh0LmxvbmdpdHVkZSk7ZWxzZXtsZXQgaD1oYShyLHQubGF0aXR1ZGUpLF89aGEocix1KTtjPU1hdGgudGFuKGUpKihfLWgpLGY9UC5uZWdhdGl2ZVBpVG9QaSh0LmxvbmdpdHVkZStjKX19ZWxzZXt1PXQubGF0aXR1ZGU7bGV0IGw7aWYocj09PTApbD1vKk1hdGguY29zKHQubGF0aXR1ZGUpO2Vsc2V7bGV0IHA9TWF0aC5zaW4odC5sYXRpdHVkZSk7bD1vKk1hdGguY29zKHQubGF0aXR1ZGUpL01hdGguc3FydCgxLXMqcCpwKX1jPW4vbCxlPjA/Zj1QLm5lZ2F0aXZlUGlUb1BpKHQubG9uZ2l0dWRlK2MpOmY9UC5uZWdhdGl2ZVBpVG9QaSh0LmxvbmdpdHVkZS1jKX1yZXR1cm4gbShpKT8oaS5sb25naXR1ZGU9ZixpLmxhdGl0dWRlPXUsaS5oZWlnaHQ9MCxpKTpuZXcgY3QoZix1LDApfWZ1bmN0aW9uIEJpKHQsZSxuKXtsZXQgbz1uPz9ZLmRlZmF1bHQ7dGhpcy5fZWxsaXBzb2lkPW8sdGhpcy5fc3RhcnQ9bmV3IGN0LHRoaXMuX2VuZD1uZXcgY3QsdGhpcy5faGVhZGluZz12b2lkIDAsdGhpcy5fZGlzdGFuY2U9dm9pZCAwLHRoaXMuX2VsbGlwdGljaXR5PXZvaWQgMCx0aGlzLl9lbGxpcHRpY2l0eVNxdWFyZWQ9dm9pZCAwLG0odCkmJm0oZSkmJmRUKHRoaXMsdCxlLG8pfXZhciBoSSx2MCxKbyxOZj0kKCgpPT57RHQoKTtJZSgpO1d0KCk7ZnQoKTtIdCgpOyR0KCk7S3QoKTtoST1uZXcgYSx2MD1uZXcgYTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhCaS5wcm90b3R5cGUse2VsbGlwc29pZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VsbGlwc29pZH19LHN1cmZhY2VEaXN0YW5jZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHkuZGVmaW5lZCgiZGlzdGFuY2UiLHRoaXMuX2Rpc3RhbmNlKSx0aGlzLl9kaXN0YW5jZX19LHN0YXJ0OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc3RhcnR9fSxlbmQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbmR9fSxoZWFkaW5nOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4geS5kZWZpbmVkKCJkaXN0YW5jZSIsdGhpcy5fZGlzdGFuY2UpLHRoaXMuX2hlYWRpbmd9fX0pO0JpLmZyb21TdGFydEhlYWRpbmdEaXN0YW5jZT1mdW5jdGlvbih0LGUsbixvLHIpe3kuZGVmaW5lZCgic3RhcnQiLHQpLHkuZGVmaW5lZCgiaGVhZGluZyIsZSkseS5kZWZpbmVkKCJkaXN0YW5jZSIsbikseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuKCJkaXN0YW5jZSIsbiwwKTtsZXQgaT1vPz9ZLmRlZmF1bHQscz1pLm1heGltdW1SYWRpdXMsZj1pLm1pbmltdW1SYWRpdXMsdT1zKnMsYz1mKmYsbD1NYXRoLnNxcnQoKHUtYykvdSk7ZT1QLm5lZ2F0aXZlUGlUb1BpKGUpO2xldCBwPW1UKHQsZSxuLGkubWF4aW11bVJhZGl1cyxsKTtyZXR1cm4hbShyKXx8bShvKSYmIW8uZXF1YWxzKHIuZWxsaXBzb2lkKT9uZXcgQmkodCxwLGkpOihyLnNldEVuZFBvaW50cyh0LHApLHIpfTtCaS5wcm90b3R5cGUuc2V0RW5kUG9pbnRzPWZ1bmN0aW9uKHQsZSl7eS5kZWZpbmVkKCJzdGFydCIsdCkseS5kZWZpbmVkKCJlbmQiLGUpLGRUKHRoaXMsdCxlLHRoaXMuX2VsbGlwc29pZCl9O0JpLnByb3RvdHlwZS5pbnRlcnBvbGF0ZVVzaW5nRnJhY3Rpb249ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZVVzaW5nU3VyZmFjZURpc3RhbmNlKHQqdGhpcy5fZGlzdGFuY2UsZSl9O0JpLnByb3RvdHlwZS5pbnRlcnBvbGF0ZVVzaW5nU3VyZmFjZURpc3RhbmNlPWZ1bmN0aW9uKHQsZSl7aWYoeS50eXBlT2YubnVtYmVyKCJkaXN0YW5jZSIsdCksIW0odGhpcy5fZGlzdGFuY2UpfHx0aGlzLl9kaXN0YW5jZT09PTApdGhyb3cgbmV3IEQoIkVsbGlwc29pZFJodW1iTGluZSBtdXN0IGhhdmUgZGlzdGluY3Qgc3RhcnQgYW5kIGVuZCBzZXQuIik7cmV0dXJuIG1UKHRoaXMuX3N0YXJ0LHRoaXMuX2hlYWRpbmcsdCx0aGlzLl9lbGxpcHNvaWQubWF4aW11bVJhZGl1cyx0aGlzLl9lbGxpcHRpY2l0eSxlKX07QmkucHJvdG90eXBlLmZpbmRJbnRlcnNlY3Rpb25XaXRoTG9uZ2l0dWRlPWZ1bmN0aW9uKHQsZSl7aWYoeS50eXBlT2YubnVtYmVyKCJpbnRlcnNlY3Rpb25Mb25naXR1ZGUiLHQpLCFtKHRoaXMuX2Rpc3RhbmNlKXx8dGhpcy5fZGlzdGFuY2U9PT0wKXRocm93IG5ldyBEKCJFbGxpcHNvaWRSaHVtYkxpbmUgbXVzdCBoYXZlIGRpc3RpbmN0IHN0YXJ0IGFuZCBlbmQgc2V0LiIpO2xldCBuPXRoaXMuX2VsbGlwdGljaXR5LG89dGhpcy5faGVhZGluZyxyPU1hdGguYWJzKG8pLGk9dGhpcy5fc3RhcnQ7aWYodD1QLm5lZ2F0aXZlUGlUb1BpKHQpLFAuZXF1YWxzRXBzaWxvbihNYXRoLmFicyh0KSxNYXRoLlBJLFAuRVBTSUxPTjE0KSYmKHQ9UC5zaWduKGkubG9uZ2l0dWRlKSpNYXRoLlBJKSxtKGUpfHwoZT1uZXcgY3QpLE1hdGguYWJzKFAuUElfT1ZFUl9UV08tcik8PVAuRVBTSUxPTjgpcmV0dXJuIGUubG9uZ2l0dWRlPXQsZS5sYXRpdHVkZT1pLmxhdGl0dWRlLGUuaGVpZ2h0PTAsZTtpZihQLmVxdWFsc0Vwc2lsb24oTWF0aC5hYnMoUC5QSV9PVkVSX1RXTy1yKSxQLlBJX09WRVJfVFdPLFAuRVBTSUxPTjgpKXJldHVybiBQLmVxdWFsc0Vwc2lsb24odCxpLmxvbmdpdHVkZSxQLkVQU0lMT04xMik/dm9pZCAwOihlLmxvbmdpdHVkZT10LGUubGF0aXR1ZGU9UC5QSV9PVkVSX1RXTypQLnNpZ24oUC5QSV9PVkVSX1RXTy1vKSxlLmhlaWdodD0wLGUpO2xldCBzPWkubGF0aXR1ZGUsZj1uKk1hdGguc2luKHMpLHU9TWF0aC50YW4oLjUqKFAuUElfT1ZFUl9UV08rcykpKk1hdGguZXhwKCh0LWkubG9uZ2l0dWRlKS9NYXRoLnRhbihvKSksYz0oMStmKS8oMS1mKSxsPWkubGF0aXR1ZGUscDtkb3twPWw7bGV0IGQ9bipNYXRoLnNpbihwKSxoPSgxK2QpLygxLWQpO2w9MipNYXRoLmF0YW4odSpNYXRoLnBvdyhoL2Msbi8yKSktUC5QSV9PVkVSX1RXT313aGlsZSghUC5lcXVhbHNFcHNpbG9uKGwscCxQLkVQU0lMT04xMikpO3JldHVybiBlLmxvbmdpdHVkZT10LGUubGF0aXR1ZGU9bCxlLmhlaWdodD0wLGV9O0JpLnByb3RvdHlwZS5maW5kSW50ZXJzZWN0aW9uV2l0aExhdGl0dWRlPWZ1bmN0aW9uKHQsZSl7aWYoeS50eXBlT2YubnVtYmVyKCJpbnRlcnNlY3Rpb25MYXRpdHVkZSIsdCksIW0odGhpcy5fZGlzdGFuY2UpfHx0aGlzLl9kaXN0YW5jZT09PTApdGhyb3cgbmV3IEQoIkVsbGlwc29pZFJodW1iTGluZSBtdXN0IGhhdmUgZGlzdGluY3Qgc3RhcnQgYW5kIGVuZCBzZXQuIik7bGV0IG49dGhpcy5fZWxsaXB0aWNpdHksbz10aGlzLl9oZWFkaW5nLHI9dGhpcy5fc3RhcnQ7aWYoUC5lcXVhbHNFcHNpbG9uKE1hdGguYWJzKG8pLFAuUElfT1ZFUl9UV08sUC5FUFNJTE9OOCkpcmV0dXJuO2xldCBpPWhhKG4sci5sYXRpdHVkZSkscz1oYShuLHQpLGY9TWF0aC50YW4obykqKHMtaSksdT1QLm5lZ2F0aXZlUGlUb1BpKHIubG9uZ2l0dWRlK2YpO3JldHVybiBtKGUpPyhlLmxvbmdpdHVkZT11LGUubGF0aXR1ZGU9dCxlLmhlaWdodD0wLGUpOm5ldyBjdCh1LHQsMCl9O0pvPUJpfSk7ZnVuY3Rpb24gX0kodCxlKXt0aGlzLnBvc2l0aW9ucz1tKHQpP3Q6W10sdGhpcy5ob2xlcz1tKGUpP2U6W119dmFyIGhULF9UPSQoKCk9PntmdCgpO2hUPV9JfSk7ZnVuY3Rpb24gQjAodCxlLG49Mil7bGV0IG89ZSYmZS5sZW5ndGgscj1vP2VbMF0qbjp0Lmxlbmd0aCxpPWdUKHQsMCxyLG4sITApLHM9W107aWYoIWl8fGkubmV4dD09PWkucHJldilyZXR1cm4gcztsZXQgZix1LGM7aWYobyYmKGk9d0kodCxlLGksbikpLHQubGVuZ3RoPjgwKm4pe2Y9dFswXSx1PXRbMV07bGV0IGw9ZixwPXU7Zm9yKGxldCBkPW47ZDxyO2QrPW4pe2xldCBoPXRbZF0sXz10W2QrMV07aDxmJiYoZj1oKSxfPHUmJih1PV8pLGg+bCYmKGw9aCksXz5wJiYocD1fKX1jPU1hdGgubWF4KGwtZixwLXUpLGM9YyE9PTA/MzI3NjcvYzowfXJldHVybiB2ZihpLHMsbixmLHUsYywwKSxzfWZ1bmN0aW9uIGdUKHQsZSxuLG8scil7bGV0IGk7aWYocj09PUlJKHQsZSxuLG8pPjApZm9yKGxldCBzPWU7czxuO3MrPW8paT15VChzL298MCx0W3NdLHRbcysxXSxpKTtlbHNlIGZvcihsZXQgcz1uLW87cz49ZTtzLT1vKWk9eVQocy9vfDAsdFtzXSx0W3MrMV0saSk7cmV0dXJuIGkmJl9hKGksaS5uZXh0KSYmKExmKGkpLGk9aS5uZXh0KSxpfWZ1bmN0aW9uIGxjKHQsZSl7aWYoIXQpcmV0dXJuIHQ7ZXx8KGU9dCk7bGV0IG49dCxvO2RvIGlmKG89ITEsIW4uc3RlaW5lciYmKF9hKG4sbi5uZXh0KXx8dm4obi5wcmV2LG4sbi5uZXh0KT09PTApKXtpZihMZihuKSxuPWU9bi5wcmV2LG49PT1uLm5leHQpYnJlYWs7bz0hMH1lbHNlIG49bi5uZXh0O3doaWxlKG98fG4hPT1lKTtyZXR1cm4gZX1mdW5jdGlvbiB2Zih0LGUsbixvLHIsaSxzKXtpZighdClyZXR1cm47IXMmJmkmJlNJKHQsbyxyLGkpO2xldCBmPXQ7Zm9yKDt0LnByZXYhPT10Lm5leHQ7KXtsZXQgdT10LnByZXYsYz10Lm5leHQ7aWYoaT9nSSh0LG8scixpKTp5SSh0KSl7ZS5wdXNoKHUuaSx0LmksYy5pKSxMZih0KSx0PWMubmV4dCxmPWMubmV4dDtjb250aW51ZX1pZih0PWMsdD09PWYpe3M/cz09PTE/KHQ9QUkobGModCksZSksdmYodCxlLG4sbyxyLGksMikpOnM9PT0yJiZiSSh0LGUsbixvLHIsaSk6dmYobGModCksZSxuLG8scixpLDEpO2JyZWFrfX19ZnVuY3Rpb24geUkodCl7bGV0IGU9dC5wcmV2LG49dCxvPXQubmV4dDtpZih2bihlLG4sbyk+PTApcmV0dXJuITE7bGV0IHI9ZS54LGk9bi54LHM9by54LGY9ZS55LHU9bi55LGM9by55LGw9TWF0aC5taW4ocixpLHMpLHA9TWF0aC5taW4oZix1LGMpLGQ9TWF0aC5tYXgocixpLHMpLGg9TWF0aC5tYXgoZix1LGMpLF89by5uZXh0O2Zvcig7XyE9PWU7KXtpZihfLng+PWwmJl8ueDw9ZCYmXy55Pj1wJiZfLnk8PWgmJklmKHIsZixpLHUscyxjLF8ueCxfLnkpJiZ2bihfLnByZXYsXyxfLm5leHQpPj0wKXJldHVybiExO189Xy5uZXh0fXJldHVybiEwfWZ1bmN0aW9uIGdJKHQsZSxuLG8pe2xldCByPXQucHJldixpPXQscz10Lm5leHQ7aWYodm4ocixpLHMpPj0wKXJldHVybiExO2xldCBmPXIueCx1PWkueCxjPXMueCxsPXIueSxwPWkueSxkPXMueSxoPU1hdGgubWluKGYsdSxjKSxfPU1hdGgubWluKGwscCxkKSxnPU1hdGgubWF4KGYsdSxjKSxiPU1hdGgubWF4KGwscCxkKSx3PUwwKGgsXyxlLG4sbyksTz1MMChnLGIsZSxuLG8pLEU9dC5wcmV2WixUPXQubmV4dFo7Zm9yKDtFJiZFLno+PXcmJlQmJlQuejw9Tzspe2lmKEUueD49aCYmRS54PD1nJiZFLnk+PV8mJkUueTw9YiYmRSE9PXImJkUhPT1zJiZJZihmLGwsdSxwLGMsZCxFLngsRS55KSYmdm4oRS5wcmV2LEUsRS5uZXh0KT49MHx8KEU9RS5wcmV2WixULng+PWgmJlQueDw9ZyYmVC55Pj1fJiZULnk8PWImJlQhPT1yJiZUIT09cyYmSWYoZixsLHUscCxjLGQsVC54LFQueSkmJnZuKFQucHJldixULFQubmV4dCk+PTApKXJldHVybiExO1Q9VC5uZXh0Wn1mb3IoO0UmJkUuej49dzspe2lmKEUueD49aCYmRS54PD1nJiZFLnk+PV8mJkUueTw9YiYmRSE9PXImJkUhPT1zJiZJZihmLGwsdSxwLGMsZCxFLngsRS55KSYmdm4oRS5wcmV2LEUsRS5uZXh0KT49MClyZXR1cm4hMTtFPUUucHJldlp9Zm9yKDtUJiZULno8PU87KXtpZihULng+PWgmJlQueDw9ZyYmVC55Pj1fJiZULnk8PWImJlQhPT1yJiZUIT09cyYmSWYoZixsLHUscCxjLGQsVC54LFQueSkmJnZuKFQucHJldixULFQubmV4dCk+PTApcmV0dXJuITE7VD1ULm5leHRafXJldHVybiEwfWZ1bmN0aW9uIEFJKHQsZSl7bGV0IG49dDtkb3tsZXQgbz1uLnByZXYscj1uLm5leHQubmV4dDshX2EobyxyKSYmYlQobyxuLG4ubmV4dCxyKSYmRmYobyxyKSYmRmYocixvKSYmKGUucHVzaChvLmksbi5pLHIuaSksTGYobiksTGYobi5uZXh0KSxuPXQ9ciksbj1uLm5leHR9d2hpbGUobiE9PXQpO3JldHVybiBsYyhuKX1mdW5jdGlvbiBiSSh0LGUsbixvLHIsaSl7bGV0IHM9dDtkb3tsZXQgZj1zLm5leHQubmV4dDtmb3IoO2YhPT1zLnByZXY7KXtpZihzLmkhPT1mLmkmJlBJKHMsZikpe2xldCB1PXdUKHMsZik7cz1sYyhzLHMubmV4dCksdT1sYyh1LHUubmV4dCksdmYocyxlLG4sbyxyLGksMCksdmYodSxlLG4sbyxyLGksMCk7cmV0dXJufWY9Zi5uZXh0fXM9cy5uZXh0fXdoaWxlKHMhPT10KX1mdW5jdGlvbiB3SSh0LGUsbixvKXtsZXQgcj1bXTtmb3IobGV0IGk9MCxzPWUubGVuZ3RoO2k8cztpKyspe2xldCBmPWVbaV0qbyx1PWk8cy0xP2VbaSsxXSpvOnQubGVuZ3RoLGM9Z1QodCxmLHUsbywhMSk7Yz09PWMubmV4dCYmKGMuc3RlaW5lcj0hMCksci5wdXNoKENJKGMpKX1yLnNvcnQoVEkpO2ZvcihsZXQgaT0wO2k8ci5sZW5ndGg7aSsrKW49T0kocltpXSxuKTtyZXR1cm4gbn1mdW5jdGlvbiBUSSh0LGUpe2xldCBuPXQueC1lLng7aWYobj09PTAmJihuPXQueS1lLnksbj09PTApKXtsZXQgbz0odC5uZXh0LnktdC55KS8odC5uZXh0LngtdC54KSxyPShlLm5leHQueS1lLnkpLyhlLm5leHQueC1lLngpO249by1yfXJldHVybiBufWZ1bmN0aW9uIE9JKHQsZSl7bGV0IG49RUkodCxlKTtpZighbilyZXR1cm4gZTtsZXQgbz13VChuLHQpO3JldHVybiBsYyhvLG8ubmV4dCksbGMobixuLm5leHQpfWZ1bmN0aW9uIEVJKHQsZSl7bGV0IG49ZSxvPXQueCxyPXQueSxpPS0xLzAscztpZihfYSh0LG4pKXJldHVybiBuO2Rve2lmKF9hKHQsbi5uZXh0KSlyZXR1cm4gbi5uZXh0O2lmKHI8PW4ueSYmcj49bi5uZXh0LnkmJm4ubmV4dC55IT09bi55KXtsZXQgcD1uLngrKHItbi55KSoobi5uZXh0Lngtbi54KS8obi5uZXh0Lnktbi55KTtpZihwPD1vJiZwPmkmJihpPXAscz1uLng8bi5uZXh0Lng/bjpuLm5leHQscD09PW8pKXJldHVybiBzfW49bi5uZXh0fXdoaWxlKG4hPT1lKTtpZighcylyZXR1cm4gbnVsbDtsZXQgZj1zLHU9cy54LGM9cy55LGw9MS8wO249cztkb3tpZihvPj1uLngmJm4ueD49dSYmbyE9PW4ueCYmQVQocjxjP286aSxyLHUsYyxyPGM/aTpvLHIsbi54LG4ueSkpe2xldCBwPU1hdGguYWJzKHItbi55KS8oby1uLngpO0ZmKG4sdCkmJihwPGx8fHA9PT1sJiYobi54PnMueHx8bi54PT09cy54JiZSSShzLG4pKSkmJihzPW4sbD1wKX1uPW4ubmV4dH13aGlsZShuIT09Zik7cmV0dXJuIHN9ZnVuY3Rpb24gUkkodCxlKXtyZXR1cm4gdm4odC5wcmV2LHQsZS5wcmV2KTwwJiZ2bihlLm5leHQsdCx0Lm5leHQpPDB9ZnVuY3Rpb24gU0kodCxlLG4sbyl7bGV0IHI9dDtkbyByLno9PT0wJiYoci56PUwwKHIueCxyLnksZSxuLG8pKSxyLnByZXZaPXIucHJldixyLm5leHRaPXIubmV4dCxyPXIubmV4dDt3aGlsZShyIT09dCk7ci5wcmV2Wi5uZXh0Wj1udWxsLHIucHJldlo9bnVsbCx4SShyKX1mdW5jdGlvbiB4SSh0KXtsZXQgZSxuPTE7ZG97bGV0IG89dCxyO3Q9bnVsbDtsZXQgaT1udWxsO2ZvcihlPTA7bzspe2UrKztsZXQgcz1vLGY9MDtmb3IobGV0IGM9MDtjPG4mJihmKysscz1zLm5leHRaLCEhcyk7YysrKTtsZXQgdT1uO2Zvcig7Zj4wfHx1PjAmJnM7KWYhPT0wJiYodT09PTB8fCFzfHxvLno8PXMueik/KHI9byxvPW8ubmV4dFosZi0tKToocj1zLHM9cy5uZXh0Wix1LS0pLGk/aS5uZXh0Wj1yOnQ9cixyLnByZXZaPWksaT1yO289c31pLm5leHRaPW51bGwsbio9Mn13aGlsZShlPjEpO3JldHVybiB0fWZ1bmN0aW9uIEwwKHQsZSxuLG8scil7cmV0dXJuIHQ9KHQtbikqcnwwLGU9KGUtbykqcnwwLHQ9KHR8dDw8OCkmMTY3MTE5MzUsdD0odHx0PDw0KSYyNTI2NDUxMzUsdD0odHx0PDwyKSY4NTg5OTM0NTksdD0odHx0PDwxKSYxNDMxNjU1NzY1LGU9KGV8ZTw8OCkmMTY3MTE5MzUsZT0oZXxlPDw0KSYyNTI2NDUxMzUsZT0oZXxlPDwyKSY4NTg5OTM0NTksZT0oZXxlPDwxKSYxNDMxNjU1NzY1LHR8ZTw8MX1mdW5jdGlvbiBDSSh0KXtsZXQgZT10LG49dDtkbyhlLng8bi54fHxlLng9PT1uLngmJmUueTxuLnkpJiYobj1lKSxlPWUubmV4dDt3aGlsZShlIT09dCk7cmV0dXJuIG59ZnVuY3Rpb24gQVQodCxlLG4sbyxyLGkscyxmKXtyZXR1cm4oci1zKSooZS1mKT49KHQtcykqKGktZikmJih0LXMpKihvLWYpPj0obi1zKSooZS1mKSYmKG4tcykqKGktZik+PShyLXMpKihvLWYpfWZ1bmN0aW9uIElmKHQsZSxuLG8scixpLHMsZil7cmV0dXJuISh0PT09cyYmZT09PWYpJiZBVCh0LGUsbixvLHIsaSxzLGYpfWZ1bmN0aW9uIFBJKHQsZSl7cmV0dXJuIHQubmV4dC5pIT09ZS5pJiZ0LnByZXYuaSE9PWUuaSYmIU1JKHQsZSkmJihGZih0LGUpJiZGZihlLHQpJiZOSSh0LGUpJiYodm4odC5wcmV2LHQsZS5wcmV2KXx8dm4odCxlLnByZXYsZSkpfHxfYSh0LGUpJiZ2bih0LnByZXYsdCx0Lm5leHQpPjAmJnZuKGUucHJldixlLGUubmV4dCk+MCl9ZnVuY3Rpb24gdm4odCxlLG4pe3JldHVybihlLnktdC55KSoobi54LWUueCktKGUueC10LngpKihuLnktZS55KX1mdW5jdGlvbiBfYSh0LGUpe3JldHVybiB0Lng9PT1lLngmJnQueT09PWUueX1mdW5jdGlvbiBiVCh0LGUsbixvKXtsZXQgcj1pZCh2bih0LGUsbikpLGk9aWQodm4odCxlLG8pKSxzPWlkKHZuKG4sbyx0KSksZj1pZCh2bihuLG8sZSkpO3JldHVybiEhKHIhPT1pJiZzIT09Znx8cj09PTAmJnJkKHQsbixlKXx8aT09PTAmJnJkKHQsbyxlKXx8cz09PTAmJnJkKG4sdCxvKXx8Zj09PTAmJnJkKG4sZSxvKSl9ZnVuY3Rpb24gcmQodCxlLG4pe3JldHVybiBlLng8PU1hdGgubWF4KHQueCxuLngpJiZlLng+PU1hdGgubWluKHQueCxuLngpJiZlLnk8PU1hdGgubWF4KHQueSxuLnkpJiZlLnk+PU1hdGgubWluKHQueSxuLnkpfWZ1bmN0aW9uIGlkKHQpe3JldHVybiB0PjA/MTp0PDA/LTE6MH1mdW5jdGlvbiBNSSh0LGUpe2xldCBuPXQ7ZG97aWYobi5pIT09dC5pJiZuLm5leHQuaSE9PXQuaSYmbi5pIT09ZS5pJiZuLm5leHQuaSE9PWUuaSYmYlQobixuLm5leHQsdCxlKSlyZXR1cm4hMDtuPW4ubmV4dH13aGlsZShuIT09dCk7cmV0dXJuITF9ZnVuY3Rpb24gRmYodCxlKXtyZXR1cm4gdm4odC5wcmV2LHQsdC5uZXh0KTwwP3ZuKHQsZSx0Lm5leHQpPj0wJiZ2bih0LHQucHJldixlKT49MDp2bih0LGUsdC5wcmV2KTwwfHx2bih0LHQubmV4dCxlKTwwfWZ1bmN0aW9uIE5JKHQsZSl7bGV0IG49dCxvPSExLHI9KHQueCtlLngpLzIsaT0odC55K2UueSkvMjtkbyBuLnk+aSE9bi5uZXh0Lnk+aSYmbi5uZXh0LnkhPT1uLnkmJnI8KG4ubmV4dC54LW4ueCkqKGktbi55KS8obi5uZXh0Lnktbi55KStuLngmJihvPSFvKSxuPW4ubmV4dDt3aGlsZShuIT09dCk7cmV0dXJuIG99ZnVuY3Rpb24gd1QodCxlKXtsZXQgbj1EMCh0LmksdC54LHQueSksbz1EMChlLmksZS54LGUueSkscj10Lm5leHQsaT1lLnByZXY7cmV0dXJuIHQubmV4dD1lLGUucHJldj10LG4ubmV4dD1yLHIucHJldj1uLG8ubmV4dD1uLG4ucHJldj1vLGkubmV4dD1vLG8ucHJldj1pLG99ZnVuY3Rpb24geVQodCxlLG4sbyl7bGV0IHI9RDAodCxlLG4pO3JldHVybiBvPyhyLm5leHQ9by5uZXh0LHIucHJldj1vLG8ubmV4dC5wcmV2PXIsby5uZXh0PXIpOihyLnByZXY9cixyLm5leHQ9cikscn1mdW5jdGlvbiBMZih0KXt0Lm5leHQucHJldj10LnByZXYsdC5wcmV2Lm5leHQ9dC5uZXh0LHQucHJldlomJih0LnByZXZaLm5leHRaPXQubmV4dFopLHQubmV4dFomJih0Lm5leHRaLnByZXZaPXQucHJldlopfWZ1bmN0aW9uIEQwKHQsZSxuKXtyZXR1cm57aTp0LHg6ZSx5Om4scHJldjpudWxsLG5leHQ6bnVsbCx6OjAscHJldlo6bnVsbCxuZXh0WjpudWxsLHN0ZWluZXI6ITF9fWZ1bmN0aW9uIElJKHQsZSxuLG8pe2xldCByPTA7Zm9yKGxldCBpPWUscz1uLW87aTxuO2krPW8pcis9KHRbc10tdFtpXSkqKHRbaSsxXSt0W3MrMV0pLHM9aTtyZXR1cm4gcn12YXIgVFQ9JCgoKT0+e30pO3ZhciBzZCxQbyxwYz0kKCgpPT57WnMoKTtzZD17Q0xPQ0tXSVNFOkZ0LkNXLENPVU5URVJfQ0xPQ0tXSVNFOkZ0LkNDV307c2QudmFsaWRhdGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1zZC5DTE9DS1dJU0V8fHQ9PT1zZC5DT1VOVEVSX0NMT0NLV0lTRX07UG89T2JqZWN0LmZyZWV6ZShzZCl9KTt2YXIgdkksRkkscHMsU1QseFQsQ1QsT1QsRVQsUlQsVWksUFQsTVQsTlQseWEsTEksREksQkksVTAsUGUsS3I9JCgoKT0+e1RUKCk7a2UoKTtEdCgpO0llKCk7V3QoKTtEZSgpO2Z0KCk7JHQoKTtOZigpO1llKCk7JGUoKTtLdCgpO3RuKCk7cGMoKTt2ST1uZXcgYSxGST1uZXcgYSxwcz17fTtwcy5jb21wdXRlQXJlYTJEPWZ1bmN0aW9uKHQpe3kuZGVmaW5lZCgicG9zaXRpb25zIix0KSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygicG9zaXRpb25zLmxlbmd0aCIsdC5sZW5ndGgsMyk7bGV0IGU9dC5sZW5ndGgsbj0wO2ZvcihsZXQgbz1lLTEscj0wO3I8ZTtvPXIrKyl7bGV0IGk9dFtvXSxzPXRbcl07bis9aS54KnMueS1zLngqaS55fXJldHVybiBuKi41fTtwcy5jb21wdXRlV2luZGluZ09yZGVyMkQ9ZnVuY3Rpb24odCl7cmV0dXJuIHBzLmNvbXB1dGVBcmVhMkQodCk+MD9Qby5DT1VOVEVSX0NMT0NLV0lTRTpQby5DTE9DS1dJU0V9O3BzLnRyaWFuZ3VsYXRlPWZ1bmN0aW9uKHQsZSl7eS5kZWZpbmVkKCJwb3NpdGlvbnMiLHQpO2xldCBuPUoucGFja0FycmF5KHQpO3JldHVybiBCMChuLGUsMil9O1NUPW5ldyBhLHhUPW5ldyBhLENUPW5ldyBhLE9UPW5ldyBhLEVUPW5ldyBhLFJUPW5ldyBhLFVpPW5ldyBhLFBUPW5ldyBKLE1UPW5ldyBKLE5UPW5ldyBKLHlhPW5ldyBKO3BzLmNvbXB1dGVTdWJkaXZpc2lvbj1mdW5jdGlvbih0LGUsbixvLHIpe3I9cj8/UC5SQURJQU5TX1BFUl9ERUdSRUU7bGV0IGk9bShvKTt5LnR5cGVPZi5vYmplY3QoImVsbGlwc29pZCIsdCkseS5kZWZpbmVkKCJwb3NpdGlvbnMiLGUpLHkuZGVmaW5lZCgiaW5kaWNlcyIsbikseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGljZXMubGVuZ3RoIixuLmxlbmd0aCwzKSx5LnR5cGVPZi5udW1iZXIuZXF1YWxzKCJpbmRpY2VzLmxlbmd0aCAlIDMiLCIwIixuLmxlbmd0aCUzLDApLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbigiZ3JhbnVsYXJpdHkiLHIsMCk7bGV0IHM9bi5zbGljZSgwKSxmLHU9ZS5sZW5ndGgsYz1uZXcgQXJyYXkodSozKSxsPW5ldyBBcnJheSh1KjIpLHA9MCxkPTA7Zm9yKGY9MDtmPHU7ZisrKXtsZXQgRT1lW2ZdO2lmKGNbcCsrXT1FLngsY1twKytdPUUueSxjW3ArK109RS56LGkpe2xldCBUPW9bZl07bFtkKytdPVQueCxsW2QrK109VC55fX1sZXQgaD1bXSxfPXt9LGc9dC5tYXhpbXVtUmFkaXVzLGI9UC5jaG9yZExlbmd0aChyLGcpLHc9YipiO2Zvcig7cy5sZW5ndGg+MDspe2xldCBFPXMucG9wKCksVD1zLnBvcCgpLHg9cy5wb3AoKSxNPWEuZnJvbUFycmF5KGMseCozLFNUKSxOPWEuZnJvbUFycmF5KGMsVCozLHhUKSxGPWEuZnJvbUFycmF5KGMsRSozLENUKSxJLHYsQjtpJiYoST1KLmZyb21BcnJheShsLHgqMixQVCksdj1KLmZyb21BcnJheShsLFQqMixNVCksQj1KLmZyb21BcnJheShsLEUqMixOVCkpO2xldCBBPWEubXVsdGlwbHlCeVNjYWxhcihhLm5vcm1hbGl6ZShNLE9UKSxnLE9UKSxTPWEubXVsdGlwbHlCeVNjYWxhcihhLm5vcm1hbGl6ZShOLEVUKSxnLEVUKSxDPWEubXVsdGlwbHlCeVNjYWxhcihhLm5vcm1hbGl6ZShGLFJUKSxnLFJUKSxMPWEubWFnbml0dWRlU3F1YXJlZChhLnN1YnRyYWN0KEEsUyxVaSkpLHo9YS5tYWduaXR1ZGVTcXVhcmVkKGEuc3VidHJhY3QoUyxDLFVpKSksaj1hLm1hZ25pdHVkZVNxdWFyZWQoYS5zdWJ0cmFjdChDLEEsVWkpKSxrPU1hdGgubWF4KEwseixqKSxxLFcsUjtrPnc/TD09PWs/KHE9YCR7TWF0aC5taW4oeCxUKX0gJHtNYXRoLm1heCh4LFQpfWAsZj1fW3FdLG0oZil8fChXPWEuYWRkKE0sTixVaSksYS5tdWx0aXBseUJ5U2NhbGFyKFcsLjUsVyksYy5wdXNoKFcueCxXLnksVy56KSxmPWMubGVuZ3RoLzMtMSxfW3FdPWYsaSYmKFI9Si5hZGQoSSx2LHlhKSxKLm11bHRpcGx5QnlTY2FsYXIoUiwuNSxSKSxsLnB1c2goUi54LFIueSkpKSxzLnB1c2goeCxmLEUpLHMucHVzaChmLFQsRSkpOno9PT1rPyhxPWAke01hdGgubWluKFQsRSl9ICR7TWF0aC5tYXgoVCxFKX1gLGY9X1txXSxtKGYpfHwoVz1hLmFkZChOLEYsVWkpLGEubXVsdGlwbHlCeVNjYWxhcihXLC41LFcpLGMucHVzaChXLngsVy55LFcueiksZj1jLmxlbmd0aC8zLTEsX1txXT1mLGkmJihSPUouYWRkKHYsQix5YSksSi5tdWx0aXBseUJ5U2NhbGFyKFIsLjUsUiksbC5wdXNoKFIueCxSLnkpKSkscy5wdXNoKFQsZix4KSxzLnB1c2goZixFLHgpKTpqPT09ayYmKHE9YCR7TWF0aC5taW4oRSx4KX0gJHtNYXRoLm1heChFLHgpfWAsZj1fW3FdLG0oZil8fChXPWEuYWRkKEYsTSxVaSksYS5tdWx0aXBseUJ5U2NhbGFyKFcsLjUsVyksYy5wdXNoKFcueCxXLnksVy56KSxmPWMubGVuZ3RoLzMtMSxfW3FdPWYsaSYmKFI9Si5hZGQoQixJLHlhKSxKLm11bHRpcGx5QnlTY2FsYXIoUiwuNSxSKSxsLnB1c2goUi54LFIueSkpKSxzLnB1c2goRSxmLFQpLHMucHVzaChmLHgsVCkpOihoLnB1c2goeCksaC5wdXNoKFQpLGgucHVzaChFKSl9bGV0IE89e2F0dHJpYnV0ZXM6e3Bvc2l0aW9uOm5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Y30pfSxpbmRpY2VzOmgscHJpbWl0aXZlVHlwZTpCdC5UUklBTkdMRVN9O3JldHVybiBpJiYoTy5hdHRyaWJ1dGVzLnN0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpsfSkpLG5ldyBVdChPKX07TEk9bmV3IGN0LERJPW5ldyBjdCxCST1uZXcgY3QsVTA9bmV3IGN0O3BzLmNvbXB1dGVSaHVtYkxpbmVTdWJkaXZpc2lvbj1mdW5jdGlvbih0LGUsbixvLHIpe3I9cj8/UC5SQURJQU5TX1BFUl9ERUdSRUU7bGV0IGk9bShvKTt5LnR5cGVPZi5vYmplY3QoImVsbGlwc29pZCIsdCkseS5kZWZpbmVkKCJwb3NpdGlvbnMiLGUpLHkuZGVmaW5lZCgiaW5kaWNlcyIsbikseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoImluZGljZXMubGVuZ3RoIixuLmxlbmd0aCwzKSx5LnR5cGVPZi5udW1iZXIuZXF1YWxzKCJpbmRpY2VzLmxlbmd0aCAlIDMiLCIwIixuLmxlbmd0aCUzLDApLHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbigiZ3JhbnVsYXJpdHkiLHIsMCk7bGV0IHM9bi5zbGljZSgwKSxmLHU9ZS5sZW5ndGgsYz1uZXcgQXJyYXkodSozKSxsPW5ldyBBcnJheSh1KjIpLHA9MCxkPTA7Zm9yKGY9MDtmPHU7ZisrKXtsZXQgeD1lW2ZdO2lmKGNbcCsrXT14LngsY1twKytdPXgueSxjW3ArK109eC56LGkpe2xldCBNPW9bZl07bFtkKytdPU0ueCxsW2QrK109TS55fX1sZXQgaD1bXSxfPXt9LGc9dC5tYXhpbXVtUmFkaXVzLGI9UC5jaG9yZExlbmd0aChyLGcpLHc9bmV3IEpvKHZvaWQgMCx2b2lkIDAsdCksTz1uZXcgSm8odm9pZCAwLHZvaWQgMCx0KSxFPW5ldyBKbyh2b2lkIDAsdm9pZCAwLHQpO2Zvcig7cy5sZW5ndGg+MDspe2xldCB4PXMucG9wKCksTT1zLnBvcCgpLE49cy5wb3AoKSxGPWEuZnJvbUFycmF5KGMsTiozLFNUKSxJPWEuZnJvbUFycmF5KGMsTSozLHhUKSx2PWEuZnJvbUFycmF5KGMseCozLENUKSxCLEEsUztpJiYoQj1KLmZyb21BcnJheShsLE4qMixQVCksQT1KLmZyb21BcnJheShsLE0qMixNVCksUz1KLmZyb21BcnJheShsLHgqMixOVCkpO2xldCBDPXQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoRixMSSksTD10LmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKEksREkpLHo9dC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyh2LEJJKTt3LnNldEVuZFBvaW50cyhDLEwpO2xldCBqPXcuc3VyZmFjZURpc3RhbmNlO08uc2V0RW5kUG9pbnRzKEwseik7bGV0IGs9Ty5zdXJmYWNlRGlzdGFuY2U7RS5zZXRFbmRQb2ludHMoeixDKTtsZXQgcT1FLnN1cmZhY2VEaXN0YW5jZSxXPU1hdGgubWF4KGosayxxKSxSLG50LGF0LGx0LF90O1c+Yj9qPT09Vz8oUj1gJHtNYXRoLm1pbihOLE0pfSAke01hdGgubWF4KE4sTSl9YCxmPV9bUl0sbShmKXx8KG50PXcuaW50ZXJwb2xhdGVVc2luZ0ZyYWN0aW9uKC41LFUwKSxhdD0oQy5oZWlnaHQrTC5oZWlnaHQpKi41LGx0PWEuZnJvbVJhZGlhbnMobnQubG9uZ2l0dWRlLG50LmxhdGl0dWRlLGF0LHQsVWkpLGMucHVzaChsdC54LGx0LnksbHQueiksZj1jLmxlbmd0aC8zLTEsX1tSXT1mLGkmJihfdD1KLmFkZChCLEEseWEpLEoubXVsdGlwbHlCeVNjYWxhcihfdCwuNSxfdCksbC5wdXNoKF90LngsX3QueSkpKSxzLnB1c2goTixmLHgpLHMucHVzaChmLE0seCkpOms9PT1XPyhSPWAke01hdGgubWluKE0seCl9ICR7TWF0aC5tYXgoTSx4KX1gLGY9X1tSXSxtKGYpfHwobnQ9Ty5pbnRlcnBvbGF0ZVVzaW5nRnJhY3Rpb24oLjUsVTApLGF0PShMLmhlaWdodCt6LmhlaWdodCkqLjUsbHQ9YS5mcm9tUmFkaWFucyhudC5sb25naXR1ZGUsbnQubGF0aXR1ZGUsYXQsdCxVaSksYy5wdXNoKGx0LngsbHQueSxsdC56KSxmPWMubGVuZ3RoLzMtMSxfW1JdPWYsaSYmKF90PUouYWRkKEEsUyx5YSksSi5tdWx0aXBseUJ5U2NhbGFyKF90LC41LF90KSxsLnB1c2goX3QueCxfdC55KSkpLHMucHVzaChNLGYsTikscy5wdXNoKGYseCxOKSk6cT09PVcmJihSPWAke01hdGgubWluKHgsTil9ICR7TWF0aC5tYXgoeCxOKX1gLGY9X1tSXSxtKGYpfHwobnQ9RS5pbnRlcnBvbGF0ZVVzaW5nRnJhY3Rpb24oLjUsVTApLGF0PSh6LmhlaWdodCtDLmhlaWdodCkqLjUsbHQ9YS5mcm9tUmFkaWFucyhudC5sb25naXR1ZGUsbnQubGF0aXR1ZGUsYXQsdCxVaSksYy5wdXNoKGx0LngsbHQueSxsdC56KSxmPWMubGVuZ3RoLzMtMSxfW1JdPWYsaSYmKF90PUouYWRkKFMsQix5YSksSi5tdWx0aXBseUJ5U2NhbGFyKF90LC41LF90KSxsLnB1c2goX3QueCxfdC55KSkpLHMucHVzaCh4LGYsTSkscy5wdXNoKGYsTixNKSk6KGgucHVzaChOKSxoLnB1c2goTSksaC5wdXNoKHgpKX1sZXQgVD17YXR0cmlidXRlczp7cG9zaXRpb246bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpjfSl9LGluZGljZXM6aCxwcmltaXRpdmVUeXBlOkJ0LlRSSUFOR0xFU307cmV0dXJuIGkmJihULmF0dHJpYnV0ZXMuc3Q9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOmx9KSksbmV3IFV0KFQpfTtwcy5zY2FsZVRvR2VvZGV0aWNIZWlnaHQ9ZnVuY3Rpb24odCxlLG4sbyl7bj1uPz9ZLmRlZmF1bHQ7bGV0IHI9dkksaT1GSTtpZihlPWU/PzAsbz1vPz8hMCxtKHQpKXtsZXQgcz10Lmxlbmd0aDtmb3IobGV0IGY9MDtmPHM7Zis9MylhLmZyb21BcnJheSh0LGYsaSksbyYmKGk9bi5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKGksaSkpLGUhPT0wJiYocj1uLmdlb2RldGljU3VyZmFjZU5vcm1hbChpLHIpLGEubXVsdGlwbHlCeVNjYWxhcihyLGUsciksYS5hZGQoaSxyLGkpKSx0W2ZdPWkueCx0W2YrMV09aS55LHRbZisyXT1pLnp9cmV0dXJuIHR9O1BlPXBzfSk7ZnVuY3Rpb24gZHMoKXt0aGlzLl9hcnJheT1bXSx0aGlzLl9vZmZzZXQ9MCx0aGlzLl9sZW5ndGg9MH12YXIgazAsSVQ9JCgoKT0+e09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGRzLnByb3RvdHlwZSx7bGVuZ3RoOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbGVuZ3RofX19KTtkcy5wcm90b3R5cGUuZW5xdWV1ZT1mdW5jdGlvbih0KXt0aGlzLl9hcnJheS5wdXNoKHQpLHRoaXMuX2xlbmd0aCsrfTtkcy5wcm90b3R5cGUuZGVxdWV1ZT1mdW5jdGlvbigpe2lmKHRoaXMuX2xlbmd0aD09PTApcmV0dXJuO2xldCB0PXRoaXMuX2FycmF5LGU9dGhpcy5fb2Zmc2V0LG49dFtlXTtyZXR1cm4gdFtlXT12b2lkIDAsZSsrLGU+MTAmJmUqMj50Lmxlbmd0aCYmKHRoaXMuX2FycmF5PXQuc2xpY2UoZSksZT0wKSx0aGlzLl9vZmZzZXQ9ZSx0aGlzLl9sZW5ndGgtLSxufTtkcy5wcm90b3R5cGUucGVlaz1mdW5jdGlvbigpe2lmKHRoaXMuX2xlbmd0aCE9PTApcmV0dXJuIHRoaXMuX2FycmF5W3RoaXMuX29mZnNldF19O2RzLnByb3RvdHlwZS5jb250YWlucz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYXJyYXkuaW5kZXhPZih0KSE9PS0xfTtkcy5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLl9hcnJheS5sZW5ndGg9dGhpcy5fb2Zmc2V0PXRoaXMuX2xlbmd0aD0wfTtkcy5wcm90b3R5cGUuc29ydD1mdW5jdGlvbih0KXt0aGlzLl9vZmZzZXQ+MCYmKHRoaXMuX2FycmF5PXRoaXMuX2FycmF5LnNsaWNlKHRoaXMuX29mZnNldCksdGhpcy5fb2Zmc2V0PTApLHRoaXMuX2FycmF5LnNvcnQodCl9O2swPWRzfSk7ZnVuY3Rpb24gTFQodCxlLG4sbyl7cmV0dXJuIEouc3VidHJhY3QoZSx0LGRjKSxKLm11bHRpcGx5QnlTY2FsYXIoZGMsbi9vLGRjKSxKLmFkZCh0LGRjLGRjKSxbZGMueCxkYy55XX1mdW5jdGlvbiBVSSh0LGUsbixvKXtyZXR1cm4gYS5zdWJ0cmFjdChlLHQsbXMpLGEubXVsdGlwbHlCeVNjYWxhcihtcyxuL28sbXMpLGEuYWRkKHQsbXMsbXMpLFttcy54LG1zLnksbXMuel19ZnVuY3Rpb24gS0kodCxlLG4pe2xldCBvPW4uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWModCxhZCkscj1uLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGUsZmQpO2lmKE1hdGguc2lnbihvLmxhdGl0dWRlKT09PU1hdGguc2lnbihyLmxhdGl0dWRlKSlyZXR1cm47Y2Quc2V0RW5kUG9pbnRzKG8scik7bGV0IGk9Y2QuZmluZEludGVyc2VjdGlvbldpdGhMYXRpdHVkZSgwLHFJKTtpZighbShpKSlyZXR1cm47bGV0IHM9TWF0aC5taW4oby5sb25naXR1ZGUsci5sb25naXR1ZGUpLGY9TWF0aC5tYXgoby5sb25naXR1ZGUsci5sb25naXR1ZGUpO2lmKE1hdGguYWJzKGYtcyk+UC5QSSl7bGV0IHU9cztzPWYsZj11fWlmKCEoaS5sb25naXR1ZGU8c3x8aS5sb25naXR1ZGU+ZikpcmV0dXJuIG4uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oaSl9ZnVuY3Rpb24gV0kodCxlLG4sbyl7aWYobz09PWhlLlJIVU1CKXJldHVybiBLSSh0LGUsbik7bGV0IHI9eW8ubGluZVNlZ21lbnRQbGFuZSh0LGUsb24uT1JJR0lOX1hZX1BMQU5FKTtpZihtKHIpKXJldHVybiBuLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UocixyKX1mdW5jdGlvbiBZSSh0LGUsbil7bGV0IG89W10scixpLHMsZix1LGM9MDtmb3IoO2M8dC5sZW5ndGg7KXtyPXRbY10saT10WyhjKzEpJXQubGVuZ3RoXSxzPVAuc2lnbihyLnopLGY9UC5zaWduKGkueik7bGV0IGw9cD0+ZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhwLFhJKS5sb25naXR1ZGU7aWYocz09PTApby5wdXNoKHtwb3NpdGlvbjpjLHR5cGU6cyx2aXNpdGVkOiExLG5leHQ6Zix0aGV0YTpsKHIpfSk7ZWxzZSBpZihmIT09MCl7aWYodT1XSShyLGksZSxuKSwrK2MsIW0odSkpY29udGludWU7dC5zcGxpY2UoYywwLHUpLG8ucHVzaCh7cG9zaXRpb246Yyx0eXBlOnMsdmlzaXRlZDohMSxuZXh0OmYsdGhldGE6bCh1KX0pfSsrY31yZXR1cm4gb31mdW5jdGlvbiBEVCh0LGUsbixvLHIsaSxzKXtsZXQgZj1bXSx1PWksYz1wPT5kPT5kLnBvc2l0aW9uPT09cCxsPVtdO2Rve2xldCBwPW5bdV07Zi5wdXNoKHApO2xldCBkPW8uZmluZEluZGV4KGModSkpLGg9b1tkXTtpZighbShoKSl7Kyt1O2NvbnRpbnVlfWxldHt2aXNpdGVkOl8sdHlwZTpnLG5leHQ6Yn09aDtpZihoLnZpc2l0ZWQ9ITAsZz09PTApe2lmKGI9PT0wKXtsZXQgVD1vW2QtKHM/MTotMSldO2lmKFQ/LnBvc2l0aW9uPT09dSsxKVQudmlzaXRlZD0hMDtlbHNleysrdTtjb250aW51ZX19aWYoIV8mJnMmJmI+MHx8aT09PXUmJiFzJiZiPDApeysrdTtjb250aW51ZX19aWYoIShzP2c+PTA6Zzw9MCkpeysrdTtjb250aW51ZX1ffHxsLnB1c2godSk7bGV0IE89ZCsocz8xOi0xKSxFPW9bT107aWYoIW0oRSkpeysrdTtjb250aW51ZX11PUUucG9zaXRpb259d2hpbGUodTxuLmxlbmd0aCYmdT49MCYmdSE9PWkmJmYubGVuZ3RoPG4ubGVuZ3RoKTt0LnNwbGljZShlLHIsZik7Zm9yKGxldCBwIG9mIGwpZT1EVCh0LCsrZSxuLG8sMCxwLCFzKTtyZXR1cm4gZX12YXIgT24sZGMsbXMsYWQsZmQsa0ksR0ksY2QsVkksekksakksSEkscUksWEksJEksWkksUUksSkksdlQsRlQsdHYsZXYsX2UsRGY9JCgoKT0+e3VjKCk7SHIoKTtrZSgpO0R0KCk7SWUoKTtEZSgpO2Z0KCk7JHQoKTtOZigpO1llKCk7JGUoKTthbigpO2NpKCk7WmUoKTtlYygpO0t0KCk7VW4oKTt1cygpO19UKCk7S3IoKTt0bigpO1hvKCk7SVQoKTtwYygpO09uPXt9O09uLmNvbXB1dGVIaWVyYXJjaHlQYWNrZWRMZW5ndGg9ZnVuY3Rpb24odCxlKXtsZXQgbj0wLG89W3RdO2Zvcig7by5sZW5ndGg+MDspe2xldCByPW8ucG9wKCk7aWYoIW0ocikpY29udGludWU7bis9MjtsZXQgaT1yLnBvc2l0aW9ucyxzPXIuaG9sZXM7aWYobShpKSYmaS5sZW5ndGg+MCYmKG4rPWkubGVuZ3RoKmUucGFja2VkTGVuZ3RoKSxtKHMpKXtsZXQgZj1zLmxlbmd0aDtmb3IobGV0IHU9MDt1PGY7Kyt1KW8ucHVzaChzW3VdKX19cmV0dXJuIG59O09uLnBhY2tQb2x5Z29uSGllcmFyY2h5PWZ1bmN0aW9uKHQsZSxuLG8pe2xldCByPVt0XTtmb3IoO3IubGVuZ3RoPjA7KXtsZXQgaT1yLnBvcCgpO2lmKCFtKGkpKWNvbnRpbnVlO2xldCBzPWkucG9zaXRpb25zLGY9aS5ob2xlcztpZihlW24rK109bShzKT9zLmxlbmd0aDowLGVbbisrXT1tKGYpP2YubGVuZ3RoOjAsbShzKSl7bGV0IHU9cy5sZW5ndGg7Zm9yKGxldCBjPTA7Yzx1OysrYyxuKz1vLnBhY2tlZExlbmd0aClvLnBhY2soc1tjXSxlLG4pfWlmKG0oZikpe2xldCB1PWYubGVuZ3RoO2ZvcihsZXQgYz0wO2M8dTsrK2Mpci5wdXNoKGZbY10pfX1yZXR1cm4gbn07T24udW5wYWNrUG9seWdvbkhpZXJhcmNoeT1mdW5jdGlvbih0LGUsbil7bGV0IG89dFtlKytdLHI9dFtlKytdLGk9bmV3IEFycmF5KG8pLHM9cj4wP25ldyBBcnJheShyKTp2b2lkIDA7Zm9yKGxldCBmPTA7ZjxvOysrZixlKz1uLnBhY2tlZExlbmd0aClpW2ZdPW4udW5wYWNrKHQsZSk7Zm9yKGxldCBmPTA7ZjxyOysrZilzW2ZdPU9uLnVucGFja1BvbHlnb25IaWVyYXJjaHkodCxlLG4pLGU9c1tmXS5zdGFydGluZ0luZGV4LGRlbGV0ZSBzW2ZdLnN0YXJ0aW5nSW5kZXg7cmV0dXJue3Bvc2l0aW9uczppLGhvbGVzOnMsc3RhcnRpbmdJbmRleDplfX07ZGM9bmV3IEo7bXM9bmV3IGE7T24uc3ViZGl2aWRlTGluZUNvdW50PWZ1bmN0aW9uKHQsZSxuKXtsZXQgcj1hLmRpc3RhbmNlKHQsZSkvbixpPU1hdGgubWF4KDAsTWF0aC5jZWlsKFAubG9nMihyKSkpO3JldHVybiBNYXRoLnBvdygyLGkpfTthZD1uZXcgY3QsZmQ9bmV3IGN0LGtJPW5ldyBjdCxHST1uZXcgYSxjZD1uZXcgSm87T24uc3ViZGl2aWRlUmh1bWJMaW5lQ291bnQ9ZnVuY3Rpb24odCxlLG4sbyl7bGV0IHI9dC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlLGFkKSxpPXQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMobixmZCksZj1uZXcgSm8ocixpLHQpLnN1cmZhY2VEaXN0YW5jZS9vLHU9TWF0aC5tYXgoMCxNYXRoLmNlaWwoUC5sb2cyKGYpKSk7cmV0dXJuIE1hdGgucG93KDIsdSl9O09uLnN1YmRpdmlkZVRleGNvb3JkTGluZT1mdW5jdGlvbih0LGUsbixvLHIsaSl7bGV0IHM9T24uc3ViZGl2aWRlTGluZUNvdW50KG4sbyxyKSxmPUouZGlzdGFuY2UodCxlKSx1PWYvcyxjPWk7Yy5sZW5ndGg9cyoyO2xldCBsPTA7Zm9yKGxldCBwPTA7cDxzO3ArKyl7bGV0IGQ9TFQodCxlLHAqdSxmKTtjW2wrK109ZFswXSxjW2wrK109ZFsxXX1yZXR1cm4gY307T24uc3ViZGl2aWRlTGluZT1mdW5jdGlvbih0LGUsbixvKXtsZXQgcj1Pbi5zdWJkaXZpZGVMaW5lQ291bnQodCxlLG4pLGk9YS5kaXN0YW5jZSh0LGUpLHM9aS9yO20obyl8fChvPVtdKTtsZXQgZj1vO2YubGVuZ3RoPXIqMztsZXQgdT0wO2ZvcihsZXQgYz0wO2M8cjtjKyspe2xldCBsPVVJKHQsZSxjKnMsaSk7Zlt1KytdPWxbMF0sZlt1KytdPWxbMV0sZlt1KytdPWxbMl19cmV0dXJuIGZ9O09uLnN1YmRpdmlkZVRleGNvb3JkUmh1bWJMaW5lPWZ1bmN0aW9uKHQsZSxuLG8scixpLHMpe2xldCBmPW4uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMobyxhZCksdT1uLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHIsZmQpO2NkLnNldEVuZFBvaW50cyhmLHUpO2xldCBjPWNkLnN1cmZhY2VEaXN0YW5jZS9pLGw9TWF0aC5tYXgoMCxNYXRoLmNlaWwoUC5sb2cyKGMpKSkscD1NYXRoLnBvdygyLGwpLGQ9Si5kaXN0YW5jZSh0LGUpLGg9ZC9wLF89cztfLmxlbmd0aD1wKjI7bGV0IGc9MDtmb3IobGV0IGI9MDtiPHA7YisrKXtsZXQgdz1MVCh0LGUsYipoLGQpO19bZysrXT13WzBdLF9bZysrXT13WzFdfXJldHVybiBffTtPbi5zdWJkaXZpZGVSaHVtYkxpbmU9ZnVuY3Rpb24odCxlLG4sbyxyKXtsZXQgaT10LmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGUsYWQpLHM9dC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhuLGZkKSxmPW5ldyBKbyhpLHMsdCk7aWYobShyKXx8KHI9W10pLGYuc3VyZmFjZURpc3RhbmNlPD1vKXJldHVybiByLmxlbmd0aD0zLHJbMF09ZS54LHJbMV09ZS55LHJbMl09ZS56LHI7bGV0IHU9Zi5zdXJmYWNlRGlzdGFuY2UvbyxjPU1hdGgubWF4KDAsTWF0aC5jZWlsKFAubG9nMih1KSkpLGw9TWF0aC5wb3coMixjKSxwPWYuc3VyZmFjZURpc3RhbmNlL2wsZD1yO2QubGVuZ3RoPWwqMztsZXQgaD0wO2ZvcihsZXQgXz0wO188bDtfKyspe2xldCBnPWYuaW50ZXJwb2xhdGVVc2luZ1N1cmZhY2VEaXN0YW5jZShfKnAsa0kpLGI9dC5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihnLEdJKTtkW2grK109Yi54LGRbaCsrXT1iLnksZFtoKytdPWIuen1yZXR1cm4gZH07Vkk9bmV3IGEsekk9bmV3IGEsakk9bmV3IGEsSEk9bmV3IGE7T24uc2NhbGVUb0dlb2RldGljSGVpZ2h0RXh0cnVkZWQ9ZnVuY3Rpb24odCxlLG4sbyxyKXtvPW8/P1kuZGVmYXVsdDtsZXQgaT1WSSxzPXpJLGY9akksdT1ISTtpZihtKHQpJiZtKHQuYXR0cmlidXRlcykmJm0odC5hdHRyaWJ1dGVzLnBvc2l0aW9uKSl7bGV0IGM9dC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxsPWMubGVuZ3RoLzI7Zm9yKGxldCBwPTA7cDxsO3ArPTMpYS5mcm9tQXJyYXkoYyxwLGYpLG8uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGYsaSksdT1vLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoZix1KSxzPWEubXVsdGlwbHlCeVNjYWxhcihpLG4scykscz1hLmFkZCh1LHMscyksY1twK2xdPXMueCxjW3ArMStsXT1zLnksY1twKzIrbF09cy56LHImJih1PWEuY2xvbmUoZix1KSkscz1hLm11bHRpcGx5QnlTY2FsYXIoaSxlLHMpLHM9YS5hZGQodSxzLHMpLGNbcF09cy54LGNbcCsxXT1zLnksY1twKzJdPXMuen1yZXR1cm4gdH07T24ucG9seWdvbk91dGxpbmVzRnJvbUhpZXJhcmNoeT1mdW5jdGlvbih0LGUsbil7bGV0IG89W10scj1uZXcgazA7ci5lbnF1ZXVlKHQpO2xldCBpLHMsZjtmb3IoO3IubGVuZ3RoIT09MDspe2xldCB1PXIuZGVxdWV1ZSgpLGM9dS5wb3NpdGlvbnM7aWYoZSlmb3IoZj1jLmxlbmd0aCxpPTA7aTxmO2krKyluLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoY1tpXSxjW2ldKTtpZihjPUNuKGMsYS5lcXVhbHNFcHNpbG9uLCEwKSxjLmxlbmd0aDwzKWNvbnRpbnVlO2xldCBsPXUuaG9sZXM/dS5ob2xlcy5sZW5ndGg6MDtmb3IoaT0wO2k8bDtpKyspe2xldCBwPXUuaG9sZXNbaV0sZD1wLnBvc2l0aW9ucztpZihlKWZvcihmPWQubGVuZ3RoLHM9MDtzPGY7KytzKW4uc2NhbGVUb0dlb2RldGljU3VyZmFjZShkW3NdLGRbc10pO2lmKGQ9Q24oZCxhLmVxdWFsc0Vwc2lsb24sITApLGQubGVuZ3RoPDMpY29udGludWU7by5wdXNoKGQpO2xldCBoPTA7Zm9yKG0ocC5ob2xlcykmJihoPXAuaG9sZXMubGVuZ3RoKSxzPTA7czxoO3MrKylyLmVucXVldWUocC5ob2xlc1tzXSl9by5wdXNoKGMpfXJldHVybiBvfTtxST1uZXcgY3Q7WEk9bmV3IGN0O09uLnNwbGl0UG9seWdvbnNPbkVxdWF0b3I9ZnVuY3Rpb24odCxlLG4sbyl7bShvKXx8KG89W10pLG8uc3BsaWNlKDAsMCwuLi50KSxvLmxlbmd0aD10Lmxlbmd0aDtsZXQgcj0wO2Zvcig7cjxvLmxlbmd0aDspe2xldCBpPW9bcl0scz1pLnNsaWNlKCk7aWYoaS5sZW5ndGg8Myl7b1tyXT1zLCsrcjtjb250aW51ZX1sZXQgZj1ZSShzLGUsbik7aWYocy5sZW5ndGg9PT1pLmxlbmd0aHx8Zi5sZW5ndGg8PTEpe29bcl09cywrK3I7Y29udGludWV9Zi5zb3J0KChjLGwpPT5jLnRoZXRhLWwudGhldGEpO2xldCB1PXNbMF0uej49MDtyPURUKG8scixzLGYsMSwwLHUpfXJldHVybiBvfTtPbi5wb2x5Z29uc0Zyb21IaWVyYXJjaHk9ZnVuY3Rpb24odCxlLG4sbyxyLGkpe2xldCBzPVtdLGY9W10sdT1uZXcgazA7dS5lbnF1ZXVlKHQpO2xldCBjPW0oaSk7Zm9yKDt1Lmxlbmd0aCE9PTA7KXtsZXQgbD11LmRlcXVldWUoKSxwPWwucG9zaXRpb25zLGQ9bC5ob2xlcyxoLF87aWYobylmb3IoXz1wLmxlbmd0aCxoPTA7aDxfO2grKylyLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UocFtoXSxwW2hdKTtpZihlfHwocD1DbihwLGEuZXF1YWxzRXBzaWxvbiwhMCkpLHAubGVuZ3RoPDMpY29udGludWU7bGV0IGc9bihwKTtpZighbShnKSljb250aW51ZTtsZXQgYj1bXSx3PVBlLmNvbXB1dGVXaW5kaW5nT3JkZXIyRChnKTtpZih3PT09UG8uQ0xPQ0tXSVNFJiYoZy5yZXZlcnNlKCkscD1wLnNsaWNlKCkucmV2ZXJzZSgpKSxjKXtjPSExO2xldCBNPVtwXTtpZihNPWkoTSxNKSxNLmxlbmd0aD4xKXtmb3IobGV0IE4gb2YgTSl1LmVucXVldWUobmV3IGhUKE4sZCkpO2NvbnRpbnVlfX1sZXQgTz1wLnNsaWNlKCksRT1tKGQpP2QubGVuZ3RoOjAsVD1bXSx4O2ZvcihoPTA7aDxFO2grKyl7bGV0IE09ZFtoXSxOPU0ucG9zaXRpb25zO2lmKG8pZm9yKF89Ti5sZW5ndGgseD0wO3g8XzsrK3gpci5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKE5beF0sTlt4XSk7aWYoZXx8KE49Q24oTixhLmVxdWFsc0Vwc2lsb24sITApKSxOLmxlbmd0aDwzKWNvbnRpbnVlO2xldCBGPW4oTik7aWYoIW0oRikpY29udGludWU7dz1QZS5jb21wdXRlV2luZGluZ09yZGVyMkQoRiksdz09PVBvLkNMT0NLV0lTRSYmKEYucmV2ZXJzZSgpLE49Ti5zbGljZSgpLnJldmVyc2UoKSksVC5wdXNoKE4pLGIucHVzaChPLmxlbmd0aCksTz1PLmNvbmNhdChOKSxnPWcuY29uY2F0KEYpO2xldCBJPTA7Zm9yKG0oTS5ob2xlcykmJihJPU0uaG9sZXMubGVuZ3RoKSx4PTA7eDxJO3grKyl1LmVucXVldWUoTS5ob2xlc1t4XSl9cy5wdXNoKHtvdXRlclJpbmc6cCxob2xlczpUfSksZi5wdXNoKHtwb3NpdGlvbnM6Tyxwb3NpdGlvbnMyRDpnLGhvbGVzOmJ9KX1yZXR1cm57aGllcmFyY2h5OnMscG9seWdvbnM6Zn19OyRJPW5ldyBKLFpJPW5ldyBhLFFJPW5ldyB0ZSxKST1uZXcgWjtPbi5jb21wdXRlQm91bmRpbmdSZWN0YW5nbGU9ZnVuY3Rpb24odCxlLG4sbyxyKXtsZXQgaT10ZS5mcm9tQXhpc0FuZ2xlKHQsbyxRSSkscz1aLmZyb21RdWF0ZXJuaW9uKGksSkkpLGY9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLHU9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLGM9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGw9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLHA9bi5sZW5ndGg7Zm9yKGxldCBkPTA7ZDxwOysrZCl7bGV0IGg9YS5jbG9uZShuW2RdLFpJKTtaLm11bHRpcGx5QnlWZWN0b3IocyxoLGgpO2xldCBfPWUoaCwkSSk7bShfKSYmKGY9TWF0aC5taW4oZixfLngpLHU9TWF0aC5tYXgodSxfLngpLGM9TWF0aC5taW4oYyxfLnkpLGw9TWF0aC5tYXgobCxfLnkpKX1yZXR1cm4gci54PWYsci55PWMsci53aWR0aD11LWYsci5oZWlnaHQ9bC1jLHJ9O09uLmNyZWF0ZUdlb21ldHJ5RnJvbVBvc2l0aW9ucz1mdW5jdGlvbih0LGUsbixvLHIsaSxzKXtsZXQgZj1QZS50cmlhbmd1bGF0ZShlLnBvc2l0aW9uczJELGUuaG9sZXMpO2YubGVuZ3RoPDMmJihmPVswLDEsMl0pO2xldCB1PWUucG9zaXRpb25zLGM9bShuKSxsPWM/bi5wb3NpdGlvbnM6dm9pZCAwO2lmKHIpe2xldCBwPXUubGVuZ3RoLGQ9bmV3IEFycmF5KHAqMyksaD0wO2ZvcihsZXQgYj0wO2I8cDtiKyspe2xldCB3PXVbYl07ZFtoKytdPXcueCxkW2grK109dy55LGRbaCsrXT13Lnp9bGV0IF89e2F0dHJpYnV0ZXM6e3Bvc2l0aW9uOm5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6ZH0pfSxpbmRpY2VzOmYscHJpbWl0aXZlVHlwZTpCdC5UUklBTkdMRVN9O2MmJihfLmF0dHJpYnV0ZXMuc3Q9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOkoucGFja0FycmF5KGwpfSkpO2xldCBnPW5ldyBVdChfKTtyZXR1cm4gaS5ub3JtYWw/R2UuY29tcHV0ZU5vcm1hbChnKTpnfWlmKHM9PT1oZS5HRU9ERVNJQylyZXR1cm4gUGUuY29tcHV0ZVN1YmRpdmlzaW9uKHQsdSxmLGwsbyk7aWYocz09PWhlLlJIVU1CKXJldHVybiBQZS5jb21wdXRlUmh1bWJMaW5lU3ViZGl2aXNpb24odCx1LGYsbCxvKX07dlQ9W10sRlQ9W10sdHY9bmV3IGEsZXY9bmV3IGE7T24uY29tcHV0ZVdhbGxHZW9tZXRyeT1mdW5jdGlvbih0LGUsbixvLHIsaSl7bGV0IHMsZix1LGMsbCxwLGQsaCxfLGc9dC5sZW5ndGgsYj0wLHc9MCxPPW0oZSksRT1PP2UucG9zaXRpb25zOnZvaWQgMDtpZihyKWZvcihmPWcqMyoyLHM9bmV3IEFycmF5KGYqMiksTyYmKF89ZyoyKjIsaD1uZXcgQXJyYXkoXyoyKSksdT0wO3U8Zzt1KyspYz10W3VdLGw9dFsodSsxKSVnXSxzW2JdPXNbYitmXT1jLngsKytiLHNbYl09c1tiK2ZdPWMueSwrK2Isc1tiXT1zW2IrZl09Yy56LCsrYixzW2JdPXNbYitmXT1sLngsKytiLHNbYl09c1tiK2ZdPWwueSwrK2Isc1tiXT1zW2IrZl09bC56LCsrYixPJiYocD1FW3VdLGQ9RVsodSsxKSVnXSxoW3ddPWhbdytfXT1wLngsKyt3LGhbd109aFt3K19dPXAueSwrK3csaFt3XT1oW3crX109ZC54LCsrdyxoW3ddPWhbdytfXT1kLnksKyt3KTtlbHNle2xldCBGPVAuY2hvcmRMZW5ndGgobyxuLm1heGltdW1SYWRpdXMpLEk9MDtpZihpPT09aGUuR0VPREVTSUMpZm9yKHU9MDt1PGc7dSsrKUkrPU9uLnN1YmRpdmlkZUxpbmVDb3VudCh0W3VdLHRbKHUrMSklZ10sRik7ZWxzZSBpZihpPT09aGUuUkhVTUIpZm9yKHU9MDt1PGc7dSsrKUkrPU9uLnN1YmRpdmlkZVJodW1iTGluZUNvdW50KG4sdFt1XSx0Wyh1KzEpJWddLEYpO2ZvcihmPShJK2cpKjMscz1uZXcgQXJyYXkoZioyKSxPJiYoXz0oSStnKSoyLGg9bmV3IEFycmF5KF8qMikpLHU9MDt1PGc7dSsrKXtjPXRbdV0sbD10Wyh1KzEpJWddO2xldCB2LEI7TyYmKHA9RVt1XSxkPUVbKHUrMSklZ10pLGk9PT1oZS5HRU9ERVNJQz8odj1Pbi5zdWJkaXZpZGVMaW5lKGMsbCxGLEZUKSxPJiYoQj1Pbi5zdWJkaXZpZGVUZXhjb29yZExpbmUocCxkLGMsbCxGLHZUKSkpOmk9PT1oZS5SSFVNQiYmKHY9T24uc3ViZGl2aWRlUmh1bWJMaW5lKG4sYyxsLEYsRlQpLE8mJihCPU9uLnN1YmRpdmlkZVRleGNvb3JkUmh1bWJMaW5lKHAsZCxuLGMsbCxGLHZUKSkpO2xldCBBPXYubGVuZ3RoO2ZvcihsZXQgUz0wO1M8QTsrK1MsKytiKXNbYl09dltTXSxzW2IrZl09dltTXTtpZihzW2JdPWwueCxzW2IrZl09bC54LCsrYixzW2JdPWwueSxzW2IrZl09bC55LCsrYixzW2JdPWwueixzW2IrZl09bC56LCsrYixPKXtsZXQgUz1CLmxlbmd0aDtmb3IobGV0IEM9MDtDPFM7KytDLCsrdyloW3ddPUJbQ10saFt3K19dPUJbQ107aFt3XT1kLngsaFt3K19dPWQueCwrK3csaFt3XT1kLnksaFt3K19dPWQueSwrK3d9fX1nPXMubGVuZ3RoO2xldCBUPUx0LmNyZWF0ZVR5cGVkQXJyYXkoZy8zLGctdC5sZW5ndGgqNikseD0wO2ZvcihnLz02LHU9MDt1PGc7dSsrKXtsZXQgRj11LEk9RisxLHY9RitnLEI9disxO2M9YS5mcm9tQXJyYXkocyxGKjMsdHYpLGw9YS5mcm9tQXJyYXkocyxJKjMsZXYpLCFhLmVxdWFsc0Vwc2lsb24oYyxsLFAuRVBTSUxPTjEwLFAuRVBTSUxPTjEwKSYmKFRbeCsrXT1GLFRbeCsrXT12LFRbeCsrXT1JLFRbeCsrXT1JLFRbeCsrXT12LFRbeCsrXT1CKX1sZXQgTT17YXR0cmlidXRlczpuZXcgaWUoe3Bvc2l0aW9uOm5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6c30pfSksaW5kaWNlczpULHByaW1pdGl2ZVR5cGU6QnQuVFJJQU5HTEVTfTtyZXR1cm4gTyYmKE0uYXR0cmlidXRlcy5zdD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6aH0pKSxuZXcgVXQoTSl9O19lPU9ufSk7ZnVuY3Rpb24gbXYodCxlLG4sbyxyLGkscyxmLHUpe2xldCBjPXQucG9zaXRpb25zLGw9UGUudHJpYW5ndWxhdGUodC5wb3NpdGlvbnMyRCx0LmhvbGVzKTtsLmxlbmd0aDwzJiYobD1bMCwxLDJdKTtsZXQgcD1MdC5jcmVhdGVUeXBlZEFycmF5KGMubGVuZ3RoLGwubGVuZ3RoKTtwLnNldChsKTtsZXQgZD1sdjtpZihvIT09MCl7bGV0IEI9dGUuZnJvbUF4aXNBbmdsZShzLG8sQlQpO2lmKGQ9Wi5mcm9tUXVhdGVybmlvbihCLGQpLGUudGFuZ2VudHx8ZS5iaXRhbmdlbnQpe0I9dGUuZnJvbUF4aXNBbmdsZShzLC1vLEJUKTtsZXQgQT1aLmZyb21RdWF0ZXJuaW9uKEIscHYpO2Y9YS5ub3JtYWxpemUoWi5tdWx0aXBseUJ5VmVjdG9yKEEsZixmKSxmKSxlLmJpdGFuZ2VudCYmKHU9YS5ub3JtYWxpemUoYS5jcm9zcyhzLGYsdSksdSkpfX1lbHNlIGQ9Wi5jbG9uZShaLklERU5USVRZLGQpO2xldCBoPWl2O2Uuc3QmJihoLng9bi54LGgueT1uLnkpO2xldCBfPWMubGVuZ3RoLGc9XyozLGI9bmV3IEZsb2F0NjRBcnJheShnKSx3PWUubm9ybWFsP25ldyBGbG9hdDMyQXJyYXkoZyk6dm9pZCAwLE89ZS50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkoZyk6dm9pZCAwLEU9ZS5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShnKTp2b2lkIDAsVD1lLnN0P25ldyBGbG9hdDMyQXJyYXkoXyoyKTp2b2lkIDAseD0wLE09MCxOPTAsRj0wLEk9MDtmb3IobGV0IEI9MDtCPF87QisrKXtsZXQgQT1jW0JdO2lmKGJbeCsrXT1BLngsYlt4KytdPUEueSxiW3grK109QS56LGUuc3QpaWYobShyKSYmci5wb3NpdGlvbnMubGVuZ3RoPT09XylUW0krK109ci5wb3NpdGlvbnNbQl0ueCxUW0krK109ci5wb3NpdGlvbnNbQl0ueTtlbHNle2xldCBTPVoubXVsdGlwbHlCeVZlY3RvcihkLEEsbnYpLEM9aShTLHJ2KTtKLnN1YnRyYWN0KEMsaCxDKTtsZXQgTD1QLmNsYW1wKEMueC9uLndpZHRoLDAsMSksej1QLmNsYW1wKEMueS9uLmhlaWdodCwwLDEpO1RbSSsrXT1MLFRbSSsrXT16fWUubm9ybWFsJiYod1tNKytdPXMueCx3W00rK109cy55LHdbTSsrXT1zLnopLGUudGFuZ2VudCYmKE9bRisrXT1mLngsT1tGKytdPWYueSxPW0YrK109Zi56KSxlLmJpdGFuZ2VudCYmKEVbTisrXT11LngsRVtOKytdPXUueSxFW04rK109dS56KX1sZXQgdj1uZXcgaWU7cmV0dXJuIGUucG9zaXRpb24mJih2LnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Yn0pKSxlLm5vcm1hbCYmKHYubm9ybWFsPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczp3fSkpLGUudGFuZ2VudCYmKHYudGFuZ2VudD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6T30pKSxlLmJpdGFuZ2VudCYmKHYuYml0YW5nZW50PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpFfSkpLGUuc3QmJih2LnN0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpUfSkpLG5ldyBVdCh7YXR0cmlidXRlczp2LGluZGljZXM6cCxwcmltaXRpdmVUeXBlOkJ0LlRSSUFOR0xFU30pfWZ1bmN0aW9uIG1jKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNUO2xldCBlPXQucG9seWdvbkhpZXJhcmNoeSxuPXQudGV4dHVyZUNvb3JkaW5hdGVzO3kuZGVmaW5lZCgib3B0aW9ucy5wb2x5Z29uSGllcmFyY2h5IixlKTtsZXQgbz10LnZlcnRleEZvcm1hdD8/cHQuREVGQVVMVDt0aGlzLl92ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUobyksdGhpcy5fcG9seWdvbkhpZXJhcmNoeT1lLHRoaXMuX3N0Um90YXRpb249dC5zdFJvdGF0aW9uPz8wLHRoaXMuX2VsbGlwc29pZD1ZLmNsb25lKHQuZWxsaXBzb2lkPz9ZLmRlZmF1bHQpLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUNvcGxhbmFyUG9seWdvbkdlb21ldHJ5Iix0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZXM9bix0aGlzLnBhY2tlZExlbmd0aD1fZS5jb21wdXRlSGllcmFyY2h5UGFja2VkTGVuZ3RoKGUsYSkrcHQucGFja2VkTGVuZ3RoK1kucGFja2VkTGVuZ3RoKyhtKG4pP19lLmNvbXB1dGVIaWVyYXJjaHlQYWNrZWRMZW5ndGgobixKKToxKSsyfXZhciBudixvdixydixpdixzdixjdixhdixCZixmdix1dixCVCxsdixwdixkdixodixfdix5dixHMCxVVD0kKCgpPT57SHIoKTtDZigpO3ZlKCk7a2UoKTtEdCgpO1d0KCk7RGUoKTtJMCgpO3llKCk7ZnQoKTskdCgpO1llKCk7JGUoKTthbigpO2NjKCk7Y2koKTtaZSgpO0t0KCk7VW4oKTtEZigpO0tyKCk7dG4oKTtYbygpO3hvKCk7bnY9bmV3IGEsb3Y9bmV3IHFyLHJ2PW5ldyBKLGl2PW5ldyBKLHN2PW5ldyBhLGN2PW5ldyBhLGF2PW5ldyBhLEJmPW5ldyBhLGZ2PW5ldyBhLHV2PW5ldyBhLEJUPW5ldyB0ZSxsdj1uZXcgWixwdj1uZXcgWixkdj1uZXcgYTttYy5mcm9tUG9zaXRpb25zPWZ1bmN0aW9uKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNULHkuZGVmaW5lZCgib3B0aW9ucy5wb3NpdGlvbnMiLHQucG9zaXRpb25zKTtsZXQgZT17cG9seWdvbkhpZXJhcmNoeTp7cG9zaXRpb25zOnQucG9zaXRpb25zfSx2ZXJ0ZXhGb3JtYXQ6dC52ZXJ0ZXhGb3JtYXQsc3RSb3RhdGlvbjp0LnN0Um90YXRpb24sZWxsaXBzb2lkOnQuZWxsaXBzb2lkLHRleHR1cmVDb29yZGluYXRlczp0LnRleHR1cmVDb29yZGluYXRlc307cmV0dXJuIG5ldyBtYyhlKX07bWMucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHkuZGVmaW5lZCgiYXJyYXkiLGUpLG49bj8/MCxuPV9lLnBhY2tQb2x5Z29uSGllcmFyY2h5KHQuX3BvbHlnb25IaWVyYXJjaHksZSxuLGEpLFkucGFjayh0Ll9lbGxpcHNvaWQsZSxuKSxuKz1ZLnBhY2tlZExlbmd0aCxwdC5wYWNrKHQuX3ZlcnRleEZvcm1hdCxlLG4pLG4rPXB0LnBhY2tlZExlbmd0aCxlW24rK109dC5fc3RSb3RhdGlvbixtKHQuX3RleHR1cmVDb29yZGluYXRlcyk/bj1fZS5wYWNrUG9seWdvbkhpZXJhcmNoeSh0Ll90ZXh0dXJlQ29vcmRpbmF0ZXMsZSxuLEopOmVbbisrXT0tMSxlW24rK109dC5wYWNrZWRMZW5ndGgsZX07aHY9WS5jbG9uZShZLlVOSVRfU1BIRVJFKSxfdj1uZXcgcHQseXY9e3BvbHlnb25IaWVyYXJjaHk6e319O21jLnVucGFjaz1mdW5jdGlvbih0LGUsbil7eS5kZWZpbmVkKCJhcnJheSIsdCksZT1lPz8wO2xldCBvPV9lLnVucGFja1BvbHlnb25IaWVyYXJjaHkodCxlLGEpO2U9by5zdGFydGluZ0luZGV4LGRlbGV0ZSBvLnN0YXJ0aW5nSW5kZXg7bGV0IHI9WS51bnBhY2sodCxlLGh2KTtlKz1ZLnBhY2tlZExlbmd0aDtsZXQgaT1wdC51bnBhY2sodCxlLF92KTtlKz1wdC5wYWNrZWRMZW5ndGg7bGV0IHM9dFtlKytdLGY9dFtlXT09PS0xP3ZvaWQgMDpfZS51bnBhY2tQb2x5Z29uSGllcmFyY2h5KHQsZSxKKTttKGYpPyhlPWYuc3RhcnRpbmdJbmRleCxkZWxldGUgZi5zdGFydGluZ0luZGV4KTplKys7bGV0IHU9dFtlKytdO3JldHVybiBtKG4pfHwobj1uZXcgbWMoeXYpKSxuLl9wb2x5Z29uSGllcmFyY2h5PW8sbi5fZWxsaXBzb2lkPVkuY2xvbmUocixuLl9lbGxpcHNvaWQpLG4uX3ZlcnRleEZvcm1hdD1wdC5jbG9uZShpLG4uX3ZlcnRleEZvcm1hdCksbi5fc3RSb3RhdGlvbj1zLG4uX3RleHR1cmVDb29yZGluYXRlcz1mLG4ucGFja2VkTGVuZ3RoPXUsbn07bWMuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fdmVydGV4Rm9ybWF0LG49dC5fcG9seWdvbkhpZXJhcmNoeSxvPXQuX3N0Um90YXRpb24scj10Ll90ZXh0dXJlQ29vcmRpbmF0ZXMsaT1tKHIpLHM9bi5wb3NpdGlvbnM7aWYocz1DbihzLGEuZXF1YWxzRXBzaWxvbiwhMCkscy5sZW5ndGg8MylyZXR1cm47bGV0IGY9c3YsdT1jdixjPWF2LGw9ZnYscD11djtpZighbWEuY29tcHV0ZVByb2plY3RUbzJEQXJndW1lbnRzKHMsQmYsbCxwKSlyZXR1cm47aWYoZj1hLmNyb3NzKGwscCxmKSxmPWEubm9ybWFsaXplKGYsZiksIWEuZXF1YWxzRXBzaWxvbihCZixhLlpFUk8sUC5FUFNJTE9ONikpe2xldCBJPXQuX2VsbGlwc29pZC5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoQmYsZHYpO2EuZG90KGYsSSk8MCYmKGY9YS5uZWdhdGUoZixmKSxsPWEubmVnYXRlKGwsbCkpfWxldCBoPW1hLmNyZWF0ZVByb2plY3RQb2ludHNUbzJERnVuY3Rpb24oQmYsbCxwKSxfPW1hLmNyZWF0ZVByb2plY3RQb2ludFRvMkRGdW5jdGlvbihCZixsLHApO2UudGFuZ2VudCYmKHU9YS5jbG9uZShsLHUpKSxlLmJpdGFuZ2VudCYmKGM9YS5jbG9uZShwLGMpKTtsZXQgZz1fZS5wb2x5Z29uc0Zyb21IaWVyYXJjaHkobixpLGgsITEpLGI9Zy5oaWVyYXJjaHksdz1nLnBvbHlnb25zLE89ZnVuY3Rpb24oSSl7cmV0dXJuIEl9LEU9aT9fZS5wb2x5Z29uc0Zyb21IaWVyYXJjaHkociwhMCxPLCExKS5wb2x5Z29uczp2b2lkIDA7aWYoYi5sZW5ndGg9PT0wKXJldHVybjtzPWJbMF0ub3V0ZXJSaW5nO2xldCBUPUF0LmZyb21Qb2ludHMocykseD1fZS5jb21wdXRlQm91bmRpbmdSZWN0YW5nbGUoZixfLHMsbyxvdiksTT1bXTtmb3IobGV0IEk9MDtJPHcubGVuZ3RoO0krKyl7bGV0IHY9bmV3IGZvKHtnZW9tZXRyeTptdih3W0ldLGUseCxvLGk/RVtJXTp2b2lkIDAsXyxmLHUsYyl9KTtNLnB1c2godil9bGV0IE49R2UuY29tYmluZUluc3RhbmNlcyhNKVswXTtOLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPW5ldyBGbG9hdDY0QXJyYXkoTi5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyksTi5pbmRpY2VzPUx0LmNyZWF0ZVR5cGVkQXJyYXkoTi5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMyxOLmluZGljZXMpO2xldCBGPU4uYXR0cmlidXRlcztyZXR1cm4gZS5wb3NpdGlvbnx8ZGVsZXRlIEYucG9zaXRpb24sbmV3IFV0KHthdHRyaWJ1dGVzOkYsaW5kaWNlczpOLmluZGljZXMscHJpbWl0aXZlVHlwZTpOLnByaW1pdGl2ZVR5cGUsYm91bmRpbmdTcGhlcmU6VH0pfTtHMD1tY30pO3ZhciBWMD17fTtsZShWMCx7ZGVmYXVsdDooKT0+QXZ9KTtmdW5jdGlvbiBndih0LGUpe3JldHVybiBtKGUpJiYodD1HMC51bnBhY2sodCxlKSksRzAuY3JlYXRlR2VvbWV0cnkodCl9dmFyIEF2LHowPSQoKCk9PntVVCgpO2Z0KCk7QXY9Z3Z9KTtmdW5jdGlvbiBidih0KXtsZXQgZT10Lmxlbmd0aCxuPW5ldyBGbG9hdDY0QXJyYXkoZSozKSxvPUx0LmNyZWF0ZVR5cGVkQXJyYXkoZSxlKjIpLHI9MCxpPTA7Zm9yKGxldCBmPTA7ZjxlO2YrKyl7bGV0IHU9dFtmXTtuW3IrK109dS54LG5bcisrXT11LnksbltyKytdPXUueixvW2krK109ZixvW2krK109KGYrMSklZX1sZXQgcz1uZXcgaWUoe3Bvc2l0aW9uOm5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6bn0pfSk7cmV0dXJuIG5ldyBVdCh7YXR0cmlidXRlczpzLGluZGljZXM6byxwcmltaXRpdmVUeXBlOkJ0LkxJTkVTfSl9ZnVuY3Rpb24gaGModCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5wb2x5Z29uSGllcmFyY2h5O3kuZGVmaW5lZCgib3B0aW9ucy5wb2x5Z29uSGllcmFyY2h5IixlKSx0aGlzLl9wb2x5Z29uSGllcmFyY2h5PWUsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlQ29wbGFuYXJQb2x5Z29uT3V0bGluZUdlb21ldHJ5Iix0aGlzLnBhY2tlZExlbmd0aD1fZS5jb21wdXRlSGllcmFyY2h5UGFja2VkTGVuZ3RoKGUsYSkrMX12YXIgd3YsajAsa1Q9JCgoKT0+e0hyKCk7dmUoKTtEdCgpO1d0KCk7RGUoKTtJMCgpO3llKCk7ZnQoKTtZZSgpOyRlKCk7YW4oKTtjYygpO2NpKCk7WmUoKTtEZigpO3RuKCk7aGMuZnJvbVBvc2l0aW9ucz1mdW5jdGlvbih0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVCx5LmRlZmluZWQoIm9wdGlvbnMucG9zaXRpb25zIix0LnBvc2l0aW9ucyk7bGV0IGU9e3BvbHlnb25IaWVyYXJjaHk6e3Bvc2l0aW9uczp0LnBvc2l0aW9uc319O3JldHVybiBuZXcgaGMoZSl9O2hjLnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzAsbj1fZS5wYWNrUG9seWdvbkhpZXJhcmNoeSh0Ll9wb2x5Z29uSGllcmFyY2h5LGUsbixhKSxlW25dPXQucGFja2VkTGVuZ3RoLGV9O3d2PXtwb2x5Z29uSGllcmFyY2h5Ont9fTtoYy51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3kuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MDtsZXQgbz1fZS51bnBhY2tQb2x5Z29uSGllcmFyY2h5KHQsZSxhKTtlPW8uc3RhcnRpbmdJbmRleCxkZWxldGUgby5zdGFydGluZ0luZGV4O2xldCByPXRbZV07cmV0dXJuIG0obil8fChuPW5ldyBoYyh3dikpLG4uX3BvbHlnb25IaWVyYXJjaHk9byxuLnBhY2tlZExlbmd0aD1yLG59O2hjLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX3BvbHlnb25IaWVyYXJjaHksbj1lLnBvc2l0aW9ucztpZihuPUNuKG4sYS5lcXVhbHNFcHNpbG9uLCEwKSxuLmxlbmd0aDwzfHwhbWEudmFsaWRPdXRsaW5lKG4pKXJldHVybjtsZXQgcj1fZS5wb2x5Z29uT3V0bGluZXNGcm9tSGllcmFyY2h5KGUsITEpO2lmKHIubGVuZ3RoPT09MClyZXR1cm47bGV0IGk9W107Zm9yKGxldCB1PTA7dTxyLmxlbmd0aDt1Kyspe2xldCBjPW5ldyBmbyh7Z2VvbWV0cnk6YnYoclt1XSl9KTtpLnB1c2goYyl9bGV0IHM9R2UuY29tYmluZUluc3RhbmNlcyhpKVswXSxmPUF0LmZyb21Qb2ludHMoZS5wb3NpdGlvbnMpO3JldHVybiBuZXcgVXQoe2F0dHJpYnV0ZXM6cy5hdHRyaWJ1dGVzLGluZGljZXM6cy5pbmRpY2VzLHByaW1pdGl2ZVR5cGU6cy5wcmltaXRpdmVUeXBlLGJvdW5kaW5nU3BoZXJlOmZ9KX07ajA9aGN9KTt2YXIgSDA9e307bGUoSDAse2RlZmF1bHQ6KCk9Pk92fSk7ZnVuY3Rpb24gVHYodCxlKXtyZXR1cm4gbShlKSYmKHQ9ajAudW5wYWNrKHQsZSkpLHQuX2VsbGlwc29pZD1ZLmNsb25lKHQuX2VsbGlwc29pZCksajAuY3JlYXRlR2VvbWV0cnkodCl9dmFyIE92LHEwPSQoKCk9PntrVCgpO2Z0KCk7JHQoKTtPdj1Udn0pO3ZhciBFdixmbixfYz0kKCgpPT57RXY9e1JPVU5ERUQ6MCxNSVRFUkVEOjEsQkVWRUxFRDoyfSxmbj1PYmplY3QuZnJlZXplKEV2KX0pO2Z1bmN0aW9uIFJ2KHQpe2xldCBlPXQuX3VTcXVhcmVkLG49dC5fZWxsaXBzb2lkLm1heGltdW1SYWRpdXMsbz10Ll9lbGxpcHNvaWQubWluaW11bVJhZGl1cyxyPShuLW8pL24saT1NYXRoLmNvcyh0Ll9zdGFydEhlYWRpbmcpLHM9TWF0aC5zaW4odC5fc3RhcnRIZWFkaW5nKSxmPSgxLXIpKk1hdGgudGFuKHQuX3N0YXJ0LmxhdGl0dWRlKSx1PTEvTWF0aC5zcXJ0KDErZipmKSxjPXUqZixsPU1hdGguYXRhbjIoZixpKSxwPXUqcyxkPXAqcCxoPTEtZCxfPU1hdGguc3FydChoKSxnPWUvNCxiPWcqZyx3PWIqZyxPPWIqYixFPTErZy0zKmIvNCs1KncvNC0xNzUqTy82NCxUPTEtZysxNSpiLzgtMzUqdy84LHg9MS0zKmcrMzUqYi80LE09MS01KmcsTj1FKmwtVCpNYXRoLnNpbigyKmwpKmcvMi14Kk1hdGguc2luKDQqbCkqYi8xNi1NKk1hdGguc2luKDYqbCkqdy80OC1NYXRoLnNpbig4KmwpKjUqTy81MTIsRj10Ll9jb25zdGFudHM7Ri5hPW4sRi5iPW8sRi5mPXIsRi5jb3NpbmVIZWFkaW5nPWksRi5zaW5lSGVhZGluZz1zLEYudGFuVT1mLEYuY29zaW5lVT11LEYuc2luZVU9YyxGLnNpZ21hPWwsRi5zaW5lQWxwaGE9cCxGLnNpbmVTcXVhcmVkQWxwaGE9ZCxGLmNvc2luZVNxdWFyZWRBbHBoYT1oLEYuY29zaW5lQWxwaGE9XyxGLnUyT3ZlcjQ9ZyxGLnU0T3ZlcjE2PWIsRi51Nk92ZXI2ND13LEYudThPdmVyMjU2PU8sRi5hMD1FLEYuYTE9VCxGLmEyPXgsRi5hMz1NLEYuZGlzdGFuY2VSYXRpbz1OfWZ1bmN0aW9uIFN2KHQsZSl7cmV0dXJuIHQqZSooNCt0Kig0LTMqZSkpLzE2fWZ1bmN0aW9uIEdUKHQsZSxuLG8scixpLHMpe2xldCBmPVN2KHQsbik7cmV0dXJuKDEtZikqdCplKihvK2YqcioocytmKmkqKDIqcypzLTEpKSl9ZnVuY3Rpb24geHYodCxlLG4sbyxyLGkscyl7bGV0IGY9KGUtbikvZSx1PWktbyxjPU1hdGguYXRhbigoMS1mKSpNYXRoLnRhbihyKSksbD1NYXRoLmF0YW4oKDEtZikqTWF0aC50YW4ocykpLHA9TWF0aC5jb3MoYyksZD1NYXRoLnNpbihjKSxoPU1hdGguY29zKGwpLF89TWF0aC5zaW4obCksZz1wKmgsYj1wKl8sdz1kKl8sTz1kKmgsRT11LFQ9UC5UV09fUEkseD1NYXRoLmNvcyhFKSxNPU1hdGguc2luKEUpLE4sRixJLHYsQjtkb3t4PU1hdGguY29zKEUpLE09TWF0aC5zaW4oRSk7bGV0IFc9Yi1PKng7ST1NYXRoLnNxcnQoaCpoKk0qTStXKlcpLEY9dytnKngsTj1NYXRoLmF0YW4yKEksRik7bGV0IFI7ST09PTA/KFI9MCx2PTEpOihSPWcqTS9JLHY9MS1SKlIpLFQ9RSxCPUYtMip3L3YsaXNGaW5pdGUoQil8fChCPTApLEU9dStHVChmLFIsdixOLEksRixCKX13aGlsZShNYXRoLmFicyhFLVQpPlAuRVBTSUxPTjEyKTtsZXQgQT12KihlKmUtbipuKS8obipuKSxTPTErQSooNDA5NitBKihBKigzMjAtMTc1KkEpLTc2OCkpLzE2Mzg0LEM9QSooMjU2K0EqKEEqKDc0LTQ3KkEpLTEyOCkpLzEwMjQsTD1CKkIsej1DKkkqKEIrQyooRiooMipMLTEpLUMqQiooNCpJKkktMykqKDQqTC0zKS82KS80KSxqPW4qUyooTi16KSxrPU1hdGguYXRhbjIoaCpNLGItTyp4KSxxPU1hdGguYXRhbjIocCpNLGIqeC1PKTt0Ll9kaXN0YW5jZT1qLHQuX3N0YXJ0SGVhZGluZz1rLHQuX2VuZEhlYWRpbmc9cSx0Ll91U3F1YXJlZD1BfWZ1bmN0aW9uIFZUKHQsZSxuLG8pe2xldCByPWEubm9ybWFsaXplKG8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oZSxLMCksQ3YpLGk9YS5ub3JtYWxpemUoby5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihuLEswKSxLMCk7eS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoInZhbHVlIixNYXRoLmFicyhNYXRoLmFicyhhLmFuZ2xlQmV0d2VlbihyLGkpKS1NYXRoLlBJKSwuMDEyNSkseHYodCxvLm1heGltdW1SYWRpdXMsby5taW5pbXVtUmFkaXVzLGUubG9uZ2l0dWRlLGUubGF0aXR1ZGUsbi5sb25naXR1ZGUsbi5sYXRpdHVkZSksdC5fc3RhcnQ9Y3QuY2xvbmUoZSx0Ll9zdGFydCksdC5fZW5kPWN0LmNsb25lKG4sdC5fZW5kKSx0Ll9zdGFydC5oZWlnaHQ9MCx0Ll9lbmQuaGVpZ2h0PTAsUnYodCl9ZnVuY3Rpb24gVWYodCxlLG4pe2xldCBvPW4/P1kuZGVmYXVsdDt0aGlzLl9lbGxpcHNvaWQ9byx0aGlzLl9zdGFydD1uZXcgY3QsdGhpcy5fZW5kPW5ldyBjdCx0aGlzLl9jb25zdGFudHM9e30sdGhpcy5fc3RhcnRIZWFkaW5nPXZvaWQgMCx0aGlzLl9lbmRIZWFkaW5nPXZvaWQgMCx0aGlzLl9kaXN0YW5jZT12b2lkIDAsdGhpcy5fdVNxdWFyZWQ9dm9pZCAwLG0odCkmJm0oZSkmJlZUKHRoaXMsdCxlLG8pfXZhciBDdixLMCx1ZCxXMD0kKCgpPT57RHQoKTtJZSgpO1d0KCk7ZnQoKTskdCgpO0t0KCk7Q3Y9bmV3IGEsSzA9bmV3IGE7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVWYucHJvdG90eXBlLHtlbGxpcHNvaWQ6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9lbGxpcHNvaWR9fSxzdXJmYWNlRGlzdGFuY2U6e2dldDpmdW5jdGlvbigpe3JldHVybiB5LmRlZmluZWQoImRpc3RhbmNlIix0aGlzLl9kaXN0YW5jZSksdGhpcy5fZGlzdGFuY2V9fSxzdGFydDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3N0YXJ0fX0sZW5kOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZW5kfX0sc3RhcnRIZWFkaW5nOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4geS5kZWZpbmVkKCJkaXN0YW5jZSIsdGhpcy5fZGlzdGFuY2UpLHRoaXMuX3N0YXJ0SGVhZGluZ319LGVuZEhlYWRpbmc6e2dldDpmdW5jdGlvbigpe3JldHVybiB5LmRlZmluZWQoImRpc3RhbmNlIix0aGlzLl9kaXN0YW5jZSksdGhpcy5fZW5kSGVhZGluZ319fSk7VWYucHJvdG90eXBlLnNldEVuZFBvaW50cz1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgic3RhcnQiLHQpLHkuZGVmaW5lZCgiZW5kIixlKSxWVCh0aGlzLHQsZSx0aGlzLl9lbGxpcHNvaWQpfTtVZi5wcm90b3R5cGUuaW50ZXJwb2xhdGVVc2luZ0ZyYWN0aW9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuaW50ZXJwb2xhdGVVc2luZ1N1cmZhY2VEaXN0YW5jZSh0aGlzLl9kaXN0YW5jZSp0LGUpfTtVZi5wcm90b3R5cGUuaW50ZXJwb2xhdGVVc2luZ1N1cmZhY2VEaXN0YW5jZT1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgiZGlzdGFuY2UiLHRoaXMuX2Rpc3RhbmNlKTtsZXQgbj10aGlzLl9jb25zdGFudHMsbz1uLmRpc3RhbmNlUmF0aW8rdC9uLmIscj1NYXRoLmNvcygyKm8pLGk9TWF0aC5jb3MoNCpvKSxzPU1hdGguY29zKDYqbyksZj1NYXRoLnNpbigyKm8pLHU9TWF0aC5zaW4oNCpvKSxjPU1hdGguc2luKDYqbyksbD1NYXRoLnNpbig4Km8pLHA9bypvLGQ9bypwLGg9bi51OE92ZXIyNTYsXz1uLnUyT3ZlcjQsZz1uLnU2T3ZlcjY0LGI9bi51NE92ZXIxNix3PTIqZCpoKnIvMytvKigxLV8rNypiLzQtMTUqZy80KzU3OSpoLzY0LShiLTE1KmcvNCsxODcqaC8xNikqci0oNSpnLzQtMTE1KmgvMTYpKmktMjkqaCpzLzE2KSsoXy8yLWIrNzEqZy8zMi04NSpoLzE2KSpmKyg1KmIvMTYtNSpnLzQrMzgzKmgvOTYpKnUtcCooKGctMTEqaC8yKSpmKzUqaCp1LzIpKygyOSpnLzk2LTI5KmgvMTYpKmMrNTM5KmgqbC8xNTM2LE89TWF0aC5hc2luKE1hdGguc2luKHcpKm4uY29zaW5lQWxwaGEpLEU9TWF0aC5hdGFuKG4uYS9uLmIqTWF0aC50YW4oTykpO3c9dy1uLnNpZ21hO2xldCBUPU1hdGguY29zKDIqbi5zaWdtYSt3KSx4PU1hdGguc2luKHcpLE09TWF0aC5jb3ModyksTj1uLmNvc2luZVUqTSxGPW4uc2luZVUqeCx2PU1hdGguYXRhbjIoeCpuLnNpbmVIZWFkaW5nLE4tRipuLmNvc2luZUhlYWRpbmcpLUdUKG4uZixuLnNpbmVBbHBoYSxuLmNvc2luZVNxdWFyZWRBbHBoYSx3LHgsTSxUKTtyZXR1cm4gbShlKT8oZS5sb25naXR1ZGU9dGhpcy5fc3RhcnQubG9uZ2l0dWRlK3YsZS5sYXRpdHVkZT1FLGUuaGVpZ2h0PTAsZSk6bmV3IGN0KHRoaXMuX3N0YXJ0LmxvbmdpdHVkZSt2LEUsMCl9O3VkPVVmfSk7ZnVuY3Rpb24gcVQodCxlLG4pe2xldCBvPVkwO28ubGVuZ3RoPXQ7bGV0IHI7aWYoZT09PW4pe2ZvcihyPTA7cjx0O3IrKylvW3JdPWU7cmV0dXJuIG99bGV0IHM9KG4tZSkvdDtmb3Iocj0wO3I8dDtyKyspe2xldCBmPWUrcipzO29bcl09Zn1yZXR1cm4gb31mdW5jdGlvbiBCdih0LGUsbixvLHIsaSxzLGYpe2xldCB1PW8uc2NhbGVUb0dlb2RldGljU3VyZmFjZSh0LCQwKSxjPW8uc2NhbGVUb0dlb2RldGljU3VyZmFjZShlLER2KSxsPVVvLm51bWJlck9mUG9pbnRzKHQsZSxuKSxwPW8uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWModSxwZCksZD1vLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGMsbGQpLGg9cVQobCxyLGkpO1gwLnNldEVuZFBvaW50cyhwLGQpO2xldCBfPVgwLnN1cmZhY2VEaXN0YW5jZS9sLGc9ZjtwLmhlaWdodD1yO2xldCBiPW8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4ocCxocyk7YS5wYWNrKGIscyxnKSxnKz0zO2ZvcihsZXQgdz0xO3c8bDt3Kyspe2xldCBPPVgwLmludGVycG9sYXRlVXNpbmdTdXJmYWNlRGlzdGFuY2UodypfLGxkKTtPLmhlaWdodD1oW3ddLGI9by5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihPLGhzKSxhLnBhY2soYixzLGcpLGcrPTN9cmV0dXJuIGd9ZnVuY3Rpb24gVXYodCxlLG4sbyxyLGkscyxmKXtsZXQgdT1vLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHQscGQpLGM9by5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlLGxkKSxsPVVvLm51bWJlck9mUG9pbnRzUmh1bWJMaW5lKHUsYyxuKTt1LmhlaWdodD0wLGMuaGVpZ2h0PTA7bGV0IHA9cVQobCxyLGkpO2tmLmVsbGlwc29pZC5lcXVhbHMobyl8fChrZj1uZXcgSm8odm9pZCAwLHZvaWQgMCxvKSksa2Yuc2V0RW5kUG9pbnRzKHUsYyk7bGV0IGQ9a2Yuc3VyZmFjZURpc3RhbmNlL2wsaD1mO3UuaGVpZ2h0PXI7bGV0IF89by5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbih1LGhzKTthLnBhY2soXyxzLGgpLGgrPTM7Zm9yKGxldCBnPTE7ZzxsO2crKyl7bGV0IGI9a2YuaW50ZXJwb2xhdGVVc2luZ1N1cmZhY2VEaXN0YW5jZShnKmQsbGQpO2IuaGVpZ2h0PXBbZ10sXz1vLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGIsaHMpLGEucGFjayhfLHMsaCksaCs9M31yZXR1cm4gaH12YXIgVW8sUHYsTXYsTnYselQsSXYsalQsdnYsRnYsTHYsWTAscGQsbGQsaHMsJDAsRHYsWDAsa2YsSFQsa3YsQW4sZ2E9JCgoKT0+e0R0KCk7SWUoKTtmdCgpO0h0KCk7JHQoKTtXMCgpO05mKCk7ZWMoKTtLdCgpO2tuKCk7dXMoKTtVbz17fTtVby5udW1iZXJPZlBvaW50cz1mdW5jdGlvbih0LGUsbil7bGV0IG89YS5kaXN0YW5jZSh0LGUpO3JldHVybiBNYXRoLmNlaWwoby9uKX07VW8ubnVtYmVyT2ZQb2ludHNSaHVtYkxpbmU9ZnVuY3Rpb24odCxlLG4pe2xldCBvPU1hdGgucG93KHQubG9uZ2l0dWRlLWUubG9uZ2l0dWRlLDIpK01hdGgucG93KHQubGF0aXR1ZGUtZS5sYXRpdHVkZSwyKTtyZXR1cm4gTWF0aC5tYXgoMSxNYXRoLmNlaWwoTWF0aC5zcXJ0KG8vKG4qbikpKSl9O1B2PW5ldyBjdDtVby5leHRyYWN0SGVpZ2h0cz1mdW5jdGlvbih0LGUpe2xldCBuPXQubGVuZ3RoLG89bmV3IEFycmF5KG4pO2ZvcihsZXQgcj0wO3I8bjtyKyspe2xldCBpPXRbcl07b1tyXT1lLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGksUHYpLmhlaWdodH1yZXR1cm4gb307TXY9bmV3IHN0LE52PW5ldyBhLHpUPW5ldyBhLEl2PW5ldyBvbihhLlVOSVRfWCwwKSxqVD1uZXcgYSx2dj1uZXcgb24oYS5VTklUX1gsMCksRnY9bmV3IGEsTHY9bmV3IGEsWTA9W107cGQ9bmV3IGN0LGxkPW5ldyBjdCxocz1uZXcgYSwkMD1uZXcgYSxEdj1uZXcgYSxYMD1uZXcgdWQsa2Y9bmV3IEpvO1VvLndyYXBMb25naXR1ZGU9ZnVuY3Rpb24odCxlKXtsZXQgbj1bXSxvPVtdO2lmKG0odCkmJnQubGVuZ3RoPjApe2U9ZT8/c3QuSURFTlRJVFk7bGV0IHI9c3QuaW52ZXJzZVRyYW5zZm9ybWF0aW9uKGUsTXYpLGk9c3QubXVsdGlwbHlCeVBvaW50KHIsYS5aRVJPLE52KSxzPWEubm9ybWFsaXplKHN0Lm11bHRpcGx5QnlQb2ludEFzVmVjdG9yKHIsYS5VTklUX1kselQpLHpUKSxmPW9uLmZyb21Qb2ludE5vcm1hbChpLHMsSXYpLHU9YS5ub3JtYWxpemUoc3QubXVsdGlwbHlCeVBvaW50QXNWZWN0b3IocixhLlVOSVRfWCxqVCksalQpLGM9b24uZnJvbVBvaW50Tm9ybWFsKGksdSx2diksbD0xO24ucHVzaChhLmNsb25lKHRbMF0pKTtsZXQgcD1uWzBdLGQ9dC5sZW5ndGg7Zm9yKGxldCBoPTE7aDxkOysraCl7bGV0IF89dFtoXTtpZihvbi5nZXRQb2ludERpc3RhbmNlKGMscCk8MHx8b24uZ2V0UG9pbnREaXN0YW5jZShjLF8pPDApe2xldCBnPXlvLmxpbmVTZWdtZW50UGxhbmUocCxfLGYsRnYpO2lmKG0oZykpe2xldCBiPWEubXVsdGlwbHlCeVNjYWxhcihzLDVlLTksTHYpO29uLmdldFBvaW50RGlzdGFuY2UoZixwKTwwJiZhLm5lZ2F0ZShiLGIpLG4ucHVzaChhLmFkZChnLGIsbmV3IGEpKSxvLnB1c2gobCsxKSxhLm5lZ2F0ZShiLGIpLG4ucHVzaChhLmFkZChnLGIsbmV3IGEpKSxsPTF9fW4ucHVzaChhLmNsb25lKHRbaF0pKSxsKysscD1ffW8ucHVzaChsKX1yZXR1cm57cG9zaXRpb25zOm4sbGVuZ3RoczpvfX07VW8uZ2VuZXJhdGVBcmM9ZnVuY3Rpb24odCl7bSh0KXx8KHQ9e30pO2xldCBlPXQucG9zaXRpb25zO2lmKCFtKGUpKXRocm93IG5ldyBEKCJvcHRpb25zLnBvc2l0aW9ucyBpcyByZXF1aXJlZC4iKTtsZXQgbj1lLmxlbmd0aCxvPXQuZWxsaXBzb2lkPz9ZLmRlZmF1bHQscj10LmhlaWdodD8/MCxpPUFycmF5LmlzQXJyYXkocik7aWYobjwxKXJldHVybltdO2lmKG49PT0xKXtsZXQgZz1vLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoZVswXSwkMCk7aWYocj1pP3JbMF06cixyIT09MCl7bGV0IGI9by5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoZyxocyk7YS5tdWx0aXBseUJ5U2NhbGFyKGIscixiKSxhLmFkZChnLGIsZyl9cmV0dXJuW2cueCxnLnksZy56XX1sZXQgcz10Lm1pbkRpc3RhbmNlO2lmKCFtKHMpKXtsZXQgZz10LmdyYW51bGFyaXR5Pz9QLlJBRElBTlNfUEVSX0RFR1JFRTtzPVAuY2hvcmRMZW5ndGgoZyxvLm1heGltdW1SYWRpdXMpfWxldCBmPTAsdTtmb3IodT0wO3U8bi0xO3UrKylmKz1Vby5udW1iZXJPZlBvaW50cyhlW3VdLGVbdSsxXSxzKTtsZXQgYz0oZisxKSozLGw9bmV3IEFycmF5KGMpLHA9MDtmb3IodT0wO3U8bi0xO3UrKyl7bGV0IGc9ZVt1XSxiPWVbdSsxXSx3PWk/clt1XTpyLE89aT9yW3UrMV06cjtwPUJ2KGcsYixzLG8sdyxPLGwscCl9WTAubGVuZ3RoPTA7bGV0IGQ9ZVtuLTFdLGg9by5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhkLHBkKTtoLmhlaWdodD1pP3Jbbi0xXTpyO2xldCBfPW8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oaCxocyk7cmV0dXJuIGEucGFjayhfLGwsYy0zKSxsfTtIVD1uZXcgY3Qsa3Y9bmV3IGN0O1VvLmdlbmVyYXRlUmh1bWJBcmM9ZnVuY3Rpb24odCl7bSh0KXx8KHQ9e30pO2xldCBlPXQucG9zaXRpb25zO2lmKCFtKGUpKXRocm93IG5ldyBEKCJvcHRpb25zLnBvc2l0aW9ucyBpcyByZXF1aXJlZC4iKTtsZXQgbj1lLmxlbmd0aCxvPXQuZWxsaXBzb2lkPz9ZLmRlZmF1bHQscj10LmhlaWdodD8/MCxpPUFycmF5LmlzQXJyYXkocik7aWYobjwxKXJldHVybltdO2lmKG49PT0xKXtsZXQgdz1vLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoZVswXSwkMCk7aWYocj1pP3JbMF06cixyIT09MCl7bGV0IE89by5nZW9kZXRpY1N1cmZhY2VOb3JtYWwodyxocyk7YS5tdWx0aXBseUJ5U2NhbGFyKE8scixPKSxhLmFkZCh3LE8sdyl9cmV0dXJuW3cueCx3Lnksdy56XX1sZXQgcz10LmdyYW51bGFyaXR5Pz9QLlJBRElBTlNfUEVSX0RFR1JFRSxmPTAsdSxjPW8uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoZVswXSxIVCksbDtmb3IodT0wO3U8bi0xO3UrKylsPW8uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoZVt1KzFdLGt2KSxmKz1Vby5udW1iZXJPZlBvaW50c1JodW1iTGluZShjLGwscyksYz1jdC5jbG9uZShsLEhUKTtsZXQgcD0oZisxKSozLGQ9bmV3IEFycmF5KHApLGg9MDtmb3IodT0wO3U8bi0xO3UrKyl7bGV0IHc9ZVt1XSxPPWVbdSsxXSxFPWk/clt1XTpyLFQ9aT9yW3UrMV06cjtoPVV2KHcsTyxzLG8sRSxULGQsaCl9WTAubGVuZ3RoPTA7bGV0IF89ZVtuLTFdLGc9by5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhfLHBkKTtnLmhlaWdodD1pP3Jbbi0xXTpyO2xldCBiPW8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oZyxocyk7cmV0dXJuIGEucGFjayhiLGQscC0zKSxkfTtVby5nZW5lcmF0ZUNhcnRlc2lhbkFyYz1mdW5jdGlvbih0KXtsZXQgZT1Vby5nZW5lcmF0ZUFyYyh0KSxuPWUubGVuZ3RoLzMsbz1uZXcgQXJyYXkobik7Zm9yKGxldCByPTA7cjxuO3IrKylvW3JdPWEudW5wYWNrKGUsciozKTtyZXR1cm4gb307VW8uZ2VuZXJhdGVDYXJ0ZXNpYW5SaHVtYkFyYz1mdW5jdGlvbih0KXtsZXQgZT1Vby5nZW5lcmF0ZVJodW1iQXJjKHQpLG49ZS5sZW5ndGgvMyxvPW5ldyBBcnJheShuKTtmb3IobGV0IHI9MDtyPG47cisrKW9bcl09YS51bnBhY2soZSxyKjMpO3JldHVybiBvfTtBbj1Vb30pO2Z1bmN0aW9uIEdmKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImlkZW50aWZpZXIgaXMgcmVxdWlyZWQuIik7bShLVFt0XSl8fChLVFt0XT0hMCxjb25zb2xlLndhcm4oZT8/dCkpfXZhciBLVCxkZCxaMD0kKCgpPT57ZnQoKTtIdCgpO0tUPXt9O0dmLmdlb21ldHJ5T3V0bGluZXM9IkVudGl0eSBnZW9tZXRyeSBvdXRsaW5lcyBhcmUgdW5zdXBwb3J0ZWQgb24gdGVycmFpbi4gT3V0bGluZXMgd2lsbCBiZSBkaXNhYmxlZC4gVG8gZW5hYmxlIG91dGxpbmVzLCBkaXNhYmxlIGdlb21ldHJ5IHRlcnJhaW4gY2xhbXBpbmcgYnkgZXhwbGljaXRseSBzZXR0aW5nIGhlaWdodCB0byAwLiI7R2YuZ2VvbWV0cnlaSW5kZXg9IkVudGl0eSBnZW9tZXRyeSB3aXRoIHpJbmRleCBhcmUgdW5zdXBwb3J0ZWQgd2hlbiBoZWlnaHQgb3IgZXh0cnVkZWRIZWlnaHQgYXJlIGRlZmluZWQuICB6SW5kZXggd2lsbCBiZSBpZ25vcmVkIjtHZi5nZW9tZXRyeUhlaWdodFJlZmVyZW5jZT0iRW50aXR5IGNvcnJpZG9yLCBlbGxpcHNlLCBwb2x5Z29uIG9yIHJlY3RhbmdsZSB3aXRoIGhlaWdodFJlZmVyZW5jZSBtdXN0IGFsc28gaGF2ZSBhIGRlZmluZWQgaGVpZ2h0LiAgaGVpZ2h0UmVmZXJlbmNlIHdpbGwgYmUgaWdub3JlZCI7R2YuZ2VvbWV0cnlFeHRydWRlZEhlaWdodFJlZmVyZW5jZT0iRW50aXR5IGNvcnJpZG9yLCBlbGxpcHNlLCBwb2x5Z29uIG9yIHJlY3RhbmdsZSB3aXRoIGV4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlIG11c3QgYWxzbyBoYXZlIGEgZGVmaW5lZCBleHRydWRlZEhlaWdodC4gIGV4dHJ1ZGVkSGVpZ2h0UmVmZXJlbmNlIHdpbGwgYmUgaWdub3JlZCI7ZGQ9R2Z9KTtmdW5jdGlvbiBZdih0LGUpe2xldCBuPW5ldyBBcnJheSh0Lmxlbmd0aCk7Zm9yKGxldCBvPTA7bzx0Lmxlbmd0aDtvKyspe2xldCByPXRbb107UTA9ZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhyLFEwKSxuW29dPVEwLmhlaWdodCx0W29dPWUuc2NhbGVUb0dlb2RldGljU3VyZmFjZShyLHIpfXJldHVybiBufWZ1bmN0aW9uIEowKHQsZSxuLG8pe2xldCByPXRbMF0saT10WzFdLHM9YS5hbmdsZUJldHdlZW4ocixpKSxmPU1hdGguY2VpbChzL28pLHU9bmV3IEFycmF5KGYpLGM7aWYoZT09PW4pe2ZvcihjPTA7YzxmO2MrKyl1W2NdPWU7cmV0dXJuIHUucHVzaChuKSx1fWxldCBwPShuLWUpL2Y7Zm9yKGM9MTtjPGY7YysrKXtsZXQgZD1lK2MqcDt1W2NdPWR9cmV0dXJuIHVbMF09ZSx1LnB1c2gobiksdX1mdW5jdGlvbiAkdih0LGUsbixvKXtsZXQgcj1uZXcgQW8obixvKSxpPXIucHJvamVjdFBvaW50T250b1BsYW5lKGEuYWRkKG4sdCxoZCksaGQpLHM9ci5wcm9qZWN0UG9pbnRPbnRvUGxhbmUoYS5hZGQobixlLF9kKSxfZCksZj1KLmFuZ2xlQmV0d2VlbihpLHMpO3JldHVybiBzLngqaS55LXMueSppLng+PTA/LWY6Zn1mdW5jdGlvbiBraSh0LGUsbixvLHIsaSxzLGYpe2xldCB1PXRGLGM9ZUY7eWM9JG8uZWFzdE5vcnRoVXBUb0ZpeGVkRnJhbWUodCxyLHljKSx1PXN0Lm11bHRpcGx5QnlQb2ludEFzVmVjdG9yKHljLFp2LHUpLHU9YS5ub3JtYWxpemUodSx1KTtsZXQgbD0kdih1LGUsdCxyKTt0Xz1aLmZyb21Sb3RhdGlvbloobCx0XyksV1Quej1pLHljPXN0Lm11bHRpcGx5VHJhbnNmb3JtYXRpb24oeWMsc3QuZnJvbVJvdGF0aW9uVHJhbnNsYXRpb24odF8sV1QsUXYpLHljKTtsZXQgcD1KdjtwWzBdPXM7Zm9yKGxldCBkPTA7ZDxmO2QrKylmb3IobGV0IGg9MDtoPG4ubGVuZ3RoO2grPTMpYz1hLmZyb21BcnJheShuLGgsYyksYz1aLm11bHRpcGx5QnlWZWN0b3IocCxjLGMpLGM9c3QubXVsdGlwbHlCeVBvaW50KHljLGMsYyksby5wdXNoKGMueCxjLnksYy56KTtyZXR1cm4gb31mdW5jdGlvbiBlXyh0LGUsbixvLHIsaSxzKXtmb3IobGV0IGY9MDtmPHQubGVuZ3RoO2YrPTMpe2xldCB1PWEuZnJvbUFycmF5KHQsZixuRik7bz1raSh1LGUsbixvLHIsaVtmLzNdLHMsMSl9cmV0dXJuIG99ZnVuY3Rpb24gb0YodCxlKXtsZXQgbj10Lmxlbmd0aCxvPW5ldyBBcnJheShuKjYpLHI9MCxpPWUueCtlLndpZHRoLzIscz1lLnkrZS5oZWlnaHQvMixmPXRbMF07b1tyKytdPWYueC1pLG9bcisrXT0wLG9bcisrXT1mLnktcztmb3IobGV0IHU9MTt1PG47dSsrKXtmPXRbdV07bGV0IGM9Zi54LWksbD1mLnktcztvW3IrK109YyxvW3IrK109MCxvW3IrK109bCxvW3IrK109YyxvW3IrK109MCxvW3IrK109bH1yZXR1cm4gZj10WzBdLG9bcisrXT1mLngtaSxvW3IrK109MCxvW3IrK109Zi55LXMsb31mdW5jdGlvbiBYVCh0LGUpe2xldCBuPXQubGVuZ3RoLG89bmV3IEFycmF5KG4qMykscj0wLGk9ZS54K2Uud2lkdGgvMixzPWUueStlLmhlaWdodC8yO2ZvcihsZXQgZj0wO2Y8bjtmKyspb1tyKytdPXRbZl0ueC1pLG9bcisrXT0wLG9bcisrXT10W2ZdLnktcztyZXR1cm4gb31mdW5jdGlvbiBRVCh0LGUsbixvLHIsaSxzLGYsdSxjKXtsZXQgbD1hLmFuZ2xlQmV0d2VlbihhLnN1YnRyYWN0KGUsdCxBYSksYS5zdWJ0cmFjdChuLHQsbWQpKSxwPW89PT1mbi5CRVZFTEVEPzA6TWF0aC5jZWlsKGwvUC50b1JhZGlhbnMoNSkpLGQ7cj9kPVouZnJvbVF1YXRlcm5pb24odGUuZnJvbUF4aXNBbmdsZShhLm5lZ2F0ZSh0LEFhKSxsLyhwKzEpLFlUKSxaVCk6ZD1aLmZyb21RdWF0ZXJuaW9uKHRlLmZyb21BeGlzQW5nbGUodCxsLyhwKzEpLFlUKSxaVCk7bGV0IGgsXztpZihlPWEuY2xvbmUoZSwkVCkscD4wKXtsZXQgZz1jPzI6MTtmb3IobGV0IGI9MDtiPHA7YisrKWU9Wi5tdWx0aXBseUJ5VmVjdG9yKGQsZSxlKSxoPWEuc3VidHJhY3QoZSx0LEFhKSxoPWEubm9ybWFsaXplKGgsaCkscnx8KGg9YS5uZWdhdGUoaCxoKSksXz1pLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UoZSxtZCkscz1raShfLGgsZixzLGksdSwxLGcpfWVsc2UgaD1hLnN1YnRyYWN0KGUsdCxBYSksaD1hLm5vcm1hbGl6ZShoLGgpLHJ8fChoPWEubmVnYXRlKGgsaCkpLF89aS5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKGUsbWQpLHM9a2koXyxoLGYscyxpLHUsMSwxKSxuPWEuY2xvbmUobiwkVCksaD1hLnN1YnRyYWN0KG4sdCxBYSksaD1hLm5vcm1hbGl6ZShoLGgpLHJ8fChoPWEubmVnYXRlKGgsaCkpLF89aS5zY2FsZVRvR2VvZGV0aWNTdXJmYWNlKG4sbWQpLHM9a2koXyxoLGYscyxpLHUsMSwxKTtyZXR1cm4gc312YXIgdW8sR3YsVnYsenYsanYsSHYscXYsS3YsV3YsWHYsQWEsbWQsVmYsUTAsaGQsX2QsWnYseWMsUXYsdF8sSnYsdEYsZUYsV1QsbkYsWVQsJFQsWlQsckYsaUYsX3MseWQ9JCgoKT0+e2tlKCk7RHQoKTtfcigpO0llKCk7X2MoKTtwYSgpO0t0KCk7VW4oKTtrbigpO2dhKCk7WG8oKTthcygpO1owKCk7dW89W25ldyBhLG5ldyBhXSxHdj1uZXcgYSxWdj1uZXcgYSx6dj1uZXcgYSxqdj1uZXcgYSxIdj1uZXcgYSxxdj1uZXcgYSxLdj1uZXcgYSxXdj1uZXcgYSxYdj1uZXcgYSxBYT1uZXcgYSxtZD1uZXcgYSxWZj17fSxRMD1uZXcgY3Q7aGQ9bmV3IGEsX2Q9bmV3IGE7WnY9bmV3IGEoLTEsMCwwKSx5Yz1uZXcgc3QsUXY9bmV3IHN0LHRfPW5ldyBaLEp2PVouSURFTlRJVFkuY2xvbmUoKSx0Rj1uZXcgYSxlRj1uZXcgbWUsV1Q9bmV3IGE7bkY9bmV3IGE7WVQ9bmV3IHRlLCRUPW5ldyBhLFpUPW5ldyBaO1ZmLnJlbW92ZUR1cGxpY2F0ZXNGcm9tU2hhcGU9ZnVuY3Rpb24odCl7bGV0IGU9dC5sZW5ndGgsbj1bXTtmb3IobGV0IG89ZS0xLHI9MDtyPGU7bz1yKyspe2xldCBpPXRbb10scz10W3JdO0ouZXF1YWxzKGkscyl8fG4ucHVzaChzKX1yZXR1cm4gbn07VmYuYW5nbGVJc0dyZWF0ZXJUaGFuUGk9ZnVuY3Rpb24odCxlLG4sbyl7bGV0IHI9bmV3IEFvKG4sbyksaT1yLnByb2plY3RQb2ludE9udG9QbGFuZShhLmFkZChuLHQsaGQpLGhkKSxzPXIucHJvamVjdFBvaW50T250b1BsYW5lKGEuYWRkKG4sZSxfZCksX2QpO3JldHVybiBzLngqaS55LXMueSppLng+PTB9O3JGPW5ldyBhLGlGPW5ldyBhO1ZmLmNvbXB1dGVQb3NpdGlvbnM9ZnVuY3Rpb24odCxlLG4sbyxyKXtsZXQgaT1vLl9lbGxpcHNvaWQscz1Zdih0LGkpLGY9by5fZ3JhbnVsYXJpdHksdT1vLl9jb3JuZXJUeXBlLGM9cj9vRihlLG4pOlhUKGUsbiksbD1yP1hUKGUsbik6dm9pZCAwLHA9bi5oZWlnaHQvMixkPW4ud2lkdGgvMixoPXQubGVuZ3RoLF89W10sZz1yP1tdOnZvaWQgMCxiPUd2LHc9VnYsTz16dixFPWp2LFQ9SHYseD1xdixNPUt2LE49V3YsRj1YdixJPXRbMF0sdj10WzFdO0U9aS5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoSSxFKSxiPWEuc3VidHJhY3QodixJLGIpLGI9YS5ub3JtYWxpemUoYixiKSxOPWEuY3Jvc3MoRSxiLE4pLE49YS5ub3JtYWxpemUoTixOKTtsZXQgQj1zWzBdLEE9c1sxXTtyJiYoZz1raShJLE4sbCxnLGksQitwLDEsMSkpLEY9YS5jbG9uZShJLEYpLEk9dix3PWEubmVnYXRlKGIsdyk7bGV0IFMsQztmb3IobGV0IGo9MTtqPGgtMTtqKyspe2xldCBrPXI/MjoxO2lmKHY9dFtqKzFdLEkuZXF1YWxzKHYpKXtkZCgiUG9zaXRpb25zIGFyZSB0b28gY2xvc2UgYW5kIGFyZSBjb25zaWRlcmVkIGVxdWl2YWxlbnQgd2l0aCByb3VuZGluZyBlcnJvci4iKTtjb250aW51ZX1iPWEuc3VidHJhY3QodixJLGIpLGI9YS5ub3JtYWxpemUoYixiKSxFPWkuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKEksRSk7bGV0IHE9YS5tdWx0aXBseUJ5U2NhbGFyKEUsYS5kb3QoYixFKSxyRik7YS5zdWJ0cmFjdChiLHEscSksYS5ub3JtYWxpemUocSxxKTtsZXQgVz1hLm11bHRpcGx5QnlTY2FsYXIoRSxhLmRvdCh3LEUpLGlGKTtpZihhLnN1YnRyYWN0KHcsVyxXKSxhLm5vcm1hbGl6ZShXLFcpLCFQLmVxdWFsc0Vwc2lsb24oTWF0aC5hYnMoYS5kb3QocSxXKSksMSxQLkVQU0lMT043KSl7Tz1hLmFkZChiLHcsTyksTz1hLm5vcm1hbGl6ZShPLE8pLE89YS5jcm9zcyhPLEUsTyksTz1hLmNyb3NzKEUsTyxPKSxPPWEubm9ybWFsaXplKE8sTyk7bGV0IG50PTEvTWF0aC5tYXgoLjI1LGEubWFnbml0dWRlKGEuY3Jvc3MoTyx3LEFhKSkpLGF0PVZmLmFuZ2xlSXNHcmVhdGVyVGhhblBpKGIsdyxJLGkpO2F0PyhUPWEuYWRkKEksYS5tdWx0aXBseUJ5U2NhbGFyKE8sbnQqZCxPKSxUKSx4PWEuYWRkKFQsYS5tdWx0aXBseUJ5U2NhbGFyKE4sZCx4KSx4KSx1b1swXT1hLmNsb25lKEYsdW9bMF0pLHVvWzFdPWEuY2xvbmUoeCx1b1sxXSksUz1KMCh1byxCK3AsQStwLGYpLEM9QW4uZ2VuZXJhdGVBcmMoe3Bvc2l0aW9uczp1byxncmFudWxhcml0eTpmLGVsbGlwc29pZDppfSksXz1lXyhDLE4sYyxfLGksUywxKSxOPWEuY3Jvc3MoRSxiLE4pLE49YS5ub3JtYWxpemUoTixOKSxNPWEuYWRkKFQsYS5tdWx0aXBseUJ5U2NhbGFyKE4sZCxNKSxNKSx1PT09Zm4uUk9VTkRFRHx8dT09PWZuLkJFVkVMRUQ/UVQoVCx4LE0sdSxhdCxpLF8sYyxBK3Ascik6KE89YS5uZWdhdGUoTyxPKSxfPWtpKEksTyxjLF8saSxBK3AsbnQsaykpLEY9YS5jbG9uZShNLEYpKTooVD1hLmFkZChJLGEubXVsdGlwbHlCeVNjYWxhcihPLG50KmQsTyksVCkseD1hLmFkZChULGEubXVsdGlwbHlCeVNjYWxhcihOLC1kLHgpLHgpLHVvWzBdPWEuY2xvbmUoRix1b1swXSksdW9bMV09YS5jbG9uZSh4LHVvWzFdKSxTPUowKHVvLEIrcCxBK3AsZiksQz1Bbi5nZW5lcmF0ZUFyYyh7cG9zaXRpb25zOnVvLGdyYW51bGFyaXR5OmYsZWxsaXBzb2lkOml9KSxfPWVfKEMsTixjLF8saSxTLDEpLE49YS5jcm9zcyhFLGIsTiksTj1hLm5vcm1hbGl6ZShOLE4pLE09YS5hZGQoVCxhLm11bHRpcGx5QnlTY2FsYXIoTiwtZCxNKSxNKSx1PT09Zm4uUk9VTkRFRHx8dT09PWZuLkJFVkVMRUQ/UVQoVCx4LE0sdSxhdCxpLF8sYyxBK3Ascik6Xz1raShJLE8sYyxfLGksQStwLG50LGspLEY9YS5jbG9uZShNLEYpKSx3PWEubmVnYXRlKGIsdyl9ZWxzZSBfPWtpKEYsTixjLF8saSxCK3AsMSwxKSxGPUk7Qj1BLEE9c1tqKzFdLEk9dn11b1swXT1hLmNsb25lKEYsdW9bMF0pLHVvWzFdPWEuY2xvbmUoSSx1b1sxXSksUz1KMCh1byxCK3AsQStwLGYpLEM9QW4uZ2VuZXJhdGVBcmMoe3Bvc2l0aW9uczp1byxncmFudWxhcml0eTpmLGVsbGlwc29pZDppfSksXz1lXyhDLE4sYyxfLGksUywxKSxyJiYoZz1raShJLE4sbCxnLGksQStwLDEsMSkpLGg9Xy5sZW5ndGg7bGV0IEw9cj9oK2cubGVuZ3RoOmgsej1uZXcgRmxvYXQ2NEFycmF5KEwpO3JldHVybiB6LnNldChfKSxyJiZ6LnNldChnLGgpLHp9O19zPVZmfSk7ZnVuY3Rpb24gZ2QodCxlLG4sbyxyKXtsZXQgaT1hLmFuZ2xlQmV0d2VlbihhLnN1YnRyYWN0KGUsdCxiYSksYS5zdWJ0cmFjdChuLHQsb08pKSxzPW89PT1mbi5CRVZFTEVEPzE6TWF0aC5jZWlsKGkvUC50b1JhZGlhbnMoNSkpKzEsZj1zKjMsdT1uZXcgQXJyYXkoZik7dVtmLTNdPW4ueCx1W2YtMl09bi55LHVbZi0xXT1uLno7bGV0IGM7cj9jPVouZnJvbVF1YXRlcm5pb24odGUuZnJvbUF4aXNBbmdsZShhLm5lZ2F0ZSh0LGJhKSxpL3MsdE8pLGVPKTpjPVouZnJvbVF1YXRlcm5pb24odGUuZnJvbUF4aXNBbmdsZSh0LGkvcyx0TyksZU8pO2xldCBsPTA7ZT1hLmNsb25lKGUsYmEpO2ZvcihsZXQgcD0wO3A8cztwKyspZT1aLm11bHRpcGx5QnlWZWN0b3IoYyxlLGUpLHVbbCsrXT1lLngsdVtsKytdPWUueSx1W2wrK109ZS56O3JldHVybiB1fWZ1bmN0aW9uIG1GKHQpe2xldCBlPXJPLG49aU8sbz1zTyxyPXRbMV07bj1hLmZyb21BcnJheSh0WzFdLHIubGVuZ3RoLTMsbiksbz1hLmZyb21BcnJheSh0WzBdLDAsbyksZT1hLm1pZHBvaW50KG4sbyxlKTtsZXQgaT1nZChlLG4sbyxmbi5ST1VOREVELCExKSxzPXQubGVuZ3RoLTEsZj10W3MtMV07cj10W3NdLG49YS5mcm9tQXJyYXkoZixmLmxlbmd0aC0zLG4pLG89YS5mcm9tQXJyYXkociwwLG8pLGU9YS5taWRwb2ludChuLG8sZSk7bGV0IHU9Z2QoZSxuLG8sZm4uUk9VTkRFRCwhMSk7cmV0dXJuW2ksdV19ZnVuY3Rpb24gbk8odCxlLG4sbyl7bGV0IHI9YmE7cmV0dXJuIG8/cj1hLmFkZCh0LGUscik6KGU9YS5uZWdhdGUoZSxlKSxyPWEuYWRkKHQsZSxyKSksW3IueCxyLnksci56LG4ueCxuLnksbi56XX1mdW5jdGlvbiBuXyh0LGUsbixvKXtsZXQgcj1uZXcgQXJyYXkodC5sZW5ndGgpLGk9bmV3IEFycmF5KHQubGVuZ3RoKSxzPWEubXVsdGlwbHlCeVNjYWxhcihlLG4sYmEpLGY9YS5uZWdhdGUocyxvTyksdT0wLGM9dC5sZW5ndGgtMTtmb3IobGV0IGw9MDtsPHQubGVuZ3RoO2wrPTMpe2xldCBwPWEuZnJvbUFycmF5KHQsbCxzRiksZD1hLmFkZChwLGYsSlQpO3JbdSsrXT1kLngsclt1KytdPWQueSxyW3UrK109ZC56O2xldCBoPWEuYWRkKHAscyxKVCk7aVtjLS1dPWgueixpW2MtLV09aC55LGlbYy0tXT1oLnh9cmV0dXJuIG8ucHVzaChyLGkpLG99dmFyIG9fLGJhLG9PLHNGLEpULGtvLHJPLGlPLHNPLGNGLGFGLGZGLHVGLGxGLHBGLGRGLHRPLGVPLGhGLF9GLEtlLHJfPSQoKCk9PntEdCgpO19jKCk7ZnQoKTtLdCgpO1VuKCk7Z2EoKTt5ZCgpO1hvKCk7b189e30sYmE9bmV3IGEsb089bmV3IGEsc0Y9bmV3IGEsSlQ9bmV3IGEsa289W25ldyBhLG5ldyBhXSxyTz1uZXcgYSxpTz1uZXcgYSxzTz1uZXcgYSxjRj1uZXcgYSxhRj1uZXcgYSxmRj1uZXcgYSx1Rj1uZXcgYSxsRj1uZXcgYSxwRj1uZXcgYSxkRj1uZXcgYSx0Tz1uZXcgdGUsZU89bmV3IFo7b18uYWRkQXR0cmlidXRlPWZ1bmN0aW9uKHQsZSxuLG8pe2xldCByPWUueCxpPWUueSxzPWUuejttKG4pJiYodFtuXT1yLHRbbisxXT1pLHRbbisyXT1zKSxtKG8pJiYodFtvXT1zLHRbby0xXT1pLHRbby0yXT1yKX07aEY9bmV3IGEsX0Y9bmV3IGE7b18uY29tcHV0ZVBvc2l0aW9ucz1mdW5jdGlvbih0KXtsZXQgZT10LmdyYW51bGFyaXR5LG49dC5wb3NpdGlvbnMsbz10LmVsbGlwc29pZCxyPXQud2lkdGgvMixpPXQuY29ybmVyVHlwZSxzPXQuc2F2ZUF0dHJpYnV0ZXMsZj1yTyx1PWlPLGM9c08sbD1jRixwPWFGLGQ9ZkYsaD11RixfPWxGLGc9cEYsYj1kRix3PVtdLE89cz9bXTp2b2lkIDAsRT1zP1tdOnZvaWQgMCxUPW5bMF0seD1uWzFdO3U9YS5ub3JtYWxpemUoYS5zdWJ0cmFjdCh4LFQsdSksdSksZj1vLmdlb2RldGljU3VyZmFjZU5vcm1hbChULGYpLGw9YS5ub3JtYWxpemUoYS5jcm9zcyhmLHUsbCksbCkscyYmKE8ucHVzaChsLngsbC55LGwueiksRS5wdXNoKGYueCxmLnksZi56KSksaD1hLmNsb25lKFQsaCksVD14LGM9YS5uZWdhdGUodSxjKTtsZXQgTSxOPVtdLEYsST1uLmxlbmd0aDtmb3IoRj0xO0Y8SS0xO0YrKyl7Zj1vLmdlb2RldGljU3VyZmFjZU5vcm1hbChULGYpLHg9bltGKzFdLHU9YS5ub3JtYWxpemUoYS5zdWJ0cmFjdCh4LFQsdSksdSk7bGV0IEI9YS5tdWx0aXBseUJ5U2NhbGFyKGYsYS5kb3QodSxmKSxoRik7YS5zdWJ0cmFjdCh1LEIsQiksYS5ub3JtYWxpemUoQixCKTtsZXQgQT1hLm11bHRpcGx5QnlTY2FsYXIoZixhLmRvdChjLGYpLF9GKTtpZihhLnN1YnRyYWN0KGMsQSxBKSxhLm5vcm1hbGl6ZShBLEEpLCFQLmVxdWFsc0Vwc2lsb24oTWF0aC5hYnMoYS5kb3QoQixBKSksMSxQLkVQU0lMT043KSl7cD1hLm5vcm1hbGl6ZShhLmFkZCh1LGMscCkscCkscD1hLmNyb3NzKHAsZixwKSxwPWEuY3Jvc3MoZixwLHApLHA9YS5ub3JtYWxpemUocCxwKTtsZXQgQz1yL01hdGgubWF4KC4yNSxhLm1hZ25pdHVkZShhLmNyb3NzKHAsYyxiYSkpKSxMPV9zLmFuZ2xlSXNHcmVhdGVyVGhhblBpKHUsYyxULG8pO3A9YS5tdWx0aXBseUJ5U2NhbGFyKHAsQyxwKSxMPyhfPWEuYWRkKFQscCxfKSxiPWEuYWRkKF8sYS5tdWx0aXBseUJ5U2NhbGFyKGwscixiKSxiKSxnPWEuYWRkKF8sYS5tdWx0aXBseUJ5U2NhbGFyKGwscioyLGcpLGcpLGtvWzBdPWEuY2xvbmUoaCxrb1swXSksa29bMV09YS5jbG9uZShiLGtvWzFdKSxNPUFuLmdlbmVyYXRlQXJjKHtwb3NpdGlvbnM6a28sZ3JhbnVsYXJpdHk6ZSxlbGxpcHNvaWQ6b30pLHc9bl8oTSxsLHIsdykscyYmKE8ucHVzaChsLngsbC55LGwueiksRS5wdXNoKGYueCxmLnksZi56KSksZD1hLmNsb25lKGcsZCksbD1hLm5vcm1hbGl6ZShhLmNyb3NzKGYsdSxsKSxsKSxnPWEuYWRkKF8sYS5tdWx0aXBseUJ5U2NhbGFyKGwscioyLGcpLGcpLGg9YS5hZGQoXyxhLm11bHRpcGx5QnlTY2FsYXIobCxyLGgpLGgpLGk9PT1mbi5ST1VOREVEfHxpPT09Zm4uQkVWRUxFRD9OLnB1c2goe2xlZnRQb3NpdGlvbnM6Z2QoXyxkLGcsaSxMKX0pOk4ucHVzaCh7bGVmdFBvc2l0aW9uczpuTyhULGEubmVnYXRlKHAscCksZyxMKX0pKTooZz1hLmFkZChULHAsZyksYj1hLmFkZChnLGEubmVnYXRlKGEubXVsdGlwbHlCeVNjYWxhcihsLHIsYiksYiksYiksXz1hLmFkZChnLGEubmVnYXRlKGEubXVsdGlwbHlCeVNjYWxhcihsLHIqMixfKSxfKSxfKSxrb1swXT1hLmNsb25lKGgsa29bMF0pLGtvWzFdPWEuY2xvbmUoYixrb1sxXSksTT1Bbi5nZW5lcmF0ZUFyYyh7cG9zaXRpb25zOmtvLGdyYW51bGFyaXR5OmUsZWxsaXBzb2lkOm99KSx3PW5fKE0sbCxyLHcpLHMmJihPLnB1c2gobC54LGwueSxsLnopLEUucHVzaChmLngsZi55LGYueikpLGQ9YS5jbG9uZShfLGQpLGw9YS5ub3JtYWxpemUoYS5jcm9zcyhmLHUsbCksbCksXz1hLmFkZChnLGEubmVnYXRlKGEubXVsdGlwbHlCeVNjYWxhcihsLHIqMixfKSxfKSxfKSxoPWEuYWRkKGcsYS5uZWdhdGUoYS5tdWx0aXBseUJ5U2NhbGFyKGwscixoKSxoKSxoKSxpPT09Zm4uUk9VTkRFRHx8aT09PWZuLkJFVkVMRUQ/Ti5wdXNoKHtyaWdodFBvc2l0aW9uczpnZChnLGQsXyxpLEwpfSk6Ti5wdXNoKHtyaWdodFBvc2l0aW9uczpuTyhULHAsXyxMKX0pKSxjPWEubmVnYXRlKHUsYyl9VD14fWY9by5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoVCxmKSxrb1swXT1hLmNsb25lKGgsa29bMF0pLGtvWzFdPWEuY2xvbmUoVCxrb1sxXSksTT1Bbi5nZW5lcmF0ZUFyYyh7cG9zaXRpb25zOmtvLGdyYW51bGFyaXR5OmUsZWxsaXBzb2lkOm99KSx3PW5fKE0sbCxyLHcpLHMmJihPLnB1c2gobC54LGwueSxsLnopLEUucHVzaChmLngsZi55LGYueikpO2xldCB2O3JldHVybiBpPT09Zm4uUk9VTkRFRCYmKHY9bUYodykpLHtwb3NpdGlvbnM6dyxjb3JuZXJzOk4sbGVmdHM6Tyxub3JtYWxzOkUsZW5kUG9zaXRpb25zOnZ9fTtLZT1vX30pO2Z1bmN0aW9uIHBPKHQsZSl7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspdFtuXT1lLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UodFtuXSx0W25dKTtyZXR1cm4gdH1mdW5jdGlvbiBXcih0LGUsbixvLHIsaSl7bGV0IHM9dC5ub3JtYWxzLGY9dC50YW5nZW50cyx1PXQuYml0YW5nZW50cyxjPWEubm9ybWFsaXplKGEuY3Jvc3MobixlLHlzKSx5cyk7aS5ub3JtYWwmJktlLmFkZEF0dHJpYnV0ZShzLGUsbyxyKSxpLnRhbmdlbnQmJktlLmFkZEF0dHJpYnV0ZShmLGMsbyxyKSxpLmJpdGFuZ2VudCYmS2UuYWRkQXR0cmlidXRlKHUsbixvLHIpfWZ1bmN0aW9uIGRPKHQsZSxuKXtsZXQgbz10LnBvc2l0aW9ucyxyPXQuY29ybmVycyxpPXQuZW5kUG9zaXRpb25zLHM9dC5sZWZ0cyxmPXQubm9ybWFscyx1PW5ldyBpZSxjLGw9MCxwPTAsZCxoPTAsXztmb3IoZD0wO2Q8by5sZW5ndGg7ZCs9MilfPW9bZF0ubGVuZ3RoLTMsbCs9XyxoKz1fKjIscCs9b1tkKzFdLmxlbmd0aC0zO2ZvcihsKz0zLHArPTMsZD0wO2Q8ci5sZW5ndGg7ZCsrKXtjPXJbZF07bGV0IG90PXJbZF0ubGVmdFBvc2l0aW9uczttKG90KT8oXz1vdC5sZW5ndGgsbCs9XyxoKz1fKTooXz1yW2RdLnJpZ2h0UG9zaXRpb25zLmxlbmd0aCxwKz1fLGgrPV8pfWxldCBnPW0oaSksYjtnJiYoYj1pWzBdLmxlbmd0aC0zLGwrPWIscCs9YixiLz0zLGgrPWIqNik7bGV0IHc9bCtwLE89bmV3IEZsb2F0NjRBcnJheSh3KSxFPWUubm9ybWFsP25ldyBGbG9hdDMyQXJyYXkodyk6dm9pZCAwLFQ9ZS50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkodyk6dm9pZCAwLHg9ZS5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheSh3KTp2b2lkIDAsTT17bm9ybWFsczpFLHRhbmdlbnRzOlQsYml0YW5nZW50czp4fSxOPTAsRj13LTEsSSx2LEIsQSxTPWZPLEM9dU8sTCx6LGo9Yi8yLGs9THQuY3JlYXRlVHlwZWRBcnJheSh3LzMsaCkscT0wO2lmKGcpe3o9QWQsTD1iZDtsZXQgb3Q9aVswXTtmb3IoUz1hLmZyb21BcnJheShmLDAsUyksQz1hLmZyb21BcnJheShzLDAsQyksZD0wO2Q8ajtkKyspej1hLmZyb21BcnJheShvdCwoai0xLWQpKjMseiksTD1hLmZyb21BcnJheShvdCwoaitkKSozLEwpLEtlLmFkZEF0dHJpYnV0ZShPLEwsTiksS2UuYWRkQXR0cmlidXRlKE8seix2b2lkIDAsRiksV3IoTSxTLEMsTixGLGUpLHY9Ti8zLEE9disxLEk9KEYtMikvMyxCPUktMSxrW3ErK109SSxrW3ErK109dixrW3ErK109QixrW3ErK109QixrW3ErK109dixrW3ErK109QSxOKz0zLEYtPTN9bGV0IFc9MCxSPTAsbnQ9b1tXKytdLGF0PW9bVysrXTtPLnNldChudCxOKSxPLnNldChhdCxGLWF0Lmxlbmd0aCsxKSxDPWEuZnJvbUFycmF5KHMsUixDKTtsZXQgbHQsX3Q7Zm9yKF89YXQubGVuZ3RoLTMsZD0wO2Q8XztkKz0zKWx0PW4uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGEuZnJvbUFycmF5KG50LGQseXMpLHlzKSxfdD1uLmdlb2RldGljU3VyZmFjZU5vcm1hbChhLmZyb21BcnJheShhdCxfLWQsd2EpLHdhKSxTPWEubm9ybWFsaXplKGEuYWRkKGx0LF90LFMpLFMpLFdyKE0sUyxDLE4sRixlKSx2PU4vMyxBPXYrMSxJPShGLTIpLzMsQj1JLTEsa1txKytdPUksa1txKytdPXYsa1txKytdPUIsa1txKytdPUIsa1txKytdPXYsa1txKytdPUEsTis9MyxGLT0zO2ZvcihsdD1uLmdlb2RldGljU3VyZmFjZU5vcm1hbChhLmZyb21BcnJheShudCxfLHlzKSx5cyksX3Q9bi5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoYS5mcm9tQXJyYXkoYXQsXyx3YSksd2EpLFM9YS5ub3JtYWxpemUoYS5hZGQobHQsX3QsUyksUyksUis9MyxkPTA7ZDxyLmxlbmd0aDtkKyspe2xldCBvdDtjPXJbZF07bGV0IFB0PWMubGVmdFBvc2l0aW9ucyxndD1jLnJpZ2h0UG9zaXRpb25zLFJ0LGR0LHJ0PWxPLHh0PUFkLEd0PWJkO2lmKFM9YS5mcm9tQXJyYXkoZixSLFMpLG0oUHQpKXtmb3IoV3IoTSxTLEMsdm9pZCAwLEYsZSksRi09MyxSdD1BLGR0PUIsb3Q9MDtvdDxQdC5sZW5ndGgvMztvdCsrKXJ0PWEuZnJvbUFycmF5KFB0LG90KjMscnQpLGtbcSsrXT1SdCxrW3ErK109ZHQtb3QtMSxrW3ErK109ZHQtb3QsS2UuYWRkQXR0cmlidXRlKE8scnQsdm9pZCAwLEYpLHh0PWEuZnJvbUFycmF5KE8sKGR0LW90LTEpKjMseHQpLEd0PWEuZnJvbUFycmF5KE8sUnQqMyxHdCksQz1hLm5vcm1hbGl6ZShhLnN1YnRyYWN0KHh0LEd0LEMpLEMpLFdyKE0sUyxDLHZvaWQgMCxGLGUpLEYtPTM7cnQ9YS5mcm9tQXJyYXkoTyxSdCozLHJ0KSx4dD1hLnN1YnRyYWN0KGEuZnJvbUFycmF5KE8sZHQqMyx4dCkscnQseHQpLEd0PWEuc3VidHJhY3QoYS5mcm9tQXJyYXkoTywoZHQtb3QpKjMsR3QpLHJ0LEd0KSxDPWEubm9ybWFsaXplKGEuYWRkKHh0LEd0LEMpLEMpLFdyKE0sUyxDLE4sdm9pZCAwLGUpLE4rPTN9ZWxzZXtmb3IoV3IoTSxTLEMsTix2b2lkIDAsZSksTis9MyxSdD1CLGR0PUEsb3Q9MDtvdDxndC5sZW5ndGgvMztvdCsrKXJ0PWEuZnJvbUFycmF5KGd0LG90KjMscnQpLGtbcSsrXT1SdCxrW3ErK109ZHQrb3Qsa1txKytdPWR0K290KzEsS2UuYWRkQXR0cmlidXRlKE8scnQsTikseHQ9YS5mcm9tQXJyYXkoTyxSdCozLHh0KSxHdD1hLmZyb21BcnJheShPLChkdCtvdCkqMyxHdCksQz1hLm5vcm1hbGl6ZShhLnN1YnRyYWN0KHh0LEd0LEMpLEMpLFdyKE0sUyxDLE4sdm9pZCAwLGUpLE4rPTM7cnQ9YS5mcm9tQXJyYXkoTyxSdCozLHJ0KSx4dD1hLnN1YnRyYWN0KGEuZnJvbUFycmF5KE8sKGR0K290KSozLHh0KSxydCx4dCksR3Q9YS5zdWJ0cmFjdChhLmZyb21BcnJheShPLGR0KjMsR3QpLHJ0LEd0KSxDPWEubm9ybWFsaXplKGEubmVnYXRlKGEuYWRkKEd0LHh0LEMpLEMpLEMpLFdyKE0sUyxDLHZvaWQgMCxGLGUpLEYtPTN9Zm9yKG50PW9bVysrXSxhdD1vW1crK10sbnQuc3BsaWNlKDAsMyksYXQuc3BsaWNlKGF0Lmxlbmd0aC0zLDMpLE8uc2V0KG50LE4pLE8uc2V0KGF0LEYtYXQubGVuZ3RoKzEpLF89YXQubGVuZ3RoLTMsUis9MyxDPWEuZnJvbUFycmF5KHMsUixDKSxvdD0wO290PGF0Lmxlbmd0aDtvdCs9MylsdD1uLmdlb2RldGljU3VyZmFjZU5vcm1hbChhLmZyb21BcnJheShudCxvdCx5cykseXMpLF90PW4uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGEuZnJvbUFycmF5KGF0LF8tb3Qsd2EpLHdhKSxTPWEubm9ybWFsaXplKGEuYWRkKGx0LF90LFMpLFMpLFdyKE0sUyxDLE4sRixlKSxBPU4vMyx2PUEtMSxCPShGLTIpLzMsST1CKzEsa1txKytdPUksa1txKytdPXYsa1txKytdPUIsa1txKytdPUIsa1txKytdPXYsa1txKytdPUEsTis9MyxGLT0zO04tPTMsRis9M31pZihTPWEuZnJvbUFycmF5KGYsZi5sZW5ndGgtMyxTKSxXcihNLFMsQyxOLEYsZSksZyl7Tis9MyxGLT0zLHo9QWQsTD1iZDtsZXQgb3Q9aVsxXTtmb3IoZD0wO2Q8ajtkKyspej1hLmZyb21BcnJheShvdCwoYi1kLTEpKjMseiksTD1hLmZyb21BcnJheShvdCxkKjMsTCksS2UuYWRkQXR0cmlidXRlKE8seix2b2lkIDAsRiksS2UuYWRkQXR0cmlidXRlKE8sTCxOKSxXcihNLFMsQyxOLEYsZSksQT1OLzMsdj1BLTEsQj0oRi0yKS8zLEk9QisxLGtbcSsrXT1JLGtbcSsrXT12LGtbcSsrXT1CLGtbcSsrXT1CLGtbcSsrXT12LGtbcSsrXT1BLE4rPTMsRi09M31pZih1LnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6T30pLGUuc3Qpe2xldCBvdD1uZXcgRmxvYXQzMkFycmF5KHcvMyoyKSxQdCxndCxSdD0wO2lmKGcpe2wvPTMscC89MztsZXQgZHQ9TWF0aC5QSS8oYisxKTtndD0xLyhsLWIrMSksUHQ9MS8ocC1iKzEpO2xldCBydCx4dD1iLzI7Zm9yKGQ9eHQrMTtkPGIrMTtkKyspcnQ9UC5QSV9PVkVSX1RXTytkdCpkLG90W1J0KytdPVB0KigxK01hdGguY29zKHJ0KSksb3RbUnQrK109LjUqKDErTWF0aC5zaW4ocnQpKTtmb3IoZD0xO2Q8cC1iKzE7ZCsrKW90W1J0KytdPWQqUHQsb3RbUnQrK109MDtmb3IoZD1iO2Q+eHQ7ZC0tKXJ0PVAuUElfT1ZFUl9UV08tZCpkdCxvdFtSdCsrXT0xLVB0KigxK01hdGguY29zKHJ0KSksb3RbUnQrK109LjUqKDErTWF0aC5zaW4ocnQpKTtmb3IoZD14dDtkPjA7ZC0tKXJ0PVAuUElfT1ZFUl9UV08tZHQqZCxvdFtSdCsrXT0xLWd0KigxK01hdGguY29zKHJ0KSksb3RbUnQrK109LjUqKDErTWF0aC5zaW4ocnQpKTtmb3IoZD1sLWI7ZD4wO2QtLSlvdFtSdCsrXT1kKmd0LG90W1J0KytdPTE7Zm9yKGQ9MTtkPHh0KzE7ZCsrKXJ0PVAuUElfT1ZFUl9UV08rZHQqZCxvdFtSdCsrXT1ndCooMStNYXRoLmNvcyhydCkpLG90W1J0KytdPS41KigxK01hdGguc2luKHJ0KSl9ZWxzZXtmb3IobC89MyxwLz0zLGd0PTEvKGwtMSksUHQ9MS8ocC0xKSxkPTA7ZDxwO2QrKylvdFtSdCsrXT1kKlB0LG90W1J0KytdPTA7Zm9yKGQ9bDtkPjA7ZC0tKW90W1J0KytdPShkLTEpKmd0LG90W1J0KytdPTF9dS5zdD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6b3R9KX1yZXR1cm4gZS5ub3JtYWwmJih1Lm5vcm1hbD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6TS5ub3JtYWxzfSkpLGUudGFuZ2VudCYmKHUudGFuZ2VudD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6TS50YW5nZW50c30pKSxlLmJpdGFuZ2VudCYmKHUuYml0YW5nZW50PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpNLmJpdGFuZ2VudHN9KSkse2F0dHJpYnV0ZXM6dSxpbmRpY2VzOmt9fWZ1bmN0aW9uIGdGKHQsZSl7aWYoIWUubm9ybWFsJiYhZS50YW5nZW50JiYhZS5iaXRhbmdlbnQmJiFlLnN0KXJldHVybiB0O2xldCBuPXQucG9zaXRpb24udmFsdWVzLG8scjsoZS5ub3JtYWx8fGUuYml0YW5nZW50KSYmKG89dC5ub3JtYWwudmFsdWVzLHI9dC5iaXRhbmdlbnQudmFsdWVzKTtsZXQgaT10LnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMTgscz1pKjMsZj1pKjIsdT1zKjIsYztpZihlLm5vcm1hbHx8ZS5iaXRhbmdlbnR8fGUudGFuZ2VudCl7bGV0IGw9ZS5ub3JtYWw/bmV3IEZsb2F0MzJBcnJheShzKjYpOnZvaWQgMCxwPWUudGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KHMqNik6dm9pZCAwLGQ9ZS5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShzKjYpOnZvaWQgMCxoPWZPLF89dU8sZz1BZCxiPWJkLHc9eUYsTz1sTyxFPXU7Zm9yKGM9MDtjPHM7Yys9Myl7bGV0IFQ9RSt1O2g9YS5mcm9tQXJyYXkobixjLGgpLF89YS5mcm9tQXJyYXkobixjK3MsXyksZz1hLmZyb21BcnJheShuLChjKzMpJXMsZyksXz1hLnN1YnRyYWN0KF8saCxfKSxnPWEuc3VidHJhY3QoZyxoLGcpLGI9YS5ub3JtYWxpemUoYS5jcm9zcyhfLGcsYiksYiksZS5ub3JtYWwmJihLZS5hZGRBdHRyaWJ1dGUobCxiLFQpLEtlLmFkZEF0dHJpYnV0ZShsLGIsVCszKSxLZS5hZGRBdHRyaWJ1dGUobCxiLEUpLEtlLmFkZEF0dHJpYnV0ZShsLGIsRSszKSksKGUudGFuZ2VudHx8ZS5iaXRhbmdlbnQpJiYoTz1hLmZyb21BcnJheShvLGMsTyksZS5iaXRhbmdlbnQmJihLZS5hZGRBdHRyaWJ1dGUoZCxPLFQpLEtlLmFkZEF0dHJpYnV0ZShkLE8sVCszKSxLZS5hZGRBdHRyaWJ1dGUoZCxPLEUpLEtlLmFkZEF0dHJpYnV0ZShkLE8sRSszKSksZS50YW5nZW50JiYodz1hLm5vcm1hbGl6ZShhLmNyb3NzKE8sYix3KSx3KSxLZS5hZGRBdHRyaWJ1dGUocCx3LFQpLEtlLmFkZEF0dHJpYnV0ZShwLHcsVCszKSxLZS5hZGRBdHRyaWJ1dGUocCx3LEUpLEtlLmFkZEF0dHJpYnV0ZShwLHcsRSszKSkpLEUrPTZ9aWYoZS5ub3JtYWwpe2ZvcihsLnNldChvKSxjPTA7YzxzO2MrPTMpbFtjK3NdPS1vW2NdLGxbYytzKzFdPS1vW2MrMV0sbFtjK3MrMl09LW9bYysyXTt0Lm5vcm1hbC52YWx1ZXM9bH1lbHNlIHQubm9ybWFsPXZvaWQgMDtpZihlLmJpdGFuZ2VudD8oZC5zZXQociksZC5zZXQocixzKSx0LmJpdGFuZ2VudC52YWx1ZXM9ZCk6dC5iaXRhbmdlbnQ9dm9pZCAwLGUudGFuZ2VudCl7bGV0IFQ9dC50YW5nZW50LnZhbHVlcztwLnNldChUKSxwLnNldChULHMpLHQudGFuZ2VudC52YWx1ZXM9cH19aWYoZS5zdCl7bGV0IGw9dC5zdC52YWx1ZXMscD1uZXcgRmxvYXQzMkFycmF5KGYqNik7cC5zZXQobCkscC5zZXQobCxmKTtsZXQgZD1mKjI7Zm9yKGxldCBoPTA7aDwyO2grKyl7Zm9yKHBbZCsrXT1sWzBdLHBbZCsrXT1sWzFdLGM9MjtjPGY7Yys9Mil7bGV0IF89bFtjXSxnPWxbYysxXTtwW2QrK109XyxwW2QrK109ZyxwW2QrK109XyxwW2QrK109Z31wW2QrK109bFswXSxwW2QrK109bFsxXX10LnN0LnZhbHVlcz1wfXJldHVybiB0fWZ1bmN0aW9uIGlfKHQsZSxuKXtuW2UrK109dFswXSxuW2UrK109dFsxXSxuW2UrK109dFsyXTtmb3IobGV0IG89MztvPHQubGVuZ3RoO28rPTMpe2xldCByPXRbb10saT10W28rMV0scz10W28rMl07bltlKytdPXIsbltlKytdPWksbltlKytdPXMsbltlKytdPXIsbltlKytdPWksbltlKytdPXN9cmV0dXJuIG5bZSsrXT10WzBdLG5bZSsrXT10WzFdLG5bZSsrXT10WzJdLG59ZnVuY3Rpb24gQUYodCxlKXtsZXQgbj1uZXcgcHQoe3Bvc2l0aW9uOmUucG9zaXRpb24sbm9ybWFsOmUubm9ybWFsfHxlLmJpdGFuZ2VudHx8dC5zaGFkb3dWb2x1bWUsdGFuZ2VudDplLnRhbmdlbnQsYml0YW5nZW50OmUubm9ybWFsfHxlLmJpdGFuZ2VudCxzdDplLnN0fSksbz10LmVsbGlwc29pZCxyPUtlLmNvbXB1dGVQb3NpdGlvbnModCksaT1kTyhyLG4sbykscz10LmhlaWdodCxmPXQuZXh0cnVkZWRIZWlnaHQsdT1pLmF0dHJpYnV0ZXMsYz1pLmluZGljZXMsbD11LnBvc2l0aW9uLnZhbHVlcyxwPWwubGVuZ3RoLGQ9bmV3IEZsb2F0NjRBcnJheShwKjYpLGg9bmV3IEZsb2F0NjRBcnJheShwKTtoLnNldChsKTtsZXQgXz1uZXcgRmxvYXQ2NEFycmF5KHAqNCk7bD1QZS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQobCxzLG8pLF89aV8obCwwLF8pLGg9UGUuc2NhbGVUb0dlb2RldGljSGVpZ2h0KGgsZixvKSxfPWlfKGgscCoyLF8pLGQuc2V0KGwpLGQuc2V0KGgscCksZC5zZXQoXyxwKjIpLHUucG9zaXRpb24udmFsdWVzPWQsdT1nRih1LGUpO2xldCBnLGI9cC8zO2lmKHQuc2hhZG93Vm9sdW1lKXtsZXQgST11Lm5vcm1hbC52YWx1ZXM7cD1JLmxlbmd0aDtsZXQgdj1uZXcgRmxvYXQzMkFycmF5KHAqNik7Zm9yKGc9MDtnPHA7ZysrKUlbZ109LUlbZ107di5zZXQoSSxwKSx2PWlfKEkscCo0LHYpLHUuZXh0cnVkZURpcmVjdGlvbj1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6dn0pLGUubm9ybWFsfHwodS5ub3JtYWw9dm9pZCAwKX1pZihtKHQub2Zmc2V0QXR0cmlidXRlKSl7bGV0IEk9bmV3IFVpbnQ4QXJyYXkoYio2KTtpZih0Lm9mZnNldEF0dHJpYnV0ZT09PWFlLlRPUClJPUkuZmlsbCgxLDAsYikuZmlsbCgxLGIqMixiKjQpO2Vsc2V7bGV0IHY9dC5vZmZzZXRBdHRyaWJ1dGU9PT1hZS5OT05FPzA6MTtJPUkuZmlsbCh2KX11LmFwcGx5T2Zmc2V0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOkl9KX1sZXQgdz1jLmxlbmd0aCxPPWIrYixFPUx0LmNyZWF0ZVR5cGVkQXJyYXkoZC5sZW5ndGgvMyx3KjIrTyozKTtFLnNldChjKTtsZXQgVD13O2ZvcihnPTA7Zzx3O2crPTMpe2xldCBJPWNbZ10sdj1jW2crMV0sQj1jW2crMl07RVtUKytdPUIrYixFW1QrK109ditiLEVbVCsrXT1JK2J9bGV0IHgsTSxOLEY7Zm9yKGc9MDtnPE87Zys9Mil4PWcrTyxNPXgrTyxOPXgrMSxGPU0rMSxFW1QrK109eCxFW1QrK109TSxFW1QrK109TixFW1QrK109TixFW1QrK109TSxFW1QrK109RjtyZXR1cm57YXR0cmlidXRlczp1LGluZGljZXM6RX19ZnVuY3Rpb24gYU8odCxlLG4sbyxyLGkpe2xldCBzPWEuc3VidHJhY3QoZSx0LGNPKTthLm5vcm1hbGl6ZShzLHMpO2xldCBmPW4uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKHQsemYpLHU9YS5jcm9zcyhzLGYsY08pO2EubXVsdGlwbHlCeVNjYWxhcih1LG8sdSk7bGV0IGM9ci5sYXRpdHVkZSxsPXIubG9uZ2l0dWRlLHA9aS5sYXRpdHVkZSxkPWkubG9uZ2l0dWRlO2EuYWRkKHQsdSx6Ziksbi5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyh6ZixPcik7bGV0IGg9T3IubGF0aXR1ZGUsXz1Pci5sb25naXR1ZGU7Yz1NYXRoLm1pbihjLGgpLGw9TWF0aC5taW4obCxfKSxwPU1hdGgubWF4KHAsaCksZD1NYXRoLm1heChkLF8pLGEuc3VidHJhY3QodCx1LHpmKSxuLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHpmLE9yKSxoPU9yLmxhdGl0dWRlLF89T3IubG9uZ2l0dWRlLGM9TWF0aC5taW4oYyxoKSxsPU1hdGgubWluKGwsXykscD1NYXRoLm1heChwLGgpLGQ9TWF0aC5tYXgoZCxfKSxyLmxhdGl0dWRlPWMsci5sb25naXR1ZGU9bCxpLmxhdGl0dWRlPXAsaS5sb25naXR1ZGU9ZH1mdW5jdGlvbiBtTyh0LGUsbixvLHIpe3Q9cE8odCxlKTtsZXQgaT1Dbih0LGEuZXF1YWxzRXBzaWxvbikscz1pLmxlbmd0aDtpZihzPDJ8fG48PTApcmV0dXJuIG5ldyBOdDtsZXQgZj1uKi41O3RyLmxhdGl0dWRlPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSx0ci5sb25naXR1ZGU9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGVyLmxhdGl0dWRlPU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxlci5sb25naXR1ZGU9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2xldCB1LGM7aWYobz09PWZuLlJPVU5ERUQpe2xldCBkPWlbMF07YS5zdWJ0cmFjdChkLGlbMV0sVHIpLGEubm9ybWFsaXplKFRyLFRyKSxhLm11bHRpcGx5QnlTY2FsYXIoVHIsZixUciksYS5hZGQoZCxUcixqZiksZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhqZixPciksdT1Pci5sYXRpdHVkZSxjPU9yLmxvbmdpdHVkZSx0ci5sYXRpdHVkZT1NYXRoLm1pbih0ci5sYXRpdHVkZSx1KSx0ci5sb25naXR1ZGU9TWF0aC5taW4odHIubG9uZ2l0dWRlLGMpLGVyLmxhdGl0dWRlPU1hdGgubWF4KGVyLmxhdGl0dWRlLHUpLGVyLmxvbmdpdHVkZT1NYXRoLm1heChlci5sb25naXR1ZGUsYyl9Zm9yKGxldCBkPTA7ZDxzLTE7KytkKWFPKGlbZF0saVtkKzFdLGUsZix0cixlcik7bGV0IGw9aVtzLTFdO2Euc3VidHJhY3QobCxpW3MtMl0sVHIpLGEubm9ybWFsaXplKFRyLFRyKSxhLm11bHRpcGx5QnlTY2FsYXIoVHIsZixUciksYS5hZGQobCxUcixqZiksYU8obCxqZixlLGYsdHIsZXIpLG89PT1mbi5ST1VOREVEJiYoZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhqZixPciksdT1Pci5sYXRpdHVkZSxjPU9yLmxvbmdpdHVkZSx0ci5sYXRpdHVkZT1NYXRoLm1pbih0ci5sYXRpdHVkZSx1KSx0ci5sb25naXR1ZGU9TWF0aC5taW4odHIubG9uZ2l0dWRlLGMpLGVyLmxhdGl0dWRlPU1hdGgubWF4KGVyLmxhdGl0dWRlLHUpLGVyLmxvbmdpdHVkZT1NYXRoLm1heChlci5sb25naXR1ZGUsYykpO2xldCBwPW0ocik/cjpuZXcgTnQ7cmV0dXJuIHAubm9ydGg9ZXIubGF0aXR1ZGUscC5zb3V0aD10ci5sYXRpdHVkZSxwLmVhc3Q9ZXIubG9uZ2l0dWRlLHAud2VzdD10ci5sb25naXR1ZGUscH1mdW5jdGlvbiBWaSh0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10LnBvc2l0aW9ucyxuPXQud2lkdGg7eS5kZWZpbmVkKCJvcHRpb25zLnBvc2l0aW9ucyIsZSkseS5kZWZpbmVkKCJvcHRpb25zLndpZHRoIixuKTtsZXQgbz10LmhlaWdodD8/MCxyPXQuZXh0cnVkZWRIZWlnaHQ/P287dGhpcy5fcG9zaXRpb25zPWUsdGhpcy5fZWxsaXBzb2lkPVkuY2xvbmUodC5lbGxpcHNvaWQ/P1kuZGVmYXVsdCksdGhpcy5fdmVydGV4Rm9ybWF0PXB0LmNsb25lKHQudmVydGV4Rm9ybWF0Pz9wdC5ERUZBVUxUKSx0aGlzLl93aWR0aD1uLHRoaXMuX2hlaWdodD1NYXRoLm1heChvLHIpLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0PU1hdGgubWluKG8sciksdGhpcy5fY29ybmVyVHlwZT10LmNvcm5lclR5cGU/P2ZuLlJPVU5ERUQsdGhpcy5fZ3JhbnVsYXJpdHk9dC5ncmFudWxhcml0eT8/UC5SQURJQU5TX1BFUl9ERUdSRUUsdGhpcy5fc2hhZG93Vm9sdW1lPXQuc2hhZG93Vm9sdW1lPz8hMSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVDb3JyaWRvckdlb21ldHJ5Iix0aGlzLl9vZmZzZXRBdHRyaWJ1dGU9dC5vZmZzZXRBdHRyaWJ1dGUsdGhpcy5fcmVjdGFuZ2xlPXZvaWQgMCx0aGlzLnBhY2tlZExlbmd0aD0xK2UubGVuZ3RoKmEucGFja2VkTGVuZ3RoK1kucGFja2VkTGVuZ3RoK3B0LnBhY2tlZExlbmd0aCs3fXZhciBmTyx1TyxBZCxiZCx5RixsTyx5cyx3YSxjTyx6ZixPcixUcixqZix0cixlcixoTyxfTyxHaSxzXyx5Tz0kKCgpPT57SHIoKTt2ZSgpO0R0KCk7SWUoKTtXdCgpO0RlKCk7X2MoKTtyXygpO3llKCk7ZnQoKTskdCgpO1llKCk7JGUoKTthbigpO0RvKCk7WmUoKTtLdCgpO0tyKCk7dG4oKTtUbigpO3hvKCk7Zk89bmV3IGEsdU89bmV3IGEsQWQ9bmV3IGEsYmQ9bmV3IGEseUY9bmV3IGEsbE89bmV3IGEseXM9bmV3IGEsd2E9bmV3IGE7Y089bmV3IGEsemY9bmV3IGEsT3I9bmV3IGN0O1RyPW5ldyBhLGpmPW5ldyBhLHRyPW5ldyBjdCxlcj1uZXcgY3Q7VmkucGFjaz1mdW5jdGlvbih0LGUsbil7eS5kZWZpbmVkKCJ2YWx1ZSIsdCkseS5kZWZpbmVkKCJhcnJheSIsZSksbj1uPz8wO2xldCBvPXQuX3Bvc2l0aW9ucyxyPW8ubGVuZ3RoO2VbbisrXT1yO2ZvcihsZXQgaT0wO2k8cjsrK2ksbis9YS5wYWNrZWRMZW5ndGgpYS5wYWNrKG9baV0sZSxuKTtyZXR1cm4gWS5wYWNrKHQuX2VsbGlwc29pZCxlLG4pLG4rPVkucGFja2VkTGVuZ3RoLHB0LnBhY2sodC5fdmVydGV4Rm9ybWF0LGUsbiksbis9cHQucGFja2VkTGVuZ3RoLGVbbisrXT10Ll93aWR0aCxlW24rK109dC5faGVpZ2h0LGVbbisrXT10Ll9leHRydWRlZEhlaWdodCxlW24rK109dC5fY29ybmVyVHlwZSxlW24rK109dC5fZ3JhbnVsYXJpdHksZVtuKytdPXQuX3NoYWRvd1ZvbHVtZT8xOjAsZVtuXT10Ll9vZmZzZXRBdHRyaWJ1dGU/Py0xLGV9O2hPPVkuY2xvbmUoWS5VTklUX1NQSEVSRSksX089bmV3IHB0LEdpPXtwb3NpdGlvbnM6dm9pZCAwLGVsbGlwc29pZDpoTyx2ZXJ0ZXhGb3JtYXQ6X08sd2lkdGg6dm9pZCAwLGhlaWdodDp2b2lkIDAsZXh0cnVkZWRIZWlnaHQ6dm9pZCAwLGNvcm5lclR5cGU6dm9pZCAwLGdyYW51bGFyaXR5OnZvaWQgMCxzaGFkb3dWb2x1bWU6dm9pZCAwLG9mZnNldEF0dHJpYnV0ZTp2b2lkIDB9O1ZpLnVucGFjaz1mdW5jdGlvbih0LGUsbil7eS5kZWZpbmVkKCJhcnJheSIsdCksZT1lPz8wO2xldCBvPXRbZSsrXSxyPW5ldyBBcnJheShvKTtmb3IobGV0IF89MDtfPG87KytfLGUrPWEucGFja2VkTGVuZ3RoKXJbX109YS51bnBhY2sodCxlKTtsZXQgaT1ZLnVucGFjayh0LGUsaE8pO2UrPVkucGFja2VkTGVuZ3RoO2xldCBzPXB0LnVucGFjayh0LGUsX08pO2UrPXB0LnBhY2tlZExlbmd0aDtsZXQgZj10W2UrK10sdT10W2UrK10sYz10W2UrK10sbD10W2UrK10scD10W2UrK10sZD10W2UrK109PT0xLGg9dFtlXTtyZXR1cm4gbShuKT8obi5fcG9zaXRpb25zPXIsbi5fZWxsaXBzb2lkPVkuY2xvbmUoaSxuLl9lbGxpcHNvaWQpLG4uX3ZlcnRleEZvcm1hdD1wdC5jbG9uZShzLG4uX3ZlcnRleEZvcm1hdCksbi5fd2lkdGg9ZixuLl9oZWlnaHQ9dSxuLl9leHRydWRlZEhlaWdodD1jLG4uX2Nvcm5lclR5cGU9bCxuLl9ncmFudWxhcml0eT1wLG4uX3NoYWRvd1ZvbHVtZT1kLG4uX29mZnNldEF0dHJpYnV0ZT1oPT09LTE/dm9pZCAwOmgsbik6KEdpLnBvc2l0aW9ucz1yLEdpLndpZHRoPWYsR2kuaGVpZ2h0PXUsR2kuZXh0cnVkZWRIZWlnaHQ9YyxHaS5jb3JuZXJUeXBlPWwsR2kuZ3JhbnVsYXJpdHk9cCxHaS5zaGFkb3dWb2x1bWU9ZCxHaS5vZmZzZXRBdHRyaWJ1dGU9aD09PS0xP3ZvaWQgMDpoLG5ldyBWaShHaSkpfTtWaS5jb21wdXRlUmVjdGFuZ2xlPWZ1bmN0aW9uKHQsZSl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IG49dC5wb3NpdGlvbnMsbz10LndpZHRoO3kuZGVmaW5lZCgib3B0aW9ucy5wb3NpdGlvbnMiLG4pLHkuZGVmaW5lZCgib3B0aW9ucy53aWR0aCIsbyk7bGV0IHI9dC5lbGxpcHNvaWQ/P1kuZGVmYXVsdCxpPXQuY29ybmVyVHlwZT8/Zm4uUk9VTkRFRDtyZXR1cm4gbU8obixyLG8saSxlKX07VmkuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fcG9zaXRpb25zLG49dC5fd2lkdGgsbz10Ll9lbGxpcHNvaWQ7ZT1wTyhlLG8pO2xldCByPUNuKGUsYS5lcXVhbHNFcHNpbG9uKTtpZihyLmxlbmd0aDwyfHxuPD0wKXJldHVybjtsZXQgaT10Ll9oZWlnaHQscz10Ll9leHRydWRlZEhlaWdodCxmPSFQLmVxdWFsc0Vwc2lsb24oaSxzLDAsUC5FUFNJTE9OMiksdT10Ll92ZXJ0ZXhGb3JtYXQsYz17ZWxsaXBzb2lkOm8scG9zaXRpb25zOnIsd2lkdGg6bixjb3JuZXJUeXBlOnQuX2Nvcm5lclR5cGUsZ3JhbnVsYXJpdHk6dC5fZ3JhbnVsYXJpdHksc2F2ZUF0dHJpYnV0ZXM6ITB9LGw7aWYoZiljLmhlaWdodD1pLGMuZXh0cnVkZWRIZWlnaHQ9cyxjLnNoYWRvd1ZvbHVtZT10Ll9zaGFkb3dWb2x1bWUsYy5vZmZzZXRBdHRyaWJ1dGU9dC5fb2Zmc2V0QXR0cmlidXRlLGw9QUYoYyx1KTtlbHNle2xldCBoPUtlLmNvbXB1dGVQb3NpdGlvbnMoYyk7aWYobD1kTyhoLHUsbyksbC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz1QZS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQobC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxpLG8pLG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IF89dC5fb2Zmc2V0QXR0cmlidXRlPT09YWUuTk9ORT8wOjEsZz1sLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLmxlbmd0aCxiPW5ldyBVaW50OEFycmF5KGcvMykuZmlsbChfKTtsLmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6Yn0pfX1sZXQgcD1sLmF0dHJpYnV0ZXMsZD1BdC5mcm9tVmVydGljZXMocC5wb3NpdGlvbi52YWx1ZXMsdm9pZCAwLDMpO3JldHVybiB1LnBvc2l0aW9ufHwobC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz12b2lkIDApLG5ldyBVdCh7YXR0cmlidXRlczpwLGluZGljZXM6bC5pbmRpY2VzLHByaW1pdGl2ZVR5cGU6QnQuVFJJQU5HTEVTLGJvdW5kaW5nU3BoZXJlOmQsb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtWaS5jcmVhdGVTaGFkb3dWb2x1bWU9ZnVuY3Rpb24odCxlLG4pe2xldCBvPXQuX2dyYW51bGFyaXR5LHI9dC5fZWxsaXBzb2lkLGk9ZShvLHIpLHM9bihvLHIpO3JldHVybiBuZXcgVmkoe3Bvc2l0aW9uczp0Ll9wb3NpdGlvbnMsd2lkdGg6dC5fd2lkdGgsY29ybmVyVHlwZTp0Ll9jb3JuZXJUeXBlLGVsbGlwc29pZDpyLGdyYW51bGFyaXR5Om8sZXh0cnVkZWRIZWlnaHQ6aSxoZWlnaHQ6cyx2ZXJ0ZXhGb3JtYXQ6cHQuUE9TSVRJT05fT05MWSxzaGFkb3dWb2x1bWU6ITB9KX07T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVmkucHJvdG90eXBlLHtyZWN0YW5nbGU6e2dldDpmdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX3JlY3RhbmdsZSl8fCh0aGlzLl9yZWN0YW5nbGU9bU8odGhpcy5fcG9zaXRpb25zLHRoaXMuX2VsbGlwc29pZCx0aGlzLl93aWR0aCx0aGlzLl9jb3JuZXJUeXBlKSksdGhpcy5fcmVjdGFuZ2xlfX0sdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuWzAsMCwwLDEsMSwwXX19fSk7c189Vml9KTt2YXIgY189e307bGUoY18se2RlZmF1bHQ6KCk9PndGfSk7ZnVuY3Rpb24gYkYodCxlKXtyZXR1cm4gbShlKSYmKHQ9c18udW5wYWNrKHQsZSkpLHQuX2VsbGlwc29pZD1ZLmNsb25lKHQuX2VsbGlwc29pZCksc18uY3JlYXRlR2VvbWV0cnkodCl9dmFyIHdGLGFfPSQoKCk9Pnt5TygpO2Z0KCk7JHQoKTt3Rj1iRn0pO2Z1bmN0aW9uIE9GKHQsZSl7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKyspdFtuXT1lLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UodFtuXSx0W25dKTtyZXR1cm4gdH1mdW5jdGlvbiBiTyh0LGUpe2xldCBuPVtdLG89dC5wb3NpdGlvbnMscj10LmNvcm5lcnMsaT10LmVuZFBvc2l0aW9ucyxzPW5ldyBpZSxmLHU9MCxjPTAsbCxwPTAsZDtmb3IobD0wO2w8by5sZW5ndGg7bCs9MilkPW9bbF0ubGVuZ3RoLTMsdSs9ZCxwKz1kLzMqNCxjKz1vW2wrMV0ubGVuZ3RoLTM7Zm9yKHUrPTMsYys9MyxsPTA7bDxyLmxlbmd0aDtsKyspe2Y9cltsXTtsZXQgTD1yW2xdLmxlZnRQb3NpdGlvbnM7bShMKT8oZD1MLmxlbmd0aCx1Kz1kLHArPWQvMyoyKTooZD1yW2xdLnJpZ2h0UG9zaXRpb25zLmxlbmd0aCxjKz1kLHArPWQvMyoyKX1sZXQgaD1tKGkpLF87aCYmKF89aVswXS5sZW5ndGgtMyx1Kz1fLGMrPV8sXy89MyxwKz1fKjQpO2xldCBnPXUrYyxiPW5ldyBGbG9hdDY0QXJyYXkoZyksdz0wLE89Zy0xLEUsVCx4LE0sTixGLEk9Xy8yLHY9THQuY3JlYXRlVHlwZWRBcnJheShnLzMscCs0KSxCPTA7aWYodltCKytdPXcvMyx2W0IrK109KE8tMikvMyxoKXtuLnB1c2gody8zKSxGPWdPLE49QU87bGV0IEw9aVswXTtmb3IobD0wO2w8STtsKyspRj1hLmZyb21BcnJheShMLChJLTEtbCkqMyxGKSxOPWEuZnJvbUFycmF5KEwsKEkrbCkqMyxOKSxLZS5hZGRBdHRyaWJ1dGUoYixOLHcpLEtlLmFkZEF0dHJpYnV0ZShiLEYsdm9pZCAwLE8pLFQ9dy8zLE09VCsxLEU9KE8tMikvMyx4PUUtMSx2W0IrK109RSx2W0IrK109eCx2W0IrK109VCx2W0IrK109TSx3Kz0zLE8tPTN9bGV0IEE9MCxTPW9bQSsrXSxDPW9bQSsrXTtmb3IoYi5zZXQoUyx3KSxiLnNldChDLE8tQy5sZW5ndGgrMSksZD1DLmxlbmd0aC0zLG4ucHVzaCh3LzMsKE8tMikvMyksbD0wO2w8ZDtsKz0zKVQ9dy8zLE09VCsxLEU9KE8tMikvMyx4PUUtMSx2W0IrK109RSx2W0IrK109eCx2W0IrK109VCx2W0IrK109TSx3Kz0zLE8tPTM7Zm9yKGw9MDtsPHIubGVuZ3RoO2wrKyl7bGV0IEw7Zj1yW2xdO2xldCB6PWYubGVmdFBvc2l0aW9ucyxqPWYucmlnaHRQb3NpdGlvbnMsayxxPVRGO2lmKG0oeikpe2ZvcihPLT0zLGs9eCxuLnB1c2goTSksTD0wO0w8ei5sZW5ndGgvMztMKyspcT1hLmZyb21BcnJheSh6LEwqMyxxKSx2W0IrK109ay1MLTEsdltCKytdPWstTCxLZS5hZGRBdHRyaWJ1dGUoYixxLHZvaWQgMCxPKSxPLT0zO24ucHVzaChrLU1hdGguZmxvb3Ioei5sZW5ndGgvNikpLGU9PT1mbi5CRVZFTEVEJiZuLnB1c2goKE8tMikvMysxKSx3Kz0zfWVsc2V7Zm9yKHcrPTMsaz1NLG4ucHVzaCh4KSxMPTA7TDxqLmxlbmd0aC8zO0wrKylxPWEuZnJvbUFycmF5KGosTCozLHEpLHZbQisrXT1rK0wsdltCKytdPWsrTCsxLEtlLmFkZEF0dHJpYnV0ZShiLHEsdyksdys9MztuLnB1c2goaytNYXRoLmZsb29yKGoubGVuZ3RoLzYpKSxlPT09Zm4uQkVWRUxFRCYmbi5wdXNoKHcvMy0xKSxPLT0zfWZvcihTPW9bQSsrXSxDPW9bQSsrXSxTLnNwbGljZSgwLDMpLEMuc3BsaWNlKEMubGVuZ3RoLTMsMyksYi5zZXQoUyx3KSxiLnNldChDLE8tQy5sZW5ndGgrMSksZD1DLmxlbmd0aC0zLEw9MDtMPEMubGVuZ3RoO0wrPTMpTT13LzMsVD1NLTEseD0oTy0yKS8zLEU9eCsxLHZbQisrXT1FLHZbQisrXT14LHZbQisrXT1ULHZbQisrXT1NLHcrPTMsTy09Mzt3LT0zLE8rPTMsbi5wdXNoKHcvMywoTy0yKS8zKX1pZihoKXt3Kz0zLE8tPTMsRj1nTyxOPUFPO2xldCBMPWlbMV07Zm9yKGw9MDtsPEk7bCsrKUY9YS5mcm9tQXJyYXkoTCwoXy1sLTEpKjMsRiksTj1hLmZyb21BcnJheShMLGwqMyxOKSxLZS5hZGRBdHRyaWJ1dGUoYixGLHZvaWQgMCxPKSxLZS5hZGRBdHRyaWJ1dGUoYixOLHcpLE09dy8zLFQ9TS0xLHg9KE8tMikvMyxFPXgrMSx2W0IrK109RSx2W0IrK109eCx2W0IrK109VCx2W0IrK109TSx3Kz0zLE8tPTM7bi5wdXNoKHcvMyl9ZWxzZSBuLnB1c2gody8zLChPLTIpLzMpO3JldHVybiB2W0IrK109dy8zLHZbQisrXT0oTy0yKS8zLHMucG9zaXRpb249bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpifSkse2F0dHJpYnV0ZXM6cyxpbmRpY2VzOnYsd2FsbEluZGljZXM6bn19ZnVuY3Rpb24gRUYodCl7bGV0IGU9dC5lbGxpcHNvaWQsbj1LZS5jb21wdXRlUG9zaXRpb25zKHQpLG89Yk8obix0LmNvcm5lclR5cGUpLHI9by53YWxsSW5kaWNlcyxpPXQuaGVpZ2h0LHM9dC5leHRydWRlZEhlaWdodCxmPW8uYXR0cmlidXRlcyx1PW8uaW5kaWNlcyxjPWYucG9zaXRpb24udmFsdWVzLGw9Yy5sZW5ndGgscD1uZXcgRmxvYXQ2NEFycmF5KGwpO3Auc2V0KGMpO2xldCBkPW5ldyBGbG9hdDY0QXJyYXkobCoyKTtpZihjPVBlLnNjYWxlVG9HZW9kZXRpY0hlaWdodChjLGksZSkscD1QZS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQocCxzLGUpLGQuc2V0KGMpLGQuc2V0KHAsbCksZi5wb3NpdGlvbi52YWx1ZXM9ZCxsLz0zLG0odC5vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgRT1uZXcgVWludDhBcnJheShsKjIpO2lmKHQub2Zmc2V0QXR0cmlidXRlPT09YWUuVE9QKUU9RS5maWxsKDEsMCxsKTtlbHNle2xldCBUPXQub2Zmc2V0QXR0cmlidXRlPT09YWUuTk9ORT8wOjE7RT1FLmZpbGwoVCl9Zi5hcHBseU9mZnNldD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpFfSl9bGV0IGgsXz11Lmxlbmd0aCxnPUx0LmNyZWF0ZVR5cGVkQXJyYXkoZC5sZW5ndGgvMywoXytyLmxlbmd0aCkqMik7Zy5zZXQodSk7bGV0IGI9Xztmb3IoaD0wO2g8XztoKz0yKXtsZXQgRT11W2hdLFQ9dVtoKzFdO2dbYisrXT1FK2wsZ1tiKytdPVQrbH1sZXQgdyxPO2ZvcihoPTA7aDxyLmxlbmd0aDtoKyspdz1yW2hdLE89dytsLGdbYisrXT13LGdbYisrXT1PO3JldHVybnthdHRyaWJ1dGVzOmYsaW5kaWNlczpnfX1mdW5jdGlvbiBIZih0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10LnBvc2l0aW9ucyxuPXQud2lkdGg7eS50eXBlT2Yub2JqZWN0KCJvcHRpb25zLnBvc2l0aW9ucyIsZSkseS50eXBlT2YubnVtYmVyKCJvcHRpb25zLndpZHRoIixuKTtsZXQgbz10LmhlaWdodD8/MCxyPXQuZXh0cnVkZWRIZWlnaHQ/P287dGhpcy5fcG9zaXRpb25zPWUsdGhpcy5fZWxsaXBzb2lkPVkuY2xvbmUodC5lbGxpcHNvaWQ/P1kuZGVmYXVsdCksdGhpcy5fd2lkdGg9bix0aGlzLl9oZWlnaHQ9TWF0aC5tYXgobyxyKSx0aGlzLl9leHRydWRlZEhlaWdodD1NYXRoLm1pbihvLHIpLHRoaXMuX2Nvcm5lclR5cGU9dC5jb3JuZXJUeXBlPz9mbi5ST1VOREVELHRoaXMuX2dyYW51bGFyaXR5PXQuZ3JhbnVsYXJpdHk/P1AuUkFESUFOU19QRVJfREVHUkVFLHRoaXMuX29mZnNldEF0dHJpYnV0ZT10Lm9mZnNldEF0dHJpYnV0ZSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVDb3JyaWRvck91dGxpbmVHZW9tZXRyeSIsdGhpcy5wYWNrZWRMZW5ndGg9MStlLmxlbmd0aCphLnBhY2tlZExlbmd0aCtZLnBhY2tlZExlbmd0aCs2fXZhciBnTyxBTyxURix3TyxncyxmXyxUTz0kKCgpPT57SHIoKTt2ZSgpO0R0KCk7V3QoKTtEZSgpO19jKCk7cl8oKTt5ZSgpO2Z0KCk7JHQoKTtZZSgpOyRlKCk7YW4oKTtEbygpO1plKCk7S3QoKTtLcigpO3RuKCk7Z089bmV3IGEsQU89bmV3IGEsVEY9bmV3IGE7SGYucGFjaz1mdW5jdGlvbih0LGUsbil7eS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkseS50eXBlT2Yub2JqZWN0KCJhcnJheSIsZSksbj1uPz8wO2xldCBvPXQuX3Bvc2l0aW9ucyxyPW8ubGVuZ3RoO2VbbisrXT1yO2ZvcihsZXQgaT0wO2k8cjsrK2ksbis9YS5wYWNrZWRMZW5ndGgpYS5wYWNrKG9baV0sZSxuKTtyZXR1cm4gWS5wYWNrKHQuX2VsbGlwc29pZCxlLG4pLG4rPVkucGFja2VkTGVuZ3RoLGVbbisrXT10Ll93aWR0aCxlW24rK109dC5faGVpZ2h0LGVbbisrXT10Ll9leHRydWRlZEhlaWdodCxlW24rK109dC5fY29ybmVyVHlwZSxlW24rK109dC5fZ3JhbnVsYXJpdHksZVtuXT10Ll9vZmZzZXRBdHRyaWJ1dGU/Py0xLGV9O3dPPVkuY2xvbmUoWS5VTklUX1NQSEVSRSksZ3M9e3Bvc2l0aW9uczp2b2lkIDAsZWxsaXBzb2lkOndPLHdpZHRoOnZvaWQgMCxoZWlnaHQ6dm9pZCAwLGV4dHJ1ZGVkSGVpZ2h0OnZvaWQgMCxjb3JuZXJUeXBlOnZvaWQgMCxncmFudWxhcml0eTp2b2lkIDAsb2Zmc2V0QXR0cmlidXRlOnZvaWQgMH07SGYudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoImFycmF5Iix0KSxlPWU/PzA7bGV0IG89dFtlKytdLHI9bmV3IEFycmF5KG8pO2ZvcihsZXQgZD0wO2Q8bzsrK2QsZSs9YS5wYWNrZWRMZW5ndGgpcltkXT1hLnVucGFjayh0LGUpO2xldCBpPVkudW5wYWNrKHQsZSx3Tyk7ZSs9WS5wYWNrZWRMZW5ndGg7bGV0IHM9dFtlKytdLGY9dFtlKytdLHU9dFtlKytdLGM9dFtlKytdLGw9dFtlKytdLHA9dFtlXTtyZXR1cm4gbShuKT8obi5fcG9zaXRpb25zPXIsbi5fZWxsaXBzb2lkPVkuY2xvbmUoaSxuLl9lbGxpcHNvaWQpLG4uX3dpZHRoPXMsbi5faGVpZ2h0PWYsbi5fZXh0cnVkZWRIZWlnaHQ9dSxuLl9jb3JuZXJUeXBlPWMsbi5fZ3JhbnVsYXJpdHk9bCxuLl9vZmZzZXRBdHRyaWJ1dGU9cD09PS0xP3ZvaWQgMDpwLG4pOihncy5wb3NpdGlvbnM9cixncy53aWR0aD1zLGdzLmhlaWdodD1mLGdzLmV4dHJ1ZGVkSGVpZ2h0PXUsZ3MuY29ybmVyVHlwZT1jLGdzLmdyYW51bGFyaXR5PWwsZ3Mub2Zmc2V0QXR0cmlidXRlPXA9PT0tMT92b2lkIDA6cCxuZXcgSGYoZ3MpKX07SGYuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fcG9zaXRpb25zLG49dC5fd2lkdGgsbz10Ll9lbGxpcHNvaWQ7ZT1PRihlLG8pO2xldCByPUNuKGUsYS5lcXVhbHNFcHNpbG9uKTtpZihyLmxlbmd0aDwyfHxuPD0wKXJldHVybjtsZXQgaT10Ll9oZWlnaHQscz10Ll9leHRydWRlZEhlaWdodCxmPSFQLmVxdWFsc0Vwc2lsb24oaSxzLDAsUC5FUFNJTE9OMiksdT17ZWxsaXBzb2lkOm8scG9zaXRpb25zOnIsd2lkdGg6bixjb3JuZXJUeXBlOnQuX2Nvcm5lclR5cGUsZ3JhbnVsYXJpdHk6dC5fZ3JhbnVsYXJpdHksc2F2ZUF0dHJpYnV0ZXM6ITF9LGM7aWYoZil1LmhlaWdodD1pLHUuZXh0cnVkZWRIZWlnaHQ9cyx1Lm9mZnNldEF0dHJpYnV0ZT10Ll9vZmZzZXRBdHRyaWJ1dGUsYz1FRih1KTtlbHNle2xldCBkPUtlLmNvbXB1dGVQb3NpdGlvbnModSk7aWYoYz1iTyhkLHUuY29ybmVyVHlwZSksYy5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz1QZS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQoYy5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxpLG8pLG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IGg9Yy5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgsXz10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1hZS5OT05FPzA6MSxnPW5ldyBVaW50OEFycmF5KGgvMykuZmlsbChfKTtjLmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6Z30pfX1sZXQgbD1jLmF0dHJpYnV0ZXMscD1BdC5mcm9tVmVydGljZXMobC5wb3NpdGlvbi52YWx1ZXMsdm9pZCAwLDMpO3JldHVybiBuZXcgVXQoe2F0dHJpYnV0ZXM6bCxpbmRpY2VzOmMuaW5kaWNlcyxwcmltaXRpdmVUeXBlOkJ0LkxJTkVTLGJvdW5kaW5nU3BoZXJlOnAsb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtmXz1IZn0pO3ZhciB1Xz17fTtsZSh1Xyx7ZGVmYXVsdDooKT0+U0Z9KTtmdW5jdGlvbiBSRih0LGUpe3JldHVybiBtKGUpJiYodD1mXy51bnBhY2sodCxlKSksdC5fZWxsaXBzb2lkPVkuY2xvbmUodC5fZWxsaXBzb2lkKSxmXy5jcmVhdGVHZW9tZXRyeSh0KX12YXIgU0YsbF89JCgoKT0+e1RPKCk7ZnQoKTskdCgpO1NGPVJGfSk7dmFyIE9PLHdkLHBfPSQoKCk9PntLdCgpO09PPXt9O09PLmNvbXB1dGVQb3NpdGlvbnM9ZnVuY3Rpb24odCxlLG4sbyxyKXtsZXQgaT10Ki41LHM9LWksZj1vK28sdT1yPzIqZjpmLGM9bmV3IEZsb2F0NjRBcnJheSh1KjMpLGwscD0wLGQ9MCxoPXI/ZiozOjAsXz1yPyhmK28pKjM6byozO2ZvcihsPTA7bDxvO2wrKyl7bGV0IGc9bC9vKlAuVFdPX1BJLGI9TWF0aC5jb3MoZyksdz1NYXRoLnNpbihnKSxPPWIqbixFPXcqbixUPWIqZSx4PXcqZTtjW2QraF09TyxjW2QraCsxXT1FLGNbZCtoKzJdPXMsY1tkK19dPVQsY1tkK18rMV09eCxjW2QrXysyXT1pLGQrPTMsciYmKGNbcCsrXT1PLGNbcCsrXT1FLGNbcCsrXT1zLGNbcCsrXT1ULGNbcCsrXT14LGNbcCsrXT1pKX1yZXR1cm4gY307d2Q9T099KTtmdW5jdGlvbiB6aSh0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10Lmxlbmd0aCxuPXQudG9wUmFkaXVzLG89dC5ib3R0b21SYWRpdXMscj10LnZlcnRleEZvcm1hdD8/cHQuREVGQVVMVCxpPXQuc2xpY2VzPz8xMjg7aWYoIW0oZSkpdGhyb3cgbmV3IEQoIm9wdGlvbnMubGVuZ3RoIG11c3QgYmUgZGVmaW5lZC4iKTtpZighbShuKSl0aHJvdyBuZXcgRCgib3B0aW9ucy50b3BSYWRpdXMgbXVzdCBiZSBkZWZpbmVkLiIpO2lmKCFtKG8pKXRocm93IG5ldyBEKCJvcHRpb25zLmJvdHRvbVJhZGl1cyBtdXN0IGJlIGRlZmluZWQuIik7aWYoaTwzKXRocm93IG5ldyBEKCJvcHRpb25zLnNsaWNlcyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAzLiIpO2lmKG0odC5vZmZzZXRBdHRyaWJ1dGUpJiZ0Lm9mZnNldEF0dHJpYnV0ZT09PWFlLlRPUCl0aHJvdyBuZXcgRCgiR2VvbWV0cnlPZmZzZXRBdHRyaWJ1dGUuVE9QIGlzIG5vdCBhIHN1cHBvcnRlZCBvcHRpb25zLm9mZnNldEF0dHJpYnV0ZSBmb3IgdGhpcyBnZW9tZXRyeS4iKTt0aGlzLl9sZW5ndGg9ZSx0aGlzLl90b3BSYWRpdXM9bix0aGlzLl9ib3R0b21SYWRpdXM9byx0aGlzLl92ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUociksdGhpcy5fc2xpY2VzPWksdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUN5bGluZGVyR2VvbWV0cnkifXZhciBkXyx4RixDRixQRixNRixFTyxUYSxtXyxxZixoXz0kKCgpPT57dmUoKTtrZSgpO0R0KCk7RGUoKTtwXygpO3llKCk7ZnQoKTtIdCgpO1llKCk7JGUoKTthbigpO0RvKCk7WmUoKTtLdCgpO3RuKCk7eG8oKTtkXz1uZXcgSix4Rj1uZXcgYSxDRj1uZXcgYSxQRj1uZXcgYSxNRj1uZXcgYTt6aS5wYWNrZWRMZW5ndGg9cHQucGFja2VkTGVuZ3RoKzU7emkucGFjaz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoInZhbHVlIGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImFycmF5IGlzIHJlcXVpcmVkIik7cmV0dXJuIG49bj8/MCxwdC5wYWNrKHQuX3ZlcnRleEZvcm1hdCxlLG4pLG4rPXB0LnBhY2tlZExlbmd0aCxlW24rK109dC5fbGVuZ3RoLGVbbisrXT10Ll90b3BSYWRpdXMsZVtuKytdPXQuX2JvdHRvbVJhZGl1cyxlW24rK109dC5fc2xpY2VzLGVbbl09dC5fb2Zmc2V0QXR0cmlidXRlPz8tMSxlfTtFTz1uZXcgcHQsVGE9e3ZlcnRleEZvcm1hdDpFTyxsZW5ndGg6dm9pZCAwLHRvcFJhZGl1czp2b2lkIDAsYm90dG9tUmFkaXVzOnZvaWQgMCxzbGljZXM6dm9pZCAwLG9mZnNldEF0dHJpYnV0ZTp2b2lkIDB9O3ppLnVucGFjaz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImFycmF5IGlzIHJlcXVpcmVkIik7ZT1lPz8wO2xldCBvPXB0LnVucGFjayh0LGUsRU8pO2UrPXB0LnBhY2tlZExlbmd0aDtsZXQgcj10W2UrK10saT10W2UrK10scz10W2UrK10sZj10W2UrK10sdT10W2VdO3JldHVybiBtKG4pPyhuLl92ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUobyxuLl92ZXJ0ZXhGb3JtYXQpLG4uX2xlbmd0aD1yLG4uX3RvcFJhZGl1cz1pLG4uX2JvdHRvbVJhZGl1cz1zLG4uX3NsaWNlcz1mLG4uX29mZnNldEF0dHJpYnV0ZT11PT09LTE/dm9pZCAwOnUsbik6KFRhLmxlbmd0aD1yLFRhLnRvcFJhZGl1cz1pLFRhLmJvdHRvbVJhZGl1cz1zLFRhLnNsaWNlcz1mLFRhLm9mZnNldEF0dHJpYnV0ZT11PT09LTE/dm9pZCAwOnUsbmV3IHppKFRhKSl9O3ppLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX2xlbmd0aCxuPXQuX3RvcFJhZGl1cyxvPXQuX2JvdHRvbVJhZGl1cyxyPXQuX3ZlcnRleEZvcm1hdCxpPXQuX3NsaWNlcztpZihlPD0wfHxuPDB8fG88MHx8bj09PTAmJm89PT0wKXJldHVybjtsZXQgcz1pK2ksZj1pK3MsdT1zK3MsYz13ZC5jb21wdXRlUG9zaXRpb25zKGUsbixvLGksITApLGw9ci5zdD9uZXcgRmxvYXQzMkFycmF5KHUqMik6dm9pZCAwLHA9ci5ub3JtYWw/bmV3IEZsb2F0MzJBcnJheSh1KjMpOnZvaWQgMCxkPXIudGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KHUqMyk6dm9pZCAwLGg9ci5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheSh1KjMpOnZvaWQgMCxfLGc9ci5ub3JtYWx8fHIudGFuZ2VudHx8ci5iaXRhbmdlbnQ7aWYoZyl7bGV0IE49ci50YW5nZW50fHxyLmJpdGFuZ2VudCxGPTAsST0wLHY9MCxCPU1hdGguYXRhbjIoby1uLGUpLEE9eEY7QS56PU1hdGguc2luKEIpO2xldCBTPU1hdGguY29zKEIpLEM9UEYsTD1DRjtmb3IoXz0wO188aTtfKyspe2xldCB6PV8vaSpQLlRXT19QSSxqPVMqTWF0aC5jb3Moeiksaz1TKk1hdGguc2luKHopO2cmJihBLng9aixBLnk9ayxOJiYoQz1hLm5vcm1hbGl6ZShhLmNyb3NzKGEuVU5JVF9aLEEsQyksQykpLHIubm9ybWFsJiYocFtGKytdPUEueCxwW0YrK109QS55LHBbRisrXT1BLnoscFtGKytdPUEueCxwW0YrK109QS55LHBbRisrXT1BLnopLHIudGFuZ2VudCYmKGRbSSsrXT1DLngsZFtJKytdPUMueSxkW0krK109Qy56LGRbSSsrXT1DLngsZFtJKytdPUMueSxkW0krK109Qy56KSxyLmJpdGFuZ2VudCYmKEw9YS5ub3JtYWxpemUoYS5jcm9zcyhBLEMsTCksTCksaFt2KytdPUwueCxoW3YrK109TC55LGhbdisrXT1MLnosaFt2KytdPUwueCxoW3YrK109TC55LGhbdisrXT1MLnopKX1mb3IoXz0wO188aTtfKyspci5ub3JtYWwmJihwW0YrK109MCxwW0YrK109MCxwW0YrK109LTEpLHIudGFuZ2VudCYmKGRbSSsrXT0xLGRbSSsrXT0wLGRbSSsrXT0wKSxyLmJpdGFuZ2VudCYmKGhbdisrXT0wLGhbdisrXT0tMSxoW3YrK109MCk7Zm9yKF89MDtfPGk7XysrKXIubm9ybWFsJiYocFtGKytdPTAscFtGKytdPTAscFtGKytdPTEpLHIudGFuZ2VudCYmKGRbSSsrXT0xLGRbSSsrXT0wLGRbSSsrXT0wKSxyLmJpdGFuZ2VudCYmKGhbdisrXT0wLGhbdisrXT0xLGhbdisrXT0wKX1sZXQgYj0xMippLTEyLHc9THQuY3JlYXRlVHlwZWRBcnJheSh1LGIpLE89MCxFPTA7Zm9yKF89MDtfPGktMTtfKyspd1tPKytdPUUsd1tPKytdPUUrMix3W08rK109RSszLHdbTysrXT1FLHdbTysrXT1FKzMsd1tPKytdPUUrMSxFKz0yO2Zvcih3W08rK109cy0yLHdbTysrXT0wLHdbTysrXT0xLHdbTysrXT1zLTIsd1tPKytdPTEsd1tPKytdPXMtMSxfPTE7XzxpLTE7XysrKXdbTysrXT1zK18rMSx3W08rK109cytfLHdbTysrXT1zO2ZvcihfPTE7XzxpLTE7XysrKXdbTysrXT1mLHdbTysrXT1mK18sd1tPKytdPWYrXysxO2xldCBUPTA7aWYoci5zdCl7bGV0IE49TWF0aC5tYXgobixvKTtmb3IoXz0wO188dTtfKyspe2xldCBGPWEuZnJvbUFycmF5KGMsXyozLE1GKTtsW1QrK109KEYueCtOKS8oMipOKSxsW1QrK109KEYueStOKS8oMipOKX19bGV0IHg9bmV3IGllO3IucG9zaXRpb24mJih4LnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Y30pKSxyLm5vcm1hbCYmKHgubm9ybWFsPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpwfSkpLHIudGFuZ2VudCYmKHgudGFuZ2VudD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6ZH0pKSxyLmJpdGFuZ2VudCYmKHguYml0YW5nZW50PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpofSkpLHIuc3QmJih4LnN0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpsfSkpLGRfLng9ZSouNSxkXy55PU1hdGgubWF4KG8sbik7bGV0IE09bmV3IEF0KGEuWkVSTyxKLm1hZ25pdHVkZShkXykpO2lmKG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7ZT1jLmxlbmd0aDtsZXQgTj10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1hZS5OT05FPzA6MSxGPW5ldyBVaW50OEFycmF5KGUvMykuZmlsbChOKTt4LmFwcGx5T2Zmc2V0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOkZ9KX1yZXR1cm4gbmV3IFV0KHthdHRyaWJ1dGVzOngsaW5kaWNlczp3LHByaW1pdGl2ZVR5cGU6QnQuVFJJQU5HTEVTLGJvdW5kaW5nU3BoZXJlOk0sb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTt6aS5nZXRVbml0Q3lsaW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gbShtXyl8fChtXz16aS5jcmVhdGVHZW9tZXRyeShuZXcgemkoe3RvcFJhZGl1czoxLGJvdHRvbVJhZGl1czoxLGxlbmd0aDoxLHZlcnRleEZvcm1hdDpwdC5QT1NJVElPTl9PTkxZfSkpKSxtX307cWY9eml9KTt2YXIgX189e307bGUoX18se2RlZmF1bHQ6KCk9PklGfSk7ZnVuY3Rpb24gTkYodCxlKXtyZXR1cm4gbShlKSYmKHQ9cWYudW5wYWNrKHQsZSkpLHFmLmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBJRix5Xz0kKCgpPT57aF8oKTtmdCgpO0lGPU5GfSk7ZnVuY3Rpb24gT2EodCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5sZW5ndGgsbj10LnRvcFJhZGl1cyxvPXQuYm90dG9tUmFkaXVzLHI9dC5zbGljZXM/PzEyOCxpPU1hdGgubWF4KHQubnVtYmVyT2ZWZXJ0aWNhbExpbmVzPz8xNiwwKTtpZih5LnR5cGVPZi5udW1iZXIoIm9wdGlvbnMucG9zaXRpb25zIixlKSx5LnR5cGVPZi5udW1iZXIoIm9wdGlvbnMudG9wUmFkaXVzIixuKSx5LnR5cGVPZi5udW1iZXIoIm9wdGlvbnMuYm90dG9tUmFkaXVzIixvKSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygib3B0aW9ucy5zbGljZXMiLHIsMyksbSh0Lm9mZnNldEF0dHJpYnV0ZSkmJnQub2Zmc2V0QXR0cmlidXRlPT09YWUuVE9QKXRocm93IG5ldyBEKCJHZW9tZXRyeU9mZnNldEF0dHJpYnV0ZS5UT1AgaXMgbm90IGEgc3VwcG9ydGVkIG9wdGlvbnMub2Zmc2V0QXR0cmlidXRlIGZvciB0aGlzIGdlb21ldHJ5LiIpO3RoaXMuX2xlbmd0aD1lLHRoaXMuX3RvcFJhZGl1cz1uLHRoaXMuX2JvdHRvbVJhZGl1cz1vLHRoaXMuX3NsaWNlcz1yLHRoaXMuX251bWJlck9mVmVydGljYWxMaW5lcz1pLHRoaXMuX29mZnNldEF0dHJpYnV0ZT10Lm9mZnNldEF0dHJpYnV0ZSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVDeWxpbmRlck91dGxpbmVHZW9tZXRyeSJ9dmFyIGdfLGdjLEFfLFJPPSQoKCk9Pnt2ZSgpO2tlKCk7RHQoKTtXdCgpO0RlKCk7cF8oKTt5ZSgpO2Z0KCk7SHQoKTtZZSgpOyRlKCk7YW4oKTtEbygpO1plKCk7dG4oKTtnXz1uZXcgSjtPYS5wYWNrZWRMZW5ndGg9NjtPYS5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkseS5kZWZpbmVkKCJhcnJheSIsZSksbj1uPz8wLGVbbisrXT10Ll9sZW5ndGgsZVtuKytdPXQuX3RvcFJhZGl1cyxlW24rK109dC5fYm90dG9tUmFkaXVzLGVbbisrXT10Ll9zbGljZXMsZVtuKytdPXQuX251bWJlck9mVmVydGljYWxMaW5lcyxlW25dPXQuX29mZnNldEF0dHJpYnV0ZT8/LTEsZX07Z2M9e2xlbmd0aDp2b2lkIDAsdG9wUmFkaXVzOnZvaWQgMCxib3R0b21SYWRpdXM6dm9pZCAwLHNsaWNlczp2b2lkIDAsbnVtYmVyT2ZWZXJ0aWNhbExpbmVzOnZvaWQgMCxvZmZzZXRBdHRyaWJ1dGU6dm9pZCAwfTtPYS51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3kuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MDtsZXQgbz10W2UrK10scj10W2UrK10saT10W2UrK10scz10W2UrK10sZj10W2UrK10sdT10W2VdO3JldHVybiBtKG4pPyhuLl9sZW5ndGg9byxuLl90b3BSYWRpdXM9cixuLl9ib3R0b21SYWRpdXM9aSxuLl9zbGljZXM9cyxuLl9udW1iZXJPZlZlcnRpY2FsTGluZXM9ZixuLl9vZmZzZXRBdHRyaWJ1dGU9dT09PS0xP3ZvaWQgMDp1LG4pOihnYy5sZW5ndGg9byxnYy50b3BSYWRpdXM9cixnYy5ib3R0b21SYWRpdXM9aSxnYy5zbGljZXM9cyxnYy5udW1iZXJPZlZlcnRpY2FsTGluZXM9ZixnYy5vZmZzZXRBdHRyaWJ1dGU9dT09PS0xP3ZvaWQgMDp1LG5ldyBPYShnYykpfTtPYS5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9sZW5ndGgsbj10Ll90b3BSYWRpdXMsbz10Ll9ib3R0b21SYWRpdXMscj10Ll9zbGljZXMsaT10Ll9udW1iZXJPZlZlcnRpY2FsTGluZXM7aWYoZTw9MHx8bjwwfHxvPDB8fG49PT0wJiZvPT09MClyZXR1cm47bGV0IHM9cioyLGY9d2QuY29tcHV0ZVBvc2l0aW9ucyhlLG4sbyxyLCExKSx1PXIqMixjO2lmKGk+MCl7bGV0IGc9TWF0aC5taW4oaSxyKTtjPU1hdGgucm91bmQoci9nKSx1Kz1nfWxldCBsPUx0LmNyZWF0ZVR5cGVkQXJyYXkocyx1KjIpLHA9MCxkO2ZvcihkPTA7ZDxyLTE7ZCsrKWxbcCsrXT1kLGxbcCsrXT1kKzEsbFtwKytdPWQrcixsW3ArK109ZCsxK3I7aWYobFtwKytdPXItMSxsW3ArK109MCxsW3ArK109cityLTEsbFtwKytdPXIsaT4wKWZvcihkPTA7ZDxyO2QrPWMpbFtwKytdPWQsbFtwKytdPWQrcjtsZXQgaD1uZXcgaWU7aC5wb3NpdGlvbj1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmZ9KSxnXy54PWUqLjUsZ18ueT1NYXRoLm1heChvLG4pO2xldCBfPW5ldyBBdChhLlpFUk8sSi5tYWduaXR1ZGUoZ18pKTtpZihtKHQuX29mZnNldEF0dHJpYnV0ZSkpe2U9Zi5sZW5ndGg7bGV0IGc9dC5fb2Zmc2V0QXR0cmlidXRlPT09YWUuTk9ORT8wOjEsYj1uZXcgVWludDhBcnJheShlLzMpLmZpbGwoZyk7aC5hcHBseU9mZnNldD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpifSl9cmV0dXJuIG5ldyBVdCh7YXR0cmlidXRlczpoLGluZGljZXM6bCxwcmltaXRpdmVUeXBlOkJ0LkxJTkVTLGJvdW5kaW5nU3BoZXJlOl8sb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtBXz1PYX0pO3ZhciBiXz17fTtsZShiXyx7ZGVmYXVsdDooKT0+RkZ9KTtmdW5jdGlvbiB2Rih0LGUpe3JldHVybiBtKGUpJiYodD1BXy51bnBhY2sodCxlKSksQV8uY3JlYXRlR2VvbWV0cnkodCl9dmFyIEZGLHdfPSQoKCk9PntSTygpO2Z0KCk7RkY9dkZ9KTt2YXIgVF89e307bGUoVF8se2RlZmF1bHQ6KCk9PkRGfSk7ZnVuY3Rpb24gTEYodCxlKXtyZXR1cm4gbShlKSYmKHQ9enIudW5wYWNrKHQsZSkpLHQuX2NlbnRlcj1hLmNsb25lKHQuX2NlbnRlciksdC5fZWxsaXBzb2lkPVkuY2xvbmUodC5fZWxsaXBzb2lkKSx6ci5jcmVhdGVHZW9tZXRyeSh0KX12YXIgREYsT189JCgoKT0+e0R0KCk7ZnQoKTtPMCgpOyR0KCk7REY9TEZ9KTt2YXIgRV89e307bGUoRV8se2RlZmF1bHQ6KCk9PlVGfSk7ZnVuY3Rpb24gQkYodCxlKXtyZXR1cm4gbShlKSYmKHQ9anIudW5wYWNrKHQsZSkpLHQuX2NlbnRlcj1hLmNsb25lKHQuX2NlbnRlciksdC5fZWxsaXBzb2lkPVkuY2xvbmUodC5fZWxsaXBzb2lkKSxqci5jcmVhdGVHZW9tZXRyeSh0KX12YXIgVUYsUl89JCgoKT0+e0R0KCk7ZnQoKTt4MCgpOyR0KCk7VUY9QkZ9KTtmdW5jdGlvbiBqaSh0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10LnJhZGlpPz9IRixuPXQuaW5uZXJSYWRpaT8/ZSxvPXQubWluaW11bUNsb2NrPz8wLHI9dC5tYXhpbXVtQ2xvY2s/P1AuVFdPX1BJLGk9dC5taW5pbXVtQ29uZT8/MCxzPXQubWF4aW11bUNvbmU/P1AuUEksZj1NYXRoLnJvdW5kKHQuc3RhY2tQYXJ0aXRpb25zPz82NCksdT1NYXRoLnJvdW5kKHQuc2xpY2VQYXJ0aXRpb25zPz82NCksYz10LnZlcnRleEZvcm1hdD8/cHQuREVGQVVMVDtpZih1PDMpdGhyb3cgbmV3IEQoIm9wdGlvbnMuc2xpY2VQYXJ0aXRpb25zIGNhbm5vdCBiZSBsZXNzIHRoYW4gdGhyZWUuIik7aWYoZjwzKXRocm93IG5ldyBEKCJvcHRpb25zLnN0YWNrUGFydGl0aW9ucyBjYW5ub3QgYmUgbGVzcyB0aGFuIHRocmVlLiIpO3RoaXMuX3JhZGlpPWEuY2xvbmUoZSksdGhpcy5faW5uZXJSYWRpaT1hLmNsb25lKG4pLHRoaXMuX21pbmltdW1DbG9jaz1vLHRoaXMuX21heGltdW1DbG9jaz1yLHRoaXMuX21pbmltdW1Db25lPWksdGhpcy5fbWF4aW11bUNvbmU9cyx0aGlzLl9zdGFja1BhcnRpdGlvbnM9Zix0aGlzLl9zbGljZVBhcnRpdGlvbnM9dSx0aGlzLl92ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUoYyksdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUVsbGlwc29pZEdlb21ldHJ5In12YXIga0YsR0YsVkYsekYsakYsSEYsU08seE8sQ08sUE8sTU8sQXMsU18sY3IsVGQ9JCgoKT0+e3ZlKCk7a2UoKTtEdCgpO0RlKCk7eWUoKTtmdCgpO0h0KCk7JHQoKTtZZSgpOyRlKCk7YW4oKTtEbygpO1plKCk7S3QoKTt0bigpO3hvKCk7a0Y9bmV3IGEsR0Y9bmV3IGEsVkY9bmV3IGEsekY9bmV3IGEsakY9bmV3IGEsSEY9bmV3IGEoMSwxLDEpLFNPPU1hdGguY29zLHhPPU1hdGguc2luO2ppLnBhY2tlZExlbmd0aD0yKmEucGFja2VkTGVuZ3RoK3B0LnBhY2tlZExlbmd0aCs3O2ppLnBhY2s9ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJ2YWx1ZSBpcyByZXF1aXJlZCIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJhcnJheSBpcyByZXF1aXJlZCIpO3JldHVybiBuPW4/PzAsYS5wYWNrKHQuX3JhZGlpLGUsbiksbis9YS5wYWNrZWRMZW5ndGgsYS5wYWNrKHQuX2lubmVyUmFkaWksZSxuKSxuKz1hLnBhY2tlZExlbmd0aCxwdC5wYWNrKHQuX3ZlcnRleEZvcm1hdCxlLG4pLG4rPXB0LnBhY2tlZExlbmd0aCxlW24rK109dC5fbWluaW11bUNsb2NrLGVbbisrXT10Ll9tYXhpbXVtQ2xvY2ssZVtuKytdPXQuX21pbmltdW1Db25lLGVbbisrXT10Ll9tYXhpbXVtQ29uZSxlW24rK109dC5fc3RhY2tQYXJ0aXRpb25zLGVbbisrXT10Ll9zbGljZVBhcnRpdGlvbnMsZVtuXT10Ll9vZmZzZXRBdHRyaWJ1dGU/Py0xLGV9O0NPPW5ldyBhLFBPPW5ldyBhLE1PPW5ldyBwdCxBcz17cmFkaWk6Q08saW5uZXJSYWRpaTpQTyx2ZXJ0ZXhGb3JtYXQ6TU8sbWluaW11bUNsb2NrOnZvaWQgMCxtYXhpbXVtQ2xvY2s6dm9pZCAwLG1pbmltdW1Db25lOnZvaWQgMCxtYXhpbXVtQ29uZTp2b2lkIDAsc3RhY2tQYXJ0aXRpb25zOnZvaWQgMCxzbGljZVBhcnRpdGlvbnM6dm9pZCAwLG9mZnNldEF0dHJpYnV0ZTp2b2lkIDB9O2ppLnVucGFjaz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImFycmF5IGlzIHJlcXVpcmVkIik7ZT1lPz8wO2xldCBvPWEudW5wYWNrKHQsZSxDTyk7ZSs9YS5wYWNrZWRMZW5ndGg7bGV0IHI9YS51bnBhY2sodCxlLFBPKTtlKz1hLnBhY2tlZExlbmd0aDtsZXQgaT1wdC51bnBhY2sodCxlLE1PKTtlKz1wdC5wYWNrZWRMZW5ndGg7bGV0IHM9dFtlKytdLGY9dFtlKytdLHU9dFtlKytdLGM9dFtlKytdLGw9dFtlKytdLHA9dFtlKytdLGQ9dFtlXTtyZXR1cm4gbShuKT8obi5fcmFkaWk9YS5jbG9uZShvLG4uX3JhZGlpKSxuLl9pbm5lclJhZGlpPWEuY2xvbmUocixuLl9pbm5lclJhZGlpKSxuLl92ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUoaSxuLl92ZXJ0ZXhGb3JtYXQpLG4uX21pbmltdW1DbG9jaz1zLG4uX21heGltdW1DbG9jaz1mLG4uX21pbmltdW1Db25lPXUsbi5fbWF4aW11bUNvbmU9YyxuLl9zdGFja1BhcnRpdGlvbnM9bCxuLl9zbGljZVBhcnRpdGlvbnM9cCxuLl9vZmZzZXRBdHRyaWJ1dGU9ZD09PS0xP3ZvaWQgMDpkLG4pOihBcy5taW5pbXVtQ2xvY2s9cyxBcy5tYXhpbXVtQ2xvY2s9ZixBcy5taW5pbXVtQ29uZT11LEFzLm1heGltdW1Db25lPWMsQXMuc3RhY2tQYXJ0aXRpb25zPWwsQXMuc2xpY2VQYXJ0aXRpb25zPXAsQXMub2Zmc2V0QXR0cmlidXRlPWQ9PT0tMT92b2lkIDA6ZCxuZXcgamkoQXMpKX07amkuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fcmFkaWk7aWYoZS54PD0wfHxlLnk8PTB8fGUuejw9MClyZXR1cm47bGV0IG49dC5faW5uZXJSYWRpaTtpZihuLng8PTB8fG4ueTw9MHx8bi56PD0wKXJldHVybjtsZXQgbz10Ll9taW5pbXVtQ2xvY2sscj10Ll9tYXhpbXVtQ2xvY2ssaT10Ll9taW5pbXVtQ29uZSxzPXQuX21heGltdW1Db25lLGY9dC5fdmVydGV4Rm9ybWF0LHU9dC5fc2xpY2VQYXJ0aXRpb25zKzEsYz10Ll9zdGFja1BhcnRpdGlvbnMrMTt1PU1hdGgucm91bmQodSpNYXRoLmFicyhyLW8pL1AuVFdPX1BJKSxjPU1hdGgucm91bmQoYypNYXRoLmFicyhzLWkpL1AuUEkpLHU8MiYmKHU9MiksYzwyJiYoYz0yKTtsZXQgbCxwLGQ9MCxoPVtpXSxfPVtvXTtmb3IobD0wO2w8YztsKyspaC5wdXNoKGkrbCoocy1pKS8oYy0xKSk7Zm9yKGgucHVzaChzKSxwPTA7cDx1O3ArKylfLnB1c2gobytwKihyLW8pLyh1LTEpKTtfLnB1c2gocik7bGV0IGc9aC5sZW5ndGgsYj1fLmxlbmd0aCx3PTAsTz0xLEU9bi54IT09ZS54fHxuLnkhPT1lLnl8fG4ueiE9PWUueixUPSExLHg9ITEsTT0hMTtFJiYoTz0yLGk+MCYmKFQ9ITAsdys9dS0xKSxzPE1hdGguUEkmJih4PSEwLHcrPXUtMSksKHItbyklUC5UV09fUEk/KE09ITAsdys9KGMtMSkqMisxKTp3Kz0xKTtsZXQgTj1iKmcqTyxGPW5ldyBGbG9hdDY0QXJyYXkoTiozKSxJPW5ldyBBcnJheShOKS5maWxsKCExKSx2PW5ldyBBcnJheShOKS5maWxsKCExKSxCPXUqYypPLEE9NiooQit3KzEtKHUrYykqTyksUz1MdC5jcmVhdGVUeXBlZEFycmF5KEIsQSksQz1mLm5vcm1hbD9uZXcgRmxvYXQzMkFycmF5KE4qMyk6dm9pZCAwLEw9Zi50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkoTiozKTp2b2lkIDAsej1mLmJpdGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KE4qMyk6dm9pZCAwLGo9Zi5zdD9uZXcgRmxvYXQzMkFycmF5KE4qMik6dm9pZCAwLGs9bmV3IEFycmF5KGcpLHE9bmV3IEFycmF5KGcpO2ZvcihsPTA7bDxnO2wrKylrW2xdPXhPKGhbbF0pLHFbbF09U08oaFtsXSk7bGV0IFc9bmV3IEFycmF5KGIpLFI9bmV3IEFycmF5KGIpO2ZvcihwPTA7cDxiO3ArKylSW3BdPVNPKF9bcF0pLFdbcF09eE8oX1twXSk7Zm9yKGw9MDtsPGc7bCsrKWZvcihwPTA7cDxiO3ArKylGW2QrK109ZS54KmtbbF0qUltwXSxGW2QrK109ZS55KmtbbF0qV1twXSxGW2QrK109ZS56KnFbbF07bGV0IG50PU4vMjtpZihFKWZvcihsPTA7bDxnO2wrKylmb3IocD0wO3A8YjtwKyspRltkKytdPW4ueCprW2xdKlJbcF0sRltkKytdPW4ueSprW2xdKldbcF0sRltkKytdPW4ueipxW2xdLElbbnRdPSEwLGw+MCYmbCE9PWctMSYmcCE9PTAmJnAhPT1iLTEmJih2W250XT0hMCksbnQrKztkPTA7bGV0IGF0LGx0O2ZvcihsPTE7bDxnLTI7bCsrKWZvcihhdD1sKmIsbHQ9KGwrMSkqYixwPTE7cDxiLTI7cCsrKVNbZCsrXT1sdCtwLFNbZCsrXT1sdCtwKzEsU1tkKytdPWF0K3ArMSxTW2QrK109bHQrcCxTW2QrK109YXQrcCsxLFNbZCsrXT1hdCtwO2lmKEUpe2xldCBkZT1nKmI7Zm9yKGw9MTtsPGctMjtsKyspZm9yKGF0PWRlK2wqYixsdD1kZSsobCsxKSpiLHA9MTtwPGItMjtwKyspU1tkKytdPWx0K3AsU1tkKytdPWF0K3AsU1tkKytdPWF0K3ArMSxTW2QrK109bHQrcCxTW2QrK109YXQrcCsxLFNbZCsrXT1sdCtwKzF9bGV0IF90LG90O2lmKEUpe2lmKFQpZm9yKG90PWcqYixsPTE7bDxiLTI7bCsrKVNbZCsrXT1sLFNbZCsrXT1sKzEsU1tkKytdPW90K2wrMSxTW2QrK109bCxTW2QrK109b3QrbCsxLFNbZCsrXT1vdCtsO2lmKHgpZm9yKF90PWcqYi1iLG90PWcqYipPLWIsbD0xO2w8Yi0yO2wrKylTW2QrK109X3QrbCsxLFNbZCsrXT1fdCtsLFNbZCsrXT1vdCtsLFNbZCsrXT1fdCtsKzEsU1tkKytdPW90K2wsU1tkKytdPW90K2wrMX1pZihNKXtmb3IobD0xO2w8Zy0yO2wrKylvdD1iKmcrYipsLF90PWIqbCxTW2QrK109b3QsU1tkKytdPV90K2IsU1tkKytdPV90LFNbZCsrXT1vdCxTW2QrK109b3QrYixTW2QrK109X3QrYjtmb3IobD0xO2w8Zy0yO2wrKylvdD1iKmcrYioobCsxKS0xLF90PWIqKGwrMSktMSxTW2QrK109X3QrYixTW2QrK109b3QsU1tkKytdPV90LFNbZCsrXT1fdCtiLFNbZCsrXT1vdCtiLFNbZCsrXT1vdH1sZXQgUHQ9bmV3IGllO2YucG9zaXRpb24mJihQdC5wb3NpdGlvbj1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOkZ9KSk7bGV0IGd0PTAsUnQ9MCxkdD0wLHJ0PTAseHQ9Ti8yLEd0LHBlPVkuZnJvbUNhcnRlc2lhbjMoZSkscmU9WS5mcm9tQ2FydGVzaWFuMyhuKTtpZihmLnN0fHxmLm5vcm1hbHx8Zi50YW5nZW50fHxmLmJpdGFuZ2VudCl7Zm9yKGw9MDtsPE47bCsrKXtHdD1JW2xdP3JlOnBlO2xldCBkZT1hLmZyb21BcnJheShGLGwqMyxrRiksZmU9R3QuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGRlLEdGKTtpZih2W2xdJiZhLm5lZ2F0ZShmZSxmZSksZi5zdCl7bGV0IFp0PUoubmVnYXRlKGZlLGpGKTtqW2d0KytdPU1hdGguYXRhbjIoWnQueSxadC54KS9QLlRXT19QSSsuNSxqW2d0KytdPU1hdGguYXNpbihmZS56KS9NYXRoLlBJKy41fWlmKGYubm9ybWFsJiYoQ1tSdCsrXT1mZS54LENbUnQrK109ZmUueSxDW1J0KytdPWZlLnopLGYudGFuZ2VudHx8Zi5iaXRhbmdlbnQpe2xldCBadD1WRixRdD0wLE5lO2lmKElbbF0mJihRdD14dCksIVQmJmw+PVF0JiZsPFF0K2IqMj9OZT1hLlVOSVRfWDpOZT1hLlVOSVRfWixhLmNyb3NzKE5lLGZlLFp0KSxhLm5vcm1hbGl6ZShadCxadCksZi50YW5nZW50JiYoTFtkdCsrXT1adC54LExbZHQrK109WnQueSxMW2R0KytdPVp0LnopLGYuYml0YW5nZW50KXtsZXQgZ2U9YS5jcm9zcyhmZSxadCx6Rik7YS5ub3JtYWxpemUoZ2UsZ2UpLHpbcnQrK109Z2UueCx6W3J0KytdPWdlLnkseltydCsrXT1nZS56fX19Zi5zdCYmKFB0LnN0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpqfSkpLGYubm9ybWFsJiYoUHQubm9ybWFsPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpDfSkpLGYudGFuZ2VudCYmKFB0LnRhbmdlbnQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOkx9KSksZi5iaXRhbmdlbnQmJihQdC5iaXRhbmdlbnQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnp9KSl9aWYobSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgZGU9Ri5sZW5ndGgsZmU9dC5fb2Zmc2V0QXR0cmlidXRlPT09YWUuTk9ORT8wOjEsWnQ9bmV3IFVpbnQ4QXJyYXkoZGUvMykuZmlsbChmZSk7UHQuYXBwbHlPZmZzZXQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6WnR9KX1yZXR1cm4gbmV3IFV0KHthdHRyaWJ1dGVzOlB0LGluZGljZXM6UyxwcmltaXRpdmVUeXBlOkJ0LlRSSUFOR0xFUyxib3VuZGluZ1NwaGVyZTpBdC5mcm9tRWxsaXBzb2lkKHBlKSxvZmZzZXRBdHRyaWJ1dGU6dC5fb2Zmc2V0QXR0cmlidXRlfSl9O2ppLmdldFVuaXRFbGxpcHNvaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbShTXyl8fChTXz1qaS5jcmVhdGVHZW9tZXRyeShuZXcgamkoe3JhZGlpOm5ldyBhKDEsMSwxKSx2ZXJ0ZXhGb3JtYXQ6cHQuUE9TSVRJT05fT05MWX0pKSksU199O2NyPWppfSk7dmFyIHhfPXt9O2xlKHhfLHtkZWZhdWx0OigpPT5LRn0pO2Z1bmN0aW9uIHFGKHQsZSl7cmV0dXJuIG0oZSkmJih0PWNyLnVucGFjayh0LGUpKSxjci5jcmVhdGVHZW9tZXRyeSh0KX12YXIgS0YsQ189JCgoKT0+e2Z0KCk7VGQoKTtLRj1xRn0pO2Z1bmN0aW9uIEVhKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNUO2xldCBlPXQucmFkaWk/P1dGLG49dC5pbm5lclJhZGlpPz9lLG89dC5taW5pbXVtQ2xvY2s/PzAscj10Lm1heGltdW1DbG9jaz8/UC5UV09fUEksaT10Lm1pbmltdW1Db25lPz8wLHM9dC5tYXhpbXVtQ29uZT8/UC5QSSxmPU1hdGgucm91bmQodC5zdGFja1BhcnRpdGlvbnM/PzEwKSx1PU1hdGgucm91bmQodC5zbGljZVBhcnRpdGlvbnM/PzgpLGM9TWF0aC5yb3VuZCh0LnN1YmRpdmlzaW9ucz8/MTI4KTtpZihmPDEpdGhyb3cgbmV3IEQoIm9wdGlvbnMuc3RhY2tQYXJ0aXRpb25zIGNhbm5vdCBiZSBsZXNzIHRoYW4gMSIpO2lmKHU8MCl0aHJvdyBuZXcgRCgib3B0aW9ucy5zbGljZVBhcnRpdGlvbnMgY2Fubm90IGJlIGxlc3MgdGhhbiAwIik7aWYoYzwwKXRocm93IG5ldyBEKCJvcHRpb25zLnN1YmRpdmlzaW9ucyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB6ZXJvLiIpO2lmKG0odC5vZmZzZXRBdHRyaWJ1dGUpJiZ0Lm9mZnNldEF0dHJpYnV0ZT09PWFlLlRPUCl0aHJvdyBuZXcgRCgiR2VvbWV0cnlPZmZzZXRBdHRyaWJ1dGUuVE9QIGlzIG5vdCBhIHN1cHBvcnRlZCBvcHRpb25zLm9mZnNldEF0dHJpYnV0ZSBmb3IgdGhpcyBnZW9tZXRyeS4iKTt0aGlzLl9yYWRpaT1hLmNsb25lKGUpLHRoaXMuX2lubmVyUmFkaWk9YS5jbG9uZShuKSx0aGlzLl9taW5pbXVtQ2xvY2s9byx0aGlzLl9tYXhpbXVtQ2xvY2s9cix0aGlzLl9taW5pbXVtQ29uZT1pLHRoaXMuX21heGltdW1Db25lPXMsdGhpcy5fc3RhY2tQYXJ0aXRpb25zPWYsdGhpcy5fc2xpY2VQYXJ0aXRpb25zPXUsdGhpcy5fc3ViZGl2aXNpb25zPWMsdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUVsbGlwc29pZE91dGxpbmVHZW9tZXRyeSJ9dmFyIFdGLE9kLEVkLE5PLElPLEhpLFhyLFBfPSQoKCk9Pnt2ZSgpO0R0KCk7RGUoKTt5ZSgpO2Z0KCk7SHQoKTskdCgpO1llKCk7JGUoKTthbigpO0RvKCk7WmUoKTtLdCgpO3RuKCk7V0Y9bmV3IGEoMSwxLDEpLE9kPU1hdGguY29zLEVkPU1hdGguc2luO0VhLnBhY2tlZExlbmd0aD0yKmEucGFja2VkTGVuZ3RoKzg7RWEucGFjaz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoInZhbHVlIGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImFycmF5IGlzIHJlcXVpcmVkIik7cmV0dXJuIG49bj8/MCxhLnBhY2sodC5fcmFkaWksZSxuKSxuKz1hLnBhY2tlZExlbmd0aCxhLnBhY2sodC5faW5uZXJSYWRpaSxlLG4pLG4rPWEucGFja2VkTGVuZ3RoLGVbbisrXT10Ll9taW5pbXVtQ2xvY2ssZVtuKytdPXQuX21heGltdW1DbG9jayxlW24rK109dC5fbWluaW11bUNvbmUsZVtuKytdPXQuX21heGltdW1Db25lLGVbbisrXT10Ll9zdGFja1BhcnRpdGlvbnMsZVtuKytdPXQuX3NsaWNlUGFydGl0aW9ucyxlW24rK109dC5fc3ViZGl2aXNpb25zLGVbbl09dC5fb2Zmc2V0QXR0cmlidXRlPz8tMSxlfTtOTz1uZXcgYSxJTz1uZXcgYSxIaT17cmFkaWk6Tk8saW5uZXJSYWRpaTpJTyxtaW5pbXVtQ2xvY2s6dm9pZCAwLG1heGltdW1DbG9jazp2b2lkIDAsbWluaW11bUNvbmU6dm9pZCAwLG1heGltdW1Db25lOnZvaWQgMCxzdGFja1BhcnRpdGlvbnM6dm9pZCAwLHNsaWNlUGFydGl0aW9uczp2b2lkIDAsc3ViZGl2aXNpb25zOnZvaWQgMCxvZmZzZXRBdHRyaWJ1dGU6dm9pZCAwfTtFYS51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJhcnJheSBpcyByZXF1aXJlZCIpO2U9ZT8/MDtsZXQgbz1hLnVucGFjayh0LGUsTk8pO2UrPWEucGFja2VkTGVuZ3RoO2xldCByPWEudW5wYWNrKHQsZSxJTyk7ZSs9YS5wYWNrZWRMZW5ndGg7bGV0IGk9dFtlKytdLHM9dFtlKytdLGY9dFtlKytdLHU9dFtlKytdLGM9dFtlKytdLGw9dFtlKytdLHA9dFtlKytdLGQ9dFtlXTtyZXR1cm4gbShuKT8obi5fcmFkaWk9YS5jbG9uZShvLG4uX3JhZGlpKSxuLl9pbm5lclJhZGlpPWEuY2xvbmUocixuLl9pbm5lclJhZGlpKSxuLl9taW5pbXVtQ2xvY2s9aSxuLl9tYXhpbXVtQ2xvY2s9cyxuLl9taW5pbXVtQ29uZT1mLG4uX21heGltdW1Db25lPXUsbi5fc3RhY2tQYXJ0aXRpb25zPWMsbi5fc2xpY2VQYXJ0aXRpb25zPWwsbi5fc3ViZGl2aXNpb25zPXAsbi5fb2Zmc2V0QXR0cmlidXRlPWQ9PT0tMT92b2lkIDA6ZCxuKTooSGkubWluaW11bUNsb2NrPWksSGkubWF4aW11bUNsb2NrPXMsSGkubWluaW11bUNvbmU9ZixIaS5tYXhpbXVtQ29uZT11LEhpLnN0YWNrUGFydGl0aW9ucz1jLEhpLnNsaWNlUGFydGl0aW9ucz1sLEhpLnN1YmRpdmlzaW9ucz1wLEhpLm9mZnNldEF0dHJpYnV0ZT1kPT09LTE/dm9pZCAwOmQsbmV3IEVhKEhpKSl9O0VhLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX3JhZGlpO2lmKGUueDw9MHx8ZS55PD0wfHxlLno8PTApcmV0dXJuO2xldCBuPXQuX2lubmVyUmFkaWk7aWYobi54PD0wfHxuLnk8PTB8fG4uejw9MClyZXR1cm47bGV0IG89dC5fbWluaW11bUNsb2NrLHI9dC5fbWF4aW11bUNsb2NrLGk9dC5fbWluaW11bUNvbmUscz10Ll9tYXhpbXVtQ29uZSxmPXQuX3N1YmRpdmlzaW9ucyx1PVkuZnJvbUNhcnRlc2lhbjMoZSksYz10Ll9zbGljZVBhcnRpdGlvbnMrMSxsPXQuX3N0YWNrUGFydGl0aW9ucysxO2M9TWF0aC5yb3VuZChjKk1hdGguYWJzKHItbykvUC5UV09fUEkpLGw9TWF0aC5yb3VuZChsKk1hdGguYWJzKHMtaSkvUC5QSSksYzwyJiYoYz0yKSxsPDImJihsPTIpO2xldCBwPTAsZD0xLGg9bi54IT09ZS54fHxuLnkhPT1lLnl8fG4ueiE9PWUueixfPSExLGc9ITE7aCYmKGQ9MixpPjAmJihfPSEwLHArPWMpLHM8TWF0aC5QSSYmKGc9ITAscCs9YykpO2xldCBiPWYqZCoobCtjKSx3PW5ldyBGbG9hdDY0QXJyYXkoYiozKSxPPTIqKGIrcC0oYytsKSpkKSxFPUx0LmNyZWF0ZVR5cGVkQXJyYXkoYixPKSxULHgsTSxOLEY9MCxJPW5ldyBBcnJheShsKSx2PW5ldyBBcnJheShsKTtmb3IoVD0wO1Q8bDtUKyspTj1pK1QqKHMtaSkvKGwtMSksSVtUXT1FZChOKSx2W1RdPU9kKE4pO2xldCBCPW5ldyBBcnJheShmKSxBPW5ldyBBcnJheShmKTtmb3IoVD0wO1Q8ZjtUKyspTT1vK1QqKHItbykvKGYtMSksQltUXT1FZChNKSxBW1RdPU9kKE0pO2ZvcihUPTA7VDxsO1QrKylmb3IoeD0wO3g8Zjt4Kyspd1tGKytdPWUueCpJW1RdKkFbeF0sd1tGKytdPWUueSpJW1RdKkJbeF0sd1tGKytdPWUueip2W1RdO2lmKGgpZm9yKFQ9MDtUPGw7VCsrKWZvcih4PTA7eDxmO3grKyl3W0YrK109bi54KklbVF0qQVt4XSx3W0YrK109bi55KklbVF0qQlt4XSx3W0YrK109bi56KnZbVF07Zm9yKEkubGVuZ3RoPWYsdi5sZW5ndGg9ZixUPTA7VDxmO1QrKylOPWkrVCoocy1pKS8oZi0xKSxJW1RdPUVkKE4pLHZbVF09T2QoTik7Zm9yKEIubGVuZ3RoPWMsQS5sZW5ndGg9YyxUPTA7VDxjO1QrKylNPW8rVCooci1vKS8oYy0xKSxCW1RdPUVkKE0pLEFbVF09T2QoTSk7Zm9yKFQ9MDtUPGY7VCsrKWZvcih4PTA7eDxjO3grKyl3W0YrK109ZS54KklbVF0qQVt4XSx3W0YrK109ZS55KklbVF0qQlt4XSx3W0YrK109ZS56KnZbVF07aWYoaClmb3IoVD0wO1Q8ZjtUKyspZm9yKHg9MDt4PGM7eCsrKXdbRisrXT1uLngqSVtUXSpBW3hdLHdbRisrXT1uLnkqSVtUXSpCW3hdLHdbRisrXT1uLnoqdltUXTtmb3IoRj0wLFQ9MDtUPGwqZDtUKyspe2xldCBMPVQqZjtmb3IoeD0wO3g8Zi0xO3grKylFW0YrK109TCt4LEVbRisrXT1MK3grMX1sZXQgUz1sKmYqZDtmb3IoVD0wO1Q8YztUKyspZm9yKHg9MDt4PGYtMTt4KyspRVtGKytdPVMrVCt4KmMsRVtGKytdPVMrVCsoeCsxKSpjO2lmKGgpZm9yKFM9bCpmKmQrYypmLFQ9MDtUPGM7VCsrKWZvcih4PTA7eDxmLTE7eCsrKUVbRisrXT1TK1QreCpjLEVbRisrXT1TK1QrKHgrMSkqYztpZihoKXtsZXQgTD1sKmYqZCx6PUwrZipjO2lmKF8pZm9yKFQ9MDtUPGM7VCsrKUVbRisrXT1MK1QsRVtGKytdPXorVDtpZihnKWZvcihMKz1mKmMtYyx6Kz1mKmMtYyxUPTA7VDxjO1QrKylFW0YrK109TCtULEVbRisrXT16K1R9bGV0IEM9bmV3IGllKHtwb3NpdGlvbjpuZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnd9KX0pO2lmKG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IEw9dy5sZW5ndGgsej10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1hZS5OT05FPzA6MSxqPW5ldyBVaW50OEFycmF5KEwvMykuZmlsbCh6KTtDLmFwcGx5T2Zmc2V0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOmp9KX1yZXR1cm4gbmV3IFV0KHthdHRyaWJ1dGVzOkMsaW5kaWNlczpFLHByaW1pdGl2ZVR5cGU6QnQuTElORVMsYm91bmRpbmdTcGhlcmU6QXQuZnJvbUVsbGlwc29pZCh1KSxvZmZzZXRBdHRyaWJ1dGU6dC5fb2Zmc2V0QXR0cmlidXRlfSl9O1hyPUVhfSk7dmFyIE1fPXt9O2xlKE1fLHtkZWZhdWx0OigpPT5ZRn0pO2Z1bmN0aW9uIFhGKHQsZSl7cmV0dXJuIG0odC5idWZmZXIsZSkmJih0PVhyLnVucGFjayh0LGUpKSxYci5jcmVhdGVHZW9tZXRyeSh0KX12YXIgWUYsTl89JCgoKT0+e2Z0KCk7UF8oKTtZRj1YRn0pO2Z1bmN0aW9uIEVyKHQpe3RoaXMucGxhbmVzPXQ/P1tdfXZhciBLZixicywkRix2TyxSZCxJXz0kKCgpPT57RHQoKTtfcigpO2Z0KCk7SHQoKTtWcygpO3VzKCk7S2Y9W25ldyBhLG5ldyBhLG5ldyBhXTthLmNsb25lKGEuVU5JVF9YLEtmWzBdKTthLmNsb25lKGEuVU5JVF9ZLEtmWzFdKTthLmNsb25lKGEuVU5JVF9aLEtmWzJdKTticz1uZXcgYSwkRj1uZXcgYSx2Tz1uZXcgb24obmV3IGEoMSwwLDApLDApO0VyLmZyb21Cb3VuZGluZ1NwaGVyZT1mdW5jdGlvbih0LGUpe2lmKCFtKHQpKXRocm93IG5ldyBEKCJib3VuZGluZ1NwaGVyZSBpcyByZXF1aXJlZC4iKTttKGUpfHwoZT1uZXcgRXIpO2xldCBuPUtmLmxlbmd0aCxvPWUucGxhbmVzO28ubGVuZ3RoPTIqbjtsZXQgcj10LmNlbnRlcixpPXQucmFkaXVzLHM9MDtmb3IobGV0IGY9MDtmPG47KytmKXtsZXQgdT1LZltmXSxjPW9bc10sbD1vW3MrMV07bShjKXx8KGM9b1tzXT1uZXcgbWUpLG0obCl8fChsPW9bcysxXT1uZXcgbWUpLGEubXVsdGlwbHlCeVNjYWxhcih1LC1pLGJzKSxhLmFkZChyLGJzLGJzKSxjLng9dS54LGMueT11LnksYy56PXUueixjLnc9LWEuZG90KHUsYnMpLGEubXVsdGlwbHlCeVNjYWxhcih1LGksYnMpLGEuYWRkKHIsYnMsYnMpLGwueD0tdS54LGwueT0tdS55LGwuej0tdS56LGwudz0tYS5kb3QoYS5uZWdhdGUodSwkRiksYnMpLHMrPTJ9cmV0dXJuIGV9O0VyLnByb3RvdHlwZS5jb21wdXRlVmlzaWJpbGl0eT1mdW5jdGlvbih0KXtpZighbSh0KSl0aHJvdyBuZXcgRCgiYm91bmRpbmdWb2x1bWUgaXMgcmVxdWlyZWQuIik7bGV0IGU9dGhpcy5wbGFuZXMsbj0hMTtmb3IobGV0IG89MCxyPWUubGVuZ3RoO288cjsrK28pe2xldCBpPXQuaW50ZXJzZWN0UGxhbmUob24uZnJvbUNhcnRlc2lhbjQoZVtvXSx2TykpO2lmKGk9PT1Tbi5PVVRTSURFKXJldHVybiBTbi5PVVRTSURFO2k9PT1Tbi5JTlRFUlNFQ1RJTkcmJihuPSEwKX1yZXR1cm4gbj9Tbi5JTlRFUlNFQ1RJTkc6U24uSU5TSURFfTtFci5wcm90b3R5cGUuY29tcHV0ZVZpc2liaWxpdHlXaXRoUGxhbmVNYXNrPWZ1bmN0aW9uKHQsZSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoImJvdW5kaW5nVm9sdW1lIGlzIHJlcXVpcmVkLiIpO2lmKCFtKGUpKXRocm93IG5ldyBEKCJwYXJlbnRQbGFuZU1hc2sgaXMgcmVxdWlyZWQuIik7aWYoZT09PUVyLk1BU0tfT1VUU0lERXx8ZT09PUVyLk1BU0tfSU5TSURFKXJldHVybiBlO2xldCBuPUVyLk1BU0tfSU5TSURFLG89dGhpcy5wbGFuZXM7Zm9yKGxldCByPTAsaT1vLmxlbmd0aDtyPGk7KytyKXtsZXQgcz1yPDMxPzE8PHI6MDtpZihyPDMxJiYoZSZzKT09PTApY29udGludWU7bGV0IGY9dC5pbnRlcnNlY3RQbGFuZShvbi5mcm9tQ2FydGVzaWFuNChvW3JdLHZPKSk7aWYoZj09PVNuLk9VVFNJREUpcmV0dXJuIEVyLk1BU0tfT1VUU0lERTtmPT09U24uSU5URVJTRUNUSU5HJiYobnw9cyl9cmV0dXJuIG59O0VyLk1BU0tfT1VUU0lERT00Mjk0OTY3Mjk1O0VyLk1BU0tfSU5TSURFPTA7RXIuTUFTS19JTkRFVEVSTUlOQVRFPTIxNDc0ODM2NDc7UmQ9RXJ9KTtmdW5jdGlvbiBwaSh0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVCx0aGlzLmxlZnQ9dC5sZWZ0LHRoaXMuX2xlZnQ9dm9pZCAwLHRoaXMucmlnaHQ9dC5yaWdodCx0aGlzLl9yaWdodD12b2lkIDAsdGhpcy50b3A9dC50b3AsdGhpcy5fdG9wPXZvaWQgMCx0aGlzLmJvdHRvbT10LmJvdHRvbSx0aGlzLl9ib3R0b209dm9pZCAwLHRoaXMubmVhcj10Lm5lYXI/PzEsdGhpcy5fbmVhcj10aGlzLm5lYXIsdGhpcy5mYXI9dC5mYXI/PzVlOCx0aGlzLl9mYXI9dGhpcy5mYXIsdGhpcy5fY3VsbGluZ1ZvbHVtZT1uZXcgUmQsdGhpcy5fb3J0aG9ncmFwaGljTWF0cml4PW5ldyBzdH1mdW5jdGlvbiBGTyh0KXtpZighbSh0LnJpZ2h0KXx8IW0odC5sZWZ0KXx8IW0odC50b3ApfHwhbSh0LmJvdHRvbSl8fCFtKHQubmVhcil8fCFtKHQuZmFyKSl0aHJvdyBuZXcgRCgicmlnaHQsIGxlZnQsIHRvcCwgYm90dG9tLCBuZWFyLCBvciBmYXIgcGFyYW1ldGVycyBhcmUgbm90IHNldC4iKTtpZih0LnRvcCE9PXQuX3RvcHx8dC5ib3R0b20hPT10Ll9ib3R0b218fHQubGVmdCE9PXQuX2xlZnR8fHQucmlnaHQhPT10Ll9yaWdodHx8dC5uZWFyIT09dC5fbmVhcnx8dC5mYXIhPT10Ll9mYXIpe2lmKHQubGVmdD50LnJpZ2h0KXRocm93IG5ldyBEKCJyaWdodCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBsZWZ0LiIpO2lmKHQuYm90dG9tPnQudG9wKXRocm93IG5ldyBEKCJ0b3AgbXVzdCBiZSBncmVhdGVyIHRoYW4gYm90dG9tLiIpO2lmKHQubmVhcjw9MHx8dC5uZWFyPnQuZmFyKXRocm93IG5ldyBEKCJuZWFyIG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8gYW5kIGxlc3MgdGhhbiBmYXIuIik7dC5fbGVmdD10LmxlZnQsdC5fcmlnaHQ9dC5yaWdodCx0Ll90b3A9dC50b3AsdC5fYm90dG9tPXQuYm90dG9tLHQuX25lYXI9dC5uZWFyLHQuX2Zhcj10LmZhcix0Ll9vcnRob2dyYXBoaWNNYXRyaXg9c3QuY29tcHV0ZU9ydGhvZ3JhcGhpY09mZkNlbnRlcih0LmxlZnQsdC5yaWdodCx0LmJvdHRvbSx0LnRvcCx0Lm5lYXIsdC5mYXIsdC5fb3J0aG9ncmFwaGljTWF0cml4KX19dmFyIFpGLFFGLEpGLHZfLExPLERPPSQoKCk9PntEdCgpO19yKCk7SV8oKTt5ZSgpO2Z0KCk7SHQoKTtLdCgpO2tuKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMocGkucHJvdG90eXBlLHtwcm9qZWN0aW9uTWF0cml4OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRk8odGhpcyksdGhpcy5fb3J0aG9ncmFwaGljTWF0cml4fX19KTtaRj1uZXcgYSxRRj1uZXcgYSxKRj1uZXcgYSx2Xz1uZXcgYTtwaS5wcm90b3R5cGUuY29tcHV0ZUN1bGxpbmdWb2x1bWU9ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJwb3NpdGlvbiBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgiZGlyZWN0aW9uIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBEKCJ1cCBpcyByZXF1aXJlZC4iKTtsZXQgbz10aGlzLl9jdWxsaW5nVm9sdW1lLnBsYW5lcyxyPXRoaXMudG9wLGk9dGhpcy5ib3R0b20scz10aGlzLnJpZ2h0LGY9dGhpcy5sZWZ0LHU9dGhpcy5uZWFyLGM9dGhpcy5mYXIsbD1hLmNyb3NzKGUsbixaRik7YS5ub3JtYWxpemUobCxsKTtsZXQgcD1RRjthLm11bHRpcGx5QnlTY2FsYXIoZSx1LHApLGEuYWRkKHQscCxwKTtsZXQgZD1KRjthLm11bHRpcGx5QnlTY2FsYXIobCxmLGQpLGEuYWRkKHAsZCxkKTtsZXQgaD1vWzBdO3JldHVybiBtKGgpfHwoaD1vWzBdPW5ldyBtZSksaC54PWwueCxoLnk9bC55LGguej1sLnosaC53PS1hLmRvdChsLGQpLGEubXVsdGlwbHlCeVNjYWxhcihsLHMsZCksYS5hZGQocCxkLGQpLGg9b1sxXSxtKGgpfHwoaD1vWzFdPW5ldyBtZSksaC54PS1sLngsaC55PS1sLnksaC56PS1sLnosaC53PS1hLmRvdChhLm5lZ2F0ZShsLHZfKSxkKSxhLm11bHRpcGx5QnlTY2FsYXIobixpLGQpLGEuYWRkKHAsZCxkKSxoPW9bMl0sbShoKXx8KGg9b1syXT1uZXcgbWUpLGgueD1uLngsaC55PW4ueSxoLno9bi56LGgudz0tYS5kb3QobixkKSxhLm11bHRpcGx5QnlTY2FsYXIobixyLGQpLGEuYWRkKHAsZCxkKSxoPW9bM10sbShoKXx8KGg9b1szXT1uZXcgbWUpLGgueD0tbi54LGgueT0tbi55LGguej0tbi56LGgudz0tYS5kb3QoYS5uZWdhdGUobix2XyksZCksaD1vWzRdLG0oaCl8fChoPW9bNF09bmV3IG1lKSxoLng9ZS54LGgueT1lLnksaC56PWUueixoLnc9LWEuZG90KGUscCksYS5tdWx0aXBseUJ5U2NhbGFyKGUsYyxkKSxhLmFkZCh0LGQsZCksaD1vWzVdLG0oaCl8fChoPW9bNV09bmV3IG1lKSxoLng9LWUueCxoLnk9LWUueSxoLno9LWUueixoLnc9LWEuZG90KGEubmVnYXRlKGUsdl8pLGQpLHRoaXMuX2N1bGxpbmdWb2x1bWV9O3BpLnByb3RvdHlwZS5nZXRQaXhlbERpbWVuc2lvbnM9ZnVuY3Rpb24odCxlLG4sbyxyKXtpZihGTyh0aGlzKSwhbSh0KXx8IW0oZSkpdGhyb3cgbmV3IEQoIkJvdGggZHJhd2luZ0J1ZmZlcldpZHRoIGFuZCBkcmF3aW5nQnVmZmVySGVpZ2h0IGFyZSByZXF1aXJlZC4iKTtpZih0PD0wKXRocm93IG5ldyBEKCJkcmF3aW5nQnVmZmVyV2lkdGggbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtpZihlPD0wKXRocm93IG5ldyBEKCJkcmF3aW5nQnVmZmVySGVpZ2h0IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIik7aWYoIW0obikpdGhyb3cgbmV3IEQoImRpc3RhbmNlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG8pKXRocm93IG5ldyBEKCJwaXhlbFJhdGlvIGlzIHJlcXVpcmVkLiIpO2lmKG88PTApdGhyb3cgbmV3IEQoInBpeGVsUmF0aW8gbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtpZighbShyKSl0aHJvdyBuZXcgRCgiQSByZXN1bHQgb2JqZWN0IGlzIHJlcXVpcmVkLiIpO2xldCBpPXRoaXMucmlnaHQtdGhpcy5sZWZ0LHM9dGhpcy50b3AtdGhpcy5ib3R0b20sZj1vKmkvdCx1PW8qcy9lO3JldHVybiByLng9ZixyLnk9dSxyfTtwaS5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCl8fCh0PW5ldyBwaSksdC5sZWZ0PXRoaXMubGVmdCx0LnJpZ2h0PXRoaXMucmlnaHQsdC50b3A9dGhpcy50b3AsdC5ib3R0b209dGhpcy5ib3R0b20sdC5uZWFyPXRoaXMubmVhcix0LmZhcj10aGlzLmZhcix0Ll9sZWZ0PXZvaWQgMCx0Ll9yaWdodD12b2lkIDAsdC5fdG9wPXZvaWQgMCx0Ll9ib3R0b209dm9pZCAwLHQuX25lYXI9dm9pZCAwLHQuX2Zhcj12b2lkIDAsdH07cGkucHJvdG90eXBlLmVxdWFscz1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KSYmdCBpbnN0YW5jZW9mIHBpJiZ0aGlzLnJpZ2h0PT09dC5yaWdodCYmdGhpcy5sZWZ0PT09dC5sZWZ0JiZ0aGlzLnRvcD09PXQudG9wJiZ0aGlzLmJvdHRvbT09PXQuYm90dG9tJiZ0aGlzLm5lYXI9PT10Lm5lYXImJnRoaXMuZmFyPT09dC5mYXJ9O3BpLnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdD09PXRoaXN8fG0odCkmJnQgaW5zdGFuY2VvZiBwaSYmUC5lcXVhbHNFcHNpbG9uKHRoaXMucmlnaHQsdC5yaWdodCxlLG4pJiZQLmVxdWFsc0Vwc2lsb24odGhpcy5sZWZ0LHQubGVmdCxlLG4pJiZQLmVxdWFsc0Vwc2lsb24odGhpcy50b3AsdC50b3AsZSxuKSYmUC5lcXVhbHNFcHNpbG9uKHRoaXMuYm90dG9tLHQuYm90dG9tLGUsbikmJlAuZXF1YWxzRXBzaWxvbih0aGlzLm5lYXIsdC5uZWFyLGUsbikmJlAuZXF1YWxzRXBzaWxvbih0aGlzLmZhcix0LmZhcixlLG4pfTtMTz1waX0pO2Z1bmN0aW9uIG5yKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNULHRoaXMuX29mZkNlbnRlckZydXN0dW09bmV3IExPLHRoaXMud2lkdGg9dC53aWR0aCx0aGlzLl93aWR0aD12b2lkIDAsdGhpcy5hc3BlY3RSYXRpbz10LmFzcGVjdFJhdGlvLHRoaXMuX2FzcGVjdFJhdGlvPXZvaWQgMCx0aGlzLm5lYXI9dC5uZWFyPz8xLHRoaXMuX25lYXI9dGhpcy5uZWFyLHRoaXMuZmFyPXQuZmFyPz81ZTgsdGhpcy5fZmFyPXRoaXMuZmFyfWZ1bmN0aW9uIHdzKHQpe2lmKCFtKHQud2lkdGgpfHwhbSh0LmFzcGVjdFJhdGlvKXx8IW0odC5uZWFyKXx8IW0odC5mYXIpKXRocm93IG5ldyBEKCJ3aWR0aCwgYXNwZWN0UmF0aW8sIG5lYXIsIG9yIGZhciBwYXJhbWV0ZXJzIGFyZSBub3Qgc2V0LiIpO2xldCBlPXQuX29mZkNlbnRlckZydXN0dW07aWYodC53aWR0aCE9PXQuX3dpZHRofHx0LmFzcGVjdFJhdGlvIT09dC5fYXNwZWN0UmF0aW98fHQubmVhciE9PXQuX25lYXJ8fHQuZmFyIT09dC5fZmFyKXtpZih0LmFzcGVjdFJhdGlvPDApdGhyb3cgbmV3IEQoImFzcGVjdFJhdGlvIG11c3QgYmUgcG9zaXRpdmUuIik7aWYodC5uZWFyPDB8fHQubmVhcj50LmZhcil0aHJvdyBuZXcgRCgibmVhciBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvIGFuZCBsZXNzIHRoYW4gZmFyLiIpO3QuX2FzcGVjdFJhdGlvPXQuYXNwZWN0UmF0aW8sdC5fd2lkdGg9dC53aWR0aCx0Ll9uZWFyPXQubmVhcix0Ll9mYXI9dC5mYXI7bGV0IG49MS90LmFzcGVjdFJhdGlvO2UucmlnaHQ9dC53aWR0aCouNSxlLmxlZnQ9LWUucmlnaHQsZS50b3A9biplLnJpZ2h0LGUuYm90dG9tPS1lLnRvcCxlLm5lYXI9dC5uZWFyLGUuZmFyPXQuZmFyfX12YXIgTW8sRl89JCgoKT0+e1d0KCk7eWUoKTtmdCgpO0h0KCk7S3QoKTtETygpO25yLnBhY2tlZExlbmd0aD00O25yLnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzAsZVtuKytdPXQud2lkdGgsZVtuKytdPXQuYXNwZWN0UmF0aW8sZVtuKytdPXQubmVhcixlW25dPXQuZmFyLGV9O25yLnVucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MCxtKG4pfHwobj1uZXcgbnIpLG4ud2lkdGg9dFtlKytdLG4uYXNwZWN0UmF0aW89dFtlKytdLG4ubmVhcj10W2UrK10sbi5mYXI9dFtlXSxufTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhuci5wcm90b3R5cGUse3Byb2plY3Rpb25NYXRyaXg6e2dldDpmdW5jdGlvbigpe3JldHVybiB3cyh0aGlzKSx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtLnByb2plY3Rpb25NYXRyaXh9fSxvZmZDZW50ZXJGcnVzdHVtOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gd3ModGhpcyksdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bX19fSk7bnIucHJvdG90eXBlLmNvbXB1dGVDdWxsaW5nVm9sdW1lPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gd3ModGhpcyksdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5jb21wdXRlQ3VsbGluZ1ZvbHVtZSh0LGUsbil9O25yLnByb3RvdHlwZS5nZXRQaXhlbERpbWVuc2lvbnM9ZnVuY3Rpb24odCxlLG4sbyxyKXtyZXR1cm4gd3ModGhpcyksdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5nZXRQaXhlbERpbWVuc2lvbnModCxlLG4sbyxyKX07bnIucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpfHwodD1uZXcgbnIpLHQuYXNwZWN0UmF0aW89dGhpcy5hc3BlY3RSYXRpbyx0LndpZHRoPXRoaXMud2lkdGgsdC5uZWFyPXRoaXMubmVhcix0LmZhcj10aGlzLmZhcix0Ll9hc3BlY3RSYXRpbz12b2lkIDAsdC5fd2lkdGg9dm9pZCAwLHQuX25lYXI9dm9pZCAwLHQuX2Zhcj12b2lkIDAsdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5jbG9uZSh0Ll9vZmZDZW50ZXJGcnVzdHVtKSx0fTtuci5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiFtKHQpfHwhKHQgaW5zdGFuY2VvZiBucik/ITE6KHdzKHRoaXMpLHdzKHQpLHRoaXMud2lkdGg9PT10LndpZHRoJiZ0aGlzLmFzcGVjdFJhdGlvPT09dC5hc3BlY3RSYXRpbyYmdGhpcy5fb2ZmQ2VudGVyRnJ1c3R1bS5lcXVhbHModC5fb2ZmQ2VudGVyRnJ1c3R1bSkpfTtuci5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIW0odCl8fCEodCBpbnN0YW5jZW9mIG5yKT8hMTood3ModGhpcyksd3ModCksUC5lcXVhbHNFcHNpbG9uKHRoaXMud2lkdGgsdC53aWR0aCxlLG4pJiZQLmVxdWFsc0Vwc2lsb24odGhpcy5hc3BlY3RSYXRpbyx0LmFzcGVjdFJhdGlvLGUsbikmJnRoaXMuX29mZkNlbnRlckZydXN0dW0uZXF1YWxzRXBzaWxvbih0Ll9vZmZDZW50ZXJGcnVzdHVtLGUsbikpfTtNbz1ucn0pO2Z1bmN0aW9uIGRpKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNULHRoaXMubGVmdD10LmxlZnQsdGhpcy5fbGVmdD12b2lkIDAsdGhpcy5yaWdodD10LnJpZ2h0LHRoaXMuX3JpZ2h0PXZvaWQgMCx0aGlzLnRvcD10LnRvcCx0aGlzLl90b3A9dm9pZCAwLHRoaXMuYm90dG9tPXQuYm90dG9tLHRoaXMuX2JvdHRvbT12b2lkIDAsdGhpcy5uZWFyPXQubmVhcj8/MSx0aGlzLl9uZWFyPXRoaXMubmVhcix0aGlzLmZhcj10LmZhcj8/NWU4LHRoaXMuX2Zhcj10aGlzLmZhcix0aGlzLl9jdWxsaW5nVm9sdW1lPW5ldyBSZCx0aGlzLl9wZXJzcGVjdGl2ZU1hdHJpeD1uZXcgc3QsdGhpcy5faW5maW5pdGVQZXJzcGVjdGl2ZT1uZXcgc3R9ZnVuY3Rpb24gTF8odCl7aWYoIW0odC5yaWdodCl8fCFtKHQubGVmdCl8fCFtKHQudG9wKXx8IW0odC5ib3R0b20pfHwhbSh0Lm5lYXIpfHwhbSh0LmZhcikpdGhyb3cgbmV3IEQoInJpZ2h0LCBsZWZ0LCB0b3AsIGJvdHRvbSwgbmVhciwgb3IgZmFyIHBhcmFtZXRlcnMgYXJlIG5vdCBzZXQuIik7bGV0e3RvcDplLGJvdHRvbTpuLHJpZ2h0Om8sbGVmdDpyLG5lYXI6aSxmYXI6c309dDtpZihlIT09dC5fdG9wfHxuIT09dC5fYm90dG9tfHxyIT09dC5fbGVmdHx8byE9PXQuX3JpZ2h0fHxpIT09dC5fbmVhcnx8cyE9PXQuX2Zhcil7aWYodC5uZWFyPD0wfHx0Lm5lYXI+dC5mYXIpdGhyb3cgbmV3IEQoIm5lYXIgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybyBhbmQgbGVzcyB0aGFuIGZhci4iKTt0Ll9sZWZ0PXIsdC5fcmlnaHQ9byx0Ll90b3A9ZSx0Ll9ib3R0b209bix0Ll9uZWFyPWksdC5fZmFyPXMsdC5fcGVyc3BlY3RpdmVNYXRyaXg9c3QuY29tcHV0ZVBlcnNwZWN0aXZlT2ZmQ2VudGVyKHIsbyxuLGUsaSxzLHQuX3BlcnNwZWN0aXZlTWF0cml4KSx0Ll9pbmZpbml0ZVBlcnNwZWN0aXZlPXN0LmNvbXB1dGVJbmZpbml0ZVBlcnNwZWN0aXZlT2ZmQ2VudGVyKHIsbyxuLGUsaSx0Ll9pbmZpbml0ZVBlcnNwZWN0aXZlKX19dmFyIHRMLGVMLG5MLG9MLEJPLFVPPSQoKCk9PntEdCgpO19yKCk7SV8oKTt5ZSgpO2Z0KCk7SHQoKTtLdCgpO2tuKCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoZGkucHJvdG90eXBlLHtwcm9qZWN0aW9uTWF0cml4OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gTF8odGhpcyksdGhpcy5fcGVyc3BlY3RpdmVNYXRyaXh9fSxpbmZpbml0ZVByb2plY3Rpb25NYXRyaXg6e2dldDpmdW5jdGlvbigpe3JldHVybiBMXyh0aGlzKSx0aGlzLl9pbmZpbml0ZVBlcnNwZWN0aXZlfX19KTt0TD1uZXcgYSxlTD1uZXcgYSxuTD1uZXcgYSxvTD1uZXcgYTtkaS5wcm90b3R5cGUuY29tcHV0ZUN1bGxpbmdWb2x1bWU9ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJwb3NpdGlvbiBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgiZGlyZWN0aW9uIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBEKCJ1cCBpcyByZXF1aXJlZC4iKTtsZXQgbz10aGlzLl9jdWxsaW5nVm9sdW1lLnBsYW5lcyxyPXRoaXMudG9wLGk9dGhpcy5ib3R0b20scz10aGlzLnJpZ2h0LGY9dGhpcy5sZWZ0LHU9dGhpcy5uZWFyLGM9dGhpcy5mYXIsbD1hLmNyb3NzKGUsbix0TCkscD1lTDthLm11bHRpcGx5QnlTY2FsYXIoZSx1LHApLGEuYWRkKHQscCxwKTtsZXQgZD1uTDthLm11bHRpcGx5QnlTY2FsYXIoZSxjLGQpLGEuYWRkKHQsZCxkKTtsZXQgaD1vTDthLm11bHRpcGx5QnlTY2FsYXIobCxmLGgpLGEuYWRkKHAsaCxoKSxhLnN1YnRyYWN0KGgsdCxoKSxhLm5vcm1hbGl6ZShoLGgpLGEuY3Jvc3MoaCxuLGgpLGEubm9ybWFsaXplKGgsaCk7bGV0IF89b1swXTtyZXR1cm4gbShfKXx8KF89b1swXT1uZXcgbWUpLF8ueD1oLngsXy55PWgueSxfLno9aC56LF8udz0tYS5kb3QoaCx0KSxhLm11bHRpcGx5QnlTY2FsYXIobCxzLGgpLGEuYWRkKHAsaCxoKSxhLnN1YnRyYWN0KGgsdCxoKSxhLmNyb3NzKG4saCxoKSxhLm5vcm1hbGl6ZShoLGgpLF89b1sxXSxtKF8pfHwoXz1vWzFdPW5ldyBtZSksXy54PWgueCxfLnk9aC55LF8uej1oLnosXy53PS1hLmRvdChoLHQpLGEubXVsdGlwbHlCeVNjYWxhcihuLGksaCksYS5hZGQocCxoLGgpLGEuc3VidHJhY3QoaCx0LGgpLGEuY3Jvc3MobCxoLGgpLGEubm9ybWFsaXplKGgsaCksXz1vWzJdLG0oXyl8fChfPW9bMl09bmV3IG1lKSxfLng9aC54LF8ueT1oLnksXy56PWgueixfLnc9LWEuZG90KGgsdCksYS5tdWx0aXBseUJ5U2NhbGFyKG4scixoKSxhLmFkZChwLGgsaCksYS5zdWJ0cmFjdChoLHQsaCksYS5jcm9zcyhoLGwsaCksYS5ub3JtYWxpemUoaCxoKSxfPW9bM10sbShfKXx8KF89b1szXT1uZXcgbWUpLF8ueD1oLngsXy55PWgueSxfLno9aC56LF8udz0tYS5kb3QoaCx0KSxfPW9bNF0sbShfKXx8KF89b1s0XT1uZXcgbWUpLF8ueD1lLngsXy55PWUueSxfLno9ZS56LF8udz0tYS5kb3QoZSxwKSxhLm5lZ2F0ZShlLGgpLF89b1s1XSxtKF8pfHwoXz1vWzVdPW5ldyBtZSksXy54PWgueCxfLnk9aC55LF8uej1oLnosXy53PS1hLmRvdChoLGQpLHRoaXMuX2N1bGxpbmdWb2x1bWV9O2RpLnByb3RvdHlwZS5nZXRQaXhlbERpbWVuc2lvbnM9ZnVuY3Rpb24odCxlLG4sbyxyKXtpZihMXyh0aGlzKSwhbSh0KXx8IW0oZSkpdGhyb3cgbmV3IEQoIkJvdGggZHJhd2luZ0J1ZmZlcldpZHRoIGFuZCBkcmF3aW5nQnVmZmVySGVpZ2h0IGFyZSByZXF1aXJlZC4iKTtpZih0PD0wKXRocm93IG5ldyBEKCJkcmF3aW5nQnVmZmVyV2lkdGggbXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4iKTtpZihlPD0wKXRocm93IG5ldyBEKCJkcmF3aW5nQnVmZmVySGVpZ2h0IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uIik7aWYoIW0obikpdGhyb3cgbmV3IEQoImRpc3RhbmNlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG8pKXRocm93IG5ldyBEKCJwaXhlbFJhdGlvIGlzIHJlcXVpcmVkIik7aWYobzw9MCl0aHJvdyBuZXcgRCgicGl4ZWxSYXRpbyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiIpO2lmKCFtKHIpKXRocm93IG5ldyBEKCJBIHJlc3VsdCBvYmplY3QgaXMgcmVxdWlyZWQuIik7bGV0IGk9MS90aGlzLm5lYXIscz10aGlzLnRvcCppLGY9MipvKm4qcy9lO3M9dGhpcy5yaWdodCppO2xldCB1PTIqbypuKnMvdDtyZXR1cm4gci54PXUsci55PWYscn07ZGkucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKHQpe3JldHVybiBtKHQpfHwodD1uZXcgZGkpLHQucmlnaHQ9dGhpcy5yaWdodCx0LmxlZnQ9dGhpcy5sZWZ0LHQudG9wPXRoaXMudG9wLHQuYm90dG9tPXRoaXMuYm90dG9tLHQubmVhcj10aGlzLm5lYXIsdC5mYXI9dGhpcy5mYXIsdC5fbGVmdD12b2lkIDAsdC5fcmlnaHQ9dm9pZCAwLHQuX3RvcD12b2lkIDAsdC5fYm90dG9tPXZvaWQgMCx0Ll9uZWFyPXZvaWQgMCx0Ll9mYXI9dm9pZCAwLHR9O2RpLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCkmJnQgaW5zdGFuY2VvZiBkaSYmdGhpcy5yaWdodD09PXQucmlnaHQmJnRoaXMubGVmdD09PXQubGVmdCYmdGhpcy50b3A9PT10LnRvcCYmdGhpcy5ib3R0b209PT10LmJvdHRvbSYmdGhpcy5uZWFyPT09dC5uZWFyJiZ0aGlzLmZhcj09PXQuZmFyfTtkaS5wcm90b3R5cGUuZXF1YWxzRXBzaWxvbj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHQ9PT10aGlzfHxtKHQpJiZ0IGluc3RhbmNlb2YgZGkmJlAuZXF1YWxzRXBzaWxvbih0aGlzLnJpZ2h0LHQucmlnaHQsZSxuKSYmUC5lcXVhbHNFcHNpbG9uKHRoaXMubGVmdCx0LmxlZnQsZSxuKSYmUC5lcXVhbHNFcHNpbG9uKHRoaXMudG9wLHQudG9wLGUsbikmJlAuZXF1YWxzRXBzaWxvbih0aGlzLmJvdHRvbSx0LmJvdHRvbSxlLG4pJiZQLmVxdWFsc0Vwc2lsb24odGhpcy5uZWFyLHQubmVhcixlLG4pJiZQLmVxdWFsc0Vwc2lsb24odGhpcy5mYXIsdC5mYXIsZSxuKX07Qk89ZGl9KTtmdW5jdGlvbiBvcih0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVCx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtPW5ldyBCTyx0aGlzLmZvdj10LmZvdix0aGlzLl9mb3Y9dm9pZCAwLHRoaXMuX2Zvdnk9dm9pZCAwLHRoaXMuX3NzZURlbm9taW5hdG9yPXZvaWQgMCx0aGlzLmFzcGVjdFJhdGlvPXQuYXNwZWN0UmF0aW8sdGhpcy5fYXNwZWN0UmF0aW89dm9pZCAwLHRoaXMubmVhcj10Lm5lYXI/PzEsdGhpcy5fbmVhcj10aGlzLm5lYXIsdGhpcy5mYXI9dC5mYXI/PzVlOCx0aGlzLl9mYXI9dGhpcy5mYXIsdGhpcy54T2Zmc2V0PXQueE9mZnNldD8/MCx0aGlzLl94T2Zmc2V0PXRoaXMueE9mZnNldCx0aGlzLnlPZmZzZXQ9dC55T2Zmc2V0Pz8wLHRoaXMuX3lPZmZzZXQ9dGhpcy55T2Zmc2V0fWZ1bmN0aW9uIFlyKHQpe2lmKCFtKHQuZm92KXx8IW0odC5hc3BlY3RSYXRpbyl8fCFtKHQubmVhcil8fCFtKHQuZmFyKSl0aHJvdyBuZXcgRCgiZm92LCBhc3BlY3RSYXRpbywgbmVhciwgb3IgZmFyIHBhcmFtZXRlcnMgYXJlIG5vdCBzZXQuIik7aWYoISh0LmZvdiE9PXQuX2Zvdnx8dC5hc3BlY3RSYXRpbyE9PXQuX2FzcGVjdFJhdGlvfHx0Lm5lYXIhPT10Ll9uZWFyfHx0LmZhciE9PXQuX2Zhcnx8dC54T2Zmc2V0IT09dC5feE9mZnNldHx8dC55T2Zmc2V0IT09dC5feU9mZnNldCkpcmV0dXJuO2lmKHkudHlwZU9mLm51bWJlci5ncmVhdGVyVGhhbk9yRXF1YWxzKCJmb3YiLHQuZm92LDApLHkudHlwZU9mLm51bWJlci5sZXNzVGhhbigiZm92Iix0LmZvdixNYXRoLlBJKSx5LnR5cGVPZi5udW1iZXIuZ3JlYXRlclRoYW5PckVxdWFscygiYXNwZWN0UmF0aW8iLHQuYXNwZWN0UmF0aW8sMCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIm5lYXIiLHQubmVhciwwKSx0Lm5lYXI+dC5mYXIpdGhyb3cgbmV3IEQoIm5lYXIgbXVzdCBiZSBsZXNzIHRoYW4gZmFyLiIpO3QuX2FzcGVjdFJhdGlvPXQuYXNwZWN0UmF0aW8sdC5fZm92PXQuZm92LHQuX2Zvdnk9dC5hc3BlY3RSYXRpbzw9MT90LmZvdjpNYXRoLmF0YW4oTWF0aC50YW4odC5mb3YqLjUpL3QuYXNwZWN0UmF0aW8pKjIsdC5fbmVhcj10Lm5lYXIsdC5fZmFyPXQuZmFyLHQuX3NzZURlbm9taW5hdG9yPTIqTWF0aC50YW4oLjUqdC5fZm92eSksdC5feE9mZnNldD10LnhPZmZzZXQsdC5feU9mZnNldD10LnlPZmZzZXQ7bGV0IG49dC5fb2ZmQ2VudGVyRnJ1c3R1bTtuLnRvcD10Lm5lYXIqTWF0aC50YW4oLjUqdC5fZm92eSksbi5ib3R0b209LW4udG9wLG4ucmlnaHQ9dC5hc3BlY3RSYXRpbypuLnRvcCxuLmxlZnQ9LW4ucmlnaHQsbi5uZWFyPXQubmVhcixuLmZhcj10LmZhcixuLnJpZ2h0Kz10LnhPZmZzZXQsbi5sZWZ0Kz10LnhPZmZzZXQsbi50b3ArPXQueU9mZnNldCxuLmJvdHRvbSs9dC55T2Zmc2V0fXZhciBObyxEXz0kKCgpPT57V3QoKTt5ZSgpO2Z0KCk7SHQoKTtLdCgpO1VPKCk7b3IucGFja2VkTGVuZ3RoPTY7b3IucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHkuZGVmaW5lZCgiYXJyYXkiLGUpLG49bj8/MCxlW24rK109dC5mb3YsZVtuKytdPXQuYXNwZWN0UmF0aW8sZVtuKytdPXQubmVhcixlW24rK109dC5mYXIsZVtuKytdPXQueE9mZnNldCxlW25dPXQueU9mZnNldCxlfTtvci51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LmRlZmluZWQoImFycmF5Iix0KSxlPWU/PzAsbShuKXx8KG49bmV3IG9yKSxuLmZvdj10W2UrK10sbi5hc3BlY3RSYXRpbz10W2UrK10sbi5uZWFyPXRbZSsrXSxuLmZhcj10W2UrK10sbi54T2Zmc2V0PXRbZSsrXSxuLnlPZmZzZXQ9dFtlXSxufTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhvci5wcm90b3R5cGUse3Byb2plY3Rpb25NYXRyaXg6e2dldDpmdW5jdGlvbigpe3JldHVybiBZcih0aGlzKSx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtLnByb2plY3Rpb25NYXRyaXh9fSxpbmZpbml0ZVByb2plY3Rpb25NYXRyaXg6e2dldDpmdW5jdGlvbigpe3JldHVybiBZcih0aGlzKSx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtLmluZmluaXRlUHJvamVjdGlvbk1hdHJpeH19LGZvdnk6e2dldDpmdW5jdGlvbigpe3JldHVybiBZcih0aGlzKSx0aGlzLl9mb3Z5fX0sc3NlRGVub21pbmF0b3I6e2dldDpmdW5jdGlvbigpe3JldHVybiBZcih0aGlzKSx0aGlzLl9zc2VEZW5vbWluYXRvcn19LG9mZkNlbnRlckZydXN0dW06e2dldDpmdW5jdGlvbigpe3JldHVybiBZcih0aGlzKSx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtfX19KTtvci5wcm90b3R5cGUuY29tcHV0ZUN1bGxpbmdWb2x1bWU9ZnVuY3Rpb24odCxlLG4pe3JldHVybiBZcih0aGlzKSx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtLmNvbXB1dGVDdWxsaW5nVm9sdW1lKHQsZSxuKX07b3IucHJvdG90eXBlLmdldFBpeGVsRGltZW5zaW9ucz1mdW5jdGlvbih0LGUsbixvLHIpe3JldHVybiBZcih0aGlzKSx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtLmdldFBpeGVsRGltZW5zaW9ucyh0LGUsbixvLHIpfTtvci5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIG0odCl8fCh0PW5ldyBvciksdC5hc3BlY3RSYXRpbz10aGlzLmFzcGVjdFJhdGlvLHQuZm92PXRoaXMuZm92LHQubmVhcj10aGlzLm5lYXIsdC5mYXI9dGhpcy5mYXIsdC5fYXNwZWN0UmF0aW89dm9pZCAwLHQuX2Zvdj12b2lkIDAsdC5fbmVhcj12b2lkIDAsdC5fZmFyPXZvaWQgMCx0aGlzLl9vZmZDZW50ZXJGcnVzdHVtLmNsb25lKHQuX29mZkNlbnRlckZydXN0dW0pLHR9O29yLnByb3RvdHlwZS5lcXVhbHM9ZnVuY3Rpb24odCl7cmV0dXJuIW0odCl8fCEodCBpbnN0YW5jZW9mIG9yKT8hMTooWXIodGhpcyksWXIodCksdGhpcy5mb3Y9PT10LmZvdiYmdGhpcy5hc3BlY3RSYXRpbz09PXQuYXNwZWN0UmF0aW8mJnRoaXMuX29mZkNlbnRlckZydXN0dW0uZXF1YWxzKHQuX29mZkNlbnRlckZydXN0dW0pKX07b3IucHJvdG90eXBlLmVxdWFsc0Vwc2lsb249ZnVuY3Rpb24odCxlLG4pe3JldHVybiFtKHQpfHwhKHQgaW5zdGFuY2VvZiBvcik/ITE6KFlyKHRoaXMpLFlyKHQpLFAuZXF1YWxzRXBzaWxvbih0aGlzLmZvdix0LmZvdixlLG4pJiZQLmVxdWFsc0Vwc2lsb24odGhpcy5hc3BlY3RSYXRpbyx0LmFzcGVjdFJhdGlvLGUsbikmJnRoaXMuX29mZkNlbnRlckZydXN0dW0uZXF1YWxzRXBzaWxvbih0Ll9vZmZDZW50ZXJGcnVzdHVtLGUsbikpfTtObz1vcn0pO2Z1bmN0aW9uIEFjKHQpe3kudHlwZU9mLm9iamVjdCgib3B0aW9ucyIsdCkseS50eXBlT2Yub2JqZWN0KCJvcHRpb25zLmZydXN0dW0iLHQuZnJ1c3R1bSkseS50eXBlT2Yub2JqZWN0KCJvcHRpb25zLm9yaWdpbiIsdC5vcmlnaW4pLHkudHlwZU9mLm9iamVjdCgib3B0aW9ucy5vcmllbnRhdGlvbiIsdC5vcmllbnRhdGlvbik7bGV0IGU9dC5mcnVzdHVtLG49dC5vcmllbnRhdGlvbixvPXQub3JpZ2luLHI9dC52ZXJ0ZXhGb3JtYXQ/P3B0LkRFRkFVTFQsaT10Ll9kcmF3TmVhclBsYW5lPz8hMCxzLGY7ZSBpbnN0YW5jZW9mIE5vPyhzPVNkLGY9Tm8ucGFja2VkTGVuZ3RoKTplIGluc3RhbmNlb2YgTW8mJihzPXJMLGY9TW8ucGFja2VkTGVuZ3RoKSx0aGlzLl9mcnVzdHVtVHlwZT1zLHRoaXMuX2ZydXN0dW09ZS5jbG9uZSgpLHRoaXMuX29yaWdpbj1hLmNsb25lKG8pLHRoaXMuX29yaWVudGF0aW9uPXRlLmNsb25lKG4pLHRoaXMuX2RyYXdOZWFyUGxhbmU9aSx0aGlzLl92ZXJ0ZXhGb3JtYXQ9cix0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVGcnVzdHVtR2VvbWV0cnkiLHRoaXMucGFja2VkTGVuZ3RoPTIrZithLnBhY2tlZExlbmd0aCt0ZS5wYWNrZWRMZW5ndGgrcHQucGFja2VkTGVuZ3RofWZ1bmN0aW9uIFJhKHQsZSxuLG8scixpLHMsZil7bGV0IHU9dC8zKjI7Zm9yKGxldCBjPTA7Yzw0OysrYyltKGUpJiYoZVt0XT1pLngsZVt0KzFdPWkueSxlW3QrMl09aS56KSxtKG4pJiYoblt0XT1zLngsblt0KzFdPXMueSxuW3QrMl09cy56KSxtKG8pJiYob1t0XT1mLngsb1t0KzFdPWYueSxvW3QrMl09Zi56KSx0Kz0zO3JbdV09MCxyW3UrMV09MCxyW3UrMl09MSxyW3UrM109MCxyW3UrNF09MSxyW3UrNV09MSxyW3UrNl09MCxyW3UrN109MX12YXIgU2QsckwsaUwsc0wsY0wsYUwsZkwsdUwsbEwsQl8sa08sR08sVk8scEwsZEwsbUwsVHMsV2Ysek8sWGYsVV89JCgoKT0+e3ZlKCk7RHQoKTtfcigpO1d0KCk7RGUoKTtmdCgpO1llKCk7JGUoKTthbigpO1VuKCk7a24oKTtGXygpO0RfKCk7dG4oKTtYbygpO3hvKCk7U2Q9MCxyTD0xO0FjLnBhY2s9ZnVuY3Rpb24odCxlLG4pe3kudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHkuZGVmaW5lZCgiYXJyYXkiLGUpLG49bj8/MDtsZXQgbz10Ll9mcnVzdHVtVHlwZSxyPXQuX2ZydXN0dW07cmV0dXJuIGVbbisrXT1vLG89PT1TZD8oTm8ucGFjayhyLGUsbiksbis9Tm8ucGFja2VkTGVuZ3RoKTooTW8ucGFjayhyLGUsbiksbis9TW8ucGFja2VkTGVuZ3RoKSxhLnBhY2sodC5fb3JpZ2luLGUsbiksbis9YS5wYWNrZWRMZW5ndGgsdGUucGFjayh0Ll9vcmllbnRhdGlvbixlLG4pLG4rPXRlLnBhY2tlZExlbmd0aCxwdC5wYWNrKHQuX3ZlcnRleEZvcm1hdCxlLG4pLG4rPXB0LnBhY2tlZExlbmd0aCxlW25dPXQuX2RyYXdOZWFyUGxhbmU/MTowLGV9O2lMPW5ldyBObyxzTD1uZXcgTW8sY0w9bmV3IHRlLGFMPW5ldyBhLGZMPW5ldyBwdDtBYy51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3kuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MDtsZXQgbz10W2UrK10scjtvPT09U2Q/KHI9Tm8udW5wYWNrKHQsZSxpTCksZSs9Tm8ucGFja2VkTGVuZ3RoKToocj1Nby51bnBhY2sodCxlLHNMKSxlKz1Nby5wYWNrZWRMZW5ndGgpO2xldCBpPWEudW5wYWNrKHQsZSxhTCk7ZSs9YS5wYWNrZWRMZW5ndGg7bGV0IHM9dGUudW5wYWNrKHQsZSxjTCk7ZSs9dGUucGFja2VkTGVuZ3RoO2xldCBmPXB0LnVucGFjayh0LGUsZkwpO2UrPXB0LnBhY2tlZExlbmd0aDtsZXQgdT10W2VdPT09MTtpZighbShuKSlyZXR1cm4gbmV3IEFjKHtmcnVzdHVtOnIsb3JpZ2luOmksb3JpZW50YXRpb246cyx2ZXJ0ZXhGb3JtYXQ6ZixfZHJhd05lYXJQbGFuZTp1fSk7bGV0IGM9bz09PW4uX2ZydXN0dW1UeXBlP24uX2ZydXN0dW06dm9pZCAwO3JldHVybiBuLl9mcnVzdHVtPXIuY2xvbmUoYyksbi5fZnJ1c3R1bVR5cGU9byxuLl9vcmlnaW49YS5jbG9uZShpLG4uX29yaWdpbiksbi5fb3JpZW50YXRpb249dGUuY2xvbmUocyxuLl9vcmllbnRhdGlvbiksbi5fdmVydGV4Rm9ybWF0PXB0LmNsb25lKGYsbi5fdmVydGV4Rm9ybWF0KSxuLl9kcmF3TmVhclBsYW5lPXUsbn07dUw9bmV3IFosbEw9bmV3IHN0LEJfPW5ldyBzdCxrTz1uZXcgYSxHTz1uZXcgYSxWTz1uZXcgYSxwTD1uZXcgYSxkTD1uZXcgYSxtTD1uZXcgYSxUcz1uZXcgQXJyYXkoMyksV2Y9bmV3IEFycmF5KDQpO1dmWzBdPW5ldyBtZSgtMSwtMSwxLDEpO1dmWzFdPW5ldyBtZSgxLC0xLDEsMSk7V2ZbMl09bmV3IG1lKDEsMSwxLDEpO1dmWzNdPW5ldyBtZSgtMSwxLDEsMSk7ek89bmV3IEFycmF5KDQpO2ZvcihsZXQgdD0wO3Q8NDsrK3Qpek9bdF09bmV3IG1lO0FjLl9jb21wdXRlTmVhckZhclBsYW5lcz1mdW5jdGlvbih0LGUsbixvLHIsaSxzLGYpe2xldCB1PVouZnJvbVF1YXRlcm5pb24oZSx1TCksYz1pPz9rTyxsPXM/P0dPLHA9Zj8/Vk87Yz1aLmdldENvbHVtbih1LDAsYyksbD1aLmdldENvbHVtbih1LDEsbCkscD1aLmdldENvbHVtbih1LDIscCksYS5ub3JtYWxpemUoYyxjKSxhLm5vcm1hbGl6ZShsLGwpLGEubm9ybWFsaXplKHAscCksYS5uZWdhdGUoYyxjKTtsZXQgZD1zdC5jb21wdXRlVmlldyh0LHAsbCxjLGxMKSxoLF8sZz1vLnByb2plY3Rpb25NYXRyaXg7aWYobj09PVNkKXtsZXQgYj1zdC5tdWx0aXBseShnLGQsQl8pO189c3QuaW52ZXJzZShiLEJfKX1lbHNlIGg9c3QuaW52ZXJzZVRyYW5zZm9ybWF0aW9uKGQsQl8pO20oXyk/KFRzWzBdPW8ubmVhcixUc1sxXT1vLmZhcik6KFRzWzBdPTAsVHNbMV09by5uZWFyLFRzWzJdPW8uZmFyKTtmb3IobGV0IGI9MDtiPDI7KytiKWZvcihsZXQgdz0wO3c8NDsrK3cpe2xldCBPPW1lLmNsb25lKFdmW3ddLHpPW3ddKTtpZihtKF8pKXtPPXN0Lm11bHRpcGx5QnlWZWN0b3IoXyxPLE8pO2xldCBFPTEvTy53O2EubXVsdGlwbHlCeVNjYWxhcihPLEUsTyksYS5zdWJ0cmFjdChPLHQsTyksYS5ub3JtYWxpemUoTyxPKTtsZXQgVD1hLmRvdChwLE8pO2EubXVsdGlwbHlCeVNjYWxhcihPLFRzW2JdL1QsTyksYS5hZGQoTyx0LE8pfWVsc2V7bGV0IEU9by5vZmZDZW50ZXJGcnVzdHVtO20oRSkmJihvPUUpO2xldCBUPVRzW2JdLHg9VHNbYisxXTtPLng9KE8ueCooby5yaWdodC1vLmxlZnQpK28ubGVmdCtvLnJpZ2h0KSouNSxPLnk9KE8ueSooby50b3Atby5ib3R0b20pK28uYm90dG9tK28udG9wKSouNSxPLno9KE8ueiooVC14KS1ULXgpKi41LE8udz0xLHN0Lm11bHRpcGx5QnlWZWN0b3IoaCxPLE8pfXJbMTIqYit3KjNdPU8ueCxyWzEyKmIrdyozKzFdPU8ueSxyWzEyKmIrdyozKzJdPU8uen19O0FjLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX2ZydXN0dW1UeXBlLG49dC5fZnJ1c3R1bSxvPXQuX29yaWdpbixyPXQuX29yaWVudGF0aW9uLGk9dC5fZHJhd05lYXJQbGFuZSxzPXQuX3ZlcnRleEZvcm1hdCxmPWk/Njo1LHU9bmV3IEZsb2F0NjRBcnJheSg3Mik7QWMuX2NvbXB1dGVOZWFyRmFyUGxhbmVzKG8scixlLG4sdSk7bGV0IGM9MjQ7dVtjXT11WzEyXSx1W2MrMV09dVsxM10sdVtjKzJdPXVbMTRdLHVbYyszXT11WzBdLHVbYys0XT11WzFdLHVbYys1XT11WzJdLHVbYys2XT11WzldLHVbYys3XT11WzEwXSx1W2MrOF09dVsxMV0sdVtjKzldPXVbMjFdLHVbYysxMF09dVsyMl0sdVtjKzExXT11WzIzXSxjKz0xMix1W2NdPXVbMTVdLHVbYysxXT11WzE2XSx1W2MrMl09dVsxN10sdVtjKzNdPXVbM10sdVtjKzRdPXVbNF0sdVtjKzVdPXVbNV0sdVtjKzZdPXVbMF0sdVtjKzddPXVbMV0sdVtjKzhdPXVbMl0sdVtjKzldPXVbMTJdLHVbYysxMF09dVsxM10sdVtjKzExXT11WzE0XSxjKz0xMix1W2NdPXVbM10sdVtjKzFdPXVbNF0sdVtjKzJdPXVbNV0sdVtjKzNdPXVbMTVdLHVbYys0XT11WzE2XSx1W2MrNV09dVsxN10sdVtjKzZdPXVbMThdLHVbYys3XT11WzE5XSx1W2MrOF09dVsyMF0sdVtjKzldPXVbNl0sdVtjKzEwXT11WzddLHVbYysxMV09dVs4XSxjKz0xMix1W2NdPXVbNl0sdVtjKzFdPXVbN10sdVtjKzJdPXVbOF0sdVtjKzNdPXVbMThdLHVbYys0XT11WzE5XSx1W2MrNV09dVsyMF0sdVtjKzZdPXVbMjFdLHVbYys3XT11WzIyXSx1W2MrOF09dVsyM10sdVtjKzldPXVbOV0sdVtjKzEwXT11WzEwXSx1W2MrMTFdPXVbMTFdLGl8fCh1PXUuc3ViYXJyYXkoMTIpKTtsZXQgbD1uZXcgaWUoe3Bvc2l0aW9uOm5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6dX0pfSk7aWYobShzLm5vcm1hbCl8fG0ocy50YW5nZW50KXx8bShzLmJpdGFuZ2VudCl8fG0ocy5zdCkpe2xldCBkPW0ocy5ub3JtYWwpP25ldyBGbG9hdDMyQXJyYXkoMTIqZik6dm9pZCAwLGg9bShzLnRhbmdlbnQpP25ldyBGbG9hdDMyQXJyYXkoMTIqZik6dm9pZCAwLF89bShzLmJpdGFuZ2VudCk/bmV3IEZsb2F0MzJBcnJheSgxMipmKTp2b2lkIDAsZz1tKHMuc3QpP25ldyBGbG9hdDMyQXJyYXkoOCpmKTp2b2lkIDAsYj1rTyx3PUdPLE89Vk8sRT1hLm5lZ2F0ZShiLHBMKSxUPWEubmVnYXRlKHcsZEwpLHg9YS5uZWdhdGUoTyxtTCk7Yz0wLGkmJihSYShjLGQsaCxfLGcseCxiLHcpLGMrPTEyKSxSYShjLGQsaCxfLGcsTyxFLHcpLGMrPTEyLFJhKGMsZCxoLF8sZyxFLHgsdyksYys9MTIsUmEoYyxkLGgsXyxnLFQseCxFKSxjKz0xMixSYShjLGQsaCxfLGcsYixPLHcpLGMrPTEyLFJhKGMsZCxoLF8sZyx3LE8sRSksbShkKSYmKGwubm9ybWFsPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpkfSkpLG0oaCkmJihsLnRhbmdlbnQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmh9KSksbShfKSYmKGwuYml0YW5nZW50PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpffSkpLG0oZykmJihsLnN0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpnfSkpfWxldCBwPW5ldyBVaW50MTZBcnJheSg2KmYpO2ZvcihsZXQgZD0wO2Q8ZjsrK2Qpe2xldCBoPWQqNixfPWQqNDtwW2hdPV8scFtoKzFdPV8rMSxwW2grMl09XysyLHBbaCszXT1fLHBbaCs0XT1fKzIscFtoKzVdPV8rM31yZXR1cm4gbmV3IFV0KHthdHRyaWJ1dGVzOmwsaW5kaWNlczpwLHByaW1pdGl2ZVR5cGU6QnQuVFJJQU5HTEVTLGJvdW5kaW5nU3BoZXJlOkF0LmZyb21WZXJ0aWNlcyh1KX0pfTtYZj1BY30pO3ZhciBrXz17fTtsZShrXyx7ZGVmYXVsdDooKT0+X0x9KTtmdW5jdGlvbiBoTCh0LGUpe3JldHVybiBtKGUpJiYodD1YZi51bnBhY2sodCxlKSksWGYuY3JlYXRlR2VvbWV0cnkodCl9dmFyIF9MLEdfPSQoKCk9PntmdCgpO1VfKCk7X0w9aEx9KTtmdW5jdGlvbiBZZih0KXt5LnR5cGVPZi5vYmplY3QoIm9wdGlvbnMiLHQpLHkudHlwZU9mLm9iamVjdCgib3B0aW9ucy5mcnVzdHVtIix0LmZydXN0dW0pLHkudHlwZU9mLm9iamVjdCgib3B0aW9ucy5vcmlnaW4iLHQub3JpZ2luKSx5LnR5cGVPZi5vYmplY3QoIm9wdGlvbnMub3JpZW50YXRpb24iLHQub3JpZW50YXRpb24pO2xldCBlPXQuZnJ1c3R1bSxuPXQub3JpZW50YXRpb24sbz10Lm9yaWdpbixyPXQuX2RyYXdOZWFyUGxhbmU/PyEwLGkscztlIGluc3RhbmNlb2YgTm8/KGk9Vl8scz1Oby5wYWNrZWRMZW5ndGgpOmUgaW5zdGFuY2VvZiBNbyYmKGk9eUwscz1Nby5wYWNrZWRMZW5ndGgpLHRoaXMuX2ZydXN0dW1UeXBlPWksdGhpcy5fZnJ1c3R1bT1lLmNsb25lKCksdGhpcy5fb3JpZ2luPWEuY2xvbmUobyksdGhpcy5fb3JpZW50YXRpb249dGUuY2xvbmUobiksdGhpcy5fZHJhd05lYXJQbGFuZT1yLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZUZydXN0dW1PdXRsaW5lR2VvbWV0cnkiLHRoaXMucGFja2VkTGVuZ3RoPTIrcythLnBhY2tlZExlbmd0aCt0ZS5wYWNrZWRMZW5ndGh9dmFyIFZfLHlMLGdMLEFMLGJMLHdMLHpfLGpPPSQoKCk9Pnt2ZSgpO0R0KCk7V3QoKTtEZSgpO2Z0KCk7VV8oKTtZZSgpOyRlKCk7YW4oKTtGXygpO0RfKCk7dG4oKTtYbygpO1ZfPTAseUw9MTtZZi5wYWNrPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzA7bGV0IG89dC5fZnJ1c3R1bVR5cGUscj10Ll9mcnVzdHVtO3JldHVybiBlW24rK109byxvPT09Vl8/KE5vLnBhY2socixlLG4pLG4rPU5vLnBhY2tlZExlbmd0aCk6KE1vLnBhY2socixlLG4pLG4rPU1vLnBhY2tlZExlbmd0aCksYS5wYWNrKHQuX29yaWdpbixlLG4pLG4rPWEucGFja2VkTGVuZ3RoLHRlLnBhY2sodC5fb3JpZW50YXRpb24sZSxuKSxuKz10ZS5wYWNrZWRMZW5ndGgsZVtuXT10Ll9kcmF3TmVhclBsYW5lPzE6MCxlfTtnTD1uZXcgTm8sQUw9bmV3IE1vLGJMPW5ldyB0ZSx3TD1uZXcgYTtZZi51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3kuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MDtsZXQgbz10W2UrK10scjtvPT09Vl8/KHI9Tm8udW5wYWNrKHQsZSxnTCksZSs9Tm8ucGFja2VkTGVuZ3RoKToocj1Nby51bnBhY2sodCxlLEFMKSxlKz1Nby5wYWNrZWRMZW5ndGgpO2xldCBpPWEudW5wYWNrKHQsZSx3TCk7ZSs9YS5wYWNrZWRMZW5ndGg7bGV0IHM9dGUudW5wYWNrKHQsZSxiTCk7ZSs9dGUucGFja2VkTGVuZ3RoO2xldCBmPXRbZV09PT0xO2lmKCFtKG4pKXJldHVybiBuZXcgWWYoe2ZydXN0dW06cixvcmlnaW46aSxvcmllbnRhdGlvbjpzLF9kcmF3TmVhclBsYW5lOmZ9KTtsZXQgdT1vPT09bi5fZnJ1c3R1bVR5cGU/bi5fZnJ1c3R1bTp2b2lkIDA7cmV0dXJuIG4uX2ZydXN0dW09ci5jbG9uZSh1KSxuLl9mcnVzdHVtVHlwZT1vLG4uX29yaWdpbj1hLmNsb25lKGksbi5fb3JpZ2luKSxuLl9vcmllbnRhdGlvbj10ZS5jbG9uZShzLG4uX29yaWVudGF0aW9uKSxuLl9kcmF3TmVhclBsYW5lPWYsbn07WWYuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fZnJ1c3R1bVR5cGUsbj10Ll9mcnVzdHVtLG89dC5fb3JpZ2luLHI9dC5fb3JpZW50YXRpb24saT10Ll9kcmF3TmVhclBsYW5lLHM9bmV3IEZsb2F0NjRBcnJheSgyNCk7WGYuX2NvbXB1dGVOZWFyRmFyUGxhbmVzKG8scixlLG4scyk7bGV0IGY9bmV3IGllKHtwb3NpdGlvbjpuZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnN9KX0pLHUsYyxsPWk/MjoxLHA9bmV3IFVpbnQxNkFycmF5KDgqKGwrMSkpLGQ9aT8wOjE7Zm9yKDtkPDI7KytkKXU9aT9kKjg6MCxjPWQqNCxwW3VdPWMscFt1KzFdPWMrMSxwW3UrMl09YysxLHBbdSszXT1jKzIscFt1KzRdPWMrMixwW3UrNV09YyszLHBbdSs2XT1jKzMscFt1KzddPWM7Zm9yKGQ9MDtkPDI7KytkKXU9KGwrZCkqOCxjPWQqNCxwW3VdPWMscFt1KzFdPWMrNCxwW3UrMl09YysxLHBbdSszXT1jKzUscFt1KzRdPWMrMixwW3UrNV09Yys2LHBbdSs2XT1jKzMscFt1KzddPWMrNztyZXR1cm4gbmV3IFV0KHthdHRyaWJ1dGVzOmYsaW5kaWNlczpwLHByaW1pdGl2ZVR5cGU6QnQuTElORVMsYm91bmRpbmdTcGhlcmU6QXQuZnJvbVZlcnRpY2VzKHMpfSl9O3pfPVlmfSk7dmFyIGpfPXt9O2xlKGpfLHtkZWZhdWx0OigpPT5PTH0pO2Z1bmN0aW9uIFRMKHQsZSl7cmV0dXJuIG0oZSkmJih0PXpfLnVucGFjayh0LGUpKSx6Xy5jcmVhdGVHZW9tZXRyeSh0KX12YXIgT0wsSF89JCgoKT0+e2Z0KCk7ak8oKTtPTD1UTH0pO2Z1bmN0aW9uIE9zKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNULHRoaXMuX2VsbGlwc29pZD10LmVsbGlwc29pZD8/WS5kZWZhdWx0LHRoaXMuX3JlY3RhbmdsZT10LnJlY3RhbmdsZT8/TnQuTUFYX1ZBTFVFLHRoaXMuX3Byb2plY3Rpb249bmV3IGVvKHRoaXMuX2VsbGlwc29pZCksdGhpcy5fbnVtYmVyT2ZMZXZlbFplcm9UaWxlc1g9dC5udW1iZXJPZkxldmVsWmVyb1RpbGVzWD8/Mix0aGlzLl9udW1iZXJPZkxldmVsWmVyb1RpbGVzWT10Lm51bWJlck9mTGV2ZWxaZXJvVGlsZXNZPz8xfXZhciBITyxxTz0kKCgpPT57a2UoKTtXdCgpO3llKCk7ZnQoKTskdCgpO3hpKCk7S3QoKTtUbigpO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE9zLnByb3RvdHlwZSx7ZWxsaXBzb2lkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZWxsaXBzb2lkfX0scmVjdGFuZ2xlOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmVjdGFuZ2xlfX0scHJvamVjdGlvbjp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3Byb2plY3Rpb259fX0pO09zLnByb3RvdHlwZS5nZXROdW1iZXJPZlhUaWxlc0F0TGV2ZWw9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX251bWJlck9mTGV2ZWxaZXJvVGlsZXNYPDx0fTtPcy5wcm90b3R5cGUuZ2V0TnVtYmVyT2ZZVGlsZXNBdExldmVsPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9udW1iZXJPZkxldmVsWmVyb1RpbGVzWTw8dH07T3MucHJvdG90eXBlLnJlY3RhbmdsZVRvTmF0aXZlUmVjdGFuZ2xlPWZ1bmN0aW9uKHQsZSl7eS5kZWZpbmVkKCJyZWN0YW5nbGUiLHQpO2xldCBuPVAudG9EZWdyZWVzKHQud2VzdCksbz1QLnRvRGVncmVlcyh0LnNvdXRoKSxyPVAudG9EZWdyZWVzKHQuZWFzdCksaT1QLnRvRGVncmVlcyh0Lm5vcnRoKTtyZXR1cm4gbShlKT8oZS53ZXN0PW4sZS5zb3V0aD1vLGUuZWFzdD1yLGUubm9ydGg9aSxlKTpuZXcgTnQobixvLHIsaSl9O09zLnByb3RvdHlwZS50aWxlWFlUb05hdGl2ZVJlY3RhbmdsZT1mdW5jdGlvbih0LGUsbixvKXtsZXQgcj10aGlzLnRpbGVYWVRvUmVjdGFuZ2xlKHQsZSxuLG8pO3JldHVybiByLndlc3Q9UC50b0RlZ3JlZXMoci53ZXN0KSxyLnNvdXRoPVAudG9EZWdyZWVzKHIuc291dGgpLHIuZWFzdD1QLnRvRGVncmVlcyhyLmVhc3QpLHIubm9ydGg9UC50b0RlZ3JlZXMoci5ub3J0aCkscn07T3MucHJvdG90eXBlLnRpbGVYWVRvUmVjdGFuZ2xlPWZ1bmN0aW9uKHQsZSxuLG8pe2xldCByPXRoaXMuX3JlY3RhbmdsZSxpPXRoaXMuZ2V0TnVtYmVyT2ZYVGlsZXNBdExldmVsKG4pLHM9dGhpcy5nZXROdW1iZXJPZllUaWxlc0F0TGV2ZWwobiksZj1yLndpZHRoL2ksdT10KmYrci53ZXN0LGM9KHQrMSkqZityLndlc3QsbD1yLmhlaWdodC9zLHA9ci5ub3J0aC1lKmwsZD1yLm5vcnRoLShlKzEpKmw7cmV0dXJuIG0obyl8fChvPW5ldyBOdCh1LGQsYyxwKSksby53ZXN0PXUsby5zb3V0aD1kLG8uZWFzdD1jLG8ubm9ydGg9cCxvfTtPcy5wcm90b3R5cGUucG9zaXRpb25Ub1RpbGVYWT1mdW5jdGlvbih0LGUsbil7bGV0IG89dGhpcy5fcmVjdGFuZ2xlO2lmKCFOdC5jb250YWlucyhvLHQpKXJldHVybjtsZXQgcj10aGlzLmdldE51bWJlck9mWFRpbGVzQXRMZXZlbChlKSxpPXRoaXMuZ2V0TnVtYmVyT2ZZVGlsZXNBdExldmVsKGUpLHM9by53aWR0aC9yLGY9by5oZWlnaHQvaSx1PXQubG9uZ2l0dWRlO28uZWFzdDxvLndlc3QmJih1Kz1QLlRXT19QSSk7bGV0IGM9KHUtby53ZXN0KS9zfDA7Yz49ciYmKGM9ci0xKTtsZXQgbD0oby5ub3J0aC10LmxhdGl0dWRlKS9mfDA7cmV0dXJuIGw+PWkmJihsPWktMSksbShuKT8obi54PWMsbi55PWwsbik6bmV3IEooYyxsKX07SE89T3N9KTtmdW5jdGlvbiAkTyh0KXtjdC5mcm9tUmFkaWFucyh0LmVhc3QsdC5ub3J0aCwwLCRmWzBdKSxjdC5mcm9tUmFkaWFucyh0Lndlc3QsdC5ub3J0aCwwLCRmWzFdKSxjdC5mcm9tUmFkaWFucyh0LmVhc3QsdC5zb3V0aCwwLCRmWzJdKSxjdC5mcm9tUmFkaWFucyh0Lndlc3QsdC5zb3V0aCwwLCRmWzNdKTtsZXQgZT0wLG49MCxvPTAscj0wLGk9UG4uX3RlcnJhaW5IZWlnaHRzTWF4TGV2ZWwscztmb3Iocz0wO3M8PWk7KytzKXtsZXQgZj0hMTtmb3IobGV0IHU9MDt1PDQ7Kyt1KXtsZXQgYz0kZlt1XTtpZihSTC5wb3NpdGlvblRvVGlsZVhZKGMscyxaZiksdT09PTApbz1aZi54LHI9WmYueTtlbHNlIGlmKG8hPT1aZi54fHxyIT09WmYueSl7Zj0hMDticmVha319aWYoZilicmVhaztlPW8sbj1yfWlmKHMhPT0wKXJldHVybnt4OmUseTpuLGxldmVsOnM+aT9pOnMtMX19dmFyIEtPLFdPLFhPLHFfLEVMLFlPLFJMLCRmLFpmLFBuLHhkLEtfPSQoKCk9Pnt2ZSgpO1FtKCk7a2UoKTtEdCgpO0llKCk7V3QoKTtmdCgpO0h0KCk7JHQoKTtxTygpO1RuKCk7bWYoKTtLTz1uZXcgYSxXTz1uZXcgYSxYTz1uZXcgY3QscV89bmV3IGEsRUw9bmV3IGEsWU89bmV3IEF0LFJMPW5ldyBITywkZj1bbmV3IGN0LG5ldyBjdCxuZXcgY3QsbmV3IGN0XSxaZj1uZXcgSixQbj17fTtQbi5pbml0aWFsaXplPWZ1bmN0aW9uKCl7bGV0IHQ9UG4uX2luaXRQcm9taXNlO3JldHVybiBtKHQpfHwodD1yaS5mZXRjaEpzb24oYnAoIkFzc2V0cy9hcHByb3hpbWF0ZVRlcnJhaW5IZWlnaHRzLmpzb24iKSkudGhlbihmdW5jdGlvbihlKXtQbi5fdGVycmFpbkhlaWdodHM9ZX0pLFBuLl9pbml0UHJvbWlzZT10KSx0fTtQbi5nZXRNaW5pbXVtTWF4aW11bUhlaWdodHM9ZnVuY3Rpb24odCxlKXtpZih5LmRlZmluZWQoInJlY3RhbmdsZSIsdCksIW0oUG4uX3RlcnJhaW5IZWlnaHRzKSl0aHJvdyBuZXcgRCgiWW91IG11c3QgY2FsbCBBcHByb3hpbWF0ZVRlcnJhaW5IZWlnaHRzLmluaXRpYWxpemUgYW5kIHdhaXQgZm9yIHRoZSBwcm9taXNlIHRvIHJlc29sdmUgYmVmb3JlIHVzaW5nIHRoaXMgZnVuY3Rpb24iKTtlPWU/P1kuZGVmYXVsdDtsZXQgbj0kTyh0KSxvPVBuLl9kZWZhdWx0TWluVGVycmFpbkhlaWdodCxyPVBuLl9kZWZhdWx0TWF4VGVycmFpbkhlaWdodDtpZihtKG4pKXtsZXQgaT1gJHtuLmxldmVsfS0ke24ueH0tJHtuLnl9YCxzPVBuLl90ZXJyYWluSGVpZ2h0c1tpXTttKHMpJiYobz1zWzBdLHI9c1sxXSksZS5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihOdC5ub3J0aGVhc3QodCxYTyksS08pLGUuY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oTnQuc291dGh3ZXN0KHQsWE8pLFdPKSxhLm1pZHBvaW50KFdPLEtPLHFfKTtsZXQgZj1lLnNjYWxlVG9HZW9kZXRpY1N1cmZhY2UocV8sRUwpO2lmKG0oZikpe2xldCB1PWEuZGlzdGFuY2UocV8sZik7bz1NYXRoLm1pbihvLC11KX1lbHNlIG89UG4uX2RlZmF1bHRNaW5UZXJyYWluSGVpZ2h0fXJldHVybiBvPU1hdGgubWF4KFBuLl9kZWZhdWx0TWluVGVycmFpbkhlaWdodCxvKSx7bWluaW11bVRlcnJhaW5IZWlnaHQ6byxtYXhpbXVtVGVycmFpbkhlaWdodDpyfX07UG4uZ2V0Qm91bmRpbmdTcGhlcmU9ZnVuY3Rpb24odCxlKXtpZih5LmRlZmluZWQoInJlY3RhbmdsZSIsdCksIW0oUG4uX3RlcnJhaW5IZWlnaHRzKSl0aHJvdyBuZXcgRCgiWW91IG11c3QgY2FsbCBBcHByb3hpbWF0ZVRlcnJhaW5IZWlnaHRzLmluaXRpYWxpemUgYW5kIHdhaXQgZm9yIHRoZSBwcm9taXNlIHRvIHJlc29sdmUgYmVmb3JlIHVzaW5nIHRoaXMgZnVuY3Rpb24iKTtlPWU/P1kuZGVmYXVsdDtsZXQgbj0kTyh0KSxvPVBuLl9kZWZhdWx0TWF4VGVycmFpbkhlaWdodDtpZihtKG4pKXtsZXQgaT1gJHtuLmxldmVsfS0ke24ueH0tJHtuLnl9YCxzPVBuLl90ZXJyYWluSGVpZ2h0c1tpXTttKHMpJiYobz1zWzFdKX1sZXQgcj1BdC5mcm9tUmVjdGFuZ2xlM0QodCxlLDApO3JldHVybiBBdC5mcm9tUmVjdGFuZ2xlM0QodCxlLG8sWU8pLEF0LnVuaW9uKHIsWU8scil9O1BuLl90ZXJyYWluSGVpZ2h0c01heExldmVsPTY7UG4uX2RlZmF1bHRNYXhUZXJyYWluSGVpZ2h0PTllMztQbi5fZGVmYXVsdE1pblRlcnJhaW5IZWlnaHQ9LTFlNTtQbi5fdGVycmFpbkhlaWdodHM9dm9pZCAwO1BuLl9pbml0UHJvbWlzZT12b2lkIDA7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoUG4se2luaXRpYWxpemVkOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gbShQbi5fdGVycmFpbkhlaWdodHMpfX19KTt4ZD1Qbn0pO2Z1bmN0aW9uIFJzKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNUO2xldCBlPXQucG9zaXRpb25zO2lmKCFtKGUpfHxlLmxlbmd0aDwyKXRocm93IG5ldyBEKCJBdCBsZWFzdCB0d28gcG9zaXRpb25zIGFyZSByZXF1aXJlZC4iKTtpZihtKHQuYXJjVHlwZSkmJnQuYXJjVHlwZSE9PWhlLkdFT0RFU0lDJiZ0LmFyY1R5cGUhPT1oZS5SSFVNQil0aHJvdyBuZXcgRCgiVmFsaWQgb3B0aW9ucyBmb3IgYXJjVHlwZSBhcmUgQXJjVHlwZS5HRU9ERVNJQyBhbmQgQXJjVHlwZS5SSFVNQi4iKTt0aGlzLndpZHRoPXQud2lkdGg/PzEsdGhpcy5fcG9zaXRpb25zPWUsdGhpcy5ncmFudWxhcml0eT10LmdyYW51bGFyaXR5Pz85OTk5LHRoaXMubG9vcD10Lmxvb3A/PyExLHRoaXMuYXJjVHlwZT10LmFyY1R5cGU/P2hlLkdFT0RFU0lDLHRoaXMuX2VsbGlwc29pZD1ZLmRlZmF1bHQsdGhpcy5fcHJvamVjdGlvbkluZGV4PTAsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlR3JvdW5kUG9seWxpbmVHZW9tZXRyeSIsdGhpcy5fc2NlbmUzRE9ubHk9ITF9ZnVuY3Rpb24gSl8odCxlLG4sbyxyKXtsZXQgaT1HbyhvLHQsMCx4TCkscz1HbyhvLHQsbixRTyksZj1HbyhvLGUsMCxKTyksdT1xaShzLGksUU8pLGM9cWkoZixpLEpPKTtyZXR1cm4gYS5jcm9zcyhjLHUsciksYS5ub3JtYWxpemUocixyKX1mdW5jdGlvbiBXXyh0LGUsbixvLHIsaSxzLGYsdSxjLGwpe2lmKHI9PT0wKXJldHVybjtsZXQgcDtpPT09aGUuR0VPREVTSUM/cD1uZXcgdWQodCxlLHMpOmk9PT1oZS5SSFVNQiYmKHA9bmV3IEpvKHQsZSxzKSk7bGV0IGQ9cC5zdXJmYWNlRGlzdGFuY2U7aWYoZDxyKXJldHVybjtsZXQgaD1KXyh0LGUsbyxzLE5MKSxfPU1hdGguY2VpbChkL3IpLGc9ZC9fLGI9Zyx3PV8tMSxPPWYubGVuZ3RoO2ZvcihsZXQgRT0wO0U8dztFKyspe2xldCBUPXAuaW50ZXJwb2xhdGVVc2luZ1N1cmZhY2VEaXN0YW5jZShiLENMKSx4PUdvKHMsVCxuLFBMKSxNPUdvKHMsVCxvLE1MKTthLnBhY2soaCxmLE8pLGEucGFjayh4LHUsTyksYS5wYWNrKE0sYyxPKSxsLnB1c2goVC5sYXRpdHVkZSksbC5wdXNoKFQubG9uZ2l0dWRlKSxPKz0zLGIrPWd9fWZ1bmN0aW9uIEdvKHQsZSxuLG8pe3JldHVybiBjdC5jbG9uZShlLFhfKSxYXy5oZWlnaHQ9bixjdC50b0NhcnRlc2lhbihYXyx0LG8pfWZ1bmN0aW9uIHFpKHQsZSxuKXtyZXR1cm4gYS5zdWJ0cmFjdCh0LGUsbiksYS5ub3JtYWxpemUobixuKSxufWZ1bmN0aW9uIHRFKHQsZSxuLG8pe3JldHVybiBvPXFpKHQsZSxvKSxvPWEuY3Jvc3MobyxuLG8pLG89YS5ub3JtYWxpemUobyxvKSxvPWEuY3Jvc3MobixvLG8pLG99ZnVuY3Rpb24gWV8odCxlLG4sbyxyKXtsZXQgaT1xaShuLGUsQUUpLHM9dEUodCxlLGksSUwpLGY9dEUobyxlLGksdkwpO2lmKFAuZXF1YWxzRXBzaWxvbihhLmRvdChzLGYpLERMLFAuRVBTSUxPTjUpKXJldHVybiByPWEuY3Jvc3MoaSxzLHIpLHI9YS5ub3JtYWxpemUocixyKSxyO3I9YS5hZGQoZixzLHIpLHI9YS5ub3JtYWxpemUocixyKTtsZXQgdT1hLmNyb3NzKGkscixGTCk7cmV0dXJuIGEuZG90KGYsdSk8TEwmJihyPWEubmVnYXRlKHIscikpLHJ9ZnVuY3Rpb24gb0UodCxlLG4sbyl7bGV0IHI9cWkobixlLHpMKSxpPWEuZG90KHIsdCk7aWYoaT5fRXx8aTxaTyl7bGV0IHM9cWkobyxuLEFFKSxmPWk8Wk8/UC5QSV9PVkVSX1RXTzotUC5QSV9PVkVSX1RXTyx1PXRlLmZyb21BeGlzQW5nbGUocyxmLEhMKSxjPVouZnJvbVF1YXRlcm5pb24odSxqTCk7cmV0dXJuIFoubXVsdGlwbHlCeVZlY3RvcihjLHQsdCksITB9cmV0dXJuITF9ZnVuY3Rpb24gUWYodCxlLG4sbyxyKXtsZXQgaT1jdC50b0NhcnRlc2lhbihlLHQuX2VsbGlwc29pZCxxTCkscz1hLmFkZChpLG4saUUpLGY9ITEsdT10Ll9lbGxpcHNvaWQsYz11LmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHMsckUpO01hdGguYWJzKGUubG9uZ2l0dWRlLWMubG9uZ2l0dWRlKT5QLlBJX09WRVJfVFdPJiYoZj0hMCxzPWEuc3VidHJhY3QoaSxuLGlFKSxjPXUuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMocyxyRSkpLGMuaGVpZ2h0PTA7bGV0IGw9dC5wcm9qZWN0KGMscik7cmV0dXJuIHI9YS5zdWJ0cmFjdChsLG8sciksci56PTAscj1hLm5vcm1hbGl6ZShyLHIpLGYmJmEubmVnYXRlKHIscikscn1mdW5jdGlvbiBjRSh0LGUsbixvLHIsaSl7bGV0IHM9YS5zdWJ0cmFjdChlLHQsS0wpO2Eubm9ybWFsaXplKHMscyk7bGV0IGY9bi15RSx1PWEubXVsdGlwbHlCeVNjYWxhcihzLGYsc0UpO2EuYWRkKHQsdSxyKTtsZXQgYz1vLWdFO3U9YS5tdWx0aXBseUJ5U2NhbGFyKHMsYyxzRSksYS5hZGQoZSx1LGkpfWZ1bmN0aW9uIE1kKHQsZSl7bGV0IG49b24uZ2V0UG9pbnREaXN0YW5jZShOZCx0KSxvPW9uLmdldFBvaW50RGlzdGFuY2UoTmQsZSkscj1XTDtQLmVxdWFsc0Vwc2lsb24obiwwLFAuRVBTSUxPTjIpPyhyPXFpKGUsdCxyKSxhLm11bHRpcGx5QnlTY2FsYXIocixQLkVQU0lMT04yLHIpLGEuYWRkKHQscix0KSk6UC5lcXVhbHNFcHNpbG9uKG8sMCxQLkVQU0lMT04yKSYmKHI9cWkodCxlLHIpLGEubXVsdGlwbHlCeVNjYWxhcihyLFAuRVBTSUxPTjIsciksYS5hZGQoZSxyLGUpKX1mdW5jdGlvbiBYTCh0LGUpe2xldCBuPU1hdGguYWJzKHQubG9uZ2l0dWRlKSxvPU1hdGguYWJzKGUubG9uZ2l0dWRlKTtpZihQLmVxdWFsc0Vwc2lsb24obixQLlBJLFAuRVBTSUxPTjExKSl7bGV0IHI9UC5zaWduKGUubG9uZ2l0dWRlKTtyZXR1cm4gdC5sb25naXR1ZGU9cioobi1QLkVQU0lMT04xMSksMX1lbHNlIGlmKFAuZXF1YWxzRXBzaWxvbihvLFAuUEksUC5FUFNJTE9OMTEpKXtsZXQgcj1QLnNpZ24odC5sb25naXR1ZGUpO3JldHVybiBlLmxvbmdpdHVkZT1yKihvLVAuRVBTSUxPTjExKSwyfXJldHVybiAwfWZ1bmN0aW9uIGREKHQsZSxuLG8scixpLHMpe2xldCBmLHUsYz1lLl9lbGxpcHNvaWQsbD1uLmxlbmd0aC8zLTEscD1sKjgsZD1wKjQsaD1sKjM2LF89cD42NTUzNT9uZXcgVWludDMyQXJyYXkoaCk6bmV3IFVpbnQxNkFycmF5KGgpLGc9bmV3IEZsb2F0NjRBcnJheShwKjMpLGI9bmV3IEZsb2F0MzJBcnJheShkKSx3PW5ldyBGbG9hdDMyQXJyYXkoZCksTz1uZXcgRmxvYXQzMkFycmF5KGQpLEU9bmV3IEZsb2F0MzJBcnJheShkKSxUPW5ldyBGbG9hdDMyQXJyYXkoZCkseCxNLE4sRjtzJiYoeD1uZXcgRmxvYXQzMkFycmF5KGQpLE09bmV3IEZsb2F0MzJBcnJheShkKSxOPW5ldyBGbG9hdDMyQXJyYXkoZCksRj1uZXcgRmxvYXQzMkFycmF5KHAqMikpO2xldCBJPWkubGVuZ3RoLzIsdj0wLEI9YkU7Qi5oZWlnaHQ9MDtsZXQgQT13RTtBLmhlaWdodD0wO2xldCBTPWFFLEM9JF87aWYocylmb3IodT0wLGY9MTtmPEk7ZisrKUIubGF0aXR1ZGU9aVt1XSxCLmxvbmdpdHVkZT1pW3UrMV0sQS5sYXRpdHVkZT1pW3UrMl0sQS5sb25naXR1ZGU9aVt1KzNdLFM9ZS5wcm9qZWN0KEIsUyksQz1lLnByb2plY3QoQSxDKSx2Kz1hLmRpc3RhbmNlKFMsQyksdSs9MjtsZXQgTD1vLmxlbmd0aC8zO0M9YS51bnBhY2sobywwLEMpO2xldCB6PTA7Zm9yKHU9MyxmPTE7ZjxMO2YrKylTPWEuY2xvbmUoQyxTKSxDPWEudW5wYWNrKG8sdSxDKSx6Kz1hLmRpc3RhbmNlKFMsQyksdSs9MztsZXQgajt1PTM7bGV0IGs9MCxxPTAsVz0wLFI9MCxudD0hMSxhdD1hLnVucGFjayhuLDAsdUUpLGx0PWEudW5wYWNrKG8sMCwkXyksX3Q9YS51bnBhY2sociwwLGxFKTtpZih0KXtsZXQgR3Q9YS51bnBhY2sobixuLmxlbmd0aC02LGZFKTtvRShfdCxHdCxhdCxsdCkmJihfdD1hLm5lZ2F0ZShfdCxfdCkpfWxldCBvdD0wLFB0PTAsZ3Q9MDtmb3IoZj0wO2Y8bDtmKyspe2xldCBHdD1hLmNsb25lKGF0LGZFKSxwZT1hLmNsb25lKGx0LGFFKSxyZT1hLmNsb25lKF90LFlMKTtudCYmKHJlPWEubmVnYXRlKHJlLHJlKSksYXQ9YS51bnBhY2sobix1LHVFKSxsdD1hLnVucGFjayhvLHUsJF8pLF90PWEudW5wYWNrKHIsdSxsRSksbnQ9b0UoX3QsR3QsYXQsbHQpLEIubGF0aXR1ZGU9aVtrXSxCLmxvbmdpdHVkZT1pW2srMV0sQS5sYXRpdHVkZT1pW2srMl0sQS5sb25naXR1ZGU9aVtrKzNdO2xldCBkZSxmZSxadCxRdDtpZihzKXtsZXQgRmU9WEwoQixBKTtkZT1lLnByb2plY3QoQixuRCksZmU9ZS5wcm9qZWN0KEEsb0QpO2xldCBEbj1xaShmZSxkZSxkRSk7RG4ueT1NYXRoLmFicyhEbi55KSxadD1aXyxRdD1RXyxGZT09PTB8fGEuZG90KERuLGEuVU5JVF9ZKT5fRT8oWnQ9UWYoZSxCLHJlLGRlLFpfKSxRdD1RZihlLEEsX3QsZmUsUV8pKTpGZT09PTE/KFF0PVFmKGUsQSxfdCxmZSxRXyksWnQueD0wLFp0Lnk9UC5zaWduKEIubG9uZ2l0dWRlLU1hdGguYWJzKEEubG9uZ2l0dWRlKSksWnQuej0wKTooWnQ9UWYoZSxCLHJlLGRlLFpfKSxRdC54PTAsUXQueT1QLnNpZ24oQi5sb25naXR1ZGUtQS5sb25naXR1ZGUpLFF0Lno9MCl9bGV0IE5lPWEuZGlzdGFuY2UocGUsbHQpLGdlPVFzLmZyb21DYXJ0ZXNpYW4oR3QsZkQpLEVlPWEuc3VidHJhY3QoYXQsR3QsckQpLHVuPWEubm9ybWFsaXplKEVlLHBFKSxWZT1hLnN1YnRyYWN0KHBlLEd0LGlEKTtWZT1hLm5vcm1hbGl6ZShWZSxWZSk7bGV0IGJlPWEuY3Jvc3ModW4sVmUscEUpO2JlPWEubm9ybWFsaXplKGJlLGJlKTtsZXQgbG49YS5jcm9zcyhWZSxyZSxjRCk7bG49YS5ub3JtYWxpemUobG4sbG4pO2xldCBwbj1hLnN1YnRyYWN0KGx0LGF0LHNEKTtwbj1hLm5vcm1hbGl6ZShwbixwbik7bGV0IEVuPWEuY3Jvc3MoX3QscG4sYUQpO0VuPWEubm9ybWFsaXplKEVuLEVuKTtsZXQgb2U9TmUveixZdD1vdC96LHplPTAsZG4sc24sbW4sbG89MCxxbj0wO2lmKHMpe3plPWEuZGlzdGFuY2UoZGUsZmUpLGRuPVFzLmZyb21DYXJ0ZXNpYW4oZGUsdUQpLHNuPWEuc3VidHJhY3QoZmUsZGUsZEUpLG1uPWEubm9ybWFsaXplKHNuLGxEKTtsZXQgRmU9bW4ueDttbi54PW1uLnksbW4ueT0tRmUsbG89emUvdixxbj1QdC92fWZvcihqPTA7ajw4O2orKyl7bGV0IEZlPVIraio0LERuPXEraioyLFhuPUZlKzMsSG89ajw0PzE6LTEscm49aj09PTJ8fGo9PT0zfHxqPT09Nnx8aj09PTc/MTotMTthLnBhY2soZ2UuaGlnaCxiLEZlKSxiW1huXT1FZS54LGEucGFjayhnZS5sb3csdyxGZSksd1tYbl09RWUueSxhLnBhY2sobG4sTyxGZSksT1tYbl09RWUueixhLnBhY2soRW4sRSxGZSksRVtYbl09b2UqSG8sYS5wYWNrKGJlLFQsRmUpO2xldCBSbj1ZdCpybjtSbj09PTAmJnJuPDAmJihSbj05KSxUW1huXT1SbixzJiYoeFtGZV09ZG4uaGlnaC54LHhbRmUrMV09ZG4uaGlnaC55LHhbRmUrMl09ZG4ubG93LngseFtGZSszXT1kbi5sb3cueSxOW0ZlXT0tWnQueSxOW0ZlKzFdPVp0LngsTltGZSsyXT1RdC55LE5bRmUrM109LVF0LngsTVtGZV09c24ueCxNW0ZlKzFdPXNuLnksTVtGZSsyXT1tbi54LE1bRmUrM109bW4ueSxGW0RuXT1sbypIbyxSbj1xbipybixSbj09PTAmJnJuPDAmJihSbj05KSxGW0RuKzFdPVJuKX1sZXQgUWU9dEQsY249ZUQsV2U9UUwsaG49SkwscG89TnQuZnJvbUNhcnRvZ3JhcGhpY0FycmF5KCRMLFpMKSxLbj14ZC5nZXRNaW5pbXVtTWF4aW11bUhlaWdodHMocG8sYyksV249S24ubWluaW11bVRlcnJhaW5IZWlnaHQsbW89S24ubWF4aW11bVRlcnJhaW5IZWlnaHQ7Z3QrPU1hdGguYWJzKFduKSxndCs9TWF0aC5hYnMobW8pLGNFKEd0LHBlLFduLG1vLFFlLFdlKSxjRShhdCxsdCxXbixtbyxjbixobik7bGV0IGplPWEubXVsdGlwbHlCeVNjYWxhcihiZSxQLkVQU0lMT041LG1FKTthLmFkZChRZSxqZSxRZSksYS5hZGQoY24samUsY24pLGEuYWRkKFdlLGplLFdlKSxhLmFkZChobixqZSxobiksTWQoUWUsY24pLE1kKFdlLGhuKSxhLnBhY2soUWUsZyxXKSxhLnBhY2soY24sZyxXKzMpLGEucGFjayhobixnLFcrNiksYS5wYWNrKFdlLGcsVys5KSxqZT1hLm11bHRpcGx5QnlTY2FsYXIoYmUsLTIqUC5FUFNJTE9ONSxtRSksYS5hZGQoUWUsamUsUWUpLGEuYWRkKGNuLGplLGNuKSxhLmFkZChXZSxqZSxXZSksYS5hZGQoaG4samUsaG4pLE1kKFFlLGNuKSxNZChXZSxobiksYS5wYWNrKFFlLGcsVysxMiksYS5wYWNrKGNuLGcsVysxNSksYS5wYWNrKGhuLGcsVysxOCksYS5wYWNrKFdlLGcsVysyMSksays9Mix1Kz0zLHErPTE2LFcrPTI0LFIrPTMyLG90Kz1OZSxQdCs9emV9dT0wO2xldCBSdD0wO2ZvcihmPTA7ZjxsO2YrKyl7Zm9yKGo9MDtqPGhFO2orKylfW3Ural09VEVbal0rUnQ7UnQrPTgsdSs9aEV9bGV0IGR0PXBEO0F0LmZyb21WZXJ0aWNlcyhuLGEuWkVSTywzLGR0WzBdKSxBdC5mcm9tVmVydGljZXMobyxhLlpFUk8sMyxkdFsxXSk7bGV0IHJ0PUF0LmZyb21Cb3VuZGluZ1NwaGVyZXMoZHQpO3J0LnJhZGl1cys9Z3QvKGwqMik7bGV0IHh0PXtwb3NpdGlvbjpuZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsbm9ybWFsaXplOiExLHZhbHVlczpnfSksc3RhcnRIaUFuZEZvcndhcmRPZmZzZXRYOkVzKGIpLHN0YXJ0TG9BbmRGb3J3YXJkT2Zmc2V0WTpFcyh3KSxzdGFydE5vcm1hbEFuZEZvcndhcmRPZmZzZXRaOkVzKE8pLGVuZE5vcm1hbEFuZFRleHR1cmVDb29yZGluYXRlTm9ybWFsaXphdGlvblg6RXMoRSkscmlnaHROb3JtYWxBbmRUZXh0dXJlQ29vcmRpbmF0ZU5vcm1hbGl6YXRpb25ZOkVzKFQpfTtyZXR1cm4gcyYmKHh0LnN0YXJ0SGlMbzJEPUVzKHgpLHh0Lm9mZnNldEFuZFJpZ2h0MkQ9RXMoTSkseHQuc3RhcnRFbmROb3JtYWxzMkQ9RXMoTikseHQudGV4Y29vcmROb3JtYWxpemF0aW9uMkQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsbm9ybWFsaXplOiExLHZhbHVlczpGfSkpLG5ldyBVdCh7YXR0cmlidXRlczp4dCxpbmRpY2VzOl8sYm91bmRpbmdTcGhlcmU6cnR9KX1mdW5jdGlvbiBFcyh0KXtyZXR1cm4gbmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjQsbm9ybWFsaXplOiExLHZhbHVlczp0fSl9dmFyIHR5LFNMLF9FLFpPLHlFLGdFLHhMLFFPLEpPLENMLFBMLE1MLE5MLFhfLElMLHZMLEZMLEFFLExMLERMLE5kLEJMLFVMLGtMLEdMLFZMLENkLFBkLGVFLG5FLHpMLGpMLEhMLHJFLHFMLGlFLEtMLHNFLFdMLGJFLHdFLGFFLCRfLGZFLHVFLFlMLGxFLCRMLFpMLFFMLEpMLHRELGVELG5ELG9ELFpfLFFfLHJELGlELHNELHBFLGNELGFELGZELHVELGRFLGxELG1FLHBELFRFLGhFLGV5LE9FPSQoKCk9PntLXygpO3VjKCk7SHIoKTt2ZSgpO0R0KCk7SWUoKTtXdCgpO0RlKCk7eWUoKTtmdCgpO0h0KCk7JHQoKTtXMCgpO05mKCk7VmgoKTt4aSgpO1llKCk7JGUoKTtlYygpO0t0KCk7VW4oKTt1cygpO1hvKCk7VG4oKTtzYygpO3R5PVtlbyxyb10sU0w9dHkubGVuZ3RoLF9FPU1hdGguY29zKFAudG9SYWRpYW5zKDMwKSksWk89TWF0aC5jb3MoUC50b1JhZGlhbnMoMTUwKSkseUU9MCxnRT0xZTM7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoUnMucHJvdG90eXBlLHtwYWNrZWRMZW5ndGg6e2dldDpmdW5jdGlvbigpe3JldHVybiAxK3RoaXMuX3Bvc2l0aW9ucy5sZW5ndGgqMysxKzErMStZLnBhY2tlZExlbmd0aCsxKzF9fX0pO1JzLnNldFByb2plY3Rpb25BbmRFbGxpcHNvaWQ9ZnVuY3Rpb24odCxlKXtsZXQgbj0wO2ZvcihsZXQgbz0wO288U0w7bysrKWlmKGUgaW5zdGFuY2VvZiB0eVtvXSl7bj1vO2JyZWFrfXQuX3Byb2plY3Rpb25JbmRleD1uLHQuX2VsbGlwc29pZD1lLmVsbGlwc29pZH07eEw9bmV3IGEsUU89bmV3IGEsSk89bmV3IGE7Q0w9bmV3IGN0LFBMPW5ldyBhLE1MPW5ldyBhLE5MPW5ldyBhO1hfPW5ldyBjdDtScy5wYWNrPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKTtsZXQgbz1uPz8wLHI9dC5fcG9zaXRpb25zLGk9ci5sZW5ndGg7ZVtvKytdPWk7Zm9yKGxldCBzPTA7czxpOysrcyl7bGV0IGY9cltzXTthLnBhY2soZixlLG8pLG8rPTN9cmV0dXJuIGVbbysrXT10LmdyYW51bGFyaXR5LGVbbysrXT10Lmxvb3A/MTowLGVbbysrXT10LmFyY1R5cGUsWS5wYWNrKHQuX2VsbGlwc29pZCxlLG8pLG8rPVkucGFja2VkTGVuZ3RoLGVbbysrXT10Ll9wcm9qZWN0aW9uSW5kZXgsZVtvKytdPXQuX3NjZW5lM0RPbmx5PzE6MCxlfTtScy51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3kuZGVmaW5lZCgiYXJyYXkiLHQpO2xldCBvPWU/PzAscj10W28rK10saT1uZXcgQXJyYXkocik7Zm9yKGxldCBkPTA7ZDxyO2QrKylpW2RdPWEudW5wYWNrKHQsbyksbys9MztsZXQgcz10W28rK10sZj10W28rK109PT0xLHU9dFtvKytdLGM9WS51bnBhY2sodCxvKTtvKz1ZLnBhY2tlZExlbmd0aDtsZXQgbD10W28rK10scD10W28rK109PT0xO3JldHVybiBtKG4pfHwobj1uZXcgUnMoe3Bvc2l0aW9uczppfSkpLG4uX3Bvc2l0aW9ucz1pLG4uZ3JhbnVsYXJpdHk9cyxuLmxvb3A9ZixuLmFyY1R5cGU9dSxuLl9lbGxpcHNvaWQ9YyxuLl9wcm9qZWN0aW9uSW5kZXg9bCxuLl9zY2VuZTNET25seT1wLG59O0lMPW5ldyBhLHZMPW5ldyBhLEZMPW5ldyBhLEFFPW5ldyBhLExMPTAsREw9LTE7TmQ9b24uZnJvbVBvaW50Tm9ybWFsKGEuWkVSTyxhLlVOSVRfWSksQkw9bmV3IGEsVUw9bmV3IGEsa0w9bmV3IGEsR0w9bmV3IGEsVkw9bmV3IGEsQ2Q9bmV3IGEsUGQ9bmV3IGN0LGVFPW5ldyBjdCxuRT1uZXcgY3Q7UnMuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9IXQuX3NjZW5lM0RPbmx5LG49dC5sb29wLG89dC5fZWxsaXBzb2lkLHI9dC5ncmFudWxhcml0eSxpPXQuYXJjVHlwZSxzPW5ldyB0eVt0Ll9wcm9qZWN0aW9uSW5kZXhdKG8pLGY9eUUsdT1nRSxjLGwscD10Ll9wb3NpdGlvbnMsZD1wLmxlbmd0aDtkPT09MiYmKG49ITEpO2xldCBoLF8sZyxiLHc9bmV3IEpvKHZvaWQgMCx2b2lkIDAsbyksTyxFLFQseD1bcFswXV07Zm9yKGw9MDtsPGQtMTtsKyspaD1wW2xdLF89cFtsKzFdLE89eW8ubGluZVNlZ21lbnRQbGFuZShoLF8sTmQsQ2QpLG0oTykmJiFhLmVxdWFsc0Vwc2lsb24oTyxoLFAuRVBTSUxPTjcpJiYhYS5lcXVhbHNFcHNpbG9uKE8sXyxQLkVQU0lMT043KSYmKHQuYXJjVHlwZT09PWhlLkdFT0RFU0lDP3gucHVzaChhLmNsb25lKE8pKTp0LmFyY1R5cGU9PT1oZS5SSFVNQiYmKFQ9by5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhPLFBkKS5sb25naXR1ZGUsZz1vLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGgsUGQpLGI9by5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhfLGVFKSx3LnNldEVuZFBvaW50cyhnLGIpLEU9dy5maW5kSW50ZXJzZWN0aW9uV2l0aExvbmdpdHVkZShULG5FKSxPPW8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oRSxDZCksbShPKSYmIWEuZXF1YWxzRXBzaWxvbihPLGgsUC5FUFNJTE9ONykmJiFhLmVxdWFsc0Vwc2lsb24oTyxfLFAuRVBTSUxPTjcpJiZ4LnB1c2goYS5jbG9uZShPKSkpKSx4LnB1c2goXyk7biYmKGg9cFtkLTFdLF89cFswXSxPPXlvLmxpbmVTZWdtZW50UGxhbmUoaCxfLE5kLENkKSxtKE8pJiYhYS5lcXVhbHNFcHNpbG9uKE8saCxQLkVQU0lMT043KSYmIWEuZXF1YWxzRXBzaWxvbihPLF8sUC5FUFNJTE9ONykmJih0LmFyY1R5cGU9PT1oZS5HRU9ERVNJQz94LnB1c2goYS5jbG9uZShPKSk6dC5hcmNUeXBlPT09aGUuUkhVTUImJihUPW8uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoTyxQZCkubG9uZ2l0dWRlLGc9by5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhoLFBkKSxiPW8uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoXyxlRSksdy5zZXRFbmRQb2ludHMoZyxiKSxFPXcuZmluZEludGVyc2VjdGlvbldpdGhMb25naXR1ZGUoVCxuRSksTz1vLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKEUsQ2QpLG0oTykmJiFhLmVxdWFsc0Vwc2lsb24oTyxoLFAuRVBTSUxPTjcpJiYhYS5lcXVhbHNFcHNpbG9uKE8sXyxQLkVQU0lMT043KSYmeC5wdXNoKGEuY2xvbmUoTykpKSkpO2xldCBNPXgubGVuZ3RoLE49bmV3IEFycmF5KE0pO2ZvcihsPTA7bDxNO2wrKyl7bGV0IG50PWN0LmZyb21DYXJ0ZXNpYW4oeFtsXSxvKTtudC5oZWlnaHQ9MCxOW2xdPW50fWlmKE49Q24oTixjdC5lcXVhbHNFcHNpbG9uKSxNPU4ubGVuZ3RoLE08MilyZXR1cm47bGV0IEY9W10sST1bXSx2PVtdLEI9W10sQT1CTCxTPVVMLEM9a0wsTD1HTCx6PVZMLGo9TlswXSxrPU5bMV0scT1OW00tMV07Zm9yKEE9R28obyxxLGYsQSksTD1HbyhvLGssZixMKSxTPUdvKG8saixmLFMpLEM9R28obyxqLHUsQyksbj96PVlfKEEsUyxDLEwseik6ej1KXyhqLGssdSxvLHopLGEucGFjayh6LEksMCksYS5wYWNrKFMsdiwwKSxhLnBhY2soQyxCLDApLEYucHVzaChqLmxhdGl0dWRlKSxGLnB1c2goai5sb25naXR1ZGUpLFdfKGosayxmLHUscixpLG8sSSx2LEIsRiksbD0xO2w8TS0xOysrbCl7QT1hLmNsb25lKFMsQSksUz1hLmNsb25lKEwsUyk7bGV0IG50PU5bbF07R28obyxudCx1LEMpLEdvKG8sTltsKzFdLGYsTCksWV8oQSxTLEMsTCx6KSxjPUkubGVuZ3RoLGEucGFjayh6LEksYyksYS5wYWNrKFMsdixjKSxhLnBhY2soQyxCLGMpLEYucHVzaChudC5sYXRpdHVkZSksRi5wdXNoKG50LmxvbmdpdHVkZSksV18oTltsXSxOW2wrMV0sZix1LHIsaSxvLEksdixCLEYpfWxldCBXPU5bTS0xXSxSPU5bTS0yXTtpZihTPUdvKG8sVyxmLFMpLEM9R28obyxXLHUsQyksbil7bGV0IG50PU5bMF07QT1HbyhvLFIsZixBKSxMPUdvKG8sbnQsZixMKSx6PVlfKEEsUyxDLEwseil9ZWxzZSB6PUpfKFIsVyx1LG8seik7aWYoYz1JLmxlbmd0aCxhLnBhY2soeixJLGMpLGEucGFjayhTLHYsYyksYS5wYWNrKEMsQixjKSxGLnB1c2goVy5sYXRpdHVkZSksRi5wdXNoKFcubG9uZ2l0dWRlKSxuKXtmb3IoV18oVyxqLGYsdSxyLGksbyxJLHYsQixGKSxjPUkubGVuZ3RoLGw9MDtsPDM7KytsKUlbYytsXT1JW2xdLHZbYytsXT12W2xdLEJbYytsXT1CW2xdO0YucHVzaChqLmxhdGl0dWRlKSxGLnB1c2goai5sb25naXR1ZGUpfXJldHVybiBkRChuLHMsdixCLEksRixlKX07ekw9bmV3IGEsakw9bmV3IFosSEw9bmV3IHRlO3JFPW5ldyBjdCxxTD1uZXcgYSxpRT1uZXcgYTtLTD1uZXcgYSxzRT1uZXcgYTtXTD1uZXcgYTtiRT1uZXcgY3Qsd0U9bmV3IGN0LGFFPW5ldyBhLCRfPW5ldyBhLGZFPW5ldyBhLHVFPW5ldyBhLFlMPW5ldyBhLGxFPW5ldyBhLCRMPVtiRSx3RV0sWkw9bmV3IE50LFFMPW5ldyBhLEpMPW5ldyBhLHREPW5ldyBhLGVEPW5ldyBhLG5EPW5ldyBhLG9EPW5ldyBhLFpfPW5ldyBhLFFfPW5ldyBhLHJEPW5ldyBhLGlEPW5ldyBhLHNEPW5ldyBhLHBFPW5ldyBhLGNEPW5ldyBhLGFEPW5ldyBhLGZEPW5ldyBRcyx1RD1uZXcgUXMsZEU9bmV3IGEsbEQ9bmV3IGEsbUU9bmV3IGEscEQ9W25ldyBBdCxuZXcgQXRdLFRFPVswLDIsMSwwLDMsMiwwLDcsMywwLDQsNywwLDUsNCwwLDEsNSw1LDcsNCw1LDYsNyw1LDIsNiw1LDEsMiwzLDYsMiwzLDcsNl0saEU9VEUubGVuZ3RoO1JzLl9wcm9qZWN0Tm9ybWFsPVFmO2V5PVJzfSk7dmFyIG55PXt9O2xlKG55LHtkZWZhdWx0OigpPT5oRH0pO2Z1bmN0aW9uIG1EKHQsZSl7cmV0dXJuIHhkLmluaXRpYWxpemUoKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIG0oZSkmJih0PWV5LnVucGFjayh0LGUpKSxleS5jcmVhdGVHZW9tZXRyeSh0KX0pfXZhciBoRCxveT0kKCgpPT57S18oKTtmdCgpO09FKCk7aEQ9bUR9KTtmdW5jdGlvbiBTYSh0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10LnZlcnRleEZvcm1hdD8/cHQuREVGQVVMVDt0aGlzLl92ZXJ0ZXhGb3JtYXQ9ZSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVQbGFuZUdlb21ldHJ5In12YXIgRUUsX0QsSWQsdmQscnksUkU9JCgoKT0+e3ZlKCk7RHQoKTtXdCgpO0RlKCk7eWUoKTtmdCgpO1llKCk7JGUoKTthbigpO3RuKCk7eG8oKTtTYS5wYWNrZWRMZW5ndGg9cHQucGFja2VkTGVuZ3RoO1NhLnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzAscHQucGFjayh0Ll92ZXJ0ZXhGb3JtYXQsZSxuKSxlfTtFRT1uZXcgcHQsX0Q9e3ZlcnRleEZvcm1hdDpFRX07U2EudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXt5LmRlZmluZWQoImFycmF5Iix0KSxlPWU/PzA7bGV0IG89cHQudW5wYWNrKHQsZSxFRSk7cmV0dXJuIG0obik/KG4uX3ZlcnRleEZvcm1hdD1wdC5jbG9uZShvLG4uX3ZlcnRleEZvcm1hdCksbik6bmV3IFNhKF9EKX07SWQ9bmV3IGEoLS41LC0uNSwwKSx2ZD1uZXcgYSguNSwuNSwwKTtTYS5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll92ZXJ0ZXhGb3JtYXQsbj1uZXcgaWUsbyxyO2lmKGUucG9zaXRpb24pe2lmKHI9bmV3IEZsb2F0NjRBcnJheSgxMiksclswXT1JZC54LHJbMV09SWQueSxyWzJdPTAsclszXT12ZC54LHJbNF09SWQueSxyWzVdPTAscls2XT12ZC54LHJbN109dmQueSxyWzhdPTAscls5XT1JZC54LHJbMTBdPXZkLnksclsxMV09MCxuLnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6cn0pLGUubm9ybWFsKXtsZXQgaT1uZXcgRmxvYXQzMkFycmF5KDEyKTtpWzBdPTAsaVsxXT0wLGlbMl09MSxpWzNdPTAsaVs0XT0wLGlbNV09MSxpWzZdPTAsaVs3XT0wLGlbOF09MSxpWzldPTAsaVsxMF09MCxpWzExXT0xLG4ubm9ybWFsPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczppfSl9aWYoZS5zdCl7bGV0IGk9bmV3IEZsb2F0MzJBcnJheSg4KTtpWzBdPTAsaVsxXT0wLGlbMl09MSxpWzNdPTAsaVs0XT0xLGlbNV09MSxpWzZdPTAsaVs3XT0xLG4uc3Q9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOml9KX1pZihlLnRhbmdlbnQpe2xldCBpPW5ldyBGbG9hdDMyQXJyYXkoMTIpO2lbMF09MSxpWzFdPTAsaVsyXT0wLGlbM109MSxpWzRdPTAsaVs1XT0wLGlbNl09MSxpWzddPTAsaVs4XT0wLGlbOV09MSxpWzEwXT0wLGlbMTFdPTAsbi50YW5nZW50PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczppfSl9aWYoZS5iaXRhbmdlbnQpe2xldCBpPW5ldyBGbG9hdDMyQXJyYXkoMTIpO2lbMF09MCxpWzFdPTEsaVsyXT0wLGlbM109MCxpWzRdPTEsaVs1XT0wLGlbNl09MCxpWzddPTEsaVs4XT0wLGlbOV09MCxpWzEwXT0xLGlbMTFdPTAsbi5iaXRhbmdlbnQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOml9KX1vPW5ldyBVaW50MTZBcnJheSg2KSxvWzBdPTAsb1sxXT0xLG9bMl09MixvWzNdPTAsb1s0XT0yLG9bNV09M31yZXR1cm4gbmV3IFV0KHthdHRyaWJ1dGVzOm4saW5kaWNlczpvLHByaW1pdGl2ZVR5cGU6QnQuVFJJQU5HTEVTLGJvdW5kaW5nU3BoZXJlOm5ldyBBdChhLlpFUk8sTWF0aC5zcXJ0KDIpKX0pfTtyeT1TYX0pO3ZhciBpeT17fTtsZShpeSx7ZGVmYXVsdDooKT0+Z0R9KTtmdW5jdGlvbiB5RCh0LGUpe3JldHVybiBtKGUpJiYodD1yeS51bnBhY2sodCxlKSkscnkuY3JlYXRlR2VvbWV0cnkodCl9dmFyIGdELHN5PSQoKCk9PntmdCgpO1JFKCk7Z0Q9eUR9KTtmdW5jdGlvbiB4YSgpe3RoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZVBsYW5lT3V0bGluZUdlb21ldHJ5In12YXIgU3MsRmQsY3ksU0U9JCgoKT0+e3ZlKCk7RHQoKTtXdCgpO0RlKCk7ZnQoKTtZZSgpOyRlKCk7YW4oKTt0bigpO3hhLnBhY2tlZExlbmd0aD0wO3hhLnBhY2s9ZnVuY3Rpb24odCxlKXtyZXR1cm4geS5kZWZpbmVkKCJ2YWx1ZSIsdCkseS5kZWZpbmVkKCJhcnJheSIsZSksZX07eGEudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS5kZWZpbmVkKCJhcnJheSIsdCksbShuKT9uOm5ldyB4YX07U3M9bmV3IGEoLS41LC0uNSwwKSxGZD1uZXcgYSguNSwuNSwwKTt4YS5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbigpe2xldCB0PW5ldyBpZSxlPW5ldyBVaW50MTZBcnJheSg4KSxuPW5ldyBGbG9hdDY0QXJyYXkoMTIpO3JldHVybiBuWzBdPVNzLngsblsxXT1Tcy55LG5bMl09U3MueixuWzNdPUZkLngsbls0XT1Tcy55LG5bNV09U3MueixuWzZdPUZkLngsbls3XT1GZC55LG5bOF09U3MueixuWzldPVNzLngsblsxMF09RmQueSxuWzExXT1Tcy56LHQucG9zaXRpb249bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpufSksZVswXT0wLGVbMV09MSxlWzJdPTEsZVszXT0yLGVbNF09MixlWzVdPTMsZVs2XT0zLGVbN109MCxuZXcgVXQoe2F0dHJpYnV0ZXM6dCxpbmRpY2VzOmUscHJpbWl0aXZlVHlwZTpCdC5MSU5FUyxib3VuZGluZ1NwaGVyZTpuZXcgQXQoYS5aRVJPLE1hdGguc3FydCgyKSl9KX07Y3k9eGF9KTt2YXIgYXk9e307bGUoYXkse2RlZmF1bHQ6KCk9PmJEfSk7ZnVuY3Rpb24gQUQodCxlKXtyZXR1cm4gbShlKSYmKHQ9Y3kudW5wYWNrKHQsZSkpLGN5LmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBiRCxmeT0kKCgpPT57ZnQoKTtTRSgpO2JEPUFEfSk7ZnVuY3Rpb24gRm4odCxlKXt0aGlzLnBvc2l0aW9uPXQsbSh0aGlzLnBvc2l0aW9uKXx8KHRoaXMucG9zaXRpb249bmV3IEopLHRoaXMudGFuZ2VudFBsYW5lPWUsbSh0aGlzLnRhbmdlbnRQbGFuZSl8fCh0aGlzLnRhbmdlbnRQbGFuZT1Gbi5OT1JUSF9QT0xFX1RBTkdFTlRfUExBTkUpfXZhciBDYSx3RCxURCxPRCxFRCxhcix4RT0kKCgpPT57a2UoKTtEdCgpO0llKCk7V3QoKTtmdCgpOyR0KCk7cGEoKTtlYygpO0t0KCk7VnAoKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhGbi5wcm90b3R5cGUse2VsbGlwc29pZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGFuZ2VudFBsYW5lLmVsbGlwc29pZH19LHg6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBvc2l0aW9uLnh9fSx5OntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wb3NpdGlvbi55fX0sY29uZm9ybWFsTGF0aXR1ZGU6e2dldDpmdW5jdGlvbigpe2xldCB0PUoubWFnbml0dWRlKHRoaXMucG9zaXRpb24pLGU9Mip0aGlzLmVsbGlwc29pZC5tYXhpbXVtUmFkaXVzO3JldHVybiB0aGlzLnRhbmdlbnRQbGFuZS5wbGFuZS5ub3JtYWwueiooUC5QSV9PVkVSX1RXTy0yKk1hdGguYXRhbjIodCxlKSl9fSxsb25naXR1ZGU6e2dldDpmdW5jdGlvbigpe2xldCB0PVAuUElfT1ZFUl9UV08rTWF0aC5hdGFuMih0aGlzLnksdGhpcy54KTtyZXR1cm4gdD5NYXRoLlBJJiYodC09UC5UV09fUEkpLHR9fX0pO0NhPW5ldyBjdCx3RD1uZXcgYTtGbi5wcm90b3R5cGUuZ2V0TGF0aXR1ZGU9ZnVuY3Rpb24odCl7bSh0KXx8KHQ9WS5kZWZhdWx0KSxDYS5sYXRpdHVkZT10aGlzLmNvbmZvcm1hbExhdGl0dWRlLENhLmxvbmdpdHVkZT10aGlzLmxvbmdpdHVkZSxDYS5oZWlnaHQ9MDtsZXQgZT10aGlzLmVsbGlwc29pZC5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihDYSx3RCk7cmV0dXJuIHQuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoZSxDYSksQ2EubGF0aXR1ZGV9O1REPW5ldyBKcyxPRD1uZXcgYSxFRD1uZXcgYTtGbi5mcm9tQ2FydGVzaWFuPWZ1bmN0aW9uKHQsZSl7eS5kZWZpbmVkKCJjYXJ0ZXNpYW4iLHQpO2xldCBuPVAuc2lnbk5vdFplcm8odC56KSxvPUZuLk5PUlRIX1BPTEVfVEFOR0VOVF9QTEFORSxyPUZuLlNPVVRIX1BPTEU7bjwwJiYobz1Gbi5TT1VUSF9QT0xFX1RBTkdFTlRfUExBTkUscj1Gbi5OT1JUSF9QT0xFKTtsZXQgaT1URDtpLm9yaWdpbj1vLmVsbGlwc29pZC5zY2FsZVRvR2VvY2VudHJpY1N1cmZhY2UodCxpLm9yaWdpbiksaS5kaXJlY3Rpb249YS5zdWJ0cmFjdChpLm9yaWdpbixyLE9EKSxhLm5vcm1hbGl6ZShpLmRpcmVjdGlvbixpLmRpcmVjdGlvbik7bGV0IHM9eW8ucmF5UGxhbmUoaSxvLnBsYW5lLEVEKSxmPWEuc3VidHJhY3QocyxyLHMpLHU9YS5kb3Qoby54QXhpcyxmKSxjPW4qYS5kb3Qoby55QXhpcyxmKTtyZXR1cm4gbShlKT8oZS5wb3NpdGlvbj1uZXcgSih1LGMpLGUudGFuZ2VudFBsYW5lPW8sZSk6bmV3IEZuKG5ldyBKKHUsYyksbyl9O0ZuLmZyb21DYXJ0ZXNpYW5BcnJheT1mdW5jdGlvbih0LGUpe3kuZGVmaW5lZCgiY2FydGVzaWFucyIsdCk7bGV0IG49dC5sZW5ndGg7bShlKT9lLmxlbmd0aD1uOmU9bmV3IEFycmF5KG4pO2ZvcihsZXQgbz0wO288bjtvKyspZVtvXT1Gbi5mcm9tQ2FydGVzaWFuKHRbb10sZVtvXSk7cmV0dXJuIGV9O0ZuLmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZS5wb3NpdGlvbj10LnBvc2l0aW9uLGUudGFuZ2VudFBsYW5lPXQudGFuZ2VudFBsYW5lLGUpOm5ldyBGbih0LnBvc2l0aW9uLHQudGFuZ2VudFBsYW5lKX07Rm4uSEFMRl9VTklUX1NQSEVSRT1PYmplY3QuZnJlZXplKG5ldyBZKC41LC41LC41KSk7Rm4uTk9SVEhfUE9MRT1PYmplY3QuZnJlZXplKG5ldyBhKDAsMCwuNSkpO0ZuLlNPVVRIX1BPTEU9T2JqZWN0LmZyZWV6ZShuZXcgYSgwLDAsLS41KSk7Rm4uTk9SVEhfUE9MRV9UQU5HRU5UX1BMQU5FPU9iamVjdC5mcmVlemUobmV3IEFvKEZuLk5PUlRIX1BPTEUsRm4uSEFMRl9VTklUX1NQSEVSRSkpO0ZuLlNPVVRIX1BPTEVfVEFOR0VOVF9QTEFORT1PYmplY3QuZnJlZXplKG5ldyBBbyhGbi5TT1VUSF9QT0xFLEZuLkhBTEZfVU5JVF9TUEhFUkUpKTthcj1Gbn0pO2Z1bmN0aW9uIFNEKHQsZSxuLG8pe2xldCBpPW8uY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWModCxSRCkuaGVpZ2h0LHM9by5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhlLENFKTtzLmhlaWdodD1pLG8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4ocyxlKTtsZXQgZj1vLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKG4sQ0UpO2YuaGVpZ2h0PWktMTAwLG8uY2FydG9ncmFwaGljVG9DYXJ0ZXNpYW4oZixuKX1mdW5jdGlvbiB1eSh0KXtsZXQgZT10LnZlcnRleEZvcm1hdCxuPXQuZ2VvbWV0cnksbz10LnNoYWRvd1ZvbHVtZSxyPW4uYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMsaT1tKG4uYXR0cmlidXRlcy5zdCk/bi5hdHRyaWJ1dGVzLnN0LnZhbHVlczp2b2lkIDAscz1yLmxlbmd0aCxmPXQud2FsbCx1PXQudG9wfHxmLGM9dC5ib3R0b218fGY7aWYoZS5zdHx8ZS5ub3JtYWx8fGUudGFuZ2VudHx8ZS5iaXRhbmdlbnR8fG8pe2xldCBsPXQuYm91bmRpbmdSZWN0YW5nbGUscD10LnJvdGF0aW9uQXhpcyxkPXQucHJvamVjdFRvMmQsaD10LmVsbGlwc29pZCxfPXQuc3RSb3RhdGlvbixnPXQucGVyUG9zaXRpb25IZWlnaHQsYj12RDtiLng9bC54LGIueT1sLnk7bGV0IHc9ZS5zdD9uZXcgRmxvYXQzMkFycmF5KDIqKHMvMykpOnZvaWQgMCxPO2Uubm9ybWFsJiYoZyYmdSYmIWY/Tz1uLmF0dHJpYnV0ZXMubm9ybWFsLnZhbHVlczpPPW5ldyBGbG9hdDMyQXJyYXkocykpO2xldCBFPWUudGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KHMpOnZvaWQgMCxUPWUuYml0YW5nZW50P25ldyBGbG9hdDMyQXJyYXkocyk6dm9pZCAwLHg9bz9uZXcgRmxvYXQzMkFycmF5KHMpOnZvaWQgMCxNPTAsTj0wLEY9Q0QsST1QRCx2PU1ELEI9ITAsQT1ERCxTPUJEO2lmKF8hPT0wKXtsZXQgej10ZS5mcm9tQXhpc0FuZ2xlKHAsXyxNRSk7QT1aLmZyb21RdWF0ZXJuaW9uKHosQSksej10ZS5mcm9tQXhpc0FuZ2xlKHAsLV8sTUUpLFM9Wi5mcm9tUXVhdGVybmlvbih6LFMpfWVsc2UgQT1aLmNsb25lKFouSURFTlRJVFksQSksUz1aLmNsb25lKFouSURFTlRJVFksUyk7bGV0IEM9MCxMPTA7dSYmYyYmKEM9cy8yLEw9cy8zLHMvPTIpO2ZvcihsZXQgej0wO3o8czt6Kz0zKXtsZXQgaj1hLmZyb21BcnJheShyLHosTEQpO2lmKGUuc3QmJiFtKGkpKXtsZXQgaz1aLm11bHRpcGx5QnlWZWN0b3IoQSxqLHhEKTtrPWguc2NhbGVUb0dlb2RldGljU3VyZmFjZShrLGspO2xldCBxPWQoW2tdLEZEKVswXTtKLnN1YnRyYWN0KHEsYixxKTtsZXQgVz1QLmNsYW1wKHEueC9sLndpZHRoLDAsMSksUj1QLmNsYW1wKHEueS9sLmhlaWdodCwwLDEpO2MmJih3W00rTF09Vyx3W00rMStMXT1SKSx1JiYod1tNXT1XLHdbTSsxXT1SKSxNKz0yfWlmKGUubm9ybWFsfHxlLnRhbmdlbnR8fGUuYml0YW5nZW50fHxvKXtsZXQgaz1OKzEscT1OKzI7aWYoZil7aWYoeiszPHMpe2xldCBXPWEuZnJvbUFycmF5KHIseiszLE5EKTtpZihCKXtsZXQgUj1hLmZyb21BcnJheShyLHorcyxJRCk7ZyYmU0QoaixXLFIsaCksYS5zdWJ0cmFjdChXLGosVyksYS5zdWJ0cmFjdChSLGosUiksRj1hLm5vcm1hbGl6ZShhLmNyb3NzKFIsVyxGKSxGKSxCPSExfWEuZXF1YWxzRXBzaWxvbihXLGosUC5FUFNJTE9OMTApJiYoQj0hMCl9KGUudGFuZ2VudHx8ZS5iaXRhbmdlbnQpJiYodj1oLmdlb2RldGljU3VyZmFjZU5vcm1hbChqLHYpLGUudGFuZ2VudCYmKEk9YS5ub3JtYWxpemUoYS5jcm9zcyh2LEYsSSksSSkpKX1lbHNlIEY9aC5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoaixGKSwoZS50YW5nZW50fHxlLmJpdGFuZ2VudCkmJihnJiYoTGQ9YS5mcm9tQXJyYXkoTyxOLExkKSxtaT1hLmNyb3NzKGEuVU5JVF9aLExkLG1pKSxtaT1hLm5vcm1hbGl6ZShaLm11bHRpcGx5QnlWZWN0b3IoUyxtaSxtaSksbWkpLGUuYml0YW5nZW50JiYoUGE9YS5ub3JtYWxpemUoYS5jcm9zcyhMZCxtaSxQYSksUGEpKSksST1hLmNyb3NzKGEuVU5JVF9aLEYsSSksST1hLm5vcm1hbGl6ZShaLm11bHRpcGx5QnlWZWN0b3IoUyxJLEkpLEkpLGUuYml0YW5nZW50JiYodj1hLm5vcm1hbGl6ZShhLmNyb3NzKEYsSSx2KSx2KSkpO2Uubm9ybWFsJiYodC53YWxsPyhPW04rQ109Ri54LE9baytDXT1GLnksT1txK0NdPUYueik6YyYmKE9bTitDXT0tRi54LE9baytDXT0tRi55LE9bcStDXT0tRi56KSwodSYmIWd8fGYpJiYoT1tOXT1GLngsT1trXT1GLnksT1txXT1GLnopKSxvJiYoZiYmKEY9aC5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoaixGKSkseFtOK0NdPS1GLngseFtrK0NdPS1GLnkseFtxK0NdPS1GLnopLGUudGFuZ2VudCYmKHQud2FsbD8oRVtOK0NdPUkueCxFW2srQ109SS55LEVbcStDXT1JLnopOmMmJihFW04rQ109LUkueCxFW2srQ109LUkueSxFW3ErQ109LUkueiksdSYmKGc/KEVbTl09bWkueCxFW2tdPW1pLnksRVtxXT1taS56KTooRVtOXT1JLngsRVtrXT1JLnksRVtxXT1JLnopKSksZS5iaXRhbmdlbnQmJihjJiYoVFtOK0NdPXYueCxUW2srQ109di55LFRbcStDXT12LnopLHUmJihnPyhUW05dPVBhLngsVFtrXT1QYS55LFRbcV09UGEueik6KFRbTl09di54LFRba109di55LFRbcV09di56KSkpLE4rPTN9fWUuc3QmJiFtKGkpJiYobi5hdHRyaWJ1dGVzLnN0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczp3fSkpLGUubm9ybWFsJiYobi5hdHRyaWJ1dGVzLm5vcm1hbD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6T30pKSxlLnRhbmdlbnQmJihuLmF0dHJpYnV0ZXMudGFuZ2VudD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6RX0pKSxlLmJpdGFuZ2VudCYmKG4uYXR0cmlidXRlcy5iaXRhbmdlbnQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOlR9KSksbyYmKG4uYXR0cmlidXRlcy5leHRydWRlRGlyZWN0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczp4fSkpfWlmKHQuZXh0cnVkZSYmbSh0Lm9mZnNldEF0dHJpYnV0ZSkpe2xldCBsPXIubGVuZ3RoLzMscD1uZXcgVWludDhBcnJheShsKTtpZih0Lm9mZnNldEF0dHJpYnV0ZT09PWFlLlRPUCl1JiZjfHxmP3A9cC5maWxsKDEsMCxsLzIpOnUmJihwPXAuZmlsbCgxKSk7ZWxzZXtsZXQgZD10Lm9mZnNldEF0dHJpYnV0ZT09PWFlLk5PTkU/MDoxO3A9cC5maWxsKGQpfW4uYXR0cmlidXRlcy5hcHBseU9mZnNldD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpwfSl9cmV0dXJuIG59ZnVuY3Rpb24gVUQodCxlLG4sbyxyLGkscyxmLHUsYyl7bGV0IGw9e3dhbGxzOltdfSxwO2lmKHN8fGYpe2xldCBPPV9lLmNyZWF0ZUdlb21ldHJ5RnJvbVBvc2l0aW9ucyh0LGUsbixvLGksdSxjKSxFPU8uYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMsVD1PLmluZGljZXMseCxNO2lmKHMmJmYpe2xldCBOPUUuY29uY2F0KEUpO3g9Ti5sZW5ndGgvMyxNPUx0LmNyZWF0ZVR5cGVkQXJyYXkoeCxULmxlbmd0aCoyKSxNLnNldChUKTtsZXQgRj1ULmxlbmd0aCxJPXgvMjtmb3IocD0wO3A8RjtwKz0zKXtsZXQgdj1NW3BdK0ksQj1NW3ArMV0rSSxBPU1bcCsyXStJO01bcCtGXT1BLE1bcCsxK0ZdPUIsTVtwKzIrRl09dn1pZihPLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPU4saSYmdS5ub3JtYWwpe2xldCB2PU8uYXR0cmlidXRlcy5ub3JtYWwudmFsdWVzO08uYXR0cmlidXRlcy5ub3JtYWwudmFsdWVzPW5ldyBGbG9hdDMyQXJyYXkoTi5sZW5ndGgpLE8uYXR0cmlidXRlcy5ub3JtYWwudmFsdWVzLnNldCh2KX1pZih1LnN0JiZtKG4pKXtsZXQgdj1PLmF0dHJpYnV0ZXMuc3QudmFsdWVzO08uYXR0cmlidXRlcy5zdC52YWx1ZXM9bmV3IEZsb2F0MzJBcnJheSh4KjIpLE8uYXR0cmlidXRlcy5zdC52YWx1ZXM9di5jb25jYXQodil9Ty5pbmRpY2VzPU19ZWxzZSBpZihmKXtmb3IoeD1FLmxlbmd0aC8zLE09THQuY3JlYXRlVHlwZWRBcnJheSh4LFQubGVuZ3RoKSxwPTA7cDxULmxlbmd0aDtwKz0zKU1bcF09VFtwKzJdLE1bcCsxXT1UW3ArMV0sTVtwKzJdPVRbcF07Ty5pbmRpY2VzPU19bC50b3BBbmRCb3R0b209bmV3IGZvKHtnZW9tZXRyeTpPfSl9bGV0IGQ9ci5vdXRlclJpbmcsaD1Bby5mcm9tUG9pbnRzKGQsdCksXz1oLnByb2plY3RQb2ludHNPbnRvUGxhbmUoZCxORSksZz1QZS5jb21wdXRlV2luZGluZ09yZGVyMkQoXyk7Zz09PVBvLkNMT0NLV0lTRSYmKGQ9ZC5zbGljZSgpLnJldmVyc2UoKSk7bGV0IGI9X2UuY29tcHV0ZVdhbGxHZW9tZXRyeShkLG4sdCxvLGksYyk7bC53YWxscy5wdXNoKG5ldyBmbyh7Z2VvbWV0cnk6Yn0pKTtsZXQgdz1yLmhvbGVzO2ZvcihwPTA7cDx3Lmxlbmd0aDtwKyspe2xldCBPPXdbcF07Xz1oLnByb2plY3RQb2ludHNPbnRvUGxhbmUoTyxORSksZz1QZS5jb21wdXRlV2luZGluZ09yZGVyMkQoXyksZz09PVBvLkNPVU5URVJfQ0xPQ0tXSVNFJiYoTz1PLnNsaWNlKCkucmV2ZXJzZSgpKSxiPV9lLmNvbXB1dGVXYWxsR2VvbWV0cnkoTyxuLHQsbyxpLGMpLGwud2FsbHMucHVzaChuZXcgZm8oe2dlb21ldHJ5OmJ9KSl9cmV0dXJuIGx9ZnVuY3Rpb24gU3IodCl7aWYoeS50eXBlT2Yub2JqZWN0KCJvcHRpb25zIix0KSx5LnR5cGVPZi5vYmplY3QoIm9wdGlvbnMucG9seWdvbkhpZXJhcmNoeSIsdC5wb2x5Z29uSGllcmFyY2h5KSxtKHQucGVyUG9zaXRpb25IZWlnaHQpJiZ0LnBlclBvc2l0aW9uSGVpZ2h0JiZtKHQuaGVpZ2h0KSl0aHJvdyBuZXcgRCgiQ2Fubm90IHVzZSBib3RoIG9wdGlvbnMucGVyUG9zaXRpb25IZWlnaHQgYW5kIG9wdGlvbnMuaGVpZ2h0Iik7aWYobSh0LmFyY1R5cGUpJiZ0LmFyY1R5cGUhPT1oZS5HRU9ERVNJQyYmdC5hcmNUeXBlIT09aGUuUkhVTUIpdGhyb3cgbmV3IEQoIkludmFsaWQgYXJjVHlwZS4gVmFsaWQgb3B0aW9ucyBhcmUgQXJjVHlwZS5HRU9ERVNJQyBhbmQgQXJjVHlwZS5SSFVNQi4iKTtsZXQgZT10LnBvbHlnb25IaWVyYXJjaHksbj10LnZlcnRleEZvcm1hdD8/cHQuREVGQVVMVCxvPXQuZWxsaXBzb2lkPz9ZLmRlZmF1bHQscj10LmdyYW51bGFyaXR5Pz9QLlJBRElBTlNfUEVSX0RFR1JFRSxpPXQuc3RSb3RhdGlvbj8/MCxzPXQudGV4dHVyZUNvb3JkaW5hdGVzLGY9dC5wZXJQb3NpdGlvbkhlaWdodD8/ITEsdT1mJiZtKHQuZXh0cnVkZWRIZWlnaHQpLGM9dC5oZWlnaHQ/PzAsbD10LmV4dHJ1ZGVkSGVpZ2h0Pz9jO2lmKCF1KXtsZXQgcD1NYXRoLm1heChjLGwpO2w9TWF0aC5taW4oYyxsKSxjPXB9dGhpcy5fdmVydGV4Rm9ybWF0PXB0LmNsb25lKG4pLHRoaXMuX2VsbGlwc29pZD1ZLmNsb25lKG8pLHRoaXMuX2dyYW51bGFyaXR5PXIsdGhpcy5fc3RSb3RhdGlvbj1pLHRoaXMuX2hlaWdodD1jLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0PWwsdGhpcy5fY2xvc2VUb3A9dC5jbG9zZVRvcD8/ITAsdGhpcy5fY2xvc2VCb3R0b209dC5jbG9zZUJvdHRvbT8/ITAsdGhpcy5fcG9seWdvbkhpZXJhcmNoeT1lLHRoaXMuX3BlclBvc2l0aW9uSGVpZ2h0PWYsdGhpcy5fcGVyUG9zaXRpb25IZWlnaHRFeHRydWRlPXUsdGhpcy5fc2hhZG93Vm9sdW1lPXQuc2hhZG93Vm9sdW1lPz8hMSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVQb2x5Z29uR2VvbWV0cnkiLHRoaXMuX29mZnNldEF0dHJpYnV0ZT10Lm9mZnNldEF0dHJpYnV0ZSx0aGlzLl9hcmNUeXBlPXQuYXJjVHlwZT8/aGUuR0VPREVTSUMsdGhpcy5fcmVjdGFuZ2xlPXZvaWQgMCx0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzPXZvaWQgMCx0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZXM9cyx0aGlzLnBhY2tlZExlbmd0aD1fZS5jb21wdXRlSGllcmFyY2h5UGFja2VkTGVuZ3RoKGUsYSkrWS5wYWNrZWRMZW5ndGgrcHQucGFja2VkTGVuZ3RoKyhzP19lLmNvbXB1dGVIaWVyYXJjaHlQYWNrZWRMZW5ndGgocyxKKToxKSsxMn1mdW5jdGlvbiBJRSh0LGUsbixvLHIsaSl7bGV0IHM9dC5sb25naXR1ZGUsZj1zPj0wP3M6cytQLlRXT19QSTtyLndlc3RPdmVySWRsPU1hdGgubWluKHIud2VzdE92ZXJJZGwsZiksci5lYXN0T3ZlcklkbD1NYXRoLm1heChyLmVhc3RPdmVySWRsLGYpLGkud2VzdD1NYXRoLm1pbihpLndlc3QscyksaS5lYXN0PU1hdGgubWF4KGkuZWFzdCxzKTtsZXQgdT10LmdldExhdGl0dWRlKG4pLGM9dTtpZihpLnNvdXRoPU1hdGgubWluKGkuc291dGgsdSksaS5ub3J0aD1NYXRoLm1heChpLm5vcnRoLHUpLG8hPT1oZS5SSFVNQil7bGV0IGQ9Si5zdWJ0cmFjdChlLnBvc2l0aW9uLHQucG9zaXRpb24sekQpLGg9Si5kb3QoZS5wb3NpdGlvbixkKS9KLmRvdChkLGQpO2lmKGg+MCYmaDwxKXtsZXQgXz1KLmFkZChlLnBvc2l0aW9uLEoubXVsdGlwbHlCeVNjYWxhcihkLC1oLGQpLGpEKSxnPWFyLmNsb25lKGUsSEQpO2cucG9zaXRpb249XztsZXQgYj1nLmdldExhdGl0dWRlKG4pO2kuc291dGg9TWF0aC5taW4oaS5zb3V0aCxiKSxpLm5vcnRoPU1hdGgubWF4KGkubm9ydGgsYiksTWF0aC5hYnModSk+TWF0aC5hYnMoYikmJihjPWIpfX1sZXQgbD1lLngqdC55LXQueCplLnkscD1NYXRoLnNpZ24obCk7cCE9PTAmJihwKj1KLmFuZ2xlQmV0d2VlbihlLnBvc2l0aW9uLHQucG9zaXRpb24pKSxjPj0wJiYoci5ub3J0aEFuZ2xlKz1wKSxjPD0wJiYoci5zb3V0aEFuZ2xlKz1wKX1mdW5jdGlvbiBXRCh0LGUsbil7cmV0dXJuIHQuaGVpZ2h0Pj1QLlBJfHx0LndpZHRoPj1QLlBJP2FyLmZyb21DYXJ0ZXNpYW4oZVswXSxLRCkudGFuZ2VudFBsYW5lOkFvLmZyb21Qb2ludHMoZSxuKX1mdW5jdGlvbiBYRCh0LGUsbil7cmV0dXJuKG8scik9PntpZih0LmhlaWdodD49UC5QSXx8dC53aWR0aD49UC5QSSl7aWYodC5zb3V0aDwwJiZ0Lm5vcnRoPjApe20ocil8fChyPVtdKTtmb3IobGV0IHM9MDtzPG8ubGVuZ3RoOysrcyl7bGV0IGY9bi5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyhvW3NdLEZFKTtyW3NdPW5ldyBKKGYubG9uZ2l0dWRlL1AuUEksZi5sYXRpdHVkZS9QLlBJX09WRVJfVFdPKX1yZXR1cm4gci5sZW5ndGg9by5sZW5ndGgscn1yZXR1cm4gYXIuZnJvbUNhcnRlc2lhbkFycmF5KG8scil9cmV0dXJuIEFvLmZyb21Qb2ludHMoZSxuKS5wcm9qZWN0UG9pbnRzT250b1BsYW5lKG8scil9fWZ1bmN0aW9uIFlEKHQsZSxuKXtpZih0LmhlaWdodD49UC5QSXx8dC53aWR0aD49UC5QSSlyZXR1cm4ocixpKT0+e2lmKHQuc291dGg8MCYmdC5ub3J0aD4wKXtsZXQgcz1uLmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKHIsRkUpO3JldHVybiBtKGkpfHwoaT1uZXcgSiksaS54PXMubG9uZ2l0dWRlL1AuUEksaS55PXMubGF0aXR1ZGUvUC5QSV9PVkVSX1RXTyxpfXJldHVybiBhci5mcm9tQ2FydGVzaWFuKHIsaSl9O2xldCBvPUFvLmZyb21Qb2ludHMoZSxuKTtyZXR1cm4ocixpKT0+by5wcm9qZWN0UG9pbnRzT250b1BsYW5lKHIsaSl9ZnVuY3Rpb24gJEQodCxlLG4sbyl7cmV0dXJuKHIsaSk9PiFvJiYodC5oZWlnaHQ+PVAuUElfT1ZFUl9UV098fHQud2lkdGg+PTIqUC5QSV9PVkVSX1RIUkVFKT9fZS5zcGxpdFBvbHlnb25zT25FcXVhdG9yKHIsZSxuLGkpOnJ9ZnVuY3Rpb24gWkQodCxlLG4sbyl7aWYoZS5oZWlnaHQ+PVAuUEl8fGUud2lkdGg+PVAuUEkpcmV0dXJuIHFyLmZyb21SZWN0YW5nbGUoZSx2b2lkIDAsUEUpO2xldCByPXQsaT1Bby5mcm9tUG9pbnRzKHIsbik7cmV0dXJuIF9lLmNvbXB1dGVCb3VuZGluZ1JlY3RhbmdsZShpLnBsYW5lLm5vcm1hbCxpLnByb2plY3RQb2ludE9udG9QbGFuZS5iaW5kKGkpLHIsbyxQRSl9ZnVuY3Rpb24gUUQodCl7bGV0IGU9LXQuX3N0Um90YXRpb247aWYoZT09PTApcmV0dXJuWzAsMCwwLDEsMSwwXTtsZXQgbj10Ll9lbGxpcHNvaWQsbz10Ll9wb2x5Z29uSGllcmFyY2h5LnBvc2l0aW9ucyxyPXQucmVjdGFuZ2xlO3JldHVybiBVdC5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50cyhvLGUsbixyKX12YXIgUkQsQ0UsUEUseEQsQ0QsUEQsTUQsTkQsSUQsTGQsbWksUGEsdkQsRkQsTEQsTUUsREQsQkQsTkUsa0QsR0QsVkQsekQsakQsSEQsdkUscUQsUnIsS0QsRkUsbHksTEU9JCgoKT0+e3VjKCk7Q2YoKTt2ZSgpO2tlKCk7RHQoKTtJZSgpO1d0KCk7RGUoKTt5ZSgpO2Z0KCk7SHQoKTskdCgpO3BhKCk7WWUoKTskZSgpO2NjKCk7RG8oKTtjaSgpO1plKCk7S3QoKTtVbigpO0RmKCk7S3IoKTtYbygpO1RuKCk7eEUoKTt4bygpO3BjKCk7UkQ9bmV3IGN0LENFPW5ldyBjdDtQRT1uZXcgcXIseEQ9bmV3IGEsQ0Q9bmV3IGEsUEQ9bmV3IGEsTUQ9bmV3IGEsTkQ9bmV3IGEsSUQ9bmV3IGEsTGQ9bmV3IGEsbWk9bmV3IGEsUGE9bmV3IGEsdkQ9bmV3IEosRkQ9bmV3IEosTEQ9bmV3IGEsTUU9bmV3IHRlLEREPW5ldyBaLEJEPW5ldyBaO05FPVtdO1NyLmZyb21Qb3NpdGlvbnM9ZnVuY3Rpb24odCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1QseS5kZWZpbmVkKCJvcHRpb25zLnBvc2l0aW9ucyIsdC5wb3NpdGlvbnMpO2xldCBlPXtwb2x5Z29uSGllcmFyY2h5Ontwb3NpdGlvbnM6dC5wb3NpdGlvbnN9LGhlaWdodDp0LmhlaWdodCxleHRydWRlZEhlaWdodDp0LmV4dHJ1ZGVkSGVpZ2h0LHZlcnRleEZvcm1hdDp0LnZlcnRleEZvcm1hdCxzdFJvdGF0aW9uOnQuc3RSb3RhdGlvbixlbGxpcHNvaWQ6dC5lbGxpcHNvaWQsZ3JhbnVsYXJpdHk6dC5ncmFudWxhcml0eSxwZXJQb3NpdGlvbkhlaWdodDp0LnBlclBvc2l0aW9uSGVpZ2h0LGNsb3NlVG9wOnQuY2xvc2VUb3AsY2xvc2VCb3R0b206dC5jbG9zZUJvdHRvbSxvZmZzZXRBdHRyaWJ1dGU6dC5vZmZzZXRBdHRyaWJ1dGUsYXJjVHlwZTp0LmFyY1R5cGUsdGV4dHVyZUNvb3JkaW5hdGVzOnQudGV4dHVyZUNvb3JkaW5hdGVzfTtyZXR1cm4gbmV3IFNyKGUpfTtTci5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCkseS5kZWZpbmVkKCJhcnJheSIsZSksbj1uPz8wLG49X2UucGFja1BvbHlnb25IaWVyYXJjaHkodC5fcG9seWdvbkhpZXJhcmNoeSxlLG4sYSksWS5wYWNrKHQuX2VsbGlwc29pZCxlLG4pLG4rPVkucGFja2VkTGVuZ3RoLHB0LnBhY2sodC5fdmVydGV4Rm9ybWF0LGUsbiksbis9cHQucGFja2VkTGVuZ3RoLGVbbisrXT10Ll9oZWlnaHQsZVtuKytdPXQuX2V4dHJ1ZGVkSGVpZ2h0LGVbbisrXT10Ll9ncmFudWxhcml0eSxlW24rK109dC5fc3RSb3RhdGlvbixlW24rK109dC5fcGVyUG9zaXRpb25IZWlnaHRFeHRydWRlPzE6MCxlW24rK109dC5fcGVyUG9zaXRpb25IZWlnaHQ/MTowLGVbbisrXT10Ll9jbG9zZVRvcD8xOjAsZVtuKytdPXQuX2Nsb3NlQm90dG9tPzE6MCxlW24rK109dC5fc2hhZG93Vm9sdW1lPzE6MCxlW24rK109dC5fb2Zmc2V0QXR0cmlidXRlPz8tMSxlW24rK109dC5fYXJjVHlwZSxtKHQuX3RleHR1cmVDb29yZGluYXRlcyk/bj1fZS5wYWNrUG9seWdvbkhpZXJhcmNoeSh0Ll90ZXh0dXJlQ29vcmRpbmF0ZXMsZSxuLEopOmVbbisrXT0tMSxlW24rK109dC5wYWNrZWRMZW5ndGgsZX07a0Q9WS5jbG9uZShZLlVOSVRfU1BIRVJFKSxHRD1uZXcgcHQsVkQ9e3BvbHlnb25IaWVyYXJjaHk6e319O1NyLnVucGFjaz1mdW5jdGlvbih0LGUsbil7eS5kZWZpbmVkKCJhcnJheSIsdCksZT1lPz8wO2xldCBvPV9lLnVucGFja1BvbHlnb25IaWVyYXJjaHkodCxlLGEpO2U9by5zdGFydGluZ0luZGV4LGRlbGV0ZSBvLnN0YXJ0aW5nSW5kZXg7bGV0IHI9WS51bnBhY2sodCxlLGtEKTtlKz1ZLnBhY2tlZExlbmd0aDtsZXQgaT1wdC51bnBhY2sodCxlLEdEKTtlKz1wdC5wYWNrZWRMZW5ndGg7bGV0IHM9dFtlKytdLGY9dFtlKytdLHU9dFtlKytdLGM9dFtlKytdLGw9dFtlKytdPT09MSxwPXRbZSsrXT09PTEsZD10W2UrK109PT0xLGg9dFtlKytdPT09MSxfPXRbZSsrXT09PTEsZz10W2UrK10sYj10W2UrK10sdz10W2VdPT09LTE/dm9pZCAwOl9lLnVucGFja1BvbHlnb25IaWVyYXJjaHkodCxlLEopO20odyk/KGU9dy5zdGFydGluZ0luZGV4LGRlbGV0ZSB3LnN0YXJ0aW5nSW5kZXgpOmUrKztsZXQgTz10W2UrK107cmV0dXJuIG0obil8fChuPW5ldyBTcihWRCkpLG4uX3BvbHlnb25IaWVyYXJjaHk9byxuLl9lbGxpcHNvaWQ9WS5jbG9uZShyLG4uX2VsbGlwc29pZCksbi5fdmVydGV4Rm9ybWF0PXB0LmNsb25lKGksbi5fdmVydGV4Rm9ybWF0KSxuLl9oZWlnaHQ9cyxuLl9leHRydWRlZEhlaWdodD1mLG4uX2dyYW51bGFyaXR5PXUsbi5fc3RSb3RhdGlvbj1jLG4uX3BlclBvc2l0aW9uSGVpZ2h0RXh0cnVkZT1sLG4uX3BlclBvc2l0aW9uSGVpZ2h0PXAsbi5fY2xvc2VUb3A9ZCxuLl9jbG9zZUJvdHRvbT1oLG4uX3NoYWRvd1ZvbHVtZT1fLG4uX29mZnNldEF0dHJpYnV0ZT1nPT09LTE/dm9pZCAwOmcsbi5fYXJjVHlwZT1iLG4uX3RleHR1cmVDb29yZGluYXRlcz13LG4ucGFja2VkTGVuZ3RoPU8sbn07ekQ9bmV3IEosakQ9bmV3IEosSEQ9bmV3IGFyO3ZFPW5ldyBhcixxRD1uZXcgYXIsUnI9e25vcnRoQW5nbGU6MCxzb3V0aEFuZ2xlOjAsd2VzdE92ZXJJZGw6MCxlYXN0T3ZlcklkbDowfTtTci5jb21wdXRlUmVjdGFuZ2xlRnJvbVBvc2l0aW9ucz1mdW5jdGlvbih0LGUsbixvKXtpZih5LmRlZmluZWQoInBvc2l0aW9ucyIsdCksbShvKXx8KG89bmV3IE50KSx0Lmxlbmd0aDwzKXJldHVybiBvO28ud2VzdD1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksby5lYXN0PU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxvLnNvdXRoPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxvLm5vcnRoPU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxSci5ub3J0aEFuZ2xlPTAsUnIuc291dGhBbmdsZT0wLFJyLndlc3RPdmVySWRsPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxSci5lYXN0T3ZlcklkbD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bGV0IHI9dC5sZW5ndGgsaT1hci5mcm9tQ2FydGVzaWFuKHRbMF0scUQpO2ZvcihsZXQgcz0xO3M8cjtzKyspe2xldCBmPWFyLmZyb21DYXJ0ZXNpYW4odFtzXSx2RSk7SUUoZixpLGUsbixScixvKSxpPWFyLmNsb25lKGYsaSl9cmV0dXJuIElFKGFyLmZyb21DYXJ0ZXNpYW4odFswXSx2RSksaSxlLG4sUnIsbyksby5lYXN0LW8ud2VzdD5Sci5lYXN0T3ZlcklkbC1Sci53ZXN0T3ZlcklkbCYmKG8ud2VzdD1Sci53ZXN0T3ZlcklkbCxvLmVhc3Q9UnIuZWFzdE92ZXJJZGwsby5lYXN0PlAuUEkmJihvLmVhc3Q9by5lYXN0LVAuVFdPX1BJKSxvLndlc3Q+UC5QSSYmKG8ud2VzdD1vLndlc3QtUC5UV09fUEkpKSxQLmVxdWFsc0Vwc2lsb24oTWF0aC5hYnMoUnIubm9ydGhBbmdsZSksUC5UV09fUEksUC5FUFNJTE9OMTApJiYoby5ub3J0aD1QLlBJX09WRVJfVFdPLG8uZWFzdD1QLlBJLG8ud2VzdD0tUC5QSSksUC5lcXVhbHNFcHNpbG9uKE1hdGguYWJzKFJyLnNvdXRoQW5nbGUpLFAuVFdPX1BJLFAuRVBTSUxPTjEwKSYmKG8uc291dGg9LVAuUElfT1ZFUl9UV08sby5lYXN0PVAuUEksby53ZXN0PS1QLlBJKSxvfTtLRD1uZXcgYXI7RkU9bmV3IGN0O1NyLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX3ZlcnRleEZvcm1hdCxuPXQuX2VsbGlwc29pZCxvPXQuX2dyYW51bGFyaXR5LHI9dC5fc3RSb3RhdGlvbixpPXQuX3BvbHlnb25IaWVyYXJjaHkscz10Ll9wZXJQb3NpdGlvbkhlaWdodCxmPXQuX2Nsb3NlVG9wLHU9dC5fY2xvc2VCb3R0b20sYz10Ll9hcmNUeXBlLGw9dC5fdGV4dHVyZUNvb3JkaW5hdGVzLHA9bShsKSxkPWkucG9zaXRpb25zO2lmKGQubGVuZ3RoPDMpcmV0dXJuO2xldCBoPXQucmVjdGFuZ2xlLF89X2UucG9seWdvbnNGcm9tSGllcmFyY2h5KGkscCxYRChoLGQsbiksIXMsbiwkRChoLG4sYyxzKSksZz1fLmhpZXJhcmNoeSxiPV8ucG9seWdvbnMsdz1mdW5jdGlvbihDKXtyZXR1cm4gQ30sTz1wP19lLnBvbHlnb25zRnJvbUhpZXJhcmNoeShsLCEwLHcsITEsbikucG9seWdvbnM6dm9pZCAwO2lmKGcubGVuZ3RoPT09MClyZXR1cm47bGV0IEU9Z1swXS5vdXRlclJpbmcsVD1aRChFLGgsbixyKSx4PVtdLE09dC5faGVpZ2h0LE49dC5fZXh0cnVkZWRIZWlnaHQsRj10Ll9wZXJQb3NpdGlvbkhlaWdodEV4dHJ1ZGV8fCFQLmVxdWFsc0Vwc2lsb24oTSxOLDAsUC5FUFNJTE9OMiksST17cGVyUG9zaXRpb25IZWlnaHQ6cyx2ZXJ0ZXhGb3JtYXQ6ZSxnZW9tZXRyeTp2b2lkIDAscm90YXRpb25BeGlzOldEKGgsRSxuKS5wbGFuZS5ub3JtYWwscHJvamVjdFRvMmQ6WUQoaCxFLG4pLGJvdW5kaW5nUmVjdGFuZ2xlOlQsZWxsaXBzb2lkOm4sc3RSb3RhdGlvbjpyLHRleHR1cmVDb29yZGluYXRlczp2b2lkIDAsYm90dG9tOiExLHRvcDohMCx3YWxsOiExLGV4dHJ1ZGU6ITEsYXJjVHlwZTpjfSx2O2lmKEYpZm9yKEkuZXh0cnVkZT0hMCxJLnRvcD1mLEkuYm90dG9tPXUsSS5zaGFkb3dWb2x1bWU9dC5fc2hhZG93Vm9sdW1lLEkub2Zmc2V0QXR0cmlidXRlPXQuX29mZnNldEF0dHJpYnV0ZSx2PTA7djxiLmxlbmd0aDt2Kyspe2xldCBDPVVEKG4sYlt2XSxwP09bdl06dm9pZCAwLG8sZ1t2XSxzLGYsdSxlLGMpLEw7ZiYmdT8oTD1DLnRvcEFuZEJvdHRvbSxJLmdlb21ldHJ5PV9lLnNjYWxlVG9HZW9kZXRpY0hlaWdodEV4dHJ1ZGVkKEwuZ2VvbWV0cnksTSxOLG4scykpOmY/KEw9Qy50b3BBbmRCb3R0b20sTC5nZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz1QZS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQoTC5nZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxNLG4sIXMpLEkuZ2VvbWV0cnk9TC5nZW9tZXRyeSk6dSYmKEw9Qy50b3BBbmRCb3R0b20sTC5nZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz1QZS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQoTC5nZW9tZXRyeS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxOLG4sITApLEkuZ2VvbWV0cnk9TC5nZW9tZXRyeSksKGZ8fHUpJiYoSS53YWxsPSExLEwuZ2VvbWV0cnk9dXkoSSkseC5wdXNoKEwpKTtsZXQgej1DLndhbGxzO0kud2FsbD0hMDtmb3IobGV0IGo9MDtqPHoubGVuZ3RoO2orKyl7bGV0IGs9eltqXTtJLmdlb21ldHJ5PV9lLnNjYWxlVG9HZW9kZXRpY0hlaWdodEV4dHJ1ZGVkKGsuZ2VvbWV0cnksTSxOLG4scyksay5nZW9tZXRyeT11eShJKSx4LnB1c2goayl9fWVsc2UgZm9yKHY9MDt2PGIubGVuZ3RoO3YrKyl7bGV0IEM9bmV3IGZvKHtnZW9tZXRyeTpfZS5jcmVhdGVHZW9tZXRyeUZyb21Qb3NpdGlvbnMobixiW3ZdLHA/T1t2XTp2b2lkIDAsbyxzLGUsYyl9KTtpZihDLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPVBlLnNjYWxlVG9HZW9kZXRpY0hlaWdodChDLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLE0sbiwhcyksSS5nZW9tZXRyeT1DLmdlb21ldHJ5LEMuZ2VvbWV0cnk9dXkoSSksbSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgTD1DLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLmxlbmd0aCx6PXQuX29mZnNldEF0dHJpYnV0ZT09PWFlLk5PTkU/MDoxLGo9bmV3IFVpbnQ4QXJyYXkoTC8zKS5maWxsKHopO0MuZ2VvbWV0cnkuYXR0cmlidXRlcy5hcHBseU9mZnNldD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczpqfSl9eC5wdXNoKEMpfWxldCBCPUdlLmNvbWJpbmVJbnN0YW5jZXMoeClbMF07Qi5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz1uZXcgRmxvYXQ2NEFycmF5KEIuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMpLEIuaW5kaWNlcz1MdC5jcmVhdGVUeXBlZEFycmF5KEIuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMubGVuZ3RoLzMsQi5pbmRpY2VzKTtsZXQgQT1CLmF0dHJpYnV0ZXMsUz1BdC5mcm9tVmVydGljZXMoQS5wb3NpdGlvbi52YWx1ZXMpO3JldHVybiBlLnBvc2l0aW9ufHxkZWxldGUgQS5wb3NpdGlvbixuZXcgVXQoe2F0dHJpYnV0ZXM6QSxpbmRpY2VzOkIuaW5kaWNlcyxwcmltaXRpdmVUeXBlOkIucHJpbWl0aXZlVHlwZSxib3VuZGluZ1NwaGVyZTpTLG9mZnNldEF0dHJpYnV0ZTp0Ll9vZmZzZXRBdHRyaWJ1dGV9KX07U3IuY3JlYXRlU2hhZG93Vm9sdW1lPWZ1bmN0aW9uKHQsZSxuKXtsZXQgbz10Ll9ncmFudWxhcml0eSxyPXQuX2VsbGlwc29pZCxpPWUobyxyKSxzPW4obyxyKTtyZXR1cm4gbmV3IFNyKHtwb2x5Z29uSGllcmFyY2h5OnQuX3BvbHlnb25IaWVyYXJjaHksZWxsaXBzb2lkOnIsc3RSb3RhdGlvbjp0Ll9zdFJvdGF0aW9uLGdyYW51bGFyaXR5Om8scGVyUG9zaXRpb25IZWlnaHQ6ITEsZXh0cnVkZWRIZWlnaHQ6aSxoZWlnaHQ6cyx2ZXJ0ZXhGb3JtYXQ6cHQuUE9TSVRJT05fT05MWSxzaGFkb3dWb2x1bWU6ITAsYXJjVHlwZTp0Ll9hcmNUeXBlfSl9O09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFNyLnByb3RvdHlwZSx7cmVjdGFuZ2xlOntnZXQ6ZnVuY3Rpb24oKXtpZighbSh0aGlzLl9yZWN0YW5nbGUpKXtsZXQgdD10aGlzLl9wb2x5Z29uSGllcmFyY2h5LnBvc2l0aW9uczt0aGlzLl9yZWN0YW5nbGU9U3IuY29tcHV0ZVJlY3RhbmdsZUZyb21Qb3NpdGlvbnModCx0aGlzLl9lbGxpcHNvaWQsdGhpcy5fYXJjVHlwZSl9cmV0dXJuIHRoaXMuX3JlY3RhbmdsZX19LHRleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHM6e2dldDpmdW5jdGlvbigpe3JldHVybiBtKHRoaXMuX3RleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHMpfHwodGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50cz1RRCh0aGlzKSksdGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50c319fSk7bHk9U3J9KTt2YXIgcHk9e307bGUocHkse2RlZmF1bHQ6KCk9PnRCfSk7ZnVuY3Rpb24gSkQodCxlKXtyZXR1cm4gbShlKSYmKHQ9bHkudW5wYWNrKHQsZSkpLHQuX2VsbGlwc29pZD1ZLmNsb25lKHQuX2VsbGlwc29pZCksbHkuY3JlYXRlR2VvbWV0cnkodCl9dmFyIHRCLGR5PSQoKCk9PntmdCgpOyR0KCk7TEUoKTt0Qj1KRH0pO2Z1bmN0aW9uIGVCKHQsZSxuLG8scil7bGV0IHM9QW8uZnJvbVBvaW50cyhlLHQpLnByb2plY3RQb2ludHNPbnRvUGxhbmUoZSxERSk7UGUuY29tcHV0ZVdpbmRpbmdPcmRlcjJEKHMpPT09UG8uQ0xPQ0tXSVNFJiYocy5yZXZlcnNlKCksZT1lLnNsaWNlKCkucmV2ZXJzZSgpKTtsZXQgdSxjLGw9ZS5sZW5ndGgscD0wO2lmKG8pZm9yKHU9bmV3IEZsb2F0NjRBcnJheShsKjIqMyksYz0wO2M8bDtjKyspe2xldCBfPWVbY10sZz1lWyhjKzEpJWxdO3VbcCsrXT1fLngsdVtwKytdPV8ueSx1W3ArK109Xy56LHVbcCsrXT1nLngsdVtwKytdPWcueSx1W3ArK109Zy56fWVsc2V7bGV0IF89MDtpZihyPT09aGUuR0VPREVTSUMpZm9yKGM9MDtjPGw7YysrKV8rPV9lLnN1YmRpdmlkZUxpbmVDb3VudChlW2NdLGVbKGMrMSklbF0sbik7ZWxzZSBpZihyPT09aGUuUkhVTUIpZm9yKGM9MDtjPGw7YysrKV8rPV9lLnN1YmRpdmlkZVJodW1iTGluZUNvdW50KHQsZVtjXSxlWyhjKzEpJWxdLG4pO2Zvcih1PW5ldyBGbG9hdDY0QXJyYXkoXyozKSxjPTA7YzxsO2MrKyl7bGV0IGc7cj09PWhlLkdFT0RFU0lDP2c9X2Uuc3ViZGl2aWRlTGluZShlW2NdLGVbKGMrMSklbF0sbixEZCk6cj09PWhlLlJIVU1CJiYoZz1fZS5zdWJkaXZpZGVSaHVtYkxpbmUodCxlW2NdLGVbKGMrMSklbF0sbixEZCkpO2xldCBiPWcubGVuZ3RoO2ZvcihsZXQgdz0wO3c8YjsrK3cpdVtwKytdPWdbd119fWw9dS5sZW5ndGgvMztsZXQgZD1sKjIsaD1MdC5jcmVhdGVUeXBlZEFycmF5KGwsZCk7Zm9yKHA9MCxjPTA7YzxsLTE7YysrKWhbcCsrXT1jLGhbcCsrXT1jKzE7cmV0dXJuIGhbcCsrXT1sLTEsaFtwKytdPTAsbmV3IGZvKHtnZW9tZXRyeTpuZXcgVXQoe2F0dHJpYnV0ZXM6bmV3IGllKHtwb3NpdGlvbjpuZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnV9KX0pLGluZGljZXM6aCxwcmltaXRpdmVUeXBlOkJ0LkxJTkVTfSl9KX1mdW5jdGlvbiBuQih0LGUsbixvLHIpe2xldCBzPUFvLmZyb21Qb2ludHMoZSx0KS5wcm9qZWN0UG9pbnRzT250b1BsYW5lKGUsREUpO1BlLmNvbXB1dGVXaW5kaW5nT3JkZXIyRChzKT09PVBvLkNMT0NLV0lTRSYmKHMucmV2ZXJzZSgpLGU9ZS5zbGljZSgpLnJldmVyc2UoKSk7bGV0IHUsYyxsPWUubGVuZ3RoLHA9bmV3IEFycmF5KGwpLGQ9MDtpZihvKWZvcih1PW5ldyBGbG9hdDY0QXJyYXkobCoyKjMqMiksYz0wO2M8bDsrK2Mpe3BbY109ZC8zO2xldCBiPWVbY10sdz1lWyhjKzEpJWxdO3VbZCsrXT1iLngsdVtkKytdPWIueSx1W2QrK109Yi56LHVbZCsrXT13LngsdVtkKytdPXcueSx1W2QrK109dy56fWVsc2V7bGV0IGI9MDtpZihyPT09aGUuR0VPREVTSUMpZm9yKGM9MDtjPGw7YysrKWIrPV9lLnN1YmRpdmlkZUxpbmVDb3VudChlW2NdLGVbKGMrMSklbF0sbik7ZWxzZSBpZihyPT09aGUuUkhVTUIpZm9yKGM9MDtjPGw7YysrKWIrPV9lLnN1YmRpdmlkZVJodW1iTGluZUNvdW50KHQsZVtjXSxlWyhjKzEpJWxdLG4pO2Zvcih1PW5ldyBGbG9hdDY0QXJyYXkoYiozKjIpLGM9MDtjPGw7KytjKXtwW2NdPWQvMztsZXQgdztyPT09aGUuR0VPREVTSUM/dz1fZS5zdWJkaXZpZGVMaW5lKGVbY10sZVsoYysxKSVsXSxuLERkKTpyPT09aGUuUkhVTUImJih3PV9lLnN1YmRpdmlkZVJodW1iTGluZSh0LGVbY10sZVsoYysxKSVsXSxuLERkKSk7bGV0IE89dy5sZW5ndGg7Zm9yKGxldCBFPTA7RTxPOysrRSl1W2QrK109d1tFXX19bD11Lmxlbmd0aC82O2xldCBoPXAubGVuZ3RoLF89KGwqMitoKSoyLGc9THQuY3JlYXRlVHlwZWRBcnJheShsK2gsXyk7Zm9yKGQ9MCxjPTA7YzxsOysrYylnW2QrK109YyxnW2QrK109KGMrMSklbCxnW2QrK109YytsLGdbZCsrXT0oYysxKSVsK2w7Zm9yKGM9MDtjPGg7YysrKXtsZXQgYj1wW2NdO2dbZCsrXT1iLGdbZCsrXT1iK2x9cmV0dXJuIG5ldyBmbyh7Z2VvbWV0cnk6bmV3IFV0KHthdHRyaWJ1dGVzOm5ldyBpZSh7cG9zaXRpb246bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczp1fSl9KSxpbmRpY2VzOmcscHJpbWl0aXZlVHlwZTpCdC5MSU5FU30pfSl9ZnVuY3Rpb24gYmModCl7aWYoeS50eXBlT2Yub2JqZWN0KCJvcHRpb25zIix0KSx5LnR5cGVPZi5vYmplY3QoIm9wdGlvbnMucG9seWdvbkhpZXJhcmNoeSIsdC5wb2x5Z29uSGllcmFyY2h5KSx0LnBlclBvc2l0aW9uSGVpZ2h0JiZtKHQuaGVpZ2h0KSl0aHJvdyBuZXcgRCgiQ2Fubm90IHVzZSBib3RoIG9wdGlvbnMucGVyUG9zaXRpb25IZWlnaHQgYW5kIG9wdGlvbnMuaGVpZ2h0Iik7aWYobSh0LmFyY1R5cGUpJiZ0LmFyY1R5cGUhPT1oZS5HRU9ERVNJQyYmdC5hcmNUeXBlIT09aGUuUkhVTUIpdGhyb3cgbmV3IEQoIkludmFsaWQgYXJjVHlwZS4gVmFsaWQgb3B0aW9ucyBhcmUgQXJjVHlwZS5HRU9ERVNJQyBhbmQgQXJjVHlwZS5SSFVNQi4iKTtsZXQgZT10LnBvbHlnb25IaWVyYXJjaHksbj10LmVsbGlwc29pZD8/WS5kZWZhdWx0LG89dC5ncmFudWxhcml0eT8/UC5SQURJQU5TX1BFUl9ERUdSRUUscj10LnBlclBvc2l0aW9uSGVpZ2h0Pz8hMSxpPXImJm0odC5leHRydWRlZEhlaWdodCkscz10LmFyY1R5cGU/P2hlLkdFT0RFU0lDLGY9dC5oZWlnaHQ/PzAsdT10LmV4dHJ1ZGVkSGVpZ2h0Pz9mO2lmKCFpKXtsZXQgYz1NYXRoLm1heChmLHUpO3U9TWF0aC5taW4oZix1KSxmPWN9dGhpcy5fZWxsaXBzb2lkPVkuY2xvbmUobiksdGhpcy5fZ3JhbnVsYXJpdHk9byx0aGlzLl9oZWlnaHQ9Zix0aGlzLl9leHRydWRlZEhlaWdodD11LHRoaXMuX2FyY1R5cGU9cyx0aGlzLl9wb2x5Z29uSGllcmFyY2h5PWUsdGhpcy5fcGVyUG9zaXRpb25IZWlnaHQ9cix0aGlzLl9wZXJQb3NpdGlvbkhlaWdodEV4dHJ1ZGU9aSx0aGlzLl9vZmZzZXRBdHRyaWJ1dGU9dC5vZmZzZXRBdHRyaWJ1dGUsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlUG9seWdvbk91dGxpbmVHZW9tZXRyeSIsdGhpcy5wYWNrZWRMZW5ndGg9X2UuY29tcHV0ZUhpZXJhcmNoeVBhY2tlZExlbmd0aChlLGEpK1kucGFja2VkTGVuZ3RoKzh9dmFyIERFLERkLG9CLHJCLG15LEJFPSQoKCk9Pnt1YygpO3ZlKCk7RHQoKTtXdCgpO0RlKCk7eWUoKTtmdCgpO0h0KCk7JHQoKTtwYSgpO1llKCk7JGUoKTthbigpO2NjKCk7RG8oKTtjaSgpO1plKCk7S3QoKTtEZigpO0tyKCk7dG4oKTtwYygpO0RFPVtdLERkPVtdO2JjLnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzAsbj1fZS5wYWNrUG9seWdvbkhpZXJhcmNoeSh0Ll9wb2x5Z29uSGllcmFyY2h5LGUsbixhKSxZLnBhY2sodC5fZWxsaXBzb2lkLGUsbiksbis9WS5wYWNrZWRMZW5ndGgsZVtuKytdPXQuX2hlaWdodCxlW24rK109dC5fZXh0cnVkZWRIZWlnaHQsZVtuKytdPXQuX2dyYW51bGFyaXR5LGVbbisrXT10Ll9wZXJQb3NpdGlvbkhlaWdodEV4dHJ1ZGU/MTowLGVbbisrXT10Ll9wZXJQb3NpdGlvbkhlaWdodD8xOjAsZVtuKytdPXQuX2FyY1R5cGUsZVtuKytdPXQuX29mZnNldEF0dHJpYnV0ZT8/LTEsZVtuXT10LnBhY2tlZExlbmd0aCxlfTtvQj1ZLmNsb25lKFkuVU5JVF9TUEhFUkUpLHJCPXtwb2x5Z29uSGllcmFyY2h5Ont9fTtiYy51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe3kuZGVmaW5lZCgiYXJyYXkiLHQpLGU9ZT8/MDtsZXQgbz1fZS51bnBhY2tQb2x5Z29uSGllcmFyY2h5KHQsZSxhKTtlPW8uc3RhcnRpbmdJbmRleCxkZWxldGUgby5zdGFydGluZ0luZGV4O2xldCByPVkudW5wYWNrKHQsZSxvQik7ZSs9WS5wYWNrZWRMZW5ndGg7bGV0IGk9dFtlKytdLHM9dFtlKytdLGY9dFtlKytdLHU9dFtlKytdPT09MSxjPXRbZSsrXT09PTEsbD10W2UrK10scD10W2UrK10sZD10W2VdO3JldHVybiBtKG4pfHwobj1uZXcgYmMockIpKSxuLl9wb2x5Z29uSGllcmFyY2h5PW8sbi5fZWxsaXBzb2lkPVkuY2xvbmUocixuLl9lbGxpcHNvaWQpLG4uX2hlaWdodD1pLG4uX2V4dHJ1ZGVkSGVpZ2h0PXMsbi5fZ3JhbnVsYXJpdHk9ZixuLl9wZXJQb3NpdGlvbkhlaWdodD1jLG4uX3BlclBvc2l0aW9uSGVpZ2h0RXh0cnVkZT11LG4uX2FyY1R5cGU9bCxuLl9vZmZzZXRBdHRyaWJ1dGU9cD09PS0xP3ZvaWQgMDpwLG4ucGFja2VkTGVuZ3RoPWQsbn07YmMuZnJvbVBvc2l0aW9ucz1mdW5jdGlvbih0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVCx5LmRlZmluZWQoIm9wdGlvbnMucG9zaXRpb25zIix0LnBvc2l0aW9ucyk7bGV0IGU9e3BvbHlnb25IaWVyYXJjaHk6e3Bvc2l0aW9uczp0LnBvc2l0aW9uc30saGVpZ2h0OnQuaGVpZ2h0LGV4dHJ1ZGVkSGVpZ2h0OnQuZXh0cnVkZWRIZWlnaHQsZWxsaXBzb2lkOnQuZWxsaXBzb2lkLGdyYW51bGFyaXR5OnQuZ3JhbnVsYXJpdHkscGVyUG9zaXRpb25IZWlnaHQ6dC5wZXJQb3NpdGlvbkhlaWdodCxhcmNUeXBlOnQuYXJjVHlwZSxvZmZzZXRBdHRyaWJ1dGU6dC5vZmZzZXRBdHRyaWJ1dGV9O3JldHVybiBuZXcgYmMoZSl9O2JjLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX2VsbGlwc29pZCxuPXQuX2dyYW51bGFyaXR5LG89dC5fcG9seWdvbkhpZXJhcmNoeSxyPXQuX3BlclBvc2l0aW9uSGVpZ2h0LGk9dC5fYXJjVHlwZSxzPV9lLnBvbHlnb25PdXRsaW5lc0Zyb21IaWVyYXJjaHkobywhcixlKTtpZihzLmxlbmd0aD09PTApcmV0dXJuO2xldCBmLHU9W10sYz1QLmNob3JkTGVuZ3RoKG4sZS5tYXhpbXVtUmFkaXVzKSxsPXQuX2hlaWdodCxwPXQuX2V4dHJ1ZGVkSGVpZ2h0LGQ9dC5fcGVyUG9zaXRpb25IZWlnaHRFeHRydWRlfHwhUC5lcXVhbHNFcHNpbG9uKGwscCwwLFAuRVBTSUxPTjIpLGgsXztpZihkKWZvcihfPTA7XzxzLmxlbmd0aDtfKyspe2lmKGY9bkIoZSxzW19dLGMscixpKSxmLmdlb21ldHJ5PV9lLnNjYWxlVG9HZW9kZXRpY0hlaWdodEV4dHJ1ZGVkKGYuZ2VvbWV0cnksbCxwLGUsciksbSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgdz1mLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLmxlbmd0aC8zLE89bmV3IFVpbnQ4QXJyYXkodyk7dC5fb2Zmc2V0QXR0cmlidXRlPT09YWUuVE9QP089Ty5maWxsKDEsMCx3LzIpOihoPXQuX29mZnNldEF0dHJpYnV0ZT09PWFlLk5PTkU/MDoxLE89Ty5maWxsKGgpKSxmLmdlb21ldHJ5LmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6T30pfXUucHVzaChmKX1lbHNlIGZvcihfPTA7XzxzLmxlbmd0aDtfKyspe2lmKGY9ZUIoZSxzW19dLGMscixpKSxmLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPVBlLnNjYWxlVG9HZW9kZXRpY0hlaWdodChmLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLGwsZSwhciksbSh0Ll9vZmZzZXRBdHRyaWJ1dGUpKXtsZXQgdz1mLmdlb21ldHJ5LmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLmxlbmd0aDtoPXQuX29mZnNldEF0dHJpYnV0ZT09PWFlLk5PTkU/MDoxO2xldCBPPW5ldyBVaW50OEFycmF5KHcvMykuZmlsbChoKTtmLmdlb21ldHJ5LmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6T30pfXUucHVzaChmKX1sZXQgZz1HZS5jb21iaW5lSW5zdGFuY2VzKHUpWzBdLGI9QXQuZnJvbVZlcnRpY2VzKGcuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMpO3JldHVybiBuZXcgVXQoe2F0dHJpYnV0ZXM6Zy5hdHRyaWJ1dGVzLGluZGljZXM6Zy5pbmRpY2VzLHByaW1pdGl2ZVR5cGU6Zy5wcmltaXRpdmVUeXBlLGJvdW5kaW5nU3BoZXJlOmIsb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtteT1iY30pO3ZhciBoeT17fTtsZShoeSx7ZGVmYXVsdDooKT0+c0J9KTtmdW5jdGlvbiBpQih0LGUpe3JldHVybiBtKGUpJiYodD1teS51bnBhY2sodCxlKSksdC5fZWxsaXBzb2lkPVkuY2xvbmUodC5fZWxsaXBzb2lkKSxteS5jcmVhdGVHZW9tZXRyeSh0KX12YXIgc0IsX3k9JCgoKT0+e2Z0KCk7JHQoKTtCRSgpO3NCPWlCfSk7ZnVuY3Rpb24geXkodCxlLG4pe3JldHVybiBuPDAmJihuKz0xKSxuPjEmJihuLT0xKSxuKjY8MT90KyhlLXQpKjYqbjpuKjI8MT9lOm4qMzwyP3QrKGUtdCkqKDIvMy1uKSo2OnR9ZnVuY3Rpb24gSCh0LGUsbixvKXt0aGlzLnJlZD10Pz8xLHRoaXMuZ3JlZW49ZT8/MSx0aGlzLmJsdWU9bj8/MSx0aGlzLmFscGhhPW8/PzF9dmFyIGd5LEF5LEtpLGNCLGFCLGZCLHVCLG5lLE1hPSQoKCk9PntXdCgpO3llKCk7ZnQoKTt1aCgpO0t0KCk7SC5mcm9tQ2FydGVzaWFuND1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImNhcnRlc2lhbiIsdCksbShlKT8oZS5yZWQ9dC54LGUuZ3JlZW49dC55LGUuYmx1ZT10LnosZS5hbHBoYT10LncsZSk6bmV3IEgodC54LHQueSx0LnosdC53KX07SC5mcm9tQnl0ZXM9ZnVuY3Rpb24odCxlLG4sbyxyKXtyZXR1cm4gdD1ILmJ5dGVUb0Zsb2F0KHQ/PzI1NSksZT1ILmJ5dGVUb0Zsb2F0KGU/PzI1NSksbj1ILmJ5dGVUb0Zsb2F0KG4/PzI1NSksbz1ILmJ5dGVUb0Zsb2F0KG8/PzI1NSksbShyKT8oci5yZWQ9dCxyLmdyZWVuPWUsci5ibHVlPW4sci5hbHBoYT1vLHIpOm5ldyBIKHQsZSxuLG8pfTtILmZyb21BbHBoYT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY29sb3IiLHQpLHkudHlwZU9mLm51bWJlcigiYWxwaGEiLGUpLG0obik/KG4ucmVkPXQucmVkLG4uZ3JlZW49dC5ncmVlbixuLmJsdWU9dC5ibHVlLG4uYWxwaGE9ZSxuKTpuZXcgSCh0LnJlZCx0LmdyZWVuLHQuYmx1ZSxlKX07JHMuc3VwcG9ydHNUeXBlZEFycmF5cygpJiYoZ3k9bmV3IEFycmF5QnVmZmVyKDQpLEF5PW5ldyBVaW50MzJBcnJheShneSksS2k9bmV3IFVpbnQ4QXJyYXkoZ3kpKTtILmZyb21SZ2JhPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIEF5WzBdPXQsSC5mcm9tQnl0ZXMoS2lbMF0sS2lbMV0sS2lbMl0sS2lbM10sZSl9O0guZnJvbUhzbD1mdW5jdGlvbih0LGUsbixvLHIpe3Q9KHQ/PzApJTEsZT1lPz8wLG49bj8/MCxvPW8/PzE7bGV0IGk9bixzPW4sZj1uO2lmKGUhPT0wKXtsZXQgdTtuPC41P3U9biooMStlKTp1PW4rZS1uKmU7bGV0IGM9MipuLXU7aT15eShjLHUsdCsxLzMpLHM9eXkoYyx1LHQpLGY9eXkoYyx1LHQtMS8zKX1yZXR1cm4gbShyKT8oci5yZWQ9aSxyLmdyZWVuPXMsci5ibHVlPWYsci5hbHBoYT1vLHIpOm5ldyBIKGkscyxmLG8pfTtILmZyb21SYW5kb209ZnVuY3Rpb24odCxlKXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgbj10LnJlZDtpZighbShuKSl7bGV0IHM9dC5taW5pbXVtUmVkPz8wLGY9dC5tYXhpbXVtUmVkPz8xO3kudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJtaW5pbXVtUmVkIixzLGYpLG49cytQLm5leHRSYW5kb21OdW1iZXIoKSooZi1zKX1sZXQgbz10LmdyZWVuO2lmKCFtKG8pKXtsZXQgcz10Lm1pbmltdW1HcmVlbj8/MCxmPXQubWF4aW11bUdyZWVuPz8xO3kudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJtaW5pbXVtR3JlZW4iLHMsZiksbz1zK1AubmV4dFJhbmRvbU51bWJlcigpKihmLXMpfWxldCByPXQuYmx1ZTtpZighbShyKSl7bGV0IHM9dC5taW5pbXVtQmx1ZT8/MCxmPXQubWF4aW11bUJsdWU/PzE7eS50eXBlT2YubnVtYmVyLmxlc3NUaGFuT3JFcXVhbHMoIm1pbmltdW1CbHVlIixzLGYpLHI9cytQLm5leHRSYW5kb21OdW1iZXIoKSooZi1zKX1sZXQgaT10LmFscGhhO2lmKCFtKGkpKXtsZXQgcz10Lm1pbmltdW1BbHBoYT8/MCxmPXQubWF4aW11bUFscGhhPz8xO3kudHlwZU9mLm51bWJlci5sZXNzVGhhbk9yRXF1YWxzKCJtaW5pbXVtQWxwaGEiLHMsZiksaT1zK1AubmV4dFJhbmRvbU51bWJlcigpKihmLXMpfXJldHVybiBtKGUpPyhlLnJlZD1uLGUuZ3JlZW49byxlLmJsdWU9cixlLmFscGhhPWksZSk6bmV3IEgobixvLHIsaSl9O2NCPS9eIyhbMC05YS1mXSkoWzAtOWEtZl0pKFswLTlhLWZdKShbMC05YS1mXSk/JC9pLGFCPS9eIyhbMC05YS1mXXsyfSkoWzAtOWEtZl17Mn0pKFswLTlhLWZdezJ9KShbMC05YS1mXXsyfSk/JC9pLGZCPS9ecmdiYT9ccypcKFxzKihbMC05Ll0rJT8pXHMqWyxcc10rXHMqKFswLTkuXSslPylccypbLFxzXStccyooWzAtOS5dKyU/KSg/OlxzKlssXHMvXStccyooWzAtOS5dKykpP1xzKlwpJC9pLHVCPS9eaHNsYT9ccypcKFxzKihbMC05Ll0rKVxzKlssXHNdK1xzKihbMC05Ll0rJSlccypbLFxzXStccyooWzAtOS5dKyUpKD86XHMqWyxccy9dK1xzKihbMC05Ll0rKSk/XHMqXCkkL2k7SC5mcm9tQ3NzQ29sb3JTdHJpbmc9ZnVuY3Rpb24odCxlKXt5LnR5cGVPZi5zdHJpbmcoImNvbG9yIix0KSxtKGUpfHwoZT1uZXcgSCksdD10LnRyaW0oKTtsZXQgbj1IW3QudG9VcHBlckNhc2UoKV07aWYobShuKSlyZXR1cm4gSC5jbG9uZShuLGUpLGU7bGV0IG89Y0IuZXhlYyh0KTtyZXR1cm4gbyE9PW51bGw/KGUucmVkPXBhcnNlSW50KG9bMV0sMTYpLzE1LGUuZ3JlZW49cGFyc2VJbnQob1syXSwxNikvMTUsZS5ibHVlPXBhcnNlSW50KG9bM10sMTYpLzE1LGUuYWxwaGE9cGFyc2VJbnQob1s0XT8/ImYiLDE2KS8xNSxlKToobz1hQi5leGVjKHQpLG8hPT1udWxsPyhlLnJlZD1wYXJzZUludChvWzFdLDE2KS8yNTUsZS5ncmVlbj1wYXJzZUludChvWzJdLDE2KS8yNTUsZS5ibHVlPXBhcnNlSW50KG9bM10sMTYpLzI1NSxlLmFscGhhPXBhcnNlSW50KG9bNF0/PyJmZiIsMTYpLzI1NSxlKToobz1mQi5leGVjKHQpLG8hPT1udWxsPyhlLnJlZD1wYXJzZUZsb2F0KG9bMV0pLyhvWzFdLnN1YnN0cigtMSk9PT0iJSI/MTAwOjI1NSksZS5ncmVlbj1wYXJzZUZsb2F0KG9bMl0pLyhvWzJdLnN1YnN0cigtMSk9PT0iJSI/MTAwOjI1NSksZS5ibHVlPXBhcnNlRmxvYXQob1szXSkvKG9bM10uc3Vic3RyKC0xKT09PSIlIj8xMDA6MjU1KSxlLmFscGhhPXBhcnNlRmxvYXQob1s0XT8/IjEuMCIpLGUpOihvPXVCLmV4ZWModCksbyE9PW51bGw/SC5mcm9tSHNsKHBhcnNlRmxvYXQob1sxXSkvMzYwLHBhcnNlRmxvYXQob1syXSkvMTAwLHBhcnNlRmxvYXQob1szXSkvMTAwLHBhcnNlRmxvYXQob1s0XT8/IjEuMCIpLGUpOihlPXZvaWQgMCxlKSkpKX07SC5wYWNrZWRMZW5ndGg9NDtILnBhY2s9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInZhbHVlIix0KSx5LmRlZmluZWQoImFycmF5IixlKSxuPW4/PzAsZVtuKytdPXQucmVkLGVbbisrXT10LmdyZWVuLGVbbisrXT10LmJsdWUsZVtuXT10LmFscGhhLGV9O0gudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS5kZWZpbmVkKCJhcnJheSIsdCksZT1lPz8wLG0obil8fChuPW5ldyBIKSxuLnJlZD10W2UrK10sbi5ncmVlbj10W2UrK10sbi5ibHVlPXRbZSsrXSxuLmFscGhhPXRbZV0sbn07SC5ieXRlVG9GbG9hdD1mdW5jdGlvbih0KXtyZXR1cm4gdC8yNTV9O0guZmxvYXRUb0J5dGU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT0xPzI1NTp0KjI1NnwwfTtILmNsb25lPWZ1bmN0aW9uKHQsZSl7aWYobSh0KSlyZXR1cm4gbShlKT8oZS5yZWQ9dC5yZWQsZS5ncmVlbj10LmdyZWVuLGUuYmx1ZT10LmJsdWUsZS5hbHBoYT10LmFscGhhLGUpOm5ldyBIKHQucmVkLHQuZ3JlZW4sdC5ibHVlLHQuYWxwaGEpfTtILmVxdWFscz1mdW5jdGlvbih0LGUpe3JldHVybiB0PT09ZXx8bSh0KSYmbShlKSYmdC5yZWQ9PT1lLnJlZCYmdC5ncmVlbj09PWUuZ3JlZW4mJnQuYmx1ZT09PWUuYmx1ZSYmdC5hbHBoYT09PWUuYWxwaGF9O0guZXF1YWxzQXJyYXk9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0LnJlZD09PWVbbl0mJnQuZ3JlZW49PT1lW24rMV0mJnQuYmx1ZT09PWVbbisyXSYmdC5hbHBoYT09PWVbbiszXX07SC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24odCl7cmV0dXJuIEguY2xvbmUodGhpcyx0KX07SC5wcm90b3R5cGUuZXF1YWxzPWZ1bmN0aW9uKHQpe3JldHVybiBILmVxdWFscyh0aGlzLHQpfTtILnByb3RvdHlwZS5lcXVhbHNFcHNpbG9uPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXM9PT10fHxtKHQpJiZNYXRoLmFicyh0aGlzLnJlZC10LnJlZCk8PWUmJk1hdGguYWJzKHRoaXMuZ3JlZW4tdC5ncmVlbik8PWUmJk1hdGguYWJzKHRoaXMuYmx1ZS10LmJsdWUpPD1lJiZNYXRoLmFicyh0aGlzLmFscGhhLXQuYWxwaGEpPD1lfTtILnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybmAoJHt0aGlzLnJlZH0sICR7dGhpcy5ncmVlbn0sICR7dGhpcy5ibHVlfSwgJHt0aGlzLmFscGhhfSlgfTtILnByb3RvdHlwZS50b0Nzc0NvbG9yU3RyaW5nPWZ1bmN0aW9uKCl7bGV0IHQ9SC5mbG9hdFRvQnl0ZSh0aGlzLnJlZCksZT1ILmZsb2F0VG9CeXRlKHRoaXMuZ3JlZW4pLG49SC5mbG9hdFRvQnl0ZSh0aGlzLmJsdWUpO3JldHVybiB0aGlzLmFscGhhPT09MT9gcmdiKCR7dH0sJHtlfSwke259KWA6YHJnYmEoJHt0fSwke2V9LCR7bn0sJHt0aGlzLmFscGhhfSlgfTtILnByb3RvdHlwZS50b0Nzc0hleFN0cmluZz1mdW5jdGlvbigpe2xldCB0PUguZmxvYXRUb0J5dGUodGhpcy5yZWQpLnRvU3RyaW5nKDE2KTt0Lmxlbmd0aDwyJiYodD1gMCR7dH1gKTtsZXQgZT1ILmZsb2F0VG9CeXRlKHRoaXMuZ3JlZW4pLnRvU3RyaW5nKDE2KTtlLmxlbmd0aDwyJiYoZT1gMCR7ZX1gKTtsZXQgbj1ILmZsb2F0VG9CeXRlKHRoaXMuYmx1ZSkudG9TdHJpbmcoMTYpO2lmKG4ubGVuZ3RoPDImJihuPWAwJHtufWApLHRoaXMuYWxwaGE8MSl7bGV0IG89SC5mbG9hdFRvQnl0ZSh0aGlzLmFscGhhKS50b1N0cmluZygxNik7cmV0dXJuIG8ubGVuZ3RoPDImJihvPWAwJHtvfWApLGAjJHt0fSR7ZX0ke259JHtvfWB9cmV0dXJuYCMke3R9JHtlfSR7bn1gfTtILnByb3RvdHlwZS50b0J5dGVzPWZ1bmN0aW9uKHQpe2xldCBlPUguZmxvYXRUb0J5dGUodGhpcy5yZWQpLG49SC5mbG9hdFRvQnl0ZSh0aGlzLmdyZWVuKSxvPUguZmxvYXRUb0J5dGUodGhpcy5ibHVlKSxyPUguZmxvYXRUb0J5dGUodGhpcy5hbHBoYSk7cmV0dXJuIG0odCk/KHRbMF09ZSx0WzFdPW4sdFsyXT1vLHRbM109cix0KTpbZSxuLG8scl19O0gucHJvdG90eXBlLnRvUmdiYT1mdW5jdGlvbigpe3JldHVybiBLaVswXT1ILmZsb2F0VG9CeXRlKHRoaXMucmVkKSxLaVsxXT1ILmZsb2F0VG9CeXRlKHRoaXMuZ3JlZW4pLEtpWzJdPUguZmxvYXRUb0J5dGUodGhpcy5ibHVlKSxLaVszXT1ILmZsb2F0VG9CeXRlKHRoaXMuYWxwaGEpLEF5WzBdfTtILnByb3RvdHlwZS5icmlnaHRlbj1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5udW1iZXIoIm1hZ25pdHVkZSIsdCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIm1hZ25pdHVkZSIsdCwwKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksdD0xLXQsZS5yZWQ9MS0oMS10aGlzLnJlZCkqdCxlLmdyZWVuPTEtKDEtdGhpcy5ncmVlbikqdCxlLmJsdWU9MS0oMS10aGlzLmJsdWUpKnQsZS5hbHBoYT10aGlzLmFscGhhLGV9O0gucHJvdG90eXBlLmRhcmtlbj1mdW5jdGlvbih0LGUpe3JldHVybiB5LnR5cGVPZi5udW1iZXIoIm1hZ25pdHVkZSIsdCkseS50eXBlT2YubnVtYmVyLmdyZWF0ZXJUaGFuT3JFcXVhbHMoIm1hZ25pdHVkZSIsdCwwKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsZSksdD0xLXQsZS5yZWQ9dGhpcy5yZWQqdCxlLmdyZWVuPXRoaXMuZ3JlZW4qdCxlLmJsdWU9dGhpcy5ibHVlKnQsZS5hbHBoYT10aGlzLmFscGhhLGV9O0gucHJvdG90eXBlLndpdGhBbHBoYT1mdW5jdGlvbih0LGUpe3JldHVybiBILmZyb21BbHBoYSh0aGlzLHQsZSl9O0guYWRkPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksbi5yZWQ9dC5yZWQrZS5yZWQsbi5ncmVlbj10LmdyZWVuK2UuZ3JlZW4sbi5ibHVlPXQuYmx1ZStlLmJsdWUsbi5hbHBoYT10LmFscGhhK2UuYWxwaGEsbn07SC5zdWJ0cmFjdD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ucmVkPXQucmVkLWUucmVkLG4uZ3JlZW49dC5ncmVlbi1lLmdyZWVuLG4uYmx1ZT10LmJsdWUtZS5ibHVlLG4uYWxwaGE9dC5hbHBoYS1lLmFscGhhLG59O0gubXVsdGlwbHk9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoImxlZnQiLHQpLHkudHlwZU9mLm9iamVjdCgicmlnaHQiLGUpLHkudHlwZU9mLm9iamVjdCgicmVzdWx0IixuKSxuLnJlZD10LnJlZCplLnJlZCxuLmdyZWVuPXQuZ3JlZW4qZS5ncmVlbixuLmJsdWU9dC5ibHVlKmUuYmx1ZSxuLmFscGhhPXQuYWxwaGEqZS5hbHBoYSxufTtILmRpdmlkZT1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgibGVmdCIsdCkseS50eXBlT2Yub2JqZWN0KCJyaWdodCIsZSkseS50eXBlT2Yub2JqZWN0KCJyZXN1bHQiLG4pLG4ucmVkPXQucmVkL2UucmVkLG4uZ3JlZW49dC5ncmVlbi9lLmdyZWVuLG4uYmx1ZT10LmJsdWUvZS5ibHVlLG4uYWxwaGE9dC5hbHBoYS9lLmFscGhhLG59O0gubW9kPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJsZWZ0Iix0KSx5LnR5cGVPZi5vYmplY3QoInJpZ2h0IixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksbi5yZWQ9dC5yZWQlZS5yZWQsbi5ncmVlbj10LmdyZWVuJWUuZ3JlZW4sbi5ibHVlPXQuYmx1ZSVlLmJsdWUsbi5hbHBoYT10LmFscGhhJWUuYWxwaGEsbn07SC5sZXJwPWZ1bmN0aW9uKHQsZSxuLG8pe3JldHVybiB5LnR5cGVPZi5vYmplY3QoInN0YXJ0Iix0KSx5LnR5cGVPZi5vYmplY3QoImVuZCIsZSkseS50eXBlT2YubnVtYmVyKCJ0IixuKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbyksby5yZWQ9UC5sZXJwKHQucmVkLGUucmVkLG4pLG8uZ3JlZW49UC5sZXJwKHQuZ3JlZW4sZS5ncmVlbixuKSxvLmJsdWU9UC5sZXJwKHQuYmx1ZSxlLmJsdWUsbiksby5hbHBoYT1QLmxlcnAodC5hbHBoYSxlLmFscGhhLG4pLG99O0gubXVsdGlwbHlCeVNjYWxhcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY29sb3IiLHQpLHkudHlwZU9mLm51bWJlcigic2NhbGFyIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksbi5yZWQ9dC5yZWQqZSxuLmdyZWVuPXQuZ3JlZW4qZSxuLmJsdWU9dC5ibHVlKmUsbi5hbHBoYT10LmFscGhhKmUsbn07SC5kaXZpZGVCeVNjYWxhcj1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgiY29sb3IiLHQpLHkudHlwZU9mLm51bWJlcigic2NhbGFyIixlKSx5LnR5cGVPZi5vYmplY3QoInJlc3VsdCIsbiksbi5yZWQ9dC5yZWQvZSxuLmdyZWVuPXQuZ3JlZW4vZSxuLmJsdWU9dC5ibHVlL2Usbi5hbHBoYT10LmFscGhhL2Usbn07SC5BTElDRUJMVUU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0YwRjhGRiIpKTtILkFOVElRVUVXSElURT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkFFQkQ3IikpO0guQVFVQT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDBGRkZGIikpO0guQVFVQU1BUklORT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjN0ZGRkQ0IikpO0guQVpVUkU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0YwRkZGRiIpKTtILkJFSUdFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGNUY1REMiKSk7SC5CSVNRVUU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGRTRDNCIpKTtILkJMQUNLPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMwMDAwMDAiKSk7SC5CTEFOQ0hFREFMTU9ORD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkZFQkNEIikpO0guQkxVRT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDAwMEZGIikpO0guQkxVRVZJT0xFVD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjOEEyQkUyIikpO0guQlJPV049T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0E1MkEyQSIpKTtILkJVUkxZV09PRD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjREVCODg3IikpO0guQ0FERVRCTFVFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM1RjlFQTAiKSk7SC5DSEFSVFJFVVNFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM3RkZGMDAiKSk7SC5DSE9DT0xBVEU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0QyNjkxRSIpKTtILkNPUkFMPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRjdGNTAiKSk7SC5DT1JORkxPV0VSQkxVRT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjNjQ5NUVEIikpO0guQ09STlNJTEs9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGRjhEQyIpKTtILkNSSU1TT049T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0RDMTQzQyIpKTtILkNZQU49T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzAwRkZGRiIpKTtILkRBUktCTFVFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMwMDAwOEIiKSk7SC5EQVJLQ1lBTj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDA4QjhCIikpO0guREFSS0dPTERFTlJPRD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjQjg4NjBCIikpO0guREFSS0dSQVk9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0E5QTlBOSIpKTtILkRBUktHUkVFTj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDA2NDAwIikpO0guREFSS0dSRVk9SC5EQVJLR1JBWTtILkRBUktLSEFLST1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjQkRCNzZCIikpO0guREFSS01BR0VOVEE9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzhCMDA4QiIpKTtILkRBUktPTElWRUdSRUVOPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM1NTZCMkYiKSk7SC5EQVJLT1JBTkdFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRjhDMDAiKSk7SC5EQVJLT1JDSElEPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM5OTMyQ0MiKSk7SC5EQVJLUkVEPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM4QjAwMDAiKSk7SC5EQVJLU0FMTU9OPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNFOTk2N0EiKSk7SC5EQVJLU0VBR1JFRU49T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzhGQkM4RiIpKTtILkRBUktTTEFURUJMVUU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzQ4M0Q4QiIpKTtILkRBUktTTEFURUdSQVk9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzJGNEY0RiIpKTtILkRBUktTTEFURUdSRVk9SC5EQVJLU0xBVEVHUkFZO0guREFSS1RVUlFVT0lTRT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDBDRUQxIikpO0guREFSS1ZJT0xFVD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjOTQwMEQzIikpO0guREVFUFBJTks9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGMTQ5MyIpKTtILkRFRVBTS1lCTFVFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMwMEJGRkYiKSk7SC5ESU1HUkFZPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM2OTY5NjkiKSk7SC5ESU1HUkVZPUguRElNR1JBWTtILkRPREdFUkJMVUU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzFFOTBGRiIpKTtILkZJUkVCUklDSz1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjQjIyMjIyIikpO0guRkxPUkFMV0hJVEU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGRkFGMCIpKTtILkZPUkVTVEdSRUVOPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMyMjhCMjIiKSk7SC5GVUNIU0lBPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRjAwRkYiKSk7SC5HQUlOU0JPUk89T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0RDRENEQyIpKTtILkdIT1NUV0hJVEU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0Y4RjhGRiIpKTtILkdPTEQ9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGRDcwMCIpKTtILkdPTERFTlJPRD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjREFBNTIwIikpO0guR1JBWT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjODA4MDgwIikpO0guR1JFRU49T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzAwODAwMCIpKTtILkdSRUVOWUVMTE9XPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNBREZGMkYiKSk7SC5HUkVZPUguR1JBWTtILkhPTkVZREVXPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGMEZGRjAiKSk7SC5IT1RQSU5LPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRjY5QjQiKSk7SC5JTkRJQU5SRUQ9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0NENUM1QyIpKTtILklORElHTz1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjNEIwMDgyIikpO0guSVZPUlk9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGRkZGMCIpKTtILktIQUtJPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGMEU2OEMiKSk7SC5MQVZFTkRFUj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRTZFNkZBIikpO0guTEFWRU5EQVJfQkxVU0g9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGRjBGNSIpKTtILkxBV05HUkVFTj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjN0NGQzAwIikpO0guTEVNT05DSElGRk9OPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkZBQ0QiKSk7SC5MSUdIVEJMVUU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0FERDhFNiIpKTtILkxJR0hUQ09SQUw9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0YwODA4MCIpKTtILkxJR0hUQ1lBTj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRTBGRkZGIikpO0guTElHSFRHT0xERU5ST0RZRUxMT1c9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZBRkFEMiIpKTtILkxJR0hUR1JBWT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRDNEM0QzIikpO0guTElHSFRHUkVFTj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjOTBFRTkwIikpO0guTElHSFRHUkVZPUguTElHSFRHUkFZO0guTElHSFRQSU5LPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkI2QzEiKSk7SC5MSUdIVFNFQUdSRUVOPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMyMEIyQUEiKSk7SC5MSUdIVFNLWUJMVUU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzg3Q0VGQSIpKTtILkxJR0hUU0xBVEVHUkFZPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM3Nzg4OTkiKSk7SC5MSUdIVFNMQVRFR1JFWT1ILkxJR0hUU0xBVEVHUkFZO0guTElHSFRTVEVFTEJMVUU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0IwQzRERSIpKTtILkxJR0hUWUVMTE9XPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkZGRTAiKSk7SC5MSU1FPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMwMEZGMDAiKSk7SC5MSU1FR1JFRU49T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzMyQ0QzMiIpKTtILkxJTkVOPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGQUYwRTYiKSk7SC5NQUdFTlRBPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRjAwRkYiKSk7SC5NQVJPT049T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzgwMDAwMCIpKTtILk1FRElVTUFRVUFNQVJJTkU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzY2Q0RBQSIpKTtILk1FRElVTUJMVUU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzAwMDBDRCIpKTtILk1FRElVTU9SQ0hJRD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjQkE1NUQzIikpO0guTUVESVVNUFVSUExFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM5MzcwREIiKSk7SC5NRURJVU1TRUFHUkVFTj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjM0NCMzcxIikpO0guTUVESVVNU0xBVEVCTFVFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM3QjY4RUUiKSk7SC5NRURJVU1TUFJJTkdHUkVFTj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDBGQTlBIikpO0guTUVESVVNVFVSUVVPSVNFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM0OEQxQ0MiKSk7SC5NRURJVU1WSU9MRVRSRUQ9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0M3MTU4NSIpKTtILk1JRE5JR0hUQkxVRT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjMTkxOTcwIikpO0guTUlOVENSRUFNPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGNUZGRkEiKSk7SC5NSVNUWVJPU0U9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGRTRFMSIpKTtILk1PQ0NBU0lOPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkU0QjUiKSk7SC5OQVZBSk9XSElURT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkZERUFEIikpO0guTkFWWT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDAwMDgwIikpO0guT0xETEFDRT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkRGNUU2IikpO0guT0xJVkU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzgwODAwMCIpKTtILk9MSVZFRFJBQj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjNkI4RTIzIikpO0guT1JBTkdFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkE1MDAiKSk7SC5PUkFOR0VSRUQ9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGNDUwMCIpKTtILk9SQ0hJRD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjREE3MEQ2IikpO0guUEFMRUdPTERFTlJPRD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRUVFOEFBIikpO0guUEFMRUdSRUVOPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM5OEZCOTgiKSk7SC5QQUxFVFVSUVVPSVNFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNBRkVFRUUiKSk7SC5QQUxFVklPTEVUUkVEPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNEQjcwOTMiKSk7SC5QQVBBWUFXSElQPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkVGRDUiKSk7SC5QRUFDSFBVRkY9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGREFCOSIpKTtILlBFUlU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0NEODUzRiIpKTtILlBJTks9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGQzBDQiIpKTtILlBMVU09T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0REQTBERCIpKTtILlBPV0RFUkJMVUU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0IwRTBFNiIpKTtILlBVUlBMRT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjODAwMDgwIikpO0guUkVEPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRjAwMDAiKSk7SC5ST1NZQlJPV049T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0JDOEY4RiIpKTtILlJPWUFMQkxVRT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjNDE2OUUxIikpO0guU0FERExFQlJPV049T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzhCNDUxMyIpKTtILlNBTE1PTj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRkE4MDcyIikpO0guU0FORFlCUk9XTj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRjRBNDYwIikpO0guU0VBR1JFRU49T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzJFOEI1NyIpKTtILlNFQVNIRUxMPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkY1RUUiKSk7SC5TSUVOTkE9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0EwNTIyRCIpKTtILlNJTFZFUj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjQzBDMEMwIikpO0guU0tZQkxVRT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjODdDRUVCIikpO0guU0xBVEVCTFVFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM2QTVBQ0QiKSk7SC5TTEFURUdSQVk9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzcwODA5MCIpKTtILlNMQVRFR1JFWT1ILlNMQVRFR1JBWTtILlNOT1c9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGRkFGQSIpKTtILlNQUklOR0dSRUVOPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiMwMEZGN0YiKSk7SC5TVEVFTEJMVUU9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzQ2ODJCNCIpKTtILlRBTj1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRDJCNDhDIikpO0guVEVBTD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjMDA4MDgwIikpO0guVEhJU1RMRT1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRDhCRkQ4IikpO0guVE9NQVRPPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRjYzNDciKSk7SC5UVVJRVU9JU0U9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiIzQwRTBEMCIpKTtILlZJT0xFVD1PYmplY3QuZnJlZXplKEguZnJvbUNzc0NvbG9yU3RyaW5nKCIjRUU4MkVFIikpO0guV0hFQVQ9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0Y1REVCMyIpKTtILldISVRFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGRkZGRkYiKSk7SC5XSElURVNNT0tFPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiNGNUY1RjUiKSk7SC5ZRUxMT1c9T2JqZWN0LmZyZWV6ZShILmZyb21Dc3NDb2xvclN0cmluZygiI0ZGRkYwMCIpKTtILllFTExPV0dSRUVOPU9iamVjdC5mcmVlemUoSC5mcm9tQ3NzQ29sb3JTdHJpbmcoIiM5QUNEMzIiKSk7SC5UUkFOU1BBUkVOVD1PYmplY3QuZnJlZXplKG5ldyBIKDAsMCwwLDApKTtuZT1IfSk7ZnVuY3Rpb24gbEIodCxlLG4sbyxyKXtsZXQgaT16RTtpLmxlbmd0aD1yO2xldCBzLGY9bi5yZWQsdT1uLmdyZWVuLGM9bi5ibHVlLGw9bi5hbHBoYSxwPW8ucmVkLGQ9by5ncmVlbixoPW8uYmx1ZSxfPW8uYWxwaGE7aWYobmUuZXF1YWxzKG4sbykpe2ZvcihzPTA7czxyO3MrKylpW3NdPW5lLmNsb25lKG4pO3JldHVybiBpfWxldCBnPShwLWYpL3IsYj0oZC11KS9yLHc9KGgtYykvcixPPShfLWwpL3I7Zm9yKHM9MDtzPHI7cysrKWlbc109bmV3IG5lKGYrcypnLHUrcypiLGMrcyp3LGwrcypPKTtyZXR1cm4gaX1mdW5jdGlvbiBKZih0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10LnBvc2l0aW9ucyxuPXQuY29sb3JzLG89dC53aWR0aD8/MSxyPXQuY29sb3JzUGVyVmVydGV4Pz8hMTtpZighbShlKXx8ZS5sZW5ndGg8Mil0aHJvdyBuZXcgRCgiQXQgbGVhc3QgdHdvIHBvc2l0aW9ucyBhcmUgcmVxdWlyZWQuIik7aWYodHlwZW9mIG8hPSJudW1iZXIiKXRocm93IG5ldyBEKCJ3aWR0aCBtdXN0IGJlIGEgbnVtYmVyIik7aWYobShuKSYmKHImJm4ubGVuZ3RoPGUubGVuZ3RofHwhciYmbi5sZW5ndGg8ZS5sZW5ndGgtMSkpdGhyb3cgbmV3IEQoImNvbG9ycyBoYXMgYW4gaW52YWxpZCBsZW5ndGguIik7dGhpcy5fcG9zaXRpb25zPWUsdGhpcy5fY29sb3JzPW4sdGhpcy5fd2lkdGg9byx0aGlzLl9jb2xvcnNQZXJWZXJ0ZXg9cix0aGlzLl92ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUodC52ZXJ0ZXhGb3JtYXQ/P3B0LkRFRkFVTFQpLHRoaXMuX2FyY1R5cGU9dC5hcmNUeXBlPz9oZS5HRU9ERVNJQyx0aGlzLl9ncmFudWxhcml0eT10LmdyYW51bGFyaXR5Pz9QLlJBRElBTlNfUEVSX0RFR1JFRSx0aGlzLl9lbGxpcHNvaWQ9WS5jbG9uZSh0LmVsbGlwc29pZD8/WS5kZWZhdWx0KSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVQb2x5bGluZUdlb21ldHJ5IjtsZXQgaT0xK2UubGVuZ3RoKmEucGFja2VkTGVuZ3RoO2krPW0obik/MStuLmxlbmd0aCpuZS5wYWNrZWRMZW5ndGg6MSx0aGlzLnBhY2tlZExlbmd0aD1pK1kucGFja2VkTGVuZ3RoK3B0LnBhY2tlZExlbmd0aCs0fXZhciB6RSxqRSxIRSx3YyxVRSxrRSxHRSxWRSxieSxxRT0kKCgpPT57dWMoKTtIcigpO3ZlKCk7RHQoKTtNYSgpO0RlKCk7eWUoKTtmdCgpO0h0KCk7JHQoKTtZZSgpOyRlKCk7YW4oKTtEcCgpO1plKCk7S3QoKTtnYSgpO3RuKCk7eG8oKTt6RT1bXTtKZi5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgidmFsdWUgaXMgcmVxdWlyZWQiKTtpZighbShlKSl0aHJvdyBuZXcgRCgiYXJyYXkgaXMgcmVxdWlyZWQiKTtuPW4/PzA7bGV0IG8scj10Ll9wb3NpdGlvbnMsaT1yLmxlbmd0aDtmb3IoZVtuKytdPWksbz0wO288aTsrK28sbis9YS5wYWNrZWRMZW5ndGgpYS5wYWNrKHJbb10sZSxuKTtsZXQgcz10Ll9jb2xvcnM7Zm9yKGk9bShzKT9zLmxlbmd0aDowLGVbbisrXT1pLG89MDtvPGk7KytvLG4rPW5lLnBhY2tlZExlbmd0aCluZS5wYWNrKHNbb10sZSxuKTtyZXR1cm4gWS5wYWNrKHQuX2VsbGlwc29pZCxlLG4pLG4rPVkucGFja2VkTGVuZ3RoLHB0LnBhY2sodC5fdmVydGV4Rm9ybWF0LGUsbiksbis9cHQucGFja2VkTGVuZ3RoLGVbbisrXT10Ll93aWR0aCxlW24rK109dC5fY29sb3JzUGVyVmVydGV4PzE6MCxlW24rK109dC5fYXJjVHlwZSxlW25dPXQuX2dyYW51bGFyaXR5LGV9O2pFPVkuY2xvbmUoWS5VTklUX1NQSEVSRSksSEU9bmV3IHB0LHdjPXtwb3NpdGlvbnM6dm9pZCAwLGNvbG9yczp2b2lkIDAsZWxsaXBzb2lkOmpFLHZlcnRleEZvcm1hdDpIRSx3aWR0aDp2b2lkIDAsY29sb3JzUGVyVmVydGV4OnZvaWQgMCxhcmNUeXBlOnZvaWQgMCxncmFudWxhcml0eTp2b2lkIDB9O0pmLnVucGFjaz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImFycmF5IGlzIHJlcXVpcmVkIik7ZT1lPz8wO2xldCBvLHI9dFtlKytdLGk9bmV3IEFycmF5KHIpO2ZvcihvPTA7bzxyOysrbyxlKz1hLnBhY2tlZExlbmd0aClpW29dPWEudW5wYWNrKHQsZSk7cj10W2UrK107bGV0IHM9cj4wP25ldyBBcnJheShyKTp2b2lkIDA7Zm9yKG89MDtvPHI7KytvLGUrPW5lLnBhY2tlZExlbmd0aClzW29dPW5lLnVucGFjayh0LGUpO2xldCBmPVkudW5wYWNrKHQsZSxqRSk7ZSs9WS5wYWNrZWRMZW5ndGg7bGV0IHU9cHQudW5wYWNrKHQsZSxIRSk7ZSs9cHQucGFja2VkTGVuZ3RoO2xldCBjPXRbZSsrXSxsPXRbZSsrXT09PTEscD10W2UrK10sZD10W2VdO3JldHVybiBtKG4pPyhuLl9wb3NpdGlvbnM9aSxuLl9jb2xvcnM9cyxuLl9lbGxpcHNvaWQ9WS5jbG9uZShmLG4uX2VsbGlwc29pZCksbi5fdmVydGV4Rm9ybWF0PXB0LmNsb25lKHUsbi5fdmVydGV4Rm9ybWF0KSxuLl93aWR0aD1jLG4uX2NvbG9yc1BlclZlcnRleD1sLG4uX2FyY1R5cGU9cCxuLl9ncmFudWxhcml0eT1kLG4pOih3Yy5wb3NpdGlvbnM9aSx3Yy5jb2xvcnM9cyx3Yy53aWR0aD1jLHdjLmNvbG9yc1BlclZlcnRleD1sLHdjLmFyY1R5cGU9cCx3Yy5ncmFudWxhcml0eT1kLG5ldyBKZih3YykpfTtVRT1uZXcgYSxrRT1uZXcgYSxHRT1uZXcgYSxWRT1uZXcgYTtKZi5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll93aWR0aCxuPXQuX3ZlcnRleEZvcm1hdCxvPXQuX2NvbG9ycyxyPXQuX2NvbG9yc1BlclZlcnRleCxpPXQuX2FyY1R5cGUscz10Ll9ncmFudWxhcml0eSxmPXQuX2VsbGlwc29pZCx1LGMsbCxwPVtdLGQ9Q24odC5fcG9zaXRpb25zLGEuZXF1YWxzRXBzaWxvbiwhMSxwKTtpZihtKG8pJiZwLmxlbmd0aD4wKXtsZXQgTD0wLHo9cFswXTtvPW8uZmlsdGVyKGZ1bmN0aW9uKGosayl7bGV0IHE9ITE7cmV0dXJuIHI/cT1rPT09enx8az09PTAmJno9PT0xOnE9aysxPT09eixxPyhMKyssej1wW0xdLCExKTohMH0pfWxldCBoPWQubGVuZ3RoO2lmKGg8Mnx8ZTw9MClyZXR1cm47aWYoaT09PWhlLkdFT0RFU0lDfHxpPT09aGUuUkhVTUIpe2xldCBMLHo7aT09PWhlLkdFT0RFU0lDPyhMPVAuY2hvcmRMZW5ndGgocyxmLm1heGltdW1SYWRpdXMpLHo9QW4ubnVtYmVyT2ZQb2ludHMpOihMPXMsej1Bbi5udW1iZXJPZlBvaW50c1JodW1iTGluZSk7bGV0IGo9QW4uZXh0cmFjdEhlaWdodHMoZCxmKTtpZihtKG8pKXtsZXQgaz0xO2Zvcih1PTA7dTxoLTE7Kyt1KWsrPXooZFt1XSxkW3UrMV0sTCk7bGV0IHE9bmV3IEFycmF5KGspLFc9MDtmb3IodT0wO3U8aC0xOysrdSl7bGV0IFI9ZFt1XSxudD1kW3UrMV0sYXQ9b1t1XSxsdD16KFIsbnQsTCk7aWYociYmdTxrKXtsZXQgX3Q9b1t1KzFdLG90PWxCKFIsbnQsYXQsX3QsbHQpLFB0PW90Lmxlbmd0aDtmb3IoYz0wO2M8UHQ7KytjKXFbVysrXT1vdFtjXX1lbHNlIGZvcihjPTA7YzxsdDsrK2MpcVtXKytdPW5lLmNsb25lKGF0KX1xW1ddPW5lLmNsb25lKG9bby5sZW5ndGgtMV0pLG89cSx6RS5sZW5ndGg9MH1pPT09aGUuR0VPREVTSUM/ZD1Bbi5nZW5lcmF0ZUNhcnRlc2lhbkFyYyh7cG9zaXRpb25zOmQsbWluRGlzdGFuY2U6TCxlbGxpcHNvaWQ6ZixoZWlnaHQ6an0pOmQ9QW4uZ2VuZXJhdGVDYXJ0ZXNpYW5SaHVtYkFyYyh7cG9zaXRpb25zOmQsZ3JhbnVsYXJpdHk6TCxlbGxpcHNvaWQ6ZixoZWlnaHQ6an0pfWg9ZC5sZW5ndGg7bGV0IF89aCo0LTQsZz1uZXcgRmxvYXQ2NEFycmF5KF8qMyksYj1uZXcgRmxvYXQ2NEFycmF5KF8qMyksdz1uZXcgRmxvYXQ2NEFycmF5KF8qMyksTz1uZXcgRmxvYXQzMkFycmF5KF8qMiksRT1uLnN0P25ldyBGbG9hdDMyQXJyYXkoXyoyKTp2b2lkIDAsVD1tKG8pP25ldyBVaW50OEFycmF5KF8qNCk6dm9pZCAwLHg9MCxNPTAsTj0wLEY9MCxJO2ZvcihjPTA7YzxoOysrYyl7Yz09PTA/KEk9VUUsYS5zdWJ0cmFjdChkWzBdLGRbMV0sSSksYS5hZGQoZFswXSxJLEkpKTpJPWRbYy0xXSxhLmNsb25lKEksR0UpLGEuY2xvbmUoZFtjXSxrRSksYz09PWgtMT8oST1VRSxhLnN1YnRyYWN0KGRbaC0xXSxkW2gtMl0sSSksYS5hZGQoZFtoLTFdLEksSSkpOkk9ZFtjKzFdLGEuY2xvbmUoSSxWRSk7bGV0IEwsejttKFQpJiYoYyE9PTAmJiFyP0w9b1tjLTFdOkw9b1tjXSxjIT09aC0xJiYoej1vW2NdKSk7bGV0IGo9Yz09PTA/MjowLGs9Yz09PWgtMT8yOjQ7Zm9yKGw9ajtsPGs7KytsKXthLnBhY2soa0UsZyx4KSxhLnBhY2soR0UsYix4KSxhLnBhY2soVkUsdyx4KSx4Kz0zO2xldCBxPWwtMjwwPy0xOjE7aWYoT1tNKytdPTIqKGwlMiktMSxPW00rK109cSplLG4uc3QmJihFW04rK109Yy8oaC0xKSxFW04rK109TWF0aC5tYXgoT1tNLTJdLDApKSxtKFQpKXtsZXQgVz1sPDI/TDp6O1RbRisrXT1uZS5mbG9hdFRvQnl0ZShXLnJlZCksVFtGKytdPW5lLmZsb2F0VG9CeXRlKFcuZ3JlZW4pLFRbRisrXT1uZS5mbG9hdFRvQnl0ZShXLmJsdWUpLFRbRisrXT1uZS5mbG9hdFRvQnl0ZShXLmFscGhhKX19fWxldCB2PW5ldyBpZTt2LnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Z30pLHYucHJldlBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Yn0pLHYubmV4dFBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6d30pLHYuZXhwYW5kQW5kV2lkdGg9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOk99KSxuLnN0JiYodi5zdD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6RX0pKSxtKFQpJiYodi5jb2xvcj1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTo0LHZhbHVlczpULG5vcm1hbGl6ZTohMH0pKTtsZXQgQj1MdC5jcmVhdGVUeXBlZEFycmF5KF8saCo2LTYpLEE9MCxTPTAsQz1oLTE7Zm9yKGM9MDtjPEM7KytjKUJbUysrXT1BLEJbUysrXT1BKzIsQltTKytdPUErMSxCW1MrK109QSsxLEJbUysrXT1BKzIsQltTKytdPUErMyxBKz00O3JldHVybiBuZXcgVXQoe2F0dHJpYnV0ZXM6dixpbmRpY2VzOkIscHJpbWl0aXZlVHlwZTpCdC5UUklBTkdMRVMsYm91bmRpbmdTcGhlcmU6QXQuZnJvbVBvaW50cyhkKSxnZW9tZXRyeVR5cGU6TmkuUE9MWUxJTkVTfSl9O2J5PUpmfSk7dmFyIHd5PXt9O2xlKHd5LHtkZWZhdWx0OigpPT5kQn0pO2Z1bmN0aW9uIHBCKHQsZSl7cmV0dXJuIG0oZSkmJih0PWJ5LnVucGFjayh0LGUpKSx0Ll9lbGxpcHNvaWQ9WS5jbG9uZSh0Ll9lbGxpcHNvaWQpLGJ5LmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBkQixUeT0kKCgpPT57ZnQoKTskdCgpO3FFKCk7ZEI9cEJ9KTtmdW5jdGlvbiBtQih0LGUsbixvKXtsZXQgcj1uZXcgaWU7by5wb3NpdGlvbiYmKHIucG9zaXRpb249bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczp0fSkpO2xldCBpPWUubGVuZ3RoLHM9dC5sZW5ndGgvMyxmPShzLWkqMikvKGkqMiksdT1QZS50cmlhbmd1bGF0ZShlKSxjPShmLTEpKmkqNit1Lmxlbmd0aCoyLGw9THQuY3JlYXRlVHlwZWRBcnJheShzLGMpLHAsZCxoLF8sZyxiLHc9aSoyLE89MDtmb3IocD0wO3A8Zi0xO3ArKyl7Zm9yKGQ9MDtkPGktMTtkKyspaD1kKjIrcCppKjIsYj1oK3csXz1oKzEsZz1fK3csbFtPKytdPV8sbFtPKytdPWgsbFtPKytdPWcsbFtPKytdPWcsbFtPKytdPWgsbFtPKytdPWI7aD1pKjItMitwKmkqMixfPWgrMSxnPV8rdyxiPWgrdyxsW08rK109XyxsW08rK109aCxsW08rK109ZyxsW08rK109ZyxsW08rK109aCxsW08rK109Yn1pZihvLnN0fHxvLnRhbmdlbnR8fG8uYml0YW5nZW50KXtsZXQgeD1uZXcgRmxvYXQzMkFycmF5KHMqMiksTT0xLyhmLTEpLE49MS9uLmhlaWdodCxGPW4uaGVpZ2h0LzIsSSx2LEI9MDtmb3IocD0wO3A8ZjtwKyspe2ZvcihJPXAqTSx2PU4qKGVbMF0ueStGKSx4W0IrK109SSx4W0IrK109dixkPTE7ZDxpO2QrKyl2PU4qKGVbZF0ueStGKSx4W0IrK109SSx4W0IrK109dix4W0IrK109SSx4W0IrK109djt2PU4qKGVbMF0ueStGKSx4W0IrK109SSx4W0IrK109dn1mb3IoZD0wO2Q8aTtkKyspST0wLHY9TiooZVtkXS55K0YpLHhbQisrXT1JLHhbQisrXT12O2ZvcihkPTA7ZDxpO2QrKylJPShmLTEpKk0sdj1OKihlW2RdLnkrRikseFtCKytdPUkseFtCKytdPXY7ci5zdD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Mix2YWx1ZXM6bmV3IEZsb2F0MzJBcnJheSh4KX0pfWxldCBFPXMtaSoyO2ZvcihwPTA7cDx1Lmxlbmd0aDtwKz0zKXtsZXQgeD11W3BdK0UsTT11W3ArMV0rRSxOPXVbcCsyXStFO2xbTysrXT14LGxbTysrXT1NLGxbTysrXT1OLGxbTysrXT1OK2ksbFtPKytdPU0raSxsW08rK109eCtpfWxldCBUPW5ldyBVdCh7YXR0cmlidXRlczpyLGluZGljZXM6bCxib3VuZGluZ1NwaGVyZTpBdC5mcm9tVmVydGljZXModCkscHJpbWl0aXZlVHlwZTpCdC5UUklBTkdMRVN9KTtpZihvLm5vcm1hbCYmKFQ9R2UuY29tcHV0ZU5vcm1hbChUKSksby50YW5nZW50fHxvLmJpdGFuZ2VudCl7dHJ5e1Q9R2UuY29tcHV0ZVRhbmdlbnRBbmRCaXRhbmdlbnQoVCl9Y2F0Y2h7ZGQoInBvbHlsaW5lLXZvbHVtZS10YW5nZW50LWJpdGFuZ2VudCIsIlVuYWJsZSB0byBjb21wdXRlIHRhbmdlbnRzIGFuZCBiaXRhbmdlbnRzIGZvciBwb2x5bGluZSB2b2x1bWUgZ2VvbWV0cnkiKX1vLnRhbmdlbnR8fChULmF0dHJpYnV0ZXMudGFuZ2VudD12b2lkIDApLG8uYml0YW5nZW50fHwoVC5hdHRyaWJ1dGVzLmJpdGFuZ2VudD12b2lkIDApLG8uc3R8fChULmF0dHJpYnV0ZXMuc3Q9dm9pZCAwKX1yZXR1cm4gVH1mdW5jdGlvbiBldSh0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10LnBvbHlsaW5lUG9zaXRpb25zLG49dC5zaGFwZVBvc2l0aW9ucztpZighbShlKSl0aHJvdyBuZXcgRCgib3B0aW9ucy5wb2x5bGluZVBvc2l0aW9ucyBpcyByZXF1aXJlZC4iKTtpZighbShuKSl0aHJvdyBuZXcgRCgib3B0aW9ucy5zaGFwZVBvc2l0aW9ucyBpcyByZXF1aXJlZC4iKTt0aGlzLl9wb3NpdGlvbnM9ZSx0aGlzLl9zaGFwZT1uLHRoaXMuX2VsbGlwc29pZD1ZLmNsb25lKHQuZWxsaXBzb2lkPz9ZLmRlZmF1bHQpLHRoaXMuX2Nvcm5lclR5cGU9dC5jb3JuZXJUeXBlPz9mbi5ST1VOREVELHRoaXMuX3ZlcnRleEZvcm1hdD1wdC5jbG9uZSh0LnZlcnRleEZvcm1hdD8/cHQuREVGQVVMVCksdGhpcy5fZ3JhbnVsYXJpdHk9dC5ncmFudWxhcml0eT8/UC5SQURJQU5TX1BFUl9ERUdSRUUsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlUG9seWxpbmVWb2x1bWVHZW9tZXRyeSI7bGV0IG89MStlLmxlbmd0aCphLnBhY2tlZExlbmd0aDtvKz0xK24ubGVuZ3RoKkoucGFja2VkTGVuZ3RoLHRoaXMucGFja2VkTGVuZ3RoPW8rWS5wYWNrZWRMZW5ndGgrcHQucGFja2VkTGVuZ3RoKzJ9dmFyIEtFLFdFLHR1LGhCLE95LFhFPSQoKCk9PntIcigpO0NmKCk7dmUoKTtrZSgpO0R0KCk7RGUoKTtfYygpO3llKCk7ZnQoKTtIdCgpOyR0KCk7WWUoKTskZSgpO2FuKCk7Y2koKTtaZSgpO0t0KCk7WjAoKTtLcigpO3lkKCk7dG4oKTt4bygpO3BjKCk7ZXUucGFjaz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoInZhbHVlIGlzIHJlcXVpcmVkIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoImFycmF5IGlzIHJlcXVpcmVkIik7bj1uPz8wO2xldCBvLHI9dC5fcG9zaXRpb25zLGk9ci5sZW5ndGg7Zm9yKGVbbisrXT1pLG89MDtvPGk7KytvLG4rPWEucGFja2VkTGVuZ3RoKWEucGFjayhyW29dLGUsbik7bGV0IHM9dC5fc2hhcGU7Zm9yKGk9cy5sZW5ndGgsZVtuKytdPWksbz0wO288aTsrK28sbis9Si5wYWNrZWRMZW5ndGgpSi5wYWNrKHNbb10sZSxuKTtyZXR1cm4gWS5wYWNrKHQuX2VsbGlwc29pZCxlLG4pLG4rPVkucGFja2VkTGVuZ3RoLHB0LnBhY2sodC5fdmVydGV4Rm9ybWF0LGUsbiksbis9cHQucGFja2VkTGVuZ3RoLGVbbisrXT10Ll9jb3JuZXJUeXBlLGVbbl09dC5fZ3JhbnVsYXJpdHksZX07S0U9WS5jbG9uZShZLlVOSVRfU1BIRVJFKSxXRT1uZXcgcHQsdHU9e3BvbHlsaW5lUG9zaXRpb25zOnZvaWQgMCxzaGFwZVBvc2l0aW9uczp2b2lkIDAsZWxsaXBzb2lkOktFLHZlcnRleEZvcm1hdDpXRSxjb3JuZXJUeXBlOnZvaWQgMCxncmFudWxhcml0eTp2b2lkIDB9O2V1LnVucGFjaz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImFycmF5IGlzIHJlcXVpcmVkIik7ZT1lPz8wO2xldCBvLHI9dFtlKytdLGk9bmV3IEFycmF5KHIpO2ZvcihvPTA7bzxyOysrbyxlKz1hLnBhY2tlZExlbmd0aClpW29dPWEudW5wYWNrKHQsZSk7cj10W2UrK107bGV0IHM9bmV3IEFycmF5KHIpO2ZvcihvPTA7bzxyOysrbyxlKz1KLnBhY2tlZExlbmd0aClzW29dPUoudW5wYWNrKHQsZSk7bGV0IGY9WS51bnBhY2sodCxlLEtFKTtlKz1ZLnBhY2tlZExlbmd0aDtsZXQgdT1wdC51bnBhY2sodCxlLFdFKTtlKz1wdC5wYWNrZWRMZW5ndGg7bGV0IGM9dFtlKytdLGw9dFtlXTtyZXR1cm4gbShuKT8obi5fcG9zaXRpb25zPWksbi5fc2hhcGU9cyxuLl9lbGxpcHNvaWQ9WS5jbG9uZShmLG4uX2VsbGlwc29pZCksbi5fdmVydGV4Rm9ybWF0PXB0LmNsb25lKHUsbi5fdmVydGV4Rm9ybWF0KSxuLl9jb3JuZXJUeXBlPWMsbi5fZ3JhbnVsYXJpdHk9bCxuKToodHUucG9seWxpbmVQb3NpdGlvbnM9aSx0dS5zaGFwZVBvc2l0aW9ucz1zLHR1LmNvcm5lclR5cGU9Yyx0dS5ncmFudWxhcml0eT1sLG5ldyBldSh0dSkpfTtoQj1uZXcgcXI7ZXUuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fcG9zaXRpb25zLG49Q24oZSxhLmVxdWFsc0Vwc2lsb24pLG89dC5fc2hhcGU7aWYobz1fcy5yZW1vdmVEdXBsaWNhdGVzRnJvbVNoYXBlKG8pLG4ubGVuZ3RoPDJ8fG8ubGVuZ3RoPDMpcmV0dXJuO1BlLmNvbXB1dGVXaW5kaW5nT3JkZXIyRChvKT09PVBvLkNMT0NLV0lTRSYmby5yZXZlcnNlKCk7bGV0IHI9cXIuZnJvbVBvaW50cyhvLGhCKSxpPV9zLmNvbXB1dGVQb3NpdGlvbnMobixvLHIsdCwhMCk7cmV0dXJuIG1CKGksbyxyLHQuX3ZlcnRleEZvcm1hdCl9O095PWV1fSk7dmFyIEV5PXt9O2xlKEV5LHtkZWZhdWx0OigpPT55Qn0pO2Z1bmN0aW9uIF9CKHQsZSl7cmV0dXJuIG0oZSkmJih0PU95LnVucGFjayh0LGUpKSx0Ll9lbGxpcHNvaWQ9WS5jbG9uZSh0Ll9lbGxpcHNvaWQpLE95LmNyZWF0ZUdlb21ldHJ5KHQpfXZhciB5QixSeT0kKCgpPT57ZnQoKTskdCgpO1hFKCk7eUI9X0J9KTtmdW5jdGlvbiBnQih0LGUpe2xldCBuPW5ldyBpZTtuLnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6dH0pO2xldCBvPWUubGVuZ3RoLHI9bi5wb3NpdGlvbi52YWx1ZXMubGVuZ3RoLzMscz10Lmxlbmd0aC8zL28sZj1MdC5jcmVhdGVUeXBlZEFycmF5KHIsMipvKihzKzEpKSx1LGMsbD0wO3U9MDtsZXQgcD11Km87Zm9yKGM9MDtjPG8tMTtjKyspZltsKytdPWMrcCxmW2wrK109YytwKzE7Zm9yKGZbbCsrXT1vLTErcCxmW2wrK109cCx1PXMtMSxwPXUqbyxjPTA7YzxvLTE7YysrKWZbbCsrXT1jK3AsZltsKytdPWMrcCsxO2ZvcihmW2wrK109by0xK3AsZltsKytdPXAsdT0wO3U8cy0xO3UrKyl7bGV0IGg9byp1LF89aCtvO2ZvcihjPTA7YzxvO2MrKylmW2wrK109YytoLGZbbCsrXT1jK199cmV0dXJuIG5ldyBVdCh7YXR0cmlidXRlczpuLGluZGljZXM6THQuY3JlYXRlVHlwZWRBcnJheShyLGYpLGJvdW5kaW5nU3BoZXJlOkF0LmZyb21WZXJ0aWNlcyh0KSxwcmltaXRpdmVUeXBlOkJ0LkxJTkVTfSl9ZnVuY3Rpb24gb3UodCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5wb2x5bGluZVBvc2l0aW9ucyxuPXQuc2hhcGVQb3NpdGlvbnM7aWYoIW0oZSkpdGhyb3cgbmV3IEQoIm9wdGlvbnMucG9seWxpbmVQb3NpdGlvbnMgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoIm9wdGlvbnMuc2hhcGVQb3NpdGlvbnMgaXMgcmVxdWlyZWQuIik7dGhpcy5fcG9zaXRpb25zPWUsdGhpcy5fc2hhcGU9bix0aGlzLl9lbGxpcHNvaWQ9WS5jbG9uZSh0LmVsbGlwc29pZD8/WS5kZWZhdWx0KSx0aGlzLl9jb3JuZXJUeXBlPXQuY29ybmVyVHlwZT8/Zm4uUk9VTkRFRCx0aGlzLl9ncmFudWxhcml0eT10LmdyYW51bGFyaXR5Pz9QLlJBRElBTlNfUEVSX0RFR1JFRSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVQb2x5bGluZVZvbHVtZU91dGxpbmVHZW9tZXRyeSI7bGV0IG89MStlLmxlbmd0aCphLnBhY2tlZExlbmd0aDtvKz0xK24ubGVuZ3RoKkoucGFja2VkTGVuZ3RoLHRoaXMucGFja2VkTGVuZ3RoPW8rWS5wYWNrZWRMZW5ndGgrMn12YXIgWUUsbnUsQUIsU3ksJEU9JCgoKT0+e0hyKCk7Q2YoKTt2ZSgpO2tlKCk7RHQoKTtEZSgpO19jKCk7eWUoKTtmdCgpO0h0KCk7JHQoKTtZZSgpOyRlKCk7YW4oKTtaZSgpO0t0KCk7S3IoKTt5ZCgpO3RuKCk7cGMoKTtvdS5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgidmFsdWUgaXMgcmVxdWlyZWQiKTtpZighbShlKSl0aHJvdyBuZXcgRCgiYXJyYXkgaXMgcmVxdWlyZWQiKTtuPW4/PzA7bGV0IG8scj10Ll9wb3NpdGlvbnMsaT1yLmxlbmd0aDtmb3IoZVtuKytdPWksbz0wO288aTsrK28sbis9YS5wYWNrZWRMZW5ndGgpYS5wYWNrKHJbb10sZSxuKTtsZXQgcz10Ll9zaGFwZTtmb3IoaT1zLmxlbmd0aCxlW24rK109aSxvPTA7bzxpOysrbyxuKz1KLnBhY2tlZExlbmd0aClKLnBhY2soc1tvXSxlLG4pO3JldHVybiBZLnBhY2sodC5fZWxsaXBzb2lkLGUsbiksbis9WS5wYWNrZWRMZW5ndGgsZVtuKytdPXQuX2Nvcm5lclR5cGUsZVtuXT10Ll9ncmFudWxhcml0eSxlfTtZRT1ZLmNsb25lKFkuVU5JVF9TUEhFUkUpLG51PXtwb2x5bGluZVBvc2l0aW9uczp2b2lkIDAsc2hhcGVQb3NpdGlvbnM6dm9pZCAwLGVsbGlwc29pZDpZRSxoZWlnaHQ6dm9pZCAwLGNvcm5lclR5cGU6dm9pZCAwLGdyYW51bGFyaXR5OnZvaWQgMH07b3UudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgiYXJyYXkgaXMgcmVxdWlyZWQiKTtlPWU/PzA7bGV0IG8scj10W2UrK10saT1uZXcgQXJyYXkocik7Zm9yKG89MDtvPHI7KytvLGUrPWEucGFja2VkTGVuZ3RoKWlbb109YS51bnBhY2sodCxlKTtyPXRbZSsrXTtsZXQgcz1uZXcgQXJyYXkocik7Zm9yKG89MDtvPHI7KytvLGUrPUoucGFja2VkTGVuZ3RoKXNbb109Si51bnBhY2sodCxlKTtsZXQgZj1ZLnVucGFjayh0LGUsWUUpO2UrPVkucGFja2VkTGVuZ3RoO2xldCB1PXRbZSsrXSxjPXRbZV07cmV0dXJuIG0obik/KG4uX3Bvc2l0aW9ucz1pLG4uX3NoYXBlPXMsbi5fZWxsaXBzb2lkPVkuY2xvbmUoZixuLl9lbGxpcHNvaWQpLG4uX2Nvcm5lclR5cGU9dSxuLl9ncmFudWxhcml0eT1jLG4pOihudS5wb2x5bGluZVBvc2l0aW9ucz1pLG51LnNoYXBlUG9zaXRpb25zPXMsbnUuY29ybmVyVHlwZT11LG51LmdyYW51bGFyaXR5PWMsbmV3IG91KG51KSl9O0FCPW5ldyBxcjtvdS5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9wb3NpdGlvbnMsbj1DbihlLGEuZXF1YWxzRXBzaWxvbiksbz10Ll9zaGFwZTtpZihvPV9zLnJlbW92ZUR1cGxpY2F0ZXNGcm9tU2hhcGUobyksbi5sZW5ndGg8Mnx8by5sZW5ndGg8MylyZXR1cm47UGUuY29tcHV0ZVdpbmRpbmdPcmRlcjJEKG8pPT09UG8uQ0xPQ0tXSVNFJiZvLnJldmVyc2UoKTtsZXQgcj1xci5mcm9tUG9pbnRzKG8sQUIpLGk9X3MuY29tcHV0ZVBvc2l0aW9ucyhuLG8scix0LCExKTtyZXR1cm4gZ0IoaSxvKX07U3k9b3V9KTt2YXIgeHk9e307bGUoeHkse2RlZmF1bHQ6KCk9PndCfSk7ZnVuY3Rpb24gYkIodCxlKXtyZXR1cm4gbShlKSYmKHQ9U3kudW5wYWNrKHQsZSkpLHQuX2VsbGlwc29pZD1ZLmNsb25lKHQuX2VsbGlwc29pZCksU3kuY3JlYXRlR2VvbWV0cnkodCl9dmFyIHdCLEN5PSQoKCk9PntmdCgpOyR0KCk7JEUoKTt3Qj1iQn0pO2Z1bmN0aW9uIEpFKHQsZSxuLG8scixpLHMpe2xldCBmPU1hdGguY29zKGUpLHU9bypmLGM9bipmLGw9TWF0aC5zaW4oZSkscD1vKmwsZD1uKmw7cnUuX2VsbGlwc29pZD1ZLmRlZmF1bHQseHI9cnUucHJvamVjdCh0LHhyKSx4cj1hLnN1YnRyYWN0KHhyLEJkLHhyKTtsZXQgaD1aby5mcm9tUm90YXRpb24oZSxPQik7eHI9Wm8ubXVsdGlwbHlCeVZlY3RvcihoLHhyLHhyKSx4cj1hLmFkZCh4cixCZCx4ciksdD1ydS51bnByb2plY3QoeHIsdCksaS09MSxzLT0xO2xldCBfPXQubGF0aXR1ZGUsZz1fK2kqZCxiPV8tdSpzLHc9Xy11KnMraSpkLE89TWF0aC5tYXgoXyxnLGIsdyksRT1NYXRoLm1pbihfLGcsYix3KSxUPXQubG9uZ2l0dWRlLHg9VCtpKmMsTT1UK3MqcCxOPVQrcypwK2kqYyxGPU1hdGgubWF4KFQseCxNLE4pLEk9TWF0aC5taW4oVCx4LE0sTik7cmV0dXJue25vcnRoOk8sc291dGg6RSxlYXN0OkYsd2VzdDpJLGdyYW5ZQ29zOnUsZ3JhbllTaW46cCxncmFuWENvczpjLGdyYW5YU2luOmQsbndDb3JuZXI6dH19dmFyIFpFLFFFLFRCLFB5LE9CLHhyLEVCLEJkLHJ1LGJvLE15PSQoKCk9PntEdCgpO0llKCk7ZnQoKTtIdCgpOyR0KCk7eGkoKTtLdCgpO2JmKCk7VG4oKTtaRT1NYXRoLmNvcyxRRT1NYXRoLnNpbixUQj1NYXRoLnNxcnQsUHk9e307UHkuY29tcHV0ZVBvc2l0aW9uPWZ1bmN0aW9uKHQsZSxuLG8scixpLHMpe2xldCBmPWUucmFkaWlTcXVhcmVkLHU9dC5ud0Nvcm5lcixjPXQuYm91bmRpbmdSZWN0YW5nbGUsbD11LmxhdGl0dWRlLXQuZ3JhbllDb3MqbytyKnQuZ3JhblhTaW4scD1aRShsKSxkPVFFKGwpLGg9Zi56KmQsXz11LmxvbmdpdHVkZStvKnQuZ3JhbllTaW4rcip0LmdyYW5YQ29zLGc9cCpaRShfKSxiPXAqUUUoXyksdz1mLngqZyxPPWYueSpiLEU9VEIodypnK08qYitoKmQpO2lmKGkueD13L0UsaS55PU8vRSxpLno9aC9FLG4pe2xldCBUPXQuc3ROd0Nvcm5lcjttKFQpPyhsPVQubGF0aXR1ZGUtdC5zdEdyYW5ZQ29zKm8rcip0LnN0R3JhblhTaW4sXz1ULmxvbmdpdHVkZStvKnQuc3RHcmFuWVNpbityKnQuc3RHcmFuWENvcyxzLng9KF8tdC5zdFdlc3QpKnQubG9uU2NhbGFyLHMueT0obC10LnN0U291dGgpKnQubGF0U2NhbGFyKToocy54PShfLWMud2VzdCkqdC5sb25TY2FsYXIscy55PShsLWMuc291dGgpKnQubGF0U2NhbGFyKX19O09CPW5ldyBabyx4cj1uZXcgYSxFQj1uZXcgY3QsQmQ9bmV3IGEscnU9bmV3IGVvO1B5LmNvbXB1dGVPcHRpb25zPWZ1bmN0aW9uKHQsZSxuLG8scixpLHMpe2xldCBmPXQuZWFzdCx1PXQud2VzdCxjPXQubm9ydGgsbD10LnNvdXRoLHA9ITEsZD0hMTtjPT09UC5QSV9PVkVSX1RXTyYmKHA9ITApLGw9PT0tUC5QSV9PVkVSX1RXTyYmKGQ9ITApO2xldCBoLF89Yy1sO3U+Zj9oPVAuVFdPX1BJLXUrZjpoPWYtdTtsZXQgZz1NYXRoLmNlaWwoaC9lKSsxLGI9TWF0aC5jZWlsKF8vZSkrMSx3PWgvKGctMSksTz1fLyhiLTEpLEU9TnQubm9ydGh3ZXN0KHQsaSksVD1OdC5jZW50ZXIodCxFQik7KG4hPT0wfHxvIT09MCkmJihULmxvbmdpdHVkZTxFLmxvbmdpdHVkZSYmKFQubG9uZ2l0dWRlKz1QLlRXT19QSSkscnUuX2VsbGlwc29pZD1ZLmRlZmF1bHQsQmQ9cnUucHJvamVjdChULEJkKSk7bGV0IHg9TyxNPXcsTj0wLEY9MCxJPU50LmNsb25lKHQsciksdj17Z3JhbllDb3M6eCxncmFuWVNpbjpOLGdyYW5YQ29zOk0sZ3JhblhTaW46Rixud0Nvcm5lcjpFLGJvdW5kaW5nUmVjdGFuZ2xlOkksd2lkdGg6ZyxoZWlnaHQ6Yixub3J0aENhcDpwLHNvdXRoQ2FwOmR9O2lmKG4hPT0wKXtsZXQgQj1KRShFLG4sdyxPLFQsZyxiKTtpZihjPUIubm9ydGgsbD1CLnNvdXRoLGY9Qi5lYXN0LHU9Qi53ZXN0LGM8LVAuUElfT1ZFUl9UV098fGM+UC5QSV9PVkVSX1RXT3x8bDwtUC5QSV9PVkVSX1RXT3x8bD5QLlBJX09WRVJfVFdPKXRocm93IG5ldyBEKCJSb3RhdGVkIHJlY3RhbmdsZSBpcyBpbnZhbGlkLiAgSXQgY3Jvc3NlcyBvdmVyIGVpdGhlciB0aGUgbm9ydGggb3Igc291dGggcG9sZS4iKTt2LmdyYW5ZQ29zPUIuZ3JhbllDb3Msdi5ncmFuWVNpbj1CLmdyYW5ZU2luLHYuZ3JhblhDb3M9Qi5ncmFuWENvcyx2LmdyYW5YU2luPUIuZ3JhblhTaW4sSS5ub3J0aD1jLEkuc291dGg9bCxJLmVhc3Q9ZixJLndlc3Q9dX1pZihvIT09MCl7bj1uLW87bGV0IEI9TnQubm9ydGh3ZXN0KEkscyksQT1KRShCLG4sdyxPLFQsZyxiKTt2LnN0R3JhbllDb3M9QS5ncmFuWUNvcyx2LnN0R3JhblhDb3M9QS5ncmFuWENvcyx2LnN0R3JhbllTaW49QS5ncmFuWVNpbix2LnN0R3JhblhTaW49QS5ncmFuWFNpbix2LnN0TndDb3JuZXI9Qix2LnN0V2VzdD1BLndlc3Qsdi5zdFNvdXRoPUEuc291dGh9cmV0dXJuIHZ9O2JvPVB5fSk7ZnVuY3Rpb24gc1IodCxlKXtsZXQgbj1uZXcgVXQoe2F0dHJpYnV0ZXM6bmV3IGllLHByaW1pdGl2ZVR5cGU6QnQuVFJJQU5HTEVTfSk7cmV0dXJuIG4uYXR0cmlidXRlcy5wb3NpdGlvbj1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmUucG9zaXRpb25zfSksdC5ub3JtYWwmJihuLmF0dHJpYnV0ZXMubm9ybWFsPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczplLm5vcm1hbHN9KSksdC50YW5nZW50JiYobi5hdHRyaWJ1dGVzLnRhbmdlbnQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOmUudGFuZ2VudHN9KSksdC5iaXRhbmdlbnQmJihuLmF0dHJpYnV0ZXMuYml0YW5nZW50PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczplLmJpdGFuZ2VudHN9KSksbn1mdW5jdGlvbiBDQih0LGUsbixvKXtsZXQgcj10Lmxlbmd0aCxpPWUubm9ybWFsP25ldyBGbG9hdDMyQXJyYXkocik6dm9pZCAwLHM9ZS50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkocik6dm9pZCAwLGY9ZS5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShyKTp2b2lkIDAsdT0wLGM9clIsbD1vUixwPW5SO2lmKGUubm9ybWFsfHxlLnRhbmdlbnR8fGUuYml0YW5nZW50KWZvcihsZXQgZD0wO2Q8cjtkKz0zKXtsZXQgaD1hLmZyb21BcnJheSh0LGQsTnkpLF89dSsxLGc9dSsyO3A9bi5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoaCxwKSwoZS50YW5nZW50fHxlLmJpdGFuZ2VudCkmJihhLmNyb3NzKGEuVU5JVF9aLHAsbCksWi5tdWx0aXBseUJ5VmVjdG9yKG8sbCxsKSxhLm5vcm1hbGl6ZShsLGwpLGUuYml0YW5nZW50JiZhLm5vcm1hbGl6ZShhLmNyb3NzKHAsbCxjKSxjKSksZS5ub3JtYWwmJihpW3VdPXAueCxpW19dPXAueSxpW2ddPXAueiksZS50YW5nZW50JiYoc1t1XT1sLngsc1tfXT1sLnksc1tnXT1sLnopLGUuYml0YW5nZW50JiYoZlt1XT1jLngsZltfXT1jLnksZltnXT1jLnopLHUrPTN9cmV0dXJuIHNSKGUse3Bvc2l0aW9uczp0LG5vcm1hbHM6aSx0YW5nZW50czpzLGJpdGFuZ2VudHM6Zn0pfWZ1bmN0aW9uIFBCKHQsZSxuKXtsZXQgbz10Lmxlbmd0aCxyPWUubm9ybWFsP25ldyBGbG9hdDMyQXJyYXkobyk6dm9pZCAwLGk9ZS50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkobyk6dm9pZCAwLHM9ZS5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShvKTp2b2lkIDAsZj0wLHU9MCxjPTAsbD0hMCxwPXJSLGQ9b1IsaD1uUjtpZihlLm5vcm1hbHx8ZS50YW5nZW50fHxlLmJpdGFuZ2VudClmb3IobGV0IF89MDtfPG87Xys9Nil7bGV0IGc9YS5mcm9tQXJyYXkodCxfLE55KSxiPWEuZnJvbUFycmF5KHQsKF8rNiklbyxJeSk7aWYobCl7bGV0IHc9YS5mcm9tQXJyYXkodCwoXyszKSVvLGNSKTthLnN1YnRyYWN0KGIsZyxiKSxhLnN1YnRyYWN0KHcsZyx3KSxoPWEubm9ybWFsaXplKGEuY3Jvc3ModyxiLGgpLGgpLGw9ITF9YS5lcXVhbHNFcHNpbG9uKGIsZyxQLkVQU0lMT04xMCkmJihsPSEwKSwoZS50YW5nZW50fHxlLmJpdGFuZ2VudCkmJihwPW4uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGcscCksZS50YW5nZW50JiYoZD1hLm5vcm1hbGl6ZShhLmNyb3NzKHAsaCxkKSxkKSkpLGUubm9ybWFsJiYocltmKytdPWgueCxyW2YrK109aC55LHJbZisrXT1oLnoscltmKytdPWgueCxyW2YrK109aC55LHJbZisrXT1oLnopLGUudGFuZ2VudCYmKGlbdSsrXT1kLngsaVt1KytdPWQueSxpW3UrK109ZC56LGlbdSsrXT1kLngsaVt1KytdPWQueSxpW3UrK109ZC56KSxlLmJpdGFuZ2VudCYmKHNbYysrXT1wLngsc1tjKytdPXAueSxzW2MrK109cC56LHNbYysrXT1wLngsc1tjKytdPXAueSxzW2MrK109cC56KX1yZXR1cm4gc1IoZSx7cG9zaXRpb25zOnQsbm9ybWFsczpyLHRhbmdlbnRzOmksYml0YW5nZW50czpzfSl9ZnVuY3Rpb24gYVIodCxlKXtsZXQgbj10Ll92ZXJ0ZXhGb3JtYXQsbz10Ll9lbGxpcHNvaWQscj1lLmhlaWdodCxpPWUud2lkdGgscz1lLm5vcnRoQ2FwLGY9ZS5zb3V0aENhcCx1PTAsYz1yLGw9cixwPTA7cyYmKHU9MSxsLT0xLHArPTEpLGYmJihjLT0xLGwtPTEscCs9MSkscCs9aSpsO2xldCBkPW4ucG9zaXRpb24/bmV3IEZsb2F0NjRBcnJheShwKjMpOnZvaWQgMCxoPW4uc3Q/bmV3IEZsb2F0MzJBcnJheShwKjIpOnZvaWQgMCxfPTAsZz0wLGI9Tnksdz1SQixPPU51bWJlci5NQVhfVkFMVUUsRT1OdW1iZXIuTUFYX1ZBTFVFLFQ9LU51bWJlci5NQVhfVkFMVUUseD0tTnVtYmVyLk1BWF9WQUxVRTtmb3IobGV0IEE9dTtBPGM7KytBKWZvcihsZXQgUz0wO1M8aTsrK1MpYm8uY29tcHV0ZVBvc2l0aW9uKGUsbyxuLnN0LEEsUyxiLHcpLGRbXysrXT1iLngsZFtfKytdPWIueSxkW18rK109Yi56LG4uc3QmJihoW2crK109dy54LGhbZysrXT13LnksTz1NYXRoLm1pbihPLHcueCksRT1NYXRoLm1pbihFLHcueSksVD1NYXRoLm1heChULHcueCkseD1NYXRoLm1heCh4LHcueSkpO2lmKHMmJihiby5jb21wdXRlUG9zaXRpb24oZSxvLG4uc3QsMCwwLGIsdyksZFtfKytdPWIueCxkW18rK109Yi55LGRbXysrXT1iLnosbi5zdCYmKGhbZysrXT13LngsaFtnKytdPXcueSxPPXcueCxFPXcueSxUPXcueCx4PXcueSkpLGYmJihiby5jb21wdXRlUG9zaXRpb24oZSxvLG4uc3Qsci0xLDAsYix3KSxkW18rK109Yi54LGRbXysrXT1iLnksZFtfXT1iLnosbi5zdCYmKGhbZysrXT13LngsaFtnXT13LnksTz1NYXRoLm1pbihPLHcueCksRT1NYXRoLm1pbihFLHcueSksVD1NYXRoLm1heChULHcueCkseD1NYXRoLm1heCh4LHcueSkpKSxuLnN0JiYoTzwwfHxFPDB8fFQ+MXx8eD4xKSlmb3IobGV0IEE9MDtBPGgubGVuZ3RoO0ErPTIpaFtBXT0oaFtBXS1PKS8oVC1PKSxoW0ErMV09KGhbQSsxXS1FKS8oeC1FKTtsZXQgTT1DQihkLG4sbyxlLnRhbmdlbnRSb3RhdGlvbk1hdHJpeCksTj02KihpLTEpKihsLTEpO3MmJihOKz0zKihpLTEpKSxmJiYoTis9MyooaS0xKSk7bGV0IEY9THQuY3JlYXRlVHlwZWRBcnJheShwLE4pLEk9MCx2PTAsQjtmb3IoQj0wO0I8bC0xOysrQil7Zm9yKGxldCBBPTA7QTxpLTE7KytBKXtsZXQgUz1JLEM9UytpLEw9QysxLHo9UysxO0ZbdisrXT1TLEZbdisrXT1DLEZbdisrXT16LEZbdisrXT16LEZbdisrXT1DLEZbdisrXT1MLCsrSX0rK0l9aWYoc3x8Zil7bGV0IEE9cC0xLFM9cC0xO3MmJmYmJihBPXAtMik7bGV0IEMsTDtpZihJPTAscylmb3IoQj0wO0I8aS0xO0IrKylDPUksTD1DKzEsRlt2KytdPUEsRlt2KytdPUMsRlt2KytdPUwsKytJO2lmKGYpZm9yKEk9KGwtMSkqaSxCPTA7QjxpLTE7QisrKUM9SSxMPUMrMSxGW3YrK109QyxGW3YrK109UyxGW3YrK109TCwrK0l9cmV0dXJuIE0uaW5kaWNlcz1GLG4uc3QmJihNLmF0dHJpYnV0ZXMuc3Q9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5GTE9BVCxjb21wb25lbnRzUGVyQXR0cmlidXRlOjIsdmFsdWVzOmh9KSksTX1mdW5jdGlvbiBOYSh0LGUsbixvLHIpe3JldHVybiB0W2UrK109b1tuXSx0W2UrK109b1tuKzFdLHRbZSsrXT1vW24rMl0sdFtlKytdPXJbbl0sdFtlKytdPXJbbisxXSx0W2VdPXJbbisyXSx0fWZ1bmN0aW9uIElhKHQsZSxuLG8pe3JldHVybiB0W2UrK109b1tuXSx0W2UrK109b1tuKzFdLHRbZSsrXT1vW25dLHRbZV09b1tuKzFdLHR9ZnVuY3Rpb24gTUIodCxlKXtsZXQgbj10Ll9zaGFkb3dWb2x1bWUsbz10Ll9vZmZzZXRBdHRyaWJ1dGUscj10Ll92ZXJ0ZXhGb3JtYXQsaT10Ll9leHRydWRlZEhlaWdodCxzPXQuX3N1cmZhY2VIZWlnaHQsZj10Ll9lbGxpcHNvaWQsdT1lLmhlaWdodCxjPWUud2lkdGgsbDtpZihuKXtsZXQgUXQ9cHQuY2xvbmUocix2eSk7UXQubm9ybWFsPSEwLHQuX3ZlcnRleEZvcm1hdD1RdH1sZXQgcD1hUih0LGUpO24mJih0Ll92ZXJ0ZXhGb3JtYXQ9cik7bGV0IGQ9UGUuc2NhbGVUb0dlb2RldGljSGVpZ2h0KHAuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMscyxmLCExKTtkPW5ldyBGbG9hdDY0QXJyYXkoZCk7bGV0IGg9ZC5sZW5ndGgsXz1oKjIsZz1uZXcgRmxvYXQ2NEFycmF5KF8pO2cuc2V0KGQpO2xldCBiPVBlLnNjYWxlVG9HZW9kZXRpY0hlaWdodChwLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLGksZik7Zy5zZXQoYixoKSxwLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzPWc7bGV0IHc9ci5ub3JtYWw/bmV3IEZsb2F0MzJBcnJheShfKTp2b2lkIDAsTz1yLnRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShfKTp2b2lkIDAsRT1yLmJpdGFuZ2VudD9uZXcgRmxvYXQzMkFycmF5KF8pOnZvaWQgMCxUPXIuc3Q/bmV3IEZsb2F0MzJBcnJheShfLzMqMik6dm9pZCAwLHgsTTtpZihyLm5vcm1hbCl7Zm9yKE09cC5hdHRyaWJ1dGVzLm5vcm1hbC52YWx1ZXMsdy5zZXQoTSksbD0wO2w8aDtsKyspTVtsXT0tTVtsXTt3LnNldChNLGgpLHAuYXR0cmlidXRlcy5ub3JtYWwudmFsdWVzPXd9aWYobil7TT1wLmF0dHJpYnV0ZXMubm9ybWFsLnZhbHVlcyxyLm5vcm1hbHx8KHAuYXR0cmlidXRlcy5ub3JtYWw9dm9pZCAwKTtsZXQgUXQ9bmV3IEZsb2F0MzJBcnJheShfKTtmb3IobD0wO2w8aDtsKyspTVtsXT0tTVtsXTtRdC5zZXQoTSxoKSxwLmF0dHJpYnV0ZXMuZXh0cnVkZURpcmVjdGlvbj1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6UXR9KX1sZXQgTixGPW0obyk7aWYoRil7bGV0IFF0PWgvMyoyLE5lPW5ldyBVaW50OEFycmF5KFF0KTtvPT09YWUuVE9QP05lPU5lLmZpbGwoMSwwLFF0LzIpOihOPW89PT1hZS5OT05FPzA6MSxOZT1OZS5maWxsKE4pKSxwLmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6TmV9KX1pZihyLnRhbmdlbnQpe2xldCBRdD1wLmF0dHJpYnV0ZXMudGFuZ2VudC52YWx1ZXM7Zm9yKE8uc2V0KFF0KSxsPTA7bDxoO2wrKylRdFtsXT0tUXRbbF07Ty5zZXQoUXQsaCkscC5hdHRyaWJ1dGVzLnRhbmdlbnQudmFsdWVzPU99aWYoci5iaXRhbmdlbnQpe2xldCBRdD1wLmF0dHJpYnV0ZXMuYml0YW5nZW50LnZhbHVlcztFLnNldChRdCksRS5zZXQoUXQsaCkscC5hdHRyaWJ1dGVzLmJpdGFuZ2VudC52YWx1ZXM9RX1yLnN0JiYoeD1wLmF0dHJpYnV0ZXMuc3QudmFsdWVzLFQuc2V0KHgpLFQuc2V0KHgsaC8zKjIpLHAuYXR0cmlidXRlcy5zdC52YWx1ZXM9VCk7bGV0IEk9cC5pbmRpY2VzLHY9SS5sZW5ndGgsQj1oLzMsQT1MdC5jcmVhdGVUeXBlZEFycmF5KF8vMyx2KjIpO2ZvcihBLnNldChJKSxsPTA7bDx2O2wrPTMpQVtsK3ZdPUlbbCsyXStCLEFbbCsxK3ZdPUlbbCsxXStCLEFbbCsyK3ZdPUlbbF0rQjtwLmluZGljZXM9QTtsZXQgUz1lLm5vcnRoQ2FwLEM9ZS5zb3V0aENhcCxMPXUsej0yLGo9MCxrPTQscT00O1MmJih6LT0xLEwtPTEsais9MSxrLT0yLHEtPTEpLEMmJih6LT0xLEwtPTEsais9MSxrLT0yLHEtPTEpLGorPXoqYysyKkwtaztsZXQgVz0oaitxKSoyLFI9bmV3IEZsb2F0NjRBcnJheShXKjMpLG50PW4/bmV3IEZsb2F0MzJBcnJheShXKjMpOnZvaWQgMCxhdD1GP25ldyBVaW50OEFycmF5KFcpOnZvaWQgMCxsdD1yLnN0P25ldyBGbG9hdDMyQXJyYXkoVyoyKTp2b2lkIDAsX3Q9bz09PWFlLlRPUDtGJiYhX3QmJihOPW89PT1hZS5BTEw/MTowLGF0PWF0LmZpbGwoTikpO2xldCBvdD0wLFB0PTAsZ3Q9MCxSdD0wLGR0PWMqTCxydDtmb3IobD0wO2w8ZHQ7bCs9YylydD1sKjMsUj1OYShSLG90LHJ0LGQsYiksb3QrPTYsci5zdCYmKGx0PUlhKGx0LFB0LGwqMix4KSxQdCs9NCksbiYmKGd0Kz0zLG50W2d0KytdPU1bcnRdLG50W2d0KytdPU1bcnQrMV0sbnRbZ3QrK109TVtydCsyXSksX3QmJihhdFtSdCsrXT0xLFJ0Kz0xKTtpZihDKXtsZXQgUXQ9Uz9kdCsxOmR0O2ZvcihydD1RdCozLGw9MDtsPDI7bCsrKVI9TmEoUixvdCxydCxkLGIpLG90Kz02LHIuc3QmJihsdD1JYShsdCxQdCxRdCoyLHgpLFB0Kz00KSxuJiYoZ3QrPTMsbnRbZ3QrK109TVtydF0sbnRbZ3QrK109TVtydCsxXSxudFtndCsrXT1NW3J0KzJdKSxfdCYmKGF0W1J0KytdPTEsUnQrPTEpfWVsc2UgZm9yKGw9ZHQtYztsPGR0O2wrKylydD1sKjMsUj1OYShSLG90LHJ0LGQsYiksb3QrPTYsci5zdCYmKGx0PUlhKGx0LFB0LGwqMix4KSxQdCs9NCksbiYmKGd0Kz0zLG50W2d0KytdPU1bcnRdLG50W2d0KytdPU1bcnQrMV0sbnRbZ3QrK109TVtydCsyXSksX3QmJihhdFtSdCsrXT0xLFJ0Kz0xKTtmb3IobD1kdC0xO2w+MDtsLT1jKXJ0PWwqMyxSPU5hKFIsb3QscnQsZCxiKSxvdCs9NixyLnN0JiYobHQ9SWEobHQsUHQsbCoyLHgpLFB0Kz00KSxuJiYoZ3QrPTMsbnRbZ3QrK109TVtydF0sbnRbZ3QrK109TVtydCsxXSxudFtndCsrXT1NW3J0KzJdKSxfdCYmKGF0W1J0KytdPTEsUnQrPTEpO2lmKFMpe2xldCBRdD1kdDtmb3IocnQ9UXQqMyxsPTA7bDwyO2wrKylSPU5hKFIsb3QscnQsZCxiKSxvdCs9NixyLnN0JiYobHQ9SWEobHQsUHQsUXQqMix4KSxQdCs9NCksbiYmKGd0Kz0zLG50W2d0KytdPU1bcnRdLG50W2d0KytdPU1bcnQrMV0sbnRbZ3QrK109TVtydCsyXSksX3QmJihhdFtSdCsrXT0xLFJ0Kz0xKX1lbHNlIGZvcihsPWMtMTtsPj0wO2wtLSlydD1sKjMsUj1OYShSLG90LHJ0LGQsYiksb3QrPTYsci5zdCYmKGx0PUlhKGx0LFB0LGwqMix4KSxQdCs9NCksbiYmKGd0Kz0zLG50W2d0KytdPU1bcnRdLG50W2d0KytdPU1bcnQrMV0sbnRbZ3QrK109TVtydCsyXSksX3QmJihhdFtSdCsrXT0xLFJ0Kz0xKTtsZXQgeHQ9UEIoUixyLGYpO3Iuc3QmJih4dC5hdHRyaWJ1dGVzLnN0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczpsdH0pKSxuJiYoeHQuYXR0cmlidXRlcy5leHRydWRlRGlyZWN0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpudH0pKSxGJiYoeHQuYXR0cmlidXRlcy5hcHBseU9mZnNldD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LlVOU0lHTkVEX0JZVEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZToxLHZhbHVlczphdH0pKTtsZXQgR3Q9THQuY3JlYXRlVHlwZWRBcnJheShXLGoqNikscGUscmUsZGUsZmU7aD1SLmxlbmd0aC8zO2xldCBadD0wO2ZvcihsPTA7bDxoLTE7bCs9Mil7cGU9bCxmZT0ocGUrMiklaDtsZXQgUXQ9YS5mcm9tQXJyYXkoUixwZSozLEl5KSxOZT1hLmZyb21BcnJheShSLGZlKjMsY1IpO2EuZXF1YWxzRXBzaWxvbihRdCxOZSxQLkVQU0lMT04xMCl8fChyZT0ocGUrMSklaCxkZT0ocmUrMiklaCxHdFtadCsrXT1wZSxHdFtadCsrXT1yZSxHdFtadCsrXT1mZSxHdFtadCsrXT1mZSxHdFtadCsrXT1yZSxHdFtadCsrXT1kZSl9cmV0dXJuIHh0LmluZGljZXM9R3QseHQ9R2UuY29tYmluZUluc3RhbmNlcyhbbmV3IGZvKHtnZW9tZXRyeTpwfSksbmV3IGZvKHtnZW9tZXRyeTp4dH0pXSkseHRbMF19ZnVuY3Rpb24gRnkodCxlLG4sbyxyKXtpZihuPT09MClyZXR1cm4gTnQuY2xvbmUodCxyKTtsZXQgaT1iby5jb21wdXRlT3B0aW9ucyh0LGUsbiwwLGlSLGZSKSxzPWkuaGVpZ2h0LGY9aS53aWR0aCx1PU5CO3JldHVybiBiby5jb21wdXRlUG9zaXRpb24oaSxvLCExLDAsMCx1WzBdKSxiby5jb21wdXRlUG9zaXRpb24oaSxvLCExLDAsZi0xLHVbMV0pLGJvLmNvbXB1dGVQb3NpdGlvbihpLG8sITEscy0xLDAsdVsyXSksYm8uY29tcHV0ZVBvc2l0aW9uKGksbywhMSxzLTEsZi0xLHVbM10pLE50LmZyb21DYXJ0ZXNpYW5BcnJheSh1LG8scil9ZnVuY3Rpb24gaGkodCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5yZWN0YW5nbGU7aWYoeS50eXBlT2Yub2JqZWN0KCJyZWN0YW5nbGUiLGUpLE50Ll92YWxpZGF0ZShlKSxlLm5vcnRoPGUuc291dGgpdGhyb3cgbmV3IEQoIm9wdGlvbnMucmVjdGFuZ2xlLm5vcnRoIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIG9wdGlvbnMucmVjdGFuZ2xlLnNvdXRoIik7bGV0IG49dC5oZWlnaHQ/PzAsbz10LmV4dHJ1ZGVkSGVpZ2h0Pz9uO3RoaXMuX3JlY3RhbmdsZT1OdC5jbG9uZShlKSx0aGlzLl9ncmFudWxhcml0eT10LmdyYW51bGFyaXR5Pz9QLlJBRElBTlNfUEVSX0RFR1JFRSx0aGlzLl9lbGxpcHNvaWQ9WS5jbG9uZSh0LmVsbGlwc29pZD8/WS5kZWZhdWx0KSx0aGlzLl9zdXJmYWNlSGVpZ2h0PU1hdGgubWF4KG4sbyksdGhpcy5fcm90YXRpb249dC5yb3RhdGlvbj8/MCx0aGlzLl9zdFJvdGF0aW9uPXQuc3RSb3RhdGlvbj8/MCx0aGlzLl92ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUodC52ZXJ0ZXhGb3JtYXQ/P3B0LkRFRkFVTFQpLHRoaXMuX2V4dHJ1ZGVkSGVpZ2h0PU1hdGgubWluKG4sbyksdGhpcy5fc2hhZG93Vm9sdW1lPXQuc2hhZG93Vm9sdW1lPz8hMSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVSZWN0YW5nbGVHZW9tZXRyeSIsdGhpcy5fb2Zmc2V0QXR0cmlidXRlPXQub2Zmc2V0QXR0cmlidXRlLHRoaXMuX3JvdGF0ZWRSZWN0YW5nbGU9dm9pZCAwLHRoaXMuX3RleHR1cmVDb29yZGluYXRlUm90YXRpb25Qb2ludHM9dm9pZCAwfWZ1bmN0aW9uIFVCKHQpe2lmKHQuX3N0Um90YXRpb249PT0wKXJldHVyblswLDAsMCwxLDEsMF07bGV0IGU9TnQuY2xvbmUodC5fcmVjdGFuZ2xlLGVSKSxuPXQuX2dyYW51bGFyaXR5LG89dC5fZWxsaXBzb2lkLHI9dC5fcm90YXRpb24tdC5fc3RSb3RhdGlvbixpPUZ5KGUsbixyLG8sZVIpLHM9TEI7c1swXS54PWkud2VzdCxzWzBdLnk9aS5zb3V0aCxzWzFdLng9aS53ZXN0LHNbMV0ueT1pLm5vcnRoLHNbMl0ueD1pLmVhc3Qsc1syXS55PWkuc291dGg7bGV0IGY9dC5yZWN0YW5nbGUsdT1aby5mcm9tUm90YXRpb24odC5fc3RSb3RhdGlvbixEQiksYz1OdC5jZW50ZXIoZixCQik7Zm9yKGxldCBfPTA7XzwzOysrXyl7bGV0IGc9c1tfXTtnLngtPWMubG9uZ2l0dWRlLGcueS09Yy5sYXRpdHVkZSxaby5tdWx0aXBseUJ5VmVjdG9yKHUsZyxnKSxnLngrPWMubG9uZ2l0dWRlLGcueSs9Yy5sYXRpdHVkZSxnLng9KGcueC1mLndlc3QpL2Yud2lkdGgsZy55PShnLnktZi5zb3V0aCkvZi5oZWlnaHR9bGV0IGw9c1swXSxwPXNbMV0sZD1zWzJdLGg9bmV3IEFycmF5KDYpO3JldHVybiBKLnBhY2sobCxoKSxKLnBhY2socCxoLDIpLEoucGFjayhkLGgsNCksaH12YXIgTnksblIsb1IsclIsaVIsUkIsU0IseEIsSXksY1IsdnksTkIsZlIsSUIsdVIsbFIseHMsdkIsdFIsRkIsZVIsTEIsREIsQkIsTHkscFI9JCgoKT0+e3ZlKCk7a2UoKTtEdCgpO0llKCk7V3QoKTtEZSgpO3llKCk7ZnQoKTtIdCgpOyR0KCk7WWUoKTskZSgpO2FuKCk7Y2MoKTtEbygpO2NpKCk7WmUoKTtLdCgpO2JmKCk7VW4oKTtLcigpO3RuKCk7WG8oKTtUbigpO015KCk7eG8oKTtOeT1uZXcgYSxuUj1uZXcgYSxvUj1uZXcgYSxyUj1uZXcgYSxpUj1uZXcgTnQsUkI9bmV3IEosU0I9bmV3IEF0LHhCPW5ldyBBdDtJeT1uZXcgYSxjUj1uZXcgYTt2eT1uZXcgcHQ7TkI9W25ldyBhLG5ldyBhLG5ldyBhLG5ldyBhXSxmUj1uZXcgY3QsSUI9bmV3IGN0O2hpLnBhY2tlZExlbmd0aD1OdC5wYWNrZWRMZW5ndGgrWS5wYWNrZWRMZW5ndGgrcHQucGFja2VkTGVuZ3RoKzc7aGkucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLHkuZGVmaW5lZCgiYXJyYXkiLGUpLG49bj8/MCxOdC5wYWNrKHQuX3JlY3RhbmdsZSxlLG4pLG4rPU50LnBhY2tlZExlbmd0aCxZLnBhY2sodC5fZWxsaXBzb2lkLGUsbiksbis9WS5wYWNrZWRMZW5ndGgscHQucGFjayh0Ll92ZXJ0ZXhGb3JtYXQsZSxuKSxuKz1wdC5wYWNrZWRMZW5ndGgsZVtuKytdPXQuX2dyYW51bGFyaXR5LGVbbisrXT10Ll9zdXJmYWNlSGVpZ2h0LGVbbisrXT10Ll9yb3RhdGlvbixlW24rK109dC5fc3RSb3RhdGlvbixlW24rK109dC5fZXh0cnVkZWRIZWlnaHQsZVtuKytdPXQuX3NoYWRvd1ZvbHVtZT8xOjAsZVtuXT10Ll9vZmZzZXRBdHRyaWJ1dGU/Py0xLGV9O3VSPW5ldyBOdCxsUj1ZLmNsb25lKFkuVU5JVF9TUEhFUkUpLHhzPXtyZWN0YW5nbGU6dVIsZWxsaXBzb2lkOmxSLHZlcnRleEZvcm1hdDp2eSxncmFudWxhcml0eTp2b2lkIDAsaGVpZ2h0OnZvaWQgMCxyb3RhdGlvbjp2b2lkIDAsc3RSb3RhdGlvbjp2b2lkIDAsZXh0cnVkZWRIZWlnaHQ6dm9pZCAwLHNoYWRvd1ZvbHVtZTp2b2lkIDAsb2Zmc2V0QXR0cmlidXRlOnZvaWQgMH07aGkudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXt5LmRlZmluZWQoImFycmF5Iix0KSxlPWU/PzA7bGV0IG89TnQudW5wYWNrKHQsZSx1Uik7ZSs9TnQucGFja2VkTGVuZ3RoO2xldCByPVkudW5wYWNrKHQsZSxsUik7ZSs9WS5wYWNrZWRMZW5ndGg7bGV0IGk9cHQudW5wYWNrKHQsZSx2eSk7ZSs9cHQucGFja2VkTGVuZ3RoO2xldCBzPXRbZSsrXSxmPXRbZSsrXSx1PXRbZSsrXSxjPXRbZSsrXSxsPXRbZSsrXSxwPXRbZSsrXT09PTEsZD10W2VdO3JldHVybiBtKG4pPyhuLl9yZWN0YW5nbGU9TnQuY2xvbmUobyxuLl9yZWN0YW5nbGUpLG4uX2VsbGlwc29pZD1ZLmNsb25lKHIsbi5fZWxsaXBzb2lkKSxuLl92ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUoaSxuLl92ZXJ0ZXhGb3JtYXQpLG4uX2dyYW51bGFyaXR5PXMsbi5fc3VyZmFjZUhlaWdodD1mLG4uX3JvdGF0aW9uPXUsbi5fc3RSb3RhdGlvbj1jLG4uX2V4dHJ1ZGVkSGVpZ2h0PWwsbi5fc2hhZG93Vm9sdW1lPXAsbi5fb2Zmc2V0QXR0cmlidXRlPWQ9PT0tMT92b2lkIDA6ZCxuKTooeHMuZ3JhbnVsYXJpdHk9cyx4cy5oZWlnaHQ9Zix4cy5yb3RhdGlvbj11LHhzLnN0Um90YXRpb249Yyx4cy5leHRydWRlZEhlaWdodD1sLHhzLnNoYWRvd1ZvbHVtZT1wLHhzLm9mZnNldEF0dHJpYnV0ZT1kPT09LTE/dm9pZCAwOmQsbmV3IGhpKHhzKSl9O2hpLmNvbXB1dGVSZWN0YW5nbGU9ZnVuY3Rpb24odCxlKXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgbj10LnJlY3RhbmdsZTtpZih5LnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsbiksTnQuX3ZhbGlkYXRlKG4pLG4ubm9ydGg8bi5zb3V0aCl0aHJvdyBuZXcgRCgib3B0aW9ucy5yZWN0YW5nbGUubm9ydGggbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gb3B0aW9ucy5yZWN0YW5nbGUuc291dGgiKTtsZXQgbz10LmdyYW51bGFyaXR5Pz9QLlJBRElBTlNfUEVSX0RFR1JFRSxyPXQuZWxsaXBzb2lkPz9ZLmRlZmF1bHQsaT10LnJvdGF0aW9uPz8wO3JldHVybiBGeShuLG8saSxyLGUpfTt2Qj1uZXcgWix0Uj1uZXcgdGUsRkI9bmV3IGN0O2hpLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2lmKFAuZXF1YWxzRXBzaWxvbih0Ll9yZWN0YW5nbGUubm9ydGgsdC5fcmVjdGFuZ2xlLnNvdXRoLFAuRVBTSUxPTjEwKXx8UC5lcXVhbHNFcHNpbG9uKHQuX3JlY3RhbmdsZS5lYXN0LHQuX3JlY3RhbmdsZS53ZXN0LFAuRVBTSUxPTjEwKSlyZXR1cm47bGV0IGU9dC5fcmVjdGFuZ2xlLG49dC5fZWxsaXBzb2lkLG89dC5fcm90YXRpb24scj10Ll9zdFJvdGF0aW9uLGk9dC5fdmVydGV4Rm9ybWF0LHM9Ym8uY29tcHV0ZU9wdGlvbnMoZSx0Ll9ncmFudWxhcml0eSxvLHIsaVIsZlIsSUIpLGY9dkI7aWYociE9PTB8fG8hPT0wKXtsZXQgaD1OdC5jZW50ZXIoZSxGQiksXz1uLmdlb2RldGljU3VyZmFjZU5vcm1hbENhcnRvZ3JhcGhpYyhoLEl5KTt0ZS5mcm9tQXhpc0FuZ2xlKF8sLXIsdFIpLFouZnJvbVF1YXRlcm5pb24odFIsZil9ZWxzZSBaLmNsb25lKFouSURFTlRJVFksZik7bGV0IHU9dC5fc3VyZmFjZUhlaWdodCxjPXQuX2V4dHJ1ZGVkSGVpZ2h0LGw9IVAuZXF1YWxzRXBzaWxvbih1LGMsMCxQLkVQU0lMT04yKTtzLmxvblNjYWxhcj0xL3QuX3JlY3RhbmdsZS53aWR0aCxzLmxhdFNjYWxhcj0xL3QuX3JlY3RhbmdsZS5oZWlnaHQscy50YW5nZW50Um90YXRpb25NYXRyaXg9ZjtsZXQgcCxkO2lmKGU9dC5fcmVjdGFuZ2xlLGwpe3A9TUIodCxzKTtsZXQgaD1BdC5mcm9tUmVjdGFuZ2xlM0QoZSxuLHUseEIpLF89QXQuZnJvbVJlY3RhbmdsZTNEKGUsbixjLFNCKTtkPUF0LnVuaW9uKGgsXyl9ZWxzZXtpZihwPWFSKHQscykscC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz1QZS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQocC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyx1LG4sITEpLG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IGg9cC5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgsXz10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1hZS5OT05FPzA6MSxnPW5ldyBVaW50OEFycmF5KGgvMykuZmlsbChfKTtwLmF0dHJpYnV0ZXMuYXBwbHlPZmZzZXQ9bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5VTlNJR05FRF9CWVRFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6MSx2YWx1ZXM6Z30pfWQ9QXQuZnJvbVJlY3RhbmdsZTNEKGUsbix1KX1yZXR1cm4gaS5wb3NpdGlvbnx8ZGVsZXRlIHAuYXR0cmlidXRlcy5wb3NpdGlvbixuZXcgVXQoe2F0dHJpYnV0ZXM6cC5hdHRyaWJ1dGVzLGluZGljZXM6cC5pbmRpY2VzLHByaW1pdGl2ZVR5cGU6cC5wcmltaXRpdmVUeXBlLGJvdW5kaW5nU3BoZXJlOmQsb2Zmc2V0QXR0cmlidXRlOnQuX29mZnNldEF0dHJpYnV0ZX0pfTtoaS5jcmVhdGVTaGFkb3dWb2x1bWU9ZnVuY3Rpb24odCxlLG4pe2xldCBvPXQuX2dyYW51bGFyaXR5LHI9dC5fZWxsaXBzb2lkLGk9ZShvLHIpLHM9bihvLHIpO3JldHVybiBuZXcgaGkoe3JlY3RhbmdsZTp0Ll9yZWN0YW5nbGUscm90YXRpb246dC5fcm90YXRpb24sZWxsaXBzb2lkOnIsc3RSb3RhdGlvbjp0Ll9zdFJvdGF0aW9uLGdyYW51bGFyaXR5Om8sZXh0cnVkZWRIZWlnaHQ6cyxoZWlnaHQ6aSx2ZXJ0ZXhGb3JtYXQ6cHQuUE9TSVRJT05fT05MWSxzaGFkb3dWb2x1bWU6ITB9KX07ZVI9bmV3IE50LExCPVtuZXcgSixuZXcgSixuZXcgSl0sREI9bmV3IFpvLEJCPW5ldyBjdDtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhoaS5wcm90b3R5cGUse3JlY3RhbmdsZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5fcm90YXRlZFJlY3RhbmdsZSl8fCh0aGlzLl9yb3RhdGVkUmVjdGFuZ2xlPUZ5KHRoaXMuX3JlY3RhbmdsZSx0aGlzLl9ncmFudWxhcml0eSx0aGlzLl9yb3RhdGlvbix0aGlzLl9lbGxpcHNvaWQpKSx0aGlzLl9yb3RhdGVkUmVjdGFuZ2xlfX0sdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50czp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIG0odGhpcy5fdGV4dHVyZUNvb3JkaW5hdGVSb3RhdGlvblBvaW50cyl8fCh0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzPVVCKHRoaXMpKSx0aGlzLl90ZXh0dXJlQ29vcmRpbmF0ZVJvdGF0aW9uUG9pbnRzfX19KTtMeT1oaX0pO3ZhciBEeT17fTtsZShEeSx7ZGVmYXVsdDooKT0+R0J9KTtmdW5jdGlvbiBrQih0LGUpe3JldHVybiBtKGUpJiYodD1MeS51bnBhY2sodCxlKSksdC5fZWxsaXBzb2lkPVkuY2xvbmUodC5fZWxsaXBzb2lkKSx0Ll9yZWN0YW5nbGU9TnQuY2xvbmUodC5fcmVjdGFuZ2xlKSxMeS5jcmVhdGVHZW9tZXRyeSh0KX12YXIgR0IsQnk9JCgoKT0+e2Z0KCk7JHQoKTtUbigpO3BSKCk7R0I9a0J9KTtmdW5jdGlvbiBkUih0LGUpe2xldCBuPXQuX2VsbGlwc29pZCxvPWUuaGVpZ2h0LHI9ZS53aWR0aCxpPWUubm9ydGhDYXAscz1lLnNvdXRoQ2FwLGY9byx1PTIsYz0wLGw9NDtpJiYodS09MSxmLT0xLGMrPTEsbC09MikscyYmKHUtPTEsZi09MSxjKz0xLGwtPTIpLGMrPXUqcisyKmYtbDtsZXQgcD1uZXcgRmxvYXQ2NEFycmF5KGMqMyksZD0wLGg9MCxfLGc9akI7aWYoaSliby5jb21wdXRlUG9zaXRpb24oZSxuLCExLGgsMCxnKSxwW2QrK109Zy54LHBbZCsrXT1nLnkscFtkKytdPWcuejtlbHNlIGZvcihfPTA7XzxyO18rKyliby5jb21wdXRlUG9zaXRpb24oZSxuLCExLGgsXyxnKSxwW2QrK109Zy54LHBbZCsrXT1nLnkscFtkKytdPWcuejtmb3IoXz1yLTEsaD0xO2g8bztoKyspYm8uY29tcHV0ZVBvc2l0aW9uKGUsbiwhMSxoLF8sZykscFtkKytdPWcueCxwW2QrK109Zy55LHBbZCsrXT1nLno7aWYoaD1vLTEsIXMpZm9yKF89ci0yO18+PTA7Xy0tKWJvLmNvbXB1dGVQb3NpdGlvbihlLG4sITEsaCxfLGcpLHBbZCsrXT1nLngscFtkKytdPWcueSxwW2QrK109Zy56O2ZvcihfPTAsaD1vLTI7aD4wO2gtLSliby5jb21wdXRlUG9zaXRpb24oZSxuLCExLGgsXyxnKSxwW2QrK109Zy54LHBbZCsrXT1nLnkscFtkKytdPWcuejtsZXQgYj1wLmxlbmd0aC8zKjIsdz1MdC5jcmVhdGVUeXBlZEFycmF5KHAubGVuZ3RoLzMsYiksTz0wO2ZvcihsZXQgVD0wO1Q8cC5sZW5ndGgvMy0xO1QrKyl3W08rK109VCx3W08rK109VCsxO3dbTysrXT1wLmxlbmd0aC8zLTEsd1tPKytdPTA7bGV0IEU9bmV3IFV0KHthdHRyaWJ1dGVzOm5ldyBpZSxwcmltaXRpdmVUeXBlOkJ0LkxJTkVTfSk7cmV0dXJuIEUuYXR0cmlidXRlcy5wb3NpdGlvbj1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkRPVUJMRSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjMsdmFsdWVzOnB9KSxFLmluZGljZXM9dyxFfWZ1bmN0aW9uIHFCKHQsZSl7bGV0IG49dC5fc3VyZmFjZUhlaWdodCxvPXQuX2V4dHJ1ZGVkSGVpZ2h0LHI9dC5fZWxsaXBzb2lkLGk9ZFIodCxlKSxzPWUuaGVpZ2h0LGY9ZS53aWR0aCx1PVBlLnNjYWxlVG9HZW9kZXRpY0hlaWdodChpLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLG4sciwhMSksYz11Lmxlbmd0aCxsPW5ldyBGbG9hdDY0QXJyYXkoYyoyKTtsLnNldCh1KTtsZXQgcD1QZS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQoaS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxvLHIpO2wuc2V0KHAsYyksaS5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz1sO2xldCBkPWUubm9ydGhDYXAsaD1lLnNvdXRoQ2FwLF89NDtkJiYoXy09MSksaCYmKF8tPTEpO2xldCBnPShsLmxlbmd0aC8zK18pKjIsYj1MdC5jcmVhdGVUeXBlZEFycmF5KGwubGVuZ3RoLzMsZyk7Yz1sLmxlbmd0aC82O2xldCB3PTA7Zm9yKGxldCBFPTA7RTxjLTE7RSsrKWJbdysrXT1FLGJbdysrXT1FKzEsYlt3KytdPUUrYyxiW3crK109RStjKzE7Ylt3KytdPWMtMSxiW3crK109MCxiW3crK109YytjLTEsYlt3KytdPWMsYlt3KytdPTAsYlt3KytdPWM7bGV0IE87aWYoZClPPXMtMTtlbHNle2xldCBFPWYtMTtiW3crK109RSxiW3crK109RStjLE89ZitzLTJ9aWYoYlt3KytdPU8sYlt3KytdPU8rYywhaCl7bGV0IEU9ZitPLTE7Ylt3KytdPUUsYlt3XT1FK2N9cmV0dXJuIGkuaW5kaWNlcz1iLGl9ZnVuY3Rpb24gRmEodCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5yZWN0YW5nbGUsbj10LmdyYW51bGFyaXR5Pz9QLlJBRElBTlNfUEVSX0RFR1JFRSxvPXQuZWxsaXBzb2lkPz9ZLmRlZmF1bHQscj10LnJvdGF0aW9uPz8wO2lmKCFtKGUpKXRocm93IG5ldyBEKCJyZWN0YW5nbGUgaXMgcmVxdWlyZWQuIik7aWYoTnQuX3ZhbGlkYXRlKGUpLGUubm9ydGg8ZS5zb3V0aCl0aHJvdyBuZXcgRCgib3B0aW9ucy5yZWN0YW5nbGUubm9ydGggbXVzdCBiZSBncmVhdGVyIHRoYW4gb3B0aW9ucy5yZWN0YW5nbGUuc291dGgiKTtsZXQgaT10LmhlaWdodD8/MCxzPXQuZXh0cnVkZWRIZWlnaHQ/P2k7dGhpcy5fcmVjdGFuZ2xlPU50LmNsb25lKGUpLHRoaXMuX2dyYW51bGFyaXR5PW4sdGhpcy5fZWxsaXBzb2lkPW8sdGhpcy5fc3VyZmFjZUhlaWdodD1NYXRoLm1heChpLHMpLHRoaXMuX3JvdGF0aW9uPXIsdGhpcy5fZXh0cnVkZWRIZWlnaHQ9TWF0aC5taW4oaSxzKSx0aGlzLl9vZmZzZXRBdHRyaWJ1dGU9dC5vZmZzZXRBdHRyaWJ1dGUsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlUmVjdGFuZ2xlT3V0bGluZUdlb21ldHJ5In12YXIgVkIsekIsakIsSEIsbVIsaFIsdmEsS0IsVXksX1I9JCgoKT0+e3ZlKCk7RHQoKTtJZSgpO0RlKCk7eWUoKTtmdCgpO0h0KCk7JHQoKTtZZSgpOyRlKCk7YW4oKTtEbygpO1plKCk7S3QoKTtLcigpO3RuKCk7VG4oKTtNeSgpO1ZCPW5ldyBBdCx6Qj1uZXcgQXQsakI9bmV3IGEsSEI9bmV3IE50O0ZhLnBhY2tlZExlbmd0aD1OdC5wYWNrZWRMZW5ndGgrWS5wYWNrZWRMZW5ndGgrNTtGYS5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgidmFsdWUgaXMgcmVxdWlyZWQiKTtpZighbShlKSl0aHJvdyBuZXcgRCgiYXJyYXkgaXMgcmVxdWlyZWQiKTtyZXR1cm4gbj1uPz8wLE50LnBhY2sodC5fcmVjdGFuZ2xlLGUsbiksbis9TnQucGFja2VkTGVuZ3RoLFkucGFjayh0Ll9lbGxpcHNvaWQsZSxuKSxuKz1ZLnBhY2tlZExlbmd0aCxlW24rK109dC5fZ3JhbnVsYXJpdHksZVtuKytdPXQuX3N1cmZhY2VIZWlnaHQsZVtuKytdPXQuX3JvdGF0aW9uLGVbbisrXT10Ll9leHRydWRlZEhlaWdodCxlW25dPXQuX29mZnNldEF0dHJpYnV0ZT8/LTEsZX07bVI9bmV3IE50LGhSPVkuY2xvbmUoWS5VTklUX1NQSEVSRSksdmE9e3JlY3RhbmdsZTptUixlbGxpcHNvaWQ6aFIsZ3JhbnVsYXJpdHk6dm9pZCAwLGhlaWdodDp2b2lkIDAscm90YXRpb246dm9pZCAwLGV4dHJ1ZGVkSGVpZ2h0OnZvaWQgMCxvZmZzZXRBdHRyaWJ1dGU6dm9pZCAwfTtGYS51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe2lmKCFtKHQpKXRocm93IG5ldyBEKCJhcnJheSBpcyByZXF1aXJlZCIpO2U9ZT8/MDtsZXQgbz1OdC51bnBhY2sodCxlLG1SKTtlKz1OdC5wYWNrZWRMZW5ndGg7bGV0IHI9WS51bnBhY2sodCxlLGhSKTtlKz1ZLnBhY2tlZExlbmd0aDtsZXQgaT10W2UrK10scz10W2UrK10sZj10W2UrK10sdT10W2UrK10sYz10W2VdO3JldHVybiBtKG4pPyhuLl9yZWN0YW5nbGU9TnQuY2xvbmUobyxuLl9yZWN0YW5nbGUpLG4uX2VsbGlwc29pZD1ZLmNsb25lKHIsbi5fZWxsaXBzb2lkKSxuLl9zdXJmYWNlSGVpZ2h0PXMsbi5fcm90YXRpb249ZixuLl9leHRydWRlZEhlaWdodD11LG4uX29mZnNldEF0dHJpYnV0ZT1jPT09LTE/dm9pZCAwOmMsbik6KHZhLmdyYW51bGFyaXR5PWksdmEuaGVpZ2h0PXMsdmEucm90YXRpb249Zix2YS5leHRydWRlZEhlaWdodD11LHZhLm9mZnNldEF0dHJpYnV0ZT1jPT09LTE/dm9pZCAwOmMsbmV3IEZhKHZhKSl9O0tCPW5ldyBjdDtGYS5jcmVhdGVHZW9tZXRyeT1mdW5jdGlvbih0KXtsZXQgZT10Ll9yZWN0YW5nbGUsbj10Ll9lbGxpcHNvaWQsbz1iby5jb21wdXRlT3B0aW9ucyhlLHQuX2dyYW51bGFyaXR5LHQuX3JvdGF0aW9uLDAsSEIsS0IpLHIsaTtpZihQLmVxdWFsc0Vwc2lsb24oZS5ub3J0aCxlLnNvdXRoLFAuRVBTSUxPTjEwKXx8UC5lcXVhbHNFcHNpbG9uKGUuZWFzdCxlLndlc3QsUC5FUFNJTE9OMTApKXJldHVybjtsZXQgcz10Ll9zdXJmYWNlSGVpZ2h0LGY9dC5fZXh0cnVkZWRIZWlnaHQsdT0hUC5lcXVhbHNFcHNpbG9uKHMsZiwwLFAuRVBTSUxPTjIpLGM7aWYodSl7aWYocj1xQih0LG8pLG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IGQ9ci5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGgvMyxoPW5ldyBVaW50OEFycmF5KGQpO3QuX29mZnNldEF0dHJpYnV0ZT09PWFlLlRPUD9oPWguZmlsbCgxLDAsZC8yKTooYz10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1hZS5OT05FPzA6MSxoPWguZmlsbChjKSksci5hdHRyaWJ1dGVzLmFwcGx5T2Zmc2V0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOmh9KX1sZXQgbD1BdC5mcm9tUmVjdGFuZ2xlM0QoZSxuLHMsekIpLHA9QXQuZnJvbVJlY3RhbmdsZTNEKGUsbixmLFZCKTtpPUF0LnVuaW9uKGwscCl9ZWxzZXtpZihyPWRSKHQsbyksci5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcz1QZS5zY2FsZVRvR2VvZGV0aWNIZWlnaHQoci5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxzLG4sITEpLG0odC5fb2Zmc2V0QXR0cmlidXRlKSl7bGV0IGw9ci5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcy5sZW5ndGg7Yz10Ll9vZmZzZXRBdHRyaWJ1dGU9PT1hZS5OT05FPzA6MTtsZXQgcD1uZXcgVWludDhBcnJheShsLzMpLmZpbGwoYyk7ci5hdHRyaWJ1dGVzLmFwcGx5T2Zmc2V0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjEsdmFsdWVzOnB9KX1pPUF0LmZyb21SZWN0YW5nbGUzRChlLG4scyl9cmV0dXJuIG5ldyBVdCh7YXR0cmlidXRlczpyLmF0dHJpYnV0ZXMsaW5kaWNlczpyLmluZGljZXMscHJpbWl0aXZlVHlwZTpCdC5MSU5FUyxib3VuZGluZ1NwaGVyZTppLG9mZnNldEF0dHJpYnV0ZTp0Ll9vZmZzZXRBdHRyaWJ1dGV9KX07VXk9RmF9KTt2YXIga3k9e307bGUoa3kse2RlZmF1bHQ6KCk9PlhCfSk7ZnVuY3Rpb24gV0IodCxlKXtyZXR1cm4gbShlKSYmKHQ9VXkudW5wYWNrKHQsZSkpLHQuX2VsbGlwc29pZD1ZLmNsb25lKHQuX2VsbGlwc29pZCksdC5fcmVjdGFuZ2xlPU50LmNsb25lKHQuX3JlY3RhbmdsZSksVXkuY3JlYXRlR2VvbWV0cnkodCl9dmFyIFhCLEd5PSQoKCk9PntmdCgpOyR0KCk7VG4oKTtfUigpO1hCPVdCfSk7ZnVuY3Rpb24gWUIodCxlLG4sbyxyLGkscyl7bGV0IGY9QW4ubnVtYmVyT2ZQb2ludHModCxlLHIpLHUsYz1uLnJlZCxsPW4uZ3JlZW4scD1uLmJsdWUsZD1uLmFscGhhLGg9by5yZWQsXz1vLmdyZWVuLGc9by5ibHVlLGI9by5hbHBoYTtpZihuZS5lcXVhbHMobixvKSl7Zm9yKHU9MDt1PGY7dSsrKWlbcysrXT1uZS5mbG9hdFRvQnl0ZShjKSxpW3MrK109bmUuZmxvYXRUb0J5dGUobCksaVtzKytdPW5lLmZsb2F0VG9CeXRlKHApLGlbcysrXT1uZS5mbG9hdFRvQnl0ZShkKTtyZXR1cm4gc31sZXQgdz0oaC1jKS9mLE89KF8tbCkvZixFPShnLXApL2YsVD0oYi1kKS9mLHg9cztmb3IodT0wO3U8Zjt1KyspaVt4KytdPW5lLmZsb2F0VG9CeXRlKGMrdSp3KSxpW3grK109bmUuZmxvYXRUb0J5dGUobCt1Kk8pLGlbeCsrXT1uZS5mbG9hdFRvQnl0ZShwK3UqRSksaVt4KytdPW5lLmZsb2F0VG9CeXRlKGQrdSpUKTtyZXR1cm4geH1mdW5jdGlvbiBpdSh0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10LnBvc2l0aW9ucyxuPXQuY29sb3JzLG89dC5jb2xvcnNQZXJWZXJ0ZXg/PyExO2lmKCFtKGUpfHxlLmxlbmd0aDwyKXRocm93IG5ldyBEKCJBdCBsZWFzdCB0d28gcG9zaXRpb25zIGFyZSByZXF1aXJlZC4iKTtpZihtKG4pJiYobyYmbi5sZW5ndGg8ZS5sZW5ndGh8fCFvJiZuLmxlbmd0aDxlLmxlbmd0aC0xKSl0aHJvdyBuZXcgRCgiY29sb3JzIGhhcyBhbiBpbnZhbGlkIGxlbmd0aC4iKTt0aGlzLl9wb3NpdGlvbnM9ZSx0aGlzLl9jb2xvcnM9bix0aGlzLl9jb2xvcnNQZXJWZXJ0ZXg9byx0aGlzLl9hcmNUeXBlPXQuYXJjVHlwZT8/aGUuR0VPREVTSUMsdGhpcy5fZ3JhbnVsYXJpdHk9dC5ncmFudWxhcml0eT8/UC5SQURJQU5TX1BFUl9ERUdSRUUsdGhpcy5fZWxsaXBzb2lkPXQuZWxsaXBzb2lkPz9ZLmRlZmF1bHQsdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlU2ltcGxlUG9seWxpbmVHZW9tZXRyeSI7bGV0IHI9MStlLmxlbmd0aCphLnBhY2tlZExlbmd0aDtyKz1tKG4pPzErbi5sZW5ndGgqbmUucGFja2VkTGVuZ3RoOjEsdGhpcy5wYWNrZWRMZW5ndGg9citZLnBhY2tlZExlbmd0aCszfXZhciBVZCxrZCwkQixWeSx5Uj0kKCgpPT57dWMoKTt2ZSgpO0R0KCk7TWEoKTtEZSgpO3llKCk7ZnQoKTtIdCgpOyR0KCk7WWUoKTskZSgpO2FuKCk7WmUoKTtLdCgpO2dhKCk7dG4oKTtpdS5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgidmFsdWUgaXMgcmVxdWlyZWQiKTtpZighbShlKSl0aHJvdyBuZXcgRCgiYXJyYXkgaXMgcmVxdWlyZWQiKTtuPW4/PzA7bGV0IG8scj10Ll9wb3NpdGlvbnMsaT1yLmxlbmd0aDtmb3IoZVtuKytdPWksbz0wO288aTsrK28sbis9YS5wYWNrZWRMZW5ndGgpYS5wYWNrKHJbb10sZSxuKTtsZXQgcz10Ll9jb2xvcnM7Zm9yKGk9bShzKT9zLmxlbmd0aDowLGVbbisrXT1pLG89MDtvPGk7KytvLG4rPW5lLnBhY2tlZExlbmd0aCluZS5wYWNrKHNbb10sZSxuKTtyZXR1cm4gWS5wYWNrKHQuX2VsbGlwc29pZCxlLG4pLG4rPVkucGFja2VkTGVuZ3RoLGVbbisrXT10Ll9jb2xvcnNQZXJWZXJ0ZXg/MTowLGVbbisrXT10Ll9hcmNUeXBlLGVbbl09dC5fZ3JhbnVsYXJpdHksZX07aXUudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgiYXJyYXkgaXMgcmVxdWlyZWQiKTtlPWU/PzA7bGV0IG8scj10W2UrK10saT1uZXcgQXJyYXkocik7Zm9yKG89MDtvPHI7KytvLGUrPWEucGFja2VkTGVuZ3RoKWlbb109YS51bnBhY2sodCxlKTtyPXRbZSsrXTtsZXQgcz1yPjA/bmV3IEFycmF5KHIpOnZvaWQgMDtmb3Iobz0wO288cjsrK28sZSs9bmUucGFja2VkTGVuZ3RoKXNbb109bmUudW5wYWNrKHQsZSk7bGV0IGY9WS51bnBhY2sodCxlKTtlKz1ZLnBhY2tlZExlbmd0aDtsZXQgdT10W2UrK109PT0xLGM9dFtlKytdLGw9dFtlXTtyZXR1cm4gbShuKT8obi5fcG9zaXRpb25zPWksbi5fY29sb3JzPXMsbi5fZWxsaXBzb2lkPWYsbi5fY29sb3JzUGVyVmVydGV4PXUsbi5fYXJjVHlwZT1jLG4uX2dyYW51bGFyaXR5PWwsbik6bmV3IGl1KHtwb3NpdGlvbnM6aSxjb2xvcnM6cyxlbGxpcHNvaWQ6Zixjb2xvcnNQZXJWZXJ0ZXg6dSxhcmNUeXBlOmMsZ3JhbnVsYXJpdHk6bH0pfTtVZD1uZXcgQXJyYXkoMiksa2Q9bmV3IEFycmF5KDIpLCRCPXtwb3NpdGlvbnM6VWQsaGVpZ2h0OmtkLGVsbGlwc29pZDp2b2lkIDAsbWluRGlzdGFuY2U6dm9pZCAwLGdyYW51bGFyaXR5OnZvaWQgMH07aXUuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7bGV0IGU9dC5fcG9zaXRpb25zLG49dC5fY29sb3JzLG89dC5fY29sb3JzUGVyVmVydGV4LHI9dC5fYXJjVHlwZSxpPXQuX2dyYW51bGFyaXR5LHM9dC5fZWxsaXBzb2lkLGY9UC5jaG9yZExlbmd0aChpLHMubWF4aW11bVJhZGl1cyksdT1tKG4pJiYhbyxjLGw9ZS5sZW5ndGgscCxkLGgsXyxnPTA7aWYocj09PWhlLkdFT0RFU0lDfHxyPT09aGUuUkhVTUIpe2xldCBULHgsTTtyPT09aGUuR0VPREVTSUM/KFQ9UC5jaG9yZExlbmd0aChpLHMubWF4aW11bVJhZGl1cykseD1Bbi5udW1iZXJPZlBvaW50cyxNPUFuLmdlbmVyYXRlQXJjKTooVD1pLHg9QW4ubnVtYmVyT2ZQb2ludHNSaHVtYkxpbmUsTT1Bbi5nZW5lcmF0ZVJodW1iQXJjKTtsZXQgTj1Bbi5leHRyYWN0SGVpZ2h0cyhlLHMpLEY9JEI7aWYocj09PWhlLkdFT0RFU0lDP0YubWluRGlzdGFuY2U9ZjpGLmdyYW51bGFyaXR5PWksRi5lbGxpcHNvaWQ9cyx1KXtsZXQgST0wO2ZvcihjPTA7YzxsLTE7YysrKUkrPXgoZVtjXSxlW2MrMV0sVCkrMTtwPW5ldyBGbG9hdDY0QXJyYXkoSSozKSxoPW5ldyBVaW50OEFycmF5KEkqNCksRi5wb3NpdGlvbnM9VWQsRi5oZWlnaHQ9a2Q7bGV0IHY9MDtmb3IoYz0wO2M8bC0xOysrYyl7VWRbMF09ZVtjXSxVZFsxXT1lW2MrMV0sa2RbMF09TltjXSxrZFsxXT1OW2MrMV07bGV0IEI9TShGKTtpZihtKG4pKXtsZXQgQT1CLmxlbmd0aC8zO189bltjXTtmb3IobGV0IFM9MDtTPEE7KytTKWhbdisrXT1uZS5mbG9hdFRvQnl0ZShfLnJlZCksaFt2KytdPW5lLmZsb2F0VG9CeXRlKF8uZ3JlZW4pLGhbdisrXT1uZS5mbG9hdFRvQnl0ZShfLmJsdWUpLGhbdisrXT1uZS5mbG9hdFRvQnl0ZShfLmFscGhhKX1wLnNldChCLGcpLGcrPUIubGVuZ3RofX1lbHNlIGlmKEYucG9zaXRpb25zPWUsRi5oZWlnaHQ9TixwPW5ldyBGbG9hdDY0QXJyYXkoTShGKSksbShuKSl7Zm9yKGg9bmV3IFVpbnQ4QXJyYXkocC5sZW5ndGgvMyo0KSxjPTA7YzxsLTE7KytjKXtsZXQgdj1lW2NdLEI9ZVtjKzFdLEE9bltjXSxTPW5bYysxXTtnPVlCKHYsQixBLFMsZixoLGcpfWxldCBJPW5bbC0xXTtoW2crK109bmUuZmxvYXRUb0J5dGUoSS5yZWQpLGhbZysrXT1uZS5mbG9hdFRvQnl0ZShJLmdyZWVuKSxoW2crK109bmUuZmxvYXRUb0J5dGUoSS5ibHVlKSxoW2crK109bmUuZmxvYXRUb0J5dGUoSS5hbHBoYSl9fWVsc2V7ZD11P2wqMi0yOmwscD1uZXcgRmxvYXQ2NEFycmF5KGQqMyksaD1tKG4pP25ldyBVaW50OEFycmF5KGQqNCk6dm9pZCAwO2xldCBUPTAseD0wO2ZvcihjPTA7YzxsOysrYyl7bGV0IE09ZVtjXTtpZih1JiZjPjAmJihhLnBhY2soTSxwLFQpLFQrPTMsXz1uW2MtMV0saFt4KytdPW5lLmZsb2F0VG9CeXRlKF8ucmVkKSxoW3grK109bmUuZmxvYXRUb0J5dGUoXy5ncmVlbiksaFt4KytdPW5lLmZsb2F0VG9CeXRlKF8uYmx1ZSksaFt4KytdPW5lLmZsb2F0VG9CeXRlKF8uYWxwaGEpKSx1JiZjPT09bC0xKWJyZWFrO2EucGFjayhNLHAsVCksVCs9MyxtKG4pJiYoXz1uW2NdLGhbeCsrXT1uZS5mbG9hdFRvQnl0ZShfLnJlZCksaFt4KytdPW5lLmZsb2F0VG9CeXRlKF8uZ3JlZW4pLGhbeCsrXT1uZS5mbG9hdFRvQnl0ZShfLmJsdWUpLGhbeCsrXT1uZS5mbG9hdFRvQnl0ZShfLmFscGhhKSl9fWxldCBiPW5ldyBpZTtiLnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6cH0pLG0obikmJihiLmNvbG9yPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuVU5TSUdORURfQllURSxjb21wb25lbnRzUGVyQXR0cmlidXRlOjQsdmFsdWVzOmgsbm9ybWFsaXplOiEwfSkpLGQ9cC5sZW5ndGgvMztsZXQgdz0oZC0xKSoyLE89THQuY3JlYXRlVHlwZWRBcnJheShkLHcpLEU9MDtmb3IoYz0wO2M8ZC0xOysrYylPW0UrK109YyxPW0UrK109YysxO3JldHVybiBuZXcgVXQoe2F0dHJpYnV0ZXM6YixpbmRpY2VzOk8scHJpbWl0aXZlVHlwZTpCdC5MSU5FUyxib3VuZGluZ1NwaGVyZTpBdC5mcm9tUG9pbnRzKGUpfSl9O1Z5PWl1fSk7dmFyIHp5PXt9O2xlKHp5LHtkZWZhdWx0OigpPT5RQn0pO2Z1bmN0aW9uIFpCKHQsZSl7cmV0dXJuIG0oZSkmJih0PVZ5LnVucGFjayh0LGUpKSx0Ll9lbGxpcHNvaWQ9WS5jbG9uZSh0Ll9lbGxpcHNvaWQpLFZ5LmNyZWF0ZUdlb21ldHJ5KHQpfXZhciBRQixqeT0kKCgpPT57ZnQoKTskdCgpO3lSKCk7UUI9WkJ9KTtmdW5jdGlvbiBMYSh0KXtsZXQgZT10LnJhZGl1cz8/MSxvPXtyYWRpaTpuZXcgYShlLGUsZSksc3RhY2tQYXJ0aXRpb25zOnQuc3RhY2tQYXJ0aXRpb25zLHNsaWNlUGFydGl0aW9uczp0LnNsaWNlUGFydGl0aW9ucyx2ZXJ0ZXhGb3JtYXQ6dC52ZXJ0ZXhGb3JtYXR9O3RoaXMuX2VsbGlwc29pZEdlb21ldHJ5PW5ldyBjcihvKSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVTcGhlcmVHZW9tZXRyeSJ9dmFyIEpCLENzLEh5LGdSPSQoKCk9PntEdCgpO1d0KCk7ZnQoKTtUZCgpO3hvKCk7TGEucGFja2VkTGVuZ3RoPWNyLnBhY2tlZExlbmd0aDtMYS5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4geS50eXBlT2Yub2JqZWN0KCJ2YWx1ZSIsdCksY3IucGFjayh0Ll9lbGxpcHNvaWRHZW9tZXRyeSxlLG4pfTtKQj1uZXcgY3IsQ3M9e3JhZGl1czp2b2lkIDAscmFkaWk6bmV3IGEsdmVydGV4Rm9ybWF0Om5ldyBwdCxzdGFja1BhcnRpdGlvbnM6dm9pZCAwLHNsaWNlUGFydGl0aW9uczp2b2lkIDB9O0xhLnVucGFjaz1mdW5jdGlvbih0LGUsbil7bGV0IG89Y3IudW5wYWNrKHQsZSxKQik7cmV0dXJuIENzLnZlcnRleEZvcm1hdD1wdC5jbG9uZShvLl92ZXJ0ZXhGb3JtYXQsQ3MudmVydGV4Rm9ybWF0KSxDcy5zdGFja1BhcnRpdGlvbnM9by5fc3RhY2tQYXJ0aXRpb25zLENzLnNsaWNlUGFydGl0aW9ucz1vLl9zbGljZVBhcnRpdGlvbnMsbShuKT8oYS5jbG9uZShvLl9yYWRpaSxDcy5yYWRpaSksbi5fZWxsaXBzb2lkR2VvbWV0cnk9bmV3IGNyKENzKSxuKTooQ3MucmFkaXVzPW8uX3JhZGlpLngsbmV3IExhKENzKSl9O0xhLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe3JldHVybiBjci5jcmVhdGVHZW9tZXRyeSh0Ll9lbGxpcHNvaWRHZW9tZXRyeSl9O0h5PUxhfSk7dmFyIHF5PXt9O2xlKHF5LHtkZWZhdWx0OigpPT5lNH0pO2Z1bmN0aW9uIHQ0KHQsZSl7cmV0dXJuIG0oZSkmJih0PUh5LnVucGFjayh0LGUpKSxIeS5jcmVhdGVHZW9tZXRyeSh0KX12YXIgZTQsS3k9JCgoKT0+e2Z0KCk7Z1IoKTtlND10NH0pO2Z1bmN0aW9uIERhKHQpe2xldCBlPXQucmFkaXVzPz8xLG89e3JhZGlpOm5ldyBhKGUsZSxlKSxzdGFja1BhcnRpdGlvbnM6dC5zdGFja1BhcnRpdGlvbnMsc2xpY2VQYXJ0aXRpb25zOnQuc2xpY2VQYXJ0aXRpb25zLHN1YmRpdmlzaW9uczp0LnN1YmRpdmlzaW9uc307dGhpcy5fZWxsaXBzb2lkR2VvbWV0cnk9bmV3IFhyKG8pLHRoaXMuX3dvcmtlck5hbWU9ImNyZWF0ZVNwaGVyZU91dGxpbmVHZW9tZXRyeSJ9dmFyIG40LFRjLFd5LEFSPSQoKCk9PntEdCgpO1d0KCk7ZnQoKTtQXygpO0RhLnBhY2tlZExlbmd0aD1Yci5wYWNrZWRMZW5ndGg7RGEucGFjaz1mdW5jdGlvbih0LGUsbil7cmV0dXJuIHkudHlwZU9mLm9iamVjdCgidmFsdWUiLHQpLFhyLnBhY2sodC5fZWxsaXBzb2lkR2VvbWV0cnksZSxuKX07bjQ9bmV3IFhyLFRjPXtyYWRpdXM6dm9pZCAwLHJhZGlpOm5ldyBhLHN0YWNrUGFydGl0aW9uczp2b2lkIDAsc2xpY2VQYXJ0aXRpb25zOnZvaWQgMCxzdWJkaXZpc2lvbnM6dm9pZCAwfTtEYS51bnBhY2s9ZnVuY3Rpb24odCxlLG4pe2xldCBvPVhyLnVucGFjayh0LGUsbjQpO3JldHVybiBUYy5zdGFja1BhcnRpdGlvbnM9by5fc3RhY2tQYXJ0aXRpb25zLFRjLnNsaWNlUGFydGl0aW9ucz1vLl9zbGljZVBhcnRpdGlvbnMsVGMuc3ViZGl2aXNpb25zPW8uX3N1YmRpdmlzaW9ucyxtKG4pPyhhLmNsb25lKG8uX3JhZGlpLFRjLnJhZGlpKSxuLl9lbGxpcHNvaWRHZW9tZXRyeT1uZXcgWHIoVGMpLG4pOihUYy5yYWRpdXM9by5fcmFkaWkueCxuZXcgRGEoVGMpKX07RGEuY3JlYXRlR2VvbWV0cnk9ZnVuY3Rpb24odCl7cmV0dXJuIFhyLmNyZWF0ZUdlb21ldHJ5KHQuX2VsbGlwc29pZEdlb21ldHJ5KX07V3k9RGF9KTt2YXIgWHk9e307bGUoWHkse2RlZmF1bHQ6KCk9PnI0fSk7ZnVuY3Rpb24gbzQodCxlKXtyZXR1cm4gbShlKSYmKHQ9V3kudW5wYWNrKHQsZSkpLFd5LmNyZWF0ZUdlb21ldHJ5KHQpfXZhciByNCxZeT0kKCgpPT57ZnQoKTtBUigpO3I0PW80fSk7dmFyICR5PXt9O2xlKCR5LHtkZWZhdWx0OigpPT5FNH0pO2Z1bmN0aW9uIGE0KHQsZSxuLG8scixpLHMpe2xldCBmPXQubGVuZ3RoLHU9bmV3IEZsb2F0NjRBcnJheShmKjMpO2ZvcihsZXQgYz0wO2M8ZjsrK2Mpe2xldCBsPXRbY10scD1lW2NdLGQ9bltjXSxoPVAubGVycChvLndlc3Qsby5lYXN0LGwvc3UpLF89UC5sZXJwKG8uc291dGgsby5ub3J0aCxwL3N1KSxnPVAubGVycChyLGksZC9zdSksYj1jdC5mcm9tUmFkaWFucyhoLF8sZyxzNCksdz1zLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKGIsYzQpO2EucGFjayh3LHUsYyozKX1yZXR1cm4gdX1mdW5jdGlvbiBmNCh0KXtsZXQgZT10Lmxlbmd0aCxuPW5ldyBVaW50MzJBcnJheShlKzEpLG89MDtmb3IobGV0IHI9MDtyPGU7KytyKW5bcl09byxvKz10W3JdO3JldHVybiBuW2VdPW8sbn1mdW5jdGlvbiBwNCh0LGUsbixvKXtsZXQgcj1vLmxlbmd0aCxpPXQubGVuZ3RoLHM9bmV3IFVpbnQ4QXJyYXkoaSksZj11NCx1PWw0LGM9MDtmb3IobGV0IHA9MDtwPHI7cCsrKXtsZXQgZD1vW3BdLGg9ZDtmb3IobGV0IF89MTtfPGQ7XysrKXtsZXQgZz1jK18sYj1nLTE7dS5sb25naXR1ZGU9dFtnXSx1LmxhdGl0dWRlPWVbZ10sZi5sb25naXR1ZGU9dFtiXSxmLmxhdGl0dWRlPWVbYl0sY3QuZXF1YWxzKHUsZikmJihoLS0sc1tiXT0xKX1vW3BdPWgsYys9ZH1sZXQgbD0wO2ZvcihsZXQgcD0wO3A8aTtwKyspc1twXSE9PTEmJih0W2xdPXRbcF0sZVtsXT1lW3BdLG5bbF09bltwXSxsKyspfWZ1bmN0aW9uIEVSKHQpe2xldCBlPXQqOCxuPWUqMyxvPWUqNDt0aGlzLnN0YXJ0RWxsaXBzb2lkTm9ybWFscz1uZXcgRmxvYXQzMkFycmF5KG4pLHRoaXMuZW5kRWxsaXBzb2lkTm9ybWFscz1uZXcgRmxvYXQzMkFycmF5KG4pLHRoaXMuc3RhcnRQb3NpdGlvbkFuZEhlaWdodHM9bmV3IEZsb2F0MzJBcnJheShvKSx0aGlzLnN0YXJ0RmFjZU5vcm1hbEFuZFZlcnRleENvcm5lcklkcz1uZXcgRmxvYXQzMkFycmF5KG8pLHRoaXMuZW5kUG9zaXRpb25BbmRIZWlnaHRzPW5ldyBGbG9hdDMyQXJyYXkobyksdGhpcy5lbmRGYWNlTm9ybWFsQW5kSGFsZldpZHRocz1uZXcgRmxvYXQzMkFycmF5KG8pLHRoaXMudmVydGV4QmF0Y2hJZHM9bmV3IFVpbnQxNkFycmF5KGUpLHRoaXMuaW5kaWNlcz1MdC5jcmVhdGVUeXBlZEFycmF5KGUsMzYqdCksdGhpcy52ZWMzT2Zmc2V0PTAsdGhpcy52ZWM0T2Zmc2V0PTAsdGhpcy5iYXRjaElkT2Zmc2V0PTAsdGhpcy5pbmRleE9mZnNldD0wLHRoaXMudm9sdW1lU3RhcnRJbmRleD0wfWZ1bmN0aW9uIHdSKHQsZSxuLG8scil7bGV0IGk9YS5zdWJ0cmFjdChuLGUsZDQpLHM9YS5zdWJ0cmFjdChlLHQsYlIpO3JldHVybiBhLm5vcm1hbGl6ZShpLGkpLGEubm9ybWFsaXplKHMscyksYS5kb3QoaSxzKTxpNCYmKHM9YS5tdWx0aXBseUJ5U2NhbGFyKHMsLTEsYlIpKSxhLmFkZChpLHMsciksYS5lcXVhbHMocixhLlpFUk8pJiYocj1hLnN1YnRyYWN0KHQsZSkpLGEuY3Jvc3MocixvLHIpLGEuY3Jvc3MobyxyLHIpLGEubm9ybWFsaXplKHIscikscn1mdW5jdGlvbiBPNCh0LGUpe2xldCBuPW5ldyBVaW50MTZBcnJheSh0LnBvc2l0aW9ucyksbz1uZXcgVWludDE2QXJyYXkodC53aWR0aHMpLHI9bmV3IFVpbnQzMkFycmF5KHQuY291bnRzKSxpPW5ldyBVaW50MTZBcnJheSh0LmJhdGNoSWRzKSxzPWc0LGY9QTQsdT1iNCxjPW5ldyBGbG9hdDY0QXJyYXkodC5wYWNrZWRCdWZmZXIpLGw9MCxwPWNbbCsrXSxkPWNbbCsrXTtOdC51bnBhY2soYyxsLHMpLGwrPU50LnBhY2tlZExlbmd0aCxZLnVucGFjayhjLGwsZiksbCs9WS5wYWNrZWRMZW5ndGgsYS51bnBhY2soYyxsLHUpO2xldCBoLF89bi5sZW5ndGgvMyxnPW4uc3ViYXJyYXkoMCxfKSxiPW4uc3ViYXJyYXkoXywyKl8pLHc9bi5zdWJhcnJheSgyKl8sMypfKTtubi56aWdaYWdEZWx0YURlY29kZShnLGIsdykscDQoZyxiLHcscik7bGV0IE89ci5sZW5ndGgsRT0wO2ZvcihoPTA7aDxPO2grKyl7bGV0IEI9cltoXTtFKz1CLTF9bGV0IFQ9bmV3IEVSKEUpLHg9YTQoZyxiLHcscyxwLGQsZix1KTtfPWcubGVuZ3RoO2xldCBNPW5ldyBGbG9hdDMyQXJyYXkoXyozKTtmb3IoaD0wO2g8XzsrK2gpTVtoKjNdPXhbaCozXS11LngsTVtoKjMrMV09eFtoKjMrMV0tdS55LE1baCozKzJdPXhbaCozKzJdLXUuejtsZXQgTj0wLEY9MDtmb3IoaD0wO2g8TztoKyspe2xldCBCPXJbaF0tMSxBPW9baF0qLjUsUz1pW2hdLEM9Tjtmb3IobGV0IEw9MDtMPEI7TCsrKXtsZXQgej1hLnVucGFjayhNLE4sdzQpLGo9YS51bnBhY2soTSxOKzMsVDQpLGs9d1tGXSxxPXdbRisxXTtrPVAubGVycChwLGQsay9zdSkscT1QLmxlcnAocCxkLHEvc3UpLEYrKztsZXQgVz1HZCxSPVZkO2lmKEw9PT0wKXtsZXQgbnQ9QytCKjMsYXQ9YS51bnBhY2soTSxudCxHZCk7aWYoYS5lcXVhbHMoYXQseikpYS51bnBhY2soTSxudC0zLFcpO2Vsc2V7bGV0IGx0PWEuc3VidHJhY3QoeixqLEdkKTtXPWEuYWRkKGx0LHosR2QpfX1lbHNlIGEudW5wYWNrKE0sTi0zLFcpO2lmKEw9PT1CLTEpe2xldCBudD1hLnVucGFjayhNLEMsVmQpO2lmKGEuZXF1YWxzKG50LGopKWEudW5wYWNrKE0sQyszLFIpO2Vsc2V7bGV0IGF0PWEuc3VidHJhY3Qoaix6LFZkKTtSPWEuYWRkKGF0LGosVmQpfX1lbHNlIGEudW5wYWNrKE0sTis2LFIpO1QuYWRkVm9sdW1lKFcseixqLFIsayxxLEEsUyx1LGYpLE4rPTN9Tis9MyxGKyt9bGV0IEk9VC5pbmRpY2VzO2UucHVzaChULnN0YXJ0RWxsaXBzb2lkTm9ybWFscy5idWZmZXIpLGUucHVzaChULmVuZEVsbGlwc29pZE5vcm1hbHMuYnVmZmVyKSxlLnB1c2goVC5zdGFydFBvc2l0aW9uQW5kSGVpZ2h0cy5idWZmZXIpLGUucHVzaChULnN0YXJ0RmFjZU5vcm1hbEFuZFZlcnRleENvcm5lcklkcy5idWZmZXIpLGUucHVzaChULmVuZFBvc2l0aW9uQW5kSGVpZ2h0cy5idWZmZXIpLGUucHVzaChULmVuZEZhY2VOb3JtYWxBbmRIYWxmV2lkdGhzLmJ1ZmZlciksZS5wdXNoKFQudmVydGV4QmF0Y2hJZHMuYnVmZmVyKSxlLnB1c2goSS5idWZmZXIpO2xldCB2PXtpbmRleERhdGF0eXBlOkkuQllURVNfUEVSX0VMRU1FTlQ9PT0yP0x0LlVOU0lHTkVEX1NIT1JUOkx0LlVOU0lHTkVEX0lOVCxzdGFydEVsbGlwc29pZE5vcm1hbHM6VC5zdGFydEVsbGlwc29pZE5vcm1hbHMuYnVmZmVyLGVuZEVsbGlwc29pZE5vcm1hbHM6VC5lbmRFbGxpcHNvaWROb3JtYWxzLmJ1ZmZlcixzdGFydFBvc2l0aW9uQW5kSGVpZ2h0czpULnN0YXJ0UG9zaXRpb25BbmRIZWlnaHRzLmJ1ZmZlcixzdGFydEZhY2VOb3JtYWxBbmRWZXJ0ZXhDb3JuZXJJZHM6VC5zdGFydEZhY2VOb3JtYWxBbmRWZXJ0ZXhDb3JuZXJJZHMuYnVmZmVyLGVuZFBvc2l0aW9uQW5kSGVpZ2h0czpULmVuZFBvc2l0aW9uQW5kSGVpZ2h0cy5idWZmZXIsZW5kRmFjZU5vcm1hbEFuZEhhbGZXaWR0aHM6VC5lbmRGYWNlTm9ybWFsQW5kSGFsZldpZHRocy5idWZmZXIsdmVydGV4QmF0Y2hJZHM6VC52ZXJ0ZXhCYXRjaElkcy5idWZmZXIsaW5kaWNlczpJLmJ1ZmZlcn07aWYodC5rZWVwRGVjb2RlZFBvc2l0aW9ucyl7bGV0IEI9ZjQocik7ZS5wdXNoKHguYnVmZmVyLEIuYnVmZmVyKSx2PXlyKHYse2RlY29kZWRQb3NpdGlvbnM6eC5idWZmZXIsZGVjb2RlZFBvc2l0aW9uT2Zmc2V0czpCLmJ1ZmZlcn0pfXJldHVybiB2fXZhciBzdSxpNCxzNCxjNCx1NCxsNCxiUixkNCxSUixUUixPUixtNCxoNCxfNCx5NCxnNCxBNCxiNCxHZCx3NCxUNCxWZCxFNCxaeT0kKCgpPT57ZnMoKTtEdCgpO0llKCk7Y3AoKTskdCgpO1plKCk7S3QoKTtUbigpO1puKCk7c3U9MzI3NjcsaTQ9TWF0aC5jb3MoUC50b1JhZGlhbnMoMTUwKSksczQ9bmV3IGN0LGM0PW5ldyBhO3U0PW5ldyBjdCxsND1uZXcgY3Q7YlI9bmV3IGEsZDQ9bmV3IGE7UlI9WzAsMiw2LDAsNiw0LDAsMSwzLDAsMywyLDAsNCw1LDAsNSwxLDUsMywxLDUsNywzLDcsNSw0LDcsNCw2LDcsNiwyLDcsMiwzXSxUUj1SUi5sZW5ndGgsT1I9bmV3IGEsbTQ9bmV3IGEsaDQ9bmV3IGEsXzQ9bmV3IGEseTQ9bmV3IGE7RVIucHJvdG90eXBlLmFkZFZvbHVtZT1mdW5jdGlvbih0LGUsbixvLHIsaSxzLGYsdSxjKXtsZXQgbD1hLmFkZChlLHUsT1IpLHA9Yy5nZW9kZXRpY1N1cmZhY2VOb3JtYWwobCxtNCk7bD1hLmFkZChuLHUsT1IpO2xldCBkPWMuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGwsXzQpLGg9d1IodCxlLG4scCxoNCksXz13UihvLG4sZSxkLHk0KSxnPXRoaXMuc3RhcnRFbGxpcHNvaWROb3JtYWxzLGI9dGhpcy5lbmRFbGxpcHNvaWROb3JtYWxzLHc9dGhpcy5zdGFydFBvc2l0aW9uQW5kSGVpZ2h0cyxPPXRoaXMuc3RhcnRGYWNlTm9ybWFsQW5kVmVydGV4Q29ybmVySWRzLEU9dGhpcy5lbmRQb3NpdGlvbkFuZEhlaWdodHMsVD10aGlzLmVuZEZhY2VOb3JtYWxBbmRIYWxmV2lkdGhzLHg9dGhpcy52ZXJ0ZXhCYXRjaElkcyxNPXRoaXMuYmF0Y2hJZE9mZnNldCxOPXRoaXMudmVjM09mZnNldCxGPXRoaXMudmVjNE9mZnNldCxJO2ZvcihJPTA7STw4O0krKylhLnBhY2socCxnLE4pLGEucGFjayhkLGIsTiksYS5wYWNrKGUsdyxGKSx3W0YrM109cixhLnBhY2sobixFLEYpLEVbRiszXT1pLGEucGFjayhoLE8sRiksT1tGKzNdPUksYS5wYWNrKF8sVCxGKSxUW0YrM109cyx4W00rK109ZixOKz0zLEYrPTQ7dGhpcy5iYXRjaElkT2Zmc2V0PU0sdGhpcy52ZWMzT2Zmc2V0PU4sdGhpcy52ZWM0T2Zmc2V0PUY7bGV0IHY9dGhpcy5pbmRpY2VzLEI9dGhpcy52b2x1bWVTdGFydEluZGV4LEE9dGhpcy5pbmRleE9mZnNldDtmb3IoST0wO0k8VFI7SSsrKXZbQStJXT1SUltJXStCO3RoaXMudm9sdW1lU3RhcnRJbmRleCs9OCx0aGlzLmluZGV4T2Zmc2V0Kz1UUn07ZzQ9bmV3IE50LEE0PW5ldyBZLGI0PW5ldyBhLEdkPW5ldyBhLHc0PW5ldyBhLFQ0PW5ldyBhLFZkPW5ldyBhO0U0PVVlKE80KX0pO2Z1bmN0aW9uIFI0KHQpe3RoaXMub2Zmc2V0PXQub2Zmc2V0LHRoaXMuY291bnQ9dC5jb3VudCx0aGlzLmNvbG9yPXQuY29sb3IsdGhpcy5iYXRjaElkcz10LmJhdGNoSWRzfXZhciBTUix4Uj0kKCgpPT57U1I9UjR9KTt2YXIgUXk9e307bGUoUXkse2RlZmF1bHQ6KCk9Pms0fSk7ZnVuY3Rpb24gTTQodCxlKXtsZXQgbj1lKlM0LG89YS51bnBhY2sodCxuLGpkKTtuKz1hLnBhY2tlZExlbmd0aDtsZXQgcj1zdC51bnBhY2sodCxuLENyLm1vZGVsTWF0cml4KTtzdC5tdWx0aXBseUJ5U2NhbGUocixvLHIpO2xldCBpPUNyLmJvdW5kaW5nVm9sdW1lO3JldHVybiBhLmNsb25lKGEuWkVSTyxpLmNlbnRlciksaS5yYWRpdXM9TWF0aC5zcXJ0KDMpLENyfWZ1bmN0aW9uIE40KHQsZSl7bGV0IG49ZSp4NCxvPXRbbisrXSxyPXRbbisrXSxpPWEuZnJvbUVsZW1lbnRzKG8sbyxyLGpkKSxzPXN0LnVucGFjayh0LG4sQ3IubW9kZWxNYXRyaXgpO3N0Lm11bHRpcGx5QnlTY2FsZShzLGkscyk7bGV0IGY9Q3IuYm91bmRpbmdWb2x1bWU7cmV0dXJuIGEuY2xvbmUoYS5aRVJPLGYuY2VudGVyKSxmLnJhZGl1cz1NYXRoLnNxcnQoMiksQ3J9ZnVuY3Rpb24gSTQodCxlKXtsZXQgbj1lKkM0LG89YS51bnBhY2sodCxuLGpkKTtuKz1hLnBhY2tlZExlbmd0aDtsZXQgcj1zdC51bnBhY2sodCxuLENyLm1vZGVsTWF0cml4KTtzdC5tdWx0aXBseUJ5U2NhbGUocixvLHIpO2xldCBpPUNyLmJvdW5kaW5nVm9sdW1lO3JldHVybiBhLmNsb25lKGEuWkVSTyxpLmNlbnRlciksaS5yYWRpdXM9MSxDcn1mdW5jdGlvbiB2NCh0LGUpe2xldCBuPWUqUDQsbz10W24rK10scj1hLnVucGFjayh0LG4samQpLGk9c3QuZnJvbVRyYW5zbGF0aW9uKHIsQ3IubW9kZWxNYXRyaXgpO3N0Lm11bHRpcGx5QnlVbmlmb3JtU2NhbGUoaSxvLGkpO2xldCBzPUNyLmJvdW5kaW5nVm9sdW1lO3JldHVybiBhLmNsb25lKGEuWkVSTyxzLmNlbnRlcikscy5yYWRpdXM9MSxDcn1mdW5jdGlvbiB6ZCh0LGUsbixvLHIpe2lmKCFtKGUpKXJldHVybjtsZXQgaT1uLmxlbmd0aCxzPW8uYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMsZj1vLmluZGljZXMsdT10LnBvc2l0aW9ucyxjPXQudmVydGV4QmF0Y2hJZHMsbD10LmluZGljZXMscD10LmJhdGNoSWRzLGQ9dC5iYXRjaFRhYmxlQ29sb3JzLGg9dC5iYXRjaGVkSW5kaWNlcyxfPXQuaW5kZXhPZmZzZXRzLGc9dC5pbmRleENvdW50cyxiPXQuYm91bmRpbmdWb2x1bWVzLHc9dC5tb2RlbE1hdHJpeCxPPXQuY2VudGVyLEU9dC5wb3NpdGlvbk9mZnNldCxUPXQuYmF0Y2hJZEluZGV4LHg9dC5pbmRleE9mZnNldCxNPXQuYmF0Y2hlZEluZGljZXNPZmZzZXQ7Zm9yKGxldCBOPTA7TjxpOysrTil7bGV0IEY9cihlLE4pLEk9Ri5tb2RlbE1hdHJpeDtzdC5tdWx0aXBseSh3LEksSSk7bGV0IHY9bltOXSxCPXMubGVuZ3RoO2ZvcihsZXQgQz0wO0M8QjtDKz0zKXtsZXQgTD1hLnVucGFjayhzLEMsRjQpO3N0Lm11bHRpcGx5QnlQb2ludChJLEwsTCksYS5zdWJ0cmFjdChMLE8sTCksYS5wYWNrKEwsdSxFKjMrQyksY1tUKytdPXZ9bGV0IEE9Zi5sZW5ndGg7Zm9yKGxldCBDPTA7QzxBOysrQylsW3grQ109ZltDXStFO2xldCBTPU4rTTtoW1NdPW5ldyBTUih7b2Zmc2V0OngsY291bnQ6QSxjb2xvcjpuZS5mcm9tUmdiYShkW3ZdKSxiYXRjaElkczpbdl19KSxwW1NdPXYsX1tTXT14LGdbU109QSxiW1NdPUF0LnRyYW5zZm9ybShGLmJvdW5kaW5nVm9sdW1lLEkpLEUrPUIvMyx4Kz1BfXQucG9zaXRpb25PZmZzZXQ9RSx0LmJhdGNoSWRJbmRleD1ULHQuaW5kZXhPZmZzZXQ9eCx0LmJhdGNoZWRJbmRpY2VzT2Zmc2V0Kz1pfWZ1bmN0aW9uIEw0KHQpe2xldCBlPW5ldyBGbG9hdDY0QXJyYXkodCksbj0wO2EudW5wYWNrKGUsbixDUiksbis9YS5wYWNrZWRMZW5ndGgsc3QudW5wYWNrKGUsbixQUil9ZnVuY3Rpb24gRDQodCl7bGV0IGU9dC5sZW5ndGgsbj0wO2ZvcihsZXQgbz0wO288ZTsrK28pbis9bmUucGFja2VkTGVuZ3RoKzMrdFtvXS5iYXRjaElkcy5sZW5ndGg7cmV0dXJuIG59ZnVuY3Rpb24gQjQodCxlLG4pe2xldCBvPW4ubGVuZ3RoLHI9MitvKkF0LnBhY2tlZExlbmd0aCsxK0Q0KGUpLGk9bmV3IEZsb2F0NjRBcnJheShyKSxzPTA7aVtzKytdPXQsaVtzKytdPW87Zm9yKGxldCB1PTA7dTxvOysrdSlBdC5wYWNrKG5bdV0saSxzKSxzKz1BdC5wYWNrZWRMZW5ndGg7bGV0IGY9ZS5sZW5ndGg7aVtzKytdPWY7Zm9yKGxldCB1PTA7dTxmOysrdSl7bGV0IGM9ZVt1XTtuZS5wYWNrKGMuY29sb3IsaSxzKSxzKz1uZS5wYWNrZWRMZW5ndGgsaVtzKytdPWMub2Zmc2V0LGlbcysrXT1jLmNvdW50O2xldCBsPWMuYmF0Y2hJZHMscD1sLmxlbmd0aDtpW3MrK109cDtmb3IobGV0IGQ9MDtkPHA7KytkKWlbcysrXT1sW2RdfXJldHVybiBpfWZ1bmN0aW9uIFU0KHQsZSl7bGV0IG49bSh0LmJveGVzKT9uZXcgRmxvYXQzMkFycmF5KHQuYm94ZXMpOnZvaWQgMCxvPW0odC5ib3hCYXRjaElkcyk/bmV3IFVpbnQxNkFycmF5KHQuYm94QmF0Y2hJZHMpOnZvaWQgMCxyPW0odC5jeWxpbmRlcnMpP25ldyBGbG9hdDMyQXJyYXkodC5jeWxpbmRlcnMpOnZvaWQgMCxpPW0odC5jeWxpbmRlckJhdGNoSWRzKT9uZXcgVWludDE2QXJyYXkodC5jeWxpbmRlckJhdGNoSWRzKTp2b2lkIDAscz1tKHQuZWxsaXBzb2lkcyk/bmV3IEZsb2F0MzJBcnJheSh0LmVsbGlwc29pZHMpOnZvaWQgMCxmPW0odC5lbGxpcHNvaWRCYXRjaElkcyk/bmV3IFVpbnQxNkFycmF5KHQuZWxsaXBzb2lkQmF0Y2hJZHMpOnZvaWQgMCx1PW0odC5zcGhlcmVzKT9uZXcgRmxvYXQzMkFycmF5KHQuc3BoZXJlcyk6dm9pZCAwLGM9bSh0LnNwaGVyZUJhdGNoSWRzKT9uZXcgVWludDE2QXJyYXkodC5zcGhlcmVCYXRjaElkcyk6dm9pZCAwLGw9bShuKT9vLmxlbmd0aDowLHA9bShyKT9pLmxlbmd0aDowLGQ9bShzKT9mLmxlbmd0aDowLGg9bSh1KT9jLmxlbmd0aDowLF89eGYuZ2V0VW5pdEJveCgpLGc9cWYuZ2V0VW5pdEN5bGluZGVyKCksYj1jci5nZXRVbml0RWxsaXBzb2lkKCksdz1fLmF0dHJpYnV0ZXMucG9zaXRpb24udmFsdWVzLE89Zy5hdHRyaWJ1dGVzLnBvc2l0aW9uLnZhbHVlcyxFPWIuYXR0cmlidXRlcy5wb3NpdGlvbi52YWx1ZXMsVD13Lmxlbmd0aCpsO1QrPU8ubGVuZ3RoKnAsVCs9RS5sZW5ndGgqKGQraCk7bGV0IHg9Xy5pbmRpY2VzLE09Zy5pbmRpY2VzLE49Yi5pbmRpY2VzLEY9eC5sZW5ndGgqbDtGKz1NLmxlbmd0aCpwLEYrPU4ubGVuZ3RoKihkK2gpO2xldCBJPW5ldyBGbG9hdDMyQXJyYXkoVCksdj1uZXcgVWludDE2QXJyYXkoVC8zKSxCPUx0LmNyZWF0ZVR5cGVkQXJyYXkoVC8zLEYpLEE9bCtwK2QraCxTPW5ldyBVaW50MTZBcnJheShBKSxDPW5ldyBBcnJheShBKSxMPW5ldyBVaW50MzJBcnJheShBKSx6PW5ldyBVaW50MzJBcnJheShBKSxqPW5ldyBBcnJheShBKTtMNCh0LnBhY2tlZEJ1ZmZlcik7bGV0IGs9e2JhdGNoVGFibGVDb2xvcnM6bmV3IFVpbnQzMkFycmF5KHQuYmF0Y2hUYWJsZUNvbG9ycykscG9zaXRpb25zOkksdmVydGV4QmF0Y2hJZHM6dixpbmRpY2VzOkIsYmF0Y2hJZHM6UyxiYXRjaGVkSW5kaWNlczpDLGluZGV4T2Zmc2V0czpMLGluZGV4Q291bnRzOnosYm91bmRpbmdWb2x1bWVzOmoscG9zaXRpb25PZmZzZXQ6MCxiYXRjaElkSW5kZXg6MCxpbmRleE9mZnNldDowLGJhdGNoZWRJbmRpY2VzT2Zmc2V0OjAsbW9kZWxNYXRyaXg6UFIsY2VudGVyOkNSfTt6ZChrLG4sbyxfLE00KSx6ZChrLHIsaSxnLE40KSx6ZChrLHMsZixiLEk0KSx6ZChrLHUsYyxiLHY0KTtsZXQgcT1CNChCLkJZVEVTX1BFUl9FTEVNRU5ULEMsaik7cmV0dXJuIGUucHVzaChJLmJ1ZmZlcix2LmJ1ZmZlcixCLmJ1ZmZlciksZS5wdXNoKFMuYnVmZmVyLEwuYnVmZmVyLHouYnVmZmVyKSxlLnB1c2gocS5idWZmZXIpLHtwb3NpdGlvbnM6SS5idWZmZXIsdmVydGV4QmF0Y2hJZHM6di5idWZmZXIsaW5kaWNlczpCLmJ1ZmZlcixpbmRleE9mZnNldHM6TC5idWZmZXIsaW5kZXhDb3VudHM6ei5idWZmZXIsYmF0Y2hJZHM6Uy5idWZmZXIscGFja2VkQnVmZmVyOnEuYnVmZmVyfX12YXIgamQsUzQseDQsQzQsUDQsQ3IsRjQsQ1IsUFIsazQsSnk9JCgoKT0+e3ZlKCk7bDAoKTtEdCgpO01hKCk7aF8oKTtmdCgpO1RkKCk7WmUoKTtrbigpO3hSKCk7Wm4oKTtqZD1uZXcgYSxTND1zdC5wYWNrZWRMZW5ndGgrYS5wYWNrZWRMZW5ndGgseDQ9c3QucGFja2VkTGVuZ3RoKzIsQzQ9c3QucGFja2VkTGVuZ3RoK2EucGFja2VkTGVuZ3RoLFA0PWEucGFja2VkTGVuZ3RoKzEsQ3I9e21vZGVsTWF0cml4Om5ldyBzdCxib3VuZGluZ1ZvbHVtZTpuZXcgQXR9O0Y0PW5ldyBhO0NSPW5ldyBhLFBSPW5ldyBzdDtrND1VZShVNCl9KTt2YXIgZWc9e307bGUoZWcse2RlZmF1bHQ6KCk9Pkg0fSk7ZnVuY3Rpb24gejQodCl7dD1uZXcgRmxvYXQ2NEFycmF5KHQpO2xldCBlPTA7SGQubWluPXRbZSsrXSxIZC5tYXg9dFtlKytdLE50LnVucGFjayh0LGUsTVIpLGUrPU50LnBhY2tlZExlbmd0aCxZLnVucGFjayh0LGUsTlIpfWZ1bmN0aW9uIGo0KHQsZSl7bGV0IG49bmV3IFVpbnQxNkFycmF5KHQucG9zaXRpb25zKTt6NCh0LnBhY2tlZEJ1ZmZlcik7bGV0IG89TVIscj1OUixpPUhkLm1pbixzPUhkLm1heCxmPW4ubGVuZ3RoLzMsdT1uLnN1YmFycmF5KDAsZiksYz1uLnN1YmFycmF5KGYsMipmKSxsPW4uc3ViYXJyYXkoMipmLDMqZik7bm4uemlnWmFnRGVsdGFEZWNvZGUodSxjLGwpO2xldCBwPW5ldyBGbG9hdDY0QXJyYXkobi5sZW5ndGgpO2ZvcihsZXQgZD0wO2Q8ZjsrK2Qpe2xldCBoPXVbZF0sXz1jW2RdLGc9bFtkXSxiPVAubGVycChvLndlc3Qsby5lYXN0LGgvdGcpLHc9UC5sZXJwKG8uc291dGgsby5ub3J0aCxfL3RnKSxPPVAubGVycChpLHMsZy90ZyksRT1jdC5mcm9tUmFkaWFucyhiLHcsTyxHNCksVD1yLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKEUsVjQpO2EucGFjayhULHAsZCozKX1yZXR1cm4gZS5wdXNoKHAuYnVmZmVyKSx7cG9zaXRpb25zOnAuYnVmZmVyfX12YXIgdGcsRzQsVjQsTVIsTlIsSGQsSDQsbmc9JCgoKT0+e2ZzKCk7RHQoKTtJZSgpOyR0KCk7S3QoKTtUbigpO1puKCk7dGc9MzI3NjcsRzQ9bmV3IGN0LFY0PW5ldyBhLE1SPW5ldyBOdCxOUj1uZXcgWSxIZD17bWluOnZvaWQgMCxtYXg6dm9pZCAwfTtIND1VZShqNCl9KTt2YXIgb2c9e307bGUob2cse2RlZmF1bHQ6KCk9PnRVfSk7ZnVuY3Rpb24gcTQodCl7bGV0IGU9bmV3IEZsb2F0NjRBcnJheSh0KSxuPTA7QmEuaW5kZXhCeXRlc1BlckVsZW1lbnQ9ZVtuKytdLEJhLm1pbj1lW24rK10sQmEubWF4PWVbbisrXSxhLnVucGFjayhlLG4sTFIpLG4rPWEucGFja2VkTGVuZ3RoLFkudW5wYWNrKGUsbixEUiksbis9WS5wYWNrZWRMZW5ndGgsTnQudW5wYWNrKGUsbixCUil9ZnVuY3Rpb24gSzQodCl7bGV0IGU9dC5sZW5ndGgsbj0wO2ZvcihsZXQgbz0wO288ZTsrK28pbis9bmUucGFja2VkTGVuZ3RoKzMrdFtvXS5iYXRjaElkcy5sZW5ndGg7cmV0dXJuIG59ZnVuY3Rpb24gVzQodCxlLG4pe2xldCBvPWUubGVuZ3RoLHI9MitvKkNvLnBhY2tlZExlbmd0aCsxK0s0KG4pLGk9bmV3IEZsb2F0NjRBcnJheShyKSxzPTA7aVtzKytdPXQsaVtzKytdPW87Zm9yKGxldCB1PTA7dTxvOysrdSlDby5wYWNrKGVbdV0saSxzKSxzKz1Dby5wYWNrZWRMZW5ndGg7bGV0IGY9bi5sZW5ndGg7aVtzKytdPWY7Zm9yKGxldCB1PTA7dTxmOysrdSl7bGV0IGM9blt1XTtuZS5wYWNrKGMuY29sb3IsaSxzKSxzKz1uZS5wYWNrZWRMZW5ndGgsaVtzKytdPWMub2Zmc2V0LGlbcysrXT1jLmNvdW50O2xldCBsPWMuYmF0Y2hJZHMscD1sLmxlbmd0aDtpW3MrK109cDtmb3IobGV0IGQ9MDtkPHA7KytkKWlbcysrXT1sW2RdfXJldHVybiBpfWZ1bmN0aW9uIEo0KHQsZSl7cTQodC5wYWNrZWRCdWZmZXIpO2xldCBuO0JhLmluZGV4Qnl0ZXNQZXJFbGVtZW50PT09Mj9uPW5ldyBVaW50MTZBcnJheSh0LmluZGljZXMpOm49bmV3IFVpbnQzMkFycmF5KHQuaW5kaWNlcyk7bGV0IHI9bmV3IFVpbnQxNkFycmF5KHQucG9zaXRpb25zKSxpPW5ldyBVaW50MzJBcnJheSh0LmNvdW50cykscz1uZXcgVWludDMyQXJyYXkodC5pbmRleENvdW50cyksZj1uZXcgVWludDMyQXJyYXkodC5iYXRjaElkcyksdT1uZXcgVWludDMyQXJyYXkodC5iYXRjaFRhYmxlQ29sb3JzKSxjPW5ldyBBcnJheShpLmxlbmd0aCksbD1MUixwPURSLGQ9QlIsaD1CYS5taW4sXz1CYS5tYXgsZz10Lm1pbmltdW1IZWlnaHRzLGI9dC5tYXhpbXVtSGVpZ2h0czttKGcpJiZtKGIpJiYoZz1uZXcgRmxvYXQzMkFycmF5KGcpLGI9bmV3IEZsb2F0MzJBcnJheShiKSk7bGV0IHcsTyxFLFQ9ci5sZW5ndGgvMix4PXIuc3ViYXJyYXkoMCxUKSxNPXIuc3ViYXJyYXkoVCwyKlQpO25uLnppZ1phZ0RlbHRhRGVjb2RlKHgsTSk7bGV0IE49bmV3IEZsb2F0NjRBcnJheShUKjMpO2Zvcih3PTA7dzxUOysrdyl7bGV0IG90PXhbd10sUHQ9TVt3XSxndD1QLmxlcnAoZC53ZXN0LGQuZWFzdCxvdC9JUiksUnQ9UC5sZXJwKGQuc291dGgsZC5ub3J0aCxQdC9JUiksZHQ9Y3QuZnJvbVJhZGlhbnMoZ3QsUnQsMCxGUikscnQ9cC5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihkdCx2Uik7YS5wYWNrKHJ0LE4sdyozKX1sZXQgRj1pLmxlbmd0aCxJPW5ldyBBcnJheShGKSx2PW5ldyBBcnJheShGKSxCPTAsQT0wO2Zvcih3PTA7dzxGOysrdylJW3ddPUIsdlt3XT1BLEIrPWlbd10sQSs9c1t3XTtsZXQgUz1uZXcgRmxvYXQzMkFycmF5KFQqMyoyKSxDPW5ldyBVaW50MTZBcnJheShUKjIpLEw9bmV3IFVpbnQzMkFycmF5KHYubGVuZ3RoKSx6PW5ldyBVaW50MzJBcnJheShzLmxlbmd0aCksaj1bXSxrPXt9O2Zvcih3PTA7dzxGOysrdylFPXVbd10sbShrW0VdKT8oa1tFXS5wb3NpdGlvbkxlbmd0aCs9aVt3XSxrW0VdLmluZGV4TGVuZ3RoKz1zW3ddLGtbRV0uYmF0Y2hJZHMucHVzaCh3KSk6a1tFXT17cG9zaXRpb25MZW5ndGg6aVt3XSxpbmRleExlbmd0aDpzW3ddLG9mZnNldDowLGluZGV4T2Zmc2V0OjAsYmF0Y2hJZHM6W3ddfTtsZXQgcSxXPTAsUj0wO2ZvcihFIGluIGspaWYoay5oYXNPd25Qcm9wZXJ0eShFKSl7cT1rW0VdLHEub2Zmc2V0PVcscS5pbmRleE9mZnNldD1SO2xldCBvdD1xLnBvc2l0aW9uTGVuZ3RoKjIsUHQ9cS5pbmRleExlbmd0aCoyK3EucG9zaXRpb25MZW5ndGgqNjtXKz1vdCxSKz1QdCxxLmluZGV4TGVuZ3RoPVB0fWxldCBudD1bXTtmb3IoRSBpbiBrKWsuaGFzT3duUHJvcGVydHkoRSkmJihxPWtbRV0sbnQucHVzaCh7Y29sb3I6bmUuZnJvbVJnYmEocGFyc2VJbnQoRSkpLG9mZnNldDpxLmluZGV4T2Zmc2V0LGNvdW50OnEuaW5kZXhMZW5ndGgsYmF0Y2hJZHM6cS5iYXRjaElkc30pKTtmb3Iodz0wO3c8RjsrK3cpe0U9dVt3XSxxPWtbRV07bGV0IG90PXEub2Zmc2V0LFB0PW90KjMsZ3Q9b3QsUnQ9SVt3XSxkdD1pW3ddLHJ0PWZbd10seHQ9aCxHdD1fO20oZykmJm0oYikmJih4dD1nW3ddLEd0PWJbd10pO2xldCBwZT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkscmU9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLGRlPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxmZT1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7Zm9yKE89MDtPPGR0OysrTyl7bGV0IGdlPWEudW5wYWNrKE4sUnQqMytPKjMsdlIpO3Auc2NhbGVUb0dlb2RldGljU3VyZmFjZShnZSxnZSk7bGV0IEVlPXAuY2FydGVzaWFuVG9DYXJ0b2dyYXBoaWMoZ2UsRlIpLHVuPUVlLmxhdGl0dWRlLFZlPUVlLmxvbmdpdHVkZTtwZT1NYXRoLm1pbih1bixwZSkscmU9TWF0aC5tYXgodW4scmUpLGRlPU1hdGgubWluKFZlLGRlKSxmZT1NYXRoLm1heChWZSxmZSk7bGV0IGJlPXAuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKGdlLFg0KSxsbj1hLm11bHRpcGx5QnlTY2FsYXIoYmUseHQsWTQpLHBuPWEuYWRkKGdlLGxuLCQ0KTtsbj1hLm11bHRpcGx5QnlTY2FsYXIoYmUsR3QsbG4pO2xldCBFbj1hLmFkZChnZSxsbixaNCk7YS5zdWJ0cmFjdChFbixsLEVuKSxhLnN1YnRyYWN0KHBuLGwscG4pLGEucGFjayhFbixTLFB0KSxhLnBhY2socG4sUyxQdCszKSxDW2d0XT1ydCxDW2d0KzFdPXJ0LFB0Kz02LGd0Kz0yfWQ9UTQsZC53ZXN0PWRlLGQuZWFzdD1mZSxkLnNvdXRoPXBlLGQubm9ydGg9cmUsY1t3XT1Dby5mcm9tUmVjdGFuZ2xlKGQsaCxfLHApO2xldCBadD1xLmluZGV4T2Zmc2V0LFF0PXZbd10sTmU9c1t3XTtmb3IoTFt3XT1adCxPPTA7TzxOZTtPKz0zKXtsZXQgZ2U9bltRdCtPXS1SdCxFZT1uW1F0K08rMV0tUnQsdW49bltRdCtPKzJdLVJ0O2pbWnQrK109Z2UqMitvdCxqW1p0KytdPUVlKjIrb3QsaltadCsrXT11bioyK290LGpbWnQrK109dW4qMisxK290LGpbWnQrK109RWUqMisxK290LGpbWnQrK109Z2UqMisxK290fWZvcihPPTA7TzxkdDsrK08pe2xldCBnZT1PLEVlPShPKzEpJWR0O2pbWnQrK109Z2UqMisxK290LGpbWnQrK109RWUqMitvdCxqW1p0KytdPWdlKjIrb3QsaltadCsrXT1nZSoyKzErb3QsaltadCsrXT1FZSoyKzErb3QsaltadCsrXT1FZSoyK290fXEub2Zmc2V0Kz1kdCoyLHEuaW5kZXhPZmZzZXQ9WnQselt3XT1adC1MW3ddfWo9THQuY3JlYXRlVHlwZWRBcnJheShTLmxlbmd0aC8zLGopO2xldCBhdD1udC5sZW5ndGg7Zm9yKGxldCBvdD0wO290PGF0Oysrb3Qpe2xldCBQdD1udFtvdF0uYmF0Y2hJZHMsZ3Q9MCxSdD1QdC5sZW5ndGg7Zm9yKGxldCBkdD0wO2R0PFJ0OysrZHQpZ3QrPXpbUHRbZHRdXTtudFtvdF0uY291bnQ9Z3R9bGV0IGx0PWouQllURVNfUEVSX0VMRU1FTlQ9PT0yP0x0LlVOU0lHTkVEX1NIT1JUOkx0LlVOU0lHTkVEX0lOVCxfdD1XNChsdCxjLG50KTtyZXR1cm4gZS5wdXNoKFMuYnVmZmVyLGouYnVmZmVyLEwuYnVmZmVyLHouYnVmZmVyLEMuYnVmZmVyLF90LmJ1ZmZlcikse3Bvc2l0aW9uczpTLmJ1ZmZlcixpbmRpY2VzOmouYnVmZmVyLGluZGV4T2Zmc2V0czpMLmJ1ZmZlcixpbmRleENvdW50czp6LmJ1ZmZlcixiYXRjaElkczpDLmJ1ZmZlcixwYWNrZWRCdWZmZXI6X3QuYnVmZmVyfX12YXIgTFIsRFIsQlIsQmEsSVIsdlIsWDQsWTQsJDQsWjQsRlIsUTQsdFUscmc9JCgoKT0+e2ZzKCk7RHQoKTtJZSgpO01hKCk7ZnQoKTskdCgpO1plKCk7S3QoKTtkYSgpO1RuKCk7Wm4oKTtMUj1uZXcgYSxEUj1uZXcgWSxCUj1uZXcgTnQsQmE9e21pbjp2b2lkIDAsbWF4OnZvaWQgMCxpbmRleEJ5dGVzUGVyRWxlbWVudDp2b2lkIDB9O0lSPTMyNzY3LHZSPW5ldyBhLFg0PW5ldyBhLFk0PW5ldyBhLCQ0PW5ldyBhLFo0PW5ldyBhLEZSPW5ldyBjdCxRND1uZXcgTnQ7dFU9VWUoSjQpfSk7ZnVuY3Rpb24gb1UodCxlLG4sbyxyKXtsZXQgaT10Lmxlbmd0aC8zLHM9dC5zdWJhcnJheSgwLGkpLGY9dC5zdWJhcnJheShpLDIqaSksdT10LnN1YmFycmF5KDIqaSwzKmkpO25uLnppZ1phZ0RlbHRhRGVjb2RlKHMsZix1KTtsZXQgYz1uZXcgRmxvYXQ2NEFycmF5KHQubGVuZ3RoKTtmb3IobGV0IGw9MDtsPGk7KytsKXtsZXQgcD1zW2xdLGQ9ZltsXSxoPXVbbF0sXz1QLmxlcnAoZS53ZXN0LGUuZWFzdCxwL2lnKSxnPVAubGVycChlLnNvdXRoLGUubm9ydGgsZC9pZyksYj1QLmxlcnAobixvLGgvaWcpLHc9Y3QuZnJvbVJhZGlhbnMoXyxnLGIsZVUpLE89ci5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbih3LG5VKTthLnBhY2soTyxjLGwqMyl9cmV0dXJuIGN9dmFyIGlnLGVVLG5VLFVSLGtSPSQoKCk9PntmcygpO0R0KCk7SWUoKTtLdCgpO2lnPTMyNzY3LGVVPW5ldyBjdCxuVT1uZXcgYTtVUj1vVX0pO3ZhciBzZz17fTtsZShzZyx7ZGVmYXVsdDooKT0+YVV9KTtmdW5jdGlvbiByVSh0KXt0PW5ldyBGbG9hdDY0QXJyYXkodCk7bGV0IGU9MDtxZC5taW49dFtlKytdLHFkLm1heD10W2UrK10sTnQudW5wYWNrKHQsZSxIUiksZSs9TnQucGFja2VkTGVuZ3RoLFkudW5wYWNrKHQsZSxxUiksZSs9WS5wYWNrZWRMZW5ndGgsYS51bnBhY2sodCxlLEtSKX1mdW5jdGlvbiBpVSh0KXtsZXQgZT10Lmxlbmd0aCxuPW5ldyBVaW50MzJBcnJheShlKzEpLG89MDtmb3IobGV0IHI9MDtyPGU7KytyKW5bcl09byxvKz10W3JdO3JldHVybiBuW2VdPW8sbn1mdW5jdGlvbiBjVSh0LGUpe2xldCBuPW5ldyBVaW50MTZBcnJheSh0LnBvc2l0aW9ucyksbz1uZXcgVWludDE2QXJyYXkodC53aWR0aHMpLHI9bmV3IFVpbnQzMkFycmF5KHQuY291bnRzKSxpPW5ldyBVaW50MTZBcnJheSh0LmJhdGNoSWRzKTtyVSh0LnBhY2tlZEJ1ZmZlcik7bGV0IHM9SFIsZj1xUix1PUtSLGM9cWQubWluLGw9cWQubWF4LHA9VVIobixzLGMsbCxmKSxkPXAubGVuZ3RoLzMsaD1kKjQtNCxfPW5ldyBGbG9hdDMyQXJyYXkoaCozKSxnPW5ldyBGbG9hdDMyQXJyYXkoaCozKSxiPW5ldyBGbG9hdDMyQXJyYXkoaCozKSx3PW5ldyBGbG9hdDMyQXJyYXkoaCoyKSxPPW5ldyBVaW50MTZBcnJheShoKSxFPTAsVD0wLHg9MCxNLE49MCxGPXIubGVuZ3RoO2ZvcihNPTA7TTxGOysrTSl7bGV0IFM9cltNXSxDPW9bTV0sTD1pW01dO2ZvcihsZXQgej0wO3o8UzsrK3ope2xldCBqO2lmKHo9PT0wKXtsZXQgbnQ9YS51bnBhY2socCxOKjMsR1IpLGF0PWEudW5wYWNrKHAsKE4rMSkqMyxWUik7aj1hLnN1YnRyYWN0KG50LGF0LHpSKSxhLmFkZChudCxqLGopfWVsc2Ugaj1hLnVucGFjayhwLChOK3otMSkqMyx6Uik7bGV0IGs9YS51bnBhY2socCwoTit6KSozLHNVKSxxO2lmKHo9PT1TLTEpe2xldCBudD1hLnVucGFjayhwLChOK1MtMSkqMyxHUiksYXQ9YS51bnBhY2socCwoTitTLTIpKjMsVlIpO3E9YS5zdWJ0cmFjdChudCxhdCxqUiksYS5hZGQobnQscSxxKX1lbHNlIHE9YS51bnBhY2socCwoTit6KzEpKjMsalIpO2Euc3VidHJhY3Qoaix1LGopLGEuc3VidHJhY3Qoayx1LGspLGEuc3VidHJhY3QocSx1LHEpO2xldCBXPXo9PT0wPzI6MCxSPXo9PT1TLTE/Mjo0O2ZvcihsZXQgbnQ9VztudDxSOysrbnQpe2EucGFjayhrLF8sRSksYS5wYWNrKGosZyxFKSxhLnBhY2socSxiLEUpLEUrPTM7bGV0IGF0PW50LTI8MD8tMToxO3dbVCsrXT0yKihudCUyKS0xLHdbVCsrXT1hdCpDLE9beCsrXT1MfX1OKz1TfWxldCBJPUx0LmNyZWF0ZVR5cGVkQXJyYXkoaCxkKjYtNiksdj0wLEI9MDtmb3IoRj1kLTEsTT0wO008RjsrK00pSVtCKytdPXYsSVtCKytdPXYrMixJW0IrK109disxLElbQisrXT12KzEsSVtCKytdPXYrMixJW0IrK109diszLHYrPTQ7ZS5wdXNoKF8uYnVmZmVyLGcuYnVmZmVyLGIuYnVmZmVyKSxlLnB1c2gody5idWZmZXIsTy5idWZmZXIsSS5idWZmZXIpO2xldCBBPXtpbmRleERhdGF0eXBlOkkuQllURVNfUEVSX0VMRU1FTlQ9PT0yP0x0LlVOU0lHTkVEX1NIT1JUOkx0LlVOU0lHTkVEX0lOVCxjdXJyZW50UG9zaXRpb25zOl8uYnVmZmVyLHByZXZpb3VzUG9zaXRpb25zOmcuYnVmZmVyLG5leHRQb3NpdGlvbnM6Yi5idWZmZXIsZXhwYW5kQW5kV2lkdGg6dy5idWZmZXIsYmF0Y2hJZHM6Ty5idWZmZXIsaW5kaWNlczpJLmJ1ZmZlcn07aWYodC5rZWVwRGVjb2RlZFBvc2l0aW9ucyl7bGV0IFM9aVUocik7ZS5wdXNoKHAuYnVmZmVyLFMuYnVmZmVyKSxBPXlyKEEse2RlY29kZWRQb3NpdGlvbnM6cC5idWZmZXIsZGVjb2RlZFBvc2l0aW9uT2Zmc2V0czpTLmJ1ZmZlcn0pfXJldHVybiBBfXZhciBIUixxUixLUixxZCxHUixWUix6UixzVSxqUixhVSxjZz0kKCgpPT57RHQoKTtjcCgpO2tSKCk7JHQoKTtaZSgpO1RuKCk7Wm4oKTtIUj1uZXcgTnQscVI9bmV3IFksS1I9bmV3IGEscWQ9e21pbjp2b2lkIDAsbWF4OnZvaWQgMH07R1I9bmV3IGEsVlI9bmV3IGEselI9bmV3IGEsc1U9bmV3IGEsalI9bmV3IGE7YVU9VWUoY1UpfSk7ZnVuY3Rpb24gX2kodCxlKXt5LnR5cGVPZi5vYmplY3QoImVsbGlwc29pZCIsdCksdGhpcy5fZWxsaXBzb2lkPXQsdGhpcy5fY2FtZXJhUG9zaXRpb249bmV3IGEsdGhpcy5fY2FtZXJhUG9zaXRpb25JblNjYWxlZFNwYWNlPW5ldyBhLHRoaXMuX2Rpc3RhbmNlVG9MaW1iSW5TY2FsZWRTcGFjZVNxdWFyZWQ9MCxtKGUpJiYodGhpcy5jYW1lcmFQb3NpdGlvbj1lKX1mdW5jdGlvbiBZUih0LGUsbil7aWYobShlKSYmZTwwJiZ0Lm1pbmltdW1SYWRpdXM+LWUpe2xldCBvPWEuZnJvbUVsZW1lbnRzKHQucmFkaWkueCtlLHQucmFkaWkueStlLHQucmFkaWkueitlLGxVKTt0PVkuZnJvbUNhcnRlc2lhbjMobyxuKX1yZXR1cm4gdH1mdW5jdGlvbiAkUih0LGUsbixvKXt5LnR5cGVPZi5vYmplY3QoImRpcmVjdGlvblRvUG9pbnQiLGUpLHkuZGVmaW5lZCgicG9zaXRpb25zIixuKSxtKG8pfHwobz1uZXcgYSk7bGV0IHI9dDIodCxlKSxpPTA7Zm9yKGxldCBzPTAsZj1uLmxlbmd0aDtzPGY7KytzKXtsZXQgdT1uW3NdLGM9UVIodCx1LHIpO2lmKGM8MClyZXR1cm47aT1NYXRoLm1heChpLGMpfXJldHVybiBKUihyLGksbyl9ZnVuY3Rpb24gWlIodCxlLG4sbyxyLGkpe3kudHlwZU9mLm9iamVjdCgiZGlyZWN0aW9uVG9Qb2ludCIsZSkseS5kZWZpbmVkKCJ2ZXJ0aWNlcyIsbikseS50eXBlT2YubnVtYmVyKCJzdHJpZGUiLG8pLG0oaSl8fChpPW5ldyBhKSxvPW8/PzMscj1yPz9hLlpFUk87bGV0IHM9dDIodCxlKSxmPTA7Zm9yKGxldCB1PTAsYz1uLmxlbmd0aDt1PGM7dSs9byl7S2QueD1uW3VdK3IueCxLZC55PW5bdSsxXStyLnksS2Quej1uW3UrMl0rci56O2xldCBsPVFSKHQsS2Qscyk7aWYobDwwKXJldHVybjtmPU1hdGgubWF4KGYsbCl9cmV0dXJuIEpSKHMsZixpKX1mdW5jdGlvbiBmZyh0LGUsbil7bGV0IG89ZSxyPW4saT1hLnN1YnRyYWN0KHQsbyxXUikscz0tYS5kb3QoaSxvKTtyZXR1cm4hKHI8MD9zPjA6cz5yJiZzKnMvYS5tYWduaXR1ZGVTcXVhcmVkKGkpPnIpfWZ1bmN0aW9uIFFSKHQsZSxuKXtsZXQgbz10LnRyYW5zZm9ybVBvc2l0aW9uVG9TY2FsZWRTcGFjZShlLHBVKSxyPWEubWFnbml0dWRlU3F1YXJlZChvKSxpPU1hdGguc3FydChyKSxzPWEuZGl2aWRlQnlTY2FsYXIobyxpLGRVKTtyPU1hdGgubWF4KDEsciksaT1NYXRoLm1heCgxLGkpO2xldCBmPWEuZG90KHMsbiksdT1hLm1hZ25pdHVkZShhLmNyb3NzKHMsbixzKSksYz0xL2ksbD1NYXRoLnNxcnQoci0xKSpjO3JldHVybiAxLyhmKmMtdSpsKX1mdW5jdGlvbiBKUih0LGUsbil7aWYoIShlPD0wfHxlPT09MS8wfHxlIT09ZSkpcmV0dXJuIGEubXVsdGlwbHlCeVNjYWxhcih0LGUsbil9ZnVuY3Rpb24gdDIodCxlKXtyZXR1cm4gYS5lcXVhbHMoZSxhLlpFUk8pP2U6KHQudHJhbnNmb3JtUG9zaXRpb25Ub1NjYWxlZFNwYWNlKGUsYWcpLGEubm9ybWFsaXplKGFnLGFnKSl9dmFyIFdSLGZVLFhSLHVVLGxVLEtkLHBVLGRVLGFnLFBzLGN1PSQoKCk9Pnt2ZSgpO0R0KCk7V3QoKTtmdCgpOyR0KCk7VG4oKTtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhfaS5wcm90b3R5cGUse2VsbGlwc29pZDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VsbGlwc29pZH19LGNhbWVyYVBvc2l0aW9uOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2FtZXJhUG9zaXRpb259LHNldDpmdW5jdGlvbih0KXtsZXQgbj10aGlzLl9lbGxpcHNvaWQudHJhbnNmb3JtUG9zaXRpb25Ub1NjYWxlZFNwYWNlKHQsdGhpcy5fY2FtZXJhUG9zaXRpb25JblNjYWxlZFNwYWNlKSxvPWEubWFnbml0dWRlU3F1YXJlZChuKS0xO2EuY2xvbmUodCx0aGlzLl9jYW1lcmFQb3NpdGlvbiksdGhpcy5fY2FtZXJhUG9zaXRpb25JblNjYWxlZFNwYWNlPW4sdGhpcy5fZGlzdGFuY2VUb0xpbWJJblNjYWxlZFNwYWNlU3F1YXJlZD1vfX19KTtXUj1uZXcgYTtfaS5wcm90b3R5cGUuaXNQb2ludFZpc2libGU9ZnVuY3Rpb24odCl7bGV0IG49dGhpcy5fZWxsaXBzb2lkLnRyYW5zZm9ybVBvc2l0aW9uVG9TY2FsZWRTcGFjZSh0LFdSKTtyZXR1cm4gZmcobix0aGlzLl9jYW1lcmFQb3NpdGlvbkluU2NhbGVkU3BhY2UsdGhpcy5fZGlzdGFuY2VUb0xpbWJJblNjYWxlZFNwYWNlU3F1YXJlZCl9O19pLnByb3RvdHlwZS5pc1NjYWxlZFNwYWNlUG9pbnRWaXNpYmxlPWZ1bmN0aW9uKHQpe3JldHVybiBmZyh0LHRoaXMuX2NhbWVyYVBvc2l0aW9uSW5TY2FsZWRTcGFjZSx0aGlzLl9kaXN0YW5jZVRvTGltYkluU2NhbGVkU3BhY2VTcXVhcmVkKX07ZlU9bmV3IGE7X2kucHJvdG90eXBlLmlzU2NhbGVkU3BhY2VQb2ludFZpc2libGVQb3NzaWJseVVuZGVyRWxsaXBzb2lkPWZ1bmN0aW9uKHQsZSl7bGV0IG49dGhpcy5fZWxsaXBzb2lkLG8scjtyZXR1cm4gbShlKSYmZTwwJiZuLm1pbmltdW1SYWRpdXM+LWU/KHI9ZlUsci54PXRoaXMuX2NhbWVyYVBvc2l0aW9uLngvKG4ucmFkaWkueCtlKSxyLnk9dGhpcy5fY2FtZXJhUG9zaXRpb24ueS8obi5yYWRpaS55K2UpLHIuej10aGlzLl9jYW1lcmFQb3NpdGlvbi56LyhuLnJhZGlpLnorZSksbz1yLngqci54K3IueSpyLnkrci56KnIuei0xKToocj10aGlzLl9jYW1lcmFQb3NpdGlvbkluU2NhbGVkU3BhY2Usbz10aGlzLl9kaXN0YW5jZVRvTGltYkluU2NhbGVkU3BhY2VTcXVhcmVkKSxmZyh0LHIsbyl9O19pLnByb3RvdHlwZS5jb21wdXRlSG9yaXpvbkN1bGxpbmdQb2ludD1mdW5jdGlvbih0LGUsbil7cmV0dXJuICRSKHRoaXMuX2VsbGlwc29pZCx0LGUsbil9O1hSPVkuY2xvbmUoWS5VTklUX1NQSEVSRSk7X2kucHJvdG90eXBlLmNvbXB1dGVIb3Jpem9uQ3VsbGluZ1BvaW50UG9zc2libHlVbmRlckVsbGlwc29pZD1mdW5jdGlvbih0LGUsbixvKXtsZXQgcj1ZUih0aGlzLl9lbGxpcHNvaWQsbixYUik7cmV0dXJuICRSKHIsdCxlLG8pfTtfaS5wcm90b3R5cGUuY29tcHV0ZUhvcml6b25DdWxsaW5nUG9pbnRGcm9tVmVydGljZXM9ZnVuY3Rpb24odCxlLG4sbyxyKXtyZXR1cm4gWlIodGhpcy5fZWxsaXBzb2lkLHQsZSxuLG8scil9O19pLnByb3RvdHlwZS5jb21wdXRlSG9yaXpvbkN1bGxpbmdQb2ludEZyb21WZXJ0aWNlc1Bvc3NpYmx5VW5kZXJFbGxpcHNvaWQ9ZnVuY3Rpb24odCxlLG4sbyxyLGkpe2xldCBzPVlSKHRoaXMuX2VsbGlwc29pZCxyLFhSKTtyZXR1cm4gWlIocyx0LGUsbixvLGkpfTt1VT1bXTtfaS5wcm90b3R5cGUuY29tcHV0ZUhvcml6b25DdWxsaW5nUG9pbnRGcm9tUmVjdGFuZ2xlPWZ1bmN0aW9uKHQsZSxuKXt5LnR5cGVPZi5vYmplY3QoInJlY3RhbmdsZSIsdCk7bGV0IG89TnQuc3Vic2FtcGxlKHQsZSwwLHVVKSxyPUF0LmZyb21Qb2ludHMobyk7aWYoIShhLm1hZ25pdHVkZShyLmNlbnRlcik8LjEqZS5taW5pbXVtUmFkaXVzKSlyZXR1cm4gdGhpcy5jb21wdXRlSG9yaXpvbkN1bGxpbmdQb2ludChyLmNlbnRlcixvLG4pfTtsVT1uZXcgYTtLZD1uZXcgYTtwVT1uZXcgYSxkVT1uZXcgYTthZz1uZXcgYTtQcz1faX0pO3ZhciBXZCxtVSxlMixuMj0kKCgpPT57RHQoKTtJZSgpO0h0KCk7ZnQoKTtXZD17fTtXZC5nZXRIZWlnaHQ9ZnVuY3Rpb24odCxlLG4pe2lmKCFOdW1iZXIuaXNGaW5pdGUoZSkpdGhyb3cgbmV3IEQoInNjYWxlIG11c3QgYmUgYSBmaW5pdGUgbnVtYmVyLiIpO2lmKCFOdW1iZXIuaXNGaW5pdGUobikpdGhyb3cgbmV3IEQoInJlbGF0aXZlSGVpZ2h0IG11c3QgYmUgYSBmaW5pdGUgbnVtYmVyLiIpO3JldHVybih0LW4pKmUrbn07bVU9bmV3IGN0O1dkLmdldFBvc2l0aW9uPWZ1bmN0aW9uKHQsZSxuLG8scil7bGV0IGk9ZS5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyh0LG1VKTtpZighbShpKSlyZXR1cm4gYS5jbG9uZSh0LHIpO2xldCBzPVdkLmdldEhlaWdodChpLmhlaWdodCxuLG8pO3JldHVybiBhLmZyb21SYWRpYW5zKGkubG9uZ2l0dWRlLGkubGF0aXR1ZGUscyxlLHIpfTtlMj1XZH0pO3ZhciBoVSxQcixvMj0kKCgpPT57aFU9e05PTkU6MCxCSVRTMTI6MX0sUHI9T2JqZWN0LmZyZWV6ZShoVSl9KTtmdW5jdGlvbiBJbyh0LGUsbixvLHIsaSxzLGYsdSxjKXtsZXQgbD1Qci5OT05FLHAsZDtpZihtKGUpJiZtKG4pJiZtKG8pJiZtKHIpKXtsZXQgaD1lLm1pbmltdW0sXz1lLm1heGltdW0sZz1hLnN1YnRyYWN0KF8saCxfVSksYj1vLW47TWF0aC5tYXgoYS5tYXhpbXVtQ29tcG9uZW50KGcpLGIpPGdVLTE/bD1Qci5CSVRTMTI6bD1Qci5OT05FLHA9c3QuaW52ZXJzZVRyYW5zZm9ybWF0aW9uKHIsbmV3IHN0KTtsZXQgTz1hLm5lZ2F0ZShoLE9jKTtzdC5tdWx0aXBseShzdC5mcm9tVHJhbnNsYXRpb24oTyxYZCkscCxwKTtsZXQgRT1PYztFLng9MS9nLngsRS55PTEvZy55LEUuej0xL2cueixzdC5tdWx0aXBseShzdC5mcm9tU2NhbGUoRSxYZCkscCxwKSxkPXN0LmNsb25lKHIpLHN0LnNldFRyYW5zbGF0aW9uKGQsYS5aRVJPLGQpLHI9c3QuY2xvbmUocixuZXcgc3QpO2xldCBUPXN0LmZyb21UcmFuc2xhdGlvbihoLFhkKSx4PXN0LmZyb21TY2FsZShnLHlVKSxNPXN0Lm11bHRpcGx5KFQseCxYZCk7c3QubXVsdGlwbHkocixNLHIpLHN0Lm11bHRpcGx5KGQsTSxkKX10aGlzLnF1YW50aXphdGlvbj1sLHRoaXMubWluaW11bUhlaWdodD1uLHRoaXMubWF4aW11bUhlaWdodD1vLHRoaXMuY2VudGVyPWEuY2xvbmUodCksdGhpcy50b1NjYWxlZEVOVT1wLHRoaXMuZnJvbVNjYWxlZEVOVT1yLHRoaXMubWF0cml4PWQsdGhpcy5oYXNWZXJ0ZXhOb3JtYWxzPWksdGhpcy5oYXNXZWJNZXJjYXRvclQ9cz8/ITEsdGhpcy5oYXNHZW9kZXRpY1N1cmZhY2VOb3JtYWxzPWY/PyExLHRoaXMuZXhhZ2dlcmF0aW9uPXU/PzEsdGhpcy5leGFnZ2VyYXRpb25SZWxhdGl2ZUhlaWdodD1jPz8wLHRoaXMuc3RyaWRlPTAsdGhpcy5fb2Zmc2V0R2VvZGV0aWNTdXJmYWNlTm9ybWFsPTAsdGhpcy5fb2Zmc2V0VmVydGV4Tm9ybWFsPTAsdGhpcy5fY2FsY3VsYXRlU3RyaWRlQW5kT2Zmc2V0cygpfXZhciBPYyxfVSxNcixYZCx5VSxnVSxBVSxyMixZZCwkZCxNcyxhdT0kKCgpPT57ZnMoKTtrZSgpO0R0KCk7RGUoKTtmdCgpO0t0KCk7a24oKTtuMigpO28yKCk7T2M9bmV3IGEsX1U9bmV3IGEsTXI9bmV3IEosWGQ9bmV3IHN0LHlVPW5ldyBzdCxnVT1NYXRoLnBvdygyLDEyKTtJby5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKHQsZSxuLG8scixpLHMsZil7bGV0IHU9by54LGM9by55O2lmKHRoaXMucXVhbnRpemF0aW9uPT09UHIuQklUUzEyKXtuPXN0Lm11bHRpcGx5QnlQb2ludCh0aGlzLnRvU2NhbGVkRU5VLG4sT2MpLG4ueD1QLmNsYW1wKG4ueCwwLDEpLG4ueT1QLmNsYW1wKG4ueSwwLDEpLG4uej1QLmNsYW1wKG4ueiwwLDEpO2xldCBsPXRoaXMubWF4aW11bUhlaWdodC10aGlzLm1pbmltdW1IZWlnaHQscD1QLmNsYW1wKChyLXRoaXMubWluaW11bUhlaWdodCkvbCwwLDEpO0ouZnJvbUVsZW1lbnRzKG4ueCxuLnksTXIpO2xldCBkPW5uLmNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKE1yKTtKLmZyb21FbGVtZW50cyhuLnoscCxNcik7bGV0IGg9bm4uY29tcHJlc3NUZXh0dXJlQ29vcmRpbmF0ZXMoTXIpO0ouZnJvbUVsZW1lbnRzKHUsYyxNcik7bGV0IF89bm4uY29tcHJlc3NUZXh0dXJlQ29vcmRpbmF0ZXMoTXIpO2lmKHRbZSsrXT1kLHRbZSsrXT1oLHRbZSsrXT1fLHRoaXMuaGFzV2ViTWVyY2F0b3JUKXtKLmZyb21FbGVtZW50cyhzLDAsTXIpO2xldCBnPW5uLmNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKE1yKTt0W2UrK109Z319ZWxzZSBhLnN1YnRyYWN0KG4sdGhpcy5jZW50ZXIsT2MpLHRbZSsrXT1PYy54LHRbZSsrXT1PYy55LHRbZSsrXT1PYy56LHRbZSsrXT1yLHRbZSsrXT11LHRbZSsrXT1jLHRoaXMuaGFzV2ViTWVyY2F0b3JUJiYodFtlKytdPXMpO3JldHVybiB0aGlzLmhhc1ZlcnRleE5vcm1hbHMmJih0W2UrK109bm4ub2N0UGFja0Zsb2F0KGkpKSx0aGlzLmhhc0dlb2RldGljU3VyZmFjZU5vcm1hbHMmJih0W2UrK109Zi54LHRbZSsrXT1mLnksdFtlKytdPWYueiksZX07QVU9bmV3IGEscjI9bmV3IGE7SW8ucHJvdG90eXBlLmFkZEdlb2RldGljU3VyZmFjZU5vcm1hbHM9ZnVuY3Rpb24odCxlLG4pe2lmKHRoaXMuaGFzR2VvZGV0aWNTdXJmYWNlTm9ybWFscylyZXR1cm47bGV0IG89dGhpcy5zdHJpZGUscj10Lmxlbmd0aC9vO3RoaXMuaGFzR2VvZGV0aWNTdXJmYWNlTm9ybWFscz0hMCx0aGlzLl9jYWxjdWxhdGVTdHJpZGVBbmRPZmZzZXRzKCk7bGV0IGk9dGhpcy5zdHJpZGU7Zm9yKGxldCBzPTA7czxyO3MrKyl7Zm9yKGxldCBsPTA7bDxvO2wrKyl7bGV0IHA9cypvK2wsZD1zKmkrbDtlW2RdPXRbcF19bGV0IGY9dGhpcy5kZWNvZGVQb3NpdGlvbihlLHMsQVUpLHU9bi5nZW9kZXRpY1N1cmZhY2VOb3JtYWwoZixyMiksYz1zKmkrdGhpcy5fb2Zmc2V0R2VvZGV0aWNTdXJmYWNlTm9ybWFsO2VbY109dS54LGVbYysxXT11LnksZVtjKzJdPXUuen19O0lvLnByb3RvdHlwZS5yZW1vdmVHZW9kZXRpY1N1cmZhY2VOb3JtYWxzPWZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMuaGFzR2VvZGV0aWNTdXJmYWNlTm9ybWFscylyZXR1cm47bGV0IG49dGhpcy5zdHJpZGUsbz10Lmxlbmd0aC9uO3RoaXMuaGFzR2VvZGV0aWNTdXJmYWNlTm9ybWFscz0hMSx0aGlzLl9jYWxjdWxhdGVTdHJpZGVBbmRPZmZzZXRzKCk7bGV0IHI9dGhpcy5zdHJpZGU7Zm9yKGxldCBpPTA7aTxvO2krKylmb3IobGV0IHM9MDtzPHI7cysrKXtsZXQgZj1pKm4rcyx1PWkqcitzO2VbdV09dFtmXX19O0lvLnByb3RvdHlwZS5kZWNvZGVQb3NpdGlvbj1mdW5jdGlvbih0LGUsbil7aWYobShuKXx8KG49bmV3IGEpLGUqPXRoaXMuc3RyaWRlLHRoaXMucXVhbnRpemF0aW9uPT09UHIuQklUUzEyKXtsZXQgbz1ubi5kZWNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKHRbZV0sTXIpO24ueD1vLngsbi55PW8ueTtsZXQgcj1ubi5kZWNvbXByZXNzVGV4dHVyZUNvb3JkaW5hdGVzKHRbZSsxXSxNcik7cmV0dXJuIG4uej1yLngsc3QubXVsdGlwbHlCeVBvaW50KHRoaXMuZnJvbVNjYWxlZEVOVSxuLG4pfXJldHVybiBuLng9dFtlXSxuLnk9dFtlKzFdLG4uej10W2UrMl0sYS5hZGQobix0aGlzLmNlbnRlcixuKX07SW8ucHJvdG90eXBlLmdldEV4YWdnZXJhdGVkUG9zaXRpb249ZnVuY3Rpb24odCxlLG4pe249dGhpcy5kZWNvZGVQb3NpdGlvbih0LGUsbik7bGV0IG89dGhpcy5leGFnZ2VyYXRpb24scj10aGlzLmV4YWdnZXJhdGlvblJlbGF0aXZlSGVpZ2h0O2lmKG8hPT0xJiZ0aGlzLmhhc0dlb2RldGljU3VyZmFjZU5vcm1hbHMpe2xldCBzPXRoaXMuZGVjb2RlR2VvZGV0aWNTdXJmYWNlTm9ybWFsKHQsZSxyMiksZj10aGlzLmRlY29kZUhlaWdodCh0LGUpLHU9ZTIuZ2V0SGVpZ2h0KGYsbyxyKS1mO24ueCs9cy54KnUsbi55Kz1zLnkqdSxuLnorPXMueip1fXJldHVybiBufTtJby5wcm90b3R5cGUuZGVjb2RlVGV4dHVyZUNvb3JkaW5hdGVzPWZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gbShuKXx8KG49bmV3IEopLGUqPXRoaXMuc3RyaWRlLHRoaXMucXVhbnRpemF0aW9uPT09UHIuQklUUzEyP25uLmRlY29tcHJlc3NUZXh0dXJlQ29vcmRpbmF0ZXModFtlKzJdLG4pOkouZnJvbUVsZW1lbnRzKHRbZSs0XSx0W2UrNV0sbil9O0lvLnByb3RvdHlwZS5kZWNvZGVIZWlnaHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZSo9dGhpcy5zdHJpZGUsdGhpcy5xdWFudGl6YXRpb249PT1Qci5CSVRTMTI/bm4uZGVjb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyh0W2UrMV0sTXIpLnkqKHRoaXMubWF4aW11bUhlaWdodC10aGlzLm1pbmltdW1IZWlnaHQpK3RoaXMubWluaW11bUhlaWdodDp0W2UrM119O0lvLnByb3RvdHlwZS5kZWNvZGVXZWJNZXJjYXRvclQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZSo9dGhpcy5zdHJpZGUsdGhpcy5xdWFudGl6YXRpb249PT1Qci5CSVRTMTI/bm4uZGVjb21wcmVzc1RleHR1cmVDb29yZGluYXRlcyh0W2UrM10sTXIpLng6dFtlKzZdfTtJby5wcm90b3R5cGUuZ2V0T2N0RW5jb2RlZE5vcm1hbD1mdW5jdGlvbih0LGUsbil7ZT1lKnRoaXMuc3RyaWRlK3RoaXMuX29mZnNldFZlcnRleE5vcm1hbDtsZXQgbz10W2VdLzI1NixyPU1hdGguZmxvb3IobyksaT0oby1yKSoyNTY7cmV0dXJuIEouZnJvbUVsZW1lbnRzKHIsaSxuKX07SW8ucHJvdG90eXBlLmRlY29kZUdlb2RldGljU3VyZmFjZU5vcm1hbD1mdW5jdGlvbih0LGUsbil7cmV0dXJuIGU9ZSp0aGlzLnN0cmlkZSt0aGlzLl9vZmZzZXRHZW9kZXRpY1N1cmZhY2VOb3JtYWwsbi54PXRbZV0sbi55PXRbZSsxXSxuLno9dFtlKzJdLG59O0lvLnByb3RvdHlwZS5fY2FsY3VsYXRlU3RyaWRlQW5kT2Zmc2V0cz1mdW5jdGlvbigpe2xldCB0PTA7c3dpdGNoKHRoaXMucXVhbnRpemF0aW9uKXtjYXNlIFByLkJJVFMxMjp0Kz0zO2JyZWFrO2RlZmF1bHQ6dCs9Nn10aGlzLmhhc1dlYk1lcmNhdG9yVCYmKHQrPTEpLHRoaXMuaGFzVmVydGV4Tm9ybWFscyYmKHRoaXMuX29mZnNldFZlcnRleE5vcm1hbD10LHQrPTEpLHRoaXMuaGFzR2VvZGV0aWNTdXJmYWNlTm9ybWFscyYmKHRoaXMuX29mZnNldEdlb2RldGljU3VyZmFjZU5vcm1hbD10LHQrPTMpLHRoaXMuc3RyaWRlPXR9O1lkPXtwb3NpdGlvbjNEQW5kSGVpZ2h0OjAsdGV4dHVyZUNvb3JkQW5kRW5jb2RlZE5vcm1hbHM6MSxnZW9kZXRpY1N1cmZhY2VOb3JtYWw6Mn0sJGQ9e2NvbXByZXNzZWQwOjAsY29tcHJlc3NlZDE6MSxnZW9kZXRpY1N1cmZhY2VOb3JtYWw6Mn07SW8ucHJvdG90eXBlLmdldEF0dHJpYnV0ZXM9ZnVuY3Rpb24odCl7bGV0IGU9ZXQuRkxPQVQsbj1ldC5nZXRTaXplSW5CeXRlcyhlKSxvPXRoaXMuc3RyaWRlKm4scj0wLGk9W107ZnVuY3Rpb24gcyhmLHUpe2kucHVzaCh7aW5kZXg6Zix2ZXJ0ZXhCdWZmZXI6dCxjb21wb25lbnREYXRhdHlwZTplLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6dSxvZmZzZXRJbkJ5dGVzOnIsc3RyaWRlSW5CeXRlczpvfSkscis9dSpufWlmKHRoaXMucXVhbnRpemF0aW9uPT09UHIuTk9ORSl7cyhZZC5wb3NpdGlvbjNEQW5kSGVpZ2h0LDQpO2xldCBmPTI7Zis9dGhpcy5oYXNXZWJNZXJjYXRvclQ/MTowLGYrPXRoaXMuaGFzVmVydGV4Tm9ybWFscz8xOjAscyhZZC50ZXh0dXJlQ29vcmRBbmRFbmNvZGVkTm9ybWFscyxmKSx0aGlzLmhhc0dlb2RldGljU3VyZmFjZU5vcm1hbHMmJnMoWWQuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsLDMpfWVsc2V7bGV0IGY9dGhpcy5oYXNXZWJNZXJjYXRvclR8fHRoaXMuaGFzVmVydGV4Tm9ybWFscyx1PXRoaXMuaGFzV2ViTWVyY2F0b3JUJiZ0aGlzLmhhc1ZlcnRleE5vcm1hbHM7cygkZC5jb21wcmVzc2VkMCxmPzQ6MyksdSYmcygkZC5jb21wcmVzc2VkMSwxKSx0aGlzLmhhc0dlb2RldGljU3VyZmFjZU5vcm1hbHMmJnMoJGQuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsLDMpfXJldHVybiBpfTtJby5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTG9jYXRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucXVhbnRpemF0aW9uPT09UHIuTk9ORT9ZZDokZH07SW8uY2xvbmU9ZnVuY3Rpb24odCxlKXtpZihtKHQpKXJldHVybiBtKGUpfHwoZT1uZXcgSW8pLGUucXVhbnRpemF0aW9uPXQucXVhbnRpemF0aW9uLGUubWluaW11bUhlaWdodD10Lm1pbmltdW1IZWlnaHQsZS5tYXhpbXVtSGVpZ2h0PXQubWF4aW11bUhlaWdodCxlLmNlbnRlcj1hLmNsb25lKHQuY2VudGVyKSxlLnRvU2NhbGVkRU5VPXN0LmNsb25lKHQudG9TY2FsZWRFTlUpLGUuZnJvbVNjYWxlZEVOVT1zdC5jbG9uZSh0LmZyb21TY2FsZWRFTlUpLGUubWF0cml4PXN0LmNsb25lKHQubWF0cml4KSxlLmhhc1ZlcnRleE5vcm1hbHM9dC5oYXNWZXJ0ZXhOb3JtYWxzLGUuaGFzV2ViTWVyY2F0b3JUPXQuaGFzV2ViTWVyY2F0b3JULGUuaGFzR2VvZGV0aWNTdXJmYWNlTm9ybWFscz10Lmhhc0dlb2RldGljU3VyZmFjZU5vcm1hbHMsZS5leGFnZ2VyYXRpb249dC5leGFnZ2VyYXRpb24sZS5leGFnZ2VyYXRpb25SZWxhdGl2ZUhlaWdodD10LmV4YWdnZXJhdGlvblJlbGF0aXZlSGVpZ2h0LGUuX2NhbGN1bGF0ZVN0cmlkZUFuZE9mZnNldHMoKSxlfTtNcz1Jb30pO3ZhciBsZz17fTtsZShsZyx7ZGVmYXVsdDooKT0+eFV9KTtmdW5jdGlvbiBmdSh0LGUsbil7bj1uPz9QO2xldCBvPXQubGVuZ3RoO2ZvcihsZXQgcj0wO3I8bzsrK3IpaWYobi5lcXVhbHNFcHNpbG9uKHRbcl0sZSxQLkVQU0lMT04xMikpcmV0dXJuIHI7cmV0dXJuLTF9ZnVuY3Rpb24gVFUodCxlKXt0LmVsbGlwc29pZD1ZLmNsb25lKHQuZWxsaXBzb2lkKSx0LnJlY3RhbmdsZT1OdC5jbG9uZSh0LnJlY3RhbmdsZSk7bGV0IG49U1UodC5idWZmZXIsdC5yZWxhdGl2ZVRvQ2VudGVyLHQuZWxsaXBzb2lkLHQucmVjdGFuZ2xlLHQubmF0aXZlUmVjdGFuZ2xlLHQuZXhhZ2dlcmF0aW9uLHQuZXhhZ2dlcmF0aW9uUmVsYXRpdmVIZWlnaHQsdC5za2lydEhlaWdodCx0LmluY2x1ZGVXZWJNZXJjYXRvclQsdC5uZWdhdGl2ZUFsdGl0dWRlRXhwb25lbnRCaWFzLHQubmVnYXRpdmVFbGV2YXRpb25UaHJlc2hvbGQpLG89bi52ZXJ0aWNlcztlLnB1c2goby5idWZmZXIpO2xldCByPW4uaW5kaWNlcztyZXR1cm4gZS5wdXNoKHIuYnVmZmVyKSx7dmVydGljZXM6by5idWZmZXIsaW5kaWNlczpyLmJ1ZmZlcixudW1iZXJPZkF0dHJpYnV0ZXM6bi5lbmNvZGluZy5zdHJpZGUsbWluaW11bUhlaWdodDpuLm1pbmltdW1IZWlnaHQsbWF4aW11bUhlaWdodDpuLm1heGltdW1IZWlnaHQsYm91bmRpbmdTcGhlcmUzRDpuLmJvdW5kaW5nU3BoZXJlM0Qsb3JpZW50ZWRCb3VuZGluZ0JveDpuLm9yaWVudGVkQm91bmRpbmdCb3gsb2NjbHVkZWVQb2ludEluU2NhbGVkU3BhY2U6bi5vY2NsdWRlZVBvaW50SW5TY2FsZWRTcGFjZSxlbmNvZGluZzpuLmVuY29kaW5nLHZlcnRleENvdW50V2l0aG91dFNraXJ0czpuLnZlcnRleENvdW50V2l0aG91dFNraXJ0cyxpbmRleENvdW50V2l0aG91dFNraXJ0czpuLmluZGV4Q291bnRXaXRob3V0U2tpcnRzLHdlc3RJbmRpY2VzU291dGhUb05vcnRoOm4ud2VzdEluZGljZXNTb3V0aFRvTm9ydGgsc291dGhJbmRpY2VzRWFzdFRvV2VzdDpuLnNvdXRoSW5kaWNlc0Vhc3RUb1dlc3QsZWFzdEluZGljZXNOb3J0aFRvU291dGg6bi5lYXN0SW5kaWNlc05vcnRoVG9Tb3V0aCxub3J0aEluZGljZXNXZXN0VG9FYXN0Om4ubm9ydGhJbmRpY2VzV2VzdFRvRWFzdH19ZnVuY3Rpb24gU1UodCxlLG4sbyxyLGkscyxmLHUsYyxsKXtsZXQgcCxkLGgsXyxnLGI7bShvKT8ocD1vLndlc3QsZD1vLnNvdXRoLGg9by5lYXN0LF89by5ub3J0aCxnPW8ud2lkdGgsYj1vLmhlaWdodCk6KHA9UC50b1JhZGlhbnMoci53ZXN0KSxkPVAudG9SYWRpYW5zKHIuc291dGgpLGg9UC50b1JhZGlhbnMoci5lYXN0KSxfPVAudG9SYWRpYW5zKHIubm9ydGgpLGc9UC50b1JhZGlhbnMoby53aWR0aCksYj1QLnRvUmFkaWFucyhvLmhlaWdodCkpO2xldCB3PVtkLF9dLE89W3AsaF0sRT0kby5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShlLG4pLFQ9c3QuaW52ZXJzZVRyYW5zZm9ybWF0aW9uKEUsUlUpLHgsTTt1JiYoeD1yby5nZW9kZXRpY0xhdGl0dWRlVG9NZXJjYXRvckFuZ2xlKGQpLE09MS8ocm8uZ2VvZGV0aWNMYXRpdHVkZVRvTWVyY2F0b3JBbmdsZShfKS14KSk7bGV0IEY9aSE9PTEsST1uZXcgRGF0YVZpZXcodCksdj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksQj1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksQT1PVTtBLng9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLEEueT1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksQS56PU51bWJlci5QT1NJVElWRV9JTkZJTklUWTtsZXQgUz1FVTtTLng9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLFMueT1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksUy56PU51bWJlci5ORUdBVElWRV9JTkZJTklUWTtsZXQgQz0wLEw9MCx6PTAsaixrO2ZvcihrPTA7azw0Oysrayl7bGV0IG9lPUM7aj1JLmdldFVpbnQzMihvZSwhMCksb2UrPXVnO2xldCBZdD1QLnRvUmFkaWFucyhJLmdldEZsb2F0NjQob2UsITApKjE4MCk7b2UrPUVjLGZ1KE8sWXQpPT09LTEmJk8ucHVzaChZdCk7bGV0IHplPVAudG9SYWRpYW5zKEkuZ2V0RmxvYXQ2NChvZSwhMCkqMTgwKTtvZSs9RWMsZnUodyx6ZSk9PT0tMSYmdy5wdXNoKHplKSxvZSs9MipFYztsZXQgZG49SS5nZXRJbnQzMihvZSwhMCk7b2UrPVpkLEwrPWRuLGRuPUkuZ2V0SW50MzIob2UsITApLHorPWRuKjMsQys9ait1Z31sZXQgcT1bXSxXPVtdLFI9bmV3IEFycmF5KEwpLG50PW5ldyBBcnJheShMKSxhdD1uZXcgQXJyYXkoTCksbHQ9dT9uZXcgQXJyYXkoTCk6W10sX3Q9Rj9uZXcgQXJyYXkoTCk6W10sb3Q9bmV3IEFycmF5KHopLFB0PVtdLGd0PVtdLFJ0PVtdLGR0PVtdLHJ0PTAseHQ9MDtmb3IoQz0wLGs9MDtrPDQ7KytrKXtqPUkuZ2V0VWludDMyKEMsITApLEMrPXVnO2xldCBvZT1DLFl0PVAudG9SYWRpYW5zKEkuZ2V0RmxvYXQ2NChDLCEwKSoxODApO0MrPUVjO2xldCB6ZT1QLnRvUmFkaWFucyhJLmdldEZsb2F0NjQoQywhMCkqMTgwKTtDKz1FYztsZXQgZG49UC50b1JhZGlhbnMoSS5nZXRGbG9hdDY0KEMsITApKjE4MCksc249ZG4qLjU7Qys9RWM7bGV0IG1uPVAudG9SYWRpYW5zKEkuZ2V0RmxvYXQ2NChDLCEwKSoxODApLGxvPW1uKi41O0MrPUVjO2xldCBxbj1JLmdldEludDMyKEMsITApO0MrPVpkO2xldCBRZT1JLmdldEludDMyKEMsITApO0MrPVpkLEMrPVpkO2xldCBjbj1uZXcgQXJyYXkocW4pO2ZvcihsZXQgaG49MDtobjxxbjsrK2huKXtsZXQgcG89WXQrSS5nZXRVaW50OChDKyspKmRuO3ZvLmxvbmdpdHVkZT1wbztsZXQgS249emUrSS5nZXRVaW50OChDKyspKm1uO3ZvLmxhdGl0dWRlPUtuO2xldCBXbj1JLmdldEZsb2F0MzIoQywhMCk7aWYoQys9d1UsV24hPT0wJiZXbjxsJiYoV24qPS1NYXRoLnBvdygyLGMpKSxXbio9NjM3MTAxMCx2by5oZWlnaHQ9V24sZnUoTyxwbykhPT0tMXx8ZnUodyxLbikhPT0tMSl7bGV0IERuPWZ1KHEsdm8sY3QpO2lmKERuPT09LTEpcS5wdXNoKGN0LmNsb25lKHZvKSksVy5wdXNoKHJ0KTtlbHNle2NuW2huXT1XW0RuXTtjb250aW51ZX19Y25baG5dPXJ0LE1hdGguYWJzKHBvLXApPHNuP1B0LnB1c2goe2luZGV4OnJ0LGNhcnRvZ3JhcGhpYzpjdC5jbG9uZSh2byl9KTpNYXRoLmFicyhwby1oKTxzbj9SdC5wdXNoKHtpbmRleDpydCxjYXJ0b2dyYXBoaWM6Y3QuY2xvbmUodm8pfSk6TWF0aC5hYnMoS24tZCk8bG8/Z3QucHVzaCh7aW5kZXg6cnQsY2FydG9ncmFwaGljOmN0LmNsb25lKHZvKX0pOk1hdGguYWJzKEtuLV8pPGxvJiZkdC5wdXNoKHtpbmRleDpydCxjYXJ0b2dyYXBoaWM6Y3QuY2xvbmUodm8pfSksdj1NYXRoLm1pbihXbix2KSxCPU1hdGgubWF4KFduLEIpLGF0W3J0XT1XbjtsZXQgbW89bi5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbih2byk7aWYoUltydF09bW8sdSYmKGx0W3J0XT0ocm8uZ2VvZGV0aWNMYXRpdHVkZVRvTWVyY2F0b3JBbmdsZShLbikteCkqTSksRil7bGV0IERuPW4uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKG1vKTtfdFtydF09RG59c3QubXVsdGlwbHlCeVBvaW50KFQsbW8sVWEpLGEubWluaW11bUJ5Q29tcG9uZW50KFVhLEEsQSksYS5tYXhpbXVtQnlDb21wb25lbnQoVWEsUyxTKTtsZXQgamU9KHBvLXApLyhoLXApO2plPVAuY2xhbXAoamUsMCwxKTtsZXQgRmU9KEtuLWQpLyhfLWQpO0ZlPVAuY2xhbXAoRmUsMCwxKSxudFtydF09bmV3IEooamUsRmUpLCsrcnR9bGV0IFdlPVFlKjM7Zm9yKGxldCBobj0wO2huPFdlOysraG4sKyt4dClvdFt4dF09Y25bSS5nZXRVaW50MTYoQywhMCldLEMrPWJVO2lmKGohPT1DLW9lKXRocm93IG5ldyBBZSgiSW52YWxpZCB0ZXJyYWluIHRpbGUuIil9Ui5sZW5ndGg9cnQsbnQubGVuZ3RoPXJ0LGF0Lmxlbmd0aD1ydCx1JiYobHQubGVuZ3RoPXJ0KSxGJiYoX3QubGVuZ3RoPXJ0KTtsZXQgR3Q9cnQscGU9eHQscmU9e2hNaW46dixsYXN0Qm9yZGVyUG9pbnQ6dm9pZCAwLHNraXJ0SGVpZ2h0OmYsdG9FTlU6VCxlbGxpcHNvaWQ6bixtaW5pbXVtOkEsbWF4aW11bTpTfTtQdC5zb3J0KGZ1bmN0aW9uKG9lLFl0KXtyZXR1cm4gWXQuY2FydG9ncmFwaGljLmxhdGl0dWRlLW9lLmNhcnRvZ3JhcGhpYy5sYXRpdHVkZX0pLGd0LnNvcnQoZnVuY3Rpb24ob2UsWXQpe3JldHVybiBvZS5jYXJ0b2dyYXBoaWMubG9uZ2l0dWRlLVl0LmNhcnRvZ3JhcGhpYy5sb25naXR1ZGV9KSxSdC5zb3J0KGZ1bmN0aW9uKG9lLFl0KXtyZXR1cm4gb2UuY2FydG9ncmFwaGljLmxhdGl0dWRlLVl0LmNhcnRvZ3JhcGhpYy5sYXRpdHVkZX0pLGR0LnNvcnQoZnVuY3Rpb24ob2UsWXQpe3JldHVybiBZdC5jYXJ0b2dyYXBoaWMubG9uZ2l0dWRlLW9lLmNhcnRvZ3JhcGhpYy5sb25naXR1ZGV9KTtsZXQgZGU9MWUtNTtpZihRZChSLGF0LG50LGx0LF90LG90LHJlLFB0LC1kZSpnLCEwLC1kZSpiKSxRZChSLGF0LG50LGx0LF90LG90LHJlLGd0LC1kZSpiLCExKSxRZChSLGF0LG50LGx0LF90LG90LHJlLFJ0LGRlKmcsITAsZGUqYiksUWQoUixhdCxudCxsdCxfdCxvdCxyZSxkdCxkZSpiLCExKSxQdC5sZW5ndGg+MCYmZHQubGVuZ3RoPjApe2xldCBvZT1QdFswXS5pbmRleCxZdD1HdCx6ZT1kdFtkdC5sZW5ndGgtMV0uaW5kZXgsZG49Ui5sZW5ndGgtMTtvdC5wdXNoKHplLGRuLFl0LFl0LG9lLHplKX1MPVIubGVuZ3RoO2xldCBmZT1BdC5mcm9tUG9pbnRzKFIpLFp0O20obykmJihadD1Dby5mcm9tUmVjdGFuZ2xlKG8sdixCLG4pKTtsZXQgTmU9bmV3IFBzKG4pLmNvbXB1dGVIb3Jpem9uQ3VsbGluZ1BvaW50UG9zc2libHlVbmRlckVsbGlwc29pZChlLFIsdiksZ2U9bmV3IERpKEEsUyxlKSxFZT1uZXcgTXMoZSxnZSxyZS5oTWluLEIsRSwhMSx1LEYsaSxzKSx1bj1uZXcgRmxvYXQzMkFycmF5KEwqRWUuc3RyaWRlKSxWZT0wO2ZvcihsZXQgb2U9MDtvZTxMOysrb2UpVmU9RWUuZW5jb2RlKHVuLFZlLFJbb2VdLG50W29lXSxhdFtvZV0sdm9pZCAwLGx0W29lXSxfdFtvZV0pO2xldCBiZT1QdC5tYXAoZnVuY3Rpb24ob2Upe3JldHVybiBvZS5pbmRleH0pLnJldmVyc2UoKSxsbj1ndC5tYXAoZnVuY3Rpb24ob2Upe3JldHVybiBvZS5pbmRleH0pLnJldmVyc2UoKSxwbj1SdC5tYXAoZnVuY3Rpb24ob2Upe3JldHVybiBvZS5pbmRleH0pLnJldmVyc2UoKSxFbj1kdC5tYXAoZnVuY3Rpb24ob2Upe3JldHVybiBvZS5pbmRleH0pLnJldmVyc2UoKTtyZXR1cm4gbG4udW5zaGlmdChwbltwbi5sZW5ndGgtMV0pLGxuLnB1c2goYmVbMF0pLEVuLnVuc2hpZnQoYmVbYmUubGVuZ3RoLTFdKSxFbi5wdXNoKHBuWzBdKSx7dmVydGljZXM6dW4saW5kaWNlczpuZXcgVWludDE2QXJyYXkob3QpLG1heGltdW1IZWlnaHQ6QixtaW5pbXVtSGVpZ2h0OnYsZW5jb2Rpbmc6RWUsYm91bmRpbmdTcGhlcmUzRDpmZSxvcmllbnRlZEJvdW5kaW5nQm94Olp0LG9jY2x1ZGVlUG9pbnRJblNjYWxlZFNwYWNlOk5lLHZlcnRleENvdW50V2l0aG91dFNraXJ0czpHdCxpbmRleENvdW50V2l0aG91dFNraXJ0czpwZSx3ZXN0SW5kaWNlc1NvdXRoVG9Ob3J0aDpiZSxzb3V0aEluZGljZXNFYXN0VG9XZXN0OmxuLGVhc3RJbmRpY2VzTm9ydGhUb1NvdXRoOnBuLG5vcnRoSW5kaWNlc1dlc3RUb0Vhc3Q6RW59fWZ1bmN0aW9uIFFkKHQsZSxuLG8scixpLHMsZix1LGMsbCl7bGV0IHA9Zi5sZW5ndGg7Zm9yKGxldCBkPTA7ZDxwOysrZCl7bGV0IGg9ZltkXSxfPWguY2FydG9ncmFwaGljLGc9aC5pbmRleCxiPXQubGVuZ3RoLHc9Xy5sb25naXR1ZGUsTz1fLmxhdGl0dWRlO089UC5jbGFtcChPLC1QLlBJX09WRVJfVFdPLFAuUElfT1ZFUl9UV08pO2xldCBFPV8uaGVpZ2h0LXMuc2tpcnRIZWlnaHQ7cy5oTWluPU1hdGgubWluKHMuaE1pbixFKSxjdC5mcm9tUmFkaWFucyh3LE8sRSx2byksYyYmKHZvLmxvbmdpdHVkZSs9dSksYz9kPT09cC0xP3ZvLmxhdGl0dWRlKz1sOmQ9PT0wJiYodm8ubGF0aXR1ZGUtPWwpOnZvLmxhdGl0dWRlKz11O2xldCBUPXMuZWxsaXBzb2lkLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKHZvKTt0LnB1c2goVCksZS5wdXNoKEUpLG4ucHVzaChKLmNsb25lKG5bZ10pKSxvLmxlbmd0aD4wJiZvLnB1c2gob1tnXSksci5sZW5ndGg+MCYmci5wdXNoKHJbZ10pLHN0Lm11bHRpcGx5QnlQb2ludChzLnRvRU5VLFQsVWEpO2xldCB4PXMubWluaW11bSxNPXMubWF4aW11bTthLm1pbmltdW1CeUNvbXBvbmVudChVYSx4LHgpLGEubWF4aW11bUJ5Q29tcG9uZW50KFVhLE0sTSk7bGV0IE49cy5sYXN0Qm9yZGVyUG9pbnQ7aWYobShOKSl7bGV0IEY9Ti5pbmRleDtpLnB1c2goRixiLTEsYixiLGcsRil9cy5sYXN0Qm9yZGVyUG9pbnQ9aH19dmFyIGJVLFpkLHVnLHdVLEVjLHZvLFVhLE9VLEVVLFJVLHhVLHBnPSQoKCk9PntQZigpO3ZlKCk7a2UoKTtEdCgpO0llKCk7ZnQoKTskdCgpO2N1KCk7S3QoKTtrbigpO2RhKCk7VG4oKTt0aSgpO2F1KCk7YXMoKTtzYygpO1puKCk7YlU9VWludDE2QXJyYXkuQllURVNfUEVSX0VMRU1FTlQsWmQ9SW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCx1Zz1VaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCx3VT1GbG9hdDMyQXJyYXkuQllURVNfUEVSX0VMRU1FTlQsRWM9RmxvYXQ2NEFycmF5LkJZVEVTX1BFUl9FTEVNRU5UO3ZvPW5ldyBjdCxVYT1uZXcgYSxPVT1uZXcgYSxFVT1uZXcgYSxSVT1uZXcgc3Q7eFU9VWUoVFUpfSk7dmFyIENVLGkyLHMyPSQoKCk9PntDVT17Tk9ORTowLExFUkM6MX0saTI9T2JqZWN0LmZyZWV6ZShDVSl9KTt2YXIgeWksZGcsUFUsTVUsTlUsYzIsYTI9JCgoKT0+e1BmKCk7dmUoKTtrZSgpO0R0KCk7ZnQoKTtIdCgpOyR0KCk7Y3UoKTtLdCgpO2tuKCk7ZGEoKTtUbigpO2F1KCk7YXMoKTtzYygpO3lpPXt9O3lpLkRFRkFVTFRfU1RSVUNUVVJFPU9iamVjdC5mcmVlemUoe2hlaWdodFNjYWxlOjEsaGVpZ2h0T2Zmc2V0OjAsZWxlbWVudHNQZXJIZWlnaHQ6MSxzdHJpZGU6MSxlbGVtZW50TXVsdGlwbGllcjoyNTYsaXNCaWdFbmRpYW46ITF9KTtkZz1uZXcgYSxQVT1uZXcgc3QsTVU9bmV3IGEsTlU9bmV3IGE7eWkuY29tcHV0ZVZlcnRpY2VzPWZ1bmN0aW9uKHQpe2lmKCFtKHQpfHwhbSh0LmhlaWdodG1hcCkpdGhyb3cgbmV3IEQoIm9wdGlvbnMuaGVpZ2h0bWFwIGlzIHJlcXVpcmVkLiIpO2lmKCFtKHQud2lkdGgpfHwhbSh0LmhlaWdodCkpdGhyb3cgbmV3IEQoIm9wdGlvbnMud2lkdGggYW5kIG9wdGlvbnMuaGVpZ2h0IGFyZSByZXF1aXJlZC4iKTtpZighbSh0Lm5hdGl2ZVJlY3RhbmdsZSkpdGhyb3cgbmV3IEQoIm9wdGlvbnMubmF0aXZlUmVjdGFuZ2xlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKHQuc2tpcnRIZWlnaHQpKXRocm93IG5ldyBEKCJvcHRpb25zLnNraXJ0SGVpZ2h0IGlzIHJlcXVpcmVkLiIpO2xldCBlPU1hdGguY29zLG49TWF0aC5zaW4sbz1NYXRoLnNxcnQscj1NYXRoLmF0YW4saT1NYXRoLmV4cCxzPVAuUElfT1ZFUl9UV08sZj1QLnRvUmFkaWFucyx1PXQuaGVpZ2h0bWFwLGM9dC53aWR0aCxsPXQuaGVpZ2h0LHA9dC5za2lydEhlaWdodCxkPXA+MCxoPXQuaXNHZW9ncmFwaGljPz8hMCxfPXQuZWxsaXBzb2lkPz9ZLmRlZmF1bHQsZz0xL18ubWF4aW11bVJhZGl1cyxiPU50LmNsb25lKHQubmF0aXZlUmVjdGFuZ2xlKSx3PU50LmNsb25lKHQucmVjdGFuZ2xlKSxPLEUsVCx4O20odyk/KE89dy53ZXN0LEU9dy5zb3V0aCxUPXcuZWFzdCx4PXcubm9ydGgpOmg/KE89ZihiLndlc3QpLEU9ZihiLnNvdXRoKSxUPWYoYi5lYXN0KSx4PWYoYi5ub3J0aCkpOihPPWIud2VzdCpnLEU9cy0yKnIoaSgtYi5zb3V0aCpnKSksVD1iLmVhc3QqZyx4PXMtMipyKGkoLWIubm9ydGgqZykpKTtsZXQgTT10LnJlbGF0aXZlVG9DZW50ZXIsTj1tKE0pO009Tj9NOmEuWkVSTztsZXQgRj10LmluY2x1ZGVXZWJNZXJjYXRvclQ/PyExLEk9dC5leGFnZ2VyYXRpb24/PzEsdj10LmV4YWdnZXJhdGlvblJlbGF0aXZlSGVpZ2h0Pz8wLEE9SSE9PTEsUz10LnN0cnVjdHVyZT8/eWkuREVGQVVMVF9TVFJVQ1RVUkUsQz1TLmhlaWdodFNjYWxlPz95aS5ERUZBVUxUX1NUUlVDVFVSRS5oZWlnaHRTY2FsZSxMPVMuaGVpZ2h0T2Zmc2V0Pz95aS5ERUZBVUxUX1NUUlVDVFVSRS5oZWlnaHRPZmZzZXQsej1TLmVsZW1lbnRzUGVySGVpZ2h0Pz95aS5ERUZBVUxUX1NUUlVDVFVSRS5lbGVtZW50c1BlckhlaWdodCxqPVMuc3RyaWRlPz95aS5ERUZBVUxUX1NUUlVDVFVSRS5zdHJpZGUsaz1TLmVsZW1lbnRNdWx0aXBsaWVyPz95aS5ERUZBVUxUX1NUUlVDVFVSRS5lbGVtZW50TXVsdGlwbGllcixxPVMuaXNCaWdFbmRpYW4/P3lpLkRFRkFVTFRfU1RSVUNUVVJFLmlzQmlnRW5kaWFuLFc9TnQuY29tcHV0ZVdpZHRoKGIpLFI9TnQuY29tcHV0ZUhlaWdodChiKSxudD1XLyhjLTEpLGF0PVIvKGwtMSk7aHx8KFcqPWcsUio9Zyk7bGV0IGx0PV8ucmFkaWlTcXVhcmVkLF90PWx0Lngsb3Q9bHQueSxQdD1sdC56LGd0PTY1NTM2LFJ0PS02NTUzNixkdD0kby5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShNLF8pLHJ0PXN0LmludmVyc2VUcmFuc2Zvcm1hdGlvbihkdCxQVSkseHQsR3Q7RiYmKHh0PXJvLmdlb2RldGljTGF0aXR1ZGVUb01lcmNhdG9yQW5nbGUoRSksR3Q9MS8ocm8uZ2VvZGV0aWNMYXRpdHVkZVRvTWVyY2F0b3JBbmdsZSh4KS14dCkpO2xldCBwZT1NVTtwZS54PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxwZS55PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxwZS56PU51bWJlci5QT1NJVElWRV9JTkZJTklUWTtsZXQgcmU9TlU7cmUueD1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkscmUueT1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkscmUuej1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bGV0IGRlPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxmZT1jKmwsWnQ9cD4wP2MqMitsKjI6MCxRdD1mZStadCxOZT1uZXcgQXJyYXkoUXQpLGdlPW5ldyBBcnJheShRdCksRWU9bmV3IEFycmF5KFF0KSx1bj1GP25ldyBBcnJheShRdCk6W10sVmU9QT9uZXcgQXJyYXkoUXQpOltdLGJlPTAsbG49bCxwbj0wLEVuPWM7ZCYmKC0tYmUsKytsbiwtLXBuLCsrRW4pO2xldCBvZT0xZS01O2ZvcihsZXQgUWU9YmU7UWU8bG47KytRZSl7bGV0IGNuPVFlO2NuPDAmJihjbj0wKSxjbj49bCYmKGNuPWwtMSk7bGV0IFdlPWIubm9ydGgtYXQqY247aD9XZT1mKFdlKTpXZT1zLTIqcihpKC1XZSpnKSk7bGV0IGhuPShXZS1FKS8oeC1FKTtobj1QLmNsYW1wKGhuLDAsMSk7bGV0IHBvPVFlPT09YmUsS249UWU9PT1sbi0xO3A+MCYmKHBvP1dlKz1vZSpSOktuJiYoV2UtPW9lKlIpKTtsZXQgV249ZShXZSksbW89bihXZSksamU9UHQqbW8sRmU7RiYmKEZlPShyby5nZW9kZXRpY0xhdGl0dWRlVG9NZXJjYXRvckFuZ2xlKFdlKS14dCkqR3QpO2ZvcihsZXQgRG49cG47RG48RW47KytEbil7bGV0IFhuPURuO1huPDAmJihYbj0wKSxYbj49YyYmKFhuPWMtMSk7bGV0IEhvPWNuKihjKmopK1huKmoscm47aWYoej09PTEpcm49dVtIb107ZWxzZXtybj0wO2xldCBobztpZihxKWZvcihobz0wO2hvPHo7Kytobylybj1ybiprK3VbSG8raG9dO2Vsc2UgZm9yKGhvPXotMTtobz49MDstLWhvKXJuPXJuKmsrdVtIbytob119cm49cm4qQytMLFJ0PU1hdGgubWF4KFJ0LHJuKSxndD1NYXRoLm1pbihndCxybik7bGV0IFJuPWIud2VzdCtudCpYbjtoP1JuPWYoUm4pOlJuPVJuKmc7bGV0IGZyPShSbi1PKS8oVC1PKTtmcj1QLmNsYW1wKGZyLDAsMSk7bGV0IHRvPWNuKmMrWG47aWYocD4wKXtsZXQgaG89RG49PT1wbixGcj1Ebj09PUVuLTEsTmM9cG98fEtufHxob3x8RnI7aWYoKHBvfHxLbikmJihob3x8RnIpKWNvbnRpbnVlO05jJiYocm4tPXAsaG8/KHRvPWZlKyhsLWNuLTEpLFJuLT1vZSpXKTpLbj90bz1mZStsKyhjLVhuLTEpOkZyPyh0bz1mZStsK2MrY24sUm4rPW9lKlcpOnBvJiYodG89ZmUrbCtjK2wrWG4pKX1sZXQgcW89V24qZShSbiksSXI9V24qbihSbiksSXM9X3QqcW8sdnM9b3QqSXIsdnI9MS9vKElzKnFvK3ZzKklyK2plKm1vKSxaaT1Jcyp2cixGcz12cyp2cix3aT1qZSp2cixzbz1uZXcgYTtzby54PVppK3FvKnJuLHNvLnk9RnMrSXIqcm4sc28uej13aSttbypybixzdC5tdWx0aXBseUJ5UG9pbnQocnQsc28sZGcpLGEubWluaW11bUJ5Q29tcG9uZW50KGRnLHBlLHBlKSxhLm1heGltdW1CeUNvbXBvbmVudChkZyxyZSxyZSksZGU9TWF0aC5taW4oZGUscm4pLE5lW3RvXT1zbyxFZVt0b109bmV3IEooZnIsaG4pLGdlW3RvXT1ybixGJiYodW5bdG9dPUZlKSxBJiYoVmVbdG9dPV8uZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKHNvKSl9fWxldCBZdD1BdC5mcm9tUG9pbnRzKE5lKSx6ZTttKHcpJiYoemU9Q28uZnJvbVJlY3RhbmdsZSh3LGd0LFJ0LF8pKTtsZXQgZG47TiYmKGRuPW5ldyBQcyhfKS5jb21wdXRlSG9yaXpvbkN1bGxpbmdQb2ludFBvc3NpYmx5VW5kZXJFbGxpcHNvaWQoTSxOZSxndCkpO2xldCBzbj1uZXcgRGkocGUscmUsTSksbW49bmV3IE1zKE0sc24sZGUsUnQsZHQsITEsRixBLEksdiksbG89bmV3IEZsb2F0MzJBcnJheShRdCptbi5zdHJpZGUpLHFuPTA7Zm9yKGxldCBRZT0wO1FlPFF0OysrUWUpcW49bW4uZW5jb2RlKGxvLHFuLE5lW1FlXSxFZVtRZV0sZ2VbUWVdLHZvaWQgMCx1bltRZV0sVmVbUWVdKTtyZXR1cm57dmVydGljZXM6bG8sbWF4aW11bUhlaWdodDpSdCxtaW5pbXVtSGVpZ2h0Omd0LGVuY29kaW5nOm1uLGJvdW5kaW5nU3BoZXJlM0Q6WXQsb3JpZW50ZWRCb3VuZGluZ0JveDp6ZSxvY2NsdWRlZVBvaW50SW5TY2FsZWRTcGFjZTpkbn19O2MyPXlpfSk7dmFyIGYyPVluKChXYXQsSmQpPT57LyogQ29weXJpZ2h0IDIwMTUtMjAxOCBFc3JpLiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIEBwcmVzZXJ2ZSAqLyhmdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKCl7dmFyIHI9e307ci5kZWZhdWx0Tm9EYXRhVmFsdWU9LTM0MDI3OTk5Mzg3OTAxNDg0ZTIyLHIuZGVjb2RlPWZ1bmN0aW9uKGwscCl7cD1wfHx7fTt2YXIgZD1wLmVuY29kZWRNYXNrRGF0YXx8cC5lbmNvZGVkTWFza0RhdGE9PT1udWxsLGg9dShsLHAuaW5wdXRPZmZzZXR8fDAsZCksXz1wLm5vRGF0YVZhbHVlIT09bnVsbD9wLm5vRGF0YVZhbHVlOnIuZGVmYXVsdE5vRGF0YVZhbHVlLGc9aShoLHAucGl4ZWxUeXBlfHxGbG9hdDMyQXJyYXkscC5lbmNvZGVkTWFza0RhdGEsXyxwLnJldHVybk1hc2spLGI9e3dpZHRoOmgud2lkdGgsaGVpZ2h0OmguaGVpZ2h0LHBpeGVsRGF0YTpnLnJlc3VsdFBpeGVscyxtaW5WYWx1ZTpnLm1pblZhbHVlLG1heFZhbHVlOmgucGl4ZWxzLm1heFZhbHVlLG5vRGF0YVZhbHVlOl99O3JldHVybiBnLnJlc3VsdE1hc2smJihiLm1hc2tEYXRhPWcucmVzdWx0TWFzaykscC5yZXR1cm5FbmNvZGVkTWFzayYmaC5tYXNrJiYoYi5lbmNvZGVkTWFza0RhdGE9aC5tYXNrLmJpdHNldD9oLm1hc2suYml0c2V0Om51bGwpLHAucmV0dXJuRmlsZUluZm8mJihiLmZpbGVJbmZvPXMoaCkscC5jb21wdXRlVXNlZEJpdERlcHRocyYmKGIuZmlsZUluZm8uYml0RGVwdGhzPWYoaCkpKSxifTt2YXIgaT1mdW5jdGlvbihsLHAsZCxoLF8pe3ZhciBnPTAsYj1sLnBpeGVscy5udW1CbG9ja3NYLHc9bC5waXhlbHMubnVtQmxvY2tzWSxPPU1hdGguZmxvb3IobC53aWR0aC9iKSxFPU1hdGguZmxvb3IobC5oZWlnaHQvdyksVD0yKmwubWF4WkVycm9yLHg9TnVtYmVyLk1BWF9WQUxVRSxNO2Q9ZHx8KGwubWFzaz9sLm1hc2suYml0c2V0Om51bGwpO3ZhciBOLEY7Tj1uZXcgcChsLndpZHRoKmwuaGVpZ2h0KSxfJiZkJiYoRj1uZXcgVWludDhBcnJheShsLndpZHRoKmwuaGVpZ2h0KSk7Zm9yKHZhciBJPW5ldyBGbG9hdDMyQXJyYXkoTypFKSx2LEIsQT0wO0E8PXc7QSsrKXt2YXIgUz1BIT09dz9FOmwuaGVpZ2h0JXc7aWYoUyE9PTApZm9yKHZhciBDPTA7Qzw9YjtDKyspe3ZhciBMPUMhPT1iP086bC53aWR0aCViO2lmKEwhPT0wKXt2YXIgej1BKmwud2lkdGgqRStDKk8saj1sLndpZHRoLUwsaz1sLnBpeGVscy5ibG9ja3NbZ10scSxXLFI7ay5lbmNvZGluZzwyPyhrLmVuY29kaW5nPT09MD9xPWsucmF3RGF0YTooYyhrLnN0dWZmZWREYXRhLGsuYml0c1BlclBpeGVsLGsubnVtVmFsaWRQaXhlbHMsay5vZmZzZXQsVCxJLGwucGl4ZWxzLm1heFZhbHVlKSxxPUkpLFc9MCk6ay5lbmNvZGluZz09PTI/Uj0wOlI9ay5vZmZzZXQ7dmFyIG50O2lmKGQpZm9yKEI9MDtCPFM7QisrKXtmb3IoeiY3JiYobnQ9ZFt6Pj4zXSxudDw8PXomNyksdj0wO3Y8TDt2KyspeiY3fHwobnQ9ZFt6Pj4zXSksbnQmMTI4PyhGJiYoRlt6XT0xKSxNPWsuZW5jb2Rpbmc8Mj9xW1crK106Uix4PXg+TT9NOngsTlt6KytdPU0pOihGJiYoRlt6XT0wKSxOW3orK109aCksbnQ8PD0xO3orPWp9ZWxzZSBpZihrLmVuY29kaW5nPDIpZm9yKEI9MDtCPFM7QisrKXtmb3Iodj0wO3Y8TDt2KyspTT1xW1crK10seD14Pk0/TTp4LE5beisrXT1NO3orPWp9ZWxzZSBmb3IoeD14PlI/Ujp4LEI9MDtCPFM7QisrKXtmb3Iodj0wO3Y8TDt2KyspTlt6KytdPVI7eis9an1pZihrLmVuY29kaW5nPT09MSYmVyE9PWsubnVtVmFsaWRQaXhlbHMpdGhyb3ciQmxvY2sgYW5kIE1hc2sgZG8gbm90IG1hdGNoIjtnKyt9fX1yZXR1cm57cmVzdWx0UGl4ZWxzOk4scmVzdWx0TWFzazpGLG1pblZhbHVlOnh9fSxzPWZ1bmN0aW9uKGwpe3JldHVybntmaWxlSWRlbnRpZmllclN0cmluZzpsLmZpbGVJZGVudGlmaWVyU3RyaW5nLGZpbGVWZXJzaW9uOmwuZmlsZVZlcnNpb24saW1hZ2VUeXBlOmwuaW1hZ2VUeXBlLGhlaWdodDpsLmhlaWdodCx3aWR0aDpsLndpZHRoLG1heFpFcnJvcjpsLm1heFpFcnJvcixlb2ZPZmZzZXQ6bC5lb2ZPZmZzZXQsbWFzazpsLm1hc2s/e251bUJsb2Nrc1g6bC5tYXNrLm51bUJsb2Nrc1gsbnVtQmxvY2tzWTpsLm1hc2subnVtQmxvY2tzWSxudW1CeXRlczpsLm1hc2subnVtQnl0ZXMsbWF4VmFsdWU6bC5tYXNrLm1heFZhbHVlfTpudWxsLHBpeGVsczp7bnVtQmxvY2tzWDpsLnBpeGVscy5udW1CbG9ja3NYLG51bUJsb2Nrc1k6bC5waXhlbHMubnVtQmxvY2tzWSxudW1CeXRlczpsLnBpeGVscy5udW1CeXRlcyxtYXhWYWx1ZTpsLnBpeGVscy5tYXhWYWx1ZSxub0RhdGFWYWx1ZTpsLm5vRGF0YVZhbHVlfX19LGY9ZnVuY3Rpb24obCl7Zm9yKHZhciBwPWwucGl4ZWxzLm51bUJsb2Nrc1gqbC5waXhlbHMubnVtQmxvY2tzWSxkPXt9LGg9MDtoPHA7aCsrKXt2YXIgXz1sLnBpeGVscy5ibG9ja3NbaF07Xy5lbmNvZGluZz09PTA/ZC5mbG9hdDMyPSEwOl8uZW5jb2Rpbmc9PT0xP2RbXy5iaXRzUGVyUGl4ZWxdPSEwOmRbMF09ITB9cmV0dXJuIE9iamVjdC5rZXlzKGQpfSx1PWZ1bmN0aW9uKGwscCxkKXt2YXIgaD17fSxfPW5ldyBVaW50OEFycmF5KGwscCwxMCk7aWYoaC5maWxlSWRlbnRpZmllclN0cmluZz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsXyksaC5maWxlSWRlbnRpZmllclN0cmluZy50cmltKCkhPT0iQ250WkltYWdlIil0aHJvdyJVbmV4cGVjdGVkIGZpbGUgaWRlbnRpZmllciBzdHJpbmc6ICIraC5maWxlSWRlbnRpZmllclN0cmluZztwKz0xMDt2YXIgZz1uZXcgRGF0YVZpZXcobCxwLDI0KTtpZihoLmZpbGVWZXJzaW9uPWcuZ2V0SW50MzIoMCwhMCksaC5pbWFnZVR5cGU9Zy5nZXRJbnQzMig0LCEwKSxoLmhlaWdodD1nLmdldFVpbnQzMig4LCEwKSxoLndpZHRoPWcuZ2V0VWludDMyKDEyLCEwKSxoLm1heFpFcnJvcj1nLmdldEZsb2F0NjQoMTYsITApLHArPTI0LCFkKWlmKGc9bmV3IERhdGFWaWV3KGwscCwxNiksaC5tYXNrPXt9LGgubWFzay5udW1CbG9ja3NZPWcuZ2V0VWludDMyKDAsITApLGgubWFzay5udW1CbG9ja3NYPWcuZ2V0VWludDMyKDQsITApLGgubWFzay5udW1CeXRlcz1nLmdldFVpbnQzMig4LCEwKSxoLm1hc2subWF4VmFsdWU9Zy5nZXRGbG9hdDMyKDEyLCEwKSxwKz0xNixoLm1hc2subnVtQnl0ZXM+MCl7dmFyIGI9bmV3IFVpbnQ4QXJyYXkoTWF0aC5jZWlsKGgud2lkdGgqaC5oZWlnaHQvOCkpO2c9bmV3IERhdGFWaWV3KGwscCxoLm1hc2subnVtQnl0ZXMpO3ZhciB3PWcuZ2V0SW50MTYoMCwhMCksTz0yLEU9MDtkb3tpZih3PjApZm9yKDt3LS07KWJbRSsrXT1nLmdldFVpbnQ4KE8rKyk7ZWxzZXt2YXIgVD1nLmdldFVpbnQ4KE8rKyk7Zm9yKHc9LXc7dy0tOyliW0UrK109VH13PWcuZ2V0SW50MTYoTywhMCksTys9Mn13aGlsZShPPGgubWFzay5udW1CeXRlcyk7aWYodyE9PS0zMjc2OHx8RTxiLmxlbmd0aCl0aHJvdyJVbmV4cGVjdGVkIGVuZCBvZiBtYXNrIFJMRSBlbmNvZGluZyI7aC5tYXNrLmJpdHNldD1iLHArPWgubWFzay5udW1CeXRlc31lbHNlKGgubWFzay5udW1CeXRlc3xoLm1hc2subnVtQmxvY2tzWXxoLm1hc2subWF4VmFsdWUpPT09MCYmKGgubWFzay5iaXRzZXQ9bmV3IFVpbnQ4QXJyYXkoTWF0aC5jZWlsKGgud2lkdGgqaC5oZWlnaHQvOCkpKTtnPW5ldyBEYXRhVmlldyhsLHAsMTYpLGgucGl4ZWxzPXt9LGgucGl4ZWxzLm51bUJsb2Nrc1k9Zy5nZXRVaW50MzIoMCwhMCksaC5waXhlbHMubnVtQmxvY2tzWD1nLmdldFVpbnQzMig0LCEwKSxoLnBpeGVscy5udW1CeXRlcz1nLmdldFVpbnQzMig4LCEwKSxoLnBpeGVscy5tYXhWYWx1ZT1nLmdldEZsb2F0MzIoMTIsITApLHArPTE2O3ZhciB4PWgucGl4ZWxzLm51bUJsb2Nrc1gsTT1oLnBpeGVscy5udW1CbG9ja3NZLE49eCsoaC53aWR0aCV4PjA/MTowKSxGPU0rKGguaGVpZ2h0JU0+MD8xOjApO2gucGl4ZWxzLmJsb2Nrcz1uZXcgQXJyYXkoTipGKTtmb3IodmFyIEk9MCx2PTA7djxGO3YrKylmb3IodmFyIEI9MDtCPE47QisrKXt2YXIgQT0wLFM9bC5ieXRlTGVuZ3RoLXA7Zz1uZXcgRGF0YVZpZXcobCxwLE1hdGgubWluKDEwLFMpKTt2YXIgQz17fTtoLnBpeGVscy5ibG9ja3NbSSsrXT1DO3ZhciBMPWcuZ2V0VWludDgoMCk7aWYoQSsrLEMuZW5jb2Rpbmc9TCY2MyxDLmVuY29kaW5nPjMpdGhyb3ciSW52YWxpZCBibG9jayBlbmNvZGluZyAoIitDLmVuY29kaW5nKyIpIjtpZihDLmVuY29kaW5nPT09Mil7cCsrO2NvbnRpbnVlfWlmKEwhPT0wJiZMIT09Mil7aWYoTD4+PTYsQy5vZmZzZXRUeXBlPUwsTD09PTIpQy5vZmZzZXQ9Zy5nZXRJbnQ4KDEpLEErKztlbHNlIGlmKEw9PT0xKUMub2Zmc2V0PWcuZ2V0SW50MTYoMSwhMCksQSs9MjtlbHNlIGlmKEw9PT0wKUMub2Zmc2V0PWcuZ2V0RmxvYXQzMigxLCEwKSxBKz00O2Vsc2UgdGhyb3ciSW52YWxpZCBibG9jayBvZmZzZXQgdHlwZSI7aWYoQy5lbmNvZGluZz09PTEpaWYoTD1nLmdldFVpbnQ4KEEpLEErKyxDLmJpdHNQZXJQaXhlbD1MJjYzLEw+Pj02LEMubnVtVmFsaWRQaXhlbHNUeXBlPUwsTD09PTIpQy5udW1WYWxpZFBpeGVscz1nLmdldFVpbnQ4KEEpLEErKztlbHNlIGlmKEw9PT0xKUMubnVtVmFsaWRQaXhlbHM9Zy5nZXRVaW50MTYoQSwhMCksQSs9MjtlbHNlIGlmKEw9PT0wKUMubnVtVmFsaWRQaXhlbHM9Zy5nZXRVaW50MzIoQSwhMCksQSs9NDtlbHNlIHRocm93IkludmFsaWQgdmFsaWQgcGl4ZWwgY291bnQgdHlwZSJ9aWYocCs9QSxDLmVuY29kaW5nIT09Myl7dmFyIHosajtpZihDLmVuY29kaW5nPT09MCl7dmFyIGs9KGgucGl4ZWxzLm51bUJ5dGVzLTEpLzQ7aWYoayE9PU1hdGguZmxvb3IoaykpdGhyb3cidW5jb21wcmVzc2VkIGJsb2NrIGhhcyBpbnZhbGlkIGxlbmd0aCI7ej1uZXcgQXJyYXlCdWZmZXIoayo0KSxqPW5ldyBVaW50OEFycmF5KHopLGouc2V0KG5ldyBVaW50OEFycmF5KGwscCxrKjQpKTt2YXIgcT1uZXcgRmxvYXQzMkFycmF5KHopO0MucmF3RGF0YT1xLHArPWsqNH1lbHNlIGlmKEMuZW5jb2Rpbmc9PT0xKXt2YXIgVz1NYXRoLmNlaWwoQy5udW1WYWxpZFBpeGVscypDLmJpdHNQZXJQaXhlbC84KSxSPU1hdGguY2VpbChXLzQpO3o9bmV3IEFycmF5QnVmZmVyKFIqNCksaj1uZXcgVWludDhBcnJheSh6KSxqLnNldChuZXcgVWludDhBcnJheShsLHAsVykpLEMuc3R1ZmZlZERhdGE9bmV3IFVpbnQzMkFycmF5KHopLHArPVd9fX1yZXR1cm4gaC5lb2ZPZmZzZXQ9cCxofSxjPWZ1bmN0aW9uKGwscCxkLGgsXyxnLGIpe3ZhciB3PSgxPDxwKS0xLE89MCxFLFQ9MCx4LE0sTj1NYXRoLmNlaWwoKGItaCkvXyksRj1sLmxlbmd0aCo0LU1hdGguY2VpbChwKmQvOCk7Zm9yKGxbbC5sZW5ndGgtMV08PD04KkYsRT0wO0U8ZDtFKyspe2lmKFQ9PT0wJiYoTT1sW08rK10sVD0zMiksVD49cCl4PU0+Pj5ULXAmdyxULT1wO2Vsc2V7dmFyIEk9cC1UO3g9KE0mdyk8PEkmdyxNPWxbTysrXSxUPTMyLUkseCs9TT4+PlR9Z1tFXT14PE4/aCt4Kl86Yn1yZXR1cm4gZ307cmV0dXJuIHJ9KCksZT1mdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgcj17dW5zdHVmZjpmdW5jdGlvbih1LGMsbCxwLGQsaCxfLGcpe3ZhciBiPSgxPDxsKS0xLHc9MCxPLEU9MCxULHgsTSxOLEY9dS5sZW5ndGgqNC1NYXRoLmNlaWwobCpwLzgpO2lmKHVbdS5sZW5ndGgtMV08PD04KkYsZClmb3IoTz0wO088cDtPKyspRT09PTAmJih4PXVbdysrXSxFPTMyKSxFPj1sPyhUPXg+Pj5FLWwmYixFLT1sKTooTT1sLUUsVD0oeCZiKTw8TSZiLHg9dVt3KytdLEU9MzItTSxUKz14Pj4+RSksY1tPXT1kW1RdO2Vsc2UgZm9yKE49TWF0aC5jZWlsKChnLWgpL18pLE89MDtPPHA7TysrKUU9PT0wJiYoeD11W3crK10sRT0zMiksRT49bD8oVD14Pj4+RS1sJmIsRS09bCk6KE09bC1FLFQ9KHgmYik8PE0mYix4PXVbdysrXSxFPTMyLU0sVCs9eD4+PkUpLGNbT109VDxOP2grVCpfOmd9LHVuc3R1ZmZMVVQ6ZnVuY3Rpb24odSxjLGwscCxkLGgpe3ZhciBfPSgxPDxjKS0xLGc9MCxiPTAsdz0wLE89MCxFPTAsVCx4PVtdLE09dS5sZW5ndGgqNC1NYXRoLmNlaWwoYypsLzgpO3VbdS5sZW5ndGgtMV08PD04Kk07dmFyIE49TWF0aC5jZWlsKChoLXApL2QpO2ZvcihiPTA7YjxsO2IrKylPPT09MCYmKFQ9dVtnKytdLE89MzIpLE8+PWM/KEU9VD4+Pk8tYyZfLE8tPWMpOih3PWMtTyxFPShUJl8pPDx3Jl8sVD11W2crK10sTz0zMi13LEUrPVQ+Pj5PKSx4W2JdPUU8Tj9wK0UqZDpoO3JldHVybiB4LnVuc2hpZnQocCkseH0sdW5zdHVmZjI6ZnVuY3Rpb24odSxjLGwscCxkLGgsXyxnKXt2YXIgYj0oMTw8bCktMSx3PTAsTyxFPTAsVD0wLHgsTSxOO2lmKGQpZm9yKE89MDtPPHA7TysrKUU9PT0wJiYoTT11W3crK10sRT0zMixUPTApLEU+PWw/KHg9TT4+PlQmYixFLT1sLFQrPWwpOihOPWwtRSx4PU0+Pj5UJmIsTT11W3crK10sRT0zMi1OLHh8PShNJigxPDxOKS0xKTw8bC1OLFQ9TiksY1tPXT1kW3hdO2Vsc2V7dmFyIEY9TWF0aC5jZWlsKChnLWgpL18pO2ZvcihPPTA7TzxwO08rKylFPT09MCYmKE09dVt3KytdLEU9MzIsVD0wKSxFPj1sPyh4PU0+Pj5UJmIsRS09bCxUKz1sKTooTj1sLUUseD1NPj4+VCZiLE09dVt3KytdLEU9MzItTix4fD0oTSYoMTw8TiktMSk8PGwtTixUPU4pLGNbT109eDxGP2greCpfOmd9cmV0dXJuIGN9LHVuc3R1ZmZMVVQyOmZ1bmN0aW9uKHUsYyxsLHAsZCxoKXt2YXIgXz0oMTw8YyktMSxnPTAsYj0wLHc9MCxPPTAsRT0wLFQ9MCx4LE09W10sTj1NYXRoLmNlaWwoKGgtcCkvZCk7Zm9yKGI9MDtiPGw7YisrKU89PT0wJiYoeD11W2crK10sTz0zMixUPTApLE8+PWM/KEU9eD4+PlQmXyxPLT1jLFQrPWMpOih3PWMtTyxFPXg+Pj5UJl8seD11W2crK10sTz0zMi13LEV8PSh4JigxPDx3KS0xKTw8Yy13LFQ9dyksTVtiXT1FPE4/cCtFKmQ6aDtyZXR1cm4gTS51bnNoaWZ0KHApLE19LG9yaWdpbmFsVW5zdHVmZjpmdW5jdGlvbih1LGMsbCxwKXt2YXIgZD0oMTw8bCktMSxoPTAsXyxnPTAsYix3LE8sRT11Lmxlbmd0aCo0LU1hdGguY2VpbChsKnAvOCk7Zm9yKHVbdS5sZW5ndGgtMV08PD04KkUsXz0wO188cDtfKyspZz09PTAmJih3PXVbaCsrXSxnPTMyKSxnPj1sPyhiPXc+Pj5nLWwmZCxnLT1sKTooTz1sLWcsYj0odyZkKTw8TyZkLHc9dVtoKytdLGc9MzItTyxiKz13Pj4+ZyksY1tfXT1iO3JldHVybiBjfSxvcmlnaW5hbFVuc3R1ZmYyOmZ1bmN0aW9uKHUsYyxsLHApe3ZhciBkPSgxPDxsKS0xLGg9MCxfLGc9MCxiPTAsdyxPLEU7Zm9yKF89MDtfPHA7XysrKWc9PT0wJiYoTz11W2grK10sZz0zMixiPTApLGc+PWw/KHc9Tz4+PmImZCxnLT1sLGIrPWwpOihFPWwtZyx3PU8+Pj5iJmQsTz11W2grK10sZz0zMi1FLHd8PShPJigxPDxFKS0xKTw8bC1FLGI9RSksY1tfXT13O3JldHVybiBjfX0saT17SFVGRk1BTl9MVVRfQklUU19NQVg6MTIsY29tcHV0ZUNoZWNrc3VtRmxldGNoZXIzMjpmdW5jdGlvbih1KXtmb3IodmFyIGM9NjU1MzUsbD02NTUzNSxwPXUubGVuZ3RoLGQ9TWF0aC5mbG9vcihwLzIpLGg9MDtkOyl7dmFyIF89ZD49MzU5PzM1OTpkO2QtPV87ZG8gYys9dVtoKytdPDw4LGwrPWMrPXVbaCsrXTt3aGlsZSgtLV8pO2M9KGMmNjU1MzUpKyhjPj4+MTYpLGw9KGwmNjU1MzUpKyhsPj4+MTYpfXJldHVybiBwJjEmJihsKz1jKz11W2hdPDw4KSxjPShjJjY1NTM1KSsoYz4+PjE2KSxsPShsJjY1NTM1KSsobD4+PjE2KSwobDw8MTZ8Yyk+Pj4wfSxyZWFkSGVhZGVySW5mbzpmdW5jdGlvbih1LGMpe3ZhciBsPWMucHRyLHA9bmV3IFVpbnQ4QXJyYXkodSxsLDYpLGQ9e307aWYoZC5maWxlSWRlbnRpZmllclN0cmluZz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwscCksZC5maWxlSWRlbnRpZmllclN0cmluZy5sYXN0SW5kZXhPZigiTGVyYzIiLDApIT09MCl0aHJvdyJVbmV4cGVjdGVkIGZpbGUgaWRlbnRpZmllciBzdHJpbmcgKGV4cGVjdCBMZXJjMiApOiAiK2QuZmlsZUlkZW50aWZpZXJTdHJpbmc7bCs9Njt2YXIgaD1uZXcgRGF0YVZpZXcodSxsLDgpLF89aC5nZXRJbnQzMigwLCEwKTtkLmZpbGVWZXJzaW9uPV8sbCs9NCxfPj0zJiYoZC5jaGVja3N1bT1oLmdldFVpbnQzMig0LCEwKSxsKz00KSxoPW5ldyBEYXRhVmlldyh1LGwsMTIpLGQuaGVpZ2h0PWguZ2V0VWludDMyKDAsITApLGQud2lkdGg9aC5nZXRVaW50MzIoNCwhMCksbCs9OCxfPj00PyhkLm51bURpbXM9aC5nZXRVaW50MzIoOCwhMCksbCs9NCk6ZC5udW1EaW1zPTEsaD1uZXcgRGF0YVZpZXcodSxsLDQwKSxkLm51bVZhbGlkUGl4ZWw9aC5nZXRVaW50MzIoMCwhMCksZC5taWNyb0Jsb2NrU2l6ZT1oLmdldEludDMyKDQsITApLGQuYmxvYlNpemU9aC5nZXRJbnQzMig4LCEwKSxkLmltYWdlVHlwZT1oLmdldEludDMyKDEyLCEwKSxkLm1heFpFcnJvcj1oLmdldEZsb2F0NjQoMTYsITApLGQuek1pbj1oLmdldEZsb2F0NjQoMjQsITApLGQuek1heD1oLmdldEZsb2F0NjQoMzIsITApLGwrPTQwLGMuaGVhZGVySW5mbz1kLGMucHRyPWw7dmFyIGcsYjtpZihfPj0zJiYoYj1fPj00PzUyOjQ4LGc9dGhpcy5jb21wdXRlQ2hlY2tzdW1GbGV0Y2hlcjMyKG5ldyBVaW50OEFycmF5KHUsbC1iLGQuYmxvYlNpemUtMTQpKSxnIT09ZC5jaGVja3N1bSkpdGhyb3ciQ2hlY2tzdW0gZmFpbGVkLiI7cmV0dXJuITB9LGNoZWNrTWluTWF4UmFuZ2VzOmZ1bmN0aW9uKHUsYyl7dmFyIGw9Yy5oZWFkZXJJbmZvLHA9dGhpcy5nZXREYXRhVHlwZUFycmF5KGwuaW1hZ2VUeXBlKSxkPWwubnVtRGltcyp0aGlzLmdldERhdGFUeXBlU2l6ZShsLmltYWdlVHlwZSksaD10aGlzLnJlYWRTdWJBcnJheSh1LGMucHRyLHAsZCksXz10aGlzLnJlYWRTdWJBcnJheSh1LGMucHRyK2QscCxkKTtjLnB0cis9MipkO3ZhciBnLGI9ITA7Zm9yKGc9MDtnPGwubnVtRGltcztnKyspaWYoaFtnXSE9PV9bZ10pe2I9ITE7YnJlYWt9cmV0dXJuIGwubWluVmFsdWVzPWgsbC5tYXhWYWx1ZXM9XyxifSxyZWFkU3ViQXJyYXk6ZnVuY3Rpb24odSxjLGwscCl7dmFyIGQ7aWYobD09PVVpbnQ4QXJyYXkpZD1uZXcgVWludDhBcnJheSh1LGMscCk7ZWxzZXt2YXIgaD1uZXcgQXJyYXlCdWZmZXIocCksXz1uZXcgVWludDhBcnJheShoKTtfLnNldChuZXcgVWludDhBcnJheSh1LGMscCkpLGQ9bmV3IGwoaCl9cmV0dXJuIGR9LHJlYWRNYXNrOmZ1bmN0aW9uKHUsYyl7dmFyIGw9Yy5wdHIscD1jLmhlYWRlckluZm8sZD1wLndpZHRoKnAuaGVpZ2h0LGg9cC5udW1WYWxpZFBpeGVsLF89bmV3IERhdGFWaWV3KHUsbCw0KSxnPXt9O2lmKGcubnVtQnl0ZXM9Xy5nZXRVaW50MzIoMCwhMCksbCs9NCwoaD09PTB8fGQ9PT1oKSYmZy5udW1CeXRlcyE9PTApdGhyb3ciaW52YWxpZCBtYXNrIjt2YXIgYix3O2lmKGg9PT0wKWI9bmV3IFVpbnQ4QXJyYXkoTWF0aC5jZWlsKGQvOCkpLGcuYml0c2V0PWIsdz1uZXcgVWludDhBcnJheShkKSxjLnBpeGVscy5yZXN1bHRNYXNrPXcsbCs9Zy5udW1CeXRlcztlbHNlIGlmKGcubnVtQnl0ZXM+MCl7Yj1uZXcgVWludDhBcnJheShNYXRoLmNlaWwoZC84KSksXz1uZXcgRGF0YVZpZXcodSxsLGcubnVtQnl0ZXMpO3ZhciBPPV8uZ2V0SW50MTYoMCwhMCksRT0yLFQ9MCx4PTA7ZG97aWYoTz4wKWZvcig7Ty0tOyliW1QrK109Xy5nZXRVaW50OChFKyspO2Vsc2UgZm9yKHg9Xy5nZXRVaW50OChFKyspLE89LU87Ty0tOyliW1QrK109eDtPPV8uZ2V0SW50MTYoRSwhMCksRSs9Mn13aGlsZShFPGcubnVtQnl0ZXMpO2lmKE8hPT0tMzI3Njh8fFQ8Yi5sZW5ndGgpdGhyb3ciVW5leHBlY3RlZCBlbmQgb2YgbWFzayBSTEUgZW5jb2RpbmciO3c9bmV3IFVpbnQ4QXJyYXkoZCk7dmFyIE09MCxOPTA7Zm9yKE49MDtOPGQ7TisrKU4mNz8oTT1iW04+PjNdLE08PD1OJjcpOk09YltOPj4zXSxNJjEyOCYmKHdbTl09MSk7Yy5waXhlbHMucmVzdWx0TWFzaz13LGcuYml0c2V0PWIsbCs9Zy5udW1CeXRlc31yZXR1cm4gYy5wdHI9bCxjLm1hc2s9ZywhMH0scmVhZERhdGFPbmVTd2VlcDpmdW5jdGlvbih1LGMsbCl7dmFyIHA9Yy5wdHIsZD1jLmhlYWRlckluZm8saD1kLm51bURpbXMsXz1kLndpZHRoKmQuaGVpZ2h0LGc9ZC5pbWFnZVR5cGUsYj1kLm51bVZhbGlkUGl4ZWwqaS5nZXREYXRhVHlwZVNpemUoZykqaCx3LE89Yy5waXhlbHMucmVzdWx0TWFzaztpZihsPT09VWludDhBcnJheSl3PW5ldyBVaW50OEFycmF5KHUscCxiKTtlbHNle3ZhciBFPW5ldyBBcnJheUJ1ZmZlcihiKSxUPW5ldyBVaW50OEFycmF5KEUpO1Quc2V0KG5ldyBVaW50OEFycmF5KHUscCxiKSksdz1uZXcgbChFKX1pZih3Lmxlbmd0aD09PV8qaCljLnBpeGVscy5yZXN1bHRQaXhlbHM9dztlbHNle2MucGl4ZWxzLnJlc3VsdFBpeGVscz1uZXcgbChfKmgpO3ZhciB4PTAsTT0wLE49MCxGPTA7aWYoaD4xKWZvcihOPTA7TjxoO04rKylmb3IoRj1OKl8sTT0wO008XztNKyspT1tNXSYmKGMucGl4ZWxzLnJlc3VsdFBpeGVsc1tGK01dPXdbeCsrXSk7ZWxzZSBmb3IoTT0wO008XztNKyspT1tNXSYmKGMucGl4ZWxzLnJlc3VsdFBpeGVsc1tNXT13W3grK10pfXJldHVybiBwKz1iLGMucHRyPXAsITB9LHJlYWRIdWZmbWFuVHJlZTpmdW5jdGlvbih1LGMpe3ZhciBsPXRoaXMuSFVGRk1BTl9MVVRfQklUU19NQVgscD1uZXcgRGF0YVZpZXcodSxjLnB0ciwxNik7Yy5wdHIrPTE2O3ZhciBkPXAuZ2V0SW50MzIoMCwhMCk7aWYoZDwyKXRocm93InVuc3VwcG9ydGVkIEh1ZmZtYW4gdmVyc2lvbiI7dmFyIGg9cC5nZXRJbnQzMig0LCEwKSxfPXAuZ2V0SW50MzIoOCwhMCksZz1wLmdldEludDMyKDEyLCEwKTtpZihfPj1nKXJldHVybiExO3ZhciBiPW5ldyBVaW50MzJBcnJheShnLV8pO2kuZGVjb2RlQml0cyh1LGMsYik7dmFyIHc9W10sTyxFLFQseDtmb3IoTz1fO088ZztPKyspRT1PLShPPGg/MDpoKSx3W0VdPXtmaXJzdDpiW08tX10sc2Vjb25kOm51bGx9O3ZhciBNPXUuYnl0ZUxlbmd0aC1jLnB0cixOPU1hdGguY2VpbChNLzQpLEY9bmV3IEFycmF5QnVmZmVyKE4qNCksST1uZXcgVWludDhBcnJheShGKTtJLnNldChuZXcgVWludDhBcnJheSh1LGMucHRyLE0pKTt2YXIgdj1uZXcgVWludDMyQXJyYXkoRiksQj0wLEEsUz0wO2ZvcihBPXZbMF0sTz1fO088ZztPKyspRT1PLShPPGg/MDpoKSx4PXdbRV0uZmlyc3QseD4wJiYod1tFXS5zZWNvbmQ9QTw8Qj4+PjMyLXgsMzItQj49eD8oQis9eCxCPT09MzImJihCPTAsUysrLEE9dltTXSkpOihCKz14LTMyLFMrKyxBPXZbU10sd1tFXS5zZWNvbmR8PUE+Pj4zMi1CKSk7dmFyIEM9MCxMPTAsej1uZXcgcztmb3IoTz0wO088dy5sZW5ndGg7TysrKXdbT10hPT12b2lkIDAmJihDPU1hdGgubWF4KEMsd1tPXS5maXJzdCkpO0M+PWw/TD1sOkw9QyxDPj0zMCYmY29uc29sZS5sb2coIldBUm5pbmcsIGxhcmdlIE5VTSBMVVQgQklUUyBJUyAiK0MpO3ZhciBqPVtdLGsscSxXLFIsbnQsYXQ7Zm9yKE89XztPPGc7TysrKWlmKEU9Ty0oTzxoPzA6aCkseD13W0VdLmZpcnN0LHg+MClpZihrPVt4LEVdLHg8PUwpZm9yKHE9d1tFXS5zZWNvbmQ8PEwteCxXPTE8PEwteCxUPTA7VDxXO1QrKylqW3F8VF09aztlbHNlIGZvcihxPXdbRV0uc2Vjb25kLGF0PXosUj14LTE7Uj49MDtSLS0pbnQ9cT4+PlImMSxudD8oYXQucmlnaHR8fChhdC5yaWdodD1uZXcgcyksYXQ9YXQucmlnaHQpOihhdC5sZWZ0fHwoYXQubGVmdD1uZXcgcyksYXQ9YXQubGVmdCksUj09PTAmJiFhdC52YWwmJihhdC52YWw9a1sxXSk7cmV0dXJue2RlY29kZUx1dDpqLG51bUJpdHNMVVRRaWNrOkwsbnVtQml0c0xVVDpDLHRyZWU6eixzdHVmZmVkRGF0YTp2LHNyY1B0cjpTLGJpdFBvczpCfX0scmVhZEh1ZmZtYW46ZnVuY3Rpb24odSxjLGwpe3ZhciBwPWMuaGVhZGVySW5mbyxkPXAubnVtRGltcyxoPWMuaGVhZGVySW5mby5oZWlnaHQsXz1jLmhlYWRlckluZm8ud2lkdGgsZz1fKmgsYj10aGlzLnJlYWRIdWZmbWFuVHJlZSh1LGMpLHc9Yi5kZWNvZGVMdXQsTz1iLnRyZWUsRT1iLnN0dWZmZWREYXRhLFQ9Yi5zcmNQdHIseD1iLmJpdFBvcyxNPWIubnVtQml0c0xVVFFpY2ssTj1iLm51bUJpdHNMVVQsRj1jLmhlYWRlckluZm8uaW1hZ2VUeXBlPT09MD8xMjg6MCxJLHYsQixBPWMucGl4ZWxzLnJlc3VsdE1hc2ssUyxDLEwseixqLGsscSxXPTA7eD4wJiYoVCsrLHg9MCk7dmFyIFI9RVtUXSxudD1jLmVuY29kZU1vZGU9PT0xLGF0PW5ldyBsKGcqZCksbHQ9YXQsX3Q7Zm9yKF90PTA7X3Q8cC5udW1EaW1zO190Kyspe2lmKGQ+MSYmKGx0PW5ldyBsKGF0LmJ1ZmZlcixnKl90LGcpLFc9MCksYy5oZWFkZXJJbmZvLm51bVZhbGlkUGl4ZWw9PT1fKmgpZm9yKGs9MCx6PTA7ejxoO3orKylmb3Ioaj0wO2o8XztqKyssaysrKXtpZih2PTAsUz1SPDx4Pj4+MzItTSxDPVMsMzIteDxNJiYoU3w9RVtUKzFdPj4+NjQteC1NLEM9Uyksd1tDXSl2PXdbQ11bMV0seCs9d1tDXVswXTtlbHNlIGZvcihTPVI8PHg+Pj4zMi1OLEM9UywzMi14PE4mJihTfD1FW1QrMV0+Pj42NC14LU4sQz1TKSxJPU8scT0wO3E8TjtxKyspaWYoTD1TPj4+Ti1xLTEmMSxJPUw/SS5yaWdodDpJLmxlZnQsIShJLmxlZnR8fEkucmlnaHQpKXt2PUkudmFsLHg9eCtxKzE7YnJlYWt9eD49MzImJih4LT0zMixUKyssUj1FW1RdKSxCPXYtRixudD8oaj4wP0IrPVc6ej4wP0IrPWx0W2stX106Qis9VyxCJj0yNTUsbHRba109QixXPUIpOmx0W2tdPUJ9ZWxzZSBmb3Ioaz0wLHo9MDt6PGg7eisrKWZvcihqPTA7ajxfO2orKyxrKyspaWYoQVtrXSl7aWYodj0wLFM9Ujw8eD4+PjMyLU0sQz1TLDMyLXg8TSYmKFN8PUVbVCsxXT4+PjY0LXgtTSxDPVMpLHdbQ10pdj13W0NdWzFdLHgrPXdbQ11bMF07ZWxzZSBmb3IoUz1SPDx4Pj4+MzItTixDPVMsMzIteDxOJiYoU3w9RVtUKzFdPj4+NjQteC1OLEM9UyksST1PLHE9MDtxPE47cSsrKWlmKEw9Uz4+Pk4tcS0xJjEsST1MP0kucmlnaHQ6SS5sZWZ0LCEoSS5sZWZ0fHxJLnJpZ2h0KSl7dj1JLnZhbCx4PXgrcSsxO2JyZWFrfXg+PTMyJiYoeC09MzIsVCsrLFI9RVtUXSksQj12LUYsbnQ/KGo+MCYmQVtrLTFdP0IrPVc6ej4wJiZBW2stX10/Qis9bHRbay1fXTpCKz1XLEImPTI1NSxsdFtrXT1CLFc9Qik6bHRba109Qn1jLnB0cj1jLnB0cisoVCsxKSo0Kyh4PjA/NDowKX1jLnBpeGVscy5yZXN1bHRQaXhlbHM9YXR9LGRlY29kZUJpdHM6ZnVuY3Rpb24odSxjLGwscCxkKXt7dmFyIGg9Yy5oZWFkZXJJbmZvLF89aC5maWxlVmVyc2lvbixnPTAsYj1uZXcgRGF0YVZpZXcodSxjLnB0ciw1KSx3PWIuZ2V0VWludDgoMCk7ZysrO3ZhciBPPXc+PjYsRT1PPT09MD80OjMtTyxUPSh3JjMyKT4wLHg9dyYzMSxNPTA7aWYoRT09PTEpTT1iLmdldFVpbnQ4KGcpLGcrKztlbHNlIGlmKEU9PT0yKU09Yi5nZXRVaW50MTYoZywhMCksZys9MjtlbHNlIGlmKEU9PT00KU09Yi5nZXRVaW50MzIoZywhMCksZys9NDtlbHNlIHRocm93IkludmFsaWQgdmFsaWQgcGl4ZWwgY291bnQgdHlwZSI7dmFyIE49MipoLm1heFpFcnJvcixGLEksdixCLEEsUyxDLEwseixqLGs9aC5udW1EaW1zPjE/aC5tYXhWYWx1ZXNbZF06aC56TWF4O2lmKFQpe2ZvcihjLmNvdW50ZXIubHV0KyssTD1iLmdldFVpbnQ4KGcpLHo9eCxnKyssQj1NYXRoLmNlaWwoKEwtMSkqeC84KSxBPU1hdGguY2VpbChCLzQpLEk9bmV3IEFycmF5QnVmZmVyKEEqNCksdj1uZXcgVWludDhBcnJheShJKSxjLnB0cis9Zyx2LnNldChuZXcgVWludDhBcnJheSh1LGMucHRyLEIpKSxDPW5ldyBVaW50MzJBcnJheShJKSxjLnB0cis9QixqPTA7TC0xPj4+ajspaisrO0I9TWF0aC5jZWlsKE0qai84KSxBPU1hdGguY2VpbChCLzQpLEk9bmV3IEFycmF5QnVmZmVyKEEqNCksdj1uZXcgVWludDhBcnJheShJKSx2LnNldChuZXcgVWludDhBcnJheSh1LGMucHRyLEIpKSxGPW5ldyBVaW50MzJBcnJheShJKSxjLnB0cis9QixfPj0zP1M9ci51bnN0dWZmTFVUMihDLHgsTC0xLHAsTixrKTpTPXIudW5zdHVmZkxVVChDLHgsTC0xLHAsTixrKSxfPj0zP3IudW5zdHVmZjIoRixsLGosTSxTKTpyLnVuc3R1ZmYoRixsLGosTSxTKX1lbHNlIGMuY291bnRlci5iaXRzdHVmZmVyKyssaj14LGMucHRyKz1nLGo+MCYmKEI9TWF0aC5jZWlsKE0qai84KSxBPU1hdGguY2VpbChCLzQpLEk9bmV3IEFycmF5QnVmZmVyKEEqNCksdj1uZXcgVWludDhBcnJheShJKSx2LnNldChuZXcgVWludDhBcnJheSh1LGMucHRyLEIpKSxGPW5ldyBVaW50MzJBcnJheShJKSxjLnB0cis9QixfPj0zP3A9PW51bGw/ci5vcmlnaW5hbFVuc3R1ZmYyKEYsbCxqLE0pOnIudW5zdHVmZjIoRixsLGosTSwhMSxwLE4sayk6cD09bnVsbD9yLm9yaWdpbmFsVW5zdHVmZihGLGwsaixNKTpyLnVuc3R1ZmYoRixsLGosTSwhMSxwLE4saykpfX0scmVhZFRpbGVzOmZ1bmN0aW9uKHUsYyxsKXt2YXIgcD1jLmhlYWRlckluZm8sZD1wLndpZHRoLGg9cC5oZWlnaHQsXz1wLm1pY3JvQmxvY2tTaXplLGc9cC5pbWFnZVR5cGUsYj1pLmdldERhdGFUeXBlU2l6ZShnKSx3PU1hdGguY2VpbChkL18pLE89TWF0aC5jZWlsKGgvXyk7Yy5waXhlbHMubnVtQmxvY2tzWT1PLGMucGl4ZWxzLm51bUJsb2Nrc1g9dyxjLnBpeGVscy5wdHI9MDt2YXIgRT0wLFQ9MCx4PTAsTT0wLE49MCxGPTAsST0wLHY9MCxCPTAsQT0wLFM9MCxDPTAsTD0wLHo9MCxqPTAsaz0wLHEsVyxSLG50LGF0LGx0LF90PW5ldyBsKF8qXyksb3Q9aCVffHxfLFB0PWQlX3x8XyxndCxSdCxkdD1wLm51bURpbXMscnQseHQ9Yy5waXhlbHMucmVzdWx0TWFzayxHdD1jLnBpeGVscy5yZXN1bHRQaXhlbHM7Zm9yKHg9MDt4PE87eCsrKWZvcihOPXghPT1PLTE/XzpvdCxNPTA7TTx3O00rKylmb3IoRj1NIT09dy0xP186UHQsUz14KmQqXytNKl8sQz1kLUYscnQ9MDtydDxkdDtydCsrKXtpZihkdD4xJiYoR3Q9bmV3IGwoYy5waXhlbHMucmVzdWx0UGl4ZWxzLmJ1ZmZlcixkKmgqcnQqYixkKmgpKSxJPXUuYnl0ZUxlbmd0aC1jLnB0cixxPW5ldyBEYXRhVmlldyh1LGMucHRyLE1hdGgubWluKDEwLEkpKSxXPXt9LGs9MCx2PXEuZ2V0VWludDgoMCksaysrLEI9dj4+NiYyNTUsQT12Pj4yJjE1LEEhPT0oTSpfPj4zJjE1KSl0aHJvdyJpbnRlZ3JpdHkgaXNzdWUiO2lmKGx0PXYmMyxsdD4zKXRocm93IGMucHRyKz1rLCJJbnZhbGlkIGJsb2NrIGVuY29kaW5nICgiK2x0KyIpIjtpZihsdD09PTIpe2MuY291bnRlci5jb25zdGFudCsrLGMucHRyKz1rO2NvbnRpbnVlfWVsc2UgaWYobHQ9PT0wKXtpZihjLmNvdW50ZXIudW5jb21wcmVzc2VkKyssYy5wdHIrPWssTD1OKkYqYix6PXUuYnl0ZUxlbmd0aC1jLnB0cixMPUw8ej9MOnosUj1uZXcgQXJyYXlCdWZmZXIoTCViPT09MD9MOkwrYi1MJWIpLG50PW5ldyBVaW50OEFycmF5KFIpLG50LnNldChuZXcgVWludDhBcnJheSh1LGMucHRyLEwpKSxhdD1uZXcgbChSKSxqPTAseHQpZm9yKEU9MDtFPE47RSsrKXtmb3IoVD0wO1Q8RjtUKyspeHRbU10mJihHdFtTXT1hdFtqKytdKSxTKys7Uys9Q31lbHNlIGZvcihFPTA7RTxOO0UrKyl7Zm9yKFQ9MDtUPEY7VCsrKUd0W1MrK109YXRbaisrXTtTKz1DfWMucHRyKz1qKmJ9ZWxzZSBpZihndD1pLmdldERhdGFUeXBlVXNlZChnLEIpLFJ0PWkuZ2V0T25lUGl4ZWwoVyxrLGd0LHEpLGsrPWkuZ2V0RGF0YVR5cGVTaXplKGd0KSxsdD09PTMpaWYoYy5wdHIrPWssYy5jb3VudGVyLmNvbnN0YW50b2Zmc2V0KysseHQpZm9yKEU9MDtFPE47RSsrKXtmb3IoVD0wO1Q8RjtUKyspeHRbU10mJihHdFtTXT1SdCksUysrO1MrPUN9ZWxzZSBmb3IoRT0wO0U8TjtFKyspe2ZvcihUPTA7VDxGO1QrKylHdFtTKytdPVJ0O1MrPUN9ZWxzZSBpZihjLnB0cis9ayxpLmRlY29kZUJpdHModSxjLF90LFJ0LHJ0KSxrPTAseHQpZm9yKEU9MDtFPE47RSsrKXtmb3IoVD0wO1Q8RjtUKyspeHRbU10mJihHdFtTXT1fdFtrKytdKSxTKys7Uys9Q31lbHNlIGZvcihFPTA7RTxOO0UrKyl7Zm9yKFQ9MDtUPEY7VCsrKUd0W1MrK109X3RbaysrXTtTKz1DfX19LGZvcm1hdEZpbGVJbmZvOmZ1bmN0aW9uKHUpe3JldHVybntmaWxlSWRlbnRpZmllclN0cmluZzp1LmhlYWRlckluZm8uZmlsZUlkZW50aWZpZXJTdHJpbmcsZmlsZVZlcnNpb246dS5oZWFkZXJJbmZvLmZpbGVWZXJzaW9uLGltYWdlVHlwZTp1LmhlYWRlckluZm8uaW1hZ2VUeXBlLGhlaWdodDp1LmhlYWRlckluZm8uaGVpZ2h0LHdpZHRoOnUuaGVhZGVySW5mby53aWR0aCxudW1WYWxpZFBpeGVsOnUuaGVhZGVySW5mby5udW1WYWxpZFBpeGVsLG1pY3JvQmxvY2tTaXplOnUuaGVhZGVySW5mby5taWNyb0Jsb2NrU2l6ZSxibG9iU2l6ZTp1LmhlYWRlckluZm8uYmxvYlNpemUsbWF4WkVycm9yOnUuaGVhZGVySW5mby5tYXhaRXJyb3IscGl4ZWxUeXBlOmkuZ2V0UGl4ZWxUeXBlKHUuaGVhZGVySW5mby5pbWFnZVR5cGUpLGVvZk9mZnNldDp1LmVvZk9mZnNldCxtYXNrOnUubWFzaz97bnVtQnl0ZXM6dS5tYXNrLm51bUJ5dGVzfTpudWxsLHBpeGVsczp7bnVtQmxvY2tzWDp1LnBpeGVscy5udW1CbG9ja3NYLG51bUJsb2Nrc1k6dS5waXhlbHMubnVtQmxvY2tzWSxtYXhWYWx1ZTp1LmhlYWRlckluZm8uek1heCxtaW5WYWx1ZTp1LmhlYWRlckluZm8uek1pbixub0RhdGFWYWx1ZTp1Lm5vRGF0YVZhbHVlfX19LGNvbnN0cnVjdENvbnN0YW50U3VyZmFjZTpmdW5jdGlvbih1KXt2YXIgYz11LmhlYWRlckluZm8uek1heCxsPXUuaGVhZGVySW5mby5udW1EaW1zLHA9dS5oZWFkZXJJbmZvLmhlaWdodCp1LmhlYWRlckluZm8ud2lkdGgsZD1wKmwsaD0wLF89MCxnPTAsYj11LnBpeGVscy5yZXN1bHRNYXNrO2lmKGIpaWYobD4xKWZvcihoPTA7aDxsO2grKylmb3IoZz1oKnAsXz0wO188cDtfKyspYltfXSYmKHUucGl4ZWxzLnJlc3VsdFBpeGVsc1tnK19dPWMpO2Vsc2UgZm9yKF89MDtfPHA7XysrKWJbX10mJih1LnBpeGVscy5yZXN1bHRQaXhlbHNbX109Yyk7ZWxzZSBpZih1LnBpeGVscy5yZXN1bHRQaXhlbHMuZmlsbCl1LnBpeGVscy5yZXN1bHRQaXhlbHMuZmlsbChjKTtlbHNlIGZvcihfPTA7XzxkO18rKyl1LnBpeGVscy5yZXN1bHRQaXhlbHNbX109Y30sZ2V0RGF0YVR5cGVBcnJheTpmdW5jdGlvbih1KXt2YXIgYztzd2l0Y2godSl7Y2FzZSAwOmM9SW50OEFycmF5O2JyZWFrO2Nhc2UgMTpjPVVpbnQ4QXJyYXk7YnJlYWs7Y2FzZSAyOmM9SW50MTZBcnJheTticmVhaztjYXNlIDM6Yz1VaW50MTZBcnJheTticmVhaztjYXNlIDQ6Yz1JbnQzMkFycmF5O2JyZWFrO2Nhc2UgNTpjPVVpbnQzMkFycmF5O2JyZWFrO2Nhc2UgNjpjPUZsb2F0MzJBcnJheTticmVhaztjYXNlIDc6Yz1GbG9hdDY0QXJyYXk7YnJlYWs7ZGVmYXVsdDpjPUZsb2F0MzJBcnJheX1yZXR1cm4gY30sZ2V0UGl4ZWxUeXBlOmZ1bmN0aW9uKHUpe3ZhciBjO3N3aXRjaCh1KXtjYXNlIDA6Yz0iUzgiO2JyZWFrO2Nhc2UgMTpjPSJVOCI7YnJlYWs7Y2FzZSAyOmM9IlMxNiI7YnJlYWs7Y2FzZSAzOmM9IlUxNiI7YnJlYWs7Y2FzZSA0OmM9IlMzMiI7YnJlYWs7Y2FzZSA1OmM9IlUzMiI7YnJlYWs7Y2FzZSA2OmM9IkYzMiI7YnJlYWs7Y2FzZSA3OmM9IkY2NCI7YnJlYWs7ZGVmYXVsdDpjPSJGMzIifXJldHVybiBjfSxpc1ZhbGlkUGl4ZWxWYWx1ZTpmdW5jdGlvbih1LGMpe2lmKGM9PW51bGwpcmV0dXJuITE7dmFyIGw7c3dpdGNoKHUpe2Nhc2UgMDpsPWM+PS0xMjgmJmM8PTEyNzticmVhaztjYXNlIDE6bD1jPj0wJiZjPD0yNTU7YnJlYWs7Y2FzZSAyOmw9Yz49LTMyNzY4JiZjPD0zMjc2NzticmVhaztjYXNlIDM6bD1jPj0wJiZjPD02NTUzNjticmVhaztjYXNlIDQ6bD1jPj0tMjE0NzQ4MzY0OCYmYzw9MjE0NzQ4MzY0NzticmVhaztjYXNlIDU6bD1jPj0wJiZjPD00Mjk0OTY3Mjk2O2JyZWFrO2Nhc2UgNjpsPWM+PS0zNDAyNzk5OTM4NzkwMTQ4NGUyMiYmYzw9MzQwMjc5OTkzODc5MDE0ODRlMjI7YnJlYWs7Y2FzZSA3Omw9Yz49NWUtMzI0JiZjPD0xNzk3NjkzMTM0ODYyMzE1N2UyOTI7YnJlYWs7ZGVmYXVsdDpsPSExfXJldHVybiBsfSxnZXREYXRhVHlwZVNpemU6ZnVuY3Rpb24odSl7dmFyIGM9MDtzd2l0Y2godSl7Y2FzZSAwOmNhc2UgMTpjPTE7YnJlYWs7Y2FzZSAyOmNhc2UgMzpjPTI7YnJlYWs7Y2FzZSA0OmNhc2UgNTpjYXNlIDY6Yz00O2JyZWFrO2Nhc2UgNzpjPTg7YnJlYWs7ZGVmYXVsdDpjPXV9cmV0dXJuIGN9LGdldERhdGFUeXBlVXNlZDpmdW5jdGlvbih1LGMpe3ZhciBsPXU7c3dpdGNoKHUpe2Nhc2UgMjpjYXNlIDQ6bD11LWM7YnJlYWs7Y2FzZSAzOmNhc2UgNTpsPXUtMipjO2JyZWFrO2Nhc2UgNjpjPT09MD9sPXU6Yz09PTE/bD0yOmw9MTticmVhaztjYXNlIDc6Yz09PTA/bD11Omw9dS0yKmMrMTticmVhaztkZWZhdWx0Omw9dTticmVha31yZXR1cm4gbH0sZ2V0T25lUGl4ZWw6ZnVuY3Rpb24odSxjLGwscCl7dmFyIGQ9MDtzd2l0Y2gobCl7Y2FzZSAwOmQ9cC5nZXRJbnQ4KGMpO2JyZWFrO2Nhc2UgMTpkPXAuZ2V0VWludDgoYyk7YnJlYWs7Y2FzZSAyOmQ9cC5nZXRJbnQxNihjLCEwKTticmVhaztjYXNlIDM6ZD1wLmdldFVpbnQxNihjLCEwKTticmVhaztjYXNlIDQ6ZD1wLmdldEludDMyKGMsITApO2JyZWFrO2Nhc2UgNTpkPXAuZ2V0VUludDMyKGMsITApO2JyZWFrO2Nhc2UgNjpkPXAuZ2V0RmxvYXQzMihjLCEwKTticmVhaztjYXNlIDc6ZD1wLmdldEZsb2F0NjQoYywhMCk7YnJlYWs7ZGVmYXVsdDp0aHJvdyJ0aGUgZGVjb2RlciBkb2VzIG5vdCB1bmRlcnN0YW5kIHRoaXMgcGl4ZWwgdHlwZSJ9cmV0dXJuIGR9fSxzPWZ1bmN0aW9uKHUsYyxsKXt0aGlzLnZhbD11LHRoaXMubGVmdD1jLHRoaXMucmlnaHQ9bH0sZj17ZGVjb2RlOmZ1bmN0aW9uKHUsYyl7Yz1jfHx7fTt2YXIgbD1jLm5vRGF0YVZhbHVlLHA9MCxkPXt9O2lmKGQucHRyPWMuaW5wdXRPZmZzZXR8fDAsZC5waXhlbHM9e30sISFpLnJlYWRIZWFkZXJJbmZvKHUsZCkpe3ZhciBoPWQuaGVhZGVySW5mbyxfPWguZmlsZVZlcnNpb24sZz1pLmdldERhdGFUeXBlQXJyYXkoaC5pbWFnZVR5cGUpO2kucmVhZE1hc2sodSxkKSxoLm51bVZhbGlkUGl4ZWwhPT1oLndpZHRoKmguaGVpZ2h0JiYhZC5waXhlbHMucmVzdWx0TWFzayYmKGQucGl4ZWxzLnJlc3VsdE1hc2s9Yy5tYXNrRGF0YSk7dmFyIGI9aC53aWR0aCpoLmhlaWdodDtpZihkLnBpeGVscy5yZXN1bHRQaXhlbHM9bmV3IGcoYipoLm51bURpbXMpLGQuY291bnRlcj17b25lc3dlZXA6MCx1bmNvbXByZXNzZWQ6MCxsdXQ6MCxiaXRzdHVmZmVyOjAsY29uc3RhbnQ6MCxjb25zdGFudG9mZnNldDowfSxoLm51bVZhbGlkUGl4ZWwhPT0wKWlmKGguek1heD09PWguek1pbilpLmNvbnN0cnVjdENvbnN0YW50U3VyZmFjZShkKTtlbHNlIGlmKF8+PTQmJmkuY2hlY2tNaW5NYXhSYW5nZXModSxkKSlpLmNvbnN0cnVjdENvbnN0YW50U3VyZmFjZShkKTtlbHNle3ZhciB3PW5ldyBEYXRhVmlldyh1LGQucHRyLDIpLE89dy5nZXRVaW50OCgwKTtpZihkLnB0cisrLE8paS5yZWFkRGF0YU9uZVN3ZWVwKHUsZCxnKTtlbHNlIGlmKF8+MSYmaC5pbWFnZVR5cGU8PTEmJk1hdGguYWJzKGgubWF4WkVycm9yLS41KTwxZS01KXt2YXIgRT13LmdldFVpbnQ4KDEpO2lmKGQucHRyKyssZC5lbmNvZGVNb2RlPUUsRT4yfHxfPDQmJkU+MSl0aHJvdyJJbnZhbGlkIEh1ZmZtYW4gZmxhZyAiK0U7RT9pLnJlYWRIdWZmbWFuKHUsZCxnKTppLnJlYWRUaWxlcyh1LGQsZyl9ZWxzZSBpLnJlYWRUaWxlcyh1LGQsZyl9ZC5lb2ZPZmZzZXQ9ZC5wdHI7dmFyIFQ7Yy5pbnB1dE9mZnNldD8oVD1kLmhlYWRlckluZm8uYmxvYlNpemUrYy5pbnB1dE9mZnNldC1kLnB0cixNYXRoLmFicyhUKT49MSYmKGQuZW9mT2Zmc2V0PWMuaW5wdXRPZmZzZXQrZC5oZWFkZXJJbmZvLmJsb2JTaXplKSk6KFQ9ZC5oZWFkZXJJbmZvLmJsb2JTaXplLWQucHRyLE1hdGguYWJzKFQpPj0xJiYoZC5lb2ZPZmZzZXQ9ZC5oZWFkZXJJbmZvLmJsb2JTaXplKSk7dmFyIHg9e3dpZHRoOmgud2lkdGgsaGVpZ2h0OmguaGVpZ2h0LHBpeGVsRGF0YTpkLnBpeGVscy5yZXN1bHRQaXhlbHMsbWluVmFsdWU6aC56TWluLG1heFZhbHVlOmguek1heCx2YWxpZFBpeGVsQ291bnQ6aC5udW1WYWxpZFBpeGVsLGRpbUNvdW50OmgubnVtRGltcyxkaW1TdGF0czp7bWluVmFsdWVzOmgubWluVmFsdWVzLG1heFZhbHVlczpoLm1heFZhbHVlc30sbWFza0RhdGE6ZC5waXhlbHMucmVzdWx0TWFza307aWYoZC5waXhlbHMucmVzdWx0TWFzayYmaS5pc1ZhbGlkUGl4ZWxWYWx1ZShoLmltYWdlVHlwZSxsKSl7dmFyIE09ZC5waXhlbHMucmVzdWx0TWFzaztmb3IocD0wO3A8YjtwKyspTVtwXXx8KHgucGl4ZWxEYXRhW3BdPWwpO3gubm9EYXRhVmFsdWU9bH1yZXR1cm4gZC5ub0RhdGFWYWx1ZT1sLGMucmV0dXJuRmlsZUluZm8mJih4LmZpbGVJbmZvPWkuZm9ybWF0RmlsZUluZm8oZCkpLHh9fSxnZXRCYW5kQ291bnQ6ZnVuY3Rpb24odSl7dmFyIGM9MCxsPTAscD17fTtmb3IocC5wdHI9MCxwLnBpeGVscz17fTtsPHUuYnl0ZUxlbmd0aC01ODspaS5yZWFkSGVhZGVySW5mbyh1LHApLGwrPXAuaGVhZGVySW5mby5ibG9iU2l6ZSxjKysscC5wdHI9bDtyZXR1cm4gY319O3JldHVybiBmfSgpLG49ZnVuY3Rpb24oKXt2YXIgcj1uZXcgQXJyYXlCdWZmZXIoNCksaT1uZXcgVWludDhBcnJheShyKSxzPW5ldyBVaW50MzJBcnJheShyKTtyZXR1cm4gc1swXT0xLGlbMF09PT0xfSgpLG89e2RlY29kZTpmdW5jdGlvbihyLGkpe2lmKCFuKXRocm93IkJpZyBlbmRpYW4gc3lzdGVtIGlzIG5vdCBzdXBwb3J0ZWQuIjtpPWl8fHt9O3ZhciBzPWkuaW5wdXRPZmZzZXR8fDAsZj1uZXcgVWludDhBcnJheShyLHMsMTApLHU9U3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLGYpLGMsbDtpZih1LnRyaW0oKT09PSJDbnRaSW1hZ2UiKWM9dCxsPTE7ZWxzZSBpZih1LnN1YnN0cmluZygwLDUpPT09IkxlcmMyIiljPWUsbD0yO2Vsc2UgdGhyb3ciVW5leHBlY3RlZCBmaWxlIGlkZW50aWZpZXIgc3RyaW5nOiAiK3U7Zm9yKHZhciBwPTAsZD1yLmJ5dGVMZW5ndGgtMTAsaCxfPVtdLGcsYix3PXt3aWR0aDowLGhlaWdodDowLHBpeGVsczpbXSxwaXhlbFR5cGU6aS5waXhlbFR5cGUsbWFzazpudWxsLHN0YXRpc3RpY3M6W119O3M8ZDspe3ZhciBPPWMuZGVjb2RlKHIse2lucHV0T2Zmc2V0OnMsZW5jb2RlZE1hc2tEYXRhOmgsbWFza0RhdGE6YixyZXR1cm5NYXNrOnA9PT0wLHJldHVybkVuY29kZWRNYXNrOnA9PT0wLHJldHVybkZpbGVJbmZvOiEwLHBpeGVsVHlwZTppLnBpeGVsVHlwZXx8bnVsbCxub0RhdGFWYWx1ZTppLm5vRGF0YVZhbHVlfHxudWxsfSk7cz1PLmZpbGVJbmZvLmVvZk9mZnNldCxwPT09MCYmKGg9Ty5lbmNvZGVkTWFza0RhdGEsYj1PLm1hc2tEYXRhLHcud2lkdGg9Ty53aWR0aCx3LmhlaWdodD1PLmhlaWdodCx3LmRpbUNvdW50PU8uZGltQ291bnR8fDEsdy5waXhlbFR5cGU9Ty5waXhlbFR5cGV8fE8uZmlsZUluZm8ucGl4ZWxUeXBlLHcubWFzaz1PLm1hc2tEYXRhKSxsPjEmJk8uZmlsZUluZm8ubWFzayYmTy5maWxlSW5mby5tYXNrLm51bUJ5dGVzPjAmJl8ucHVzaChPLm1hc2tEYXRhKSxwKyssdy5waXhlbHMucHVzaChPLnBpeGVsRGF0YSksdy5zdGF0aXN0aWNzLnB1c2goe21pblZhbHVlOk8ubWluVmFsdWUsbWF4VmFsdWU6Ty5tYXhWYWx1ZSxub0RhdGFWYWx1ZTpPLm5vRGF0YVZhbHVlLGRpbVN0YXRzOk8uZGltU3RhdHN9KX12YXIgRSxULHg7aWYobD4xJiZfLmxlbmd0aD4xKXtmb3IoeD13LndpZHRoKncuaGVpZ2h0LHcuYmFuZE1hc2tzPV8sYj1uZXcgVWludDhBcnJheSh4KSxiLnNldChfWzBdKSxFPTE7RTxfLmxlbmd0aDtFKyspZm9yKGc9X1tFXSxUPTA7VDx4O1QrKyliW1RdPWJbVF0mZ1tUXTt3Lm1hc2tEYXRhPWJ9cmV0dXJuIHd9fTt0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kP2RlZmluZShbXSxmdW5jdGlvbigpe3JldHVybiBvfSk6dHlwZW9mIEpkPCJ1IiYmSmQuZXhwb3J0cz9KZC5leHBvcnRzPW86dGhpcy5MZXJjPW99KSgpfSk7dmFyIG1nPXt9O2xlKG1nLHtkZWZhdWx0OigpPT52VX0pO2Z1bmN0aW9uIElVKHQsZSl7aWYodC5lbmNvZGluZz09PWkyLkxFUkMpe2xldCByO3RyeXtyPXUyLmRlZmF1bHQuZGVjb2RlKHQuaGVpZ2h0bWFwKX1jYXRjaChzKXt0aHJvdyBuZXcgQWUocyl9aWYoci5zdGF0aXN0aWNzWzBdLm1pblZhbHVlPT09TnVtYmVyLk1BWF9WQUxVRSl0aHJvdyBuZXcgQWUoIkludmFsaWQgdGlsZSBkYXRhIik7dC5oZWlnaHRtYXA9ci5waXhlbHNbMF0sdC53aWR0aD1yLndpZHRoLHQuaGVpZ2h0PXIuaGVpZ2h0fXQuZWxsaXBzb2lkPVkuY2xvbmUodC5lbGxpcHNvaWQpLHQucmVjdGFuZ2xlPU50LmNsb25lKHQucmVjdGFuZ2xlKTtsZXQgbj1jMi5jb21wdXRlVmVydGljZXModCksbz1uLnZlcnRpY2VzO3JldHVybiBlLnB1c2goby5idWZmZXIpLHt2ZXJ0aWNlczpvLmJ1ZmZlcixudW1iZXJPZkF0dHJpYnV0ZXM6bi5lbmNvZGluZy5zdHJpZGUsbWluaW11bUhlaWdodDpuLm1pbmltdW1IZWlnaHQsbWF4aW11bUhlaWdodDpuLm1heGltdW1IZWlnaHQsZ3JpZFdpZHRoOnQud2lkdGgsZ3JpZEhlaWdodDp0LmhlaWdodCxib3VuZGluZ1NwaGVyZTNEOm4uYm91bmRpbmdTcGhlcmUzRCxvcmllbnRlZEJvdW5kaW5nQm94Om4ub3JpZW50ZWRCb3VuZGluZ0JveCxvY2NsdWRlZVBvaW50SW5TY2FsZWRTcGFjZTpuLm9jY2x1ZGVlUG9pbnRJblNjYWxlZFNwYWNlLGVuY29kaW5nOm4uZW5jb2Rpbmcsd2VzdEluZGljZXNTb3V0aFRvTm9ydGg6bi53ZXN0SW5kaWNlc1NvdXRoVG9Ob3J0aCxzb3V0aEluZGljZXNFYXN0VG9XZXN0Om4uc291dGhJbmRpY2VzRWFzdFRvV2VzdCxlYXN0SW5kaWNlc05vcnRoVG9Tb3V0aDpuLmVhc3RJbmRpY2VzTm9ydGhUb1NvdXRoLG5vcnRoSW5kaWNlc1dlc3RUb0Vhc3Q6bi5ub3J0aEluZGljZXNXZXN0VG9FYXN0fX12YXIgdTIsdlUsaGc9JCgoKT0+eyR0KCk7czIoKTthMigpO1RuKCk7dGkoKTt1Mj1tcihmMigpLDEpO1puKCk7dlU9VWUoSVUpfSk7ZnVuY3Rpb24gVm8oKXtELnRocm93SW5zdGFudGlhdGlvbkVycm9yKCl9ZnVuY3Rpb24gbTIodCxlKXtsZXQgbj1uZXcgQXJyYXkoZSksbz1uZXcgQXJyYXkodCkscj1uZXcgQXJyYXkoZSksaT1uZXcgQXJyYXkodCkscztmb3Iocz0wO3M8dDsrK3MpaVtzXT1zLG9bc109dCplLTEtcztmb3Iocz0wO3M8ZTsrK3MpcltzXT0ocysxKSp0LTEsbltzXT0oZS1zLTEpKnQ7cmV0dXJue3dlc3RJbmRpY2VzU291dGhUb05vcnRoOm4sc291dGhJbmRpY2VzRWFzdFRvV2VzdDpvLGVhc3RJbmRpY2VzTm9ydGhUb1NvdXRoOnIsbm9ydGhJbmRpY2VzV2VzdFRvRWFzdDppfX1mdW5jdGlvbiBoMih0LGUsbixvKXtsZXQgcj0wO2ZvcihsZXQgaT0wO2k8ZS0xOysraSl7Zm9yKGxldCBzPTA7czx0LTE7KytzKXtsZXQgZj1yLHU9Zit0LGM9dSsxLGw9ZisxO25bbysrXT1mLG5bbysrXT11LG5bbysrXT1sLG5bbysrXT1sLG5bbysrXT11LG5bbysrXT1jLCsrcn0rK3J9fWZ1bmN0aW9uIHRtKHQsZSxuLG8pe2xldCByPXRbMF0saT10Lmxlbmd0aDtmb3IobGV0IHM9MTtzPGk7KytzKXtsZXQgZj10W3NdO25bbysrXT1yLG5bbysrXT1mLG5bbysrXT1lLG5bbysrXT1lLG5bbysrXT1mLG5bbysrXT1lKzEscj1mLCsrZX1yZXR1cm4gb312YXIgbDIscDIsZDIsXzIseTI9JCgoKT0+e2Z0KCk7SHQoKTtaZSgpO0t0KCk7T2JqZWN0LmRlZmluZVByb3BlcnRpZXMoVm8ucHJvdG90eXBlLHtlcnJvckV2ZW50OntnZXQ6RC50aHJvd0luc3RhbnRpYXRpb25FcnJvcn0sY3JlZGl0OntnZXQ6RC50aHJvd0luc3RhbnRpYXRpb25FcnJvcn0sdGlsaW5nU2NoZW1lOntnZXQ6RC50aHJvd0luc3RhbnRpYXRpb25FcnJvcn0saGFzV2F0ZXJNYXNrOntnZXQ6RC50aHJvd0luc3RhbnRpYXRpb25FcnJvcn0saGFzVmVydGV4Tm9ybWFsczp7Z2V0OkQudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9LGF2YWlsYWJpbGl0eTp7Z2V0OkQudGhyb3dJbnN0YW50aWF0aW9uRXJyb3J9fSk7bDI9W107Vm8uZ2V0UmVndWxhckdyaWRJbmRpY2VzPWZ1bmN0aW9uKHQsZSl7aWYodCplPj1QLkZPVVJfR0lHQUJZVEVTKXRocm93IG5ldyBEKCJUaGUgdG90YWwgbnVtYmVyIG9mIHZlcnRpY2VzICh3aWR0aCAqIGhlaWdodCkgbXVzdCBiZSBsZXNzIHRoYW4gNCwyOTQsOTY3LDI5Ni4iKTtsZXQgbj1sMlt0XTttKG4pfHwobDJbdF09bj1bXSk7bGV0IG89bltlXTtyZXR1cm4gbShvKXx8KHQqZTxQLlNJWFRZX0ZPVVJfS0lMT0JZVEVTP289bltlXT1uZXcgVWludDE2QXJyYXkoKHQtMSkqKGUtMSkqNik6bz1uW2VdPW5ldyBVaW50MzJBcnJheSgodC0xKSooZS0xKSo2KSxoMih0LGUsbywwKSksb307cDI9W107Vm8uZ2V0UmVndWxhckdyaWRJbmRpY2VzQW5kRWRnZUluZGljZXM9ZnVuY3Rpb24odCxlKXtpZih0KmU+PVAuRk9VUl9HSUdBQllURVMpdGhyb3cgbmV3IEQoIlRoZSB0b3RhbCBudW1iZXIgb2YgdmVydGljZXMgKHdpZHRoICogaGVpZ2h0KSBtdXN0IGJlIGxlc3MgdGhhbiA0LDI5NCw5NjcsMjk2LiIpO2xldCBuPXAyW3RdO20obil8fChwMlt0XT1uPVtdKTtsZXQgbz1uW2VdO2lmKCFtKG8pKXtsZXQgcj1Wby5nZXRSZWd1bGFyR3JpZEluZGljZXModCxlKSxpPW0yKHQsZSkscz1pLndlc3RJbmRpY2VzU291dGhUb05vcnRoLGY9aS5zb3V0aEluZGljZXNFYXN0VG9XZXN0LHU9aS5lYXN0SW5kaWNlc05vcnRoVG9Tb3V0aCxjPWkubm9ydGhJbmRpY2VzV2VzdFRvRWFzdDtvPW5bZV09e2luZGljZXM6cix3ZXN0SW5kaWNlc1NvdXRoVG9Ob3J0aDpzLHNvdXRoSW5kaWNlc0Vhc3RUb1dlc3Q6ZixlYXN0SW5kaWNlc05vcnRoVG9Tb3V0aDp1LG5vcnRoSW5kaWNlc1dlc3RUb0Vhc3Q6Y319cmV0dXJuIG99O2QyPVtdO1ZvLmdldFJlZ3VsYXJHcmlkQW5kU2tpcnRJbmRpY2VzQW5kRWRnZUluZGljZXM9ZnVuY3Rpb24odCxlKXtpZih0KmU+PVAuRk9VUl9HSUdBQllURVMpdGhyb3cgbmV3IEQoIlRoZSB0b3RhbCBudW1iZXIgb2YgdmVydGljZXMgKHdpZHRoICogaGVpZ2h0KSBtdXN0IGJlIGxlc3MgdGhhbiA0LDI5NCw5NjcsMjk2LiIpO2xldCBuPWQyW3RdO20obil8fChkMlt0XT1uPVtdKTtsZXQgbz1uW2VdO2lmKCFtKG8pKXtsZXQgcj10KmUsaT0odC0xKSooZS0xKSo2LHM9dCoyK2UqMixmPU1hdGgubWF4KDAscy00KSo2LHU9citzLGM9aStmLGw9bTIodCxlKSxwPWwud2VzdEluZGljZXNTb3V0aFRvTm9ydGgsZD1sLnNvdXRoSW5kaWNlc0Vhc3RUb1dlc3QsaD1sLmVhc3RJbmRpY2VzTm9ydGhUb1NvdXRoLF89bC5ub3J0aEluZGljZXNXZXN0VG9FYXN0LGc9THQuY3JlYXRlVHlwZWRBcnJheSh1LGMpO2gyKHQsZSxnLDApLFZvLmFkZFNraXJ0SW5kaWNlcyhwLGQsaCxfLHIsZyxpKSxvPW5bZV09e2luZGljZXM6Zyx3ZXN0SW5kaWNlc1NvdXRoVG9Ob3J0aDpwLHNvdXRoSW5kaWNlc0Vhc3RUb1dlc3Q6ZCxlYXN0SW5kaWNlc05vcnRoVG9Tb3V0aDpoLG5vcnRoSW5kaWNlc1dlc3RUb0Vhc3Q6XyxpbmRleENvdW50V2l0aG91dFNraXJ0czppfX1yZXR1cm4gb307Vm8uYWRkU2tpcnRJbmRpY2VzPWZ1bmN0aW9uKHQsZSxuLG8scixpLHMpe2xldCBmPXI7cz10bSh0LGYsaSxzKSxmKz10Lmxlbmd0aCxzPXRtKGUsZixpLHMpLGYrPWUubGVuZ3RoLHM9dG0obixmLGkscyksZis9bi5sZW5ndGgsdG0obyxmLGkscyl9O1ZvLmhlaWdodG1hcFRlcnJhaW5RdWFsaXR5PS4yNTtWby5nZXRFc3RpbWF0ZWRMZXZlbFplcm9HZW9tZXRyaWNFcnJvckZvckFIZWlnaHRtYXA9ZnVuY3Rpb24odCxlLG4pe3JldHVybiB0Lm1heGltdW1SYWRpdXMqMipNYXRoLlBJKlZvLmhlaWdodG1hcFRlcnJhaW5RdWFsaXR5LyhlKm4pfTtWby5wcm90b3R5cGUucmVxdWVzdFRpbGVHZW9tZXRyeT1ELnRocm93SW5zdGFudGlhdGlvbkVycm9yO1ZvLnByb3RvdHlwZS5nZXRMZXZlbE1heGltdW1HZW9tZXRyaWNFcnJvcj1ELnRocm93SW5zdGFudGlhdGlvbkVycm9yO1ZvLnByb3RvdHlwZS5nZXRUaWxlRGF0YUF2YWlsYWJsZT1ELnRocm93SW5zdGFudGlhdGlvbkVycm9yO1ZvLnByb3RvdHlwZS5sb2FkVGlsZURhdGFBdmFpbGFiaWxpdHk9RC50aHJvd0luc3RhbnRpYXRpb25FcnJvcjtfMj1Wb30pO3ZhciB5Zz17fTtsZSh5Zyx7ZGVmYXVsdDooKT0+QlV9KTtmdW5jdGlvbiBEVSh0LGUpe2xldCBuPXQucXVhbnRpemVkVmVydGljZXMsbz1uLmxlbmd0aC8zLHI9dC5vY3RFbmNvZGVkTm9ybWFscyxpPXQud2VzdEluZGljZXMubGVuZ3RoK3QuZWFzdEluZGljZXMubGVuZ3RoK3Quc291dGhJbmRpY2VzLmxlbmd0aCt0Lm5vcnRoSW5kaWNlcy5sZW5ndGgscz10LmluY2x1ZGVXZWJNZXJjYXRvclQsZj10LmV4YWdnZXJhdGlvbix1PXQuZXhhZ2dlcmF0aW9uUmVsYXRpdmVIZWlnaHQsbD1mIT09MSxwPU50LmNsb25lKHQucmVjdGFuZ2xlKSxkPXAud2VzdCxoPXAuc291dGgsXz1wLmVhc3QsZz1wLm5vcnRoLGI9WS5jbG9uZSh0LmVsbGlwc29pZCksdz10Lm1pbmltdW1IZWlnaHQsTz10Lm1heGltdW1IZWlnaHQsRT10LnJlbGF0aXZlVG9DZW50ZXIsVD0kby5lYXN0Tm9ydGhVcFRvRml4ZWRGcmFtZShFLGIpLHg9c3QuaW52ZXJzZVRyYW5zZm9ybWF0aW9uKFQsbmV3IHN0KSxNLE47cyYmKE09cm8uZ2VvZGV0aWNMYXRpdHVkZVRvTWVyY2F0b3JBbmdsZShoKSxOPTEvKHJvLmdlb2RldGljTGF0aXR1ZGVUb01lcmNhdG9yQW5nbGUoZyktTSkpO2xldCBGPW4uc3ViYXJyYXkoMCxvKSxJPW4uc3ViYXJyYXkobywyKm8pLHY9bi5zdWJhcnJheShvKjIsMypvKSxCPW0ociksQT1uZXcgQXJyYXkobyksUz1uZXcgQXJyYXkobyksQz1uZXcgQXJyYXkobyksTD1zP25ldyBBcnJheShvKTpbXSx6PWw/bmV3IEFycmF5KG8pOltdLGo9RlU7ai54PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxqLnk9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGouej1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7bGV0IGs9TFU7ay54PU51bWJlci5ORUdBVElWRV9JTkZJTklUWSxrLnk9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLGsuej1OdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7bGV0IHE9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFc9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLFI9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLG50PU51bWJlci5ORUdBVElWRV9JTkZJTklUWTtmb3IobGV0IFl0PTA7WXQ8bzsrK1l0KXtsZXQgemU9RltZdF0sZG49SVtZdF0sc249emUvX2csbW49ZG4vX2csbG89UC5sZXJwKHcsTyx2W1l0XS9fZyk7Sm4ubG9uZ2l0dWRlPVAubGVycChkLF8sc24pLEpuLmxhdGl0dWRlPVAubGVycChoLGcsbW4pLEpuLmhlaWdodD1sbyxxPU1hdGgubWluKEpuLmxvbmdpdHVkZSxxKSxXPU1hdGgubWF4KEpuLmxvbmdpdHVkZSxXKSxSPU1hdGgubWluKEpuLmxhdGl0dWRlLFIpLG50PU1hdGgubWF4KEpuLmxhdGl0dWRlLG50KTtsZXQgcW49Yi5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihKbik7QVtZdF09bmV3IEooc24sbW4pLFNbWXRdPWxvLENbWXRdPXFuLHMmJihMW1l0XT0ocm8uZ2VvZGV0aWNMYXRpdHVkZVRvTWVyY2F0b3JBbmdsZShKbi5sYXRpdHVkZSktTSkqTiksbCYmKHpbWXRdPWIuZ2VvZGV0aWNTdXJmYWNlTm9ybWFsKHFuKSksc3QubXVsdGlwbHlCeVBvaW50KHgscW4sdXUpLGEubWluaW11bUJ5Q29tcG9uZW50KHV1LGosaiksYS5tYXhpbXVtQnlDb21wb25lbnQodXUsayxrKX1sZXQgYXQ9b20odC53ZXN0SW5kaWNlcyxmdW5jdGlvbihZdCx6ZSl7cmV0dXJuIEFbWXRdLnktQVt6ZV0ueX0pLGx0PW9tKHQuZWFzdEluZGljZXMsZnVuY3Rpb24oWXQsemUpe3JldHVybiBBW3plXS55LUFbWXRdLnl9KSxfdD1vbSh0LnNvdXRoSW5kaWNlcyxmdW5jdGlvbihZdCx6ZSl7cmV0dXJuIEFbemVdLngtQVtZdF0ueH0pLG90PW9tKHQubm9ydGhJbmRpY2VzLGZ1bmN0aW9uKFl0LHplKXtyZXR1cm4gQVtZdF0ueC1BW3plXS54fSksUHQ7dzwwJiYoUHQ9bmV3IFBzKGIpLmNvbXB1dGVIb3Jpem9uQ3VsbGluZ1BvaW50UG9zc2libHlVbmRlckVsbGlwc29pZChFLEMsdykpO2xldCBndD13O2d0PU1hdGgubWluKGd0LGVtKHQud2VzdEluZGljZXMsdC53ZXN0U2tpcnRIZWlnaHQsUyxBLHAsYix4LGosaykpLGd0PU1hdGgubWluKGd0LGVtKHQuc291dGhJbmRpY2VzLHQuc291dGhTa2lydEhlaWdodCxTLEEscCxiLHgsaixrKSksZ3Q9TWF0aC5taW4oZ3QsZW0odC5lYXN0SW5kaWNlcyx0LmVhc3RTa2lydEhlaWdodCxTLEEscCxiLHgsaixrKSksZ3Q9TWF0aC5taW4oZ3QsZW0odC5ub3J0aEluZGljZXMsdC5ub3J0aFNraXJ0SGVpZ2h0LFMsQSxwLGIseCxqLGspKTtsZXQgUnQ9bmV3IERpKGosayxFKSxkdD1uZXcgTXMoRSxSdCxndCxPLFQsQixzLGwsZix1KSxydD1kdC5zdHJpZGUseHQ9bypydCtpKnJ0LEd0PW5ldyBGbG9hdDMyQXJyYXkoeHQpLHBlPTA7Zm9yKGxldCBZdD0wO1l0PG87KytZdCl7aWYoQil7bGV0IHplPVl0KjI7a2EueD1yW3plXSxrYS55PXJbemUrMV19cGU9ZHQuZW5jb2RlKEd0LHBlLENbWXRdLEFbWXRdLFNbWXRdLGthLExbWXRdLHpbWXRdKX1sZXQgcmU9TWF0aC5tYXgoMCwoaS00KSoyKSxkZT10LmluZGljZXMubGVuZ3RoK3JlKjMsZmU9THQuY3JlYXRlVHlwZWRBcnJheShvK2ksZGUpO2ZlLnNldCh0LmluZGljZXMsMCk7bGV0IFp0PTFlLTQsUXQ9KFctcSkqWnQsTmU9KG50LVIpKlp0LGdlPS1RdCxFZT0wLHVuPVF0LFZlPTAsYmU9MCxsbj1OZSxwbj0wLEVuPS1OZSxvZT1vKnJ0O3JldHVybiBubShHdCxvZSxhdCxkdCxTLEEscixiLHAsdC53ZXN0U2tpcnRIZWlnaHQsTSxOLGdlLEVlKSxvZSs9dC53ZXN0SW5kaWNlcy5sZW5ndGgqcnQsbm0oR3Qsb2UsX3QsZHQsUyxBLHIsYixwLHQuc291dGhTa2lydEhlaWdodCxNLE4scG4sRW4pLG9lKz10LnNvdXRoSW5kaWNlcy5sZW5ndGgqcnQsbm0oR3Qsb2UsbHQsZHQsUyxBLHIsYixwLHQuZWFzdFNraXJ0SGVpZ2h0LE0sTix1bixWZSksb2UrPXQuZWFzdEluZGljZXMubGVuZ3RoKnJ0LG5tKEd0LG9lLG90LGR0LFMsQSxyLGIscCx0Lm5vcnRoU2tpcnRIZWlnaHQsTSxOLGJlLGxuKSxfMi5hZGRTa2lydEluZGljZXMoYXQsX3QsbHQsb3QsbyxmZSx0LmluZGljZXMubGVuZ3RoKSxlLnB1c2goR3QuYnVmZmVyLGZlLmJ1ZmZlcikse3ZlcnRpY2VzOkd0LmJ1ZmZlcixpbmRpY2VzOmZlLmJ1ZmZlcix3ZXN0SW5kaWNlc1NvdXRoVG9Ob3J0aDphdCxzb3V0aEluZGljZXNFYXN0VG9XZXN0Ol90LGVhc3RJbmRpY2VzTm9ydGhUb1NvdXRoOmx0LG5vcnRoSW5kaWNlc1dlc3RUb0Vhc3Q6b3QsdmVydGV4U3RyaWRlOnJ0LGNlbnRlcjpFLG1pbmltdW1IZWlnaHQ6dyxtYXhpbXVtSGVpZ2h0Ok8sb2NjbHVkZWVQb2ludEluU2NhbGVkU3BhY2U6UHQsZW5jb2Rpbmc6ZHQsaW5kZXhDb3VudFdpdGhvdXRTa2lydHM6dC5pbmRpY2VzLmxlbmd0aH19ZnVuY3Rpb24gZW0odCxlLG4sbyxyLGkscyxmLHUpe2xldCBjPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxsPXIubm9ydGgscD1yLnNvdXRoLGQ9ci5lYXN0LGg9ci53ZXN0O2Q8aCYmKGQrPVAuVFdPX1BJKTtsZXQgXz10Lmxlbmd0aDtmb3IobGV0IGc9MDtnPF87KytnKXtsZXQgYj10W2ddLHc9bltiXSxPPW9bYl07Sm4ubG9uZ2l0dWRlPVAubGVycChoLGQsTy54KSxKbi5sYXRpdHVkZT1QLmxlcnAocCxsLE8ueSksSm4uaGVpZ2h0PXctZTtsZXQgRT1pLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKEpuLHV1KTtzdC5tdWx0aXBseUJ5UG9pbnQocyxFLEUpLGEubWluaW11bUJ5Q29tcG9uZW50KEUsZixmKSxhLm1heGltdW1CeUNvbXBvbmVudChFLHUsdSksYz1NYXRoLm1pbihjLEpuLmhlaWdodCl9cmV0dXJuIGN9ZnVuY3Rpb24gbm0odCxlLG4sbyxyLGkscyxmLHUsYyxsLHAsZCxoKXtsZXQgXz1tKHMpLGc9dS5ub3J0aCxiPXUuc291dGgsdz11LmVhc3QsTz11Lndlc3Q7dzxPJiYodys9UC5UV09fUEkpO2xldCBFPW4ubGVuZ3RoO2ZvcihsZXQgVD0wO1Q8RTsrK1Qpe2xldCB4PW5bVF0sTT1yW3hdLE49aVt4XTtKbi5sb25naXR1ZGU9UC5sZXJwKE8sdyxOLngpK2QsSm4ubGF0aXR1ZGU9UC5sZXJwKGIsZyxOLnkpK2gsSm4uaGVpZ2h0PU0tYztsZXQgRj1mLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKEpuLHV1KTtpZihfKXtsZXQgQj14KjI7a2EueD1zW0JdLGthLnk9c1tCKzFdfWxldCBJO28uaGFzV2ViTWVyY2F0b3JUJiYoST0ocm8uZ2VvZGV0aWNMYXRpdHVkZVRvTWVyY2F0b3JBbmdsZShKbi5sYXRpdHVkZSktbCkqcCk7bGV0IHY7by5oYXNHZW9kZXRpY1N1cmZhY2VOb3JtYWxzJiYodj1mLmdlb2RldGljU3VyZmFjZU5vcm1hbChGKSksZT1vLmVuY29kZSh0LGUsRixOLEpuLmhlaWdodCxrYSxJLHYpfX1mdW5jdGlvbiBvbSh0LGUpe2xldCBuO3JldHVybiB0eXBlb2YgdC5zbGljZT09ImZ1bmN0aW9uIiYmKG49dC5zbGljZSgpLHR5cGVvZiBuLnNvcnQhPSJmdW5jdGlvbiImJihuPXZvaWQgMCkpLG0obil8fChuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHQpKSxuLnNvcnQoZSksbn12YXIgX2csdXUsRlUsTFUsSm4sa2EsQlUsZ2c9JCgoKT0+e1BmKCk7a2UoKTtEdCgpO0llKCk7ZnQoKTskdCgpO2N1KCk7WmUoKTtLdCgpO2tuKCk7VG4oKTthdSgpO3kyKCk7YXMoKTtzYygpO1puKCk7X2c9MzI3NjcsdXU9bmV3IGEsRlU9bmV3IGEsTFU9bmV3IGEsSm49bmV3IGN0LGthPW5ldyBKO0JVPVVlKERVKX0pO2Z1bmN0aW9uIFVVKHQsZSl7cmV0dXJuIFAuZXF1YWxzRXBzaWxvbih0LmxhdGl0dWRlLGUubGF0aXR1ZGUsUC5FUFNJTE9OMTApJiZQLmVxdWFsc0Vwc2lsb24odC5sb25naXR1ZGUsZS5sb25naXR1ZGUsUC5FUFNJTE9OMTApfWZ1bmN0aW9uIFZVKHQsZSxuLG8pe2U9Q24oZSxhLmVxdWFsc0Vwc2lsb24pO2xldCByPWUubGVuZ3RoO2lmKHI8MilyZXR1cm47bGV0IGk9bShvKSxzPW0obiksZj1uZXcgQXJyYXkociksdT1uZXcgQXJyYXkociksYz1uZXcgQXJyYXkociksbD1lWzBdO2ZbMF09bDtsZXQgcD10LmNhcnRlc2lhblRvQ2FydG9ncmFwaGljKGwsa1UpO3MmJihwLmhlaWdodD1uWzBdKSx1WzBdPXAuaGVpZ2h0LGk/Y1swXT1vWzBdOmNbMF09MDtsZXQgZD11WzBdLGg9Y1swXSxfPWQ9PT1oLGc9MTtmb3IobGV0IGI9MTtiPHI7KytiKXtsZXQgdz1lW2JdLE89dC5jYXJ0ZXNpYW5Ub0NhcnRvZ3JhcGhpYyh3LEdVKTtzJiYoTy5oZWlnaHQ9bltiXSksXz1fJiZPLmhlaWdodD09PTAsVVUocCxPKT9wLmhlaWdodDxPLmhlaWdodCYmKHVbZy0xXT1PLmhlaWdodCk6KGZbZ109dyx1W2ddPU8uaGVpZ2h0LGk/Y1tnXT1vW2JdOmNbZ109MCxfPV8mJnVbZ109PT1jW2ddLGN0LmNsb25lKE8scCksKytnKX1pZighKF98fGc8MikpcmV0dXJuIGYubGVuZ3RoPWcsdS5sZW5ndGg9ZyxjLmxlbmd0aD1nLHtwb3NpdGlvbnM6Zix0b3BIZWlnaHRzOnUsYm90dG9tSGVpZ2h0czpjfX12YXIgZzIsa1UsR1UselUsalUsSFUscm0sQWc9JCgoKT0+e0hyKCk7RHQoKTtJZSgpO2Z0KCk7S3QoKTtnYSgpO2cyPXt9O2tVPW5ldyBjdCxHVT1uZXcgY3Q7elU9bmV3IEFycmF5KDIpLGpVPW5ldyBBcnJheSgyKSxIVT17cG9zaXRpb25zOnZvaWQgMCxoZWlnaHQ6dm9pZCAwLGdyYW51bGFyaXR5OnZvaWQgMCxlbGxpcHNvaWQ6dm9pZCAwfTtnMi5jb21wdXRlUG9zaXRpb25zPWZ1bmN0aW9uKHQsZSxuLG8scixpKXtsZXQgcz1WVSh0LGUsbixvKTtpZighbShzKSlyZXR1cm47ZT1zLnBvc2l0aW9ucyxuPXMudG9wSGVpZ2h0cyxvPXMuYm90dG9tSGVpZ2h0cztsZXQgZj1lLmxlbmd0aCx1PWYtMixjLGwscD1QLmNob3JkTGVuZ3RoKHIsdC5tYXhpbXVtUmFkaXVzKSxkPUhVO2lmKGQubWluRGlzdGFuY2U9cCxkLmVsbGlwc29pZD10LGkpe2xldCBoPTAsXztmb3IoXz0wO188Zi0xO18rKyloKz1Bbi5udW1iZXJPZlBvaW50cyhlW19dLGVbXysxXSxwKSsxO2M9bmV3IEZsb2F0NjRBcnJheShoKjMpLGw9bmV3IEZsb2F0NjRBcnJheShoKjMpO2xldCBnPXpVLGI9alU7ZC5wb3NpdGlvbnM9ZyxkLmhlaWdodD1iO2xldCB3PTA7Zm9yKF89MDtfPGYtMTtfKyspe2dbMF09ZVtfXSxnWzFdPWVbXysxXSxiWzBdPW5bX10sYlsxXT1uW18rMV07bGV0IE89QW4uZ2VuZXJhdGVBcmMoZCk7Yy5zZXQoTyx3KSxiWzBdPW9bX10sYlsxXT1vW18rMV0sbC5zZXQoQW4uZ2VuZXJhdGVBcmMoZCksdyksdys9Ty5sZW5ndGh9fWVsc2UgZC5wb3NpdGlvbnM9ZSxkLmhlaWdodD1uLGM9bmV3IEZsb2F0NjRBcnJheShBbi5nZW5lcmF0ZUFyYyhkKSksZC5oZWlnaHQ9byxsPW5ldyBGbG9hdDY0QXJyYXkoQW4uZ2VuZXJhdGVBcmMoZCkpO3JldHVybntib3R0b21Qb3NpdGlvbnM6bCx0b3BQb3NpdGlvbnM6YyxudW1Db3JuZXJzOnV9fTtybT1nMn0pO2Z1bmN0aW9uIFJjKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNUO2xldCBlPXQucG9zaXRpb25zLG49dC5tYXhpbXVtSGVpZ2h0cyxvPXQubWluaW11bUhlaWdodHM7aWYoIW0oZSkpdGhyb3cgbmV3IEQoIm9wdGlvbnMucG9zaXRpb25zIGlzIHJlcXVpcmVkLiIpO2lmKG0obikmJm4ubGVuZ3RoIT09ZS5sZW5ndGgpdGhyb3cgbmV3IEQoIm9wdGlvbnMucG9zaXRpb25zIGFuZCBvcHRpb25zLm1heGltdW1IZWlnaHRzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGguIik7aWYobShvKSYmby5sZW5ndGghPT1lLmxlbmd0aCl0aHJvdyBuZXcgRCgib3B0aW9ucy5wb3NpdGlvbnMgYW5kIG9wdGlvbnMubWluaW11bUhlaWdodHMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4iKTtsZXQgcj10LnZlcnRleEZvcm1hdD8/cHQuREVGQVVMVCxpPXQuZ3JhbnVsYXJpdHk/P1AuUkFESUFOU19QRVJfREVHUkVFLHM9dC5lbGxpcHNvaWQ/P1kuZGVmYXVsdDt0aGlzLl9wb3NpdGlvbnM9ZSx0aGlzLl9taW5pbXVtSGVpZ2h0cz1vLHRoaXMuX21heGltdW1IZWlnaHRzPW4sdGhpcy5fdmVydGV4Rm9ybWF0PXB0LmNsb25lKHIpLHRoaXMuX2dyYW51bGFyaXR5PWksdGhpcy5fZWxsaXBzb2lkPVkuY2xvbmUocyksdGhpcy5fd29ya2VyTmFtZT0iY3JlYXRlV2FsbEdlb21ldHJ5IjtsZXQgZj0xK2UubGVuZ3RoKmEucGFja2VkTGVuZ3RoKzI7bShvKSYmKGYrPW8ubGVuZ3RoKSxtKG4pJiYoZis9bi5sZW5ndGgpLHRoaXMucGFja2VkTGVuZ3RoPWYrWS5wYWNrZWRMZW5ndGgrcHQucGFja2VkTGVuZ3RoKzF9dmFyIGJnLGltLHFVLEEyLEtVLFdVLFhVLGIyLHcyLGx1LHdnLFQyPSQoKCk9Pnt2ZSgpO0R0KCk7RGUoKTt5ZSgpO2Z0KCk7SHQoKTskdCgpO1llKCk7JGUoKTthbigpO1plKCk7S3QoKTt0bigpO3hvKCk7QWcoKTtiZz1uZXcgYSxpbT1uZXcgYSxxVT1uZXcgYSxBMj1uZXcgYSxLVT1uZXcgYSxXVT1uZXcgYSxYVT1uZXcgYTtSYy5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgidmFsdWUgaXMgcmVxdWlyZWQiKTtpZighbShlKSl0aHJvdyBuZXcgRCgiYXJyYXkgaXMgcmVxdWlyZWQiKTtuPW4/PzA7bGV0IG8scj10Ll9wb3NpdGlvbnMsaT1yLmxlbmd0aDtmb3IoZVtuKytdPWksbz0wO288aTsrK28sbis9YS5wYWNrZWRMZW5ndGgpYS5wYWNrKHJbb10sZSxuKTtsZXQgcz10Ll9taW5pbXVtSGVpZ2h0cztpZihpPW0ocyk/cy5sZW5ndGg6MCxlW24rK109aSxtKHMpKWZvcihvPTA7bzxpOysrbyllW24rK109c1tvXTtsZXQgZj10Ll9tYXhpbXVtSGVpZ2h0cztpZihpPW0oZik/Zi5sZW5ndGg6MCxlW24rK109aSxtKGYpKWZvcihvPTA7bzxpOysrbyllW24rK109ZltvXTtyZXR1cm4gWS5wYWNrKHQuX2VsbGlwc29pZCxlLG4pLG4rPVkucGFja2VkTGVuZ3RoLHB0LnBhY2sodC5fdmVydGV4Rm9ybWF0LGUsbiksbis9cHQucGFja2VkTGVuZ3RoLGVbbl09dC5fZ3JhbnVsYXJpdHksZX07YjI9WS5jbG9uZShZLlVOSVRfU1BIRVJFKSx3Mj1uZXcgcHQsbHU9e3Bvc2l0aW9uczp2b2lkIDAsbWluaW11bUhlaWdodHM6dm9pZCAwLG1heGltdW1IZWlnaHRzOnZvaWQgMCxlbGxpcHNvaWQ6YjIsdmVydGV4Rm9ybWF0OncyLGdyYW51bGFyaXR5OnZvaWQgMH07UmMudW5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgiYXJyYXkgaXMgcmVxdWlyZWQiKTtlPWU/PzA7bGV0IG8scj10W2UrK10saT1uZXcgQXJyYXkocik7Zm9yKG89MDtvPHI7KytvLGUrPWEucGFja2VkTGVuZ3RoKWlbb109YS51bnBhY2sodCxlKTtyPXRbZSsrXTtsZXQgcztpZihyPjApZm9yKHM9bmV3IEFycmF5KHIpLG89MDtvPHI7KytvKXNbb109dFtlKytdO3I9dFtlKytdO2xldCBmO2lmKHI+MClmb3IoZj1uZXcgQXJyYXkociksbz0wO288cjsrK28pZltvXT10W2UrK107bGV0IHU9WS51bnBhY2sodCxlLGIyKTtlKz1ZLnBhY2tlZExlbmd0aDtsZXQgYz1wdC51bnBhY2sodCxlLHcyKTtlKz1wdC5wYWNrZWRMZW5ndGg7bGV0IGw9dFtlXTtyZXR1cm4gbShuKT8obi5fcG9zaXRpb25zPWksbi5fbWluaW11bUhlaWdodHM9cyxuLl9tYXhpbXVtSGVpZ2h0cz1mLG4uX2VsbGlwc29pZD1ZLmNsb25lKHUsbi5fZWxsaXBzb2lkKSxuLl92ZXJ0ZXhGb3JtYXQ9cHQuY2xvbmUoYyxuLl92ZXJ0ZXhGb3JtYXQpLG4uX2dyYW51bGFyaXR5PWwsbik6KGx1LnBvc2l0aW9ucz1pLGx1Lm1pbmltdW1IZWlnaHRzPXMsbHUubWF4aW11bUhlaWdodHM9ZixsdS5ncmFudWxhcml0eT1sLG5ldyBSYyhsdSkpfTtSYy5mcm9tQ29uc3RhbnRIZWlnaHRzPWZ1bmN0aW9uKHQpe3Q9dD8/SXQuRU1QVFlfT0JKRUNUO2xldCBlPXQucG9zaXRpb25zO2lmKCFtKGUpKXRocm93IG5ldyBEKCJvcHRpb25zLnBvc2l0aW9ucyBpcyByZXF1aXJlZC4iKTtsZXQgbixvLHI9dC5taW5pbXVtSGVpZ2h0LGk9dC5tYXhpbXVtSGVpZ2h0LHM9bShyKSxmPW0oaSk7aWYoc3x8Zil7bGV0IGM9ZS5sZW5ndGg7bj1zP25ldyBBcnJheShjKTp2b2lkIDAsbz1mP25ldyBBcnJheShjKTp2b2lkIDA7Zm9yKGxldCBsPTA7bDxjOysrbClzJiYobltsXT1yKSxmJiYob1tsXT1pKX1sZXQgdT17cG9zaXRpb25zOmUsbWF4aW11bUhlaWdodHM6byxtaW5pbXVtSGVpZ2h0czpuLGVsbGlwc29pZDp0LmVsbGlwc29pZCx2ZXJ0ZXhGb3JtYXQ6dC52ZXJ0ZXhGb3JtYXR9O3JldHVybiBuZXcgUmModSl9O1JjLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX3Bvc2l0aW9ucyxuPXQuX21pbmltdW1IZWlnaHRzLG89dC5fbWF4aW11bUhlaWdodHMscj10Ll92ZXJ0ZXhGb3JtYXQsaT10Ll9ncmFudWxhcml0eSxzPXQuX2VsbGlwc29pZCxmPXJtLmNvbXB1dGVQb3NpdGlvbnMocyxlLG8sbixpLCEwKTtpZighbShmKSlyZXR1cm47bGV0IHU9Zi5ib3R0b21Qb3NpdGlvbnMsYz1mLnRvcFBvc2l0aW9ucyxsPWYubnVtQ29ybmVycyxwPWMubGVuZ3RoLGQ9cCoyLGg9ci5wb3NpdGlvbj9uZXcgRmxvYXQ2NEFycmF5KGQpOnZvaWQgMCxfPXIubm9ybWFsP25ldyBGbG9hdDMyQXJyYXkoZCk6dm9pZCAwLGc9ci50YW5nZW50P25ldyBGbG9hdDMyQXJyYXkoZCk6dm9pZCAwLGI9ci5iaXRhbmdlbnQ/bmV3IEZsb2F0MzJBcnJheShkKTp2b2lkIDAsdz1yLnN0P25ldyBGbG9hdDMyQXJyYXkoZC8zKjIpOnZvaWQgMCxPPTAsRT0wLFQ9MCx4PTAsTT0wLE49WFUsRj1XVSxJPUtVLHY9ITA7cC89MztsZXQgQixBPTAsUz0xLyhwLWwtMSk7Zm9yKEI9MDtCPHA7KytCKXtsZXQgaz1CKjMscT1hLmZyb21BcnJheShjLGssYmcpLFc9YS5mcm9tQXJyYXkodSxrLGltKTtpZihyLnBvc2l0aW9uJiYoaFtPKytdPVcueCxoW08rK109Vy55LGhbTysrXT1XLnosaFtPKytdPXEueCxoW08rK109cS55LGhbTysrXT1xLnopLHIuc3QmJih3W00rK109QSx3W00rK109MCx3W00rK109QSx3W00rK109MSksci5ub3JtYWx8fHIudGFuZ2VudHx8ci5iaXRhbmdlbnQpe2xldCBSPWEuY2xvbmUoYS5aRVJPLEEyKSxudD1hLnN1YnRyYWN0KHEscy5nZW9kZXRpY1N1cmZhY2VOb3JtYWwocSxpbSksaW0pO2lmKEIrMTxwJiYoUj1hLmZyb21BcnJheShjLGsrMyxBMikpLHYpe2xldCBhdD1hLnN1YnRyYWN0KFIscSxxVSksbHQ9YS5zdWJ0cmFjdChudCxxLGJnKTtOPWEubm9ybWFsaXplKGEuY3Jvc3MobHQsYXQsTiksTiksdj0hMX1hLmVxdWFsc0Vwc2lsb24ocSxSLFAuRVBTSUxPTjEwKT92PSEwOihBKz1TLHIudGFuZ2VudCYmKEY9YS5ub3JtYWxpemUoYS5zdWJ0cmFjdChSLHEsRiksRikpLHIuYml0YW5nZW50JiYoST1hLm5vcm1hbGl6ZShhLmNyb3NzKE4sRixJKSxJKSkpLHIubm9ybWFsJiYoX1tFKytdPU4ueCxfW0UrK109Ti55LF9bRSsrXT1OLnosX1tFKytdPU4ueCxfW0UrK109Ti55LF9bRSsrXT1OLnopLHIudGFuZ2VudCYmKGdbeCsrXT1GLngsZ1t4KytdPUYueSxnW3grK109Ri56LGdbeCsrXT1GLngsZ1t4KytdPUYueSxnW3grK109Ri56KSxyLmJpdGFuZ2VudCYmKGJbVCsrXT1JLngsYltUKytdPUkueSxiW1QrK109SS56LGJbVCsrXT1JLngsYltUKytdPUkueSxiW1QrK109SS56KX19bGV0IEM9bmV3IGllO3IucG9zaXRpb24mJihDLnBvc2l0aW9uPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRE9VQkxFLGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6aH0pKSxyLm5vcm1hbCYmKEMubm9ybWFsPW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpffSkpLHIudGFuZ2VudCYmKEMudGFuZ2VudD1uZXcgaXQoe2NvbXBvbmVudERhdGF0eXBlOmV0LkZMT0FULGNvbXBvbmVudHNQZXJBdHRyaWJ1dGU6Myx2YWx1ZXM6Z30pKSxyLmJpdGFuZ2VudCYmKEMuYml0YW5nZW50PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpifSkpLHIuc3QmJihDLnN0PW5ldyBpdCh7Y29tcG9uZW50RGF0YXR5cGU6ZXQuRkxPQVQsY29tcG9uZW50c1BlckF0dHJpYnV0ZToyLHZhbHVlczp3fSkpO2xldCBMPWQvMztkLT02KihsKzEpO2xldCB6PUx0LmNyZWF0ZVR5cGVkQXJyYXkoTCxkKSxqPTA7Zm9yKEI9MDtCPEwtMjtCKz0yKXtsZXQgaz1CLHE9QisyLFc9YS5mcm9tQXJyYXkoaCxrKjMsYmcpLFI9YS5mcm9tQXJyYXkoaCxxKjMsaW0pO2lmKGEuZXF1YWxzRXBzaWxvbihXLFIsUC5FUFNJTE9OMTApKWNvbnRpbnVlO2xldCBudD1CKzEsYXQ9QiszO3pbaisrXT1udCx6W2orK109ayx6W2orK109YXQseltqKytdPWF0LHpbaisrXT1rLHpbaisrXT1xfXJldHVybiBuZXcgVXQoe2F0dHJpYnV0ZXM6QyxpbmRpY2VzOnoscHJpbWl0aXZlVHlwZTpCdC5UUklBTkdMRVMsYm91bmRpbmdTcGhlcmU6bmV3IEF0LmZyb21WZXJ0aWNlcyhoKX0pfTt3Zz1SY30pO3ZhciBUZz17fTtsZShUZyx7ZGVmYXVsdDooKT0+JFV9KTtmdW5jdGlvbiBZVSh0LGUpe3JldHVybiBtKGUpJiYodD13Zy51bnBhY2sodCxlKSksdC5fZWxsaXBzb2lkPVkuY2xvbmUodC5fZWxsaXBzb2lkKSx3Zy5jcmVhdGVHZW9tZXRyeSh0KX12YXIgJFUsT2c9JCgoKT0+e2Z0KCk7JHQoKTtUMigpOyRVPVlVfSk7ZnVuY3Rpb24gU2ModCl7dD10Pz9JdC5FTVBUWV9PQkpFQ1Q7bGV0IGU9dC5wb3NpdGlvbnMsbj10Lm1heGltdW1IZWlnaHRzLG89dC5taW5pbXVtSGVpZ2h0cztpZighbShlKSl0aHJvdyBuZXcgRCgib3B0aW9ucy5wb3NpdGlvbnMgaXMgcmVxdWlyZWQuIik7aWYobShuKSYmbi5sZW5ndGghPT1lLmxlbmd0aCl0aHJvdyBuZXcgRCgib3B0aW9ucy5wb3NpdGlvbnMgYW5kIG9wdGlvbnMubWF4aW11bUhlaWdodHMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4iKTtpZihtKG8pJiZvLmxlbmd0aCE9PWUubGVuZ3RoKXRocm93IG5ldyBEKCJvcHRpb25zLnBvc2l0aW9ucyBhbmQgb3B0aW9ucy5taW5pbXVtSGVpZ2h0cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoLiIpO2xldCByPXQuZ3JhbnVsYXJpdHk/P1AuUkFESUFOU19QRVJfREVHUkVFLGk9dC5lbGxpcHNvaWQ/P1kuZGVmYXVsdDt0aGlzLl9wb3NpdGlvbnM9ZSx0aGlzLl9taW5pbXVtSGVpZ2h0cz1vLHRoaXMuX21heGltdW1IZWlnaHRzPW4sdGhpcy5fZ3JhbnVsYXJpdHk9cix0aGlzLl9lbGxpcHNvaWQ9WS5jbG9uZShpKSx0aGlzLl93b3JrZXJOYW1lPSJjcmVhdGVXYWxsT3V0bGluZUdlb21ldHJ5IjtsZXQgcz0xK2UubGVuZ3RoKmEucGFja2VkTGVuZ3RoKzI7bShvKSYmKHMrPW8ubGVuZ3RoKSxtKG4pJiYocys9bi5sZW5ndGgpLHRoaXMucGFja2VkTGVuZ3RoPXMrWS5wYWNrZWRMZW5ndGgrMX12YXIgTzIsRTIsUjIscHUsRWcsUzI9JCgoKT0+e3ZlKCk7RHQoKTtEZSgpO3llKCk7ZnQoKTtIdCgpOyR0KCk7WWUoKTskZSgpO2FuKCk7WmUoKTtLdCgpO3RuKCk7QWcoKTtPMj1uZXcgYSxFMj1uZXcgYTtTYy5wYWNrPWZ1bmN0aW9uKHQsZSxuKXtpZighbSh0KSl0aHJvdyBuZXcgRCgidmFsdWUgaXMgcmVxdWlyZWQiKTtpZighbShlKSl0aHJvdyBuZXcgRCgiYXJyYXkgaXMgcmVxdWlyZWQiKTtuPW4/PzA7bGV0IG8scj10Ll9wb3NpdGlvbnMsaT1yLmxlbmd0aDtmb3IoZVtuKytdPWksbz0wO288aTsrK28sbis9YS5wYWNrZWRMZW5ndGgpYS5wYWNrKHJbb10sZSxuKTtsZXQgcz10Ll9taW5pbXVtSGVpZ2h0cztpZihpPW0ocyk/cy5sZW5ndGg6MCxlW24rK109aSxtKHMpKWZvcihvPTA7bzxpOysrbyllW24rK109c1tvXTtsZXQgZj10Ll9tYXhpbXVtSGVpZ2h0cztpZihpPW0oZik/Zi5sZW5ndGg6MCxlW24rK109aSxtKGYpKWZvcihvPTA7bzxpOysrbyllW24rK109ZltvXTtyZXR1cm4gWS5wYWNrKHQuX2VsbGlwc29pZCxlLG4pLG4rPVkucGFja2VkTGVuZ3RoLGVbbl09dC5fZ3JhbnVsYXJpdHksZX07UjI9WS5jbG9uZShZLlVOSVRfU1BIRVJFKSxwdT17cG9zaXRpb25zOnZvaWQgMCxtaW5pbXVtSGVpZ2h0czp2b2lkIDAsbWF4aW11bUhlaWdodHM6dm9pZCAwLGVsbGlwc29pZDpSMixncmFudWxhcml0eTp2b2lkIDB9O1NjLnVucGFjaz1mdW5jdGlvbih0LGUsbil7aWYoIW0odCkpdGhyb3cgbmV3IEQoImFycmF5IGlzIHJlcXVpcmVkIik7ZT1lPz8wO2xldCBvLHI9dFtlKytdLGk9bmV3IEFycmF5KHIpO2ZvcihvPTA7bzxyOysrbyxlKz1hLnBhY2tlZExlbmd0aClpW29dPWEudW5wYWNrKHQsZSk7cj10W2UrK107bGV0IHM7aWYocj4wKWZvcihzPW5ldyBBcnJheShyKSxvPTA7bzxyOysrbylzW29dPXRbZSsrXTtyPXRbZSsrXTtsZXQgZjtpZihyPjApZm9yKGY9bmV3IEFycmF5KHIpLG89MDtvPHI7KytvKWZbb109dFtlKytdO2xldCB1PVkudW5wYWNrKHQsZSxSMik7ZSs9WS5wYWNrZWRMZW5ndGg7bGV0IGM9dFtlXTtyZXR1cm4gbShuKT8obi5fcG9zaXRpb25zPWksbi5fbWluaW11bUhlaWdodHM9cyxuLl9tYXhpbXVtSGVpZ2h0cz1mLG4uX2VsbGlwc29pZD1ZLmNsb25lKHUsbi5fZWxsaXBzb2lkKSxuLl9ncmFudWxhcml0eT1jLG4pOihwdS5wb3NpdGlvbnM9aSxwdS5taW5pbXVtSGVpZ2h0cz1zLHB1Lm1heGltdW1IZWlnaHRzPWYscHUuZ3JhbnVsYXJpdHk9YyxuZXcgU2MocHUpKX07U2MuZnJvbUNvbnN0YW50SGVpZ2h0cz1mdW5jdGlvbih0KXt0PXQ/P0l0LkVNUFRZX09CSkVDVDtsZXQgZT10LnBvc2l0aW9ucztpZighbShlKSl0aHJvdyBuZXcgRCgib3B0aW9ucy5wb3NpdGlvbnMgaXMgcmVxdWlyZWQuIik7bGV0IG4sbyxyPXQubWluaW11bUhlaWdodCxpPXQubWF4aW11bUhlaWdodCxzPW0ociksZj1tKGkpO2lmKHN8fGYpe2xldCBjPWUubGVuZ3RoO249cz9uZXcgQXJyYXkoYyk6dm9pZCAwLG89Zj9uZXcgQXJyYXkoYyk6dm9pZCAwO2ZvcihsZXQgbD0wO2w8YzsrK2wpcyYmKG5bbF09ciksZiYmKG9bbF09aSl9bGV0IHU9e3Bvc2l0aW9uczplLG1heGltdW1IZWlnaHRzOm8sbWluaW11bUhlaWdodHM6bixlbGxpcHNvaWQ6dC5lbGxpcHNvaWR9O3JldHVybiBuZXcgU2ModSl9O1NjLmNyZWF0ZUdlb21ldHJ5PWZ1bmN0aW9uKHQpe2xldCBlPXQuX3Bvc2l0aW9ucyxuPXQuX21pbmltdW1IZWlnaHRzLG89dC5fbWF4aW11bUhlaWdodHMscj10Ll9ncmFudWxhcml0eSxpPXQuX2VsbGlwc29pZCxzPXJtLmNvbXB1dGVQb3NpdGlvbnMoaSxlLG8sbixyLCExKTtpZighbShzKSlyZXR1cm47bGV0IGY9cy5ib3R0b21Qb3NpdGlvbnMsdT1zLnRvcFBvc2l0aW9ucyxjPXUubGVuZ3RoLGw9YyoyLHA9bmV3IEZsb2F0NjRBcnJheShsKSxkPTA7Yy89MztsZXQgaDtmb3IoaD0wO2g8YzsrK2gpe2xldCBPPWgqMyxFPWEuZnJvbUFycmF5KHUsTyxPMiksVD1hLmZyb21BcnJheShmLE8sRTIpO3BbZCsrXT1ULngscFtkKytdPVQueSxwW2QrK109VC56LHBbZCsrXT1FLngscFtkKytdPUUueSxwW2QrK109RS56fWxldCBfPW5ldyBpZSh7cG9zaXRpb246bmV3IGl0KHtjb21wb25lbnREYXRhdHlwZTpldC5ET1VCTEUsY29tcG9uZW50c1BlckF0dHJpYnV0ZTozLHZhbHVlczpwfSl9KSxnPWwvMztsPTIqZy00K2c7bGV0IGI9THQuY3JlYXRlVHlwZWRBcnJheShnLGwpLHc9MDtmb3IoaD0wO2g8Zy0yO2grPTIpe2xldCBPPWgsRT1oKzIsVD1hLmZyb21BcnJheShwLE8qMyxPMikseD1hLmZyb21BcnJheShwLEUqMyxFMik7aWYoYS5lcXVhbHNFcHNpbG9uKFQseCxQLkVQU0lMT04xMCkpY29udGludWU7bGV0IE09aCsxLE49aCszO2JbdysrXT1NLGJbdysrXT1PLGJbdysrXT1NLGJbdysrXT1OLGJbdysrXT1PLGJbdysrXT1FfXJldHVybiBiW3crK109Zy0yLGJbdysrXT1nLTEsbmV3IFV0KHthdHRyaWJ1dGVzOl8saW5kaWNlczpiLHByaW1pdGl2ZVR5cGU6QnQuTElORVMsYm91bmRpbmdTcGhlcmU6bmV3IEF0LmZyb21WZXJ0aWNlcyhwKX0pfTtFZz1TY30pO3ZhciBSZz17fTtsZShSZyx7ZGVmYXVsdDooKT0+UVV9KTtmdW5jdGlvbiBaVSh0LGUpe3JldHVybiBtKGUpJiYodD1FZy51bnBhY2sodCxlKSksdC5fZWxsaXBzb2lkPVkuY2xvbmUodC5fZWxsaXBzb2lkKSxFZy5jcmVhdGVHZW9tZXRyeSh0KX12YXIgUVUsU2c9JCgoKT0+e2Z0KCk7JHQoKTtTMigpO1FVPVpVfSk7dmFyIFBnPVluKChkdSxDZyk9Pnt2YXIga3Q9a3R8fHt9O2t0LnNjb3BlPXt9O2t0LmFycmF5SXRlcmF0b3JJbXBsPWZ1bmN0aW9uKHQpe3ZhciBlPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGU8dC5sZW5ndGg/e2RvbmU6ITEsdmFsdWU6dFtlKytdfTp7ZG9uZTohMH19fTtrdC5hcnJheUl0ZXJhdG9yPWZ1bmN0aW9uKHQpe3JldHVybntuZXh0Omt0LmFycmF5SXRlcmF0b3JJbXBsKHQpfX07a3QubWFrZUl0ZXJhdG9yPWZ1bmN0aW9uKHQpe3ZhciBlPXR5cGVvZiBTeW1ib2w8InUiJiZTeW1ib2wuaXRlcmF0b3ImJnRbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gZT9lLmNhbGwodCk6a3QuYXJyYXlJdGVyYXRvcih0KX07a3QuQVNTVU1FX0VTNT0hMTtrdC5BU1NVTUVfTk9fTkFUSVZFX01BUD0hMTtrdC5BU1NVTUVfTk9fTkFUSVZFX1NFVD0hMTtrdC5TSU1QTEVfRlJPVU5EX1BPTFlGSUxMPSExO2t0LklTT0xBVEVfUE9MWUZJTExTPSExO2t0LkZPUkNFX1BPTFlGSUxMX1BST01JU0U9ITE7a3QuRk9SQ0VfUE9MWUZJTExfUFJPTUlTRV9XSEVOX05PX1VOSEFORExFRF9SRUpFQ1RJT049ITE7a3QuZ2V0R2xvYmFsPWZ1bmN0aW9uKHQpe3Q9W3R5cGVvZiBnbG9iYWxUaGlzPT0ib2JqZWN0IiYmZ2xvYmFsVGhpcyx0LHR5cGVvZiB3aW5kb3c9PSJvYmplY3QiJiZ3aW5kb3csdHlwZW9mIHNlbGY9PSJvYmplY3QiJiZzZWxmLHR5cGVvZiBnbG9iYWw9PSJvYmplY3QiJiZnbG9iYWxdO2Zvcih2YXIgZT0wO2U8dC5sZW5ndGg7KytlKXt2YXIgbj10W2VdO2lmKG4mJm4uTWF0aD09TWF0aClyZXR1cm4gbn10aHJvdyBFcnJvcigiQ2Fubm90IGZpbmQgZ2xvYmFsIG9iamVjdCIpfTtrdC5nbG9iYWw9a3QuZ2V0R2xvYmFsKGR1KTtrdC5kZWZpbmVQcm9wZXJ0eT1rdC5BU1NVTUVfRVM1fHx0eXBlb2YgT2JqZWN0LmRlZmluZVByb3BlcnRpZXM9PSJmdW5jdGlvbiI/T2JqZWN0LmRlZmluZVByb3BlcnR5OmZ1bmN0aW9uKHQsZSxuKXtyZXR1cm4gdD09QXJyYXkucHJvdG90eXBlfHx0PT1PYmplY3QucHJvdG90eXBlfHwodFtlXT1uLnZhbHVlKSx0fTtrdC5JU19TWU1CT0xfTkFUSVZFPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2woIngiKT09InN5bWJvbCI7a3QuVFJVU1RfRVM2X1BPTFlGSUxMUz0ha3QuSVNPTEFURV9QT0xZRklMTFN8fGt0LklTX1NZTUJPTF9OQVRJVkU7a3QucG9seWZpbGxzPXt9O2t0LnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbD17fTtrdC5QT0xZRklMTF9QUkVGSVg9IiRqc2NwJCI7a3QucG9seWZpbGw9ZnVuY3Rpb24odCxlLG4sbyl7ZSYmKGt0LklTT0xBVEVfUE9MWUZJTExTP2t0LnBvbHlmaWxsSXNvbGF0ZWQodCxlLG4sbyk6a3QucG9seWZpbGxVbmlzb2xhdGVkKHQsZSxuLG8pKX07a3QucG9seWZpbGxVbmlzb2xhdGVkPWZ1bmN0aW9uKHQsZSxuLG8pe2ZvcihuPWt0Lmdsb2JhbCx0PXQuc3BsaXQoIi4iKSxvPTA7bzx0Lmxlbmd0aC0xO28rKyl7dmFyIHI9dFtvXTtpZighKHIgaW4gbikpcmV0dXJuO249bltyXX10PXRbdC5sZW5ndGgtMV0sbz1uW3RdLGU9ZShvKSxlIT1vJiZlIT1udWxsJiZrdC5kZWZpbmVQcm9wZXJ0eShuLHQse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTplfSl9O2t0LnBvbHlmaWxsSXNvbGF0ZWQ9ZnVuY3Rpb24odCxlLG4sbyl7dmFyIHI9dC5zcGxpdCgiLiIpO3Q9ci5sZW5ndGg9PT0xLG89clswXSxvPSF0JiZvIGluIGt0LnBvbHlmaWxscz9rdC5wb2x5ZmlsbHM6a3QuZ2xvYmFsO2Zvcih2YXIgaT0wO2k8ci5sZW5ndGgtMTtpKyspe3ZhciBzPXJbaV07aWYoIShzIGluIG8pKXJldHVybjtvPW9bc119cj1yW3IubGVuZ3RoLTFdLG49a3QuSVNfU1lNQk9MX05BVElWRSYmbj09PSJlczYiP29bcl06bnVsbCxlPWUobiksZSE9bnVsbCYmKHQ/a3QuZGVmaW5lUHJvcGVydHkoa3QucG9seWZpbGxzLHIse2NvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTplfSk6ZSE9PW4mJihrdC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbcl09PT12b2lkIDAmJihuPTFlOSpNYXRoLnJhbmRvbSgpPj4+MCxrdC5wcm9wZXJ0eVRvUG9seWZpbGxTeW1ib2xbcl09a3QuSVNfU1lNQk9MX05BVElWRT9rdC5nbG9iYWwuU3ltYm9sKHIpOmt0LlBPTFlGSUxMX1BSRUZJWCtuKyIkIityKSxrdC5kZWZpbmVQcm9wZXJ0eShvLGt0LnByb3BlcnR5VG9Qb2x5ZmlsbFN5bWJvbFtyXSx7Y29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOmV9KSkpfTtrdC5wb2x5ZmlsbCgiUHJvbWlzZSIsZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSgpe3RoaXMuYmF0Y2hfPW51bGx9ZnVuY3Rpb24gbihzKXtyZXR1cm4gcyBpbnN0YW5jZW9mIHI/czpuZXcgcihmdW5jdGlvbihmLHUpe2Yocyl9KX1pZih0JiYoIShrdC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFfHxrdC5GT1JDRV9QT0xZRklMTF9QUk9NSVNFX1dIRU5fTk9fVU5IQU5ETEVEX1JFSkVDVElPTiYmdHlwZW9mIGt0Lmdsb2JhbC5Qcm9taXNlUmVqZWN0aW9uRXZlbnQ+InUiKXx8IWt0Lmdsb2JhbC5Qcm9taXNlfHxrdC5nbG9iYWwuUHJvbWlzZS50b1N0cmluZygpLmluZGV4T2YoIltuYXRpdmUgY29kZV0iKT09PS0xKSlyZXR1cm4gdDtlLnByb3RvdHlwZS5hc3luY0V4ZWN1dGU9ZnVuY3Rpb24ocyl7aWYodGhpcy5iYXRjaF89PW51bGwpe3RoaXMuYmF0Y2hfPVtdO3ZhciBmPXRoaXM7dGhpcy5hc3luY0V4ZWN1dGVGdW5jdGlvbihmdW5jdGlvbigpe2YuZXhlY3V0ZUJhdGNoXygpfSl9dGhpcy5iYXRjaF8ucHVzaChzKX07dmFyIG89a3QuZ2xvYmFsLnNldFRpbWVvdXQ7ZS5wcm90b3R5cGUuYXN5bmNFeGVjdXRlRnVuY3Rpb249ZnVuY3Rpb24ocyl7byhzLDApfSxlLnByb3RvdHlwZS5leGVjdXRlQmF0Y2hfPWZ1bmN0aW9uKCl7Zm9yKDt0aGlzLmJhdGNoXyYmdGhpcy5iYXRjaF8ubGVuZ3RoOyl7dmFyIHM9dGhpcy5iYXRjaF87dGhpcy5iYXRjaF89W107Zm9yKHZhciBmPTA7ZjxzLmxlbmd0aDsrK2Ype3ZhciB1PXNbZl07c1tmXT1udWxsO3RyeXt1KCl9Y2F0Y2goYyl7dGhpcy5hc3luY1Rocm93XyhjKX19fXRoaXMuYmF0Y2hfPW51bGx9LGUucHJvdG90eXBlLmFzeW5jVGhyb3dfPWZ1bmN0aW9uKHMpe3RoaXMuYXN5bmNFeGVjdXRlRnVuY3Rpb24oZnVuY3Rpb24oKXt0aHJvdyBzfSl9O3ZhciByPWZ1bmN0aW9uKHMpe3RoaXMuc3RhdGVfPTAsdGhpcy5yZXN1bHRfPXZvaWQgMCx0aGlzLm9uU2V0dGxlZENhbGxiYWNrc189W10sdGhpcy5pc1JlamVjdGlvbkhhbmRsZWRfPSExO3ZhciBmPXRoaXMuY3JlYXRlUmVzb2x2ZUFuZFJlamVjdF8oKTt0cnl7cyhmLnJlc29sdmUsZi5yZWplY3QpfWNhdGNoKHUpe2YucmVqZWN0KHUpfX07ci5wcm90b3R5cGUuY3JlYXRlUmVzb2x2ZUFuZFJlamVjdF89ZnVuY3Rpb24oKXtmdW5jdGlvbiBzKGMpe3JldHVybiBmdW5jdGlvbihsKXt1fHwodT0hMCxjLmNhbGwoZixsKSl9fXZhciBmPXRoaXMsdT0hMTtyZXR1cm57cmVzb2x2ZTpzKHRoaXMucmVzb2x2ZVRvXykscmVqZWN0OnModGhpcy5yZWplY3RfKX19LHIucHJvdG90eXBlLnJlc29sdmVUb189ZnVuY3Rpb24ocyl7aWYocz09PXRoaXMpdGhpcy5yZWplY3RfKG5ldyBUeXBlRXJyb3IoIkEgUHJvbWlzZSBjYW5ub3QgcmVzb2x2ZSB0byBpdHNlbGYiKSk7ZWxzZSBpZihzIGluc3RhbmNlb2Ygcil0aGlzLnNldHRsZVNhbWVBc1Byb21pc2VfKHMpO2Vsc2V7dDpzd2l0Y2godHlwZW9mIHMpe2Nhc2Uib2JqZWN0Ijp2YXIgZj1zIT1udWxsO2JyZWFrIHQ7Y2FzZSJmdW5jdGlvbiI6Zj0hMDticmVhayB0O2RlZmF1bHQ6Zj0hMX1mP3RoaXMucmVzb2x2ZVRvTm9uUHJvbWlzZU9ial8ocyk6dGhpcy5mdWxmaWxsXyhzKX19LHIucHJvdG90eXBlLnJlc29sdmVUb05vblByb21pc2VPYmpfPWZ1bmN0aW9uKHMpe3ZhciBmPXZvaWQgMDt0cnl7Zj1zLnRoZW59Y2F0Y2godSl7dGhpcy5yZWplY3RfKHUpO3JldHVybn10eXBlb2YgZj09ImZ1bmN0aW9uIj90aGlzLnNldHRsZVNhbWVBc1RoZW5hYmxlXyhmLHMpOnRoaXMuZnVsZmlsbF8ocyl9LHIucHJvdG90eXBlLnJlamVjdF89ZnVuY3Rpb24ocyl7dGhpcy5zZXR0bGVfKDIscyl9LHIucHJvdG90eXBlLmZ1bGZpbGxfPWZ1bmN0aW9uKHMpe3RoaXMuc2V0dGxlXygxLHMpfSxyLnByb3RvdHlwZS5zZXR0bGVfPWZ1bmN0aW9uKHMsZil7aWYodGhpcy5zdGF0ZV8hPTApdGhyb3cgRXJyb3IoIkNhbm5vdCBzZXR0bGUoIitzKyIsICIrZisiKTogUHJvbWlzZSBhbHJlYWR5IHNldHRsZWQgaW4gc3RhdGUiK3RoaXMuc3RhdGVfKTt0aGlzLnN0YXRlXz1zLHRoaXMucmVzdWx0Xz1mLHRoaXMuc3RhdGVfPT09MiYmdGhpcy5zY2hlZHVsZVVuaGFuZGxlZFJlamVjdGlvbkNoZWNrXygpLHRoaXMuZXhlY3V0ZU9uU2V0dGxlZENhbGxiYWNrc18oKX0sci5wcm90b3R5cGUuc2NoZWR1bGVVbmhhbmRsZWRSZWplY3Rpb25DaGVja189ZnVuY3Rpb24oKXt2YXIgcz10aGlzO28oZnVuY3Rpb24oKXtpZihzLm5vdGlmeVVuaGFuZGxlZFJlamVjdGlvbl8oKSl7dmFyIGY9a3QuZ2xvYmFsLmNvbnNvbGU7dHlwZW9mIGY8InUiJiZmLmVycm9yKHMucmVzdWx0Xyl9fSwxKX0sci5wcm90b3R5cGUubm90aWZ5VW5oYW5kbGVkUmVqZWN0aW9uXz1mdW5jdGlvbigpe2lmKHRoaXMuaXNSZWplY3Rpb25IYW5kbGVkXylyZXR1cm4hMTt2YXIgcz1rdC5nbG9iYWwuQ3VzdG9tRXZlbnQsZj1rdC5nbG9iYWwuRXZlbnQsdT1rdC5nbG9iYWwuZGlzcGF0Y2hFdmVudDtyZXR1cm4gdHlwZW9mIHU+InUiPyEwOih0eXBlb2Ygcz09ImZ1bmN0aW9uIj9zPW5ldyBzKCJ1bmhhbmRsZWRyZWplY3Rpb24iLHtjYW5jZWxhYmxlOiEwfSk6dHlwZW9mIGY9PSJmdW5jdGlvbiI/cz1uZXcgZigidW5oYW5kbGVkcmVqZWN0aW9uIix7Y2FuY2VsYWJsZTohMH0pOihzPWt0Lmdsb2JhbC5kb2N1bWVudC5jcmVhdGVFdmVudCgiQ3VzdG9tRXZlbnQiKSxzLmluaXRDdXN0b21FdmVudCgidW5oYW5kbGVkcmVqZWN0aW9uIiwhMSwhMCxzKSkscy5wcm9taXNlPXRoaXMscy5yZWFzb249dGhpcy5yZXN1bHRfLHUocykpfSxyLnByb3RvdHlwZS5leGVjdXRlT25TZXR0bGVkQ2FsbGJhY2tzXz1mdW5jdGlvbigpe2lmKHRoaXMub25TZXR0bGVkQ2FsbGJhY2tzXyE9bnVsbCl7Zm9yKHZhciBzPTA7czx0aGlzLm9uU2V0dGxlZENhbGxiYWNrc18ubGVuZ3RoOysrcylpLmFzeW5jRXhlY3V0ZSh0aGlzLm9uU2V0dGxlZENhbGxiYWNrc19bc10pO3RoaXMub25TZXR0bGVkQ2FsbGJhY2tzXz1udWxsfX07dmFyIGk9bmV3IGU7cmV0dXJuIHIucHJvdG90eXBlLnNldHRsZVNhbWVBc1Byb21pc2VfPWZ1bmN0aW9uKHMpe3ZhciBmPXRoaXMuY3JlYXRlUmVzb2x2ZUFuZFJlamVjdF8oKTtzLmNhbGxXaGVuU2V0dGxlZF8oZi5yZXNvbHZlLGYucmVqZWN0KX0sci5wcm90b3R5cGUuc2V0dGxlU2FtZUFzVGhlbmFibGVfPWZ1bmN0aW9uKHMsZil7dmFyIHU9dGhpcy5jcmVhdGVSZXNvbHZlQW5kUmVqZWN0XygpO3RyeXtzLmNhbGwoZix1LnJlc29sdmUsdS5yZWplY3QpfWNhdGNoKGMpe3UucmVqZWN0KGMpfX0sci5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihzLGYpe2Z1bmN0aW9uIHUoZCxoKXtyZXR1cm4gdHlwZW9mIGQ9PSJmdW5jdGlvbiI/ZnVuY3Rpb24oXyl7dHJ5e2MoZChfKSl9Y2F0Y2goZyl7bChnKX19Omh9dmFyIGMsbCxwPW5ldyByKGZ1bmN0aW9uKGQsaCl7Yz1kLGw9aH0pO3JldHVybiB0aGlzLmNhbGxXaGVuU2V0dGxlZF8odShzLGMpLHUoZixsKSkscH0sci5wcm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24ocyl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAscyl9LHIucHJvdG90eXBlLmNhbGxXaGVuU2V0dGxlZF89ZnVuY3Rpb24ocyxmKXtmdW5jdGlvbiB1KCl7c3dpdGNoKGMuc3RhdGVfKXtjYXNlIDE6cyhjLnJlc3VsdF8pO2JyZWFrO2Nhc2UgMjpmKGMucmVzdWx0Xyk7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcigiVW5leHBlY3RlZCBzdGF0ZTogIitjLnN0YXRlXyl9fXZhciBjPXRoaXM7dGhpcy5vblNldHRsZWRDYWxsYmFja3NfPT1udWxsP2kuYXN5bmNFeGVjdXRlKHUpOnRoaXMub25TZXR0bGVkQ2FsbGJhY2tzXy5wdXNoKHUpLHRoaXMuaXNSZWplY3Rpb25IYW5kbGVkXz0hMH0sci5yZXNvbHZlPW4sci5yZWplY3Q9ZnVuY3Rpb24ocyl7cmV0dXJuIG5ldyByKGZ1bmN0aW9uKGYsdSl7dShzKX0pfSxyLnJhY2U9ZnVuY3Rpb24ocyl7cmV0dXJuIG5ldyByKGZ1bmN0aW9uKGYsdSl7Zm9yKHZhciBjPWt0Lm1ha2VJdGVyYXRvcihzKSxsPWMubmV4dCgpOyFsLmRvbmU7bD1jLm5leHQoKSluKGwudmFsdWUpLmNhbGxXaGVuU2V0dGxlZF8oZix1KX0pfSxyLmFsbD1mdW5jdGlvbihzKXt2YXIgZj1rdC5tYWtlSXRlcmF0b3IocyksdT1mLm5leHQoKTtyZXR1cm4gdS5kb25lP24oW10pOm5ldyByKGZ1bmN0aW9uKGMsbCl7ZnVuY3Rpb24gcChfKXtyZXR1cm4gZnVuY3Rpb24oZyl7ZFtfXT1nLGgtLSxoPT0wJiZjKGQpfX12YXIgZD1bXSxoPTA7ZG8gZC5wdXNoKHZvaWQgMCksaCsrLG4odS52YWx1ZSkuY2FsbFdoZW5TZXR0bGVkXyhwKGQubGVuZ3RoLTEpLGwpLHU9Zi5uZXh0KCk7d2hpbGUoIXUuZG9uZSl9KX0scn0sImVzNiIsImVzMyIpO2t0Lm93bnM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHQsZSl9O2t0LmFzc2lnbj1rdC5UUlVTVF9FUzZfUE9MWUZJTExTJiZ0eXBlb2YgT2JqZWN0LmFzc2lnbj09ImZ1bmN0aW9uIj9PYmplY3QuYXNzaWduOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7dmFyIG89YXJndW1lbnRzW25dO2lmKG8pZm9yKHZhciByIGluIG8pa3Qub3ducyhvLHIpJiYodFtyXT1vW3JdKX1yZXR1cm4gdH07a3QucG9seWZpbGwoIk9iamVjdC5hc3NpZ24iLGZ1bmN0aW9uKHQpe3JldHVybiB0fHxrdC5hc3NpZ259LCJlczYiLCJlczMiKTtrdC5jaGVja1N0cmluZ0FyZ3M9ZnVuY3Rpb24odCxlLG4pe2lmKHQ9PW51bGwpdGhyb3cgbmV3IFR5cGVFcnJvcigiVGhlICd0aGlzJyB2YWx1ZSBmb3IgU3RyaW5nLnByb3RvdHlwZS4iK24rIiBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpO2lmKGUgaW5zdGFuY2VvZiBSZWdFeHApdGhyb3cgbmV3IFR5cGVFcnJvcigiRmlyc3QgYXJndW1lbnQgdG8gU3RyaW5nLnByb3RvdHlwZS4iK24rIiBtdXN0IG5vdCBiZSBhIHJlZ3VsYXIgZXhwcmVzc2lvbiIpO3JldHVybiB0KyIifTtrdC5wb2x5ZmlsbCgiU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoIixmdW5jdGlvbih0KXtyZXR1cm4gdHx8ZnVuY3Rpb24oZSxuKXt2YXIgbz1rdC5jaGVja1N0cmluZ0FyZ3ModGhpcyxlLCJzdGFydHNXaXRoIik7ZSs9IiI7dmFyIHI9by5sZW5ndGgsaT1lLmxlbmd0aDtuPU1hdGgubWF4KDAsTWF0aC5taW4obnwwLG8ubGVuZ3RoKSk7Zm9yKHZhciBzPTA7czxpJiZuPHI7KWlmKG9bbisrXSE9ZVtzKytdKXJldHVybiExO3JldHVybiBzPj1pfX0sImVzNiIsImVzMyIpO2t0LnBvbHlmaWxsKCJBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsZnVuY3Rpb24odCl7ZnVuY3Rpb24gZShuKXtyZXR1cm4gbj1OdW1iZXIobiksbj09PTEvMHx8bj09PS0xLzA/bjpufDB9cmV0dXJuIHR8fGZ1bmN0aW9uKG4sbyxyKXt2YXIgaT10aGlzLmxlbmd0aDtpZihuPWUobiksbz1lKG8pLHI9cj09PXZvaWQgMD9pOmUociksbj0wPm4/TWF0aC5tYXgoaStuLDApOk1hdGgubWluKG4saSksbz0wPm8/TWF0aC5tYXgoaStvLDApOk1hdGgubWluKG8saSkscj0wPnI/TWF0aC5tYXgoaStyLDApOk1hdGgubWluKHIsaSksbjxvKWZvcig7bzxyOylvIGluIHRoaXM/dGhpc1tuKytdPXRoaXNbbysrXTooZGVsZXRlIHRoaXNbbisrXSxvKyspO2Vsc2UgZm9yKHI9TWF0aC5taW4ocixpK28tbiksbis9ci1vO3I+bzspLS1yIGluIHRoaXM/dGhpc1stLW5dPXRoaXNbcl06ZGVsZXRlIHRoaXNbLS1uXTtyZXR1cm4gdGhpc319LCJlczYiLCJlczMiKTtrdC50eXBlZEFycmF5Q29weVdpdGhpbj1mdW5jdGlvbih0KXtyZXR1cm4gdHx8QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW59O2t0LnBvbHlmaWxsKCJJbnQ4QXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLGt0LnR5cGVkQXJyYXlDb3B5V2l0aGluLCJlczYiLCJlczUiKTtrdC5wb2x5ZmlsbCgiVWludDhBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsa3QudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpO2t0LnBvbHlmaWxsKCJVaW50OENsYW1wZWRBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsa3QudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpO2t0LnBvbHlmaWxsKCJJbnQxNkFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIixrdC50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7a3QucG9seWZpbGwoIlVpbnQxNkFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIixrdC50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7a3QucG9seWZpbGwoIkludDMyQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLGt0LnR5cGVkQXJyYXlDb3B5V2l0aGluLCJlczYiLCJlczUiKTtrdC5wb2x5ZmlsbCgiVWludDMyQXJyYXkucHJvdG90eXBlLmNvcHlXaXRoaW4iLGt0LnR5cGVkQXJyYXlDb3B5V2l0aGluLCJlczYiLCJlczUiKTtrdC5wb2x5ZmlsbCgiRmxvYXQzMkFycmF5LnByb3RvdHlwZS5jb3B5V2l0aGluIixrdC50eXBlZEFycmF5Q29weVdpdGhpbiwiZXM2IiwiZXM1Iik7a3QucG9seWZpbGwoIkZsb2F0NjRBcnJheS5wcm90b3R5cGUuY29weVdpdGhpbiIsa3QudHlwZWRBcnJheUNvcHlXaXRoaW4sImVzNiIsImVzNSIpO3ZhciB4Zz1mdW5jdGlvbigpe3ZhciB0PXR5cGVvZiBkb2N1bWVudDwidSImJmRvY3VtZW50LmN1cnJlbnRTY3JpcHQ/ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM6dm9pZCAwO3JldHVybiB0eXBlb2YgX19maWxlbmFtZTwidSImJih0PXR8fF9fZmlsZW5hbWUpLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIG4oVil7cmV0dXJuIFIubG9jYXRlRmlsZT9SLmxvY2F0ZUZpbGUoVixkdCk6ZHQrVn1mdW5jdGlvbiBvKFYsSyx0dCl7dmFyIE10PUsrdHQ7Zm9yKHR0PUs7Vlt0dF0mJiEodHQ+PU10KTspKyt0dDtpZigxNjx0dC1LJiZWLmJ1ZmZlciYmZ2UpcmV0dXJuIGdlLmRlY29kZShWLnN1YmFycmF5KEssdHQpKTtmb3IoTXQ9IiI7Szx0dDspe3ZhciB1ZT1WW0srK107aWYodWUmMTI4KXt2YXIgd2U9VltLKytdJjYzO2lmKCh1ZSYyMjQpPT0xOTIpTXQrPVN0cmluZy5mcm9tQ2hhckNvZGUoKHVlJjMxKTw8Nnx3ZSk7ZWxzZXt2YXIgRWk9VltLKytdJjYzO3VlPSh1ZSYyNDApPT0yMjQ/KHVlJjE1KTw8MTJ8d2U8PDZ8RWk6KHVlJjcpPDwxOHx3ZTw8MTJ8RWk8PDZ8VltLKytdJjYzLDY1NTM2PnVlP010Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKHVlKToodWUtPTY1NTM2LE10Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fHVlPj4xMCw1NjMyMHx1ZSYxMDIzKSl9fWVsc2UgTXQrPVN0cmluZy5mcm9tQ2hhckNvZGUodWUpfXJldHVybiBNdH1mdW5jdGlvbiByKFYsSyl7cmV0dXJuIFY/byh1bixWLEspOiIifWZ1bmN0aW9uIGkoKXt2YXIgVj1RdC5idWZmZXI7Ui5IRUFQOD1FZT1uZXcgSW50OEFycmF5KFYpLFIuSEVBUDE2PW5ldyBJbnQxNkFycmF5KFYpLFIuSEVBUDMyPVZlPW5ldyBJbnQzMkFycmF5KFYpLFIuSEVBUFU4PXVuPW5ldyBVaW50OEFycmF5KFYpLFIuSEVBUFUxNj1uZXcgVWludDE2QXJyYXkoViksUi5IRUFQVTMyPWJlPW5ldyBVaW50MzJBcnJheShWKSxSLkhFQVBGMzI9bmV3IEZsb2F0MzJBcnJheShWKSxSLkhFQVBGNjQ9bmV3IEZsb2F0NjRBcnJheShWKX1mdW5jdGlvbiBzKFYpe3Rocm93IFIub25BYm9ydCYmUi5vbkFib3J0KFYpLFY9IkFib3J0ZWQoIitWKyIpIixmZShWKSxOZT0hMCxWPW5ldyBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IoVisiLiBCdWlsZCB3aXRoIC1zQVNTRVJUSU9OUyBmb3IgbW9yZSBpbmZvLiIpLGF0KFYpLFZ9ZnVuY3Rpb24gZihWKXt0cnl7aWYoVj09c24mJlp0KXJldHVybiBuZXcgVWludDhBcnJheShadCk7aWYocGUpcmV0dXJuIHBlKFYpO3Rocm93ImJvdGggYXN5bmMgYW5kIHN5bmMgZmV0Y2hpbmcgb2YgdGhlIHdhc20gZmFpbGVkIn1jYXRjaChLKXtzKEspfX1mdW5jdGlvbiB1KCl7aWYoIVp0JiYoUHR8fGd0KSl7aWYodHlwZW9mIGZldGNoPT0iZnVuY3Rpb24iJiYhc24uc3RhcnRzV2l0aCgiZmlsZTovLyIpKXJldHVybiBmZXRjaChzbix7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0pLnRoZW4oZnVuY3Rpb24oVil7aWYoIVYub2spdGhyb3ciZmFpbGVkIHRvIGxvYWQgd2FzbSBiaW5hcnkgZmlsZSBhdCAnIitzbisiJyI7cmV0dXJuIFYuYXJyYXlCdWZmZXIoKX0pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuIGYoc24pfSk7aWYocmUpcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKFYsSyl7cmUoc24sZnVuY3Rpb24odHQpe1YobmV3IFVpbnQ4QXJyYXkodHQpKX0sSyl9KX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe3JldHVybiBmKHNuKX0pfWZ1bmN0aW9uIGMoVil7Zm9yKDswPFYubGVuZ3RoOylWLnNoaWZ0KCkoUil9ZnVuY3Rpb24gbChWKXt0aGlzLmV4Y1B0cj1WLHRoaXMucHRyPVYtMjQsdGhpcy5zZXRfdHlwZT1mdW5jdGlvbihLKXtiZVt0aGlzLnB0cis0Pj4yXT1LfSx0aGlzLmdldF90eXBlPWZ1bmN0aW9uKCl7cmV0dXJuIGJlW3RoaXMucHRyKzQ+PjJdfSx0aGlzLnNldF9kZXN0cnVjdG9yPWZ1bmN0aW9uKEspe2JlW3RoaXMucHRyKzg+PjJdPUt9LHRoaXMuZ2V0X2Rlc3RydWN0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gYmVbdGhpcy5wdHIrOD4+Ml19LHRoaXMuc2V0X3JlZmNvdW50PWZ1bmN0aW9uKEspe1ZlW3RoaXMucHRyPj4yXT1LfSx0aGlzLnNldF9jYXVnaHQ9ZnVuY3Rpb24oSyl7RWVbdGhpcy5wdHIrMTI+PjBdPUs/MTowfSx0aGlzLmdldF9jYXVnaHQ9ZnVuY3Rpb24oKXtyZXR1cm4gRWVbdGhpcy5wdHIrMTI+PjBdIT0wfSx0aGlzLnNldF9yZXRocm93bj1mdW5jdGlvbihLKXtFZVt0aGlzLnB0cisxMz4+MF09Sz8xOjB9LHRoaXMuZ2V0X3JldGhyb3duPWZ1bmN0aW9uKCl7cmV0dXJuIEVlW3RoaXMucHRyKzEzPj4wXSE9MH0sdGhpcy5pbml0PWZ1bmN0aW9uKEssdHQpe3RoaXMuc2V0X2FkanVzdGVkX3B0cigwKSx0aGlzLnNldF90eXBlKEspLHRoaXMuc2V0X2Rlc3RydWN0b3IodHQpLHRoaXMuc2V0X3JlZmNvdW50KDApLHRoaXMuc2V0X2NhdWdodCghMSksdGhpcy5zZXRfcmV0aHJvd24oITEpfSx0aGlzLmFkZF9yZWY9ZnVuY3Rpb24oKXtWZVt0aGlzLnB0cj4+Ml0rPTF9LHRoaXMucmVsZWFzZV9yZWY9ZnVuY3Rpb24oKXt2YXIgSz1WZVt0aGlzLnB0cj4+Ml07cmV0dXJuIFZlW3RoaXMucHRyPj4yXT1LLTEsSz09PTF9LHRoaXMuc2V0X2FkanVzdGVkX3B0cj1mdW5jdGlvbihLKXtiZVt0aGlzLnB0cisxNj4+Ml09S30sdGhpcy5nZXRfYWRqdXN0ZWRfcHRyPWZ1bmN0aW9uKCl7cmV0dXJuIGJlW3RoaXMucHRyKzE2Pj4yXX0sdGhpcy5nZXRfZXhjZXB0aW9uX3B0cj1mdW5jdGlvbigpe2lmKGtsKHRoaXMuZ2V0X3R5cGUoKSkpcmV0dXJuIGJlW3RoaXMuZXhjUHRyPj4yXTt2YXIgSz10aGlzLmdldF9hZGp1c3RlZF9wdHIoKTtyZXR1cm4gSyE9PTA/Szp0aGlzLmV4Y1B0cn19ZnVuY3Rpb24gcCgpe2Z1bmN0aW9uIFYoKXtpZighb2YmJihvZj0hMCxSLmNhbGxlZFJ1bj0hMCwhTmUpKXtpZihvZT0hMCxjKHBuKSxudChSKSxSLm9uUnVudGltZUluaXRpYWxpemVkJiZSLm9uUnVudGltZUluaXRpYWxpemVkKCksUi5wb3N0UnVuKWZvcih0eXBlb2YgUi5wb3N0UnVuPT0iZnVuY3Rpb24iJiYoUi5wb3N0UnVuPVtSLnBvc3RSdW5dKTtSLnBvc3RSdW4ubGVuZ3RoOylFbi51bnNoaWZ0KFIucG9zdFJ1bi5zaGlmdCgpKTtjKEVuKX19aWYoISgwPFl0KSl7aWYoUi5wcmVSdW4pZm9yKHR5cGVvZiBSLnByZVJ1bj09ImZ1bmN0aW9uIiYmKFIucHJlUnVuPVtSLnByZVJ1bl0pO1IucHJlUnVuLmxlbmd0aDspbG4udW5zaGlmdChSLnByZVJ1bi5zaGlmdCgpKTtjKGxuKSwwPFl0fHwoUi5zZXRTdGF0dXM/KFIuc2V0U3RhdHVzKCJSdW5uaW5nLi4uIiksc2V0VGltZW91dChmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtSLnNldFN0YXR1cygiIil9LDEpLFYoKX0sMSkpOlYoKSl9fWZ1bmN0aW9uIGQoKXt9ZnVuY3Rpb24gaChWKXtyZXR1cm4oVnx8ZCkuX19jYWNoZV9ffWZ1bmN0aW9uIF8oVixLKXt2YXIgdHQ9aChLKSxNdD10dFtWXTtyZXR1cm4gTXR8fChNdD1PYmplY3QuY3JlYXRlKChLfHxkKS5wcm90b3R5cGUpLE10LnB0cj1WLHR0W1ZdPU10KX1mdW5jdGlvbiBnKFYpe2lmKHR5cGVvZiBWPT0ic3RyaW5nIil7Zm9yKHZhciBLPTAsdHQ9MDt0dDxWLmxlbmd0aDsrK3R0KXt2YXIgTXQ9Vi5jaGFyQ29kZUF0KHR0KTsxMjc+PU10P0srKzoyMDQ3Pj1NdD9LKz0yOjU1Mjk2PD1NdCYmNTczNDM+PU10PyhLKz00LCsrdHQpOksrPTN9aWYoSz1BcnJheShLKzEpLHR0PTAsTXQ9Sy5sZW5ndGgsMDxNdCl7TXQ9dHQrTXQtMTtmb3IodmFyIHVlPTA7dWU8Vi5sZW5ndGg7Kyt1ZSl7dmFyIHdlPVYuY2hhckNvZGVBdCh1ZSk7aWYoNTUyOTY8PXdlJiY1NzM0Mz49d2Upe3ZhciBFaT1WLmNoYXJDb2RlQXQoKyt1ZSk7d2U9NjU1MzYrKCh3ZSYxMDIzKTw8MTApfEVpJjEwMjN9aWYoMTI3Pj13ZSl7aWYodHQ+PU10KWJyZWFrO0tbdHQrK109d2V9ZWxzZXtpZigyMDQ3Pj13ZSl7aWYodHQrMT49TXQpYnJlYWs7S1t0dCsrXT0xOTJ8d2U+PjZ9ZWxzZXtpZig2NTUzNT49d2Upe2lmKHR0KzI+PU10KWJyZWFrO0tbdHQrK109MjI0fHdlPj4xMn1lbHNle2lmKHR0KzM+PU10KWJyZWFrO0tbdHQrK109MjQwfHdlPj4xOCxLW3R0KytdPTEyOHx3ZT4+MTImNjN9S1t0dCsrXT0xMjh8d2U+PjYmNjN9S1t0dCsrXT0xMjh8d2UmNjN9fUtbdHRdPTB9cmV0dXJuIFY9eGUuYWxsb2MoSyxFZSkseGUuY29weShLLEVlLFYpLFZ9cmV0dXJuIFZ9ZnVuY3Rpb24gYihWKXtpZih0eXBlb2YgVj09Im9iamVjdCIpe3ZhciBLPXhlLmFsbG9jKFYsRWUpO3JldHVybiB4ZS5jb3B5KFYsRWUsSyksS31yZXR1cm4gVn1mdW5jdGlvbiB3KCl7dGhyb3ciY2Fubm90IGNvbnN0cnVjdCBhIFZvaWRQdHIsIG5vIGNvbnN0cnVjdG9yIGluIElETCJ9ZnVuY3Rpb24gTygpe3RoaXMucHRyPWNuKCksaChPKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBFKCl7dGhpcy5wdHI9cG8oKSxoKEUpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIFQoKXt0aGlzLnB0cj1tbygpLGgoVClbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24geCgpe3RoaXMucHRyPUZlKCksaCh4KVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBNKCl7dGhpcy5wdHI9dnMoKSxoKE0pW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIE4oKXt0aGlzLnB0cj1zbygpLGgoTilbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gRigpe3RoaXMucHRyPUljKCksaChGKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBJKCl7dGhpcy5wdHI9cnIoKSxoKEkpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIHYoKXt0aGlzLnB0cj1GYygpLGgodilbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gQigpe3Rocm93ImNhbm5vdCBjb25zdHJ1Y3QgYSBTdGF0dXMsIG5vIGNvbnN0cnVjdG9yIGluIElETCJ9ZnVuY3Rpb24gQSgpe3RoaXMucHRyPXh1KCksaChBKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBTKCl7dGhpcy5wdHI9TGMoKSxoKFMpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIEMoKXt0aGlzLnB0cj1XYSgpLGgoQylbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gTCgpe3RoaXMucHRyPUJjKCksaChMKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiB6KCl7dGhpcy5wdHI9THUoKSxoKHopW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIGooKXt0aGlzLnB0cj1VdSgpLGgoailbdGhpcy5wdHJdPXRoaXN9ZnVuY3Rpb24gaygpe3RoaXMucHRyPWVzKCksaChrKVt0aGlzLnB0cl09dGhpc31mdW5jdGlvbiBxKCl7dGhpcy5wdHI9SHUoKSxoKHEpW3RoaXMucHRyXT10aGlzfWZ1bmN0aW9uIFcoKXt0aGlzLnB0cj1RYSgpLGgoVylbdGhpcy5wdHJdPXRoaXN9ZT1lPT09dm9pZCAwP3t9OmU7dmFyIFI9dHlwZW9mIGU8InUiP2U6e30sbnQsYXQ7Ui5yZWFkeT1uZXcgUHJvbWlzZShmdW5jdGlvbihWLEspe250PVYsYXQ9S30pO3ZhciBsdD0hMSxfdD0hMTtSLm9uUnVudGltZUluaXRpYWxpemVkPWZ1bmN0aW9uKCl7bHQ9ITAsX3QmJnR5cGVvZiBSLm9uTW9kdWxlTG9hZGVkPT0iZnVuY3Rpb24iJiZSLm9uTW9kdWxlTG9hZGVkKFIpfSxSLm9uTW9kdWxlUGFyc2VkPWZ1bmN0aW9uKCl7X3Q9ITAsbHQmJnR5cGVvZiBSLm9uTW9kdWxlTG9hZGVkPT0iZnVuY3Rpb24iJiZSLm9uTW9kdWxlTG9hZGVkKFIpfSxSLmlzVmVyc2lvblN1cHBvcnRlZD1mdW5jdGlvbihWKXtyZXR1cm4gdHlwZW9mIFYhPSJzdHJpbmciPyExOihWPVYuc3BsaXQoIi4iKSwyPlYubGVuZ3RofHwzPFYubGVuZ3RoPyExOlZbMF09PTEmJjA8PVZbMV0mJjU+PVZbMV0/ITA6IShWWzBdIT0wfHwxMDxWWzFdKSl9O3ZhciBvdD1PYmplY3QuYXNzaWduKHt9LFIpLFB0PXR5cGVvZiB3aW5kb3c9PSJvYmplY3QiLGd0PXR5cGVvZiBpbXBvcnRTY3JpcHRzPT0iZnVuY3Rpb24iLFJ0PXR5cGVvZiBwcm9jZXNzPT0ib2JqZWN0IiYmdHlwZW9mIHByb2Nlc3MudmVyc2lvbnM9PSJvYmplY3QiJiZ0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlPT0ic3RyaW5nIixkdD0iIjtpZihSdCl7dmFyIHJ0PWRyKCJmcyIpLHh0PWRyKCJwYXRoIik7ZHQ9Z3Q/eHQuZGlybmFtZShkdCkrIi8iOl9fZGlybmFtZSsiLyI7dmFyIEd0PWZ1bmN0aW9uKFYsSyl7cmV0dXJuIFY9Vi5zdGFydHNXaXRoKCJmaWxlOi8vIik/bmV3IFVSTChWKTp4dC5ub3JtYWxpemUoVikscnQucmVhZEZpbGVTeW5jKFYsSz92b2lkIDA6InV0ZjgiKX0scGU9ZnVuY3Rpb24oVil7cmV0dXJuIFY9R3QoViwhMCksVi5idWZmZXJ8fChWPW5ldyBVaW50OEFycmF5KFYpKSxWfSxyZT1mdW5jdGlvbihWLEssdHQpe1Y9Vi5zdGFydHNXaXRoKCJmaWxlOi8vIik/bmV3IFVSTChWKTp4dC5ub3JtYWxpemUoVikscnQucmVhZEZpbGUoVixmdW5jdGlvbihNdCx1ZSl7TXQ/dHQoTXQpOksodWUuYnVmZmVyKX0pfTsxPHByb2Nlc3MuYXJndi5sZW5ndGgmJnByb2Nlc3MuYXJndlsxXS5yZXBsYWNlKC9cXC9nLCIvIikscHJvY2Vzcy5hcmd2LnNsaWNlKDIpLFIuaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiJbRW1zY3JpcHRlbiBNb2R1bGUgb2JqZWN0XSJ9fWVsc2UoUHR8fGd0KSYmKGd0P2R0PXNlbGYubG9jYXRpb24uaHJlZjp0eXBlb2YgZG9jdW1lbnQ8InUiJiZkb2N1bWVudC5jdXJyZW50U2NyaXB0JiYoZHQ9ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpLHQmJihkdD10KSxkdD1kdC5pbmRleE9mKCJibG9iOiIpIT09MD9kdC5zdWJzdHIoMCxkdC5yZXBsYWNlKC9bPyNdLiovLCIiKS5sYXN0SW5kZXhPZigiLyIpKzEpOiIiLEd0PWZ1bmN0aW9uKFYpe3ZhciBLPW5ldyBYTUxIdHRwUmVxdWVzdDtyZXR1cm4gSy5vcGVuKCJHRVQiLFYsITEpLEsuc2VuZChudWxsKSxLLnJlc3BvbnNlVGV4dH0sZ3QmJihwZT1mdW5jdGlvbihWKXt2YXIgSz1uZXcgWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIEsub3BlbigiR0VUIixWLCExKSxLLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiLEsuc2VuZChudWxsKSxuZXcgVWludDhBcnJheShLLnJlc3BvbnNlKX0pLHJlPWZ1bmN0aW9uKFYsSyx0dCl7dmFyIE10PW5ldyBYTUxIdHRwUmVxdWVzdDtNdC5vcGVuKCJHRVQiLFYsITApLE10LnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiLE10Lm9ubG9hZD1mdW5jdGlvbigpe010LnN0YXR1cz09MjAwfHxNdC5zdGF0dXM9PTAmJk10LnJlc3BvbnNlP0soTXQucmVzcG9uc2UpOnR0KCl9LE10Lm9uZXJyb3I9dHQsTXQuc2VuZChudWxsKX0pO3ZhciBkZT1SLnByaW50fHxjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLGZlPVIucHJpbnRFcnJ8fGNvbnNvbGUud2Fybi5iaW5kKGNvbnNvbGUpO09iamVjdC5hc3NpZ24oUixvdCksb3Q9bnVsbDt2YXIgWnQ7Ui53YXNtQmluYXJ5JiYoWnQ9Ui53YXNtQmluYXJ5KSx0eXBlb2YgV2ViQXNzZW1ibHkhPSJvYmplY3QiJiZzKCJubyBuYXRpdmUgd2FzbSBzdXBwb3J0IGRldGVjdGVkIik7dmFyIFF0LE5lPSExLGdlPXR5cGVvZiBUZXh0RGVjb2RlcjwidSI/bmV3IFRleHREZWNvZGVyKCJ1dGY4Iik6dm9pZCAwLEVlLHVuLFZlLGJlLGxuPVtdLHBuPVtdLEVuPVtdLG9lPSExLFl0PTAsemU9bnVsbCxkbj1udWxsLHNuPSJkcmFjb19kZWNvZGVyLndhc20iO3NuLnN0YXJ0c1dpdGgoImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCwiKXx8KHNuPW4oc24pKTt2YXIgbW49MCxsbz1bbnVsbCxbXSxbXV0scW49e2I6ZnVuY3Rpb24oVixLLHR0KXt0aHJvdyBuZXcgbChWKS5pbml0KEssdHQpLG1uKyssVn0sYTpmdW5jdGlvbigpe3MoIiIpfSxnOmZ1bmN0aW9uKFYsSyx0dCl7dW4uY29weVdpdGhpbihWLEssSyt0dCl9LGU6ZnVuY3Rpb24oVil7dmFyIEs9dW4ubGVuZ3RoO2lmKFY+Pj49MCwyMTQ3NDgzNjQ4PFYpcmV0dXJuITE7Zm9yKHZhciB0dD0xOzQ+PXR0O3R0Kj0yKXt2YXIgTXQ9SyooMSsuMi90dCk7TXQ9TWF0aC5taW4oTXQsVisxMDA2NjMyOTYpO3ZhciB1ZT1NYXRoO010PU1hdGgubWF4KFYsTXQpLHVlPXVlLm1pbi5jYWxsKHVlLDIxNDc0ODM2NDgsTXQrKDY1NTM2LU10JTY1NTM2KSU2NTUzNik7dDp7TXQ9UXQuYnVmZmVyO3RyeXtRdC5ncm93KHVlLU10LmJ5dGVMZW5ndGgrNjU1MzU+Pj4xNiksaSgpO3ZhciB3ZT0xO2JyZWFrIHR9Y2F0Y2h7fXdlPXZvaWQgMH1pZih3ZSlyZXR1cm4hMH1yZXR1cm4hMX0sZjpmdW5jdGlvbihWKXtyZXR1cm4gNTJ9LGQ6ZnVuY3Rpb24oVixLLHR0LE10LHVlKXtyZXR1cm4gNzB9LGM6ZnVuY3Rpb24oVixLLHR0LE10KXtmb3IodmFyIHVlPTAsd2U9MDt3ZTx0dDt3ZSsrKXt2YXIgRWk9YmVbSz4+Ml0semM9YmVbSys0Pj4yXTtLKz04O2Zvcih2YXIgVT0wO1U8emM7VSsrKXt2YXIgRz11bltFaStVXSxYPWxvW1ZdO0c9PT0wfHxHPT09MTA/KChWPT09MT9kZTpmZSkobyhYLDApKSxYLmxlbmd0aD0wKTpYLnB1c2goRyl9dWUrPXpjfXJldHVybiBiZVtNdD4+Ml09dWUsMH19OyhmdW5jdGlvbigpe2Z1bmN0aW9uIFYodWUsd2Upe1IuYXNtPXVlLmV4cG9ydHMsUXQ9Ui5hc20uaCxpKCkscG4udW5zaGlmdChSLmFzbS5pKSxZdC0tLFIubW9uaXRvclJ1bkRlcGVuZGVuY2llcyYmUi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzKFl0KSxZdD09MCYmKHplIT09bnVsbCYmKGNsZWFySW50ZXJ2YWwoemUpLHplPW51bGwpLGRuJiYodWU9ZG4sZG49bnVsbCx1ZSgpKSl9ZnVuY3Rpb24gSyh1ZSl7Vih1ZS5pbnN0YW5jZSl9ZnVuY3Rpb24gdHQodWUpe3JldHVybiB1KCkudGhlbihmdW5jdGlvbih3ZSl7cmV0dXJuIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKHdlLE10KX0pLnRoZW4oZnVuY3Rpb24od2Upe3JldHVybiB3ZX0pLnRoZW4odWUsZnVuY3Rpb24od2Upe2ZlKCJmYWlsZWQgdG8gYXN5bmNocm9ub3VzbHkgcHJlcGFyZSB3YXNtOiAiK3dlKSxzKHdlKX0pfXZhciBNdD17YTpxbn07aWYoWXQrKyxSLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMmJlIubW9uaXRvclJ1bkRlcGVuZGVuY2llcyhZdCksUi5pbnN0YW50aWF0ZVdhc20pdHJ5e3JldHVybiBSLmluc3RhbnRpYXRlV2FzbShNdCxWKX1jYXRjaCh1ZSl7ZmUoIk1vZHVsZS5pbnN0YW50aWF0ZVdhc20gY2FsbGJhY2sgZmFpbGVkIHdpdGggZXJyb3I6ICIrdWUpLGF0KHVlKX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gWnR8fHR5cGVvZiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyE9ImZ1bmN0aW9uInx8c24uc3RhcnRzV2l0aCgiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIpfHxzbi5zdGFydHNXaXRoKCJmaWxlOi8vIil8fFJ0fHx0eXBlb2YgZmV0Y2ghPSJmdW5jdGlvbiI/dHQoSyk6ZmV0Y2goc24se2NyZWRlbnRpYWxzOiJzYW1lLW9yaWdpbiJ9KS50aGVuKGZ1bmN0aW9uKHVlKXtyZXR1cm4gV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmcodWUsTXQpLnRoZW4oSyxmdW5jdGlvbih3ZSl7cmV0dXJuIGZlKCJ3YXNtIHN0cmVhbWluZyBjb21waWxlIGZhaWxlZDogIit3ZSksZmUoImZhbGxpbmcgYmFjayB0byBBcnJheUJ1ZmZlciBpbnN0YW50aWF0aW9uIiksdHQoSyl9KX0pfSgpLmNhdGNoKGF0KSx7fX0pKCk7dmFyIFFlPVIuX2Vtc2NyaXB0ZW5fYmluZF9Wb2lkUHRyX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUWU9Ui5fZW1zY3JpcHRlbl9iaW5kX1ZvaWRQdHJfX19kZXN0cm95X19fMD1SLmFzbS5rKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGNuPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyQnVmZmVyX0RlY29kZXJCdWZmZXJfMD1mdW5jdGlvbigpe3JldHVybihjbj1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2RlckJ1ZmZlcl9EZWNvZGVyQnVmZmVyXzA9Ui5hc20ubCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxXZT1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2RlckJ1ZmZlcl9Jbml0XzI9ZnVuY3Rpb24oKXtyZXR1cm4oV2U9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfSW5pdF8yPVIuYXNtLm0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saG49Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJCdWZmZXJfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihobj1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2RlckJ1ZmZlcl9fX2Rlc3Ryb3lfX18wPVIuYXNtLm4pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scG89Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVRyYW5zZm9ybURhdGFfQXR0cmlidXRlVHJhbnNmb3JtRGF0YV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHBvPVIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX0F0dHJpYnV0ZVRyYW5zZm9ybURhdGFfMD1SLmFzbS5vKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEtuPVIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX3RyYW5zZm9ybV90eXBlXzA9ZnVuY3Rpb24oKXtyZXR1cm4oS249Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVRyYW5zZm9ybURhdGFfdHJhbnNmb3JtX3R5cGVfMD1SLmFzbS5wKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFduPVIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oV249Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVRyYW5zZm9ybURhdGFfX19kZXN0cm95X19fMD1SLmFzbS5xKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG1vPVIuX2Vtc2NyaXB0ZW5fYmluZF9HZW9tZXRyeUF0dHJpYnV0ZV9HZW9tZXRyeUF0dHJpYnV0ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKG1vPVIuX2Vtc2NyaXB0ZW5fYmluZF9HZW9tZXRyeUF0dHJpYnV0ZV9HZW9tZXRyeUF0dHJpYnV0ZV8wPVIuYXNtLnIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0samU9Ui5fZW1zY3JpcHRlbl9iaW5kX0dlb21ldHJ5QXR0cmlidXRlX19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oamU9Ui5fZW1zY3JpcHRlbl9iaW5kX0dlb21ldHJ5QXR0cmlidXRlX19fZGVzdHJveV9fXzA9Ui5hc20ucykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxGZT1SLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfUG9pbnRBdHRyaWJ1dGVfMD1mdW5jdGlvbigpe3JldHVybihGZT1SLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfUG9pbnRBdHRyaWJ1dGVfMD1SLmFzbS50KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LERuPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oRG49Ui5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX3NpemVfMD1SLmFzbS51KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFhuPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9HZXRBdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhXzA9ZnVuY3Rpb24oKXtyZXR1cm4oWG49Ui5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX0dldEF0dHJpYnV0ZVRyYW5zZm9ybURhdGFfMD1SLmFzbS52KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEhvPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9hdHRyaWJ1dGVfdHlwZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEhvPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9hdHRyaWJ1dGVfdHlwZV8wPVIuYXNtLncpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scm49Ui5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX2RhdGFfdHlwZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHJuPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9kYXRhX3R5cGVfMD1SLmFzbS54KS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJuPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9udW1fY29tcG9uZW50c18wPWZ1bmN0aW9uKCl7cmV0dXJuKFJuPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV9udW1fY29tcG9uZW50c18wPVIuYXNtLnkpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZnI9Ui5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX25vcm1hbGl6ZWRfMD1mdW5jdGlvbigpe3JldHVybihmcj1SLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfbm9ybWFsaXplZF8wPVIuYXNtLnopLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdG89Ui5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX2J5dGVfc3RyaWRlXzA9ZnVuY3Rpb24oKXtyZXR1cm4odG89Ui5fZW1zY3JpcHRlbl9iaW5kX1BvaW50QXR0cmlidXRlX2J5dGVfc3RyaWRlXzA9Ui5hc20uQSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxxbz1SLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfYnl0ZV9vZmZzZXRfMD1mdW5jdGlvbigpe3JldHVybihxbz1SLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfYnl0ZV9vZmZzZXRfMD1SLmFzbS5CKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LElyPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludEF0dHJpYnV0ZV91bmlxdWVfaWRfMD1mdW5jdGlvbigpe3JldHVybihJcj1SLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfdW5pcXVlX2lkXzA9Ui5hc20uQykuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJcz1SLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihJcz1SLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRBdHRyaWJ1dGVfX19kZXN0cm95X19fMD1SLmFzbS5EKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHZzPVIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtXzA9ZnVuY3Rpb24oKXtyZXR1cm4odnM9Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fMD1SLmFzbS5FKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LCRpPVIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fSW5pdEZyb21BdHRyaWJ1dGVfMT1mdW5jdGlvbigpe3JldHVybigkaT1SLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX0luaXRGcm9tQXR0cmlidXRlXzE9Ui5hc20uRikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx2cj1SLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX3F1YW50aXphdGlvbl9iaXRzXzA9ZnVuY3Rpb24oKXtyZXR1cm4odnI9Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9xdWFudGl6YXRpb25fYml0c18wPVIuYXNtLkcpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWmk9Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9taW5fdmFsdWVfMT1mdW5jdGlvbigpe3JldHVybihaaT1SLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX21pbl92YWx1ZV8xPVIuYXNtLkgpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRnM9Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZVF1YW50aXphdGlvblRyYW5zZm9ybV9yYW5nZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEZzPVIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fcmFuZ2VfMD1SLmFzbS5JKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHdpPVIuX2Vtc2NyaXB0ZW5fYmluZF9BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm1fX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybih3aT1SLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtX19fZGVzdHJveV9fXzA9Ui5hc20uSikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxzbz1SLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtXzA9ZnVuY3Rpb24oKXtyZXR1cm4oc289Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV8wPVIuYXNtLkspLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saG89Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fSW5pdEZyb21BdHRyaWJ1dGVfMT1mdW5jdGlvbigpe3JldHVybihobz1SLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9Jbml0RnJvbUF0dHJpYnV0ZV8xPVIuYXNtLkwpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRnI9Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fcXVhbnRpemF0aW9uX2JpdHNfMD1mdW5jdGlvbigpe3JldHVybihGcj1SLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9xdWFudGl6YXRpb25fYml0c18wPVIuYXNtLk0pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTmM9Ui5fZW1zY3JpcHRlbl9iaW5kX0F0dHJpYnV0ZU9jdGFoZWRyb25UcmFuc2Zvcm1fX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihOYz1SLl9lbXNjcmlwdGVuX2JpbmRfQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybV9fX2Rlc3Ryb3lfX18wPVIuYXNtLk4pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSWM9Ui5fZW1zY3JpcHRlbl9iaW5kX1BvaW50Q2xvdWRfUG9pbnRDbG91ZF8wPWZ1bmN0aW9uKCl7cmV0dXJuKEljPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX1BvaW50Q2xvdWRfMD1SLmFzbS5PKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEJuPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX251bV9hdHRyaWJ1dGVzXzA9ZnVuY3Rpb24oKXtyZXR1cm4oQm49Ui5fZW1zY3JpcHRlbl9iaW5kX1BvaW50Q2xvdWRfbnVtX2F0dHJpYnV0ZXNfMD1SLmFzbS5QKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFRpPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX251bV9wb2ludHNfMD1mdW5jdGlvbigpe3JldHVybihUaT1SLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRDbG91ZF9udW1fcG9pbnRzXzA9Ui5hc20uUSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxMZT1SLl9lbXNjcmlwdGVuX2JpbmRfUG9pbnRDbG91ZF9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKExlPVIuX2Vtc2NyaXB0ZW5fYmluZF9Qb2ludENsb3VkX19fZGVzdHJveV9fXzA9Ui5hc20uUikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxycj1SLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9NZXNoXzA9ZnVuY3Rpb24oKXtyZXR1cm4ocnI9Ui5fZW1zY3JpcHRlbl9iaW5kX01lc2hfTWVzaF8wPVIuYXNtLlMpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVHU9Ui5fZW1zY3JpcHRlbl9iaW5kX01lc2hfbnVtX2ZhY2VzXzA9ZnVuY3Rpb24oKXtyZXR1cm4oVHU9Ui5fZW1zY3JpcHRlbl9iaW5kX01lc2hfbnVtX2ZhY2VzXzA9Ui5hc20uVCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxPdT1SLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9udW1fYXR0cmlidXRlc18wPWZ1bmN0aW9uKCl7cmV0dXJuKE91PVIuX2Vtc2NyaXB0ZW5fYmluZF9NZXNoX251bV9hdHRyaWJ1dGVzXzA9Ui5hc20uVSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxFdT1SLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9udW1fcG9pbnRzXzA9ZnVuY3Rpb24oKXtyZXR1cm4oRXU9Ui5fZW1zY3JpcHRlbl9iaW5kX01lc2hfbnVtX3BvaW50c18wPVIuYXNtLlYpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdmM9Ui5fZW1zY3JpcHRlbl9iaW5kX01lc2hfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybih2Yz1SLl9lbXNjcmlwdGVuX2JpbmRfTWVzaF9fX2Rlc3Ryb3lfX18wPVIuYXNtLlcpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRmM9Ui5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhX01ldGFkYXRhXzA9ZnVuY3Rpb24oKXtyZXR1cm4oRmM9Ui5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhX01ldGFkYXRhXzA9Ui5hc20uWCkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxxYT1SLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihxYT1SLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFfX19kZXN0cm95X19fMD1SLmFzbS5ZKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFJ1PVIuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfY29kZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFJ1PVIuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfY29kZV8wPVIuYXNtLlopLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sS2E9Ui5fZW1zY3JpcHRlbl9iaW5kX1N0YXR1c19va18wPWZ1bmN0aW9uKCl7cmV0dXJuKEthPVIuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfb2tfMD1SLmFzbS5fKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFFpPVIuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfZXJyb3JfbXNnXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUWk9Ui5fZW1zY3JpcHRlbl9iaW5kX1N0YXR1c19lcnJvcl9tc2dfMD1SLmFzbS4kKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFN1PVIuX2Vtc2NyaXB0ZW5fYmluZF9TdGF0dXNfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihTdT1SLl9lbXNjcmlwdGVuX2JpbmRfU3RhdHVzX19fZGVzdHJveV9fXzA9Ui5hc20uYWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0seHU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X0RyYWNvRmxvYXQzMkFycmF5XzA9ZnVuY3Rpb24oKXtyZXR1cm4oeHU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X0RyYWNvRmxvYXQzMkFycmF5XzA9Ui5hc20uYmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQ3U9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X0dldFZhbHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oQ3U9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X0dldFZhbHVlXzE9Ui5hc20uY2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSmk9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvRmxvYXQzMkFycmF5X3NpemVfMD1mdW5jdGlvbigpe3JldHVybihKaT1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29GbG9hdDMyQXJyYXlfc2l6ZV8wPVIuYXNtLmRhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHRzPVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0Zsb2F0MzJBcnJheV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKHRzPVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0Zsb2F0MzJBcnJheV9fX2Rlc3Ryb3lfX18wPVIuYXNtLmVhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LExjPVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9EcmFjb0ludDhBcnJheV8wPWZ1bmN0aW9uKCl7cmV0dXJuKExjPVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9EcmFjb0ludDhBcnJheV8wPVIuYXNtLmZhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFB1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9HZXRWYWx1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKFB1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9HZXRWYWx1ZV8xPVIuYXNtLmdhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LE11PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDhBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oTXU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50OEFycmF5X3NpemVfMD1SLmFzbS5oYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxMcj1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQ4QXJyYXlfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihMcj1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQ4QXJyYXlfX19kZXN0cm95X19fMD1SLmFzbS5pYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxXYT1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X0RyYWNvVUludDhBcnJheV8wPWZ1bmN0aW9uKCl7cmV0dXJuKFdhPVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQ4QXJyYXlfRHJhY29VSW50OEFycmF5XzA9Ui5hc20uamEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWGE9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9HZXRWYWx1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKFhhPVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQ4QXJyYXlfR2V0VmFsdWVfMT1SLmFzbS5rYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxEYz1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X3NpemVfMD1mdW5jdGlvbigpe3JldHVybihEYz1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X3NpemVfMD1SLmFzbS5sYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxOdT1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50OEFycmF5X19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oTnU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDhBcnJheV9fX2Rlc3Ryb3lfX18wPVIuYXNtLm1hKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEJjPVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfRHJhY29JbnQxNkFycmF5XzA9ZnVuY3Rpb24oKXtyZXR1cm4oQmM9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9EcmFjb0ludDE2QXJyYXlfMD1SLmFzbS5uYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJdT1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQxNkFycmF5X0dldFZhbHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oSXU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MTZBcnJheV9HZXRWYWx1ZV8xPVIuYXNtLm9hKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHZ1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfc2l6ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKHZ1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfc2l6ZV8wPVIuYXNtLnBhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEZ1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDE2QXJyYXlfX19kZXN0cm95X19fMD1mdW5jdGlvbigpe3JldHVybihGdT1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQxNkFycmF5X19fZGVzdHJveV9fXzA9Ui5hc20ucWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTHU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDE2QXJyYXlfRHJhY29VSW50MTZBcnJheV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEx1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X0RyYWNvVUludDE2QXJyYXlfMD1SLmFzbS5yYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxEdT1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9HZXRWYWx1ZV8xPWZ1bmN0aW9uKCl7cmV0dXJuKER1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X0dldFZhbHVlXzE9Ui5hc20uc2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sQnU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDE2QXJyYXlfc2l6ZV8wPWZ1bmN0aW9uKCl7cmV0dXJuKEJ1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X3NpemVfMD1SLmFzbS50YSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxZYT1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MTZBcnJheV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKFlhPVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQxNkFycmF5X19fZGVzdHJveV9fXzA9Ui5hc20udWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVXU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9EcmFjb0ludDMyQXJyYXlfMD1mdW5jdGlvbigpe3JldHVybihVdT1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQzMkFycmF5X0RyYWNvSW50MzJBcnJheV8wPVIuYXNtLnZhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGt1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDMyQXJyYXlfR2V0VmFsdWVfMT1mdW5jdGlvbigpe3JldHVybihrdT1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29JbnQzMkFycmF5X0dldFZhbHVlXzE9Ui5hc20ud2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sR3U9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oR3U9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9zaXplXzA9Ui5hc20ueGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVnU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvSW50MzJBcnJheV9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKFZ1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb0ludDMyQXJyYXlfX19kZXN0cm95X19fMD1SLmFzbS55YSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxlcz1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MzJBcnJheV9EcmFjb1VJbnQzMkFycmF5XzA9ZnVuY3Rpb24oKXtyZXR1cm4oZXM9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfRHJhY29VSW50MzJBcnJheV8wPVIuYXNtLnphKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHp1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQzMkFycmF5X0dldFZhbHVlXzE9ZnVuY3Rpb24oKXtyZXR1cm4oenU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfR2V0VmFsdWVfMT1SLmFzbS5BYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxqdT1SLl9lbXNjcmlwdGVuX2JpbmRfRHJhY29VSW50MzJBcnJheV9zaXplXzA9ZnVuY3Rpb24oKXtyZXR1cm4oanU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfc2l6ZV8wPVIuYXNtLkJhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LExzPVIuX2Vtc2NyaXB0ZW5fYmluZF9EcmFjb1VJbnQzMkFycmF5X19fZGVzdHJveV9fXzA9ZnVuY3Rpb24oKXtyZXR1cm4oTHM9Ui5fZW1zY3JpcHRlbl9iaW5kX0RyYWNvVUludDMyQXJyYXlfX19kZXN0cm95X19fMD1SLmFzbS5DYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxIdT1SLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX01ldGFkYXRhUXVlcmllcl8wPWZ1bmN0aW9uKCl7cmV0dXJuKEh1PVIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfTWV0YWRhdGFRdWVyaWVyXzA9Ui5hc20uRGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scXU9Ui5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9IYXNFbnRyeV8yPWZ1bmN0aW9uKCl7cmV0dXJuKHF1PVIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfSGFzRW50cnlfMj1SLmFzbS5FYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx1cj1SLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEludEVudHJ5XzI9ZnVuY3Rpb24oKXtyZXR1cm4odXI9Ui5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXRJbnRFbnRyeV8yPVIuYXNtLkZhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LCRhPVIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0SW50RW50cnlBcnJheV8zPWZ1bmN0aW9uKCl7cmV0dXJuKCRhPVIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0SW50RW50cnlBcnJheV8zPVIuYXNtLkdhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEt1PVIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0RG91YmxlRW50cnlfMj1mdW5jdGlvbigpe3JldHVybihLdT1SLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldERvdWJsZUVudHJ5XzI9Ui5hc20uSGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sV3U9Ui5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9HZXRTdHJpbmdFbnRyeV8yPWZ1bmN0aW9uKCl7cmV0dXJuKFd1PVIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0U3RyaW5nRW50cnlfMj1SLmFzbS5JYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxYdT1SLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX051bUVudHJpZXNfMT1mdW5jdGlvbigpe3JldHVybihYdT1SLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX051bUVudHJpZXNfMT1SLmFzbS5KYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxLbz1SLl9lbXNjcmlwdGVuX2JpbmRfTWV0YWRhdGFRdWVyaWVyX0dldEVudHJ5TmFtZV8yPWZ1bmN0aW9uKCl7cmV0dXJuKEtvPVIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfR2V0RW50cnlOYW1lXzI9Ui5hc20uS2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWmE9Ui5fZW1zY3JpcHRlbl9iaW5kX01ldGFkYXRhUXVlcmllcl9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKFphPVIuX2Vtc2NyaXB0ZW5fYmluZF9NZXRhZGF0YVF1ZXJpZXJfX19kZXN0cm95X19fMD1SLmFzbS5MYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxRYT1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVyXzA9ZnVuY3Rpb24oKXtyZXR1cm4oUWE9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfRGVjb2Rlcl8wPVIuYXNtLk1hKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LERzPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUFycmF5VG9Qb2ludENsb3VkXzM9ZnVuY3Rpb24oKXtyZXR1cm4oRHM9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfRGVjb2RlQXJyYXlUb1BvaW50Q2xvdWRfMz1SLmFzbS5OYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxZdT1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVBcnJheVRvTWVzaF8zPWZ1bmN0aW9uKCl7cmV0dXJuKFl1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0RlY29kZUFycmF5VG9NZXNoXzM9Ui5hc20uT2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVWM9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSWRfMj1mdW5jdGlvbigpe3JldHVybihVYz1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJZF8yPVIuYXNtLlBhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LCR1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUlkQnlOYW1lXzI9ZnVuY3Rpb24oKXtyZXR1cm4oJHU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSWRCeU5hbWVfMj1SLmFzbS5RYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxKYT1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJZEJ5TWV0YWRhdGFFbnRyeV8zPWZ1bmN0aW9uKCl7cmV0dXJuKEphPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUlkQnlNZXRhZGF0YUVudHJ5XzM9Ui5hc20uUmEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdGY9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlXzI9ZnVuY3Rpb24oKXtyZXR1cm4odGY9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlXzI9Ui5hc20uU2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sWnU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlQnlVbmlxdWVJZF8yPWZ1bmN0aW9uKCl7cmV0dXJuKFp1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUJ5VW5pcXVlSWRfMj1SLmFzbS5UYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxRdT1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRNZXRhZGF0YV8xPWZ1bmN0aW9uKCl7cmV0dXJuKFF1PVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldE1ldGFkYXRhXzE9Ui5hc20uVWEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sa2M9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlTWV0YWRhdGFfMj1mdW5jdGlvbigpe3JldHVybihrYz1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVNZXRhZGF0YV8yPVIuYXNtLlZhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHdvPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEZhY2VGcm9tTWVzaF8zPWZ1bmN0aW9uKCl7cmV0dXJuKHdvPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEZhY2VGcm9tTWVzaF8zPVIuYXNtLldhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEdjPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldFRyaWFuZ2xlU3RyaXBzRnJvbU1lc2hfMj1mdW5jdGlvbigpe3JldHVybihHYz1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRUcmlhbmdsZVN0cmlwc0Zyb21NZXNoXzI9Ui5hc20uWGEpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sSnU9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0VHJpYW5nbGVzVUludDE2QXJyYXlfMz1mdW5jdGlvbigpe3JldHVybihKdT1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRUcmlhbmdsZXNVSW50MTZBcnJheV8zPVIuYXNtLllhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHRsPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldFRyaWFuZ2xlc1VJbnQzMkFycmF5XzM9ZnVuY3Rpb24oKXtyZXR1cm4odGw9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0VHJpYW5nbGVzVUludDMyQXJyYXlfMz1SLmFzbS5aYSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxlbD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVGbG9hdF8zPWZ1bmN0aW9uKCl7cmV0dXJuKGVsPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUZsb2F0XzM9Ui5hc20uX2EpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sbHI9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlRmxvYXRGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihscj1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVGbG9hdEZvckFsbFBvaW50c18zPVIuYXNtLiRhKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG5sPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludEZvckFsbFBvaW50c18zPWZ1bmN0aW9uKCl7cmV0dXJuKG5sPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludEZvckFsbFBvaW50c18zPVIuYXNtLmFiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG9sPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludDhGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihvbD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnQ4Rm9yQWxsUG9pbnRzXzM9Ui5hc20uYmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0scmw9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihybD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVVSW50OEZvckFsbFBvaW50c18zPVIuYXNtLmNiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEJzPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludDE2Rm9yQWxsUG9pbnRzXzM9ZnVuY3Rpb24oKXtyZXR1cm4oQnM9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlSW50MTZGb3JBbGxQb2ludHNfMz1SLmFzbS5kYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxpbD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVVSW50MTZGb3JBbGxQb2ludHNfMz1mdW5jdGlvbigpe3JldHVybihpbD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVVSW50MTZGb3JBbGxQb2ludHNfMz1SLmFzbS5lYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxPaT1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRBdHRyaWJ1dGVJbnQzMkZvckFsbFBvaW50c18zPWZ1bmN0aW9uKCl7cmV0dXJuKE9pPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX0dldEF0dHJpYnV0ZUludDMyRm9yQWxsUG9pbnRzXzM9Ui5hc20uZmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sc2w9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlVUludDMyRm9yQWxsUG9pbnRzXzM9ZnVuY3Rpb24oKXtyZXR1cm4oc2w9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlVUludDMyRm9yQWxsUG9pbnRzXzM9Ui5hc20uZ2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sY2w9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlRGF0YUFycmF5Rm9yQWxsUG9pbnRzXzU9ZnVuY3Rpb24oKXtyZXR1cm4oY2w9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfR2V0QXR0cmlidXRlRGF0YUFycmF5Rm9yQWxsUG9pbnRzXzU9Ui5hc20uaGIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sYWw9Ui5fZW1zY3JpcHRlbl9iaW5kX0RlY29kZXJfU2tpcEF0dHJpYnV0ZVRyYW5zZm9ybV8xPWZ1bmN0aW9uKCl7cmV0dXJuKGFsPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX1NraXBBdHRyaWJ1dGVUcmFuc2Zvcm1fMT1SLmFzbS5pYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxmbD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRFbmNvZGVkR2VvbWV0cnlUeXBlX0RlcHJlY2F0ZWRfMT1mdW5jdGlvbigpe3JldHVybihmbD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9HZXRFbmNvZGVkR2VvbWV0cnlUeXBlX0RlcHJlY2F0ZWRfMT1SLmFzbS5qYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx1bD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVCdWZmZXJUb1BvaW50Q2xvdWRfMj1mdW5jdGlvbigpe3JldHVybih1bD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVCdWZmZXJUb1BvaW50Q2xvdWRfMj1SLmFzbS5rYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxsbD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVCdWZmZXJUb01lc2hfMj1mdW5jdGlvbigpe3JldHVybihsbD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9EZWNvZGVCdWZmZXJUb01lc2hfMj1SLmFzbS5sYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxwbD1SLl9lbXNjcmlwdGVuX2JpbmRfRGVjb2Rlcl9fX2Rlc3Ryb3lfX18wPWZ1bmN0aW9uKCl7cmV0dXJuKHBsPVIuX2Vtc2NyaXB0ZW5fYmluZF9EZWNvZGVyX19fZGVzdHJveV9fXzA9Ui5hc20ubWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZGw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX0lOVkFMSURfVFJBTlNGT1JNPWZ1bmN0aW9uKCl7cmV0dXJuKGRsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9JTlZBTElEX1RSQU5TRk9STT1SLmFzbS5uYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxtbD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fQXR0cmlidXRlVHJhbnNmb3JtVHlwZV9BVFRSSUJVVEVfTk9fVFJBTlNGT1JNPWZ1bmN0aW9uKCl7cmV0dXJuKG1sPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9OT19UUkFOU0ZPUk09Ui5hc20ub2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0saGw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX1FVQU5USVpBVElPTl9UUkFOU0ZPUk09ZnVuY3Rpb24oKXtyZXR1cm4oaGw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX1FVQU5USVpBVElPTl9UUkFOU0ZPUk09Ui5hc20ucGIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sX2w9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0F0dHJpYnV0ZVRyYW5zZm9ybVR5cGVfQVRUUklCVVRFX09DVEFIRURST05fVFJBTlNGT1JNPWZ1bmN0aW9uKCl7cmV0dXJuKF9sPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19BdHRyaWJ1dGVUcmFuc2Zvcm1UeXBlX0FUVFJJQlVURV9PQ1RBSEVEUk9OX1RSQU5TRk9STT1SLmFzbS5xYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxucz1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9JTlZBTElEPWZ1bmN0aW9uKCl7cmV0dXJuKG5zPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX0lOVkFMSUQ9Ui5hc20ucmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0seWw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfUE9TSVRJT049ZnVuY3Rpb24oKXtyZXR1cm4oeWw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfUE9TSVRJT049Ui5hc20uc2IpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sZ2w9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfTk9STUFMPWZ1bmN0aW9uKCl7cmV0dXJuKGdsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX05PUk1BTD1SLmFzbS50YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxVcz1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9DT0xPUj1mdW5jdGlvbigpe3JldHVybihVcz1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9DT0xPUj1SLmFzbS51YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxWYz1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fR2VvbWV0cnlBdHRyaWJ1dGVfVHlwZV9URVhfQ09PUkQ9ZnVuY3Rpb24oKXtyZXR1cm4oVmM9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfVEVYX0NPT1JEPVIuYXNtLnZiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEFsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19HZW9tZXRyeUF0dHJpYnV0ZV9UeXBlX0dFTkVSSUM9ZnVuY3Rpb24oKXtyZXR1cm4oQWw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0dlb21ldHJ5QXR0cmlidXRlX1R5cGVfR0VORVJJQz1SLmFzbS53YikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxlZj1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRW5jb2RlZEdlb21ldHJ5VHlwZV9JTlZBTElEX0dFT01FVFJZX1RZUEU9ZnVuY3Rpb24oKXtyZXR1cm4oZWY9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0VuY29kZWRHZW9tZXRyeVR5cGVfSU5WQUxJRF9HRU9NRVRSWV9UWVBFPVIuYXNtLnhiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGJsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19FbmNvZGVkR2VvbWV0cnlUeXBlX1BPSU5UX0NMT1VEPWZ1bmN0aW9uKCl7cmV0dXJuKGJsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19FbmNvZGVkR2VvbWV0cnlUeXBlX1BPSU5UX0NMT1VEPVIuYXNtLnliKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHdsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19FbmNvZGVkR2VvbWV0cnlUeXBlX1RSSUFOR1VMQVJfTUVTSD1mdW5jdGlvbigpe3JldHVybih3bD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRW5jb2RlZEdlb21ldHJ5VHlwZV9UUklBTkdVTEFSX01FU0g9Ui5hc20uemIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVGw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVkFMSUQ9ZnVuY3Rpb24oKXtyZXR1cm4oVGw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVkFMSUQ9Ui5hc20uQWIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sT2w9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDg9ZnVuY3Rpb24oKXtyZXR1cm4oT2w9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDg9Ui5hc20uQmIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sRWw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQ4PWZ1bmN0aW9uKCl7cmV0dXJuKEVsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UOD1SLmFzbS5DYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxSbD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UMTY9ZnVuY3Rpb24oKXtyZXR1cm4oUmw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDE2PVIuYXNtLkRiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFNsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UMTY9ZnVuY3Rpb24oKXtyZXR1cm4oU2w9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQxNj1SLmFzbS5FYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx4bD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UMzI9ZnVuY3Rpb24oKXtyZXR1cm4oeGw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDMyPVIuYXNtLkZiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LG5mPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UMzI9ZnVuY3Rpb24oKXtyZXR1cm4obmY9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQzMj1SLmFzbS5HYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxDbD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfSU5UNjQ9ZnVuY3Rpb24oKXtyZXR1cm4oQ2w9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX0lOVDY0PVIuYXNtLkhiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LFBsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19EYXRhVHlwZV9EVF9VSU5UNjQ9ZnVuY3Rpb24oKXtyZXR1cm4oUGw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1VJTlQ2ND1SLmFzbS5JYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxNbD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfRkxPQVQzMj1mdW5jdGlvbigpe3JldHVybihNbD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfRkxPQVQzMj1SLmFzbS5KYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxObD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfRkxPQVQ2ND1mdW5jdGlvbigpe3JldHVybihObD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfRkxPQVQ2ND1SLmFzbS5LYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxJbD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfQk9PTD1mdW5jdGlvbigpe3JldHVybihJbD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfQk9PTD1SLmFzbS5MYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSx2bD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fRGF0YVR5cGVfRFRfVFlQRVNfQ09VTlQ9ZnVuY3Rpb24oKXtyZXR1cm4odmw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX0RhdGFUeXBlX0RUX1RZUEVTX0NPVU5UPVIuYXNtLk1iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEZsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX09LPWZ1bmN0aW9uKCl7cmV0dXJuKEZsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX09LPVIuYXNtLk5iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LGtzPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0RSQUNPX0VSUk9SPWZ1bmN0aW9uKCl7cmV0dXJuKGtzPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0RSQUNPX0VSUk9SPVIuYXNtLk9iKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LExsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lPX0VSUk9SPWZ1bmN0aW9uKCl7cmV0dXJuKExsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lPX0VSUk9SPVIuYXNtLlBiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LERsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lOVkFMSURfUEFSQU1FVEVSPWZ1bmN0aW9uKCl7cmV0dXJuKERsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX0lOVkFMSURfUEFSQU1FVEVSPVIuYXNtLlFiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LEJsPVIuX2Vtc2NyaXB0ZW5fZW51bV9kcmFjb19TdGF0dXNDb2RlX1VOU1VQUE9SVEVEX1ZFUlNJT049ZnVuY3Rpb24oKXtyZXR1cm4oQmw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfVU5TVVBQT1JURURfVkVSU0lPTj1SLmFzbS5SYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxVbD1SLl9lbXNjcmlwdGVuX2VudW1fZHJhY29fU3RhdHVzQ29kZV9VTktOT1dOX1ZFUlNJT049ZnVuY3Rpb24oKXtyZXR1cm4oVWw9Ui5fZW1zY3JpcHRlbl9lbnVtX2RyYWNvX1N0YXR1c0NvZGVfVU5LTk9XTl9WRVJTSU9OPVIuYXNtLlNiKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O1IuX21hbGxvYz1mdW5jdGlvbigpe3JldHVybihSLl9tYWxsb2M9Ui5hc20uVGIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sUi5fZnJlZT1mdW5jdGlvbigpe3JldHVybihSLl9mcmVlPVIuYXNtLlViKS5hcHBseShudWxsLGFyZ3VtZW50cyl9O3ZhciBrbD1mdW5jdGlvbigpe3JldHVybihrbD1SLmFzbS5WYikuYXBwbHkobnVsbCxhcmd1bWVudHMpfTtSLl9fX3N0YXJ0X2VtX2pzPTE1ODU2LFIuX19fc3RvcF9lbV9qcz0xNTk1NDt2YXIgb2Y7aWYoZG49ZnVuY3Rpb24gVigpe29mfHxwKCksb2Z8fChkbj1WKX0sUi5wcmVJbml0KWZvcih0eXBlb2YgUi5wcmVJbml0PT0iZnVuY3Rpb24iJiYoUi5wcmVJbml0PVtSLnByZUluaXRdKTswPFIucHJlSW5pdC5sZW5ndGg7KVIucHJlSW5pdC5wb3AoKSgpO3AoKSxkLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGQucHJvdG90eXBlKSxkLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1kLGQucHJvdG90eXBlLl9fY2xhc3NfXz1kLGQuX19jYWNoZV9fPXt9LFIuV3JhcHBlck9iamVjdD1kLFIuZ2V0Q2FjaGU9aCxSLndyYXBQb2ludGVyPV8sUi5jYXN0T2JqZWN0PWZ1bmN0aW9uKFYsSyl7cmV0dXJuIF8oVi5wdHIsSyl9LFIuTlVMTD1fKDApLFIuZGVzdHJveT1mdW5jdGlvbihWKXtpZighVi5fX2Rlc3Ryb3lfXyl0aHJvdyJFcnJvcjogQ2Fubm90IGRlc3Ryb3kgb2JqZWN0LiAoRGlkIHlvdSBjcmVhdGUgaXQgeW91cnNlbGY/KSI7Vi5fX2Rlc3Ryb3lfXygpLGRlbGV0ZSBoKFYuX19jbGFzc19fKVtWLnB0cl19LFIuY29tcGFyZT1mdW5jdGlvbihWLEspe3JldHVybiBWLnB0cj09PUsucHRyfSxSLmdldFBvaW50ZXI9ZnVuY3Rpb24oVil7cmV0dXJuIFYucHRyfSxSLmdldENsYXNzPWZ1bmN0aW9uKFYpe3JldHVybiBWLl9fY2xhc3NfX307dmFyIHhlPXtidWZmZXI6MCxzaXplOjAscG9zOjAsdGVtcHM6W10sbmVlZGVkOjAscHJlcGFyZTpmdW5jdGlvbigpe2lmKHhlLm5lZWRlZCl7Zm9yKHZhciBWPTA7Vjx4ZS50ZW1wcy5sZW5ndGg7VisrKVIuX2ZyZWUoeGUudGVtcHNbVl0pO3hlLnRlbXBzLmxlbmd0aD0wLFIuX2ZyZWUoeGUuYnVmZmVyKSx4ZS5idWZmZXI9MCx4ZS5zaXplKz14ZS5uZWVkZWQseGUubmVlZGVkPTB9eGUuYnVmZmVyfHwoeGUuc2l6ZSs9MTI4LHhlLmJ1ZmZlcj1SLl9tYWxsb2MoeGUuc2l6ZSkseGUuYnVmZmVyfHxzKHZvaWQgMCkpLHhlLnBvcz0wfSxhbGxvYzpmdW5jdGlvbihWLEspe3JldHVybiB4ZS5idWZmZXJ8fHModm9pZCAwKSxWPVYubGVuZ3RoKksuQllURVNfUEVSX0VMRU1FTlQsVj1WKzcmLTgseGUucG9zK1Y+PXhlLnNpemU/KDA8Vnx8cyh2b2lkIDApLHhlLm5lZWRlZCs9VixLPVIuX21hbGxvYyhWKSx4ZS50ZW1wcy5wdXNoKEspKTooSz14ZS5idWZmZXIreGUucG9zLHhlLnBvcys9ViksS30sY29weTpmdW5jdGlvbihWLEssdHQpe3N3aXRjaCh0dD4+Pj0wLEsuQllURVNfUEVSX0VMRU1FTlQpe2Nhc2UgMjp0dD4+Pj0xO2JyZWFrO2Nhc2UgNDp0dD4+Pj0yO2JyZWFrO2Nhc2UgODp0dD4+Pj0zfWZvcih2YXIgTXQ9MDtNdDxWLmxlbmd0aDtNdCsrKUtbdHQrTXRdPVZbTXRdfX07cmV0dXJuIHcucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZC5wcm90b3R5cGUpLHcucHJvdG90eXBlLmNvbnN0cnVjdG9yPXcsdy5wcm90b3R5cGUuX19jbGFzc19fPXcsdy5fX2NhY2hlX189e30sUi5Wb2lkUHRyPXcsdy5wcm90b3R5cGUuX19kZXN0cm95X189dy5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtRZSh0aGlzLnB0cil9LE8ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZC5wcm90b3R5cGUpLE8ucHJvdG90eXBlLmNvbnN0cnVjdG9yPU8sTy5wcm90b3R5cGUuX19jbGFzc19fPU8sTy5fX2NhY2hlX189e30sUi5EZWNvZGVyQnVmZmVyPU8sTy5wcm90b3R5cGUuSW5pdD1PLnByb3RvdHlwZS5Jbml0PWZ1bmN0aW9uKFYsSyl7dmFyIHR0PXRoaXMucHRyO3hlLnByZXBhcmUoKSx0eXBlb2YgVj09Im9iamVjdCImJihWPWIoVikpLEsmJnR5cGVvZiBLPT0ib2JqZWN0IiYmKEs9Sy5wdHIpLFdlKHR0LFYsSyl9LE8ucHJvdG90eXBlLl9fZGVzdHJveV9fPU8ucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7aG4odGhpcy5wdHIpfSxFLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGQucHJvdG90eXBlKSxFLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1FLEUucHJvdG90eXBlLl9fY2xhc3NfXz1FLEUuX19jYWNoZV9fPXt9LFIuQXR0cmlidXRlVHJhbnNmb3JtRGF0YT1FLEUucHJvdG90eXBlLnRyYW5zZm9ybV90eXBlPUUucHJvdG90eXBlLnRyYW5zZm9ybV90eXBlPWZ1bmN0aW9uKCl7cmV0dXJuIEtuKHRoaXMucHRyKX0sRS5wcm90b3R5cGUuX19kZXN0cm95X189RS5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtXbih0aGlzLnB0cil9LFQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZC5wcm90b3R5cGUpLFQucHJvdG90eXBlLmNvbnN0cnVjdG9yPVQsVC5wcm90b3R5cGUuX19jbGFzc19fPVQsVC5fX2NhY2hlX189e30sUi5HZW9tZXRyeUF0dHJpYnV0ZT1ULFQucHJvdG90eXBlLl9fZGVzdHJveV9fPVQucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7amUodGhpcy5wdHIpfSx4LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGQucHJvdG90eXBlKSx4LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj14LHgucHJvdG90eXBlLl9fY2xhc3NfXz14LHguX19jYWNoZV9fPXt9LFIuUG9pbnRBdHRyaWJ1dGU9eCx4LnByb3RvdHlwZS5zaXplPXgucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gRG4odGhpcy5wdHIpfSx4LnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVUcmFuc2Zvcm1EYXRhPXgucHJvdG90eXBlLkdldEF0dHJpYnV0ZVRyYW5zZm9ybURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gXyhYbih0aGlzLnB0ciksRSl9LHgucHJvdG90eXBlLmF0dHJpYnV0ZV90eXBlPXgucHJvdG90eXBlLmF0dHJpYnV0ZV90eXBlPWZ1bmN0aW9uKCl7cmV0dXJuIEhvKHRoaXMucHRyKX0seC5wcm90b3R5cGUuZGF0YV90eXBlPXgucHJvdG90eXBlLmRhdGFfdHlwZT1mdW5jdGlvbigpe3JldHVybiBybih0aGlzLnB0cil9LHgucHJvdG90eXBlLm51bV9jb21wb25lbnRzPXgucHJvdG90eXBlLm51bV9jb21wb25lbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIFJuKHRoaXMucHRyKX0seC5wcm90b3R5cGUubm9ybWFsaXplZD14LnByb3RvdHlwZS5ub3JtYWxpemVkPWZ1bmN0aW9uKCl7cmV0dXJuISFmcih0aGlzLnB0cil9LHgucHJvdG90eXBlLmJ5dGVfc3RyaWRlPXgucHJvdG90eXBlLmJ5dGVfc3RyaWRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRvKHRoaXMucHRyKX0seC5wcm90b3R5cGUuYnl0ZV9vZmZzZXQ9eC5wcm90b3R5cGUuYnl0ZV9vZmZzZXQ9ZnVuY3Rpb24oKXtyZXR1cm4gcW8odGhpcy5wdHIpfSx4LnByb3RvdHlwZS51bmlxdWVfaWQ9eC5wcm90b3R5cGUudW5pcXVlX2lkPWZ1bmN0aW9uKCl7cmV0dXJuIElyKHRoaXMucHRyKX0seC5wcm90b3R5cGUuX19kZXN0cm95X189eC5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtJcyh0aGlzLnB0cil9LE0ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZC5wcm90b3R5cGUpLE0ucHJvdG90eXBlLmNvbnN0cnVjdG9yPU0sTS5wcm90b3R5cGUuX19jbGFzc19fPU0sTS5fX2NhY2hlX189e30sUi5BdHRyaWJ1dGVRdWFudGl6YXRpb25UcmFuc2Zvcm09TSxNLnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT1NLnByb3RvdHlwZS5Jbml0RnJvbUF0dHJpYnV0ZT1mdW5jdGlvbihWKXt2YXIgSz10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksISEkaShLLFYpfSxNLnByb3RvdHlwZS5xdWFudGl6YXRpb25fYml0cz1NLnByb3RvdHlwZS5xdWFudGl6YXRpb25fYml0cz1mdW5jdGlvbigpe3JldHVybiB2cih0aGlzLnB0cil9LE0ucHJvdG90eXBlLm1pbl92YWx1ZT1NLnByb3RvdHlwZS5taW5fdmFsdWU9ZnVuY3Rpb24oVil7dmFyIEs9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLFppKEssVil9LE0ucHJvdG90eXBlLnJhbmdlPU0ucHJvdG90eXBlLnJhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIEZzKHRoaXMucHRyKX0sTS5wcm90b3R5cGUuX19kZXN0cm95X189TS5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXt3aSh0aGlzLnB0cil9LE4ucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZC5wcm90b3R5cGUpLE4ucHJvdG90eXBlLmNvbnN0cnVjdG9yPU4sTi5wcm90b3R5cGUuX19jbGFzc19fPU4sTi5fX2NhY2hlX189e30sUi5BdHRyaWJ1dGVPY3RhaGVkcm9uVHJhbnNmb3JtPU4sTi5wcm90b3R5cGUuSW5pdEZyb21BdHRyaWJ1dGU9Ti5wcm90b3R5cGUuSW5pdEZyb21BdHRyaWJ1dGU9ZnVuY3Rpb24oVil7dmFyIEs9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLCEhaG8oSyxWKX0sTi5wcm90b3R5cGUucXVhbnRpemF0aW9uX2JpdHM9Ti5wcm90b3R5cGUucXVhbnRpemF0aW9uX2JpdHM9ZnVuY3Rpb24oKXtyZXR1cm4gRnIodGhpcy5wdHIpfSxOLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1OLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe05jKHRoaXMucHRyKX0sRi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShkLnByb3RvdHlwZSksRi5wcm90b3R5cGUuY29uc3RydWN0b3I9RixGLnByb3RvdHlwZS5fX2NsYXNzX189RixGLl9fY2FjaGVfXz17fSxSLlBvaW50Q2xvdWQ9RixGLnByb3RvdHlwZS5udW1fYXR0cmlidXRlcz1GLnByb3RvdHlwZS5udW1fYXR0cmlidXRlcz1mdW5jdGlvbigpe3JldHVybiBCbih0aGlzLnB0cil9LEYucHJvdG90eXBlLm51bV9wb2ludHM9Ri5wcm90b3R5cGUubnVtX3BvaW50cz1mdW5jdGlvbigpe3JldHVybiBUaSh0aGlzLnB0cil9LEYucHJvdG90eXBlLl9fZGVzdHJveV9fPUYucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7TGUodGhpcy5wdHIpfSxJLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGQucHJvdG90eXBlKSxJLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1JLEkucHJvdG90eXBlLl9fY2xhc3NfXz1JLEkuX19jYWNoZV9fPXt9LFIuTWVzaD1JLEkucHJvdG90eXBlLm51bV9mYWNlcz1JLnByb3RvdHlwZS5udW1fZmFjZXM9ZnVuY3Rpb24oKXtyZXR1cm4gVHUodGhpcy5wdHIpfSxJLnByb3RvdHlwZS5udW1fYXR0cmlidXRlcz1JLnByb3RvdHlwZS5udW1fYXR0cmlidXRlcz1mdW5jdGlvbigpe3JldHVybiBPdSh0aGlzLnB0cil9LEkucHJvdG90eXBlLm51bV9wb2ludHM9SS5wcm90b3R5cGUubnVtX3BvaW50cz1mdW5jdGlvbigpe3JldHVybiBFdSh0aGlzLnB0cil9LEkucHJvdG90eXBlLl9fZGVzdHJveV9fPUkucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7dmModGhpcy5wdHIpfSx2LnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGQucHJvdG90eXBlKSx2LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj12LHYucHJvdG90eXBlLl9fY2xhc3NfXz12LHYuX19jYWNoZV9fPXt9LFIuTWV0YWRhdGE9dix2LnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz12LnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe3FhKHRoaXMucHRyKX0sQi5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShkLnByb3RvdHlwZSksQi5wcm90b3R5cGUuY29uc3RydWN0b3I9QixCLnByb3RvdHlwZS5fX2NsYXNzX189QixCLl9fY2FjaGVfXz17fSxSLlN0YXR1cz1CLEIucHJvdG90eXBlLmNvZGU9Qi5wcm90b3R5cGUuY29kZT1mdW5jdGlvbigpe3JldHVybiBSdSh0aGlzLnB0cil9LEIucHJvdG90eXBlLm9rPUIucHJvdG90eXBlLm9rPWZ1bmN0aW9uKCl7cmV0dXJuISFLYSh0aGlzLnB0cil9LEIucHJvdG90eXBlLmVycm9yX21zZz1CLnByb3RvdHlwZS5lcnJvcl9tc2c9ZnVuY3Rpb24oKXtyZXR1cm4gcihRaSh0aGlzLnB0cikpfSxCLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1CLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe1N1KHRoaXMucHRyKX0sQS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShkLnByb3RvdHlwZSksQS5wcm90b3R5cGUuY29uc3RydWN0b3I9QSxBLnByb3RvdHlwZS5fX2NsYXNzX189QSxBLl9fY2FjaGVfXz17fSxSLkRyYWNvRmxvYXQzMkFycmF5PUEsQS5wcm90b3R5cGUuR2V0VmFsdWU9QS5wcm90b3R5cGUuR2V0VmFsdWU9ZnVuY3Rpb24oVil7dmFyIEs9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEN1KEssVil9LEEucHJvdG90eXBlLnNpemU9QS5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiBKaSh0aGlzLnB0cil9LEEucHJvdG90eXBlLl9fZGVzdHJveV9fPUEucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7dHModGhpcy5wdHIpfSxTLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGQucHJvdG90eXBlKSxTLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1TLFMucHJvdG90eXBlLl9fY2xhc3NfXz1TLFMuX19jYWNoZV9fPXt9LFIuRHJhY29JbnQ4QXJyYXk9UyxTLnByb3RvdHlwZS5HZXRWYWx1ZT1TLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbihWKXt2YXIgSz10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksUHUoSyxWKX0sUy5wcm90b3R5cGUuc2l6ZT1TLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIE11KHRoaXMucHRyKX0sUy5wcm90b3R5cGUuX19kZXN0cm95X189Uy5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtMcih0aGlzLnB0cil9LEMucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZC5wcm90b3R5cGUpLEMucHJvdG90eXBlLmNvbnN0cnVjdG9yPUMsQy5wcm90b3R5cGUuX19jbGFzc19fPUMsQy5fX2NhY2hlX189e30sUi5EcmFjb1VJbnQ4QXJyYXk9QyxDLnByb3RvdHlwZS5HZXRWYWx1ZT1DLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbihWKXt2YXIgSz10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksWGEoSyxWKX0sQy5wcm90b3R5cGUuc2l6ZT1DLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIERjKHRoaXMucHRyKX0sQy5wcm90b3R5cGUuX19kZXN0cm95X189Qy5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtOdSh0aGlzLnB0cil9LEwucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZC5wcm90b3R5cGUpLEwucHJvdG90eXBlLmNvbnN0cnVjdG9yPUwsTC5wcm90b3R5cGUuX19jbGFzc19fPUwsTC5fX2NhY2hlX189e30sUi5EcmFjb0ludDE2QXJyYXk9TCxMLnByb3RvdHlwZS5HZXRWYWx1ZT1MLnByb3RvdHlwZS5HZXRWYWx1ZT1mdW5jdGlvbihWKXt2YXIgSz10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksSXUoSyxWKX0sTC5wcm90b3R5cGUuc2l6ZT1MLnByb3RvdHlwZS5zaXplPWZ1bmN0aW9uKCl7cmV0dXJuIHZ1KHRoaXMucHRyKX0sTC5wcm90b3R5cGUuX19kZXN0cm95X189TC5wcm90b3R5cGUuX19kZXN0cm95X189ZnVuY3Rpb24oKXtGdSh0aGlzLnB0cil9LHoucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZC5wcm90b3R5cGUpLHoucHJvdG90eXBlLmNvbnN0cnVjdG9yPXosei5wcm90b3R5cGUuX19jbGFzc19fPXosei5fX2NhY2hlX189e30sUi5EcmFjb1VJbnQxNkFycmF5PXosei5wcm90b3R5cGUuR2V0VmFsdWU9ei5wcm90b3R5cGUuR2V0VmFsdWU9ZnVuY3Rpb24oVil7dmFyIEs9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLER1KEssVil9LHoucHJvdG90eXBlLnNpemU9ei5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiBCdSh0aGlzLnB0cil9LHoucHJvdG90eXBlLl9fZGVzdHJveV9fPXoucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7WWEodGhpcy5wdHIpfSxqLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGQucHJvdG90eXBlKSxqLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1qLGoucHJvdG90eXBlLl9fY2xhc3NfXz1qLGouX19jYWNoZV9fPXt9LFIuRHJhY29JbnQzMkFycmF5PWosai5wcm90b3R5cGUuR2V0VmFsdWU9ai5wcm90b3R5cGUuR2V0VmFsdWU9ZnVuY3Rpb24oVil7dmFyIEs9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLGt1KEssVil9LGoucHJvdG90eXBlLnNpemU9ai5wcm90b3R5cGUuc2l6ZT1mdW5jdGlvbigpe3JldHVybiBHdSh0aGlzLnB0cil9LGoucHJvdG90eXBlLl9fZGVzdHJveV9fPWoucHJvdG90eXBlLl9fZGVzdHJveV9fPWZ1bmN0aW9uKCl7VnUodGhpcy5wdHIpfSxrLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKGQucHJvdG90eXBlKSxrLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1rLGsucHJvdG90eXBlLl9fY2xhc3NfXz1rLGsuX19jYWNoZV9fPXt9LFIuRHJhY29VSW50MzJBcnJheT1rLGsucHJvdG90eXBlLkdldFZhbHVlPWsucHJvdG90eXBlLkdldFZhbHVlPWZ1bmN0aW9uKFYpe3ZhciBLPXRoaXMucHRyO3JldHVybiBWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSx6dShLLFYpfSxrLnByb3RvdHlwZS5zaXplPWsucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4ganUodGhpcy5wdHIpfSxrLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1rLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe0xzKHRoaXMucHRyKX0scS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShkLnByb3RvdHlwZSkscS5wcm90b3R5cGUuY29uc3RydWN0b3I9cSxxLnByb3RvdHlwZS5fX2NsYXNzX189cSxxLl9fY2FjaGVfXz17fSxSLk1ldGFkYXRhUXVlcmllcj1xLHEucHJvdG90eXBlLkhhc0VudHJ5PXEucHJvdG90eXBlLkhhc0VudHJ5PWZ1bmN0aW9uKFYsSyl7dmFyIHR0PXRoaXMucHRyO3JldHVybiB4ZS5wcmVwYXJlKCksViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksSz1LJiZ0eXBlb2YgSz09Im9iamVjdCI/Sy5wdHI6ZyhLKSwhIXF1KHR0LFYsSyl9LHEucHJvdG90eXBlLkdldEludEVudHJ5PXEucHJvdG90eXBlLkdldEludEVudHJ5PWZ1bmN0aW9uKFYsSyl7dmFyIHR0PXRoaXMucHRyO3JldHVybiB4ZS5wcmVwYXJlKCksViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksSz1LJiZ0eXBlb2YgSz09Im9iamVjdCI/Sy5wdHI6ZyhLKSx1cih0dCxWLEspfSxxLnByb3RvdHlwZS5HZXRJbnRFbnRyeUFycmF5PXEucHJvdG90eXBlLkdldEludEVudHJ5QXJyYXk9ZnVuY3Rpb24oVixLLHR0KXt2YXIgTXQ9dGhpcy5wdHI7eGUucHJlcGFyZSgpLFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEs9SyYmdHlwZW9mIEs9PSJvYmplY3QiP0sucHRyOmcoSyksdHQmJnR5cGVvZiB0dD09Im9iamVjdCImJih0dD10dC5wdHIpLCRhKE10LFYsSyx0dCl9LHEucHJvdG90eXBlLkdldERvdWJsZUVudHJ5PXEucHJvdG90eXBlLkdldERvdWJsZUVudHJ5PWZ1bmN0aW9uKFYsSyl7dmFyIHR0PXRoaXMucHRyO3JldHVybiB4ZS5wcmVwYXJlKCksViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksSz1LJiZ0eXBlb2YgSz09Im9iamVjdCI/Sy5wdHI6ZyhLKSxLdSh0dCxWLEspfSxxLnByb3RvdHlwZS5HZXRTdHJpbmdFbnRyeT1xLnByb3RvdHlwZS5HZXRTdHJpbmdFbnRyeT1mdW5jdGlvbihWLEspe3ZhciB0dD10aGlzLnB0cjtyZXR1cm4geGUucHJlcGFyZSgpLFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEs9SyYmdHlwZW9mIEs9PSJvYmplY3QiP0sucHRyOmcoSykscihXdSh0dCxWLEspKX0scS5wcm90b3R5cGUuTnVtRW50cmllcz1xLnByb3RvdHlwZS5OdW1FbnRyaWVzPWZ1bmN0aW9uKFYpe3ZhciBLPXRoaXMucHRyO3JldHVybiBWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSxYdShLLFYpfSxxLnByb3RvdHlwZS5HZXRFbnRyeU5hbWU9cS5wcm90b3R5cGUuR2V0RW50cnlOYW1lPWZ1bmN0aW9uKFYsSyl7dmFyIHR0PXRoaXMucHRyO3JldHVybiBWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSxLJiZ0eXBlb2YgSz09Im9iamVjdCImJihLPUsucHRyKSxyKEtvKHR0LFYsSykpfSxxLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1xLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe1phKHRoaXMucHRyKX0sVy5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShkLnByb3RvdHlwZSksVy5wcm90b3R5cGUuY29uc3RydWN0b3I9VyxXLnByb3RvdHlwZS5fX2NsYXNzX189VyxXLl9fY2FjaGVfXz17fSxSLkRlY29kZXI9VyxXLnByb3RvdHlwZS5EZWNvZGVBcnJheVRvUG9pbnRDbG91ZD1XLnByb3RvdHlwZS5EZWNvZGVBcnJheVRvUG9pbnRDbG91ZD1mdW5jdGlvbihWLEssdHQpe3ZhciBNdD10aGlzLnB0cjtyZXR1cm4geGUucHJlcGFyZSgpLHR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9YihWKSksSyYmdHlwZW9mIEs9PSJvYmplY3QiJiYoSz1LLnB0ciksdHQmJnR5cGVvZiB0dD09Im9iamVjdCImJih0dD10dC5wdHIpLF8oRHMoTXQsVixLLHR0KSxCKX0sVy5wcm90b3R5cGUuRGVjb2RlQXJyYXlUb01lc2g9Vy5wcm90b3R5cGUuRGVjb2RlQXJyYXlUb01lc2g9ZnVuY3Rpb24oVixLLHR0KXt2YXIgTXQ9dGhpcy5wdHI7cmV0dXJuIHhlLnByZXBhcmUoKSx0eXBlb2YgVj09Im9iamVjdCImJihWPWIoVikpLEsmJnR5cGVvZiBLPT0ib2JqZWN0IiYmKEs9Sy5wdHIpLHR0JiZ0eXBlb2YgdHQ9PSJvYmplY3QiJiYodHQ9dHQucHRyKSxfKFl1KE10LFYsSyx0dCksQil9LFcucHJvdG90eXBlLkdldEF0dHJpYnV0ZUlkPVcucHJvdG90eXBlLkdldEF0dHJpYnV0ZUlkPWZ1bmN0aW9uKFYsSyl7dmFyIHR0PXRoaXMucHRyO3JldHVybiBWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSxLJiZ0eXBlb2YgSz09Im9iamVjdCImJihLPUsucHRyKSxVYyh0dCxWLEspfSxXLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJZEJ5TmFtZT1XLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJZEJ5TmFtZT1mdW5jdGlvbihWLEspe3ZhciB0dD10aGlzLnB0cjtyZXR1cm4geGUucHJlcGFyZSgpLFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEs9SyYmdHlwZW9mIEs9PSJvYmplY3QiP0sucHRyOmcoSyksJHUodHQsVixLKX0sVy5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWRCeU1ldGFkYXRhRW50cnk9Vy5wcm90b3R5cGUuR2V0QXR0cmlidXRlSWRCeU1ldGFkYXRhRW50cnk9ZnVuY3Rpb24oVixLLHR0KXt2YXIgTXQ9dGhpcy5wdHI7cmV0dXJuIHhlLnByZXBhcmUoKSxWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSxLPUsmJnR5cGVvZiBLPT0ib2JqZWN0Ij9LLnB0cjpnKEspLHR0PXR0JiZ0eXBlb2YgdHQ9PSJvYmplY3QiP3R0LnB0cjpnKHR0KSxKYShNdCxWLEssdHQpfSxXLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGU9Vy5wcm90b3R5cGUuR2V0QXR0cmlidXRlPWZ1bmN0aW9uKFYsSyl7dmFyIHR0PXRoaXMucHRyO3JldHVybiBWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSxLJiZ0eXBlb2YgSz09Im9iamVjdCImJihLPUsucHRyKSxfKHRmKHR0LFYsSykseCl9LFcucHJvdG90eXBlLkdldEF0dHJpYnV0ZUJ5VW5pcXVlSWQ9Vy5wcm90b3R5cGUuR2V0QXR0cmlidXRlQnlVbmlxdWVJZD1mdW5jdGlvbihWLEspe3ZhciB0dD10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksSyYmdHlwZW9mIEs9PSJvYmplY3QiJiYoSz1LLnB0ciksXyhadSh0dCxWLEspLHgpfSxXLnByb3RvdHlwZS5HZXRNZXRhZGF0YT1XLnByb3RvdHlwZS5HZXRNZXRhZGF0YT1mdW5jdGlvbihWKXt2YXIgSz10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksXyhRdShLLFYpLHYpfSxXLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVNZXRhZGF0YT1XLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVNZXRhZGF0YT1mdW5jdGlvbihWLEspe3ZhciB0dD10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksSyYmdHlwZW9mIEs9PSJvYmplY3QiJiYoSz1LLnB0ciksXyhrYyh0dCxWLEspLHYpfSxXLnByb3RvdHlwZS5HZXRGYWNlRnJvbU1lc2g9Vy5wcm90b3R5cGUuR2V0RmFjZUZyb21NZXNoPWZ1bmN0aW9uKFYsSyx0dCl7dmFyIE10PXRoaXMucHRyO3JldHVybiBWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSxLJiZ0eXBlb2YgSz09Im9iamVjdCImJihLPUsucHRyKSx0dCYmdHlwZW9mIHR0PT0ib2JqZWN0IiYmKHR0PXR0LnB0ciksISF3byhNdCxWLEssdHQpfSxXLnByb3RvdHlwZS5HZXRUcmlhbmdsZVN0cmlwc0Zyb21NZXNoPVcucHJvdG90eXBlLkdldFRyaWFuZ2xlU3RyaXBzRnJvbU1lc2g9ZnVuY3Rpb24oVixLKXt2YXIgdHQ9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEsmJnR5cGVvZiBLPT0ib2JqZWN0IiYmKEs9Sy5wdHIpLEdjKHR0LFYsSyl9LFcucHJvdG90eXBlLkdldFRyaWFuZ2xlc1VJbnQxNkFycmF5PVcucHJvdG90eXBlLkdldFRyaWFuZ2xlc1VJbnQxNkFycmF5PWZ1bmN0aW9uKFYsSyx0dCl7dmFyIE10PXRoaXMucHRyO3JldHVybiBWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSxLJiZ0eXBlb2YgSz09Im9iamVjdCImJihLPUsucHRyKSx0dCYmdHlwZW9mIHR0PT0ib2JqZWN0IiYmKHR0PXR0LnB0ciksISFKdShNdCxWLEssdHQpfSxXLnByb3RvdHlwZS5HZXRUcmlhbmdsZXNVSW50MzJBcnJheT1XLnByb3RvdHlwZS5HZXRUcmlhbmdsZXNVSW50MzJBcnJheT1mdW5jdGlvbihWLEssdHQpe3ZhciBNdD10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksSyYmdHlwZW9mIEs9PSJvYmplY3QiJiYoSz1LLnB0ciksdHQmJnR5cGVvZiB0dD09Im9iamVjdCImJih0dD10dC5wdHIpLCEhdGwoTXQsVixLLHR0KX0sVy5wcm90b3R5cGUuR2V0QXR0cmlidXRlRmxvYXQ9Vy5wcm90b3R5cGUuR2V0QXR0cmlidXRlRmxvYXQ9ZnVuY3Rpb24oVixLLHR0KXt2YXIgTXQ9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEsmJnR5cGVvZiBLPT0ib2JqZWN0IiYmKEs9Sy5wdHIpLHR0JiZ0eXBlb2YgdHQ9PSJvYmplY3QiJiYodHQ9dHQucHRyKSwhIWVsKE10LFYsSyx0dCl9LFcucHJvdG90eXBlLkdldEF0dHJpYnV0ZUZsb2F0Rm9yQWxsUG9pbnRzPVcucHJvdG90eXBlLkdldEF0dHJpYnV0ZUZsb2F0Rm9yQWxsUG9pbnRzPWZ1bmN0aW9uKFYsSyx0dCl7dmFyIE10PXRoaXMucHRyO3JldHVybiBWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSxLJiZ0eXBlb2YgSz09Im9iamVjdCImJihLPUsucHRyKSx0dCYmdHlwZW9mIHR0PT0ib2JqZWN0IiYmKHR0PXR0LnB0ciksISFscihNdCxWLEssdHQpfSxXLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJbnRGb3JBbGxQb2ludHM9Vy5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50Rm9yQWxsUG9pbnRzPWZ1bmN0aW9uKFYsSyx0dCl7dmFyIE10PXRoaXMucHRyO3JldHVybiBWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSxLJiZ0eXBlb2YgSz09Im9iamVjdCImJihLPUsucHRyKSx0dCYmdHlwZW9mIHR0PT0ib2JqZWN0IiYmKHR0PXR0LnB0ciksISFubChNdCxWLEssdHQpfSxXLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJbnQ4Rm9yQWxsUG9pbnRzPVcucHJvdG90eXBlLkdldEF0dHJpYnV0ZUludDhGb3JBbGxQb2ludHM9ZnVuY3Rpb24oVixLLHR0KXt2YXIgTXQ9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEsmJnR5cGVvZiBLPT0ib2JqZWN0IiYmKEs9Sy5wdHIpLHR0JiZ0eXBlb2YgdHQ9PSJvYmplY3QiJiYodHQ9dHQucHRyKSwhIW9sKE10LFYsSyx0dCl9LFcucHJvdG90eXBlLkdldEF0dHJpYnV0ZVVJbnQ4Rm9yQWxsUG9pbnRzPVcucHJvdG90eXBlLkdldEF0dHJpYnV0ZVVJbnQ4Rm9yQWxsUG9pbnRzPWZ1bmN0aW9uKFYsSyx0dCl7dmFyIE10PXRoaXMucHRyO3JldHVybiBWJiZ0eXBlb2YgVj09Im9iamVjdCImJihWPVYucHRyKSxLJiZ0eXBlb2YgSz09Im9iamVjdCImJihLPUsucHRyKSx0dCYmdHlwZW9mIHR0PT0ib2JqZWN0IiYmKHR0PXR0LnB0ciksISFybChNdCxWLEssdHQpfSxXLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJbnQxNkZvckFsbFBvaW50cz1XLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVJbnQxNkZvckFsbFBvaW50cz1mdW5jdGlvbihWLEssdHQpe3ZhciBNdD10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksSyYmdHlwZW9mIEs9PSJvYmplY3QiJiYoSz1LLnB0ciksdHQmJnR5cGVvZiB0dD09Im9iamVjdCImJih0dD10dC5wdHIpLCEhQnMoTXQsVixLLHR0KX0sVy5wcm90b3R5cGUuR2V0QXR0cmlidXRlVUludDE2Rm9yQWxsUG9pbnRzPVcucHJvdG90eXBlLkdldEF0dHJpYnV0ZVVJbnQxNkZvckFsbFBvaW50cz1mdW5jdGlvbihWLEssdHQpe3ZhciBNdD10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksSyYmdHlwZW9mIEs9PSJvYmplY3QiJiYoSz1LLnB0ciksdHQmJnR5cGVvZiB0dD09Im9iamVjdCImJih0dD10dC5wdHIpLCEhaWwoTXQsVixLLHR0KX0sVy5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50MzJGb3JBbGxQb2ludHM9Vy5wcm90b3R5cGUuR2V0QXR0cmlidXRlSW50MzJGb3JBbGxQb2ludHM9ZnVuY3Rpb24oVixLLHR0KXt2YXIgTXQ9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEsmJnR5cGVvZiBLPT0ib2JqZWN0IiYmKEs9Sy5wdHIpLHR0JiZ0eXBlb2YgdHQ9PSJvYmplY3QiJiYodHQ9dHQucHRyKSwhIU9pKE10LFYsSyx0dCl9LFcucHJvdG90eXBlLkdldEF0dHJpYnV0ZVVJbnQzMkZvckFsbFBvaW50cz1XLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVVSW50MzJGb3JBbGxQb2ludHM9ZnVuY3Rpb24oVixLLHR0KXt2YXIgTXQ9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEsmJnR5cGVvZiBLPT0ib2JqZWN0IiYmKEs9Sy5wdHIpLHR0JiZ0eXBlb2YgdHQ9PSJvYmplY3QiJiYodHQ9dHQucHRyKSwhIXNsKE10LFYsSyx0dCl9LFcucHJvdG90eXBlLkdldEF0dHJpYnV0ZURhdGFBcnJheUZvckFsbFBvaW50cz1XLnByb3RvdHlwZS5HZXRBdHRyaWJ1dGVEYXRhQXJyYXlGb3JBbGxQb2ludHM9ZnVuY3Rpb24oVixLLHR0LE10LHVlKXt2YXIgd2U9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEsmJnR5cGVvZiBLPT0ib2JqZWN0IiYmKEs9Sy5wdHIpLHR0JiZ0eXBlb2YgdHQ9PSJvYmplY3QiJiYodHQ9dHQucHRyKSxNdCYmdHlwZW9mIE10PT0ib2JqZWN0IiYmKE10PU10LnB0ciksdWUmJnR5cGVvZiB1ZT09Im9iamVjdCImJih1ZT11ZS5wdHIpLCEhY2wod2UsVixLLHR0LE10LHVlKX0sVy5wcm90b3R5cGUuU2tpcEF0dHJpYnV0ZVRyYW5zZm9ybT1XLnByb3RvdHlwZS5Ta2lwQXR0cmlidXRlVHJhbnNmb3JtPWZ1bmN0aW9uKFYpe3ZhciBLPXRoaXMucHRyO1YmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLGFsKEssVil9LFcucHJvdG90eXBlLkdldEVuY29kZWRHZW9tZXRyeVR5cGVfRGVwcmVjYXRlZD1XLnByb3RvdHlwZS5HZXRFbmNvZGVkR2VvbWV0cnlUeXBlX0RlcHJlY2F0ZWQ9ZnVuY3Rpb24oVil7dmFyIEs9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLGZsKEssVil9LFcucHJvdG90eXBlLkRlY29kZUJ1ZmZlclRvUG9pbnRDbG91ZD1XLnByb3RvdHlwZS5EZWNvZGVCdWZmZXJUb1BvaW50Q2xvdWQ9ZnVuY3Rpb24oVixLKXt2YXIgdHQ9dGhpcy5wdHI7cmV0dXJuIFYmJnR5cGVvZiBWPT0ib2JqZWN0IiYmKFY9Vi5wdHIpLEsmJnR5cGVvZiBLPT0ib2JqZWN0IiYmKEs9Sy5wdHIpLF8odWwodHQsVixLKSxCKX0sVy5wcm90b3R5cGUuRGVjb2RlQnVmZmVyVG9NZXNoPVcucHJvdG90eXBlLkRlY29kZUJ1ZmZlclRvTWVzaD1mdW5jdGlvbihWLEspe3ZhciB0dD10aGlzLnB0cjtyZXR1cm4gViYmdHlwZW9mIFY9PSJvYmplY3QiJiYoVj1WLnB0ciksSyYmdHlwZW9mIEs9PSJvYmplY3QiJiYoSz1LLnB0ciksXyhsbCh0dCxWLEspLEIpfSxXLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1XLnByb3RvdHlwZS5fX2Rlc3Ryb3lfXz1mdW5jdGlvbigpe3BsKHRoaXMucHRyKX0sZnVuY3Rpb24oKXtmdW5jdGlvbiBWKCl7Ui5BVFRSSUJVVEVfSU5WQUxJRF9UUkFOU0ZPUk09ZGwoKSxSLkFUVFJJQlVURV9OT19UUkFOU0ZPUk09bWwoKSxSLkFUVFJJQlVURV9RVUFOVElaQVRJT05fVFJBTlNGT1JNPWhsKCksUi5BVFRSSUJVVEVfT0NUQUhFRFJPTl9UUkFOU0ZPUk09X2woKSxSLklOVkFMSUQ9bnMoKSxSLlBPU0lUSU9OPXlsKCksUi5OT1JNQUw9Z2woKSxSLkNPTE9SPVVzKCksUi5URVhfQ09PUkQ9VmMoKSxSLkdFTkVSSUM9QWwoKSxSLklOVkFMSURfR0VPTUVUUllfVFlQRT1lZigpLFIuUE9JTlRfQ0xPVUQ9YmwoKSxSLlRSSUFOR1VMQVJfTUVTSD13bCgpLFIuRFRfSU5WQUxJRD1UbCgpLFIuRFRfSU5UOD1PbCgpLFIuRFRfVUlOVDg9RWwoKSxSLkRUX0lOVDE2PVJsKCksUi5EVF9VSU5UMTY9U2woKSxSLkRUX0lOVDMyPXhsKCksUi5EVF9VSU5UMzI9bmYoKSxSLkRUX0lOVDY0PUNsKCksUi5EVF9VSU5UNjQ9UGwoKSxSLkRUX0ZMT0FUMzI9TWwoKSxSLkRUX0ZMT0FUNjQ9TmwoKSxSLkRUX0JPT0w9SWwoKSxSLkRUX1RZUEVTX0NPVU5UPXZsKCksUi5PSz1GbCgpLFIuRFJBQ09fRVJST1I9a3MoKSxSLklPX0VSUk9SPUxsKCksUi5JTlZBTElEX1BBUkFNRVRFUj1EbCgpLFIuVU5TVVBQT1JURURfVkVSU0lPTj1CbCgpLFIuVU5LTk9XTl9WRVJTSU9OPVVsKCl9b2U/VigpOnBuLnVuc2hpZnQoVil9KCksdHlwZW9mIFIub25Nb2R1bGVQYXJzZWQ9PSJmdW5jdGlvbiImJlIub25Nb2R1bGVQYXJzZWQoKSxSLkRlY29kZXIucHJvdG90eXBlLkdldEVuY29kZWRHZW9tZXRyeVR5cGU9ZnVuY3Rpb24oVil7aWYoVi5fX2NsYXNzX18mJlYuX19jbGFzc19fPT09Ui5EZWNvZGVyQnVmZmVyKXJldHVybiBSLkRlY29kZXIucHJvdG90eXBlLkdldEVuY29kZWRHZW9tZXRyeVR5cGVfRGVwcmVjYXRlZChWKTtpZig4PlYuYnl0ZUxlbmd0aClyZXR1cm4gUi5JTlZBTElEX0dFT01FVFJZX1RZUEU7c3dpdGNoKFZbN10pe2Nhc2UgMDpyZXR1cm4gUi5QT0lOVF9DTE9VRDtjYXNlIDE6cmV0dXJuIFIuVFJJQU5HVUxBUl9NRVNIO2RlZmF1bHQ6cmV0dXJuIFIuSU5WQUxJRF9HRU9NRVRSWV9UWVBFfX0sZS5yZWFkeX19KCk7dHlwZW9mIGR1PT0ib2JqZWN0IiYmdHlwZW9mIENnPT0ib2JqZWN0Ij9DZy5leHBvcnRzPXhnOnR5cGVvZiBkZWZpbmU9PSJmdW5jdGlvbiImJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLGZ1bmN0aW9uKCl7cmV0dXJuIHhnfSk6dHlwZW9mIGR1PT0ib2JqZWN0IiYmKGR1LkRyYWNvRGVjb2Rlck1vZHVsZT14Zyl9KTt2YXIgTmc9e307bGUoTmcse2RlZmF1bHQ6KCk9PmM2fSk7ZnVuY3Rpb24gSlUodCxlKXtsZXQgbj10Lm51bV9wb2ludHMoKSxvPXQubnVtX2ZhY2VzKCkscj1uZXcgTWUuRHJhY29JbnQzMkFycmF5LGk9byozLHM9THQuY3JlYXRlVHlwZWRBcnJheShuLGkpLGY9MDtmb3IobGV0IHU9MDt1PG87Kyt1KWUuR2V0RmFjZUZyb21NZXNoKHQsdSxyKSxzW2YrMF09ci5HZXRWYWx1ZSgwKSxzW2YrMV09ci5HZXRWYWx1ZSgxKSxzW2YrMl09ci5HZXRWYWx1ZSgyKSxmKz0zO3JldHVybiBNZS5kZXN0cm95KHIpLHt0eXBlZEFycmF5OnMsbnVtYmVyT2ZJbmRpY2VzOml9fWZ1bmN0aW9uIHQ2KHQsZSxuLG8scil7bGV0IGkscztvLnF1YW50aXphdGlvbkJpdHM8PTg/KHM9bmV3IE1lLkRyYWNvVUludDhBcnJheSxpPW5ldyBVaW50OEFycmF5KHIpLGUuR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHModCxuLHMpKTpvLnF1YW50aXphdGlvbkJpdHM8PTE2PyhzPW5ldyBNZS5EcmFjb1VJbnQxNkFycmF5LGk9bmV3IFVpbnQxNkFycmF5KHIpLGUuR2V0QXR0cmlidXRlVUludDE2Rm9yQWxsUG9pbnRzKHQsbixzKSk6KHM9bmV3IE1lLkRyYWNvRmxvYXQzMkFycmF5LGk9bmV3IEZsb2F0MzJBcnJheShyKSxlLkdldEF0dHJpYnV0ZUZsb2F0Rm9yQWxsUG9pbnRzKHQsbixzKSk7Zm9yKGxldCBmPTA7ZjxyOysrZilpW2ZdPXMuR2V0VmFsdWUoZik7cmV0dXJuIE1lLmRlc3Ryb3kocyksaX1mdW5jdGlvbiBlNih0LGUsbixvKXtsZXQgcixpO3N3aXRjaChuLmRhdGFfdHlwZSgpKXtjYXNlIDE6Y2FzZSAxMTppPW5ldyBNZS5EcmFjb0ludDhBcnJheSxyPW5ldyBJbnQ4QXJyYXkobyksZS5HZXRBdHRyaWJ1dGVJbnQ4Rm9yQWxsUG9pbnRzKHQsbixpKTticmVhaztjYXNlIDI6aT1uZXcgTWUuRHJhY29VSW50OEFycmF5LHI9bmV3IFVpbnQ4QXJyYXkobyksZS5HZXRBdHRyaWJ1dGVVSW50OEZvckFsbFBvaW50cyh0LG4saSk7YnJlYWs7Y2FzZSAzOmk9bmV3IE1lLkRyYWNvSW50MTZBcnJheSxyPW5ldyBJbnQxNkFycmF5KG8pLGUuR2V0QXR0cmlidXRlSW50MTZGb3JBbGxQb2ludHModCxuLGkpO2JyZWFrO2Nhc2UgNDppPW5ldyBNZS5EcmFjb1VJbnQxNkFycmF5LHI9bmV3IFVpbnQxNkFycmF5KG8pLGUuR2V0QXR0cmlidXRlVUludDE2Rm9yQWxsUG9pbnRzKHQsbixpKTticmVhaztjYXNlIDU6Y2FzZSA3Omk9bmV3IE1lLkRyYWNvSW50MzJBcnJheSxyPW5ldyBJbnQzMkFycmF5KG8pLGUuR2V0QXR0cmlidXRlSW50MzJGb3JBbGxQb2ludHModCxuLGkpO2JyZWFrO2Nhc2UgNjpjYXNlIDg6aT1uZXcgTWUuRHJhY29VSW50MzJBcnJheSxyPW5ldyBVaW50MzJBcnJheShvKSxlLkdldEF0dHJpYnV0ZVVJbnQzMkZvckFsbFBvaW50cyh0LG4saSk7YnJlYWs7Y2FzZSA5OmNhc2UgMTA6aT1uZXcgTWUuRHJhY29GbG9hdDMyQXJyYXkscj1uZXcgRmxvYXQzMkFycmF5KG8pLGUuR2V0QXR0cmlidXRlRmxvYXRGb3JBbGxQb2ludHModCxuLGkpO2JyZWFrfWZvcihsZXQgcz0wO3M8bzsrK3MpcltzXT1pLkdldFZhbHVlKHMpO3JldHVybiBNZS5kZXN0cm95KGkpLHJ9ZnVuY3Rpb24geDIodCxlLG4pe2xldCBvPXQubnVtX3BvaW50cygpLHI9bi5udW1fY29tcG9uZW50cygpLGkscz1uZXcgTWUuQXR0cmlidXRlUXVhbnRpemF0aW9uVHJhbnNmb3JtO2lmKHMuSW5pdEZyb21BdHRyaWJ1dGUobikpe2xldCBsPW5ldyBBcnJheShyKTtmb3IobGV0IHA9MDtwPHI7KytwKWxbcF09cy5taW5fdmFsdWUocCk7aT17cXVhbnRpemF0aW9uQml0czpzLnF1YW50aXphdGlvbl9iaXRzKCksbWluVmFsdWVzOmwscmFuZ2U6cy5yYW5nZSgpLG9jdEVuY29kZWQ6ITF9fU1lLmRlc3Ryb3kocykscz1uZXcgTWUuQXR0cmlidXRlT2N0YWhlZHJvblRyYW5zZm9ybSxzLkluaXRGcm9tQXR0cmlidXRlKG4pJiYoaT17cXVhbnRpemF0aW9uQml0czpzLnF1YW50aXphdGlvbl9iaXRzKCksb2N0RW5jb2RlZDohMH0pLE1lLmRlc3Ryb3kocyk7bGV0IGY9bypyLHU7bShpKT91PXQ2KHQsZSxuLGksZik6dT1lNih0LGUsbixmKTtsZXQgYz1ldC5mcm9tVHlwZWRBcnJheSh1KTtyZXR1cm57YXJyYXk6dSxkYXRhOntjb21wb25lbnRzUGVyQXR0cmlidXRlOnIsY29tcG9uZW50RGF0YXR5cGU6YyxieXRlT2Zmc2V0Om4uYnl0ZV9vZmZzZXQoKSxieXRlU3RyaWRlOmV0LmdldFNpemVJbkJ5dGVzKGMpKnIsbm9ybWFsaXplZDpuLm5vcm1hbGl6ZWQoKSxxdWFudGl6YXRpb246aX19fWZ1bmN0aW9uIG42KHQpe2xldCBlPW5ldyBNZS5EZWNvZGVyO3QuZGVxdWFudGl6ZUluU2hhZGVyJiYoZS5Ta2lwQXR0cmlidXRlVHJhbnNmb3JtKE1lLlBPU0lUSU9OKSxlLlNraXBBdHRyaWJ1dGVUcmFuc2Zvcm0oTWUuTk9STUFMKSk7bGV0IG49bmV3IE1lLkRlY29kZXJCdWZmZXI7aWYobi5Jbml0KHQuYnVmZmVyLHQuYnVmZmVyLmxlbmd0aCksZS5HZXRFbmNvZGVkR2VvbWV0cnlUeXBlKG4pIT09TWUuUE9JTlRfQ0xPVUQpdGhyb3cgbmV3IEFlKCJEcmFjbyBnZW9tZXRyeSB0eXBlIG11c3QgYmUgUE9JTlRfQ0xPVUQuIik7bGV0IHI9bmV3IE1lLlBvaW50Q2xvdWQsaT1lLkRlY29kZUJ1ZmZlclRvUG9pbnRDbG91ZChuLHIpO2lmKCFpLm9rKCl8fHIucHRyPT09MCl0aHJvdyBuZXcgQWUoYEVycm9yIGRlY29kaW5nIGRyYWNvIHBvaW50IGNsb3VkOiAke2kuZXJyb3JfbXNnKCl9YCk7TWUuZGVzdHJveShuKTtsZXQgcz17fSxmPXQucHJvcGVydGllcztmb3IobGV0IHUgaW4gZilpZihmLmhhc093blByb3BlcnR5KHUpKXtsZXQgYztpZih1PT09IlBPU0lUSU9OInx8dT09PSJOT1JNQUwiKXtsZXQgbD1lLkdldEF0dHJpYnV0ZUlkKHIsTWVbdV0pO2M9ZS5HZXRBdHRyaWJ1dGUocixsKX1lbHNle2xldCBsPWZbdV07Yz1lLkdldEF0dHJpYnV0ZUJ5VW5pcXVlSWQocixsKX1zW3VdPXgyKHIsZSxjKX1yZXR1cm4gTWUuZGVzdHJveShyKSxNZS5kZXN0cm95KGUpLHN9ZnVuY3Rpb24gbzYodCl7bGV0IGU9bmV3IE1lLkRlY29kZXI7aWYodC5kZXF1YW50aXplSW5TaGFkZXIpZm9yKGxldCBsPTA7bDx0LmF0dHJpYnV0ZXNUb1NraXBUcmFuc2Zvcm0ubGVuZ3RoOysrbCllLlNraXBBdHRyaWJ1dGVUcmFuc2Zvcm0oTWVbdC5hdHRyaWJ1dGVzVG9Ta2lwVHJhbnNmb3JtW2xdXSk7bGV0IG49dC5idWZmZXJWaWV3LG89bmV3IE1lLkRlY29kZXJCdWZmZXI7aWYoby5Jbml0KHQuYXJyYXksbi5ieXRlTGVuZ3RoKSxlLkdldEVuY29kZWRHZW9tZXRyeVR5cGUobykhPT1NZS5UUklBTkdVTEFSX01FU0gpdGhyb3cgbmV3IEFlKCJVbnN1cHBvcnRlZCBkcmFjbyBtZXNoIGdlb21ldHJ5IHR5cGUuIik7bGV0IGk9bmV3IE1lLk1lc2gscz1lLkRlY29kZUJ1ZmZlclRvTWVzaChvLGkpO2lmKCFzLm9rKCl8fGkucHRyPT09MCl0aHJvdyBuZXcgQWUoYEVycm9yIGRlY29kaW5nIGRyYWNvIG1lc2ggZ2VvbWV0cnk6ICR7cy5lcnJvcl9tc2coKX1gKTtNZS5kZXN0cm95KG8pO2xldCBmPXt9LHU9dC5jb21wcmVzc2VkQXR0cmlidXRlcztmb3IobGV0IGwgaW4gdSlpZih1Lmhhc093blByb3BlcnR5KGwpKXtsZXQgcD11W2xdLGQ9ZS5HZXRBdHRyaWJ1dGVCeVVuaXF1ZUlkKGkscCk7ZltsXT14MihpLGUsZCl9bGV0IGM9e2luZGV4QXJyYXk6SlUoaSxlKSxhdHRyaWJ1dGVEYXRhOmZ9O3JldHVybiBNZS5kZXN0cm95KGkpLE1lLmRlc3Ryb3koZSksY31hc3luYyBmdW5jdGlvbiByNih0LGUpe3JldHVybiBtKHQuYnVmZmVyVmlldyk/bzYodCk6bjYodCl9YXN5bmMgZnVuY3Rpb24gaTYodCxlKXtsZXQgbj10LndlYkFzc2VtYmx5Q29uZmlnO3JldHVybiBtKG4pJiZtKG4ud2FzbUJpbmFyeUZpbGUpP01lPWF3YWl0KDAsTWcuZGVmYXVsdCkobik6TWU9YXdhaXQoMCxNZy5kZWZhdWx0KSgpLCEwfWFzeW5jIGZ1bmN0aW9uIHM2KHQsZSl7bGV0IG49dC53ZWJBc3NlbWJseUNvbmZpZztyZXR1cm4gbShuKT9pNih0LGUpOnI2KHQsZSl9dmFyIE1nLE1lLGM2LElnPSQoKCk9PntEZSgpO2Z0KCk7WmUoKTt0aSgpO1puKCk7TWc9bXIoUGcoKSwxKTtjNj1VZShzNil9KTtmdW5jdGlvbiB2Zyh0LGUpe2lmKHZnLnBhc3NUaHJvdWdoRGF0YUZvclRlc3RpbmcpcmV0dXJuIGU7eS50eXBlT2Yub2JqZWN0KCJrZXkiLHQpLHkudHlwZU9mLm9iamVjdCgiZGF0YSIsZSk7bGV0IG49dC5ieXRlTGVuZ3RoO2lmKG49PT0wfHxuJTQhPT0wKXRocm93IG5ldyBBZSgiVGhlIGxlbmd0aCBvZiBrZXkgbXVzdCBiZSBncmVhdGVyIHRoYW4gMCBhbmQgYSBtdWx0aXBsZSBvZiA0LiIpO2xldCBvPW5ldyBEYXRhVmlldyhlKSxyPW8uZ2V0VWludDMyKDAsITApO2lmKHI9PT1hNnx8cj09PWY2KXJldHVybiBlO2xldCBpPW5ldyBEYXRhVmlldyh0KSxzPTAsZj1lLmJ5dGVMZW5ndGgsdT1mLWYlOCxjPW4sbCxwPTg7Zm9yKDtzPHU7KWZvcihwPShwKzgpJTI0LGw9cDtzPHUmJmw8Yzspby5zZXRVaW50MzIocyxvLmdldFVpbnQzMihzLCEwKV5pLmdldFVpbnQzMihsLCEwKSwhMCksby5zZXRVaW50MzIocys0LG8uZ2V0VWludDMyKHMrNCwhMCleaS5nZXRVaW50MzIobCs0LCEwKSwhMCkscys9OCxsKz0yNDtpZihzPGYpZm9yKGw+PWMmJihwPShwKzgpJTI0LGw9cCk7czxmOylvLnNldFVpbnQ4KHMsby5nZXRVaW50OChzKV5pLmdldFVpbnQ4KGwpKSxzKyssbCsrfXZhciBhNixmNixDMixQMj0kKCgpPT57V3QoKTt0aSgpO2E2PTE5NTMwMjk4MDUsZjY9MjkxNzAzNDEwMDt2Zy5wYXNzVGhyb3VnaERhdGFGb3JUZXN0aW5nPSExO0MyPXZnfSk7ZnVuY3Rpb24gdTYodCxlKXtyZXR1cm4odCZlKSE9PTB9dmFyIEdhLE0yPSQoKCk9PntHYT11Nn0pO2Z1bmN0aW9uIGdpKHQsZSxuLG8scixpKXt0aGlzLl9iaXRzPXQsdGhpcy5jbm9kZVZlcnNpb249ZSx0aGlzLmltYWdlcnlWZXJzaW9uPW4sdGhpcy50ZXJyYWluVmVyc2lvbj1vLHRoaXMuaW1hZ2VyeVByb3ZpZGVyPXIsdGhpcy50ZXJyYWluUHJvdmlkZXI9aSx0aGlzLmFuY2VzdG9ySGFzVGVycmFpbj0hMSx0aGlzLnRlcnJhaW5TdGF0ZT12b2lkIDB9dmFyIGw2LE4yLHA2LGQ2LG02LEkyLHYyPSQoKCk9PntmdCgpO00yKCk7bDY9WzEsMiw0LDhdLE4yPTE1LHA2PTE2LGQ2PTY0LG02PTEyODtnaS5jbG9uZT1mdW5jdGlvbih0LGUpe3JldHVybiBtKGUpPyhlLl9iaXRzPXQuX2JpdHMsZS5jbm9kZVZlcnNpb249dC5jbm9kZVZlcnNpb24sZS5pbWFnZXJ5VmVyc2lvbj10LmltYWdlcnlWZXJzaW9uLGUudGVycmFpblZlcnNpb249dC50ZXJyYWluVmVyc2lvbixlLmltYWdlcnlQcm92aWRlcj10LmltYWdlcnlQcm92aWRlcixlLnRlcnJhaW5Qcm92aWRlcj10LnRlcnJhaW5Qcm92aWRlcik6ZT1uZXcgZ2kodC5fYml0cyx0LmNub2RlVmVyc2lvbix0LmltYWdlcnlWZXJzaW9uLHQudGVycmFpblZlcnNpb24sdC5pbWFnZXJ5UHJvdmlkZXIsdC50ZXJyYWluUHJvdmlkZXIpLGUuYW5jZXN0b3JIYXNUZXJyYWluPXQuYW5jZXN0b3JIYXNUZXJyYWluLGUudGVycmFpblN0YXRlPXQudGVycmFpblN0YXRlLGV9O2dpLnByb3RvdHlwZS5zZXRQYXJlbnQ9ZnVuY3Rpb24odCl7dGhpcy5hbmNlc3Rvckhhc1RlcnJhaW49dC5hbmNlc3Rvckhhc1RlcnJhaW58fHRoaXMuaGFzVGVycmFpbigpfTtnaS5wcm90b3R5cGUuaGFzU3VidHJlZT1mdW5jdGlvbigpe3JldHVybiBHYSh0aGlzLl9iaXRzLHA2KX07Z2kucHJvdG90eXBlLmhhc0ltYWdlcnk9ZnVuY3Rpb24oKXtyZXR1cm4gR2EodGhpcy5fYml0cyxkNil9O2dpLnByb3RvdHlwZS5oYXNUZXJyYWluPWZ1bmN0aW9uKCl7cmV0dXJuIEdhKHRoaXMuX2JpdHMsbTYpfTtnaS5wcm90b3R5cGUuaGFzQ2hpbGRyZW49ZnVuY3Rpb24oKXtyZXR1cm4gR2EodGhpcy5fYml0cyxOMil9O2dpLnByb3RvdHlwZS5oYXNDaGlsZD1mdW5jdGlvbih0KXtyZXR1cm4gR2EodGhpcy5fYml0cyxsNlt0XSl9O2dpLnByb3RvdHlwZS5nZXRDaGlsZEJpdG1hc2s9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYml0cyZOMn07STI9Z2l9KTt2YXIgTDI9WW4oKE91dCxGMik9PnsidXNlIHN0cmljdCI7dmFyIGg2PSh0LGUsbixvKT0+e2xldCByPXQmNjU1MzV8MCxpPXQ+Pj4xNiY2NTUzNXwwLHM9MDtmb3IoO24hPT0wOyl7cz1uPjJlMz8yZTM6bixuLT1zO2RvIHI9citlW28rK118MCxpPWkrcnwwO3doaWxlKC0tcyk7ciU9NjU1MjEsaSU9NjU1MjF9cmV0dXJuIHJ8aTw8MTZ8MH07RjIuZXhwb3J0cz1oNn0pO3ZhciBCMj1ZbigoRXV0LEQyKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgXzY9KCk9PntsZXQgdCxlPVtdO2Zvcih2YXIgbj0wO248MjU2O24rKyl7dD1uO2Zvcih2YXIgbz0wO288ODtvKyspdD10JjE/Mzk4ODI5MjM4NF50Pj4+MTp0Pj4+MTtlW25dPXR9cmV0dXJuIGV9LHk2PW5ldyBVaW50MzJBcnJheShfNigpKSxnNj0odCxlLG4sbyk9PntsZXQgcj15NixpPW8rbjt0Xj0tMTtmb3IobGV0IHM9bztzPGk7cysrKXQ9dD4+PjheclsodF5lW3NdKSYyNTVdO3JldHVybiB0Xi0xfTtEMi5leHBvcnRzPWc2fSk7dmFyIGsyPVluKChSdXQsVTIpPT57InVzZSBzdHJpY3QiO1UyLmV4cG9ydHM9ZnVuY3Rpb24oZSxuKXtsZXQgbyxyLGkscyxmLHUsYyxsLHAsZCxoLF8sZyxiLHcsTyxFLFQseCxNLE4sRixJLHYsQj1lLnN0YXRlO289ZS5uZXh0X2luLEk9ZS5pbnB1dCxyPW8rKGUuYXZhaWxfaW4tNSksaT1lLm5leHRfb3V0LHY9ZS5vdXRwdXQscz1pLShuLWUuYXZhaWxfb3V0KSxmPWkrKGUuYXZhaWxfb3V0LTI1NyksdT1CLmRtYXgsYz1CLndzaXplLGw9Qi53aGF2ZSxwPUIud25leHQsZD1CLndpbmRvdyxoPUIuaG9sZCxfPUIuYml0cyxnPUIubGVuY29kZSxiPUIuZGlzdGNvZGUsdz0oMTw8Qi5sZW5iaXRzKS0xLE89KDE8PEIuZGlzdGJpdHMpLTE7dDpkb3tfPDE1JiYoaCs9SVtvKytdPDxfLF8rPTgsaCs9SVtvKytdPDxfLF8rPTgpLEU9Z1toJnddO2U6Zm9yKDs7KXtpZihUPUU+Pj4yNCxoPj4+PVQsXy09VCxUPUU+Pj4xNiYyNTUsVD09PTApdltpKytdPUUmNjU1MzU7ZWxzZSBpZihUJjE2KXt4PUUmNjU1MzUsVCY9MTUsVCYmKF88VCYmKGgrPUlbbysrXTw8XyxfKz04KSx4Kz1oJigxPDxUKS0xLGg+Pj49VCxfLT1UKSxfPDE1JiYoaCs9SVtvKytdPDxfLF8rPTgsaCs9SVtvKytdPDxfLF8rPTgpLEU9YltoJk9dO246Zm9yKDs7KXtpZihUPUU+Pj4yNCxoPj4+PVQsXy09VCxUPUU+Pj4xNiYyNTUsVCYxNil7aWYoTT1FJjY1NTM1LFQmPTE1LF88VCYmKGgrPUlbbysrXTw8XyxfKz04LF88VCYmKGgrPUlbbysrXTw8XyxfKz04KSksTSs9aCYoMTw8VCktMSxNPnUpe2UubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIsQi5tb2RlPTE2MjA5O2JyZWFrIHR9aWYoaD4+Pj1ULF8tPVQsVD1pLXMsTT5UKXtpZihUPU0tVCxUPmwmJkIuc2FuZSl7ZS5tc2c9ImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIixCLm1vZGU9MTYyMDk7YnJlYWsgdH1pZihOPTAsRj1kLHA9PT0wKXtpZihOKz1jLVQsVDx4KXt4LT1UO2RvIHZbaSsrXT1kW04rK107d2hpbGUoLS1UKTtOPWktTSxGPXZ9fWVsc2UgaWYocDxUKXtpZihOKz1jK3AtVCxULT1wLFQ8eCl7eC09VDtkbyB2W2krK109ZFtOKytdO3doaWxlKC0tVCk7aWYoTj0wLHA8eCl7VD1wLHgtPVQ7ZG8gdltpKytdPWRbTisrXTt3aGlsZSgtLVQpO049aS1NLEY9dn19fWVsc2UgaWYoTis9cC1ULFQ8eCl7eC09VDtkbyB2W2krK109ZFtOKytdO3doaWxlKC0tVCk7Tj1pLU0sRj12fWZvcig7eD4yOyl2W2krK109RltOKytdLHZbaSsrXT1GW04rK10sdltpKytdPUZbTisrXSx4LT0zO3gmJih2W2krK109RltOKytdLHg+MSYmKHZbaSsrXT1GW04rK10pKX1lbHNle049aS1NO2RvIHZbaSsrXT12W04rK10sdltpKytdPXZbTisrXSx2W2krK109dltOKytdLHgtPTM7d2hpbGUoeD4yKTt4JiYodltpKytdPXZbTisrXSx4PjEmJih2W2krK109dltOKytdKSl9fWVsc2UgaWYoKFQmNjQpPT09MCl7RT1iWyhFJjY1NTM1KSsoaCYoMTw8VCktMSldO2NvbnRpbnVlIG59ZWxzZXtlLm1zZz0iaW52YWxpZCBkaXN0YW5jZSBjb2RlIixCLm1vZGU9MTYyMDk7YnJlYWsgdH1icmVha319ZWxzZSBpZigoVCY2NCk9PT0wKXtFPWdbKEUmNjU1MzUpKyhoJigxPDxUKS0xKV07Y29udGludWUgZX1lbHNlIGlmKFQmMzIpe0IubW9kZT0xNjE5MTticmVhayB0fWVsc2V7ZS5tc2c9ImludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSIsQi5tb2RlPTE2MjA5O2JyZWFrIHR9YnJlYWt9fXdoaWxlKG88ciYmaTxmKTt4PV8+PjMsby09eCxfLT14PDwzLGgmPSgxPDxfKS0xLGUubmV4dF9pbj1vLGUubmV4dF9vdXQ9aSxlLmF2YWlsX2luPW88cj81KyhyLW8pOjUtKG8tciksZS5hdmFpbF9vdXQ9aTxmPzI1NysoZi1pKToyNTctKGktZiksQi5ob2xkPWgsQi5iaXRzPV99fSk7dmFyIFYyPVluKChTdXQsRzIpPT57InVzZSBzdHJpY3QiO3ZhciBBNj1uZXcgVWludDE2QXJyYXkoWzMsNCw1LDYsNyw4LDksMTAsMTEsMTMsMTUsMTcsMTksMjMsMjcsMzEsMzUsNDMsNTEsNTksNjcsODMsOTksMTE1LDEzMSwxNjMsMTk1LDIyNywyNTgsMCwwXSksYjY9bmV3IFVpbnQ4QXJyYXkoWzE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE3LDE3LDE3LDE3LDE4LDE4LDE4LDE4LDE5LDE5LDE5LDE5LDIwLDIwLDIwLDIwLDIxLDIxLDIxLDIxLDE2LDcyLDc4XSksdzY9bmV3IFVpbnQxNkFycmF5KFsxLDIsMyw0LDUsNyw5LDEzLDE3LDI1LDMzLDQ5LDY1LDk3LDEyOSwxOTMsMjU3LDM4NSw1MTMsNzY5LDEwMjUsMTUzNywyMDQ5LDMwNzMsNDA5Nyw2MTQ1LDgxOTMsMTIyODksMTYzODUsMjQ1NzcsMCwwXSksVDY9bmV3IFVpbnQ4QXJyYXkoWzE2LDE2LDE2LDE2LDE3LDE3LDE4LDE4LDE5LDE5LDIwLDIwLDIxLDIxLDIyLDIyLDIzLDIzLDI0LDI0LDI1LDI1LDI2LDI2LDI3LDI3LDI4LDI4LDI5LDI5LDY0LDY0XSksTzY9KHQsZSxuLG8scixpLHMsZik9PntsZXQgdT1mLmJpdHMsYz0wLGw9MCxwPTAsZD0wLGg9MCxfPTAsZz0wLGI9MCx3PTAsTz0wLEUsVCx4LE0sTixGPW51bGwsSSx2PW5ldyBVaW50MTZBcnJheSgxNiksQj1uZXcgVWludDE2QXJyYXkoMTYpLEE9bnVsbCxTLEMsTDtmb3IoYz0wO2M8PTE1O2MrKyl2W2NdPTA7Zm9yKGw9MDtsPG87bCsrKXZbZVtuK2xdXSsrO2ZvcihoPXUsZD0xNTtkPj0xJiZ2W2RdPT09MDtkLS0pO2lmKGg+ZCYmKGg9ZCksZD09PTApcmV0dXJuIHJbaSsrXT0xPDwyNHw2NDw8MTZ8MCxyW2krK109MTw8MjR8NjQ8PDE2fDAsZi5iaXRzPTEsMDtmb3IocD0xO3A8ZCYmdltwXT09PTA7cCsrKTtmb3IoaDxwJiYoaD1wKSxiPTEsYz0xO2M8PTE1O2MrKylpZihiPDw9MSxiLT12W2NdLGI8MClyZXR1cm4tMTtpZihiPjAmJih0PT09MHx8ZCE9PTEpKXJldHVybi0xO2ZvcihCWzFdPTAsYz0xO2M8MTU7YysrKUJbYysxXT1CW2NdK3ZbY107Zm9yKGw9MDtsPG87bCsrKWVbbitsXSE9PTAmJihzW0JbZVtuK2xdXSsrXT1sKTtpZih0PT09MD8oRj1BPXMsST0yMCk6dD09PTE/KEY9QTYsQT1iNixJPTI1Nyk6KEY9dzYsQT1UNixJPTApLE89MCxsPTAsYz1wLE49aSxfPWgsZz0wLHg9LTEsdz0xPDxoLE09dy0xLHQ9PT0xJiZ3Pjg1Mnx8dD09PTImJnc+NTkyKXJldHVybiAxO2Zvcig7Oyl7Uz1jLWcsc1tsXSsxPEk/KEM9MCxMPXNbbF0pOnNbbF0+PUk/KEM9QVtzW2xdLUldLEw9RltzW2xdLUldKTooQz05NixMPTApLEU9MTw8Yy1nLFQ9MTw8XyxwPVQ7ZG8gVC09RSxyW04rKE8+PmcpK1RdPVM8PDI0fEM8PDE2fEx8MDt3aGlsZShUIT09MCk7Zm9yKEU9MTw8Yy0xO08mRTspRT4+PTE7aWYoRSE9PTA/KE8mPUUtMSxPKz1FKTpPPTAsbCsrLC0tdltjXT09PTApe2lmKGM9PT1kKWJyZWFrO2M9ZVtuK3NbbF1dfWlmKGM+aCYmKE8mTSkhPT14KXtmb3IoZz09PTAmJihnPWgpLE4rPXAsXz1jLWcsYj0xPDxfO18rZzxkJiYoYi09dltfK2ddLCEoYjw9MCkpOylfKyssYjw8PTE7aWYodys9MTw8Xyx0PT09MSYmdz44NTJ8fHQ9PT0yJiZ3PjU5MilyZXR1cm4gMTt4PU8mTSxyW3hdPWg8PDI0fF88PDE2fE4taXwwfX1yZXR1cm4gTyE9PTAmJihyW04rT109Yy1nPDwyNHw2NDw8MTZ8MCksZi5iaXRzPWgsMH07RzIuZXhwb3J0cz1PNn0pO3ZhciBzbT1ZbigoeHV0LHoyKT0+eyJ1c2Ugc3RyaWN0Ijt6Mi5leHBvcnRzPXtaX05PX0ZMVVNIOjAsWl9QQVJUSUFMX0ZMVVNIOjEsWl9TWU5DX0ZMVVNIOjIsWl9GVUxMX0ZMVVNIOjMsWl9GSU5JU0g6NCxaX0JMT0NLOjUsWl9UUkVFUzo2LFpfT0s6MCxaX1NUUkVBTV9FTkQ6MSxaX05FRURfRElDVDoyLFpfRVJSTk86LTEsWl9TVFJFQU1fRVJST1I6LTIsWl9EQVRBX0VSUk9SOi0zLFpfTUVNX0VSUk9SOi00LFpfQlVGX0VSUk9SOi01LFpfTk9fQ09NUFJFU1NJT046MCxaX0JFU1RfU1BFRUQ6MSxaX0JFU1RfQ09NUFJFU1NJT046OSxaX0RFRkFVTFRfQ09NUFJFU1NJT046LTEsWl9GSUxURVJFRDoxLFpfSFVGRk1BTl9PTkxZOjIsWl9STEU6MyxaX0ZJWEVEOjQsWl9ERUZBVUxUX1NUUkFURUdZOjAsWl9CSU5BUlk6MCxaX1RFWFQ6MSxaX1VOS05PV046MixaX0RFRkxBVEVEOjh9fSk7dmFyIE9TPVluKChDdXQsJHIpPT57InVzZSBzdHJpY3QiO3ZhciBrZz1MMigpLEFpPUIyKCksRTY9azIoKSxtdT1WMigpLFI2PTAsbVM9MSxoUz0yLHtaX0ZJTklTSDpqMixaX0JMT0NLOlM2LFpfVFJFRVM6Y20sWl9PSzp4YyxaX1NUUkVBTV9FTkQ6eDYsWl9ORUVEX0RJQ1Q6QzYsWl9TVFJFQU1fRVJST1I6TnIsWl9EQVRBX0VSUk9SOl9TLFpfTUVNX0VSUk9SOkdnLFpfQlVGX0VSUk9SOlA2LFpfREVGTEFURUQ6SDJ9PXNtKCksbG09MTYxODAscTI9MTYxODEsSzI9MTYxODIsVzI9MTYxODMsWDI9MTYxODQsWTI9MTYxODUsJDI9MTYxODYsWjI9MTYxODcsUTI9MTYxODgsSjI9MTYxODksdW09MTYxOTAsV2k9MTYxOTEsRmc9MTYxOTIsdFM9MTYxOTMsTGc9MTYxOTQsZVM9MTYxOTUsblM9MTYxOTYsb1M9MTYxOTcsclM9MTYxOTgsYW09MTYxOTksZm09MTYyMDAsaVM9MTYyMDEsc1M9MTYyMDIsY1M9MTYyMDMsYVM9MTYyMDQsZlM9MTYyMDUsRGc9MTYyMDYsdVM9MTYyMDcsbFM9MTYyMDgsTW49MTYyMDksVmc9MTYyMTAseVM9MTYyMTEsTTY9ODUyLE42PTU5MixJNj0xNSx2Nj1JNixwUz10PT4odD4+PjI0JjI1NSkrKHQ+Pj44JjY1MjgwKSsoKHQmNjUyODApPDw4KSsoKHQmMjU1KTw8MjQpO2Z1bmN0aW9uIEY2KCl7dGhpcy5zdHJtPW51bGwsdGhpcy5tb2RlPTAsdGhpcy5sYXN0PSExLHRoaXMud3JhcD0wLHRoaXMuaGF2ZWRpY3Q9ITEsdGhpcy5mbGFncz0wLHRoaXMuZG1heD0wLHRoaXMuY2hlY2s9MCx0aGlzLnRvdGFsPTAsdGhpcy5oZWFkPW51bGwsdGhpcy53Yml0cz0wLHRoaXMud3NpemU9MCx0aGlzLndoYXZlPTAsdGhpcy53bmV4dD0wLHRoaXMud2luZG93PW51bGwsdGhpcy5ob2xkPTAsdGhpcy5iaXRzPTAsdGhpcy5sZW5ndGg9MCx0aGlzLm9mZnNldD0wLHRoaXMuZXh0cmE9MCx0aGlzLmxlbmNvZGU9bnVsbCx0aGlzLmRpc3Rjb2RlPW51bGwsdGhpcy5sZW5iaXRzPTAsdGhpcy5kaXN0Yml0cz0wLHRoaXMubmNvZGU9MCx0aGlzLm5sZW49MCx0aGlzLm5kaXN0PTAsdGhpcy5oYXZlPTAsdGhpcy5uZXh0PW51bGwsdGhpcy5sZW5zPW5ldyBVaW50MTZBcnJheSgzMjApLHRoaXMud29yaz1uZXcgVWludDE2QXJyYXkoMjg4KSx0aGlzLmxlbmR5bj1udWxsLHRoaXMuZGlzdGR5bj1udWxsLHRoaXMuc2FuZT0wLHRoaXMuYmFjaz0wLHRoaXMud2FzPTB9dmFyIENjPXQ9PntpZighdClyZXR1cm4gMTtsZXQgZT10LnN0YXRlO3JldHVybiFlfHxlLnN0cm0hPT10fHxlLm1vZGU8bG18fGUubW9kZT55Uz8xOjB9LGdTPXQ9PntpZihDYyh0KSlyZXR1cm4gTnI7bGV0IGU9dC5zdGF0ZTtyZXR1cm4gdC50b3RhbF9pbj10LnRvdGFsX291dD1lLnRvdGFsPTAsdC5tc2c9IiIsZS53cmFwJiYodC5hZGxlcj1lLndyYXAmMSksZS5tb2RlPWxtLGUubGFzdD0wLGUuaGF2ZWRpY3Q9MCxlLmZsYWdzPS0xLGUuZG1heD0zMjc2OCxlLmhlYWQ9bnVsbCxlLmhvbGQ9MCxlLmJpdHM9MCxlLmxlbmNvZGU9ZS5sZW5keW49bmV3IEludDMyQXJyYXkoTTYpLGUuZGlzdGNvZGU9ZS5kaXN0ZHluPW5ldyBJbnQzMkFycmF5KE42KSxlLnNhbmU9MSxlLmJhY2s9LTEseGN9LEFTPXQ9PntpZihDYyh0KSlyZXR1cm4gTnI7bGV0IGU9dC5zdGF0ZTtyZXR1cm4gZS53c2l6ZT0wLGUud2hhdmU9MCxlLnduZXh0PTAsZ1ModCl9LGJTPSh0LGUpPT57bGV0IG47aWYoQ2ModCkpcmV0dXJuIE5yO2xldCBvPXQuc3RhdGU7cmV0dXJuIGU8MD8obj0wLGU9LWUpOihuPShlPj40KSs1LGU8NDgmJihlJj0xNSkpLGUmJihlPDh8fGU+MTUpP05yOihvLndpbmRvdyE9PW51bGwmJm8ud2JpdHMhPT1lJiYoby53aW5kb3c9bnVsbCksby53cmFwPW4sby53Yml0cz1lLEFTKHQpKX0sd1M9KHQsZSk9PntpZighdClyZXR1cm4gTnI7bGV0IG49bmV3IEY2O3Quc3RhdGU9bixuLnN0cm09dCxuLndpbmRvdz1udWxsLG4ubW9kZT1sbTtsZXQgbz1iUyh0LGUpO3JldHVybiBvIT09eGMmJih0LnN0YXRlPW51bGwpLG99LEw2PXQ9PndTKHQsdjYpLGRTPSEwLEJnLFVnLEQ2PXQ9PntpZihkUyl7Qmc9bmV3IEludDMyQXJyYXkoNTEyKSxVZz1uZXcgSW50MzJBcnJheSgzMik7bGV0IGU9MDtmb3IoO2U8MTQ0Oyl0LmxlbnNbZSsrXT04O2Zvcig7ZTwyNTY7KXQubGVuc1tlKytdPTk7Zm9yKDtlPDI4MDspdC5sZW5zW2UrK109Nztmb3IoO2U8Mjg4Oyl0LmxlbnNbZSsrXT04O2ZvcihtdShtUyx0LmxlbnMsMCwyODgsQmcsMCx0Lndvcmsse2JpdHM6OX0pLGU9MDtlPDMyOyl0LmxlbnNbZSsrXT01O211KGhTLHQubGVucywwLDMyLFVnLDAsdC53b3JrLHtiaXRzOjV9KSxkUz0hMX10LmxlbmNvZGU9QmcsdC5sZW5iaXRzPTksdC5kaXN0Y29kZT1VZyx0LmRpc3RiaXRzPTV9LFRTPSh0LGUsbixvKT0+e2xldCByLGk9dC5zdGF0ZTtyZXR1cm4gaS53aW5kb3c9PT1udWxsJiYoaS53c2l6ZT0xPDxpLndiaXRzLGkud25leHQ9MCxpLndoYXZlPTAsaS53aW5kb3c9bmV3IFVpbnQ4QXJyYXkoaS53c2l6ZSkpLG8+PWkud3NpemU/KGkud2luZG93LnNldChlLnN1YmFycmF5KG4taS53c2l6ZSxuKSwwKSxpLnduZXh0PTAsaS53aGF2ZT1pLndzaXplKToocj1pLndzaXplLWkud25leHQscj5vJiYocj1vKSxpLndpbmRvdy5zZXQoZS5zdWJhcnJheShuLW8sbi1vK3IpLGkud25leHQpLG8tPXIsbz8oaS53aW5kb3cuc2V0KGUuc3ViYXJyYXkobi1vLG4pLDApLGkud25leHQ9byxpLndoYXZlPWkud3NpemUpOihpLnduZXh0Kz1yLGkud25leHQ9PT1pLndzaXplJiYoaS53bmV4dD0wKSxpLndoYXZlPGkud3NpemUmJihpLndoYXZlKz1yKSkpLDB9LEI2PSh0LGUpPT57bGV0IG4sbyxyLGkscyxmLHUsYyxsLHAsZCxoLF8sZyxiPTAsdyxPLEUsVCx4LE0sTixGLEk9bmV3IFVpbnQ4QXJyYXkoNCksdixCLEE9bmV3IFVpbnQ4QXJyYXkoWzE2LDE3LDE4LDAsOCw3LDksNiwxMCw1LDExLDQsMTIsMywxMywyLDE0LDEsMTVdKTtpZihDYyh0KXx8IXQub3V0cHV0fHwhdC5pbnB1dCYmdC5hdmFpbF9pbiE9PTApcmV0dXJuIE5yO249dC5zdGF0ZSxuLm1vZGU9PT1XaSYmKG4ubW9kZT1GZykscz10Lm5leHRfb3V0LHI9dC5vdXRwdXQsdT10LmF2YWlsX291dCxpPXQubmV4dF9pbixvPXQuaW5wdXQsZj10LmF2YWlsX2luLGM9bi5ob2xkLGw9bi5iaXRzLHA9ZixkPXUsRj14Yzt0OmZvcig7Oylzd2l0Y2gobi5tb2RlKXtjYXNlIGxtOmlmKG4ud3JhcD09PTApe24ubW9kZT1GZzticmVha31mb3IoO2w8MTY7KXtpZihmPT09MClicmVhayB0O2YtLSxjKz1vW2krK108PGwsbCs9OH1pZihuLndyYXAmMiYmYz09PTM1NjE1KXtuLndiaXRzPT09MCYmKG4ud2JpdHM9MTUpLG4uY2hlY2s9MCxJWzBdPWMmMjU1LElbMV09Yz4+PjgmMjU1LG4uY2hlY2s9QWkobi5jaGVjayxJLDIsMCksYz0wLGw9MCxuLm1vZGU9cTI7YnJlYWt9aWYobi5oZWFkJiYobi5oZWFkLmRvbmU9ITEpLCEobi53cmFwJjEpfHwoKChjJjI1NSk8PDgpKyhjPj44KSklMzEpe3QubXNnPSJpbmNvcnJlY3QgaGVhZGVyIGNoZWNrIixuLm1vZGU9TW47YnJlYWt9aWYoKGMmMTUpIT09SDIpe3QubXNnPSJ1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCIsbi5tb2RlPU1uO2JyZWFrfWlmKGM+Pj49NCxsLT00LE49KGMmMTUpKzgsbi53Yml0cz09PTAmJihuLndiaXRzPU4pLE4+MTV8fE4+bi53Yml0cyl7dC5tc2c9ImludmFsaWQgd2luZG93IHNpemUiLG4ubW9kZT1NbjticmVha31uLmRtYXg9MTw8bi53Yml0cyxuLmZsYWdzPTAsdC5hZGxlcj1uLmNoZWNrPTEsbi5tb2RlPWMmNTEyP0oyOldpLGM9MCxsPTA7YnJlYWs7Y2FzZSBxMjpmb3IoO2w8MTY7KXtpZihmPT09MClicmVhayB0O2YtLSxjKz1vW2krK108PGwsbCs9OH1pZihuLmZsYWdzPWMsKG4uZmxhZ3MmMjU1KSE9PUgyKXt0Lm1zZz0idW5rbm93biBjb21wcmVzc2lvbiBtZXRob2QiLG4ubW9kZT1NbjticmVha31pZihuLmZsYWdzJjU3MzQ0KXt0Lm1zZz0idW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0IixuLm1vZGU9TW47YnJlYWt9bi5oZWFkJiYobi5oZWFkLnRleHQ9Yz4+OCYxKSxuLmZsYWdzJjUxMiYmbi53cmFwJjQmJihJWzBdPWMmMjU1LElbMV09Yz4+PjgmMjU1LG4uY2hlY2s9QWkobi5jaGVjayxJLDIsMCkpLGM9MCxsPTAsbi5tb2RlPUsyO2Nhc2UgSzI6Zm9yKDtsPDMyOyl7aWYoZj09PTApYnJlYWsgdDtmLS0sYys9b1tpKytdPDxsLGwrPTh9bi5oZWFkJiYobi5oZWFkLnRpbWU9Yyksbi5mbGFncyY1MTImJm4ud3JhcCY0JiYoSVswXT1jJjI1NSxJWzFdPWM+Pj44JjI1NSxJWzJdPWM+Pj4xNiYyNTUsSVszXT1jPj4+MjQmMjU1LG4uY2hlY2s9QWkobi5jaGVjayxJLDQsMCkpLGM9MCxsPTAsbi5tb2RlPVcyO2Nhc2UgVzI6Zm9yKDtsPDE2Oyl7aWYoZj09PTApYnJlYWsgdDtmLS0sYys9b1tpKytdPDxsLGwrPTh9bi5oZWFkJiYobi5oZWFkLnhmbGFncz1jJjI1NSxuLmhlYWQub3M9Yz4+OCksbi5mbGFncyY1MTImJm4ud3JhcCY0JiYoSVswXT1jJjI1NSxJWzFdPWM+Pj44JjI1NSxuLmNoZWNrPUFpKG4uY2hlY2ssSSwyLDApKSxjPTAsbD0wLG4ubW9kZT1YMjtjYXNlIFgyOmlmKG4uZmxhZ3MmMTAyNCl7Zm9yKDtsPDE2Oyl7aWYoZj09PTApYnJlYWsgdDtmLS0sYys9b1tpKytdPDxsLGwrPTh9bi5sZW5ndGg9YyxuLmhlYWQmJihuLmhlYWQuZXh0cmFfbGVuPWMpLG4uZmxhZ3MmNTEyJiZuLndyYXAmNCYmKElbMF09YyYyNTUsSVsxXT1jPj4+OCYyNTUsbi5jaGVjaz1BaShuLmNoZWNrLEksMiwwKSksYz0wLGw9MH1lbHNlIG4uaGVhZCYmKG4uaGVhZC5leHRyYT1udWxsKTtuLm1vZGU9WTI7Y2FzZSBZMjppZihuLmZsYWdzJjEwMjQmJihoPW4ubGVuZ3RoLGg+ZiYmKGg9ZiksaCYmKG4uaGVhZCYmKE49bi5oZWFkLmV4dHJhX2xlbi1uLmxlbmd0aCxuLmhlYWQuZXh0cmF8fChuLmhlYWQuZXh0cmE9bmV3IFVpbnQ4QXJyYXkobi5oZWFkLmV4dHJhX2xlbikpLG4uaGVhZC5leHRyYS5zZXQoby5zdWJhcnJheShpLGkraCksTikpLG4uZmxhZ3MmNTEyJiZuLndyYXAmNCYmKG4uY2hlY2s9QWkobi5jaGVjayxvLGgsaSkpLGYtPWgsaSs9aCxuLmxlbmd0aC09aCksbi5sZW5ndGgpKWJyZWFrIHQ7bi5sZW5ndGg9MCxuLm1vZGU9JDI7Y2FzZSAkMjppZihuLmZsYWdzJjIwNDgpe2lmKGY9PT0wKWJyZWFrIHQ7aD0wO2RvIE49b1tpK2grK10sbi5oZWFkJiZOJiZuLmxlbmd0aDw2NTUzNiYmKG4uaGVhZC5uYW1lKz1TdHJpbmcuZnJvbUNoYXJDb2RlKE4pKTt3aGlsZShOJiZoPGYpO2lmKG4uZmxhZ3MmNTEyJiZuLndyYXAmNCYmKG4uY2hlY2s9QWkobi5jaGVjayxvLGgsaSkpLGYtPWgsaSs9aCxOKWJyZWFrIHR9ZWxzZSBuLmhlYWQmJihuLmhlYWQubmFtZT1udWxsKTtuLmxlbmd0aD0wLG4ubW9kZT1aMjtjYXNlIFoyOmlmKG4uZmxhZ3MmNDA5Nil7aWYoZj09PTApYnJlYWsgdDtoPTA7ZG8gTj1vW2kraCsrXSxuLmhlYWQmJk4mJm4ubGVuZ3RoPDY1NTM2JiYobi5oZWFkLmNvbW1lbnQrPVN0cmluZy5mcm9tQ2hhckNvZGUoTikpO3doaWxlKE4mJmg8Zik7aWYobi5mbGFncyY1MTImJm4ud3JhcCY0JiYobi5jaGVjaz1BaShuLmNoZWNrLG8saCxpKSksZi09aCxpKz1oLE4pYnJlYWsgdH1lbHNlIG4uaGVhZCYmKG4uaGVhZC5jb21tZW50PW51bGwpO24ubW9kZT1RMjtjYXNlIFEyOmlmKG4uZmxhZ3MmNTEyKXtmb3IoO2w8MTY7KXtpZihmPT09MClicmVhayB0O2YtLSxjKz1vW2krK108PGwsbCs9OH1pZihuLndyYXAmNCYmYyE9PShuLmNoZWNrJjY1NTM1KSl7dC5tc2c9ImhlYWRlciBjcmMgbWlzbWF0Y2giLG4ubW9kZT1NbjticmVha31jPTAsbD0wfW4uaGVhZCYmKG4uaGVhZC5oY3JjPW4uZmxhZ3M+PjkmMSxuLmhlYWQuZG9uZT0hMCksdC5hZGxlcj1uLmNoZWNrPTAsbi5tb2RlPVdpO2JyZWFrO2Nhc2UgSjI6Zm9yKDtsPDMyOyl7aWYoZj09PTApYnJlYWsgdDtmLS0sYys9b1tpKytdPDxsLGwrPTh9dC5hZGxlcj1uLmNoZWNrPXBTKGMpLGM9MCxsPTAsbi5tb2RlPXVtO2Nhc2UgdW06aWYobi5oYXZlZGljdD09PTApcmV0dXJuIHQubmV4dF9vdXQ9cyx0LmF2YWlsX291dD11LHQubmV4dF9pbj1pLHQuYXZhaWxfaW49ZixuLmhvbGQ9YyxuLmJpdHM9bCxDNjt0LmFkbGVyPW4uY2hlY2s9MSxuLm1vZGU9V2k7Y2FzZSBXaTppZihlPT09UzZ8fGU9PT1jbSlicmVhayB0O2Nhc2UgRmc6aWYobi5sYXN0KXtjPj4+PWwmNyxsLT1sJjcsbi5tb2RlPURnO2JyZWFrfWZvcig7bDwzOyl7aWYoZj09PTApYnJlYWsgdDtmLS0sYys9b1tpKytdPDxsLGwrPTh9c3dpdGNoKG4ubGFzdD1jJjEsYz4+Pj0xLGwtPTEsYyYzKXtjYXNlIDA6bi5tb2RlPXRTO2JyZWFrO2Nhc2UgMTppZihENihuKSxuLm1vZGU9YW0sZT09PWNtKXtjPj4+PTIsbC09MjticmVhayB0fWJyZWFrO2Nhc2UgMjpuLm1vZGU9blM7YnJlYWs7Y2FzZSAzOnQubXNnPSJpbnZhbGlkIGJsb2NrIHR5cGUiLG4ubW9kZT1Nbn1jPj4+PTIsbC09MjticmVhaztjYXNlIHRTOmZvcihjPj4+PWwmNyxsLT1sJjc7bDwzMjspe2lmKGY9PT0wKWJyZWFrIHQ7Zi0tLGMrPW9baSsrXTw8bCxsKz04fWlmKChjJjY1NTM1KSE9PShjPj4+MTZeNjU1MzUpKXt0Lm1zZz0iaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocyIsbi5tb2RlPU1uO2JyZWFrfWlmKG4ubGVuZ3RoPWMmNjU1MzUsYz0wLGw9MCxuLm1vZGU9TGcsZT09PWNtKWJyZWFrIHQ7Y2FzZSBMZzpuLm1vZGU9ZVM7Y2FzZSBlUzppZihoPW4ubGVuZ3RoLGgpe2lmKGg+ZiYmKGg9ZiksaD51JiYoaD11KSxoPT09MClicmVhayB0O3Iuc2V0KG8uc3ViYXJyYXkoaSxpK2gpLHMpLGYtPWgsaSs9aCx1LT1oLHMrPWgsbi5sZW5ndGgtPWg7YnJlYWt9bi5tb2RlPVdpO2JyZWFrO2Nhc2UgblM6Zm9yKDtsPDE0Oyl7aWYoZj09PTApYnJlYWsgdDtmLS0sYys9b1tpKytdPDxsLGwrPTh9aWYobi5ubGVuPShjJjMxKSsyNTcsYz4+Pj01LGwtPTUsbi5uZGlzdD0oYyYzMSkrMSxjPj4+PTUsbC09NSxuLm5jb2RlPShjJjE1KSs0LGM+Pj49NCxsLT00LG4ubmxlbj4yODZ8fG4ubmRpc3Q+MzApe3QubXNnPSJ0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scyIsbi5tb2RlPU1uO2JyZWFrfW4uaGF2ZT0wLG4ubW9kZT1vUztjYXNlIG9TOmZvcig7bi5oYXZlPG4ubmNvZGU7KXtmb3IoO2w8Mzspe2lmKGY9PT0wKWJyZWFrIHQ7Zi0tLGMrPW9baSsrXTw8bCxsKz04fW4ubGVuc1tBW24uaGF2ZSsrXV09YyY3LGM+Pj49MyxsLT0zfWZvcig7bi5oYXZlPDE5OyluLmxlbnNbQVtuLmhhdmUrK11dPTA7aWYobi5sZW5jb2RlPW4ubGVuZHluLG4ubGVuYml0cz03LHY9e2JpdHM6bi5sZW5iaXRzfSxGPW11KFI2LG4ubGVucywwLDE5LG4ubGVuY29kZSwwLG4ud29yayx2KSxuLmxlbmJpdHM9di5iaXRzLEYpe3QubXNnPSJpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQiLG4ubW9kZT1NbjticmVha31uLmhhdmU9MCxuLm1vZGU9clM7Y2FzZSByUzpmb3IoO24uaGF2ZTxuLm5sZW4rbi5uZGlzdDspe2Zvcig7Yj1uLmxlbmNvZGVbYyYoMTw8bi5sZW5iaXRzKS0xXSx3PWI+Pj4yNCxPPWI+Pj4xNiYyNTUsRT1iJjY1NTM1LCEodzw9bCk7KXtpZihmPT09MClicmVhayB0O2YtLSxjKz1vW2krK108PGwsbCs9OH1pZihFPDE2KWM+Pj49dyxsLT13LG4ubGVuc1tuLmhhdmUrK109RTtlbHNle2lmKEU9PT0xNil7Zm9yKEI9dysyO2w8Qjspe2lmKGY9PT0wKWJyZWFrIHQ7Zi0tLGMrPW9baSsrXTw8bCxsKz04fWlmKGM+Pj49dyxsLT13LG4uaGF2ZT09PTApe3QubXNnPSJpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0IixuLm1vZGU9TW47YnJlYWt9Tj1uLmxlbnNbbi5oYXZlLTFdLGg9MysoYyYzKSxjPj4+PTIsbC09Mn1lbHNlIGlmKEU9PT0xNyl7Zm9yKEI9dyszO2w8Qjspe2lmKGY9PT0wKWJyZWFrIHQ7Zi0tLGMrPW9baSsrXTw8bCxsKz04fWM+Pj49dyxsLT13LE49MCxoPTMrKGMmNyksYz4+Pj0zLGwtPTN9ZWxzZXtmb3IoQj13Kzc7bDxCOyl7aWYoZj09PTApYnJlYWsgdDtmLS0sYys9b1tpKytdPDxsLGwrPTh9Yz4+Pj13LGwtPXcsTj0wLGg9MTErKGMmMTI3KSxjPj4+PTcsbC09N31pZihuLmhhdmUraD5uLm5sZW4rbi5uZGlzdCl7dC5tc2c9ImludmFsaWQgYml0IGxlbmd0aCByZXBlYXQiLG4ubW9kZT1NbjticmVha31mb3IoO2gtLTspbi5sZW5zW24uaGF2ZSsrXT1OfX1pZihuLm1vZGU9PT1NbilicmVhaztpZihuLmxlbnNbMjU2XT09PTApe3QubXNnPSJpbnZhbGlkIGNvZGUgLS0gbWlzc2luZyBlbmQtb2YtYmxvY2siLG4ubW9kZT1NbjticmVha31pZihuLmxlbmJpdHM9OSx2PXtiaXRzOm4ubGVuYml0c30sRj1tdShtUyxuLmxlbnMsMCxuLm5sZW4sbi5sZW5jb2RlLDAsbi53b3JrLHYpLG4ubGVuYml0cz12LmJpdHMsRil7dC5tc2c9ImludmFsaWQgbGl0ZXJhbC9sZW5ndGhzIHNldCIsbi5tb2RlPU1uO2JyZWFrfWlmKG4uZGlzdGJpdHM9NixuLmRpc3Rjb2RlPW4uZGlzdGR5bix2PXtiaXRzOm4uZGlzdGJpdHN9LEY9bXUoaFMsbi5sZW5zLG4ubmxlbixuLm5kaXN0LG4uZGlzdGNvZGUsMCxuLndvcmssdiksbi5kaXN0Yml0cz12LmJpdHMsRil7dC5tc2c9ImludmFsaWQgZGlzdGFuY2VzIHNldCIsbi5tb2RlPU1uO2JyZWFrfWlmKG4ubW9kZT1hbSxlPT09Y20pYnJlYWsgdDtjYXNlIGFtOm4ubW9kZT1mbTtjYXNlIGZtOmlmKGY+PTYmJnU+PTI1OCl7dC5uZXh0X291dD1zLHQuYXZhaWxfb3V0PXUsdC5uZXh0X2luPWksdC5hdmFpbF9pbj1mLG4uaG9sZD1jLG4uYml0cz1sLEU2KHQsZCkscz10Lm5leHRfb3V0LHI9dC5vdXRwdXQsdT10LmF2YWlsX291dCxpPXQubmV4dF9pbixvPXQuaW5wdXQsZj10LmF2YWlsX2luLGM9bi5ob2xkLGw9bi5iaXRzLG4ubW9kZT09PVdpJiYobi5iYWNrPS0xKTticmVha31mb3Iobi5iYWNrPTA7Yj1uLmxlbmNvZGVbYyYoMTw8bi5sZW5iaXRzKS0xXSx3PWI+Pj4yNCxPPWI+Pj4xNiYyNTUsRT1iJjY1NTM1LCEodzw9bCk7KXtpZihmPT09MClicmVhayB0O2YtLSxjKz1vW2krK108PGwsbCs9OH1pZihPJiYoTyYyNDApPT09MCl7Zm9yKFQ9dyx4PU8sTT1FO2I9bi5sZW5jb2RlW00rKChjJigxPDxUK3gpLTEpPj5UKV0sdz1iPj4+MjQsTz1iPj4+MTYmMjU1LEU9YiY2NTUzNSwhKFQrdzw9bCk7KXtpZihmPT09MClicmVhayB0O2YtLSxjKz1vW2krK108PGwsbCs9OH1jPj4+PVQsbC09VCxuLmJhY2srPVR9aWYoYz4+Pj13LGwtPXcsbi5iYWNrKz13LG4ubGVuZ3RoPUUsTz09PTApe24ubW9kZT1mUzticmVha31pZihPJjMyKXtuLmJhY2s9LTEsbi5tb2RlPVdpO2JyZWFrfWlmKE8mNjQpe3QubXNnPSJpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUiLG4ubW9kZT1NbjticmVha31uLmV4dHJhPU8mMTUsbi5tb2RlPWlTO2Nhc2UgaVM6aWYobi5leHRyYSl7Zm9yKEI9bi5leHRyYTtsPEI7KXtpZihmPT09MClicmVhayB0O2YtLSxjKz1vW2krK108PGwsbCs9OH1uLmxlbmd0aCs9YyYoMTw8bi5leHRyYSktMSxjPj4+PW4uZXh0cmEsbC09bi5leHRyYSxuLmJhY2srPW4uZXh0cmF9bi53YXM9bi5sZW5ndGgsbi5tb2RlPXNTO2Nhc2Ugc1M6Zm9yKDtiPW4uZGlzdGNvZGVbYyYoMTw8bi5kaXN0Yml0cyktMV0sdz1iPj4+MjQsTz1iPj4+MTYmMjU1LEU9YiY2NTUzNSwhKHc8PWwpOyl7aWYoZj09PTApYnJlYWsgdDtmLS0sYys9b1tpKytdPDxsLGwrPTh9aWYoKE8mMjQwKT09PTApe2ZvcihUPXcseD1PLE09RTtiPW4uZGlzdGNvZGVbTSsoKGMmKDE8PFQreCktMSk+PlQpXSx3PWI+Pj4yNCxPPWI+Pj4xNiYyNTUsRT1iJjY1NTM1LCEoVCt3PD1sKTspe2lmKGY9PT0wKWJyZWFrIHQ7Zi0tLGMrPW9baSsrXTw8bCxsKz04fWM+Pj49VCxsLT1ULG4uYmFjays9VH1pZihjPj4+PXcsbC09dyxuLmJhY2srPXcsTyY2NCl7dC5tc2c9ImludmFsaWQgZGlzdGFuY2UgY29kZSIsbi5tb2RlPU1uO2JyZWFrfW4ub2Zmc2V0PUUsbi5leHRyYT1PJjE1LG4ubW9kZT1jUztjYXNlIGNTOmlmKG4uZXh0cmEpe2ZvcihCPW4uZXh0cmE7bDxCOyl7aWYoZj09PTApYnJlYWsgdDtmLS0sYys9b1tpKytdPDxsLGwrPTh9bi5vZmZzZXQrPWMmKDE8PG4uZXh0cmEpLTEsYz4+Pj1uLmV4dHJhLGwtPW4uZXh0cmEsbi5iYWNrKz1uLmV4dHJhfWlmKG4ub2Zmc2V0Pm4uZG1heCl7dC5tc2c9ImludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrIixuLm1vZGU9TW47YnJlYWt9bi5tb2RlPWFTO2Nhc2UgYVM6aWYodT09PTApYnJlYWsgdDtpZihoPWQtdSxuLm9mZnNldD5oKXtpZihoPW4ub2Zmc2V0LWgsaD5uLndoYXZlJiZuLnNhbmUpe3QubXNnPSJpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayIsbi5tb2RlPU1uO2JyZWFrfWg+bi53bmV4dD8oaC09bi53bmV4dCxfPW4ud3NpemUtaCk6Xz1uLnduZXh0LWgsaD5uLmxlbmd0aCYmKGg9bi5sZW5ndGgpLGc9bi53aW5kb3d9ZWxzZSBnPXIsXz1zLW4ub2Zmc2V0LGg9bi5sZW5ndGg7aD51JiYoaD11KSx1LT1oLG4ubGVuZ3RoLT1oO2RvIHJbcysrXT1nW18rK107d2hpbGUoLS1oKTtuLmxlbmd0aD09PTAmJihuLm1vZGU9Zm0pO2JyZWFrO2Nhc2UgZlM6aWYodT09PTApYnJlYWsgdDtyW3MrK109bi5sZW5ndGgsdS0tLG4ubW9kZT1mbTticmVhaztjYXNlIERnOmlmKG4ud3JhcCl7Zm9yKDtsPDMyOyl7aWYoZj09PTApYnJlYWsgdDtmLS0sY3w9b1tpKytdPDxsLGwrPTh9aWYoZC09dSx0LnRvdGFsX291dCs9ZCxuLnRvdGFsKz1kLG4ud3JhcCY0JiZkJiYodC5hZGxlcj1uLmNoZWNrPW4uZmxhZ3M/QWkobi5jaGVjayxyLGQscy1kKTprZyhuLmNoZWNrLHIsZCxzLWQpKSxkPXUsbi53cmFwJjQmJihuLmZsYWdzP2M6cFMoYykpIT09bi5jaGVjayl7dC5tc2c9ImluY29ycmVjdCBkYXRhIGNoZWNrIixuLm1vZGU9TW47YnJlYWt9Yz0wLGw9MH1uLm1vZGU9dVM7Y2FzZSB1UzppZihuLndyYXAmJm4uZmxhZ3Mpe2Zvcig7bDwzMjspe2lmKGY9PT0wKWJyZWFrIHQ7Zi0tLGMrPW9baSsrXTw8bCxsKz04fWlmKG4ud3JhcCY0JiZjIT09KG4udG90YWwmNDI5NDk2NzI5NSkpe3QubXNnPSJpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrIixuLm1vZGU9TW47YnJlYWt9Yz0wLGw9MH1uLm1vZGU9bFM7Y2FzZSBsUzpGPXg2O2JyZWFrIHQ7Y2FzZSBNbjpGPV9TO2JyZWFrIHQ7Y2FzZSBWZzpyZXR1cm4gR2c7Y2FzZSB5UzpkZWZhdWx0OnJldHVybiBOcn1yZXR1cm4gdC5uZXh0X291dD1zLHQuYXZhaWxfb3V0PXUsdC5uZXh0X2luPWksdC5hdmFpbF9pbj1mLG4uaG9sZD1jLG4uYml0cz1sLChuLndzaXplfHxkIT09dC5hdmFpbF9vdXQmJm4ubW9kZTxNbiYmKG4ubW9kZTxEZ3x8ZSE9PWoyKSkmJlRTKHQsdC5vdXRwdXQsdC5uZXh0X291dCxkLXQuYXZhaWxfb3V0KT8obi5tb2RlPVZnLEdnKToocC09dC5hdmFpbF9pbixkLT10LmF2YWlsX291dCx0LnRvdGFsX2luKz1wLHQudG90YWxfb3V0Kz1kLG4udG90YWwrPWQsbi53cmFwJjQmJmQmJih0LmFkbGVyPW4uY2hlY2s9bi5mbGFncz9BaShuLmNoZWNrLHIsZCx0Lm5leHRfb3V0LWQpOmtnKG4uY2hlY2sscixkLHQubmV4dF9vdXQtZCkpLHQuZGF0YV90eXBlPW4uYml0cysobi5sYXN0PzY0OjApKyhuLm1vZGU9PT1XaT8xMjg6MCkrKG4ubW9kZT09PWFtfHxuLm1vZGU9PT1MZz8yNTY6MCksKHA9PT0wJiZkPT09MHx8ZT09PWoyKSYmRj09PXhjJiYoRj1QNiksRil9LFU2PXQ9PntpZihDYyh0KSlyZXR1cm4gTnI7bGV0IGU9dC5zdGF0ZTtyZXR1cm4gZS53aW5kb3cmJihlLndpbmRvdz1udWxsKSx0LnN0YXRlPW51bGwseGN9LGs2PSh0LGUpPT57aWYoQ2ModCkpcmV0dXJuIE5yO2xldCBuPXQuc3RhdGU7cmV0dXJuKG4ud3JhcCYyKT09PTA/TnI6KG4uaGVhZD1lLGUuZG9uZT0hMSx4Yyl9LEc2PSh0LGUpPT57bGV0IG49ZS5sZW5ndGgsbyxyLGk7cmV0dXJuIENjKHQpfHwobz10LnN0YXRlLG8ud3JhcCE9PTAmJm8ubW9kZSE9PXVtKT9OcjpvLm1vZGU9PT11bSYmKHI9MSxyPWtnKHIsZSxuLDApLHIhPT1vLmNoZWNrKT9fUzooaT1UUyh0LGUsbixuKSxpPyhvLm1vZGU9VmcsR2cpOihvLmhhdmVkaWN0PTEseGMpKX07JHIuZXhwb3J0cy5pbmZsYXRlUmVzZXQ9QVM7JHIuZXhwb3J0cy5pbmZsYXRlUmVzZXQyPWJTOyRyLmV4cG9ydHMuaW5mbGF0ZVJlc2V0S2VlcD1nUzskci5leHBvcnRzLmluZmxhdGVJbml0PUw2OyRyLmV4cG9ydHMuaW5mbGF0ZUluaXQyPXdTOyRyLmV4cG9ydHMuaW5mbGF0ZT1CNjskci5leHBvcnRzLmluZmxhdGVFbmQ9VTY7JHIuZXhwb3J0cy5pbmZsYXRlR2V0SGVhZGVyPWs2OyRyLmV4cG9ydHMuaW5mbGF0ZVNldERpY3Rpb25hcnk9RzY7JHIuZXhwb3J0cy5pbmZsYXRlSW5mbz0icGFrbyBpbmZsYXRlIChmcm9tIE5vZGVjYSBwcm9qZWN0KSJ9KTt2YXIgRVM9WW4oKFB1dCx6Zyk9PnsidXNlIHN0cmljdCI7dmFyIFY2PSh0LGUpPT5PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKTt6Zy5leHBvcnRzLmFzc2lnbj1mdW5jdGlvbih0KXtsZXQgZT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSk7Zm9yKDtlLmxlbmd0aDspe2xldCBuPWUuc2hpZnQoKTtpZihuKXtpZih0eXBlb2YgbiE9Im9iamVjdCIpdGhyb3cgbmV3IFR5cGVFcnJvcihuKyJtdXN0IGJlIG5vbi1vYmplY3QiKTtmb3IobGV0IG8gaW4gbilWNihuLG8pJiYodFtvXT1uW29dKX19cmV0dXJuIHR9O3pnLmV4cG9ydHMuZmxhdHRlbkNodW5rcz10PT57bGV0IGU9MDtmb3IobGV0IG89MCxyPXQubGVuZ3RoO288cjtvKyspZSs9dFtvXS5sZW5ndGg7bGV0IG49bmV3IFVpbnQ4QXJyYXkoZSk7Zm9yKGxldCBvPTAscj0wLGk9dC5sZW5ndGg7bzxpO28rKyl7bGV0IHM9dFtvXTtuLnNldChzLHIpLHIrPXMubGVuZ3RofXJldHVybiBufX0pO3ZhciBTUz1ZbigoTXV0LHBtKT0+eyJ1c2Ugc3RyaWN0Ijt2YXIgUlM9ITA7dHJ5e1N0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCxuZXcgVWludDhBcnJheSgxKSl9Y2F0Y2h7UlM9ITF9dmFyIGh1PW5ldyBVaW50OEFycmF5KDI1Nik7Zm9yKGxldCB0PTA7dDwyNTY7dCsrKWh1W3RdPXQ+PTI1Mj82OnQ+PTI0OD81OnQ+PTI0MD80OnQ+PTIyND8zOnQ+PTE5Mj8yOjE7aHVbMjU0XT1odVsyNTRdPTE7cG0uZXhwb3J0cy5zdHJpbmcyYnVmPXQ9PntpZih0eXBlb2YgVGV4dEVuY29kZXI9PSJmdW5jdGlvbiImJlRleHRFbmNvZGVyLnByb3RvdHlwZS5lbmNvZGUpcmV0dXJuIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSh0KTtsZXQgZSxuLG8scixpLHM9dC5sZW5ndGgsZj0wO2ZvcihyPTA7cjxzO3IrKyluPXQuY2hhckNvZGVBdChyKSwobiY2NDUxMik9PT01NTI5NiYmcisxPHMmJihvPXQuY2hhckNvZGVBdChyKzEpLChvJjY0NTEyKT09PTU2MzIwJiYobj02NTUzNisobi01NTI5Njw8MTApKyhvLTU2MzIwKSxyKyspKSxmKz1uPDEyOD8xOm48MjA0OD8yOm48NjU1MzY/Mzo0O2ZvcihlPW5ldyBVaW50OEFycmF5KGYpLGk9MCxyPTA7aTxmO3IrKyluPXQuY2hhckNvZGVBdChyKSwobiY2NDUxMik9PT01NTI5NiYmcisxPHMmJihvPXQuY2hhckNvZGVBdChyKzEpLChvJjY0NTEyKT09PTU2MzIwJiYobj02NTUzNisobi01NTI5Njw8MTApKyhvLTU2MzIwKSxyKyspKSxuPDEyOD9lW2krK109bjpuPDIwNDg/KGVbaSsrXT0xOTJ8bj4+PjYsZVtpKytdPTEyOHxuJjYzKTpuPDY1NTM2PyhlW2krK109MjI0fG4+Pj4xMixlW2krK109MTI4fG4+Pj42JjYzLGVbaSsrXT0xMjh8biY2Myk6KGVbaSsrXT0yNDB8bj4+PjE4LGVbaSsrXT0xMjh8bj4+PjEyJjYzLGVbaSsrXT0xMjh8bj4+PjYmNjMsZVtpKytdPTEyOHxuJjYzKTtyZXR1cm4gZX07dmFyIHo2PSh0LGUpPT57aWYoZTw2NTUzNCYmdC5zdWJhcnJheSYmUlMpcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCx0Lmxlbmd0aD09PWU/dDp0LnN1YmFycmF5KDAsZSkpO2xldCBuPSIiO2ZvcihsZXQgbz0wO288ZTtvKyspbis9U3RyaW5nLmZyb21DaGFyQ29kZSh0W29dKTtyZXR1cm4gbn07cG0uZXhwb3J0cy5idWYyc3RyaW5nPSh0LGUpPT57bGV0IG49ZXx8dC5sZW5ndGg7aWYodHlwZW9mIFRleHREZWNvZGVyPT0iZnVuY3Rpb24iJiZUZXh0RGVjb2Rlci5wcm90b3R5cGUuZGVjb2RlKXJldHVybiBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUodC5zdWJhcnJheSgwLGUpKTtsZXQgbyxyLGk9bmV3IEFycmF5KG4qMik7Zm9yKHI9MCxvPTA7bzxuOyl7bGV0IHM9dFtvKytdO2lmKHM8MTI4KXtpW3IrK109cztjb250aW51ZX1sZXQgZj1odVtzXTtpZihmPjQpe2lbcisrXT02NTUzMyxvKz1mLTE7Y29udGludWV9Zm9yKHMmPWY9PT0yPzMxOmY9PT0zPzE1Ojc7Zj4xJiZvPG47KXM9czw8Nnx0W28rK10mNjMsZi0tO2lmKGY+MSl7aVtyKytdPTY1NTMzO2NvbnRpbnVlfXM8NjU1MzY/aVtyKytdPXM6KHMtPTY1NTM2LGlbcisrXT01NTI5NnxzPj4xMCYxMDIzLGlbcisrXT01NjMyMHxzJjEwMjMpfXJldHVybiB6NihpLHIpfTtwbS5leHBvcnRzLnV0Zjhib3JkZXI9KHQsZSk9PntlPWV8fHQubGVuZ3RoLGU+dC5sZW5ndGgmJihlPXQubGVuZ3RoKTtsZXQgbj1lLTE7Zm9yKDtuPj0wJiYodFtuXSYxOTIpPT09MTI4OyluLS07cmV0dXJuIG48MHx8bj09PTA/ZTpuK2h1W3Rbbl1dPmU/bjplfX0pO3ZhciBDUz1ZbigoTnV0LHhTKT0+eyJ1c2Ugc3RyaWN0Ijt4Uy5leHBvcnRzPXsyOiJuZWVkIGRpY3Rpb25hcnkiLDE6InN0cmVhbSBlbmQiLDA6IiIsIi0xIjoiZmlsZSBlcnJvciIsIi0yIjoic3RyZWFtIGVycm9yIiwiLTMiOiJkYXRhIGVycm9yIiwiLTQiOiJpbnN1ZmZpY2llbnQgbWVtb3J5IiwiLTUiOiJidWZmZXIgZXJyb3IiLCItNiI6ImluY29tcGF0aWJsZSB2ZXJzaW9uIn19KTt2YXIgTVM9WW4oKEl1dCxQUyk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gajYoKXt0aGlzLmlucHV0PW51bGwsdGhpcy5uZXh0X2luPTAsdGhpcy5hdmFpbF9pbj0wLHRoaXMudG90YWxfaW49MCx0aGlzLm91dHB1dD1udWxsLHRoaXMubmV4dF9vdXQ9MCx0aGlzLmF2YWlsX291dD0wLHRoaXMudG90YWxfb3V0PTAsdGhpcy5tc2c9IiIsdGhpcy5zdGF0ZT1udWxsLHRoaXMuZGF0YV90eXBlPTIsdGhpcy5hZGxlcj0wfVBTLmV4cG9ydHM9ajZ9KTt2YXIgSVM9WW4oKHZ1dCxOUyk9PnsidXNlIHN0cmljdCI7ZnVuY3Rpb24gSDYoKXt0aGlzLnRleHQ9MCx0aGlzLnRpbWU9MCx0aGlzLnhmbGFncz0wLHRoaXMub3M9MCx0aGlzLmV4dHJhPW51bGwsdGhpcy5leHRyYV9sZW49MCx0aGlzLm5hbWU9IiIsdGhpcy5jb21tZW50PSIiLHRoaXMuaGNyYz0wLHRoaXMuZG9uZT0hMX1OUy5leHBvcnRzPUg2fSk7dmFyIERTPVluKChGdXQsVmEpPT57InVzZSBzdHJpY3QiO3ZhciBYaT1PUygpLEZTPUVTKCkscWc9U1MoKSxLZz1DUygpLHE2PU1TKCksSzY9SVMoKSxMUz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLHtaX05PX0ZMVVNIOlc2LFpfRklOSVNIOlg2LFpfT0s6X3UsWl9TVFJFQU1fRU5EOmpnLFpfTkVFRF9ESUNUOkhnLFpfU1RSRUFNX0VSUk9SOlk2LFpfREFUQV9FUlJPUjp2UyxaX01FTV9FUlJPUjokNn09c20oKTtmdW5jdGlvbiB5dSh0KXt0aGlzLm9wdGlvbnM9RlMuYXNzaWduKHtjaHVua1NpemU6MTAyNCo2NCx3aW5kb3dCaXRzOjE1LHRvOiIifSx0fHx7fSk7bGV0IGU9dGhpcy5vcHRpb25zO2UucmF3JiZlLndpbmRvd0JpdHM+PTAmJmUud2luZG93Qml0czwxNiYmKGUud2luZG93Qml0cz0tZS53aW5kb3dCaXRzLGUud2luZG93Qml0cz09PTAmJihlLndpbmRvd0JpdHM9LTE1KSksZS53aW5kb3dCaXRzPj0wJiZlLndpbmRvd0JpdHM8MTYmJiEodCYmdC53aW5kb3dCaXRzKSYmKGUud2luZG93Qml0cys9MzIpLGUud2luZG93Qml0cz4xNSYmZS53aW5kb3dCaXRzPDQ4JiYoZS53aW5kb3dCaXRzJjE1KT09PTAmJihlLndpbmRvd0JpdHN8PTE1KSx0aGlzLmVycj0wLHRoaXMubXNnPSIiLHRoaXMuZW5kZWQ9ITEsdGhpcy5jaHVua3M9W10sdGhpcy5zdHJtPW5ldyBxNix0aGlzLnN0cm0uYXZhaWxfb3V0PTA7bGV0IG49WGkuaW5mbGF0ZUluaXQyKHRoaXMuc3RybSxlLndpbmRvd0JpdHMpO2lmKG4hPT1fdSl0aHJvdyBuZXcgRXJyb3IoS2dbbl0pO2lmKHRoaXMuaGVhZGVyPW5ldyBLNixYaS5pbmZsYXRlR2V0SGVhZGVyKHRoaXMuc3RybSx0aGlzLmhlYWRlciksZS5kaWN0aW9uYXJ5JiYodHlwZW9mIGUuZGljdGlvbmFyeT09InN0cmluZyI/ZS5kaWN0aW9uYXJ5PXFnLnN0cmluZzJidWYoZS5kaWN0aW9uYXJ5KTpMUy5jYWxsKGUuZGljdGlvbmFyeSk9PT0iW29iamVjdCBBcnJheUJ1ZmZlcl0iJiYoZS5kaWN0aW9uYXJ5PW5ldyBVaW50OEFycmF5KGUuZGljdGlvbmFyeSkpLGUucmF3JiYobj1YaS5pbmZsYXRlU2V0RGljdGlvbmFyeSh0aGlzLnN0cm0sZS5kaWN0aW9uYXJ5KSxuIT09X3UpKSl0aHJvdyBuZXcgRXJyb3IoS2dbbl0pfXl1LnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQsZSl7bGV0IG49dGhpcy5zdHJtLG89dGhpcy5vcHRpb25zLmNodW5rU2l6ZSxyPXRoaXMub3B0aW9ucy5kaWN0aW9uYXJ5LGkscyxmO2lmKHRoaXMuZW5kZWQpcmV0dXJuITE7Zm9yKGU9PT1+fmU/cz1lOnM9ZT09PSEwP1g2Olc2LExTLmNhbGwodCk9PT0iW29iamVjdCBBcnJheUJ1ZmZlcl0iP24uaW5wdXQ9bmV3IFVpbnQ4QXJyYXkodCk6bi5pbnB1dD10LG4ubmV4dF9pbj0wLG4uYXZhaWxfaW49bi5pbnB1dC5sZW5ndGg7Oyl7Zm9yKG4uYXZhaWxfb3V0PT09MCYmKG4ub3V0cHV0PW5ldyBVaW50OEFycmF5KG8pLG4ubmV4dF9vdXQ9MCxuLmF2YWlsX291dD1vKSxpPVhpLmluZmxhdGUobixzKSxpPT09SGcmJnImJihpPVhpLmluZmxhdGVTZXREaWN0aW9uYXJ5KG4sciksaT09PV91P2k9WGkuaW5mbGF0ZShuLHMpOmk9PT12UyYmKGk9SGcpKTtuLmF2YWlsX2luPjAmJmk9PT1qZyYmbi5zdGF0ZS53cmFwPjAmJnRbbi5uZXh0X2luXSE9PTA7KVhpLmluZmxhdGVSZXNldChuKSxpPVhpLmluZmxhdGUobixzKTtzd2l0Y2goaSl7Y2FzZSBZNjpjYXNlIHZTOmNhc2UgSGc6Y2FzZSAkNjpyZXR1cm4gdGhpcy5vbkVuZChpKSx0aGlzLmVuZGVkPSEwLCExfWlmKGY9bi5hdmFpbF9vdXQsbi5uZXh0X291dCYmKG4uYXZhaWxfb3V0PT09MHx8aT09PWpnKSlpZih0aGlzLm9wdGlvbnMudG89PT0ic3RyaW5nIil7bGV0IHU9cWcudXRmOGJvcmRlcihuLm91dHB1dCxuLm5leHRfb3V0KSxjPW4ubmV4dF9vdXQtdSxsPXFnLmJ1ZjJzdHJpbmcobi5vdXRwdXQsdSk7bi5uZXh0X291dD1jLG4uYXZhaWxfb3V0PW8tYyxjJiZuLm91dHB1dC5zZXQobi5vdXRwdXQuc3ViYXJyYXkodSx1K2MpLDApLHRoaXMub25EYXRhKGwpfWVsc2UgdGhpcy5vbkRhdGEobi5vdXRwdXQubGVuZ3RoPT09bi5uZXh0X291dD9uLm91dHB1dDpuLm91dHB1dC5zdWJhcnJheSgwLG4ubmV4dF9vdXQpKTtpZighKGk9PT1fdSYmZj09PTApKXtpZihpPT09amcpcmV0dXJuIGk9WGkuaW5mbGF0ZUVuZCh0aGlzLnN0cm0pLHRoaXMub25FbmQoaSksdGhpcy5lbmRlZD0hMCwhMDtpZihuLmF2YWlsX2luPT09MClicmVha319cmV0dXJuITB9O3l1LnByb3RvdHlwZS5vbkRhdGE9ZnVuY3Rpb24odCl7dGhpcy5jaHVua3MucHVzaCh0KX07eXUucHJvdG90eXBlLm9uRW5kPWZ1bmN0aW9uKHQpe3Q9PT1fdSYmKHRoaXMub3B0aW9ucy50bz09PSJzdHJpbmciP3RoaXMucmVzdWx0PXRoaXMuY2h1bmtzLmpvaW4oIiIpOnRoaXMucmVzdWx0PUZTLmZsYXR0ZW5DaHVua3ModGhpcy5jaHVua3MpKSx0aGlzLmNodW5rcz1bXSx0aGlzLmVycj10LHRoaXMubXNnPXRoaXMuc3RybS5tc2d9O2Z1bmN0aW9uIFdnKHQsZSl7bGV0IG49bmV3IHl1KGUpO2lmKG4ucHVzaCh0KSxuLmVycil0aHJvdyBuLm1zZ3x8S2dbbi5lcnJdO3JldHVybiBuLnJlc3VsdH1mdW5jdGlvbiBaNih0LGUpe3JldHVybiBlPWV8fHt9LGUucmF3PSEwLFdnKHQsZSl9VmEuZXhwb3J0cy5JbmZsYXRlPXl1O1ZhLmV4cG9ydHMuaW5mbGF0ZT1XZztWYS5leHBvcnRzLmluZmxhdGVSYXc9WjY7VmEuZXhwb3J0cy51bmd6aXA9V2c7VmEuZXhwb3J0cy5jb25zdGFudHM9c20oKX0pO3ZhciBYZz17fTtsZShYZyx7ZGVmYXVsdDooKT0+czh9KTtmdW5jdGlvbiBRNih0LGUpe2xldCBuPU5zLmZyb21TdHJpbmcodC50eXBlKSxvPXQuYnVmZmVyO0MyKHQua2V5LG8pO2xldCByPWk4KG8pO289ci5idWZmZXI7bGV0IGk9ci5sZW5ndGg7c3dpdGNoKG4pe2Nhc2UgTnMuTUVUQURBVEE6cmV0dXJuIHQ4KG8saSx0LnF1YWRLZXkpO2Nhc2UgTnMuVEVSUkFJTjpyZXR1cm4gbzgobyxpLGUpO2Nhc2UgTnMuREJST09UOnJldHVybiBlLnB1c2gobykse2J1ZmZlcjpvfX19ZnVuY3Rpb24gdDgodCxlLG4pe2xldCBvPW5ldyBEYXRhVmlldyh0KSxyPTAsaT1vLmdldFVpbnQzMihyLCEwKTtpZihyKz1qYSxpIT09SjYpdGhyb3cgbmV3IEFlKCJJbnZhbGlkIG1hZ2ljIik7bGV0IHM9by5nZXRVaW50MzIociwhMCk7aWYocis9amEscyE9PTEpdGhyb3cgbmV3IEFlKCJJbnZhbGlkIGRhdGEgdHlwZS4gTXVzdCBiZSAxIGZvciBRdWFkVHJlZVBhY2tldCIpO2xldCBmPW8uZ2V0VWludDMyKHIsITApO2lmKHIrPWphLGYhPT0yKXRocm93IG5ldyBBZSgiSW52YWxpZCBRdWFkVHJlZVBhY2tldCB2ZXJzaW9uLiBPbmx5IHZlcnNpb24gMiBpcyBzdXBwb3J0ZWQuIik7bGV0IHU9by5nZXRJbnQzMihyLCEwKTtyKz1QYztsZXQgYz1vLmdldEludDMyKHIsITApO2lmKHIrPVBjLGMhPT0zMil0aHJvdyBuZXcgQWUoIkludmFsaWQgaW5zdGFuY2Ugc2l6ZS4iKTtsZXQgbD1vLmdldEludDMyKHIsITApO3IrPVBjO2xldCBwPW8uZ2V0SW50MzIociwhMCk7cis9UGM7bGV0IGQ9by5nZXRJbnQzMihyLCEwKTtpZihyKz1QYyxsIT09dSpjK3IpdGhyb3cgbmV3IEFlKCJJbnZhbGlkIGRhdGFCdWZmZXJPZmZzZXQiKTtpZihsK3ArZCE9PWUpdGhyb3cgbmV3IEFlKCJJbnZhbGlkIHBhY2tldCBvZmZzZXRzIik7bGV0IGg9W107Zm9yKGxldCBFPTA7RTx1OysrRSl7bGV0IFQ9by5nZXRVaW50OChyKTsrK3IsKytyO2xldCB4PW8uZ2V0VWludDE2KHIsITApO3IrPXphO2xldCBNPW8uZ2V0VWludDE2KHIsITApO3IrPXphO2xldCBOPW8uZ2V0VWludDE2KHIsITApO3IrPXphLHIrPXphLHIrPXphLHIrPVBjLHIrPVBjLHIrPTg7bGV0IEY9by5nZXRVaW50OChyKyspLEk9by5nZXRVaW50OChyKyspO3IrPXphLGgucHVzaChuZXcgSTIoVCx4LE0sTixGLEkpKX1sZXQgXz1bXSxnPTA7ZnVuY3Rpb24gYihFLFQseCl7bGV0IE09ITE7aWYoeD09PTQpe2lmKFQuaGFzU3VidHJlZSgpKXJldHVybjtNPSEwfWZvcihsZXQgTj0wO048NDsrK04pe2xldCBGPUUrTi50b1N0cmluZygpO2lmKE0pX1tGXT1udWxsO2Vsc2UgaWYoeDw0KWlmKCFULmhhc0NoaWxkKE4pKV9bRl09bnVsbDtlbHNle2lmKGc9PT11KXtjb25zb2xlLmxvZygiSW5jb3JyZWN0IG51bWJlciBvZiBpbnN0YW5jZXMiKTtyZXR1cm59bGV0IEk9aFtnKytdO19bRl09SSxiKEYsSSx4KzEpfX19bGV0IHc9MCxPPWhbZysrXTtyZXR1cm4gbj09PSIiPysrdzpfW25dPU8sYihuLE8sdyksX31mdW5jdGlvbiBvOCh0LGUsbil7bGV0IG89bmV3IERhdGFWaWV3KHQpLHI9ZnVuY3Rpb24oZil7Zm9yKGxldCB1PTA7dTxuODsrK3Upe2xldCBjPW8uZ2V0VWludDMyKGYsITApO2lmKGYrPWphLGYrPWMsZj5lKXRocm93IG5ldyBBZSgiTWFsZm9ybWVkIHRlcnJhaW4gcGFja2V0IGZvdW5kLiIpfXJldHVybiBmfSxpPTAscz1bXTtmb3IoO3MubGVuZ3RoPGU4Oyl7bGV0IGY9aTtpPXIoaSk7bGV0IHU9dC5zbGljZShmLGkpO24ucHVzaCh1KSxzLnB1c2godSl9cmV0dXJuIHN9ZnVuY3Rpb24gaTgodCl7bGV0IGU9bmV3IERhdGFWaWV3KHQpLG49MCxvPWUuZ2V0VWludDMyKG4sITApO2lmKG4rPWphLG8hPT1CUyYmbyE9PXI4KXRocm93IG5ldyBBZSgiSW52YWxpZCBtYWdpYyIpO2xldCByPWUuZ2V0VWludDMyKG4sbz09PUJTKTtuKz1qYTtsZXQgaT1uZXcgVWludDhBcnJheSh0LG4pLHM9VVMuZGVmYXVsdC5pbmZsYXRlKGkpO2lmKHMubGVuZ3RoIT09cil0aHJvdyBuZXcgQWUoIlNpemUgb2YgcGFja2V0IGRvZXNuJ3QgbWF0Y2ggaGVhZGVyIik7cmV0dXJuIHN9dmFyIFVTLHphLFBjLGphLE5zLEo2LGU4LG44LEJTLHI4LHM4LFlnPSQoKCk9PntQMigpO3YyKCk7dGkoKTtVUz1tcihEUygpLDEpO1puKCk7emE9VWludDE2QXJyYXkuQllURVNfUEVSX0VMRU1FTlQsUGM9SW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCxqYT1VaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCxOcz17TUVUQURBVEE6MCxURVJSQUlOOjEsREJST09UOjJ9O05zLmZyb21TdHJpbmc9ZnVuY3Rpb24odCl7aWYodD09PSJNZXRhZGF0YSIpcmV0dXJuIE5zLk1FVEFEQVRBO2lmKHQ9PT0iVGVycmFpbiIpcmV0dXJuIE5zLlRFUlJBSU47aWYodD09PSJEYlJvb3QiKXJldHVybiBOcy5EQlJPT1R9O0o2PTMyMzAxO2U4PTUsbjg9NDtCUz0xOTUzMDI5ODA1LHI4PTI5MTcwMzQxMDA7czg9VWUoUTYpfSk7ZnVuY3Rpb24gYzgodCl7cmV0dXJuIHkuZGVmaW5lZCgidmFsdWUiLHQpLHQ8PS4wNDA0NT90Ki4wNzczOTkzODA4MDQ5NTM1NzpNYXRoLnBvdygodCsuMDU1KSouOTQ3ODY3Mjk4NTc4MTk5MSwyLjQpfXZhciBkbSxrUz0kKCgpPT57V3QoKTtkbT1jOH0pO3ZhciBKZz17fTtsZShKZyx7ZGVmYXVsdDooKT0+djh9KTtmdW5jdGlvbiBhOCh0LGUsbixvLHIsaSl7bGV0IHM9biooMS10KStvKnQsZj1yKigxLXQpK2kqdDtyZXR1cm4gcyooMS1lKStmKmV9ZnVuY3Rpb24gbW0odCxlLG4sbyl7bGV0IHI9dCtlKm47cmV0dXJuIG9bcl19ZnVuY3Rpb24gZjgodCxlLG4pe2xldCBvPW4ubmF0aXZlRXh0ZW50LHI9KHQtby53ZXN0KS8oby5lYXN0LW8ud2VzdCkqKG4ud2lkdGgtMSksaT0oZS1vLnNvdXRoKS8oby5ub3J0aC1vLnNvdXRoKSoobi5oZWlnaHQtMSkscz1NYXRoLmZsb29yKHIpLGY9TWF0aC5mbG9vcihpKTtyLT1zLGktPWY7bGV0IHU9czxuLndpZHRoP3MrMTpzLGM9ZjxuLmhlaWdodD9mKzE6ZjtmPW4uaGVpZ2h0LTEtZixjPW4uaGVpZ2h0LTEtYztsZXQgbD1tbShzLGYsbi53aWR0aCxuLmJ1ZmZlcikscD1tbSh1LGYsbi53aWR0aCxuLmJ1ZmZlciksZD1tbShzLGMsbi53aWR0aCxuLmJ1ZmZlciksaD1tbSh1LGMsbi53aWR0aCxuLmJ1ZmZlciksXz1hOChyLGksbCxwLGQsaCk7cmV0dXJuIF89XypuLnNjYWxlK24ub2Zmc2V0LF99ZnVuY3Rpb24gR1ModCxlLG4pe2ZvcihsZXQgbz0wO288bi5sZW5ndGg7bysrKXtsZXQgcj1uW29dLm5hdGl2ZUV4dGVudCxpPW5ldyBhO2lmKG5bb10ucHJvamVjdGlvblR5cGU9PT0iV2ViTWVyY2F0b3IiKXtsZXQgcz1uW29dLnByb2plY3Rpb24uX2VsbGlwc29pZC5fcmFkaWk7aT1uZXcgcm8obmV3IFkocy54LHMueSxzLnopKS5wcm9qZWN0KG5ldyBjdCh0LGUsMCkpfWVsc2UgaS54PXQsaS55PWU7aWYoaS54PnIud2VzdCYmaS54PHIuZWFzdCYmaS55PnIuc291dGgmJmkueTxyLm5vcnRoKXJldHVybiBmOChpLngsaS55LG5bb10pfXJldHVybiAwfWZ1bmN0aW9uIHU4KHQsZSxuLG8scixpLHMpe2lmKHMpcmV0dXJuO2xldCBmPUdTKHIubG9uZ2l0dWRlLHIubGF0aXR1ZGUsaSk7Zm9yKGxldCB1PTA7dTx0OysrdSl7bGV0IGM9R1Moci5sb25naXR1ZGUrUC50b1JhZGlhbnMobiplW3UqM10pLHIubGF0aXR1ZGUrUC50b1JhZGlhbnMobyplW3UqMysxXSksaSk7ZVt1KjMrMl0rPWMtZn19ZnVuY3Rpb24gbDgodCxlLG4sbyxyLGkscyxmLHUpe2lmKHQ9PT0wfHwhbShlKXx8ZS5sZW5ndGg9PT0wKXJldHVybjtsZXQgYz1uZXcgWShNYXRoLnNxcnQocy54KSxNYXRoLnNxcnQocy55KSxNYXRoLnNxcnQocy56KSk7Zm9yKGxldCBsPTA7bDx0OysrbCl7bGV0IHA9bCozLGQ9cCsxLGg9cCsyLF89bmV3IGN0O18ubG9uZ2l0dWRlPW8ubG9uZ2l0dWRlK1AudG9SYWRpYW5zKGYqZVtwXSksXy5sYXRpdHVkZT1vLmxhdGl0dWRlK1AudG9SYWRpYW5zKHUqZVtkXSksXy5oZWlnaHQ9by5oZWlnaHQrZVtoXTtsZXQgZz17fTtjLmNhcnRvZ3JhcGhpY1RvQ2FydGVzaWFuKF8sZyksZy54LT1yLngsZy55LT1yLnksZy56LT1yLno7bGV0IGI9e307aWYoWi5tdWx0aXBseUJ5VmVjdG9yKGksZyxiKSxlW3BdPWIueCxlW2RdPWIueSxlW2hdPWIueixtKG4pKXtsZXQgdz1uZXcgYShuW3BdLG5bZF0sbltoXSksTz17fTtaLm11bHRpcGx5QnlWZWN0b3IoaSx3LE8pLG5bcF09Ty54LG5bZF09Ty55LG5baF09Ty56fX19ZnVuY3Rpb24gcDgodCxlLG4pe2ZvcihsZXQgbz0wO288dDsrK28pe2xldCByPW5bbyo0XS82NTUzNSxpPW5bbyo0KzFdLzY1NTM1LHM9KG5bbyo0KzJdLW5bbyo0XSkvNjU1MzUsZj0obltvKjQrM10tbltvKjQrMV0pLzY1NTM1O2VbbyoyXSo9cyxlW28qMl0rPXIsZVtvKjIrMV0qPWYsZVtvKjIrMV0rPWl9fWZ1bmN0aW9uIGQ4KHQsZSxuLG8pe2xldCByPW5ldyBVaW50MzJBcnJheSh0KSxpPW0oZSk/Zj0+ZVtmXTpmPT5mLHM9MDtpZihvJiZtKG4pKXtsZXQgZj11PT5uW2kodSkqNCszXTwyNTU7Zm9yKGxldCB1PTA7dTx0O3UrPTMpIWYodSkmJiFmKHUrMSkmJiFmKHUrMikmJihyW3MrK109aSh1KSxyW3MrK109aSh1KzEpLHJbcysrXT1pKHUrMikpO2lmKHM+MCl7bGV0IHU9cztmb3IobGV0IGM9MDtjPHQ7Yys9MykoZihjKXx8ZihjKzEpfHxmKGMrMikpJiYoclt1KytdPWkoYyksclt1KytdPWkoYysxKSxyW3UrK109aShjKzIpKX1lbHNlIGZvcihsZXQgdT0wO3U8dDsrK3Upclt1XT1pKHUpfWVsc2V7cz10O2ZvcihsZXQgZj0wO2Y8dDsrK2YpcltmXT1pKGYpfXJldHVybntpbmRleEFycmF5OnIsdHJhbnNwYXJlbnRWZXJ0ZXhPZmZzZXQ6c319ZnVuY3Rpb24gbTgodCxlLG4pe2xldCBvPWVbbl07aWYobShvKSlyZXR1cm4gbztsZXQgcj1lW25dPXtwb3NpdGlvbnM6e30saW5kaWNlczp7fSxlZGdlczp7fX0saT10W25dPz90LmRlZmF1bHQ7cmV0dXJuIHIuaGFzT3V0bGluZT1tKGk/LmVkZ2VzKSxyfWZ1bmN0aW9uIGg4KHQsZSxuLG8pe2lmKCFtKHRbbl0pKXtsZXQgcj1uKjMsaT1lO2ZvcihsZXQgcz0wO3M8MztzKyspe2xldCBmPW9bcitzXTttKGlbZl0pfHwoaVtmXT17fSksaT1pW2ZdfW0oaS5pbmRleCl8fChpLmluZGV4PW4pLHRbbl09aS5pbmRleH19ZnVuY3Rpb24gXzgodCxlLG4sbyxyLGkpe2xldCBzLGY7bzxyPyhzPW8sZj1yKToocz1yLGY9byk7bGV0IHU9dFtzXTttKHUpfHwodT10W3NdPXt9KTtsZXQgYz11W2ZdO20oYyl8fChjPXVbZl09e25vcm1hbHNJbmRleDpbXSxvdXRsaW5lczpbXX0pLGMubm9ybWFsc0luZGV4LnB1c2goaSksKGMub3V0bGluZXMubGVuZ3RoPT09MHx8ZSE9PW98fG4hPT1yKSYmYy5vdXRsaW5lcy5wdXNoKGUsbil9ZnVuY3Rpb24geTgodCxlLG4sbyl7bGV0IHI9W107Zm9yKGxldCBpPTA7aTxuLmxlbmd0aDtpKz0zKXtsZXQgcz1tKGUpP2VbbltpXV06ImRlZmF1bHQiLGY9bTgodCxyLHMpO2lmKCFmLmhhc091dGxpbmUpY29udGludWU7bGV0IHU9Zi5pbmRpY2VzLGM9Zi5wb3NpdGlvbnM7Zm9yKGxldCBwPTA7cDwzO3ArKyl7bGV0IGQ9bltpK3BdO2g4KHUsYyxkLG8pfWxldCBsPWYuZWRnZXM7Zm9yKGxldCBwPTA7cDwzO3ArKyl7bGV0IGQ9bltpK3BdLGg9bltpKyhwKzEpJTNdLF89dVtkXSxnPXVbaF07XzgobCxkLGgsXyxnLGkpfX1yZXR1cm4gcn1mdW5jdGlvbiBWUyh0LGUsbixvKXtsZXQgcj1uW2VdKjMsaT1uW2UrMV0qMyxzPW5bZSsyXSozO2EuZnJvbUFycmF5KG8scixiaSksYS5mcm9tQXJyYXkobyxpLGhtKSxhLmZyb21BcnJheShvLHMsX20pLGEuc3VidHJhY3QoaG0sYmksaG0pLGEuc3VidHJhY3QoX20sYmksX20pLGEuY3Jvc3MoaG0sX20sYmkpO2xldCBmPWEubWFnbml0dWRlKGJpKTtmIT09MCYmYS5kaXZpZGVCeVNjYWxhcihiaSxmLGJpKTtsZXQgdT1lKjMsYz0oZSsxKSozLGw9KGUrMikqMzthLnBhY2soYmksdCx1KSxhLnBhY2soYmksdCxjKSxhLnBhY2soYmksdCxsKX1mdW5jdGlvbiBnOCh0LGUsbil7YS5mcm9tQXJyYXkodCxlLHltKSxhLmZyb21BcnJheSh0LG4sJGcpO2xldCBvPWEuZG90KHltLCRnKSxyPWEubWFnbml0dWRlKGEuY3Jvc3MoeW0sJGcseW0pKTtyZXR1cm4gTWF0aC5hdGFuMihyLG8pPC4yNX1mdW5jdGlvbiBBOCh0LGUsbixvLHIpe2lmKGUubm9ybWFsc0luZGV4Lmxlbmd0aD4xKXtsZXQgaT1vLmxlbmd0aD09PXIubGVuZ3RoO2ZvcihsZXQgcz0wO3M8ZS5ub3JtYWxzSW5kZXgubGVuZ3RoO3MrKyl7bGV0IGY9ZS5ub3JtYWxzSW5kZXhbc107aWYobShyW2YqM10pfHxWUyhyLGYsbixvKSxzIT09MClmb3IobGV0IHU9MDt1PHM7dSsrKXtsZXQgYz1lLm5vcm1hbHNJbmRleFt1XSxsPWk/bltmXSozOmYqMyxwPWk/bltjXSozOmMqMztpZihnOChyLGwscCkpcmV0dXJufX19dC5wdXNoKC4uLmUub3V0bGluZXMpfWZ1bmN0aW9uIGI4KHQsZSxuLG8scil7bGV0IGk9T2JqZWN0LmtleXMoZSk7Zm9yKGxldCBzPTA7czxpLmxlbmd0aDtzKyspe2xldCBmPWVbaVtzXV0sdT1PYmplY3Qua2V5cyhmKTtmb3IobGV0IGM9MDtjPHUubGVuZ3RoO2MrKyl7bGV0IGw9Zlt1W2NdXTtBOCh0LGwsbixvLHIpfX19ZnVuY3Rpb24gdzgodCxlLG4sbyl7bGV0IHI9W10saT1PYmplY3Qua2V5cyh0KTtmb3IobGV0IHM9MDtzPGkubGVuZ3RoO3MrKyl7bGV0IGY9dFtpW3NdXS5lZGdlcztiOChyLGYsZSxuLG8pfXJldHVybiByfWZ1bmN0aW9uIFQ4KHQsZSxuLG8scil7aWYoIW0odCl8fE9iamVjdC5rZXlzKHQpLmxlbmd0aD09PTApcmV0dXJuO2xldCBpPXk4KHQsZSxuLG8pOyghbShyKXx8bi5sZW5ndGgqMyE9PXIubGVuZ3RoKSYmKHI9W10pO2xldCBzPXc4KGksbixvLHIpO3JldHVybiBzLmxlbmd0aD4wP25ldyBVaW50MzJBcnJheShzKTp2b2lkIDB9ZnVuY3Rpb24gTzgodCl7bGV0IGU9bmV3IEZsb2F0MzJBcnJheSh0Lmxlbmd0aCk7Zm9yKGxldCBuPTA7bjx0Lmxlbmd0aDtuKz00KWVbbl09ZG0obmUuYnl0ZVRvRmxvYXQodFtuXSkpLGVbbisxXT1kbShuZS5ieXRlVG9GbG9hdCh0W24rMV0pKSxlW24rMl09ZG0obmUuYnl0ZVRvRmxvYXQodFtuKzJdKSksZVtuKzNdPW5lLmJ5dGVUb0Zsb2F0KHRbbiszXSk7cmV0dXJuIGV9ZnVuY3Rpb24gRTgodCxlLG4sbyxyLGkscyl7bGV0IGY9e25vcm1hbHM6dm9pZCAwLHBvc2l0aW9uczp2b2lkIDAsdXYwczp2b2lkIDAsY29sb3JzOnZvaWQgMCxmZWF0dXJlSW5kZXg6dm9pZCAwLHZlcnRleENvdW50OnZvaWQgMH07aWYodD09PTB8fCFtKG4pfHxuLmxlbmd0aD09PTB8fG0obykpcmV0dXJuIGY7aWYobShlKSl7Zi52ZXJ0ZXhDb3VudD1lLmxlbmd0aCxmLnBvc2l0aW9ucz1uZXcgRmxvYXQzMkFycmF5KGUubGVuZ3RoKjMpLGYudXYwcz1tKHIpP25ldyBGbG9hdDMyQXJyYXkoZS5sZW5ndGgqMik6dm9pZCAwLGYuY29sb3JzPW0oaSk/bmV3IFVpbnQ4QXJyYXkoZS5sZW5ndGgqNCk6dm9pZCAwLGYuZmVhdHVyZUluZGV4PW0ocyk/bmV3IEFycmF5KGUubGVuZ3RoKTp2b2lkIDA7Zm9yKGxldCB1PTA7dTxlLmxlbmd0aDt1Kyspe2xldCBjPWVbdV07Zi5wb3NpdGlvbnNbdSozXT1uW2MqM10sZi5wb3NpdGlvbnNbdSozKzFdPW5bYyozKzFdLGYucG9zaXRpb25zW3UqMysyXT1uW2MqMysyXSxtKGYudXYwcykmJihmLnV2MHNbdSoyXT1yW2MqMl0sZi51djBzW3UqMisxXT1yW2MqMisxXSksbShmLmNvbG9ycykmJihmLmNvbG9yc1t1KjRdPWlbYyo0XSxmLmNvbG9yc1t1KjQrMV09aVtjKjQrMV0sZi5jb2xvcnNbdSo0KzJdPWlbYyo0KzJdLGYuY29sb3JzW3UqNCszXT1pW2MqNCszXSksbShmLmZlYXR1cmVJbmRleCkmJihmLmZlYXR1cmVJbmRleFt1XT1zW2NdKX10PWUubGVuZ3RoLG49Zi5wb3NpdGlvbnN9ZT1uZXcgQXJyYXkodCk7Zm9yKGxldCB1PTA7dTx0O3UrKyllW3VdPXU7Zi5ub3JtYWxzPW5ldyBGbG9hdDMyQXJyYXkoZS5sZW5ndGgqMyk7Zm9yKGxldCB1PTA7dTxlLmxlbmd0aDt1Kz0zKVZTKGYubm9ybWFscyx1LGUsbik7cmV0dXJuIGZ9ZnVuY3Rpb24gUjgodCxlLG4sbyxyLGkscyxmKXtpZih0PT09MHx8IW0obil8fG4ubGVuZ3RoPT09MClyZXR1cm57YnVmZmVyczpbXSxidWZmZXJWaWV3czpbXSxhY2Nlc3NvcnM6W10sbWVzaGVzOltdLG5vZGVzOltdLG5vZGVzSW5TY2VuZTpbXX07bGV0IHU9W10sYz1bXSxsPVtdLHA9W10sZD1bXSxoPVtdLF89e30sZz1bXTttKGUpJiYodD1lLmxlbmd0aCk7bGV0e2luZGV4QXJyYXk6Yix0cmFuc3BhcmVudFZlcnRleE9mZnNldDp3fT1kOCh0LGUsaSxmLnNwbGl0R2VvbWV0cnlCeUNvbG9yVHJhbnNwYXJlbmN5KSxPPW5ldyBCbG9iKFtiXSx7dHlwZToiYXBwbGljYXRpb24vYmluYXJ5In0pLEU9VVJMLmNyZWF0ZU9iamVjdFVSTChPKSxUPXQseD1mLmVuYWJsZUZlYXR1cmVzJiZtKHMpP25ldyBGbG9hdDMyQXJyYXkocy5sZW5ndGgpOnZvaWQgMCxNPTA7aWYobSh4KSlmb3IobGV0IHJ0PTA7cnQ8cy5sZW5ndGg7KytydCl7eFtydF09c1tydF07bGV0IHh0PXNbcnRdKzE7TTx4dCYmKE09eHQpfWxldCBOLEY9VDgoZi5zeW1ib2xvZ3lEYXRhLHMsYixuLG8pO2lmKG0oRikpe2xldCBydD1uZXcgQmxvYihbRl0se3R5cGU6ImFwcGxpY2F0aW9uL2JpbmFyeSJ9KTtOPVVSTC5jcmVhdGVPYmplY3RVUkwocnQpfWxldCBJPW4uc3ViYXJyYXkoMCxUKjMpLHY9bmV3IEJsb2IoW0ldLHt0eXBlOiJhcHBsaWNhdGlvbi9iaW5hcnkifSksQj1VUkwuY3JlYXRlT2JqZWN0VVJMKHYpLEE9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLFM9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLEM9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLEw9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLHo9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLGo9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO2ZvcihsZXQgcnQ9MDtydDxJLmxlbmd0aC8zO3J0KyspQT1NYXRoLm1pbihBLElbcnQqMyswXSksUz1NYXRoLm1heChTLElbcnQqMyswXSksQz1NYXRoLm1pbihDLElbcnQqMysxXSksTD1NYXRoLm1heChMLElbcnQqMysxXSksej1NYXRoLm1pbih6LElbcnQqMysyXSksaj1NYXRoLm1heChqLElbcnQqMysyXSk7bGV0IGs9bz9vLnN1YmFycmF5KDAsVCozKTp2b2lkIDAscTtpZihtKGspKXtsZXQgcnQ9bmV3IEJsb2IoW2tdLHt0eXBlOiJhcHBsaWNhdGlvbi9iaW5hcnkifSk7cT1VUkwuY3JlYXRlT2JqZWN0VVJMKHJ0KX1sZXQgVz1yP3Iuc3ViYXJyYXkoMCxUKjIpOnZvaWQgMCxSO2lmKG0oVykpe2xldCBydD1uZXcgQmxvYihbV10se3R5cGU6ImFwcGxpY2F0aW9uL2JpbmFyeSJ9KTtSPVVSTC5jcmVhdGVPYmplY3RVUkwocnQpfWxldCBudD1tKGkpP084KGkuc3ViYXJyYXkoMCxUKjQpKTp2b2lkIDAsYXQ7aWYobShudCkpe2xldCBydD1uZXcgQmxvYihbbnRdLHt0eXBlOiJhcHBsaWNhdGlvbi9iaW5hcnkifSk7YXQ9VVJMLmNyZWF0ZU9iamVjdFVSTChydCl9bGV0IGx0PW0oeCk/eC5zdWJhcnJheSgwLFQpOnZvaWQgMCxfdDtpZihtKGx0KSl7bGV0IHJ0PW5ldyBCbG9iKFtsdF0se3R5cGU6ImFwcGxpY2F0aW9uL2JpbmFyeSJ9KTtfdD1VUkwuY3JlYXRlT2JqZWN0VVJMKHJ0KX1sZXQgb3Q9bSh4KT9uZXcgRmxvYXQzMkFycmF5KE0pOnZvaWQgMCxQdDtpZihtKG90KSl7Zm9yKGxldCB4dD0wO3h0PG90Lmxlbmd0aDsrK3h0KW90W3h0XT14dDtsZXQgcnQ9bmV3IEJsb2IoW290XSx7dHlwZToiYXBwbGljYXRpb24vYmluYXJ5In0pO1B0PVVSTC5jcmVhdGVPYmplY3RVUkwocnQpfWxldCBndD17fSxSdD17fTtndC5QT1NJVElPTj1sLmxlbmd0aCx1LnB1c2goe3VyaTpCLGJ5dGVMZW5ndGg6SS5ieXRlTGVuZ3RofSksYy5wdXNoKHtidWZmZXI6dS5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsYnl0ZUxlbmd0aDpJLmJ5dGVMZW5ndGgsdGFyZ2V0OjM0OTYyfSksbC5wdXNoKHtidWZmZXJWaWV3OmMubGVuZ3RoLTEsYnl0ZU9mZnNldDowLGNvbXBvbmVudFR5cGU6NTEyNixjb3VudDpJLmxlbmd0aC8zLHR5cGU6IlZFQzMiLG1heDpbQSxDLHpdLG1pbjpbUyxMLGpdfSksbShxKSYmKGd0Lk5PUk1BTD1sLmxlbmd0aCx1LnB1c2goe3VyaTpxLGJ5dGVMZW5ndGg6ay5ieXRlTGVuZ3RofSksYy5wdXNoKHtidWZmZXI6dS5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsYnl0ZUxlbmd0aDprLmJ5dGVMZW5ndGgsdGFyZ2V0OjM0OTYyfSksbC5wdXNoKHtidWZmZXJWaWV3OmMubGVuZ3RoLTEsYnl0ZU9mZnNldDowLGNvbXBvbmVudFR5cGU6NTEyNixjb3VudDprLmxlbmd0aC8zLHR5cGU6IlZFQzMifSkpLG0oUikmJihndC5URVhDT09SRF8wPWwubGVuZ3RoLHUucHVzaCh7dXJpOlIsYnl0ZUxlbmd0aDpXLmJ5dGVMZW5ndGh9KSxjLnB1c2goe2J1ZmZlcjp1Lmxlbmd0aC0xLGJ5dGVPZmZzZXQ6MCxieXRlTGVuZ3RoOlcuYnl0ZUxlbmd0aCx0YXJnZXQ6MzQ5NjJ9KSxsLnB1c2goe2J1ZmZlclZpZXc6Yy5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsY29tcG9uZW50VHlwZTo1MTI2LGNvdW50OlcubGVuZ3RoLzIsdHlwZToiVkVDMiJ9KSksbShhdCkmJihndC5DT0xPUl8wPWwubGVuZ3RoLHUucHVzaCh7dXJpOmF0LGJ5dGVMZW5ndGg6bnQuYnl0ZUxlbmd0aH0pLGMucHVzaCh7YnVmZmVyOnUubGVuZ3RoLTEsYnl0ZU9mZnNldDowLGJ5dGVMZW5ndGg6bnQuYnl0ZUxlbmd0aCx0YXJnZXQ6MzQ5NjJ9KSxsLnB1c2goe2J1ZmZlclZpZXc6Yy5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsY29tcG9uZW50VHlwZTo1MTI2LGNvdW50Om50Lmxlbmd0aC80LHR5cGU6IlZFQzQifSkpLG0oX3QpJiYoZ3QuX0ZFQVRVUkVfSURfMD1sLmxlbmd0aCx1LnB1c2goe3VyaTpfdCxieXRlTGVuZ3RoOmx0LmJ5dGVMZW5ndGh9KSxjLnB1c2goe2J1ZmZlcjp1Lmxlbmd0aC0xLGJ5dGVPZmZzZXQ6MCxieXRlTGVuZ3RoOmx0LmJ5dGVMZW5ndGgsdGFyZ2V0OjM0OTYzfSksbC5wdXNoKHtidWZmZXJWaWV3OmMubGVuZ3RoLTEsYnl0ZU9mZnNldDowLGNvbXBvbmVudFR5cGU6NTEyNixjb3VudDpsdC5sZW5ndGgsdHlwZToiU0NBTEFSIn0pLFJ0LkVYVF9tZXNoX2ZlYXR1cmVzPXtmZWF0dXJlSWRzOlt7YXR0cmlidXRlOjAscHJvcGVydHlUYWJsZTowLGZlYXR1cmVDb3VudDpNfV19LGcucHVzaCgiRVhUX21lc2hfZmVhdHVyZXMiKSksbShQdCkmJih1LnB1c2goe3VyaTpQdCxieXRlTGVuZ3RoOm90LmJ5dGVMZW5ndGh9KSxjLnB1c2goe2J1ZmZlcjp1Lmxlbmd0aC0xLGJ5dGVPZmZzZXQ6MCxieXRlTGVuZ3RoOm90LmJ5dGVMZW5ndGgsdGFyZ2V0OjM0OTYzfSksXy5FWFRfc3RydWN0dXJhbF9tZXRhZGF0YT17c2NoZW1hOntpZDoiaTNzLW1ldGFkYXRhLXNjaGVtYS0wMDEiLG5hbWU6IkkzUyBtZXRhZGF0YSBzY2hlbWEgMDAxIixkZXNjcmlwdGlvbjoiVGhlIHNjaGVtYSBmb3IgSTNTIG1ldGFkYXRhIix2ZXJzaW9uOiIxLjAiLGNsYXNzZXM6e2ZlYXR1cmU6e25hbWU6ImZlYXR1cmUiLGRlc2NyaXB0aW9uOiJGZWF0dXJlIG1ldGFkYXRhIixwcm9wZXJ0aWVzOntpbmRleDp7ZGVzY3JpcHRpb246IlRoZSBmZWF0dXJlIGluZGV4Iix0eXBlOiJTQ0FMQVIiLGNvbXBvbmVudFR5cGU6IkZMT0FUMzIiLHJlcXVpcmVkOiEwfX19fX0scHJvcGVydHlUYWJsZXM6W3tuYW1lOiJmZWF0dXJlLWluZGljZXMtbWFwcGluZyIsY2xhc3M6ImZlYXR1cmUiLGNvdW50Ok0scHJvcGVydGllczp7aW5kZXg6e3ZhbHVlczpjLmxlbmd0aC0xfX19XX0sZy5wdXNoKCJFWFRfc3RydWN0dXJhbF9tZXRhZGF0YSIpKSxtKE4pJiYodS5wdXNoKHt1cmk6TixieXRlTGVuZ3RoOkYuYnl0ZUxlbmd0aH0pLGMucHVzaCh7YnVmZmVyOnUubGVuZ3RoLTEsYnl0ZU9mZnNldDowLGJ5dGVMZW5ndGg6Ri5ieXRlTGVuZ3RoLHRhcmdldDozNDk2M30pLGwucHVzaCh7YnVmZmVyVmlldzpjLmxlbmd0aC0xLGJ5dGVPZmZzZXQ6MCxjb21wb25lbnRUeXBlOjUxMjUsY291bnQ6Ri5sZW5ndGgsdHlwZToiU0NBTEFSIn0pLFJ0LkNFU0lVTV9wcmltaXRpdmVfb3V0bGluZT17aW5kaWNlczpsLmxlbmd0aC0xfSxnLnB1c2goIkNFU0lVTV9wcmltaXRpdmVfb3V0bGluZSIpKSx1LnB1c2goe3VyaTpFLGJ5dGVMZW5ndGg6Yi5ieXRlTGVuZ3RofSksYy5wdXNoKHtidWZmZXI6dS5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsYnl0ZUxlbmd0aDpiLmJ5dGVMZW5ndGgsdGFyZ2V0OjM0OTYzfSk7bGV0IGR0PVtdO3JldHVybiB3PjAmJihsLnB1c2goe2J1ZmZlclZpZXc6Yy5sZW5ndGgtMSxieXRlT2Zmc2V0OjAsY29tcG9uZW50VHlwZTo1MTI1LGNvdW50OncsdHlwZToiU0NBTEFSIn0pLGR0LnB1c2goe2F0dHJpYnV0ZXM6Z3QsaW5kaWNlczpsLmxlbmd0aC0xLG1hdGVyaWFsOmR0Lmxlbmd0aCxleHRlbnNpb25zOlJ0fSkpLHc8dCYmKGwucHVzaCh7YnVmZmVyVmlldzpjLmxlbmd0aC0xLGJ5dGVPZmZzZXQ6NCp3LGNvbXBvbmVudFR5cGU6NTEyNSxjb3VudDp0LXcsdHlwZToiU0NBTEFSIn0pLGR0LnB1c2goe2F0dHJpYnV0ZXM6Z3QsaW5kaWNlczpsLmxlbmd0aC0xLG1hdGVyaWFsOmR0Lmxlbmd0aCxleHRlbnNpb25zOlJ0LGV4dHJhOntpc1RyYW5zcGFyZW50OiEwfX0pKSxwLnB1c2goe3ByaW1pdGl2ZXM6ZHR9KSxoLnB1c2goMCksZC5wdXNoKHttZXNoOjB9KSx7YnVmZmVyczp1LGJ1ZmZlclZpZXdzOmMsYWNjZXNzb3JzOmwsbWVzaGVzOnAsbm9kZXM6ZCxub2Rlc0luU2NlbmU6aCxyb290RXh0ZW5zaW9uczpfLGV4dGVuc2lvbnNVc2VkOmd9fWZ1bmN0aW9uIFM4KHQsZSxuLG8pe2xldCByPW5ldyBVaW50OEFycmF5KHQsMCw1KTtyZXR1cm4gclswXT09PTY4JiZyWzFdPT09ODImJnJbMl09PT02NSYmclszXT09PTY3JiZyWzRdPT09Nzk/eDgodCxuKTpQOCh0LGUsbixvKX1mdW5jdGlvbiB4OCh0KXtsZXQgZT1RZyxuPW5ldyBlLkRlY29kZXJCdWZmZXIsbz1uZXcgVWludDhBcnJheSh0KTtuLkluaXQobyxvLmxlbmd0aCk7bGV0IHI9bmV3IGUuRGVjb2RlcixpPXIuR2V0RW5jb2RlZEdlb21ldHJ5VHlwZShuKSxzPW5ldyBlLk1ldGFkYXRhUXVlcmllcixmLHU7aT09PWUuVFJJQU5HVUxBUl9NRVNIJiYoZj1uZXcgZS5NZXNoLHU9ci5EZWNvZGVCdWZmZXJUb01lc2gobixmKSk7bGV0IGM9e3ZlcnRleENvdW50OlswXSxmZWF0dXJlQ291bnQ6MH07aWYobSh1KSYmdS5vaygpJiZmLnB0ciE9PTApe2xldCBsPWYubnVtX2ZhY2VzKCkscD1mLm51bV9hdHRyaWJ1dGVzKCksZD1mLm51bV9wb2ludHMoKTtjLmluZGljZXM9bmV3IFVpbnQzMkFycmF5KGwqMyk7bGV0IGg9Yy5pbmRpY2VzO2MudmVydGV4Q291bnRbMF09ZCxjLnNjYWxlX3g9MSxjLnNjYWxlX3k9MTtsZXQgXz1uZXcgZS5EcmFjb0ludDMyQXJyYXkoMyk7Zm9yKGxldCBnPTA7ZzxsOysrZylyLkdldEZhY2VGcm9tTWVzaChmLGcsXyksaFtnKjNdPV8uR2V0VmFsdWUoMCksaFtnKjMrMV09Xy5HZXRWYWx1ZSgxKSxoW2cqMysyXT1fLkdldFZhbHVlKDIpO2UuZGVzdHJveShfKTtmb3IobGV0IGc9MDtnPHA7KytnKXtsZXQgYj1yLkdldEF0dHJpYnV0ZShmLGcpLHc9QzgoZSxyLGYsYixkKSxPPWIuYXR0cmlidXRlX3R5cGUoKSxFPSJ1bmtub3duIjtPPT09ZS5QT1NJVElPTj9FPSJwb3NpdGlvbnMiOk89PT1lLk5PUk1BTD9FPSJub3JtYWxzIjpPPT09ZS5DT0xPUj9FPSJjb2xvcnMiOk89PT1lLlRFWF9DT09SRCYmKEU9InV2MHMiKTtsZXQgVD1yLkdldEF0dHJpYnV0ZU1ldGFkYXRhKGYsZyk7aWYoVC5wdHIhPT0wKXtsZXQgeD1zLk51bUVudHJpZXMoVCk7Zm9yKGxldCBNPTA7TTx4OysrTSl7bGV0IE49cy5HZXRFbnRyeU5hbWUoVCxNKTtOPT09Imkzcy1zY2FsZV94Ij9jLnNjYWxlX3g9cy5HZXREb3VibGVFbnRyeShULCJpM3Mtc2NhbGVfeCIpOk49PT0iaTNzLXNjYWxlX3kiP2Muc2NhbGVfeT1zLkdldERvdWJsZUVudHJ5KFQsImkzcy1zY2FsZV95Iik6Tj09PSJpM3MtYXR0cmlidXRlLXR5cGUiJiYoRT1zLkdldFN0cmluZ0VudHJ5KFQsImkzcy1hdHRyaWJ1dGUtdHlwZSIpKX19bShjW0VdKSYmY29uc29sZS5sb2coIkF0dHJpYnV0ZSBhbHJlYWR5IGV4aXN0cyIsRSksY1tFXT13LEU9PT0iZmVhdHVyZS1pbmRleCImJmMuZmVhdHVyZUNvdW50Kyt9ZS5kZXN0cm95KGYpfXJldHVybiBlLmRlc3Ryb3kocyksZS5kZXN0cm95KHIpLGN9ZnVuY3Rpb24gQzgodCxlLG4sbyxyKXtsZXQgaT1vLm51bV9jb21wb25lbnRzKCkqcixzLHU9W2Z1bmN0aW9uKCl7fSxmdW5jdGlvbigpe3M9bmV3IHQuRHJhY29JbnQ4QXJyYXkoaSksZS5HZXRBdHRyaWJ1dGVJbnQ4Rm9yQWxsUG9pbnRzKG4sbyxzKXx8Y29uc29sZS5lcnJvcigiQmFkIHN0cmVhbSIpO2xldCBsPW5ldyBJbnQ4QXJyYXkoaSk7Zm9yKGxldCBwPTA7cDxpOysrcClsW3BdPXMuR2V0VmFsdWUocCk7cmV0dXJuIGx9LGZ1bmN0aW9uKCl7cz1uZXcgdC5EcmFjb0ludDhBcnJheShpKSxlLkdldEF0dHJpYnV0ZVVJbnQ4Rm9yQWxsUG9pbnRzKG4sbyxzKXx8Y29uc29sZS5lcnJvcigiQmFkIHN0cmVhbSIpO2xldCBsPW5ldyBVaW50OEFycmF5KGkpO2ZvcihsZXQgcD0wO3A8aTsrK3ApbFtwXT1zLkdldFZhbHVlKHApO3JldHVybiBsfSxmdW5jdGlvbigpe3M9bmV3IHQuRHJhY29JbnQxNkFycmF5KGkpLGUuR2V0QXR0cmlidXRlSW50MTZGb3JBbGxQb2ludHMobixvLHMpfHxjb25zb2xlLmVycm9yKCJCYWQgc3RyZWFtIik7bGV0IGw9bmV3IEludDE2QXJyYXkoaSk7Zm9yKGxldCBwPTA7cDxpOysrcClsW3BdPXMuR2V0VmFsdWUocCk7cmV0dXJuIGx9LGZ1bmN0aW9uKCl7cz1uZXcgdC5EcmFjb0ludDE2QXJyYXkoaSksZS5HZXRBdHRyaWJ1dGVVSW50MTZGb3JBbGxQb2ludHMobixvLHMpfHxjb25zb2xlLmVycm9yKCJCYWQgc3RyZWFtIik7bGV0IGw9bmV3IFVpbnQxNkFycmF5KGkpO2ZvcihsZXQgcD0wO3A8aTsrK3ApbFtwXT1zLkdldFZhbHVlKHApO3JldHVybiBsfSxmdW5jdGlvbigpe3M9bmV3IHQuRHJhY29JbnQzMkFycmF5KGkpLGUuR2V0QXR0cmlidXRlSW50MzJGb3JBbGxQb2ludHMobixvLHMpfHxjb25zb2xlLmVycm9yKCJCYWQgc3RyZWFtIik7bGV0IGw9bmV3IEludDMyQXJyYXkoaSk7Zm9yKGxldCBwPTA7cDxpOysrcClsW3BdPXMuR2V0VmFsdWUocCk7cmV0dXJuIGx9LGZ1bmN0aW9uKCl7cz1uZXcgdC5EcmFjb0ludDMyQXJyYXkoaSksZS5HZXRBdHRyaWJ1dGVVSW50MzJGb3JBbGxQb2ludHMobixvLHMpfHxjb25zb2xlLmVycm9yKCJCYWQgc3RyZWFtIik7bGV0IGw9bmV3IFVpbnQzMkFycmF5KGkpO2ZvcihsZXQgcD0wO3A8aTsrK3ApbFtwXT1zLkdldFZhbHVlKHApO3JldHVybiBsfSxmdW5jdGlvbigpe30sZnVuY3Rpb24oKXt9LGZ1bmN0aW9uKCl7cz1uZXcgdC5EcmFjb0Zsb2F0MzJBcnJheShpKSxlLkdldEF0dHJpYnV0ZUZsb2F0Rm9yQWxsUG9pbnRzKG4sbyxzKXx8Y29uc29sZS5lcnJvcigiQmFkIHN0cmVhbSIpO2xldCBsPW5ldyBGbG9hdDMyQXJyYXkoaSk7Zm9yKGxldCBwPTA7cDxpOysrcClsW3BdPXMuR2V0VmFsdWUocCk7cmV0dXJuIGx9LGZ1bmN0aW9uKCl7fSxmdW5jdGlvbigpe3M9bmV3IHQuRHJhY29VSW50OEFycmF5KGkpLGUuR2V0QXR0cmlidXRlVUludDhGb3JBbGxQb2ludHMobixvLHMpfHxjb25zb2xlLmVycm9yKCJCYWQgc3RyZWFtIik7bGV0IGw9bmV3IFVpbnQ4QXJyYXkoaSk7Zm9yKGxldCBwPTA7cDxpOysrcClsW3BdPXMuR2V0VmFsdWUocCk7cmV0dXJuIGx9XVtvLmRhdGFfdHlwZSgpXSgpO3JldHVybiBtKHMpJiZ0LmRlc3Ryb3kocyksdX1mdW5jdGlvbiBQOCh0LGUsbixvKXtsZXQgcj17dmVydGV4Q291bnQ6MH0saT1uZXcgRGF0YVZpZXcodCk7dHJ5e2xldCBzPTA7aWYoci52ZXJ0ZXhDb3VudD1pLmdldFVpbnQzMihzLDEpLHMrPTQsci5mZWF0dXJlQ291bnQ9aS5nZXRVaW50MzIocywxKSxzKz00LG0obikpZm9yKGxldCBmPTA7ZjxuLmF0dHJpYnV0ZXMubGVuZ3RoO2YrKyltKGdtW24uYXR0cmlidXRlc1tmXV0pP3M9Z21bbi5hdHRyaWJ1dGVzW2ZdXShyLHQscyk6Y29uc29sZS5lcnJvcigiVW5rbm93biBkZWNvZGVyIGZvciIsbi5hdHRyaWJ1dGVzW2ZdKTtlbHNle2xldCBmPWUub3JkZXJpbmcsdT1lLmZlYXR1cmVBdHRyaWJ1dGVPcmRlcjttKG8pJiZtKG8uZ2VvbWV0cnlEYXRhKSYmbShvLmdlb21ldHJ5RGF0YVswXSkmJm0oby5nZW9tZXRyeURhdGFbMF0ucGFyYW1zKSYmKGY9T2JqZWN0LmtleXMoby5nZW9tZXRyeURhdGFbMF0ucGFyYW1zLnZlcnRleEF0dHJpYnV0ZXMpLHU9T2JqZWN0LmtleXMoby5nZW9tZXRyeURhdGFbMF0ucGFyYW1zLmZlYXR1cmVBdHRyaWJ1dGVzKSk7Zm9yKGxldCBjPTA7YzxmLmxlbmd0aDtjKyspe2xldCBsPWdtW2ZbY11dO3M9bChyLHQscyl9Zm9yKGxldCBjPTA7Yzx1Lmxlbmd0aDtjKyspe2xldCBsPWdtW3VbY11dO3M9bChyLHQscyl9fX1jYXRjaChzKXtjb25zb2xlLmVycm9yKHMpfXJldHVybiByLnNjYWxlX3g9MSxyLnNjYWxlX3k9MSxyfWZ1bmN0aW9uIE04KHQpe2xldCBlPVM4KHQuYmluYXJ5RGF0YSx0LnNjaGVtYSx0LmJ1ZmZlckluZm8sdC5mZWF0dXJlRGF0YSk7bSh0Lmdlb2lkRGF0YUxpc3QpJiZ0Lmdlb2lkRGF0YUxpc3QubGVuZ3RoPjAmJnU4KGUudmVydGV4Q291bnQsZS5wb3NpdGlvbnMsZS5zY2FsZV94LGUuc2NhbGVfeSx0LmNhcnRvZ3JhcGhpY0NlbnRlcix0Lmdlb2lkRGF0YUxpc3QsITEpLGw4KGUudmVydGV4Q291bnQsZS5wb3NpdGlvbnMsZS5ub3JtYWxzLHQuY2FydG9ncmFwaGljQ2VudGVyLHQuY2FydGVzaWFuQ2VudGVyLHQucGFyZW50Um90YXRpb24sdC5lbGxpcHNvaWRSYWRpaVNxdWFyZSxlLnNjYWxlX3gsZS5zY2FsZV95KSxtKGUudXYwcykmJm0oZVsidXYtcmVnaW9uIl0pJiZwOChlLnZlcnRleENvdW50LGUudXYwcyxlWyJ1di1yZWdpb24iXSk7bGV0IG47aWYobShlWyJmZWF0dXJlLWluZGV4Il0pKW49ZVsiZmVhdHVyZS1pbmRleCJdO2Vsc2UgaWYobShlLmZhY2VSYW5nZSkpe249bmV3IEFycmF5KGUudmVydGV4Q291bnQpO2ZvcihsZXQgcz0wO3M8ZS5mYWNlUmFuZ2UubGVuZ3RoLTE7cys9Mil7bGV0IGY9cy8yLHU9ZS5mYWNlUmFuZ2Vbc10sYz1lLmZhY2VSYW5nZVtzKzFdO2ZvcihsZXQgbD11O2w8PWM7bCsrKW5bbCozXT1mLG5bbCozKzFdPWYsbltsKjMrMl09Zn19aWYodC5jYWxjdWxhdGVOb3JtYWxzKXtsZXQgcz1FOChlLnZlcnRleENvdW50LGUuaW5kaWNlcyxlLnBvc2l0aW9ucyxlLm5vcm1hbHMsZS51djBzLGUuY29sb3JzLG4pO20ocy5ub3JtYWxzKSYmKGUubm9ybWFscz1zLm5vcm1hbHMsbShzLnZlcnRleENvdW50KSYmKGUudmVydGV4Q291bnQ9cy52ZXJ0ZXhDb3VudCxlLmluZGljZXM9cy5pbmRpY2VzLGUucG9zaXRpb25zPXMucG9zaXRpb25zLGUudXYwcz1zLnV2MHMsZS5jb2xvcnM9cy5jb2xvcnMsbj1zLmZlYXR1cmVJbmRleCkpfWxldCBvPVI4KGUudmVydGV4Q291bnQsZS5pbmRpY2VzLGUucG9zaXRpb25zLGUubm9ybWFscyxlLnV2MHMsZS5jb2xvcnMsbix0KSxyPXtwb3NpdGlvbnM6ZS5wb3NpdGlvbnMsaW5kaWNlczplLmluZGljZXMsZmVhdHVyZUluZGV4Om4sc291cmNlVVJMOnQudXJsLGNhcnRlc2lhbkNlbnRlcjp0LmNhcnRlc2lhbkNlbnRlcixwYXJlbnRSb3RhdGlvbjp0LnBhcmVudFJvdGF0aW9ufTtyZXR1cm4gby5fY3VzdG9tQXR0cmlidXRlcz1yLHttZXNoRGF0YTpvfX1hc3luYyBmdW5jdGlvbiBOOCh0LGUpe2xldCBuPXQud2ViQXNzZW1ibHlDb25maWc7cmV0dXJuIG0obikmJm0obi53YXNtQmluYXJ5RmlsZSk/UWc9YXdhaXQoMCxaZy5kZWZhdWx0KShuKTpRZz1hd2FpdCgwLFpnLmRlZmF1bHQpKCksITB9ZnVuY3Rpb24gSTgodCxlKXtsZXQgbj10LndlYkFzc2VtYmx5Q29uZmlnO3JldHVybiBtKG4pP044KHQsZSk6TTgodCxlKX12YXIgWmcsUWcsYmksaG0sX20seW0sJGcsZ20sdjgsdDE9JCgoKT0+e1puKCk7ZnQoKTtzYygpOyR0KCk7SWUoKTtEdCgpO01hKCk7VW4oKTtLdCgpO1pnPW1yKFBnKCksMSk7a1MoKTtiaT1uZXcgYSxobT1uZXcgYSxfbT1uZXcgYTt5bT1uZXcgYSwkZz1uZXcgYTtnbT17cG9zaXRpb246ZnVuY3Rpb24odCxlLG4pe2xldCBvPXQudmVydGV4Q291bnQqMztyZXR1cm4gdC5wb3NpdGlvbnM9bmV3IEZsb2F0MzJBcnJheShlLG4sbyksbis9byo0LG59LG5vcm1hbDpmdW5jdGlvbih0LGUsbil7bGV0IG89dC52ZXJ0ZXhDb3VudCozO3JldHVybiB0Lm5vcm1hbHM9bmV3IEZsb2F0MzJBcnJheShlLG4sbyksbis9byo0LG59LHV2MDpmdW5jdGlvbih0LGUsbil7bGV0IG89dC52ZXJ0ZXhDb3VudCoyO3JldHVybiB0LnV2MHM9bmV3IEZsb2F0MzJBcnJheShlLG4sbyksbis9byo0LG59LGNvbG9yOmZ1bmN0aW9uKHQsZSxuKXtsZXQgbz10LnZlcnRleENvdW50KjQ7cmV0dXJuIHQuY29sb3JzPW5ldyBVaW50OEFycmF5KGUsbixvKSxuKz1vLG59LGZlYXR1cmVJZDpmdW5jdGlvbih0LGUsbil7bGV0IG89dC5mZWF0dXJlQ291bnQ7cmV0dXJuIG4rPW8qOCxufSxpZDpmdW5jdGlvbih0LGUsbil7bGV0IG89dC5mZWF0dXJlQ291bnQ7cmV0dXJuIG4rPW8qOCxufSxmYWNlUmFuZ2U6ZnVuY3Rpb24odCxlLG4pe2xldCBvPXQuZmVhdHVyZUNvdW50KjI7cmV0dXJuIHQuZmFjZVJhbmdlPW5ldyBVaW50MzJBcnJheShlLG4sbyksbis9byo0LG59LHV2UmVnaW9uOmZ1bmN0aW9uKHQsZSxuKXtsZXQgbz10LnZlcnRleENvdW50KjQ7cmV0dXJuIHRbInV2LXJlZ2lvbiJdPW5ldyBVaW50MTZBcnJheShlLG4sbyksbis9byoyLG59LHJlZ2lvbjpmdW5jdGlvbih0LGUsbil7bGV0IG89dC52ZXJ0ZXhDb3VudCo0O3JldHVybiB0WyJ1di1yZWdpb24iXT1uZXcgVWludDE2QXJyYXkoZSxuLG8pLG4rPW8qMixufX07djg9VWUoSTgpfSk7ZnVuY3Rpb24gRjgoKXtyZXR1cm4oZ3U9PT1udWxsfHxndS5ieXRlTGVuZ3RoPT09MCkmJihndT1uZXcgVWludDhBcnJheShMbi5tZW1vcnkuYnVmZmVyKSksZ3V9ZnVuY3Rpb24gelModCxlKXtyZXR1cm4gdD10Pj4+MCxIUy5kZWNvZGUoRjgoKS5zdWJhcnJheSh0LHQrZSkpfWZ1bmN0aW9uIHFTKCl7cmV0dXJuKEF1PT09bnVsbHx8QXUuYnl0ZUxlbmd0aD09PTApJiYoQXU9bmV3IFVpbnQzMkFycmF5KExuLm1lbW9yeS5idWZmZXIpKSxBdX1mdW5jdGlvbiBMOCh0LGUpe3JldHVybiB0PXQ+Pj4wLHFTKCkuc3ViYXJyYXkodC80LHQvNCtlKX1mdW5jdGlvbiBEOCh0LGUpe2xldCBuPWUodC5sZW5ndGgqNCw0KT4+PjA7cmV0dXJuIHFTKCkuc2V0KHQsbi80KSxLUz10Lmxlbmd0aCxufWZ1bmN0aW9uIGUxKHQpe2xldCBlPUxuLl9fd2JpbmRnZW5fZXhwb3J0XzAuZ2V0KHQpO3JldHVybiBMbi5fX2V4dGVybnJlZl90YWJsZV9kZWFsbG9jKHQpLGV9ZnVuY3Rpb24gV1ModCxlLG4sbyxyKXtsZXQgaT1Mbi5nZW5lcmF0ZV9zcGxhdF90ZXh0dXJlKHQsZSxuLG8scik7aWYoaVsyXSl0aHJvdyBlMShpWzFdKTtyZXR1cm4gbjEuX193cmFwKGlbMF0pfWZ1bmN0aW9uIFhTKHQsZSxuKXtsZXQgbz1Mbi5yYWRpeF9zb3J0X2dhdXNzaWFuc19pbmRleGVzKHQsZSxuKTtpZihvWzJdKXRocm93IGUxKG9bMV0pO3JldHVybiBlMShvWzBdKX1hc3luYyBmdW5jdGlvbiBCOCh0LGUpe2lmKHR5cGVvZiBSZXNwb25zZT09ImZ1bmN0aW9uIiYmdCBpbnN0YW5jZW9mIFJlc3BvbnNlKXtpZih0eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmc9PSJmdW5jdGlvbiIpdHJ5e3JldHVybiBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyh0LGUpfWNhdGNoKG8pe2lmKHQuaGVhZGVycy5nZXQoIkNvbnRlbnQtVHlwZSIpIT0iYXBwbGljYXRpb24vd2FzbSIpY29uc29sZS53YXJuKCJgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmdgIGZhaWxlZCBiZWNhdXNlIHlvdXIgc2VydmVyIGRvZXMgbm90IHNlcnZlIFdhc20gd2l0aCBgYXBwbGljYXRpb24vd2FzbWAgTUlNRSB0eXBlLiBGYWxsaW5nIGJhY2sgdG8gYFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlYCB3aGljaCBpcyBzbG93ZXIuIE9yaWdpbmFsIGVycm9yOlxuIixvKTtlbHNlIHRocm93IG99bGV0IG49YXdhaXQgdC5hcnJheUJ1ZmZlcigpO3JldHVybiBhd2FpdCBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShuLGUpfWVsc2V7bGV0IG49YXdhaXQgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGUodCxlKTtyZXR1cm4gbiBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5Lkluc3RhbmNlP3tpbnN0YW5jZTpuLG1vZHVsZTp0fTpufX1mdW5jdGlvbiBZUygpe2xldCB0PXt9O3JldHVybiB0LndiZz17fSx0LndiZy5fX3diZ19idWZmZXJfNjA5Y2MzZWVlNTFlZDE1OD1mdW5jdGlvbihlKXtyZXR1cm4gZS5idWZmZXJ9LHQud2JnLl9fd2JnX2xlbmd0aF8zYjRmMDIyMTg4YWU4ZGI2PWZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aH0sdC53YmcuX193YmdfbGVuZ3RoX2E0NDYxOTNkYzIyYzEyZjg9ZnVuY3Rpb24oZSl7cmV0dXJuIGUubGVuZ3RofSx0LndiZy5fX3diZ19uZXdfNzgwYWJlZTVjMTczOWZkNz1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IEZsb2F0MzJBcnJheShlKX0sdC53YmcuX193YmdfbmV3X2ExMjAwMmE3ZjkxYzc1YmU9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KGUpfSx0LndiZy5fX3diZ19uZXdfZTNiMzIxZGNmZWY4OWZjNz1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IFVpbnQzMkFycmF5KGUpfSx0LndiZy5fX3diZ19uZXd3aXRoYnl0ZW9mZnNldGFuZGxlbmd0aF9mMWRlYWQ0NGQxZmM3MjEyPWZ1bmN0aW9uKGUsbixvKXtyZXR1cm4gbmV3IFVpbnQzMkFycmF5KGUsbj4+PjAsbz4+PjApfSx0LndiZy5fX3diZ19zZXRfMTBiYWQ5YmVlMGU5YzU4Yj1mdW5jdGlvbihlLG4sbyl7ZS5zZXQobixvPj4+MCl9LHQud2JnLl9fd2JnX3NldF82NTU5NWJkZDg2OGIzMDA5PWZ1bmN0aW9uKGUsbixvKXtlLnNldChuLG8+Pj4wKX0sdC53YmcuX193YmluZGdlbl9pbml0X2V4dGVybnJlZl90YWJsZT1mdW5jdGlvbigpe2xldCBlPUxuLl9fd2JpbmRnZW5fZXhwb3J0XzAsbj1lLmdyb3coNCk7ZS5zZXQoMCx2b2lkIDApLGUuc2V0KG4rMCx2b2lkIDApLGUuc2V0KG4rMSxudWxsKSxlLnNldChuKzIsITApLGUuc2V0KG4rMywhMSl9LHQud2JnLl9fd2JpbmRnZW5fbWVtb3J5PWZ1bmN0aW9uKCl7cmV0dXJuIExuLm1lbW9yeX0sdC53YmcuX193YmluZGdlbl9zdHJpbmdfbmV3PWZ1bmN0aW9uKGUsbil7cmV0dXJuIHpTKGUsbil9LHQud2JnLl9fd2JpbmRnZW5fdGhyb3c9ZnVuY3Rpb24oZSxuKXt0aHJvdyBuZXcgRXJyb3IoelMoZSxuKSl9LHR9ZnVuY3Rpb24gJFModCxlKXtyZXR1cm4gTG49dC5leHBvcnRzLFU4Ll9fd2JpbmRnZW5fd2FzbV9tb2R1bGU9ZSxBdT1udWxsLGd1PW51bGwsTG4uX193YmluZGdlbl9zdGFydCgpLExufWZ1bmN0aW9uIEFtKHQpe2lmKExuIT09dm9pZCAwKXJldHVybiBMbjt0eXBlb2YgdDwidSImJihPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk9PT1PYmplY3QucHJvdG90eXBlP3ttb2R1bGU6dH09dDpjb25zb2xlLndhcm4oInVzaW5nIGRlcHJlY2F0ZWQgcGFyYW1ldGVycyBmb3IgYGluaXRTeW5jKClgOyBwYXNzIGEgc2luZ2xlIG9iamVjdCBpbnN0ZWFkIikpO2xldCBlPVlTKCk7dCBpbnN0YW5jZW9mIFdlYkFzc2VtYmx5Lk1vZHVsZXx8KHQ9bmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSh0KSk7bGV0IG49bmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKHQsZSk7cmV0dXJuICRTKG4sdCl9YXN5bmMgZnVuY3Rpb24gVTgodCl7aWYoTG4hPT12b2lkIDApcmV0dXJuIExuO3R5cGVvZiB0PCJ1IiYmKE9iamVjdC5nZXRQcm90b3R5cGVPZih0KT09PU9iamVjdC5wcm90b3R5cGU/e21vZHVsZV9vcl9wYXRoOnR9PXQ6Y29uc29sZS53YXJuKCJ1c2luZyBkZXByZWNhdGVkIHBhcmFtZXRlcnMgZm9yIHRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbjsgcGFzcyBhIHNpbmdsZSBvYmplY3QgaW5zdGVhZCIpKSx0eXBlb2YgdD4idSImJih0PW5ldyBVUkwoIndhc21fc3BsYXRzX2JnLndhc20iLGs4LnVybCkpO2xldCBlPVlTKCk7KHR5cGVvZiB0PT0ic3RyaW5nInx8dHlwZW9mIFJlcXVlc3Q9PSJmdW5jdGlvbiImJnQgaW5zdGFuY2VvZiBSZXF1ZXN0fHx0eXBlb2YgVVJMPT0iZnVuY3Rpb24iJiZ0IGluc3RhbmNlb2YgVVJMKSYmKHQ9ZmV0Y2godCkpO2xldHtpbnN0YW5jZTpuLG1vZHVsZTpvfT1hd2FpdCBCOChhd2FpdCB0LGUpO3JldHVybiAkUyhuLG8pfXZhciBrOCxMbixIUyxndSxBdSxLUyxqUyxuMSxvMT0kKCgpPT57azg9e30sSFM9dHlwZW9mIFRleHREZWNvZGVyPCJ1Ij9uZXcgVGV4dERlY29kZXIoInV0Zi04Iix7aWdub3JlQk9NOiEwLGZhdGFsOiEwfSk6e2RlY29kZTooKT0+e3Rocm93IEVycm9yKCJUZXh0RGVjb2RlciBub3QgYXZhaWxhYmxlIil9fTt0eXBlb2YgVGV4dERlY29kZXI8InUiJiZIUy5kZWNvZGUoKTtndT1udWxsO0F1PW51bGw7S1M9MDtqUz10eXBlb2YgRmluYWxpemF0aW9uUmVnaXN0cnk+InUiP3tyZWdpc3RlcjooKT0+e30sdW5yZWdpc3RlcjooKT0+e319Om5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSh0PT5Mbi5fX3diZ190ZXh0dXJlZGF0YV9mcmVlKHQ+Pj4wLDEpKSxuMT1jbGFzcyB0e3N0YXRpYyBfX3dyYXAoZSl7ZT1lPj4+MDtsZXQgbj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtyZXR1cm4gbi5fX3diZ19wdHI9ZSxqUy5yZWdpc3RlcihuLG4uX193YmdfcHRyLG4pLG59X19kZXN0cm95X2ludG9fcmF3KCl7bGV0IGU9dGhpcy5fX3diZ19wdHI7cmV0dXJuIHRoaXMuX193YmdfcHRyPTAsalMudW5yZWdpc3Rlcih0aGlzKSxlfWZyZWUoKXtsZXQgZT10aGlzLl9fZGVzdHJveV9pbnRvX3JhdygpO0xuLl9fd2JnX3RleHR1cmVkYXRhX2ZyZWUoZSwwKX1nZXQgZGF0YSgpe2xldCBlPUxuLnRleHR1cmVkYXRhX2RhdGEodGhpcy5fX3diZ19wdHIpO3ZhciBuPUw4KGVbMF0sZVsxXSkuc2xpY2UoKTtyZXR1cm4gTG4uX193YmluZGdlbl9mcmVlKGVbMF0sZVsxXSo0LDQpLG59Z2V0IHdpZHRoKCl7cmV0dXJuIExuLnRleHR1cmVkYXRhX3dpZHRoKHRoaXMuX193YmdfcHRyKT4+PjB9Z2V0IGhlaWdodCgpe3JldHVybiBMbi50ZXh0dXJlZGF0YV9oZWlnaHQodGhpcy5fX3diZ19wdHIpPj4+MH1zdGF0aWMgbmV3KGUsbixvKXtsZXQgcj1EOChlLExuLl9fd2JpbmRnZW5fbWFsbG9jKSxpPUtTLHM9TG4udGV4dHVyZWRhdGFfbmV3KHIsaSxuLG8pO3JldHVybiB0Ll9fd3JhcChzKX19fSk7dmFyIHIxPXt9O2xlKHIxLHtkZWZhdWx0OigpPT56OH0pO2FzeW5jIGZ1bmN0aW9uIEc4KHQsZSl7bGV0IG49dC53ZWJBc3NlbWJseUNvbmZpZztpZihtKG4pJiZtKG4ud2FzbUJpbmFyeSkpcmV0dXJuIEFtKHttb2R1bGU6bi53YXNtQmluYXJ5fSksITB9ZnVuY3Rpb24gVjgodCxlKXtsZXQgbj10LndlYkFzc2VtYmx5Q29uZmlnO2lmKG0obikpcmV0dXJuIEc4KHQsZSk7bGV0e3ByaW1pdGl2ZTpvLHNvcnRUeXBlOnJ9PXQ7aWYocj09PSJJbmRleCIpcmV0dXJuIFhTKG8ucG9zaXRpb25zLG8ubW9kZWxWaWV3LG8uY291bnQpfXZhciB6OCxpMT0kKCgpPT57Wm4oKTtmdCgpO28xKCk7ejg9VWUoVjgpfSk7dmFyIHMxPXt9O2xlKHMxLHtkZWZhdWx0OigpPT5xOH0pO2FzeW5jIGZ1bmN0aW9uIGo4KHQsZSl7bGV0IG49dC53ZWJBc3NlbWJseUNvbmZpZztyZXR1cm4gbShuKSYmbShuLndhc21CaW5hcnkpPyhBbSh7bW9kdWxlOm4ud2FzbUJpbmFyeX0pLCEwKTohMX1hc3luYyBmdW5jdGlvbiBIOCh0LGUpe2xldCBuPXQud2ViQXNzZW1ibHlDb25maWc7aWYobShuKSlyZXR1cm4gajgodCxlKTtsZXR7YXR0cmlidXRlczpvLGNvdW50OnJ9PXQsaT1XUyhvLnBvc2l0aW9ucyxvLnNjYWxlcyxvLnJvdGF0aW9ucyxvLmNvbG9ycyxyKTtyZXR1cm57ZGF0YTppLmRhdGEsd2lkdGg6aS53aWR0aCxoZWlnaHQ6aS5oZWlnaHR9fXZhciBxOCxjMT0kKCgpPT57Wm4oKTtmdCgpO28xKCk7cTg9VWUoSDgpfSk7dmFyIFNlLGlvLGExPSQoKCk9PntacygpO1NlPXtVTlNJR05FRF9CWVRFOkZ0LlVOU0lHTkVEX0JZVEUsVU5TSUdORURfU0hPUlQ6RnQuVU5TSUdORURfU0hPUlQsVU5TSUdORURfSU5UOkZ0LlVOU0lHTkVEX0lOVCxGTE9BVDpGdC5GTE9BVCxIQUxGX0ZMT0FUOkZ0LkhBTEZfRkxPQVRfT0VTLFVOU0lHTkVEX0lOVF8yNF84OkZ0LlVOU0lHTkVEX0lOVF8yNF84LFVOU0lHTkVEX1NIT1JUXzRfNF80XzQ6RnQuVU5TSUdORURfU0hPUlRfNF80XzRfNCxVTlNJR05FRF9TSE9SVF81XzVfNV8xOkZ0LlVOU0lHTkVEX1NIT1JUXzVfNV81XzEsVU5TSUdORURfU0hPUlRfNV82XzU6RnQuVU5TSUdORURfU0hPUlRfNV82XzV9O1NlLnRvV2ViR0xDb25zdGFudD1mdW5jdGlvbih0LGUpe3N3aXRjaCh0KXtjYXNlIFNlLlVOU0lHTkVEX0JZVEU6cmV0dXJuIEZ0LlVOU0lHTkVEX0JZVEU7Y2FzZSBTZS5VTlNJR05FRF9TSE9SVDpyZXR1cm4gRnQuVU5TSUdORURfU0hPUlQ7Y2FzZSBTZS5VTlNJR05FRF9JTlQ6cmV0dXJuIEZ0LlVOU0lHTkVEX0lOVDtjYXNlIFNlLkZMT0FUOnJldHVybiBGdC5GTE9BVDtjYXNlIFNlLkhBTEZfRkxPQVQ6cmV0dXJuIGUud2ViZ2wyP0Z0LkhBTEZfRkxPQVQ6RnQuSEFMRl9GTE9BVF9PRVM7Y2FzZSBTZS5VTlNJR05FRF9JTlRfMjRfODpyZXR1cm4gRnQuVU5TSUdORURfSU5UXzI0Xzg7Y2FzZSBTZS5VTlNJR05FRF9TSE9SVF80XzRfNF80OnJldHVybiBGdC5VTlNJR05FRF9TSE9SVF80XzRfNF80O2Nhc2UgU2UuVU5TSUdORURfU0hPUlRfNV81XzVfMTpyZXR1cm4gRnQuVU5TSUdORURfU0hPUlRfNV81XzVfMTtjYXNlIFNlLlVOU0lHTkVEX1NIT1JUXzVfNl81OnJldHVybiBTZS5VTlNJR05FRF9TSE9SVF81XzZfNX19O1NlLmlzUGFja2VkPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09U2UuVU5TSUdORURfSU5UXzI0Xzh8fHQ9PT1TZS5VTlNJR05FRF9TSE9SVF80XzRfNF80fHx0PT09U2UuVU5TSUdORURfU0hPUlRfNV81XzVfMXx8dD09PVNlLlVOU0lHTkVEX1NIT1JUXzVfNl81fTtTZS5zaXplSW5CeXRlcz1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSBTZS5VTlNJR05FRF9CWVRFOnJldHVybiAxO2Nhc2UgU2UuVU5TSUdORURfU0hPUlQ6Y2FzZSBTZS5VTlNJR05FRF9TSE9SVF80XzRfNF80OmNhc2UgU2UuVU5TSUdORURfU0hPUlRfNV81XzVfMTpjYXNlIFNlLlVOU0lHTkVEX1NIT1JUXzVfNl81OmNhc2UgU2UuSEFMRl9GTE9BVDpyZXR1cm4gMjtjYXNlIFNlLlVOU0lHTkVEX0lOVDpjYXNlIFNlLkZMT0FUOmNhc2UgU2UuVU5TSUdORURfSU5UXzI0Xzg6cmV0dXJuIDR9fTtTZS52YWxpZGF0ZT1mdW5jdGlvbih0KXtyZXR1cm4gdD09PVNlLlVOU0lHTkVEX0JZVEV8fHQ9PT1TZS5VTlNJR05FRF9TSE9SVHx8dD09PVNlLlVOU0lHTkVEX0lOVHx8dD09PVNlLkZMT0FUfHx0PT09U2UuSEFMRl9GTE9BVHx8dD09PVNlLlVOU0lHTkVEX0lOVF8yNF84fHx0PT09U2UuVU5TSUdORURfU0hPUlRfNF80XzRfNHx8dD09PVNlLlVOU0lHTkVEX1NIT1JUXzVfNV81XzF8fHQ9PT1TZS5VTlNJR05FRF9TSE9SVF81XzZfNX07U2UuZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yPWZ1bmN0aW9uKHQpe2xldCBlPVNlLnNpemVJbkJ5dGVzKHQpO3JldHVybiBlPT09VWludDhBcnJheS5CWVRFU19QRVJfRUxFTUVOVD9VaW50OEFycmF5OmU9PT1VaW50MTZBcnJheS5CWVRFU19QRVJfRUxFTUVOVD9VaW50MTZBcnJheTplPT09RmxvYXQzMkFycmF5LkJZVEVTX1BFUl9FTEVNRU5UJiZ0PT09U2UuRkxPQVQ/RmxvYXQzMkFycmF5OlVpbnQzMkFycmF5fTtpbz1PYmplY3QuZnJlZXplKFNlKX0pO3ZhciBtdCxHbixaUz0kKCgpPT57YTEoKTtacygpO210PXtERVBUSF9DT01QT05FTlQ6RnQuREVQVEhfQ09NUE9ORU5ULERFUFRIX1NURU5DSUw6RnQuREVQVEhfU1RFTkNJTCxBTFBIQTpGdC5BTFBIQSxSRUQ6RnQuUkVELFJHOkZ0LlJHLFJHQjpGdC5SR0IsUkdCQTpGdC5SR0JBLFJFRF9JTlRFR0VSOkZ0LlJFRF9JTlRFR0VSLFJHX0lOVEVHRVI6RnQuUkdfSU5URUdFUixSR0JfSU5URUdFUjpGdC5SR0JfSU5URUdFUixSR0JBX0lOVEVHRVI6RnQuUkdCQV9JTlRFR0VSLExVTUlOQU5DRTpGdC5MVU1JTkFOQ0UsTFVNSU5BTkNFX0FMUEhBOkZ0LkxVTUlOQU5DRV9BTFBIQSxSR0JfRFhUMTpGdC5DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhULFJHQkFfRFhUMTpGdC5DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCxSR0JBX0RYVDM6RnQuQ09NUFJFU1NFRF9SR0JBX1MzVENfRFhUM19FWFQsUkdCQV9EWFQ1OkZ0LkNPTVBSRVNTRURfUkdCQV9TM1RDX0RYVDVfRVhULFJHQl9QVlJUQ180QlBQVjE6RnQuQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyxSR0JfUFZSVENfMkJQUFYxOkZ0LkNPTVBSRVNTRURfUkdCX1BWUlRDXzJCUFBWMV9JTUcsUkdCQV9QVlJUQ180QlBQVjE6RnQuQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcsUkdCQV9QVlJUQ18yQlBQVjE6RnQuQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUcsUkdCQV9BU1RDOkZ0LkNPTVBSRVNTRURfUkdCQV9BU1RDXzR4NF9XRUJHTCxSR0JfRVRDMTpGdC5DT01QUkVTU0VEX1JHQl9FVEMxX1dFQkdMLFJHQjhfRVRDMjpGdC5DT01QUkVTU0VEX1JHQjhfRVRDMixSR0JBOF9FVEMyX0VBQzpGdC5DT01QUkVTU0VEX1JHQkE4X0VUQzJfRUFDLFJHQkFfQkM3OkZ0LkNPTVBSRVNTRURfUkdCQV9CUFRDX1VOT1JNfTttdC5jb21wb25lbnRzTGVuZ3RoPWZ1bmN0aW9uKHQpe3N3aXRjaCh0KXtjYXNlIG10LlJHQjpjYXNlIG10LlJHQl9JTlRFR0VSOnJldHVybiAzO2Nhc2UgbXQuUkdCQTpjYXNlIG10LlJHQkFfSU5URUdFUjpyZXR1cm4gNDtjYXNlIG10LkxVTUlOQU5DRV9BTFBIQTpjYXNlIG10LlJHOmNhc2UgbXQuUkdfSU5URUdFUjpyZXR1cm4gMjtjYXNlIG10LkFMUEhBOmNhc2UgbXQuUkVEOmNhc2UgbXQuUkVEX0lOVEVHRVI6Y2FzZSBtdC5MVU1JTkFOQ0U6cmV0dXJuIDE7ZGVmYXVsdDpyZXR1cm4gMX19O210LnZhbGlkYXRlPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09bXQuREVQVEhfQ09NUE9ORU5UfHx0PT09bXQuREVQVEhfU1RFTkNJTHx8dD09PW10LkFMUEhBfHx0PT09bXQuUkVEfHx0PT09bXQuUkd8fHQ9PT1tdC5SR0J8fHQ9PT1tdC5SR0JBfHx0PT09bXQuUkVEX0lOVEVHRVJ8fHQ9PT1tdC5SR19JTlRFR0VSfHx0PT09bXQuUkdCX0lOVEVHRVJ8fHQ9PT1tdC5SR0JBX0lOVEVHRVJ8fHQ9PT1tdC5MVU1JTkFOQ0V8fHQ9PT1tdC5MVU1JTkFOQ0VfQUxQSEF8fHQ9PT1tdC5SR0JfRFhUMXx8dD09PW10LlJHQkFfRFhUMXx8dD09PW10LlJHQkFfRFhUM3x8dD09PW10LlJHQkFfRFhUNXx8dD09PW10LlJHQl9QVlJUQ180QlBQVjF8fHQ9PT1tdC5SR0JfUFZSVENfMkJQUFYxfHx0PT09bXQuUkdCQV9QVlJUQ180QlBQVjF8fHQ9PT1tdC5SR0JBX1BWUlRDXzJCUFBWMXx8dD09PW10LlJHQkFfQVNUQ3x8dD09PW10LlJHQl9FVEMxfHx0PT09bXQuUkdCOF9FVEMyfHx0PT09bXQuUkdCQThfRVRDMl9FQUN8fHQ9PT1tdC5SR0JBX0JDN307bXQuaXNDb2xvckZvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PW10LlJFRHx8dD09PW10LkFMUEhBfHx0PT09bXQuUkdCfHx0PT09bXQuUkdCQXx8dD09PW10LkxVTUlOQU5DRXx8dD09PW10LkxVTUlOQU5DRV9BTFBIQX07bXQuaXNEZXB0aEZvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PW10LkRFUFRIX0NPTVBPTkVOVHx8dD09PW10LkRFUFRIX1NURU5DSUx9O210LmlzQ29tcHJlc3NlZEZvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PW10LlJHQl9EWFQxfHx0PT09bXQuUkdCQV9EWFQxfHx0PT09bXQuUkdCQV9EWFQzfHx0PT09bXQuUkdCQV9EWFQ1fHx0PT09bXQuUkdCX1BWUlRDXzRCUFBWMXx8dD09PW10LlJHQl9QVlJUQ18yQlBQVjF8fHQ9PT1tdC5SR0JBX1BWUlRDXzRCUFBWMXx8dD09PW10LlJHQkFfUFZSVENfMkJQUFYxfHx0PT09bXQuUkdCQV9BU1RDfHx0PT09bXQuUkdCX0VUQzF8fHQ9PT1tdC5SR0I4X0VUQzJ8fHQ9PT1tdC5SR0JBOF9FVEMyX0VBQ3x8dD09PW10LlJHQkFfQkM3fTttdC5pc0RYVEZvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PW10LlJHQl9EWFQxfHx0PT09bXQuUkdCQV9EWFQxfHx0PT09bXQuUkdCQV9EWFQzfHx0PT09bXQuUkdCQV9EWFQ1fTttdC5pc1BWUlRDRm9ybWF0PWZ1bmN0aW9uKHQpe3JldHVybiB0PT09bXQuUkdCX1BWUlRDXzRCUFBWMXx8dD09PW10LlJHQl9QVlJUQ18yQlBQVjF8fHQ9PT1tdC5SR0JBX1BWUlRDXzRCUFBWMXx8dD09PW10LlJHQkFfUFZSVENfMkJQUFYxfTttdC5pc0FTVENGb3JtYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1tdC5SR0JBX0FTVEN9O210LmlzRVRDMUZvcm1hdD1mdW5jdGlvbih0KXtyZXR1cm4gdD09PW10LlJHQl9FVEMxfTttdC5pc0VUQzJGb3JtYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1tdC5SR0I4X0VUQzJ8fHQ9PT1tdC5SR0JBOF9FVEMyX0VBQ307bXQuaXNCQzdGb3JtYXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQ9PT1tdC5SR0JBX0JDN307bXQuY29tcHJlc3NlZFRleHR1cmVTaXplSW5CeXRlcz1mdW5jdGlvbih0LGUsbil7c3dpdGNoKHQpe2Nhc2UgbXQuUkdCX0RYVDE6Y2FzZSBtdC5SR0JBX0RYVDE6Y2FzZSBtdC5SR0JfRVRDMTpjYXNlIG10LlJHQjhfRVRDMjpyZXR1cm4gTWF0aC5mbG9vcigoZSszKS80KSpNYXRoLmZsb29yKChuKzMpLzQpKjg7Y2FzZSBtdC5SR0JBX0RYVDM6Y2FzZSBtdC5SR0JBX0RYVDU6Y2FzZSBtdC5SR0JBX0FTVEM6Y2FzZSBtdC5SR0JBOF9FVEMyX0VBQzpyZXR1cm4gTWF0aC5mbG9vcigoZSszKS80KSpNYXRoLmZsb29yKChuKzMpLzQpKjE2O2Nhc2UgbXQuUkdCX1BWUlRDXzRCUFBWMTpjYXNlIG10LlJHQkFfUFZSVENfNEJQUFYxOnJldHVybiBNYXRoLmZsb29yKChNYXRoLm1heChlLDgpKk1hdGgubWF4KG4sOCkqNCs3KS84KTtjYXNlIG10LlJHQl9QVlJUQ18yQlBQVjE6Y2FzZSBtdC5SR0JBX1BWUlRDXzJCUFBWMTpyZXR1cm4gTWF0aC5mbG9vcigoTWF0aC5tYXgoZSwxNikqTWF0aC5tYXgobiw4KSoyKzcpLzgpO2Nhc2UgbXQuUkdCQV9CQzc6cmV0dXJuIE1hdGguY2VpbChlLzQpKk1hdGguY2VpbChuLzQpKjE2O2RlZmF1bHQ6cmV0dXJuIDB9fTttdC50ZXh0dXJlU2l6ZUluQnl0ZXM9ZnVuY3Rpb24odCxlLG4sbyl7bGV0IHI9bXQuY29tcG9uZW50c0xlbmd0aCh0KTtyZXR1cm4gaW8uaXNQYWNrZWQoZSkmJihyPTEpLHIqaW8uc2l6ZUluQnl0ZXMoZSkqbipvfTttdC50ZXh0dXJlM0RTaXplSW5CeXRlcz1mdW5jdGlvbih0LGUsbixvLHIpe2xldCBpPW10LmNvbXBvbmVudHNMZW5ndGgodCk7cmV0dXJuIGlvLmlzUGFja2VkKGUpJiYoaT0xKSxpKmlvLnNpemVJbkJ5dGVzKGUpKm4qbypyfTttdC5hbGlnbm1lbnRJbkJ5dGVzPWZ1bmN0aW9uKHQsZSxuKXtsZXQgbz1tdC50ZXh0dXJlU2l6ZUluQnl0ZXModCxlLG4sMSklNDtyZXR1cm4gbz09PTA/NDpvPT09Mj8yOjF9O210LmNyZWF0ZVR5cGVkQXJyYXk9ZnVuY3Rpb24odCxlLG4sbyl7bGV0IHI9aW8uZ2V0VHlwZWRBcnJheUNvbnN0cnVjdG9yKGUpLGk9bXQuY29tcG9uZW50c0xlbmd0aCh0KSpuKm87cmV0dXJuIG5ldyByKGkpfTttdC5mbGlwWT1mdW5jdGlvbih0LGUsbixvLHIpe2lmKHI9PT0xKXJldHVybiB0O2xldCBpPW10LmNyZWF0ZVR5cGVkQXJyYXkoZSxuLG8scikscz1tdC5jb21wb25lbnRzTGVuZ3RoKGUpLGY9bypzO2ZvcihsZXQgdT0wO3U8cjsrK3Upe2xldCBjPXUqbypzLGw9KHItdS0xKSpvKnM7Zm9yKGxldCBwPTA7cDxmOysrcClpW2wrcF09dFtjK3BdfXJldHVybiBpfTttdC50b0ludGVybmFsRm9ybWF0PWZ1bmN0aW9uKHQsZSxuKXtpZighbi53ZWJnbDIpcmV0dXJuIHQ7aWYodD09PW10LkRFUFRIX1NURU5DSUwpcmV0dXJuIEZ0LkRFUFRIMjRfU1RFTkNJTDg7aWYodD09PW10LkRFUFRIX0NPTVBPTkVOVCl7aWYoZT09PWlvLlVOU0lHTkVEX1NIT1JUKXJldHVybiBGdC5ERVBUSF9DT01QT05FTlQxNjtpZihlPT09aW8uVU5TSUdORURfSU5UKXJldHVybiBGdC5ERVBUSF9DT01QT05FTlQyNH1pZihlPT09aW8uRkxPQVQpc3dpdGNoKHQpe2Nhc2UgbXQuUkdCQTpyZXR1cm4gRnQuUkdCQTMyRjtjYXNlIG10LlJHQjpyZXR1cm4gRnQuUkdCMzJGO2Nhc2UgbXQuUkc6cmV0dXJuIEZ0LlJHMzJGO2Nhc2UgbXQuUkVEOnJldHVybiBGdC5SMzJGfWlmKGU9PT1pby5IQUxGX0ZMT0FUKXN3aXRjaCh0KXtjYXNlIG10LlJHQkE6cmV0dXJuIEZ0LlJHQkExNkY7Y2FzZSBtdC5SR0I6cmV0dXJuIEZ0LlJHQjE2RjtjYXNlIG10LlJHOnJldHVybiBGdC5SRzE2RjtjYXNlIG10LlJFRDpyZXR1cm4gRnQuUjE2Rn1pZihlPT09aW8uVU5TSUdORURfQllURSlzd2l0Y2godCl7Y2FzZSBtdC5SR0JBOnJldHVybiBGdC5SR0JBODtjYXNlIG10LlJHQjpyZXR1cm4gRnQuUkdCODtjYXNlIG10LlJHOnJldHVybiBGdC5SRzg7Y2FzZSBtdC5SRUQ6cmV0dXJuIEZ0LlI4fWlmKGU9PT1pby5JTlQpc3dpdGNoKHQpe2Nhc2UgbXQuUkdCQV9JTlRFR0VSOnJldHVybiBGdC5SR0JBMzJJO2Nhc2UgbXQuUkdCX0lOVEVHRVI6cmV0dXJuIEZ0LlJHQjMySTtjYXNlIG10LlJHX0lOVEVHRVI6cmV0dXJuIEZ0LlJHMzJJO2Nhc2UgbXQuUkVEX0lOVEVHRVI6cmV0dXJuIEZ0LlIzMkl9aWYoZT09PWlvLlVOU0lHTkVEX0lOVClzd2l0Y2godCl7Y2FzZSBtdC5SR0JBX0lOVEVHRVI6cmV0dXJuIEZ0LlJHQkEzMlVJO2Nhc2UgbXQuUkdCX0lOVEVHRVI6cmV0dXJuIEZ0LlJHQjMyVUk7Y2FzZSBtdC5SR19JTlRFR0VSOnJldHVybiBGdC5SRzMyVUk7Y2FzZSBtdC5SRURfSU5URUdFUjpyZXR1cm4gRnQuUjMyVUl9cmV0dXJuIHR9O0duPU9iamVjdC5mcmVlemUobXQpfSk7dmFyIEs4LGJ1LFFTPSQoKCk9PntLOD17VktfRk9STUFUX1VOREVGSU5FRDowLFZLX0ZPUk1BVF9SNEc0X1VOT1JNX1BBQ0s4OjEsVktfRk9STUFUX1I0RzRCNEE0X1VOT1JNX1BBQ0sxNjoyLFZLX0ZPUk1BVF9CNEc0UjRBNF9VTk9STV9QQUNLMTY6MyxWS19GT1JNQVRfUjVHNkI1X1VOT1JNX1BBQ0sxNjo0LFZLX0ZPUk1BVF9CNUc2UjVfVU5PUk1fUEFDSzE2OjUsVktfRk9STUFUX1I1RzVCNUExX1VOT1JNX1BBQ0sxNjo2LFZLX0ZPUk1BVF9CNUc1UjVBMV9VTk9STV9QQUNLMTY6NyxWS19GT1JNQVRfQTFSNUc1QjVfVU5PUk1fUEFDSzE2OjgsVktfRk9STUFUX1I4X1VOT1JNOjksVktfRk9STUFUX1I4X1NOT1JNOjEwLFZLX0ZPUk1BVF9SOF9VU0NBTEVEOjExLFZLX0ZPUk1BVF9SOF9TU0NBTEVEOjEyLFZLX0ZPUk1BVF9SOF9VSU5UOjEzLFZLX0ZPUk1BVF9SOF9TSU5UOjE0LFZLX0ZPUk1BVF9SOF9TUkdCOjE1LFZLX0ZPUk1BVF9SOEc4X1VOT1JNOjE2LFZLX0ZPUk1BVF9SOEc4X1NOT1JNOjE3LFZLX0ZPUk1BVF9SOEc4X1VTQ0FMRUQ6MTgsVktfRk9STUFUX1I4RzhfU1NDQUxFRDoxOSxWS19GT1JNQVRfUjhHOF9VSU5UOjIwLFZLX0ZPUk1BVF9SOEc4X1NJTlQ6MjEsVktfRk9STUFUX1I4RzhfU1JHQjoyMixWS19GT1JNQVRfUjhHOEI4X1VOT1JNOjIzLFZLX0ZPUk1BVF9SOEc4QjhfU05PUk06MjQsVktfRk9STUFUX1I4RzhCOF9VU0NBTEVEOjI1LFZLX0ZPUk1BVF9SOEc4QjhfU1NDQUxFRDoyNixWS19GT1JNQVRfUjhHOEI4X1VJTlQ6MjcsVktfRk9STUFUX1I4RzhCOF9TSU5UOjI4LFZLX0ZPUk1BVF9SOEc4QjhfU1JHQjoyOSxWS19GT1JNQVRfQjhHOFI4X1VOT1JNOjMwLFZLX0ZPUk1BVF9COEc4UjhfU05PUk06MzEsVktfRk9STUFUX0I4RzhSOF9VU0NBTEVEOjMyLFZLX0ZPUk1BVF9COEc4UjhfU1NDQUxFRDozMyxWS19GT1JNQVRfQjhHOFI4X1VJTlQ6MzQsVktfRk9STUFUX0I4RzhSOF9TSU5UOjM1LFZLX0ZPUk1BVF9COEc4UjhfU1JHQjozNixWS19GT1JNQVRfUjhHOEI4QThfVU5PUk06MzcsVktfRk9STUFUX1I4RzhCOEE4X1NOT1JNOjM4LFZLX0ZPUk1BVF9SOEc4QjhBOF9VU0NBTEVEOjM5LFZLX0ZPUk1BVF9SOEc4QjhBOF9TU0NBTEVEOjQwLFZLX0ZPUk1BVF9SOEc4QjhBOF9VSU5UOjQxLFZLX0ZPUk1BVF9SOEc4QjhBOF9TSU5UOjQyLFZLX0ZPUk1BVF9SOEc4QjhBOF9TUkdCOjQzLFZLX0ZPUk1BVF9COEc4UjhBOF9VTk9STTo0NCxWS19GT1JNQVRfQjhHOFI4QThfU05PUk06NDUsVktfRk9STUFUX0I4RzhSOEE4X1VTQ0FMRUQ6NDYsVktfRk9STUFUX0I4RzhSOEE4X1NTQ0FMRUQ6NDcsVktfRk9STUFUX0I4RzhSOEE4X1VJTlQ6NDgsVktfRk9STUFUX0I4RzhSOEE4X1NJTlQ6NDksVktfRk9STUFUX0I4RzhSOEE4X1NSR0I6NTAsVktfRk9STUFUX0E4QjhHOFI4X1VOT1JNX1BBQ0szMjo1MSxWS19GT1JNQVRfQThCOEc4UjhfU05PUk1fUEFDSzMyOjUyLFZLX0ZPUk1BVF9BOEI4RzhSOF9VU0NBTEVEX1BBQ0szMjo1MyxWS19GT1JNQVRfQThCOEc4UjhfU1NDQUxFRF9QQUNLMzI6NTQsVktfRk9STUFUX0E4QjhHOFI4X1VJTlRfUEFDSzMyOjU1LFZLX0ZPUk1BVF9BOEI4RzhSOF9TSU5UX1BBQ0szMjo1NixWS19GT1JNQVRfQThCOEc4UjhfU1JHQl9QQUNLMzI6NTcsVktfRk9STUFUX0EyUjEwRzEwQjEwX1VOT1JNX1BBQ0szMjo1OCxWS19GT1JNQVRfQTJSMTBHMTBCMTBfU05PUk1fUEFDSzMyOjU5LFZLX0ZPUk1BVF9BMlIxMEcxMEIxMF9VU0NBTEVEX1BBQ0szMjo2MCxWS19GT1JNQVRfQTJSMTBHMTBCMTBfU1NDQUxFRF9QQUNLMzI6NjEsVktfRk9STUFUX0EyUjEwRzEwQjEwX1VJTlRfUEFDSzMyOjYyLFZLX0ZPUk1BVF9BMlIxMEcxMEIxMF9TSU5UX1BBQ0szMjo2MyxWS19GT1JNQVRfQTJCMTBHMTBSMTBfVU5PUk1fUEFDSzMyOjY0LFZLX0ZPUk1BVF9BMkIxMEcxMFIxMF9TTk9STV9QQUNLMzI6NjUsVktfRk9STUFUX0EyQjEwRzEwUjEwX1VTQ0FMRURfUEFDSzMyOjY2LFZLX0ZPUk1BVF9BMkIxMEcxMFIxMF9TU0NBTEVEX1BBQ0szMjo2NyxWS19GT1JNQVRfQTJCMTBHMTBSMTBfVUlOVF9QQUNLMzI6NjgsVktfRk9STUFUX0EyQjEwRzEwUjEwX1NJTlRfUEFDSzMyOjY5LFZLX0ZPUk1BVF9SMTZfVU5PUk06NzAsVktfRk9STUFUX1IxNl9TTk9STTo3MSxWS19GT1JNQVRfUjE2X1VTQ0FMRUQ6NzIsVktfRk9STUFUX1IxNl9TU0NBTEVEOjczLFZLX0ZPUk1BVF9SMTZfVUlOVDo3NCxWS19GT1JNQVRfUjE2X1NJTlQ6NzUsVktfRk9STUFUX1IxNl9TRkxPQVQ6NzYsVktfRk9STUFUX1IxNkcxNl9VTk9STTo3NyxWS19GT1JNQVRfUjE2RzE2X1NOT1JNOjc4LFZLX0ZPUk1BVF9SMTZHMTZfVVNDQUxFRDo3OSxWS19GT1JNQVRfUjE2RzE2X1NTQ0FMRUQ6ODAsVktfRk9STUFUX1IxNkcxNl9VSU5UOjgxLFZLX0ZPUk1BVF9SMTZHMTZfU0lOVDo4MixWS19GT1JNQVRfUjE2RzE2X1NGTE9BVDo4MyxWS19GT1JNQVRfUjE2RzE2QjE2X1VOT1JNOjg0LFZLX0ZPUk1BVF9SMTZHMTZCMTZfU05PUk06ODUsVktfRk9STUFUX1IxNkcxNkIxNl9VU0NBTEVEOjg2LFZLX0ZPUk1BVF9SMTZHMTZCMTZfU1NDQUxFRDo4NyxWS19GT1JNQVRfUjE2RzE2QjE2X1VJTlQ6ODgsVktfRk9STUFUX1IxNkcxNkIxNl9TSU5UOjg5LFZLX0ZPUk1BVF9SMTZHMTZCMTZfU0ZMT0FUOjkwLFZLX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVU5PUk06OTEsVktfRk9STUFUX1IxNkcxNkIxNkExNl9TTk9STTo5MixWS19GT1JNQVRfUjE2RzE2QjE2QTE2X1VTQ0FMRUQ6OTMsVktfRk9STUFUX1IxNkcxNkIxNkExNl9TU0NBTEVEOjk0LFZLX0ZPUk1BVF9SMTZHMTZCMTZBMTZfVUlOVDo5NSxWS19GT1JNQVRfUjE2RzE2QjE2QTE2X1NJTlQ6OTYsVktfRk9STUFUX1IxNkcxNkIxNkExNl9TRkxPQVQ6OTcsVktfRk9STUFUX1IzMl9VSU5UOjk4LFZLX0ZPUk1BVF9SMzJfU0lOVDo5OSxWS19GT1JNQVRfUjMyX1NGTE9BVDoxMDAsVktfRk9STUFUX1IzMkczMl9VSU5UOjEwMSxWS19GT1JNQVRfUjMyRzMyX1NJTlQ6MTAyLFZLX0ZPUk1BVF9SMzJHMzJfU0ZMT0FUOjEwMyxWS19GT1JNQVRfUjMyRzMyQjMyX1VJTlQ6MTA0LFZLX0ZPUk1BVF9SMzJHMzJCMzJfU0lOVDoxMDUsVktfRk9STUFUX1IzMkczMkIzMl9TRkxPQVQ6MTA2LFZLX0ZPUk1BVF9SMzJHMzJCMzJBMzJfVUlOVDoxMDcsVktfRk9STUFUX1IzMkczMkIzMkEzMl9TSU5UOjEwOCxWS19GT1JNQVRfUjMyRzMyQjMyQTMyX1NGTE9BVDoxMDksVktfRk9STUFUX1I2NF9VSU5UOjExMCxWS19GT1JNQVRfUjY0X1NJTlQ6MTExLFZLX0ZPUk1BVF9SNjRfU0ZMT0FUOjExMixWS19GT1JNQVRfUjY0RzY0X1VJTlQ6MTEzLFZLX0ZPUk1BVF9SNjRHNjRfU0lOVDoxMTQsVktfRk9STUFUX1I2NEc2NF9TRkxPQVQ6MTE1LFZLX0ZPUk1BVF9SNjRHNjRCNjRfVUlOVDoxMTYsVktfRk9STUFUX1I2NEc2NEI2NF9TSU5UOjExNyxWS19GT1JNQVRfUjY0RzY0QjY0X1NGTE9BVDoxMTgsVktfRk9STUFUX1I2NEc2NEI2NEE2NF9VSU5UOjExOSxWS19GT1JNQVRfUjY0RzY0QjY0QTY0X1NJTlQ6MTIwLFZLX0ZPUk1BVF9SNjRHNjRCNjRBNjRfU0ZMT0FUOjEyMSxWS19GT1JNQVRfQjEwRzExUjExX1VGTE9BVF9QQUNLMzI6MTIyLFZLX0ZPUk1BVF9FNUI5RzlSOV9VRkxPQVRfUEFDSzMyOjEyMyxWS19GT1JNQVRfRDE2X1VOT1JNOjEyNCxWS19GT1JNQVRfWDhfRDI0X1VOT1JNX1BBQ0szMjoxMjUsVktfRk9STUFUX0QzMl9TRkxPQVQ6MTI2LFZLX0ZPUk1BVF9TOF9VSU5UOjEyNyxWS19GT1JNQVRfRDE2X1VOT1JNX1M4X1VJTlQ6MTI4LFZLX0ZPUk1BVF9EMjRfVU5PUk1fUzhfVUlOVDoxMjksVktfRk9STUFUX0QzMl9TRkxPQVRfUzhfVUlOVDoxMzAsVktfRk9STUFUX0JDMV9SR0JfVU5PUk1fQkxPQ0s6MTMxLFZLX0ZPUk1BVF9CQzFfUkdCX1NSR0JfQkxPQ0s6MTMyLFZLX0ZPUk1BVF9CQzFfUkdCQV9VTk9STV9CTE9DSzoxMzMsVktfRk9STUFUX0JDMV9SR0JBX1NSR0JfQkxPQ0s6MTM0LFZLX0ZPUk1BVF9CQzJfVU5PUk1fQkxPQ0s6MTM1LFZLX0ZPUk1BVF9CQzJfU1JHQl9CTE9DSzoxMzYsVktfRk9STUFUX0JDM19VTk9STV9CTE9DSzoxMzcsVktfRk9STUFUX0JDM19TUkdCX0JMT0NLOjEzOCxWS19GT1JNQVRfQkM0X1VOT1JNX0JMT0NLOjEzOSxWS19GT1JNQVRfQkM0X1NOT1JNX0JMT0NLOjE0MCxWS19GT1JNQVRfQkM1X1VOT1JNX0JMT0NLOjE0MSxWS19GT1JNQVRfQkM1X1NOT1JNX0JMT0NLOjE0MixWS19GT1JNQVRfQkM2SF9VRkxPQVRfQkxPQ0s6MTQzLFZLX0ZPUk1BVF9CQzZIX1NGTE9BVF9CTE9DSzoxNDQsVktfRk9STUFUX0JDN19VTk9STV9CTE9DSzoxNDUsVktfRk9STUFUX0JDN19TUkdCX0JMT0NLOjE0NixWS19GT1JNQVRfRVRDMl9SOEc4QjhfVU5PUk1fQkxPQ0s6MTQ3LFZLX0ZPUk1BVF9FVEMyX1I4RzhCOF9TUkdCX0JMT0NLOjE0OCxWS19GT1JNQVRfRVRDMl9SOEc4QjhBMV9VTk9STV9CTE9DSzoxNDksVktfRk9STUFUX0VUQzJfUjhHOEI4QTFfU1JHQl9CTE9DSzoxNTAsVktfRk9STUFUX0VUQzJfUjhHOEI4QThfVU5PUk1fQkxPQ0s6MTUxLFZLX0ZPUk1BVF9FVEMyX1I4RzhCOEE4X1NSR0JfQkxPQ0s6MTUyLFZLX0ZPUk1BVF9FQUNfUjExX1VOT1JNX0JMT0NLOjE1MyxWS19GT1JNQVRfRUFDX1IxMV9TTk9STV9CTE9DSzoxNTQsVktfRk9STUFUX0VBQ19SMTFHMTFfVU5PUk1fQkxPQ0s6MTU1LFZLX0ZPUk1BVF9FQUNfUjExRzExX1NOT1JNX0JMT0NLOjE1NixWS19GT1JNQVRfQVNUQ180eDRfVU5PUk1fQkxPQ0s6MTU3LFZLX0ZPUk1BVF9BU1RDXzR4NF9TUkdCX0JMT0NLOjE1OCxWS19GT1JNQVRfQVNUQ181eDRfVU5PUk1fQkxPQ0s6MTU5LFZLX0ZPUk1BVF9BU1RDXzV4NF9TUkdCX0JMT0NLOjE2MCxWS19GT1JNQVRfQVNUQ181eDVfVU5PUk1fQkxPQ0s6MTYxLFZLX0ZPUk1BVF9BU1RDXzV4NV9TUkdCX0JMT0NLOjE2MixWS19GT1JNQVRfQVNUQ182eDVfVU5PUk1fQkxPQ0s6MTYzLFZLX0ZPUk1BVF9BU1RDXzZ4NV9TUkdCX0JMT0NLOjE2NCxWS19GT1JNQVRfQVNUQ182eDZfVU5PUk1fQkxPQ0s6MTY1LFZLX0ZPUk1BVF9BU1RDXzZ4Nl9TUkdCX0JMT0NLOjE2NixWS19GT1JNQVRfQVNUQ184eDVfVU5PUk1fQkxPQ0s6MTY3LFZLX0ZPUk1BVF9BU1RDXzh4NV9TUkdCX0JMT0NLOjE2OCxWS19GT1JNQVRfQVNUQ184eDZfVU5PUk1fQkxPQ0s6MTY5LFZLX0ZPUk1BVF9BU1RDXzh4Nl9TUkdCX0JMT0NLOjE3MCxWS19GT1JNQVRfQVNUQ184eDhfVU5PUk1fQkxPQ0s6MTcxLFZLX0ZPUk1BVF9BU1RDXzh4OF9TUkdCX0JMT0NLOjE3MixWS19GT1JNQVRfQVNUQ18xMHg1X1VOT1JNX0JMT0NLOjE3MyxWS19GT1JNQVRfQVNUQ18xMHg1X1NSR0JfQkxPQ0s6MTc0LFZLX0ZPUk1BVF9BU1RDXzEweDZfVU5PUk1fQkxPQ0s6MTc1LFZLX0ZPUk1BVF9BU1RDXzEweDZfU1JHQl9CTE9DSzoxNzYsVktfRk9STUFUX0FTVENfMTB4OF9VTk9STV9CTE9DSzoxNzcsVktfRk9STUFUX0FTVENfMTB4OF9TUkdCX0JMT0NLOjE3OCxWS19GT1JNQVRfQVNUQ18xMHgxMF9VTk9STV9CTE9DSzoxNzksVktfRk9STUFUX0FTVENfMTB4MTBfU1JHQl9CTE9DSzoxODAsVktfRk9STUFUX0FTVENfMTJ4MTBfVU5PUk1fQkxPQ0s6MTgxLFZLX0ZPUk1BVF9BU1RDXzEyeDEwX1NSR0JfQkxPQ0s6MTgyLFZLX0ZPUk1BVF9BU1RDXzEyeDEyX1VOT1JNX0JMT0NLOjE4MyxWS19GT1JNQVRfQVNUQ18xMngxMl9TUkdCX0JMT0NLOjE4NCxWS19GT1JNQVRfRzhCOEc4UjhfNDIyX1VOT1JNOjEwMDAxNTZlMyxWS19GT1JNQVRfQjhHOFI4RzhfNDIyX1VOT1JNOjEwMDAxNTYwMDEsVktfRk9STUFUX0c4X0I4X1I4XzNQTEFORV80MjBfVU5PUk06MTAwMDE1NjAwMixWS19GT1JNQVRfRzhfQjhSOF8yUExBTkVfNDIwX1VOT1JNOjEwMDAxNTYwMDMsVktfRk9STUFUX0c4X0I4X1I4XzNQTEFORV80MjJfVU5PUk06MTAwMDE1NjAwNCxWS19GT1JNQVRfRzhfQjhSOF8yUExBTkVfNDIyX1VOT1JNOjEwMDAxNTYwMDUsVktfRk9STUFUX0c4X0I4X1I4XzNQTEFORV80NDRfVU5PUk06MTAwMDE1NjAwNixWS19GT1JNQVRfUjEwWDZfVU5PUk1fUEFDSzE2OjEwMDAxNTYwMDcsVktfRk9STUFUX1IxMFg2RzEwWDZfVU5PUk1fMlBBQ0sxNjoxMDAwMTU2MDA4LFZLX0ZPUk1BVF9SMTBYNkcxMFg2QjEwWDZBMTBYNl9VTk9STV80UEFDSzE2OjEwMDAxNTYwMDksVktfRk9STUFUX0cxMFg2QjEwWDZHMTBYNlIxMFg2XzQyMl9VTk9STV80UEFDSzE2OjEwMDAxNTYwMTAsVktfRk9STUFUX0IxMFg2RzEwWDZSMTBYNkcxMFg2XzQyMl9VTk9STV80UEFDSzE2OjEwMDAxNTYwMTEsVktfRk9STUFUX0cxMFg2X0IxMFg2X1IxMFg2XzNQTEFORV80MjBfVU5PUk1fM1BBQ0sxNjoxMDAwMTU2MDEyLFZLX0ZPUk1BVF9HMTBYNl9CMTBYNlIxMFg2XzJQTEFORV80MjBfVU5PUk1fM1BBQ0sxNjoxMDAwMTU2MDEzLFZLX0ZPUk1BVF9HMTBYNl9CMTBYNl9SMTBYNl8zUExBTkVfNDIyX1VOT1JNXzNQQUNLMTY6MTAwMDE1NjAxNCxWS19GT1JNQVRfRzEwWDZfQjEwWDZSMTBYNl8yUExBTkVfNDIyX1VOT1JNXzNQQUNLMTY6MTAwMDE1NjAxNSxWS19GT1JNQVRfRzEwWDZfQjEwWDZfUjEwWDZfM1BMQU5FXzQ0NF9VTk9STV8zUEFDSzE2OjEwMDAxNTYwMTYsVktfRk9STUFUX1IxMlg0X1VOT1JNX1BBQ0sxNjoxMDAwMTU2MDE3LFZLX0ZPUk1BVF9SMTJYNEcxMlg0X1VOT1JNXzJQQUNLMTY6MTAwMDE1NjAxOCxWS19GT1JNQVRfUjEyWDRHMTJYNEIxMlg0QTEyWDRfVU5PUk1fNFBBQ0sxNjoxMDAwMTU2MDE5LFZLX0ZPUk1BVF9HMTJYNEIxMlg0RzEyWDRSMTJYNF80MjJfVU5PUk1fNFBBQ0sxNjoxMDAwMTU2MDIwLFZLX0ZPUk1BVF9CMTJYNEcxMlg0UjEyWDRHMTJYNF80MjJfVU5PUk1fNFBBQ0sxNjoxMDAwMTU2MDIxLFZLX0ZPUk1BVF9HMTJYNF9CMTJYNF9SMTJYNF8zUExBTkVfNDIwX1VOT1JNXzNQQUNLMTY6MTAwMDE1NjAyMixWS19GT1JNQVRfRzEyWDRfQjEyWDRSMTJYNF8yUExBTkVfNDIwX1VOT1JNXzNQQUNLMTY6MTAwMDE1NjAyMyxWS19GT1JNQVRfRzEyWDRfQjEyWDRfUjEyWDRfM1BMQU5FXzQyMl9VTk9STV8zUEFDSzE2OjEwMDAxNTYwMjQsVktfRk9STUFUX0cxMlg0X0IxMlg0UjEyWDRfMlBMQU5FXzQyMl9VTk9STV8zUEFDSzE2OjEwMDAxNTYwMjUsVktfRk9STUFUX0cxMlg0X0IxMlg0X1IxMlg0XzNQTEFORV80NDRfVU5PUk1fM1BBQ0sxNjoxMDAwMTU2MDI2LFZLX0ZPUk1BVF9HMTZCMTZHMTZSMTZfNDIyX1VOT1JNOjEwMDAxNTYwMjcsVktfRk9STUFUX0IxNkcxNlIxNkcxNl80MjJfVU5PUk06MTAwMDE1NjAyOCxWS19GT1JNQVRfRzE2X0IxNl9SMTZfM1BMQU5FXzQyMF9VTk9STToxMDAwMTU2MDI5LFZLX0ZPUk1BVF9HMTZfQjE2UjE2XzJQTEFORV80MjBfVU5PUk06MTAwMDE1NjAzMCxWS19GT1JNQVRfRzE2X0IxNl9SMTZfM1BMQU5FXzQyMl9VTk9STToxMDAwMTU2MDMxLFZLX0ZPUk1BVF9HMTZfQjE2UjE2XzJQTEFORV80MjJfVU5PUk06MTAwMDE1NjAzMixWS19GT1JNQVRfRzE2X0IxNl9SMTZfM1BMQU5FXzQ0NF9VTk9STToxMDAwMTU2MDMzLFZLX0ZPUk1BVF9QVlJUQzFfMkJQUF9VTk9STV9CTE9DS19JTUc6MTAwMDA1NGUzLFZLX0ZPUk1BVF9QVlJUQzFfNEJQUF9VTk9STV9CTE9DS19JTUc6MTAwMDA1NDAwMSxWS19GT1JNQVRfUFZSVEMyXzJCUFBfVU5PUk1fQkxPQ0tfSU1HOjEwMDAwNTQwMDIsVktfRk9STUFUX1BWUlRDMl80QlBQX1VOT1JNX0JMT0NLX0lNRzoxMDAwMDU0MDAzLFZLX0ZPUk1BVF9QVlJUQzFfMkJQUF9TUkdCX0JMT0NLX0lNRzoxMDAwMDU0MDA0LFZLX0ZPUk1BVF9QVlJUQzFfNEJQUF9TUkdCX0JMT0NLX0lNRzoxMDAwMDU0MDA1LFZLX0ZPUk1BVF9QVlJUQzJfMkJQUF9TUkdCX0JMT0NLX0lNRzoxMDAwMDU0MDA2LFZLX0ZPUk1BVF9QVlJUQzJfNEJQUF9TUkdCX0JMT0NLX0lNRzoxMDAwMDU0MDA3LFZLX0ZPUk1BVF9BU1RDXzR4NF9TRkxPQVRfQkxPQ0tfRVhUOjEwMDAwNjZlMyxWS19GT1JNQVRfQVNUQ181eDRfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDAxLFZLX0ZPUk1BVF9BU1RDXzV4NV9TRkxPQVRfQkxPQ0tfRVhUOjEwMDAwNjYwMDIsVktfRk9STUFUX0FTVENfNng1X1NGTE9BVF9CTE9DS19FWFQ6MTAwMDA2NjAwMyxWS19GT1JNQVRfQVNUQ182eDZfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDA0LFZLX0ZPUk1BVF9BU1RDXzh4NV9TRkxPQVRfQkxPQ0tfRVhUOjEwMDAwNjYwMDUsVktfRk9STUFUX0FTVENfOHg2X1NGTE9BVF9CTE9DS19FWFQ6MTAwMDA2NjAwNixWS19GT1JNQVRfQVNUQ184eDhfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDA3LFZLX0ZPUk1BVF9BU1RDXzEweDVfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDA4LFZLX0ZPUk1BVF9BU1RDXzEweDZfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDA5LFZLX0ZPUk1BVF9BU1RDXzEweDhfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDEwLFZLX0ZPUk1BVF9BU1RDXzEweDEwX1NGTE9BVF9CTE9DS19FWFQ6MTAwMDA2NjAxMSxWS19GT1JNQVRfQVNUQ18xMngxMF9TRkxPQVRfQkxPQ0tfRVhUOjEwMDAwNjYwMTIsVktfRk9STUFUX0FTVENfMTJ4MTJfU0ZMT0FUX0JMT0NLX0VYVDoxMDAwMDY2MDEzLFZLX0ZPUk1BVF9HOEI4RzhSOF80MjJfVU5PUk1fS0hSOjEwMDAxNTZlMyxWS19GT1JNQVRfQjhHOFI4RzhfNDIyX1VOT1JNX0tIUjoxMDAwMTU2MDAxLFZLX0ZPUk1BVF9HOF9COF9SOF8zUExBTkVfNDIwX1VOT1JNX0tIUjoxMDAwMTU2MDAyLFZLX0ZPUk1BVF9HOF9COFI4XzJQTEFORV80MjBfVU5PUk1fS0hSOjEwMDAxNTYwMDMsVktfRk9STUFUX0c4X0I4X1I4XzNQTEFORV80MjJfVU5PUk1fS0hSOjEwMDAxNTYwMDQsVktfRk9STUFUX0c4X0I4UjhfMlBMQU5FXzQyMl9VTk9STV9LSFI6MTAwMDE1NjAwNSxWS19GT1JNQVRfRzhfQjhfUjhfM1BMQU5FXzQ0NF9VTk9STV9LSFI6MTAwMDE1NjAwNixWS19GT1JNQVRfUjEwWDZfVU5PUk1fUEFDSzE2X0tIUjoxMDAwMTU2MDA3LFZLX0ZPUk1BVF9SMTBYNkcxMFg2X1VOT1JNXzJQQUNLMTZfS0hSOjEwMDAxNTYwMDgsVktfRk9STUFUX1IxMFg2RzEwWDZCMTBYNkExMFg2X1VOT1JNXzRQQUNLMTZfS0hSOjEwMDAxNTYwMDksVktfRk9STUFUX0cxMFg2QjEwWDZHMTBYNlIxMFg2XzQyMl9VTk9STV80UEFDSzE2X0tIUjoxMDAwMTU2MDEwLFZLX0ZPUk1BVF9CMTBYNkcxMFg2UjEwWDZHMTBYNl80MjJfVU5PUk1fNFBBQ0sxNl9LSFI6MTAwMDE1NjAxMSxWS19GT1JNQVRfRzEwWDZfQjEwWDZfUjEwWDZfM1BMQU5FXzQyMF9VTk9STV8zUEFDSzE2X0tIUjoxMDAwMTU2MDEyLFZLX0ZPUk1BVF9HMTBYNl9CMTBYNlIxMFg2XzJQTEFORV80MjBfVU5PUk1fM1BBQ0sxNl9LSFI6MTAwMDE1NjAxMyxWS19GT1JNQVRfRzEwWDZfQjEwWDZfUjEwWDZfM1BMQU5FXzQyMl9VTk9STV8zUEFDSzE2X0tIUjoxMDAwMTU2MDE0LFZLX0ZPUk1BVF9HMTBYNl9CMTBYNlIxMFg2XzJQTEFORV80MjJfVU5PUk1fM1BBQ0sxNl9LSFI6MTAwMDE1NjAxNSxWS19GT1JNQVRfRzEwWDZfQjEwWDZfUjEwWDZfM1BMQU5FXzQ0NF9VTk9STV8zUEFDSzE2X0tIUjoxMDAwMTU2MDE2LFZLX0ZPUk1BVF9SMTJYNF9VTk9STV9QQUNLMTZfS0hSOjEwMDAxNTYwMTcsVktfRk9STUFUX1IxMlg0RzEyWDRfVU5PUk1fMlBBQ0sxNl9LSFI6MTAwMDE1NjAxOCxWS19GT1JNQVRfUjEyWDRHMTJYNEIxMlg0QTEyWDRfVU5PUk1fNFBBQ0sxNl9LSFI6MTAwMDE1NjAxOSxWS19GT1JNQVRfRzEyWDRCMTJYNEcxMlg0UjEyWDRfNDIyX1VOT1JNXzRQQUNLMTZfS0hSOjEwMDAxNTYwMjAsVktfRk9STUFUX0IxMlg0RzEyWDRSMTJYNEcxMlg0XzQyMl9VTk9STV80UEFDSzE2X0tIUjoxMDAwMTU2MDIxLFZLX0ZPUk1BVF9HMTJYNF9CMTJYNF9SMTJYNF8zUExBTkVfNDIwX1VOT1JNXzNQQUNLMTZfS0hSOjEwMDAxNTYwMjIsVktfRk9STUFUX0cxMlg0X0IxMlg0UjEyWDRfMlBMQU5FXzQyMF9VTk9STV8zUEFDSzE2X0tIUjoxMDAwMTU2MDIzLFZLX0ZPUk1BVF9HMTJYNF9CMTJYNF9SMTJYNF8zUExBTkVfNDIyX1VOT1JNXzNQQUNLMTZfS0hSOjEwMDAxNTYwMjQsVktfRk9STUFUX0cxMlg0X0IxMlg0UjEyWDRfMlBMQU5FXzQyMl9VTk9STV8zUEFDSzE2X0tIUjoxMDAwMTU2MDI1LFZLX0ZPUk1BVF9HMTJYNF9CMTJYNF9SMTJYNF8zUExBTkVfNDQ0X1VOT1JNXzNQQUNLMTZfS0hSOjEwMDAxNTYwMjYsVktfRk9STUFUX0cxNkIxNkcxNlIxNl80MjJfVU5PUk1fS0hSOjEwMDAxNTYwMjcsVktfRk9STUFUX0IxNkcxNlIxNkcxNl80MjJfVU5PUk1fS0hSOjEwMDAxNTYwMjgsVktfRk9STUFUX0cxNl9CMTZfUjE2XzNQTEFORV80MjBfVU5PUk1fS0hSOjEwMDAxNTYwMjksVktfRk9STUFUX0cxNl9CMTZSMTZfMlBMQU5FXzQyMF9VTk9STV9LSFI6MTAwMDE1NjAzMCxWS19GT1JNQVRfRzE2X0IxNl9SMTZfM1BMQU5FXzQyMl9VTk9STV9LSFI6MTAwMDE1NjAzMSxWS19GT1JNQVRfRzE2X0IxNlIxNl8yUExBTkVfNDIyX1VOT1JNX0tIUjoxMDAwMTU2MDMyLFZLX0ZPUk1BVF9HMTZfQjE2X1IxNl8zUExBTkVfNDQ0X1VOT1JNX0tIUjoxMDAwMTU2MDMzfSxidT1PYmplY3QuZnJlZXplKEs4KX0pO2Z1bmN0aW9uIFc4KCl7cmV0dXJue3ZrRm9ybWF0OjAsdHlwZVNpemU6MSxwaXhlbFdpZHRoOjAscGl4ZWxIZWlnaHQ6MCxwaXhlbERlcHRoOjAsbGF5ZXJDb3VudDowLGZhY2VDb3VudDoxLHN1cGVyY29tcHJlc3Npb25TY2hlbWU6MCxsZXZlbHM6W10sZGF0YUZvcm1hdERlc2NyaXB0b3I6W3t2ZW5kb3JJZDowLGRlc2NyaXB0b3JUeXBlOjAsdmVyc2lvbk51bWJlcjoyLGNvbG9yTW9kZWw6MCxjb2xvclByaW1hcmllczoxLHRyYW5zZmVyRnVuY3Rpb246MixmbGFnczowLHRleGVsQmxvY2tEaW1lbnNpb246WzAsMCwwLDBdLGJ5dGVzUGxhbmU6WzAsMCwwLDAsMCwwLDAsMF0sc2FtcGxlczpbXX1dLGtleVZhbHVlOnt9LGdsb2JhbERhdGE6bnVsbH19ZnVuY3Rpb24gSlModCl7cmV0dXJuIG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZSh0KX1mdW5jdGlvbiB0eCh0KXtsZXQgZT1uZXcgVWludDhBcnJheSh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQsem8ubGVuZ3RoKTtpZihlWzBdIT09em9bMF18fGVbMV0hPT16b1sxXXx8ZVsyXSE9PXpvWzJdfHxlWzNdIT09em9bM118fGVbNF0hPT16b1s0XXx8ZVs1XSE9PXpvWzVdfHxlWzZdIT09em9bNl18fGVbN10hPT16b1s3XXx8ZVs4XSE9PXpvWzhdfHxlWzldIT09em9bOV18fGVbMTBdIT09em9bMTBdfHxlWzExXSE9PXpvWzExXSl0aHJvdyBuZXcgRXJyb3IoIk1pc3NpbmcgS1RYIDIuMCBpZGVudGlmaWVyLiIpO2xldCBuPVc4KCksbz0xNypVaW50MzJBcnJheS5CWVRFU19QRVJfRUxFTUVOVCxyPW5ldyBNYyh0LHpvLmxlbmd0aCxvLCEwKTtuLnZrRm9ybWF0PXIuX25leHRVaW50MzIoKSxuLnR5cGVTaXplPXIuX25leHRVaW50MzIoKSxuLnBpeGVsV2lkdGg9ci5fbmV4dFVpbnQzMigpLG4ucGl4ZWxIZWlnaHQ9ci5fbmV4dFVpbnQzMigpLG4ucGl4ZWxEZXB0aD1yLl9uZXh0VWludDMyKCksbi5sYXllckNvdW50PXIuX25leHRVaW50MzIoKSxuLmZhY2VDb3VudD1yLl9uZXh0VWludDMyKCk7bGV0IGk9ci5fbmV4dFVpbnQzMigpO24uc3VwZXJjb21wcmVzc2lvblNjaGVtZT1yLl9uZXh0VWludDMyKCk7bGV0IHM9ci5fbmV4dFVpbnQzMigpLGY9ci5fbmV4dFVpbnQzMigpLHU9ci5fbmV4dFVpbnQzMigpLGM9ci5fbmV4dFVpbnQzMigpLGw9ci5fbmV4dFVpbnQ2NCgpLHA9ci5fbmV4dFVpbnQ2NCgpLGQ9aSozKjgsaD1uZXcgTWModCx6by5sZW5ndGgrbyxkLCEwKTtmb3IobGV0IHJ0PTA7cnQ8aTtydCsrKW4ubGV2ZWxzLnB1c2goe2xldmVsRGF0YTpuZXcgVWludDhBcnJheSh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQraC5fbmV4dFVpbnQ2NCgpLGguX25leHRVaW50NjQoKSksdW5jb21wcmVzc2VkQnl0ZUxlbmd0aDpoLl9uZXh0VWludDY0KCl9KTtsZXQgXz1uZXcgTWModCxzLGYsITApO18uX3NraXAoNCk7bGV0IGc9Xy5fbmV4dFVpbnQxNigpLGI9Xy5fbmV4dFVpbnQxNigpLHc9Xy5fbmV4dFVpbnQxNigpLE89Xy5fbmV4dFVpbnQxNigpLEU9Xy5fbmV4dFVpbnQ4KCksVD1fLl9uZXh0VWludDgoKSx4PV8uX25leHRVaW50OCgpLE09Xy5fbmV4dFVpbnQ4KCksTj1bXy5fbmV4dFVpbnQ4KCksXy5fbmV4dFVpbnQ4KCksXy5fbmV4dFVpbnQ4KCksXy5fbmV4dFVpbnQ4KCldLEY9W18uX25leHRVaW50OCgpLF8uX25leHRVaW50OCgpLF8uX25leHRVaW50OCgpLF8uX25leHRVaW50OCgpLF8uX25leHRVaW50OCgpLF8uX25leHRVaW50OCgpLF8uX25leHRVaW50OCgpLF8uX25leHRVaW50OCgpXSx2PXt2ZW5kb3JJZDpnLGRlc2NyaXB0b3JUeXBlOmIsdmVyc2lvbk51bWJlcjp3LGNvbG9yTW9kZWw6RSxjb2xvclByaW1hcmllczpULHRyYW5zZmVyRnVuY3Rpb246eCxmbGFnczpNLHRleGVsQmxvY2tEaW1lbnNpb246TixieXRlc1BsYW5lOkYsc2FtcGxlczpbXX0sUz0oTy80LTYpLzQ7Zm9yKGxldCBydD0wO3J0PFM7cnQrKyl7bGV0IHh0PXtiaXRPZmZzZXQ6Xy5fbmV4dFVpbnQxNigpLGJpdExlbmd0aDpfLl9uZXh0VWludDgoKSxjaGFubmVsVHlwZTpfLl9uZXh0VWludDgoKSxzYW1wbGVQb3NpdGlvbjpbXy5fbmV4dFVpbnQ4KCksXy5fbmV4dFVpbnQ4KCksXy5fbmV4dFVpbnQ4KCksXy5fbmV4dFVpbnQ4KCldLHNhbXBsZUxvd2VyOk51bWJlci5ORUdBVElWRV9JTkZJTklUWSxzYW1wbGVVcHBlcjpOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFl9O3h0LmNoYW5uZWxUeXBlJjY0Pyh4dC5zYW1wbGVMb3dlcj1fLl9uZXh0SW50MzIoKSx4dC5zYW1wbGVVcHBlcj1fLl9uZXh0SW50MzIoKSk6KHh0LnNhbXBsZUxvd2VyPV8uX25leHRVaW50MzIoKSx4dC5zYW1wbGVVcHBlcj1fLl9uZXh0VWludDMyKCkpLHYuc2FtcGxlc1tydF09eHR9bi5kYXRhRm9ybWF0RGVzY3JpcHRvci5sZW5ndGg9MCxuLmRhdGFGb3JtYXREZXNjcmlwdG9yLnB1c2godik7bGV0IEM9bmV3IE1jKHQsdSxjLCEwKTtmb3IoO0MuX29mZnNldDxjOyl7bGV0IHJ0PUMuX25leHRVaW50MzIoKSx4dD1DLl9zY2FuKHJ0KSxHdD1KUyh4dCk7aWYobi5rZXlWYWx1ZVtHdF09Qy5fbmV4dFVpbnQ4QXJyYXkocnQteHQuYnl0ZUxlbmd0aC0xKSxHdC5tYXRjaCgvXmt0eC9pKSl7bGV0IHJlPUpTKG4ua2V5VmFsdWVbR3RdKTtuLmtleVZhbHVlW0d0XT1yZS5zdWJzdHJpbmcoMCxyZS5sYXN0SW5kZXhPZigiXDAiKSl9bGV0IHBlPXJ0JTQ/NC1ydCU0OjA7Qy5fc2tpcChwZSl9aWYocDw9MClyZXR1cm4gbjtsZXQgTD1uZXcgTWModCxsLHAsITApLHo9TC5fbmV4dFVpbnQxNigpLGo9TC5fbmV4dFVpbnQxNigpLGs9TC5fbmV4dFVpbnQzMigpLHE9TC5fbmV4dFVpbnQzMigpLFc9TC5fbmV4dFVpbnQzMigpLFI9TC5fbmV4dFVpbnQzMigpLG50PVtdO2ZvcihsZXQgcnQ9MDtydDxpO3J0KyspbnQucHVzaCh7aW1hZ2VGbGFnczpMLl9uZXh0VWludDMyKCkscmdiU2xpY2VCeXRlT2Zmc2V0OkwuX25leHRVaW50MzIoKSxyZ2JTbGljZUJ5dGVMZW5ndGg6TC5fbmV4dFVpbnQzMigpLGFscGhhU2xpY2VCeXRlT2Zmc2V0OkwuX25leHRVaW50MzIoKSxhbHBoYVNsaWNlQnl0ZUxlbmd0aDpMLl9uZXh0VWludDMyKCl9KTtsZXQgYXQ9bCtMLl9vZmZzZXQsbHQ9YXQrayxfdD1sdCtxLG90PV90K1csUHQ9bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsdC5ieXRlT2Zmc2V0K2F0LGspLGd0PW5ldyBVaW50OEFycmF5KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCtsdCxxKSxSdD1uZXcgVWludDhBcnJheSh0LmJ1ZmZlcix0LmJ5dGVPZmZzZXQrX3QsVyksZHQ9bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsdC5ieXRlT2Zmc2V0K290LFIpO3JldHVybiBuLmdsb2JhbERhdGE9e2VuZHBvaW50Q291bnQ6eixzZWxlY3RvckNvdW50OmosaW1hZ2VEZXNjczpudCxlbmRwb2ludHNEYXRhOlB0LHNlbGVjdG9yc0RhdGE6Z3QsdGFibGVzRGF0YTpSdCxleHRlbmRlZERhdGE6ZHR9LG59dmFyIE1jLHVsdCx6byxleD0kKCgpPT57TWM9Y2xhc3N7Y29uc3RydWN0b3IoZSxuLG8scil7dGhpcy5fZGF0YVZpZXc9dm9pZCAwLHRoaXMuX2xpdHRsZUVuZGlhbj12b2lkIDAsdGhpcy5fb2Zmc2V0PXZvaWQgMCx0aGlzLl9kYXRhVmlldz1uZXcgRGF0YVZpZXcoZS5idWZmZXIsZS5ieXRlT2Zmc2V0K24sbyksdGhpcy5fbGl0dGxlRW5kaWFuPXIsdGhpcy5fb2Zmc2V0PTB9X25leHRVaW50OCgpe2xldCBlPXRoaXMuX2RhdGFWaWV3LmdldFVpbnQ4KHRoaXMuX29mZnNldCk7cmV0dXJuIHRoaXMuX29mZnNldCs9MSxlfV9uZXh0VWludDE2KCl7bGV0IGU9dGhpcy5fZGF0YVZpZXcuZ2V0VWludDE2KHRoaXMuX29mZnNldCx0aGlzLl9saXR0bGVFbmRpYW4pO3JldHVybiB0aGlzLl9vZmZzZXQrPTIsZX1fbmV4dFVpbnQzMigpe2xldCBlPXRoaXMuX2RhdGFWaWV3LmdldFVpbnQzMih0aGlzLl9vZmZzZXQsdGhpcy5fbGl0dGxlRW5kaWFuKTtyZXR1cm4gdGhpcy5fb2Zmc2V0Kz00LGV9X25leHRVaW50NjQoKXtsZXQgZT10aGlzLl9kYXRhVmlldy5nZXRVaW50MzIodGhpcy5fb2Zmc2V0LHRoaXMuX2xpdHRsZUVuZGlhbiksbj10aGlzLl9kYXRhVmlldy5nZXRVaW50MzIodGhpcy5fb2Zmc2V0KzQsdGhpcy5fbGl0dGxlRW5kaWFuKSxvPWUrMioqMzIqbjtyZXR1cm4gdGhpcy5fb2Zmc2V0Kz04LG99X25leHRJbnQzMigpe2xldCBlPXRoaXMuX2RhdGFWaWV3LmdldEludDMyKHRoaXMuX29mZnNldCx0aGlzLl9saXR0bGVFbmRpYW4pO3JldHVybiB0aGlzLl9vZmZzZXQrPTQsZX1fbmV4dFVpbnQ4QXJyYXkoZSl7bGV0IG49bmV3IFVpbnQ4QXJyYXkodGhpcy5fZGF0YVZpZXcuYnVmZmVyLHRoaXMuX2RhdGFWaWV3LmJ5dGVPZmZzZXQrdGhpcy5fb2Zmc2V0LGUpO3JldHVybiB0aGlzLl9vZmZzZXQrPWUsbn1fc2tpcChlKXtyZXR1cm4gdGhpcy5fb2Zmc2V0Kz1lLHRoaXN9X3NjYW4oZSxuPTApe2xldCBvPXRoaXMuX29mZnNldCxyPTA7Zm9yKDt0aGlzLl9kYXRhVmlldy5nZXRVaW50OCh0aGlzLl9vZmZzZXQpIT09biYmcjxlOylyKyssdGhpcy5fb2Zmc2V0Kys7cmV0dXJuIHI8ZSYmdGhpcy5fb2Zmc2V0KyssbmV3IFVpbnQ4QXJyYXkodGhpcy5fZGF0YVZpZXcuYnVmZmVyLHRoaXMuX2RhdGFWaWV3LmJ5dGVPZmZzZXQrbyxyKX19LHVsdD1uZXcgVWludDhBcnJheShbMF0pLHpvPVsxNzEsNzUsODQsODgsMzIsNTAsNDgsMTg3LDEzLDEwLDI2LDEwXX0pO3ZhciBueD1ZbigoYm0sdTEpPT57dmFyIGYxPWZ1bmN0aW9uKCl7dmFyIHQ9dHlwZW9mIGRvY3VtZW50PCJ1IiYmZG9jdW1lbnQuY3VycmVudFNjcmlwdD9kb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYzp2b2lkIDA7cmV0dXJuIHR5cGVvZiBfX2ZpbGVuYW1lPCJ1IiYmKHQ9dHx8X19maWxlbmFtZSksZnVuY3Rpb24oZSl7ZT1lfHx7fTt2YXIgbj10eXBlb2YgZTwidSI/ZTp7fSxvLHI7bi5yZWFkeT1uZXcgUHJvbWlzZShmdW5jdGlvbihVLEcpe289VSxyPUd9KTt2YXIgaT17fSxzO2ZvcihzIGluIG4pbi5oYXNPd25Qcm9wZXJ0eShzKSYmKGlbc109bltzXSk7dmFyIGY9W10sdT0iLi90aGlzLnByb2dyYW0iLGM9ZnVuY3Rpb24oVSxHKXt0aHJvdyBHfSxsPSExLHA9ITEsZD0hMSxoPSExO2w9dHlwZW9mIHdpbmRvdz09Im9iamVjdCIscD10eXBlb2YgaW1wb3J0U2NyaXB0cz09ImZ1bmN0aW9uIixkPXR5cGVvZiBwcm9jZXNzPT0ib2JqZWN0IiYmdHlwZW9mIHByb2Nlc3MudmVyc2lvbnM9PSJvYmplY3QiJiZ0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlPT0ic3RyaW5nIixoPSFsJiYhZCYmIXA7dmFyIF89IiI7ZnVuY3Rpb24gZyhVKXtyZXR1cm4gbi5sb2NhdGVGaWxlP24ubG9jYXRlRmlsZShVLF8pOl8rVX12YXIgYix3LE8sRSxULHg7ZD8ocD9fPWRyKCJwYXRoIikuZGlybmFtZShfKSsiLyI6Xz1fX2Rpcm5hbWUrIi8iLGI9ZnVuY3Rpb24oRyxYKXtyZXR1cm4gVHx8KFQ9ZHIoImZzIikpLHh8fCh4PWRyKCJwYXRoIikpLEc9eC5ub3JtYWxpemUoRyksVC5yZWFkRmlsZVN5bmMoRyxYP251bGw6InV0ZjgiKX0sTz1mdW5jdGlvbihHKXt2YXIgWD1iKEcsITApO3JldHVybiBYLmJ1ZmZlcnx8KFg9bmV3IFVpbnQ4QXJyYXkoWCkpLEwoWC5idWZmZXIpLFh9LHByb2Nlc3MuYXJndi5sZW5ndGg+MSYmKHU9cHJvY2Vzcy5hcmd2WzFdLnJlcGxhY2UoL1xcL2csIi8iKSksZj1wcm9jZXNzLmFyZ3Yuc2xpY2UoMikscHJvY2Vzcy5vbigidW5jYXVnaHRFeGNlcHRpb24iLGZ1bmN0aW9uKFUpe2lmKCEoVSBpbnN0YW5jZW9mIEVpKSl0aHJvdyBVfSkscHJvY2Vzcy5vbigidW5oYW5kbGVkUmVqZWN0aW9uIixXZSksYz1mdW5jdGlvbihVKXtwcm9jZXNzLmV4aXQoVSl9LG4uaW5zcGVjdD1mdW5jdGlvbigpe3JldHVybiJbRW1zY3JpcHRlbiBNb2R1bGUgb2JqZWN0XSJ9KTpoPyh0eXBlb2YgcmVhZDwidSImJihiPWZ1bmN0aW9uKEcpe3JldHVybiByZWFkKEcpfSksTz1mdW5jdGlvbihHKXt2YXIgWDtyZXR1cm4gdHlwZW9mIHJlYWRidWZmZXI9PSJmdW5jdGlvbiI/bmV3IFVpbnQ4QXJyYXkocmVhZGJ1ZmZlcihHKSk6KFg9cmVhZChHLCJiaW5hcnkiKSxMKHR5cGVvZiBYPT0ib2JqZWN0IiksWCl9LHR5cGVvZiBzY3JpcHRBcmdzPCJ1Ij9mPXNjcmlwdEFyZ3M6dHlwZW9mIGFyZ3VtZW50czwidSImJihmPWFyZ3VtZW50cyksdHlwZW9mIHF1aXQ9PSJmdW5jdGlvbiImJihjPWZ1bmN0aW9uKFUpe3F1aXQoVSl9KSx0eXBlb2YgcHJpbnQ8InUiJiYodHlwZW9mIGNvbnNvbGU+InUiJiYoY29uc29sZT17fSksY29uc29sZS5sb2c9cHJpbnQsY29uc29sZS53YXJuPWNvbnNvbGUuZXJyb3I9dHlwZW9mIHByaW50RXJyPCJ1Ij9wcmludEVycjpwcmludCkpOihsfHxwKSYmKHA/Xz1zZWxmLmxvY2F0aW9uLmhyZWY6dHlwZW9mIGRvY3VtZW50PCJ1IiYmZG9jdW1lbnQuY3VycmVudFNjcmlwdCYmKF89ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmMpLHQmJihfPXQpLF8uaW5kZXhPZigiYmxvYjoiKSE9PTA/Xz1fLnN1YnN0cigwLF8ubGFzdEluZGV4T2YoIi8iKSsxKTpfPSIiLGI9ZnVuY3Rpb24oVSl7dmFyIEc9bmV3IFhNTEh0dHBSZXF1ZXN0O3JldHVybiBHLm9wZW4oIkdFVCIsVSwhMSksRy5zZW5kKG51bGwpLEcucmVzcG9uc2VUZXh0fSxwJiYoTz1mdW5jdGlvbihVKXt2YXIgRz1uZXcgWE1MSHR0cFJlcXVlc3Q7cmV0dXJuIEcub3BlbigiR0VUIixVLCExKSxHLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiLEcuc2VuZChudWxsKSxuZXcgVWludDhBcnJheShHLnJlc3BvbnNlKX0pLHc9ZnVuY3Rpb24oVSxHLFgpe3ZhciBRPW5ldyBYTUxIdHRwUmVxdWVzdDtRLm9wZW4oIkdFVCIsVSwhMCksUS5yZXNwb25zZVR5cGU9ImFycmF5YnVmZmVyIixRLm9ubG9hZD1mdW5jdGlvbigpe2lmKFEuc3RhdHVzPT0yMDB8fFEuc3RhdHVzPT0wJiZRLnJlc3BvbnNlKXtHKFEucmVzcG9uc2UpO3JldHVybn1YKCl9LFEub25lcnJvcj1YLFEuc2VuZChudWxsKX0sRT1mdW5jdGlvbihVKXtkb2N1bWVudC50aXRsZT1VfSk7dmFyIE09bi5wcmludHx8Y29uc29sZS5sb2cuYmluZChjb25zb2xlKSxOPW4ucHJpbnRFcnJ8fGNvbnNvbGUud2Fybi5iaW5kKGNvbnNvbGUpO2ZvcihzIGluIGkpaS5oYXNPd25Qcm9wZXJ0eShzKSYmKG5bc109aVtzXSk7aT1udWxsLG4uYXJndW1lbnRzJiYoZj1uLmFyZ3VtZW50cyksbi50aGlzUHJvZ3JhbSYmKHU9bi50aGlzUHJvZ3JhbSksbi5xdWl0JiYoYz1uLnF1aXQpO3ZhciBGPTAsST1mdW5jdGlvbihVKXtGPVV9LHY7bi53YXNtQmluYXJ5JiYodj1uLndhc21CaW5hcnkpO3ZhciBCPW4ubm9FeGl0UnVudGltZXx8ITA7dHlwZW9mIFdlYkFzc2VtYmx5IT0ib2JqZWN0IiYmV2UoIm5vIG5hdGl2ZSB3YXNtIHN1cHBvcnQgZGV0ZWN0ZWQiKTt2YXIgQSxTPSExLEM7ZnVuY3Rpb24gTChVLEcpe1V8fFdlKCJBc3NlcnRpb24gZmFpbGVkOiAiK0cpfXZhciB6PXR5cGVvZiBUZXh0RGVjb2RlcjwidSI/bmV3IFRleHREZWNvZGVyKCJ1dGY4Iik6dm9pZCAwO2Z1bmN0aW9uIGooVSxHLFgpe2Zvcih2YXIgUT1HK1gsdXQ9RztVW3V0XSYmISh1dD49USk7KSsrdXQ7aWYodXQtRz4xNiYmVS5zdWJhcnJheSYmeilyZXR1cm4gei5kZWNvZGUoVS5zdWJhcnJheShHLHV0KSk7Zm9yKHZhciBPdD0iIjtHPHV0Oyl7dmFyIFN0PVVbRysrXTtpZighKFN0JjEyOCkpe090Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKFN0KTtjb250aW51ZX12YXIgaHQ9VVtHKytdJjYzO2lmKChTdCYyMjQpPT0xOTIpe090Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKChTdCYzMSk8PDZ8aHQpO2NvbnRpbnVlfXZhciB5dD1VW0crK10mNjM7aWYoKFN0JjI0MCk9PTIyND9TdD0oU3QmMTUpPDwxMnxodDw8Nnx5dDpTdD0oU3QmNyk8PDE4fGh0PDwxMnx5dDw8NnxVW0crK10mNjMsU3Q8NjU1MzYpT3QrPVN0cmluZy5mcm9tQ2hhckNvZGUoU3QpO2Vsc2V7dmFyIHF0PVN0LTY1NTM2O090Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKDU1Mjk2fHF0Pj4xMCw1NjMyMHxxdCYxMDIzKX19cmV0dXJuIE90fWZ1bmN0aW9uIGsoVSxHKXtyZXR1cm4gVT9qKHh0LFUsRyk6IiJ9ZnVuY3Rpb24gcShVLEcsWCxRKXtpZighKFE+MCkpcmV0dXJuIDA7Zm9yKHZhciB1dD1YLE90PVgrUS0xLFN0PTA7U3Q8VS5sZW5ndGg7KytTdCl7dmFyIGh0PVUuY2hhckNvZGVBdChTdCk7aWYoaHQ+PTU1Mjk2JiZodDw9NTczNDMpe3ZhciB5dD1VLmNoYXJDb2RlQXQoKytTdCk7aHQ9NjU1MzYrKChodCYxMDIzKTw8MTApfHl0JjEwMjN9aWYoaHQ8PTEyNyl7aWYoWD49T3QpYnJlYWs7R1tYKytdPWh0fWVsc2UgaWYoaHQ8PTIwNDcpe2lmKFgrMT49T3QpYnJlYWs7R1tYKytdPTE5MnxodD4+NixHW1grK109MTI4fGh0JjYzfWVsc2UgaWYoaHQ8PTY1NTM1KXtpZihYKzI+PU90KWJyZWFrO0dbWCsrXT0yMjR8aHQ+PjEyLEdbWCsrXT0xMjh8aHQ+PjYmNjMsR1tYKytdPTEyOHxodCY2M31lbHNle2lmKFgrMz49T3QpYnJlYWs7R1tYKytdPTI0MHxodD4+MTgsR1tYKytdPTEyOHxodD4+MTImNjMsR1tYKytdPTEyOHxodD4+NiY2MyxHW1grK109MTI4fGh0JjYzfX1yZXR1cm4gR1tYXT0wLFgtdXR9ZnVuY3Rpb24gVyhVLEcsWCl7cmV0dXJuIHEoVSx4dCxHLFgpfWZ1bmN0aW9uIFIoVSl7Zm9yKHZhciBHPTAsWD0wO1g8VS5sZW5ndGg7KytYKXt2YXIgUT1VLmNoYXJDb2RlQXQoWCk7UT49NTUyOTYmJlE8PTU3MzQzJiYoUT02NTUzNisoKFEmMTAyMyk8PDEwKXxVLmNoYXJDb2RlQXQoKytYKSYxMDIzKSxRPD0xMjc/KytHOlE8PTIwNDc/Rys9MjpRPD02NTUzNT9HKz0zOkcrPTR9cmV0dXJuIEd9dmFyIG50PXR5cGVvZiBUZXh0RGVjb2RlcjwidSI/bmV3IFRleHREZWNvZGVyKCJ1dGYtMTZsZSIpOnZvaWQgMDtmdW5jdGlvbiBhdChVLEcpe2Zvcih2YXIgWD1VLFE9WD4+MSx1dD1RK0cvMjshKFE+PXV0KSYmcGVbUV07KSsrUTtpZihYPVE8PDEsWC1VPjMyJiZudClyZXR1cm4gbnQuZGVjb2RlKHh0LnN1YmFycmF5KFUsWCkpO2Zvcih2YXIgT3Q9IiIsU3Q9MDshKFN0Pj1HLzIpOysrU3Qpe3ZhciBodD1HdFtVK1N0KjI+PjFdO2lmKGh0PT0wKWJyZWFrO090Kz1TdHJpbmcuZnJvbUNoYXJDb2RlKGh0KX1yZXR1cm4gT3R9ZnVuY3Rpb24gbHQoVSxHLFgpe2lmKFg9PT12b2lkIDAmJihYPTIxNDc0ODM2NDcpLFg8MilyZXR1cm4gMDtYLT0yO2Zvcih2YXIgUT1HLHV0PVg8VS5sZW5ndGgqMj9YLzI6VS5sZW5ndGgsT3Q9MDtPdDx1dDsrK090KXt2YXIgU3Q9VS5jaGFyQ29kZUF0KE90KTtHdFtHPj4xXT1TdCxHKz0yfXJldHVybiBHdFtHPj4xXT0wLEctUX1mdW5jdGlvbiBfdChVKXtyZXR1cm4gVS5sZW5ndGgqMn1mdW5jdGlvbiBvdChVLEcpe2Zvcih2YXIgWD0wLFE9IiI7IShYPj1HLzQpOyl7dmFyIHV0PXJlW1UrWCo0Pj4yXTtpZih1dD09MClicmVhaztpZigrK1gsdXQ+PTY1NTM2KXt2YXIgT3Q9dXQtNjU1MzY7USs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxPdD4+MTAsNTYzMjB8T3QmMTAyMyl9ZWxzZSBRKz1TdHJpbmcuZnJvbUNoYXJDb2RlKHV0KX1yZXR1cm4gUX1mdW5jdGlvbiBQdChVLEcsWCl7aWYoWD09PXZvaWQgMCYmKFg9MjE0NzQ4MzY0NyksWDw0KXJldHVybiAwO2Zvcih2YXIgUT1HLHV0PVErWC00LE90PTA7T3Q8VS5sZW5ndGg7KytPdCl7dmFyIFN0PVUuY2hhckNvZGVBdChPdCk7aWYoU3Q+PTU1Mjk2JiZTdDw9NTczNDMpe3ZhciBodD1VLmNoYXJDb2RlQXQoKytPdCk7U3Q9NjU1MzYrKChTdCYxMDIzKTw8MTApfGh0JjEwMjN9aWYocmVbRz4+Ml09U3QsRys9NCxHKzQ+dXQpYnJlYWt9cmV0dXJuIHJlW0c+PjJdPTAsRy1RfWZ1bmN0aW9uIGd0KFUpe2Zvcih2YXIgRz0wLFg9MDtYPFUubGVuZ3RoOysrWCl7dmFyIFE9VS5jaGFyQ29kZUF0KFgpO1E+PTU1Mjk2JiZRPD01NzM0MyYmKytYLEcrPTR9cmV0dXJuIEd9ZnVuY3Rpb24gUnQoVSxHKXtyZXR1cm4gVSVHPjAmJihVKz1HLVUlRyksVX12YXIgZHQscnQseHQsR3QscGUscmUsZGUsZmUsWnQ7ZnVuY3Rpb24gUXQoVSl7ZHQ9VSxuLkhFQVA4PXJ0PW5ldyBJbnQ4QXJyYXkoVSksbi5IRUFQMTY9R3Q9bmV3IEludDE2QXJyYXkoVSksbi5IRUFQMzI9cmU9bmV3IEludDMyQXJyYXkoVSksbi5IRUFQVTg9eHQ9bmV3IFVpbnQ4QXJyYXkoVSksbi5IRUFQVTE2PXBlPW5ldyBVaW50MTZBcnJheShVKSxuLkhFQVBVMzI9ZGU9bmV3IFVpbnQzMkFycmF5KFUpLG4uSEVBUEYzMj1mZT1uZXcgRmxvYXQzMkFycmF5KFUpLG4uSEVBUEY2ND1adD1uZXcgRmxvYXQ2NEFycmF5KFUpfXZhciBOZT1uLklOSVRJQUxfTUVNT1JZfHwxNjc3NzIxNixnZSxFZT1bXSx1bj1bXSxWZT1bXSxiZT1bXSxsbj0hMTtmdW5jdGlvbiBwbigpe2lmKG4ucHJlUnVuKWZvcih0eXBlb2Ygbi5wcmVSdW49PSJmdW5jdGlvbiImJihuLnByZVJ1bj1bbi5wcmVSdW5dKTtuLnByZVJ1bi5sZW5ndGg7KXplKG4ucHJlUnVuLnNoaWZ0KCkpO0hvKEVlKX1mdW5jdGlvbiBFbigpe2xuPSEwLEhvKHVuKX1mdW5jdGlvbiBvZSgpe0hvKFZlKX1mdW5jdGlvbiBZdCgpe2lmKG4ucG9zdFJ1bilmb3IodHlwZW9mIG4ucG9zdFJ1bj09ImZ1bmN0aW9uIiYmKG4ucG9zdFJ1bj1bbi5wb3N0UnVuXSk7bi5wb3N0UnVuLmxlbmd0aDspc24obi5wb3N0UnVuLnNoaWZ0KCkpO0hvKGJlKX1mdW5jdGlvbiB6ZShVKXtFZS51bnNoaWZ0KFUpfWZ1bmN0aW9uIGRuKFUpe3VuLnVuc2hpZnQoVSl9ZnVuY3Rpb24gc24oVSl7YmUudW5zaGlmdChVKX12YXIgbW49MCxsbz1udWxsLHFuPW51bGw7ZnVuY3Rpb24gUWUoVSl7bW4rKyxuLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMmJm4ubW9uaXRvclJ1bkRlcGVuZGVuY2llcyhtbil9ZnVuY3Rpb24gY24oVSl7aWYobW4tLSxuLm1vbml0b3JSdW5EZXBlbmRlbmNpZXMmJm4ubW9uaXRvclJ1bkRlcGVuZGVuY2llcyhtbiksbW49PTAmJihsbyE9PW51bGwmJihjbGVhckludGVydmFsKGxvKSxsbz1udWxsKSxxbikpe3ZhciBHPXFuO3FuPW51bGwsRygpfX1uLnByZWxvYWRlZEltYWdlcz17fSxuLnByZWxvYWRlZEF1ZGlvcz17fTtmdW5jdGlvbiBXZShVKXtuLm9uQWJvcnQmJm4ub25BYm9ydChVKSxVKz0iIixOKFUpLFM9ITAsQz0xLFU9ImFib3J0KCIrVSsiKS4gQnVpbGQgd2l0aCAtcyBBU1NFUlRJT05TPTEgZm9yIG1vcmUgaW5mby4iO3ZhciBHPW5ldyBXZWJBc3NlbWJseS5SdW50aW1lRXJyb3IoVSk7dGhyb3cgcihHKSxHfWZ1bmN0aW9uIGhuKFUsRyl7cmV0dXJuIFN0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aD9VLnN0YXJ0c1dpdGgoRyk6VS5pbmRleE9mKEcpPT09MH12YXIgcG89ImRhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCwiO2Z1bmN0aW9uIEtuKFUpe3JldHVybiBobihVLHBvKX12YXIgV249ImZpbGU6Ly8iO2Z1bmN0aW9uIG1vKFUpe3JldHVybiBobihVLFduKX12YXIgamU9ImJhc2lzX3RyYW5zY29kZXIud2FzbSI7S24oamUpfHwoamU9ZyhqZSkpO2Z1bmN0aW9uIEZlKFUpe3RyeXtpZihVPT1qZSYmdilyZXR1cm4gbmV3IFVpbnQ4QXJyYXkodik7aWYoTylyZXR1cm4gTyhVKTt0aHJvdyJib3RoIGFzeW5jIGFuZCBzeW5jIGZldGNoaW5nIG9mIHRoZSB3YXNtIGZhaWxlZCJ9Y2F0Y2goRyl7V2UoRyl9fWZ1bmN0aW9uIERuKCl7aWYoIXYmJihsfHxwKSl7aWYodHlwZW9mIGZldGNoPT0iZnVuY3Rpb24iJiYhbW8oamUpKXJldHVybiBmZXRjaChqZSx7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0pLnRoZW4oZnVuY3Rpb24oVSl7aWYoIVUub2spdGhyb3ciZmFpbGVkIHRvIGxvYWQgd2FzbSBiaW5hcnkgZmlsZSBhdCAnIitqZSsiJyI7cmV0dXJuIFUuYXJyYXlCdWZmZXIoKX0pLmNhdGNoKGZ1bmN0aW9uKCl7cmV0dXJuIEZlKGplKX0pO2lmKHcpcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKFUsRyl7dyhqZSxmdW5jdGlvbihYKXtVKG5ldyBVaW50OEFycmF5KFgpKX0sRyl9KX1yZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbigpe3JldHVybiBGZShqZSl9KX1mdW5jdGlvbiBYbigpe3ZhciBVPXthOmtsfTtmdW5jdGlvbiBHKFN0LGh0KXt2YXIgeXQ9U3QuZXhwb3J0cztuLmFzbT15dCxBPW4uYXNtLkssUXQoQS5idWZmZXIpLGdlPW4uYXNtLk8sZG4obi5hc20uTCksY24oIndhc20taW5zdGFudGlhdGUiKX1RZSgid2FzbS1pbnN0YW50aWF0ZSIpO2Z1bmN0aW9uIFgoU3Qpe0coU3QuaW5zdGFuY2UpfWZ1bmN0aW9uIFEoU3Qpe3JldHVybiBEbigpLnRoZW4oZnVuY3Rpb24oaHQpe3ZhciB5dD1XZWJBc3NlbWJseS5pbnN0YW50aWF0ZShodCxVKTtyZXR1cm4geXR9KS50aGVuKFN0LGZ1bmN0aW9uKGh0KXtOKCJmYWlsZWQgdG8gYXN5bmNocm9ub3VzbHkgcHJlcGFyZSB3YXNtOiAiK2h0KSxXZShodCl9KX1mdW5jdGlvbiB1dCgpe3JldHVybiF2JiZ0eXBlb2YgV2ViQXNzZW1ibHkuaW5zdGFudGlhdGVTdHJlYW1pbmc9PSJmdW5jdGlvbiImJiFLbihqZSkmJiFtbyhqZSkmJnR5cGVvZiBmZXRjaD09ImZ1bmN0aW9uIj9mZXRjaChqZSx7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0pLnRoZW4oZnVuY3Rpb24oU3Qpe3ZhciBodD1XZWJBc3NlbWJseS5pbnN0YW50aWF0ZVN0cmVhbWluZyhTdCxVKTtyZXR1cm4gaHQudGhlbihYLGZ1bmN0aW9uKHl0KXtyZXR1cm4gTigid2FzbSBzdHJlYW1pbmcgY29tcGlsZSBmYWlsZWQ6ICIreXQpLE4oImZhbGxpbmcgYmFjayB0byBBcnJheUJ1ZmZlciBpbnN0YW50aWF0aW9uIiksUShYKX0pfSk6UShYKX1pZihuLmluc3RhbnRpYXRlV2FzbSl0cnl7dmFyIE90PW4uaW5zdGFudGlhdGVXYXNtKFUsRyk7cmV0dXJuIE90fWNhdGNoKFN0KXtyZXR1cm4gTigiTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogIitTdCksITF9cmV0dXJuIHV0KCkuY2F0Y2gocikse319ZnVuY3Rpb24gSG8oVSl7Zm9yKDtVLmxlbmd0aD4wOyl7dmFyIEc9VS5zaGlmdCgpO2lmKHR5cGVvZiBHPT0iZnVuY3Rpb24iKXtHKG4pO2NvbnRpbnVlfXZhciBYPUcuZnVuYzt0eXBlb2YgWD09Im51bWJlciI/Ry5hcmc9PT12b2lkIDA/Z2UuZ2V0KFgpKCk6Z2UuZ2V0KFgpKEcuYXJnKTpYKEcuYXJnPT09dm9pZCAwP251bGw6Ry5hcmcpfX12YXIgcm49e307ZnVuY3Rpb24gUm4oVSl7Zm9yKDtVLmxlbmd0aDspe3ZhciBHPVUucG9wKCksWD1VLnBvcCgpO1goRyl9fWZ1bmN0aW9uIGZyKFUpe3JldHVybiB0aGlzLmZyb21XaXJlVHlwZShkZVtVPj4yXSl9dmFyIHRvPXt9LHFvPXt9LElyPXt9LElzPTQ4LHZzPTU3O2Z1bmN0aW9uICRpKFUpe2lmKFU9PT12b2lkIDApcmV0dXJuIl91bmtub3duIjtVPVUucmVwbGFjZSgvW15hLXpBLVowLTlfXS9nLCIkIik7dmFyIEc9VS5jaGFyQ29kZUF0KDApO3JldHVybiBHPj1JcyYmRzw9dnM/Il8iK1U6VX1mdW5jdGlvbiB2cihVLEcpe3JldHVybiBVPSRpKFUpLG5ldyBGdW5jdGlvbigiYm9keSIsInJldHVybiBmdW5jdGlvbiAiK1UrYCgpIHsKICAgICJ1c2Ugc3RyaWN0IjsgICAgcmV0dXJuIGJvZHkuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKfTsKYCkoRyl9ZnVuY3Rpb24gWmkoVSxHKXt2YXIgWD12cihHLGZ1bmN0aW9uKFEpe3RoaXMubmFtZT1HLHRoaXMubWVzc2FnZT1RO3ZhciB1dD1uZXcgRXJyb3IoUSkuc3RhY2s7dXQhPT12b2lkIDAmJih0aGlzLnN0YWNrPXRoaXMudG9TdHJpbmcoKStgCmArdXQucmVwbGFjZSgvXkVycm9yKDpbXlxuXSopP1xuLywiIikpfSk7cmV0dXJuIFgucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoVS5wcm90b3R5cGUpLFgucHJvdG90eXBlLmNvbnN0cnVjdG9yPVgsWC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZXNzYWdlPT09dm9pZCAwP3RoaXMubmFtZTp0aGlzLm5hbWUrIjogIit0aGlzLm1lc3NhZ2V9LFh9dmFyIEZzPXZvaWQgMDtmdW5jdGlvbiB3aShVKXt0aHJvdyBuZXcgRnMoVSl9ZnVuY3Rpb24gc28oVSxHLFgpe1UuZm9yRWFjaChmdW5jdGlvbihodCl7SXJbaHRdPUd9KTtmdW5jdGlvbiBRKGh0KXt2YXIgeXQ9WChodCk7eXQubGVuZ3RoIT09VS5sZW5ndGgmJndpKCJNaXNtYXRjaGVkIHR5cGUgY29udmVydGVyIGNvdW50Iik7Zm9yKHZhciBxdD0wO3F0PFUubGVuZ3RoOysrcXQpcnIoVVtxdF0seXRbcXRdKX12YXIgdXQ9bmV3IEFycmF5KEcubGVuZ3RoKSxPdD1bXSxTdD0wO0cuZm9yRWFjaChmdW5jdGlvbihodCx5dCl7cW8uaGFzT3duUHJvcGVydHkoaHQpP3V0W3l0XT1xb1todF06KE90LnB1c2goaHQpLHRvLmhhc093blByb3BlcnR5KGh0KXx8KHRvW2h0XT1bXSksdG9baHRdLnB1c2goZnVuY3Rpb24oKXt1dFt5dF09cW9baHRdLCsrU3QsU3Q9PT1PdC5sZW5ndGgmJlEodXQpfSkpfSksT3QubGVuZ3RoPT09MCYmUSh1dCl9ZnVuY3Rpb24gaG8oVSl7dmFyIEc9cm5bVV07ZGVsZXRlIHJuW1VdO3ZhciBYPUcucmF3Q29uc3RydWN0b3IsUT1HLnJhd0Rlc3RydWN0b3IsdXQ9Ry5maWVsZHMsT3Q9dXQubWFwKGZ1bmN0aW9uKFN0KXtyZXR1cm4gU3QuZ2V0dGVyUmV0dXJuVHlwZX0pLmNvbmNhdCh1dC5tYXAoZnVuY3Rpb24oU3Qpe3JldHVybiBTdC5zZXR0ZXJBcmd1bWVudFR5cGV9KSk7c28oW1VdLE90LGZ1bmN0aW9uKFN0KXt2YXIgaHQ9e307cmV0dXJuIHV0LmZvckVhY2goZnVuY3Rpb24oeXQscXQpe3ZhciBKdD15dC5maWVsZE5hbWUsVGU9U3RbcXRdLEplPXl0LmdldHRlcixibj15dC5nZXR0ZXJDb250ZXh0LGNvPVN0W3F0K3V0Lmxlbmd0aF0sRm89eXQuc2V0dGVyLHByPXl0LnNldHRlckNvbnRleHQ7aHRbSnRdPXtyZWFkOmZ1bmN0aW9uKFFyKXtyZXR1cm4gVGUuZnJvbVdpcmVUeXBlKEplKGJuLFFyKSl9LHdyaXRlOmZ1bmN0aW9uKFFyLHJmKXt2YXIgUmk9W107Rm8ocHIsUXIsY28udG9XaXJlVHlwZShSaSxyZikpLFJuKFJpKX19fSksW3tuYW1lOkcubmFtZSxmcm9tV2lyZVR5cGU6ZnVuY3Rpb24oeXQpe3ZhciBxdD17fTtmb3IodmFyIEp0IGluIGh0KXF0W0p0XT1odFtKdF0ucmVhZCh5dCk7cmV0dXJuIFEoeXQpLHF0fSx0b1dpcmVUeXBlOmZ1bmN0aW9uKHl0LHF0KXtmb3IodmFyIEp0IGluIGh0KWlmKCEoSnQgaW4gcXQpKXRocm93IG5ldyBUeXBlRXJyb3IoJ01pc3NpbmcgZmllbGQ6ICAiJytKdCsnIicpO3ZhciBUZT1YKCk7Zm9yKEp0IGluIGh0KWh0W0p0XS53cml0ZShUZSxxdFtKdF0pO3JldHVybiB5dCE9PW51bGwmJnl0LnB1c2goUSxUZSksVGV9LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6ZnIsZGVzdHJ1Y3RvckZ1bmN0aW9uOlF9XX0pfWZ1bmN0aW9uIEZyKFUpe3N3aXRjaChVKXtjYXNlIDE6cmV0dXJuIDA7Y2FzZSAyOnJldHVybiAxO2Nhc2UgNDpyZXR1cm4gMjtjYXNlIDg6cmV0dXJuIDM7ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIHR5cGUgc2l6ZTogIitVKX19ZnVuY3Rpb24gTmMoKXtmb3IodmFyIFU9bmV3IEFycmF5KDI1NiksRz0wO0c8MjU2OysrRylVW0ddPVN0cmluZy5mcm9tQ2hhckNvZGUoRyk7SWM9VX12YXIgSWM9dm9pZCAwO2Z1bmN0aW9uIEJuKFUpe2Zvcih2YXIgRz0iIixYPVU7eHRbWF07KUcrPUljW3h0W1grK11dO3JldHVybiBHfXZhciBUaT12b2lkIDA7ZnVuY3Rpb24gTGUoVSl7dGhyb3cgbmV3IFRpKFUpfWZ1bmN0aW9uIHJyKFUsRyxYKXtpZihYPVh8fHt9LCEoImFyZ1BhY2tBZHZhbmNlImluIEcpKXRocm93IG5ldyBUeXBlRXJyb3IoInJlZ2lzdGVyVHlwZSByZWdpc3RlcmVkSW5zdGFuY2UgcmVxdWlyZXMgYXJnUGFja0FkdmFuY2UiKTt2YXIgUT1HLm5hbWU7aWYoVXx8TGUoJ3R5cGUgIicrUSsnIiBtdXN0IGhhdmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHR5cGVpZCBwb2ludGVyJykscW8uaGFzT3duUHJvcGVydHkoVSkpe2lmKFguaWdub3JlRHVwbGljYXRlUmVnaXN0cmF0aW9ucylyZXR1cm47TGUoIkNhbm5vdCByZWdpc3RlciB0eXBlICciK1ErIicgdHdpY2UiKX1pZihxb1tVXT1HLGRlbGV0ZSBJcltVXSx0by5oYXNPd25Qcm9wZXJ0eShVKSl7dmFyIHV0PXRvW1VdO2RlbGV0ZSB0b1tVXSx1dC5mb3JFYWNoKGZ1bmN0aW9uKE90KXtPdCgpfSl9fWZ1bmN0aW9uIFR1KFUsRyxYLFEsdXQpe3ZhciBPdD1GcihYKTtHPUJuKEcpLHJyKFUse25hbWU6Ryxmcm9tV2lyZVR5cGU6ZnVuY3Rpb24oU3Qpe3JldHVybiEhU3R9LHRvV2lyZVR5cGU6ZnVuY3Rpb24oU3QsaHQpe3JldHVybiBodD9ROnV0fSxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOmZ1bmN0aW9uKFN0KXt2YXIgaHQ7aWYoWD09PTEpaHQ9cnQ7ZWxzZSBpZihYPT09MilodD1HdDtlbHNlIGlmKFg9PT00KWh0PXJlO2Vsc2UgdGhyb3cgbmV3IFR5cGVFcnJvcigiVW5rbm93biBib29sZWFuIHR5cGUgc2l6ZTogIitHKTtyZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUoaHRbU3Q+Pk90XSl9LGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSl9ZnVuY3Rpb24gT3UoVSl7aWYoISh0aGlzIGluc3RhbmNlb2YgTHIpfHwhKFUgaW5zdGFuY2VvZiBMcikpcmV0dXJuITE7Zm9yKHZhciBHPXRoaXMuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MsWD10aGlzLiQkLnB0cixRPVUuJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MsdXQ9VS4kJC5wdHI7Ry5iYXNlQ2xhc3M7KVg9Ry51cGNhc3QoWCksRz1HLmJhc2VDbGFzcztmb3IoO1EuYmFzZUNsYXNzOyl1dD1RLnVwY2FzdCh1dCksUT1RLmJhc2VDbGFzcztyZXR1cm4gRz09PVEmJlg9PT11dH1mdW5jdGlvbiBFdShVKXtyZXR1cm57Y291bnQ6VS5jb3VudCxkZWxldGVTY2hlZHVsZWQ6VS5kZWxldGVTY2hlZHVsZWQscHJlc2VydmVQb2ludGVyT25EZWxldGU6VS5wcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZSxwdHI6VS5wdHIscHRyVHlwZTpVLnB0clR5cGUsc21hcnRQdHI6VS5zbWFydFB0cixzbWFydFB0clR5cGU6VS5zbWFydFB0clR5cGV9fWZ1bmN0aW9uIHZjKFUpe2Z1bmN0aW9uIEcoWCl7cmV0dXJuIFguJCQucHRyVHlwZS5yZWdpc3RlcmVkQ2xhc3MubmFtZX1MZShHKFUpKyIgaW5zdGFuY2UgYWxyZWFkeSBkZWxldGVkIil9dmFyIEZjPSExO2Z1bmN0aW9uIHFhKFUpe31mdW5jdGlvbiBSdShVKXtVLnNtYXJ0UHRyP1Uuc21hcnRQdHJUeXBlLnJhd0Rlc3RydWN0b3IoVS5zbWFydFB0cik6VS5wdHJUeXBlLnJlZ2lzdGVyZWRDbGFzcy5yYXdEZXN0cnVjdG9yKFUucHRyKX1mdW5jdGlvbiBLYShVKXtVLmNvdW50LnZhbHVlLT0xO3ZhciBHPVUuY291bnQudmFsdWU9PT0wO0cmJlJ1KFUpfWZ1bmN0aW9uIFFpKFUpe3JldHVybiB0eXBlb2YgRmluYWxpemF0aW9uR3JvdXA+InUiPyhRaT1mdW5jdGlvbihHKXtyZXR1cm4gR30sVSk6KEZjPW5ldyBGaW5hbGl6YXRpb25Hcm91cChmdW5jdGlvbihHKXtmb3IodmFyIFg9Ry5uZXh0KCk7IVguZG9uZTtYPUcubmV4dCgpKXt2YXIgUT1YLnZhbHVlO1EucHRyP0thKFEpOmNvbnNvbGUud2Fybigib2JqZWN0IGFscmVhZHkgZGVsZXRlZDogIitRLnB0cil9fSksUWk9ZnVuY3Rpb24oRyl7cmV0dXJuIEZjLnJlZ2lzdGVyKEcsRy4kJCxHLiQkKSxHfSxxYT1mdW5jdGlvbihHKXtGYy51bnJlZ2lzdGVyKEcuJCQpfSxRaShVKSl9ZnVuY3Rpb24gU3UoKXtpZih0aGlzLiQkLnB0cnx8dmModGhpcyksdGhpcy4kJC5wcmVzZXJ2ZVBvaW50ZXJPbkRlbGV0ZSlyZXR1cm4gdGhpcy4kJC5jb3VudC52YWx1ZSs9MSx0aGlzO3ZhciBVPVFpKE9iamVjdC5jcmVhdGUoT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLHskJDp7dmFsdWU6RXUodGhpcy4kJCl9fSkpO3JldHVybiBVLiQkLmNvdW50LnZhbHVlKz0xLFUuJCQuZGVsZXRlU2NoZWR1bGVkPSExLFV9ZnVuY3Rpb24geHUoKXt0aGlzLiQkLnB0cnx8dmModGhpcyksdGhpcy4kJC5kZWxldGVTY2hlZHVsZWQmJiF0aGlzLiQkLnByZXNlcnZlUG9pbnRlck9uRGVsZXRlJiZMZSgiT2JqZWN0IGFscmVhZHkgc2NoZWR1bGVkIGZvciBkZWxldGlvbiIpLHFhKHRoaXMpLEthKHRoaXMuJCQpLHRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGV8fCh0aGlzLiQkLnNtYXJ0UHRyPXZvaWQgMCx0aGlzLiQkLnB0cj12b2lkIDApfWZ1bmN0aW9uIEN1KCl7cmV0dXJuIXRoaXMuJCQucHRyfXZhciBKaT12b2lkIDAsdHM9W107ZnVuY3Rpb24gTGMoKXtmb3IoO3RzLmxlbmd0aDspe3ZhciBVPXRzLnBvcCgpO1UuJCQuZGVsZXRlU2NoZWR1bGVkPSExLFUuZGVsZXRlKCl9fWZ1bmN0aW9uIFB1KCl7cmV0dXJuIHRoaXMuJCQucHRyfHx2Yyh0aGlzKSx0aGlzLiQkLmRlbGV0ZVNjaGVkdWxlZCYmIXRoaXMuJCQucHJlc2VydmVQb2ludGVyT25EZWxldGUmJkxlKCJPYmplY3QgYWxyZWFkeSBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIiksdHMucHVzaCh0aGlzKSx0cy5sZW5ndGg9PT0xJiZKaSYmSmkoTGMpLHRoaXMuJCQuZGVsZXRlU2NoZWR1bGVkPSEwLHRoaXN9ZnVuY3Rpb24gTXUoKXtMci5wcm90b3R5cGUuaXNBbGlhc09mPU91LExyLnByb3RvdHlwZS5jbG9uZT1TdSxMci5wcm90b3R5cGUuZGVsZXRlPXh1LExyLnByb3RvdHlwZS5pc0RlbGV0ZWQ9Q3UsTHIucHJvdG90eXBlLmRlbGV0ZUxhdGVyPVB1fWZ1bmN0aW9uIExyKCl7fXZhciBXYT17fTtmdW5jdGlvbiBYYShVLEcsWCl7aWYoVVtHXS5vdmVybG9hZFRhYmxlPT09dm9pZCAwKXt2YXIgUT1VW0ddO1VbR109ZnVuY3Rpb24oKXtyZXR1cm4gVVtHXS5vdmVybG9hZFRhYmxlLmhhc093blByb3BlcnR5KGFyZ3VtZW50cy5sZW5ndGgpfHxMZSgiRnVuY3Rpb24gJyIrWCsiJyBjYWxsZWQgd2l0aCBhbiBpbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMgKCIrYXJndW1lbnRzLmxlbmd0aCsiKSAtIGV4cGVjdHMgb25lIG9mICgiK1VbR10ub3ZlcmxvYWRUYWJsZSsiKSEiKSxVW0ddLm92ZXJsb2FkVGFibGVbYXJndW1lbnRzLmxlbmd0aF0uYXBwbHkodGhpcyxhcmd1bWVudHMpfSxVW0ddLm92ZXJsb2FkVGFibGU9W10sVVtHXS5vdmVybG9hZFRhYmxlW1EuYXJnQ291bnRdPVF9fWZ1bmN0aW9uIERjKFUsRyxYKXtuLmhhc093blByb3BlcnR5KFUpPygoWD09PXZvaWQgMHx8bltVXS5vdmVybG9hZFRhYmxlIT09dm9pZCAwJiZuW1VdLm92ZXJsb2FkVGFibGVbWF0hPT12b2lkIDApJiZMZSgiQ2Fubm90IHJlZ2lzdGVyIHB1YmxpYyBuYW1lICciK1UrIicgdHdpY2UiKSxYYShuLFUsVSksbi5oYXNPd25Qcm9wZXJ0eShYKSYmTGUoIkNhbm5vdCByZWdpc3RlciBtdWx0aXBsZSBvdmVybG9hZHMgb2YgYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBhcmd1bWVudHMgKCIrWCsiKSEiKSxuW1VdLm92ZXJsb2FkVGFibGVbWF09Ryk6KG5bVV09RyxYIT09dm9pZCAwJiYobltVXS5udW1Bcmd1bWVudHM9WCkpfWZ1bmN0aW9uIE51KFUsRyxYLFEsdXQsT3QsU3QsaHQpe3RoaXMubmFtZT1VLHRoaXMuY29uc3RydWN0b3I9Ryx0aGlzLmluc3RhbmNlUHJvdG90eXBlPVgsdGhpcy5yYXdEZXN0cnVjdG9yPVEsdGhpcy5iYXNlQ2xhc3M9dXQsdGhpcy5nZXRBY3R1YWxUeXBlPU90LHRoaXMudXBjYXN0PVN0LHRoaXMuZG93bmNhc3Q9aHQsdGhpcy5wdXJlVmlydHVhbEZ1bmN0aW9ucz1bXX1mdW5jdGlvbiBCYyhVLEcsWCl7Zm9yKDtHIT09WDspRy51cGNhc3R8fExlKCJFeHBlY3RlZCBudWxsIG9yIGluc3RhbmNlIG9mICIrWC5uYW1lKyIsIGdvdCBhbiBpbnN0YW5jZSBvZiAiK0cubmFtZSksVT1HLnVwY2FzdChVKSxHPUcuYmFzZUNsYXNzO3JldHVybiBVfWZ1bmN0aW9uIEl1KFUsRyl7aWYoRz09PW51bGwpcmV0dXJuIHRoaXMuaXNSZWZlcmVuY2UmJkxlKCJudWxsIGlzIG5vdCBhIHZhbGlkICIrdGhpcy5uYW1lKSwwO0cuJCR8fExlKCdDYW5ub3QgcGFzcyAiJytPaShHKSsnIiBhcyBhICcrdGhpcy5uYW1lKSxHLiQkLnB0cnx8TGUoIkNhbm5vdCBwYXNzIGRlbGV0ZWQgb2JqZWN0IGFzIGEgcG9pbnRlciBvZiB0eXBlICIrdGhpcy5uYW1lKTt2YXIgWD1HLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLFE9QmMoRy4kJC5wdHIsWCx0aGlzLnJlZ2lzdGVyZWRDbGFzcyk7cmV0dXJuIFF9ZnVuY3Rpb24gdnUoVSxHKXt2YXIgWDtpZihHPT09bnVsbClyZXR1cm4gdGhpcy5pc1JlZmVyZW5jZSYmTGUoIm51bGwgaXMgbm90IGEgdmFsaWQgIit0aGlzLm5hbWUpLHRoaXMuaXNTbWFydFBvaW50ZXI/KFg9dGhpcy5yYXdDb25zdHJ1Y3RvcigpLFUhPT1udWxsJiZVLnB1c2godGhpcy5yYXdEZXN0cnVjdG9yLFgpLFgpOjA7Ry4kJHx8TGUoJ0Nhbm5vdCBwYXNzICInK09pKEcpKyciIGFzIGEgJyt0aGlzLm5hbWUpLEcuJCQucHRyfHxMZSgiQ2Fubm90IHBhc3MgZGVsZXRlZCBvYmplY3QgYXMgYSBwb2ludGVyIG9mIHR5cGUgIit0aGlzLm5hbWUpLCF0aGlzLmlzQ29uc3QmJkcuJCQucHRyVHlwZS5pc0NvbnN0JiZMZSgiQ2Fubm90IGNvbnZlcnQgYXJndW1lbnQgb2YgdHlwZSAiKyhHLiQkLnNtYXJ0UHRyVHlwZT9HLiQkLnNtYXJ0UHRyVHlwZS5uYW1lOkcuJCQucHRyVHlwZS5uYW1lKSsiIHRvIHBhcmFtZXRlciB0eXBlICIrdGhpcy5uYW1lKTt2YXIgUT1HLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzO2lmKFg9QmMoRy4kJC5wdHIsUSx0aGlzLnJlZ2lzdGVyZWRDbGFzcyksdGhpcy5pc1NtYXJ0UG9pbnRlcilzd2l0Y2goRy4kJC5zbWFydFB0cj09PXZvaWQgMCYmTGUoIlBhc3NpbmcgcmF3IHBvaW50ZXIgdG8gc21hcnQgcG9pbnRlciBpcyBpbGxlZ2FsIiksdGhpcy5zaGFyaW5nUG9saWN5KXtjYXNlIDA6Ry4kJC5zbWFydFB0clR5cGU9PT10aGlzP1g9Ry4kJC5zbWFydFB0cjpMZSgiQ2Fubm90IGNvbnZlcnQgYXJndW1lbnQgb2YgdHlwZSAiKyhHLiQkLnNtYXJ0UHRyVHlwZT9HLiQkLnNtYXJ0UHRyVHlwZS5uYW1lOkcuJCQucHRyVHlwZS5uYW1lKSsiIHRvIHBhcmFtZXRlciB0eXBlICIrdGhpcy5uYW1lKTticmVhaztjYXNlIDE6WD1HLiQkLnNtYXJ0UHRyO2JyZWFrO2Nhc2UgMjppZihHLiQkLnNtYXJ0UHRyVHlwZT09PXRoaXMpWD1HLiQkLnNtYXJ0UHRyO2Vsc2V7dmFyIHV0PUcuY2xvbmUoKTtYPXRoaXMucmF3U2hhcmUoWCxscihmdW5jdGlvbigpe3V0LmRlbGV0ZSgpfSkpLFUhPT1udWxsJiZVLnB1c2godGhpcy5yYXdEZXN0cnVjdG9yLFgpfWJyZWFrO2RlZmF1bHQ6TGUoIlVuc3VwcG9ydGluZyBzaGFyaW5nIHBvbGljeSIpfXJldHVybiBYfWZ1bmN0aW9uIEZ1KFUsRyl7aWYoRz09PW51bGwpcmV0dXJuIHRoaXMuaXNSZWZlcmVuY2UmJkxlKCJudWxsIGlzIG5vdCBhIHZhbGlkICIrdGhpcy5uYW1lKSwwO0cuJCR8fExlKCdDYW5ub3QgcGFzcyAiJytPaShHKSsnIiBhcyBhICcrdGhpcy5uYW1lKSxHLiQkLnB0cnx8TGUoIkNhbm5vdCBwYXNzIGRlbGV0ZWQgb2JqZWN0IGFzIGEgcG9pbnRlciBvZiB0eXBlICIrdGhpcy5uYW1lKSxHLiQkLnB0clR5cGUuaXNDb25zdCYmTGUoIkNhbm5vdCBjb252ZXJ0IGFyZ3VtZW50IG9mIHR5cGUgIitHLiQkLnB0clR5cGUubmFtZSsiIHRvIHBhcmFtZXRlciB0eXBlICIrdGhpcy5uYW1lKTt2YXIgWD1HLiQkLnB0clR5cGUucmVnaXN0ZXJlZENsYXNzLFE9QmMoRy4kJC5wdHIsWCx0aGlzLnJlZ2lzdGVyZWRDbGFzcyk7cmV0dXJuIFF9ZnVuY3Rpb24gTHUoVSl7cmV0dXJuIHRoaXMucmF3R2V0UG9pbnRlZSYmKFU9dGhpcy5yYXdHZXRQb2ludGVlKFUpKSxVfWZ1bmN0aW9uIER1KFUpe3RoaXMucmF3RGVzdHJ1Y3RvciYmdGhpcy5yYXdEZXN0cnVjdG9yKFUpfWZ1bmN0aW9uIEJ1KFUpe1UhPT1udWxsJiZVLmRlbGV0ZSgpfWZ1bmN0aW9uIFlhKFUsRyxYKXtpZihHPT09WClyZXR1cm4gVTtpZihYLmJhc2VDbGFzcz09PXZvaWQgMClyZXR1cm4gbnVsbDt2YXIgUT1ZYShVLEcsWC5iYXNlQ2xhc3MpO3JldHVybiBRPT09bnVsbD9udWxsOlguZG93bmNhc3QoUSl9ZnVuY3Rpb24gVXUoKXtyZXR1cm4gT2JqZWN0LmtleXMoZXMpLmxlbmd0aH1mdW5jdGlvbiBrdSgpe3ZhciBVPVtdO2Zvcih2YXIgRyBpbiBlcyllcy5oYXNPd25Qcm9wZXJ0eShHKSYmVS5wdXNoKGVzW0ddKTtyZXR1cm4gVX1mdW5jdGlvbiBHdShVKXtKaT1VLHRzLmxlbmd0aCYmSmkmJkppKExjKX1mdW5jdGlvbiBWdSgpe24uZ2V0SW5oZXJpdGVkSW5zdGFuY2VDb3VudD1VdSxuLmdldExpdmVJbmhlcml0ZWRJbnN0YW5jZXM9a3Usbi5mbHVzaFBlbmRpbmdEZWxldGVzPUxjLG4uc2V0RGVsYXlGdW5jdGlvbj1HdX12YXIgZXM9e307ZnVuY3Rpb24genUoVSxHKXtmb3IoRz09PXZvaWQgMCYmTGUoInB0ciBzaG91bGQgbm90IGJlIHVuZGVmaW5lZCIpO1UuYmFzZUNsYXNzOylHPVUudXBjYXN0KEcpLFU9VS5iYXNlQ2xhc3M7cmV0dXJuIEd9ZnVuY3Rpb24ganUoVSxHKXtyZXR1cm4gRz16dShVLEcpLGVzW0ddfWZ1bmN0aW9uIExzKFUsRyl7KCFHLnB0clR5cGV8fCFHLnB0cikmJndpKCJtYWtlQ2xhc3NIYW5kbGUgcmVxdWlyZXMgcHRyIGFuZCBwdHJUeXBlIik7dmFyIFg9ISFHLnNtYXJ0UHRyVHlwZSxRPSEhRy5zbWFydFB0cjtyZXR1cm4gWCE9PVEmJndpKCJCb3RoIHNtYXJ0UHRyVHlwZSBhbmQgc21hcnRQdHIgbXVzdCBiZSBzcGVjaWZpZWQiKSxHLmNvdW50PXt2YWx1ZToxfSxRaShPYmplY3QuY3JlYXRlKFUseyQkOnt2YWx1ZTpHfX0pKX1mdW5jdGlvbiBIdShVKXt2YXIgRz10aGlzLmdldFBvaW50ZWUoVSk7aWYoIUcpcmV0dXJuIHRoaXMuZGVzdHJ1Y3RvcihVKSxudWxsO3ZhciBYPWp1KHRoaXMucmVnaXN0ZXJlZENsYXNzLEcpO2lmKFghPT12b2lkIDApe2lmKFguJCQuY291bnQudmFsdWU9PT0wKXJldHVybiBYLiQkLnB0cj1HLFguJCQuc21hcnRQdHI9VSxYLmNsb25lKCk7dmFyIFE9WC5jbG9uZSgpO3JldHVybiB0aGlzLmRlc3RydWN0b3IoVSksUX1mdW5jdGlvbiB1dCgpe3JldHVybiB0aGlzLmlzU21hcnRQb2ludGVyP0xzKHRoaXMucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRoaXMucG9pbnRlZVR5cGUscHRyOkcsc21hcnRQdHJUeXBlOnRoaXMsc21hcnRQdHI6VX0pOkxzKHRoaXMucmVnaXN0ZXJlZENsYXNzLmluc3RhbmNlUHJvdG90eXBlLHtwdHJUeXBlOnRoaXMscHRyOlV9KX12YXIgT3Q9dGhpcy5yZWdpc3RlcmVkQ2xhc3MuZ2V0QWN0dWFsVHlwZShHKSxTdD1XYVtPdF07aWYoIVN0KXJldHVybiB1dC5jYWxsKHRoaXMpO3ZhciBodDt0aGlzLmlzQ29uc3Q/aHQ9U3QuY29uc3RQb2ludGVyVHlwZTpodD1TdC5wb2ludGVyVHlwZTt2YXIgeXQ9WWEoRyx0aGlzLnJlZ2lzdGVyZWRDbGFzcyxodC5yZWdpc3RlcmVkQ2xhc3MpO3JldHVybiB5dD09PW51bGw/dXQuY2FsbCh0aGlzKTp0aGlzLmlzU21hcnRQb2ludGVyP0xzKGh0LnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSx7cHRyVHlwZTpodCxwdHI6eXQsc21hcnRQdHJUeXBlOnRoaXMsc21hcnRQdHI6VX0pOkxzKGh0LnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSx7cHRyVHlwZTpodCxwdHI6eXR9KX1mdW5jdGlvbiBxdSgpe3VyLnByb3RvdHlwZS5nZXRQb2ludGVlPUx1LHVyLnByb3RvdHlwZS5kZXN0cnVjdG9yPUR1LHVyLnByb3RvdHlwZS5hcmdQYWNrQWR2YW5jZT04LHVyLnByb3RvdHlwZS5yZWFkVmFsdWVGcm9tUG9pbnRlcj1mcix1ci5wcm90b3R5cGUuZGVsZXRlT2JqZWN0PUJ1LHVyLnByb3RvdHlwZS5mcm9tV2lyZVR5cGU9SHV9ZnVuY3Rpb24gdXIoVSxHLFgsUSx1dCxPdCxTdCxodCx5dCxxdCxKdCl7dGhpcy5uYW1lPVUsdGhpcy5yZWdpc3RlcmVkQ2xhc3M9Ryx0aGlzLmlzUmVmZXJlbmNlPVgsdGhpcy5pc0NvbnN0PVEsdGhpcy5pc1NtYXJ0UG9pbnRlcj11dCx0aGlzLnBvaW50ZWVUeXBlPU90LHRoaXMuc2hhcmluZ1BvbGljeT1TdCx0aGlzLnJhd0dldFBvaW50ZWU9aHQsdGhpcy5yYXdDb25zdHJ1Y3Rvcj15dCx0aGlzLnJhd1NoYXJlPXF0LHRoaXMucmF3RGVzdHJ1Y3Rvcj1KdCwhdXQmJkcuYmFzZUNsYXNzPT09dm9pZCAwP1E/KHRoaXMudG9XaXJlVHlwZT1JdSx0aGlzLmRlc3RydWN0b3JGdW5jdGlvbj1udWxsKToodGhpcy50b1dpcmVUeXBlPUZ1LHRoaXMuZGVzdHJ1Y3RvckZ1bmN0aW9uPW51bGwpOnRoaXMudG9XaXJlVHlwZT12dX1mdW5jdGlvbiAkYShVLEcsWCl7bi5oYXNPd25Qcm9wZXJ0eShVKXx8d2koIlJlcGxhY2luZyBub25leGlzdGFudCBwdWJsaWMgc3ltYm9sIiksbltVXS5vdmVybG9hZFRhYmxlIT09dm9pZCAwJiZYIT09dm9pZCAwP25bVV0ub3ZlcmxvYWRUYWJsZVtYXT1HOihuW1VdPUcsbltVXS5hcmdDb3VudD1YKX1mdW5jdGlvbiBLdShVLEcsWCl7dmFyIFE9blsiZHluQ2FsbF8iK1VdO3JldHVybiBYJiZYLmxlbmd0aD9RLmFwcGx5KG51bGwsW0ddLmNvbmNhdChYKSk6US5jYWxsKG51bGwsRyl9ZnVuY3Rpb24gV3UoVSxHLFgpe3JldHVybiBVLmluZGV4T2YoImoiKSE9LTE/S3UoVSxHLFgpOmdlLmdldChHKS5hcHBseShudWxsLFgpfWZ1bmN0aW9uIFh1KFUsRyl7dmFyIFg9W107cmV0dXJuIGZ1bmN0aW9uKCl7WC5sZW5ndGg9YXJndW1lbnRzLmxlbmd0aDtmb3IodmFyIFE9MDtRPGFyZ3VtZW50cy5sZW5ndGg7USsrKVhbUV09YXJndW1lbnRzW1FdO3JldHVybiBXdShVLEcsWCl9fWZ1bmN0aW9uIEtvKFUsRyl7VT1CbihVKTtmdW5jdGlvbiBYKCl7cmV0dXJuIFUuaW5kZXhPZigiaiIpIT0tMT9YdShVLEcpOmdlLmdldChHKX12YXIgUT1YKCk7cmV0dXJuIHR5cGVvZiBRIT0iZnVuY3Rpb24iJiZMZSgidW5rbm93biBmdW5jdGlvbiBwb2ludGVyIHdpdGggc2lnbmF0dXJlICIrVSsiOiAiK0cpLFF9dmFyIFphPXZvaWQgMDtmdW5jdGlvbiBRYShVKXt2YXIgRz10dChVKSxYPUJuKEcpO3JldHVybiBLKEcpLFh9ZnVuY3Rpb24gRHMoVSxHKXt2YXIgWD1bXSxRPXt9O2Z1bmN0aW9uIHV0KE90KXtpZighUVtPdF0mJiFxb1tPdF0pe2lmKElyW090XSl7SXJbT3RdLmZvckVhY2godXQpO3JldHVybn1YLnB1c2goT3QpLFFbT3RdPSEwfX10aHJvdyBHLmZvckVhY2godXQpLG5ldyBaYShVKyI6ICIrWC5tYXAoUWEpLmpvaW4oWyIsICJdKSl9ZnVuY3Rpb24gWXUoVSxHLFgsUSx1dCxPdCxTdCxodCx5dCxxdCxKdCxUZSxKZSl7SnQ9Qm4oSnQpLE90PUtvKHV0LE90KSxodCYmKGh0PUtvKFN0LGh0KSkscXQmJihxdD1Lbyh5dCxxdCkpLEplPUtvKFRlLEplKTt2YXIgYm49JGkoSnQpO0RjKGJuLGZ1bmN0aW9uKCl7RHMoIkNhbm5vdCBjb25zdHJ1Y3QgIitKdCsiIGR1ZSB0byB1bmJvdW5kIHR5cGVzIixbUV0pfSksc28oW1UsRyxYXSxRP1tRXTpbXSxmdW5jdGlvbihjbyl7Y289Y29bMF07dmFyIEZvLHByO1E/KEZvPWNvLnJlZ2lzdGVyZWRDbGFzcyxwcj1Gby5pbnN0YW5jZVByb3RvdHlwZSk6cHI9THIucHJvdG90eXBlO3ZhciBRcj12cihibixmdW5jdGlvbigpe2lmKE9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKSE9PXJmKXRocm93IG5ldyBUaSgiVXNlICduZXcnIHRvIGNvbnN0cnVjdCAiK0p0KTtpZihSaS5jb25zdHJ1Y3Rvcl9ib2R5PT09dm9pZCAwKXRocm93IG5ldyBUaShKdCsiIGhhcyBubyBhY2Nlc3NpYmxlIGNvbnN0cnVjdG9yIik7dmFyIHcxPVJpLmNvbnN0cnVjdG9yX2JvZHlbYXJndW1lbnRzLmxlbmd0aF07aWYodzE9PT12b2lkIDApdGhyb3cgbmV3IFRpKCJUcmllZCB0byBpbnZva2UgY3RvciBvZiAiK0p0KyIgd2l0aCBpbnZhbGlkIG51bWJlciBvZiBwYXJhbWV0ZXJzICgiK2FyZ3VtZW50cy5sZW5ndGgrIikgLSBleHBlY3RlZCAoIitPYmplY3Qua2V5cyhSaS5jb25zdHJ1Y3Rvcl9ib2R5KS50b1N0cmluZygpKyIpIHBhcmFtZXRlcnMgaW5zdGVhZCEiKTtyZXR1cm4gdzEuYXBwbHkodGhpcyxhcmd1bWVudHMpfSkscmY9T2JqZWN0LmNyZWF0ZShwcix7Y29uc3RydWN0b3I6e3ZhbHVlOlFyfX0pO1FyLnByb3RvdHlwZT1yZjt2YXIgUmk9bmV3IE51KEp0LFFyLHJmLEplLEZvLE90LGh0LHF0KSxweD1uZXcgdXIoSnQsUmksITAsITEsITEpLEExPW5ldyB1cihKdCsiKiIsUmksITEsITEsITEpLGIxPW5ldyB1cihKdCsiIGNvbnN0KiIsUmksITEsITAsITEpO3JldHVybiBXYVtVXT17cG9pbnRlclR5cGU6QTEsY29uc3RQb2ludGVyVHlwZTpiMX0sJGEoYm4sUXIpLFtweCxBMSxiMV19KX1mdW5jdGlvbiBVYyhVLEcpe2Zvcih2YXIgWD1bXSxRPTA7UTxVO1ErKylYLnB1c2gocmVbKEc+PjIpK1FdKTtyZXR1cm4gWH1mdW5jdGlvbiAkdShVLEcsWCxRLHV0LE90KXtMKEc+MCk7dmFyIFN0PVVjKEcsWCk7dXQ9S28oUSx1dCk7dmFyIGh0PVtPdF0seXQ9W107c28oW10sW1VdLGZ1bmN0aW9uKHF0KXtxdD1xdFswXTt2YXIgSnQ9ImNvbnN0cnVjdG9yICIrcXQubmFtZTtpZihxdC5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keT09PXZvaWQgMCYmKHF0LnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5PVtdKSxxdC5yZWdpc3RlcmVkQ2xhc3MuY29uc3RydWN0b3JfYm9keVtHLTFdIT09dm9pZCAwKXRocm93IG5ldyBUaSgiQ2Fubm90IHJlZ2lzdGVyIG11bHRpcGxlIGNvbnN0cnVjdG9ycyB3aXRoIGlkZW50aWNhbCBudW1iZXIgb2YgcGFyYW1ldGVycyAoIisoRy0xKSsiKSBmb3IgY2xhc3MgJyIrcXQubmFtZSsiJyEgT3ZlcmxvYWQgcmVzb2x1dGlvbiBpcyBjdXJyZW50bHkgb25seSBwZXJmb3JtZWQgdXNpbmcgdGhlIHBhcmFtZXRlciBjb3VudCwgbm90IGFjdHVhbCB0eXBlIGluZm8hIik7cmV0dXJuIHF0LnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W0ctMV09ZnVuY3Rpb24oKXtEcygiQ2Fubm90IGNvbnN0cnVjdCAiK3F0Lm5hbWUrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIsU3QpfSxzbyhbXSxTdCxmdW5jdGlvbihUZSl7cmV0dXJuIHF0LnJlZ2lzdGVyZWRDbGFzcy5jb25zdHJ1Y3Rvcl9ib2R5W0ctMV09ZnVuY3Rpb24oKXthcmd1bWVudHMubGVuZ3RoIT09Ry0xJiZMZShKdCsiIGNhbGxlZCB3aXRoICIrYXJndW1lbnRzLmxlbmd0aCsiIGFyZ3VtZW50cywgZXhwZWN0ZWQgIisoRy0xKSkseXQubGVuZ3RoPTAsaHQubGVuZ3RoPUc7Zm9yKHZhciBibj0xO2JuPEc7KytibilodFtibl09VGVbYm5dLnRvV2lyZVR5cGUoeXQsYXJndW1lbnRzW2JuLTFdKTt2YXIgY289dXQuYXBwbHkobnVsbCxodCk7cmV0dXJuIFJuKHl0KSxUZVswXS5mcm9tV2lyZVR5cGUoY28pfSxbXX0pLFtdfSl9ZnVuY3Rpb24gSmEoVSxHKXtpZighKFUgaW5zdGFuY2VvZiBGdW5jdGlvbikpdGhyb3cgbmV3IFR5cGVFcnJvcigibmV3XyBjYWxsZWQgd2l0aCBjb25zdHJ1Y3RvciB0eXBlICIrdHlwZW9mIFUrIiB3aGljaCBpcyBub3QgYSBmdW5jdGlvbiIpO3ZhciBYPXZyKFUubmFtZXx8InVua25vd25GdW5jdGlvbk5hbWUiLGZ1bmN0aW9uKCl7fSk7WC5wcm90b3R5cGU9VS5wcm90b3R5cGU7dmFyIFE9bmV3IFgsdXQ9VS5hcHBseShRLEcpO3JldHVybiB1dCBpbnN0YW5jZW9mIE9iamVjdD91dDpRfWZ1bmN0aW9uIHRmKFUsRyxYLFEsdXQpe3ZhciBPdD1HLmxlbmd0aDtPdDwyJiZMZSgiYXJnVHlwZXMgYXJyYXkgc2l6ZSBtaXNtYXRjaCEgTXVzdCBhdCBsZWFzdCBnZXQgcmV0dXJuIHZhbHVlIGFuZCAndGhpcycgdHlwZXMhIik7Zm9yKHZhciBTdD1HWzFdIT09bnVsbCYmWCE9PW51bGwsaHQ9ITEseXQ9MTt5dDxHLmxlbmd0aDsrK3l0KWlmKEdbeXRdIT09bnVsbCYmR1t5dF0uZGVzdHJ1Y3RvckZ1bmN0aW9uPT09dm9pZCAwKXtodD0hMDticmVha31mb3IodmFyIHF0PUdbMF0ubmFtZSE9PSJ2b2lkIixKdD0iIixUZT0iIix5dD0wO3l0PE90LTI7Kyt5dClKdCs9KHl0IT09MD8iLCAiOiIiKSsiYXJnIit5dCxUZSs9KHl0IT09MD8iLCAiOiIiKSsiYXJnIit5dCsiV2lyZWQiO3ZhciBKZT0icmV0dXJuIGZ1bmN0aW9uICIrJGkoVSkrIigiK0p0K2ApIHsKaWYgKGFyZ3VtZW50cy5sZW5ndGggIT09IGArKE90LTIpK2ApIHsKdGhyb3dCaW5kaW5nRXJyb3IoJ2Z1bmN0aW9uIGArVSsiIGNhbGxlZCB3aXRoICcgKyBhcmd1bWVudHMubGVuZ3RoICsgJyBhcmd1bWVudHMsIGV4cGVjdGVkICIrKE90LTIpK2AgYXJncyEnKTsKfQpgO2h0JiYoSmUrPWB2YXIgZGVzdHJ1Y3RvcnMgPSBbXTsKYCk7dmFyIGJuPWh0PyJkZXN0cnVjdG9ycyI6Im51bGwiLGNvPVsidGhyb3dCaW5kaW5nRXJyb3IiLCJpbnZva2VyIiwiZm4iLCJydW5EZXN0cnVjdG9ycyIsInJldFR5cGUiLCJjbGFzc1BhcmFtIl0sRm89W0xlLFEsdXQsUm4sR1swXSxHWzFdXTtTdCYmKEplKz0idmFyIHRoaXNXaXJlZCA9IGNsYXNzUGFyYW0udG9XaXJlVHlwZSgiK2JuK2AsIHRoaXMpOwpgKTtmb3IodmFyIHl0PTA7eXQ8T3QtMjsrK3l0KUplKz0idmFyIGFyZyIreXQrIldpcmVkID0gYXJnVHlwZSIreXQrIi50b1dpcmVUeXBlKCIrYm4rIiwgYXJnIit5dCsiKTsgLy8gIitHW3l0KzJdLm5hbWUrYApgLGNvLnB1c2goImFyZ1R5cGUiK3l0KSxGby5wdXNoKEdbeXQrMl0pO2lmKFN0JiYoVGU9InRoaXNXaXJlZCIrKFRlLmxlbmd0aD4wPyIsICI6IiIpK1RlKSxKZSs9KHF0PyJ2YXIgcnYgPSAiOiIiKSsiaW52b2tlcihmbiIrKFRlLmxlbmd0aD4wPyIsICI6IiIpK1RlK2ApOwpgLGh0KUplKz1gcnVuRGVzdHJ1Y3RvcnMoZGVzdHJ1Y3RvcnMpOwpgO2Vsc2UgZm9yKHZhciB5dD1TdD8xOjI7eXQ8Ry5sZW5ndGg7Kyt5dCl7dmFyIHByPXl0PT09MT8idGhpc1dpcmVkIjoiYXJnIisoeXQtMikrIldpcmVkIjtHW3l0XS5kZXN0cnVjdG9yRnVuY3Rpb24hPT1udWxsJiYoSmUrPXByKyJfZHRvcigiK3ByKyIpOyAvLyAiK0dbeXRdLm5hbWUrYApgLGNvLnB1c2gocHIrIl9kdG9yIiksRm8ucHVzaChHW3l0XS5kZXN0cnVjdG9yRnVuY3Rpb24pKX1xdCYmKEplKz1gdmFyIHJldCA9IHJldFR5cGUuZnJvbVdpcmVUeXBlKHJ2KTsKcmV0dXJuIHJldDsKYCksSmUrPWB9CmAsY28ucHVzaChKZSk7dmFyIFFyPUphKEZ1bmN0aW9uLGNvKS5hcHBseShudWxsLEZvKTtyZXR1cm4gUXJ9ZnVuY3Rpb24gWnUoVSxHLFgsUSx1dCxPdCxTdCxodCl7dmFyIHl0PVVjKFgsUSk7Rz1CbihHKSxPdD1Lbyh1dCxPdCksc28oW10sW1VdLGZ1bmN0aW9uKHF0KXtxdD1xdFswXTt2YXIgSnQ9cXQubmFtZSsiLiIrRztodCYmcXQucmVnaXN0ZXJlZENsYXNzLnB1cmVWaXJ0dWFsRnVuY3Rpb25zLnB1c2goRyk7ZnVuY3Rpb24gVGUoKXtEcygiQ2Fubm90IGNhbGwgIitKdCsiIGR1ZSB0byB1bmJvdW5kIHR5cGVzIix5dCl9dmFyIEplPXF0LnJlZ2lzdGVyZWRDbGFzcy5pbnN0YW5jZVByb3RvdHlwZSxibj1KZVtHXTtyZXR1cm4gYm49PT12b2lkIDB8fGJuLm92ZXJsb2FkVGFibGU9PT12b2lkIDAmJmJuLmNsYXNzTmFtZSE9PXF0Lm5hbWUmJmJuLmFyZ0NvdW50PT09WC0yPyhUZS5hcmdDb3VudD1YLTIsVGUuY2xhc3NOYW1lPXF0Lm5hbWUsSmVbR109VGUpOihYYShKZSxHLEp0KSxKZVtHXS5vdmVybG9hZFRhYmxlW1gtMl09VGUpLHNvKFtdLHl0LGZ1bmN0aW9uKGNvKXt2YXIgRm89dGYoSnQsY28scXQsT3QsU3QpO3JldHVybiBKZVtHXS5vdmVybG9hZFRhYmxlPT09dm9pZCAwPyhGby5hcmdDb3VudD1YLTIsSmVbR109Rm8pOkplW0ddLm92ZXJsb2FkVGFibGVbWC0yXT1GbyxbXX0pLFtdfSl9ZnVuY3Rpb24gUXUoVSxHLFgpe1U9Qm4oVSksc28oW10sW0ddLGZ1bmN0aW9uKFEpe3JldHVybiBRPVFbMF0sbltVXT1RLmZyb21XaXJlVHlwZShYKSxbXX0pfXZhciBrYz1bXSx3bz1be30se3ZhbHVlOnZvaWQgMH0se3ZhbHVlOm51bGx9LHt2YWx1ZTohMH0se3ZhbHVlOiExfV07ZnVuY3Rpb24gR2MoVSl7VT40JiYtLXdvW1VdLnJlZmNvdW50PT09MCYmKHdvW1VdPXZvaWQgMCxrYy5wdXNoKFUpKX1mdW5jdGlvbiBKdSgpe2Zvcih2YXIgVT0wLEc9NTtHPHdvLmxlbmd0aDsrK0cpd29bR10hPT12b2lkIDAmJisrVTtyZXR1cm4gVX1mdW5jdGlvbiB0bCgpe2Zvcih2YXIgVT01O1U8d28ubGVuZ3RoOysrVSlpZih3b1tVXSE9PXZvaWQgMClyZXR1cm4gd29bVV07cmV0dXJuIG51bGx9ZnVuY3Rpb24gZWwoKXtuLmNvdW50X2VtdmFsX2hhbmRsZXM9SnUsbi5nZXRfZmlyc3RfZW12YWw9dGx9ZnVuY3Rpb24gbHIoVSl7c3dpdGNoKFUpe2Nhc2Ugdm9pZCAwOnJldHVybiAxO2Nhc2UgbnVsbDpyZXR1cm4gMjtjYXNlITA6cmV0dXJuIDM7Y2FzZSExOnJldHVybiA0O2RlZmF1bHQ6e3ZhciBHPWtjLmxlbmd0aD9rYy5wb3AoKTp3by5sZW5ndGg7cmV0dXJuIHdvW0ddPXtyZWZjb3VudDoxLHZhbHVlOlV9LEd9fX1mdW5jdGlvbiBubChVLEcpe0c9Qm4oRykscnIoVSx7bmFtZTpHLGZyb21XaXJlVHlwZTpmdW5jdGlvbihYKXt2YXIgUT13b1tYXS52YWx1ZTtyZXR1cm4gR2MoWCksUX0sdG9XaXJlVHlwZTpmdW5jdGlvbihYLFEpe3JldHVybiBscihRKX0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpmcixkZXN0cnVjdG9yRnVuY3Rpb246bnVsbH0pfWZ1bmN0aW9uIG9sKFUsRyxYKXtzd2l0Y2goRyl7Y2FzZSAwOnJldHVybiBmdW5jdGlvbihRKXt2YXIgdXQ9WD9ydDp4dDtyZXR1cm4gdGhpcy5mcm9tV2lyZVR5cGUodXRbUV0pfTtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKFEpe3ZhciB1dD1YP0d0OnBlO3JldHVybiB0aGlzLmZyb21XaXJlVHlwZSh1dFtRPj4xXSl9O2Nhc2UgMjpyZXR1cm4gZnVuY3Rpb24oUSl7dmFyIHV0PVg/cmU6ZGU7cmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKHV0W1E+PjJdKX07ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGludGVnZXIgdHlwZTogIitVKX19ZnVuY3Rpb24gcmwoVSxHLFgsUSl7dmFyIHV0PUZyKFgpO0c9Qm4oRyk7ZnVuY3Rpb24gT3QoKXt9T3QudmFsdWVzPXt9LHJyKFUse25hbWU6Ryxjb25zdHJ1Y3RvcjpPdCxmcm9tV2lyZVR5cGU6ZnVuY3Rpb24oU3Qpe3JldHVybiB0aGlzLmNvbnN0cnVjdG9yLnZhbHVlc1tTdF19LHRvV2lyZVR5cGU6ZnVuY3Rpb24oU3QsaHQpe3JldHVybiBodC52YWx1ZX0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpvbChHLHV0LFEpLGRlc3RydWN0b3JGdW5jdGlvbjpudWxsfSksRGMoRyxPdCl9ZnVuY3Rpb24gQnMoVSxHKXt2YXIgWD1xb1tVXTtyZXR1cm4gWD09PXZvaWQgMCYmTGUoRysiIGhhcyB1bmtub3duIHR5cGUgIitRYShVKSksWH1mdW5jdGlvbiBpbChVLEcsWCl7dmFyIFE9QnMoVSwiZW51bSIpO0c9Qm4oRyk7dmFyIHV0PVEuY29uc3RydWN0b3IsT3Q9T2JqZWN0LmNyZWF0ZShRLmNvbnN0cnVjdG9yLnByb3RvdHlwZSx7dmFsdWU6e3ZhbHVlOlh9LGNvbnN0cnVjdG9yOnt2YWx1ZTp2cihRLm5hbWUrIl8iK0csZnVuY3Rpb24oKXt9KX19KTt1dC52YWx1ZXNbWF09T3QsdXRbR109T3R9ZnVuY3Rpb24gT2koVSl7aWYoVT09PW51bGwpcmV0dXJuIm51bGwiO3ZhciBHPXR5cGVvZiBVO3JldHVybiBHPT09Im9iamVjdCJ8fEc9PT0iYXJyYXkifHxHPT09ImZ1bmN0aW9uIj9VLnRvU3RyaW5nKCk6IiIrVX1mdW5jdGlvbiBzbChVLEcpe3N3aXRjaChHKXtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKFgpe3JldHVybiB0aGlzLmZyb21XaXJlVHlwZShmZVtYPj4yXSl9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24oWCl7cmV0dXJuIHRoaXMuZnJvbVdpcmVUeXBlKFp0W1g+PjNdKX07ZGVmYXVsdDp0aHJvdyBuZXcgVHlwZUVycm9yKCJVbmtub3duIGZsb2F0IHR5cGU6ICIrVSl9fWZ1bmN0aW9uIGNsKFUsRyxYKXt2YXIgUT1GcihYKTtHPUJuKEcpLHJyKFUse25hbWU6Ryxmcm9tV2lyZVR5cGU6ZnVuY3Rpb24odXQpe3JldHVybiB1dH0sdG9XaXJlVHlwZTpmdW5jdGlvbih1dCxPdCl7aWYodHlwZW9mIE90IT0ibnVtYmVyIiYmdHlwZW9mIE90IT0iYm9vbGVhbiIpdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNvbnZlcnQgIicrT2koT3QpKyciIHRvICcrdGhpcy5uYW1lKTtyZXR1cm4gT3R9LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6c2woRyxRKSxkZXN0cnVjdG9yRnVuY3Rpb246bnVsbH0pfWZ1bmN0aW9uIGFsKFUsRyxYLFEsdXQsT3Qpe3ZhciBTdD1VYyhHLFgpO1U9Qm4oVSksdXQ9S28oUSx1dCksRGMoVSxmdW5jdGlvbigpe0RzKCJDYW5ub3QgY2FsbCAiK1UrIiBkdWUgdG8gdW5ib3VuZCB0eXBlcyIsU3QpfSxHLTEpLHNvKFtdLFN0LGZ1bmN0aW9uKGh0KXt2YXIgeXQ9W2h0WzBdLG51bGxdLmNvbmNhdChodC5zbGljZSgxKSk7cmV0dXJuICRhKFUsdGYoVSx5dCxudWxsLHV0LE90KSxHLTEpLFtdfSl9ZnVuY3Rpb24gZmwoVSxHLFgpe3N3aXRjaChHKXtjYXNlIDA6cmV0dXJuIFg/ZnVuY3Rpb24odXQpe3JldHVybiBydFt1dF19OmZ1bmN0aW9uKHV0KXtyZXR1cm4geHRbdXRdfTtjYXNlIDE6cmV0dXJuIFg/ZnVuY3Rpb24odXQpe3JldHVybiBHdFt1dD4+MV19OmZ1bmN0aW9uKHV0KXtyZXR1cm4gcGVbdXQ+PjFdfTtjYXNlIDI6cmV0dXJuIFg/ZnVuY3Rpb24odXQpe3JldHVybiByZVt1dD4+Ml19OmZ1bmN0aW9uKHV0KXtyZXR1cm4gZGVbdXQ+PjJdfTtkZWZhdWx0OnRocm93IG5ldyBUeXBlRXJyb3IoIlVua25vd24gaW50ZWdlciB0eXBlOiAiK1UpfX1mdW5jdGlvbiB1bChVLEcsWCxRLHV0KXtHPUJuKEcpLHV0PT09LTEmJih1dD00Mjk0OTY3Mjk1KTt2YXIgT3Q9RnIoWCksU3Q9ZnVuY3Rpb24ocXQpe3JldHVybiBxdH07aWYoUT09PTApe3ZhciBodD0zMi04Klg7U3Q9ZnVuY3Rpb24ocXQpe3JldHVybiBxdDw8aHQ+Pj5odH19dmFyIHl0PUcuaW5kZXhPZigidW5zaWduZWQiKSE9LTE7cnIoVSx7bmFtZTpHLGZyb21XaXJlVHlwZTpTdCx0b1dpcmVUeXBlOmZ1bmN0aW9uKHF0LEp0KXtpZih0eXBlb2YgSnQhPSJudW1iZXIiJiZ0eXBlb2YgSnQhPSJib29sZWFuIil0aHJvdyBuZXcgVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCAiJytPaShKdCkrJyIgdG8gJyt0aGlzLm5hbWUpO2lmKEp0PFF8fEp0PnV0KXRocm93IG5ldyBUeXBlRXJyb3IoJ1Bhc3NpbmcgYSBudW1iZXIgIicrT2koSnQpKyciIGZyb20gSlMgc2lkZSB0byBDL0MrKyBzaWRlIHRvIGFuIGFyZ3VtZW50IG9mIHR5cGUgIicrRysnIiwgd2hpY2ggaXMgb3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UgWycrUSsiLCAiK3V0KyJdISIpO3JldHVybiB5dD9KdD4+PjA6SnR8MH0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpmbChHLE90LFEhPT0wKSxkZXN0cnVjdG9yRnVuY3Rpb246bnVsbH0pfWZ1bmN0aW9uIGxsKFUsRyxYKXt2YXIgUT1bSW50OEFycmF5LFVpbnQ4QXJyYXksSW50MTZBcnJheSxVaW50MTZBcnJheSxJbnQzMkFycmF5LFVpbnQzMkFycmF5LEZsb2F0MzJBcnJheSxGbG9hdDY0QXJyYXldLHV0PVFbR107ZnVuY3Rpb24gT3QoU3Qpe1N0PVN0Pj4yO3ZhciBodD1kZSx5dD1odFtTdF0scXQ9aHRbU3QrMV07cmV0dXJuIG5ldyB1dChkdCxxdCx5dCl9WD1CbihYKSxycihVLHtuYW1lOlgsZnJvbVdpcmVUeXBlOk90LGFyZ1BhY2tBZHZhbmNlOjgscmVhZFZhbHVlRnJvbVBvaW50ZXI6T3R9LHtpZ25vcmVEdXBsaWNhdGVSZWdpc3RyYXRpb25zOiEwfSl9ZnVuY3Rpb24gcGwoVSxHKXtHPUJuKEcpO3ZhciBYPUc9PT0ic3RkOjpzdHJpbmciO3JyKFUse25hbWU6Ryxmcm9tV2lyZVR5cGU6ZnVuY3Rpb24oUSl7dmFyIHV0PWRlW1E+PjJdLE90O2lmKFgpZm9yKHZhciBTdD1RKzQsaHQ9MDtodDw9dXQ7KytodCl7dmFyIHl0PVErNCtodDtpZihodD09dXR8fHh0W3l0XT09MCl7dmFyIHF0PXl0LVN0LEp0PWsoU3QscXQpO090PT09dm9pZCAwP090PUp0OihPdCs9IlwwIixPdCs9SnQpLFN0PXl0KzF9fWVsc2V7Zm9yKHZhciBUZT1uZXcgQXJyYXkodXQpLGh0PTA7aHQ8dXQ7KytodClUZVtodF09U3RyaW5nLmZyb21DaGFyQ29kZSh4dFtRKzQraHRdKTtPdD1UZS5qb2luKCIiKX1yZXR1cm4gSyhRKSxPdH0sdG9XaXJlVHlwZTpmdW5jdGlvbihRLHV0KXt1dCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiYodXQ9bmV3IFVpbnQ4QXJyYXkodXQpKTt2YXIgT3QsU3Q9dHlwZW9mIHV0PT0ic3RyaW5nIjtTdHx8dXQgaW5zdGFuY2VvZiBVaW50OEFycmF5fHx1dCBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5fHx1dCBpbnN0YW5jZW9mIEludDhBcnJheXx8TGUoIkNhbm5vdCBwYXNzIG5vbi1zdHJpbmcgdG8gc3RkOjpzdHJpbmciKSxYJiZTdD9PdD1mdW5jdGlvbigpe3JldHVybiBSKHV0KX06T3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdXQubGVuZ3RofTt2YXIgaHQ9T3QoKSx5dD1WKDQraHQrMSk7aWYoZGVbeXQ+PjJdPWh0LFgmJlN0KVcodXQseXQrNCxodCsxKTtlbHNlIGlmKFN0KWZvcih2YXIgcXQ9MDtxdDxodDsrK3F0KXt2YXIgSnQ9dXQuY2hhckNvZGVBdChxdCk7SnQ+MjU1JiYoSyh5dCksTGUoIlN0cmluZyBoYXMgVVRGLTE2IGNvZGUgdW5pdHMgdGhhdCBkbyBub3QgZml0IGluIDggYml0cyIpKSx4dFt5dCs0K3F0XT1KdH1lbHNlIGZvcih2YXIgcXQ9MDtxdDxodDsrK3F0KXh0W3l0KzQrcXRdPXV0W3F0XTtyZXR1cm4gUSE9PW51bGwmJlEucHVzaChLLHl0KSx5dH0sYXJnUGFja0FkdmFuY2U6OCxyZWFkVmFsdWVGcm9tUG9pbnRlcjpmcixkZXN0cnVjdG9yRnVuY3Rpb246ZnVuY3Rpb24oUSl7SyhRKX19KX1mdW5jdGlvbiBkbChVLEcsWCl7WD1CbihYKTt2YXIgUSx1dCxPdCxTdCxodDtHPT09Mj8oUT1hdCx1dD1sdCxTdD1fdCxPdD1mdW5jdGlvbigpe3JldHVybiBwZX0saHQ9MSk6Rz09PTQmJihRPW90LHV0PVB0LFN0PWd0LE90PWZ1bmN0aW9uKCl7cmV0dXJuIGRlfSxodD0yKSxycihVLHtuYW1lOlgsZnJvbVdpcmVUeXBlOmZ1bmN0aW9uKHl0KXtmb3IodmFyIHF0PWRlW3l0Pj4yXSxKdD1PdCgpLFRlLEplPXl0KzQsYm49MDtibjw9cXQ7Kytibil7dmFyIGNvPXl0KzQrYm4qRztpZihibj09cXR8fEp0W2NvPj5odF09PTApe3ZhciBGbz1jby1KZSxwcj1RKEplLEZvKTtUZT09PXZvaWQgMD9UZT1wcjooVGUrPSJcMCIsVGUrPXByKSxKZT1jbytHfX1yZXR1cm4gSyh5dCksVGV9LHRvV2lyZVR5cGU6ZnVuY3Rpb24oeXQscXQpe3R5cGVvZiBxdCE9InN0cmluZyImJkxlKCJDYW5ub3QgcGFzcyBub24tc3RyaW5nIHRvIEMrKyBzdHJpbmcgdHlwZSAiK1gpO3ZhciBKdD1TdChxdCksVGU9Vig0K0p0K0cpO3JldHVybiBkZVtUZT4+Ml09SnQ+Pmh0LHV0KHF0LFRlKzQsSnQrRykseXQhPT1udWxsJiZ5dC5wdXNoKEssVGUpLFRlfSxhcmdQYWNrQWR2YW5jZTo4LHJlYWRWYWx1ZUZyb21Qb2ludGVyOmZyLGRlc3RydWN0b3JGdW5jdGlvbjpmdW5jdGlvbih5dCl7Syh5dCl9fSl9ZnVuY3Rpb24gbWwoVSxHLFgsUSx1dCxPdCl7cm5bVV09e25hbWU6Qm4oRykscmF3Q29uc3RydWN0b3I6S28oWCxRKSxyYXdEZXN0cnVjdG9yOktvKHV0LE90KSxmaWVsZHM6W119fWZ1bmN0aW9uIGhsKFUsRyxYLFEsdXQsT3QsU3QsaHQseXQscXQpe3JuW1VdLmZpZWxkcy5wdXNoKHtmaWVsZE5hbWU6Qm4oRyksZ2V0dGVyUmV0dXJuVHlwZTpYLGdldHRlcjpLbyhRLHV0KSxnZXR0ZXJDb250ZXh0Ok90LHNldHRlckFyZ3VtZW50VHlwZTpTdCxzZXR0ZXI6S28oaHQseXQpLHNldHRlckNvbnRleHQ6cXR9KX1mdW5jdGlvbiBfbChVLEcpe0c9Qm4oRykscnIoVSx7aXNWb2lkOiEwLG5hbWU6RyxhcmdQYWNrQWR2YW5jZTowLGZyb21XaXJlVHlwZTpmdW5jdGlvbigpe30sdG9XaXJlVHlwZTpmdW5jdGlvbihYLFEpe319KX1mdW5jdGlvbiBucyhVKXtyZXR1cm4gVXx8TGUoIkNhbm5vdCB1c2UgZGVsZXRlZCB2YWwuIGhhbmRsZSA9ICIrVSksd29bVV0udmFsdWV9ZnVuY3Rpb24geWwoVSxHLFgpe1U9bnMoVSksRz1CcyhHLCJlbXZhbDo6YXMiKTt2YXIgUT1bXSx1dD1scihRKTtyZXR1cm4gcmVbWD4+Ml09dXQsRy50b1dpcmVUeXBlKFEsVSl9dmFyIGdsPXt9O2Z1bmN0aW9uIFVzKFUpe3ZhciBHPWdsW1VdO3JldHVybiBHPT09dm9pZCAwP0JuKFUpOkd9dmFyIFZjPVtdO2Z1bmN0aW9uIEFsKFUsRyxYLFEpe1U9VmNbVV0sRz1ucyhHKSxYPVVzKFgpLFUoRyxYLG51bGwsUSl9ZnVuY3Rpb24gZWYoKXtyZXR1cm4gdHlwZW9mIGdsb2JhbFRoaXM9PSJvYmplY3QiP2dsb2JhbFRoaXM6ZnVuY3Rpb24oKXtyZXR1cm4gRnVuY3Rpb259KCkoInJldHVybiB0aGlzIikoKX1mdW5jdGlvbiBibChVKXtyZXR1cm4gVT09PTA/bHIoZWYoKSk6KFU9VXMoVSksbHIoZWYoKVtVXSkpfWZ1bmN0aW9uIHdsKFUpe3ZhciBHPVZjLmxlbmd0aDtyZXR1cm4gVmMucHVzaChVKSxHfWZ1bmN0aW9uIFRsKFUsRyl7Zm9yKHZhciBYPW5ldyBBcnJheShVKSxRPTA7UTxVOysrUSlYW1FdPUJzKHJlWyhHPj4yKStRXSwicGFyYW1ldGVyICIrUSk7cmV0dXJuIFh9ZnVuY3Rpb24gT2woVSxHKXtmb3IodmFyIFg9VGwoVSxHKSxRPVhbMF0sdXQ9US5uYW1lKyJfJCIrWC5zbGljZSgxKS5tYXAoZnVuY3Rpb24oYm4pe3JldHVybiBibi5uYW1lfSkuam9pbigiXyIpKyIkIixPdD1bInJldFR5cGUiXSxTdD1bUV0saHQ9IiIseXQ9MDt5dDxVLTE7Kyt5dClodCs9KHl0IT09MD8iLCAiOiIiKSsiYXJnIit5dCxPdC5wdXNoKCJhcmdUeXBlIit5dCksU3QucHVzaChYWzEreXRdKTtmb3IodmFyIHF0PSRpKCJtZXRob2RDYWxsZXJfIit1dCksSnQ9InJldHVybiBmdW5jdGlvbiAiK3F0K2AoaGFuZGxlLCBuYW1lLCBkZXN0cnVjdG9ycywgYXJncykgewpgLFRlPTAseXQ9MDt5dDxVLTE7Kyt5dClKdCs9IiAgICB2YXIgYXJnIit5dCsiID0gYXJnVHlwZSIreXQrIi5yZWFkVmFsdWVGcm9tUG9pbnRlcihhcmdzIisoVGU/IisiK1RlOiIiKStgKTsKYCxUZSs9WFt5dCsxXS5hcmdQYWNrQWR2YW5jZTtKdCs9IiAgICB2YXIgcnYgPSBoYW5kbGVbbmFtZV0oIitodCtgKTsKYDtmb3IodmFyIHl0PTA7eXQ8VS0xOysreXQpWFt5dCsxXS5kZWxldGVPYmplY3QmJihKdCs9IiAgICBhcmdUeXBlIit5dCsiLmRlbGV0ZU9iamVjdChhcmciK3l0K2ApOwpgKTtRLmlzVm9pZHx8KEp0Kz1gICAgIHJldHVybiByZXRUeXBlLnRvV2lyZVR5cGUoZGVzdHJ1Y3RvcnMsIHJ2KTsKYCksSnQrPWB9OwpgLE90LnB1c2goSnQpO3ZhciBKZT1KYShGdW5jdGlvbixPdCkuYXBwbHkobnVsbCxTdCk7cmV0dXJuIHdsKEplKX1mdW5jdGlvbiBFbChVKXtyZXR1cm4gVT1VcyhVKSxscihuW1VdKX1mdW5jdGlvbiBSbChVLEcpe3JldHVybiBVPW5zKFUpLEc9bnMoRyksbHIoVVtHXSl9ZnVuY3Rpb24gU2woVSl7VT40JiYod29bVV0ucmVmY291bnQrPTEpfWZ1bmN0aW9uIHhsKFUpe2Zvcih2YXIgRz0iIixYPTA7WDxVOysrWClHKz0oWCE9PTA/IiwgIjoiIikrImFyZyIrWDtmb3IodmFyIFE9InJldHVybiBmdW5jdGlvbiBlbXZhbF9hbGxvY2F0b3JfIitVK2AoY29uc3RydWN0b3IsIGFyZ1R5cGVzLCBhcmdzKSB7CmAsWD0wO1g8VTsrK1gpUSs9InZhciBhcmdUeXBlIitYKyIgPSByZXF1aXJlUmVnaXN0ZXJlZFR5cGUoTW9kdWxlWydIRUFQMzInXVsoYXJnVHlwZXMgPj4+IDIpICsgIitYKyddLCAicGFyYW1ldGVyICcrWCtgIik7CnZhciBhcmdgK1grIiA9IGFyZ1R5cGUiK1grYC5yZWFkVmFsdWVGcm9tUG9pbnRlcihhcmdzKTsKYXJncyArPSBhcmdUeXBlYCtYK2BbJ2FyZ1BhY2tBZHZhbmNlJ107CmA7cmV0dXJuIFErPSJ2YXIgb2JqID0gbmV3IGNvbnN0cnVjdG9yKCIrRytgKTsKcmV0dXJuIF9fZW12YWxfcmVnaXN0ZXIob2JqKTsKfQpgLG5ldyBGdW5jdGlvbigicmVxdWlyZVJlZ2lzdGVyZWRUeXBlIiwiTW9kdWxlIiwiX19lbXZhbF9yZWdpc3RlciIsUSkoQnMsbixscil9dmFyIG5mPXt9O2Z1bmN0aW9uIENsKFUsRyxYLFEpe1U9bnMoVSk7dmFyIHV0PW5mW0ddO3JldHVybiB1dHx8KHV0PXhsKEcpLG5mW0ddPXV0KSx1dChVLFgsUSl9ZnVuY3Rpb24gUGwoVSl7cmV0dXJuIGxyKFVzKFUpKX1mdW5jdGlvbiBNbChVKXt2YXIgRz13b1tVXS52YWx1ZTtSbihHKSxHYyhVKX1mdW5jdGlvbiBObCgpe1dlKCl9ZnVuY3Rpb24gSWwoVSxHLFgpe3h0LmNvcHlXaXRoaW4oVSxHLEcrWCl9ZnVuY3Rpb24gdmwoVSl7dHJ5e3JldHVybiBBLmdyb3coVS1kdC5ieXRlTGVuZ3RoKzY1NTM1Pj4+MTYpLFF0KEEuYnVmZmVyKSwxfWNhdGNoe319ZnVuY3Rpb24gRmwoVSl7dmFyIEc9eHQubGVuZ3RoO1U9VT4+PjA7dmFyIFg9MjE0NzQ4MzY0ODtpZihVPlgpcmV0dXJuITE7Zm9yKHZhciBRPTE7UTw9NDtRKj0yKXt2YXIgdXQ9RyooMSsuMi9RKTt1dD1NYXRoLm1pbih1dCxVKzEwMDY2MzI5Nik7dmFyIE90PU1hdGgubWluKFgsUnQoTWF0aC5tYXgoVSx1dCksNjU1MzYpKSxTdD12bChPdCk7aWYoU3QpcmV0dXJuITB9cmV0dXJuITF9dmFyIGtzPXttYXBwaW5nczp7fSxidWZmZXJzOltudWxsLFtdLFtdXSxwcmludENoYXI6ZnVuY3Rpb24oVSxHKXt2YXIgWD1rcy5idWZmZXJzW1VdO0c9PT0wfHxHPT09MTA/KChVPT09MT9NOk4pKGooWCwwKSksWC5sZW5ndGg9MCk6WC5wdXNoKEcpfSx2YXJhcmdzOnZvaWQgMCxnZXQ6ZnVuY3Rpb24oKXtrcy52YXJhcmdzKz00O3ZhciBVPXJlW2tzLnZhcmFyZ3MtND4+Ml07cmV0dXJuIFV9LGdldFN0cjpmdW5jdGlvbihVKXt2YXIgRz1rKFUpO3JldHVybiBHfSxnZXQ2NDpmdW5jdGlvbihVLEcpe3JldHVybiBVfX07ZnVuY3Rpb24gTGwoVSl7cmV0dXJuIDB9ZnVuY3Rpb24gRGwoVSxHLFgsUSx1dCl7fWZ1bmN0aW9uIEJsKFUsRyxYLFEpe2Zvcih2YXIgdXQ9MCxPdD0wO090PFg7T3QrKyl7Zm9yKHZhciBTdD1yZVtHK090Kjg+PjJdLGh0PXJlW0crKE90KjgrNCk+PjJdLHl0PTA7eXQ8aHQ7eXQrKylrcy5wcmludENoYXIoVSx4dFtTdCt5dF0pO3V0Kz1odH1yZXR1cm4gcmVbUT4+Ml09dXQsMH1mdW5jdGlvbiBVbChVKXtJKFV8MCl9RnM9bi5JbnRlcm5hbEVycm9yPVppKEVycm9yLCJJbnRlcm5hbEVycm9yIiksTmMoKSxUaT1uLkJpbmRpbmdFcnJvcj1aaShFcnJvciwiQmluZGluZ0Vycm9yIiksTXUoKSxxdSgpLFZ1KCksWmE9bi5VbmJvdW5kVHlwZUVycm9yPVppKEVycm9yLCJVbmJvdW5kVHlwZUVycm9yIiksZWwoKTt2YXIga2w9e3Q6aG8sSTpUdSx4Oll1LHc6JHUsZDpadSxrOlF1LEg6bmwsbjpybCxhOmlsLEE6Y2wsaTphbCxqOnVsLGg6bGwsQjpwbCx2OmRsLHU6bWwsYzpobCxKOl9sLG06eWwsczpBbCxiOkdjLHk6YmwscDpPbCxyOkVsLGU6UmwsZzpTbCxxOkNsLGY6UGwsbDpNbCxvOk5sLEU6SWwsRjpGbCxHOkxsLEM6RGwsejpCbCxEOlVsfSxvZj1YbigpLHhlPW4uX19fd2FzbV9jYWxsX2N0b3JzPWZ1bmN0aW9uKCl7cmV0dXJuKHhlPW4uX19fd2FzbV9jYWxsX2N0b3JzPW4uYXNtLkwpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sVj1uLl9tYWxsb2M9ZnVuY3Rpb24oKXtyZXR1cm4oVj1uLl9tYWxsb2M9bi5hc20uTSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfSxLPW4uX2ZyZWU9ZnVuY3Rpb24oKXtyZXR1cm4oSz1uLl9mcmVlPW4uYXNtLk4pLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sdHQ9bi5fX19nZXRUeXBlTmFtZT1mdW5jdGlvbigpe3JldHVybih0dD1uLl9fX2dldFR5cGVOYW1lPW4uYXNtLlApLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sTXQ9bi5fX19lbWJpbmRfcmVnaXN0ZXJfbmF0aXZlX2FuZF9idWlsdGluX3R5cGVzPWZ1bmN0aW9uKCl7cmV0dXJuKE10PW4uX19fZW1iaW5kX3JlZ2lzdGVyX25hdGl2ZV9hbmRfYnVpbHRpbl90eXBlcz1uLmFzbS5RKS5hcHBseShudWxsLGFyZ3VtZW50cyl9LHVlPW4uZHluQ2FsbF9qaWppPWZ1bmN0aW9uKCl7cmV0dXJuKHVlPW4uZHluQ2FsbF9qaWppPW4uYXNtLlIpLmFwcGx5KG51bGwsYXJndW1lbnRzKX0sd2U7ZnVuY3Rpb24gRWkoVSl7dGhpcy5uYW1lPSJFeGl0U3RhdHVzIix0aGlzLm1lc3NhZ2U9IlByb2dyYW0gdGVybWluYXRlZCB3aXRoIGV4aXQoIitVKyIpIix0aGlzLnN0YXR1cz1VfXFuPWZ1bmN0aW9uIFUoKXt3ZXx8emMoKSx3ZXx8KHFuPVUpfTtmdW5jdGlvbiB6YyhVKXtpZihVPVV8fGYsbW4+MHx8KHBuKCksbW4+MCkpcmV0dXJuO2Z1bmN0aW9uIEcoKXt3ZXx8KHdlPSEwLG4uY2FsbGVkUnVuPSEwLCFTJiYoRW4oKSxvZSgpLG8obiksbi5vblJ1bnRpbWVJbml0aWFsaXplZCYmbi5vblJ1bnRpbWVJbml0aWFsaXplZCgpLFl0KCkpKX1uLnNldFN0YXR1cz8obi5zZXRTdGF0dXMoIlJ1bm5pbmcuLi4iKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe24uc2V0U3RhdHVzKCIiKX0sMSksRygpfSwxKSk6RygpfWlmKG4ucnVuPXpjLG4ucHJlSW5pdClmb3IodHlwZW9mIG4ucHJlSW5pdD09ImZ1bmN0aW9uIiYmKG4ucHJlSW5pdD1bbi5wcmVJbml0XSk7bi5wcmVJbml0Lmxlbmd0aD4wOyluLnByZUluaXQucG9wKCkoKTtyZXR1cm4gemMoKSxlLnJlYWR5fX0oKTt0eXBlb2YgYm09PSJvYmplY3QiJiZ0eXBlb2YgdTE9PSJvYmplY3QiP3UxLmV4cG9ydHM9ZjE6dHlwZW9mIGRlZmluZT09ImZ1bmN0aW9uIiYmZGVmaW5lLmFtZD9kZWZpbmUoW10sZnVuY3Rpb24oKXtyZXR1cm4gZjF9KTp0eXBlb2YgYm09PSJvYmplY3QiJiYoYm0uQkFTSVM9ZjEpfSk7dmFyIGwxPXt9O2xlKGwxLHtkZWZhdWx0OigpPT5KOH0pO2Z1bmN0aW9uIFg4KHQsZSl7eS50eXBlT2Yub2JqZWN0KCJ0cmFuc2NvZGVyTW9kdWxlIix3dSk7bGV0IG49dC5rdHgyQnVmZmVyLG89dC5zdXBwb3J0ZWRUYXJnZXRGb3JtYXRzLHI7dHJ5e3I9dHgobil9Y2F0Y2h7dGhyb3cgbmV3IEFlKCJJbnZhbGlkIEtUWDIgZmlsZS4iKX1pZihyLmxheWVyQ291bnQhPT0wKXRocm93IG5ldyBBZSgiS1RYMiB0ZXh0dXJlIGFycmF5cyBhcmUgbm90IHN1cHBvcnRlZC4iKTtpZihyLnBpeGVsRGVwdGghPT0wKXRocm93IG5ldyBBZSgiS1RYMiAzRCB0ZXh0dXJlcyBhcmUgdW5zdXBwb3J0ZWQuIik7bGV0IGk9ci5kYXRhRm9ybWF0RGVzY3JpcHRvclswXSxzPW5ldyBBcnJheShyLmxldmVsQ291bnQpO3JldHVybiByLnZrRm9ybWF0PT09MCYmKGkuY29sb3JNb2RlbD09PWl4fHxpLmNvbG9yTW9kZWw9PT1zeCk/JDgobixyLG8sd3UsZSxzKTooZS5wdXNoKG4uYnVmZmVyKSxZOChyLHMpKSxzfWZ1bmN0aW9uIFk4KHQsZSl7bGV0IG49dC52a0Zvcm1hdD09PWJ1LlZLX0ZPUk1BVF9SOEc4QjhfU1JHQj9Hbi5SR0I6R24uUkdCQSxvO3QudmtGb3JtYXQ9PT1idS5WS19GT1JNQVRfUjhHOEI4QThfVU5PUk0/bz1pby5VTlNJR05FRF9CWVRFOnQudmtGb3JtYXQ9PT1idS5WS19GT1JNQVRfUjE2RzE2QjE2QTE2X1NGTE9BVD9vPWlvLkhBTEZfRkxPQVQ6dC52a0Zvcm1hdD09PWJ1LlZLX0ZPUk1BVF9SMzJHMzJCMzJBMzJfU0ZMT0FUJiYobz1pby5GTE9BVCk7Zm9yKGxldCByPTA7cjx0LmxldmVscy5sZW5ndGg7KytyKXtsZXQgaT17fTtlW3JdPWk7bGV0IHM9dC5sZXZlbHNbcl0ubGV2ZWxEYXRhLGY9dC5waXhlbFdpZHRoPj5yLHU9dC5waXhlbEhlaWdodD4+cixjPWYqdSpHbi5jb21wb25lbnRzTGVuZ3RoKG4pO2ZvcihsZXQgbD0wO2w8dC5mYWNlQ291bnQ7KytsKXtsZXQgcD1zLmJ5dGVPZmZzZXQrYyp0LnR5cGVTaXplKmwsZDshbShvKXx8aW8uc2l6ZUluQnl0ZXMobyk9PT0xP2Q9bmV3IFVpbnQ4QXJyYXkocy5idWZmZXIscCxjKTppby5zaXplSW5CeXRlcyhvKT09PTI/ZD1uZXcgVWludDE2QXJyYXkocy5idWZmZXIscCxjKTpkPW5ldyBGbG9hdDMyQXJyYXkocy5idWZmZXIscCxjKSxpW3J4W2xdXT17aW50ZXJuYWxGb3JtYXQ6bixkYXRhdHlwZTpvLHdpZHRoOmYsaGVpZ2h0OnUsbGV2ZWxCdWZmZXI6ZH19fX1mdW5jdGlvbiAkOCh0LGUsbixvLHIsaSl7bGV0IHM9bmV3IG8uS1RYMkZpbGUodCksZj1zLmdldFdpZHRoKCksdT1zLmdldEhlaWdodCgpLGM9cy5nZXRMZXZlbHMoKSxsPXMuZ2V0SGFzQWxwaGEoKTtpZighKGY+MCl8fCEodT4wKXx8IShjPjApKXRocm93IHMuY2xvc2UoKSxzLmRlbGV0ZSgpLG5ldyBBZSgiSW52YWxpZCBLVFgyIGZpbGUiKTtsZXQgcCxkLGg9ZS5kYXRhRm9ybWF0RGVzY3JpcHRvclswXSxfPW8udHJhbnNjb2Rlcl90ZXh0dXJlX2Zvcm1hdDtpZihoLmNvbG9yTW9kZWw9PT1peClpZihuLmV0YylwPWw/R24uUkdCQThfRVRDMl9FQUM6R24uUkdCOF9FVEMyLGQ9bD9fLmNURkVUQzJfUkdCQTpfLmNURkVUQzFfUkdCO2Vsc2UgaWYobi5ldGMxJiYhbClwPUduLlJHQl9FVEMxLGQ9Xy5jVEZFVEMxX1JHQjtlbHNlIGlmKG4uczN0YylwPWw/R24uUkdCQV9EWFQ1OkduLlJHQl9EWFQxLGQ9bD9fLmNURkJDM19SR0JBOl8uY1RGQkMxX1JHQjtlbHNlIGlmKG4ucHZydGMpcD1sP0duLlJHQkFfUFZSVENfNEJQUFYxOkduLlJHQl9QVlJUQ180QlBQVjEsZD1sP18uY1RGUFZSVEMxXzRfUkdCQTpfLmNURlBWUlRDMV80X1JHQjtlbHNlIGlmKG4uYXN0YylwPUduLlJHQkFfQVNUQyxkPV8uY1RGQVNUQ180eDRfUkdCQTtlbHNlIGlmKG4uYmM3KXA9R24uUkdCQV9CQzcsZD1fLmNURkJDN19SR0JBO2Vsc2UgdGhyb3cgbmV3IEFlKCJObyB0cmFuc2NvZGluZyBmb3JtYXQgdGFyZ2V0IGF2YWlsYWJsZSBmb3IgRVRDMVMgY29tcHJlc3NlZCBrdHgyLiIpO2Vsc2UgaWYoaC5jb2xvck1vZGVsPT09c3gpaWYobi5hc3RjKXA9R24uUkdCQV9BU1RDLGQ9Xy5jVEZBU1RDXzR4NF9SR0JBO2Vsc2UgaWYobi5iYzcpcD1Hbi5SR0JBX0JDNyxkPV8uY1RGQkM3X1JHQkE7ZWxzZSBpZihuLnMzdGMpcD1sP0duLlJHQkFfRFhUNTpHbi5SR0JfRFhUMSxkPWw/Xy5jVEZCQzNfUkdCQTpfLmNURkJDMV9SR0I7ZWxzZSBpZihuLmV0YylwPWw/R24uUkdCQThfRVRDMl9FQUM6R24uUkdCOF9FVEMyLGQ9bD9fLmNURkVUQzJfUkdCQTpfLmNURkVUQzFfUkdCO2Vsc2UgaWYobi5ldGMxJiYhbClwPUduLlJHQl9FVEMxLGQ9Xy5jVEZFVEMxX1JHQjtlbHNlIGlmKG4ucHZydGMpcD1sP0duLlJHQkFfUFZSVENfNEJQUFYxOkduLlJHQl9QVlJUQ180QlBQVjEsZD1sP18uY1RGUFZSVEMxXzRfUkdCQTpfLmNURlBWUlRDMV80X1JHQjtlbHNlIHRocm93IG5ldyBBZSgiTm8gdHJhbnNjb2RpbmcgZm9ybWF0IHRhcmdldCBhdmFpbGFibGUgZm9yIFVBU1RDIGNvbXByZXNzZWQga3R4Mi4iKTtpZighcy5zdGFydFRyYW5zY29kaW5nKCkpdGhyb3cgcy5jbG9zZSgpLHMuZGVsZXRlKCksbmV3IEFlKCJzdGFydFRyYW5zY29kaW5nKCkgZmFpbGVkIik7Zm9yKGxldCBnPTA7ZzxlLmxldmVscy5sZW5ndGg7KytnKXtsZXQgYj17fTtpW2ddPWIsZj1lLnBpeGVsV2lkdGg+PmcsdT1lLnBpeGVsSGVpZ2h0Pj5nO2xldCB3PXMuZ2V0SW1hZ2VUcmFuc2NvZGVkU2l6ZUluQnl0ZXMoZywwLDAsZC52YWx1ZSksTz1uZXcgVWludDhBcnJheSh3KSxFPXMudHJhbnNjb2RlSW1hZ2UoTyxnLDAsMCxkLnZhbHVlLDAsLTEsLTEpO2lmKCFtKEUpKXRocm93IG5ldyBBZSgidHJhbnNjb2RlSW1hZ2UoKSBmYWlsZWQuIik7ci5wdXNoKE8uYnVmZmVyKSxiW3J4WzBdXT17aW50ZXJuYWxGb3JtYXQ6cCx3aWR0aDpmLGhlaWdodDp1LGxldmVsQnVmZmVyOk99fXJldHVybiBzLmNsb3NlKCkscy5kZWxldGUoKSxpfWFzeW5jIGZ1bmN0aW9uIFo4KHQsZSl7bGV0IG49dC53ZWJBc3NlbWJseUNvbmZpZyxvPW94LmRlZmF1bHQ/P3NlbGYuQkFTSVM7cmV0dXJuIG0obi53YXNtQmluYXJ5RmlsZSk/d3U9YXdhaXQgbyhuKTp3dT1hd2FpdCBvKCksd3UuaW5pdGlhbGl6ZUJhc2lzKCksITB9ZnVuY3Rpb24gUTgodCxlKXtsZXQgbj10LndlYkFzc2VtYmx5Q29uZmlnO3JldHVybiBtKG4pP1o4KHQsZSk6WDgodCxlKX12YXIgb3gscngsaXgsc3gsd3UsSjgscDE9JCgoKT0+e2Z0KCk7V3QoKTtaUygpO3RpKCk7UVMoKTthMSgpO1puKCk7ZXgoKTtveD1tcihueCgpLDEpLHJ4PVsicG9zaXRpdmVYIiwibmVnYXRpdmVYIiwicG9zaXRpdmVZIiwibmVnYXRpdmVZIiwicG9zaXRpdmVaIiwibmVnYXRpdmVaIl0saXg9MTYzLHN4PTE2NjtKOD1VZShROCl9KTt2YXIgY3g9e307dmFyIGQxPSQoKCk9PntzZWxmLm9ubWVzc2FnZT1mdW5jdGlvbih0KXtsZXQgZT10LmRhdGEuYXJyYXksbj1zZWxmLndlYmtpdFBvc3RNZXNzYWdlfHxzZWxmLnBvc3RNZXNzYWdlO3RyeXtuKHthcnJheTplfSxbZS5idWZmZXJdKX1jYXRjaHtuKHt9KX19fSk7dmFyIHdtLFRtLGF4PSQoKCk9PntrZSgpO0R0KCk7V3QoKTtmdCgpO0h0KCk7d209e307d20uY2xpcFRyaWFuZ2xlQXRBeGlzQWxpZ25lZFRocmVzaG9sZD1mdW5jdGlvbih0LGUsbixvLHIsaSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoInRocmVzaG9sZCBpcyByZXF1aXJlZC4iKTtpZighbShlKSl0aHJvdyBuZXcgRCgia2VlcEFib3ZlIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG4pKXRocm93IG5ldyBEKCJ1MCBpcyByZXF1aXJlZC4iKTtpZighbShvKSl0aHJvdyBuZXcgRCgidTEgaXMgcmVxdWlyZWQuIik7aWYoIW0ocikpdGhyb3cgbmV3IEQoInUyIGlzIHJlcXVpcmVkLiIpO20oaSk/aS5sZW5ndGg9MDppPVtdO2xldCBzLGYsdTtlPyhzPW48dCxmPW88dCx1PXI8dCk6KHM9bj50LGY9bz50LHU9cj50KTtsZXQgYz1zK2YrdSxsLHAsZCxoLF8sZztyZXR1cm4gYz09PTE/cz8obD0odC1uKS8oby1uKSxwPSh0LW4pLyhyLW4pLGkucHVzaCgxKSxpLnB1c2goMikscCE9PTEmJihpLnB1c2goLTEpLGkucHVzaCgwKSxpLnB1c2goMiksaS5wdXNoKHApKSxsIT09MSYmKGkucHVzaCgtMSksaS5wdXNoKDApLGkucHVzaCgxKSxpLnB1c2gobCkpKTpmPyhkPSh0LW8pLyhyLW8pLGg9KHQtbykvKG4tbyksaS5wdXNoKDIpLGkucHVzaCgwKSxoIT09MSYmKGkucHVzaCgtMSksaS5wdXNoKDEpLGkucHVzaCgwKSxpLnB1c2goaCkpLGQhPT0xJiYoaS5wdXNoKC0xKSxpLnB1c2goMSksaS5wdXNoKDIpLGkucHVzaChkKSkpOnUmJihfPSh0LXIpLyhuLXIpLGc9KHQtcikvKG8tciksaS5wdXNoKDApLGkucHVzaCgxKSxnIT09MSYmKGkucHVzaCgtMSksaS5wdXNoKDIpLGkucHVzaCgxKSxpLnB1c2goZykpLF8hPT0xJiYoaS5wdXNoKC0xKSxpLnB1c2goMiksaS5wdXNoKDApLGkucHVzaChfKSkpOmM9PT0yPyFzJiZuIT09dD8oaD0odC1vKS8obi1vKSxfPSh0LXIpLyhuLXIpLGkucHVzaCgwKSxpLnB1c2goLTEpLGkucHVzaCgxKSxpLnB1c2goMCksaS5wdXNoKGgpLGkucHVzaCgtMSksaS5wdXNoKDIpLGkucHVzaCgwKSxpLnB1c2goXykpOiFmJiZvIT09dD8oZz0odC1yKS8oby1yKSxsPSh0LW4pLyhvLW4pLGkucHVzaCgxKSxpLnB1c2goLTEpLGkucHVzaCgyKSxpLnB1c2goMSksaS5wdXNoKGcpLGkucHVzaCgtMSksaS5wdXNoKDApLGkucHVzaCgxKSxpLnB1c2gobCkpOiF1JiZyIT09dCYmKHA9KHQtbikvKHItbiksZD0odC1vKS8oci1vKSxpLnB1c2goMiksaS5wdXNoKC0xKSxpLnB1c2goMCksaS5wdXNoKDIpLGkucHVzaChwKSxpLnB1c2goLTEpLGkucHVzaCgxKSxpLnB1c2goMiksaS5wdXNoKGQpKTpjIT09MyYmKGkucHVzaCgwKSxpLnB1c2goMSksaS5wdXNoKDIpKSxpfTt3bS5jb21wdXRlQmFyeWNlbnRyaWNDb29yZGluYXRlcz1mdW5jdGlvbih0LGUsbixvLHIsaSxzLGYsdSl7aWYoIW0odCkpdGhyb3cgbmV3IEQoInggaXMgcmVxdWlyZWQuIik7aWYoIW0oZSkpdGhyb3cgbmV3IEQoInkgaXMgcmVxdWlyZWQuIik7aWYoIW0obikpdGhyb3cgbmV3IEQoIngxIGlzIHJlcXVpcmVkLiIpO2lmKCFtKG8pKXRocm93IG5ldyBEKCJ5MSBpcyByZXF1aXJlZC4iKTtpZighbShyKSl0aHJvdyBuZXcgRCgieDIgaXMgcmVxdWlyZWQuIik7aWYoIW0oaSkpdGhyb3cgbmV3IEQoInkyIGlzIHJlcXVpcmVkLiIpO2lmKCFtKHMpKXRocm93IG5ldyBEKCJ4MyBpcyByZXF1aXJlZC4iKTtpZighbShmKSl0aHJvdyBuZXcgRCgieTMgaXMgcmVxdWlyZWQuIik7bGV0IGM9bi1zLGw9cy1yLHA9aS1mLGQ9by1mLGg9MS8ocCpjK2wqZCksXz1lLWYsZz10LXMsYj0ocCpnK2wqXykqaCx3PSgtZCpnK2MqXykqaCxPPTEtYi13O3JldHVybiBtKHUpPyh1Lng9Yix1Lnk9dyx1Lno9Tyx1KTpuZXcgYShiLHcsTyl9O3dtLmNvbXB1dGVMaW5lU2VnbWVudExpbmVTZWdtZW50SW50ZXJzZWN0aW9uPWZ1bmN0aW9uKHQsZSxuLG8scixpLHMsZix1KXt5LnR5cGVPZi5udW1iZXIoIngwMCIsdCkseS50eXBlT2YubnVtYmVyKCJ5MDAiLGUpLHkudHlwZU9mLm51bWJlcigieDAxIixuKSx5LnR5cGVPZi5udW1iZXIoInkwMSIsbykseS50eXBlT2YubnVtYmVyKCJ4MTAiLHIpLHkudHlwZU9mLm51bWJlcigieTEwIixpKSx5LnR5cGVPZi5udW1iZXIoIngxMSIscykseS50eXBlT2YubnVtYmVyKCJ5MTEiLGYpO2xldCBjPShzLXIpKihlLWkpLShmLWkpKih0LXIpLGw9KG4tdCkqKGUtaSktKG8tZSkqKHQtcikscD0oZi1pKSoobi10KS0ocy1yKSooby1lKTtpZihwPT09MClyZXR1cm47bGV0IGQ9Yy9wLGg9bC9wO2lmKGQ+PTAmJmQ8PTEmJmg+PTAmJmg8PTEpcmV0dXJuIG0odSl8fCh1PW5ldyBKKSx1Lng9dCtkKihuLXQpLHUueT1lK2QqKG8tZSksdX07VG09d219KTt2YXIgbTE9e307bGUobTEse2RlZmF1bHQ6KCk9PmhrfSk7ZnVuY3Rpb24gcGsodCxlKXtsZXQgbj10LmlzRWFzdENoaWxkLG89dC5pc05vcnRoQ2hpbGQscj1uP1pyOjAsaT1uP2puOlpyLHM9bz9acjowLGY9bz9qbjpacix1PW5rLGM9b2ssbD1yayxwPXNrO3UubGVuZ3RoPTAsYy5sZW5ndGg9MCxsLmxlbmd0aD0wLHAubGVuZ3RoPTA7bGV0IGQ9aWs7ZC5sZW5ndGg9MDtsZXQgaD17fSxfPXQudmVydGljZXMsZz10LmluZGljZXM7Zz1nLnN1YmFycmF5KDAsdC5pbmRleENvdW50V2l0aG91dFNraXJ0cyk7bGV0IGI9TXMuY2xvbmUodC5lbmNvZGluZyksdz1iLmhhc1ZlcnRleE5vcm1hbHMsTz0wLEU9dC52ZXJ0ZXhDb3VudFdpdGhvdXRTa2lydHMsVD10Lm1pbmltdW1IZWlnaHQseD10Lm1heGltdW1IZWlnaHQsTT1uZXcgQXJyYXkoRSksTj1uZXcgQXJyYXkoRSksRj1uZXcgQXJyYXkoRSksST13P25ldyBBcnJheShFKjIpOnZvaWQgMCx2PTIwLEIsQSxTLEMsTDtmb3IoQT0wLFM9MDtBPEU7KytBLFMrPTIpe2xldCBWZT1iLmRlY29kZVRleHR1cmVDb29yZGluYXRlcyhfLEEsdWspO2lmKEI9Yi5kZWNvZGVIZWlnaHQoXyxBKSxDPVAuY2xhbXAoVmUueCpqbnwwLDAsam4pLEw9UC5jbGFtcChWZS55KmpufDAsMCxqbiksRltBXT1QLmNsYW1wKChCLVQpLyh4LVQpKmpufDAsMCxqbiksQzx2JiYoQz0wKSxMPHYmJihMPTApLGpuLUM8diYmKEM9am4pLGpuLUw8diYmKEw9am4pLE1bQV09QyxOW0FdPUwsdyl7bGV0IGJlPWIuZ2V0T2N0RW5jb2RlZE5vcm1hbChfLEEsbGspO0lbU109YmUueCxJW1MrMV09YmUueX0obiYmQz49WnJ8fCFuJiZDPD1acikmJihvJiZMPj1acnx8IW8mJkw8PVpyKSYmKGhbQV09Tyx1LnB1c2goQyksYy5wdXNoKEwpLGwucHVzaChGW0FdKSx3JiYocC5wdXNoKElbU10pLHAucHVzaChJW1MrMV0pKSwrK08pfWxldCB6PVtdO3oucHVzaChuZXcgSG4pLHoucHVzaChuZXcgSG4pLHoucHVzaChuZXcgSG4pO2xldCBqPVtdO2oucHVzaChuZXcgSG4pLGoucHVzaChuZXcgSG4pLGoucHVzaChuZXcgSG4pO2xldCBrLHE7Zm9yKEE9MDtBPGcubGVuZ3RoO0ErPTMpe2xldCBWZT1nW0FdLGJlPWdbQSsxXSxsbj1nW0ErMl0scG49TVtWZV0sRW49TVtiZV0sb2U9TVtsbl07elswXS5pbml0aWFsaXplSW5kZXhlZChNLE4sRixJLFZlKSx6WzFdLmluaXRpYWxpemVJbmRleGVkKE0sTixGLEksYmUpLHpbMl0uaW5pdGlhbGl6ZUluZGV4ZWQoTSxOLEYsSSxsbik7bGV0IFl0PVRtLmNsaXBUcmlhbmdsZUF0QXhpc0FsaWduZWRUaHJlc2hvbGQoWnIsbixwbixFbixvZSx0ayk7az0wLCEoaz49WXQubGVuZ3RoKSYmKGs9alswXS5pbml0aWFsaXplRnJvbUNsaXBSZXN1bHQoWXQsayx6KSwhKGs+PVl0Lmxlbmd0aCkmJihrPWpbMV0uaW5pdGlhbGl6ZUZyb21DbGlwUmVzdWx0KFl0LGsseiksIShrPj1ZdC5sZW5ndGgpJiYoaz1qWzJdLmluaXRpYWxpemVGcm9tQ2xpcFJlc3VsdChZdCxrLHopLHE9VG0uY2xpcFRyaWFuZ2xlQXRBeGlzQWxpZ25lZFRocmVzaG9sZChacixvLGpbMF0uZ2V0VigpLGpbMV0uZ2V0VigpLGpbMl0uZ2V0VigpLGZ4KSx1eCh1LGMsbCxwLGQsaCxxLGosdyksazxZdC5sZW5ndGgmJihqWzJdLmNsb25lKGpbMV0pLGpbMl0uaW5pdGlhbGl6ZUZyb21DbGlwUmVzdWx0KFl0LGsseikscT1UbS5jbGlwVHJpYW5nbGVBdEF4aXNBbGlnbmVkVGhyZXNob2xkKFpyLG8salswXS5nZXRWKCksalsxXS5nZXRWKCksalsyXS5nZXRWKCksZngpLHV4KHUsYyxsLHAsZCxoLHEsaix3KSkpKSl9bGV0IFc9bj8tam46MCxSPW8/LWpuOjAsbnQ9W10sYXQ9W10sbHQ9W10sX3Q9W10sb3Q9TnVtYmVyLk1BWF9WQUxVRSxQdD0tb3QsZ3Q9ZWs7Z3QubGVuZ3RoPTA7bGV0IFJ0PVkuY2xvbmUodC5lbGxpcHNvaWQpLGR0PU50LmNsb25lKHQuY2hpbGRSZWN0YW5nbGUpLHJ0PWR0Lm5vcnRoLHh0PWR0LnNvdXRoLEd0PWR0LmVhc3QscGU9ZHQud2VzdDtmb3IoR3Q8cGUmJihHdCs9UC5UV09fUEkpLEE9MDtBPHUubGVuZ3RoOysrQSlDPU1hdGgucm91bmQodVtBXSksQzw9cj8obnQucHVzaChBKSxDPTApOkM+PWk/KGx0LnB1c2goQSksQz1qbik6Qz1DKjIrVyx1W0FdPUMsTD1NYXRoLnJvdW5kKGNbQV0pLEw8PXM/KGF0LnB1c2goQSksTD0wKTpMPj1mPyhfdC5wdXNoKEEpLEw9am4pOkw9TCoyK1IsY1tBXT1MLEI9UC5sZXJwKFQseCxsW0FdL2puKSxCPG90JiYob3Q9QiksQj5QdCYmKFB0PUIpLGxbQV09QixPbS5sb25naXR1ZGU9UC5sZXJwKHBlLEd0LEMvam4pLE9tLmxhdGl0dWRlPVAubGVycCh4dCxydCxML2puKSxPbS5oZWlnaHQ9QixSdC5jYXJ0b2dyYXBoaWNUb0NhcnRlc2lhbihPbSxZaSksZ3QucHVzaChZaS54KSxndC5wdXNoKFlpLnkpLGd0LnB1c2goWWkueik7bGV0IHJlPUF0LmZyb21WZXJ0aWNlcyhndCxhLlpFUk8sMyxhayksZGU9Q28uZnJvbVJlY3RhbmdsZShkdCxvdCxQdCxSdCxmayksWnQ9bmV3IFBzKFJ0KS5jb21wdXRlSG9yaXpvbkN1bGxpbmdQb2ludEZyb21WZXJ0aWNlc1Bvc3NpYmx5VW5kZXJFbGxpcHNvaWQocmUuY2VudGVyLGd0LDMscmUuY2VudGVyLG90LGNrKSxRdD1QdC1vdCxOZT1uZXcgVWludDE2QXJyYXkodS5sZW5ndGgrYy5sZW5ndGgrbC5sZW5ndGgpO2ZvcihBPTA7QTx1Lmxlbmd0aDsrK0EpTmVbQV09dVtBXTtsZXQgZ2U9dS5sZW5ndGg7Zm9yKEE9MDtBPGMubGVuZ3RoOysrQSlOZVtnZStBXT1jW0FdO2ZvcihnZSs9Yy5sZW5ndGgsQT0wO0E8bC5sZW5ndGg7KytBKU5lW2dlK0FdPWpuKihsW0FdLW90KS9RdDtsZXQgRWU9THQuY3JlYXRlVHlwZWRBcnJheSh1Lmxlbmd0aCxkKSx1bjtpZih3KXtsZXQgVmU9bmV3IFVpbnQ4QXJyYXkocCk7ZS5wdXNoKE5lLmJ1ZmZlcixFZS5idWZmZXIsVmUuYnVmZmVyKSx1bj1WZS5idWZmZXJ9ZWxzZSBlLnB1c2goTmUuYnVmZmVyLEVlLmJ1ZmZlcik7cmV0dXJue3ZlcnRpY2VzOk5lLmJ1ZmZlcixlbmNvZGVkTm9ybWFsczp1bixpbmRpY2VzOkVlLmJ1ZmZlcixtaW5pbXVtSGVpZ2h0Om90LG1heGltdW1IZWlnaHQ6UHQsd2VzdEluZGljZXM6bnQsc291dGhJbmRpY2VzOmF0LGVhc3RJbmRpY2VzOmx0LG5vcnRoSW5kaWNlczpfdCxib3VuZGluZ1NwaGVyZTpyZSxvcmllbnRlZEJvdW5kaW5nQm94OmRlLGhvcml6b25PY2NsdXNpb25Qb2ludDpadH19ZnVuY3Rpb24gSG4oKXt0aGlzLnZlcnRleEJ1ZmZlcj12b2lkIDAsdGhpcy5pbmRleD12b2lkIDAsdGhpcy5maXJzdD12b2lkIDAsdGhpcy5zZWNvbmQ9dm9pZCAwLHRoaXMucmF0aW89dm9pZCAwfWZ1bmN0aW9uIGx4KHQsZSl7KytFbTtsZXQgbj1ka1tFbV0sbz1ta1tFbV07cmV0dXJuIG49bm4ub2N0RGVjb2RlKHQuZmlyc3QuZ2V0Tm9ybWFsWCgpLHQuZmlyc3QuZ2V0Tm9ybWFsWSgpLG4pLG89bm4ub2N0RGVjb2RlKHQuc2Vjb25kLmdldE5vcm1hbFgoKSx0LnNlY29uZC5nZXROb3JtYWxZKCksbyksWWk9YS5sZXJwKG4sbyx0LnJhdGlvLFlpKSxhLm5vcm1hbGl6ZShZaSxZaSksbm4ub2N0RW5jb2RlKFlpLGUpLC0tRW0sZX1mdW5jdGlvbiB1eCh0LGUsbixvLHIsaSxzLGYsdSl7aWYocy5sZW5ndGg9PT0wKXJldHVybjtsZXQgYz0wLGw9MDtmb3IoO2w8cy5sZW5ndGg7KWw9am9bYysrXS5pbml0aWFsaXplRnJvbUNsaXBSZXN1bHQocyxsLGYpO2ZvcihsZXQgcD0wO3A8YzsrK3Ape2xldCBkPWpvW3BdO2lmKGQuaXNJbmRleGVkKCkpZC5uZXdJbmRleD1pW2QuaW5kZXhdLGQudUJ1ZmZlcj10LGQudkJ1ZmZlcj1lLGQuaGVpZ2h0QnVmZmVyPW4sdSYmKGQubm9ybWFsQnVmZmVyPW8pO2Vsc2V7bGV0IGg9ZC5nZXRLZXkoKTtpZihtKGlbaF0pKWQubmV3SW5kZXg9aVtoXTtlbHNle2xldCBfPXQubGVuZ3RoO3QucHVzaChkLmdldFUoKSksZS5wdXNoKGQuZ2V0VigpKSxuLnB1c2goZC5nZXRIKCkpLHUmJihvLnB1c2goZC5nZXROb3JtYWxYKCkpLG8ucHVzaChkLmdldE5vcm1hbFkoKSkpLGQubmV3SW5kZXg9XyxpW2hdPV99fX1jPT09Mz8oci5wdXNoKGpvWzBdLm5ld0luZGV4KSxyLnB1c2goam9bMV0ubmV3SW5kZXgpLHIucHVzaChqb1syXS5uZXdJbmRleCkpOmM9PT00JiYoci5wdXNoKGpvWzBdLm5ld0luZGV4KSxyLnB1c2goam9bMV0ubmV3SW5kZXgpLHIucHVzaChqb1syXS5uZXdJbmRleCksci5wdXNoKGpvWzBdLm5ld0luZGV4KSxyLnB1c2goam9bMl0ubmV3SW5kZXgpLHIucHVzaChqb1szXS5uZXdJbmRleCkpfXZhciBqbixacix0ayxmeCxlayxPbSxZaSxuayxvayxyayxpayxzayxjayxhayxmayx1ayxsayxIYSxFbSxkayxtayxqbyxoayxoMT0kKCgpPT57ZnMoKTt2ZSgpO2tlKCk7RHQoKTtJZSgpO2Z0KCk7JHQoKTtjdSgpO1plKCk7YXgoKTtLdCgpO2RhKCk7VG4oKTthdSgpO1puKCk7am49MzI3NjcsWnI9am4vMnwwLHRrPVtdLGZ4PVtdLGVrPVtdLE9tPW5ldyBjdCxZaT1uZXcgYSxuaz1bXSxvaz1bXSxyaz1bXSxpaz1bXSxzaz1bXSxjaz1uZXcgYSxhaz1uZXcgQXQsZms9bmV3IENvLHVrPW5ldyBKLGxrPW5ldyBhO0huLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbih0KXtyZXR1cm4gbSh0KXx8KHQ9bmV3IEhuKSx0LnVCdWZmZXI9dGhpcy51QnVmZmVyLHQudkJ1ZmZlcj10aGlzLnZCdWZmZXIsdC5oZWlnaHRCdWZmZXI9dGhpcy5oZWlnaHRCdWZmZXIsdC5ub3JtYWxCdWZmZXI9dGhpcy5ub3JtYWxCdWZmZXIsdC5pbmRleD10aGlzLmluZGV4LHQuZmlyc3Q9dGhpcy5maXJzdCx0LnNlY29uZD10aGlzLnNlY29uZCx0LnJhdGlvPXRoaXMucmF0aW8sdH07SG4ucHJvdG90eXBlLmluaXRpYWxpemVJbmRleGVkPWZ1bmN0aW9uKHQsZSxuLG8scil7dGhpcy51QnVmZmVyPXQsdGhpcy52QnVmZmVyPWUsdGhpcy5oZWlnaHRCdWZmZXI9bix0aGlzLm5vcm1hbEJ1ZmZlcj1vLHRoaXMuaW5kZXg9cix0aGlzLmZpcnN0PXZvaWQgMCx0aGlzLnNlY29uZD12b2lkIDAsdGhpcy5yYXRpbz12b2lkIDB9O0huLnByb3RvdHlwZS5pbml0aWFsaXplRnJvbUNsaXBSZXN1bHQ9ZnVuY3Rpb24odCxlLG4pe2xldCBvPWUrMTtyZXR1cm4gdFtlXSE9PS0xP25bdFtlXV0uY2xvbmUodGhpcyk6KHRoaXMudmVydGV4QnVmZmVyPXZvaWQgMCx0aGlzLmluZGV4PXZvaWQgMCx0aGlzLmZpcnN0PW5bdFtvXV0sKytvLHRoaXMuc2Vjb25kPW5bdFtvXV0sKytvLHRoaXMucmF0aW89dFtvXSwrK28pLG99O0huLnByb3RvdHlwZS5nZXRLZXk9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0luZGV4ZWQoKT90aGlzLmluZGV4OkpTT04uc3RyaW5naWZ5KHtmaXJzdDp0aGlzLmZpcnN0LmdldEtleSgpLHNlY29uZDp0aGlzLnNlY29uZC5nZXRLZXkoKSxyYXRpbzp0aGlzLnJhdGlvfSl9O0huLnByb3RvdHlwZS5pc0luZGV4ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLmluZGV4KX07SG4ucHJvdG90eXBlLmdldEg9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLmluZGV4KT90aGlzLmhlaWdodEJ1ZmZlclt0aGlzLmluZGV4XTpQLmxlcnAodGhpcy5maXJzdC5nZXRIKCksdGhpcy5zZWNvbmQuZ2V0SCgpLHRoaXMucmF0aW8pfTtIbi5wcm90b3R5cGUuZ2V0VT1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMuaW5kZXgpP3RoaXMudUJ1ZmZlclt0aGlzLmluZGV4XTpQLmxlcnAodGhpcy5maXJzdC5nZXRVKCksdGhpcy5zZWNvbmQuZ2V0VSgpLHRoaXMucmF0aW8pfTtIbi5wcm90b3R5cGUuZ2V0Vj1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMuaW5kZXgpP3RoaXMudkJ1ZmZlclt0aGlzLmluZGV4XTpQLmxlcnAodGhpcy5maXJzdC5nZXRWKCksdGhpcy5zZWNvbmQuZ2V0VigpLHRoaXMucmF0aW8pfTtIYT1uZXcgSixFbT0tMSxkaz1bbmV3IGEsbmV3IGFdLG1rPVtuZXcgYSxuZXcgYV07SG4ucHJvdG90eXBlLmdldE5vcm1hbFg9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLmluZGV4KT90aGlzLm5vcm1hbEJ1ZmZlclt0aGlzLmluZGV4KjJdOihIYT1seCh0aGlzLEhhKSxIYS54KX07SG4ucHJvdG90eXBlLmdldE5vcm1hbFk9ZnVuY3Rpb24oKXtyZXR1cm4gbSh0aGlzLmluZGV4KT90aGlzLm5vcm1hbEJ1ZmZlclt0aGlzLmluZGV4KjIrMV06KEhhPWx4KHRoaXMsSGEpLEhhLnkpfTtqbz1bXTtqby5wdXNoKG5ldyBIbik7am8ucHVzaChuZXcgSG4pO2pvLnB1c2gobmV3IEhuKTtqby5wdXNoKG5ldyBIbik7aGs9VWUocGspfSk7dmFyIF9rLF8xPSQoKCk9Pntfaz1UMSh7Ii4vY29tYmluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KGYwKCksYTApKSwiLi9jcmVhdGVCb3hHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihkMCgpLHAwKSksIi4vY3JlYXRlQm94T3V0bGluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KF8wKCksaDApKSwiLi9jcmVhdGVDaXJjbGVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihTMCgpLFIwKSksIi4vY3JlYXRlQ2lyY2xlT3V0bGluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KE0wKCksUDApKSwiLi9jcmVhdGVDb3BsYW5hclBvbHlnb25HZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pih6MCgpLFYwKSksIi4vY3JlYXRlQ29wbGFuYXJQb2x5Z29uT3V0bGluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KHEwKCksSDApKSwiLi9jcmVhdGVDb3JyaWRvckdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KGFfKCksY18pKSwiLi9jcmVhdGVDb3JyaWRvck91dGxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihsXygpLHVfKSksIi4vY3JlYXRlQ3lsaW5kZXJHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pih5XygpLF9fKSksIi4vY3JlYXRlQ3lsaW5kZXJPdXRsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4od18oKSxiXykpLCIuL2NyZWF0ZUVsbGlwc2VHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihPXygpLFRfKSksIi4vY3JlYXRlRWxsaXBzZU91dGxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihSXygpLEVfKSksIi4vY3JlYXRlRWxsaXBzb2lkR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oQ18oKSx4XykpLCIuL2NyZWF0ZUVsbGlwc29pZE91dGxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihOXygpLE1fKSksIi4vY3JlYXRlRnJ1c3R1bUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KEdfKCksa18pKSwiLi9jcmVhdGVGcnVzdHVtT3V0bGluZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KEhfKCksal8pKSwiLi9jcmVhdGVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihnMSgpLHkxKSksIi4vY3JlYXRlR3JvdW5kUG9seWxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihveSgpLG55KSksIi4vY3JlYXRlUGxhbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihzeSgpLGl5KSksIi4vY3JlYXRlUGxhbmVPdXRsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oZnkoKSxheSkpLCIuL2NyZWF0ZVBvbHlnb25HZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihkeSgpLHB5KSksIi4vY3JlYXRlUG9seWdvbk91dGxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihfeSgpLGh5KSksIi4vY3JlYXRlUG9seWxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihUeSgpLHd5KSksIi4vY3JlYXRlUG9seWxpbmVWb2x1bWVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihSeSgpLEV5KSksIi4vY3JlYXRlUG9seWxpbmVWb2x1bWVPdXRsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oQ3koKSx4eSkpLCIuL2NyZWF0ZVJlY3RhbmdsZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KEJ5KCksRHkpKSwiLi9jcmVhdGVSZWN0YW5nbGVPdXRsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oR3koKSxreSkpLCIuL2NyZWF0ZVNpbXBsZVBvbHlsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oankoKSx6eSkpLCIuL2NyZWF0ZVNwaGVyZUdlb21ldHJ5LmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KEt5KCkscXkpKSwiLi9jcmVhdGVTcGhlcmVPdXRsaW5lR2VvbWV0cnkuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oWXkoKSxYeSkpLCIuL2NyZWF0ZVRhc2tQcm9jZXNzb3JXb3JrZXIuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oWm4oKSxjMCkpLCIuL2NyZWF0ZVZlY3RvclRpbGVDbGFtcGVkUG9seWxpbmVzLmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KFp5KCksJHkpKSwiLi9jcmVhdGVWZWN0b3JUaWxlR2VvbWV0cmllcy5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihKeSgpLFF5KSksIi4vY3JlYXRlVmVjdG9yVGlsZVBvaW50cy5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihuZygpLGVnKSksIi4vY3JlYXRlVmVjdG9yVGlsZVBvbHlnb25zLmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KHJnKCksb2cpKSwiLi9jcmVhdGVWZWN0b3JUaWxlUG9seWxpbmVzLmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KGNnKCksc2cpKSwiLi9jcmVhdGVWZXJ0aWNlc0Zyb21Hb29nbGVFYXJ0aEVudGVycHJpc2VCdWZmZXIuanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4ocGcoKSxsZykpLCIuL2NyZWF0ZVZlcnRpY2VzRnJvbUhlaWdodG1hcC5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihoZygpLG1nKSksIi4vY3JlYXRlVmVydGljZXNGcm9tUXVhbnRpemVkVGVycmFpbk1lc2guanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oZ2coKSx5ZykpLCIuL2NyZWF0ZVdhbGxHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihPZygpLFRnKSksIi4vY3JlYXRlV2FsbE91dGxpbmVHZW9tZXRyeS5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihTZygpLFJnKSksIi4vZGVjb2RlRHJhY28uanMiOigpPT5Qcm9taXNlLnJlc29sdmUoKS50aGVuKCgpPT4oSWcoKSxOZykpLCIuL2RlY29kZUdvb2dsZUVhcnRoRW50ZXJwcmlzZVBhY2tldC5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihZZygpLFhnKSksIi4vZGVjb2RlSTNTLmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KHQxKCksSmcpKSwiLi9nYXVzc2lhblNwbGF0U29ydGVyLmpzIjooKT0+UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+KGkxKCkscjEpKSwiLi9nYXVzc2lhblNwbGF0VGV4dHVyZUdlbmVyYXRvci5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihjMSgpLHMxKSksIi4vdHJhbnNjb2RlS1RYMi5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihwMSgpLGwxKSksIi4vdHJhbnNmZXJUeXBlZEFycmF5VGVzdC5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihkMSgpLGN4KSksIi4vdXBzYW1wbGVRdWFudGl6ZWRUZXJyYWluTWVzaC5qcyI6KCk9PlByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PihoMSgpLG0xKSl9KX0pO3ZhciB5MT17fTtsZSh5MSx7ZGVmYXVsdDooKT0+QWt9KTthc3luYyBmdW5jdGlvbiB5ayh0LGUpe2xldCBuPVJtW2VdPz9SbVt0XTtyZXR1cm4gbShuKT9uOm0oZSk/KHR5cGVvZiBleHBvcnRzPT0ib2JqZWN0Ij9uPWRyKGUpOm49KGF3YWl0IGltcG9ydChlKSkuZGVmYXVsdCxSbVtlXT1uLG4pOih0eXBlb2YgZXhwb3J0cz09Im9iamVjdCI/bj1kcihgV29ya2Vycy8ke3R9YCk6bj0obShlKT9hd2FpdCBpbXBvcnQoZSk6YXdhaXQgX2soYC4vJHt0fS5qc2ApKS5kZWZhdWx0LFJtW3RdPW4sbil9YXN5bmMgZnVuY3Rpb24gZ2sodCxlKXtsZXQgbj10LnN1YlRhc2tzLG89bi5sZW5ndGgscj1uZXcgQXJyYXkobyk7Zm9yKGxldCBpPTA7aTxvO2krKyl7bGV0IHM9bltpXSxmPXMuZ2VvbWV0cnksdT1zLm1vZHVsZU5hbWUsYz1zLm1vZHVsZVBhdGg7aWYobSh1KSYmbShjKSl0aHJvdyBuZXcgRCgiTXVzdCBvbmx5IHNldCBtb2R1bGVOYW1lIG9yIG1vZHVsZVBhdGgiKTttKHUpfHxtKGMpP3JbaV09eWsodSxjKS50aGVuKGw9PmwoZixzLm9mZnNldCkpOnJbaV09Zn1yZXR1cm4gUHJvbWlzZS5hbGwocikudGhlbihmdW5jdGlvbihpKXtyZXR1cm4gY2EucGFja0NyZWF0ZUdlb21ldHJ5UmVzdWx0cyhpLGUpfSl9dmFyIFJtLEFrLGcxPSQoKCk9PntIdCgpO2Z0KCk7czAoKTtabigpO18xKCk7Um09e307QWs9VWUoZ2spfSk7dmFyIF9HPXt9O2xlKF9HLHtjb21iaW5lR2VvbWV0cnk6KCk9PmJrLGNyZWF0ZUJveEdlb21ldHJ5OigpPT53ayxjcmVhdGVCb3hPdXRsaW5lR2VvbWV0cnk6KCk9PlRrLGNyZWF0ZUNpcmNsZUdlb21ldHJ5OigpPT5PayxjcmVhdGVDaXJjbGVPdXRsaW5lR2VvbWV0cnk6KCk9PkVrLGNyZWF0ZUNvcGxhbmFyUG9seWdvbkdlb21ldHJ5OigpPT5SayxjcmVhdGVDb3BsYW5hclBvbHlnb25PdXRsaW5lR2VvbWV0cnk6KCk9PlNrLGNyZWF0ZUNvcnJpZG9yR2VvbWV0cnk6KCk9PnhrLGNyZWF0ZUNvcnJpZG9yT3V0bGluZUdlb21ldHJ5OigpPT5DayxjcmVhdGVDeWxpbmRlckdlb21ldHJ5OigpPT5QayxjcmVhdGVDeWxpbmRlck91dGxpbmVHZW9tZXRyeTooKT0+TWssY3JlYXRlRWxsaXBzZUdlb21ldHJ5OigpPT5OayxjcmVhdGVFbGxpcHNlT3V0bGluZUdlb21ldHJ5OigpPT5JayxjcmVhdGVFbGxpcHNvaWRHZW9tZXRyeTooKT0+dmssY3JlYXRlRWxsaXBzb2lkT3V0bGluZUdlb21ldHJ5OigpPT5GayxjcmVhdGVGcnVzdHVtR2VvbWV0cnk6KCk9PkxrLGNyZWF0ZUZydXN0dW1PdXRsaW5lR2VvbWV0cnk6KCk9PkRrLGNyZWF0ZUdlb21ldHJ5OigpPT5CayxjcmVhdGVHcm91bmRQb2x5bGluZUdlb21ldHJ5OigpPT5VayxjcmVhdGVQbGFuZUdlb21ldHJ5OigpPT5rayxjcmVhdGVQbGFuZU91dGxpbmVHZW9tZXRyeTooKT0+R2ssY3JlYXRlUG9seWdvbkdlb21ldHJ5OigpPT5WayxjcmVhdGVQb2x5Z29uT3V0bGluZUdlb21ldHJ5OigpPT56ayxjcmVhdGVQb2x5bGluZUdlb21ldHJ5OigpPT5qayxjcmVhdGVQb2x5bGluZVZvbHVtZUdlb21ldHJ5OigpPT5IayxjcmVhdGVQb2x5bGluZVZvbHVtZU91dGxpbmVHZW9tZXRyeTooKT0+cWssY3JlYXRlUmVjdGFuZ2xlR2VvbWV0cnk6KCk9PktrLGNyZWF0ZVJlY3RhbmdsZU91dGxpbmVHZW9tZXRyeTooKT0+V2ssY3JlYXRlU2ltcGxlUG9seWxpbmVHZW9tZXRyeTooKT0+WGssY3JlYXRlU3BoZXJlR2VvbWV0cnk6KCk9PllrLGNyZWF0ZVNwaGVyZU91dGxpbmVHZW9tZXRyeTooKT0+JGssY3JlYXRlVGFza1Byb2Nlc3NvcldvcmtlcjooKT0+WmssY3JlYXRlVmVjdG9yVGlsZUNsYW1wZWRQb2x5bGluZXM6KCk9PlFrLGNyZWF0ZVZlY3RvclRpbGVHZW9tZXRyaWVzOigpPT5KayxjcmVhdGVWZWN0b3JUaWxlUG9pbnRzOigpPT50RyxjcmVhdGVWZWN0b3JUaWxlUG9seWdvbnM6KCk9PmVHLGNyZWF0ZVZlY3RvclRpbGVQb2x5bGluZXM6KCk9Pm5HLGNyZWF0ZVZlcnRpY2VzRnJvbUdvb2dsZUVhcnRoRW50ZXJwcmlzZUJ1ZmZlcjooKT0+b0csY3JlYXRlVmVydGljZXNGcm9tSGVpZ2h0bWFwOigpPT5yRyxjcmVhdGVWZXJ0aWNlc0Zyb21RdWFudGl6ZWRUZXJyYWluTWVzaDooKT0+aUcsY3JlYXRlV2FsbEdlb21ldHJ5OigpPT5zRyxjcmVhdGVXYWxsT3V0bGluZUdlb21ldHJ5OigpPT5jRyxkZWNvZGVEcmFjbzooKT0+YUcsZGVjb2RlR29vZ2xlRWFydGhFbnRlcnByaXNlUGFja2V0OigpPT5mRyxkZWNvZGVJM1M6KCk9PnVHLGdhdXNzaWFuU3BsYXRTb3J0ZXI6KCk9PmxHLGdhdXNzaWFuU3BsYXRUZXh0dXJlR2VuZXJhdG9yOigpPT5wRyx0cmFuc2NvZGVLVFgyOigpPT5kRyx0cmFuc2ZlclR5cGVkQXJyYXlUZXN0OigpPT5tRyx1cHNhbXBsZVF1YW50aXplZFRlcnJhaW5NZXNoOigpPT5oR30pO3ZhciBiaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmYwKCkpfSx3az0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmQwKCkpfSxUaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pl8wKCkpfSxPaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlMwKCkpfSxFaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pk0wKCkpfSxSaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnowKCkpfSxTaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnEwKCkpfSx4az0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmFfKCkpfSxDaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmxfKCkpfSxQaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnlfKCkpfSxNaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PndfKCkpfSxOaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pk9fKCkpfSxJaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlJfKCkpfSx2az0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PkNfKCkpfSxGaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pk5fKCkpfSxMaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PkdfKCkpfSxEaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PkhfKCkpfSxCaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmcxKCkpfSxVaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pm95KCkpfSxraz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnN5KCkpfSxHaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmZ5KCkpfSxWaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmR5KCkpfSx6az0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pl95KCkpfSxqaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlR5KCkpfSxIaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlJ5KCkpfSxxaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PkN5KCkpfSxLaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PkJ5KCkpfSxXaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pkd5KCkpfSxYaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pmp5KCkpfSxZaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pkt5KCkpfSwkaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pll5KCkpfSxaaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlpuKCkpfSxRaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Plp5KCkpfSxKaz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pkp5KCkpfSx0Rz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pm5nKCkpfSxlRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnJnKCkpfSxuRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmNnKCkpfSxvRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnBnKCkpfSxyRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmhnKCkpfSxpRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmdnKCkpfSxzRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9Pk9nKCkpfSxjRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PlNnKCkpfSxhRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PklnKCkpfSxmRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PllnKCkpfSx1Rz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnQxKCkpfSxsRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmkxKCkpfSxwRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmMxKCkpfSxkRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PnAxKCkpfSxtRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmQxKCkpfSxoRz0oKT0+e1Byb21pc2UucmVzb2x2ZSgpLnRoZW4oKCk9PmgxKCkpfTtyZXR1cm4gZ3goX0cpO30pKCk7Cg==")});var T9=Pu((YVt,Xee)=>{var OVt=y(C()),kp=function(e){e==null&&(e=new Date().getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,e.constructor==Array?this.init_by_array(e,e.length):this.init_seed(e)};kp.prototype.init_seed=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti>>30;this.mt[this.mti]=(((e&4294901760)>>>16)*1812433253<<16)+(e&65535)*1812433253+this.mti,this.mt[this.mti]>>>=0}};kp.prototype.init_by_array=function(e,t){var n,i,o;for(this.init_seed(19650218),n=1,i=0,o=this.N>t?this.N:t;o;o--){var r=this.mt[n-1]^this.mt[n-1]>>>30;this.mt[n]=(this.mt[n]^(((r&4294901760)>>>16)*1664525<<16)+(r&65535)*1664525)+e[i]+i,this.mt[n]>>>=0,n++,i++,n>=this.N&&(this.mt[0]=this.mt[this.N-1],n=1),i>=t&&(i=0)}for(o=this.N-1;o;o--){var r=this.mt[n-1]^this.mt[n-1]>>>30;this.mt[n]=(this.mt[n]^(((r&4294901760)>>>16)*1566083941<<16)+(r&65535)*1566083941)-n,this.mt[n]>>>=0,n++,n>=this.N&&(this.mt[0]=this.mt[this.N-1],n=1)}this.mt[0]=2147483648};kp.prototype.random_int=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_seed(5489),n=0;n>>1^t[e&1];for(;n>>1^t[e&1];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[e&1],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0};kp.prototype.random_int31=function(){return this.random_int()>>>1};kp.prototype.random_incl=function(){return this.random_int()*(1/4294967295)};kp.prototype.random=function(){return this.random_int()*(1/4294967296)};kp.prototype.random_excl=function(){return(this.random_int()+.5)*(1/4294967296)};kp.prototype.random_long=function(){var e=this.random_int()>>>5,t=this.random_int()>>>6;return(e*67108864+t)*(1/9007199254740992)};Xee.exports=kp});var Hee=Pu((G_,Z_)=>{var sZt=y(C());/*! https://mths.be/punycode v1.4.0 by @mathias */(function(e){var t=typeof G_=="object"&&G_&&!G_.nodeType&&G_,n=typeof Z_=="object"&&Z_&&!Z_.nodeType&&Z_,i=typeof global=="object"&&global;(i.global===i||i.window===i||i.self===i)&&(e=i);var o,r=2147483647,s=36,a=1,c=26,d=38,u=700,h=72,p=128,g="-",f=/^xn--/,b=/[^\x20-\x7E]/,x=/[\x2E\u3002\uFF0E\uFF61]/g,I={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},_=s-a,E=Math.floor,S=String.fromCharCode,R;function G(N){throw new RangeError(I[N])}function B(N,k){for(var v=N.length,O=[];v--;)O[v]=k(N[v]);return O}function w(N,k){var v=N.split("@"),O="";v.length>1&&(O=v[0]+"@",N=v[1]),N=N.replace(x,".");var H=N.split("."),ee=B(H,k).join(".");return O+ee}function F(N){for(var k=[],v=0,O=N.length,H,ee;v=55296&&H<=56319&&v65535&&(k-=65536,v+=S(k>>>10&1023|55296),k=56320|k&1023),v+=S(k),v}).join("")}function A(N){return N-48<10?N-22:N-65<26?N-65:N-97<26?N-97:s}function T(N,k){return N+22+75*(N<26)-((k!=0)<<5)}function L(N,k,v){var O=0;for(N=v?E(N/u):N>>1,N+=E(N/k);N>_*c>>1;O+=s)N=E(N/_);return E(O+(_+1)*N/(N+d))}function V(N){var k=[],v=N.length,O,H=0,ee=p,K=h,te,q,pe,ye,he,xe,Te,Be,Le;for(te=N.lastIndexOf(g),te<0&&(te=0),q=0;q=128&&G("not-basic"),k.push(N.charCodeAt(q));for(pe=te>0?te+1:0;pe=v&&G("invalid-input"),Te=A(N.charCodeAt(pe++)),(Te>=s||Te>E((r-H)/he))&&G("overflow"),H+=Te*he,Be=xe<=K?a:xe>=K+c?c:xe-K,!(TeE(r/Le)&&G("overflow"),he*=Le;O=k.length+1,K=L(H-ye,O,ye==0),E(H/O)>r-ee&&G("overflow"),ee+=E(H/O),H%=O,k.splice(H++,0,ee)}return P(k)}function W(N){var k,v,O,H,ee,K,te,q,pe,ye,he,xe=[],Te,Be,Le,De;for(N=F(N),Te=N.length,k=p,v=0,ee=h,K=0;K=k&&heE((r-v)/Be)&&G("overflow"),v+=(te-k)*Be,k=te,K=0;Kr&&G("overflow"),he==k){for(q=v,pe=s;ye=pe<=ee?a:pe>=ee+c?c:pe-ee,!(q{var aZt=y(C());/*! + * URI.js - Mutating URLs + * IPv6 Support + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,t){"use strict";typeof X9=="object"&&X9.exports?X9.exports=t():typeof define=="function"&&define.amd?define(t):e.IPv6=t(e)})(zee,function(e){"use strict";var t=e&&e.IPv6;function n(o){var r=o.toLowerCase(),s=r.split(":"),a=s.length,c=8;s[0]===""&&s[1]===""&&s[2]===""?(s.shift(),s.shift()):s[0]===""&&s[1]===""?s.shift():s[a-1]===""&&s[a-2]===""&&s.pop(),a=s.length,s[a-1].indexOf(".")!==-1&&(c=7);var d;for(d=0;d1);p++)u.splice(0,1);s[h]=u.join("")}var g=-1,f=0,b=0,x=-1,I=!1;for(h=0;hf&&(g=x,f=b)):s[h]==="0"&&(I=!0,x=h,b=1);b>f&&(g=x,f=b),f>1&&s.splice(g,f,""),a=s.length;var _="";for(s[0]===""&&(_=":"),h=0;h{var cZt=y(C());/*! + * URI.js - Mutating URLs + * Second Level Domain (SLD) Support + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,t){"use strict";typeof W9=="object"&&W9.exports?W9.exports=t():typeof define=="function"&&define.amd?define(t):e.SecondLevelDomains=t(e)})(Jee,function(e){"use strict";var t=e&&e.SecondLevelDomains,n={list:{ac:" com gov mil net org ",ae:" ac co gov mil name net org pro sch ",af:" com edu gov net org ",al:" com edu gov mil net org ",ao:" co ed gv it og pb ",ar:" com edu gob gov int mil net org tur ",at:" ac co gv or ",au:" asn com csiro edu gov id net org ",ba:" co com edu gov mil net org rs unbi unmo unsa untz unze ",bb:" biz co com edu gov info net org store tv ",bh:" biz cc com edu gov info net org ",bn:" com edu gov net org ",bo:" com edu gob gov int mil net org tv ",br:" adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ",bs:" com edu gov net org ",bz:" du et om ov rg ",ca:" ab bc mb nb nf nl ns nt nu on pe qc sk yk ",ck:" biz co edu gen gov info net org ",cn:" ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ",co:" com edu gov mil net nom org ",cr:" ac c co ed fi go or sa ",cy:" ac biz com ekloges gov ltd name net org parliament press pro tm ",do:" art com edu gob gov mil net org sld web ",dz:" art asso com edu gov net org pol ",ec:" com edu fin gov info med mil net org pro ",eg:" com edu eun gov mil name net org sci ",er:" com edu gov ind mil net org rochest w ",es:" com edu gob nom org ",et:" biz com edu gov info name net org ",fj:" ac biz com info mil name net org pro ",fk:" ac co gov net nom org ",fr:" asso com f gouv nom prd presse tm ",gg:" co net org ",gh:" com edu gov mil org ",gn:" ac com gov net org ",gr:" com edu gov mil net org ",gt:" com edu gob ind mil net org ",gu:" com edu gov net org ",hk:" com edu gov idv net org ",hu:" 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ",id:" ac co go mil net or sch web ",il:" ac co gov idf k12 muni net org ",in:" ac co edu ernet firm gen gov i ind mil net nic org res ",iq:" com edu gov i mil net org ",ir:" ac co dnssec gov i id net org sch ",it:" edu gov ",je:" co net org ",jo:" com edu gov mil name net org sch ",jp:" ac ad co ed go gr lg ne or ",ke:" ac co go info me mobi ne or sc ",kh:" com edu gov mil net org per ",ki:" biz com de edu gov info mob net org tel ",km:" asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ",kn:" edu gov net org ",kr:" ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ",kw:" com edu gov net org ",ky:" com edu gov net org ",kz:" com edu gov mil net org ",lb:" com edu gov net org ",lk:" assn com edu gov grp hotel int ltd net ngo org sch soc web ",lr:" com edu gov net org ",lv:" asn com conf edu gov id mil net org ",ly:" com edu gov id med net org plc sch ",ma:" ac co gov m net org press ",mc:" asso tm ",me:" ac co edu gov its net org priv ",mg:" com edu gov mil nom org prd tm ",mk:" com edu gov inf name net org pro ",ml:" com edu gov net org presse ",mn:" edu gov org ",mo:" com edu gov net org ",mt:" com edu gov net org ",mv:" aero biz com coop edu gov info int mil museum name net org pro ",mw:" ac co com coop edu gov int museum net org ",mx:" com edu gob net org ",my:" com edu gov mil name net org sch ",nf:" arts com firm info net other per rec store web ",ng:" biz com edu gov mil mobi name net org sch ",ni:" ac co com edu gob mil net nom org ",np:" com edu gov mil net org ",nr:" biz com edu gov info net org ",om:" ac biz co com edu gov med mil museum net org pro sch ",pe:" com edu gob mil net nom org sld ",ph:" com edu gov i mil net ngo org ",pk:" biz com edu fam gob gok gon gop gos gov net org web ",pl:" art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ",pr:" ac biz com edu est gov info isla name net org pro prof ",ps:" com edu gov net org plo sec ",pw:" belau co ed go ne or ",ro:" arts com firm info nom nt org rec store tm www ",rs:" ac co edu gov in org ",sb:" com edu gov net org ",sc:" com edu gov net org ",sh:" co com edu gov net nom org ",sl:" com edu gov net org ",st:" co com consulado edu embaixada gov mil net org principe saotome store ",sv:" com edu gob org red ",sz:" ac co org ",tr:" av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ",tt:" aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ",tw:" club com ebiz edu game gov idv mil net org ",mu:" ac co com gov net or org ",mz:" ac co edu gov org ",na:" co com ",nz:" ac co cri geek gen govt health iwi maori mil net org parliament school ",pa:" abo ac com edu gob ing med net nom org sld ",pt:" com edu gov int net nome org publ ",py:" com edu gov mil net org ",qa:" com edu gov mil net org ",re:" asso com nom ",ru:" ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ",rw:" ac co com edu gouv gov int mil net ",sa:" com edu gov med net org pub sch ",sd:" com edu gov info med net org tv ",se:" a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ",sg:" com edu gov idn net org per ",sn:" art com edu gouv org perso univ ",sy:" com edu gov mil net news org ",th:" ac co go in mi net or ",tj:" ac biz co com edu go gov info int mil name net nic org test web ",tn:" agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ",tz:" ac co go ne or ",ua:" biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ",ug:" ac co go ne or org sc ",uk:" ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ",us:" dni fed isa kids nsn ",uy:" com edu gub mil net org ",ve:" co com edu gob info mil net org web ",vi:" co com k12 net org ",vn:" ac biz com edu gov health info int name net org pro ",ye:" co com gov ltd me net org plc ",yu:" ac co edu gov org ",za:" ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ",zm:" ac co com edu gov net org sch ",com:"ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ",net:"gb jp se uk ",org:"ae",de:"com "},has:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return!1;var r=i.lastIndexOf(".",o-1);if(r<=0||r>=o-1)return!1;var s=n.list[i.slice(o+1)];return s?s.indexOf(" "+i.slice(r+1,o)+" ")>=0:!1},is:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return!1;var r=i.lastIndexOf(".",o-1);if(r>=0)return!1;var s=n.list[i.slice(o+1)];return s?s.indexOf(" "+i.slice(0,o)+" ")>=0:!1},get:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return null;var r=i.lastIndexOf(".",o-1);if(r<=0||r>=o-1)return null;var s=n.list[i.slice(o+1)];return!s||s.indexOf(" "+i.slice(r+1,o)+" ")<0?null:i.slice(r+1)},noConflict:function(){return e.SecondLevelDomains===this&&(e.SecondLevelDomains=t),this}};return n})});var Bd=Pu((qee,F9)=>{var lZt=y(C());/*! + * URI.js - Mutating URLs + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,t){"use strict";typeof F9=="object"&&F9.exports?F9.exports=t(Hee(),Kee(),jee()):typeof define=="function"&&define.amd?define(["./punycode","./IPv6","./SecondLevelDomains"],t):e.URI=t(e.punycode,e.IPv6,e.SecondLevelDomains,e)})(qee,function(e,t,n,i){"use strict";var o=i&&i.URI;function r(T,L){var V=arguments.length>=1,W=arguments.length>=2;if(!(this instanceof r))return V?W?new r(T,L):new r(T):new r;if(T===void 0){if(V)throw new TypeError("undefined is not a valid argument for URI");typeof location<"u"?T=location.href+"":T=""}if(T===null&&V)throw new TypeError("null is not a valid argument for URI");return this.href(T),L!==void 0?this.absoluteTo(L):this}function s(T){return/^[0-9]+$/.test(T)}r.version="1.19.11";var a=r.prototype,c=Object.prototype.hasOwnProperty;function d(T){return T.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function u(T){return T===void 0?"Undefined":String(Object.prototype.toString.call(T)).slice(8,-1)}function h(T){return u(T)==="Array"}function p(T,L){var V={},W,M;if(u(L)==="RegExp")V=null;else if(h(L))for(W=0,M=L.length;W]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/ig,r.findUri={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|www\.)/gi,end:/[\s\r\n]|$/,trim:/[`!()\[\]{};:'".,<>?«»“”„‘’]+$/,parens:/(\([^\)]*\)|\[[^\]]*\]|\{[^}]*\}|<[^>]*>)/g},r.leading_whitespace_expression=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,r.ascii_tab_whitespace=/[\u0009\u000A\u000D]+/g,r.defaultPorts={http:"80",https:"443",ftp:"21",gopher:"70",ws:"80",wss:"443"},r.hostProtocols=["http","https"],r.invalid_hostname_characters=/[^a-zA-Z0-9\.\-:_]/,r.domAttributes={a:"href",blockquote:"cite",link:"href",base:"href",script:"src",form:"action",img:"src",area:"href",iframe:"src",embed:"src",source:"src",track:"src",input:"src",audio:"src",video:"src"},r.getDomAttribute=function(T){if(!(!T||!T.nodeName)){var L=T.nodeName.toLowerCase();if(!(L==="input"&&T.type!=="image"))return r.domAttributes[L]}};function x(T){return escape(T)}function I(T){return encodeURIComponent(T).replace(/[!'()*]/g,x).replace(/\*/g,"%2A")}r.encode=I,r.decode=decodeURIComponent,r.iso8859=function(){r.encode=escape,r.decode=unescape},r.unicode=function(){r.encode=I,r.decode=decodeURIComponent},r.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/ig,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}},urnpath:{encode:{expression:/%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/ig,map:{"%21":"!","%24":"$","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"=","%40":"@"}},decode:{expression:/[\/\?#:]/g,map:{"/":"%2F","?":"%3F","#":"%23",":":"%3A"}}}},r.encodeQuery=function(T,L){var V=r.encode(T+"");return L===void 0&&(L=r.escapeQuerySpace),L?V.replace(/%20/g,"+"):V},r.decodeQuery=function(T,L){T+="",L===void 0&&(L=r.escapeQuerySpace);try{return r.decode(L?T.replace(/\+/g,"%20"):T)}catch{return T}};var _={encode:"encode",decode:"decode"},E,S=function(T,L){return function(V){try{return r[L](V+"").replace(r.characters[T][L].expression,function(W){return r.characters[T][L].map[W]})}catch{return V}}};for(E in _)r[E+"PathSegment"]=S("pathname",_[E]),r[E+"UrnPathSegment"]=S("urnpath",_[E]);var R=function(T,L,V){return function(W){var M;V?M=function(v){return r[L](r[V](v))}:M=r[L];for(var Q=(W+"").split(T),N=0,k=Q.length;N-1&&(L.fragment=T.substring(V+1)||null,T=T.substring(0,V)),V=T.indexOf("?"),V>-1&&(L.query=T.substring(V+1)||null,T=T.substring(0,V)),T=T.replace(/^(https?|ftp|wss?)?:+[/\\]*/i,"$1://"),T=T.replace(/^[/\\]{2,}/i,"//"),T.substring(0,2)==="//"?(L.protocol=null,T=T.substring(2),T=r.parseAuthority(T,L)):(V=T.indexOf(":"),V>-1&&(L.protocol=T.substring(0,V)||null,L.protocol&&!L.protocol.match(r.protocol_expression)?L.protocol=void 0:T.substring(V+1,V+3).replace(/\\/g,"/")==="//"?(T=T.substring(V+3),T=r.parseAuthority(T,L)):(T=T.substring(V+1),L.urn=!0))),L.path=T,L},r.parseHost=function(T,L){T||(T=""),T=T.replace(/\\/g,"/");var V=T.indexOf("/"),W,M;if(V===-1&&(V=T.length),T.charAt(0)==="[")W=T.indexOf("]"),L.hostname=T.substring(1,W)||null,L.port=T.substring(W+2,V)||null,L.port==="/"&&(L.port=null);else{var Q=T.indexOf(":"),N=T.indexOf("/"),k=T.indexOf(":",Q+1);k!==-1&&(N===-1||k-1?M:T.length-1),N;return Q>-1&&(M===-1||Q-1?K=K.slice(0,te)+K.slice(te).replace(Q,""):K=K.replace(Q,""),!(K.length<=v[0].length)&&!(V.ignore&&V.ignore.test(K))){ee=O+K.length;var ye=L(K,O,ee,T);if(ye===void 0){W.lastIndex=ee;continue}ye=String(ye),T=T.slice(0,O)+ye+T.slice(ee),W.lastIndex=O+ye.length}}return W.lastIndex=0,T},r.ensureValidHostname=function(T,L){var V=!!T,W=!!L,M=!1;if(W&&(M=g(r.hostProtocols,L)),M&&!V)throw new TypeError("Hostname cannot be empty, if protocol is "+L);if(T&&T.match(r.invalid_hostname_characters)){if(!e)throw new TypeError('Hostname "'+T+'" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available');if(e.toASCII(T).match(r.invalid_hostname_characters))throw new TypeError('Hostname "'+T+'" contains characters other than [A-Z0-9.-:_]')}},r.ensureValidPort=function(T){if(T){var L=Number(T);if(!(s(L)&&L>0&&L<65536))throw new TypeError('Port "'+T+'" is not a valid port')}},r.noConflict=function(T){if(T){var L={URI:this.noConflict()};return i.URITemplate&&typeof i.URITemplate.noConflict=="function"&&(L.URITemplate=i.URITemplate.noConflict()),i.IPv6&&typeof i.IPv6.noConflict=="function"&&(L.IPv6=i.IPv6.noConflict()),i.SecondLevelDomains&&typeof i.SecondLevelDomains.noConflict=="function"&&(L.SecondLevelDomains=i.SecondLevelDomains.noConflict()),L}else i.URI===this&&(i.URI=o);return this},a.build=function(T){return T===!0?this._deferred_build=!0:(T===void 0||this._deferred_build)&&(this._string=r.build(this._parts),this._deferred_build=!1),this},a.clone=function(){return new r(this)},a.valueOf=a.toString=function(){return this.build(!1)._string};function G(T){return function(L,V){return L===void 0?this._parts[T]||"":(this._parts[T]=L||null,this.build(!V),this)}}function B(T,L){return function(V,W){return V===void 0?this._parts[T]||"":(V!==null&&(V=V+"",V.charAt(0)===L&&(V=V.substring(1))),this._parts[T]=V,this.build(!W),this)}}a.protocol=G("protocol"),a.username=G("username"),a.password=G("password"),a.hostname=G("hostname"),a.port=G("port"),a.query=B("query","?"),a.fragment=B("fragment","#"),a.search=function(T,L){var V=this.query(T,L);return typeof V=="string"&&V.length?"?"+V:V},a.hash=function(T,L){var V=this.fragment(T,L);return typeof V=="string"&&V.length?"#"+V:V},a.pathname=function(T,L){if(T===void 0||T===!0){var V=this._parts.path||(this._parts.hostname?"/":"");return T?(this._parts.urn?r.decodeUrnPath:r.decodePath)(V):V}else return this._parts.urn?this._parts.path=T?r.recodeUrnPath(T):"":this._parts.path=T?r.recodePath(T):"/",this.build(!L),this},a.path=a.pathname,a.href=function(T,L){var V;if(T===void 0)return this.toString();this._string="",this._parts=r._parts();var W=T instanceof r,M=typeof T=="object"&&(T.hostname||T.path||T.pathname);if(T.nodeName){var Q=r.getDomAttribute(T);T=T[Q]||"",M=!1}if(!W&&M&&T.pathname!==void 0&&(T=T.toString()),typeof T=="string"||T instanceof String)this._parts=r.parse(String(T),this._parts);else if(W||M){var N=W?T._parts:T;for(V in N)V!=="query"&&c.call(this._parts,V)&&(this._parts[V]=N[V]);N.query&&this.query(N.query,!1)}else throw new TypeError("invalid input");return this.build(!L),this},a.is=function(T){var L=!1,V=!1,W=!1,M=!1,Q=!1,N=!1,k=!1,v=!this._parts.urn;switch(this._parts.hostname&&(v=!1,V=r.ip4_expression.test(this._parts.hostname),W=r.ip6_expression.test(this._parts.hostname),L=V||W,M=!L,Q=M&&n&&n.has(this._parts.hostname),N=M&&r.idn_expression.test(this._parts.hostname),k=M&&r.punycode_expression.test(this._parts.hostname)),T.toLowerCase()){case"relative":return v;case"absolute":return!v;case"domain":case"name":return M;case"sld":return Q;case"ip":return L;case"ip4":case"ipv4":case"inet4":return V;case"ip6":case"ipv6":case"inet6":return W;case"idn":return N;case"url":return!this._parts.urn;case"urn":return!!this._parts.urn;case"punycode":return k}return null};var w=a.protocol,F=a.port,P=a.hostname;a.protocol=function(T,L){if(T&&(T=T.replace(/:(\/\/)?$/,""),!T.match(r.protocol_expression)))throw new TypeError('Protocol "'+T+`" contains characters other than [A-Z0-9.+-] or doesn't start with [A-Z]`);return w.call(this,T,L)},a.scheme=a.protocol,a.port=function(T,L){return this._parts.urn?T===void 0?"":this:(T!==void 0&&(T===0&&(T=null),T&&(T+="",T.charAt(0)===":"&&(T=T.substring(1)),r.ensureValidPort(T))),F.call(this,T,L))},a.hostname=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(T!==void 0){var V={preventInvalidHostname:this._parts.preventInvalidHostname},W=r.parseHost(T,V);if(W!=="/")throw new TypeError('Hostname "'+T+'" contains characters other than [A-Z0-9.-]');T=V.hostname,this._parts.preventInvalidHostname&&r.ensureValidHostname(T,this._parts.protocol)}return P.call(this,T,L)},a.origin=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(T===void 0){var V=this.protocol(),W=this.authority();return W?(V?V+"://":"")+this.authority():""}else{var M=r(T);return this.protocol(M.protocol()).authority(M.authority()).build(!L),this}},a.host=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(T===void 0)return this._parts.hostname?r.buildHost(this._parts):"";var V=r.parseHost(T,this._parts);if(V!=="/")throw new TypeError('Hostname "'+T+'" contains characters other than [A-Z0-9.-]');return this.build(!L),this},a.authority=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(T===void 0)return this._parts.hostname?r.buildAuthority(this._parts):"";var V=r.parseAuthority(T,this._parts);if(V!=="/")throw new TypeError('Hostname "'+T+'" contains characters other than [A-Z0-9.-]');return this.build(!L),this},a.userinfo=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(T===void 0){var V=r.buildUserinfo(this._parts);return V&&V.substring(0,V.length-1)}else return T[T.length-1]!=="@"&&(T+="@"),r.parseUserinfo(T,this._parts),this.build(!L),this},a.resource=function(T,L){var V;return T===void 0?this.path()+this.search()+this.hash():(V=r.parse(T),this._parts.path=V.path,this._parts.query=V.query,this._parts.fragment=V.fragment,this.build(!L),this)},a.subdomain=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(T===void 0){if(!this._parts.hostname||this.is("IP"))return"";var V=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0,V)||""}else{var W=this._parts.hostname.length-this.domain().length,M=this._parts.hostname.substring(0,W),Q=new RegExp("^"+d(M));if(T&&T.charAt(T.length-1)!=="."&&(T+="."),T.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");return T&&r.ensureValidHostname(T,this._parts.protocol),this._parts.hostname=this._parts.hostname.replace(Q,T),this.build(!L),this}},a.domain=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(typeof T=="boolean"&&(L=T,T=void 0),T===void 0){if(!this._parts.hostname||this.is("IP"))return"";var V=this._parts.hostname.match(/\./g);if(V&&V.length<2)return this._parts.hostname;var W=this._parts.hostname.length-this.tld(L).length-1;return W=this._parts.hostname.lastIndexOf(".",W-1)+1,this._parts.hostname.substring(W)||""}else{if(!T)throw new TypeError("cannot set domain empty");if(T.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");if(r.ensureValidHostname(T,this._parts.protocol),!this._parts.hostname||this.is("IP"))this._parts.hostname=T;else{var M=new RegExp(d(this.domain())+"$");this._parts.hostname=this._parts.hostname.replace(M,T)}return this.build(!L),this}},a.tld=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(typeof T=="boolean"&&(L=T,T=void 0),T===void 0){if(!this._parts.hostname||this.is("IP"))return"";var V=this._parts.hostname.lastIndexOf("."),W=this._parts.hostname.substring(V+1);return L!==!0&&n&&n.list[W.toLowerCase()]&&n.get(this._parts.hostname)||W}else{var M;if(T)if(T.match(/[^a-zA-Z0-9-]/))if(n&&n.is(T))M=new RegExp(d(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(M,T);else throw new TypeError('TLD "'+T+'" contains characters other than [A-Z0-9]');else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");M=new RegExp(d(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(M,T)}else throw new TypeError("cannot set TLD empty");return this.build(!L),this}},a.directory=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(T===void 0||T===!0){if(!this._parts.path&&!this._parts.hostname)return"";if(this._parts.path==="/")return"/";var V=this._parts.path.length-this.filename().length-1,W=this._parts.path.substring(0,V)||(this._parts.hostname?"/":"");return T?r.decodePath(W):W}else{var M=this._parts.path.length-this.filename().length,Q=this._parts.path.substring(0,M),N=new RegExp("^"+d(Q));return this.is("relative")||(T||(T="/"),T.charAt(0)!=="/"&&(T="/"+T)),T&&T.charAt(T.length-1)!=="/"&&(T+="/"),T=r.recodePath(T),this._parts.path=this._parts.path.replace(N,T),this.build(!L),this}},a.filename=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(typeof T!="string"){if(!this._parts.path||this._parts.path==="/")return"";var V=this._parts.path.lastIndexOf("/"),W=this._parts.path.substring(V+1);return T?r.decodePathSegment(W):W}else{var M=!1;T.charAt(0)==="/"&&(T=T.substring(1)),T.match(/\.?\//)&&(M=!0);var Q=new RegExp(d(this.filename())+"$");return T=r.recodePath(T),this._parts.path=this._parts.path.replace(Q,T),M?this.normalizePath(L):this.build(!L),this}},a.suffix=function(T,L){if(this._parts.urn)return T===void 0?"":this;if(T===void 0||T===!0){if(!this._parts.path||this._parts.path==="/")return"";var V=this.filename(),W=V.lastIndexOf("."),M,Q;return W===-1?"":(M=V.substring(W+1),Q=/^[a-z0-9%]+$/i.test(M)?M:"",T?r.decodePathSegment(Q):Q)}else{T.charAt(0)==="."&&(T=T.substring(1));var N=this.suffix(),k;if(N)T?k=new RegExp(d(N)+"$"):k=new RegExp(d("."+N)+"$");else{if(!T)return this;this._parts.path+="."+r.recodePath(T)}return k&&(T=r.recodePath(T),this._parts.path=this._parts.path.replace(k,T)),this.build(!L),this}},a.segment=function(T,L,V){var W=this._parts.urn?":":"/",M=this.path(),Q=M.substring(0,1)==="/",N=M.split(W);if(T!==void 0&&typeof T!="number"&&(V=L,L=T,T=void 0),T!==void 0&&typeof T!="number")throw new Error('Bad segment "'+T+'", must be 0-based integer');if(Q&&N.shift(),T<0&&(T=Math.max(N.length+T,0)),L===void 0)return T===void 0?N:N[T];if(T===null||N[T]===void 0)if(h(L)){N=[];for(var k=0,v=L.length;k{"use strict";var wUn=y(C());xue.exports=QJe;var t2=1e20;function QJe(e,t){t||(t={});var n=t.cutoff==null?.25:t.cutoff,i=t.radius==null?8:t.radius,o=t.channel||0,r,s,a,c,d,u,h,p,g,f,b;if(ArrayBuffer.isView(e)||Array.isArray(e)){if(!t.width||!t.height)throw Error("For raw data width and height should be provided by options");r=t.width,s=t.height,c=e,t.stride?u=t.stride:u=Math.floor(e.length/r/s)}else window.HTMLCanvasElement&&e instanceof window.HTMLCanvasElement?(p=e,h=p.getContext("2d"),r=p.width,s=p.height,g=h.getImageData(0,0,r,s),c=g.data,u=4):window.CanvasRenderingContext2D&&e instanceof window.CanvasRenderingContext2D?(p=e.canvas,h=e,r=p.width,s=p.height,g=h.getImageData(0,0,r,s),c=g.data,u=4):window.ImageData&&e instanceof window.ImageData&&(g=e,r=e.width,s=e.height,c=g.data,u=4);if(a=Math.max(r,s),window.Uint8ClampedArray&&c instanceof window.Uint8ClampedArray||window.Uint8Array&&c instanceof window.Uint8Array)for(d=c,c=Array(r*s),f=0,b=Math.floor(d.length/u);f{var $Un=y(C());function $Je(){var e=0,t=1,n=2,i=3,o=4,r=5,s=6,a=7,c=8,d=9,u=10,h=11,p=12,g=13,f=14,b=15,x=16,I=17,_=0,E=1,S=2,R=3,G=4;function B(A,T){return 55296<=A.charCodeAt(T)&&A.charCodeAt(T)<=56319&&56320<=A.charCodeAt(T+1)&&A.charCodeAt(T+1)<=57343}function w(A,T){T===void 0&&(T=0);var L=A.charCodeAt(T);if(55296<=L&&L<=56319&&T=1){var V=A.charCodeAt(T-1),W=L;return 55296<=V&&V<=56319?(V-55296)*1024+(W-56320)+65536:W}return L}function F(A,T,L){var V=[A].concat(T).concat([L]),W=V[V.length-2],M=L,Q=V.lastIndexOf(f);if(Q>1&&V.slice(1,Q).every(function(v){return v==i})&&[i,g,I].indexOf(A)==-1)return S;var N=V.lastIndexOf(o);if(N>0&&V.slice(1,N).every(function(v){return v==o})&&[p,o].indexOf(W)==-1)return V.filter(function(v){return v==o}).length%2==1?R:G;if(W==e&&M==t)return _;if(W==n||W==e||W==t)return M==f&&T.every(function(v){return v==i})?S:E;if(M==n||M==e||M==t)return E;if(W==s&&(M==s||M==a||M==d||M==u))return _;if((W==d||W==a)&&(M==a||M==c))return _;if((W==u||W==c)&&M==c)return _;if(M==i||M==b)return _;if(M==r)return _;if(W==p)return _;var k=V.indexOf(i)!=-1?V.lastIndexOf(i)-1:V.length-2;return[g,I].indexOf(V[k])!=-1&&V.slice(k+1,-1).every(function(v){return v==i})&&M==f||W==b&&[x,I].indexOf(M)!=-1?_:T.indexOf(o)!=-1?S:W==o&&M==o?_:E}this.nextBreak=function(A,T){if(T===void 0&&(T=0),T<0)return 0;if(T>=A.length-1)return A.length;for(var L=P(w(A,T)),V=[],W=T+1;W{var weo=y(C());/*! + * protobuf.js v7.5.3 (c) 2016, daniel wirtz + * compiled wed, 28 may 2025 22:23:47 utc + * licensed under the bsd-3-clause license + * see: https://github.com/dcodeio/protobuf.js for details + */(function(undefined){"use strict";(function(t,n,i){function o(s){var a=n[s];return a||t[s][0].call(a=n[s]={exports:{}},o,a,a.exports),a.exports}var r=o(i[0]);r.util.global.protobuf=r,typeof define=="function"&&define.amd&&define(["long"],function(s){return s&&s.isLong&&(r.util.Long=s,r.configure()),r}),typeof module=="object"&&module&&module.exports&&(module.exports=r)})({1:[function(e,t,n){"use strict";t.exports=i;function i(o,r){for(var s=new Array(arguments.length-1),a=0,c=2,d=!0;c1&&d.charAt(u)==="=";)++h;return Math.ceil(d.length*3)/4-h};for(var o=new Array(64),r=new Array(123),s=0;s<64;)r[o[s]=s<26?s+65:s<52?s+71:s<62?s-4:s-59|43]=s++;i.encode=function(d,u,h){for(var p=null,g=[],f=0,b=0,x;u>2],x=(I&3)<<4,b=1;break;case 1:g[f++]=o[x|I>>4],x=(I&15)<<2,b=2;break;case 2:g[f++]=o[x|I>>6],g[f++]=o[I&63],b=0;break}f>8191&&((p||(p=[])).push(String.fromCharCode.apply(String,g)),f=0)}return b&&(g[f++]=o[x],g[f++]=61,b===1&&(g[f++]=61)),p?(f&&p.push(String.fromCharCode.apply(String,g.slice(0,f))),p.join("")):String.fromCharCode.apply(String,g.slice(0,f))};var a="invalid encoding";i.decode=function(d,u,h){for(var p=h,g=0,f,b=0;b1)break;if((x=r[x])===undefined)throw Error(a);switch(g){case 0:f=x,g=1;break;case 1:u[h++]=f<<2|(x&48)>>4,f=x,g=2;break;case 2:u[h++]=(f&15)<<4|(x&60)>>2,f=x,g=3;break;case 3:u[h++]=(f&3)<<6|x,g=0;break}}if(g===1)throw Error(a);return h-p},i.test=function(d){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(d)}},{}],3:[function(e,t,n){"use strict";t.exports=i;function i(){this._listeners={}}i.prototype.on=function(r,s,a){return(this._listeners[r]||(this._listeners[r]=[])).push({fn:s,ctx:a||this}),this},i.prototype.off=function(r,s){if(r===undefined)this._listeners={};else if(s===undefined)this._listeners[r]=[];else for(var a=this._listeners[r],c=0;c0?0:2147483648,g,f);else if(isNaN(p))h(2143289344,g,f);else if(p>34028234663852886e22)h((b<<31|2139095040)>>>0,g,f);else if(p<11754943508222875e-54)h((b<<31|Math.round(p/1401298464324817e-60))>>>0,g,f);else{var x=Math.floor(Math.log(p)/Math.LN2),I=Math.round(p*Math.pow(2,-x)*8388608)&8388607;h((b<<31|x+127<<23|I)>>>0,g,f)}}c.writeFloatLE=d.bind(null,o),c.writeFloatBE=d.bind(null,r);function u(h,p,g){var f=h(p,g),b=(f>>31)*2+1,x=f>>>23&255,I=f&8388607;return x===255?I?NaN:b*(1/0):x===0?b*1401298464324817e-60*I:b*Math.pow(2,x-150)*(I+8388608)}c.readFloatLE=u.bind(null,s),c.readFloatBE=u.bind(null,a)}(),typeof Float64Array<"u"?function(){var d=new Float64Array([-0]),u=new Uint8Array(d.buffer),h=u[7]===128;function p(x,I,_){d[0]=x,I[_]=u[0],I[_+1]=u[1],I[_+2]=u[2],I[_+3]=u[3],I[_+4]=u[4],I[_+5]=u[5],I[_+6]=u[6],I[_+7]=u[7]}function g(x,I,_){d[0]=x,I[_]=u[7],I[_+1]=u[6],I[_+2]=u[5],I[_+3]=u[4],I[_+4]=u[3],I[_+5]=u[2],I[_+6]=u[1],I[_+7]=u[0]}c.writeDoubleLE=h?p:g,c.writeDoubleBE=h?g:p;function f(x,I){return u[0]=x[I],u[1]=x[I+1],u[2]=x[I+2],u[3]=x[I+3],u[4]=x[I+4],u[5]=x[I+5],u[6]=x[I+6],u[7]=x[I+7],d[0]}function b(x,I){return u[7]=x[I],u[6]=x[I+1],u[5]=x[I+2],u[4]=x[I+3],u[3]=x[I+4],u[2]=x[I+5],u[1]=x[I+6],u[0]=x[I+7],d[0]}c.readDoubleLE=h?f:b,c.readDoubleBE=h?b:f}():function(){function d(h,p,g,f,b,x){var I=f<0?1:0;if(I&&(f=-f),f===0)h(0,b,x+p),h(1/f>0?0:2147483648,b,x+g);else if(isNaN(f))h(0,b,x+p),h(2146959360,b,x+g);else if(f>17976931348623157e292)h(0,b,x+p),h((I<<31|2146435072)>>>0,b,x+g);else{var _;if(f<22250738585072014e-324)_=f/5e-324,h(_>>>0,b,x+p),h((I<<31|_/4294967296)>>>0,b,x+g);else{var E=Math.floor(Math.log(f)/Math.LN2);E===1024&&(E=1023),_=f*Math.pow(2,-E),h(_*4503599627370496>>>0,b,x+p),h((I<<31|E+1023<<20|_*1048576&1048575)>>>0,b,x+g)}}}c.writeDoubleLE=d.bind(null,o,0,4),c.writeDoubleBE=d.bind(null,r,4,0);function u(h,p,g,f,b){var x=h(f,b+p),I=h(f,b+g),_=(I>>31)*2+1,E=I>>>20&2047,S=4294967296*(I&1048575)+x;return E===2047?S?NaN:_*(1/0):E===0?_*5e-324*S:_*Math.pow(2,E-1075)*(S+4503599627370496)}c.readDoubleLE=u.bind(null,s,0,4),c.readDoubleBE=u.bind(null,a,4,0)}(),c}function o(c,d,u){d[u]=c&255,d[u+1]=c>>>8&255,d[u+2]=c>>>16&255,d[u+3]=c>>>24}function r(c,d,u){d[u]=c>>>24,d[u+1]=c>>>16&255,d[u+2]=c>>>8&255,d[u+3]=c&255}function s(c,d){return(c[d]|c[d+1]<<8|c[d+2]<<16|c[d+3]<<24)>>>0}function a(c,d){return(c[d]<<24|c[d+1]<<16|c[d+2]<<8|c[d+3])>>>0}},{}],5:[function(require,module,exports){"use strict";module.exports=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(e){}return null}},{}],6:[function(e,t,n){"use strict";t.exports=i;function i(o,r,s){var a=s||8192,c=a>>>1,d=null,u=a;return function(p){if(p<1||p>c)return o(p);u+p>a&&(d=o(a),u=0);var g=r.call(d,u,u+=p);return u&7&&(u=(u|7)+1),g}}},{}],7:[function(e,t,n){"use strict";var i=n;i.length=function(r){for(var s=0,a=0,c=0;c191&&p<224?u[h++]=(p&31)<<6|r[s++]&63:p>239&&p<365?(p=((p&7)<<18|(r[s++]&63)<<12|(r[s++]&63)<<6|r[s++]&63)-65536,u[h++]=55296+(p>>10),u[h++]=56320+(p&1023)):u[h++]=(p&15)<<12|(r[s++]&63)<<6|r[s++]&63,h>8191&&((d||(d=[])).push(String.fromCharCode.apply(String,u)),h=0);return d?(h&&d.push(String.fromCharCode.apply(String,u.slice(0,h))),d.join("")):String.fromCharCode.apply(String,u.slice(0,h))},i.write=function(r,s,a){for(var c=a,d,u,h=0;h>6|192,s[a++]=d&63|128):(d&64512)===55296&&((u=r.charCodeAt(h+1))&64512)===56320?(d=65536+((d&1023)<<10)+(u&1023),++h,s[a++]=d>>18|240,s[a++]=d>>12&63|128,s[a++]=d>>6&63|128,s[a++]=d&63|128):(s[a++]=d>>12|224,s[a++]=d>>6&63|128,s[a++]=d&63|128);return a-c}},{}],8:[function(e,t,n){"use strict";var i=n;i.build="minimal",i.Writer=e(16),i.BufferWriter=e(17),i.Reader=e(9),i.BufferReader=e(10),i.util=e(15),i.rpc=e(12),i.roots=e(11),i.configure=o;function o(){i.util._configure(),i.Writer._configure(i.BufferWriter),i.Reader._configure(i.BufferReader)}o()},{10:10,11:11,12:12,15:15,16:16,17:17,9:9}],9:[function(e,t,n){"use strict";t.exports=c;var i=e(15),o,r=i.LongBits,s=i.utf8;function a(f,b){return RangeError("index out of range: "+f.pos+" + "+(b||1)+" > "+f.len)}function c(f){this.buf=f,this.pos=0,this.len=f.length}var d=typeof Uint8Array<"u"?function(b){if(b instanceof Uint8Array||Array.isArray(b))return new c(b);throw Error("illegal buffer")}:function(b){if(Array.isArray(b))return new c(b);throw Error("illegal buffer")},u=function(){return i.Buffer?function(x){return(c.create=function(_){return i.Buffer.isBuffer(_)?new o(_):d(_)})(x)}:d};c.create=u(),c.prototype._slice=i.Array.prototype.subarray||i.Array.prototype.slice,c.prototype.uint32=function(){var b=4294967295;return function(){if(b=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(b=(b|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(b=(b|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(b=(b|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(b=(b|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return b;if((this.pos+=5)>this.len)throw this.pos=this.len,a(this,10);return b}}(),c.prototype.int32=function(){return this.uint32()|0},c.prototype.sint32=function(){var b=this.uint32();return b>>>1^-(b&1)|0};function h(){var f=new r(0,0),b=0;if(this.len-this.pos>4){for(;b<4;++b)if(f.lo=(f.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return f;if(f.lo=(f.lo|(this.buf[this.pos]&127)<<28)>>>0,f.hi=(f.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return f;b=0}else{for(;b<3;++b){if(this.pos>=this.len)throw a(this);if(f.lo=(f.lo|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return f}return f.lo=(f.lo|(this.buf[this.pos++]&127)<>>0,f}if(this.len-this.pos>4){for(;b<5;++b)if(f.hi=(f.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return f}else for(;b<5;++b){if(this.pos>=this.len)throw a(this);if(f.hi=(f.hi|(this.buf[this.pos]&127)<>>0,this.buf[this.pos++]<128)return f}throw Error("invalid varint encoding")}c.prototype.bool=function(){return this.uint32()!==0};function p(f,b){return(f[b-4]|f[b-3]<<8|f[b-2]<<16|f[b-1]<<24)>>>0}c.prototype.fixed32=function(){if(this.pos+4>this.len)throw a(this,4);return p(this.buf,this.pos+=4)},c.prototype.sfixed32=function(){if(this.pos+4>this.len)throw a(this,4);return p(this.buf,this.pos+=4)|0};function g(){if(this.pos+8>this.len)throw a(this,8);return new r(p(this.buf,this.pos+=4),p(this.buf,this.pos+=4))}c.prototype.float=function(){if(this.pos+4>this.len)throw a(this,4);var b=i.float.readFloatLE(this.buf,this.pos);return this.pos+=4,b},c.prototype.double=function(){if(this.pos+8>this.len)throw a(this,4);var b=i.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,b},c.prototype.bytes=function(){var b=this.uint32(),x=this.pos,I=this.pos+b;if(I>this.len)throw a(this,b);if(this.pos+=b,Array.isArray(this.buf))return this.buf.slice(x,I);if(x===I){var _=i.Buffer;return _?_.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,x,I)},c.prototype.string=function(){var b=this.bytes();return s.read(b,0,b.length)},c.prototype.skip=function(b){if(typeof b=="number"){if(this.pos+b>this.len)throw a(this,b);this.pos+=b}else do if(this.pos>=this.len)throw a(this);while(this.buf[this.pos++]&128);return this},c.prototype.skipType=function(f){switch(f){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(f=this.uint32()&7)!==4;)this.skipType(f);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+f+" at offset "+this.pos)}return this},c._configure=function(f){o=f,c.create=u(),o._configure();var b=i.Long?"toLong":"toNumber";i.merge(c.prototype,{int64:function(){return h.call(this)[b](!1)},uint64:function(){return h.call(this)[b](!0)},sint64:function(){return h.call(this).zzDecode()[b](!1)},fixed64:function(){return g.call(this)[b](!0)},sfixed64:function(){return g.call(this)[b](!1)}})}},{15:15}],10:[function(e,t,n){"use strict";t.exports=r;var i=e(9);(r.prototype=Object.create(i.prototype)).constructor=r;var o=e(15);function r(s){i.call(this,s)}r._configure=function(){o.Buffer&&(r.prototype._slice=o.Buffer.prototype.slice)},r.prototype.string=function(){var a=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+a,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+a,this.len))},r._configure()},{15:15,9:9}],11:[function(e,t,n){"use strict";t.exports={}},{}],12:[function(e,t,n){"use strict";var i=n;i.Service=e(13)},{13:13}],13:[function(e,t,n){"use strict";t.exports=o;var i=e(15);(o.prototype=Object.create(i.EventEmitter.prototype)).constructor=o;function o(r,s,a){if(typeof r!="function")throw TypeError("rpcImpl must be a function");i.EventEmitter.call(this),this.rpcImpl=r,this.requestDelimited=!!s,this.responseDelimited=!!a}o.prototype.rpcCall=function r(s,a,c,d,u){if(!d)throw TypeError("request must be specified");var h=this;if(!u)return i.asPromise(r,h,s,a,c,d);if(!h.rpcImpl)return setTimeout(function(){u(Error("already ended"))},0),undefined;try{return h.rpcImpl(s,a[h.requestDelimited?"encodeDelimited":"encode"](d).finish(),function(g,f){if(g)return h.emit("error",g,s),u(g);if(f===null)return h.end(!0),undefined;if(!(f instanceof c))try{f=c[h.responseDelimited?"decodeDelimited":"decode"](f)}catch(b){return h.emit("error",b,s),u(b)}return h.emit("data",f,s),u(null,f)})}catch(p){return h.emit("error",p,s),setTimeout(function(){u(p)},0),undefined}},o.prototype.end=function(s){return this.rpcImpl&&(s||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}},{15:15}],14:[function(e,t,n){"use strict";t.exports=o;var i=e(15);function o(c,d){this.lo=c>>>0,this.hi=d>>>0}var r=o.zero=new o(0,0);r.toNumber=function(){return 0},r.zzEncode=r.zzDecode=function(){return this},r.length=function(){return 1};var s=o.zeroHash="\0\0\0\0\0\0\0\0";o.fromNumber=function(d){if(d===0)return r;var u=d<0;u&&(d=-d);var h=d>>>0,p=(d-h)/4294967296>>>0;return u&&(p=~p>>>0,h=~h>>>0,++h>4294967295&&(h=0,++p>4294967295&&(p=0))),new o(h,p)},o.from=function(d){if(typeof d=="number")return o.fromNumber(d);if(i.isString(d))if(i.Long)d=i.Long.fromString(d);else return o.fromNumber(parseInt(d,10));return d.low||d.high?new o(d.low>>>0,d.high>>>0):r},o.prototype.toNumber=function(d){if(!d&&this.hi>>>31){var u=~this.lo+1>>>0,h=~this.hi>>>0;return u||(h=h+1>>>0),-(u+h*4294967296)}return this.lo+this.hi*4294967296},o.prototype.toLong=function(d){return i.Long?new i.Long(this.lo|0,this.hi|0,!!d):{low:this.lo|0,high:this.hi|0,unsigned:!!d}};var a=String.prototype.charCodeAt;o.fromHash=function(d){return d===s?r:new o((a.call(d,0)|a.call(d,1)<<8|a.call(d,2)<<16|a.call(d,3)<<24)>>>0,(a.call(d,4)|a.call(d,5)<<8|a.call(d,6)<<16|a.call(d,7)<<24)>>>0)},o.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},o.prototype.zzEncode=function(){var d=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^d)>>>0,this.lo=(this.lo<<1^d)>>>0,this},o.prototype.zzDecode=function(){var d=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^d)>>>0,this.hi=(this.hi>>>1^d)>>>0,this},o.prototype.length=function(){var d=this.lo,u=(this.lo>>>28|this.hi<<4)>>>0,h=this.hi>>>24;return h===0?u===0?d<16384?d<128?1:2:d<2097152?3:4:u<16384?u<128?5:6:u<2097152?7:8:h<128?9:10}},{15:15}],15:[function(e,t,n){"use strict";var i=n;i.asPromise=e(1),i.base64=e(2),i.EventEmitter=e(3),i.float=e(4),i.inquire=e(5),i.utf8=e(7),i.pool=e(6),i.LongBits=e(14),i.isNode=!!(typeof global<"u"&&global&&global.process&&global.process.versions&&global.process.versions.node),i.global=i.isNode&&global||typeof window<"u"&&window||typeof self<"u"&&self||this,i.emptyArray=Object.freeze?Object.freeze([]):[],i.emptyObject=Object.freeze?Object.freeze({}):{},i.isInteger=Number.isInteger||function(a){return typeof a=="number"&&isFinite(a)&&Math.floor(a)===a},i.isString=function(a){return typeof a=="string"||a instanceof String},i.isObject=function(a){return a&&typeof a=="object"},i.isset=i.isSet=function(a,c){var d=a[c];return d!=null&&a.hasOwnProperty(c)?typeof d!="object"||(Array.isArray(d)?d.length:Object.keys(d).length)>0:!1},i.Buffer=function(){try{var s=i.inquire("buffer").Buffer;return s.prototype.utf8Write?s:null}catch{return null}}(),i._Buffer_from=null,i._Buffer_allocUnsafe=null,i.newBuffer=function(a){return typeof a=="number"?i.Buffer?i._Buffer_allocUnsafe(a):new i.Array(a):i.Buffer?i._Buffer_from(a):typeof Uint8Array>"u"?a:new Uint8Array(a)},i.Array=typeof Uint8Array<"u"?Uint8Array:Array,i.Long=i.global.dcodeIO&&i.global.dcodeIO.Long||i.global.Long||i.inquire("long"),i.key2Re=/^true|false|0|1$/,i.key32Re=/^-?(?:0|[1-9][0-9]*)$/,i.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,i.longToHash=function(a){return a?i.LongBits.from(a).toHash():i.LongBits.zeroHash},i.longFromHash=function(a,c){var d=i.LongBits.fromHash(a);return i.Long?i.Long.fromBits(d.lo,d.hi,c):d.toNumber(!!c)};function o(s,a,c){for(var d=Object.keys(a),u=0;u-1;--h)if(c[u[h]]===1&&this[u[h]]!==undefined&&this[u[h]]!==null)return u[h]}},i.oneOfSetter=function(a){return function(c){for(var d=0;d127;)S[R++]=E&127|128,E>>>=7;S[R]=E}function b(E,S){this.len=E,this.next=undefined,this.val=S}b.prototype=Object.create(c.prototype),b.prototype.fn=f,h.prototype.uint32=function(S){return this.len+=(this.tail=this.tail.next=new b((S=S>>>0)<128?1:S<16384?2:S<2097152?3:S<268435456?4:5,S)).len,this},h.prototype.int32=function(S){return S<0?this._push(x,10,r.fromNumber(S)):this.uint32(S)},h.prototype.sint32=function(S){return this.uint32((S<<1^S>>31)>>>0)};function x(E,S,R){for(;E.hi;)S[R++]=E.lo&127|128,E.lo=(E.lo>>>7|E.hi<<25)>>>0,E.hi>>>=7;for(;E.lo>127;)S[R++]=E.lo&127|128,E.lo=E.lo>>>7;S[R++]=E.lo}h.prototype.uint64=function(S){var R=r.from(S);return this._push(x,R.length(),R)},h.prototype.int64=h.prototype.uint64,h.prototype.sint64=function(S){var R=r.from(S).zzEncode();return this._push(x,R.length(),R)},h.prototype.bool=function(S){return this._push(g,1,S?1:0)};function I(E,S,R){S[R]=E&255,S[R+1]=E>>>8&255,S[R+2]=E>>>16&255,S[R+3]=E>>>24}h.prototype.fixed32=function(S){return this._push(I,4,S>>>0)},h.prototype.sfixed32=h.prototype.fixed32,h.prototype.fixed64=function(S){var R=r.from(S);return this._push(I,4,R.lo)._push(I,4,R.hi)},h.prototype.sfixed64=h.prototype.fixed64,h.prototype.float=function(S){return this._push(i.float.writeFloatLE,4,S)},h.prototype.double=function(S){return this._push(i.float.writeDoubleLE,8,S)};var _=i.Array.prototype.set?function(S,R,G){R.set(S,G)}:function(S,R,G){for(var B=0;B>>0;if(!R)return this._push(g,1,0);if(i.isString(S)){var G=h.alloc(R=s.length(S));s.decode(S,G,0),S=G}return this.uint32(R)._push(_,R,S)},h.prototype.string=function(S){var R=a.length(S);return R?this.uint32(R)._push(a.write,R,S):this._push(g,1,0)},h.prototype.fork=function(){return this.states=new u(this),this.head=this.tail=new c(d,0,0),this.len=0,this},h.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new c(d,0,0),this.len=0),this},h.prototype.ldelim=function(){var S=this.head,R=this.tail,G=this.len;return this.reset().uint32(G),G&&(this.tail.next=S.next,this.tail=R,this.len+=G),this},h.prototype.finish=function(){for(var S=this.head.next,R=this.constructor.alloc(this.len),G=0;S;)S.fn(S.val,R,G),G+=S.len,S=S.next;return R},h._configure=function(E){o=E,h.create=p(),o._configure()}},{15:15}],17:[function(e,t,n){"use strict";t.exports=r;var i=e(16);(r.prototype=Object.create(i.prototype)).constructor=r;var o=e(15);function r(){i.call(this)}r._configure=function(){r.alloc=o._Buffer_allocUnsafe,r.writeBytesBuffer=o.Buffer&&o.Buffer.prototype instanceof Uint8Array&&o.Buffer.prototype.set.name==="set"?function(c,d,u){d.set(c,u)}:function(c,d,u){if(c.copy)c.copy(d,u,0,c.length);else for(var h=0;h>>0;return this.uint32(d),d&&this._push(r.writeBytesBuffer,d,c),this};function s(a,c,d){a.length<40?o.utf8.write(a,c,d):c.utf8Write?c.utf8Write(a,d):c.write(a,d)}r.prototype.string=function(c){var d=o.Buffer.byteLength(c);return this.uint32(d),d&&this._push(s,d,c),this},r._configure()},{15:15,16:16}]},{},[8])})()});var kTe=Pu((Wco,JY)=>{var Fco=y(C());/* Copyright 2015-2018 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */(function(){var e=function(){var o={};o.defaultNoDataValue=-34027999387901484e22,o.decode=function(u,h){h=h||{};var p=h.encodedMaskData||h.encodedMaskData===null,g=c(u,h.inputOffset||0,p),f=h.noDataValue!==null?h.noDataValue:o.defaultNoDataValue,b=r(g,h.pixelType||Float32Array,h.encodedMaskData,f,h.returnMask),x={width:g.width,height:g.height,pixelData:b.resultPixels,minValue:b.minValue,maxValue:g.pixels.maxValue,noDataValue:f};return b.resultMask&&(x.maskData=b.resultMask),h.returnEncodedMask&&g.mask&&(x.encodedMaskData=g.mask.bitset?g.mask.bitset:null),h.returnFileInfo&&(x.fileInfo=s(g),h.computeUsedBitDepths&&(x.fileInfo.bitDepths=a(g))),x};var r=function(u,h,p,g,f){var b=0,x=u.pixels.numBlocksX,I=u.pixels.numBlocksY,_=Math.floor(u.width/x),E=Math.floor(u.height/I),S=2*u.maxZError,R=Number.MAX_VALUE,G;p=p||(u.mask?u.mask.bitset:null);var B,w;B=new h(u.width*u.height),f&&p&&(w=new Uint8Array(u.width*u.height));for(var F=new Float32Array(_*E),P,A,T=0;T<=I;T++){var L=T!==I?E:u.height%I;if(L!==0)for(var V=0;V<=x;V++){var W=V!==x?_:u.width%x;if(W!==0){var M=T*u.width*E+V*_,Q=u.width-W,N=u.pixels.blocks[b],k,v,O;N.encoding<2?(N.encoding===0?k=N.rawData:(d(N.stuffedData,N.bitsPerPixel,N.numValidPixels,N.offset,S,F,u.pixels.maxValue),k=F),v=0):N.encoding===2?O=0:O=N.offset;var H;if(p)for(A=0;A>3],H<<=M&7),P=0;P>3]),H&128?(w&&(w[M]=1),G=N.encoding<2?k[v++]:O,R=R>G?G:R,B[M++]=G):(w&&(w[M]=0),B[M++]=g),H<<=1;M+=Q}else if(N.encoding<2)for(A=0;AG?G:R,B[M++]=G;M+=Q}else for(R=R>O?O:R,A=0;A0){var x=new Uint8Array(Math.ceil(g.width*g.height/8));b=new DataView(u,h,g.mask.numBytes);var I=b.getInt16(0,!0),_=2,E=0;do{if(I>0)for(;I--;)x[E++]=b.getUint8(_++);else{var S=b.getUint8(_++);for(I=-I;I--;)x[E++]=S}I=b.getInt16(_,!0),_+=2}while(_0?1:0),w=G+(g.height%G>0?1:0);g.pixels.blocks=new Array(B*w);for(var F=0,P=0;P3)throw"Invalid block encoding ("+V.encoding+")";if(V.encoding===2){h++;continue}if(W!==0&&W!==2){if(W>>=6,V.offsetType=W,W===2)V.offset=b.getInt8(1),T++;else if(W===1)V.offset=b.getInt16(1,!0),T+=2;else if(W===0)V.offset=b.getFloat32(1,!0),T+=4;else throw"Invalid block offset type";if(V.encoding===1)if(W=b.getUint8(T),T++,V.bitsPerPixel=W&63,W>>=6,V.numValidPixelsType=W,W===2)V.numValidPixels=b.getUint8(T),T++;else if(W===1)V.numValidPixels=b.getUint16(T,!0),T+=2;else if(W===0)V.numValidPixels=b.getUint32(T,!0),T+=4;else throw"Invalid valid pixel count type"}if(h+=T,V.encoding!==3){var M,Q;if(V.encoding===0){var N=(g.pixels.numBytes-1)/4;if(N!==Math.floor(N))throw"uncompressed block has invalid length";M=new ArrayBuffer(N*4),Q=new Uint8Array(M),Q.set(new Uint8Array(u,h,N*4));var k=new Float32Array(M);V.rawData=k,h+=N*4}else if(V.encoding===1){var v=Math.ceil(V.numValidPixels*V.bitsPerPixel/8),O=Math.ceil(v/4);M=new ArrayBuffer(O*4),Q=new Uint8Array(M),Q.set(new Uint8Array(u,h,v)),V.stuffedData=new Uint32Array(M),h+=v}}}return g.eofOffset=h,g},d=function(u,h,p,g,f,b,x){var I=(1<=h)R=G>>>S-h&I,S-=h;else{var F=h-S;R=(G&I)<>>S}b[E]=R=u?(S=R>>>E-u&x,E-=u):(G=u-E,S=(R&x)<>>E),d[_]=p[S];else for(B=Math.ceil((b-g)/f),_=0;_=u?(S=R>>>E-u&x,E-=u):(G=u-E,S=(R&x)<>>E),d[_]=S=d?(E=S>>>_-d&f,_-=d):(I=d-_,E=(S&f)<>>_),R[x]=E=u?(R=G>>>S&x,E-=u,S+=u):(B=u-E,R=G>>>S&x,G=c[I++],E=32-B,R|=(G&(1<=u?(R=G>>>S&x,E-=u,S+=u):(B=u-E,R=G>>>S&x,G=c[I++],E=32-B,R|=(G&(1<=d?(E=R>>>S&f,_-=d,S+=d):(I=d-_,E=R>>>S&f,R=c[b++],_=32-I,E|=(R&(1<=u?(x=I>>>b-u&p,b-=u):(_=u-b,x=(I&p)<<_&p,I=c[g++],b=32-_,x+=I>>>b),d[f]=x;return d},originalUnstuff2:function(c,d,u,h){var p=(1<=u?(I=_>>>x&p,b-=u,x+=u):(E=u-b,I=_>>>x&p,_=c[g++],b=32-E,I|=(_&(1<=359?359:p;p-=f;do d+=c[g++]<<8,u+=d+=c[g++];while(--f);d=(d&65535)+(d>>>16),u=(u&65535)+(u>>>16)}return h&1&&(u+=d+=c[g]<<8),d=(d&65535)+(d>>>16),u=(u&65535)+(u>>>16),(u<<16|d)>>>0},readHeaderInfo:function(c,d){var u=d.ptr,h=new Uint8Array(c,u,6),p={};if(p.fileIdentifierString=String.fromCharCode.apply(null,h),p.fileIdentifierString.lastIndexOf("Lerc2",0)!==0)throw"Unexpected file identifier string (expect Lerc2 ): "+p.fileIdentifierString;u+=6;var g=new DataView(c,u,8),f=g.getInt32(0,!0);p.fileVersion=f,u+=4,f>=3&&(p.checksum=g.getUint32(4,!0),u+=4),g=new DataView(c,u,12),p.height=g.getUint32(0,!0),p.width=g.getUint32(4,!0),u+=8,f>=4?(p.numDims=g.getUint32(8,!0),u+=4):p.numDims=1,g=new DataView(c,u,40),p.numValidPixel=g.getUint32(0,!0),p.microBlockSize=g.getInt32(4,!0),p.blobSize=g.getInt32(8,!0),p.imageType=g.getInt32(12,!0),p.maxZError=g.getFloat64(16,!0),p.zMin=g.getFloat64(24,!0),p.zMax=g.getFloat64(32,!0),u+=40,d.headerInfo=p,d.ptr=u;var b,x;if(f>=3&&(x=f>=4?52:48,b=this.computeChecksumFletcher32(new Uint8Array(c,u-x,p.blobSize-14)),b!==p.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(c,d){var u=d.headerInfo,h=this.getDataTypeArray(u.imageType),p=u.numDims*this.getDataTypeSize(u.imageType),g=this.readSubArray(c,d.ptr,h,p),f=this.readSubArray(c,d.ptr+p,h,p);d.ptr+=2*p;var b,x=!0;for(b=0;b0){x=new Uint8Array(Math.ceil(p/8)),f=new DataView(c,u,b.numBytes);var _=f.getInt16(0,!0),E=2,S=0,R=0;do{if(_>0)for(;_--;)x[S++]=f.getUint8(E++);else for(R=f.getUint8(E++),_=-_;_--;)x[S++]=R;_=f.getInt16(E,!0),E+=2}while(E>3],G<<=B&7):G=x[B>>3],G&128&&(I[B]=1);d.pixels.resultMask=I,b.bitset=x,u+=b.numBytes}return d.ptr=u,d.mask=b,!0},readDataOneSweep:function(c,d,u){var h=d.ptr,p=d.headerInfo,g=p.numDims,f=p.width*p.height,b=p.imageType,x=p.numValidPixel*r.getDataTypeSize(b)*g,I,_=d.pixels.resultMask;if(u===Uint8Array)I=new Uint8Array(c,h,x);else{var E=new ArrayBuffer(x),S=new Uint8Array(E);S.set(new Uint8Array(c,h,x)),I=new u(E)}if(I.length===f*g)d.pixels.resultPixels=I;else{d.pixels.resultPixels=new u(f*g);var R=0,G=0,B=0,w=0;if(g>1)for(B=0;B=b)return!1;var x=new Uint32Array(b-f);r.decodeBits(c,d,x);var I=[],_,E,S,R;for(_=f;_0&&(I[E].second=T<
    >>32-R,32-A>=R?(A+=R,A===32&&(A=0,L++,T=P[L])):(A+=R-32,L++,T=P[L],I[E].second|=T>>>32-A));var V=0,W=0,M=new s;for(_=0;_=u?W=u:W=V,V>=30&&console.log("WARning, large NUM LUT BITS IS "+V);var Q=[],N,k,v,O,H,ee;for(_=f;_0)if(N=[R,E],R<=W)for(k=I[E].second<=0;O--)H=k>>>O&1,H?(ee.right||(ee.right=new s),ee=ee.right):(ee.left||(ee.left=new s),ee=ee.left),O===0&&!ee.val&&(ee.val=N[1]);return{decodeLut:Q,numBitsLUTQick:W,numBitsLUT:V,tree:M,stuffedData:P,srcPtr:L,bitPos:A}},readHuffman:function(c,d,u){var h=d.headerInfo,p=h.numDims,g=d.headerInfo.height,f=d.headerInfo.width,b=f*g,x=this.readHuffmanTree(c,d),I=x.decodeLut,_=x.tree,E=x.stuffedData,S=x.srcPtr,R=x.bitPos,G=x.numBitsLUTQick,B=x.numBitsLUT,w=d.headerInfo.imageType===0?128:0,F,P,A,T=d.pixels.resultMask,L,V,W,M,Q,N,k,v=0;R>0&&(S++,R=0);var O=E[S],H=d.encodeMode===1,ee=new u(b*p),K=ee,te;for(te=0;te1&&(K=new u(ee.buffer,b*te,b),v=0),d.headerInfo.numValidPixel===f*g)for(N=0,M=0;M>>32-G,V=L,32-R>>64-R-G,V=L),I[V])P=I[V][1],R+=I[V][0];else for(L=O<>>32-B,V=L,32-R>>64-R-B,V=L),F=_,k=0;k>>B-k-1&1,F=W?F.right:F.left,!(F.left||F.right)){P=F.val,R=R+k+1;break}R>=32&&(R-=32,S++,O=E[S]),A=P-w,H?(Q>0?A+=v:M>0?A+=K[N-f]:A+=v,A&=255,K[N]=A,v=A):K[N]=A}else for(N=0,M=0;M>>32-G,V=L,32-R>>64-R-G,V=L),I[V])P=I[V][1],R+=I[V][0];else for(L=O<>>32-B,V=L,32-R>>64-R-B,V=L),F=_,k=0;k>>B-k-1&1,F=W?F.right:F.left,!(F.left||F.right)){P=F.val,R=R+k+1;break}R>=32&&(R-=32,S++,O=E[S]),A=P-w,H?(Q>0&&T[N-1]?A+=v:M>0&&T[N-f]?A+=K[N-f]:A+=v,A&=255,K[N]=A,v=A):K[N]=A}d.ptr=d.ptr+(S+1)*4+(R>0?4:0)}d.pixels.resultPixels=ee},decodeBits:function(c,d,u,h,p){{var g=d.headerInfo,f=g.fileVersion,b=0,x=new DataView(c,d.ptr,5),I=x.getUint8(0);b++;var _=I>>6,E=_===0?4:3-_,S=(I&32)>0,R=I&31,G=0;if(E===1)G=x.getUint8(b),b++;else if(E===2)G=x.getUint16(b,!0),b+=2;else if(E===4)G=x.getUint32(b,!0),b+=4;else throw"Invalid valid pixel count type";var B=2*g.maxZError,w,F,P,A,T,L,V,W,M,Q,N=g.numDims>1?g.maxValues[p]:g.zMax;if(S){for(d.counter.lut++,W=x.getUint8(b),M=R,b++,A=Math.ceil((W-1)*R/8),T=Math.ceil(A/4),F=new ArrayBuffer(T*4),P=new Uint8Array(F),d.ptr+=b,P.set(new Uint8Array(c,d.ptr,A)),V=new Uint32Array(F),d.ptr+=A,Q=0;W-1>>>Q;)Q++;A=Math.ceil(G*Q/8),T=Math.ceil(A/4),F=new ArrayBuffer(T*4),P=new Uint8Array(F),P.set(new Uint8Array(c,d.ptr,A)),w=new Uint32Array(F),d.ptr+=A,f>=3?L=o.unstuffLUT2(V,R,W-1,h,B,N):L=o.unstuffLUT(V,R,W-1,h,B,N),f>=3?o.unstuff2(w,u,Q,G,L):o.unstuff(w,u,Q,G,L)}else d.counter.bitstuffer++,Q=R,d.ptr+=b,Q>0&&(A=Math.ceil(G*Q/8),T=Math.ceil(A/4),F=new ArrayBuffer(T*4),P=new Uint8Array(F),P.set(new Uint8Array(c,d.ptr,A)),w=new Uint32Array(F),d.ptr+=A,f>=3?h==null?o.originalUnstuff2(w,u,Q,G):o.unstuff2(w,u,Q,G,!1,h,B,N):h==null?o.originalUnstuff(w,u,Q,G):o.unstuff(w,u,Q,G,!1,h,B,N))}},readTiles:function(c,d,u){var h=d.headerInfo,p=h.width,g=h.height,f=h.microBlockSize,b=h.imageType,x=r.getDataTypeSize(b),I=Math.ceil(p/f),_=Math.ceil(g/f);d.pixels.numBlocksY=_,d.pixels.numBlocksX=I,d.pixels.ptr=0;var E=0,S=0,R=0,G=0,B=0,w=0,F=0,P=0,A=0,T=0,L=0,V=0,W=0,M=0,Q=0,N=0,k,v,O,H,ee,K,te=new u(f*f),q=g%f||f,pe=p%f||f,ye,he,xe=h.numDims,Te,Be=d.pixels.resultMask,Le=d.pixels.resultPixels;for(R=0;R<_;R++)for(B=R!==_-1?f:q,G=0;G1&&(Le=new u(d.pixels.resultPixels.buffer,p*g*Te*x,p*g)),F=c.byteLength-d.ptr,k=new DataView(c,d.ptr,Math.min(10,F)),v={},N=0,P=k.getUint8(0),N++,A=P>>6&255,T=P>>2&15,T!==(G*f>>3&15))throw"integrity issue";if(K=P&3,K>3)throw d.ptr+=N,"Invalid block encoding ("+K+")";if(K===2){d.counter.constant++,d.ptr+=N;continue}else if(K===0){if(d.counter.uncompressed++,d.ptr+=N,W=B*w*x,M=c.byteLength-d.ptr,W=W1)for(g=0;g=-128&&d<=127;break;case 1:u=d>=0&&d<=255;break;case 2:u=d>=-32768&&d<=32767;break;case 3:u=d>=0&&d<=65536;break;case 4:u=d>=-2147483648&&d<=2147483647;break;case 5:u=d>=0&&d<=4294967296;break;case 6:u=d>=-34027999387901484e22&&d<=34027999387901484e22;break;case 7:u=d>=5e-324&&d<=17976931348623157e292;break;default:u=!1}return u},getDataTypeSize:function(c){var d=0;switch(c){case 0:case 1:d=1;break;case 2:case 3:d=2;break;case 4:case 5:case 6:d=4;break;case 7:d=8;break;default:d=c}return d},getDataTypeUsed:function(c,d){var u=c;switch(c){case 2:case 4:u=c-d;break;case 3:case 5:u=c-2*d;break;case 6:d===0?u=c:d===1?u=2:u=1;break;case 7:d===0?u=c:u=c-2*d+1;break;default:u=c;break}return u},getOnePixel:function(c,d,u,h){var p=0;switch(u){case 0:p=h.getInt8(d);break;case 1:p=h.getUint8(d);break;case 2:p=h.getInt16(d,!0);break;case 3:p=h.getUint16(d,!0);break;case 4:p=h.getInt32(d,!0);break;case 5:p=h.getUInt32(d,!0);break;case 6:p=h.getFloat32(d,!0);break;case 7:p=h.getFloat64(d,!0);break;default:throw"the decoder does not understand this pixel type"}return p}},s=function(c,d,u){this.val=c,this.left=d,this.right=u},a={decode:function(c,d){d=d||{};var u=d.noDataValue,h=0,p={};if(p.ptr=d.inputOffset||0,p.pixels={},!!r.readHeaderInfo(c,p)){var g=p.headerInfo,f=g.fileVersion,b=r.getDataTypeArray(g.imageType);r.readMask(c,p),g.numValidPixel!==g.width*g.height&&!p.pixels.resultMask&&(p.pixels.resultMask=d.maskData);var x=g.width*g.height;if(p.pixels.resultPixels=new b(x*g.numDims),p.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0},g.numValidPixel!==0)if(g.zMax===g.zMin)r.constructConstantSurface(p);else if(f>=4&&r.checkMinMaxRanges(c,p))r.constructConstantSurface(p);else{var I=new DataView(c,p.ptr,2),_=I.getUint8(0);if(p.ptr++,_)r.readDataOneSweep(c,p,b);else if(f>1&&g.imageType<=1&&Math.abs(g.maxZError-.5)<1e-5){var E=I.getUint8(1);if(p.ptr++,p.encodeMode=E,E>2||f<4&&E>1)throw"Invalid Huffman flag "+E;E?r.readHuffman(c,p,b):r.readTiles(c,p,b)}else r.readTiles(c,p,b)}p.eofOffset=p.ptr;var S;d.inputOffset?(S=p.headerInfo.blobSize+d.inputOffset-p.ptr,Math.abs(S)>=1&&(p.eofOffset=d.inputOffset+p.headerInfo.blobSize)):(S=p.headerInfo.blobSize-p.ptr,Math.abs(S)>=1&&(p.eofOffset=p.headerInfo.blobSize));var R={width:g.width,height:g.height,pixelData:p.pixels.resultPixels,minValue:g.zMin,maxValue:g.zMax,validPixelCount:g.numValidPixel,dimCount:g.numDims,dimStats:{minValues:g.minValues,maxValues:g.maxValues},maskData:p.pixels.resultMask};if(p.pixels.resultMask&&r.isValidPixelValue(g.imageType,u)){var G=p.pixels.resultMask;for(h=0;h1&&_.fileInfo.mask&&_.fileInfo.mask.numBytes>0&&f.push(_.maskData),h++,I.pixels.push(_.pixelData),I.statistics.push({minValue:_.minValue,maxValue:_.maxValue,noDataValue:_.noDataValue,dimStats:_.dimStats})}var E,S,R;if(u>1&&f.length>1){for(R=I.width*I.height,I.bandMasks=f,x=new Uint8Array(R),x.set(f[0]),E=1;E{var HWo=y(C());BSe.exports={webm:"data:video/webm;base64,GkXfowEAAAAAAAAfQoaBAUL3gQFC8oEEQvOBCEKChHdlYm1Ch4EEQoWBAhhTgGcBAAAAAAAVkhFNm3RALE27i1OrhBVJqWZTrIHfTbuMU6uEFlSua1OsggEwTbuMU6uEHFO7a1OsghV17AEAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmAQAAAAAAAEUq17GDD0JATYCNTGF2ZjU1LjMzLjEwMFdBjUxhdmY1NS4zMy4xMDBzpJBlrrXf3DCDVB8KcgbMpcr+RImIQJBgAAAAAAAWVK5rAQAAAAAAD++uAQAAAAAAADLXgQFzxYEBnIEAIrWcg3VuZIaFVl9WUDiDgQEj44OEAmJaAOABAAAAAAAABrCBsLqBkK4BAAAAAAAPq9eBAnPFgQKcgQAitZyDdW5khohBX1ZPUkJJU4OBAuEBAAAAAAAAEZ+BArWIQOdwAAAAAABiZIEgY6JPbwIeVgF2b3JiaXMAAAAAAoC7AAAAAAAAgLUBAAAAAAC4AQN2b3JiaXMtAAAAWGlwaC5PcmcgbGliVm9yYmlzIEkgMjAxMDExMDEgKFNjaGF1ZmVudWdnZXQpAQAAABUAAABlbmNvZGVyPUxhdmM1NS41Mi4xMDIBBXZvcmJpcyVCQ1YBAEAAACRzGCpGpXMWhBAaQlAZ4xxCzmvsGUJMEYIcMkxbyyVzkCGkoEKIWyiB0JBVAABAAACHQXgUhIpBCCGEJT1YkoMnPQghhIg5eBSEaUEIIYQQQgghhBBCCCGERTlokoMnQQgdhOMwOAyD5Tj4HIRFOVgQgydB6CCED0K4moOsOQghhCQ1SFCDBjnoHITCLCiKgsQwuBaEBDUojILkMMjUgwtCiJqDSTX4GoRnQXgWhGlBCCGEJEFIkIMGQcgYhEZBWJKDBjm4FITLQagahCo5CB+EIDRkFQCQAACgoiiKoigKEBqyCgDIAAAQQFEUx3EcyZEcybEcCwgNWQUAAAEACAAAoEiKpEiO5EiSJFmSJVmSJVmS5omqLMuyLMuyLMsyEBqyCgBIAABQUQxFcRQHCA1ZBQBkAAAIoDiKpViKpWiK54iOCISGrAIAgAAABAAAEDRDUzxHlETPVFXXtm3btm3btm3btm3btm1blmUZCA1ZBQBAAAAQ0mlmqQaIMAMZBkJDVgEACAAAgBGKMMSA0JBVAABAAACAGEoOogmtOd+c46BZDppKsTkdnEi1eZKbirk555xzzsnmnDHOOeecopxZDJoJrTnnnMSgWQqaCa0555wnsXnQmiqtOeeccc7pYJwRxjnnnCateZCajbU555wFrWmOmkuxOeecSLl5UptLtTnnnHPOOeecc84555zqxekcnBPOOeecqL25lpvQxTnnnE/G6d6cEM4555xzzjnnnHPOOeecIDRkFQAABABAEIaNYdwpCNLnaCBGEWIaMulB9+gwCRqDnELq0ehopJQ6CCWVcVJKJwgNWQUAAAIAQAghhRRSSCGFFFJIIYUUYoghhhhyyimnoIJKKqmooowyyyyzzDLLLLPMOuyssw47DDHEEEMrrcRSU2011lhr7jnnmoO0VlprrbVSSimllFIKQkNWAQAgAAAEQgYZZJBRSCGFFGKIKaeccgoqqIDQkFUAACAAgAAAAABP8hzRER3RER3RER3RER3R8RzPESVREiVREi3TMjXTU0VVdWXXlnVZt31b2IVd933d933d+HVhWJZlWZZlWZZlWZZlWZZlWZYgNGQVAAACAAAghBBCSCGFFFJIKcYYc8w56CSUEAgNWQUAAAIACAAAAHAUR3EcyZEcSbIkS9IkzdIsT/M0TxM9URRF0zRV0RVdUTdtUTZl0zVdUzZdVVZtV5ZtW7Z125dl2/d93/d93/d93/d93/d9XQdCQ1YBABIAADqSIymSIimS4ziOJElAaMgqAEAGAEAAAIriKI7jOJIkSZIlaZJneZaomZrpmZ4qqkBoyCoAABAAQAAAAAAAAIqmeIqpeIqoeI7oiJJomZaoqZoryqbsuq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq7ruq4LhIasAgAkAAB0JEdyJEdSJEVSJEdygNCQVQCADACAAAAcwzEkRXIsy9I0T/M0TxM90RM901NFV3SB0JBVAAAgAIAAAAAAAAAMybAUy9EcTRIl1VItVVMt1VJF1VNVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVN0zRNEwgNWQkAkAEAkBBTLS3GmgmLJGLSaqugYwxS7KWxSCpntbfKMYUYtV4ah5RREHupJGOKQcwtpNApJq3WVEKFFKSYYyoVUg5SIDRkhQAQmgHgcBxAsixAsiwAAAAAAAAAkDQN0DwPsDQPAAAAAAAAACRNAyxPAzTPAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAA0DwP8DwR8EQRAAAAAAAAACzPAzTRAzxRBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABA0jRA8zxA8zwAAAAAAAAAsDwP8EQR0DwRAAAAAAAAACzPAzxRBDzRAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEOAAABBgIRQasiIAiBMAcEgSJAmSBM0DSJYFTYOmwTQBkmVB06BpME0AAAAAAAAAAAAAJE2DpkHTIIoASdOgadA0iCIAAAAAAAAAAAAAkqZB06BpEEWApGnQNGgaRBEAAAAAAAAAAAAAzzQhihBFmCbAM02IIkQRpgkAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAGHAAAAgwoQwUGrIiAIgTAHA4imUBAIDjOJYFAACO41gWAABYliWKAABgWZooAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAYcAAACDChDBQashIAiAIAcCiKZQHHsSzgOJYFJMmyAJYF0DyApgFEEQAIAAAocAAACLBBU2JxgEJDVgIAUQAABsWxLE0TRZKkaZoniiRJ0zxPFGma53meacLzPM80IYqiaJoQRVE0TZimaaoqME1VFQAAUOAAABBgg6bE4gCFhqwEAEICAByKYlma5nmeJ4qmqZokSdM8TxRF0TRNU1VJkqZ5niiKommapqqyLE3zPFEURdNUVVWFpnmeKIqiaaqq6sLzPE8URdE0VdV14XmeJ4qiaJqq6roQRVE0TdNUTVV1XSCKpmmaqqqqrgtETxRNU1Vd13WB54miaaqqq7ouEE3TVFVVdV1ZBpimaaqq68oyQFVV1XVdV5YBqqqqruu6sgxQVdd1XVmWZQCu67qyLMsCAAAOHAAAAoygk4wqi7DRhAsPQKEhKwKAKAAAwBimFFPKMCYhpBAaxiSEFEImJaXSUqogpFJSKRWEVEoqJaOUUmopVRBSKamUCkIqJZVSAADYgQMA2IGFUGjISgAgDwCAMEYpxhhzTiKkFGPOOScRUoox55yTSjHmnHPOSSkZc8w556SUzjnnnHNSSuacc845KaVzzjnnnJRSSuecc05KKSWEzkEnpZTSOeecEwAAVOAAABBgo8jmBCNBhYasBABSAQAMjmNZmuZ5omialiRpmud5niiapiZJmuZ5nieKqsnzPE8URdE0VZXneZ4oiqJpqirXFUXTNE1VVV2yLIqmaZqq6rowTdNUVdd1XZimaaqq67oubFtVVdV1ZRm2raqq6rqyDFzXdWXZloEsu67s2rIAAPAEBwCgAhtWRzgpGgssNGQlAJABAEAYg5BCCCFlEEIKIYSUUggJAAAYcAAACDChDBQashIASAUAAIyx1lprrbXWQGettdZaa62AzFprrbXWWmuttdZaa6211lJrrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmuttdZaa6211lprrbXWWmstpZRSSimllFJKKaWUUkoppZRSSgUA+lU4APg/2LA6wknRWGChISsBgHAAAMAYpRhzDEIppVQIMeacdFRai7FCiDHnJKTUWmzFc85BKCGV1mIsnnMOQikpxVZjUSmEUlJKLbZYi0qho5JSSq3VWIwxqaTWWoutxmKMSSm01FqLMRYjbE2ptdhqq7EYY2sqLbQYY4zFCF9kbC2m2moNxggjWywt1VprMMYY3VuLpbaaizE++NpSLDHWXAAAd4MDAESCjTOsJJ0VjgYXGrISAAgJACAQUooxxhhzzjnnpFKMOeaccw5CCKFUijHGnHMOQgghlIwx5pxzEEIIIYRSSsaccxBCCCGEkFLqnHMQQgghhBBKKZ1zDkIIIYQQQimlgxBCCCGEEEoopaQUQgghhBBCCKmklEIIIYRSQighlZRSCCGEEEIpJaSUUgohhFJCCKGElFJKKYUQQgillJJSSimlEkoJJYQSUikppRRKCCGUUkpKKaVUSgmhhBJKKSWllFJKIYQQSikFAAAcOAAABBhBJxlVFmGjCRcegEJDVgIAZAAAkKKUUiktRYIipRikGEtGFXNQWoqocgxSzalSziDmJJaIMYSUk1Qy5hRCDELqHHVMKQYtlRhCxhik2HJLoXMOAAAAQQCAgJAAAAMEBTMAwOAA4XMQdAIERxsAgCBEZohEw0JweFAJEBFTAUBigkIuAFRYXKRdXECXAS7o4q4DIQQhCEEsDqCABByccMMTb3jCDU7QKSp1IAAAAAAADADwAACQXAAREdHMYWRobHB0eHyAhIiMkAgAAAAAABcAfAAAJCVAREQ0cxgZGhscHR4fICEiIyQBAIAAAgAAAAAggAAEBAQAAAAAAAIAAAAEBB9DtnUBAAAAAAAEPueBAKOFggAAgACjzoEAA4BwBwCdASqwAJAAAEcIhYWIhYSIAgIABhwJ7kPfbJyHvtk5D32ych77ZOQ99snIe+2TkPfbJyHvtk5D32ych77ZOQ99YAD+/6tQgKOFggADgAqjhYIAD4AOo4WCACSADqOZgQArADECAAEQEAAYABhYL/QACIBDmAYAAKOFggA6gA6jhYIAT4AOo5mBAFMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAGSADqOFggB6gA6jmYEAewAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAj4AOo5mBAKMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAKSADqOFggC6gA6jmYEAywAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIAz4AOo4WCAOSADqOZgQDzADECAAEQEAAYABhYL/QACIBDmAYAAKOFggD6gA6jhYIBD4AOo5iBARsAEQIAARAQFGAAYWC/0AAiAQ5gGACjhYIBJIAOo4WCATqADqOZgQFDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggFPgA6jhYIBZIAOo5mBAWsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAXqADqOFggGPgA6jmYEBkwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIBpIAOo4WCAbqADqOZgQG7ADECAAEQEAAYABhYL/QACIBDmAYAAKOFggHPgA6jmYEB4wAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIB5IAOo4WCAfqADqOZgQILADECAAEQEAAYABhYL/QACIBDmAYAAKOFggIPgA6jhYICJIAOo5mBAjMAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAjqADqOFggJPgA6jmYECWwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYICZIAOo4WCAnqADqOZgQKDADECAAEQEAAYABhYL/QACIBDmAYAAKOFggKPgA6jhYICpIAOo5mBAqsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCArqADqOFggLPgA6jmIEC0wARAgABEBAUYABhYL/QACIBDmAYAKOFggLkgA6jhYIC+oAOo5mBAvsAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCAw+ADqOZgQMjADECAAEQEAAYABhYL/QACIBDmAYAAKOFggMkgA6jhYIDOoAOo5mBA0sAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA0+ADqOFggNkgA6jmYEDcwAxAgABEBAAGAAYWC/0AAiAQ5gGAACjhYIDeoAOo4WCA4+ADqOZgQObADECAAEQEAAYABhYL/QACIBDmAYAAKOFggOkgA6jhYIDuoAOo5mBA8MAMQIAARAQABgAGFgv9AAIgEOYBgAAo4WCA8+ADqOFggPkgA6jhYID+oAOo4WCBA+ADhxTu2sBAAAAAAAAEbuPs4EDt4r3gQHxghEr8IEK",mp4:"data:video/mp4;base64,AAAAHGZ0eXBNNFYgAAACAGlzb21pc28yYXZjMQAAAAhmcmVlAAAGF21kYXTeBAAAbGliZmFhYyAxLjI4AABCAJMgBDIARwAAArEGBf//rdxF6b3m2Ui3lizYINkj7u94MjY0IC0gY29yZSAxNDIgcjIgOTU2YzhkOCAtIEguMjY0L01QRUctNCBBVkMgY29kZWMgLSBDb3B5bGVmdCAyMDAzLTIwMTQgLSBodHRwOi8vd3d3LnZpZGVvbGFuLm9yZy94MjY0Lmh0bWwgLSBvcHRpb25zOiBjYWJhYz0wIHJlZj0zIGRlYmxvY2s9MTowOjAgYW5hbHlzZT0weDE6MHgxMTEgbWU9aGV4IHN1Ym1lPTcgcHN5PTEgcHN5X3JkPTEuMDA6MC4wMCBtaXhlZF9yZWY9MSBtZV9yYW5nZT0xNiBjaHJvbWFfbWU9MSB0cmVsbGlzPTEgOHg4ZGN0PTAgY3FtPTAgZGVhZHpvbmU9MjEsMTEgZmFzdF9wc2tpcD0xIGNocm9tYV9xcF9vZmZzZXQ9LTIgdGhyZWFkcz02IGxvb2thaGVhZF90aHJlYWRzPTEgc2xpY2VkX3RocmVhZHM9MCBucj0wIGRlY2ltYXRlPTEgaW50ZXJsYWNlZD0wIGJsdXJheV9jb21wYXQ9MCBjb25zdHJhaW5lZF9pbnRyYT0wIGJmcmFtZXM9MCB3ZWlnaHRwPTAga2V5aW50PTI1MCBrZXlpbnRfbWluPTI1IHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCB2YnZfbWF4cmF0ZT03NjggdmJ2X2J1ZnNpemU9MzAwMCBjcmZfbWF4PTAuMCBuYWxfaHJkPW5vbmUgZmlsbGVyPTAgaXBfcmF0aW89MS40MCBhcT0xOjEuMDAAgAAAAFZliIQL8mKAAKvMnJycnJycnJycnXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXiEASZACGQAjgCEASZACGQAjgAAAAAdBmjgX4GSAIQBJkAIZACOAAAAAB0GaVAX4GSAhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGagC/AySEASZACGQAjgAAAAAZBmqAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZrAL8DJIQBJkAIZACOAAAAABkGa4C/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmwAvwMkhAEmQAhkAI4AAAAAGQZsgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGbQC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm2AvwMkhAEmQAhkAI4AAAAAGQZuAL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGboC/AySEASZACGQAjgAAAAAZBm8AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZvgL8DJIQBJkAIZACOAAAAABkGaAC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmiAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZpAL8DJIQBJkAIZACOAAAAABkGaYC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBmoAvwMkhAEmQAhkAI4AAAAAGQZqgL8DJIQBJkAIZACOAIQBJkAIZACOAAAAABkGawC/AySEASZACGQAjgAAAAAZBmuAvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZsAL8DJIQBJkAIZACOAAAAABkGbIC/AySEASZACGQAjgCEASZACGQAjgAAAAAZBm0AvwMkhAEmQAhkAI4AhAEmQAhkAI4AAAAAGQZtgL8DJIQBJkAIZACOAAAAABkGbgCvAySEASZACGQAjgCEASZACGQAjgAAAAAZBm6AnwMkhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AhAEmQAhkAI4AAAAhubW9vdgAAAGxtdmhkAAAAAAAAAAAAAAAAAAAD6AAABDcAAQAAAQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAzB0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAABAAAAAAAAA+kAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAALAAAACQAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAPpAAAAAAABAAAAAAKobWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAB1MAAAdU5VxAAAAAAALWhkbHIAAAAAAAAAAHZpZGUAAAAAAAAAAAAAAABWaWRlb0hhbmRsZXIAAAACU21pbmYAAAAUdm1oZAAAAAEAAAAAAAAAAAAAACRkaW5mAAAAHGRyZWYAAAAAAAAAAQAAAAx1cmwgAAAAAQAAAhNzdGJsAAAAr3N0c2QAAAAAAAAAAQAAAJ9hdmMxAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAALAAkABIAAAASAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGP//AAAALWF2Y0MBQsAN/+EAFWdCwA3ZAsTsBEAAAPpAADqYA8UKkgEABWjLg8sgAAAAHHV1aWRraEDyXyRPxbo5pRvPAyPzAAAAAAAAABhzdHRzAAAAAAAAAAEAAAAeAAAD6QAAABRzdHNzAAAAAAAAAAEAAAABAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAAIxzdHN6AAAAAAAAAAAAAAAeAAADDwAAAAsAAAALAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAACgAAAAoAAAAKAAAAiHN0Y28AAAAAAAAAHgAAAEYAAANnAAADewAAA5gAAAO0AAADxwAAA+MAAAP2AAAEEgAABCUAAARBAAAEXQAABHAAAASMAAAEnwAABLsAAATOAAAE6gAABQYAAAUZAAAFNQAABUgAAAVkAAAFdwAABZMAAAWmAAAFwgAABd4AAAXxAAAGDQAABGh0cmFrAAAAXHRraGQAAAADAAAAAAAAAAAAAAACAAAAAAAABDcAAAAAAAAAAAAAAAEBAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAkZWR0cwAAABxlbHN0AAAAAAAAAAEAAAQkAAADcAABAAAAAAPgbWRpYQAAACBtZGhkAAAAAAAAAAAAAAAAAAC7gAAAykBVxAAAAAAALWhkbHIAAAAAAAAAAHNvdW4AAAAAAAAAAAAAAABTb3VuZEhhbmRsZXIAAAADi21pbmYAAAAQc21oZAAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAADT3N0YmwAAABnc3RzZAAAAAAAAAABAAAAV21wNGEAAAAAAAAAAQAAAAAAAAAAAAIAEAAAAAC7gAAAAAAAM2VzZHMAAAAAA4CAgCIAAgAEgICAFEAVBbjYAAu4AAAADcoFgICAAhGQBoCAgAECAAAAIHN0dHMAAAAAAAAAAgAAADIAAAQAAAAAAQAAAkAAAAFUc3RzYwAAAAAAAAAbAAAAAQAAAAEAAAABAAAAAgAAAAIAAAABAAAAAwAAAAEAAAABAAAABAAAAAIAAAABAAAABgAAAAEAAAABAAAABwAAAAIAAAABAAAACAAAAAEAAAABAAAACQAAAAIAAAABAAAACgAAAAEAAAABAAAACwAAAAIAAAABAAAADQAAAAEAAAABAAAADgAAAAIAAAABAAAADwAAAAEAAAABAAAAEAAAAAIAAAABAAAAEQAAAAEAAAABAAAAEgAAAAIAAAABAAAAFAAAAAEAAAABAAAAFQAAAAIAAAABAAAAFgAAAAEAAAABAAAAFwAAAAIAAAABAAAAGAAAAAEAAAABAAAAGQAAAAIAAAABAAAAGgAAAAEAAAABAAAAGwAAAAIAAAABAAAAHQAAAAEAAAABAAAAHgAAAAIAAAABAAAAHwAAAAQAAAABAAAA4HN0c3oAAAAAAAAAAAAAADMAAAAaAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAAAJAAAACQAAAAkAAACMc3RjbwAAAAAAAAAfAAAALAAAA1UAAANyAAADhgAAA6IAAAO+AAAD0QAAA+0AAAQAAAAEHAAABC8AAARLAAAEZwAABHoAAASWAAAEqQAABMUAAATYAAAE9AAABRAAAAUjAAAFPwAABVIAAAVuAAAFgQAABZ0AAAWwAAAFzAAABegAAAX7AAAGFwAAAGJ1ZHRhAAAAWm1ldGEAAAAAAAAAIWhkbHIAAAAAAAAAAG1kaXJhcHBsAAAAAAAAAAAAAAAALWlsc3QAAAAlqXRvbwAAAB1kYXRhAAAAAQAAAABMYXZmNTUuMzMuMTAw"}});var WSe=Pu((zWo,XSe)=>{var KWo=y(C()),{webm:NRt,mp4:DRt}=wSe(),bee=()=>typeof navigator<"u"&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,yee=()=>"wakeLock"in navigator,Cee=class{constructor(){if(this.enabled=!1,yee()){this._wakeLock=null;let t=()=>{this._wakeLock!==null&&document.visibilityState==="visible"&&this.enable()};document.addEventListener("visibilitychange",t),document.addEventListener("fullscreenchange",t)}else bee()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm",NRt),this._addSourceToVideo(this.noSleepVideo,"mp4",DRt),this.noSleepVideo.addEventListener("loadedmetadata",()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())})}))}_addSourceToVideo(t,n,i){var o=document.createElement("source");o.src=i,o.type=`video/${n}`,t.appendChild(o)}get isEnabled(){return this.enabled}enable(){return yee()?navigator.wakeLock.request("screen").then(t=>{this._wakeLock=t,this.enabled=!0,console.log("Wake Lock active."),this._wakeLock.addEventListener("release",()=>{console.log("Wake Lock released.")})}).catch(t=>{throw this.enabled=!1,console.error(`${t.name}, ${t.message}`),t}):bee()?(this.disable(),console.warn(` + NoSleep enabled for older iOS devices. This can interrupt + active or long-running network requests from completing successfully. + See https://github.com/richtr/NoSleep.js/issues/15 for more details. + `),this.noSleepTimer=window.setInterval(()=>{document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))},15e3),this.enabled=!0,Promise.resolve()):this.noSleepVideo.play().then(n=>(this.enabled=!0,n)).catch(n=>{throw this.enabled=!1,n})}disable(){yee()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):bee()?this.noSleepTimer&&(console.warn(` + NoSleep now disabled for older iOS devices. + `),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}};XSe.exports=Cee});var dVt={};qSe(dVt,{AlphaMode:()=>Yf,AlphaPipelineStage:()=>Cw,AnchorPointDirect:()=>IB,AnchorPointIndirect:()=>_B,Animation:()=>WN,AnimationViewModel:()=>FN,Appearance:()=>go,ApproximateTerrainHeights:()=>Si,ArcGISTiledElevationTerrainProvider:()=>hq,ArcGisBaseMapType:()=>Gh,ArcGisMapServerImageryProvider:()=>QA,ArcGisMapService:()=>zd,ArcType:()=>dn,ArticulationStageType:()=>Pc,AssociativeArray:()=>Bt,Atmosphere:()=>JC,AtmospherePipelineStage:()=>ew,AttributeCompression:()=>Mn,AttributeType:()=>kt,AutoExposure:()=>OM,AutomaticUniforms:()=>tA,Axis:()=>ho,AxisAlignedBoundingBox:()=>Ib,B3dmLoader:()=>MB,B3dmParser:()=>WB,BaseLayerPicker:()=>MN,BaseLayerPickerViewModel:()=>PN,BatchTable:()=>oC,BatchTableHierarchy:()=>LC,BatchTexture:()=>yl,BatchTexturePipelineStage:()=>xw,Billboard:()=>Eo,BillboardCollection:()=>qd,BillboardGraphics:()=>_c,BillboardLoadState:()=>Ts,BillboardTexture:()=>JA,BillboardVisualizer:()=>h1,BingMapsGeocoderService:()=>pq,BingMapsImageryProvider:()=>Dw,BingMapsStyle:()=>JE,BlendEquation:()=>ac,BlendFunction:()=>Po,BlendOption:()=>No,BlendingState:()=>bn,BoundingRectangle:()=>Ke,BoundingSphere:()=>ue,BoundingSphereState:()=>At,BoundingVolumeSemantics:()=>YC,BoxEmitter:()=>s$,BoxGeometry:()=>sc,BoxGeometryUpdater:()=>AZ,BoxGraphics:()=>mC,BoxOutlineGeometry:()=>nh,BrdfLutGenerator:()=>JP,Buffer:()=>It,BufferLoader:()=>wC,BufferUsage:()=>Ne,CPUStylingPipelineStage:()=>Tw,CallbackPositionProperty:()=>gZ,CallbackProperty:()=>hh,Camera:()=>xo,CameraEventAggregator:()=>$M,CameraEventType:()=>qi,CameraFlightPath:()=>qP,Cartesian2:()=>D,Cartesian3:()=>m,Cartesian4:()=>ce,CartesianRectangle:()=>rT,Cartographic:()=>ge,CartographicGeocoderService:()=>gq,CatmullRomSpline:()=>bq,Cesium3DContentGroup:()=>SC,Cesium3DTile:()=>ym,Cesium3DTileBatchTable:()=>bA,Cesium3DTileColorBlendMode:()=>ed,Cesium3DTileContent:()=>a$,Cesium3DTileContentFactory:()=>Cx,Cesium3DTileContentState:()=>ir,Cesium3DTileContentType:()=>Js,Cesium3DTileFeature:()=>ma,Cesium3DTileFeatureTable:()=>Sh,Cesium3DTileOptimizationHint:()=>fm,Cesium3DTileOptimizations:()=>W2,Cesium3DTilePass:()=>zo,Cesium3DTilePassState:()=>vm,Cesium3DTilePointFeature:()=>jA,Cesium3DTileRefine:()=>tr,Cesium3DTileStyle:()=>p_,Cesium3DTileStyleEngine:()=>D2,Cesium3DTilesInspector:()=>kN,Cesium3DTilesInspectorViewModel:()=>UN,Cesium3DTilesVoxelProvider:()=>c$,Cesium3DTileset:()=>Ps,Cesium3DTilesetBaseTraversal:()=>H2,Cesium3DTilesetCache:()=>M2,Cesium3DTilesetGraphics:()=>yC,Cesium3DTilesetHeatmap:()=>v2,Cesium3DTilesetMetadata:()=>Gx,Cesium3DTilesetMostDetailedTraversal:()=>k2,Cesium3DTilesetSkipTraversal:()=>J2,Cesium3DTilesetStatistics:()=>Nh,Cesium3DTilesetTraversal:()=>ya,Cesium3DTilesetVisualizer:()=>j2,CesiumInspector:()=>HN,CesiumInspectorViewModel:()=>ON,CesiumTerrainProvider:()=>c_,CesiumWidget:()=>Hv,Check:()=>Bo,CheckerboardMaterialProperty:()=>BT,CircleEmitter:()=>aN,CircleGeometry:()=>Eq,CircleOutlineGeometry:()=>Tq,ClassificationModelDrawCommand:()=>PX,ClassificationPipelineStage:()=>Iw,ClassificationPrimitive:()=>$_,ClassificationType:()=>$n,ClearCommand:()=>xi,ClippingPlane:()=>OC,ClippingPlaneCollection:()=>Ws,ClippingPolygon:()=>GE,ClippingPolygonCollection:()=>Ih,Clock:()=>Yh,ClockRange:()=>ls,ClockStep:()=>Ro,ClockViewModel:()=>BN,CloudCollection:()=>f$,CloudType:()=>PL,Color:()=>U,ColorBlendMode:()=>Fc,ColorGeometryInstanceAttribute:()=>tn,ColorMaterialProperty:()=>qt,Command:()=>oee,ComponentDatatype:()=>J,Composite3DTileContent:()=>LZ,CompositeEntityCollection:()=>wJ,CompositeMaterialProperty:()=>XT,CompositePositionProperty:()=>ka,CompositeProperty:()=>Uc,CompressedTextureBuffer:()=>I1,ComputeCommand:()=>Il,ComputeEngine:()=>nP,ConditionsExpression:()=>iN,ConeEmitter:()=>A$,ConstantPositionProperty:()=>dl,ConstantProperty:()=>di,ConstantSpline:()=>QB,ContentMetadata:()=>S2,Context:()=>xI,ContextLimits:()=>Kt,CoplanarPolygonGeometry:()=>WW,CoplanarPolygonGeometryLibrary:()=>sg,CoplanarPolygonOutlineGeometry:()=>bm,CornerType:()=>Hi,CorrelationGroup:()=>EB,CorridorGeometry:()=>Px,CorridorGeometryLibrary:()=>io,CorridorGeometryUpdater:()=>sW,CorridorGraphics:()=>fC,CorridorOutlineGeometry:()=>rW,Credit:()=>Gt,CreditDisplay:()=>nM,CubeMap:()=>Pr,CubeMapFace:()=>B1,CubicRealPolynomial:()=>zy,CullFace:()=>Xi,CullingVolume:()=>Xs,CumulusCloud:()=>Bu,CustomDataSource:()=>mW,CustomHeightmapTerrainProvider:()=>Sq,CustomShader:()=>KI,CustomShaderMode:()=>DA,CustomShaderPipelineStage:()=>Bw,CustomShaderTranslucencyMode:()=>c0,CylinderGeometry:()=>hW,CylinderGeometryLibrary:()=>Mx,CylinderGeometryUpdater:()=>pW,CylinderGraphics:()=>pC,CylinderOutlineGeometry:()=>fW,CzmlDataSource:()=>TW,DataSource:()=>cs,DataSourceClock:()=>Oh,DataSourceCollection:()=>SW,DataSourceDisplay:()=>fF,DebugAppearance:()=>g$,DebugCameraPrimitive:()=>Rp,DebugInspector:()=>av,DebugModelMatrixPrimitive:()=>lN,DefaultProxy:()=>Lq,DepthFunction:()=>Fa,DepthPlane:()=>cM,DequantizationPipelineStage:()=>Xw,DerivedCommand:()=>Vp,DeveloperError:()=>Ae,DeviceOrientationCameraController:()=>lM,DirectionalLight:()=>b$,DiscardEmptyTileImagePolicy:()=>jE,DiscardMissingTileImagePolicy:()=>vw,DistanceDisplayCondition:()=>Qt,DistanceDisplayConditionGeometryInstanceAttribute:()=>jn,DoubleEndedPriorityQueue:()=>e_,DoublyLinkedList:()=>P2,DracoLoader:()=>TA,DrawCommand:()=>ot,DynamicAtmosphereLightingType:()=>GA,DynamicEnvironmentMapManager:()=>ZA,DynamicGeometryBatch:()=>Yx,DynamicGeometryUpdater:()=>yi,EarthOrientationParameters:()=>a1,EarthOrientationParametersSample:()=>ub,EasingFunction:()=>ms,EllipseGeometry:()=>Fl,EllipseGeometryLibrary:()=>Ad,EllipseGeometryUpdater:()=>RW,EllipseGraphics:()=>AC,EllipseOutlineGeometry:()=>du,Ellipsoid:()=>ie,EllipsoidGeodesic:()=>sA,EllipsoidGeometry:()=>xa,EllipsoidGeometryUpdater:()=>GW,EllipsoidGraphics:()=>gC,EllipsoidOutlineGeometry:()=>nu,EllipsoidPrimitive:()=>YP,EllipsoidRhumbLine:()=>cc,EllipsoidSurfaceAppearance:()=>y$,EllipsoidTangentPlane:()=>gs,EllipsoidTerrainProvider:()=>Tp,EllipsoidalOccluder:()=>gg,Empty3DTileContent:()=>yT,EncodedCartesian3:()=>ni,Entity:()=>ur,EntityCluster:()=>ou,EntityCollection:()=>Ca,EntityView:()=>AF,Event:()=>Ce,EventHelper:()=>Lr,Expression:()=>$u,ExpressionNodeType:()=>Et,ExtrapolationType:()=>su,FeatureDetection:()=>Ht,FeatureIdPipelineStage:()=>a0,Fog:()=>dM,ForEach:()=>Xe,FrameRateMonitor:()=>mN,FrameState:()=>uM,Framebuffer:()=>jr,FramebufferManager:()=>Gi,Frozen:()=>Y,FrustumCommands:()=>AM,FrustumGeometry:()=>RI,FrustumOutlineGeometry:()=>rM,Fullscreen:()=>Wr,FullscreenButton:()=>KN,FullscreenButtonViewModel:()=>zN,GaussianSplat3DTileContent:()=>bT,GaussianSplatPrimitive:()=>gT,GaussianSplatRenderResources:()=>I2,GaussianSplatSorter:()=>AT,GaussianSplatTextureGenerator:()=>x2,GeoJsonDataSource:()=>Q0,GeoJsonLoader:()=>vB,GeocodeType:()=>_y,Geocoder:()=>jN,GeocoderService:()=>BL,GeocoderViewModel:()=>JN,GeographicProjection:()=>Di,GeographicTilingScheme:()=>ao,Geometry:()=>pt,Geometry3DTileContent:()=>GZ,GeometryAttribute:()=>Ze,GeometryAttributes:()=>xn,GeometryFactory:()=>Rq,GeometryInstance:()=>wt,GeometryInstanceAttribute:()=>Gc,GeometryOffsetAttribute:()=>pn,GeometryPipeline:()=>Yn,GeometryPipelineStage:()=>Mw,GeometryType:()=>Qu,GeometryUpdater:()=>Ci,GeometryUpdaterSet:()=>nI,GeometryVisualizer:()=>nF,GetFeatureInfoFormat:()=>ox,Globe:()=>DP,GlobeDepth:()=>gM,GlobeSurfaceShaderSet:()=>GP,GlobeSurfaceTile:()=>Pm,GlobeSurfaceTileProvider:()=>BP,GlobeTranslucency:()=>wP,GlobeTranslucencyFramebuffer:()=>bM,GlobeTranslucencyState:()=>mM,GltfBufferViewLoader:()=>mE,GltfDracoLoader:()=>hE,GltfGpmLoader:()=>SB,GltfGpmLocal:()=>BE,GltfImageLoader:()=>fE,GltfIndexBufferLoader:()=>pE,GltfJsonLoader:()=>gE,GltfLoader:()=>Od,GltfLoaderUtil:()=>id,GltfMeshPrimitiveGpmLoader:()=>GB,GltfSpzLoader:()=>KZ,GltfStructuralMetadataLoader:()=>CB,GltfTextureLoader:()=>bE,GltfVertexBufferLoader:()=>yE,GoogleEarthEnterpriseImageryProvider:()=>x$,GoogleEarthEnterpriseMapsProvider:()=>kw,GoogleEarthEnterpriseMetadata:()=>ib,GoogleEarthEnterpriseTerrainData:()=>wL,GoogleEarthEnterpriseTerrainProvider:()=>Fq,GoogleEarthEnterpriseTileInformation:()=>Jv,GoogleGeocoderService:()=>Mq,GoogleMaps:()=>d_,GpxDataSource:()=>IF,GregorianDate:()=>Yp,GridImageryProvider:()=>I$,GridMaterialProperty:()=>kT,GroundGeometryUpdater:()=>ii,GroundPolylineGeometry:()=>cC,GroundPolylinePrimitive:()=>ch,GroundPrimitive:()=>cl,GroupMetadata:()=>VT,HeadingPitchRange:()=>Vm,HeadingPitchRoll:()=>ic,Heap:()=>n1,HeightReference:()=>et,HeightmapEncoding:()=>Xm,HeightmapTerrainData:()=>yc,HeightmapTessellator:()=>eL,HermitePolynomialApproximation:()=>AW,HermiteSpline:()=>o0,HilbertOrder:()=>cE,HomeButton:()=>$N,HomeButtonViewModel:()=>qN,HorizontalOrigin:()=>wi,I3SBuildingSceneLayerExplorer:()=>hee,I3SBuildingSceneLayerExplorerViewModel:()=>e9,I3SDataProvider:()=>_f,I3SDecoder:()=>hN,I3SFeature:()=>fN,I3SField:()=>pN,I3SGeometry:()=>ML,I3SLayer:()=>C_,I3SNode:()=>vL,I3SStatistics:()=>bN,I3SSublayer:()=>CN,I3SSymbology:()=>gN,I3dmLoader:()=>DB,I3dmParser:()=>NB,ITwinData:()=>S$,ITwinPlatform:()=>oa,Iau2000Orientation:()=>UP,Iau2006XysData:()=>c1,Iau2006XysSample:()=>ky,IauOrientationAxes:()=>kP,IauOrientationParameters:()=>QP,ImageBasedLighting:()=>TC,ImageBasedLightingPipelineStage:()=>nw,ImageMaterialProperty:()=>Lb,Imagery:()=>iT,ImageryConfiguration:()=>OX,ImageryCoverage:()=>sT,ImageryFlags:()=>$w,ImageryInput:()=>nX,ImageryLayer:()=>is,ImageryLayerCollection:()=>Xx,ImageryLayerFeatureInfo:()=>Vh,ImageryPipelineStage:()=>iX,ImageryProvider:()=>Sl,ImageryState:()=>Jn,Implicit3DTileContent:()=>EE,ImplicitAvailabilityBitstream:()=>dE,ImplicitMetadataView:()=>uE,ImplicitSubdivisionScheme:()=>Cs,ImplicitSubtree:()=>UC,ImplicitSubtreeCache:()=>rN,ImplicitSubtreeMetadata:()=>ZZ,ImplicitTileCoordinates:()=>wx,ImplicitTileset:()=>Bx,IndexDatatype:()=>Me,InfoBox:()=>n9,InfoBoxViewModel:()=>t9,InspectorShared:()=>Vd,InstanceAttributeSemantic:()=>Is,InstancingPipelineStage:()=>Aw,InterpolationAlgorithm:()=>vq,InterpolationType:()=>Eh,Intersect:()=>on,IntersectionTests:()=>fi,Intersections2D:()=>tb,Interval:()=>oc,InvertClassification:()=>uL,Ion:()=>Ah,IonGeocodeProviderType:()=>ob,IonGeocoderService:()=>u_,IonImageryProvider:()=>UA,IonResource:()=>Nd,IonWorldImageryStyle:()=>kA,Iso8601:()=>ze,JobScheduler:()=>hM,JobType:()=>uc,JsonMetadataTable:()=>BA,JulianDate:()=>j,KTX2Transcoder:()=>_1,KeyboardEventModifier:()=>La,KeyframeNode:()=>Go,KmlCamera:()=>_F,KmlDataSource:()=>pI,KmlLookAt:()=>HF,KmlTour:()=>zF,KmlTourFlyTo:()=>JF,KmlTourWait:()=>jF,Label:()=>p0,LabelCollection:()=>ep,LabelGraphics:()=>dh,LabelStyle:()=>nr,LabelVisualizer:()=>iF,LagrangePolynomialApproximation:()=>gW,LeapSecond:()=>ro,Light:()=>L$,LightingModel:()=>jf,LightingPipelineStage:()=>rX,LinearApproximation:()=>Nx,LinearSpline:()=>i0,ManagedArray:()=>bl,MapMode2D:()=>_d,MapProjection:()=>Qq,MapboxImageryProvider:()=>Yw,MapboxStyleImageryProvider:()=>R$,MappedPositions:()=>tX,Material:()=>so,MaterialAppearance:()=>Io,MaterialPipelineStage:()=>aX,MaterialProperty:()=>dr,Math:()=>Z,Matrix2:()=>Qi,Matrix3:()=>$,Matrix4:()=>X,Megatexture:()=>yL,MeshPrimitiveGpmLocal:()=>VB,MetadataClass:()=>Ch,MetadataClassProperty:()=>Qf,MetadataComponentType:()=>Ut,MetadataEntity:()=>Kn,MetadataEnum:()=>qZ,MetadataEnumValue:()=>jZ,MetadataPicking:()=>fM,MetadataPickingPipelineStage:()=>Jd,MetadataPipelineStage:()=>rm,MetadataSchema:()=>kd,MetadataSchemaLoader:()=>xE,MetadataSemantic:()=>kC,MetadataTable:()=>em,MetadataTableProperty:()=>wZ,MetadataType:()=>bt,MipmapHint:()=>Yu,Model:()=>Bh,Model3DTileContent:()=>jd,ModelAlphaOptions:()=>lx,ModelAnimation:()=>OB,ModelAnimationChannel:()=>YB,ModelAnimationCollection:()=>HB,ModelAnimationLoop:()=>od,ModelAnimationState:()=>Lh,ModelArticulation:()=>ow,ModelArticulationStage:()=>iw,ModelClippingPlanesPipelineStage:()=>aw,ModelClippingPolygonsPipelineStage:()=>dw,ModelColorPipelineStage:()=>s0,ModelComponents:()=>Tn,ModelDrawCommand:()=>MX,ModelDrawCommands:()=>DX,ModelFeature:()=>zB,ModelFeatureTable:()=>JB,ModelGraphics:()=>uA,ModelImagery:()=>HX,ModelImageryMapping:()=>sx,ModelLightingOptions:()=>XX,ModelMatrixUpdateStage:()=>gw,ModelNode:()=>uw,ModelPrimitiveImagery:()=>ax,ModelReader:()=>eX,ModelRenderResources:()=>LX,ModelRuntimeNode:()=>yw,ModelRuntimePrimitive:()=>_X,ModelSceneGraph:()=>QX,ModelSilhouettePipelineStage:()=>GX,ModelSkin:()=>EX,ModelSplitterPipelineStage:()=>BX,ModelStatistics:()=>UX,ModelType:()=>Tr,ModelUtility:()=>Mt,ModelVisualizer:()=>oF,Moon:()=>HP,MorphTargetsPipelineStage:()=>lX,MorphWeightSpline:()=>Uq,MortonOrder:()=>x0,Multiple3DTileContent:()=>V2,MultisampleFramebuffer:()=>ZB,NavigationHelpButton:()=>o9,NavigationHelpButtonViewModel:()=>i9,NearFarScalar:()=>zt,NeverTileDiscardPolicy:()=>G$,NodeRenderResources:()=>wX,NodeStatisticsPipelineStage:()=>bw,NodeTransformationProperty:()=>bC,OIT:()=>yM,Occluder:()=>zP,OffsetGeometryInstanceAttribute:()=>mo,OpenCageGeocoderService:()=>Yq,OpenStreetMapImageryProvider:()=>sb,OrderedGroundPrimitiveCollection:()=>LW,OrientedBoundingBox:()=>vn,OrthographicFrustum:()=>gn,OrthographicOffCenterFrustum:()=>qr,Packable:()=>Oq,PackableForInterpolation:()=>Hq,Particle:()=>QL,ParticleBurst:()=>B$,ParticleEmitter:()=>w$,ParticleSystem:()=>X$,Pass:()=>Ge,PassState:()=>Hc,PathGraphics:()=>mA,PathVisualizer:()=>sF,PeliasGeocoderService:()=>qv,PerInstanceColorAppearance:()=>yn,PerformanceDisplay:()=>kg,PerformanceWatchdog:()=>s9,PerformanceWatchdogViewModel:()=>r9,PerspectiveFrustum:()=>Ni,PerspectiveOffCenterFrustum:()=>vl,PickDepth:()=>pM,PickDepthFramebuffer:()=>xM,PickFramebuffer:()=>_M,PickedMetadataInfo:()=>Wv,Picking:()=>LM,PickingPipelineStage:()=>dX,PinBuilder:()=>Bg,PixelDatatype:()=>Ye,PixelFormat:()=>tt,Plane:()=>An,PlaneGeometry:()=>ZW,PlaneGeometryUpdater:()=>wW,PlaneGraphics:()=>lZ,PlaneOutlineGeometry:()=>BW,PntsLoader:()=>YX,PntsParser:()=>ux,PointCloud:()=>Yv,PointCloudEyeDomeLighting:()=>XA,PointCloudShading:()=>Hf,PointCloudStylingPipelineStage:()=>mX,PointGraphics:()=>CC,PointPrimitive:()=>$s,PointPrimitiveCollection:()=>vT,PointVisualizer:()=>cF,PolygonGeometry:()=>VA,PolygonGeometryLibrary:()=>ti,PolygonGeometryUpdater:()=>PW,PolygonGraphics:()=>uh,PolygonHierarchy:()=>lc,PolygonOutlineGeometry:()=>FW,PolygonPipeline:()=>_i,Polyline:()=>dm,PolylineArrowMaterialProperty:()=>OT,PolylineCollection:()=>Wh,PolylineColorAppearance:()=>bs,PolylineDashMaterialProperty:()=>zT,PolylineGeometry:()=>Zg,PolylineGeometryUpdater:()=>uF,PolylineGlowMaterialProperty:()=>JT,PolylineGraphics:()=>Zc,PolylineMaterialAppearance:()=>Pa,PolylineOutlineMaterialProperty:()=>V0,PolylinePipeline:()=>Oi,PolylineVisualizer:()=>hF,PolylineVolumeGeometry:()=>NW,PolylineVolumeGeometryLibrary:()=>Dh,PolylineVolumeGeometryUpdater:()=>kW,PolylineVolumeGraphics:()=>xC,PolylineVolumeOutlineGeometry:()=>UW,PositionProperty:()=>lh,PositionPropertyArray:()=>xg,PostProcessStage:()=>Lo,PostProcessStageCollection:()=>KM,PostProcessStageComposite:()=>Td,PostProcessStageLibrary:()=>Eu,PostProcessStageSampleMode:()=>_u,PostProcessStageTextureCache:()=>NI,PpeMetadata:()=>RB,PpeSource:()=>eee,PpeTexture:()=>LB,Primitive:()=>Nn,PrimitiveCollection:()=>Wl,PrimitiveLoadPlan:()=>$C,PrimitiveOutlineGenerator:()=>qC,PrimitiveOutlinePipelineStage:()=>pX,PrimitivePipeline:()=>rC,PrimitiveRenderResources:()=>WX,PrimitiveState:()=>Nr,PrimitiveStatisticsPipelineStage:()=>AX,PrimitiveType:()=>We,ProjectionPicker:()=>c9,ProjectionPickerViewModel:()=>a9,Property:()=>z,PropertyArray:()=>qT,PropertyAttribute:()=>jC,PropertyAttributeProperty:()=>AB,PropertyBag:()=>ml,PropertyTable:()=>_l,PropertyTexture:()=>wA,PropertyTextureProperty:()=>pB,ProviderViewModel:()=>Ls,Proxy:()=>zq,QuadraticRealPolynomial:()=>rl,QuadtreeOccluders:()=>XP,QuadtreePrimitive:()=>NP,QuadtreeTile:()=>WP,QuadtreeTileLoadState:()=>_a,QuadtreeTileProvider:()=>W$,QuantizedMeshTerrainData:()=>a_,QuarticRealPolynomial:()=>S1,Quaternion:()=>Pe,QuaternionSpline:()=>kB,Queue:()=>Jb,Ray:()=>En,Rectangle:()=>le,RectangleCollisionChecker:()=>oI,RectangleGeometry:()=>Jx,RectangleGeometryLibrary:()=>js,RectangleGeometryUpdater:()=>YW,RectangleGraphics:()=>mh,RectangleOutlineGeometry:()=>_x,ReferenceFrame:()=>eo,ReferenceProperty:()=>Ig,RenderState:()=>Qe,Renderbuffer:()=>Hd,RenderbufferFormat:()=>Tl,Request:()=>sr,RequestErrorEvent:()=>Lf,RequestScheduler:()=>Sc,RequestState:()=>mi,RequestType:()=>Zs,Resource:()=>Ve,ResourceCache:()=>Mi,ResourceCacheKey:()=>Cl,ResourceCacheStatistics:()=>tB,ResourceLoader:()=>Yi,ResourceLoaderState:()=>ft,Rotation:()=>_m,RuntimeError:()=>de,S2Cell:()=>xA,SDFSettings:()=>ga,SampledPositionProperty:()=>Oa,SampledProperty:()=>cu,Sampler:()=>sn,ScaledPositionProperty:()=>up,Scene:()=>Pv,SceneFramebuffer:()=>wI,SceneMode:()=>re,SceneMode2DPipelineStage:()=>gX,SceneModePicker:()=>d9,SceneModePickerViewModel:()=>l9,SceneTransforms:()=>to,SceneTransitioner:()=>qM,ScreenSpaceCameraController:()=>nv,ScreenSpaceEventHandler:()=>Su,ScreenSpaceEventType:()=>Zn,SelectedFeatureIdPipelineStage:()=>l0,SelectionIndicator:()=>h9,SelectionIndicatorViewModel:()=>m9,SensorVolumePortionToDisplay:()=>nS,ShaderBuilder:()=>OA,ShaderCache:()=>iP,ShaderDestination:()=>be,ShaderFunction:()=>SX,ShaderProgram:()=>ln,ShaderSource:()=>Oe,ShaderStruct:()=>TX,ShadowMap:()=>Hg,ShadowMapShader:()=>Bp,ShadowMode:()=>Gn,ShadowVolumeAppearance:()=>Pd,SharedContext:()=>aP,ShowGeometryInstanceAttribute:()=>Vn,Simon1994PlanetaryPositions:()=>ry,SimplePolylineGeometry:()=>Kq,SingleTileImageryProvider:()=>Ow,SkinningPipelineStage:()=>yX,SkyAtmosphere:()=>Mv,SkyBox:()=>vv,SpatialNode:()=>Bv,Spdcf:()=>TB,SpecularEnvironmentCubeMap:()=>ph,SphereEmitter:()=>P$,SphereGeometry:()=>Jq,SphereOutlineGeometry:()=>cg,Spherical:()=>bW,Spline:()=>yo,SplitDirection:()=>Ir,Splitter:()=>_L,StaticGeometryColorBatch:()=>Lm,StaticGeometryPerMaterialBatch:()=>Rm,StaticGroundGeometryColorBatch:()=>IS,StaticGroundGeometryPerMaterialBatch:()=>tF,StaticGroundPolylinePerMaterialBatch:()=>mF,StaticOutlineGeometryBatch:()=>TS,StencilConstants:()=>jt,StencilFunction:()=>ei,StencilOperation:()=>Ct,SteppedSpline:()=>UB,Stereographic:()=>Wc,StorageType:()=>$b,StripeMaterialProperty:()=>eS,StripeOrientation:()=>Hh,StructuralMetadata:()=>fa,StyleCommandsNeeded:()=>Rh,StyleExpression:()=>M$,Sun:()=>Qv,SunLight:()=>Ng,SunPostProcess:()=>rv,SupportedImageFormats:()=>xB,SvgPathBindingHandler:()=>GN,TaskProcessor:()=>hi,Terrain:()=>EN,TerrainData:()=>df,TerrainEncoding:()=>Kc,TerrainFillMesh:()=>oL,TerrainMesh:()=>Fm,TerrainOffsetProperty:()=>IC,TerrainProvider:()=>Es,TerrainQuantization:()=>Ia,TerrainState:()=>So,Texture:()=>Wt,Texture3D:()=>d7,TextureAtlas:()=>mx,TextureCache:()=>oP,TextureMagnificationFilter:()=>pi,TextureManager:()=>Lv,TextureMinificationFilter:()=>en,TexturePacker:()=>uT,TextureUniform:()=>q$,TextureWrap:()=>Ln,TileAvailability:()=>bf,TileBoundingRegion:()=>tu,TileBoundingS2Cell:()=>w2,TileBoundingSphere:()=>lg,TileBoundingVolume:()=>v$,TileCoordinatesImageryProvider:()=>SN,TileDiscardPolicy:()=>D$,TileEdge:()=>Rn,TileImagery:()=>oT,TileMapServiceImageryProvider:()=>u0,TileMetadata:()=>L2,TileOrientedBoundingBox:()=>hd,TileProviderError:()=>vo,TileReplacementQueue:()=>FP,TileSelectionResult:()=>li,TileState:()=>Q$,Tileset3DTileContent:()=>JX,TilesetMetadata:()=>X2,TilesetPipelineStage:()=>jB,TilingScheme:()=>jq,TimeConstants:()=>ai,TimeDynamicImagery:()=>rx,TimeDynamicPointCloud:()=>TL,TimeInterval:()=>wn,TimeIntervalCollection:()=>as,TimeIntervalCollectionPositionProperty:()=>_g,TimeIntervalCollectionProperty:()=>Eg,TimeStandard:()=>oi,Timeline:()=>A9,TimelineHighlightRange:()=>f9,TimelineTrack:()=>p9,Tipsify:()=>L1,ToggleButtonViewModel:()=>Vy,Tonemapper:()=>Kg,TrackingReferenceFrame:()=>rA,Transforms:()=>Dt,TranslationRotationScale:()=>Rb,TranslucentTileClassification:()=>EM,TridiagonalSystemSolver:()=>NE,TrustedServers:()=>X_,TweenCollection:()=>kI,UniformState:()=>sP,UniformType:()=>gL,UrlTemplateImageryProvider:()=>hc,VERSION:()=>lVt,VRButton:()=>b9,VRButtonViewModel:()=>g9,VRTheWorldTerrainProvider:()=>qq,VaryingType:()=>$$,Vector3DTileBatch:()=>Nf,Vector3DTileClampedPolylines:()=>b2,Vector3DTileContent:()=>C2,Vector3DTileGeometry:()=>CA,Vector3DTilePoints:()=>u2,Vector3DTilePolygons:()=>m2,Vector3DTilePolylines:()=>bx,Vector3DTilePrimitive:()=>GC,VelocityOrientationProperty:()=>CW,VelocityVectorProperty:()=>Tg,VertexArray:()=>ui,VertexArrayFacade:()=>zA,VertexAttributeSemantic:()=>lt,VertexFormat:()=>we,VerticalExaggeration:()=>Mr,VerticalExaggerationPipelineStage:()=>xX,VerticalOrigin:()=>kn,VideoSynchronizer:()=>$q,View:()=>FI,Viewer:()=>Iee,ViewportQuad:()=>U$,Visibility:()=>Zr,Visualizer:()=>J8,VoxelBoxShape:()=>jI,VoxelCell:()=>cv,VoxelContent:()=>JI,VoxelCylinderShape:()=>qI,VoxelEllipsoidShape:()=>$I,VoxelInspector:()=>C9,VoxelInspectorViewModel:()=>y9,VoxelMetadataOrder:()=>Um,VoxelPrimitive:()=>by,VoxelProvider:()=>Y$,VoxelRenderResources:()=>_v,VoxelShape:()=>O$,VoxelShapeType:()=>qa,VoxelTraversal:()=>wv,VulkanConstants:()=>e$,WallGeometry:()=>HW,WallGeometryLibrary:()=>jx,WallGeometryUpdater:()=>JW,WallGraphics:()=>hA,WallOutlineGeometry:()=>KW,WebGLConstants:()=>ne,WebMapServiceImageryProvider:()=>zw,WebMapTileServiceImageryProvider:()=>Jw,WebMercatorProjection:()=>Ui,WebMercatorTilingScheme:()=>_s,WindingOrder:()=>ws,WireframeIndexGenerator:()=>aT,WireframePipelineStage:()=>IX,_shadersAcesTonemappingStage:()=>RM,_shadersAdditiveBlend:()=>iv,_shadersAdjustTranslucentFS:()=>KS,_shadersAllMaterialAppearanceFS:()=>A1,_shadersAllMaterialAppearanceVS:()=>g1,_shadersAmbientOcclusionGenerate:()=>VM,_shadersAmbientOcclusionModulate:()=>GM,_shadersAspectRampMaterial:()=>X1,_shadersAtmosphereCommon:()=>_h,_shadersAtmosphereStageFS:()=>qB,_shadersAtmosphereStageVS:()=>$B,_shadersBasicMaterialAppearanceFS:()=>b1,_shadersBasicMaterialAppearanceVS:()=>y1,_shadersBillboardCollectionFS:()=>jX,_shadersBillboardCollectionVS:()=>qX,_shadersBlackAndWhite:()=>ZM,_shadersBloomComposite:()=>BM,_shadersBrdfLutGeneratorFS:()=>lP,_shadersBrightPass:()=>ov,_shadersBrightness:()=>wM,_shadersBumpMapMaterial:()=>W1,_shadersCPUStylingStageFS:()=>Ew,_shadersCPUStylingStageVS:()=>_w,_shadersCheckerboardMaterial:()=>F1,_shadersCloudCollectionFS:()=>dP,_shadersCloudCollectionVS:()=>uP,_shadersCloudNoiseFS:()=>mP,_shadersCloudNoiseVS:()=>hP,_shadersCompareAndPackTranslucentDepth:()=>fP,_shadersCompositeOITFS:()=>pP,_shadersCompositeTranslucentClassification:()=>WI,_shadersComputeIrradianceFS:()=>cB,_shadersComputeRadianceMapFS:()=>lB,_shadersContrastBias:()=>XM,_shadersConvolveSpecularMapFS:()=>dB,_shadersConvolveSpecularMapVS:()=>uB,_shadersCustomShaderStageFS:()=>Lw,_shadersCustomShaderStageVS:()=>Sw,_shadersCzmBuiltins:()=>iC,_shadersDepthOfField:()=>WM,_shadersDepthPlaneFS:()=>AP,_shadersDepthPlaneVS:()=>gP,_shadersDepthView:()=>FM,_shadersDepthViewPacked:()=>j$,_shadersDotMaterial:()=>P1,_shadersEdgeDetection:()=>PM,_shadersElevationBandMaterial:()=>M1,_shadersElevationContourMaterial:()=>v1,_shadersElevationRampMaterial:()=>N1,_shadersEllipsoidFS:()=>JS,_shadersEllipsoidSurfaceAppearanceFS:()=>dN,_shadersEllipsoidSurfaceAppearanceVS:()=>uN,_shadersEllipsoidVS:()=>jS,_shadersFXAA:()=>NM,_shadersFXAA3_11:()=>bP,_shadersFadeMaterial:()=>D1,_shadersFeatureIdStageFS:()=>Rw,_shadersFeatureIdStageVS:()=>Vw,_shadersFilmicTonemapping:()=>MM,_shadersGaussianBlur1D:()=>fy,_shadersGeometryStageFS:()=>Ww,_shadersGeometryStageVS:()=>Fw,_shadersGlobeFS:()=>yP,_shadersGlobeVS:()=>CP,_shadersGridMaterial:()=>Q1,_shadersGroundAtmosphere:()=>qS,_shadersHSBToRGB:()=>tV,_shadersHSLToRGB:()=>nV,_shadersImageBasedLightingStageFS:()=>tw,_shadersInstancingStageCommon:()=>mw,_shadersInstancingStageVS:()=>hw,_shadersIntersectBox:()=>pv,_shadersIntersectClippingPlanes:()=>fv,_shadersIntersectCylinder:()=>Av,_shadersIntersectDepth:()=>hv,_shadersIntersectEllipsoid:()=>gv,_shadersIntersectLongitude:()=>AL,_shadersIntersection:()=>HI,_shadersIntersectionUtils:()=>mv,_shadersLegacyInstancingStageVS:()=>fw,_shadersLensFlare:()=>DM,_shadersLightingStageFS:()=>oX,_shadersMaterialStageFS:()=>sX,_shadersMegatexture:()=>Iv,_shadersMetadataStageFS:()=>Gw,_shadersMetadataStageVS:()=>Zw,_shadersModelClippingPlanesStageFS:()=>sw,_shadersModelClippingPolygonsStageFS:()=>lw,_shadersModelClippingPolygonsStageVS:()=>cw,_shadersModelColorStageFS:()=>rw,_shadersModelFS:()=>NX,_shadersModelSilhouetteStageFS:()=>RX,_shadersModelSilhouetteStageVS:()=>VX,_shadersModelSplitterStageFS:()=>ZX,_shadersModelVS:()=>vX,_shadersModifiedReinhardTonemapping:()=>QM,_shadersMorphTargetsStageVS:()=>cX,_shadersNightVision:()=>UM,_shadersNormalMapMaterial:()=>U1,_shadersOctree:()=>xv,_shadersPassThrough:()=>Ed,_shadersPassThroughDepth:()=>uy,_shadersPbrNeutralTonemapping:()=>vM,_shadersPerInstanceColorAppearanceFS:()=>eR,_shadersPerInstanceColorAppearanceVS:()=>tR,_shadersPerInstanceFlatColorAppearanceFS:()=>tC,_shadersPerInstanceFlatColorAppearanceVS:()=>nR,_shadersPointCloudEyeDomeLighting:()=>wB,_shadersPointCloudStylingStageVS:()=>uX,_shadersPointPrimitiveCollectionFS:()=>R0,_shadersPointPrimitiveCollectionVS:()=>aW,_shadersPolygonSignedDistanceFS:()=>sB,_shadersPolylineArrowMaterial:()=>k1,_shadersPolylineColorAppearanceVS:()=>JG,_shadersPolylineCommon:()=>Md,_shadersPolylineDashMaterial:()=>Y1,_shadersPolylineFS:()=>dC,_shadersPolylineGlowMaterial:()=>O1,_shadersPolylineMaterialAppearanceVS:()=>jG,_shadersPolylineOutlineMaterial:()=>H1,_shadersPolylineShadowVolumeFS:()=>OG,_shadersPolylineShadowVolumeMorphFS:()=>HG,_shadersPolylineShadowVolumeMorphVS:()=>zG,_shadersPolylineShadowVolumeVS:()=>KG,_shadersPolylineVS:()=>r2,_shadersPrimitiveGaussianSplatFS:()=>E2,_shadersPrimitiveGaussianSplatVS:()=>_2,_shadersPrimitiveOutlineStageFS:()=>fX,_shadersPrimitiveOutlineStageVS:()=>hX,_shadersRGBToHSB:()=>iV,_shadersRGBToHSL:()=>oV,_shadersRGBToXYZ:()=>rV,_shadersReinhardTonemapping:()=>kM,_shadersReprojectWebMercatorFS:()=>jw,_shadersReprojectWebMercatorVS:()=>qw,_shadersRimLightingMaterial:()=>z1,_shadersSelectedFeatureIdStageCommon:()=>HE,_shadersShadowVolumeAppearanceFS:()=>j_,_shadersShadowVolumeAppearanceVS:()=>MG,_shadersShadowVolumeFS:()=>Eb,_shadersSilhouette:()=>YM,_shadersSkinningStageVS:()=>bX,_shadersSkyAtmosphereCommon:()=>$S,_shadersSkyAtmosphereFS:()=>xP,_shadersSkyAtmosphereVS:()=>IP,_shadersSkyBoxFS:()=>_P,_shadersSkyBoxVS:()=>EP,_shadersSlopeRampMaterial:()=>K1,_shadersStripeMaterial:()=>J1,_shadersSunFS:()=>TP,_shadersSunTextureFS:()=>SP,_shadersSunVS:()=>LP,_shadersTexturedMaterialAppearanceFS:()=>C1,_shadersTexturedMaterialAppearanceVS:()=>x1,_shadersVector3DTileClampedPolylinesFS:()=>A2,_shadersVector3DTileClampedPolylinesVS:()=>p2,_shadersVector3DTilePolylinesVS:()=>h2,_shadersVectorTileVS:()=>aE,_shadersVerticalExaggerationStageVS:()=>CX,_shadersViewportQuadFS:()=>RP,_shadersViewportQuadVS:()=>yI,_shadersVoxelFS:()=>dv,_shadersVoxelUtils:()=>lv,_shadersVoxelVS:()=>uv,_shadersWater:()=>q1,_shadersWaterMaskMaterial:()=>j1,_shadersXYZToRGB:()=>sV,_shadersacesTonemapping:()=>aV,_shadersalphaWeight:()=>cV,_shadersantialias:()=>lV,_shadersapplyHSBShift:()=>dV,_shadersapproximateSphericalCoordinates:()=>uV,_shadersapproximateTanh:()=>mV,_shadersbackFacing:()=>hV,_shadersbranchFreeTernary:()=>fV,_shaderscascadeColor:()=>pV,_shaderscascadeDistance:()=>AV,_shaderscascadeMatrix:()=>gV,_shaderscascadeWeights:()=>bV,_shadersclipPolygons:()=>yV,_shaderscolumbusViewMorph:()=>CV,_shaderscomputeAtmosphereColor:()=>xV,_shaderscomputeGroundAtmosphereScattering:()=>IV,_shaderscomputePosition:()=>_V,_shaderscomputeScattering:()=>EV,_shadersconvertUvToBox:()=>bv,_shadersconvertUvToCylinder:()=>yv,_shadersconvertUvToEllipsoid:()=>Cv,_shaderscosineAndSine:()=>TV,_shadersdecompressTextureCoordinates:()=>SV,_shadersdegreesPerRadian:()=>cR,_shadersdepthClamp:()=>LV,_shadersdepthRange:()=>lR,_shadersdepthRangeStruct:()=>HR,_shaderseastNorthUpToEyeCoordinates:()=>RV,_shadersellipsoidContainsPoint:()=>VV,_shadersellipsoidTextureCoordinates:()=>GV,_shadersepsilon1:()=>dR,_shadersepsilon2:()=>uR,_shadersepsilon3:()=>mR,_shadersepsilon4:()=>hR,_shadersepsilon5:()=>fR,_shadersepsilon6:()=>pR,_shadersepsilon7:()=>AR,_shadersequalsEpsilon:()=>ZV,_shaderseyeOffset:()=>BV,_shaderseyeToWindowCoordinates:()=>wV,_shadersfastApproximateAtan:()=>XV,_shadersfog:()=>WV,_shadersgammaCorrect:()=>FV,_shadersgeodeticSurfaceNormal:()=>PV,_shadersgetDefaultMaterial:()=>MV,_shadersgetDynamicAtmosphereLightDirection:()=>vV,_shadersgetLambertDiffuse:()=>NV,_shadersgetSpecular:()=>DV,_shadersgetWaterNoise:()=>QV,_shadershue:()=>UV,_shadersinfinity:()=>gR,_shadersinverseGamma:()=>kV,_shadersisEmpty:()=>YV,_shadersisFull:()=>OV,_shaderslatitudeToWebMercatorFraction:()=>HV,_shaderslineDistance:()=>zV,_shaderslinearToSrgb:()=>KV,_shadersluminance:()=>JV,_shadersmaterial:()=>zR,_shadersmaterialInput:()=>KR,_shadersmaximumComponent:()=>jV,_shadersmetersPerPixel:()=>qV,_shadersmodelMaterial:()=>JR,_shadersmodelToWindowCoordinates:()=>$V,_shadersmodelVertexOutput:()=>jR,_shadersmultiplyWithColorBalance:()=>eG,_shadersnearFarScalar:()=>tG,_shadersoctDecode:()=>nG,_shadersoneOverPi:()=>bR,_shadersoneOverTwoPi:()=>yR,_shaderspackDepth:()=>iG,_shaderspassCesium3DTile:()=>CR,_shaderspassCesium3DTileClassification:()=>xR,_shaderspassCesium3DTileClassificationIgnoreShow:()=>IR,_shaderspassClassification:()=>_R,_shaderspassCompute:()=>ER,_shaderspassEnvironment:()=>TR,_shaderspassGaussianSplats:()=>SR,_shaderspassGlobe:()=>LR,_shaderspassOpaque:()=>RR,_shaderspassOverlay:()=>VR,_shaderspassTerrainClassification:()=>GR,_shaderspassTranslucent:()=>ZR,_shaderspassVoxels:()=>BR,_shaderspbrLighting:()=>oG,_shaderspbrNeutralTonemapping:()=>rG,_shadersphong:()=>sG,_shaderspi:()=>wR,_shaderspiOverFour:()=>XR,_shaderspiOverSix:()=>WR,_shaderspiOverThree:()=>FR,_shaderspiOverTwo:()=>PR,_shadersplaneDistance:()=>aG,_shaderspointAlongRay:()=>cG,_shadersradiansPerDegree:()=>MR,_shadersray:()=>qR,_shadersrayEllipsoidIntersectionInterval:()=>lG,_shadersraySegment:()=>$R,_shadersraySphereIntersectionInterval:()=>dG,_shadersreadDepth:()=>uG,_shadersreadNonPerspective:()=>mG,_shadersreverseLogDepth:()=>hG,_shadersround:()=>fG,_shaderssaturation:()=>pG,_shaderssceneMode2D:()=>vR,_shaderssceneMode3D:()=>NR,_shaderssceneModeColumbusView:()=>DR,_shaderssceneModeMorphing:()=>QR,_shadersshadowDepthCompare:()=>AG,_shadersshadowParameters:()=>eV,_shadersshadowVisibility:()=>gG,_shaderssignNotZero:()=>bG,_shaderssolarRadius:()=>UR,_shaderssphericalHarmonics:()=>yG,_shaderssrgbToLinear:()=>CG,_shaderstangentToEyeSpaceMatrix:()=>xG,_shaderstextureCube:()=>IG,_shadersthreePiOver2:()=>kR,_shaderstransformPlane:()=>_G,_shaderstranslateRelativeToEye:()=>EG,_shaderstranslucentPhong:()=>TG,_shaderstranspose:()=>SG,_shaderstwoPi:()=>YR,_shadersunpackClippingExtents:()=>LG,_shadersunpackDepth:()=>RG,_shadersunpackFloat:()=>VG,_shadersunpackUint:()=>GG,_shadersvalueTransform:()=>ZG,_shadersvertexLogDepth:()=>BG,_shaderswebMercatorMaxLatitude:()=>OR,_shaderswindowToEyeCoordinates:()=>wG,_shaderswriteDepthClamp:()=>XG,_shaderswriteLogDepth:()=>WG,_shaderswriteNonPerspective:()=>FG,addAllToArray:()=>ci,addBuffer:()=>QZ,addDefaults:()=>XZ,addExtensionsRequired:()=>vZ,addExtensionsUsed:()=>tm,addPipelineExtras:()=>Db,addToArray:()=>Os,appendForwardSlash:()=>$L,arrayRemoveDuplicates:()=>Xo,barycentricCoordinates:()=>Hy,binarySearch:()=>Yo,buildModuleUrl:()=>hn,buildVoxelDrawCommands:()=>Tv,clone:()=>ke,combine:()=>Lt,computeFlyToLocationForRectangle:()=>EI,createBillboardPointCallback:()=>fx,createCommand:()=>Xn,createDefaultImageryProviderViewModels:()=>vN,createDefaultTerrainProviderViewModels:()=>NN,createElevationBandMaterial:()=>H$,createGooglePhotorealistic3DTileset:()=>z$,createGuid:()=>qn,createMaterialPropertyDescriptor:()=>Oo,createOsmBuildingsAsync:()=>K$,createPropertyDescriptor:()=>fe,createRawPropertyDescriptor:()=>ul,createTangentSpaceDebugPrimitive:()=>J$,createTaskProcessorWorker:()=>tee,createUniform:()=>sR,createUniformArray:()=>aR,createWorldBathymetryAsync:()=>eN,createWorldImageryAsync:()=>YA,createWorldTerrainAsync:()=>h_,decodeGoogleEarthEnterpriseData:()=>tN,decodeVectorPolylinePositions:()=>y2,defaultValue:()=>n$,defer:()=>Ol,defined:()=>l,demodernizeShader:()=>PG,deprecationWarning:()=>_r,destroyObject:()=>me,exportKml:()=>t7,findAccessorMinMax:()=>vC,findContentMetadata:()=>xx,findGroupMetadata:()=>Ix,findTileMetadata:()=>R2,forEachTextureInMaterial:()=>AE,formatError:()=>Kf,freezeRenderState:()=>lH,getAbsoluteUri:()=>Tf,getAccessorByteStride:()=>nd,getBaseUri:()=>e1,getBinaryAccessor:()=>Dd,getClipAndStyleCode:()=>Uv,getClippingFunction:()=>Qg,getComponentReader:()=>LA,getElement:()=>Dn,getExtensionFromUri:()=>Fy,getFilenameFromUri:()=>yg,getImageFromTypedArray:()=>Sv,getImagePixels:()=>$m,getJsonFromTypedArray:()=>mr,getMagic:()=>gh,getMetadataClassProperty:()=>Xv,getMetadataProperty:()=>Fv,getStringFromTypedArray:()=>$l,getTimestamp:()=>Fi,hasExtension:()=>Ii,heightReferenceOnEntityPropertyChanged:()=>fA,isBitSet:()=>el,isBlobUri:()=>Py,isCrossOriginUrl:()=>hb,isDataUri:()=>Op,isLeapYear:()=>qm,knockout:()=>Ee,knockout_3_5_1:()=>I_,knockout_es5:()=>VN,loadAndExecuteScript:()=>My,loadCubeMap:()=>cP,loadImageFromTypedArray:()=>FC,loadKTX2:()=>Kl,mergeSort:()=>Sp,moveTechniqueRenderStates:()=>MZ,moveTechniquesToExtension:()=>NZ,numberOfComponentsForType:()=>Ud,objectToQuery:()=>vy,oneTimeWarning:()=>xt,parseBatchTable:()=>PA,parseFeatureMetadataLegacy:()=>yB,parseGlb:()=>FZ,parseResponseHeaders:()=>t1,parseStructuralMetadata:()=>bB,pickModel:()=>dT,pointInsideTriangle:()=>i$,preprocess3DTileContent:()=>rg,processVoxelProperties:()=>Ev,queryToObject:()=>wd,readAccessorPacked:()=>UZ,removeExtension:()=>NC,removeExtensionsRequired:()=>WZ,removeExtensionsUsed:()=>MC,removePipelineExtras:()=>PZ,removeUnusedElements:()=>DZ,resizeImageToNextPowerOfTwo:()=>kb,sampleTerrain:()=>VP,sampleTerrainMostDetailed:()=>_I,scaleToGeodeticSurface:()=>Wy,srgbToLinear:()=>f_,subdivideArray:()=>vG,subscribeAndEvaluate:()=>$a,updateAccessorComponentTypes:()=>kZ,updateVersion:()=>YZ,usesExtension:()=>Er,viewerCesium3DTilesInspectorMixin:()=>_ee,viewerCesiumInspectorMixin:()=>Eee,viewerDragDropMixin:()=>See,viewerPerformanceWatchdogMixin:()=>Lee,viewerVoxelInspectorMixin:()=>Vee,webGLConstantToGlslType:()=>o$,wrapFunction:()=>nN,writeTextToCanvas:()=>Ax});var lMo=y(C(),1);var imo=y(C(),1);var DVt=y(C(),1);var pVt=y(C(),1),Z3={};Z3.EMPTY_OBJECT=Object.freeze({});Z3.EMPTY_ARRAY=Object.freeze([]);var Y=Z3;var gVt=y(C(),1);function eLe(e){return e!=null}var l=eLe;var CVt=y(C(),1);function wy(e){this.name="DeveloperError",this.message=e;let t;try{throw new Error}catch(n){t=n.stack}this.stack=t}l(Object.create)&&(wy.prototype=Object.create(Error.prototype),wy.prototype.constructor=wy);wy.prototype.toString=function(){let e=`${this.name}: ${this.message}`;return l(this.stack)&&(e+=` +${this.stack.toString()}`),e};wy.throwInstantiationError=function(){throw new wy("This function defines an interface and should not be called directly.")};var Ae=wy;var LVt=y(C(),1);var EVt=y(C(),1);var Ys={};Ys.typeOf={};function tLe(e){return`${e} is required, actual value was undefined`}function L_(e,t,n){return`Expected ${n} to be typeof ${t}, actual typeof was ${e}`}Ys.defined=function(e,t){if(!l(t))throw new Ae(tLe(e))};Ys.typeOf.func=function(e,t){if(typeof t!="function")throw new Ae(L_(typeof t,"function",e))};Ys.typeOf.string=function(e,t){if(typeof t!="string")throw new Ae(L_(typeof t,"string",e))};Ys.typeOf.number=function(e,t){if(typeof t!="number")throw new Ae(L_(typeof t,"number",e))};Ys.typeOf.number.lessThan=function(e,t,n){if(Ys.typeOf.number(e,t),t>=n)throw new Ae(`Expected ${e} to be less than ${n}, actual value was ${t}`)};Ys.typeOf.number.lessThanOrEquals=function(e,t,n){if(Ys.typeOf.number(e,t),t>n)throw new Ae(`Expected ${e} to be less than or equal to ${n}, actual value was ${t}`)};Ys.typeOf.number.greaterThan=function(e,t,n){if(Ys.typeOf.number(e,t),t<=n)throw new Ae(`Expected ${e} to be greater than ${n}, actual value was ${t}`)};Ys.typeOf.number.greaterThanOrEquals=function(e,t,n){if(Ys.typeOf.number(e,t),t0){for(o.sort(nLe),e=0;e0&&(this._hash={},e.length=0)};var Bt=Xy;var vXt=y(C(),1);var qVt=y(C(),1);var zVt=y(C(),1),B3=y(T9(),1);var ht={};ht.EPSILON1=.1;ht.EPSILON2=.01;ht.EPSILON3=.001;ht.EPSILON4=1e-4;ht.EPSILON5=1e-5;ht.EPSILON6=1e-6;ht.EPSILON7=1e-7;ht.EPSILON8=1e-8;ht.EPSILON9=1e-9;ht.EPSILON10=1e-10;ht.EPSILON11=1e-11;ht.EPSILON12=1e-12;ht.EPSILON13=1e-13;ht.EPSILON14=1e-14;ht.EPSILON15=1e-15;ht.EPSILON16=1e-16;ht.EPSILON17=1e-17;ht.EPSILON18=1e-18;ht.EPSILON19=1e-19;ht.EPSILON20=1e-20;ht.EPSILON21=1e-21;ht.GRAVITATIONALPARAMETER=3986004418e5;ht.SOLAR_RADIUS=6955e5;ht.LUNAR_RADIUS=1737400;ht.SIXTY_FOUR_KILOBYTES=64*1024;ht.FOUR_GIGABYTES=4*1024*1024*1024;ht.sign=Math.sign??function(t){return t=+t,t===0||t!==t?t:t>0?1:-1};ht.signNotZero=function(e){return e<0?-1:1};ht.toSNorm=function(e,t){return t=t??255,Math.round((ht.clamp(e,-1,1)*.5+.5)*t)};ht.fromSNorm=function(e,t){return t=t??255,ht.clamp(e,0,t)/t*2-1};ht.normalize=function(e,t,n){return n=Math.max(n-t,0),n===0?0:ht.clamp((e-t)/n,0,1)};ht.sinh=Math.sinh??function(t){return(Math.exp(t)-Math.exp(-t))/2};ht.cosh=Math.cosh??function(t){return(Math.exp(t)+Math.exp(-t))/2};ht.lerp=function(e,t,n){return(1-n)*e+n*t};ht.PI=Math.PI;ht.ONE_OVER_PI=1/Math.PI;ht.PI_OVER_TWO=Math.PI/2;ht.PI_OVER_THREE=Math.PI/3;ht.PI_OVER_FOUR=Math.PI/4;ht.PI_OVER_SIX=Math.PI/6;ht.THREE_PI_OVER_TWO=3*Math.PI/2;ht.TWO_PI=2*Math.PI;ht.ONE_OVER_TWO_PI=1/(2*Math.PI);ht.RADIANS_PER_DEGREE=Math.PI/180;ht.DEGREES_PER_RADIAN=180/Math.PI;ht.RADIANS_PER_ARCSECOND=ht.RADIANS_PER_DEGREE/3600;ht.toRadians=function(e){return e*ht.RADIANS_PER_DEGREE};ht.toDegrees=function(e){return e*ht.DEGREES_PER_RADIAN};ht.convertLongitudeRange=function(e){let t=ht.TWO_PI,n=e-Math.floor(e/t)*t;return n<-Math.PI?n+t:n>=Math.PI?n-t:n};ht.clampToLatitudeRange=function(e){return ht.clamp(e,-1*ht.PI_OVER_TWO,ht.PI_OVER_TWO)};ht.negativePiToPi=function(e){return e>=-ht.PI&&e<=ht.PI?e:ht.zeroToTwoPi(e+ht.PI)-ht.PI};ht.zeroToTwoPi=function(e){if(e>=0&&e<=ht.TWO_PI)return e;let t=ht.mod(e,ht.TWO_PI);return Math.abs(t)ht.EPSILON14?ht.TWO_PI:t};ht.mod=function(e,t){return ht.sign(e)===ht.sign(t)&&Math.abs(e)n};ht.greaterThanOrEquals=function(e,t,n){return e-t>-n};var S9=[1];ht.factorial=function(e){let t=S9.length;if(e>=t){let n=S9[t-1];for(let i=t;i<=e;i++){let o=n*i;S9.push(o),n=o}}return S9[e]};ht.incrementWrap=function(e,t,n){return n=n??0,++e,e>t&&(e=n),e};ht.isPowerOfTwo=function(e){return e!==0&&(e&e-1)===0};ht.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e};ht.previousPowerOfTwo=function(e){return e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e|=e>>32,e=(e>>>0)-(e>>>1),e};ht.clamp=function(e,t,n){return en?n:e};var Wee=new B3.default;ht.setRandomNumberSeed=function(e){Wee=new B3.default(e)};ht.nextRandomNumber=function(){return Wee.random()};ht.randomBetween=function(e,t){return ht.nextRandomNumber()*(t-e)+e};ht.acosClamped=function(e){return Math.acos(ht.clamp(e,-1,1))};ht.asinClamped=function(e){return Math.asin(ht.clamp(e,-1,1))};ht.chordLength=function(e,t){return 2*t*Math.sin(e*.5)};ht.logBase=function(e,t){return Math.log(e)/Math.log(t)};ht.cbrt=Math.cbrt??function(t){let n=Math.pow(Math.abs(t),.3333333333333333);return t<0?-n:n};ht.log2=Math.log2??function(t){return Math.log(t)*Math.LOG2E};ht.fog=function(e,t){let n=e*t;return 1-Math.exp(-(n*n))};ht.fastApproximateAtan=function(e){return e*(-.1784*Math.abs(e)-.0663*e*e+1.0301)};ht.fastApproximateAtan2=function(e,t){let n,i=Math.abs(e);n=Math.abs(t);let o=Math.max(i,n);n=Math.min(i,n);let r=n/o;return i=ht.fastApproximateAtan(r),i=Math.abs(t)>Math.abs(e)?ht.PI_OVER_TWO-i:i,i=e<0?ht.PI-i:i,i=t<0?-i:i,i};var Z=ht;function Ot(e,t){this.x=e??0,this.y=t??0}Ot.fromElements=function(e,t,n){return l(n)?(n.x=e,n.y=t,n):new Ot(e,t)};Ot.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t):new Ot(e.x,e.y)};Ot.fromCartesian3=Ot.clone;Ot.fromCartesian4=Ot.clone;Ot.packedLength=2;Ot.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n]=e.y,t};Ot.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Ot),n.x=e[t++],n.y=e[t],n};Ot.packArray=function(e,t){let n=e.length,i=n*2;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;oZ.EPSILON12);return l(o)?(o.x=r*F,o.y=s*P,o.z=a*A,o):new m(r*F,s*P,a*A)}var Wy=dLe;function qo(e,t,n){this.longitude=e??0,this.latitude=t??0,this.height=n??0}qo.fromRadians=function(e,t,n,i){return n=n??0,l(i)?(i.longitude=e,i.latitude=t,i.height=n,i):new qo(e,t,n)};qo.fromDegrees=function(e,t,n,i){return e=Z.toRadians(e),t=Z.toRadians(t),qo.fromRadians(e,t,n,i)};var uLe=new m,mLe=new m,hLe=new m;qo._ellipsoidOneOverRadii=new m(1/6378137,1/6378137,1/6356752314245179e-9);qo._ellipsoidOneOverRadiiSquared=new m(1/(6378137*6378137),1/(6378137*6378137),1/(6356752314245179e-9*6356752314245179e-9));qo._ellipsoidCenterToleranceSquared=Z.EPSILON1;qo.fromCartesian=function(e,t,n){let i=l(t)?t.oneOverRadii:qo._ellipsoidOneOverRadii,o=l(t)?t.oneOverRadiiSquared:qo._ellipsoidOneOverRadiiSquared,r=l(t)?t._centerToleranceSquared:qo._ellipsoidCenterToleranceSquared,s=Wy(e,i,o,r,mLe);if(!l(s))return;let a=m.multiplyComponents(s,o,uLe);a=m.normalize(a,a);let c=m.subtract(e,s,hLe),d=Math.atan2(a.y,a.x),u=Math.asin(a.z),h=Z.sign(m.dot(c,e))*m.magnitude(c);return l(n)?(n.longitude=d,n.latitude=u,n.height=h,n):new qo(d,u,h)};qo.toCartesian=function(e,t,n){return m.fromRadians(e.longitude,e.latitude,e.height,t,n)};qo.clone=function(e,t){if(l(e))return l(t)?(t.longitude=e.longitude,t.latitude=e.latitude,t.height=e.height,t):new qo(e.longitude,e.latitude,e.height)};qo.equals=function(e,t){return e===t||l(e)&&l(t)&&e.longitude===t.longitude&&e.latitude===t.latitude&&e.height===t.height};qo.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.longitude-t.longitude)<=n&&Math.abs(e.latitude-t.latitude)<=n&&Math.abs(e.height-t.height)<=n};qo.ZERO=Object.freeze(new qo(0,0,0));qo.prototype.clone=function(e){return qo.clone(this,e)};qo.prototype.equals=function(e){return qo.equals(this,e)};qo.prototype.equalsEpsilon=function(e,t){return qo.equalsEpsilon(this,e,t)};qo.prototype.toString=function(){return`(${this.longitude}, ${this.latitude}, ${this.height})`};var ge=qo;var xGt=y(C(),1);function Dee(e,t,n,i){t=t??0,n=n??0,i=i??0,e._radii=new m(t,n,i),e._radiiSquared=new m(t*t,n*n,i*i),e._radiiToTheFourth=new m(t*t*t*t,n*n*n*n,i*i*i*i),e._oneOverRadii=new m(t===0?0:1/t,n===0?0:1/n,i===0?0:1/i),e._oneOverRadiiSquared=new m(t===0?0:1/(t*t),n===0?0:1/(n*n),i===0?0:1/(i*i)),e._minimumRadius=Math.min(t,n,i),e._maximumRadius=Math.max(t,n,i),e._centerToleranceSquared=Z.EPSILON1,e._radiiSquared.z!==0&&(e._squaredXOverSquaredZ=e._radiiSquared.x/e._radiiSquared.z)}function Bi(e,t,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,this._squaredXOverSquaredZ=void 0,Dee(this,e,t,n)}Object.defineProperties(Bi.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}});Bi.clone=function(e,t){if(!l(e))return;let n=e._radii;return l(t)?(m.clone(n,t._radii),m.clone(e._radiiSquared,t._radiiSquared),m.clone(e._radiiToTheFourth,t._radiiToTheFourth),m.clone(e._oneOverRadii,t._oneOverRadii),m.clone(e._oneOverRadiiSquared,t._oneOverRadiiSquared),t._minimumRadius=e._minimumRadius,t._maximumRadius=e._maximumRadius,t._centerToleranceSquared=e._centerToleranceSquared,t):new Bi(n.x,n.y,n.z)};Bi.fromCartesian3=function(e,t){return l(t)||(t=new Bi),l(e)&&Dee(t,e.x,e.y,e.z),t};Bi.WGS84=Object.freeze(new Bi(6378137,6378137,6356752314245179e-9));Bi.UNIT_SPHERE=Object.freeze(new Bi(1,1,1));Bi.MOON=Object.freeze(new Bi(Z.LUNAR_RADIUS,Z.LUNAR_RADIUS,Z.LUNAR_RADIUS));Bi._default=Bi.WGS84;Object.defineProperties(Bi,{default:{get:function(){return Bi._default},set:function(e){Bi._default=e,m._ellipsoidRadiiSquared=e.radiiSquared,ge._ellipsoidOneOverRadii=e.oneOverRadii,ge._ellipsoidOneOverRadiiSquared=e.oneOverRadiiSquared,ge._ellipsoidCenterToleranceSquared=e._centerToleranceSquared}}});Bi.prototype.clone=function(e){return Bi.clone(this,e)};Bi.packedLength=m.packedLength;Bi.pack=function(e,t,n){return n=n??0,m.pack(e._radii,t,n),t};Bi.unpack=function(e,t,n){t=t??0;let i=m.unpack(e,t);return Bi.fromCartesian3(i,n)};Bi.prototype.geocentricSurfaceNormal=m.normalize;Bi.prototype.geodeticSurfaceNormalCartographic=function(e,t){let n=e.longitude,i=e.latitude,o=Math.cos(i),r=o*Math.cos(n),s=o*Math.sin(n),a=Math.sin(i);return l(t)||(t=new m),t.x=r,t.y=s,t.z=a,m.normalize(t,t)};Bi.prototype.geodeticSurfaceNormal=function(e,t){if(!m.equalsEpsilon(e,m.ZERO,Z.EPSILON14))return l(t)||(t=new m),t=m.multiplyComponents(e,this._oneOverRadiiSquared,t),m.normalize(t,t)};var fLe=new m,pLe=new m;Bi.prototype.cartographicToCartesian=function(e,t){let n=fLe,i=pLe;this.geodeticSurfaceNormalCartographic(e,n),m.multiplyComponents(this._radiiSquared,n,i);let o=Math.sqrt(m.dot(n,i));return m.divideByScalar(i,o,i),m.multiplyByScalar(n,e.height,n),l(t)||(t=new m),m.add(i,n,t)};Bi.prototype.cartographicArrayToCartesianArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i=this._radii.z-t))return n};var yLe=new m;Bi.prototype.getLocalCurvature=function(e,t){l(t)||(t=new D);let n=this.getSurfaceNormalIntersectionWithZAxis(e,0,yLe),i=m.distance(e,n),o=this.minimumRadius*i/this.maximumRadius**2,r=i*o**2;return D.fromElements(1/i,1/r,t)};var CLe=[.14887433898163,.43339539412925,.67940956829902,.86506336668898,.97390652851717,0],xLe=[.29552422471475,.26926671930999,.21908636251598,.14945134915058,.066671344308684,0];function Nee(e,t,n){let i=.5*(t+e),o=.5*(t-e),r=0;for(let s=0;s<5;s++){let a=o*CLe[s];r+=xLe[s]*(n(i+a)+n(i-a))}return r*=o,r}Bi.prototype.surfaceArea=function(e){let t=e.west,n=e.east,i=e.south,o=e.north;for(;n0){o=r-1;continue}return r}return~(o+1)}var Yo=SLe;var PGt=y(C(),1);function LLe(e,t,n,i,o){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=n,this.yPoleOffset=i,this.ut1MinusUtc=o}var ub=LLe;var rZt=y(C(),1);var kGt=y(C(),1);var vGt=y(C(),1);function RLe(e){return e%4===0&&e%100!==0||e%400===0}var qm=RLe;var kee=[31,28,31,30,31,30,31,31,30,31,30,31];function VLe(e,t,n,i,o,r,s,a){e=e??1,t=t??1,n=n??1,i=i??0,o=o??0,r=r??0,s=s??0,a=a??!1,this.year=e,this.month=t,this.day=n,this.hour=i,this.minute=o,this.second=r,this.millisecond=s,this.isLeapSecond=a;function b(){Bo.typeOf.number.greaterThanOrEquals("Year",e,1),Bo.typeOf.number.lessThanOrEquals("Year",e,9999),Bo.typeOf.number.greaterThanOrEquals("Month",t,1),Bo.typeOf.number.lessThanOrEquals("Month",t,12),Bo.typeOf.number.greaterThanOrEquals("Day",n,1),Bo.typeOf.number.lessThanOrEquals("Day",n,31),Bo.typeOf.number.greaterThanOrEquals("Hour",i,0),Bo.typeOf.number.lessThanOrEquals("Hour",i,23),Bo.typeOf.number.greaterThanOrEquals("Minute",o,0),Bo.typeOf.number.lessThanOrEquals("Minute",o,59),Bo.typeOf.bool("IsLeapSecond",a),Bo.typeOf.number.greaterThanOrEquals("Second",r,0),Bo.typeOf.number.lessThanOrEquals("Second",r,a?60:59),Bo.typeOf.number.greaterThanOrEquals("Millisecond",s,0),Bo.typeOf.number.lessThan("Millisecond",s,1e3)}function x(){let I=t===2&&qm(e)?kee[t-1]+1:kee[t-1];if(n>I)throw new Ae("Month and Day represents invalid date")}}var Yp=VLe;var OGt=y(C(),1);function GLe(e,t){this.julianDate=e,this.offset=t}var ro=GLe;var zGt=y(C(),1),ZLe={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:24000005e-1},ai=Object.freeze(ZLe);var JGt=y(C(),1),BLe={UTC:0,TAI:1},oi=Object.freeze(BLe);var Oee=new Yp,W3=[31,28,31,30,31,30,31,31,30,31,30,31],F3=29;function P3(e,t){return Nt.compare(e.julianDate,t.julianDate)}var V_=new ro;function w9(e){V_.julianDate=e;let t=Nt.leapSeconds,n=Yo(t,V_,P3);n<0&&(n=~n),n>=t.length&&(n=t.length-1);let i=t[n].offset;n>0&&Nt.secondsDifference(t[n].julianDate,e)>i&&(n--,i=t[n].offset),Nt.addSeconds(e,i,e)}function Yee(e,t){V_.julianDate=e;let n=Nt.leapSeconds,i=Yo(n,V_,P3);if(i<0&&(i=~i),i===0)return Nt.addSeconds(e,-n[0].offset,t);if(i>=n.length)return Nt.addSeconds(e,-n[i-1].offset,t);let o=Nt.secondsDifference(n[i].julianDate,e);if(o===0)return Nt.addSeconds(e,-n[i].offset,t);if(!(o<=1))return Nt.addSeconds(e,-n[--i].offset,t)}function mb(e,t,n){let i=t/ai.SECONDS_PER_DAY|0;return e+=i,t-=ai.SECONDS_PER_DAY*i,t<0&&(e--,t+=ai.SECONDS_PER_DAY),n.dayNumber=e,n.secondsOfDay=t,n}function M3(e,t,n,i,o,r,s){let a=(t-14)/12|0,c=e+4800+a,d=(1461*c/4|0)+(367*(t-2-12*a)/12|0)-(3*((c+100)/100|0)/4|0)+n-32075;i=i-12,i<0&&(i+=24);let u=r+(i*ai.SECONDS_PER_HOUR+o*ai.SECONDS_PER_MINUTE+s*ai.SECONDS_PER_MILLISECOND);return u>=43200&&(d-=1),[d,u]}var wLe=/^(\d{4})$/,XLe=/^(\d{4})-(\d{2})$/,WLe=/^(\d{4})-?(\d{3})$/,FLe=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,PLe=/^(\d{4})-?(\d{2})-?(\d{2})$/,v3=/([Z+\-])?(\d{2})?:?(\d{2})?$/,MLe=/^(\d{2})(\.\d+)?/.source+v3.source,vLe=/^(\d{2}):?(\d{2})(\.\d+)?/.source+v3.source,NLe=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+v3.source;function Nt(e,t,n){this.dayNumber=void 0,this.secondsOfDay=void 0,e=e??0,t=t??0,n=n??oi.UTC;let i=e|0;t=t+(e-i)*ai.SECONDS_PER_DAY,mb(i,t,this),n===oi.UTC&&w9(this)}Nt.fromGregorianDate=function(e,t){let n=M3(e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond);return l(t)?(mb(n[0],n[1],t),w9(t),t):new Nt(n[0],n[1],oi.UTC)};Nt.fromDate=function(e,t){let n=M3(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return l(t)?(mb(n[0],n[1],t),w9(t),t):new Nt(n[0],n[1],oi.UTC)};Nt.fromIso8601=function(e,t){e=e.replace(",",".");let n=e.split("T"),i,o=1,r=1,s=0,a=0,c=0,d=0,u=n[0],h=n[1],p,g;if(n=u.match(PLe),n!==null)i=+n[1],o=+n[2],r=+n[3];else if(n=u.match(XLe),n!==null)i=+n[1],o=+n[2];else if(n=u.match(wLe),n!==null)i=+n[1];else{let I;if(n=u.match(WLe),n!==null)i=+n[1],I=+n[2],g=qm(i);else if(n=u.match(FLe),n!==null){i=+n[1];let _=+n[2],E=+n[3]||0,S=new Date(Date.UTC(i,0,4));I=_*7+E-S.getUTCDay()-3}p=new Date(Date.UTC(i,0,1)),p.setUTCDate(I),o=p.getUTCMonth()+1,r=p.getUTCDate()}g=qm(i);let f;if(l(h)){n=h.match(NLe),n!==null?(s=+n[1],a=+n[2],c=+n[3],d=+(n[4]||0)*1e3,f=5):(n=h.match(vLe),n!==null?(s=+n[1],a=+n[2],c=+(n[3]||0)*60,f=4):(n=h.match(MLe),n!==null&&(s=+n[1],a=+(n[2]||0)*60,f=3)));let I=n[f],_=+n[f+1],E=+(n[f+2]||0);switch(I){case"+":s=s-_,a=a-E;break;case"-":s=s+_,a=a+E;break;case"Z":break;default:a=a+new Date(Date.UTC(i,o-1,r,s,a)).getTimezoneOffset();break}}let b=c===60;for(b&&c--;a>=60;)a-=60,s++;for(;s>=24;)s-=24,r++;for(p=g&&o===2?F3:W3[o-1];r>p;)r-=p,o++,o>12&&(o-=12,i++),p=g&&o===2?F3:W3[o-1];for(;a<0;)a+=60,s--;for(;s<0;)s+=24,r--;for(;r<1;)o--,o<1&&(o+=12,i--),p=g&&o===2?F3:W3[o-1],r+=p;let x=M3(i,o,r,s,a,c,d);return l(t)?(mb(x[0],x[1],t),w9(t)):t=new Nt(x[0],x[1],oi.UTC),b&&Nt.addSeconds(t,1,t),t};Nt.now=function(e){return Nt.fromDate(new Date,e)};var B9=new Nt(0,0,oi.TAI);Nt.toGregorianDate=function(e,t){let n=!1,i=Yee(e,B9);l(i)||(Nt.addSeconds(e,-1,B9),i=Yee(B9,B9),n=!0);let o=i.dayNumber,r=i.secondsOfDay;r>=43200&&(o+=1);let s=o+68569|0,a=4*s/146097|0;s=s-((146097*a+3)/4|0)|0;let c=4e3*(s+1)/1461001|0;s=s-(1461*c/4|0)+31|0;let d=80*s/2447|0,u=s-(2447*d/80|0)|0;s=d/11|0;let h=d+2-12*s|0,p=100*(a-49)+c+s|0,g=r/ai.SECONDS_PER_HOUR|0,f=r-g*ai.SECONDS_PER_HOUR,b=f/ai.SECONDS_PER_MINUTE|0;f=f-b*ai.SECONDS_PER_MINUTE;let x=f|0,I=(f-x)/ai.SECONDS_PER_MILLISECOND;return g+=12,g>23&&(g-=24),n&&(x+=1),l(t)?(t.year=p,t.month=h,t.day=u,t.hour=g,t.minute=b,t.second=x,t.millisecond=I,t.isLeapSecond=n,t):new Yp(p,h,u,g,b,x,I,n)};Nt.toDate=function(e){let t=Nt.toGregorianDate(e,Oee),n=t.second;return t.isLeapSecond&&(n-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,n,t.millisecond))};Nt.toIso8601=function(e,t){let n=Nt.toGregorianDate(e,Oee),i=n.year,o=n.month,r=n.day,s=n.hour,a=n.minute,c=n.second,d=n.millisecond;i===1e4&&o===1&&r===1&&s===0&&a===0&&c===0&&d===0&&(i=9999,o=12,r=31,s=24);let u;if(!l(t)&&d!==0){let h=d*.01;return u=h<1e-6?h.toFixed(20).replace(".","").replace(/0+$/,""):h.toString().replace(".",""),`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}.${u}Z`}return!l(t)||t===0?`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}Z`:(u=(d*.01).toFixed(t).replace(".","").slice(0,t),`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}.${u}Z`)};Nt.clone=function(e,t){if(l(e))return l(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new Nt(e.dayNumber,e.secondsOfDay,oi.TAI)};Nt.compare=function(e,t){let n=e.dayNumber-t.dayNumber;return n!==0?n:e.secondsOfDay-t.secondsOfDay};Nt.equals=function(e,t){return e===t||l(e)&&l(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay};Nt.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(Nt.secondsDifference(e,t))<=n};Nt.totalDays=function(e){return e.dayNumber+e.secondsOfDay/ai.SECONDS_PER_DAY};Nt.secondsDifference=function(e,t){return(e.dayNumber-t.dayNumber)*ai.SECONDS_PER_DAY+(e.secondsOfDay-t.secondsOfDay)};Nt.daysDifference=function(e,t){let n=e.dayNumber-t.dayNumber,i=(e.secondsOfDay-t.secondsOfDay)/ai.SECONDS_PER_DAY;return n+i};Nt.computeTaiMinusUtc=function(e){V_.julianDate=e;let t=Nt.leapSeconds,n=Yo(t,V_,P3);return n<0&&(n=~n,--n,n<0&&(n=0)),t[n].offset};Nt.addSeconds=function(e,t,n){return mb(e.dayNumber,e.secondsOfDay+t,n)};Nt.addMinutes=function(e,t,n){let i=e.secondsOfDay+t*ai.SECONDS_PER_MINUTE;return mb(e.dayNumber,i,n)};Nt.addHours=function(e,t,n){let i=e.secondsOfDay+t*ai.SECONDS_PER_HOUR;return mb(e.dayNumber,i,n)};Nt.addDays=function(e,t,n){let i=e.dayNumber+t;return mb(i,e.secondsOfDay,n)};Nt.lessThan=function(e,t){return Nt.compare(e,t)<0};Nt.lessThanOrEquals=function(e,t){return Nt.compare(e,t)<=0};Nt.greaterThan=function(e,t){return Nt.compare(e,t)>0};Nt.greaterThanOrEquals=function(e,t){return Nt.compare(e,t)>=0};Nt.prototype.clone=function(e){return Nt.clone(this,e)};Nt.prototype.equals=function(e){return Nt.equals(this,e)};Nt.prototype.equalsEpsilon=function(e,t){return Nt.equalsEpsilon(this,e,t)};Nt.prototype.toString=function(){return Nt.toIso8601(this)};Nt.leapSeconds=[new ro(new Nt(2441317,43210,oi.TAI),10),new ro(new Nt(2441499,43211,oi.TAI),11),new ro(new Nt(2441683,43212,oi.TAI),12),new ro(new Nt(2442048,43213,oi.TAI),13),new ro(new Nt(2442413,43214,oi.TAI),14),new ro(new Nt(2442778,43215,oi.TAI),15),new ro(new Nt(2443144,43216,oi.TAI),16),new ro(new Nt(2443509,43217,oi.TAI),17),new ro(new Nt(2443874,43218,oi.TAI),18),new ro(new Nt(2444239,43219,oi.TAI),19),new ro(new Nt(2444786,43220,oi.TAI),20),new ro(new Nt(2445151,43221,oi.TAI),21),new ro(new Nt(2445516,43222,oi.TAI),22),new ro(new Nt(2446247,43223,oi.TAI),23),new ro(new Nt(2447161,43224,oi.TAI),24),new ro(new Nt(2447892,43225,oi.TAI),25),new ro(new Nt(2448257,43226,oi.TAI),26),new ro(new Nt(2448804,43227,oi.TAI),27),new ro(new Nt(2449169,43228,oi.TAI),28),new ro(new Nt(2449534,43229,oi.TAI),29),new ro(new Nt(2450083,43230,oi.TAI),30),new ro(new Nt(2450630,43231,oi.TAI),31),new ro(new Nt(2451179,43232,oi.TAI),32),new ro(new Nt(2453736,43233,oi.TAI),33),new ro(new Nt(2454832,43234,oi.TAI),34),new ro(new Nt(2456109,43235,oi.TAI),35),new ro(new Nt(2457204,43236,oi.TAI),36),new ro(new Nt(2457754,43237,oi.TAI),37)];var j=Nt;var zBt=y(C(),1),ute=y(Bd(),1);var uZt=y(C(),1);function DLe(e){return(e.length===0||e[e.length-1]!=="/")&&(e=`${e}/`),e}var $L=DLe;var hZt=y(C(),1);function $ee(e,t){if(e===null||typeof e!="object")return e;t=t??!1;let n=new e.constructor;for(let i in e)if(e.hasOwnProperty(i)){let o=e[i];t&&(o=$ee(o,t)),n[i]=o}return n}var ke=$ee;var AZt=y(C(),1);function ete(e,t,n){n=n??!1;let i={},o=l(e),r=l(t),s,a,c;if(o)for(s in e)e.hasOwnProperty(s)&&(a=e[s],r&&n&&typeof a=="object"&&t.hasOwnProperty(s)?(c=t[s],typeof c=="object"?i[s]=ete(a,c,n):i[s]=a):i[s]=a);if(r)for(s in t)t.hasOwnProperty(s)&&!i.hasOwnProperty(s)&&(c=t[s],i[s]=c);return i}var Lt=ete;var bZt=y(C(),1);function QLe(){let e,t,n=new Promise(function(i,o){e=i,t=o});return{resolve:e,reject:t,promise:n}}var Ol=QLe;var xZt=y(C(),1),tte=y(Bd(),1);function N3(e,t){let n;return typeof document<"u"&&(n=document),N3._implementation(e,t,n)}N3._implementation=function(e,t,n){if(!l(t)){if(typeof n>"u")return e;t=n.baseURI??n.location.href}let i=new tte.default(e);return i.scheme()!==""?i.toString():i.absoluteTo(t).toString()};var Tf=N3;var _Zt=y(C(),1),nte=y(Bd(),1);function ULe(e,t){let n="",i=e.lastIndexOf("/");return i!==-1&&(n=e.substring(0,i+1)),t&&(e=new nte.default(e),e.query().length!==0&&(n+=`?${e.query()}`),e.fragment().length!==0&&(n+=`#${e.fragment()}`)),n}var e1=ULe;var TZt=y(C(),1),ite=y(Bd(),1);function kLe(e){let t=new ite.default(e);t.normalize();let n=t.path(),i=n.lastIndexOf("/");return i!==-1&&(n=n.substr(i+1)),i=n.lastIndexOf("."),i===-1?n="":n=n.substr(i+1),n}var Fy=kLe;var RZt=y(C(),1);var ote={};function YLe(e,t,n){l(t)||(t=e.width),l(n)||(n=e.height);let i=ote[t];l(i)||(i={},ote[t]=i);let o=i[n];if(!l(o)){let r=document.createElement("canvas");r.width=t,r.height=n,o=r.getContext("2d",{willReadFrequently:!0}),o.globalCompositeOperation="copy",i[n]=o}return o.drawImage(e,0,0,t,n),o.getImageData(0,0,t,n).data}var $m=YLe;var GZt=y(C(),1);var OLe=/^blob:/i;function HLe(e){return OLe.test(e)}var Py=HLe;var wZt=y(C(),1);var Sf;function zLe(e){l(Sf)||(Sf=document.createElement("a")),Sf.href=window.location.href;let t=Sf.host,n=Sf.protocol;return Sf.href=e,Sf.href=Sf.href,n!==Sf.protocol||t!==Sf.host}var hb=zLe;var WZt=y(C(),1);var KLe=/^data:/i;function JLe(e){return KLe.test(e)}var Op=JLe;var PZt=y(C(),1);function jLe(e){let t=document.createElement("script");return t.async=!0,t.src=e,new Promise((n,i)=>{window.crossOriginIsolated&&t.setAttribute("crossorigin","anonymous");let o=document.getElementsByTagName("head")[0];t.onload=function(){t.onload=void 0,o.removeChild(t),n()},t.onerror=function(r){i(r)},o.appendChild(t)})}var My=jLe;var vZt=y(C(),1);function qLe(e){let t="";for(let n in e)if(e.hasOwnProperty(n)){let i=e[n],o=`${encodeURIComponent(n)}=`;if(Array.isArray(i))for(let r=0,s=i.length;r0){let s=o.substring(0,r),a=o.substring(r+2);t[s]=a}}return t}var t1=n1e;function rte(e,t,n){this.statusCode=e,this.response=t,this.responseHeaders=n,typeof this.responseHeaders=="string"&&(this.responseHeaders=t1(this.responseHeaders))}rte.prototype.toString=function(){let e="Request has failed.";return l(this.statusCode)&&(e+=` Status Code: ${this.statusCode}`),e};var Lf=rte;var ABt=y(C(),1),M9=y(Bd(),1);var aBt=y(C(),1);function Ny(e){this._comparator=e.comparator,this._array=[],this._length=0,this._maximumLength=void 0}Object.defineProperties(Ny.prototype,{length:{get:function(){return this._length}},internalArray:{get:function(){return this._array}},maximumLength:{get:function(){return this._maximumLength},set:function(e){let t=this._length;if(e=0;--t)this.heapify(t)};Ny.prototype.insert=function(e){let t=this._array,n=this._comparator,i=this._maximumLength,o=this._length++;for(oi&&(r=t[i],this._length=i),r};Ny.prototype.pop=function(e){if(e=e??0,this._length===0)return;let t=this._array,n=t[e];return D3(t,e,--this._length),this.heapify(e),t[this._length]=void 0,n};var n1=Ny;function i1e(e,t){return e.priority-t.priority}var Ao={numberOfAttemptedRequests:0,numberOfActiveRequests:0,numberOfCancelledRequests:0,numberOfCancelledActiveRequests:0,numberOfFailedRequests:0,numberOfActiveRequestsEver:0,lastNumberOfActiveRequests:0},B_=20,Tc=new n1({comparator:i1e});Tc.maximumLength=B_;Tc.reserve(B_);var Rf=[],Hp={},o1e=typeof document<"u"?new M9.default(document.location.href):new M9.default,v9=new Ce;function ar(){}ar.maximumRequests=50;ar.maximumRequestsPerServer=18;ar.requestsByServer={};ar.throttleRequests=!0;ar.debugShowStatistics=!1;ar.requestCompletedEvent=v9;Object.defineProperties(ar,{statistics:{get:function(){return Ao}},priorityHeapLength:{get:function(){return B_},set:function(e){if(ee;){let t=Tc.pop();Dy(t)}B_=e,Tc.maximumLength=e,Tc.reserve(e)}}});function ste(e){l(e.priorityFunction)&&(e.priority=e.priorityFunction())}ar.serverHasOpenSlots=function(e,t){t=t??1;let n=ar.requestsByServer[e]??ar.maximumRequestsPerServer;return Hp[e]+t<=n};ar.heapHasOpenSlots=function(e){return Tc.length+e<=B_};function ate(e){return e.state===mi.UNISSUED&&(e.state=mi.ISSUED,e.deferred=Ol()),e.deferred.promise}function r1e(e){return function(t){if(e.state===mi.CANCELLED)return;let n=e.deferred;--Ao.numberOfActiveRequests,--Hp[e.serverKey],v9.raiseEvent(),e.state=mi.RECEIVED,e.deferred=void 0,n.resolve(t)}}function s1e(e){return function(t){e.state!==mi.CANCELLED&&(++Ao.numberOfFailedRequests,--Ao.numberOfActiveRequests,--Hp[e.serverKey],v9.raiseEvent(t),e.state=mi.FAILED,e.deferred.reject(t))}}function cte(e){let t=ate(e);return e.state=mi.ACTIVE,Rf.push(e),++Ao.numberOfActiveRequests,++Ao.numberOfActiveRequestsEver,++Hp[e.serverKey],e.requestFunction().then(r1e(e)).catch(s1e(e)),t}function Dy(e){let t=e.state===mi.ACTIVE;if(e.state=mi.CANCELLED,++Ao.numberOfCancelledRequests,l(e.deferred)){let n=e.deferred;e.deferred=void 0,n.reject()}t&&(--Ao.numberOfActiveRequests,--Hp[e.serverKey],++Ao.numberOfCancelledActiveRequests),l(e.cancelFunction)&&e.cancelFunction()}ar.update=function(){let e,t,n=0,i=Rf.length;for(e=0;e0&&(Rf[e-n]=t)}Rf.length-=n;let o=Tc.internalArray,r=Tc.length;for(e=0;e0;){if(t=Tc.pop(),t.cancelled){Dy(t);continue}if(t.throttleByServer&&!ar.serverHasOpenSlots(t.serverKey)){Dy(t);continue}cte(t),++a}a1e()};ar.getServerKey=function(e){let t=new M9.default(e);t.scheme()===""&&(t=t.absoluteTo(o1e),t.normalize());let n=t.authority();/:/.test(n)||(n=`${n}:${t.scheme()==="https"?"443":"80"}`);let i=Hp[n];return l(i)||(Hp[n]=0),n};ar.request=function(e){if(Op(e.url)||Py(e.url))return v9.raiseEvent(),e.state=mi.RECEIVED,e.requestFunction();if(++Ao.numberOfAttemptedRequests,l(e.serverKey)||(e.serverKey=ar.getServerKey(e.url)),ar.throttleRequests&&e.throttleByServer&&!ar.serverHasOpenSlots(e.serverKey))return;if(!ar.throttleRequests||!e.throttle)return cte(e);if(Rf.length>=ar.maximumRequests)return;ste(e);let t=Tc.insert(e);if(l(t)){if(t===e)return;Dy(t)}return ate(e)};function a1e(){ar.debugShowStatistics&&(Ao.numberOfActiveRequests===0&&Ao.lastNumberOfActiveRequests>0&&(Ao.numberOfAttemptedRequests>0&&(console.log(`Number of attempted requests: ${Ao.numberOfAttemptedRequests}`),Ao.numberOfAttemptedRequests=0),Ao.numberOfCancelledRequests>0&&(console.log(`Number of cancelled requests: ${Ao.numberOfCancelledRequests}`),Ao.numberOfCancelledRequests=0),Ao.numberOfCancelledActiveRequests>0&&(console.log(`Number of cancelled active requests: ${Ao.numberOfCancelledActiveRequests}`),Ao.numberOfCancelledActiveRequests=0),Ao.numberOfFailedRequests>0&&(console.log(`Number of failed requests: ${Ao.numberOfFailedRequests}`),Ao.numberOfFailedRequests=0)),Ao.lastNumberOfActiveRequests=Ao.numberOfActiveRequests)}ar.clearForSpecs=function(){for(;Tc.length>0;){let t=Tc.pop();Dy(t)}let e=Rf.length;for(let t=0;t0}},credits:{get:function(){return this._credits}}});Ft.prototype.toString=function(){return this.getUrlComponent(!0,!0)};Ft.prototype.parseUrl=function(e,t,n,i){let o=new ute.default(e),r=l1e(o.query());this._queryParameters=t?D9(r,this.queryParameters,n):r,o.search(""),o.fragment(""),l(i)&&o.scheme()===""&&(o=o.absoluteTo(Tf(i))),this._url=o.toString()};function l1e(e){return e.length===0?{}:e.indexOf("=")===-1?{[e]:void 0}:wd(e)}function D9(e,t,n){if(!n)return Lt(e,t);let i=ke(e,!0);for(let o in t)if(t.hasOwnProperty(o)){let r=i[o],s=t[o];l(r)?(Array.isArray(r)||(r=i[o]=[r]),i[o]=r.concat(s)):i[o]=Array.isArray(s)?s.slice():s}return i}Ft.prototype.getUrlComponent=function(e,t){if(this.isDataUri)return this._url;let n=this._url;e&&(n=`${n}${d1e(this.queryParameters)}`),n=n.replace(/%7B/g,"{").replace(/%7D/g,"}");let i=this._templateValues;return Object.keys(i).length>0&&(n=n.replace(/{(.*?)}/g,function(o,r){let s=i[r];return l(s)?encodeURIComponent(s):o})),t&&l(this.proxy)&&(n=this.proxy.getURL(n)),n};function d1e(e){let t=Object.keys(e);return t.length===0?"":t.length===1&&!l(e[t[0]])?`?${t[0]}`:`?${vy(e)}`}Ft.prototype.setQueryParameters=function(e,t){t?this._queryParameters=D9(this._queryParameters,e,!1):this._queryParameters=D9(e,this._queryParameters,!1)};Ft.prototype.appendQueryParameters=function(e){this._queryParameters=D9(e,this._queryParameters,!0)};Ft.prototype.setTemplateValues=function(e,t){t?this._templateValues=Lt(this._templateValues,e):this._templateValues=Lt(e,this._templateValues)};Ft.prototype.getDerivedResource=function(e){let t=this.clone();if(t._retryCount=0,l(e.url)){let n=e.preserveQueryParameters??!1;t.parseUrl(e.url,!0,n,this._url)}return l(e.queryParameters)&&(t._queryParameters=Lt(e.queryParameters,t.queryParameters)),l(e.templateValues)&&(t._templateValues=Lt(e.templateValues,t.templateValues)),l(e.headers)&&(t.headers=Lt(e.headers,t.headers)),l(e.proxy)&&(t.proxy=e.proxy),l(e.request)&&(t.request=e.request),l(e.retryCallback)&&(t.retryCallback=e.retryCallback),l(e.retryAttempts)&&(t.retryAttempts=e.retryAttempts),t};Ft.prototype.retryOnError=function(e){let t=this.retryCallback;if(typeof t!="function"||this._retryCount>=this.retryAttempts)return Promise.resolve(!1);let n=this;return Promise.resolve(t(this,e)).then(function(i){return++n._retryCount,i})};Ft.prototype.clone=function(e){return l(e)?(e._url=this._url,e._queryParameters=ke(this._queryParameters),e._templateValues=ke(this._templateValues),e.headers=ke(this.headers),e.proxy=this.proxy,e.retryCallback=this.retryCallback,e.retryAttempts=this.retryAttempts,e._retryCount=0,e.request=this.request.clone(),e):new Ft({url:this._url,queryParameters:this.queryParameters,templateValues:this.templateValues,headers:this.headers,proxy:this.proxy,retryCallback:this.retryCallback,retryAttempts:this.retryAttempts,request:this.request.clone(),parseUrl:!1,credits:l(this.credits)?this.credits.slice():void 0})};Ft.prototype.getBaseUri=function(e){return e1(this.getUrlComponent(e),e)};Ft.prototype.appendForwardSlash=function(){this._url=$L(this._url)};Ft.prototype.fetchArrayBuffer=function(){return this.fetch({responseType:"arraybuffer"})};Ft.fetchArrayBuffer=function(e){return new Ft(e).fetchArrayBuffer()};Ft.prototype.fetchBlob=function(){return this.fetch({responseType:"blob"})};Ft.fetchBlob=function(e){return new Ft(e).fetchBlob()};Ft.prototype.fetchImage=function(e){e=e??Y.EMPTY_OBJECT;let t=e.preferImageBitmap??!1,n=e.preferBlob??!1,i=e.flipY??!1,o=e.skipColorSpaceConversion??!1;if(U3(this.request),!mte||this.isDataUri||this.isBlobUri||!this.hasHeaders&&!n)return Q3({resource:this,flipY:i,skipColorSpaceConversion:o,preferImageBitmap:t});let r=this.fetchBlob();if(!l(r))return;let s,a,c,d;return Ft.supportsImageBitmapOptions().then(function(u){return s=u,a=s&&t,r}).then(function(u){if(!l(u))return;if(d=u,a)return Ft.createImageBitmapFromBlob(u,{flipY:i,premultiplyAlpha:!1,skipColorSpaceConversion:o});let h=window.URL.createObjectURL(u);return c=new Ft({url:h}),Q3({resource:c,flipY:i,skipColorSpaceConversion:o,preferImageBitmap:!1})}).then(function(u){if(l(u))return u.blob=d,a||window.URL.revokeObjectURL(c.url),u}).catch(function(u){return l(c)&&window.URL.revokeObjectURL(c.url),u.blob=d,Promise.reject(u)})};function Q3(e){let t=e.resource,n=e.flipY,i=e.skipColorSpaceConversion,o=e.preferImageBitmap,r=t.request;r.url=t.url,r.requestFunction=function(){let a=!1;!t.isDataUri&&!t.isBlobUri&&(a=t.isCrossOriginUrl);let c=Ol();return Ft._Implementations.createImage(r,a,c,n,i,o),c.promise};let s=Sc.request(r);if(l(s))return s.catch(function(a){return r.state!==mi.FAILED?Promise.reject(a):t.retryOnError(a).then(function(c){return c?(r.state=mi.UNISSUED,r.deferred=void 0,Q3({resource:t,flipY:n,skipColorSpaceConversion:i,preferImageBitmap:o})):Promise.reject(a)})})}Ft.fetchImage=function(e){return new Ft(e).fetchImage({flipY:e.flipY,skipColorSpaceConversion:e.skipColorSpaceConversion,preferBlob:e.preferBlob,preferImageBitmap:e.preferImageBitmap})};Ft.prototype.fetchText=function(){return this.fetch({responseType:"text"})};Ft.fetchText=function(e){return new Ft(e).fetchText()};Ft.prototype.fetchJson=function(){let e=this.fetch({responseType:"text",headers:{Accept:"application/json,*/*;q=0.01"}});if(l(e))return e.then(function(t){if(l(t))return JSON.parse(t)})};Ft.fetchJson=function(e){return new Ft(e).fetchJson()};Ft.prototype.fetchXML=function(){return this.fetch({responseType:"document",overrideMimeType:"text/xml"})};Ft.fetchXML=function(e){return new Ft(e).fetchXML()};Ft.prototype.fetchJsonp=function(e){e=e??"callback",U3(this.request);let t;do t=`loadJsonp${Z.nextRandomNumber().toString().substring(2,8)}`;while(l(window[t]));return hte(this,e,t)};function hte(e,t,n){let i={};i[t]=n,e.setQueryParameters(i);let o=e.request,r=e.url;o.url=r,o.requestFunction=function(){let a=Ol();return window[n]=function(c){a.resolve(c);try{delete window[n]}catch{window[n]=void 0}},Ft._Implementations.loadAndExecuteScript(r,n,a),a.promise};let s=Sc.request(o);if(l(s))return s.catch(function(a){return o.state!==mi.FAILED?Promise.reject(a):e.retryOnError(a).then(function(c){return c?(o.state=mi.UNISSUED,o.deferred=void 0,hte(e,t,n)):Promise.reject(a)})})}Ft.fetchJsonp=function(e){return new Ft(e).fetchJsonp(e.callbackParameterName)};Ft.prototype._makeRequest=function(e){let t=this;U3(t.request);let n=t.request,i=t.url;n.url=i,n.requestFunction=function(){let r=e.responseType,s=Lt(e.headers,t.headers),a=e.overrideMimeType,c=e.method,d=e.data,u=Ol(),h=Ft._Implementations.loadWithXhr(i,r,c,d,s,u,a);return l(h)&&l(h.abort)&&(n.cancelFunction=function(){h.abort()}),u.promise};let o=Sc.request(n);if(l(o))return o.then(function(r){return n.cancelFunction=void 0,r}).catch(function(r){return n.cancelFunction=void 0,n.state!==mi.FAILED?Promise.reject(r):t.retryOnError(r).then(function(s){return s?(n.state=mi.UNISSUED,n.deferred=void 0,t.fetch(e)):Promise.reject(r)})})};function U3(e){if(e.state===mi.ISSUED||e.state===mi.ACTIVE)throw new de("The Resource is already being fetched.");e.state=mi.UNISSUED,e.deferred=void 0}var u1e=/^data:(.*?)(;base64)?,(.*)$/;function N9(e,t){let n=decodeURIComponent(t);return e?atob(n):n}function dte(e,t){let n=N9(e,t),i=new ArrayBuffer(n.length),o=new Uint8Array(i);for(let r=0;r{if(!a.ok){let c={};a.headers.forEach((d,u)=>{c[u]=d}),r.reject(new Lf(a.status,a,c));return}switch(t){case"text":r.resolve(a.text());break;case"json":r.resolve(a.json());break;default:r.resolve(new Uint8Array(await a.arrayBuffer()).buffer);break}}).catch(()=>{r.reject(new Lf)})}var f1e=typeof XMLHttpRequest>"u";Ft._Implementations.loadWithXhr=function(e,t,n,i,o,r,s){let a=u1e.exec(e);if(a!==null){r.resolve(m1e(a,t));return}if(f1e){h1e(e,t,n,i,o,r,s);return}let c=new XMLHttpRequest;if(X_.contains(e)&&(c.withCredentials=!0),c.open(n,e,!0),l(s)&&l(c.overrideMimeType)&&c.overrideMimeType(s),l(o))for(let u in o)o.hasOwnProperty(u)&&c.setRequestHeader(u,o[u]);l(t)&&(c.responseType=t);let d=!1;return typeof e=="string"&&(d=e.indexOf("file://")===0||typeof window<"u"&&window.location.origin==="file://"),c.onload=function(){if((c.status<200||c.status>=300)&&!(d&&c.status===0)){r.reject(new Lf(c.status,c.response,c.getAllResponseHeaders()));return}let u=c.response,h=c.responseType;if(n==="HEAD"||n==="OPTIONS"){let g=c.getAllResponseHeaders().trim().split(/[\r\n]+/),f={};g.forEach(function(b){let x=b.split(": "),I=x.shift();f[I]=x.join(": ")}),r.resolve(f);return}if(c.status===204)r.resolve(void 0);else if(l(u)&&(!l(t)||h===t))r.resolve(u);else if(t==="json"&&typeof u=="string")try{r.resolve(JSON.parse(u))}catch(p){r.reject(p)}else(h===""||h==="document")&&l(c.responseXML)&&c.responseXML.hasChildNodes()?r.resolve(c.responseXML):(h===""||h==="text")&&l(c.responseText)?r.resolve(c.responseText):r.reject(new de("Invalid XMLHttpRequest response type."))},c.onerror=function(u){r.reject(new Lf)},c.send(i),c};Ft._Implementations.loadAndExecuteScript=function(e,t,n){return My(e,t).catch(function(i){n.reject(i)})};Ft._DefaultImplementations={};Ft._DefaultImplementations.createImage=Ft._Implementations.createImage;Ft._DefaultImplementations.loadWithXhr=Ft._Implementations.loadWithXhr;Ft._DefaultImplementations.loadAndExecuteScript=Ft._Implementations.loadAndExecuteScript;Ft.DEFAULT=Object.freeze(new Ft({url:typeof document>"u"?"":document.location.href.split("?")[0]}));var Ve=Ft;function s1(e){e=e??Y.EMPTY_OBJECT,this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._addNewLeapSeconds=e.addNewLeapSeconds??!0,l(e.data)?fte(this,e.data):fte(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})}s1.fromUrl=async function(e,t){t=t??Y.EMPTY_OBJECT;let n=Ve.createIfNeeded(e),i;try{i=await n.fetchJson()}catch{throw new de(`An error occurred while retrieving the EOP data from the URL ${n.url}.`)}return new s1({addNewLeapSeconds:t.addNewLeapSeconds,data:i})};s1.NONE=Object.freeze({compute:function(e,t){return l(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new ub(0,0,0,0,0),t}});s1.prototype.compute=function(e,t){if(!l(this._samples))return;if(l(t)||(t=new ub(0,0,0,0,0)),this._samples.length===0)return t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0,t;let n=this._dates,i=this._lastIndex,o=0,r=0;if(l(i)){let a=n[i],c=n[i+1],d=j.lessThanOrEquals(a,e),u=!l(c),h=u||j.greaterThanOrEquals(c,e);if(d&&h)return o=i,!u&&c.equals(e)&&++o,r=o+1,Ate(this,n,this._samples,e,o,r,t),t}let s=Yo(n,e,j.compare,this._dateColumn);return s>=0?(st.length-1)return s.xPoleWander=0,s.yPoleWander=0,s.xPoleOffset=0,s.yPoleOffset=0,s.ut1MinusUtc=0,s;let c=t[o],d=t[r];if(c.equals(d)||i.equals(c))return pte(e,n,o,a,s),s;if(i.equals(d))return pte(e,n,r,a,s),s;let u=j.secondsDifference(i,c)/j.secondsDifference(d,c),h=o*a,p=r*a,g=n[h+e._ut1MinusUtcSecondsColumn],f=n[p+e._ut1MinusUtcSecondsColumn],b=f-g;if(b>.5||b<-.5){let x=n[h+e._taiMinusUtcSecondsColumn],I=n[p+e._taiMinusUtcSecondsColumn];x!==I&&(d.equals(i)?g=f:f-=I-x)}return s.xPoleWander=r1(u,n[h+e._xPoleWanderRadiansColumn],n[p+e._xPoleWanderRadiansColumn]),s.yPoleWander=r1(u,n[h+e._yPoleWanderRadiansColumn],n[p+e._yPoleWanderRadiansColumn]),s.xPoleOffset=r1(u,n[h+e._xCelestialPoleOffsetRadiansColumn],n[p+e._xCelestialPoleOffsetRadiansColumn]),s.yPoleOffset=r1(u,n[h+e._yCelestialPoleOffsetRadiansColumn],n[p+e._yCelestialPoleOffsetRadiansColumn]),s.ut1MinusUtc=r1(u,g,f),s}var a1=s1;var dwt=y(C(),1);function Lc(e,t,n){this.heading=e??0,this.pitch=t??0,this.roll=n??0}Lc.fromQuaternion=function(e,t){l(t)||(t=new Lc);let n=2*(e.w*e.y-e.z*e.x),i=1-2*(e.x*e.x+e.y*e.y),o=2*(e.w*e.x+e.y*e.z),r=1-2*(e.y*e.y+e.z*e.z),s=2*(e.w*e.z+e.x*e.y);return t.heading=-Math.atan2(s,r),t.roll=Math.atan2(o,i),t.pitch=-Z.asinClamped(n),t};Lc.fromDegrees=function(e,t,n,i){return l(i)||(i=new Lc),i.heading=e*Z.RADIANS_PER_DEGREE,i.pitch=t*Z.RADIANS_PER_DEGREE,i.roll=n*Z.RADIANS_PER_DEGREE,i};Lc.clone=function(e,t){if(l(e))return l(t)?(t.heading=e.heading,t.pitch=e.pitch,t.roll=e.roll,t):new Lc(e.heading,e.pitch,e.roll)};Lc.equals=function(e,t){return e===t||l(e)&&l(t)&&e.heading===t.heading&&e.pitch===t.pitch&&e.roll===t.roll};Lc.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&Z.equalsEpsilon(e.heading,t.heading,n,i)&&Z.equalsEpsilon(e.pitch,t.pitch,n,i)&&Z.equalsEpsilon(e.roll,t.roll,n,i)};Lc.prototype.clone=function(e){return Lc.clone(this,e)};Lc.prototype.equals=function(e){return Lc.equals(this,e)};Lc.prototype.equalsEpsilon=function(e,t,n){return Lc.equalsEpsilon(this,e,t,n)};Lc.prototype.toString=function(){return`(${this.heading}, ${this.pitch}, ${this.roll})`};var ic=Lc;var Lwt=y(C(),1);var pwt=y(C(),1);var gte={};var bte=/((?:.*\/)|^)Cesium\.js(?:\?|\#|$)/;function A1e(){let e=document.getElementsByTagName("script");for(let t=0,n=e.length;t"u"?e:(l(Q9)||(Q9=document.createElement("a")),Q9.href=e,Q9.href)}var Qy;function Cte(){if(l(Qy))return Qy;let e;return typeof CESIUM_BASE_URL<"u"?e=CESIUM_BASE_URL:l(gte?.url)?e=Tf(".",gte.url):typeof define=="object"&&l(define.amd)&&!define.amd.toUrlUndefined&&l(E9.toUrl)?e=Tf("..",Uy("Core/buildModuleUrl.js")):e=A1e(),Qy=new Ve({url:yte(e)}),Qy.appendForwardSlash(),Qy}function g1e(e){return yte(E9.toUrl(`../${e}`))}function xte(e){return Cte().getDerivedResource({url:e}).url}var U9;function Uy(e){return l(U9)||(typeof define=="object"&&l(define.amd)&&!define.amd.toUrlUndefined&&l(E9.toUrl)?U9=g1e:U9=xte),U9(e)}Uy._cesiumScriptRegex=bte;Uy._buildModuleUrlFromBaseUrl=xte;Uy._clearBaseResource=function(){Qy=void 0};Uy.setBaseUrl=function(e){Qy=Ve.DEFAULT.getDerivedResource({url:e})};Uy.getCesiumBaseUrl=Cte;var hn=Uy;var bwt=y(C(),1);function b1e(e,t,n){this.x=e,this.y=t,this.s=n}var ky=b1e;function O3(e){e=e??Y.EMPTY_OBJECT,this._xysFileUrlTemplate=Ve.createIfNeeded(e.xysFileUrlTemplate),this._interpolationOrder=e.interpolationOrder??9,this._sampleZeroJulianEphemerisDate=e.sampleZeroJulianEphemerisDate??24423965e-1,this._sampleZeroDateTT=new j(this._sampleZeroJulianEphemerisDate,0,oi.TAI),this._stepSizeDays=e.stepSizeDays??1,this._samplesPerXysFile=e.samplesPerXysFile??1e3,this._totalSamples=e.totalSamples??27426,this._samples=new Array(this._totalSamples*3),this._chunkDownloadsInProgress=[];let t=this._interpolationOrder,n=this._denominators=new Array(t+1),i=this._xTable=new Array(t+1),o=Math.pow(this._stepSizeDays,t);for(let r=0;r<=t;++r){n[r]=o,i[r]=r*this._stepSizeDays;for(let s=0;s<=t;++s)s!==r&&(n[r]*=r-s);n[r]=1/n[r]}this._work=new Array(t+1),this._coef=new Array(t+1)}var y1e=new j(0,0,oi.TAI);function k3(e,t,n){let i=y1e;return i.dayNumber=t,i.secondsOfDay=n,j.daysDifference(i,e._sampleZeroDateTT)}O3.prototype.preload=function(e,t,n,i){let o=k3(this,e,t),r=k3(this,n,i),s=o/this._stepSizeDays-this._interpolationOrder/2|0;s<0&&(s=0);let a=r/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;a>=this._totalSamples&&(a=this._totalSamples-1);let c=s/this._samplesPerXysFile|0,d=a/this._samplesPerXysFile|0,u=[];for(let h=c;h<=d;++h)u.push(Y3(this,h));return Promise.all(u)};O3.prototype.computeXysRadians=function(e,t,n){let i=k3(this,e,t);if(i<0)return;let o=i/this._stepSizeDays|0;if(o>=this._totalSamples)return;let r=this._interpolationOrder,s=o-(r/2|0);s<0&&(s=0);let a=s+r;a>=this._totalSamples&&(a=this._totalSamples-1,s=a-r,s<0&&(s=0));let c=!1,d=this._samples;if(l(d[s*3])||(Y3(this,s/this._samplesPerXysFile|0),c=!0),l(d[a*3])||(Y3(this,a/this._samplesPerXysFile|0),c=!0),c)return;l(n)?(n.x=0,n.y=0,n.s=0):n=new ky(0,0,0);let u=i-s*this._stepSizeDays,h=this._work,p=this._denominators,g=this._coef,f=this._xTable,b,x;for(b=0;b<=r;++b)h[b]=u-f[b];for(b=0;b<=r;++b){for(g[b]=1,x=0;x<=r;++x)x!==b&&(g[b]*=h[x]);g[b]*=p[b];let I=(s+b)*3;n.x+=g[b]*d[I++],n.y+=g[b]*d[I++],n.s+=g[b]*d[I]}return n};function Y3(e,t){if(e._chunkDownloadsInProgress[t])return e._chunkDownloadsInProgress[t];let n,i=e._xysFileUrlTemplate;l(i)?n=i.getDerivedResource({templateValues:{0:t}}):n=new Ve({url:hn(`Assets/IAU2006_XYS/IAU2006_XYS_${t}.json`)});let o=n.fetchJson().then(function(r){e._chunkDownloadsInProgress[t]=!1;let s=e._samples,a=r.samples,c=t*e._samplesPerXysFile*3;for(let d=0,u=a.length;di&&(o=d,i=u)}let r=1,s=0,a=z3[o],c=K3[o];if(Math.abs(e[ct.getElementIndex(c,a)])>n){let d=e[ct.getElementIndex(c,c)],u=e[ct.getElementIndex(a,a)],h=e[ct.getElementIndex(c,a)],p=(d-u)/2/h,g;p<0?g=-1/(-p+Math.sqrt(1+p*p)):g=1/(p+Math.sqrt(1+p*p)),r=1/Math.sqrt(1+g*g),s=g*r}return t=ct.clone(ct.IDENTITY,t),t[ct.getElementIndex(a,a)]=t[ct.getElementIndex(c,c)]=r,t[ct.getElementIndex(c,a)]=s,t[ct.getElementIndex(a,c)]=-s,t}var k9=new ct,_te=new ct;ct.computeEigenDecomposition=function(e,t){let n=Z.EPSILON20,i=10,o=0,r=0;l(t)||(t={});let s=t.unitary=ct.clone(ct.IDENTITY,t.unitary),a=t.diagonal=ct.clone(e,t.diagonal),c=n*E1e(a);for(;rc;)S1e(a,k9),ct.transpose(k9,_te),ct.multiply(a,k9,a),ct.multiply(_te,a,a),ct.multiply(s,k9,s),++o>2&&(++r,o=0);return t};ct.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t};ct.determinant=function(e){let t=e[0],n=e[3],i=e[6],o=e[1],r=e[4],s=e[7],a=e[2],c=e[5],d=e[8];return t*(r*d-c*s)+o*(c*i-n*d)+a*(n*s-r*i)};ct.inverse=function(e,t){let n=e[0],i=e[1],o=e[2],r=e[3],s=e[4],a=e[5],c=e[6],d=e[7],u=e[8],h=ct.determinant(e);t[0]=s*u-d*a,t[1]=d*o-i*u,t[2]=i*a-s*o,t[3]=c*a-r*u,t[4]=n*u-c*o,t[5]=r*o-n*a,t[6]=r*d-c*s,t[7]=c*i-n*d,t[8]=n*s-r*i;let p=1/h;return ct.multiplyByScalar(t,p,t)};var L1e=new ct;ct.inverseTranspose=function(e,t){return ct.inverse(ct.transpose(e,L1e),t)};ct.equals=function(e,t){return e===t||l(e)&&l(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]};ct.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n};ct.IDENTITY=Object.freeze(new ct(1,0,0,0,1,0,0,0,1));ct.ZERO=Object.freeze(new ct(0,0,0,0,0,0,0,0,0));ct.COLUMN0ROW0=0;ct.COLUMN0ROW1=1;ct.COLUMN0ROW2=2;ct.COLUMN1ROW0=3;ct.COLUMN1ROW1=4;ct.COLUMN1ROW2=5;ct.COLUMN2ROW0=6;ct.COLUMN2ROW1=7;ct.COLUMN2ROW2=8;Object.defineProperties(ct.prototype,{length:{get:function(){return ct.packedLength}}});ct.prototype.clone=function(e){return ct.clone(this,e)};ct.prototype.equals=function(e){return ct.equals(this,e)};ct.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]};ct.prototype.equalsEpsilon=function(e,t){return ct.equalsEpsilon(this,e,t)};ct.prototype.toString=function(){return`(${this[0]}, ${this[3]}, ${this[6]}) +(${this[1]}, ${this[4]}, ${this[7]}) +(${this[2]}, ${this[5]}, ${this[8]})`};var $=ct;var Dwt=y(C(),1);function at(e,t,n,i,o,r,s,a,c,d,u,h,p,g,f,b){this[0]=e??0,this[1]=o??0,this[2]=c??0,this[3]=p??0,this[4]=t??0,this[5]=r??0,this[6]=d??0,this[7]=g??0,this[8]=n??0,this[9]=s??0,this[10]=u??0,this[11]=f??0,this[12]=i??0,this[13]=a??0,this[14]=h??0,this[15]=b??0}at.packedLength=16;at.pack=function(e,t,n){return n=n??0,t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t[n++]=e[9],t[n++]=e[10],t[n++]=e[11],t[n++]=e[12],t[n++]=e[13],t[n++]=e[14],t[n]=e[15],t};at.unpack=function(e,t,n){return t=t??0,l(n)||(n=new at),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n[4]=e[t++],n[5]=e[t++],n[6]=e[t++],n[7]=e[t++],n[8]=e[t++],n[9]=e[t++],n[10]=e[t++],n[11]=e[t++],n[12]=e[t++],n[13]=e[t++],n[14]=e[t++],n[15]=e[t],n};at.packArray=function(e,t){let n=e.length,i=n*16;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o{let t=new Image;t.onload=function(){ol._result=t.width>0&&t.height>0,e(ol._result)},t.onerror=function(){ol._result=!1,e(ol._result)},t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA"})),ol._promise};Object.defineProperties(ol,{initialized:{get:function(){return l(ol._result)}}});var M_=[];typeof ArrayBuffer<"u"&&(M_.push(Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array),typeof Uint8ClampedArray<"u"&&M_.push(Uint8ClampedArray),typeof Uint8ClampedArray<"u"&&M_.push(Uint8ClampedArray),typeof BigInt64Array<"u"&&M_.push(BigInt64Array),typeof BigUint64Array<"u"&&M_.push(BigUint64Array));var vu={isChrome:nO,chromeVersion:P1e,isSafari:Lte,safariVersion:M1e,isWebkit:Rte,webkitVersion:v1e,isInternetExplorer:Vte,internetExplorerVersion:N1e,isEdge:j9,edgeVersion:D1e,isFirefox:q9,firefoxVersion:k1e,isWindows:Q1e,isIPadOrIOS:U1e,hardwareConcurrency:Rc.hardwareConcurrency??3,supportsPointerEvents:Y1e,supportsImageRenderingPixelated:Bte,supportsWebP:ol,imageRenderingValue:O1e,typedArrayTypes:M_};vu.supportsBasis=function(e){return vu.supportsWebAssembly()&&e.context.supportsBasis};vu.supportsFullscreen=function(){return Wr.supportsFullscreen()};vu.supportsTypedArrays=function(){return typeof ArrayBuffer<"u"};vu.supportsBigInt64Array=function(){return typeof BigInt64Array<"u"};vu.supportsBigUint64Array=function(){return typeof BigUint64Array<"u"};vu.supportsBigInt=function(){return typeof BigInt<"u"};vu.supportsWebWorkers=function(){return typeof Worker<"u"};vu.supportsWebAssembly=function(){return typeof WebAssembly<"u"};vu.supportsWebgl2=function(e){return e.context.webgl2};vu.supportsEsmWebWorkers=function(){return!q9()||parseInt(iO)>=114};var Ht=vu;function dt(e,t,n,i){this.x=e??0,this.y=t??0,this.z=n??0,this.w=i??0}var u1=new m;dt.fromAxisAngle=function(e,t,n){let i=t/2,o=Math.sin(i);u1=m.normalize(e,u1);let r=u1.x*o,s=u1.y*o,a=u1.z*o,c=Math.cos(i);return l(n)?(n.x=r,n.y=s,n.z=a,n.w=c,n):new dt(r,s,a,c)};var H1e=[1,2,0],z1e=new Array(3);dt.fromRotationMatrix=function(e,t){let n,i,o,r,s,a=e[$.COLUMN0ROW0],c=e[$.COLUMN1ROW1],d=e[$.COLUMN2ROW2],u=a+c+d;if(u>0)n=Math.sqrt(u+1),s=.5*n,n=.5/n,i=(e[$.COLUMN1ROW2]-e[$.COLUMN2ROW1])*n,o=(e[$.COLUMN2ROW0]-e[$.COLUMN0ROW2])*n,r=(e[$.COLUMN0ROW1]-e[$.COLUMN1ROW0])*n;else{let h=H1e,p=0;c>a&&(p=1),d>a&&d>c&&(p=2);let g=h[p],f=h[g];n=Math.sqrt(e[$.getElementIndex(p,p)]-e[$.getElementIndex(g,g)]-e[$.getElementIndex(f,f)]+1);let b=z1e;b[p]=.5*n,n=.5/n,s=(e[$.getElementIndex(f,g)]-e[$.getElementIndex(g,f)])*n,b[g]=(e[$.getElementIndex(g,p)]+e[$.getElementIndex(p,g)])*n,b[f]=(e[$.getElementIndex(f,p)]+e[$.getElementIndex(p,f)])*n,i=-b[0],o=-b[1],r=-b[2]}return l(t)?(t.x=i,t.y=o,t.z=r,t.w=s,t):new dt(i,o,r,s)};var wte=new dt,Xte=new dt,oO=new dt,Wte=new dt;dt.fromHeadingPitchRoll=function(e,t){return Wte=dt.fromAxisAngle(m.UNIT_X,e.roll,wte),oO=dt.fromAxisAngle(m.UNIT_Y,-e.pitch,t),t=dt.multiply(oO,Wte,oO),Xte=dt.fromAxisAngle(m.UNIT_Z,-e.heading,wte),dt.multiply(Xte,t,t)};var $9=new m,rO=new m,eh=new dt,Fte=new dt,eD=new dt;dt.packedLength=4;dt.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n++]=e.z,t[n]=e.w,t};dt.unpack=function(e,t,n){return t=t??0,l(n)||(n=new dt),n.x=e[t],n.y=e[t+1],n.z=e[t+2],n.w=e[t+3],n};dt.packedInterpolationLength=3;dt.convertPackedArrayForInterpolation=function(e,t,n,i){dt.unpack(e,n*4,eD),dt.conjugate(eD,eD);for(let o=0,r=n-t+1;o=0?r=1:(r=-1,o=-o);let s=o-1,a=1-n,c=n*n,d=a*a;for(let g=7;g>=0;--g)zp[g]=(tD[g]*c-nD[g])*s,Kp[g]=(tD[g]*d-nD[g])*s;let u=r*n*(1+zp[0]*(1+zp[1]*(1+zp[2]*(1+zp[3]*(1+zp[4]*(1+zp[5]*(1+zp[6]*(1+zp[7])))))))),h=a*(1+Kp[0]*(1+Kp[1]*(1+Kp[2]*(1+Kp[3]*(1+Kp[4]*(1+Kp[5]*(1+Kp[6]*(1+Kp[7])))))))),p=dt.multiplyByScalar(e,h,j1e);return dt.multiplyByScalar(t,u,i),dt.add(p,i,i)};dt.fastSquad=function(e,t,n,i,o,r){let s=dt.fastSlerp(e,t,o,m1),a=dt.fastSlerp(n,i,o,v_);return dt.fastSlerp(s,a,2*o*(1-o),r)};dt.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w};dt.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.x-t.x)<=n&&Math.abs(e.y-t.y)<=n&&Math.abs(e.z-t.z)<=n&&Math.abs(e.w-t.w)<=n};dt.ZERO=Object.freeze(new dt(0,0,0,0));dt.IDENTITY=Object.freeze(new dt(0,0,0,1));dt.prototype.clone=function(e){return dt.clone(this,e)};dt.prototype.equals=function(e){return dt.equals(this,e)};dt.prototype.equalsEpsilon=function(e,t){return dt.equalsEpsilon(this,e,t)};dt.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z}, ${this.w})`};var Pe=dt;var Ri={},lO={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"}},N_={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},dO={},zl={east:new m,north:new m,up:new m,west:new m,south:new m,down:new m},pb=new m,Ab=new m,gb=new m;Ri.localFrameToFixedFrameGenerator=function(e,t){if(!lO.hasOwnProperty(e)||!lO[e].hasOwnProperty(t))throw new Ae("firstAxis and secondAxis must be east, north, up, west, south or down.");let n=lO[e][t],i,o=e+t;return l(dO[o])?i=dO[o]:(i=function(r,s,a){if(l(a)||(a=new X),m.equalsEpsilon(r,m.ZERO,Z.EPSILON14))m.unpack(N_[e],0,pb),m.unpack(N_[t],0,Ab),m.unpack(N_[n],0,gb);else if(Z.equalsEpsilon(r.x,0,Z.EPSILON14)&&Z.equalsEpsilon(r.y,0,Z.EPSILON14)){let c=Z.sign(r.z);m.unpack(N_[e],0,pb),e!=="east"&&e!=="west"&&m.multiplyByScalar(pb,c,pb),m.unpack(N_[t],0,Ab),t!=="east"&&t!=="west"&&m.multiplyByScalar(Ab,c,Ab),m.unpack(N_[n],0,gb),n!=="east"&&n!=="west"&&m.multiplyByScalar(gb,c,gb)}else{s=s??ie.default,s.geodeticSurfaceNormal(r,zl.up);let c=zl.up,d=zl.east;d.x=-r.y,d.y=r.x,d.z=0,m.normalize(d,zl.east),m.cross(c,d,zl.north),m.multiplyByScalar(zl.up,-1,zl.down),m.multiplyByScalar(zl.east,-1,zl.west),m.multiplyByScalar(zl.north,-1,zl.south),pb=zl[e],Ab=zl[t],gb=zl[n]}return a[0]=pb.x,a[1]=pb.y,a[2]=pb.z,a[3]=0,a[4]=Ab.x,a[5]=Ab.y,a[6]=Ab.z,a[7]=0,a[8]=gb.x,a[9]=gb.y,a[10]=gb.z,a[11]=0,a[12]=r.x,a[13]=r.y,a[14]=r.z,a[15]=1,a},dO[o]=i),i};Ri.eastNorthUpToFixedFrame=Ri.localFrameToFixedFrameGenerator("east","north");Ri.northEastDownToFixedFrame=Ri.localFrameToFixedFrameGenerator("north","east");Ri.northUpEastToFixedFrame=Ri.localFrameToFixedFrameGenerator("north","up");Ri.northWestUpToFixedFrame=Ri.localFrameToFixedFrameGenerator("north","west");var q1e=new Pe,$1e=new m(1,1,1),eRe=new X;Ri.headingPitchRollToFixedFrame=function(e,t,n,i,o){i=i??Ri.eastNorthUpToFixedFrame;let r=Pe.fromHeadingPitchRoll(t,q1e),s=X.fromTranslationQuaternionRotationScale(m.ZERO,r,$1e,eRe);return o=i(e,n,o),X.multiply(o,s,o)};var tRe=new X,nRe=new $;Ri.headingPitchRollQuaternion=function(e,t,n,i,o){let r=Ri.headingPitchRollToFixedFrame(e,t,n,i,tRe),s=X.getMatrix3(r,nRe);return Pe.fromRotationMatrix(s,o)};var iRe=new m(1,1,1),oRe=new m,vte=new X,rRe=new X,sRe=new $,aRe=new Pe;Ri.fixedFrameToHeadingPitchRoll=function(e,t,n,i){t=t??ie.default,n=n??Ri.eastNorthUpToFixedFrame,l(i)||(i=new ic);let o=X.getTranslation(e,oRe);if(m.equals(o,m.ZERO))return i.heading=0,i.pitch=0,i.roll=0,i;let r=X.inverseTransformation(n(o,t,vte),vte),s=X.setScale(e,iRe,rRe);s=X.setTranslation(s,m.ZERO,s),r=X.multiply(r,s,r);let a=Pe.fromRotationMatrix(X.getMatrix3(r,sRe),aRe);return a=Pe.normalize(a,a),ic.fromQuaternion(a,i)};var cRe=6*3600+2460+50.54841,lRe=8640184812866e-6,dRe=.093104,uRe=-62e-7,mRe=11772758384668e-32,hRe=72921158553e-15,fRe=Z.TWO_PI/86400,iD=new j;Ri.computeIcrfToCentralBodyFixedMatrix=function(e,t){let n=Ri.computeIcrfToFixedMatrix(e,t);return l(n)||(n=Ri.computeTemeToPseudoFixedMatrix(e,t)),n};Ri.computeTemeToPseudoFixedMatrix=function(e,t){iD=j.addSeconds(e,-j.computeTaiMinusUtc(e),iD);let n=iD.dayNumber,i=iD.secondsOfDay,o,r=n-2451545;i>=43200?o=(r+.5)/ai.DAYS_PER_JULIAN_CENTURY:o=(r-.5)/ai.DAYS_PER_JULIAN_CENTURY;let a=(cRe+o*(lRe+o*(dRe+o*uRe)))*fRe%Z.TWO_PI,c=hRe+mRe*(n-24515455e-1),d=(i+ai.SECONDS_PER_DAY*.5)%ai.SECONDS_PER_DAY,u=a+c*d,h=Math.cos(u),p=Math.sin(u);return l(t)?(t[0]=h,t[1]=-p,t[2]=0,t[3]=p,t[4]=h,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new $(h,p,0,-p,h,0,0,0,1)};Ri.iau2006XysData=new c1;Ri.earthOrientationParameters=a1.NONE;var hO=32.184,pRe=2451545;Ri.preloadIcrfFixed=function(e){let t=e.start.dayNumber,n=e.start.secondsOfDay+hO,i=e.stop.dayNumber,o=e.stop.secondsOfDay+hO;return Ri.iau2006XysData.preload(t,n,i,o)};Ri.computeIcrfToFixedMatrix=function(e,t){l(t)||(t=new $);let n=Ri.computeFixedToIcrfMatrix(e,t);if(l(n))return $.transpose(n,t)};var ARe=32.184,gRe=2451545,oD=new ic,bRe=new $,yRe=new j;Ri.computeMoonFixedToIcrfMatrix=function(e,t){l(t)||(t=new $);let n=j.addSeconds(e,ARe,yRe),i=j.totalDays(n)-gRe,o=Z.toRadians(12.112)-Z.toRadians(.052992)*i,r=Z.toRadians(24.224)-Z.toRadians(.105984)*i,s=Z.toRadians(227.645)+Z.toRadians(13.012)*i,a=Z.toRadians(261.105)+Z.toRadians(13.340716)*i,c=Z.toRadians(358)+Z.toRadians(.9856)*i;return oD.pitch=Z.toRadians(180)-Z.toRadians(3.878)*Math.sin(o)-Z.toRadians(.12)*Math.sin(r)+Z.toRadians(.07)*Math.sin(s)-Z.toRadians(.017)*Math.sin(a),oD.roll=Z.toRadians(66.53-90)+Z.toRadians(1.543)*Math.cos(o)+Z.toRadians(.24)*Math.cos(r)-Z.toRadians(.028)*Math.cos(s)+Z.toRadians(.007)*Math.cos(a),oD.heading=Z.toRadians(244.375-90)+Z.toRadians(13.17635831)*i+Z.toRadians(3.558)*Math.sin(o)+Z.toRadians(.121)*Math.sin(r)-Z.toRadians(.064)*Math.sin(s)+Z.toRadians(.016)*Math.sin(a)+Z.toRadians(.025)*Math.sin(c),$.fromHeadingPitchRoll(oD,bRe)};Ri.computeIcrfToMoonFixedMatrix=function(e,t){l(t)||(t=new $);let n=Ri.computeMoonFixedToIcrfMatrix(e,t);if(l(n))return $.transpose(n,t)};var CRe=new ky(0,0,0),xRe=new ub(0,0,0,0,0,0),uO=new $,mO=new $;Ri.computeFixedToIcrfMatrix=function(e,t){l(t)||(t=new $);let n=Ri.earthOrientationParameters.compute(e,xRe);if(!l(n))return;let i=e.dayNumber,o=e.secondsOfDay+hO,r=Ri.iau2006XysData.computeXysRadians(i,o,CRe);if(!l(r))return;let s=r.x+n.xPoleOffset,a=r.y+n.yPoleOffset,c=1/(1+Math.sqrt(1-s*s-a*a)),d=uO;d[0]=1-c*s*s,d[3]=-c*s*a,d[6]=s,d[1]=-c*s*a,d[4]=1-c*a*a,d[7]=a,d[2]=-s,d[5]=-a,d[8]=1-c*(s*s+a*a);let u=$.fromRotationZ(-r.s,mO),h=$.multiply(d,u,uO),p=e.dayNumber,g=e.secondsOfDay-j.computeTaiMinusUtc(e)+n.ut1MinusUtc,f=p-2451545,b=g/ai.SECONDS_PER_DAY,x=.779057273264+b+.00273781191135448*(f+b);x=x%1*Z.TWO_PI;let I=$.fromRotationZ(x,mO),_=$.multiply(h,I,uO),E=Math.cos(n.xPoleWander),S=Math.cos(n.yPoleWander),R=Math.sin(n.xPoleWander),G=Math.sin(n.yPoleWander),B=i-pRe+o/ai.SECONDS_PER_DAY;B/=36525;let w=-47e-6*B*Z.RADIANS_PER_DEGREE/3600,F=Math.cos(w),P=Math.sin(w),A=mO;return A[0]=E*F,A[1]=E*P,A[2]=R,A[3]=-S*P+G*R*F,A[4]=S*F+G*R*P,A[5]=-G*E,A[6]=-G*P-S*R*F,A[7]=G*F-S*R*P,A[8]=S*E,$.multiply(_,A,t)};var IRe=new ce;Ri.pointToWindowCoordinates=function(e,t,n,i){return i=Ri.pointToGLWindowCoordinates(e,t,n,i),i.y=2*t[5]-i.y,i};Ri.pointToGLWindowCoordinates=function(e,t,n,i){l(i)||(i=new D);let o=IRe;return X.multiplyByVector(e,ce.fromElements(n.x,n.y,n.z,1,o),o),ce.multiplyByScalar(o,1/o.w,o),X.multiplyByVector(t,o,o),D.fromCartesian4(o,i)};var _Re=new m,ERe=new m,TRe=new m;Ri.rotationMatrixFromPositionVelocity=function(e,t,n,i){let o=(n??ie.default).geodeticSurfaceNormal(e,_Re),r=m.cross(t,o,ERe);m.equalsEpsilon(r,m.ZERO,Z.EPSILON6)&&(r=m.clone(m.UNIT_X,r));let s=m.cross(r,t,TRe);return m.normalize(s,s),m.cross(t,s,r),m.negate(r,r),m.normalize(r,r),l(i)||(i=new $),i[0]=t.x,i[1]=t.y,i[2]=t.z,i[3]=r.x,i[4]=r.y,i[5]=r.z,i[6]=s.x,i[7]=s.y,i[8]=s.z,i};var Nte=new X(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1),Dte=new ge,fO=new m,SRe=new m,LRe=new $,pO=new X,Qte=new X;Ri.basisTo2D=function(e,t,n){let i=X.getTranslation(t,SRe),o=e.ellipsoid,r;if(m.equals(i,m.ZERO))r=m.clone(m.ZERO,fO);else{let u=o.cartesianToCartographic(i,Dte);r=e.project(u,fO),m.fromElements(r.z,r.x,r.y,r)}let s=Ri.eastNorthUpToFixedFrame(i,o,pO),a=X.inverseTransformation(s,Qte),c=X.getMatrix3(t,LRe),d=X.multiplyByMatrix3(a,c,n);return X.multiply(Nte,d,n),X.setTranslation(n,r,n),n};Ri.ellipsoidTo2DModelMatrix=function(e,t,n){let i=e.ellipsoid,o=Ri.eastNorthUpToFixedFrame(t,i,pO),r=X.inverseTransformation(o,Qte),s=i.cartesianToCartographic(t,Dte),a=e.project(s,fO);m.fromElements(a.z,a.x,a.y,a);let c=X.fromTranslation(a,pO);return X.multiply(Nte,r,n),X.multiply(c,n,n),n};var Dt=Ri;function Pn(e,t,n,i){this.west=e??0,this.south=t??0,this.east=n??0,this.north=i??0}Object.defineProperties(Pn.prototype,{width:{get:function(){return Pn.computeWidth(this)}},height:{get:function(){return Pn.computeHeight(this)}}});Pn.packedLength=4;Pn.pack=function(e,t,n){return n=n??0,t[n++]=e.west,t[n++]=e.south,t[n++]=e.east,t[n]=e.north,t};Pn.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Pn),n.west=e[t++],n.south=e[t++],n.east=e[t++],n.north=e[t],n};Pn.computeWidth=function(e){let t=e.east,n=e.west;return t=0?u.longitude:u.longitude+Z.TWO_PI;o=Math.min(o,h),r=Math.max(r,h)}return i-n>r-o&&(n=o,i=r,i>Z.PI&&(i=i-Z.TWO_PI),n>Z.PI&&(n=n-Z.TWO_PI)),l(t)?(t.west=n,t.south=s,t.east=i,t.north=a,t):new Pn(n,s,i,a)};Pn.fromCartesianArray=function(e,t,n){t=t??ie.default;let i=Number.MAX_VALUE,o=-Number.MAX_VALUE,r=Number.MAX_VALUE,s=-Number.MAX_VALUE,a=Number.MAX_VALUE,c=-Number.MAX_VALUE;for(let d=0,u=e.length;d=0?h.longitude:h.longitude+Z.TWO_PI;r=Math.min(r,p),s=Math.max(s,p)}return o-i>s-r&&(i=r,o=s,o>Z.PI&&(o=o-Z.TWO_PI),i>Z.PI&&(i=i-Z.TWO_PI)),l(n)?(n.west=i,n.south=a,n.east=o,n.north=c,n):new Pn(i,a,o,c)};var RRe=new m,VRe=new m,GRe=new m,ZRe=new m,BRe=new m,AO=new Array(5);for(let e=0;e0?i+=Z.TWO_PI:r0&&(r+=Z.TWO_PI),i=u))return l(n)?(n.west=a,n.south=d,n.east=c,n.north=u,n):new Pn(a,d,c,u)};Pn.simpleIntersection=function(e,t,n){let i=Math.max(e.west,t.west),o=Math.max(e.south,t.south),r=Math.min(e.east,t.east),s=Math.min(e.north,t.north);if(!(o>=s||i>=r))return l(n)?(n.west=i,n.south=o,n.east=r,n.north=s,n):new Pn(i,o,r,s)};Pn.union=function(e,t,n){l(n)||(n=new Pn);let i=e.east,o=e.west,r=t.east,s=t.west;i0?i+=Z.TWO_PI:r0&&(r+=Z.TWO_PI),io||Z.equalsEpsilon(n,o,Z.EPSILON14))&&(n=e.south&&i<=e.north};var wRe=new ge;Pn.subsample=function(e,t,n,i){t=t??ie.default,n=n??0,l(i)||(i=[]);let o=0,r=e.north,s=e.south,a=e.east,c=e.west,d=wRe;d.height=n,d.longitude=c,d.latitude=r,i[o]=t.cartographicToCartesian(d,i[o]),o++,d.longitude=a,i[o]=t.cartographicToCartesian(d,i[o]),o++,d.latitude=s,i[o]=t.cartographicToCartesian(d,i[o]),o++,d.longitude=c,i[o]=t.cartographicToCartesian(d,i[o]),o++,r<0?d.latitude=r:s>0?d.latitude=s:d.latitude=0;for(let u=1;u<8;++u)d.longitude=-Math.PI+u*Z.PI_OVER_TWO,Pn.contains(e,d)&&(i[o]=t.cartographicToCartesian(d,i[o]),o++);return d.latitude===0&&(d.longitude=c,i[o]=t.cartographicToCartesian(d,i[o]),o++,d.longitude=a,i[o]=t.cartographicToCartesian(d,i[o]),o++),i.length=o,i};Pn.subsection=function(e,t,n,i,o,r){if(l(r)||(r=new Pn),e.west<=e.east){let a=e.east-e.west;r.west=e.west+t*a,r.east=e.west+i*a}else{let a=Z.TWO_PI+e.east-e.west;r.west=Z.negativePiToPi(e.west+t*a),r.east=Z.negativePiToPi(e.west+i*a)}let s=e.north-e.south;return r.south=e.south+n*s,r.north=e.south+o*s,t===1&&(r.west=e.east),i===1&&(r.east=e.east),n===1&&(r.south=e.north),o===1&&(r.north=e.north),r};Pn.MAX_VALUE=Object.freeze(new Pn(-Math.PI,-Z.PI_OVER_TWO,Math.PI,Z.PI_OVER_TWO));var le=Pn;function Jr(e,t,n,i){this.x=e??0,this.y=t??0,this.width=n??0,this.height=i??0}Jr.packedLength=4;Jr.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n++]=e.width,t[n]=e.height,t};Jr.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Jr),n.x=e[t++],n.y=e[t++],n.width=e[t++],n.height=e[t],n};Jr.fromPoints=function(e,t){if(l(t)||(t=new Jr),!l(e)||e.length===0)return t.x=0,t.y=0,t.width=0,t.height=0,t;let n=e.length,i=e[0].x,o=e[0].y,r=e[0].x,s=e[0].y;for(let a=1;an.width?n.width=i:i<0&&(n.width-=i,n.x=t.x),o>n.height?n.height=o:o<0&&(n.height-=o,n.y=t.y),n};Jr.intersect=function(e,t){let n=e.x,i=e.y,o=t.x,r=t.y;return n>o+t.width||n+e.widthr+t.height?on.OUTSIDE:on.INTERSECTING};Jr.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height};Jr.prototype.clone=function(e){return Jr.clone(this,e)};Jr.prototype.intersect=function(e){return Jr.intersect(this,e)};Jr.prototype.equals=function(e){return Jr.equals(this,e)};var Ke=Jr;var YXt=y(C(),1);function gO(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n*6<1?e+(t-e)*6*n:n*2<1?t:n*3<2?e+(t-e)*(2/3-n)*6:e}function ae(e,t,n,i){this.red=e??1,this.green=t??1,this.blue=n??1,this.alpha=i??1}ae.fromCartesian4=function(e,t){return l(t)?(t.red=e.x,t.green=e.y,t.blue=e.z,t.alpha=e.w,t):new ae(e.x,e.y,e.z,e.w)};ae.fromBytes=function(e,t,n,i,o){return e=ae.byteToFloat(e??255),t=ae.byteToFloat(t??255),n=ae.byteToFloat(n??255),i=ae.byteToFloat(i??255),l(o)?(o.red=e,o.green=t,o.blue=n,o.alpha=i,o):new ae(e,t,n,i)};ae.fromAlpha=function(e,t,n){return l(n)?(n.red=e.red,n.green=e.green,n.blue=e.blue,n.alpha=t,n):new ae(e.red,e.green,e.blue,t)};var bO,yO,Jp;Ht.supportsTypedArrays()&&(bO=new ArrayBuffer(4),yO=new Uint32Array(bO),Jp=new Uint8Array(bO));ae.fromRgba=function(e,t){return yO[0]=e,ae.fromBytes(Jp[0],Jp[1],Jp[2],Jp[3],t)};ae.fromHsl=function(e,t,n,i,o){e=(e??0)%1,t=t??0,n=n??0,i=i??1;let r=n,s=n,a=n;if(t!==0){let c;n<.5?c=n*(1+t):c=n+t-n*t;let d=2*n-c;r=gO(d,c,e+1/3),s=gO(d,c,e),a=gO(d,c,e-1/3)}return l(o)?(o.red=r,o.green=s,o.blue=a,o.alpha=i,o):new ae(r,s,a,i)};ae.fromRandom=function(e,t){e=e??Y.EMPTY_OBJECT;let n=e.red;if(!l(n)){let s=e.minimumRed??0,a=e.maximumRed??1;n=s+Z.nextRandomNumber()*(a-s)}let i=e.green;if(!l(i)){let s=e.minimumGreen??0,a=e.maximumGreen??1;i=s+Z.nextRandomNumber()*(a-s)}let o=e.blue;if(!l(o)){let s=e.minimumBlue??0,a=e.maximumBlue??1;o=s+Z.nextRandomNumber()*(a-s)}let r=e.alpha;if(!l(r)){let s=e.minimumAlpha??0,a=e.maximumAlpha??1;r=s+Z.nextRandomNumber()*(a-s)}return l(t)?(t.red=n,t.green=i,t.blue=o,t.alpha=r,t):new ae(n,i,o,r)};var FRe=/^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i,PRe=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i,MRe=/^rgba?\s*\(\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i,vRe=/^hsla?\s*\(\s*([0-9.]+)\s*[,\s]+\s*([0-9.]+%)\s*[,\s]+\s*([0-9.]+%)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i;ae.fromCssColorString=function(e,t){l(t)||(t=new ae),e=e.trim();let n=ae[e.toUpperCase()];if(l(n))return ae.clone(n,t),t;let i=FRe.exec(e);return i!==null?(t.red=parseInt(i[1],16)/15,t.green=parseInt(i[2],16)/15,t.blue=parseInt(i[3],16)/15,t.alpha=parseInt(i[4]??"f",16)/15,t):(i=PRe.exec(e),i!==null?(t.red=parseInt(i[1],16)/255,t.green=parseInt(i[2],16)/255,t.blue=parseInt(i[3],16)/255,t.alpha=parseInt(i[4]??"ff",16)/255,t):(i=MRe.exec(e),i!==null?(t.red=parseFloat(i[1])/(i[1].substr(-1)==="%"?100:255),t.green=parseFloat(i[2])/(i[2].substr(-1)==="%"?100:255),t.blue=parseFloat(i[3])/(i[3].substr(-1)==="%"?100:255),t.alpha=parseFloat(i[4]??"1.0"),t):(i=vRe.exec(e),i!==null?ae.fromHsl(parseFloat(i[1])/360,parseFloat(i[2])/100,parseFloat(i[3])/100,parseFloat(i[4]??"1.0"),t):(t=void 0,t))))};ae.packedLength=4;ae.pack=function(e,t,n){return n=n??0,t[n++]=e.red,t[n++]=e.green,t[n++]=e.blue,t[n]=e.alpha,t};ae.unpack=function(e,t,n){return t=t??0,l(n)||(n=new ae),n.red=e[t++],n.green=e[t++],n.blue=e[t++],n.alpha=e[t],n};ae.byteToFloat=function(e){return e/255};ae.floatToByte=function(e){return e===1?255:e*256|0};ae.clone=function(e,t){if(l(e))return l(t)?(t.red=e.red,t.green=e.green,t.blue=e.blue,t.alpha=e.alpha,t):new ae(e.red,e.green,e.blue,e.alpha)};ae.equals=function(e,t){return e===t||l(e)&&l(t)&&e.red===t.red&&e.green===t.green&&e.blue===t.blue&&e.alpha===t.alpha};ae.equalsArray=function(e,t,n){return e.red===t[n]&&e.green===t[n+1]&&e.blue===t[n+2]&&e.alpha===t[n+3]};ae.prototype.clone=function(e){return ae.clone(this,e)};ae.prototype.equals=function(e){return ae.equals(this,e)};ae.prototype.equalsEpsilon=function(e,t){return this===e||l(e)&&Math.abs(this.red-e.red)<=t&&Math.abs(this.green-e.green)<=t&&Math.abs(this.blue-e.blue)<=t&&Math.abs(this.alpha-e.alpha)<=t};ae.prototype.toString=function(){return`(${this.red}, ${this.green}, ${this.blue}, ${this.alpha})`};ae.prototype.toCssColorString=function(){let e=ae.floatToByte(this.red),t=ae.floatToByte(this.green),n=ae.floatToByte(this.blue);return this.alpha===1?`rgb(${e},${t},${n})`:`rgba(${e},${t},${n},${this.alpha})`};ae.prototype.toCssHexString=function(){let e=ae.floatToByte(this.red).toString(16);e.length<2&&(e=`0${e}`);let t=ae.floatToByte(this.green).toString(16);t.length<2&&(t=`0${t}`);let n=ae.floatToByte(this.blue).toString(16);if(n.length<2&&(n=`0${n}`),this.alpha<1){let i=ae.floatToByte(this.alpha).toString(16);return i.length<2&&(i=`0${i}`),`#${e}${t}${n}${i}`}return`#${e}${t}${n}`};ae.prototype.toBytes=function(e){let t=ae.floatToByte(this.red),n=ae.floatToByte(this.green),i=ae.floatToByte(this.blue),o=ae.floatToByte(this.alpha);return l(e)?(e[0]=t,e[1]=n,e[2]=i,e[3]=o,e):[t,n,i,o]};ae.prototype.toRgba=function(){return Jp[0]=ae.floatToByte(this.red),Jp[1]=ae.floatToByte(this.green),Jp[2]=ae.floatToByte(this.blue),Jp[3]=ae.floatToByte(this.alpha),yO[0]};ae.prototype.brighten=function(e,t){return e=1-e,t.red=1-(1-this.red)*e,t.green=1-(1-this.green)*e,t.blue=1-(1-this.blue)*e,t.alpha=this.alpha,t};ae.prototype.darken=function(e,t){return e=1-e,t.red=this.red*e,t.green=this.green*e,t.blue=this.blue*e,t.alpha=this.alpha,t};ae.prototype.withAlpha=function(e,t){return ae.fromAlpha(this,e,t)};ae.add=function(e,t,n){return n.red=e.red+t.red,n.green=e.green+t.green,n.blue=e.blue+t.blue,n.alpha=e.alpha+t.alpha,n};ae.subtract=function(e,t,n){return n.red=e.red-t.red,n.green=e.green-t.green,n.blue=e.blue-t.blue,n.alpha=e.alpha-t.alpha,n};ae.multiply=function(e,t,n){return n.red=e.red*t.red,n.green=e.green*t.green,n.blue=e.blue*t.blue,n.alpha=e.alpha*t.alpha,n};ae.divide=function(e,t,n){return n.red=e.red/t.red,n.green=e.green/t.green,n.blue=e.blue/t.blue,n.alpha=e.alpha/t.alpha,n};ae.mod=function(e,t,n){return n.red=e.red%t.red,n.green=e.green%t.green,n.blue=e.blue%t.blue,n.alpha=e.alpha%t.alpha,n};ae.lerp=function(e,t,n,i){return i.red=Z.lerp(e.red,t.red,n),i.green=Z.lerp(e.green,t.green,n),i.blue=Z.lerp(e.blue,t.blue,n),i.alpha=Z.lerp(e.alpha,t.alpha,n),i};ae.multiplyByScalar=function(e,t,n){return n.red=e.red*t,n.green=e.green*t,n.blue=e.blue*t,n.alpha=e.alpha*t,n};ae.divideByScalar=function(e,t,n){return n.red=e.red/t,n.green=e.green/t,n.blue=e.blue/t,n.alpha=e.alpha/t,n};ae.ALICEBLUE=Object.freeze(ae.fromCssColorString("#F0F8FF"));ae.ANTIQUEWHITE=Object.freeze(ae.fromCssColorString("#FAEBD7"));ae.AQUA=Object.freeze(ae.fromCssColorString("#00FFFF"));ae.AQUAMARINE=Object.freeze(ae.fromCssColorString("#7FFFD4"));ae.AZURE=Object.freeze(ae.fromCssColorString("#F0FFFF"));ae.BEIGE=Object.freeze(ae.fromCssColorString("#F5F5DC"));ae.BISQUE=Object.freeze(ae.fromCssColorString("#FFE4C4"));ae.BLACK=Object.freeze(ae.fromCssColorString("#000000"));ae.BLANCHEDALMOND=Object.freeze(ae.fromCssColorString("#FFEBCD"));ae.BLUE=Object.freeze(ae.fromCssColorString("#0000FF"));ae.BLUEVIOLET=Object.freeze(ae.fromCssColorString("#8A2BE2"));ae.BROWN=Object.freeze(ae.fromCssColorString("#A52A2A"));ae.BURLYWOOD=Object.freeze(ae.fromCssColorString("#DEB887"));ae.CADETBLUE=Object.freeze(ae.fromCssColorString("#5F9EA0"));ae.CHARTREUSE=Object.freeze(ae.fromCssColorString("#7FFF00"));ae.CHOCOLATE=Object.freeze(ae.fromCssColorString("#D2691E"));ae.CORAL=Object.freeze(ae.fromCssColorString("#FF7F50"));ae.CORNFLOWERBLUE=Object.freeze(ae.fromCssColorString("#6495ED"));ae.CORNSILK=Object.freeze(ae.fromCssColorString("#FFF8DC"));ae.CRIMSON=Object.freeze(ae.fromCssColorString("#DC143C"));ae.CYAN=Object.freeze(ae.fromCssColorString("#00FFFF"));ae.DARKBLUE=Object.freeze(ae.fromCssColorString("#00008B"));ae.DARKCYAN=Object.freeze(ae.fromCssColorString("#008B8B"));ae.DARKGOLDENROD=Object.freeze(ae.fromCssColorString("#B8860B"));ae.DARKGRAY=Object.freeze(ae.fromCssColorString("#A9A9A9"));ae.DARKGREEN=Object.freeze(ae.fromCssColorString("#006400"));ae.DARKGREY=ae.DARKGRAY;ae.DARKKHAKI=Object.freeze(ae.fromCssColorString("#BDB76B"));ae.DARKMAGENTA=Object.freeze(ae.fromCssColorString("#8B008B"));ae.DARKOLIVEGREEN=Object.freeze(ae.fromCssColorString("#556B2F"));ae.DARKORANGE=Object.freeze(ae.fromCssColorString("#FF8C00"));ae.DARKORCHID=Object.freeze(ae.fromCssColorString("#9932CC"));ae.DARKRED=Object.freeze(ae.fromCssColorString("#8B0000"));ae.DARKSALMON=Object.freeze(ae.fromCssColorString("#E9967A"));ae.DARKSEAGREEN=Object.freeze(ae.fromCssColorString("#8FBC8F"));ae.DARKSLATEBLUE=Object.freeze(ae.fromCssColorString("#483D8B"));ae.DARKSLATEGRAY=Object.freeze(ae.fromCssColorString("#2F4F4F"));ae.DARKSLATEGREY=ae.DARKSLATEGRAY;ae.DARKTURQUOISE=Object.freeze(ae.fromCssColorString("#00CED1"));ae.DARKVIOLET=Object.freeze(ae.fromCssColorString("#9400D3"));ae.DEEPPINK=Object.freeze(ae.fromCssColorString("#FF1493"));ae.DEEPSKYBLUE=Object.freeze(ae.fromCssColorString("#00BFFF"));ae.DIMGRAY=Object.freeze(ae.fromCssColorString("#696969"));ae.DIMGREY=ae.DIMGRAY;ae.DODGERBLUE=Object.freeze(ae.fromCssColorString("#1E90FF"));ae.FIREBRICK=Object.freeze(ae.fromCssColorString("#B22222"));ae.FLORALWHITE=Object.freeze(ae.fromCssColorString("#FFFAF0"));ae.FORESTGREEN=Object.freeze(ae.fromCssColorString("#228B22"));ae.FUCHSIA=Object.freeze(ae.fromCssColorString("#FF00FF"));ae.GAINSBORO=Object.freeze(ae.fromCssColorString("#DCDCDC"));ae.GHOSTWHITE=Object.freeze(ae.fromCssColorString("#F8F8FF"));ae.GOLD=Object.freeze(ae.fromCssColorString("#FFD700"));ae.GOLDENROD=Object.freeze(ae.fromCssColorString("#DAA520"));ae.GRAY=Object.freeze(ae.fromCssColorString("#808080"));ae.GREEN=Object.freeze(ae.fromCssColorString("#008000"));ae.GREENYELLOW=Object.freeze(ae.fromCssColorString("#ADFF2F"));ae.GREY=ae.GRAY;ae.HONEYDEW=Object.freeze(ae.fromCssColorString("#F0FFF0"));ae.HOTPINK=Object.freeze(ae.fromCssColorString("#FF69B4"));ae.INDIANRED=Object.freeze(ae.fromCssColorString("#CD5C5C"));ae.INDIGO=Object.freeze(ae.fromCssColorString("#4B0082"));ae.IVORY=Object.freeze(ae.fromCssColorString("#FFFFF0"));ae.KHAKI=Object.freeze(ae.fromCssColorString("#F0E68C"));ae.LAVENDER=Object.freeze(ae.fromCssColorString("#E6E6FA"));ae.LAVENDAR_BLUSH=Object.freeze(ae.fromCssColorString("#FFF0F5"));ae.LAWNGREEN=Object.freeze(ae.fromCssColorString("#7CFC00"));ae.LEMONCHIFFON=Object.freeze(ae.fromCssColorString("#FFFACD"));ae.LIGHTBLUE=Object.freeze(ae.fromCssColorString("#ADD8E6"));ae.LIGHTCORAL=Object.freeze(ae.fromCssColorString("#F08080"));ae.LIGHTCYAN=Object.freeze(ae.fromCssColorString("#E0FFFF"));ae.LIGHTGOLDENRODYELLOW=Object.freeze(ae.fromCssColorString("#FAFAD2"));ae.LIGHTGRAY=Object.freeze(ae.fromCssColorString("#D3D3D3"));ae.LIGHTGREEN=Object.freeze(ae.fromCssColorString("#90EE90"));ae.LIGHTGREY=ae.LIGHTGRAY;ae.LIGHTPINK=Object.freeze(ae.fromCssColorString("#FFB6C1"));ae.LIGHTSEAGREEN=Object.freeze(ae.fromCssColorString("#20B2AA"));ae.LIGHTSKYBLUE=Object.freeze(ae.fromCssColorString("#87CEFA"));ae.LIGHTSLATEGRAY=Object.freeze(ae.fromCssColorString("#778899"));ae.LIGHTSLATEGREY=ae.LIGHTSLATEGRAY;ae.LIGHTSTEELBLUE=Object.freeze(ae.fromCssColorString("#B0C4DE"));ae.LIGHTYELLOW=Object.freeze(ae.fromCssColorString("#FFFFE0"));ae.LIME=Object.freeze(ae.fromCssColorString("#00FF00"));ae.LIMEGREEN=Object.freeze(ae.fromCssColorString("#32CD32"));ae.LINEN=Object.freeze(ae.fromCssColorString("#FAF0E6"));ae.MAGENTA=Object.freeze(ae.fromCssColorString("#FF00FF"));ae.MAROON=Object.freeze(ae.fromCssColorString("#800000"));ae.MEDIUMAQUAMARINE=Object.freeze(ae.fromCssColorString("#66CDAA"));ae.MEDIUMBLUE=Object.freeze(ae.fromCssColorString("#0000CD"));ae.MEDIUMORCHID=Object.freeze(ae.fromCssColorString("#BA55D3"));ae.MEDIUMPURPLE=Object.freeze(ae.fromCssColorString("#9370DB"));ae.MEDIUMSEAGREEN=Object.freeze(ae.fromCssColorString("#3CB371"));ae.MEDIUMSLATEBLUE=Object.freeze(ae.fromCssColorString("#7B68EE"));ae.MEDIUMSPRINGGREEN=Object.freeze(ae.fromCssColorString("#00FA9A"));ae.MEDIUMTURQUOISE=Object.freeze(ae.fromCssColorString("#48D1CC"));ae.MEDIUMVIOLETRED=Object.freeze(ae.fromCssColorString("#C71585"));ae.MIDNIGHTBLUE=Object.freeze(ae.fromCssColorString("#191970"));ae.MINTCREAM=Object.freeze(ae.fromCssColorString("#F5FFFA"));ae.MISTYROSE=Object.freeze(ae.fromCssColorString("#FFE4E1"));ae.MOCCASIN=Object.freeze(ae.fromCssColorString("#FFE4B5"));ae.NAVAJOWHITE=Object.freeze(ae.fromCssColorString("#FFDEAD"));ae.NAVY=Object.freeze(ae.fromCssColorString("#000080"));ae.OLDLACE=Object.freeze(ae.fromCssColorString("#FDF5E6"));ae.OLIVE=Object.freeze(ae.fromCssColorString("#808000"));ae.OLIVEDRAB=Object.freeze(ae.fromCssColorString("#6B8E23"));ae.ORANGE=Object.freeze(ae.fromCssColorString("#FFA500"));ae.ORANGERED=Object.freeze(ae.fromCssColorString("#FF4500"));ae.ORCHID=Object.freeze(ae.fromCssColorString("#DA70D6"));ae.PALEGOLDENROD=Object.freeze(ae.fromCssColorString("#EEE8AA"));ae.PALEGREEN=Object.freeze(ae.fromCssColorString("#98FB98"));ae.PALETURQUOISE=Object.freeze(ae.fromCssColorString("#AFEEEE"));ae.PALEVIOLETRED=Object.freeze(ae.fromCssColorString("#DB7093"));ae.PAPAYAWHIP=Object.freeze(ae.fromCssColorString("#FFEFD5"));ae.PEACHPUFF=Object.freeze(ae.fromCssColorString("#FFDAB9"));ae.PERU=Object.freeze(ae.fromCssColorString("#CD853F"));ae.PINK=Object.freeze(ae.fromCssColorString("#FFC0CB"));ae.PLUM=Object.freeze(ae.fromCssColorString("#DDA0DD"));ae.POWDERBLUE=Object.freeze(ae.fromCssColorString("#B0E0E6"));ae.PURPLE=Object.freeze(ae.fromCssColorString("#800080"));ae.RED=Object.freeze(ae.fromCssColorString("#FF0000"));ae.ROSYBROWN=Object.freeze(ae.fromCssColorString("#BC8F8F"));ae.ROYALBLUE=Object.freeze(ae.fromCssColorString("#4169E1"));ae.SADDLEBROWN=Object.freeze(ae.fromCssColorString("#8B4513"));ae.SALMON=Object.freeze(ae.fromCssColorString("#FA8072"));ae.SANDYBROWN=Object.freeze(ae.fromCssColorString("#F4A460"));ae.SEAGREEN=Object.freeze(ae.fromCssColorString("#2E8B57"));ae.SEASHELL=Object.freeze(ae.fromCssColorString("#FFF5EE"));ae.SIENNA=Object.freeze(ae.fromCssColorString("#A0522D"));ae.SILVER=Object.freeze(ae.fromCssColorString("#C0C0C0"));ae.SKYBLUE=Object.freeze(ae.fromCssColorString("#87CEEB"));ae.SLATEBLUE=Object.freeze(ae.fromCssColorString("#6A5ACD"));ae.SLATEGRAY=Object.freeze(ae.fromCssColorString("#708090"));ae.SLATEGREY=ae.SLATEGRAY;ae.SNOW=Object.freeze(ae.fromCssColorString("#FFFAFA"));ae.SPRINGGREEN=Object.freeze(ae.fromCssColorString("#00FF7F"));ae.STEELBLUE=Object.freeze(ae.fromCssColorString("#4682B4"));ae.TAN=Object.freeze(ae.fromCssColorString("#D2B48C"));ae.TEAL=Object.freeze(ae.fromCssColorString("#008080"));ae.THISTLE=Object.freeze(ae.fromCssColorString("#D8BFD8"));ae.TOMATO=Object.freeze(ae.fromCssColorString("#FF6347"));ae.TURQUOISE=Object.freeze(ae.fromCssColorString("#40E0D0"));ae.VIOLET=Object.freeze(ae.fromCssColorString("#EE82EE"));ae.WHEAT=Object.freeze(ae.fromCssColorString("#F5DEB3"));ae.WHITE=Object.freeze(ae.fromCssColorString("#FFFFFF"));ae.WHITESMOKE=Object.freeze(ae.fromCssColorString("#F5F5F5"));ae.YELLOW=Object.freeze(ae.fromCssColorString("#FFFF00"));ae.YELLOWGREEN=Object.freeze(ae.fromCssColorString("#9ACD32"));ae.TRANSPARENT=Object.freeze(new ae(0,0,0,0));var U=ae;var HXt=y(C(),1);function NRe(){return!0}function DRe(e,t){t=t??"This object was destroyed, i.e., destroy() was called.";function n(){}for(let i in e)typeof e[i]=="function"&&(e[i]=n);e.isDestroyed=NRe}var me=DRe;var JXt=y(C(),1);function Xd(e,t){e=e??0,this._near=e,t=t??Number.MAX_VALUE,this._far=t}Object.defineProperties(Xd.prototype,{near:{get:function(){return this._near},set:function(e){this._near=e}},far:{get:function(){return this._far},set:function(e){this._far=e}}});Xd.packedLength=2;Xd.pack=function(e,t,n){return n=n??0,t[n++]=e.near,t[n]=e.far,t};Xd.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Xd),n.near=e[t++],n.far=e[t],n};Xd.equals=function(e,t){return e===t||l(e)&&l(t)&&e.near===t.near&&e.far===t.far};Xd.clone=function(e,t){if(l(e))return l(t)||(t=new Xd),t.near=e.near,t.far=e.far,t};Xd.prototype.clone=function(e){return Xd.clone(this,e)};Xd.prototype.equals=function(e){return Xd.equals(this,e)};var Qt=Xd;var $Xt=y(C(),1);function Nu(e,t,n,i){this.near=e??0,this.nearValue=t??0,this.far=n??1,this.farValue=i??0}Nu.clone=function(e,t){if(l(e))return l(t)?(t.near=e.near,t.nearValue=e.nearValue,t.far=e.far,t.farValue=e.farValue,t):new Nu(e.near,e.nearValue,e.far,e.farValue)};Nu.packedLength=4;Nu.pack=function(e,t,n){return n=n??0,t[n++]=e.near,t[n++]=e.nearValue,t[n++]=e.far,t[n]=e.farValue,t};Nu.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Nu),n.near=e[t++],n.nearValue=e[t++],n.far=e[t++],n.farValue=e[t],n};Nu.equals=function(e,t){return e===t||l(e)&&l(t)&&e.near===t.near&&e.nearValue===t.nearValue&&e.far===t.far&&e.farValue===t.farValue};Nu.prototype.clone=function(e){return Nu.clone(this,e)};Nu.prototype.equals=function(e){return Nu.equals(this,e)};var zt=Nu;var t2t=y(C(),1),Oy={NONE:0,CLAMP_TO_GROUND:1,RELATIVE_TO_GROUND:2,CLAMP_TO_TERRAIN:3,RELATIVE_TO_TERRAIN:4,CLAMP_TO_3D_TILE:5,RELATIVE_TO_3D_TILE:6},et=Object.freeze(Oy);function Du(e){return e===Oy.CLAMP_TO_GROUND||e===Oy.CLAMP_TO_3D_TILE||e===Oy.CLAMP_TO_TERRAIN}function D_(e){return e===Oy.RELATIVE_TO_GROUND||e===Oy.RELATIVE_TO_3D_TILE||e===Oy.RELATIVE_TO_TERRAIN}var i2t=y(C(),1),QRe={CENTER:0,LEFT:1,RIGHT:-1},wi=Object.freeze(QRe);var r2t=y(C(),1),URe={CENTER:0,BOTTOM:1,BASELINE:2,TOP:-1},kn=Object.freeze(URe);var a2t=y(C(),1),kRe=Object.freeze({DONE:0,PENDING:1,FAILED:2}),At=kRe;var u2t=y(C(),1);function th(){Ae.throwInstantiationError()}Object.defineProperties(th.prototype,{isConstant:{get:Ae.throwInstantiationError},definitionChanged:{get:Ae.throwInstantiationError}});th.prototype.getValue=Ae.throwInstantiationError;th.prototype.equals=Ae.throwInstantiationError;th.equals=function(e,t){return e===t||l(e)&&e.equals(t)};th.arrayEquals=function(e,t){if(e===t)return!0;if(!l(e)||!l(t)||e.length!==t.length)return!1;let n=e.length;for(let i=0;i-1;o--)r=t[o],l(r._billboard)&&l(r._position)&&s.set(r.id,new kte(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._billboard)&&l(r._position)?s.contains(r.id)||s.set(r.id,new kte(r)):(CO(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],CO(s.get(r.id),r,a),s.remove(r.id)};function CO(e,t,n){l(e)&&(e.billboard=void 0,n.removeBillboard(t))}var h1=bb;var rin=y(C(),1);var OWt=y(C(),1);var Y2t=y(C(),1);var B2t=y(C(),1);function mVe(e,t){this.start=e??0,this.stop=t??0}var oc=mVe;function _n(e,t){this.center=m.clone(e??m.ZERO),this.radius=t??0}var _O=new m,EO=new m,TO=new m,SO=new m,LO=new m,RO=new m,VO=new m,wa=new m,GO=new m,ZO=new m,BO=new m,wO=new m,hVe=4/3*Z.PI;_n.fromPoints=function(e,t){if(l(t)||(t=new _n),!l(e)||e.length===0)return t.center=m.clone(m.ZERO,t.center),t.radius=0,t;let n=m.clone(e[0],VO),i=m.clone(n,_O),o=m.clone(n,EO),r=m.clone(n,TO),s=m.clone(n,SO),a=m.clone(n,LO),c=m.clone(n,RO),d=e.length,u;for(u=1;us.x&&m.clone(n,s),Fa.y&&m.clone(n,a),Pc.z&&m.clone(n,c)}let h=m.magnitudeSquared(m.subtract(s,i,wa)),p=m.magnitudeSquared(m.subtract(a,o,wa)),g=m.magnitudeSquared(m.subtract(c,r,wa)),f=i,b=s,x=h;p>x&&(x=p,f=o,b=a),g>x&&(x=g,f=r,b=c);let I=GO;I.x=(f.x+b.x)*.5,I.y=(f.y+b.y)*.5,I.z=(f.z+b.z)*.5;let _=m.magnitudeSquared(m.subtract(b,I,wa)),E=Math.sqrt(_),S=ZO;S.x=i.x,S.y=o.y,S.z=r.z;let R=BO;R.x=s.x,R.y=a.y,R.z=c.z;let G=m.midpoint(S,R,wO),B=0;for(u=0;uB&&(B=w);let F=m.magnitudeSquared(m.subtract(n,I,wa));if(F>_){let P=Math.sqrt(F);E=(E+P)*.5,_=E*E;let A=P-E;I.x=(E*I.x+A*n.x)/P,I.y=(E*I.y+A*n.y)/P,I.z=(E*I.z+A*n.z)/P}}return Ec.x&&m.clone(o,c),Ad.y&&m.clone(o,d),Tu.z&&m.clone(o,u)}let g=m.magnitudeSquared(m.subtract(c,r,wa)),f=m.magnitudeSquared(m.subtract(d,s,wa)),b=m.magnitudeSquared(m.subtract(u,a,wa)),x=r,I=c,_=g;f>_&&(_=f,x=s,I=d),b>_&&(_=b,x=a,I=u);let E=GO;E.x=(x.x+I.x)*.5,E.y=(x.y+I.y)*.5,E.z=(x.z+I.z)*.5;let S=m.magnitudeSquared(m.subtract(I,E,wa)),R=Math.sqrt(S),G=ZO;G.x=r.x,G.y=s.y,G.z=a.z;let B=BO;B.x=c.x,B.y=d.y,B.z=u.z;let w=m.midpoint(G,B,wO),F=0;for(p=0;pF&&(F=P);let A=m.magnitudeSquared(m.subtract(o,E,wa));if(A>S){let T=Math.sqrt(A);R=(R+T)*.5,S=R*R;let L=T-R;E.x=(R*E.x+L*o.x)/T,E.y=(R*E.y+L*o.y)/T,E.z=(R*E.z+L*o.z)/T}}return Ra.x&&m.clone(i,a),Pc.y&&m.clone(i,c),Ad.z&&m.clone(i,d)}let p=m.magnitudeSquared(m.subtract(a,o,wa)),g=m.magnitudeSquared(m.subtract(c,r,wa)),f=m.magnitudeSquared(m.subtract(d,s,wa)),b=o,x=a,I=p;g>I&&(I=g,b=r,x=c),f>I&&(I=f,b=s,x=d);let _=GO;_.x=(b.x+x.x)*.5,_.y=(b.y+x.y)*.5,_.z=(b.z+x.z)*.5;let E=m.magnitudeSquared(m.subtract(x,_,wa)),S=Math.sqrt(E),R=ZO;R.x=o.x,R.y=r.y,R.z=s.z;let G=BO;G.x=a.x,G.y=c.y,G.z=d.z;let B=m.midpoint(R,G,wO),w=0;for(h=0;hw&&(w=F);let P=m.magnitudeSquared(m.subtract(i,_,wa));if(P>E){let A=Math.sqrt(P);S=(S+A)*.5,E=S*S;let T=A-S;_.x=(S*_.x+T*i.x)/A,_.y=(S*_.y+T*i.y)/A,_.z=(S*_.z+T*i.z)/A}}return S=c+s)return e.clone(n),n;if(s>=c+o)return t.clone(n),n;let d=(o+c+s)*.5,u=m.multiplyByScalar(a,(-o+d)/c,EVe);return m.add(u,i,u),m.clone(u,n.center),n.radius=d,n};var TVe=new m;_n.expand=function(e,t,n){n=_n.clone(e,n);let i=m.magnitude(m.subtract(t,n.center,TVe));return i>n.radius&&(n.radius=i),n};_n.intersectPlane=function(e,t){let n=e.center,i=e.radius,o=t.normal,r=m.dot(o,n)+t.distance;return r<-i?on.OUTSIDE:r{e.onmessage=function(o){let r=o.data.array,s=l(r)&&r[0]===t;i(s),e.terminate(),Xa._canTransferArrayBuffer=s}})}return Xa._canTransferArrayBuffer}var PO=new Ce;function FO(e){let t;try{t=new Blob([e],{type:"application/javascript"})}catch{let o=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,r=new o;r.append(e),t=r.getBlob("application/javascript")}return(window.URL||window.webkitURL).createObjectURL(t)}function MO(e){let t=new ane.default(e),n=t.scheme().length!==0&&t.fragment().length===0,i=e.replace(/\.js$/,""),o={},r,s;if(hb(e))s=e;else if(!n){let a=hn(`${Xa._workerModulePrefix}/${i}.js`);hb(a)&&(s=a)}if(s){let a=`import "${s}";`;return r=FO(a),o.type="module",new Worker(r,o)}if(!n&&typeof CESIUM_WORKERS<"u"){let a=` + importScripts("${FO(CESIUM_WORKERS)}"); + CesiumWorkers["${i}"](); + `;return r=FO(a),new Worker(r,o)}if(r=e,n||(r=hn(`${Xa._workerModulePrefix+i}.js`)),!Ht.supportsEsmWebWorkers())throw new de("This browser is not supported. Please update your browser to continue.");return o.type="module",new Worker(r,o)}async function aGe(e,t){let n={modulePath:void 0,wasmBinaryFile:void 0,wasmBinary:void 0};if(!Ht.supportsWebAssembly()){if(!l(t.fallbackModulePath))throw new de(`This browser does not support Web Assembly, and no backup module was provided for ${e._workerPath}`);return n.modulePath=hn(t.fallbackModulePath),n}n.wasmBinaryFile=hn(t.wasmBinaryFile);let i=await Ve.fetchArrayBuffer({url:n.wasmBinaryFile});return n.wasmBinary=i,n}function Xa(e,t){this._workerPath=e,this._maximumActiveTasks=t??Number.POSITIVE_INFINITY,this._activeTasks=0,this._nextID=0,this._webAssemblyPromise=void 0}var cGe=(e,t,n,i)=>{let o=({data:r})=>{if(r.id===t){if(l(r.error)){let s=r.error;s.name==="RuntimeError"?(s=new de(r.error.message),s.stack=r.error.stack):s.name==="DeveloperError"?(s=new Ae(r.error.message),s.stack=r.error.stack):s.name==="Error"&&(s=new Error(r.error.message),s.stack=r.error.stack),PO.raiseEvent(s),i(s)}else PO.raiseEvent(),n(r.result);e.removeEventListener("message",o)}};return o},lGe=[];async function dGe(e,t,n){let i=await Promise.resolve(cne());l(n)?i||(n.length=0):n=lGe;let o=e._nextID++,r=new Promise((s,a)=>{e._worker.addEventListener("message",cGe(e._worker,o,s,a))});return e._worker.postMessage({id:o,baseUrl:hn.getCesiumBaseUrl().url,parameters:t,canTransferArrayBuffer:i},n),r}async function uGe(e,t,n){++e._activeTasks;try{let i=await dGe(e,t,n);return--e._activeTasks,i}catch(i){throw--e._activeTasks,i}}Xa.prototype.scheduleTask=function(e,t){if(l(this._worker)||(this._worker=MO(this._workerPath)),!(this._activeTasks>=this._maximumActiveTasks))return uGe(this,e,t)};Xa.prototype.initWebAssemblyModule=async function(e){if(l(this._webAssemblyPromise))return this._webAssemblyPromise;let t=async()=>{let n=this._worker=MO(this._workerPath),i=await aGe(this,e),o=await Promise.resolve(cne()),r,s=i.wasmBinary;l(s)&&o&&(r=[s]);let a=new Promise((c,d)=>{n.onmessage=function({data:u}){l(u)?c(u.result):d(new de("Could not configure wasm module"))}});return n.postMessage({canTransferArrayBuffer:o,parameters:{webAssemblyConfig:i}},r),a};return this._webAssemblyPromise=t(),this._webAssemblyPromise};Xa.prototype.isDestroyed=function(){return!1};Xa.prototype.destroy=function(){return l(this._worker)&&this._worker.terminate(),me(this)};Xa.taskCompletedEvent=PO;Xa._defaultWorkerModulePrefix="Workers/";Xa._workerModulePrefix=Xa._defaultWorkerModulePrefix;Xa._canTransferArrayBuffer=void 0;var hi=Xa;function jp(){}jp._transcodeTaskProcessor=new hi("transcodeKTX2",Number.POSITIVE_INFINITY);jp._readyPromise=void 0;function mGe(){let e=jp._transcodeTaskProcessor.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/basis_transcoder.wasm"}).then(function(t){if(t)return jp._transcodeTaskProcessor;throw new de("KTX2 transcoder could not be initialized.")});jp._readyPromise=e}jp.transcode=function(e,t){return l(jp._readyPromise)||mGe(),jp._readyPromise.then(function(n){let i=e;e instanceof ArrayBuffer&&(i=new Uint8Array(e));let o={supportedTargetFormats:t,ktx2Buffer:i};return n.scheduleTask(o,[i.buffer])}).then(function(n){let i=n.length,o=Object.keys(n[0]);for(let r=0;r>1^-(e&1)}wo.zigZagDeltaDecode=function(e,t,n){let i=e.length,o=0,r=0,s=0;for(let a=0;a>11,u=c>>5&o,h=c&i,p=3*a;t[p]=d*r,t[p+1]=u*s,t[p+2]=h*r}return t};var Mn=wo;var cMt=y(C(),1);var fne=new m,pne=new m,Ane=new m;function hGe(e,t,n,i,o){l(o)||(o=new m);let r,s,a,c,d,u,h,p;if(l(t.z)){if(m.equalsEpsilon(e,t,Z.EPSILON14))return m.clone(m.UNIT_X,o);if(m.equalsEpsilon(e,n,Z.EPSILON14))return m.clone(m.UNIT_Y,o);if(m.equalsEpsilon(e,i,Z.EPSILON14))return m.clone(m.UNIT_Z,o);r=m.subtract(n,t,fne),s=m.subtract(i,t,pne),a=m.subtract(e,t,Ane),c=m.dot(r,r),d=m.dot(r,s),u=m.dot(r,a),h=m.dot(s,s),p=m.dot(s,a)}else{if(D.equalsEpsilon(e,t,Z.EPSILON14))return m.clone(m.UNIT_X,o);if(D.equalsEpsilon(e,n,Z.EPSILON14))return m.clone(m.UNIT_Y,o);if(D.equalsEpsilon(e,i,Z.EPSILON14))return m.clone(m.UNIT_Z,o);r=D.subtract(n,t,fne),s=D.subtract(i,t,pne),a=D.subtract(e,t,Ane),c=D.dot(r,r),d=D.dot(r,s),u=D.dot(r,a),h=D.dot(s,s),p=D.dot(s,a)}o.y=h*u-d*p,o.z=c*p-d*u;let g=c*h-d*d;if(g!==0)return o.y/=g,o.z/=g,o.x=1-o.y-o.z,o}var Hy=hGe;var mMt=y(C(),1);function Zf(){this.high=m.clone(m.ZERO),this.low=m.clone(m.ZERO)}Zf.encode=function(e,t){l(t)||(t={high:0,low:0});let n;return e>=0?(n=Math.floor(e/65536)*65536,t.high=n,t.low=e-n):(n=Math.floor(-e/65536)*65536,t.high=-n,t.low=e+n),t};var qp={high:0,low:0};Zf.fromCartesian=function(e,t){l(t)||(t=new Zf);let n=t.high,i=t.low;return Zf.encode(e.x,qp),n.x=qp.high,i.x=qp.low,Zf.encode(e.y,qp),n.y=qp.high,i.y=qp.low,Zf.encode(e.z,qp),n.z=qp.high,i.z=qp.low,t};var DO=new Zf;Zf.writeElements=function(e,t,n){Zf.fromCartesian(e,DO);let i=DO.high,o=DO.low;t[n]=i.x,t[n+1]=i.y,t[n+2]=i.z,t[n+3]=o.x,t[n+4]=o.y,t[n+5]=o.z};var ni=Zf;var gMt=y(C(),1);var ca={UNSIGNED_BYTE:ne.UNSIGNED_BYTE,UNSIGNED_SHORT:ne.UNSIGNED_SHORT,UNSIGNED_INT:ne.UNSIGNED_INT};ca.getSizeInBytes=function(e){switch(e){case ca.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case ca.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case ca.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}};ca.fromSizeInBytes=function(e){switch(e){case 2:return ca.UNSIGNED_SHORT;case 4:return ca.UNSIGNED_INT;case 1:return ca.UNSIGNED_BYTE}};ca.validate=function(e){return l(e)&&(e===ca.UNSIGNED_BYTE||e===ca.UNSIGNED_SHORT||e===ca.UNSIGNED_INT)};ca.createTypedArray=function(e,t){return e>=Z.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)};ca.createTypedArrayFromArrayBuffer=function(e,t,n,i){return e>=Z.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,n,i):new Uint16Array(t,n,i)};ca.fromTypedArray=function(e){if(e instanceof Uint8Array)return ca.UNSIGNED_BYTE;if(e instanceof Uint16Array)return ca.UNSIGNED_SHORT;if(e instanceof Uint32Array)return ca.UNSIGNED_INT};var Me=Object.freeze(ca);var UMt=y(C(),1);var CMt=y(C(),1);var QO={};QO.computeDiscriminant=function(e,t,n){return t*t-4*e*n};function gne(e,t,n){let i=e+t;return Z.sign(e)!==Z.sign(t)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(t)))d&&d/c0?[a/e,n/a]:[n/a,a/e]};var rl=QO;var RMt=y(C(),1);var _Mt=y(C(),1);var kO={};kO.computeDiscriminant=function(e,t,n,i){let o=e*e,r=t*t,s=n*n,a=i*i;return 18*e*t*n*i+r*s-27*o*a-4*(e*s*n+r*t*i)};function UO(e,t,n,i){let o=e,r=t/3,s=n/3,a=i,c=o*s,d=r*a,u=r*r,h=s*s,p=o*s-u,g=o*a-r*s,f=r*a-h,b=4*p*f-g*g,x,I;if(b<0){let O,H,ee;u*d>=c*h?(O=o,H=p,ee=-2*r*p+o*g):(O=a,H=f,ee=-a*g+2*s*f);let te=-(ee<0?-1:1)*Math.abs(O)*Math.sqrt(-b);I=-ee+te;let q=I/2,pe=q<0?-Math.pow(-q,1/3):Math.pow(q,1/3),ye=I===te?-pe:-H/pe;return x=H<=0?pe+ye:-ee/(pe*pe+ye*ye+H),u*d>=c*h?[(x-r)/o]:[-a/(x+s)]}let _=p,E=-2*r*p+o*g,S=f,R=-a*g+2*s*f,G=Math.sqrt(b),B=Math.sqrt(3)/2,w=Math.abs(Math.atan2(o*G,-E)/3);x=2*Math.sqrt(-_);let F=Math.cos(w);I=x*F;let P=x*(-F/2-B*Math.sin(w)),A=I+P>2*r?I-r:P-r,T=o,L=A/T;w=Math.abs(Math.atan2(a*G,-R)/3),x=2*Math.sqrt(-S),F=Math.cos(w),I=x*F,P=x*(-F/2-B*Math.sin(w));let V=-a,W=I+P<2*s?I+s:P+s,M=V/W,Q=T*W,N=-A*W-T*V,k=A*V,v=(s*N-r*k)/(-r*N+s*Q);return L<=v?L<=M?v<=M?[L,v,M]:[L,M,v]:[M,L,v]:L<=M?[v,L,M]:v<=M?[v,M,L]:[M,v,L]}kO.computeRealRoots=function(e,t,n,i){let o,r;if(e===0)return rl.computeRealRoots(t,n,i);if(t===0){if(n===0){if(i===0)return[0,0,0];r=-i/e;let s=r<0?-Math.pow(-r,1/3):Math.pow(r,1/3);return[s,s,s]}else if(i===0)return o=rl.computeRealRoots(e,0,n),o.Length===0?[0]:[o[0],0,o[1]];return UO(e,0,n,i)}else{if(n===0)return i===0?(r=-t/e,r<0?[r,0,0]:[0,0,r]):UO(e,t,0,i);if(i===0)return o=rl.computeRealRoots(e,t,n),o.length===0?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]}return UO(e,t,n,i)};var zy=kO;var YO={};YO.computeDiscriminant=function(e,t,n,i,o){let r=e*e,s=r*e,a=t*t,c=a*t,d=n*n,u=d*n,h=i*i,p=h*i,g=o*o,f=g*o;return a*d*h-4*c*p-4*e*u*h+18*e*t*n*p-27*r*h*h+256*s*f+o*(18*c*n*i-4*a*u+16*e*d*d-80*e*t*d*i-6*e*a*h+144*r*n*h)+g*(144*e*a*n-27*a*a-128*r*d-192*r*t*i)};function ih(e,t,n,i){let o=e*e,r=t-3*o/8,s=n-t*e/2+o*e/8,a=i-n*e/4+t*o/16-3*o*o/256,c=zy.computeRealRoots(1,2*r,r*r-4*a,-s*s);if(c.length>0){let d=-e/4,u=c[c.length-1];if(Math.abs(u)=0&&g>=0){let b=Math.sqrt(p),x=Math.sqrt(g);return[d-x,d-b,d+b,d+x]}else{if(p>=0&&g<0)return f=Math.sqrt(p),[d-f,d+f];if(p<0&&g>=0)return f=Math.sqrt(g),[d-f,d+f]}}return[]}else if(u>0){let h=Math.sqrt(u),p=(r+u-s/h)/2,g=(r+u+s/h)/2,f=rl.computeRealRoots(1,h,p),b=rl.computeRealRoots(1,-h,g);return f.length!==0?(f[0]+=d,f[1]+=d,b.length!==0?(b[0]+=d,b[1]+=d,f[1]<=b[0]?[f[0],f[1],b[0],b[1]]:b[1]<=f[0]?[b[0],b[1],f[0],f[1]]:f[0]>=b[0]&&f[1]<=b[1]?[b[0],f[0],f[1],b[1]]:b[0]>=f[0]&&b[1]<=f[1]?[f[0],b[0],b[1],f[1]]:f[0]>b[0]&&f[0]0){let h=u[0],p=t-h,g=p*p,f=e/2,b=p/2,x=g-4*i,I=g+4*Math.abs(i),_=s-4*h,E=s+4*Math.abs(h),S,R;if(h<0||x*E<_*I){let T=Math.sqrt(_);S=T/2,R=T===0?0:(e*b-n)/T}else{let T=Math.sqrt(x);S=T===0?0:(e*b-n)/T,R=T/2}let G,B;f===0&&S===0?(G=0,B=0):Z.sign(f)===Z.sign(S)?(G=f+S,B=h/G):(B=f-S,G=h/B);let w,F;b===0&&R===0?(w=0,F=0):Z.sign(b)===Z.sign(R)?(w=b+R,F=i/w):(F=b-R,w=i/F);let P=rl.computeRealRoots(1,G,w),A=rl.computeRealRoots(1,B,F);if(P.length!==0)return A.length!==0?P[1]<=A[0]?[P[0],P[1],A[0],A[1]]:A[1]<=P[0]?[A[0],A[1],P[0],P[1]]:P[0]>=A[0]&&P[1]<=A[1]?[A[0],P[0],P[1],A[1]]:A[0]>=P[0]&&A[1]<=P[1]?[P[0],A[0],A[1],P[1]]:P[0]>A[0]&&P[0]u)||(p=m.cross(h,a,yne),f=m.dot(s,p),f<0||g+f>u))return;b=m.dot(c,p)/u}else{if(Math.abs(u)1||(p=m.cross(h,a,yne),f=m.dot(s,p)*x,f<0||g+f>1))return;b=m.dot(c,p)*x}return b};$o.rayTriangle=function(e,t,n,i,o,r){let s=$o.rayTriangleParametric(e,t,n,i,o);if(!(!l(s)||s<0))return l(r)||(r=new m),m.multiplyByScalar(e.direction,s,r),m.add(e.origin,r,r)};var AGe=new En;$o.lineSegmentTriangle=function(e,t,n,i,o,r,s){let a=AGe;m.clone(e,a.origin),m.subtract(t,e,a.direction),m.normalize(a.direction,a.direction);let c=$o.rayTriangleParametric(a,n,i,o,r);if(!(!l(c)||c<0||c>m.distance(e,t)))return l(s)||(s=new m),m.multiplyByScalar(a.direction,c,s),m.add(a.origin,s,s)};function gGe(e,t,n,i){let o=t*t-4*e*n;if(o<0)return;if(o>0){let s=1/(2*e),a=Math.sqrt(o),c=(-t+a)*s,d=(-t-a)*s;return cs))return i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,s),i};var CGe=new m,xGe=new m;$o.rayEllipsoid=function(e,t){let n=t.oneOverRadii,i=m.multiplyComponents(n,e.origin,CGe),o=m.multiplyComponents(n,e.direction,xGe),r=m.magnitudeSquared(i),s=m.dot(i,o),a,c,d,u,h;if(r>1){if(s>=0)return;let p=s*s;if(a=r-1,c=m.magnitudeSquared(o),d=c*a,pd){u=s*s-d,h=-s+Math.sqrt(u);let f=h/c,b=a/h;return f0?g.push(new m(i,o*F,o*-T)):T!==0?(g.push(new m(i,o*F,o*-T)),g.push(new m(i,o*F,o*T)),++w):g.push(new m(i,o*F,o*T))}return g};var OO=new m,Cne=new m,xne=new m,cD=new m,IGe=new m,_Ge=new $,EGe=new $,TGe=new $,SGe=new $,LGe=new $,Ine=new $,_ne=new $,Ene=new m,RGe=new m,VGe=new ge;$o.grazingAltitudeLocation=function(e,t){let n=e.origin,i=e.direction;if(!m.equals(n,m.ZERO)){let G=t.geodeticSurfaceNormal(n,OO);if(m.dot(i,G)>=0)return n}let o=l(this.rayEllipsoid(e,t)),r=t.transformPositionToScaledSpace(i,OO),s=m.normalize(r,r),a=m.mostOrthogonalAxis(r,cD),c=m.normalize(m.cross(a,s,Cne),Cne),d=m.normalize(m.cross(s,c,xne),xne),u=_Ge;u[0]=s.x,u[1]=s.y,u[2]=s.z,u[3]=c.x,u[4]=c.y,u[5]=c.z,u[6]=d.x,u[7]=d.y,u[8]=d.z;let h=$.transpose(u,EGe),p=$.fromScale(t.radii,TGe),g=$.fromScale(t.oneOverRadii,SGe),f=LGe;f[0]=0,f[1]=-i.z,f[2]=i.y,f[3]=i.z,f[4]=0,f[5]=-i.x,f[6]=-i.y,f[7]=i.x,f[8]=0;let b=$.multiply($.multiply(h,g,Ine),f,Ine),x=$.multiply($.multiply(b,p,_ne),u,_ne),I=$.multiplyByVector(b,n,IGe),_=$o.quadraticVectorExpression(x,m.negate(I,OO),0,0,1),E,S,R=_.length;if(R>0){let G=m.clone(m.ZERO,RGe),B=Number.NEGATIVE_INFINITY;for(let F=0;FB&&(B=A,G=m.clone(E,G))}let w=t.cartesianToCartographic(G,VGe);return B=Z.clamp(B,0,1),S=m.magnitude(m.subtract(G,n,cD))*Math.sqrt(1-B*B),S=o?-S:S,w.height=S,t.cartographicToCartesian(w,new m)}};var GGe=new m;$o.lineSegmentPlane=function(e,t,n,i){l(i)||(i=new m);let o=m.subtract(t,e,GGe),r=n.normal,s=m.dot(r,o);if(Math.abs(s)1))return m.multiplyByScalar(o,c,i),m.add(e,i,i),i};$o.trianglePlaneIntersection=function(e,t,n,i){let o=i.normal,r=i.distance,s=m.dot(o,e)+r<0,a=m.dot(o,t)+r<0,c=m.dot(o,n)+r<0,d=0;d+=s?1:0,d+=a?1:0,d+=c?1:0;let u,h;if((d===1||d===2)&&(u=new m,h=new m),d===1){if(s)return $o.lineSegmentPlane(e,t,i,u),$o.lineSegmentPlane(e,n,i,h),{positions:[e,t,n,u,h],indices:[0,3,4,1,2,4,1,4,3]};if(a)return $o.lineSegmentPlane(t,n,i,u),$o.lineSegmentPlane(t,e,i,h),{positions:[e,t,n,u,h],indices:[1,3,4,2,0,4,2,4,3]};if(c)return $o.lineSegmentPlane(n,e,i,u),$o.lineSegmentPlane(n,t,i,h),{positions:[e,t,n,u,h],indices:[2,3,4,0,1,4,0,4,3]}}else if(d===2)if(s)if(a){if(!c)return $o.lineSegmentPlane(e,n,i,u),$o.lineSegmentPlane(t,n,i,h),{positions:[e,t,n,u,h],indices:[0,1,4,0,4,3,2,3,4]}}else return $o.lineSegmentPlane(n,t,i,u),$o.lineSegmentPlane(e,t,i,h),{positions:[e,t,n,u,h],indices:[2,0,4,2,4,3,1,3,4]};else return $o.lineSegmentPlane(t,e,i,u),$o.lineSegmentPlane(n,e,i,h),{positions:[e,t,n,u,h],indices:[1,2,4,1,4,3,0,3,4]}};var fi=$o;var KMt=y(C(),1);function la(e,t){this.normal=m.clone(e),this.distance=t}la.fromPointNormal=function(e,t,n){let i=-m.dot(t,e);return l(n)?(m.clone(t,n.normal),n.distance=i,n):new la(t,i)};var ZGe=new m;la.fromCartesian4=function(e,t){let n=m.fromCartesian4(e,ZGe),i=e.w;return l(t)?(m.clone(n,t.normal),t.distance=i,t):new la(n,i)};la.getPointDistance=function(e,t){return m.dot(e.normal,t)+e.distance};var BGe=new m;la.projectPointOntoPlane=function(e,t,n){l(n)||(n=new m);let i=la.getPointDistance(e,t),o=m.multiplyByScalar(e.normal,i,BGe);return m.subtract(t,o,n)};var wGe=new X,XGe=new ce,WGe=new m;la.transform=function(e,t,n){let i=e.normal,o=e.distance,r=X.inverseTranspose(t,wGe),s=ce.fromElements(i.x,i.y,i.z,o,XGe);s=X.multiplyByVector(r,s,s);let a=m.fromCartesian4(s,WGe);return s=ce.divideByScalar(s,m.magnitude(a),s),la.fromCartesian4(s,n)};la.clone=function(e,t){return l(t)?(m.clone(e.normal,t.normal),t.distance=e.distance,t):new la(e.normal,e.distance)};la.equals=function(e,t){return e.distance===t.distance&&m.equals(e.normal,t.normal)};la.ORIGIN_XY_PLANE=Object.freeze(new la(m.UNIT_Z,0));la.ORIGIN_YZ_PLANE=Object.freeze(new la(m.UNIT_X,0));la.ORIGIN_ZX_PLANE=Object.freeze(new la(m.UNIT_Y,0));var An=la;var $Mt=y(C(),1);var HO={};HO.calculateACMR=function(e){e=e??Y.EMPTY_OBJECT;let t=e.indices,n=e.maximumIndex,i=e.cacheSize??24,o=t.length;if(!l(n)){n=0;let a=0,c=t[a];for(;an&&(n=c),++a,c=t[a]}let r=[];for(let a=0;ai&&(r[t[a]]=s,++s);return(s-i+1)/(o/3)};HO.tipsify=function(e){e=e??Y.EMPTY_OBJECT;let t=e.indices,n=e.maximumIndex,i=e.cacheSize??24,o;function r(A,T,L,V){for(;T.length>=1;){let W=T[T.length-1];if(T.splice(T.length-1,1),A[W].numLiveTriangles>0)return W}for(;o0)return++o,o-1;++o}return-1}function s(A,T,L,V,W,M,Q){let N=-1,k,v=-1,O=0;for(;Ov||v===-1)&&(v=k,N=H)),++O}return N===-1?r(V,M,A,Q):N}let a=t.length,c=0,d=0,u=t[d],h=a;if(l(n))c=n+1;else{for(;dc&&(c=u),++d,u=t[d];if(c===-1)return 0;++c}let p=[],g;for(g=0;gi&&(E.timeStamp=x,++x),++d}b=s(t,i,I,p,x,_,c)}return G};var L1=HO;var sl={};function pD(e,t,n,i,o){e[t++]=n,e[t++]=i,e[t++]=i,e[t++]=o,e[t++]=o,e[t]=n}function FGe(e){let t=e.length,n=t/3*6,i=Me.createTypedArray(t,n),o=0;for(let r=0;r=3){let n=(t-2)*6,i=Me.createTypedArray(t,n);pD(i,0,e[0],e[1],e[2]);let o=6;for(let r=3;r0){let t=e.length-1,n=(t-1)*6,i=Me.createTypedArray(t,n),o=e[0],r=0;for(let s=1;so&&(o=n[r]);e.indices=L1.tipsify({indices:n,maximumIndex:o,cacheSize:t})}return e};function Lne(e){let t={};for(let n in e)if(e.hasOwnProperty(n)&&l(e[n])&&l(e[n].values)){let i=e[n];t[n]=new Ze({componentDatatype:i.componentDatatype,componentsPerAttribute:i.componentsPerAttribute,normalize:i.normalize,values:[]})}return t}function vGe(e,t,n){for(let i in t)if(t.hasOwnProperty(i)&&l(t[i])&&l(t[i].values)){let o=t[i];for(let r=0;r=Z.SIXTY_FOUR_KILOBYTES){let i=[],o=[],r=0,s=Lne(e.attributes),a=e.indices,c=a.length,d;e.primitiveType===We.TRIANGLES?d=3:e.primitiveType===We.LINES?d=2:e.primitiveType===We.POINTS&&(d=1);for(let u=0;u=Z.SIXTY_FOUR_KILOBYTES&&(t.push(new pt({attributes:s,indices:o,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV})),i=[],o=[],r=0,s=Lne(e.attributes))}o.length!==0&&t.push(new pt({attributes:s,indices:o,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV}))}else t.push(e);return t};var Rne=new m,NGe=new ge;sl.projectTo2D=function(e,t,n,i,o){let r=e.attributes[t];o=l(o)?o:new Di;let s=o.ellipsoid,a=r.values,c=new Float64Array(a.length),d=0;for(let u=0;ux&&(x=_)}return new pt({attributes:u,indices:f,primitiveType:d,boundingSphere:l(b)?new ue(b,x):void 0})}sl.combineInstances=function(e){let t=[],n=[],i=e.length;for(let r=0;r0&&o.push(jO(t,"geometry")),n.length>0&&(o.push(jO(n,"westHemisphereGeometry")),o.push(jO(n,"eastHemisphereGeometry"))),o};var Uu=new m,R1=new m,O_=new m,H_=new m;sl.computeNormal=function(e){let t=e.indices,n=e.attributes,i=n.position.values,o=n.position.values.length/3,r=t.length,s=new Array(o),a=new Array(r/3),c=new Array(r),d;for(d=0;d0){for(u=0;u3&&(n[3]=0,n[4]=2,n[5]=3);let i=6;for(let o=3;oo?i>r?s=Z.sign(e.y):s=Z.sign(n.y):o>r?s=Z.sign(t.y):s=Z.sign(n.y);let a=s<0;yb(e,a),yb(t,a),yb(n,a)}var Bne=new m;function ku(e,t,n,i){m.add(e,m.multiplyByScalar(m.subtract(t,e,Bne),e.y/(e.y-t.y),Bne),n),m.clone(n,i),yb(n,!0),yb(i,!1)}var Jy=new m,jy=new m,qy=new m,$y=new m,qO={positions:new Array(7),indices:new Array(9)};function $Ge(e,t,n){if(e.x>=0||t.x>=0||n.x>=0)return;qGe(e,t,n);let i=e.y<0,o=t.y<0,r=n.y<0,s=0;s+=i?1:0,s+=o?1:0,s+=r?1:0;let a=qO.indices;s===1?(a[1]=3,a[2]=4,a[5]=6,a[7]=6,a[8]=5,i?(ku(e,t,Jy,qy),ku(e,n,jy,$y),a[0]=0,a[3]=1,a[4]=2,a[6]=1):o?(ku(t,n,Jy,qy),ku(t,e,jy,$y),a[0]=1,a[3]=2,a[4]=0,a[6]=2):r&&(ku(n,e,Jy,qy),ku(n,t,jy,$y),a[0]=2,a[3]=0,a[4]=1,a[6]=0)):s===2&&(a[2]=4,a[4]=4,a[5]=3,a[7]=5,a[8]=6,i?o?r||(ku(n,e,Jy,qy),ku(n,t,jy,$y),a[0]=0,a[1]=1,a[3]=0,a[6]=2):(ku(t,n,Jy,qy),ku(t,e,jy,$y),a[0]=2,a[1]=0,a[3]=2,a[6]=1):(ku(e,t,Jy,qy),ku(e,n,jy,$y),a[0]=1,a[1]=2,a[3]=1,a[6]=0));let c=qO.positions;return c[0]=e,c[1]=t,c[2]=n,c.length=3,(s===1||s===2)&&(c[3]=Jy,c[4]=jy,c[5]=qy,c[6]=$y,c.length=7),qO}function wne(e,t){let n=e.attributes;if(n.position.values.length===0)return;for(let o in n)if(n.hasOwnProperty(o)&&l(n[o])&&l(n[o].values)){let r=n[o];r.values=J.createTypedArray(r.componentDatatype,r.values)}let i=pt.computeNumberOfVertices(e);return e.indices=Me.createTypedArray(i,e.indices),t&&(e.boundingSphere=ue.fromVertices(n.position.values)),e}function K_(e){let t=e.attributes,n={};for(let i in t)if(t.hasOwnProperty(i)&&l(t[i])&&l(t[i].values)){let o=t[i];n[i]=new Ze({componentDatatype:o.componentDatatype,componentsPerAttribute:o.componentsPerAttribute,normalize:o.normalize,values:[]})}return new pt({attributes:n,indices:[],primitiveType:e.primitiveType})}function nH(e,t,n){let i=l(e.geometry.boundingSphere);t=wne(t,i),n=wne(n,i),l(n)&&!l(t)?e.geometry=n:!l(n)&&l(t)?e.geometry=t:(e.westHemisphereGeometry=t,e.eastHemisphereGeometry=n,e.geometry=void 0)}function iH(e,t){let n=new e,i=new e,o=new e;return function(r,s,a,c,d,u,h,p){let g=e.fromArray(d,r*t,n),f=e.fromArray(d,s*t,i),b=e.fromArray(d,a*t,o);e.multiplyByScalar(g,c.x,g),e.multiplyByScalar(f,c.y,f),e.multiplyByScalar(b,c.z,b);let x=e.add(g,f,g);e.add(x,b,x),p&&e.normalize(x,x),e.pack(x,u,h*t)}}var eZe=iH(ce,4),fD=iH(m,3),vne=iH(D,2),tZe=function(e,t,n,i,o,r,s){let a=o[e]*i.x,c=o[t]*i.y,d=o[n]*i.z;r[s]=a+c+d>Z.EPSILON6?1:0},G1=new m,$O=new m,eH=new m,nZe=new m;function mD(e,t,n,i,o,r,s,a,c,d,u,h,p,g,f,b){if(!l(r)&&!l(s)&&!l(a)&&!l(c)&&!l(d)&&g===0)return;let x=m.fromArray(o,e*3,G1),I=m.fromArray(o,t*3,$O),_=m.fromArray(o,n*3,eH),E=Hy(i,x,I,_,nZe);if(l(E)){if(l(r)&&fD(e,t,n,E,r,h.normal.values,b,!0),l(d)){let S=m.fromArray(d,e*3,G1),R=m.fromArray(d,t*3,$O),G=m.fromArray(d,n*3,eH);m.multiplyByScalar(S,E.x,S),m.multiplyByScalar(R,E.y,R),m.multiplyByScalar(G,E.z,G);let B;!m.equals(S,m.ZERO)||!m.equals(R,m.ZERO)||!m.equals(G,m.ZERO)?(B=m.add(S,R,S),m.add(B,G,B),m.normalize(B,B)):(B=G1,B.x=0,B.y=0,B.z=0),m.pack(B,h.extrudeDirection.values,b*3)}if(l(u)&&tZe(e,t,n,E,u,h.applyOffset.values,b),l(s)&&fD(e,t,n,E,s,h.tangent.values,b,!0),l(a)&&fD(e,t,n,E,a,h.bitangent.values,b,!0),l(c)&&vne(e,t,n,E,c,h.st.values,b),g>0)for(let S=0;S3){let V=L.positions,W=L.indices,M=W.length;for(let Q=0;Q0)continue;let c=m.unpack(i,s,Qne);(a.y<0&&c.y>0||a.y>0&&c.y<0)&&(s-3>0?(i[s]=n[s-3],i[s+1]=n[s-2],i[s+2]=n[s-1]):m.pack(a,i,s));let d=m.unpack(o,s,tH);(a.y<0&&d.y>0||a.y>0&&d.y<0)&&(s+30||ue.intersectPlane(n,An.ORIGIN_ZX_PLANE)!==on.INTERSECTING))return e;if(t.geometryType!==Qu.NONE)switch(t.geometryType){case Qu.POLYLINES:mZe(e);break;case Qu.TRIANGLES:Xne(e);break;case Qu.LINES:Wne(e);break}else jGe(t),t.primitiveType===We.TRIANGLES?Xne(e):t.primitiveType===We.LINES&&Wne(e);return e};var Yn=sl;var Zvt=y(C(),1);var Lvt=y(C(),1);var Vi={UNSIGNED_BYTE:ne.UNSIGNED_BYTE,UNSIGNED_SHORT:ne.UNSIGNED_SHORT,UNSIGNED_INT:ne.UNSIGNED_INT,FLOAT:ne.FLOAT,HALF_FLOAT:ne.HALF_FLOAT_OES,UNSIGNED_INT_24_8:ne.UNSIGNED_INT_24_8,UNSIGNED_SHORT_4_4_4_4:ne.UNSIGNED_SHORT_4_4_4_4,UNSIGNED_SHORT_5_5_5_1:ne.UNSIGNED_SHORT_5_5_5_1,UNSIGNED_SHORT_5_6_5:ne.UNSIGNED_SHORT_5_6_5};Vi.toWebGLConstant=function(e,t){switch(e){case Vi.UNSIGNED_BYTE:return ne.UNSIGNED_BYTE;case Vi.UNSIGNED_SHORT:return ne.UNSIGNED_SHORT;case Vi.UNSIGNED_INT:return ne.UNSIGNED_INT;case Vi.FLOAT:return ne.FLOAT;case Vi.HALF_FLOAT:return t.webgl2?ne.HALF_FLOAT:ne.HALF_FLOAT_OES;case Vi.UNSIGNED_INT_24_8:return ne.UNSIGNED_INT_24_8;case Vi.UNSIGNED_SHORT_4_4_4_4:return ne.UNSIGNED_SHORT_4_4_4_4;case Vi.UNSIGNED_SHORT_5_5_5_1:return ne.UNSIGNED_SHORT_5_5_5_1;case Vi.UNSIGNED_SHORT_5_6_5:return Vi.UNSIGNED_SHORT_5_6_5}};Vi.isPacked=function(e){return e===Vi.UNSIGNED_INT_24_8||e===Vi.UNSIGNED_SHORT_4_4_4_4||e===Vi.UNSIGNED_SHORT_5_5_5_1||e===Vi.UNSIGNED_SHORT_5_6_5};Vi.sizeInBytes=function(e){switch(e){case Vi.UNSIGNED_BYTE:return 1;case Vi.UNSIGNED_SHORT:case Vi.UNSIGNED_SHORT_4_4_4_4:case Vi.UNSIGNED_SHORT_5_5_5_1:case Vi.UNSIGNED_SHORT_5_6_5:case Vi.HALF_FLOAT:return 2;case Vi.UNSIGNED_INT:case Vi.FLOAT:case Vi.UNSIGNED_INT_24_8:return 4}};Vi.validate=function(e){return e===Vi.UNSIGNED_BYTE||e===Vi.UNSIGNED_SHORT||e===Vi.UNSIGNED_INT||e===Vi.FLOAT||e===Vi.HALF_FLOAT||e===Vi.UNSIGNED_INT_24_8||e===Vi.UNSIGNED_SHORT_4_4_4_4||e===Vi.UNSIGNED_SHORT_5_5_5_1||e===Vi.UNSIGNED_SHORT_5_6_5};Vi.getTypedArrayConstructor=function(e){let t=Vi.sizeInBytes(e);return t===Uint8Array.BYTES_PER_ELEMENT?Uint8Array:t===Uint16Array.BYTES_PER_ELEMENT?Uint16Array:t===Float32Array.BYTES_PER_ELEMENT&&e===Vi.FLOAT?Float32Array:Uint32Array};var Ye=Object.freeze(Vi);var $e={DEPTH_COMPONENT:ne.DEPTH_COMPONENT,DEPTH_STENCIL:ne.DEPTH_STENCIL,ALPHA:ne.ALPHA,RED:ne.RED,RG:ne.RG,RGB:ne.RGB,RGBA:ne.RGBA,RED_INTEGER:ne.RED_INTEGER,RG_INTEGER:ne.RG_INTEGER,RGB_INTEGER:ne.RGB_INTEGER,RGBA_INTEGER:ne.RGBA_INTEGER,LUMINANCE:ne.LUMINANCE,LUMINANCE_ALPHA:ne.LUMINANCE_ALPHA,RGB_DXT1:ne.COMPRESSED_RGB_S3TC_DXT1_EXT,RGBA_DXT1:ne.COMPRESSED_RGBA_S3TC_DXT1_EXT,RGBA_DXT3:ne.COMPRESSED_RGBA_S3TC_DXT3_EXT,RGBA_DXT5:ne.COMPRESSED_RGBA_S3TC_DXT5_EXT,RGB_PVRTC_4BPPV1:ne.COMPRESSED_RGB_PVRTC_4BPPV1_IMG,RGB_PVRTC_2BPPV1:ne.COMPRESSED_RGB_PVRTC_2BPPV1_IMG,RGBA_PVRTC_4BPPV1:ne.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,RGBA_PVRTC_2BPPV1:ne.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,RGBA_ASTC:ne.COMPRESSED_RGBA_ASTC_4x4_WEBGL,RGB_ETC1:ne.COMPRESSED_RGB_ETC1_WEBGL,RGB8_ETC2:ne.COMPRESSED_RGB8_ETC2,RGBA8_ETC2_EAC:ne.COMPRESSED_RGBA8_ETC2_EAC,RGBA_BC7:ne.COMPRESSED_RGBA_BPTC_UNORM};$e.componentsLength=function(e){switch(e){case $e.RGB:case $e.RGB_INTEGER:return 3;case $e.RGBA:case $e.RGBA_INTEGER:return 4;case $e.LUMINANCE_ALPHA:case $e.RG:case $e.RG_INTEGER:return 2;case $e.ALPHA:case $e.RED:case $e.RED_INTEGER:case $e.LUMINANCE:return 1;default:return 1}};$e.validate=function(e){return e===$e.DEPTH_COMPONENT||e===$e.DEPTH_STENCIL||e===$e.ALPHA||e===$e.RED||e===$e.RG||e===$e.RGB||e===$e.RGBA||e===$e.RED_INTEGER||e===$e.RG_INTEGER||e===$e.RGB_INTEGER||e===$e.RGBA_INTEGER||e===$e.LUMINANCE||e===$e.LUMINANCE_ALPHA||e===$e.RGB_DXT1||e===$e.RGBA_DXT1||e===$e.RGBA_DXT3||e===$e.RGBA_DXT5||e===$e.RGB_PVRTC_4BPPV1||e===$e.RGB_PVRTC_2BPPV1||e===$e.RGBA_PVRTC_4BPPV1||e===$e.RGBA_PVRTC_2BPPV1||e===$e.RGBA_ASTC||e===$e.RGB_ETC1||e===$e.RGB8_ETC2||e===$e.RGBA8_ETC2_EAC||e===$e.RGBA_BC7};$e.isColorFormat=function(e){return e===$e.RED||e===$e.ALPHA||e===$e.RGB||e===$e.RGBA||e===$e.LUMINANCE||e===$e.LUMINANCE_ALPHA};$e.isDepthFormat=function(e){return e===$e.DEPTH_COMPONENT||e===$e.DEPTH_STENCIL};$e.isCompressedFormat=function(e){return e===$e.RGB_DXT1||e===$e.RGBA_DXT1||e===$e.RGBA_DXT3||e===$e.RGBA_DXT5||e===$e.RGB_PVRTC_4BPPV1||e===$e.RGB_PVRTC_2BPPV1||e===$e.RGBA_PVRTC_4BPPV1||e===$e.RGBA_PVRTC_2BPPV1||e===$e.RGBA_ASTC||e===$e.RGB_ETC1||e===$e.RGB8_ETC2||e===$e.RGBA8_ETC2_EAC||e===$e.RGBA_BC7};$e.isDXTFormat=function(e){return e===$e.RGB_DXT1||e===$e.RGBA_DXT1||e===$e.RGBA_DXT3||e===$e.RGBA_DXT5};$e.isPVRTCFormat=function(e){return e===$e.RGB_PVRTC_4BPPV1||e===$e.RGB_PVRTC_2BPPV1||e===$e.RGBA_PVRTC_4BPPV1||e===$e.RGBA_PVRTC_2BPPV1};$e.isASTCFormat=function(e){return e===$e.RGBA_ASTC};$e.isETC1Format=function(e){return e===$e.RGB_ETC1};$e.isETC2Format=function(e){return e===$e.RGB8_ETC2||e===$e.RGBA8_ETC2_EAC};$e.isBC7Format=function(e){return e===$e.RGBA_BC7};$e.compressedTextureSizeInBytes=function(e,t,n){switch(e){case $e.RGB_DXT1:case $e.RGBA_DXT1:case $e.RGB_ETC1:case $e.RGB8_ETC2:return Math.floor((t+3)/4)*Math.floor((n+3)/4)*8;case $e.RGBA_DXT3:case $e.RGBA_DXT5:case $e.RGBA_ASTC:case $e.RGBA8_ETC2_EAC:return Math.floor((t+3)/4)*Math.floor((n+3)/4)*16;case $e.RGB_PVRTC_4BPPV1:case $e.RGBA_PVRTC_4BPPV1:return Math.floor((Math.max(t,8)*Math.max(n,8)*4+7)/8);case $e.RGB_PVRTC_2BPPV1:case $e.RGBA_PVRTC_2BPPV1:return Math.floor((Math.max(t,16)*Math.max(n,8)*2+7)/8);case $e.RGBA_BC7:return Math.ceil(t/4)*Math.ceil(n/4)*16;default:return 0}};$e.textureSizeInBytes=function(e,t,n,i){let o=$e.componentsLength(e);return Ye.isPacked(t)&&(o=1),o*Ye.sizeInBytes(t)*n*i};$e.texture3DSizeInBytes=function(e,t,n,i,o){let r=$e.componentsLength(e);return Ye.isPacked(t)&&(r=1),r*Ye.sizeInBytes(t)*n*i*o};$e.alignmentInBytes=function(e,t,n){let i=$e.textureSizeInBytes(e,t,n,1)%4;return i===0?4:i===2?2:1};$e.createTypedArray=function(e,t,n,i){let o=Ye.getTypedArrayConstructor(t),r=$e.componentsLength(e)*n*i;return new o(r)};$e.flipY=function(e,t,n,i,o){if(o===1)return e;let r=$e.createTypedArray(t,n,i,o),s=$e.componentsLength(t),a=i*s;for(let c=0;c0&&(i.glVertexAttribDivisor(d,this.instanceDivisor),i._vertexAttribDivisors[d]=this.instanceDivisor,i._previousDrawInstanced=!0)},a.disableVertexAttribArray=function(c){c.disableVertexAttribArray(this.index),this.instanceDivisor>0&&i.glVertexAttribDivisor(n,0)};else{switch(a.componentsPerAttribute){case 1:a.vertexAttrib=function(c){c.vertexAttrib1fv(this.index,this.value)};break;case 2:a.vertexAttrib=function(c){c.vertexAttrib2fv(this.index,this.value)};break;case 3:a.vertexAttrib=function(c){c.vertexAttrib3fv(this.index,this.value)};break;case 4:a.vertexAttrib=function(c){c.vertexAttrib4fv(this.index,this.value)};break}a.disableVertexAttribArray=function(c){}}e.push(a)}function kne(e,t,n){for(let i=0;i0&&(c=!0),l(s[r].value)&&(d=!0);let h;t.vertexArrayObject&&(h=t.glCreateVertexArray(),t.glBindVertexArray(h),kne(n,s,o),t.glBindVertexArray(null)),this._numberOfVertices=a,this._hasInstancedAttributes=c,this._hasConstantAttributes=d,this._context=t,this._gl=n,this._vao=h,this._attributes=s,this._indexBuffer=o}function Une(e){return e.values.length/e.componentsPerAttribute}function fZe(e){return J.getSizeInBytes(e.componentDatatype)*e.componentsPerAttribute}function pZe(e){let t,n,i,o=[];for(n in e)e.hasOwnProperty(n)&&l(e[n])&&l(e[n].values)&&(o.push(n),e[n].componentDatatype===J.DOUBLE&&(e[n].componentDatatype=J.FLOAT,e[n].values=J.createTypedArray(J.FLOAT,e[n].values)));let r,s=o.length;if(s>0)for(r=Une(e[o[0]]),t=1;t0){let d=J.getSizeInBytes(e[o[0]].componentDatatype),u=a%d;u!==0&&(a+=d-u);let h=r*a,p=new ArrayBuffer(h),g={};for(t=0;t=Z.SIXTY_FOUR_KILOBYTES&&t.elementIndexUint?p=It.createIndexBuffer({context:t,typedArray:new Uint32Array(g),usage:i,indexDatatype:Me.UNSIGNED_INT}):p=It.createIndexBuffer({context:t,typedArray:new Uint16Array(g),usage:i,indexDatatype:Me.UNSIGNED_SHORT})),new $p({context:t,attributes:u,indexBuffer:p})};Object.defineProperties($p.prototype,{numberOfAttributes:{get:function(){return this._attributes.length}},numberOfVertices:{get:function(){return this._numberOfVertices}},indexBuffer:{get:function(){return this._indexBuffer}}});$p.prototype.getAttribute=function(e){return this._attributes[e]};function AZe(e){let t=e._context,n=e._hasInstancedAttributes;if(!n&&!t._previousDrawInstanced)return;t._previousDrawInstanced=n;let i=t._vertexAttribDivisors,o=e._attributes,r=Kt.maximumVertexAttributes,s;if(n){let a=o.length;for(s=0;s0&&(t.glVertexAttribDivisor(s,0),i[s]=0)}function gZe(e,t){let n=e._attributes,i=n.length;for(let o=0;o maxHeight) { + material.diffuse = vec3(0.0); + material.alpha = 0.0; + return material; + } + + // Binary search to find heights above and below. + int idxBelow = 0; + int idxAbove = heightsDimensions.x; + float heightBelow = minHeight; + float heightAbove = maxHeight; + + // while loop not allowed, so use for loop with max iterations. + // maxIterations of 16 supports a texture size up to 65536 (2^16). + const int maxIterations = 16; + for (int i = 0; i < maxIterations; i++) { + if (idxBelow >= idxAbove - 1) { + break; + } + + int idxMid = (idxBelow + idxAbove) / 2; + float heightTex = getHeight(idxMid, invTexSize); + + if (height > heightTex) { + idxBelow = idxMid; + heightBelow = heightTex; + } else { + idxAbove = idxMid; + heightAbove = heightTex; + } + } + + float lerper = heightBelow == heightAbove ? 1.0 : (height - heightBelow) / (heightAbove - heightBelow); + vec2 colorUv = vec2(invTexSize * (float(idxBelow) + 0.5 + lerper), 0.5); + vec4 color = texture(colors, colorUv); + + // undo preumultiplied alpha + if (color.a > 0.0) + { + color.rgb /= color.a; + } + + color.rgb = czm_gammaCorrect(color.rgb); + + material.diffuse = color.rgb; + material.alpha = color.a; + return material; +} +`;var E9t=y(C(),1),v1=`uniform vec4 color; +uniform float spacing; +uniform float width; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + float distanceToContour = mod(materialInput.height, spacing); + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + float dxc = abs(dFdx(materialInput.height)); + float dyc = abs(dFdy(materialInput.height)); + float dF = max(dxc, dyc) * czm_pixelRatio * width; + float alpha = (distanceToContour < dF) ? 1.0 : 0.0; +#else + // If no derivatives available (IE 10?), use pixel ratio + float alpha = (distanceToContour < (czm_pixelRatio * width)) ? 1.0 : 0.0; +#endif + + vec4 outColor = czm_gammaCorrect(vec4(color.rgb, alpha * color.a)); + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + + return material; +} +`;var S9t=y(C(),1),N1=`uniform sampler2D image; +uniform float minimumHeight; +uniform float maximumHeight; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + float scaledHeight = clamp((materialInput.height - minimumHeight) / (maximumHeight - minimumHeight), 0.0, 1.0); + vec4 rampColor = texture(image, vec2(scaledHeight, 0.5)); + rampColor = czm_gammaCorrect(rampColor); + material.diffuse = rampColor.rgb; + material.alpha = rampColor.a; + return material; +} +`;var R9t=y(C(),1),D1=`uniform vec4 fadeInColor; +uniform vec4 fadeOutColor; +uniform float maximumDistance; +uniform bool repeat; +uniform vec2 fadeDirection; +uniform vec2 time; + +float getTime(float t, float coord) +{ + float scalar = 1.0 / maximumDistance; + float q = distance(t, coord) * scalar; + if (repeat) + { + float r = distance(t, coord + 1.0) * scalar; + float s = distance(t, coord - 1.0) * scalar; + q = min(min(r, s), q); + } + return clamp(q, 0.0, 1.0); +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + float s = getTime(time.x, st.s) * fadeDirection.s; + float t = getTime(time.y, st.t) * fadeDirection.t; + + float u = length(vec2(s, t)); + vec4 color = mix(fadeInColor, fadeOutColor, u); + + color = czm_gammaCorrect(color); + material.emission = color.rgb; + material.alpha = color.a; + + return material; +} +`;var G9t=y(C(),1),Q1=`uniform vec4 color; +uniform float cellAlpha; +uniform vec2 lineCount; +uniform vec2 lineThickness; +uniform vec2 lineOffset; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + + float scaledWidth = fract(lineCount.s * st.s - lineOffset.s); + scaledWidth = abs(scaledWidth - floor(scaledWidth + 0.5)); + float scaledHeight = fract(lineCount.t * st.t - lineOffset.t); + scaledHeight = abs(scaledHeight - floor(scaledHeight + 0.5)); + + float value; + + // Fuzz Factor - Controls blurriness of lines +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + const float fuzz = 1.2; + vec2 thickness = (lineThickness * czm_pixelRatio) - 1.0; + + // From "3D Engine Design for Virtual Globes" by Cozzi and Ring, Listing 4.13. + vec2 dx = abs(dFdx(st)); + vec2 dy = abs(dFdy(st)); + vec2 dF = vec2(max(dx.s, dy.s), max(dx.t, dy.t)) * lineCount; + value = min( + smoothstep(dF.s * thickness.s, dF.s * (fuzz + thickness.s), scaledWidth), + smoothstep(dF.t * thickness.t, dF.t * (fuzz + thickness.t), scaledHeight)); +#else + // If no derivatives available (IE 10?), revert to view-dependent fuzz + const float fuzz = 0.05; + + vec2 range = 0.5 - (lineThickness * 0.05); + value = min( + 1.0 - smoothstep(range.s, range.s + fuzz, scaledWidth), + 1.0 - smoothstep(range.t, range.t + fuzz, scaledHeight)); +#endif + + // Edges taken from RimLightingMaterial.glsl + // See http://www.fundza.com/rman_shaders/surface/fake_rim/fake_rim1.html + float dRim = 1.0 - abs(dot(materialInput.normalEC, normalize(materialInput.positionToEyeEC))); + float sRim = smoothstep(0.8, 1.0, dRim); + value *= (1.0 - sRim); + + vec4 halfColor; + halfColor.rgb = color.rgb * 0.5; + halfColor.a = color.a * (1.0 - ((1.0 - cellAlpha) * value)); + halfColor = czm_gammaCorrect(halfColor); + material.diffuse = halfColor.rgb; + material.emission = halfColor.rgb; + material.alpha = halfColor.a; + + return material; +} +`;var B9t=y(C(),1),U1=`uniform sampler2D image; +uniform float strength; +uniform vec2 repeat; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec4 textureValue = texture(image, fract(repeat * materialInput.st)); + vec3 normalTangentSpace = textureValue.channels; + normalTangentSpace.xy = normalTangentSpace.xy * 2.0 - 1.0; + normalTangentSpace.z = clamp(1.0 - strength, 0.1, 1.0); + normalTangentSpace = normalize(normalTangentSpace); + vec3 normalEC = materialInput.tangentToEyeMatrix * normalTangentSpace; + + material.normal = normalEC; + + return material; +} +`;var X9t=y(C(),1),k1=`uniform vec4 color; + +float getPointOnLine(vec2 p0, vec2 p1, float x) +{ + float slope = (p0.y - p1.y) / (p0.x - p1.x); + return slope * (x - p0.x) + p0.y; +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + float base = 1.0 - abs(fwidth(st.s)) * 10.0 * czm_pixelRatio; +#else + // If no derivatives available (IE 10?), 2.5% of the line will be the arrow head + float base = 0.975; +#endif + + vec2 center = vec2(1.0, 0.5); + float ptOnUpperLine = getPointOnLine(vec2(base, 1.0), center, st.s); + float ptOnLowerLine = getPointOnLine(vec2(base, 0.0), center, st.s); + + float halfWidth = 0.15; + float s = step(0.5 - halfWidth, st.t); + s *= 1.0 - step(0.5 + halfWidth, st.t); + s *= 1.0 - step(base, st.s); + + float t = step(base, materialInput.st.s); + t *= 1.0 - step(ptOnUpperLine, st.t); + t *= step(ptOnLowerLine, st.t); + + // Find the distance from the closest separator (region between two colors) + float dist; + if (st.s < base) + { + float d1 = abs(st.t - (0.5 - halfWidth)); + float d2 = abs(st.t - (0.5 + halfWidth)); + dist = min(d1, d2); + } + else + { + float d1 = czm_infinity; + if (st.t < 0.5 - halfWidth && st.t > 0.5 + halfWidth) + { + d1 = abs(st.s - base); + } + float d2 = abs(st.t - ptOnUpperLine); + float d3 = abs(st.t - ptOnLowerLine); + dist = min(min(d1, d2), d3); + } + + vec4 outsideColor = vec4(0.0); + vec4 currentColor = mix(outsideColor, color, clamp(s + t, 0.0, 1.0)); + vec4 outColor = czm_antialias(outsideColor, color, currentColor, dist); + + outColor = czm_gammaCorrect(outColor); + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + return material; +} +`;var F9t=y(C(),1),Y1=`uniform vec4 color; +uniform vec4 gapColor; +uniform float dashLength; +uniform float dashPattern; +in float v_polylineAngle; + +const float maskLength = 16.0; + +mat2 rotate(float rad) { + float c = cos(rad); + float s = sin(rad); + return mat2( + c, s, + -s, c + ); +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 pos = rotate(v_polylineAngle) * gl_FragCoord.xy; + + // Get the relative position within the dash from 0 to 1 + float dashPosition = fract(pos.x / (dashLength * czm_pixelRatio)); + // Figure out the mask index. + float maskIndex = floor(dashPosition * maskLength); + // Test the bit mask. + float maskTest = floor(dashPattern / pow(2.0, maskIndex)); + vec4 fragColor = (mod(maskTest, 2.0) < 1.0) ? gapColor : color; + if (fragColor.a < 0.005) { // matches 0/255 and 1/255 + discard; + } + + fragColor = czm_gammaCorrect(fragColor); + material.emission = fragColor.rgb; + material.alpha = fragColor.a; + return material; +} +`;var M9t=y(C(),1),O1=`uniform vec4 color; +uniform float glowPower; +uniform float taperPower; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + float glow = glowPower / abs(st.t - 0.5) - (glowPower / 0.5); + + if (taperPower <= 0.99999) { + glow *= min(1.0, taperPower / (0.5 - st.s * 0.5) - (taperPower / 0.5)); + } + + vec4 fragColor; + fragColor.rgb = max(vec3(glow - 1.0 + color.rgb), color.rgb); + fragColor.a = clamp(0.0, 1.0, glow) * color.a; + fragColor = czm_gammaCorrect(fragColor); + + material.emission = fragColor.rgb; + material.alpha = fragColor.a; + + return material; +} +`;var N9t=y(C(),1),H1=`uniform vec4 color; +uniform vec4 outlineColor; +uniform float outlineWidth; + +in float v_width; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + float halfInteriorWidth = 0.5 * (v_width - outlineWidth) / v_width; + float b = step(0.5 - halfInteriorWidth, st.t); + b *= 1.0 - step(0.5 + halfInteriorWidth, st.t); + + // Find the distance from the closest separator (region between two colors) + float d1 = abs(st.t - (0.5 - halfInteriorWidth)); + float d2 = abs(st.t - (0.5 + halfInteriorWidth)); + float dist = min(d1, d2); + + vec4 currentColor = mix(outlineColor, color, b); + vec4 outColor = czm_antialias(outlineColor, color, currentColor, dist); + outColor = czm_gammaCorrect(outColor); + + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + + return material; +} +`;var Q9t=y(C(),1),z1=`uniform vec4 color; +uniform vec4 rimColor; +uniform float width; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + // See http://www.fundza.com/rman_shaders/surface/fake_rim/fake_rim1.html + float d = 1.0 - dot(materialInput.normalEC, normalize(materialInput.positionToEyeEC)); + float s = smoothstep(1.0 - width, 1.0, d); + + vec4 outColor = czm_gammaCorrect(color); + vec4 outRimColor = czm_gammaCorrect(rimColor); + + material.diffuse = outColor.rgb; + material.emission = outRimColor.rgb * s; + material.alpha = mix(outColor.a, outRimColor.a, s); + + return material; +} +`;var k9t=y(C(),1),K1=`uniform sampler2D image; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + vec4 rampColor = texture(image, vec2(materialInput.slope / (czm_pi / 2.0), 0.5)); + rampColor = czm_gammaCorrect(rampColor); + material.diffuse = rampColor.rgb; + material.alpha = rampColor.a; + return material; +} +`;var O9t=y(C(),1),J1=`uniform vec4 evenColor; +uniform vec4 oddColor; +uniform float offset; +uniform float repeat; +uniform bool horizontal; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + // Based on the Stripes Fragment Shader in the Orange Book (11.1.2) + float coord = mix(materialInput.st.s, materialInput.st.t, float(horizontal)); + float value = fract((coord - offset) * (repeat * 0.5)); + float dist = min(value, min(abs(value - 0.5), 1.0 - value)); + + vec4 currentColor = mix(evenColor, oddColor, step(0.5, value)); + vec4 color = czm_antialias(evenColor, oddColor, currentColor, dist); + color = czm_gammaCorrect(color); + + material.diffuse = color.rgb; + material.alpha = color.a; + + return material; +} +`;var z9t=y(C(),1),j1=`uniform vec4 waterColor; +uniform vec4 landColor; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec4 outColor = mix(landColor, waterColor, materialInput.waterMask); + outColor = czm_gammaCorrect(outColor); + + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + + return material; +} +`;var J9t=y(C(),1),q1=`// Thanks for the contribution Jonas +// http://29a.ch/2012/7/19/webgl-terrain-rendering-water-fog + +uniform sampler2D specularMap; +uniform sampler2D normalMap; +uniform vec4 baseWaterColor; +uniform vec4 blendColor; +uniform float frequency; +uniform float animationSpeed; +uniform float amplitude; +uniform float specularIntensity; +uniform float fadeFactor; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + float time = czm_frameNumber * animationSpeed; + + // fade is a function of the distance from the fragment and the frequency of the waves + float fade = max(1.0, (length(materialInput.positionToEyeEC) / 10000000000.0) * frequency * fadeFactor); + + float specularMapValue = texture(specularMap, materialInput.st).r; + + // note: not using directional motion at this time, just set the angle to 0.0; + vec4 noise = czm_getWaterNoise(normalMap, materialInput.st * frequency, time, 0.0); + vec3 normalTangentSpace = noise.xyz * vec3(1.0, 1.0, (1.0 / amplitude)); + + // fade out the normal perturbation as we move further from the water surface + normalTangentSpace.xy /= fade; + + // attempt to fade out the normal perturbation as we approach non water areas (low specular map value) + normalTangentSpace = mix(vec3(0.0, 0.0, 50.0), normalTangentSpace, specularMapValue); + + normalTangentSpace = normalize(normalTangentSpace); + + // get ratios for alignment of the new normal vector with a vector perpendicular to the tangent plane + float tsPerturbationRatio = clamp(dot(normalTangentSpace, vec3(0.0, 0.0, 1.0)), 0.0, 1.0); + + // fade out water effect as specular map value decreases + material.alpha = mix(blendColor.a, baseWaterColor.a, specularMapValue) * specularMapValue; + + // base color is a blend of the water and non-water color based on the value from the specular map + // may need a uniform blend factor to better control this + material.diffuse = mix(blendColor.rgb, baseWaterColor.rgb, specularMapValue); + + // diffuse highlights are based on how perturbed the normal is + material.diffuse += (0.1 * tsPerturbationRatio); + + material.diffuse = material.diffuse; + + material.normal = normalize(materialInput.tangentToEyeMatrix * normalTangentSpace); + + material.specular = specularIntensity; + material.shininess = 10.0; + + return material; +} +`;function Je(e){this.type=void 0,this.shaderSource=void 0,this.materials=void 0,this.uniforms=void 0,this._uniforms=void 0,this.translucent=void 0,this._minificationFilter=e.minificationFilter??en.LINEAR,this._magnificationFilter=e.magnificationFilter??pi.LINEAR,this._strict=void 0,this._template=void 0,this._count=void 0,this._texturePaths={},this._loadedImages=[],this._loadedCubeMaps=[],this._textures={},this._updateFunctions=[],this._defaultTexture=void 0,_Ze(e,this),Object.defineProperties(this,{type:{value:this.type,writable:!1}}),l(Je._uniformList[this.type])||(Je._uniformList[this.type]=Object.keys(this._uniforms))}Je._uniformList={};Je.fromType=function(e,t){let n=new Je({fabric:{type:e}});if(l(t))for(let i in t)t.hasOwnProperty(i)&&(n.uniforms[i]=t[i]);return n};Je.prototype.isTranslucent=function(){if(l(this.translucent))return typeof this.translucent=="function"?this.translucent():this.translucent;let e=!0,t=this._translucentFunctions,n=t.length;for(let i=0;i-1)return!0;return!1}function VZe(e){let t=e._template.components,n=e._template.source;if(l(n))e.shaderSource+=`${n} +`;else{if(e.shaderSource+=`czm_material czm_getMaterial(czm_materialInput materialInput) +{ +`,e.shaderSource+=`czm_material material = czm_getDefaultMaterial(materialInput); +`,l(t)){let i=Object.keys(e._template.materials).length>0;for(let o in t)if(t.hasOwnProperty(o))if(o==="diffuse"||o==="emission"){let s=i&&RZe(t[o],e)?t[o]:`czm_gammaCorrect(${t[o]})`;e.shaderSource+=`material.${o} = ${s}; +`}else o==="alpha"?e.shaderSource+=`material.alpha = ${t.alpha}; +`:e.shaderSource+=`material.${o} = ${t[o]}; +`}e.shaderSource+=`return material; +} +`}}var jne={mat2:Qi,mat3:$,mat4:X},GZe=/\.ktx2$/i;function ZZe(e){let t;return function(n,i){let o=n.uniforms,r=o[e],s=t!==r,a=!l(r)||r===Je.DefaultImageId;t=r;let c=n._textures[e],d,u;if(r instanceof HTMLVideoElement){if(r.readyState>=2){if(s&&l(c)&&(c!==i.defaultTexture&&c.destroy(),c=void 0),!l(c)||c===i.defaultTexture){let p=new sn({minificationFilter:n._minificationFilter,magnificationFilter:n._magnificationFilter});c=new Wt({context:i,source:r,sampler:p}),n._textures[e]=c;return}c.copyFrom({source:r})}else l(c)||(n._textures[e]=i.defaultTexture);return}if(r instanceof Wt&&r!==c){n._texturePaths[e]=void 0;let p=n._textures[e];l(p)&&p!==n._defaultTexture&&p.destroy(),n._textures[e]=r,d=`${e}Dimensions`,o.hasOwnProperty(d)&&(u=o[d],u.x=r._width,u.y=r._height);return}if(s&&l(c)&&a&&(c!==n._defaultTexture&&c.destroy(),c=void 0),l(c)||(n._texturePaths[e]=void 0,c=n._textures[e]=n._defaultTexture,d=`${e}Dimensions`,o.hasOwnProperty(d)&&(u=o[d],u.x=c._width,u.y=c._height)),a)return;let h=r instanceof Ve;if(!l(n._texturePaths[e])||h&&r.url!==n._texturePaths[e].url||!h&&r!==n._texturePaths[e]){if(typeof r=="string"||h){let p=h?r:Ve.createIfNeeded(r),g;GZe.test(p.url)?g=Kl(p.url):g=p.fetchImage(),Promise.resolve(g).then(function(f){n._loadedImages.push({id:e,image:f})}).catch(function(){l(c)&&c!==n._defaultTexture&&c.destroy(),n._textures[e]=n._defaultTexture})}else(r instanceof HTMLCanvasElement||r instanceof HTMLImageElement||r instanceof ImageBitmap||r instanceof OffscreenCanvas)&&n._loadedImages.push({id:e,image:r});n._texturePaths[e]=r}}}function BZe(e){return function(t,n){let i=t.uniforms[e];if(i instanceof Pr){let r=t._textures[e];r!==t._defaultTexture&&r.destroy(),t._texturePaths[e]=void 0,t._textures[e]=i;return}if(l(t._textures[e])||(t._texturePaths[e]=void 0,t._textures[e]=n.defaultCubeMap),i===Je.DefaultCubeMapId)return;let o=i.positiveX+i.negativeX+i.positiveY+i.negativeY+i.positiveZ+i.negativeZ;if(o!==t._texturePaths[e]){let r=[Ve.createIfNeeded(i.positiveX).fetchImage(),Ve.createIfNeeded(i.negativeX).fetchImage(),Ve.createIfNeeded(i.positiveY).fetchImage(),Ve.createIfNeeded(i.negativeY).fetchImage(),Ve.createIfNeeded(i.positiveZ).fetchImage(),Ve.createIfNeeded(i.negativeZ).fetchImage()];Promise.all(r).then(function(s){t._loadedCubeMaps.push({id:e,images:s})}),t._texturePaths[e]=o}}}function wZe(e){let t=e._template.uniforms;for(let n in t)t.hasOwnProperty(n)&&qne(e,n)}function qne(e,t){let n=e._strict,i=e._template.uniforms,o=i[t],r=XZe(o),s;if(r==="channels")s=$1(e,t,o,!1);else{if(r==="sampler2D"){let d=`${t}Dimensions`;FZe(e,d)>0&&(i[d]={type:"ivec3",x:1,y:1},qne(e,d))}if(!new RegExp(`uniform\\s+${r}\\s+${t}\\s*;`).test(e.shaderSource)){let d=`uniform ${r} ${t};`;e.shaderSource=d+e.shaderSource}let c=`${t}_${e._count++}`;if(s=$1(e,t,c),e.uniforms[t]=o,r==="sampler2D")e._uniforms[c]=function(){return e._textures[t]},e._updateFunctions.push(ZZe(t));else if(r==="samplerCube")e._uniforms[c]=function(){return e._textures[t]},e._updateFunctions.push(BZe(t));else if(r.indexOf("mat")!==-1){let d=new jne[r];e._uniforms[c]=function(){return jne[r].fromColumnMajorArray(e.uniforms[t],d)}}else e._uniforms[c]=function(){return e.uniforms[t]}}}function XZe(e){let t=e.type;if(!l(t)){let n=typeof e;if(n==="number")t="float";else if(n==="boolean")t="bool";else if(n==="string"||e instanceof Ve||e instanceof HTMLCanvasElement||e instanceof HTMLImageElement||e instanceof ImageBitmap||e instanceof OffscreenCanvas)/^([rgba]){1,4}$/i.test(e)?t="channels":e===Je.DefaultCubeMapId?t="samplerCube":t="sampler2D";else if(n==="object")if(Array.isArray(e))(e.length===4||e.length===9||e.length===16)&&(t=`mat${Math.sqrt(e.length)}`);else{let i=0;for(let o in e)e.hasOwnProperty(o)&&(i+=1);i>=2&&i<=4?t=`vec${i}`:i===6&&(t="samplerCube")}}return t}function WZe(e){let t=e._strict,n=e._template.materials;for(let i in n)if(n.hasOwnProperty(i)){let o=new Je({strict:t,fabric:n[i],count:e._count});e._count=o._count,e._uniforms=Lt(e._uniforms,o._uniforms,!0),e.materials[i]=o,e._translucentFunctions=e._translucentFunctions.concat(o._translucentFunctions);let r="czm_getMaterial",s=`${r}_${e._count++}`;$1(o,r,s),e.shaderSource=o.shaderSource+e.shaderSource;let a=`${s}(materialInput)`,c=$1(e,i,a)}}function $1(e,t,n,i){i=i??!0;let o=0,r="([\\w])?",s=`([\\w${i?".":""}])?`,a=new RegExp(s+t+r,"g");return e.shaderSource=e.shaderSource.replace(a,function(c,d,u){return d||u?c:(o+=1,n)}),o}function FZe(e,t,n){return $1(e,t,t,n)}Je._materialCache={_materials:{},addMaterial:function(e,t){this._materials[e]=t},getMaterial:function(e){return this._materials[e]}};Je.DefaultImageId="czm_defaultImage";Je.DefaultCubeMapId="czm_defaultCubeMap";Je.ColorType="Color";Je._materialCache.addMaterial(Je.ColorType,{fabric:{type:Je.ColorType,uniforms:{color:new U(1,0,0,.5)},components:{diffuse:"color.rgb",alpha:"color.a"}},translucent:function(e){return e.uniforms.color.alpha<1}});Je.ImageType="Image";Je._materialCache.addMaterial(Je.ImageType,{fabric:{type:Je.ImageType,uniforms:{image:Je.DefaultImageId,repeat:new D(1,1),color:new U(1,1,1,1)},components:{diffuse:"texture(image, fract(repeat * materialInput.st)).rgb * color.rgb",alpha:"texture(image, fract(repeat * materialInput.st)).a * color.a"}},translucent:function(e){return e.uniforms.color.alpha<1}});Je.DiffuseMapType="DiffuseMap";Je._materialCache.addMaterial(Je.DiffuseMapType,{fabric:{type:Je.DiffuseMapType,uniforms:{image:Je.DefaultImageId,channels:"rgb",repeat:new D(1,1)},components:{diffuse:"texture(image, fract(repeat * materialInput.st)).channels"}},translucent:!1});Je.AlphaMapType="AlphaMap";Je._materialCache.addMaterial(Je.AlphaMapType,{fabric:{type:Je.AlphaMapType,uniforms:{image:Je.DefaultImageId,channel:"a",repeat:new D(1,1)},components:{alpha:"texture(image, fract(repeat * materialInput.st)).channel"}},translucent:!0});Je.SpecularMapType="SpecularMap";Je._materialCache.addMaterial(Je.SpecularMapType,{fabric:{type:Je.SpecularMapType,uniforms:{image:Je.DefaultImageId,channel:"r",repeat:new D(1,1)},components:{specular:"texture(image, fract(repeat * materialInput.st)).channel"}},translucent:!1});Je.EmissionMapType="EmissionMap";Je._materialCache.addMaterial(Je.EmissionMapType,{fabric:{type:Je.EmissionMapType,uniforms:{image:Je.DefaultImageId,channels:"rgb",repeat:new D(1,1)},components:{emission:"texture(image, fract(repeat * materialInput.st)).channels"}},translucent:!1});Je.BumpMapType="BumpMap";Je._materialCache.addMaterial(Je.BumpMapType,{fabric:{type:Je.BumpMapType,uniforms:{image:Je.DefaultImageId,channel:"r",strength:.8,repeat:new D(1,1)},source:W1},translucent:!1});Je.NormalMapType="NormalMap";Je._materialCache.addMaterial(Je.NormalMapType,{fabric:{type:Je.NormalMapType,uniforms:{image:Je.DefaultImageId,channels:"rgb",strength:.8,repeat:new D(1,1)},source:U1},translucent:!1});Je.GridType="Grid";Je._materialCache.addMaterial(Je.GridType,{fabric:{type:Je.GridType,uniforms:{color:new U(0,1,0,1),cellAlpha:.1,lineCount:new D(8,8),lineThickness:new D(1,1),lineOffset:new D(0,0)},source:Q1},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.cellAlpha<1}});Je.StripeType="Stripe";Je._materialCache.addMaterial(Je.StripeType,{fabric:{type:Je.StripeType,uniforms:{horizontal:!0,evenColor:new U(1,1,1,.5),oddColor:new U(0,0,1,.5),offset:0,repeat:5},source:J1},translucent:function(e){let t=e.uniforms;return t.evenColor.alpha<1||t.oddColor.alpha<1}});Je.CheckerboardType="Checkerboard";Je._materialCache.addMaterial(Je.CheckerboardType,{fabric:{type:Je.CheckerboardType,uniforms:{lightColor:new U(1,1,1,.5),darkColor:new U(0,0,0,.5),repeat:new D(5,5)},source:F1},translucent:function(e){let t=e.uniforms;return t.lightColor.alpha<1||t.darkColor.alpha<1}});Je.DotType="Dot";Je._materialCache.addMaterial(Je.DotType,{fabric:{type:Je.DotType,uniforms:{lightColor:new U(1,1,0,.75),darkColor:new U(0,1,1,.75),repeat:new D(5,5)},source:P1},translucent:function(e){let t=e.uniforms;return t.lightColor.alpha<1||t.darkColor.alpha<1}});Je.WaterType="Water";Je._materialCache.addMaterial(Je.WaterType,{fabric:{type:Je.WaterType,uniforms:{baseWaterColor:new U(.2,.3,.6,1),blendColor:new U(0,1,.699,1),specularMap:Je.DefaultImageId,normalMap:Je.DefaultImageId,frequency:10,animationSpeed:.01,amplitude:1,specularIntensity:.5,fadeFactor:1},source:q1},translucent:function(e){let t=e.uniforms;return t.baseWaterColor.alpha<1||t.blendColor.alpha<1}});Je.RimLightingType="RimLighting";Je._materialCache.addMaterial(Je.RimLightingType,{fabric:{type:Je.RimLightingType,uniforms:{color:new U(1,0,0,.7),rimColor:new U(1,1,1,.4),width:.3},source:z1},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.rimColor.alpha<1}});Je.FadeType="Fade";Je._materialCache.addMaterial(Je.FadeType,{fabric:{type:Je.FadeType,uniforms:{fadeInColor:new U(1,0,0,1),fadeOutColor:new U(0,0,0,0),maximumDistance:.5,repeat:!0,fadeDirection:{x:!0,y:!0},time:new D(.5,.5)},source:D1},translucent:function(e){let t=e.uniforms;return t.fadeInColor.alpha<1||t.fadeOutColor.alpha<1}});Je.PolylineArrowType="PolylineArrow";Je._materialCache.addMaterial(Je.PolylineArrowType,{fabric:{type:Je.PolylineArrowType,uniforms:{color:new U(1,1,1,1)},source:k1},translucent:!0});Je.PolylineDashType="PolylineDash";Je._materialCache.addMaterial(Je.PolylineDashType,{fabric:{type:Je.PolylineDashType,uniforms:{color:new U(1,0,1,1),gapColor:new U(0,0,0,0),dashLength:16,dashPattern:255},source:Y1},translucent:!0});Je.PolylineGlowType="PolylineGlow";Je._materialCache.addMaterial(Je.PolylineGlowType,{fabric:{type:Je.PolylineGlowType,uniforms:{color:new U(0,.5,1,1),glowPower:.25,taperPower:1},source:O1},translucent:!0});Je.PolylineOutlineType="PolylineOutline";Je._materialCache.addMaterial(Je.PolylineOutlineType,{fabric:{type:Je.PolylineOutlineType,uniforms:{color:new U(1,1,1,1),outlineColor:new U(1,0,0,1),outlineWidth:1},source:H1},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.outlineColor.alpha<1}});Je.ElevationContourType="ElevationContour";Je._materialCache.addMaterial(Je.ElevationContourType,{fabric:{type:Je.ElevationContourType,uniforms:{spacing:100,color:new U(1,0,0,1),width:1},source:v1},translucent:!1});Je.ElevationRampType="ElevationRamp";Je._materialCache.addMaterial(Je.ElevationRampType,{fabric:{type:Je.ElevationRampType,uniforms:{image:Je.DefaultImageId,minimumHeight:0,maximumHeight:1e4},source:N1},translucent:!1});Je.SlopeRampMaterialType="SlopeRamp";Je._materialCache.addMaterial(Je.SlopeRampMaterialType,{fabric:{type:Je.SlopeRampMaterialType,uniforms:{image:Je.DefaultImageId},source:K1},translucent:!1});Je.AspectRampMaterialType="AspectRamp";Je._materialCache.addMaterial(Je.AspectRampMaterialType,{fabric:{type:Je.AspectRampMaterialType,uniforms:{image:Je.DefaultImageId},source:X1},translucent:!1});Je.ElevationBandType="ElevationBand";Je._materialCache.addMaterial(Je.ElevationBandType,{fabric:{type:Je.ElevationBandType,uniforms:{heights:Je.DefaultImageId,colors:Je.DefaultImageId},source:M1},translucent:!0});Je.WaterMaskType="WaterMask";Je._materialCache.addMaterial(Je.WaterMaskType,{fabric:{type:Je.WaterMaskType,source:j1,uniforms:{waterColor:new U(1,1,1,1),landColor:new U(0,0,0,0)}},translucent:!1});var so=Je;function eC(e){e=e??Y.EMPTY_OBJECT;let t=e.translucent??!0,n=e.closed??!1,i=e.materialSupport??eC.MaterialSupport.TEXTURED;this.material=l(e.material)?e.material:so.fromType(so.ColorType),this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??i.vertexShaderSource,this._fragmentShaderSource=e.fragmentShaderSource??i.fragmentShaderSource,this._renderState=go.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._materialSupport=i,this._vertexFormat=i.vertexFormat,this._flat=e.flat??!1,this._faceForward=e.faceForward??!n}Object.defineProperties(eC.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},materialSupport:{get:function(){return this._materialSupport}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}});eC.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;eC.prototype.isTranslucent=go.prototype.isTranslucent;eC.prototype.getRenderState=go.prototype.getRenderState;eC.MaterialSupport={BASIC:Object.freeze({vertexFormat:we.POSITION_AND_NORMAL,vertexShaderSource:y1,fragmentShaderSource:b1}),TEXTURED:Object.freeze({vertexFormat:we.POSITION_NORMAL_AND_ST,vertexShaderSource:x1,fragmentShaderSource:C1}),ALL:Object.freeze({vertexFormat:we.ALL,vertexShaderSource:g1,fragmentShaderSource:A1})};var Io=eC;var uQt=y(C(),1);var JDt=y(C(),1),eR=`in vec3 v_positionEC; +in vec3 v_normalEC; +in vec4 v_color; + +void main() +{ + vec3 positionToEyeEC = -v_positionEC; + + vec3 normalEC = normalize(v_normalEC); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + vec4 color = czm_gammaCorrect(v_color); + + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.positionToEyeEC = positionToEyeEC; + czm_material material = czm_getDefaultMaterial(materialInput); + material.diffuse = color.rgb; + material.alpha = color.a; + + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +} +`;var qDt=y(C(),1),tR=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 normal; +in vec4 color; +in float batchId; + +out vec3 v_positionEC; +out vec3 v_normalEC; +out vec4 v_color; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_normalEC = czm_normal * normal; // normal in eye coordinates + v_color = color; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;var eQt=y(C(),1),tC=`in vec4 v_color; + +void main() +{ + out_FragColor = czm_gammaCorrect(v_color); +} +`;var nQt=y(C(),1),nR=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec4 color; +in float batchId; + +out vec4 v_color; + +void main() +{ + vec4 p = czm_computePosition(); + + v_color = color; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;function eA(e){e=e??Y.EMPTY_OBJECT;let t=e.translucent??!0,n=e.closed??!1,i=e.flat??!1,o=i?nR:tR,r=i?tC:eR,s=i?eA.FLAT_VERTEX_FORMAT:eA.VERTEX_FORMAT;this.material=void 0,this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??o,this._fragmentShaderSource=e.fragmentShaderSource??r,this._renderState=go.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=s,this._flat=i,this._faceForward=e.faceForward??!n}Object.defineProperties(eA.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}});eA.VERTEX_FORMAT=we.POSITION_AND_NORMAL;eA.FLAT_VERTEX_FORMAT=we.POSITION_ONLY;eA.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;eA.prototype.isTranslucent=go.prototype.isTranslucent;eA.prototype.getRenderState=go.prototype.getRenderState;var yn=eA;var yQt=y(C(),1);function J_(e){this._definitionChanged=new Ce,this._color=void 0,this._colorSubscription=void 0,this.color=e}Object.defineProperties(J_.prototype,{isConstant:{get:function(){return z.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:fe("color")});J_.prototype.getType=function(e){return"Color"};var PZe=new j;J_.prototype.getValue=function(e,t){return l(e)||(e=j.now(PZe)),l(t)||(t={}),t.color=z.getValueOrClonedDefault(this._color,e,U.WHITE,t.color),t};J_.prototype.equals=function(e){return this===e||e instanceof J_&&z.equals(this._color,e._color)};var qt=J_;var O8t=y(C(),1);var T8t=y(C(),1);var NQt=y(C(),1);var RQt=y(C(),1);function xb(e){e=e??Y.EMPTY_OBJECT,this._ellipsoid=e.ellipsoid??ie.default,this._rectangle=e.rectangle??le.MAX_VALUE,this._projection=new Di(this._ellipsoid),this._numberOfLevelZeroTilesX=e.numberOfLevelZeroTilesX??2,this._numberOfLevelZeroTilesY=e.numberOfLevelZeroTilesY??1}Object.defineProperties(xb.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}});xb.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<=o&&(d=o-1);let u=(i.north-e.latitude)/a|0;return u>=r&&(u=r-1),l(n)?(n.x=d,n.y=u,n):new D(d,u)};var ao=xb;var $ne=new m,eie=new m,tie=new ge,aH=new m,MZe=new m,nie=new ue,vZe=new ao,iR=[new ge,new ge,new ge,new ge],oR=new D,As={};As.initialize=function(){let e=As._initPromise;return l(e)||(e=Ve.fetchJson(hn("Assets/approximateTerrainHeights.json")).then(function(t){As._terrainHeights=t}),As._initPromise=e),e};As.getMinimumMaximumHeights=function(e,t){t=t??ie.default;let n=iie(e),i=As._defaultMinTerrainHeight,o=As._defaultMaxTerrainHeight;if(l(n)){let r=`${n.level}-${n.x}-${n.y}`,s=As._terrainHeights[r];l(s)&&(i=s[0],o=s[1]),t.cartographicToCartesian(le.northeast(e,tie),$ne),t.cartographicToCartesian(le.southwest(e,tie),eie),m.midpoint(eie,$ne,aH);let a=t.scaleToGeodeticSurface(aH,MZe);if(l(a)){let c=m.distance(aH,a);i=Math.min(i,-c)}else i=As._defaultMinTerrainHeight}return i=Math.max(As._defaultMinTerrainHeight,i),{minimumTerrainHeight:i,maximumTerrainHeight:o}};As.getBoundingSphere=function(e,t){t=t??ie.default;let n=iie(e),i=As._defaultMaxTerrainHeight;if(l(n)){let r=`${n.level}-${n.x}-${n.y}`,s=As._terrainHeights[r];l(s)&&(i=s[1])}let o=ue.fromRectangle3D(e,t,0);return ue.fromRectangle3D(e,t,i,nie),ue.union(o,nie,o)};function iie(e){ge.fromRadians(e.east,e.north,0,iR[0]),ge.fromRadians(e.west,e.north,0,iR[1]),ge.fromRadians(e.east,e.south,0,iR[2]),ge.fromRadians(e.west,e.south,0,iR[3]);let t=0,n=0,i=0,o=0,r=As._terrainHeightsMaxLevel,s;for(s=0;s<=r;++s){let a=!1;for(let c=0;c<4;++c){let d=iR[c];if(vZe.positionToTileXY(d,s,oR),c===0)i=oR.x,o=oR.y;else if(i!==oR.x||o!==oR.y){a=!0;break}}if(a)break;t=i,n=o}if(s!==0)return{x:t,y:n,level:s>r?r:s-1}}As._terrainHeightsMaxLevel=6;As._defaultMaxTerrainHeight=9e3;As._defaultMinTerrainHeight=-1e5;As._terrainHeights=void 0;As._initPromise=void 0;Object.defineProperties(As,{initialized:{get:function(){return l(As._terrainHeights)}}});var Si=As;var C5t=y(C(),1);var o5t=y(C(),1);var YQt=y(C(),1);function al(e,t,n){this.minimum=m.clone(e??m.ZERO),this.maximum=m.clone(t??m.ZERO),l(n)?n=m.clone(n):n=m.midpoint(this.minimum,this.maximum,new m),this.center=n}al.fromCorners=function(e,t,n){return l(n)||(n=new al),n.minimum=m.clone(e,n.minimum),n.maximum=m.clone(t,n.maximum),n.center=m.midpoint(e,t,n.center),n};al.fromPoints=function(e,t){if(l(t)||(t=new al),!l(e)||e.length===0)return t.minimum=m.clone(m.ZERO,t.minimum),t.maximum=m.clone(m.ZERO,t.maximum),t.center=m.clone(m.ZERO,t.center),t;let n=e[0].x,i=e[0].y,o=e[0].z,r=e[0].x,s=e[0].y,a=e[0].z,c=e.length;for(let h=1;h0?on.INSIDE:r+o<0?on.OUTSIDE:on.INTERSECTING};al.prototype.clone=function(e){return al.clone(this,e)};al.prototype.intersectPlane=function(e){return al.intersectPlane(this,e)};al.prototype.equals=function(e){return al.equals(this,e)};var Ib=al;var cH=new ce;function wf(e,t){t=t??ie.default,e=t.scaleToGeodeticSurface(e);let n=Dt.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=m.fromCartesian4(X.getColumn(n,0,cH)),this._yAxis=m.fromCartesian4(X.getColumn(n,1,cH));let i=m.fromCartesian4(X.getColumn(n,2,cH));this._plane=An.fromPointNormal(e,i)}Object.defineProperties(wf.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var NZe=new Ib;wf.fromPoints=function(e,t){let n=Ib.fromPoints(e,NZe);return new wf(n.center,t)};var oie=new En,_D=new m;wf.prototype.projectPointOntoPlane=function(e,t){let n=oie;n.origin=e,m.normalize(e,n.direction);let i=fi.rayPlane(n,this._plane,_D);if(l(i)||(m.negate(n.direction,n.direction),i=fi.rayPlane(n,this._plane,_D)),l(i)){let o=m.subtract(i,this._origin,i),r=m.dot(this._xAxis,o),s=m.dot(this._yAxis,o);return l(t)?(t.x=r,t.y=s,t):new D(r,s)}};wf.prototype.projectPointsOntoPlane=function(e,t){l(t)||(t=[]);let n=0,i=e.length;for(let o=0;o0?0:B.latitude,T=ge.fromRadians(P,e.north,n,qZe),L=ge.fromRadians(e.west,e.north,n,$Ze),V=ge.fromRadians(e.west,A,n,eBe),W=ge.fromRadians(e.west,e.south,n,tBe),M=ge.fromRadians(P,e.south,n,nBe),Q=i.cartographicToCartesian(T,iBe),N=i.cartographicToCartesian(L,aie),k=i.cartographicToCartesian(V,oBe),v=i.cartographicToCartesian(W,cie),O=i.cartographicToCartesian(M,rBe),H=F.projectPointToNearestOnPlane(Q,sBe),ee=F.projectPointToNearestOnPlane(N,aBe),K=F.projectPointToNearestOnPlane(k,cBe),te=F.projectPointToNearestOnPlane(v,lBe),q=F.projectPointToNearestOnPlane(O,dBe);return r=Math.min(ee.x,K.x,te.x),s=-r,c=Math.max(ee.y,H.y),a=Math.min(te.y,q.y),L.height=W.height=t,N=i.cartographicToCartesian(L,aie),v=i.cartographicToCartesian(W,cie),d=Math.min(An.getPointDistance(h,N),An.getPointDistance(h,v)),u=n,rie(F.origin,F.xAxis,F.yAxis,F.zAxis,r,s,a,c,d,u,o)}let p=e.south>0,g=e.north<0,f=p?e.south:g?e.north:0,b=le.center(e,sie).longitude,x=m.fromRadians(b,f,n,i,uBe);x.z=0;let _=Math.abs(x.x)=c?on.INSIDE:on.INTERSECTING};var uie=new m,mie=new m,hie=new m,CBe=new m,lie=new m,xBe=new m;$i.distanceSquaredTo=function(e,t){let n=m.subtract(t,e.center,die),i=e.halfAxes,o=$.getColumn(i,0,uie),r=$.getColumn(i,1,mie),s=$.getColumn(i,2,hie),a=m.magnitude(o),c=m.magnitude(r),d=m.magnitude(s),u=!0,h=!0,p=!0;a>0?m.divideByScalar(o,a,o):u=!1,c>0?m.divideByScalar(r,c,r):h=!1,d>0?m.divideByScalar(s,d,s):p=!1;let g=!u+!h+!p,f,b,x;if(g===1){let S=o;f=r,b=s,h?p||(S=s,b=o):(S=r,f=o),x=m.cross(f,b,lie),S===o?o=x:S===r?r=x:S===s&&(s=x)}else if(g===2){f=o,h?f=r:p&&(f=s);let S=m.UNIT_Y;S.equalsEpsilon(f,Z.EPSILON3)&&(S=m.UNIT_X),b=m.cross(f,S,CBe),m.normalize(b,b),x=m.cross(f,b,lie),m.normalize(x,x),f===o?(r=b,s=x):f===r?(s=b,o=x):f===s&&(o=b,r=x)}else g===3&&(o=m.UNIT_X,r=m.UNIT_Y,s=m.UNIT_Z);let I=xBe;I.x=m.dot(n,o),I.y=m.dot(n,r),I.z=m.dot(n,s);let _=0,E;return I.x<-a?(E=I.x+a,_+=E*E):I.x>a&&(E=I.x-a,_+=E*E),I.y<-c?(E=I.y+c,_+=E*E):I.y>c&&(E=I.y-c,_+=E*E),I.z<-d?(E=I.z+d,_+=E*E):I.z>d&&(E=I.z-d,_+=E*E),_};var IBe=new m,_Be=new m;$i.computePlaneDistances=function(e,t,n,i){l(i)||(i=new oc);let o=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,s=e.center,a=e.halfAxes,c=$.getColumn(a,0,uie),d=$.getColumn(a,1,mie),u=$.getColumn(a,2,hie),h=m.add(c,d,IBe);m.add(h,u,h),m.add(h,s,h);let p=m.subtract(h,t,_Be),g=m.dot(n,p);return o=Math.min(g,o),r=Math.max(g,r),m.add(s,c,h),m.add(h,d,h),m.subtract(h,u,h),m.subtract(h,t,p),g=m.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),m.add(s,c,h),m.subtract(h,d,h),m.add(h,u,h),m.subtract(h,t,p),g=m.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),m.add(s,c,h),m.subtract(h,d,h),m.subtract(h,u,h),m.subtract(h,t,p),g=m.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),m.subtract(s,c,h),m.add(h,d,h),m.add(h,u,h),m.subtract(h,t,p),g=m.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),m.subtract(s,c,h),m.add(h,d,h),m.subtract(h,u,h),m.subtract(h,t,p),g=m.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),m.subtract(s,c,h),m.subtract(h,d,h),m.add(h,u,h),m.subtract(h,t,p),g=m.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),m.subtract(s,c,h),m.subtract(h,d,h),m.subtract(h,u,h),m.subtract(h,t,p),g=m.dot(n,p),o=Math.min(g,o),r=Math.max(g,r),i.start=o,i.stop=r,i};var EBe=new m,TBe=new m,SBe=new m;$i.computeCorners=function(e,t){l(t)||(t=[new m,new m,new m,new m,new m,new m,new m,new m]);let n=e.center,i=e.halfAxes,o=$.getColumn(i,0,EBe),r=$.getColumn(i,1,TBe),s=$.getColumn(i,2,SBe);return m.clone(n,t[0]),m.subtract(t[0],o,t[0]),m.subtract(t[0],r,t[0]),m.subtract(t[0],s,t[0]),m.clone(n,t[1]),m.subtract(t[1],o,t[1]),m.subtract(t[1],r,t[1]),m.add(t[1],s,t[1]),m.clone(n,t[2]),m.subtract(t[2],o,t[2]),m.add(t[2],r,t[2]),m.subtract(t[2],s,t[2]),m.clone(n,t[3]),m.subtract(t[3],o,t[3]),m.add(t[3],r,t[3]),m.add(t[3],s,t[3]),m.clone(n,t[4]),m.add(t[4],o,t[4]),m.subtract(t[4],r,t[4]),m.subtract(t[4],s,t[4]),m.clone(n,t[5]),m.add(t[5],o,t[5]),m.subtract(t[5],r,t[5]),m.add(t[5],s,t[5]),m.clone(n,t[6]),m.add(t[6],o,t[6]),m.add(t[6],r,t[6]),m.subtract(t[6],s,t[6]),m.clone(n,t[7]),m.add(t[7],o,t[7]),m.add(t[7],r,t[7]),m.add(t[7],s,t[7]),t};var LBe=new $;$i.computeTransformation=function(e,t){l(t)||(t=new X);let n=e.center,i=$.multiplyByUniformScale(e.halfAxes,2,LBe);return X.fromRotationTranslation(i,n,t)};var RBe=new ue;$i.isOccluded=function(e,t){let n=ue.fromOrientedBoundingBox(e,RBe);return!t.isBoundingSphereVisible(n)};$i.prototype.intersectPlane=function(e){return $i.intersectPlane(this,e)};$i.prototype.distanceSquaredTo=function(e){return $i.distanceSquaredTo(this,e)};$i.prototype.computePlaneDistances=function(e,t,n){return $i.computePlaneDistances(this,e,t,n)};$i.prototype.computeCorners=function(e){return $i.computeCorners(this,e)};$i.prototype.computeTransformation=function(e){return $i.computeTransformation(this,e)};$i.prototype.isOccluded=function(e){return $i.isOccluded(this,e)};$i.equals=function(e,t){return e===t||l(e)&&l(t)&&m.equals(e.center,t.center)&&$.equals(e.halfAxes,t.halfAxes)};$i.prototype.clone=function(e){return $i.clone(this,e)};$i.prototype.equals=function(e){return $i.equals(this,e)};var vn=$i;var T5t=y(C(),1);var ED={};ED.getHeight=function(e,t,n){return(e-n)*t+n};var VBe=new ge;ED.getPosition=function(e,t,n,i,o){let r=t.cartesianToCartographic(e,VBe);if(!l(r))return m.clone(e,o);let s=ED.getHeight(r.height,n,i);return m.fromRadians(r.longitude,r.latitude,s,t,o)};var Mr=ED;var a8t=y(C(),1);var G5t=y(C(),1);var vr={CULL:1,OCCLUDE:2,EXECUTE_IN_CLOSEST_FRUSTUM:4,DEBUG_SHOW_BOUNDING_VOLUME:8,CAST_SHADOWS:16,RECEIVE_SHADOWS:32,PICK_ONLY:64,DEPTH_FOR_TRANSLUCENT_CLASSIFICATION:128};function rR(e){e=e??Y.EMPTY_OBJECT,this._boundingVolume=e.boundingVolume,this._orientedBoundingBox=e.orientedBoundingBox,this._modelMatrix=e.modelMatrix,this._primitiveType=e.primitiveType??We.TRIANGLES,this._vertexArray=e.vertexArray,this._count=e.count,this._offset=e.offset??0,this._instanceCount=e.instanceCount??0,this._shaderProgram=e.shaderProgram,this._uniformMap=e.uniformMap,this._renderState=e.renderState,this._framebuffer=e.framebuffer,this._pass=e.pass,this._owner=e.owner,this._debugOverlappingFrustums=0,this._pickId=e.pickId,this._pickMetadataAllowed=e.pickMetadataAllowed===!0,this._pickedMetadataInfo=void 0,this._flags=0,this.cull=e.cull??!0,this.occlude=e.occlude??!0,this.executeInClosestFrustum=e.executeInClosestFrustum??!1,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.castShadows=e.castShadows??!1,this.receiveShadows=e.receiveShadows??!1,this.pickOnly=e.pickOnly??!1,this.depthForTranslucentClassification=e.depthForTranslucentClassification??!1,this.dirty=!0,this.lastDirtyTime=0,this.derivedCommands={}}function Vc(e,t){return(e._flags&t)===t}function _b(e,t,n){n?e._flags|=t:e._flags&=~t}Object.defineProperties(rR.prototype,{boundingVolume:{get:function(){return this._boundingVolume},set:function(e){this._boundingVolume!==e&&(this._boundingVolume=e,this.dirty=!0)}},orientedBoundingBox:{get:function(){return this._orientedBoundingBox},set:function(e){this._orientedBoundingBox!==e&&(this._orientedBoundingBox=e,this.dirty=!0)}},cull:{get:function(){return Vc(this,vr.CULL)},set:function(e){Vc(this,vr.CULL)!==e&&(_b(this,vr.CULL,e),this.dirty=!0)}},occlude:{get:function(){return Vc(this,vr.OCCLUDE)},set:function(e){Vc(this,vr.OCCLUDE)!==e&&(_b(this,vr.OCCLUDE,e),this.dirty=!0)}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix!==e&&(this._modelMatrix=e,this.dirty=!0)}},primitiveType:{get:function(){return this._primitiveType},set:function(e){this._primitiveType!==e&&(this._primitiveType=e,this.dirty=!0)}},vertexArray:{get:function(){return this._vertexArray},set:function(e){this._vertexArray!==e&&(this._vertexArray=e,this.dirty=!0)}},count:{get:function(){return this._count},set:function(e){this._count!==e&&(this._count=e,this.dirty=!0)}},offset:{get:function(){return this._offset},set:function(e){this._offset!==e&&(this._offset=e,this.dirty=!0)}},instanceCount:{get:function(){return this._instanceCount},set:function(e){this._instanceCount!==e&&(this._instanceCount=e,this.dirty=!0)}},shaderProgram:{get:function(){return this._shaderProgram},set:function(e){this._shaderProgram!==e&&(this._shaderProgram=e,this.dirty=!0)}},castShadows:{get:function(){return Vc(this,vr.CAST_SHADOWS)},set:function(e){Vc(this,vr.CAST_SHADOWS)!==e&&(_b(this,vr.CAST_SHADOWS,e),this.dirty=!0)}},receiveShadows:{get:function(){return Vc(this,vr.RECEIVE_SHADOWS)},set:function(e){Vc(this,vr.RECEIVE_SHADOWS)!==e&&(_b(this,vr.RECEIVE_SHADOWS,e),this.dirty=!0)}},uniformMap:{get:function(){return this._uniformMap},set:function(e){this._uniformMap!==e&&(this._uniformMap=e,this.dirty=!0)}},renderState:{get:function(){return this._renderState},set:function(e){this._renderState!==e&&(this._renderState=e,this.dirty=!0)}},framebuffer:{get:function(){return this._framebuffer},set:function(e){this._framebuffer!==e&&(this._framebuffer=e,this.dirty=!0)}},pass:{get:function(){return this._pass},set:function(e){this._pass!==e&&(this._pass=e,this.dirty=!0)}},executeInClosestFrustum:{get:function(){return Vc(this,vr.EXECUTE_IN_CLOSEST_FRUSTUM)},set:function(e){Vc(this,vr.EXECUTE_IN_CLOSEST_FRUSTUM)!==e&&(_b(this,vr.EXECUTE_IN_CLOSEST_FRUSTUM,e),this.dirty=!0)}},owner:{get:function(){return this._owner},set:function(e){this._owner!==e&&(this._owner=e,this.dirty=!0)}},debugShowBoundingVolume:{get:function(){return Vc(this,vr.DEBUG_SHOW_BOUNDING_VOLUME)},set:function(e){Vc(this,vr.DEBUG_SHOW_BOUNDING_VOLUME)!==e&&(_b(this,vr.DEBUG_SHOW_BOUNDING_VOLUME,e),this.dirty=!0)}},debugOverlappingFrustums:{get:function(){return this._debugOverlappingFrustums},set:function(e){this._debugOverlappingFrustums!==e&&(this._debugOverlappingFrustums=e,this.dirty=!0)}},pickId:{get:function(){return this._pickId},set:function(e){this._pickId!==e&&(this._pickId=e,this.dirty=!0)}},pickMetadataAllowed:{get:function(){return this._pickMetadataAllowed}},pickedMetadataInfo:{get:function(){return this._pickedMetadataInfo},set:function(e){this._pickedMetadataInfo!==e&&(this._pickedMetadataInfo=e,this.dirty=!0)}},pickOnly:{get:function(){return Vc(this,vr.PICK_ONLY)},set:function(e){Vc(this,vr.PICK_ONLY)!==e&&(_b(this,vr.PICK_ONLY,e),this.dirty=!0)}},depthForTranslucentClassification:{get:function(){return Vc(this,vr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION)},set:function(e){Vc(this,vr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION)!==e&&(_b(this,vr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION,e),this.dirty=!0)}}});rR.shallowClone=function(e,t){if(l(e))return l(t)||(t=new rR),t._boundingVolume=e._boundingVolume,t._orientedBoundingBox=e._orientedBoundingBox,t._modelMatrix=e._modelMatrix,t._primitiveType=e._primitiveType,t._vertexArray=e._vertexArray,t._count=e._count,t._offset=e._offset,t._instanceCount=e._instanceCount,t._shaderProgram=e._shaderProgram,t._uniformMap=e._uniformMap,t._renderState=e._renderState,t._framebuffer=e._framebuffer,t._pass=e._pass,t._owner=e._owner,t._debugOverlappingFrustums=e._debugOverlappingFrustums,t._pickId=e._pickId,t._pickMetadataAllowed=e._pickMetadataAllowed,t._pickedMetadataInfo=e._pickedMetadataInfo,t._flags=e._flags,t.dirty=!0,t.lastDirtyTime=0,t};rR.prototype.execute=function(e,t){e.draw(this,t)};var ot=rR;var B5t=y(C(),1),GBe={ENVIRONMENT:0,COMPUTE:1,GLOBE:2,TERRAIN_CLASSIFICATION:3,CESIUM_3D_TILE:4,CESIUM_3D_TILE_CLASSIFICATION:5,CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW:6,OPAQUE:7,TRANSLUCENT:8,VOXELS:9,GAUSSIAN_SPLATS:10,OVERLAY:11,NUMBER_OF_PASSES:12},Ge=Object.freeze(GBe);var Y5t=y(C(),1);var W5t=y(C(),1);var TD={CLOCKWISE:ne.CW,COUNTER_CLOCKWISE:ne.CCW};TD.validate=function(e){return e===TD.CLOCKWISE||e===TD.COUNTER_CLOCKWISE};var ws=Object.freeze(TD);var P5t=y(C(),1);function fie(e){if(typeof e!="object"||e===null)return e;let t,n=Object.keys(e);for(let i=0;i0&&console.log(`${Ff}Vertex shader compile log: ${c}`),c=e.getShaderInfoLog(r),l(c)&&c.length>0&&console.log(`${Ff}Fragment shader compile log: ${c}`),c=e.getProgramInfoLog(s),l(c)&&c.length>0&&console.log(`${Ff}Shader program link log: ${c}`)),e.deleteShader(o),e.deleteShader(r),s;let d,u=t._debugShaders;throw e.getShaderParameter(r,e.COMPILE_STATUS)?e.getShaderParameter(o,e.COMPILE_STATUS)?(c=e.getProgramInfoLog(s),console.error(`${Ff}Shader program link log: ${c}`),h(o,"vertex"),h(r,"fragment"),d=`Program failed to link. Link log: ${c}`):(c=e.getShaderInfoLog(o),console.error(`${Ff}Vertex shader compile log: ${c}`),console.error(`${Ff} Vertex shader source: +${n}`),d=`Vertex shader failed to compile. Compile log: ${c}`):(c=e.getShaderInfoLog(r),console.error(`${Ff}Fragment shader compile log: ${c}`),console.error(`${Ff} Fragment shader source: +${i}`),d=`Fragment shader failed to compile. Compile log: ${c}`),e.deleteShader(o),e.deleteShader(r),e.deleteProgram(s),new de(d);function h(p,g){if(!l(u))return;let f=u.getTranslatedShaderSource(p);if(f===""){console.error(`${Ff}${g} shader translation failed.`);return}console.error(`${Ff}Translated ${g} shaderSource: +${f}`)}}function YBe(e,t,n){let i={};for(let o=0;o=0){if(u=n[d.slice(0,f)],!l(u))continue;h=u._locations,h.length<=1&&(p=u.value,g=e.getUniformLocation(t,d),g!==null&&(h.push(g),p.push(e.getUniform(t,g))))}else{h=[];for(let b=0;b abs(x), czm_piOverTwo - t, t); + t = czm_branchFreeTernary(x < 0.0, czm_pi - t, t); + t = czm_branchFreeTernary(y < 0.0, -t, t); + return t; +} +`;var G3t=y(C(),1),WV=`/** + * Gets the color with fog at a distance from the camera. + * + * @name czm_fog + * @glslFunction + * + * @param {float} distanceToCamera The distance to the camera in meters. + * @param {vec3} color The original color. + * @param {vec3} fogColor The color of the fog. + * + * @returns {vec3} The color adjusted for fog at the distance from the camera. + */ +vec3 czm_fog(float distanceToCamera, vec3 color, vec3 fogColor) +{ + float scalar = distanceToCamera * czm_fogDensity; + float fog = 1.0 - exp(-(scalar * scalar)); + return mix(color, fogColor, fog); +} + +/** + * Gets the color with fog at a distance from the camera. + * + * @name czm_fog + * @glslFunction + * + * @param {float} distanceToCamera The distance to the camera in meters. + * @param {vec3} color The original color. + * @param {vec3} fogColor The color of the fog. + * @param {float} fogModifierConstant A constant to modify the appearance of fog. + * + * @returns {vec3} The color adjusted for fog at the distance from the camera. + */ +vec3 czm_fog(float distanceToCamera, vec3 color, vec3 fogColor, float fogModifierConstant) +{ + float scalar = distanceToCamera * czm_fogDensity; + float fog = 1.0 - exp(-((fogModifierConstant * scalar + fogModifierConstant) * (scalar * (1.0 + fogModifierConstant)))); + return mix(color, fogColor, fog); +} +`;var B3t=y(C(),1),FV=`/** + * Converts a color from RGB space to linear space. + * + * @name czm_gammaCorrect + * @glslFunction + * + * @param {vec3} color The color in RGB space. + * @returns {vec3} The color in linear space. + */ +vec3 czm_gammaCorrect(vec3 color) { +#ifdef HDR + color = pow(color, vec3(czm_gamma)); +#endif + return color; +} + +vec4 czm_gammaCorrect(vec4 color) { +#ifdef HDR + color.rgb = pow(color.rgb, vec3(czm_gamma)); +#endif + return color; +} +`;var X3t=y(C(),1),PV=`/** + * DOC_TBA + * + * @name czm_geodeticSurfaceNormal + * @glslFunction + * + * @param {vec3} positionOnEllipsoid DOC_TBA + * @param {vec3} ellipsoidCenter DOC_TBA + * @param {vec3} oneOverEllipsoidRadiiSquared DOC_TBA + * + * @returns {vec3} DOC_TBA. + */ +vec3 czm_geodeticSurfaceNormal(vec3 positionOnEllipsoid, vec3 ellipsoidCenter, vec3 oneOverEllipsoidRadiiSquared) +{ + return normalize((positionOnEllipsoid - ellipsoidCenter) * oneOverEllipsoidRadiiSquared); +} +`;var F3t=y(C(),1),MV=`/** + * An czm_material with default values. Every material's czm_getMaterial + * should use this default material as a base for the material it returns. + * The default normal value is given by materialInput.normalEC. + * + * @name czm_getDefaultMaterial + * @glslFunction + * + * @param {czm_materialInput} input The input used to construct the default material. + * + * @returns {czm_material} The default material. + * + * @see czm_materialInput + * @see czm_material + * @see czm_getMaterial + */ +czm_material czm_getDefaultMaterial(czm_materialInput materialInput) +{ + czm_material material; + material.diffuse = vec3(0.0); + material.specular = 0.0; + material.shininess = 1.0; + material.normal = materialInput.normalEC; + material.emission = vec3(0.0); + material.alpha = 1.0; + return material; +} +`;var M3t=y(C(),1),vV=`/** + * Select which direction vector to use for dynamic atmosphere lighting based on an enum value + * + * @name czm_getDynamicAtmosphereLightDirection + * @glslfunction + * @see DynamicAtmosphereLightingType.js + * + * @param {vec3} positionWC the position of the vertex/fragment in world coordinates. This is normalized and returned when dynamic lighting is turned off. + * @param {float} lightEnum The enum value for selecting between light sources. + * @return {vec3} The normalized light direction vector. Depending on the enum value, it is either positionWC, czm_lightDirectionWC or czm_sunDirectionWC + */ +vec3 czm_getDynamicAtmosphereLightDirection(vec3 positionWC, float lightEnum) { + const float NONE = 0.0; + const float SCENE_LIGHT = 1.0; + const float SUNLIGHT = 2.0; + + vec3 lightDirection = + positionWC * float(lightEnum == NONE) + + czm_lightDirectionWC * float(lightEnum == SCENE_LIGHT) + + czm_sunDirectionWC * float(lightEnum == SUNLIGHT); + return normalize(lightDirection); +} +`;var N3t=y(C(),1),NV=`/** + * Calculates the intensity of diffusely reflected light. + * + * @name czm_getLambertDiffuse + * @glslFunction + * + * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates. + * @param {vec3} normalEC The surface normal in eye coordinates. + * + * @returns {float} The intensity of the diffuse reflection. + * + * @see czm_phong + * + * @example + * float diffuseIntensity = czm_getLambertDiffuse(lightDirectionEC, normalEC); + * float specularIntensity = czm_getSpecular(lightDirectionEC, toEyeEC, normalEC, 200); + * vec3 color = (diffuseColor * diffuseIntensity) + (specularColor * specularIntensity); + */ +float czm_getLambertDiffuse(vec3 lightDirectionEC, vec3 normalEC) +{ + return max(dot(lightDirectionEC, normalEC), 0.0); +} +`;var Q3t=y(C(),1),DV=`/** + * Calculates the specular intensity of reflected light. + * + * @name czm_getSpecular + * @glslFunction + * + * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates. + * @param {vec3} toEyeEC Unit vector pointing to the eye position in eye coordinates. + * @param {vec3} normalEC The surface normal in eye coordinates. + * @param {float} shininess The sharpness of the specular reflection. Higher values create a smaller, more focused specular highlight. + * + * @returns {float} The intensity of the specular highlight. + * + * @see czm_phong + * + * @example + * float diffuseIntensity = czm_getLambertDiffuse(lightDirectionEC, normalEC); + * float specularIntensity = czm_getSpecular(lightDirectionEC, toEyeEC, normalEC, 200); + * vec3 color = (diffuseColor * diffuseIntensity) + (specularColor * specularIntensity); + */ +float czm_getSpecular(vec3 lightDirectionEC, vec3 toEyeEC, vec3 normalEC, float shininess) +{ + vec3 toReflectedLight = reflect(-lightDirectionEC, normalEC); + float specular = max(dot(toReflectedLight, toEyeEC), 0.0); + + // pow has undefined behavior if both parameters <= 0. + // Prevent this by making sure shininess is at least czm_epsilon2. + return pow(specular, max(shininess, czm_epsilon2)); +} +`;var k3t=y(C(),1),QV=`/** + * @private + */ +vec4 czm_getWaterNoise(sampler2D normalMap, vec2 uv, float time, float angleInRadians) +{ + float cosAngle = cos(angleInRadians); + float sinAngle = sin(angleInRadians); + + // time dependent sampling directions + vec2 s0 = vec2(1.0/17.0, 0.0); + vec2 s1 = vec2(-1.0/29.0, 0.0); + vec2 s2 = vec2(1.0/101.0, 1.0/59.0); + vec2 s3 = vec2(-1.0/109.0, -1.0/57.0); + + // rotate sampling direction by specified angle + s0 = vec2((cosAngle * s0.x) - (sinAngle * s0.y), (sinAngle * s0.x) + (cosAngle * s0.y)); + s1 = vec2((cosAngle * s1.x) - (sinAngle * s1.y), (sinAngle * s1.x) + (cosAngle * s1.y)); + s2 = vec2((cosAngle * s2.x) - (sinAngle * s2.y), (sinAngle * s2.x) + (cosAngle * s2.y)); + s3 = vec2((cosAngle * s3.x) - (sinAngle * s3.y), (sinAngle * s3.x) + (cosAngle * s3.y)); + + vec2 uv0 = (uv/103.0) + (time * s0); + vec2 uv1 = uv/107.0 + (time * s1) + vec2(0.23); + vec2 uv2 = uv/vec2(897.0, 983.0) + (time * s2) + vec2(0.51); + vec2 uv3 = uv/vec2(991.0, 877.0) + (time * s3) + vec2(0.71); + + uv0 = fract(uv0); + uv1 = fract(uv1); + uv2 = fract(uv2); + uv3 = fract(uv3); + vec4 noise = (texture(normalMap, uv0)) + + (texture(normalMap, uv1)) + + (texture(normalMap, uv2)) + + (texture(normalMap, uv3)); + + // average and scale to between -1 and 1 + return ((noise / 4.0) - 0.5) * 2.0; +} +`;var O3t=y(C(),1),UV=`/** + * Adjusts the hue of a color. + * + * @name czm_hue + * @glslFunction + * + * @param {vec3} rgb The color. + * @param {float} adjustment The amount to adjust the hue of the color in radians. + * + * @returns {float} The color with the hue adjusted. + * + * @example + * vec3 adjustHue = czm_hue(color, czm_pi); // The same as czm_hue(color, -czm_pi) + */ +vec3 czm_hue(vec3 rgb, float adjustment) +{ + const mat3 toYIQ = mat3(0.299, 0.587, 0.114, + 0.595716, -0.274453, -0.321263, + 0.211456, -0.522591, 0.311135); + const mat3 toRGB = mat3(1.0, 0.9563, 0.6210, + 1.0, -0.2721, -0.6474, + 1.0, -1.107, 1.7046); + + vec3 yiq = toYIQ * rgb; + float hue = atan(yiq.z, yiq.y) + adjustment; + float chroma = sqrt(yiq.z * yiq.z + yiq.y * yiq.y); + + vec3 color = vec3(yiq.x, chroma * cos(hue), chroma * sin(hue)); + return toRGB * color; +} +`;var z3t=y(C(),1),kV=`/** + * Converts a color in linear space to RGB space. + * + * @name czm_inverseGamma + * @glslFunction + * + * @param {vec3} color The color in linear space. + * @returns {vec3} The color in RGB space. + */ +vec3 czm_inverseGamma(vec3 color) { + return pow(color, vec3(1.0 / czm_gamma)); +} +`;var J3t=y(C(),1),YV=`/** + * Determines if a time interval is empty. + * + * @name czm_isEmpty + * @glslFunction + * + * @param {czm_raySegment} interval The interval to test. + * + * @returns {bool} true if the time interval is empty; otherwise, false. + * + * @example + * bool b0 = czm_isEmpty(czm_emptyRaySegment); // true + * bool b1 = czm_isEmpty(czm_raySegment(0.0, 1.0)); // false + * bool b2 = czm_isEmpty(czm_raySegment(1.0, 1.0)); // false, contains 1.0. + */ +bool czm_isEmpty(czm_raySegment interval) +{ + return (interval.stop < 0.0); +} +`;var q3t=y(C(),1),OV=`/** + * Determines if a time interval is empty. + * + * @name czm_isFull + * @glslFunction + * + * @param {czm_raySegment} interval The interval to test. + * + * @returns {bool} true if the time interval is empty; otherwise, false. + * + * @example + * bool b0 = czm_isEmpty(czm_emptyRaySegment); // true + * bool b1 = czm_isEmpty(czm_raySegment(0.0, 1.0)); // false + * bool b2 = czm_isEmpty(czm_raySegment(1.0, 1.0)); // false, contains 1.0. + */ +bool czm_isFull(czm_raySegment interval) +{ + return (interval.start == 0.0 && interval.stop == czm_infinity); +} +`;var eOt=y(C(),1),HV=`/** + * Computes the fraction of a Web Wercator rectangle at which a given geodetic latitude is located. + * + * @name czm_latitudeToWebMercatorFraction + * @glslFunction + * + * @param {float} latitude The geodetic latitude, in radians. + * @param {float} southMercatorY The Web Mercator coordinate of the southern boundary of the rectangle. + * @param {float} oneOverMercatorHeight The total height of the rectangle in Web Mercator coordinates. + * + * @returns {float} The fraction of the rectangle at which the latitude occurs. If the latitude is the southern + * boundary of the rectangle, the return value will be zero. If it is the northern boundary, the return + * value will be 1.0. Latitudes in between are mapped according to the Web Mercator projection. + */ +float czm_latitudeToWebMercatorFraction(float latitude, float southMercatorY, float oneOverMercatorHeight) +{ + float sinLatitude = sin(latitude); + float mercatorY = 0.5 * log((1.0 + sinLatitude) / (1.0 - sinLatitude)); + + return (mercatorY - southMercatorY) * oneOverMercatorHeight; +} +`;var nOt=y(C(),1),zV=`/** + * Computes distance from an point in 2D to a line in 2D. + * + * @name czm_lineDistance + * @glslFunction + * + * param {vec2} point1 A point along the line. + * param {vec2} point2 A point along the line. + * param {vec2} point A point that may or may not be on the line. + * returns {float} The distance from the point to the line. + */ +float czm_lineDistance(vec2 point1, vec2 point2, vec2 point) { + return abs((point2.y - point1.y) * point.x - (point2.x - point1.x) * point.y + point2.x * point1.y - point2.y * point1.x) / distance(point2, point1); +} +`;var oOt=y(C(),1),KV=`/** + * Converts a linear RGB color to an sRGB color. + * + * @param {vec3|vec4} linearIn The color in linear color space. + * @returns {vec3|vec4} The color in sRGB color space. The vector type matches the input. + */ +vec3 czm_linearToSrgb(vec3 linearIn) +{ + return pow(linearIn, vec3(1.0/2.2)); +} + +vec4 czm_linearToSrgb(vec4 linearIn) +{ + vec3 srgbOut = pow(linearIn.rgb, vec3(1.0/2.2)); + return vec4(srgbOut, linearIn.a); +} +`;var sOt=y(C(),1),JV=`/** + * Computes the luminance of a color. + * + * @name czm_luminance + * @glslFunction + * + * @param {vec3} rgb The color. + * + * @returns {float} The luminance. + * + * @example + * float light = czm_luminance(vec3(0.0)); // 0.0 + * float dark = czm_luminance(vec3(1.0)); // ~1.0 + */ +float czm_luminance(vec3 rgb) +{ + // Algorithm from Chapter 10 of Graphics Shaders. + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + return dot(rgb, W); +} +`;var cOt=y(C(),1),jV=`/** + * Find the maximum component of a vector. + * + * @name czm_maximumComponent + * @glslFunction + * + * @param {vec2|vec3|vec4} v The input vector. + * @returns {float} The value of the largest component. + */ +float czm_maximumComponent(vec2 v) +{ + return max(v.x, v.y); +} +float czm_maximumComponent(vec3 v) +{ + return max(max(v.x, v.y), v.z); +} +float czm_maximumComponent(vec4 v) +{ + return max(max(max(v.x, v.y), v.z), v.w); +} +`;var dOt=y(C(),1),qV=`/** + * Computes the size of a pixel in meters at a distance from the eye. + *

    + * Use this version when passing in a custom pixel ratio. For example, passing in 1.0 will return meters per native device pixel. + *

    + * @name czm_metersPerPixel + * @glslFunction + * + * @param {vec3} positionEC The position to get the meters per pixel in eye coordinates. + * @param {float} pixelRatio The scaling factor from pixel space to coordinate space + * + * @returns {float} The meters per pixel at positionEC. + */ +float czm_metersPerPixel(vec4 positionEC, float pixelRatio) +{ + float width = czm_viewport.z; + float height = czm_viewport.w; + float pixelWidth; + float pixelHeight; + + float top = czm_frustumPlanes.x; + float bottom = czm_frustumPlanes.y; + float left = czm_frustumPlanes.z; + float right = czm_frustumPlanes.w; + + if (czm_sceneMode == czm_sceneMode2D || czm_orthographicIn3D == 1.0) + { + float frustumWidth = right - left; + float frustumHeight = top - bottom; + pixelWidth = frustumWidth / width; + pixelHeight = frustumHeight / height; + } + else + { + float distanceToPixel = -positionEC.z; + float inverseNear = 1.0 / czm_currentFrustum.x; + float tanTheta = top * inverseNear; + pixelHeight = 2.0 * distanceToPixel * tanTheta / height; + tanTheta = right * inverseNear; + pixelWidth = 2.0 * distanceToPixel * tanTheta / width; + } + + return max(pixelWidth, pixelHeight) * pixelRatio; +} + +/** + * Computes the size of a pixel in meters at a distance from the eye. + *

    + * Use this version when scaling by pixel ratio. + *

    + * @name czm_metersPerPixel + * @glslFunction + * + * @param {vec3} positionEC The position to get the meters per pixel in eye coordinates. + * + * @returns {float} The meters per pixel at positionEC. + */ +float czm_metersPerPixel(vec4 positionEC) +{ + return czm_metersPerPixel(positionEC, czm_pixelRatio); +} +`;var mOt=y(C(),1),$V=`/** + * Transforms a position from model to window coordinates. The transformation + * from model to clip coordinates is done using {@link czm_modelViewProjection}. + * The transform from normalized device coordinates to window coordinates is + * done using {@link czm_viewportTransformation}, which assumes a depth range + * of near = 0 and far = 1. + *

    + * This transform is useful when there is a need to manipulate window coordinates + * in a vertex shader as done by {@link BillboardCollection}. + *

    + * This function should not be confused with {@link czm_viewportOrthographic}, + * which is an orthographic projection matrix that transforms from window + * coordinates to clip coordinates. + * + * @name czm_modelToWindowCoordinates + * @glslFunction + * + * @param {vec4} position The position in model coordinates to transform. + * + * @returns {vec4} The transformed position in window coordinates. + * + * @see czm_eyeToWindowCoordinates + * @see czm_modelViewProjection + * @see czm_viewportTransformation + * @see czm_viewportOrthographic + * @see BillboardCollection + * + * @example + * vec4 positionWC = czm_modelToWindowCoordinates(positionMC); + */ +vec4 czm_modelToWindowCoordinates(vec4 position) +{ + vec4 positionEC = czm_modelView * position; + vec4 q = czm_projection * positionEC; + q.xyz /= q.w; // normalized device coordinates + q.xyz = (czm_viewportTransformation * vec4(q.xyz, 1.0)).xyz; // window coordinates + return q; +} +`;var fOt=y(C(),1),eG=`/** + * DOC_TBA + * + * @name czm_multiplyWithColorBalance + * @glslFunction + */ +vec3 czm_multiplyWithColorBalance(vec3 left, vec3 right) +{ + // Algorithm from Chapter 10 of Graphics Shaders. + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + + vec3 target = left * right; + float leftLuminance = dot(left, W); + float rightLuminance = dot(right, W); + float targetLuminance = dot(target, W); + + return ((leftLuminance + rightLuminance) / (2.0 * targetLuminance)) * target; +} +`;var AOt=y(C(),1),tG=`/** + * Computes a value that scales with distance. The scaling is clamped at the near and + * far distances, and does not extrapolate. This function works with the + * {@link NearFarScalar} JavaScript class. + * + * @name czm_nearFarScalar + * @glslFunction + * + * @param {vec4} nearFarScalar A vector with 4 components: Near distance (x), Near value (y), Far distance (z), Far value (w). + * @param {float} cameraDistSq The square of the current distance from the camera. + * + * @returns {float} The value at this distance. + */ +float czm_nearFarScalar(vec4 nearFarScalar, float cameraDistSq) +{ + float valueAtMin = nearFarScalar.y; + float valueAtMax = nearFarScalar.w; + float nearDistanceSq = nearFarScalar.x * nearFarScalar.x; + float farDistanceSq = nearFarScalar.z * nearFarScalar.z; + + float t = (cameraDistSq - nearDistanceSq) / (farDistanceSq - nearDistanceSq); + + t = pow(clamp(t, 0.0, 1.0), 0.2); + + return mix(valueAtMin, valueAtMax, t); +} +`;var bOt=y(C(),1),nG=` /** + * Decodes a unit-length vector in 'oct' encoding to a normalized 3-component Cartesian vector. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {vec2} encoded The oct-encoded, unit-length vector + * @param {float} range The maximum value of the SNORM range. The encoded vector is stored in log2(rangeMax+1) bits. + * @returns {vec3} The decoded and normalized vector + */ + vec3 czm_octDecode(vec2 encoded, float range) + { + if (encoded.x == 0.0 && encoded.y == 0.0) { + return vec3(0.0, 0.0, 0.0); + } + + encoded = encoded / range * 2.0 - 1.0; + vec3 v = vec3(encoded.x, encoded.y, 1.0 - abs(encoded.x) - abs(encoded.y)); + if (v.z < 0.0) + { + v.xy = (1.0 - abs(v.yx)) * czm_signNotZero(v.xy); + } + + return normalize(v); + } + +/** + * Decodes a unit-length vector in 'oct' encoding to a normalized 3-component Cartesian vector. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {vec2} encoded The oct-encoded, unit-length vector + * @returns {vec3} The decoded and normalized vector + */ + vec3 czm_octDecode(vec2 encoded) + { + return czm_octDecode(encoded, 255.0); + } + + /** + * Decodes a unit-length vector in 'oct' encoding packed into a floating-point number to a normalized 3-component Cartesian vector. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {float} encoded The oct-encoded, unit-length vector + * @returns {vec3} The decoded and normalized vector + */ + vec3 czm_octDecode(float encoded) + { + float temp = encoded / 256.0; + float x = floor(temp); + float y = (temp - x) * 256.0; + return czm_octDecode(vec2(x, y)); + } + +/** + * Decodes three unit-length vectors in 'oct' encoding packed into two floating-point numbers to normalized 3-component Cartesian vectors. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {vec2} encoded The packed oct-encoded, unit-length vectors. + * @param {vec3} vector1 One decoded and normalized vector. + * @param {vec3} vector2 One decoded and normalized vector. + * @param {vec3} vector3 One decoded and normalized vector. + */ + void czm_octDecode(vec2 encoded, out vec3 vector1, out vec3 vector2, out vec3 vector3) + { + float temp = encoded.x / 65536.0; + float x = floor(temp); + float encodedFloat1 = (temp - x) * 65536.0; + + temp = encoded.y / 65536.0; + float y = floor(temp); + float encodedFloat2 = (temp - y) * 65536.0; + + vector1 = czm_octDecode(encodedFloat1); + vector2 = czm_octDecode(encodedFloat2); + vector3 = czm_octDecode(vec2(x, y)); + } + +`;var COt=y(C(),1),iG=`/** + * Packs a depth value into a vec4 that can be represented by unsigned bytes. + * + * @name czm_packDepth + * @glslFunction + * + * @param {float} depth The floating-point depth. + * @returns {vec4} The packed depth. + */ +vec4 czm_packDepth(float depth) +{ + // See Aras Pranckevi\u010Dius' post Encoding Floats to RGBA + // http://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/ + vec4 enc = vec4(1.0, 255.0, 65025.0, 16581375.0) * depth; + enc = fract(enc); + enc -= enc.yzww * vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0); + return enc; +} +`;var IOt=y(C(),1),oG=`vec3 lambertianDiffuse(vec3 diffuseColor) +{ + return diffuseColor / czm_pi; +} + +vec3 fresnelSchlick2(vec3 f0, vec3 f90, float VdotH) +{ + float versine = 1.0 - VdotH; + // pow(versine, 5.0) is slow. See https://stackoverflow.com/a/68793086/10082269 + float versineSquared = versine * versine; + return f0 + (f90 - f0) * versineSquared * versineSquared * versine; +} + +#ifdef USE_ANISOTROPY +/** + * @param {float} bitangentRoughness Material roughness (along the anisotropy bitangent) + * @param {float} tangentialRoughness Anisotropic roughness (along the anisotropy tangent) + * @param {vec3} lightDirection The direction from the fragment to the light source, transformed to tangent-bitangent-normal coordinates + * @param {vec3} viewDirection The direction from the fragment to the camera, transformed to tangent-bitangent-normal coordinates + */ +float smithVisibilityGGX_anisotropic(float bitangentRoughness, float tangentialRoughness, vec3 lightDirection, vec3 viewDirection) +{ + vec3 roughnessScale = vec3(tangentialRoughness, bitangentRoughness, 1.0); + float GGXV = lightDirection.z * length(roughnessScale * viewDirection); + float GGXL = viewDirection.z * length(roughnessScale * lightDirection); + float v = 0.5 / (GGXV + GGXL); + return clamp(v, 0.0, 1.0); +} + +/** + * @param {float} bitangentRoughness Material roughness (along the anisotropy bitangent) + * @param {float} tangentialRoughness Anisotropic roughness (along the anisotropy tangent) + * @param {vec3} halfwayDirection The unit vector halfway between light and view directions, transformed to tangent-bitangent-normal coordinates + */ +float GGX_anisotropic(float bitangentRoughness, float tangentialRoughness, vec3 halfwayDirection) +{ + float roughnessSquared = bitangentRoughness * tangentialRoughness; + vec3 f = halfwayDirection * vec3(bitangentRoughness, tangentialRoughness, roughnessSquared); + float w2 = roughnessSquared / dot(f, f); + return roughnessSquared * w2 * w2 / czm_pi; +} +#endif + +/** + * Estimate the geometric self-shadowing of the microfacets in a surface, + * using the Smith Joint GGX visibility function. + * Note: Vis = G / (4 * NdotL * NdotV) + * see Eric Heitz. 2014. Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs. Journal of Computer Graphics Techniques, 3 + * see Real-Time Rendering. Page 331 to 336. + * see https://google.github.io/filament/Filament.md.html#materialsystem/specularbrdf/geometricshadowing(specularg) + * + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @param {float} NdotL The cosine of the angle between the surface normal and the direction to the light source. + * @param {float} NdotV The cosine of the angle between the surface normal and the direction to the camera. + */ +float smithVisibilityGGX(float alphaRoughness, float NdotL, float NdotV) +{ + float alphaRoughnessSq = alphaRoughness * alphaRoughness; + + float GGXV = NdotL * sqrt(NdotV * NdotV * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + float GGXL = NdotV * sqrt(NdotL * NdotL * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + + float GGX = GGXV + GGXL; + if (GGX > 0.0) + { + return 0.5 / GGX; + } + return 0.0; +} + +/** + * Estimate the fraction of the microfacets in a surface that are aligned with + * the halfway vector, which is aligned halfway between the directions from + * the fragment to the camera and from the fragment to the light source. + * + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @param {float} NdotH The cosine of the angle between the surface normal and the halfway vector. + * @return {float} The fraction of microfacets aligned to the halfway vector. + */ +float GGX(float alphaRoughness, float NdotH) +{ + float alphaRoughnessSquared = alphaRoughness * alphaRoughness; + float f = (NdotH * alphaRoughnessSquared - NdotH) * NdotH + 1.0; + return alphaRoughnessSquared / (czm_pi * f * f); +} + +/** + * Compute the strength of the specular reflection due to direct lighting. + * + * @param {vec3} normal The surface normal. + * @param {vec3} lightDirection The unit vector pointing from the fragment to the light source. + * @param {vec3} viewDirection The unit vector pointing from the fragment to the camera. + * @param {vec3} halfwayDirection The unit vector pointing from the fragment to halfway between the light source and the camera. + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @return {float} The strength of the specular reflection. + */ +float computeDirectSpecularStrength(vec3 normal, vec3 lightDirection, vec3 viewDirection, vec3 halfwayDirection, float alphaRoughness) +{ + float NdotL = clamp(dot(normal, lightDirection), 0.0, 1.0); + float NdotV = clamp(dot(normal, viewDirection), 0.0, 1.0); + float G = smithVisibilityGGX(alphaRoughness, NdotL, NdotV); + float NdotH = clamp(dot(normal, halfwayDirection), 0.0, 1.0); + float D = GGX(alphaRoughness, NdotH); + return G * D; +} + +/** + * Compute the diffuse and specular contributions using physically based + * rendering. This function only handles direct lighting. + *

    + * This function only handles the lighting calculations. Metallic/roughness + * and specular/glossy must be handled separately. See {@MaterialStageFS} + *

    + * + * @name czm_pbrLighting + * @glslFunction + * + * @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position + * @param {vec3} normalEC The surface normal in eye coordinates + * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates. + * @param {czm_modelMaterial} The material properties. + * @return {vec3} The computed HDR color + */ +vec3 czm_pbrLighting(vec3 viewDirectionEC, vec3 normalEC, vec3 lightDirectionEC, czm_modelMaterial material) +{ + vec3 halfwayDirectionEC = normalize(viewDirectionEC + lightDirectionEC); + float VdotH = clamp(dot(viewDirectionEC, halfwayDirectionEC), 0.0, 1.0); + float NdotL = clamp(dot(normalEC, lightDirectionEC), 0.001, 1.0); + + vec3 f0 = material.specular; + float reflectance = czm_maximumComponent(f0); + // Typical dielectrics will have reflectance 0.04, so f90 will be 1.0. + // In this case, at grazing angle, all incident energy is reflected. + vec3 f90 = vec3(clamp(reflectance * 25.0, 0.0, 1.0)); + vec3 F = fresnelSchlick2(f0, f90, VdotH); + + #if defined(USE_SPECULAR) + F *= material.specularWeight; + #endif + + float alphaRoughness = material.roughness * material.roughness; + #ifdef USE_ANISOTROPY + mat3 tbn = mat3(material.anisotropicT, material.anisotropicB, normalEC); + vec3 lightDirection = lightDirectionEC * tbn; + vec3 viewDirection = viewDirectionEC * tbn; + vec3 halfwayDirection = halfwayDirectionEC * tbn; + float anisotropyStrength = material.anisotropyStrength; + float tangentialRoughness = mix(alphaRoughness, 1.0, anisotropyStrength * anisotropyStrength); + float bitangentRoughness = clamp(alphaRoughness, 0.001, 1.0); + float G = smithVisibilityGGX_anisotropic(bitangentRoughness, tangentialRoughness, lightDirection, viewDirection); + float D = GGX_anisotropic(bitangentRoughness, tangentialRoughness, halfwayDirection); + vec3 specularContribution = F * G * D; + #else + float specularStrength = computeDirectSpecularStrength(normalEC, lightDirectionEC, viewDirectionEC, halfwayDirectionEC, alphaRoughness); + vec3 specularContribution = F * specularStrength; + #endif + + vec3 diffuseColor = material.diffuse; + // F here represents the specular contribution + vec3 diffuseContribution = (1.0 - F) * lambertianDiffuse(diffuseColor); + + // Lo = (diffuse + specular) * Li * NdotL + return (diffuseContribution + specularContribution) * NdotL; +} +`;var EOt=y(C(),1),rG=`// KhronosGroup https://github.com/KhronosGroup/ToneMapping/tree/main/PBR_Neutral + +// Input color is non-negative and resides in the Linear Rec. 709 color space. +// Output color is also Linear Rec. 709, but in the [0, 1] range. + +vec3 czm_pbrNeutralTonemapping(vec3 color) { + const float startCompression = 0.8 - 0.04; + const float desaturation = 0.15; + + float x = min(color.r, min(color.g, color.b)); + float offset = czm_branchFreeTernary(x < 0.08, x - 6.25 * x * x, 0.04); + color -= offset; + + float peak = max(color.r, max(color.g, color.b)); + if (peak < startCompression) return color; + + const float d = 1.0 - startCompression; + float newPeak = 1.0 - d * d / (peak + d - startCompression); + color *= newPeak / peak; + + float g = 1.0 - 1.0 / (desaturation * (peak - newPeak) + 1.0); + return mix(color, newPeak * vec3(1.0, 1.0, 1.0), g); +} +`;var SOt=y(C(),1),sG=`float czm_private_getLambertDiffuseOfMaterial(vec3 lightDirectionEC, czm_material material) +{ + return czm_getLambertDiffuse(lightDirectionEC, material.normal); +} + +float czm_private_getSpecularOfMaterial(vec3 lightDirectionEC, vec3 toEyeEC, czm_material material) +{ + return czm_getSpecular(lightDirectionEC, toEyeEC, material.normal, material.shininess); +} + +/** + * Computes a color using the Phong lighting model. + * + * @name czm_phong + * @glslFunction + * + * @param {vec3} toEye A normalized vector from the fragment to the eye in eye coordinates. + * @param {czm_material} material The fragment's material. + * + * @returns {vec4} The computed color. + * + * @example + * vec3 positionToEyeEC = // ... + * czm_material material = // ... + * vec3 lightDirectionEC = // ... + * out_FragColor = czm_phong(normalize(positionToEyeEC), material, lightDirectionEC); + * + * @see czm_getMaterial + */ +vec4 czm_phong(vec3 toEye, czm_material material, vec3 lightDirectionEC) +{ + // Diffuse from directional light sources at eye (for top-down) + float diffuse = czm_private_getLambertDiffuseOfMaterial(vec3(0.0, 0.0, 1.0), material); + if (czm_sceneMode == czm_sceneMode3D) { + // (and horizon views in 3D) + diffuse += czm_private_getLambertDiffuseOfMaterial(vec3(0.0, 1.0, 0.0), material); + } + + float specular = czm_private_getSpecularOfMaterial(lightDirectionEC, toEye, material); + + // Temporary workaround for adding ambient. + vec3 materialDiffuse = material.diffuse * 0.5; + + vec3 ambient = materialDiffuse; + vec3 color = ambient + material.emission; + color += materialDiffuse * diffuse * czm_lightColor; + color += material.specular * specular * czm_lightColor; + + return vec4(color, material.alpha); +} + +vec4 czm_private_phong(vec3 toEye, czm_material material, vec3 lightDirectionEC) +{ + float diffuse = czm_private_getLambertDiffuseOfMaterial(lightDirectionEC, material); + float specular = czm_private_getSpecularOfMaterial(lightDirectionEC, toEye, material); + + vec3 ambient = vec3(0.0); + vec3 color = ambient + material.emission; + color += material.diffuse * diffuse * czm_lightColor; + color += material.specular * specular * czm_lightColor; + + return vec4(color, material.alpha); +} +`;var ROt=y(C(),1),aG=`/** + * Computes distance from a point to a plane. + * + * @name czm_planeDistance + * @glslFunction + * + * param {vec4} plane A Plane in Hessian Normal Form. See Plane.js + * param {vec3} point A point in the same space as the plane. + * returns {float} The distance from the point to the plane. + */ +float czm_planeDistance(vec4 plane, vec3 point) { + return (dot(plane.xyz, point) + plane.w); +} + +/** + * Computes distance from a point to a plane. + * + * @name czm_planeDistance + * @glslFunction + * + * param {vec3} planeNormal Normal for a plane in Hessian Normal Form. See Plane.js + * param {float} planeDistance Distance for a plane in Hessian Normal form. See Plane.js + * param {vec3} point A point in the same space as the plane. + * returns {float} The distance from the point to the plane. + */ +float czm_planeDistance(vec3 planeNormal, float planeDistance, vec3 point) { + return (dot(planeNormal, point) + planeDistance); +} +`;var GOt=y(C(),1),cG=`/** + * Computes the point along a ray at the given time. time can be positive, negative, or zero. + * + * @name czm_pointAlongRay + * @glslFunction + * + * @param {czm_ray} ray The ray to compute the point along. + * @param {float} time The time along the ray. + * + * @returns {vec3} The point along the ray at the given time. + * + * @example + * czm_ray ray = czm_ray(vec3(0.0), vec3(1.0, 0.0, 0.0)); // origin, direction + * vec3 v = czm_pointAlongRay(ray, 2.0); // (2.0, 0.0, 0.0) + */ +vec3 czm_pointAlongRay(czm_ray ray, float time) +{ + return ray.origin + (time * ray.direction); +} +`;var BOt=y(C(),1),lG=`/** + * DOC_TBA + * + * @name czm_rayEllipsoidIntersectionInterval + * @glslFunction + */ +czm_raySegment czm_rayEllipsoidIntersectionInterval(czm_ray ray, vec3 ellipsoid_center, vec3 ellipsoid_inverseRadii) +{ + // ray and ellipsoid center in eye coordinates. radii in model coordinates. + vec3 q = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ray.origin, 1.0)).xyz; + vec3 w = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ray.direction, 0.0)).xyz; + + q = q - ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ellipsoid_center, 1.0)).xyz; + + float q2 = dot(q, q); + float qw = dot(q, w); + + if (q2 > 1.0) // Outside ellipsoid. + { + if (qw >= 0.0) // Looking outward or tangent (0 intersections). + { + return czm_emptyRaySegment; + } + else // qw < 0.0. + { + float qw2 = qw * qw; + float difference = q2 - 1.0; // Positively valued. + float w2 = dot(w, w); + float product = w2 * difference; + + if (qw2 < product) // Imaginary roots (0 intersections). + { + return czm_emptyRaySegment; + } + else if (qw2 > product) // Distinct roots (2 intersections). + { + float discriminant = qw * qw - product; + float temp = -qw + sqrt(discriminant); // Avoid cancellation. + float root0 = temp / w2; + float root1 = difference / temp; + if (root0 < root1) + { + czm_raySegment i = czm_raySegment(root0, root1); + return i; + } + else + { + czm_raySegment i = czm_raySegment(root1, root0); + return i; + } + } + else // qw2 == product. Repeated roots (2 intersections). + { + float root = sqrt(difference / w2); + czm_raySegment i = czm_raySegment(root, root); + return i; + } + } + } + else if (q2 < 1.0) // Inside ellipsoid (2 intersections). + { + float difference = q2 - 1.0; // Negatively valued. + float w2 = dot(w, w); + float product = w2 * difference; // Negatively valued. + float discriminant = qw * qw - product; + float temp = -qw + sqrt(discriminant); // Positively valued. + czm_raySegment i = czm_raySegment(0.0, temp / w2); + return i; + } + else // q2 == 1.0. On ellipsoid. + { + if (qw < 0.0) // Looking inward. + { + float w2 = dot(w, w); + czm_raySegment i = czm_raySegment(0.0, -qw / w2); + return i; + } + else // qw >= 0.0. Looking outward or tangent. + { + return czm_emptyRaySegment; + } + } +} +`;var XOt=y(C(),1),dG=`/** + * Compute the intersection interval of a ray with a sphere. + * + * @name czm_raySphereIntersectionInterval + * @glslFunction + * + * @param {czm_ray} ray The ray. + * @param {vec3} center The center of the sphere. + * @param {float} radius The radius of the sphere. + * @return {czm_raySegment} The intersection interval of the ray with the sphere. + */ +czm_raySegment czm_raySphereIntersectionInterval(czm_ray ray, vec3 center, float radius) +{ + vec3 o = ray.origin; + vec3 d = ray.direction; + + vec3 oc = o - center; + + float a = dot(d, d); + float b = 2.0 * dot(d, oc); + float c = dot(oc, oc) - (radius * radius); + + float det = (b * b) - (4.0 * a * c); + + if (det < 0.0) { + return czm_emptyRaySegment; + } + + float sqrtDet = sqrt(det); + + float t0 = (-b - sqrtDet) / (2.0 * a); + float t1 = (-b + sqrtDet) / (2.0 * a); + + czm_raySegment result = czm_raySegment(t0, t1); + return result; +} +`;var FOt=y(C(),1),uG=`float czm_readDepth(sampler2D depthTexture, vec2 texCoords) +{ + return czm_reverseLogDepth(texture(depthTexture, texCoords).r); +} +`;var MOt=y(C(),1),mG=`/** + * Reads a value previously transformed with {@link czm_writeNonPerspective} + * by dividing it by \`w\`, the value used in the perspective divide. + * This function is intended to be called in a fragment shader to access a + * \`varying\` that should not be subject to perspective interpolation. + * For example, screen-space texture coordinates. The value should have been + * previously written in the vertex shader with a call to + * {@link czm_writeNonPerspective}. + * + * @name czm_readNonPerspective + * @glslFunction + * + * @param {float|vec2|vec3|vec4} value The non-perspective value to be read. + * @param {float} oneOverW One over the perspective divide value, \`w\`. Usually this is simply \`gl_FragCoord.w\`. + * @returns {float|vec2|vec3|vec4} The usable value. + */ +float czm_readNonPerspective(float value, float oneOverW) { + return value * oneOverW; +} + +vec2 czm_readNonPerspective(vec2 value, float oneOverW) { + return value * oneOverW; +} + +vec3 czm_readNonPerspective(vec3 value, float oneOverW) { + return value * oneOverW; +} + +vec4 czm_readNonPerspective(vec4 value, float oneOverW) { + return value * oneOverW; +} +`;var NOt=y(C(),1),hG=`float czm_reverseLogDepth(float logZ) +{ +#ifdef LOG_DEPTH + float near = czm_currentFrustum.x; + float far = czm_currentFrustum.y; + float log2Depth = logZ * czm_log2FarDepthFromNearPlusOne; + float depthFromNear = exp2(log2Depth) - 1.0; + return far * (1.0 - near / (depthFromNear + near)) / (far - near); +#endif + return logZ; +} +`;var QOt=y(C(),1),fG=`/** + * Round a floating point value. This function exists because round() doesn't + * exist in GLSL 1.00. + * + * @param {float|vec2|vec3|vec4} value The value to round + * @param {float|vec2|vec3|vec3} The rounded value. The type matches the input. + */ +float czm_round(float value) { + return floor(value + 0.5); +} + +vec2 czm_round(vec2 value) { + return floor(value + 0.5); +} + +vec3 czm_round(vec3 value) { + return floor(value + 0.5); +} + +vec4 czm_round(vec4 value) { + return floor(value + 0.5); +} +`;var kOt=y(C(),1),pG=`/** + * Adjusts the saturation of a color. + * + * @name czm_saturation + * @glslFunction + * + * @param {vec3} rgb The color. + * @param {float} adjustment The amount to adjust the saturation of the color. + * + * @returns {float} The color with the saturation adjusted. + * + * @example + * vec3 greyScale = czm_saturation(color, 0.0); + * vec3 doubleSaturation = czm_saturation(color, 2.0); + */ +vec3 czm_saturation(vec3 rgb, float adjustment) +{ + // Algorithm from Chapter 16 of OpenGL Shading Language + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + vec3 intensity = vec3(dot(rgb, W)); + return mix(intensity, rgb, adjustment); +} +`;var OOt=y(C(),1),AG=` +float czm_sampleShadowMap(highp samplerCube shadowMap, vec3 d) +{ + return czm_unpackDepth(czm_textureCube(shadowMap, d)); +} + +float czm_sampleShadowMap(highp sampler2D shadowMap, vec2 uv) +{ +#ifdef USE_SHADOW_DEPTH_TEXTURE + return texture(shadowMap, uv).r; +#else + return czm_unpackDepth(texture(shadowMap, uv)); +#endif +} + +float czm_shadowDepthCompare(samplerCube shadowMap, vec3 uv, float depth) +{ + return step(depth, czm_sampleShadowMap(shadowMap, uv)); +} + +float czm_shadowDepthCompare(sampler2D shadowMap, vec2 uv, float depth) +{ + return step(depth, czm_sampleShadowMap(shadowMap, uv)); +} +`;var zOt=y(C(),1),gG=` +float czm_private_shadowVisibility(float visibility, float nDotL, float normalShadingSmooth, float darkness) +{ +#ifdef USE_NORMAL_SHADING +#ifdef USE_NORMAL_SHADING_SMOOTH + float strength = clamp(nDotL / normalShadingSmooth, 0.0, 1.0); +#else + float strength = step(0.0, nDotL); +#endif + visibility *= strength; +#endif + + visibility = max(visibility, darkness); + return visibility; +} + +#ifdef USE_CUBE_MAP_SHADOW +float czm_shadowVisibility(samplerCube shadowMap, czm_shadowParameters shadowParameters) +{ + float depthBias = shadowParameters.depthBias; + float depth = shadowParameters.depth; + float nDotL = shadowParameters.nDotL; + float normalShadingSmooth = shadowParameters.normalShadingSmooth; + float darkness = shadowParameters.darkness; + vec3 uvw = shadowParameters.texCoords; + + depth -= depthBias; + float visibility = czm_shadowDepthCompare(shadowMap, uvw, depth); + return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness); +} +#else +float czm_shadowVisibility(sampler2D shadowMap, czm_shadowParameters shadowParameters) +{ + float depthBias = shadowParameters.depthBias; + float depth = shadowParameters.depth; + float nDotL = shadowParameters.nDotL; + float normalShadingSmooth = shadowParameters.normalShadingSmooth; + float darkness = shadowParameters.darkness; + vec2 uv = shadowParameters.texCoords; + + depth -= depthBias; +#ifdef USE_SOFT_SHADOWS + vec2 texelStepSize = shadowParameters.texelStepSize; + float radius = 1.0; + float dx0 = -texelStepSize.x * radius; + float dy0 = -texelStepSize.y * radius; + float dx1 = texelStepSize.x * radius; + float dy1 = texelStepSize.y * radius; + float visibility = ( + czm_shadowDepthCompare(shadowMap, uv, depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, dy0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(0.0, dy0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, dy0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, 0.0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, 0.0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, dy1), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(0.0, dy1), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, dy1), depth) + ) * (1.0 / 9.0); +#else + float visibility = czm_shadowDepthCompare(shadowMap, uv, depth); +#endif + + return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness); +} +#endif +`;var JOt=y(C(),1),bG=`/** + * Returns 1.0 if the given value is positive or zero, and -1.0 if it is negative. This is similar to the GLSL + * built-in function sign except that returns 1.0 instead of 0.0 when the input value is 0.0. + * + * @name czm_signNotZero + * @glslFunction + * + * @param {} value The value for which to determine the sign. + * @returns {} 1.0 if the value is positive or zero, -1.0 if the value is negative. + */ +float czm_signNotZero(float value) +{ + return value >= 0.0 ? 1.0 : -1.0; +} + +vec2 czm_signNotZero(vec2 value) +{ + return vec2(czm_signNotZero(value.x), czm_signNotZero(value.y)); +} + +vec3 czm_signNotZero(vec3 value) +{ + return vec3(czm_signNotZero(value.x), czm_signNotZero(value.y), czm_signNotZero(value.z)); +} + +vec4 czm_signNotZero(vec4 value) +{ + return vec4(czm_signNotZero(value.x), czm_signNotZero(value.y), czm_signNotZero(value.z), czm_signNotZero(value.w)); +} +`;var qOt=y(C(),1),yG=`/** + * Computes a color from the third order spherical harmonic coefficients and a normalized direction vector. + *

    + * The order of the coefficients is [L00, L1_1, L10, L11, L2_2, L2_1, L20, L21, L22]. + *

    + * + * @name czm_sphericalHarmonics + * @glslFunction + * + * @param {vec3} normal The normalized direction. + * @param {vec3[9]} coefficients The third order spherical harmonic coefficients. + * @returns {vec3} The color at the direction. + * + * @see https://graphics.stanford.edu/papers/envmap/envmap.pdf + */ +vec3 czm_sphericalHarmonics(vec3 normal, vec3 coefficients[9]) +{ + vec3 L00 = coefficients[0]; + vec3 L1_1 = coefficients[1]; + vec3 L10 = coefficients[2]; + vec3 L11 = coefficients[3]; + vec3 L2_2 = coefficients[4]; + vec3 L2_1 = coefficients[5]; + vec3 L20 = coefficients[6]; + vec3 L21 = coefficients[7]; + vec3 L22 = coefficients[8]; + + float x = normal.x; + float y = normal.y; + float z = normal.z; + + vec3 L = + L00 + + L1_1 * y + + L10 * z + + L11 * x + + L2_2 * (y * x) + + L2_1 * (y * z) + + L20 * (3.0 * z * z - 1.0) + + L21 * (z * x) + + L22 * (x * x - y * y); + + return max(L, vec3(0.0)); +} +`;var eHt=y(C(),1),CG=`/** + * Converts an sRGB color to a linear RGB color. + * + * @param {vec3|vec4} srgbIn The color in sRGB space + * @returns {vec3|vec4} The color in linear color space. The vector type matches the input. + */ +vec3 czm_srgbToLinear(vec3 srgbIn) +{ + return pow(srgbIn, vec3(2.2)); +} + +vec4 czm_srgbToLinear(vec4 srgbIn) +{ + vec3 linearOut = pow(srgbIn.rgb, vec3(2.2)); + return vec4(linearOut, srgbIn.a); +} +`;var nHt=y(C(),1),xG=`/** + * Creates a matrix that transforms vectors from tangent space to eye space. + * + * @name czm_tangentToEyeSpaceMatrix + * @glslFunction + * + * @param {vec3} normalEC The normal vector in eye coordinates. + * @param {vec3} tangentEC The tangent vector in eye coordinates. + * @param {vec3} bitangentEC The bitangent vector in eye coordinates. + * + * @returns {mat3} The matrix that transforms from tangent space to eye space. + * + * @example + * mat3 tangentToEye = czm_tangentToEyeSpaceMatrix(normalEC, tangentEC, bitangentEC); + * vec3 normal = tangentToEye * texture(normalMap, st).xyz; + */ +mat3 czm_tangentToEyeSpaceMatrix(vec3 normalEC, vec3 tangentEC, vec3 bitangentEC) +{ + vec3 normal = normalize(normalEC); + vec3 tangent = normalize(tangentEC); + vec3 bitangent = normalize(bitangentEC); + return mat3(tangent.x , tangent.y , tangent.z, + bitangent.x, bitangent.y, bitangent.z, + normal.x , normal.y , normal.z); +} +`;var oHt=y(C(),1),IG=`/** + * A wrapper around the texture (WebGL2) / textureCube (WebGL1) + * function to allow for WebGL 1 support. + * + * @name czm_textureCube + * @glslFunction + * + * @param {samplerCube} sampler The sampler. + * @param {vec3} p The coordinate at which to sample the texture. + */ +vec4 czm_textureCube(samplerCube sampler, vec3 p) { +#if __VERSION__ == 300 + return texture(sampler, p); +#else + return textureCube(sampler, p); +#endif +} + +/** + * A wrapper around the textureLod (WebGL2) / textureCube (WebGL1) + * function to allow for WebGL 1 support in fragment shaders. + * + * @name czm_textureCubeLod + * @glslFunction + * + * @param {samplerCube} sampler The sampler. + * @param {vec3} p The coordinate at which to sample the texture. + * @param {float} lod The mipmap level from which to sample. + */ +vec4 czm_textureCube(samplerCube sampler, vec3 p, float lod) { +#if __VERSION__ == 300 + return textureLod(sampler, p, lod); +#elif defined(GL_EXT_shader_texture_lod) + return textureCubeLodEXT(sampler, p, lod); +#endif +}`;var sHt=y(C(),1),_G=`/** + * Transforms a plane. + * + * @name czm_transformPlane + * @glslFunction + * + * @param {vec4} plane The plane in Hessian Normal Form. + * @param {mat4} transform The inverse-transpose of a transformation matrix. + */ +vec4 czm_transformPlane(vec4 plane, mat4 transform) { + vec4 transformedPlane = transform * plane; + // Convert the transformed plane to Hessian Normal Form + float normalMagnitude = length(transformedPlane.xyz); + return transformedPlane / normalMagnitude; +} +`;var cHt=y(C(),1),EG=`/** + * Translates a position (or any vec3) that was encoded with {@link EncodedCartesian3}, + * and then provided to the shader as separate high and low bits to + * be relative to the eye. As shown in the example, the position can then be transformed in eye + * or clip coordinates using {@link czm_modelViewRelativeToEye} or {@link czm_modelViewProjectionRelativeToEye}, + * respectively. + *

    + * This technique, called GPU RTE, eliminates jittering artifacts when using large coordinates as + * described in {@link http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm|Precisions, Precisions}. + *

    + * + * @name czm_translateRelativeToEye + * @glslFunction + * + * @param {vec3} high The position's high bits. + * @param {vec3} low The position's low bits. + * @returns {vec3} The position translated to be relative to the camera's position. + * + * @example + * in vec3 positionHigh; + * in vec3 positionLow; + * + * void main() + * { + * vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + * gl_Position = czm_modelViewProjectionRelativeToEye * p; + * } + * + * @see czm_modelViewRelativeToEye + * @see czm_modelViewProjectionRelativeToEye + * @see czm_computePosition + * @see EncodedCartesian3 + */ +vec4 czm_translateRelativeToEye(vec3 high, vec3 low) +{ + vec3 highDifference = high - czm_encodedCameraPositionMCHigh; + // This check handles the case when NaN values have gotten into \`highDifference\`. + // Such a thing could happen on devices running iOS. + if (length(highDifference) == 0.0) { + highDifference = vec3(0); + } + vec3 lowDifference = low - czm_encodedCameraPositionMCLow; + + return vec4(highDifference + lowDifference, 1.0); +} +`;var dHt=y(C(),1),TG=`/** + * @private + */ +vec4 czm_translucentPhong(vec3 toEye, czm_material material, vec3 lightDirectionEC) +{ + // Diffuse from directional light sources at eye (for top-down and horizon views) + float diffuse = czm_getLambertDiffuse(vec3(0.0, 0.0, 1.0), material.normal); + + if (czm_sceneMode == czm_sceneMode3D) { + // (and horizon views in 3D) + diffuse += czm_getLambertDiffuse(vec3(0.0, 1.0, 0.0), material.normal); + } + + diffuse = clamp(diffuse, 0.0, 1.0); + + float specular = czm_getSpecular(lightDirectionEC, toEye, material.normal, material.shininess); + + // Temporary workaround for adding ambient. + vec3 materialDiffuse = material.diffuse * 0.5; + + vec3 ambient = materialDiffuse; + vec3 color = ambient + material.emission; + color += materialDiffuse * diffuse * czm_lightColor; + color += material.specular * specular * czm_lightColor; + + return vec4(color, material.alpha); +} +`;var mHt=y(C(),1),SG=`/** + * Returns the transpose of the matrix. The input matrix can be + * a mat2, mat3, or mat4. + * + * @name czm_transpose + * @glslFunction + * + * @param {} matrix The matrix to transpose. + * + * @returns {} The transposed matrix. + * + * @example + * // GLSL declarations + * mat2 czm_transpose(mat2 matrix); + * mat3 czm_transpose(mat3 matrix); + * mat4 czm_transpose(mat4 matrix); + * + * // Transpose a 3x3 rotation matrix to find its inverse. + * mat3 eastNorthUpToEye = czm_eastNorthUpToEyeCoordinates( + * positionMC, normalEC); + * mat3 eyeToEastNorthUp = czm_transpose(eastNorthUpToEye); + */ +mat2 czm_transpose(mat2 matrix) +{ + return mat2( + matrix[0][0], matrix[1][0], + matrix[0][1], matrix[1][1]); +} + +mat3 czm_transpose(mat3 matrix) +{ + return mat3( + matrix[0][0], matrix[1][0], matrix[2][0], + matrix[0][1], matrix[1][1], matrix[2][1], + matrix[0][2], matrix[1][2], matrix[2][2]); +} + +mat4 czm_transpose(mat4 matrix) +{ + return mat4( + matrix[0][0], matrix[1][0], matrix[2][0], matrix[3][0], + matrix[0][1], matrix[1][1], matrix[2][1], matrix[3][1], + matrix[0][2], matrix[1][2], matrix[2][2], matrix[3][2], + matrix[0][3], matrix[1][3], matrix[2][3], matrix[3][3]); +} +`;var fHt=y(C(),1),LG=`vec2 getLookupUv(vec2 dimensions, int i) { + int pixY = i / int(dimensions.x); + int pixX = i - (pixY * int(dimensions.x)); + float pixelWidth = 1.0 / dimensions.x; + float pixelHeight = 1.0 / dimensions.y; + float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel + float v = (float(pixY) + 0.5) * pixelHeight; + return vec2(u, v); +} + +vec4 czm_unpackClippingExtents(highp sampler2D extentsTexture, int index) { + vec2 textureDimensions = vec2(textureSize(extentsTexture, 0)); + return texture(extentsTexture, getLookupUv(textureDimensions, index)); +}`;var AHt=y(C(),1),RG=`/** + * Unpacks a vec4 depth value to a float in [0, 1) range. + * + * @name czm_unpackDepth + * @glslFunction + * + * @param {vec4} packedDepth The packed depth. + * + * @returns {float} The floating-point depth in [0, 1) range. + */ +float czm_unpackDepth(vec4 packedDepth) +{ + // See Aras Pranckevi\u010Dius' post Encoding Floats to RGBA + // http://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/ + return dot(packedDepth, vec4(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 16581375.0)); +} +`;var bHt=y(C(),1),VG=`/** + * Unpack an IEEE 754 single-precision float that is packed as a little-endian unsigned normalized vec4. + * + * @name czm_unpackFloat + * @glslFunction + * + * @param {vec4} packedFloat The packed float. + * + * @returns {float} The floating-point depth in arbitrary range. + */ +float czm_unpackFloat(vec4 packedFloat) +{ + // Convert to [0.0, 255.0] and round to integer + packedFloat = floor(packedFloat * 255.0 + 0.5); + float sign = 1.0 - step(128.0, packedFloat[3]) * 2.0; + float exponent = 2.0 * mod(packedFloat[3], 128.0) + step(128.0, packedFloat[2]) - 127.0; + if (exponent == -127.0) + { + return 0.0; + } + float mantissa = mod(packedFloat[2], 128.0) * 65536.0 + packedFloat[1] * 256.0 + packedFloat[0] + float(0x800000); + float result = sign * exp2(exponent - 23.0) * mantissa; + return result; +} +`;var CHt=y(C(),1),GG=`/** + * Unpack unsigned integers of 1-4 bytes. in WebGL 1, there is no uint type, + * so the return value is an int. + *

    + * There are also precision limitations in WebGL 1. highp int is still limited + * to 24 bits. Above the value of 2^24 = 16777216, precision loss may occur. + *

    + * + * @param {float|vec2|vec3|vec4} packed The packed value. For vectors, the components are listed in little-endian order. + * + * @return {int} The unpacked value. + */ + int czm_unpackUint(float packedValue) { + float rounded = czm_round(packedValue * 255.0); + return int(rounded); + } + + int czm_unpackUint(vec2 packedValue) { + vec2 rounded = czm_round(packedValue * 255.0); + return int(dot(rounded, vec2(1.0, 256.0))); + } + + int czm_unpackUint(vec3 packedValue) { + vec3 rounded = czm_round(packedValue * 255.0); + return int(dot(rounded, vec3(1.0, 256.0, 65536.0))); + } + + int czm_unpackUint(vec4 packedValue) { + vec4 rounded = czm_round(packedValue * 255.0); + return int(dot(rounded, vec4(1.0, 256.0, 65536.0, 16777216.0))); + } +`;var IHt=y(C(),1),ZG=`/** + * Transform metadata values following the EXT_structural_metadata spec + * by multiplying by scale and adding the offset. Operations are always + * performed component-wise, even for matrices. + * + * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} offset The offset to add + * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} scale The scale factor to multiply + * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} value The original value. + * + * @return {float|vec2|vec3|vec4|mat2|mat3|mat4} The transformed value of the same scalar/vector/matrix type as the input. + */ +float czm_valueTransform(float offset, float scale, float value) { + return scale * value + offset; +} + +vec2 czm_valueTransform(vec2 offset, vec2 scale, vec2 value) { + return scale * value + offset; +} + +vec3 czm_valueTransform(vec3 offset, vec3 scale, vec3 value) { + return scale * value + offset; +} + +vec4 czm_valueTransform(vec4 offset, vec4 scale, vec4 value) { + return scale * value + offset; +} + +mat2 czm_valueTransform(mat2 offset, mat2 scale, mat2 value) { + return matrixCompMult(scale, value) + offset; +} + +mat3 czm_valueTransform(mat3 offset, mat3 scale, mat3 value) { + return matrixCompMult(scale, value) + offset; +} + +mat4 czm_valueTransform(mat4 offset, mat4 scale, mat4 value) { + return matrixCompMult(scale, value) + offset; +} +`;var EHt=y(C(),1),BG=`#ifdef LOG_DEPTH +// 1.0 at the near plane, increasing linearly from there. +out float v_depthFromNearPlusOne; +#ifdef SHADOW_MAP +out vec3 v_logPositionEC; +#endif +#endif + +vec4 czm_updatePositionDepth(vec4 coords) { +#if defined(LOG_DEPTH) + +#ifdef SHADOW_MAP + vec3 logPositionEC = (czm_inverseProjection * coords).xyz; + v_logPositionEC = logPositionEC; +#endif + + // With the very high far/near ratios used with the logarithmic depth + // buffer, floating point rounding errors can cause linear depth values + // to end up on the wrong side of the far plane, even for vertices that + // are really nowhere near it. Since we always write a correct logarithmic + // depth value in the fragment shader anyway, we just need to make sure + // such errors don't cause the primitive to be clipped entirely before + // we even get to the fragment shader. + coords.z = clamp(coords.z / coords.w, -1.0, 1.0) * coords.w; +#endif + + return coords; +} + +/** + * Writes the logarithmic depth to gl_Position using the already computed gl_Position. + * + * @name czm_vertexLogDepth + * @glslFunction + */ +void czm_vertexLogDepth() +{ +#ifdef LOG_DEPTH + v_depthFromNearPlusOne = (gl_Position.w - czm_currentFrustum.x) + 1.0; + gl_Position = czm_updatePositionDepth(gl_Position); +#endif +} + +/** + * Writes the logarithmic depth to gl_Position using the provided clip coordinates. + *

    + * An example use case for this function would be moving the vertex in window coordinates + * before converting back to clip coordinates. Use the original vertex clip coordinates. + *

    + * @name czm_vertexLogDepth + * @glslFunction + * + * @param {vec4} clipCoords The vertex in clip coordinates. + * + * @example + * czm_vertexLogDepth(czm_projection * vec4(positionEyeCoordinates, 1.0)); + */ +void czm_vertexLogDepth(vec4 clipCoords) +{ +#ifdef LOG_DEPTH + v_depthFromNearPlusOne = (clipCoords.w - czm_currentFrustum.x) + 1.0; + czm_updatePositionDepth(clipCoords); +#endif +} +`;var SHt=y(C(),1),wG=`vec4 czm_screenToEyeCoordinates(vec4 screenCoordinate) +{ + // Reconstruct NDC coordinates + float x = 2.0 * screenCoordinate.x - 1.0; + float y = 2.0 * screenCoordinate.y - 1.0; + float z = (screenCoordinate.z - czm_viewportTransformation[3][2]) / czm_viewportTransformation[2][2]; + vec4 q = vec4(x, y, z, 1.0); + + // Reverse the perspective division to obtain clip coordinates. + q /= screenCoordinate.w; + + // Reverse the projection transformation to obtain eye coordinates. + if (!(czm_inverseProjection == mat4(0.0))) // IE and Edge sometimes do something weird with != between mat4s + { + q = czm_inverseProjection * q; + } + else + { + float top = czm_frustumPlanes.x; + float bottom = czm_frustumPlanes.y; + float left = czm_frustumPlanes.z; + float right = czm_frustumPlanes.w; + + float near = czm_currentFrustum.x; + float far = czm_currentFrustum.y; + + q.x = (q.x * (right - left) + left + right) * 0.5; + q.y = (q.y * (top - bottom) + bottom + top) * 0.5; + q.z = (q.z * (near - far) - near - far) * 0.5; + q.w = 1.0; + } + + return q; +} + +/** + * Transforms a position from window to eye coordinates. + * The transform from window to normalized device coordinates is done using components + * of (@link czm_viewport} and {@link czm_viewportTransformation} instead of calculating + * the inverse of czm_viewportTransformation. The transformation from + * normalized device coordinates to clip coordinates is done using fragmentCoordinate.w, + * which is expected to be the scalar used in the perspective divide. The transformation + * from clip to eye coordinates is done using {@link czm_inverseProjection}. + * + * @name czm_windowToEyeCoordinates + * @glslFunction + * + * @param {vec4} fragmentCoordinate The position in window coordinates to transform. + * + * @returns {vec4} The transformed position in eye coordinates. + * + * @see czm_modelToWindowCoordinates + * @see czm_eyeToWindowCoordinates + * @see czm_inverseProjection + * @see czm_viewport + * @see czm_viewportTransformation + * + * @example + * vec4 positionEC = czm_windowToEyeCoordinates(gl_FragCoord); + */ +vec4 czm_windowToEyeCoordinates(vec4 fragmentCoordinate) +{ + vec2 screenCoordXY = (fragmentCoordinate.xy - czm_viewport.xy) / czm_viewport.zw; + return czm_screenToEyeCoordinates(vec4(screenCoordXY, fragmentCoordinate.zw)); +} + +vec4 czm_screenToEyeCoordinates(vec2 screenCoordinateXY, float depthOrLogDepth) +{ + // See reverseLogDepth.glsl. This is separate to re-use the pow. +#if defined(LOG_DEPTH) || defined(LOG_DEPTH_READ_ONLY) + float near = czm_currentFrustum.x; + float far = czm_currentFrustum.y; + float log2Depth = depthOrLogDepth * czm_log2FarDepthFromNearPlusOne; + float depthFromNear = exp2(log2Depth) - 1.0; + float depthFromCamera = depthFromNear + near; + vec4 screenCoord = vec4(screenCoordinateXY, far * (1.0 - near / depthFromCamera) / (far - near), 1.0); + vec4 eyeCoordinate = czm_screenToEyeCoordinates(screenCoord); + eyeCoordinate.w = 1.0 / depthFromCamera; // Better precision +#else + vec4 screenCoord = vec4(screenCoordinateXY, depthOrLogDepth, 1.0); + vec4 eyeCoordinate = czm_screenToEyeCoordinates(screenCoord); +#endif + return eyeCoordinate; +} + +/** + * Transforms a position given as window x/y and a depth or a log depth from window to eye coordinates. + * This function produces more accurate results for window positions with log depth than + * conventionally unpacking the log depth using czm_reverseLogDepth and using the standard version + * of czm_windowToEyeCoordinates. + * + * @name czm_windowToEyeCoordinates + * @glslFunction + * + * @param {vec2} fragmentCoordinateXY The XY position in window coordinates to transform. + * @param {float} depthOrLogDepth A depth or log depth for the fragment. + * + * @see czm_modelToWindowCoordinates + * @see czm_eyeToWindowCoordinates + * @see czm_inverseProjection + * @see czm_viewport + * @see czm_viewportTransformation + * + * @returns {vec4} The transformed position in eye coordinates. + */ +vec4 czm_windowToEyeCoordinates(vec2 fragmentCoordinateXY, float depthOrLogDepth) +{ + vec2 screenCoordXY = (fragmentCoordinateXY.xy - czm_viewport.xy) / czm_viewport.zw; + return czm_screenToEyeCoordinates(screenCoordXY, depthOrLogDepth); +} +`;var RHt=y(C(),1),XG=`// emulated noperspective +#if !defined(LOG_DEPTH) +in float v_WindowZ; +#endif + +/** + * Emulates GL_DEPTH_CLAMP. Clamps a fragment to the near and far plane + * by writing the fragment's depth. See czm_depthClamp for more details. + * + * @name czm_writeDepthClamp + * @glslFunction + * + * @example + * out_FragColor = color; + * czm_writeDepthClamp(); + * + * @see czm_depthClamp + */ +void czm_writeDepthClamp() +{ +#if (!defined(LOG_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth))) + gl_FragDepth = clamp(v_WindowZ * gl_FragCoord.w, 0.0, 1.0); +#endif +} +`;var GHt=y(C(),1),WG=`#ifdef LOG_DEPTH +in float v_depthFromNearPlusOne; + +#ifdef POLYGON_OFFSET +uniform vec2 u_polygonOffset; +#endif + +#endif + +/** + * Writes the fragment depth to the logarithmic depth buffer. + *

    + * Use this when the vertex shader does not call {@link czm_vertexLogDepth}, for example, when + * ray-casting geometry using a full screen quad. + *

    + * @name czm_writeLogDepth + * @glslFunction + * + * @param {float} depth The depth coordinate, where 1.0 is on the near plane and + * depth increases in eye-space units from there + * + * @example + * czm_writeLogDepth((czm_projection * v_positionEyeCoordinates).w + 1.0); + */ +void czm_writeLogDepth(float depth) +{ +#if (defined(LOG_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth))) + // Discard the vertex if it's not between the near and far planes. + // We allow a bit of epsilon on the near plane comparison because a 1.0 + // from the vertex shader (indicating the vertex should be _on_ the near + // plane) will not necessarily come here as exactly 1.0. + if (depth <= 0.9999999 || depth > czm_farDepthFromNearPlusOne) { + discard; + } + +#ifdef POLYGON_OFFSET + // Polygon offset: m * factor + r * units + float factor = u_polygonOffset[0]; + float units = u_polygonOffset[1]; + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + // This factor doesn't work in IE 10 + if (factor != 0.0) { + // m = sqrt(dZdX^2 + dZdY^2); + float x = dFdx(depth); + float y = dFdy(depth); + float m = sqrt(x * x + y * y); + + // Apply the factor before computing the log depth. + depth += m * factor; + } +#endif + +#endif + + gl_FragDepth = log2(depth) * czm_oneOverLog2FarDepthFromNearPlusOne; + +#ifdef POLYGON_OFFSET + // Apply the units after the log depth. + gl_FragDepth += czm_epsilon7 * units; +#endif + +#endif +} + +/** + * Writes the fragment depth to the logarithmic depth buffer. + *

    + * Use this when the vertex shader calls {@link czm_vertexLogDepth}. + *

    + * + * @name czm_writeLogDepth + * @glslFunction + */ +void czm_writeLogDepth() { +#ifdef LOG_DEPTH + czm_writeLogDepth(v_depthFromNearPlusOne); +#endif +} +`;var BHt=y(C(),1),FG=`/** + * Transforms a value for non-perspective interpolation by multiplying + * it by w, the value used in the perspective divide. This function is + * intended to be called in a vertex shader to compute the value of a + * \`varying\` that should not be subject to perspective interpolation. + * For example, screen-space texture coordinates. The fragment shader + * must call {@link czm_readNonPerspective} to retrieve the final + * non-perspective value. + * + * @name czm_writeNonPerspective + * @glslFunction + * + * @param {float|vec2|vec3|vec4} value The value to be interpolated without accounting for perspective. + * @param {float} w The perspective divide value. Usually this is the computed \`gl_Position.w\`. + * @returns {float|vec2|vec3|vec4} The transformed value, intended to be stored in a \`varying\` and read in the + * fragment shader with {@link czm_readNonPerspective}. + */ +float czm_writeNonPerspective(float value, float w) { + return value * w; +} + +vec2 czm_writeNonPerspective(vec2 value, float w) { + return value * w; +} + +vec3 czm_writeNonPerspective(vec3 value, float w) { + return value * w; +} + +vec4 czm_writeNonPerspective(vec4 value, float w) { + return value * w; +} +`;var iC={czm_degreesPerRadian:cR,czm_depthRange:lR,czm_epsilon1:dR,czm_epsilon2:uR,czm_epsilon3:mR,czm_epsilon4:hR,czm_epsilon5:fR,czm_epsilon6:pR,czm_epsilon7:AR,czm_infinity:gR,czm_oneOverPi:bR,czm_oneOverTwoPi:yR,czm_passCesium3DTile:CR,czm_passCesium3DTileClassification:xR,czm_passCesium3DTileClassificationIgnoreShow:IR,czm_passClassification:_R,czm_passCompute:ER,czm_passEnvironment:TR,czm_passGaussianSplats:SR,czm_passGlobe:LR,czm_passOpaque:RR,czm_passOverlay:VR,czm_passTerrainClassification:GR,czm_passTranslucent:ZR,czm_passVoxels:BR,czm_pi:wR,czm_piOverFour:XR,czm_piOverSix:WR,czm_piOverThree:FR,czm_piOverTwo:PR,czm_radiansPerDegree:MR,czm_sceneMode2D:vR,czm_sceneMode3D:NR,czm_sceneModeColumbusView:DR,czm_sceneModeMorphing:QR,czm_solarRadius:UR,czm_threePiOver2:kR,czm_twoPi:YR,czm_webMercatorMaxLatitude:OR,czm_depthRangeStruct:HR,czm_material:zR,czm_materialInput:KR,czm_modelMaterial:JR,czm_modelVertexOutput:jR,czm_ray:qR,czm_raySegment:$R,czm_shadowParameters:eV,czm_HSBToRGB:tV,czm_HSLToRGB:nV,czm_RGBToHSB:iV,czm_RGBToHSL:oV,czm_RGBToXYZ:rV,czm_XYZToRGB:sV,czm_acesTonemapping:aV,czm_alphaWeight:cV,czm_antialias:lV,czm_applyHSBShift:dV,czm_approximateSphericalCoordinates:uV,czm_approximateTanh:mV,czm_backFacing:hV,czm_branchFreeTernary:fV,czm_cascadeColor:pV,czm_cascadeDistance:AV,czm_cascadeMatrix:gV,czm_cascadeWeights:bV,czm_clipPolygons:yV,czm_columbusViewMorph:CV,czm_computeAtmosphereColor:xV,czm_computeGroundAtmosphereScattering:IV,czm_computePosition:_V,czm_computeScattering:EV,czm_cosineAndSine:TV,czm_decompressTextureCoordinates:SV,czm_depthClamp:LV,czm_eastNorthUpToEyeCoordinates:RV,czm_ellipsoidContainsPoint:VV,czm_ellipsoidTextureCoordinates:GV,czm_equalsEpsilon:ZV,czm_eyeOffset:BV,czm_eyeToWindowCoordinates:wV,czm_fastApproximateAtan:XV,czm_fog:WV,czm_gammaCorrect:FV,czm_geodeticSurfaceNormal:PV,czm_getDefaultMaterial:MV,czm_getDynamicAtmosphereLightDirection:vV,czm_getLambertDiffuse:NV,czm_getSpecular:DV,czm_getWaterNoise:QV,czm_hue:UV,czm_inverseGamma:kV,czm_isEmpty:YV,czm_isFull:OV,czm_latitudeToWebMercatorFraction:HV,czm_lineDistance:zV,czm_linearToSrgb:KV,czm_luminance:JV,czm_maximumComponent:jV,czm_metersPerPixel:qV,czm_modelToWindowCoordinates:$V,czm_multiplyWithColorBalance:eG,czm_nearFarScalar:tG,czm_octDecode:nG,czm_packDepth:iG,czm_pbrLighting:oG,czm_pbrNeutralTonemapping:rG,czm_phong:sG,czm_planeDistance:aG,czm_pointAlongRay:cG,czm_rayEllipsoidIntersectionInterval:lG,czm_raySphereIntersectionInterval:dG,czm_readDepth:uG,czm_readNonPerspective:mG,czm_reverseLogDepth:hG,czm_round:fG,czm_saturation:pG,czm_shadowDepthCompare:AG,czm_shadowVisibility:gG,czm_signNotZero:bG,czm_sphericalHarmonics:yG,czm_srgbToLinear:CG,czm_tangentToEyeSpaceMatrix:xG,czm_textureCube:IG,czm_transformPlane:_G,czm_translateRelativeToEye:EG,czm_translucentPhong:TG,czm_transpose:SG,czm_unpackClippingExtents:LG,czm_unpackDepth:RG,czm_unpackFloat:VG,czm_unpackUint:GG,czm_valueTransform:ZG,czm_vertexLogDepth:BG,czm_windowToEyeCoordinates:wG,czm_writeDepthClamp:XG,czm_writeLogDepth:WG,czm_writeNonPerspective:FG};var uJt=y(C(),1);function KBe(e,t){let n=e;return n=n.replaceAll("version 300 es",""),n=n.replaceAll(/(texture\()/g,"texture2D("),t?(n=n.replaceAll(/\n\s*(in)\s+(vec\d|mat\d|float)/g,` +varying $2`),/out_FragData_(\d+)/.test(n)&&(n=`#extension GL_EXT_draw_buffers : enable +${n}`,n=n.replaceAll(/layout\s+\(location\s*=\s*\d+\)\s*out\s+vec4\s+out_FragData_\d+;/g,""),n=n.replaceAll(/out_FragData_(\d+)/g,"gl_FragData[$1]")),n=n.replaceAll(/layout\s+\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g,""),n=n.replaceAll(/out_FragColor/g,"gl_FragColor"),n=n.replaceAll(/out_FragColor\[(\d+)\]/g,"gl_FragColor[$1]"),/gl_FragDepth/.test(n)&&(n=`#extension GL_EXT_frag_depth : enable +${n}`,n=n.replaceAll(/gl_FragDepth/g,"gl_FragDepthEXT")),n=`#ifdef GL_EXT_shader_texture_lod +#extension GL_EXT_shader_texture_lod : enable +#endif +${n}`,n=`#ifdef GL_OES_standard_derivatives +#extension GL_OES_standard_derivatives : enable +#endif +${n}`):(n=n.replaceAll(/(in)\s+(vec\d|mat\d|float)/g,"attribute $2"),n=n.replaceAll(/(out)\s+(vec\d|mat\d|float)\s+([\w]+);/g,"varying $2 $3;")),n=`#version 100 +${n}`,n}var PG=KBe;function $ie(e){return e=e.replace(/\/\/.*/g,""),e.replace(/\/\*\*[\s\S]*?\*\//gm,function(t){let n=t.match(/\n/gm).length,i="";for(let o=0;o0;){let o=e.pop();n.push(o),o.requiredBy.length===0&&t.push(o)}for(;t.length>0;){let o=t.shift();e.push(o);for(let r=0;r=0;--o)i=`${i+t[o].glslSource} +`;return i.replace(n.glslSource,"")}function noe(e,t,n){let i,o,r="",s=e.sources;if(l(s))for(i=0,o=s.length;i planes2D_high.w): + // - If this vertex is on the east side of the IDL (position3DLow.y > 0.0, comparison with position3DHigh may produce artifacts) + // - existing "east" is on the wrong side of the world, far away (planes2D_high/low.w) + // - so set "east" as beyond the eastmost extent of the projection (idlSplitNewPlaneHiLow) + vec2 idlSplitNewPlaneHiLow = vec2(EAST_MOST_X_HIGH - (WEST_MOST_X_HIGH - planes2D_high.w), EAST_MOST_X_LOW - (WEST_MOST_X_LOW - planes2D_low.w)); + bool idlSplit = planes2D_high.x > planes2D_high.w && position3DLow.y > 0.0; + planes2D_high.w = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.x, planes2D_high.w); + planes2D_low.w = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.y, planes2D_low.w); + + // - else, if this vertex is on the west side of the IDL (position3DLow.y < 0.0) + // - existing "west" is on the wrong side of the world, far away (planes2D_high/low.x) + // - so set "west" as beyond the westmost extent of the projection (idlSplitNewPlaneHiLow) + idlSplit = planes2D_high.x > planes2D_high.w && position3DLow.y < 0.0; + idlSplitNewPlaneHiLow = vec2(WEST_MOST_X_HIGH - (EAST_MOST_X_HIGH - planes2D_high.x), WEST_MOST_X_LOW - (EAST_MOST_X_LOW - planes2D_low.x)); + planes2D_high.x = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.x, planes2D_high.x); + planes2D_low.x = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.y, planes2D_low.x); + + vec3 southWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.xy), vec3(0.0, planes2D_low.xy))).xyz; + vec3 northWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.x, planes2D_high.z), vec3(0.0, planes2D_low.x, planes2D_low.z))).xyz; + vec3 southEastCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.w, planes2D_high.y), vec3(0.0, planes2D_low.w, planes2D_low.y))).xyz; +#else // COLUMBUS_VIEW_2D + // 3D case has smaller "plane extents," so planes encoded as a 64 bit position and 2 vec3s for distances/direction + vec3 southWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(czm_batchTable_southWest_HIGH(batchId), czm_batchTable_southWest_LOW(batchId))).xyz; + vec3 northWestCorner = czm_normal * czm_batchTable_northward(batchId) + southWestCorner; + vec3 southEastCorner = czm_normal * czm_batchTable_eastward(batchId) + southWestCorner; +#endif // COLUMBUS_VIEW_2D + + vec3 eastWard = southEastCorner - southWestCorner; + float eastExtent = length(eastWard); + eastWard /= eastExtent; + + vec3 northWard = northWestCorner - southWestCorner; + float northExtent = length(northWard); + northWard /= northExtent; + + v_westPlane = vec4(eastWard, -dot(eastWard, southWestCorner)); + v_southPlane = vec4(northWard, -dot(northWard, southWestCorner)); + v_inversePlaneExtents = vec2(1.0 / eastExtent, 1.0 / northExtent); +#endif // SPHERICAL + vec4 uvMinAndExtents = czm_batchTable_uvMinAndExtents(batchId); + vec4 uMaxVmax = czm_batchTable_uMaxVmax(batchId); + + v_uMaxAndInverseDistance = vec3(uMaxVmax.xy, uvMinAndExtents.z); + v_vMaxAndInverseDistance = vec3(uMaxVmax.zw, uvMinAndExtents.w); + v_uvMinAndSphericalLongitudeRotation.xy = uvMinAndExtents.xy; +#endif // TEXTURE_COORDINATES + +#ifdef PER_INSTANCE_COLOR + v_color = czm_batchTable_color(batchId); +#endif + + gl_Position = czm_depthClamp(czm_modelViewProjectionRelativeToEye * position); +} +`;var IJt=y(C(),1),Eb=`#ifdef VECTOR_TILE +uniform vec4 u_highlightColor; +#endif + +void main(void) +{ +#ifdef VECTOR_TILE + out_FragColor = czm_gammaCorrect(u_highlightColor); +#else + out_FragColor = vec4(1.0); +#endif + czm_writeDepthClamp(); +} +`;var EJt=y(C(),1),roe={TERRAIN:0,CESIUM_3D_TILE:1,BOTH:2};roe.NUMBER_OF_CLASSIFICATION_TYPES=3;var $n=Object.freeze(roe);var LJt=y(C(),1);var twe={NEVER:ne.NEVER,LESS:ne.LESS,EQUAL:ne.EQUAL,LESS_OR_EQUAL:ne.LEQUAL,GREATER:ne.GREATER,NOT_EQUAL:ne.NOTEQUAL,GREATER_OR_EQUAL:ne.GEQUAL,ALWAYS:ne.ALWAYS},Fa=Object.freeze(twe);var ojt=y(C(),1);var VJt=y(C(),1);function nwe(e,t){let n=[],i=e.length,o=0;for(;oJl.MaximumLatitude?e=Jl.MaximumLatitude:e<-Jl.MaximumLatitude&&(e=-Jl.MaximumLatitude);let t=Math.sin(e);return .5*Math.log((1+t)/(1-t))};Jl.MaximumLatitude=Jl.mercatorAngleToGeodeticLatitude(Math.PI);Jl.prototype.project=function(e,t){let n=this._semimajorAxis,i=e.longitude*n,o=Jl.geodeticLatitudeToMercatorAngle(e.latitude)*n,r=e.height;return l(t)?(t.x=i,t.y=o,t.z=r,t):new m(i,o,r)};Jl.prototype.unproject=function(e,t){let n=this._oneOverSemimajorAxis,i=e.x*n,o=Jl.mercatorAngleToGeodeticLatitude(e.y*n),r=e.z;return l(t)?(t.longitude=i,t.latitude=o,t.height=r,t):new ge(i,o,r)};var Ui=Jl;function Awe(e,t,n){let i=!n,o=e.length,r;if(!i&&o>1){let s=e[0].modelMatrix;for(r=1;r=0){let d=i[a];o=d.offset+d.count,s=d.index,r=n[s].indices.length}else o=0,s=0,r=n[s].indices.length;let c=e.length;for(let d=0;dr&&(o=0,r=n[++s].indices.length),i.push({index:s,offset:o,count:p}),o+=p}}function ywe(e,t){let n=[];return mH(e,"geometry",t,n),mH(e,"westHemisphereGeometry",t,n),mH(e,"eastHemisphereGeometry",t,n),n}var oA={};oA.combineGeometry=function(e){let t,n,i=e.instances,o=i.length,r,s,a=!1;o>0&&(t=bwe(e),t.length>0&&(n=Yn.createAttributeLocations(t[0]),e.createPickOffsets&&(r=ywe(i,t))),l(i[0].attributes)&&l(i[0].attributes.offset)&&(s=new Array(o),a=!0));let c=new Array(o),d=new Array(o);for(let u=0;u0&&(n.set(c.indices,s),s+=f)}return t.push(n.buffer),{stringTable:i,packedData:n}};oA.unpackCreateGeometryResults=function(e){let t=e.stringTable,n=e.packedData,i,o=new Array(n[0]),r=0,s=1;for(;s0){let R=x.length/I;for(S=Me.createTypedArray(R,b),i=0;i= nearSq && distanceSq <= farSq) ? 1.0 : 0.0; + gl_Position *= show; +}`,`${i} +${o}`};function moe(e,t){if(!e.compressVertices)return t;let n=t.search(/in\s+vec3\s+normal;/g)!==-1,i=t.search(/in\s+vec2\s+st;/g)!==-1;if(!n&&!i)return t;let o=t.search(/in\s+vec3\s+tangent;/g)!==-1,r=t.search(/in\s+vec3\s+bitangent;/g)!==-1,s=i&&n?2:1;s+=o||r?1:0;let a=s>1?`vec${s}`:"float",c="compressedAttributes",d=`in ${a} ${c};`,u="",h="";if(i){u+=`vec2 st; +`;let f=s>1?`${c}.x`:c;h+=` st = czm_decompressTextureCoordinates(${f}); +`}n&&o&&r?(u+=`vec3 normal; +vec3 tangent; +vec3 bitangent; +`,h+=` czm_octDecode(${c}.${i?"yz":"xy"}, normal, tangent, bitangent); +`):(n&&(u+=`vec3 normal; +`,h+=` normal = czm_octDecode(${c}${s>1?`.${i?"y":"x"}`:""}); +`),o&&(u+=`vec3 tangent; +`,h+=` tangent = czm_octDecode(${c}.${i&&n?"z":"y"}); +`),r&&(u+=`vec3 bitangent; +`,h+=` bitangent = czm_octDecode(${c}.${i&&n?"z":"y"}); +`));let p=t;p=p.replace(/in\s+vec3\s+normal;/g,""),p=p.replace(/in\s+vec2\s+st;/g,""),p=p.replace(/in\s+vec3\s+tangent;/g,""),p=p.replace(/in\s+vec3\s+bitangent;/g,""),p=Oe.replaceMain(p,"czm_non_compressed_main");let g=`void main() +{ +${h} czm_non_compressed_main(); +}`;return[d,u,p,g].join(` +`)}function Xwe(e){let t=Oe.replaceMain(e,"czm_non_depth_clamp_main");return t+=`void main() { + czm_non_depth_clamp_main(); + gl_Position = czm_depthClamp(gl_Position);} +`,t}function Wwe(e){let t=Oe.replaceMain(e,"czm_non_depth_clamp_main");return t+=`void main() { + czm_non_depth_clamp_main(); + #if defined(LOG_DEPTH) + czm_writeLogDepth(); + #else + czm_writeDepthClamp(); + #endif +} +`,t}function hoe(e,t){let n=e.vertexAttributes}function Fwe(e,t){return function(){return e[t]}}var hH=Math.max(Ht.hardwareConcurrency-1,1),VD,Pwe=new hi("combineGeometry");function Mwe(e,t){let n,i,o,r,s=e._instanceIds;if(e._state===Nr.READY){n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances];let a=e._numberOfInstances=n.length,c=[],d=[];for(o=0;o0){let b=new Float64Array(h);for(f=[b.buffer],r=0;r0?(e._recomputeBoundingSpheres=!0,e._state=Nr.COMBINED):QG(e,t,Nr.FAILED,void 0)}).catch(function(h){QG(e,t,Nr.FAILED,h)})}}function vwe(e,t){let n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances],i=e._numberOfInstances=n.length,o=new Array(i),r=e._instanceIds,s,a,c=0;for(a=0;a0?(e._recomputeBoundingSpheres=!0,e._state=Nr.COMBINED):QG(e,t,Nr.FAILED,void 0)}function Nwe(e,t){let n=e._batchTableAttributeIndices.offset;if(!e._recomputeBoundingSpheres||!l(n)){e._recomputeBoundingSpheres=!1;return}let i,o=e._offsetInstanceExtend,r=e._instanceBoundingSpheres,s=r.length,a=e._tempBoundingSpheres;if(!l(a)){for(a=new Array(s),i=0;i0||ue.intersectPlane(b,An.ORIGIN_ZX_PLANE)!==on.INTERSECTING?c.push(b):(d.push(b),u.push(b))}let h=c[0],p=u[0],g=d[0];for(i=1;i0){if(Kt.maximumVertexTextureImageUnits===0)throw new de("Vertex texture fetch support is required to render primitives with per-instance attributes. The maximum number of vertex texture image units must be greater than zero.");this._batchTable.update(e)}if(this._state!==Nr.COMPLETE&&this._state!==Nr.COMBINED&&(this.asynchronous?Mwe(this,e):vwe(this,e)),this._state===Nr.COMBINED&&(Dwe(this,e),poe(this,e),Uwe(this,e)),!this.show||this._state!==Nr.COMPLETE)return;this._batchTableOffsetsUpdated||poe(this,e),this._recomputeBoundingSpheres&&Nwe(this,e);let n=this.appearance,i=n.material,o=!1,r=!1;this._appearance!==n?(this._appearance=n,this._material=i,o=!0,r=!0):this._material!==i&&(this._material=i,r=!0);let s=this.depthFailAppearance,a=l(s)?s.material:void 0;this._depthFailAppearance!==s?(this._depthFailAppearance=s,this._depthFailMaterial=a,o=!0,r=!0):this._depthFailMaterial!==a&&(this._depthFailMaterial=a,r=!0);let c=this._appearance.isTranslucent();this._translucent!==c&&(this._translucent=c,o=!0),l(this._material)&&this._material.update(t);let d=n.closed&&c;o&&(this._createRenderStatesFunction??kwe)(this,t,n,d),r&&(this._createShaderProgramFunction??Ywe)(this,e,n),(o||r)&&(this._createCommandsFunction??Owe)(this,n,i,c,d,this._colorCommands,this._pickCommands,e),(this._updateAndQueueCommandsFunction??Hwe)(this,e,this._colorCommands,this._pickCommands,this.modelMatrix,this.cull,this.debugShowBoundingVolume,d)};var zwe=new ue,Kwe=new ue;function _oe(e,t,n){if(n===pn.TOP){let i=ue.clone(e,zwe),o=ue.clone(e,Kwe);o.center=m.add(o.center,t,o.center),e=ue.union(i,o,e)}else n===pn.ALL&&(e.center=m.add(e.center,t,e.center));return e}function Jwe(e,t,n){return function(){let i=e.getBatchedAttribute(t,n),o=e.attributes[n],r=o.componentsPerAttribute,s=J.createTypedArray(o.componentDatatype,r);return l(i.constructor.pack)?i.constructor.pack(i,s,0):s[0]=i,s}}function jwe(e,t,n,i,o){return function(r){let s=yoe(r);e.setBatchedAttribute(t,n,s),o==="offset"&&(i._recomputeBoundingSpheres=!0,i._batchTableOffsetsUpdated=!1)}}var qwe=new m;function $we(e,t,n){t.boundingSphere={get:function(){let i=e._instanceBoundingSpheres[n];if(l(i)){i=i.clone();let o=e.modelMatrix,r=t.offset;l(r)&&_oe(i,m.fromArray(r.get(),0,qwe),e._offsetInstanceExtend[n]),l(o)&&(i=ue.transform(i,o))}return i}},t.boundingSphereCV={get:function(){return e._instanceBoundingSpheresCV[n]}}}function eXe(e,t,n){t.pickId={get:function(){return e._pickIds[n]}}}Dr.prototype.getGeometryInstanceAttributes=function(e){let t=this._perInstanceAttributeCache.get(e);if(l(t))return t;let n=-1,i=this._lastPerInstanceAttributeIndex,o=this._instanceIds,r=o.length;for(let d=0;d 0.0 && upOrRightInBounds.x && upOrRightInBounds.y); + float useDownOrLeft = float(useUpOrRight == 0.0); + vec3 upOrRightEC = getEyeCoordinate3FromWindowCoordinate(glFragCoordXY + positiveOffset, upOrRightLogDepth); + vec3 downOrLeftEC = getEyeCoordinate3FromWindowCoordinate(glFragCoordXY - positiveOffset, downOrLeftLogDepth); + return (upOrRightEC - (eyeCoordinate.xyz / eyeCoordinate.w)) * useUpOrRight + ((eyeCoordinate.xyz / eyeCoordinate.w) - downOrLeftEC) * useDownOrLeft; +} +#endif // NORMAL_EC + +void main(void) +{ +#ifdef REQUIRES_EC + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw)); + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); +#endif + +#ifdef REQUIRES_WC + vec4 worldCoordinate4 = czm_inverseView * eyeCoordinate; + vec3 worldCoordinate = worldCoordinate4.xyz / worldCoordinate4.w; +#endif + +#ifdef TEXTURE_COORDINATES + vec2 uv; +#ifdef SPHERICAL + // Treat world coords as a sphere normal for spherical coordinates + vec2 sphericalLatLong = czm_approximateSphericalCoordinates(worldCoordinate); + sphericalLatLong.y += v_uvMinAndSphericalLongitudeRotation.z; + sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi); + uv.x = (sphericalLatLong.y - v_sphericalExtents.y) * v_sphericalExtents.w; + uv.y = (sphericalLatLong.x - v_sphericalExtents.x) * v_sphericalExtents.z; +#else // SPHERICAL + // Unpack planes and transform to eye space + uv.x = czm_planeDistance(v_westPlane, eyeCoordinate.xyz / eyeCoordinate.w) * v_inversePlaneExtents.x; + uv.y = czm_planeDistance(v_southPlane, eyeCoordinate.xyz / eyeCoordinate.w) * v_inversePlaneExtents.y; +#endif // SPHERICAL +#endif // TEXTURE_COORDINATES + +#ifdef PICK +#ifdef CULL_FRAGMENTS + // When classifying translucent geometry, logDepthOrDepth == 0.0 + // indicates a region that should not be classified, possibly due to there + // being opaque pixels there in another buffer. + // Check for logDepthOrDepth != 0.0 to make sure this should be classified. + if (0.0 <= uv.x && uv.x <= 1.0 && 0.0 <= uv.y && uv.y <= 1.0 || logDepthOrDepth != 0.0) { + out_FragColor.a = 1.0; // 0.0 alpha leads to discard from ShaderSource.createPickFragmentShaderSource + czm_writeDepthClamp(); + } +#else // CULL_FRAGMENTS + out_FragColor.a = 1.0; +#endif // CULL_FRAGMENTS +#else // PICK + +#ifdef CULL_FRAGMENTS + // When classifying translucent geometry, logDepthOrDepth == 0.0 + // indicates a region that should not be classified, possibly due to there + // being opaque pixels there in another buffer. + if (uv.x <= 0.0 || 1.0 <= uv.x || uv.y <= 0.0 || 1.0 <= uv.y || logDepthOrDepth == 0.0) { + discard; + } +#endif + +#ifdef NORMAL_EC + // Compute normal by sampling adjacent pixels in 2x2 block in screen space + vec3 downUp = vectorFromOffset(eyeCoordinate, vec2(0.0, 1.0)); + vec3 leftRight = vectorFromOffset(eyeCoordinate, vec2(1.0, 0.0)); + vec3 normalEC = normalize(cross(leftRight, downUp)); +#endif + + +#ifdef PER_INSTANCE_COLOR + + vec4 color = czm_gammaCorrect(v_color); +#ifdef FLAT + out_FragColor = color; +#else // FLAT + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.positionToEyeEC = -eyeCoordinate.xyz; + czm_material material = czm_getDefaultMaterial(materialInput); + material.diffuse = color.rgb; + material.alpha = color.a; + + out_FragColor = czm_phong(normalize(-eyeCoordinate.xyz), material, czm_lightDirectionEC); +#endif // FLAT + + // Premultiply alpha. Required for classification primitives on translucent globe. + out_FragColor.rgb *= out_FragColor.a; + +#else // PER_INSTANCE_COLOR + + // Material support. + // USES_ is distinct from REQUIRES_, because some things are dependencies of each other or + // dependencies for culling but might not actually be used by the material. + + czm_materialInput materialInput; + +#ifdef USES_NORMAL_EC + materialInput.normalEC = normalEC; +#endif + +#ifdef USES_POSITION_TO_EYE_EC + materialInput.positionToEyeEC = -eyeCoordinate.xyz; +#endif + +#ifdef USES_TANGENT_TO_EYE + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(worldCoordinate, normalEC); +#endif + +#ifdef USES_ST + // Remap texture coordinates from computed (approximately aligned with cartographic space) to the desired + // texture coordinate system, which typically forms a tight oriented bounding box around the geometry. + // Shader is provided a set of reference points for remapping. + materialInput.st.x = czm_lineDistance(v_uvMinAndSphericalLongitudeRotation.xy, v_uMaxAndInverseDistance.xy, uv) * v_uMaxAndInverseDistance.z; + materialInput.st.y = czm_lineDistance(v_uvMinAndSphericalLongitudeRotation.xy, v_vMaxAndInverseDistance.xy, uv) * v_vMaxAndInverseDistance.z; +#endif + + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else // FLAT + out_FragColor = czm_phong(normalize(-eyeCoordinate.xyz), material, czm_lightDirectionEC); +#endif // FLAT + + // Premultiply alpha. Required for classification primitives on translucent globe. + out_FragColor.rgb *= out_FragColor.a; + +#endif // PER_INSTANCE_COLOR + czm_writeDepthClamp(); +#endif // PICK +} +`;function Hu(e,t,n){this._projectionExtentDefines={eastMostYhighDefine:"",eastMostYlowDefine:"",westMostYhighDefine:"",westMostYlowDefine:""};let i=new pH;i.requiresTextureCoordinates=e,i.requiresEC=!n.flat;let o=new pH;if(o.requiresTextureCoordinates=e,n instanceof yn)i.requiresNormalEC=!n.flat;else{let r=`${n.material.shaderSource} +${n.fragmentShaderSource}`;i.normalEC=r.indexOf("materialInput.normalEC")!==-1||r.indexOf("czm_getDefaultMaterial")!==-1,i.positionToEyeEC=r.indexOf("materialInput.positionToEyeEC")!==-1,i.tangentToEyeMatrix=r.indexOf("materialInput.tangentToEyeMatrix")!==-1,i.st=r.indexOf("materialInput.st")!==-1}this._colorShaderDependencies=i,this._pickShaderDependencies=o,this._appearance=n,this._extentsCulling=e,this._planarExtents=t}Hu.prototype.createFragmentShader=function(e){let t=this._appearance,n=this._colorShaderDependencies,i=[];!e&&!this._planarExtents&&i.push("SPHERICAL"),n.requiresEC&&i.push("REQUIRES_EC"),n.requiresWC&&i.push("REQUIRES_WC"),n.requiresTextureCoordinates&&i.push("TEXTURE_COORDINATES"),this._extentsCulling&&i.push("CULL_FRAGMENTS"),n.requiresNormalEC&&i.push("NORMAL_EC"),t instanceof yn&&i.push("PER_INSTANCE_COLOR"),n.normalEC&&i.push("USES_NORMAL_EC"),n.positionToEyeEC&&i.push("USES_POSITION_TO_EYE_EC"),n.tangentToEyeMatrix&&i.push("USES_TANGENT_TO_EYE"),n.st&&i.push("USES_ST"),t.flat&&i.push("FLAT");let o="";return t instanceof yn||(o=t.material.shaderSource),new Oe({defines:i,sources:[o,j_]})};Hu.prototype.createPickFragmentShader=function(e){let t=this._pickShaderDependencies,n=["PICK"];return!e&&!this._planarExtents&&n.push("SPHERICAL"),t.requiresEC&&n.push("REQUIRES_EC"),t.requiresWC&&n.push("REQUIRES_WC"),t.requiresTextureCoordinates&&n.push("TEXTURE_COORDINATES"),this._extentsCulling&&n.push("CULL_FRAGMENTS"),new Oe({defines:n,sources:[j_],pickColorQualifier:"in"})};Hu.prototype.createVertexShader=function(e,t,n,i){return Zoe(this._colorShaderDependencies,this._planarExtents,n,e,t,this._appearance,i,this._projectionExtentDefines)};Hu.prototype.createPickVertexShader=function(e,t,n,i){return Zoe(this._pickShaderDependencies,this._planarExtents,n,e,t,void 0,i,this._projectionExtentDefines)};var Eoe=new m,Toe=new ge,Soe={high:0,low:0};function Zoe(e,t,n,i,o,r,s,a){let c=i.slice();if(a.eastMostYhighDefine===""){let d=Toe;d.longitude=Z.PI,d.latitude=0,d.height=0;let u=s.project(d,Eoe),h=ni.encode(u.x,Soe);a.eastMostYhighDefine=`EAST_MOST_X_HIGH ${h.high.toFixed(`${h.high}`.length+1)}`,a.eastMostYlowDefine=`EAST_MOST_X_LOW ${h.low.toFixed(`${h.low}`.length+1)}`;let p=Toe;p.longitude=-Z.PI,p.latitude=0,p.height=0;let g=s.project(p,Eoe);h=ni.encode(g.x,Soe),a.westMostYhighDefine=`WEST_MOST_X_HIGH ${h.high.toFixed(`${h.high}`.length+1)}`,a.westMostYlowDefine=`WEST_MOST_X_LOW ${h.low.toFixed(`${h.low}`.length+1)}`}return n&&(c.push(a.eastMostYhighDefine),c.push(a.eastMostYlowDefine),c.push(a.westMostYhighDefine),c.push(a.westMostYlowDefine)),l(r)&&r instanceof yn&&c.push("PER_INSTANCE_COLOR"),e.requiresTextureCoordinates&&(c.push("TEXTURE_COORDINATES"),t||n||c.push("SPHERICAL"),n&&c.push("COLUMBUS_VIEW_2D")),new Oe({defines:c,sources:[o]})}function pH(){this._requiresEC=!1,this._requiresWC=!1,this._requiresNormalEC=!1,this._requiresTextureCoordinates=!1,this._usesNormalEC=!1,this._usesPositionToEyeEC=!1,this._usesTangentToEyeMat=!1,this._usesSt=!1}Object.defineProperties(pH.prototype,{requiresEC:{get:function(){return this._requiresEC},set:function(e){this._requiresEC=e||this._requiresEC}},requiresWC:{get:function(){return this._requiresWC},set:function(e){this._requiresWC=e||this._requiresWC,this.requiresEC=this._requiresWC}},requiresNormalEC:{get:function(){return this._requiresNormalEC},set:function(e){this._requiresNormalEC=e||this._requiresNormalEC,this.requiresEC=this._requiresNormalEC}},requiresTextureCoordinates:{get:function(){return this._requiresTextureCoordinates},set:function(e){this._requiresTextureCoordinates=e||this._requiresTextureCoordinates,this.requiresWC=this._requiresTextureCoordinates}},normalEC:{set:function(e){this.requiresNormalEC=e,this._usesNormalEC=e},get:function(){return this._usesNormalEC}},tangentToEyeMatrix:{set:function(e){this.requiresWC=e,this.requiresNormalEC=e,this._usesTangentToEyeMat=e},get:function(){return this._usesTangentToEyeMat}},positionToEyeEC:{set:function(e){this.requiresEC=e,this._usesPositionToEyeEC=e},get:function(){return this._usesPositionToEyeEC}},st:{set:function(e){this.requiresTextureCoordinates=e,this._usesSt=e},get:function(){return this._usesSt}}});function Loe(e,t,n){return Math.abs((t.y-e.y)*n.x-(t.x-e.x)*n.y+t.x*e.y-t.y*e.x)/D.distance(t,e)}var nXe=[new D,new D,new D,new D];function Boe(e,t){let n=nXe,i=D.unpack(t,0,n[0]),o=D.unpack(t,2,n[1]),r=D.unpack(t,4,n[2]);e.uMaxVmax=new Gc({componentDatatype:J.FLOAT,componentsPerAttribute:4,normalize:!1,value:[o.x,o.y,r.x,r.y]});let s=1/Loe(i,o,r),a=1/Loe(i,r,o);e.uvMinAndExtents=new Gc({componentDatatype:J.FLOAT,componentsPerAttribute:4,normalize:!1,value:[i.x,i.y,s,a]})}var woe=new ge,Xoe=new m,iXe=new m,oXe=new m,GD={high:0,low:0};function Woe(e,t,n){let i=woe;i.height=0,i.longitude=e.west,i.latitude=e.south;let o=t.project(i,Xoe);i.latitude=e.north;let r=t.project(i,iXe);i.longitude=e.east,i.latitude=e.south;let s=t.project(i,oXe),a=[0,0,0,0],c=[0,0,0,0],d=ni.encode(o.x,GD);a[0]=d.high,c[0]=d.low,d=ni.encode(o.y,GD),a[1]=d.high,c[1]=d.low,d=ni.encode(r.y,GD),a[2]=d.high,c[2]=d.low,d=ni.encode(s.x,GD),a[3]=d.high,c[3]=d.low,n.planes2D_HIGH=new Gc({componentDatatype:J.FLOAT,componentsPerAttribute:4,normalize:!1,value:a}),n.planes2D_LOW=new Gc({componentDatatype:J.FLOAT,componentsPerAttribute:4,normalize:!1,value:c})}var rXe=new X,sXe=new X,Roe=new m,aXe=new ge,cXe=[new ge,new ge,new ge,new ge,new ge,new ge,new ge,new ge];function lXe(e,t,n,i,o,r){let s=le.center(e,aXe);s.height=n;let a=ge.toCartesian(s,t,Roe),c=Dt.eastNorthUpToFixedFrame(a,t,rXe),d=X.inverse(c,sXe),u=e.west,h=e.east,p=e.north,g=e.south,f=cXe;f[0].latitude=g,f[0].longitude=u,f[1].latitude=p,f[1].longitude=u,f[2].latitude=p,f[2].longitude=h,f[3].latitude=g,f[3].longitude=h;let b=(u+h)*.5,x=(p+g)*.5;f[4].latitude=g,f[4].longitude=b,f[5].latitude=p,f[5].longitude=b,f[6].latitude=x,f[6].longitude=u,f[7].latitude=x,f[7].longitude=h;let I=Number.POSITIVE_INFINITY,_=Number.NEGATIVE_INFINITY,E=Number.POSITIVE_INFINITY,S=Number.NEGATIVE_INFINITY;for(let w=0;w<8;w++){f[w].height=n;let F=ge.toCartesian(f[w],t,Roe);X.multiplyByPoint(d,F,F),F.z=0,I=Math.min(I,F.x),_=Math.max(_,F.x),E=Math.min(E,F.y),S=Math.max(S,F.y)}let R=i;R.x=I,R.y=E,R.z=0,X.multiplyByPoint(c,R,R);let G=o;G.x=_,G.y=E,G.z=0,X.multiplyByPoint(c,G,G),m.subtract(G,R,o);let B=r;B.x=I,B.y=S,B.z=0,X.multiplyByPoint(c,B,B),m.subtract(B,R,r)}var dXe=new m,uXe=new m,mXe=new ni;Hu.getPlanarTextureCoordinateAttributes=function(e,t,n,i,o){let r=Xoe,s=dXe,a=uXe;lXe(e,n,o??0,r,s,a);let c={};Boe(c,t);let d=ni.fromCartesian(r,mXe);return c.southWest_HIGH=new Gc({componentDatatype:J.FLOAT,componentsPerAttribute:3,normalize:!1,value:m.pack(d.high,[0,0,0])}),c.southWest_LOW=new Gc({componentDatatype:J.FLOAT,componentsPerAttribute:3,normalize:!1,value:m.pack(d.low,[0,0,0])}),c.eastward=new Gc({componentDatatype:J.FLOAT,componentsPerAttribute:3,normalize:!1,value:m.pack(s,[0,0,0])}),c.northward=new Gc({componentDatatype:J.FLOAT,componentsPerAttribute:3,normalize:!1,value:m.pack(a,[0,0,0])}),Woe(e,i,c),c};var hXe=new m;function Voe(e,t,n,i){let o=woe;o.latitude=e,o.longitude=t,o.height=0;let r=ge.toCartesian(o,n,hXe),s=Math.sqrt(r.x*r.x+r.y*r.y),a=Z.fastApproximateAtan2(s,r.z),c=Z.fastApproximateAtan2(r.x,r.y);return i.x=a,i.y=c,i}var Goe=new D;Hu.getSphericalExtentGeometryInstanceAttributes=function(e,t,n,i){let o=Voe(e.south,e.west,n,Goe),r=o.x,s=o.y,a=Voe(e.north,e.east,n,Goe),c=a.x,d=a.y,u=0;s>d&&(u=Z.PI-s,s=-Z.PI,d+=u),r-=Z.EPSILON5,s-=Z.EPSILON5,c+=Z.EPSILON5,d+=Z.EPSILON5;let h=1/(d-s),p=1/(c-r),g={sphericalExtents:new Gc({componentDatatype:J.FLOAT,componentsPerAttribute:4,normalize:!1,value:[r,s,p,h]}),longitudeRotation:new Gc({componentDatatype:J.FLOAT,componentsPerAttribute:1,normalize:!1,value:[u]})};return Boe(g,t),Woe(e,i,g),g};Hu.hasAttributesForTextureCoordinatePlanes=function(e){return l(e.southWest_HIGH)&&l(e.southWest_LOW)&&l(e.northward)&&l(e.eastward)&&l(e.planes2D_HIGH)&&l(e.planes2D_LOW)&&l(e.uMaxVmax)&&l(e.uvMinAndExtents)};Hu.hasAttributesForSphericalExtents=function(e){return l(e.sphericalExtents)&&l(e.longitudeRotation)&&l(e.planes2D_HIGH)&&l(e.planes2D_LOW)&&l(e.uMaxVmax)&&l(e.uvMinAndExtents)};function fXe(e){return Math.max(e.width,e.height)>Hu.MAX_WIDTH_FOR_PLANAR_EXTENTS}Hu.shouldUseSphericalCoordinates=function(e){return fXe(e)};Hu.MAX_WIDTH_FOR_PLANAR_EXTENTS=Z.toRadians(1);var Pd=Hu;var Wjt=y(C(),1);var Rjt=y(C(),1);var pXe={NEVER:ne.NEVER,LESS:ne.LESS,EQUAL:ne.EQUAL,LESS_OR_EQUAL:ne.LEQUAL,GREATER:ne.GREATER,NOT_EQUAL:ne.NOTEQUAL,GREATER_OR_EQUAL:ne.GEQUAL,ALWAYS:ne.ALWAYS},ei=Object.freeze(pXe);var Zjt=y(C(),1);var AXe={ZERO:ne.ZERO,KEEP:ne.KEEP,REPLACE:ne.REPLACE,INCREMENT:ne.INCR,DECREMENT:ne.DECR,INVERT:ne.INVERT,INCREMENT_WRAP:ne.INCR_WRAP,DECREMENT_WRAP:ne.DECR_WRAP},Ct=Object.freeze(AXe);var ZD={CESIUM_3D_TILE_MASK:128,SKIP_LOD_MASK:112,SKIP_LOD_BIT_SHIFT:4,CLASSIFICATION_MASK:15};ZD.setCesium3DTileBit=function(){return{enabled:!0,frontFunction:ei.ALWAYS,frontOperation:{fail:Ct.KEEP,zFail:Ct.KEEP,zPass:Ct.REPLACE},backFunction:ei.ALWAYS,backOperation:{fail:Ct.KEEP,zFail:Ct.KEEP,zPass:Ct.REPLACE},reference:ZD.CESIUM_3D_TILE_MASK,mask:ZD.CESIUM_3D_TILE_MASK}};var jt=Object.freeze(ZD);function sC(e){e=e??Y.EMPTY_OBJECT;let t=e.geometryInstances;this.geometryInstances=t,this.show=e.show??!0,this.classificationType=e.classificationType??$n.BOTH,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowShadowVolume=e.debugShowShadowVolume??!1,this._debugShowShadowVolume=!1,this._extruded=e._extruded??!1,this._uniformMap=e._uniformMap,this._sp=void 0,this._spStencil=void 0,this._spPick=void 0,this._spColor=void 0,this._spPick2D=void 0,this._spColor2D=void 0,this._rsStencilDepthPass=void 0,this._rsStencilDepthPass3DTiles=void 0,this._rsColorPass=void 0,this._rsPickPass=void 0,this._commandsIgnoreShow=[],this._ready=!1,this._primitive=void 0,this._pickPrimitive=e._pickPrimitive,this._hasSphericalExtentsAttribute=!1,this._hasPlanarExtentsAttributes=!1,this._hasPerColorAttribute=!1,this.appearance=e.appearance,this._createBoundingVolumeFunction=e._createBoundingVolumeFunction,this._updateAndQueueCommandsFunction=e._updateAndQueueCommandsFunction,this._usePickOffsets=!1,this._primitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:e.vertexCacheOptimize??!1,interleave:e.interleave??!1,releaseGeometryInstances:e.releaseGeometryInstances??!0,allowPicking:e.allowPicking??!0,asynchronous:e.asynchronous??!0,compressVertices:e.compressVertices??!0,_createBoundingVolumeFunction:void 0,_createRenderStatesFunction:void 0,_createShaderProgramFunction:void 0,_createCommandsFunction:void 0,_updateAndQueueCommandsFunction:void 0,_createPickOffsets:!0}}Object.defineProperties(sC.prototype,{vertexCacheOptimize:{get:function(){return this._primitiveOptions.vertexCacheOptimize}},interleave:{get:function(){return this._primitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._primitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._primitiveOptions.allowPicking}},asynchronous:{get:function(){return this._primitiveOptions.asynchronous}},compressVertices:{get:function(){return this._primitiveOptions.compressVertices}},ready:{get:function(){return this._ready}},_needs2DShader:{get:function(){return this._hasPlanarExtentsAttributes||this._hasSphericalExtentsAttribute}}});sC.isSupported=function(e){return e.context.stencilBuffer};function q_(e,t){let n=t?ei.EQUAL:ei.ALWAYS;return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:e,frontFunction:n,frontOperation:{fail:Ct.KEEP,zFail:Ct.DECREMENT_WRAP,zPass:Ct.KEEP},backFunction:n,backOperation:{fail:Ct.KEEP,zFail:Ct.INCREMENT_WRAP,zPass:Ct.KEEP},reference:jt.CESIUM_3D_TILE_MASK,mask:jt.CESIUM_3D_TILE_MASK},stencilMask:jt.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Fa.LESS_OR_EQUAL},depthMask:!1}}function gH(e){return{stencilTest:{enabled:e,frontFunction:ei.NOT_EQUAL,frontOperation:{fail:Ct.ZERO,zFail:Ct.ZERO,zPass:Ct.ZERO},backFunction:ei.NOT_EQUAL,backOperation:{fail:Ct.ZERO,zFail:Ct.ZERO,zPass:Ct.ZERO},reference:0,mask:jt.CLASSIFICATION_MASK},stencilMask:jt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:bn.PRE_MULTIPLIED_ALPHA_BLEND}}var gXe={stencilTest:{enabled:!0,frontFunction:ei.NOT_EQUAL,frontOperation:{fail:Ct.ZERO,zFail:Ct.ZERO,zPass:Ct.ZERO},backFunction:ei.NOT_EQUAL,backOperation:{fail:Ct.ZERO,zFail:Ct.ZERO,zPass:Ct.ZERO},reference:0,mask:jt.CLASSIFICATION_MASK},stencilMask:jt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1};function bXe(e,t,n,i){if(l(e._rsStencilDepthPass))return;let o=!e.debugShowShadowVolume;e._rsStencilDepthPass=Qe.fromCache(q_(o,!1)),e._rsStencilDepthPass3DTiles=Qe.fromCache(q_(o,!0)),e._rsColorPass=Qe.fromCache(gH(o,!1)),e._rsPickPass=Qe.fromCache(gXe)}function yXe(e,t){if(!e.compressVertices)return t;if(t.search(/in\s+vec3\s+extrudeDirection;/g)!==-1){let n="compressedAttributes",i=`in vec2 ${n};`,o=`vec3 extrudeDirection; +`,r=` extrudeDirection = czm_octDecode(${n}, 65535.0); +`,s=t;s=s.replace(/in\s+vec3\s+extrudeDirection;/g,""),s=Oe.replaceMain(s,"czm_non_compressed_main");let a=`void main() +{ +${r} czm_non_compressed_main(); +}`;return[i,o,s,a].join(` +`)}}function CXe(e,t){let n=t.context,i=e._primitive,o=MG;o=e._primitive._batchTable.getVertexShaderCallback()(o),o=Nn._appendDistanceDisplayConditionToShader(i,o),o=Nn._modifyShaderPosition(e,o,t.scene3DOnly),o=Nn._updateColorAttribute(i,o);let r=e._hasPlanarExtentsAttributes,s=r||e._hasSphericalExtentsAttribute;e._extruded&&(o=yXe(i,o));let a=e._extruded?"EXTRUDED_GEOMETRY":"",c=new Oe({defines:[a],sources:[o]}),d=new Oe({sources:[Eb]}),u=e._primitive._attributeLocations,h=new Pd(s,r,e.appearance);if(e._spStencil=ln.replaceCache({context:n,shaderProgram:e._spStencil,vertexShaderSource:c,fragmentShaderSource:d,attributeLocations:u}),e._primitive.allowPicking){let f=Oe.createPickVertexShaderSource(o);f=Nn._appendShowToShader(i,f),f=Nn._updatePickColorAttribute(f);let b=h.createPickFragmentShader(!1),x=h.createPickVertexShader([a],f,!1,t.mapProjection);if(e._spPick=ln.replaceCache({context:n,shaderProgram:e._spPick,vertexShaderSource:x,fragmentShaderSource:b,attributeLocations:u}),s){let I=n.shaderCache.getDerivedShaderProgram(e._spPick,"2dPick");if(!l(I)){let _=h.createPickFragmentShader(!0),E=h.createPickVertexShader([a],f,!0,t.mapProjection);I=n.shaderCache.createDerivedShaderProgram(e._spPick,"2dPick",{vertexShaderSource:E,fragmentShaderSource:_,attributeLocations:u})}e._spPick2D=I}}else e._spPick=ln.fromCache({context:n,vertexShaderSource:c,fragmentShaderSource:d,attributeLocations:u});o=Nn._appendShowToShader(i,o),c=new Oe({defines:[a],sources:[o]}),e._sp=ln.replaceCache({context:n,shaderProgram:e._sp,vertexShaderSource:c,fragmentShaderSource:d,attributeLocations:u});let p=h.createFragmentShader(!1),g=h.createVertexShader([a],o,!1,t.mapProjection);if(e._spColor=ln.replaceCache({context:n,shaderProgram:e._spColor,vertexShaderSource:g,fragmentShaderSource:p,attributeLocations:u}),s){let f=n.shaderCache.getDerivedShaderProgram(e._spColor,"2dColor");if(!l(f)){let b=h.createFragmentShader(!0),x=h.createVertexShader([a],o,!0,t.mapProjection);f=n.shaderCache.createDerivedShaderProgram(e._spColor,"2dColor",{vertexShaderSource:x,fragmentShaderSource:b,attributeLocations:u})}e._spColor2D=f}}function xXe(e,t){let n=e._primitive,i=n._va.length*2;t.length=i;let o,r,s,a=0,c=n._batchTable.getUniformMapCallback()(e._uniformMap),d=e._needs2DShader;for(o=0;o0&&(c=o[0].attributes,p=Pd.hasAttributesForSphericalExtents(c),g=Pd.hasAttributesForTextureCoordinatePlanes(c),h=c.color),s=0;s{l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};sC.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};sC.prototype.isDestroyed=function(){return!1};sC.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._spColor=this._spColor&&this._spColor.destroy(),this._spPick2D=void 0,this._spColor2D=void 0,me(this)};var $_=sC;var TXe={u_globeMinimumAltitude:function(){return 55e3}};function jl(e){e=e??Y.EMPTY_OBJECT;let t=e.appearance,n=e.geometryInstances;if(!l(t)&&l(n)){let o=Array.isArray(n)?n:[n],r=o.length;for(let s=0;s{!this._ready&&l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};jl.prototype.getBoundingSphere=function(e){let t=this._boundingSpheresKeys.indexOf(e);if(t!==-1)return this._boundingSpheres[t]};jl.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};jl.prototype.isDestroyed=function(){return!1};jl.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),me(this)};jl._supportsMaterials=function(e){return e.depthTexture};jl.supportsMaterials=function(e){return jl._supportsMaterials(e.frameState.context)};var cl=jl;var B8t=y(C(),1);function eE(){Ae.throwInstantiationError()}Object.defineProperties(eE.prototype,{isConstant:{get:Ae.throwInstantiationError},definitionChanged:{get:Ae.throwInstantiationError}});eE.prototype.getType=Ae.throwInstantiationError;eE.prototype.getValue=Ae.throwInstantiationError;eE.prototype.equals=Ae.throwInstantiationError;var XXe=new j;eE.getValue=function(e,t,n){let i;return l(e)||(e=j.now(XXe)),l(t)&&(i=t.getType(e),l(i))?((!l(n)||n.type!==i)&&(n=so.fromType(i)),t.getValue(e,n.uniforms),n):((!l(n)||n.type!==so.ColorType)&&(n=so.fromType(so.ColorType)),U.clone(U.WHITE,n.uniforms.color),n)};var dr=eE;function aC(e,t,n){this._primitives=t,this._orderedGroundPrimitives=n,this._primitive=void 0,this._outlinePrimitive=void 0,this._geometryUpdater=e,this._options=e._options,this._entity=e._entity,this._material=void 0}aC.prototype._isHidden=function(e,t,n){return!e.isShowing||!e.isAvailable(n)||!z.getValueOrDefault(t.show,n,!0)};aC.prototype._setOptions=Ae.throwInstantiationError;aC.prototype.update=function(e){let t=this._geometryUpdater,n=t._onTerrain,i=this._primitives,o=this._orderedGroundPrimitives;n?o.remove(this._primitive):(i.removeAndDestroy(this._primitive),i.removeAndDestroy(this._outlinePrimitive),this._outlinePrimitive=void 0),this._primitive=void 0;let r=this._entity,s=r[this._geometryUpdater._geometryPropertyName];if(this._setOptions(r,s,e),this._isHidden(r,s,e))return;let a=this._geometryUpdater.shadowsProperty.getValue(e),c=this._options;if(!l(s.fill)||s.fill.getValue(e)){let d=t.fillMaterialProperty,u=d instanceof qt,h,p=t._getIsClosed(c);if(u)h=new yn({closed:p,flat:n&&!t._supportsMaterialsforEntitiesOnTerrain});else{let g=dr.getValue(e,d,this._material);this._material=g,h=new Io({material:g,translucent:g.isTranslucent(),closed:p})}if(n)c.vertexFormat=yn.VERTEX_FORMAT,this._primitive=o.add(new cl({geometryInstances:this._geometryUpdater.createFillGeometryInstance(e),appearance:h,asynchronous:!1,shadows:a,classificationType:this._geometryUpdater.classificationTypeProperty.getValue(e)}),z.getValueOrUndefined(this._geometryUpdater.zIndex,e));else{c.vertexFormat=h.vertexFormat;let g=this._geometryUpdater.createFillGeometryInstance(e);u&&(h.translucent=g.attributes.color.value[3]!==255),this._primitive=i.add(new Nn({geometryInstances:g,appearance:h,asynchronous:!1,shadows:a}))}}if(!n&&l(s.outline)&&s.outline.getValue(e)){let d=this._geometryUpdater.createOutlineGeometryInstance(e),u=z.getValueOrDefault(s.outlineWidth,e,1);this._outlinePrimitive=i.add(new Nn({geometryInstances:d,appearance:new yn({flat:!0,translucent:d.attributes.color.value[3]!==255,renderState:{lineWidth:t._scene.clampLineWidth(u)}}),asynchronous:!1,shadows:a}))}};aC.prototype.getBoundingSphere=function(e){let t=this._entity,n=this._primitive,i=this._outlinePrimitive,o;return l(n)&&n.show&&n.ready&&(o=n.getGeometryInstanceAttributes(t),l(o)&&l(o.boundingSphere))?(ue.clone(o.boundingSphere,e),At.DONE):l(i)&&i.show&&i.ready&&(o=i.getGeometryInstanceAttributes(t),l(o)&&l(o.boundingSphere))?(ue.clone(o.boundingSphere,e),At.DONE):l(n)&&!n.ready||l(i)&&!i.ready?At.PENDING:At.FAILED};aC.prototype.isDestroyed=function(){return!1};aC.prototype.destroy=function(){let e=this._primitives,t=this._orderedGroundPrimitives;this._geometryUpdater._onTerrain?t.remove(this._primitive):e.removeAndDestroy(this._primitive),e.removeAndDestroy(this._outlinePrimitive),me(this)};var yi=aC;var fnn=y(C(),1);var K8t=y(C(),1);var Doe={};function UG(e,t){l(Doe[e])||(Doe[e]=!0,console.warn(t??e))}UG.geometryOutlines="Entity geometry outlines are unsupported on terrain. Outlines will be disabled. To enable outlines, disable geometry terrain clamping by explicitly setting height to 0.";UG.geometryZIndex="Entity geometry with zIndex are unsupported when height or extrudedHeight are defined. zIndex will be ignored";UG.geometryHeightReference="Entity corridor, ellipse, polygon or rectangle with heightReference must also have a defined height. heightReference will be ignored";UG.geometryExtrudedHeightReference="Entity corridor, ellipse, polygon or rectangle with extrudedHeightReference must also have a defined extrudedHeight. extrudedHeightReference will be ignored";var xt=UG;var qtn=y(C(),1);var j8t=y(C(),1),WXe={AUTODETECT:0,ENU:1,INERTIAL:2,VELOCITY:3},rA=Object.freeze(WXe);var eqt=y(C(),1);var Q7t=y(C(),1);var $8t=y(C(),1),FXe={NONE:0,GEODESIC:1,RHUMB:2},dn=Object.freeze(FXe);var i7t=y(C(),1);var Qoe=Z.EPSILON10;function PXe(e,t,n,i){if(!l(e))return;n=n??!1;let o=l(i),r=e.length;if(r<2)return e;let s,a=e[0],c,d,u=0,h=-1;for(s=1;sZ.EPSILON12);let T=P*(t*t-n*n)/(n*n),L=1+T*(4096+T*(T*(320-175*T)-768))/16384,V=T*(256+T*(T*(74-47*T)-128))/1024,W=A*A,M=V*F*(A+V*(w*(2*W-1)-V*A*(4*F*F-3)*(4*W-3)/6)/4),Q=n*L*(B-M),N=Math.atan2(g*G,x-_*R),k=Math.atan2(h*G,x*R-_);e._distance=Q,e._startHeading=N,e._endHeading=k,e._uSquared=T}var DXe=new m,CH=new m;function koe(e,t,n,i){let o=m.normalize(i.cartographicToCartesian(t,CH),DXe),r=m.normalize(i.cartographicToCartesian(n,CH),CH);NXe(e,i.maximumRadius,i.minimumRadius,t.longitude,t.latitude,n.longitude,n.latitude),e._start=ge.clone(t,e._start),e._end=ge.clone(n,e._end),e._start.height=0,e._end.height=0,MXe(e)}function kG(e,t,n){let i=n??ie.default;this._ellipsoid=i,this._start=new ge,this._end=new ge,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,l(e)&&l(t)&&koe(this,e,t,i)}Object.defineProperties(kG.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}});kG.prototype.setEndPoints=function(e,t){koe(this,e,t,this._ellipsoid)};kG.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)};kG.prototype.interpolateUsingSurfaceDistance=function(e,t){let n=this._constants,i=n.distanceRatio+e/n.b,o=Math.cos(2*i),r=Math.cos(4*i),s=Math.cos(6*i),a=Math.sin(2*i),c=Math.sin(4*i),d=Math.sin(6*i),u=Math.sin(8*i),h=i*i,p=i*h,g=n.u8Over256,f=n.u2Over4,b=n.u6Over64,x=n.u4Over16,I=2*p*g*o/3+i*(1-f+7*x/4-15*b/4+579*g/64-(x-15*b/4+187*g/16)*o-(5*b/4-115*g/16)*r-29*g*s/16)+(f/2-x+71*b/32-85*g/16)*a+(5*x/16-5*b/4+383*g/96)*c-h*((b-11*g/2)*a+5*g*c/2)+(29*b/96-29*g/16)*d+539*g*u/1536,_=Math.asin(Math.sin(I)*n.cosineAlpha),E=Math.atan(n.a/n.b*Math.tan(_));I=I-n.sigma;let S=Math.cos(2*n.sigma+I),R=Math.sin(I),G=Math.cos(I),B=n.cosineU*G,w=n.sineU*R,P=Math.atan2(R*n.sineHeading,B-w*n.cosineHeading)-Uoe(n.f,n.sineAlpha,n.cosineSquaredAlpha,I,R,G,S);return l(t)?(t.longitude=this._start.longitude+P,t.latitude=E,t.height=0,t):new ge(this._start.longitude+P,E,0)};var sA=kG;var g7t=y(C(),1);function IH(e,t,n){if(e===0)return t*n;let i=e*e,o=i*i,r=o*i,s=r*i,a=s*i,c=a*i,d=n,u=Math.sin(2*d),h=Math.sin(4*d),p=Math.sin(6*d),g=Math.sin(8*d),f=Math.sin(10*d),b=Math.sin(12*d);return t*((1-i/4-3*o/64-5*r/256-175*s/16384-441*a/65536-4851*c/1048576)*d-(3*i/8+3*o/32+45*r/1024+105*s/4096+2205*a/131072+6237*c/524288)*u+(15*o/256+45*r/1024+525*s/16384+1575*a/65536+155925*c/8388608)*h-(35*r/3072+175*s/12288+3675*a/262144+13475*c/1048576)*p+(315*s/131072+2205*a/524288+43659*c/8388608)*g-(693*a/1310720+6237*c/5242880)*f+1001*c/8388608*b)}function QXe(e,t,n){let i=e/n;if(t===0)return i;let o=i*i,r=o*i,s=r*i,a=t,c=a*a,d=c*c,u=d*c,h=u*c,p=h*c,g=p*c,f=Math.sin(2*i),b=Math.cos(2*i),x=Math.sin(4*i),I=Math.cos(4*i),_=Math.sin(6*i),E=Math.cos(6*i),S=Math.sin(8*i),R=Math.cos(8*i),G=Math.sin(10*i),B=Math.cos(10*i),w=Math.sin(12*i);return i+i*c/4+7*i*d/64+15*i*u/256+579*i*h/16384+1515*i*p/65536+16837*i*g/1048576+(3*i*d/16+45*i*u/256-i*(32*o-561)*h/4096-i*(232*o-1677)*p/16384+i*(399985-90560*o+512*s)*g/5242880)*b+(21*i*u/256+483*i*h/4096-i*(224*o-1969)*p/16384-i*(33152*o-112599)*g/1048576)*I+(151*i*h/4096+4681*i*p/65536+1479*i*g/16384-453*r*g/32768)*E+(1097*i*p/65536+42783*i*g/1048576)*R+8011*i*g/1048576*B+(3*c/8+3*d/16+213*u/2048-3*o*u/64+255*h/4096-33*o*h/512+20861*p/524288-33*o*p/512+s*p/1024+28273*g/1048576-471*o*g/8192+9*s*g/4096)*f+(21*d/256+21*u/256+533*h/8192-21*o*h/512+197*p/4096-315*o*p/4096+584039*g/16777216-12517*o*g/131072+7*s*g/2048)*x+(151*u/6144+151*h/4096+5019*p/131072-453*o*p/16384+26965*g/786432-8607*o*g/131072)*_+(1097*h/131072+1097*p/65536+225797*g/10485760-1097*o*g/65536)*S+(8011*p/2621440+8011*g/1048576)*G+293393*g/251658240*w}function tE(e,t){if(e===0)return Math.log(Math.tan(.5*(Z.PI_OVER_TWO+t)));let n=e*Math.sin(t);return Math.log(Math.tan(.5*(Z.PI_OVER_TWO+t)))-e/2*Math.log((1+n)/(1-n))}function UXe(e,t,n,i,o){let r=tE(e._ellipticity,n),s=tE(e._ellipticity,o);return Math.atan2(Z.negativePiToPi(i-t),s-r)}function kXe(e,t,n,i,o,r,s){let a=e._heading,c=r-i,d=0;if(Z.equalsEpsilon(Math.abs(a),Z.PI_OVER_TWO,Z.EPSILON8))if(t===n)d=t*Math.cos(o)*Z.negativePiToPi(c);else{let u=Math.sin(o);d=t*Math.cos(o)*Z.negativePiToPi(c)/Math.sqrt(1-e._ellipticitySquared*u*u)}else{let u=IH(e._ellipticity,t,o);d=(IH(e._ellipticity,t,s)-u)/Math.cos(a)}return Math.abs(d)}var YXe=new m,xH=new m;function Yoe(e,t,n,i){let o=m.normalize(i.cartographicToCartesian(t,xH),YXe),r=m.normalize(i.cartographicToCartesian(n,xH),xH),s=i.maximumRadius,a=i.minimumRadius,c=s*s,d=a*a;e._ellipticitySquared=(c-d)/c,e._ellipticity=Math.sqrt(e._ellipticitySquared),e._start=ge.clone(t,e._start),e._start.height=0,e._end=ge.clone(n,e._end),e._end.height=0,e._heading=UXe(e,t.longitude,t.latitude,n.longitude,n.latitude),e._distance=kXe(e,i.maximumRadius,i.minimumRadius,t.longitude,t.latitude,n.longitude,n.latitude)}function Ooe(e,t,n,i,o,r){if(n===0)return ge.clone(e,r);let s=o*o,a,c,d;if(Math.abs(Z.PI_OVER_TWO-Math.abs(t))>Z.EPSILON8){let u=IH(o,i,e.latitude),h=n*Math.cos(t),p=u+h;if(c=QXe(p,o,i),Math.abs(t)0?a=Z.negativePiToPi(e.longitude+d):a=Z.negativePiToPi(e.longitude-d)}return l(r)?(r.longitude=a,r.latitude=c,r.height=0,r):new ge(a,c,0)}function aA(e,t,n){let i=n??ie.default;this._ellipsoid=i,this._start=new ge,this._end=new ge,this._heading=void 0,this._distance=void 0,this._ellipticity=void 0,this._ellipticitySquared=void 0,l(e)&&l(t)&&Yoe(this,e,t,i)}Object.defineProperties(aA.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},heading:{get:function(){return this._heading}}});aA.fromStartHeadingDistance=function(e,t,n,i,o){let r=i??ie.default,s=r.maximumRadius,a=r.minimumRadius,c=s*s,d=a*a,u=Math.sqrt((c-d)/c);t=Z.negativePiToPi(t);let h=Ooe(e,t,n,r.maximumRadius,u);return!l(o)||l(i)&&!i.equals(o.ellipsoid)?new aA(e,h,r):(o.setEndPoints(e,h),o)};aA.prototype.setEndPoints=function(e,t){Yoe(this,e,t,this._ellipsoid)};aA.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(e*this._distance,t)};aA.prototype.interpolateUsingSurfaceDistance=function(e,t){return Ooe(this._start,this._heading,e,this._ellipsoid.maximumRadius,this._ellipticity,t)};aA.prototype.findIntersectionWithLongitude=function(e,t){let n=this._ellipticity,i=this._heading,o=Math.abs(i),r=this._start;if(e=Z.negativePiToPi(e),Z.equalsEpsilon(Math.abs(e),Math.PI,Z.EPSILON14)&&(e=Z.sign(r.longitude)*Math.PI),l(t)||(t=new ge),Math.abs(Z.PI_OVER_TWO-o)<=Z.EPSILON8)return t.longitude=e,t.latitude=r.latitude,t.height=0,t;if(Z.equalsEpsilon(Math.abs(Z.PI_OVER_TWO-o),Z.PI_OVER_TWO,Z.EPSILON8))return Z.equalsEpsilon(e,r.longitude,Z.EPSILON12)?void 0:(t.longitude=e,t.latitude=Z.PI_OVER_TWO*Z.sign(Z.PI_OVER_TWO-i),t.height=0,t);let s=r.latitude,a=n*Math.sin(s),c=Math.tan(.5*(Z.PI_OVER_TWO+s))*Math.exp((e-r.longitude)/Math.tan(i)),d=(1+a)/(1-a),u=r.latitude,h;do{h=u;let p=n*Math.sin(h),g=(1+p)/(1-p);u=2*Math.atan(c*Math.pow(g/d,n/2))-Z.PI_OVER_TWO}while(!Z.equalsEpsilon(u,h,Z.EPSILON12));return t.longitude=e,t.latitude=u,t.height=0,t};aA.prototype.findIntersectionWithLatitude=function(e,t){let n=this._ellipticity,i=this._heading,o=this._start;if(Z.equalsEpsilon(Math.abs(i),Z.PI_OVER_TWO,Z.EPSILON8))return;let r=tE(n,o.latitude),s=tE(n,e),a=Math.tan(i)*(s-r),c=Z.negativePiToPi(o.longitude+a);return l(t)?(t.longitude=c,t.latitude=e,t.height=0,t):new ge(c,e,0)};var cc=aA;var GH=[Di,Ui],OXe=GH.length,mre=Math.cos(Z.toRadians(30)),Hoe=Math.cos(Z.toRadians(150)),hre=0,fre=1e3;function Sb(e){e=e??Y.EMPTY_OBJECT;let t=e.positions;this.width=e.width??1,this._positions=t,this.granularity=e.granularity??9999,this.loop=e.loop??!1,this.arcType=e.arcType??dn.GEODESIC,this._ellipsoid=ie.default,this._projectionIndex=0,this._workerName="createGroundPolylineGeometry",this._scene3DOnly=!1}Object.defineProperties(Sb.prototype,{packedLength:{get:function(){return 1+this._positions.length*3+1+1+1+ie.packedLength+1+1}}});Sb.setProjectionAndEllipsoid=function(e,t){let n=0;for(let i=0;imre||rZ.PI_OVER_TWO&&(a=!0,s=m.subtract(r,n,tre),d=c.cartesianToCartographic(s,ere)),d.height=0;let u=e.project(d,o);return o=m.subtract(u,i,o),o.z=0,o=m.normalize(o,o),a&&m.negate(o,o),o}var m2e=new m,nre=new m;function ire(e,t,n,i,o,r){let s=m.subtract(t,e,m2e);m.normalize(s,s);let a=n-hre,c=m.multiplyByScalar(s,a,nre);m.add(e,c,o);let d=i-fre;c=m.multiplyByScalar(s,d,nre),m.add(t,c,r)}var h2e=new m;function WD(e,t){let n=An.getPointDistance(FD,e),i=An.getPointDistance(FD,t),o=h2e;Z.equalsEpsilon(n,0,Z.EPSILON2)?(o=cA(t,e,o),m.multiplyByScalar(o,Z.EPSILON2,o),m.add(e,o,e)):Z.equalsEpsilon(i,0,Z.EPSILON2)&&(o=cA(e,t,o),m.multiplyByScalar(o,Z.EPSILON2,o),m.add(t,o,t))}function f2e(e,t){let n=Math.abs(e.longitude),i=Math.abs(t.longitude);if(Z.equalsEpsilon(n,Z.PI,Z.EPSILON11)){let o=Z.sign(t.longitude);return e.longitude=o*(n-Z.EPSILON11),1}else if(Z.equalsEpsilon(i,Z.PI,Z.EPSILON11)){let o=Z.sign(e.longitude);return t.longitude=o*(i-Z.EPSILON11),2}return 0}var Are=new ge,gre=new ge,ore=new m,SH=new m,rre=new m,sre=new m,p2e=new m,are=new m,A2e=[Are,gre],g2e=new le,b2e=new m,y2e=new m,C2e=new m,x2e=new m,I2e=new m,_2e=new m,LH=new m,RH=new m,E2e=new m,T2e=new m,S2e=new m,cre=new m,L2e=new m,R2e=new m,V2e=new ni,G2e=new ni,lre=new m,Z2e=new m,dre=new m,B2e=[new ue,new ue],bre=[0,2,1,0,3,2,0,7,3,0,4,7,0,5,4,0,1,5,5,7,4,5,6,7,5,2,6,5,1,2,3,6,2,3,7,6],ure=bre.length;function w2e(e,t,n,i,o,r,s){let a,c,d=t._ellipsoid,u=n.length/3-1,h=u*8,p=h*4,g=u*36,f=h>65535?new Uint32Array(g):new Uint16Array(g),b=new Float64Array(h*3),x=new Float32Array(p),I=new Float32Array(p),_=new Float32Array(p),E=new Float32Array(p),S=new Float32Array(p),R,G,B,w;s&&(R=new Float32Array(p),G=new Float32Array(p),B=new Float32Array(p),w=new Float32Array(h*2));let F=r.length/2,P=0,A=Are;A.height=0;let T=gre;T.height=0;let L=ore,V=SH;if(s)for(c=0,a=1;amre?(nn=YG(t,A,Ue,je,LH),rt=YG(t,T,te,it,RH)):Ti===1?(rt=YG(t,T,te,it,RH),nn.x=0,nn.y=Z.sign(A.longitude-Math.abs(T.longitude)),nn.z=0):(nn=YG(t,A,Ue,je,LH),rt.x=0,rt.y=Z.sign(A.longitude-T.longitude),rt.z=0)}let rn=m.distance(De,K),Jt=ni.fromCartesian(Le,V2e),Xt=m.subtract(ee,Le,E2e),Li=m.normalize(Xt,cre),bi=m.subtract(De,Le,T2e);bi=m.normalize(bi,bi);let vt=m.cross(Li,bi,cre);vt=m.normalize(vt,vt);let Rt=m.cross(bi,Ue,L2e);Rt=m.normalize(Rt,Rt);let si=m.subtract(K,ee,S2e);si=m.normalize(si,si);let _t=m.cross(te,si,R2e);_t=m.normalize(_t,_t);let Fo=rn/M,Uo=q/M,Va=0,Cr,wr,ve,ut=0,qe=0;if(s){Va=m.distance(je,it),Cr=ni.fromCartesian(je,G2e),wr=m.subtract(it,je,lre),ve=m.normalize(wr,Z2e);let Ti=ve.x;ve.x=ve.y,ve.y=-Ti,ut=Va/P,qe=pe/P}for(Q=0;Q<8;Q++){let Ti=O+Q*4,Rs=k+Q*2,Jo=Ti+3,Ga=Q<4?1:-1,po=Q===2||Q===3||Q===6||Q===7?1:-1;m.pack(Jt.high,x,Ti),x[Jo]=Xt.x,m.pack(Jt.low,I,Ti),I[Jo]=Xt.y,m.pack(Rt,_,Ti),_[Jo]=Xt.z,m.pack(_t,E,Ti),E[Jo]=Fo*Ga,m.pack(vt,S,Ti);let jo=Uo*po;jo===0&&po<0&&(jo=9),S[Jo]=jo,s&&(R[Ti]=Cr.high.x,R[Ti+1]=Cr.high.y,R[Ti+2]=Cr.low.x,R[Ti+3]=Cr.low.y,B[Ti]=-nn.y,B[Ti+1]=nn.x,B[Ti+2]=rt.y,B[Ti+3]=-rt.x,G[Ti]=wr.x,G[Ti+1]=wr.y,G[Ti+2]=ve.x,G[Ti+3]=ve.y,w[Rs]=ut*Ga,jo=qe*po,jo===0&&po<0&&(jo=9),w[Rs+1]=jo)}let nt=C2e,yt=x2e,$t=b2e,Sn=y2e,fo=le.fromCartographicArray(A2e,g2e),uo=Si.getMinimumMaximumHeights(fo,d),ra=uo.minimumTerrainHeight,sa=uo.maximumTerrainHeight;ye+=Math.abs(ra),ye+=Math.abs(sa),ire(Le,De,ra,sa,nt,$t),ire(ee,K,ra,sa,yt,Sn);let Hn=m.multiplyByScalar(vt,Z.EPSILON5,dre);m.add(nt,Hn,nt),m.add(yt,Hn,yt),m.add($t,Hn,$t),m.add(Sn,Hn,Sn),WD(nt,yt),WD($t,Sn),m.pack(nt,b,v),m.pack(yt,b,v+3),m.pack(Sn,b,v+6),m.pack($t,b,v+9),Hn=m.multiplyByScalar(vt,-2*Z.EPSILON5,dre),m.add(nt,Hn,nt),m.add(yt,Hn,yt),m.add($t,Hn,$t),m.add(Sn,Hn,Sn),WD(nt,yt),WD($t,Sn),m.pack(nt,b,v+12),m.pack(yt,b,v+15),m.pack(Sn,b,v+18),m.pack($t,b,v+21),N+=2,c+=3,k+=16,v+=24,O+=32,q+=rn,pe+=Va}c=0;let he=0;for(a=0;a halfMaxWidth || distanceFromStart < 0.0 || distanceFromEnd < 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(1.0, 0.0, 0.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + + // Check distance of the eye coordinate against start and end planes with normals in the right plane. + // For computing unskewed lengthwise texture coordinate. + // Can also be used for clipping extremely pointy miters, but in practice unnecessary because of miter breaking. + + // aligned plane: cross the right plane normal with miter plane normal, then cross the result with right again to point it more "forward" + vec3 alignedPlaneNormal; + + // start aligned plane + alignedPlaneNormal = cross(v_rightPlaneEC.xyz, v_startPlaneNormalEcAndHalfWidth.xyz); + alignedPlaneNormal = normalize(cross(alignedPlaneNormal, v_rightPlaneEC.xyz)); + distanceFromStart = czm_planeDistance(alignedPlaneNormal, -dot(alignedPlaneNormal, ecStart), eyeCoordinate.xyz); + + // end aligned plane + alignedPlaneNormal = cross(v_rightPlaneEC.xyz, v_endPlaneNormalEcAndBatchId.xyz); + alignedPlaneNormal = normalize(cross(alignedPlaneNormal, v_rightPlaneEC.xyz)); + distanceFromEnd = czm_planeDistance(alignedPlaneNormal, -dot(alignedPlaneNormal, v_endEcAndStartEcX.xyz), eyeCoordinate.xyz); + +#ifdef PER_INSTANCE_COLOR + out_FragColor = czm_gammaCorrect(v_color); +#else // PER_INSTANCE_COLOR + // Clamp - distance to aligned planes may be negative due to mitering, + // so fragment texture coordinate might be out-of-bounds. + float s = clamp(distanceFromStart / (distanceFromStart + distanceFromEnd), 0.0, 1.0); + s = (s * v_texcoordNormalizationAndStartEcYZ.x) + v_texcoordNormalizationAndStartEcYZ.y; + float t = (widthwiseDistance + halfMaxWidth) / (2.0 * halfMaxWidth); + + czm_materialInput materialInput; + + materialInput.s = s; + materialInput.st = vec2(s, t); + materialInput.str = vec3(s, t, 0.0); + + czm_material material = czm_getMaterial(materialInput); + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#endif // PER_INSTANCE_COLOR + + // Premultiply alpha. Required for classification primitives on translucent globe. + out_FragColor.rgb *= out_FragColor.a; + + czm_writeDepthClamp(); +} +`;var O7t=y(C(),1),HG=`in vec3 v_forwardDirectionEC; +in vec3 v_texcoordNormalizationAndHalfWidth; +in float v_batchId; + +#ifdef PER_INSTANCE_COLOR +in vec4 v_color; +#else +in vec2 v_alignedPlaneDistances; +in float v_texcoordT; +#endif + +float rayPlaneDistanceUnsafe(vec3 origin, vec3 direction, vec3 planeNormal, float planeDistance) { + // We don't expect the ray to ever be parallel to the plane + return (-planeDistance - dot(planeNormal, origin)) / dot(planeNormal, direction); +} + +void main(void) +{ + vec4 eyeCoordinate = gl_FragCoord; + eyeCoordinate /= eyeCoordinate.w; + +#ifdef PER_INSTANCE_COLOR + out_FragColor = czm_gammaCorrect(v_color); +#else // PER_INSTANCE_COLOR + // Use distances for planes aligned with segment to prevent skew in dashing + float distanceFromStart = rayPlaneDistanceUnsafe(eyeCoordinate.xyz, -v_forwardDirectionEC, v_forwardDirectionEC.xyz, v_alignedPlaneDistances.x); + float distanceFromEnd = rayPlaneDistanceUnsafe(eyeCoordinate.xyz, v_forwardDirectionEC, -v_forwardDirectionEC.xyz, v_alignedPlaneDistances.y); + + // Clamp - distance to aligned planes may be negative due to mitering + distanceFromStart = max(0.0, distanceFromStart); + distanceFromEnd = max(0.0, distanceFromEnd); + + float s = distanceFromStart / (distanceFromStart + distanceFromEnd); + s = (s * v_texcoordNormalizationAndHalfWidth.x) + v_texcoordNormalizationAndHalfWidth.y; + + czm_materialInput materialInput; + + materialInput.s = s; + materialInput.st = vec2(s, v_texcoordT); + materialInput.str = vec3(s, v_texcoordT, 0.0); + + czm_material material = czm_getMaterial(materialInput); + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#endif // PER_INSTANCE_COLOR +} +`;var z7t=y(C(),1),zG=`in vec3 position3DHigh; +in vec3 position3DLow; + +in vec4 startHiAndForwardOffsetX; +in vec4 startLoAndForwardOffsetY; +in vec4 startNormalAndForwardOffsetZ; +in vec4 endNormalAndTextureCoordinateNormalizationX; +in vec4 rightNormalAndTextureCoordinateNormalizationY; +in vec4 startHiLo2D; +in vec4 offsetAndRight2D; +in vec4 startEndNormals2D; +in vec2 texcoordNormalization2D; + +in float batchId; + +out vec3 v_forwardDirectionEC; +out vec3 v_texcoordNormalizationAndHalfWidth; +out float v_batchId; + +// For materials +#ifdef WIDTH_VARYING +out float v_width; +#endif +#ifdef ANGLE_VARYING +out float v_polylineAngle; +#endif + +#ifdef PER_INSTANCE_COLOR +out vec4 v_color; +#else +out vec2 v_alignedPlaneDistances; +out float v_texcoordT; +#endif + +// Morphing planes using SLERP or NLERP doesn't seem to work, so instead draw the material directly on the shadow volume. +// Morph views are from very far away and aren't meant to be used precisely, so this should be sufficient. +void main() +{ + v_batchId = batchId; + + // Start position + vec4 posRelativeToEye2D = czm_translateRelativeToEye(vec3(0.0, startHiLo2D.xy), vec3(0.0, startHiLo2D.zw)); + vec4 posRelativeToEye3D = czm_translateRelativeToEye(startHiAndForwardOffsetX.xyz, startLoAndForwardOffsetY.xyz); + vec4 posRelativeToEye = czm_columbusViewMorph(posRelativeToEye2D, posRelativeToEye3D, czm_morphTime); + vec3 posEc2D = (czm_modelViewRelativeToEye * posRelativeToEye2D).xyz; + vec3 posEc3D = (czm_modelViewRelativeToEye * posRelativeToEye3D).xyz; + vec3 startEC = (czm_modelViewRelativeToEye * posRelativeToEye).xyz; + + // Start plane + vec4 startPlane2D; + vec4 startPlane3D; + startPlane2D.xyz = czm_normal * vec3(0.0, startEndNormals2D.xy); + startPlane3D.xyz = czm_normal * startNormalAndForwardOffsetZ.xyz; + startPlane2D.w = -dot(startPlane2D.xyz, posEc2D); + startPlane3D.w = -dot(startPlane3D.xyz, posEc3D); + + // Right plane + vec4 rightPlane2D; + vec4 rightPlane3D; + rightPlane2D.xyz = czm_normal * vec3(0.0, offsetAndRight2D.zw); + rightPlane3D.xyz = czm_normal * rightNormalAndTextureCoordinateNormalizationY.xyz; + rightPlane2D.w = -dot(rightPlane2D.xyz, posEc2D); + rightPlane3D.w = -dot(rightPlane3D.xyz, posEc3D); + + // End position + posRelativeToEye2D = posRelativeToEye2D + vec4(0.0, offsetAndRight2D.xy, 0.0); + posRelativeToEye3D = posRelativeToEye3D + vec4(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w, 0.0); + posRelativeToEye = czm_columbusViewMorph(posRelativeToEye2D, posRelativeToEye3D, czm_morphTime); + posEc2D = (czm_modelViewRelativeToEye * posRelativeToEye2D).xyz; + posEc3D = (czm_modelViewRelativeToEye * posRelativeToEye3D).xyz; + vec3 endEC = (czm_modelViewRelativeToEye * posRelativeToEye).xyz; + vec3 forwardEc3D = czm_normal * normalize(vec3(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w)); + vec3 forwardEc2D = czm_normal * normalize(vec3(0.0, offsetAndRight2D.xy)); + + // End plane + vec4 endPlane2D; + vec4 endPlane3D; + endPlane2D.xyz = czm_normal * vec3(0.0, startEndNormals2D.zw); + endPlane3D.xyz = czm_normal * endNormalAndTextureCoordinateNormalizationX.xyz; + endPlane2D.w = -dot(endPlane2D.xyz, posEc2D); + endPlane3D.w = -dot(endPlane3D.xyz, posEc3D); + + // Forward direction + v_forwardDirectionEC = normalize(endEC - startEC); + + vec2 cleanTexcoordNormalization2D; + cleanTexcoordNormalization2D.x = abs(texcoordNormalization2D.x); + cleanTexcoordNormalization2D.y = czm_branchFreeTernary(texcoordNormalization2D.y > 1.0, 0.0, abs(texcoordNormalization2D.y)); + vec2 cleanTexcoordNormalization3D; + cleanTexcoordNormalization3D.x = abs(endNormalAndTextureCoordinateNormalizationX.w); + cleanTexcoordNormalization3D.y = rightNormalAndTextureCoordinateNormalizationY.w; + cleanTexcoordNormalization3D.y = czm_branchFreeTernary(cleanTexcoordNormalization3D.y > 1.0, 0.0, abs(cleanTexcoordNormalization3D.y)); + + v_texcoordNormalizationAndHalfWidth.xy = mix(cleanTexcoordNormalization2D, cleanTexcoordNormalization3D, czm_morphTime); + +#ifdef PER_INSTANCE_COLOR + v_color = czm_batchTable_color(batchId); +#else // PER_INSTANCE_COLOR + // For computing texture coordinates + + v_alignedPlaneDistances.x = -dot(v_forwardDirectionEC, startEC); + v_alignedPlaneDistances.y = -dot(-v_forwardDirectionEC, endEC); +#endif // PER_INSTANCE_COLOR + +#ifdef WIDTH_VARYING + float width = czm_batchTable_width(batchId); + float halfWidth = width * 0.5; + v_width = width; + v_texcoordNormalizationAndHalfWidth.z = halfWidth; +#else + float halfWidth = 0.5 * czm_batchTable_width(batchId); + v_texcoordNormalizationAndHalfWidth.z = halfWidth; +#endif + + // Compute a normal along which to "push" the position out, extending the miter depending on view distance. + // Position has already been "pushed" by unit length along miter normal, and miter normals are encoded in the planes. + // Decode the normal to use at this specific vertex, push the position back, and then push to where it needs to be. + // Since this is morphing, compute both 3D and 2D positions and then blend. + + // ****** 3D ****** + // Check distance to the end plane and start plane, pick the plane that is closer + vec4 positionEc3D = czm_modelViewRelativeToEye * czm_translateRelativeToEye(position3DHigh, position3DLow); // w = 1.0, see czm_computePosition + float absStartPlaneDistance = abs(czm_planeDistance(startPlane3D, positionEc3D.xyz)); + float absEndPlaneDistance = abs(czm_planeDistance(endPlane3D, positionEc3D.xyz)); + vec3 planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlane3D.xyz, endPlane3D.xyz); + vec3 upOrDown = normalize(cross(rightPlane3D.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane. + vec3 normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too. + + // Nudge the top vertex upwards to prevent flickering + vec3 geodeticSurfaceNormal = normalize(cross(normalEC, forwardEc3D)); + geodeticSurfaceNormal *= float(0.0 <= rightNormalAndTextureCoordinateNormalizationY.w && rightNormalAndTextureCoordinateNormalizationY.w <= 1.0); + geodeticSurfaceNormal *= MAX_TERRAIN_HEIGHT; + positionEc3D.xyz += geodeticSurfaceNormal; + + // Determine if this vertex is on the "left" or "right" + normalEC *= sign(endNormalAndTextureCoordinateNormalizationX.w); + + // A "perfect" implementation would push along normals according to the angle against forward. + // In practice, just pushing the normal out by halfWidth is sufficient for morph views. + positionEc3D.xyz += halfWidth * max(0.0, czm_metersPerPixel(positionEc3D)) * normalEC; // prevent artifacts when czm_metersPerPixel is negative (behind camera) + + // ****** 2D ****** + // Check distance to the end plane and start plane, pick the plane that is closer + vec4 positionEc2D = czm_modelViewRelativeToEye * czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy); // w = 1.0, see czm_computePosition + absStartPlaneDistance = abs(czm_planeDistance(startPlane2D, positionEc2D.xyz)); + absEndPlaneDistance = abs(czm_planeDistance(endPlane2D, positionEc2D.xyz)); + planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlane2D.xyz, endPlane2D.xyz); + upOrDown = normalize(cross(rightPlane2D.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane. + normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too. + + // Nudge the top vertex upwards to prevent flickering + geodeticSurfaceNormal = normalize(cross(normalEC, forwardEc2D)); + geodeticSurfaceNormal *= float(0.0 <= texcoordNormalization2D.y && texcoordNormalization2D.y <= 1.0); + geodeticSurfaceNormal *= MAX_TERRAIN_HEIGHT; + positionEc2D.xyz += geodeticSurfaceNormal; + + // Determine if this vertex is on the "left" or "right" + normalEC *= sign(texcoordNormalization2D.x); +#ifndef PER_INSTANCE_COLOR + // Use vertex's sidedness to compute its texture coordinate. + v_texcoordT = clamp(sign(texcoordNormalization2D.x), 0.0, 1.0); +#endif + + // A "perfect" implementation would push along normals according to the angle against forward. + // In practice, just pushing the normal out by halfWidth is sufficient for morph views. + positionEc2D.xyz += halfWidth * max(0.0, czm_metersPerPixel(positionEc2D)) * normalEC; // prevent artifacts when czm_metersPerPixel is negative (behind camera) + + // Blend for actual position + gl_Position = czm_projection * mix(positionEc2D, positionEc3D, czm_morphTime); + +#ifdef ANGLE_VARYING + // Approximate relative screen space direction of the line. + vec2 approxLineDirection = normalize(vec2(v_forwardDirectionEC.x, -v_forwardDirectionEC.y)); + approxLineDirection.y = czm_branchFreeTernary(approxLineDirection.x == 0.0 && approxLineDirection.y == 0.0, -1.0, approxLineDirection.y); + v_polylineAngle = czm_fastApproximateAtan(approxLineDirection.x, approxLineDirection.y); +#endif +} +`;var J7t=y(C(),1),KG=`in vec3 position3DHigh; +in vec3 position3DLow; + +// In 2D and in 3D, texture coordinate normalization component signs encodes: +// * X sign - sidedness relative to right plane +// * Y sign - is negative OR magnitude is greater than 1.0 if vertex is on bottom of volume +#ifndef COLUMBUS_VIEW_2D +in vec4 startHiAndForwardOffsetX; +in vec4 startLoAndForwardOffsetY; +in vec4 startNormalAndForwardOffsetZ; +in vec4 endNormalAndTextureCoordinateNormalizationX; +in vec4 rightNormalAndTextureCoordinateNormalizationY; +#else +in vec4 startHiLo2D; +in vec4 offsetAndRight2D; +in vec4 startEndNormals2D; +in vec2 texcoordNormalization2D; +#endif + +in float batchId; + +out vec4 v_startPlaneNormalEcAndHalfWidth; +out vec4 v_endPlaneNormalEcAndBatchId; +out vec4 v_rightPlaneEC; +out vec4 v_endEcAndStartEcX; +out vec4 v_texcoordNormalizationAndStartEcYZ; + +// For materials +#ifdef WIDTH_VARYING +out float v_width; +#endif +#ifdef ANGLE_VARYING +out float v_polylineAngle; +#endif + +#ifdef PER_INSTANCE_COLOR +out vec4 v_color; +#endif + +void main() +{ +#ifdef COLUMBUS_VIEW_2D + vec3 ecStart = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, startHiLo2D.xy), vec3(0.0, startHiLo2D.zw))).xyz; + + vec3 forwardDirectionEC = czm_normal * vec3(0.0, offsetAndRight2D.xy); + vec3 ecEnd = forwardDirectionEC + ecStart; + forwardDirectionEC = normalize(forwardDirectionEC); + + // Right plane + v_rightPlaneEC.xyz = czm_normal * vec3(0.0, offsetAndRight2D.zw); + v_rightPlaneEC.w = -dot(v_rightPlaneEC.xyz, ecStart); + + // start plane + vec4 startPlaneEC; + startPlaneEC.xyz = czm_normal * vec3(0.0, startEndNormals2D.xy); + startPlaneEC.w = -dot(startPlaneEC.xyz, ecStart); + + // end plane + vec4 endPlaneEC; + endPlaneEC.xyz = czm_normal * vec3(0.0, startEndNormals2D.zw); + endPlaneEC.w = -dot(endPlaneEC.xyz, ecEnd); + + v_texcoordNormalizationAndStartEcYZ.x = abs(texcoordNormalization2D.x); + v_texcoordNormalizationAndStartEcYZ.y = texcoordNormalization2D.y; + +#else // COLUMBUS_VIEW_2D + vec3 ecStart = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(startHiAndForwardOffsetX.xyz, startLoAndForwardOffsetY.xyz)).xyz; + vec3 offset = czm_normal * vec3(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w); + vec3 ecEnd = ecStart + offset; + + vec3 forwardDirectionEC = normalize(offset); + + // start plane + vec4 startPlaneEC; + startPlaneEC.xyz = czm_normal * startNormalAndForwardOffsetZ.xyz; + startPlaneEC.w = -dot(startPlaneEC.xyz, ecStart); + + // end plane + vec4 endPlaneEC; + endPlaneEC.xyz = czm_normal * endNormalAndTextureCoordinateNormalizationX.xyz; + endPlaneEC.w = -dot(endPlaneEC.xyz, ecEnd); + + // Right plane + v_rightPlaneEC.xyz = czm_normal * rightNormalAndTextureCoordinateNormalizationY.xyz; + v_rightPlaneEC.w = -dot(v_rightPlaneEC.xyz, ecStart); + + v_texcoordNormalizationAndStartEcYZ.x = abs(endNormalAndTextureCoordinateNormalizationX.w); + v_texcoordNormalizationAndStartEcYZ.y = rightNormalAndTextureCoordinateNormalizationY.w; + +#endif // COLUMBUS_VIEW_2D + + v_endEcAndStartEcX.xyz = ecEnd; + v_endEcAndStartEcX.w = ecStart.x; + v_texcoordNormalizationAndStartEcYZ.zw = ecStart.yz; + +#ifdef PER_INSTANCE_COLOR + v_color = czm_batchTable_color(batchId); +#endif // PER_INSTANCE_COLOR + + // Compute a normal along which to "push" the position out, extending the miter depending on view distance. + // Position has already been "pushed" by unit length along miter normal, and miter normals are encoded in the planes. + // Decode the normal to use at this specific vertex, push the position back, and then push to where it needs to be. + vec4 positionRelativeToEye = czm_computePosition(); + + // Check distance to the end plane and start plane, pick the plane that is closer + vec4 positionEC = czm_modelViewRelativeToEye * positionRelativeToEye; // w = 1.0, see czm_computePosition + float absStartPlaneDistance = abs(czm_planeDistance(startPlaneEC, positionEC.xyz)); + float absEndPlaneDistance = abs(czm_planeDistance(endPlaneEC, positionEC.xyz)); + vec3 planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlaneEC.xyz, endPlaneEC.xyz); + vec3 upOrDown = normalize(cross(v_rightPlaneEC.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane. + vec3 normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too. + + // Extrude bottom vertices downward for far view distances, like for GroundPrimitives + upOrDown = cross(forwardDirectionEC, normalEC); + upOrDown = float(czm_sceneMode == czm_sceneMode3D) * upOrDown; + upOrDown = float(v_texcoordNormalizationAndStartEcYZ.y > 1.0 || v_texcoordNormalizationAndStartEcYZ.y < 0.0) * upOrDown; + upOrDown = min(GLOBE_MINIMUM_ALTITUDE, czm_geometricToleranceOverMeter * length(positionRelativeToEye.xyz)) * upOrDown; + positionEC.xyz += upOrDown; + + v_texcoordNormalizationAndStartEcYZ.y = czm_branchFreeTernary(v_texcoordNormalizationAndStartEcYZ.y > 1.0, 0.0, abs(v_texcoordNormalizationAndStartEcYZ.y)); + + // Determine distance along normalEC to push for a volume of appropriate width. + // Make volumes about double pixel width for a conservative fit - in practice the + // extra cost here is minimal compared to the loose volume heights. + // + // N = normalEC (guaranteed "right-facing") + // R = rightEC + // p = angle between N and R + // w = distance to push along R if R == N + // d = distance to push along N + // + // N R + // { p| } * cos(p) = dot(N, R) = w / d + // d | |w * d = w / dot(N, R) + // { | } + // o---------- polyline segment ----> + // + float width = czm_batchTable_width(batchId); +#ifdef WIDTH_VARYING + v_width = width; +#endif + + v_startPlaneNormalEcAndHalfWidth.xyz = startPlaneEC.xyz; + v_startPlaneNormalEcAndHalfWidth.w = width * 0.5; + + v_endPlaneNormalEcAndBatchId.xyz = endPlaneEC.xyz; + v_endPlaneNormalEcAndBatchId.w = batchId; + + width = width * max(0.0, czm_metersPerPixel(positionEC)); // width = distance to push along R + width = width / dot(normalEC, v_rightPlaneEC.xyz); // width = distance to push along N + + // Determine if this vertex is on the "left" or "right" +#ifdef COLUMBUS_VIEW_2D + normalEC *= sign(texcoordNormalization2D.x); +#else + normalEC *= sign(endNormalAndTextureCoordinateNormalizationX.w); +#endif + + positionEC.xyz += width * normalEC; + gl_Position = czm_depthClamp(czm_projection * positionEC); + +#ifdef ANGLE_VARYING + // Approximate relative screen space direction of the line. + vec2 approxLineDirection = normalize(vec2(forwardDirectionEC.x, -forwardDirectionEC.y)); + approxLineDirection.y = czm_branchFreeTernary(approxLineDirection.x == 0.0 && approxLineDirection.y == 0.0, -1.0, approxLineDirection.y); + v_polylineAngle = czm_fastApproximateAtan(approxLineDirection.x, approxLineDirection.y); +#endif +} +`;var l6t=y(C(),1);var q7t=y(C(),1),JG=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 prevPosition3DHigh; +in vec3 prevPosition3DLow; +in vec3 nextPosition3DHigh; +in vec3 nextPosition3DLow; +in vec2 expandAndWidth; +in vec4 color; +in float batchId; + +out vec4 v_color; + +void main() +{ + float expandDir = expandAndWidth.x; + float width = abs(expandAndWidth.y) + 0.5; + bool usePrev = expandAndWidth.y < 0.0; + + vec4 p = czm_computePosition(); + vec4 prev = czm_computePrevPosition(); + vec4 next = czm_computeNextPosition(); + + float angle; + vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, angle); + gl_Position = czm_viewportOrthographic * positionWC; + + v_color = color; +} +`;var e6t=y(C(),1),Md=`void clipLineSegmentToNearPlane( + vec3 p0, + vec3 p1, + out vec4 positionWC, + out bool clipped, + out bool culledByNearPlane, + out vec4 clippedPositionEC) +{ + culledByNearPlane = false; + clipped = false; + + vec3 p0ToP1 = p1 - p0; + float magnitude = length(p0ToP1); + vec3 direction = normalize(p0ToP1); + + // Distance that p0 is behind the near plane. Negative means p0 is + // in front of the near plane. + float endPoint0Distance = czm_currentFrustum.x + p0.z; + + // Camera looks down -Z. + // When moving a point along +Z: LESS VISIBLE + // * Points in front of the camera move closer to the camera. + // * Points behind the camrea move farther away from the camera. + // When moving a point along -Z: MORE VISIBLE + // * Points in front of the camera move farther away from the camera. + // * Points behind the camera move closer to the camera. + + // Positive denominator: -Z, becoming more visible + // Negative denominator: +Z, becoming less visible + // Nearly zero: parallel to near plane + float denominator = -direction.z; + + if (endPoint0Distance > 0.0 && abs(denominator) < czm_epsilon7) + { + // p0 is behind the near plane and the line to p1 is nearly parallel to + // the near plane, so cull the segment completely. + culledByNearPlane = true; + } + else if (endPoint0Distance > 0.0) + { + // p0 is behind the near plane, and the line to p1 is moving distinctly + // toward or away from it. + + // t = (-plane distance - dot(plane normal, ray origin)) / dot(plane normal, ray direction) + float t = endPoint0Distance / denominator; + if (t < 0.0 || t > magnitude) + { + // Near plane intersection is not between the two points. + // We already confirmed p0 is behind the naer plane, so now + // we know the entire segment is behind it. + culledByNearPlane = true; + } + else + { + // Segment crosses the near plane, update p0 to lie exactly on it. + p0 = p0 + t * direction; + + // Numerical noise might put us a bit on the wrong side of the near plane. + // Don't let that happen. + p0.z = min(p0.z, -czm_currentFrustum.x); + + clipped = true; + } + } + + clippedPositionEC = vec4(p0, 1.0); + positionWC = czm_eyeToWindowCoordinates(clippedPositionEC); +} + +vec4 getPolylineWindowCoordinatesEC(vec4 positionEC, vec4 prevEC, vec4 nextEC, float expandDirection, float width, bool usePrevious, out float angle) +{ + // expandDirection +1 is to the _left_ when looking from positionEC toward nextEC. + +#ifdef POLYLINE_DASH + // Compute the window coordinates of the points. + vec4 positionWindow = czm_eyeToWindowCoordinates(positionEC); + vec4 previousWindow = czm_eyeToWindowCoordinates(prevEC); + vec4 nextWindow = czm_eyeToWindowCoordinates(nextEC); + + // Determine the relative screen space direction of the line. + vec2 lineDir; + if (usePrevious) { + lineDir = normalize(positionWindow.xy - previousWindow.xy); + } + else { + lineDir = normalize(nextWindow.xy - positionWindow.xy); + } + angle = atan(lineDir.x, lineDir.y) - 1.570796327; // precomputed atan(1,0) + + // Quantize the angle so it doesn't change rapidly between segments. + angle = floor(angle / czm_piOverFour + 0.5) * czm_piOverFour; +#endif + + vec4 clippedPrevWC, clippedPrevEC; + bool prevSegmentClipped, prevSegmentCulled; + clipLineSegmentToNearPlane(prevEC.xyz, positionEC.xyz, clippedPrevWC, prevSegmentClipped, prevSegmentCulled, clippedPrevEC); + + vec4 clippedNextWC, clippedNextEC; + bool nextSegmentClipped, nextSegmentCulled; + clipLineSegmentToNearPlane(nextEC.xyz, positionEC.xyz, clippedNextWC, nextSegmentClipped, nextSegmentCulled, clippedNextEC); + + bool segmentClipped, segmentCulled; + vec4 clippedPositionWC, clippedPositionEC; + clipLineSegmentToNearPlane(positionEC.xyz, usePrevious ? prevEC.xyz : nextEC.xyz, clippedPositionWC, segmentClipped, segmentCulled, clippedPositionEC); + + if (segmentCulled) + { + return vec4(0.0, 0.0, 0.0, 1.0); + } + + vec2 directionToPrevWC = normalize(clippedPrevWC.xy - clippedPositionWC.xy); + vec2 directionToNextWC = normalize(clippedNextWC.xy - clippedPositionWC.xy); + + // If a segment was culled, we can't use the corresponding direction + // computed above. We should never see both of these be true without + // \`segmentCulled\` above also being true. + if (prevSegmentCulled) + { + directionToPrevWC = -directionToNextWC; + } + else if (nextSegmentCulled) + { + directionToNextWC = -directionToPrevWC; + } + + vec2 thisSegmentForwardWC, otherSegmentForwardWC; + if (usePrevious) + { + thisSegmentForwardWC = -directionToPrevWC; + otherSegmentForwardWC = directionToNextWC; + } + else + { + thisSegmentForwardWC = directionToNextWC; + otherSegmentForwardWC = -directionToPrevWC; + } + + vec2 thisSegmentLeftWC = vec2(-thisSegmentForwardWC.y, thisSegmentForwardWC.x); + + vec2 leftWC = thisSegmentLeftWC; + float expandWidth = width * 0.5; + + // When lines are split at the anti-meridian, the position may be at the + // same location as the next or previous position, and we need to handle + // that to avoid producing NaNs. + if (!czm_equalsEpsilon(prevEC.xyz - positionEC.xyz, vec3(0.0), czm_epsilon1) && !czm_equalsEpsilon(nextEC.xyz - positionEC.xyz, vec3(0.0), czm_epsilon1)) + { + vec2 otherSegmentLeftWC = vec2(-otherSegmentForwardWC.y, otherSegmentForwardWC.x); + + vec2 leftSumWC = thisSegmentLeftWC + otherSegmentLeftWC; + float leftSumLength = length(leftSumWC); + leftWC = leftSumLength < czm_epsilon6 ? thisSegmentLeftWC : (leftSumWC / leftSumLength); + + // The sine of the angle between the two vectors is given by the formula + // |a x b| = |a||b|sin(theta) + // which is + // float sinAngle = length(cross(vec3(leftWC, 0.0), vec3(-thisSegmentForwardWC, 0.0))); + // Because the z components of both vectors are zero, the x and y coordinate will be zero. + // Therefore, the sine of the angle is just the z component of the cross product. + vec2 u = -thisSegmentForwardWC; + vec2 v = leftWC; + float sinAngle = abs(u.x * v.y - u.y * v.x); + expandWidth = clamp(expandWidth / sinAngle, 0.0, width * 2.0); + } + + vec2 offset = leftWC * expandDirection * expandWidth * czm_pixelRatio; + return vec4(clippedPositionWC.xy + offset, -clippedPositionWC.z, 1.0) * (czm_projection * clippedPositionEC).w; +} + +vec4 getPolylineWindowCoordinates(vec4 position, vec4 previous, vec4 next, float expandDirection, float width, bool usePrevious, out float angle) +{ + vec4 positionEC = czm_modelViewRelativeToEye * position; + vec4 prevEC = czm_modelViewRelativeToEye * previous; + vec4 nextEC = czm_modelViewRelativeToEye * next; + return getPolylineWindowCoordinatesEC(positionEC, prevEC, nextEC, expandDirection, width, usePrevious, angle); +} +`;var ZH=`${Md} +${JG}`,X2e=tC;Ht.isInternetExplorer()||(ZH=`#define CLIP_POLYLINE +${ZH}`);function lC(e){e=e??Y.EMPTY_OBJECT;let t=e.translucent??!0,n=!1,i=lC.VERTEX_FORMAT;this.material=void 0,this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??ZH,this._fragmentShaderSource=e.fragmentShaderSource??X2e,this._renderState=go.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=i}Object.defineProperties(lC.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}}});lC.VERTEX_FORMAT=we.POSITION_ONLY;lC.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;lC.prototype.isTranslucent=go.prototype.isTranslucent;lC.prototype.getRenderState=go.prototype.getRenderState;var bs=lC;var E6t=y(C(),1);var u6t=y(C(),1),jG=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 prevPosition3DHigh; +in vec3 prevPosition3DLow; +in vec3 nextPosition3DHigh; +in vec3 nextPosition3DLow; +in vec2 expandAndWidth; +in vec2 st; +in float batchId; + +out float v_width; +out vec2 v_st; +out float v_polylineAngle; + +void main() +{ + float expandDir = expandAndWidth.x; + float width = abs(expandAndWidth.y) + 0.5; + bool usePrev = expandAndWidth.y < 0.0; + + vec4 p = czm_computePosition(); + vec4 prev = czm_computePrevPosition(); + vec4 next = czm_computeNextPosition(); + + float angle; + vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, angle); + gl_Position = czm_viewportOrthographic * positionWC; + + v_width = width; + v_st.s = st.s; + v_st.t = czm_writeNonPerspective(st.t, gl_Position.w); + v_polylineAngle = angle; +} +`;var h6t=y(C(),1),dC=`#ifdef VECTOR_TILE +uniform vec4 u_highlightColor; +#endif + +in vec2 v_st; + +void main() +{ + czm_materialInput materialInput; + + vec2 st = v_st; + st.t = czm_readNonPerspective(st.t, gl_FragCoord.w); + + materialInput.s = st.s; + materialInput.st = st; + materialInput.str = vec3(st, 0.0); + + czm_material material = czm_getMaterial(materialInput); + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#ifdef VECTOR_TILE + out_FragColor *= u_highlightColor; +#endif + + czm_writeLogDepth(); +} +`;var BH=`${Md} +${jG}`,W2e=dC;Ht.isInternetExplorer()||(BH=`#define CLIP_POLYLINE +${BH}`);function uC(e){e=e??Y.EMPTY_OBJECT;let t=e.translucent??!0,n=!1,i=uC.VERTEX_FORMAT;this.material=l(e.material)?e.material:so.fromType(so.ColorType),this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??BH,this._fragmentShaderSource=e.fragmentShaderSource??W2e,this._renderState=go.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=i}Object.defineProperties(uC.prototype,{vertexShaderSource:{get:function(){let e=this._vertexShaderSource;return this.material.shaderSource.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&(e=`#define POLYLINE_DASH +${e}`),e}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}}});uC.VERTEX_FORMAT=we.POSITION_AND_ST;uC.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;uC.prototype.isTranslucent=go.prototype.isTranslucent;uC.prototype.getRenderState=go.prototype.getRenderState;var Pa=uC;function lA(e){e=e??Y.EMPTY_OBJECT,this.geometryInstances=e.geometryInstances,this._hasPerInstanceColors=!0;let t=e.appearance;l(t)||(t=new Pa),this.appearance=t,this.show=e.show??!0,this.classificationType=e.classificationType??$n.BOTH,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._debugShowShadowVolume=e.debugShowShadowVolume??!1,this._primitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:!1,interleave:e.interleave??!1,releaseGeometryInstances:e.releaseGeometryInstances??!0,allowPicking:e.allowPicking??!0,asynchronous:e.asynchronous??!0,compressVertices:!1,_createShaderProgramFunction:void 0,_createCommandsFunction:void 0,_updateAndQueueCommandsFunction:void 0},this._zIndex=void 0,this._ready=!1,this._primitive=void 0,this._sp=void 0,this._sp2D=void 0,this._spMorph=void 0,this._renderState=yre(!1),this._renderState3DTiles=yre(!0),this._renderStateMorph=Qe.fromCache({cull:{enabled:!0,face:Xi.FRONT},depthTest:{enabled:!0},blending:bn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1})}Object.defineProperties(lA.prototype,{interleave:{get:function(){return this._primitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._primitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._primitiveOptions.allowPicking}},asynchronous:{get:function(){return this._primitiveOptions.asynchronous}},ready:{get:function(){return this._ready}},debugShowShadowVolume:{get:function(){return this._debugShowShadowVolume}}});lA.initializeTerrainHeights=function(){return Si.initialize()};function F2e(e,t,n){let i=t.context,o=e._primitive,r=o._attributeLocations,s=o._batchTable.getVertexShaderCallback()(KG);s=Nn._appendShowToShader(o,s),s=Nn._appendDistanceDisplayConditionToShader(o,s),s=Nn._modifyShaderPosition(e,s,t.scene3DOnly);let a=o._batchTable.getVertexShaderCallback()(zG);a=Nn._appendShowToShader(o,a),a=Nn._appendDistanceDisplayConditionToShader(o,a),a=Nn._modifyShaderPosition(e,a,t.scene3DOnly);let c=o._batchTable.getVertexShaderCallback()(OG),d=[`GLOBE_MINIMUM_ALTITUDE ${t.mapProjection.ellipsoid.minimumRadius.toFixed(1)}`],u="",h="";l(n.material)?(h=l(n.material)?n.material.shaderSource:"",h.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&d.push("ANGLE_VARYING"),h.search(/in\s+float\s+v_width;/g)!==-1&&d.push("WIDTH_VARYING")):u="PER_INSTANCE_COLOR",d.push(u);let p=e.debugShowShadowVolume?["DEBUG_SHOW_VOLUME",u]:[u],g=new Oe({defines:d,sources:[s]}),f=new Oe({defines:p,sources:[h,c]});e._sp=ln.replaceCache({context:i,shaderProgram:o._sp,vertexShaderSource:g,fragmentShaderSource:f,attributeLocations:r});let b=i.shaderCache.getDerivedShaderProgram(e._sp,"2dColor");if(!l(b)){let I=new Oe({defines:d.concat(["COLUMBUS_VIEW_2D"]),sources:[s]});b=i.shaderCache.createDerivedShaderProgram(e._sp,"2dColor",{context:i,shaderProgram:e._sp2D,vertexShaderSource:I,fragmentShaderSource:f,attributeLocations:r})}e._sp2D=b;let x=i.shaderCache.getDerivedShaderProgram(e._sp,"MorphColor");if(!l(x)){let I=new Oe({defines:d.concat([`MAX_TERRAIN_HEIGHT ${Si._defaultMaxTerrainHeight.toFixed(1)}`]),sources:[a]});c=o._batchTable.getVertexShaderCallback()(HG);let _=new Oe({defines:p,sources:[h,c]});x=i.shaderCache.createDerivedShaderProgram(e._sp,"MorphColor",{context:i,shaderProgram:e._spMorph,vertexShaderSource:I,fragmentShaderSource:_,attributeLocations:r})}e._spMorph=x}function yre(e){return Qe.fromCache({cull:{enabled:!0},blending:bn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1,stencilTest:{enabled:e,frontFunction:ei.EQUAL,frontOperation:{fail:Ct.KEEP,zFail:Ct.KEEP,zPass:Ct.KEEP},backFunction:ei.EQUAL,backOperation:{fail:Ct.KEEP,zFail:Ct.KEEP,zPass:Ct.KEEP},reference:jt.CESIUM_3D_TILE_MASK,mask:jt.CESIUM_3D_TILE_MASK}})}function P2e(e,t,n,i,o,r){let s=e._primitive,a=s._va.length;o.length=a,r.length=a;let d=t instanceof bs?{}:n._uniforms,u=s._batchTable.getUniformMapCallback()(d);for(let h=0;h{!this._ready&&l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};lA.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};lA.isSupported=function(e){return e.frameState.context.depthTexture};lA.prototype.isDestroyed=function(){return!1};lA.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),this._sp=this._sp&&this._sp.destroy(),this._sp2D=void 0,this._spMorph=void 0,me(this)};var ch=lA;var Eqt=y(C(),1);var gqt=y(C(),1);var dqt=y(C(),1);var v2e=new D(1,1),N2e=!1,D2e=U.WHITE;function nE(e){e=e??Y.EMPTY_OBJECT,this._definitionChanged=new Ce,this._image=void 0,this._imageSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._transparent=void 0,this._transparentSubscription=void 0,this.image=e.image,this.repeat=e.repeat,this.color=e.color,this.transparent=e.transparent}Object.defineProperties(nE.prototype,{isConstant:{get:function(){return z.isConstant(this._image)&&z.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},image:fe("image"),repeat:fe("repeat"),color:fe("color"),transparent:fe("transparent")});nE.prototype.getType=function(e){return"Image"};var Q2e=new j;nE.prototype.getValue=function(e,t){return l(e)||(e=j.now(Q2e)),l(t)||(t={}),t.image=z.getValueOrUndefined(this._image,e),t.repeat=z.getValueOrClonedDefault(this._repeat,e,v2e,t.repeat),t.color=z.getValueOrClonedDefault(this._color,e,D2e,t.color),z.getValueOrDefault(this._transparent,e,N2e)&&(t.color.alpha=Math.min(.99,t.color.alpha)),t};nE.prototype.equals=function(e){return this===e||e instanceof nE&&z.equals(this._image,e._image)&&z.equals(this._repeat,e._repeat)&&z.equals(this._color,e._color)&&z.equals(this._transparent,e._transparent)};var Lb=nE;function U2e(e){if(e instanceof U)return new qt(e);if(typeof e=="string"||e instanceof Ve||e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement){let t=new Lb;return t.image=e,t}}function k2e(e,t){return fe(e,t,U2e)}var Oo=k2e;function qG(e){this._definitionChanged=new Ce,this._show=void 0,this._showSubscription=void 0,this._dimensions=void 0,this._dimensionsSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??Y.EMPTY_OBJECT)}Object.defineProperties(qG.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:fe("show"),dimensions:fe("dimensions"),heightReference:fe("heightReference"),fill:fe("fill"),material:Oo("material"),outline:fe("outline"),outlineColor:fe("outlineColor"),outlineWidth:fe("outlineWidth"),shadows:fe("shadows"),distanceDisplayCondition:fe("distanceDisplayCondition")});qG.prototype.clone=function(e){return l(e)?(e.show=this.show,e.dimensions=this.dimensions,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new qG(this)};qG.prototype.merge=function(e){this.show=this.show??e.show,this.dimensions=this.dimensions??e.dimensions,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var mC=qG;var Qqt=y(C(),1);var Sqt=y(C(),1),Y2e={FIXED:0,INERTIAL:1},eo=Object.freeze(Y2e);var Xqt=y(C(),1);function iE(){Ae.throwInstantiationError()}Object.defineProperties(iE.prototype,{isConstant:{get:Ae.throwInstantiationError},definitionChanged:{get:Ae.throwInstantiationError},referenceFrame:{get:Ae.throwInstantiationError}});iE.prototype.getValue=Ae.throwInstantiationError;iE.prototype.getValueInReferenceFrame=Ae.throwInstantiationError;iE.prototype.equals=Ae.throwInstantiationError;var xre=new $;iE.convertToReferenceFrame=function(e,t,n,i,o){if(!l(t))return t;if(l(o)||(o=new m),n===i)return m.clone(t,o);let r=Dt.computeIcrfToCentralBodyFixedMatrix(e,xre);if(n===eo.INERTIAL)return $.multiplyByVector(r,t,o);if(n===eo.FIXED)return $.multiplyByVector($.transpose(r,xre),t,o)};var lh=iE;function hC(e,t){this._definitionChanged=new Ce,this._value=m.clone(e),this._referenceFrame=t??eo.FIXED}Object.defineProperties(hC.prototype,{isConstant:{get:function(){return!l(this._value)||this._referenceFrame===eo.FIXED}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var O2e=new j;hC.prototype.getValue=function(e,t){return l(e)||(e=j.now(O2e)),this.getValueInReferenceFrame(e,eo.FIXED,t)};hC.prototype.setValue=function(e,t){let n=!1;m.equals(this._value,e)||(n=!0,this._value=m.clone(e)),l(t)&&this._referenceFrame!==t&&(n=!0,this._referenceFrame=t),n&&this._definitionChanged.raiseEvent(this)};hC.prototype.getValueInReferenceFrame=function(e,t,n){return lh.convertToReferenceFrame(e,this._value,this._referenceFrame,t,n)};hC.prototype.equals=function(e){return this===e||e instanceof hC&&m.equals(this._value,e._value)&&this._referenceFrame===e._referenceFrame};var dl=hC;var Kqt=y(C(),1);function $G(e){this._definitionChanged=new Ce,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._cornerType=void 0,this._cornerTypeSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??Y.EMPTY_OBJECT)}Object.defineProperties($G.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:fe("show"),positions:fe("positions"),width:fe("width"),height:fe("height"),heightReference:fe("heightReference"),extrudedHeight:fe("extrudedHeight"),extrudedHeightReference:fe("extrudedHeightReference"),cornerType:fe("cornerType"),granularity:fe("granularity"),fill:fe("fill"),material:Oo("material"),outline:fe("outline"),outlineColor:fe("outlineColor"),outlineWidth:fe("outlineWidth"),shadows:fe("shadows"),distanceDisplayCondition:fe("distanceDisplayCondition"),classificationType:fe("classificationType"),zIndex:fe("zIndex")});$G.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.width=this.width,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.cornerType=this.cornerType,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new $G(this)};$G.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.width=this.width??e.width,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.cornerType=this.cornerType??e.cornerType,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var fC=$G;var qqt=y(C(),1);function H2e(e){return e}function z2e(e,t){return fe(e,t,H2e)}var ul=z2e;var r$t=y(C(),1);function eZ(e){this._definitionChanged=new Ce,this._show=void 0,this._showSubscription=void 0,this._length=void 0,this._lengthSubscription=void 0,this._topRadius=void 0,this._topRadiusSubscription=void 0,this._bottomRadius=void 0,this._bottomRadiusSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._slices=void 0,this._slicesSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??Y.EMPTY_OBJECT)}Object.defineProperties(eZ.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:fe("show"),length:fe("length"),topRadius:fe("topRadius"),bottomRadius:fe("bottomRadius"),heightReference:fe("heightReference"),fill:fe("fill"),material:Oo("material"),outline:fe("outline"),outlineColor:fe("outlineColor"),outlineWidth:fe("outlineWidth"),numberOfVerticalLines:fe("numberOfVerticalLines"),slices:fe("slices"),shadows:fe("shadows"),distanceDisplayCondition:fe("distanceDisplayCondition")});eZ.prototype.clone=function(e){return l(e)?(e.show=this.show,e.length=this.length,e.topRadius=this.topRadius,e.bottomRadius=this.bottomRadius,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.numberOfVerticalLines=this.numberOfVerticalLines,e.slices=this.slices,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new eZ(this)};eZ.prototype.merge=function(e){this.show=this.show??e.show,this.length=this.length??e.length,this.topRadius=this.topRadius??e.topRadius,this.bottomRadius=this.bottomRadius??e.bottomRadius,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.numberOfVerticalLines=this.numberOfVerticalLines??e.numberOfVerticalLines,this.slices=this.slices??e.slices,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var pC=eZ;var m$t=y(C(),1);function tZ(e){this._definitionChanged=new Ce,this._show=void 0,this._showSubscription=void 0,this._semiMajorAxis=void 0,this._semiMajorAxisSubscription=void 0,this._semiMinorAxis=void 0,this._semiMinorAxisSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??Y.EMPTY_OBJECT)}Object.defineProperties(tZ.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:fe("show"),semiMajorAxis:fe("semiMajorAxis"),semiMinorAxis:fe("semiMinorAxis"),height:fe("height"),heightReference:fe("heightReference"),extrudedHeight:fe("extrudedHeight"),extrudedHeightReference:fe("extrudedHeightReference"),rotation:fe("rotation"),stRotation:fe("stRotation"),granularity:fe("granularity"),fill:fe("fill"),material:Oo("material"),outline:fe("outline"),outlineColor:fe("outlineColor"),outlineWidth:fe("outlineWidth"),numberOfVerticalLines:fe("numberOfVerticalLines"),shadows:fe("shadows"),distanceDisplayCondition:fe("distanceDisplayCondition"),classificationType:fe("classificationType"),zIndex:fe("zIndex")});tZ.prototype.clone=function(e){return l(e)?(e.show=this.show,e.semiMajorAxis=this.semiMajorAxis,e.semiMinorAxis=this.semiMinorAxis,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.rotation=this.rotation,e.stRotation=this.stRotation,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.numberOfVerticalLines=this.numberOfVerticalLines,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new tZ(this)};tZ.prototype.merge=function(e){this.show=this.show??e.show,this.semiMajorAxis=this.semiMajorAxis??e.semiMajorAxis,this.semiMinorAxis=this.semiMinorAxis??e.semiMinorAxis,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.rotation=this.rotation??e.rotation,this.stRotation=this.stRotation??e.stRotation,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.numberOfVerticalLines=this.numberOfVerticalLines??e.numberOfVerticalLines,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var AC=tZ;var y$t=y(C(),1);function nZ(e){this._definitionChanged=new Ce,this._show=void 0,this._showSubscription=void 0,this._radii=void 0,this._radiiSubscription=void 0,this._innerRadii=void 0,this._innerRadiiSubscription=void 0,this._minimumClock=void 0,this._minimumClockSubscription=void 0,this._maximumClock=void 0,this._maximumClockSubscription=void 0,this._minimumCone=void 0,this._minimumConeSubscription=void 0,this._maximumCone=void 0,this._maximumConeSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._stackPartitions=void 0,this._stackPartitionsSubscription=void 0,this._slicePartitions=void 0,this._slicePartitionsSubscription=void 0,this._subdivisions=void 0,this._subdivisionsSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??Y.EMPTY_OBJECT)}Object.defineProperties(nZ.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:fe("show"),radii:fe("radii"),innerRadii:fe("innerRadii"),minimumClock:fe("minimumClock"),maximumClock:fe("maximumClock"),minimumCone:fe("minimumCone"),maximumCone:fe("maximumCone"),heightReference:fe("heightReference"),fill:fe("fill"),material:Oo("material"),outline:fe("outline"),outlineColor:fe("outlineColor"),outlineWidth:fe("outlineWidth"),stackPartitions:fe("stackPartitions"),slicePartitions:fe("slicePartitions"),subdivisions:fe("subdivisions"),shadows:fe("shadows"),distanceDisplayCondition:fe("distanceDisplayCondition")});nZ.prototype.clone=function(e){return l(e)?(e.show=this.show,e.radii=this.radii,e.innerRadii=this.innerRadii,e.minimumClock=this.minimumClock,e.maximumClock=this.maximumClock,e.minimumCone=this.minimumCone,e.maximumCone=this.maximumCone,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.stackPartitions=this.stackPartitions,e.slicePartitions=this.slicePartitions,e.subdivisions=this.subdivisions,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new nZ(this)};nZ.prototype.merge=function(e){this.show=this.show??e.show,this.radii=this.radii??e.radii,this.innerRadii=this.innerRadii??e.innerRadii,this.minimumClock=this.minimumClock??e.minimumClock,this.maximumClock=this.maximumClock??e.maximumClock,this.minimumCone=this.minimumCone??e.minimumCone,this.maximumCone=this.maximumCone??e.maximumCone,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.stackPartitions=this.stackPartitions??e.stackPartitions,this.slicePartitions=this.slicePartitions??e.slicePartitions,this.subdivisions=this.subdivisions??e.subdivisions,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var gC=nZ;var T$t=y(C(),1);function iZ(e){this._definitionChanged=new Ce,this._show=void 0,this._showSubscription=void 0,this._text=void 0,this._textSubscription=void 0,this._font=void 0,this._fontSubscription=void 0,this._style=void 0,this._styleSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._showBackground=void 0,this._showBackgroundSubscription=void 0,this._backgroundColor=void 0,this._backgroundColorSubscription=void 0,this._backgroundPadding=void 0,this._backgroundPaddingSubscription=void 0,this._pixelOffset=void 0,this._pixelOffsetSubscription=void 0,this._eyeOffset=void 0,this._eyeOffsetSubscription=void 0,this._horizontalOrigin=void 0,this._horizontalOriginSubscription=void 0,this._verticalOrigin=void 0,this._verticalOriginSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fillColor=void 0,this._fillColorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._pixelOffsetScaleByDistance=void 0,this._pixelOffsetScaleByDistanceSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this.merge(e??Y.EMPTY_OBJECT)}Object.defineProperties(iZ.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:fe("show"),text:fe("text"),font:fe("font"),style:fe("style"),scale:fe("scale"),showBackground:fe("showBackground"),backgroundColor:fe("backgroundColor"),backgroundPadding:fe("backgroundPadding"),pixelOffset:fe("pixelOffset"),eyeOffset:fe("eyeOffset"),horizontalOrigin:fe("horizontalOrigin"),verticalOrigin:fe("verticalOrigin"),heightReference:fe("heightReference"),fillColor:fe("fillColor"),outlineColor:fe("outlineColor"),outlineWidth:fe("outlineWidth"),translucencyByDistance:fe("translucencyByDistance"),pixelOffsetScaleByDistance:fe("pixelOffsetScaleByDistance"),scaleByDistance:fe("scaleByDistance"),distanceDisplayCondition:fe("distanceDisplayCondition"),disableDepthTestDistance:fe("disableDepthTestDistance")});iZ.prototype.clone=function(e){return l(e)?(e.show=this.show,e.text=this.text,e.font=this.font,e.style=this.style,e.scale=this.scale,e.showBackground=this.showBackground,e.backgroundColor=this.backgroundColor,e.backgroundPadding=this.backgroundPadding,e.pixelOffset=this.pixelOffset,e.eyeOffset=this.eyeOffset,e.horizontalOrigin=this.horizontalOrigin,e.verticalOrigin=this.verticalOrigin,e.heightReference=this.heightReference,e.fillColor=this.fillColor,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.translucencyByDistance=this.translucencyByDistance,e.pixelOffsetScaleByDistance=this.pixelOffsetScaleByDistance,e.scaleByDistance=this.scaleByDistance,e.distanceDisplayCondition=this.distanceDisplayCondition,e.disableDepthTestDistance=this.disableDepthTestDistance,e):new iZ(this)};iZ.prototype.merge=function(e){this.show=this.show??e.show,this.text=this.text??e.text,this.font=this.font??e.font,this.style=this.style??e.style,this.scale=this.scale??e.scale,this.showBackground=this.showBackground??e.showBackground,this.backgroundColor=this.backgroundColor??e.backgroundColor,this.backgroundPadding=this.backgroundPadding??e.backgroundPadding,this.pixelOffset=this.pixelOffset??e.pixelOffset,this.eyeOffset=this.eyeOffset??e.eyeOffset,this.horizontalOrigin=this.horizontalOrigin??e.horizontalOrigin,this.verticalOrigin=this.verticalOrigin??e.verticalOrigin,this.heightReference=this.heightReference??e.heightReference,this.fillColor=this.fillColor??e.fillColor,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.translucencyByDistance=this.translucencyByDistance??e.translucencyByDistance,this.pixelOffsetScaleByDistance=this.pixelOffsetScaleByDistance??e.pixelOffsetScaleByDistance,this.scaleByDistance=this.scaleByDistance??e.scaleByDistance,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.disableDepthTestDistance=this.disableDepthTestDistance??e.disableDepthTestDistance};var dh=iZ;var ten=y(C(),1);var v$t=y(C(),1);var G$t=y(C(),1);var K2e=new m(1,1,1),J2e=m.ZERO,j2e=Pe.IDENTITY;function Ire(e,t,n){this.translation=m.clone(e??J2e),this.rotation=Pe.clone(t??j2e),this.scale=m.clone(n??K2e)}Ire.prototype.equals=function(e){return this===e||l(e)&&m.equals(this.translation,e.translation)&&Pe.equals(this.rotation,e.rotation)&&m.equals(this.scale,e.scale)};var Rb=Ire;var wH=new Rb;function oZ(e){e=e??Y.EMPTY_OBJECT,this._definitionChanged=new Ce,this._translation=void 0,this._translationSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this.translation=e.translation,this.rotation=e.rotation,this.scale=e.scale}Object.defineProperties(oZ.prototype,{isConstant:{get:function(){return z.isConstant(this._translation)&&z.isConstant(this._rotation)&&z.isConstant(this._scale)}},definitionChanged:{get:function(){return this._definitionChanged}},translation:fe("translation"),rotation:fe("rotation"),scale:fe("scale")});var q2e=new j;oZ.prototype.getValue=function(e,t){return l(e)||(e=j.now(q2e)),l(t)||(t=new Rb),t.translation=z.getValueOrClonedDefault(this._translation,e,wH.translation,t.translation),t.rotation=z.getValueOrClonedDefault(this._rotation,e,wH.rotation,t.rotation),t.scale=z.getValueOrClonedDefault(this._scale,e,wH.scale,t.scale),t};oZ.prototype.equals=function(e){return this===e||e instanceof oZ&&z.equals(this._translation,e._translation)&&z.equals(this._rotation,e._rotation)&&z.equals(this._scale,e._scale)};var bC=oZ;var H$t=y(C(),1);function dA(e,t){this._propertyNames=[],this._definitionChanged=new Ce,l(e)&&this.merge(e,t)}Object.defineProperties(dA.prototype,{propertyNames:{get:function(){return this._propertyNames}},isConstant:{get:function(){let e=this._propertyNames;for(let t=0,n=e.length;t{this._terrainHeight=s.height,this.definitionChanged.raiseEvent()};this._removeCallbackFunc=e.updateHeight(i,r,this._heightReference)};var yWe=new j;rE.prototype.getValue=function(e,t){l(e)||(e=j.now(yWe));let n=z.getValueOrDefault(this._heightReference,e,et.NONE),i=z.getValueOrDefault(this._extrudedHeightReference,e,et.NONE);if(n===et.NONE&&!D_(i))return this._position=m.clone(m.ZERO,this._position),m.clone(m.ZERO,t);if(this._positionProperty.isConstant)return m.multiplyByScalar(this._normal,this._terrainHeight,t);let o=this._scene,r=this._positionProperty.getValue(e,Lre);if(!l(r)||m.equals(r,m.ZERO)||!l(o.globe))return m.clone(m.ZERO,t);if(m.equalsEpsilon(this._position,r,Z.EPSILON10))return m.multiplyByScalar(this._normal,this._terrainHeight,t);this._position=m.clone(r,this._position),this._updateClamping();let s=o.ellipsoid.geodeticSurfaceNormal(r,this._normal);return m.multiplyByScalar(s,this._terrainHeight,t)};rE.prototype.isDestroyed=function(){return!1};rE.prototype.destroy=function(){return l(this._removeEventListener)&&this._removeEventListener(),l(this._removeModeListener)&&this._removeModeListener(),l(this._removeCallbackFunc)&&this._removeCallbackFunc(),me(this)};var IC=rE;function CWe(e,t,n,i){if(Ci.prototype._onEntityPropertyChanged.call(this,e,t,n,i),this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o))return;l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0);let r=o.heightReference;if(l(r)){let s=new hh(this._computeCenter.bind(this),!this._dynamic);this._terrainOffsetProperty=new IC(this._scene,s,r)}}var fA=CWe;var Rre=m.ZERO,Vre=new m,xWe=new m,Gre=new U;function IWe(e){this.id=e,this.vertexFormat=void 0,this.dimensions=void 0,this.offsetAttribute=void 0}function vd(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new IWe(e),geometryPropertyName:"box",observedPropertyNames:["availability","position","orientation","box"]}),this._onEntityPropertyChanged(e,"box",e.box,void 0)}l(Object.create)&&(vd.prototype=Object.create(Ci.prototype),vd.prototype.constructor=vd);Object.defineProperties(vd.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});vd.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=jn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r,color:void 0,offset:void 0};if(this._materialProperty instanceof qt){let a;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,Gre)),l(a)||(a=U.WHITE),s.color=tn.fromColor(a)}return l(this._options.offsetAttribute)&&(s.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,Rre,Vre))),new wt({id:t,geometry:sc.fromDimensions(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.box.heightReference,this._options.dimensions.z*.5,this._scene.ellipsoid),attributes:s})};vd.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=z.getValueOrDefault(this._outlineColorProperty,e,U.BLACK,Gre),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:tn.fromColor(i),distanceDisplayCondition:jn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,Rre,Vre))),new wt({id:t,geometry:nh.fromDimensions(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.box.heightReference,this._options.dimensions.z*.5,this._scene.ellipsoid),attributes:r})};vd.prototype._computeCenter=function(e,t){return z.getValueOrUndefined(this._entity.position,e,t)};vd.prototype._isHidden=function(e,t){return!l(t.dimensions)||!l(e.position)||Ci.prototype._isHidden.call(this,e,t)};vd.prototype._isDynamic=function(e,t){return!e.position.isConstant||!z.isConstant(e.orientation)||!t.dimensions.isConstant||!z.isConstant(t.outlineWidth)};vd.prototype._setStaticOptions=function(e,t){let n=z.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,et.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof qt?yn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,i.dimensions=t.dimensions.getValue(ze.MINIMUM_VALUE,i.dimensions),i.offsetAttribute=n!==et.NONE?pn.ALL:void 0};vd.prototype._onEntityPropertyChanged=fA;vd.DynamicGeometryUpdater=sE;function sE(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(sE.prototype=Object.create(yi.prototype),sE.prototype.constructor=sE);sE.prototype._isHidden=function(e,t,n){let i=z.getValueOrUndefined(e.position,n,xWe),o=this._options.dimensions;return!l(i)||!l(o)||yi.prototype._isHidden.call(this,e,t,n)};sE.prototype._setOptions=function(e,t,n){let i=z.getValueOrDefault(t.heightReference,n,et.NONE),o=this._options;o.dimensions=z.getValueOrUndefined(t.dimensions,n,o.dimensions),o.offsetAttribute=i!==et.NONE?pn.ALL:void 0};var AZ=vd;var min=y(C(),1);function _C(e,t,n){this._callback=void 0,this._isConstant=void 0,this._referenceFrame=n??eo.FIXED,this._definitionChanged=new Ce,this.setCallback(e,t)}Object.defineProperties(_C.prototype,{isConstant:{get:function(){return this._isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var _We=new j;_C.prototype.getValue=function(e,t){return l(e)||(e=j.now(_We)),this.getValueInReferenceFrame(e,eo.FIXED,t)};_C.prototype.setCallback=function(e,t){let n=this._callback!==e||this._isConstant!==t;this._callback=e,this._isConstant=t,n&&this._definitionChanged.raiseEvent(this)};_C.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._callback(e,n);return lh.convertToReferenceFrame(e,i,this._referenceFrame,t,n)};_C.prototype.equals=function(e){return this===e||e instanceof _C&&this._callback===e._callback&&this._isConstant===e._isConstant&&this._referenceFrame===e._referenceFrame};var gZ=_C;var O6n=y(C(),1);var W6n=y(C(),1);var bin=y(C(),1);var fin=y(C(),1);/*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE */var{entries:Nre,setPrototypeOf:Zre,isFrozen:EWe,getPrototypeOf:TWe,getOwnPropertyDescriptor:SWe}=Object,{freeze:pl,seal:Ku,create:Dre}=Object,{apply:DH,construct:QH}=typeof Reflect<"u"&&Reflect;pl||(pl=function(t){return t});Ku||(Ku=function(t){return t});DH||(DH=function(t,n,i){return t.apply(n,i)});QH||(QH=function(t,n){return new t(...n)});var PD=Al(Array.prototype.forEach),LWe=Al(Array.prototype.lastIndexOf),Bre=Al(Array.prototype.pop),bZ=Al(Array.prototype.push),RWe=Al(Array.prototype.splice),vD=Al(String.prototype.toLowerCase),FH=Al(String.prototype.toString),wre=Al(String.prototype.match),yZ=Al(String.prototype.replace),VWe=Al(String.prototype.indexOf),GWe=Al(String.prototype.trim),fh=Al(Object.prototype.hasOwnProperty),fl=Al(RegExp.prototype.test),CZ=ZWe(TypeError);function Al(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;o2&&arguments[2]!==void 0?arguments[2]:vD;Zre&&Zre(e,null);let i=t.length;for(;i--;){let o=t[i];if(typeof o=="string"){let r=n(o);r!==o&&(EWe(t)||(t[i]=r),o=r)}e[o]=!0}return e}function BWe(e){for(let t=0;t/gm),PWe=Ku(/\$\{[\w\W]*/gm),MWe=Ku(/^data-[\-\w.\u00B7-\uFFFF]+$/),vWe=Ku(/^aria-[\-\w]+$/),Qre=Ku(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),NWe=Ku(/^(?:\w+script|data):/i),DWe=Ku(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Ure=Ku(/^html$/i),QWe=Ku(/^[a-z][.\w]*(-[.\w]+)+$/i),Mre=Object.freeze({__proto__:null,ARIA_ATTR:vWe,ATTR_WHITESPACE:DWe,CUSTOM_ELEMENT:QWe,DATA_ATTR:MWe,DOCTYPE_NAME:Ure,ERB_EXPR:FWe,IS_ALLOWED_URI:Qre,IS_SCRIPT_OR_DATA:NWe,MUSTACHE_EXPR:WWe,TMPLIT_EXPR:PWe}),IZ={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},UWe=function(){return typeof window>"u"?null:window},kWe=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let i=null,o="data-tt-policy-suffix";n&&n.hasAttribute(o)&&(i=n.getAttribute(o));let r="dompurify"+(i?"#"+i:"");try{return t.createPolicy(r,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+r+" could not be created."),null}},vre=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function kre(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:UWe(),t=mn=>kre(mn);if(t.version="3.2.6",t.removed=[],!e||!e.document||e.document.nodeType!==IZ.document||!e.Element)return t.isSupported=!1,t;let{document:n}=e,i=n,o=i.currentScript,{DocumentFragment:r,HTMLTemplateElement:s,Node:a,Element:c,NodeFilter:d,NamedNodeMap:u=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:h,DOMParser:p,trustedTypes:g}=e,f=c.prototype,b=xZ(f,"cloneNode"),x=xZ(f,"remove"),I=xZ(f,"nextSibling"),_=xZ(f,"childNodes"),E=xZ(f,"parentNode");if(typeof s=="function"){let mn=n.createElement("template");mn.content&&mn.content.ownerDocument&&(n=mn.content.ownerDocument)}let S,R="",{implementation:G,createNodeIterator:B,createDocumentFragment:w,getElementsByTagName:F}=n,{importNode:P}=i,A=vre();t.isSupported=typeof Nre=="function"&&typeof E=="function"&&G&&G.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:T,ERB_EXPR:L,TMPLIT_EXPR:V,DATA_ATTR:W,ARIA_ATTR:M,IS_SCRIPT_OR_DATA:Q,ATTR_WHITESPACE:N,CUSTOM_ELEMENT:k}=Mre,{IS_ALLOWED_URI:v}=Mre,O=null,H=ki({},[...Xre,...PH,...MH,...vH,...Wre]),ee=null,K=ki({},[...Fre,...NH,...Pre,...MD]),te=Object.seal(Dre(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),q=null,pe=null,ye=!0,he=!0,xe=!1,Te=!0,Be=!1,Le=!0,De=!1,Ue=!1,je=!1,it=!1,nn=!1,rt=!1,rn=!0,Jt=!1,Xt="user-content-",Li=!0,bi=!1,vt={},Rt=null,si=ki({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),_t=null,Fo=ki({},["audio","video","img","source","image","track"]),Uo=null,Va=ki({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Cr="http://www.w3.org/1998/Math/MathML",wr="http://www.w3.org/2000/svg",ve="http://www.w3.org/1999/xhtml",ut=ve,qe=!1,nt=null,yt=ki({},[Cr,wr,ve],FH),$t=ki({},["mi","mo","mn","ms","mtext"]),Sn=ki({},["annotation-xml"]),fo=ki({},["title","style","font","a","script"]),uo=null,ra=["application/xhtml+xml","text/html"],sa="text/html",Hn=null,Ti=null,Rs=n.createElement("form"),Jo=function(Re){return Re instanceof RegExp||Re instanceof Function},Ga=function(){let Re=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Ti&&Ti===Re)){if((!Re||typeof Re!="object")&&(Re={}),Re=pA(Re),uo=ra.indexOf(Re.PARSER_MEDIA_TYPE)===-1?sa:Re.PARSER_MEDIA_TYPE,Hn=uo==="application/xhtml+xml"?FH:vD,O=fh(Re,"ALLOWED_TAGS")?ki({},Re.ALLOWED_TAGS,Hn):H,ee=fh(Re,"ALLOWED_ATTR")?ki({},Re.ALLOWED_ATTR,Hn):K,nt=fh(Re,"ALLOWED_NAMESPACES")?ki({},Re.ALLOWED_NAMESPACES,FH):yt,Uo=fh(Re,"ADD_URI_SAFE_ATTR")?ki(pA(Va),Re.ADD_URI_SAFE_ATTR,Hn):Va,_t=fh(Re,"ADD_DATA_URI_TAGS")?ki(pA(Fo),Re.ADD_DATA_URI_TAGS,Hn):Fo,Rt=fh(Re,"FORBID_CONTENTS")?ki({},Re.FORBID_CONTENTS,Hn):si,q=fh(Re,"FORBID_TAGS")?ki({},Re.FORBID_TAGS,Hn):pA({}),pe=fh(Re,"FORBID_ATTR")?ki({},Re.FORBID_ATTR,Hn):pA({}),vt=fh(Re,"USE_PROFILES")?Re.USE_PROFILES:!1,ye=Re.ALLOW_ARIA_ATTR!==!1,he=Re.ALLOW_DATA_ATTR!==!1,xe=Re.ALLOW_UNKNOWN_PROTOCOLS||!1,Te=Re.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Be=Re.SAFE_FOR_TEMPLATES||!1,Le=Re.SAFE_FOR_XML!==!1,De=Re.WHOLE_DOCUMENT||!1,it=Re.RETURN_DOM||!1,nn=Re.RETURN_DOM_FRAGMENT||!1,rt=Re.RETURN_TRUSTED_TYPE||!1,je=Re.FORCE_BODY||!1,rn=Re.SANITIZE_DOM!==!1,Jt=Re.SANITIZE_NAMED_PROPS||!1,Li=Re.KEEP_CONTENT!==!1,bi=Re.IN_PLACE||!1,v=Re.ALLOWED_URI_REGEXP||Qre,ut=Re.NAMESPACE||ve,$t=Re.MATHML_TEXT_INTEGRATION_POINTS||$t,Sn=Re.HTML_INTEGRATION_POINTS||Sn,te=Re.CUSTOM_ELEMENT_HANDLING||{},Re.CUSTOM_ELEMENT_HANDLING&&Jo(Re.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(te.tagNameCheck=Re.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Re.CUSTOM_ELEMENT_HANDLING&&Jo(Re.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(te.attributeNameCheck=Re.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Re.CUSTOM_ELEMENT_HANDLING&&typeof Re.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(te.allowCustomizedBuiltInElements=Re.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Be&&(he=!1),nn&&(it=!0),vt&&(O=ki({},Wre),ee=[],vt.html===!0&&(ki(O,Xre),ki(ee,Fre)),vt.svg===!0&&(ki(O,PH),ki(ee,NH),ki(ee,MD)),vt.svgFilters===!0&&(ki(O,MH),ki(ee,NH),ki(ee,MD)),vt.mathMl===!0&&(ki(O,vH),ki(ee,Pre),ki(ee,MD))),Re.ADD_TAGS&&(O===H&&(O=pA(O)),ki(O,Re.ADD_TAGS,Hn)),Re.ADD_ATTR&&(ee===K&&(ee=pA(ee)),ki(ee,Re.ADD_ATTR,Hn)),Re.ADD_URI_SAFE_ATTR&&ki(Uo,Re.ADD_URI_SAFE_ATTR,Hn),Re.FORBID_CONTENTS&&(Rt===si&&(Rt=pA(Rt)),ki(Rt,Re.FORBID_CONTENTS,Hn)),Li&&(O["#text"]=!0),De&&ki(O,["html","head","body"]),O.table&&(ki(O,["tbody"]),delete q.tbody),Re.TRUSTED_TYPES_POLICY){if(typeof Re.TRUSTED_TYPES_POLICY.createHTML!="function")throw CZ('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Re.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw CZ('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');S=Re.TRUSTED_TYPES_POLICY,R=S.createHTML("")}else S===void 0&&(S=kWe(g,o)),S!==null&&typeof R=="string"&&(R=S.createHTML(""));pl&&pl(Re),Ti=Re}},po=ki({},[...PH,...MH,...wWe]),jo=ki({},[...vH,...XWe]),Wu=function(Re){let Vt=E(Re);(!Vt||!Vt.tagName)&&(Vt={namespaceURI:ut,tagName:"template"});let Cn=vD(Re.tagName),rr=vD(Vt.tagName);return nt[Re.namespaceURI]?Re.namespaceURI===wr?Vt.namespaceURI===ve?Cn==="svg":Vt.namespaceURI===Cr?Cn==="svg"&&(rr==="annotation-xml"||$t[rr]):!!po[Cn]:Re.namespaceURI===Cr?Vt.namespaceURI===ve?Cn==="math":Vt.namespaceURI===wr?Cn==="math"&&Sn[rr]:!!jo[Cn]:Re.namespaceURI===ve?Vt.namespaceURI===wr&&!Sn[rr]||Vt.namespaceURI===Cr&&!$t[rr]?!1:!jo[Cn]&&(fo[Cn]||!po[Cn]):!!(uo==="application/xhtml+xml"&&nt[Re.namespaceURI]):!1},xr=function(Re){bZ(t.removed,{element:Re});try{E(Re).removeChild(Re)}catch{x(Re)}},Vs=function(Re,Vt){try{bZ(t.removed,{attribute:Vt.getAttributeNode(Re),from:Vt})}catch{bZ(t.removed,{attribute:null,from:Vt})}if(Vt.removeAttribute(Re),Re==="is")if(it||nn)try{xr(Vt)}catch{}else try{Vt.setAttribute(Re,"")}catch{}},ks=function(Re){let Vt=null,Cn=null;if(je)Re=""+Re;else{let Gs=wre(Re,/^[\r\n\t ]+/);Cn=Gs&&Gs[0]}uo==="application/xhtml+xml"&&ut===ve&&(Re=''+Re+"");let rr=S?S.createHTML(Re):Re;if(ut===ve)try{Vt=new p().parseFromString(rr,uo)}catch{}if(!Vt||!Vt.documentElement){Vt=G.createDocument(ut,"template",null);try{Vt.documentElement.innerHTML=qe?R:rr}catch{}}let Za=Vt.body||Vt.documentElement;return Re&&Cn&&Za.insertBefore(n.createTextNode(Cn),Za.childNodes[0]||null),ut===ve?F.call(Vt,De?"html":"body")[0]:De?Vt.documentElement:Za},Jm=function(Re){return B.call(Re.ownerDocument||Re,Re,d.SHOW_ELEMENT|d.SHOW_COMMENT|d.SHOW_TEXT|d.SHOW_PROCESSING_INSTRUCTION|d.SHOW_CDATA_SECTION,null)},fs=function(Re){return Re instanceof h&&(typeof Re.nodeName!="string"||typeof Re.textContent!="string"||typeof Re.removeChild!="function"||!(Re.attributes instanceof u)||typeof Re.removeAttribute!="function"||typeof Re.setAttribute!="function"||typeof Re.namespaceURI!="string"||typeof Re.insertBefore!="function"||typeof Re.hasChildNodes!="function")},tc=function(Re){return typeof a=="function"&&Re instanceof a};function nc(mn,Re,Vt){PD(mn,Cn=>{Cn.call(t,Re,Vt,Ti)})}let Xr=function(Re){let Vt=null;if(nc(A.beforeSanitizeElements,Re,null),fs(Re))return xr(Re),!0;let Cn=Hn(Re.nodeName);if(nc(A.uponSanitizeElement,Re,{tagName:Cn,allowedTags:O}),Le&&Re.hasChildNodes()&&!tc(Re.firstElementChild)&&fl(/<[/\w!]/g,Re.innerHTML)&&fl(/<[/\w!]/g,Re.textContent)||Re.nodeType===IZ.progressingInstruction||Le&&Re.nodeType===IZ.comment&&fl(/<[/\w]/g,Re.data))return xr(Re),!0;if(!O[Cn]||q[Cn]){if(!q[Cn]&&Yl(Cn)&&(te.tagNameCheck instanceof RegExp&&fl(te.tagNameCheck,Cn)||te.tagNameCheck instanceof Function&&te.tagNameCheck(Cn)))return!1;if(Li&&!Rt[Cn]){let rr=E(Re)||Re.parentNode,Za=_(Re)||Re.childNodes;if(Za&&rr){let Gs=Za.length;for(let Ic=Gs-1;Ic>=0;--Ic){let jm=b(Za[Ic],!0);jm.__removalCount=(Re.__removalCount||0)+1,rr.insertBefore(jm,I(Re))}}}return xr(Re),!0}return Re instanceof c&&!Wu(Re)||(Cn==="noscript"||Cn==="noembed"||Cn==="noframes")&&fl(/<\/no(script|embed|frames)/i,Re.innerHTML)?(xr(Re),!0):(Be&&Re.nodeType===IZ.text&&(Vt=Re.textContent,PD([T,L,V],rr=>{Vt=yZ(Vt,rr," ")}),Re.textContent!==Vt&&(bZ(t.removed,{element:Re.cloneNode()}),Re.textContent=Vt)),nc(A.afterSanitizeElements,Re,null),!1)},kl=function(Re,Vt,Cn){if(rn&&(Vt==="id"||Vt==="name")&&(Cn in n||Cn in Rs))return!1;if(!(he&&!pe[Vt]&&fl(W,Vt))){if(!(ye&&fl(M,Vt))){if(!ee[Vt]||pe[Vt]){if(!(Yl(Re)&&(te.tagNameCheck instanceof RegExp&&fl(te.tagNameCheck,Re)||te.tagNameCheck instanceof Function&&te.tagNameCheck(Re))&&(te.attributeNameCheck instanceof RegExp&&fl(te.attributeNameCheck,Vt)||te.attributeNameCheck instanceof Function&&te.attributeNameCheck(Vt))||Vt==="is"&&te.allowCustomizedBuiltInElements&&(te.tagNameCheck instanceof RegExp&&fl(te.tagNameCheck,Cn)||te.tagNameCheck instanceof Function&&te.tagNameCheck(Cn))))return!1}else if(!Uo[Vt]){if(!fl(v,yZ(Cn,N,""))){if(!((Vt==="src"||Vt==="xlink:href"||Vt==="href")&&Re!=="script"&&VWe(Cn,"data:")===0&&_t[Re])){if(!(xe&&!fl(Q,yZ(Cn,N,"")))){if(Cn)return!1}}}}}}return!0},Yl=function(Re){return Re!=="annotation-xml"&&wre(Re,k)},aa=function(Re){nc(A.beforeSanitizeAttributes,Re,null);let{attributes:Vt}=Re;if(!Vt||fs(Re))return;let Cn={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:ee,forceKeepAttr:void 0},rr=Vt.length;for(;rr--;){let Za=Vt[rr],{name:Gs,namespaceURI:Ic,value:jm}=Za,Dp=Hn(Gs),zL=jm,Ba=Gs==="value"?zL:GWe(zL);if(Cn.attrName=Dp,Cn.attrValue=Ba,Cn.keepAttr=!0,Cn.forceKeepAttr=void 0,nc(A.uponSanitizeAttribute,Re,Cn),Ba=Cn.attrValue,Jt&&(Dp==="id"||Dp==="name")&&(Vs(Gs,Re),Ba=Xt+Ba),Le&&fl(/((--!?|])>)|<\/(style|title)/i,Ba)){Vs(Gs,Re);continue}if(Cn.forceKeepAttr)continue;if(!Cn.keepAttr){Vs(Gs,Re);continue}if(!Te&&fl(/\/>/i,Ba)){Vs(Gs,Re);continue}Be&&PD([T,L,V],I9=>{Ba=yZ(Ba,I9," ")});let x9=Hn(Re.nodeName);if(!kl(x9,Dp,Ba)){Vs(Gs,Re);continue}if(S&&typeof g=="object"&&typeof g.getAttributeType=="function"&&!Ic)switch(g.getAttributeType(x9,Dp)){case"TrustedHTML":{Ba=S.createHTML(Ba);break}case"TrustedScriptURL":{Ba=S.createScriptURL(Ba);break}}if(Ba!==zL)try{Ic?Re.setAttributeNS(Ic,Gs,Ba):Re.setAttribute(Gs,Ba),fs(Re)?xr(Re):Bre(t.removed)}catch{Vs(Gs,Re)}}nc(A.afterSanitizeAttributes,Re,null)},Zo=function mn(Re){let Vt=null,Cn=Jm(Re);for(nc(A.beforeSanitizeShadowDOM,Re,null);Vt=Cn.nextNode();)nc(A.uponSanitizeShadowNode,Vt,null),Xr(Vt),aa(Vt),Vt.content instanceof r&&mn(Vt.content);nc(A.afterSanitizeShadowDOM,Re,null)};return t.sanitize=function(mn){let Re=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},Vt=null,Cn=null,rr=null,Za=null;if(qe=!mn,qe&&(mn=""),typeof mn!="string"&&!tc(mn))if(typeof mn.toString=="function"){if(mn=mn.toString(),typeof mn!="string")throw CZ("dirty is not a string, aborting")}else throw CZ("toString is not a function");if(!t.isSupported)return mn;if(Ue||Ga(Re),t.removed=[],typeof mn=="string"&&(bi=!1),bi){if(mn.nodeName){let jm=Hn(mn.nodeName);if(!O[jm]||q[jm])throw CZ("root node is forbidden and cannot be sanitized in-place")}}else if(mn instanceof a)Vt=ks(""),Cn=Vt.ownerDocument.importNode(mn,!0),Cn.nodeType===IZ.element&&Cn.nodeName==="BODY"||Cn.nodeName==="HTML"?Vt=Cn:Vt.appendChild(Cn);else{if(!it&&!Be&&!De&&mn.indexOf("<")===-1)return S&&rt?S.createHTML(mn):mn;if(Vt=ks(mn),!Vt)return it?null:rt?R:""}Vt&&je&&xr(Vt.firstChild);let Gs=Jm(bi?mn:Vt);for(;rr=Gs.nextNode();)Xr(rr),aa(rr),rr.content instanceof r&&Zo(rr.content);if(bi)return mn;if(it){if(nn)for(Za=w.call(Vt.ownerDocument);Vt.firstChild;)Za.appendChild(Vt.firstChild);else Za=Vt;return(ee.shadowroot||ee.shadowrootmode)&&(Za=P.call(i,Za,!0)),Za}let Ic=De?Vt.outerHTML:Vt.innerHTML;return De&&O["!doctype"]&&Vt.ownerDocument&&Vt.ownerDocument.doctype&&Vt.ownerDocument.doctype.name&&fl(Ure,Vt.ownerDocument.doctype.name)&&(Ic=" +`+Ic),Be&&PD([T,L,V],jm=>{Ic=yZ(Ic,jm," ")}),S&&rt?S.createHTML(Ic):Ic},t.setConfig=function(){let mn=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ga(mn),Ue=!0},t.clearConfig=function(){Ti=null,Ue=!1},t.isValidAttribute=function(mn,Re,Vt){Ti||Ga({});let Cn=Hn(mn),rr=Hn(Re);return kl(Cn,rr,Vt)},t.addHook=function(mn,Re){typeof Re=="function"&&bZ(A[mn],Re)},t.removeHook=function(mn,Re){if(Re!==void 0){let Vt=LWe(A[mn],Re);return Vt===-1?void 0:RWe(A[mn],Vt,1)[0]}return Bre(A[mn])},t.removeHooks=function(mn){A[mn]=[]},t.removeAllHooks=function(){A=vre()},t}var Yre=kre();var YWe=0,UH={};function Pf(e,t){let n,i=e;l(UH[i])?n=UH[i]:(n=YWe++,UH[i]=n),t=t??!1,this._id=n,this._html=e,this._showOnScreen=t,this._element=void 0}Object.defineProperties(Pf.prototype,{html:{get:function(){return this._html}},id:{get:function(){return this._id}},showOnScreen:{get:function(){return this._showOnScreen},set:function(e){this._showOnScreen=e}},element:{get:function(){if(!l(this._element)){let e=Yre.sanitize(this._html),t=document.createElement("div");t.className="cesium-credit-wrapper",t._creditId=this._id,t.style.display="inline",t.innerHTML=e;let n=t.querySelectorAll("a");for(let i=0;i{u[h]=void 0});for(let h=r;h0||this._imageBasedLightingFactor.y>0}},shouldRegenerateShaders:{get:function(){return this._shouldRegenerateShaders}},specularEnvironmentCubeMap:{get:function(){return this._specularEnvironmentCubeMap}},useDefaultSphericalHarmonics:{get:function(){return this._useDefaultSphericalHarmonics}},useDefaultSpecularMaps:{get:function(){return this._useDefaultSpecularMaps}},useSpecularEnvironmentMaps:{get:function(){return l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.ready||this._useDefaultSpecularMaps}}});function HWe(e,t){if(ph.isSupported(t)){if(e._specularEnvironmentCubeMap=e._specularEnvironmentCubeMap&&e._specularEnvironmentCubeMap.destroy(),l(e._specularEnvironmentMaps)){let n=new ph(e._specularEnvironmentMaps);e._specularEnvironmentCubeMap=n,e._removeErrorListener=n.errorEvent.addEventListener(i=>{console.error(`Error loading specularEnvironmentMaps: ${i}`)})}e._shouldRegenerateShaders=!0}}_Z.prototype.update=function(e){if(e.frameNumber===this._previousFrameNumber&&e.context===this._previousFrameContext)return;this._previousFrameNumber=e.frameNumber;let t=this._previousFrameContext=e.context;e.brdfLutGenerator.update(e),this._shouldRegenerateShaders=!1;let n=this._imageBasedLightingFactor,i=this._previousImageBasedLightingFactor;D.equals(n,i)||(this._shouldRegenerateShaders=n.x>0&&i.x===0||n.x===0&&i.x>0,this._shouldRegenerateShaders=this._shouldRegenerateShaders||n.y>0&&i.y===0||n.y===0&&i.y>0,this._previousImageBasedLightingFactor=D.clone(this._imageBasedLightingFactor,this._previousImageBasedLightingFactor)),this._previousSphericalHarmonicCoefficients!==this._sphericalHarmonicCoefficients&&(this._shouldRegenerateShaders=this._shouldRegenerateShaders||l(this._previousSphericalHarmonicCoefficients)!==l(this._sphericalHarmonicCoefficients),this._previousSphericalHarmonicCoefficients=this._sphericalHarmonicCoefficients),this._shouldRegenerateShaders=this._shouldRegenerateShaders||this._previousSpecularEnvironmentMapLoaded!==this._specularEnvironmentMapLoaded,this._previousSpecularEnvironmentMapLoaded=this._specularEnvironmentMapLoaded,this._specularEnvironmentCubeMapDirty&&(HWe(this,t),this._specularEnvironmentCubeMapDirty=!1),l(this._specularEnvironmentCubeMap)&&(this._specularEnvironmentCubeMap.update(e),this._specularEnvironmentCubeMap.ready&&(this._specularEnvironmentMapLoaded=!0));let o=!l(this._specularEnvironmentCubeMap)&&l(e.specularEnvironmentMaps)&&!this._useDefaultSpecularMaps,r=!l(e.specularEnvironmentMaps)&&this._useDefaultSpecularMaps,s=!l(this._sphericalHarmonicCoefficients)&&l(e.sphericalHarmonicCoefficients)&&!this._useDefaultSphericalHarmonics,a=!l(e.sphericalHarmonicCoefficients)&&this._useDefaultSphericalHarmonics;this._shouldRegenerateShaders=this._shouldRegenerateShaders||o||r||s||a,this._useDefaultSpecularMaps=!l(this._specularEnvironmentCubeMap)&&l(e.specularEnvironmentMaps),this._useDefaultSphericalHarmonics=!l(this._sphericalHarmonicCoefficients)&&l(e.sphericalHarmonicCoefficients)};_Z.prototype.isDestroyed=function(){return!1};_Z.prototype.destroy=function(){return this._specularEnvironmentCubeMap=this._specularEnvironmentCubeMap&&this._specularEnvironmentCubeMap.destroy(),this._removeErrorListener=this._removeErrorListener&&this._removeErrorListener(),me(this)};var TC=_Z;var qin=y(C(),1),OH=y(Bd(),1);var kin=y(C(),1);var YH,Ore="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJhNzg4MTAwYi1kMTg5LTRjNDItYTVlMi0wOTlhNGM0NTc5Y2YiLCJpZCI6MjU5LCJpYXQiOjE3NTQwNjAzNjJ9.5ei_XzXku4PefU_uHUlbhQnPS1sbv-BHo28oU2fj0Ig",ND={};ND.defaultAccessToken=Ore;ND.defaultServer=new Ve({url:"https://api.cesium.com/"});ND.getDefaultTokenCredit=function(e){if(e===Ore){if(!l(YH)){let t=` This application is using Cesium's default ion access token. Please assign Cesium.Ion.defaultAccessToken with an access token from your ion account before making any Cesium API calls. You can sign up for a free ion account at
    https://cesium.com.`;YH=new Gt(t,!0)}return YH}};var Ah=ND;function gl(e,t){let n,i=e.externalType,o=l(i);if(!o)n={url:e.url,retryAttempts:1,retryCallback:zWe};else if(i==="3DTILES"||i==="STK_TERRAIN_SERVER")n={url:e.options.url};else throw new de("Ion.createResource does not support external imagery assets; use IonImageryProvider instead.");Ve.call(this,n),this._ionEndpoint=e,this._ionEndpointDomain=o?void 0:new OH.default(e.url).authority(),this._ionEndpointResource=t,this._ionRoot=void 0,this._pendingPromise=void 0,this._credits=void 0,this._isExternal=o}l(Object.create)&&(gl.prototype=Object.create(Ve.prototype),gl.prototype.constructor=gl);gl.fromAssetId=function(e,t){let n=gl._createEndpointResource(e,t);return n.fetchJson().then(function(i){return new gl(i,n)})};Object.defineProperties(gl.prototype,{credits:{get:function(){return l(this._ionRoot)?this._ionRoot.credits:l(this._credits)?this._credits:(this._credits=gl.getCreditsFromEndpoint(this._ionEndpoint,this._ionEndpointResource),this._credits)}}});gl.getCreditsFromEndpoint=function(e,t){let n=e.attributions.map(Gt.getIonCredit),i=Ah.getDefaultTokenCredit(t.queryParameters.access_token);return l(i)&&n.push(Gt.clone(i)),n};gl.prototype.clone=function(e){let t=this._ionRoot??this;return l(e)||(e=new gl(t._ionEndpoint,t._ionEndpointResource)),e=Ve.prototype.clone.call(this,e),e._ionRoot=t,e._isExternal=this._isExternal,e};gl.prototype.fetchImage=function(e){if(!this._isExternal){let t=e;e={preferBlob:!0},l(t)&&(e.flipY=t.flipY,e.preferImageBitmap=t.preferImageBitmap)}return Ve.prototype.fetchImage.call(this,e)};gl.prototype._makeRequest=function(e){return this._isExternal||new OH.default(this.url).authority()!==this._ionEndpointDomain?Ve.prototype._makeRequest.call(this,e):(l(e.headers)||(e.headers={}),e.headers.Authorization=`Bearer ${this._ionEndpoint.accessToken}`,e.headers["X-Cesium-Client"]="CesiumJS",typeof CESIUM_VERSION<"u"&&(e.headers["X-Cesium-Client-Version"]=CESIUM_VERSION),Ve.prototype._makeRequest.call(this,e))};gl._createEndpointResource=function(e,t){t=t??Y.EMPTY_OBJECT;let n=t.server??Ah.defaultServer,i=t.accessToken??Ah.defaultAccessToken;n=Ve.createIfNeeded(n);let o={url:`v1/assets/${e}/endpoint`};return l(i)&&(o.queryParameters={access_token:i}),n.getDerivedResource(o)};function zWe(e,t){let n=e._ionRoot??e,i=n._ionEndpointResource,o=typeof Image<"u";return!l(t)||t.statusCode!==401&&!(o&&t.target instanceof Image)?Promise.resolve(!1):(l(n._pendingPromise)||(n._pendingPromise=i.fetchJson().then(function(r){return n._ionEndpoint=r,r}).finally(function(r){return n._pendingPromise=void 0,r})),n._pendingPromise.then(function(r){return e._ionEndpoint=r,!0}))}var Nd=gl;var eon=y(C(),1);function Mf(e){e=e??0,this._array=new Array(e),this._length=e}Object.defineProperties(Mf.prototype,{length:{get:function(){return this._length},set:function(e){let t=this._array,n=this._length;if(et.length&&(t.length=e);this._length=e}},values:{get:function(){return this._array}}});Mf.prototype.get=function(e){return this._array[e]};Mf.prototype.set=function(e,t){e>=this._length&&(this.length=e+1),this._array[e]=t};Mf.prototype.peek=function(){return this._array[this._length-1]};Mf.prototype.push=function(e){let t=this.length++;this._array[t]=e};Mf.prototype.pop=function(){if(this._length===0)return;let e=this._array[this._length-1];return--this.length,e};Mf.prototype.reserve=function(e){e>this._array.length&&(this._array.length=e)};Mf.prototype.resize=function(e){this.length=e};Mf.prototype.trim=function(e){e=e??this._length,this._array.length=e};var bl=Mf;var oon=y(C(),1);function DD(e){e=e??Y.EMPTY_OBJECT,this.color=e.color,this.depth=e.depth,this.stencil=e.stencil,this.renderState=e.renderState,this.framebuffer=e.framebuffer,this.owner=e.owner,this.pass=e.pass}DD.ALL=Object.freeze(new DD({color:new U(0,0,0,0),depth:1,stencil:0}));DD.prototype.execute=function(e,t){e.clear(this,t)};var xi=DD;var con=y(C(),1);var AA={X:0,Y:1,Z:2};AA.Y_UP_TO_Z_UP=X.fromRotationTranslation($.fromArray([1,0,0,0,0,1,0,-1,0]));AA.Z_UP_TO_Y_UP=X.fromRotationTranslation($.fromArray([1,0,0,0,0,-1,0,1,0]));AA.X_UP_TO_Z_UP=X.fromRotationTranslation($.fromArray([0,0,1,0,1,0,-1,0,0]));AA.Z_UP_TO_X_UP=X.fromRotationTranslation($.fromArray([0,0,-1,0,1,0,1,0,0]));AA.X_UP_TO_Y_UP=X.fromRotationTranslation($.fromArray([0,1,0,-1,0,0,0,0,1]));AA.Y_UP_TO_X_UP=X.fromRotationTranslation($.fromArray([0,-1,0,1,0,0,0,0,1]));AA.fromName=function(e){return AA[e]};var ho=Object.freeze(AA);var Njn=y(C(),1);var pon=y(C(),1);function Ju(e){this.planes=e??[]}var EZ=[new m,new m,new m];m.clone(m.UNIT_X,EZ[0]);m.clone(m.UNIT_Y,EZ[1]);m.clone(m.UNIT_Z,EZ[2]);var Vb=new m,KWe=new m,Hre=new An(new m(1,0,0),0);Ju.fromBoundingSphere=function(e,t){l(t)||(t=new Ju);let n=EZ.length,i=t.planes;i.length=2*n;let o=e.center,r=e.radius,s=0;for(let a=0;a>10)+55296,(r&1023)+56320))}return t};function TZ(e,t,n){return t<=e&&e<=n}function $We(e){let t=0,n=0,i=0,o=128,r=191,s=[],a=e.length;for(let c=0;c0){let o=Math.min(t,Kt.maximumTextureSize),r=Math.ceil(t/Kt.maximumTextureSize),s=1/o,a=s*.5,c=1/r,d=c*.5;n=new D(o,r),i=new ce(s,a,c,d)}this._translucentFeaturesLength=0,this._featuresLength=t,this._textureDimensions=n,this._textureStep=i,this._owner=e.owner,this._statistics=e.statistics,this._colorChangedCallback=e.colorChangedCallback}Object.defineProperties(Bc.prototype,{translucentFeaturesLength:{get:function(){return this._translucentFeaturesLength}},byteLength:{get:function(){let e=0;return l(this._pickTexture)&&(e+=this._pickTexture.sizeInBytes),l(this._batchTexture)&&(e+=this._batchTexture.sizeInBytes),e}},textureDimensions:{get:function(){return this._textureDimensions}},textureStep:{get:function(){return this._textureStep}},batchTexture:{get:function(){return this._batchTexture}},defaultTexture:{get:function(){return this._defaultTexture}},pickTexture:{get:function(){return this._pickTexture}}});Bc.DEFAULT_COLOR_VALUE=U.WHITE;Bc.DEFAULT_SHOW_VALUE=!0;function Jre(e){let t=e._textureDimensions;return t.x*t.y*4}function jre(e){if(!l(e._batchValues)){let t=Jre(e),n=new Uint8Array(t).fill(255);e._batchValues=n}return e._batchValues}function qre(e){if(!l(e._showAlphaProperties)){let t=2*e._featuresLength,n=new Uint8Array(t).fill(255);e._showAlphaProperties=n}return e._showAlphaProperties}Bc.prototype.setShow=function(e,t){if(t&&!l(this._showAlphaProperties))return;let n=qre(this),i=e*2,o=t?255:0;if(n[i]!==o){n[i]=o;let r=jre(this),s=e*4+3;r[s]=t?n[i+1]:0,this._batchValuesDirty=!0}};Bc.prototype.setAllShow=function(e){let t=this._featuresLength;for(let n=0;n0){let i=e._pickIds,o=Jre(e),r=new Uint8Array(o),s=e._owner,a=e._statistics;for(let c=0;c0;){if(t=u.pop(),c[t]===d)continue;c[t]=d;let h=n(e,t);if(l(h))return h;let p=o[t],g=s[t];for(let f=0;f0?(s="",e&&(s+=`uniform bool tile_translucentCommand; +`),s+=`uniform sampler2D tile_batchTexture; +out vec4 tile_featureColor; +out vec2 tile_featureSt; +void main() +{ + vec2 st = computeSt(${t}); + vec4 featureProperties = texture(tile_batchTexture, st); + tile_color(featureProperties); + float show = ceil(featureProperties.a); + gl_Position *= show; +`,e&&(s+=` bool isStyleTranslucent = (featureProperties.a != 1.0); + if (czm_pass == czm_passTranslucent) + { + if (!isStyleTranslucent && !tile_translucentCommand) + { + gl_Position *= 0.0; + } + } + else + { + if (isStyleTranslucent) + { + gl_Position *= 0.0; + } + } +`),s+=` tile_featureColor = featureProperties; + tile_featureSt = st; +}`):s=`out vec2 tile_featureSt; +void main() +{ + tile_color(vec4(1.0)); + tile_featureSt = computeSt(${t}); +}`,`${r} +${SFe(i)}${s}`}};function ese(e,t){return e=Oe.replaceMain(e,"tile_main"),t?`${e}uniform float tile_colorBlend; +void tile_color(vec4 tile_featureColor) +{ + tile_main(); + tile_featureColor = czm_gammaCorrect(tile_featureColor); + out_FragColor.a *= tile_featureColor.a; + float highlight = ceil(tile_colorBlend); + out_FragColor.rgb *= mix(tile_featureColor.rgb, vec3(1.0), highlight); +} +`:`${e}void tile_color(vec4 tile_featureColor) +{ + tile_main(); +} +`}function LFe(e,t){let n=`texture(${t}`,i=0,o=e.indexOf(n,i),r;for(;o>-1;){let s=0;for(let d=o;d0?(i+=`uniform sampler2D tile_pickTexture; +in vec2 tile_featureSt; +in vec4 tile_featureColor; +void main() +{ + tile_color(tile_featureColor); +`,n&&(i+=` out_FragColor.rgb *= out_FragColor.a; +`),i+="}"):(e&&(i+=`uniform bool tile_translucentCommand; +`),i+=`uniform sampler2D tile_pickTexture; +uniform sampler2D tile_batchTexture; +in vec2 tile_featureSt; +void main() +{ + vec4 featureProperties = texture(tile_batchTexture, tile_featureSt); + if (featureProperties.a == 0.0) { + discard; + } +`,e&&(i+=` bool isStyleTranslucent = (featureProperties.a != 1.0); + if (czm_pass == czm_passTranslucent) + { + if (!isStyleTranslucent && !tile_translucentCommand) + { + discard; + } + } + else + { + if (isStyleTranslucent) + { + discard; + } + } +`),i+=` tile_color(featureProperties); +`,n&&(i+=` out_FragColor.rgb *= out_FragColor.a; +`),i+=`} +`),i}};function RFe(e){let t=e._content.tileset,n=t.colorBlendMode,i=t.colorBlendAmount;if(n===ed.HIGHLIGHT)return 0;if(n===ed.REPLACE)return 1;if(n===ed.MIX)return Z.clamp(i,Z.EPSILON4,1)}Wo.prototype.getUniformMapCallback=function(){if(this.featuresLength===0)return;let e=this;return function(t){return Lt(t,{tile_batchTexture:function(){return e._batchTexture.batchTexture??e._batchTexture.defaultTexture},tile_textureDimensions:function(){return e._batchTexture.textureDimensions},tile_textureStep:function(){return e._batchTexture.textureStep},tile_colorBlend:function(){return RFe(e)},tile_pickTexture:function(){return e._batchTexture.pickTexture}})}};Wo.prototype.getPickId=function(){return"texture(tile_pickTexture, tile_featureSt)"};var Bb={ALL_OPAQUE:0,ALL_TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2};Wo.prototype.addDerivedCommands=function(e,t){let n=e.commandList,i=n.length,o=this._content._tile,r=o._finalResolution,s=o.tileset,a=s.isSkippingLevelOfDetail&&s.hasMixedContent&&e.context.stencilBuffer,c=VFe(this);for(let d=t;d>>jt.SKIP_LOD_BIT_SHIFT}function PFe(e){let t=ke(e,!0);return t.cull.enabled=!1,t.depthTest.enabled=!0,t.depthMask=!1,t.blending=bn.ALPHA_BLEND,t.stencilTest=jt.setCesium3DTileBit(),t.stencilMask=jt.CESIUM_3D_TILE_MASK,Qe.fromCache(t)}function MFe(e){let t=ke(e,!0);return t.stencilTest=jt.setCesium3DTileBit(),t.stencilMask=jt.CESIUM_3D_TILE_MASK,Qe.fromCache(t)}Wo.prototype.update=function(e,t){this._batchTexture.update(e,t)};Wo.prototype.isDestroyed=function(){return!1};Wo.prototype.destroy=function(){return this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),me(this)};var bA=Wo;var pan=y(C(),1);var rsn=y(C(),1);function vFe(e){this.offset=e.offset,this.count=e.count,this.color=e.color,this.batchIds=e.batchIds}var Nf=vFe;var ian=y(C(),1);var asn=y(C(),1),aE=`in vec3 position; +in float a_batchId; + +uniform mat4 u_modifiedModelViewProjection; + +void main() +{ + gl_Position = czm_depthClamp(u_modifiedModelViewProjection * vec4(position, 1.0)); +} +`;var usn=y(C(),1);function qu(e,t){this._content=e,this._batchId=t,this._color=void 0}Object.defineProperties(qu.prototype,{show:{get:function(){return this._content.batchTable.getShow(this._batchId)},set:function(e){this._content.batchTable.setShow(this._batchId,e)}},color:{get:function(){return l(this._color)||(this._color=new U),this._content.batchTable.getColor(this._batchId,this._color)},set:function(e){this._content.batchTable.setColor(this._batchId,e)}},polylinePositions:{get:function(){if(l(this._content.getPolylinePositions))return this._content.getPolylinePositions(this._batchId)}},content:{get:function(){return this._content}},tileset:{get:function(){return this._content.tileset}},primitive:{get:function(){return this._content.tileset}},featureId:{get:function(){return this._batchId}},pickId:{get:function(){return this._content.batchTable.getPickColor(this._batchId)}}});qu.prototype.hasProperty=function(e){return this._content.batchTable.hasProperty(this._batchId,e)};qu.prototype.getPropertyIds=function(e){return this._content.batchTable.getPropertyIds(this._batchId,e)};qu.prototype.getProperty=function(e){return this._content.batchTable.getProperty(this._batchId,e)};qu.getPropertyInherited=function(e,t,n){let i=e.batchTable;if(l(i)){if(i.hasPropertyBySemantic(t,n))return i.getPropertyBySemantic(t,n);if(i.hasProperty(t,n))return i.getProperty(t,n)}let o=e.metadata;if(l(o)){if(o.hasPropertyBySemantic(n))return o.getPropertyBySemantic(n);if(o.hasProperty(n))return o.getProperty(n)}let r=e.tile,s=r.metadata;if(l(s)){if(s.hasPropertyBySemantic(n))return s.getPropertyBySemantic(n);if(s.hasProperty(n))return s.getProperty(n)}let a;if(l(r.implicitSubtree)&&(a=r.implicitSubtree.metadata),l(a)){if(a.hasPropertyBySemantic(n))return a.getPropertyBySemantic(n);if(a.hasProperty(n))return a.getProperty(n)}let c=l(e.group)?e.group.metadata:void 0;if(l(c)){if(c.hasPropertyBySemantic(n))return c.getPropertyBySemantic(n);if(c.hasProperty(n))return c.getProperty(n)}let d=e.tileset.metadata;if(l(d)){if(d.hasPropertyBySemantic(n))return d.getPropertyBySemantic(n);if(d.hasProperty(n))return d.getProperty(n)}};qu.prototype.getPropertyInherited=function(e){return qu.getPropertyInherited(this._content,this._batchId,e)};qu.prototype.setProperty=function(e,t){this._content.batchTable.setProperty(this._batchId,e,t),this._content.featurePropertiesDirty=!0};qu.prototype.isExactClass=function(e){return this._content.batchTable.isExactClass(this._batchId,e)};qu.prototype.isClass=function(e){return this._content.batchTable.isClass(this._batchId,e)};qu.prototype.getExactClassName=function(){return this._content.batchTable.getExactClassName(this._batchId)};var ma=qu;var Lsn=y(C(),1);var fsn=y(C(),1),JH=class{add(t,n,i){if(typeof arguments[0]!="string")for(let o in arguments[0])this.add(o,arguments[0][o],arguments[1]);else(Array.isArray(t)?t:[t]).forEach(function(o){this[o]=this[o]||[],n&&this[o][i?"unshift":"push"](n)},this)}run(t,n){this[t]=this[t]||[],this[t].forEach(function(i){i.call(n&&n.context?n.context:n,n)})}},jH=class{constructor(t){this.jsep=t,this.registered={}}register(...t){t.forEach(n=>{if(typeof n!="object"||!n.name||!n.init)throw new Error("Invalid JSEP plugin format");this.registered[n.name]||(n.init(this.jsep),this.registered[n.name]=n)})}},td=class e{static get version(){return"1.4.0"}static toString(){return"JavaScript Expression Parser (JSEP) v"+e.version}static addUnaryOp(t){return e.max_unop_len=Math.max(t.length,e.max_unop_len),e.unary_ops[t]=1,e}static addBinaryOp(t,n,i){return e.max_binop_len=Math.max(t.length,e.max_binop_len),e.binary_ops[t]=n,i?e.right_associative.add(t):e.right_associative.delete(t),e}static addIdentifierChar(t){return e.additional_identifier_chars.add(t),e}static addLiteral(t,n){return e.literals[t]=n,e}static removeUnaryOp(t){return delete e.unary_ops[t],t.length===e.max_unop_len&&(e.max_unop_len=e.getMaxKeyLen(e.unary_ops)),e}static removeAllUnaryOps(){return e.unary_ops={},e.max_unop_len=0,e}static removeIdentifierChar(t){return e.additional_identifier_chars.delete(t),e}static removeBinaryOp(t){return delete e.binary_ops[t],t.length===e.max_binop_len&&(e.max_binop_len=e.getMaxKeyLen(e.binary_ops)),e.right_associative.delete(t),e}static removeAllBinaryOps(){return e.binary_ops={},e.max_binop_len=0,e}static removeLiteral(t){return delete e.literals[t],e}static removeAllLiterals(){return e.literals={},e}get char(){return this.expr.charAt(this.index)}get code(){return this.expr.charCodeAt(this.index)}constructor(t){this.expr=t,this.index=0}static parse(t){return new e(t).parse()}static getMaxKeyLen(t){return Math.max(0,...Object.keys(t).map(n=>n.length))}static isDecimalDigit(t){return t>=48&&t<=57}static binaryPrecedence(t){return e.binary_ops[t]||0}static isIdentifierStart(t){return t>=65&&t<=90||t>=97&&t<=122||t>=128&&!e.binary_ops[String.fromCharCode(t)]||e.additional_identifier_chars.has(String.fromCharCode(t))}static isIdentifierPart(t){return e.isIdentifierStart(t)||e.isDecimalDigit(t)}throwError(t){let n=new Error(t+" at character "+this.index);throw n.index=this.index,n.description=t,n}runHook(t,n){if(e.hooks[t]){let i={context:this,node:n};return e.hooks.run(t,i),i.node}return n}searchHook(t){if(e.hooks[t]){let n={context:this};return e.hooks[t].find(function(i){return i.call(n.context,n),n.node}),n.node}}gobbleSpaces(){let t=this.code;for(;t===e.SPACE_CODE||t===e.TAB_CODE||t===e.LF_CODE||t===e.CR_CODE;)t=this.expr.charCodeAt(++this.index);this.runHook("gobble-spaces")}parse(){this.runHook("before-all");let t=this.gobbleExpressions(),n=t.length===1?t[0]:{type:e.COMPOUND,body:t};return this.runHook("after-all",n)}gobbleExpressions(t){let n=[],i,o;for(;this.index0;){if(e.binary_ops.hasOwnProperty(t)&&(!e.isIdentifierStart(this.code)||this.index+t.lengthr.right_a&&h.right_a?i>h.prec:i<=h.prec;for(;o.length>2&&u(o[o.length-2]);)a=o.pop(),n=o.pop().value,s=o.pop(),t={type:e.BINARY_EXP,operator:n,left:s,right:a},o.push(t);t=this.gobbleToken(),t||this.throwError("Expected expression after "+d),o.push(r,t)}for(c=o.length-1,t=o[c];c>1;)t={type:e.BINARY_EXP,operator:o[c-1].value,left:o[c-2],right:t},c-=2;return t}gobbleToken(){let t,n,i,o;if(this.gobbleSpaces(),o=this.searchHook("gobble-token"),o)return this.runHook("after-token",o);if(t=this.code,e.isDecimalDigit(t)||t===e.PERIOD_CODE)return this.gobbleNumericLiteral();if(t===e.SQUOTE_CODE||t===e.DQUOTE_CODE)o=this.gobbleStringLiteral();else if(t===e.OBRACK_CODE)o=this.gobbleArray();else{for(n=this.expr.substr(this.index,e.max_unop_len),i=n.length;i>0;){if(e.unary_ops.hasOwnProperty(n)&&(!e.isIdentifierStart(this.code)||this.index+n.length=n.length&&this.throwError("Unexpected token "+String.fromCharCode(t));break}else if(r===e.COMMA_CODE){if(this.index++,o++,o!==n.length){if(t===e.CPAREN_CODE)this.throwError("Unexpected token ,");else if(t===e.CBRACK_CODE)for(let s=n.length;s":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10,"**":11},right_associative:new Set(["**"]),additional_identifier_chars:new Set(["$","_"]),literals:{true:!0,false:!1,null:null},this_str:"this"});td.max_unop_len=td.getMaxKeyLen(td.unary_ops);td.max_binop_len=td.getMaxKeyLen(td.binary_ops);var wb=e=>new td(e).parse(),DFe=Object.getOwnPropertyNames(class{});Object.getOwnPropertyNames(td).filter(e=>!DFe.includes(e)&&wb[e]===void 0).forEach(e=>{wb[e]=td[e]});wb.Jsep=td;var QFe="ConditionalExpression",UFe={name:"ternary",init(e){e.hooks.add("after-expression",function(n){if(n.node&&this.code===e.QUMARK_CODE){this.index++;let i=n.node,o=this.gobbleExpression();if(o||this.throwError("Expected expression"),this.gobbleSpaces(),this.code===e.COLON_CODE){this.index++;let r=this.gobbleExpression();if(r||this.throwError("Expected expression"),n.node={type:QFe,test:i,consequent:o,alternate:r},i.operator&&e.binary_ops[i.operator]<=.9){let s=i;for(;s.right.operator&&e.binary_ops[s.right.operator]<=.9;)s=s.right;n.node.test=s.right,s.right=n.node,n.node=i}}else this.throwError("Expected :")}})}};wb.plugins.register(UFe);var Asn=y(C(),1),kFe={VARIABLE:0,UNARY:1,BINARY:2,TERNARY:3,CONDITIONAL:4,MEMBER:5,FUNCTION_CALL:6,ARRAY:7,REGEX:8,VARIABLE_IN_STRING:9,LITERAL_NULL:10,LITERAL_BOOLEAN:11,LITERAL_NUMBER:12,LITERAL_STRING:13,LITERAL_COLOR:14,LITERAL_VECTOR:15,LITERAL_REGEX:16,LITERAL_UNDEFINED:17,BUILTIN_VARIABLE:18},Et=Object.freeze(kFe);function bh(e,t){this._expression=e,e=iPe(e,t),e=rPe(oPe(e)),wb.addBinaryOp("=~",0),wb.addBinaryOp("!~",0);let n;try{n=wb(e)}catch(i){throw new de(i)}this._runtimeAst=Pi(this,n)}Object.defineProperties(bh.prototype,{expression:{get:function(){return this._expression}}});var Un={arrayIndex:0,arrayArray:[[]],cartesian2Index:0,cartesian3Index:0,cartesian4Index:0,cartesian2Array:[new D],cartesian3Array:[new m],cartesian4Array:[new ce],reset:function(){this.arrayIndex=0,this.cartesian2Index=0,this.cartesian3Index=0,this.cartesian4Index=0},getArray:function(){this.arrayIndex>=this.arrayArray.length&&this.arrayArray.push([]);let e=this.arrayArray[this.arrayIndex++];return e.length=0,e},getCartesian2:function(){return this.cartesian2Index>=this.cartesian2Array.length&&this.cartesian2Array.push(new D),this.cartesian2Array[this.cartesian2Index++]},getCartesian3:function(){return this.cartesian3Index>=this.cartesian3Array.length&&this.cartesian3Array.push(new m),this.cartesian3Array[this.cartesian3Index++]},getCartesian4:function(){return this.cartesian4Index>=this.cartesian4Array.length&&this.cartesian4Array.push(new ce),this.cartesian4Array[this.cartesian4Index++]}};bh.prototype.evaluate=function(e,t){Un.reset();let n=this._runtimeAst.evaluate(e);return t instanceof U&&n instanceof ce?U.fromCartesian4(n,t):n instanceof D||n instanceof m||n instanceof ce?n.clone(t):n};bh.prototype.evaluateColor=function(e,t){Un.reset();let n=this._runtimeAst.evaluate(e);return U.fromCartesian4(n,t)};bh.prototype.getShaderFunction=function(e,t,n,i){let o=this.getShaderExpression(t,n);return o=`${i} ${e} +{ + return ${o}; +} +`,o};bh.prototype.getShaderExpression=function(e,t){return this._runtimeAst.getShaderExpression(e,t)};bh.prototype.getVariables=function(){let e=[];return this._runtimeAst.getVariables(e),e=e.filter(function(t,n,i){return i.indexOf(t)===n}),e};var YFe=["!","-","+"],ise=["+","-","*","/","%","===","!==",">",">=","<","<=","&&","||","!~","=~"],VZ=/\${(.*?)}/g,OFe=/\\/g,HFe="@#%",zFe=/@#%/g,kD=new U,YD={abs:ha(Math.abs),sqrt:ha(Math.sqrt),cos:ha(Math.cos),sin:ha(Math.sin),tan:ha(Math.tan),acos:ha(Math.acos),asin:ha(Math.asin),atan:ha(Math.atan),radians:ha(Z.toRadians),degrees:ha(Z.toDegrees),sign:ha(Z.sign),floor:ha(Math.floor),ceil:ha(Math.ceil),round:ha(Math.round),exp:ha(Math.exp),exp2:ha(JFe),log:ha(Math.log),log2:ha(jFe),fract:ha(KFe),length:qFe,normalize:$Fe},OD={atan2:QD(Math.atan2,!1),pow:QD(Math.pow,!1),min:QD(Math.min,!0),max:QD(Math.max,!0),distance:ePe,dot:tPe,cross:nPe},ez={clamp:ose(Z.clamp,!0),mix:ose(Z.lerp,!0)};function KFe(e){return e-Math.floor(e)}function JFe(e){return Math.pow(2,e)}function jFe(e){return Z.log2(e)}function ha(e){return function(t,n){if(typeof n=="number")return e(n);if(n instanceof D)return D.fromElements(e(n.x),e(n.y),Un.getCartesian2());if(n instanceof m)return m.fromElements(e(n.x),e(n.y),e(n.z),Un.getCartesian3());if(n instanceof ce)return ce.fromElements(e(n.x),e(n.y),e(n.z),e(n.w),Un.getCartesian4());throw new de(`Function "${t}" requires a vector or number argument. Argument is ${n}.`)}}function QD(e,t){return function(n,i,o){if(t&&typeof o=="number"){if(typeof i=="number")return e(i,o);if(i instanceof D)return D.fromElements(e(i.x,o),e(i.y,o),Un.getCartesian2());if(i instanceof m)return m.fromElements(e(i.x,o),e(i.y,o),e(i.z,o),Un.getCartesian3());if(i instanceof ce)return ce.fromElements(e(i.x,o),e(i.y,o),e(i.z,o),e(i.w,o),Un.getCartesian4())}if(typeof i=="number"&&typeof o=="number")return e(i,o);if(i instanceof D&&o instanceof D)return D.fromElements(e(i.x,o.x),e(i.y,o.y),Un.getCartesian2());if(i instanceof m&&o instanceof m)return m.fromElements(e(i.x,o.x),e(i.y,o.y),e(i.z,o.z),Un.getCartesian3());if(i instanceof ce&&o instanceof ce)return ce.fromElements(e(i.x,o.x),e(i.y,o.y),e(i.z,o.z),e(i.w,o.w),Un.getCartesian4());throw new de(`Function "${n}" requires vector or number arguments of matching types. Arguments are ${i} and ${o}.`)}}function ose(e,t){return function(n,i,o,r){if(t&&typeof r=="number"){if(typeof i=="number"&&typeof o=="number")return e(i,o,r);if(i instanceof D&&o instanceof D)return D.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),Un.getCartesian2());if(i instanceof m&&o instanceof m)return m.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),e(i.z,o.z,r),Un.getCartesian3());if(i instanceof ce&&o instanceof ce)return ce.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),e(i.z,o.z,r),e(i.w,o.w,r),Un.getCartesian4())}if(typeof i=="number"&&typeof o=="number"&&typeof r=="number")return e(i,o,r);if(i instanceof D&&o instanceof D&&r instanceof D)return D.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),Un.getCartesian2());if(i instanceof m&&o instanceof m&&r instanceof m)return m.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),e(i.z,o.z,r.z),Un.getCartesian3());if(i instanceof ce&&o instanceof ce&&r instanceof ce)return ce.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),e(i.z,o.z,r.z),e(i.w,o.w,r.w),Un.getCartesian4());throw new de(`Function "${n}" requires vector or number arguments of matching types. Arguments are ${i}, ${o}, and ${r}.`)}}function qFe(e,t){if(typeof t=="number")return Math.abs(t);if(t instanceof D)return D.magnitude(t);if(t instanceof m)return m.magnitude(t);if(t instanceof ce)return ce.magnitude(t);throw new de(`Function "${e}" requires a vector or number argument. Argument is ${t}.`)}function $Fe(e,t){if(typeof t=="number")return 1;if(t instanceof D)return D.normalize(t,Un.getCartesian2());if(t instanceof m)return m.normalize(t,Un.getCartesian3());if(t instanceof ce)return ce.normalize(t,Un.getCartesian4());throw new de(`Function "${e}" requires a vector or number argument. Argument is ${t}.`)}function ePe(e,t,n){if(typeof t=="number"&&typeof n=="number")return Math.abs(t-n);if(t instanceof D&&n instanceof D)return D.distance(t,n);if(t instanceof m&&n instanceof m)return m.distance(t,n);if(t instanceof ce&&n instanceof ce)return ce.distance(t,n);throw new de(`Function "${e}" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)}function tPe(e,t,n){if(typeof t=="number"&&typeof n=="number")return t*n;if(t instanceof D&&n instanceof D)return D.dot(t,n);if(t instanceof m&&n instanceof m)return m.dot(t,n);if(t instanceof ce&&n instanceof ce)return ce.dot(t,n);throw new de(`Function "${e}" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)}function nPe(e,t,n){if(t instanceof m&&n instanceof m)return m.cross(t,n,Un.getCartesian3());throw new de(`Function "${e}" requires vec3 arguments. Arguments are ${t} and ${n}.`)}function Zt(e,t,n,i,o){this._type=e,this._value=t,this._left=n,this._right=i,this._test=o,this.evaluate=void 0,pPe(this)}function iPe(e,t){if(!l(t))return e;for(let n in t)if(t.hasOwnProperty(n)){let i=new RegExp(`\\$\\{${n}\\}`,"g"),o=`(${t[n]})`;l(o)&&(e=e.replace(i,o))}return e}function oPe(e){return e.replace(OFe,HFe)}function $H(e){return e.replace(zFe,"\\")}function rPe(e){let t=e,n="",i=t.indexOf("${");for(;i>=0;){let o=t.indexOf("'"),r=t.indexOf('"'),s;if(o>=0&&o=0&&r=0?new Zt(Et.VARIABLE_IN_STRING,e.value):new Zt(Et.LITERAL_STRING,$H(e.value))}function aPe(e,t){let n=t.arguments,i=n.length,o,r,s,a;if(t.callee.type==="MemberExpression"){o=t.callee.property.name;let c=t.callee.object;if(o==="test"||o==="exec"){if(!l(c.callee)||c.callee.name!=="regExp")throw new de(`${o} is not a function.`);return i===0?o==="test"?new Zt(Et.LITERAL_BOOLEAN,!1):new Zt(Et.LITERAL_NULL,null):(s=Pi(e,c),a=Pi(e,n[0]),new Zt(Et.FUNCTION_CALL,o,s,a))}else if(o==="toString")return r=Pi(e,c),new Zt(Et.FUNCTION_CALL,o,r);throw new de(`Unexpected function call "${o}".`)}if(o=t.callee.name,o==="color"){if(i===0)return new Zt(Et.LITERAL_COLOR,o);if(r=Pi(e,n[0]),l(n[1])){let c=Pi(e,n[1]);return new Zt(Et.LITERAL_COLOR,o,[r,c])}return new Zt(Et.LITERAL_COLOR,o,[r])}else if(o==="rgb"||o==="hsl"){if(i<3)throw new de(`${o} requires three arguments.`);return r=[Pi(e,n[0]),Pi(e,n[1]),Pi(e,n[2])],new Zt(Et.LITERAL_COLOR,o,r)}else if(o==="rgba"||o==="hsla"){if(i<4)throw new de(`${o} requires four arguments.`);return r=[Pi(e,n[0]),Pi(e,n[1]),Pi(e,n[2]),Pi(e,n[3])],new Zt(Et.LITERAL_COLOR,o,r)}else if(o==="vec2"||o==="vec3"||o==="vec4"){r=new Array(i);for(let c=0;c1)throw new de(`${o} requires exactly one argument.`);return r=Pi(e,n[0]),new Zt(Et.UNARY,o,r)}else if(o==="getExactClassName"){if(i>0)throw new de(`${o} does not take any argument.`);return new Zt(Et.UNARY,o)}else if(l(YD[o])){if(i!==1)throw new de(`${o} requires exactly one argument.`);return r=Pi(e,n[0]),new Zt(Et.UNARY,o,r)}else if(l(OD[o])){if(i!==2)throw new de(`${o} requires exactly two arguments.`);return s=Pi(e,n[0]),a=Pi(e,n[1]),new Zt(Et.BINARY,o,s,a)}else if(l(ez[o])){if(i!==3)throw new de(`${o} requires exactly three arguments.`);s=Pi(e,n[0]),a=Pi(e,n[1]);let c=Pi(e,n[2]);return new Zt(Et.TERNARY,o,s,a,c)}else{if(o==="Boolean")return i===0?new Zt(Et.LITERAL_BOOLEAN,!1):(r=Pi(e,n[0]),new Zt(Et.UNARY,o,r));if(o==="Number")return i===0?new Zt(Et.LITERAL_NUMBER,0):(r=Pi(e,n[0]),new Zt(Et.UNARY,o,r));if(o==="String")return i===0?new Zt(Et.LITERAL_STRING,""):(r=Pi(e,n[0]),new Zt(Et.UNARY,o,r));if(o==="regExp")return cPe(e,t)}}throw new de(`Unexpected function call "${o}".`)}function cPe(e,t){let n=t.arguments;if(n.length===0)return new Zt(Et.LITERAL_REGEX,new RegExp);let i=Pi(e,n[0]),o;if(n.length>1){let r=Pi(e,n[1]);if(qH(i)&&qH(r)){try{o=new RegExp($H(String(i._value)),r._value)}catch(s){throw new de(s)}return new Zt(Et.LITERAL_REGEX,o)}return new Zt(Et.REGEX,i,r)}if(qH(i)){try{o=new RegExp($H(String(i._value)))}catch(r){throw new de(r)}return new Zt(Et.LITERAL_REGEX,o)}return new Zt(Et.REGEX,i)}function lPe(e){if(hPe(e.name)){let t=fPe(e.name);return t.substr(0,8)==="tiles3d_"?new Zt(Et.BUILTIN_VARIABLE,t):new Zt(Et.VARIABLE,t)}else{if(e.name==="NaN")return new Zt(Et.LITERAL_NUMBER,NaN);if(e.name==="Infinity")return new Zt(Et.LITERAL_NUMBER,1/0);if(e.name==="undefined")return new Zt(Et.LITERAL_UNDEFINED,void 0)}throw new de(`${e.name} is not defined.`)}function dPe(e){let t=e.property.name;if(t==="PI")return new Zt(Et.LITERAL_NUMBER,Math.PI);if(t==="E")return new Zt(Et.LITERAL_NUMBER,Math.E)}function uPe(e){if(e.property.name==="POSITIVE_INFINITY")return new Zt(Et.LITERAL_NUMBER,Number.POSITIVE_INFINITY)}function mPe(e,t){if(t.object.name==="Math")return dPe(t);if(t.object.name==="Number")return uPe(t);let n,i=Pi(e,t.object);return t.computed?(n=Pi(e,t.property),new Zt(Et.MEMBER,"brackets",i,n)):(n=new Zt(Et.LITERAL_STRING,t.property.name),new Zt(Et.MEMBER,"dot",i,n))}function qH(e){return e._type>=Et.LITERAL_NULL}function hPe(e){return e.substr(0,4)==="czm_"}function fPe(e){return e.substr(4)}function Pi(e,t){let n,i,o,r;if(t.type==="Literal")n=sPe(t);else if(t.type==="CallExpression")n=aPe(e,t);else if(t.type==="Identifier")n=lPe(t);else if(t.type==="UnaryExpression"){i=t.operator;let s=Pi(e,t.argument);if(YFe.indexOf(i)>-1)n=new Zt(Et.UNARY,i,s);else throw new de(`Unexpected operator "${i}".`)}else if(t.type==="BinaryExpression")if(i=t.operator,o=Pi(e,t.left),r=Pi(e,t.right),ise.indexOf(i)>-1)n=new Zt(Et.BINARY,i,o,r);else throw new de(`Unexpected operator "${i}".`);else if(t.type==="LogicalExpression")i=t.operator,o=Pi(e,t.left),r=Pi(e,t.right),ise.indexOf(i)>-1&&(n=new Zt(Et.BINARY,i,o,r));else if(t.type==="ConditionalExpression"){let s=Pi(e,t.test);o=Pi(e,t.consequent),r=Pi(e,t.alternate),n=new Zt(Et.CONDITIONAL,"?",o,r,s)}else if(t.type==="MemberExpression")n=mPe(e,t);else if(t.type==="ArrayExpression"){let s=[];for(let a=0;a"?e.evaluate=e._evaluateGreaterThan:e._value===">="?e.evaluate=e._evaluateGreaterThanOrEquals:e._value==="&&"?e.evaluate=e._evaluateAnd:e._value==="||"?e.evaluate=e._evaluateOr:e._value==="=~"?e.evaluate=e._evaluateRegExpMatch:e._value==="!~"?e.evaluate=e._evaluateRegExpNotMatch:l(OD[e._value])&&(e.evaluate=bPe(e._value)):e._type===Et.TERNARY?e.evaluate=yPe(e._value):e._type===Et.MEMBER?e._value==="brackets"?e.evaluate=e._evaluateMemberBrackets:e.evaluate=e._evaluateMemberDot:e._type===Et.ARRAY?e.evaluate=e._evaluateArray:e._type===Et.VARIABLE?e.evaluate=e._evaluateVariable:e._type===Et.VARIABLE_IN_STRING?e.evaluate=e._evaluateVariableString:e._type===Et.LITERAL_COLOR?e.evaluate=e._evaluateLiteralColor:e._type===Et.LITERAL_VECTOR?e.evaluate=e._evaluateLiteralVector:e._type===Et.LITERAL_STRING?e.evaluate=e._evaluateLiteralString:e._type===Et.REGEX?e.evaluate=e._evaluateRegExp:e._type===Et.BUILTIN_VARIABLE?e._value==="tiles3d_tileset_time"&&(e.evaluate=APe):e.evaluate=e._evaluateLiteral}function APe(e){return l(e)?e.content.tileset.timeSinceLoad:0}function gPe(e){let t=YD[e];return function(n){let i=this._left.evaluate(n);return t(e,i)}}function bPe(e){let t=OD[e];return function(n){let i=this._left.evaluate(n),o=this._right.evaluate(n);return t(e,i,o)}}function yPe(e){let t=ez[e];return function(n){let i=this._left.evaluate(n),o=this._right.evaluate(n),r=this._test.evaluate(n);return t(e,i,o,r)}}function HD(e,t){if(l(e))return e.getPropertyInherited(t)}Zt.prototype._evaluateLiteral=function(){return this._value};Zt.prototype._evaluateLiteralColor=function(e){let t=kD,n=this._left;if(this._value==="color")l(n)?n.length>1?(U.fromCssColorString(n[0].evaluate(e),t),t.alpha=n[1].evaluate(e)):U.fromCssColorString(n[0].evaluate(e),t):U.fromBytes(255,255,255,255,t);else if(this._value==="rgb")U.fromBytes(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),255,t);else if(this._value==="rgba"){let i=n[3].evaluate(e)*255;U.fromBytes(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),i,t)}else this._value==="hsl"?U.fromHsl(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),1,t):this._value==="hsla"&&U.fromHsl(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),n[3].evaluate(e),t);return ce.fromColor(t,Un.getCartesian4())};Zt.prototype._evaluateLiteralVector=function(e){let t=Un.getArray(),n=this._value,i=this._left,o=i.length;for(let a=0;a1)throw new de(`Invalid ${n} constructor. Not enough arguments.`);if(r>s&&o>1)throw new de(`Invalid ${n} constructor. Too many arguments.`);if(r===1){let a=t[0];t.push(a,a,a)}if(n==="vec2")return D.fromArray(t,0,Un.getCartesian2());if(n==="vec3")return m.fromArray(t,0,Un.getCartesian3());if(n==="vec4")return ce.fromArray(t,0,Un.getCartesian4())};Zt.prototype._evaluateLiteralString=function(){return this._value};Zt.prototype._evaluateVariableString=function(e){let t=this._value,n=VZ.exec(t);for(;n!==null;){let i=n[0],o=n[1],r=HD(e,o);l(r)||(r=""),t=t.replace(i,r),VZ.lastIndex+=r.length-i.length,n=VZ.exec(t)}return t};Zt.prototype._evaluateVariable=function(e){return HD(e,this._value)};function RC(e){return e._value==="feature"}Zt.prototype._evaluateMemberDot=function(e){if(RC(this._left))return HD(e,this._right.evaluate(e));let t=this._left.evaluate(e);if(!l(t))return;let n=this._right.evaluate(e);if(t instanceof D||t instanceof m||t instanceof ce){if(n==="r")return t.x;if(n==="g")return t.y;if(n==="b")return t.z;if(n==="a")return t.w}return t[n]};Zt.prototype._evaluateMemberBrackets=function(e){if(RC(this._left))return HD(e,this._right.evaluate(e));let t=this._left.evaluate(e);if(!l(t))return;let n=this._right.evaluate(e);if(t instanceof D||t instanceof m||t instanceof ce){if(n===0||n==="r")return t.x;if(n===1||n==="g")return t.y;if(n===2||n==="b")return t.z;if(n===3||n==="a")return t.w}return t[n]};Zt.prototype._evaluateArray=function(e){let t=[];for(let n=0;n" requires number arguments. Arguments are ${t} and ${n}.`);return t>n};Zt.prototype._evaluateGreaterThanOrEquals=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new de(`Operator ">=" requires number arguments. Arguments are ${t} and ${n}.`);return t>=n};Zt.prototype._evaluateOr=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new de(`Operator "||" requires boolean arguments. First argument is ${t}.`);if(t)return!0;let n=this._right.evaluate(e);if(typeof n!="boolean")throw new de(`Operator "||" requires boolean arguments. Second argument is ${n}.`);return t||n};Zt.prototype._evaluateAnd=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new de(`Operator "&&" requires boolean arguments. First argument is ${t}.`);if(!t)return!1;let n=this._right.evaluate(e);if(typeof n!="boolean")throw new de(`Operator "&&" requires boolean arguments. Second argument is ${n}.`);return t&&n};Zt.prototype._evaluatePlus=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof D&&t instanceof D)return D.add(t,n,Un.getCartesian2());if(n instanceof m&&t instanceof m)return m.add(t,n,Un.getCartesian3());if(n instanceof ce&&t instanceof ce)return ce.add(t,n,Un.getCartesian4());if(typeof t=="string"||typeof n=="string")return t+n;if(typeof t=="number"&&typeof n=="number")return t+n;throw new de(`Operator "+" requires vector or number arguments of matching types, or at least one string argument. Arguments are ${t} and ${n}.`)};Zt.prototype._evaluateMinus=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof D&&t instanceof D)return D.subtract(t,n,Un.getCartesian2());if(n instanceof m&&t instanceof m)return m.subtract(t,n,Un.getCartesian3());if(n instanceof ce&&t instanceof ce)return ce.subtract(t,n,Un.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t-n;throw new de(`Operator "-" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)};Zt.prototype._evaluateTimes=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof D&&t instanceof D)return D.multiplyComponents(t,n,Un.getCartesian2());if(n instanceof D&&typeof t=="number")return D.multiplyByScalar(n,t,Un.getCartesian2());if(t instanceof D&&typeof n=="number")return D.multiplyByScalar(t,n,Un.getCartesian2());if(n instanceof m&&t instanceof m)return m.multiplyComponents(t,n,Un.getCartesian3());if(n instanceof m&&typeof t=="number")return m.multiplyByScalar(n,t,Un.getCartesian3());if(t instanceof m&&typeof n=="number")return m.multiplyByScalar(t,n,Un.getCartesian3());if(n instanceof ce&&t instanceof ce)return ce.multiplyComponents(t,n,Un.getCartesian4());if(n instanceof ce&&typeof t=="number")return ce.multiplyByScalar(n,t,Un.getCartesian4());if(t instanceof ce&&typeof n=="number")return ce.multiplyByScalar(t,n,Un.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t*n;throw new de(`Operator "*" requires vector or number arguments. If both arguments are vectors they must be matching types. Arguments are ${t} and ${n}.`)};Zt.prototype._evaluateDivide=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof D&&t instanceof D)return D.divideComponents(t,n,Un.getCartesian2());if(t instanceof D&&typeof n=="number")return D.divideByScalar(t,n,Un.getCartesian2());if(n instanceof m&&t instanceof m)return m.divideComponents(t,n,Un.getCartesian3());if(t instanceof m&&typeof n=="number")return m.divideByScalar(t,n,Un.getCartesian3());if(n instanceof ce&&t instanceof ce)return ce.divideComponents(t,n,Un.getCartesian4());if(t instanceof ce&&typeof n=="number")return ce.divideByScalar(t,n,Un.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t/n;throw new de(`Operator "/" requires vector or number arguments of matching types, or a number as the second argument. Arguments are ${t} and ${n}.`)};Zt.prototype._evaluateMod=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof D&&t instanceof D)return D.fromElements(t.x%n.x,t.y%n.y,Un.getCartesian2());if(n instanceof m&&t instanceof m)return m.fromElements(t.x%n.x,t.y%n.y,t.z%n.z,Un.getCartesian3());if(n instanceof ce&&t instanceof ce)return ce.fromElements(t.x%n.x,t.y%n.y,t.z%n.z,t.w%n.w,Un.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t%n;throw new de(`Operator "%" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)};Zt.prototype._evaluateEqualsStrict=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);return n instanceof D&&t instanceof D||n instanceof m&&t instanceof m||n instanceof ce&&t instanceof ce?t.equals(n):t===n};Zt.prototype._evaluateNotEqualsStrict=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);return n instanceof D&&t instanceof D||n instanceof m&&t instanceof m||n instanceof ce&&t instanceof ce?!t.equals(n):t!==n};Zt.prototype._evaluateConditional=function(e){let t=this._test.evaluate(e);if(typeof t!="boolean")throw new de(`Conditional argument of conditional expression must be a boolean. Argument is ${t}.`);return t?this._left.evaluate(e):this._right.evaluate(e)};Zt.prototype._evaluateNaN=function(e){return isNaN(this._left.evaluate(e))};Zt.prototype._evaluateIsFinite=function(e){return isFinite(this._left.evaluate(e))};Zt.prototype._evaluateIsExactClass=function(e){return l(e)?e.isExactClass(this._left.evaluate(e)):!1};Zt.prototype._evaluateIsClass=function(e){return l(e)?e.isClass(this._left.evaluate(e)):!1};Zt.prototype._evaluateGetExactClassName=function(e){if(l(e))return e.getExactClassName()};Zt.prototype._evaluateBooleanConversion=function(e){return!!this._left.evaluate(e)};Zt.prototype._evaluateNumberConversion=function(e){return Number(this._left.evaluate(e))};Zt.prototype._evaluateStringConversion=function(e){return String(this._left.evaluate(e))};Zt.prototype._evaluateRegExp=function(e){let t=this._value.evaluate(e),n="";l(this._left)&&(n=this._left.evaluate(e));let i;try{i=new RegExp(t,n)}catch(o){throw new de(o)}return i};Zt.prototype._evaluateRegExpTest=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(!(t instanceof RegExp&&typeof n=="string"))throw new de(`RegExp.test requires the first argument to be a RegExp and the second argument to be a string. Arguments are ${t} and ${n}.`);return t.test(n)};Zt.prototype._evaluateRegExpMatch=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(t instanceof RegExp&&typeof n=="string")return t.test(n);if(n instanceof RegExp&&typeof t=="string")return n.test(t);throw new de(`Operator "=~" requires one RegExp argument and one string argument. Arguments are ${t} and ${n}.`)};Zt.prototype._evaluateRegExpNotMatch=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(t instanceof RegExp&&typeof n=="string")return!t.test(n);if(n instanceof RegExp&&typeof t=="string")return!n.test(t);throw new de(`Operator "!~" requires one RegExp argument and one string argument. Arguments are ${t} and ${n}.`)};Zt.prototype._evaluateRegExpExec=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(!(t instanceof RegExp&&typeof n=="string"))throw new de(`RegExp.exec requires the first argument to be a RegExp and the second argument to be a string. Arguments are ${t} and ${n}.`);let i=t.exec(n);return l(i)?i[1]:null};Zt.prototype._evaluateToString=function(e){let t=this._left.evaluate(e);if(t instanceof RegExp||t instanceof D||t instanceof m||t instanceof ce)return String(t);throw new de(`Unexpected function call "${this._value}".`)};function rse(e){let t=e._left,n=t.length;for(let a=0;a1){let p=d[0],g=d[1];return g!=="1.0"&&(t.translucent=!0),`vec4(${p}, ${g})`}}else return"vec4(1.0)";return`vec4(${d[0]}, 1.0)`}else{if(c==="rgb")return i=sse(this),l(i)?UD(i):`vec4(${d[0]} / 255.0, ${d[1]} / 255.0, ${d[2]} / 255.0, 1.0)`;if(c==="rgba")return d[3]!=="1.0"&&(t.translucent=!0),i=sse(this),l(i)?UD(i):`vec4(${d[0]} / 255.0, ${d[1]} / 255.0, ${d[2]} / 255.0, ${d[3]})`;if(c==="hsl")return i=rse(this),l(i)?UD(i):`vec4(czm_HSLToRGB(vec3(${d[0]}, ${d[1]}, ${d[2]})), 1.0)`;if(c==="hsla")return i=rse(this),l(i)?(i.alpha!==1&&(t.translucent=!0),UD(i)):(d[3]!=="1.0"&&(t.translucent=!0),`vec4(czm_HSLToRGB(vec3(${d[0]}, ${d[1]}, ${d[2]})), ${d[3]})`)}break;case Et.LITERAL_VECTOR:u=o.length,h=`${c}(`;for(let p=0;p0;){let u=t.pop();if(U.equals(u.color,a.color))d=tz(n,s,d,i,o,u.batchIds,r),a.batchIds=a.batchIds.concat(u.batchIds),a.count=d-a.offset;else{let h=d;d=tz(n,s,d,i,o,u.batchIds,r),u.offset=h,u.count=d-h,c.push(u),a=u}}e._va.indexBuffer.copyFromArrayView(s),e._indices=s,e._batchedIndices=c}function nz(e,t,n,i,o,r,s){let a=e.bytesPerIndex,c=r.length;for(let d=0;d0;){let h=t.pop();if(U.equals(h.color,r.color))d=nz(a,c,d,n,i,h.batchIds,o),r.batchIds=r.batchIds.concat(h.batchIds),r.count=d-r.offset;else{let p=d;d=nz(a,c,d,n,i,h.batchIds,o),h.offset=p,h.count=d-p,s.push(h),r=h}}let u=e._va;e._va=e._vaSwap,e._vaSwap=u,e._batchedIndices=s}function GPe(e,t){return t.color.toRgba()-e.color.toRgba()}function ZPe(e,t){if(!e._batchDirty)return!1;let n=e._batchedIndices,i=n.length,o=!1,r={};for(let s=0;s=b&&s{e.isDestroyed()||(e._error=f)}):void 0}}function HPe(e){l(e._primitive)||(e._primitive=new GC({batchTable:e._batchTable,positions:e._positions,batchIds:e._batchIds,vertexBatchIds:e._vertexBatchIds,indices:e._indices,indexOffsets:e._indexOffsets,indexCounts:e._indexCounts,batchedIndices:e._batchedIndices,boundingVolume:e._boundingVolume,boundingVolumes:e._boundingVolumes,center:e._center,pickObject:e._pickObject??e}),e._boxes=void 0,e._boxBatchIds=void 0,e._cylinders=void 0,e._cylinderBatchIds=void 0,e._ellipsoids=void 0,e._ellipsoidBatchIds=void 0,e._spheres=void 0,e._sphereBatchIds=void 0,e._center=void 0,e._modelMatrix=void 0,e._batchTable=void 0,e._boundingVolume=void 0,e._boundingVolumes=void 0,e._batchedIndices=void 0,e._indices=void 0,e._indexOffsets=void 0,e._indexCounts=void 0,e._positions=void 0,e._vertexBatchIds=void 0,e._batchIds=void 0,e._batchTableColors=void 0,e._packedBuffer=void 0,e._verticesPromise=void 0)}Qd.prototype.createFeatures=function(e,t){this._primitive.createFeatures(e,t)};Qd.prototype.applyDebugSettings=function(e,t){this._primitive.applyDebugSettings(e,t)};Qd.prototype.applyStyle=function(e,t){this._primitive.applyStyle(e,t)};Qd.prototype.updateCommands=function(e,t){this._primitive.updateCommands(e,t)};Qd.prototype.update=function(e){if(!this._ready){if(l(this._promise)||(this._promise=OPe(this)),l(this._error)){let t=this._error;throw this._error=void 0,t}return}this._primitive.debugWireframe=this.debugWireframe,this._primitive.forceRebatch=this.forceRebatch,this._primitive.classificationType=this.classificationType,this._primitive.update(e)};Qd.prototype.isDestroyed=function(){return!1};Qd.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),me(this)};var CA=Qd;function Df(e,t,n,i,o){this._tileset=e,this._tile=t,this._resource=n,this._geometries=void 0,this._metadata=void 0,this._batchTable=void 0,this._features=void 0,this.featurePropertiesDirty=!1,this._group=void 0,this._ready=!1,JPe(this,i,o)}Object.defineProperties(Df.prototype,{featuresLength:{get:function(){return l(this._batchTable)?this._batchTable.featuresLength:0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return l(this._geometries)?this._geometries.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._geometries)?this._geometries.geometryByteLength:0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return l(this._batchTable)?this._batchTable.batchTableByteLength:0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},batchTable:{get:function(){return this._batchTable}},group:{get:function(){return this._group},set:function(e){this._group=e}}});function zPe(e){return function(t,n){l(e._geometries)&&e._geometries.updateCommands(t,n)}}function KPe(e,t){let n,i,o,r,s,a=e.BOXES_LENGTH??0,c=e.CYLINDERS_LENGTH??0,d=e.ELLIPSOIDS_LENGTH??0,u=e.SPHERES_LENGTH??0;if(a>0&&l(e.BOX_BATCH_IDS)){let f=t.byteOffset+e.BOX_BATCH_IDS.byteOffset;n=new Uint16Array(t.buffer,f,a)}if(c>0&&l(e.CYLINDER_BATCH_IDS)){let f=t.byteOffset+e.CYLINDER_BATCH_IDS.byteOffset;i=new Uint16Array(t.buffer,f,c)}if(d>0&&l(e.ELLIPSOID_BATCH_IDS)){let f=t.byteOffset+e.ELLIPSOID_BATCH_IDS.byteOffset;o=new Uint16Array(t.buffer,f,d)}if(u>0&&l(e.SPHERE_BATCH_IDS)){let f=t.byteOffset+e.SPHERE_BATCH_IDS.byteOffset;r=new Uint16Array(t.buffer,f,u)}let h=l(n)||l(i)||l(o)||l(r),p=a>0&&!l(n)||c>0&&!l(i)||d>0&&!l(o)||u>0&&!l(r);if(h&&p)throw new de("If one group of batch ids is defined, then all batch ids must be defined");if(!l(n)&&!l(i)&&!l(o)&&!l(r)){let f=0;if(!l(n)&&a>0)for(n=new Uint16Array(a),s=0;s0)for(i=new Uint16Array(c),s=0;s0)for(o=new Uint16Array(d),s=0;s0)for(r=new Uint16Array(u),s=0;s0&&(g=mr(i,n,d),n+=d,u>0&&(f=new Uint8Array(t,n,u),f=new Uint8Array(f)));let b=h.BOXES_LENGTH??0,x=h.CYLINDERS_LENGTH??0,I=h.ELLIPSOIDS_LENGTH??0,_=h.SPHERES_LENGTH??0,E=b+x+I+_,S=new bA(e,E,g,f,zPe(e));if(e._batchTable=S,E===0)return;let R=e.tile.computedTransform,G;l(h.RTC_CENTER)&&(G=m.unpack(h.RTC_CENTER),X.multiplyByPoint(R,G,G));let B=KPe(h,p);if(b>0||x>0||I>0||_>0){let w,F,P,A;if(b>0){let T=p.byteOffset+h.BOXES.byteOffset;w=new Float32Array(p.buffer,T,CA.packedBoxLength*b)}if(x>0){let T=p.byteOffset+h.CYLINDERS.byteOffset;F=new Float32Array(p.buffer,T,CA.packedCylinderLength*x)}if(I>0){let T=p.byteOffset+h.ELLIPSOIDS.byteOffset;P=new Float32Array(p.buffer,T,CA.packedEllipsoidLength*I)}if(_>0){let T=p.byteOffset+h.SPHERES.byteOffset;A=new Float32Array(p.buffer,T,CA.packedSphereLength*_)}return e._geometries=new CA({boxes:w,boxBatchIds:B.boxes,cylinders:F,cylinderBatchIds:B.cylinders,ellipsoids:P,ellipsoidBatchIds:B.ellipsoids,spheres:A,sphereBatchIds:B.spheres,center:G,modelMatrix:R,batchTable:S,boundingVolume:e.tile.boundingVolume.boundingVolume}),e}return Promise.resolve(e)}function mse(e){let t=e.featuresLength;if(!l(e._features)&&t>0){let n=new Array(t);l(e._geometries)&&e._geometries.createFeatures(e,n),e._features=n}}Df.prototype.hasProperty=function(e,t){return this._batchTable.hasProperty(e,t)};Df.prototype.getFeature=function(e){return mse(this),this._features[e]};Df.prototype.applyDebugSettings=function(e,t){l(this._geometries)&&this._geometries.applyDebugSettings(e,t)};Df.prototype.applyStyle=function(e){mse(this),l(this._geometries)&&this._geometries.applyStyle(e,this._features)};Df.prototype.update=function(e,t){l(this._geometries)&&(this._geometries.classificationType=this._tileset.classificationType,this._geometries.debugWireframe=this._tileset.debugWireframe,this._geometries.update(t)),l(this._batchTable)&&this._geometries.ready&&(this._batchTable.update(e,t),this._ready=!0)};Df.prototype.pick=function(e,t,n){};Df.prototype.isDestroyed=function(){return!1};Df.prototype.destroy=function(){return this._geometries=this._geometries&&this._geometries.destroy(),this._batchTable=this._batchTable&&this._batchTable.destroy(),me(this)};var GZ=Df;var fAn=y(C(),1);var Lan=y(C(),1);var iz={};iz.encode2D=function(e,t,n){let i=Math.pow(2,e),o={x:t,y:n},r,s,a,c=BigInt(0);for(a=i/2;a>0;a/=2)r=(o.x&a)>0?1:0,s=(o.y&a)>0?1:0,c+=BigInt((3*r^s)*a*a),hse(i,o,r,s);return c};iz.decode2D=function(e,t){let n=Math.pow(2,e),i={x:0,y:0},o,r,s,a;for(s=1,a=t;s>>0,oz=2*BC+1,Wb=4,Ase=[],gse=[],$Pe=[[0,1,3,2],[0,2,3,1],[3,2,0,1],[3,1,0,2]],Fb=1,lE=2,zD=[Fb,0,0,Fb|lE];function ys(e){if(!Ht.supportsBigInt())throw new de("S2 required BigInt support");this._cellId=e,this._level=ys.getLevel(e)}ys.fromToken=function(e){return new ys(ys.getIdFromToken(e))};ys.isValidId=function(e){return!(e<=0||e>>BigInt(oz)>5||!(e&~e+BigInt(1)&BigInt("0x1555555555555555")))};ys.isValidToken=function(e){return/^[0-9a-fA-F]{1,16}$/.test(e)?ys.isValidId(ys.getIdFromToken(e)):!1};ys.getIdFromToken=function(e){return BigInt("0x"+e+"0".repeat(16-e.length))};ys.getTokenFromId=function(e){let t=Math.floor(lMe(e)/4),n=e.toString(16).replace(/0*$/,"");return Array(17-t-n.length).join("0")+n};ys.getLevel=function(e){let t=0;for(;e!==BigInt(0)&&!(e&BigInt(1));)t++,e=e>>BigInt(1);return BC-(t>>1)};ys.prototype.getChild=function(e){let t=Cse(this._cellId)>>BigInt(2),n=this._cellId+BigInt(2*e+1-4)*t;return new ys(n)};ys.prototype.getParent=function(){let e=Cse(this._cellId)<>1&1;return yse(i[0],o[0][r^n&1],o[1][r])}function nMe(e,t){let n=bse(e),i=n[0],o=n[1],r=n[2],s=t===30,a=!s&&(BigInt(o)^e>>BigInt(2))&BigInt(1),c=s?1:a?2:0,d=(o<<1)+c,u=(r<<1)+c;return[i,d,u]}function bse(e){Ase.length===0&&sMe();let t=Number(e>>BigInt(oz)),n=t&Fb,i=(1<=0;s--){let c=(1<<2*(s===7?BC-7*Wb:Wb))-1;n+=Number(e>>BigInt(s*2*Wb+1)&BigInt(c))<<2,n=gse[n];let d=s*Wb;o+=n>>Wb+2<>2&i)<=.5?1/3*(4*e*e-1):1/3*(1-4*(1-e)*(1-e))}function fse(e){return 1/qPe*e}function oMe(e,t){let n=[[],[]],i=rMe(t);for(let o=0;o<2;++o){let r=e[o]&-i,s=r+i;n[o][0]=KD(pse(r)),n[o][1]=KD(pse(s))}return n}function rMe(e){return 1<>>0}function pse(e){return 1/jPe*e}function Pb(e,t,n,i,o,r){if(e===Wb){let s=(t<>1),n+(s[0]&1),i,o,r^zD[0]),Pb(e,t+(s[1]>>1),n+(s[1]&1),i,o+1,r^zD[1]),Pb(e,t+(s[2]>>1),n+(s[2]&1),i,o+2,r^zD[2]),Pb(e,t+(s[3]>>1),n+(s[3]&1),i,o+3,r^zD[3])}}function sMe(){Pb(0,0,0,0,0,0),Pb(0,0,0,Fb,0,Fb),Pb(0,0,0,lE,0,lE),Pb(0,0,0,Fb|lE,0,Fb|lE)}function Cse(e){return e&~e+BigInt(1)}function aMe(e){return BigInt(1)<>3,r=i%8;n+=e[o]>>r&1}return n}Object.defineProperties(rz.prototype,{lengthBits:{get:function(){return this._lengthBits}},availableCount:{get:function(){return this._availableCount}}});rz.prototype.getBit=function(e){if(l(this._constant))return this._constant;let t=e>>3,n=e%8;return(this._bitstream[t]>>n&1)===1};var dE=rz;var kan=y(C(),1);function IA(e){e=e??Y.EMPTY_OBJECT;let t=e.metadataTable,n=e.class,i=e.entityId,o=e.propertyTableJson;this._class=n,this._metadataTable=t,this._entityId=i,this._extensions=o.extensions,this._extras=o.extras}Object.defineProperties(IA.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});IA.prototype.hasProperty=function(e){return this._metadataTable.hasProperty(e)};IA.prototype.hasPropertyBySemantic=function(e){return this._metadataTable.hasPropertyBySemantic(e)};IA.prototype.getPropertyIds=function(e){return this._metadataTable.getPropertyIds(e)};IA.prototype.getProperty=function(e){return this._metadataTable.getProperty(this._entityId,e)};IA.prototype.setProperty=function(e,t){return this._metadataTable.setProperty(this._entityId,e,t)};IA.prototype.getPropertyBySemantic=function(e){return this._metadataTable.getPropertyBySemantic(this._entityId,e)};IA.prototype.setPropertyBySemantic=function(e,t){return this._metadataTable.setPropertyBySemantic(this._entityId,e,t)};var uE=IA;var Oan=y(C(),1);var JD={QUADTREE:"QUADTREE",OCTREE:"OCTREE"};JD.getBranchingFactor=function(e){switch(e){case JD.OCTREE:return 8;case JD.QUADTREE:return 4}};var Cs=Object.freeze(JD);var ncn=y(C(),1);var jan=y(C(),1);function Ma(){}Object.defineProperties(Ma.prototype,{class:{get:function(){Ae.throwInstantiationError()}}});Ma.prototype.hasProperty=function(e){Ae.throwInstantiationError()};Ma.prototype.hasPropertyBySemantic=function(e){Ae.throwInstantiationError()};Ma.prototype.getPropertyIds=function(e){Ae.throwInstantiationError()};Ma.prototype.getProperty=function(e){Ae.throwInstantiationError()};Ma.prototype.setProperty=function(e,t){Ae.throwInstantiationError()};Ma.prototype.getPropertyBySemantic=function(e){Ae.throwInstantiationError()};Ma.prototype.setPropertyBySemantic=function(e,t){Ae.throwInstantiationError()};Ma.hasProperty=function(e,t,n){if(l(t[e]))return!0;let i=n.properties;if(!l(i))return!1;let o=i[e];return!!(l(o)&&l(o.default))};Ma.hasPropertyBySemantic=function(e,t,n){let i=n.propertiesBySemantic;if(!l(i))return!1;let o=i[e];return l(o)};Ma.getPropertyIds=function(e,t,n){n=l(n)?n:[],n.length=0;for(let o in e)e.hasOwnProperty(o)&&l(e[o])&&n.push(o);let i=t.properties;if(l(i))for(let o in i)i.hasOwnProperty(o)&&!l(e[o])&&l(i[o].default)&&n.push(o);return n};Ma.getProperty=function(e,t,n){let i=n.properties[e],o=t[e];Array.isArray(o)&&(o=o.slice());let r=!0;if(o=i.handleNoData(o),!l(o)&&l(i.default))return o=ke(i.default,!0),i.unpackVectorAndMatrixTypes(o,r);if(l(o))return o=i.normalize(o),o=i.applyValueTransform(o),i.unpackVectorAndMatrixTypes(o,r)};Ma.setProperty=function(e,t,n,i){if(!l(n[e]))return!1;Array.isArray(t)&&(t=t.slice());let o,r=i.properties;return l(r)&&(o=r[e]),l(o)&&(t=o.packVectorAndMatrixTypes(t,!0),t=o.unapplyValueTransform(t),t=o.unnormalize(t)),n[e]=t,!0};Ma.getPropertyBySemantic=function(e,t,n){let i=n.propertiesBySemantic;if(!l(i))return;let o=i[e];if(l(o))return Ma.getProperty(o.id,t,n)};Ma.setPropertyBySemantic=function(e,t,n,i){let o=i.propertiesBySemantic;if(!l(o))return!1;let r=i.propertiesBySemantic[e];return l(r)?Ma.setProperty(r.id,t,n,i):!1};var Kn=Ma;function _A(e){e=e??Y.EMPTY_OBJECT;let t=e.subtreeMetadata,n=e.class,i=l(t.properties)?t.properties:{};this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(_A.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});_A.prototype.hasProperty=function(e){return Kn.hasProperty(e,this._properties,this._class)};_A.prototype.hasPropertyBySemantic=function(e){return Kn.hasPropertyBySemantic(e,this._properties,this._class)};_A.prototype.getPropertyIds=function(e){return Kn.getPropertyIds(this._properties,this._class,e)};_A.prototype.getProperty=function(e){return Kn.getProperty(e,this._properties,this._class)};_A.prototype.setProperty=function(e,t){return Kn.setProperty(e,t,this._properties,this._class)};_A.prototype.getPropertyBySemantic=function(e){return Kn.getPropertyBySemantic(e,this._properties,this._class)};_A.prototype.setPropertyBySemantic=function(e,t){return Kn.setPropertyBySemantic(e,t,this._properties,this._class)};var ZZ=_A;var zcn=y(C(),1);var Dcn=y(C(),1);var acn=y(C(),1);var Yt={INT8:"INT8",UINT8:"UINT8",INT16:"INT16",UINT16:"UINT16",INT32:"INT32",UINT32:"UINT32",INT64:"INT64",UINT64:"UINT64",FLOAT32:"FLOAT32",FLOAT64:"FLOAT64"};Yt.getMinimum=function(e){switch(e){case Yt.INT8:return-128;case Yt.UINT8:return 0;case Yt.INT16:return-32768;case Yt.UINT16:return 0;case Yt.INT32:return-2147483648;case Yt.UINT32:return 0;case Yt.INT64:return Ht.supportsBigInt()?BigInt("-9223372036854775808"):-Math.pow(2,63);case Yt.UINT64:return Ht.supportsBigInt()?BigInt(0):0;case Yt.FLOAT32:return-34028234663852886e22;case Yt.FLOAT64:return-Number.MAX_VALUE}};Yt.getMaximum=function(e){switch(e){case Yt.INT8:return 127;case Yt.UINT8:return 255;case Yt.INT16:return 32767;case Yt.UINT16:return 65535;case Yt.INT32:return 2147483647;case Yt.UINT32:return 4294967295;case Yt.INT64:return Ht.supportsBigInt()?BigInt("9223372036854775807"):Math.pow(2,63)-1;case Yt.UINT64:return Ht.supportsBigInt()?BigInt("18446744073709551615"):Math.pow(2,64)-1;case Yt.FLOAT32:return 34028234663852886e22;case Yt.FLOAT64:return Number.MAX_VALUE}};Yt.isIntegerType=function(e){switch(e){case Yt.INT8:case Yt.UINT8:case Yt.INT16:case Yt.UINT16:case Yt.INT32:case Yt.UINT32:case Yt.INT64:case Yt.UINT64:return!0;default:return!1}};Yt.isUnsignedIntegerType=function(e){switch(e){case Yt.UINT8:case Yt.UINT16:case Yt.UINT32:case Yt.UINT64:return!0;default:return!1}};Yt.isVectorCompatible=function(e){switch(e){case Yt.INT8:case Yt.UINT8:case Yt.INT16:case Yt.UINT16:case Yt.INT32:case Yt.UINT32:case Yt.FLOAT32:case Yt.FLOAT64:return!0;default:return!1}};Yt.normalize=function(e,t){return Math.max(Number(e)/Number(Yt.getMaximum(t)),-1)};Yt.unnormalize=function(e,t){let n=Yt.getMaximum(t),i=Yt.isUnsignedIntegerType(t)?0:-n;return e=Z.sign(e)*Math.round(Math.abs(e)*Number(n)),(t===Yt.INT64||t===Yt.UINT64)&&Ht.supportsBigInt()&&(e=BigInt(e)),e>n?n:e1;if(!n&&o===1)return e;if(!n)return new Array(o).fill(e);if(!r)return new Array(i).fill(e);if(!t)return new Array(this._arrayLength*o).fill(e);let s=new Array(o).fill(e);return new Array(this._arrayLength).fill(s)};dc.prototype.handleNoData=function(e){let t=this._noData;if(!l(t))return e;if(!Ese(e,t))return e};function Ese(e,t){if(!Array.isArray(e))return e===t;if(!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n1;return l(n)?t&&r?e.map(function(s){return n.unpack(s)}):i?n.unpackArray(e):n.unpack(e):e};dc.prototype.packVectorAndMatrixTypes=function(e,t){t=t??!1;let n=bt.getMathType(this._type),i=this._isArray,o=bt.getComponentCount(this._type),r=i&&o>1;return l(n)?t&&r?e.map(function(s){return n.pack(s,[])}):i?n.packArray(e,[]):n.pack(e,[]):e};dc.prototype.validate=function(e){if(!(!l(e)&&l(this._default)))return this._required&&!l(e)?"required property must have a value":this._isArray?fMe(this,e):Tse(this,e)};function fMe(e,t){if(!Array.isArray(t))return`value ${t} must be an array`;let n=t.length;if(!e._isVariableLengthArray&&n!==e._arrayLength)return"Array length does not match property.arrayLength";for(let i=0;i1?xse(e,t,n):void 0}if(eUt.getMaximum(t))return xse(e,t,n)}function _se(e,t){return`value ${e} of type ${t} must be finite`}function sz(e,t,n){if(!Array.isArray(e))return n(e,t);for(let i=0;i>3,i=e%8;return(t.typedArray[n]>>i&1)===1}function TMe(e,t,n){let i=e>>3,o=e%8;n?t.typedArray[i]|=1<0,s=!0;for(let a=0;a<8;++a){let c=n.getUint8(i+a);r&&(s?c!==0&&(c=~(c-1)&255,s=!1):c=~c&255),o+=c*Math.pow(256,a)}return r&&(o=-o),o}function LMe(e,t){let n=t.dataView,i=e*8,o=BigInt(0),r=(n.getUint8(i+7)&128)>0,s=!0;for(let a=0;a<8;++a){let c=n.getUint8(i+a);r&&(s?c!==0&&(c=~(c-1)&255,s=!1):c=~c&255),o+=BigInt(c)*(BigInt(1)<96?x-97:x>64?x-39:x+4}for(var I=0,b=0;b=3),c(n.exports.meshopt_spatialSortRemap,g,g.length/f,f*4)},encodeVertexBuffer:function(g,f,b){r(b>0&&b<=256),r(b%4==0);var x=n.exports.meshopt_encodeVertexBufferBound(f,b);return d(n.exports.meshopt_encodeVertexBuffer,x,g,f,b)},encodeIndexBuffer:function(g,f,b){r(b==2||b==4),r(f%3==0);var x=h(g,b),I=n.exports.meshopt_encodeIndexBufferBound(f,u(x)+1);return d(n.exports.meshopt_encodeIndexBuffer,I,x,f,4)},encodeIndexSequence:function(g,f,b){r(b==2||b==4);var x=h(g,b),I=n.exports.meshopt_encodeIndexSequenceBound(f,u(x)+1);return d(n.exports.meshopt_encodeIndexSequence,I,x,f,4)},encodeGltfBuffer:function(g,f,b,x){var I={ATTRIBUTES:this.encodeVertexBuffer,TRIANGLES:this.encodeIndexBuffer,INDICES:this.encodeIndexSequence};return r(I[x]),I[x](g,f,b)},encodeFilterOct:function(g,f,b,x){return r(b==4||b==8),r(x>=1&&x<=16),p(n.exports.meshopt_encodeFilterOct,g,f,b,x,16)},encodeFilterQuat:function(g,f,b,x){return r(b==8),r(x>=4&&x<=16),p(n.exports.meshopt_encodeFilterQuat,g,f,b,x,16)},encodeFilterExp:function(g,f,b,x,I){r(b>0&&b%4==0),r(x>=1&&x<=24);var _={Separate:0,SharedVector:1,SharedComponent:2,Clamped:3};return p(n.exports.meshopt_encodeFilterExp,g,f,b,x,b,I?_[I]:1)}}}();var hln=y(C()),Gse=function(){var e="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:W:Odkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:S86qdbk;jYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz1jjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbhodnawTmbaxa8Acd4fRbbhokaocFeGh5cbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz1jjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:jjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q1jjbfcj1jjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bbarcwf9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfag9c8F1:NghcKtc8F91aicdfa8J9c8N1:Nfg8KRbbG86bbarcVfcba8KahcjeGcr4fghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fag9c8F1:NgicKtc8F91aha8J9c8N1:NfghRbbG86bbarc96fcbahaicjeGcr4fgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbb83bbarcwfaicwf8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbcbaocl49Rh8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E93aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z1jjjb8AazazcjdfaAcufad2fadz1jjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok:XseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;oiliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavciGfgkcd7cetfaD87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavcufciGfcetfaD87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohvxekcjjjj94hvkabakcetfav87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbyd:K1jjbgeabcifc98GfgbBd:K1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk81dbcjwk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:Kwkl8WNbb",t="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q:6dkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;G9Mqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:183lYud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxavaialfgmar9Rgoad;8qbbcj;abad9Uc;WFbGcjdadca0EhPdndndnadTmbaoadfhscbhzinaeaz9nmdamax9RaD6miabazad2fhHaxaDfhOaPaeaz9RazaPfae6EgAcsfgocl4cifcd4hCavcj;cbfaoc9WGgXcetfhQavcj;cbfaXci2fhLavcj;cbfaXfhKcbhYaoc;ab6h8AincbhodnawTmbaxaYcd4fRbbhokaocFeGhEcbh3avcj;cbfh5indndndndnaEa3cet4ciGgoc9:fPdebdkamaO9RaX6mwavcj;cbfa3aX2faOaX;8qbbaOaAfhOxdkavcj;cbfa3aX2fcbaX;8kbxekamaO9RaC6moaoclVcbawEhraOaCfhocbhidna8Ambamao9Rc;Gb6mbcbhlina5alfhidndndndndndnaOalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiczfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaicafaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaoclffaqc:q:yjjbfRbbfhoxikaic8Wfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaocwffaqc:q:yjjbfRbbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitc:q1jjbfpbibaic:q:yjjbfRbbgipsaoRbegqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqc:q:yjjbfRbbfhokalc;abfhialcjefaX0meaihlamao9Rc;Fb0mbkkdnaiaX9pmbaici4hlinamao9RcK6mwa5aifhqdndndndndndnaOaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaoclffahc:q:yjjbfRbbfhoxikaqaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaocwffahc:q:yjjbfRbbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpkbbaaaocdffahc:q:yjjbfRbbfhokalcdfhlaiczfgiaX6mbkkaohOaoTmoka5aXfh5a3cefg3cl9hmbkdndndndnawTmbasaYcd4fRbbglciGPlbedwbkaXTmdavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep9Ta8Epxeeeeeeeeeeeeeeeeg8Fp9op9Hp9rg8Eagp9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Ug8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9AbbbaladfhlaoczfgoaX6mbxikkaXTmeavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep:nea8Epxebebebebebebebebg8Fp9op:bep9rg8Eagp:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeg8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9AbbbaladfhlaoczfgoaX6mbxdkkaXTmbcbhocbalcl4gl9Rc8FGhiavcjdfaYfhravaYfpbdbh8Finaravcj;cbfaofpblbggaKaofpblbg8JpmbzeHdOiAlCvXoQrLg8KaQaofpblbg8LaLaofpblbg8MpmbzeHdOiAlCvXoQrLg8NpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ea8Fp9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Fa8Ka8NpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwKDYq8AkEx3m5P8Es8Fgga8La8MpmwKDYq8AkEx3m5P8Es8Fg8JpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9AbbbaradfhraoczfgoaX6mbkkaYclfgYad6mbkaHavcjdfaAad2;8qbbavavcjdfaAcufad2fad;8qbbaAazfhzc9:hoaOhxaOmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdaPaeao9RaoaPfae6Eaofgoae6mbkaial9Rhxkcbc99amax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbk:TseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:SPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiczfpxbbbbbbbbbbbbbbbbgopklbaiaopklbaiabalcitfgdaeciGglcitgv;8qbbdnalTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkadaiav;8qbbkk:oDllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiczfpxbbbbbbbbbbbbbbbbgkpklbaiakpklbaiabalcitfgoaeciGgvcitgw;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkaoaiaw;8qbbkk;uddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaic8WfpxbbbbbbbbbbbbbbbbgopklbaicafaopklbaiczfaopklbaiaopklbaiabavcdtfgdalciGgecdtgv;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkadaiav;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb",n=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),i=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var o=WebAssembly.validate(n)?a(t):a(e),r,s=WebAssembly.instantiate(o,{}).then(function(I){r=I.instance,r.exports.__wasm_call_ctors()});function a(I){for(var _=new Uint8Array(I.length),E=0;E96?S-97:S>64?S-39:S+4}for(var R=0,E=0;E0?b(I,_,E,u[S],d[R]):s.then(function(){var G=new Uint8Array(I*_);return c(r,r.exports[u[S]],G,I,_,E,r.exports[d[R]]),G})}}}();var Aln=y(C()),fln=function(){var e="b9H79Tebbbetm9Geueu9Geub9Gbb9Gsuuuuuuuuuuuu99uueu9Gvuuuuub9Gruuuuuuub9Gvuuuuue999Gvuuuuueu9Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuiOHdilvorlwiDqkbxxbelve9Weiiviebeoweuec:G:Pdkr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95br8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bwQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7bDX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbqa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbkl79IV9RbxDwebcekdzsq;B:xeHdbkM9Hi8Au8A99Au8Jjjjjbc;W;qb9Rgs8Kjjjjbcbhzascxfcbc;Kbz:ojjjb8AdnabaeSmbabaeadcdtz:njjjb8AkdndnamcdGmbascxfhHcbhOxekasalcrfci4gecbyd:m:jjjbHjjjjbbgABdxasceBd2aAcbaez:ojjjbhCcbhlcbhednadTmbcbhlabheadhAinaCaeydbgXci4fgQaQRbbgQceaXcrGgXtV86bbaQcu7aX4ceGalfhlaeclfheaAcufgAmbkcualcdtalcFFFFi0EhekascCfhHasaecbyd:m:jjjbHjjjjbbgOBdzascdBd2alcd4alfhXcehAinaAgecethAaeaX6mbkcdhzcbhLascuaecdtgAaecFFFFi0Ecbyd:m:jjjbHjjjjbbgXBdCasciBd2aXcFeaAz:ojjjbhKdnadTmbaecufhYcbh8AindndnaKabaLcdtfgEydbgQc:v;t;h;Ev2aYGgXcdtfgCydbgAcuSmbceheinaOaAcdtfydbaQSmdaXaefhAaecefheaKaAaYGgXcdtfgCydbgAcu9hmbkkaOa8AcdtfaQBdbaCa8ABdba8AhAa8Acefh8AkaEaABdbaLcefgLad9hmbkkaKcbyd1:jjjbH:bjjjbbascdBd2kcbh3aHcualcefgecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbg5Bdbasa5BdlasazceVgeBd2ascxfaecdtfcuadcitadcFFFFe0Ecbyd:m:jjjbHjjjjbbg8EBdbasa8EBdwasazcdfgeBd2asclfabadalcbz:cjjjbascxfaecdtfcualcdtgealcFFFFi0Eg8Fcbyd:m:jjjbHjjjjbbgABdbasazcifgXBd2ascxfaXcdtfa8Fcbyd:m:jjjbHjjjjbbgaBdbasazclVBd2aAaaaialavaOascxfz:djjjbalcbyd:m:jjjbHjjjjbbhCascxfasyd2ghcdtfaCBdbasahcefgXBd2ascxfaXcdtfa8Fcbyd:m:jjjbHjjjjbbgXBdbasahcdfgQBd2ascxfaQcdtfa8Fcbyd:m:jjjbHjjjjbbgQBdbasahcifggBd2aXcFeaez:ojjjbh8JaQcFeaez:ojjjbh8KdnalTmba8Ecwfh8Lindna5a3gQcefg3cdtfydbgKa5aQcdtgefydbgXSmbaKaX9Rhza8EaXcitfhHa8Kaefh8Ma8JaefhEcbhYindndnaHaYcitfydbg8AaQ9hmbaEaQBdba8MaQBdbxekdna5a8Acdtg8NfgeclfydbgXaeydbgeSmba8EaecitgKfydbaQSmeaXae9Rhyaecu7aXfhLa8LaKfhXcbheinaLaeSmeaecefheaXydbhKaXcwfhXaKaQ9hmbkaeay6meka8Ka8NfgeaQa8AaeydbcuSEBdbaEa8AaQaEydbcuSEBdbkaYcefgYaz9hmbkka3al9hmbkaAhXaahQa8KhKa8JhYcbheindndnaeaXydbg8A9hmbdnaeaQydbg8A9hmbaYydbh8AdnaKydbgLcu9hmba8Acu9hmbaCaefcb86bbxikaCaefhEdnaeaLSmbaea8ASmbaEce86bbxikaEcl86bbxdkdnaeaaa8AcdtgLfydb9hmbdnaKydbgEcuSmbaeaESmbaYydbgzcuSmbaeazSmba8KaLfydbgHcuSmbaHa8ASmba8JaLfydbgLcuSmbaLa8ASmbdnaAaEcdtfydbg8AaAaLcdtfydb9hmba8AaAazcdtfydbgLSmbaLaAaHcdtfydb9hmbaCaefcd86bbxlkaCaefcl86bbxikaCaefcl86bbxdkaCaefcl86bbxekaCaefaCa8AfRbb86bbkaXclfhXaQclfhQaKclfhKaYclfhYalaecefge9hmbkdnaqTmbdndnaOTmbaOheaAhXalhQindnaqaeydbfRbbTmbaCaXydbfcl86bbkaeclfheaXclfhXaQcufgQmbxdkkaAhealhXindnaqRbbTmbaCaeydbfcl86bbkaqcefhqaeclfheaXcufgXmbkkaAhealhQaChXindnaCaeydbfRbbcl9hmbaXcl86bbkaeclfheaXcefhXaQcufgQmbkkamceGTmbaChealhXindnaeRbbce9hmbaecl86bbkaecefheaXcufgXmbkkascxfagcdtfcualcx2alc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbg3BdbasahclfgHBd2a3aialavaOz:ejjjbh8PdndnaDmbcbhgcbh8Lxekcbh8LawhecbhXindnaeIdbJbbbb9ETmbasc;Wbfa8LcdtfaXBdba8Lcefh8LkaeclfheaDaXcefgX9hmbkascxfaHcdtfcua8Lal2gecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbggBdbasahcvfgHBd2alTmba8LTmbarcd4hEdnaOTmba8Lcdthzcbh8AaghLinaoaOa8AcdtfydbaE2cdtfhYasc;WbfheaLhXa8LhQinaXaYaeydbcdtgKfIdbawaKfIdbNUdbaeclfheaXclfhXaQcufgQmbkaLazfhLa8Acefg8Aal9hmbxdkka8Lcdthzcbh8AaghLinaoa8AaE2cdtfhYasc;WbfheaLhXa8LhQinaXaYaeydbcdtgKfIdbawaKfIdbNUdbaeclfheaXclfhXaQcufgQmbkaLazfhLa8Acefg8Aal9hmbkkascxfaHcdtfcualc8S2gealc;D;O;f8U0EgQcbyd:m:jjjbHjjjjbbgXBdbasaHcefgKBd2aXcbaez:ojjjbhqdndndna8LTmbascxfaKcdtfaQcbyd:m:jjjbHjjjjbbgvBdbasaHcdfgXBd2avcbaez:ojjjb8AascxfaXcdtfcua8Lal2gecltgXaecFFFFb0Ecbyd:m:jjjbHjjjjbbgiBdbasaHcifBd2aicbaXz:ojjjb8AadmexdkcbhvcbhiadTmekcbhYabhXindna3aXclfydbg8Acx2fgeIdba3aXydbgLcx2fgQIdbgI:tg8Ra3aXcwfydbgEcx2fgKIdlaQIdlg8S:tgRNaKIdbaI:tg8UaeIdla8S:tg8VN:tg8Wa8WNa8VaKIdwaQIdwg8X:tg8YNaRaeIdwa8X:tg8VN:tgRaRNa8Va8UNa8Ya8RN:tg8Ra8RNMM:rg8UJbbbb9ETmba8Wa8U:vh8Wa8Ra8U:vh8RaRa8U:vhRkaqaAaLcdtfydbc8S2fgeaRa8U:rg8UaRNNg8VaeIdbMUdbaea8Ra8Ua8RNg8ZNg8YaeIdlMUdlaea8Wa8Ua8WNg80Ng81aeIdwMUdwaea8ZaRNg8ZaeIdxMUdxaea80aRNgBaeIdzMUdzaea80a8RNg80aeIdCMUdCaeaRa8Ua8Wa8XNaRaINa8Sa8RNMM:mg8SNgINgRaeIdKMUdKaea8RaINg8RaeId3MUd3aea8WaINg8WaeIdaMUdaaeaIa8SNgIaeId8KMUd8Kaea8UaeIdyMUdyaqaAa8Acdtfydbc8S2fgea8VaeIdbMUdbaea8YaeIdlMUdlaea81aeIdwMUdwaea8ZaeIdxMUdxaeaBaeIdzMUdzaea80aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdyaqaAaEcdtfydbc8S2fgea8VaeIdbMUdbaea8YaeIdlMUdlaea81aeIdwMUdwaea8ZaeIdxMUdxaeaBaeIdzMUdzaea80aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdyaXcxfhXaYcifgYad6mbkcbhzabhLinabazcdtfh8AcbhXinaCa8AaXc;a1jjbfydbcdtfydbgQfRbbhedndnaCaLaXfydbgKfRbbgYc99fcFeGcpe0mbaec99fcFeGc;:e6mekdnaYcufcFeGce0mba8JaKcdtfydbaQ9hmekdnaecufcFeGce0mba8KaQcdtfydbaK9hmekdnaYcv2aefc:G1jjbfRbbTmbaAaQcdtfydbaAaKcdtfydb0mekJbbacJbbacJbbjZaecFeGceSEaYceSEh80dna3a8AaXc;e1jjbfydbcdtfydbcx2fgeIdwa3aKcx2fgYIdwg8S:tg8Wa3aQcx2fgEIdwa8S:tgRaRNaEIdbaYIdbg8X:tg8Ra8RNaEIdlaYIdlg8V:tg8Ua8UNMMgINa8WaRNaeIdba8X:tg81a8RNa8UaeIdla8V:tg8ZNMMg8YaRN:tg8Wa8WNa81aINa8Ya8RN:tgRaRNa8ZaINa8Ya8UN:tg8Ra8RNMM:rg8UJbbbb9ETmba8Wa8U:vh8Wa8Ra8U:vh8RaRa8U:vhRkaqaAaKcdtfydbc8S2fgeaRa80aI:rNg8UaRNNg8YaeIdbMUdbaea8Ra8Ua8RNg80Ng81aeIdlMUdlaea8Wa8Ua8WNgINg8ZaeIdwMUdwaea80aRNg80aeIdxMUdxaeaIaRNgBaeIdzMUdzaeaIa8RNg83aeIdCMUdCaeaRa8Ua8Wa8SNaRa8XNa8Va8RNMM:mg8SNgINgRaeIdKMUdKaea8RaINg8RaeId3MUd3aea8WaINg8WaeIdaMUdaaeaIa8SNgIaeId8KMUd8Kaea8UaeIdyMUdyaqaAaQcdtfydbc8S2fgea8YaeIdbMUdbaea81aeIdlMUdlaea8ZaeIdwMUdwaea80aeIdxMUdxaeaBaeIdzMUdzaea83aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdykaXclfgXcx9hmbkaLcxfhLazcifgzad6mbka8LTmbcbhLinJbbbbh8Xa3abaLcdtfgeclfydbgEcx2fgXIdwa3aeydbgzcx2fgQIdwg8Z:tg8Ra8RNaXIdbaQIdbgB:tg8Wa8WNaXIdlaQIdlg83:tg8Ua8UNMMg80a3aecwfydbgHcx2fgeIdwa8Z:tgINa8Ra8RaINa8WaeIdbaB:tg8SNa8UaeIdla83:tg8VNMMgRN:tJbbbbJbbjZa80aIaINa8Sa8SNa8Va8VNMMg81NaRaRN:tg8Y:va8YJbbbb9BEg8YNhUa81a8RNaIaRN:ta8YNh85a80a8VNa8UaRN:ta8YNh86a81a8UNa8VaRN:ta8YNh87a80a8SNa8WaRN:ta8YNh88a81a8WNa8SaRN:ta8YNh89a8Wa8VNa8Sa8UN:tgRaRNa8UaINa8Va8RN:tgRaRNa8Ra8SNaIa8WN:tgRaRNMM:rJbbbZNhRagaza8L2gwcdtfhXagaHa8L2g8NcdtfhQagaEa8L2g5cdtfhKa8Z:mh8:a83:mhZaB:mhncbhYa8Lh8AJbbbbh8VJbbbbh8YJbbbbh80Jbbbbh81Jbbbbh8ZJbbbbhBJbbbbh83JbbbbhcJbbbbh9cinasc;WbfaYfgecwfaRa85aKIdbaXIdbgI:tg8UNaUaQIdbaI:tg8SNMg8RNUdbaeclfaRa87a8UNa86a8SNMg8WNUdbaeaRa89a8UNa88a8SNMg8UNUdbaecxfaRa8:a8RNaZa8WNaIana8UNMMMgINUdbaRa8Ra8WNNa81Mh81aRa8Ra8UNNa8ZMh8ZaRa8Wa8UNNaBMhBaRaIaINNa8XMh8XaRa8RaINNa8VMh8VaRa8WaINNa8YMh8YaRa8UaINNa80Mh80aRa8Ra8RNNa83Mh83aRa8Wa8WNNacMhcaRa8Ua8UNNa9cMh9caXclfhXaKclfhKaQclfhQaYczfhYa8Acufg8Ambkavazc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyavaEc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyavaHc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyaiawcltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaia5cltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaia8Ncltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaLcifgLad6mbkkcbhQdndnamcwGgJmbJbbbbh8Vcbh9ecbhocbhhxekcbh9ea8Fcbyd:m:jjjbHjjjjbbhhascxfasyd2gecdtfahBdbasaecefgXBd2ascxfaXcdtfcuahalabadaAz:fjjjbgKcltaKcjjjjiGEcbyd:m:jjjbHjjjjbbgoBdbasaecdfBd2aoaKaha3alz:gjjjbJFFuuh8VaKTmbaoheaKhXinaeIdbgRa8Va8VaR9EEh8VaeclfheaXcufgXmbkaKh9ekasydlhTdnalTmbaTclfheaTydbhKaChXalhYcbhQincbaeydbg8AaK9RaXRbbcpeGEaQfhQaXcefhXaeclfhea8AhKaYcufgYmbkaQce4hQkcuadaQ9RcifgScx2aSc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbhDascxfasyd2g9hcdtfaDBdbasa9hcefgeBd2ascxfaecdtfcuaScdtaScFFFFi0Ecbyd:m:jjjbHjjjjbbgrBdbasa9hcdfgeBd2ascxfaecdtfa8Fcbyd:m:jjjbHjjjjbbgyBdbasa9hcifgeBd2ascxfaecdtfalcbyd:m:jjjbHjjjjbbg9iBdbasa9hclfg6Bd2axaxNa8PJbbjZamclGEgUaUN:vh9cJbbbbhcdnadak9nmbdnaSci6mba8Lclth9kaDcwfh0Jbbbbh83JbbbbhcinasclfabadalaAz:cjjjbabhzcbh8Ecbh8Finaba8FcdtfhHcbheindnaAazaefydbgQcdtgEfydbgYaAaHaec;q1jjbfydbcdtfydbgXcdtgwfydbg8ASmbaCaXfRbbgLcv2aCaQfRbbgKfc;G1jjbfRbbg5aKcv2aLfg8Nc;G1jjbfRbbg8MVcFeGTmbdna8AaY9nmba8Nc:G1jjbfRbbcFeGmekaKcufhYdnaKaL9hmbaYcFeGce0mba8JaEfydbaX9hmekdndnaKclSmbaLcl9hmekdnaYcFeGce0mba8JaEfydbaX9hmdkaLcufcFeGce0mba8KawfydbaQ9hmekaDa8Ecx2fgKaXaQa8McFeGgYEBdlaKaQaXaYEBdbaKaYa5Gcb9hBdwa8Ecefh8Ekaeclfgecx9hmbkdna8Fcifg8Fad9pmbazcxfhza8EcifaS9nmekka8ETmdcbhLinaqaAaDaLcx2fgKydbgYcdtgzfydbc8S2fgeIdwa3aKydlg8Acx2fgXIdwg8WNaeIdzaXIdbg8UNaeIdaMgRaRMMa8WNaeIdlaXIdlgINaeIdCa8WNaeId3MgRaRMMaINaeIdba8UNaeIdxaINaeIdKMgRaRMMa8UNaeId8KMMM:lhRJbbbbJbbjZaeIdyg8R:va8RJbbbb9BEh8RdndnaKydwgEmbJFFuuh8YxekJbbbbJbbjZaqaAa8Acdtfydbc8S2fgeIdyg8S:va8SJbbbb9BEaeIdwa3aYcx2fgXIdwg8SNaeIdzaXIdbg8XNaeIdaMg8Ya8YMMa8SNaeIdlaXIdlg8YNaeIdCa8SNaeId3Mg8Sa8SMMa8YNaeIdba8XNaeIdxa8YNaeIdKMg8Sa8SMMa8XNaeId8KMMM:lNh8Yka8RaRNh80dna8LTmbavaYc8S2fgQIdwa8WNaQIdza8UNaQIdaMgRaRMMa8WNaQIdlaINaQIdCa8WNaQId3MgRaRMMaINaQIdba8UNaQIdxaINaQIdKMgRaRMMa8UNaQId8KMMMhRaga8Aa8L2gHcdtfhXaiaYa8L2gwcltfheaQIdyh8Sa8LhQinaXIdbg8Ra8Ra8SNaecxfIdba8WaecwfIdbNa8UaeIdbNaIaeclfIdbNMMMg8Ra8RM:tNaRMhRaXclfhXaeczfheaQcufgQmbkdndnaEmbJbbbbh8Rxekava8Ac8S2fgQIdwa3aYcx2fgeIdwg8UNaQIdzaeIdbgINaQIdaMg8Ra8RMMa8UNaQIdlaeIdlg8SNaQIdCa8UNaQId3Mg8Ra8RMMa8SNaQIdbaINaQIdxa8SNaQIdKMg8Ra8RMMaINaQId8KMMMh8RagawcdtfhXaiaHcltfheaQIdyh8Xa8LhQinaXIdbg8Wa8Wa8XNaecxfIdba8UaecwfIdbNaIaeIdbNa8SaeclfIdbNMMMg8Wa8WM:tNa8RMh8RaXclfhXaeczfheaQcufgQmbka8R:lh8Rka80aR:lMh80a8Ya8RMh8YaCaYfRbbcd9hmbdna8Ka8Ja8Jazfydba8ASEaaazfydbgHcdtfydbgzcu9hmbaaa8AcdtfydbhzkavaHc8S2fgQIdwa3azcx2fgeIdwg8WNaQIdzaeIdbg8UNaQIdaMgRaRMMa8WNaQIdlaeIdlgINaQIdCa8WNaQId3MgRaRMMaINaQIdba8UNaQIdxaINaQIdKMgRaRMMa8UNaQId8KMMMhRagaza8L2gwcdtfhXaiaHa8L2g8NcltfheaQIdyh8Sa8LhQinaXIdbg8Ra8Ra8SNaecxfIdba8WaecwfIdbNa8UaeIdbNaIaeclfIdbNMMMg8Ra8RM:tNaRMhRaXclfhXaeczfheaQcufgQmbkdndnaEmbJbbbbh8Rxekavazc8S2fgQIdwa3aHcx2fgeIdwg8UNaQIdzaeIdbgINaQIdaMg8Ra8RMMa8UNaQIdlaeIdlg8SNaQIdCa8UNaQId3Mg8Ra8RMMa8SNaQIdbaINaQIdxa8SNaQIdKMg8Ra8RMMaINaQId8KMMMh8Raga8NcdtfhXaiawcltfheaQIdyh8Xa8LhQinaXIdbg8Wa8Wa8XNaecxfIdba8UaecwfIdbNaIaeIdbNa8SaeclfIdbNMMMg8Wa8WM:tNa8RMh8RaXclfhXaeczfheaQcufgQmbka8R:lh8Rka80aR:lMh80a8Ya8RMh8YkaKa80a8Ya80a8Y9FgeEUdwaKa8AaYaeaETVgeEBdlaKaYa8AaeEBdbaLcefgLa8E9hmbkasc;Wbfcbcj;qbz:ojjjb8Aa0hea8EhXinasc;WbfaeydbcA4cF8FGgQcFAaQcFA6EcdtfgQaQydbcefBdbaecxfheaXcufgXmbkcbhecbhXinasc;WbfaefgQydbhKaQaXBdbaKaXfhXaeclfgecj;qb9hmbkcbhea0hXinasc;WbfaXydbcA4cF8FGgQcFAaQcFA6EcdtfgQaQydbgQcefBdbaraQcdtfaeBdbaXcxfhXa8Eaecefge9hmbkadak9RgQci9Uh9mdnalTmbcbheayhXinaXaeBdbaXclfhXalaecefge9hmbkkcbh9na9icbalz:ojjjbh8FaQcO9Uh9oa9mce4h9pasydwh9qcbh8Mcbh5dninaDara5cdtfydbcx2fg8NIdwgRa9c9Emea8Ma9m9pmeJFFuuh8Rdna9pa8E9pmbaDara9pcdtfydbcx2fIdwJbb;aZNh8RkdnaRa8R9ETmbaRac9ETmba8Ma9o0mdkdna8FaAa8NydlgHcdtg9rfydbgKfg9sRbba8FaAa8Nydbgzcdtg9tfydbgefg9uRbbVmbaCazfRbbh9vdnaTaecdtfgXclfydbgQaXydbgXSmbaQaX9RhYa3aKcx2fhLa3aecx2fhEa9qaXcitfhecbhXcehwdnindnayaeydbcdtfydbgQaKSmbayaeclfydbcdtfydbg8AaKSmbaQa8ASmba3a8Acx2fg8AIdba3aQcx2fgQIdbg8W:tgRaEIdlaQIdlg8U:tg8XNaEIdba8W:tg8Ya8AIdla8U:tg8RN:tgIaRaLIdla8U:tg80NaLIdba8W:tg81a8RN:tg8UNa8RaEIdwaQIdwg8S:tg8ZNa8Xa8AIdwa8S:tg8WN:tg8Xa8RaLIdwa8S:tgBNa80a8WN:tg8RNa8Wa8YNa8ZaRN:tg8Sa8Wa81NaBaRN:tgRNMMaIaINa8Xa8XNa8Sa8SNMMa8Ua8UNa8Ra8RNaRaRNMMN:rJbbj8:N9FmdkaecwfheaXcefgXaY6hwaYaX9hmbkkawceGTmba9pcefh9pxekdndndndna9vc9:fPdebdkazheinayaecdtgefaHBdbaaaefydbgeaz9hmbxikkdna8Ka8Ja8Ja9tfydbaHSEaaa9tfydbgzcdtfydbgecu9hmbaaa9rfydbhekaya9tfaHBdbaehHkayazcdtfaHBdbka9uce86bba9sce86bba8NIdwgRacacaR9DEhca9ncefh9ncecda9vceSEa8Mfh8Mka5cefg5a8E9hmbkka9nTmddnalTmbcbh8AcbhEindnayaEcdtgefydbgQaESmbaAaQcdtfydbhzdnaEaAaefydb9hgHmbaqazc8S2fgeaqaEc8S2fgXIdbaeIdbMUdbaeaXIdlaeIdlMUdlaeaXIdwaeIdwMUdwaeaXIdxaeIdxMUdxaeaXIdzaeIdzMUdzaeaXIdCaeIdCMUdCaeaXIdKaeIdKMUdKaeaXId3aeId3MUd3aeaXIdaaeIdaMUdaaeaXId8KaeId8KMUd8KaeaXIdyaeIdyMUdyka8LTmbavaQc8S2fgeavaEc8S2gwfgXIdbaeIdbMUdbaeaXIdlaeIdlMUdlaeaXIdwaeIdwMUdwaeaXIdxaeIdxMUdxaeaXIdzaeIdzMUdzaeaXIdCaeIdCMUdCaeaXIdKaeIdKMUdKaeaXId3aeId3MUd3aeaXIdaaeIdaMUdaaeaXId8KaeId8KMUd8KaeaXIdyaeIdyMUdya9kaQ2hLaihXa8LhKinaXaLfgeaXa8AfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaHmbJbbbbJbbjZaqawfgeIdygR:vaRJbbbb9BEaeIdwa3azcx2fgXIdwgRNaeIdzaXIdbg8RNaeIdaMg8Wa8WMMaRNaeIdlaXIdlg8WNaeIdCaRNaeId3MgRaRMMa8WNaeIdba8RNaeIdxa8WNaeIdKMgRaRMMa8RNaeId8KMMM:lNgRa83a83aR9DEh83ka8Aa9kfh8AaEcefgEal9hmbkcbhXa8JheindnaeydbgQcuSmbdnaXayaQcdtgKfydbgQ9hmbcuhQa8JaKfydbgKcuSmbayaKcdtfydbhQkaeaQBdbkaeclfhealaXcefgX9hmbkcbhXa8KheindnaeydbgQcuSmbdnaXayaQcdtgKfydbgQ9hmbcuhQa8KaKfydbgKcuSmbayaKcdtfydbhQkaeaQBdbkaeclfhealaXcefgX9hmbkka83aca8LEh83cbhKabhecbhYindnayaeydbcdtfydbgXayaeclfydbcdtfydbgQSmbaXayaecwfydbcdtfydbg8ASmbaQa8ASmbabaKcdtfgLaXBdbaLcwfa8ABdbaLclfaQBdbaKcifhKkaecxfheaYcifgYad6mbkdndnaJTmbaKak9nmba8Va839FTmbcbhdabhecbhXindnaoahaeydbgQcdtfydbcdtfIdba839ETmbabadcdtfgYaQBdbaYclfaeclfydbBdbaYcwfaecwfydbBdbadcifhdkaecxfheaXcifgXaK6mbkJFFuuh8Va9eTmeaohea9ehXJFFuuhRinaeIdbg8RaRaRa8R9EEg8WaRa8Ra839EgQEhRa8Wa8VaQEh8VaeclfheaXcufgXmbxdkkaKhdkadak0mbxdkkasclfabadalaAz:cjjjbkdndnadak0mbadhXxekdnaJmbadhXxekdna8Va9c9FmbadhXxekina8VJbb;aZNgRa9caRa9c9DEh8WJbbbbhRdna9eTmbaohea9ehAinaeIdbg8RaRa8Ra8W9FEaRa8RaR9EEhRaeclfheaAcufgAmbkkcbhXabhecbhAindnaoahaeydbgQcdtfydbcdtfIdba8W9ETmbabaXcdtfgKaQBdbaKclfaeclfydbBdbaKcwfaecwfydbBdbaXcifhXkaecxfheaAcifgAad6mbkJFFuuh8Vdna9eTmbaohea9ehAJFFuuh8RinaeIdbg8Ua8Ra8Ra8U9EEgIa8Ra8Ua8W9EgQEh8RaIa8VaQEh8VaeclfheaAcufgAmbkkdnaXad9hmbadhXxdkaRacacaR9DEhcaXak9nmeaXhda8Va9c9FmbkkdnamcjjjjlGTmbaOmbaXTmbcbh8AabheinaCaeydbgKfRbbc3thLaecwfgEydbhAdndna8JaKcdtgHfydbaeclfgzydbgQSmbcbhYa8KaQcdtfydbaK9hmekcjjjj94hYkaeaLaYVaKVBdbaCaQfRbbc3thLdndna8JaQcdtfydbaASmbcbhYa8KaAcdtfydbaQ9hmekcjjjj94hYkazaLaYVaQVBdbaCaAfRbbc3thYdndna8JaAcdtfydbaKSmbcbhQa8KaHfydbaA9hmekcjjjj94hQkaEaYaQVaAVBdbaecxfhea8Acifg8AaX6mbkkdnaOTmbaXTmbaXheinabaOabydbcdtfydbBdbabclfhbaecufgembkkdnaPTmbaPaUac:rNUdbka9hcdtascxffcxfhednina6Tmeaeydbcbyd1:jjjbH:bjjjbbaec98fhea6cufh6xbkkasc;W;qbf8KjjjjbaXk;Yieouabydlhvabydbclfcbaicdtz:ojjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfhearcufgrmbkkabydbcbBdbk:todDue99aicd4aifhrcehwinawgDcethwaDar6mbkcuaDcdtgraDcFFFFi0Ecbyd:m:jjjbHjjjjbbhwaoaoyd9GgqcefBd9GaoaqcdtfawBdbawcFearz:ojjjbhkdnaiTmbalcd4hlaDcufhxcbhminamhDdnavTmbavamcdtfydbhDkcbadaDal2cdtfgDydlgwawcjjjj94SEgwcH4aw7c:F:b:DD2cbaDydbgwawcjjjj94SEgwcH4aw7c;D;O:B8J27cbaDydwgDaDcjjjj94SEgDcH4aD7c:3F;N8N27axGhwamcdthPdndndnavTmbakawcdtfgrydbgDcuSmeadavaPfydbal2cdtfgsIdbhzcehqinaqhrdnadavaDcdtfydbal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmlkarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbxdkkakawcdtfgrydbgDcuSmbadamal2cdtfgsIdbhzcehqinaqhrdnadaDal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmikarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbkkaramBdbamhDkabaPfaDBdbamcefgmai9hmbkkakcbyd1:jjjbH:bjjjbbaoaoyd9GcufBd9GdnaeTmbaiTmbcbhDaehwinawaDBdbawclfhwaiaDcefgD9hmbkcbhDaehwindnaDabydbgrSmbawaearcdtfgrydbBdbaraDBdbkawclfhwabclfhbaiaDcefgD9hmbkkk;Qodvuv998Jjjjjbca9Rgvczfcwfcbyd11jjbBdbavcb8Pdj1jjb83izavcwfcbydN1jjbBdbavcb8Pd:m1jjb83ibdnadTmbaicd4hodnabmbdnalTmbcbhrinaealarcdtfydbao2cdtfhwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxikkaocdthrcbhwincbhiinavczfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbxdkkdnalTmbcbhrinabarcx2fgiaealarcdtfydbao2cdtfgwIdbUdbaiawIdlUdlaiawIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxdkkaocdthlcbhraehwinabarcx2fgiaearao2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawalfhwarcefgrad9hmbkkJbbbbavIdbavIdzgk:tgqaqJbbbb9DEgqavIdlavIdCgx:tgmamaq9DEgqavIdwavIdKgm:tgPaPaq9DEhPdnabTmbadTmbJbbbbJbbjZaP:vaPJbbbb9BEhqinabaqabIdbak:tNUdbabclfgvaqavIdbax:tNUdbabcwfgvaqavIdbam:tNUdbabcxfhbadcufgdmbkkaPk:ZlewudnaeTmbcbhvabhoinaoavBdbaoclfhoaeavcefgv9hmbkkdnaiTmbcbhrinadarcdtfhwcbhDinalawaDcdtgvc;a1jjbfydbcdtfydbcdtfydbhodnabalawavfydbcdtfydbgqcdtfgkydbgvaqSmbinakabavgqcdtfgxydbgvBdbaxhkaqav9hmbkkdnabaocdtfgkydbgvaoSmbinakabavgocdtfgxydbgvBdbaxhkaoav9hmbkkdnaqaoSmbabaqaoaqao0Ecdtfaqaoaqao6EBdbkaDcefgDci9hmbkarcifgrai6mbkkdnaembcbskcbhxindnalaxcdtgvfydbax9hmbaxhodnabavfgDydbgvaxSmbaDhqinaqabavgocdtfgkydbgvBdbakhqaoav9hmbkkaDaoBdbkaxcefgxae9hmbkcbhvabhocbhkindndnavalydbgq9hmbdnavaoydbgq9hmbaoakBdbakcefhkxdkaoabaqcdtfydbBdbxekaoabaqcdtfydbBdbkaoclfhoalclfhlaeavcefgv9hmbkakk;Jiilud99duabcbaecltz:ojjjbhvdnalTmbadhoaihralhwinarcwfIdbhDarclfIdbhqavaoydbcltfgkarIdbakIdbMUdbakclfgxaqaxIdbMUdbakcwfgxaDaxIdbMUdbakcxfgkakIdbJbbjZMUdbaoclfhoarcxfhrawcufgwmbkkdnaeTmbavhraehkinarcxfgoIdbhDaocbBdbararIdbJbbbbJbbjZaD:vaDJbbbb9BEgDNUdbarclfgoaDaoIdbNUdbarcwfgoaDaoIdbNUdbarczfhrakcufgkmbkkdnalTmbinavadydbcltfgrcxfgkaicwfIdbarcwfIdb:tgDaDNaiIdbarIdb:tgDaDNaiclfIdbarclfIdb:tgDaDNMMgDakIdbgqaqaD9DEUdbadclfhdaicxfhialcufglmbkkdnaeTmbavcxfhrinabarIdbUdbarczfhrabclfhbaecufgembkkk8MbabaeadaialavcbcbcbcbcbaoarawaDz:bjjjbk8MbabaeadaialavaoarawaDaqakaxamaPz:bjjjbk:DCoDud99rue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcxfcbc;Kbz:ojjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbgqBdxawceBd2aqaeadaicbz:ejjjb8AawcuadcdtadcFFFFi0Egkcbyd:m:jjjbHjjjjbbgxBdzawcdBd2adcd4adfhmceheinaegicetheaiam6mbkcbhPawcuaicdtgsaicFFFFi0Ecbyd:m:jjjbHjjjjbbgzBdCawciBd2dndnar:ZgH:rJbbbZMgO:lJbbb9p9DTmbaO:Ohexekcjjjj94hekaicufhAc:bwhmcbhCadhXcbhQinaChLaeamgKcufaeaK9iEaPgDcefaeaD9kEhYdndnadTmbaYcuf:YhOaqhiaxheadhmindndnaiIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ojjjbh3cbh5cbhPindna3axaPcdtfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbaeaCSmbcehiina3amaifaAGgmcdtfgEydbgecuSmeaicefhiaeaC9hmbkkaEaCBdba5aecuSfh5aPcefgPad9hmbxdkkazcFeasz:ojjjb8Acbh5kaDaYa5ar0giEhPaLa5aiEhCdna5arSmbaYaKaiEgmaP9Rcd9imbdndnaQcl0mbdnaX:ZgOaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa5:ZghaH:tNNNaOaH:taaNa8Aah:tNa8AaH:ta8FNahaO:tNM:va8EMJbbbZMgO:lJbbb9p9DTmbaO:Ohexdkcjjjj94hexekaPamfcd9Theka5aXaiEhXaQcefgQcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd:m:jjjbHjjjjbbg5BdKawclBd2aPcuf:Yh8AdndnadTmbaqhiaxheadhmindndnaiIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ojjjbh3cbhDcbhYindndndna3axaYcdtgKfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbcehiinaxaecdtgefydbaCSmdamaifheaicefhia3aeaAGgmcdtfgEydbgecu9hmbkkaEaYBdbaDhiaDcefhDxeka5aefydbhika5aKfaiBdbaYcefgYad9hmbkcuaDc32giaDc;j:KM;jb0EhexekazcFeasz:ojjjb8AcbhDcbhekawaecbyd:m:jjjbHjjjjbbgeBd3awcvBd2aecbaiz:ojjjbhEavcd4hKdnadTmbdnalTmbaKcdth3a5hCaqhealhmadhAinaEaCydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiamIdbaiIdxMUdxaiamclfIdbaiIdzMUdzaiamcwfIdbaiIdCMUdCaiaiIdKJbbjZMUdKaCclfhCaecxfheama3fhmaAcufgAmbxdkka5hmaqheadhCinaEamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaiIdxJbbbbMUdxaiaiIdzJbbbbMUdzaiaiIdCJbbbbMUdCaiaiIdKJbbjZMUdKamclfhmaecxfheaCcufgCmbkkdnaDTmbaEhiaDheinaiaiIdbJbbbbJbbjZaicKfIdbgO:vaOJbbbb9BEgONUdbaiclfgmaOamIdbNUdbaicwfgmaOamIdbNUdbaicxfgmaOamIdbNUdbaiczfgmaOamIdbNUdbaicCfgmaOamIdbNUdbaic3fhiaecufgembkkcbhCawcuaDcdtgYaDcFFFFi0Egicbyd:m:jjjbHjjjjbbgeBdaawcoBd2awaicbyd:m:jjjbHjjjjbbg3Bd8KaecFeaYz:ojjjbhxdnadTmbJbbjZJbbjZa8A:vaPceSEaoNgOaONh8AaKcdthPalheina8Aaec;81jjbalEgmIdwaEa5ydbgAc32fgiIdC:tgOaONamIdbaiIdx:tgOaONamIdlaiIdz:tgOaONMMNaqcwfIdbaiIdw:tgOaONaqIdbaiIdb:tgOaONaqclfIdbaiIdl:tgOaONMMMhOdndnaxaAcdtgifgmydbcuSmba3aifIdbaO9ETmekamaCBdba3aifaOUdbka5clfh5aqcxfhqaeaPfheadaCcefgC9hmbkkabaxaYz:njjjb8AcrhikaicdthiinaiTmeaic98fgiawcxffydbcbyd1:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Ydidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgvaDIdbgoaoav9EEUdbaladfgDavaDIdbgoaoav9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkJbbbbavavJbbbb9DEgvaoaoav9DEgvararav9DEk9DeeuabcFeaicdtz:ojjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbeeebeebebbeeebebbbbbebebbbbbbbbbebbbdbbbbbbbebbbebbbdbbbbbbbbbbbeeeeebebbebbebebbbeebbbbbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:GNbb",t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(e),{}).then(function(f){n=f.instance,n.exports.__wasm_call_ctors()});function o(f){for(var b=new Uint8Array(f.length),x=0;x96?I-97:I>64?I-39:I+4}for(var _=0,x=0;x=3),r(I>=0&&I<=f.length),r(I%3==0),r(_>=0);for(var S=0,R=0;R<(E?E.length:0);++R)r(E[R]in g),S|=g[E[R]];var G=f.BYTES_PER_ELEMENT==4?f:new Uint32Array(f),B=d(n.exports.meshopt_simplify,G,f.length,b,b.length/x,x*4,I,_,S);return B[0]=f instanceof Uint32Array?B[0]:new f.constructor(B[0]),B},simplifyWithAttributes:function(f,b,x,I,_,E,S,R,G,B){r(f instanceof Uint32Array||f instanceof Int32Array||f instanceof Uint16Array||f instanceof Int16Array),r(f.length%3==0),r(b instanceof Float32Array),r(b.length%x==0),r(x>=3),r(I instanceof Float32Array),r(I.length%_==0),r(_>=0),r(S==null||S instanceof Uint8Array),r(S==null||S.length==b.length/x),r(R>=0&&R<=f.length),r(R%3==0),r(G>=0),r(Array.isArray(E)),r(_>=E.length),r(E.length<=32);for(var w=0;w=0);for(var F=0,w=0;w<(B?B.length:0);++w)r(B[w]in g),F|=g[B[w]];var P=f.BYTES_PER_ELEMENT==4?f:new Uint32Array(f),A=u(n.exports.meshopt_simplifyWithAttributes,P,f.length,b,b.length/x,x*4,I,_*4,new Float32Array(E),S?new Uint8Array(S):null,R,G,F);return A[0]=f instanceof Uint32Array?A[0]:new f.constructor(A[0]),A},getScale:function(f,b){return r(f instanceof Float32Array),r(f.length%b==0),r(b>=3),h(n.exports.meshopt_simplifyScale,f,f.length/b,b*4)},simplifyPoints:function(f,b,x,I,_,E){return r(f instanceof Float32Array),r(f.length%b==0),r(b>=3),r(x>=0&&x<=f.length/b),I?(r(I instanceof Float32Array),r(I.length%_==0),r(_>=3),r(f.length/b==I.length/_),p(n.exports.meshopt_simplifyPoints,f,f.length/b,b*4,I,_*4,E,x)):p(n.exports.meshopt_simplifyPoints,f,f.length/b,b*4,void 0,0,0,x)}}}();var yln=y(C()),gln=function(){var e="b9H79TebbbeVx9Geueu9Geub9Gbb9Giuuueu9Gmuuuuuuuuuuu9999eu9Gvuuuuueu9Gwuuuuuuuub9Gxuuuuuuuuuuuueu9Gkuuuuuuuuuu99eu9Gouuuuuub9Gruuuuuuub9GluuuubiOHdilvorwDqqkbiibeilve9Weiiviebeoweuec;G:Odkr:Yewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9I919P29K9nW79O2Wt79c9V919U9KbeX9TW79O9V9Wt9F9I919P29K9nW79O2Wt7bo39TW79O9V9Wt9F9J9V9T9W91tWJ2917tWV9c9V919U9K7br39TW79O9V9Wt9F9J9V9T9W91tW9nW79O2Wt9c9V919U9K7bDL9TW79O9V9Wt9F9V9Wt9P9T9P96W9nW79O2Wtbql79IV9RbkDwebcekdsPq;Q9BHdbkIbabaec9:fgefcufae9Ugeabci9Uadfcufad9Ugbaeab0Ek:w8KDPue99eux99dui99euo99iu8Jjjjjbc:WD9Rgm8KjjjjbdndnalmbcbhPxekamc:Cwfcbc;Kbz:njjjb8Adndnalcb9imbaoal9nmbamcuaocdtaocFFFFi0Egscbyd;y1jjbHjjjjbbgzBd:CwamceBd;8wamascbyd;y1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;y1jjbHjjjjbbgOBd:KwamciBd;8waihsalhAinazasydbcdtfcbBdbasclfhsaAcufgAmbkaihsalhAinazasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkaihsalhCcbhXindnazasydbcdtgQfgAydbcb9imbaHaQfaXBdbaAaAydbgQcjjjj94VBdbaQaXfhXkasclfhsaCcufgCmbkalci9UhLdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhXaHaAydbcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaXcdtfgXaXydbgXcefBdbaOaXcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaihsalhAindnazasydbcdtgCfgXydbgQcu9kmbaXaQcFFFFrGgQBdbaHaCfgCaCydbaQ9RBdbkasclfhsaAcufgAmbxdkkamcuaocdtgsaocFFFFi0EgAcbyd;y1jjbHjjjjbbgzBd:CwamceBd;8wamaAcbyd;y1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;y1jjbHjjjjbbgOBd:KwamciBd;8wazcbasz:njjjbhXalci9UhLaihsalhAinaXasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkdnaoTmbcbhsaHhAaXhCaohQinaAasBdbaAclfhAaCydbasfhsaCclfhCaQcufgQmbkkdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhQaHaAydbcdtfgKaKydbgKcefBdbaOaKcdtfasBdbaHaQcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaoTmbcbhsaohAinaHasfgCaCydbaXasfydb9RBdbasclfhsaAcufgAmbkkamaLcbyd;y1jjbHjjjjbbgsBd:OwamclBd;8wascbaLz:njjjbhYamcuaLcK2alcjjjjd0Ecbyd;y1jjbHjjjjbbg8ABd:SwamcvBd;8wJbbbbhEdnalci6g3mbarcd4hKaihAa8AhsaLhrJbbbbh5inavaAclfydbaK2cdtfgCIdlh8EavaAydbaK2cdtfgXIdlhEavaAcwfydbaK2cdtfgQIdlh8FaCIdwhaaXIdwhhaQIdwhgasaCIdbg8JaXIdbg8KMaQIdbg8LMJbbnn:vUdbasclfaXIdlaCIdlMaQIdlMJbbnn:vUdbaQIdwh8MaCIdwh8NaXIdwhyascxfa8EaE:tg8Eagah:tggNa8FaE:tg8Faaah:tgaN:tgEJbbbbJbbjZa8Ja8K:tg8Ja8FNa8La8K:tg8Ka8EN:tghahNaEaENaaa8KNaga8JN:tgEaENMM:rg8K:va8KJbbbb9BEg8ENUdbasczfaEa8ENUdbascCfaha8ENUdbascwfa8Maya8NMMJbbnn:vUdba5a8KMh5aAcxfhAascKfhsarcufgrmbka5aL:Z:vJbbbZNhEkamcuaLcdtalcFFFF970Ecbyd;y1jjbHjjjjbbgCBd:WwamcoBd;8waEaq:ZNhEdna3mbcbhsaChAinaAasBdbaAclfhAaLascefgs9hmbkkaE:rhhcuh8PamcuaLcltalcFFFFd0Ecbyd;y1jjbHjjjjbbgIBd:0wamcrBd;8wcbaIa8AaCaLz:djjjb8AJFFuuhyJFFuuh8RJFFuuh8Sdnalci6gXmbJFFuuh8Sa8AhsaLhAJFFuuh8RJFFuuhyinascwfIdbgEayayaE9EEhyasclfIdbgEa8Ra8RaE9EEh8RasIdbgEa8Sa8SaE9EEh8SascKfhsaAcufgAmbkkahJbbbZNhgamaocetgscuaocu9kEcbyd;y1jjbHjjjjbbgABd:4waAcFeasz:njjjbhCdnaXmbcbhAJFFuuhEa8Ahscuh8PinascwfIdbay:tghahNasIdba8S:tghahNasclfIdba8R:tghahNMM:rghaEa8PcuSahaE9DVgXEhEaAa8PaXEh8PascKfhsaLaAcefgA9hmbkkamczfcbcjwz:njjjb8Aamcwf9cb83ibam9cb83ibagaxNhRJbbjZak:th8Ncbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80cbh81cbhPinJbbbbhEdna8UTmbJbbjZa8U:Z:vhEkJbbbbhhdna80a80Na8Ya8YNa8Za8ZNMMg8KJbbbb9BmbJbbjZa8K:r:vhhka8XaENh5a8WaENh8Fa8VaENhaa8PhQdndndndndna8UaPVTmbamydwgBTmea80ahNh8Ja8ZahNh8La8YahNh8Maeamydbcdtfh83cbh3JFFuuhEcvhXcuhQindnaza83a3cdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAindndnaCaiaAydbgKcx2fgsclfydbgrcetf8Vebcs4aCasydbgLcetf8Vebcs4faCascwfydbglcetf8Vebcs4fgombcbhsxekcehsazaLcdtfydbgLceSmbcehsazarcdtfydbgrceSmbcehsazalcdtfydbglceSmbdnarcdSaLcdSfalcdSfcd6mbaocefhsxekaocdfhskdnasaX9kmba8AaKcK2fgLIdwa5:thhaLIdla8F:th8KaLIdbaa:th8EdndnakJbbbb9DTmba8E:lg8Ea8K:lg8Ka8Ea8K9EEg8Kah:lgha8Kah9EEag:vJbbjZMhhxekahahNa8Ea8ENa8Ka8KNMM:rag:va8NNJbbjZMJ9VO:d86JbbjZaLIdCa8JNaLIdxa8MNa8LaLIdzNMMakN:tghahJ9VO:d869DENhhkaKaQasaX6ahaE9DVgLEhQasaXaLEhXahaEaLEhEkaAclfhAavcufgvmbkka3cefg3aB9hmbkkaQcu9hmekama5Ud:ODama8FUd:KDamaaUd:GDamcuBd:qDamcFFF;7rBdjDaIcba8AaYamc:GDfakJbbbb9Damc:qDfamcjDfz:ejjjbamyd:qDhQdndnaxJbbbb9ETmba8UaD6mbaQcuSmeceh3amIdjDaR9EmixdkaQcu9hmekdna8UTmbdnamydlgza8Uci2fgsciGTmbadasfcba8Uazcu7fciGcefz:njjjb8AkabaPcltfgzam8Pib83dbazcwfamcwf8Pib83dbaPcefhPkc3hzinazc98Smvamc:Cwfazfydbcbyd;u1jjbH:bjjjbbazc98fhzxbkkcbh3a8Uaq9pmbamydwaCaiaQcx2fgsydbcetf8Vebcs4aCascwfydbcetf8Vebcs4faCasclfydbcetf8Vebcs4ffaw9nmekcbhscbhAdna81TmbcbhAamczfhXinamczfaAcdtfaXydbgLBdbaXclfhXaAaYaLfRbbTfhAa81cufg81mbkkamydwhlamydbhXam9cu83i:GDam9cu83i:ODam9cu83i:qDam9cu83i:yDaAc;8eaAclfc:bd6Eh81inamcjDfasfcFFF;7rBdbasclfgscz9hmbka81cdthBdnalTmbaeaXcdtfhocbhrindnazaoarcdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAcuhLcuhsinazaiaAydbgKcx2fgXclfydbcdtfydbazaXydbcdtfydbfazaXcwfydbcdtfydbfgXasaXas6gXEhsaKaLaXEhLaAclfhAavcufgvmbkaLcuSmba8AaLcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEcbhAindndnasamc:qDfaAfgvydbgX6mbasaX9hmeaEamcjDfaAfIdb9FTmekavasBdbamc:GDfaAfaLBdbamcjDfaAfaEUdbxdkaAclfgAcz9hmbkkarcefgral9hmbkkamczfaBfhLcbhscbhAindnamc:GDfasfydbgXcuSmbaLaAcdtfaXBdbaAcefhAkasclfgscz9hmbkaAa81fg81TmbJFFuuhhcuhKamczfhsa81hvcuhLina8AasydbgXcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEdndnazaiaXcx2fgAclfydbcdtfydbazaAydbcdtfydbfazaAcwfydbcdtfydbfgAaL6mbaAaL9hmeaEah9DTmekaEhhaAhLaXhKkasclfhsavcufgvmbkaKcuSmbaKhQkdnamaiaQcx2fgrydbarclfydbarcwfydbaCabaeadaPawaqa3z:fjjjbTmbaPcefhPJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80kcbhXinaOaHaraXcdtfydbcdtgAfydbcdtfgKhsazaAfgvydbgLhAdnaLTmbdninasydbaQSmeasclfhsaAcufgATmdxbkkasaKaLcdtfc98fydbBdbavavydbcufBdbkaXcefgXci9hmbka8AaQcK2fgsIdbhEasIdlhhasIdwh8KasIdxh8EasIdzh5asIdCh8FaYaQfce86bba80a8FMh80a8Za5Mh8Za8Ya8EMh8Ya8Xa8KMh8Xa8WahMh8Wa8VaEMh8Vamydxh8Uxbkkamc:WDf8KjjjjbaPk;Vvivuv99lu8Jjjjjbca9Rgv8Kjjjjbdndnalcw0mbaiydbhoaeabcitfgralcdtcufBdlaraoBdbdnalcd6mbaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkkalabfhrxekcbhDavczfcwfcbBdbav9cb83izavcwfcbBdbav9cb83ibJbbjZhqJbbjZhkinadaiaDcdtfydbcK2fhwcbhrinavczfarfgoawarfIdbgxaoIdbgm:tgPakNamMgmUdbavarfgoaPaxam:tNaoIdbMUdbarclfgrcx9hmbkJbbjZaqJbbjZMgq:vhkaDcefgDal9hmbkcbhoadcbcecdavIdlgxavIdwgm9GEgravIdbgPam9GEaraPax9GEgscdtgrfhzavczfarfIdbhxaihralhwinaiaocdtfgDydbhHaDarydbgOBdbaraHBdbarclfhraoazaOcK2fIdbax9Dfhoawcufgwmbkaeabcitfhrdndnaocv6mbaoalc98f6mekaraiydbBdbaralcdtcufBdlaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkalabfhrxekaraxUdbararydlc98GasVBdlabcefaeadaiaoz:djjjbhwararydlciGawabcu7fcdtVBdlawaeadaiaocdtfalao9Rz:djjjbhrkavcaf8Kjjjjbark:;idiud99dndnabaecitfgwydlgDciGgqciSmbinabcbaDcd4gDalaqcdtfIdbawIdb:tgkJbbbb9FEgwaecefgefadaialavaoarz:ejjjbak:larIdb9FTmdabawaD7aefgecitfgwydlgDciGgqci9hmbkkabaecitfgeclfhbdnavmbcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdwalIdw:tgkakNaqIdbalIdb:tgkakNaqIdlalIdl:tgkakNMM:rgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbxdkkcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdbalIdb:t:lgkaqIdlalIdl:t:lgxakax9EEgkaqIdwalIdw:t:lgxakax9EEgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbkkk;llevudnabydwgxaladcetfgm8Vebcs4alaecetfgP8Vebgscs4falaicetfgz8Vebcs4ffaD0abydxaq9pVakVgDce9hmbavawcltfgxab8Pdb83dbaxcwfabcwfgx8Pdb83dbdnaxydbgqTmbaoabydbcdtfhxaqhsinalaxydbcetfcFFi87ebaxclfhxascufgsmbkkdnabydxglci2gsabydlgxfgkciGTmbarakfcbalaxcu7fciGcefz:njjjb8Aabydxci2hsabydlhxabydwhqkab9cb83dwababydbaqfBdbabascifc98GaxfBdlaP8Vebhscbhxkdnascztcz91cu9kmbabaxcefBdwaPax87ebaoabydbcdtfaxcdtfaeBdbkdnam8Uebcu9kmbababydwgxcefBdwamax87ebaoabydbcdtfaxcdtfadBdbkdnaz8Uebcu9kmbababydwgxcefBdwazax87ebaoabydbcdtfaxcdtfaiBdbkarabydlfabydxci2faPRbb86bbarabydlfabydxci2fcefamRbb86bbarabydlfabydxci2fcdfazRbb86bbababydxcefBdxaDk8LbabaeadaialavaoarawaDaDaqJbbbbz:cjjjbk;Nkovud99euv99eul998Jjjjjbc:W;ae9Rgo8KjjjjbdndnadTmbavcd4hrcbhwcbhDindnaiaeclfydbar2cdtfgvIdbaiaeydbar2cdtfgqIdbgk:tgxaiaecwfydbar2cdtfgmIdlaqIdlgP:tgsNamIdbak:tgzavIdlaP:tgPN:tgkakNaPamIdwaqIdwgH:tgONasavIdwaH:tgHN:tgPaPNaHazNaOaxN:tgxaxNMM:rgsJbbbb9Bmbaoc:W:qefawcx2fgAakas:vUdwaAaxas:vUdlaAaPas:vUdbaoc8Wfawc8K2fgAaq8Pdb83dbaAav8Pdb83dxaAam8Pdb83dKaAcwfaqcwfydbBdbaAcCfavcwfydbBdbaAcafamcwfydbBdbawcefhwkaecxfheaDcifgDad6mbkab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbawTmeaocbBd8Sao9cb83iKao9cb83izaoczfaoc8Wfawci2cxaoc8Sfcbcrz1jjjbaoIdKhCaoIdChXaoIdzhQao9cb83iwao9cb83ibaoaoc:W:qefawcxaoc8Sfcbciz1jjjbJbbjZhkaoIdwgPJbbbbJbbjZaPaPNaoIdbgPaPNaoIdlgsasNMM:rgx:vaxJbbbb9BEgzNhxasazNhsaPazNhzaoc:W:qefheawhvinaecwfIdbaxNaeIdbazNasaeclfIdbNMMgPakaPak9DEhkaecxfheavcufgvmbkabaCUdwabaXUdlabaQUdbabaoId3UdxdndnakJ;n;m;m899FmbJbbbbhPaoc:W:qefheaoc8WfhvinaCavcwfIdb:taecwfIdbgHNaQavIdb:taeIdbgONaXavclfIdb:taeclfIdbgLNMMaxaHNazaONasaLNMM:vgHaPaHaP9EEhPavc8KfhvaecxfheawcufgwmbkabaxUd8KabasUdaabazUd3abaCaxaPN:tUdKabaXasaPN:tUdCabaQazaPN:tUdzabJbbjZakakN:t:rgkUdydndnaxJbbj:;axJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;axJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohexekcjjjj94hekabae86b8UdndnasJbbj:;asJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;asJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabav86bRdndnazJbbj:;azJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;azJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohqxekcjjjj94hqkabaq86b8SdndnaecKtcK91:YJbb;:9c:vax:t:lavcKtcK91:YJbb;:9c:vas:t:laqcKtcK91:YJbb;:9c:vaz:t:lakMMMJbb;:9cNJbbjZMgk:lJbbb9p9DTmbak:Ohexekcjjjj94hekaecFbaecFb9iEhexekabcjjj;8iBdycFbhekabae86b8Vxekab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbkaoc:W;aef8Kjjjjbk;Iwwvul99iud99eue99eul998Jjjjjbcje9Rgr8Kjjjjbavcd4hwaicd4hDdndnaoTmbarc;abfcbaocdtgvz:njjjb8Aarc;Gbfcbavz:njjjb8AarhvarcafhiaohqinavcFFF97BdbaicFFF;7rBdbaiclfhiavclfhvaqcufgqmbkdnadTmbcbhkinaeakaD2cdtfgvIdwhxavIdlhmavIdbhPalakaw2cdtfIdbhsarc;abfhzarhiarc;GbfhHarcafhqcj1jjbhvaohOinasavcwfIdbaxNavIdbaPNavclfIdbamNMMgAMhCakhXdnaAas:tgAaqIdbgQ9DgLmbaHydbhXkaHaXBdbakhXdnaCaiIdbgK9EmbazydbhXaKhCkazaXBdbaiaCUdbaqaAaQaLEUdbavcxfhvaqclfhqaHclfhHaiclfhiazclfhzaOcufgOmbkakcefgkad9hmbkkadThkJbbbbhCcbhXarc;abfhvarc;Gbfhicbhqinalavydbgzaw2cdtfIdbalaiydbgHaw2cdtfIdbaeazaD2cdtfgzIdwaeaHaD2cdtfgHIdw:tgsasNazIdbaHIdb:tgsasNazIdlaHIdl:tgsasNMM:rMMgsaCasaC9EgzEhCaqaXazEhXaiclfhiavclfhvaoaqcefgq9hmbkaCJbbbZNhKxekadThkcbhXJbbbbhKkJbbbbhCdnaearc;abfaXcdtgifydbgqaD2cdtfgvIdwaearc;GbfaifydbgzaD2cdtfgiIdwgm:tgsasNavIdbaiIdbgY:tgAaANavIdlaiIdlgP:tgQaQNMM:rgxJbbbb9ETmbaxalaqaw2cdtfIdbMalazaw2cdtfIdb:taxaxM:vhCkasaCNamMhmaQaCNaPMhPaAaCNaYMhYdnakmbaDcdthvawcdthiindnalIdbg8AaecwfIdbam:tgCaCNaeIdbaY:tgsasNaeclfIdbaP:tgAaANMM:rgQMgEaK9ETmbJbbbbhxdnaQJbbbb9ETmbaEaK:taQaQM:vhxkaxaCNamMhmaxaANaPMhPaxasNaYMhYa8AaKaQMMJbbbZNhKkaeavfhealaifhladcufgdmbkkabaKUdxabamUdwabaPUdlabaYUdbarcjef8Kjjjjbkjeeiu8Jjjjjbcj8W9Rgr8Kjjjjbaici2hwdnaiTmbawceawce0EhDarhiinaiaeadRbbcdtfydbBdbadcefhdaiclfhiaDcufgDmbkkabarawaladaoz:hjjjbarcj8Wf8Kjjjjbk:3lequ8JjjjjbcjP9Rgl8Kjjjjbcbhvalcjxfcbaiz:njjjb8AdndnadTmbcjehoaehrincuhwarhDcuhqavhkdninawakaoalcjxfaDcefRbbfRbb9RcFeGci6aoalcjxfaDRbbfRbb9RcFeGci6faoalcjxfaDcdfRbbfRbb9RcFeGci6fgxaq9mgmEhwdnammbaxce0mdkaxaqaxaq9kEhqaDcifhDadakcefgk9hmbkkaeawci2fgDcdfRbbhqaDcefRbbhxaDRbbhkaeavci2fgDcifaDawav9Rci2z:qjjjb8Aakalcjxffaocefgo86bbaxalcjxffao86bbaDcdfaq86bbaDcefax86bbaDak86bbaqalcjxffao86bbarcifhravcefgvad9hmbkalcFeaicetz:njjjbhoadci2gDceaDce0EhqcbhxindnaoaeRbbgkcetfgw8UebgDcu9kmbawax87ebaocjlfaxcdtfabakcdtfydbBdbaxhDaxcefhxkaeaD86bbaecefheaqcufgqmbkaxcdthDxekcbhDkabalcjlfaDz:mjjjb8AalcjPf8Kjjjjbk9teiucbcbyd;C1jjbgeabcifc98GfgbBd;C1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;C1jjbgeabcrfc94GfgbBd;C1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;C1jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;C1jjbfgdBd;C1jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk:;Deludndndnadch9pmbabaeSmdaeabadfgi9Rcbadcet9R0mekabaead;8qbbxekaeab7ciGhldndndnabae9pmbdnalTmbadhvabhixikdnabciGmbadhvabhixdkadTmiabaeRbb86bbadcufhvdnabcefgiciGmbaecefhexdkavTmiabaeRbe86beadc9:fhvdnabcdfgiciGmbaecdfhexdkavTmiabaeRbd86bdadc99fhvdnabcifgiciGmbaecifhexdkavTmiabaeRbi86biabclfhiaeclfheadc98fhvxekdnalmbdnaiciGTmbadTmlabadcufgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc9:fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc99fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc98fgdfaeadfRbb86bbkadcl6mbdnadc98fgocd4cefciGgiTmbaec98fhlabc98fhvinavadfaladfydbBdbadc98fhdaicufgimbkkaocx6mbaec9Wfhvabc9WfhoinaoadfgicxfavadfglcxfydbBdbaicwfalcwfydbBdbaiclfalclfydbBdbaialydbBdbadc9Wfgdci0mbkkadTmdadhidnadciGglTmbaecufhvabcufhoadhiinaoaifavaifRbb86bbaicufhialcufglmbkkadcl6mdaec98fhlabc98fhvinavaifgecifalaifgdcifRbb86bbaecdfadcdfRbb86bbaecefadcefRbb86bbaeadRbb86bbaic98fgimbxikkavcl6mbdnavc98fglcd4cefcrGgdTmbavadcdt9RhvinaiaeydbBdbaeclfheaiclfhiadcufgdmbkkalc36mbinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaiaeydzBdzaiaeydCBdCaiaeydKBdKaiaeyd3Bd3aecafheaicafhiavc9Gfgvci0mbkkavTmbdndnavcrGgdmbavhlxekavc94GhlinaiaeRbb86bbaicefhiaecefheadcufgdmbkkavcw6mbinaiaeRbb86bbaiaeRbe86beaiaeRbd86bdaiaeRbi86biaiaeRbl86blaiaeRbv86bvaiaeRbo86boaiaeRbr86braicwfhiaecwfhealc94fglmbkkabkk9Tdbcjwk9ubbjZbbbbbbbbbbbbbbjZbbbbbbbbbbbbbbjZ86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;bc;uwkxebbbdbbb9GNbb",t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(e),{}).then(function(f){n=f.instance,n.exports.__wasm_call_ctors()});function o(f){for(var b=new Uint8Array(f.length),x=0;x96?I-97:I>64?I-39:I+4}for(var _=0,x=0;x=3),r(I<=256||I>0),r(_<=512),r(_%4==0),E=E||0;var S=f.BYTES_PER_ELEMENT==4?f:new Uint32Array(f);return u(S,b,b.length/x,x*4,I,_,E)},computeClusterBounds:function(f,b,x){r(f.length%3==0),r(f.length/3<=512),r(b instanceof Float32Array),r(b.length%x==0),r(x>=3);var I=f.BYTES_PER_ELEMENT==4?f:new Uint32Array(f);return g(I,b,b.length/x,x*4)},computeMeshletBounds:function(f,b,x){return r(f.meshletCount!=0),r(b instanceof Float32Array),r(b.length%x==0),r(x>=3),p(f,b,b.length/x,x*4)},extractMeshlet:function(f,b){return r(b>=0&&b{$r._error=t}),$r._decoderTaskProcessor=e}return $r._decoderTaskProcessor};$r.decodePointCloud=function(e){let t=$r._getDecoderTaskProcessor();if(l($r._error))throw $r._error;if($r._taskProcessorReady)return t.scheduleTask(e,[e.buffer.buffer])};$r.decodeBufferView=function(e){let t=$r._getDecoderTaskProcessor();if(l($r._error))throw $r._error;if($r._taskProcessorReady)return t.scheduleTask(e,[e.array.buffer])};var TA=$r;var Qln=y(C(),1);var On={POSITION:"POSITION",NORMAL:"NORMAL",TANGENT:"TANGENT",TEXCOORD:"TEXCOORD",COLOR:"COLOR",JOINTS:"JOINTS",WEIGHTS:"WEIGHTS",FEATURE_ID:"_FEATURE_ID",SCALE:"_SCALE",ROTATION:"_ROTATION"};function NMe(e){switch(e){case On.POSITION:return"positionMC";case On.NORMAL:return"normalMC";case On.TANGENT:return"tangentMC";case On.TEXCOORD:return"texCoord";case On.COLOR:return"color";case On.JOINTS:return"joints";case On.WEIGHTS:return"weights";case On.FEATURE_ID:return"featureId";case On.SCALE:return"scale";case On.ROTATION:return"rotation"}}On.hasSetIndex=function(e){switch(e){case On.POSITION:case On.NORMAL:case On.TANGENT:return!1;case On.TEXCOORD:case On.COLOR:case On.JOINTS:case On.WEIGHTS:case On.FEATURE_ID:case On.SCALE:case On.ROTATION:return!0}};On.fromGltfSemantic=function(e){let t=e,i=/^(\w+)_\d+$/.exec(e);switch(i!==null&&(t=i[1]),t){case"POSITION":return On.POSITION;case"NORMAL":return On.NORMAL;case"TANGENT":return On.TANGENT;case"TEXCOORD":return On.TEXCOORD;case"COLOR":return On.COLOR;case"JOINTS":return On.JOINTS;case"WEIGHTS":return On.WEIGHTS;case"_FEATURE_ID":return On.FEATURE_ID;case"_SCALE":return On.SCALE;case"_ROTATION":return On.ROTATION}};On.fromPntsSemantic=function(e){switch(e){case"POSITION":case"POSITION_QUANTIZED":return On.POSITION;case"RGBA":case"RGB":case"RGB565":return On.COLOR;case"NORMAL":case"NORMAL_OCT16P":return On.NORMAL;case"BATCH_ID":return On.FEATURE_ID}};On.getGlslType=function(e){switch(e){case On.POSITION:case On.NORMAL:case On.TANGENT:return"vec3";case On.TEXCOORD:return"vec2";case On.COLOR:return"vec4";case On.JOINTS:return"ivec4";case On.WEIGHTS:return"vec4";case On.FEATURE_ID:return"int";case On.SCALE:return"vec3";case On.ROTATION:return"vec4";case On.OPACITY:return"float"}};On.getVariableName=function(e,t){let n=NMe(e);return l(t)&&(n+=`_${t}`),n};var lt=Object.freeze(On);function vb(e){e=e??Y.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.primitive,o=e.draco,r=e.gltfResource,s=e.baseResource,a=e.cacheKey;this._resourceCache=t,this._gltfResource=r,this._baseResource=s,this._gltf=n,this._primitive=i,this._draco=o,this._cacheKey=a,this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodePromise=void 0,this._decodedData=void 0,this._state=ft.UNLOADED,this._promise=void 0,this._dracoError=void 0}l(Object.create)&&(vb.prototype=Object.create(Yi.prototype),vb.prototype.constructor=vb);Object.defineProperties(vb.prototype,{cacheKey:{get:function(){return this._cacheKey}},decodedData:{get:function(){return this._decodedData}}});async function DMe(e){let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._draco.bufferView,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._bufferViewTypedArray=n.typedArray,e._state=ft.PROCESSING,e)}catch(n){if(e.isDestroyed())return;Zse(e,n)}}vb.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=ft.LOADING,this._promise=DMe(this),this._promise)};function Zse(e,t){throw e.unload(),e._state=ft.FAILED,e.getError("Failed to load Draco",t)}async function QMe(e,t){try{let n=await t;return e.isDestroyed()?void 0:(e.unload(),e._decodedData={indices:n.indexArray,vertexAttributes:n.attributeData},e._state=ft.READY,e._baseResource)}catch(n){if(e.isDestroyed())return;e._dracoError=n}}var WC={};WC[lt.POSITION]="POSITION";WC[lt.NORMAL]="NORMAL";WC[lt.COLOR]="COLOR";WC[lt.TEXCOORD]="TEX_COORD";function UMe(e){for(let t in WC)if(WC.hasOwnProperty(t)&&e.startsWith(t))return WC[t]}vb.prototype.process=function(e){if(this._state===ft.READY)return!0;if(this._state!==ft.PROCESSING||(l(this._dracoError)&&Zse(this,this._dracoError),!l(this._bufferViewTypedArray))||l(this._decodePromise))return!1;let t=this._draco,n=this._primitive,i=this._gltf,o=i.bufferViews,r=t.bufferView,s=o[r],a=t.attributes,c=[];for(let h in n.attributes)if(n.attributes.hasOwnProperty(h)){let p=UMe(h);l(p)&&i.accessors[n.attributes[h]].componentType===J.FLOAT&&(c.includes(p)||c.push(p))}let d={array:new Uint8Array(this._bufferViewTypedArray),bufferView:s,compressedAttributes:a,dequantizeInShader:!0,attributesToSkipTransform:c},u=TA.decodeBufferView(d);if(!l(u))return!1;this._decodePromise=QMe(this,u)};vb.prototype.unload=function(){l(this._bufferViewLoader)&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodedData=void 0,this._gltf=void 0,this._primitive=void 0};var hE=vb;var ddn=y(C(),1);var tdn=y(C(),1);function kMe(e){let t=e.uint8Array,n=e.format,i=e.request,o=e.flipY??!1,r=e.skipColorSpaceConversion??!1,s=new Blob([t],{type:n}),a;return Ve.supportsImageBitmapOptions().then(function(c){return c?Promise.resolve(Ve.createImageBitmapFromBlob(s,{flipY:o,premultiplyAlpha:!1,skipColorSpaceConversion:r})):(a=window.URL.createObjectURL(s),new Ve({url:a,request:i}).fetchImage({flipY:o,skipColorSpaceConversion:r}))}).then(function(c){return l(a)&&window.URL.revokeObjectURL(a),c}).catch(function(c){return l(a)&&window.URL.revokeObjectURL(a),Promise.reject(c)})}var FC=kMe;function SA(e){e=e??Y.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.imageId,o=e.gltfResource,r=e.baseResource,s=e.cacheKey,a=n.images[i],c=a.bufferView,d=a.uri;this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._gltf=n,this._bufferViewId=c,this._uri=d,this._cacheKey=s,this._bufferViewLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._state=ft.UNLOADED,this._promise=void 0}l(Object.create)&&(SA.prototype=Object.create(Yi.prototype),SA.prototype.constructor=SA);Object.defineProperties(SA.prototype,{cacheKey:{get:function(){return this._cacheKey}},image:{get:function(){return this._image}},mipLevels:{get:function(){return this._mipLevels}}});SA.prototype.load=function(){return l(this._promise)?this._promise:l(this._bufferViewId)?(this._promise=YMe(this),this._promise):(this._promise=OMe(this),this._promise)};function Bse(e){let t;return Array.isArray(e)&&(t=e.slice(1,e.length).map(function(n){return n.bufferView}),e=e[0]),{image:e,mipLevels:t}}async function YMe(e){e._state=ft.LOADING;let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._bufferViewId,gltfResource:e._gltfResource,baseResource:e._baseResource});if(e._bufferViewLoader=n,await n.load(),e.isDestroyed())return;let i=n.typedArray,o=await zMe(i);if(e.isDestroyed())return;let r=Bse(o);return e.unload(),e._image=r.image,e._mipLevels=r.mipLevels,e._state=ft.READY,e}catch(n){return e.isDestroyed()?void 0:wse(e,n,"Failed to load embedded image")}}async function OMe(e){e._state=ft.LOADING;let t=e._baseResource,n=e._uri,i=t.getDerivedResource({url:n});try{let o=await JMe(i);if(e.isDestroyed())return;let r=Bse(o);return e.unload(),e._image=r.image,e._mipLevels=r.mipLevels,e._state=ft.READY,e}catch(o){return e.isDestroyed()?void 0:wse(e,o,`Failed to load image: ${n}`)}}function wse(e,t,n){return e.unload(),e._state=ft.FAILED,Promise.reject(e.getError(n,t))}function HMe(e){let t=e.subarray(0,2),n=e.subarray(0,4),i=e.subarray(8,12);if(t[0]===255&&t[1]===216)return"image/jpeg";if(t[0]===137&&t[1]===80)return"image/png";if(t[0]===171&&t[1]===75)return"image/ktx2";if(n[0]===82&&n[1]===73&&n[2]===70&&n[3]===70&&i[0]===87&&i[1]===69&&i[2]===66&&i[3]===80)return"image/webp";throw new de("Image format is not recognized")}async function zMe(e){let t=HMe(e);if(t==="image/ktx2"){let n=new Uint8Array(e);return Kl(n)}return SA._loadImageFromTypedArray({uint8Array:e,format:t,flipY:!1,skipColorSpaceConversion:!0})}var KMe=/(^data:image\/ktx2)|(\.ktx2$)/i;function JMe(e){let t=e.getUrlComponent(!1,!0);return KMe.test(t)?Kl(e):e.fetchImage({skipColorSpaceConversion:!0,preferImageBitmap:!0})}SA.prototype.unload=function(){l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._uri=void 0,this._image=void 0,this._mipLevels=void 0,this._gltf=void 0};SA._loadImageFromTypedArray=FC;var fE=SA;var Edn=y(C(),1);var mdn=y(C(),1),jMe={TEXTURE:0,PROGRAM:1,BUFFER:2,NUMBER_OF_JOB_TYPES:3},uc=Object.freeze(jMe);function Nb(e){e=e??Y.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.accessorId,o=e.gltfResource,r=e.baseResource,s=e.primitive,a=e.draco,c=e.cacheKey,d=e.asynchronous??!0,u=e.loadBuffer??!1,h=e.loadTypedArray??!1,p=n.accessors[i].componentType;this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._gltf=n,this._accessorId=i,this._indexDatatype=p,this._primitive=s,this._draco=a,this._cacheKey=c,this._asynchronous=d,this._loadBuffer=u,this._loadTypedArray=h,this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._state=ft.UNLOADED,this._promise=void 0}l(Object.create)&&(Nb.prototype=Object.create(Yi.prototype),Nb.prototype.constructor=Nb);Object.defineProperties(Nb.prototype,{cacheKey:{get:function(){return this._cacheKey}},buffer:{get:function(){return this._buffer}},typedArray:{get:function(){return this._typedArray}},indexDatatype:{get:function(){return this._indexDatatype}}});var qMe=new lz;Nb.prototype.load=async function(){return l(this._promise)?this._promise:l(this._draco)?(this._promise=$Me(this),this._promise):(this._promise=eve(this),this._promise)};async function $Me(e){e._state=ft.LOADING;let t=e._resourceCache;try{let n=t.getDracoLoader({gltf:e._gltf,primitive:e._primitive,draco:e._draco,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._dracoLoader=n,await n.load(),e.isDestroyed()?void 0:(e._state=ft.LOADED,e)}catch(n){if(e.isDestroyed())return;cz(e,n)}}async function eve(e){let t=e._gltf,n=e._accessorId,o=t.accessors[n].bufferView;e._state=ft.LOADING;let r=e._resourceCache;try{let s=r.getBufferViewLoader({gltf:t,bufferViewId:o,gltfResource:e._gltfResource,baseResource:e._baseResource});if(e._bufferViewLoader=s,await s.load(),e.isDestroyed())return;let a=s.typedArray;return e._typedArray=tve(e,a),e._state=ft.PROCESSING,e}catch(s){if(e.isDestroyed())return;cz(e,s)}}function tve(e,t){let n=e._gltf,i=e._accessorId,o=n.accessors[i],r=o.count,s=o.componentType,a=Me.getSizeInBytes(s),c=t.buffer,d=t.byteOffset+o.byteOffset;if(d%a!==0){let h=r*a,p=new Uint8Array(c,d,h);c=new Uint8Array(p).buffer,d=0,_r("index-buffer-unaligned",`The index array is not aligned to a ${a}-byte boundary.`)}let u;return s===Me.UNSIGNED_BYTE?u=new Uint8Array(c,d,r):s===Me.UNSIGNED_SHORT?u=new Uint16Array(c,d,r):s===Me.UNSIGNED_INT&&(u=new Uint32Array(c,d,r)),u}function cz(e,t){throw e.unload(),e._state=ft.FAILED,e.getError("Failed to load index buffer",t)}function lz(){this.typedArray=void 0,this.indexDatatype=void 0,this.context=void 0,this.buffer=void 0}lz.prototype.set=function(e,t,n){this.typedArray=e,this.indexDatatype=t,this.context=n};lz.prototype.execute=function(){this.buffer=Xse(this.typedArray,this.indexDatatype,this.context)};function Xse(e,t,n){let i=It.createIndexBuffer({typedArray:e,context:n,usage:Ne.STATIC_DRAW,indexDatatype:t});return i.vertexArrayDestroyable=!1,i}Nb.prototype.process=function(e){if(this._state===ft.READY)return!0;if(this._state!==ft.LOADED&&this._state!==ft.PROCESSING)return!1;let t=this._typedArray,n=this._indexDatatype;if(l(this._dracoLoader))try{this._dracoLoader.process(e)&&(t=this._dracoLoader.decodedData.indices.typedArray,this._typedArray=t,n=J.fromTypedArray(t),this._indexDatatype=n)}catch(o){cz(this,o)}if(!l(t))return!1;let i;if(this._loadBuffer&&this._asynchronous){let o=qMe;if(o.set(t,n,e.context),!e.jobScheduler.execute(o,uc.BUFFER))return!1;i=o.buffer}else this._loadBuffer&&(i=Xse(t,n,e.context));return this.unload(),this._buffer=i,this._typedArray=this._loadTypedArray?t:void 0,this._state=ft.READY,this._resourceCache.statistics.addGeometryLoader(this),!0};Nb.prototype.unload=function(){l(this._buffer)&&this._buffer.destroy();let e=this._resourceCache;l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&e.unload(this._bufferViewLoader),l(this._dracoLoader)&&e.unload(this._dracoLoader),this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._gltf=void 0,this._primitive=void 0};var pE=Nb;var Shn=y(C(),1);var Hdn=y(C(),1);var Sdn=y(C(),1);function nve(e,t,n){if(n=n??!1,n){let i=e.indexOf(t);if(i>-1)return i}return e.push(t),e.length-1}var Os=nve;var wdn=y(C(),1);var Vdn=y(C(),1);function ive(e,t){return l(e.extensionsUsed)&&e.extensionsUsed.indexOf(t)>=0}var Er=ive;function an(){}an.objectLegacy=function(e,t){if(l(e)){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let i=e[n],o=t(i,n);if(l(o))return o}}};an.object=function(e,t){if(l(e)){let n=e.length;for(let i=0;i0)return i.byteStride}return J.getSizeInBytes(t.componentType)*Ud(t.type)}var nd=rve;function sve(e){Xe.accessor(e,function(n){l(n.bufferView)&&(n.byteOffset=n.byteOffset??0)}),Xe.bufferView(e,function(n){l(n.buffer)&&(n.byteOffset=n.byteOffset??0)}),Xe.mesh(e,function(n){Xe.meshPrimitive(n,function(i){if(i.mode=i.mode??ne.TRIANGLES,!l(i.material)){l(e.materials)||(e.materials=[]);let o={name:"default"};i.material=Os(e.materials,o)}})}),Xe.accessorContainingVertexAttributeData(e,function(n){let i=e.accessors[n],o=i.bufferView;if(i.normalized=i.normalized??!1,l(o)){let r=e.bufferViews[o];r.byteStride=nd(e,i),r.target=ne.ARRAY_BUFFER}}),Xe.accessorContainingIndexData(e,function(n){let o=e.accessors[n].bufferView;if(l(o)){let r=e.bufferViews[o];r.target=ne.ELEMENT_ARRAY_BUFFER}}),Xe.material(e,function(n){let i=n.extensions??{},o=i.KHR_materials_common;if(l(o)){let c=o.technique,d=l(o.values)?o.values:{};o.values=d,d.ambient=l(d.ambient)?d.ambient:[0,0,0,1],d.emission=l(d.emission)?d.emission:[0,0,0,1],d.transparency=d.transparency??1,c!=="CONSTANT"&&(d.diffuse=l(d.diffuse)?d.diffuse:[0,0,0,1],c!=="LAMBERT"&&(d.specular=l(d.specular)?d.specular:[0,0,0,1],d.shininess=d.shininess??0)),o.transparent=o.transparent??!1,o.doubleSided=o.doubleSided??!1;return}n.emissiveFactor=n.emissiveFactor??[0,0,0],n.alphaMode=n.alphaMode??"OPAQUE",n.doubleSided=n.doubleSided??!1,n.alphaMode==="MASK"&&(n.alphaCutoff=n.alphaCutoff??.5);let r=i.KHR_techniques_webgl;l(r)&&Xe.materialValue(n,function(c){l(c.index)&&PC(c)}),PC(n.emissiveTexture),PC(n.normalTexture),PC(n.occlusionTexture);let s=n.pbrMetallicRoughness;l(s)&&(s.baseColorFactor=s.baseColorFactor??[1,1,1,1],s.metallicFactor=s.metallicFactor??1,s.roughnessFactor=s.roughnessFactor??1,PC(s.baseColorTexture),PC(s.metallicRoughnessTexture));let a=i.KHR_materials_pbrSpecularGlossiness;l(a)&&(a.diffuseFactor=a.diffuseFactor??[1,1,1,1],a.specularFactor=a.specularFactor??[1,1,1],a.glossinessFactor=a.glossinessFactor??1,PC(a.specularGlossinessTexture))}),Xe.animation(e,function(n){Xe.animationSampler(n,function(i){i.interpolation=i.interpolation??"LINEAR"})});let t=ave(e);return Xe.node(e,function(n,i){l(t[i])||l(n.translation)||l(n.rotation)||l(n.scale)?(n.translation=n.translation??[0,0,0],n.rotation=n.rotation??[0,0,0,1],n.scale=n.scale??[1,1,1]):n.matrix=n.matrix??[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}),Xe.sampler(e,function(n){n.wrapS=n.wrapS??ne.REPEAT,n.wrapT=n.wrapT??ne.REPEAT}),l(e.scenes)&&!l(e.scene)&&(e.scene=0),e}function ave(e){let t={};return Xe.animation(e,function(n){Xe.animationChannel(n,function(i){let o=i.target,r=o.node,s=o.path;(s==="translation"||s==="rotation"||s==="scale")&&(t[r]=!0)})}),t}function PC(e){l(e)&&(e.texCoord=e.texCoord??0)}var XZ=sve;var jdn=y(C(),1);function cve(e){return Xe.shader(e,function(t){qD(t)}),Xe.buffer(e,function(t){qD(t)}),Xe.image(e,function(t){qD(t)}),qD(e),e}function qD(e){e.extras=l(e.extras)?e.extras:{},e.extras._pipeline=l(e.extras._pipeline)?e.extras._pipeline:{}}var Db=cve;var mun=y(C(),1);var oun=y(C(),1);var eun=y(C(),1);function lve(e,t){let n=e.extensionsRequired;if(l(n)){let i=n.indexOf(t);i>=0&&n.splice(i,1),n.length===0&&delete e.extensionsRequired}}var WZ=lve;function dve(e,t){let n=e.extensionsUsed;if(l(n)){let i=n.indexOf(t);i>=0&&n.splice(i,1),WZ(e,t),n.length===0&&delete e.extensionsUsed}}var MC=dve;var uve=4;function mve(e){if(gh(e)!=="glTF")throw new de("File is not valid binary glTF");let n=Wse(e,0,5),i=n[1];if(i!==1&&i!==2)throw new de("Binary glTF version is not 1 or 2");return i===1?hve(e,n):fve(e,n)}function Wse(e,t,n){let i=new DataView(e.buffer),o=new Array(n);for(let r=0;r0){let h=u.binary_glTF??u.KHR_binary_glTF;l(h)&&(h.extras._pipeline.source=d,delete h.uri)}return MC(c,"KHR_binary_glTF"),c}function fve(e,t){let n=t[2],i=12,o,r;for(;i0){let a=s[0];a.extras._pipeline.source=r}}return o}var FZ=mve;var Aun=y(C(),1);function pve(e){return Xe.shader(e,function(t){$D(t)}),Xe.buffer(e,function(t){$D(t)}),Xe.image(e,function(t){$D(t)}),$D(e),e}function $D(e){l(e.extras)&&(l(e.extras._pipeline)&&delete e.extras._pipeline,Object.keys(e.extras).length===0&&delete e.extras)}var PZ=pve;var zmn=y(C(),1);var Cun=y(C(),1);function Ave(e,t){let n=e.extensionsUsed;l(n)||(n=[],e.extensionsUsed=n),Os(n,t,!0)}var tm=Ave;var Gun=y(C(),1);var _un=y(C(),1);function gve(e){switch(e){case J.BYTE:return function(t,n,i,o,r){for(let s=0;s-1:!1}var xve=[ne.ZERO,ne.ONE,ne.SRC_COLOR,ne.ONE_MINUS_SRC_COLOR,ne.SRC_ALPHA,ne.ONE_MINUS_SRC_ALPHA,ne.DST_ALPHA,ne.ONE_MINUS_DST_ALPHA,ne.DST_COLOR,ne.ONE_MINUS_DST_COLOR];function Ive(e,t){if(!l(e))return t;for(let n=0;n<4;n++)if(xve.indexOf(e[n])===-1)return t;return e}function _ve(e){let t={},n={},i=e.techniques;return l(i)&&(Xe.technique(e,function(o,r){let s=o.states;if(l(s)){let a=n[r]={};if(Fse(s,ne.BLEND)){a.alphaMode="BLEND";let c=s.functions;l(c)&&(l(c.blendEquationSeparate)||l(c.blendFuncSeparate))&&(t[r]={blendEquation:c.blendEquationSeparate??yve,blendFactors:Ive(c.blendFuncSeparate,Cve)})}Fse(s,ne.CULL_FACE)||(a.doubleSided=!0),delete o.states}}),Object.keys(t).length>0&&(l(e.extensions)||(e.extensions={}),tm(e,"KHR_blend")),Xe.material(e,function(o){if(l(o.technique)){let r=n[o.technique];Xe.objectLegacy(r,function(a,c){o[c]=a});let s=t[o.technique];l(s)&&(l(o.extensions)||(o.extensions={}),o.extensions.KHR_blend=s)}})),e}var MZ=_ve;var zun=y(C(),1);var Dun=y(C(),1);function Eve(e,t){let n=e.extensionsRequired;l(n)||(n=[],e.extensionsRequired=n),Os(n,t,!0),tm(e,t)}var vZ=Eve;function Tve(e){let t=e.techniques,n={},i={},o={};if(l(t)){let r={programs:[],shaders:[],techniques:[]},s=e.glExtensionsUsed;delete e.glExtensionsUsed,Xe.technique(e,function(a,c){let d={name:a.name,program:void 0,attributes:{},uniforms:{}},u;if(Xe.techniqueAttribute(a,function(h,p){u=a.parameters[h],d.attributes[p]={semantic:u.semantic}}),Xe.techniqueUniform(a,function(h,p){u=a.parameters[h],d.uniforms[p]={count:u.count,node:u.node,type:u.type,semantic:u.semantic,value:u.value},l(n[c])||(n[c]={}),n[c][h]=p}),l(o[a.program]))d.program=o[a.program];else{let h=e.programs[a.program],p={name:h.name,fragmentShader:void 0,vertexShader:void 0,glExtensions:s},g=e.shaders[h.fragmentShader];p.fragmentShader=Os(r.shaders,g,!0);let f=e.shaders[h.vertexShader];p.vertexShader=Os(r.shaders,f,!0),d.program=Os(r.programs,p),o[a.program]=d.program}i[c]=Os(r.techniques,d)}),r.techniques.length>0&&(l(e.extensions)||(e.extensions={}),e.extensions.KHR_techniques_webgl=r,tm(e,"KHR_techniques_webgl"),vZ(e,"KHR_techniques_webgl"))}return Xe.material(e,function(r){if(l(r.technique)){let s={technique:i[r.technique]};Xe.objectLegacy(r.values,function(a,c){l(s.values)||(s.values={});let d=n[r.technique][c];l(d)&&(s.values[d]=a)}),l(r.extensions)||(r.extensions={}),r.extensions.KHR_techniques_webgl=s}delete r.technique,delete r.values}),delete e.techniques,delete e.programs,delete e.shaders,e}var NZ=Tve;var rmn=y(C(),1);var $un=y(C(),1);function Sve(e,t){Bo.typeOf.object("material",e),Bo.defined("handler",t);let n=e.pbrMetallicRoughness;if(l(n)){if(l(n.baseColorTexture)){let r=n.baseColorTexture,s=t(r.index,r);if(l(s))return s}if(l(n.metallicRoughnessTexture)){let r=n.metallicRoughnessTexture,s=t(r.index,r);if(l(s))return s}}let{extensions:i}=e;if(l(i)){let r=i.KHR_materials_pbrSpecularGlossiness;if(l(r)){if(l(r.diffuseTexture)){let c=r.diffuseTexture,d=t(c.index,c);if(l(d))return d}if(l(r.specularGlossinessTexture)){let c=r.specularGlossinessTexture,d=t(c.index,c);if(l(d))return d}}let s=i.KHR_materials_specular;if(l(s)){let{specularTexture:c,specularColorTexture:d}=s;if(l(c)){let u=t(c.index,c);if(l(u))return u}if(l(d)){let u=t(d.index,d);if(l(u))return u}}let a=i.KHR_materials_common;if(l(a)&&l(a.values)){let{diffuse:c,ambient:d,emission:u,specular:h}=a.values;if(l(c)&&l(c.index)){let p=t(c.index,c);if(l(p))return p}if(l(d)&&l(d.index)){let p=t(d.index,d);if(l(p))return p}if(l(u)&&l(u.index)){let p=t(u.index,u);if(l(p))return p}if(l(h)&&l(h.index)){let p=t(h.index,h);if(l(p))return p}}}let o=Xe.materialValue(e,function(r){if(l(r.index)){let s=t(r.index,r);if(l(s))return s}});if(l(o))return o;if(l(e.emissiveTexture)){let r=e.emissiveTexture,s=t(r.index,r);if(l(s))return s}if(l(e.normalTexture)){let r=e.normalTexture,s=t(r.index,r);if(l(s))return s}if(l(e.occlusionTexture)){let r=e.occlusionTexture,s=t(r.index,r);if(l(s))return s}}var AE=Sve;var Pse=["mesh","node","material","accessor","bufferView","buffer","texture","sampler","image"];function Lve(e,t){return t=t??Pse,Pse.forEach(function(n){t.indexOf(n)>-1&&Vve(e,n)}),e}var Rve={accessor:"accessors",buffer:"buffers",bufferView:"bufferViews",image:"images",node:"nodes",material:"materials",mesh:"meshes",sampler:"samplers",texture:"textures"};function Vve(e,t){let n=Rve[t],i=e[n];if(l(i)){let o=0,r=kf[t](e),s=i.length;for(let a=0;at&&o.attributes[c]--}),Xe.meshPrimitiveTarget(o,function(a){Xe.meshPrimitiveTargetAttribute(a,function(c,d){c>t&&a[d]--})});let r=o.indices;l(r)&&r>t&&o.indices--;let s=o.extensions;l(s)&&l(s.CESIUM_primitive_outline)&&s.CESIUM_primitive_outline.indices>t&&--s.CESIUM_primitive_outline.indices})}),Xe.skin(e,function(i){l(i.inverseBindMatrices)&&i.inverseBindMatrices>t&&i.inverseBindMatrices--}),Xe.animation(e,function(i){Xe.animationSampler(i,function(o){l(o.input)&&o.input>t&&o.input--,l(o.output)&&o.output>t&&o.output--})})};Uf.buffer=function(e,t){e.buffers.splice(t,1),Xe.bufferView(e,function(i){l(i.buffer)&&i.buffer>t&&i.buffer--,l(i.extensions)&&l(i.extensions.EXT_meshopt_compression)&&i.extensions.EXT_meshopt_compression.buffer--})};Uf.bufferView=function(e,t){if(e.bufferViews.splice(t,1),Xe.accessor(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Xe.shader(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Xe.image(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Er(e,"KHR_draco_mesh_compression")&&Xe.mesh(e,function(i){Xe.meshPrimitive(i,function(o){l(o.extensions)&&l(o.extensions.KHR_draco_mesh_compression)&&o.extensions.KHR_draco_mesh_compression.bufferView>t&&o.extensions.KHR_draco_mesh_compression.bufferView--})}),Er(e,"EXT_feature_metadata")){let o=e.extensions.EXT_feature_metadata.featureTables;for(let r in o)if(o.hasOwnProperty(r)){let a=o[r].properties;if(l(a)){for(let c in a)if(a.hasOwnProperty(c)){let d=a[c];l(d.bufferView)&&d.bufferView>t&&d.bufferView--,l(d.arrayOffsetBufferView)&&d.arrayOffsetBufferView>t&&d.arrayOffsetBufferView--,l(d.stringOffsetBufferView)&&d.stringOffsetBufferView>t&&d.stringOffsetBufferView--}}}}if(Er(e,"EXT_structural_metadata")){let o=e.extensions.EXT_structural_metadata.propertyTables;if(l(o)){let r=o.length;for(let s=0;st&&u.values--,l(u.arrayOffsets)&&u.arrayOffsets>t&&u.arrayOffsets--,l(u.stringOffsets)&&u.stringOffsets>t&&u.stringOffsets--}}}}};Uf.image=function(e,t){e.images.splice(t,1),Xe.texture(e,function(i){l(i.source)&&i.source>t&&--i.source;let o=i.extensions;l(o)&&l(o.EXT_texture_webp)&&o.EXT_texture_webp.source>t?--i.extensions.EXT_texture_webp.source:l(o)&&l(o.KHR_texture_basisu)&&o.KHR_texture_basisu.source>t&&--i.extensions.KHR_texture_basisu.source})};Uf.mesh=function(e,t){e.meshes.splice(t,1),Xe.node(e,function(i){l(i.mesh)&&(i.mesh>t?i.mesh--:i.mesh===t&&delete i.mesh)})};Uf.node=function(e,t){e.nodes.splice(t,1),Xe.skin(e,function(i){l(i.skeleton)&&i.skeleton>t&&i.skeleton--,i.joints=i.joints.map(function(o){return o>t?o-1:o})}),Xe.animation(e,function(i){Xe.animationChannel(i,function(o){l(o.target)&&l(o.target.node)&&o.target.node>t&&o.target.node--})}),Xe.technique(e,function(i){Xe.techniqueUniform(i,function(o){l(o.node)&&o.node>t&&o.node--})}),Xe.node(e,function(i){l(i.children)&&(i.children=i.children.filter(function(o){return o!==t}).map(function(o){return o>t?o-1:o}))}),Xe.scene(e,function(i){i.nodes=i.nodes.filter(function(o){return o!==t}).map(function(o){return o>t?o-1:o})})};Uf.material=function(e,t){e.materials.splice(t,1),Xe.mesh(e,function(i){Xe.meshPrimitive(i,function(o){l(o.material)&&o.material>t&&o.material--})})};Uf.sampler=function(e,t){e.samplers.splice(t,1),Xe.texture(e,function(i){l(i.sampler)&&i.sampler>t&&--i.sampler})};Uf.texture=function(e,t){if(e.textures.splice(t,1),Xe.material(e,function(i){AE(i,function(o,r){r.index>t&&--r.index})}),Er(e,"EXT_feature_metadata")){Xe.mesh(e,function(r){Xe.meshPrimitive(r,function(s){let a=s.extensions;if(l(a)&&l(a.EXT_feature_metadata)){let d=a.EXT_feature_metadata.featureIdTextures;if(l(d)){let u=d.length;for(let h=0;ht&&--g.index}}}})});let o=e.extensions.EXT_feature_metadata.featureTextures;for(let r in o)if(o.hasOwnProperty(r)){let a=o[r].properties;if(l(a)){for(let c in a)if(a.hasOwnProperty(c)){let u=a[c].texture;u.index>t&&--u.index}}}}if(Er(e,"EXT_mesh_features")&&Xe.mesh(e,function(i){Xe.meshPrimitive(i,function(o){let r=o.extensions;if(l(r)&&l(r.EXT_mesh_features)){let a=r.EXT_mesh_features.featureIds;if(l(a)){let c=a.length;for(let d=0;dt&&--u.texture.index}}}})}),Er(e,"EXT_structural_metadata")){let o=e.extensions.EXT_structural_metadata.propertyTextures;if(l(o)){let r=o.length;for(let s=0;st&&--u.index}}}}};function kf(){}kf.accessor=function(e){let t={};return Xe.mesh(e,function(n){Xe.meshPrimitive(n,function(i){Xe.meshPrimitiveAttribute(i,function(r){t[r]=!0}),Xe.meshPrimitiveTarget(i,function(r){Xe.meshPrimitiveTargetAttribute(r,function(s){t[s]=!0})});let o=i.indices;l(o)&&(t[o]=!0)})}),Xe.skin(e,function(n){l(n.inverseBindMatrices)&&(t[n.inverseBindMatrices]=!0)}),Xe.animation(e,function(n){Xe.animationSampler(n,function(i){l(i.input)&&(t[i.input]=!0),l(i.output)&&(t[i.output]=!0)})}),Er(e,"EXT_mesh_gpu_instancing")&&Xe.node(e,function(n){l(n.extensions)&&l(n.extensions.EXT_mesh_gpu_instancing)&&Object.keys(n.extensions.EXT_mesh_gpu_instancing.attributes).forEach(function(i){let o=n.extensions.EXT_mesh_gpu_instancing.attributes[i];t[o]=!0})}),Er(e,"CESIUM_primitive_outline")&&Xe.mesh(e,function(n){Xe.meshPrimitive(n,function(i){let o=i.extensions;if(l(o)&&l(o.CESIUM_primitive_outline)){let s=o.CESIUM_primitive_outline.indices;l(s)&&(t[s]=!0)}})}),t};kf.buffer=function(e){let t={};return Xe.bufferView(e,function(n){l(n.buffer)&&(t[n.buffer]=!0),l(n.extensions)&&l(n.extensions.EXT_meshopt_compression)&&(t[n.extensions.EXT_meshopt_compression.buffer]=!0)}),t};kf.bufferView=function(e){let t={};if(Xe.accessor(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Xe.shader(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Xe.image(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Er(e,"KHR_draco_mesh_compression")&&Xe.mesh(e,function(n){Xe.meshPrimitive(n,function(i){l(i.extensions)&&l(i.extensions.KHR_draco_mesh_compression)&&(t[i.extensions.KHR_draco_mesh_compression.bufferView]=!0)})}),Er(e,"EXT_feature_metadata")){let i=e.extensions.EXT_feature_metadata.featureTables;for(let o in i)if(i.hasOwnProperty(o)){let s=i[o].properties;if(l(s)){for(let a in s)if(s.hasOwnProperty(a)){let c=s[a];l(c.bufferView)&&(t[c.bufferView]=!0),l(c.arrayOffsetBufferView)&&(t[c.arrayOffsetBufferView]=!0),l(c.stringOffsetBufferView)&&(t[c.stringOffsetBufferView]=!0)}}}}if(Er(e,"EXT_structural_metadata")){let i=e.extensions.EXT_structural_metadata.propertyTables;if(l(i)){let o=i.length;for(let r=0;r0&&(t[n.mesh]=!0)}}),t};function Mse(e,t,n){let i=e.nodes[t];return l(i.mesh)||l(i.camera)||l(i.skin)||l(i.weights)||l(i.extras)||l(i.extensions)&&Object.keys(i.extensions).length!==0||l(n[t])?!1:!l(i.children)||i.children.filter(function(o){return!Mse(e,o,n)}).length===0}kf.node=function(e){let t={};return Xe.skin(e,function(n){l(n.skeleton)&&(t[n.skeleton]=!0),Xe.skinJoint(n,function(i){t[i]=!0})}),Xe.animation(e,function(n){Xe.animationChannel(n,function(i){l(i.target)&&l(i.target.node)&&(t[i.target.node]=!0)})}),Xe.technique(e,function(n){Xe.techniqueUniform(n,function(i){l(i.node)&&(t[i.node]=!0)})}),Xe.node(e,function(n,i){Mse(e,i,t)||(t[i]=!0)}),t};kf.material=function(e){let t={};return Xe.mesh(e,function(n){Xe.meshPrimitive(n,function(i){l(i.material)&&(t[i.material]=!0)})}),t};kf.texture=function(e){let t={};if(Xe.material(e,function(n){AE(n,function(i){t[i]=!0})}),Er(e,"EXT_feature_metadata")){Xe.mesh(e,function(o){Xe.meshPrimitive(o,function(r){let s=r.extensions;if(l(s)&&l(s.EXT_feature_metadata)){let c=s.EXT_feature_metadata.featureIdTextures;if(l(c)){let d=c.length;for(let u=0;u0)for(s.mesh=n.meshes[c[0]],t=1;t0&&l(s.skin)){let u=e.skins[s.skin];u.skeleton=n.nodes[c[0]]}delete s.skeletons}l(s.jointName)&&delete s.jointName}),Xe.skin(e,function(s){l(s.inverseBindMatrices)&&(s.inverseBindMatrices=n.accessors[s.inverseBindMatrices]);let a=s.jointNames;if(l(a)){let c=[],d=a.length;for(t=0;t=0&&(a=r.substring(0,s),c=r.substring(s));let d,u=qve[a];l(u)?(d=u+c,t[r]=d):l(jve[a])||(d=`_${r}`,t[r]=d)}});for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let r=t[o],s=i.attributes[o];l(s)&&(delete i.attributes[o],i.attributes[r]=s)}})}),Xe.technique(e,function(n){Xe.techniqueParameter(n,function(i){let o=t[i.semantic];l(o)&&(i.semantic=o)})})}function eNe(e){Xe.camera(e,function(t){let n=t.perspective;if(l(n)){let i=n.aspectRatio;l(i)&&i===0&&delete n.aspectRatio;let o=n.yfov;l(o)&&o===0&&(n.yfov=1)}})}function mz(e,t){return l(t.byteStride)&&t.byteStride!==0?t.byteStride:nd(e,t)}function tNe(e){Xe.buffer(e,function(t){l(t.byteLength)||(t.byteLength=t.extras._pipeline.source.length)}),Xe.accessor(e,function(t){let n=t.bufferView;if(l(n)){let i=e.bufferViews[n],o=mz(e,t),r=t.byteOffset+t.count*o;i.byteLength=Math.max(i.byteLength??0,r)}})}function nNe(e){let t,n,i,o=e.bufferViews,r={};Xe.accessorContainingVertexAttributeData(e,function(a){let c=e.accessors[a];l(c.bufferView)&&(r[c.bufferView]=!0)});let s={};Xe.accessor(e,function(a){l(a.bufferView)&&(s[a.bufferView]=s[a.bufferView]??[],s[a.bufferView].push(a))});for(let a in s)if(Object.prototype.hasOwnProperty.call(s,a)){i=o[a];let c=s[a];c.sort(function(p,g){return p.byteOffset-g.byteOffset});let d=0,u=0,h=c.length;for(t=0;t=0;--r)if(i[r]===t){i.splice(r,1);return}}}),Xe.node(e,function(n,i){if(l(n.children)){let o=n.children.indexOf(t);o>-1&&(n.children.splice(o,1),Qse(n)&&Use(e,i))}}),delete e.nodes[t]}function oNe(e){return Xe.node(e,function(t,n){Qse(t)&&Use(e,n)}),e}function rNe(e){Xe.animation(e,function(t){Xe.animationSampler(t,function(n){let i=e.accessors[n.input];if(!l(i.min)||!l(i.max)){let o=vC(e,i);i.min=o.min,i.max=o.max}})})}function sNe(e){Xe.accessor(e,function(t){if(l(t.min)||l(t.max)){let n=vC(e,t);l(t.min)&&(t.min=n.min),l(t.max)&&(t.max=n.max)}})}function aNe(e){e.asset=e.asset??{},e.asset.version="2.0",Dse(e),Dve(e),oNe(e),Qve(e),Uve(e),Yve(e),Hve(e),tNe(e),nNe(e),iNe(e),rNe(e),sNe(e),zve(e),Kve(e),Jve(e),$ve(e),kZ(e),eNe(e),MZ(e),NZ(e),kve(e)}var cNe=["u_tex","u_diffuse","u_emission","u_diffuse_tex"],lNe=["u_diffuse","u_diffuse_mat"];function hz(e){e.pbrMetallicRoughness=l(e.pbrMetallicRoughness)?e.pbrMetallicRoughness:{},e.pbrMetallicRoughness.roughnessFactor=1,e.pbrMetallicRoughness.metallicFactor=0}function fz(e){return l(e.index)}function pz(e){return Array.isArray(e)&&e.length===4}function kse(e){let t=new Array(4);t[3]=e[3];for(let n=0;n<3;n++){let i=e[n];i<=.04045?t[n]=e[n]*.07739938080495357:t[n]=Math.pow((i+.055)*.9478672985781991,2.4)}return t}function dNe(e,t){t=t??{};let n=t.baseColorTextureNames??cNe,i=t.baseColorFactorNames??lNe;Xe.material(e,function(o){Xe.materialValue(o,function(r,s){n.indexOf(s)!==-1&&fz(r)?(hz(o),o.pbrMetallicRoughness.baseColorTexture=r):i.indexOf(s)!==-1&&pz(r)&&(hz(o),o.pbrMetallicRoughness.baseColorFactor=kse(r))})}),NC(e,"KHR_techniques_webgl"),NC(e,"KHR_blend")}function uz(e,t){l(t)&&(pz(t)?e.pbrMetallicRoughness.baseColorFactor=kse(t):fz(t)&&(e.pbrMetallicRoughness.baseColorTexture=t))}function Nse(e,t){l(t)&&(pz(t)?e.emissiveFactor=t.slice(0,3):fz(t)&&(e.emissiveTexture=t))}function uNe(e){Xe.material(e,function(t){let n=(t.extensions??{}).KHR_materials_common;if(!l(n))return;let i=n.values??{},o=i.ambient,r=i.diffuse,s=i.emission,a=i.transparency,c=n.doubleSided,d=n.transparent;hz(t),n.technique==="CONSTANT"?(tm(e,"KHR_materials_unlit"),t.extensions=l(t.extensions)?t.extensions:{},t.extensions.KHR_materials_unlit={},uz(t,s),uz(t,o)):(uz(t,r),Nse(t,o),Nse(t,s)),l(c)&&(t.doubleSided=c),l(a)&&(l(t.pbrMetallicRoughness.baseColorFactor)?t.pbrMetallicRoughness.baseColorFactor[3]*=a:t.pbrMetallicRoughness.baseColorFactor=[1,1,1,a]),l(d)&&(t.alphaMode=d?"BLEND":"OPAQUE")}),NC(e,"KHR_materials_common")}var YZ=Wve;var ahn=y(C(),1);function wc(){}wc.getError=function(e,t,n){let i=`Failed to load ${e}: ${t}`;l(n)&&l(n.message)&&(i+=` +${n.message}`);let o=new de(i);return l(n)&&(o.stack=`Original stack: +${n.stack} +Handler stack: +${o.stack}`),o};wc.getNodeTransform=function(e){return l(e.matrix)?e.matrix:X.fromTranslationQuaternionRotationScale(l(e.translation)?e.translation:m.ZERO,l(e.rotation)?e.rotation:Pe.IDENTITY,l(e.scale)?e.scale:m.ONE)};wc.getAttributeBySemantic=function(e,t,n){let i=e.attributes,o=i.length;for(let r=0;ro9e);var a=se(Jse.url)}var c="./this.program",d=Jse.url,u;if(s){var h=a("fs");d.startsWith("file:")&&a("path").dirname(a("url").fileURLToPath(d)),u=se=>(se=x(se)?new URL(se):se,h.readFileSync(se)),1{var oe=new XMLHttpRequest;return oe.open("GET",se,!1),oe.responseType="arraybuffer",oe.send(null),new Uint8Array(oe.response)})}var p=console.log.bind(console),g=console.error.bind(console),f,b=!1,x=se=>se.startsWith("file://"),I,_,E,S,R,G,B,w,F,P,A,T,L,V=!1;function W(){var se=E.buffer;S=new Int8Array(se),G=new Int16Array(se),i.HEAPU8=R=new Uint8Array(se),B=new Uint16Array(se),w=new Int32Array(se),F=new Uint32Array(se),i.HEAPF32=P=new Float32Array(se),A=new Float64Array(se),T=new BigInt64Array(se),L=new BigUint64Array(se)}var M=0,Q=null;function N(se){var oe;throw(oe=i.onAbort)==null||oe.call(i,se),se="Aborted("+se+")",g(se),b=!0,se=new WebAssembly.RuntimeError(se+". Build with -sASSERTIONS for more info."),_?.(se),se}var k;async function v(se){if(!ArrayBuffer.isView(se))if(se==k&&f)se=new Uint8Array(f);else if(u)se=u(se);else throw"both async and sync fetching of the wasm failed";return se}async function O(se){var oe=k;try{var _e=await v(oe);return await WebAssembly.instantiate(_e,se)}catch(Se){g(`failed to asynchronously prepare wasm: ${Se}`),N(Se)}}async function H(se){return O(se)}var ee=se=>{for(;0{var se=i.preRun.shift();te.push(se)},pe=se=>{if(s)return se=Buffer.from(se,"base64"),new Uint8Array(se.buffer,se.byteOffset,se.length);for(var oe,_e,Se=0,He=0,gt=se.length,mt=new Uint8Array((3*gt>>2)-(se[gt-2]=="=")-(se[gt-1]=="="));Se>4,mt[He+1]=oe<<4|_e>>2,mt[He+2]=_e<<6|Qp[se.charCodeAt(Se+3)];return mt},ye={},he=se=>{for(;se.length;){var oe=se.pop();se.pop()(oe)}};function xe(se){return this.N(F[se>>2])}var Te={},Be={},Le={},De=class extends Error{constructor(se){super(se),this.name="InternalError"}},Ue=(se,oe,_e)=>{function Se(Tt){if(Tt=_e(Tt),Tt.length!==se.length)throw new De("Mismatched type converter count");for(var Bn=0;BnLe[Tt]=oe);var He=Array(oe.length),gt=[],mt=0;oe.forEach((Tt,Bn)=>{Be.hasOwnProperty(Tt)?He[Bn]=Be[Tt]:(gt.push(Tt),Te.hasOwnProperty(Tt)||(Te[Tt]=[]),Te[Tt].push(()=>{He[Bn]=Be[Tt],++mt,mt===gt.length&&Se(He)}))}),gt.length===0&&Se(He)},je=se=>{for(var oe="";;){var _e=R[se++];if(!_e)return oe;oe+=String.fromCharCode(_e)}},it=class extends Error{constructor(se){super(se),this.name="BindingError"}},nn=se=>{throw new it(se)};function rt(se,oe,_e={}){var Se=oe.name;if(!se)throw new it(`type "${Se}" must have a positive integer typeid pointer`);if(Be.hasOwnProperty(se)){if(_e.wa)return;throw new it(`Cannot register type '${Se}' twice`)}Be[se]=oe,delete Le[se],Te.hasOwnProperty(se)&&(oe=Te[se],delete Te[se],oe.forEach(He=>He()))}function rn(se,oe,_e={}){return rt(se,oe,_e)}var Jt=(se,oe,_e)=>{switch(oe){case 1:return _e?Se=>S[Se]:Se=>R[Se];case 2:return _e?Se=>G[Se>>1]:Se=>B[Se>>1];case 4:return _e?Se=>w[Se>>2]:Se=>F[Se>>2];case 8:return _e?Se=>T[Se>>3]:Se=>L[Se>>3];default:throw new TypeError(`invalid integer width (${oe}): ${se}`)}},Xt=se=>{throw new it(se.L.P.M.name+" instance already deleted")},Li=!1,bi=()=>{},vt=se=>typeof FinalizationRegistry>"u"?(vt=oe=>oe,se):(Li=new FinalizationRegistry(oe=>{oe=oe.L,--oe.count.value,oe.count.value===0&&(oe.S?oe.W.Y(oe.S):oe.P.M.Y(oe.O))}),vt=oe=>{var _e=oe.L;return _e.S&&Li.register(oe,{L:_e},oe),oe},bi=oe=>{Li.unregister(oe)},vt(se));function Rt(){}var si=(se,oe)=>Object.defineProperty(oe,"name",{value:se}),_t={},Fo=(se,oe,_e)=>{if(se[oe].R===void 0){var Se=se[oe];se[oe]=function(...He){if(!se[oe].R.hasOwnProperty(He.length))throw new it(`Function '${_e}' called with an invalid number of arguments (${He.length}) - expects one of (${se[oe].R})!`);return se[oe].R[He.length].apply(this,He)},se[oe].R=[],se[oe].R[Se.aa]=Se}},Uo=(se,oe,_e)=>{if(i.hasOwnProperty(se)){if(_e===void 0||i[se].R!==void 0&&i[se].R[_e]!==void 0)throw new it(`Cannot register public name '${se}' twice`);if(Fo(i,se,se),i[se].R.hasOwnProperty(_e))throw new it(`Cannot register multiple overloads of a function with the same number of arguments (${_e})!`);i[se].R[_e]=oe}else i[se]=oe,i[se].aa=_e},Va=se=>{se=se.replace(/[^a-zA-Z0-9_]/g,"$");var oe=se.charCodeAt(0);return 48<=oe&&57>=oe?`_${se}`:se};function Cr(se,oe,_e,Se,He,gt,mt,Tt){this.name=se,this.constructor=oe,this.$=_e,this.Y=Se,this.U=He,this.ra=gt,this.ea=mt,this.pa=Tt,this.ya=[]}var wr=(se,oe,_e)=>{for(;oe!==_e;){if(!oe.ea)throw new it(`Expected null or instance of ${_e.name}, got an instance of ${oe.name}`);se=oe.ea(se),oe=oe.U}return se},ve=se=>{if(se===null)return"null";var oe=typeof se;return oe==="object"||oe==="array"||oe==="function"?se.toString():""+se};function ut(se,oe){if(oe===null){if(this.ha)throw new it(`null is not a valid ${this.name}`);return 0}if(!oe.L)throw new it(`Cannot pass "${ve(oe)}" as a ${this.name}`);if(!oe.L.O)throw new it(`Cannot pass deleted object as a pointer of type ${this.name}`);return wr(oe.L.O,oe.L.P.M,this.M)}function qe(se,oe){if(oe===null){if(this.ha)throw new it(`null is not a valid ${this.name}`);if(this.ga){var _e=this.ia();return se!==null&&se.push(this.Y,_e),_e}return 0}if(!oe||!oe.L)throw new it(`Cannot pass "${ve(oe)}" as a ${this.name}`);if(!oe.L.O)throw new it(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.fa&&oe.L.P.fa)throw new it(`Cannot convert argument of type ${oe.L.W?oe.L.W.name:oe.L.P.name} to parameter type ${this.name}`);if(_e=wr(oe.L.O,oe.L.P.M,this.M),this.ga){if(oe.L.S===void 0)throw new it("Passing raw pointer to smart pointer is illegal");switch(this.Da){case 0:if(oe.L.W===this)_e=oe.L.S;else throw new it(`Cannot convert argument of type ${oe.L.W?oe.L.W.name:oe.L.P.name} to parameter type ${this.name}`);break;case 1:_e=oe.L.S;break;case 2:if(oe.L.W===this)_e=oe.L.S;else{var Se=oe.clone();_e=this.za(_e,fs(()=>Se.delete())),se!==null&&se.push(this.Y,_e)}break;default:throw new it("Unsupporting sharing policy")}}return _e}function nt(se,oe){if(oe===null){if(this.ha)throw new it(`null is not a valid ${this.name}`);return 0}if(!oe.L)throw new it(`Cannot pass "${ve(oe)}" as a ${this.name}`);if(!oe.L.O)throw new it(`Cannot pass deleted object as a pointer of type ${this.name}`);if(oe.L.P.fa)throw new it(`Cannot convert argument of type ${oe.L.P.name} to parameter type ${this.name}`);return wr(oe.L.O,oe.L.P.M,this.M)}var yt=(se,oe,_e)=>oe===_e?se:_e.U===void 0?null:(se=yt(se,oe,_e.U),se===null?null:_e.pa(se)),$t={},Sn=(se,oe)=>{if(oe===void 0)throw new it("ptr should not be undefined");for(;se.U;)oe=se.ea(oe),se=se.U;return $t[oe]},fo=(se,oe)=>{if(!oe.P||!oe.O)throw new De("makeClassHandle requires ptr and ptrType");if(!!oe.W!=!!oe.S)throw new De("Both smartPtrType and smartPtr must be specified");return oe.count={value:1},vt(Object.create(se,{L:{value:oe,writable:!0}}))};function uo(se,oe,_e,Se,He,gt,mt,Tt,Bn,zn,fn){this.name=se,this.M=oe,this.ha=_e,this.fa=Se,this.ga=He,this.xa=gt,this.Da=mt,this.na=Tt,this.ia=Bn,this.za=zn,this.Y=fn,He||oe.U!==void 0?this.T=qe:(this.T=Se?ut:nt,this.V=null)}var ra=(se,oe,_e)=>{if(!i.hasOwnProperty(se))throw new De("Replacing nonexistent public symbol");i[se].R!==void 0&&_e!==void 0?i[se].R[_e]=oe:(i[se]=oe,i[se].aa=_e)},sa,Hn=(se,oe)=>{se=je(se);var _e=sa.get(oe);if(typeof _e!="function")throw new it(`unknown function pointer with signature ${se}: ${oe}`);return _e};class Ti extends Error{}var Rs=se=>{se=Zee(se);var oe=je(se);return lb(se),oe},Jo=(se,oe)=>{function _e(gt){He[gt]||Be[gt]||(Le[gt]?Le[gt].forEach(_e):(Se.push(gt),He[gt]=!0))}var Se=[],He={};throw oe.forEach(_e),new Ti(`${se}: `+Se.map(Rs).join([", "]))},Ga=(se,oe)=>{for(var _e=[],Se=0;Se>2]);return _e};function po(se){for(var oe=1;oemt)throw new it("argTypes array size mismatch! Must at least get return value and 'this' types!");var Tt=oe[1]!==null&&_e!==null,Bn=po(oe);_e=!oe[0].ma;var zn=oe[0],fn=oe[1];for(Se=[se,nn,Se,He,he,zn.N.bind(zn),fn?.T.bind(fn)],He=2;He{se=se.trim();let oe=se.indexOf("(");return oe===-1?se:se.slice(0,oe)},xr=[],Vs=[0,1,,1,null,1,!0,1,!1,1],ks=se=>{9{if(!se)throw new it(`Cannot use deleted val. handle = ${se}`);return Vs[se]},fs=se=>{switch(se){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let oe=xr.pop()||Vs.length;return Vs[oe]=se,Vs[oe+1]=1,oe}},tc={name:"emscripten::val",N:se=>{var oe=Jm(se);return ks(se),oe},T:(se,oe)=>fs(oe),X:xe,V:null},nc=(se,oe,_e)=>{switch(oe){case 1:return _e?function(Se){return this.N(S[Se])}:function(Se){return this.N(R[Se])};case 2:return _e?function(Se){return this.N(G[Se>>1])}:function(Se){return this.N(B[Se>>1])};case 4:return _e?function(Se){return this.N(w[Se>>2])}:function(Se){return this.N(F[Se>>2])};default:throw new TypeError(`invalid integer width (${oe}): ${se}`)}},Xr=(se,oe)=>{var _e=Be[se];if(_e===void 0)throw se=`${oe} has unknown type ${Rs(se)}`,new it(se);return _e},kl=(se,oe)=>{switch(oe){case 4:return function(_e){return this.N(P[_e>>2])};case 8:return function(_e){return this.N(A[_e>>3])};default:throw new TypeError(`invalid float width (${oe}): ${se}`)}},Yl=Object.assign({optional:!0},tc),aa=(se,oe,_e)=>{var Se=R;if(!(0<_e))return 0;var He=oe;_e=oe+_e-1;for(var gt=0;gt=mt){if(oe>=_e)break;Se[oe++]=mt}else if(2047>=mt){if(oe+1>=_e)break;Se[oe++]=192|mt>>6,Se[oe++]=128|mt&63}else if(65535>=mt){if(oe+2>=_e)break;Se[oe++]=224|mt>>12,Se[oe++]=128|mt>>6&63,Se[oe++]=128|mt&63}else{if(oe+3>=_e)break;Se[oe++]=240|mt>>18,Se[oe++]=128|mt>>12&63,Se[oe++]=128|mt>>6&63,Se[oe++]=128|mt&63,gt++}}return Se[oe]=0,oe-He},Zo=se=>{for(var oe=0,_e=0;_e=Se?oe++:2047>=Se?oe+=2:55296<=Se&&57343>=Se?(oe+=4,++_e):oe+=3}return oe},mn=new TextDecoder,Re=(se,oe,_e,Se)=>{if(_e=oe+_e,Se)return _e;for(;se[oe]&&!(oe>=_e);)++oe;return oe},Vt=new TextDecoder("utf-16le"),Cn=(se,oe,_e)=>(se>>=1,Vt.decode(B.subarray(se,Re(B,se,oe/2,_e)))),rr=(se,oe,_e)=>{if(_e??(_e=2147483647),2>_e)return 0;_e-=2;var Se=oe;_e=_e<2*se.length?_e/2:se.length;for(var He=0;He<_e;++He)G[oe>>1]=se.charCodeAt(He),oe+=2;return G[oe>>1]=0,oe-Se},Za=se=>2*se.length,Gs=(se,oe,_e)=>{var Se="";se>>=2;for(var He=0;!(He>=oe/4);He++){var gt=F[se+He];if(!gt&&!_e)break;Se+=String.fromCodePoint(gt)}return Se},Ic=(se,oe,_e)=>{if(_e??(_e=2147483647),4>_e)return 0;var Se=oe;_e=Se+_e-4;for(var He=0;He>2]=gt,oe+=4,oe+4>_e)break}return w[oe>>2]=0,oe-Se},jm=se=>{for(var oe=0,_e=0;_e{var oe=Dp.length;return Dp.push(se),oe},Ba=(se,oe)=>{for(var _e=Array(se),Se=0;Se>2],`parameter ${Se}`);return _e},x9=(se,oe,_e)=>{var Se=[];return se=se(Se,_e),Se.length&&(F[oe>>2]=fs(Se)),se},I9={},kSe=se=>{var oe=I9[se];return oe===void 0?je(se):oe},S3={},Gee=()=>{if(!L3){var se={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.language||"C").replace("-","_")+".UTF-8",_:c||"./this.program"},oe;for(oe in S3)S3[oe]===void 0?delete se[oe]:se[oe]=S3[oe];var _e=[];for(oe in se)_e.push(`${oe}=${se[oe]}`);L3=_e}return L3},L3,YSe=[null,[],[]],Qp=new Uint8Array(123),cb=25;0<=cb;--cb)Qp[48+cb]=52+cb,Qp[65+cb]=cb,Qp[97+cb]=26+cb;Qp[43]=62,Qp[47]=63,(()=>{let se=Rt.prototype;Object.assign(se,{isAliasOf:function(_e){if(!(this instanceof Rt&&_e instanceof Rt))return!1;var Se=this.L.P.M,He=this.L.O;_e.L=_e.L;var gt=_e.L.P.M;for(_e=_e.L.O;Se.U;)He=Se.ea(He),Se=Se.U;for(;gt.U;)_e=gt.ea(_e),gt=gt.U;return Se===gt&&He===_e},clone:function(){if(this.L.O||Xt(this),this.L.da)return this.L.count.value+=1,this;var _e=vt,Se=Object,He=Se.create,gt=Object.getPrototypeOf(this),mt=this.L;return _e=_e(He.call(Se,gt,{L:{value:{count:mt.count,ba:mt.ba,da:mt.da,O:mt.O,P:mt.P,S:mt.S,W:mt.W}}})),_e.L.count.value+=1,_e.L.ba=!1,_e},delete(){if(this.L.O||Xt(this),this.L.ba&&!this.L.da)throw new it("Object already scheduled for deletion");bi(this);var _e=this.L;--_e.count.value,_e.count.value===0&&(_e.S?_e.W.Y(_e.S):_e.P.M.Y(_e.O)),this.L.da||(this.L.S=void 0,this.L.O=void 0)},isDeleted:function(){return!this.L.O},deleteLater:function(){if(this.L.O||Xt(this),this.L.ba&&!this.L.da)throw new it("Object already scheduled for deletion");return this.L.ba=!0,this}});let oe=Symbol.dispose;oe&&(se[oe]=se.delete)})(),Object.assign(uo.prototype,{sa(se){return this.na&&(se=this.na(se)),se},ka(se){var oe;(oe=this.Y)==null||oe.call(this,se)},X:xe,N:function(se){function oe(){return this.ga?fo(this.M.$,{P:this.xa,O:_e,W:this,S:se}):fo(this.M.$,{P:this,O:se})}var _e=this.sa(se);if(!_e)return this.ka(se),null;var Se=Sn(this.M,_e);if(Se!==void 0)return Se.L.count.value===0?(Se.L.O=_e,Se.L.S=se,Se.clone()):(Se=Se.clone(),this.ka(se),Se);if(Se=this.M.ra(_e),Se=_t[Se],!Se)return oe.call(this);Se=this.fa?Se.oa:Se.pointerType;var He=yt(_e,this.M,Se.M);return He===null?oe.call(this):this.ga?fo(Se.M.$,{P:Se,O:He,W:this,S:se}):fo(Se.M.$,{P:Se,O:He})}}),i.print&&(p=i.print),i.printErr&&(g=i.printErr),i.wasmBinary&&(f=i.wasmBinary),i.thisProgram&&(c=i.thisProgram);var Zee,R3,lb,OSe={x:()=>N(""),q:se=>{var oe=ye[se];delete ye[se];var _e=oe.ia,Se=oe.Y,He=oe.la,gt=He.map(mt=>mt.va).concat(He.map(mt=>mt.Ba));Ue([se],gt,mt=>{var Tt={};return He.forEach((Bn,zn)=>{var fn=mt[zn],ps=Bn.ta,Gd=Bn.ua,nl=mt[zn+He.length],il=Bn.Aa,Fu=Bn.Ca;Tt[Bn.qa]={read:Up=>fn.N(ps(Gd,Up)),write:(Up,KL)=>{var Zd=[];il(Fu,Up,nl.T(Zd,KL)),he(Zd)},optional:mt[zn].optional}}),[{name:oe.name,N:Bn=>{var zn={},fn;for(fn in Tt)zn[fn]=Tt[fn].read(Bn);return Se(Bn),zn},T:(Bn,zn)=>{for(var fn in Tt)if(!(fn in zn||Tt[fn].optional))throw new TypeError(`Missing field: "${fn}"`);var ps=_e();for(fn in Tt)Tt[fn].write(ps,zn[fn]);return Bn!==null&&Bn.push(Se,ps),ps},X:xe,V:Se}]})},n:(se,oe,_e,Se,He)=>{oe=je(oe),Se=Se===0n;let gt=mt=>mt;if(Se){let mt=8*_e;gt=Tt=>BigInt.asUintN(mt,Tt),He=gt(He)}rn(se,{name:oe,N:gt,T:(mt,Tt)=>(typeof Tt=="number"&&(Tt=BigInt(Tt)),Tt),X:Jt(oe,_e,!Se),V:null})},B:(se,oe,_e,Se)=>{oe=je(oe),rn(se,{name:oe,N:function(He){return!!He},T:function(He,gt){return gt?_e:Se},X:function(He){return this.N(R[He])},V:null})},j:(se,oe,_e,Se,He,gt,mt,Tt,Bn,zn,fn,ps,Gd)=>{fn=je(fn),gt=Hn(He,gt),Tt&&(Tt=Hn(mt,Tt)),zn&&(zn=Hn(Bn,zn)),Gd=Hn(ps,Gd);var nl=Va(fn);Uo(nl,function(){Jo(`Cannot construct ${fn} due to unbound types`,[Se])}),Ue([se,oe,_e],Se?[Se]:[],il=>{if(il=il[0],Se)var Fu=il.M,Up=Fu.$;else Up=Rt.prototype;il=si(fn,function(...G3){if(Object.getPrototypeOf(this)!==KL)throw new it(`Use 'new' to construct ${fn}`);if(Zd.Z===void 0)throw new it(`${fn} has no accessible constructor`);var Bee=Zd.Z[G3.length];if(Bee===void 0)throw new it(`Tried to invoke ctor of ${fn} with invalid number of parameters (${G3.length}) - expected (${Object.keys(Zd.Z).toString()}) parameters instead!`);return Bee.apply(this,G3)});var KL=Object.create(Up,{constructor:{value:il}});il.prototype=KL;var Zd=new Cr(fn,il,KL,Gd,Fu,gt,Tt,zn);if(Zd.U){var JL;(JL=Zd.U).ja??(JL.ja=[]),Zd.U.ja.push(Zd)}return Fu=new uo(fn,Zd,!0,!1,!1),JL=new uo(fn+"*",Zd,!1,!1,!1),Up=new uo(fn+" const*",Zd,!1,!0,!1),_t[se]={pointerType:JL,oa:Up},ra(nl,il),[Fu,JL,Up]})},g:(se,oe,_e,Se,He,gt)=>{var mt=Ga(oe,_e);He=Hn(Se,He),Ue([],[se],Tt=>{Tt=Tt[0];var Bn=`constructor ${Tt.name}`;if(Tt.M.Z===void 0&&(Tt.M.Z=[]),Tt.M.Z[oe-1]!==void 0)throw new it(`Cannot register multiple constructors with identical number of parameters (${oe-1}) for class '${Tt.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return Tt.M.Z[oe-1]=()=>{Jo(`Cannot construct ${Tt.name} due to unbound types`,mt)},Ue([],mt,zn=>(zn.splice(1,0,null),Tt.M.Z[oe-1]=jo(Bn,zn,null,He,gt),[])),[]})},b:(se,oe,_e,Se,He,gt,mt,Tt,Bn)=>{var zn=Ga(_e,Se);oe=je(oe),oe=Wu(oe),gt=Hn(He,gt),Ue([],[se],fn=>{function ps(){Jo(`Cannot call ${Gd} due to unbound types`,zn)}fn=fn[0];var Gd=`${fn.name}.${oe}`;oe.startsWith("@@")&&(oe=Symbol[oe.substring(2)]),Tt&&fn.M.ya.push(oe);var nl=fn.M.$,il=nl[oe];return il===void 0||il.R===void 0&&il.className!==fn.name&&il.aa===_e-2?(ps.aa=_e-2,ps.className=fn.name,nl[oe]=ps):(Fo(nl,oe,Gd),nl[oe].R[_e-2]=ps),Ue([],zn,Fu=>(Fu=jo(Gd,Fu,fn,gt,mt,Bn),nl[oe].R===void 0?(Fu.aa=_e-2,nl[oe]=Fu):nl[oe].R[_e-2]=Fu,[])),[]})},z:se=>rn(se,tc),r:(se,oe,_e,Se)=>{function He(){}oe=je(oe),He.values={},rn(se,{name:oe,constructor:He,N:function(gt){return this.constructor.values[gt]},T:(gt,mt)=>mt.value,X:nc(oe,_e,Se),V:null}),Uo(oe,He)},d:(se,oe,_e)=>{var Se=Xr(se,"enum");oe=je(oe),se=Se.constructor,Se=Object.create(Se.constructor.prototype,{value:{value:_e},constructor:{value:si(`${Se.name}_${oe}`,function(){})}}),se.values[_e]=Se,se[oe]=Se},m:(se,oe,_e)=>{oe=je(oe),rn(se,{name:oe,N:Se=>Se,T:(Se,He)=>He,X:kl(oe,_e),V:null})},l:(se,oe,_e,Se,He,gt,mt)=>{var Tt=Ga(oe,_e);se=je(se),se=Wu(se),He=Hn(Se,He),Uo(se,function(){Jo(`Cannot call ${se} due to unbound types`,Tt)},oe-1),Ue([],Tt,Bn=>(Bn=[Bn[0],null].concat(Bn.slice(1)),ra(se,jo(se,Bn,null,He,gt,mt),oe-1),[]))},c:(se,oe,_e,Se,He)=>{oe=je(oe);let gt=Tt=>Tt;if(Se===0){var mt=32-8*_e;gt=Tt=>Tt<>>mt,He=gt(He)}rn(se,{name:oe,N:gt,T:(Tt,Bn)=>Bn,X:Jt(oe,_e,Se!==0),V:null})},a:(se,oe,_e)=>{function Se(gt){return new He(S.buffer,F[gt+4>>2],F[gt>>2])}var He=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][oe];_e=je(_e),rn(se,{name:_e,N:Se,X:Se},{wa:!0})},h:se=>{rn(se,Yl)},A:(se,oe)=>{oe=je(oe),rn(se,{name:oe,N(_e){var Se=(Se=_e+4)?mn.decode(R.subarray(Se,Re(R,Se,F[_e>>2],!0))):"";return lb(_e),Se},T(_e,Se){Se instanceof ArrayBuffer&&(Se=new Uint8Array(Se));var He=typeof Se=="string";if(!(He||ArrayBuffer.isView(Se)&&Se.BYTES_PER_ELEMENT==1))throw new it("Cannot pass non-string to std::string");var gt=He?Zo(Se):Se.length,mt=R3(4+gt+1),Tt=mt+4;return F[mt>>2]=gt,He?aa(Se,Tt,gt+1):R.set(Se,Tt),_e!==null&&_e.push(lb,mt),mt},X:xe,V(_e){lb(_e)}})},f:(se,oe,_e)=>{if(_e=je(_e),oe===2)var Se=Cn,He=rr,gt=Za;else Se=Gs,He=Ic,gt=jm;rn(se,{name:_e,N:mt=>{var Tt=Se(mt+4,F[mt>>2]*oe,!0);return lb(mt),Tt},T:(mt,Tt)=>{if(typeof Tt!="string")throw new it(`Cannot pass non-string to C++ string type ${_e}`);var Bn=gt(Tt),zn=R3(4+Bn+oe);return F[zn>>2]=Bn/oe,He(Tt,zn+4,Bn+oe),mt!==null&&mt.push(lb,zn),zn},X:xe,V(mt){lb(mt)}})},i:(se,oe,_e,Se,He,gt)=>{ye[se]={name:je(oe),ia:Hn(_e,Se),Y:Hn(He,gt),la:[]}},e:(se,oe,_e,Se,He,gt,mt,Tt,Bn,zn)=>{ye[se].la.push({qa:je(oe),va:_e,ta:Hn(Se,He),ua:gt,Ba:mt,Aa:Hn(Tt,Bn),Ca:zn})},C:(se,oe)=>{oe=je(oe),rn(se,{ma:!0,name:oe,N:()=>{},T:()=>{}})},p:(se,oe,_e)=>{var[Se,...He]=Ba(se,oe);oe=Se.T.bind(Se);var gt=He.map(Bn=>Bn.X.bind(Bn));se--;var mt={toValue:Jm};switch(se=gt.map((Bn,zn)=>{var fn=`argFromPtr${zn}`;return mt[fn]=Bn,`${fn}(args${zn?"+"+8*zn:""})`}),_e){case 0:var Tt="toValue(handle)";break;case 2:Tt="new (toValue(handle))";break;case 3:Tt="";break;case 1:mt.getStringOrSymbol=kSe,Tt="toValue(handle)[getStringOrSymbol(methodName)]"}return Tt+=`(${se})`,Se.ma||(mt.toReturnWire=oe,mt.emval_returnValue=x9,Tt=`return emval_returnValue(toReturnWire, destructorsRef, ${Tt})`),Tt=`return function (handle, methodName, destructorsRef, args) { + ${Tt} + }`,_e=new Function(Object.keys(mt),Tt)(...Object.values(mt)),Tt=`methodCaller<(${He.map(Bn=>Bn.name)}) => ${Se.name}>`,zL(si(Tt,_e))},E:ks,o:(se,oe,_e,Se,He)=>Dp[se](oe,_e,Se,He),D:se=>{var oe=Jm(se);he(oe),ks(se)},s:(se,oe,_e,Se)=>{var He=new Date().getFullYear(),gt=new Date(He,0,1).getTimezoneOffset();He=new Date(He,6,1).getTimezoneOffset(),F[se>>2]=60*Math.max(gt,He),w[oe>>2]=+(gt!=He),oe=mt=>{var Tt=Math.abs(mt);return`UTC${0<=mt?"-":"+"}${String(Math.floor(Tt/60)).padStart(2,"0")}${String(Tt%60).padStart(2,"0")}`},se=oe(gt),oe=oe(He),He{var oe=R.length;if(se>>>=0,2147483648=_e;_e*=2){var Se=oe*(1+.2/_e);Se=Math.min(Se,se+100663296);e:{Se=(Math.min(2147483648,65536*Math.ceil(Math.max(se,Se)/65536))-E.buffer.byteLength+65535)/65536|0;try{E.grow(Se),W();var He=1;break e}catch{}He=void 0}if(He)return!0}return!1},t:(se,oe)=>{var _e=0,Se=0,He;for(He of Gee()){var gt=oe+_e;F[se+Se>>2]=gt,_e+=aa(He,gt,1/0)+1,Se+=4}return 0},u:(se,oe)=>{var _e=Gee();F[se>>2]=_e.length,se=0;for(var Se of _e)se+=Zo(Se)+1;return F[oe>>2]=se,0},v:()=>52,w:function(){return 70},k:(se,oe,_e,Se)=>{for(var He=0,gt=0;gt<_e;gt++){var mt=F[oe>>2],Tt=F[oe+4>>2];oe+=8;for(var Bn=0;Bn>2]=He,0}},S_=await async function(){var se;function oe(Se){var He;return S_=Se.exports,E=S_.F,W(),sa=S_.H,Se=S_,Zee=Se.I,i._malloc=R3=Se.J,i._free=lb=Se.K,M--,(He=i.monitorRunDependencies)==null||He.call(i,M),M==0&&Q&&(Se=Q,Q=null,Se()),S_}M++,(se=i.monitorRunDependencies)==null||se.call(i,M);var _e={a:OSe};return i.instantiateWasm?new Promise(Se=>{i.instantiateWasm(_e,(He,gt)=>{Se(oe(He))})}):(k??(k=pe("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C0EAEKEDRQRAQZiDASEBIARBmIMBQRgQiwFFDQJBsIMBIQEgBEGwgwFBGBCLAUUNAkEAIQBBvO4BLQAARQRAA0AgAEECdCAAQcYfEKIDNgKM7gEgAEEBaiIAQQZHDQALQbzuAUEBOgAAQaTuAUGM7gEoAgA2AgALQYzuASEBIAJBCGoiAEGM7gFBGBCLAUUNAkGk7gEhASAAQaTuAUEYEIsBRQ0CQRgQNCIBRQ0BCyABIAIpAgg3AgAgASACKQIYNwIQIAEgAikCEDcCCAwBC0EAIQELIAJBIGokAEGc8QFBAToAAEGY8QEgATYCACABC80KAgV/CX4jAEHgAGsiBSQAIARC////////P4MhCiACIASFQoCAgICAgICAgH+DIQsgAkL///////8/gyIMQiCIIQ8gBEIwiKdB//8BcSEHAkACQCACQjCIp0H//wFxIglB//8Ba0GCgH5PBEAgB0H//wFrQYGAfksNAQsgAVAgAkL///////////8AgyINQoCAgICAgMD//wBUIA1CgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhCwwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCELIAMhAQwCCyABIA1CgICAgICAwP//AIWEUARAIAIgA4RQBEBCgICAgICA4P//ACELQgAhAQwDCyALQoCAgICAgMD//wCEIQtCACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEAgASANhEIAIQFQBEBCgICAgICA4P//ACELDAMLIAtCgICAgICAwP//AIQhCwwCCyABIA2EUARAQgAhAQwCCyACIAOEUARAQgAhAQwCCyANQv///////z9YBEAgBUHQAGogASAMIAEgDCAMUCIGG3lCwABCACAGG3ynIgZBD2sQREEQIAZrIQYgBSkDWCIMQiCIIQ8gBSkDUCEBCyACQv///////z9WDQAgBUFAayADIAogAyAKIApQIggbeULAAEIAIAgbfKciCEEPaxBEIAYgCGtBEGohBiAFKQNIIQogBSkDQCEDCyAHIAlqIAZqQf//AGshBgJAIApCD4YiDkIgiEKAgICACIQiAiABQiCIIgR+IhAgA0IPhiIRQiCIIgogD0KAgASEIg1+fCIPIBBUrSAPIANCMYggDoRC/////w+DIgMgDEL/////D4MiDH58Ig4gD1StfCACIA1+fCAOIA4gEUKAgP7/D4MiDyAMfiIRIAQgCn58IhAgEVStIBAgECADIAFC/////w+DIgF+fCIQVq18fCIOVq18IAMgDX4iEiACIAx+fCIRIBJUrUIghiARQiCIhHwgDiAOIBFCIIZ8Ig5WrXwgDiANIA9+Ig0gCiAMfnwiDCABIAJ+fCICIAMgBH58IgNCIIggAiADVq0gDCANVK0gAiAMVK18fEIghoR8IgIgDlStfCACIBAgBCAPfiIMIAEgCn58IgRCIIggBCAMVK1CIIaEfCIKIBBUrSAKIANCIIZ8IgMgClStfHwiCiACVK18IAogAyAEQiCGIgIgASAPfnwiASACVK18IgIgA1StfCIEIApUrXwiA0KAgICAgIDAAINQRQRAIAZBAWohBgwBCyABQj+IIANCAYYgBEI/iIQhAyAEQgGGIAJCP4iEIQQgAUIBhiEBIAJCAYaEIQILIAZB//8BTgRAIAtCgICAgICAwP//AIQhC0IAIQEMAQsCfiAGQQBMBEBBASAGayIHQf8ATQRAIAVBMGogASACIAZB/wBqIgYQRCAFQSBqIAQgAyAGEEQgBUEQaiABIAIgBxCKASAFIAQgAyAHEIoBIAUpAzAgBSkDOIRCAFKtIAUpAyAgBSkDEISEIQEgBSkDKCAFKQMYhCECIAUpAwAhBCAFKQMIDAILQgAhAQwCCyADQv///////z+DIAatQjCGhAsgC4QhCyABUCACQgBZIAJCgICAgICAgICAf1EbRQRAIAsgBEIBfCIBUK18IQsMAQsgASACQoCAgICAgICAgH+FhFBFBEAgBCEBDAELIAsgBCAEQgGDfCIBIARUrXwhCwsgACABNwMAIAAgCzcDCCAFQeAAaiQACwYAIAAQLQt8AQN/IwBBEGsiASQAIAEgADYCDCMAQRBrIgIkACAAKAIAQX9HBEAgAkEIaiACQQxqIAFBDGoQVRBVIQMDQCAAKAIAQQFGDQALIAAoAgBFBEAgAEEBNgIAIAMQ0gIgAEF/NgIACwsgAkEQaiQAIAAoAgQgAUEQaiQAQQFrCyAAIAAgAUEBazYCBCAAQeDVATYCACAAQZCtATYCACAAC/cFAQl/IwBBEGsiCSQAIAEQ1wIgCUEMaiABEFUhCCAAQQhqIgMQayACTQRAAkAgAkEBaiIAIAMQayIBSwRAIwBBIGsiCiQAAkAgACABayIHIAMoAgggAygCBGtBAnVNBEAgAyAHENkCDAELIApBDGohAQJ/IAMQayAHaiEFIwBBEGsiACQAIAAgBTYCDCAFELwCIgRNBEAgAxC5AiIFIARBAXZJBEAgACAFQQF0NgIIIABBCGogAEEMahCgASgCACEECyAAQRBqJAAgBAwBCxCMAQALIQQgAxBrIQUjAEEQayIAJAAgASADQQxqIgs2AhAgAUEANgIMIAQEfyAAQQhqIAsgBBC7AiAAKAIIIQYgACgCDAVBAAshBCABIAY2AgAgASAGIAVBAnRqIgU2AgggASAGIARBAnRqNgIMIAEgBTYCBCAAQRBqJAAjAEEQayIGJAAgASgCCCEEIAZBBGoiACABQQhqNgIIIAAgBDYCACAAIAQgB0ECdGo2AgQgACgCACEEA0AgACgCBCAERwRAIAEoAhAaIAQQugIgACAAKAIAQQRqIgQ2AgAMAQsLIAAoAgggACgCADYCACAGQRBqJAAgASgCBCADKAIAIgAgAygCBGtqIQQgAygCBCAAayIHBEAgBCAAIAf8CgAACyABIAQ2AgQgAyADKAIANgIEIAMgAUEEahDXASADQQRqIAFBCGoQ1wEgA0EIaiABQQxqENcBIAEgASgCBDYCACADEGsaIAEoAgQhAANAIAEoAggiBCAARwRAIAEgBEEEazYCCCABKAIQGgwBCwsgASgCACIABEAgASgCECAAIAEoAgwgASgCAGtBAnUQuAILCyAKQSBqJAAMAQsgACABSQRAIAMoAgAgAEECdGohACADEGsaIAMgABDYAgsLCyADIAIQggEoAgAEQCADIAIQggEoAgAQvwELIAgQrAEhACADIAIQggEgADYCACAIKAIAIQAgCEEANgIAIAAEQCAAEL8BCyAJQRBqJAALySgBC38jAEEQayIKJAACQAJAAkACQAJAAkACQAJAAkACQCAAQfQBTQRAQYzqASgCACIEQRAgAEELakH4A3EgAEELSRsiBkEDdiIAdiIBQQNxBEACQCABQX9zQQFxIABqIgJBA3QiAUG06gFqIgAgASgCvOoBIgEoAggiBUYEQEGM6gEgBEF+IAJ3cTYCAAwBCyAFIAA2AgwgACAFNgIICyABQQhqIQAgASACQQN0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KAIAKAIcEQQAC8EBAQN/IAAtAABBIHFFBEACQCAAKAIQIgMEfyADBSAAEN8BDQEgACgCEAsgACgCFCIEayACSQRAIAAgASACIAAoAiQRAwAaDAELAkACQCACRSAAKAJQQQBIcg0AIAIhAwNAIAEgA2oiBUEBay0AAEEKRwRAIANBAWsiAw0BDAILCyAAIAEgAyAAKAIkEQMAIANJDQIgAiADayECIAAoAhQhBAwBCyABIQULIAQgBSACEHEaIAAgACgCFCACajYCFAsLC6EBAQJ/AkAgABAfRSACIAFrQQVIcg0AIAEgAhDHASACQQRrIQQgABAjIgIgABAfaiEFAkADQAJAIAIsAAAhACABIARPDQAgAEEATCAAQf8ATnJFBEAgASgCACACLAAARw0DCyABQQRqIQEgAiAFIAJrQQFKaiECDAELCyAAQQBMIABB/wBOcg0BIAIsAAAgBCgCAEEBa0sNAQsgA0EENgIACwtQAQF+AkAgA0HAAHEEQCABIANBQGqthiECQgAhAQwBCyADRQ0AIAIgA60iBIYgAUHAACADa62IhCECIAEgBIYhAQsgACABNwMAIAAgAjcDCAtpAQF/IwBBgAJrIgUkACAEQYDABHEgAiADTHJFBEAgBSABIAIgA2siA0GAAiADQYACSSIBGxCYAiABRQRAA0AgACAFQYACEEIgA0GAAmsiA0H/AUsNAAsLIAAgBSADEEILIAVBgAJqJAALBABBAAsKACAALQALQQd2CwoAIABB0PIBEHoLCgAgAEHY8gEQegvPCQIEfwR+IwBB8ABrIgYkACAEQv///////////wCDIQkCQAJAIAFQIgUgAkL///////////8AgyIKQoCAgICAgMD//wB9QoCAgICAgMCAgH9UIApQG0UEQCADQgBSIAlCgICAgICAwP//AH0iC0KAgICAgIDAgIB/ViALQoCAgICAgMCAgH9RGw0BCyAFIApCgICAgICAwP//AFQgCkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEEIAEhAwwCCyADUCAJQoCAgICAgMD//wBUIAlCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhBAwCCyABIApCgICAgICAwP//AIWEUARAQoCAgICAgOD//wAgAiABIAOFIAIgBIVCgICAgICAgICAf4WEUCIFGyEEQgAgASAFGyEDDAILIAMgCUKAgICAgIDA//8AhYRQDQEgASAKhFAEQCADIAmEQgBSDQIgASADgyEDIAIgBIMhBAwCCyADIAmEUEUNACABIQMgAiEEDAELIAMgASABIANUIAkgClYgCSAKURsiCBshCiAEIAIgCBsiDEL///////8/gyEJIAIgBCAIGyILQjCIp0H//wFxIQcgDEIwiKdB//8BcSIFRQRAIAZB4ABqIAogCSAKIAkgCVAiBRt5QsAAQgAgBRt8pyIFQQ9rEEQgBikDaCEJIAYpA2AhCkEQIAVrIQULIAEgAyAIGyEDIAtC////////P4MhASAHBH4gAQUgBkHQAGogAyABIAMgASABUCIHG3lCwABCACAHG3ynIgdBD2sQREEQIAdrIQcgBikDUCEDIAYpA1gLQgOGIANCPYiEQoCAgICAgIAEhCEBIAlCA4YgCkI9iIQgAiAEhSEEAn4gA0IDhiICIAUgB0YNABogBSAHayIHQf8ASwRAQgAhAUIBDAELIAZBQGsgAiABQYABIAdrEEQgBkEwaiACIAEgBxCKASAGKQM4IQEgBikDMCAGKQNAIAYpA0iEQgBSrYQLIQlCgICAgICAgASEIQsgCkIDhiEKAkAgBEIAUwRAQgAhA0IAIQQgCSAKhSABIAuFhFANAiAKIAl9IQIgCyABfSAJIApWrX0iBEL/////////A1YNASAGQSBqIAIgBCACIAQgBFAiBxt5QsAAQgAgBxt8p0EMayIHEEQgBSAHayEFIAYpAyghBCAGKQMgIQIMAQsgCSAKfCICIAlUrSABIAt8fCIEQoCAgICAgIAIg1ANACAJQgGDIARCP4YgAkIBiISEIQIgBUEBaiEFIARCAYghBAsgDEKAgICAgICAgIB/gyEDIAVB//8BTgRAIANCgICAgICAwP//AIQhBEIAIQMMAQtBACEHAkAgBUEASgRAIAUhBwwBCyAGQRBqIAIgBCAFQf8AahBEIAYgAiAEQQEgBWsQigEgBikDACAGKQMQIAYpAxiEQgBSrYQhAiAGKQMIIQQLIARCPYYgAkIDiIQhASAEQgOIQv///////z+DIAetQjCGhCADhCEEAkACQCACp0EHcSIFQQRHBEAgBCABIAEgBUEES618IgNWrXwhBAwBCyAEIAEgASABQgGDfCIDVq18IQQMAQsgBUUN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C14BA38gAEEANgIIIABCADcCACABKAIAIQMgASgCBCIBIANrIgRBAnUiAgRAIAAgAhCuAyAAKAIEIQIgBEUgASADRnJFBEAgAiADIAT8CgAACyAAIAIgBGo2AgQLIAALDQAgACgCACABQQJ0agsXACAAEEcEQCAAIAE2AgQPCyAAIAEQUAthAQF/IwBBEGsiAiQAIAIgADYCDAJAIAAgAUYNAANAIAIgAUEBayIBNgIIIAAgAU8NASACKAIMIAIoAggQ8wIgAiACKAIMQQFqIgA2AgwgAigCCCEBDAALAAsgAkEQaiQAC6wBAQR/IwBBEGsiByQAAkAgAEUNACAEKAIMIQYgAiABa0ECdSIIQQBKBEAgACABIAgQjQIgCEcNAQsgAyABa0ECdSIBIAZIBEAgACAHQQRqIAYgAWsiASAFEP0CIgUQIyABEI0CIQYgBRA5GiABIAZHDQELIAMgAmtBAnUiAUEASgRAIAAgAiABEI0CIAFHDQELIAQoAgwaIARBADYCDCAAIQkLIAdBEGokACAJCycBAX8jAEEQayIDJAAgAyACNgIMIABB5AAgASACENEBIANBEGokAAvbAQIBfwJ+QQEhBAJAIABCAFIgAUL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFEbDQAgAkIAUiADQv///////////wCDIgZCgICAgICAwP//AFYgBkKAgICAgIDA//8AURsNACAAIAKEIAUgBoSEUARAQQAPCyABIAODQgBZBEAgACACVCABIANTIAEgA1EbBEBBfw8LIAAgAoUgASADhYRCAFIPCyAAIAJWIAEgA1UgASADURsEQEF/DwsgACAChSABIAOFhEIAUiEECyAEC+wBAQR/IwBBEGsiBCQAIABBADYCBCMAQRBrIgUkACAEQQA6AA8gACAAKAIAQQxrKAIAahDZASEGIAAgACgCAEEMaygCAGohAwJAIAYEQCADKAJIBEAgACAAKAIAQQxrKAIAaigCSBDFAwsgBCAAIAAoAgBBDGsoAgBqENkBOgAPDAELIANBBBDVAQsgBUEQaiQAQQQhAyAELQAPBEAgACAAIAAoAgBBDGsoAgBqKAIYIgMgASACIAMoAgAoAiARAwAiATYCBEEGQQAgASACRxshAwsgACAAKAIAQQxrKAIAaiADENUBIARB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AxsLPAAgAEEANgIIIABCADcCACAAIAEoAgA2AgAgACABKAIENgIEIAAgASgCCDYCCCABQQA2AgggAUIANwIACywBAX8gAEEANgIIIABCADcCACAAIAEoAgAiAiABKAIEIgEgASACaxDAAyAACwgAIABB/wFxC/wBAQN/IAAoAgQgACgCACIDa0ECdSICIAFJBEAjAEEgayIDJAACQCABIAJrIgIgACgCCCAAKAIEIgFrQQJ1TQRAIAAoAgQiASACQQJ0aiECA0AgASACRgRAIAAgAjYCBAUgAUEANgIAIAFBBGohAQwBCwsMAQsgA0EMaiAAIAEgACgCAGtBAnUgAmoQtgEgACgCBCAAKAIAa0ECdSAAEIcCIgQoAggiASACQQJ0aiECA0AgASACRwRAIAFBADYCACABQQRqIQEMAQsLIAQgAjYCCCAAIAQQhQIgBBCBAgsgA0EgaiQADwsgASACSQRAIAAgAyABQQJ0ajYCBAsLUgECf0HU3gEoAgAiASAAQQdqQXhxIgJqIQACQCACQQAgACABTRtFBEAgAD8AQRB0TQ0BIAAQGA0BC0GI6gFBMDYCAEF/DwtB1N4BIAA2AgAgAQt/AgF+A38CQCAAQoCAgIAQVARAIAAhAgwBCwNAIAFBAWsiASAAIABCCoAiAkIKfn2nQTByOgAAIABC/////58BViACIQANAAsLIAJQRQRAIAKnIQMDQCABQQFrIgEgAyADQQpuIgRBCmxrQTByOgAAIANBCUsgBCEDDQALCyABC78BAQN/IAAoAgQgACgCACIDayICIAFJBEAjAEEgayIDJAACQCABIAJrIgIgACgCCCAAKAIEIgFrTQRAIAAgAhCYAwwBCyACIANBDGogACABIAJqIAAoAgBrELQBIAAoAgQgACgCAGsgABDGASIEKAIIIgFqIQIDQCABIAJHBEAgAUEAOgAAIAFBAWohAQwBCwsgBCACNgIIIAAgBBDvASAEELoBCyADQSBqJAAPCyABIAJJBEAgACABIANqNgIECwt9AQN/AkACQCAAIgFBA3FFDQAgAS0AAEUEQEEADwsDQCABQQFqIgFBA3FFDQEgAS0AAA0ACwwBCwNAIAEiAkEEaiEBQYCChAggAigCACIDayADckGAgYKEeHFBgIGChHhGDQALA0AgAiIBQQFqIQIgAS0AAA0ACwsgASAA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BEBBCiEBIAAQXgwBCyAAEH5BAWshASAAKAIECyIDIAFGBEAgACABQQEgASABEPQBIAAQIxoMAQsgABAjGiAEDQAgACIBIANBAWoQUAwBCyAAKAIAIQEgACADQQFqNgIECyABIANqIgAgAkEPahBdIAJBADoADiAAQQFqIAJBDmoQXSACQRBqJAALoQIBA38jAEEgayIIJABB9////wciCSABQX9zaiACTwRAIAAQIyEKIAFB8////wNJBEAgCCABQQF0NgIcIAggASACajYCECAIQRBqIAhBHGoQoAEoAgAQnwFBAWohCQsgCEEcaiAIQRhqIAAQVSgCABC8ASAIQRBqIAkQngEgCCgCECECIAgoAhQaIAQEQCACIAogBBBNCyAGBEAgAiAEaiAHIAYQTQsgAyAEIAVqIglrIQcgAyAJRwRAIAIgBGogBmogBCAKaiAFaiAHEE0LIAFBCkcEQCAKEIsCCyAAIAI2AgAgACAIKAIUEFwgACAEIAZqIAdqIgA2AgQgCEEAOgAPIAAgAmogCEEPahBdIAhBHGoQuwEgCEEgaiQADwsQWwALCQAgAEEBEKgCCwoAIAAoAgAQHxoLCQAgACABEFUaCwcAIABBAkkLBABBBAsoAQF/IAAgACgCBEEBayIBNgIEIAFBf0YEQCAAIAAoAgAoAggRAgALC5UBAQN/IwBBEGsiBCQAIAQgATYCDCAEIAM2AgggBEEEaiAEQQxqEGMgBCgCCCEDIwBBEGsiASQAIAEgAzYCDCABIAM2AghBfyEFAkBBAEEAIAIgAxDRASIDQQBIDQAgACADQQFqIgMQNCIANgIAIABFDQAgACADIAIgASgCDBDRASEFCyABQRBqJAAQYiAEQRBqJAAgBQsPACAAIAAoAgAoAiQRAAALEQAgACABIAEoAgAoAiARAQALDgAgACABKAIANgIAIAALCABB/////wcLBQBB/wALOwAgACADNgIQIAAgAQR/IAEQUwVBAAsiAzYCACAAIAIgA2oiAjYCCCAAIAEgA2o2AgwgACACNgIEIAALYQEBfyMAQRBrIgIkACACIAA2AgwCQCAAIAFGDQADQCACIAFBBGsiATYCCCAAIAFPDQEgAigCDCACKAIIENcBIAIgAigCDEEEaiIANgIMIAIoAgghAQwACwALIAJBEGokAAs5AgF/AX4jAEEQayIEJAAgAykDACEFIAQgAykDCDcDCCAEIAU3AwAgACABIAIgBBDAASAEQRBqJAAL0AEBAn8gAkGAEHEEQCAAQSs6AAAgAEEBaiEACyACQYAIcQRAIABBIzoAACAAQQFqIQALIAJBhAJxIgNBhAJHBEAgAEGu1AA7AAAgAEECaiEACyACQYCAAXEhAgNAIAEtAAAiBARAIAAgBDoAACAAQQFqIQAgAUEBaiEBDAELCyAAAn8CQCADQYACRwRAIANBBEcNAUHGAEHmACACGwwCC0HFAEHlACACGwwBC0HBAEHhACACGyADQYQCRg0AGkHHAEHnACACGws6AAAgA0GEAkcLKwEBfyMAQRBrIgUkACAFIAQoAgA2AgAgACABIAIgAyAFEJYBIAVBEGokAAuqAQEBfwJAIANBgBBxRSACRXINACADQcoAcSIEQQhGIARBwABGcg0AIABBKzoAACAAQQFqIQALIANBgARxBEAgAEEjOgAAIABBAWohAAsDQCABLQAAIgQEQCAAIAQ6AAAgAEEBaiEAIAFBAWohAQwBCwsgAAJ/Qe8AIANBygBxIgFBwABGDQAaQdgAQfgAIANBgIABcRsgAUEIRg0AGkHkAEH1ACACGws6AAALDAAgABAjIAFBAnRqC5IEAQt/IwBBgAFrIgokACAKIAE2AnwgAiADELUCIQggCkHjADYCECAKQQhqQQAgCkEQaiIJEDYhDwJAAkACQCAIQeUATwRAIAgQNCIJRQ0BIA8gCRA8CyAJIQcgAiEBA0AgASADRgRAA0AgACAKQfwAaiIBECtBASAIGwRAIAAgARArBEAgBSAFKAIAQQJyNgIACwNAIAIgA0YNBiAJLQAAQQJGDQcgCUEBaiEJIAJBDGohAgwACwALIAAQNyEOIAZFBEAgBCAOEEEhDgsgDUEBaiEMQQAhECAJIQcgAiEBA0AgASADRgRAIAwhDSAQRQ0CIAAQPhogCSEHIAIhASAIIAtqQQJJDQIDQCABIANGBEAMBAUCQCAHLQAAQQJHDQAgARAfIA1GDQAgB0EAOgAAIAtBAWshCwsgB0EBaiEHIAFBDGohAQwBCwALAAUCQCAHLQAAQQFHDQAgASANEMwBKAIAIRECQCAGBH8gEQUgBCAREEELIA5GBEBBASEQIAEQHyAMRw0CIAdBAjoAACALQQFqIQsMAQsgB0EAOgAACyAIQQFrIQgLIAdBAWohByABQQxqIQEMAQsACwALAAUgB0ECQQEgARBaIgwbOgAAIAdBAWohByABQQxqIQEgCyAMaiELIAggDGshCAwBCwALAAsQPQALIAUgBSgCAEEEcjYCAAsgDxA1IApBgAFqJAAgAgsRACAAIAEgACgCACgCDBEEAAuTBAELfyMAQYABayIKJAAgCiABNgJ8IAIgAxC1AiEIIApB4wA2AhAgCkEIakEAIApBEGoiCRA2IQ8CQAJAAkAgCEHlAE8EQCAIEDQiCUUNASAPIAkQPAsgCSEHIAIhAQNAIAEgA0YEQANAIAAgCkH8AGoiARAsQQEgCBsEQCAAIAEQLARAIAUgBSgCAEECcjYCAAsDQCACIANGDQYgCS0AAEECRg0HIAlBAWohCSACQQxqIQIMAAsACyAAEDghDiAGRQRAIAQgDhDOASEOCyANQQFqIQxBACEQIAkhByACIQEDQCABIANGBEAgDCENIBBFDQIgABA/GiAJIQcgAiEBIAggC2pBAkkNAgNAIAEgA0YEQAwEBQJAIActAABBAkcNACABEB8gDUYNACAHQQA6AAAgC0EBayELCyAHQQFqIQcgAUEMaiEBDAELAAsABQJAIActAABBAUcNACABIA0QIiwAACERAkAgBgR/IBEFIAQgERDOAQsgDkYEQEEBIRAgARAfIAxHDQIgB0ECOgAAIAtBAWohCwwBCyAHQQA6AAALIAhBAWshCAsgB0EBaiEHIAFBDGohAQwBCwALAAsABSAHQQJBASABEFoiDBs6AAAgB0EBaiEHIAFBDGohASALIAxqIQsgCCAMayEIDAELAAsACxA9AAsgBSAFKAIAQQRyNgIACyAPEDUgCkGAAWokACACC0oBAn8CQCAALQAAIgJFIAIgAS0AACIDR3INAANAIAEtAAEhAyAALQABIgJFDQEgAUEBaiEBIABBAWohACACIANGDQALCyACIANrC4QBAQJ/IwBBoAFrIgQkACAEIAAgBEGeAWogARsiADYClAEgBCABQQFrIgVBACABIAVPGzYCmAEgBEEAQZAB/AsAIARBfzYCTCAEQeIANgIkIARBfzYCUCAEIARBnwFqNgIsIAQgBEGUAWo2AlQgAEEAOgAAIAQgAiADEM0DIARBoAFqJAALuwIBBH8gA0H87QEgAxsiBSgCACEDAkAC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IBAtIAAoAiQQLSAAKAIwEC0gACgCPBAtCyAACwcAIAEgAGsLDABBARDWARogABAtCwkAIAAQsQEQLQsTACAAIAEgAiAAKAIAKAIwEQMACwkAIAAQ2AEQLQsMACAAQQRqENoBIAALDAAgAEEIahDaASAACygBAn8jAEEQayICJAAgASgCACAAKAIASCEDIAJBEGokACABIAAgAxsLEAAgACABNwMIIABCADcDAAsCAAsUACAAQZj1ADYCACAAQQRqECUgAAvyAwICfgV/IwBBIGsiBSQAIAFC////////P4MhAgJ+IAFCMIhC//8BgyIDpyIEQYH4AGtB/Q9NBEAgAkIEhiAAQjyIhCECIARBgPgAa60hAwJAIABC//////////8PgyIAQoGAgICAgICACFoEQCACQgF8IQIMAQsgAEKAgICAgICAgAhSDQAgAkIBgyACfCECC0IAIAIgAkL/////////B1YiBBshACAErSADfAwBCyAAIAKEUCADQv//AVJyRQRAIAJCBIYgAEI8iIRCgICAgICAgASEIQBC/w8MAQsgBEH+hwFLBEBCACEAQv8PDAELQYD4AEGB+AAgA1AiBxsiCCAEayIGQfAASgRAQgAhAEIADAELIAVBEGogACACIAJCgICAgICAwACEIAcbIgJBgAEgBmsQRCAFIAAgAiAGEIoBIAUpAwhCBIYgBSkDACICQjyIhCEAAkAgBCAIRyAFKQMQIAUpAxiEQgBSca0gAkL//////////w+DhCICQoGAgICAgICACFoEQCAAQgF8IQAMAQsgAkKAgICAgICAgAhSDQAgAEIBgyAAfCEACyAAQoCAgICAgIAIhSAAIABC/////////wdWIgQbIQAgBK0LIQIgBUEgaiQAIAFCgICAgICAgICAf4MgAkI0hoQgAIS/C4kCAAJAIAAEfyABQf8ATQ0BAkBB3OEBKAIAKAIARQRAIAFBgH9xQYC/A0YNAwwBCyABQf8PTQRAIAAgAUE/cUGAAXI6AAEgACABQQZ2QcABcjoAAEECDwsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMPCyABQYCABGtB//8/TQRAIAAgAUE/cUGAAXI6AAMgACABQRJ2QfABcjoAACAA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AXI2AgQgCSAGIAkoAgBBAXFyQQJyNgIAIAEgBmoiAiACKAIEQQFyNgIEIAEgBhDbAQsCQCAAKAIEIgJBA3FFDQAgAkF4cSIBIAVBEGpNDQAgACAFIAJBAXFyQQJyNgIEIAAgBWoiBCABIAVrIgJBA3I2AgQgACABaiIBIAEoAgRBAXI2AgQgBCACENsBCyAAQQhqCwsiAEUNARogCCAANgIMQQAhAQsgAQshAEEAIAgoAgwgABshAQsgCEEQaiQAIAENAEHk/gEoAgAiAEUNACAAEQwADAELCyABRQRAEOsBCyABCwoAIAEgAGtBDG0LCQAgABAuNgIACyMBAn8gACEBA0AgASICQQRqIQEgAigCAA0ACyACIABrQQJ1Cy8BAX8jAEEQayIDJAACQCAAIAFGBEAgAEEAOgB4DAELIAEgAhCpAQsgA0EQaiQACxAAIAAoAgggACgCAGtBAnULCQAgAEEANgIAC0kBAX8jAEEQayIDJAACQAJAIAJBHksNACABLQB4QQFxDQAgAUEBOgB4DAELIAIQwQIhAQsgA0EQaiQAIAAgAjYCBCAAIAE2AgALOgECfyMAQRBrIgAkACAAQf////8DNgIMIABB/////wc2AgggAEEMaiAAQQhqELUDKAIAIABBEGokAAs0AQF/IwBBEGsiAyQAIAMgARBzNgIMIAMgAhBzNgIIIAAgA0EMaiADQQhqEGYgA0EQaiQAC04BAX8jAEEQayIDJAAgAyABNgIIIAMgADYCDCADIAI2AgRBACEBIANBBGoiACADQQxqENMBRQRAIAAgA0EIahDTASEBCyADQRBqJAAgAQswAQF/IwBBEGsiAyQAIAMgATYCDCADIAI2AgggACADQQxqIANBCGoQZiADQRBqJAALMwEBfyMAQRBrIgMkACAAEB8aIAAgAhCDASADQQA6AA8gASACaiADQQ9qEF0gA0EQaiQACzEAIABB/////wNLBEAQqgIACwJ/IABBAnQhAEEEENYBBEAgAEEEELQCDAELIAAQUwsLCQAgABDtARAtCxUAIABB8KoBNgIAIABBEGoQIBogAAsVACAAQciqATYCACAAQQxqECAaIAALgAMBBH8gAiEAA0ACQCAEIAdNIAAgA09yDQAgACwAACIBQf8BcSEFAn9BASABQQBODQAaIAFBQkkNASABQV9NBEAgAyAA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ZEYNAEEAIQAgC0EANgIQIBEgDygCACALKAJkIAtBEGoQQyALKAIQBEAgBSAFKAIAQQRyNgIADAELQQEhAAsgEBAgGiANECAaIA4QIBogDBAgGiARECAaIA8QNQwDCyACIQELIANBAWohAwwACwALIAtBkARqJAAgAAsMACAAQQFBLRD9AhoLCwAgAEEBQS0QsAILHAEBfyAALQAAIQIgACABLQAAOgAAIAEgAjoAAAtlAQF/IwBBEGsiBiQAIAZBADoADyAGIAU6AA4gBiAEOgANIAZBJToADCAFBEAgBkENaiAGQQ5qEPMCCyACIAEgASACKAIAEIoCIAZBDGogAyAAKAIAEJ4DIAFqNgIAIAZBEGokAAtBACABIAIgAyAEQQQQZyEBIAMtAABBBHFFBEAgACABQdAPaiABQewOaiABIAFB5ABJGyABQcUASBtB7A5rNgIACwtAACACIAMgAEEIaiAAKAIIKAIEEQAAIgAgAEGgAmogBSAEQQAQzQEgAGsiAEGfAkwEQCABIABBDG1BDG82AgALC0AAIAIgAyAAQQhqIAAoAggoAgARAAAiACAAQagBaiAFIARBABDNASAAayIAQacBTARAIAEgAEEMbUEHbzYCAAsLQQAgASACIAMgBEEEEGghASADLQAAQQRxRQRAIAAgAUHQD2ogAUHsDmogASABQeQASRsgAUHFAEgbQewOazYCAAsLQAAgAiADIABBCGogACgCCCgCBBEAACIAIABBoAJqIAUgBEEAEM8BIABrIgBBnwJMBEAgASAAQQxtQQxvNgIACwtAACACIAMgAEEIaiAAKAIIKAIAEQAAIgAgAEGoAWogBSAEQQAQzwEgAGsiAEGnAUwEQCABIABBDG1BB282AgALCxgBAX9BDBBTIgBBADYCCCAAQgA3AgAgAAsEAEECC8oBAQR/IwBBEGsiAyQAAkAgAUH3////A00EQAJAIAEQvQEEQCAAIAEQUCAAIQQMAQsgA0EIaiABEJABQQFqEI8BIAMoAgwaIAAgAygCCCIENgIAIAAgAygCDBBcIAAgATYCBAsjAEEQayIFJAAgBSACNgIMIAQhBiABIQIDQCACBEAgBiAFKAIMNgIAIAJBAWshAiAGQQRqIQYMAQsLIAVBEGokACADQQA2AgQgBCABQQJ0aiADQQRqEFYgA0EQaiQADAELEFsA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hoRCAEKAgICAgIDAwz8QLyAFKQNIIQIgBSkDQCEEDAELIAlC////////P4MgBiAHcq1CMIaEIQILIAAgBDcDACAAIAI3AwggBUGAAWokAAuIEAIFfw9+IwBB0AJrIgUkACAEQv///////z+DIQsgAkL///////8/gyEKIAIgBIVCgICAgICAgICAf4MhDCAEQjCIp0H//wFxIQcCQAJAIAJCMIinQf//AXEiCEH//wFrQYKAfk8EQCAHQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIg5CgICAgICAwP//AFQgDkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEMDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQwgAyEBDAILIAEgDkKAgICAgIDA//8AhYRQBEAgAyACQoCAgICAgMD//wCFhFAEQEIAIQFCgICAgICA4P//ACEMDAMLIAxCgICAgICAwP//AIQhDEIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQEIAIQEMAgsgASAOhFAEQEKAgICAgIDg//8AIAwgAiADhFAbIQxCACEBDAILIAIgA4RQBEAgDEKAgICAgIDA//8AhCEMQgAhAQwCCyAOQv///////z9YBEAgBUHAAmogASAKIAEgCiAKUCIGG3lCwABCACAGG3ynIgZBD2sQREEQIAZrIQYgBSkDyAIhCiAFKQPAAiEBCyACQv///////z9WDQAgBUGwAmogAyALIAMgCyALUCIJG3lCwABCACAJG3ynIglBD2sQRCAGIAlqQRBrIQYgBSkDuAIhCyAFKQOwAiEDCyAFQaACaiALQoCAgICAgMAAhCISQg+GIANCMYiEIgJCAEKAgICAsOa8gvUAIAJ9IgRCABBAIAVBkAJqQgAgBSkDqAJ9QgAgBEIAEEAgBUGAAmogBSkDmAJCAYYgBSkDkAJCP4iEIgRCACACQgAQQCAFQfABaiAEQgBCACAFKQOIAn1CABBAIAVB4AFqIAUpA/gBQgGGIAUpA/ABQj+IhCIEQgAgAkIAEEAgBUHQAWogBEIAQgAgBSkD6AF9QgAQQCAFQcABaiAFKQPYAUIBhiAFKQPQAUI/iIQiBEIAIAJCABBAIAVBsAFqIARCAEIAIAUpA8gBfUIAEEAgBUGgAWogAkIAIAUpA7gBQgGGIAUpA7ABQj+IhEIBfSICQgAQQCAFQZABaiADQg+GQgAgAkIAEEAgBUHwAGogAkIAQgAgBSkDqAEgBSkDoAEiDiAFKQOYAXwiBCAOVK18IARCAVatfH1CABBAIAVBgAFqQgEgBH1CACACQgAQQCAGIAggB2tqIghB//8AaiEGAn4gBSkDcCITQgGGIg0gBSkDiAEiD0IBhiAFKQOAAUI/iIR8IhBC5+wAfSIUQiCIIgIgCkKAgICAgIDAAIQiFUIBhiIWQiCIIgR+IhEgAUIBhiIOQiCIIgsgECAUVq0gDSAQVq0gBSkDeEIBhiATQj+IhCAPQj+IfHx8QgF9IhNCIIgiEH58Ig0gEVStIA0gDSATQv////8PgyITIAFCP4giFyAKQgGGhEL/////D4MiCn58Ig1WrXwgBCAQfnwgBCATfiIRIAogEH58Ig8gEVStQiCGIA9CIIiEfCANIA9CIIZ8Ig8gDVStfCAPIA8gFEL/////D4MiFCAKfiINIAIgC358IhEgDVStIBEgESATIA5C/v///w+DIg1+fCIRVq18fCIPVq18IA8gBCAUfiIYIA0gEH58IgQgAiAKfnwiCiALIBN+fCIQQiCIIAogEFatIAQgGFStIAQgClatfHxCIIaEfCIEIA9UrXwgBCAEIBEgAiANfiIKIAsgFH58IgJCIIggAiAKVK1CIIaEfCIKIBFUrSAKIAogEEIghnwiClatfHwiBFatfCAEIAQgCiACQiCGIgIgDSAUfnwgAlStQn+FIgJWIAIgClJxrXwiBFatfCICQv////////8AWARAIBYgF4QhFSAFQdAAaiAEIAJCgICAgICAwABUIgetIguGIgogAiALhiAEQgGIIAdBP3OtiIQiBCADIBIQQCAIQf7/AGogBiAHG0EBayEGIAFCMYYgBSkDWH0gBSkDUCIBQgBSrX0hC0IAIAF9DAELIAVB4ABqIAJCP4YgBEIBiIQiCiACQgGIIgQgAyASEEAgAUIwhiAFKQNofSAFKQNgIgJCAFKtfSELIAEhDkIAIAJ9CyECIAZB//8BTgRAIAxCgICAgICAwP//AIQhDEIAIQEMAQsCfiAGQQBKBEAgC0IBhiACQj+IhCEBIARC////////P4MgBq1CMIaEIQsgAkIBhgwBCyAGQY9/TARAQgAhAQwCCyAFQUBrIAogBEEBIAZrEIoBIAVBMGogDiAVIAZB8ABqEEQgBUEgaiADIBIgBSkDQCIKIAUpA0giCxBAIAUpAzggBSkDKEIBhiAFKQMgIgFCP4iEfSAFKQMwIgIgAUIBhiIEVK19IQEgAiAEfQshAiAFQRBqIAMgEkIDQgAQQCAFIAMgEkIFQgAQQCALIAogAyAKQgGDIgMgAnwiAlQgASACIANUrXwiASASViABIBJRG618IgMgClStfCIEIAMgAyAEQoCAgICAgMD//wBUIAIgBSkDEFYgASAFKQMYIgRWIAEgBFEbca18IgNWrXwiBCADIARCgICAgICAwP//AFQgAiAFKQMAViABIAUpAwgiAlYgASACURtxrXwiASADVK18IAyEIQwLIAAgATcDACAAIAw3AwggBUHQAmokAAu/AgEBfyMAQdAAayIEJAACQCADQYCAAU4EQCAEQSBqIAEgAkIAQoCAgICAgID//wAQLyAEKQMoIQIgBCkDICEBIANB//8BSQRAIANB//8AayEDDAILIARBEGogASACQgBCgICAgICAgP//ABAvQf3/AiADIANB/f8CTxtB/v8BayEDIAQpAxghAiAEKQMQIQEMAQsgA0GBgH9KDQAgBEFAayABIAJCAEKAgICAgICAORAvIAQpA0ghAiAEKQNAIQEgA0H0gH5LBEAgA0GN/wBqIQMMAQsgBEEwaiABIAJCAEKAgICAgICAORAvQeiBfSADIANB6IF9TRtBmv4BaiEDIAQpAzghAiAEKQMwIQELIAQgASACQgAgA0H//wBqrUIwhhAvIAAgBCkDCDcDCCAAIAQpAwA3AwAgBEHQAGokAAs8ACAAIAE3AwAgACACQv///////z+DIAJCgICAgICAwP//AINCMIinIANCMIinQYCAAnFyrUIwhoQ3AwgLwAECAX8CfkF/IQMCQCAAQgBSIAFC////////////AIMiBEKAgICAgIDA//8AViAEQoCAgICAgMD//wBRGw0AIAJC////////////AIMiBUKAgICAgIDA//8AViAFQoCAgICAgMD//wBScQ0AIAAgBCAFhIRQBEBBAA8LIAEgAoNCAFkEQCABIAJSIAEgAlNxDQEgACABIAKFhEIAUg8LIABCAFIgASACVSABIAJRGw0AIAAg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EKYCCyEAIAEQTAR/QZiEASgCACABQf8BcUECdGooAgAFIAELwAsJACAAENACEC0LOwADQCABIAJGRQRAIAMhACAEIAEoAgAQTAR/IAEoAgAFIAALOgAAIARBAWohBCABQQRqIQEMAQsLIAELDAAgASACIAEQTBvACyoAA0AgASACRkUEQCADIAEsAAA2AgAgA0EEaiEDIAFBAWohAQwBCwsgAQsPACAAIAEgAkGgkAEQpwILHAAgARBMBH9BoJABKAIAIAFBAnRqKAIABSABCwsPACAAIAEgAkGYhAEQpwILHAAgARBMBH9BmIQBKAIAIAFBAnRqKAIABSABCwsQACAABEAgABDHAwsgABAtCzoAA0ACQCACIANGDQAgAigCABBMRQ0AIAIoAgBBAnRBkKIBaigCACABcUUNACACQQRqIQIMAQsLIAILOQADQAJAIAIgA0YNACACKAIAEEwEQCACKAIAQQJ0QZCiAWooAgAgAXENAQsgAkEEaiECDAELCyACC0YAA0AgASACRkUEQEEAIQAgAyABKAIAEEwEfyABKAIAQQJ0QZCiAWooAgAFQQALNgIAIANBBGohAyABQQRqIQEMAQsLIAELIwBBACEAIAIQTAR/IAJBAnRBkKIBaigCACABcUEARwVBAAsLDwAgACAAKAIAKAIEEQIACwkAIAAQ1gIQLQsVAQF/QdQAEFMiAEEAQdQA/AsAIAALFAAgACgCACABaiACLQAAOgAAQQELrgEAAkAgBRBHRQRAIAAgBSkCADcCACAAIAUoAgg2AgggABBeGgwBCyAFKAIAIQQgBSgCBCECIwBBEGsiAyQAAkACQAJAIAIQvQEEQCAAIgEgAhBQDAELIAJB9////wNLDQEgA0EIaiACEJABQQFqEI8BIAMoAgwaIAAgAygCCCIBNgIAIAAgAygCDBBcIAAgAjYCBAsgASAEIAJBAWoQZSADQRBqJAAMAQsQWwALCwsJACAAIAUQ5AELhAMBCH8jAEHgA2siACQAIABB3ANqIgYgAxAnIAYQSCEKIAUQHwRAIAVBABDMASgCACAKQS0QS0YhCwsgAiALIABB3ANqIABB2ANqIABB1ANqIABB0ANqIABBxANqECQiDCAAQbgDahAkIgYgAEGsA2oQJCIHIABBqANqEN8CIABB4wA2AhAgAEEIakEAIABBEGoiAhA2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KAK8ASAEEI8DOQMAIABBzAFqIABBEGogACgCDCAEEEMgAEHcAmogAEHYAmoQKwRAIAQgBCgCAEECcjYCAAsgACgC3AIgARAgGiAAQcwBahAgGiAAQeACaiQADAMLQQEhAwsgAEHcAmoQPhoMAAsACwvKBAEDfwJ/IwBB4AJrIgAkACAAIAI2AtgCIAAgATYC3AIgAEHMAWogAyAAQeABaiAAQdwBaiAAQdgBahD7ASAAQcABahAkIgEgARAoECEgACABQQAQIiICNgK8ASAAIABBEGo2AgwgAEEANgIIIABBAToAByAAQcUAOgAGQQAhAwNAAkACQAJAIABB3AJqIABB2AJqECsNACAAKAK8ASABEB8gAmpGBEAgARAfIQYgASABEB9BAXQQISABIAEQKBAhIAAgBiABQQAQIiICajYCvAELIABB3AJqEDcgAEEHaiAAQQZqIAIgAEG8AWogACgC3AEgACgC2AEgAEHMAWogAEEQaiAAQQxqIABBCGogAEHgAWoQ+gENACADDQFBACEDIAAoArwBIAJrIgdBAEwNAgJAAkAgAi0AACIGQStrIggOAwEAAQALIAZBLkYNAkEBIQMgBkEwa0H/AXFBCkkNAwwBCyAHQQFGDQICQCAIDgMAAwADCyACLQABIgZBLkYNAUEBIQMgBkEwa0H/AXFBCU0NAgsCQCAAQcwBahAfRQ0AIAAtAAdBAXFFDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK8ASAEEJEDOAIAIABBzAFqIABBEGogACgCDCAEEEMgAEHcAmogAEHYAmoQKwRAIAQgBCgCAEECcjYCAAsgACgC3AIgARAgGiAAQcwBahAgGiAAQeACaiQADAMLQQEhAwsgAEHcAmoQPhoMAAsACwuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCSAzcDACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCVAzsBACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtB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DCECDAYLIANBIHIhAyABQQRqIQIgBEEEayEEIAEtAAMgCHQgB2ohBwsCQCAFQQRxRQ0AIAcgBigCIEYNACAKQd4ONgIYIAZB0f4ANgIEIAIhASAGKAIEIQUMAQsLIAIhAUEAIQdBACEDCyAGQdD+ADYCBAtBASECDAELQQAhBCAMIQILIAogDzYCECAKIBA2AgwgCiAENgIEIAogATYCACAGIAM2AkAgBiAHNgI8AkACQCAGKAIsRQRAIA8gFUYNASAGKAIEQdD+AEsNAQsCfyAVIA9rIQMCQAJAIAooAhwiASgCOCIMRQRAQQEhBSABIAooAihBASABKAIodEEBIAooAiARAwAiDDYCOCAMRQ0BCyABKAIsIgRFBEAgAUIANwIwIAFBASABKAIodCIENgIsCyADIARPBEAgBARAIAwgECAEayAE/AoAAAsgAUEANgI0DAILIAQgASgCNCIIayIFIAMgAyAFSxsiBARAIAggDGogECADayAE/AoAAAsgAyAFSwRAIAMgBGsiAwRAIAEoAjggECADayAD/AoAAAsgASADNgI0DAILQQAhBSABIAEoAjQgBGoiA0EAIAMgASgCLCIMRxs2AjQgDCABKAIwIgNNDQAgASADIARqNgIwCyAFDAELIAEgASgCLDYCMEEACw0BIAooAhAhDyAKKAIEIQQLIAogCigCCCAkIARrajYCCCAKIBUgD2siASAKKAIUajYCFCAGIAYoAiAgAWo2AiAgBi0ADEEEcUUgDyAVRnJFBEAgCigCDCABayEDIAYoAhwhBSAGAn8gBigCFARAIAUgAyABEFEMAQsgBSADIAEQswELIgE2AhwgCiABNgIwCyAKIAYoAkBBwABBACAGKAIIG2pBgAFBACAGKAIEIgFBv/4ARhtqQYACQYACQQAgAUHC/gBGGyABQcf+AEYbajYCLCACQXsgAhsgAiAPIBVGGyACIAQgJEYbIRwMAgsgBkHS/gA2AgQLQXwhHAsgF0EQaiQAIBxBAUsNASATQagBaiEBIBMoAqwBIQMgGigCACEJIBooAgQgEygCFGshDCMAQSBrIggkAAJAIAwgCWsiBUEATA0AIAEoAgggASgCBCICayAFTgRAIAIgA2siBCAFSARAIAwgBCAJaiIHayILRSAHIAxGckUEQCACIAcgC/wKAAALIAEgAiALajYCBCAE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eQAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AE5vdgBUaHUAQXVndXN0AHVuc2lnbmVkIHNob3J0AHVuc2lnbmVkIGludABpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQAaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0AHVua25vd24gaGVhZGVyIGZsYWdzIHNldABpbnZhbGlkIGRpc3RhbmNlcyBzZXQAZ2V0AE9jdABmbG9hdABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AFNhdABudW1Qb2ludHMAY29sb3JzAFVucGFja09wdGlvbnMAcG9zaXRpb25zAHJvdGF0aW9ucwB0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scwBpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzAHNjYWxlcwBhbHBoYXMAW1NQWjogRVJST1JdIENoZWNrIGZhaWxlZDogJXM6JWQ6ICVzAHZmMzJfcHRyAEFwcgB2ZWN0b3IAbW9uZXlfZ2V0IGVycm9yAFtTUFogRVJST1JdIGRlc2VyaWFsaXplUGFja2VkR2F1c3NpYW5zOiByZWFkIGVycm9yAE9jdG9iZXIATm92ZW1iZXIAU2VwdGVtYmVyAERlY2VtYmVyAHVuc2lnbmVkIGNoYXIAaW9zX2Jhc2U6OmNsZWFyAE1hcgAvZW1zZGsvZW1zY3JpcHRlbi9zeXN0ZW0vbGliL2xpYmN4eGFiaS9zcmMvcHJpdmF0ZV90eXBlaW5mby5jcHAAU2VwACVJOiVNOiVTICVwAFN1bgBKdW4ATW9uAG5hbgBKYW4AY29vcmRpbmF0ZVN5c3RlbQBDb29yZGluYXRlU3lzdGVtAEp1bABib29sAGxsAEFwcmlsAGludmFsaWQgY29kZSAtLSBtaXNzaW5nIGVuZC1vZi1ibG9jawBpbmNvcnJlY3QgaGVhZGVyIGNoZWNrAGluY29ycmVjdCBsZW5ndGggY2hlY2sAaW5jb3JyZWN0IGRhdGEgY2hlY2sAcHVzaF9iYWNrAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAEZyaQBzaABoZWFkZXIgY3JjIG1pc21hdGNoAE1hcmNoAEF1ZwB1bnNpZ25lZCBsb25nIGxvbmcAdW5zaWduZWQgbG9uZwBzdGQ6OndzdHJpbmcAYmFzaWNfc3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGluZgAlLjBMZgAlTGYAcmVzaXplAGludmFsaWQgd2luZG93IHNpemUAdHJ1ZQBUdWUAZmFsc2UAaW52YWxpZCBibG9jayB0eXBlAEp1bmUAZG91YmxlAHNoRGVncmVlAGJhZF9hcnJheV9uZXdfbGVuZ3RoIHdhcyB0aHJvd24gaW4gLWZuby1leGNlcHRpb25zIG1vZGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQBSYXdHYXVzc2lhbkNsb3VkAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAFtTUFogRVJST1JdIGRlc2VyaWFsaXplUGFja2VkR2F1c3NpYW5zOiBoZWFkZXIgbm90IGZvdW5kACUwKmxsZAAlKmxsZAArJWxsZAAlKy40bGQAdm9pZABsb2NhbGUgbm90IHN1cHBvcnRlZABhbnRpYWxpYXNlZABXZWQAJVktJW0tJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IFRvbyBtYW55IHBvaW50czogJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IFVuc3VwcG9ydGVkIFNIIGRlZ3JlZTogJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IHZlcnNpb24gbm90IHN1cHBvcnRlZDogJWQARGVjAC4vc3B6L3NyYy9jYy9sb2FkLXNwei5jYwBGZWIAJWEgJWIgJWQgJUg6JU06JVMgJVkAUE9TSVgAVmVjdG9yVUludDhUACVIOiVNOiVTAE5BTgBQTQBBTQAlSDolTQBMQ19BTEwAQVNDSUkATEFORwBSVUYATFVGAElORgBSREYATERGAFVOU1BFQ0lGSUVEAEMAUlVCAExVQgBSREIATERCAGNhdGNoaW5nIGEgY2xhc3Mgd2l0aG91dCBhbiBvYmplY3Q/AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxkb3VibGU+ADAxMjM0NTY3ODkAQy5VVEYtOABWZWN0b3JGbG9hdDMyADEuMy4xAC4ALQAocGFja2VkLmFscGhhcy5zaXplKCkpID09IChudW1Qb2ludHMpAChudWxsKQAocGFja2VkLmNvbG9ycy5zaXplKCkpID09IChudW1Qb2ludHMgKiAzKQAocGFja2VkLnNjYWxlcy5zaXplKCkpID09IChudW1Qb2ludHMgKiAzKQAocGFja2VkLnNoLnNpemUoKSkgPT0gKG51bVBvaW50cyAqIHNoRGltICogMykAKHBhY2tlZC5yb3RhdGlvbnMuc2l6ZSgpKSA9PSAobnVtUG9pbnRzICogKHBhY2tlZC51c2VzUXVhdGVybmlvblNtYWxsZXN0VGhyZWUgPyA0IDogMykpAChwYWNrZWQucG9zaXRpb25zLnNpemUoKSkgPT0gKG51bVBvaW50cyAqIDMgKiAodXNlc0Zsb2F0MTYgPyAyIDogMykpACUAbGVuZ3RoX2Vycm9yIHdhcyB0aHJvd24gaW4gLWZuby1leGNlcHRpb25zIG1vZGUgd2l0aCBtZXNzYWdlICIlcyIAUHVyZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGxlZCEAW1NQWjogRVJST1JdIFVuc3VwcG9ydGVkIFNIIGRlZ3JlZTogJWQKAAkAAAAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwBBkCALthMgEAAA9GwAAPRsAABAEAAAqG0AACgQAABOM3NwejEzR2F1c3NpYW5DbG91ZEUAAACobQAASBAAAE4zc3B6MTNVbnBhY2tPcHRpb25zRQBwcGlpcAD0bAAAbBAAAKhtAAB0EAAATlN0M19fMjZ2ZWN0b3JJZk5TXzlhbGxvY2F0b3JJZkVFRUUAaXBwACxuAADEEAAAAAAAAAMAAADcEAAAAAAAACgSAAAAAAAAWBIAAAAAAABOU3QzX18yOG9wdGlvbmFsSWZFRQAAAADQbQAA6BAAABgRAABOU3QzX18yMjdfX29wdGlvbmFsX21vdmVfYXNzaWduX2Jhc2VJZkxiMUVFRQAAAADQbQAAJBEAAFQRAABOU3QzX18yMjdfX29wdGlvbmFsX2NvcHlfYXNzaWduX2Jhc2VJZkxiMUVFRQAAAADQbQAAYBEAAIgRAABOU3QzX18yMjBfX29wdGlvbmFsX21vdmVfYmFzZUlmTGIxRUVFAAAA0G0AAJQRAAC8EQAATlN0M19fMjIwX19vcHRpb25hbF9jb3B5X2Jhc2VJZkxiMUVFRQAAANBtAADIEQAA9BEAAE5TdDNfXzIyM19fb3B0aW9uYWxfc3RvcmFnZV9iYXNlSWZMYjBFRUUAAAAAqG0AAPwRAABOU3QzX18yMjRfX29wdGlvbmFsX2Rlc3RydWN0X2Jhc2VJZkxiMUVFRQAAAKhtAAAwEgAATlN0M19fMjE4X19zZmluYWVfY3Rvcl9iYXNlSUxiMUVMYjFFRUUAAKhtAABgEgAATlN0M19fMjIwX19zZmluYWVfYXNzaWduX2Jhc2VJTGIxRUxiMUVFRQAAAACIbgAAnBIAAAAAAABsEAAAUE5TdDNfXzI2dmVjdG9ySWZOU185YWxsb2NhdG9ySWZFRUVFAAAAAIhuAADUEgAAAQAAAGwQAABQS05TdDNfXzI2dmVjdG9ySWZOU185YWxsb2NhdG9ySWZFRUVFAHBwAHYAdnAAAACMEgAAcHAAAJRsAACMEgAAPG0AAHZwcGQAAAAAlGwAAIwSAAAYbQAAPG0AAHZwcHBkAAAAGG0AAMQSAABwcHAATBMAADxtAACobQAAVBMAAE4xMGVtc2NyaXB0ZW4zdmFsRQAAnBAAAGwQAAAYbQAAcHBwcAAAAAAAAAAArGwAAGwQAAAYbQAAPG0AAGlwcHBkAAAALG4AAMATAAAAAAAAAwAAANgTAAAAAAAAKBIAAAAAAABYEgAAAAAAAE5TdDNfXzI4b3B0aW9uYWxJaEVFAAAAANBtAADkEwAAFBQAAE5TdDNfXzIyN19fb3B0aW9uYWxfbW92ZV9hc3NpZ25fYmFzZUloTGIxRUVFAAAAANBtAAAgFAAAUBQAAE5TdDNfXzIyN19fb3B0aW9uYWxfY29weV9hc3NpZ25fYmFzZUloTGIxRUVFAAAAANBtAABcFAAAhBQAAE5TdDNfXzIyMF9fb3B0aW9uYWxfbW92ZV9iYXNlSWhMYjFFRUUAAADQbQAAkBQAALgUAABOU3QzX18yMjBfX29wdGlvbmFsX2NvcHlfYmFzZUloTGIxRUVFAAAA0G0AAMQUAADwFAAATlN0M19fMjIzX19vcHRpb25hbF9zdG9yYWdlX2Jhc2VJaExiMEVFRQAAAACobQAA+BQAAE5TdDNfXzIyNF9fb3B0aW9uYWxfZGVzdHJ1Y3RfYmFzZUloTGIxRUVFAAAAqG0AACwVAABOU3QzX18yNnZlY3RvckloTlNfOWFsbG9jYXRvckloRUVFRQCIbgAAYBUAAAAAAAAkFQAAUE5TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAAAAAIhuAACYFQAAAQAAACQVAABQS05TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAHBwAHZwAFAVAABwcAAAlGwAAFAVAADEbAAAdnBwaQAAAACUbAAAUBUAABhtAADEbAAAdnBwcGkAAAAYbQAAiBUAAHBwcABMEwAAxGwAAJgTAAAkFQAAGG0AAHBwcHAAAAAArGwAACQVAAAYbQAAxGwAAGlwcHBpAHAAdnAAaXBwAHZwcGkAaXBwAHZwcGkAcHBwAHZwcHAAAABcbQAAYBYAAE4zc3B6MTZDb29yZGluYXRlU3lzdGVtRQBwAHZwAGlwcAB2cHBpAAAAAAAAAwAAAAgAAAAPAAAAqG0AAKAWAABOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQAAqG0AAOgWAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAAqG0AADAXAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRHNOU18xMWNoYXJfdHJhaXRzSURzRUVOU185YWxsb2NhdG9ySURzRUVFRQAAAKhtAAB8FwAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFjaGFyX3RyYWl0c0lEaUVFTlNfOWFsbG9jYXRvcklEaUVFRUUAAACobQAAyBcAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQAAqG0AAPAXAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lhRUUAAKhtAAAYGAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaEVFAACobQAAQBgAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQAAqG0AAGgYAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUAAKhtAACQGAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaUVFAACobQAAuBgAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQAAqG0AAOAYAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lsRUUAAKhtAAAIGQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbUVFAACobQAAMBkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXhFRQAAqG0AAFgZAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l5RUUAAKhtAACAGQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJZkVFAACobQAAqBkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWRFRQBB1DMLoSiWMAd3LGEO7rpRCZkZxG0Hj/RqcDWlY+mjlWSeMojbDqS43Hke6dXgiNnSlytMtgm9fLF+By2455Edv5BkELcd8iCwakhxufPeQb6EfdTaGuvk3W1RtdT0x4XTg1aYbBPAqGtkevli/ezJZYpPXAEU2WwGY2M9D/r1DQiNyCBuO14QaUzkQWDVcnFnotHkAzxH1ARL/YUN0mu1CqX6qLU1bJiyQtbJu9tA+bys42zYMnVc30XPDdbcWT3Rq6ww2SY6AN5RgFHXyBZh0L+19LQhI8SzVpmVus8Ppb24nrgCKAiIBV+y2QzGJOkLsYd8by8RTGhYqx1hwT0tZraQQdx2BnHbAbwg0pgqENXviYWxcR+1tgal5L+fM9S46KLJB3g0+QAPjqgJlhiYDuG7DWp/LT1tCJdsZJEBXGPm9FFra2JhbBzYMGWFTgBi8u2VBmx7pQEbwfQIglfED/XG2bBlUOm3Euq4vot8iLn83x3dYkkt2hXzfNOMZUzU+1hhsk3OUbU6dAC8o+Iwu9RBpd9K15XYPW3E0aT79NbTaulpQ/zZbjRGiGet0Lhg2nMtBETlHQMzX0wKqsl8Dd08cQVQqkECJxAQC76GIAzJJbVoV7OFbyAJ1Ga5n+Rhzg753l6YydkpIpjQsLSo18cXPbNZgQ20LjtcvbetbLrAIIO47bazv5oM4rYDmtKxdDlH1eqvd9KdFSbbBIMW3HMSC2PjhDtklD5qbQ2oWmp6C88O5J3/CZMnrgAKsZ4HfUSTD/DSowiHaPIBHv7CBmldV2L3y2dlgHE2bBnnBmtudhvU/uAr04laetoQzErdZ2/fufn5776OQ763F9WOsGDoo9bWfpPRocTC2DhS8t9P8We70WdXvKbdBrU/SzaySNorDdhMGwqv9koDNmB6BEHD72DfVd9nqO+ObjF5vmlGjLNhyxqDZryg0m8lNuJoUpV3DMwDRwu7uRYCIi8mBVW+O7rFKAu9spJatCsEarNcp//XwjHP0LWLntksHa7eW7DCZJsm8mPsnKNqdQqTbQKpBgmcPzYO64VnB3ITVwAFgkq/lRR6uOKuK7F7OBu2DJuO0pINvtXlt+/cfCHf2wvU0tOGQuLU8fiz3Whug9ofzRa+gVsmufbhd7Bvd0e3GOZaCIhwag//yjsGZlwLARH/nmWPaa5i+NP/a2FFz2wWeOIKoO7SDddUgwROwrMDOWEmZ6f3FmDQTUdpSdt3bj5KatGu3FrW2WYL30DwO9g3U668qcWeu95/z7JH6f+1MBzyvb2KwrrKMJOzU6ajtCQFNtC6kwbXzSlX3lS/Z9kjLnpms7hKYcQCG2hdlCtvKje+C7ShjgzDG98FWo3vAi0AAAAARjtnZYx2zsrKTamvWevtTh/QiivVnSOEk6ZE4bLW25307bz4PqAVV3ibcjLrPTbTrQZRtmdL+BkhcJ98JavG4GOQoYWp3Qgq7+ZvT3xAK646e0zL8DblZLYNggGXfR190UZ6GBsL07ddMLTSzpbwM4itl1ZC4D75BNtZnAtQ/BpNa5t/hyYy0MEdVbVSuxFUFIB2Md7N356Y9rj7uYYnh/+9QOI18OlNc8uOKOBtysmmVq2sbBsEAyogY2Yu+zr6aMBdn6KN9DDktpNVdxDXtDErsNH7Zhl+vV1+G5wt4WfaFoYCEFsvrVZgSMjFxgwpg/1rTEmwwuMPi6WGFqD4NVCbn1Ca1jb/3O1Rmk9LFXsJcHIewz3bsYUGvNSkdiOo4k1EzSgA7WJuO4oH/Z3O5rumqYNx6wAsN9BnSTMLPtV1MFmwv33wH/lGl3pq4NObLNu0/uaWHVGgrXo0gd3lSMfmgi0NqyuCS5BM59g2CAaeDW9jVEDGzBJ7oakd8AQvW8tjSpGGyuXXva2ARBvpYQIgjgTIbSerjlZAzq8m37LpHbjXI1AReGVrdh32zTL8sPZVmXq7/DY8gJtTOFvCz35gpaq0LQwF8hZrYGGwL4Eni0jk7cbhS6v9hi6KjRlSzLZ+Nwb715hAwLD902b0HJVdk3lfEDrWGStdsyxA8Wtqe5YOoDY/oeYNWMR1qxwlM5B7QPnd0u+/5rWKnpYq9titTZMS4OQ8VNuDWcd9x7iBRqDdSwsJcg0wbhcJ6zeLT9BQ7oWd+UHDpp4kUADaxRY7vaDcdhQPmk1zars97Bb9BotzN0si3HFwRbni1gFYpO1mPW6gz5Iom6j3JxANcWErahSrZsO77V2k3n774D84wIda8o0u9bS2SZCVxtbs0/2xiRmwGCZfi39DzC07oooWXMdAW/VoBmCSDQK7y5FEgKz0js0FW8j2Yj5bUCbfHWtButcm6BWRHY9wsG0QDPZWd2k8G97GeiC5o+mG/UKvvZonZfAziCPLVO064AlefNtuO7aWx5TwraDxYwvkECUwg3XvfSraqUZNv4g20sPODbWmBEAcCUJ7e2zR3T+Nl+ZY6F2r8UcbkJYiH0vPvllwqNuTPQF01QZmEUagIvAAm0WVytbsOozti1+tnRQj66ZzRiHr2uln0L2M9Hb5bbJNngh4ADenPjtQwjGw9UR3i5IhvcY7jvv9XOtoWxgKLmB/b+Qt1sCiFrGlg2Yu2cVdSbwPEOATSSuHdtqNw5ectqTyVvsNXRDAajgUGzOkUiBUwZht/W7eVpoLTfDe6gvLuY/BhhAgh713RabN6Dng9o9cKrsm82yAQZb/JgV3uR1iEnNQy701a6zYAAAAAFiA4tfxBrR0qYZWo+INaOm6jYo+EwvcnUuLPkqFHaEJ3Z1D3nQbFX0sm/eqZxDJ4D+QKzeWFn2UzpafQwo7QhNSu6DE+z32Z6O9FLDoNir6sLbILRkwno5BsHxZjybjGtemAc1+IFduJqC1uW0ri/M1q2kknC0/h8St3VAUdoQmTPZm8eVwMFK98NKF9nvsz677DhgHfVi7X/26bJFrJS/J68f4YG2RWzjtc4xzZk3GK+avEYJg+bLa4BtlHk3GNUbNJOLvS3JBt8uQlvxArtykwEwLDUYaqFXG+H+bUGc8w9CF62pW00gy1jGfeV0P1SHd7QKIW7uh0NtZdijsCE1wbOqa2eq8OYFqXu7K4WCkkmGCczvn1NBjZzYHrfGpRPVxS5Nc9x0wBHf/50/8wa0XfCN6vvp12eZ6lw4i10peeleoidPR/iqLURz9wNoit5hawGAx3JbDaVx0FKfK61f/SgmAVsxfIw5MvfRFx4O+HUdhabTBN8rsQdUdPJqMa2QabrzNnDgflRzayN6X5IKGFwZVL5FQ9ncRsiG5hy1i4QfPtUiBmRYQAXvBW4pFiwMKp1yqjPH/8gwTKDahznhuISyvx6d6DJ8nmNvUrKaRjCxERiWqEuV9KvAys7xvces8jaZCutsFGjo50lGxB5gJMeVPoLez7Pg3UTtQ2BGaCFjzTaHepe75Xkc5stV5c+pVm6RD080HG1Mv0NXFsJONRVJEJMME53xD5jA3yNh6b0g6rcbObA6eTo7ZWuNTiQJjsV6r5ef982UFKrjuO2Dgbtm3SeiPFBFobcPf/vKAh34QVy74RvR2eKQjPfOaaWVzeL7M9S4dlHXMykSulbwcLndrtaghyO0owx+mo/1V/iMfglelSSEPJav2wbM0tZkz1mIwtYDBaDViFiO+XFx7Pr6L0rjoKIo4Cv9OldevFhU1eL+TY9vnE4EMrJi/RvQYXZFdngsyBR7p5cuIdqaTCJRxOo7C0mIOIAUphR5PcQX8mNiDqjuAA0jseDQZ1yC0+wCJMq2j0bJPdJo5cT7CuZPpaz/FSjO/J539KbjepalaCQwvDKpUr+59HyTQN0ekMuDuImRDtqKGlHIPW8Qqj7kTgwnvsNuJDWeQAjMtyILR+mEEh1k5hGWO9xL6za+SGBoGFE65XpSsbhUfkiRNn3Dz5BkmULyZxIdsQp3xNMJ/Jp1EKYXFxMtSjk/1GNbPF89/SUFsJ8mju+lfPPix394vGFmIjEDZalsLUlQRU9K2xvpU4GWi1AKyZnnf4j75PTWXf2uWz/+JQYR0twvc9FXcdXIDfy3y4ajjZH7ru+ScPBJiyp9K4ihIAWkWAlnp9NXwb6J2qO9AoQAAAADhtlLvg2vUBWLdhuoG16gL52H65IW8fA5kCi7hDK5RF+0YA/iPxYUSbnPX/Qp5+Rzrz6vziRItGWikf/YYXKMu+erxwZs3dyt6gSXEHosLJf89Wcqd4N8gfFaNzxTy8jn1RKDWl5kmPHYvdNMSJVoy85MI3ZFOjjdw+NzYMLhGXdEOFLKz05JYUmXAtzZv7lbX2by5tQQ6U1SyaLw8FhdK3aBFpb99w09ey5GgOsG/Qdt37a65qmtEWBw5qyjk5XPJUrecq48xdko5Y5kuM014z4Ufl61YmX1M7suSJEq0ZMX85ounIWBhRpcyjiKdHG/DK06AofbIakBAmoVgcI26gcbfVeMbWb8CrQtQZqclsYcRd17lzPG0BHqjW2ze3K2NaI5C77UIqA4DWkdqCXSmi78mSelioKMI1PJMeCwulJmafHv7R/qRGvGofn77hp+fTdRw/ZBSmhwmAHV0gn+DlTQtbPfpq4YWX/lpclXXiJPjhWfxPgONEIhRYlDIy+exfpkI06Mf4jIVTQ1WH2Pst6kxA9V0t+k0wuUGXGaa8L3QyB/fDU71PrscGlqxMvu7B2AU2drm/jhstBFIlGjJqSI6Jsv/vMwqSe4jTkPAwq/1ki3NKBTHLJ5GKEQ6Od6ljGsxx1Ht2ybnvzRC7ZHVo1vDOsGGRdAgMBc/geZrrmBQOUECjb+r4zvtRIcxw6Vmh5FKBFoXoOXsRU+NSDq5bP5oVg4j7rzvlbxTi5+SsmopwF0I9Ea36UIUWJm6yIB4DJpvGtEchftnTmqfbWCLftsyZBwGtI79sOZhlRSZl3Siy3gWf02S98kffZPDMZxydWNzEKjlmfEet3axXi3zUOh/HDI1+fbTg6sZt4mF+FY/1xc04lH91VQDEr3wfORcRi4LPpuo4d8t+g67J9TvWpGGADhMAOrZ+lIFqQKO3Ui03DIqaVrYy98IN6/VJtZOY3Q5LL7y080IoDylrN/KRBqNJSbHC8/HcVkgo3t3wULNJS4gEKPEwabxK+GW5hQAILT7Yv0yEYNLYP7nQU4fBvcc8GQqmhqFnMj17Ti3AwyO5exuU2MGj+Ux6evvHwgKWU3naITLDYkymeL5ykU6GHwX1XqhkT+bF8PQ/x3tMR6rv958djk0ncBr2/VkFC0U0kbCdg/AKJe5ksfzs7wmEgXuyXDYaCORbjrM0S6gSTCY8qZSRXRMs/Mmo9f5CEI2T1qtVJLcR7UkjqjdgPFePDajsV7rJVu/XXe021dZVTrhC7pYPI1QuYrfv8lyA2coxFGIShnXYquvhY3PpatsLhP5g0zOf2mteC2GxdxScCRqAJ9Gt4Z1pwHUmsML+nsivaiUQGAufqHWfJEAAAAAQ8umh8eQPNSEW5pTzycIc4zsrvQItzSnS3ySIJ5PEObdhLZhWd8sMhoUirVRaBiVEqO+Epb4JEHVM4LGfZlRFz5S95C6CW3D+cLLRLK+WWTxdf/jdS5lsDblwzfj1kHxoB3ndiRGfSVnjduiLPFJgm867wXrYXVWqKrT0foyoy65+QWpPaKf+n5pOX01Fatddt4N2vKFl4mxTjEOZH2zyCe2FU+j7Y8c4CYpm6tau7vokR08bMqHby8BIeiHq/I5xGBUvkA7zu0D8GhqSIz6SgtHXM2PHMaezNdgGRnk4t9aL0RY3nTeC52/eIzWw+qslQhMKxFT1nhSmHD/9GVGXbeu4Noz9XqJcD7cDjtCTi54ieip/NJy+r8Z1H1qKla7KeHwPK26am/ucczopQ1eyObG+E9inWIcIVbEm4n8F0rKN7HNTmwrng2njRlG2x85BRC5voFLI+3CgIVqF7MHrFR4oSvQIzt4k+id/9iUD9+bX6lYHwQzC1zPlYwOV+VzTZxD9MnH2aeKDH8gwXDtAIK7S4cG4NHURSt3U5AY9ZXT01MSV4jJQRRDb8ZfP/3mHPRbYZivwTLbZGe1c860ZDAFEuO0Xoiw95UuN7zpvBf/IhqQe3mAwziyJkTtgaSCrkoCBSoRmFZp2j7RIqas8WFtCnblNpAlpv02oujLjLqrACo9L1uwbmyQFukn7ITJZCciTuB8uB2jtx6adoScXDVPOtuxFKCI8t8GD7mjlC/6aDKofjOo+z34DnyVUt2t1pl7KlLC4XkRCUf+WnXV3hm+c1md5ekK3i5PjQsdzUtI1mvMzI3xn49GVxjEOsU4h/FjvwOq+exAYV9rEvkvlFEyiRPVaRNAlqK1x93eJ+eeFYFgGk4bM1mFvbSMtj9yz32Z9UsmA6YI7aUhQ5E3AQBakYaEAQvVx8qtUm9gfoMsq9gEqPBCV+s75NCgR3bw44zQd2fXSiQkHOyj8S9uZbLkyOI2v1KxdXT0Nj4IZhZ9w8CR+ZhawrpT/EUcrsrnX2VsYNs+9jOY9VC004nClJBCZBMUGf5AV9JYx4Lh2gHBKnyGRXHm1Qa6QFJNxtJyDg109YpW7qbJnUghYTeb8CL8PXemp6ck5WwBo64Qk4Pt2zUEaYCvVypLCdD/eIsWvLMtkTjot8J7IxFFMF+DZXOUJeL3z7+xtAQZNuacacmlV89OIQxVHWLH85opu2G6anDHPe4rXW6t4PvpeNN5LzsY36i/Q0X7/IjjfLf0cVz0P9fbcGRNiDOv6w+bBTje2M6eWVyVBAofXqKNVCIwrRfpliqTsgx50Hmq/gVKKDhGgY6/wtoU7IERsmvKbSBLiaaGzA39HJ9ONroYEAARABIAAAAIAAcACQAGAAoABQALAAQADAADAA0AAgAOAAEADwBBgNwAC6IVYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwAAQBwoAAAhgAAAIIAAACaAAAAgAAAAIgAAACEAAAAngABAHBgAACFgAAAgYAAAJkAATBzsAAAh4AAAIOAAACdAAEQcRAAAIaAAACCgAAAmwAAAICAAACIgAAAhIAAAJ8AAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnIABEHDQAACGQAAAgkAAAJqAAACAQAAAiEAAAIRAAACegAEAcIAAAIXAAACBwAAAmYABQHUwAACHwAAAg8AAAJ2AASBxcAAAhsAAAILAAACbgAAAgMAAAIjAAACEwAAAn4ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcQAEQcLAAAIYgAACCIAAAmkAAAIAgAACIIAAAhCAAAJ5AAQBwcAAAhaAAAIGgAACZQAFAdDAAAIegAACDoAAAnUABIHEwAACGoAAAgqAAAJtAAACAoAAAiKAAAISgAACfQAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzAARBw8AAAhmAAAIJgAACawAAAgGAAAIhgAACEYAAAnsABAHCQAACF4AAAgeAAAJnAAUB2MAAAh+AAAIPgAACdwAEgcbAAAIbgAACC4AAAm8AAAIDgAACI4AAAhOAAAJ/ABgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnCABAHCgAACGEAAAghAAAJogAACAEAAAiBAAAIQQAACeIAEAcGAAAIWQAACBkAAAmSABMHOwAACHkAAAg5AAAJ0gARBxEAAAhpAAAIKQAACbIAAAgJAAAIiQAACEkAAAnyABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcoAEQcNAAAIZQAACCUAAAmqAAAIBQAACIUAAAhFAAAJ6gAQBwgAAAhdAAAIHQAACZoAFAdTAAAIfQAACD0AAAnaABIHFwAACG0AAAgtAAAJugAACA0AAAiNAAAITQAACfoAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxgARBwsAAAhjAAAIIwAACaYAAAgDAAAIgwAACEMAAAnmABAHBwAACFsAAAgbAAAJlgAUB0MAAAh7AAAIOwAACdYAEgcTAAAIawAACCsAAAm2AAAICwAACIsAAAhLAAAJ9gAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnOABEHDwAACGcAAAgnAAAJrgAACAcAAAiHAAAIRwAACe4AEAcJAAAIXwAACB8AAAmeABQHYwAACH8AAAg/AAAJ3gASBxsAAAhvAAAILwAACb4AAAgPAAAIjwAACE8AAAn+AGAHAAAACFAAAAgQABQIcwASBx8AAAhwAAAIMAAACcEAEAcKAAAIYAAACCAAAAmhAAAIAAAACIAAAAhAAAAJ4QAQBwYAAAhYAAAIGAAACZEAEwc7AAAIeAAACDgAAAnRABEHEQAACGgAAAgoAAAJsQAACAgAAAiIAAAISAAACfEAEAcEAAAIVAAACBQAFQjjABMHKwAACHQAAAg0AAAJyQARBw0AAAhkAAAIJAAACakAAAgEAAAIhAAACEQAAAnpABAHCAAACFwAAAgcAAAJmQAUB1MAAAh8AAAIPAAACdkAEgcXAAAIbAAACCwAAAm5AAAIDAAACIwAAAhMAAAJ+QAQBwMAAAhSAAAIEgAVCKMAEwcjAAAIcgAACDIAAAnFABEHCwAACGIAAAgiAAAJpQAACAIAAAiCAAAIQgAACeUAEAcHAAAIWgAACBoAAAmVABQHQwAACHoAAAg6AAAJ1QASBxMAAAhqAAAIKgAACbUAAAgKAAAIigAACEoAAAn1ABAHBQAACFYAAAgWAEAIAAATBzMAAAh2AAAINgAACc0AEQcPAAAIZgAACCYAAAmtAAAIBgAACIYAAAhGAAAJ7QAQBwkAAAheAAAIHgAACZ0AFAdjAAAIfgAACD4AAAndABIHGwAACG4AAAguAAAJvQAACA4AAAiOAAAITgAACf0AYAcAAAAIUQAACBEAFQiDABIHHwAACHEAAAgxAAAJwwAQBwoAAAhhAAAIIQAACaMAAAgBAAAIgQAACEEAAAnjABAHBgAACFkAAAgZAAAJkwATBzsAAAh5AAAIOQAACdMAEQcRAAAIaQAACCkAAAmzAAAICQAACIkAAAhJAAAJ8wAQBwQAAAhVAAAIFQAQCAIBEwcrAAAIdQAACDUAAAnLABEHDQAACGUAAAglAAAJqwAACAUAAAiFAAAIRQAACesAEAcIAAAIXQAACB0AAAmbABQHUwAACH0AAAg9AAAJ2wASBxcAAAhtAAAILQAACbsAAAgNAAAIjQAACE0AAAn7ABAHAwAACFMAAAgTABUIwwATByMAAAhzAAAIMwAACccAEQcLAAAIYwAACCMAAAmnAAAIAwAACIMAAAhDAAAJ5wAQBwcAAAhbAAAIGwAACZcAFAdDAAAIewAACDsAAAnXABIHEwAACGsAAAgrAAAJtwAACAsAAAiLAAAISwAACfcAEAcFAAAIVwAACBcAQAgAABMHMwAACHcAAAg3AAAJzwARBw8AAAhnAAAIJwAACa8AAAgH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Y05TXzExY2hhcl90cmFpdHNJY0VFRUUA0G0AAHg9AAAAPAAATlN0M19fMjE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAAABAAAAAAAAAAKw+AABZAAAAWgAAADgAAAD4////rD4AAFsAAABcAAAAwP///8D///+sPgAAXQAAAF4AAADIPQAALD4AAGg+AAB8PgAAkD4AAKQ+AABUPgAAQD4AAPA9AADcPQAAQAAAAAAAAAAcPQAATAAAAE0AAAA4AAAA+P///xw9AABOAAAATwAAAMD////A////HD0AAFAAAABRAAAAQAAAAAAAAAA8PAAARAAAAEUAAADA////wP///zw8AABGAAAARwAAADgAAAAAAAAAhDwAAEgAAABJAAAAyP///8j///+EPAAASgAAAEsAAADQbQAAuD4AABw9AABOU3QzX18yMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQAAAAAAAAAAED8AAF8AAABgAAAAqG0AABg/AABOU3QzX18yOGlvc19iYXNlRQAAAAAAAADRdJ4AV529KoBwUg///z4nCgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QUYAAAANQAAAHEAAABr////zvv//5K///8AAAAAAAAAAP////////////////////////////////////////////////////////////////8AAQIDBAUGBwgJ/////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAECBAcDBgUAAAAAAAAAAgAAwAMAAMAEAADABQAAwAYAAMAHAADACAAAwAkAAMAKAADACwAAwAwAAMANAADADgAAwA8AAMAQAADAEQAAwBIAAMATAADAFAAAwBUAAMAWAADAFwAAwBgAAMAZAADAGgAAwBsAAMAcAADAHQAAwB4AAMAfAADAAAAAswEAAMMCAADDAwAAwwQAAMMFAADDBgAAwwcAAMMIAADDCQAAwwoAAMMLAADDDAAAww0AANMOAADDDwAAwwAADLsBAAzDAgAMwwMADMMEAAzbAAAAAN4SBJUAAAAA////////////////YEEAABQAAABDLlVURi04AEGwgwELAnRBAEHQgwELSkxDX0NUWVBFAAAAAExDX05VTUVSSUMAAExDX1RJTUUAAAAAAExDX0NPTExBVEUAAExDX01PTkVUQVJZAExDX01FU1NBR0VTACBEAEGkiAEL+QMBAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAHsAAAB8AAAAfQAAAH4AAAB/AEGgkAELAjBKAEG0lAEL+QMBAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAYQAAAGIAAABjAAAAZAAAAGUAAABmAAAAZwAAAGgAAABpAAAAagAAAGsAAABsAAAAbQAAAG4AAABvAAAAcAAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAHoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAABnAAAAaAAAAGkAAABqAAAAawAAAGwAAABtAAAAbgAAAG8AAABwAAAAcQAAAHIAAABzAAAAdAAAAHUAAAB2AAAAdwAAAHgAAAB5AAAAegAAAHsAAAB8AAAAfQAAAH4AAAB/AEG0nAELLYDeKACAyE0AAKd2AAA0ngCAEscAgJ/uAAB+FwGAXEABgOlnAQDIkAEAVbgBLgBB8JwBC9ICU3VuAE1vbgBUdWUAV2VkAFRodQBGcmkAU2F0AFN1bmRheQBNb25kYXkAVHVlc2RheQBXZWRuZXNkYXkAVGh1cnNkYXkARnJpZGF5AFNhdHVyZGF5AEphbgBGZWIATWFyAEFwcgBNYXkASnVuAEp1bABBdWcAU2VwAE9jdABOb3YARGVjAEphbnVhcnkARmVicnVhcnkATWFyY2gAQXByaWwATWF5AEp1bmUASnVseQBBdWd1c3QAU2VwdGVtYmVyAE9jdG9iZXIATm92ZW1iZXIARGVjZW1iZXIAQU0AUE0AJWEgJWIgJWUgJVQgJVkAJW0vJWQvJXkAJUg6JU06JVMAJUk6JU06JVMgJXAAAAAlbS8lZC8leQAwMTIzNDU2Nzg5ACVhICViICVlICVUICVZACVIOiVNOiVTAAAAAABeW3lZXQBeW25OXQB5ZXMAbm8AQdCfAQsxMDEyMzQ1Njc4OWFiY2RlZkFCQ0RFRnhYKy1wUGlJbk4AJUk6JU06JVMgJXAlSDolTQBBkKABC4EBJQAAAG0AAAAvAAAAJQAAAGQAAAAvAAAAJQAAAHkAAAAlAAAAWQAAAC0AAAAlAAAAbQAAAC0AAAAlAAAAZAAAACUAAABJAAAAOgAAACUAAABNAAAAOgAAACUAAABTAAAAIAAAACUAAABwAAAAAAAAACUAAABIAAAAOgAAACUAAABNAEGgoQELZSUAAABIAAAAOgAAACUAAABNAAAAOgAAACUAAABTAAAAAAAAAABaAAB0AAAAdQAAAHYAAAAAAAAAZFoAAHcAAAB4AAAAdgAAAHkAAAB6AAAAewAAAHwAAAB9AAAAfgAAAH8AAACAAEGQogEL/QMEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAFAgAABQAAAAUAAAAFAAAABQAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAMCAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAAIIAAABCAQAAQgEAAEIBAABCAQAAQgEAAEIBAABCAQAAQgEAAEIBAABCAQAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAggAAACoBAAAqAQAAKgEAACoBAAAqAQAAKgEAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAKgAAACoAAAAqAAAAggAAAIIAAACCAAAAggAAAIIAAACCAAAAMgEAADIBAAAyAQAAMgEAADIBAAAyAQAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAAAyAAAAMgAAADIAAACCAAAAggAAAIIAAACCAAAABABBlKoBC+0CvFkAAIEAAACCAAAAdgAAAIMAAACEAAAAhQAAAIYAAACHAAAAiAAAAIkAAAAAAAAAmFoAAIoAAACLAAAAdgAAAIwAAACNAAAAjgAAAI8AAACQAAAAAAAAALxaAACRAAAAkgAAAHYAAACTAAAAlAAAAJUAAACWAAAAlwAAAHQAAAByAAAAdQAAAGUAAAAAAAAAZgAAAGEAAABsAAAAcwAAAGUAAAAAAAAAJQAAAG0AAAAvAAAAJQAAAGQAAAAvAAAAJQAAAHkAAAAAAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAAAAAAJQAAAGEAAAAgAAAAJQAAAGIAAAAgAAAAJQAAAGQAAAAgAAAAJQAAAEgAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAFkAAAAAAAAAJQAAAEkAAAA6AAAAJQAAAE0AAAA6AAAAJQAAAFMAAAAgAAAAJQAAAHAAQYytAQv9J5xWAACYAAAAmQAAAHYAAADQbQAAqFYAAOxqAABOU3QzX18yNmxvY2FsZTVmYWNldEUAAAAAAAAABFcAAJgAAACaAAAAdgAAAJsAAACcAAAAnQAAAJ4AAACfAAAAoAAAAKEAAACiAAAAowAAAKQAAAClAAAApgAAACxuAAAkVwAAAAAAAAIAAACcVgAAAgAAADhXAAACAAAATlN0M19fMjVjdHlwZUl3RUUAAACobQAAQFcAAE5TdDNfXzIxMGN0eXBlX2Jhc2VFAAAAAAAAAACIVwAAmAAAAKcAAAB2AAAAqAAAAKkAAACqAAAAqwAAAKwAAACtAAAArgAAACxuAACoVwAAAAAAAAIAAACcVgAAAgAAAMxXAAACAAAATlN0M19fMjdjb2RlY3Z0SWNjMTFfX21ic3RhdGVfdEVFAAAAqG0AANRXAABOU3QzX18yMTJjb2RlY3Z0X2Jhc2VFAAAAAAAAHFgAAJgAAACvAAAAdgAAALAAAACxAAAAsgAAALMAAAC0AAAAtQAAALYAAAAsbgAAPFgAAAAAAAACAAAAnFYAAAIAAADMVwAAAgAAAE5TdDNfXzI3Y29kZWN2dElEc2MxMV9fbWJzdGF0ZV90RUUAAAAAAACQWAAAmAAAALcAAAB2AAAAuAAAALkAAAC6AAAAuwAAALwAAAC9AAAAvgAAACxuAACwWAAAAAAAAAIAAACcVgAAAgAAAMxXAAACAAAATlN0M19fMjdjb2RlY3Z0SURzRHUxMV9fbWJzdGF0ZV90RUUAAAAAAARZAACYAAAAvwAAAHYAAADAAAAAwQAAAMIAAADDAAAAxAAAAMUAAADGAAAALG4AACRZAAAAAAAAAgAAAJxWAAACAAAAzFcAAAIAAABOU3QzX18yN2NvZGVjdnRJRGljMTFfX21ic3RhdGVfdEVFAAAAAAAAeFkAAJgAAADHAAAAdgAAAMgAAADJAAAAygAAAMsAAADMAAAAzQAAAM4AAAAsbgAAmFkAAAAAAAACAAAAnFYAAAIAAADMVwAAAgAAAE5TdDNfXzI3Y29kZWN2dElEaUR1MTFfX21ic3RhdGVfdEVFACxuAADcWQAAAAAAAAIAAACcVgAAAgAAAMxXAAACAAAATlN0M19fMjdjb2RlY3Z0SXdjMTFfX21ic3RhdGVfdEVFAAAA0G0AAAxaAACcVgAATlN0M19fMjZsb2NhbGU1X19pbXBFAAAA0G0AADBaAACcVgAATlN0M19fMjdjb2xsYXRlSWNFRQDQbQAAUFoAAJxWAABOU3QzX18yN2NvbGxhdGVJd0VFACxuAACEWgAAAAAAAAIAAACcVgAAAgAAADhXAAACAAAATlN0M19fMjVjdHlwZUljRUUAAADQbQAApFoAAJxWAABOU3QzX18yOG51bXB1bmN0SWNFRQAAAADQbQAAyFoAAJxWAABOU3QzX18yOG51bXB1bmN0SXdFRQAAAAAAAAAAJFoAAM8AAADQAAAAdgAAANEAAADSAAAA0wAAAAAAAABEWgAA1AAAANUAAAB2AAAA1gAAANcAAADYAAAAAAAAAGBbAACYAAAA2QAAAHYAAADaAAAA2wAAANwAAADdAAAA3gAAAN8AAADgAAAA4QAAAOIAAADjAAAA5AAAACxuAACAWwAAAAAAAAIAAACcVgAAAgAAAMRbAAAAAAAATlN0M19fMjdudW1fZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQAsbgAA3FsAAAAAAAABAAAA9FsAAAAAAABOU3QzX18yOV9fbnVtX2dldEljRUUAAACobQAA/FsAAE5TdDNfXzIxNF9fbnVtX2dldF9iYXNlRQAAAAAAAAAAWFwAAJgAAADlAAAAdgAAAOYAAADnAAAA6AAAAOkAAADqAAAA6wAAAOwAAADtAAAA7gAAAO8AAADwAAAALG4AAHhcAAAAAAAAAgAAAJxWAAACAAAAvFwAAAAAAABOU3QzX18yN251bV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFACxuAADUXAAAAAAAAAEAAAD0WwAAAAAAAE5TdDNfXzI5X19udW1fZ2V0SXdFRQAAAAAAAAAgXQAAmAAAAPEAAAB2AAAA8gAAAPMAAAD0AAAA9QAAAPYAAAD3AAAA+AAAAPkAAAAsbgAAQF0AAAAAAAACAAAAnFYAAAIAAACEXQAAAAAAAE5TdDNfXzI3bnVtX3B1dEljTlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUALG4AAJxdAAAAAAAAAQAAALRdAAAAAAAATlN0M19fMjlfX251bV9wdXRJY0VFAAAAqG0AALxdAABOU3QzX18yMTRfX251bV9wdXRfYmFzZUUAAAAAAAAAAAxeAACYAAAA+gAAAHYAAAD7AAAA/AAAAP0AAAD+AAAA/wAAAAABAAABAQAAAgEAACxuAAAsXgAAAAAAAAIAAACcVgAAAgAAAHBeAAAAAAAATlN0M19fMjdudW1fcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQAsbgAAiF4AAAAAAAABAAAAtF0AAAAAAABOU3QzX18yOV9fbnVtX3B1dEl3RUUAAAAAAAAA9F4AAAMBAAAEAQAAdgAAAAUBAAAGAQAABwEAAAgBAAAJAQAACgEAAAsBAAD4////9F4AAAwBAAANAQAADgEAAA8BAAAQAQAAEQEAABIBAAAsbgAAHF8AAAAAAAADAAAAnFYAAAIAAABkXwAAAgAAAIBfAAAACAAATlN0M19fMjh0aW1lX2dldEljTlNfMTlpc3RyZWFtYnVmX2l0ZXJhdG9ySWNOU18xMWNoYXJfdHJhaXRzSWNFRUVFRUUAAAAAqG0AAGxfAABOU3QzX18yOXRpbWVfYmFzZUUAAKhtAACIXwAATlN0M19fMjIwX190aW1lX2dldF9jX3N0b3JhZ2VJY0VFAAAAAAAAAABgAAATAQAAFAEAAHYAAAAVAQAAFgEAABcBAAAYAQAAGQEAABoBAAAbAQAA+P///wBgAAAcAQAAHQEAAB4BAAAfAQAAIAEAACEBAAAiAQAALG4AAChgAAAAAAAAAwAAAJxWAAACAAAAZF8AAAIAAABwYAAAAAgAAE5TdDNfXzI4dGltZV9nZXRJd05TXzE5aXN0cmVhbWJ1Zl9pdGVyYXRvckl3TlNfMTFjaGFyX3RyYWl0c0l3RUVFRUVFAAAAAKhtAAB4YAAATlN0M19fMjIwX190aW1lX2dldF9jX3N0b3JhZ2VJd0VFAAAAAAAAALRgAAAjAQAAJAEAAHYAAAAlAQAALG4AANRgAAAAAAAAAgAAAJxWAAACAAAAHGEAAAAIAABOU3QzX18yOHRpbWVfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQAAAACobQAAJGEAAE5TdDNfXzIxMF9fdGltZV9wdXRFAAAAAAAAAABUYQAAJgEAACcBAAB2AAAAKAEAACxuAAB0YQAAAAAAAAIAAACcVgAAAgAAABxhAAAACAAATlN0M19fMjh0aW1lX3B1dEl3TlNfMTlvc3RyZWFtYnVmX2l0ZXJhdG9ySXdOU18xMWNoYXJfdHJhaXRzSXdFRUVFRUUAAAAAAAAAAPRhAACYAAAAKQEAAHYAAAAqAQAAKwEAACwBAAAtAQAALgEAAC8BAAAwAQAAMQEAADIBAAAsbgAAFGIAAAAAAAACAAAAnFYAAAIAAAAwYgAAAgAAAE5TdDNfXzIxMG1vbmV5cHVuY3RJY0xiMEVFRQCobQAAOGIAAE5TdDNfXzIxMG1vbmV5X2Jhc2VFAAAAAAAAAACIYgAAmAAAADMBAAB2AAAANAEAADUBAAA2AQAANwEAADgBAAA5AQAAOgEAADsBAAA8AQAALG4AAKhiAAAAAAAAAgAAAJxWAAACAAAAMGIAAAIAAABOU3QzX18yMTBtb25leXB1bmN0SWNMYjFFRUUAAAAAAPxiAACYAAAAPQEAAHYAAAA+AQAAPwEAAEABAABBAQAAQgEAAEMBAABEAQAARQEAAEYBAAAsbgAAHGMAAAAAAAACAAAAnFYAAAIAAAAwYgAAAgAAAE5TdDNfXzIxMG1vbmV5cHVuY3RJd0xiMEVFRQAAAAAAcGMAAJgAAABHAQAAdgAAAEgBAABJAQAASgEAAEsBAABMAQAATQEAAE4BAABPAQAAUAEAACxuAACQYwAAAAAAAAIAAACcVgAAAgAAADBiAAACAAAATlN0M19fMjEwbW9uZXlwdW5jdEl3TGIxRUVFAAAAAADIYwAAmAAAAFEBAAB2AAAAUgEAAFMBAAAsbgAA6GMAAAAAAAACAAAAnFYAAAIAAAAwZAAAAAAAAE5TdDNfXzI5bW9uZXlfZ2V0SWNOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQAAAKhtAAA4ZAAATlN0M19fMjExX19tb25leV9nZXRJY0VFAAAAAAAAAABwZAAAmAAAAFQBAAB2AAAAVQEAAFYBAAAsbgAAkGQAAAAAAAACAAAAnFYAAAIAAADYZAAAAAAAAE5TdDNfXzI5bW9uZXlfZ2V0SXdOU18xOWlzdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQAAAKhtAADgZAAATlN0M19fMjExX19tb25leV9nZXRJd0VFAAAAAAAAAAAYZQAAmAAAAFcBAAB2AAAAWAEAAFkBAAAsbgAAOGUAAAAAAAACAAAAnFYAAAIAAACAZQAAAAAAAE5TdDNfXzI5bW9uZXlfcHV0SWNOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJY05TXzExY2hhcl90cmFpdHNJY0VFRUVFRQAAAKhtAACIZQAATlN0M19fMjExX19tb25leV9wdXRJY0VFAAAAAAAAAADAZQAAmAAAAFoBAAB2AAAAWwEAAFwBAAAsbgAA4GUAAAAAAAACAAAAnFYAAAIAAAAoZgAAAAAAAE5TdDNfXzI5bW9uZXlfcHV0SXdOU18xOW9zdHJlYW1idWZfaXRlcmF0b3JJd05TXzExY2hhcl90cmFpdHNJd0VFRUVFRQAAAKhtAAAwZgAATlN0M19fMjExX19tb25leV9wdXRJd0VFAAAAAAAAAABsZgAAmAAAAF0BAAB2AAAAXgEAAF8BAABgAQAALG4AAIxmAAAAAAAAAgAAAJxWAAACAAAApGYAAAIAAABOU3QzX18yOG1lc3NhZ2VzSWNFRQAAAACobQAArGYAAE5TdDNfXzIxM21lc3NhZ2VzX2Jhc2VFAAAAAADkZgAAmAAAAGEBAAB2AAAAYgEAAGMBAABkAQAALG4AAARnAAAAAAAAAgAAAJxWAAACAAAApGYAAAIAAABOU3QzX18yOG1lc3NhZ2VzSXdFRQAAAABTAAAAdQAAAG4AAABkAAAAYQAAAHkAAAAAAAAATQAAAG8AAABuAAAAZAAAAGEAAAB5AAAAAAAAAFQAAAB1AAAAZQAAAHMAAABkAAAAYQAAAHkAAAAAAAAAVwAAAGUAAABkAAAAbgAAAGUAAABzAAAAZAAAAGEAAAB5AAAAAAAAAFQAAABoAAAAdQAAAHIAAABzAAAAZAAAAGEAAAB5AAAAAAAAAEYAAAByAAAAaQAAAGQAAABhAAAAeQAAAAAAAABTAAAAYQAAAHQAAAB1AAAAcgAAAGQAAABhAAAAeQAAAAAAAABTAAAAdQAAAG4AAAAAAAAATQAAAG8AAABuAAAAAAAAAFQAAAB1AAAAZQAAAAAAAABXAAAAZQAAAGQAAAAAAAAAVAAAAGgAAAB1AAAAAAAAAEYAAAByAAAAaQAAAAAAAABTAAAAYQAAAHQAAAAAAAAASgAAAGEAAABuAAAAdQAAAGEAAAByAAAAeQAAAAAAAABGAAAAZQAAAGIAAAByAAAAdQAAAGEAAAByAAAAeQAAAAAAAABNAAAAYQAAAHIAAABjAAAAaAAAAAAAAABBAAAAcAAAAHIAAABpAAAAbAAAAAAAAABNAAAAYQAAAHkAAAAAAAAASgAAAHUAAABuAAAAZQAAAAAAAABKAAAAdQAAAGwAAAB5AAAAAAAAAEEAAAB1AAAAZwAAAHUAAABzAAAAdAAAAAAAAABTAAAAZQAAAHAAAAB0AAAAZQAAAG0AAABiAAAAZQAAAHIAAAAAAAAATwAAAGMAAAB0AAAAbwAAAGIAAABlAAAAcgAAAAAAAABOAAAAbwAAAHYAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABEAAAAZQAAAGMAAABlAAAAbQAAAGIAAABlAAAAcgAAAAAAAABKAAAAYQAAAG4AAAAAAAAARgAAAGUAAABiAAAAAAAAAE0AAABhAAAAcgAAAAAAAABBAAAAcAAAAHIAAAAAAAAASgAAAHUAAABuAAAAAAAAAEoAAAB1AAAAbAAAAAAAAABBAAAAdQAAAGcAAAAAAAAAUwAAAGUAAABwAAAAAAAAAE8AAABjAAAAdAAAAAAAAABOAAAAbwAAAHYAAAAAAAAARAAAAGUAAABjAAAAAAAAAEEAAABNAAAAAAAAAFAAAABNAEGU1QELnAiAXwAADAEAAA0BAAAOAQAADwEAABABAAARAQAAEgEAAAAAAABwYAAAHAEAAB0BAAAeAQAAHwEAACABAAAhAQAAIgEAAAAAAADsagAAZQEAAGYBAABnAQAAqG0AAPRqAABOU3QzX18yMTRfX3NoYXJlZF9jb3VudEUAAAAAcG8AANBtAAAgawAAnG4AAE4xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAAAAANBtAABQawAAFGsAAE4xMF9fY3h4YWJpdjExN19fY2xhc3NfdHlwZV9pbmZvRQAAANBtAACAawAAFGsAAE4xMF9fY3h4YWJpdjExN19fcGJhc2VfdHlwZV9pbmZvRQAAANBtAACwawAAdGsAAE4xMF9fY3h4YWJpdjExOV9fcG9pbnRlcl90eXBlX2luZm9FANBtAADgawAAFGsAAE4xMF9fY3h4YWJpdjEyMF9fZnVuY3Rpb25fdHlwZV9pbmZvRQAAAADQbQAAFGwAAHRrAABOMTBfX2N4eGFiaXYxMjlfX3BvaW50ZXJfdG9fbWVtYmVyX3R5cGVfaW5mb0UAAAAAAAAAYGwAAGoBAABrAQAAbAEAAG0BAABuAQAA0G0AAGxsAAAUawAATjEwX19jeHhhYml2MTIzX19mdW5kYW1lbnRhbF90eXBlX2luZm9FAExsAACcbAAAdgAAAExsAACobAAARG4AAExsAAC0bAAAYgAAAExsAADAbAAAYwAAAExsAADMbAAAaAAAAExsAADYbAAAYQAAAExsAADkbAAAcwAAAExsAADwbAAAdAAAAExsAAD8bAAAaQAAAExsAAAIbQAAagAAAExsAAAUbQAAbAAAAExsAAAgbQAAbQAAAExsAAAsbQAAeAAAAExsAAA4bQAAeQAAAExsAABEbQAAZgAAAExsAABQbQAAZAAAAAAAAABwbQAAagEAAG8BAABsAQAAbQEAAHABAADQbQAAfG0AABRrAABOMTBfX2N4eGFiaXYxMTZfX2VudW1fdHlwZV9pbmZvRQAAAAAAAAAARGsAAGoBAABxAQAAbAEAAG0BAAByAQAAcwEAAHQBAAB1AQAAAAAAAPBtAABqAQAAdgEAAGwBAABtAQAAcgEAAHcBAAB4AQAAeQEAANBtAAD8bQAARGsAAE4xMF9fY3h4YWJpdjEyMF9fc2lfY2xhc3NfdHlwZV9pbmZvRQAAAAAAAAAATG4AAGoBAAB6AQAAbAEAAG0BAAByAQAAewEAAHwBAAB9AQAA0G0AAFhuAABEawAATjEwX19jeHhhYml2MTIxX192bWlfY2xhc3NfdHlwZV9pbmZvRQAAAAAAAACkawAAagEAAH4BAABsAQAAbQEAAH8BAACobQAApG4AAFN0OXR5cGVfaW5mbwBBud0BCwggAAAAAAAABQBBzN0BCwExAEHk3QELDjIAAAAzAAAACHEAAAAEAEH83QELAQEAQYzeAQsF/////woAQdDeAQshwG4AAHB/AQAlbS8lZC8leQAAAAglSDolTTolUwAAAAgFAEH83gELAmgBAEGU3wELCjIAAABpAQAAZH8AQazfAQsBAgBBvN8BCwj//////////wBBgOABCwJwbw==")),oe((await H(_e)).instance))}();function V3(){function se(){var oe;if(i.calledRun=!0,!b){if(V=!0,S_.G(),I?.(i),(oe=i.onRuntimeInitialized)==null||oe.call(i),i.postRun)for(typeof i.postRun=="function"&&(i.postRun=[i.postRun]);i.postRun.length;){var _e=i.postRun.shift();K.push(_e)}ee(K)}}if(0{setTimeout(()=>i.setStatus(""),1),se()},1)):se()}}if(i.preInit)for(typeof i.preInit=="function"&&(i.preInit=[i.preInit]);0{I=se,_=oe}),n}var CE=(e,t,n=i=>i)=>{let i=e.vf32_ptr(t),o=t.size();return new Float32Array(e.HEAPF32.buffer,i,o).map(n)},e9e=e=>1/(1+Math.exp(-e)),t9e=e=>t=>t*e+.5,n9e=(e,t,n)=>{let i=n?.colorScaleFactor??.282;return{numPoints:t.numPoints,shDegree:t.shDegree,antialiased:t.antialiased,positions:CE(e,t.positions),scales:CE(e,t.scales,Math.exp),rotations:CE(e,t.rotations),alphas:CE(e,t.alphas,e9e),colors:CE(e,t.colors,t9e(i)),sh:CE(e,t.sh)}},i9e=(e,t)=>{e._free(e.vf32_ptr(t.positions)),e._free(e.vf32_ptr(t.scales)),e._free(e.vf32_ptr(t.rotations)),e._free(e.vf32_ptr(t.alphas)),e._free(e.vf32_ptr(t.colors)),e._free(e.vf32_ptr(t.sh))},jse=async(e,t)=>{var n;let i=await $Ne(),o=e instanceof Uint8Array?e:new Uint8Array(e),r=null;try{if(r=i._malloc(Uint8Array.BYTES_PER_ELEMENT*o.length),r===null)throw new Error("couldn't allocate memory");i.HEAPU8.set(o,r/Uint8Array.BYTES_PER_ELEMENT);let s=i.CoordinateSystem[((n=t?.unpackOptions)==null?void 0:n.coordinateSystem)??"UNSPECIFIED"],a=i.load_spz(r,o.length,{coordinateSystem:s}),c=n9e(i,a,t);return i9e(i,a),c}catch(s){throw s}finally{r!==null&&i._free(r)}};var o9e=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));function Hb(e){e=e??Y.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.primitive,o=e.spz,r=e.gltfResource,s=e.baseResource,a=e.cacheKey;this._resourceCache=t,this._gltfResource=r,this._baseResource=s,this._gltf=n,this._primitive=i,this._spz=o,this._cacheKey=a,this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodePromise=void 0,this._decodedData=void 0,this._state=ft.UNLOADED,this._promise=void 0,this._spzError=void 0}l(Object.create)&&(Hb.prototype=Object.create(Yi.prototype),Hb.prototype.constructor=Hb);Object.defineProperties(Hb.prototype,{cacheKey:{get:function(){return this._cacheKey}},decodedData:{get:function(){return this._decodedData}}});async function r9e(e){let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:0,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._bufferViewTypedArray=n.typedArray,e._state=ft.PROCESSING,e)}catch(n){if(e.isDestroyed())return;qse(e,n)}}Hb.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=ft.LOADING,this._promise=r9e(this),this._promise)};function qse(e,t){throw e.unload(),e._state=ft.FAILED,e.getError("Failed to load SPZ",t)}async function s9e(e,t){try{let n=await t;return e.isDestroyed()?void 0:(e.unload(),e._decodedData={gcloud:n},e._state=ft.READY,e._baseResource)}catch(n){if(e.isDestroyed())return;e._spzError=n}}Hb.prototype.process=function(e){if(this._state===ft.READY)return!0;if(this._state!==ft.PROCESSING||(l(this._spzError)&&qse(this,this._spzError),!l(this._bufferViewTypedArray))||l(this._decodePromise))return!1;let t=jse(this._bufferViewTypedArray,{unpackOptions:{coordinateSystem:"UNSPECIFIED"}});if(!l(t))return!1;this._decodePromise=s9e(this,t)};Hb.prototype.unload=function(){l(this._bufferViewLoader)&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodedData=void 0,this._gltf=void 0,this._primitive=void 0};var KZ=Hb;var cpn=y(C(),1);var tpn=y(C(),1);var Mfn=y(C(),1);function JZ(e){e=e??Y.EMPTY_OBJECT;let t=e.id,n=e.properties??{},i={};for(let o in n)if(n.hasOwnProperty(o)){let r=n[o];l(r.semantic)&&(i[r.semantic]=r)}this._id=t,this._name=e.name,this._description=e.description,this._properties=n,this._propertiesBySemantic=i,this._extras=ke(e.extras,!0),this._extensions=ke(e.extensions,!0)}JZ.fromJson=function(e){e=e??Y.EMPTY_OBJECT;let t=e.id,n=e.class,i={};for(let o in n.properties)if(n.properties.hasOwnProperty(o)){let r=Qf.fromJson({id:o,property:n.properties[o],enums:e.enums});i[o]=r}return new JZ({id:t,name:n.name,description:n.description,properties:i,extras:n.extras,extensions:n.extensions})};Object.defineProperties(JZ.prototype,{properties:{get:function(){return this._properties}},propertiesBySemantic:{get:function(){return this._propertiesBySemantic}},id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});JZ.BATCH_TABLE_CLASS_NAME="_batchTable";var Ch=JZ;var zfn=y(C(),1);var Qfn=y(C(),1);function oQ(e){e=e??Y.EMPTY_OBJECT;let t=e.value,n=e.name;this._value=t,this._name=n,this._description=e.description,this._extras=ke(e.extras,!0),this._extensions=ke(e.extensions,!0)}oQ.fromJson=function(e){return new oQ({value:e.value,name:e.name,description:e.description,extras:e.extras,extensions:e.extensions})};Object.defineProperties(oQ.prototype,{value:{get:function(){return this._value}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var jZ=oQ;function rQ(e){e=e??Y.EMPTY_OBJECT;let t=e.id,n=e.values,i={},o={},r=n.length;for(let a=0;a>t};va.fromSubtreeJson=async function(e,t,n,i,o){let r=new va(e,i,o),s;l(t)?s={json:t,binary:void 0}:s=u9e(n);let a=s.json;r._subtreeJson=a;let c;if(Ii(a,"3DTILES_metadata"))c=a.extensions["3DTILES_metadata"];else if(l(a.tileMetadata)){let _=a.tileMetadata;c=a.propertyTables[_]}let d=[];if(l(a.contentMetadata)){let _=a.contentMetadata.length;for(let E=0;E<_;E++){let S=a.contentMetadata[E];d.push(a.propertyTables[S])}}let u,h=i.metadataSchema,p=a.subtreeMetadata;if(l(p)){let _=p.class,E=h.classes[_];u=new ZZ({subtreeMetadata:p,class:E})}r._metadata=u,r._tilePropertyTableJson=c,r._contentPropertyTableJsons=d;let g={constant:0};a.contentAvailabilityHeaders=[],Ii(a,"3DTILES_multiple_contents")?a.contentAvailabilityHeaders=a.extensions["3DTILES_multiple_contents"].contentAvailability:Array.isArray(a.contentAvailability)?a.contentAvailabilityHeaders=a.contentAvailability:a.contentAvailabilityHeaders.push(a.contentAvailability??g);let f=m9e(a.buffers),b=h9e(a.bufferViews,f);f9e(a,b),l(c)&&nae(c,b);for(let _=0;_0;u=u||h;for(let p=0;p>BigInt(61)),d=c%2===0?cE.encode2D(i,o,r):cE.encode2D(i,r,o),u=xA.fromFacePositionLevel(c,BigInt(d),i),h,p;if(l(s)){let g=(a.maximumHeight+a.minimumHeight)/2;h=n<4?a.minimumHeight:g,p=n<4?g:a.maximumHeight}else h=a.minimumHeight,p=a.maximumHeight;return{extensions:{"3DTILES_bounding_volume_S2":{token:xA.getTokenFromId(u._cellId),minimumHeight:h,maximumHeight:p}}}}var w9e=new m,X9e=new m,Iz=new m,W9e=new $;function cae(e,t,n,i,o){if(t===0)return e;let r=m.unpack(e,0,X9e),s=$.unpack(e,3,W9e),a=Math.pow(2,-t),c=-1+(2*n+1)*a,d=-1+(2*i+1)*a,u=0,h=m.fromElements(a,a,1,w9e);l(o)&&(u=-1+(2*o+1)*a,h.z=a);let p=m.fromElements(c,d,u,Iz);p=$.multiplyByVector(s,p,Iz),p=m.add(p,r,Iz);let g=$.clone(s);g=$.multiplyByScale(g,h,g);let f=new Array(12);return m.pack(p,f),$.pack(g,f,3),f}var F9e=new le;function lae(e,t,n,i,o){if(t===0)return e.slice();let r=le.unpack(e,0,F9e),s=e[4],a=e[5],c=Math.pow(2,-t),d=c*r.width,u=Z.negativePiToPi(r.west+n*d),h=Z.negativePiToPi(u+d),p=c*r.height,g=Z.negativePiToPi(r.south+i*p),f=Z.negativePiToPi(g+p),b=s,x=a;if(l(o)){let I=c*(a-s);b+=o*I,x=b+I}return[u,g,h,f,b,x]}function P9e(e,t,n){let i=e._implicitTileset,o=t.implicitCoordinates.getChildCoordinates(n),r=sae(i,o,n,!1,t),s=rae(void 0,i,o),a=i.subtreeUriTemplate.getDerivedResource({templateValues:o.getTemplateValues()}).url,c={boundingVolume:r,geometricError:s,refine:i.refine,contents:[{uri:a}]},d=dae(e,i.baseResource,c,t);return d.implicitTileset=i,d.implicitCoordinates=o,d}function dae(e,t,n,i){let o=e._tile.constructor;return new o(e._tileset,t,n,i)}xl.prototype.hasProperty=function(e,t){return!1};xl.prototype.getFeature=function(e){};xl.prototype.applyDebugSettings=function(e,t){};xl.prototype.applyStyle=function(e){};xl.prototype.update=function(e,t){};xl.prototype.pick=function(e,t,n){};xl.prototype.isDestroyed=function(){return!1};xl.prototype.destroy=function(){return this._implicitSubtree=this._implicitSubtree&&this._implicitSubtree.destroy(),me(this)};xl._deriveBoundingBox=cae;xl._deriveBoundingRegion=lae;xl._deriveBoundingVolumeS2=aae;var EE=xl;var CQn=y(C(),1);var AAn=y(C(),1),M9e={NONE:0,REPEAT:1,MIRRORED_REPEAT:2},od=Object.freeze(M9e);var dQn=y(C(),1);var NAn=y(C(),1);var CAn=y(C(),1);function TE(e,t){this._distance=t,this._normal=new uae(e,this),this.onChangeCallback=void 0,this.index=-1}Object.defineProperties(TE.prototype,{distance:{get:function(){return this._distance},set:function(e){l(this.onChangeCallback)&&e!==this._distance&&this.onChangeCallback(this.index),this._distance=e}},normal:{get:function(){return this._normal},set:function(e){l(this.onChangeCallback)&&!m.equals(this._normal._cartesian3,e)&&this.onChangeCallback(this.index),m.clone(e,this._normal._cartesian3)}}});TE.fromPlane=function(e,t){return l(t)?(t.normal=e.normal,t.distance=e.distance):t=new TE(e.normal,e.distance),t};TE.clone=function(e,t){return l(t)?(t.normal=e.normal,t.distance=e.distance,t):new TE(e.normal,e.distance)};function uae(e,t){this._clippingPlane=t,this._cartesian3=m.clone(e)}Object.defineProperties(uae.prototype,{x:{get:function(){return this._cartesian3.x},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.x&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.x=e}},y:{get:function(){return this._cartesian3.y},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.y&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.y=e}},z:{get:function(){return this._cartesian3.z},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.z&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.z=e}}});var OC=TE;function Xc(e){e=e??Y.EMPTY_OBJECT,this._planes=[],this._dirtyIndex=-1,this._multipleDirtyPlanes=!1,this._enabled=e.enabled??!0,this.modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this.edgeColor=U.clone(e.edgeColor??U.WHITE),this.edgeWidth=e.edgeWidth??0,this.planeAdded=new Ce,this.planeRemoved=new Ce,this._owner=void 0;let t=e.unionClippingRegions??!1;this._unionClippingRegions=t,this._testIntersection=t?Aae:gae,this._uint8View=void 0,this._float32View=void 0,this._clippingPlanesTexture=void 0;let n=e.planes;if(l(n)){let i=n.length;for(let o=0;o0&&(r=on.OUTSIDE);for(let s=0;s80*n){a=e[0],c=e[1];let u=a,h=c;for(let p=n;pu&&(u=g),f>h&&(h=f)}d=Math.max(u-a,h-c),d=d!==0?32767/d:0}return iB(r,s,n,a,c,d,0),s}function xae(e,t,n,i,o){let r;if(o===oDe(e,t,n,i)>0)for(let s=t;s=t;s-=i)r=Cae(s/i|0,e[s],e[s+1],r);return r&&SE(r,r.next)&&(rB(r),r=r.next),r}function HC(e,t){if(!e)return e;t||(t=e);let n=e,i;do if(i=!1,!n.steiner&&(SE(n,n.next)||es(n.prev,n,n.next)===0)){if(rB(n),n=t=n.prev,n===n.next)break;i=!0}else n=n.next;while(i||n!==t);return t}function iB(e,t,n,i,o,r,s){if(!e)return;!s&&r&&q9e(e,i,o,r);let a=e;for(;e.prev!==e.next;){let c=e.prev,d=e.next;if(r?k9e(e,i,o,r):U9e(e)){t.push(c.i,e.i,d.i),rB(e),e=d.next,a=d.next;continue}if(e=d,e===a){s?s===1?(e=Y9e(HC(e),t),iB(e,t,n,i,o,r,2)):s===2&&O9e(e,t,n,i,o,r):iB(HC(e),t,n,i,o,r,1);break}}}function U9e(e){let t=e.prev,n=e,i=e.next;if(es(t,n,i)>=0)return!1;let o=t.x,r=n.x,s=i.x,a=t.y,c=n.y,d=i.y,u=Math.min(o,r,s),h=Math.min(a,c,d),p=Math.max(o,r,s),g=Math.max(a,c,d),f=i.next;for(;f!==t;){if(f.x>=u&&f.x<=p&&f.y>=h&&f.y<=g&&nB(o,a,r,c,s,d,f.x,f.y)&&es(f.prev,f,f.next)>=0)return!1;f=f.next}return!0}function k9e(e,t,n,i){let o=e.prev,r=e,s=e.next;if(es(o,r,s)>=0)return!1;let a=o.x,c=r.x,d=s.x,u=o.y,h=r.y,p=s.y,g=Math.min(a,c,d),f=Math.min(u,h,p),b=Math.max(a,c,d),x=Math.max(u,h,p),I=Ez(g,f,t,n,i),_=Ez(b,x,t,n,i),E=e.prevZ,S=e.nextZ;for(;E&&E.z>=I&&S&&S.z<=_;){if(E.x>=g&&E.x<=b&&E.y>=f&&E.y<=x&&E!==o&&E!==s&&nB(a,u,c,h,d,p,E.x,E.y)&&es(E.prev,E,E.next)>=0||(E=E.prevZ,S.x>=g&&S.x<=b&&S.y>=f&&S.y<=x&&S!==o&&S!==s&&nB(a,u,c,h,d,p,S.x,S.y)&&es(S.prev,S,S.next)>=0))return!1;S=S.nextZ}for(;E&&E.z>=I;){if(E.x>=g&&E.x<=b&&E.y>=f&&E.y<=x&&E!==o&&E!==s&&nB(a,u,c,h,d,p,E.x,E.y)&&es(E.prev,E,E.next)>=0)return!1;E=E.prevZ}for(;S&&S.z<=_;){if(S.x>=g&&S.x<=b&&S.y>=f&&S.y<=x&&S!==o&&S!==s&&nB(a,u,c,h,d,p,S.x,S.y)&&es(S.prev,S,S.next)>=0)return!1;S=S.nextZ}return!0}function Y9e(e,t){let n=e;do{let i=n.prev,o=n.next.next;!SE(i,o)&&_ae(i,n,n.next,o)&&oB(i,o)&&oB(o,i)&&(t.push(i.i,n.i,o.i),rB(n),rB(n.next),n=e=o),n=n.next}while(n!==e);return HC(n)}function O9e(e,t,n,i,o,r){let s=e;do{let a=s.next.next;for(;a!==s.prev;){if(s.i!==a.i&&tDe(s,a)){let c=Eae(s,a);s=HC(s,s.next),c=HC(c,c.next),iB(s,t,n,i,o,r,0),iB(c,t,n,i,o,r,0);return}a=a.next}s=s.next}while(s!==e)}function H9e(e,t,n,i){let o=[];for(let r=0,s=t.length;r=n.next.y&&n.next.y!==n.y){let h=n.x+(o-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(h<=i&&h>r&&(r=h,s=n.x=n.x&&n.x>=c&&i!==n.x&&Iae(os.x||n.x===s.x&&j9e(s,n)))&&(s=n,u=h)}n=n.next}while(n!==a);return s}function j9e(e,t){return es(e.prev,e,t.prev)<0&&es(t.next,e,e.next)<0}function q9e(e,t,n,i){let o=e;do o.z===0&&(o.z=Ez(o.x,o.y,t,n,i)),o.prevZ=o.prev,o.nextZ=o.next,o=o.next;while(o!==e);o.prevZ.nextZ=null,o.prevZ=null,$9e(o)}function $9e(e){let t,n=1;do{let i=e,o;e=null;let r=null;for(t=0;i;){t++;let s=i,a=0;for(let d=0;d0||c>0&&s;)a!==0&&(c===0||!s||i.z<=s.z)?(o=i,i=i.nextZ,a--):(o=s,s=s.nextZ,c--),r?r.nextZ=o:e=o,o.prevZ=r,r=o;i=s}r.nextZ=null,n*=2}while(t>1);return e}function Ez(e,t,n,i,o){return e=(e-n)*o|0,t=(t-i)*o|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function eDe(e){let t=e,n=e;do(t.x=(e-s)*(r-a)&&(e-s)*(i-a)>=(n-s)*(t-a)&&(n-s)*(r-a)>=(o-s)*(i-a)}function nB(e,t,n,i,o,r,s,a){return!(e===s&&t===a)&&Iae(e,t,n,i,o,r,s,a)}function tDe(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!nDe(e,t)&&(oB(e,t)&&oB(t,e)&&iDe(e,t)&&(es(e.prev,e,t.prev)||es(e,t.prev,t))||SE(e,t)&&es(e.prev,e,e.next)>0&&es(t.prev,t,t.next)>0)}function es(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function SE(e,t){return e.x===t.x&&e.y===t.y}function _ae(e,t,n,i){let o=lQ(es(e,t,n)),r=lQ(es(e,t,i)),s=lQ(es(n,i,e)),a=lQ(es(n,i,t));return!!(o!==r&&s!==a||o===0&&cQ(e,n,t)||r===0&&cQ(e,i,t)||s===0&&cQ(n,e,i)||a===0&&cQ(n,t,i))}function cQ(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function lQ(e){return e>0?1:e<0?-1:0}function nDe(e,t){let n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&_ae(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}function oB(e,t){return es(e.prev,e,e.next)<0?es(e,t,e.next)>=0&&es(e,e.prev,t)>=0:es(e,t,e.prev)<0||es(e,e.next,t)<0}function iDe(e,t){let n=e,i=!1,o=(e.x+t.x)/2,r=(e.y+t.y)/2;do n.y>r!=n.next.y>r&&n.next.y!==n.y&&o<(n.next.x-n.x)*(r-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next;while(n!==e);return i}function Eae(e,t){let n=Tz(e.i,e.x,e.y),i=Tz(t.i,t.x,t.y),o=e.next,r=t.prev;return e.next=t,t.prev=e,n.next=o,o.prev=n,i.next=n,n.prev=i,r.next=i,i.prev=r,i}function Cae(e,t,n,i){let o=Tz(e,t,n);return i?(o.next=i.next,o.prev=i,i.next.prev=o,i.next=o):(o.prev=o,o.next=o),o}function rB(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function Tz(e,t,n){return{i:e,x:t,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function oDe(e,t,n,i){let o=0;for(let r=t,s=n-i;r0?ws.COUNTER_CLOCKWISE:ws.CLOCKWISE};zb.triangulate=function(e,t){let n=D.packArray(e);return Sz(n,t,2)};var Rae=new m,Vae=new m,Gae=new m,Tae=new m,Sae=new m,Lae=new m,RA=new m,Zae=new D,Bae=new D,wae=new D,LE=new D;zb.computeSubdivision=function(e,t,n,i,o){o=o??Z.RADIANS_PER_DEGREE;let r=l(i),s=n.slice(0),a,c=t.length,d=new Array(c*3),u=new Array(c*2),h=0,p=0;for(a=0;a0;){let E=s.pop(),S=s.pop(),R=s.pop(),G=m.fromArray(d,R*3,Rae),B=m.fromArray(d,S*3,Vae),w=m.fromArray(d,E*3,Gae),F,P,A;r&&(F=D.fromArray(u,R*2,Zae),P=D.fromArray(u,S*2,Bae),A=D.fromArray(u,E*2,wae));let T=m.multiplyByScalar(m.normalize(G,Tae),b,Tae),L=m.multiplyByScalar(m.normalize(B,Sae),b,Sae),V=m.multiplyByScalar(m.normalize(w,Lae),b,Lae),W=m.magnitudeSquared(m.subtract(T,L,RA)),M=m.magnitudeSquared(m.subtract(L,V,RA)),Q=m.magnitudeSquared(m.subtract(V,T,RA)),N=Math.max(W,M,Q),k,v,O;N>I?W===N?(k=`${Math.min(R,S)} ${Math.max(R,S)}`,a=f[k],l(a)||(v=m.add(G,B,RA),m.multiplyByScalar(v,.5,v),d.push(v.x,v.y,v.z),a=d.length/3-1,f[k]=a,r&&(O=D.add(F,P,LE),D.multiplyByScalar(O,.5,O),u.push(O.x,O.y))),s.push(R,a,E),s.push(a,S,E)):M===N?(k=`${Math.min(S,E)} ${Math.max(S,E)}`,a=f[k],l(a)||(v=m.add(B,w,RA),m.multiplyByScalar(v,.5,v),d.push(v.x,v.y,v.z),a=d.length/3-1,f[k]=a,r&&(O=D.add(P,A,LE),D.multiplyByScalar(O,.5,O),u.push(O.x,O.y))),s.push(S,a,R),s.push(a,E,R)):Q===N&&(k=`${Math.min(E,R)} ${Math.max(E,R)}`,a=f[k],l(a)||(v=m.add(w,G,RA),m.multiplyByScalar(v,.5,v),d.push(v.x,v.y,v.z),a=d.length/3-1,f[k]=a,r&&(O=D.add(A,F,LE),D.multiplyByScalar(O,.5,O),u.push(O.x,O.y))),s.push(E,a,S),s.push(a,R,S)):(g.push(R),g.push(S),g.push(E))}let _={attributes:{position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:d})},indices:g,primitiveType:We.TRIANGLES};return r&&(_.attributes.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:u})),new pt(_)};var aDe=new ge,cDe=new ge,lDe=new ge,Lz=new ge;zb.computeRhumbLineSubdivision=function(e,t,n,i,o){o=o??Z.RADIANS_PER_DEGREE;let r=l(i),s=n.slice(0),a,c=t.length,d=new Array(c*3),u=new Array(c*2),h=0,p=0;for(a=0;a0;){let R=s.pop(),G=s.pop(),B=s.pop(),w=m.fromArray(d,B*3,Rae),F=m.fromArray(d,G*3,Vae),P=m.fromArray(d,R*3,Gae),A,T,L;r&&(A=D.fromArray(u,B*2,Zae),T=D.fromArray(u,G*2,Bae),L=D.fromArray(u,R*2,wae));let V=e.cartesianToCartographic(w,aDe),W=e.cartesianToCartographic(F,cDe),M=e.cartesianToCartographic(P,lDe);I.setEndPoints(V,W);let Q=I.surfaceDistance;_.setEndPoints(W,M);let N=_.surfaceDistance;E.setEndPoints(M,V);let k=E.surfaceDistance,v=Math.max(Q,N,k),O,H,ee,K,te;v>x?Q===v?(O=`${Math.min(B,G)} ${Math.max(B,G)}`,a=f[O],l(a)||(H=I.interpolateUsingFraction(.5,Lz),ee=(V.height+W.height)*.5,K=m.fromRadians(H.longitude,H.latitude,ee,e,RA),d.push(K.x,K.y,K.z),a=d.length/3-1,f[O]=a,r&&(te=D.add(A,T,LE),D.multiplyByScalar(te,.5,te),u.push(te.x,te.y))),s.push(B,a,R),s.push(a,G,R)):N===v?(O=`${Math.min(G,R)} ${Math.max(G,R)}`,a=f[O],l(a)||(H=_.interpolateUsingFraction(.5,Lz),ee=(W.height+M.height)*.5,K=m.fromRadians(H.longitude,H.latitude,ee,e,RA),d.push(K.x,K.y,K.z),a=d.length/3-1,f[O]=a,r&&(te=D.add(T,L,LE),D.multiplyByScalar(te,.5,te),u.push(te.x,te.y))),s.push(G,a,B),s.push(a,R,B)):k===v&&(O=`${Math.min(R,B)} ${Math.max(R,B)}`,a=f[O],l(a)||(H=E.interpolateUsingFraction(.5,Lz),ee=(M.height+V.height)*.5,K=m.fromRadians(H.longitude,H.latitude,ee,e,RA),d.push(K.x,K.y,K.z),a=d.length/3-1,f[O]=a,r&&(te=D.add(L,A,LE),D.multiplyByScalar(te,.5,te),u.push(te.x,te.y))),s.push(R,a,G),s.push(a,B,G)):(g.push(B),g.push(G),g.push(R))}let S={attributes:{position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:d})},indices:g,primitiveType:We.TRIANGLES};return r&&(S.attributes.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:u})),new pt(S)};zb.scaleToGeodeticHeight=function(e,t,n,i){n=n??ie.default;let o=rDe,r=sDe;if(t=t??0,i=i??!0,l(e)){let s=e.length;for(let a=0;a10&&t*2>e.length&&(this._array=e.slice(t),t=0),this._offset=t,this._length--,n};Kb.prototype.peek=function(){if(this._length!==0)return this._array[this._offset]};Kb.prototype.contains=function(e){return this._array.indexOf(e)!==-1};Kb.prototype.clear=function(){this._array.length=this._offset=this._length=0};Kb.prototype.sort=function(e){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(e)};var Jb=Kb;var hr={};hr.computeHierarchyPackedLength=function(e,t){let n=0,i=[e];for(;i.length>0;){let o=i.pop();if(!l(o))continue;n+=2;let r=o.positions,s=o.holes;if(l(r)&&r.length>0&&(n+=r.length*t.packedLength),l(s)){let a=s.length;for(let c=0;c0;){let r=o.pop();if(!l(r))continue;let s=r.positions,a=r.holes;if(t[n++]=l(s)?s.length:0,t[n++]=l(a)?a.length:0,l(s)){let c=s.length;for(let d=0;d0?new Array(o):void 0;for(let a=0;aZ.PI){let c=s;s=a,a=c}if(!(r.longitudea))return n.cartographicToCartesian(r)}function yDe(e,t,n,i){if(i===dn.RHUMB)return bDe(e,t,n);let o=fi.lineSegmentPlane(e,t,An.ORIGIN_XY_PLANE);if(l(o))return n.scaleToGeodeticSurface(o,o)}var CDe=new ge;function xDe(e,t,n){let i=[],o,r,s,a,c,d=0;for(;dt.cartesianToCartographic(h,CDe).longitude;if(s===0)i.push({position:d,type:s,visited:!1,next:a,theta:u(o)});else if(a!==0){if(c=yDe(o,r,t,n),++d,!l(c))continue;e.splice(d,0,c),i.push({position:d,type:s,visited:!1,next:a,theta:u(c)})}++d}return i}function Pae(e,t,n,i,o,r,s){let a=[],c=r,d=h=>p=>p.position===h,u=[];do{let h=n[c];a.push(h);let p=i.findIndex(d(c)),g=i[p];if(!l(g)){++c;continue}let{visited:f,type:b,next:x}=g;if(g.visited=!0,b===0){if(x===0){let S=i[p-(s?1:-1)];if(S?.position===c+1)S.visited=!0;else{++c;continue}}if(!f&&s&&x>0||r===c&&!s&&x<0){++c;continue}}if(!(s?b>=0:b<=0)){++c;continue}f||u.push(c);let _=p+(s?1:-1),E=i[_];if(!l(E)){++c;continue}c=E.position}while(c=0&&c!==r&&a.lengthd.theta-u.theta);let c=s[0].z>=0;o=Pae(i,o,s,a,1,0,c)}return i};hr.polygonsFromHierarchy=function(e,t,n,i,o,r){let s=[],a=[],c=new Jb;c.enqueue(e);let d=l(r);for(;c.length!==0;){let u=c.dequeue(),h=u.positions,p=u.holes,g,f;if(i)for(f=h.length,g=0;g1){for(let B of G)c.enqueue(new lc(B,p));continue}}let _=h.slice(),E=l(p)?p.length:0,S=[],R;for(g=0;gMath.PI&&(e-=Z.TWO_PI),e}}});var RE=new ge,RDe=new m;ts.prototype.getLatitude=function(e){l(e)||(e=ie.default),RE.latitude=this.conformalLatitude,RE.longitude=this.longitude,RE.height=0;let t=this.ellipsoid.cartographicToCartesian(RE,RDe);return e.cartesianToCartographic(t,RE),RE.latitude};var VDe=new En,GDe=new m,ZDe=new m;ts.fromCartesian=function(e,t){let n=Z.signNotZero(e.z),i=ts.NORTH_POLE_TANGENT_PLANE,o=ts.SOUTH_POLE;n<0&&(i=ts.SOUTH_POLE_TANGENT_PLANE,o=ts.NORTH_POLE);let r=VDe;r.origin=i.ellipsoid.scaleToGeocentricSurface(e,r.origin),r.direction=m.subtract(r.origin,o,GDe),m.normalize(r.direction,r.direction);let s=fi.rayPlane(r,i.plane,ZDe),a=m.subtract(s,o,s),c=m.dot(i.xAxis,a),d=n*m.dot(i.yAxis,a);return l(t)?(t.position=new D(c,d),t.tangentPlane=i,t):new ts(new D(c,d),i)};ts.fromCartesianArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i=0?s:s+Z.TWO_PI;o.westOverIdl=Math.min(o.westOverIdl,a),o.eastOverIdl=Math.max(o.eastOverIdl,a),r.west=Math.min(r.west,s),r.east=Math.max(r.east,s);let c=e.getLatitude(n),d=c;if(r.south=Math.min(r.south,c),r.north=Math.max(r.north,c),i!==dn.RHUMB){let p=D.subtract(t.position,e.position,KDe),g=D.dot(t.position,p)/D.dot(p,p);if(g>0&&g<1){let f=D.add(t.position,D.multiplyByScalar(p,-g,p),JDe),b=Wc.clone(t,jDe);b.position=f;let x=b.getLatitude(n);r.south=Math.min(r.south,x),r.north=Math.max(r.north,x),Math.abs(c)>Math.abs(x)&&(d=x)}}let u=t.x*e.y-e.x*t.y,h=Math.sign(u);h!==0&&(h*=D.angleBetween(t.position,e.position)),d>=0&&(o.northAngle+=h),d<=0&&(o.southAngle+=h)}var Uae=new Wc,qDe=new Wc,im={northAngle:0,southAngle:0,westOverIdl:0,eastOverIdl:0};om.computeRectangleFromPositions=function(e,t,n,i){if(l(i)||(i=new le),e.length<3)return i;i.west=Number.POSITIVE_INFINITY,i.east=Number.NEGATIVE_INFINITY,i.south=Number.POSITIVE_INFINITY,i.north=Number.NEGATIVE_INFINITY,im.northAngle=0,im.southAngle=0,im.westOverIdl=Number.POSITIVE_INFINITY,im.eastOverIdl=Number.NEGATIVE_INFINITY;let o=e.length,r=Wc.fromCartesian(e[0],qDe);for(let s=1;sim.eastOverIdl-im.westOverIdl&&(i.west=im.westOverIdl,i.east=im.eastOverIdl,i.east>Z.PI&&(i.east=i.east-Z.TWO_PI),i.west>Z.PI&&(i.west=i.west-Z.TWO_PI)),Z.equalsEpsilon(Math.abs(im.northAngle),Z.TWO_PI,Z.EPSILON10)&&(i.north=Z.PI_OVER_TWO,i.east=Z.PI,i.west=-Z.PI),Z.equalsEpsilon(Math.abs(im.southAngle),Z.TWO_PI,Z.EPSILON10)&&(i.south=-Z.PI_OVER_TWO,i.east=Z.PI,i.west=-Z.PI),i};var $De=new Wc;function eQe(e,t,n){return e.height>=Z.PI||e.width>=Z.PI?Wc.fromCartesian(t[0],$De).tangentPlane:gs.fromPoints(t,n)}var kae=new ge;function tQe(e,t,n){return(i,o)=>{if(e.height>=Z.PI||e.width>=Z.PI){if(e.south<0&&e.north>0){l(o)||(o=[]);for(let s=0;s=Z.PI||e.width>=Z.PI)return(o,r)=>{if(e.south<0&&e.north>0){let s=n.cartesianToCartographic(o,kae);return l(r)||(r=new D),r.x=s.longitude/Z.PI,r.y=s.latitude/Z.PI_OVER_TWO,r}return Wc.fromCartesian(o,r)};let i=gs.fromPoints(t,n);return(o,r)=>i.projectPointsOntoPlane(o,r)}function iQe(e,t,n,i){return(o,r)=>!i&&(e.height>=Z.PI_OVER_TWO||e.width>=2*Z.PI_OVER_THREE)?ti.splitPolygonsOnEquator(o,t,n,r):o}function oQe(e,t,n,i){if(t.height>=Z.PI||t.width>=Z.PI)return Ke.fromRectangle(t,void 0,vae);let o=e,r=gs.fromPoints(o,n);return ti.computeBoundingRectangle(r.plane.normal,r.projectPointOntoPlane.bind(r),o,i,vae)}om.createGeometry=function(e){let t=e._vertexFormat,n=e._ellipsoid,i=e._granularity,o=e._stRotation,r=e._polygonHierarchy,s=e._perPositionHeight,a=e._closeTop,c=e._closeBottom,d=e._arcType,u=e._textureCoordinates,h=l(u),p=r.positions;if(p.length<3)return;let g=e.rectangle,f=ti.polygonsFromHierarchy(r,h,tQe(g,p,n),!s,n,iQe(g,n,d,s)),b=f.hierarchy,x=f.polygons,I=function(V){return V},_=h?ti.polygonsFromHierarchy(u,!0,I,!1,n).polygons:void 0;if(b.length===0)return;let E=b[0].outerRing,S=oQe(E,g,n,o),R=[],G=e._height,B=e._extrudedHeight,w=e._perPositionHeightExtrude||!Z.equalsEpsilon(G,B,0,Z.EPSILON2),F={perPositionHeight:s,vertexFormat:t,geometry:void 0,rotationAxis:eQe(g,E,n).plane.normal,projectTo2d:nQe(g,E,n),boundingRectangle:S,ellipsoid:n,stRotation:o,textureCoordinates:void 0,bottom:!1,top:!0,wall:!1,extrude:!1,arcType:d},P;if(w)for(F.extrude=!0,F.top=a,F.bottom=c,F.shadowVolume=e._shadowVolume,F.offsetAttribute=e._offsetAttribute,P=0;P 2) { + dimension = ceil(log2(float(u_extentsLength))); + } + int regionIndex = getPolygonIndex(dimension, v_textureCoordinates); + + for (int polygonIndex = 0; polygonIndex < u_polygonsLength; polygonIndex++) { + ivec2 positionsLengthAndExtents = getPositionsLengthAndExtentsIndex(lastPolygonIndex); + int positionsLength = positionsLengthAndExtents.x; + int polygonExtentsIndex = positionsLengthAndExtents.y; + lastPolygonIndex += 1; + + // Only compute signed distance for the relevant part of the atlas + if (polygonExtentsIndex == regionIndex) { + float clipAmount = czm_infinity; + vec4 extents = getExtents(polygonExtentsIndex); + vec2 textureOffset = vec2(mod(float(polygonExtentsIndex), dimension), floor(float(polygonExtentsIndex) / dimension)) / dimension; + vec2 p = getCoordinates((v_textureCoordinates - textureOffset) * dimension, extents); + float s = 1.0; + + // Check each edge for absolute distance + for (int i = 0, j = positionsLength - 1; i < positionsLength; j = i, i++) { + vec2 a = getPolygonPosition(lastPolygonIndex + i); + vec2 b = getPolygonPosition(lastPolygonIndex + j); + + vec2 ab = b - a; + vec2 pa = p - a; + float t = dot(pa, ab) / dot(ab, ab); + t = clamp(t, 0.0, 1.0); + + vec2 pq = pa - t * ab; + float d = length(pq); + + // Inside / outside computation to determine sign + bvec3 cond = bvec3(p.y >= a.y, + p.y < b.y, + ab.x * pa.y > ab.y * pa.x); + if (all(cond) || all(not(cond))) s = -s; + if (abs(d) < abs(clipAmount)) { + clipAmount = d; + } + } + + // Normalize the range to [0,1] + vec4 result = (s * vec4(clipAmount * length(extents.zw))) / 2.0 + 0.5; + // In the case where we've iterated through multiple polygons, take the minimum + out_FragColor = min(out_FragColor, result); + } + + lastPolygonIndex += positionsLength; + } +}`;function xs(e){e=e??Y.EMPTY_OBJECT,this._polygons=[],this._totalPositions=0,this.enabled=e.enabled??!0,this.inverse=e.inverse??!1,this.polygonAdded=new Ce,this.polygonRemoved=new Ce,this._owner=void 0,this._float32View=void 0,this._extentsFloat32View=void 0,this._extentsCount=0,this._polygonsTexture=void 0,this._extentsTexture=void 0,this._signedDistanceTexture=void 0,this._signedDistanceComputeCommand=void 0;let t=e.polygons;if(l(t)){let n=t.length;for(let i=0;iGE.equals(t,e))};xs.prototype.remove=function(e){let t=this._polygons,n=t.findIndex(i=>GE.equals(i,e));return n===-1?!1:(t.splice(n,1),this.polygonRemoved.raiseEvent(e,n),!0)};var aQe=new le;function cQe(e){let t=[],n=[],i=e.length;for(let r=0;rle.union(e[x].computeSphericalExtents(aQe),b,b),a),t[p]=void 0,n[p]=void 0,c=Math.max(a.height*2.5,.001),d=Math.max(a.width*2.5,.001),u=le.clone(a,u),u.south-=c,u.west-=d,u.north+=c,u.east+=d,u.south=Math.max(u.south,-Math.PI),u.west=Math.max(u.west,-Math.PI),u.north=Math.min(u.north,Math.PI),u.east=Math.min(u.east,Math.PI),p=-1}}t.push(u),n.push(h)}let o=new Map;return n.filter(l).forEach((r,s)=>r.forEach(a=>o.set(a,s))),{extentsList:t.filter(l),extentsIndexByPolygon:o}}xs.prototype.removeAll=function(){let e=this._polygons,t=e.length;for(let n=0;ns+a.length,0);if(n===this.totalPositions||(this._totalPositions=n,this.length===0))return;l(this._signedDistanceComputeCommand)&&(this._signedDistanceComputeCommand.canceled=!0,this._signedDistanceComputeCommand=void 0);let i=this._polygonsTexture,o=this._extentsTexture,r=this._signedDistanceTexture;if(l(i)){let s=i.width*i.height;(s{e._signedDistanceComputeCommand=void 0}})}var Hae=new le,uQe=new le;xs.prototype.computeIntersectionWithBoundingVolume=function(e,t){let n=this._polygons,i=n.length,o=on.OUTSIDE;this.inverse&&(o=on.INSIDE);for(let r=0;r= PRIMARY_STEPS) { + break; + } + + // Calculate sample position along viewpoint ray. + vec3 samplePosition = primaryRay.origin + primaryRay.direction * (rayPositionLength + rayStepLength); + + // Calculate height of sample position above ellipsoid. + float sampleHeight = length(samplePosition) - atmosphereInnerRadius; + + // Calculate and accumulate density of particles at the sample position. + vec2 sampleDensity = exp(-sampleHeight / heightScale) * rayStepLength; + opticalDepth += sampleDensity; + + // Generate ray from the sample position segment to the light source, up to the outer ring of the atmosphere. + czm_ray lightRay = czm_ray(samplePosition, lightDirection); + czm_raySegment lightRayAtmosphereIntersect = czm_raySphereIntersectionInterval(lightRay, origin, atmosphereOuterRadius); + + float lightStepLength = lightRayAtmosphereIntersect.stop / float(LIGHT_STEPS); + float lightPositionLength = 0.0; + + vec2 lightOpticalDepth = vec2(0.0); + + // Sample positions along the light ray, to accumulate incidence of light on the latest sample segment. + for (int j = 0; j < LIGHT_STEPS_MAX; ++j) { + + // The loop should be: for (int j = 0; i < LIGHT_STEPS; ++j) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (j >= LIGHT_STEPS) { + break; + } + + // Calculate sample position along light ray. + vec3 lightPosition = samplePosition + lightDirection * (lightPositionLength + lightStepLength * 0.5); + + // Calculate height of the light sample position above ellipsoid. + float lightHeight = length(lightPosition) - atmosphereInnerRadius; + + // Calculate density of photons at the light sample position. + lightOpticalDepth += exp(-lightHeight / heightScale) * lightStepLength; + + // Increment distance on light ray. + lightPositionLength += lightStepLength; + } + + // Compute attenuation via the primary ray and the light ray. + vec3 attenuation = exp(-((u_atmosphereMieCoefficient * (opticalDepth.y + lightOpticalDepth.y)) + (u_atmosphereRayleighCoefficient * (opticalDepth.x + lightOpticalDepth.x)))); + + // Accumulate the scattering. + rayleighAccumulation += sampleDensity.x * attenuation; + mieAccumulation += sampleDensity.y * attenuation; + + // Increment distance on primary ray. + rayPositionLength += (rayStepLength += rayStepLengthIncrease); + } + + // Compute the scattering amount. + rayleighColor = u_atmosphereRayleighCoefficient * rayleighAccumulation; + mieColor = u_atmosphereMieCoefficient * mieAccumulation; + + // Compute the transmittance i.e. how much light is passing through the atmosphere. + opacity = length(exp(-((u_atmosphereMieCoefficient * opticalDepth.y) + (u_atmosphereRayleighCoefficient * opticalDepth.x)))); +} + +vec4 computeAtmosphereColor( + vec3 positionWC, + vec3 lightDirection, + vec3 rayleighColor, + vec3 mieColor, + float opacity +) { + // Setup the primary ray: from the camera position to the vertex position. + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + + float cosAngle = dot(cameraToPositionWCDirection, lightDirection); + float cosAngleSq = cosAngle * cosAngle; + + float G = u_atmosphereMieAnisotropy; + float GSq = G * G; + + // The Rayleigh phase function. + float rayleighPhase = 3.0 / (50.2654824574) * (1.0 + cosAngleSq); + // The Mie phase function. + float miePhase = 3.0 / (25.1327412287) * ((1.0 - GSq) * (cosAngleSq + 1.0)) / (pow(1.0 + GSq - 2.0 * cosAngle * G, 1.5) * (2.0 + GSq)); + + // The final color is generated by combining the effects of the Rayleigh and Mie scattering. + vec3 rayleigh = rayleighPhase * rayleighColor; + vec3 mie = miePhase * mieColor; + + vec3 color = (rayleigh + mie) * u_atmosphereLightIntensity; + + return vec4(color, opacity); +} +`;var d0n=y(C(),1),cB=`uniform samplerCube u_radianceMap; + +in vec2 v_textureCoordinates; + + +const float twoSqrtPi = 2.0 * sqrt(czm_pi); + +// Coutesy of https://www.ppsloan.org/publications/StupidSH36.pdf +float computeShBasis(int index, vec3 s) { + if (index == 0) { // l = 0, m = 0 + return 1.0 / twoSqrtPi; + } + + if (index == 1) { // l = 1, m = -1 + return -sqrt(3.0) * s.y / twoSqrtPi; + } + + if (index == 2) { // l = 1, m = 0 + return sqrt(3.0) * s.z / twoSqrtPi; + } + + if (index == 3) { // l = 1, m = 1 + return -sqrt(3.0) * s.x / twoSqrtPi; + } + + if (index == 4) { // l = 2, m = -2 + return sqrt(15.0) * s.y * s.x / twoSqrtPi; + } + + if (index == 5) { // l = 2, m = -1 + return -sqrt(15.0) * s.y * s.z / twoSqrtPi; + } + + if (index == 6) { // l = 2, m = 0 + return sqrt(5.0) * (3.0 * s.z * s.z - 1.0) / 2.0 / twoSqrtPi; + } + + if (index == 7) { // l = 2, m = 1 + return -sqrt(15.0) * s.x * s.z / twoSqrtPi; + } + + if (index == 8) { // l = 2, m = 2 + return sqrt(15.0) * (s.x * s.x - s.y * s.y) / 2.0 / twoSqrtPi; + } + + return 0.0; +} + +float vdcRadicalInverse(int i) +{ + float r; + float base = 2.0; + float value = 0.0; + float invBase = 1.0 / base; + float invBi = invBase; + for (int x = 0; x < 100; x++) + { + if (i <= 0) + { + break; + } + r = mod(float(i), base); + value += r * invBi; + invBi *= invBase; + i = int(float(i) * invBase); + } + return value; +} + +vec2 hammersley2D(int i, int N) +{ + return vec2(float(i) / float(N), vdcRadicalInverse(i)); +} + +// Sample count is relatively low for the sake of performance, but should still be enough to capture directionality needed for third-order harmonics +const int samples = 256; +const float solidAngle = 1.0 / float(samples); + +void main() { + // Get the current coefficient based on the uv + vec2 uv = v_textureCoordinates.xy * 3.0; + int coefficientIndex = int(floor(uv.y) * 3.0 + floor(uv.x)); + + for (int i = 0; i < samples; ++i) { + vec2 xi = hammersley2D(i, samples); + float phi = czm_twoPi * xi.x; + float cosTheta = 1.0 - 2.0 * sqrt(1.0 - xi.y * xi.y); + float sinTheta = sqrt(1.0 - cosTheta * cosTheta); + vec3 direction = normalize(vec3(sinTheta * cos(phi), cosTheta, sinTheta * sin(phi))); + + // Generate the spherical harmonics basis from the direction + float Ylm = computeShBasis(coefficientIndex, direction); + + vec3 lookupDirection = -direction.xyz; + lookupDirection.z = -lookupDirection.z; + + vec4 color = czm_textureCube(u_radianceMap, lookupDirection, 0.0); + + // Use the relevant function for this coefficient + out_FragColor += Ylm * color * solidAngle * sinTheta; + } + +} +`;var m0n=y(C(),1),lB=`precision highp float; + +in vec2 v_textureCoordinates; + +uniform vec3 u_faceDirection; // Current cubemap face +uniform vec3 u_positionWC; +uniform mat4 u_enuToFixedFrame; +uniform vec4 u_brightnessSaturationGammaIntensity; +uniform vec4 u_groundColor; // alpha component represent albedo + +vec4 getCubeMapDirection(vec2 uv, vec3 faceDir) { + vec2 scaledUV = uv * 2.0 - 1.0; + + if (faceDir.x != 0.0) { + return vec4(faceDir.x, scaledUV.x * faceDir.x, -scaledUV.y, 0.0); + } else if (faceDir.y != 0.0) { + return vec4(scaledUV.x, -scaledUV.y * faceDir.y, faceDir.y, 0.0); + } else { + return vec4(scaledUV.x * faceDir.z, -faceDir.z, -scaledUV.y, 0.0); + } +} + +void main() { + float height = length(u_positionWC); + float atmosphereInnerRadius = u_radiiAndDynamicAtmosphereColor.y; + float ellipsoidHeight = max(height - atmosphereInnerRadius, 0.0); + + // Scale the position to ensure the sky color is present, even when underground. + vec3 positionWC = u_positionWC / height * (ellipsoidHeight + atmosphereInnerRadius); + + float atmosphereOuterRadius = u_radiiAndDynamicAtmosphereColor.x; + float atmosphereHeight = atmosphereOuterRadius - atmosphereInnerRadius; + + vec3 direction = (u_enuToFixedFrame * getCubeMapDirection(v_textureCoordinates, u_faceDirection)).xyz; + vec3 normalizedDirection = normalize(direction); + + czm_ray ray = czm_ray(positionWC, normalizedDirection); + czm_raySegment intersection = czm_raySphereIntersectionInterval(ray, vec3(0.0), atmosphereInnerRadius); + if (!czm_isEmpty(intersection)) { + intersection = czm_rayEllipsoidIntersectionInterval(ray, vec3(0.0), czm_ellipsoidInverseRadii); + } + + bool onEllipsoid = intersection.start >= 0.0; + float rayLength = czm_branchFreeTernary(onEllipsoid, intersection.start, atmosphereOuterRadius); + + // Compute sky color for each position on a sphere at radius centered around the provided position's origin + vec3 skyPositionWC = positionWC + normalizedDirection * rayLength; + + float lightEnum = u_radiiAndDynamicAtmosphereColor.z; + vec3 lightDirectionWC = normalize(czm_getDynamicAtmosphereLightDirection(skyPositionWC, lightEnum)); + vec3 mieColor; + vec3 rayleighColor; + float opacity; + czm_computeScattering( + ray, + rayLength, + lightDirectionWC, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); + + vec4 atmopshereColor = czm_computeAtmosphereColor(ray, lightDirectionWC, rayleighColor, mieColor, opacity); + +#ifdef ATMOSPHERE_COLOR_CORRECT + const bool ignoreBlackPixels = true; + atmopshereColor.rgb = czm_applyHSBShift(atmopshereColor.rgb, czm_atmosphereHsbShift, ignoreBlackPixels); +#endif + + vec3 lookupDirection = -normalizedDirection; + // Flipping the X vector is a cheap way to get the inverse of czm_temeToPseudoFixed, since that's a rotation about Z. + lookupDirection.x = -lookupDirection.x; + lookupDirection = -normalize(czm_temeToPseudoFixed * lookupDirection); + lookupDirection.x = -lookupDirection.x; + + // Values outside the atmopshere are rendered as black, when they should be treated as transparent + float skyAlpha = clamp((1.0 - ellipsoidHeight / atmosphereHeight) * atmopshereColor.a, 0.0, 1.0); + skyAlpha = czm_branchFreeTernary(length(atmopshereColor.rgb) <= czm_epsilon7, 0.0, skyAlpha); // Treat black as transparent + + // Blend starmap with atmopshere scattering + float intensity = u_brightnessSaturationGammaIntensity.w; + vec4 sceneSkyBoxColor = czm_textureCube(czm_environmentMap, lookupDirection); + vec3 skyBackgroundColor = mix(czm_backgroundColor.rgb, sceneSkyBoxColor.rgb, sceneSkyBoxColor.a); + vec4 combinedSkyColor = vec4(mix(skyBackgroundColor, atmopshereColor.rgb * intensity, skyAlpha), 1.0); + + // Compute ground color based on amount of reflected light, then blend it with ground atmosphere based on height + vec3 up = normalize(positionWC); + float occlusion = max(dot(lightDirectionWC, up), 0.05); + vec4 groundColor = vec4(u_groundColor.rgb * u_groundColor.a * (vec3(intensity * occlusion) + atmopshereColor.rgb), 1.0); + vec4 blendedGroundColor = mix(groundColor, atmopshereColor, clamp(ellipsoidHeight / atmosphereHeight, 0.0, 1.0)); + + vec4 color = czm_branchFreeTernary(onEllipsoid, blendedGroundColor, combinedSkyColor); + + float brightness = u_brightnessSaturationGammaIntensity.x; + float saturation = u_brightnessSaturationGammaIntensity.y; + float gamma = u_brightnessSaturationGammaIntensity.z; + +#ifdef ENVIRONMENT_COLOR_CORRECT + color.rgb = mix(vec3(0.0), color.rgb, brightness); + color.rgb = czm_saturation(color.rgb, saturation); +#endif + color.rgb = pow(color.rgb, vec3(gamma)); // Normally this would be in the ifdef above, but there is a precision issue with the atmopshere scattering transmittance (alpha). Having this line is a workaround for that issue, even when gamma is 1.0. + color.rgb = czm_gammaCorrect(color.rgb); + + out_FragColor = color; +} +`;var f0n=y(C(),1),dB=`precision highp float; + +in vec3 v_textureCoordinates; + +uniform float u_roughness; +uniform samplerCube u_radianceTexture; +uniform vec3 u_faceDirection; + +float vdcRadicalInverse(int i) +{ + float r; + float base = 2.0; + float value = 0.0; + float invBase = 1.0 / base; + float invBi = invBase; + for (int x = 0; x < 100; x++) + { + if (i <= 0) + { + break; + } + r = mod(float(i), base); + value += r * invBi; + invBi *= invBase; + i = int(float(i) * invBase); + } + return value; +} + +vec2 hammersley2D(int i, int N) +{ + return vec2(float(i) / float(N), vdcRadicalInverse(i)); +} + +vec3 importanceSampleGGX(vec2 xi, float alphaRoughness, vec3 N) +{ + float alphaRoughnessSquared = alphaRoughness * alphaRoughness; + float phi = czm_twoPi * xi.x; + float cosTheta = sqrt((1.0 - xi.y) / (1.0 + (alphaRoughnessSquared - 1.0) * xi.y)); + float sinTheta = sqrt(1.0 - cosTheta * cosTheta); + vec3 H = vec3(sinTheta * cos(phi), sinTheta * sin(phi), cosTheta); + vec3 upVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 tangentX = normalize(cross(upVector, N)); + vec3 tangentY = cross(N, tangentX); + return tangentX * H.x + tangentY * H.y + N * H.z; +} + +// Sample count is relatively low for the sake of performance, but should still be enough to prevent artifacting in lower roughnesses +const int samples = 128; + +void main() { + vec3 normal = u_faceDirection; + vec3 V = normalize(v_textureCoordinates); + float roughness = u_roughness; + + vec4 color = vec4(0.0); + float weight = 0.0; + for (int i = 0; i < samples; ++i) { + vec2 xi = hammersley2D(i, samples); + vec3 H = importanceSampleGGX(xi, roughness, V); + vec3 L = 2.0 * dot(V, H) * H - V; // reflected vector + + float NdotL = max(dot(V, L), 0.0); + if (NdotL > 0.0) { + color += vec4(czm_textureCube(u_radianceTexture, L).rgb, 1.0) * NdotL; + weight += NdotL; + } + } + out_FragColor = color / weight; +} +`;var A0n=y(C(),1),uB=`in vec3 position; +out vec3 v_textureCoordinates; + +uniform vec3 u_faceDirection; + +vec3 getCubeMapDirection(vec2 uv, vec3 faceDir) { + vec2 scaledUV = uv; + + if (faceDir.x != 0.0) { + return vec3(faceDir.x, scaledUV.y, scaledUV.x * faceDir.x); + } else if (faceDir.y != 0.0) { + return vec3(scaledUV.x, -faceDir.y, -scaledUV.y * faceDir.y); + } else { + return vec3(scaledUV.x * faceDir.z, scaledUV.y, -faceDir.z); + } +} + +void main() +{ + v_textureCoordinates = getCubeMapDirection(position.xy, u_faceDirection); + v_textureCoordinates.y = -v_textureCoordinates.y; + v_textureCoordinates.z = -v_textureCoordinates.z; + gl_Position = vec4(position, 1.0); +} +`;function Ai(e){this._position=void 0,this._radianceMapDirty=!1,this._radianceCommandsDirty=!1,this._convolutionsCommandsDirty=!1,this._irradianceCommandDirty=!1,this._irradianceTextureDirty=!1,this._sphericalHarmonicCoefficientsDirty=!1,this._shouldRegenerateShaders=!1,this._shouldReset=!1,e=e??Y.EMPTY_OBJECT;let t=Math.min(e.mipmapLevels??7,Math.log2(Kt.maximumCubeMapSize));this._mipmapLevels=t,this._radianceMapComputeCommands=new Array(6),this._convolutionComputeCommands=new Array((t-1)*6),this._irradianceComputeCommand=void 0,this._radianceMapFS=void 0,this._irradianceMapFS=void 0,this._convolveSP=void 0,this._va=void 0,this._radianceMapTextures=new Array(6),this._specularMapTextures=new Array((t-1)*6),this._radianceCubeMap=void 0,this._irradianceMapTexture=void 0,this._sphericalHarmonicCoefficients=Ai.DEFAULT_SPHERICAL_HARMONIC_COEFFICIENTS.slice(),this._lastTime=new j;let n=Math.pow(2,t-1);this._textureDimensions=new D(n,n),this._radiiAndDynamicAtmosphereColor=new m,this._sceneEnvironmentMap=void 0,this._backgroundColor=void 0,this._owner=void 0,this.enabled=e.enabled??!0,this.shouldUpdate=!0,this.maximumSecondsDifference=e.maximumSecondsDifference??3600,this.maximumPositionEpsilon=e.maximumPositionEpsilon??1e3,this.atmosphereScatteringIntensity=e.atmosphereScatteringIntensity??2,this.gamma=e.gamma??1,this.brightness=e.brightness??1,this.saturation=e.saturation??1,this.groundColor=e.groundColor??Ai.AVERAGE_EARTH_GROUND_COLOR,this.groundAlbedo=e.groundAlbedo??.31}Object.defineProperties(Ai.prototype,{owner:{get:function(){return this._owner}},shouldRegenerateShaders:{get:function(){return this._shouldRegenerateShaders}},position:{get:function(){return this._position},set:function(e){m.equalsEpsilon(e,this._position,0,this.maximumPositionEpsilon)||(this._position=m.clone(e,this._position),this._shouldReset=!0)}},radianceCubeMap:{get:function(){return this._radianceCubeMap}},maximumMipmapLevel:{get:function(){return this._mipmapLevels}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients}}});Ai._maximumComputeCommandCount=8;Ai._activeComputeCommandCount=0;Ai._nextFrameCommandQueue=[];Ai._queueCommand=(e,t)=>{if(Ai._activeComputeCommandCount>=Ai._maximumComputeCommandCount){Ai._nextFrameCommandQueue.push(e);return}t.commandList.push(e),Ai._activeComputeCommandCount++};Ai._updateCommandQueue=e=>{if(Ai._maximumComputeCommandCount=Math.log2(Kt.maximumCubeMapSize),Ai._nextFrameCommandQueue.length>0&&Ai._activeComputeCommandCounts,u_enuToFixedFrame:()=>c,u_faceDirection:()=>Pr.getDirection(h,Kae),u_positionWC:()=>r,u_brightnessSaturationGammaIntensity:()=>d,u_groundColor:()=>e.groundColor.withAlpha(e.groundAlbedo,gQe)},owner:e});f.postExecute=()=>{if(e.isDestroyed()||f.canceled){Ai._activeComputeCommandCount--;return}let b=e._radianceMapComputeCommands;b[g]=void 0;let x=new jr({context:n,colorTextures:[e._radianceMapTextures[g]]});x._bind(),e._radianceCubeMap[h].copyFromFramebuffer(),x._unBind(),x.destroy(),Ai._activeComputeCommandCount--,b.some(l)||(e._convolutionsCommandsDirty=!0,e._shouldRegenerateShaders=!0)},e._radianceMapComputeCommands[u]=f,Ai._queueCommand(f,t),u++}e._radianceCommandsDirty=!1}}function yQe(e,t){let n=e._radianceCubeMap;n.generateMipmap();let i=e._mipmapLevels,o=e._textureDimensions,r=o.x/2,s=o.y/2,a=t.context,c=0,d=(h,p,g,f,b)=>()=>{if(e.isDestroyed()||h.canceled){Ai._activeComputeCommandCount--;return}let x=e._convolutionComputeCommands;x[p]=void 0,n.copyFace(t,g,f,b),c++,Ai._activeComputeCommandCount--,g.destroy(),e._specularMapTextures[p]=void 0;let I=e._specularMapTextures.length;c>=I&&(e._irradianceCommandDirty=!0,n.sampler=new sn({minificationFilter:en.LINEAR_MIPMAP_LINEAR}),e._shouldRegenerateShaders=!0,e._va.destroy(),e._va=void 0,e._convolveSP.destroy(),e._convolveSP=void 0)},u=0;for(let h=1;hh/(i-1),u_radianceTexture:()=>n??a.defaultTexture,u_faceDirection:()=>Pr.getDirection(p,Kae)}});x.postExecute=d(x,u,g,p,h),e._convolutionComputeCommands[u]=x,Ai._queueCommand(x,t),++u}r/=2,s/=2}}var Jae=new D(3,3);function CQe(e,t){let n=t.context,i=Jae,o=e._irradianceMapTexture;l(o)&&!o.isDestroyed()&&o.destroy(),o=new Wt({context:n,width:i.x,height:i.y,pixelDatatype:Ye.FLOAT,pixelFormat:tt.RGBA}),e._irradianceMapTexture=o;let r=e._irradianceMapFS;l(r)||(r=new Oe({sources:[cB]}),e._irradianceMapFS=r);let s=new Il({fragmentShaderSource:r,outputTexture:o,owner:e,uniformMap:{u_radianceMap:()=>e._radianceCubeMap??n.defaultTexture}});s.postExecute=()=>{if(e.isDestroyed()||s.canceled){Ai._activeComputeCommandCount--;return}e._irradianceTextureDirty=!1,e._irradianceComputeCommand=void 0,e._sphericalHarmonicCoefficientsDirty=!0,e._irradianceMapFS=void 0,Ai._activeComputeCommandCount--},e._irradianceComputeCommand=s,Ai._queueCommand(s,t),e._irradianceTextureDirty=!0}function xQe(e,t){let n=t.context;if(!l(e._irradianceMapTexture))return;let i=new jr({context:n,colorTextures:[e._irradianceMapTexture],destroyAttachments:!1}),o=Jae,r=n.readPixels({x:0,y:0,width:o.x,height:o.y,framebuffer:i});for(let s=0;s<9;++s)e._sphericalHarmonicCoefficients[s]=m.unpack(r,s*4),m.multiplyByScalar(e._sphericalHarmonicCoefficients[s],e.atmosphereScatteringIntensity,e._sphericalHarmonicCoefficients[s]);i.destroy(),e._irradianceMapTexture.destroy(),e._irradianceMapTexture=void 0,e._shouldRegenerateShaders=!0}Ai.prototype.update=function(e){let t=e.mode;if(!Ai.isDynamicUpdateSupported(e)||!this.enabled||!this.shouldUpdate||!l(this._position)||t===re.MORPHING){this._shouldRegenerateShaders=!1;return}Ai._updateCommandQueue(e);let i=e.atmosphere.dynamicLighting,o=fQe(this,e)||i===GA.SUNLIGHT&&!j.equalsEpsilon(e.time,this._lastTime,this.maximumSecondsDifference);if(this._shouldReset||o){this.reset(),this._shouldReset=!1,this._lastTime=j.clone(e.time,this._lastTime);return}if(this._radianceMapDirty&&(bQe(this,e),this._radianceMapDirty=!1),this._convolutionsCommandsDirty&&(yQe(this,e),this._convolutionsCommandsDirty=!1),this._irradianceCommandDirty&&(CQe(this,e),this._irradianceCommandDirty=!1),this._irradianceTextureDirty){this._shouldRegenerateShaders=!1;return}if(this._sphericalHarmonicCoefficientsDirty){xQe(this,e),this._sphericalHarmonicCoefficientsDirty=!1;return}this._shouldRegenerateShaders=!1};Ai.prototype.isDestroyed=function(){return!1};Ai.prototype.destroy=function(){let e=this._radianceMapComputeCommands.length;for(let t=0;t4?(xt(`Property texture property ${e.id} is an array of length ${e.arrayLength}, but may have at most a length of 4`),!1):t!==bt.SCALAR?(xt(`Property texture property ${e.id} is an array of type ${t}, but only SCALAR is supported`),!1):n!==Ut.UINT8?(xt(`Property texture property ${e.id} is an array with component type ${n}, but only UINT8 is supported`),!1):!0:bt.isVectorType(t)||t===bt.SCALAR?n!==Ut.UINT8?(xt(`Property texture property ${e.id} has component type ${n}, but only UINT8 is supported`),!1):!0:(xt(`Property texture property ${e.id} has an unsupported type`),!1)};var EQe=[void 0,"float","vec2","vec3","vec4"],TQe=[void 0,"int","ivec2","ivec3","ivec4"];fB.prototype.getGlslType=function(){let e=this._classProperty,t=bt.getComponentCount(e.type);return e.isArray&&(t=e.arrayLength),e.normalized?EQe[t]:TQe[t]};fB.prototype.unpackInShader=function(e){return this._classProperty.normalized?e:`${this.getGlslType()}(255.0 * ${e})`};function SQe(e){return e.map(function(t){return"rgba".charAt(t)}).join("")}var pB=fB;function Zz(e){e=e??Y.EMPTY_OBJECT;let t=e.propertyTexture,n=e.class,i=e.textures,o=t.extensions,r=t.extras,s={};if(l(t.properties))for(let a in t.properties)t.properties.hasOwnProperty(a)&&(s[a]=new pB({property:t.properties[a],classProperty:n.properties[a],textures:i}));this._name=e.name,this._id=e.id,this._class=n,this._properties=s,this._extras=r,this._extensions=o}Object.defineProperties(Zz.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},class:{get:function(){return this._class}},properties:{get:function(){return this._properties}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});Zz.prototype.getProperty=function(e){return this._properties[e]};var wA=Zz;var wyn=y(C(),1);var Ryn=y(C(),1);function qae(e){e=e??Y.EMPTY_OBJECT;let t=e.property,n=e.classProperty;this._attribute=t.attribute,this._classProperty=n,this._min=t.min,this._max=t.max;let i=t.offset,o=t.scale,r=n.hasValueTransform||l(i)||l(o);i=i??n.offset,o=o??n.scale,i=n.unpackVectorAndMatrixTypes(i),o=n.unpackVectorAndMatrixTypes(o),this._offset=i,this._scale=o,this._hasValueTransform=r,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(qae.prototype,{attribute:{get:function(){return this._attribute}},hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},classProperty:{get:function(){return this._classProperty}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var AB=qae;function Bz(e){e=e??Y.EMPTY_OBJECT;let t=e.propertyAttribute,n=e.class,i={};if(l(t.properties))for(let o in t.properties)t.properties.hasOwnProperty(o)&&(i[o]=new AB({property:t.properties[o],classProperty:n.properties[o]}));this._name=e.name,this._id=e.id,this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(Bz.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},class:{get:function(){return this._class}},properties:{get:function(){return this._properties}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});Bz.prototype.getProperty=function(e){return this._properties[e]};var jC=Bz;var Pyn=y(C(),1);function gB(e){e=e??Y.EMPTY_OBJECT,this._schema=e.schema;let t=e.propertyTables;this._propertyTableCount=l(t)?t.length:0,this._propertyTables=t,this._propertyTextures=e.propertyTextures,this._propertyAttributes=e.propertyAttributes,this._statistics=e.statistics,this._extras=e.extras,this._extensions=e.extensions}Object.defineProperties(gB.prototype,{schema:{get:function(){return this._schema}},statistics:{get:function(){return this._statistics}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}},propertyTableCount:{get:function(){return this._propertyTableCount}},propertyTables:{get:function(){return this._propertyTables}},propertyTextures:{get:function(){return this._propertyTextures}},propertyAttributes:{get:function(){return this._propertyAttributes}},propertyTablesByteLength:{get:function(){if(!l(this._propertyTables))return 0;let e=0,t=this._propertyTables.length;for(let n=0;n=r;)I=o[I-r];o.push(I),s[b]=x}x>kQe&&(t instanceof Uint16Array||t instanceof Uint8Array)?t=new Uint32Array(t):x>YQe&&t instanceof Uint8Array&&(t=new Uint16Array(t)),b===c?(c=x,t[a]=x):b===d?(d=x,t[a+1]=x):(u=x,t[a+2]=x),b=ece(i,c,d,u,p,g,f)}}e._triangleIndices=t,e._outlineCoordinatesTypedArray=new Float32Array(i)}function ece(e,t,n,i,o,r,s){let a=s?1:0,c=o?1:0,d=0,u=wz(e,t,a,c,d);if(u===0)return t;let h=0,p=o?1:0,g=r?1:0,f=wz(e,n,h,p,g);if(f===0)return n;let b=s?1:0,x=0,I=r?1:0,_=wz(e,i,b,x,I);if(_===0)return i;let E=u&f&_,S,R,G;if(E&1)S=0,R=1,G=2;else if(E&2)S=0,G=1,R=2;else if(E&4)R=0,S=1,G=2;else if(E&8)R=0,G=1,S=2;else if(E&16)G=0,S=1,R=2;else if(E&32)G=0,R=1,S=2;else{let P=Xz(u),A=Xz(f),T=Xz(_);return P>1&1)+(e>>2&1)+(e>>3&1)+(e>>4&1)+(e>>5&1)}fQ.prototype.updateAttribute=function(e){let t=this._extraVertices,n=e.length,i=n/this._originalVertexCount,o=t.length,r=e.constructor,s=new r(e.length+o*i);s.set(e);for(let a=0;a1;)i>>=1,r.push(tce(i));let s=new Wt({context:e,source:{arrayBufferView:o,mipLevels:r},width:n,height:1,pixelFormat:tt.LUMINANCE,sampler:new sn({wrapS:Ln.CLAMP_TO_EDGE,wrapT:Ln.CLAMP_TO_EDGE,minificationFilter:en.LINEAR_MIPMAP_LINEAR,magnificationFilter:pi.LINEAR})});return t.outlineTexture=s,s};function tce(e){let t=new Uint8Array(e);return t[e-1]=192,e===8?t[e-1]=96:e===4?t[e-1]=48:e===2?t[e-1]=24:e===1&&(t[e-1]=12),t}function nce(e,t){this._originalVertexCount=t,this._edges=new Set;for(let n=0;n{this._resourcesLoaded=!0}).catch(o=>{this._processError=o})),l(this._processError)){this._state=Ho.FAILED;let o=this._processError;this._processError=void 0,AQ(this,o)}let t=this._textureErrors.pop();if(l(t)){let o=this.getError("Failed to load glTF texture",t);throw o.name="TextureError",o}if(this._state===Ho.FAILED)return!1;let n=!1;try{n=this._process(e)}catch(o){this._state=Ho.FAILED,AQ(this,o)}let i=!1;try{i=this._processTextures(e)}catch(o){this._textureState=Ho.FAILED,AQ(this,o)}return this._incrementallyLoadTextures?n:n&&i};function B5e(e,t,n,i,o,r,s,a,c){let d=e.gltfJson,h=d.accessors[t].bufferView;return Mi.getVertexBufferLoader({gltf:d,gltfResource:e._gltfResource,baseResource:e._baseResource,frameState:c,bufferViewId:h,primitive:i,draco:o,spz:r,attributeSemantic:n,accessorId:t,asynchronous:e._asynchronous,loadBuffer:s,loadTypedArray:a})}function w5e(e,t,n,i,o,r,s){return Mi.getIndexBufferLoader({gltf:e.gltfJson,accessorId:t,gltfResource:e._gltfResource,baseResource:e._baseResource,frameState:s,primitive:n,draco:i,asynchronous:e._asynchronous,loadBuffer:o,loadTypedArray:r})}function X5e(e,t){let n=Mi.getBufferViewLoader({gltf:e.gltfJson,bufferViewId:t,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoaders.push(n),n}function Ace(e,t,n){let i=t.byteOffset,o=nd(e,t),r=t.count,s=Ud(t.type),a=t.componentType,c=J.getSizeInBytes(a),d=c*s,u=r*s;if(o===d)return n=new Uint8Array(n),J.createArrayBufferView(a,n.buffer,n.byteOffset+i,u);let h=J.createTypedArray(a,u),p=new DataView(n.buffer),g=new Array(s),f=LA(t.componentType);i=n.byteOffset+i;for(let b=0;b{let a=1/0,c=-1/0,d=1/0,u=-1/0,h=1/0,p=-1/0;for(let g=0;g{l(o)&&l(o.attributes)&&l(o.attributes[p])?O5e(I,_,s,a):l(r)?H5e(I,_,s,a):z5e(d,u,I,_,s,a)},I}function yce(e,t,n,i,o,r,s,a,c){let d=n.modelSemantic,u=d===lt.POSITION,h=d===lt.FEATURE_ID,p=u&&!s&&e._loadAttributesFor2D&&!c.scene3DOnly,g=u&&e._enablePick&&!c.context.webgl2,f=e._loadForClassification&&h,b=e._loadAttributesAsTypedArray,x=!b,I=b||p||g||f,S=bce(e,t,n,i,o,r,a?!1:x,a?!0:I,c),R=new $C.AttributeLoadPlan(S);return R.loadBuffer=x,R.loadTypedArray=I,R}function K5e(e,t,n,i,o){let r=e.gltfJson.accessors,s=l(n.ROTATION),a=l(n.TRANSLATION)&&l(r[n.TRANSLATION].min)&&l(r[n.TRANSLATION].max),c=Pz(e,Is,i),d=c.modelSemantic,u=d===Is.TRANSLATION||d===Is.ROTATION||d===Is.SCALE,h=d===Is.TRANSLATION,p=e._loadAttributesAsTypedArray||s&&u||!o.context.instancedArrays,g=e._enablePick&&!o.context.webgl2,f=!p,b=e._loadAttributesFor2D&&!o.scene3DOnly;return bce(e,t,c,void 0,void 0,void 0,f,p||h&&(!a||b||g),o)}function J5e(e,t,n,i,o,r,s){let a=e.gltfJson.accessors[t],c=a.bufferView;if(!l(i)&&!l(c))return;let d=new a5e;d.count=a.count;let u=e._loadAttributesAsTypedArray,h=(e._loadIndicesForWireframe||e._enablePick)&&!s.context.webgl2,p=e._loadForClassification&&o,f=!u,b=u||h||p,_=w5e(e,t,n,i,r?!1:f,r?!0:b,s),E=e._geometryLoaders.length;e._geometryLoaders.push(_);let S=_.load();e._loaderPromises.push(S),e._geometryCallbacks[E]=()=>{d.indexDatatype=_.indexDatatype,d.buffer=_.buffer,d.typedArray=_.typedArray};let R=new $C.IndicesLoadPlan(d);return R.loadBuffer=f,R.loadTypedArray=b,R}function El(e,t,n,i){let o=e.gltfJson,r=id.getImageIdFromTexture({gltf:o,textureId:t.index,supportedImageFormats:e._supportedImageFormats});if(!l(r))return;let s=Mi.getTextureLoader({gltf:o,textureInfo:t,gltfResource:e._gltfResource,baseResource:e._baseResource,supportedImageFormats:e._supportedImageFormats,frameState:n,asynchronous:e._asynchronous}),a=id.createModelTextureReader({textureInfo:t}),c=e._textureLoaders.length;e._textureLoaders.push(s);let d=s.load().catch(u=>{if(!e.isDestroyed()){if(!e._incrementallyLoadTextures)throw u;e._textureState=Ho.FAILED,e._textureErrors.push(u)}});return e._texturesPromises.push(d),e._textureCallbacks[c]=()=>{a.texture=s.texture,l(i)&&(a.texture.sampler=i)},a}function j5e(e,t,n){let{diffuseTexture:i,specularGlossinessTexture:o,diffuseFactor:r,specularFactor:s,glossinessFactor:a}=t,c=new E5e;return l(i)&&(c.diffuseTexture=El(e,i,n)),l(o)&&(c.specularGlossinessTexture=El(e,o,n)),c.diffuseFactor=Yd(ce,r),c.specularFactor=Yd(m,s),c.glossinessFactor=a,c}function q5e(e,t,n){let{baseColorTexture:i,metallicRoughnessTexture:o,baseColorFactor:r,metallicFactor:s,roughnessFactor:a}=t,c=new _5e;return l(i)&&(c.baseColorTexture=El(e,i,n)),l(o)&&(c.metallicRoughnessTexture=El(e,o,n)),c.baseColorFactor=Yd(ce,r),c.metallicFactor=s,c.roughnessFactor=a,c}function $5e(e,t,n){let{specularFactor:i,specularTexture:o,specularColorFactor:r,specularColorTexture:s}=t,a=new T5e;return l(o)&&(a.specularTexture=El(e,o,n)),l(s)&&(a.specularColorTexture=El(e,s,n)),a.specularFactor=i,a.specularColorFactor=Yd(m,r),a}function eUe(e,t,n){let{anisotropyStrength:i=Wz.DEFAULT_ANISOTROPY_STRENGTH,anisotropyRotation:o=Wz.DEFAULT_ANISOTROPY_ROTATION,anisotropyTexture:r}=t,s=new Wz;return l(r)&&(s.anisotropyTexture=El(e,r,n)),s.anisotropyStrength=i,s.anisotropyRotation=o,s}function tUe(e,t,n){let{clearcoatFactor:i=Fz.DEFAULT_CLEARCOAT_FACTOR,clearcoatTexture:o,clearcoatRoughnessFactor:r=Fz.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR,clearcoatRoughnessTexture:s,clearcoatNormalTexture:a}=t,c=new Fz;return l(o)&&(c.clearcoatTexture=El(e,o,n)),l(s)&&(c.clearcoatRoughnessTexture=El(e,s,n)),l(a)&&(c.clearcoatNormalTexture=El(e,a,n)),c.clearcoatFactor=i,c.clearcoatRoughnessFactor=r,c}function nUe(e,t,n){let i=new S5e,o=t.extensions??Y.EMPTY_OBJECT,r=o.KHR_materials_pbrSpecularGlossiness,s=o.KHR_materials_specular,a=o.KHR_materials_anisotropy,c=o.KHR_materials_clearcoat,d=t.pbrMetallicRoughness;return i.unlit=l(o.KHR_materials_unlit),l(r)?i.specularGlossiness=j5e(e,r,n):(l(d)&&(i.metallicRoughness=q5e(e,d,n)),l(s)&&!i.unlit&&(i.specular=$5e(e,s,n)),l(a)&&!i.unlit&&(i.anisotropy=eUe(e,a,n)),l(c)&&!i.unlit&&(i.clearcoat=tUe(e,c,n))),l(t.emissiveTexture)&&(i.emissiveTexture=El(e,t.emissiveTexture,n)),l(t.normalTexture)&&!e._loadForClassification&&(i.normalTexture=El(e,t.normalTexture,n)),l(t.occlusionTexture)&&(i.occlusionTexture=El(e,t.occlusionTexture,n)),i.emissiveFactor=Yd(m,t.emissiveFactor),i.alphaMode=t.alphaMode,i.alphaCutoff=t.alphaCutoff,i.doubleSided=t.doubleSided,i}function Cce(e,t){let n=new hce;return n.featureCount=e.featureCount,n.nullFeatureId=e.nullFeatureId,n.propertyTableId=e.propertyTable,n.setIndex=e.attribute,n.label=e.label,n.positionalLabel=t,n}function xce(e,t,n,i){let o=new hce,r=e.featureIds;return o.featureCount=n,o.propertyTableId=t,o.setIndex=gce(r.attribute),o.positionalLabel=i,o}function Ice(e,t){let n=new pce;return n.propertyTableId=e.propertyTable,n.featureCount=e.featureCount,n.nullFeatureId=e.nullFeatureId,n.label=e.label,n.positionalLabel=t,n.offset=0,n.repeat=1,n}function _ce(e,t,n,i){let o=new pce,r=e.featureIds;o.propertyTableId=t,o.featureCount=n,o.offset=r.constant??0;let s=r.divisor??0;return o.repeat=s===0?void 0:s,o.positionalLabel=i,o}function iUe(e,t,n,i){let o=new fce;o.featureCount=t.featureCount,o.nullFeatureId=t.nullFeatureId,o.propertyTableId=t.propertyTable,o.label=t.label,o.positionalLabel=i;let r=t.texture;o.textureReader=El(e,r,n,sn.NEAREST);let a=(l(r.channels)?r.channels:[0]).map(function(c){return"rgba".charAt(c)}).join("");return o.textureReader.channels=a,o}function oUe(e,t,n,i,o,r){let s=new fce,a=t.featureIds,c=a.texture;return s.featureCount=o,s.propertyTableId=n,s.textureReader=El(e,c,i,sn.NEAREST),s.textureReader.channels=a.channels,s.positionalLabel=r,s}function rUe(e,t,n,i,o){let r=new c5e,s=void 0,a=void 0,c=void 0,d=!1;for(let u in t){if(!t.hasOwnProperty(u))continue;let h=t[u],p=Pz(e,lt,u),g=yce(e,h,p,s,a,c,d,n,o);r.attributes.push(g.attribute),i.attributePlans.push(g)}return r}function sUe(e,t,n,i){let o=new l5e,r=new $C(o);e._primitiveLoadPlans.push(r);let s=t.material;l(s)&&(o.material=nUe(e,e.gltfJson.materials[s],i));let a=t.extensions??Y.EMPTY_OBJECT,c=!1,d=a.CESIUM_primitive_outline;e._loadPrimitiveOutline&&l(d)&&(c=!0,r.needsOutlines=!0,r.outlineIndices=aUe(e,d,r));let u=a.KHR_spz_gaussian_splats_compression;l(u)&&(c=!0,r.needsGaussianSplats=!0);let h=e._loadForClassification,p=a.KHR_draco_mesh_compression,g=!1,f=t.attributes;if(l(f))for(let G in f){if(!f.hasOwnProperty(G))continue;let B=f[G],w=Pz(e,lt,G),F=w.modelSemantic;if(h&&!Y5e(F))continue;F===lt.FEATURE_ID&&(g=!0);let P=yce(e,B,w,t,p,u,n,c,i);r.attributePlans.push(P),o.attributes.push(P.attribute)}let b=t.targets;if(l(b)&&!h)for(let G=0;Gn[s]);let r=t.inverseBindMatrices;if(l(r)){let s=e.gltfJson.accessors[r];i.inverseBindMatrices=gQ(e,s)}else i.inverseBindMatrices=new Array(o.length).fill(X.IDENTITY);return i}function bUe(e,t){let n=e.gltfJson.skins;if(e._loadForClassification||!l(n))return[];let i=n.map(function(r,s){let a=gUe(e,r,t);return a.index=s,a}),o=e.gltfJson.nodes;for(let r=0;r0&&(i|=n.COLOR_BUFFER_BIT),l(this._colorFramebuffer.depthStencilTexture)&&(i|=n.DEPTH_BUFFER_BIT|(t?n.STENCIL_BUFFER_BIT:0)),n.blitFramebuffer(0,0,this._width,this._height,0,0,this._width,this._height,i,n.NEAREST),n.bindFramebuffer(n.READ_FRAMEBUFFER,null),n.bindFramebuffer(n.DRAW_FRAMEBUFFER,null)};XE.prototype.isDestroyed=function(){return!1};XE.prototype.destroy=function(){return this._renderFramebuffer.destroy(),this._colorFramebuffer.destroy(),me(this)};var ZB=XE;var _In=y(C(),1);var AIn=y(C(),1);var rd={RGBA4:ne.RGBA4,RGBA8:ne.RGBA8,RGBA16F:ne.RGBA16F,RGBA32F:ne.RGBA32F,RGB5_A1:ne.RGB5_A1,RGB565:ne.RGB565,DEPTH_COMPONENT16:ne.DEPTH_COMPONENT16,STENCIL_INDEX8:ne.STENCIL_INDEX8,DEPTH_STENCIL:ne.DEPTH_STENCIL,DEPTH24_STENCIL8:ne.DEPTH24_STENCIL8,validate:function(e){return e===rd.RGBA4||e===rd.RGBA8||e===rd.RGBA16F||e===rd.RGBA32F||e===rd.RGB5_A1||e===rd.RGB565||e===rd.DEPTH_COMPONENT16||e===rd.STENCIL_INDEX8||e===rd.DEPTH_STENCIL||e===rd.DEPTH24_STENCIL8},getColorFormat:function(e){return e===ne.FLOAT?rd.RGBA32F:e===ne.HALF_FLOAT_OES?rd.RGBA16F:rd.RGBA8}},Tl=Object.freeze(rd);function BB(e){e=e??Y.EMPTY_OBJECT;let t=e.context,n=t._gl,i=Kt.maximumRenderbufferSize,o=e.format??Tl.RGBA4,r=l(e.width)?e.width:t.drawingBufferWidth,s=l(e.height)?e.height:t.drawingBufferHeight,a=e.numSamples??1;this._gl=n,this._format=o,this._width=r,this._height=s,this._renderbuffer=this._gl.createRenderbuffer(),n.bindRenderbuffer(n.RENDERBUFFER,this._renderbuffer),a>1?n.renderbufferStorageMultisample(n.RENDERBUFFER,a,o,r,s):n.renderbufferStorage(n.RENDERBUFFER,o,r,s),n.bindRenderbuffer(n.RENDERBUFFER,null)}Object.defineProperties(BB.prototype,{format:{get:function(){return this._format}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});BB.prototype._getRenderbuffer=function(){return this._renderbuffer};BB.prototype.isDestroyed=function(){return!1};BB.prototype.destroy=function(){return this._gl.deleteRenderbuffer(this._renderbuffer),me(this)};var Hd=BB;function Hs(e){e=e??Y.EMPTY_OBJECT,this._numSamples=e.numSamples??1,this._colorAttachmentsLength=e.colorAttachmentsLength??1,this._color=e.color??!0,this._depth=e.depth??!1,this._depthStencil=e.depthStencil??!1,this._supportsDepthTexture=e.supportsDepthTexture??!1,this._createColorAttachments=e.createColorAttachments??!0,this._createDepthAttachments=e.createDepthAttachments??!0,this._pixelDatatype=e.pixelDatatype,this._pixelFormat=e.pixelFormat,this._width=void 0,this._height=void 0,this._framebuffer=void 0,this._multisampleFramebuffer=void 0,this._colorTextures=void 0,this._color&&(this._colorTextures=new Array(this._colorAttachmentsLength),this._colorRenderbuffers=new Array(this._colorAttachmentsLength)),this._colorRenderbuffer=void 0,this._depthStencilRenderbuffer=void 0,this._depthStencilTexture=void 0,this._depthRenderbuffer=void 0,this._depthTexture=void 0,this._attachmentsDirty=!1}Object.defineProperties(Hs.prototype,{framebuffer:{get:function(){return this._numSamples>1?this._multisampleFramebuffer.getRenderFramebuffer():this._framebuffer}},numSamples:{get:function(){return this._numSamples}},status:{get:function(){return this.framebuffer.status}}});Hs.prototype.isDirty=function(e,t,n,i,o){n=n??1;let r=this._width!==e||this._height!==t,s=this._numSamples!==n,a=l(i)&&this._pixelDatatype!==i||l(o)&&this._pixelFormat!==o,c=n===1?l(this._framebuffer):l(this._multisampleFramebuffer);return this._attachmentsDirty||r||s||a||!c||this._color&&!l(this._colorTextures[0])};Hs.prototype.update=function(e,t,n,i,o,r){if(i=e.msaa?i??1:1,o=o??(this._color?this._pixelDatatype??Ye.UNSIGNED_BYTE:void 0),r=r??(this._color?this._pixelFormat??tt.RGBA:void 0),this.isDirty(t,n,i,o,r)){if(this.destroy(),this._width=t,this._height=n,this._numSamples=i,this._pixelDatatype=o,this._pixelFormat=r,this._attachmentsDirty=!1,this._color&&this._createColorAttachments){for(let s=0;s1){let a=Tl.getColorFormat(o);this._colorRenderbuffers[s]=new Hd({context:e,width:t,height:n,format:a,numSamples:this._numSamples})}}this._depthStencil&&this._createDepthAttachments&&(this._supportsDepthTexture&&e.depthTexture?(this._depthStencilTexture=new Wt({context:e,width:t,height:n,pixelFormat:tt.DEPTH_STENCIL,pixelDatatype:Ye.UNSIGNED_INT_24_8,sampler:sn.NEAREST}),this._numSamples>1&&(this._depthStencilRenderbuffer=new Hd({context:e,width:t,height:n,format:Tl.DEPTH24_STENCIL8,numSamples:this._numSamples}))):this._depthStencilRenderbuffer=new Hd({context:e,width:t,height:n,format:Tl.DEPTH_STENCIL})),this._depth&&this._createDepthAttachments&&(this._supportsDepthTexture&&e.depthTexture?this._depthTexture=new Wt({context:e,width:t,height:n,pixelFormat:tt.DEPTH_COMPONENT,pixelDatatype:Ye.UNSIGNED_INT,sampler:sn.NEAREST}):this._depthRenderbuffer=new Hd({context:e,width:t,height:n,format:Tl.DEPTH_COMPONENT16})),this._numSamples>1?this._multisampleFramebuffer=new ZB({context:e,width:this._width,height:this._height,colorTextures:this._colorTextures,colorRenderbuffers:this._colorRenderbuffers,depthStencilTexture:this._depthStencilTexture,depthStencilRenderbuffer:this._depthStencilRenderbuffer,destroyAttachments:!1}):this._framebuffer=new jr({context:e,colorTextures:this._colorTextures,depthTexture:this._depthTexture,depthRenderbuffer:this._depthRenderbuffer,depthStencilTexture:this._depthStencilTexture,depthStencilRenderbuffer:this._depthStencilRenderbuffer,destroyAttachments:!1})}};Hs.prototype.getColorTexture=function(e){return e=e??0,this._colorTextures[e]};Hs.prototype.setColorTexture=function(e,t){t=t??0,this._attachmentsDirty=e!==this._colorTextures[t],this._colorTextures[t]=e};Hs.prototype.getColorRenderbuffer=function(e){return e=e??0,this._colorRenderbuffers[e]};Hs.prototype.setColorRenderbuffer=function(e,t){t=t??0,this._attachmentsDirty=e!==this._colorRenderbuffers[t],this._colorRenderbuffers[t]=e};Hs.prototype.getDepthRenderbuffer=function(){return this._depthRenderbuffer};Hs.prototype.setDepthRenderbuffer=function(e){this._attachmentsDirty=e!==this._depthRenderbuffer,this._depthRenderbuffer=e};Hs.prototype.getDepthTexture=function(){return this._depthTexture};Hs.prototype.setDepthTexture=function(e){this._attachmentsDirty=e!==this._depthTexture,this._depthTexture=e};Hs.prototype.getDepthStencilRenderbuffer=function(){return this._depthStencilRenderbuffer};Hs.prototype.setDepthStencilRenderbuffer=function(e){this._attachmentsDirty=e!==this._depthStencilRenderbuffer,this._depthStencilRenderbuffer=e};Hs.prototype.getDepthStencilTexture=function(){return this._depthStencilTexture};Hs.prototype.setDepthStencilTexture=function(e){this._attachmentsDirty=e!==this._depthStencilTexture,this._depthStencilTexture=e};Hs.prototype.prepareTextures=function(e,t){this._numSamples>1&&this._multisampleFramebuffer.blitFramebuffers(e,t)};Hs.prototype.clear=function(e,t,n){let i=t.framebuffer;t.framebuffer=this.framebuffer,t.execute(e,n),t.framebuffer=i};Hs.prototype.destroyFramebuffer=function(){this._framebuffer=this._framebuffer&&this._framebuffer.destroy(),this._multisampleFramebuffer=this._multisampleFramebuffer&&this._multisampleFramebuffer.destroy()};Hs.prototype.destroy=function(){if(this._color){let e=this._colorTextures,t=this._colorRenderbuffers;for(let n=0;n=s.clientWidth)d=!0;else{if(E.x>s.clientWidth*.5){a.width=E.x,c.frustum.right=p.x-I,vc=XB(r,n,c,vc),mc.clipToGLWindowCoordinates(a,vc,vz),a.x+=E.x,c.position.x=-c.position.x;let S=c.frustum.right;c.frustum.right=-c.frustum.left,c.frustum.left=-S,vc=XB(r,n,c,vc),mc.clipToGLWindowCoordinates(a,vc,Nz)}else{a.x+=E.x,a.width-=E.x,c.frustum.left=-p.x-I,vc=XB(r,n,c,vc),mc.clipToGLWindowCoordinates(a,vc,vz),a.x=a.x-a.width,c.position.x=-c.position.x;let S=c.frustum.left;c.frustum.left=-c.frustum.right,c.frustum.right=-S,vc=XB(r,n,c,vc),mc.clipToGLWindowCoordinates(a,vc,Nz)}m.clone(g,c.position),c.frustum=f.clone(),i=D.clone(vz,i),(i.x<0||i.x>s.clientWidth)&&(i.x=Nz.x)}}if(o.mode!==re.SCENE2D||d){if(vc=XB(r,n,c,vc),vc.z<0&&!(c.frustum instanceof gn)&&!(c.frustum instanceof qr))return;i=mc.clipToGLWindowCoordinates(a,vc,i)}return i.y=s.clientHeight-i.y,i};mc.worldToDrawingBufferCoordinates=function(e,t,n){if(n=mc.worldToWindowCoordinates(e,t,n),!!l(n))return mc.transformWindowToDrawingBuffer(e,n,n)};var WA=new m,HUe=new ge;mc.computeActualEllipsoidPosition=function(e,t,n){let i=e.mode;if(i===re.SCENE3D)return m.clone(t,n);let o=e.mapProjection,r=o.ellipsoid.cartesianToCartographic(t,HUe);if(!l(r))return;if(o.project(r,WA),i===re.COLUMBUS_VIEW)return m.fromElements(WA.z,WA.x,WA.y,n);if(i===re.SCENE2D)return m.fromElements(0,WA.x,WA.y,n);let s=e.morphTime;return m.fromElements(Z.lerp(WA.z,t.x,s),Z.lerp(WA.x,t.y,s),Z.lerp(WA.y,t.z,s),n)};var Vce=new m,Gce=new m,Zce=new X;mc.clipToGLWindowCoordinates=function(e,t,n){return m.divideByScalar(t,t.w,Vce),X.computeViewportTransformation(e,0,1,Zce),X.multiplyByPoint(Zce,Vce,Gce),D.fromCartesian3(Gce,n)};mc.transformWindowToDrawingBuffer=function(e,t,n){let i=e.canvas,o=e.drawingBufferWidth/i.clientWidth,r=e.drawingBufferHeight/i.clientHeight;return D.fromElements(t.x*o,t.y*r,n)};var zUe=new ce,Bce=new ce;mc.drawingBufferToWorldCoordinates=function(e,t,n,i){let r=e.context.uniformState,s=r.currentFrustum,a=s.x,c=s.y;if(e.frameState.useLogDepth){let g=n*r.log2FarDepthFromNearPlusOne,f=Math.pow(2,g)-1;n=c*(1-a/(f+a))/(c-a)}let d=e.view.passState.viewport,u=ce.clone(ce.UNIT_W,zUe);u.x=(t.x-d.x)/d.width*2-1,u.y=(t.y-d.y)/d.height*2-1,u.z=n*2-1,u.w=1;let h,p=e.camera.frustum;if(l(p.fovy)){h=X.multiplyByVector(r.inverseViewProjection,u,Bce);let g=1/h.w;m.multiplyByScalar(h,g,h)}else{let g=p.offCenterFrustum;l(g)&&(p=g),h=Bce,h.x=(u.x*(p.right-p.left)+p.left+p.right)*.5,h.y=(u.y*(p.top-p.bottom)+p.bottom+p.top)*.5,h.z=(u.z*(a-c)-a-c)*.5,h.w=1,h=X.multiplyByVector(r.inverseView,h,h)}return m.fromCartesian4(h,i)};var to=mc;var cEn=y(C(),1);var x_n=y(C(),1);var FE={};FE._deprecationWarning=_r;var FA=Uint32Array.BYTES_PER_ELEMENT;FE.parse=function(e,t){let n=t??0;t=n;let i=new Uint8Array(e),o=new DataView(e);t+=FA;let r=o.getUint32(t,!0);if(r!==1)throw new de(`Only Batched 3D Model version 1 is supported. Version ${r} is not.`);t+=FA;let s=o.getUint32(t,!0);t+=FA;let a=o.getUint32(t,!0);t+=FA;let c=o.getUint32(t,!0);t+=FA;let d=o.getUint32(t,!0);t+=FA;let u=o.getUint32(t,!0);t+=FA;let h;d>=570425344?(t-=FA*2,h=a,d=c,u=0,a=0,c=0,FE._deprecationWarning("b3dm-legacy-header","This b3dm header is using the legacy format [batchLength] [batchTableByteLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel.")):u>=570425344&&(t-=FA,h=d,d=a,u=c,a=0,c=0,FE._deprecationWarning("b3dm-legacy-header","This b3dm header is using the legacy format [batchTableJsonByteLength] [batchTableBinaryByteLength] [batchLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel."));let p;a===0?p={BATCH_LENGTH:h??0}:(p=mr(i,t,a),t+=a);let g=new Uint8Array(e,t,c);t+=c;let f,b;d>0&&(f=mr(i,t,d),t+=d,u>0&&(b=new Uint8Array(e,t,u),b=new Uint8Array(b),t+=u));let x=n+s-t;if(x===0)throw new de("glTF byte length must be greater than 0.");let I;return t%4===0?I=new Uint8Array(e,t,x):(FE._deprecationWarning("b3dm-glb-unaligned","The embedded glb is not aligned to a 4-byte boundary."),I=new Uint8Array(i.subarray(t,t+x))),{batchLength:h,featureTableJson:p,featureTableBinary:g,batchTableJson:f,batchTableBinary:b,gltf:I}};var WB=FE;var T_n=y(C(),1);function FB(e,t){this.json=e,this.buffer=t,this._cachedTypedArrays={},this.featuresLength=0}function wce(e,t,n,i,o,r){let s=e._cachedTypedArrays,a=s[t];return l(a)||(a=J.createArrayBufferView(n,e.buffer.buffer,e.buffer.byteOffset+r,o*i),s[t]=a),a}function KUe(e,t,n,i){let o=e._cachedTypedArrays,r=o[t];return l(r)||(r=J.createTypedArray(n,i),o[t]=r),r}FB.prototype.getGlobalProperty=function(e,t,n){let i=this.json[e];if(l(i))return l(i.byteOffset)?(t=t??J.UNSIGNED_INT,n=n??1,wce(this,e,t,n,1,i.byteOffset)):i};FB.prototype.hasProperty=function(e){return l(this.json[e])};FB.prototype.getPropertyArray=function(e,t,n){let i=this.json[e];if(l(i))return l(i.byteOffset)?(l(i.componentType)&&(t=J.fromName(i.componentType)),wce(this,e,t,n,this.featuresLength,i.byteOffset)):KUe(this,e,t,i)};FB.prototype.getProperty=function(e,t,n,i,o){let r=this.json[e];if(!l(r))return;let s=this.getPropertyArray(e,t,n);if(n===1)return s[i];for(let a=0;a0&&(f=mr(i,t,d),t+=d,u>0&&(b=new Uint8Array(e,t,u),b=new Uint8Array(b),t+=u));let x=n+s-t;if(x===0)throw new de("glTF byte length must be greater than 0.");let I;return t%4===0?I=new Uint8Array(e,t,x):(yQ._deprecationWarning("i3dm-glb-unaligned","The embedded glb is not aligned to a 4-byte boundary."),I=new Uint8Array(i.subarray(t,t+x))),{gltfFormat:h,featureTableJson:p,featureTableBinary:g,batchTableJson:f,batchTableBinary:b,gltf:I}};var NB=yQ;var MA={NOT_LOADED:0,LOADING:1,PROCESSING:2,POST_PROCESSING:3,READY:4,FAILED:5,UNLOADED:6},CQ=Tn.Attribute,Ake=Tn.FeatureIdAttribute,vce=Tn.Instances;function vA(e){e=e??Y.EMPTY_OBJECT;let t=e.i3dmResource,n=e.arrayBuffer,i=e.baseResource,o=e.byteOffset??0,r=e.releaseGltfJson??!1,s=e.asynchronous??!0,a=e.incrementallyLoadTextures??!0,c=e.upAxis??ho.Y,d=e.forwardAxis??ho.X,u=e.loadAttributesAsTypedArray??!1,h=e.loadIndicesForWireframe??!1,p=e.loadPrimitiveOutline??!0,g=e.enablePick??!1;i=l(i)?i:t.clone(),this._i3dmResource=t,this._baseResource=i,this._arrayBuffer=n,this._byteOffset=o,this._releaseGltfJson=r,this._asynchronous=s,this._incrementallyLoadTextures=a,this._upAxis=c,this._forwardAxis=d,this._loadAttributesAsTypedArray=u,this._loadIndicesForWireframe=h,this._loadPrimitiveOutline=p,this._enablePick=g,this._state=MA.NOT_LOADED,this._promise=void 0,this._gltfLoader=void 0,this._buffers=[],this._components=void 0,this._transform=X.IDENTITY,this._batchTable=void 0,this._featureTable=void 0,this._instancesLength=0}l(Object.create)&&(vA.prototype=Object.create(Yi.prototype),vA.prototype.constructor=vA);Object.defineProperties(vA.prototype,{texturesLoaded:{get:function(){return this._gltfLoader?.texturesLoaded}},cacheKey:{get:function(){}},components:{get:function(){return this._components}}});vA.prototype.load=function(){if(l(this._promise))return this._promise;let e=NB.parse(this._arrayBuffer,this._byteOffset),t=e.featureTableJson,n=e.featureTableBinary,i=e.batchTableJson,o=e.batchTableBinary,r=e.gltfFormat,s=new Sh(t,n);this._featureTable=s;let a=s.getGlobalProperty("INSTANCES_LENGTH");if(s.featuresLength=a,!l(a))throw new de("Feature table global property: INSTANCES_LENGTH must be defined");this._instancesLength=a;let c=s.getGlobalProperty("RTC_CENTER",J.FLOAT,3);l(c)&&(this._transform=X.fromTranslation(m.fromArray(c))),this._batchTable={json:i,binary:o};let d={upAxis:this._upAxis,forwardAxis:this._forwardAxis,releaseGltfJson:this._releaseGltfJson,incrementallyLoadTextures:this._incrementallyLoadTextures,loadAttributesAsTypedArray:this._loadAttributesAsTypedArray,enablePick:this._enablePick,loadIndicesForWireframe:this._loadIndicesForWireframe,loadPrimitiveOutline:this._loadPrimitiveOutline};if(r===0){let h=$l(e.gltf);h=h.replace(/[\s\0]+$/,"");let p=this._baseResource.getDerivedResource({url:h});d.gltfResource=p,d.baseResource=p}else d.gltfResource=this._i3dmResource,d.typedArray=e.gltf;let u=new Od(d);return this._gltfLoader=u,this._state=MA.LOADING,this._promise=u.load().then(()=>{if(!this.isDestroyed())return this._state=MA.PROCESSING,this}).catch(h=>{if(!this.isDestroyed())throw gke(this,h)}),this._promise};function gke(e,t){return e.unload(),e._state=MA.FAILED,e.getError("Failed to load i3dm",t)}vA.prototype.process=function(e){if(this._state===MA.READY)return!0;let t=this._gltfLoader,n=!1;if(this._state===MA.PROCESSING&&(n=t.process(e)),!n)return!1;let i=t.components;return i.transform=X.multiplyTransformation(this._transform,i.transform,i.transform),Cke(this,i,e),bke(this,i),this._components=i,this._arrayBuffer=void 0,this._state=MA.READY,!0};function bke(e,t){let n=e._batchTable,i=e._instancesLength;if(i===0)return;let o;if(l(n.json))o=PA({count:i,batchTable:n.json,binaryBody:n.binary});else{let r=new _l({name:Ch.BATCH_TABLE_CLASS_NAME,count:i});o=new fa({schema:{},propertyTables:[r]})}t.structuralMetadata=o}var xQ=new m,Uz=new Array(4),yke=new X;function Cke(e,t,n){let i,o=e._featureTable,r=e._instancesLength;if(r===0)return;let s=o.getGlobalProperty("RTC_CENTER",J.FLOAT,3),a=o.getGlobalProperty("EAST_NORTH_UP"),c=o.hasProperty("NORMAL_UP")||o.hasProperty("NORMAL_UP_OCT32P")||a,d=o.hasProperty("SCALE")||o.hasProperty("SCALE_NON_UNIFORM"),u=Ike(o,r),h;c&&(h=new Float32Array(4*r));let p;d&&(p=new Float32Array(3*r));let g=new Float32Array(r),f=m.unpackArray(u),b=new m,x=new m,I=new m,_=new m,E=new $,S=new Pe,R=new Array(4),G=new m,B=new Array(3),w=new X;if(!l(s)||m.equals(m.unpack(s),m.ZERO)){let N=ue.fromPoints(f);for(i=0;i0&&(N.instances=Q?xke(F):F,Q=!0)}}function xke(e){let t=new vce;t.transformInWorldSpace=e.transformInWorldSpace;let n=e.attributes,i=n.length;for(let o=0;o=n[t]){if(t+1=0&&e>=n[t-1])return t-1;let o;if(e>n[t])for(o=t;o=n[o]&&e=0&&!(e>=n[o]&&en&&(r=Math.floor((e-n)/o)+1,e-=r*o),e};PE.prototype.clampTime=function(e){let t=this.times;return Z.clamp(e,t[0],t[t.length-1])};var yo=PE;function ME(e){this._value=e,this._valueType=yo.getPointType(e)}Object.defineProperties(ME.prototype,{value:{get:function(){return this._value}}});ME.prototype.findTimeInterval=function(e){};ME.prototype.wrapTime=function(e){return 0};ME.prototype.clampTime=function(e){return 0};ME.prototype.evaluate=function(e,t){let n=this._value,i=this._valueType;return i===Number?n:i.clone(n,t)};var QB=ME;var QTn=y(C(),1);var VTn=y(C(),1);function vE(e){e=e??Y.EMPTY_OBJECT;let t=e.points,n=e.times;this._times=n,this._points=t,this._pointType=yo.getPointType(t[0]),this._lastTimeIndex=0}Object.defineProperties(vE.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});vE.prototype.findTimeInterval=yo.prototype.findTimeInterval;vE.prototype.wrapTime=yo.prototype.wrapTime;vE.prototype.clampTime=yo.prototype.clampTime;vE.prototype.evaluate=function(e,t){let n=this.points,i=this.times,o=this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex),r=(e-i[o])/(i[o+1]-i[o]);return this._pointType===Number?(1-r)*n[o]+r*n[o+1]:(l(t)||(t=new m),m.lerp(n[o],n[o+1],r,t))};var i0=vE;var BTn=y(C(),1);var Nce={};Nce.solve=function(e,t,n,i){let o=new Array(n.length),r=new Array(i.length),s=new Array(i.length),a;for(a=0;a=0;--a)s[a]=m.subtract(r[a],m.multiplyByScalar(s[a+1],o[a],s[a]),s[a]);return s};var NE=Nce;var Dce=[],Qce=[],Uce=[],kce=[];function Lke(e,t,n){let i=Dce,o=Uce,r=Qce,s=kce;i.length=o.length=e.length-1,r.length=s.length=e.length;let a;i[0]=r[0]=1,o[0]=0;let c=s[0];for(l(c)||(c=s[0]=new m),m.clone(t,c),a=1;a0&&e.afterRender.push(a._raiseStartEvent)),a.loop===od.REPEAT)g=g-Math.floor(g);else if(a.loop===od.MIRRORED_REPEAT){let I=Math.floor(g),_=g-I;g=I%2===1?1-_:_}a.reverse&&(g=1-g);let x=g*d*a.multiplier;x=Z.clamp(x,a.localStartTime,a.localStopTime),a.animate(x),a.update.numberOfListeners>0&&(a._updateEventTime=x,e.afterRender.push(a._raiseUpdateEvent)),i=!0,b||(a._state=Lh.STOPPED,a.stop.numberOfListeners>0&&e.afterRender.push(a._raiseStopEvent),a.removeOnStop&&IQ.push(a))}}n=IQ.length;for(let s=0;sZ.EPSILON3}};var ew=Hce;var _Ln=y(C(),1);var pLn=y(C(),1),tw=`#ifdef DIFFUSE_IBL +vec3 sampleDiffuseEnvironment(vec3 cubeDir) +{ + #ifdef CUSTOM_SPHERICAL_HARMONICS + return czm_sphericalHarmonics(cubeDir, model_sphericalHarmonicCoefficients); + #else + return czm_sphericalHarmonics(cubeDir, czm_sphericalHarmonicCoefficients); + #endif +} +#endif + +#ifdef SPECULAR_IBL +vec3 sampleSpecularEnvironment(vec3 cubeDir, float roughness) +{ + #ifdef CUSTOM_SPECULAR_IBL + float lod = roughness * model_specularEnvironmentMapsMaximumLOD; + return czm_textureCube(model_specularEnvironmentMaps, cubeDir, lod).rgb; + #else + float lod = roughness * czm_specularEnvironmentMapsMaximumLOD; + return czm_textureCube(czm_specularEnvironmentMaps, cubeDir, lod).rgb; + #endif +} +vec3 computeSpecularIBL(vec3 cubeDir, float NdotV, vec3 f0, float roughness) +{ + // see https://bruop.github.io/ibl/ at Single Scattering Results + // Roughness dependent fresnel, from Fdez-Aguera + vec3 f90 = max(vec3(1.0 - roughness), f0); + vec3 F = fresnelSchlick2(f0, f90, NdotV); + + vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, roughness)).rg; + vec3 specularSample = sampleSpecularEnvironment(cubeDir, roughness); + + return specularSample * (F * brdfLut.x + brdfLut.y); +} +#endif + +#if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL) +/** + * Compute the light contributions from environment maps and spherical harmonic coefficients. + * See Fdez-Aguera, https://www.jcgt.org/published/0008/01/03/paper.pdf, for explanation + * of the single- and multi-scattering terms. + * + * @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position. + * @param {vec3} normalEC The surface normal in eye coordinates. + * @param {czm_modelMaterial} The material properties. + * @return {vec3} The computed HDR color. + */ +vec3 textureIBL(vec3 viewDirectionEC, vec3 normalEC, czm_modelMaterial material) { + vec3 f0 = material.specular; + float roughness = material.roughness; + float specularWeight = 1.0; + #ifdef USE_SPECULAR + specularWeight = material.specularWeight; + #endif + float NdotV = clamp(dot(normalEC, viewDirectionEC), 0.0, 1.0); + + // see https://bruop.github.io/ibl/ at Single Scattering Results + // Roughness dependent fresnel, from Fdez-Aguera + vec3 f90 = max(vec3(1.0 - roughness), f0); + vec3 singleScatterFresnel = fresnelSchlick2(f0, f90, NdotV); + + vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, roughness)).rg; + vec3 FssEss = specularWeight * (singleScatterFresnel * brdfLut.x + brdfLut.y); + + #ifdef DIFFUSE_IBL + vec3 normalMC = normalize(model_iblReferenceFrameMatrix * normalEC); + vec3 irradiance = sampleDiffuseEnvironment(normalMC); + + vec3 averageFresnel = f0 + (1.0 - f0) / 21.0; + float Ems = specularWeight * (1.0 - brdfLut.x - brdfLut.y); + vec3 FmsEms = FssEss * averageFresnel * Ems / (1.0 - averageFresnel * Ems); + vec3 dielectricScattering = (1.0 - FssEss - FmsEms) * material.diffuse; + vec3 diffuseContribution = irradiance * (FmsEms + dielectricScattering) * model_iblFactor.x; + #else + vec3 diffuseContribution = vec3(0.0); + #endif + + #ifdef USE_ANISOTROPY + // Bend normal to account for anisotropic distortion of specular reflection + vec3 anisotropyDirection = material.anisotropicB; + vec3 anisotropicTangent = cross(anisotropyDirection, viewDirectionEC); + vec3 anisotropicNormal = cross(anisotropicTangent, anisotropyDirection); + float bendFactor = 1.0 - material.anisotropyStrength * (1.0 - roughness); + float bendFactorPow4 = bendFactor * bendFactor * bendFactor * bendFactor; + vec3 bentNormal = normalize(mix(anisotropicNormal, normalEC, bendFactorPow4)); + vec3 reflectEC = reflect(-viewDirectionEC, bentNormal); + #else + vec3 reflectEC = reflect(-viewDirectionEC, normalEC); + #endif + + #ifdef SPECULAR_IBL + vec3 reflectMC = normalize(model_iblReferenceFrameMatrix * reflectEC); + vec3 radiance = sampleSpecularEnvironment(reflectMC, roughness); + vec3 specularContribution = radiance * FssEss * model_iblFactor.y; + #else + vec3 specularContribution = vec3(0.0); + #endif + + return diffuseContribution + specularContribution; +} +#endif +`;var zce={name:"ImageBasedLightingPipelineStage"},Nke=new D;zce.process=function(e,t,n){let i=t.imageBasedLighting,o=t.environmentMapManager,r=e.shaderBuilder,s;l(i.specularEnvironmentMaps)||(s=o.radianceCubeMap);let a=i.sphericalHarmonicCoefficients??o.sphericalHarmonicCoefficients;r.addDefine("USE_IBL_LIGHTING",void 0,be.FRAGMENT),r.addUniform("vec2","model_iblFactor",be.FRAGMENT),ph.isSupported(n.context)&&((i.useSphericalHarmonics||i.useSpecularEnvironmentMaps||i.enabled)&&r.addUniform("mat3","model_iblReferenceFrameMatrix",be.FRAGMENT),l(s)&&r.addDefine("COMPUTE_POSITION_WC_ATMOSPHERE",void 0,be.BOTH),l(a)&&l(a[0])?(r.addDefine("DIFFUSE_IBL",void 0,be.FRAGMENT),r.addDefine("CUSTOM_SPHERICAL_HARMONICS",void 0,be.FRAGMENT),r.addUniform("vec3","model_sphericalHarmonicCoefficients[9]",be.FRAGMENT)):i.useDefaultSphericalHarmonics&&r.addDefine("DIFFUSE_IBL",void 0,be.FRAGMENT),l(i.specularEnvironmentCubeMap)&&i.specularEnvironmentCubeMap.ready||l(s)?(r.addDefine("SPECULAR_IBL",void 0,be.FRAGMENT),r.addDefine("CUSTOM_SPECULAR_IBL",void 0,be.FRAGMENT),r.addUniform("samplerCube","model_specularEnvironmentMaps",be.FRAGMENT),r.addUniform("float","model_specularEnvironmentMapsMaximumLOD",be.FRAGMENT)):t.useDefaultSpecularMaps&&r.addDefine("SPECULAR_IBL",void 0,be.FRAGMENT)),r.addFragmentLines(tw);let c={model_iblFactor:function(){return D.multiplyByScalar(i.imageBasedLightingFactor,o?.intensity||1,Nke)},model_iblReferenceFrameMatrix:function(){return t._iblReferenceFrameMatrix},model_sphericalHarmonicCoefficients:function(){return a},model_specularEnvironmentMaps:function(){return i.specularEnvironmentCubeMap.texture},model_specularEnvironmentMapsMaximumLOD:function(){return i.specularEnvironmentCubeMap.maximumMipmapLevel}};l(s)&&(c.model_specularEnvironmentMaps=function(){return s},c.model_specularEnvironmentMapsMaximumLOD=function(){return o.maximumMipmapLevel}),e.uniformMap=Lt(c,e.uniformMap)};var nw=zce;var PLn=y(C(),1);var ZLn=y(C(),1);var Dke=Z.EPSILON16;function zz(e){e=e??Y.EMPTY_OBJECT;let t=e.stage,n=e.runtimeArticulation;this._stage=t,this._runtimeArticulation=n,this._name=t.name,this._type=t.type,this._minimumValue=t.minimumValue,this._maximumValue=t.maximumValue,this._currentValue=t.initialValue}Object.defineProperties(zz.prototype,{stage:{get:function(){return this._stage}},runtimeArticulation:{get:function(){return this._runtimeArticulation}},name:{get:function(){return this._name}},type:{get:function(){return this._type}},minimumValue:{get:function(){return this._minimumValue}},maximumValue:{get:function(){return this._maximumValue}},currentValue:{get:function(){return this._currentValue},set:function(e){e=Z.clamp(e,this.minimumValue,this.maximumValue),Z.equalsEpsilon(this._currentValue,e,Dke)||(this._currentValue=e,this.runtimeArticulation._dirty=!0)}}});var Qke=new m,Hz=new $;zz.prototype.applyStageToMatrix=function(e){let t=this.type,n=this.currentValue,i=Qke,o;switch(t){case Pc.XROTATE:o=$.fromRotationX(Z.toRadians(n),Hz),e=X.multiplyByMatrix3(e,o,e);break;case Pc.YROTATE:o=$.fromRotationY(Z.toRadians(n),Hz),e=X.multiplyByMatrix3(e,o,e);break;case Pc.ZROTATE:o=$.fromRotationZ(Z.toRadians(n),Hz),e=X.multiplyByMatrix3(e,o,e);break;case Pc.XTRANSLATE:i.x=n,i.y=0,i.z=0,e=X.multiplyByTranslation(e,i,e);break;case Pc.YTRANSLATE:i.x=0,i.y=n,i.z=0,e=X.multiplyByTranslation(e,i,e);break;case Pc.ZTRANSLATE:i.x=0,i.y=0,i.z=n,e=X.multiplyByTranslation(e,i,e);break;case Pc.XSCALE:i.x=n,i.y=1,i.z=1,e=X.multiplyByScale(e,i,e);break;case Pc.YSCALE:i.x=1,i.y=n,i.z=1,e=X.multiplyByScale(e,i,e);break;case Pc.ZSCALE:i.x=1,i.y=1,i.z=n,e=X.multiplyByScale(e,i,e);break;case Pc.UNIFORMSCALE:e=X.multiplyByUniformScale(e,n,e);break;default:break}return e};var iw=zz;function _Q(e){e=e??Y.EMPTY_OBJECT;let t=e.articulation,n=e.sceneGraph;this._articulation=t,this._sceneGraph=n,this._name=t.name,this._runtimeStages=[],this._runtimeStagesByName={},this._runtimeNodes=[],this._dirty=!0,Uke(this)}Object.defineProperties(_Q.prototype,{articulation:{get:function(){return this._articulation}},sceneGraph:{get:function(){return this._sceneGraph}},name:{get:function(){return this._name}},runtimeStages:{get:function(){return this._runtimeStages}},runtimeNodes:{get:function(){return this._runtimeNodes}}});function Uke(e){let n=e.articulation.stages,i=n.length,o=e._runtimeStages,r=e._runtimeStagesByName;for(let s=0;s 0.0 && clipDistance < clippingPlanesEdgeWidth) { + color = clippingPlanesEdgeColor; + } +} +`;var Kce={name:"ModelClippingPlanesPipelineStage"},Oke=new D;Kce.process=function(e,t,n){let i=t.clippingPlanes,o=n.context,r=e.shaderBuilder;r.addDefine("HAS_CLIPPING_PLANES",void 0,be.FRAGMENT),r.addDefine("CLIPPING_PLANES_LENGTH",i.length,be.FRAGMENT),i.unionClippingRegions&&r.addDefine("UNION_CLIPPING_REGIONS",void 0,be.FRAGMENT),Ws.useFloatTexture(o)&&r.addDefine("USE_CLIPPING_PLANES_FLOAT_TEXTURE",void 0,be.FRAGMENT);let s=Ws.getTextureResolution(i,o,Oke);r.addDefine("CLIPPING_PLANES_TEXTURE_WIDTH",s.x,be.FRAGMENT),r.addDefine("CLIPPING_PLANES_TEXTURE_HEIGHT",s.y,be.FRAGMENT),r.addUniform("sampler2D","model_clippingPlanes",be.FRAGMENT),r.addUniform("vec4","model_clippingPlanesEdgeStyle",be.FRAGMENT),r.addUniform("mat4","model_clippingPlanesMatrix",be.FRAGMENT),r.addFragmentLines(sw);let a={model_clippingPlanes:function(){return i.texture},model_clippingPlanesEdgeStyle:function(){let c=U.clone(i.edgeColor);return c.alpha=i.edgeWidth,c},model_clippingPlanesMatrix:function(){return t._clippingPlanesMatrix}};e.uniformMap=Lt(a,e.uniformMap)};var aw=Kce;var m1n=y(C(),1);var o1n=y(C(),1),cw=`void modelClippingPolygonsStage(ProcessedAttributes attributes) +{ + vec2 sphericalLatLong = czm_approximateSphericalCoordinates(v_positionWC); + sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi); + + vec2 minDistance = vec2(czm_infinity); + v_regionIndex = -1; + v_clippingPosition = vec2(czm_infinity); + + for (int regionIndex = 0; regionIndex < CLIPPING_POLYGON_REGIONS_LENGTH; regionIndex++) { + vec4 extents = czm_unpackClippingExtents(model_clippingExtents, regionIndex); + vec2 rectUv = (sphericalLatLong.yx - extents.yx) * extents.wz; + + vec2 clamped = clamp(rectUv, vec2(0.0), vec2(1.0)); + vec2 distance = abs(rectUv - clamped) * extents.wz; + + if (minDistance.x > distance.x || minDistance.y > distance.y) { + minDistance = distance; + v_clippingPosition = rectUv; + } + + float threshold = 0.01; + if (rectUv.x > threshold && rectUv.y > threshold && rectUv.x < 1.0 - threshold && rectUv.y < 1.0 - threshold) { + v_regionIndex = regionIndex; + } + } +} +`;var s1n=y(C(),1),lw=`void modelClippingPolygonsStage() +{ + vec2 clippingPosition = v_clippingPosition; + int regionIndex = v_regionIndex; + czm_clipPolygons(model_clippingDistance, CLIPPING_POLYGON_REGIONS_LENGTH, clippingPosition, regionIndex); +} +`;var Jce={name:"ModelClippingPolygonsPipelineStage"};Jce.process=function(e,t,n){let i=t.clippingPolygons,o=e.shaderBuilder;o.addDefine("ENABLE_CLIPPING_POLYGONS",void 0,be.BOTH),i.inverse&&o.addDefine("CLIPPING_INVERSE",void 0,be.FRAGMENT),o.addDefine("CLIPPING_POLYGON_REGIONS_LENGTH",i.extentsCount,be.BOTH),o.addUniform("sampler2D","model_clippingDistance",be.FRAGMENT),o.addUniform("sampler2D","model_clippingExtents",be.VERTEX),o.addVarying("vec2","v_clippingPosition"),o.addVarying("int","v_regionIndex","flat"),o.addVertexLines(cw),o.addFragmentLines(lw);let r={model_clippingDistance:function(){return i.clippingTexture},model_clippingExtents:function(){return i.extentsTexture}};e.uniformMap=Lt(r,e.uniformMap)};var dw=Jce;var p1n=y(C(),1);function jce(e,t){this._model=e,this._runtimeNode=t}Object.defineProperties(jce.prototype,{name:{get:function(){return this._runtimeNode._name}},id:{get:function(){return this._runtimeNode._id}},show:{get:function(){return this._runtimeNode.show},set:function(e){this._runtimeNode.show=e}},matrix:{get:function(){return this._runtimeNode.transform},set:function(e){l(e)?(this._runtimeNode.transform=e,this._runtimeNode.userAnimated=!0,this._model._userAnimationDirty=!0):(this._runtimeNode.transform=this.originalMatrix,this._runtimeNode.userAnimated=!1)}},originalMatrix:{get:function(){return this._runtimeNode.originalTransform}}});var uw=jce;var lRn=y(C(),1);var k1n=y(C(),1);var g1n=y(C(),1),mw=`mat4 getInstancingTransform() +{ + mat4 instancingTransform; + + #ifdef HAS_INSTANCE_MATRICES + instancingTransform = mat4( + a_instancingTransformRow0.x, a_instancingTransformRow1.x, a_instancingTransformRow2.x, 0.0, // Column 1 + a_instancingTransformRow0.y, a_instancingTransformRow1.y, a_instancingTransformRow2.y, 0.0, // Column 2 + a_instancingTransformRow0.z, a_instancingTransformRow1.z, a_instancingTransformRow2.z, 0.0, // Column 3 + a_instancingTransformRow0.w, a_instancingTransformRow1.w, a_instancingTransformRow2.w, 1.0 // Column 4 + ); + #else + vec3 translation = vec3(0.0, 0.0, 0.0); + vec3 scale = vec3(1.0, 1.0, 1.0); + + #ifdef HAS_INSTANCE_TRANSLATION + translation = a_instanceTranslation; + #endif + #ifdef HAS_INSTANCE_SCALE + scale = a_instanceScale; + #endif + + instancingTransform = mat4( + scale.x, 0.0, 0.0, 0.0, + 0.0, scale.y, 0.0, 0.0, + 0.0, 0.0, scale.z, 0.0, + translation.x, translation.y, translation.z, 1.0 + ); + #endif + + return instancingTransform; +} + +#ifdef USE_2D_INSTANCING +mat4 getInstancingTransform2D() +{ + mat4 instancingTransform2D; + + #ifdef HAS_INSTANCE_MATRICES + instancingTransform2D = mat4( + a_instancingTransform2DRow0.x, a_instancingTransform2DRow1.x, a_instancingTransform2DRow2.x, 0.0, // Column 1 + a_instancingTransform2DRow0.y, a_instancingTransform2DRow1.y, a_instancingTransform2DRow2.y, 0.0, // Column 2 + a_instancingTransform2DRow0.z, a_instancingTransform2DRow1.z, a_instancingTransform2DRow2.z, 0.0, // Column 3 + a_instancingTransform2DRow0.w, a_instancingTransform2DRow1.w, a_instancingTransform2DRow2.w, 1.0 // Column 4 + ); + #else + vec3 translation2D = vec3(0.0, 0.0, 0.0); + vec3 scale = vec3(1.0, 1.0, 1.0); + + #ifdef HAS_INSTANCE_TRANSLATION + translation2D = a_instanceTranslation2D; + #endif + #ifdef HAS_INSTANCE_SCALE + scale = a_instanceScale; + #endif + + instancingTransform2D = mat4( + scale.x, 0.0, 0.0, 0.0, + 0.0, scale.y, 0.0, 0.0, + 0.0, 0.0, scale.z, 0.0, + translation2D.x, translation2D.y, translation2D.z, 1.0 + ); + #endif + + return instancingTransform2D; +} +#endif +`;var y1n=y(C(),1),hw=`void instancingStage(inout ProcessedAttributes attributes) +{ + vec3 positionMC = attributes.positionMC; + + mat4 instancingTransform = getInstancingTransform(); + + attributes.positionMC = (instancingTransform * vec4(positionMC, 1.0)).xyz; + + #ifdef HAS_NORMALS + vec3 normalMC = attributes.normalMC; + attributes.normalMC = (instancingTransform * vec4(normalMC, 0.0)).xyz; + #endif + + #ifdef USE_2D_INSTANCING + mat4 instancingTransform2D = getInstancingTransform2D(); + attributes.position2D = (instancingTransform2D * vec4(positionMC, 1.0)).xyz; + #endif +} +`;var x1n=y(C(),1),fw=`void legacyInstancingStage( + inout ProcessedAttributes attributes, + out mat4 instanceModelView, + out mat3 instanceModelViewInverseTranspose) +{ + vec3 positionMC = attributes.positionMC; + + mat4 instancingTransform = getInstancingTransform(); + + mat4 instanceModel = instancingTransform * u_instance_nodeTransform; + instanceModelView = u_instance_modifiedModelView; + instanceModelViewInverseTranspose = mat3(u_instance_modifiedModelView * instanceModel); + + attributes.positionMC = (instanceModel * vec4(positionMC, 1.0)).xyz; + + #ifdef USE_2D_INSTANCING + mat4 instancingTransform2D = getInstancingTransform2D(); + attributes.position2D = (instancingTransform2D * vec4(positionMC, 1.0)).xyz; + #endif +} +`;var EQ=new X,Hke=new X,zke=new X,$ce={name:"InstancingPipelineStage",_getInstanceTransformsAsMatrices:ole,_transformsToTypedArray:Jz};$ce.process=function(e,t,n){let i=t.instances,o=i.attributes[0].count,r=e.shaderBuilder;r.addDefine("HAS_INSTANCING"),r.addVertexLines(mw);let s=e.model,a=s.sceneGraph,c=e.runtimeNode,d=n.mode!==re.SCENE3D&&!n.scene3DOnly&&s._projectTo2D,u=s._enablePick&&!n.context.webgl2,h=[];lYe(e,n,i,h,d,u),mYe(e,n,i,h);let p={};if(i.transformInWorldSpace?(r.addDefine("USE_LEGACY_INSTANCING",void 0,be.VERTEX),r.addUniform("mat4","u_instance_modifiedModelView",be.VERTEX),r.addUniform("mat4","u_instance_nodeTransform",be.VERTEX),p.u_instance_modifiedModelView=function(){let g=X.multiplyTransformation(s.modelMatrix,a.components.transform,EQ);return d?X.multiplyTransformation(n.context.uniformState.view3D,g,EQ):(n.mode!==re.SCENE3D&&(g=Dt.basisTo2D(n.mapProjection,g,EQ)),X.multiplyTransformation(n.context.uniformState.view,g,EQ))},p.u_instance_nodeTransform=function(){return X.multiplyTransformation(a.axisCorrectionMatrix,c.computedTransform,Hke)},r.addVertexLines(fw)):r.addVertexLines(hw),d){r.addDefine("USE_2D_INSTANCING",void 0,be.VERTEX),r.addUniform("mat4","u_modelView2D",be.VERTEX);let g=n.context,f=X.fromTranslation(c.instancingReferencePoint2D,new X);p.u_modelView2D=function(){return X.multiplyTransformation(g.uniformState.view,f,zke)}}e.uniformMap=Lt(p,e.uniformMap),e.instanceCount=o,ci(e.attributes,h)};var pw=new X,Kke=new m;function Jke(e,t,n,i,o){let r=X.multiplyTransformation(t,e,pw);return r=X.multiplyTransformation(r,n,pw),o=Dt.basisTo2D(i.mapProjection,r,o),o}function jke(e,t,n,i,o){let r=X.fromTranslation(e,pw),s=X.multiplyTransformation(t,r,pw);s=X.multiplyTransformation(s,n,pw);let a=X.getTranslation(s,Kke);return o=to.computeActualEllipsoidPosition(i,a,o),o}function ele(e,t,n){let i=e.model,o=i.sceneGraph;e.runtimeNode.node.instances.transformInWorldSpace?(t=X.multiplyTransformation(i.modelMatrix,o.components.transform,t),n=X.multiplyTransformation(o.axisCorrectionMatrix,e.runtimeNode.computedTransform,n)):(t=X.clone(o.computedModelMatrix,t),t=X.multiplyTransformation(t,e.runtimeNode.computedTransform,t),n=X.clone(X.IDENTITY,n))}var tle=new X,nle=new X,qke=new X,$ke=new m;function eYe(e,t,n,i){let o=tle,r=nle;ele(t,o,r);let a=t.runtimeNode.instancingReferencePoint2D,c=e.length;for(let d=0;d=e.featureIdVertexAttributeSetIndex&&(e.featureIdVertexAttributeSetIndex=a.setIndex+1),i.push({index:e.attributeIndex++,vertexBuffer:a.buffer,componentsPerAttribute:kt.getNumberOfComponents(a.type),componentDatatype:a.componentDatatype,normalize:!1,offsetInBytes:a.byteOffset,strideInBytes:a.byteStride,instanceDivisor:1}),r.addAttribute("float",`a_instanceFeatureId_${a.setIndex}`))}}var Aw=$ce;var K1n=y(C(),1);var qz={};qz.name="ModelMatrixUpdateStage";qz.update=function(e,t,n){let i=n.mode!==re.SCENE3D;if(!(i&&t._model._projectTo2D)&&e._transformDirty){let o=i?t._computedModelMatrix2D:t._computedModelMatrix;rle(e,t,o,e.transformToRoot),e._transformDirty=!1}};function hYe(e,t,n){e.modelMatrix=X.multiplyTransformation(t,n,e.modelMatrix),e.cullFace=Mt.getCullFace(e.modelMatrix,e.primitiveType)}function rle(e,t,n,i){let o;i=X.multiplyTransformation(i,e.transform,new X),e.updateComputedTransform();let r=e.runtimePrimitives.length;for(o=0;o1&&(i.addDefine("MULTILINE_BATCH_TEXTURE"),i.addUniform("vec2","model_textureDimensions"),o.model_textureDimensions=function(){return c.textureDimensions}),e.uniformMap=Lt(o,e.uniformMap)};var xw=dle;var TRn=y(C(),1);var ule={name:"ClassificationPipelineStage"};ule.process=function(e,t,n){e.shaderBuilder.addDefine("HAS_CLASSIFICATION",void 0,be.BOTH);let o=e.runtimePrimitive;l(o.batchLengths)||pYe(t,o)};function pYe(e,t){let n=Mt.getAttributeBySemantic(e,lt.POSITION);if(!l(n))throw new de("Primitives must have a position attribute to be used for classification.");let i,o=e.indices,r=l(o);r&&(i=o.typedArray,o.typedArray=void 0);let s=r?o.count:n.count,a=Mt.getAttributeBySemantic(e,lt.FEATURE_ID,0);if(!l(a)){t.batchLengths=[s],t.batchOffsets=[0];return}let c=a.typedArray;a.typedArray=void 0;let d=[],u=[0],h=r?i[0]:0,p=c[h],g=0;for(let b=1;bTYe(i,t,n)):[]}function TYe(e,t,n){let{getAttributeByName:i,getAttributeInfo:o,sanitizeGlslIdentifier:r}=Mt,s=e.class.id,a=n?.classes[s],c=Object.entries(e.properties),d=new Array(c.length);for(let u=0;uLYe(n,t)):[]}function LYe(e,t){let{sanitizeGlslIdentifier:n}=Mt,i=e.class.id,o=t?.classes[i],r=Object.entries(e.properties).filter(([a,c])=>c.isGpuCompatible()),s=new Array(r.length);for(let a=0;au),n.addStructField(vi.STRUCT_ID_METADATA_FS,r,o);let g=`attributes.texCoord_${a}`,f=g;if(l(h)&&!$.equals(h,$.IDENTITY)){let E=`${p}Transform`;n.addUniform("mat3",E,be.FRAGMENT),i[E]=function(){return h},f=`vec2(${E} * vec3(${g}, 1.0))`}let b=`texture(${p}, ${f}).${c}`,x=s.unpackInShader(b),I=yle({valueExpression:x,renderResources:e,glslType:r,metadataVariable:o,shaderDestination:be.FRAGMENT,property:s}),_=`metadata.${o} = ${I};`;n.addFunctionLines(vi.FUNCTION_ID_INITIALIZE_METADATA_FS,[_])}function Ale(e,t){let{classProperty:n}=t.property,{metadataVariable:i,glslType:o,shaderDestination:r}=t,s=ble(vi.METADATA_CLASS_FIELDS,n,`metadataClass.${i}`,o),a=`${o}MetadataClass`;e.addStructField(vi.STRUCT_ID_METADATA_CLASS_FS,a,i),e.addFunctionLines(vi.FUNCTION_ID_INITIALIZE_METADATA_FS,s),be.includesVertexShader(r)&&(e.addStructField(vi.STRUCT_ID_METADATA_CLASS_VS,a,i),e.addFunctionLines(vi.FUNCTION_ID_INITIALIZE_METADATA_VS,s))}function gle(e,t){let{propertyStatistics:n}=t;if(!l(n))return;let{metadataVariable:i,type:o,glslType:r}=t;if(o===bt.ENUM)return;let s=vi.METADATA_STATISTICS_FIELDS,a=`metadataStatistics.${i}`,c=ble(s,n,a,r),d=`${r}MetadataStatistics`;e.addStructField(vi.STRUCT_ID_METADATA_STATISTICS_FS,d,i),e.addFunctionLines(vi.FUNCTION_ID_INITIALIZE_METADATA_FS,c),be.includesVertexShader(t.shaderDestination)&&(e.addStructField(vi.STRUCT_ID_METADATA_STATISTICS_VS,d,i),e.addFunctionLines(vi.FUNCTION_ID_INITIALIZE_METADATA_VS,c))}function ble(e,t,n,i){function o(r){let s=t[r.specName];if(l(s))return`${n}.${r.shaderName} = ${i}(${s});`}return l(t)?e.map(o).filter(l):[]}function yle(e){let{valueExpression:t,property:n}=e;if(!n.hasValueTransform)return t;let i=e.metadataVariable,o=`u_${i}_offset`,r=`u_${i}_scale`,{shaderBuilder:s,uniformMap:a}=e.renderResources,{glslType:c,shaderDestination:d}=e;s.addUniform(c,o,d),s.addUniform(c,r,d);let{offset:u,scale:h}=n;return a[o]=()=>u,a[r]=()=>h,`czm_valueTransform(${o}, ${r}, ${t})`}var rm=vi;var IVn=y(C(),1),FYe={INHERIT:0,OPAQUE:1,TRANSLUCENT:2},c0=Object.freeze(FYe);var Na={name:"CustomShaderPipelineStage",STRUCT_ID_ATTRIBUTES_VS:"AttributesVS",STRUCT_ID_ATTRIBUTES_FS:"AttributesFS",STRUCT_NAME_ATTRIBUTES:"Attributes",STRUCT_ID_VERTEX_INPUT:"VertexInput",STRUCT_NAME_VERTEX_INPUT:"VertexInput",STRUCT_ID_FRAGMENT_INPUT:"FragmentInput",STRUCT_NAME_FRAGMENT_INPUT:"FragmentInput",FUNCTION_ID_INITIALIZE_INPUT_STRUCT_VS:"initializeInputStructVS",FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_VS:"void initializeInputStruct(out VertexInput vsInput, ProcessedAttributes attributes)",FUNCTION_ID_INITIALIZE_INPUT_STRUCT_FS:"initializeInputStructFS",FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_FS:"void initializeInputStruct(out FragmentInput fsInput, ProcessedAttributes attributes)",_oneTimeWarning:xt};Na.process=function(e,t,n){let{shaderBuilder:i,model:o,alphaOptions:r}=e,{customShader:s}=o,{lightingModel:a,translucencyMode:c}=s;l(a)&&(e.lightingOptions.lightingModel=a),c===c0.TRANSLUCENT?r.pass=Ge.TRANSLUCENT:c===c0.OPAQUE&&(r.pass=void 0);let d=kYe(s,t);if(!d.customShaderEnabled)return;if(zYe(i,s,d),d.shouldComputePositionWC&&i.addDefine("COMPUTE_POSITION_WC_CUSTOM_SHADER",void 0,be.BOTH),l(s.vertexShaderText)&&i.addDefine("HAS_CUSTOM_VERTEX_SHADER",void 0,be.VERTEX),l(s.fragmentShaderText)){i.addDefine("HAS_CUSTOM_FRAGMENT_SHADER",void 0,be.FRAGMENT);let p=DA.getDefineName(s.mode);i.addDefine(p,void 0,be.FRAGMENT)}let u=s.uniforms;for(let p in u)if(u.hasOwnProperty(p)){let g=u[p];i.addUniform(g.type,p)}let h=s.varyings;for(let p in h)if(h.hasOwnProperty(p)){let g=h[p];i.addVarying(g,p)}e.uniformMap=Lt(e.uniformMap,s.uniformMap)};function PYe(e){let t={};for(let n=0;n1?(g=e.attributeIndex,e.attributeIndex+=h):p&&!a?g=0:g=e.attributeIndex++,t3e(e,u,g,h,r,s)}d3e(i,t.attributes),t.primitiveType===We.POINTS&&i.addDefine("PRIMITIVE_TYPE_POINTS"),i.addVertexLines(Fw),i.addFragmentLines(Ww)};function t3e(e,t,n,i,o,r){let s=e.shaderBuilder,a=Mt.getAttributeInfo(t),c=o&&!r;i>1?o3e(e,t,n,i):i3e(e,t,n,c),s3e(s,a,c),r3e(s,a),l(t.semantic)&&n3e(s,t),a3e(s,a,o),c3e(s,a,c),l3e(s,a)}function n3e(e,t){let{semantic:n,setIndex:i}=t;switch(n){case lt.NORMAL:e.addDefine("HAS_NORMALS");break;case lt.TANGENT:e.addDefine("HAS_TANGENTS");break;case lt.FEATURE_ID:e.addDefine(`HAS${n}_${i}`);break;case lt.TEXCOORD:case lt.COLOR:e.addDefine(`HAS_${n}_${i}`)}}function i3e(e,t,n,i){let{quantization:o,semantic:r,setIndex:s}=t,{type:a,componentDatatype:c}=l(o)?o:t;r===lt.FEATURE_ID&&s>=e.featureIdVertexAttributeSetIndex&&(e.featureIdVertexAttributeSetIndex=s+1);let d=r===lt.POSITION,u=d?0:n,h=kt.getNumberOfComponents(a),p={index:u,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,count:t.count,componentsPerAttribute:h,componentDatatype:c,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};if(e.attributes.push(p),!d||!i)return;let g=e.runtimePrimitive.positionBuffer2D,f={index:n,vertexBuffer:g,count:t.count,componentsPerAttribute:h,componentDatatype:J.FLOAT,offsetInBytes:0,strideInBytes:void 0,normalize:t.normalized};e.attributes.push(f)}function o3e(e,t,n,i){let{quantization:o,normalized:r}=t,{type:s,componentDatatype:a}=l(o)?o:t,d=kt.getNumberOfComponents(s)/i,u=J.getSizeInBytes(a),h=d*u,p=t.byteStride;for(let g=0;g=o&&(f=o-1);let b=g/d|0;return b>=r&&(b=r-1),l(n)?(n.x=f,n.y=b,n):new D(f,b)};var _s=d0;var VGn=y(C(),1);var eK,Sle="AAPTxy8BH1VEsoebNVZXo8HurEOF051kAEKlhkOhBEc9BmRpOZfBt2Ic5blmnx9xwwyG_Mt0EmBxpEa6xCqXn5V_qFEgJ0edE9ixiefKjMiv986NGSn2HB8y6x0GtSOCBkg19K6rBgZ7Upl7ABEnaFh4dD73GW0gUAJ9hHWhqd1qgHkBuctWiFEJUmQjs_52tdx6l5bDGoeXVvmelklmEJOshCRV_s3kLPC19ENRNLc18eA.AT1_EXUMUBsi",zE={};zE.defaultAccessToken=Sle;zE.defaultWorldImageryServer=new Ve({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/World_Imagery/MapServer"});zE.defaultWorldHillshadeServer=new Ve({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"});zE.defaultWorldOceanServer=new Ve({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer"});zE.getDefaultTokenCredit=function(e){if(e===Sle){if(!l(eK)){let t=' This application is using a default ArcGIS access token. Please assign Cesium.ArcGisMapService.defaultAccessToken with an API key from your ArcGIS Developer account before using the ArcGIS tile services. You can sign up for a free ArcGIS Developer account at https://developers.arcgis.com/.';eK=new Gt(t,!0)}return eK}};var zd=zE;var WGn=y(C(),1);function tK(e){e=e??Y.EMPTY_OBJECT,this._pixelsToCheck=e.pixelsToCheck,this._missingImagePixels=void 0,this._missingImageByteLength=void 0,this._isReady=!1;let t=Ve.createIfNeeded(e.missingImageUrl),n=this;function i(r){l(r.blob)&&(n._missingImageByteLength=r.blob.size);let s=$m(r);if(e.disableCheckIfAllPixelsAreTransparent){let a=!0,c=r.width,d=e.pixelsToCheck;for(let u=0,h=d.length;a&&u0&&(a=!1)}a&&(s=void 0)}n._missingImagePixels=s,n._isReady=!0}function o(){n._missingImagePixels=void 0,n._isReady=!0}t.fetchImage({preferBlob:!0,preferImageBitmap:!0,flipY:!0}).then(i).catch(o)}tK.prototype.isReady=function(){return this._isReady};tK.prototype.shouldDiscardImage=function(e){let t=this._pixelsToCheck,n=this._missingImagePixels;if(!l(n)||l(e.blob)&&e.blob.size!==this._missingImageByteLength)return!1;let i=$m(e),o=e.width;for(let r=0,s=t.length;r1&&o==="name"?(t=1,n=i):t>2&&o==="title"?(t=2,n=i):t>3&&/name/i.test(i)?(t=3,n=i):t>4&&/title/i.test(i)&&(t=4,n=i)}l(n)&&(this.name=e[n])};nK.prototype.configureDescriptionFromProperties=function(e){function t(n){let i='';for(let o in n)if(n.hasOwnProperty(o)){let r=n[o];l(r)&&(typeof r=="object"?i+=``:i+=``)}return i+="
    ${o}${t(r)}
    ${o}${r}
    ",i}this.description=t(e)};var Vh=nK;var kGn=y(C(),1);function KE(){Ae.throwInstantiationError()}Object.defineProperties(KE.prototype,{rectangle:{get:Ae.throwInstantiationError},tileWidth:{get:Ae.throwInstantiationError},tileHeight:{get:Ae.throwInstantiationError},maximumLevel:{get:Ae.throwInstantiationError},minimumLevel:{get:Ae.throwInstantiationError},tilingScheme:{get:Ae.throwInstantiationError},tileDiscardPolicy:{get:Ae.throwInstantiationError},errorEvent:{get:Ae.throwInstantiationError},credit:{get:Ae.throwInstantiationError},proxy:{get:Ae.throwInstantiationError},hasAlphaChannel:{get:Ae.throwInstantiationError}});KE.prototype.getTileCredits=function(e,t,n){Ae.throwInstantiationError()};KE.prototype.requestImage=function(e,t,n,i){Ae.throwInstantiationError()};KE.prototype.pickFeatures=function(e,t,n,i,o){Ae.throwInstantiationError()};var u3e=/\.ktx2$/i;KE.loadImage=function(e,t){let n=Ve.createIfNeeded(t);return u3e.test(n.url)?Kl(n):l(e)&&l(e.tileDiscardPolicy)?n.fetchImage({preferBlob:!0,preferImageBitmap:!0,flipY:!0}):n.fetchImage({preferImageBitmap:!0,flipY:!0})};var Sl=KE;var OGn=y(C(),1),m3e={SATELLITE:1,OCEANS:2,HILLSHADE:3},Gh=Object.freeze(m3e);function Lle(e){this.useTiles=e.usePreCachedTilesIfAvailable??!0;let t=e.ellipsoid;this.tilingScheme=e.tilingScheme??new ao({ellipsoid:t}),this.rectangle=e.rectangle??this.tilingScheme.rectangle,this.ellipsoid=t;let n=e.credit;typeof n=="string"&&(n=new Gt(n)),this.credit=n,this.tileCredits=void 0,this.tileDiscardPolicy=e.tileDiscardPolicy,this.tileWidth=e.tileWidth??256,this.tileHeight=e.tileHeight??256,this.maximumLevel=e.maximumLevel}Lle.prototype.build=function(e){e._useTiles=this.useTiles,e._tilingScheme=this.tilingScheme,e._rectangle=this.rectangle,e._credit=this.credit,e._tileCredits=this.tileCredits,e._tileDiscardPolicy=this.tileDiscardPolicy,e._tileWidth=this.tileWidth,e._tileHeight=this.tileHeight,e._maximumLevel=this.maximumLevel,this.useTiles&&!l(this.tileDiscardPolicy)&&(e._tileDiscardPolicy=new vw({missingImageUrl:Rle(e,0,0,this.maximumLevel).url,pixelsToCheck:[new D(0,0),new D(200,20),new D(20,200),new D(80,110),new D(160,130)],disableCheckIfAllPixelsAreTransparent:!0}))};function h3e(e,t){let n=e.tileInfo;if(!l(n))t.useTiles=!1;else{if(t.tileWidth=n.rows,t.tileHeight=n.cols,n.spatialReference.wkid===102100||n.spatialReference.wkid===102113)t.tilingScheme=new _s({ellipsoid:t.ellipsoid});else if(e.tileInfo.spatialReference.wkid===4326)t.tilingScheme=new ao({ellipsoid:t.ellipsoid});else{let i=`Tile spatial reference WKID ${e.tileInfo.spatialReference.wkid} is not supported.`;throw new de(i)}if(t.maximumLevel=e.tileInfo.lods.length-1,l(e.fullExtent)){if(l(e.fullExtent.spatialReference)&&l(e.fullExtent.spatialReference.wkid))if(e.fullExtent.spatialReference.wkid===102100||e.fullExtent.spatialReference.wkid===102113){let i=new Ui,o=e.fullExtent,r=i.unproject(new m(Math.max(o.xmin,-t.tilingScheme.ellipsoid.maximumRadius*Math.PI),Math.max(o.ymin,-t.tilingScheme.ellipsoid.maximumRadius*Math.PI),0)),s=i.unproject(new m(Math.min(o.xmax,t.tilingScheme.ellipsoid.maximumRadius*Math.PI),Math.min(o.ymax,t.tilingScheme.ellipsoid.maximumRadius*Math.PI),0));t.rectangle=new le(r.longitude,r.latitude,s.longitude,s.latitude)}else if(e.fullExtent.spatialReference.wkid===4326)t.rectangle=le.fromDegrees(e.fullExtent.xmin,e.fullExtent.ymin,e.fullExtent.xmax,e.fullExtent.ymax);else{let i=`fullExtent.spatialReference WKID ${e.fullExtent.spatialReference.wkid} is not supported.`;throw new de(i)}}else t.rectangle=t.tilingScheme.rectangle;t.useTiles=!0}l(e.copyrightText)&&e.copyrightText.length>0&&(l(t.credit)?t.tileCredits=[new Gt(e.copyrightText)]:t.credit=new Gt(e.copyrightText))}function f3e(e,t){let n=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(n+=`: ${t.message}`),new de(n)}async function p3e(e,t){let n=e.getDerivedResource({queryParameters:{f:"json"}});try{let i=await n.fetchJson();h3e(i,t)}catch(i){f3e(e,i)}}function zf(e){e=e??Y.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._maximumLevel=e.maximumLevel,this._tilingScheme=e.tilingScheme??new ao({ellipsoid:e.ellipsoid}),this._useTiles=e.usePreCachedTilesIfAvailable??!0,this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._layers=e.layers,this._credit=e.credit,this._tileCredits=void 0;let t=e.credit;typeof t=="string"&&(t=new Gt(t)),this.enablePickFeatures=e.enablePickFeatures??!0,this._errorEvent=new Ce}zf.fromBasemapType=async function(e,t){t=t??Y.EMPTY_OBJECT;let n,i,o;switch(e){case Gh.SATELLITE:{n=t.token??zd.defaultAccessToken,i=Ve.createIfNeeded(zd.defaultWorldImageryServer),i.appendForwardSlash();let r=zd.getDefaultTokenCredit(n);l(r)&&(o=Gt.clone(r))}break;case Gh.OCEANS:{n=t.token??zd.defaultAccessToken,i=Ve.createIfNeeded(zd.defaultWorldOceanServer),i.appendForwardSlash();let r=zd.getDefaultTokenCredit(n);l(r)&&(o=Gt.clone(r))}break;case Gh.HILLSHADE:{n=t.token??zd.defaultAccessToken,i=Ve.createIfNeeded(zd.defaultWorldHillshadeServer),i.appendForwardSlash();let r=zd.getDefaultTokenCredit(n);l(r)&&(o=Gt.clone(r))}break;default:}return zf.fromUrl(i,{...t,token:n,credit:o,usePreCachedTilesIfAvailable:!0})};function Rle(e,t,n,i,o){let r;if(e._useTiles)r=e._resource.getDerivedResource({url:`tile/${i}/${n}/${t}`,request:o});else{let s=e._tilingScheme.tileXYToNativeRectangle(t,n,i),c={bbox:`${s.west},${s.south},${s.east},${s.north}`,size:`${e._tileWidth},${e._tileHeight}`,format:"png32",transparent:!0,f:"image"};e._tilingScheme.projection instanceof Di?(c.bboxSR=4326,c.imageSR=4326):(c.bboxSR=3857,c.imageSR=3857),e.layers&&(c.layers=`show:${e.layers}`),r=e._resource.getDerivedResource({url:"export",request:o,queryParameters:c})}return r}Object.defineProperties(zf.prototype,{url:{get:function(){return this._resource._url}},token:{get:function(){return this._resource.queryParameters.token}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},usingPrecachedTiles:{get:function(){return this._useTiles}},hasAlphaChannel:{get:function(){return!0}},layers:{get:function(){return this._layers}}});zf.fromUrl=async function(e,t){t=t??Y.EMPTY_OBJECT;let n=Ve.createIfNeeded(e);n.appendForwardSlash(),l(t.token)&&n.setQueryParameters({token:t.token});let i=new zf(t);i._resource=n;let o=new Lle(t);return(t.usePreCachedTilesIfAvailable??!0)&&await p3e(n,o),o.build(i),i};zf.prototype.getTileCredits=function(e,t,n){return this._tileCredits};zf.prototype.requestImage=function(e,t,n,i){return Sl.loadImage(this,Rle(this,e,t,n,i))};zf.prototype.pickFeatures=function(e,t,n,i,o){if(!this.enablePickFeatures)return;let r=this._tilingScheme.tileXYToNativeRectangle(e,t,n),s,a,c;if(this._tilingScheme.projection instanceof Di)s=Z.toDegrees(i),a=Z.toDegrees(o),c="4326";else{let p=this._tilingScheme.projection.project(new ge(i,o,0));s=p.x,a=p.y,c="3857"}let d="visible";l(this._layers)&&(d+=`:${this._layers}`);let u={f:"json",tolerance:2,geometryType:"esriGeometryPoint",geometry:`${s},${a}`,mapExtent:`${r.west},${r.south},${r.east},${r.north}`,imageDisplay:`${this._tileWidth},${this._tileHeight},96`,sr:c,layers:d};return this._resource.getDerivedResource({url:"identify",queryParameters:u}).fetchJson().then(function(p){let g=[],f=p.results;if(!l(f))return g;for(let b=0;b0?n.raiseEvent(c):l(t)&&console.log(`An error occurred in "${t.constructor.name}": ${Kf(i)}`),c};TQ.reportSuccess=function(e){l(e)&&(e.timesRetried=-1)};var vo=TQ;var _Zn=y(C(),1),g3e={AERIAL:"Aerial",AERIAL_WITH_LABELS:"AerialWithLabels",AERIAL_WITH_LABELS_ON_DEMAND:"AerialWithLabelsOnDemand",ROAD:"Road",ROAD_ON_DEMAND:"RoadOnDemand",CANVAS_DARK:"CanvasDark",CANVAS_LIGHT:"CanvasLight",CANVAS_GRAY:"CanvasGray",ORDNANCE_SURVEY:"OrdnanceSurvey",COLLINS_BART:"CollinsBart"},JE=Object.freeze(g3e);var SZn=y(C(),1);function Nw(e){}Nw.prototype.isReady=function(){return!0};Nw.prototype.shouldDiscardImage=function(e){return Nw.EMPTY_IMAGE===e};var SQ;Object.defineProperties(Nw,{EMPTY_IMAGE:{get:function(){return l(SQ)||(SQ=new Image,SQ.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),SQ}}});var jE=Nw;function Vle(e){this.tileWidth=void 0,this.tileHeight=void 0,this.maximumLevel=void 0,this.imageUrlSubdomains=void 0,this.imageUrlTemplate=void 0,this.attributionList=void 0}Vle.prototype.build=function(e){e._tileWidth=this.tileWidth,e._tileHeight=this.tileHeight,e._maximumLevel=this.maximumLevel,e._imageUrlSubdomains=this.imageUrlSubdomains,e._imageUrlTemplate=this.imageUrlTemplate;let t=e._attributionList=this.attributionList;t||(t=[]),e._attributionList=t;for(let n=0,i=t.length;no.coverageAreas?.some(r=>l(r.bbox)))),t.attributionList=i}function y3e(e,t,n){let i=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(i+=`: ${t.message}`),vo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i,void 0,void 0,void 0,t),new de(i)}async function C3e(e,t,n){let i=e.url,o=zs._metadataCache[i];l(o)||(o=e.fetchJsonp("jsonp"),zs._metadataCache[i]=o);try{let r=await o;return b3e(r,t)}catch(r){y3e(e,r,n)}}function zs(e){e=e??Y.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=1,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._mapStyle=e.mapStyle??JE.AERIAL,this._mapLayer=e.mapLayer,this._culture=e.culture??"",this._key=e.key,this._tileDiscardPolicy=e.tileDiscardPolicy,l(this._tileDiscardPolicy)||(this._tileDiscardPolicy=new jE),this._proxy=e.proxy,this._credit=new Gt(``),this._tilingScheme=new _s({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,ellipsoid:e.ellipsoid}),this._tileWidth=void 0,this._tileHeight=void 0,this._maximumLevel=void 0,this._imageUrlTemplate=void 0,this._imageUrlSubdomains=void 0,this._attributionList=void 0,this._errorEvent=new Ce}Object.defineProperties(zs.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},key:{get:function(){return this._key}},mapStyle:{get:function(){return this._mapStyle}},mapLayer:{get:function(){return this._mapLayer}},culture:{get:function(){return this._culture}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return l(this.mapLayer)}}});zs.fromUrl=async function(e,t){t=t??Y.EMPTY_OBJECT;let n=t.tileProtocol;l(n)?n.length>0&&n[n.length-1]===":"&&(n=n.substr(0,n.length-1)):n=document.location.protocol==="http:"?"http":"https";let i=t.mapStyle??JE.AERIAL,o=Ve.createIfNeeded(e);o.appendForwardSlash();let r={incl:"ImageryProviders",key:t.key,uriScheme:n};l(t.mapLayer)&&(r.mapLayer=t.mapLayer),l(t.culture)&&(r.culture=t.culture);let s=o.getDerivedResource({url:`REST/v1/Imagery/Metadata/${i}`,queryParameters:r}),a=new zs(t);a._resource=o;let c=new Vle(t);return await C3e(s,c),c.build(a),a};var x3e=new le;zs.prototype.getTileCredits=function(e,t,n){let i=this._tilingScheme.tileXYToRectangle(e,t,n,x3e);return E3e(this._attributionList,n,i)};zs.prototype.requestImage=function(e,t,n,i){let o=Sl.loadImage(this,I3e(this,e,t,n,i));if(l(o))return o.catch(function(r){return l(r.blob)&&r.blob.size===0?jE.EMPTY_IMAGE:Promise.reject(r)})};zs.prototype.pickFeatures=function(e,t,n,i,o){};zs.tileXYToQuadKey=function(e,t,n){let i="";for(let o=n;o>=0;--o){let r=1<=0;--o){let r=1<=h.zoomMin&&t<=h.zoomMax){let p=le.intersection(n,h.bbox,_3e);l(p)&&(c=!0)}}c&&i.push(s.credit)}return i}zs._metadataCache={};var Dw=zs;var yBn=y(C(),1);var oBn=y(C(),1);var Gle=/{[^}]+}/g,Zle={x:R3e,y:G3e,z:w3e,s:X3e,reverseX:V3e,reverseY:Z3e,reverseZ:B3e,westDegrees:W3e,southDegrees:F3e,eastDegrees:P3e,northDegrees:M3e,westProjected:v3e,southProjected:N3e,eastProjected:D3e,northProjected:Q3e,width:U3e,height:k3e},T3e=Lt(Zle,{i:Y3e,j:O3e,reverseI:H3e,reverseJ:z3e,longitudeDegrees:J3e,latitudeDegrees:j3e,longitudeProjected:q3e,latitudeProjected:$3e,format:tOe});function Qw(e){e=e??Y.EMPTY_OBJECT,this._errorEvent=new Ce;let t=Ve.createIfNeeded(e.url),n=Ve.createIfNeeded(e.pickFeaturesUrl);this._resource=t,this._urlSchemeZeroPadding=e.urlSchemeZeroPadding,this._getFeatureInfoFormats=e.getFeatureInfoFormats,this._pickFeaturesResource=n;let i=e.subdomains;Array.isArray(i)?i=i.slice():l(i)&&i.length>0?i=i.split(""):i=["a","b","c"],this._subdomains=i,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._minimumLevel=e.minimumLevel??0,this._maximumLevel=e.maximumLevel,this._tilingScheme=e.tilingScheme??new _s({ellipsoid:e.ellipsoid}),this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._rectangle=le.intersection(this._rectangle,this._tilingScheme.rectangle),this._tileDiscardPolicy=e.tileDiscardPolicy;let o=e.credit;typeof o=="string"&&(o=new Gt(o)),this._credit=o,this._hasAlphaChannel=e.hasAlphaChannel??!0;let r=e.customTags,s=Lt(Zle,r),a=Lt(T3e,r);this._tags=s,this._pickFeaturesTags=a,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this.enablePickFeatures=e.enablePickFeatures??!0}Object.defineProperties(Qw.prototype,{url:{get:function(){return this._resource.url}},urlSchemeZeroPadding:{get:function(){return this._urlSchemeZeroPadding}},pickFeaturesUrl:{get:function(){return this._pickFeaturesResource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return this._hasAlphaChannel}}});Qw.prototype.getTileCredits=function(e,t,n){};Qw.prototype.requestImage=function(e,t,n,i){return Sl.loadImage(this,S3e(this,e,t,n,i))};Qw.prototype.pickFeatures=function(e,t,n,i,o){if(!this.enablePickFeatures||!l(this._pickFeaturesResource)||this._getFeatureInfoFormats.length===0)return;let r=0,s=this;function a(d,u){return d.callback(u)}function c(){if(r>=s._getFeatureInfoFormats.length)return Promise.resolve([]);let d=s._getFeatureInfoFormats[r],u=L3e(s,e,t,n,i,o,d.format);return++r,d.type==="json"?u.fetchJson().then(d.callback).catch(c):d.type==="xml"?u.fetchXML().then(d.callback).catch(c):d.type==="text"||d.type==="html"?u.fetchText().then(d.callback).catch(c):u.fetch({responseType:d.format}).then(a.bind(void 0,d)).catch(c)}return c()};var LQ=!1,Kd=new le,RQ=!1,Uw=new le;function S3e(e,t,n,i,o){LQ=!1,RQ=!1;let r=e._resource,s=r.getUrlComponent(!0),a=e._tags,c={},d=s.match(Gle);return l(d)&&d.forEach(function(u){let h=u.substring(1,u.length-1);l(a[h])&&(c[h]=a[h](e,t,n,i))}),r.getDerivedResource({request:o,templateValues:c})}var iK=!1,$E=new D,oK=!1;function L3e(e,t,n,i,o,r,s){LQ=!1,RQ=!1,iK=!1,oK=!1;let a=e._pickFeaturesResource,c=a.getUrlComponent(!0),d=e._pickFeaturesTags,u={},h=c.match(Gle);return l(h)&&h.forEach(function(p){let g=p.substring(1,p.length-1);l(d[g])&&(u[g]=d[g](e,t,n,i,o,r,s))}),a.getDerivedResource({templateValues:u})}function eT(e,t,n){if(e&&e.urlSchemeZeroPadding&&e.urlSchemeZeroPadding.hasOwnProperty(t)){let i=e.urlSchemeZeroPadding[t];if(typeof i=="string"){let o=i.length;o>1&&(n=n.length>=o?n:new Array(o-n.toString().length+1).join("0")+n)}}return n}function R3e(e,t,n,i){return eT(e,"{x}",t)}function V3e(e,t,n,i){let o=e.tilingScheme.getNumberOfXTilesAtLevel(i)-t-1;return eT(e,"{reverseX}",o)}function G3e(e,t,n,i){return eT(e,"{y}",n)}function Z3e(e,t,n,i){let o=e.tilingScheme.getNumberOfYTilesAtLevel(i)-n-1;return eT(e,"{reverseY}",o)}function B3e(e,t,n,i){let o=e.maximumLevel,r=l(o)&&it.rectangle.east&&(e.east=t.rectangle.east),e.southt.rectangle.north&&(e.north=t.rectangle.north),e}function wle(e,t,n){let i=e.positionToTileXY(le.southwest(t),n),o=e.positionToTileXY(le.northeast(t),n);return(Math.abs(o.x-i.x)+1)*(Math.abs(o.y-i.y)+1)>4?0:n}sm._metadataSuccess=function(e,t,n,i,o){let r=/tileformat/i,s=/tileset/i,a=/tilesets/i,c=/boundingbox/i,d,u,h,p=[],g=e.childNodes[0].childNodes;for(let w=0;w`),this._tilingScheme=void 0,this._version=void 0,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=e.maximumLevel,this._errorEvent=new Ce}Object.defineProperties(ad.prototype,{url:{get:function(){return this._url}},path:{get:function(){return this._path}},proxy:{get:function(){return this._resource.proxy}},channel:{get:function(){return this._channel}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},version:{get:function(){return this._version}},requestType:{get:function(){return this._requestType}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}});ad.fromUrl=async function(e,t,n){n=n??{};let i=n.path??"/default_map",o=Ve.createIfNeeded(e).getDerivedResource({url:i[0]==="/"?i.substring(1):i});o.appendForwardSlash();let r=o.getDerivedResource({url:"query",queryParameters:{request:"Json",vars:"geeServerDefs",is2d:"t"}}),s=new Xle(n);s.channel=t,await oOe(r,s);let a=new ad(n);return s.build(a),a._resource=o,a._url=e,a._path=i,a};ad.prototype.getTileCredits=function(e,t,n){};ad.prototype.requestImage=function(e,t,n,i){let o=this._resource.getDerivedResource({url:"query",request:i,queryParameters:{request:this._requestType,channel:this._channel,version:this._version,x:e,y:t,z:n+1}});return Sl.loadImage(this,o)};ad.prototype.pickFeatures=function(e,t,n,i,o){};ad._logoUrl=void 0;Object.defineProperties(ad,{logoUrl:{get:function(){return l(ad._logoUrl)||(ad._logoUrl=hn("Assets/Images/google_earth_credit.png")),ad._logoUrl},set:function(e){ad._logoUrl=e}}});var kw=ad;var vBn=y(C(),1);var rOe=/\/$/,Wle=new Gt('© Mapbox © OpenStreetMap Improve this map');function tT(e){e=e??Y.EMPTY_OBJECT;let t=e.mapId,n=e.accessToken;this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let i=Ve.createIfNeeded(e.url??"https://{s}.tiles.mapbox.com/v4/");this._mapId=t,this._accessToken=n;let o=e.format??"png";/\./.test(o)||(o=`.${o}`),this._format=o;let r=i.getUrlComponent();rOe.test(r)||(r+="/"),r+=`${t}/{z}/{x}/{y}${this._format}`,i.url=r,i.setQueryParameters({access_token:n});let s;l(e.credit)?(s=e.credit,typeof s=="string"&&(s=new Gt(s))):s=Wle,this._resource=i,this._imageryProvider=new hc({url:i,credit:s,ellipsoid:e.ellipsoid,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,rectangle:e.rectangle})}Object.defineProperties(tT.prototype,{url:{get:function(){return this._imageryProvider.url}},rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._imageryProvider.errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},proxy:{get:function(){return this._imageryProvider.proxy}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}}});tT.prototype.getTileCredits=function(e,t,n){};tT.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};tT.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};tT._defaultCredit=Wle;var Yw=tT;var jBn=y(C(),1);function ix(e){e=e??Y.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let t=e.rectangle??le.MAX_VALUE,n=new ao({rectangle:t,numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});this._tilingScheme=n,this._image=void 0,this._texture=void 0,this._hasError=!1,this._errorEvent=new Ce;let i=e.credit;typeof i=="string"&&(i=new Gt(i)),this._credit=i;let o=Ve.createIfNeeded(e.url);this._resource=o,this._tileWidth=e.tileWidth,this._tileHeight=e.tileHeight}Object.defineProperties(ix.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return 0}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}});function sOe(e,t,n,i){let o=`Failed to load image ${e.url}`;l(t)&&l(t.message)&&(o+=`: ${t.message}`);let r=vo.reportError(i,n,l(n)?n._errorEvent:void 0,o,0,0,0,t);if(r.retry)return sK(e,n,r);throw l(n)&&(n._hasError=!0),new de(o)}async function sK(e,t,n){try{return await Sl.loadImage(null,e)}catch(i){return sOe(e,i,t,n)}}ix.fromUrl=async function(e,t){let n=Ve.createIfNeeded(e),i=await sK(n);t=t??Y.EMPTY_OBJECT;let o=new ix({...t,url:e,tileWidth:i.width,tileHeight:i.height});return o._image=i,o};ix.prototype.getTileCredits=function(e,t,n){};ix.prototype.requestImage=async function(e,t,n,i){if(!this._hasError&&!l(this._image)){let o=await sK(this._resource,this);return this._image=o,vo.reportSuccess(this._errorEvent),o}return this._image};ix.prototype.pickFeatures=function(e,t,n,i,o){};var Ow=ix;var xwn=y(C(),1);var iwn=y(C(),1);function aOe(e,t,n){this.type=e,l(t)||(e==="json"?t="application/json":e==="xml"?t="text/xml":e==="html"?t="text/html":e==="text"&&(t="text/plain")),this.format=t,l(n)||(e==="json"?n=cOe:e==="xml"?n=mOe:(e==="html"||e==="text")&&(n=Fle)),this.callback=n}function cOe(e){let t=[],n=e.features;for(let i=0;i0)for(let r=0;r\s*<\/body>/im,yOe=//im,COe=/([\s\S]*)<\/title>/im;function Fle(e){if(bOe.test(e)||yOe.test(e))return;let t,n=COe.exec(e);n&&n.length>1&&(t=n[1]);let i=new Vh;return i.name=t,i.description=e,i.data=e,[i]}var ox=aOe;var dwn=y(C(),1);function Hw(e){e=e??Y.EMPTY_OBJECT,this._tileCache={},this._tilesRequestedForInterval=[];let t=this._clock=e.clock;this._times=e.times,this._requestImageFunction=e.requestImageFunction,this._reloadFunction=e.reloadFunction,this._currentIntervalIndex=-1,t.onTick.addEventListener(this._clockOnTick,this),this._clockOnTick(t)}Object.defineProperties(Hw.prototype,{clock:{get:function(){return this._clock},set:function(e){this._clock!==e&&(this._clock=e,this._clockOnTick(e),this._reloadFunction())}},times:{get:function(){return this._times},set:function(e){this._times!==e&&(this._times=e,this._clockOnTick(this._clock),this._reloadFunction())}},currentInterval:{get:function(){return this._times.get(this._currentIntervalIndex)}}});Hw.prototype.getFromCache=function(e,t,n,i){let o=Ple(e,t,n),r,s=this._tileCache[this._currentIntervalIndex];if(l(s)&&l(s[o])){let a=s[o];r=a.promise.catch(function(c){throw i.state=a.request.state,c}),delete s[o]}return r};Hw.prototype.checkApproachingInterval=function(e,t,n,i){let o=Ple(e,t,n),r=this._tilesRequestedForInterval,s=Mle(this),a={key:o,priorityFunction:i.priorityFunction};(!l(s)||!vle(this,a,s))&&r.push(a),r.length>=512&&r.splice(0,256)};Hw.prototype._clockOnTick=function(e){let t=e.currentTime,i=this._times.indexOf(t),o=this._currentIntervalIndex;if(i!==o){let s=this._tileCache[o];for(let a in s)s.hasOwnProperty(a)&&s[a].request.cancel();delete this._tileCache[o],this._tilesRequestedForInterval=[],this._currentIntervalIndex=i,this._reloadFunction();return}let r=Mle(this);if(l(r)){let s=this._tilesRequestedForInterval,a=!0;for(;a&&s.length!==0;){let c=s.pop();a=vle(this,c,r),a||s.push(c)}}};function Ple(e,t,n){return`${e}-${t}-${n}`}function xOe(e){let t=e.split("-");if(t.length===3)return{x:Number(t[0]),y:Number(t[1]),level:Number(t[2])}}function Mle(e){let t=e._times;if(!l(t))return;let n=e._clock,i=n.currentTime,o=n.canAnimate&&n.shouldAnimate,r=n.multiplier;if(!o&&r!==0)return;let s,a=t.indexOf(i);if(a<0)return;let c=t.get(a);return r>0?(s=j.secondsDifference(c.stop,i),++a):(s=j.secondsDifference(c.start,i),--a),s/=r,a>=0&&s<=5?t.get(a):void 0}function vle(e,t,n){let i=e._times.indexOf(n.start),o=e._tileCache,r=o[i];l(r)||(r=o[i]={});let s=t.key;if(l(r[s]))return!0;let a=xOe(s),c=new sr({throttle:!1,throttleByServer:!0,type:Zs.IMAGERY,priorityFunction:t.priorityFunction}),d=e._requestImageFunction(a.x,a.y,a.level,c,n);return l(d)?(r[s]={promise:d,request:c},!0):!1}var rx=Hw;var IOe=[3034,3035,3042,3043,3044],_Oe=[4471,4559];function Zh(e){if(e=e??Y.EMPTY_OBJECT,l(e.times)&&!l(e.clock))throw new Ae("options.times was specified, so options.clock is required.");this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._getFeatureInfoUrl=e.getFeatureInfoUrl??e.url;let t=Ve.createIfNeeded(e.url),n=Ve.createIfNeeded(this._getFeatureInfoUrl);t.setQueryParameters(Zh.DefaultParameters,!0),n.setQueryParameters(Zh.GetFeatureInfoDefaultParameters,!0),l(e.parameters)&&t.setQueryParameters(Nle(e.parameters)),l(e.getFeatureInfoParameters)&&n.setQueryParameters(Nle(e.getFeatureInfoParameters));let i=this;this._reload=void 0,l(e.times)&&(this._timeDynamicImagery=new rx({clock:e.clock,times:e.times,requestImageFunction:function(s,a,c,d,u){return Dle(i,s,a,c,d,u)},reloadFunction:function(){l(i._reload)&&i._reload()}}));let o={};if(o.layers=e.layers,o.bbox="{westProjected},{southProjected},{eastProjected},{northProjected}",o.width="{width}",o.height="{height}",parseFloat(t.queryParameters.version)>=1.3){o.crs=e.crs??(e.tilingScheme&&e.tilingScheme.projection instanceof Ui?"EPSG:3857":"CRS:84");let s=o.crs.split(":");if(s[0]==="EPSG"&&s.length===2){let a=Number(s[1]);(a>=4e3&&a<5e3&&!_Oe.includes(a)||IOe.includes(a))&&(o.bbox="{southProjected},{westProjected},{northProjected},{eastProjected}")}}else o.srs=e.srs??(e.tilingScheme&&e.tilingScheme.projection instanceof Ui?"EPSG:3857":"EPSG:4326");t.setQueryParameters(o,!0),n.setQueryParameters(o,!0);let r={query_layers:e.layers,info_format:"{format}"};parseFloat(n.queryParameters.version)>=1.3?(r.i="{i}",r.j="{j}"):(r.x="{i}",r.y="{j}"),n.setQueryParameters(r,!0),this._resource=t,this._pickFeaturesResource=n,this._layers=e.layers,this._tileProvider=new hc({url:t,pickFeaturesUrl:n,tilingScheme:e.tilingScheme??new ao({ellipsoid:e.ellipsoid}),rectangle:e.rectangle,tileWidth:e.tileWidth,tileHeight:e.tileHeight,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,subdomains:e.subdomains,tileDiscardPolicy:e.tileDiscardPolicy,credit:e.credit,getFeatureInfoFormats:e.getFeatureInfoFormats??Zh.DefaultGetFeatureInfoFormats,enablePickFeatures:e.enablePickFeatures})}function Dle(e,t,n,i,o,r){let s=l(r)?r.data:void 0,a=e._tileProvider;return l(s)&&a._resource.setQueryParameters(s),a.requestImage(t,n,i,o)}function EOe(e,t,n,i,o,r,s){let a=l(s)?s.data:void 0,c=e._tileProvider;return l(a)&&c._pickFeaturesResource.setQueryParameters(a),c.pickFeatures(t,n,i,o,r)}Object.defineProperties(Zh.prototype,{url:{get:function(){return this._resource._url}},proxy:{get:function(){return this._resource.proxy}},layers:{get:function(){return this._layers}},tileWidth:{get:function(){return this._tileProvider.tileWidth}},tileHeight:{get:function(){return this._tileProvider.tileHeight}},maximumLevel:{get:function(){return this._tileProvider.maximumLevel}},minimumLevel:{get:function(){return this._tileProvider.minimumLevel}},tilingScheme:{get:function(){return this._tileProvider.tilingScheme}},rectangle:{get:function(){return this._tileProvider.rectangle}},tileDiscardPolicy:{get:function(){return this._tileProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._tileProvider.errorEvent}},credit:{get:function(){return this._tileProvider.credit}},hasAlphaChannel:{get:function(){return this._tileProvider.hasAlphaChannel}},enablePickFeatures:{get:function(){return this._tileProvider.enablePickFeatures},set:function(e){this._tileProvider.enablePickFeatures=e}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(e){this._timeDynamicImagery.clock=e}},times:{get:function(){return this._timeDynamicImagery.times},set:function(e){this._timeDynamicImagery.times=e}},getFeatureInfoUrl:{get:function(){return this._getFeatureInfoUrl}}});Zh.prototype.getTileCredits=function(e,t,n){return this._tileProvider.getTileCredits(e,t,n)};Zh.prototype.requestImage=function(e,t,n,i){let o,r=this._timeDynamicImagery,s;return l(r)&&(s=r.currentInterval,o=r.getFromCache(e,t,n,i)),l(o)||(o=Dle(this,e,t,n,i,s)),l(o)&&l(r)&&r.checkApproachingInterval(e,t,n,i),o};Zh.prototype.pickFeatures=function(e,t,n,i,o){let r=this._timeDynamicImagery,s=l(r)?r.currentInterval:void 0;return EOe(this,e,t,n,i,o,s)};Zh.DefaultParameters=Object.freeze({service:"WMS",version:"1.1.1",request:"GetMap",styles:"",format:"image/jpeg"});Zh.GetFeatureInfoDefaultParameters=Object.freeze({service:"WMS",version:"1.1.1",request:"GetFeatureInfo"});Zh.DefaultGetFeatureInfoFormats=Object.freeze([Object.freeze(new ox("json","application/json")),Object.freeze(new ox("xml","text/xml")),Object.freeze(new ox("text","text/html"))]);function Nle(e){let t={};for(let n in e)e.hasOwnProperty(n)&&(t[n.toLowerCase()]=e[n]);return t}var zw=Zh;var wwn=y(C(),1);var TOe=Object.freeze({service:"WMTS",version:"1.0.0",request:"GetTile"});function Kw(e){e=e??Y.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let t=Ve.createIfNeeded(e.url),n=e.style,i=e.tileMatrixSetID,o=t.url,r=o.match(/{/g);if(!l(r)||r.length===1&&/{s}/.test(o))t.setQueryParameters(TOe),this._useKvp=!0;else{let h={style:n,Style:n,TileMatrixSet:i};t.setTemplateValues(h),this._useKvp=!1}this._resource=t,this._layer=e.layer,this._style=n,this._tileMatrixSetID=i,this._tileMatrixLabels=e.tileMatrixLabels,this._format=e.format??"image/jpeg",this._tileDiscardPolicy=e.tileDiscardPolicy,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new _s({ellipsoid:e.ellipsoid}),this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._minimumLevel=e.minimumLevel??0,this._maximumLevel=e.maximumLevel,this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._dimensions=e.dimensions;let s=this;this._reload=void 0,l(e.times)&&(this._timeDynamicImagery=new rx({clock:e.clock,times:e.times,requestImageFunction:function(h,p,g,f,b){return Qle(s,h,p,g,f,b)},reloadFunction:function(){l(s._reload)&&s._reload()}}));let a=this._tilingScheme.positionToTileXY(le.southwest(this._rectangle),this._minimumLevel),c=this._tilingScheme.positionToTileXY(le.northeast(this._rectangle),this._minimumLevel),d=(Math.abs(c.x-a.x)+1)*(Math.abs(c.y-a.y)+1);this._errorEvent=new Ce;let u=e.credit;this._credit=typeof u=="string"?new Gt(u):u,this._subdomains=e.subdomains,Array.isArray(this._subdomains)?this._subdomains=this._subdomains.slice():l(this._subdomains)&&this._subdomains.length>0?this._subdomains=this._subdomains.split(""):this._subdomains=["a","b","c"]}function Qle(e,t,n,i,o,r){let s=e._tileMatrixLabels,a=l(s)?s[i]:i.toString(),c=e._subdomains,d=e._dimensions,u=l(r)?r.data:void 0,h,p;if(!e._useKvp)p={TileMatrix:a,TileRow:n.toString(),TileCol:t.toString(),s:c[(t+n+i)%c.length]},h=e._resource.getDerivedResource({request:o}),h.setTemplateValues(p),l(d)&&h.setTemplateValues(d),l(u)&&h.setTemplateValues(u);else{let g={};g.tilematrix=a,g.layer=e._layer,g.style=e._style,g.tilerow=n,g.tilecol=t,g.tilematrixset=e._tileMatrixSetID,g.format=e._format,l(d)&&(g=Lt(g,d)),l(u)&&(g=Lt(g,u)),p={s:c[(t+n+i)%c.length]},h=e._resource.getDerivedResource({queryParameters:g,request:o}),h.setTemplateValues(p)}return Sl.loadImage(e,h)}Object.defineProperties(Kw.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},format:{get:function(){return this._format}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(e){this._timeDynamicImagery.clock=e}},times:{get:function(){return this._timeDynamicImagery.times},set:function(e){this._timeDynamicImagery.times=e}},dimensions:{get:function(){return this._dimensions},set:function(e){this._dimensions!==e&&(this._dimensions=e,l(this._reload)&&this._reload())}}});Kw.prototype.getTileCredits=function(e,t,n){};Kw.prototype.requestImage=function(e,t,n,i){let o,r=this._timeDynamicImagery,s;return l(r)&&(s=r.currentInterval,o=r.getFromCache(e,t,n,i)),l(o)||(o=Qle(this,e,t,n,i,s)),l(o)&&l(r)&&r.checkApproachingInterval(e,t,n,i),o};Kw.prototype.pickFeatures=function(e,t,n,i,o){};var Jw=Kw;var SOe={ARCGIS_MAPSERVER:QA.fromUrl,BING:async(e,t)=>Dw.fromUrl(e,t),GOOGLE_EARTH:async(e,t)=>{let n=t.channel;return delete t.channel,kw.fromUrl(e,n,t)},MAPBOX:(e,t)=>new Yw({url:e,...t}),SINGLE_TILE:Ow.fromUrl,TMS:u0.fromUrl,URL_TEMPLATE:(e,t)=>new hc({url:e,...t}),WMS:(e,t)=>new zw({url:e,...t}),WMTS:(e,t)=>new Jw({url:e,...t})};function Jf(e){e=e??Y.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileCredits=void 0,this._errorEvent=new Ce}Object.defineProperties(Jf.prototype,{rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}},proxy:{get:function(){}}});Jf.fromAssetId=async function(e,t){t=t??Y.EMPTY_OBJECT;let n=Nd._createEndpointResource(e,t),i=e.toString()+t.accessToken+t.server,o=Jf._endpointCache[i];l(o)||(o=n.fetchJson(),Jf._endpointCache[i]=o);let r=await o;if(r.type!=="IMAGERY")throw new de(`Cesium ion asset ${e} is not an imagery asset.`);let s,a=r.externalType;if(!l(a))s=await u0.fromUrl(new Nd(r,n));else{let d=SOe[a];if(!l(d))throw new de(`Unrecognized Cesium ion imagery type: ${a}`);let u={...r.options},h=u.url;delete u.url,s=await d(h,u)}let c=new Jf(t);return s.errorEvent.addEventListener(function(d){d.provider=c,c._errorEvent.raiseEvent(d)}),c._tileCredits=Nd.getCreditsFromEndpoint(r,n),c._imageryProvider=s,c};Jf.prototype.getTileCredits=function(e,t,n){let i=this._imageryProvider.getTileCredits(e,t,n);return l(i)?this._tileCredits.concat(i):this._tileCredits};Jf.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};Jf.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};Jf._endpointCache={};var UA=Jf;var jwn=y(C(),1),LOe={AERIAL:2,AERIAL_WITH_LABELS:3,ROAD:4},kA=Object.freeze(LOe);function ROe(e){e=e??Y.EMPTY_OBJECT;let t=e.style??kA.AERIAL;return UA.fromAssetId(t)}var YA=ROe;var cXn=y(C(),1);function Ll(){Ae.throwInstantiationError()}Object.defineProperties(Ll.prototype,{errorEvent:{get:Ae.throwInstantiationError},credit:{get:Ae.throwInstantiationError},tilingScheme:{get:Ae.throwInstantiationError},hasWaterMask:{get:Ae.throwInstantiationError},hasVertexNormals:{get:Ae.throwInstantiationError},availability:{get:Ae.throwInstantiationError}});var Ule=[];Ll.getRegularGridIndices=function(e,t){let n=Ule[e];l(n)||(Ule[e]=n=[]);let i=n[t];return l(i)||(e*t<Z.SIXTY_FOUR_KILOBYTES?i=n[t]=new Uint16Array((e-1)*(t-1)*6):i=n[t]=new Uint32Array((e-1)*(t-1)*6),Hle(e,t,i,0)),i};var kle=[];Ll.getRegularGridIndicesAndEdgeIndices=function(e,t){let n=kle[e];l(n)||(kle[e]=n=[]);let i=n[t];if(!l(i)){let o=Ll.getRegularGridIndices(e,t),r=Ole(e,t),s=r.westIndicesSouthToNorth,a=r.southIndicesEastToWest,c=r.eastIndicesNorthToSouth,d=r.northIndicesWestToEast;i=n[t]={indices:o,westIndicesSouthToNorth:s,southIndicesEastToWest:a,eastIndicesNorthToSouth:c,northIndicesWestToEast:d}}return i};var Yle=[];Ll.getRegularGridAndSkirtIndicesAndEdgeIndices=function(e,t){let n=Yle[e];l(n)||(Yle[e]=n=[]);let i=n[t];if(!l(i)){let o=e*t,r=(e-1)*(t-1)*6,s=e*2+t*2,a=Math.max(0,s-4)*6,c=o+s,d=r+a,u=Ole(e,t),h=u.westIndicesSouthToNorth,p=u.southIndicesEastToWest,g=u.eastIndicesNorthToSouth,f=u.northIndicesWestToEast,b=Me.createTypedArray(c,d);Hle(e,t,b,0),Ll.addSkirtIndices(h,p,g,f,o,b,r),i=n[t]={indices:b,westIndicesSouthToNorth:h,southIndicesEastToWest:p,eastIndicesNorthToSouth:g,northIndicesWestToEast:f,indexCountWithoutSkirts:r}}return i};Ll.addSkirtIndices=function(e,t,n,i,o,r,s){let a=o;s=wQ(e,a,r,s),a+=e.length,s=wQ(t,a,r,s),a+=t.length,s=wQ(n,a,r,s),a+=n.length,wQ(i,a,r,s)};function Ole(e,t){let n=new Array(t),i=new Array(e),o=new Array(t),r=new Array(e),s;for(s=0;s<e;++s)r[s]=s,i[s]=e*t-1-s;for(s=0;s<t;++s)o[s]=(s+1)*e-1,n[s]=(t-s-1)*e;return{westIndicesSouthToNorth:n,southIndicesEastToWest:i,eastIndicesNorthToSouth:o,northIndicesWestToEast:r}}function Hle(e,t,n,i){let o=0;for(let r=0;r<t-1;++r){for(let s=0;s<e-1;++s){let a=o,c=a+e,d=c+1,u=a+1;n[i++]=a,n[i++]=c,n[i++]=u,n[i++]=u,n[i++]=c,n[i++]=d,++o}++o}}function wQ(e,t,n,i){let o=e[0],r=e.length;for(let s=1;s<r;++s){let a=e[s];n[i++]=o,n[i++]=a,n[i++]=t,n[i++]=t,n[i++]=a,n[i++]=t+1,o=a,++t}return i}Ll.heightmapTerrainQuality=.25;Ll.getEstimatedLevelZeroGeometricErrorForAHeightmap=function(e,t,n){return e.maximumRadius*2*Math.PI*Ll.heightmapTerrainQuality/(t*n)};Ll.prototype.requestTileGeometry=Ae.throwInstantiationError;Ll.prototype.getLevelMaximumGeometricError=Ae.throwInstantiationError;Ll.prototype.getTileDataAvailable=Ae.throwInstantiationError;Ll.prototype.loadTileDataAvailability=Ae.throwInstantiationError;var Es=Ll;var dXn=y(C(),1),jw=`uniform sampler2D u_texture; + +in vec2 v_textureCoordinates; + +void main() +{ + out_FragColor = texture(u_texture, v_textureCoordinates); +} +`;var mXn=y(C(),1),qw=`in vec4 position; +in float webMercatorT; + +uniform vec2 u_textureDimensions; + +out vec2 v_textureCoordinates; + +void main() +{ + v_textureCoordinates = vec2(position.x, webMercatorT); + gl_Position = czm_viewportOrthographic * (position * vec4(u_textureDimensions, 1.0, 1.0)); +} +`;var yXn=y(C(),1);var fXn=y(C(),1),VOe={UNLOADED:0,TRANSITIONING:1,RECEIVED:2,TEXTURE_LOADED:3,READY:4,FAILED:5,INVALID:6,PLACEHOLDER:7},Jn=Object.freeze(VOe);function nT(e,t,n,i,o){if(this.imageryLayer=e,this.x=t,this.y=n,this.level=i,this.request=void 0,i!==0){let r=t/2|0,s=n/2|0,a=i-1;this.parent=e.getImageryFromCache(r,s,a)}this.state=Jn.UNLOADED,this.imageUrl=void 0,this.image=void 0,this.texture=void 0,this.textureWebMercator=void 0,this.credits=void 0,this.referenceCount=0,!l(o)&&e.ready&&(o=e.imageryProvider.tilingScheme.tileXYToRectangle(t,n,i)),this.rectangle=o}nT.createPlaceholder=function(e){let t=new nT(e,0,0,0);return t.addReference(),t.state=Jn.PLACEHOLDER,t};nT.prototype.addReference=function(){++this.referenceCount};nT.prototype.releaseReference=function(){return--this.referenceCount,this.referenceCount===0?(this.imageryLayer.removeImageryFromCache(this),l(this.parent)&&this.parent.releaseReference(),l(this.image)&&l(this.image.destroy)&&this.image.destroy(),l(this.texture)&&this.texture.destroy(),l(this.textureWebMercator)&&this.texture!==this.textureWebMercator&&this.textureWebMercator.destroy(),me(this),0):this.referenceCount};nT.prototype.processStateMachine=function(e,t,n){this.state===Jn.UNLOADED&&!n&&(this.state=Jn.TRANSITIONING,this.imageryLayer._requestImagery(this)),this.state===Jn.RECEIVED&&(this.state=Jn.TRANSITIONING,this.imageryLayer._createTexture(e.context,this));let i=this.state===Jn.READY&&t&&!this.texture;(this.state===Jn.TEXTURE_LOADED||i)&&(this.state=Jn.TRANSITIONING,this.imageryLayer._reprojectTexture(e,this,t))};var iT=nT;var _Xn=y(C(),1);function lK(e,t,n){this.readyImagery=void 0,this.loadingImagery=e,this.textureCoordinateRectangle=t,this.textureTranslationAndScale=void 0,this.useWebMercatorT=n}lK.prototype.freeResources=function(){l(this.readyImagery)&&this.readyImagery.releaseReference(),l(this.loadingImagery)&&this.loadingImagery.releaseReference()};lK.prototype.processStateMachine=function(e,t,n){let i=this.loadingImagery,o=i.imageryLayer;if(i.processStateMachine(t,!this.useWebMercatorT,n),i.state===Jn.READY)return l(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=this.loadingImagery,this.loadingImagery=void 0,this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(e,this),!0;let r=i.parent,s;for(;l(r)&&(r.state!==Jn.READY||!this.useWebMercatorT&&!l(r.texture));)r.state!==Jn.FAILED&&r.state!==Jn.INVALID&&(s=s||r),r=r.parent;return this.readyImagery!==r&&(l(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=r,l(r)&&(r.addReference(),this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(e,this))),i.state===Jn.FAILED||i.state===Jn.INVALID?l(s)?(s.processStateMachine(t,!this.useWebMercatorT,n),!1):!0:!1};var oT=lK;function Wi(e,t){this._imageryProvider=e,this._readyEvent=new Ce,this._errorEvent=new Ce,t=t??Y.EMPTY_OBJECT,e=e??Y.EMPTY_OBJECT,this.alpha=t.alpha??e._defaultAlpha??1,this.nightAlpha=t.nightAlpha??e._defaultNightAlpha??1,this.dayAlpha=t.dayAlpha??e._defaultDayAlpha??1,this.brightness=t.brightness??e._defaultBrightness??Wi.DEFAULT_BRIGHTNESS,this.contrast=t.contrast??e._defaultContrast??Wi.DEFAULT_CONTRAST,this.hue=t.hue??e._defaultHue??Wi.DEFAULT_HUE,this.saturation=t.saturation??e._defaultSaturation??Wi.DEFAULT_SATURATION,this.gamma=t.gamma??e._defaultGamma??Wi.DEFAULT_GAMMA,this.splitDirection=t.splitDirection??Wi.DEFAULT_SPLIT,this.minificationFilter=t.minificationFilter??e._defaultMinificationFilter??Wi.DEFAULT_MINIFICATION_FILTER,this.magnificationFilter=t.magnificationFilter??e._defaultMagnificationFilter??Wi.DEFAULT_MAGNIFICATION_FILTER,this.show=t.show??!0,this._minimumTerrainLevel=t.minimumTerrainLevel,this._maximumTerrainLevel=t.maximumTerrainLevel,this._rectangle=t.rectangle??le.MAX_VALUE,this._maximumAnisotropy=t.maximumAnisotropy,this._imageryCache={},this._skeletonPlaceholder=new oT(iT.createPlaceholder(this)),this._show=!0,this._layerIndex=-1,this._isBaseLayer=!1,this._requestImageError=void 0,this._reprojectComputeCommands=[],this.cutoutRectangle=t.cutoutRectangle,this.colorToAlpha=t.colorToAlpha,this.colorToAlphaThreshold=t.colorToAlphaThreshold??Wi.DEFAULT_APPLY_COLOR_TO_ALPHA_THRESHOLD}Object.defineProperties(Wi.prototype,{imageryProvider:{get:function(){return this._imageryProvider}},ready:{get:function(){return l(this._imageryProvider)}},errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},rectangle:{get:function(){return this._rectangle}}});Wi.DEFAULT_BRIGHTNESS=1;Wi.DEFAULT_CONTRAST=1;Wi.DEFAULT_HUE=0;Wi.DEFAULT_SATURATION=1;Wi.DEFAULT_GAMMA=1;Wi.DEFAULT_SPLIT=Ir.NONE;Wi.DEFAULT_MINIFICATION_FILTER=en.LINEAR;Wi.DEFAULT_MAGNIFICATION_FILTER=pi.LINEAR;Wi.DEFAULT_APPLY_COLOR_TO_ALPHA_THRESHOLD=.004;Wi.fromProviderAsync=function(e,t){let n=new Wi(void 0,t);return XOe(n,Promise.resolve(e)),n};Wi.fromWorldImagery=function(e){return e=e??Y.EMPTY_OBJECT,Wi.fromProviderAsync(YA({style:e.style}),e)};Wi.prototype.isBaseLayer=function(){return this._isBaseLayer};Wi.prototype.isDestroyed=function(){return!1};Wi.prototype.destroy=function(){return me(this)};var Jle=new le,zle=new le,dK=new le,jle=new le;Wi.prototype.getImageryRectangle=function(){let e=this._imageryProvider,t=this._rectangle;return le.intersection(e.rectangle,t)};Wi.prototype._createTileImagerySkeletons=function(e,t,n){let i=e.data;if(!l(t)||l(this._minimumTerrainLevel)&&e.level<this._minimumTerrainLevel||l(this._maximumTerrainLevel)&&e.level>this._maximumTerrainLevel)return!1;l(n)||(n=i.imagery.length);let o=this._imageryProvider;if(!this.ready)return this._skeletonPlaceholder.loadingImagery.addReference(),i.imagery.splice(n,0,this._skeletonPlaceholder),!0;let r=o.tilingScheme.projection instanceof Ui&&e.rectangle.north<Ui.MaximumLatitude&&e.rectangle.south>-Ui.MaximumLatitude,s=le.intersection(o.rectangle,this._rectangle,Jle),a=le.intersection(e.rectangle,s,zle);if(!l(a)){if(!this.isBaseLayer())return!1;let L=s,V=e.rectangle;a=zle,V.south>=L.north?a.north=a.south=L.north:V.north<=L.south?a.north=a.south=L.south:(a.south=Math.max(V.south,L.south),a.north=Math.min(V.north,L.north)),V.west>=L.east?a.west=a.east=L.east:V.east<=L.west?a.west=a.east=L.west:(a.west=Math.max(V.west,L.west),a.east=Math.min(V.east,L.east))}let c=0;a.south>0?c=a.south:a.north<0&&(c=a.north);let u=1*t.getLevelMaximumGeometricError(e.level),h=BOe(this,u,c);h=Math.max(0,h);let p=o.maximumLevel;if(h>p&&(h=p),l(o.minimumLevel)){let L=o.minimumLevel;h<L&&(h=L)}let g=o.tilingScheme,f=g.positionToTileXY(le.northwest(a),h),b=g.positionToTileXY(le.southeast(a),h),x=e.rectangle.width/512,I=e.rectangle.height/512,_=g.tileXYToRectangle(f.x,f.y,h);Math.abs(_.south-e.rectangle.north)<I&&f.y<b.y&&++f.y,Math.abs(_.east-e.rectangle.west)<x&&f.x<b.x&&++f.x;let E=g.tileXYToRectangle(b.x,b.y,h);Math.abs(E.north-e.rectangle.south)<I&&b.y>f.y&&--b.y,Math.abs(E.west-e.rectangle.east)<x&&b.x>f.x&&--b.x;let S=le.clone(e.rectangle,jle),R=g.tileXYToRectangle(f.x,f.y,h),G=le.intersection(R,s,dK),B;r?(g.rectangleToNativeRectangle(S,S),g.rectangleToNativeRectangle(R,R),g.rectangleToNativeRectangle(G,G),g.rectangleToNativeRectangle(s,s),B=g.tileXYToNativeRectangle.bind(g),x=S.width/512,I=S.height/512):B=g.tileXYToRectangle.bind(g);let w,F=0,P=1,A;!this.isBaseLayer()&&Math.abs(G.west-S.west)>=x&&(F=Math.min(1,(G.west-S.west)/S.width)),!this.isBaseLayer()&&Math.abs(G.north-S.north)>=I&&(P=Math.max(0,(G.north-S.south)/S.height));let T=P;for(let L=f.x;L<=b.x;L++)if(w=F,R=B(L,f.y,h),G=le.simpleIntersection(R,s,dK),!!l(G)){F=Math.min(1,(G.east-S.west)/S.width),L===b.x&&(this.isBaseLayer()||Math.abs(G.east-S.east)<x)&&(F=1),P=T;for(let V=f.y;V<=b.y;V++){if(A=P,R=B(L,V,h),G=le.simpleIntersection(R,s,dK),!l(G))continue;P=Math.max(0,(G.south-S.south)/S.height),V===b.y&&(this.isBaseLayer()||Math.abs(G.south-S.south)<I)&&(P=0);let W=new ce(w,P,F,A),M=this.getImageryFromCache(L,V,h);i.imagery.splice(n,0,new oT(M,W,r)),++n}}return!0};Wi.prototype._calculateTextureTranslationAndScale=function(e,t){let n=t.readyImagery.rectangle,i=e.rectangle;if(t.useWebMercatorT){let c=t.readyImagery.imageryLayer.imageryProvider.tilingScheme;n=c.rectangleToNativeRectangle(n,Jle),i=c.rectangleToNativeRectangle(i,jle)}let o=i.width,r=i.height,s=o/n.width,a=r/n.height;return new ce(s*(i.west-n.west)/o,a*(i.south-n.south)/r,s,a)};Wi.prototype._requestImagery=function(e){let t=this._imageryProvider,n=this;function i(s){if(!l(s))return o();e.image=s,e.state=Jn.RECEIVED,e.request=void 0,vo.reportSuccess(n._requestImageError)}function o(s){if(e.request.state===mi.CANCELLED){e.state=Jn.UNLOADED,e.request=void 0;return}e.state=Jn.FAILED,e.request=void 0;let a=`Failed to obtain image tile X: ${e.x} Y: ${e.y} Level: ${e.level}.`;n._requestImageError=vo.reportError(n._requestImageError,t,t.errorEvent,a,e.x,e.y,e.level,s),n._requestImageError.retry&&r()}function r(){let s=new sr({throttle:!1,throttleByServer:!0,type:Zs.IMAGERY});e.request=s,e.state=Jn.TRANSITIONING;let a=t.requestImage(e.x,e.y,e.level,s);if(!l(a)){e.state=Jn.UNLOADED,e.request=void 0;return}l(t.getTileCredits)&&(e.credits=t.getTileCredits(e.x,e.y,e.level)),a.then(function(c){i(c)}).catch(function(c){o(c)})}r()};Wi.prototype._createTextureWebGL=function(e,t){let n=new sn({minificationFilter:this.minificationFilter,magnificationFilter:this.magnificationFilter}),i=t.image;return l(i.internalFormat)?new Wt({context:e,pixelFormat:i.internalFormat,width:i.width,height:i.height,source:{arrayBufferView:i.bufferView},sampler:n}):new Wt({context:e,source:i,pixelFormat:this._imageryProvider.hasAlphaChannel?tt.RGBA:tt.RGB,sampler:n})};Wi.prototype._createTexture=function(e,t){let n=this._imageryProvider,i=t.image;if(l(n.tileDiscardPolicy)){let r=n.tileDiscardPolicy;if(l(r)){if(!r.isReady()){t.state=Jn.RECEIVED;return}if(r.shouldDiscardImage(i)){t.state=Jn.INVALID;return}}}let o=this._createTextureWebGL(e,t);n.tilingScheme.projection instanceof Ui?t.textureWebMercator=o:t.texture=o,t.image=void 0,t.state=Jn.TEXTURE_LOADED};function Kle(e,t,n){return`${e}:${t}:${n}`}Wi.prototype._finalizeReprojectTexture=function(e,t){let n=this.minificationFilter,i=this.magnificationFilter;if(n===en.LINEAR&&i===pi.LINEAR&&!tt.isCompressedFormat(t.pixelFormat)&&Z.isPowerOfTwo(t.width)&&Z.isPowerOfTwo(t.height)){n=en.LINEAR_MIPMAP_LINEAR;let r=Kt.maximumTextureFilterAnisotropy,s=Math.min(r,this._maximumAnisotropy??r),a=Kle(n,i,s),c=e.cache.imageryLayerMipmapSamplers;l(c)||(c={},e.cache.imageryLayerMipmapSamplers=c);let d=c[a];l(d)||(d=c[a]=new sn({wrapS:Ln.CLAMP_TO_EDGE,wrapT:Ln.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i,maximumAnisotropy:s})),t.generateMipmap(Yu.NICEST),t.sampler=d}else{let r=Kle(n,i,0),s=e.cache.imageryLayerNonMipmapSamplers;l(s)||(s={},e.cache.imageryLayerNonMipmapSamplers=s);let a=s[r];l(a)||(a=s[r]=new sn({wrapS:Ln.CLAMP_TO_EDGE,wrapT:Ln.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i})),t.sampler=a}};Wi.prototype._reprojectTexture=function(e,t,n){let i=t.textureWebMercator||t.texture,o=t.rectangle,r=e.context;if(n=n??!0,n&&!(this._imageryProvider.tilingScheme.projection instanceof Di)&&o.width/i.width>1e-5){let s=this;t.addReference();let a=new Il({persists:!0,owner:this,preExecute:function(c){ZOe(c,r,i,t.rectangle)},postExecute:function(c){t.texture=c,s._finalizeReprojectTexture(r,c),t.state=Jn.READY,t.releaseReference()},canceled:function(){t.state=Jn.TEXTURE_LOADED,t.releaseReference()}});this._reprojectComputeCommands.push(a)}else n&&(t.texture=i),this._finalizeReprojectTexture(r,i),t.state=Jn.READY};Wi.prototype.queueReprojectionCommands=function(e){let t=this._reprojectComputeCommands,n=t.length;for(let i=0;i<n;++i)e.commandList.push(t[i]);t.length=0};Wi.prototype.cancelReprojections=function(){this._reprojectComputeCommands.forEach(function(e){l(e.canceled)&&e.canceled()}),this._reprojectComputeCommands.length=0};Wi.prototype.getImageryFromCache=function(e,t,n,i){let o=qle(e,t,n),r=this._imageryCache[o];return l(r)||(r=new iT(this,e,t,n,i),this._imageryCache[o]=r),r.addReference(),r};Wi.prototype.removeImageryFromCache=function(e){let t=qle(e.x,e.y,e.level);delete this._imageryCache[t]};function qle(e,t,n){return JSON.stringify([e,t,n])}var XQ={u_textureDimensions:function(){return this.textureDimensions},u_texture:function(){return this.texture},textureDimensions:new D,texture:void 0},GOe=Ht.supportsTypedArrays()?new Float32Array(128):void 0;function ZOe(e,t,n,i){let o=t.cache.imageryLayer_reproject;if(!l(o)){o=t.cache.imageryLayer_reproject={vertexArray:void 0,shaderProgram:void 0,sampler:void 0,destroy:function(){l(this.framebuffer)&&this.framebuffer.destroy(),l(this.vertexArray)&&this.vertexArray.destroy(),l(this.shaderProgram)&&this.shaderProgram.destroy()}};let x=new Float32Array(256),I=0;for(let G=0;G<64;++G){let B=G/63;x[I++]=0,x[I++]=B,x[I++]=1,x[I++]=B}let _={position:0,webMercatorT:1},E=Es.getRegularGridIndices(2,64),S=It.createIndexBuffer({context:t,typedArray:E,usage:Ne.STATIC_DRAW,indexDatatype:Me.UNSIGNED_SHORT});o.vertexArray=new ui({context:t,attributes:[{index:_.position,vertexBuffer:It.createVertexBuffer({context:t,typedArray:x,usage:Ne.STATIC_DRAW}),componentsPerAttribute:2},{index:_.webMercatorT,vertexBuffer:It.createVertexBuffer({context:t,sizeInBytes:512,usage:Ne.STREAM_DRAW}),componentsPerAttribute:1}],indexBuffer:S});let R=new Oe({sources:[qw]});o.shaderProgram=ln.fromCache({context:t,vertexShaderSource:R,fragmentShaderSource:jw,attributeLocations:_}),o.sampler=new sn({wrapS:Ln.CLAMP_TO_EDGE,wrapT:Ln.CLAMP_TO_EDGE,minificationFilter:en.LINEAR,magnificationFilter:pi.LINEAR})}n.sampler=o.sampler;let r=n.width,s=n.height;XQ.textureDimensions.x=r,XQ.textureDimensions.y=s,XQ.texture=n;let a=Math.sin(i.south),c=.5*Math.log((1+a)/(1-a));a=Math.sin(i.north);let u=1/(.5*Math.log((1+a)/(1-a))-c),h=new Wt({context:t,width:r,height:s,pixelFormat:n.pixelFormat,pixelDatatype:n.pixelDatatype,preMultiplyAlpha:n.preMultiplyAlpha});Z.isPowerOfTwo(r)&&Z.isPowerOfTwo(s)&&h.generateMipmap(Yu.NICEST);let p=i.south,g=i.north,f=GOe,b=0;for(let x=0;x<64;++x){let I=x/63,_=Z.lerp(p,g,I);a=Math.sin(_);let S=(.5*Math.log((1+a)/(1-a))-c)*u;f[b++]=S,f[b++]=S}o.vertexArray.getAttribute(1).vertexBuffer.copyFromArrayView(f),e.shaderProgram=o.shaderProgram,e.outputTexture=h,e.uniformMap=XQ,e.vertexArray=o.vertexArray}function BOe(e,t,n){let i=e._imageryProvider,o=i.tilingScheme,r=o.ellipsoid,s=e._imageryProvider.tilingScheme.projection instanceof Di?1:Math.cos(n),a=o.rectangle,d=r.maximumRadius*a.width*s/(i.tileWidth*o.getNumberOfXTilesAtLevel(0))/t,u=Math.log(d)/Math.log(2);return Math.round(u)|0}function wOe(e,t){e.numberOfListeners>0?e.raiseEvent(t):console.error(t)}async function XOe(e,t){let n;try{if(n=await Promise.resolve(t),e.isDestroyed())return;e._imageryProvider=n,e._readyEvent.raiseEvent(n)}catch(i){wOe(e._errorEvent,i)}}var is=Wi;var u2n=y(C(),1),uK=class{constructor(){this.alpha=!1,this.brightness=!1,this.contrast=!1,this.hue=!1,this.saturation=!1,this.gamma=!1,this.colorToAlpha=!1}},$w=uK;var rWn=y(C(),1);var b2n=y(C(),1);var h2n=y(C(),1),mK=class{constructor(t,n,i,o){this._minX=t??0,this._minY=n??0,this._maxX=i??0,this._maxY=o??0}get minX(){return this._minX}set minX(t){this._minX=t}get minY(){return this._minY}set minY(t){this._minY=t}get maxX(){return this._maxX}set maxX(t){this._maxX=t}get maxY(){return this._maxY}set maxY(t){this._maxY=t}contains(t,n){return t>=this.minX&&t<this.maxX&&n>=this.minY&&n<this.maxY}containsExclusive(t,n){return t>this.minX&&t<this.maxX&&n>this.minY&&n<this.maxY}containsInclusive(t,n){return t>=this.minX&&t<=this.maxX&&n>=this.minY&&n<=this.maxY}},rT=mK;var WOe=new le,$le=new le,FOe=new le,POe=new le,MOe=new le,vOe=new le,hK=class e{constructor(t,n,i,o,r){this._x=t,this._y=n,this._level=i,this._textureCoordinateRectangle=o,this._imagery=r}get x(){return this._x}get y(){return this._y}get level(){return this._level}get textureCoordinateRectangle(){return this._textureCoordinateRectangle}get imagery(){return this._imagery}static createImageryCoverages(t,n,i){if(!n.show)return[];let o=n.imageryProvider,r=e._clampImageryLevel(o,i),s=le.intersection(o.rectangle,n.rectangle,WOe),a=o.tilingScheme,c=e._computeImageryRange(t,s,a,r),d=POe;a.rectangleToNativeRectangle(t,d);let u=MOe;a.rectangleToNativeRectangle(s,u);let h=(g,f,b)=>{let x=a.tileXYToRectangle(g,f,b),I=le.intersection(x,s,FOe);if(!l(I))return;let _=vOe;return a.rectangleToNativeRectangle(I,_),_};return e._computeImageryCoverages(n,c,r,d,h)}static _clampImageryLevel(t,n){let i=t.minimumLevel??0,o=t.maximumLevel??Number.POSITIVE_INFINITY,r=Math.min(o-1,Math.max(i,n));return Math.floor(r)}static _computeImageryRange(t,n,i,o){let r=e._computeOverlappedRectangle(t,n),s=i.positionToTileXY(le.northwest(r),o),a=i.positionToTileXY(le.southeast(r),o),c=new rT;c.minX=s.x,c.minY=s.y,c.maxX=a.x,c.maxY=a.y;let d=t.width/512,u=t.height/512,h=i.tileXYToRectangle(c.minX,c.minY,o);Math.abs(h.south-t.north)<u&&c.minY<c.maxY&&++c.minY,Math.abs(h.east-t.west)<d&&c.minX<c.maxX&&++c.minX;let f=i.tileXYToRectangle(c.maxX,c.maxY,o);return Math.abs(f.north-t.south)<u&&c.maxY>c.minY&&--c.maxY,Math.abs(f.west-t.east)<d&&c.maxX>c.minX&&--c.maxX,c}static _clampRectangle(t,n,i){return l(i)||(i=new le),t.south>=n.north?i.north=i.south=n.north:t.north<=n.south?i.north=i.south=n.south:(i.south=Math.max(t.south,n.south),i.north=Math.min(t.north,n.north)),t.west>=n.east?i.west=i.east=n.east:t.east<=n.west?i.west=i.east=n.west:(i.west=Math.max(t.west,n.west),i.east=Math.min(t.east,n.east)),i}static _computeOverlappedRectangle(t,n){let i=le.intersection(t,n,$le);return l(i)?i:e._clampRectangle(t,n,$le)}static _computeImageryCoverages(t,n,i,o,r){let s=[];for(let a=n.minX;a<=n.maxX;a++){let c=r(a,n.maxY,i);if(l(c))for(let d=n.minY;d<=n.maxY;d++){let u=r(a,d,i);if(!l(u))continue;let h=e._localizeToCartesianRectangle(u,o,void 0),p=t.getImageryFromCache(a,d,i),g=new e(a,d,i,h,p);s.push(g)}}return s}static _localizeToCartesianRectangle(t,n,i){l(i)||(i=new rT);let o=1/n.width,r=1/n.height;return i.minX=(t.west-n.west)*o,i.minY=(t.south-n.south)*r,i.maxX=(t.east-n.west)*o,i.maxY=(t.north-n.south)*r,i}},sT=hK;var k2n=y(C(),1);var Z2n=y(C(),1);var fK=class e{static readAttributeAsTypedArray(t){let n=e.readAttributeAsRawCompactTypedArray(t),i=t.normalized,o=t.quantization;if(!l(o)&&!i)return n;let r=t.type,s=t.count,a=n;return i&&(a=Mn.dequantize(n,t.componentDatatype,r,s)),l(o)?e.dequantize(a,s,r,o):a}static readAttributeAsRawCompactTypedArray(t){let n=t.type,i=t.count,o=kt.getNumberOfComponents(n),r=i*o,s=t.componentDatatype,a=t.quantization;l(a)&&(s=a.componentDatatype);let c=t.buffer,d=t.byteOffset,u=t.byteStride,h=J.getSizeInBytes(s),p=o*h;if(!l(u)||u===p){let E=J.createTypedArray(s,r);return c.getBufferData(E,d),E}let g=new Uint8Array(c.sizeInBytes);c.getBufferData(g);let f=J.createTypedArray(s,r),b=u??p,x=new DataView(g.buffer,g.byteOffset,g.byteLength),I=new Array(o),_=e.createComponentsReader(s);for(let E=0;E<i;++E){let S=d+E*b;_(x,S,o,I);for(let R=0;R<o;++R)f[E*o+R]=I[R]}return f}static dequantize(t,n,i,o){if(o.octEncoded){let a=e.octDecode(t,n,o.normalizationRange,void 0);return o.octEncodedZXY&&e.convertZxyToXyz(a,a),a}let r=o.quantizedVolumeStepSize,s=o.quantizedVolumeOffset;if(i===kt.SCALAR)return e.dequantize1D(t,n,r,s,void 0);if(i===kt.VEC2)return e.dequantize2D(t,n,r,s,void 0);if(i===kt.VEC3)return e.dequantize3D(t,n,r,s,void 0);if(i===kt.VEC4)return e.dequantize4D(t,n,r,s,void 0);throw new Ae(`Element type for dequantization must be SCALAR, VEC2, VEC3, or VEC4, but is ${i}`)}static octDecode(t,n,i,o){l(o)||(o=new Float32Array(t.length));let r=new m;for(let s=0;s<n;s++)m.unpack(t,s*3,r),Mn.octDecodeInRange(r,i,r),m.pack(o,r,s*3);return o}static convertZxyToXyz(t,n,i){l(i)||(i=new Float32Array(t.length));let o=0;for(let r=0;r<n;r++,o+=3){let s=t[o+0],a=t[o+1],c=t[o+2];i[o+0]=a,i[o+1]=c,i[o+2]=s}return i}static dequantize1D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));for(let s=0;s<n;s++){let c=t[s]*i+o;r[s]=c}return r}static dequantize2D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new D;for(let a=0;a<n;a++)D.unpack(t,a*2,s),D.multiplyComponents(s,i,s),D.add(s,o,s),D.pack(s,r,a*2);return r}static dequantize3D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new m;for(let a=0;a<n;a++)m.unpack(t,a*3,s),m.multiplyComponents(s,i,s),m.add(s,o,s),m.pack(s,r,a*3);return r}static dequantize4D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new ce;for(let a=0;a<n;a++)ce.unpack(t,a*4,s),ce.multiplyComponents(s,i,s),ce.add(s,o,s),ce.pack(s,r,a*4);return r}static createComponentsReader(t){let n=e.createComponentReader(t),i=J.getSizeInBytes(t);return function(o,r,s,a){let c=r;for(let d=0;d<s;++d)a[d]=n(o,c),c+=i}}static createComponentReader(t){switch(t){case J.BYTE:return function(n,i){return n.getInt8(i)};case J.UNSIGNED_BYTE:return function(n,i){return n.getUint8(i)};case J.SHORT:return function(n,i){return n.getInt16(i,!0)};case J.UNSIGNED_SHORT:return function(n,i){return n.getUint16(i,!0)};case J.INT:return function(n,i){return n.getInt32(i,!0)};case J.UNSIGNED_INT:return function(n,i){return n.getUint32(i,!0)};case J.FLOAT:return function(n,i){return n.getFloat32(i,!0)};case J.DOUBLE:return function(n,i){return n.getFloat64(i,!0)}}throw new Ae(`The componentType must be a valid ComponentDatatype, but is ${t}`)}static transform3D(t,n,i){l(i)||(i=new Float32Array(t.length));let o=new m,r=t.length/3;for(let s=0;s<r;s++)m.unpack(t,s*3,o),X.multiplyByPoint(n,o,o),m.pack(o,i,s*3);return i}static readIndicesAsTypedArray(t){let n=t.typedArray;if(l(n))return n;let i=t.buffer,o=t.count,r=t.indexDatatype,s=e.createIndexTypedArray(r,o);return i.getBufferData(s),s}static readIndicesAsTriangleIndicesTypedArray(t,n){let i=e.readIndicesAsTypedArray(t);if(n===We.TRIANGLES)return i;if(n===We.TRIANGLE_STRIP)return e.convertTriangleStripToTriangleIndices(i);if(n===We.TRIANGLE_FAN)return e.convertTriangleFanToTriangleIndices(i);throw new Ae(`The primitiveType must be TRIANGLES (${We.TRIANGLES}, TRIANGLE_STRIP (${We.TRIANGLE_STRIP}, or TRIANGLE_FAN (${We.TRIANGLE_FAN}, but is ${n}`)}static convertTriangleStripToTriangleIndices(t){let n=t.constructor((t.length-2)*3);for(let i=0;i<t.length-2;i++)i%2===1?(n[i*3+0]=t[i+0],n[i*3+1]=t[i+2],n[i*3+2]=t[i+1]):(n[i*3+0]=t[i+0],n[i*3+1]=t[i+1],n[i*3+2]=t[i+2]);return n}static convertTriangleFanToTriangleIndices(t){let n=t.constructor((t.length-2)*3);for(let i=0;i<t.length-2;i++)n[i*3+0]=t[i+0],n[i*3+1]=t[i+1],n[i*3+2]=t[i+2];return n}static createIndexTypedArray(t,n){switch(t){case Me.UNSIGNED_BYTE:return new Uint8Array(n);case Me.UNSIGNED_SHORT:return new Uint16Array(n);case Me.UNSIGNED_INT:return new Uint32Array(n)}throw new Ae(`The indexDatatype must be UNSIGNED_BYTE (${Me.UNSIGNED_BYTE}, UNSIGNED_SHORT (${Me.UNSIGNED_SHORT}, or UNSIGNED_INT (${Me.UNSIGNED_INT}, but is ${t}`)}},eX=fK;var pK=class e{static createTextureCoordinatesForMappedPositions(t,n){let i=t.cartographicPositions,o=t.cartographicBoundingRectangle,r=t.numPositions;return e._createTextureCoordinates(i,r,o,n)}static _createTextureCoordinates(t,n,i,o){let r=new Ke;Ke.fromRectangle(i,o,r);let s=e.createProjectedPositions(t,o),a=e.computeTexCoords(s,r);return e.createTypedArrayFromCartesians2(n,a)}static createTextureCoordinatesAttributeForMappedPositions(t,n){let i=e.createTextureCoordinatesForMappedPositions(t,n);return e.createTexCoordAttribute(i)}static createCartographicPositions(t,n,i){let o=eX.readAttributeAsTypedArray(t),r=t.type,s=kt.getNumberOfComponents(r),a=e.createIterableCartesian3FromTypedArray(o,s),c=e.transformCartesians3(a,n);return e.transformToCartographic(c,i)}static createIterableCartesian3FromTypedArray(t,n){let i=new m,o=t.length/n;return{[Symbol.iterator]:function*(){for(let s=0;s<o;s++)i.x=t[s*n+0],i.y=t[s*n+1],i.z=t[s*n+2],yield i}}}static map(t,n){return{[Symbol.iterator]:function*(){for(let o of t)yield n(o)}}}static computeCartographicBoundingRectangle(t,n){l(n)||(n=new le);let i=Number.NEGATIVE_INFINITY,o=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY;for(let a of t)i=Math.max(i,a.latitude),o=Math.min(o,a.latitude),r=Math.max(r,a.longitude),s=Math.min(s,a.longitude);return n.north=i,n.south=o,n.east=r,n.west=s,n}static transformCartesians3(t,n){let i=new m;return e.map(t,r=>(X.multiplyByPoint(n,r,i),i))}static transformToCartographic(t,n){let i=new ge;return e.map(t,r=>(n.cartesianToCartographic(r,i),i))}static createProjectedPositions(t,n){let i=new m;return e.map(t,r=>(n.project(r,i),i))}static computeTexCoords(t,n){let i=new D,o=1/n.width,r=1/n.height;return e.map(t,a=>{let c=(a.x-n.x)*o,d=(a.y-n.y)*r,u=Math.min(Math.max(c,0),1),h=Math.min(Math.max(d,0),1);return i.x=u,i.y=h,i})}static createTypedArrayFromCartesians2(t,n){let i=new Float32Array(t*2),o=0;for(let r of n)i[o*2+0]=r.x,i[o*2+1]=r.y,o++;return i}static createTexCoordAttribute(t){return{name:"Imagery Texture Coordinates",semantic:lt.TEXCOORD,setIndex:0,componentDatatype:J.FLOAT,type:kt.VEC2,normalized:!1,count:t.length/2,min:void 0,max:void 0,constant:new D(0,0),quantization:void 0,typedArray:t,byteOffset:0,byteStride:void 0}}},sx=pK;var O2n=y(C(),1);var AK=class{constructor(t,n,i,o){this._cartographicPositions=t,this._numPositions=n,this._cartographicBoundingRectangle=i,this._ellipsoid=o}get cartographicPositions(){return this._cartographicPositions}get numPositions(){return this._numPositions}get cartographicBoundingRectangle(){return this._cartographicBoundingRectangle}get ellipsoid(){return this._ellipsoid}},tX=AK;var gK=class e{constructor(t,n,i){this._model=t,this._runtimeNode=n,this._runtimePrimitive=i,this._mappedPositionsPerEllipsoid=void 0,this._mappedPositionsModelMatrix=new X,this._lastImageryLayersModificationCounter=0,this._imageryTexCoordAttributesPerProjection=void 0,this._currentImageryLayers=void 0,this._coveragesPerLayer=void 0,this._allImageriesReady=!1}coveragesForImageryLayer(t){let o=this._model.imageryLayers.indexOf(t);if(o===-1)throw new Ae("Imagery layer is not part of the model");let r=this._coveragesPerLayer;if(!l(r))throw new Ae("The coveragesPerLayer have not been computed yet");return r[o]}update(t){let n=this._model,r=n.content.tileset.imageryLayersModificationCounter;this._lastImageryLayersModificationCounter!==r&&(delete this._mappedPositionsPerEllipsoid,this._lastImageryLayersModificationCounter=r),this._mappedPositionsNeedUpdate&&(n.resetDrawCommands(),this._mappedPositionsPerEllipsoid=this._computeMappedPositionsPerEllipsoid(),this._deleteCoveragesPerLayer(),this._destroyImageryTexCoordAttributes()),l(this._imageryTexCoordAttributesPerProjection)||(this._imageryTexCoordAttributesPerProjection=this._computeImageryTexCoordsAttributesPerProjection(),this._uploadImageryTexCoordAttributes(t.context)),l(this._coveragesPerLayer)||(this._computeCoveragesPerLayer(),this._allImageriesReady=!1),this._allImageriesReady||this._updateImageries(t)}_deleteCoveragesPerLayer(){let t=this._coveragesPerLayer;if(!l(t))return;let n=this._currentImageryLayers,i=t.length;for(let o=0;o<i;o++){let r=n[o],s=t[o];this._deleteCoverages(r,s)}delete this._currentImageryLayers,delete this._coveragesPerLayer}_deleteCoverages(t,n){if(t.isDestroyed())return;let i=n.length;for(let o=0;o<i;o++)n[o].imagery.releaseReference()}_uploadImageryTexCoordAttributes(t){let n=this._imageryTexCoordAttributesPerProjection;if(!l(n))return;let i=n.length;for(let o=0;o<i;o++){let r=n[o],s=It.createVertexBuffer({context:t,typedArray:r.typedArray,usage:Ne.STATIC_DRAW});s.vertexArrayDestroyable=!1,r.buffer=s}}_destroyImageryTexCoordAttributes(){let t=this._imageryTexCoordAttributesPerProjection;if(!l(t))return;let n=t.length;for(let i=0;i<n;i++){let o=t[i];l(o)&&(l(o.buffer)&&(o.buffer.isDestroyed()||o.buffer.destroy()),t[i]=void 0)}delete this._imageryTexCoordAttributesPerProjection}get _mappedPositionsNeedUpdate(){if(!l(this._mappedPositionsPerEllipsoid))return!0;let t=this._model,n=this._mappedPositionsModelMatrix;return!X.equals(t.modelMatrix,n)}_computeMappedPositionsPerEllipsoid(){let t=this._model,n=this._runtimeNode,i=this._runtimePrimitive,o=e._obtainPrimitivePositionAttribute(i.primitive),r=o.count,s=e._computePrimitivePositionTransform(t,n,void 0),a=[],c=e._computeUniqueEllipsoids(t.imageryLayers),d=c.length;for(let u=0;u<d;u++){let h=c[u],p=sx.createCartographicPositions(o,s,h),g=sx.computeCartographicBoundingRectangle(p),f=new tX(p,r,g,h);a.push(f)}return X.clone(t.modelMatrix,this._mappedPositionsModelMatrix),a}static _computeUniqueEllipsoids(t){let n=new Set,i=t.length;for(let o=0;o<i;o++){let r=t.get(o),s=e._getEllipsoid(r);n.add(s)}return[...n]}_computeImageryTexCoordsAttributesPerProjection(){let n=this._model.imageryLayers,i=e._extractProjections(n),o=[...new Set(i)];return this._createImageryTexCoordAttributes(o)}static _extractProjections(t){let n=[],i=t.length;for(let o=0;o<i;o++){let r=t.get(o),s=e._getProjection(r);n.push(s)}return n}static _getProjection(t){return t.imageryProvider.tilingScheme.projection}_createImageryTexCoordAttributes(t){let n=[],i=t.length;for(let o=0;o<i;o++){let r=t[o],s=r.ellipsoid,a=this.mappedPositionsForEllipsoid(s),c=sx.createTextureCoordinatesAttributeForMappedPositions(a,r);n.push(c)}return n}_computeCoveragesPerLayer(){let t=[],n=[],o=this._model.imageryLayers,r=o.length;for(let s=0;s<r;s++){let a=o.get(s),c=this._computeCoverage(a);t.push(c),n.push(a)}this._coveragesPerLayer=t,this._currentImageryLayers=n}_computeCoverage(t){let i=this.mappedPositionsForImageryLayer(t).cartographicBoundingRectangle,o=this._computeImageryLevel(t,i);return sT.createImageryCoverages(i,t,o)}_computeImageryLevel(t,n){let i=t.imageryProvider,r=i.tilingScheme.rectangle,s=1,a=n.width,c=r.width;n.height>n.width&&(a=n.height,c=r.height);let d=Math.log2(s*c/a);return sT._clampImageryLevel(i,d)}_updateImageries(t){let n=this._model,i=this._coveragesPerLayer,o=i.length,r=!0;for(let s=0;s<o;s++){let a=i[s],c=a.length;for(let d=0;d<c;d++){let h=a[d].imagery;h.state===Jn.READY||h.state===Jn.FAILED||h.state===Jn.INVALID||(r=!1,h.processStateMachine(t,!1,!1))}}r&&n.resetDrawCommands(),this._allImageriesReady=r}mappedPositionsForImageryLayer(t){let n=e._getEllipsoid(t);return this.mappedPositionsForEllipsoid(n)}mappedPositionsForEllipsoid(t){let n=this._mappedPositionsPerEllipsoid;if(!l(n))throw new Ae("The mappedPositions have not been computed yet");let i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.ellipsoid===t)return r}throw new Ae(`Could not find mapped positions for ellipsoid ${t}`)}imageryTexCoordAttributesPerProjection(){let t=this._imageryTexCoordAttributesPerProjection;if(!l(t))throw new Ae("The imagery texture coordinate attributes have not been computed yet");return this._imageryTexCoordAttributesPerProjection}get ready(){let t=this._coveragesPerLayer;return l(t)?this._allImageriesReady:!1}isDestroyed(){return!1}destroy(){if(!this.isDestroyed())return this._deleteCoveragesPerLayer(),this._destroyImageryTexCoordAttributes(),me(this)}static _computePrimitivePositionTransform(t,n,i){l(i)||(i=new X);let o=t.sceneGraph;return X.clone(X.IDENTITY,i),X.multiply(i,t.modelMatrix,i),X.multiply(i,o.components.transform,i),X.multiply(i,o.axisCorrectionMatrix,i),X.multiply(i,n.computedTransform,i),i}static _obtainPrimitivePositionAttribute(t){let n=Mt.getAttributeBySemantic(t,"POSITION");if(!l(n))throw new Ae("The primitive does not have a POSITION attribute");return n}static _getEllipsoid(t){return t.imageryProvider.tilingScheme.projection.ellipsoid}},ax=gK;var aWn=y(C(),1),bK=class{constructor(t,n,i,o,r){this.imageryLayer=t,this.texture=n,this.textureTranslationAndScale=i,this.textureCoordinateRectangle=o,this.imageryTexCoordAttributeSetIndex=r}},nX=bK;var NOe=!1,DOe=new le,QOe=new le,yK=class e{static process(t,n,i){let o=t.model,r=n.modelPrimitiveImagery;if(!l(r)||!r.ready)return;let s=o.imageryLayers,a=ax._extractProjections(s),c=[...new Set(a)],d=e._computeIndexMapping(a,c),u=e._createImageryInputs(s,r,d);if(u.length===0)return;u.length>10&&(xt("imagery-texture-units",`Warning: Draped imagery requires ${u.length} texture units, truncating`),u.length=10),e._addImageryTexCoordAttributesToRenderResources(r,t);let h=[];for(let p=0;p<s.length;p++)h.push(s.get(p));e._processImageryInputs(h,t,u,c.length)}static _addImageryTexCoordAttributesToRenderResources(t,n){let i=t.imageryTexCoordAttributesPerProjection();for(let o of i)e._addImageryTexCoordAttributeToRenderResources(o,n)}static _addImageryTexCoordAttributeToRenderResources(t,n){let i=kt.getNumberOfComponents(t.type),o={index:n.attributeIndex++,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,count:t.count,componentsPerAttribute:i,componentDatatype:t.componentDatatype,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};n.attributes.push(o)}static _processImageryInputs(t,n,i,o){let r=n.shaderBuilder,s=e._computeImageryFlags(t),a=i.length;r.addDefine("HAS_IMAGERY"),r.addDefine(`IMAGERY_TEXTURE_UNITS ${a}`),e._addAttributes(r,o),e._defineUniforms(r,s),e._buildSampleAndBlendFunction(r,s),e._createMainImageryShader(r,i,s);let c=n.uniformMap,d=e._createImageryUniforms(i);e._setImageryUniforms(c,d)}static _addAttributes(t,n){for(let r=0;r<n;r++)t.addAttribute("vec2",`a_imagery_texCoord_${r}`),t.addVarying("vec2",`v_imagery_texCoord_${r}`);let i="initializeImageryAttributes",o=`void ${i}()`;t.addFunction(i,o,be.VERTEX);for(let r=0;r<n;r++)t.addFunctionLines(i,[`v_imagery_texCoord_${r} = a_imagery_texCoord_${r};`])}static _computeImageryFlags(t){let n=new $w;for(let i=0;i<t.length;i++){let o=t[i];n.alpha|=o.alpha!==1,n.brightness|=o.brightness!==is.DEFAULT_BRIGHTNESS,n.contrast|=o.contrast!==is.DEFAULT_CONTRAST,n.hue|=o.hue!==is.DEFAULT_HUE,n.saturation|=o.saturation!==is.DEFAULT_SATURATION,n.gamma|=o.gamma!==is.DEFAULT_GAMMA;let r=l(o.colorToAlpha)&&o.colorToAlphaThreshold>0;n.colorToAlpha|=r}return n}static _defineUniforms(t,n){t.addUniform("sampler2D","u_imageryTextures[IMAGERY_TEXTURE_UNITS]",be.FRAGMENT),t.addUniform("vec4","u_imageryTextureCoordinateRectangle[IMAGERY_TEXTURE_UNITS]",be.FRAGMENT),t.addUniform("vec4","u_imageryTextureTranslationAndScale[IMAGERY_TEXTURE_UNITS]",be.FRAGMENT),n.alpha&&t.addUniform("float","u_imageryTextureAlpha[IMAGERY_TEXTURE_UNITS]",be.FRAGMENT),n.brightness&&t.addUniform("float","u_imageryTextureBrightness[IMAGERY_TEXTURE_UNITS]",be.FRAGMENT),n.contrast&&t.addUniform("float","u_imageryTextureContrast[IMAGERY_TEXTURE_UNITS]",be.FRAGMENT),n.hue&&t.addUniform("float","u_imageryTextureHue[IMAGERY_TEXTURE_UNITS]",be.FRAGMENT),n.saturation&&t.addUniform("float","u_imageryTextureSaturation[IMAGERY_TEXTURE_UNITS]",be.FRAGMENT),n.gamma&&t.addUniform("float","u_imageryTextureOneOverGamma[IMAGERY_TEXTURE_UNITS]",be.FRAGMENT),n.colorToAlpha&&t.addUniform("vec4","u_imageryTextureColorToAlpha[IMAGERY_TEXTURE_UNITS]",be.FRAGMENT)}static _createSampleAndBlendFunctionSignature(t){let n="sampleAndBlend",i=[];i.push("vec4 previousColor"),i.push("sampler2D textureToSample"),i.push("vec2 textureCoordinates"),i.push("vec4 textureCoordinateRectangle"),i.push("vec4 textureCoordinateTranslationAndScale"),t.alpha&&i.push("float textureAlpha"),t.brightness&&i.push("float textureBrightness"),t.contrast&&i.push("float textureContrast"),t.hue&&i.push("float textureHue"),t.saturation&&i.push("float textureSaturation"),t.gamma&&i.push("float textureOneOverGamma"),t.colorToAlpha&&i.push("vec4 colorToAlpha");let o=i.join(", ");return`vec4 ${n}(${o})`}static _buildSampleAndBlendFunction(t,n){let i="sampleAndBlend",o=e._createSampleAndBlendFunctionSignature(n);t.addFunction(i,o,be.FRAGMENT),t.addFunctionLines(i,["float effectiveAlpha = 1.0;"]),n.alpha&&t.addFunctionLines(i,["effectiveAlpha = textureAlpha;"]),t.addFunctionLines(i,["if (textureCoordinates.x < textureCoordinateRectangle.x) effectiveAlpha = 0.0;","if (textureCoordinates.x > textureCoordinateRectangle.z) effectiveAlpha = 0.0;","if (textureCoordinates.y < textureCoordinateRectangle.y) effectiveAlpha = 0.0;","if (textureCoordinates.y > textureCoordinateRectangle.w) effectiveAlpha = 0.0;","vec2 translation = textureCoordinateTranslationAndScale.xy;","vec2 scale = textureCoordinateTranslationAndScale.zw;","vec2 effectiveTextureCoordinates = textureCoordinates * scale + translation;","vec4 value = texture(textureToSample, effectiveTextureCoordinates);","value = czm_srgbToLinear(value);","vec3 color = value.rgb;","float alpha = value.a;"]),n.colorToAlpha&&t.addFunctionLines(i,["vec3 colorDiff = abs(color.rgb - colorToAlpha.rgb);","colorDiff.r = czm_maximumComponent(colorDiff);","alpha = czm_branchFreeTernary(colorDiff.r < colorToAlpha.a, 0.0, alpha);"]),n.gamma?t.addFunctionLines(i,["color = pow(color, vec3(textureOneOverGamma));"]):t.addFunctionLines(i,["vec4 tempColor = czm_gammaCorrect(vec4(color, alpha));","color = tempColor.rgb;","alpha = tempColor.a;"]),n.brightness&&t.addFunctionLines(i,["color = mix(vec3(0.0), color, textureBrightness);"]),n.contrast&&t.addFunctionLines(i,["color = mix(vec3(0.5), color, textureContrast);"]),n.hue&&t.addFunctionLines(i,["color = czm_hue(color, textureHue);"]),n.saturation&&t.addFunctionLines(i,["color = czm_saturation(color, textureSaturation);"]),t.addFunctionLines(i,["float sourceAlpha = alpha * effectiveAlpha;","float outAlpha = mix(previousColor.a, 1.0, sourceAlpha);","outAlpha += sign(outAlpha) - 1.0;","vec3 outColor = mix(previousColor.rgb * previousColor.a, color, sourceAlpha) / outAlpha;","vec4 result = vec4(outColor, max(outAlpha, 0.0));"]),NOe&&t.addFunctionLines(i,["if (abs(textureCoordinates.x - textureCoordinateRectangle.x) < (1.0/256.0) || "," abs(textureCoordinates.x - textureCoordinateRectangle.z) < (1.0/256.0) || "," abs(textureCoordinates.y - textureCoordinateRectangle.y) < (1.0/256.0) || "," abs(textureCoordinates.y - textureCoordinateRectangle.w) < (1.0/256.0))","{"," result = vec4(1.0, 0.0, 0.0, effectiveAlpha);","}"]),t.addFunctionLines(i,["return result;"])}static _createSampleAndBlendCallArguments(t,n,i){let o=`v_imagery_texCoord_${n}`,r=[];return r.push("blendedBaseColor"),r.push(`u_imageryTextures[${i}]`),r.push(`${o}`),r.push(`u_imageryTextureCoordinateRectangle[${i}]`),r.push(`u_imageryTextureTranslationAndScale[${i}]`),t.alpha&&r.push(`u_imageryTextureAlpha[${i}]`),t.brightness&&r.push(`u_imageryTextureBrightness[${i}]`),t.contrast&&r.push(`u_imageryTextureContrast[${i}]`),t.hue&&r.push(`u_imageryTextureHue[${i}]`),t.saturation&&r.push(`u_imageryTextureSaturation[${i}]`),t.gamma&&r.push(`u_imageryTextureOneOverGamma[${i}]`),t.colorToAlpha&&r.push(`u_imageryTextureColorToAlpha[${i}]`),r.join(", ")}static _createMainImageryShader(t,n,i){let o="blendBaseColorWithImagery";t.addFunction(o,"vec4 blendBaseColorWithImagery(vec4 baseColorWithAlpha)",be.FRAGMENT),t.addFunctionLines(o,["vec4 blendedBaseColor = baseColorWithAlpha;"]);for(let r=0;r<n.length;r++){let a=n[r].imageryTexCoordAttributeSetIndex,c=e._createSampleAndBlendCallArguments(i,a,r);t.addFunctionLines(o,[`blendedBaseColor = sampleAndBlend(${c});`])}t.addFunctionLines(o,["return blendedBaseColor;"])}static _createImageryUniforms(t){let n=t.length,i={};i.imageryTextures=Array(n),i.imageryTextureCoordinateRectangle=Array(n),i.imageryTextureTranslationAndScale=Array(n),i.imageryTextureAlpha=Array(n),i.imageryTextureBrightness=Array(n),i.imageryTextureContrast=Array(n),i.imageryTextureHue=Array(n),i.imageryTextureSaturation=Array(n),i.imageryTextureOneOverGamma=Array(n),i.imageryTextureColorToAlpha=Array(n);for(let o=0;o<n;o++){let r=t[o],s=r.imageryLayer,a=r.texture,c=r.textureCoordinateRectangle,d=r.textureTranslationAndScale;i.imageryTextures[o]=a,i.imageryTextureTranslationAndScale[o]=d,i.imageryTextureCoordinateRectangle[o]=c,i.imageryTextureAlpha[o]=s.alpha,i.imageryTextureBrightness[o]=s.brightness,i.imageryTextureContrast[o]=s.contrast,i.imageryTextureHue[o]=s.hue,i.imageryTextureSaturation[o]=s.saturation,i.imageryTextureOneOverGamma[o]=1/s.gamma;let u=i.imageryTextureColorToAlpha[o];if(l(u)||(u=new ce,i.imageryTextureColorToAlpha[o]=u),l(s.colorToAlpha)&&s.colorToAlphaThreshold>0){let p=s.colorToAlpha;u.x=p.red,u.y=p.green,u.z=p.blue,u.w=s.colorToAlphaThreshold}else u.w=-1}return i}static _setImageryUniforms(t,n){for(let i in n)if(n.hasOwnProperty(i)){let o=`u_${i}`;t[o]=function(){return n[i]}}}static _createImageryInputs(t,n,i){let o=[];for(let r=0;r<t.length;r++){let s=t.get(r);if(!s.show)continue;let a=i[r],d=n.mappedPositionsForImageryLayer(s).cartographicBoundingRectangle,u=n.coveragesForImageryLayer(s);for(let h=0;h<u.length;h++){let p=u[h],g=e._createImageryInput(s,p,d,a);l(g)&&o.push(g)}}return o}static _createImageryInput(t,n,i,o){let r=n.imagery;if(r.state===Jn.FAILED||r.state===Jn.INVALID)return;let s=r.textureWebMercator;if(!l(s)&&(s=r.texture,!l(s))){r.state===Jn.READY&&console.log(`Imagery at ${n.x}, ${n.y} (level ${n.level}) does not have any texture - state ${r.state}`);return}let a=e._computeTextureTranslationAndScale(t,i,r.rectangle),c=n.textureCoordinateRectangle,d=new ce(c.minX,c.minY,c.maxX,c.maxY);return new nX(t,s,a,d,o)}static _computeTextureTranslationAndScale(t,n,i){let o=t.imageryProvider.tilingScheme,r=o.rectangleToNativeRectangle(n,DOe),s=o.rectangleToNativeRectangle(i,QOe);return e._computeTextureTranslationAndScaleFromNative(r,s)}static _computeTextureTranslationAndScaleFromNative(t,n){let i=1/n.width,o=1/n.height,r=t.west-n.west,s=t.south-n.south,a=r*i,c=s*o,d=t.width*i,u=t.height*o;return new ce(a,c,d,u)}static _computeIndexMapping(t,n){let i=[],o=t.length;for(let r=0;r<o;r++){let s=t[r],a=n.indexOf(s);i.push(a)}return i}},iX=yK;var GWn=y(C(),1);var IWn=y(C(),1),oX=`#ifdef USE_IBL_LIGHTING +vec3 computeIBL(vec3 position, vec3 normal, vec3 lightDirection, vec3 lightColorHdr, czm_modelMaterial material) +{ + #if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL) + // Environment maps were provided, use them for IBL + vec3 viewDirection = -normalize(position); + vec3 iblColor = textureIBL(viewDirection, normal, material); + return iblColor; + #endif + + return vec3(0.0); +} +#endif + +#ifdef USE_CLEARCOAT +vec3 addClearcoatReflection(vec3 baseLayerColor, vec3 position, vec3 lightDirection, vec3 lightColorHdr, czm_modelMaterial material) +{ + vec3 viewDirection = -normalize(position); + vec3 halfwayDirection = normalize(viewDirection + lightDirection); + vec3 normal = material.clearcoatNormal; + float NdotL = clamp(dot(normal, lightDirection), 0.001, 1.0); + + // clearcoatF0 = vec3(pow((ior - 1.0) / (ior + 1.0), 2.0)), but without KHR_materials_ior, ior is a constant 1.5. + vec3 f0 = vec3(0.04); + vec3 f90 = vec3(1.0); + // Note: clearcoat Fresnel computed with dot(n, v) instead of dot(v, h). + // This is to make it energy conserving with a simple layering function. + float NdotV = clamp(dot(normal, viewDirection), 0.0, 1.0); + vec3 F = fresnelSchlick2(f0, f90, NdotV); + + // compute specular reflection from direct lighting + float roughness = material.clearcoatRoughness; + float alphaRoughness = roughness * roughness; + float directStrength = computeDirectSpecularStrength(normal, lightDirection, viewDirection, halfwayDirection, alphaRoughness); + vec3 directReflection = F * directStrength * NdotL; + vec3 color = lightColorHdr * directReflection; + + #ifdef SPECULAR_IBL + // Find the direction in which to sample the environment map + vec3 reflectMC = normalize(model_iblReferenceFrameMatrix * reflect(-viewDirection, normal)); + vec3 iblColor = computeSpecularIBL(reflectMC, NdotV, f0, roughness); + color += iblColor * material.occlusion; + #endif + + float clearcoatFactor = material.clearcoatFactor; + vec3 clearcoatColor = color * clearcoatFactor; + + // Dim base layer based on transmission loss through clearcoat + return baseLayerColor * (1.0 - clearcoatFactor * F) + clearcoatColor; +} +#endif + +#if defined(LIGHTING_PBR) && defined(HAS_NORMALS) +vec3 computePbrLighting(in czm_modelMaterial material, in vec3 position) +{ + #ifdef USE_CUSTOM_LIGHT_COLOR + vec3 lightColorHdr = model_lightColorHdr; + #else + vec3 lightColorHdr = czm_lightColorHdr; + #endif + + vec3 viewDirection = -normalize(position); + vec3 normal = material.normalEC; + vec3 lightDirection = normalize(czm_lightDirectionEC); + + vec3 directLighting = czm_pbrLighting(viewDirection, normal, lightDirection, material); + vec3 directColor = lightColorHdr * directLighting; + + // Accumulate colors from base layer + vec3 color = directColor + material.emissive; + #ifdef USE_IBL_LIGHTING + color += computeIBL(position, normal, lightDirection, lightColorHdr, material); + #endif + + #ifdef USE_CLEARCOAT + color = addClearcoatReflection(color, position, lightDirection, lightColorHdr, material); + #endif + + return color; +} +#endif + +/** + * Compute the material color under the current lighting conditions. + * All other material properties are passed through so further stages + * have access to them. + * + * @param {czm_modelMaterial} material The material properties from {@MaterialStageFS} + * @param {ProcessedAttributes} attributes + */ +void lightingStage(inout czm_modelMaterial material, ProcessedAttributes attributes) +{ + #ifdef LIGHTING_PBR + #ifdef HAS_NORMALS + vec3 color = computePbrLighting(material, attributes.positionEC); + #else + vec3 color = material.diffuse * material.occlusion + material.emissive; + #endif + // In HDR mode, the frame buffer is in linear color space. The + // post-processing stages (see PostProcessStageCollection) will handle + // tonemapping. However, if HDR is not enabled, we must tonemap else large + // values may be clamped to 1.0 + #ifndef HDR + color = czm_pbrNeutralTonemapping(color); + #endif + #else // unlit + vec3 color = material.diffuse; + #endif + + #ifdef HAS_POINT_CLOUD_COLOR_STYLE + // The colors resulting from point cloud styles are adjusted differently. + color = czm_gammaCorrect(color); + #elif !defined(HDR) + // If HDR is not enabled, the frame buffer stores sRGB colors rather than + // linear colors so the linear value must be converted. + color = czm_linearToSrgb(color); + #endif + + material.diffuse = color; +} +`;var EWn=y(C(),1),UOe={UNLIT:0,PBR:1},jf=Object.freeze(UOe);var ede={name:"LightingPipelineStage"};ede.process=function(e,t){let{model:n,lightingOptions:i,shaderBuilder:o}=e;if(l(n.lightColor)){o.addDefine("USE_CUSTOM_LIGHT_COLOR",void 0,be.FRAGMENT),o.addUniform("vec3","model_lightColorHdr",be.FRAGMENT);let s=e.uniformMap;s.model_lightColorHdr=function(){return n.lightColor}}let{lightingModel:r}=i;r===jf.PBR?o.addDefine("LIGHTING_PBR",void 0,be.FRAGMENT):o.addDefine("LIGHTING_UNLIT",void 0,be.FRAGMENT),o.addFragmentLines(oX)};var rX=ede;var OWn=y(C(),1);var BWn=y(C(),1),sX=`// If the style color is white, it implies the feature has not been styled. +bool isDefaultStyleColor(vec3 color) +{ + return all(greaterThan(color, vec3(1.0 - czm_epsilon3))); +} + +vec3 blend(vec3 sourceColor, vec3 styleColor, float styleColorBlend) +{ + vec3 blendColor = mix(sourceColor, styleColor, styleColorBlend); + vec3 color = isDefaultStyleColor(styleColor.rgb) ? sourceColor : blendColor; + return color; +} + +vec2 computeTextureTransform(vec2 texCoord, mat3 textureTransform) +{ + return vec2(textureTransform * vec3(texCoord, 1.0)); +} + +#ifdef HAS_NORMAL_TEXTURE +vec2 getNormalTexCoords() +{ + vec2 texCoord = TEXCOORD_NORMAL; + #ifdef HAS_NORMAL_TEXTURE_TRANSFORM + texCoord = vec2(u_normalTextureTransform * vec3(texCoord, 1.0)); + #endif + return texCoord; +} +#endif + +#if defined(HAS_NORMAL_TEXTURE) || defined(HAS_CLEARCOAT_NORMAL_TEXTURE) +vec3 computeTangent(in vec3 position, in vec2 normalTexCoords) +{ + vec2 tex_dx = dFdx(normalTexCoords); + vec2 tex_dy = dFdy(normalTexCoords); + float determinant = tex_dx.x * tex_dy.y - tex_dy.x * tex_dx.y; + vec3 tangent = tex_dy.t * dFdx(position) - tex_dx.t * dFdy(position); + return tangent / determinant; +} +#endif + +#ifdef USE_ANISOTROPY +struct NormalInfo { + vec3 tangent; + vec3 bitangent; + vec3 normal; + vec3 geometryNormal; +}; + +NormalInfo getNormalInfo(ProcessedAttributes attributes) +{ + vec3 geometryNormal = attributes.normalEC; + #ifdef HAS_NORMAL_TEXTURE + vec2 normalTexCoords = getNormalTexCoords(); + #endif + + #ifdef HAS_BITANGENTS + vec3 tangent = attributes.tangentEC; + vec3 bitangent = attributes.bitangentEC; + #else // Assume HAS_NORMAL_TEXTURE + vec3 tangent = computeTangent(attributes.positionEC, normalTexCoords); + tangent = normalize(tangent - geometryNormal * dot(geometryNormal, tangent)); + vec3 bitangent = normalize(cross(geometryNormal, tangent)); + #endif + + #ifdef HAS_NORMAL_TEXTURE + mat3 tbn = mat3(tangent, bitangent, geometryNormal); + vec3 normalSample = texture(u_normalTexture, normalTexCoords).rgb; + normalSample = 2.0 * normalSample - 1.0; + #ifdef HAS_NORMAL_TEXTURE_SCALE + normalSample.xy *= u_normalTextureScale; + #endif + vec3 normal = normalize(tbn * normalSample); + #else + vec3 normal = geometryNormal; + #endif + + #ifdef HAS_DOUBLE_SIDED_MATERIAL + if (czm_backFacing()) { + tangent *= -1.0; + bitangent *= -1.0; + normal *= -1.0; + geometryNormal *= -1.0; + } + #endif + + NormalInfo normalInfo; + normalInfo.tangent = tangent; + normalInfo.bitangent = bitangent; + normalInfo.normal = normal; + normalInfo.geometryNormal = geometryNormal; + + return normalInfo; +} +#endif + +#if defined(HAS_NORMAL_TEXTURE) && !defined(HAS_WIREFRAME) +vec3 getNormalFromTexture(ProcessedAttributes attributes, vec3 geometryNormal) +{ + vec2 normalTexCoords = getNormalTexCoords(); + + // If HAS_BITANGENTS is set, then HAS_TANGENTS is also set + #ifdef HAS_BITANGENTS + vec3 t = attributes.tangentEC; + vec3 b = attributes.bitangentEC; + #else + vec3 t = computeTangent(attributes.positionEC, normalTexCoords); + t = normalize(t - geometryNormal * dot(geometryNormal, t)); + vec3 b = normalize(cross(geometryNormal, t)); + #endif + + mat3 tbn = mat3(t, b, geometryNormal); + vec3 normalSample = texture(u_normalTexture, normalTexCoords).rgb; + normalSample = 2.0 * normalSample - 1.0; + #ifdef HAS_NORMAL_TEXTURE_SCALE + normalSample.xy *= u_normalTextureScale; + #endif + return normalize(tbn * normalSample); +} +#endif + +#ifdef HAS_CLEARCOAT_NORMAL_TEXTURE +vec3 getClearcoatNormalFromTexture(ProcessedAttributes attributes, vec3 geometryNormal) +{ + vec2 normalTexCoords = TEXCOORD_CLEARCOAT_NORMAL; + #ifdef HAS_CLEARCOAT_NORMAL_TEXTURE_TRANSFORM + normalTexCoords = vec2(u_clearcoatNormalTextureTransform * vec3(normalTexCoords, 1.0)); + #endif + + // If HAS_BITANGENTS is set, then HAS_TANGENTS is also set + #ifdef HAS_BITANGENTS + vec3 t = attributes.tangentEC; + vec3 b = attributes.bitangentEC; + #else + vec3 t = computeTangent(attributes.positionEC, normalTexCoords); + t = normalize(t - geometryNormal * dot(geometryNormal, t)); + vec3 b = normalize(cross(geometryNormal, t)); + #endif + + mat3 tbn = mat3(t, b, geometryNormal); + vec3 normalSample = texture(u_clearcoatNormalTexture, normalTexCoords).rgb; + normalSample = 2.0 * normalSample - 1.0; + #ifdef HAS_CLEARCOAT_NORMAL_TEXTURE_SCALE + normalSample.xy *= u_clearcoatNormalTextureScale; + #endif + return normalize(tbn * normalSample); +} +#endif + +#ifdef HAS_NORMALS +vec3 computeNormal(ProcessedAttributes attributes) +{ + // Geometry normal. This is already normalized + vec3 normal = attributes.normalEC; + + #if defined(HAS_NORMAL_TEXTURE) && !defined(HAS_WIREFRAME) + normal = getNormalFromTexture(attributes, normal); + #endif + + #ifdef HAS_DOUBLE_SIDED_MATERIAL + if (czm_backFacing()) { + normal = -normal; + } + #endif + + return normal; +} +#endif + +#ifdef HAS_BASE_COLOR_TEXTURE +vec4 getBaseColorFromTexture() +{ + vec2 baseColorTexCoords = TEXCOORD_BASE_COLOR; + #ifdef HAS_BASE_COLOR_TEXTURE_TRANSFORM + baseColorTexCoords = computeTextureTransform(baseColorTexCoords, u_baseColorTextureTransform); + #endif + + vec4 baseColorWithAlpha = czm_srgbToLinear(texture(u_baseColorTexture, baseColorTexCoords)); + + #ifdef HAS_BASE_COLOR_FACTOR + baseColorWithAlpha *= u_baseColorFactor; + #endif + + return baseColorWithAlpha; +} +#endif + +#ifdef HAS_EMISSIVE_TEXTURE +vec3 getEmissiveFromTexture() +{ + vec2 emissiveTexCoords = TEXCOORD_EMISSIVE; + #ifdef HAS_EMISSIVE_TEXTURE_TRANSFORM + emissiveTexCoords = computeTextureTransform(emissiveTexCoords, u_emissiveTextureTransform); + #endif + + vec3 emissive = czm_srgbToLinear(texture(u_emissiveTexture, emissiveTexCoords).rgb); + #ifdef HAS_EMISSIVE_FACTOR + emissive *= u_emissiveFactor; + #endif + + return emissive; +} +#endif + +#if defined(LIGHTING_PBR) && defined(USE_SPECULAR_GLOSSINESS) +void setSpecularGlossiness(inout czm_modelMaterial material) +{ + #ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE + vec2 specularGlossinessTexCoords = TEXCOORD_SPECULAR_GLOSSINESS; + #ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE_TRANSFORM + specularGlossinessTexCoords = computeTextureTransform(specularGlossinessTexCoords, u_specularGlossinessTextureTransform); + #endif + + vec4 specularGlossiness = czm_srgbToLinear(texture(u_specularGlossinessTexture, specularGlossinessTexCoords)); + vec3 specular = specularGlossiness.rgb; + float glossiness = specularGlossiness.a; + #ifdef HAS_LEGACY_SPECULAR_FACTOR + specular *= u_legacySpecularFactor; + #endif + + #ifdef HAS_GLOSSINESS_FACTOR + glossiness *= u_glossinessFactor; + #endif + #else + #ifdef HAS_LEGACY_SPECULAR_FACTOR + vec3 specular = clamp(u_legacySpecularFactor, vec3(0.0), vec3(1.0)); + #else + vec3 specular = vec3(1.0); + #endif + + #ifdef HAS_GLOSSINESS_FACTOR + float glossiness = clamp(u_glossinessFactor, 0.0, 1.0); + #else + float glossiness = 1.0; + #endif + #endif + + #ifdef HAS_DIFFUSE_TEXTURE + vec2 diffuseTexCoords = TEXCOORD_DIFFUSE; + #ifdef HAS_DIFFUSE_TEXTURE_TRANSFORM + diffuseTexCoords = computeTextureTransform(diffuseTexCoords, u_diffuseTextureTransform); + #endif + + vec4 diffuse = czm_srgbToLinear(texture(u_diffuseTexture, diffuseTexCoords)); + #ifdef HAS_DIFFUSE_FACTOR + diffuse *= u_diffuseFactor; + #endif + #elif defined(HAS_DIFFUSE_FACTOR) + vec4 diffuse = clamp(u_diffuseFactor, vec4(0.0), vec4(1.0)); + #else + vec4 diffuse = vec4(1.0); + #endif + + material.diffuse = diffuse.rgb * (1.0 - czm_maximumComponent(specular)); + // the specular glossiness extension's alpha overrides anything set + // by the base material. + material.alpha = diffuse.a; + + material.specular = specular; + + // glossiness is the opposite of roughness, but easier for artists to use. + material.roughness = 1.0 - glossiness; +} +#elif defined(LIGHTING_PBR) +float setMetallicRoughness(inout czm_modelMaterial material) +{ + #ifdef HAS_METALLIC_ROUGHNESS_TEXTURE + vec2 metallicRoughnessTexCoords = TEXCOORD_METALLIC_ROUGHNESS; + #ifdef HAS_METALLIC_ROUGHNESS_TEXTURE_TRANSFORM + metallicRoughnessTexCoords = computeTextureTransform(metallicRoughnessTexCoords, u_metallicRoughnessTextureTransform); + #endif + + vec3 metallicRoughness = texture(u_metallicRoughnessTexture, metallicRoughnessTexCoords).rgb; + float metalness = clamp(metallicRoughness.b, 0.0, 1.0); + float roughness = clamp(metallicRoughness.g, 0.0, 1.0); + #ifdef HAS_METALLIC_FACTOR + metalness = clamp(metalness * u_metallicFactor, 0.0, 1.0); + #endif + + #ifdef HAS_ROUGHNESS_FACTOR + roughness = clamp(roughness * u_roughnessFactor, 0.0, 1.0); + #endif + #else + #ifdef HAS_METALLIC_FACTOR + float metalness = clamp(u_metallicFactor, 0.0, 1.0); + #else + float metalness = 1.0; + #endif + + #ifdef HAS_ROUGHNESS_FACTOR + float roughness = clamp(u_roughnessFactor, 0.0, 1.0); + #else + float roughness = 1.0; + #endif + #endif + + // dielectrics use f0 = 0.04, metals use albedo as f0 + const vec3 REFLECTANCE_DIELECTRIC = vec3(0.04); + vec3 f0 = mix(REFLECTANCE_DIELECTRIC, material.baseColor.rgb, metalness); + + material.specular = f0; + + // diffuse only applies to dielectrics. + material.diffuse = mix(material.baseColor.rgb, vec3(0.0), metalness); + + // This is perceptual roughness. The square of this value is used for direct lighting + material.roughness = roughness; + + return metalness; +} +#ifdef USE_SPECULAR +void setSpecular(inout czm_modelMaterial material, in float metalness) +{ + #ifdef HAS_SPECULAR_TEXTURE + vec2 specularTexCoords = TEXCOORD_SPECULAR; + #ifdef HAS_SPECULAR_TEXTURE_TRANSFORM + specularTexCoords = computeTextureTransform(specularTexCoords, u_specularTextureTransform); + #endif + float specularWeight = texture(u_specularTexture, specularTexCoords).a; + #ifdef HAS_SPECULAR_FACTOR + specularWeight *= u_specularFactor; + #endif + #else + #ifdef HAS_SPECULAR_FACTOR + float specularWeight = u_specularFactor; + #else + float specularWeight = 1.0; + #endif + #endif + + #ifdef HAS_SPECULAR_COLOR_TEXTURE + vec2 specularColorTexCoords = TEXCOORD_SPECULAR_COLOR; + #ifdef HAS_SPECULAR_COLOR_TEXTURE_TRANSFORM + specularColorTexCoords = computeTextureTransform(specularColorTexCoords, u_specularColorTextureTransform); + #endif + vec3 specularColorSample = texture(u_specularColorTexture, specularColorTexCoords).rgb; + vec3 specularColorFactor = czm_srgbToLinear(specularColorSample); + #ifdef HAS_SPECULAR_COLOR_FACTOR + specularColorFactor *= u_specularColorFactor; + #endif + #else + #ifdef HAS_SPECULAR_COLOR_FACTOR + vec3 specularColorFactor = u_specularColorFactor; + #else + vec3 specularColorFactor = vec3(1.0); + #endif + #endif + material.specularWeight = specularWeight; + vec3 f0 = material.specular; + vec3 dielectricSpecularF0 = min(f0 * specularColorFactor, vec3(1.0)); + material.specular = mix(dielectricSpecularF0, material.baseColor.rgb, metalness); +} +#endif +#ifdef USE_ANISOTROPY +void setAnisotropy(inout czm_modelMaterial material, in NormalInfo normalInfo) +{ + mat2 rotation = mat2(u_anisotropy.xy, -u_anisotropy.y, u_anisotropy.x); + float anisotropyStrength = u_anisotropy.z; + + vec2 direction = vec2(1.0, 0.0); + #ifdef HAS_ANISOTROPY_TEXTURE + vec2 anisotropyTexCoords = TEXCOORD_ANISOTROPY; + #ifdef HAS_ANISOTROPY_TEXTURE_TRANSFORM + anisotropyTexCoords = computeTextureTransform(anisotropyTexCoords, u_anisotropyTextureTransform); + #endif + vec3 anisotropySample = texture(u_anisotropyTexture, anisotropyTexCoords).rgb; + direction = anisotropySample.rg * 2.0 - vec2(1.0); + anisotropyStrength *= anisotropySample.b; + #endif + + direction = rotation * direction; + mat3 tbn = mat3(normalInfo.tangent, normalInfo.bitangent, normalInfo.normal); + vec3 anisotropicT = tbn * normalize(vec3(direction, 0.0)); + vec3 anisotropicB = cross(normalInfo.geometryNormal, anisotropicT); + + material.anisotropicT = anisotropicT; + material.anisotropicB = anisotropicB; + material.anisotropyStrength = anisotropyStrength; +} +#endif +#ifdef USE_CLEARCOAT +void setClearcoat(inout czm_modelMaterial material, in ProcessedAttributes attributes) +{ + #ifdef HAS_CLEARCOAT_TEXTURE + vec2 clearcoatTexCoords = TEXCOORD_CLEARCOAT; + #ifdef HAS_CLEARCOAT_TEXTURE_TRANSFORM + clearcoatTexCoords = computeTextureTransform(clearcoatTexCoords, u_clearcoatTextureTransform); + #endif + float clearcoatFactor = texture(u_clearcoatTexture, clearcoatTexCoords).r; + #ifdef HAS_CLEARCOAT_FACTOR + clearcoatFactor *= u_clearcoatFactor; + #endif + #else + #ifdef HAS_CLEARCOAT_FACTOR + float clearcoatFactor = u_clearcoatFactor; + #else + // PERFORMANCE_IDEA: this case should turn the whole extension off + float clearcoatFactor = 0.0; + #endif + #endif + + #ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE + vec2 clearcoatRoughnessTexCoords = TEXCOORD_CLEARCOAT_ROUGHNESS; + #ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE_TRANSFORM + clearcoatRoughnessTexCoords = computeTextureTransform(clearcoatRoughnessTexCoords, u_clearcoatRoughnessTextureTransform); + #endif + float clearcoatRoughness = texture(u_clearcoatRoughnessTexture, clearcoatRoughnessTexCoords).g; + #ifdef HAS_CLEARCOAT_ROUGHNESS_FACTOR + clearcoatRoughness *= u_clearcoatRoughnessFactor; + #endif + #else + #ifdef HAS_CLEARCOAT_ROUGHNESS_FACTOR + float clearcoatRoughness = u_clearcoatRoughnessFactor; + #else + float clearcoatRoughness = 0.0; + #endif + #endif + + material.clearcoatFactor = clearcoatFactor; + // This is perceptual roughness. The square of this value is used for direct lighting + material.clearcoatRoughness = clearcoatRoughness; + #ifdef HAS_CLEARCOAT_NORMAL_TEXTURE + material.clearcoatNormal = getClearcoatNormalFromTexture(attributes, attributes.normalEC); + #else + material.clearcoatNormal = attributes.normalEC; + #endif +} +#endif +#endif + +void materialStage(inout czm_modelMaterial material, ProcessedAttributes attributes, SelectedFeature feature) +{ + #ifdef USE_ANISOTROPY + NormalInfo normalInfo = getNormalInfo(attributes); + material.normalEC = normalInfo.normal; + #elif defined(HAS_NORMALS) + material.normalEC = computeNormal(attributes); + #endif + + vec4 baseColorWithAlpha = vec4(1.0); + // Regardless of whether we use PBR, set a base color + #ifdef HAS_BASE_COLOR_TEXTURE + baseColorWithAlpha = getBaseColorFromTexture(); + #elif defined(HAS_BASE_COLOR_FACTOR) + baseColorWithAlpha = u_baseColorFactor; + #endif + + #ifdef HAS_IMAGERY + baseColorWithAlpha = blendBaseColorWithImagery(baseColorWithAlpha); + #endif // HAS_IMAGERY + + #ifdef HAS_POINT_CLOUD_COLOR_STYLE + baseColorWithAlpha = v_pointCloudColor; + #elif defined(HAS_COLOR_0) + vec4 color = attributes.color_0; + // .pnts files store colors in the sRGB color space + #ifdef HAS_SRGB_COLOR + color = czm_srgbToLinear(color); + #endif + baseColorWithAlpha *= color; + #endif + + #ifdef USE_CPU_STYLING + baseColorWithAlpha.rgb = blend(baseColorWithAlpha.rgb, feature.color.rgb, model_colorBlend); + #endif + material.baseColor = baseColorWithAlpha; + material.diffuse = baseColorWithAlpha.rgb; + material.alpha = baseColorWithAlpha.a; + + #ifdef HAS_OCCLUSION_TEXTURE + vec2 occlusionTexCoords = TEXCOORD_OCCLUSION; + #ifdef HAS_OCCLUSION_TEXTURE_TRANSFORM + occlusionTexCoords = computeTextureTransform(occlusionTexCoords, u_occlusionTextureTransform); + #endif + material.occlusion = texture(u_occlusionTexture, occlusionTexCoords).r; + #endif + + #ifdef HAS_EMISSIVE_TEXTURE + material.emissive = getEmissiveFromTexture(); + #elif defined(HAS_EMISSIVE_FACTOR) + material.emissive = u_emissiveFactor; + #endif + + #if defined(LIGHTING_PBR) && defined(USE_SPECULAR_GLOSSINESS) + setSpecularGlossiness(material); + #elif defined(LIGHTING_PBR) + float metalness = setMetallicRoughness(material); + #ifdef USE_SPECULAR + setSpecular(material, metalness); + #endif + #ifdef USE_ANISOTROPY + setAnisotropy(material, normalInfo); + #endif + #ifdef USE_CLEARCOAT + setClearcoat(material, attributes); + #endif + #endif +} +`;var{Material:kOe,MetallicRoughness:CK,SpecularGlossiness:xK,Specular:tde,Clearcoat:nde}=Tn,ide={name:"MaterialPipelineStage",_processTexture:cd,_processTextureTransform:ode};ide.process=function(e,t,n){let i=t.material,{model:o,uniformMap:r,shaderBuilder:s}=e,a=l(o.classificationType),c=a,{defaultTexture:d,defaultNormalTexture:u,defaultEmissiveTexture:h}=n.context;OOe(i,r,s,d,u,h,c),l(i.specularGlossiness)?HOe(i.specularGlossiness,r,s,d,c):(l(i.specular)&&Mt.supportedExtensions.KHR_materials_specular&&zOe(i.specular,r,s,d,c),l(i.anisotropy)&&Mt.supportedExtensions.KHR_materials_anisotropy&&JOe(i.anisotropy,r,s,d,c),l(i.clearcoat)&&Mt.supportedExtensions.KHR_materials_clearcoat&&jOe(i.clearcoat,r,s,d,c),qOe(i.metallicRoughness,r,s,d,c));let p=Mt.getAttributeBySemantic(t,lt.NORMAL),g=l(o.pointCloudShading)&&!o.pointCloudShading.normalShading,f=e.lightingOptions;i.unlit||!p||a||g?f.lightingModel=jf.UNLIT:f.lightingModel=jf.PBR;let b=o.backFaceCulling&&!i.doubleSided;e.renderStateOptions.cull.enabled=b;let x=e.alphaOptions;i.alphaMode===Yf.BLEND?x.pass=Ge.TRANSLUCENT:i.alphaMode===Yf.MASK&&(x.alphaCutoff=i.alphaCutoff),s.addFragmentLines(sX),i.doubleSided&&s.addDefine("HAS_DOUBLE_SIDED_MATERIAL",void 0,be.BOTH)};function ode(e,t,n,i,o){let r=`HAS_${o}_TEXTURE_TRANSFORM`;e.addDefine(r,void 0,be.FRAGMENT);let s=`${i}Transform`;e.addUniform("mat3",s,be.FRAGMENT),t[s]=function(){return n.transform}}function YOe(e,t,n,i,o){let r=`HAS_${o}_TEXTURE_SCALE`;e.addDefine(r,void 0,be.FRAGMENT);let s=`${i}Scale`;e.addUniform("float",s,be.FRAGMENT),t[s]=function(){return n.scale}}function cd(e,t,n,i,o,r){e.addUniform("sampler2D",i,be.FRAGMENT),t[i]=function(){return n.texture??r};let s=`HAS_${o}_TEXTURE`;e.addDefine(s,void 0,be.FRAGMENT);let c=`v_texCoord_${n.texCoord}`,d=`TEXCOORD_${o}`;e.addDefine(d,c,be.FRAGMENT);let u=n.transform;l(u)&&!$.equals(u,$.IDENTITY)&&ode(e,t,n,i,o);let{scale:h}=n;l(h)&&h!==1&&YOe(e,t,n,i,o)}function OOe(e,t,n,i,o,r,s){let{emissiveFactor:a,emissiveTexture:c,normalTexture:d,occlusionTexture:u}=e;l(a)&&!m.equals(a,kOe.DEFAULT_EMISSIVE_FACTOR)&&(n.addUniform("vec3","u_emissiveFactor",be.FRAGMENT),t.u_emissiveFactor=function(){return e.emissiveFactor},n.addDefine("HAS_EMISSIVE_FACTOR",void 0,be.FRAGMENT),l(c)&&!s&&cd(n,t,c,"u_emissiveTexture","EMISSIVE",r)),l(d)&&!s&&cd(n,t,d,"u_normalTexture","NORMAL",o),l(u)&&!s&&cd(n,t,u,"u_occlusionTexture","OCCLUSION",i)}function HOe(e,t,n,i,o){let{diffuseTexture:r,diffuseFactor:s,specularGlossinessTexture:a,specularFactor:c,glossinessFactor:d}=e;n.addDefine("USE_SPECULAR_GLOSSINESS",void 0,be.FRAGMENT),l(r)&&!o&&cd(n,t,r,"u_diffuseTexture","DIFFUSE",i),l(s)&&!ce.equals(s,xK.DEFAULT_DIFFUSE_FACTOR)&&(n.addUniform("vec4","u_diffuseFactor",be.FRAGMENT),t.u_diffuseFactor=function(){return e.diffuseFactor},n.addDefine("HAS_DIFFUSE_FACTOR",void 0,be.FRAGMENT)),l(a)&&!o&&cd(n,t,a,"u_specularGlossinessTexture","SPECULAR_GLOSSINESS",i),l(c)&&!m.equals(c,xK.DEFAULT_SPECULAR_FACTOR)&&(n.addUniform("vec3","u_legacySpecularFactor",be.FRAGMENT),t.u_legacySpecularFactor=function(){return e.specularFactor},n.addDefine("HAS_LEGACY_SPECULAR_FACTOR",void 0,be.FRAGMENT)),l(d)&&d!==xK.DEFAULT_GLOSSINESS_FACTOR&&(n.addUniform("float","u_glossinessFactor",be.FRAGMENT),t.u_glossinessFactor=function(){return e.glossinessFactor},n.addDefine("HAS_GLOSSINESS_FACTOR",void 0,be.FRAGMENT))}function zOe(e,t,n,i,o){let{specularTexture:r,specularFactor:s,specularColorTexture:a,specularColorFactor:c}=e;n.addDefine("USE_SPECULAR",void 0,be.FRAGMENT),l(r)&&!o&&cd(n,t,r,"u_specularTexture","SPECULAR",i),l(s)&&s!==tde.DEFAULT_SPECULAR_FACTOR&&(n.addUniform("float","u_specularFactor",be.FRAGMENT),t.u_specularFactor=function(){return e.specularFactor},n.addDefine("HAS_SPECULAR_FACTOR",void 0,be.FRAGMENT)),l(a)&&!o&&cd(n,t,a,"u_specularColorTexture","SPECULAR_COLOR",i),l(c)&&!m.equals(c,tde.DEFAULT_SPECULAR_COLOR_FACTOR)&&(n.addUniform("vec3","u_specularColorFactor",be.FRAGMENT),t.u_specularColorFactor=function(){return e.specularColorFactor},n.addDefine("HAS_SPECULAR_COLOR_FACTOR",void 0,be.FRAGMENT))}var KOe=new m;function JOe(e,t,n,i,o){let{anisotropyStrength:r,anisotropyRotation:s,anisotropyTexture:a}=e;n.addDefine("USE_ANISOTROPY",void 0,be.FRAGMENT),l(a)&&!o&&cd(n,t,a,"u_anisotropyTexture","ANISOTROPY",i);let c=Math.cos(s),d=Math.sin(s);n.addUniform("vec3","u_anisotropy",be.FRAGMENT),t.u_anisotropy=function(){return m.fromElements(c,d,r,KOe)}}function jOe(e,t,n,i,o){let{clearcoatFactor:r,clearcoatTexture:s,clearcoatRoughnessFactor:a,clearcoatRoughnessTexture:c,clearcoatNormalTexture:d}=e;n.addDefine("USE_CLEARCOAT",void 0,be.FRAGMENT),l(r)&&r!==nde.DEFAULT_CLEARCOAT_FACTOR&&(n.addUniform("float","u_clearcoatFactor",be.FRAGMENT),t.u_clearcoatFactor=function(){return e.clearcoatFactor},n.addDefine("HAS_CLEARCOAT_FACTOR",void 0,be.FRAGMENT)),l(s)&&!o&&cd(n,t,s,"u_clearcoatTexture","CLEARCOAT",i),l(a)&&r!==nde.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR&&(n.addUniform("float","u_clearcoatRoughnessFactor",be.FRAGMENT),t.u_clearcoatRoughnessFactor=function(){return e.clearcoatRoughnessFactor},n.addDefine("HAS_CLEARCOAT_ROUGHNESS_FACTOR",void 0,be.FRAGMENT)),l(c)&&!o&&cd(n,t,c,"u_clearcoatRoughnessTexture","CLEARCOAT_ROUGHNESS",i),l(d)&&!o&&cd(n,t,d,"u_clearcoatNormalTexture","CLEARCOAT_NORMAL",i)}function qOe(e,t,n,i,o){n.addDefine("USE_METALLIC_ROUGHNESS",void 0,be.FRAGMENT);let r=e.baseColorTexture;l(r)&&!o&&cd(n,t,r,"u_baseColorTexture","BASE_COLOR",i);let s=e.baseColorFactor;l(s)&&!ce.equals(s,CK.DEFAULT_BASE_COLOR_FACTOR)&&(n.addUniform("vec4","u_baseColorFactor",be.FRAGMENT),t.u_baseColorFactor=function(){return e.baseColorFactor},n.addDefine("HAS_BASE_COLOR_FACTOR",void 0,be.FRAGMENT));let a=e.metallicRoughnessTexture;l(a)&&!o&&cd(n,t,a,"u_metallicRoughnessTexture","METALLIC_ROUGHNESS",i);let c=e.metallicFactor;l(c)&&c!==CK.DEFAULT_METALLIC_FACTOR&&(n.addUniform("float","u_metallicFactor",be.FRAGMENT),t.u_metallicFactor=function(){return e.metallicFactor},n.addDefine("HAS_METALLIC_FACTOR",void 0,be.FRAGMENT));let d=e.roughnessFactor;l(d)&&d!==CK.DEFAULT_ROUGHNESS_FACTOR&&(n.addUniform("float","u_roughnessFactor",be.FRAGMENT),t.u_roughnessFactor=function(){return e.roughnessFactor},n.addDefine("HAS_ROUGHNESS_FACTOR",void 0,be.FRAGMENT))}var aX=ide;var KWn=y(C(),1);var Rl={name:"MetadataPickingPipelineStage",METADATA_PICKING_ENABLED:"METADATA_PICKING_ENABLED",METADATA_PICKING_VALUE_TYPE:"METADATA_PICKING_VALUE_TYPE",METADATA_PICKING_VALUE_STRING:"METADATA_PICKING_VALUE_STRING",METADATA_PICKING_VALUE_COMPONENT_X:"METADATA_PICKING_VALUE_COMPONENT_X",METADATA_PICKING_VALUE_COMPONENT_Y:"METADATA_PICKING_VALUE_COMPONENT_Y",METADATA_PICKING_VALUE_COMPONENT_Z:"METADATA_PICKING_VALUE_COMPONENT_Z",METADATA_PICKING_VALUE_COMPONENT_W:"METADATA_PICKING_VALUE_COMPONENT_W"};Rl.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine(Rl.METADATA_PICKING_VALUE_TYPE,"float",be.FRAGMENT),i.addDefine(Rl.METADATA_PICKING_VALUE_STRING,"0.0",be.FRAGMENT),i.addDefine(Rl.METADATA_PICKING_VALUE_COMPONENT_X,"0.0",be.FRAGMENT),i.addDefine(Rl.METADATA_PICKING_VALUE_COMPONENT_Y,"0.0",be.FRAGMENT),i.addDefine(Rl.METADATA_PICKING_VALUE_COMPONENT_Z,"0.0",be.FRAGMENT),i.addDefine(Rl.METADATA_PICKING_VALUE_COMPONENT_W,"0.0",be.FRAGMENT),i.addFunction("metadataPickingStage","void metadataPickingStage(Metadata metadata, MetadataClass metadataClass, inout vec4 metadataValues)",be.FRAGMENT),i.addFunctionLines("metadataPickingStage",[`${Rl.METADATA_PICKING_VALUE_TYPE} value = ${Rl.METADATA_PICKING_VALUE_TYPE}(${Rl.METADATA_PICKING_VALUE_STRING});`,`metadataValues.x = ${Rl.METADATA_PICKING_VALUE_COMPONENT_X};`,`metadataValues.y = ${Rl.METADATA_PICKING_VALUE_COMPONENT_Y};`,`metadataValues.z = ${Rl.METADATA_PICKING_VALUE_COMPONENT_Z};`,`metadataValues.w = ${Rl.METADATA_PICKING_VALUE_COMPONENT_W};`],be.FRAGMENT)};var Jd=Rl;var rFn=y(C(),1);var jWn=y(C(),1),cX=`void morphTargetsStage(inout ProcessedAttributes attributes) +{ + vec3 positionMC = attributes.positionMC; + attributes.positionMC = getMorphedPosition(positionMC); + + #ifdef HAS_NORMALS + vec3 normalMC = attributes.normalMC; + attributes.normalMC = getMorphedNormal(normalMC); + #endif + + #ifdef HAS_TANGENTS + vec3 tangentMC = attributes.tangentMC; + attributes.tangentMC = getMorphedTangent(tangentMC); + #endif +}`;var fc={name:"MorphTargetsPipelineStage",FUNCTION_ID_GET_MORPHED_POSITION:"getMorphedPosition",FUNCTION_SIGNATURE_GET_MORPHED_POSITION:"vec3 getMorphedPosition(in vec3 position)",FUNCTION_ID_GET_MORPHED_NORMAL:"getMorphedNormal",FUNCTION_SIGNATURE_GET_MORPHED_NORMAL:"vec3 getMorphedNormal(in vec3 normal)",FUNCTION_ID_GET_MORPHED_TANGENT:"getMorphedTangent",FUNCTION_SIGNATURE_GET_MORPHED_TANGENT:"vec3 getMorphedTangent(in vec3 tangent)"};fc.process=function(e,t){let n=e.shaderBuilder;n.addDefine("HAS_MORPH_TARGETS",void 0,be.VERTEX),oHe(n);let i=t.morphTargets.length;for(let a=0;a<i;a++){let c=t.morphTargets[a].attributes,d=c.length;for(let u=0;u<d;u++){let h=c[u],p=h.semantic;p!==lt.POSITION&&p!==lt.NORMAL&&p!==lt.TANGENT||(eHe(e,h,e.attributeIndex,a),e.attributeIndex++)}}rHe(n);let r=e.runtimeNode.morphWeights.length;n.addUniform("float",`u_morphWeights[${r}]`,be.VERTEX),n.addVertexLines(cX);let s={u_morphWeights:function(){return e.runtimeNode.morphWeights}};e.uniformMap=Lt(s,e.uniformMap)};var $Oe={attributeString:void 0,functionId:void 0};function eHe(e,t,n,i){let o=e.shaderBuilder;tHe(e,t,n);let r=nHe(t,$Oe);iHe(o,r,i)}function tHe(e,t,n){let i={index:n,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,componentsPerAttribute:kt.getNumberOfComponents(t.type),componentDatatype:t.componentDatatype,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};e.attributes.push(i)}function nHe(e,t){switch(e.semantic){case lt.POSITION:t.attributeString="Position",t.functionId=fc.FUNCTION_ID_GET_MORPHED_POSITION;break;case lt.NORMAL:t.attributeString="Normal",t.functionId=fc.FUNCTION_ID_GET_MORPHED_NORMAL;break;case lt.TANGENT:t.attributeString="Tangent",t.functionId=fc.FUNCTION_ID_GET_MORPHED_TANGENT;break;default:break}return t}function iHe(e,t,n){let i=t.attributeString,o=`a_target${i}_${n}`,r=`morphed${i} += u_morphWeights[${n}] * a_target${i}_${n};`;e.addAttribute("vec3",o),e.addFunctionLines(t.functionId,[r])}function oHe(e){e.addFunction(fc.FUNCTION_ID_GET_MORPHED_POSITION,fc.FUNCTION_SIGNATURE_GET_MORPHED_POSITION,be.VERTEX),e.addFunctionLines(fc.FUNCTION_ID_GET_MORPHED_POSITION,["vec3 morphedPosition = position;"]),e.addFunction(fc.FUNCTION_ID_GET_MORPHED_NORMAL,fc.FUNCTION_SIGNATURE_GET_MORPHED_NORMAL,be.VERTEX),e.addFunctionLines(fc.FUNCTION_ID_GET_MORPHED_NORMAL,["vec3 morphedNormal = normal;"]),e.addFunction(fc.FUNCTION_ID_GET_MORPHED_TANGENT,fc.FUNCTION_SIGNATURE_GET_MORPHED_TANGENT,be.VERTEX),e.addFunctionLines(fc.FUNCTION_ID_GET_MORPHED_TANGENT,["vec3 morphedTangent = tangent;"])}function rHe(e){e.addFunctionLines(fc.FUNCTION_ID_GET_MORPHED_POSITION,["return morphedPosition;"]),e.addFunctionLines(fc.FUNCTION_ID_GET_MORPHED_NORMAL,["return morphedNormal;"]),e.addFunctionLines(fc.FUNCTION_ID_GET_MORPHED_TANGENT,["return morphedTangent;"])}var lX=fc;var pFn=y(C(),1);var rde={name:"PickingPipelineStage"};rde.process=function(e,t,n){let i=n.context,o=e.runtimeNode,r=e.shaderBuilder,s=e.model,a=o.node.instances;if(e.hasPropertyTable)sHe(e,t,a,i);else if(l(a))aHe(e,i);else{let c=sde(e),d=i.createPickId(c);s._pipelineResources.push(d),s._pickIds.push(d),r.addUniform("vec4","czm_pickColor",be.FRAGMENT);let u=e.uniformMap;u.czm_pickColor=function(){return d.color},e.pickId="czm_pickColor"}};function sde(e,t){let n=e.model;if(l(n.pickObject))return n.pickObject;let i={model:n,node:e.runtimeNode,primitive:e.runtimePrimitive},o;if(Tr.is3DTiles(n.type)){let r=n.content;o={content:r,primitive:r.tileset,detail:i}}else o={primitive:n,detail:i};return o.id=n.id,l(t)&&(o.instanceId=t),o}function sHe(e,t,n){let i=e.model,o,r,s=i.featureIdLabel,a=i.instanceFeatureIdLabel;l(i.featureTableId)?o=i.featureTableId:l(n)?(r=Mt.getFeatureIdsByLabel(n.featureIds,a),o=r.propertyTableId):(r=Mt.getFeatureIdsByLabel(t.featureIds,s),o=r.propertyTableId);let c=i.featureTables[o];e.shaderBuilder.addUniform("sampler2D","model_pickTexture",be.FRAGMENT);let u=c.batchTexture;e.uniformMap.model_pickTexture=function(){return u.pickTexture??u.defaultTexture},e.pickId="((selectedFeature.id < int(model_featuresLength)) ? texture(model_pickTexture, selectedFeature.st) : vec4(0.0))"}function aHe(e,t){let n=e.instanceCount,i=new Array(n),o=new Uint8Array(n*4),r=e.model,s=r._pipelineResources;for(let h=0;h<n;h++){let p=sde(e,h),g=t.createPickId(p);s.push(g),i[h]=g;let f=g.color;o[h*4+0]=U.floatToByte(f.red),o[h*4+1]=U.floatToByte(f.green),o[h*4+2]=U.floatToByte(f.blue),o[h*4+3]=U.floatToByte(f.alpha)}r._pickIds=i;let a=It.createVertexBuffer({context:t,typedArray:o,usage:Ne.STATIC_DRAW});a.vertexArrayDestroyable=!1,r.statistics.addBuffer(a,!1),s.push(a);let d={index:e.attributeIndex++,vertexBuffer:a,componentsPerAttribute:4,componentDatatype:J.UNSIGNED_BYTE,normalize:!0,offsetInBytes:0,strideInBytes:0,instanceDivisor:1};e.attributes.push(d);let u=e.shaderBuilder;u.addDefine("USE_PICKING",void 0,be.BOTH),u.addAttribute("vec4","a_pickColor"),u.addVarying("vec4","v_pickColor"),e.pickId="v_pickColor"}var dX=rde;var PFn=y(C(),1);var gFn=y(C(),1),cHe={ADD:0,REPLACE:1},tr=Object.freeze(cHe);var yFn=y(C(),1),uX=`float getPointSizeFromAttenuation(vec3 positionEC) { + // Variables are packed into a single vector to minimize gl.uniformXXX() calls + float pointSize = model_pointCloudParameters.x; + float geometricError = model_pointCloudParameters.y; + float depthMultiplier = model_pointCloudParameters.z; + + float depth = -positionEC.z; + return min((geometricError / depth) * depthMultiplier, pointSize); +} + +#ifdef HAS_POINT_CLOUD_SHOW_STYLE +float pointCloudShowStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + float tiles3d_tileset_time = model_pointCloudParameters.w; + return float(getShowFromStyle(attributes, metadata, tiles3d_tileset_time)); +} +#endif + +#ifdef HAS_POINT_CLOUD_COLOR_STYLE +vec4 pointCloudColorStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + float tiles3d_tileset_time = model_pointCloudParameters.w; + return getColorFromStyle(attributes, metadata, tiles3d_tileset_time); +} +#endif + +#ifdef HAS_POINT_CLOUD_POINT_SIZE_STYLE +float pointCloudPointSizeStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + float tiles3d_tileset_time = model_pointCloudParameters.w; + return float(getPointSizeFromStyle(attributes, metadata, tiles3d_tileset_time)); +} +#elif defined(HAS_POINT_CLOUD_ATTENUATION) +float pointCloudPointSizeStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + return getPointSizeFromAttenuation(v_positionEC); +} +#endif + +#ifdef HAS_POINT_CLOUD_BACK_FACE_CULLING +float pointCloudBackFaceCullingStage() { + #if defined(HAS_NORMALS) && !defined(HAS_DOUBLE_SIDED_MATERIAL) + // This needs to be computed in eye coordinates so we can't use attributes.normalMC + return step(-v_normalEC.z, 0.0); + #else + return 1.0; + #endif +} +#endif +`;var lHe=new ce,cde={name:"PointCloudStylingPipelineStage"};cde.process=function(e,t,n){let i=e.shaderBuilder,o=e.model,r=o.style,s=o.structuralMetadata,a=l(s)?s.propertyAttributes:void 0,c=l(o.featureTableId)&&o.featureTables[o.featureTableId].featuresLength>0,d=!l(a)&&c;if(l(r)&&!d){let b=hHe(a),x=fHe(r,b);pHe(i,x);let _=AHe(x).indexOf("normalMC")>=0,E=Mt.getAttributeBySemantic(t,lt.NORMAL);if(_&&!E)throw new de("Style references the NORMAL semantic but the point cloud does not have normals");i.addDefine("COMPUTE_POSITION_WC_STYLE",void 0,be.VERTEX),x.styleTranslucent&&(e.alphaOptions.pass=Ge.TRANSLUCENT)}let u=o.pointCloudShading;u.attenuation&&i.addDefine("HAS_POINT_CLOUD_ATTENUATION",void 0,be.VERTEX),u.backFaceCulling&&i.addDefine("HAS_POINT_CLOUD_BACK_FACE_CULLING",void 0,be.VERTEX);let h,p,g;Tr.is3DTiles(o.type)&&(p=!0,h=o.content,g=h.tile.refine===tr.ADD),i.addUniform("vec4","model_pointCloudParameters",be.VERTEX),i.addVertexLines(uX);let f=e.uniformMap;f.model_pointCloudParameters=function(){let b=lHe,x=1;p&&(x=g?5:h.tileset.memoryAdjustedScreenSpaceError),b.x=u.maximumAttenuation??x,b.x*=n.pixelRatio;let I=dHe(e,t,u,h);b.y=I*u.geometricErrorScale;let _=n.context,E=n.camera.frustum,S;return n.mode===re.SCENE2D||E instanceof gn?S=Number.POSITIVE_INFINITY:S=_.drawingBufferHeight/n.camera.frustum.sseDenominator,b.z=S,p&&(b.w=h.tileset.timeSinceLoad),b}};var ade=new m;function dHe(e,t,n,i){if(l(i)){let u=i.tile.geometricError;if(u>0)return u}if(l(n.baseResolution))return n.baseResolution;let o=Mt.getAttributeBySemantic(t,lt.POSITION),r=o.count,s=e.runtimeNode.transform,a=m.subtract(o.max,o.min,ade);a=X.multiplyByPointAsVector(s,a,ade);let c=a.x*a.y*a.z;return Z.cbrt(c/r)}var uHe={colorStyleFunction:void 0,showStyleFunction:void 0,pointSizeStyleFunction:void 0,styleTranslucent:!1},mHe={POSITION:"attributes.positionMC",POSITION_ABSOLUTE:"v_positionWC",COLOR:"attributes.color_0",NORMAL:"attributes.normalMC"};function hHe(e){let t=ke(mHe);if(!l(e))return t;for(let n=0;n<e.length;n++){let o=e[n].properties;for(let r in o)o.hasOwnProperty(r)&&(t[r]=`metadata.${r}`)}return t}var IK="ProcessedAttributes attributes, Metadata metadata, float tiles3d_tileset_time";function fHe(e,t){let n=uHe,i={translucent:!1};return n.colorStyleFunction=e.getColorShaderFunction(`getColorFromStyle(${IK})`,t,i),n.showStyleFunction=e.getShowShaderFunction(`getShowFromStyle(${IK})`,t,i),n.pointSizeStyleFunction=e.getPointSizeShaderFunction(`getPointSizeFromStyle(${IK})`,t,i),n.styleTranslucent=l(n.colorStyleFunction)&&i.translucent,n}function pHe(e,t){let n=t.colorStyleFunction;l(n)&&(e.addDefine("HAS_POINT_CLOUD_COLOR_STYLE",void 0,be.BOTH),e.addVertexLines(n),e.addVarying("vec4","v_pointCloudColor"));let i=t.showStyleFunction;l(i)&&(e.addDefine("HAS_POINT_CLOUD_SHOW_STYLE",void 0,be.BOTH),e.addVertexLines(i),e.addVarying("float","v_pointCloudShow"));let o=t.pointSizeStyleFunction;l(o)&&(e.addDefine("HAS_POINT_CLOUD_POINT_SIZE_STYLE",void 0,be.VERTEX),e.addVertexLines(o))}function _K(e,t){let n=/attributes\.(\w+)/g,i=n.exec(e);for(;i!==null;){let o=i[1];t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function AHe(e){let t=e.colorStyleFunction,n=e.showStyleFunction,i=e.pointSizeStyleFunction,o=[];return l(t)&&_K(t,o),l(n)&&_K(n,o),l(i)&&_K(i,o),o}var mX=cde;var zFn=y(C(),1);var vFn=y(C(),1),hX=`void primitiveOutlineStage() { + v_outlineCoordinates = a_outlineCoordinates; +} +`;var DFn=y(C(),1),fX=`void primitiveOutlineStage(inout czm_modelMaterial material) { + if (!model_showOutline) { + return; + } + + float outlineX = + texture(model_outlineTexture, vec2(v_outlineCoordinates.x, 0.5)).r; + float outlineY = + texture(model_outlineTexture, vec2(v_outlineCoordinates.y, 0.5)).r; + float outlineZ = + texture(model_outlineTexture, vec2(v_outlineCoordinates.z, 0.5)).r; + float outlineness = max(outlineX, max(outlineY, outlineZ)); + + material.diffuse = mix(material.diffuse, model_outlineColor.rgb, model_outlineColor.a * outlineness); +} + +`;var lde={name:"PrimitiveOutlinePipelineStage"};lde.process=function(e,t,n){let i=e.shaderBuilder,o=e.uniformMap;i.addDefine("HAS_PRIMITIVE_OUTLINE",void 0,be.BOTH),i.addAttribute("vec3","a_outlineCoordinates"),i.addVarying("vec3","v_outlineCoordinates");let r=t.outlineCoordinates,s={index:e.attributeIndex++,vertexBuffer:r.buffer,componentsPerAttribute:kt.getNumberOfComponents(r.type),componentDatatype:r.componentDatatype,offsetInBytes:r.byteOffset,strideInBytes:r.byteStride,normalize:r.normalized};e.attributes.push(s),i.addUniform("sampler2D","model_outlineTexture",be.FRAGMENT);let a=qC.createTexture(n.context);o.model_outlineTexture=function(){return a};let c=e.model;i.addUniform("vec4","model_outlineColor",be.FRAGMENT),o.model_outlineColor=function(){return c.outlineColor},i.addUniform("bool","model_showOutline",be.FRAGMENT),o.model_showOutline=function(){return c.showOutline},i.addVertexLines(hX),i.addFragmentLines(fX)};var pX=lde;var ePn=y(C(),1);var dde={name:"PrimitiveStatisticsPipelineStage",_countGeometry:ude,_count2DPositions:mde,_countMorphTargetAttributes:hde,_countMaterialTextures:fde,_countFeatureIdTextures:pde,_countBinaryMetadata:Ade};dde.process=function(e,t,n){let i=e.model,o=i.statistics;ude(o,t),mde(o,e.runtimePrimitive),hde(o,t),fde(o,t.material),pde(o,t.featureIds),Ade(o,i)};function ude(e,t){let n=l(t.indices)?t.indices.count:Mt.getAttributeBySemantic(t,"POSITION").count,i=t.primitiveType;i===We.POINTS?e.pointsLength+=n:We.isTriangles(i)&&(e.trianglesLength+=gHe(i,n));let o=t.attributes,r=o.length;for(let c=0;c<r;c++){let d=o[c];if(l(d.buffer)){let u=l(d.typedArray);e.addBuffer(d.buffer,u)}}let s=t.outlineCoordinates;l(s)&&l(s.buffer)&&e.addBuffer(s.buffer,!1);let a=t.indices;if(l(a)&&l(a.buffer)){let c=l(a.typedArray);e.addBuffer(a.buffer,c)}}function gHe(e,t){switch(e){case We.TRIANGLES:return t/3;case We.TRIANGLE_STRIP:case We.TRIANGLE_FAN:return Math.max(t-2,0);default:return 0}}function mde(e,t){let n=t.positionBuffer2D;l(n)&&e.addBuffer(n,!0)}function hde(e,t){let n=t.morphTargets;if(!l(n))return;let i=!1,o=n.length;for(let r=0;r<o;r++){let s=n[r].attributes,a=s.length;for(let c=0;c<a;c++){let d=s[c];l(d.buffer)&&e.addBuffer(d.buffer,i)}}}function fde(e,t){let n=bHe(t),i=n.length;for(let o=0;o<i;o++){let r=n[o];l(r)&&l(r.texture)&&e.addTexture(r.texture)}}function bHe(e){let t=e.metallicRoughness,n=[e.emissiveTexture,e.normalTexture,e.occlusionTexture,t.baseColorTexture,t.metallicRoughnessTexture],i=e.specularGlossiness;return l(i)&&(n.push(i.diffuseTexture),n.push(i.specularGlossinessTexture)),n}function pde(e,t){let n=t.length;for(let i=0;i<n;i++){let o=t[i];if(o instanceof Tn.FeatureIdTexture){let r=o.textureReader;l(r.texture)&&e.addTexture(r.texture)}}}function Ade(e,t){let n=t.structuralMetadata;l(n)&&(yHe(e,n),e.propertyTablesByteLength+=n.propertyTablesByteLength);let i=t.featureTables;if(!l(i))return;let o=i.length;for(let r=0;r<o;r++){let s=i[r];e.addBatchTexture(s.batchTexture)}}function yHe(e,t){let n=t.propertyTextures;if(!l(n))return;let i=n.length;for(let o=0;o<i;o++){let s=n[o].properties;for(let a in s)if(s.hasOwnProperty(a)){let d=s[a].textureReader;l(d.texture)&&e.addTexture(d.texture)}}}var AX=dde;var pPn=y(C(),1);var CHe=new X,xHe=new X,gde={name:"SceneMode2DPipelineStage"};gde.process=function(e,t,n){let i=Mt.getAttributeBySemantic(t,lt.POSITION),o=e.shaderBuilder,r=e.model,s=r.sceneGraph.computedModelMatrix,a=e.runtimeNode.computedTransform,c=X.multiplyTransformation(s,a,CHe),d=EHe(e,c,n),u=e.runtimePrimitive;u.boundingSphere2D=d;let h=e.runtimeNode.node.instances;if(l(h))return;if(l(i.typedArray)){let b=LHe(i,c,d,n);u.positionBuffer2D=b,r._modelResources.push(b),i.typedArray=void 0}o.addDefine("USE_2D_POSITIONS",void 0,be.VERTEX),o.addUniform("mat4","u_modelView2D",be.VERTEX);let p=X.fromTranslation(d.center,new X),g=n.context,f={u_modelView2D:function(){return X.multiplyTransformation(g.uniformState.view,p,xHe)}};e.uniformMap=Lt(f,e.uniformMap)};var IHe=new m,_He=new m;function EHe(e,t,n){let i=X.multiplyByPoint(t,e.positionMin,IHe),o=to.computeActualEllipsoidPosition(n,i,i),r=X.multiplyByPoint(t,e.positionMax,_He),s=to.computeActualEllipsoidPosition(n,r,r);return ue.fromCornerPoints(o,s,new ue)}var bde=new m;function THe(e,t){let n=e.length,i=new Float32Array(n),o=t.quantizedVolumeOffset,r=t.quantizedVolumeStepSize;for(let s=0;s<n;s+=3){let a=m.fromArray(e,s,bde),c=m.multiplyComponents(a,r,a),d=m.add(c,o,c);i[s]=d.x,i[s+1]=d.y,i[s+2]=d.z}return i}function SHe(e,t,n,i){let o;l(e.quantization)?o=THe(e.typedArray,e.quantization):o=e.typedArray.slice();let r=e.byteOffset/Float32Array.BYTES_PER_ELEMENT,s=o.length,a=l(e.byteStride)?e.byteStride/Float32Array.BYTES_PER_ELEMENT:3;for(let c=r;c<s;c+=a){let d=m.fromArray(o,c,bde);if(isNaN(d.x)||isNaN(d.y)||isNaN(d.z))continue;let u=X.multiplyByPoint(t,d,d),h=to.computeActualEllipsoidPosition(i,u,u),p=m.subtract(h,n,h);o[c]=p.x,o[c+1]=p.y,o[c+2]=p.z}return o}function LHe(e,t,n,i){let o=ke(i);o.mode=re.COLUMBUS_VIEW;let r=n.center,s=SHe(e,t,r,o),a=It.createVertexBuffer({context:i.context,typedArray:s,usage:Ne.STATIC_DRAW});return a.vertexArrayDestroyable=!1,a}var gX=gde;var _Pn=y(C(),1);var gPn=y(C(),1),bX=`void skinningStage(inout ProcessedAttributes attributes) +{ + mat4 skinningMatrix = getSkinningMatrix(); + mat3 skinningMatrixMat3 = mat3(skinningMatrix); + + vec4 positionMC = vec4(attributes.positionMC, 1.0); + attributes.positionMC = vec3(skinningMatrix * positionMC); + + #ifdef HAS_NORMALS + vec3 normalMC = attributes.normalMC; + attributes.normalMC = skinningMatrixMat3 * normalMC; + #endif + + #ifdef HAS_TANGENTS + vec3 tangentMC = attributes.tangentMC; + attributes.tangentMC = skinningMatrixMat3 * tangentMC; + #endif +}`;var cx={name:"SkinningPipelineStage",FUNCTION_ID_GET_SKINNING_MATRIX:"getSkinningMatrix",FUNCTION_SIGNATURE_GET_SKINNING_MATRIX:"mat4 getSkinningMatrix()"};cx.process=function(e,t){let n=e.shaderBuilder;n.addDefine("HAS_SKINNING",void 0,be.VERTEX),VHe(n,t);let i=e.runtimeNode,o=i.computedJointMatrices;n.addUniform("mat4",`u_jointMatrices[${o.length}]`,be.VERTEX),n.addVertexLines(bX);let r={u_jointMatrices:function(){return i.computedJointMatrices}};e.uniformMap=Lt(r,e.uniformMap)};function RHe(e){let t=-1,n=e.attributes,i=n.length;for(let o=0;o<i;o++){let r=n[o];(r.semantic===lt.JOINTS||r.semantic===lt.WEIGHTS)&&(t=Math.max(t,r.setIndex))}return t}function VHe(e,t){e.addFunction(cx.FUNCTION_ID_GET_SKINNING_MATRIX,cx.FUNCTION_SIGNATURE_GET_SKINNING_MATRIX,be.VERTEX),e.addFunctionLines(cx.FUNCTION_ID_GET_SKINNING_MATRIX,["mat4 skinnedMatrix = mat4(0);"]);let i,o,r=["x","y","z","w"],s=RHe(t);for(i=0;i<=s;i++)for(o=0;o<=3;o++){let c=r[o],d=`skinnedMatrix += a_weights_${i}.${c} * u_jointMatrices[int(a_joints_${i}.${c})];`;e.addFunctionLines(cx.FUNCTION_ID_GET_SKINNING_MATRIX,[d])}e.addFunctionLines(cx.FUNCTION_ID_GET_SKINNING_MATRIX,["return skinnedMatrix;"])}var yX=cx;var GPn=y(C(),1);var TPn=y(C(),1),CX=`void verticalExaggerationStage( + inout ProcessedAttributes attributes +) { + // Compute the distance from the camera to the local center of curvature. + vec4 vertexPositionENU = czm_modelToEnu * vec4(attributes.positionMC, 1.0); + vec2 vertexAzimuth = normalize(vertexPositionENU.xy); + // Curvature = 1 / radius of curvature. + float azimuthalCurvature = dot(vertexAzimuth * vertexAzimuth, czm_eyeEllipsoidCurvature); + float eyeToCenter = 1.0 / azimuthalCurvature + czm_eyeHeight; + + // Compute the approximate ellipsoid normal at the vertex position. + // Uses a circular approximation for the Earth curvature along the geodesic. + vec3 vertexPositionEC = (czm_modelView * vec4(attributes.positionMC, 1.0)).xyz; + vec3 centerToVertex = eyeToCenter * czm_eyeEllipsoidNormalEC + vertexPositionEC; + vec3 vertexNormal = normalize(centerToVertex); + + // Estimate the (sine of the) angle between the camera direction and the vertex normal + float verticalDistance = dot(vertexPositionEC, czm_eyeEllipsoidNormalEC); + float horizontalDistance = length(vertexPositionEC - verticalDistance * czm_eyeEllipsoidNormalEC); + float sinTheta = horizontalDistance / (eyeToCenter + verticalDistance); + bool isSmallAngle = clamp(sinTheta, 0.0, 0.05) == sinTheta; + + // Approximate the change in height above the ellipsoid, from camera to vertex position. + float exactVersine = 1.0 - dot(czm_eyeEllipsoidNormalEC, vertexNormal); + float smallAngleVersine = 0.5 * sinTheta * sinTheta; + float versine = isSmallAngle ? smallAngleVersine : exactVersine; + float dHeight = dot(vertexPositionEC, vertexNormal) - eyeToCenter * versine; + float vertexHeight = czm_eyeHeight + dHeight; + + // Transform the approximate vertex normal to model coordinates. + vec3 vertexNormalMC = (czm_inverseModelView * vec4(vertexNormal, 0.0)).xyz; + vertexNormalMC = normalize(vertexNormalMC); + + // Compute the exaggeration and apply it along the approximate vertex normal. + float stretch = u_verticalExaggerationAndRelativeHeight.x; + float shift = u_verticalExaggerationAndRelativeHeight.y; + float exaggeration = (vertexHeight - shift) * (stretch - 1.0); + attributes.positionMC += exaggeration * vertexNormalMC; +} +`;var yde={name:"VerticalExaggerationPipelineStage"},GHe=new D;yde.process=function(e,t,n){let{shaderBuilder:i,uniformMap:o}=e;i.addVertexLines(CX),i.addDefine("HAS_VERTICAL_EXAGGERATION",void 0,be.VERTEX),i.addUniform("vec2","u_verticalExaggerationAndRelativeHeight",be.VERTEX),o.u_verticalExaggerationAndRelativeHeight=function(){return D.fromElements(n.verticalExaggeration,n.verticalExaggerationRelativeHeight,GHe)}};var xX=yde;var OPn=y(C(),1);var WPn=y(C(),1);var EK={};function ZHe(e){let t=Me.createTypedArray(e,e*2),n=e,i=0;for(let o=0;o<n;o+=3)t[i++]=o,t[i++]=o+1,t[i++]=o+1,t[i++]=o+2,t[i++]=o+2,t[i++]=o;return t}function BHe(e,t){let n=t.length,i=Me.createTypedArray(e,n*2),o=0;for(let r=0;r<n;r+=3){let s=t[r],a=t[r+1],c=t[r+2];i[o++]=s,i[o++]=a,i[o++]=a,i[o++]=c,i[o++]=c,i[o++]=s}return i}function wHe(e){let t=e-2,n=2+t*4,i=Me.createTypedArray(e,n),o=0;i[o++]=0,i[o++]=1;for(let r=0;r<t;r++)i[o++]=r+1,i[o++]=r+2,i[o++]=r+2,i[o++]=r;return i}function XHe(e,t){let i=t.length-2,o=2+i*4,r=Me.createTypedArray(e,o),s=0;r[s++]=t[0],r[s++]=t[1];for(let a=0;a<i;a++){let c=t[a],d=t[a+1],u=t[a+2];r[s++]=d,r[s++]=u,r[s++]=u,r[s++]=c}return r}function WHe(e){let t=e-2,n=2+t*4,i=Me.createTypedArray(e,n),o=0;i[o++]=0,i[o++]=1;for(let r=0;r<t;r++)i[o++]=r+1,i[o++]=r+2,i[o++]=r+2,i[o++]=0;return i}function FHe(e,t){let i=t.length-2,o=2+i*4,r=Me.createTypedArray(e,o),s=0,a=t[0];r[s++]=a,r[s++]=t[1];for(let c=0;c<i;c++){let d=t[c+1],u=t[c+2];r[s++]=d,r[s++]=u,r[s++]=u,r[s++]=a}return r}EK.createWireframeIndices=function(e,t,n){let i=l(n);if(e===We.TRIANGLES)return i?BHe(t,n):ZHe(t);if(e===We.TRIANGLE_STRIP)return i?XHe(t,n):wHe(t);if(e===We.TRIANGLE_FAN)return i?FHe(t,n):WHe(t)};EK.getWireframeIndicesCount=function(e,t){return e===We.TRIANGLES?t*2:e===We.TRIANGLE_STRIP||e===We.TRIANGLE_FAN?2+(t-2)*4:t};var aT=EK;var Cde={name:"WireframePipelineStage"};Cde.process=function(e,t,n){e.shaderBuilder.addDefine("HAS_WIREFRAME",void 0,be.FRAGMENT);let o=e.model,r=PHe(t,e.indices,n);o._pipelineResources.push(r),e.wireframeIndexBuffer=r,o.statistics.addBuffer(r,!1);let a=e.primitiveType,c=e.count;e.primitiveType=We.LINES,e.count=aT.getWireframeIndicesCount(a,c)};function PHe(e,t,n){let o=Mt.getAttributeBySemantic(e,lt.POSITION).count,r=n.context.webgl2,s;if(l(t)){let u=t.buffer,h=t.count;l(u)&&r?(s=u.sizeInBytes===h?new Uint8Array(h):Me.createTypedArray(o,h),u.getBufferData(s)):s=t.typedArray}let a=e.primitiveType,c=aT.createWireframeIndices(a,o,s),d=Me.fromSizeInBytes(c.BYTES_PER_ELEMENT);return It.createIndexBuffer({context:n.context,typedArray:c,usage:Ne.STATIC_DRAW,indexDatatype:d})}var IX=Cde;function xde(e){e=e??Y.EMPTY_OBJECT;let t=e.primitive,n=e.node,i=e.model;this.primitive=t,this.node=n,this.model=i,this.pipelineStages=[],this.drawCommand=void 0,this.boundingSphere=void 0,this.boundingSphere2D=void 0,this.positionBuffer2D=void 0,this.batchLengths=void 0,this.batchOffsets=void 0,this.updateStages=[]}xde.prototype.configurePipeline=function(e){let t=this.pipelineStages;t.length=0;let n=this.primitive,i=this.node,o=this.model,r=o.customShader,s=o.style,a=e.context.webgl2,d=e.mode!==re.SCENE3D&&!e.scene3DOnly&&o._projectTo2D,u=e.verticalExaggeration!==1&&o.hasVerticalExaggeration,h=l(n.morphTargets)&&n.morphTargets.length>0,p=l(i.skin),g=l(o.imageryLayers),f=l(r),x=!(f&&l(r.fragmentShaderText))||r.mode!==DA.REPLACE_MATERIAL,I=Mt.hasQuantizedAttributes(n.attributes),_=o.debugWireframe&&We.isTriangles(n.primitiveType)&&(o._enableDebugWireframe||a),E=o.pointCloudShading,S=l(E)&&E.attenuation,R=l(E)&&E.backFaceCulling,G=n.primitiveType===We.POINTS&&(l(s)||S||R),B=o._enableShowOutline&&l(n.outlineCoordinates),w=MHe(o,i,n),F=l(o.classificationType);d&&t.push(gX),t.push(Mw),_&&t.push(IX),F&&t.push(Iw),h&&t.push(lX),p&&t.push(yX),G&&t.push(mX),I&&t.push(Xw),g&&(B?xt("outlines-and-draping","Primitive outlines disable imagery draping"):t.push(iX)),x&&t.push(aX),t.push(a0),t.push(rm),t.push(Jd),w.hasPropertyTable&&(t.push(l0),t.push(xw),t.push(Tw)),u&&t.push(xX),f&&t.push(Bw),t.push(rX),o.allowPicking&&t.push(dX),B&&t.push(pX),t.push(Cw),t.push(AX)};function MHe(e,t,n){let i;return l(t.instances)&&(i=Mt.getFeatureIdsByLabel(t.instances.featureIds,e.instanceFeatureIdLabel),l(i))?{hasFeatureIds:!0,hasPropertyTable:l(i.propertyTableId)}:(i=Mt.getFeatureIdsByLabel(n.featureIds,e.featureIdLabel),l(i)?{hasFeatureIds:!0,hasPropertyTable:l(i.propertyTableId)}:{hasFeatureIds:!1,hasPropertyTable:!1})}var _X=xde;var RMn=y(C(),1);function TK(e){e=e??Y.EMPTY_OBJECT,this._sceneGraph=e.sceneGraph;let t=e.skin;this._skin=t,this._inverseBindMatrices=void 0,this._joints=[],this._jointMatrices=[],vHe(this)}Object.defineProperties(TK.prototype,{skin:{get:function(){return this._skin}},sceneGraph:{get:function(){return this._sceneGraph}},inverseBindMatrices:{get:function(){return this._inverseBindMatrices}},joints:{get:function(){return this._joints}},jointMatrices:{get:function(){return this._jointMatrices}}});function vHe(e){let t=e.skin,n=t.inverseBindMatrices;e._inverseBindMatrices=n;let i=t.joints,o=i.length,r=e.sceneGraph._runtimeNodes,s=e.joints,a=e._jointMatrices;for(let c=0;c<o;c++){let d=i[c].index,u=r[d];s.push(u);let h=n[c],p=Ide(u,h,new X);a.push(p)}}function Ide(e,t,n){let i=X.multiplyTransformation(e.transformToRoot,e.transform,n);return n=X.multiplyTransformation(i,t,n),n}TK.prototype.updateJointMatrices=function(){let e=this._jointMatrices,t=e.length;for(let n=0;n<t;n++){let i=this.joints[n],o=this.inverseBindMatrices[n];e[n]=Ide(i,o,e[n])}};var EX=TK;var JMn=y(C(),1);var GMn=y(C(),1);function NHe(){this.pass=void 0,this.alphaCutoff=void 0}var lx=NHe;var kMn=y(C(),1);var BMn=y(C(),1);function SK(e){this.name=e,this.fields=[]}SK.prototype.addField=function(e,t){let n=` ${e} ${t};`;this.fields.push(n)};SK.prototype.generateGlslLines=function(){let e=this.fields;return e.length===0&&(e=[" float _empty;"]),[].concat(`struct ${this.name}`,"{",e,"};")};var TX=SK;var XMn=y(C(),1);function LK(e){this.signature=e,this.body=[]}LK.prototype.addLines=function(e){let t=this.body;if(Array.isArray(e)){let n=e.length;for(let i=0;i<n;i++)t.push(` ${e[i]}`)}else t.push(` ${e}`)};LK.prototype.generateGlslLines=function(){return[].concat(this.signature,"{",this.body,"}")};var SX=LK;function Vl(){this._positionAttributeLine=void 0,this._nextAttributeLocation=1,this._attributeLocations={},this._attributeLines=[],this._structs={},this._functions={},this._vertexShaderParts={defineLines:[],uniformLines:[],shaderLines:[],varyingLines:[],structIds:[],functionIds:[]},this._fragmentShaderParts={defineLines:[],uniformLines:[],shaderLines:[],varyingLines:[],structIds:[],functionIds:[]}}Object.defineProperties(Vl.prototype,{attributeLocations:{get:function(){return this._attributeLocations}}});Vl.prototype.addDefine=function(e,t,n){n=n??be.BOTH;let i=e;l(t)&&(i+=` ${t.toString()}`),be.includesVertexShader(n)&&this._vertexShaderParts.defineLines.push(i),be.includesFragmentShader(n)&&this._fragmentShaderParts.defineLines.push(i)};Vl.prototype.addStruct=function(e,t,n){this._structs[e]=new TX(t),be.includesVertexShader(n)&&this._vertexShaderParts.structIds.push(e),be.includesFragmentShader(n)&&this._fragmentShaderParts.structIds.push(e)};Vl.prototype.addStructField=function(e,t,n){this._structs[e].addField(t,n)};Vl.prototype.addFunction=function(e,t,n){this._functions[e]=new SX(t),be.includesVertexShader(n)&&this._vertexShaderParts.functionIds.push(e),be.includesFragmentShader(n)&&this._fragmentShaderParts.functionIds.push(e)};Vl.prototype.addFunctionLines=function(e,t){this._functions[e].addLines(t)};Vl.prototype.addUniform=function(e,t,n){n=n??be.BOTH;let i=`uniform ${e} ${t};`;be.includesVertexShader(n)&&this._vertexShaderParts.uniformLines.push(i),be.includesFragmentShader(n)&&this._fragmentShaderParts.uniformLines.push(i)};Vl.prototype.setPositionAttribute=function(e,t){return this._positionAttributeLine=`in ${e} ${t};`,this._attributeLocations[t]=0,0};Vl.prototype.addAttribute=function(e,t){let n=`in ${e} ${t};`;this._attributeLines.push(n);let i=this._nextAttributeLocation;return this._attributeLocations[t]=i,this._nextAttributeLocation+=QHe(e),i};Vl.prototype.addVarying=function(e,t,n){n=l(n)?`${n} `:"";let i=`${e} ${t};`;this._vertexShaderParts.varyingLines.push(`${n}out ${i}`),this._fragmentShaderParts.varyingLines.push(`${n}in ${i}`)};Vl.prototype.addVertexLines=function(e){let t=this._vertexShaderParts.shaderLines;Array.isArray(e)?ci(t,e):t.push(e)};Vl.prototype.addFragmentLines=function(e){let t=this._fragmentShaderParts.shaderLines;Array.isArray(e)?ci(t,e):t.push(e)};Vl.prototype.buildShaderProgram=function(e){let t=l(this._positionAttributeLine)?[this._positionAttributeLine]:[],n=DHe(this),i=UHe(this),o=t.concat(this._attributeLines,this._vertexShaderParts.uniformLines,this._vertexShaderParts.varyingLines,n.vertexLines,i.vertexLines,this._vertexShaderParts.shaderLines).join(` +`),r=new Oe({defines:this._vertexShaderParts.defineLines,sources:[o]}),s=this._fragmentShaderParts.uniformLines.concat(this._fragmentShaderParts.varyingLines,n.fragmentLines,i.fragmentLines,this._fragmentShaderParts.shaderLines).join(` +`),a=new Oe({defines:this._fragmentShaderParts.defineLines,sources:[s]});return ln.fromCache({context:e,vertexShaderSource:r,fragmentShaderSource:a,attributeLocations:this._attributeLocations})};Vl.prototype.clone=function(){return ke(this,!0)};function DHe(e){let t=[],n=[],i,o=e._vertexShaderParts.structIds,r,s,a;for(i=0;i<o.length;i++)r=o[i],s=e._structs[r],a=s.generateGlslLines(),ci(t,a);for(o=e._fragmentShaderParts.structIds,i=0;i<o.length;i++)r=o[i],s=e._structs[r],a=s.generateGlslLines(),ci(n,a);return{vertexLines:t,fragmentLines:n}}function QHe(e){switch(e){case"mat2":return 2;case"mat3":return 3;case"mat4":return 4;default:return 1}}function UHe(e){let t=[],n=[],i,o=e._vertexShaderParts.functionIds,r,s,a;for(i=0;i<o.length;i++)r=o[i],s=e._functions[r],a=s.generateGlslLines(),ci(t,a);for(o=e._fragmentShaderParts.functionIds,i=0;i<o.length;i++)r=o[i],s=e._functions[r],a=s.generateGlslLines(),ci(n,a);return{vertexLines:t,fragmentLines:n}}var OA=Vl;function kHe(e){this.shaderBuilder=new OA,this.model=e,this.uniformMap={},this.alphaOptions=new lx,this.renderStateOptions=Qe.getState(Qe.fromCache({depthTest:{enabled:!0,func:Fa.LESS_OR_EQUAL}})),this.hasSilhouette=!1,this.hasSkipLevelOfDetail=!1,this.nodeRenderResources=[]}var LX=kHe;var avn=y(C(),1);var qMn=y(C(),1),RX=`void silhouetteStage(inout vec4 color) { + if(model_silhouettePass) { + color = czm_gammaCorrect(model_silhouetteColor); + } +}`;var evn=y(C(),1),VX=`void silhouetteStage(in ProcessedAttributes attributes, inout vec4 positionClip) { + #ifdef HAS_NORMALS + if(model_silhouettePass) { + vec3 normal = normalize(czm_normal3D * attributes.normalMC); + normal.x *= czm_projection[0][0]; + normal.y *= czm_projection[1][1]; + positionClip.xy += normal.xy * positionClip.w * model_silhouetteSize * czm_pixelRatio / czm_viewport.z; + } + #endif +} +`;var WQ={name:"ModelSilhouettePipelineStage"};WQ.silhouettesLength=0;WQ.process=function(e,t,n){l(t._silhouetteId)||(t._silhouetteId=++WQ.silhouettesLength);let i=e.shaderBuilder;i.addDefine("HAS_SILHOUETTE",void 0,be.BOTH),i.addVertexLines(VX),i.addFragmentLines(RX),i.addUniform("vec4","model_silhouetteColor",be.FRAGMENT),i.addUniform("float","model_silhouetteSize",be.VERTEX),i.addUniform("bool","model_silhouettePass",be.BOTH);let o={model_silhouetteColor:function(){return t.silhouetteColor},model_silhouetteSize:function(){return t.silhouetteSize},model_silhouettePass:function(){return!1}};e.uniformMap=Lt(o,e.uniformMap),e.hasSilhouette=!0};var GX=WQ;var fvn=y(C(),1);var lvn=y(C(),1),ZX=`void modelSplitterStage() +{ + // Don't split when rendering the shadow map, because it is rendered from + // the perspective of a totally different camera. +#ifndef SHADOW_MAP + if (model_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (model_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; +#endif +} +`;var FQ={name:"ModelSplitterPipelineStage",SPLIT_DIRECTION_UNIFORM_NAME:"model_splitDirection"};FQ.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine("HAS_MODEL_SPLITTER",void 0,be.FRAGMENT),i.addFragmentLines(ZX);let o={};i.addUniform("float",FQ.SPLIT_DIRECTION_UNIFORM_NAME,be.FRAGMENT),o[FQ.SPLIT_DIRECTION_UNIFORM_NAME]=function(){return t.splitDirection},e.uniformMap=Lt(o,e.uniformMap)};var BX=FQ;var gvn=y(C(),1);function YHe(e,t){this.model=e.model,this.shaderBuilder=e.shaderBuilder.clone(),this.uniformMap=ke(e.uniformMap),this.alphaOptions=ke(e.alphaOptions),this.renderStateOptions=ke(e.renderStateOptions,!0),this.hasSilhouette=e.hasSilhouette,this.hasSkipLevelOfDetail=e.hasSkipLevelOfDetail,this.runtimeNode=t,this.attributes=[],this.attributeIndex=1,this.featureIdVertexAttributeSetIndex=0,this.instanceCount=0,this.primitiveRenderResources=[]}var wX=YHe;var Vvn=y(C(),1);var xvn=y(C(),1);function OHe(e){e=e??Y.EMPTY_OBJECT,this.lightingModel=e.lightingModel??jf.UNLIT}var XX=OHe;function HHe(e,t){this.model=e.model,this.runtimeNode=e.runtimeNode,this.attributes=e.attributes.slice(),this.attributeIndex=e.attributeIndex,this.featureIdVertexAttributeSetIndex=e.featureIdVertexAttributeSetIndex,this.uniformMap=ke(e.uniformMap),this.alphaOptions=ke(e.alphaOptions),this.renderStateOptions=ke(e.renderStateOptions,!0),this.hasSilhouette=e.hasSilhouette,this.hasSkipLevelOfDetail=e.hasSkipLevelOfDetail,this.shaderBuilder=e.shaderBuilder.clone(),this.instanceCount=e.instanceCount,this.runtimePrimitive=t;let n=t.primitive;this.count=l(n.indices)?n.indices.count:Mt.getAttributeBySemantic(n,"POSITION").count,this.hasPropertyTable=!1,this.indices=n.indices,this.wireframeIndexBuffer=void 0,this.primitiveType=n.primitiveType;let i=Mt.getPositionMinMax(n,this.runtimeNode.instancingTranslationMin,this.runtimeNode.instancingTranslationMax);this.positionMin=m.clone(i.min,new m),this.positionMax=m.clone(i.max,new m),this.boundingSphere=ue.fromCornerPoints(this.positionMin,this.positionMax,new ue),this.lightingOptions=new XX,this.pickId=void 0}var WX=HHe;var ZNn=y(C(),1);var kvn=y(C(),1);function VK(e){e=e??Y.EMPTY_OBJECT;let t=e.command,n=e.primitiveRenderResources,i=n.model;this._command=t,this._model=i,this._runtimePrimitive=n.runtimePrimitive,this._modelMatrix=t.modelMatrix,this._boundingVolume=t.boundingVolume,this._cullFace=t.renderState.cull.face;let o=i.classificationType;this._classificationType=o,this._classifiesTerrain=o!==$n.CESIUM_3D_TILE,this._classifies3DTiles=o!==$n.TERRAIN,this._useDebugWireframe=i._enableDebugWireframe&&i.debugWireframe,this._pickId=n.pickId,this._commandListTerrain=[],this._commandList3DTiles=[],this._commandListIgnoreShow=[],this._commandListDebugWireframe=[],this._commandListTerrainPicking=[],this._commandList3DTilesPicking=[],jHe(this)}function zHe(e){return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:!0,frontFunction:e,frontOperation:{fail:Ct.KEEP,zFail:Ct.DECREMENT_WRAP,zPass:Ct.KEEP},backFunction:e,backOperation:{fail:Ct.KEEP,zFail:Ct.INCREMENT_WRAP,zPass:Ct.KEEP},reference:jt.CESIUM_3D_TILE_MASK,mask:jt.CESIUM_3D_TILE_MASK},stencilMask:jt.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Fa.LESS_OR_EQUAL},depthMask:!1}}var KHe={stencilTest:{enabled:!0,frontFunction:ei.NOT_EQUAL,frontOperation:{fail:Ct.ZERO,zFail:Ct.ZERO,zPass:Ct.ZERO},backFunction:ei.NOT_EQUAL,backOperation:{fail:Ct.ZERO,zFail:Ct.ZERO,zPass:Ct.ZERO},reference:0,mask:jt.CLASSIFICATION_MASK},stencilMask:jt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:bn.PRE_MULTIPLIED_ALPHA_BLEND},JHe={stencilTest:{enabled:!0,frontFunction:ei.NOT_EQUAL,frontOperation:{fail:Ct.ZERO,zFail:Ct.ZERO,zPass:Ct.ZERO},backFunction:ei.NOT_EQUAL,backOperation:{fail:Ct.ZERO,zFail:Ct.ZERO,zPass:Ct.ZERO},reference:0,mask:jt.CLASSIFICATION_MASK},stencilMask:jt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1},Tde=[];function jHe(e){let t=e._command,n=Tde;if(e._useDebugWireframe){t.pass=Ge.OPAQUE,n.length=0,n.push(t),e._commandListDebugWireframe=FX(e,n,e._commandListDebugWireframe);let r=e._commandListDebugWireframe,s=r.length;for(let a=0;a<s;a++){let c=r[a];c.count*=2,c.offset*=2}return}let o=e.model.allowPicking;if(e._classifiesTerrain){let r=Ge.TERRAIN_CLASSIFICATION,s=RK(t,r),a=_de(t,r);n.length=0,n.push(s,a),e._commandListTerrain=FX(e,n,e._commandListTerrain),o&&(e._commandListTerrainPicking=Ede(e,n,e._commandListTerrainPicking))}if(e._classifies3DTiles){let r=Ge.CESIUM_3D_TILE_CLASSIFICATION,s=RK(t,r),a=_de(t,r);n.length=0,n.push(s,a),e._commandList3DTiles=FX(e,n,e._commandList3DTiles),o&&(e._commandList3DTilesPicking=Ede(e,n,e._commandList3DTilesPicking))}}function FX(e,t,n){let i=e._runtimePrimitive,o=i.batchLengths,r=i.batchOffsets,s=o.length,a=t.length;for(let c=0;c<s;c++){let d=o[c],u=r[c];for(let h=0;h<a;h++){let p=t[h],g=ot.shallowClone(p);g.count=d,g.offset=u,n.push(g)}}return n}function RK(e,t){let n=ot.shallowClone(e);n.cull=!1,n.pass=t;let i=t===Ge.TERRAIN_CLASSIFICATION?ei.ALWAYS:ei.EQUAL,o=zHe(i);return n.renderState=Qe.fromCache(o),n}function _de(e,t){let n=ot.shallowClone(e);return n.cull=!1,n.pass=t,n.renderState=Qe.fromCache(KHe),n}var qHe=[];function Ede(e,t,n){let i=Qe.fromCache(JHe),o=t[0],r=t[1],s=ot.shallowClone(o);s.cull=!0,s.pickOnly=!0;let a=ot.shallowClone(r);a.cull=!0,a.pickOnly=!0,a.renderState=i,a.pickId=e._pickId;let c=qHe;return c.length=0,c.push(s,a),FX(e,c,n)}Object.defineProperties(VK.prototype,{command:{get:function(){return this._command}},runtimePrimitive:{get:function(){return this._runtimePrimitive}},batchLengths:{get:function(){return this._runtimePrimitive.batchLengths}},batchOffsets:{get:function(){return this._runtimePrimitive.batchOffsets}},model:{get:function(){return this._model}},classificationType:{get:function(){return this._classificationType}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=X.clone(e,this._modelMatrix);let t=this._runtimePrimitive.boundingSphere;this._boundingVolume=ue.transform(t,this._modelMatrix,this._boundingVolume)}},boundingVolume:{get:function(){return this._boundingVolume}},cullFace:{get:function(){return this._cullFace},set:function(e){this._cullFace=e}}});VK.prototype.pushCommands=function(e,t){let n=e.passes;if(n.render){if(this._useDebugWireframe){ci(t,this._commandListDebugWireframe);return}if(this._classifiesTerrain&&ci(t,this._commandListTerrain),this._classifies3DTiles&&ci(t,this._commandList3DTiles),e.invertClassification&&this._classifies3DTiles){if(this._commandListIgnoreShow.length===0){let o=Ge.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,r=RK(this._command,o),s=Tde;s.length=0,s.push(r),this._commandListIgnoreShow=FX(this,s,this._commandListIgnoreShow)}ci(t,this._commandListIgnoreShow)}}return n.pick&&(this._classifiesTerrain&&ci(t,this._commandListTerrainPicking),this._classifies3DTiles&&ci(t,this._commandList3DTilesPicking)),t};var PX=VK;var uNn=y(C(),1);function PQ(e){e=e??Y.EMPTY_OBJECT;let t=e.command,n=e.primitiveRenderResources,i=n.model;this._model=i;let o=n.runtimePrimitive;this._runtimePrimitive=o;let r=t.pass===Ge.TRANSLUCENT,a=!o.primitive.material.doubleSided&&!r,c=n.hasSilhouette,d=!r&&!c,u=n.hasSkipLevelOfDetail&&!r,h=c;this._command=t,this._modelMatrix=X.clone(t.modelMatrix),this._boundingVolume=ue.clone(t.boundingVolume),this._modelMatrix2D=new X,this._boundingVolume2D=new ue,this._modelMatrix2DDirty=!1,this._backFaceCulling=t.renderState.cull.enabled,this._cullFace=t.renderState.cull.face,this._shadows=i.shadows,this._debugShowBoundingVolume=t.debugShowBoundingVolume,this._usesBackFaceCulling=a,this._needsTranslucentCommand=d,this._needsSkipLevelOfDetailCommands=u,this._needsSilhouetteCommands=h,this._originalCommand=void 0,this._translucentCommand=void 0,this._skipLodBackfaceCommand=void 0,this._skipLodStencilCommand=void 0,this._silhouetteModelCommand=void 0,this._silhouetteColorCommand=void 0,this._derivedCommands=[],this._has2DCommands=!1,$He(this)}function HA(e){this.command=e.command,this.updateShadows=e.updateShadows,this.updateBackFaceCulling=e.updateBackFaceCulling,this.updateCullFace=e.updateCullFace,this.updateDebugShowBoundingVolume=e.updateDebugShowBoundingVolume,this.is2D=e.is2D??!1,this.derivedCommand2D=void 0}HA.clone=function(e){return new HA({command:e.command,updateShadows:e.updateShadows,updateBackFaceCulling:e.updateBackFaceCulling,updateCullFace:e.updateCullFace,updateDebugShowBoundingVolume:e.updateDebugShowBoundingVolume,is2D:e.is2D,derivedCommand2D:e.derivedCommand2D})};function $He(e){let t=e._command;t.modelMatrix=e._modelMatrix,t.boundingVolume=e._boundingVolume;let n=e._model,i=e._usesBackFaceCulling,o=e._derivedCommands;e._originalCommand=new HA({command:t,updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0,is2D:!1}),o.push(e._originalCommand),e._needsTranslucentCommand&&(e._translucentCommand=new HA({command:sze(t),updateShadows:!0,updateBackFaceCulling:!1,updateCullFace:!1,updateDebugShowBoundingVolume:!0}),o.push(e._translucentCommand)),e._needsSkipLevelOfDetailCommands&&(e._skipLodBackfaceCommand=new HA({command:mze(t),updateShadows:!1,updateBackFaceCulling:!1,updateCullFace:i,updateDebugShowBoundingVolume:!1}),e._skipLodStencilCommand=new HA({command:hze(t,n),updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0}),o.push(e._skipLodBackfaceCommand),o.push(e._skipLodStencilCommand)),e._needsSilhouetteCommands&&(e._silhouetteModelCommand=new HA({command:aze(t,n),updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0}),e._silhouetteColorCommand=new HA({command:cze(t,n),updateShadows:!1,updateBackFaceCulling:!1,updateCullFace:!1,updateDebugShowBoundingVolume:!1}),o.push(e._silhouetteModelCommand),o.push(e._silhouetteColorCommand))}Object.defineProperties(PQ.prototype,{command:{get:function(){return this._command}},runtimePrimitive:{get:function(){return this._runtimePrimitive}},model:{get:function(){return this._model}},primitiveType:{get:function(){return this._command.primitiveType}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=X.clone(e,this._modelMatrix),this._modelMatrix2DDirty=!0,this._boundingVolume=ue.transform(this.runtimePrimitive.boundingSphere,this._modelMatrix,this._boundingVolume)}},boundingVolume:{get:function(){return this._boundingVolume}},shadows:{get:function(){return this._shadows},set:function(e){this._shadows=e,tze(this)}},backFaceCulling:{get:function(){return this._backFaceCulling},set:function(e){this._backFaceCulling!==e&&(this._backFaceCulling=e,nze(this))}},cullFace:{get:function(){return this._cullFace},set:function(e){this._cullFace!==e&&(this._cullFace=e,ize(this))}},debugShowBoundingVolume:{get:function(){return this._debugShowBoundingVolume},set:function(e){this._debugShowBoundingVolume!==e&&(this._debugShowBoundingVolume=e,oze(this))}}});function eze(e,t){let n=e._modelMatrix;e._modelMatrix2D=X.clone(n,e._modelMatrix2D),e._modelMatrix2D[13]-=Z.sign(n[13])*2*Z.PI*t.mapProjection.ellipsoid.maximumRadius,e._boundingVolume2D=ue.transform(e.runtimePrimitive.boundingSphere,e._modelMatrix2D,e._boundingVolume2D)}function tze(e){let t=e.shadows,n=Gn.castShadows(t),i=Gn.receiveShadows(t),o=e._derivedCommands;for(let r=0;r<o.length;++r){let s=o[r];if(s.updateShadows){let a=s.command;a.castShadows=n,a.receiveShadows=i}}}function nze(e){let t=e.backFaceCulling,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateBackFaceCulling){let r=o.command,s=ke(r.renderState,!0);s.cull.enabled=t,r.renderState=Qe.fromCache(s)}}}function ize(e){let t=e.cullFace,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateCullFace){let r=o.command,s=ke(r.renderState,!0);s.cull.face=t,r.renderState=Qe.fromCache(s)}}}function oze(e){let t=e.debugShowBoundingVolume,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateDebugShowBoundingVolume){let r=o.command;r.debugShowBoundingVolume=t}}}PQ.prototype.pushCommands=function(e,t){let n=Sde(this,e);n&&!this._has2DCommands&&(rze(this),this._has2DCommands=!0,this._modelMatrix2DDirty=!0),this._modelMatrix2DDirty&&(eze(this,e),this._modelMatrix2DDirty=!1);let i=this.model.styleCommandsNeeded;if(!(this._needsTranslucentCommand&&l(i)&&(i!==Rh.ALL_OPAQUE&&lT(t,this._translucentCommand,n),i===Rh.ALL_TRANSLUCENT))){if(this._needsSkipLevelOfDetailCommands){let{tileset:o,tile:r}=this._model.content;if(o.hasMixedContent){r._finalResolution||lT(o._backfaceCommands,this._skipLodBackfaceCommand,n),lze(this,r,n),lT(t,this._skipLodStencilCommand,n);return}}if(this._needsSilhouetteCommands){lT(t,this._silhouetteModelCommand,n);return}return lT(t,this._originalCommand,n),t}};PQ.prototype.pushSilhouetteCommands=function(e,t){let n=Sde(this,e);return lT(t,this._silhouetteColorCommand,n),t};function lT(e,t,n){e.push(t.command),n&&e.push(t.derivedCommand2D.command)}function Sde(e,t){if(t.mode!==re.SCENE2D||e.model._projectTo2D)return!1;let i=e.model.sceneGraph._boundingSphere2D,o=i.center.y-i.radius,r=i.center.y+i.radius,s=t.mapProjection.ellipsoid.maximumRadius*Z.PI;return o<s&&r>s||o<-s&&r>-s}function cT(e,t){if(!l(t))return;let n=HA.clone(t),i=ot.shallowClone(t.command);return i.modelMatrix=e._modelMatrix2D,i.boundingVolume=e._boundingVolume2D,n.command=i,n.updateShadows=!1,n.is2D=!0,t.derivedCommand2D=n,e._derivedCommands.push(n),n}function rze(e){cT(e,e._originalCommand),cT(e,e._translucentCommand),cT(e,e._skipLodBackfaceCommand),cT(e,e._skipLodStencilCommand),cT(e,e._silhouetteModelCommand),cT(e,e._silhouetteColorCommand)}function sze(e){let t=ot.shallowClone(e);t.pass=Ge.TRANSLUCENT;let n=ke(e.renderState,!0);return n.cull.enabled=!1,n.depthMask=!1,n.blending=bn.ALPHA_BLEND,t.renderState=Qe.fromCache(n),t}function aze(e,t){let n=t._silhouetteId%255,i=ot.shallowClone(e),o=ke(e.renderState,!0);return o.stencilTest={enabled:!0,frontFunction:ne.ALWAYS,backFunction:ne.ALWAYS,reference:n,mask:-1,frontOperation:{fail:ne.KEEP,zFail:ne.KEEP,zPass:ne.REPLACE},backOperation:{fail:ne.KEEP,zFail:ne.KEEP,zPass:ne.REPLACE}},t.isInvisible()&&(o.colorMask={red:!1,green:!1,blue:!1,alpha:!1}),i.renderState=Qe.fromCache(o),i}function cze(e,t){let n=t._silhouetteId%255,i=ot.shallowClone(e),o=ke(e.renderState,!0);o.cull.enabled=!1,(e.pass===Ge.TRANSLUCENT||t.silhouetteColor.alpha<1)&&(i.pass=Ge.TRANSLUCENT,o.depthMask=!1,o.blending=bn.ALPHA_BLEND),o.stencilTest={enabled:!0,frontFunction:ne.NOTEQUAL,backFunction:ne.NOTEQUAL,reference:n,mask:-1,frontOperation:{fail:ne.KEEP,zFail:ne.KEEP,zPass:ne.KEEP},backOperation:{fail:ne.KEEP,zFail:ne.KEEP,zPass:ne.KEEP}};let s=ke(e.uniformMap);return s.model_silhouettePass=function(){return!0},i.renderState=Qe.fromCache(o),i.uniformMap=s,i.castShadows=!1,i.receiveShadows=!1,i}function lze(e,t,n){let i=e._skipLodStencilCommand,o=i.command,r=t._selectionDepth,s=dze(o);if(r!==s){let a=uze(r),c=ke(o.renderState,!0);c.stencilTest.reference=a,o.renderState=Qe.fromCache(c),n&&(i.derivedCommand2D.renderState=c)}}function dze(e){return(e.renderState.stencilTest.reference&jt.SKIP_LOD_MASK)>>>jt.SKIP_LOD_BIT_SHIFT}function uze(e){return jt.CESIUM_3D_TILE_MASK|e<<jt.SKIP_LOD_BIT_SHIFT}function mze(e){let t=ot.shallowClone(e),n=ke(e.renderState,!0);n.cull.enabled=!0,n.cull.face=Xi.FRONT,n.colorMask={red:!1,green:!1,blue:!1,alpha:!1},n.polygonOffset={enabled:!0,factor:5,units:5};let i=ke(t.uniformMap),o=new D(5,5);return i.u_polygonOffset=function(){return o},t.renderState=Qe.fromCache(n),t.uniformMap=i,t.castShadows=!1,t.receiveShadows=!1,t}function hze(e){let t=ot.shallowClone(e),n=ke(e.renderState,!0),{stencilTest:i}=n;return i.enabled=!0,i.mask=jt.SKIP_LOD_MASK,i.reference=jt.CESIUM_3D_TILE_MASK,i.frontFunction=ei.GREATER_OR_EQUAL,i.frontOperation.zPass=Ct.REPLACE,i.backFunction=ei.GREATER_OR_EQUAL,i.backOperation.zPass=Ct.REPLACE,n.stencilMask=jt.CESIUM_3D_TILE_MASK|jt.SKIP_LOD_MASK,t.renderState=Qe.fromCache(n),t}var MX=PQ;var hNn=y(C(),1),vX=`precision highp float; + +czm_modelVertexOutput defaultVertexOutput(vec3 positionMC) { + czm_modelVertexOutput vsOutput; + vsOutput.positionMC = positionMC; + vsOutput.pointSize = 1.0; + return vsOutput; +} + +void main() +{ + // Initialize the attributes struct with all + // attributes except quantized ones. + ProcessedAttributes attributes; + initializeAttributes(attributes); + + #ifdef HAS_IMAGERY + initializeImageryAttributes(); + #endif + + // Dequantize the quantized ones and add them to the + // attributes struct. + #ifdef USE_DEQUANTIZATION + dequantizationStage(attributes); + #endif + + #ifdef HAS_MORPH_TARGETS + morphTargetsStage(attributes); + #endif + + #ifdef HAS_SKINNING + skinningStage(attributes); + #endif + + #ifdef HAS_PRIMITIVE_OUTLINE + primitiveOutlineStage(); + #endif + + // Compute the bitangent according to the formula in the glTF spec. + // Normal and tangents can be affected by morphing and skinning, so + // the bitangent should not be computed until their values are finalized. + #ifdef HAS_BITANGENTS + attributes.bitangentMC = normalize(cross(attributes.normalMC, attributes.tangentMC) * attributes.tangentSignMC); + #endif + + FeatureIds featureIds; + featureIdStage(featureIds, attributes); + + #ifdef HAS_SELECTED_FEATURE_ID + SelectedFeature feature; + selectedFeatureIdStage(feature, featureIds); + // Handle any show properties that come from the style. + cpuStylingStage(attributes.positionMC, feature); + #endif + + #if defined(USE_2D_POSITIONS) || defined(USE_2D_INSTANCING) + // The scene mode 2D pipeline stage and instancing stage add a different + // model view matrix to accurately project the model to 2D. However, the + // output positions and normals should be transformed by the 3D matrices + // to keep the data the same for the fragment shader. + mat4 modelView = czm_modelView3D; + mat3 normal = czm_normal3D; + #else + // These are used for individual model projection because they will + // automatically change based on the scene mode. + mat4 modelView = czm_modelView; + mat3 normal = czm_normal; + #endif + + // Update the position for this instance in place + #ifdef HAS_INSTANCING + + // The legacy instance stage is used when rendering i3dm models that + // encode instances transforms in world space, as opposed to glTF models + // that use EXT_mesh_gpu_instancing, where instance transforms are encoded + // in object space. + #ifdef USE_LEGACY_INSTANCING + mat4 instanceModelView; + mat3 instanceModelViewInverseTranspose; + + legacyInstancingStage(attributes, instanceModelView, instanceModelViewInverseTranspose); + + modelView = instanceModelView; + normal = instanceModelViewInverseTranspose; + #else + instancingStage(attributes); + #endif + + #ifdef USE_PICKING + v_pickColor = a_pickColor; + #endif + + #endif + + Metadata metadata; + MetadataClass metadataClass; + MetadataStatistics metadataStatistics; + metadataStage(metadata, metadataClass, metadataStatistics, attributes); + + #ifdef HAS_VERTICAL_EXAGGERATION + verticalExaggerationStage(attributes); + #endif + + #ifdef HAS_CUSTOM_VERTEX_SHADER + czm_modelVertexOutput vsOutput = defaultVertexOutput(attributes.positionMC); + customShaderStage(vsOutput, attributes, featureIds, metadata, metadataClass, metadataStatistics); + #endif + + // Compute the final position in each coordinate system needed. + // This returns the value that will be assigned to gl_Position. + vec4 positionClip = geometryStage(attributes, modelView, normal); + + // This must go after the geometry stage as it needs v_positionWC + #ifdef HAS_ATMOSPHERE + atmosphereStage(attributes); + #endif + + #ifdef ENABLE_CLIPPING_POLYGONS + modelClippingPolygonsStage(attributes); + #endif + + #ifdef HAS_SILHOUETTE + silhouetteStage(attributes, positionClip); + #endif + + #ifdef HAS_POINT_CLOUD_SHOW_STYLE + float show = pointCloudShowStylingStage(attributes, metadata); + #else + float show = 1.0; + #endif + + #ifdef HAS_POINT_CLOUD_BACK_FACE_CULLING + show *= pointCloudBackFaceCullingStage(); + #endif + + #ifdef HAS_POINT_CLOUD_COLOR_STYLE + v_pointCloudColor = pointCloudColorStylingStage(attributes, metadata); + #endif + + #ifdef PRIMITIVE_TYPE_POINTS + #ifdef HAS_CUSTOM_VERTEX_SHADER + gl_PointSize = vsOutput.pointSize; + #elif defined(HAS_POINT_CLOUD_POINT_SIZE_STYLE) || defined(HAS_POINT_CLOUD_ATTENUATION) + gl_PointSize = pointCloudPointSizeStylingStage(attributes, metadata); + #else + gl_PointSize = 1.0; + #endif + + gl_PointSize *= show; + #endif + + // Important NOT to compute gl_Position = show * positionClip or we hit: + // https://github.com/CesiumGS/cesium/issues/11270 + // + // We will discard points with v_pointCloudShow == 0 in the fragment shader. + gl_Position = positionClip; + + #ifdef HAS_POINT_CLOUD_SHOW_STYLE + v_pointCloudShow = show; + #endif +} +`;var pNn=y(C(),1),NX=` +precision highp float; + +czm_modelMaterial defaultModelMaterial() +{ + czm_modelMaterial material; + material.diffuse = vec3(0.0); + material.specular = vec3(1.0); + material.roughness = 1.0; + material.occlusion = 1.0; + material.normalEC = vec3(0.0, 0.0, 1.0); + material.emissive = vec3(0.0); + material.alpha = 1.0; + return material; +} + +vec4 handleAlpha(vec3 color, float alpha) +{ + #ifdef ALPHA_MODE_MASK + if (alpha < u_alphaCutoff) { + discard; + } + #endif + + return vec4(color, alpha); +} + +SelectedFeature selectedFeature; + +void main() +{ + #ifdef HAS_POINT_CLOUD_SHOW_STYLE + if (v_pointCloudShow == 0.0) + { + discard; + } + #endif + + #ifdef HAS_MODEL_SPLITTER + modelSplitterStage(); + #endif + + czm_modelMaterial material = defaultModelMaterial(); + + ProcessedAttributes attributes; + geometryStage(attributes); + + FeatureIds featureIds; + featureIdStage(featureIds, attributes); + + Metadata metadata; + MetadataClass metadataClass; + MetadataStatistics metadataStatistics; + metadataStage(metadata, metadataClass, metadataStatistics, attributes); + + //======================================================================== + // When not picking metadata START + #ifndef METADATA_PICKING_ENABLED + + #ifdef HAS_SELECTED_FEATURE_ID + selectedFeatureIdStage(selectedFeature, featureIds); + #endif + + #ifndef CUSTOM_SHADER_REPLACE_MATERIAL + materialStage(material, attributes, selectedFeature); + #endif + + #ifdef HAS_CUSTOM_FRAGMENT_SHADER + customShaderStage(material, attributes, featureIds, metadata, metadataClass, metadataStatistics); + #endif + + lightingStage(material, attributes); + + #ifdef HAS_SELECTED_FEATURE_ID + cpuStylingStage(material, selectedFeature); + #endif + + #ifdef HAS_MODEL_COLOR + modelColorStage(material); + #endif + + #ifdef HAS_PRIMITIVE_OUTLINE + primitiveOutlineStage(material); + #endif + + vec4 color = handleAlpha(material.diffuse, material.alpha); + + // When not picking metadata END + //======================================================================== + #else + //======================================================================== + // When picking metadata START + + vec4 metadataValues = vec4(0.0, 0.0, 0.0, 0.0); + metadataPickingStage(metadata, metadataClass, metadataValues); + vec4 color = metadataValues; + + #endif + // When picking metadata END + //======================================================================== + + #ifdef HAS_CLIPPING_PLANES + modelClippingPlanesStage(color); + #endif + + #ifdef ENABLE_CLIPPING_POLYGONS + modelClippingPolygonsStage(); + #endif + + //======================================================================== + // When not picking metadata START + #ifndef METADATA_PICKING_ENABLED + + #if defined(HAS_SILHOUETTE) && defined(HAS_NORMALS) + silhouetteStage(color); + #endif + + #ifdef HAS_ATMOSPHERE + atmosphereStage(color, attributes); + #endif + + #endif + // When not picking metadata END + //======================================================================== + + out_FragColor = color; +} + +`;function Lde(){}Lde.buildModelDrawCommand=function(e,t){let n=e.shaderBuilder,i=fze(e,n,t),o=pze(e,i,t),r=e.model;return l(r.classificationType)?new PX({primitiveRenderResources:e,command:o}):new MX({primitiveRenderResources:e,command:o})};function fze(e,t,n){t.addVertexLines(vX),t.addFragmentLines(NX);let i=e.model,o=t.buildShaderProgram(n.context);return i._pipelineResources.push(o),o}function pze(e,t,n){let i=Aze(e),o=new ui({context:n.context,indexBuffer:i,attributes:e.attributes}),r=e.model;r._pipelineResources.push(o);let s=e.alphaOptions.pass,a=r.sceneGraph,c=n.mode===re.SCENE3D,d,u;if(!c&&!n.scene3DOnly&&r._projectTo2D)d=X.multiplyTransformation(a._computedModelMatrix,e.runtimeNode.computedTransform,new X),u=e.runtimePrimitive.boundingSphere2D;else{let I=c?a._computedModelMatrix:a._computedModelMatrix2D;d=X.multiplyTransformation(I,e.runtimeNode.computedTransform,new X),u=ue.transform(e.boundingSphere,d)}let h=ke(Qe.fromCache(e.renderStateOptions),!0);h.cull.face=Mt.getCullFace(d,e.primitiveType),h=Qe.fromCache(h);let p=l(r.classificationType),g=p?!1:Gn.castShadows(r.shadows),f=p?!1:Gn.receiveShadows(r.shadows),b=p?void 0:e.pickId;return new ot({boundingVolume:u,modelMatrix:d,uniformMap:e.uniformMap,renderState:h,vertexArray:o,shaderProgram:t,cull:r.cull,pass:s,count:e.count,owner:r,pickId:b,pickMetadataAllowed:!0,instanceCount:e.instanceCount,primitiveType:e.primitiveType,debugShowBoundingVolume:r.debugShowBoundingVolume,castShadows:g,receiveShadows:f})}function Aze(e){let t=e.wireframeIndexBuffer;if(l(t))return t;let n=e.indices;if(l(n))return n.buffer}var DX=Lde;function Nc(e){e=e??Y.EMPTY_OBJECT;let t=e.modelComponents;this._model=e.model,this._components=t,this._pipelineStages=[],this._updateStages=[],this._runtimeNodes=[],this._rootNodes=[],this._skinnedNodes=[],this._runtimeSkins=[],this.modelPipelineStages=[],this._boundingSphere=void 0,this._boundingSphere2D=void 0,this._computedModelMatrix=X.clone(X.IDENTITY),this._computedModelMatrix2D=X.clone(X.IDENTITY),this._axisCorrectionMatrix=Mt.getAxisCorrectionMatrix(t.upAxis,t.forwardAxis,new X),this._runtimeArticulations={},gze(this)}Object.defineProperties(Nc.prototype,{components:{get:function(){return this._components}},computedModelMatrix:{get:function(){return this._computedModelMatrix}},axisCorrectionMatrix:{get:function(){return this._axisCorrectionMatrix}},boundingSphere:{get:function(){return this._boundingSphere}}});function gze(e){let t=e._components,n=t.scene,o=e._model.modelMatrix;Rde(e,o);let r=t.articulations,s=r.length,a=e._runtimeArticulations;for(let _=0;_<s;_++){let E=r[_],S=new ow({articulation:E,sceneGraph:e}),R=S.name;a[R]=S}let c=t.nodes,d=c.length;e._runtimeNodes=new Array(d);let h=n.nodes.length,p=X.IDENTITY;for(let _=0;_<h;_++){let E=n.nodes[_],S=Vde(e,E,p);e._rootNodes.push(S)}let g=t.skins,f=e._runtimeSkins,b=g.length;for(let _=0;_<b;_++){let E=g[_];f.push(new EX({skin:E,sceneGraph:e}))}let x=e._skinnedNodes,I=x.length;for(let _=0;_<I;_++){let E=x[_],S=e._runtimeNodes[E],G=c[E].skin.index;S._runtimeSkin=f[G],S.updateJointMatrices()}e.applyArticulations()}function Rde(e,t){let n=e._components,i=e._model;e._computedModelMatrix=X.multiplyTransformation(t,n.transform,e._computedModelMatrix),e._computedModelMatrix=X.multiplyTransformation(e._computedModelMatrix,e._axisCorrectionMatrix,e._computedModelMatrix),e._computedModelMatrix=X.multiplyByUniformScale(e._computedModelMatrix,i.computedScale,e._computedModelMatrix)}var bze=new m;function yze(e,t){let n=e._computedModelMatrix,i=X.getTranslation(n,bze);if(!m.equals(i,m.ZERO))e._computedModelMatrix2D=Dt.basisTo2D(t.mapProjection,n,e._computedModelMatrix2D);else{let o=e.boundingSphere.center,r=Dt.ellipsoidTo2DModelMatrix(t.mapProjection,o,e._computedModelMatrix2D);e._computedModelMatrix2D=X.multiply(r,n,e._computedModelMatrix2D)}e._boundingSphere2D=ue.transform(e._boundingSphere,e._computedModelMatrix2D,e._boundingSphere2D)}function Vde(e,t,n){let i=[],o=Mt.getNodeTransform(t),r=t.children.length;for(let u=0;u<r;u++){let h=t.children[u],p=X.multiplyTransformation(n,o,new X),g=Vde(e,h,p);i.push(g)}let s=new yw({node:t,transform:o,transformToRoot:n,children:i,sceneGraph:e}),a=t.primitives.length;for(let u=0;u<a;u++)s.runtimePrimitives.push(new _X({primitive:t.primitives[u],node:t,model:e._model}));let c=t.index;e._runtimeNodes[c]=s,l(t.skin)&&e._skinnedNodes.push(c);let d=t.name;if(l(d)){let u=e._model,h=new uw(u,s);u._nodesByName[d]=h}return c}var Cze=new m,xze=new m,Ize=new m,_ze=new m;Nc.prototype.buildDrawCommands=function(e){let t=this.buildRenderResources(e);this.computeBoundingVolumes(t),this.createDrawCommands(t,e)};Nc.prototype.buildRenderResources=function(e){let t=this._model,n=new LX(t);t.statistics.clear(),this.configurePipeline(e);let i=this.modelPipelineStages;for(let o=0;o<i.length;o++)i[o].process(n,t,e);for(let o=0;o<this._runtimeNodes.length;o++){let r=this._runtimeNodes[o];if(!l(r))continue;r.configurePipeline();let s=r.pipelineStages,a=new wX(n,r);n.nodeRenderResources[o]=a;for(let c=0;c<s.length;c++)s[c].process(a,r.node,e);for(let c=0;c<r.runtimePrimitives.length;c++){let d=r.runtimePrimitives[c];d.configurePipeline(e);let u=d.pipelineStages,h=new WX(a,d);a.primitiveRenderResources[c]=h;for(let p=0;p<u.length;p++)u[p].process(h,d.primitive,e)}}return n};Nc.prototype.computeBoundingVolumes=function(e){let t=this._model,n=m.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,Cze),i=m.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,xze);for(let o=0;o<this._runtimeNodes.length;o++){let r=this._runtimeNodes[o];if(!l(r))continue;let s=e.nodeRenderResources[o],a=r.computedTransform;for(let c=0;c<r.runtimePrimitives.length;c++){let d=r.runtimePrimitives[c],u=s.primitiveRenderResources[c];d.boundingSphere=ue.clone(u.boundingSphere,new ue);let h=X.multiplyByPoint(a,u.positionMin,Ize),p=X.multiplyByPoint(a,u.positionMax,_ze);m.minimumByComponent(n,h,n),m.maximumByComponent(i,p,i)}}this._boundingSphere=ue.fromCornerPoints(n,i,new ue),this._boundingSphere=ue.transformWithoutScale(this._boundingSphere,this._axisCorrectionMatrix,this._boundingSphere),this._boundingSphere=ue.transform(this._boundingSphere,this._components.transform,this._boundingSphere),t._boundingSphere=ue.transform(this._boundingSphere,t.modelMatrix,t._boundingSphere),t._initialRadius=t._boundingSphere.radius,t._boundingSphere.radius*=t._clampedScale};Nc.prototype.createDrawCommands=function(e,t){for(let n=0;n<this._runtimeNodes.length;n++){let i=this._runtimeNodes[n];if(!l(i))continue;let o=e.nodeRenderResources[n];for(let r=0;r<i.runtimePrimitives.length;r++){let s=i.runtimePrimitives[r],a=o.primitiveRenderResources[r],c=DX.buildModelDrawCommand(a,t);s.drawCommand=c}}};Nc.prototype.configurePipeline=function(e){let t=this.modelPipelineStages;t.length=0;let n=this._model,i=e.fog.enabled&&e.fog.renderable;l(n.color)&&t.push(s0),!l(n.classificationType)&&(n.imageBasedLighting.enabled&&t.push(nw),n.isClippingEnabled()&&t.push(aw),n.isClippingPolygonsEnabled()&&t.push(dw),n.hasSilhouette(e)&&t.push(GX),l(n.splitDirection)&&n.splitDirection!==Ir.NONE&&t.push(BX),Tr.is3DTiles(n.type)&&t.push(jB),i&&t.push(ew))};Nc.prototype.update=function(e,t){let n,i,o;for(n=0;n<this._runtimeNodes.length;n++){let r=this._runtimeNodes[n];if(!l(r))continue;for(i=0;i<r.updateStages.length;i++)r.updateStages[i].update(r,this,e);let s=e.mode!==re.SCENE3D&&this._model._projectTo2D;for(t&&!s&&this.updateJointMatrices(),i=0;i<r.runtimePrimitives.length;i++){let a=r.runtimePrimitives[i];for(o=0;o<a.updateStages.length;o++)a.updateStages[o].update(a,this)}}};Nc.prototype.updateModelMatrix=function(e,t){Rde(this,e),t.mode!==re.SCENE3D&&yze(this,t);let n=this._rootNodes;for(let i=0;i<n.length;i++){let o=this._runtimeNodes[n[i]];o._transformDirty=!0}};Nc.prototype.updateJointMatrices=function(){let e=this._skinnedNodes,t=e.length;for(let n=0;n<t;n++){let i=e[n];this._runtimeNodes[i].updateJointMatrices()}};function Gde(e,t,n,i,o){if(n&&!t.show)return;let r=t.children.length;for(let c=0;c<r;c++){let d=t.getChild(c);Gde(e,d,n,i,o)}let s=t.runtimePrimitives,a=s.length;for(let c=0;c<a;c++){let d=s[c];i(d,o)}}function MQ(e,t,n,i){let o=e._rootNodes,r=o.length;for(let s=0;s<r;s++){let a=o[s],c=e._runtimeNodes[a];Gde(e,c,t,n,i)}}var Eze={backFaceCulling:void 0};Nc.prototype.updateBackFaceCulling=function(e){let t=Eze;t.backFaceCulling=e,MQ(this,!1,Tze,t)};function Tze(e,t){let n=e.drawCommand;n.backFaceCulling=t.backFaceCulling}var Sze={shadowMode:void 0};Nc.prototype.updateShadows=function(e){let t=Sze;t.shadowMode=e,MQ(this,!1,Lze,t)};function Lze(e,t){let n=e.drawCommand;n.shadows=t.shadowMode}var Rze={debugShowBoundingVolume:void 0};Nc.prototype.updateShowBoundingVolume=function(e){let t=Rze;t.debugShowBoundingVolume=e,MQ(this,!1,Vze,t)};function Vze(e,t){let n=e.drawCommand;n.debugShowBoundingVolume=t.debugShowBoundingVolume}var Zde=[],Gze={frameState:void 0,hasSilhouette:void 0};Nc.prototype.pushDrawCommands=function(e){let t=Zde;t.length=0;let n=Gze;n.hasSilhouette=this._model.hasSilhouette(e),n.frameState=e,MQ(this,!0,Zze,n),ci(e.commandList,t)};function Zze(e,t){let n=t.frameState,i=t.hasSilhouette,o=n.passes,r=Zde,s=e.drawCommand;s.pushCommands(n,n.commandList),i&&!o.pick&&s.pushSilhouetteCommands(n,r)}Nc.prototype.setArticulationStage=function(e,t){let n=e.split(" ");if(n.length!==2)return;let i=n[0],o=n[1],r=this._runtimeArticulations[i];l(r)&&r.setArticulationStage(o,t)};Nc.prototype.applyArticulations=function(){let e=this._runtimeArticulations;for(let t in e)e.hasOwnProperty(t)&&e[t].apply()};var QX=Nc;var d9n=y(C(),1);function m0(){this.pointsLength=0,this.trianglesLength=0,this.geometryByteLength=0,this.texturesByteLength=0,this.propertyTablesByteLength=0,this._bufferIdSet={},this._textureIdByteLengths={},this._batchTextureIdMap=new Bt}Object.defineProperties(m0.prototype,{batchTexturesByteLength:{get:function(){let e=this._batchTextureIdMap.length,t=this._batchTextureIdMap.values,n=0;for(let i=0;i<e;i++)n+=t[i].byteLength;return n}}});m0.prototype.clear=function(){this.pointsLength=0,this.trianglesLength=0,this.geometryByteLength=0,this.texturesByteLength=0,this.propertyTablesByteLength=0,this._bufferIdSet={},this._textureIdByteLengths={},this._batchTextureIdMap.removeAll()};m0.prototype.addBuffer=function(e,t){if(!this._bufferIdSet.hasOwnProperty(e._id)){let n=t?2:1;this.geometryByteLength+=e.sizeInBytes*n}this._bufferIdSet[e._id]=!0};m0.prototype.addTexture=function(e){this._textureIdByteLengths.hasOwnProperty(e._id)||(this.texturesByteLength+=e.sizeInBytes,this._textureIdByteLengths[e._id]=e.sizeInBytes)};m0.prototype.getTextureIds=function(){return Object.keys(this._textureIdByteLengths)};m0.prototype.getTextureByteLengthById=function(e){return this._textureIdByteLengths[e]};m0.prototype.addBatchTexture=function(e){this._batchTextureIdMap.contains(e._id)||this._batchTextureIdMap.set(e._id,e)};var UX=m0;var O9n=y(C(),1);var Wde=y(T9(),1);var I9n=y(C(),1);var Bde={},dx=Uint32Array.BYTES_PER_ELEMENT;Bde.parse=function(e,t){t=t??0;let n=new Uint8Array(e),i=new DataView(e);t+=dx;let o=i.getUint32(t,!0);if(o!==1)throw new de(`Only Point Cloud tile version 1 is supported. Version ${o} is not.`);t+=dx,t+=dx;let r=i.getUint32(t,!0);if(r===0)throw new de("Feature table must have a byte length greater than zero");t+=dx;let s=i.getUint32(t,!0);t+=dx;let a=i.getUint32(t,!0);t+=dx;let c=i.getUint32(t,!0);t+=dx;let d=mr(n,t,r);t+=r;let u=new Uint8Array(e,t,s);t+=s;let h,p;a>0&&(h=mr(n,t,a),t+=a,c>0&&(p=new Uint8Array(e,t,c),t+=c));let g=new Sh(d,u),f=g.getGlobalProperty("POINTS_LENGTH");if(g.featuresLength=f,!l(f))throw new de("Feature table global property: POINTS_LENGTH must be defined");let b=g.getGlobalProperty("RTC_CENTER",J.FLOAT,3);l(b)&&(b=m.unpack(b));let x=Bze(g,h);if(x.rtcCenter=b,x.pointsLength=f,!x.hasPositions){let I=wze(g);x.positions=I,x.hasPositions=x.hasPositions||l(I)}if(!x.hasPositions)throw new de("Either POSITION or POSITION_QUANTIZED must be defined.");if(!x.hasNormals){let I=Wze(g);x.normals=I,x.hasNormals=x.hasNormals||l(I)}if(!x.hasColors){let I=Xze(g);x.colors=I,x.hasColors=x.hasColors||l(I),x.hasConstantColor=l(x.constantColor),x.isTranslucent=l(I)&&I.isTranslucent}if(!x.hasBatchIds){let I=Fze(g);x.batchIds=I,x.hasBatchIds=x.hasBatchIds||l(I)}if(x.hasBatchIds){let I=g.getGlobalProperty("BATCH_LENGTH");if(!l(I))throw new de("Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.");x.batchLength=I}return l(p)&&(p=new Uint8Array(p),x.batchTableJson=h,x.batchTableBinary=p),x};function Bze(e,t){let n=e.json,i,o,r,s=l(n.extensions)?n.extensions["3DTILES_draco_point_compression"]:void 0,a=l(t)&&l(t.extensions)?t.extensions["3DTILES_draco_point_compression"]:void 0;l(a)&&(r=a.properties);let c,d,u,h,p;if(l(s)){o=s.properties;let f=s.byteOffset,b=s.byteLength;if(!l(o)||!l(f)||!l(b))throw new de("Draco properties, byteOffset, and byteLength must be defined");i=e.buffer.slice(f,f+b),c=l(o.POSITION),d=l(o.RGB)||l(o.RGBA),u=l(o.NORMAL),h=l(o.BATCH_ID),p=l(o.RGBA)}let g;return l(i)&&(g={buffer:i,featureTableProperties:o,batchTableProperties:r,properties:Lt(o,r),dequantizeInShader:!0}),{draco:g,hasPositions:c,hasColors:d,isTranslucent:p,hasNormals:u,hasBatchIds:h}}function wze(e){let t=e.json,n;if(l(t.POSITION))return n=e.getPropertyArray("POSITION",J.FLOAT,3),{name:lt.POSITION,semantic:lt.POSITION,typedArray:n,isQuantized:!1,componentDatatype:J.FLOAT,type:kt.VEC3};if(l(t.POSITION_QUANTIZED)){n=e.getPropertyArray("POSITION_QUANTIZED",J.UNSIGNED_SHORT,3);let i=e.getGlobalProperty("QUANTIZED_VOLUME_SCALE",J.FLOAT,3);if(!l(i))throw new de("Global property: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");let o=65535,r=e.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",J.FLOAT,3);if(!l(r))throw new de("Global property: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");return{name:lt.POSITION,semantic:lt.POSITION,typedArray:n,isQuantized:!0,componentDatatype:J.FLOAT,type:kt.VEC3,quantizedRange:o,quantizedVolumeOffset:m.unpack(r),quantizedVolumeScale:m.unpack(i),quantizedComponentDatatype:J.UNSIGNED_SHORT,quantizedType:kt.VEC3}}}function Xze(e){let t=e.json,n;if(l(t.RGBA))return n=e.getPropertyArray("RGBA",J.UNSIGNED_BYTE,4),{name:lt.COLOR,semantic:lt.COLOR,setIndex:0,typedArray:n,componentDatatype:J.UNSIGNED_BYTE,type:kt.VEC4,normalized:!0,isRGB565:!1,isTranslucent:!0};if(l(t.RGB))return n=e.getPropertyArray("RGB",J.UNSIGNED_BYTE,3),{name:"COLOR",semantic:lt.COLOR,setIndex:0,typedArray:n,componentDatatype:J.UNSIGNED_BYTE,type:kt.VEC3,normalized:!0,isRGB565:!1,isTranslucent:!1};if(l(t.RGB565))return n=e.getPropertyArray("RGB565",J.UNSIGNED_SHORT,1),{name:"COLOR",semantic:lt.COLOR,setIndex:0,typedArray:n,componentDatatype:J.FLOAT,type:kt.VEC3,normalized:!1,isRGB565:!0,isTranslucent:!1};if(l(t.CONSTANT_RGBA)){let i=e.getGlobalProperty("CONSTANT_RGBA",J.UNSIGNED_BYTE,4),o=i[3],r=U.fromBytes(i[0],i[1],i[2],o),s=o<255;return{name:lt.COLOR,semantic:lt.COLOR,setIndex:0,constantColor:r,componentDatatype:J.FLOAT,type:kt.VEC4,isQuantized:!1,isTranslucent:s}}}function Wze(e){let t=e.json,n;if(l(t.NORMAL))return n=e.getPropertyArray("NORMAL",J.FLOAT,3),{name:lt.NORMAL,semantic:lt.NORMAL,typedArray:n,octEncoded:!1,octEncodedZXY:!1,componentDatatype:J.FLOAT,type:kt.VEC3};if(l(t.NORMAL_OCT16P))return n=e.getPropertyArray("NORMAL_OCT16P",J.UNSIGNED_BYTE,2),{name:lt.NORMAL,semantic:lt.NORMAL,typedArray:n,octEncoded:!0,octEncodedZXY:!1,quantizedRange:(1<<8)-1,quantizedType:kt.VEC2,quantizedComponentDatatype:J.UNSIGNED_BYTE,componentDatatype:J.FLOAT,type:kt.VEC3}}function Fze(e){let t=e.json;if(l(t.BATCH_ID)){let n=e.getPropertyArray("BATCH_ID",J.UNSIGNED_SHORT,1);return{name:lt.FEATURE_ID,semantic:lt.FEATURE_ID,setIndex:0,typedArray:n,componentDatatype:J.fromTypedArray(n),type:kt.SCALAR}}}var ux=Bde;var Pze=Tn.Components,Mze=Tn.Scene,vze=Tn.Node,Nze=Tn.Primitive,Dze=Tn.Attribute,wde=Tn.Quantization,Qze=Tn.FeatureIdAttribute,Uze=Tn.Material,kze=Tn.MetallicRoughness;function h0(e){e=e??Y.EMPTY_OBJECT;let t=e.arrayBuffer,n=e.byteOffset??0;this._arrayBuffer=t,this._byteOffset=n,this._loadAttributesFor2D=e.loadAttributesFor2D??!1,this._parsedContent=void 0,this._decodePromise=void 0,this._decodedAttributes=void 0,this._promise=void 0,this._error=void 0,this._state=ft.UNLOADED,this._buffers=[],this._components=void 0,this._transform=X.IDENTITY}l(Object.create)&&(h0.prototype=Object.create(Yi.prototype),h0.prototype.constructor=h0);Object.defineProperties(h0.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}},transform:{get:function(){return this._transform}}});h0.prototype.load=function(){if(l(this._promise))return this._promise;this._parsedContent=ux.parse(this._arrayBuffer,this._byteOffset),this._state=ft.PROCESSING,this._promise=Promise.resolve(this)};h0.prototype.process=function(e){if(l(this._error)){let t=this._error;throw this._error=void 0,t}if(this._state===ft.READY)return!0;if(this._state===ft.PROCESSING){if(l(this._decodePromise))return!1;this._decodePromise=Yze(this,e.context)}return!1};function Yze(e,t){let i=e._parsedContent.draco,o;if(l(i)?o=TA.decodePointCloud(i,t):o=Promise.resolve(),!!l(o))return e._decodePromise=o,o.then(function(r){if(!e.isDestroyed())return l(r)&&Oze(e,i,r),iKe(e,t),e._state=ft.READY,e}).catch(function(r){e.unload(),e._state=ft.FAILED;let s="Failed to load Draco pnts";e._error=e.getError(s,r)})}function Oze(e,t,n){e._state=ft.READY;let i=e._parsedContent,o;if(l(n.POSITION)){if(o={name:"POSITION",semantic:lt.POSITION,typedArray:n.POSITION.array,componentDatatype:J.FLOAT,type:kt.VEC3,isQuantized:!1},l(n.POSITION.data.quantization)){let a=n.POSITION.data.quantization,c=a.range,d=m.fromElements(c,c,c),u=m.unpack(a.minValues),h=(1<<a.quantizationBits)-1;o.isQuantized=!0,o.quantizedRange=h,o.quantizedVolumeOffset=u,o.quantizedVolumeScale=d,o.quantizedComponentDatatype=h<=255?J.UNSIGNED_BYTE:J.UNSIGNED_SHORT,o.quantizedType=kt.VEC3}i.positions=o}if(l(n.NORMAL)){if(o={name:"NORMAL",semantic:lt.NORMAL,typedArray:n.NORMAL.array,componentDatatype:J.FLOAT,type:kt.VEC3,isQuantized:!1,octEncoded:!1,octEncodedZXY:!1},l(n.NORMAL.data.quantization)){let a=(1<<n.NORMAL.data.quantization.quantizationBits)-1;o.quantizedRange=a,o.octEncoded=!0,o.octEncodedZXY=!0,o.quantizedComponentDatatype=J.UNSIGNED_BYTE,o.quantizedType=kt.VEC2}i.normals=o}if(l(n.RGBA)?i.colors={name:"COLOR",semantic:lt.COLOR,setIndex:0,typedArray:n.RGBA.array,componentDatatype:J.UNSIGNED_BYTE,type:kt.VEC4,normalized:!0,isTranslucent:!0}:l(n.RGB)&&(i.colors={name:"COLOR",semantic:lt.COLOR,setIndex:0,typedArray:n.RGB.array,componentDatatype:J.UNSIGNED_BYTE,type:kt.VEC3,normalized:!0,isTranslucent:!1}),l(n.BATCH_ID)){let a=n.BATCH_ID.array;i.batchIds={name:"_FEATURE_ID",semantic:lt.FEATURE_ID,setIndex:0,typedArray:a,componentDatatype:J.fromTypedArray(a),type:kt.SCALAR}}let r=i.batchTableJson,s=t.batchTableProperties;for(let a in s)if(s.hasOwnProperty(a)){let c=n[a];l(r)||(r={}),i.hasDracoBatchTable=!0;let d=c.data;r[a]={byteOffset:d.byteOffset,type:Hze(d.componentsPerAttribute),componentType:zze(d.componentDatatype),typedArray:c.array}}i.batchTableJson=r}function Hze(e){switch(e){case 1:return"SCALAR";case 2:return"VEC2";case 3:return"VEC3";case 4:return"VEC4"}}function zze(e){switch(e){case ne.BYTE:return"BYTE";case ne.UNSIGNED_BYTE:return"UNSIGNED_BYTE";case ne.SHORT:return"SHORT";case ne.UNSIGNED_SHORT:return"UNSIGNED_SHORT";case ne.INT:return"INT";case ne.UNSIGNED_INT:return"UNSIGNED_INT";case ne.DOUBLE:return"DOUBLE";case ne.FLOAT:return"FLOAT"}}function kX(e,t,n){let i=t.typedArray,o;if(t.octEncoded&&(o=new wde,o.octEncoded=t.octEncoded,o.octEncodedZXY=t.octEncodedZXY,o.normalizationRange=t.quantizedRange,o.type=t.quantizedType,o.componentDatatype=t.quantizedComponentDatatype),t.isQuantized){o=new wde;let a=t.quantizedRange;o.normalizationRange=a,o.quantizedVolumeOffset=m.ZERO;let c=t.quantizedVolumeScale;o.quantizedVolumeDimensions=c,o.quantizedVolumeStepSize=m.divideByScalar(c,a,new m),o.componentDatatype=t.quantizedComponentDatatype,o.type=t.quantizedType}let r=new Dze;if(r.name=t.name,r.semantic=t.semantic,r.setIndex=t.setIndex,r.componentDatatype=t.componentDatatype,r.type=t.type,r.normalized=t.normalized??!1,r.min=t.min,r.max=t.max,r.quantization=o,t.isRGB565&&(i=Mn.decodeRGB565(i)),l(t.constantColor)){let a=new Array(4);r.constant=U.pack(t.constantColor,a)}else{let a=It.createVertexBuffer({typedArray:i,context:n,usage:Ne.STATIC_DRAW});a.vertexArrayDestroyable=!1,e._buffers.push(a),r.buffer=a}let s=e._loadAttributesFor2D;return r.semantic===lt.POSITION&&s&&(r.typedArray=i),r}var Xde,vQ;function Kze(e){if(!l(vQ)){Xde=new Wde.default(0),vQ=new Array(e);for(let t=0;t<e;++t)vQ[t]=Xde.random()}return vQ}var Jze=new m,jze=new m,qze=new m;function $ze(e){let t=e.typedArray,n=20,i=t.length/3,o=Math.min(i,n),r=Kze(n),s=Number.MAX_VALUE,a=-Number.MAX_VALUE,c=m.fromElements(s,s,s,Jze),d=m.fromElements(a,a,a,jze),u,h,p;if(e.isQuantized)c=m.ZERO,d=e.quantizedVolumeScale;else for(u=0;u<o;++u)h=Math.floor(r[u]*i),p=m.unpack(t,h*3,qze),m.minimumByComponent(c,p,c),m.maximumByComponent(d,p,d);e.min=m.clone(c),e.max=m.clone(d)}var eKe={name:lt.COLOR,semantic:lt.COLOR,setIndex:0,constantColor:U.DARKGRAY,componentDatatype:J.FLOAT,type:kt.VEC4,isQuantized:!1,isTranslucent:!1};function tKe(e,t,n){let i=[],o,r=t.positions;return l(r)&&($ze(r),o=kX(e,r,n),o.count=t.pointsLength,i.push(o)),l(t.normals)&&(o=kX(e,t.normals,n),i.push(o)),l(t.colors)?(o=kX(e,t.colors,n),i.push(o)):(o=kX(e,eKe,n),i.push(o)),l(t.batchIds)&&(o=kX(e,t.batchIds,n),i.push(o)),i}function nKe(e,t){let n=e.batchLength,i=e.pointsLength,o=e.batchTableBinary,r=!l(e.batchIds);return l(o)||e.hasDracoBatchTable?PA({count:n??i,batchTable:e.batchTableJson,binaryBody:o,parseAsPropertyAttributes:r,customAttributeOutput:t}):new fa({schema:{},propertyTables:[]})}function iKe(e,t){let n=e._parsedContent,i=new kze;i.metallicFactor=0,i.roughnessFactor=.9;let o=new Uze;o.metallicRoughness=i;let r=n.colors;l(r)&&r.isTranslucent&&(o.alphaMode=Yf.BLEND);let s=!l(n.normals);o.unlit=s;let a=new Nze;if(a.attributes=tKe(e,n,t),a.primitiveType=We.POINTS,a.material=o,l(n.batchIds)){let g=new Qze;g.propertyTableId=0,g.setIndex=0,g.positionalLabel="featureId_0",a.featureIds.push(g)}let c=new vze;c.index=0,c.primitives=[a];let d=new Mze;d.nodes=[c],d.upAxis=ho.Z,d.forwardAxis=ho.X;let u=new Pze;u.scene=d,u.nodes=[c];let h=[];u.structuralMetadata=nKe(n,h),h.length>0&&oKe(e,a,h,t),l(n.rtcCenter)&&(u.transform=X.multiplyByTranslation(u.transform,n.rtcCenter,u.transform));let p=n.positions;l(p)&&p.isQuantized&&(u.transform=X.multiplyByTranslation(u.transform,p.quantizedVolumeOffset,u.transform)),e._components=u,e._parsedContent=void 0,e._arrayBuffer=void 0}function oKe(e,t,n,i){let o=t.attributes,r=n.length;for(let s=0;s<r;s++){let a=n[s],c=It.createVertexBuffer({typedArray:a.typedArray,context:i,usage:Ne.STATIC_DRAW});c.vertexArrayDestroyable=!1,e._buffers.push(c),a.buffer=c,a.typedArray=void 0,o.push(a)}t.propertyAttributeIds=[0]}h0.prototype.unload=function(){let e=this._buffers;for(let t=0;t<e.length;t++)e[t].destroy();e.length=0,this._components=void 0,this._parsedContent=void 0,this._arrayBuffer=void 0};var YX=h0;var uDn=y(C(),1);var rKe=new m,sKe=new m,aKe=new m,cKe=new X,lKe=new X,dKe=new X,uKe=new ge,mKe=new ue;function dT(e,t,n,i,o,r,s){if(!e._ready||n.mode===re.MORPHING)return;let a=Number.MAX_VALUE,c=e.sceneGraph,d=c._runtimeNodes;for(let u=0;u<d.length;u++){let h=d[u],p=h.node,g=X.clone(h.computedTransform,cKe),f=X.clone(c.computedModelMatrix,lKe),b=p.instances;l(b)&&b.transformInWorldSpace&&(f=X.multiplyTransformation(e.modelMatrix,c.components.transform,f),g=X.multiplyTransformation(c.axisCorrectionMatrix,h.computedTransform,g));let x=X.multiplyTransformation(f,g,dKe);n.mode!==re.SCENE3D&&(x=Dt.basisTo2D(n.mapProjection,x,x));let I=[];if(l(b)){let E=b.attributes[0].count,S=b.attributes[0].componentDatatype,R=12,G=h.transformsTypedArray;if(!l(G)){let B=h.instancingTransformsBuffer;l(B)&&n.context.webgl2&&(G=J.createTypedArray(S,E*R),B.getBufferData(G))}if(l(G))for(let B=0;B<E;B++){let w=B*R,F=new X(G[w],G[w+1],G[w+2],G[w+3],G[w+4],G[w+5],G[w+6],G[w+7],G[w+8],G[w+9],G[w+10],G[w+11],0,0,0,1);b.transformInWorldSpace?(X.multiplyTransformation(F,g,F),X.multiplyTransformation(f,F,F)):X.multiplyTransformation(F,x,F),I.push(F)}}I.length===0&&I.push(x);let _=h.runtimePrimitives.length;for(let E=0;E<_;E++){let S=h.runtimePrimitives[E],R=S.primitive;if(l(S.boundingSphere)&&!l(b)){let H=ue.transform(S.boundingSphere,x,mKe),ee=fi.raySphere(t,H);if(!l(ee))continue}let G=Mt.getAttributeBySemantic(R,lt.POSITION),B=G.byteOffset,w=G.byteStride,F=G.count;if(!l(R.indices))continue;let P=R.indices.typedArray;if(!l(P)){let H=R.indices.buffer,ee=R.indices.count,K=R.indices.indexDatatype;l(H)&&n.context.webgl2&&(K===Me.UNSIGNED_BYTE?P=new Uint8Array(ee):K===Me.UNSIGNED_SHORT?P=new Uint16Array(ee):K===Me.UNSIGNED_INT&&(P=new Uint32Array(ee)),H.getBufferData(P))}let A=G.typedArray,T=G.componentDatatype,L=G.type,V=G.quantization;l(V)&&(T=G.quantization.componentDatatype,L=G.quantization.type);let W=kt.getNumberOfComponents(L),M=J.getSizeInBytes(T),Q=!l(A)&&l(w)&&w!==W*M,N=W,k=0;Q&&(N=w/M,k=B/M);let v=F*N;if(!l(A)){let H=G.buffer;l(H)&&n.context.webgl2&&(A=J.createTypedArray(T,v),H.getBufferData(A,Q?0:B,0,v)),V&&G.normalized&&(A=Mn.dequantize(A,T,L,F))}if(!l(P)||!l(A))return;r=r??ie.default,i=i??1,o=o??0;let O=P.length;for(let H=0;H<O;H+=3){let ee=P[H],K=P[H+1],te=P[H+2];for(let q of I){let pe=GK(A,ee,k,N,V,q,i,o,r,rKe),ye=GK(A,K,k,N,V,q,i,o,r,sKe),he=GK(A,te,k,N,V,q,i,o,r,aKe),xe=fi.rayTriangleParametric(t,pe,ye,he,e.backFaceCulling??!0);l(xe)&&xe<a&&xe>=0&&(a=xe)}}}}if(a!==Number.MAX_VALUE){if(s=En.getPoint(t,a,s),n.mode!==re.SCENE3D){m.fromElements(s.y,s.z,s.x,s);let u=n.mapProjection,h=u.ellipsoid,p=u.unproject(s,uKe);h.cartographicToCartesian(p,s)}return s}}function GK(e,t,n,i,o,r,s,a,c,d){let u=n+t*i;if(d.x=e[u],d.y=e[u+1],d.z=e[u+2],l(o))if(o.octEncoded){if(d=Mn.octDecodeInRange(d,o.normalizationRange,d),o.octEncodedZXY){let h=d.x;d.x=d.z,d.z=d.y,d.y=h}}else d=m.multiplyComponents(d,o.quantizedVolumeStepSize,d),d=m.add(d,o.quantizedVolumeOffset,d);return d=X.multiplyByPoint(r,d,d),s!==1&&Mr.getPosition(d,c,s,a,d),d}var CDn=y(C(),1);var hDn=y(C(),1),ZK=class{constructor(t){this.show=t.show,this.alpha=t.alpha,this.brightness=t.brightness,this.contrast=t.contrast,this.hue=t.hue,this.saturation=t.saturation,this.gamma=t.gamma,this.colorToAlpha=t.colorToAlpha}},OX=ZK;var BK=class{constructor(t){this._model=t,this._modelPrimitiveImageries=void 0,this._imageryConfigurations=[]}update(t){this._hasImagery&&this._allImageryLayersReady&&(l(this._modelPrimitiveImageries)||(this._modelPrimitiveImageries=this._createModelPrimitiveImageries()),this._updateModelPrimitiveImageries(t),this._checkForModifiedImageryConfigurations())}_createModelPrimitiveImageries(){let t=this._model,n=this._collectRuntimeNodesAndPrimitives(),i=[],o=n.length;for(let r=0;r<o;r++){let s=n[r],a=s.runtimeNode,c=s.runtimePrimitive,d=new ax(t,a,c);c.primitive.modelPrimitiveImagery=d,i.push(d)}return i}_collectRuntimeNodesAndPrimitives(){let i=this._model.sceneGraph._runtimeNodes,o=[];for(let r=0;r<i.length;r++){let s=i[r];if(l(s))for(let a=0;a<s.runtimePrimitives.length;a++){let c=s.runtimePrimitives[a];o.push({runtimeNode:s,runtimePrimitive:c})}}return o}_updateModelPrimitiveImageries(t){if(!l(this._modelPrimitiveImageries))throw new Ae("The modelPrimitiveImageries have not been created");let n=this._modelPrimitiveImageries,i=n.length;for(let o=0;o<i;o++)n[o].update(t)}_deleteModelPrimitiveImageries(){let t=this._modelPrimitiveImageries;if(!l(t))return;let n=t.length;for(let i=0;i<n;i++)t[i].destroy();delete this._modelPrimitiveImageries}get ready(){return this._hasImagery?!(!this._allImageryLayersReady||!this._allModelPrimitiveImageriesReady):!0}get _hasImagery(){let n=this._model.imageryLayers;return l(n)&&n.length>0}get _allImageryLayersReady(){if(!this._hasImagery)return!0;let t=this._model.imageryLayers,n=t.length;for(let i=0;i<n;i++)if(!t.get(i).ready)return!1;return!0}get _allModelPrimitiveImageriesReady(){let t=this._modelPrimitiveImageries;if(!l(t))return!1;let n=t.length;for(let i=0;i<n;i++)if(!t[i].ready)return!1;return!0}_checkForModifiedImageryConfigurations(){this._imageryConfigurationsModified()&&(this._updateImageryConfigurations(),this._model.resetDrawCommands())}_imageryConfigurationsModified(){let n=this._model.imageryLayers,i=this._imageryConfigurations;if(n.length!==i.length)return!0;for(let o=0;o<n.length;o++){let r=n.get(o),s=i[o];if(r.show!==s.show||r.alpha!==s.alpha||r.brightness!==s.brightness||r.contrast!==s.contrast||r.hue!==s.hue||r.saturation!==s.saturation||r.gamma!==s.gamma||r.colorToAlpha!==s.colorToAlpha)return!0}return!1}_updateImageryConfigurations(){let n=this._model.imageryLayers,i=this._imageryConfigurations;i.length=n.length;for(let o=0;o<n.length;o++){let r=n.get(o);i[o]=new OX(r)}}isDestroyed(){return!1}destroy(){if(!this.isDestroyed())return this._deleteModelPrimitiveImageries(),me(this)}},HX=BK;function _o(e){e=e??Y.EMPTY_OBJECT,this._loader=e.loader,this._resource=e.resource,this.type=e.type??Tr.GLTF,this.modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this._modelMatrix=X.clone(this.modelMatrix),this._scale=e.scale??1,this._minimumPixelSize=e.minimumPixelSize??0,this._maximumScale=e.maximumScale,this._clampedScale=l(this._maximumScale)?Math.min(this._scale,this._maximumScale):this._scale,this._computedScale=this._clampedScale,this._updateModelMatrix=!1,this.referenceMatrix=void 0,this._iblReferenceFrameMatrix=$.clone($.IDENTITY),this._resourcesLoaded=!1,this._drawCommandsBuilt=!1,this._ready=!1,this._customShader=e.customShader,this._content=e.content,this._texturesLoaded=!1,this._defaultTexture=void 0,this._activeAnimations=new HB(this),this._clampAnimations=e.clampAnimations??!0,this._userAnimationDirty=!1,this._id=e.id,this._idDirty=!1,this._color=U.clone(e.color),this._colorBlendMode=e.colorBlendMode??Fc.HIGHLIGHT,this._colorBlendAmount=e.colorBlendAmount??.5;let t=e.silhouetteColor??U.RED;this._silhouetteColor=U.clone(t),this._silhouetteSize=e.silhouetteSize??0,this._silhouetteDirty=!1,this._silhouetteId=void 0,this._cull=e.cull??!0,this._opaquePass=e.opaquePass??Ge.OPAQUE,this._allowPicking=e.allowPicking??!0,this._show=e.show??!0,this._style=void 0,this._styleDirty=!1,this._styleCommandsNeeded=void 0;let n=e.featureIdLabel??"featureId_0";typeof n=="number"&&(n=`featureId_${n}`),this._featureIdLabel=n;let i=e.instanceFeatureIdLabel??"instanceFeatureId_0";typeof i=="number"&&(i=`instanceFeatureId_${i}`),this._instanceFeatureIdLabel=i,this._featureTables=[],this._featureTableId=void 0,this._featureTableIdDirty=!0,this._pipelineResources=[],this._modelResources=[],this._pickIds=[],this._boundingSphere=new ue,this._initialRadius=void 0,this._heightReference=e.heightReference??et.NONE,this._heightDirty=this._heightReference!==et.NONE,this._removeUpdateHeightCallback=void 0,this._enableVerticalExaggeration=e.enableVerticalExaggeration??!0,this._hasVerticalExaggeration=!1,this._clampedModelMatrix=void 0;let o=e.scene;l(o)&&l(o.terrainProviderChanged)&&(this._terrainProviderChangedCallback=o.terrainProviderChanged.addEventListener(()=>{this._heightDirty=!0})),this._scene=o,this._distanceDisplayCondition=e.distanceDisplayCondition;let r=new Hf(e.pointCloudShading);this._pointCloudShading=r,this._attenuation=r.attenuation,this._pointCloudBackFaceCulling=r.backFaceCulling;let s=e.clippingPlanes;l(s)&&s.owner===void 0?Ws.setOwner(s,this,"_clippingPlanes"):this._clippingPlanes=s,this._clippingPlanesState=0,this._clippingPlanesMatrix=X.clone(X.IDENTITY);let a=e.clippingPolygons;l(a)&&a.owner===void 0?Ih.setOwner(a,this,"_clippingPolygons"):this._clippingPolygons=a,this._clippingPolygonsState=0,this._modelImagery=new HX(this),this._lightColor=m.clone(e.lightColor),this._imageBasedLighting=l(e.imageBasedLighting)?e.imageBasedLighting:new TC,this._shouldDestroyImageBasedLighting=!l(e.imageBasedLighting),this._environmentMapManager=void 0;let c=new ZA(e.environmentMapOptions);ZA.setOwner(c,this,"_environmentMapManager"),this._backFaceCulling=e.backFaceCulling??!0,this._backFaceCullingDirty=!1,this._shadows=e.shadows??Gn.ENABLED,this._shadowsDirty=!1,this._debugShowBoundingVolumeDirty=!1,this._debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._enableDebugWireframe=e.enableDebugWireframe??!1,this._enableShowOutline=e.enableShowOutline??!0,this._debugWireframe=e.debugWireframe??!1,this._debugWireframe===!0&&this._enableDebugWireframe===!1&&this.type===Tr.GLTF&&xt("model-debug-wireframe-ignored","enableDebugWireframe must be set to true in Model.fromGltf, otherwise debugWireframe will be ignored.");let d=e.credit;typeof d=="string"&&(d=new Gt(d)),this._credits=[],this._credit=d,this._resourceCredits=[],this._gltfCredits=[],this._showCreditsOnScreen=e.showCreditsOnScreen??!1,this._showCreditsOnScreenDirty=!0,this._splitDirection=e.splitDirection??Ir.NONE,this._enableShowOutline=e.enableShowOutline??!0,this.showOutline=e.showOutline??!0,this.outlineColor=e.outlineColor??U.BLACK,this._classificationType=e.classificationType,this._statistics=new UX,this._sceneMode=void 0,this._projectTo2D=e.projectTo2D??!1,this._enablePick=e.enablePick??!1,this._fogRenderable=void 0,this._skipLevelOfDetail=!1,this._ignoreCommands=e.ignoreCommands??!1,this._errorEvent=new Ce,this._readyEvent=new Ce,this._texturesReadyEvent=new Ce,this._sceneGraph=void 0,this._nodesByName={},this.pickObject=e.pickObject}function wK(e,t){if(e._errorEvent.numberOfListeners>0){e._errorEvent.raiseEvent(t);return}console.log(t)}function hKe(e,t){let n=e._featureTables,i=t.propertyTables,o=i.length;for(let r=0;r<o;r++){let s=i[r],a=new JB({model:e,propertyTable:s});n.push(a)}return n}function fKe(e,t){let n=t._featureIdLabel,i=t._instanceFeatureIdLabel,o,r,s,a;for(o=0;o<e.nodes.length;o++)if(a=e.nodes[o],l(a.instances)&&(s=Mt.getFeatureIdsByLabel(a.instances.featureIds,i),l(s)&&l(s.propertyTableId)))return s.propertyTableId;for(o=0;o<e.nodes.length;o++)for(a=e.nodes[o],r=0;r<a.primitives.length;r++){let c=a.primitives[r],d=Mt.getFeatureIdsByLabel(c.featureIds,n);if(l(d))return d.propertyTableId}if(t._featureTables.length===1)return 0}function FK(e,t){if(!l(e)&&!l(t))return!1;if(l(e)!==l(t))return!0;let n=e.alpha,i=t.alpha;return Math.floor(n)!==Math.floor(i)||Math.ceil(n)!==Math.ceil(i)}Object.defineProperties(_o.prototype,{ready:{get:function(){return this._ready}},errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},incrementallyLoadTextures:{get:function(){return this._loader.incrementallyLoadTextures??!1}},texturesReadyEvent:{get:function(){return this._texturesReadyEvent}},loader:{get:function(){return this._loader}},statistics:{get:function(){return this._statistics}},activeAnimations:{get:function(){return this._activeAnimations}},clampAnimations:{get:function(){return this._clampAnimations},set:function(e){this._clampAnimations=e}},cull:{get:function(){return this._cull}},opaquePass:{get:function(){return this._opaquePass}},pointCloudShading:{get:function(){return this._pointCloudShading},set:function(e){e!==this._pointCloudShading&&this.resetDrawCommands(),this._pointCloudShading=e}},customShader:{get:function(){return this._customShader},set:function(e){e!==this._customShader&&this.resetDrawCommands(),this._customShader=e}},sceneGraph:{get:function(){return this._sceneGraph}},content:{get:function(){return this._content}},heightReference:{get:function(){return this._heightReference},set:function(e){e!==this._heightReference&&(this._heightDirty=!0),this._heightReference=e}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){this._distanceDisplayCondition=Qt.clone(e,this._distanceDisplayCondition)}},structuralMetadata:{get:function(){return this._sceneGraph.components.structuralMetadata}},featureTableId:{get:function(){return this._featureTableId},set:function(e){this._featureTableId=e}},featureTables:{get:function(){return this._featureTables},set:function(e){this._featureTables=e}},id:{get:function(){return this._id},set:function(e){e!==this._id&&(this._idDirty=!0),this._id=e}},allowPicking:{get:function(){return this._allowPicking}},style:{get:function(){return this._style},set:function(e){this._style=e,this._styleDirty=!0}},color:{get:function(){return this._color},set:function(e){FK(e,this._color)&&this.resetDrawCommands(),this._color=U.clone(e,this._color)}},colorBlendMode:{get:function(){return this._colorBlendMode},set:function(e){this._colorBlendMode=e}},colorBlendAmount:{get:function(){return this._colorBlendAmount},set:function(e){this._colorBlendAmount=e}},silhouetteColor:{get:function(){return this._silhouetteColor},set:function(e){if(!U.equals(e,this._silhouetteColor)){let t=FK(e,this._silhouetteColor);this._silhouetteDirty=this._silhouetteDirty||t}this._silhouetteColor=U.clone(e,this._silhouetteColor)}},silhouetteSize:{get:function(){return this._silhouetteSize},set:function(e){if(e!==this._silhouetteSize){let t=this._silhouetteSize,n=e>0&&t===0||e===0&&t>0;this._silhouetteDirty=this._silhouetteDirty||n,this._backFaceCullingDirty=this._backFaceCullingDirty||n}this._silhouetteSize=e}},boundingSphere:{get:function(){let e=l(this._clampedModelMatrix)?this._clampedModelMatrix:this.modelMatrix;return Mde(this,e),this._boundingSphere}},debugShowBoundingVolume:{get:function(){return this._debugShowBoundingVolume},set:function(e){this._debugShowBoundingVolume!==e&&(this._debugShowBoundingVolumeDirty=!0),this._debugShowBoundingVolume=e}},debugWireframe:{get:function(){return this._debugWireframe},set:function(e){this._debugWireframe!==e&&this.resetDrawCommands(),this._debugWireframe=e,this._debugWireframe===!0&&this._enableDebugWireframe===!1&&this.type===Tr.GLTF&&xt("model-debug-wireframe-ignored","enableDebugWireframe must be set to true in Model.fromGltfAsync, otherwise debugWireframe will be ignored.")}},show:{get:function(){return this._show},set:function(e){this._show=e}},featureIdLabel:{get:function(){return this._featureIdLabel},set:function(e){typeof e=="number"&&(e=`featureId_${e}`),e!==this._featureIdLabel&&(this._featureTableIdDirty=!0),this._featureIdLabel=e}},instanceFeatureIdLabel:{get:function(){return this._instanceFeatureIdLabel},set:function(e){typeof e=="number"&&(e=`instanceFeatureId_${e}`),e!==this._instanceFeatureIdLabel&&(this._featureTableIdDirty=!0),this._instanceFeatureIdLabel=e}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){e!==this._clippingPlanes&&(Ws.setOwner(e,this,"_clippingPlanes"),this.resetDrawCommands())}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){e!==this._clippingPolygons&&(Ih.setOwner(e,this,"_clippingPolygons"),this.resetDrawCommands())}},enableVerticalExaggeration:{get:function(){return this._enableVerticalExaggeration},set:function(e){e!==this._enableVerticalExaggeration&&this.resetDrawCommands(),this._enableVerticalExaggeration=e}},hasVerticalExaggeration:{get:function(){return this._hasVerticalExaggeration}},imageryLayers:{get:function(){if(l(this._content)){let e=this._content.tileset;if(l(e))return e.imageryLayers}}},lightColor:{get:function(){return this._lightColor},set:function(e){l(e)!==l(this._lightColor)&&this.resetDrawCommands(),this._lightColor=m.clone(e,this._lightColor)}},imageBasedLighting:{get:function(){return this._imageBasedLighting},set:function(e){e!==this._imageBasedLighting&&(this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=e,this._shouldDestroyImageBasedLighting=!1,this.resetDrawCommands())}},environmentMapManager:{get:function(){return this._environmentMapManager},set:function(e){e!==this.environmentMapManager&&(ZA.setOwner(e,this,"_environmentMapManager"),this.resetDrawCommands())}},backFaceCulling:{get:function(){return this._backFaceCulling},set:function(e){e!==this._backFaceCulling&&(this._backFaceCullingDirty=!0),this._backFaceCulling=e}},scale:{get:function(){return this._scale},set:function(e){e!==this._scale&&(this._updateModelMatrix=!0),this._scale=e}},computedScale:{get:function(){return this._computedScale}},minimumPixelSize:{get:function(){return this._minimumPixelSize},set:function(e){e!==this._minimumPixelSize&&(this._updateModelMatrix=!0),this._minimumPixelSize=e}},maximumScale:{get:function(){return this._maximumScale},set:function(e){e!==this._maximumScale&&(this._updateModelMatrix=!0),this._maximumScale=e}},shadows:{get:function(){return this._shadows},set:function(e){e!==this._shadows&&(this._shadowsDirty=!0),this._shadows=e}},credit:{get:function(){return this._credit}},showCreditsOnScreen:{get:function(){return this._showCreditsOnScreen},set:function(e){this._showCreditsOnScreen!==e&&(this._showCreditsOnScreenDirty=!0),this._showCreditsOnScreen=e}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&this.resetDrawCommands(),this._splitDirection=e}},classificationType:{get:function(){return this._classificationType}},pickIds:{get:function(){return this._pickIds}},styleCommandsNeeded:{get:function(){return this._styleCommandsNeeded}}});_o.prototype.getNode=function(e){return this._nodesByName[e]};_o.prototype.setArticulationStage=function(e,t){this._sceneGraph.setArticulationStage(e,t)};_o.prototype.applyArticulations=function(){this._sceneGraph.applyArticulations()};_o.prototype.getExtension=function(e){return this._loader.components.extensions[e]};_o.prototype.makeStyleDirty=function(){this._styleDirty=!0};_o.prototype.resetDrawCommands=function(){this._drawCommandsBuilt=!1};var pKe=new X,AKe=new $,gKe=new X;_o.prototype.update=function(e){let t=!1;try{t=bKe(this,e)}catch(i){if(!this._loader.incrementallyLoadTextures&&i.name==="TextureError")wK(this,i);else{let o=Mt.getError("model",this._resource,i);wK(this,o)}}if(yKe(this,e),CKe(this,e),xKe(this,e),!this._resourcesLoaded&&t){this._resourcesLoaded=!0;let i=this._loader.components;if(!l(i)){if(this._loader.isUnloaded())return;let s=Mt.getError("model",this._resource,new de("Failed to load model."));wK(s),this._rejectLoad=this._rejectLoad&&this._rejectLoad(s)}let o=i.structuralMetadata;l(o)&&o.propertyTableCount>0&&hKe(this,o);let r=new QX({model:this,modelComponents:i});this._sceneGraph=r,this._gltfCredits=r.components.asset.credits}if(!this._resourcesLoaded||e.mode===re.MORPHING)return;let n=this._modelImagery;if(n.update(e),!(!n.ready&&!(this._content?.tileset?._asynchronouslyLoadImagery??!1))){if(IKe(this),_Ke(this),EKe(this,e),TKe(this),SKe(this,e),LKe(this,e),RKe(this,e),VKe(this,e),GKe(this,e),ZKe(this,e),BKe(this,e),this._defaultTexture=e.context.defaultTexture,wKe(this,e),XKe(this,e),WKe(this),FKe(this,e),NKe(this,e),!this._ready){e.afterRender.push(()=>{this._ready=!0,this._readyEvent.raiseEvent(this)});return}this._loader.incrementallyLoadTextures&&!this._texturesLoaded&&this._loader.texturesLoaded&&(this.resetDrawCommands(),this._texturesLoaded=!0,this._texturesReadyEvent.raiseEvent(this)),MKe(this),DKe(this,e),QKe(this),UKe(this,e)}};function bKe(e,t){return!e._resourcesLoaded||e._loader.incrementallyLoadTextures&&!e._texturesLoaded?(t.afterRender.push(()=>!0),e._loader.process(t)):!0}function yKe(e,t){l(e._customShader)&&e._customShader.update(t)}function CKe(e,t){let n=e._environmentMapManager,i=t.passes.pick||t.passes.pickVoxel;e._ready&&n.owner===e&&!i&&(n.position=e._boundingSphere.center,n.shouldUpdate=!l(e._imageBasedLighting.sphericalHarmonicCoefficients)||!l(e._imageBasedLighting.specularEnvironmentMaps),n.update(t),n.shouldRegenerateShaders&&e.resetDrawCommands())}function xKe(e,t){e._imageBasedLighting.update(t),e._imageBasedLighting.shouldRegenerateShaders&&e.resetDrawCommands()}function IKe(e){if(!e._featureTableIdDirty)return;e._featureTableIdDirty=!1;let t=e._sceneGraph.components,n=t.structuralMetadata;l(n)&&n.propertyTableCount>0&&(e.featureTableId=fKe(t,e),e._styleDirty=!0,e.resetDrawCommands())}function _Ke(e){e._styleDirty&&(e.applyStyle(e._style),e._styleDirty=!1)}function EKe(e,t){let n=e._featureTables,i=n.length,o=!1;for(let r=0;r<i;r++)n[r].update(t),n[r].styleCommandsNeededDirty&&(o=!0);o&&Pde(e)}function Pde(e){let t=e.featureTables[e.featureTableId];e._styleCommandsNeeded=Rh.getStyleCommandsNeeded(t.featuresLength,t.batchTexture.translucentFeaturesLength)}function TKe(e){let t=e.pointCloudShading;t.attenuation!==e._attenuation&&(e.resetDrawCommands(),e._attenuation=t.attenuation),t.backFaceCulling!==e._pointCloudBackFaceCulling&&(e.resetDrawCommands(),e._pointCloudBackFaceCulling=t.backFaceCulling)}function SKe(e,t){e._silhouetteDirty&&(vde(t)&&e.resetDrawCommands(),e._silhouetteDirty=!1)}function LKe(e,t){let n=e.hasSkipLevelOfDetail(t);n!==e._skipLevelOfDetail&&(e.resetDrawCommands(),e._skipLevelOfDetail=n)}function RKe(e,t){let n=0;e.isClippingEnabled()&&(e._clippingPlanes.owner===e&&e._clippingPlanes.update(t),n=e._clippingPlanes.clippingPlanesState),n!==e._clippingPlanesState&&(e.resetDrawCommands(),e._clippingPlanesState=n)}function VKe(e,t){let n=0;e.isClippingPolygonsEnabled()&&(e._clippingPolygons.owner===e&&(e._clippingPolygons.update(t),e._clippingPolygons.queueCommands(t)),n=e._clippingPolygons.clippingPolygonsState),n!==e._clippingPolygonsState&&(e.resetDrawCommands(),e._clippingPolygonsState=n)}function GKe(e,t){t.mode!==e._sceneMode&&(e._projectTo2D?e.resetDrawCommands():e._updateModelMatrix=!0,e._sceneMode=t.mode)}function ZKe(e,t){let n=t.fog.enabled&&t.fog.renderable;n!==e._fogRenderable&&(e.resetDrawCommands(),e._fogRenderable=n)}function BKe(e,t){if(e.enableVerticalExaggeration){let n=t.verticalExaggeration!==1;e.hasVerticalExaggeration!==n&&(e.resetDrawCommands(),e._hasVerticalExaggeration=n)}else e.hasVerticalExaggeration&&(e.resetDrawCommands(),e._hasVerticalExaggeration=!1)}function wKe(e,t){e._drawCommandsBuilt||(e.destroyPipelineResources(),e._sceneGraph.buildDrawCommands(t),e._drawCommandsBuilt=!0)}function XKe(e,t){X.equals(e.modelMatrix,e._modelMatrix)||(e._updateModelMatrix=!0,e._modelMatrix=X.clone(e.modelMatrix,e._modelMatrix))}var f0=new m,XK=new ge;function WKe(e){if(!e._updateModelMatrix&&!e._heightDirty&&e._minimumPixelSize===0)return;l(e._removeUpdateHeightCallback)&&(e._removeUpdateHeightCallback(),e._removeUpdateHeightCallback=void 0);let t=e._scene;if(!l(t)||e.heightReference===et.NONE){e._clampedModelMatrix=void 0;return}let n=t.ellipsoid??ie.default,i=e.modelMatrix;f0.x=i[12],f0.y=i[13],f0.z=i[14];let o=n.cartesianToCartographic(f0);l(e._clampedModelMatrix)||(e._clampedModelMatrix=X.clone(i,new X)),e._removeUpdateHeightCallback=t.updateHeight(o,Fde(e,n,o),e.heightReference);let r=t.getHeight(o,e.heightReference);if(l(r)){let s=Fde(e,n,o);ge.clone(o,XK),XK.height=r,s(XK)}e._heightDirty=!1,e._updateModelMatrix=!0}function FKe(e,t){if(!e._updateModelMatrix&&e._minimumPixelSize===0)return;let n=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix;Mde(e,n),PKe(e,n,t)}function Mde(e,t){e._clampedScale=l(e._maximumScale)?Math.min(e._scale,e._maximumScale):e._scale,e._boundingSphere.center=m.multiplyByScalar(e._sceneGraph.boundingSphere.center,e._clampedScale,e._boundingSphere.center),e._boundingSphere.radius=e._initialRadius*e._clampedScale,e._boundingSphere=ue.transform(e._boundingSphere,t,e._boundingSphere)}function PKe(e,t,n){let i=e.scale;if(e.minimumPixelSize!==0&&!e._projectTo2D){let o=n.context,r=Math.max(o.drawingBufferWidth,o.drawingBufferHeight);X.getTranslation(t,f0),e._sceneMode!==re.SCENE3D&&to.computeActualEllipsoidPosition(n,f0,f0);let s=e._boundingSphere.radius,a=kKe(f0,s,n),c=1/a;Math.min(c*(2*s),r)<e.minimumPixelSize&&(i=e.minimumPixelSize*a/(2*e._initialRadius))}e._computedScale=l(e.maximumScale)?Math.min(e.maximumScale,i):i}function MKe(e){if(!e._idDirty)return;e._idDirty=!1;let t=e._id,n=e._pickIds,i=n.length;for(let o=0;o<i;++o)n[o].object.id=t}var vKe=new $(1,0,0,0,0,1,0,-1,0);function NKe(e,t){let n=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix,i=e.referenceMatrix??n,o=t.context,r=AKe,s=pKe;if(s=X.multiply(o.uniformState.view3D,i,s),r=X.getRotation(s,r),r=$.transpose(r,r),e._iblReferenceFrameMatrix=$.multiply(vKe,r,e._iblReferenceFrameMatrix),e.isClippingEnabled()){let a=gKe;a=X.multiply(o.uniformState.view3D,i,a),a=X.multiply(a,e._clippingPlanes.modelMatrix,a),e._clippingPlanesMatrix=X.inverseTranspose(a,e._clippingPlanesMatrix)}}function DKe(e,t){let n=e._sceneGraph;if(e._updateModelMatrix||e._minimumPixelSize!==0){let o=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix;n.updateModelMatrix(o,t),e._updateModelMatrix=!1}e._backFaceCullingDirty&&(n.updateBackFaceCulling(e._backFaceCulling),e._backFaceCullingDirty=!1),e._shadowsDirty&&(n.updateShadows(e._shadows),e._shadowsDirty=!1),e._debugShowBoundingVolumeDirty&&(n.updateShowBoundingVolume(e._debugShowBoundingVolume),e._debugShowBoundingVolumeDirty=!1);let i=!1;l(e.classificationType)||(i=e._userAnimationDirty||e._activeAnimations.update(t)),n.update(t,i),e._userAnimationDirty=!1}function QKe(e){if(!e._showCreditsOnScreenDirty)return;e._showCreditsOnScreenDirty=!1,e._credits.length=0;let t=e._showCreditsOnScreen;if(l(e._credit)){let s=Gt.clone(e._credit);s.showOnScreen=s.showOnScreen||t,e._credits.push(s)}let n=e._resourceCredits,i=n.length;for(let s=0;s<i;s++){let a=Gt.clone(n[s]);a.showOnScreen=a.showOnScreen||t,e._credits.push(a)}let o=e._gltfCredits,r=o.length;for(let s=0;s<r;s++){let a=Gt.clone(o[s]);a.showOnScreen=a.showOnScreen||t,e._credits.push(a)}}function UKe(e,t){let n=OKe(e,t),i=e.isInvisible(),o=e.hasSilhouette(t),r=e._show&&e._computedScale!==0&&n&&(!i||o),s=t.passes,a=s.render||s.pick&&e.allowPicking;r&&!e._ignoreCommands&&a&&(HKe(e,t),e._sceneGraph.pushDrawCommands(t))}var WK=new ue;function kKe(e,t,n){return WK.center=e,WK.radius=t,n.camera.getPixelSize(WK,n.context.drawingBufferWidth,n.context.drawingBufferHeight)}var NQ=new m;function Fde(e,t,n){return function(i){D_(e.heightReference)&&(i.height+=n.height),t.cartographicToCartesian(i,NQ);let o=e._clampedModelMatrix;X.clone(e.modelMatrix,o),o[12]=NQ.x,o[13]=NQ.y,o[14]=NQ.z,e._heightDirty=!0}}var YKe=new m;function OKe(e,t){let n=e.distanceDisplayCondition;if(!l(n))return!0;let i=n.near*n.near,o=n.far*n.far,r;if(t.mode===re.SCENE2D){let a=(t.camera.frustum.right-t.camera.frustum.left)*.5;r=a*a}else{let s=X.getTranslation(e.modelMatrix,YKe);to.computeActualEllipsoidPosition(t,s,s),r=m.distanceSquared(s,t.camera.positionWC)}return r>=i&&r<=o}function HKe(e,t){let n=t.creditDisplay,i=e._credits,o=i.length;for(let r=0;r<o;r++)n.addCreditToNextFrame(i[r])}_o.prototype.isTranslucent=function(){let e=this.color;return l(e)&&e.alpha>0&&e.alpha<1};_o.prototype.isInvisible=function(){let e=this.color;return l(e)&&e.alpha===0};function vde(e){return e.context.stencilBuffer}_o.prototype.hasSilhouette=function(e){return vde(e)&&this._silhouetteSize>0&&this._silhouetteColor.alpha>0&&!l(this._classificationType)};_o.prototype.hasSkipLevelOfDetail=function(e){if(!Tr.is3DTiles(this.type))return!1;let t=e.context.stencilBuffer,n=this._content.tileset;return t&&n.isSkippingLevelOfDetail};_o.prototype.isClippingEnabled=function(){let e=this._clippingPlanes;return l(e)&&e.enabled&&e.length!==0};_o.prototype.pick=function(e,t,n,i,o){return dT(this,e,t,n,i,o)};_o.prototype.isClippingPolygonsEnabled=function(){let e=this._clippingPolygons;return l(e)&&e.enabled&&e.length!==0};_o.prototype.isDestroyed=function(){return!1};_o.prototype.destroy=function(){let e=this._loader;l(e)&&e.destroy();let t=this._featureTables;if(l(t)){let r=t.length;for(let s=0;s<r;s++)t[s].destroy()}this.destroyPipelineResources(),this.destroyModelResources(),l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),l(this._terrainProviderChangedCallback)&&(this._terrainProviderChangedCallback(),this._terrainProviderChangedCallback=void 0);let n=this._clippingPlanes;l(n)&&!n.isDestroyed()&&n.owner===this&&n.destroy(),this._clippingPlanes=void 0;let i=this._clippingPolygons;l(i)&&!i.isDestroyed()&&i.owner===this&&i.destroy(),this._clippingPolygons=void 0,this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=void 0;let o=this._environmentMapManager;!o.isDestroyed()&&o.owner===this&&o.destroy(),this._environmentMapManager=void 0,me(this)};_o.prototype.destroyPipelineResources=function(){let e=this._pipelineResources;for(let t=0;t<e.length;t++)e[t].destroy();this._pipelineResources.length=0,this._pickIds.length=0};_o.prototype.destroyModelResources=function(){let e=this._modelResources;for(let t=0;t<e.length;t++)e[t].destroy();this._modelResources.length=0};_o.fromGltfAsync=async function(e){e=e??Y.EMPTY_OBJECT;let t=e.url??e.gltf,n={releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline,loadForClassification:l(e.classificationType)},i=e.basePath??"",o=Ve.createIfNeeded(i);l(t.asset)?(n.gltfJson=t,n.baseResource=o,n.gltfResource=o):t instanceof Uint8Array?(n.typedArray=t,n.baseResource=o,n.gltfResource=o):n.gltfResource=Ve.createIfNeeded(t);let r=new Od(n),a=l(e.content)?Tr.TILE_GLTF:Tr.GLTF,c=n.gltfResource,d=zX(r,a,e);d.resource=c,d.environmentMapOptions=e.environmentMapOptions;try{await r.load()}catch(g){throw r.destroy(),Mt.getError("model",c,g)}let u=e.gltfCallback;l(u)&&u(r.gltfJson);let h=new _o(d),p=h._resource.credits;if(l(p)){let g=p.length;for(let f=0;f<g;f++)h._resourceCredits.push(Gt.clone(p[f]))}return h};_o.fromB3dm=async function(e){let t={b3dmResource:e.resource,arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline,loadForClassification:l(e.classificationType)},n=new MB(t);try{await n.load();let i=zX(n,Tr.TILE_B3DM,e);return new _o(i)}catch(i){throw n.destroy(),i}};_o.fromPnts=async function(e){let t={arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,loadAttributesFor2D:e.projectTo2D},n=new YX(t);try{await n.load();let i=zX(n,Tr.TILE_PNTS,e);return new _o(i)}catch(i){throw n.destroy(),i}};_o.fromI3dm=async function(e){let t={i3dmResource:e.resource,arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline},n=new DB(t);try{await n.load();let i=zX(n,Tr.TILE_I3DM,e);return new _o(i)}catch(i){throw n.destroy(),i}};_o.fromGeoJson=async function(e){let t={geoJson:e.geoJson},n=new vB(t),i=zX(n,Tr.TILE_GEOJSON,e);return new _o(i)};var zKe=new U;_o.prototype.applyColorAndShow=function(e){let t=U.clone(this._color,zKe),n=l(e)&&l(e.color),i=l(e)&&l(e.show);this._color=n?e.color.evaluateColor(void 0,this._color):U.clone(U.WHITE,this._color),this._show=i?e.show.evaluate(void 0):!0,FK(t,this._color)&&this.resetDrawCommands()};_o.prototype.applyStyle=function(e){let t=this.type===Tr.TILE_PNTS,n=l(this.featureTableId)&&this.featureTables[this.featureTableId].featuresLength>0,i=l(this.structuralMetadata)?this.structuralMetadata.propertyAttributes:void 0,o=l(i)&&l(i[0]);if(t&&(!n||o)){this.resetDrawCommands();return}n?(this.featureTables[this.featureTableId].applyStyle(e),Pde(this,e)):(this.applyColorAndShow(e),this._styleCommandsNeeded=void 0)};function zX(e,t,n){return{loader:e,type:t,resource:n.resource,show:n.show,modelMatrix:n.modelMatrix,scale:n.scale,enableVerticalExaggeration:n.enableVerticalExaggeration,minimumPixelSize:n.minimumPixelSize,maximumScale:n.maximumScale,id:n.id,allowPicking:n.allowPicking,clampAnimations:n.clampAnimations,shadows:n.shadows,debugShowBoundingVolume:n.debugShowBoundingVolume,enableDebugWireframe:n.enableDebugWireframe,debugWireframe:n.debugWireframe,cull:n.cull,opaquePass:n.opaquePass,customShader:n.customShader,content:n.content,heightReference:n.heightReference,scene:n.scene,distanceDisplayCondition:n.distanceDisplayCondition,color:n.color,colorBlendAmount:n.colorBlendAmount,colorBlendMode:n.colorBlendMode,silhouetteColor:n.silhouetteColor,silhouetteSize:n.silhouetteSize,enableShowOutline:n.enableShowOutline,showOutline:n.showOutline,outlineColor:n.outlineColor,clippingPlanes:n.clippingPlanes,clippingPolygons:n.clippingPolygons,lightColor:n.lightColor,imageBasedLighting:n.imageBasedLighting,backFaceCulling:n.backFaceCulling,credit:n.credit,showCreditsOnScreen:n.showCreditsOnScreen,splitDirection:n.splitDirection,projectTo2D:n.projectTo2D,enablePick:n.enablePick,featureIdLabel:n.featureIdLabel,instanceFeatureIdLabel:n.instanceFeatureIdLabel,pointCloudShading:n.pointCloudShading,classificationType:n.classificationType,pickObject:n.pickObject}}var Bh=_o;function os(e,t,n){this._tileset=e,this._tile=t,this._resource=n,this._model=void 0,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(os.prototype,{featuresLength:{get:function(){let e=this._model,t=e.featureTables,n=e.featureTableId;return l(t)&&l(t[n])?t[n].featuresLength:0}},pointsLength:{get:function(){return this._model.statistics.pointsLength}},trianglesLength:{get:function(){return this._model.statistics.trianglesLength}},geometryByteLength:{get:function(){return this._model.statistics.geometryByteLength}},texturesByteLength:{get:function(){return this._model.statistics.texturesByteLength}},batchTableByteLength:{get:function(){let e=this._model.statistics;return e.propertyTablesByteLength+e.batchTexturesByteLength}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){let e=this._model,t=e.featureTables,n=e.featureTableId;if(l(t)&&l(t[n]))return t[n]}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});os.prototype.getTextureIds=function(){return this._model.statistics.getTextureIds()};os.prototype.getTextureByteLengthById=function(e){return this._model.statistics.getTextureByteLengthById(e)};os.prototype.getExtension=function(e){return this._model.getExtension(e)};os.prototype.getFeature=function(e){let t=this._model,n=t.featureTableId;return t.featureTables[n].getFeature(e)};os.prototype.hasProperty=function(e,t){let n=this._model,i=n.featureTableId;return l(i)?n.featureTables[i].hasProperty(e,t):!1};os.prototype.applyDebugSettings=function(e,t){t=e?t:U.WHITE,this.featuresLength===0?this._model.color=t:l(this.batchTable)&&this.batchTable.setAllColor(t)};os.prototype.applyStyle=function(e){this._model.style=e};os.prototype.update=function(e,t){let n=this._model,i=this._tile;n.colorBlendAmount=e.colorBlendAmount,n.colorBlendMode=e.colorBlendMode,n.modelMatrix=i.computedTransform,n.customShader=e.customShader,n.featureIdLabel=e.featureIdLabel,n.instanceFeatureIdLabel=e.instanceFeatureIdLabel,n.lightColor=e.lightColor,n.imageBasedLighting=e.imageBasedLighting,n.backFaceCulling=e.backFaceCulling,n.shadows=e.shadows,n.showCreditsOnScreen=e.showCreditsOnScreen,n.splitDirection=e.splitDirection,n.debugWireframe=e.debugWireframe,n.showOutline=e.showOutline,n.outlineColor=e.outlineColor,n.pointCloudShading=e.pointCloudShading;let o=e.clippingPlanes;n.referenceMatrix=e.clippingPlanesOriginMatrix,l(o)&&i.clippingPlanesDirty&&(n._clippingPlanes=o.enabled&&i._isClipped?o:void 0);let r=e.environmentMapManager;n.environmentMapManager!==o&&(n._environmentMapManager=r),l(o)&&l(n._clippingPlanes)&&n._clippingPlanes!==o&&(n._clippingPlanes=o,n._clippingPlanesState=0);let s=e.clippingPolygons;l(s)&&i.clippingPolygonsDirty&&(n._clippingPolygons=s.enabled&&i._isClippedByPolygon?s:void 0),l(s)&&l(n._clippingPolygons)&&n._clippingPolygons!==s&&(n._clippingPolygons=s,n._clippingPolygonsState=0),n.update(t),!this._ready&&n.ready&&(n.activeAnimations.addAll({loop:od.REPEAT}),this._ready=!0)};os.prototype.isDestroyed=function(){return!1};os.prototype.destroy=function(){return this._model=this._model&&this._model.destroy(),me(this)};os.fromGltf=async function(e,t,n,i){let o=new os(e,t,n),s=KX(e,t,o,{gltf:i,basePath:n}),a=e.vectorClassificationOnly?void 0:e.classificationType;s.classificationType=a;let c=await Bh.fromGltfAsync(s);return o._model=c,o};os.fromB3dm=async function(e,t,n,i,o){let r=new os(e,t,n),a=KX(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=e.vectorClassificationOnly?void 0:e.classificationType;a.classificationType=c;let d=await Bh.fromB3dm(a);return r._model=d,r};os.fromI3dm=async function(e,t,n,i,o){let r=new os(e,t,n),a=KX(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=await Bh.fromI3dm(a);return r._model=c,r};os.fromPnts=async function(e,t,n,i,o){let r=new os(e,t,n),a=KX(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=await Bh.fromPnts(a);return r._model=c,r};os.fromGeoJson=async function(e,t,n,i){let o=new os(e,t,n),s=KX(e,t,o,{geoJson:i,resource:n}),a=await Bh.fromGeoJson(s);return o._model=a,o};os.prototype.pick=function(e,t,n){if(!l(this._model)||!this._ready)return;let i=t.verticalExaggeration,o=t.verticalExaggerationRelativeHeight;return this._model.pick(e,t,i,o,ie.WGS84,n)};function KX(e,t,n,i){let o={cull:!1,releaseGltfJson:!0,opaquePass:Ge.CESIUM_3D_TILE,modelMatrix:t.computedTransform,upAxis:e._modelUpAxis,forwardAxis:e._modelForwardAxis,incrementallyLoadTextures:!1,customShader:e.customShader,content:n,colorBlendMode:e.colorBlendMode,colorBlendAmount:e.colorBlendAmount,lightColor:e.lightColor,imageBasedLighting:e.imageBasedLighting,featureIdLabel:e.featureIdLabel,instanceFeatureIdLabel:e.instanceFeatureIdLabel,pointCloudShading:e.pointCloudShading,clippingPlanes:e.clippingPlanes,backFaceCulling:e.backFaceCulling,shadows:e.shadows,showCreditsOnScreen:e.showCreditsOnScreen,splitDirection:e.splitDirection,enableDebugWireframe:e._enableDebugWireframe,debugWireframe:e.debugWireframe,projectTo2D:e._projectTo2D,enablePick:e._enablePick,enableShowOutline:e._enableShowOutline,showOutline:e.showOutline,outlineColor:e.outlineColor};return Lt(i,o)}var jd=os;var _Qn=y(C(),1);function am(e,t,n){this._tileset=e,this._tile=t,this._resource=n,this.featurePropertiesDirty=!1,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(am.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});am.fromJson=function(e,t,n,i){let o=new am(e,t,n);return o._tileset.loadTileset(o._resource,i,o._tile),o._ready=!0,o};am.prototype.hasProperty=function(e,t){return!1};am.prototype.getFeature=function(e){};am.prototype.applyDebugSettings=function(e,t){};am.prototype.applyStyle=function(e){};am.prototype.update=function(e,t){};am.prototype.pick=function(e,t,n){};am.prototype.isDestroyed=function(){return!1};am.prototype.destroy=function(){return me(this)};var JX=am;var HOn=y(C(),1);var JYn=y(C(),1);var gUn=y(C(),1);var BQn=y(C(),1);function Aa(e,t,n,i){let o=Aa._verifyAttributes(t);n=n??0;let r=[],s={},a,c,d=o.length;for(let h=0;h<d;++h){let p=o[h];if(p.vertexBuffer){r.push(p);continue}c=p.usage,a=s[c],l(a)||(a=s[c]=[]),a.push(p)}function u(h,p){return J.getSizeInBytes(p.componentDatatype)-J.getSizeInBytes(h.componentDatatype)}this._allBuffers=[];for(c in s)if(s.hasOwnProperty(c)){a=s[c],a.sort(u);let h=Aa._vertexSizeInBytes(a),p=a[0].usage,g={vertexSizeInBytes:h,vertexBuffer:void 0,usage:p,needsCommit:!1,arrayBuffer:void 0,arrayViews:Aa._createArrayViews(a,h)};this._allBuffers.push(g)}this._size=0,this._instanced=i??!1,this._precreated=r,this._context=e,this.writers=void 0,this.va=void 0,this.resize(n)}Aa._verifyAttributes=function(e){let t=[];for(let i=0;i<e.length;++i){let o=e[i],r={index:o.index??i,enabled:o.enabled??!0,componentsPerAttribute:o.componentsPerAttribute,componentDatatype:o.componentDatatype??J.FLOAT,normalize:o.normalize??!1,vertexBuffer:o.vertexBuffer,usage:o.usage??Ne.STATIC_DRAW};t.push(r)}let n=new Array(t.length);for(let i=0;i<t.length;++i){let r=t[i].index;n[r]=!0}return t};Aa._vertexSizeInBytes=function(e){let t=0,n=e.length;for(let s=0;s<n;++s){let a=e[s];t+=a.componentsPerAttribute*J.getSizeInBytes(a.componentDatatype)}let i=n>0?J.getSizeInBytes(e[0].componentDatatype):0,o=i>0?t%i:0,r=o===0?0:i-o;return t+=r,t};Aa._createArrayViews=function(e,t){let n=[],i=0,o=e.length;for(let r=0;r<o;++r){let s=e[r],a=s.componentDatatype;n.push({index:s.index,enabled:s.enabled,componentsPerAttribute:s.componentsPerAttribute,componentDatatype:a,normalize:s.normalize,offsetInBytes:i,vertexSizeInComponentType:t/J.getSizeInBytes(a),view:void 0}),i+=s.componentsPerAttribute*J.getSizeInBytes(a)}return n};Aa.prototype.resize=function(e){this._size=e;let t=this._allBuffers;this.writers=[];for(let n=0,i=t.length;n<i;++n){let o=t[n];Aa._resize(o,this._size),Aa._appendWriters(this.writers,o)}PK(this)};Aa._resize=function(e,t){if(e.vertexSizeInBytes>0){let n=new ArrayBuffer(t*e.vertexSizeInBytes);if(l(e.arrayBuffer)){let r=new Uint8Array(n),s=new Uint8Array(e.arrayBuffer),a=s.length;for(let c=0;c<a;++c)r[c]=s[c]}let i=e.arrayViews,o=i.length;for(let r=0;r<o;++r){let s=i[r];s.view=J.createArrayBufferView(s.componentDatatype,n,s.offsetInBytes)}e.arrayBuffer=n}};var KKe=[function(e,t,n){return function(i,o){t[i*n]=o,e.needsCommit=!0}},function(e,t,n){return function(i,o,r){let s=i*n;t[s]=o,t[s+1]=r,e.needsCommit=!0}},function(e,t,n){return function(i,o,r,s){let a=i*n;t[a]=o,t[a+1]=r,t[a+2]=s,e.needsCommit=!0}},function(e,t,n){return function(i,o,r,s,a){let c=i*n;t[c]=o,t[c+1]=r,t[c+2]=s,t[c+3]=a,e.needsCommit=!0}}];Aa._appendWriters=function(e,t){let n=t.arrayViews,i=n.length;for(let o=0;o<i;++o){let r=n[o];e[r.index]=KKe[r.componentsPerAttribute-1](t,r.view,r.vertexSizeInComponentType)}};Aa.prototype.commit=function(e){let t=!1,n=this._allBuffers,i,o,r;for(o=0,r=n.length;o<r;++o)i=n[o],t=JKe(this,i)||t;if(t||!l(this.va)){PK(this);let s=this.va=[],a=Z.SIXTY_FOUR_KILOBYTES-4,c=l(e)&&!this._instanced?Math.ceil(this._size/a):1;for(let d=0;d<c;++d){let u=[];for(o=0,r=n.length;o<r;++o){i=n[o];let h=d*(i.vertexSizeInBytes*a);Aa._appendAttributes(u,i,h,this._instanced)}u=u.concat(this._precreated),s.push({va:new ui({context:this._context,attributes:u,indexBuffer:e}),indicesCount:1.5*(d!==c-1?a:this._size%a)})}}};function JKe(e,t){if(t.needsCommit&&t.vertexSizeInBytes>0){t.needsCommit=!1;let n=t.vertexBuffer,i=e._size*t.vertexSizeInBytes,o=l(n);if(!o||n.sizeInBytes<i)return o&&n.destroy(),t.vertexBuffer=It.createVertexBuffer({context:e._context,typedArray:t.arrayBuffer,usage:t.usage}),t.vertexBuffer.vertexArrayDestroyable=!1,!0;t.vertexBuffer.copyFromArrayView(t.arrayBuffer)}return!1}Aa._appendAttributes=function(e,t,n,i){let o=t.arrayViews,r=o.length;for(let s=0;s<r;++s){let a=o[s];e.push({index:a.index,enabled:a.enabled,componentsPerAttribute:a.componentsPerAttribute,componentDatatype:a.componentDatatype,normalize:a.normalize,vertexBuffer:t.vertexBuffer,offsetInBytes:n+a.offsetInBytes,strideInBytes:t.vertexSizeInBytes,instanceDivisor:i?1:0})}};Aa.prototype.subCommit=function(e,t){let n=this._allBuffers;for(let i=0,o=n.length;i<o;++i)jKe(n[i],e,t)};function jKe(e,t,n){if(e.needsCommit&&e.vertexSizeInBytes>0){let i=e.vertexSizeInBytes*t,o=e.vertexSizeInBytes*n;e.vertexBuffer.copyFromArrayView(new Uint8Array(e.arrayBuffer,i,o),i)}}Aa.prototype.endSubCommits=function(){let e=this._allBuffers;for(let t=0,n=e.length;t<n;++t)e[t].needsCommit=!1};function PK(e){let t=e.va;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].va.destroy();e.va=void 0}Aa.prototype.isDestroyed=function(){return!1};Aa.prototype.destroy=function(){let e=this._allBuffers;for(let t=0,n=e.length;t<n;++t){let i=e[t];i.vertexBuffer=i.vertexBuffer&&i.vertexBuffer.destroy()}return PK(this),me(this)};var zA=Aa;var XQn=y(C(),1),jX=`uniform sampler2D u_atlas; + +#ifdef VECTOR_TILE +uniform vec4 u_highlightColor; +#endif + +in vec2 v_textureCoordinates; +in vec4 v_pickColor; +in vec4 v_color; +in float v_splitDirection; + +#ifdef SDF +in vec4 v_outlineColor; +in float v_outlineWidth; +#endif + +#ifdef FRAGMENT_DEPTH_CHECK +in vec4 v_textureCoordinateBounds; // the min and max x and y values for the texture coordinates +in vec4 v_originTextureCoordinateAndTranslate; // texture coordinate at the origin, billboard translate (used for label glyphs) +in vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize +in mat2 v_rotationMatrix; + +const float SHIFT_LEFT12 = 4096.0; +const float SHIFT_LEFT1 = 2.0; + +const float SHIFT_RIGHT12 = 1.0 / 4096.0; +const float SHIFT_RIGHT1 = 1.0 / 2.0; + +float getGlobeDepth(vec2 adjustedST, vec2 depthLookupST, bool applyTranslate, vec2 dimensions, vec2 imageSize) +{ + vec2 lookupVector = imageSize * (depthLookupST - adjustedST); + lookupVector = v_rotationMatrix * lookupVector; + vec2 labelOffset = (dimensions - imageSize) * (depthLookupST - vec2(0.0, v_originTextureCoordinateAndTranslate.y)); // aligns label glyph with bounding rectangle. Will be zero for billboards because dimensions and imageSize will be equal + + vec2 translation = v_originTextureCoordinateAndTranslate.zw; + + if (applyTranslate) + { + // this is only needed for labels where the horizontal origin is not LEFT + // it moves the label back to where the "origin" should be since all label glyphs are set to HorizontalOrigin.LEFT + translation += (dimensions * v_originTextureCoordinateAndTranslate.xy * vec2(1.0, 0.0)); + } + + vec2 st = ((lookupVector - translation + labelOffset) + gl_FragCoord.xy) / czm_viewport.zw; + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, st)); + + if (logDepthOrDepth == 0.0) + { + return 0.0; // not on the globe + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + return eyeCoordinate.z / eyeCoordinate.w; +} +#endif + + +#ifdef SDF + +// Get the distance from the edge of a glyph at a given position sampling an SDF texture. +float getDistance(vec2 position) +{ + return texture(u_atlas, position).r; +} + +// Samples the sdf texture at the given position and produces a color based on the fill color and the outline. +vec4 getSDFColor(vec2 position, float outlineWidth, vec4 outlineColor, float smoothing) +{ + float distance = getDistance(position); + + if (outlineWidth > 0.0) + { + // Don't get the outline edge exceed the SDF_EDGE + float outlineEdge = clamp(SDF_EDGE - outlineWidth, 0.0, SDF_EDGE); + float outlineFactor = smoothstep(SDF_EDGE - smoothing, SDF_EDGE + smoothing, distance); + vec4 sdfColor = mix(outlineColor, v_color, outlineFactor); + float alpha = smoothstep(outlineEdge - smoothing, outlineEdge + smoothing, distance); + return vec4(sdfColor.rgb, sdfColor.a * alpha); + } + else + { + float alpha = smoothstep(SDF_EDGE - smoothing, SDF_EDGE + smoothing, distance); + return vec4(v_color.rgb, v_color.a * alpha); + } +} +#endif + +void main() +{ + if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; + + vec4 color = texture(u_atlas, v_textureCoordinates); + +#ifdef SDF + float outlineWidth = v_outlineWidth; + vec4 outlineColor = v_outlineColor; + + // Get the current distance + float distance = getDistance(v_textureCoordinates); + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + float smoothing = fwidth(distance); + // Get an offset that is approximately half the distance to the neighbor pixels + // 0.354 is approximately half of 1/sqrt(2) + vec2 sampleOffset = 0.354 * vec2(dFdx(v_textureCoordinates) + dFdy(v_textureCoordinates)); + + // Sample the center point + vec4 center = getSDFColor(v_textureCoordinates, outlineWidth, outlineColor, smoothing); + + // Sample the 4 neighbors + vec4 color1 = getSDFColor(v_textureCoordinates + vec2(sampleOffset.x, sampleOffset.y), outlineWidth, outlineColor, smoothing); + vec4 color2 = getSDFColor(v_textureCoordinates + vec2(-sampleOffset.x, sampleOffset.y), outlineWidth, outlineColor, smoothing); + vec4 color3 = getSDFColor(v_textureCoordinates + vec2(-sampleOffset.x, -sampleOffset.y), outlineWidth, outlineColor, smoothing); + vec4 color4 = getSDFColor(v_textureCoordinates + vec2(sampleOffset.x, -sampleOffset.y), outlineWidth, outlineColor, smoothing); + + // Equally weight the center sample and the 4 neighboring samples + color = (center + color1 + color2 + color3 + color4)/5.0; +#else + // If no derivatives available (IE 10?), just do a single sample + float smoothing = 1.0/32.0; + color = getSDFColor(v_textureCoordinates, outlineWidth, outlineColor, smoothing); +#endif + + color = czm_gammaCorrect(color); +#else + color = czm_gammaCorrect(color); + color *= czm_gammaCorrect(v_color); +#endif + +// Fully transparent parts of the billboard are not pickable. +#if !defined(OPAQUE) && !defined(TRANSLUCENT) + if (color.a < 0.005) // matches 0/255 and 1/255 + { + discard; + } +#else +// The billboard is rendered twice. The opaque pass discards translucent fragments +// and the translucent pass discards opaque fragments. +#ifdef OPAQUE + if (color.a < 0.995) // matches < 254/255 + { + discard; + } +#else + if (color.a >= 0.995) // matches 254/255 and 255/255 + { + discard; + } +#endif +#endif + +#ifdef VECTOR_TILE + color *= u_highlightColor; +#endif + out_FragColor = color; + +#ifdef LOG_DEPTH + czm_writeLogDepth(); +#endif + +#ifdef FRAGMENT_DEPTH_CHECK + float temp = v_compressed.y; + + temp = temp * SHIFT_RIGHT1; + + float temp2 = (temp - floor(temp)) * SHIFT_LEFT1; + bool enableDepthTest = temp2 != 0.0; + bool applyTranslate = floor(temp) != 0.0; + + if (enableDepthTest) { + temp = v_compressed.z; + temp = temp * SHIFT_RIGHT12; + + vec2 dimensions; + dimensions.y = (temp - floor(temp)) * SHIFT_LEFT12; + dimensions.x = floor(temp); + + temp = v_compressed.w; + temp = temp * SHIFT_RIGHT12; + + vec2 imageSize; + imageSize.y = (temp - floor(temp)) * SHIFT_LEFT12; + imageSize.x = floor(temp); + + vec2 adjustedST = v_textureCoordinates - v_textureCoordinateBounds.xy; + adjustedST = adjustedST / vec2(v_textureCoordinateBounds.z - v_textureCoordinateBounds.x, v_textureCoordinateBounds.w - v_textureCoordinateBounds.y); + + float epsilonEyeDepth = v_compressed.x + czm_epsilon1; + float globeDepth1 = getGlobeDepth(adjustedST, v_originTextureCoordinateAndTranslate.xy, applyTranslate, dimensions, imageSize); + + // negative values go into the screen + if (globeDepth1 != 0.0 && globeDepth1 > epsilonEyeDepth) + { + float globeDepth2 = getGlobeDepth(adjustedST, vec2(0.0, 1.0), applyTranslate, dimensions, imageSize); // top left corner + if (globeDepth2 != 0.0 && globeDepth2 > epsilonEyeDepth) + { + float globeDepth3 = getGlobeDepth(adjustedST, vec2(1.0, 1.0), applyTranslate, dimensions, imageSize); // top right corner + if (globeDepth3 != 0.0 && globeDepth3 > epsilonEyeDepth) + { + discard; + } + } + } + } +#endif + +} +`;var FQn=y(C(),1),qX=`#ifdef INSTANCED +in vec2 direction; +#endif +in vec4 positionHighAndScale; +in vec4 positionLowAndRotation; +in vec4 compressedAttribute0; // pixel offset, translate, horizontal origin, vertical origin, show, direction, texture coordinates (texture offset) +in vec4 compressedAttribute1; // aligned axis, translucency by distance, image width +in vec4 compressedAttribute2; // label horizontal origin, image height, color, pick color, size in meters, valid aligned axis, 13 bits free +in vec4 eyeOffset; // eye offset in meters, 4 bytes free (texture range) +in vec4 scaleByDistance; // near, nearScale, far, farScale +in vec4 pixelOffsetScaleByDistance; // near, nearScale, far, farScale +in vec4 compressedAttribute3; // distance display condition near, far, disableDepthTestDistance, dimensions +in vec2 sdf; // sdf outline color (rgb) and width (w) +in float splitDirection; // splitDirection +#if defined(VERTEX_DEPTH_CHECK) || defined(FRAGMENT_DEPTH_CHECK) +in vec4 textureCoordinateBoundsOrLabelTranslate; // the min and max x and y values for the texture coordinates +#endif +#ifdef VECTOR_TILE +in float a_batchId; +#endif + +out vec2 v_textureCoordinates; +#ifdef FRAGMENT_DEPTH_CHECK +out vec4 v_textureCoordinateBounds; +out vec4 v_originTextureCoordinateAndTranslate; +out vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize +out mat2 v_rotationMatrix; +#endif + +out vec4 v_pickColor; +out vec4 v_color; +out float v_splitDirection; +#ifdef SDF +out vec4 v_outlineColor; +out float v_outlineWidth; +#endif + +const float UPPER_BOUND = 32768.0; + +const float SHIFT_LEFT16 = 65536.0; +const float SHIFT_LEFT12 = 4096.0; +const float SHIFT_LEFT8 = 256.0; +const float SHIFT_LEFT7 = 128.0; +const float SHIFT_LEFT5 = 32.0; +const float SHIFT_LEFT3 = 8.0; +const float SHIFT_LEFT2 = 4.0; +const float SHIFT_LEFT1 = 2.0; + +const float SHIFT_RIGHT12 = 1.0 / 4096.0; +const float SHIFT_RIGHT8 = 1.0 / 256.0; +const float SHIFT_RIGHT7 = 1.0 / 128.0; +const float SHIFT_RIGHT5 = 1.0 / 32.0; +const float SHIFT_RIGHT3 = 1.0 / 8.0; +const float SHIFT_RIGHT2 = 1.0 / 4.0; +const float SHIFT_RIGHT1 = 1.0 / 2.0; + +vec4 addScreenSpaceOffset(vec4 positionEC, vec2 imageSize, float scale, vec2 direction, vec2 origin, vec2 translate, vec2 pixelOffset, vec3 alignedAxis, bool validAlignedAxis, float rotation, bool sizeInMeters, out mat2 rotationMatrix, out float mpp) +{ + // Note the halfSize cannot be computed in JavaScript because it is sent via + // compressed vertex attributes that coerce it to an integer. + vec2 halfSize = imageSize * scale * 0.5; + halfSize *= ((direction * 2.0) - 1.0); + + vec2 originTranslate = origin * abs(halfSize); + +#if defined(ROTATION) || defined(ALIGNED_AXIS) + if (validAlignedAxis || rotation != 0.0) + { + float angle = rotation; + if (validAlignedAxis) + { + vec4 projectedAlignedAxis = czm_modelView3D * vec4(alignedAxis, 0.0); + angle += sign(-projectedAlignedAxis.x) * acos(sign(projectedAlignedAxis.y) * (projectedAlignedAxis.y * projectedAlignedAxis.y) / + (projectedAlignedAxis.x * projectedAlignedAxis.x + projectedAlignedAxis.y * projectedAlignedAxis.y)); + } + + float cosTheta = cos(angle); + float sinTheta = sin(angle); + rotationMatrix = mat2(cosTheta, sinTheta, -sinTheta, cosTheta); + halfSize = rotationMatrix * halfSize; + } + else + { + rotationMatrix = mat2(1.0, 0.0, 0.0, 1.0); + } +#endif + + mpp = czm_metersPerPixel(positionEC); + positionEC.xy += (originTranslate + halfSize) * czm_branchFreeTernary(sizeInMeters, 1.0, mpp); + positionEC.xy += (translate + pixelOffset) * mpp; + + return positionEC; +} + +#ifdef VERTEX_DEPTH_CHECK +float getGlobeDepth(vec4 positionEC) +{ + vec4 posWC = czm_eyeToWindowCoordinates(positionEC); + + float globeDepth = czm_unpackDepth(texture(czm_globeDepthTexture, posWC.xy / czm_viewport.zw)); + + if (globeDepth == 0.0) + { + return 0.0; // not on the globe + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(posWC.xy, globeDepth); + return eyeCoordinate.z / eyeCoordinate.w; +} +#endif +void main() +{ + // Modifying this shader may also require modifications to Billboard._computeScreenSpacePosition + + // unpack attributes + vec3 positionHigh = positionHighAndScale.xyz; + vec3 positionLow = positionLowAndRotation.xyz; + float scale = positionHighAndScale.w; + +#if defined(ROTATION) || defined(ALIGNED_AXIS) + float rotation = positionLowAndRotation.w; +#else + float rotation = 0.0; +#endif + + float compressed = compressedAttribute0.x; + + vec2 pixelOffset; + pixelOffset.x = floor(compressed * SHIFT_RIGHT7); + compressed -= pixelOffset.x * SHIFT_LEFT7; + pixelOffset.x -= UPPER_BOUND; + + vec2 origin; + origin.x = floor(compressed * SHIFT_RIGHT5); + compressed -= origin.x * SHIFT_LEFT5; + + origin.y = floor(compressed * SHIFT_RIGHT3); + compressed -= origin.y * SHIFT_LEFT3; + +#ifdef FRAGMENT_DEPTH_CHECK + vec2 depthOrigin = origin.xy; +#endif + origin -= vec2(1.0); + + float show = floor(compressed * SHIFT_RIGHT2); + compressed -= show * SHIFT_LEFT2; + +#ifdef INSTANCED + vec2 textureCoordinatesBottomLeft = czm_decompressTextureCoordinates(compressedAttribute0.w); + vec2 textureCoordinatesRange = czm_decompressTextureCoordinates(eyeOffset.w); + vec2 textureCoordinates = textureCoordinatesBottomLeft + direction * textureCoordinatesRange; +#else + vec2 direction; + direction.x = floor(compressed * SHIFT_RIGHT1); + direction.y = compressed - direction.x * SHIFT_LEFT1; + + vec2 textureCoordinates = czm_decompressTextureCoordinates(compressedAttribute0.w); +#endif + + float temp = compressedAttribute0.y * SHIFT_RIGHT8; + pixelOffset.y = -(floor(temp) - UPPER_BOUND); + + vec2 translate; + translate.y = (temp - floor(temp)) * SHIFT_LEFT16; + + temp = compressedAttribute0.z * SHIFT_RIGHT8; + translate.x = floor(temp) - UPPER_BOUND; + + translate.y += (temp - floor(temp)) * SHIFT_LEFT8; + translate.y -= UPPER_BOUND; + + temp = compressedAttribute1.x * SHIFT_RIGHT8; + float temp2 = floor(compressedAttribute2.w * SHIFT_RIGHT2); + + vec2 imageSize = vec2(floor(temp), temp2); + +#ifdef FRAGMENT_DEPTH_CHECK + float labelHorizontalOrigin = floor(compressedAttribute2.w - (temp2 * SHIFT_LEFT2)); + float applyTranslate = 0.0; + if (labelHorizontalOrigin != 0.0) // is a billboard, so set apply translate to false + { + applyTranslate = 1.0; + labelHorizontalOrigin -= 2.0; + depthOrigin.x = labelHorizontalOrigin + 1.0; + } + + depthOrigin = vec2(1.0) - (depthOrigin * 0.5); +#endif + +#ifdef EYE_DISTANCE_TRANSLUCENCY + vec4 translucencyByDistance; + translucencyByDistance.x = compressedAttribute1.z; + translucencyByDistance.z = compressedAttribute1.w; + + translucencyByDistance.y = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; + + temp = compressedAttribute1.y * SHIFT_RIGHT8; + translucencyByDistance.w = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; +#endif + +#if defined(VERTEX_DEPTH_CHECK) || defined(FRAGMENT_DEPTH_CHECK) + temp = compressedAttribute3.w; + temp = temp * SHIFT_RIGHT12; + + vec2 dimensions; + dimensions.y = (temp - floor(temp)) * SHIFT_LEFT12; + dimensions.x = floor(temp); +#endif + +#ifdef ALIGNED_AXIS + vec3 alignedAxis = czm_octDecode(floor(compressedAttribute1.y * SHIFT_RIGHT8)); + temp = compressedAttribute2.z * SHIFT_RIGHT5; + bool validAlignedAxis = (temp - floor(temp)) * SHIFT_LEFT1 > 0.0; +#else + vec3 alignedAxis = vec3(0.0); + bool validAlignedAxis = false; +#endif + + vec4 pickColor; + vec4 color; + + temp = compressedAttribute2.y; + temp = temp * SHIFT_RIGHT8; + pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor.r = floor(temp); + + temp = compressedAttribute2.x; + temp = temp * SHIFT_RIGHT8; + color.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + color.g = (temp - floor(temp)) * SHIFT_LEFT8; + color.r = floor(temp); + + temp = compressedAttribute2.z * SHIFT_RIGHT8; + bool sizeInMeters = floor((temp - floor(temp)) * SHIFT_LEFT7) > 0.0; + temp = floor(temp) * SHIFT_RIGHT8; + + pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor /= 255.0; + + color.a = floor(temp); + color /= 255.0; + + /////////////////////////////////////////////////////////////////////////// + + vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + vec4 positionEC = czm_modelViewRelativeToEye * p; + +#if defined(FRAGMENT_DEPTH_CHECK) || defined(VERTEX_DEPTH_CHECK) + float eyeDepth = positionEC.z; +#endif + + positionEC = czm_eyeOffset(positionEC, eyeOffset.xyz); + positionEC.xyz *= show; + + /////////////////////////////////////////////////////////////////////////// + +#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(EYE_DISTANCE_PIXEL_OFFSET) || defined(DISTANCE_DISPLAY_CONDITION) || defined(DISABLE_DEPTH_DISTANCE) + float lengthSq; + if (czm_sceneMode == czm_sceneMode2D) + { + // 2D camera distance is a special case + // treat all billboards as flattened to the z=0.0 plane + lengthSq = czm_eyeHeight2D.y; + } + else + { + lengthSq = dot(positionEC.xyz, positionEC.xyz); + } +#endif + +#ifdef EYE_DISTANCE_SCALING + float distanceScale = czm_nearFarScalar(scaleByDistance, lengthSq); + scale *= distanceScale; + translate *= distanceScale; + // push vertex behind near plane for clipping + if (scale == 0.0) + { + positionEC.xyz = vec3(0.0); + } +#endif + + float translucency = 1.0; +#ifdef EYE_DISTANCE_TRANSLUCENCY + translucency = czm_nearFarScalar(translucencyByDistance, lengthSq); + // push vertex behind near plane for clipping + if (translucency == 0.0) + { + positionEC.xyz = vec3(0.0); + } +#endif + +#ifdef EYE_DISTANCE_PIXEL_OFFSET + float pixelOffsetScale = czm_nearFarScalar(pixelOffsetScaleByDistance, lengthSq); + pixelOffset *= pixelOffsetScale; +#endif + +#ifdef DISTANCE_DISPLAY_CONDITION + float nearSq = compressedAttribute3.x; + float farSq = compressedAttribute3.y; + if (lengthSq < nearSq || lengthSq > farSq) + { + positionEC.xyz = vec3(0.0); + } +#endif + + mat2 rotationMatrix; + float mpp; + +#ifdef DISABLE_DEPTH_DISTANCE + float disableDepthTestDistance = compressedAttribute3.z; +#endif + +#ifdef VERTEX_DEPTH_CHECK +if (lengthSq < disableDepthTestDistance) { + float depthsilon = 10.0; + + vec2 labelTranslate = textureCoordinateBoundsOrLabelTranslate.xy; + vec4 pEC1 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(0.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + float globeDepth1 = getGlobeDepth(pEC1); + + if (globeDepth1 != 0.0 && pEC1.z + depthsilon < globeDepth1) + { + vec4 pEC2 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(0.0, 1.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + float globeDepth2 = getGlobeDepth(pEC2); + + if (globeDepth2 != 0.0 && pEC2.z + depthsilon < globeDepth2) + { + vec4 pEC3 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(1.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + float globeDepth3 = getGlobeDepth(pEC3); + if (globeDepth3 != 0.0 && pEC3.z + depthsilon < globeDepth3) + { + positionEC.xyz = vec3(0.0); + } + } + } +} +#endif + + positionEC = addScreenSpaceOffset(positionEC, imageSize, scale, direction, origin, translate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + gl_Position = czm_projection * positionEC; + v_textureCoordinates = textureCoordinates; + +#ifdef LOG_DEPTH + czm_vertexLogDepth(); +#endif + +#ifdef DISABLE_DEPTH_DISTANCE + if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0) + { + disableDepthTestDistance = czm_minimumDisableDepthTestDistance; + } + + if (disableDepthTestDistance != 0.0) + { + // Don't try to "multiply both sides" by w. Greater/less-than comparisons won't work for negative values of w. + float zclip = gl_Position.z / gl_Position.w; + bool clipped = (zclip < -1.0 || zclip > 1.0); + if (!clipped && (disableDepthTestDistance < 0.0 || (lengthSq > 0.0 && lengthSq < disableDepthTestDistance))) + { + // Position z on the near plane. + gl_Position.z = -gl_Position.w; +#ifdef LOG_DEPTH + v_depthFromNearPlusOne = 1.0; +#endif + } + } +#endif + +#ifdef FRAGMENT_DEPTH_CHECK + if (sizeInMeters) { + translate /= mpp; + dimensions /= mpp; + imageSize /= mpp; + } + +#if defined(ROTATION) || defined(ALIGNED_AXIS) + v_rotationMatrix = rotationMatrix; +#else + v_rotationMatrix = mat2(1.0, 0.0, 0.0, 1.0); +#endif + + float enableDepthCheck = 0.0; + if (lengthSq < disableDepthTestDistance) + { + enableDepthCheck = 1.0; + } + + float dw = floor(clamp(dimensions.x, 0.0, SHIFT_LEFT12)); + float dh = floor(clamp(dimensions.y, 0.0, SHIFT_LEFT12)); + + float iw = floor(clamp(imageSize.x, 0.0, SHIFT_LEFT12)); + float ih = floor(clamp(imageSize.y, 0.0, SHIFT_LEFT12)); + + v_compressed.x = eyeDepth; + v_compressed.y = applyTranslate * SHIFT_LEFT1 + enableDepthCheck; + v_compressed.z = dw * SHIFT_LEFT12 + dh; + v_compressed.w = iw * SHIFT_LEFT12 + ih; + v_originTextureCoordinateAndTranslate.xy = depthOrigin; + v_originTextureCoordinateAndTranslate.zw = translate; + v_textureCoordinateBounds = textureCoordinateBoundsOrLabelTranslate; + +#endif + +#ifdef SDF + vec4 outlineColor; + float outlineWidth; + + temp = sdf.x; + temp = temp * SHIFT_RIGHT8; + outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor.r = floor(temp); + + temp = sdf.y; + temp = temp * SHIFT_RIGHT8; + float temp3 = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + outlineWidth = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor.a = floor(temp); + outlineColor /= 255.0; + + v_outlineWidth = outlineWidth / 255.0; + v_outlineColor = outlineColor; + v_outlineColor.a *= translucency; +#endif + + v_pickColor = pickColor; + + v_color = color; + v_color.a *= translucency; + v_splitDirection = splitDirection; +} +`;var u5n=y(C(),1);var QQn=y(C(),1);var MQn=y(C(),1),qKe=Object.freeze({NONE:0,LOADING:2,LOADED:3,ERROR:4,FAILED:5}),Ts=qKe;function KA(e){this._billboardCollection=e,this._id=void 0,this._loadState=Ts.NONE,this._loadError=void 0,this._index=-1,this._width=void 0,this._height=void 0,this._hasSubregion=!1,this.dirty=!1}Object.defineProperties(KA.prototype,{loadError:{get:function(){return this._loadError}},loadState:{get:function(){return this._loadState}},ready:{get:function(){return this._loadState===Ts.LOADED}},hasImage:{get:function(){return this._loadState!==Ts.NONE}},id:{get:function(){return this._id}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});KA.prototype.unload=async function(){this._loadState!==Ts.NONE&&(this._id=void 0,this._loadError=void 0,this._loadState=Ts.NONE,this._index=-1,this._width=void 0,this._height=void 0,this.dirty=!0)};KA.prototype.loadImage=async function(e,t){if(this._id===e)return;let n=this._billboardCollection,i=n.billboardTextureCache,o=i.get(e);if(l(o)&&t.loadState===Ts.LOADING||t.loadState===Ts.LOADED){KA.clone(o,this);return}l(o)||(o=new KA(n),i.set(e,o)),o._id=this._id=e,o._loadState=this._loadState=Ts.LOADING,o._loadError=this._loadError=void 0;let r,s=this._billboardCollection.textureAtlas;try{r=await s.addImage(e,t)}catch(c){if(o._loadState=Ts.ERROR,o._loadError=c,this._id!==e)return;this._loadState=Ts.ERROR,this._loadError=c;return}if(!l(r)||r===-1){if(o._loadState=Ts.FAILED,o._index=-1,this._id!==e)return;this._loadState=Ts.FAILED,this._index=-1;return}o._index=r,o._loadState=Ts.LOADED;let a=s.rectangles[r];o._width=a.width,o._height=a.height,this._id===e&&(this._index=r,this._loadState=Ts.LOADED,this._width=a.width,this._height=a.height,this.dirty=!0)};KA.prototype.addImageSubRegion=async function(e,t){this._id=e,this._loadState=Ts.LOADING,this._loadError=void 0,this._hasSubregion=!0;let n,i=this._billboardCollection.textureAtlas;try{n=await i.addImageSubRegion(e,t)}catch(o){this._loadState=Ts.ERROR,this._loadError=o;return}if(!l(n)||n===-1){this._loadState=Ts.FAILED,this._index=-1,this._width=void 0,this._height=void 0;return}this._width=t.width,this._height=t.height,this._index=n,this._loadState=Ts.LOADED,this.dirty=!0};KA.prototype.computeTextureCoordinates=function(e){return this._billboardCollection.textureAtlas.computeTextureCoordinates(this._index,e)};KA.clone=function(e,t){if(t._id=e._id,t._loadState=e._loadState,t._loadError=void 0,t._index=e._index,t._width=e._width,t._height=e._height,t._hasSubregion=e._hasSubregion,e.ready){t.dirty=!0;return}return(async()=>{let i=e._id;await e._billboardCollection.textureAtlas._indexPromiseById.get(i),t._id===i&&(e._hasSubregion&&await Promise.resolve(),t._id=i,t._loadState=e._loadState,t._loadError=e._loadError,t._index=e._index,t._width=e._width,t._height=e._height,t.dirty=!0)})(),t};var JA=KA;function Zi(e,t){e=e??Y.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.pixelOffsetScaleByDistance,o=e.scaleByDistance,r=e.distanceDisplayCondition;l(n)&&(n=zt.clone(n)),l(i)&&(i=zt.clone(i)),l(o)&&(o=zt.clone(o)),l(r)&&(r=Qt.clone(r)),this._show=e.show??!0,this._position=m.clone(e.position??m.ZERO),this._actualPosition=m.clone(this._position),this._pixelOffset=D.clone(e.pixelOffset??D.ZERO),this._translate=new D(0,0),this._eyeOffset=m.clone(e.eyeOffset??m.ZERO),this._heightReference=e.heightReference??et.NONE,this._verticalOrigin=e.verticalOrigin??kn.CENTER,this._horizontalOrigin=e.horizontalOrigin??wi.CENTER,this._scale=e.scale??1,this._color=U.clone(e.color??U.WHITE),this._rotation=e.rotation??0,this._alignedAxis=m.clone(e.alignedAxis??m.ZERO),this._width=e.width,this._height=e.height,this._scaleByDistance=o,this._translucencyByDistance=n,this._pixelOffsetScaleByDistance=i,this._sizeInMeters=e.sizeInMeters??!1,this._distanceDisplayCondition=r,this._disableDepthTestDistance=e.disableDepthTestDistance,this._id=e.id,this._collection=e.collection??t,this._pickId=void 0,this._pickPrimitive=e._pickPrimitive??this,this._billboardCollection=t,this._dirty=!1,this._index=-1,this._batchIndex=void 0,this._imageTexture=new JA(t),this._imageWidth=void 0,this._imageHeight=void 0,this._labelDimensions=void 0,this._labelHorizontalOrigin=void 0,this._labelTranslate=void 0;let s=e.image,a=e.imageId;l(s)&&(l(a)||(typeof s=="string"?a=s:l(s.src)?a=s.src:a=qn()),this._imageTexture.loadImage(a,s)),l(e.imageSubRegion)&&this._imageTexture.addImageSubRegion(a,e.imageSubRegion),this._actualClampedPosition=void 0,this._removeCallbackFunc=void 0,this._mode=re.SCENE3D,this._clusterShow=!0,this._outlineColor=U.clone(e.outlineColor??U.BLACK),this._outlineWidth=e.outlineWidth??0,this._updateClamping(),this._splitDirection=e.splitDirection??Ir.NONE}var Nde=Zi.SHOW_INDEX=0,QQ=Zi.POSITION_INDEX=1,Yde=Zi.PIXEL_OFFSET_INDEX=2,$Ke=Zi.EYE_OFFSET_INDEX=3,eJe=Zi.HORIZONTAL_ORIGIN_INDEX=4,tJe=Zi.VERTICAL_ORIGIN_INDEX=5,nJe=Zi.SCALE_INDEX=6,Dde=Zi.IMAGE_INDEX_INDEX=7,Qde=Zi.COLOR_INDEX=8,iJe=Zi.ROTATION_INDEX=9,oJe=Zi.ALIGNED_AXIS_INDEX=10,rJe=Zi.SCALE_BY_DISTANCE_INDEX=11,sJe=Zi.TRANSLUCENCY_BY_DISTANCE_INDEX=12,aJe=Zi.PIXEL_OFFSET_SCALE_BY_DISTANCE_INDEX=13,cJe=Zi.DISTANCE_DISPLAY_CONDITION=14,lJe=Zi.DISABLE_DEPTH_DISTANCE=15;Zi.TEXTURE_COORDINATE_BOUNDS=16;var Ude=Zi.SDF_INDEX=17,dJe=Zi.SPLIT_DIRECTION_INDEX=18;Zi.NUMBER_OF_PROPERTIES=19;function fr(e,t){let n=e._billboardCollection;l(n)&&(n._updateBillboard(e,t),e._dirty=!0)}Object.defineProperties(Zi.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,fr(this,Nde))}},position:{get:function(){return this._position},set:function(e){let t=this._position;m.equals(t,e)||(m.clone(e,t),m.clone(e,this._actualPosition),this._updateClamping(),fr(this,QQ))}},heightReference:{get:function(){return this._heightReference},set:function(e){let t=this._heightReference;e!==t&&(this._heightReference=e,this._updateClamping(),fr(this,QQ))}},pixelOffset:{get:function(){return this._pixelOffset},set:function(e){let t=this._pixelOffset;D.equals(t,e)||(D.clone(e,t),fr(this,Yde))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;zt.equals(t,e)||(this._scaleByDistance=zt.clone(e,t),fr(this,rJe))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;zt.equals(t,e)||(this._translucencyByDistance=zt.clone(e,t),fr(this,sJe))}},pixelOffsetScaleByDistance:{get:function(){return this._pixelOffsetScaleByDistance},set:function(e){let t=this._pixelOffsetScaleByDistance;zt.equals(t,e)||(this._pixelOffsetScaleByDistance=zt.clone(e,t),fr(this,aJe))}},eyeOffset:{get:function(){return this._eyeOffset},set:function(e){let t=this._eyeOffset;m.equals(t,e)||(m.clone(e,t),fr(this,$Ke))}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin!==e&&(this._horizontalOrigin=e,fr(this,eJe))}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){this._verticalOrigin!==e&&(this._verticalOrigin=e,fr(this,tJe))}},scale:{get:function(){return this._scale},set:function(e){this._scale!==e&&(this._scale=e,fr(this,nJe))}},color:{get:function(){return this._color},set:function(e){let t=this._color;U.equals(t,e)||(U.clone(e,t),fr(this,Qde))}},rotation:{get:function(){return this._rotation},set:function(e){this._rotation!==e&&(this._rotation=e,fr(this,iJe))}},alignedAxis:{get:function(){return this._alignedAxis},set:function(e){let t=this._alignedAxis;m.equals(t,e)||(m.clone(e,t),fr(this,oJe))}},width:{get:function(){return this._width??this._imageTexture.width},set:function(e){this._width!==e&&(this._width=e,fr(this,Dde))}},height:{get:function(){return this._height??this._imageTexture.height},set:function(e){this._height!==e&&(this._height=e,fr(this,Dde))}},sizeInMeters:{get:function(){return this._sizeInMeters},set:function(e){this._sizeInMeters!==e&&(this._sizeInMeters=e,fr(this,Qde))}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Qt.equals(e,this._distanceDisplayCondition)||(this._distanceDisplayCondition=Qt.clone(e,this._distanceDisplayCondition),fr(this,cJe))}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance!==e&&(this._disableDepthTestDistance=e,fr(this,lJe))}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickPrimitive:{get:function(){return this._pickPrimitive},set:function(e){this._pickPrimitive=e,l(this._pickId)&&(this._pickId.object.primitive=e)}},pickId:{get:function(){return this._pickId}},image:{get:function(){return this._imageTexture.id},set:function(e){if(!l(e)){this._imageTexture.unload();return}let t;typeof e=="string"?t=e:e instanceof Ve?t=e._url:l(e.src)?t=e.src:t=qn(),this._imageTexture.loadImage(t,e)}},ready:{get:function(){return this._imageTexture.ready}},loadError:{get:function(){return this._imageTexture.loadError}},textureDirty:{get:function(){return this._imageTexture.dirty},set:function(e){this._imageTexture.dirty=e}},_clampedPosition:{get:function(){return this._actualClampedPosition},set:function(e){this._actualClampedPosition=m.clone(e,this._actualClampedPosition),fr(this,QQ)}},clusterShow:{get:function(){return this._clusterShow},set:function(e){this._clusterShow!==e&&(this._clusterShow=e,fr(this,Nde))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;U.equals(t,e)||(U.clone(e,t),fr(this,Ude))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,fr(this,Ude))}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,fr(this,dJe))}}});Zi.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this._pickPrimitive,collection:this._collection,id:this._id})),this._pickId};Zi.prototype._updateClamping=function(){Zi._updateClamping(this._billboardCollection,this)};var UQ=new ge;Zi._updateClamping=function(e,t){if(!l(e)||!l(e._scene))return;let n=e._scene,i=n.ellipsoid??ie.default,o=n.frameState.mode,r=o!==t._mode;if(t._mode=o,(t._heightReference===et.NONE||r)&&l(t._removeCallbackFunc)&&(t._removeCallbackFunc(),t._removeCallbackFunc=void 0,t._clampedPosition=void 0),t._heightReference===et.NONE||!l(t._position))return;l(t._removeCallbackFunc)&&t._removeCallbackFunc();let s=i.cartesianToCartographic(t._position);if(!l(s)){t._actualClampedPosition=void 0;return}function a(d){let u=i.cartographicToCartesian(d,t._clampedPosition);D_(t._heightReference)&&(t._mode===re.SCENE3D?(d.height+=s.height,i.cartographicToCartesian(d,u)):u.x+=s.height),t._clampedPosition=u}t._removeCallbackFunc=n.updateHeight(s,a,t._heightReference),ge.clone(s,UQ);let c=n.getHeight(s,t._heightReference);l(c)&&(UQ.height=c),a(UQ)};Zi.prototype.computeTextureCoordinates=function(e){return this._imageTexture.computeTextureCoordinates(e)};Zi.prototype.setImage=function(e,t){this._imageTexture.loadImage(e,t)};Zi.prototype.setImageTexture=function(e){JA.clone(e,this._imageTexture)};Zi.prototype.setImageSubRegion=function(e,t){this._imageTexture.addImageSubRegion(e,t)};Zi.prototype._setTranslate=function(e){let t=this._translate;D.equals(t,e)||(D.clone(e,t),fr(this,Yde))};Zi.prototype._getActualPosition=function(){return l(this._clampedPosition)?this._clampedPosition:this._actualPosition};Zi.prototype._setActualPosition=function(e){l(this._clampedPosition)||m.clone(e,this._actualPosition),fr(this,QQ)};var kde=new ce;Zi._computeActualPosition=function(e,t,n,i){return l(e._clampedPosition)?(n.mode!==e._mode&&e._updateClamping(),e._clampedPosition):n.mode===re.SCENE3D?t:(X.multiplyByPoint(i,t,kde),to.computeActualEllipsoidPosition(n,kde))};var Ode=new m;Zi._computeScreenSpacePosition=function(e,t,n,i,o,r){let s=X.multiplyByPoint(e,t,Ode),a=to.worldWithEyeOffsetToWindowCoordinates(o,s,n,r);if(l(a))return D.add(a,i,a),a};var DQ=new D(0,0);Zi.prototype.computeScreenSpacePosition=function(e,t){let n=this._billboardCollection;l(t)||(t=new D),D.clone(this._pixelOffset,DQ),D.add(DQ,this._translate,DQ);let i=n.modelMatrix,o=this._position;if(l(this._clampedPosition)&&(o=this._clampedPosition,e.mode!==re.SCENE3D)){let s=e.mapProjection,a=s.ellipsoid,c=s.unproject(o,UQ);o=a.cartographicToCartesian(c,Ode),i=X.IDENTITY}return Zi._computeScreenSpacePosition(i,o,this._eyeOffset,DQ,e,t)};Zi.getScreenSpaceBoundingBox=function(e,t,n){let i=e.width,o=e.height,r=e.scale;i*=r,o*=r;let s=t.x;e.horizontalOrigin===wi.RIGHT?s-=i:e.horizontalOrigin===wi.CENTER&&(s-=i*.5);let a=t.y;return e.verticalOrigin===kn.BOTTOM||e.verticalOrigin===kn.BASELINE?a-=o:e.verticalOrigin===kn.CENTER&&(a-=o*.5),l(n)||(n=new Ke),n.x=s,n.y=a,n.width=i,n.height=o,n};Zi.prototype.equals=function(e){return this===e||l(e)&&this._id===e._id&&m.equals(this._position,e._position)&&this.image===e.image&&this._show===e._show&&this._scale===e._scale&&this._verticalOrigin===e._verticalOrigin&&this._horizontalOrigin===e._horizontalOrigin&&this._heightReference===e._heightReference&&U.equals(this._color,e._color)&&D.equals(this._pixelOffset,e._pixelOffset)&&D.equals(this._translate,e._translate)&&m.equals(this._eyeOffset,e._eyeOffset)&&zt.equals(this._scaleByDistance,e._scaleByDistance)&&zt.equals(this._translucencyByDistance,e._translucencyByDistance)&&zt.equals(this._pixelOffsetScaleByDistance,e._pixelOffsetScaleByDistance)&&Qt.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._splitDirection===e._splitDirection};Zi.prototype._destroy=function(){l(this._customData)&&(this._billboardCollection._scene.globe._surface.removeTileCustomData(this._customData),this._customData=void 0),l(this._removeCallbackFunc)&&(this._removeCallbackFunc(),this._removeCallbackFunc=void 0),this.image=void 0,this._pickId=this._pickId&&this._pickId.destroy(),this._billboardCollection=void 0};var Eo=Zi;var h5n=y(C(),1),uJe={OPAQUE:0,TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2},No=Object.freeze(uJe);var p5n=y(C(),1),mJe={FONT_SIZE:48,PADDING:10,RADIUS:8,CUTOFF:.25},ga=Object.freeze(mJe);var X5n=y(C(),1);var y5n=y(C(),1);function $X({x:e,y:t,width:n,height:i}){this.rectangle=new Ke(e,t,n,i),this.childNode1=void 0,this.childNode2=void 0,this.index=void 0}function MK({width:e,height:t,borderPadding:n}){this._width=e,this._height=t,this._borderPadding=n,this._root=new $X({x:n,y:n,width:e-2*n,height:t-2*n})}MK.prototype.pack=function(e,{width:t,height:n}){let i=this._findNode(this._root,{width:t,height:n});if(l(i))return i.index=e,i};MK.prototype._findNode=function(e,{width:t,height:n}){if(l(e)){if(!l(e.childNode1)&&!l(e.childNode2)){if(l(e.index))return;let{rectangle:i}=e,o=i.width,r=i.height,s=o-t,a=r-n;return s<0||a<0?void 0:s===0&&a===0?e:s>a?(e.childNode1=new $X({x:i.x,y:i.y,width:t,height:r}),e.childNode2=new $X({x:i.x+t,y:i.y,width:s,height:r}),this._findNode(e.childNode1,{width:t,height:n})):(e.childNode1=new $X({x:i.x,y:i.y,width:o,height:n}),e.childNode2=new $X({x:i.x,y:i.y+n,width:o,height:a}),this._findNode(e.childNode1,{width:t,height:n}))}return this._findNode(e.childNode1,{width:t,height:n})||this._findNode(e.childNode2,{width:t,height:n})}};var uT=MK;var Hde=16;function ld(e){e=e??Y.EMPTY_OBJECT;let t=e.borderWidthInPixels??1,n=e.initialSize??new D(Hde,Hde);this._pixelFormat=e.pixelFormat??tt.RGBA,this._sampler=e.sampler,this._borderWidthInPixels=t,this._initialSize=n,this._texturePacker=void 0,this._rectangles=[],this._subRegions=new Map,this._guid=qn(),this._imagesToAddQueue=[],this._indexById=new Map,this._indexPromiseById=new Map,this._nextIndex=0}Object.defineProperties(ld.prototype,{borderWidthInPixels:{get:function(){return this._borderWidthInPixels}},rectangles:{get:function(){return this._rectangles}},texture:{get:function(){return this._texture}},pixelFormat:{get:function(){return this._pixelFormat}},sampler:{get:function(){return this._sampler}},numberOfImages:{get:function(){return this._nextIndex}},guid:{get:function(){return this._guid}},sizeInBytes:{get:function(){return l(this._texture)?this._texture.sizeInBytes:0}}});ld.prototype.computeTextureCoordinates=function(e,t){let n=this._texture,i=this._rectangles[e];if(l(t)||(t=new Ke),!l(i))return t.x=0,t.y=0,t.width=0,t.height=0,t;let o=n.width,r=n.height,s=i.width,a=i.height,c=i.x,d=i.y,u=this._subRegions.get(e);if(l(u)){let h=this._rectangles[u];c+=h.x,d+=h.y}return t.x=c/o,t.y=d/r,t.width=s/o,t.height=a/r,t};ld.prototype._copyFromTexture=function(e,t,n,i){let o=this._pixelFormat,r=this._sampler,s=new Wt({context:e,height:n,width:t,pixelFormat:o,sampler:r}),a=e._gl,c=s._textureTarget,d=this._texture,u=new jr({context:e,colorTextures:[d],destroyAttachments:!1});a.activeTexture(a.TEXTURE0),a.bindTexture(c,s._texture),u._bind();let h=this.rectangles,p=this._subRegions;for(let g=0;g<h.length;++g){let f=i[g],b=h[g];if(!l(f)||!l(b)||l(p.get(g)))continue;let{x,y:I,width:_,height:E}=f;a.copyTexSubImage2D(c,0,x,I,b.x,b.y,_,E)}return a.bindTexture(c,null),s._initialized=!0,u._unBind(),u.destroy(),s};ld.prototype._resize=function(e,t=0){let n=this._borderWidthInPixels,i=this._rectangles,o=this._imagesToAddQueue,r=this._texture,s=r.width,a=r.height,c=this._subRegions,d=i.map((_,E)=>new zde({index:E,image:_})).filter((_,E)=>l(_.image)&&!l(c.get(E))),u=0,h=0,p=0;for(let _=t;_<o.length;++_){let{width:E,height:S}=o[_].image;u=Math.max(u,E),h=Math.max(h,S),p+=E*S,d.push(o[_])}s=Math.max(u,s),a=Math.max(h,a),e.webgl2||(s=Z.nextPowerOfTwo(s),a=Z.nextPowerOfTwo(a));let g=p,f=1;for(;g/s/a>=1;)f*=2,s>a?a*=f:s*=f;d.sort(({image:_},{image:E})=>E.height*E.width-_.height*_.width);let b=new Array(this._nextIndex);for(let _ of this._subRegions.keys())l(c.get(_))&&(b[_]=i[_]);let x,I=!1;for(;!I;){x=new uT({height:a,width:s,borderPadding:n});let _;for(_=0;_<d.length;++_){let{index:E,image:S}=d[_];if(!l(S))continue;let R=x.pack(E,S);if(!l(R)){s>a?a*=2:s*=2;break}b[E]=R.rectangle}I=_===d.length}this._texturePacker=x,this._texture=this._copyFromTexture(e,s,a,b),r.destroy(),this._rectangles=b,this._guid=qn()};ld.prototype.getImageIndex=function(e){return this._indexById.get(e)};ld.prototype._copyImageToTexture=function({index:e,image:t,resolve:n,reject:i}){let o=this._texture,r=this._rectangles[e];try{o.copyFrom({source:t,xOffset:r.x,yOffset:r.y}),l(n)&&n(e)}catch(s){if(l(i)){i(s);return}}};function zde({index:e,image:t,resolve:n,reject:i}){this.index=e,this.image=t,this.resolve=n,this.reject=i,this.rectangle=void 0}ld.prototype._addImage=function(e,t){return new Promise((n,i)=>{this._imagesToAddQueue.push(new zde({index:e,image:t,resolve:n,reject:i})),this._imagesToAddQueue.sort(({image:o},{image:r})=>r.height*r.width-o.height*o.width)})};ld.prototype._processImageQueue=function(e){let t=this._imagesToAddQueue;if(t.length===0)return!1;this._rectangles.length=this._nextIndex;let n,i;for(n=0;n<t.length;++n){let o=t[n],{image:r,index:s}=o,a=this._texturePacker.pack(s,r);if(!l(a)){try{this._resize(e,n)}catch(c){i=c,l(o.reject)&&o.reject(i)}break}this._rectangles[s]=a.rectangle}if(l(i)){for(n=n+1;n<t.length;++n){let{resolve:o}=t[n];l(o)&&o(-1)}return t.length=0,!1}for(let o=0;o<t.length;++o)this._copyImageToTexture(t[o]);return t.length=0,!0};ld.prototype.update=function(e){if(!l(this._texture)){let t=this._initialSize.x,n=this._initialSize.y,i=this._pixelFormat,o=this._sampler,r=this._borderWidthInPixels;this._texture=new Wt({context:e,width:t,height:n,pixelFormat:i,sampler:o}),this._texturePacker=new uT({height:n,width:t,borderPadding:r})}return this._processImageQueue(e)};async function hJe(e,t){return typeof e=="function"&&(e=e(t)),(typeof e=="string"||e instanceof Ve)&&(e=Ve.createIfNeeded(e).fetchImage()),e}ld.prototype.addImage=function(e,t){let n=this._indexPromiseById.get(e);if(l(n))return n;let i=this._nextIndex++;return this._indexById.set(e,i),n=(async()=>(t=await hJe(t,e),this.isDestroyed()||!l(t)?-1:this._addImage(i,t)))(),this._indexPromiseById.set(e,n),n};ld.prototype.addImageSubRegion=function(e,t){let n=this._indexById.get(e);if(!l(n))throw new de(`image with id "${e}" not found in the atlas.`);let i=this._indexPromiseById.get(e);for(let[r,s]of this._subRegions.entries())if(n===s&&this._rectangles[r].equals(t))return i.then(c=>c===-1?-1:r);let o=this._nextIndex++;return this._subRegions.set(o,n),this._rectangles[o]=t.clone(),i.then(r=>{if(r===-1)return-1;let s=this._rectangles[r];return o})};ld.prototype.isDestroyed=function(){return!1};ld.prototype.destroy=function(){return this._texture=this._texture&&this._texture.destroy(),this._imagesToAddQueue.forEach(({resolve:e})=>{l(e)&&e(-1)}),me(this)};var mx=ld;var fJe=Eo.SHOW_INDEX,e2=Eo.POSITION_INDEX,Kde=Eo.PIXEL_OFFSET_INDEX,Jde=Eo.EYE_OFFSET_INDEX,pJe=Eo.HORIZONTAL_ORIGIN_INDEX,AJe=Eo.VERTICAL_ORIGIN_INDEX,gJe=Eo.SCALE_INDEX,hx=Eo.IMAGE_INDEX_INDEX,jde=Eo.COLOR_INDEX,bJe=Eo.ROTATION_INDEX,yJe=Eo.ALIGNED_AXIS_INDEX,qde=Eo.SCALE_BY_DISTANCE_INDEX,$de=Eo.TRANSLUCENCY_BY_DISTANCE_INDEX,eue=Eo.PIXEL_OFFSET_SCALE_BY_DISTANCE_INDEX,tue=Eo.DISTANCE_DISPLAY_CONDITION,CJe=Eo.DISABLE_DEPTH_DISTANCE,xJe=Eo.TEXTURE_COORDINATE_BOUNDS,nue=Eo.SDF_INDEX,iue=Eo.SPLIT_DIRECTION_INDEX,YK=Eo.NUMBER_OF_PROPERTIES,To,IJe={positionHighAndScale:0,positionLowAndRotation:1,compressedAttribute0:2,compressedAttribute1:3,compressedAttribute2:4,eyeOffset:5,scaleByDistance:6,pixelOffsetScaleByDistance:7,compressedAttribute3:8,textureCoordinateBoundsOrLabelTranslate:9,a_batchId:10,sdf:11,splitDirection:12},_Je={direction:0,positionHighAndScale:1,positionLowAndRotation:2,compressedAttribute0:3,compressedAttribute1:4,compressedAttribute2:5,eyeOffset:6,scaleByDistance:7,pixelOffsetScaleByDistance:8,compressedAttribute3:9,textureCoordinateBoundsOrLabelTranslate:10,a_batchId:11,sdf:12,splitDirection:13};function lm(e){e=e??Y.EMPTY_OBJECT,this._scene=e.scene,this._batchTable=e.batchTable;let t=e.textureAtlas;l(t)||(t=new mx),this._textureAtlas=t,this._textureAtlasGUID=t.guid,this._destroyTextureAtlas=!0,this._billboardTextureCache=new Map,this._sp=void 0,this._spTranslucent=void 0,this._rsOpaque=void 0,this._rsTranslucent=void 0,this._vaf=void 0,this._billboards=[],this._billboardsToUpdate=[],this._billboardsToUpdateIndex=0,this._billboardsRemoved=!1,this._createVertexArray=!1,this._shaderRotation=!1,this._compiledShaderRotation=!1,this._shaderAlignedAxis=!1,this._compiledShaderAlignedAxis=!1,this._shaderScaleByDistance=!1,this._compiledShaderScaleByDistance=!1,this._shaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistance=!1,this._shaderPixelOffsetScaleByDistance=!1,this._compiledShaderPixelOffsetScaleByDistance=!1,this._shaderDistanceDisplayCondition=!1,this._compiledShaderDistanceDisplayCondition=!1,this._shaderDisableDepthDistance=!1,this._compiledShaderDisableDepthDistance=!1,this._shaderClampToGround=!1,this._compiledShaderClampToGround=!1,this._propertiesChanged=new Uint32Array(YK),this._maxSize=0,this._maxEyeOffset=0,this._maxScale=1,this._maxPixelOffset=0,this._allHorizontalCenter=!0,this._allVerticalCenter=!0,this._allSizedInMeters=!0,this._baseVolume=new ue,this._baseVolumeWC=new ue,this._baseVolume2D=new ue,this._boundingVolume=new ue,this._boundingVolumeDirty=!1,this._colorCommands=[],this._allBillboardsReady=!1,this.show=e.show??!0,this.modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this._modelMatrix=X.clone(X.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowTextureAtlas=e.debugShowTextureAtlas??!1,this.blendOption=e.blendOption??No.OPAQUE_AND_TRANSLUCENT,this._blendOption=void 0,this._mode=re.SCENE3D,this._buffersUsage=[Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW],this._highlightColor=U.clone(U.WHITE),this._uniforms={u_atlas:()=>this.textureAtlas.texture,u_highlightColor:()=>this._highlightColor};let n=this._scene;l(n)&&l(n.terrainProviderChanged)&&(this._removeCallbackFunc=n.terrainProviderChanged.addEventListener(function(){let i=this._billboards,o=i.length;for(let r=0;r<o;++r)l(i[r])&&i[r]._updateClamping()},this))}Object.defineProperties(lm.prototype,{length:{get:function(){return OK(this),this._billboards.length}},textureAtlas:{get:function(){return this._textureAtlas},set:function(e){this._textureAtlas!==e&&(this._textureAtlas=this._destroyTextureAtlas&&this._textureAtlas&&this._textureAtlas.destroy(),this._textureAtlas=e)}},destroyTextureAtlas:{get:function(){return this._destroyTextureAtlas},set:function(e){this._destroyTextureAtlas=e}},sizeInBytes:{get:function(){return this._textureAtlas.sizeInBytes}},ready:{get:function(){return this._allBillboardsReady}},billboardTextureCache:{get:function(){return this._billboardTextureCache}}});function oue(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}lm.prototype.add=function(e){let t=new Eo(e,this);return t._index=this._billboards.length,this._billboards.push(t),this._createVertexArray=!0,t};lm.prototype.remove=function(e){return this.contains(e)?(this._billboards[e._index]=void 0,this._billboardsRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};lm.prototype.removeAll=function(){oue(this._billboards),this._billboards=[],this._billboardsToUpdate=[],this._billboardsToUpdateIndex=0,this._billboardsRemoved=!1,this._createVertexArray=!0};function OK(e){if(e._billboardsRemoved){e._billboardsRemoved=!1;let t=[],n=e._billboards,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];l(s)&&(s._index=r++,t.push(s))}e._billboards=t}}lm.prototype._updateBillboard=function(e,t){e._dirty||(this._billboardsToUpdate[this._billboardsToUpdateIndex++]=e),++this._propertiesChanged[t]};lm.prototype.contains=function(e){return l(e)&&e._billboardCollection===this};lm.prototype.get=function(e){return OK(this),this._billboards[e]};var vK;function EJe(e){let n=e.cache.billboardCollection_indexBufferBatched;if(l(n))return n;let i=16384*6-6,o=new Uint16Array(i);for(let r=0,s=0;r<i;r+=6,s+=4)o[r]=s,o[r+1]=s+1,o[r+2]=s+2,o[r+3]=s+0,o[r+4]=s+2,o[r+5]=s+3;return n=It.createIndexBuffer({context:e,typedArray:o,usage:Ne.STATIC_DRAW,indexDatatype:Me.UNSIGNED_SHORT}),n.vertexArrayDestroyable=!1,e.cache.billboardCollection_indexBufferBatched=n,n}function TJe(e){let t=e.cache.billboardCollection_indexBufferInstanced;return l(t)||(t=It.createIndexBuffer({context:e,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Ne.STATIC_DRAW,indexDatatype:Me.UNSIGNED_SHORT}),t.vertexArrayDestroyable=!1,e.cache.billboardCollection_indexBufferInstanced=t),t}function SJe(e){let t=e.cache.billboardCollection_vertexBufferInstanced;return l(t)||(t=It.createVertexBuffer({context:e,typedArray:new Float32Array([0,0,1,0,1,1,0,1]),usage:Ne.STATIC_DRAW}),t.vertexArrayDestroyable=!1,e.cache.billboardCollection_vertexBufferInstanced=t),t}lm.prototype.computeNewBuffersUsage=function(){let e=this._buffersUsage,t=!1,n=this._propertiesChanged;for(let i=0;i<YK;++i){let o=n[i]===0?Ne.STATIC_DRAW:Ne.STREAM_DRAW;t=t||e[i]!==o,e[i]=o}return t};function LJe(e,t,n,i,o,r){let s=[{index:To.positionHighAndScale,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[e2]},{index:To.positionLowAndRotation,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[e2]},{index:To.compressedAttribute0,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[Kde]},{index:To.compressedAttribute1,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[$de]},{index:To.compressedAttribute2,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[jde]},{index:To.eyeOffset,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[Jde]},{index:To.scaleByDistance,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[qde]},{index:To.pixelOffsetScaleByDistance,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[eue]},{index:To.compressedAttribute3,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[tue]},{index:To.textureCoordinateBoundsOrLabelTranslate,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[xJe]},{index:To.splitDirection,componentsPerAttribute:1,componentDatatype:J.FLOAT,usage:n[iue]}];i&&s.push({index:To.direction,componentsPerAttribute:2,componentDatatype:J.FLOAT,vertexBuffer:SJe(e)}),l(o)&&s.push({index:To.a_batchId,componentsPerAttribute:1,componentDatatype:J.FLOAT,bufferUsage:Ne.STATIC_DRAW}),r&&s.push({index:To.sdf,componentsPerAttribute:2,componentDatatype:J.FLOAT,usage:n[nue]});let a=i?t:4*t;return new zA(e,s,a,i)}var NK=new ni;function rue(e,t,n,i){let o,r=n[To.positionHighAndScale],s=n[To.positionLowAndRotation],a=i._getActualPosition();e._mode===re.SCENE3D&&(ue.expand(e._baseVolume,a,e._baseVolume),e._boundingVolumeDirty=!0),ni.fromCartesian(a,NK);let c=i.scale,d=i.rotation;d!==0&&(e._shaderRotation=!0),e._maxScale=Math.max(e._maxScale,c);let u=NK.high,h=NK.low;e._instanced?(o=i._index,r(o,u.x,u.y,u.z,c),s(o,h.x,h.y,h.z,d)):(o=i._index*4,r(o+0,u.x,u.y,u.z,c),r(o+1,u.x,u.y,u.z,c),r(o+2,u.x,u.y,u.z,c),r(o+3,u.x,u.y,u.z,c),s(o+0,h.x,h.y,h.z,d),s(o+1,h.x,h.y,h.z,d),s(o+2,h.x,h.y,h.z,d),s(o+3,h.x,h.y,h.z,d))}var dd=new D,cm=32768,mT=65536,DK=4096,qf=256,RJe=128,VJe=32,GJe=8,sue=4,ZJe=1/256,aue=0,cue=2,lue=3,due=1,HK=new Ke;function uue(e,t,n,i){let o,r=n[To.compressedAttribute0],s=i.pixelOffset,a=s.x,c=s.y,d=i._translate,u=d.x,h=d.y;e._maxPixelOffset=Math.max(e._maxPixelOffset,Math.abs(a+u),Math.abs(-c+h));let p=i.horizontalOrigin,g=i._verticalOrigin,f=i.show&&i.clusterShow;i.color.alpha===0&&(f=!1),g===kn.BASELINE&&(g=kn.BOTTOM),e._allHorizontalCenter=e._allHorizontalCenter&&p===wi.CENTER,e._allVerticalCenter=e._allVerticalCenter&&g===kn.CENTER;let b=0,x=0,I=0,_=0;if(i.ready){let W=i.computeTextureCoordinates(HK);b=W.x,x=W.y,I=W.width,_=W.height}let E=b+I,S=x+_,R=Math.floor(Z.clamp(a,-cm,cm)+cm)*RJe;R+=(p+1)*VJe,R+=(g+1)*GJe,R+=(f?1:0)*sue;let G=Math.floor(Z.clamp(c,-cm,cm)+cm)*qf,B=Math.floor(Z.clamp(u,-cm,cm)+cm)*qf,w=(Z.clamp(h,-cm,cm)+cm)*ZJe,F=Math.floor(w),P=Math.floor((w-F)*qf);G+=F,B+=P,dd.x=b,dd.y=x;let A=Mn.compressTextureCoordinates(dd);dd.x=E;let T=Mn.compressTextureCoordinates(dd);dd.y=S;let L=Mn.compressTextureCoordinates(dd);dd.x=b;let V=Mn.compressTextureCoordinates(dd);e._instanced?(o=i._index,r(o,R,G,B,A)):(o=i._index*4,r(o+0,R+aue,G,B,A),r(o+1,R+cue,G,B,T),r(o+2,R+lue,G,B,L),r(o+3,R+due,G,B,V))}function mue(e,t,n,i){let o,r=n[To.compressedAttribute1],s=i.alignedAxis;m.equals(s,m.ZERO)||(e._shaderAlignedAxis=!0);let a=0,c=1,d=1,u=1,h=i.translucencyByDistance;l(h)&&(a=h.near,c=h.nearValue,d=h.far,u=h.farValue,(c!==1||u!==1)&&(e._shaderTranslucencyByDistance=!0));let p=Math.round(i.width??0);e._maxSize=Math.max(e._maxSize,p);let g=Z.clamp(p,0,mT),f=0;Math.abs(m.magnitudeSquared(s)-1)<Z.EPSILON6&&(f=Mn.octEncodeFloat(s)),c=Z.clamp(c,0,1),c=c===1?255:c*255|0,g=g*qf+c,u=Z.clamp(u,0,1),u=u===1?255:u*255|0,f=f*qf+u,e._instanced?(o=i._index,r(o,g,f,a,d)):(o=i._index*4,r(o+0,g,f,a,d),r(o+1,g,f,a,d),r(o+2,g,f,a,d),r(o+3,g,f,a,d))}function UK(e,t,n,i){let o,r=n[To.compressedAttribute2],s=i.color,a=l(e._batchTable)?U.WHITE:i.getPickId(t.context).color,c=i.sizeInMeters?1:0,d=Math.abs(m.magnitudeSquared(i.alignedAxis)-1)<Z.EPSILON6?1:0;e._allSizedInMeters=e._allSizedInMeters&&c===1;let u=i.height??0;e._maxSize=Math.max(e._maxSize,u);let h=i._labelHorizontalOrigin??-2;h+=2;let p=u*sue+h,g=U.floatToByte(s.red),f=U.floatToByte(s.green),b=U.floatToByte(s.blue),x=g*mT+f*qf+b;g=U.floatToByte(a.red),f=U.floatToByte(a.green),b=U.floatToByte(a.blue);let I=g*mT+f*qf+b,_=U.floatToByte(s.alpha)*mT+U.floatToByte(a.alpha)*qf;_+=c*2+d,e._instanced?(o=i._index,r(o,x,I,_,p)):(o=i._index*4,r(o+0,x,I,_,p),r(o+1,x,I,_,p),r(o+2,x,I,_,p),r(o+3,x,I,_,p))}function kK(e,t,n,i){let o,r=n[To.eyeOffset],s=i.eyeOffset,a=s.z;if(i._heightReference!==et.NONE&&(a*=1.005),e._maxEyeOffset=Math.max(e._maxEyeOffset,Math.abs(s.x),Math.abs(s.y),Math.abs(a)),e._instanced){if(dd.x=0,dd.y=0,i.ready){let d=i.computeTextureCoordinates(HK);dd.x=d.width,dd.y=d.height}let c=Mn.compressTextureCoordinates(dd);o=i._index,r(o,s.x,s.y,a,c)}else o=i._index*4,r(o+0,s.x,s.y,a,0),r(o+1,s.x,s.y,a,0),r(o+2,s.x,s.y,a,0),r(o+3,s.x,s.y,a,0)}function hue(e,t,n,i){let o,r=n[To.scaleByDistance],s=0,a=1,c=1,d=1,u=i.scaleByDistance;l(u)&&(s=u.near,a=u.nearValue,c=u.far,d=u.farValue,(a!==1||d!==1)&&(e._shaderScaleByDistance=!0)),e._instanced?(o=i._index,r(o,s,a,c,d)):(o=i._index*4,r(o+0,s,a,c,d),r(o+1,s,a,c,d),r(o+2,s,a,c,d),r(o+3,s,a,c,d))}function fue(e,t,n,i){let o,r=n[To.pixelOffsetScaleByDistance],s=0,a=1,c=1,d=1,u=i.pixelOffsetScaleByDistance;l(u)&&(s=u.near,a=u.nearValue,c=u.far,d=u.farValue,(a!==1||d!==1)&&(e._shaderPixelOffsetScaleByDistance=!0)),e._instanced?(o=i._index,r(o,s,a,c,d)):(o=i._index*4,r(o+0,s,a,c,d),r(o+1,s,a,c,d),r(o+2,s,a,c,d),r(o+3,s,a,c,d))}function pue(e,t,n,i){let o,r=n[To.compressedAttribute3],s=0,a=Number.MAX_VALUE,c=i.distanceDisplayCondition;l(c)&&(s=c.near,a=c.far,s*=s,a*=a,e._shaderDistanceDisplayCondition=!0);let d=i.disableDepthTestDistance,u=Du(i.heightReference)&&t.context.depthTexture;l(d)||(d=u?5e3:0),d*=d,(u||d>0)&&(e._shaderDisableDepthDistance=!0,d===Number.POSITIVE_INFINITY&&(d=-1));let h,p;l(i._labelDimensions)?(p=i._labelDimensions.x,h=i._labelDimensions.y):(p=i.width??0,h=i.height??0);let g=Math.floor(Z.clamp(p,0,DK)),f=Math.floor(Z.clamp(h,0,DK)),b=g*DK+f;e._instanced?(o=i._index,r(o,s,a,d,b)):(o=i._index*4,r(o+0,s,a,d,b),r(o+1,s,a,d,b),r(o+2,s,a,d,b),r(o+3,s,a,d,b))}function Aue(e,t,n,i){if(Du(i.heightReference)){let p=e._scene,g=t.context,f=t.globeTranslucencyState.translucent,b=l(p.globe)&&p.globe.depthTestAgainstTerrain;e._shaderClampToGround=g.depthTexture&&!f&&b}let o,r=n[To.textureCoordinateBoundsOrLabelTranslate];if(Kt.maximumVertexTextureImageUnits>0){let p=0,g=0;l(i._labelTranslate)&&(p=i._labelTranslate.x,g=i._labelTranslate.y),e._instanced?(o=i._index,r(o,p,g,0,0)):(o=i._index*4,r(o+0,p,g,0,0),r(o+1,p,g,0,0),r(o+2,p,g,0,0),r(o+3,p,g,0,0));return}let s=0,a=0,c=0,d=0;if(i.ready){let p=i.computeTextureCoordinates(HK);s=p.x,a=p.y,c=p.width,d=p.height}let u=s+c,h=a+d;e._instanced?(o=i._index,r(o,s,a,u,h)):(o=i._index*4,r(o+0,s,a,u,h),r(o+1,s,a,u,h),r(o+2,s,a,u,h),r(o+3,s,a,u,h))}function BJe(e,t,n,i){if(!l(e._batchTable))return;let o=n[To.a_batchId],r=i._batchIndex,s;e._instanced?(s=i._index,o(s,r)):(s=i._index*4,o(s+0,r),o(s+1,r),o(s+2,r),o(s+3,r))}function gue(e,t,n,i){if(!e._sdf)return;let o,r=n[To.sdf],s=i.outlineColor,a=i.outlineWidth,c=U.floatToByte(s.red),d=U.floatToByte(s.green),u=U.floatToByte(s.blue),h=c*mT+d*qf+u,p=a/ga.RADIUS,g=U.floatToByte(s.alpha)*mT+U.floatToByte(p)*qf;e._instanced?(o=i._index,r(o,h,g)):(o=i._index*4,r(o+0,h+aue,g),r(o+1,h+cue,g),r(o+2,h+lue,g),r(o+3,h+due,g))}function bue(e,t,n,i){let o=n[To.splitDirection],r=0,s=i.splitDirection;l(s)&&(r=s);let a;e._instanced?(a=i._index,o(a,r)):(a=i._index*4,o(a+0,r),o(a+1,r),o(a+2,r),o(a+3,r))}function wJe(e,t,n,i){rue(e,t,n,i),uue(e,t,n,i),mue(e,t,n,i),UK(e,t,n,i),kK(e,t,n,i),hue(e,t,n,i),fue(e,t,n,i),pue(e,t,n,i),Aue(e,t,n,i),BJe(e,t,n,i),gue(e,t,n,i),bue(e,t,n,i)}function QK(e,t,n,i,o,r){let s;i.mode===re.SCENE3D?(s=e._baseVolume,e._boundingVolumeDirty=!0):s=e._baseVolume2D;let a=[];for(let c=0;c<n;++c){let d=t[c],u=d.position,h=Eo._computeActualPosition(d,u,i,o);l(h)&&(d._setActualPosition(h),r?a.push(h):ue.expand(s,h,s))}r&&ue.fromPoints(a,s)}function XJe(e,t){let n=t.mode,i=e._billboards,o=e._billboardsToUpdate,r=e._modelMatrix;e._createVertexArray||e._mode!==n||n!==re.SCENE3D&&!X.equals(r,e.modelMatrix)?(e._mode=n,X.clone(e.modelMatrix,r),e._createVertexArray=!0,(n===re.SCENE3D||n===re.SCENE2D||n===re.COLUMBUS_VIEW)&&QK(e,i,i.length,t,r,!0)):n===re.MORPHING?QK(e,i,i.length,t,r,!0):(n===re.SCENE2D||n===re.COLUMBUS_VIEW)&&QK(e,o,e._billboardsToUpdateIndex,t,r,!1)}function WJe(e,t,n){let i=1;(!e._allSizedInMeters||e._maxPixelOffset!==0)&&(i=t.camera.getPixelSize(n,t.context.drawingBufferWidth,t.context.drawingBufferHeight));let o=i*e._maxScale*e._maxSize*2;e._allHorizontalCenter&&e._allVerticalCenter&&(o*=.5);let r=i*e._maxPixelOffset+e._maxEyeOffset;n.radius+=o+r}function FJe(e,t){let i=t.createViewportQuadCommand(`uniform sampler2D billboard_texture; +in vec2 v_textureCoordinates; +void main() +{ + out_FragColor = texture(billboard_texture, v_textureCoordinates); +} +`,{uniformMap:{billboard_texture:function(){return e.textureAtlas.texture}}});return i.pass=Ge.OVERLAY,i}var PJe=[];lm.prototype.update=function(e){if(OK(this),!this.show)return;let t=e.context;this._instanced=t.instancedArrays,To=this._instanced?_Je:IJe,vK=this._instanced?TJe:EJe;let n=this._billboards,i=n.length,o=!0;for(let w=0;w<i;++w){let F=n[w];l(F.loadError)&&(console.error(`Error loading image for billboard: ${F.loadError}`),F.image=void 0),F.textureDirty&&this._updateBillboard(F,hx),F.show&&(o=o&&F.ready)}let r=this._textureAtlas;if(e.afterRender.push(()=>{if(!this.isDestroyed())return r.update(e.context)}),!l(r.texture))return;XJe(this,e),n=this._billboards,i=n.length;let s=this._billboardsToUpdate,a=this._billboardsToUpdateIndex,c=this._propertiesChanged,d=r.guid,u=this._createVertexArray||this._textureAtlasGUID!==d;this._textureAtlasGUID=d;let h,p=e.passes,g=p.pick;if(u||!g&&this.computeNewBuffersUsage()){this._createVertexArray=!1;for(let w=0;w<YK;++w)c[w]=0;if(this._vaf=this._vaf&&this._vaf.destroy(),i>0){this._vaf=LJe(t,i,this._buffersUsage,this._instanced,this._batchTable,this._sdf),h=this._vaf.writers;for(let w=0;w<i;++w){let F=this._billboards[w];F._dirty=!1,F.textureDirty=!1,wJe(this,e,h,F)}this._vaf.commit(vK(t))}this._billboardsToUpdateIndex=0}else if(a>0){let w=PJe;w.length=0,(c[e2]||c[bJe]||c[gJe])&&w.push(rue),(c[hx]||c[Kde]||c[pJe]||c[AJe]||c[fJe])&&(w.push(uue),this._instanced&&w.push(kK)),(c[hx]||c[yJe]||c[$de])&&(w.push(mue),w.push(UK)),(c[hx]||c[jde])&&w.push(UK),(c[hx]||c[Jde])&&w.push(kK),c[qde]&&w.push(hue),c[eue]&&w.push(fue),(c[tue]||c[CJe]||c[hx]||c[e2])&&w.push(pue),(c[hx]||c[e2])&&w.push(Aue),c[nue]&&w.push(gue),c[iue]&&w.push(bue);let F=w.length;if(h=this._vaf.writers,a/i>.1){for(let P=0;P<a;++P){let A=s[P];A._dirty=!1,A.textureDirty=!1;for(let T=0;T<F;++T)w[T](this,e,h,A)}this._vaf.commit(vK(t))}else{for(let P=0;P<a;++P){let A=s[P];A._dirty=!1,A.textureDirty=!1;for(let T=0;T<F;++T)w[T](this,e,h,A);this._instanced?this._vaf.subCommit(A._index,1):this._vaf.subCommit(A._index*4,4)}this._vaf.endSubCommits()}this._billboardsToUpdateIndex=0}if(a>i*1.5&&(s.length=i),!l(this._vaf)||!l(this._vaf.va))return;this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,ue.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));let f,b=X.IDENTITY;e.mode===re.SCENE3D?(b=this.modelMatrix,f=ue.clone(this._baseVolumeWC,this._boundingVolume)):f=ue.clone(this._baseVolume2D,this._boundingVolume),WJe(this,e,f);let x=this._blendOption!==this.blendOption;if(this._blendOption=this.blendOption,x){this._blendOption===No.OPAQUE||this._blendOption===No.OPAQUE_AND_TRANSLUCENT?this._rsOpaque=Qe.fromCache({depthTest:{enabled:!0,func:ne.LESS},depthMask:!0}):this._rsOpaque=void 0;let w=this._blendOption===No.TRANSLUCENT;this._blendOption===No.TRANSLUCENT||this._blendOption===No.OPAQUE_AND_TRANSLUCENT?this._rsTranslucent=Qe.fromCache({depthTest:{enabled:!0,func:w?ne.LEQUAL:ne.LESS},depthMask:w,blending:bn.ALPHA_BLEND}):this._rsTranslucent=void 0}this._shaderDisableDepthDistance=this._shaderDisableDepthDistance||e.minimumDisableDepthTestDistance!==0;let I,_,E,S,R,G=Kt.maximumVertexTextureImageUnits>0;if(x||this._shaderRotation!==this._compiledShaderRotation||this._shaderAlignedAxis!==this._compiledShaderAlignedAxis||this._shaderScaleByDistance!==this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance!==this._compiledShaderTranslucencyByDistance||this._shaderPixelOffsetScaleByDistance!==this._compiledShaderPixelOffsetScaleByDistance||this._shaderDistanceDisplayCondition!==this._compiledShaderDistanceDisplayCondition||this._shaderDisableDepthDistance!==this._compiledShaderDisableDepthDistance||this._shaderClampToGround!==this._compiledShaderClampToGround||this._sdf!==this._compiledSDF){I=qX,_=jX,R=[],l(this._batchTable)&&(R.push("VECTOR_TILE"),I=this._batchTable.getVertexShaderCallback(!1,"a_batchId",void 0)(I),_=this._batchTable.getFragmentShaderCallback(!1,void 0)(_)),E=new Oe({defines:R,sources:[I]}),this._instanced&&E.defines.push("INSTANCED"),this._shaderRotation&&E.defines.push("ROTATION"),this._shaderAlignedAxis&&E.defines.push("ALIGNED_AXIS"),this._shaderScaleByDistance&&E.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&E.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderPixelOffsetScaleByDistance&&E.defines.push("EYE_DISTANCE_PIXEL_OFFSET"),this._shaderDistanceDisplayCondition&&E.defines.push("DISTANCE_DISPLAY_CONDITION"),this._shaderDisableDepthDistance&&E.defines.push("DISABLE_DEPTH_DISTANCE"),this._shaderClampToGround&&(G?E.defines.push("VERTEX_DEPTH_CHECK"):E.defines.push("FRAGMENT_DEPTH_CHECK"));let w=1-ga.CUTOFF;this._sdf&&E.defines.push("SDF");let F=l(this._batchTable)?"VECTOR_TILE":"";this._blendOption===No.OPAQUE_AND_TRANSLUCENT&&(S=new Oe({defines:["OPAQUE",F],sources:[_]}),this._shaderClampToGround&&(G?S.defines.push("VERTEX_DEPTH_CHECK"):S.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(S.defines.push("SDF"),S.defines.push(`SDF_EDGE ${w}`)),this._sp=ln.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:E,fragmentShaderSource:S,attributeLocations:To}),S=new Oe({defines:["TRANSLUCENT",F],sources:[_]}),this._shaderClampToGround&&(G?S.defines.push("VERTEX_DEPTH_CHECK"):S.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(S.defines.push("SDF"),S.defines.push(`SDF_EDGE ${w}`)),this._spTranslucent=ln.replaceCache({context:t,shaderProgram:this._spTranslucent,vertexShaderSource:E,fragmentShaderSource:S,attributeLocations:To})),this._blendOption===No.OPAQUE&&(S=new Oe({defines:[F],sources:[_]}),this._shaderClampToGround&&(G?S.defines.push("VERTEX_DEPTH_CHECK"):S.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(S.defines.push("SDF"),S.defines.push(`SDF_EDGE ${w}`)),this._sp=ln.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:E,fragmentShaderSource:S,attributeLocations:To})),this._blendOption===No.TRANSLUCENT&&(S=new Oe({defines:[F],sources:[_]}),this._shaderClampToGround&&(G?S.defines.push("VERTEX_DEPTH_CHECK"):S.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(S.defines.push("SDF"),S.defines.push(`SDF_EDGE ${w}`)),this._spTranslucent=ln.replaceCache({context:t,shaderProgram:this._spTranslucent,vertexShaderSource:E,fragmentShaderSource:S,attributeLocations:To})),this._compiledShaderRotation=this._shaderRotation,this._compiledShaderAlignedAxis=this._shaderAlignedAxis,this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderPixelOffsetScaleByDistance=this._shaderPixelOffsetScaleByDistance,this._compiledShaderDistanceDisplayCondition=this._shaderDistanceDisplayCondition,this._compiledShaderDisableDepthDistance=this._shaderDisableDepthDistance,this._compiledShaderClampToGround=this._shaderClampToGround,this._compiledSDF=this._sdf}let B=e.commandList;if(p.render||p.pick){let w=this._colorCommands,F=this._blendOption===No.OPAQUE,P=this._blendOption===No.OPAQUE_AND_TRANSLUCENT,A=this._vaf.va,T=A.length,L=this._uniforms,V;l(this._batchTable)?(L=this._batchTable.getUniformMapCallback()(L),V=this._batchTable.getPickId()):V="v_pickColor",w.length=T;let W=P?T*2:T;for(let M=0;M<W;++M){let Q=w[M];l(Q)||(Q=w[M]=new ot);let N=F||P&&M%2===0;Q.pass=N||!P?Ge.OPAQUE:Ge.TRANSLUCENT,Q.owner=this;let k=P?Math.floor(M/2):M;Q.boundingVolume=f,Q.modelMatrix=b,Q.count=A[k].indicesCount,Q.shaderProgram=N?this._sp:this._spTranslucent,Q.uniformMap=L,Q.vertexArray=A[k].va,Q.renderState=N?this._rsOpaque:this._rsTranslucent,Q.debugShowBoundingVolume=this.debugShowBoundingVolume,Q.pickId=V,this._instanced&&(Q.count=6,Q.instanceCount=i),B.push(Q)}this.debugShowTextureAtlas&&(l(this.debugCommand)||(this.debugCommand=FJe(this,e.context)),B.push(this.debugCommand))}this._allBillboardsReady=o};lm.prototype.isDestroyed=function(){return!1};lm.prototype.destroy=function(){return l(this._removeCallbackFunc)&&(this._removeCallbackFunc(),this._removeCallbackFunc=void 0),this._textureAtlas=this._destroyTextureAtlas&&this._textureAtlas&&this._textureAtlas.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spTranslucent=this._spTranslucent&&this._spTranslucent.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),oue(this._billboards),me(this)};var qd=lm;var SUn=y(C(),1);var yUn=y(C(),1);function MJe(e,t,n,i,o){return function(){let r=document.createElement("canvas"),s=o+2*i;r.height=r.width=s;let a=r.getContext("2d");return a.clearRect(0,0,s,s),i!==0&&(a.beginPath(),a.arc(s/2,s/2,s/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle=n,a.fill(),e<1&&(a.save(),a.globalCompositeOperation="destination-out",a.beginPath(),a.arc(s/2,s/2,o/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle="black",a.fill(),a.restore())),a.beginPath(),a.arc(s/2,s/2,o/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle=t,a.fill(),r}}var fx=MJe;function Da(e,t,n,i,o){this._content=e,this._billboard=n,this._label=i,this._polyline=o,this._batchId=t,this._billboardImage=void 0,this._billboardColor=void 0,this._billboardOutlineColor=void 0,this._billboardOutlineWidth=void 0,this._billboardSize=void 0,this._pointSize=void 0,this._color=void 0,this._pointSize=void 0,this._pointOutlineColor=void 0,this._pointOutlineWidth=void 0,this._heightOffset=void 0,this._pickIds=new Array(3),hT(this)}var vJe=new ge;Object.defineProperties(Da.prototype,{show:{get:function(){return this._label.show},set:function(e){this._label.show=e,this._billboard.show=e,this._polyline.show=e}},color:{get:function(){return this._color},set:function(e){this._color=U.clone(e,this._color),hT(this)}},pointSize:{get:function(){return this._pointSize},set:function(e){this._pointSize=e,hT(this)}},pointOutlineColor:{get:function(){return this._pointOutlineColor},set:function(e){this._pointOutlineColor=U.clone(e,this._pointOutlineColor),hT(this)}},pointOutlineWidth:{get:function(){return this._pointOutlineWidth},set:function(e){this._pointOutlineWidth=e,hT(this)}},labelColor:{get:function(){return this._label.fillColor},set:function(e){this._label.fillColor=e,this._polyline.show=this._label.show&&e.alpha>0}},labelOutlineColor:{get:function(){return this._label.outlineColor},set:function(e){this._label.outlineColor=e}},labelOutlineWidth:{get:function(){return this._label.outlineWidth},set:function(e){this._label.outlineWidth=e}},font:{get:function(){return this._label.font},set:function(e){this._label.font=e}},labelStyle:{get:function(){return this._label.style},set:function(e){this._label.style=e}},labelText:{get:function(){return this._label.text},set:function(e){l(e)||(e=""),this._label.text=e}},backgroundColor:{get:function(){return this._label.backgroundColor},set:function(e){this._label.backgroundColor=e}},backgroundPadding:{get:function(){return this._label.backgroundPadding},set:function(e){this._label.backgroundPadding=e}},backgroundEnabled:{get:function(){return this._label.showBackground},set:function(e){this._label.showBackground=e}},scaleByDistance:{get:function(){return this._label.scaleByDistance},set:function(e){this._label.scaleByDistance=e,this._billboard.scaleByDistance=e}},translucencyByDistance:{get:function(){return this._label.translucencyByDistance},set:function(e){this._label.translucencyByDistance=e,this._billboard.translucencyByDistance=e}},distanceDisplayCondition:{get:function(){return this._label.distanceDisplayCondition},set:function(e){this._label.distanceDisplayCondition=e,this._polyline.distanceDisplayCondition=e,this._billboard.distanceDisplayCondition=e}},heightOffset:{get:function(){return this._heightOffset},set:function(e){let t=this._heightOffset??0,n=this._content.tileset.ellipsoid,i=n.cartesianToCartographic(this._billboard.position,vJe);i.height=i.height-t+e;let o=n.cartographicToCartesian(i);this._billboard.position=o,this._label.position=this._billboard.position,this._polyline.positions=[this._polyline.positions[0],o],this._heightOffset=e}},anchorLineEnabled:{get:function(){return this._polyline.show},set:function(e){this._polyline.show=e}},anchorLineColor:{get:function(){return this._polyline.material.uniforms.color},set:function(e){this._polyline.material.uniforms.color=U.clone(e,this._polyline.material.uniforms.color)}},image:{get:function(){return this._billboardImage},set:function(e){let t=this._billboardImage!==e;this._billboardImage=e,t&&hT(this)}},disableDepthTestDistance:{get:function(){return this._label.disableDepthTestDistance},set:function(e){this._label.disableDepthTestDistance=e,this._billboard.disableDepthTestDistance=e}},horizontalOrigin:{get:function(){return this._billboard.horizontalOrigin},set:function(e){this._billboard.horizontalOrigin=e}},verticalOrigin:{get:function(){return this._billboard.verticalOrigin},set:function(e){this._billboard.verticalOrigin=e}},labelHorizontalOrigin:{get:function(){return this._label.horizontalOrigin},set:function(e){this._label.horizontalOrigin=e}},labelVerticalOrigin:{get:function(){return this._label.verticalOrigin},set:function(e){this._label.verticalOrigin=e}},content:{get:function(){return this._content}},tileset:{get:function(){return this._content.tileset}},primitive:{get:function(){return this._content.tileset}},pickIds:{get:function(){let e=this._pickIds;return e[0]=this._billboard.pickId,e[1]=this._label.pickId,e[2]=this._polyline.pickId,e}}});Da.defaultColor=U.WHITE;Da.defaultPointOutlineColor=U.BLACK;Da.defaultPointOutlineWidth=0;Da.defaultPointSize=8;function hT(e){let t=e._billboard;if(l(e._billboardImage)&&e._billboardImage!==t.image){t.image=e._billboardImage;return}if(l(e._billboardImage))return;let n=e._color??Da.defaultColor,i=e._pointOutlineColor??Da.defaultPointOutlineColor,o=e._pointOutlineWidth??Da.defaultPointOutlineWidth,r=e._pointSize??Da.defaultPointSize,s=e._billboardColor,a=e._billboardOutlineColor,c=e._billboardOutlineWidth,d=e._billboardSize;if(U.equals(n,s)&&U.equals(i,a)&&o===c&&r===d)return;e._billboardColor=U.clone(n,e._billboardColor),e._billboardOutlineColor=U.clone(i,e._billboardOutlineColor),e._billboardOutlineWidth=o,e._billboardSize=r;let u=n.alpha,h=n.toCssColorString(),p=i.toCssColorString(),g=JSON.stringify([h,r,p,o]);t.setImage(g,fx(u,h,p,o,r))}Da.prototype.hasProperty=function(e){return this._content.batchTable.hasProperty(this._batchId,e)};Da.prototype.getPropertyIds=function(e){return this._content.batchTable.getPropertyIds(this._batchId,e)};Da.prototype.getProperty=function(e){return this._content.batchTable.getProperty(this._batchId,e)};Da.prototype.getPropertyInherited=function(e){return ma.getPropertyInherited(this._content,this._batchId,e)};Da.prototype.setProperty=function(e,t){this._content.batchTable.setProperty(this._batchId,e,t),this._content.featurePropertiesDirty=!0};Da.prototype.isExactClass=function(e){return this._content.batchTable.isExactClass(this._batchId,e)};Da.prototype.isClass=function(e){return this._content.batchTable.isClass(this._batchId,e)};Da.prototype.getExactClassName=function(){return this._content.batchTable.getExactClassName(this._batchId)};var jA=Da;var ykn=y(C(),1);var ZUn=y(C(),1);function NJe(e,t,n,i,o){let r=e.measureText(t);if(!!/\S/.test(t)){let a=document.defaultView.getComputedStyle(e.canvas).getPropertyValue("font-size").replace("px",""),c=document.createElement("canvas"),d=100,u=r.width+d|0,h=3*a,p=h/2;c.width=u,c.height=h;let g=c.getContext("2d");g.font=n,g.fillStyle="white",g.fillRect(0,0,c.width+1,c.height+1),i&&(g.strokeStyle="black",g.lineWidth=e.lineWidth,g.strokeText(t,d/2,p)),o&&(g.fillStyle="black",g.fillText(t,d/2,p));let f=g.getImageData(0,0,u,h).data,b=f.length,x=u*4,I,_,E,S;for(I=0;I<b;++I)if(f[I]!==255){E=I/x|0;break}for(I=b-1;I>=0;--I)if(f[I]!==255){S=I/x|0;break}let R=-1;for(I=0;I<u&&R===-1;++I)for(_=0;_<h;++_){let G=I*4+_*x;if(f[G]!==255||f[G+1]!==255||f[G+2]!==255||f[G+3]!==255){R=I;break}}return{width:r.width,height:S-E,ascent:p-E,descent:S-p,minx:R-d/2}}return{width:r.width,height:0,ascent:0,descent:0,minx:0}}var px;function DJe(e,t){if(e==="")return;t=t??Y.EMPTY_OBJECT;let n=t.font??"10px sans-serif",i=t.stroke??!1,o=t.fill??!0,r=t.strokeWidth??1,s=t.backgroundColor??U.TRANSPARENT,a=t.padding??0,c=a*2,d=document.createElement("canvas");d.width=1,d.height=1,d.style.font=n;let u=d.getContext("2d",{willReadFrequently:!0});l(px)||(l(u.imageSmoothingEnabled)?px="imageSmoothingEnabled":l(u.mozImageSmoothingEnabled)?px="mozImageSmoothingEnabled":l(u.webkitImageSmoothingEnabled)?px="webkitImageSmoothingEnabled":l(u.msImageSmoothingEnabled)&&(px="msImageSmoothingEnabled")),u.font=n,u.lineJoin="round",u.lineWidth=r,u[px]=!1,d.style.visibility="hidden",document.body.appendChild(d);let h=NJe(u,e,n,i,o);d.dimensions=h,document.body.removeChild(d),d.style.visibility="";let p=-h.minx,g=Math.ceil(h.width)+p+c,f=h.height+c,b=f-h.ascent+a,x=f-b+c;if(d.width=g,d.height=f,u.font=n,u.lineJoin="round",u.lineWidth=r,u[px]=!1,s!==U.TRANSPARENT&&(u.fillStyle=s.toCssColorString(),u.fillRect(0,0,d.width,d.height)),i){let I=t.strokeColor??U.BLACK;u.strokeStyle=I.toCssColorString(),u.strokeText(e,p+a,x)}if(o){let I=t.fillColor??U.WHITE;u.fillStyle=I.toCssColorString(),u.fillText(e,p+a,x)}return d}var Ax=DJe;var Gue=y(Iue(),1);var jUn=y(C(),1);var WUn=y(C(),1),UJe={FILL:0,OUTLINE:1,FILL_AND_OUTLINE:2},nr=Object.freeze(UJe);var _ue={},Eue=0,kJe=256,YJe=new U(.165,.165,.165,.8),OJe=new D(7,5),Fs=Object.freeze({LTR:0,RTL:1,WEAK:2,BRACKETS:3});function gx(e){!e._rebindAllGlyphs&&!e._repositionAllGlyphs&&e._labelCollection._labelsToUpdate.push(e),e._rebindAllGlyphs=!0}function n2(e){!e._rebindAllGlyphs&&!e._repositionAllGlyphs&&e._labelCollection._labelsToUpdate.push(e),e._repositionAllGlyphs=!0}function i2(e,t){return document.defaultView.getComputedStyle(e,null).getPropertyValue(t)}function Sue(e){let t=_ue[e._font];if(!l(t)){let n=document.createElement("div");n.style.position="absolute",n.style.opacity=0,n.style.font=e._font,document.body.appendChild(n);let i=parseFloat(i2(n,"line-height"));isNaN(i)&&(i=void 0),t={family:i2(n,"font-family"),size:i2(n,"font-size").replace("px",""),style:i2(n,"font-style"),weight:i2(n,"font-weight"),lineHeight:i},document.body.removeChild(n),Eue<kJe&&(_ue[e._font]=t,Eue++)}e._fontFamily=t.family,e._fontSize=t.size,e._fontStyle=t.style,e._fontWeight=t.weight,e._lineHeight=t.lineHeight}function wh(e,t){e=e??Y.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.pixelOffsetScaleByDistance,o=e.scaleByDistance,r=e.distanceDisplayCondition;l(n)&&(n=zt.clone(n)),l(i)&&(i=zt.clone(i)),l(o)&&(o=zt.clone(o)),l(r)&&(r=Qt.clone(r)),this._renderedText=void 0,this._text=void 0,this._show=e.show??!0,this._font=e.font??"30px sans-serif",this._fillColor=U.clone(e.fillColor??U.WHITE),this._outlineColor=U.clone(e.outlineColor??U.BLACK),this._outlineWidth=e.outlineWidth??1,this._showBackground=e.showBackground??!1,this._backgroundColor=U.clone(e.backgroundColor??YJe),this._backgroundPadding=D.clone(e.backgroundPadding??OJe),this._style=e.style??nr.FILL,this._verticalOrigin=e.verticalOrigin??kn.BASELINE,this._horizontalOrigin=e.horizontalOrigin??wi.LEFT,this._pixelOffset=D.clone(e.pixelOffset??D.ZERO),this._eyeOffset=m.clone(e.eyeOffset??m.ZERO),this._position=m.clone(e.position??m.ZERO),this._scale=e.scale??1,this._id=e.id,this._translucencyByDistance=n,this._pixelOffsetScaleByDistance=i,this._scaleByDistance=o,this._heightReference=e.heightReference??et.NONE,this._distanceDisplayCondition=r,this._disableDepthTestDistance=e.disableDepthTestDistance,this._labelCollection=t,this._glyphs=[],this._backgroundBillboard=void 0,this._batchIndex=void 0,this._rebindAllGlyphs=!0,this._repositionAllGlyphs=!0,this._actualClampedPosition=void 0,this._removeCallbackFunc=void 0,this._mode=void 0,this._clusterShow=!0,this.text=e.text??"",this._relativeSize=1,Sue(this),this._updateClamping()}Object.defineProperties(wh.prototype,{show:{get:function(){return this._show},set:function(e){if(this._show!==e){this._show=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i].billboard;l(r)&&(r.show=e)}let n=this._backgroundBillboard;l(n)&&(n.show=e)}}},position:{get:function(){return this._position},set:function(e){let t=this._position;if(!m.equals(t,e)){m.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o].billboard;l(s)&&(s.position=e)}let i=this._backgroundBillboard;l(i)&&(i.position=e),this._updateClamping()}}},heightReference:{get:function(){return this._heightReference},set:function(e){if(e!==this._heightReference){this._heightReference=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i].billboard;l(r)&&(r.heightReference=e)}let n=this._backgroundBillboard;l(n)&&(n.heightReference=e),n2(this),this._updateClamping()}}},text:{get:function(){return this._text},set:function(e){if(this._text!==e){this._text=e;let t=wh.filterUnsupportedCharacters(e);this._renderedText=wh.enableRightToLeftDetection?qJe(t):t,gx(this)}}},font:{get:function(){return this._font},set:function(e){this._font!==e&&(this._font=e,gx(this),Sue(this))}},fillColor:{get:function(){return this._fillColor},set:function(e){let t=this._fillColor;U.equals(t,e)||(U.clone(e,t),gx(this))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;U.equals(t,e)||(U.clone(e,t),gx(this))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,gx(this))}},showBackground:{get:function(){return this._showBackground},set:function(e){this._showBackground!==e&&(this._showBackground=e,gx(this))}},backgroundColor:{get:function(){return this._backgroundColor},set:function(e){let t=this._backgroundColor;if(!U.equals(t,e)){U.clone(e,t);let n=this._backgroundBillboard;l(n)&&(n.color=t)}}},backgroundPadding:{get:function(){return this._backgroundPadding},set:function(e){let t=this._backgroundPadding;D.equals(t,e)||(D.clone(e,t),n2(this))}},style:{get:function(){return this._style},set:function(e){this._style!==e&&(this._style=e,gx(this))}},pixelOffset:{get:function(){return this._pixelOffset},set:function(e){let t=this._pixelOffset;if(!D.equals(t,e)){D.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.pixelOffset=e)}let i=this._backgroundBillboard;l(i)&&(i.pixelOffset=e)}}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;if(!zt.equals(t,e)){this._translucencyByDistance=zt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.translucencyByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.translucencyByDistance=e)}}},pixelOffsetScaleByDistance:{get:function(){return this._pixelOffsetScaleByDistance},set:function(e){let t=this._pixelOffsetScaleByDistance;if(!zt.equals(t,e)){this._pixelOffsetScaleByDistance=zt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.pixelOffsetScaleByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.pixelOffsetScaleByDistance=e)}}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;if(!zt.equals(t,e)){this._scaleByDistance=zt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.scaleByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.scaleByDistance=e)}}},eyeOffset:{get:function(){return this._eyeOffset},set:function(e){let t=this._eyeOffset;if(!m.equals(t,e)){m.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.eyeOffset=e)}let i=this._backgroundBillboard;l(i)&&(i.eyeOffset=e)}}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin!==e&&(this._horizontalOrigin=e,n2(this))}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){if(this._verticalOrigin!==e){this._verticalOrigin=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.verticalOrigin=e)}let n=this._backgroundBillboard;l(n)&&(n.verticalOrigin=e),n2(this)}}},scale:{get:function(){return this._scale},set:function(e){if(this._scale!==e){this._scale=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.scale=e*this._relativeSize)}let n=this._backgroundBillboard;l(n)&&(n.scale=e*this._relativeSize),n2(this)}}},totalScale:{get:function(){return this._scale*this._relativeSize}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){if(!Qt.equals(e,this._distanceDisplayCondition)){this._distanceDisplayCondition=Qt.clone(e,this._distanceDisplayCondition);let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.distanceDisplayCondition=e)}let n=this._backgroundBillboard;l(n)&&(n.distanceDisplayCondition=e)}}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){if(this._disableDepthTestDistance!==e){this._disableDepthTestDistance=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.disableDepthTestDistance=e)}let n=this._backgroundBillboard;l(n)&&(n.disableDepthTestDistance=e)}}},id:{get:function(){return this._id},set:function(e){if(this._id!==e){this._id=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.id=e)}let n=this._backgroundBillboard;l(n)&&(n.id=e)}}},pickId:{get:function(){if(!(this._glyphs.length===0||!l(this._glyphs[0].billboard)))return this._glyphs[0].billboard.pickId}},_clampedPosition:{get:function(){return this._actualClampedPosition},set:function(e){this._actualClampedPosition=m.clone(e,this._actualClampedPosition);let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard._clampedPosition=e)}let n=this._backgroundBillboard;l(n)&&(n._clampedPosition=e)}},clusterShow:{get:function(){return this._clusterShow},set:function(e){if(this._clusterShow!==e){this._clusterShow=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.clusterShow=e)}let n=this._backgroundBillboard;l(n)&&(n.clusterShow=e)}}}});wh.prototype._updateClamping=function(){Eo._updateClamping(this._labelCollection,this)};wh.prototype.computeScreenSpacePosition=function(e,t){l(t)||(t=new D);let i=this._labelCollection.modelMatrix,o=l(this._actualClampedPosition)?this._actualClampedPosition:this._position;return Eo._computeScreenSpacePosition(i,o,this._eyeOffset,this._pixelOffset,e,t)};wh.getScreenSpaceBoundingBox=function(e,t,n){let i=0,o=0,r=0,s=0,a=e.totalScale,c=e._backgroundBillboard;if(l(c))i=t.x+c._translate.x,o=t.y-c._translate.y,r=c.width*a,s=c.height*a,e.verticalOrigin===kn.BOTTOM||e.verticalOrigin===kn.BASELINE?o-=s:e.verticalOrigin===kn.CENTER&&(o-=s*.5);else{i=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;let d=0,u=0,h=e._glyphs,p=h.length;for(let g=0;g<p;++g){let f=h[g],b=f.billboard;if(!l(b))continue;let x=t.x+b._translate.x,I=t.y-b._translate.y,_=f.dimensions.width*a,E=f.dimensions.height*a;e.verticalOrigin===kn.BOTTOM||e.verticalOrigin===kn.BASELINE?I-=E:e.verticalOrigin===kn.CENTER&&(I-=E*.5),e._verticalOrigin===kn.TOP?I+=ga.PADDING*a:(e._verticalOrigin===kn.BOTTOM||e._verticalOrigin===kn.BASELINE)&&(I-=ga.PADDING*a),i=Math.min(i,x),o=Math.min(o,I),d=Math.max(d,x+_),u=Math.max(u,I+E)}r=d-i,s=u-o}return l(n)||(n=new Ke),n.x=i,n.y=o,n.width=r,n.height=s,n};wh.filterUnsupportedCharacters=function(e){let t=new RegExp(/[\u0000-\u0008\u000E-\u001F\u00ad\u202a-\u206f\u200b-\u200f]/,"g");return e.replace(t,"")};wh.prototype.equals=function(e){return this===e||l(e)&&this._show===e._show&&this._scale===e._scale&&this._outlineWidth===e._outlineWidth&&this._showBackground===e._showBackground&&this._style===e._style&&this._verticalOrigin===e._verticalOrigin&&this._horizontalOrigin===e._horizontalOrigin&&this._heightReference===e._heightReference&&this._renderedText===e._renderedText&&this._font===e._font&&m.equals(this._position,e._position)&&U.equals(this._fillColor,e._fillColor)&&U.equals(this._outlineColor,e._outlineColor)&&U.equals(this._backgroundColor,e._backgroundColor)&&D.equals(this._backgroundPadding,e._backgroundPadding)&&D.equals(this._pixelOffset,e._pixelOffset)&&m.equals(this._eyeOffset,e._eyeOffset)&&zt.equals(this._translucencyByDistance,e._translucencyByDistance)&&zt.equals(this._pixelOffsetScaleByDistance,e._pixelOffsetScaleByDistance)&&zt.equals(this._scaleByDistance,e._scaleByDistance)&&Qt.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._id===e._id};wh.prototype.isDestroyed=function(){return!1};wh.enableRightToLeftDetection=!1;function HJe(e,t){let n=/[a-zA-Z0-9]/,i=/[()[\]{}<>]/,o=[],r="",s=Fs.LTR,a="",c=e.length;for(let d=0;d<c;++d){let u=e.charAt(d);t.test(u)?a=Fs.RTL:n.test(u)?a=Fs.LTR:i.test(u)?a=Fs.BRACKETS:a=Fs.WEAK,d===0&&(s=a),s===a&&a!==Fs.BRACKETS?r+=u:(r!==""&&o.push({Type:s,Word:r}),s=a,r=u)}return o.push({Type:a,Word:r}),o}function zJe(e){return e.split("").reverse().join("")}function o2(e,t,n){return e.slice(0,t)+n+e.slice(t)}function KJe(e){switch(e){case"(":return")";case")":return"(";case"[":return"]";case"]":return"[";case"{":return"}";case"}":return"{";case"<":return">";case">":return"<"}}var JJe="\u05D0-\u05EA",jJe="\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF",Tue=new RegExp(`[${JJe}${jJe}]`);function qJe(e){let t=e.split(` +`),n="";for(let i=0;i<t.length;i++){let o=t[i],r=Tue.test(o.charAt(0)),s=HJe(o,Tue),a=0,c="";for(let d=0;d<s.length;++d){let u=s[d],h=u.Type===Fs.BRACKETS?KJe(u.Word):zJe(u.Word);r?u.Type===Fs.RTL?(c=h+c,a=0):u.Type===Fs.LTR?(c=o2(c,a,u.Word),a+=u.Word.length):(u.Type===Fs.WEAK||u.Type===Fs.BRACKETS)&&(u.Type===Fs.WEAK&&s[d-1].Type===Fs.BRACKETS?c=h+c:s[d-1].Type===Fs.RTL?(c=h+c,a=0):s.length>d+1?s[d+1].Type===Fs.RTL?(c=h+c,a=0):(c=o2(c,a,u.Word),a+=u.Word.length):c=o2(c,0,h)):u.Type===Fs.RTL?c=o2(c,a,h):u.Type===Fs.LTR?(c+=u.Word,a=c.length):(u.Type===Fs.WEAK||u.Type===Fs.BRACKETS)&&(d>0&&s[d-1].Type===Fs.RTL?s.length>d+1?s[d+1].Type===Fs.RTL?c=o2(c,a,h):(c+=u.Word,a=c.length):c+=u.Word:(c+=u.Word,a=c.length))}n+=c,i<t.length-1&&(n+=` +`)}return n}var p0=wh;var Zue=y(Lue(),1);function e4e(){this.dimensions=void 0,this.billboardTexture=void 0,this.billboard=void 0}var t4e=1.2,Rue="ID_WHITE_PIXEL",zK=new D(4,4),n4e=new Ke(1,1,1,1);function i4e(e,t){let n=t._backgroundBillboardTexture;if(!n.hasImage){let o=document.createElement("canvas");o.width=zK.x,o.height=zK.y;let r=o.getContext("2d");r.fillStyle="#fff",r.fillRect(0,0,o.width,o.height),n.loadImage(Rue,o),n.addImageSubRegion(Rue,n4e)}let i=e.add({collection:t});return i.setImageTexture(n),i}var qA={};function o4e(e,t,n,i,o,r){return qA.font=t,qA.fillColor=n,qA.strokeColor=i,qA.strokeWidth=o,qA.padding=ga.PADDING,qA.fill=r===nr.FILL||r===nr.FILL_AND_OUTLINE,qA.stroke=r===nr.OUTLINE||r===nr.FILL_AND_OUTLINE,qA.backgroundColor=U.BLACK,Ax(e,qA)}function KK(e,t){let n=t.billboard;l(n)&&(n.show=!1,l(n._removeCallbackFunc)&&(n._removeCallbackFunc(),n._removeCallbackFunc=void 0),e._spareBillboards.push(n),t.billboard=void 0)}var r4e=new Zue.default,s4e=/\s/;function a4e(e,t){let n=t._renderedText,i=r4e.splitGraphemes(n),o=i.length,r=t._glyphs,s=r.length;if(t._relativeSize=t._fontSize/ga.FONT_SIZE,o<s)for(let g=o;g<s;++g)KK(e,r[g]);r.length=o;let a=t.show&&t._showBackground&&n.split(` +`).join("").length>0,c=t._backgroundBillboard,d=e._backgroundBillboardCollection;a?(l(c)||(c=i4e(d,e),t._backgroundBillboard=c),c.color=t._backgroundColor,c.show=t._show,c.position=t._position,c.eyeOffset=t._eyeOffset,c.pixelOffset=t._pixelOffset,c.horizontalOrigin=wi.LEFT,c.verticalOrigin=t._verticalOrigin,c.heightReference=t._heightReference,c.scale=t.totalScale,c.pickPrimitive=t,c.id=t._id,c.translucencyByDistance=t._translucencyByDistance,c.pixelOffsetScaleByDistance=t._pixelOffsetScaleByDistance,c.scaleByDistance=t._scaleByDistance,c.distanceDisplayCondition=t._distanceDisplayCondition,c.disableDepthTestDistance=t._disableDepthTestDistance,c.clusterShow=t.clusterShow):l(c)&&(d.remove(c),t._backgroundBillboard=c=void 0);let u=e._glyphBillboardCollection,h=u.billboardTextureCache,p=e._textDimensionsCache;for(let g=0;g<o;++g){let f=i[g],b=t._verticalOrigin,x=JSON.stringify([f,t._fontFamily,t._fontStyle,t._fontWeight,+b]),I=p[x],_=h.get(x);if(!l(_)||!l(I)){_=new JA(u),h.set(x,_);let G=`${t._fontStyle} ${t._fontWeight} ${ga.FONT_SIZE}px ${t._fontFamily}`,B=o4e(f,G,U.WHITE,U.WHITE,0,nr.FILL);if(I=B.dimensions,p[x]=I,B.width>0&&B.height>0&&!s4e.test(f)){let w=(0,Gue.default)(B,{cutoff:ga.CUTOFF,radius:ga.RADIUS}),F=B.getContext("2d"),P=B.width,A=B.height,T=F.getImageData(0,0,P,A);for(let L=0;L<P;L++)for(let V=0;V<A;V++){let W=V*P+L,M=w[W]*255,Q=W*4;T.data[Q+0]=M,T.data[Q+1]=M,T.data[Q+2]=M,T.data[Q+3]=M}F.putImageData(T,0,0),_.loadImage(x,B)}}let E=r[g];if(l(E)||(E=new e4e,E.dimensions=I,E.billboardTexture=_,r[g]=E),E.billboardTexture.id!==x&&(E.billboardTexture=_,E.dimensions=I),!_.hasImage){KK(e,E);continue}let S=E.billboard,R=e._spareBillboards;l(S)||(R.length>0?S=R.pop():(S=u.add({collection:e}),S._labelDimensions=new D,S._labelTranslate=new D),E.billboard=S),S.setImageTexture(_),S.show=t._show,S.position=t._position,S.eyeOffset=t._eyeOffset,S.pixelOffset=t._pixelOffset,S.horizontalOrigin=wi.LEFT,S.verticalOrigin=t._verticalOrigin,S.heightReference=t._heightReference,S.scale=t.totalScale,S.pickPrimitive=t,S.id=t._id,S.translucencyByDistance=t._translucencyByDistance,S.pixelOffsetScaleByDistance=t._pixelOffsetScaleByDistance,S.scaleByDistance=t._scaleByDistance,S.distanceDisplayCondition=t._distanceDisplayCondition,S.disableDepthTestDistance=t._disableDepthTestDistance,S._batchIndex=t._batchIndex,S.outlineColor=t.outlineColor,t.style===nr.FILL_AND_OUTLINE?(S.color=t._fillColor,S.outlineWidth=t.outlineWidth):t.style===nr.FILL?(S.color=t._fillColor,S.outlineWidth=0):t.style===nr.OUTLINE&&(S.color=U.TRANSPARENT,S.outlineWidth=t.outlineWidth)}t._repositionAllGlyphs=!0}function Vue(e,t,n){return t===wi.CENTER?-e/2:t===wi.RIGHT?-(e+n.x):n.x}var Sr=new D,c4e=new D;function l4e(e){let t=e._glyphs,n=e._renderedText,i=0,o=0,r=[],s=Number.NEGATIVE_INFINITY,a=0,c=1,d=t.length,u=e._backgroundBillboard,h=D.clone(l(u)?e._backgroundPadding:D.ZERO,c4e);h.x/=e._relativeSize,h.y/=e._relativeSize;for(let F=0;F<d;++F){if(n.charAt(F)===` +`){r.push(i),++c,i=0;continue}let A=t[F].dimensions;l(A)&&(a=Math.max(a,A.height-A.descent),s=Math.max(s,A.descent),i+=A.width-A.minx,F<d-1&&(i+=t[F+1].dimensions.minx),o=Math.max(o,i))}r.push(i);let p=a+s,g=e.totalScale,f=e._horizontalOrigin,b=e._verticalOrigin,x=0,I=r[x],_=Vue(I,f,h),E=(l(e._lineHeight)?e._lineHeight:t4e*e._fontSize)/e._relativeSize,S=E*(c-1),R=o,G=p+S;l(u)&&(R+=h.x*2,G+=h.y*2,u._labelHorizontalOrigin=f),Sr.x=_*g,Sr.y=0;let B=!0,w=0;for(let F=0;F<d;++F){if(n.charAt(F)===` +`){++x,w+=E,I=r[x],_=Vue(I,f,h),Sr.x=_*g,B=!0;continue}let P=t[F],A=P.dimensions;if(l(A)&&(b===kn.TOP?(Sr.y=A.height-a-h.y,Sr.y+=ga.PADDING):b===kn.CENTER?Sr.y=(S+A.height-a)/2:b===kn.BASELINE?(Sr.y=S,Sr.y-=ga.PADDING):(Sr.y=S+s+h.y,Sr.y-=ga.PADDING),Sr.y=(Sr.y-A.descent-w)*g,B&&(Sr.x-=ga.PADDING*g,B=!1),l(P.billboard)&&(P.billboard._setTranslate(Sr),P.billboard._labelDimensions.x=R,P.billboard._labelDimensions.y=G,P.billboard._labelHorizontalOrigin=f),F<d-1)){let T=t[F+1];Sr.x+=(A.width-A.minx+T.dimensions.minx)*g}}if(l(u)&&n.split(` +`).join("").length>0&&(f===wi.CENTER?_=-o/2-h.x:f===wi.RIGHT?_=-(o+h.x*2):_=0,Sr.x=_*g,b===kn.TOP?Sr.y=p-a-s:b===kn.CENTER?Sr.y=(p-a)/2-s:b===kn.BASELINE?Sr.y=-h.y-s:Sr.y=0,Sr.y=Sr.y*g,u.width=R,u.height=G,u._setTranslate(Sr),u._labelTranslate=D.clone(Sr,u._labelTranslate)),Du(e.heightReference))for(let F=0;F<d;++F){let A=t[F].billboard;l(A)&&(A._labelTranslate=D.clone(Sr,A._labelTranslate))}}function Bue(e,t){let n=t._glyphs;for(let i=0,o=n.length;i<o;++i)KK(e,n[i]);l(t._backgroundBillboard)&&(e._backgroundBillboardCollection.remove(t._backgroundBillboard),t._backgroundBillboard=void 0),t._labelCollection=void 0,l(t._removeCallbackFunc)&&t._removeCallbackFunc(),me(t)}function $f(e){e=e??Y.EMPTY_OBJECT,this._scene=e.scene,this._batchTable=e.batchTable;let t=new qd({scene:this._scene,textureAtlas:new mx({initialSize:zK})});this._backgroundBillboardCollection=t,this._backgroundBillboardTexture=new JA(t),this._glyphBillboardCollection=new qd({scene:this._scene,batchTable:this._batchTable}),this._glyphBillboardCollection._sdf=!0,this._spareBillboards=[],this._textDimensionsCache={},this._labels=[],this._labelsToUpdate=[],this._totalGlyphCount=0,this._highlightColor=U.clone(U.WHITE),this.show=e.show??!0,this.modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.blendOption=e.blendOption??No.OPAQUE_AND_TRANSLUCENT}Object.defineProperties($f.prototype,{length:{get:function(){return this._labels.length}},sizeInBytes:{get:function(){return this._glyphBillboardCollection.sizeInBytes+this._backgroundBillboardCollection.sizeInBytes}},ready:{get:function(){let e=this._backgroundBillboardCollection.get(0);return l(e)&&!e.ready?!1:this._glyphBillboardCollection.ready}}});$f.prototype.add=function(e){let t=new p0(e,this);return this._labels.push(t),this._labelsToUpdate.push(t),t};$f.prototype.remove=function(e){if(l(e)&&e._labelCollection===this){let t=this._labels.indexOf(e);if(t!==-1)return this._labels.splice(t,1),Bue(this,e),!0}return!1};$f.prototype.removeAll=function(){let e=this._labels;for(let t=0,n=e.length;t<n;++t)Bue(this,e[t]);e.length=0};$f.prototype.contains=function(e){return l(e)&&e._labelCollection===this};$f.prototype.get=function(e){return this._labels[e]};$f.prototype.update=function(e){if(!this.show)return;let t=this._glyphBillboardCollection,n=this._backgroundBillboardCollection;t.modelMatrix=this.modelMatrix,t.debugShowBoundingVolume=this.debugShowBoundingVolume,n.modelMatrix=this.modelMatrix,n.debugShowBoundingVolume=this.debugShowBoundingVolume;let i=this._labelsToUpdate.length;for(let r=0;r<i;++r){let s=this._labelsToUpdate[r];if(s.isDestroyed())continue;let a=s._glyphs.length;s._rebindAllGlyphs&&(a4e(this,s),s._rebindAllGlyphs=!1),s._repositionAllGlyphs&&(l4e(s),s._repositionAllGlyphs=!1);let c=s._glyphs.length-a;this._totalGlyphCount+=c}let o=n.length>0?No.TRANSLUCENT:this.blendOption;t.blendOption=o,n.blendOption=o,t._highlightColor=this._highlightColor,n._highlightColor=this._highlightColor,this._labelsToUpdate.length=0,n.update(e),t.update(e)};$f.prototype.isDestroyed=function(){return!1};$f.prototype.destroy=function(){return this.removeAll(),this._glyphBillboardCollection=this._glyphBillboardCollection.destroy(),this._backgroundBillboardCollection=this._backgroundBillboardCollection.destroy(),me(this)};var ep=$f;var GYn=y(C(),1);var xkn=y(C(),1),r2=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 position2DHigh; +in vec3 position2DLow; +in vec3 prevPosition3DHigh; +in vec3 prevPosition3DLow; +in vec3 prevPosition2DHigh; +in vec3 prevPosition2DLow; +in vec3 nextPosition3DHigh; +in vec3 nextPosition3DLow; +in vec3 nextPosition2DHigh; +in vec3 nextPosition2DLow; +in vec4 texCoordExpandAndBatchIndex; + +out vec2 v_st; +out float v_width; +out vec4 v_pickColor; +out float v_polylineAngle; + +void main() +{ + float texCoord = texCoordExpandAndBatchIndex.x; + float expandDir = texCoordExpandAndBatchIndex.y; + bool usePrev = texCoordExpandAndBatchIndex.z < 0.0; + float batchTableIndex = texCoordExpandAndBatchIndex.w; + + vec2 widthAndShow = batchTable_getWidthAndShow(batchTableIndex); + float width = widthAndShow.x + 0.5; + float show = widthAndShow.y; + + if (width < 1.0) + { + show = 0.0; + } + + vec4 pickColor = batchTable_getPickColor(batchTableIndex); + + vec4 p, prev, next; + if (czm_morphTime == 1.0) + { + p = czm_translateRelativeToEye(position3DHigh.xyz, position3DLow.xyz); + prev = czm_translateRelativeToEye(prevPosition3DHigh.xyz, prevPosition3DLow.xyz); + next = czm_translateRelativeToEye(nextPosition3DHigh.xyz, nextPosition3DLow.xyz); + } + else if (czm_morphTime == 0.0) + { + p = czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy); + prev = czm_translateRelativeToEye(prevPosition2DHigh.zxy, prevPosition2DLow.zxy); + next = czm_translateRelativeToEye(nextPosition2DHigh.zxy, nextPosition2DLow.zxy); + } + else + { + p = czm_columbusViewMorph( + czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy), + czm_translateRelativeToEye(position3DHigh.xyz, position3DLow.xyz), + czm_morphTime); + prev = czm_columbusViewMorph( + czm_translateRelativeToEye(prevPosition2DHigh.zxy, prevPosition2DLow.zxy), + czm_translateRelativeToEye(prevPosition3DHigh.xyz, prevPosition3DLow.xyz), + czm_morphTime); + next = czm_columbusViewMorph( + czm_translateRelativeToEye(nextPosition2DHigh.zxy, nextPosition2DLow.zxy), + czm_translateRelativeToEye(nextPosition3DHigh.xyz, nextPosition3DLow.xyz), + czm_morphTime); + } + + #ifdef DISTANCE_DISPLAY_CONDITION + vec3 centerHigh = batchTable_getCenterHigh(batchTableIndex); + vec4 centerLowAndRadius = batchTable_getCenterLowAndRadius(batchTableIndex); + vec3 centerLow = centerLowAndRadius.xyz; + float radius = centerLowAndRadius.w; + vec2 distanceDisplayCondition = batchTable_getDistanceDisplayCondition(batchTableIndex); + + float lengthSq; + if (czm_sceneMode == czm_sceneMode2D) + { + lengthSq = czm_eyeHeight2D.y; + } + else + { + vec4 center = czm_translateRelativeToEye(centerHigh.xyz, centerLow.xyz); + lengthSq = max(0.0, dot(center.xyz, center.xyz) - radius * radius); + } + + float nearSq = distanceDisplayCondition.x * distanceDisplayCondition.x; + float farSq = distanceDisplayCondition.y * distanceDisplayCondition.y; + if (lengthSq < nearSq || lengthSq > farSq) + { + show = 0.0; + } + #endif + + float polylineAngle; + vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, polylineAngle); + gl_Position = czm_viewportOrthographic * positionWC * show; + + v_st.s = texCoord; + v_st.t = czm_writeNonPerspective(clamp(expandDir, 0.0, 1.0), gl_Position.w); + + v_width = width; + v_pickColor = pickColor; + v_polylineAngle = polylineAngle; +} +`;var Ykn=y(C(),1);var wkn=y(C(),1);var Gl={};Gl.numberOfPoints=function(e,t,n){let i=m.distance(e,t);return Math.ceil(i/n)};Gl.numberOfPointsRhumbLine=function(e,t,n){let i=Math.pow(e.longitude-t.longitude,2)+Math.pow(e.latitude-t.latitude,2);return Math.max(1,Math.ceil(Math.sqrt(i/(n*n))))};var d4e=new ge;Gl.extractHeights=function(e,t){let n=e.length,i=new Array(n);for(let o=0;o<n;o++){let r=e[o];i[o]=t.cartesianToCartographic(r,d4e).height}return i};var u4e=new X,m4e=new m,wue=new m,h4e=new An(m.UNIT_X,0),Xue=new m,f4e=new An(m.UNIT_X,0),p4e=new m,A4e=new m,jK=[];function Fue(e,t,n){let i=jK;i.length=e;let o;if(t===n){for(o=0;o<e;o++)i[o]=t;return i}let s=(n-t)/e;for(o=0;o<e;o++){let a=t+o*s;i[o]=a}return i}var OQ=new ge,YQ=new ge,A0=new m,qK=new m,g4e=new m,JK=new sA,s2=new cc;function b4e(e,t,n,i,o,r,s,a){let c=i.scaleToGeodeticSurface(e,qK),d=i.scaleToGeodeticSurface(t,g4e),u=Gl.numberOfPoints(e,t,n),h=i.cartesianToCartographic(c,OQ),p=i.cartesianToCartographic(d,YQ),g=Fue(u,o,r);JK.setEndPoints(h,p);let f=JK.surfaceDistance/u,b=a;h.height=o;let x=i.cartographicToCartesian(h,A0);m.pack(x,s,b),b+=3;for(let I=1;I<u;I++){let _=JK.interpolateUsingSurfaceDistance(I*f,YQ);_.height=g[I],x=i.cartographicToCartesian(_,A0),m.pack(x,s,b),b+=3}return b}function y4e(e,t,n,i,o,r,s,a){let c=i.cartesianToCartographic(e,OQ),d=i.cartesianToCartographic(t,YQ),u=Gl.numberOfPointsRhumbLine(c,d,n);c.height=0,d.height=0;let h=Fue(u,o,r);s2.ellipsoid.equals(i)||(s2=new cc(void 0,void 0,i)),s2.setEndPoints(c,d);let p=s2.surfaceDistance/u,g=a;c.height=o;let f=i.cartographicToCartesian(c,A0);m.pack(f,s,g),g+=3;for(let b=1;b<u;b++){let x=s2.interpolateUsingSurfaceDistance(b*p,YQ);x.height=h[b],f=i.cartographicToCartesian(x,A0),m.pack(f,s,g),g+=3}return g}Gl.wrapLongitude=function(e,t){let n=[],i=[];if(l(e)&&e.length>0){t=t??X.IDENTITY;let o=X.inverseTransformation(t,u4e),r=X.multiplyByPoint(o,m.ZERO,m4e),s=m.normalize(X.multiplyByPointAsVector(o,m.UNIT_Y,wue),wue),a=An.fromPointNormal(r,s,h4e),c=m.normalize(X.multiplyByPointAsVector(o,m.UNIT_X,Xue),Xue),d=An.fromPointNormal(r,c,f4e),u=1;n.push(m.clone(e[0]));let h=n[0],p=e.length;for(let g=1;g<p;++g){let f=e[g];if(An.getPointDistance(d,h)<0||An.getPointDistance(d,f)<0){let b=fi.lineSegmentPlane(h,f,a,p4e);if(l(b)){let x=m.multiplyByScalar(s,5e-9,A4e);An.getPointDistance(a,h)<0&&m.negate(x,x),n.push(m.add(b,x,new m)),i.push(u+1),m.negate(x,x),n.push(m.add(b,x,new m)),u=1}}n.push(m.clone(e[g])),u++,h=f}i.push(u)}return{positions:n,lengths:i}};Gl.generateArc=function(e){l(e)||(e={});let t=e.positions,n=t.length,i=e.ellipsoid??ie.default,o=e.height??0,r=Array.isArray(o);if(n<1)return[];if(n===1){let b=i.scaleToGeodeticSurface(t[0],qK);if(o=r?o[0]:o,o!==0){let x=i.geodeticSurfaceNormal(b,A0);m.multiplyByScalar(x,o,x),m.add(b,x,b)}return[b.x,b.y,b.z]}let s=e.minDistance;if(!l(s)){let b=e.granularity??Z.RADIANS_PER_DEGREE;s=Z.chordLength(b,i.maximumRadius)}let a=0,c;for(c=0;c<n-1;c++)a+=Gl.numberOfPoints(t[c],t[c+1],s);let d=(a+1)*3,u=new Array(d),h=0;for(c=0;c<n-1;c++){let b=t[c],x=t[c+1],I=r?o[c]:o,_=r?o[c+1]:o;h=b4e(b,x,s,i,I,_,u,h)}jK.length=0;let p=t[n-1],g=i.cartesianToCartographic(p,OQ);g.height=r?o[n-1]:o;let f=i.cartographicToCartesian(g,A0);return m.pack(f,u,d-3),u};var Wue=new ge,C4e=new ge;Gl.generateRhumbArc=function(e){l(e)||(e={});let t=e.positions,n=t.length,i=e.ellipsoid??ie.default,o=e.height??0,r=Array.isArray(o);if(n<1)return[];if(n===1){let I=i.scaleToGeodeticSurface(t[0],qK);if(o=r?o[0]:o,o!==0){let _=i.geodeticSurfaceNormal(I,A0);m.multiplyByScalar(_,o,_),m.add(I,_,I)}return[I.x,I.y,I.z]}let s=e.granularity??Z.RADIANS_PER_DEGREE,a=0,c,d=i.cartesianToCartographic(t[0],Wue),u;for(c=0;c<n-1;c++)u=i.cartesianToCartographic(t[c+1],C4e),a+=Gl.numberOfPointsRhumbLine(d,u,s),d=ge.clone(u,Wue);let h=(a+1)*3,p=new Array(h),g=0;for(c=0;c<n-1;c++){let I=t[c],_=t[c+1],E=r?o[c]:o,S=r?o[c+1]:o;g=y4e(I,_,s,i,E,S,p,g)}jK.length=0;let f=t[n-1],b=i.cartesianToCartographic(f,OQ);b.height=r?o[n-1]:o;let x=i.cartographicToCartesian(b,A0);return m.pack(x,p,h-3),p};Gl.generateCartesianArc=function(e){let t=Gl.generateArc(e),n=t.length/3,i=new Array(n);for(let o=0;o<n;o++)i[o]=m.unpack(t,o*3);return i};Gl.generateCartesianRhumbArc=function(e){let t=Gl.generateRhumbArc(e),n=t.length/3,i=new Array(n);for(let o=0;o<n;o++)i[o]=m.unpack(t,o*3);return i};var Oi=Gl;function $d(e,t){e=e??Y.EMPTY_OBJECT,this._show=e.show??!0,this._width=e.width??1,this._loop=e.loop??!1,this._distanceDisplayCondition=e.distanceDisplayCondition,this._material=e.material,l(this._material)||(this._material=so.fromType(so.ColorType,{color:new U(1,1,1,1)}));let n=e.positions;l(n)||(n=[]),this._positions=n,this._actualPositions=Xo(n,m.equalsEpsilon),this._loop&&this._actualPositions.length>2&&(this._actualPositions===this._positions&&(this._actualPositions=n.slice()),this._actualPositions.push(m.clone(this._actualPositions[0]))),this._length=this._actualPositions.length,this._id=e.id;let i;l(t)&&(i=X.clone(t.modelMatrix)),this._modelMatrix=i,this._segments=Oi.wrapLongitude(this._actualPositions,i),this._actualLength=void 0,this._propertiesChanged=new Uint32Array(Mue),this._polylineCollection=t,this._dirty=!1,this._pickId=void 0,this._boundingVolume=ue.fromPoints(this._actualPositions),this._boundingVolumeWC=ue.transform(this._boundingVolume,this._modelMatrix),this._boundingVolume2D=new ue}var Pue=$d.POSITION_INDEX=0,x4e=$d.SHOW_INDEX=1,I4e=$d.WIDTH_INDEX=2,_4e=$d.MATERIAL_INDEX=3,a2=$d.POSITION_SIZE_INDEX=4,E4e=$d.DISTANCE_DISPLAY_CONDITION=5,Mue=$d.NUMBER_OF_PROPERTIES=6;function $A(e,t){++e._propertiesChanged[t];let n=e._polylineCollection;l(n)&&(n._updatePolyline(e,t),e._dirty=!0)}Object.defineProperties($d.prototype,{show:{get:function(){return this._show},set:function(e){e!==this._show&&(this._show=e,$A(this,x4e))}},positions:{get:function(){return this._positions},set:function(e){let t=Xo(e,m.equalsEpsilon);this._loop&&t.length>2&&(t===e&&(t=e.slice()),t.push(m.clone(t[0]))),(this._actualPositions.length!==t.length||this._actualPositions.length!==this._length)&&$A(this,a2),this._positions=e,this._actualPositions=t,this._length=t.length,this._boundingVolume=ue.fromPoints(this._actualPositions,this._boundingVolume),this._boundingVolumeWC=ue.transform(this._boundingVolume,this._modelMatrix,this._boundingVolumeWC),$A(this,Pue),this.update()}},material:{get:function(){return this._material},set:function(e){this._material!==e&&(this._material=e,$A(this,_4e))}},width:{get:function(){return this._width},set:function(e){let t=this._width;e!==t&&(this._width=e,$A(this,I4e))}},loop:{get:function(){return this._loop},set:function(e){if(e!==this._loop){let t=this._actualPositions;e?t.length>2&&!m.equals(t[0],t[t.length-1])&&(t.length===this._positions.length&&(this._actualPositions=t=this._positions.slice()),t.push(m.clone(t[0]))):t.length>2&&m.equals(t[0],t[t.length-1])&&(t.length-1===this._positions.length?this._actualPositions=this._positions:t.pop()),this._loop=e,$A(this,a2)}}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickId:{get:function(){return this._pickId}},isDestroyed:{get:function(){return!l(this._polylineCollection)}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Qt.equals(e,this._distanceDisplayCondition)||(this._distanceDisplayCondition=Qt.clone(e,this._distanceDisplayCondition),$A(this,E4e))}}});$d.prototype.update=function(){let e=X.IDENTITY;l(this._polylineCollection)&&(e=this._polylineCollection.modelMatrix);let t=this._segments.positions.length,n=this._segments.lengths,i=this._propertiesChanged[Pue]>0||this._propertiesChanged[a2]>0;if((!X.equals(e,this._modelMatrix)||i)&&(this._segments=Oi.wrapLongitude(this._actualPositions,e),this._boundingVolumeWC=ue.transform(this._boundingVolume,e,this._boundingVolumeWC)),this._modelMatrix=X.clone(e,this._modelMatrix),this._segments.positions.length!==t)$A(this,a2);else{let o=n.length;for(let r=0;r<o;++r)if(n[r]!==this._segments.lengths[r]){$A(this,a2);break}}};$d.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this,collection:this._polylineCollection,id:this._id})),this._pickId};$d.prototype._clean=function(){this._dirty=!1;let e=this._propertiesChanged;for(let t=0;t<Mue-1;++t)e[t]=0};$d.prototype._destroy=function(){this._pickId=this._pickId&&this._pickId.destroy(),this._material=this._material&&this._material.destroy(),this._polylineCollection=void 0};var dm=$d;var T4e=dm.SHOW_INDEX,S4e=dm.WIDTH_INDEX,eJ=dm.POSITION_INDEX,L4e=dm.MATERIAL_INDEX,vue=dm.POSITION_SIZE_INDEX,R4e=dm.DISTANCE_DISPLAY_CONDITION,Oue=dm.NUMBER_OF_PROPERTIES,ud={texCoordExpandAndBatchIndex:0,position3DHigh:1,position3DLow:2,position2DHigh:3,position2DLow:4,prevPosition3DHigh:5,prevPosition3DLow:6,prevPosition2DHigh:7,prevPosition2DLow:8,nextPosition3DHigh:9,nextPosition3DLow:10,nextPosition2DHigh:11,nextPosition2DLow:12};function Xh(e){e=e??Y.EMPTY_OBJECT,this.show=e.show??!0,this.modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this._modelMatrix=X.clone(X.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._opaqueRS=void 0,this._translucentRS=void 0,this._colorCommands=[],this._polylinesUpdated=!1,this._polylinesRemoved=!1,this._createVertexArray=!1,this._propertiesChanged=new Uint32Array(Oue),this._polylines=[],this._polylineBuckets={},this._positionBufferUsage={bufferUsage:Ne.STATIC_DRAW,frameCount:0},this._mode=void 0,this._polylinesToUpdate=[],this._vertexArrays=[],this._positionBuffer=void 0,this._texCoordExpandAndBatchIndexBuffer=void 0,this._batchTable=void 0,this._createBatchTable=!1,this._useHighlightColor=!1,this._highlightColor=U.clone(U.WHITE);let t=this;this._uniformMap={u_highlightColor:function(){return t._highlightColor}}}Object.defineProperties(Xh.prototype,{length:{get:function(){return tJ(this),this._polylines.length}}});Xh.prototype.add=function(e){let t=new dm(e,this);return t._index=this._polylines.length,this._polylines.push(t),this._createVertexArray=!0,this._createBatchTable=!0,t};Xh.prototype.remove=function(e){if(this.contains(e)){if(this._polylinesRemoved=!0,this._createVertexArray=!0,this._createBatchTable=!0,l(e._bucket)){let t=e._bucket;t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy()}return e._destroy(),!0}return!1};Xh.prototype.removeAll=function(){nJ(this),jue(this),this._polylineBuckets={},this._polylinesRemoved=!1,this._polylines.length=0,this._polylinesToUpdate.length=0,this._createVertexArray=!0};Xh.prototype.contains=function(e){return l(e)&&e._polylineCollection===this};Xh.prototype.get=function(e){return tJ(this),this._polylines[e]};function V4e(e,t){l(e._batchTable)&&e._batchTable.destroy();let n=[{functionName:"batchTable_getWidthAndShow",componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:2},{functionName:"batchTable_getPickColor",componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:4,normalize:!0},{functionName:"batchTable_getCenterHigh",componentDatatype:J.FLOAT,componentsPerAttribute:3},{functionName:"batchTable_getCenterLowAndRadius",componentDatatype:J.FLOAT,componentsPerAttribute:4},{functionName:"batchTable_getDistanceDisplayCondition",componentDatatype:J.FLOAT,componentsPerAttribute:2}];e._batchTable=new oC(t,n,e._polylines.length)}var Hue=new ni,zue=new ce,Kue=new D;Xh.prototype.update=function(e){if(tJ(this),this._polylines.length===0||!this.show)return;W4e(this,e);let t=e.context,n=e.mapProjection,i,o=this._propertiesChanged;if(this._createBatchTable){if(Kt.maximumVertexTextureImageUnits===0)throw new de("Vertex texture fetch support is required to render polylines. The maximum number of vertex texture image units must be greater than zero.");V4e(this,t),this._createBatchTable=!1}if(this._createVertexArray||Z4e(this))Que(this,t,n);else if(this._polylinesUpdated){let c=this._polylinesToUpdate;if(this._mode!==re.SCENE3D){let d=c.length;for(let u=0;u<d;++u)i=c[u],i.update()}if(o[vue]||o[L4e])Que(this,t,n);else{let d=c.length,u=this._polylineBuckets;for(let h=0;h<d;++h){i=c[h],o=i._propertiesChanged;let p=i._bucket,g=0;for(let f in u)if(u.hasOwnProperty(f)){if(u[f]===p){o[eJ]&&p.writeUpdate(g,i,this._positionBuffer,n);break}g+=u[f].lengthOfPositions}if((o[T4e]||o[S4e])&&this._batchTable.setBatchedAttribute(i._index,0,new D(i._width,i._show)),this._batchTable.attributes.length>2){if(o[eJ]||o[vue]){let f=e.mode===re.SCENE2D?i._boundingVolume2D:i._boundingVolumeWC,b=ni.fromCartesian(f.center,Hue),x=ce.fromElements(b.low.x,b.low.y,b.low.z,f.radius,zue);this._batchTable.setBatchedAttribute(i._index,2,b.high),this._batchTable.setBatchedAttribute(i._index,3,x)}if(o[R4e]){let f=Kue;f.x=0,f.y=Number.MAX_VALUE;let b=i.distanceDisplayCondition;l(b)&&(f.x=b.near,f.y=b.far),this._batchTable.setBatchedAttribute(i._index,4,f)}}i._clean()}}c.length=0,this._polylinesUpdated=!1}o=this._propertiesChanged;for(let c=0;c<Oue;++c)o[c]=0;let r=X.IDENTITY;e.mode===re.SCENE3D&&(r=this.modelMatrix);let s=e.passes,a=e.morphTime!==0;if((!l(this._opaqueRS)||this._opaqueRS.depthTest.enabled!==a)&&(this._opaqueRS=Qe.fromCache({depthMask:a,depthTest:{enabled:a}})),(!l(this._translucentRS)||this._translucentRS.depthTest.enabled!==a)&&(this._translucentRS=Qe.fromCache({blending:bn.ALPHA_BLEND,depthMask:!a,depthTest:{enabled:a}})),this._batchTable.update(e),s.render||s.pick){let c=this._colorCommands;G4e(this,e,c,r)}};var c2=new ue,Nue=new ue;function G4e(e,t,n,i){let o=t.context,r=t.commandList,s=n.length,a=0,c=!0,d=e._vertexArrays,u=e.debugShowBoundingVolume,p=e._batchTable.getUniformMapCallback(),g=d.length;for(let f=0;f<g;++f){let b=d[f],x=b.buckets,I=x.length;for(let _=0;_<I;++_){let E=x[_],S=E.offset,R=E.bucket.shaderProgram,G=E.bucket.polylines,B=G.length,w,F,P=0,A,T;for(let L=0;L<B;++L){let V=G[L],W=w4e(V._material);if(W!==w){if(l(w)&&P>0){let k=F.isTranslucent();a>=s?(A=new ot({owner:e}),n.push(A)):A=n[a],++a,T=Lt(p(F._uniforms),e._uniformMap),A.boundingVolume=ue.clone(c2,A.boundingVolume),A.modelMatrix=i,A.shaderProgram=R,A.vertexArray=b.va,A.renderState=k?e._translucentRS:e._opaqueRS,A.pass=k?Ge.TRANSLUCENT:Ge.OPAQUE,A.debugShowBoundingVolume=u,A.pickId="v_pickColor",A.uniformMap=T,A.count=P,A.offset=S,S+=P,P=0,c=!0,r.push(A)}F=V._material,F.update(o),w=W}let M=V._locatorBuckets,Q=M.length;for(let k=0;k<Q;++k){let v=M[k];v.locator===E&&(P+=v.count)}let N;t.mode===re.SCENE3D?N=V._boundingVolumeWC:t.mode===re.COLUMBUS_VIEW?N=V._boundingVolume2D:t.mode===re.SCENE2D?l(V._boundingVolume2D)&&(N=ue.clone(V._boundingVolume2D,Nue),N.center.x=0):l(V._boundingVolumeWC)&&l(V._boundingVolume2D)&&(N=ue.union(V._boundingVolumeWC,V._boundingVolume2D,Nue)),c?(c=!1,ue.clone(N,c2)):ue.union(N,c2,c2)}l(w)&&P>0&&(a>=s?(A=new ot({owner:e}),n.push(A)):A=n[a],++a,T=Lt(p(F._uniforms),e._uniformMap),A.boundingVolume=ue.clone(c2,A.boundingVolume),A.modelMatrix=i,A.shaderProgram=R,A.vertexArray=b.va,A.renderState=F.isTranslucent()?e._translucentRS:e._opaqueRS,A.pass=F.isTranslucent()?Ge.TRANSLUCENT:Ge.OPAQUE,A.debugShowBoundingVolume=u,A.pickId="v_pickColor",A.uniformMap=T,A.count=P,A.offset=S,c=!0,r.push(A)),w=void 0}}n.length=a}Xh.prototype.isDestroyed=function(){return!1};Xh.prototype.destroy=function(){return Jue(this),nJ(this),jue(this),this._batchTable=this._batchTable&&this._batchTable.destroy(),me(this)};function Z4e(e){let t=!1,n=e._propertiesChanged,i=e._positionBufferUsage;return n[eJ]?(i.bufferUsage!==Ne.STREAM_DRAW&&(t=!0,i.bufferUsage=Ne.STREAM_DRAW),i.frameCount=100):i.bufferUsage!==Ne.STATIC_DRAW&&(i.frameCount===0?(t=!0,i.bufferUsage=Ne.STATIC_DRAW):i.frameCount--),t}var Due=[0,0,0];function Que(e,t,n){e._createVertexArray=!1,nJ(e),Jue(e),X4e(e);let i=[[]],o=i[0],r=e._batchTable,s=e._useHighlightColor,a=[0],c=0,d=[[]],u=0,h=e._polylineBuckets,p,g;for(p in h)h.hasOwnProperty(p)&&(g=h[p],g.updateShader(t,r,s),u+=g.lengthOfPositions);if(u>0){let f=e._mode,b=new Float32Array(6*u*3),x=new Float32Array(u*4),I,_=0,E=0,S=0;for(p in h)if(h.hasOwnProperty(p)){g=h[p],g.write(b,x,_,E,S,r,t,n),f===re.MORPHING&&(l(I)||(I=new Float32Array(6*u*3)),g.writeForMorph(I,_));let T=g.lengthOfPositions;_+=6*T*3,E+=T*4,S+=T*4,c=g.updateIndices(i,a,d,c)}let R=e._positionBufferUsage.bufferUsage,G=Ne.STATIC_DRAW;e._positionBuffer=It.createVertexBuffer({context:t,typedArray:b,usage:R});let B;l(I)&&(B=It.createVertexBuffer({context:t,typedArray:I,usage:R})),e._texCoordExpandAndBatchIndexBuffer=It.createVertexBuffer({context:t,typedArray:x,usage:G});let w=3*Float32Array.BYTES_PER_ELEMENT,F=4*Float32Array.BYTES_PER_ELEMENT,P=0,A=i.length;for(let T=0;T<A;++T)if(o=i[T],o.length>0){let L=new Uint16Array(o),V=It.createIndexBuffer({context:t,typedArray:L,usage:Ne.STATIC_DRAW,indexDatatype:Me.UNSIGNED_SHORT});P+=a[T];let W=6*(T*(w*Z.SIXTY_FOUR_KILOBYTES)-P*w),M=w+W,Q=w+M,N=w+Q,k=w+N,v=w+k,O=T*(F*Z.SIXTY_FOUR_KILOBYTES)-P*F,H=[{index:ud.position3DHigh,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:W,strideInBytes:6*w},{index:ud.position3DLow,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:M,strideInBytes:6*w},{index:ud.position2DHigh,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:W,strideInBytes:6*w},{index:ud.position2DLow,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:M,strideInBytes:6*w},{index:ud.prevPosition3DHigh,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:Q,strideInBytes:6*w},{index:ud.prevPosition3DLow,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:N,strideInBytes:6*w},{index:ud.prevPosition2DHigh,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:Q,strideInBytes:6*w},{index:ud.prevPosition2DLow,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:N,strideInBytes:6*w},{index:ud.nextPosition3DHigh,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:k,strideInBytes:6*w},{index:ud.nextPosition3DLow,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:v,strideInBytes:6*w},{index:ud.nextPosition2DHigh,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:k,strideInBytes:6*w},{index:ud.nextPosition2DLow,componentsPerAttribute:3,componentDatatype:J.FLOAT,offsetInBytes:v,strideInBytes:6*w},{index:ud.texCoordExpandAndBatchIndex,componentsPerAttribute:4,componentDatatype:J.FLOAT,vertexBuffer:e._texCoordExpandAndBatchIndexBuffer,offsetInBytes:O}],ee,K,te,q;f===re.SCENE3D?(K=e._positionBuffer,ee="vertexBuffer",te=Due,q="value"):f===re.SCENE2D||f===re.COLUMBUS_VIEW?(K=Due,ee="value",te=e._positionBuffer,q="vertexBuffer"):(K=B,ee="vertexBuffer",te=e._positionBuffer,q="vertexBuffer"),H[0][ee]=K,H[1][ee]=K,H[2][q]=te,H[3][q]=te,H[4][ee]=K,H[5][ee]=K,H[6][q]=te,H[7][q]=te,H[8][ee]=K,H[9][ee]=K,H[10][q]=te,H[11][q]=te;let pe=new ui({context:t,attributes:H,indexBuffer:V});e._vertexArrays.push({va:pe,buckets:d[T]})}}}function B4e(e,t){return t instanceof Wt?t.id:t}var HQ=[];function w4e(e){let t=so._uniformList[e.type],n=t.length;HQ.length=2*n;let i=0;for(let o=0;o<n;++o){let r=t[o];HQ[i]=r,HQ[i+1]=e._uniforms[r](),i+=2}return`${e.type}:${JSON.stringify(HQ,B4e)}`}function X4e(e){let t=e._mode,n=e._modelMatrix,i=e._polylineBuckets={},o=e._polylines,r=o.length;for(let s=0;s<r;++s){let a=o[s];if(a._actualPositions.length>1){a.update();let c=a.material,d=i[c.type];l(d)||(d=i[c.type]=new tp(c,t,n)),d.addPolyline(a)}}}function W4e(e,t){let n=t.mode;(e._mode!==n||!X.equals(e._modelMatrix,e.modelMatrix))&&(e._mode=n,e._modelMatrix=X.clone(e.modelMatrix),e._createVertexArray=!0)}function tJ(e){if(e._polylinesRemoved){e._polylinesRemoved=!1;let t=[],n=[],i=0,o,r=e._polylines.length;for(let s=0;s<r;++s)o=e._polylines[s],o.isDestroyed||(o._index=i++,n.push(o),t.push(o));e._polylines=t,e._polylinesToUpdate=n}}function nJ(e){let t=e._polylines,n=t.length;for(let i=0;i<n;++i)if(!t[i].isDestroyed){let o=t[i]._bucket;l(o)&&(o.shaderProgram=o.shaderProgram&&o.shaderProgram.destroy())}}function Jue(e){let t=e._vertexArrays.length;for(let n=0;n<t;++n)e._vertexArrays[n].va.destroy();e._vertexArrays.length=0}Xh.prototype._updatePolyline=function(e,t){this._polylinesUpdated=!0,e._dirty||this._polylinesToUpdate.push(e),++this._propertiesChanged[t]};function jue(e){let t=e._polylines,n=t.length;for(let i=0;i<n;++i)t[i].isDestroyed||t[i]._destroy()}function $K(e,t,n){this.count=e,this.offset=t,this.bucket=n}function tp(e,t,n){this.polylines=[],this.lengthOfPositions=0,this.material=e,this.shaderProgram=void 0,this.mode=t,this.modelMatrix=n}tp.prototype.addPolyline=function(e){this.polylines.push(e),e._actualLength=this.getPolylinePositionsLength(e),this.lengthOfPositions+=e._actualLength,e._bucket=this};tp.prototype.updateShader=function(e,t,n){if(l(this.shaderProgram))return;let i=["DISTANCE_DISPLAY_CONDITION"];n&&i.push("VECTOR_TILE"),this.material.shaderSource.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&i.push("POLYLINE_DASH"),Ht.isInternetExplorer()||i.push("CLIP_POLYLINE");let o=new Oe({defines:i,sources:[`in vec4 v_pickColor; +`,this.material.shaderSource,dC]}),r=t.getVertexShaderCallback()(r2),s=new Oe({defines:i,sources:[Md,r]});this.shaderProgram=ln.fromCache({context:e,vertexShaderSource:s,fragmentShaderSource:o,attributeLocations:ud})};function que(e){return m.dot(m.UNIT_X,e._boundingVolume.center)<0||e._boundingVolume.intersectPlane(An.ORIGIN_ZX_PLANE)===on.INTERSECTING}tp.prototype.getPolylinePositionsLength=function(e){let t;if(this.mode===re.SCENE3D||!que(e))return t=e._actualPositions.length,t*4-4;let n=0,i=e._segments.lengths;t=i.length;for(let o=0;o<t;++o)n+=i[o]*4-4;return n};var Ks=new m,um=new m,mm=new m,zQ=new m,F4e=new ce,P4e=new D;tp.prototype.write=function(e,t,n,i,o,r,s,a){let c=this.mode,d=a.ellipsoid.maximumRadius*Z.PI,u=this.polylines,h=u.length;for(let p=0;p<h;++p){let g=u[p],f=g.width,b=g.show&&f>0,x=g._index,I=this.getSegments(g,a),_=I.positions,E=I.lengths,S=_.length,R=g.getPickId(s).color,G=0,B=0,w;for(let Q=0;Q<S;++Q){Q===0?g._loop?w=_[S-2]:(w=zQ,m.subtract(_[0],_[1],w),m.add(_[0],w,w)):w=_[Q-1],m.clone(w,um),m.clone(_[Q],Ks),Q===S-1?g._loop?w=_[1]:(w=zQ,m.subtract(_[S-1],_[S-2],w),m.add(_[S-1],w,w)):w=_[Q+1],m.clone(w,mm);let N=E[G];Q===B+N&&(B+=N,++G);let k=Q-B===0,v=Q===B+E[G]-1;c===re.SCENE2D&&(um.z=0,Ks.z=0,mm.z=0),(c===re.SCENE2D||c===re.MORPHING)&&(k||v)&&d-Math.abs(Ks.x)<1&&((Ks.x<0&&um.x>0||Ks.x>0&&um.x<0)&&m.clone(Ks,um),(Ks.x<0&&mm.x>0||Ks.x>0&&mm.x<0)&&m.clone(Ks,mm));let O=k?2:0,H=v?2:4;for(let ee=O;ee<H;++ee){ni.writeElements(Ks,e,n),ni.writeElements(um,e,n+6),ni.writeElements(mm,e,n+12);let K=ee-2<0?-1:1;t[o]=Q/(S-1),t[o+1]=2*(ee%2)-1,t[o+2]=K,t[o+3]=x,n+=18,o+=4}}let F=F4e;F.x=U.floatToByte(R.red),F.y=U.floatToByte(R.green),F.z=U.floatToByte(R.blue),F.w=U.floatToByte(R.alpha);let P=P4e;P.x=f,P.y=b?1:0;let A=c===re.SCENE2D?g._boundingVolume2D:g._boundingVolumeWC,T=ni.fromCartesian(A.center,Hue),L=T.high,V=ce.fromElements(T.low.x,T.low.y,T.low.z,A.radius,zue),W=Kue;W.x=0,W.y=Number.MAX_VALUE;let M=g.distanceDisplayCondition;l(M)&&(W.x=M.near,W.y=M.far),r.setBatchedAttribute(x,0,P),r.setBatchedAttribute(x,1,F),r.attributes.length>2&&(r.setBatchedAttribute(x,2,L),r.setBatchedAttribute(x,3,V),r.setBatchedAttribute(x,4,W))}};var M4e=new m,v4e=new m,N4e=new m,Uue=new m;tp.prototype.writeForMorph=function(e,t){let n=this.modelMatrix,i=this.polylines,o=i.length;for(let r=0;r<o;++r){let s=i[r],a=s._segments.positions,c=s._segments.lengths,d=a.length,u=0,h=0;for(let p=0;p<d;++p){let g;p===0?s._loop?g=a[d-2]:(g=Uue,m.subtract(a[0],a[1],g),m.add(a[0],g,g)):g=a[p-1],g=X.multiplyByPoint(n,g,v4e);let f=X.multiplyByPoint(n,a[p],M4e),b;p===d-1?s._loop?b=a[1]:(b=Uue,m.subtract(a[d-1],a[d-2],b),m.add(a[d-1],b,b)):b=a[p+1],b=X.multiplyByPoint(n,b,N4e);let x=c[u];p===h+x&&(h+=x,++u);let I=p-h===0,_=p===h+c[u]-1,E=I?2:0,S=_?2:4;for(let R=E;R<S;++R)ni.writeElements(f,e,t),ni.writeElements(g,e,t+6),ni.writeElements(b,e,t+12),t+=18}}};var D4e=new Array(1);tp.prototype.updateIndices=function(e,t,n,i){let o=n.length-1,r=new $K(0,i,this);n[o].push(r);let s=0,a=e[e.length-1],c=0;a.length>0&&(c=a[a.length-1]+1);let d=this.polylines,u=d.length;for(let h=0;h<u;++h){let p=d[h];p._locatorBuckets=[];let g;if(this.mode===re.SCENE3D){g=D4e;let b=p._actualPositions.length;if(b>0)g[0]=b;else continue}else g=p._segments.lengths;let f=g.length;if(f>0){let b=0;for(let x=0;x<f;++x){let I=g[x]-1;for(let _=0;_<I;++_)c+4>Z.SIXTY_FOUR_KILOBYTES&&(p._locatorBuckets.push({locator:r,count:b}),b=0,t.push(4),a=[],e.push(a),c=0,r.count=s,s=0,i=0,r=new $K(0,0,this),n[++o]=[r]),a.push(c,c+2,c+1),a.push(c+1,c+2,c+3),b+=6,s+=6,i+=6,c+=4}p._locatorBuckets.push({locator:r,count:b}),c+4>Z.SIXTY_FOUR_KILOBYTES&&(t.push(0),a=[],e.push(a),c=0,r.count=s,i=0,s=0,r=new $K(0,0,this),n[++o]=[r])}p._clean()}return r.count=s,i};tp.prototype.getPolylineStartIndex=function(e){let t=this.polylines,n=0,i=t.length;for(let o=0;o<i;++o){let r=t[o];if(r===e)break;n+=r._actualLength}return n};var fT={positions:void 0,lengths:void 0},kue=new Array(1),Q4e=new m,U4e=new ge;tp.prototype.getSegments=function(e,t){let n=e._actualPositions;if(this.mode===re.SCENE3D)return kue[0]=n.length,fT.positions=n,fT.lengths=kue,fT;que(e)&&(n=e._segments.positions);let i=t.ellipsoid,o=[],r=this.modelMatrix,s=n.length,a,c=Q4e;for(let d=0;d<s;++d)a=n[d],c=X.multiplyByPoint(r,a,c),o.push(t.project(i.cartesianToCartographic(c,U4e)));if(o.length>0){e._boundingVolume2D=ue.fromPoints(o,e._boundingVolume2D);let d=e._boundingVolume2D.center;e._boundingVolume2D.center=new m(d.z,d.x,d.y)}return fT.positions=o,fT.lengths=e._segments.lengths,fT};var Yue;tp.prototype.writeUpdate=function(e,t,n,i){let o=this.mode,r=i.ellipsoid.maximumRadius*Z.PI,s=t._actualLength;if(s){e+=this.getPolylineStartIndex(t);let a=Yue,c=6*s*3;!l(a)||a.length<c?a=Yue=new Float32Array(c):a.length>c&&(a=new Float32Array(a.buffer,0,c));let d=this.getSegments(t,i),u=d.positions,h=d.lengths,p=0,g=0,f=0,b;s=u.length;for(let x=0;x<s;++x){x===0?t._loop?b=u[s-2]:(b=zQ,m.subtract(u[0],u[1],b),m.add(u[0],b,b)):b=u[x-1],m.clone(b,um),m.clone(u[x],Ks),x===s-1?t._loop?b=u[1]:(b=zQ,m.subtract(u[s-1],u[s-2],b),m.add(u[s-1],b,b)):b=u[x+1],m.clone(b,mm);let I=h[g];x===f+I&&(f+=I,++g);let _=x-f===0,E=x===f+h[g]-1;o===re.SCENE2D&&(um.z=0,Ks.z=0,mm.z=0),(o===re.SCENE2D||o===re.MORPHING)&&(_||E)&&r-Math.abs(Ks.x)<1&&((Ks.x<0&&um.x>0||Ks.x>0&&um.x<0)&&m.clone(Ks,um),(Ks.x<0&&mm.x>0||Ks.x>0&&mm.x<0)&&m.clone(Ks,mm));let S=_?2:0,R=E?2:4;for(let G=S;G<R;++G)ni.writeElements(Ks,a,p),ni.writeElements(um,a,p+6),ni.writeElements(mm,a,p+12),p+=18}n.copyFromArrayView(a,18*Float32Array.BYTES_PER_ELEMENT*e)}};var Wh=Xh;function g0(e){this._positions=e.positions,this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._rectangle=e.rectangle,this._minHeight=e.minimumHeight,this._maxHeight=e.maximumHeight,this._heightReference=e.heightReference,this._billboardCollection=new qd({batchTable:e.batchTable,scene:e.scene}),this._labelCollection=new ep({batchTable:e.batchTable,scene:e.scene}),this._polylineCollection=new Wh,this._polylineCollection._useHighlightColor=!0,this._packedBuffer=void 0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(g0.prototype,{ready:{get:function(){return this._ready}},pointsLength:{get:function(){return this._billboardCollection.length}},texturesByteLength:{get:function(){let e=this._billboardCollection.sizeInBytes,t=this._labelCollection.sizeInBytes;return e+t}}});function k4e(e,t){let n=e._rectangle,i=e._minHeight,o=e._maxHeight,r=2+le.packedLength+ie.packedLength,s=new Float64Array(r),a=0;return s[a++]=i,s[a++]=o,le.pack(n,s,a),a+=le.packedLength,ie.pack(t,s,a),s}var Y4e=new hi("createVectorTilePoints",5),O4e=new m;function H4e(e,t){let n=e._positions,i=e._packedBuffer;l(i)||(n=e._positions=n.slice(),e._batchIds=e._batchIds.slice(),i=e._packedBuffer=k4e(e,t));let o=[n.buffer,i.buffer],r={positions:n.buffer,packedBuffer:i.buffer},s=Y4e.scheduleTask(r,o);if(l(s))return s.then(a=>{if(e.isDestroyed())return;e._positions=new Float64Array(a.positions);let c=e._billboardCollection,d=e._labelCollection,u=e._polylineCollection;n=e._positions;let h=e._batchIds,p=n.length/3,g=e._heightReference??et.NONE;for(let f=0;f<p;++f){let b=h[f],x=m.unpack(n,f*3,O4e),I=c.add();I.position=x,I._batchIndex=b,I.heightReference=g;let _=d.add();_.text=" ",_.position=x,_._batchIndex=b,_.heightReference=g;let E=u.add();E.positions=[m.clone(x),m.clone(x)]}e._positions=void 0,e._packedBuffer=void 0,e._ready=!0}).catch(a=>{e.isDestroyed()||(e._error=a)})}g0.prototype.createFeatures=function(e,t){let n=this._billboardCollection,i=this._labelCollection,o=this._polylineCollection,r=this._batchIds,s=r.length;for(let a=0;a<s;++a){let c=r[a],d=n.get(a),u=i.get(a),h=o.get(a);t[c]=new jA(e,c,d,u,h)}};g0.prototype.applyDebugSettings=function(e,t){e?(U.clone(t,this._billboardCollection._highlightColor),U.clone(t,this._labelCollection._highlightColor),U.clone(t,this._polylineCollection._highlightColor)):(U.clone(U.WHITE,this._billboardCollection._highlightColor),U.clone(U.WHITE,this._labelCollection._highlightColor),U.clone(U.WHITE,this._polylineCollection._highlightColor))};function z4e(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.pointSize=jA.defaultPointSize,s.color=jA.defaultColor,s.pointOutlineColor=jA.defaultPointOutlineColor,s.pointOutlineWidth=jA.defaultPointOutlineWidth,s.labelColor=U.WHITE,s.labelOutlineColor=U.WHITE,s.labelOutlineWidth=1,s.font="30px sans-serif",s.labelStyle=nr.FILL,s.labelText=void 0,s.backgroundColor=new U(.165,.165,.165,.8),s.backgroundPadding=new D(7,5),s.backgroundEnabled=!1,s.scaleByDistance=void 0,s.translucencyByDistance=void 0,s.distanceDisplayCondition=void 0,s.heightOffset=0,s.anchorLineEnabled=!1,s.anchorLineColor=U.WHITE,s.image=void 0,s.disableDepthTestDistance=0,s.horizontalOrigin=wi.CENTER,s.verticalOrigin=kn.CENTER,s.labelHorizontalOrigin=wi.RIGHT,s.labelVerticalOrigin=kn.BASELINE}}var K4e=new U,J4e=new U,j4e=new U,q4e=new U,$4e=new U,eje=new U,l2=new zt,d2=new zt,iJ=new Qt;g0.prototype.applyStyle=function(e,t){if(!l(e)){z4e(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];if(l(e.show)&&(s.show=e.show.evaluate(s)),l(e.pointSize)&&(s.pointSize=e.pointSize.evaluate(s)),l(e.color)&&(s.color=e.color.evaluateColor(s,K4e)),l(e.pointOutlineColor)&&(s.pointOutlineColor=e.pointOutlineColor.evaluateColor(s,J4e)),l(e.pointOutlineWidth)&&(s.pointOutlineWidth=e.pointOutlineWidth.evaluate(s)),l(e.labelColor)&&(s.labelColor=e.labelColor.evaluateColor(s,j4e)),l(e.labelOutlineColor)&&(s.labelOutlineColor=e.labelOutlineColor.evaluateColor(s,q4e)),l(e.labelOutlineWidth)&&(s.labelOutlineWidth=e.labelOutlineWidth.evaluate(s)),l(e.font)&&(s.font=e.font.evaluate(s)),l(e.labelStyle)&&(s.labelStyle=e.labelStyle.evaluate(s)),l(e.labelText)?s.labelText=e.labelText.evaluate(s):s.labelText=void 0,l(e.backgroundColor)&&(s.backgroundColor=e.backgroundColor.evaluateColor(s,$4e)),l(e.backgroundPadding)&&(s.backgroundPadding=e.backgroundPadding.evaluate(s)),l(e.backgroundEnabled)&&(s.backgroundEnabled=e.backgroundEnabled.evaluate(s)),l(e.scaleByDistance)){let a=e.scaleByDistance.evaluate(s);l(a)?(l2.near=a.x,l2.nearValue=a.y,l2.far=a.z,l2.farValue=a.w,s.scaleByDistance=l2):s.scaleByDistance=void 0}else s.scaleByDistance=void 0;if(l(e.translucencyByDistance)){let a=e.translucencyByDistance.evaluate(s);l(a)?(d2.near=a.x,d2.nearValue=a.y,d2.far=a.z,d2.farValue=a.w,s.translucencyByDistance=d2):s.translucencyByDistance=void 0}else s.translucencyByDistance=void 0;if(l(e.distanceDisplayCondition)){let a=e.distanceDisplayCondition.evaluate(s);l(a)?(iJ.near=a.x,iJ.far=a.y,s.distanceDisplayCondition=iJ):s.distanceDisplayCondition=void 0}else s.distanceDisplayCondition=void 0;l(e.heightOffset)&&(s.heightOffset=e.heightOffset.evaluate(s)),l(e.anchorLineEnabled)&&(s.anchorLineEnabled=e.anchorLineEnabled.evaluate(s)),l(e.anchorLineColor)&&(s.anchorLineColor=e.anchorLineColor.evaluateColor(s,eje)),l(e.image)?s.image=e.image.evaluate(s):s.image=void 0,l(e.disableDepthTestDistance)&&(s.disableDepthTestDistance=e.disableDepthTestDistance.evaluate(s)),l(e.horizontalOrigin)&&(s.horizontalOrigin=e.horizontalOrigin.evaluate(s)),l(e.verticalOrigin)&&(s.verticalOrigin=e.verticalOrigin.evaluate(s)),l(e.labelHorizontalOrigin)&&(s.labelHorizontalOrigin=e.labelHorizontalOrigin.evaluate(s)),l(e.labelVerticalOrigin)&&(s.labelVerticalOrigin=e.labelVerticalOrigin.evaluate(s))}};g0.prototype.update=function(e){if(!this._ready&&(l(this._promise)||(this._promise=H4e(this,e.mapProjection.ellipsoid)),l(this._error))){let t=this._error;throw this._error=void 0,t}this._polylineCollection.update(e),this._billboardCollection.update(e),this._labelCollection.update(e)};g0.prototype.isDestroyed=function(){return!1};g0.prototype.destroy=function(){return this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),this._labelCollection=this._labelCollection&&this._labelCollection.destroy(),this._polylineCollection=this._polylineCollection&&this._polylineCollection.destroy(),me(this)};var u2=g0;var d3n=y(C(),1);function eg(e){this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._positions=e.positions,this._counts=e.counts,this._indices=e.indices,this._indexCounts=e.indexCounts,this._indexOffsets=void 0,this._batchTableColors=void 0,this._packedBuffer=void 0,this._batchedPositions=void 0,this._transferrableBatchIds=void 0,this._vertexBatchIds=void 0,this._ellipsoid=e.ellipsoid??ie.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._polygonMinimumHeights=e.polygonMinimumHeights,this._polygonMaximumHeights=e.polygonMaximumHeights,this._center=e.center??m.ZERO,this._rectangle=e.rectangle,this._center=void 0,this._boundingVolume=e.boundingVolume,this._boundingVolumes=void 0,this._batchedIndices=void 0,this._ready=!1,this._promise=void 0,this._error=void 0,this._primitive=void 0,this.debugWireframe=!1,this.forceRebatch=!1,this.classificationType=$n.BOTH}Object.defineProperties(eg.prototype,{trianglesLength:{get:function(){return l(this._primitive)?this._primitive.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._primitive)?this._primitive.geometryByteLength:0}},ready:{get:function(){return this._ready}}});function tje(e){let t=new Float64Array(3+m.packedLength+ie.packedLength+le.packedLength),n=0;return t[n++]=e._indices.BYTES_PER_ELEMENT,t[n++]=e._minimumHeight,t[n++]=e._maximumHeight,m.pack(e._center,t,n),n+=m.packedLength,ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,le.pack(e._rectangle,t,n),t}function nje(e,t){let n=1,i=t[n++],o=e._boundingVolumes=new Array(i);for(let a=0;a<i;++a)o[a]=vn.unpack(t,n),n+=vn.packedLength;let r=t[n++],s=e._batchedIndices=new Array(r);for(let a=0;a<r;++a){let c=U.unpack(t,n);n+=U.packedLength;let d=t[n++],u=t[n++],h=t[n++],p=new Array(h);for(let g=0;g<h;++g)p[g]=t[n++];s[a]=new Nf({color:c,offset:d,count:u,batchIds:p})}}var ije=new hi("createVectorTilePolygons",5),oje=new U;function rje(e){if(l(e._primitive))return;let t=e._positions,n=e._counts,i=e._indexCounts,o=e._indices,r=e._transferrableBatchIds,s=e._batchTableColors,a=e._packedBuffer;if(!l(s)){t=e._positions=e._positions.slice(),n=e._counts=e._counts.slice(),i=e._indexCounts=e._indexCounts.slice(),o=e._indices=e._indices.slice(),e._center=e._ellipsoid.cartographicToCartesian(le.center(e._rectangle)),r=e._transferrableBatchIds=new Uint32Array(e._batchIds),s=e._batchTableColors=new Uint32Array(r.length);let g=e._batchTable,f=s.length;for(let b=0;b<f;++b){let x=g.getColor(b,oje);s[b]=x.toRgba()}a=e._packedBuffer=tje(e)}let c=[t.buffer,n.buffer,i.buffer,o.buffer,r.buffer,s.buffer,a.buffer],d={packedBuffer:a.buffer,positions:t.buffer,counts:n.buffer,indexCounts:i.buffer,indices:o.buffer,batchIds:r.buffer,batchTableColors:s.buffer},u=e._polygonMinimumHeights,h=e._polygonMaximumHeights;l(u)&&l(h)&&(u=u.slice(),h=h.slice(),c.push(u.buffer,h.buffer),d.minimumHeights=u,d.maximumHeights=h);let p=ije.scheduleTask(d,c);if(l(p))return p.then(g=>{if(e.isDestroyed())return;e._positions=void 0,e._counts=void 0,e._polygonMinimumHeights=void 0,e._polygonMaximumHeights=void 0;let f=new Float64Array(g.packedBuffer),b=f[0];nje(e,f),e._indices=Me.getSizeInBytes(b)===2?new Uint16Array(g.indices):new Uint32Array(g.indices),e._indexOffsets=new Uint32Array(g.indexOffsets),e._indexCounts=new Uint32Array(g.indexCounts),e._batchedPositions=new Float32Array(g.positions),e._vertexBatchIds=new Uint16Array(g.batchIds),sje(e),e._ready=!0}).catch(g=>{e.isDestroyed()||(e._error=g)})}function sje(e){l(e._primitive)||(e._primitive=new GC({batchTable:e._batchTable,positions:e._batchedPositions,batchIds:e._batchIds,vertexBatchIds:e._vertexBatchIds,indices:e._indices,indexOffsets:e._indexOffsets,indexCounts:e._indexCounts,batchedIndices:e._batchedIndices,boundingVolume:e._boundingVolume,boundingVolumes:e._boundingVolumes,center:e._center}),e._batchTable=void 0,e._batchIds=void 0,e._positions=void 0,e._counts=void 0,e._indices=void 0,e._indexCounts=void 0,e._indexOffsets=void 0,e._batchTableColors=void 0,e._packedBuffer=void 0,e._batchedPositions=void 0,e._transferrableBatchIds=void 0,e._vertexBatchIds=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._polygonMinimumHeights=void 0,e._polygonMaximumHeights=void 0,e._center=void 0,e._rectangle=void 0,e._boundingVolume=void 0,e._boundingVolumes=void 0,e._batchedIndices=void 0)}eg.prototype.createFeatures=function(e,t){this._primitive.createFeatures(e,t)};eg.prototype.applyDebugSettings=function(e,t){this._primitive.applyDebugSettings(e,t)};eg.prototype.applyStyle=function(e,t){this._primitive.applyStyle(e,t)};eg.prototype.updateCommands=function(e,t){this._primitive.updateCommands(e,t)};eg.prototype.update=function(e){if(!this._ready){if(l(this._promise)||(this._promise=rje(this)),l(this._error)){let t=this._error;throw this._error=void 0,t}return}this._primitive.debugWireframe=this.debugWireframe,this._primitive.forceRebatch=this.forceRebatch,this._primitive.classificationType=this.classificationType,this._primitive.update(e)};eg.prototype.isDestroyed=function(){return!1};eg.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),me(this)};var m2=eg;var P3n=y(C(),1);var m3n=y(C(),1),h2=`in vec4 currentPosition; +in vec4 previousPosition; +in vec4 nextPosition; +in vec2 expandAndWidth; +in float a_batchId; + +uniform mat4 u_modifiedModelView; + +void main() +{ + float expandDir = expandAndWidth.x; + float width = abs(expandAndWidth.y) + 0.5; + bool usePrev = expandAndWidth.y < 0.0; + + vec4 p = u_modifiedModelView * currentPosition; + vec4 prev = u_modifiedModelView * previousPosition; + vec4 next = u_modifiedModelView * nextPosition; + + float angle; + vec4 positionWC = getPolylineWindowCoordinatesEC(p, prev, next, expandDir, width, usePrev, angle); + gl_Position = czm_viewportOrthographic * positionWC; +} +`;function Fh(e){this._positions=e.positions,this._widths=e.widths,this._counts=e.counts,this._batchIds=e.batchIds,this._ellipsoid=e.ellipsoid??ie.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._center=e.center,this._rectangle=e.rectangle,this._boundingVolume=e.boundingVolume,this._batchTable=e.batchTable,this._va=void 0,this._sp=void 0,this._rs=void 0,this._uniformMap=void 0,this._command=void 0,this._transferrableBatchIds=void 0,this._packedBuffer=void 0,this._keepDecodedPositions=e.keepDecodedPositions,this._decodedPositions=void 0,this._decodedPositionOffsets=void 0,this._currentPositions=void 0,this._previousPositions=void 0,this._nextPositions=void 0,this._expandAndWidth=void 0,this._vertexBatchIds=void 0,this._indices=void 0,this._constantColor=U.clone(U.WHITE),this._highlightColor=this._constantColor,this._trianglesLength=0,this._geometryByteLength=0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(Fh.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}}});function aje(e){let t=e._rectangle,n=e._minimumHeight,i=e._maximumHeight,o=e._ellipsoid,r=e._center,s=2+le.packedLength+ie.packedLength+m.packedLength,a=new Float64Array(s),c=0;return a[c++]=n,a[c++]=i,le.pack(t,a,c),c+=le.packedLength,ie.pack(o,a,c),c+=ie.packedLength,m.pack(r,a,c),a}var cje=new hi("createVectorTilePolylines",5),pT={previousPosition:0,currentPosition:1,nextPosition:2,expandAndWidth:3,a_batchId:4};function lje(e,t){if(l(e._va))return;let n=e._positions,i=e._widths,o=e._counts,r=e._transferrableBatchIds,s=e._packedBuffer;l(s)||(n=e._positions=n.slice(),i=e._widths=i.slice(),o=e._counts=o.slice(),r=e._transferrableBatchIds=e._batchIds.slice(),s=e._packedBuffer=aje(e));let a=[n.buffer,i.buffer,o.buffer,r.buffer,s.buffer],c={positions:n.buffer,widths:i.buffer,counts:o.buffer,batchIds:r.buffer,packedBuffer:s.buffer,keepDecodedPositions:e._keepDecodedPositions},d=cje.scheduleTask(c,a);if(l(d))return d.then(function(u){if(e.isDestroyed())return;e._keepDecodedPositions&&(e._decodedPositions=new Float64Array(u.decodedPositions),e._decodedPositionOffsets=new Uint32Array(u.decodedPositionOffsets)),e._currentPositions=new Float32Array(u.currentPositions),e._previousPositions=new Float32Array(u.previousPositions),e._nextPositions=new Float32Array(u.nextPositions),e._expandAndWidth=new Float32Array(u.expandAndWidth),e._vertexBatchIds=new Uint16Array(u.batchIds);let h=u.indexDatatype;e._indices=h===Me.UNSIGNED_SHORT?new Uint16Array(u.indices):new Uint32Array(u.indices),dje(e,t),e._ready=!0}).catch(u=>{e.isDestroyed()||(e._error=u)})}function dje(e,t){if(!l(e._va)){let n=e._currentPositions,i=e._previousPositions,o=e._nextPositions,r=e._expandAndWidth,s=e._vertexBatchIds,a=e._indices,c=i.byteLength+n.byteLength+o.byteLength;c+=r.byteLength+s.byteLength+a.byteLength,e._trianglesLength=a.length/3,e._geometryByteLength=c;let d=It.createVertexBuffer({context:t,typedArray:i,usage:Ne.STATIC_DRAW}),u=It.createVertexBuffer({context:t,typedArray:n,usage:Ne.STATIC_DRAW}),h=It.createVertexBuffer({context:t,typedArray:o,usage:Ne.STATIC_DRAW}),p=It.createVertexBuffer({context:t,typedArray:r,usage:Ne.STATIC_DRAW}),g=It.createVertexBuffer({context:t,typedArray:s,usage:Ne.STATIC_DRAW}),f=It.createIndexBuffer({context:t,typedArray:a,usage:Ne.STATIC_DRAW,indexDatatype:a.BYTES_PER_ELEMENT===2?Me.UNSIGNED_SHORT:Me.UNSIGNED_INT}),b=[{index:pT.previousPosition,vertexBuffer:d,componentDatatype:J.FLOAT,componentsPerAttribute:3},{index:pT.currentPosition,vertexBuffer:u,componentDatatype:J.FLOAT,componentsPerAttribute:3},{index:pT.nextPosition,vertexBuffer:h,componentDatatype:J.FLOAT,componentsPerAttribute:3},{index:pT.expandAndWidth,vertexBuffer:p,componentDatatype:J.FLOAT,componentsPerAttribute:2},{index:pT.a_batchId,vertexBuffer:g,componentDatatype:J.UNSIGNED_SHORT,componentsPerAttribute:1}];e._va=new ui({context:t,attributes:b,indexBuffer:f}),e._positions=void 0,e._widths=void 0,e._counts=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._rectangle=void 0,e._transferrableBatchIds=void 0,e._packedBuffer=void 0,e._currentPositions=void 0,e._previousPositions=void 0,e._nextPositions=void 0,e._expandAndWidth=void 0,e._vertexBatchIds=void 0,e._indices=void 0}}var f2=new X,$ue=new m;function uje(e,t){l(e._uniformMap)||(e._uniformMap={u_modifiedModelView:function(){let n=t.uniformState.view;return X.clone(n,f2),X.multiplyByPoint(f2,e._center,$ue),X.setTranslation(f2,$ue,f2),f2},u_highlightColor:function(){return e._highlightColor}})}function mje(e){if(l(e._rs))return;let t={enabled:!0,factor:-5,units:-5};e._rs=Qe.fromCache({blending:bn.ALPHA_BLEND,depthMask:!1,depthTest:{enabled:!0},polygonOffset:t})}var hje=`uniform vec4 u_highlightColor; +void main() +{ + out_FragColor = u_highlightColor; +} +`;function fje(e,t){if(l(e._sp))return;let n=e._batchTable,i=n.getVertexShaderCallback(!1,"a_batchId",void 0)(h2),o=n.getFragmentShaderCallback(!1,void 0,!1)(hje),r=new Oe({defines:["VECTOR_TILE",Ht.isInternetExplorer()?"":"CLIP_POLYLINE"],sources:[Md,i]}),s=new Oe({defines:["VECTOR_TILE"],sources:[o]});e._sp=ln.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:pT})}function pje(e,t){if(!l(e._command)){let n=e._batchTable.getUniformMapCallback()(e._uniformMap);e._command=new ot({owner:e,vertexArray:e._va,renderState:e._rs,shaderProgram:e._sp,uniformMap:n,boundingVolume:e._boundingVolume,pass:Ge.TRANSLUCENT,pickId:e._batchTable.getPickId()})}t.commandList.push(e._command)}Fh.getPolylinePositions=function(e,t){let n=e._batchIds,i=e._decodedPositions,o=e._decodedPositionOffsets;if(!l(n)||!l(i))return;let r,s,a=n.length,c=0,d=0;for(r=0;r<a;++r)n[r]===t&&(c+=o[r+1]-o[r]);if(c===0)return;let u=new Float64Array(c*3);for(r=0;r<a;++r)if(n[r]===t){let h=o[r],p=o[r+1]-h;for(s=0;s<p;++s){let g=(h+s)*3;u[d++]=i[g],u[d++]=i[g+1],u[d++]=i[g+2]}}return u};Fh.prototype.getPositions=function(e){return Fh.getPolylinePositions(this,e)};Fh.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new ma(e,r)}};Fh.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function Aje(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.color=U.WHITE}}var gje=new U,bje=U.WHITE,yje=!0;Fh.prototype.applyStyle=function(e,t){if(!l(e)){Aje(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.color=l(e.color)?e.color.evaluateColor(s,gje):bje,s.show=l(e.show)?e.show.evaluate(s):yje}};Fh.prototype.update=function(e){let t=e.context;if(!this._ready){if(l(this._promise)||(this._promise=lje(this,t)),l(this._error)){let i=this._error;throw this._error=void 0,i}return}uje(this,t),fje(this,t),mje(this);let n=e.passes;(n.render||n.pick)&&pje(this,e)};Fh.prototype.isDestroyed=function(){return!1};Fh.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),me(this)};var bx=Fh;var IOn=y(C(),1);var v3n=y(C(),1),p2=`in vec3 startEllipsoidNormal; +in vec3 endEllipsoidNormal; +in vec4 startPositionAndHeight; +in vec4 endPositionAndHeight; +in vec4 startFaceNormalAndVertexCorner; +in vec4 endFaceNormalAndHalfWidth; +in float a_batchId; + +uniform mat4 u_modifiedModelView; +uniform vec2 u_minimumMaximumVectorHeights; + +out vec4 v_startPlaneEC; +out vec4 v_endPlaneEC; +out vec4 v_rightPlaneEC; +out float v_halfWidth; +out vec3 v_volumeUpEC; + +void main() +{ + // vertex corner IDs + // 3-----------7 + // /| left /| + // / | 1 / | + // 2-----------6 5 end + // | / | / + // start |/ right |/ + // 0-----------4 + // + float isEnd = floor(startFaceNormalAndVertexCorner.w * 0.251); // 0 for front, 1 for end + float isTop = floor(startFaceNormalAndVertexCorner.w * mix(0.51, 0.19, isEnd)); // 0 for bottom, 1 for top + + vec3 forward = endPositionAndHeight.xyz - startPositionAndHeight.xyz; + vec3 right = normalize(cross(forward, startEllipsoidNormal)); + + vec4 position = vec4(startPositionAndHeight.xyz, 1.0); + position.xyz += forward * isEnd; + + v_volumeUpEC = czm_normal * normalize(cross(right, forward)); + + // Push for volume height + float offset; + vec3 ellipsoidNormal = mix(startEllipsoidNormal, endEllipsoidNormal, isEnd); + + // offset height to create volume + offset = mix(startPositionAndHeight.w, endPositionAndHeight.w, isEnd); + offset = mix(u_minimumMaximumVectorHeights.y, u_minimumMaximumVectorHeights.x, isTop) - offset; + position.xyz += offset * ellipsoidNormal; + + // move from RTC to EC + position = u_modifiedModelView * position; + right = czm_normal * right; + + // Push for width in a direction that is in the start or end plane and in a plane with right + // N = normalEC ("right-facing" direction for push) + // R = right + // p = angle between N and R + // w = distance to push along R if R == N + // d = distance to push along N + // + // N R + // { p| } * cos(p) = dot(N, R) = w / d + // d | |w * d = w / dot(N, R) + // { | } + // o---------- polyline segment ----> + // + vec3 scratchNormal = mix(-startFaceNormalAndVertexCorner.xyz, endFaceNormalAndHalfWidth.xyz, isEnd); + scratchNormal = cross(scratchNormal, mix(startEllipsoidNormal, endEllipsoidNormal, isEnd)); + vec3 miterPushNormal = czm_normal * normalize(scratchNormal); + + offset = 2.0 * endFaceNormalAndHalfWidth.w * max(0.0, czm_metersPerPixel(position)); // offset = widthEC + offset = offset / dot(miterPushNormal, right); + position.xyz += miterPushNormal * (offset * sign(0.5 - mod(startFaceNormalAndVertexCorner.w, 2.0))); + + gl_Position = czm_depthClamp(czm_projection * position); + + position = u_modifiedModelView * vec4(startPositionAndHeight.xyz, 1.0); + vec3 startNormalEC = czm_normal * startFaceNormalAndVertexCorner.xyz; + v_startPlaneEC = vec4(startNormalEC, -dot(startNormalEC, position.xyz)); + v_rightPlaneEC = vec4(right, -dot(right, position.xyz)); + + position = u_modifiedModelView * vec4(endPositionAndHeight.xyz, 1.0); + vec3 endNormalEC = czm_normal * endFaceNormalAndHalfWidth.xyz; + v_endPlaneEC = vec4(endNormalEC, -dot(endNormalEC, position.xyz)); + v_halfWidth = endFaceNormalAndHalfWidth.w; +} +`;var D3n=y(C(),1),A2=`in vec4 v_startPlaneEC; +in vec4 v_endPlaneEC; +in vec4 v_rightPlaneEC; +in float v_halfWidth; +in vec3 v_volumeUpEC; + +uniform vec4 u_highlightColor; +void main() +{ + float logDepthOrDepth = czm_branchFreeTernary(czm_sceneMode == czm_sceneMode2D, gl_FragCoord.z, czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw))); + + // Discard for sky + if (logDepthOrDepth == 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(0.0, 0.0, 1.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + eyeCoordinate /= eyeCoordinate.w; + + float halfMaxWidth = v_halfWidth * czm_metersPerPixel(eyeCoordinate); + + // Expand halfMaxWidth if direction to camera is almost perpendicular with the volume's up direction + halfMaxWidth += halfMaxWidth * (1.0 - dot(-normalize(eyeCoordinate.xyz), v_volumeUpEC)); + + // Check distance of the eye coordinate against the right-facing plane + float widthwiseDistance = czm_planeDistance(v_rightPlaneEC, eyeCoordinate.xyz); + + // Check eye coordinate against the mitering planes + float distanceFromStart = czm_planeDistance(v_startPlaneEC, eyeCoordinate.xyz); + float distanceFromEnd = czm_planeDistance(v_endPlaneEC, eyeCoordinate.xyz); + + if (abs(widthwiseDistance) > halfMaxWidth || distanceFromStart < 0.0 || distanceFromEnd < 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(logDepthOrDepth, 0.0, 0.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + out_FragColor = u_highlightColor; + + czm_writeDepthClamp(); +} +`;function tg(e){this._positions=e.positions,this._widths=e.widths,this._counts=e.counts,this._batchIds=e.batchIds,this._ellipsoid=e.ellipsoid??ie.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._center=e.center,this._rectangle=e.rectangle,this._batchTable=e.batchTable,this._va=void 0,this._sp=void 0,this._rs=void 0,this._uniformMap=void 0,this._command=void 0,this._transferrableBatchIds=void 0,this._packedBuffer=void 0,this._minimumMaximumVectorHeights=new D(Si._defaultMinTerrainHeight,Si._defaultMaxTerrainHeight),this._boundingVolume=vn.fromRectangle(e.rectangle,Si._defaultMinTerrainHeight,Si._defaultMaxTerrainHeight,this._ellipsoid),this._classificationType=e.classificationType,this._keepDecodedPositions=e.keepDecodedPositions,this._decodedPositions=void 0,this._decodedPositionOffsets=void 0,this._startEllipsoidNormals=void 0,this._endEllipsoidNormals=void 0,this._startPositionAndHeights=void 0,this._startFaceNormalAndVertexCornerIds=void 0,this._endPositionAndHeights=void 0,this._endFaceNormalAndHalfWidths=void 0,this._vertexBatchIds=void 0,this._indices=void 0,this._constantColor=U.clone(U.WHITE),this._highlightColor=this._constantColor,this._trianglesLength=0,this._geometryByteLength=0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(tg.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}}});function Cje(e,t,n){let i=Si.getMinimumMaximumHeights(t,n),o=i.minimumTerrainHeight,r=i.maximumTerrainHeight,s=e._minimumMaximumVectorHeights;s.x=o,s.y=r;let a=e._boundingVolume,c=e._rectangle;vn.fromRectangle(c,o,r,n,a)}function xje(e){let t=e._rectangle,n=e._minimumHeight,i=e._maximumHeight,o=e._ellipsoid,r=e._center,s=2+le.packedLength+ie.packedLength+m.packedLength,a=new Float64Array(s),c=0;return a[c++]=n,a[c++]=i,le.pack(t,a,c),c+=le.packedLength,ie.pack(o,a,c),c+=ie.packedLength,m.pack(r,a,c),a}var Ije=new hi("createVectorTileClampedPolylines"),b0={startEllipsoidNormal:0,endEllipsoidNormal:1,startPositionAndHeight:2,endPositionAndHeight:3,startFaceNormalAndVertexCorner:4,endFaceNormalAndHalfWidth:5,a_batchId:6};function _je(e,t){if(l(e._va))return;let n=e._positions,i=e._widths,o=e._counts,r=e._transferrableBatchIds,s=e._packedBuffer;l(s)||(n=e._positions=n.slice(),i=e._widths=i.slice(),o=e._counts=o.slice(),r=e._transferrableBatchIds=e._batchIds.slice(),s=e._packedBuffer=xje(e));let a=[n.buffer,i.buffer,o.buffer,r.buffer,s.buffer],c={positions:n.buffer,widths:i.buffer,counts:o.buffer,batchIds:r.buffer,packedBuffer:s.buffer,keepDecodedPositions:e._keepDecodedPositions},d=Ije.scheduleTask(c,a);if(l(d))return d.then(function(u){if(e.isDestroyed())return;e._keepDecodedPositions&&(e._decodedPositions=new Float64Array(u.decodedPositions),e._decodedPositionOffsets=new Uint32Array(u.decodedPositionOffsets)),e._startEllipsoidNormals=new Float32Array(u.startEllipsoidNormals),e._endEllipsoidNormals=new Float32Array(u.endEllipsoidNormals),e._startPositionAndHeights=new Float32Array(u.startPositionAndHeights),e._startFaceNormalAndVertexCornerIds=new Float32Array(u.startFaceNormalAndVertexCornerIds),e._endPositionAndHeights=new Float32Array(u.endPositionAndHeights),e._endFaceNormalAndHalfWidths=new Float32Array(u.endFaceNormalAndHalfWidths),e._vertexBatchIds=new Uint16Array(u.vertexBatchIds);let h=u.indexDatatype;e._indices=h===Me.UNSIGNED_SHORT?new Uint16Array(u.indices):new Uint32Array(u.indices),Eje(e,t),e._ready=!0}).catch(u=>{e.isDestroyed()||(e._error=u)})}function Eje(e,t){if(!l(e._va)){let n=e._startEllipsoidNormals,i=e._endEllipsoidNormals,o=e._startPositionAndHeights,r=e._endPositionAndHeights,s=e._startFaceNormalAndVertexCornerIds,a=e._endFaceNormalAndHalfWidths,c=e._vertexBatchIds,d=e._indices,u=n.byteLength+i.byteLength;u+=o.byteLength+r.byteLength,u+=s.byteLength+a.byteLength,u+=c.byteLength+d.byteLength,e._trianglesLength=d.length/3,e._geometryByteLength=u;let h=It.createVertexBuffer({context:t,typedArray:n,usage:Ne.STATIC_DRAW}),p=It.createVertexBuffer({context:t,typedArray:i,usage:Ne.STATIC_DRAW}),g=It.createVertexBuffer({context:t,typedArray:o,usage:Ne.STATIC_DRAW}),f=It.createVertexBuffer({context:t,typedArray:r,usage:Ne.STATIC_DRAW}),b=It.createVertexBuffer({context:t,typedArray:s,usage:Ne.STATIC_DRAW}),x=It.createVertexBuffer({context:t,typedArray:a,usage:Ne.STATIC_DRAW}),I=It.createVertexBuffer({context:t,typedArray:c,usage:Ne.STATIC_DRAW}),_=It.createIndexBuffer({context:t,typedArray:d,usage:Ne.STATIC_DRAW,indexDatatype:d.BYTES_PER_ELEMENT===2?Me.UNSIGNED_SHORT:Me.UNSIGNED_INT}),E=[{index:b0.startEllipsoidNormal,vertexBuffer:h,componentDatatype:J.FLOAT,componentsPerAttribute:3},{index:b0.endEllipsoidNormal,vertexBuffer:p,componentDatatype:J.FLOAT,componentsPerAttribute:3},{index:b0.startPositionAndHeight,vertexBuffer:g,componentDatatype:J.FLOAT,componentsPerAttribute:4},{index:b0.endPositionAndHeight,vertexBuffer:f,componentDatatype:J.FLOAT,componentsPerAttribute:4},{index:b0.startFaceNormalAndVertexCorner,vertexBuffer:b,componentDatatype:J.FLOAT,componentsPerAttribute:4},{index:b0.endFaceNormalAndHalfWidth,vertexBuffer:x,componentDatatype:J.FLOAT,componentsPerAttribute:4},{index:b0.a_batchId,vertexBuffer:I,componentDatatype:J.UNSIGNED_SHORT,componentsPerAttribute:1}];e._va=new ui({context:t,attributes:E,indexBuffer:_}),e._positions=void 0,e._widths=void 0,e._counts=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._rectangle=void 0,e._transferrableBatchIds=void 0,e._packedBuffer=void 0,e._startEllipsoidNormals=void 0,e._endEllipsoidNormals=void 0,e._startPositionAndHeights=void 0,e._startFaceNormalAndVertexCornerIds=void 0,e._endPositionAndHeights=void 0,e._endFaceNormalAndHalfWidths=void 0,e._vertexBatchIds=void 0,e._indices=void 0}}var g2=new X,eme=new m;function Tje(e,t){l(e._uniformMap)||(e._uniformMap={u_modifiedModelView:function(){let n=t.uniformState.view;return X.clone(n,g2),X.multiplyByPoint(g2,e._center,eme),X.setTranslation(g2,eme,g2),g2},u_highlightColor:function(){return e._highlightColor},u_minimumMaximumVectorHeights:function(){return e._minimumMaximumVectorHeights}})}function tme(e){return Qe.fromCache({cull:{enabled:!0,face:Xi.FRONT},blending:bn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1,stencilTest:{enabled:e,frontFunction:ei.EQUAL,frontOperation:{fail:Ct.KEEP,zFail:Ct.KEEP,zPass:Ct.KEEP},backFunction:ei.EQUAL,backOperation:{fail:Ct.KEEP,zFail:Ct.KEEP,zPass:Ct.KEEP},reference:jt.CESIUM_3D_TILE_MASK,mask:jt.CESIUM_3D_TILE_MASK}})}function Sje(e){l(e._rs)||(e._rs=tme(!1),e._rs3DTiles=tme(!0))}function Lje(e,t){if(l(e._sp))return;let n=e._batchTable,i=n.getVertexShaderCallback(!1,"a_batchId",void 0)(p2),o=n.getFragmentShaderCallback(!1,void 0,!0)(A2),r=new Oe({defines:["VECTOR_TILE",Ht.isInternetExplorer()?"":"CLIP_POLYLINE"],sources:[Md,i]}),s=new Oe({defines:["VECTOR_TILE"],sources:[o]});e._sp=ln.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:b0})}function Rje(e,t){let n=e._command;if(!l(e._command)){let o=e._batchTable.getUniformMapCallback()(e._uniformMap);n=e._command=new ot({owner:e,vertexArray:e._va,renderState:e._rs,shaderProgram:e._sp,uniformMap:o,boundingVolume:e._boundingVolume,pass:Ge.TERRAIN_CLASSIFICATION,pickId:e._batchTable.getPickId()});let r=ot.shallowClone(n,n.derivedCommands.tileset);r.renderState=e._rs3DTiles,r.pass=Ge.CESIUM_3D_TILE_CLASSIFICATION,n.derivedCommands.tileset=r}let i=e._classificationType;(i===$n.TERRAIN||i===$n.BOTH)&&t.commandList.push(n),(i===$n.CESIUM_3D_TILE||i===$n.BOTH)&&t.commandList.push(n.derivedCommands.tileset)}tg.prototype.getPositions=function(e){return bx.getPolylinePositions(this,e)};tg.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new ma(e,r)}};tg.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function Vje(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.color=U.WHITE}}var Gje=new U,Zje=U.WHITE,Bje=!0;tg.prototype.applyStyle=function(e,t){if(!l(e)){Vje(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.color=l(e.color)?e.color.evaluateColor(s,Gje):Zje,s.show=l(e.show)?e.show.evaluate(s):Bje}};function wje(e){return Si.initialize().then(function(){Cje(e,e._rectangle,e._ellipsoid)}).catch(t=>{e.isDestroyed()||(e._error=t)})}tg.prototype.update=function(e){let t=e.context;if(!this._ready){if(l(this._promise)||(this._promise=wje(this).then(_je(this,t))),l(this._error)){let i=this._error;throw this._error=void 0,i}return}Tje(this,t),Lje(this,t),Sje(this);let n=e.passes;(n.render||n.pick)&&Rje(this,e)};tg.prototype.isDestroyed=function(){return!1};tg.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),me(this)};var b2=tg;var ROn=y(C(),1);var oJ=32767,Xje=new ge,Wje=new m;function Fje(e,t,n,i,o){let r=e.length/3,s=e.subarray(0,r),a=e.subarray(r,2*r),c=e.subarray(2*r,3*r);Mn.zigZagDeltaDecode(s,a,c);let d=new Float64Array(e.length);for(let u=0;u<r;++u){let h=s[u],p=a[u],g=c[u],f=Z.lerp(t.west,t.east,h/oJ),b=Z.lerp(t.south,t.north,p/oJ),x=Z.lerp(n,i,g/oJ),I=ge.fromRadians(f,b,x,Xje),_=o.cartographicToCartesian(I,Wje);m.pack(_,d,u*3)}return d}var y2=Fje;function Mh(e,t,n,i,o){this._tileset=e,this._tile=t,this._resource=n,this._polygons=void 0,this._polylines=void 0,this._points=void 0,this._metadata=void 0,this._batchTable=void 0,this._features=void 0,this.featurePropertiesDirty=!1,this._group=void 0,this._ready=!1,Dje(this,i,o)}Object.defineProperties(Mh.prototype,{featuresLength:{get:function(){return l(this._batchTable)?this._batchTable.featuresLength:0}},pointsLength:{get:function(){return l(this._points)?this._points.pointsLength:0}},trianglesLength:{get:function(){let e=0;return l(this._polygons)&&(e+=this._polygons.trianglesLength),l(this._polylines)&&(e+=this._polylines.trianglesLength),e}},geometryByteLength:{get:function(){let e=0;return l(this._polygons)&&(e+=this._polygons.geometryByteLength),l(this._polylines)&&(e+=this._polylines.geometryByteLength),e}},texturesByteLength:{get:function(){return l(this._points)?this._points.texturesByteLength:0}},batchTableByteLength:{get:function(){return l(this._batchTable)?this._batchTable.batchTableByteLength:0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},batchTable:{get:function(){return this._batchTable}},group:{get:function(){return this._group},set:function(e){this._group=e}}});function Pje(e){return function(t,n){l(e._polygons)&&e._polygons.updateCommands(t,n)}}function Mje(e,t){let n,i,o,r,s=e.POLYGONS_LENGTH??0,a=e.POLYLINES_LENGTH??0,c=e.POINTS_LENGTH??0;if(s>0&&l(e.POLYGON_BATCH_IDS)){let p=t.byteOffset+e.POLYGON_BATCH_IDS.byteOffset;n=new Uint16Array(t.buffer,p,s)}if(a>0&&l(e.POLYLINE_BATCH_IDS)){let p=t.byteOffset+e.POLYLINE_BATCH_IDS.byteOffset;i=new Uint16Array(t.buffer,p,a)}if(c>0&&l(e.POINT_BATCH_IDS)){let p=t.byteOffset+e.POINT_BATCH_IDS.byteOffset;o=new Uint16Array(t.buffer,p,c)}let d=l(n)||l(i)||l(o),u=s>0&&!l(n)||a>0&&!l(i)||c>0&&!l(o);if(d&&u)throw new de("If one group of batch ids is defined, then all batch ids must be defined");if(!l(n)&&!l(i)&&!l(o)){let p=0;if(!l(n)&&s>0)for(n=new Uint16Array(s),r=0;r<s;++r)n[r]=p++;if(!l(i)&&a>0)for(i=new Uint16Array(a),r=0;r<a;++r)i[r]=p++;if(!l(o)&&c>0)for(o=new Uint16Array(c),r=0;r<c;++r)o[r]=p++}return{polygons:n,polylines:i,points:o}}var Ph=Uint32Array.BYTES_PER_ELEMENT;function vje(e){return new bx(e)}function Nje(e){return new b2(e)}function Dje(e,t,n){n=n??0;let i=new Uint8Array(t),o=new DataView(t);n+=Ph;let r=o.getUint32(n,!0);if(r!==1)throw new de(`Only Vector tile version 1 is supported. Version ${r} is not.`);n+=Ph;let s=o.getUint32(n,!0);if(n+=Ph,s===0){e._ready=!0;return}let a=o.getUint32(n,!0);if(n+=Ph,a===0)throw new de("Feature table must have a byte length greater than zero");let c=o.getUint32(n,!0);n+=Ph;let d=o.getUint32(n,!0);n+=Ph;let u=o.getUint32(n,!0);n+=Ph;let h=o.getUint32(n,!0);n+=Ph;let p=o.getUint32(n,!0);n+=Ph;let g=o.getUint32(n,!0);n+=Ph;let f=o.getUint32(n,!0);n+=Ph;let b=mr(i,n,a);n+=a;let x=new Uint8Array(t,n,c);n+=c;let I,_;d>0&&(I=mr(i,n,d),n+=d,u>0&&(_=new Uint8Array(t,n,u),_=new Uint8Array(_),n+=u));let E=b.POLYGONS_LENGTH??0,S=b.POLYLINES_LENGTH??0,R=b.POINTS_LENGTH??0,G=E+S+R,B=new bA(e,G,I,_,Pje(e));if(e._batchTable=B,G===0)return;let w=new Sh(b,x),F=w.getGlobalProperty("REGION");if(!l(F))throw new de("Feature table global property: REGION must be defined");let P=le.unpack(F),A=F[4],T=F[5],L=e._tile.computedTransform,V=w.getGlobalProperty("RTC_CENTER",J.FLOAT,3);l(V)?(V=m.unpack(V),X.multiplyByPoint(L,V,V)):(V=le.center(P),V.height=Z.lerp(A,T,.5),V=ie.WGS84.cartographicToCartesian(V));let W=Mje(b,x);if(n+=(4-n%4)%4,E>0){w.featuresLength=E;let Q=w.getPropertyArray("POLYGON_COUNTS",J.UNSIGNED_INT,1)??w.getPropertyArray("POLYGON_COUNT",J.UNSIGNED_INT,1);if(!l(Q))throw new de("Feature table property: POLYGON_COUNTS must be defined when POLYGONS_LENGTH is greater than 0");let N=w.getPropertyArray("POLYGON_INDEX_COUNTS",J.UNSIGNED_INT,1)??w.getPropertyArray("POLYGON_INDEX_COUNT",J.UNSIGNED_INT,1);if(!l(N))throw new de("Feature table property: POLYGON_INDEX_COUNTS must be defined when POLYGONS_LENGTH is greater than 0");let k=Q.reduce(function(te,q){return te+q*2},0),v=N.reduce(function(te,q){return te+q},0),O=new Uint32Array(t,n,v);n+=h;let H=new Uint16Array(t,n,k);n+=p;let ee,K;l(b.POLYGON_MINIMUM_HEIGHTS)&&l(b.POLYGON_MAXIMUM_HEIGHTS)&&(ee=w.getPropertyArray("POLYGON_MINIMUM_HEIGHTS",J.FLOAT,1),K=w.getPropertyArray("POLYGON_MAXIMUM_HEIGHTS",J.FLOAT,1)),e._polygons=new m2({positions:H,counts:Q,indexCounts:N,indices:O,minimumHeight:A,maximumHeight:T,polygonMinimumHeights:ee,polygonMaximumHeights:K,center:V,rectangle:P,boundingVolume:e.tile.boundingVolume.boundingVolume,batchTable:B,batchIds:W.polygons,modelMatrix:L})}let M=e._tileset;if(S>0){w.featuresLength=S;let Q=w.getPropertyArray("POLYLINE_COUNTS",J.UNSIGNED_INT,1)??w.getPropertyArray("POLYLINE_COUNT",J.UNSIGNED_INT,1);if(!l(Q))throw new de("Feature table property: POLYLINE_COUNTS must be defined when POLYLINES_LENGTH is greater than 0");let N=w.getPropertyArray("POLYLINE_WIDTHS",J.UNSIGNED_SHORT,1);if(!l(N)){N=new Uint16Array(S);for(let ee=0;ee<S;++ee)N[ee]=2}let k=Q.reduce(function(ee,K){return ee+K*3},0),v=new Uint16Array(t,n,k);n+=g;let O=M.examineVectorLinesFunction;if(l(O)){let ee=y2(new Uint16Array(v),P,A,T,ie.WGS84);Qje(ee,Q,W.polylines,B,e.url,O)}let H=vje;l(M.classificationType)&&(H=Nje),e._polylines=H({positions:v,widths:N,counts:Q,batchIds:W.polylines,minimumHeight:A,maximumHeight:T,center:V,rectangle:P,boundingVolume:e.tile.boundingVolume.boundingVolume,batchTable:B,classificationType:M.classificationType,keepDecodedPositions:M.vectorKeepDecodedPositions})}if(R>0){let Q=new Uint16Array(t,n,R*3);n+=f,e._points=new u2({positions:Q,batchIds:W.points,minimumHeight:A,maximumHeight:T,rectangle:P,batchTable:B,heightReference:M.heightReference,scene:M.scene})}}function rJ(e){let t=e.featuresLength;if(!l(e._features)&&t>0){let n=new Array(t);l(e._polygons)&&e._polygons.createFeatures(e,n),l(e._polylines)&&e._polylines.createFeatures(e,n),l(e._points)&&e._points.createFeatures(e,n),e._features=n}}Mh.prototype.hasProperty=function(e,t){return this._batchTable.hasProperty(e,t)};Mh.prototype.getFeature=function(e){return l(this._features)||rJ(this),this._features[e]};Mh.prototype.applyDebugSettings=function(e,t){l(this._polygons)&&this._polygons.applyDebugSettings(e,t),l(this._polylines)&&this._polylines.applyDebugSettings(e,t),l(this._points)&&this._points.applyDebugSettings(e,t)};Mh.prototype.applyStyle=function(e){l(this._features)||rJ(this),l(this._polygons)&&this._polygons.applyStyle(e,this._features),l(this._polylines)&&this._polylines.applyStyle(e,this._features),l(this._points)&&this._points.applyStyle(e,this._features)};Mh.prototype.update=function(e,t){let n=!0;l(this._polygons)&&(this._polygons.classificationType=this._tileset.classificationType,this._polygons.debugWireframe=this._tileset.debugWireframe,this._polygons.update(t),n=n&&this._polygons.ready),l(this._polylines)&&(this._polylines.update(t),n=n&&this._polylines.ready),l(this._points)&&(this._points.update(t),n=n&&this._points.ready),l(this._batchTable)&&n&&(l(this._features)||rJ(this),this._batchTable.update(e,t),this._ready=!0)};Mh.prototype.pick=function(e,t,n){};Mh.prototype.getPolylinePositions=function(e){let t=this._polylines;if(l(t))return t.getPositions(e)};Mh.prototype.isDestroyed=function(){return!1};Mh.prototype.destroy=function(){return this._polygons=this._polygons&&this._polygons.destroy(),this._polylines=this._polylines&&this._polylines.destroy(),this._points=this._points&&this._points.destroy(),this._batchTable=this._batchTable&&this._batchTable.destroy(),me(this)};function Qje(e,t,n,i,o,r){let s=t.length,a=0;for(let c=0;c<s;c++){let d=t[c]*3,u=e.slice(a,a+d);a+=d,r(u,n[c],o,i)}}var C2=Mh;var czn=y(C(),1);var jHn=y(C(),1);var $On=y(C(),1);function Qa(){}Qa._maxSortingConcurrency=Math.max(Ht.hardwareConcurrency-1,1);Qa._sorterTaskProcessor=void 0;Qa._taskProcessorReady=!1;Qa._error=void 0;Qa._getSorterTaskProcessor=function(){if(!l(Qa._sorterTaskProcessor)){let e=new hi("gaussianSplatSorter",Qa._maxSortingConcurrency);e.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/wasm_splats_bg.wasm"}).then(function(t){t?Qa._taskProcessorReady=!0:Qa._error=new de("Gaussian splat sorter could not be initialized.")}).catch(t=>{Qa._error=t}),Qa._sorterTaskProcessor=e}return Qa._sorterTaskProcessor};Qa.radixSortIndexes=function(e){let t=Qa._getSorterTaskProcessor();if(l(Qa._error))throw Qa._error;if(Qa._taskProcessorReady)return t.scheduleTask(e,[e.primitive.positions.buffer])};var AT=Qa;var rHn=y(C(),1);function Ua(){}Ua._maxSortingConcurrency=Math.max(Ht.hardwareConcurrency-1,1);Ua._textureTaskProcessor=void 0;Ua._taskProcessorReady=!1;Ua._error=void 0;Ua._getTextureTaskProcessor=function(){if(!l(Ua._textureTaskProcessor)){let e=new hi("gaussianSplatTextureGenerator",Ua._maxSortingConcurrency);e.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/wasm_splats_bg.wasm"}).then(function(t){t?Ua._taskProcessorReady=!0:Ua._error=new de("Gaussian splat sorter could not be initialized.")}).catch(t=>{Ua._error=t}),Ua._textureTaskProcessor=e}return Ua._textureTaskProcessor};Ua.generateFromAttributes=function(e){let t=Ua._getTextureTaskProcessor();if(l(Ua._error))throw Ua._error;if(!Ua._taskProcessorReady)return;let{attributes:n}=e;return t.scheduleTask(e,[n.positions.buffer,n.scales.buffer,n.rotations.buffer,n.colors.buffer])};var x2=Ua;var mHn=y(C(),1);function Uje(e){let t=new OA;this.shaderBuilder=t,this.uniformMap={},this.renderStateOptions=Qe.getState(Qe.fromCache({depthTest:{enabled:!0,func:Fa.LESS_OR_EQUAL}})),this.alphaOptions=new lx,this.hasSkipLevelOfDetail=!1,e._useLogDepth&&t.addDefine("LOG_DEPTH_READ_ONLY",void 0,be.FRAGMENT)}var I2=Uje;var fHn=y(C(),1),_2=`// +// Vertex shader for Gaussian splats. + +// The splats are rendered as quads in view space. Splat attributes are loaded from a texture with precomputed 3D covariance. + +// Passes local quad coordinates and color to the fragment shader for Gaussian evaluation. +// +// Discards splats outside the view frustum or with negligible screen size. +// + +// Transforms and projects splat covariance into screen space and extracts the major and minor axes of the Gaussian ellipsoid +// which is used to calculate the vertex position in clip space. +vec4 calcCovVectors(vec3 viewPos, mat3 Vrk) { + vec4 t = vec4(viewPos, 1.0); + float focal = czm_viewport.z * czm_projection[0][0]; + + float J1 = focal / t.z; + vec2 J2 = -J1 / t.z * t.xy; + mat3 J = mat3( + J1, 0.0, J2.x, + 0.0, J1, J2.y, + 0.0, 0.0, 0.0 + ); + + mat3 R = mat3(czm_modelView); + + //transform our covariance into view space + //ensures orientation is correct + mat3 Vrk_view = R * Vrk * transpose(R); + mat3 cov = transpose(J) * Vrk_view * J; + + float diagonal1 = cov[0][0] + .3; + float offDiagonal = cov[0][1]; + float diagonal2 = cov[1][1] + .3; + + float mid = 0.5 * (diagonal1 + diagonal2); + float radius = length(vec2((diagonal1 - diagonal2) * 0.5, offDiagonal)); + float lambda1 = mid + radius; + float lambda2 = max(mid - radius, 0.1); + + vec2 diagonalVector = normalize(vec2(offDiagonal, lambda1 - diagonal1)); + + return vec4( + min(sqrt(2.0 * lambda1), 1024.0) * diagonalVector, + min(sqrt(2.0 * lambda2), 1024.0) * vec2(diagonalVector.y, -diagonalVector.x) + ); +} + +highp vec4 discardVec = vec4(0.0, 0.0, 2.0, 1.0); + +void main() { + uint texIdx = uint(a_splatIndex); + ivec2 posCoord = ivec2((texIdx & 0x3ffu) << 1, texIdx >> 10); + vec4 splatPosition = vec4( uintBitsToFloat(uvec4(texelFetch(u_splatAttributeTexture, posCoord, 0))) ); + + vec4 splatViewPos = czm_modelView * vec4(splatPosition.xyz, 1.0); + vec4 clipPosition = czm_projection * splatViewPos; + + float clip = 1.2 * clipPosition.w; + if (clipPosition.z < -clip || clipPosition.x < -clip || clipPosition.x > clip || + clipPosition.y < -clip || clipPosition.y > clip) { + gl_Position = vec4(0.0, 0.0, 2.0, 1.0); + return; + } + + ivec2 covCoord = ivec2(((texIdx & 0x3ffu) << 1) | 1u, texIdx >> 10); + uvec4 covariance = uvec4(texelFetch(u_splatAttributeTexture, covCoord, 0)); + + gl_Position = clipPosition; + + vec2 u1 = unpackHalf2x16(covariance.x) ; + vec2 u2 = unpackHalf2x16(covariance.y); + vec2 u3 = unpackHalf2x16(covariance.z); + mat3 Vrk = mat3(u1.x, u1.y, u2.x, u1.y, u2.y, u3.x, u2.x, u3.x, u3.y); + + vec4 covVectors = calcCovVectors(splatViewPos.xyz, Vrk); + + if (dot(covVectors.xy, covVectors.xy) < 4.0 && dot(covVectors.zw, covVectors.zw) < 4.0) { + gl_Position = discardVec; + return; + } + + vec2 corner = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2) - 1.; + + gl_Position += vec4((corner.x * covVectors.xy + corner.y * covVectors.zw) / czm_viewport.zw * gl_Position.w, 0, 0); + gl_Position.z = clamp(gl_Position.z, -abs(gl_Position.w), abs(gl_Position.w)); + + v_vertPos = corner ; + v_splatColor = vec4(covariance.w & 0xffu, (covariance.w >> 8) & 0xffu, (covariance.w >> 16) & 0xffu, (covariance.w >> 24) & 0xffu) / 255.0; + + v_splitDirection = u_splitDirection; +}`;var AHn=y(C(),1),E2=`// +// Fragment shader for Gaussian splats. +// Renders a Gaussian splat within a quad, discarding fragments outside the unit circle. +// Applies an approximate Gaussian falloff based on distance from the center and outputs +// a color modulated by the alpha and Gaussian weight. +// +void main() { + if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; + + mediump float A = dot(v_vertPos, v_vertPos); + if(A > 1.0) { + discard; + } + mediump float scale = 4.0; + mediump float B = exp(-A * scale) * (v_splatColor.a); + out_FragColor = vec4(v_splatColor.rgb * B, B); +} +`;var T2=new X,ime=new X,yx=new X,md={IDLE:0,WAITING:1,SORTING:2,SORTED:3,ERROR:4};function nme(e,t){return new Wt({context:e,source:{width:t.width,height:t.height,arrayBufferView:t.data},preMultiplyAlpha:!1,skipColorSpaceConversion:!0,pixelFormat:tt.RGBA_INTEGER,pixelDatatype:Ye.UNSIGNED_INT,flipY:!1,sampler:sn.NEAREST})}function eu(e){e=e??Y.EMPTY_OBJECT,this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,this._numSplats=0,this._needsGaussianSplatTexture=!0,this._prevViewMatrix=new X,this._debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.gaussianSplatTexture=void 0,this._lastTextureWidth=0,this._lastTextureHeight=0,this._vertexArray=void 0,this._vertexArrayLen=-1,this._splitDirection=Ir.NONE,this._dirty=!1,this._tileset=e.tileset,this._baseTilesetUpdate=this._tileset.update,this._tileset.update=this._wrappedUpdate.bind(this),this._tileset.tileLoad.addEventListener(this.onTileLoad,this),this._tileset.tileVisible.addEventListener(this.onTileVisible,this),this.selectedTileLength=0,this._ready=!1,this._hasGaussianSplatTexture=!1,this._gaussianSplatTexturePending=!1,this._drawCommand=void 0,this._rootTransform=void 0,this._axisCorrectionMatrix=Mt.getAxisCorrectionMatrix(ho.Y,ho.X,new X),this._isDestroyed=!1,this._sorterState=md.IDLE,this._sorterPromise=void 0,this._sorterError=void 0}Object.defineProperties(eu.prototype,{ready:{get:function(){return this._ready}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,this._dirty=!0)}}});eu.prototype._wrappedUpdate=function(e){this._baseTilesetUpdate.call(this._tileset,e),this.update(e)};eu.prototype.destroy=function(){this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,l(this.gaussianSplatTexture)&&(this.gaussianSplatTexture.destroy(),this.gaussianSplatTexture=void 0);let e=this._drawCommand;return l(e)&&(e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy()),l(this._vertexArray)&&(this._vertexArray.destroy(),this._vertexArray=void 0),this._tileset.update=this._baseTilesetUpdate.bind(this._tileset),me(this)};eu.prototype.isDestroyed=function(){return this._isDestroyed};eu.prototype.onTileLoad=function(e){this._dirty=!0};eu.prototype.onTileVisible=function(e){};eu.transformTile=function(e){let t=e.computedTransform,n=e.content.splatPrimitive,i=e.tileset.gaussianSplatPrimitive,o=X.multiplyTransformation(t,i._axisCorrectionMatrix,T2);X.multiplyTransformation(o,e.content.worldTransform,o);let r=X.multiply(e.tileset.modelMatrix,X.fromArray(e.tileset.root.transform),ime),s=X.inverse(r,yx),a=X.multiplyTransformation(s,o,T2),c=e.content._originalPositions,d=e.content._originalRotations,u=e.content._originalScales,h=Mt.getAttributeBySemantic(n,lt.POSITION).typedArray,p=Mt.getAttributeBySemantic(n,lt.ROTATION).typedArray,g=Mt.getAttributeBySemantic(n,lt.SCALE).typedArray,f=new m,b=new Pe,x=new m;for(let I=0;I<c.length/3;++I)f.x=c[I*3],f.y=c[I*3+1],f.z=c[I*3+2],b.x=d[I*4],b.y=d[I*4+1],b.z=d[I*4+2],b.w=d[I*4+3],x.x=u[I*3],x.y=u[I*3+1],x.z=u[I*3+2],X.fromTranslationQuaternionRotationScale(f,b,x,yx),X.multiplyTransformation(a,yx,yx),X.getTranslation(yx,f),X.getRotation(yx,b),X.getScale(yx,x),h[I*3]=f.x,h[I*3+1]=f.y,h[I*3+2]=f.z,p[I*4]=b.x,p[I*4+1]=b.y,p[I*4+2]=b.z,p[I*4+3]=b.w,g[I*3]=x.x,g[I*3+1]=x.y,g[I*3+2]=x.z};eu.generateSplatTexture=function(e,t){e._gaussianSplatTexturePending=!0;let n=x2.generateFromAttributes({attributes:{positions:new Float32Array(e._positions),scales:new Float32Array(e._scales),rotations:new Float32Array(e._rotations),colors:new Uint8Array(e._colors)},count:e._numSplats});if(!l(n)){e._gaussianSplatTexturePending=!1;return}n.then(i=>{if(!e._gaussianSplatTexture)e.gaussianSplatTexture=nme(t.context,i);else if(e._lastTextureHeight!==i.height||e._lastTextureWidth!==i.width){let o=e.gaussianSplatTexture;e._gaussianSplatTexture=nme(t.context,i),o.destroy()}else e.gaussianSplatTexture.copyFrom({source:{width:i.width,height:i.height,arrayBufferView:i.data}});e._lastTextureHeight=i.height,e._lastTextureWidth=i.width,e._hasGaussianSplatTexture=!0,e._needsGaussianSplatTexture=!1,e._gaussianSplatTexturePending=!1,(!l(e._indexes)||e._indexes.length<e._numSplats)&&(e._indexes=new Uint32Array(e._numSplats));for(let o=0;o<e._numSplats;++o)e._indexes[o]=o}).catch(i=>{console.error("Error generating Gaussian splat texture:",i),e._gaussianSplatTexturePending=!1})};eu.buildGSplatDrawCommand=function(e,t){let n=e._tileset,i=new I2(e),{shaderBuilder:o}=i,r=i.renderStateOptions;r.cull.enabled=!1,r.depthMask=!1,r.depthTest.enabled=!0,r.blending=bn.PRE_MULTIPLIED_ALPHA_BLEND,i.alphaOptions.pass=Ge.GAUSSIAN_SPLATS,o.addAttribute("vec2","a_screenQuadPosition"),o.addAttribute("float","a_splatIndex"),o.addVarying("vec4","v_splatColor"),o.addVarying("vec2","v_vertPos"),o.addUniform("float","u_splitDirection",be.VERTEX),o.addVarying("float","v_splitDirection"),o.addUniform("highp usampler2D","u_splatAttributeTexture",be.VERTEX);let s=i.uniformMap;s.u_splatAttributeTexture=function(){return e.gaussianSplatTexture},s.u_splitDirection=function(){return e.splitDirection},i.instanceCount=e._numSplats,i.count=4,i.primitiveType=We.TRIANGLE_STRIP,o.addVertexLines(_2),o.addFragmentLines(E2);let a=o.buildShaderProgram(t.context),c=ke(Qe.fromCache(i.renderStateOptions),!0);c.cull.face=Mt.getCullFace(n.modelMatrix,We.TRIANGLE_STRIP),c=Qe.fromCache(c);let d={screenQuadPosition:0,splatIndex:2},u=new Tn.Attribute;if(u.name="_SPLAT_INDEXES",u.typedArray=e._indexes,u.componentDatatype=J.UNSIGNED_INT,u.type=kt.SCALAR,u.normalized=!1,u.count=i.instanceCount,u.constant=0,u.instanceDivisor=1,!l(e._vertexArray)||e._indexes.length>e._vertexArrayLen){let g=new pt({attributes:{screenQuadPosition:new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:[-1,-1,1,-1,1,1,-1,1],name:"_SCREEN_QUAD_POS",variableName:"screenQuadPosition"}),splatIndex:{...u,variableName:"splatIndex"}},primitiveType:We.TRIANGLE_STRIP});e._vertexArray=ui.fromGeometry({context:t.context,geometry:g,attributeLocations:d,bufferUsage:Ne.DYNAMIC_DRAW,interleave:!1})}else e._vertexArray.getAttribute(1).vertexBuffer.copyFromArrayView(e._indexes);e._vertexArrayLen=e._indexes.length;let h=X.multiply(n.modelMatrix,X.fromArray(n.root.transform),ime),p=new ot({boundingVolume:n.boundingSphere,modelMatrix:h,uniformMap:s,renderState:c,vertexArray:e._vertexArray,shaderProgram:a,cull:r.cull.enabled,pass:Ge.GAUSSIAN_SPLATS,count:i.count,owner:this,instanceCount:i.instanceCount,primitiveType:We.TRIANGLE_STRIP,debugShowBoundingVolume:n.debugShowBoundingVolume,castShadows:!1,receiveShadows:!1});e._drawCommand=p};eu.prototype.update=function(e){let t=this._tileset;if(l(this._rootTransform)||(this._rootTransform=t.root.computedTransform),this._drawCommand&&t.show&&e.commandList.push(this._drawCommand),t._modelMatrixChanged){this._dirty=!0;return}if(e.passes.pick!==!0){if(this.splitDirection!==t.splitDirection&&(this.splitDirection=t.splitDirection),this._sorterState===md.IDLE){if(!this._dirty&&X.equals(e.camera.viewMatrix,this._prevViewMatrix))return;if(t._selectedTiles.length!==0&&t._selectedTiles.length!==this.selectedTileLength){this._numSplats=0,this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,this._needsGaussianSplatTexture=!0,this._gaussianSplatTexturePending=!1;let n=t._selectedTiles,i=n.reduce((r,s)=>r+s.content.pointsLength,0),o=(r,s)=>{let a,c=0;for(let d of n){let u=d.content.splatPrimitive,h=s(u);l(a)||(a=J.createTypedArray(r,i*kt.getNumberOfComponents(h.type))),a.set(h.typedArray,c),c+=h.typedArray.length}return a};this._positions=o(J.FLOAT,r=>Mt.getAttributeBySemantic(r,lt.POSITION)),this._scales=o(J.FLOAT,r=>Mt.getAttributeBySemantic(r,lt.SCALE)),this._rotations=o(J.FLOAT,r=>Mt.getAttributeBySemantic(r,lt.ROTATION)),this._colors=o(J.UNSIGNED_BYTE,r=>Mt.getAttributeBySemantic(r,lt.COLOR)),this._numSplats=i,this.selectedTileLength=t._selectedTiles.length}if(this._numSplats===0)return;if(this._needsGaussianSplatTexture){this._gaussianSplatTexturePending||eu.generateSplatTexture(this,e);return}if(X.clone(e.camera.viewMatrix,this._prevViewMatrix),X.multiply(e.camera.viewMatrix,this._rootTransform,T2),l(this._sorterPromise)||(this._sorterPromise=AT.radixSortIndexes({primitive:{positions:new Float32Array(this._positions),modelView:Float32Array.from(T2),count:this._numSplats},sortType:"Index"})),!l(this._sorterPromise)){this._sorterState=md.WAITING;return}this._sorterPromise.catch(n=>{this._sorterState=md.ERROR,this._sorterError=n}),this._sorterPromise.then(n=>{this._indexes=n,this._sorterState=md.SORTED})}else if(this._sorterState===md.WAITING){if(l(this._sorterPromise)||(this._sorterPromise=AT.radixSortIndexes({primitive:{positions:new Float32Array(this._positions),modelView:Float32Array.from(T2),count:this._numSplats},sortType:"Index"})),!l(this._sorterPromise)){this._sorterState=md.WAITING;return}this._sorterPromise.catch(n=>{this._sorterState=md.ERROR,this._sorterError=n}),this._sorterPromise.then(n=>{this._indexes=n,this._sorterState=md.SORTED}),this._sorterState=md.SORTING}else{if(this._sorterState===md.SORTING)return;if(this._sorterState===md.SORTED)eu.buildGSplatDrawCommand(this,e),this._sorterState=md.IDLE,this._dirty=!1,this._sorterPromise=void 0;else if(this._sorterState===md.ERROR)throw this._sorterError}this._dirty=!1}};var gT=eu;function hm(e,t,n,i){this._tileset=t,this._tile=n,this._resource=i,this._loader=e,l(this._tileset.gaussianSplatPrimitive)||(this._tileset.gaussianSplatPrimitive=new gT({tileset:this._tileset})),this._originalPositions=void 0,this._originalRotations=void 0,this._originalScales=void 0,this.splatPrimitive=void 0,this.worldTransform=void 0,this.featurePropertiesDirty=!1,this._metadata=void 0,this._group=void 0,this._ready=!1,this._transformed=!1}Object.defineProperties(hm.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return this.splatPrimitive.attributes[0].count}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return this.splatPrimitive.attributes.reduce((e,t)=>e+t.byteLength,0)}},texturesByteLength:{get:function(){let e=this._tileset.gaussianSplatPrimitive.gaussianSplatTexture,t=this._tileset.gaussianSplatPrimitive.selectedTileLength;return!l(e)||t===0?0:e.sizeInBytes/t}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},transformed:{get:function(){return this._transformed}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});hm.fromGltf=async function(e,t,n,i){let o=n,r=Ve.createIfNeeded(o),s={releaseGltfJson:!1,upAxis:ho.Y,forwardAxis:ho.Z};l(i.asset)?(s.gltfJson=i,s.baseResource=r,s.gltfResource=r):i instanceof Uint8Array?(s.typedArray=i,s.baseResource=r,s.gltfResource=r):s.gltfResource=Ve.createIfNeeded(i);let a=new Od(s);try{await a.load()}catch(c){throw a.destroy(),new de(`Failed to load glTF: ${c.message}`)}return new hm(a,e,t,n)};hm.prototype.update=function(e,t){let n=this._loader;if(this._ready){!this._transformed&&e.root.content.ready&&(gT.transformTile(this._tile),this._transformed=!0);return}if(t.afterRender.push(()=>!0),!l(n)){this._ready=!0;return}if(this._resourcesLoaded){this.splatPrimitive=n.components.scene.nodes[0].primitives[0],this.worldTransform=n.components.scene.nodes[0].matrix,this._ready=!0,this._originalPositions=new Float32Array(Mt.getAttributeBySemantic(this.splatPrimitive,lt.POSITION).typedArray),this._originalRotations=new Float32Array(Mt.getAttributeBySemantic(this.splatPrimitive,lt.ROTATION).typedArray),this._originalScales=new Float32Array(Mt.getAttributeBySemantic(this.splatPrimitive,lt.SCALE).typedArray);return}this._resourcesLoaded=n.process(t)};hm.prototype.hasProperty=function(e,t){return!1};hm.prototype.getFeature=function(e){};hm.prototype.applyDebugSettings=function(e,t){};hm.prototype.applyStyle=function(e){};hm.prototype.pick=function(e,t,n){};hm.prototype.isDestroyed=function(){return this.isDestroyed};hm.prototype.destroy=function(){return this.splatPrimitive=void 0,l(this._tileset.gaussianSplatPrimitive)&&!this._tileset.gaussianSplatPrimitive.isDestroyed()&&this._tileset.gaussianSplatPrimitive.destroy(),this._tileset.gaussianSplatPrimitive=void 0,this._tile=void 0,this._tileset=void 0,this._resource=void 0,this._ready=!1,this._group=void 0,this._metadata=void 0,this._resourcesLoaded=!1,l(this._loader)&&(this._loader.destroy(),this._loader=void 0),me(this)};var bT=hm;var ome={b3dm:function(e,t,n,i,o){return jd.fromB3dm(e,t,n,i,o)},pnts:function(e,t,n,i,o){return jd.fromPnts(e,t,n,i,o)},i3dm:function(e,t,n,i,o){return jd.fromI3dm(e,t,n,i,o)},cmpt:function(e,t,n,i,o){return LZ.fromTileType(e,t,n,i,o,ome)},externalTileset:function(e,t,n,i){return JX.fromJson(e,t,n,i)},geom:function(e,t,n,i,o){return new GZ(e,t,n,i,o)},vctr:function(e,t,n,i,o){return new C2(e,t,n,i,o)},subt:function(e,t,n,i,o){return EE.fromSubtreeJson(e,t,n,void 0,i,o)},subtreeJson:function(e,t,n,i){return EE.fromSubtreeJson(e,t,n,i)},glb:function(e,t,n,i,o){if(i.byteLength<12)throw new de("Invalid glb content");let a=new DataView(i,o).getUint32(8,!0),c=new Uint8Array(i,o,a),d=!1;return e.isGltfExtensionRequired instanceof Function&&(d=e.isGltfExtensionRequired("KHR_spz_gaussian_splats_compression")),d?bT.fromGltf(e,t,n,c):jd.fromGltf(e,t,n,c)},gltf:function(e,t,n,i){let o=e.debugTreatTilesetAsGaussianSplats??!1,r=!1;return e.isGltfExtensionRequired instanceof Function&&(r=e.isGltfExtensionRequired("KHR_spz_gaussian_splats_compression")),o||r?bT.fromGltf(e,t,n,i):jd.fromGltf(e,t,n,i)},geoJson:function(e,t,n,i){return jd.fromGeoJson(e,t,n,i)}},Cx=ome;var Czn=y(C(),1),kje={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,EXPIRED:4,FAILED:5},ir=Object.freeze(kje);var Izn=y(C(),1),vh={BATCHED_3D_MODEL:"b3dm",INSTANCED_3D_MODEL:"i3dm",COMPOSITE:"cmpt",POINT_CLOUD:"pnts",VECTOR:"vctr",GEOMETRY:"geom",GLTF:"gltf",GLTF_BINARY:"glb",IMPLICIT_SUBTREE:"subt",IMPLICIT_SUBTREE_JSON:"subtreeJson",EXTERNAL_TILESET:"externalTileset",MULTIPLE_CONTENT:"multipleContent",GEOJSON:"geoJson",VOXEL_BINARY:"voxl",VOXEL_JSON:"voxelJson"};vh.isBinaryFormat=function(e){switch(e){case vh.BATCHED_3D_MODEL:case vh.INSTANCED_3D_MODEL:case vh.COMPOSITE:case vh.POINT_CLOUD:case vh.VECTOR:case vh.GEOMETRY:case vh.IMPLICIT_SUBTREE:case vh.VOXEL_BINARY:case vh.GLTF_BINARY:return!0;default:return!1}};var Js=Object.freeze(vh);var Ezn=y(C(),1),Yje={NOT_COMPUTED:-1,USE_OPTIMIZATION:1,SKIP_OPTIMIZATION:0},fm=Object.freeze(Yje);var Szn=y(C(),1),ba={RENDER:0,PICK:1,SHADOW:2,PRELOAD:3,PRELOAD_FLIGHT:4,REQUEST_RENDER_MODE_DEFER_CHECK:5,MOST_DETAILED_PRELOAD:6,MOST_DETAILED_PICK:7,NUMBER_OF_PASSES:8},ng=new Array(ba.NUMBER_OF_PASSES);ng[ba.RENDER]=Object.freeze({pass:ba.RENDER,isRender:!0,requestTiles:!0,ignoreCommands:!1});ng[ba.PICK]=Object.freeze({pass:ba.PICK,isRender:!1,requestTiles:!1,ignoreCommands:!1});ng[ba.SHADOW]=Object.freeze({pass:ba.SHADOW,isRender:!1,requestTiles:!0,ignoreCommands:!1});ng[ba.PRELOAD]=Object.freeze({pass:ba.PRELOAD,isRender:!1,requestTiles:!0,ignoreCommands:!0});ng[ba.PRELOAD_FLIGHT]=Object.freeze({pass:ba.PRELOAD_FLIGHT,isRender:!1,requestTiles:!0,ignoreCommands:!0});ng[ba.REQUEST_RENDER_MODE_DEFER_CHECK]=Object.freeze({pass:ba.REQUEST_RENDER_MODE_DEFER_CHECK,isRender:!1,requestTiles:!0,ignoreCommands:!0});ng[ba.MOST_DETAILED_PRELOAD]=Object.freeze({pass:ba.MOST_DETAILED_PRELOAD,isRender:!1,requestTiles:!0,ignoreCommands:!0});ng[ba.MOST_DETAILED_PICK]=Object.freeze({pass:ba.MOST_DETAILED_PICK,isRender:!1,requestTiles:!1,ignoreCommands:!1});ba.getPassOptions=function(e){return ng[e]};var zo=Object.freeze(ba);var Vzn=y(C(),1);function np(e,t){this._tileset=e,this._tile=t,this.featurePropertiesDirty=!1}Object.defineProperties(np.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return!0}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){}},metadata:{get:function(){},set:function(e){}},batchTable:{get:function(){}},group:{get:function(){},set:function(e){}}});np.prototype.hasProperty=function(e,t){return!1};np.prototype.getFeature=function(e){};np.prototype.applyDebugSettings=function(e,t){};np.prototype.applyStyle=function(e){};np.prototype.update=function(e,t){};np.prototype.pick=function(e,t,n){};np.prototype.isDestroyed=function(){return!1};np.prototype.destroy=function(){return me(this)};var yT=np;var Nzn=y(C(),1);var wzn=y(C(),1);function ig(e){e=e??Y.EMPTY_OBJECT;let t=e.content,n=e.class;this._class=n,this._properties=t.properties,this._extensions=t.extensions,this._extras=t.extras}Object.defineProperties(ig.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});ig.prototype.hasProperty=function(e){return Kn.hasProperty(e,this._properties,this._class)};ig.prototype.hasPropertyBySemantic=function(e){return Kn.hasPropertyBySemantic(e,this._properties,this._class)};ig.prototype.getPropertyIds=function(e){return Kn.getPropertyIds(this._properties,this._class,e)};ig.prototype.getProperty=function(e){return Kn.getProperty(e,this._properties,this._class)};ig.prototype.setProperty=function(e,t){return Kn.setProperty(e,t,this._properties,this._class)};ig.prototype.getPropertyBySemantic=function(e){return Kn.getPropertyBySemantic(e,this._properties,this._class)};ig.prototype.setPropertyBySemantic=function(e,t){return Kn.setPropertyBySemantic(e,t,this._properties,this._class)};var S2=ig;function sJ(e,t){let n=Ii(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t.metadata;if(!l(n))return;if(!l(e.schema)){sJ._oneTimeWarning("findContentMetadata-missing-root-schema","Could not find a metadata schema for content metadata. For tilesets that contain external tilesets, make sure the schema is added to the root tileset.json.");return}let i=e.schema.classes??Y.EMPTY_OBJECT;if(l(n.class)){let o=i[n.class];return new S2({content:n,class:o})}}sJ._oneTimeWarning=xt;var xx=sJ;var kzn=y(C(),1);function Oje(e,t){let n=e.metadataExtension;if(!l(n))return;let i=n.groups,o=Ii(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"].group:t.group;if(typeof o=="number")return i[o];let r=n.groupIds.findIndex(function(s){return s===o});return r>=0?i[r]:void 0}var Ix=Oje;var tKn=y(C(),1);var zzn=y(C(),1);function og(e){e=e??Y.EMPTY_OBJECT;let t=e.tile,n=e.class;this._class=n,this._properties=t.properties,this._extensions=t.extensions,this._extras=t.extras}Object.defineProperties(og.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});og.prototype.hasProperty=function(e){return Kn.hasProperty(e,this._properties,this._class)};og.prototype.hasPropertyBySemantic=function(e){return Kn.hasPropertyBySemantic(e,this._properties,this._class)};og.prototype.getPropertyIds=function(e){return Kn.getPropertyIds(this._properties,this._class,e)};og.prototype.getProperty=function(e){return Kn.getProperty(e,this._properties,this._class)};og.prototype.setProperty=function(e,t){return Kn.setProperty(e,t,this._properties,this._class)};og.prototype.getPropertyBySemantic=function(e){return Kn.getPropertyBySemantic(e,this._properties,this._class)};og.prototype.setPropertyBySemantic=function(e,t){return Kn.setPropertyBySemantic(e,t,this._properties,this._class)};var L2=og;function aJ(e,t){let n=Ii(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t.metadata;if(!l(n))return;if(!l(e.schema)){aJ._oneTimeWarning("findTileMetadata-missing-root-schema","Could not find a metadata schema for tile metadata. For tilesets that contain external tilesets, make sure the schema is added to the root tileset.json.");return}let i=e.schema.classes??Y.EMPTY_OBJECT;if(l(n.class)){let o=i[n.class];return new L2({tile:n,class:o})}}aJ._oneTimeWarning=xt;var R2=aJ;var _Kn=y(C(),1);var cKn=y(C(),1);function Hje(e){let t=new Uint8Array(e),n=gh(t);if(n==="glTF"&&(n="glb"),Js.isBinaryFormat(n))return{contentType:n,binaryPayload:t};let i=zje(t);if(l(i.root))return{contentType:Js.EXTERNAL_TILESET,jsonPayload:i};if(l(i.asset))return{contentType:Js.GLTF,jsonPayload:i};if(l(i.tileAvailability))return{contentType:Js.IMPLICIT_SUBTREE_JSON,jsonPayload:i};if(l(i.type))return{contentType:Js.GEOJSON,jsonPayload:i};if(l(i.voxelTable))return{contentType:Js.VOXEL_JSON,jsonPayload:i};throw new de("Invalid tile content.")}function zje(e){let t;try{t=mr(e)}catch{throw new de("Invalid tile content.")}return t}var rg=Hje;function pm(e,t,n,i){this._tileset=e,this._tile=t,this._tilesetResource=n,this._contents=[],this._contentsCreated=!1;let o=l(i.contents)?i.contents:i.content;this._innerContentHeaders=o,this._requestsInFlight=0,this._cancelCount=0,this._externalTilesetCount=0;let r=this._innerContentHeaders.length;this._arrayFetchPromises=new Array(r),this._requests=new Array(r),this._ready=!1,this._innerContentResources=new Array(r),this._serverKeys=new Array(r);for(let s=0;s<r;s++){let a=n.getDerivedResource({url:o[s].uri}),c=Sc.getServerKey(a.getUrlComponent());this._innerContentResources[s]=a,this._serverKeys[s]=c}}Object.defineProperties(pm.prototype,{featurePropertiesDirty:{get:function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)if(e[n].featurePropertiesDirty)return!0;return!1},set:function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].featurePropertiesDirty=e}},featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){return this._contents}},ready:{get:function(){return this._contentsCreated?this._ready:!1}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){}},metadata:{get:function(){},set:function(){}},batchTable:{get:function(){}},group:{get:function(){},set:function(){}},innerContentUrls:{get:function(){return this._innerContentHeaders.map(function(e){return e.uri})}}});function cJ(e,t){e._requestsInFlight+=t,e.tileset.statistics.numberOfPendingRequests+=t}function rme(e,t){e._cancelCount++,e._tile._contentState=t;let n=e.tileset.statistics;n.numberOfPendingRequests-=e._requestsInFlight,n.numberOfAttemptedRequests+=e._requestsInFlight,e._requestsInFlight=0;let i=e._innerContentHeaders.length;e._arrayFetchPromises=new Array(i)}pm.prototype.requestInnerContents=function(){if(!Kje(this._serverKeys)){this.tileset.statistics.numberOfAttemptedRequests+=this._serverKeys.length;return}let e=this._innerContentHeaders;cJ(this,e.length);let t=this._cancelCount;for(let n=0;n<e.length;n++)this._arrayFetchPromises[n]=Jje(this,n,t,this._tile._contentState);return jje(this)};function Kje(e){let t={};for(let n=0;n<e.length;n++){let i=e[n];l(t[i])?t[i]++:t[i]=1}for(let n in t)if(t.hasOwnProperty(n)&&!Sc.serverHasOpenSlots(n,t[n]))return!1;return Sc.heapHasOpenSlots(e.length)}function Jje(e,t,n,i){let o=e._innerContentResources[t].clone(),r=e.tile,s=function(){return r._priority},a=e._serverKeys[t],c=new sr({throttle:!0,throttleByServer:!0,type:Zs.TILES3D,priorityFunction:s,serverKey:a});o.request=c,e._requests[t]=c;let d=o.fetchArrayBuffer();if(l(d))return d.then(function(u){if(!(n<e._cancelCount)){if(o.request.cancelled||o.request.state===mi.CANCELLED){rme(e,i);return}return cJ(e,-1),u}}).catch(function(u){if(!(n<e._cancelCount)){if(o.request.cancelled||o.request.state===mi.CANCELLED){rme(e,i);return}cJ(e,-1),sme(e,t,u)}})}async function jje(e){let t=e._cancelCount,n=await Promise.all(e._arrayFetchPromises);if(t<e._cancelCount)return;let i=n.map((r,s)=>qje(e,r,s)),o=await Promise.all(i);if(e._contentsCreated=!0,e._contents=o.filter(l),e._externalTilesetCount===e._contents.length){let r=e._tile;r.hasRenderableContent=!1}return o}async function qje(e,t,n){if(l(t))try{let i=rg(t),o=e._tileset,r=e._innerContentResources[n],s=e._tile;i.contentType===Js.EXTERNAL_TILESET&&(e._externalTilesetCount++,s.hasTilesetContent=!0),e._disableSkipLevelOfDetail=e._disableSkipLevelOfDetail||i.contentType===Js.GEOMETRY||i.contentType===Js.VECTOR;let a,c=Cx[i.contentType];l(i.binaryPayload)?a=await Promise.resolve(c(o,s,r,i.binaryPayload.buffer,0)):a=await Promise.resolve(c(o,s,r,i.jsonPayload));let d=e._innerContentHeaders[n];if(s.hasImplicitContentMetadata){let h=s.implicitSubtree,p=s.implicitCoordinates;a.metadata=h.getContentMetadataView(p,n)}else s.hasImplicitContent||(a.metadata=xx(o,d));let u=Ix(o,d);return l(u)&&(a.group=new SC({metadata:u})),a}catch(i){sme(e,n,i)}}function sme(e,t,n){let i=e._tileset,o=e._innerContentResources[t].url,r=l(n.message)?n.message:n.toString();i.tileFailed.numberOfListeners>0?i.tileFailed.raiseEvent({url:o,message:r}):(console.log(`A content failed to load: ${o}`),console.log(`Error: ${r}`))}pm.prototype.cancelRequests=function(){for(let e=0;e<this._requests.length;e++){let t=this._requests[e];l(t)&&t.cancel()}};pm.prototype.hasProperty=function(e,t){return!1};pm.prototype.getFeature=function(e){};pm.prototype.applyDebugSettings=function(e,t){let n=this._contents,i=n.length;for(let o=0;o<i;++o)n[o].applyDebugSettings(e,t)};pm.prototype.applyStyle=function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].applyStyle(e)};pm.prototype.update=function(e,t){let n=this._contents,i=n.length,o=!0;for(let r=0;r<i;++r)n[r].update(e,t),o=o&&n[r].ready;!this._ready&&o&&(this._ready=!0)};pm.prototype.pick=function(e,t,n){if(!this._ready)return;let i,o=Number.POSITIVE_INFINITY,r=this._contents,s=r.length;for(let a=0;a<s;++a){let c=r[a].pick(e,t,n);if(!l(c))continue;let d=m.distance(e.origin,c);d<o&&(i=c,o=d)}if(l(i))return n};pm.prototype.isDestroyed=function(){return!1};pm.prototype.destroy=function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return me(this)};var V2=pm;var gJn=y(C(),1);var qKn=y(C(),1);var wKn=y(C(),1);var ame=Math.cos,cme=Math.sin,$je=Math.sqrt,lJ={};lJ.computePosition=function(e,t,n,i,o,r,s){let a=t.radiiSquared,c=e.nwCorner,d=e.boundingRectangle,u=c.latitude-e.granYCos*i+o*e.granXSin,h=ame(u),p=cme(u),g=a.z*p,f=c.longitude+i*e.granYSin+o*e.granXCos,b=h*ame(f),x=h*cme(f),I=a.x*b,_=a.y*x,E=$je(I*b+_*x+g*p);if(r.x=I/E,r.y=_/E,r.z=g/E,n){let S=e.stNwCorner;l(S)?(u=S.latitude-e.stGranYCos*i+o*e.stGranXSin,f=S.longitude+i*e.stGranYSin+o*e.stGranXCos,s.x=(f-e.stWest)*e.lonScalar,s.y=(u-e.stSouth)*e.latScalar):(s.x=(f-d.west)*e.lonScalar,s.y=(u-d.south)*e.latScalar)}};var e8e=new Qi,Am=new m,t8e=new ge,KQ=new m,G2=new Di;function lme(e,t,n,i,o,r,s){let a=Math.cos(t),c=i*a,d=n*a,u=Math.sin(t),h=i*u,p=n*u;G2._ellipsoid=ie.default,Am=G2.project(e,Am),Am=m.subtract(Am,KQ,Am);let g=Qi.fromRotation(t,e8e);Am=Qi.multiplyByVector(g,Am,Am),Am=m.add(Am,KQ,Am),e=G2.unproject(Am,e),r-=1,s-=1;let f=e.latitude,b=f+r*p,x=f-c*s,I=f-c*s+r*p,_=Math.max(f,b,x,I),E=Math.min(f,b,x,I),S=e.longitude,R=S+r*d,G=S+s*h,B=S+s*h+r*d,w=Math.max(S,R,G,B),F=Math.min(S,R,G,B);return{north:_,south:E,east:w,west:F,granYCos:c,granYSin:h,granXCos:d,granXSin:p,nwCorner:e}}lJ.computeOptions=function(e,t,n,i,o,r,s){let a=e.east,c=e.west,d=e.north,u=e.south,h=!1,p=!1;d===Z.PI_OVER_TWO&&(h=!0),u===-Z.PI_OVER_TWO&&(p=!0);let g,f=d-u;c>a?g=Z.TWO_PI-c+a:g=a-c;let b=Math.ceil(g/t)+1,x=Math.ceil(f/t)+1,I=g/(b-1),_=f/(x-1),E=le.northwest(e,r),S=le.center(e,t8e);(n!==0||i!==0)&&(S.longitude<E.longitude&&(S.longitude+=Z.TWO_PI),G2._ellipsoid=ie.default,KQ=G2.project(S,KQ));let R=_,G=I,B=0,w=0,F=le.clone(e,o),P={granYCos:R,granYSin:B,granXCos:G,granXSin:w,nwCorner:E,boundingRectangle:F,width:b,height:x,northCap:h,southCap:p};if(n!==0){let A=lme(E,n,I,_,S,b,x);d=A.north,u=A.south,a=A.east,c=A.west,P.granYCos=A.granYCos,P.granYSin=A.granYSin,P.granXCos=A.granXCos,P.granXSin=A.granXSin,F.north=d,F.south=u,F.east=a,F.west=c}if(i!==0){n=n-i;let A=le.northwest(F,s),T=lme(A,n,I,_,S,b,x);P.stGranYCos=T.granYCos,P.stGranXCos=T.granXCos,P.stGranYSin=T.granYSin,P.stGranXSin=T.granXSin,P.stNwCorner=A,P.stWest=T.west,P.stSouth=T.south}return P};var js=lJ;var n8e=new ue,i8e=new ue,o8e=new m,r8e=new le;function dme(e,t){let n=e._ellipsoid,i=t.height,o=t.width,r=t.northCap,s=t.southCap,a=i,c=2,d=0,u=4;r&&(c-=1,a-=1,d+=1,u-=2),s&&(c-=1,a-=1,d+=1,u-=2),d+=c*o+2*a-u;let h=new Float64Array(d*3),p=0,g=0,f,b=o8e;if(r)js.computePosition(t,n,!1,g,0,b),h[p++]=b.x,h[p++]=b.y,h[p++]=b.z;else for(f=0;f<o;f++)js.computePosition(t,n,!1,g,f,b),h[p++]=b.x,h[p++]=b.y,h[p++]=b.z;for(f=o-1,g=1;g<i;g++)js.computePosition(t,n,!1,g,f,b),h[p++]=b.x,h[p++]=b.y,h[p++]=b.z;if(g=i-1,!s)for(f=o-2;f>=0;f--)js.computePosition(t,n,!1,g,f,b),h[p++]=b.x,h[p++]=b.y,h[p++]=b.z;for(f=0,g=i-2;g>0;g--)js.computePosition(t,n,!1,g,f,b),h[p++]=b.x,h[p++]=b.y,h[p++]=b.z;let x=h.length/3*2,I=Me.createTypedArray(h.length/3,x),_=0;for(let S=0;S<h.length/3-1;S++)I[_++]=S,I[_++]=S+1;I[_++]=h.length/3-1,I[_++]=0;let E=new pt({attributes:new xn,primitiveType:We.LINES});return E.attributes.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:h}),E.indices=I,E}function s8e(e,t){let n=e._surfaceHeight,i=e._extrudedHeight,o=e._ellipsoid,r=dme(e,t),s=t.height,a=t.width,c=_i.scaleToGeodeticHeight(r.attributes.position.values,n,o,!1),d=c.length,u=new Float64Array(d*2);u.set(c);let h=_i.scaleToGeodeticHeight(r.attributes.position.values,i,o);u.set(h,d),r.attributes.position.values=u;let p=t.northCap,g=t.southCap,f=4;p&&(f-=1),g&&(f-=1);let b=(u.length/3+f)*2,x=Me.createTypedArray(u.length/3,b);d=u.length/6;let I=0;for(let E=0;E<d-1;E++)x[I++]=E,x[I++]=E+1,x[I++]=E+d,x[I++]=E+d+1;x[I++]=d-1,x[I++]=0,x[I++]=d+d-1,x[I++]=d,x[I++]=0,x[I++]=d;let _;if(p)_=s-1;else{let E=a-1;x[I++]=E,x[I++]=E+d,_=a+s-2}if(x[I++]=_,x[I++]=_+d,!g){let E=a+_-1;x[I++]=E,x[I]=E+d}return r.indices=x,r}function xT(e){e=e??Y.EMPTY_OBJECT;let t=e.rectangle,n=e.granularity??Z.RADIANS_PER_DEGREE,i=e.ellipsoid??ie.default,o=e.rotation??0,r=e.height??0,s=e.extrudedHeight??r;this._rectangle=le.clone(t),this._granularity=n,this._ellipsoid=i,this._surfaceHeight=Math.max(r,s),this._rotation=o,this._extrudedHeight=Math.min(r,s),this._offsetAttribute=e.offsetAttribute,this._workerName="createRectangleOutlineGeometry"}xT.packedLength=le.packedLength+ie.packedLength+5;xT.pack=function(e,t,n){return n=n??0,le.pack(e._rectangle,t,n),n+=le.packedLength,ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,t[n++]=e._granularity,t[n++]=e._surfaceHeight,t[n++]=e._rotation,t[n++]=e._extrudedHeight,t[n]=e._offsetAttribute??-1,t};var ume=new le,mme=ie.clone(ie.UNIT_SPHERE),CT={rectangle:ume,ellipsoid:mme,granularity:void 0,height:void 0,rotation:void 0,extrudedHeight:void 0,offsetAttribute:void 0};xT.unpack=function(e,t,n){t=t??0;let i=le.unpack(e,t,ume);t+=le.packedLength;let o=ie.unpack(e,t,mme);t+=ie.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],d=e[t];return l(n)?(n._rectangle=le.clone(i,n._rectangle),n._ellipsoid=ie.clone(o,n._ellipsoid),n._surfaceHeight=s,n._rotation=a,n._extrudedHeight=c,n._offsetAttribute=d===-1?void 0:d,n):(CT.granularity=r,CT.height=s,CT.rotation=a,CT.extrudedHeight=c,CT.offsetAttribute=d===-1?void 0:d,new xT(CT))};var a8e=new ge;xT.createGeometry=function(e){let t=e._rectangle,n=e._ellipsoid,i=js.computeOptions(t,e._granularity,e._rotation,0,r8e,a8e),o,r;if(Z.equalsEpsilon(t.north,t.south,Z.EPSILON10)||Z.equalsEpsilon(t.east,t.west,Z.EPSILON10))return;let s=e._surfaceHeight,a=e._extrudedHeight,c=!Z.equalsEpsilon(s,a,0,Z.EPSILON2),d;if(c){if(o=s8e(e,i),l(e._offsetAttribute)){let p=o.attributes.position.values.length/3,g=new Uint8Array(p);e._offsetAttribute===pn.TOP?g=g.fill(1,0,p/2):(d=e._offsetAttribute===pn.NONE?0:1,g=g.fill(d)),o.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:g})}let u=ue.fromRectangle3D(t,n,s,i8e),h=ue.fromRectangle3D(t,n,a,n8e);r=ue.union(u,h)}else{if(o=dme(e,i),o.attributes.position.values=_i.scaleToGeodeticHeight(o.attributes.position.values,s,n,!1),l(e._offsetAttribute)){let u=o.attributes.position.values.length;d=e._offsetAttribute===pn.NONE?0:1;let h=new Uint8Array(u/3).fill(d);o.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}r=ue.fromRectangle3D(t,n,s)}return new pt({attributes:o.attributes,indices:o.indices,primitiveType:We.LINES,boundingSphere:r,offsetAttribute:e._offsetAttribute})};var _x=xT;function _T(e){this.rectangle=le.clone(e.rectangle),this.minimumHeight=e.minimumHeight??0,this.maximumHeight=e.maximumHeight??0,this.southwestCornerCartesian=new m,this.northeastCornerCartesian=new m,this.westNormal=new m,this.southNormal=new m,this.eastNormal=new m,this.northNormal=new m;let t=e.ellipsoid??ie.WGS84;m8e(this,e.rectangle,t),this._orientedBoundingBox=void 0,this._boundingSphere=void 0,(e.computeBoundingVolumes??!0)&&this.computeBoundingVolumes(t)}Object.defineProperties(_T.prototype,{boundingVolume:{get:function(){return this._orientedBoundingBox}},boundingSphere:{get:function(){return this._boundingSphere}}});_T.prototype.computeBoundingVolumes=function(e){this._orientedBoundingBox=vn.fromRectangle(this.rectangle,this.minimumHeight,this.maximumHeight,e),this._boundingSphere=ue.fromOrientedBoundingBox(this._orientedBoundingBox)};var hme=new m,JQ=new m,fme=new m,c8e=new m,l8e=new m,d8e=new m,u8e=new m,gm=new ge,pme=new An(m.UNIT_X,0),IT=new En;function m8e(e,t,n){n.cartographicToCartesian(le.southwest(t),e.southwestCornerCartesian),n.cartographicToCartesian(le.northeast(t),e.northeastCornerCartesian),gm.longitude=t.west,gm.latitude=(t.south+t.north)*.5,gm.height=0;let i=n.cartographicToCartesian(gm,d8e),o=m.cross(i,m.UNIT_Z,c8e);m.normalize(o,e.westNormal),gm.longitude=t.east;let r=n.cartographicToCartesian(gm,u8e),s=m.cross(m.UNIT_Z,r,hme);m.normalize(s,e.eastNormal);let a=m.subtract(i,r,hme);m.magnitude(a)===0&&(a=m.clone(o,a));let c=m.normalize(a,l8e),d=t.south,u;if(d>0){gm.longitude=(t.west+t.east)*.5,gm.latitude=d;let b=n.cartographicToCartesian(gm,IT.origin);m.clone(c,IT.direction);let x=An.fromPointNormal(e.southwestCornerCartesian,e.westNormal,pme);fi.rayPlane(IT,x,e.southwestCornerCartesian),u=n.geodeticSurfaceNormal(b,JQ)}else u=n.geodeticSurfaceNormalCartographic(le.southeast(t),JQ);let h=m.cross(u,a,fme);m.normalize(h,e.southNormal);let p=t.north,g;if(p<0){gm.longitude=(t.west+t.east)*.5,gm.latitude=p;let b=n.cartographicToCartesian(gm,IT.origin);m.negate(c,IT.direction);let x=An.fromPointNormal(e.northeastCornerCartesian,e.eastNormal,pme);fi.rayPlane(IT,x,e.northeastCornerCartesian),g=n.geodeticSurfaceNormal(b,JQ)}else g=n.geodeticSurfaceNormalCartographic(le.northwest(t),JQ);let f=m.cross(a,g,fme);m.normalize(f,e.northNormal)}var h8e=new m,f8e=new m,p8e=new m(0,-1,0),A8e=new m(0,0,-1),Ame=new m;function g8e(e,t){let n=t.camera,i=n.positionWC,o=n.positionCartographic,r=0;if(!le.contains(e.rectangle,o)){let d=e.southwestCornerCartesian,u=e.northeastCornerCartesian,h=e.westNormal,p=e.southNormal,g=e.eastNormal,f=e.northNormal;t.mode!==re.SCENE3D&&(d=t.mapProjection.project(le.southwest(e.rectangle),h8e),d.z=d.y,d.y=d.x,d.x=0,u=t.mapProjection.project(le.northeast(e.rectangle),f8e),u.z=u.y,u.y=u.x,u.x=0,h=p8e,g=m.UNIT_Y,p=A8e,f=m.UNIT_Z);let b=m.subtract(i,d,Ame),x=m.dot(b,h),I=m.dot(b,p),_=m.subtract(i,u,Ame),E=m.dot(_,g),S=m.dot(_,f);x>0?r+=x*x:E>0&&(r+=E*E),I>0?r+=I*I:S>0&&(r+=S*S)}let s,a,c;if(t.mode===re.SCENE3D?(s=o.height,a=e.minimumHeight,c=e.maximumHeight):(s=i.x,a=0,c=0),s>c){let d=s-c;r+=d*d}else if(s<a){let d=a-s;r+=d*d}return Math.sqrt(r)}_T.prototype.distanceToCamera=function(e){let t=g8e(this,e);if(e.mode===re.SCENE3D&&l(this._orientedBoundingBox)){let n=Math.sqrt(this._orientedBoundingBox.distanceSquaredTo(e.camera.positionWC));return Math.max(t,n)}return t};_T.prototype.intersectPlane=function(e){return this._orientedBoundingBox.intersectPlane(e)};_T.prototype.createDebugVolume=function(e){let t=new X.clone(X.IDENTITY),n=new _x({rectangle:this.rectangle,height:this.minimumHeight,extrudedHeight:this.maximumHeight}),i=new wt({geometry:n,id:"outline",modelMatrix:t,attributes:{color:tn.fromColor(e)}});return new Nn({geometryInstances:i,appearance:new yn({translucent:!1,flat:!0}),asynchronous:!1})};var tu=_T;var i4n=y(C(),1);var NJn=y(C(),1);var _Jn=y(C(),1);var Z2={},b8e=new m,gme=new m,bme=new m,yme=new m,Cme=new vn;Z2.validOutline=function(e){let n=vn.fromPoints(e,Cme).halfAxes,i=$.getColumn(n,0,gme),o=$.getColumn(n,1,bme),r=$.getColumn(n,2,yme),s=m.magnitude(i),a=m.magnitude(o),c=m.magnitude(r);return!(s===0&&(a===0||c===0)||a===0&&c===0)};Z2.computeProjectTo2DArguments=function(e,t,n,i){let o=vn.fromPoints(e,Cme),r=o.halfAxes,s=$.getColumn(r,0,gme),a=$.getColumn(r,1,bme),c=$.getColumn(r,2,yme),d=m.magnitude(s),u=m.magnitude(a),h=m.magnitude(c),p=Math.min(d,u,h);if(d===0&&(u===0||h===0)||u===0&&h===0)return!1;let g,f;return(p===u||p===h)&&(g=s),p===d?g=a:p===h&&(f=a),(p===d||p===u)&&(f=c),m.normalize(g,n),m.normalize(f,i),m.clone(o.center,t),!0};function xme(e,t,n,i,o){let r=m.subtract(e,t,b8e),s=m.dot(n,r),a=m.dot(i,r);return D.fromElements(s,a,o)}Z2.createProjectPointsTo2DFunction=function(e,t,n){return function(i){let o=new Array(i.length);for(let r=0;r<i.length;r++)o[r]=xme(i[r],e,t,n);return o}};Z2.createProjectPointTo2DFunction=function(e,t,n){return function(i,o){return xme(i,e,t,n,o)}};var sg=Z2;function y8e(e){let t=e.length,n=new Float64Array(t*3),i=Me.createTypedArray(t,t*2),o=0,r=0;for(let a=0;a<t;a++){let c=e[a];n[o++]=c.x,n[o++]=c.y,n[o++]=c.z,i[r++]=a,i[r++]=(a+1)%t}let s=new xn({position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:n})});return new pt({attributes:s,indices:i,primitiveType:We.LINES})}function Ex(e){e=e??Y.EMPTY_OBJECT;let t=e.polygonHierarchy;this._polygonHierarchy=t,this._workerName="createCoplanarPolygonOutlineGeometry",this.packedLength=ti.computeHierarchyPackedLength(t,m)+1}Ex.fromPositions=function(e){e=e??Y.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions}};return new Ex(t)};Ex.pack=function(e,t,n){return n=n??0,n=ti.packPolygonHierarchy(e._polygonHierarchy,t,n,m),t[n]=e.packedLength,t};var C8e={polygonHierarchy:{}};Ex.unpack=function(e,t,n){t=t??0;let i=ti.unpackPolygonHierarchy(e,t,m);t=i.startingIndex,delete i.startingIndex;let o=e[t];return l(n)||(n=new Ex(C8e)),n._polygonHierarchy=i,n.packedLength=o,n};Ex.createGeometry=function(e){let t=e._polygonHierarchy,n=t.positions;if(n=Xo(n,m.equalsEpsilon,!0),n.length<3||!sg.validOutline(n))return;let o=ti.polygonOutlinesFromHierarchy(t,!1);if(o.length===0)return;let r=[];for(let c=0;c<o.length;c++){let d=new wt({geometry:y8e(o[c])});r.push(d)}let s=Yn.combineInstances(r)[0],a=ue.fromPoints(t.positions);return new pt({attributes:s.attributes,indices:s.indices,primitiveType:s.primitiveType,boundingSphere:a})};var bm=Ex;var jQ=new ge;function B2(e){let t=xA.fromToken(e.token),n=e.minimumHeight??0,i=e.maximumHeight??0,o=e.ellipsoid??ie.WGS84;this.s2Cell=t,this.minimumHeight=n,this.maximumHeight=i,this.ellipsoid=o;let r=V8e(t,n,i,o);this._boundingPlanes=r;let s=w8e(r);this._vertices=s,this._edgeNormals=new Array(6),this._edgeNormals[0]=gJ(r[0],s.slice(0,4));let a;for(a=0;a<4;a++)this._edgeNormals[0][a]=m.negate(this._edgeNormals[0][a],this._edgeNormals[0][a]);for(this._edgeNormals[1]=gJ(r[1],s.slice(4,8)),a=0;a<4;a++)this._edgeNormals[2+a]=gJ(r[2+a],[s[a%4],s[(a+1)%4],s[4+(a+1)%4],s[4+a]]);for(this._planeVertices=[this._vertices.slice(0,4),this._vertices.slice(4,8)],a=0;a<4;a++)this._planeVertices.push([this._vertices[a%4],this._vertices[(a+1)%4],this._vertices[4+(a+1)%4],this._vertices[4+a]]);let c=t.getCenter();jQ=o.cartesianToCartographic(c,jQ),jQ.height=(i+n)/2,this.center=o.cartographicToCartesian(jQ,c),this._boundingSphere=ue.fromPoints(s)}var x8e=new m,I8e=new ge,_8e=new m,E8e=new ge,T8e=new m,S8e=new m,L8e=new m,R8e=new m;function V8e(e,t,n,i){let o=new Array(6),r=e.getCenter(),s=i.geodeticSurfaceNormal(r,x8e),a=i.cartesianToCartographic(r,I8e);a.height=n;let c=i.cartographicToCartesian(a,_8e),d=An.fromPointNormal(c,s);o[0]=d;let u=0,h,p=[],g,f;for(h=0;h<4;h++){g=e.getVertex(h),p[h]=g,f=i.cartesianToCartographic(g,E8e),f.height=t;let x=An.getPointDistance(d,i.cartographicToCartesian(f,T8e));x<u&&(u=x)}let b=An.clone(d);for(b.normal=m.negate(b.normal,b.normal),b.distance=b.distance*-1+u,o[1]=b,h=0;h<4;h++){g=p[h];let x=p[(h+1)%4],I=i.geodeticSurfaceNormal(g,S8e),_=m.subtract(x,g,R8e),E=m.cross(_,I,L8e);E=m.normalize(E,E),o[2+h]=An.fromPointNormal(g,E)}return o}var Tx=new m,Sx=new m,Lx=new m,dJ=new m,uJ=new m,mJ=new m,G8e=new m,Z8e=new m,B8e=new m,hJ=new m,fJ=new m,pJ=new m,y0=new m,ip=new $;function Ime(e,t,n){Tx=e.normal,Sx=t.normal,Lx=n.normal,dJ=m.multiplyByScalar(e.normal,-e.distance,dJ),uJ=m.multiplyByScalar(t.normal,-t.distance,uJ),mJ=m.multiplyByScalar(n.normal,-n.distance,mJ),hJ=m.multiplyByScalar(m.cross(Sx,Lx,G8e),m.dot(dJ,Tx),hJ),fJ=m.multiplyByScalar(m.cross(Lx,Tx,Z8e),m.dot(uJ,Sx),fJ),pJ=m.multiplyByScalar(m.cross(Tx,Sx,B8e),m.dot(mJ,Lx),pJ),ip[0]=Tx.x,ip[1]=Sx.x,ip[2]=Lx.x,ip[3]=Tx.y,ip[4]=Sx.y,ip[5]=Lx.y,ip[6]=Tx.z,ip[7]=Sx.z,ip[8]=Lx.z;let i=$.determinant(ip);return y0=m.add(hJ,fJ,y0),y0=m.add(y0,pJ,y0),new m(y0.x/i,y0.y/i,y0.z/i)}function w8e(e){let t=new Array(8);for(let n=0;n<4;n++)t[n]=Ime(e[0],e[2+(n+3)%4],e[2+n%4]),t[n+4]=Ime(e[1],e[2+(n+3)%4],e[2+n%4]);return t}var AJ=new m,ET=new m;function gJ(e,t){let n=[];for(let i=0;i<4;i++)AJ=m.subtract(t[(i+1)%4],t[i],AJ),ET=m.cross(e.normal,AJ,ET),ET=m.normalize(ET,ET),n[i]=m.clone(ET);return n}Object.defineProperties(B2.prototype,{boundingVolume:{get:function(){return this}},boundingSphere:{get:function(){return this._boundingSphere}}});var bJ=new m;B2.prototype.distanceToCamera=function(e){let t=e.camera.positionWC,n=[],i=[],o;An.getPointDistance(this._boundingPlanes[0],t)>0?(n.push(0),i.push(this._planeVertices[0]),o=this._edgeNormals[0]):An.getPointDistance(this._boundingPlanes[1],t)>0&&(n.push(1),i.push(this._planeVertices[1]),o=this._edgeNormals[1]);let r,s;for(r=0;r<4;r++)s=2+r,An.getPointDistance(this._boundingPlanes[s],t)>0&&(n.push(s),i.push(this._planeVertices[s]),o=this._edgeNormals[s]);if(n.length===0)return 0;let a,c;if(n.length===1)return c=this._boundingPlanes[n[0]],a=yJ(An.projectPointOntoPlane(c,t,bJ),i[0],c,o),m.distance(a,t);if(n.length===2){if(n[0]===0){let p=[this._vertices[4*n[0]+(n[1]-2)],this._vertices[4*n[0]+(n[1]-2+1)%4]];return a=_me(t,p[0],p[1]),m.distance(a,t)}let u=Number.MAX_VALUE,h;for(r=0;r<2;r++)c=this._boundingPlanes[n[r]],a=yJ(An.projectPointOntoPlane(c,t,bJ),i[r],c,this._edgeNormals[n[r]]),h=m.distanceSquared(a,t),h<u&&(u=h);return Math.sqrt(u)}else if(n.length>3)return a=yJ(An.projectPointOntoPlane(this._boundingPlanes[1],t,bJ),this._planeVertices[1],this._boundingPlanes[1],this._edgeNormals[1]),m.distance(a,t);let d=n[1]===2&&n[2]===5?0:1;return n[0]===0?m.distance(t,this._vertices[(n[1]-2+d)%4]):m.distance(t,this._vertices[4+(n[1]-2+d)%4])};var X8e=new m,W8e=new m;function _me(e,t,n){let i=m.subtract(n,t,X8e),o=m.subtract(e,t,W8e),r=m.dot(i,o);if(r<=0)return t;let s=m.dot(i,i);return r>=s?n:(r=r/s,new m((1-r)*t.x+r*n.x,(1-r)*t.y+r*n.y,(1-r)*t.z+r*n.z))}var F8e=new An(m.UNIT_X,0);function yJ(e,t,n,i){let o=Number.MAX_VALUE,r,s,a;for(let c=0;c<t.length;c++){let d=An.fromPointNormal(t[c],i[c],F8e);An.getPointDistance(d,e)<0||(a=_me(e,t[c],t[(c+1)%4]),r=m.distance(e,a),r<o&&(o=r,s=a))}return l(s)?s:e}B2.prototype.intersectPlane=function(e){let t=0,n=0;for(let i=0;i<this._vertices.length;i++)m.dot(e.normal,this._vertices[i])+e.distance<0?n++:t++;return t===this._vertices.length?on.INSIDE:n===this._vertices.length?on.OUTSIDE:on.INTERSECTING};B2.prototype.createDebugVolume=function(e){let t=new X.clone(X.IDENTITY),n=new bm({polygonHierarchy:{positions:this._planeVertices[0]}}),i=bm.createGeometry(n),o=new wt({geometry:i,id:"outline",modelMatrix:t,attributes:{color:tn.fromColor(e)}}),r=new bm({polygonHierarchy:{positions:this._planeVertices[1]}}),s=bm.createGeometry(r),a=new wt({geometry:s,id:"outline",modelMatrix:t,attributes:{color:tn.fromColor(e)}}),c=[];for(let d=0;d<4;d++){let u=new bm({polygonHierarchy:{positions:this._planeVertices[2+d]}}),h=bm.createGeometry(u);c[d]=new wt({geometry:h,id:"outline",modelMatrix:t,attributes:{color:tn.fromColor(e)}})}return new Nn({geometryInstances:[c[0],c[1],c[2],c[3],a,o],appearance:new yn({translucent:!1,flat:!0}),asynchronous:!1})};var w2=B2;var X4n=y(C(),1);var _4n=y(C(),1);var b4n=y(C(),1);var P8e=new m(1,1,1),qQ=Math.cos,$Q=Math.sin;function TT(e){e=e??Y.EMPTY_OBJECT;let t=e.radii??P8e,n=e.innerRadii??t,i=e.minimumClock??0,o=e.maximumClock??Z.TWO_PI,r=e.minimumCone??0,s=e.maximumCone??Z.PI,a=Math.round(e.stackPartitions??10),c=Math.round(e.slicePartitions??8),d=Math.round(e.subdivisions??128);this._radii=m.clone(t),this._innerRadii=m.clone(n),this._minimumClock=i,this._maximumClock=o,this._minimumCone=r,this._maximumCone=s,this._stackPartitions=a,this._slicePartitions=c,this._subdivisions=d,this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipsoidOutlineGeometry"}TT.packedLength=2*m.packedLength+8;TT.pack=function(e,t,n){return n=n??0,m.pack(e._radii,t,n),n+=m.packedLength,m.pack(e._innerRadii,t,n),n+=m.packedLength,t[n++]=e._minimumClock,t[n++]=e._maximumClock,t[n++]=e._minimumCone,t[n++]=e._maximumCone,t[n++]=e._stackPartitions,t[n++]=e._slicePartitions,t[n++]=e._subdivisions,t[n]=e._offsetAttribute??-1,t};var Eme=new m,Tme=new m,ag={radii:Eme,innerRadii:Tme,minimumClock:void 0,maximumClock:void 0,minimumCone:void 0,maximumCone:void 0,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0,offsetAttribute:void 0};TT.unpack=function(e,t,n){t=t??0;let i=m.unpack(e,t,Eme);t+=m.packedLength;let o=m.unpack(e,t,Tme);t+=m.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],d=e[t++],u=e[t++],h=e[t++],p=e[t];return l(n)?(n._radii=m.clone(i,n._radii),n._innerRadii=m.clone(o,n._innerRadii),n._minimumClock=r,n._maximumClock=s,n._minimumCone=a,n._maximumCone=c,n._stackPartitions=d,n._slicePartitions=u,n._subdivisions=h,n._offsetAttribute=p===-1?void 0:p,n):(ag.minimumClock=r,ag.maximumClock=s,ag.minimumCone=a,ag.maximumCone=c,ag.stackPartitions=d,ag.slicePartitions=u,ag.subdivisions=h,ag.offsetAttribute=p===-1?void 0:p,new TT(ag))};TT.createGeometry=function(e){let t=e._radii;if(t.x<=0||t.y<=0||t.z<=0)return;let n=e._innerRadii;if(n.x<=0||n.y<=0||n.z<=0)return;let i=e._minimumClock,o=e._maximumClock,r=e._minimumCone,s=e._maximumCone,a=e._subdivisions,c=ie.fromCartesian3(t),d=e._slicePartitions+1,u=e._stackPartitions+1;d=Math.round(d*Math.abs(o-i)/Z.TWO_PI),u=Math.round(u*Math.abs(s-r)/Z.PI),d<2&&(d=2),u<2&&(u=2);let h=0,p=1,g=n.x!==t.x||n.y!==t.y||n.z!==t.z,f=!1,b=!1;g&&(p=2,r>0&&(f=!0,h+=d),s<Math.PI&&(b=!0,h+=d));let x=a*p*(u+d),I=new Float64Array(x*3),_=2*(x+h-(d+u)*p),E=Me.createTypedArray(x,_),S,R,G,B,w=0,F=new Array(u),P=new Array(u);for(S=0;S<u;S++)B=r+S*(s-r)/(u-1),F[S]=$Q(B),P[S]=qQ(B);let A=new Array(a),T=new Array(a);for(S=0;S<a;S++)G=i+S*(o-i)/(a-1),A[S]=$Q(G),T[S]=qQ(G);for(S=0;S<u;S++)for(R=0;R<a;R++)I[w++]=t.x*F[S]*T[R],I[w++]=t.y*F[S]*A[R],I[w++]=t.z*P[S];if(g)for(S=0;S<u;S++)for(R=0;R<a;R++)I[w++]=n.x*F[S]*T[R],I[w++]=n.y*F[S]*A[R],I[w++]=n.z*P[S];for(F.length=a,P.length=a,S=0;S<a;S++)B=r+S*(s-r)/(a-1),F[S]=$Q(B),P[S]=qQ(B);for(A.length=d,T.length=d,S=0;S<d;S++)G=i+S*(o-i)/(d-1),A[S]=$Q(G),T[S]=qQ(G);for(S=0;S<a;S++)for(R=0;R<d;R++)I[w++]=t.x*F[S]*T[R],I[w++]=t.y*F[S]*A[R],I[w++]=t.z*P[S];if(g)for(S=0;S<a;S++)for(R=0;R<d;R++)I[w++]=n.x*F[S]*T[R],I[w++]=n.y*F[S]*A[R],I[w++]=n.z*P[S];for(w=0,S=0;S<u*p;S++){let W=S*a;for(R=0;R<a-1;R++)E[w++]=W+R,E[w++]=W+R+1}let L=u*a*p;for(S=0;S<d;S++)for(R=0;R<a-1;R++)E[w++]=L+S+R*d,E[w++]=L+S+(R+1)*d;if(g)for(L=u*a*p+d*a,S=0;S<d;S++)for(R=0;R<a-1;R++)E[w++]=L+S+R*d,E[w++]=L+S+(R+1)*d;if(g){let W=u*a*p,M=W+a*d;if(f)for(S=0;S<d;S++)E[w++]=W+S,E[w++]=M+S;if(b)for(W+=a*d-d,M+=a*d-d,S=0;S<d;S++)E[w++]=W+S,E[w++]=M+S}let V=new xn({position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:I})});if(l(e._offsetAttribute)){let W=I.length,M=e._offsetAttribute===pn.NONE?0:1,Q=new Uint8Array(W/3).fill(M);V.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:Q})}return new pt({attributes:V,indices:E,primitiveType:We.LINES,boundingSphere:ue.fromEllipsoid(c),offsetAttribute:e._offsetAttribute})};var nu=TT;function ST(e){let t=e.radius??1,i={radii:new m(t,t,t),stackPartitions:e.stackPartitions,slicePartitions:e.slicePartitions,subdivisions:e.subdivisions};this._ellipsoidGeometry=new nu(i),this._workerName="createSphereOutlineGeometry"}ST.packedLength=nu.packedLength;ST.pack=function(e,t,n){return nu.pack(e._ellipsoidGeometry,t,n)};var M8e=new nu,Rx={radius:void 0,radii:new m,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0};ST.unpack=function(e,t,n){let i=nu.unpack(e,t,M8e);return Rx.stackPartitions=i._stackPartitions,Rx.slicePartitions=i._slicePartitions,Rx.subdivisions=i._subdivisions,l(n)?(m.clone(i._radii,Rx.radii),n._ellipsoidGeometry=new nu(Rx),n):(Rx.radius=i._radii.x,new ST(Rx))};ST.createGeometry=function(e){return nu.createGeometry(e._ellipsoidGeometry)};var cg=ST;function LT(e,t){t===0&&(t=Z.EPSILON7),this._boundingSphere=new ue(e,t)}Object.defineProperties(LT.prototype,{center:{get:function(){return this._boundingSphere.center}},radius:{get:function(){return this._boundingSphere.radius}},boundingVolume:{get:function(){return this._boundingSphere}},boundingSphere:{get:function(){return this._boundingSphere}}});LT.prototype.distanceToCamera=function(e){let t=this._boundingSphere;return Math.max(0,m.distance(t.center,e.camera.positionWC)-t.radius)};LT.prototype.intersectPlane=function(e){return ue.intersectPlane(this._boundingSphere,e)};LT.prototype.update=function(e,t){m.clone(e,this._boundingSphere.center),this._boundingSphere.radius=t};LT.prototype.createDebugVolume=function(e){let t=new cg({radius:this.radius}),n=X.fromTranslation(this.center,new X.clone(X.IDENTITY)),i=new wt({geometry:t,id:"outline",modelMatrix:n,attributes:{color:tn.fromColor(e)}});return new Nn({geometryInstances:i,appearance:new yn({translucent:!1,flat:!0}),asynchronous:!1})};var lg=LT;var H4n=y(C(),1);var v8e=new m,N8e=new m,D8e=new m,Q8e=new m;function Vx(e,t,n){n=m.cross(e,t,n);let i=m.magnitude(n);return m.multiplyByScalar(n,Z.EPSILON7/i,n)}function CJ(e,t){let n=m.normalize(e,Q8e),i=m.equalsEpsilon(n,m.UNIT_X,Z.EPSILON6)?m.UNIT_Y:m.UNIT_X;return Vx(e,i,t)}function Sme(e){let t=$.getColumn(e,0,v8e),n=$.getColumn(e,1,N8e),i=$.getColumn(e,2,D8e),o=m.equals(t,m.ZERO),r=m.equals(n,m.ZERO),s=m.equals(i,m.ZERO);return!o&&!r&&!s?e:o&&r&&s?(e[0]=Z.EPSILON7,e[4]=Z.EPSILON7,e[8]=Z.EPSILON7,e):(o&&!r&&!s?t=Vx(n,i,t):!o&&r&&!s?n=Vx(t,i,n):!o&&!r&&s?i=Vx(n,t,i):o?r?s||(t=CJ(i,t),n=Vx(i,t,n)):(t=CJ(n,t),i=Vx(n,t,i)):(n=CJ(t,n),i=Vx(n,t,i)),$.setColumn(e,0,t,e),$.setColumn(e,1,n,e),$.setColumn(e,2,i,e),e)}function RT(e,t){t=Sme(t),this._orientedBoundingBox=new vn(e,t),this._boundingSphere=ue.fromOrientedBoundingBox(this._orientedBoundingBox)}Object.defineProperties(RT.prototype,{boundingVolume:{get:function(){return this._orientedBoundingBox}},boundingSphere:{get:function(){return this._boundingSphere}}});RT.prototype.distanceToCamera=function(e){return Math.sqrt(this._orientedBoundingBox.distanceSquaredTo(e.camera.positionWC))};RT.prototype.intersectPlane=function(e){return this._orientedBoundingBox.intersectPlane(e)};RT.prototype.update=function(e,t){m.clone(e,this._orientedBoundingBox.center),t=Sme(t),$.clone(t,this._orientedBoundingBox.halfAxes),ue.fromOrientedBoundingBox(this._orientedBoundingBox,this._boundingSphere)};RT.prototype.createDebugVolume=function(e){let t=new nh({minimum:new m(-1,-1,-1),maximum:new m(1,1,1)}),n=X.fromRotationTranslation(this.boundingVolume.halfAxes,this.boundingVolume.center),i=new wt({geometry:t,id:"outline",modelMatrix:n,attributes:{color:tn.fromColor(e)}});return new Nn({geometryInstances:i,appearance:new yn({translucent:!1,flat:!0}),asynchronous:!1})};var hd=RT;function pr(e,t,n,i){this._tileset=e,this._header=n;let o=l(n.contents),r=o&&n.contents.length>1||Ii(n,"3DTILES_multiple_contents"),s=o&&!r?n.contents[0]:n.content;this._contentHeader=s,this.transform=l(n.transform)?X.unpack(n.transform):X.clone(X.IDENTITY);let a=l(i)?i.computedTransform:e.modelMatrix,c=X.multiply(a,this.transform,new X),d=l(i)?i._initialTransform:X.IDENTITY;this._initialTransform=X.multiply(d,this.transform,new X),this.computedTransform=c,this.metadata=R2(e,n),this._verticalExaggeration=1,this._verticalExaggerationRelativeHeight=0,this._boundingVolume=this.createBoundingVolume(n.boundingVolume,c),this._boundingVolume2D=void 0;let u;l(s)&&l(s.boundingVolume)&&(u=this.createBoundingVolume(s.boundingVolume,c)),this._contentBoundingVolume=u,this._contentBoundingVolume2D=void 0;let h;l(n.viewerRequestVolume)&&(h=this.createBoundingVolume(n.viewerRequestVolume,c)),this._viewerRequestVolume=h,this.geometricError=n.geometricError,this._geometricError=n.geometricError,l(this._geometricError)||(this._geometricError=l(i)?i._geometricError:e._geometricError,pr._deprecationWarning("geometricErrorUndefined","Required property geometricError is undefined for this tile. Using parent's geometric error instead.")),this.updateGeometricErrorScale();let p;l(n.refine)?((n.refine==="replace"||n.refine==="add")&&pr._deprecationWarning("lowercase-refine",`This tile uses a lowercase refine "${n.refine}". Instead use "${n.refine.toUpperCase()}".`),p=n.refine.toUpperCase()==="REPLACE"?tr.REPLACE:tr.ADD):l(i)?p=i.refine:p=tr.REPLACE,this.refine=p,this.children=[],this.parent=i;let g,f=!1,b,x,I;if(t=Ve.createIfNeeded(t),r)b=ir.UNLOADED,x=t.clone();else if(l(s)){let R=s.uri;l(s.url)&&(pr._deprecationWarning("contentUrl",'This tileset JSON uses the "content.url" property which has been deprecated. Use "content.uri" instead.'),R=s.url),R===""?(pr._deprecationWarning("contentUriEmpty","content.uri property is an empty string, which creates a circular dependency, making this tileset invalid. Omit the content property instead"),g=new yT(e,this),f=!0,b=ir.READY):(b=ir.UNLOADED,x=t.getDerivedResource({url:R}),I=Sc.getServerKey(x.getUrlComponent()))}else g=new yT(e,this),f=!0,b=ir.READY;this._content=g,this._contentResource=x,this._contentState=b,this._expiredContent=void 0,this._serverKey=I,this.hasEmptyContent=f,this.hasTilesetContent=!1,this.hasImplicitContent=!1,this.hasRenderableContent=!f,this.hasImplicitContentMetadata=!1,this.hasMultipleContents=r,this.cacheNode=void 0;let _=n.expire,E,S;l(_)&&(E=_.duration,l(_.date)&&(S=j.fromIso8601(_.date))),this.expireDuration=E,this.expireDate=S,this.lastStyleTime=0,this._optimChildrenWithinParent=fm.NOT_COMPUTED,this.clippingPlanesDirty=!1,this.clippingPolygonsDirty=!1,this.priorityDeferred=!1,this.implicitTileset=void 0,this.implicitCoordinates=void 0,this.implicitSubtree=void 0,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._screenSpaceErrorProgressiveResolution=0,this._visibilityPlaneMask=0,this._visible=!1,this._inRequestVolume=!1,this._finalResolution=!0,this._depth=0,this._stackLength=0,this._selectionDepth=0,this._updatedVisibilityFrame=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._wasSelectedLastFrame=!1,this._requestedFrame=0,this._ancestorWithContent=void 0,this._ancestorWithContentAvailable=void 0,this._refines=!1,this._shouldSelect=!1,this._isClipped=!0,this._isClippedByPolygon=!1,this._clippingPlanesState=0,this._clippingPolygonsState=0,this._debugBoundingVolume=void 0,this._debugContentBoundingVolume=void 0,this._debugViewerRequestVolume=void 0,this._debugColor=U.fromRandom({alpha:1}),this._debugColorizeTiles=!1,this._priority=0,this._priorityHolder=this,this._priorityProgressiveResolution=!1,this._priorityProgressiveResolutionScreenSpaceErrorLeaf=!1,this._priorityReverseScreenSpaceError=0,this._foveatedFactor=0,this._wasMinPriorityChild=!1,this._loadTimestamp=new j,this._commandsLength=0,this._color=void 0,this._colorDirty=!1,this._request=void 0}pr._deprecationWarning=_r;Object.defineProperties(pr.prototype,{tileset:{get:function(){return this._tileset}},content:{get:function(){return this._content}},boundingVolume:{get:function(){return this._boundingVolume}},contentBoundingVolume:{get:function(){return this._contentBoundingVolume??this._boundingVolume}},boundingSphere:{get:function(){return this._boundingVolume.boundingSphere}},isVisible:{get:function(){return this._visible&&this._inRequestVolume}},extras:{get:function(){return this._header.extras}},color:{get:function(){return l(this._color)||(this._color=new U),U.clone(this._color)},set:function(e){this._color=U.clone(e,this._color),this._colorDirty=!0}},contentAvailable:{get:function(){return this.contentReady&&this.hasRenderableContent||l(this._expiredContent)&&!this.contentFailed}},contentReady:{get:function(){return this._contentState===ir.READY}},contentUnloaded:{get:function(){return this._contentState===ir.UNLOADED}},hasUnloadedRenderableContent:{get:function(){return this.hasRenderableContent&&this.contentUnloaded}},contentExpired:{get:function(){return this._contentState===ir.EXPIRED}},contentFailed:{get:function(){return this._contentState===ir.FAILED}},commandsLength:{get:function(){return this._commandsLength}}});var C0=new m;function U8e(e,t){let{tileset:n,boundingSphere:i}=e,{radius:o,center:r}=i,{camera:s}=t,a=m.multiplyByScalar(s.directionWC,e._centerZDepth,C0),c=m.add(s.positionWC,a,C0),d=m.subtract(c,r,C0);if(m.magnitude(d)>o){let S=m.normalize(d,C0),R=m.multiplyByScalar(S,o,C0),G=m.add(r,R,C0),B=m.subtract(G,s.positionWC,C0),w=m.normalize(B,C0);e._foveatedFactor=1-Math.abs(m.dot(s.directionWC,w))}else e._foveatedFactor=0;let p=e.refine===tr.REPLACE,g=n.isSkippingLevelOfDetail;if(p&&!g||!n.foveatedScreenSpaceError||n.foveatedConeSize===1||e._priorityProgressiveResolution&&p&&g||n._pass===zo.PRELOAD_FLIGHT||n._pass===zo.PRELOAD)return!1;let f=1-Math.cos(s.frustum.fov*.5),b=n.foveatedConeSize*f;if(e._foveatedFactor<=b)return!1;let x=f-b,I=Z.clamp((e._foveatedFactor-b)/x,0,1),_=n.foveatedInterpolationCallback(n.foveatedMinimumScreenSpaceErrorRelaxation,n.memoryAdjustedScreenSpaceError,I),E=e._screenSpaceError===0&&l(e.parent)?e.parent._screenSpaceError*.5:e._screenSpaceError;return n.memoryAdjustedScreenSpaceError-_<=E}var Zme=new j;pr.prototype.getScreenSpaceError=function(e,t,n){let i=this._tileset,o=n??1,r=l(this.parent)?this.parent.geometricError:i._scaledGeometricError,s=t?r:this.geometricError;if(s===0)return 0;let{camera:a,context:c}=e,d=a.frustum,u=c.drawingBufferWidth,h=c.drawingBufferHeight*o,p;if(e.mode===re.SCENE2D||d instanceof gn){let g=d.offCenterFrustum;l(g)&&(d=g);let f=Math.max(d.top-d.bottom,d.right-d.left)/Math.max(u,h);p=s/f}else{let g=Math.max(this._distanceToCamera,Z.EPSILON7),f=d.sseDenominator;if(p=s*h/(g*f),i.dynamicScreenSpaceError){let b=i._dynamicScreenSpaceErrorComputedDensity,x=i.dynamicScreenSpaceErrorFactor,I=Z.fog(g,b)*x;p-=I}}return p/=e.pixelRatio,p};function k8e(e,t){if(e.progressiveResolutionHeightFraction<=0||e.progressiveResolutionHeightFraction>.5)return!1;let n=e.memoryAdjustedScreenSpaceError,i=t._screenSpaceErrorProgressiveResolution>n;t._priorityProgressiveResolutionScreenSpaceErrorLeaf=!1;let o=t.parent,r=t._screenSpaceErrorProgressiveResolution<=n,s=l(o)&&o._screenSpaceErrorProgressiveResolution>n;return r&&s&&(t._priorityProgressiveResolutionScreenSpaceErrorLeaf=!0,i=!0),i}function Y8e(e,t){let n=t.parent,o=l(n)&&(!e.isSkippingLevelOfDetail||t._screenSpaceError===0||n.hasTilesetContent||n.hasImplicitContent)?n._screenSpaceError:t._screenSpaceError;return e.root._screenSpaceError-o}pr.prototype.updateVisibility=function(e){let{parent:t,tileset:n}=this;if(this._updatedVisibilityFrame===n._updatedVisibilityFrame)return;let i=l(t)?t.computedTransform:n.modelMatrix,o=l(t)?t._visibilityPlaneMask:Xs.MASK_INDETERMINATE;this.updateTransform(i,e),this._distanceToCamera=this.distanceToTile(e),this._centerZDepth=this.distanceToTileCenter(e),this._screenSpaceError=this.getScreenSpaceError(e,!1),this._screenSpaceErrorProgressiveResolution=this.getScreenSpaceError(e,!1,n.progressiveResolutionHeightFraction),this._visibilityPlaneMask=this.visibility(e,o),this._visible=this._visibilityPlaneMask!==Xs.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(e),this._priorityReverseScreenSpaceError=Y8e(n,this),this._priorityProgressiveResolution=k8e(n,this),this.priorityDeferred=U8e(this,e),this._updatedVisibilityFrame=n._updatedVisibilityFrame};pr.prototype.updateExpiration=function(){if(l(this.expireDate)&&this.contentReady&&!this.hasEmptyContent&&!this.hasMultipleContents){let e=j.now(Zme);j.lessThan(this.expireDate,e)&&(this._contentState=ir.EXPIRED,this._expiredContent=this._content)}};function O8e(e){if(!l(e.expireDuration))return;let t=j.now(Zme);j.addSeconds(t,e.expireDuration,t),l(e.expireDate)?j.lessThan(e.expireDate,t)&&j.clone(t,e.expireDate):e.expireDate=j.clone(t)}function H8e(e){return function(){return e._priority}}pr.prototype.requestContent=function(){if(!this.hasEmptyContent)return this.hasMultipleContents?z8e(this):J8e(this)};function z8e(e){let t=e._content,n=e._tileset;if(!l(t)){let o=Ii(e._header,"3DTILES_multiple_contents")?e._header.extensions["3DTILES_multiple_contents"]:e._header;t=new V2(n,e,e._contentResource.clone(),o),e._content=t}let i=t.requestInnerContents();if(l(i))return e._contentState=ir.LOADING,i.then(o=>{if(!e.isDestroyed()&&l(o))return e._contentState=ir.PROCESSING,t}).catch(o=>{if(!e.isDestroyed())throw e._contentState=ir.FAILED,o})}async function K8e(e,t,n,i,o){let r=e._contentState;e._contentState=ir.LOADING,++t.statistics.numberOfPendingRequests;let s;try{s=await o}catch(a){if(--t.statistics.numberOfPendingRequests,e.isDestroyed())return;if(n.cancelled||n.state===mi.CANCELLED){e._contentState=r,++t.statistics.numberOfAttemptedRequests;return}throw e._contentState=ir.FAILED,a}if(e.isDestroyed()){--t.statistics.numberOfPendingRequests;return}if(n.cancelled||n.state===mi.CANCELLED){e._contentState=r,--t.statistics.numberOfPendingRequests,++t.statistics.numberOfAttemptedRequests;return}try{let a=await j8e(e,s);return--t.statistics.numberOfPendingRequests,e.isDestroyed()?void 0:(i&&(e.expireDate=void 0),e._content=a,e._contentState=ir.PROCESSING,a)}catch(a){if(--t.statistics.numberOfPendingRequests,e.isDestroyed())return;throw e._contentState=ir.FAILED,a}}function J8e(e){let t=e._contentResource.clone(),n=e.contentExpired;n&&t.setQueryParameters({expired:e.expireDate.toString()});let i=new sr({throttle:!0,throttleByServer:!0,type:Zs.TILES3D,priorityFunction:H8e(e),serverKey:e._serverKey});e._request=i,t.request=i;let o=e._tileset,r=t.fetchArrayBuffer();if(!l(r)){++o.statistics.numberOfAttemptedRequests;return}return K8e(e,o,i,n,r)}async function j8e(e,t){let n=rg(t),i=e._tileset;i._disableSkipLevelOfDetail=i._disableSkipLevelOfDetail||n.contentType===Js.GEOMETRY||n.contentType===Js.VECTOR,(n.contentType===Js.IMPLICIT_SUBTREE||n.contentType===Js.IMPLICIT_SUBTREE_JSON)&&(e.hasImplicitContent=!0,e.hasRenderableContent=!1),n.contentType===Js.EXTERNAL_TILESET&&(e.hasTilesetContent=!0,e.hasRenderableContent=!1);let o,r=Cx[n.contentType];if(e.isDestroyed())return;l(n.binaryPayload)?o=await Promise.resolve(r(i,e,e._contentResource,n.binaryPayload.buffer,0)):o=await Promise.resolve(r(i,e,e._contentResource,n.jsonPayload));let s=e._contentHeader;if(e.hasImplicitContentMetadata){let c=e.implicitSubtree,d=e.implicitCoordinates;o.metadata=c.getContentMetadataView(d,0)}else e.hasImplicitContent||(o.metadata=xx(i,s));let a=Ix(i,s);return l(a)&&(o.group=new SC({metadata:a})),o}pr.prototype.cancelRequests=function(){this.hasMultipleContents?this._content.cancelRequests():this._request.cancel()};pr.prototype.unloadContent=function(){this.hasRenderableContent&&(this._content=this._content&&this._content.destroy(),this._contentState=ir.UNLOADED,this.lastStyleTime=0,this.clippingPlanesDirty=this._clippingPlanesState===0,this._clippingPlanesState=0,this.clippingPolygonsDirty=this._clippingPolygonsState===0,this._clippingPolygonsState=0,this._debugColorizeTiles=!1,this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy())};var Bme=new ue;function IJ(e,t){if(t.mode!==re.SCENE3D&&!l(e._boundingVolume2D)){let n=e._boundingVolume.boundingSphere,i=ue.projectTo2D(n,t.mapProjection,Bme);e._boundingVolume2D=new lg(i.center,i.radius)}return t.mode!==re.SCENE3D?e._boundingVolume2D:e._boundingVolume}function q8e(e,t){if(t.mode!==re.SCENE3D&&!l(e._contentBoundingVolume2D)){let n=e._contentBoundingVolume.boundingSphere,i=ue.projectTo2D(n,t.mapProjection,Bme);e._contentBoundingVolume2D=new lg(i.center,i.radius)}return t.mode!==re.SCENE3D?e._contentBoundingVolume2D:e._contentBoundingVolume}pr.prototype.visibility=function(e,t){let n=e.cullingVolume,i=IJ(this,e),o=this._tileset,r=o.clippingPlanes;if(l(r)&&r.enabled){let a=r.computeIntersectionWithBoundingVolume(i,o.clippingPlanesOriginMatrix);if(this._isClipped=a!==on.INSIDE,a===on.OUTSIDE)return Xs.MASK_OUTSIDE}let s=o.clippingPolygons;if(l(s)&&s.enabled){let a=s.computeIntersectionWithBoundingVolume(i);this._isClippedByPolygon=a!==on.OUTSIDE}return n.computeVisibilityWithPlaneMask(i,t)};pr.prototype.contentVisibility=function(e){if(!l(this._contentBoundingVolume))return on.INSIDE;if(this._visibilityPlaneMask===Xs.MASK_INSIDE)return on.INSIDE;let t=e.cullingVolume,n=q8e(this,e),i=this._tileset,o=i.clippingPlanes;if(l(o)&&o.enabled){let s=o.computeIntersectionWithBoundingVolume(n,i.clippingPlanesOriginMatrix);if(this._isClipped=s!==on.INSIDE,s===on.OUTSIDE)return on.OUTSIDE}let r=i.clippingPolygons;if(l(r)&&r.enabled){let s=r.computeIntersectionWithBoundingVolume(n);if(this._isClippedByPolygon=s!==on.OUTSIDE,s===on.INSIDE)return on.OUTSIDE}return t.computeVisibility(n)};pr.prototype.distanceToTile=function(e){return IJ(this,e).distanceToCamera(e)};var $8e=new m;pr.prototype.distanceToTileCenter=function(e){let n=IJ(this,e).boundingVolume,i=m.subtract(n.center,e.camera.positionWC,$8e);return m.dot(e.camera.directionWC,i)};pr.prototype.insideViewerRequestVolume=function(e){let t=this._viewerRequestVolume;return!l(t)||t.distanceToCamera(e)===0};var wme=new $,Xme=new m,e7e=new $,_J=new m,Wme=new le,Fme=new vn,xJ=new X;function t7e(e,t,n){let i=m.fromElements(e[0],e[1],e[2],_J),o=$.fromArray(e,3,e7e);i=X.multiplyByPoint(t,i,i);let r=X.getMatrix3(t,wme);return o=$.multiply(r,o,o),l(n)?(n.update(i,o),n):new hd(i,o)}function Lme(e,t,n,i){let o=le.unpack(e,0,Wme),r=e[4],s=e[5],a=vn.fromRectangle(o,r,s,ie.WGS84,Fme),c=a.center,d=a.halfAxes;t=X.multiplyTransformation(t,X.inverseTransformation(n,xJ),xJ),c=X.multiplyByPoint(t,c,c);let u=X.getMatrix3(t,wme);return d=$.multiply(u,d,d),l(i)&&i instanceof hd?(i.update(c,d),i):new hd(c,d)}function n7e(e,t,n,i){if(!X.equalsEpsilon(t,n,Z.EPSILON8))return i instanceof hd?Lme(e,t,n,i):Lme(e,t,n,void 0);let o=le.unpack(e,0,Wme);return i instanceof tu?(i.rectangle=le.clone(o,i.rectangle),i.minimumHeight=e[4],i.maximumHeight=e[5],i.computeBoundingVolumes(ie.WGS84),i):new tu({rectangle:o,minimumHeight:e[4],maximumHeight:e[5]})}function i7e(e,t,n){let i=m.fromElements(e[0],e[1],e[2],_J),o=e[3];i=X.multiplyByPoint(t,i,i);let r=X.getScale(t,Xme),s=m.maximumComponent(r);return o*=s,l(n)?(n.update(i,o),n):new lg(i,o)}pr.prototype.createBoundingVolume=function(e,t,n){let i=this.metadata,o;if(l(i)&&(o=YC.parseBoundingVolumeSemantic("TILE",i)),l(o)&&(e=o),!l(e))throw new de("boundingVolume must be defined");if(Ii(e,"3DTILES_bounding_volume_S2"))return new w2(e.extensions["3DTILES_bounding_volume_S2"]);let{box:r,region:s,sphere:a}=e;if(l(r)){let c=t7e(r,t,n);return this._verticalExaggeration!==1&&Rme(c,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c}if(l(s)){let c=n7e(s,t,this._initialTransform,n);return this._verticalExaggeration===1||(c instanceof hd?Rme(c,this._verticalExaggeration,this._verticalExaggerationRelativeHeight):(c.minimumHeight=Mr.getHeight(c.minimumHeight,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c.maximumHeight=Mr.getHeight(c.maximumHeight,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c.computeBoundingVolumes(ie.WGS84))),c}if(l(a)){let c=i7e(a,t,n);if(this._verticalExaggeration!==1){let d=Mr.getPosition(c.center,ie.WGS84,this._verticalExaggeration,this._verticalExaggerationRelativeHeight,_J),u=c.radius*this._verticalExaggeration;c.update(d,u)}return c}throw new de("boundingVolume must contain a sphere, region, or box")};var o7e=m.unpackArray(new Array(24).fill(0));function Rme(e,t,n){let i=e.boundingVolume.computeCorners(o7e).map(r=>Mr.getPosition(r,ie.WGS84,t,n,r)),o=vn.fromPoints(i,Fme);e.update(o.center,o.halfAxes)}pr.prototype.updateTransform=function(e,t){e=e??X.IDENTITY;let n=X.multiplyTransformation(e,this.transform,xJ),i=!X.equals(n,this.computedTransform),o=l(t)&&(this._verticalExaggeration!==t.verticalExaggeration||this._verticalExaggerationRelativeHeight!==t.verticalExaggerationRelativeHeight);if(!i&&!o)return;i&&X.clone(n,this.computedTransform),o&&(this._verticalExaggeration=t.verticalExaggeration,this._verticalExaggerationRelativeHeight=t.verticalExaggerationRelativeHeight);let r=this._header,s=this._contentHeader;this._boundingVolume=this.createBoundingVolume(r.boundingVolume,this.computedTransform,this._boundingVolume),l(this._contentBoundingVolume)&&(this._contentBoundingVolume=this.createBoundingVolume(s.boundingVolume,this.computedTransform,this._contentBoundingVolume)),l(this._viewerRequestVolume)&&(this._viewerRequestVolume=this.createBoundingVolume(r.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume)),this.updateGeometricErrorScale(),this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy()};pr.prototype.updateGeometricErrorScale=function(){let e=X.getScale(this.computedTransform,Xme),t=m.maximumComponent(e);if(this.geometricError=this._geometricError*t,!l(this.parent)){let n=this._tileset;n._scaledGeometricError=n._geometricError*t}};function r7e(e,t,n,i){if(!i.isRender)return;let o=l(e._contentHeader)&&l(e._contentHeader.boundingVolume),r=t.debugShowBoundingVolume||t.debugShowContentBoundingVolume&&!o;if(r){let c;e._finalResolution?e.hasRenderableContent?c=U.WHITE:c=U.DARKGRAY:c=U.YELLOW,l(e._debugBoundingVolume)||(e._debugBoundingVolume=e._boundingVolume.createDebugVolume(c)),e._debugBoundingVolume.update(n);let d=e._debugBoundingVolume.getGeometryInstanceAttributes("outline");d.color=tn.toValue(c,d.color)}else!r&&l(e._debugBoundingVolume)&&(e._debugBoundingVolume=e._debugBoundingVolume.destroy());t.debugShowContentBoundingVolume&&o?(l(e._debugContentBoundingVolume)||(e._debugContentBoundingVolume=e._contentBoundingVolume.createDebugVolume(U.BLUE)),e._debugContentBoundingVolume.update(n)):!t.debugShowContentBoundingVolume&&l(e._debugContentBoundingVolume)&&(e._debugContentBoundingVolume=e._debugContentBoundingVolume.destroy()),t.debugShowViewerRequestVolume&&l(e._viewerRequestVolume)?(l(e._debugViewerRequestVolume)||(e._debugViewerRequestVolume=e._viewerRequestVolume.createDebugVolume(U.YELLOW)),e._debugViewerRequestVolume.update(n)):!t.debugShowViewerRequestVolume&&l(e._debugViewerRequestVolume)&&(e._debugViewerRequestVolume=e._debugViewerRequestVolume.destroy());let s=t.debugColorizeTiles&&!e._debugColorizeTiles||l(t._heatmap.tilePropertyName),a=!t.debugColorizeTiles&&e._debugColorizeTiles;s?(t._heatmap.colorize(e,n),e._debugColorizeTiles=!0,e.color=e._debugColor):a&&(e._debugColorizeTiles=!1,e.color=U.WHITE),e._colorDirty&&(e._colorDirty=!1,e._content.applyDebugSettings(!0,e._color)),a&&t.makeStyleDirty()}function s7e(e,t,n){let i=e._expiredContent;if(!e.hasMultipleContents&&l(i)){if(!e.contentReady){try{i.update(t,n)}catch{}return}e._expiredContent.destroy(),e._expiredContent=void 0}if(l(e.content))try{e.content.update(t,n)}catch(o){throw e._contentState=ir.FAILED,o}}function a7e(e,t){let n=t.clippingPlanes,i=0;l(n)&&e._isClipped&&n.enabled&&(i=n.clippingPlanesState),i!==e._clippingPlanesState&&(e._clippingPlanesState=i,e.clippingPlanesDirty=!0)}function c7e(e,t){let n=t.clippingPolygons,i=0;l(n)&&e._isClippedByPolygon&&n.enabled&&(i=n.clippingPolygonsState),i!==e._clippingPolygonsState&&(e._clippingPolygonsState=i,e.clippingPolygonsDirty=!0)}pr.prototype.update=function(e,t,n){let{commandList:i}=t,o=i.length;a7e(this,e),c7e(this,e),r7e(this,e,t,n),s7e(this,e,t);let r=i.length;this._commandsLength=r-o;for(let s=o;s<r;++s){let a=i[s],c=a.pass===Ge.TRANSLUCENT;a.depthForTranslucentClassification=c}this.clippingPlanesDirty=!1,this.clippingPolygonsDirty=!1};var Vme=[];pr.prototype.process=function(e,t){!this.contentExpired&&!this.contentReady&&this._content.ready&&(O8e(this),this._selectedFrame=0,this.lastStyleTime=0,j.now(this._loadTimestamp),this._contentState=ir.READY,!this.hasTilesetContent&&!this.hasImplicitContent&&(e._statistics.incrementLoadCounts(this.content),++e._statistics.numberOfTilesWithContentReady,++e._statistics.numberOfLoadedTilesTotal,e._cache.add(this)));let n=t.commandList;t.commandList=Vme;try{this._content.update(e,t)}catch(i){throw this._contentState=ir.FAILED,i}Vme.length=0,t.commandList=n};function Gme(e,t,n){let i=e*Math.pow(10,t);return parseInt(i)*Math.pow(10,n)}function e5(e,t,n){return Math.max(Z.normalize(e,t,n)-Z.EPSILON7,0)}pr.prototype.updatePriority=function(){let e=this.tileset,t=e.preferLeaves,n=e._minimumPriority,i=e._maximumPriority,o=4,r=1,s=0,a=o,c=s+a,d=o,u=c+d,h=r,p=Math.pow(10,u),g=u+h,f=r,b=Math.pow(10,g),x=g+f,I=Math.pow(10,x),_=e5(this._depth,n.depth,i.depth);_=t?1-_:_;let S=!e.isSkippingLevelOfDetail&&this.refine===tr.REPLACE?e5(this._priorityHolder._distanceToCamera,n.distance,i.distance):e5(this._priorityReverseScreenSpaceError,n.reverseScreenSpaceError,i.reverseScreenSpaceError),R=Gme(S,a,s),G=this._priorityProgressiveResolution?0:p,B=e5(this._priorityHolder._foveatedFactor,n.foveatedFactor,i.foveatedFactor),w=Gme(B,d,c),F=this.priorityDeferred?b:0,P=e._pass===zo.PRELOAD_FLIGHT?0:I;this._priority=_+R+G+w+F+P};pr.prototype.isDestroyed=function(){return!1};pr.prototype.destroy=function(){return this._content=this._content&&this._content.destroy(),this._expiredContent=this._expiredContent&&!this._expiredContent.isDestroyed()&&this._expiredContent.destroy(),this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy(),me(this)};var ym=pr;var n8n=y(C(),1);var Yjn=y(C(),1);function dg(e){e=e??Y.EMPTY_OBJECT;let t=e.id,n=e.group,i=e.class,o=l(n.properties)?n.properties:{};this._class=i,this._properties=o,this._id=t,this._extras=n.extras,this._extensions=n.extensions}Object.defineProperties(dg.prototype,{class:{get:function(){return this._class}},id:{get:function(){return this._id}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});dg.prototype.hasProperty=function(e){return Kn.hasProperty(e,this._properties,this._class)};dg.prototype.hasPropertyBySemantic=function(e){return Kn.hasPropertyBySemantic(e,this._properties,this._class)};dg.prototype.getPropertyIds=function(e){return Kn.getPropertyIds(this._properties,this._class,e)};dg.prototype.getProperty=function(e){return Kn.getProperty(e,this._properties,this._class)};dg.prototype.setProperty=function(e,t){return Kn.setProperty(e,t,this._properties,this._class)};dg.prototype.getPropertyBySemantic=function(e){return Kn.getPropertyBySemantic(e,this._properties,this._class)};dg.prototype.setPropertyBySemantic=function(e,t){return Kn.setPropertyBySemantic(e,t,this._properties,this._class)};var VT=dg;var Jjn=y(C(),1);function ug(e){e=e??Y.EMPTY_OBJECT;let t=e.tileset,n=e.class,i=l(t.properties)?t.properties:{};this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(ug.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});ug.prototype.hasProperty=function(e){return Kn.hasProperty(e,this._properties,this._class)};ug.prototype.hasPropertyBySemantic=function(e){return Kn.hasPropertyBySemantic(e,this._properties,this._class)};ug.prototype.getPropertyIds=function(e){return Kn.getPropertyIds(this._properties,this._class,e)};ug.prototype.getProperty=function(e){return Kn.getProperty(e,this._properties,this._class)};ug.prototype.setProperty=function(e,t){return Kn.setProperty(e,t,this._properties,this._class)};ug.prototype.getPropertyBySemantic=function(e){return Kn.getPropertyBySemantic(e,this._properties,this._class)};ug.prototype.setPropertyBySemantic=function(e,t){return Kn.setPropertyBySemantic(e,t,this._properties,this._class)};var X2=ug;function Pme(e){e=e??Y.EMPTY_OBJECT;let t=e.metadataJson,n=e.schema,i=t.metadata??t.tileset,o;l(i)&&(o=new X2({tileset:i,class:n.classes[i.class]}));let r=[],s=[],a=t.groups;if(Array.isArray(a)){let c=a.length;for(let d=0;d<c;d++){let u=a[d];s.push(new VT({group:u,class:n.classes[u.class]}))}}else if(l(a)){r=Object.keys(a).sort();let c=r.length;for(let d=0;d<c;d++){let u=r[d];if(a.hasOwnProperty(u)){let h=a[u];s.push(new VT({id:u,group:a[u],class:n.classes[h.class]}))}}}this._schema=n,this._groups=s,this._groupIds=r,this._tileset=o,this._statistics=t.statistics,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(Pme.prototype,{schema:{get:function(){return this._schema}},groups:{get:function(){return this._groups}},groupIds:{get:function(){return this._groupIds}},tileset:{get:function(){return this._tileset}},statistics:{get:function(){return this._statistics}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var Gx=Pme;var c8n=y(C(),1);var Mme={},l7e=new m;Mme.checkChildrenWithinParent=function(e){let t=e.children,n=t.length,i=e.boundingVolume;if(i instanceof hd||i instanceof tu){let o=i._orientedBoundingBox;e._optimChildrenWithinParent=fm.USE_OPTIMIZATION;for(let r=0;r<n;++r){let a=t[r].boundingVolume;if(!(a instanceof hd||a instanceof tu)){e._optimChildrenWithinParent=fm.SKIP_OPTIMIZATION;break}let c=a._orientedBoundingBox,d=m.subtract(c.center,o.center,l7e),u=m.magnitude(d);m.divideByScalar(d,u,d);let h=Math.abs(o.halfAxes[0]*d.x)+Math.abs(o.halfAxes[1]*d.y)+Math.abs(o.halfAxes[2]*d.z)+Math.abs(o.halfAxes[3]*d.x)+Math.abs(o.halfAxes[4]*d.y)+Math.abs(o.halfAxes[5]*d.z)+Math.abs(o.halfAxes[6]*d.x)+Math.abs(o.halfAxes[7]*d.y)+Math.abs(o.halfAxes[8]*d.z),p=Math.abs(c.halfAxes[0]*d.x)+Math.abs(c.halfAxes[1]*d.y)+Math.abs(c.halfAxes[2]*d.z)+Math.abs(c.halfAxes[3]*d.x)+Math.abs(c.halfAxes[4]*d.y)+Math.abs(c.halfAxes[5]*d.z)+Math.abs(c.halfAxes[6]*d.x)+Math.abs(c.halfAxes[7]*d.y)+Math.abs(c.halfAxes[8]*d.z);if(h<=p+u){e._optimChildrenWithinParent=fm.SKIP_OPTIMIZATION;break}}}return e._optimChildrenWithinParent===fm.USE_OPTIMIZATION};var W2=Mme;var p8n=y(C(),1);var u8n=y(C(),1);function F2(){this.head=void 0,this.tail=void 0,this._length=0}Object.defineProperties(F2.prototype,{length:{get:function(){return this._length}}});function d7e(e,t,n){this.item=e,this.previous=t,this.next=n}F2.prototype.add=function(e){let t=new d7e(e,this.tail,void 0);return l(this.tail)?(this.tail.next=t,this.tail=t):(this.head=t,this.tail=t),++this._length,t};function vme(e,t){l(t.previous)&&l(t.next)?(t.previous.next=t.next,t.next.previous=t.previous):l(t.previous)?(t.previous.next=void 0,e.tail=t.previous):l(t.next)?(t.next.previous=void 0,e.head=t.next):(e.head=void 0,e.tail=void 0),t.next=void 0,t.previous=void 0}F2.prototype.remove=function(e){l(e)&&(vme(this,e),--this._length)};F2.prototype.splice=function(e,t){if(e===t)return;vme(this,t);let n=e.next;e.next=t,this.tail===e?this.tail=t:n.previous=t,t.next=n,t.previous=e};var P2=F2;function Zx(){this._list=new P2,this._sentinel=this._list.add(),this._trimTiles=!1}Zx.prototype.reset=function(){this._list.splice(this._list.tail,this._sentinel)};Zx.prototype.touch=function(e){let t=e.cacheNode;l(t)&&this._list.splice(this._sentinel,t)};Zx.prototype.add=function(e){l(e.cacheNode)||(e.cacheNode=this._list.add(e))};Zx.prototype.unloadTile=function(e,t,n){let i=t.cacheNode;l(i)&&(this._list.remove(i),t.cacheNode=void 0,n(e,t))};Zx.prototype.unloadTiles=function(e,t){let n=this._trimTiles;this._trimTiles=!1;let i=this._list,o=this._sentinel,r=i.head;for(;r!==o&&(e.totalMemoryUsageInBytes>e.cacheBytes||n);){let s=r.item;r=r.next,this.unloadTile(e,s,t)}};Zx.prototype.trim=function(){this._trimTiles=!0};var M2=Zx;var x8n=y(C(),1);function t5(e){this.tilePropertyName=e,this._minimum=Number.MAX_VALUE,this._maximum=-Number.MAX_VALUE,this._previousMinimum=Number.MAX_VALUE,this._previousMaximum=-Number.MAX_VALUE,this._referenceMinimum={},this._referenceMaximum={}}function TJ(e,t){let n;return t==="_loadTimestamp"?n=j.toDate(e).getTime():n=e,n}t5.prototype.setReferenceMinimumMaximum=function(e,t,n){this._referenceMinimum[n]=TJ(e,n),this._referenceMaximum[n]=TJ(t,n)};function u7e(e,t){let n=e.tilePropertyName;if(l(n)){let i=TJ(t[n],n);return l(i)?(e._maximum=Math.max(i,e._maximum),e._minimum=Math.min(i,e._minimum),i):(e.tilePropertyName=void 0,i)}}var EJ=[new U(.1,.1,.1,1),new U(.153,.278,.878,1),new U(.827,.231,.49,1),new U(.827,.188,.22,1),new U(1,.592,.259,1),new U(1,.843,0,1)];t5.prototype.colorize=function(e,t){let n=this.tilePropertyName;if(!l(n)||!e.contentAvailable||e._selectedFrame!==t.frameNumber)return;let i=u7e(this,e),o=this._previousMinimum,r=this._previousMaximum;if(o===Number.MAX_VALUE||r===-Number.MAX_VALUE)return;let s=r-o+Z.EPSILON7,c=Z.clamp(i-o,0,s)/s,d=EJ.length-1,u=c*d,h=Math.floor(u),p=Math.ceil(u),g=u-h,f=EJ[h],b=EJ[p],x=U.clone(U.WHITE);x.red=Z.lerp(f.red,b.red,g),x.green=Z.lerp(f.green,b.green,g),x.blue=Z.lerp(f.blue,b.blue,g),e._debugColor=x};t5.prototype.resetMinimumMaximum=function(){let e=this.tilePropertyName;if(l(e)){let t=this._referenceMinimum[e],n=this._referenceMaximum[e],i=l(t)&&l(n);this._previousMinimum=i?t:this._minimum,this._previousMaximum=i?n:this._maximum,this._minimum=Number.MAX_VALUE,this._maximum=-Number.MAX_VALUE}};var v2=t5;var T8n=y(C(),1);function GT(){this.selected=0,this.visited=0,this.numberOfCommands=0,this.numberOfAttemptedRequests=0,this.numberOfPendingRequests=0,this.numberOfTilesProcessing=0,this.numberOfTilesWithContentReady=0,this.numberOfTilesTotal=0,this.numberOfLoadedTilesTotal=0,this.numberOfFeaturesSelected=0,this.numberOfFeaturesLoaded=0,this.numberOfPointsSelected=0,this.numberOfPointsLoaded=0,this.numberOfTrianglesSelected=0,this.numberOfTilesStyled=0,this.numberOfFeaturesStyled=0,this.numberOfTilesCulledWithChildrenUnion=0,this.geometryByteLength=0,this.texturesByteLength=0,this.texturesReferenceCounterById={},this.batchTableByteLength=0}GT.prototype.clear=function(){this.selected=0,this.visited=0,this.numberOfCommands=0,this.numberOfAttemptedRequests=0,this.numberOfFeaturesSelected=0,this.numberOfPointsSelected=0,this.numberOfTrianglesSelected=0,this.numberOfTilesStyled=0,this.numberOfFeaturesStyled=0,this.numberOfTilesCulledWithChildrenUnion=0};GT.prototype.incrementSelectionCounts=function(e){this.numberOfFeaturesSelected+=e.featuresLength,this.numberOfPointsSelected+=e.pointsLength,this.numberOfTrianglesSelected+=e.trianglesLength;let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.incrementSelectionCounts(t[i])}};GT.prototype.incrementLoadCounts=function(e){if(this.numberOfFeaturesLoaded+=e.featuresLength,this.numberOfPointsLoaded+=e.pointsLength,this.geometryByteLength+=e.geometryByteLength,this.batchTableByteLength+=e.batchTableByteLength,!(e instanceof jd))this.texturesByteLength+=e.texturesByteLength;else{let n=e.getTextureIds();for(let i of n){let o=this.texturesReferenceCounterById[i]??0;if(o===0){let r=e.getTextureByteLengthById(i);this.texturesByteLength+=r}this.texturesReferenceCounterById[i]=o+1}}let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.incrementLoadCounts(t[i])}};GT.prototype.decrementLoadCounts=function(e){if(this.numberOfFeaturesLoaded-=e.featuresLength,this.numberOfPointsLoaded-=e.pointsLength,this.geometryByteLength-=e.geometryByteLength,this.batchTableByteLength-=e.batchTableByteLength,!(e instanceof jd))this.texturesByteLength-=e.texturesByteLength;else{let n=e.getTextureIds();for(let i of n){let o=this.texturesReferenceCounterById[i];if(o===1){delete this.texturesReferenceCounterById[i];let r=e.getTextureByteLengthById(i);this.texturesByteLength-=r}else this.texturesReferenceCounterById[i]=o-1}}let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.decrementLoadCounts(t[i])}};GT.clone=function(e,t){t.selected=e.selected,t.visited=e.visited,t.numberOfCommands=e.numberOfCommands,t.numberOfAttemptedRequests=e.numberOfAttemptedRequests,t.numberOfPendingRequests=e.numberOfPendingRequests,t.numberOfTilesProcessing=e.numberOfTilesProcessing,t.numberOfTilesWithContentReady=e.numberOfTilesWithContentReady,t.numberOfTilesTotal=e.numberOfTilesTotal,t.numberOfFeaturesSelected=e.numberOfFeaturesSelected,t.numberOfFeaturesLoaded=e.numberOfFeaturesLoaded,t.numberOfPointsSelected=e.numberOfPointsSelected,t.numberOfPointsLoaded=e.numberOfPointsLoaded,t.numberOfTrianglesSelected=e.numberOfTrianglesSelected,t.numberOfTilesStyled=e.numberOfTilesStyled,t.numberOfFeaturesStyled=e.numberOfFeaturesStyled,t.numberOfTilesCulledWithChildrenUnion=e.numberOfTilesCulledWithChildrenUnion,t.geometryByteLength=e.geometryByteLength,t.texturesByteLength=e.texturesByteLength,t.texturesReferenceCounterById={...e.texturesReferenceCounterById},t.batchTableByteLength=e.batchTableByteLength};var Nh=GT;var R8n=y(C(),1);function N2(){this._style=void 0,this._styleDirty=!1,this._lastStyleTime=0}Object.defineProperties(N2.prototype,{style:{get:function(){return this._style},set:function(e){e!==this._style&&(this._style=e,this._styleDirty=!0)}}});N2.prototype.makeDirty=function(){this._styleDirty=!0};N2.prototype.resetDirty=function(){this._styleDirty=!1};N2.prototype.applyStyle=function(e){if(!l(e.root)||l(this._style)&&!this._style._ready)return;let t=this._styleDirty;t&&++this._lastStyleTime;let n=this._lastStyleTime,i=e._statistics,o=t?e._selectedTiles:e._selectedTilesToStyle,r=o.length;for(let s=0;s<r;++s){let a=o[s];if(a.lastStyleTime!==n){let c=a.content;a.lastStyleTime=n,c.applyStyle(this._style),i.numberOfFeaturesStyled+=c.featuresLength,++i.numberOfTilesStyled}}};var D2=N2;var F8n=y(C(),1);function m7e(e,t,n){let i=Ii(t,"3DTILES_implicit_tiling")?t.extensions["3DTILES_implicit_tiling"]:t.implicitTiling;this.baseResource=e,this.geometricError=t.geometricError,this.metadataSchema=n;let o=t.boundingVolume;if(!l(o.box)&&!l(o.region)&&!Ii(o,"3DTILES_bounding_volume_S2")&&!Ii(o,"3DTILES_bounding_volume_cylinder"))throw new de("Only box, region, 3DTILES_bounding_volume_S2, and 3DTILES_bounding_volume_cylinder are supported for implicit tiling");this.boundingVolume=o,this.refine=t.refine,this.subtreeUriTemplate=new Ve({url:i.subtrees.uri}),this.contentUriTemplates=[],this.contentHeaders=[];let r=h7e(t);for(let s=0;s<r.length;s++){let a=r[s];this.contentHeaders.push(ke(a,!0));let c=new Ve({url:a.uri});this.contentUriTemplates.push(c)}this.contentCount=this.contentHeaders.length,this.tileHeader=f7e(t),this.subdivisionScheme=Cs[i.subdivisionScheme],this.branchingFactor=Cs.getBranchingFactor(this.subdivisionScheme),this.subtreeLevels=i.subtreeLevels,l(i.availableLevels)?this.availableLevels=i.availableLevels:this.availableLevels=i.maximumLevel+1}function h7e(e){if(Ii(e,"3DTILES_multiple_contents")){let t=e.extensions["3DTILES_multiple_contents"];return l(t.contents)?t.contents:t.content}return l(e.contents)?e.contents:l(e.content)?[e.content]:[]}function f7e(e){let t=ke(e,!0);return l(t.extensions)&&(delete t.extensions["3DTILES_implicit_tiling"],delete t.extensions["3DTILES_multiple_contents"],Object.keys(t.extensions).length===0&&delete t.extensions),delete t.implicitTiling,delete t.contents,delete t.content,t}var Bx=m7e;var k8n=y(C(),1);var v8n=y(C(),1);var Q2={};function Nme(e){return e=(e^e<<8)&16711935,e=(e^e<<4)&252645135,e=(e^e<<2)&858993459,e=(e^e<<1)&1431655765,e}function SJ(e){return e=(e^e<<16)&50331903,e=(e^e<<8)&50393103,e=(e^e<<4)&51130563,e=(e^e<<2)&153391689,e}function Dme(e){return e&=1431655765,e=(e^e>>1)&858993459,e=(e^e>>2)&252645135,e=(e^e>>4)&16711935,e=(e^e>>8)&65535,e}function LJ(e){return e&=153391689,e=(e^e>>2)&51130563,e=(e^e>>4)&50393103,e=(e^e>>8)&4278190335,e=(e^e>>16)&1023,e}Q2.encode2D=function(e,t){return(Nme(e)|Nme(t)<<1)>>>0};Q2.decode2D=function(e,t){return l(t)||(t=new Array(2)),t[0]=Dme(e),t[1]=Dme(e>>1),t};Q2.encode3D=function(e,t,n){return SJ(e)|SJ(t)<<1|SJ(n)<<2};Q2.decode3D=function(e,t){return l(t)||(t=new Array(3)),t[0]=LJ(e),t[1]=LJ(e>>1),t[2]=LJ(e>>2),t};var x0=Q2;function or(e){this.subdivisionScheme=e.subdivisionScheme,this.subtreeLevels=e.subtreeLevels,this.level=e.level,this.x=e.x,this.y=e.y,this.z=void 0,e.subdivisionScheme===Cs.OCTREE&&(this.z=e.z)}Object.defineProperties(or.prototype,{childIndex:{get:function(){let e=0;return e|=this.x&1,e|=(this.y&1)<<1,this.subdivisionScheme===Cs.OCTREE&&(e|=(this.z&1)<<2),e}},mortonIndex:{get:function(){return this.subdivisionScheme===Cs.OCTREE?x0.encode3D(this.x,this.y,this.z):x0.encode2D(this.x,this.y)}},tileIndex:{get:function(){let e=this.subdivisionScheme===Cs.OCTREE?((1<<3*this.level)-1)/7:((1<<2*this.level)-1)/3,t=this.mortonIndex;return e+t}}});or.prototype.getDescendantCoordinates=function(e){let t=this.level+e.level,n=(this.x<<e.level)+e.x,i=(this.y<<e.level)+e.y;if(this.subdivisionScheme===Cs.OCTREE){let o=(this.z<<e.level)+e.z;return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i,z:o})}return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i})};or.prototype.getAncestorCoordinates=function(e){let t=1<<e,n=this.level-e,i=Math.floor(this.x/t),o=Math.floor(this.y/t);if(this.subdivisionScheme===Cs.OCTREE){let r=Math.floor(this.z/t);return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:n,x:i,y:o,z:r})}return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:n,x:i,y:o})};or.prototype.getOffsetCoordinates=function(e){let t=e.level-this.level,n=1<<t,i=e.x%n,o=e.y%n;if(this.subdivisionScheme===Cs.OCTREE){let r=e.z%n;return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:i,y:o,z:r})}return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:i,y:o})};or.prototype.getChildCoordinates=function(e){let t=this.level+1,n=2*this.x+e%2,i=2*this.y+Math.floor(e/2)%2;if(this.subdivisionScheme===Cs.OCTREE){let o=2*this.z+Math.floor(e/4)%2;return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i,z:o})}return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i})};or.prototype.getSubtreeCoordinates=function(){return this.getAncestorCoordinates(this.level%this.subtreeLevels)};or.prototype.getParentSubtreeCoordinates=function(){return this.getAncestorCoordinates(this.level%this.subtreeLevels+this.subtreeLevels)};or.prototype.isAncestor=function(e){let t=e.level-this.level;if(t<=0)return!1;let n=e.x>>t,i=e.y>>t,o=this.x===n,r=this.y===i;if(this.subdivisionScheme===Cs.OCTREE){let s=e.z>>t,a=this.z===s;return o&&r&&a}return o&&r};or.prototype.isEqual=function(e){return this.subdivisionScheme===e.subdivisionScheme&&this.subtreeLevels===e.subtreeLevels&&this.level===e.level&&this.x===e.x&&this.y===e.y&&(this.subdivisionScheme===Cs.OCTREE?this.z===e.z:!0)};or.prototype.isImplicitTilesetRoot=function(){return this.level===0};or.prototype.isSubtreeRoot=function(){return this.level%this.subtreeLevels===0};or.prototype.isBottomOfSubtree=function(){return this.level%this.subtreeLevels===this.subtreeLevels-1};or.prototype.getTemplateValues=function(){let e={level:this.level,x:this.x,y:this.y};return this.subdivisionScheme===Cs.OCTREE&&(e.z=this.z),e};var Qme=[0,0,0];or.fromMortonIndex=function(e,t,n,i){let o;return e===Cs.OCTREE?(o=x0.decode3D(i,Qme),new or({subdivisionScheme:e,subtreeLevels:t,level:n,x:o[0],y:o[1],z:o[2]})):(o=x0.decode2D(i,Qme),new or({subdivisionScheme:e,subtreeLevels:t,level:n,x:o[0],y:o[1]}))};or.fromTileIndex=function(e,t,n){let i,o,r;return e===Cs.OCTREE?(i=Math.floor(Z.log2(7*n+1)/3),o=((1<<3*i)-1)/7,r=n-o):(i=Math.floor(Z.log2(3*n+1)/2),o=((1<<2*i)-1)/3,r=n-o),or.fromMortonIndex(e,t,i,r)};var wx=or;var i7n=y(C(),1);var j8n=y(C(),1);function mg(){}mg.selectTiles=function(e,t){Ae.throwInstantiationError()};mg.sortChildrenByDistanceToCamera=function(e,t){return t._distanceToCamera===0&&e._distanceToCamera===0?t._centerZDepth-e._centerZDepth:t._distanceToCamera-e._distanceToCamera};mg.canTraverse=function(e){return e.children.length===0?!1:e.hasTilesetContent||e.hasImplicitContent?!e.contentExpired:e._screenSpaceError>e.tileset.memoryAdjustedScreenSpaceError};mg.selectTile=function(e,t){if(e.contentVisibility(t)===on.OUTSIDE)return;e._wasSelectedLastFrame=!0;let{content:n,tileset:i}=e;n.featurePropertiesDirty?(n.featurePropertiesDirty=!1,e.lastStyleTime=0,i._selectedTilesToStyle.push(e)):e._selectedFrame<t.frameNumber-1&&(i._selectedTilesToStyle.push(e),e._wasSelectedLastFrame=!1),e._selectedFrame=t.frameNumber,i._selectedTiles.push(e)};mg.visitTile=function(e,t){++e.tileset._statistics.visited,e._visitedFrame=t.frameNumber};mg.touchTile=function(e,t){e._touchedFrame!==t.frameNumber&&(e.tileset._cache.touch(e),e._touchedFrame=t.frameNumber)};mg.loadTile=function(e,t){let{tileset:n}=e;if(e._requestedFrame===t.frameNumber||!e.hasUnloadedRenderableContent&&!e.contentExpired||!p7e(e,t))return;let i=t.camera.timeSinceMoved<n.foveatedTimeDelay;e.priorityDeferred&&i||(e._requestedFrame=t.frameNumber,n._requestedTiles.push(e))};function p7e(e,t){let{tileset:n}=e;if(!n._cullRequestsWhileMoving)return!0;let{positionWCDeltaMagnitude:i,positionWCDeltaMagnitudeLastFrame:o}=t.camera,r=i!==0?i:o,s=Math.max(e.boundingSphere.radius*2,1);return n.cullRequestsWhileMovingMultiplier*r/s<1}mg.updateTile=function(e,t){Ume(e,t),e.updateExpiration(),e._wasMinPriorityChild=!1,e._priorityHolder=e,b7e(e),e._shouldSelect=!1,e._finalResolution=!0};function Ume(e,t){if(e.updateVisibility(t),!e.isVisible)return;let n=e.children.length>0;if((e.hasTilesetContent||e.hasImplicitContent)&&n){let r=e.children[0];Ume(r,t),e._visible=r._visible;return}if(A7e(e,t)){e._visible=!1;return}let i=e.refine===tr.REPLACE,o=e._optimChildrenWithinParent===fm.USE_OPTIMIZATION;if(i&&o&&n&&!g7e(e,t)){++e.tileset._statistics.numberOfTilesCulledWithChildrenUnion,e._visible=!1;return}}function A7e(e,t){let{parent:n,tileset:i}=e;return!l(n)||n.hasTilesetContent||n.hasImplicitContent||n.refine!==tr.ADD?!1:e.getScreenSpaceError(t,!0)<=i.memoryAdjustedScreenSpaceError}function g7e(e,t){let n=!1,i=e.children;for(let o=0;o<i.length;++o){let r=i[o];r.updateVisibility(t),n=n||r.isVisible}return n}function b7e(e){let t=e.tileset._minimumPriority,n=e.tileset._maximumPriority,i=e._priorityHolder;n.distance=Math.max(i._distanceToCamera,n.distance),t.distance=Math.min(i._distanceToCamera,t.distance),n.depth=Math.max(e._depth,n.depth),t.depth=Math.min(e._depth,t.depth),n.foveatedFactor=Math.max(i._foveatedFactor,n.foveatedFactor),t.foveatedFactor=Math.min(i._foveatedFactor,t.foveatedFactor),n.reverseScreenSpaceError=Math.max(e._priorityReverseScreenSpaceError,n.reverseScreenSpaceError),t.reverseScreenSpaceError=Math.min(e._priorityReverseScreenSpaceError,t.reverseScreenSpaceError)}var ya=mg;function kme(){}var U2={stack:new bl,stackMaximumLength:0};kme.selectTiles=function(e,t){e._selectedTiles.length=0,e._requestedTiles.length=0,e.hasMixedContent=!1;let n=!0,i=e.root;if(i.updateVisibility(t),!i.isVisible)return n;let{touchTile:o,visitTile:r}=ya,s=U2.stack;for(s.push(i);s.length>0;){U2.stackMaximumLength=Math.max(U2.stackMaximumLength,s.length);let a=s.pop(),c=a.refine===tr.ADD,d=a.refine===tr.REPLACE,u=y7e(a);u&&C7e(a,s,t),(c||d&&!u)&&(x7e(e,a),o(a,t),I7e(a,t),a.hasRenderableContent&&!a.contentAvailable&&(n=!1)),r(a,t)}return U2.stack.trim(U2.stackMaximumLength),n};function y7e(e){return e.children.length===0?!1:e.hasTilesetContent||e.hasImplicitContent?!e.contentExpired:(e.hasEmptyContent,!0)}function C7e(e,t,n){let{children:i}=e;for(let o=0;o<i.length;++o){let r=i[o];r.updateVisibility(n),r.isVisible&&t.push(r)}}function x7e(e,t){(t.hasUnloadedRenderableContent||t.contentExpired)&&(t._priority=0,e._requestedTiles.push(t))}function I7e(e,t){e.contentAvailable&&e.contentVisibility(t)!==on.OUTSIDE&&e.tileset._selectedTiles.push(e)}var k2=kme;var l7n=y(C(),1);function Yme(){}var Y2={stack:new bl,stackMaximumLength:0},O2={stack:new bl,stackMaximumLength:0};Yme.selectTiles=function(e,t){if(e._requestedTiles.length=0,e.debugFreezeFrame)return;e._selectedTiles.length=0,e._selectedTilesToStyle.length=0,e._emptyTiles.length=0,e.hasMixedContent=!1;let n=e.root;if(ya.updateTile(n,t),!n.isVisible||n.getScreenSpaceError(t,!0)<=e.memoryAdjustedScreenSpaceError)return;E7e(n,t),Y2.stack.trim(Y2.stackMaximumLength),O2.stack.trim(O2.stackMaximumLength);let i=e._requestedTiles;for(let o=0;o<i.length;++o)i[o].updatePriority()};function RJ(e,t){e.contentAvailable&&ya.selectTile(e,t)}function _7e(e,t,n){let i=e.refine===tr.REPLACE,{tileset:o,children:r}=e,{updateTile:s,loadTile:a,touchTile:c}=ya;for(let f=0;f<r.length;++f)s(r[f],n);r.sort(ya.sortChildrenByDistanceToCamera);let d=i&&e.hasRenderableContent,u=!0,h=!1,p=-1,g=Number.MAX_VALUE;for(let f=0;f<r.length;++f){let b=r[f];if(b.isVisible?(t.push(b),b._foveatedFactor<g&&(p=f,g=b._foveatedFactor),h=!0):(d||o.loadSiblings)&&(b._foveatedFactor<g&&(p=f,g=b._foveatedFactor),a(b,n),c(b,n)),d){let x;b._inRequestVolume?b.hasRenderableContent?x=b.contentAvailable:x=T7e(b,n):x=!1,u=u&&x}}if(h||(u=!1),p!==-1&&i){let f=r[p];f._wasMinPriorityChild=!0;let b=(e._wasMinPriorityChild||e===o.root)&&g<=e._priorityHolder._foveatedFactor?e._priorityHolder:e;b._foveatedFactor=Math.min(f._foveatedFactor,b._foveatedFactor),b._distanceToCamera=Math.min(f._distanceToCamera,b._distanceToCamera);for(let x=0;x<r.length;++x)r[x]._priorityHolder=b}return u}function E7e(e,t){let{tileset:n}=e,{canTraverse:i,loadTile:o,visitTile:r,touchTile:s}=ya,a=Y2.stack;for(a.push(e);a.length>0;){Y2.stackMaximumLength=Math.max(Y2.stackMaximumLength,a.length);let c=a.pop(),d=c.parent,u=!l(d)||d._refines;c._refines=i(c)?_7e(c,a,t)&&u:!1;let h=!c._refines&&u;c.hasRenderableContent?c.refine===tr.ADD?(RJ(c,t),o(c,t)):c.refine===tr.REPLACE&&(o(c,t),h&&RJ(c,t)):(n._emptyTiles.push(c),o(c,t),h&&RJ(c,t)),r(c,t),s(c,t)}}function T7e(e,t){let{canTraverse:n,updateTile:i,loadTile:o,touchTile:r}=ya,s=!0,a=O2.stack;for(a.push(e);a.length>0;){O2.stackMaximumLength=Math.max(O2.stackMaximumLength,a.length);let c=a.pop(),d=c.children,u=d.length,h=!c.hasRenderableContent&&n(c);if(!h&&!c.contentAvailable&&(s=!1),i(c,t),c.isVisible||(o(c,t),r(c,t)),h)for(let p=0;p<u;++p){let g=d[p];a.push(g)}}return e.hasEmptyContent||s}var H2=Yme;var p7n=y(C(),1);function Ome(){}var z2={stack:new bl,stackMaximumLength:0},K2={stack:new bl,stackMaximumLength:0},hg={stack:new bl,stackMaximumLength:0,ancestorStack:new bl,ancestorStackMaximumLength:0},S7e=2;Ome.selectTiles=function(e,t){if(e._requestedTiles.length=0,e.debugFreezeFrame)return;e._selectedTiles.length=0,e._selectedTilesToStyle.length=0,e._emptyTiles.length=0,e.hasMixedContent=!1;let n=e.root;if(ya.updateTile(n,t),!n.isVisible||n.getScreenSpaceError(t,!0)<=e.memoryAdjustedScreenSpaceError)return;B7e(n,t),w7e(n,t),z2.stack.trim(z2.stackMaximumLength),K2.stack.trim(K2.stackMaximumLength),hg.stack.trim(hg.stackMaximumLength),hg.ancestorStack.trim(hg.ancestorStackMaximumLength);let i=e._requestedTiles;for(let o=0;o<i.length;++o)i[o].updatePriority()};function L7e(e,t){let{updateTile:n,touchTile:i,selectTile:o}=ya,r=K2.stack;for(r.push(e);r.length>0;){K2.stackMaximumLength=Math.max(K2.stackMaximumLength,r.length);let a=r.pop().children;for(let c=0;c<a.length;++c){let d=a[c];d.isVisible&&(d.contentAvailable?(n(d,t),i(d,t),o(d,t)):d._depth-e._depth<S7e&&r.push(d))}}}function n5(e,t){let n=e.contentAvailable?e:e._ancestorWithContentAvailable;l(n)?n._shouldSelect=!0:L7e(e,t)}function R7e(e,t){e._ancestorWithContent=void 0,e._ancestorWithContentAvailable=void 0;let{parent:n}=e;if(!l(n))return;let i=!n.hasUnloadedRenderableContent||n._requestedFrame===t.frameNumber;e._ancestorWithContent=i?n:n._ancestorWithContent,e._ancestorWithContentAvailable=n.contentAvailable?n:n._ancestorWithContentAvailable}function V7e(e,t){let n=t._ancestorWithContent;return!e.immediatelyLoadDesiredLevelOfDetail&&(t._priorityProgressiveResolutionScreenSpaceErrorLeaf||l(n)&&t._screenSpaceError<n._screenSpaceError/e.skipScreenSpaceErrorFactor&&t._depth>n._depth+e.skipLevels)}function G7e(e,t,n){let{tileset:i,children:o}=e,{updateTile:r,loadTile:s,touchTile:a}=ya;for(let d=0;d<o.length;++d)r(o[d],n);o.sort(ya.sortChildrenByDistanceToCamera);let c=!1;for(let d=0;d<o.length;++d){let u=o[d];u.isVisible?(t.push(u),c=!0):i.loadSiblings&&(s(u,n),a(u,n))}return c}function Z7e(e,t){let{tileset:n}=e;return n.immediatelyLoadDesiredLevelOfDetail?!1:l(e._ancestorWithContent)?e._screenSpaceError===0?e.parent._screenSpaceError>t:e._screenSpaceError>t:!0}function B7e(e,t){let{tileset:n}=e,i=n.immediatelyLoadDesiredLevelOfDetail?Number.MAX_VALUE:Math.max(n.baseScreenSpaceError,n.memoryAdjustedScreenSpaceError),{canTraverse:o,loadTile:r,visitTile:s,touchTile:a}=ya,c=z2.stack;for(c.push(e);c.length>0;){z2.stackMaximumLength=Math.max(z2.stackMaximumLength,c.length);let d=c.pop();R7e(d,t);let u=d.parent,h=!l(u)||u._refines;d._refines=o(d)?G7e(d,c,t)&&h:!1;let p=!d._refines&&h;d.hasRenderableContent?d.refine===tr.ADD?(n5(d,t),r(d,t)):d.refine===tr.REPLACE&&(Z7e(d,i)?(r(d,t),p&&n5(d,t)):p?(n5(d,t),r(d,t)):V7e(n,d)&&r(d,t)):(n._emptyTiles.push(d),r(d,t),p&&n5(d,t)),s(d,t),a(d,t)}}function w7e(e,t){let{selectTile:n,canTraverse:i}=ya,{stack:o,ancestorStack:r}=hg,s;for(o.push(e);o.length>0||r.length>0;){if(hg.stackMaximumLength=Math.max(hg.stackMaximumLength,o.length),hg.ancestorStackMaximumLength=Math.max(hg.ancestorStackMaximumLength,r.length),r.length>0){let d=r.peek();if(d._stackLength===o.length){r.pop(),d!==s&&(d._finalResolution=!1),n(d,t);continue}}let a=o.pop();if(!l(a))continue;let c=i(a);if(a._shouldSelect)if(a.refine===tr.ADD)n(a,t);else{if(a._selectionDepth=r.length,a._selectionDepth>0&&(a.tileset.hasMixedContent=!0),s=a,!c){n(a,t);continue}r.push(a),a._stackLength=o.length}if(c){let d=a.children;for(let u=0;u<d.length;++u){let h=d[u];h.isVisible&&o.push(h)}}}}var J2=Ome;var _7n=y(C(),1);function qs(){this._layers=[],this.layerAdded=new Ce,this.layerRemoved=new Ce,this.layerMoved=new Ce,this.layerShownOrHidden=new Ce}Object.defineProperties(qs.prototype,{length:{get:function(){return this._layers.length}}});qs.prototype.add=function(e,t){l(t)?this._layers.splice(t,0,e):(t=this._layers.length,this._layers.push(e)),this._update(),this.layerAdded.raiseEvent(e,t);let i=e.readyEvent.addEventListener(()=>{this.layerShownOrHidden.raiseEvent(e,e._layerIndex,e.show),i()})};qs.prototype.addImageryProvider=function(e,t){let n=new is(e);return this.add(n,t),n};qs.prototype.remove=function(e,t){t=t??!0;let n=this._layers.indexOf(e);return n!==-1?(this._layers.splice(n,1),this._update(),this.layerRemoved.raiseEvent(e,n),t&&e.destroy(),!0):!1};qs.prototype.removeAll=function(e){e=e??!0;let t=this._layers;for(let n=0,i=t.length;n<i;n++){let o=t[n];this.layerRemoved.raiseEvent(o,n),e&&o.destroy()}this._layers=[]};qs.prototype.contains=function(e){return this.indexOf(e)!==-1};qs.prototype.indexOf=function(e){return this._layers.indexOf(e)};qs.prototype.get=function(e){return this._layers[e]};function i5(e,t){return e.indexOf(t)}function Hme(e,t,n){let i=e._layers;if(t=Z.clamp(t,0,i.length-1),n=Z.clamp(n,0,i.length-1),t===n)return;let o=i[t];i[t]=i[n],i[n]=o,e._update(),e.layerMoved.raiseEvent(o,n,t)}qs.prototype.raise=function(e){let t=i5(this._layers,e);Hme(this,t,t+1)};qs.prototype.lower=function(e){let t=i5(this._layers,e);Hme(this,t,t-1)};qs.prototype.raiseToTop=function(e){let t=i5(this._layers,e);t!==this._layers.length-1&&(this._layers.splice(t,1),this._layers.push(e),this._update(),this.layerMoved.raiseEvent(e,this._layers.length-1,t))};qs.prototype.lowerToBottom=function(e){let t=i5(this._layers,e);t!==0&&(this._layers.splice(t,1),this._layers.splice(0,0,e),this._update(),this.layerMoved.raiseEvent(e,0,t))};var X7e=new le;function zme(e,t,n,i){let o=e.globe._surface._tilesToRender,r;for(let a=0;!l(r)&&a<o.length;++a){let c=o[a];le.contains(c.rectangle,t)&&(r=c)}if(!l(r))return;let s=r.data.imagery;for(let a=s.length-1;a>=0;--a){let c=s[a],d=c.readyImagery;if(!l(d)||!d.imageryLayer.ready)continue;let u=d.imageryLayer.imageryProvider;if(n&&!l(u.pickFeatures)||!le.contains(d.rectangle,t))continue;let h=X7e,p=1/1024;h.west=Z.lerp(r.rectangle.west,r.rectangle.east,c.textureCoordinateRectangle.x-p),h.east=Z.lerp(r.rectangle.west,r.rectangle.east,c.textureCoordinateRectangle.z+p),h.south=Z.lerp(r.rectangle.south,r.rectangle.north,c.textureCoordinateRectangle.y-p),h.north=Z.lerp(r.rectangle.south,r.rectangle.north,c.textureCoordinateRectangle.w+p),le.contains(h,t)&&i(d)}}qs.prototype.pickImageryLayers=function(e,t){let n=t.globe.pick(e,t);if(!l(n))return;let i=t.ellipsoid.cartesianToCartographic(n),o=[];if(zme(t,i,!1,function(r){o.push(r.imageryLayer)}),o.length!==0)return o};qs.prototype.pickImageryLayerFeatures=function(e,t){let n=t.globe.pick(e,t);if(!l(n))return;let i=t.ellipsoid.cartesianToCartographic(n),o=[],r=[];if(zme(t,i,!0,function(s){if(!s.imageryLayer.ready)return;let c=s.imageryLayer.imageryProvider.pickFeatures(s.x,s.y,s.level,i.longitude,i.latitude);l(c)&&(o.push(c),r.push(s.imageryLayer))}),o.length!==0)return Promise.all(o).then(function(s){let a=[];for(let c=0;c<s.length;++c){let d=s[c],u=r[c];if(l(d)&&d.length>0)for(let h=0;h<d.length;++h){let p=d[h];p.imageryLayer=u,l(p.position)||(p.position=i),a.push(p)}}return a})};qs.prototype.queueReprojectionCommands=function(e){let t=this._layers;for(let n=0,i=t.length;n<i;++n)t[n].queueReprojectionCommands(e)};qs.prototype.cancelReprojections=function(){let e=this._layers;for(let t=0,n=e.length;t<n;++t)e[t].cancelReprojections()};qs.prototype.isDestroyed=function(){return!1};qs.prototype.destroy=function(){return this.removeAll(!0),me(this)};qs.prototype._update=function(){let e=!0,t=this._layers,n,i,o,r;for(o=0,r=t.length;o<r;++o)i=t[o],i._layerIndex=o,i.show?(i._isBaseLayer=e,e=!1):i._isBaseLayer=!1,i.show!==i._show&&(l(i._show)&&(l(n)||(n=[]),n.push(i)),i._show=i.show);if(l(n))for(o=0,r=n.length;o<r;++o)i=n[o],this.layerShownOrHidden.raiseEvent(i,i._layerIndex,i.show)};var Xx=qs;function Ko(e){e=e??Y.EMPTY_OBJECT,this._url=void 0,this._basePath=void 0,this._root=void 0,this._resource=void 0,this._asset=void 0,this._properties=void 0,this._geometricError=void 0,this._scaledGeometricError=void 0,this._extensionsUsed=void 0,this._extensions=void 0,this._modelUpAxis=void 0,this._modelForwardAxis=void 0,this._cache=new M2,this._processingQueue=[],this._selectedTiles=[],this._emptyTiles=[],this._requestedTiles=[],this._selectedTilesToStyle=[],this._loadTimestamp=void 0,this._timeSinceLoad=0,this._updatedVisibilityFrame=0,this._updatedModelMatrixFrame=0,this._modelMatrixChanged=!1,this._previousModelMatrix=void 0,this._extras=void 0,this._credits=void 0,this._showCreditsOnScreen=e.showCreditsOnScreen??!1,this._cullWithChildrenBounds=e.cullWithChildrenBounds??!0,this._allTilesAdditive=!0,this._hasMixedContent=!1,this._stencilClearCommand=void 0,this._backfaceCommands=new bl,this._maximumScreenSpaceError=e.maximumScreenSpaceError??16,this._memoryAdjustedScreenSpaceError=this._maximumScreenSpaceError,this._cacheBytes=e.cacheBytes??512*1024*1024;let t=e.maximumCacheOverflowBytes??512*1024*1024;this._maximumCacheOverflowBytes=t,this._styleEngine=new D2,this._styleApplied=!1,this._modelMatrix=l(e.modelMatrix)?X.clone(e.modelMatrix):X.clone(X.IDENTITY),this._addHeightCallbacks=[],this._statistics=new Nh,this._statisticsLast=new Nh,this._statisticsPerPass=new Array(zo.NUMBER_OF_PASSES);for(let o=0;o<zo.NUMBER_OF_PASSES;++o)this._statisticsPerPass[o]=new Nh;this._requestedTilesInFlight=[],this._maximumPriority={foveatedFactor:-Number.MAX_VALUE,depth:-Number.MAX_VALUE,distance:-Number.MAX_VALUE,reverseScreenSpaceError:-Number.MAX_VALUE},this._minimumPriority={foveatedFactor:Number.MAX_VALUE,depth:Number.MAX_VALUE,distance:Number.MAX_VALUE,reverseScreenSpaceError:Number.MAX_VALUE},this._heatmap=new v2(e.debugHeatmapTilePropertyName),this.cullRequestsWhileMoving=e.cullRequestsWhileMoving??!0,this._cullRequestsWhileMoving=!1,this.cullRequestsWhileMovingMultiplier=e.cullRequestsWhileMovingMultiplier??60,this.progressiveResolutionHeightFraction=Z.clamp(e.progressiveResolutionHeightFraction??.3,0,.5),this.preferLeaves=e.preferLeaves??!1,this._tilesLoaded=!1,this._initialTilesLoaded=!1,this._tileDebugLabels=void 0,this._classificationType=e.classificationType,this._heightReference=e.heightReference,this._scene=e.scene,this._ellipsoid=e.ellipsoid??ie.WGS84,this._initialClippingPlanesOriginMatrix=X.IDENTITY,this._clippingPlanesOriginMatrix=void 0,this._clippingPlanesOriginMatrixDirty=!0,this._vectorClassificationOnly=e.vectorClassificationOnly??!1,this._vectorKeepDecodedPositions=e.vectorKeepDecodedPositions??!1,this._imageryLayers=new Xx(this),this._imageryLayersModificationCounter=0,this._imageryLayersListener=()=>{this._imageryLayersModificationCounter++},this.imageryLayers.layerAdded.addEventListener(this._imageryLayersListener),this.imageryLayers.layerRemoved.addEventListener(this._imageryLayersListener),this.imageryLayers.layerMoved.addEventListener(this._imageryLayersListener),this.imageryLayers.layerShownOrHidden.addEventListener(this._imageryLayersListener),this._asynchronouslyLoadImagery=e.asynchronouslyLoadImagery??!1,this.preloadWhenHidden=e.preloadWhenHidden??!1,this.preloadFlightDestinations=e.preloadFlightDestinations??!0,this._pass=void 0,this.dynamicScreenSpaceError=e.dynamicScreenSpaceError??!0,this.foveatedScreenSpaceError=e.foveatedScreenSpaceError??!0,this._foveatedConeSize=e.foveatedConeSize??.1,this._foveatedMinimumScreenSpaceErrorRelaxation=e.foveatedMinimumScreenSpaceErrorRelaxation??0,this.foveatedInterpolationCallback=e.foveatedInterpolationCallback??Z.lerp,this.foveatedTimeDelay=e.foveatedTimeDelay??.2,this.dynamicScreenSpaceErrorDensity=e.dynamicScreenSpaceErrorDensity??2e-4,this.dynamicScreenSpaceErrorFactor=e.dynamicScreenSpaceErrorFactor??24,this.dynamicScreenSpaceErrorHeightFalloff=e.dynamicScreenSpaceErrorHeightFalloff??.25,this._dynamicScreenSpaceErrorComputedDensity=0,this.shadows=e.shadows??Gn.ENABLED,this.show=e.show??!0,this.colorBlendMode=ed.HIGHLIGHT,this.colorBlendAmount=.5,this._pointCloudShading=new Hf(e.pointCloudShading),this._pointCloudEyeDomeLighting=new XA,this.loadProgress=new Ce,this.allTilesLoaded=new Ce,this.initialTilesLoaded=new Ce,this.tileLoad=new Ce,this.tileUnload=new Ce,this.tileFailed=new Ce,this.tileVisible=new Ce,this.skipLevelOfDetail=e.skipLevelOfDetail??!1,this._disableSkipLevelOfDetail=!1,this.baseScreenSpaceError=e.baseScreenSpaceError??1024,this.skipScreenSpaceErrorFactor=e.skipScreenSpaceErrorFactor??16,this.skipLevels=e.skipLevels??1,this.immediatelyLoadDesiredLevelOfDetail=e.immediatelyLoadDesiredLevelOfDetail??!1,this.loadSiblings=e.loadSiblings??!1,this._clippingPlanes=void 0,l(e.clippingPlanes)&&Ws.setOwner(e.clippingPlanes,this,"_clippingPlanes"),this._clippingPolygons=void 0,l(e.clippingPolygons)&&Ih.setOwner(e.clippingPolygons,this,"_clippingPolygons"),l(e.imageBasedLighting)?(this._imageBasedLighting=e.imageBasedLighting,this._shouldDestroyImageBasedLighting=!1):(this._imageBasedLighting=new TC,this._shouldDestroyImageBasedLighting=!0),this._environmentMapManager=new ZA(e.environmentMapOptions),this.lightColor=e.lightColor,this.backFaceCulling=e.backFaceCulling??!0,this._enableShowOutline=e.enableShowOutline??!0,this.showOutline=e.showOutline??!0,this.outlineColor=e.outlineColor??U.BLACK,this.splitDirection=e.splitDirection??Ir.NONE,this.enableCollision=e.enableCollision??!1,this._projectTo2D=e.projectTo2D??!1,this._enablePick=e.enablePick??!1,this.debugFreezeFrame=e.debugFreezeFrame??!1,this.debugColorizeTiles=e.debugColorizeTiles??!1,this._enableDebugWireframe=e.enableDebugWireframe??!1,this.debugWireframe=e.debugWireframe??!1,this.debugWireframe===!0&&this._enableDebugWireframe===!1&&xt("tileset-debug-wireframe-ignored","enableDebugWireframe must be set to true in the Cesium3DTileset constructor, otherwise debugWireframe will be ignored."),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowContentBoundingVolume=e.debugShowContentBoundingVolume??!1,this.debugShowViewerRequestVolume=e.debugShowViewerRequestVolume??!1,this._tileDebugLabels=void 0,this.debugPickedTileLabelOnly=!1,this.debugPickedTile=void 0,this.debugPickPosition=void 0,this.debugShowGeometricError=e.debugShowGeometricError??!1,this.debugShowRenderingStatistics=e.debugShowRenderingStatistics??!1,this.debugShowMemoryUsage=e.debugShowMemoryUsage??!1,this.debugShowUrl=e.debugShowUrl??!1,this.examineVectorLinesFunction=void 0,this._metadataExtension=void 0,this._customShader=e.customShader;let n=e.featureIdLabel??"featureId_0";typeof n=="number"&&(n=`featureId_${n}`),this._featureIdLabel=n;let i=e.instanceFeatureIdLabel??"instanceFeatureId_0";typeof i=="number"&&(i=`instanceFeatureId_${i}`),this._instanceFeatureIdLabel=i}Object.defineProperties(Ko.prototype,{isCesium3DTileset:{get:function(){return!0}},asset:{get:function(){return this._asset}},extensions:{get:function(){return this._extensions}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Ws.setOwner(e,this,"_clippingPlanes")}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){Ih.setOwner(e,this,"_clippingPolygons")}},imageryLayers:{get:function(){return this._imageryLayers}},imageryLayersModificationCounter:{get:function(){return this._imageryLayersModificationCounter}},asynchronouslyLoadImagery:{get:function(){return this._asynchronouslyLoadImagery}},properties:{get:function(){return this._properties}},tilesLoaded:{get:function(){return this._tilesLoaded}},resource:{get:function(){return this._resource}},basePath:{get:function(){return _r("Cesium3DTileset.basePath","Cesium3DTileset.basePath has been deprecated. All tiles are relative to the url of the tileset JSON file that contains them. Use the url property instead."),this._basePath}},style:{get:function(){return this._styleEngine.style},set:function(e){this._styleEngine.style=e}},customShader:{get:function(){return this._customShader},set:function(e){this._customShader=e}},hasMixedContent:{get:function(){return this._hasMixedContent},set:function(e){this._hasMixedContent=e}},isSkippingLevelOfDetail:{get:function(){return this.skipLevelOfDetail&&!l(this._classificationType)&&!this._disableSkipLevelOfDetail&&!this._allTilesAdditive}},metadataExtension:{get:function(){return this._metadataExtension}},metadata:{get:function(){if(l(this._metadataExtension))return this._metadataExtension.tileset}},schema:{get:function(){if(l(this._metadataExtension))return this._metadataExtension.schema}},maximumScreenSpaceError:{get:function(){return this._maximumScreenSpaceError},set:function(e){this._maximumScreenSpaceError=e,this._memoryAdjustedScreenSpaceError=e}},cacheBytes:{get:function(){return this._cacheBytes},set:function(e){this._cacheBytes=e}},maximumCacheOverflowBytes:{get:function(){return this._maximumCacheOverflowBytes},set:function(e){this._maximumCacheOverflowBytes=e}},memoryAdjustedScreenSpaceError:{get:function(){return this._memoryAdjustedScreenSpaceError}},pointCloudShading:{get:function(){return this._pointCloudShading},set:function(e){this._pointCloudShading=e}},root:{get:function(){return this._root}},boundingSphere:{get:function(){return this._root.updateTransform(this._modelMatrix),this._root.boundingSphere}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=X.clone(e,this._modelMatrix)}},timeSinceLoad:{get:function(){return this._timeSinceLoad}},totalMemoryUsageInBytes:{get:function(){let e=this._statistics;return e.texturesByteLength+e.geometryByteLength+e.batchTableByteLength}},clippingPlanesOriginMatrix:{get:function(){return l(this._clippingPlanesOriginMatrix)?(this._clippingPlanesOriginMatrixDirty&&(X.multiply(this.root.computedTransform,this._initialClippingPlanesOriginMatrix,this._clippingPlanesOriginMatrix),this._clippingPlanesOriginMatrixDirty=!1),this._clippingPlanesOriginMatrix):X.IDENTITY}},styleEngine:{get:function(){return this._styleEngine}},statistics:{get:function(){return this._statistics}},classificationType:{get:function(){return this._classificationType}},heightReference:{get:function(){return this._heightReference}},scene:{get:function(){return this._scene}},ellipsoid:{get:function(){return this._ellipsoid}},foveatedConeSize:{get:function(){return this._foveatedConeSize},set:function(e){this._foveatedConeSize=e}},foveatedMinimumScreenSpaceErrorRelaxation:{get:function(){return this._foveatedMinimumScreenSpaceErrorRelaxation},set:function(e){this._foveatedMinimumScreenSpaceErrorRelaxation=e}},extras:{get:function(){return this._extras}},imageBasedLighting:{get:function(){return this._imageBasedLighting},set:function(e){e!==this._imageBasedLighting&&(this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=e,this._shouldDestroyImageBasedLighting=!1)}},environmentMapManager:{get:function(){return this._environmentMapManager}},vectorClassificationOnly:{get:function(){return this._vectorClassificationOnly}},vectorKeepDecodedPositions:{get:function(){return this._vectorKeepDecodedPositions}},showCreditsOnScreen:{get:function(){return this._showCreditsOnScreen},set:function(e){this._showCreditsOnScreen=e,nhe(this)}},featureIdLabel:{get:function(){return this._featureIdLabel},set:function(e){typeof e=="number"&&(e=`featureId_${e}`),this._featureIdLabel=e}},instanceFeatureIdLabel:{get:function(){return this._instanceFeatureIdLabel},set:function(e){typeof e=="number"&&(e=`instanceFeatureId_${e}`),this._instanceFeatureIdLabel=e}}});Ko.fromIonAssetId=async function(e,t){let n=await Nd.fromAssetId(e);return Ko.fromUrl(n,t)};Ko.fromUrl=async function(e,t){t=t??Y.EMPTY_OBJECT;let n=Ve.createIfNeeded(e),i;n.extension==="json"?i=n.getBaseUri(!0):n.isDataUri&&(i="");let o=await Ko.loadJson(n),r=await W7e(n,o),s=new Ko(t);s._resource=n,s._url=n.url,s._basePath=i,s._metadataExtension=r,s._geometricError=o.geometricError,s._scaledGeometricError=o.geometricError;let a=o.asset;s._asset=a,s._extras=o.extras,nhe(s);let c=l(o.asset.gltfUpAxis)?ho.fromName(o.asset.gltfUpAxis):ho.Y,d=t.modelUpAxis??c,u=t.modelForwardAxis??ho.X;s._properties=o.properties,s._extensionsUsed=o.extensionsUsed,s._extensions=o.extensions,s._modelUpAxis=d,s._modelForwardAxis=u,s._root=s.loadTileset(n,o);let p=s._root.createBoundingVolume(o.root.boundingVolume,X.IDENTITY).boundingSphere.center,g=s._ellipsoid.cartesianToCartographic(p);return l(g)&&g.height>Si._defaultMinTerrainHeight&&(s._initialClippingPlanesOriginMatrix=Dt.eastNorthUpToFixedFrame(p)),s._clippingPlanesOriginMatrix=X.clone(s._initialClippingPlanesOriginMatrix),s};Ko.loadJson=function(e){return Ve.createIfNeeded(e).fetchJson()};Ko.prototype.makeStyleDirty=function(){this._styleEngine.makeDirty()};Ko.prototype.loadTileset=function(e,t,n){let i=t.asset;if(!l(i))throw new de("Tileset must have an asset property.");if(i.version!=="0.0"&&i.version!=="1.0"&&i.version!=="1.1")throw new de("The tileset must be 3D Tiles version 0.0, 1.0, or 1.1");l(t.extensionsRequired)&&Ko.checkSupportedExtensions(t.extensionsRequired);let o=this._statistics,r=i.tilesetVersion;l(r)&&(this._basePath+=`?v=${r}`,e=e.clone(),e.setQueryParameters({v:r}));let s=Kme(this,e,t.root,n);l(n)&&(n.children.push(s),s._depth=n._depth+1);let a=[];for(a.push(s);a.length>0;){let c=a.pop();++o.numberOfTilesTotal,this._allTilesAdditive=this._allTilesAdditive&&c.refine===tr.ADD;let d=c._header.children;if(l(d))for(let u=0;u<d.length;++u){let h=d[u],p=Kme(this,e,h,c);c.children.push(p),p._depth=c._depth+1,a.push(p)}this._cullWithChildrenBounds&&W2.checkChildrenWithinParent(c)}return s};function Kme(e,t,n,i){if(!(l(n.implicitTiling)||Ii(n,"3DTILES_implicit_tiling")))return new ym(e,t,n,i);let r=e.schema,s=new Bx(t,n,r),a=new wx({subdivisionScheme:s.subdivisionScheme,subtreeLevels:s.subtreeLevels,level:0,x:0,y:0,z:0}),c=s.subtreeUriTemplate.getDerivedResource({templateValues:a.getTemplateValues()}).url,u=ke(n,!0);u.contents=[{uri:c}],delete u.content,delete u.extensions;let h=new ym(e,t,u,i);return h.implicitTileset=s,h.implicitCoordinates=a,h}async function W7e(e,t){let n=Ii(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t,i;if(l(n.schemaUri))e=e.getDerivedResource({url:n.schemaUri}),i=Mi.getSchemaLoader({resource:e});else if(l(n.schema))i=Mi.getSchemaLoader({schema:n.schema});else return;await i.load();let o=new Gx({schema:i.schema,metadataJson:n});return Mi.unload(i),o}var Jme=new m,F7e=new ge,P7e=new X,M7e=new m,v7e=new m,N7e=new m,D7e=new m;function Q7e(e,t){let n,i,o,r,s,a=t.camera,c=e._root,d=c.contentBoundingVolume;if(d instanceof tu)n=m.normalize(a.positionWC,Jme),i=a.directionWC,o=a.positionCartographic.height,r=d.minimumHeight,s=d.maximumHeight;else{let b=X.inverseTransformation(c.computedTransform,P7e),x=t.mapProjection.ellipsoid,I=d.boundingVolume,_=X.multiplyByPoint(b,I.center,M7e);if(m.magnitude(_)>x.minimumRadius){let E=ge.fromCartesian(_,x,F7e);n=m.normalize(a.positionWC,Jme),i=a.directionWC,o=a.positionCartographic.height,r=0,s=E.height*2}else{let E=X.multiplyByPoint(b,a.positionWC,v7e);if(n=m.UNIT_Z,i=X.multiplyByPointAsVector(b,a.directionWC,N7e),i=m.normalize(i,i),o=E.z,d instanceof hd){let S=$.getColumn(I.halfAxes,2,D7e),R=m.magnitude(S);r=_.z-R,s=_.z+R}else if(d instanceof lg){let S=I.radius;r=_.z-S,s=_.z+S}}}let u=e.dynamicScreenSpaceErrorHeightFalloff,h=r+(s-r)*u,p=s,g=Z.clamp((o-h)/(p-h),0,1),f=1-Math.abs(m.dot(i,n));f=f*(1-g),e._dynamicScreenSpaceErrorComputedDensity=e.dynamicScreenSpaceErrorDensity*f}function U7e(e,t){if(t.hasEmptyContent)return;let{statistics:n}=e,i=t.contentExpired,o=t.requestContent();l(o)&&(o.then(r=>{!l(r)||t.isDestroyed()||e.isDestroyed()||(e._processingQueue.push(t),++n.numberOfTilesProcessing)}).catch(r=>{$me(r,e,t)}),i&&(t.hasTilesetContent||t.hasImplicitContent?i6e(e,t):(n.decrementLoadCounts(t.content),--n.numberOfTilesWithContentReady)),e._requestedTilesInFlight.push(t))}function qme(e,t){return e._priority-t._priority}Ko.prototype.postPassesUpdate=function(e){l(this._root)&&(k7e(this,e),r6e(this,e),this._cache.unloadTiles(this,the),this._styleApplied&&this._styleEngine.resetDirty(),this._styleApplied=!1)};Ko.prototype.prePassesUpdate=function(e){if(!l(this._root))return;j7e(this,e);let t=this._clippingPlanes;this._clippingPlanesOriginMatrixDirty=!0,l(t)&&t.enabled&&t.update(e);let n=this._clippingPolygons;l(n)&&n.enabled&&n.update(e),l(this._loadTimestamp)||(this._loadTimestamp=j.clone(e.time)),this._timeSinceLoad=Math.max(j.secondsDifference(e.time,this._loadTimestamp)*1e3,0),this.dynamicScreenSpaceError&&Q7e(this,e),e.newFrame&&this._cache.reset()};function k7e(e,t){let n=e._requestedTilesInFlight,i=0;for(let o=0;o<n.length;++o){let r=n[o],s=t.frameNumber-r._touchedFrame>=1;if(r._contentState!==ir.LOADING){++i;continue}else if(s){r.cancelRequests(),++i;continue}i>0&&(n[o-i]=r)}n.length-=i}function Y7e(e){let t=e._requestedTiles;t.sort(qme);for(let n=0;n<t.length;++n)U7e(e,t[n])}function $me(e,t,n){if(t.isDestroyed())return;let i;n.isDestroyed()||(i=n._contentResource.url);let o=l(e.message)?e.message:e.toString();t.tileFailed.numberOfListeners>0?t.tileFailed.raiseEvent({url:i,message:o}):(console.log(`A 3D tile failed to load: ${i}`),console.log(`Error: ${o}`),console.log(e.stack))}function O7e(e){let t=e._processingQueue,n=0;for(let i=0;i<t.length;++i){let o=t[i];if(o.isDestroyed()||o._contentState!==ir.PROCESSING){++n;continue}n>0&&(t[i-n]=o)}t.length-=n}var H7e=new ge,z7e=new ge,K7e=new m;function J7e(e,t,n){if(!e.enableCollision||!e.show)return;let i=e._addHeightCallbacks,o=t.boundingSphere;for(let r of i){if(r.invoked||t._wasSelectedLastFrame)continue;let s=r.ellipsoid,a=ge.clone(r.positionCartographic,H7e),c=ge.fromCartesian(o.center,s,z7e);l(c)&&(a.height=c.height);let d=ge.toCartesian(a,s,K7e);m.distance(d,o.center)<=o.radius&&(r.invoked=!0,n.afterRender.push(()=>{l(r.callback)&&r.callback(),r.invoked=!1}))}}function j7e(e,t){O7e(e);let n=e._processingQueue,{cacheBytes:i,maximumCacheOverflowBytes:o,statistics:r}=e,s=i+o,a=!1;for(let c=0;c<n.length;++c){if(e.totalMemoryUsageInBytes>s){a=!0;break}let d=n[c];try{d.process(e,t),d.contentReady&&(--r.numberOfTilesProcessing,e.tileLoad.raiseEvent(d))}catch(u){--r.numberOfTilesProcessing,$me(u,e,d)}}e.totalMemoryUsageInBytes<i?$7e(e):a&&n.length>0&&q7e(e)}function q7e(e){e._memoryAdjustedScreenSpaceError*=1.02;let t=e._processingQueue;for(let n=0;n<t.length;++n)t[n].updatePriority();t.sort(qme)}function $7e(e){e._memoryAdjustedScreenSpaceError=Math.max(e.memoryAdjustedScreenSpaceError/1.02,e.maximumScreenSpaceError)}var o5=new m,e6e={maximumFractionDigits:3};function jme(e){let t=e/1048576;return t<1?t.toLocaleString(void 0,e6e):Math.round(t).toLocaleString()}function VJ(e){let{halfAxes:t,radius:n,center:i}=e.boundingVolume.boundingVolume,o=m.clone(i,o5);if(l(t))o.x+=.75*(t[0]+t[3]+t[6]),o.y+=.75*(t[1]+t[4]+t[7]),o.z+=.75*(t[2]+t[5]+t[8]);else if(l(n)){let r=m.normalize(i,o5);r=m.multiplyByScalar(r,.75*n,o5),o=m.add(r,i,o5)}return o}function GJ(e,t,n){let i="",o=0;if(t.debugShowGeometricError&&(i+=` +Geometric error: ${e.geometricError}`,o++),t.debugShowRenderingStatistics&&(i+=` +Commands: ${e.commandsLength}`,o++,e.content.pointsLength>0&&(i+=` +Points: ${e.content.pointsLength}`,o++),e.content.trianglesLength>0&&(i+=` +Triangles: ${e.content.trianglesLength}`,o++),i+=` +Features: ${e.content.featuresLength}`,o++),t.debugShowMemoryUsage&&(i+=` +Texture Memory: ${jme(e.content.texturesByteLength)}`,i+=` +Geometry Memory: ${jme(e.content.geometryByteLength)}`,o+=2),t.debugShowUrl)if(e.hasMultipleContents){i+=` +Urls:`;let s=e.content.innerContentUrls;for(let a=0;a<s.length;a++)i+=` +- ${s[a]}`;o+=s.length}else i+=` +Url: ${e._contentHeader.uri}`,o++;let r={text:i.substring(1),position:n,font:`${19-o}px sans-serif`,showBackground:!0,disableDepthTestDistance:Number.POSITIVE_INFINITY};return t._tileDebugLabels.add(r)}function t6e(e,t){let n=e._selectedTiles,i=n.length,o=e._emptyTiles,r=o.length;if(e._tileDebugLabels.removeAll(),e.debugPickedTileLabelOnly){if(l(e.debugPickedTile)){let s=l(e.debugPickPosition)?e.debugPickPosition:VJ(e.debugPickedTile),a=GJ(e.debugPickedTile,e,s);a.pixelOffset=new D(15,-15)}}else{for(let s=0;s<i;++s){let a=n[s];GJ(a,e,VJ(a))}for(let s=0;s<r;++s){let a=o[s];(a.hasTilesetContent||a.hasImplicitContent)&&GJ(a,e,VJ(a))}}e._tileDebugLabels.update(t)}function n6e(e,t,n){e._styleEngine.applyStyle(e),e._styleApplied=!0;let{commandList:i,context:o}=t,r=i.length,s=e._selectedTiles,a=e.isSkippingLevelOfDetail&&e._hasMixedContent&&o.stencilBuffer&&s.length>0;e._backfaceCommands.length=0,a&&(l(e._stencilClearCommand)||(e._stencilClearCommand=new xi({stencil:0,pass:Ge.CESIUM_3D_TILE,renderState:Qe.fromCache({stencilMask:jt.SKIP_LOD_MASK})})),i.push(e._stencilClearCommand));let{statistics:c,tileVisible:d}=e,u=n.isRender,h=i.length;for(let f=0;f<s.length;++f){let b=s[f];u&&d.raiseEvent(b),J7e(e,b,t),b.update(e,t,n),c.incrementSelectionCounts(b.content),++c.selected}let p=e._emptyTiles;for(let f=0;f<p.length;++f)p[f].update(e,t,n);let g=i.length-h;if(e._backfaceCommands.trim(),a){let f=e._backfaceCommands.values,b=f.length;i.length+=b;for(let x=g-1;x>=0;--x)i[h+b+x]=i[h+x];for(let x=0;x<b;++x)i[h+x]=f[x]}g=i.length-r,c.numberOfCommands=g,u&&(e.pointCloudShading.attenuation&&e.pointCloudShading.eyeDomeLighting&&g>0&&e._pointCloudEyeDomeLighting.update(t,r,e.pointCloudShading,e.boundingSphere),e.debugShowGeometricError||e.debugShowRenderingStatistics||e.debugShowMemoryUsage||e.debugShowUrl?(l(e._tileDebugLabels)||(e._tileDebugLabels=new ep),t6e(e,t)):e._tileDebugLabels=e._tileDebugLabels&&e._tileDebugLabels.destroy())}var ehe=[];function i6e(e,t){let n=t,i=ehe;for(i.push(t);i.length>0;){t=i.pop();let o=t.children;for(let r=0;r<o.length;++r)i.push(o[r]);t!==n&&(o6e(e,t),--e._statistics.numberOfTilesTotal)}n.children=[]}function the(e,t){e.tileUnload.raiseEvent(t),e._statistics.decrementLoadCounts(t.content),--e._statistics.numberOfTilesWithContentReady,t.unloadContent()}function o6e(e,t){e._cache.unloadTile(e,t,the),t.destroy()}Ko.prototype.trimLoadedTiles=function(){this._cache.trim()};function r6e(e,t){let n=e._statistics,i=e._statisticsLast,o=n.numberOfPendingRequests,r=n.numberOfTilesProcessing,s=i.numberOfPendingRequests,a=i.numberOfTilesProcessing;Nh.clone(n,i);let c=o!==s||r!==a;c&&t.afterRender.push(function(){return e.loadProgress.raiseEvent(o,r),!0}),e._tilesLoaded=n.numberOfPendingRequests===0&&n.numberOfTilesProcessing===0&&n.numberOfAttemptedRequests===0,c&&e._tilesLoaded&&(t.afterRender.push(function(){return e.allTilesLoaded.raiseEvent(),!0}),e._initialTilesLoaded||(e._initialTilesLoaded=!0,t.afterRender.push(function(){return e.initialTilesLoaded.raiseEvent(),!0})))}function s6e(e){e._heatmap.resetMinimumMaximum(),e._minimumPriority.depth=Number.MAX_VALUE,e._maximumPriority.depth=-Number.MAX_VALUE,e._minimumPriority.foveatedFactor=Number.MAX_VALUE,e._maximumPriority.foveatedFactor=-Number.MAX_VALUE,e._minimumPriority.distance=Number.MAX_VALUE,e._maximumPriority.distance=-Number.MAX_VALUE,e._minimumPriority.reverseScreenSpaceError=Number.MAX_VALUE,e._maximumPriority.reverseScreenSpaceError=-Number.MAX_VALUE}function a6e(e,t){t.frameNumber===e._updatedModelMatrixFrame&&l(e._previousModelMatrix)||(e._updatedModelMatrixFrame=t.frameNumber,e._modelMatrixChanged=!X.equals(e.modelMatrix,e._previousModelMatrix),e._modelMatrixChanged&&(e._previousModelMatrix=X.clone(e.modelMatrix,e._previousModelMatrix)))}function c6e(e,t,n,i){if(t.mode===re.MORPHING||!l(e._root))return!1;let o=e._statistics;o.clear(),++e._updatedVisibilityFrame,s6e(e),a6e(e,t),e._cullRequestsWhileMoving=e.cullRequestsWhileMoving&&!e._modelMatrixChanged;let r=e.getTraversal(i).selectTiles(e,t);if(i.requestTiles&&Y7e(e),n6e(e,t,i),Nh.clone(o,n),i.isRender){let s=e._credits;if(l(s)&&o.selected!==0)for(let a=0;a<s.length;++a){let c=s[a];t.creditDisplay.addCreditToNextFrame(c)}}return r}function nhe(e){let t=e._credits;l(t)||(t=[]),t.length=0,l(e.resource.credits)&&e.resource.credits.forEach(i=>{t.push(Gt.clone(i))});let n=e.asset.extras;if(l(n)&&l(n.cesium)&&l(n.cesium.credits)){let i=n.cesium.credits;for(let o=0;o<i.length;++o){let r=i[o];t.push(new Gt(r.html))}}t.forEach(i=>i.showOnScreen=i.showOnScreen||e._showCreditsOnScreen),e._credits=t}Ko.prototype.getTraversal=function(e){let{pass:t}=e;return t===zo.MOST_DETAILED_PRELOAD||t===zo.MOST_DETAILED_PICK?k2:this.isSkippingLevelOfDetail?J2:H2};Ko.prototype.update=function(e){this.updateForPass(e,e.tilesetPassState)};Ko.prototype.updateForPass=function(e,t){this.imageryLayers._update();let n=t.pass;if(n===zo.PRELOAD&&(!this.preloadWhenHidden||this.show)||n===zo.PRELOAD_FLIGHT&&(!this.preloadFlightDestinations||!this.show&&!this.preloadWhenHidden)||n===zo.REQUEST_RENDER_MODE_DEFER_CHECK&&(!this._cullRequestsWhileMoving&&this.foveatedTimeDelay<=0||!this.show))return;let i=e.commandList,o=e.camera,r=e.cullingVolume;t.ready=!1;let s=zo.getPassOptions(n),a=s.ignoreCommands,c=t.commandList??i,d=c.length;if(e.commandList=c,e.camera=t.camera??o,e.cullingVolume=t.cullingVolume??r,s.isRender){let p=this._environmentMapManager;l(this._root)&&(p.position=this.boundingSphere.center),p.update(e)}let u=this._clippingPolygons;l(u)&&u.enabled&&u.queueCommands(e);let h=this._statisticsPerPass[n];(this.show||a)&&(this._pass=n,t.ready=c6e(this,e,h,s)),a&&(c.length=d),e.commandList=i,e.camera=o,e.cullingVolume=r};Ko.prototype.hasExtension=function(e){return l(this._extensionsUsed)?this._extensionsUsed.indexOf(e)>-1:!1};Ko.prototype.isDestroyed=function(){return!1};Ko.prototype.destroy=function(){if(this._tileDebugLabels=this._tileDebugLabels&&this._tileDebugLabels.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._clippingPolygons=this._clippingPolygons&&this._clippingPolygons.destroy(),l(this._root)){let e=ehe;for(e.push(this._root);e.length>0;){let t=e.pop();t.destroy();let n=t.children;for(let i=0;i<n.length;++i)e.push(n[i])}}return this._root=void 0,this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=void 0,this._environmentMapManager.isDestroyed()||this._environmentMapManager.destroy(),this._environmentMapManager=void 0,this._imageryLayers.isDestroyed()||(this.imageryLayers.layerAdded.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerRemoved.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerMoved.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerShownOrHidden.removeEventListener(this._imageryLayersListener),this._imageryLayers.destroy()),this._imageryLayers=void 0,me(this)};Ko.supportedExtensions={"3DTILES_metadata":!0,"3DTILES_implicit_tiling":!0,"3DTILES_content_gltf":!0,"3DTILES_multiple_contents":!0,"3DTILES_bounding_volume_S2":!0,"3DTILES_batch_table_hierarchy":!0,"3DTILES_draco_point_compression":!0,MAXAR_content_geojson:!0};Ko.checkSupportedExtensions=function(e){for(let t=0;t<e.length;t++)if(!Ko.supportedExtensions[e[t]])throw new de(`Unsupported 3D Tiles Extension: ${e[t]}`)};var l6e=new En,d6e=new m,u6e=new ge;Ko.prototype.getHeight=function(e,t){let n=t.ellipsoid;l(n)||(n=ie.WGS84);let i=l6e,o=n.cartographicToCartesian(e,i.direction);m.normalize(i.direction,i.direction),i.direction=m.normalize(o,i.direction),i.direction=m.negate(o,i.direction),i.origin=m.multiplyByScalar(i.direction,-2*n.maximumRadius,i.origin);let r=this.pick(i,t.frameState,d6e);if(l(r))return n.cartesianToCartographic(r,u6e)?.height};Ko.prototype.updateHeight=function(e,t,n){n=n??ie.WGS84;let i={positionCartographic:e,ellipsoid:n,callback:t,invoked:!1},o=()=>{let r=this._addHeightCallbacks,s=r.length;for(let a=0;a<s;++a)if(r[a]===i){r.splice(a,1);break}i.callback&&(i.callback=void 0)};return this._addHeightCallbacks.push(i),o};var m6e=new oc,h6e=new m;Ko.prototype.pick=function(e,t,n){if(!t.context.webgl2&&!this._enablePick)return;let i=this._selectedTiles,o=i.length,r=[];for(let c=0;c<o;++c){let d=i[c],u=fi.raySphere(e,d.contentBoundingVolume.boundingSphere,m6e);!l(u)||!l(d.content)||r.push(d)}let s=r.length;r.sort((c,d)=>{let u=ue.distanceSquaredTo(c.contentBoundingVolume.boundingSphere,e.origin),h=ue.distanceSquaredTo(d.contentBoundingVolume.boundingSphere,e.origin);return u-h});let a;for(let c=0;c<s;++c){let u=r[c].content.pick(e,t,h6e);if(l(u))return a=m.clone(u,n),a}};Ko.prototype.isGltfExtensionUsed=function(e){if(this.hasExtension("3DTILES_content_gltf")){if(!l(this.extensions))return!1;let t=this.extensions["3DTILES_content_gltf"]?.extensionsUsed;return l(t)?t.indexOf(e)>-1:!1}return!1};Ko.prototype.isGltfExtensionRequired=function(e){if(this.isGltfExtensionUsed(e)){let t=this.extensions["3DTILES_content_gltf"].extensionsRequired;return l(t)?t.indexOf(e)>-1:!1}return!1};var Ps=Ko;var f6e=new X;function I0(e,t){t.collectionChanged.addEventListener(I0.prototype._onCollectionChanged,this),this._scene=e,this._primitives=e.primitives,this._entityCollection=t,this._tilesetHash={},this._entitiesToVisualize=new Bt,this._onCollectionChanged(t,t.values,[],[])}I0.prototype.update=function(e){let t=this._entitiesToVisualize.values,n=this._tilesetHash,i=this._primitives;for(let o=0,r=t.length;o<r;o++){let s=t[o],a=s._tileset,c,d=n[s.id],u=s.isShowing&&s.isAvailable(e)&&z.getValueOrDefault(a._show,e,!0),h;u&&(h=s.computeModelMatrix(e,f6e),c=Ve.createIfNeeded(z.getValueOrUndefined(a._uri,e)));let p=l(d)?d.tilesetPrimitive:void 0;if(!u){l(p)&&(p.show=!1);continue}(!l(d)||c.url!==d.url)&&(l(p)&&i.removeAndDestroy(p),delete n[s.id],p6e(c,n,s,i)),l(p)&&(p.show=!0,l(h)&&(p.modelMatrix=h),p.maximumScreenSpaceError=z.getValueOrDefault(a.maximumScreenSpaceError,e,p.maximumScreenSpaceError))}return!0};I0.prototype.isDestroyed=function(){return!1};I0.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(I0.prototype._onCollectionChanged,this);let e=this._entitiesToVisualize.values,t=this._tilesetHash,n=this._primitives;for(let i=e.length-1;i>-1;i--)ZJ(this,e[i],t,n);return me(this)};I0.prototype.getBoundingSphere=function(e,t){let n=this._tilesetHash[e.id];if(!l(n)||n.loadFail)return At.FAILED;let i=n.tilesetPrimitive;return l(i)?i.show?(ue.clone(i.boundingSphere,t),At.DONE):At.FAILED:At.PENDING};I0.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._entitiesToVisualize,a=this._tilesetHash,c=this._primitives;for(o=t.length-1;o>-1;o--)r=t[o],l(r._tileset)&&s.set(r.id,r);for(o=i.length-1;o>-1;o--)r=i[o],l(r._tileset)?s.set(r.id,r):(ZJ(this,r,a,c),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],ZJ(this,r,a,c),s.remove(r.id)};function ZJ(e,t,n,i){let o=n[t.id];l(o)&&(l(o.tilesetPrimitive)&&i.removeAndDestroy(o.tilesetPrimitive),delete n[t.id])}async function p6e(e,t,n,i){t[n.id]={url:e.url,loadFail:!1};try{let o=await Ps.fromUrl(e);if(o.id=n,i.add(o),!l(t[n.id]))return;t[n.id].tilesetPrimitive=o}catch(o){console.error(o),t[n.id].loadFail=!0}}var j2=I0;var nqn=y(C(),1);var A6e=U.WHITE,g6e=U.BLACK,b6e=new D(2,2);function ZT(e){e=e??Y.EMPTY_OBJECT,this._definitionChanged=new Ce,this._evenColor=void 0,this._evenColorSubscription=void 0,this._oddColor=void 0,this._oddColorSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.evenColor=e.evenColor,this.oddColor=e.oddColor,this.repeat=e.repeat}Object.defineProperties(ZT.prototype,{isConstant:{get:function(){return z.isConstant(this._evenColor)&&z.isConstant(this._oddColor)&&z.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},evenColor:fe("evenColor"),oddColor:fe("oddColor"),repeat:fe("repeat")});ZT.prototype.getType=function(e){return"Checkerboard"};var y6e=new j;ZT.prototype.getValue=function(e,t){return l(e)||(e=j.now(y6e)),l(t)||(t={}),t.lightColor=z.getValueOrClonedDefault(this._evenColor,e,A6e,t.lightColor),t.darkColor=z.getValueOrClonedDefault(this._oddColor,e,g6e,t.darkColor),t.repeat=z.getValueOrDefault(this._repeat,e,b6e),t};ZT.prototype.equals=function(e){return this===e||e instanceof ZT&&z.equals(this._evenColor,e._evenColor)&&z.equals(this._oddColor,e._oddColor)&&z.equals(this._repeat,e._repeat)};var BT=ZT;var Cqn=y(C(),1);var hqn=y(C(),1);var ihe={id:void 0};function q2(e){if(e._firing){e._refire=!0;return}if(e._suspendCount===0){let t=e._addedEntities,n=e._removedEntities,i=e._changedEntities;if(i.length!==0||t.length!==0||n.length!==0){e._firing=!0;do{e._refire=!1;let o=t.values.slice(0),r=n.values.slice(0),s=i.values.slice(0);t.removeAll(),n.removeAll(),i.removeAll(),e._collectionChanged.raiseEvent(e,o,r,s)}while(e._refire);e._firing=!1}}}function Dc(e){this._owner=e,this._entities=new Bt,this._addedEntities=new Bt,this._removedEntities=new Bt,this._changedEntities=new Bt,this._suspendCount=0,this._collectionChanged=new Ce,this._id=qn(),this._show=!0,this._firing=!1,this._refire=!1}Dc.prototype.suspendEvents=function(){this._suspendCount++};Dc.prototype.resumeEvents=function(){this._suspendCount--,q2(this)};Object.defineProperties(Dc.prototype,{collectionChanged:{get:function(){return this._collectionChanged}},id:{get:function(){return this._id}},values:{get:function(){return this._entities.values}},show:{get:function(){return this._show},set:function(e){if(e===this._show)return;this.suspendEvents();let t,n=[],i=this._entities.values,o=i.length;for(t=0;t<o;t++)n.push(i[t].isShowing);for(this._show=e,t=0;t<o;t++){let r=n[t],s=i[t];r!==s.isShowing&&s.definitionChanged.raiseEvent(s,"isShowing",s.isShowing,r)}this.resumeEvents()}},owner:{get:function(){return this._owner}}});Dc.prototype.computeAvailability=function(){let e=ze.MAXIMUM_VALUE,t=ze.MINIMUM_VALUE,n=this._entities.values;for(let i=0,o=n.length;i<o;i++){let s=n[i].availability;if(l(s)){let a=s.start,c=s.stop;j.lessThan(a,e)&&!a.equals(ze.MINIMUM_VALUE)&&(e=a),j.greaterThan(c,t)&&!c.equals(ze.MAXIMUM_VALUE)&&(t=c)}}return ze.MAXIMUM_VALUE.equals(e)&&(e=ze.MINIMUM_VALUE),ze.MINIMUM_VALUE.equals(t)&&(t=ze.MAXIMUM_VALUE),new wn({start:e,stop:t})};Dc.prototype.add=function(e){e instanceof ur||(e=new ur(e));let t=e.id,n=this._entities;if(n.contains(t))throw new Ae(`An entity with id ${t} already exists in this collection.`);return e.entityCollection=this,n.set(t,e),this._removedEntities.remove(t)||this._addedEntities.set(t,e),e.definitionChanged.addEventListener(Dc.prototype._onEntityDefinitionChanged,this),q2(this),e};Dc.prototype.remove=function(e){return l(e)?this.removeById(e.id):!1};Dc.prototype.contains=function(e){return this._entities.get(e.id)===e};Dc.prototype.removeById=function(e){if(!l(e))return!1;let n=this._entities.get(e);return this._entities.remove(e)?(this._addedEntities.remove(e)||(this._removedEntities.set(e,n),this._changedEntities.remove(e)),this._entities.remove(e),n.definitionChanged.removeEventListener(Dc.prototype._onEntityDefinitionChanged,this),q2(this),!0):!1};Dc.prototype.removeAll=function(){let e=this._entities,t=e.length,n=e.values,i=this._addedEntities,o=this._removedEntities;for(let r=0;r<t;r++){let s=n[r],a=s.id,c=i.get(a);l(c)||(s.definitionChanged.removeEventListener(Dc.prototype._onEntityDefinitionChanged,this),o.set(a,s))}e.removeAll(),i.removeAll(),this._changedEntities.removeAll(),q2(this)};Dc.prototype.getById=function(e){return this._entities.get(e)};Dc.prototype.getOrCreateEntity=function(e){let t=this._entities.get(e);return l(t)||(ihe.id=e,t=new ur(ihe),this.add(t)),t};Dc.prototype._onEntityDefinitionChanged=function(e){let t=e.id;this._addedEntities.contains(t)||this._changedEntities.set(t,e),q2(this)};var Ca=Dc;var r5={id:void 0},wT=new Array(2);function BJ(e){let t=e.propertyNames,n=t.length;for(let i=0;i<n;i++)e[t[i]]=void 0;e._name=void 0,e._availability=void 0}function ohe(e,t,n,i){wT[0]=n,wT[1]=i.id,t[JSON.stringify(wT)]=i.definitionChanged.addEventListener(rs.prototype._onDefinitionChanged,e)}function rhe(e,t,n,i){wT[0]=n,wT[1]=i.id;let o=JSON.stringify(wT);t[o](),t[o]=void 0}function _0(e){if(e._shouldRecomposite=!0,e._suspendCount!==0)return;let t=e._collections,n=t.length,i=e._collectionsCopy,o=i.length,r,s,a,c,d,u=e._composite,h=new Ca(e),p=e._eventHash,g;for(r=0;r<o;r++)for(d=i[r],d.collectionChanged.removeEventListener(rs.prototype._onCollectionChanged,e),a=d.values,g=d.id,c=a.length-1;c>-1;c--)s=a[c],rhe(e,p,g,s);for(r=n-1;r>=0;r--)for(d=t[r],d.collectionChanged.addEventListener(rs.prototype._onCollectionChanged,e),a=d.values,g=d.id,c=a.length-1;c>-1;c--){s=a[c],ohe(e,p,g,s);let b=h.getById(s.id);l(b)||(b=u.getById(s.id),l(b)?BJ(b):(r5.id=s.id,b=new ur(r5)),h.add(b)),b.merge(s)}e._collectionsCopy=t.slice(0),u.suspendEvents(),u.removeAll();let f=h.values;for(r=0;r<f.length;r++)u.add(f[r]);u.resumeEvents()}function rs(e,t){this._owner=t,this._composite=new Ca(this),this._suspendCount=0,this._collections=l(e)?e.slice():[],this._collectionsCopy=[],this._id=qn(),this._eventHash={},_0(this),this._shouldRecomposite=!1}Object.defineProperties(rs.prototype,{collectionChanged:{get:function(){return this._composite._collectionChanged}},id:{get:function(){return this._id}},values:{get:function(){return this._composite.values}},owner:{get:function(){return this._owner}}});rs.prototype.addCollection=function(e,t){l(t)?this._collections.splice(t,0,e):(t=this._collections.length,this._collections.push(e)),_0(this)};rs.prototype.removeCollection=function(e){let t=this._collections.indexOf(e);return t!==-1?(this._collections.splice(t,1),_0(this),!0):!1};rs.prototype.removeAllCollections=function(){this._collections.length=0,_0(this)};rs.prototype.containsCollection=function(e){return this._collections.indexOf(e)!==-1};rs.prototype.contains=function(e){return this._composite.contains(e)};rs.prototype.indexOfCollection=function(e){return this._collections.indexOf(e)};rs.prototype.getCollection=function(e){return this._collections[e]};rs.prototype.getCollectionsLength=function(){return this._collections.length};function s5(e,t){return e.indexOf(t)}function she(e,t,n){let i=e._collections;if(t=Z.clamp(t,0,i.length-1),n=Z.clamp(n,0,i.length-1),t===n)return;let o=i[t];i[t]=i[n],i[n]=o,_0(e)}rs.prototype.raiseCollection=function(e){let t=s5(this._collections,e);she(this,t,t+1)};rs.prototype.lowerCollection=function(e){let t=s5(this._collections,e);she(this,t,t-1)};rs.prototype.raiseCollectionToTop=function(e){let t=s5(this._collections,e);t!==this._collections.length-1&&(this._collections.splice(t,1),this._collections.push(e),_0(this))};rs.prototype.lowerCollectionToBottom=function(e){let t=s5(this._collections,e);t!==0&&(this._collections.splice(t,1),this._collections.splice(0,0,e),_0(this))};rs.prototype.suspendEvents=function(){this._suspendCount++,this._composite.suspendEvents()};rs.prototype.resumeEvents=function(){this._suspendCount--,this._shouldRecomposite&&this._suspendCount===0&&(_0(this),this._shouldRecomposite=!1),this._composite.resumeEvents()};rs.prototype.computeAvailability=function(){return this._composite.computeAvailability()};rs.prototype.getById=function(e){return this._composite.getById(e)};rs.prototype._onCollectionChanged=function(e,t,n){let i=this._collectionsCopy,o=i.length,r=this._composite;r.suspendEvents();let s,a,c,d,u=n.length,h=this._eventHash,p=e.id;for(s=0;s<u;s++){let f=n[s];rhe(this,h,p,f);let b=f.id;for(a=o-1;a>=0;a--)c=i[a].getById(b),l(c)&&(l(d)||(d=r.getById(b),BJ(d)),d.merge(c));l(d)||r.removeById(b),d=void 0}let g=t.length;for(s=0;s<g;s++){let f=t[s];ohe(this,h,p,f);let b=f.id;for(a=o-1;a>=0;a--)c=i[a].getById(b),l(c)&&(l(d)||(d=r.getById(b),l(d)?BJ(d):(r5.id=b,d=new ur(r5),r.add(d))),d.merge(c));d=void 0}r.resumeEvents()};rs.prototype._onDefinitionChanged=function(e,t,n,i){let o=this._collections,r=this._composite,s=o.length,a=e.id,c=r.getById(a),d=c[t],u=!l(d),h=!0;for(let p=s-1;p>=0;p--){let g=o[p].getById(e.id);if(l(g)){let f=g[t];if(l(f)){if(h)if(h=!1,l(f.merge)&&l(f.clone))d=f.clone(d);else{d=f;break}d.merge(f)}}}u&&c.propertyNames.indexOf(t)===-1&&c.addProperty(t),c[t]=d};var wJ=rs;var zqn=y(C(),1);var Dqn=y(C(),1);var Iqn=y(C(),1);function XJ(){this._removalFunctions=[]}XJ.prototype.add=function(e,t,n){let i=e.addEventListener(t,n);this._removalFunctions.push(i);let o=this;return function(){i();let r=o._removalFunctions;r.splice(r.indexOf(i),1)}};XJ.prototype.removeAll=function(){let e=this._removalFunctions;for(let t=0,n=e.length;t<n;++t)e[t]();e.length=0};var Lr=XJ;var wqn=y(C(),1);function PJ(e,t){return j.compare(e.start,t.start)}function ss(e){if(this._intervals=[],this._changedEvent=new Ce,l(e)){let t=e.length;for(let n=0;n<t;n++)this.addInterval(e[n])}}Object.defineProperties(ss.prototype,{changedEvent:{get:function(){return this._changedEvent}},start:{get:function(){let e=this._intervals;return e.length===0?void 0:e[0].start}},isStartIncluded:{get:function(){let e=this._intervals;return e.length===0?!1:e[0].isStartIncluded}},stop:{get:function(){let e=this._intervals,t=e.length;return t===0?void 0:e[t-1].stop}},isStopIncluded:{get:function(){let e=this._intervals,t=e.length;return t===0?!1:e[t-1].isStopIncluded}},length:{get:function(){return this._intervals.length}},isEmpty:{get:function(){return this._intervals.length===0}}});ss.prototype.equals=function(e,t){if(this===e)return!0;if(!(e instanceof ss))return!1;let n=this._intervals,i=e._intervals,o=n.length;if(o!==i.length)return!1;for(let r=0;r<o;r++)if(!wn.equals(n[r],i[r],t))return!1;return!0};ss.prototype.get=function(e){return this._intervals[e]};ss.prototype.removeAll=function(){this._intervals.length>0&&(this._intervals.length=0,this._changedEvent.raiseEvent(this))};ss.prototype.findIntervalContainingDate=function(e){let t=this.indexOf(e);return t>=0?this._intervals[t]:void 0};ss.prototype.findDataForIntervalContainingDate=function(e){let t=this.indexOf(e);return t>=0?this._intervals[t].data:void 0};ss.prototype.contains=function(e){return this.indexOf(e)>=0};var WJ=new wn;ss.prototype.indexOf=function(e){let t=this._intervals;WJ.start=e,WJ.stop=e;let n=Yo(t,WJ,PJ);return n>=0?t[n].isStartIncluded?n:n>0&&t[n-1].stop.equals(e)&&t[n-1].isStopIncluded?n-1:~n:(n=~n,n>0&&n-1<t.length&&wn.contains(t[n-1],e)?n-1:~n)};ss.prototype.findInterval=function(e){e=e??Y.EMPTY_OBJECT;let t=e.start,n=e.stop,i=e.isStartIncluded,o=e.isStopIncluded,r=this._intervals;for(let s=0,a=r.length;s<a;s++){let c=r[s];if((!l(t)||c.start.equals(t))&&(!l(n)||c.stop.equals(n))&&(!l(i)||c.isStartIncluded===i)&&(!l(o)||c.isStopIncluded===o))return r[s]}};ss.prototype.addInterval=function(e,t){if(e.isEmpty)return;let n=this._intervals;if(n.length===0||j.greaterThan(e.start,n[n.length-1].stop)){n.push(e),this._changedEvent.raiseEvent(this);return}let i=Yo(n,e,PJ);i<0?i=~i:i>0&&e.isStartIncluded&&n[i-1].isStartIncluded&&n[i-1].start.equals(e.start)?--i:i<n.length&&!e.isStartIncluded&&n[i].isStartIncluded&&n[i].start.equals(e.start)&&++i;let o;for(i>0&&(o=j.compare(n[i-1].stop,e.start),(o>0||o===0&&(n[i-1].isStopIncluded||e.isStartIncluded))&&((l(t)?t(n[i-1].data,e.data):n[i-1].data===e.data)?(j.greaterThan(e.stop,n[i-1].stop)?e=new wn({start:n[i-1].start,stop:e.stop,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:e.isStopIncluded,data:e.data}):e=new wn({start:n[i-1].start,stop:n[i-1].stop,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:n[i-1].isStopIncluded||e.stop.equals(n[i-1].stop)&&e.isStopIncluded,data:e.data}),n.splice(i-1,1),--i):(o=j.compare(n[i-1].stop,e.stop),(o>0||o===0&&n[i-1].isStopIncluded&&!e.isStopIncluded)&&n.splice(i,0,new wn({start:e.stop,stop:n[i-1].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:n[i-1].isStopIncluded,data:n[i-1].data})),n[i-1]=new wn({start:n[i-1].start,stop:e.start,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:!e.isStartIncluded,data:n[i-1].data}))));i<n.length&&(o=j.compare(e.stop,n[i].start),o>0||o===0&&(e.isStopIncluded||n[i].isStartIncluded));)if(l(t)?t(n[i].data,e.data):n[i].data===e.data)e=new wn({start:e.start,stop:j.greaterThan(n[i].stop,e.stop)?n[i].stop:e.stop,isStartIncluded:e.isStartIncluded,isStopIncluded:j.greaterThan(n[i].stop,e.stop)?n[i].isStopIncluded:e.isStopIncluded,data:e.data}),n.splice(i,1);else if(n[i]=new wn({start:e.stop,stop:n[i].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:n[i].isStopIncluded,data:n[i].data}),n[i].isEmpty)n.splice(i,1);else break;n.splice(i,0,e),this._changedEvent.raiseEvent(this)};ss.prototype.removeInterval=function(e){if(e.isEmpty)return!1;let t=this._intervals,n=Yo(t,e,PJ);n<0&&(n=~n);let i=!1;for(n>0&&(j.greaterThan(t[n-1].stop,e.start)||t[n-1].stop.equals(e.start)&&t[n-1].isStopIncluded&&e.isStartIncluded)&&(i=!0,(j.greaterThan(t[n-1].stop,e.stop)||t[n-1].isStopIncluded&&!e.isStopIncluded&&t[n-1].stop.equals(e.stop))&&t.splice(n,0,new wn({start:e.stop,stop:t[n-1].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:t[n-1].isStopIncluded,data:t[n-1].data})),t[n-1]=new wn({start:t[n-1].start,stop:e.start,isStartIncluded:t[n-1].isStartIncluded,isStopIncluded:!e.isStartIncluded,data:t[n-1].data})),n<t.length&&!e.isStartIncluded&&t[n].isStartIncluded&&e.start.equals(t[n].start)&&(i=!0,t.splice(n,0,new wn({start:t[n].start,stop:t[n].start,isStartIncluded:!0,isStopIncluded:!0,data:t[n].data})),++n);n<t.length&&j.greaterThan(e.stop,t[n].stop);)i=!0,t.splice(n,1);return n<t.length&&e.stop.equals(t[n].stop)&&(i=!0,!e.isStopIncluded&&t[n].isStopIncluded?n+1<t.length&&t[n+1].start.equals(e.stop)&&t[n].data===t[n+1].data?(t.splice(n,1),t[n]=new wn({start:t[n].start,stop:t[n].stop,isStartIncluded:!0,isStopIncluded:t[n].isStopIncluded,data:t[n].data})):t[n]=new wn({start:e.stop,stop:e.stop,isStartIncluded:!0,isStopIncluded:!0,data:t[n].data}):t.splice(n,1)),n<t.length&&(j.greaterThan(e.stop,t[n].start)||e.stop.equals(t[n].start)&&e.isStopIncluded&&t[n].isStartIncluded)&&(i=!0,t[n]=new wn({start:e.stop,stop:t[n].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:t[n].isStopIncluded,data:t[n].data})),i&&this._changedEvent.raiseEvent(this),i};ss.prototype.intersect=function(e,t,n){let i=new ss,o=0,r=0,s=this._intervals,a=e._intervals;for(;o<s.length&&r<a.length;){let c=s[o],d=a[r];if(j.lessThan(c.stop,d.start))++o;else if(j.lessThan(d.stop,c.start))++r;else{if(l(n)||l(t)&&t(c.data,d.data)||!l(t)&&d.data===c.data){let u=wn.intersect(c,d,new wn,n);u.isEmpty||i.addInterval(u,t)}j.lessThan(c.stop,d.stop)||c.stop.equals(d.stop)&&!c.isStopIncluded&&d.isStopIncluded?++o:++r}}return i};ss.fromJulianDateArray=function(e,t){l(t)||(t=new ss);let n=e.julianDates,i=n.length,o=e.dataCallback,r=e.isStartIncluded??!0,s=e.isStopIncluded??!0,a=e.leadingInterval??!1,c=e.trailingInterval??!1,d,u=0;a&&(++u,d=new wn({start:ze.MINIMUM_VALUE,stop:n[0],isStartIncluded:!0,isStopIncluded:!r}),d.data=l(o)?o(d,t.length):t.length,t.addInterval(d));for(let h=0;h<i-1;++h){let p=n[h],g=n[h+1];d=new wn({start:p,stop:g,isStartIncluded:t.length===u?r:!0,isStopIncluded:h===i-2?s:!1}),d.data=l(o)?o(d,t.length):t.length,t.addInterval(d),p=g}return c&&(d=new wn({start:n[i-1],stop:ze.MAXIMUM_VALUE,isStartIncluded:!s,isStopIncluded:!0}),d.data=l(o)?o(d,t.length):t.length,t.addInterval(d)),t};var Qc=new Yp,$2=[0,31,28,31,30,31,30,31,31,30,31,30,31];function FJ(e,t,n){l(n)||(n=new j),j.toGregorianDate(e,Qc);let i=Qc.millisecond+t.millisecond,o=Qc.second+t.second,r=Qc.minute+t.minute,s=Qc.hour+t.hour,a=Qc.day+t.day,c=Qc.month+t.month,d=Qc.year+t.year;for(i>=1e3&&(o+=Math.floor(i/1e3),i=i%1e3),o>=60&&(r+=Math.floor(o/60),o=o%60),r>=60&&(s+=Math.floor(r/60),r=r%60),s>=24&&(a+=Math.floor(s/24),s=s%24),$2[2]=qm(d)?29:28;a>$2[c]||c>=13;)a>$2[c]&&(a-=$2[c],++c),c>=13&&(--c,d+=Math.floor(c/12),c=c%12,++c),$2[2]=qm(d)?29:28;return Qc.millisecond=i,Qc.second=o,Qc.minute=r,Qc.hour=s,Qc.day=a,Qc.month=c,Qc.year=d,j.fromGregorianDate(Qc,n)}var C6e=new j,x6e=/P(?:([\d.,]+)Y)?(?:([\d.,]+)M)?(?:([\d.,]+)W)?(?:([\d.,]+)D)?(?:T(?:([\d.,]+)H)?(?:([\d.,]+)M)?(?:([\d.,]+)S)?)?/;function ahe(e,t){if(!l(e)||e.length===0)return!1;if(t.year=0,t.month=0,t.day=0,t.hour=0,t.minute=0,t.second=0,t.millisecond=0,e[0]==="P"){let n=e.match(x6e);if(!l(n))return!1;if(l(n[1])&&(t.year=Number(n[1].replace(",","."))),l(n[2])&&(t.month=Number(n[2].replace(",","."))),l(n[3])&&(t.day=Number(n[3].replace(",","."))*7),l(n[4])&&(t.day+=Number(n[4].replace(",","."))),l(n[5])&&(t.hour=Number(n[5].replace(",","."))),l(n[6])&&(t.minute=Number(n[6].replace(",","."))),l(n[7])){let i=Number(n[7].replace(",","."));t.second=Math.floor(i),t.millisecond=i%1*1e3}}else e[e.length-1]!=="Z"&&(e+="Z"),j.toGregorianDate(j.fromIso8601(e,C6e),t);return t.year||t.month||t.day||t.hour||t.minute||t.second||t.millisecond}var eW=new Yp;ss.fromIso8601=function(e,t){let n=e.iso8601.split("/"),i=j.fromIso8601(n[0]),o=j.fromIso8601(n[1]),r=[];if(!ahe(n[2],eW))r.push(i,o);else{let s=j.clone(i);for(r.push(s);j.compare(s,o)<0;)s=FJ(s,eW),j.compare(o,s)<=0&&j.clone(o,s),r.push(s)}return ss.fromJulianDateArray({julianDates:r,isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};ss.fromIso8601DateArray=function(e,t){return ss.fromJulianDateArray({julianDates:e.iso8601Dates.map(function(n){return j.fromIso8601(n)}),isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};ss.fromIso8601DurationArray=function(e,t){let n=e.epoch,i=e.iso8601Durations,o=e.relativeToPrevious??!1,r=[],s,a,c=i.length;for(let d=0;d<c;++d)(ahe(i[d],eW)||d===0)&&(o&&l(a)?s=FJ(a,eW):s=FJ(n,eW),r.push(s),a=s);return ss.fromJulianDateArray({julianDates:r,isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};var as=ss;function I6e(e,t,n,i){function o(){n.raiseEvent(e)}let r=[];t.removeAll();let s=i.length;for(let a=0;a<s;a++){let c=i.get(a);l(c.data)&&r.indexOf(c.data)===-1&&t.add(c.data.definitionChanged,o)}}function Wx(){this._eventHelper=new Lr,this._definitionChanged=new Ce,this._intervals=new as,this._intervals.changedEvent.addEventListener(Wx.prototype._intervalsChanged,this)}Object.defineProperties(Wx.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}}});var _6e=new j;Wx.prototype.getValue=function(e,t){l(e)||(e=j.now(_6e));let n=this._intervals.findDataForIntervalContainingDate(e);if(l(n))return n.getValue(e,t)};Wx.prototype.equals=function(e){return this===e||e instanceof Wx&&this._intervals.equals(e._intervals,z.equals)};Wx.prototype._intervalsChanged=function(){I6e(this,this._eventHelper,this._definitionChanged,this._intervals),this._definitionChanged.raiseEvent(this)};var Uc=Wx;function E0(){this._definitionChanged=new Ce,this._composite=new Uc,this._composite.definitionChanged.addEventListener(E0.prototype._raiseDefinitionChanged,this)}Object.defineProperties(E0.prototype,{isConstant:{get:function(){return this._composite.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._composite._intervals}}});E0.prototype.getType=function(e){let t=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(t))return t.getType(e)};var E6e=new j;E0.prototype.getValue=function(e,t){l(e)||(e=j.now(E6e));let n=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(n))return n.getValue(e,t)};E0.prototype.equals=function(e){return this===e||e instanceof E0&&this._composite.equals(e._composite,z.equals)};E0.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var XT=E0;var n$n=y(C(),1);function T0(e){this._referenceFrame=e??eo.FIXED,this._definitionChanged=new Ce,this._composite=new Uc,this._composite.definitionChanged.addEventListener(T0.prototype._raiseDefinitionChanged,this)}Object.defineProperties(T0.prototype,{isConstant:{get:function(){return this._composite.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._composite.intervals}},referenceFrame:{get:function(){return this._referenceFrame},set:function(e){this._referenceFrame=e}}});var T6e=new j;T0.prototype.getValue=function(e,t){return l(e)||(e=j.now(T6e)),this.getValueInReferenceFrame(e,eo.FIXED,t)};T0.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(i))return i.getValueInReferenceFrame(e,t,n)};T0.prototype.equals=function(e){return this===e||e instanceof T0&&this._referenceFrame===e._referenceFrame&&this._composite.equals(e._composite,z.equals)};T0.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var ka=T0;var jei=y(C(),1);var j$n=y(C(),1);var o$n=y(C(),1),S6e={ROUNDED:0,MITERED:1,BEVELED:2},Hi=Object.freeze(S6e);var V$n=y(C(),1);var y$n=y(C(),1);var Ya=[new m,new m],L6e=new m,R6e=new m,V6e=new m,G6e=new m,Z6e=new m,B6e=new m,w6e=new m,X6e=new m,W6e=new m,WT=new m,a5=new m,tW={},MJ=new ge;function F6e(e,t){let n=new Array(e.length);for(let i=0;i<e.length;i++){let o=e[i];MJ=t.cartesianToCartographic(o,MJ),n[i]=MJ.height,e[i]=t.scaleToGeodeticSurface(o,o)}return n}function vJ(e,t,n,i){let o=e[0],r=e[1],s=m.angleBetween(o,r),a=Math.ceil(s/i),c=new Array(a),d;if(t===n){for(d=0;d<a;d++)c[d]=t;return c.push(n),c}let h=(n-t)/a;for(d=1;d<a;d++){let p=t+d*h;c[d]=p}return c[0]=t,c.push(n),c}var c5=new m,l5=new m;function P6e(e,t,n,i){let o=new gs(n,i),r=o.projectPointOntoPlane(m.add(n,e,c5),c5),s=o.projectPointOntoPlane(m.add(n,t,l5),l5),a=D.angleBetween(r,s);return s.x*r.y-s.y*r.x>=0?-a:a}var M6e=new m(-1,0,0),Fx=new X,v6e=new X,NJ=new $,N6e=$.IDENTITY.clone(),D6e=new m,Q6e=new ce,che=new m;function fg(e,t,n,i,o,r,s,a){let c=D6e,d=Q6e;Fx=Dt.eastNorthUpToFixedFrame(e,o,Fx),c=X.multiplyByPointAsVector(Fx,M6e,c),c=m.normalize(c,c);let u=P6e(c,t,e,o);NJ=$.fromRotationZ(u,NJ),che.z=r,Fx=X.multiplyTransformation(Fx,X.fromRotationTranslation(NJ,che,v6e),Fx);let h=N6e;h[0]=s;for(let p=0;p<a;p++)for(let g=0;g<n.length;g+=3)d=m.fromArray(n,g,d),d=$.multiplyByVector(h,d,d),d=X.multiplyByPoint(Fx,d,d),i.push(d.x,d.y,d.z);return i}var U6e=new m;function DJ(e,t,n,i,o,r,s){for(let a=0;a<e.length;a+=3){let c=m.fromArray(e,a,U6e);i=fg(c,t,n,i,o,r[a/3],s,1)}return i}function k6e(e,t){let n=e.length,i=new Array(n*6),o=0,r=t.x+t.width/2,s=t.y+t.height/2,a=e[0];i[o++]=a.x-r,i[o++]=0,i[o++]=a.y-s;for(let c=1;c<n;c++){a=e[c];let d=a.x-r,u=a.y-s;i[o++]=d,i[o++]=0,i[o++]=u,i[o++]=d,i[o++]=0,i[o++]=u}return a=e[0],i[o++]=a.x-r,i[o++]=0,i[o++]=a.y-s,i}function lhe(e,t){let n=e.length,i=new Array(n*3),o=0,r=t.x+t.width/2,s=t.y+t.height/2;for(let a=0;a<n;a++)i[o++]=e[a].x-r,i[o++]=0,i[o++]=e[a].y-s;return i}var dhe=new Pe,uhe=new m,mhe=new $;function hhe(e,t,n,i,o,r,s,a,c,d){let u=m.angleBetween(m.subtract(t,e,WT),m.subtract(n,e,a5)),h=i===Hi.BEVELED?0:Math.ceil(u/Z.toRadians(5)),p;o?p=$.fromQuaternion(Pe.fromAxisAngle(m.negate(e,WT),u/(h+1),dhe),mhe):p=$.fromQuaternion(Pe.fromAxisAngle(e,u/(h+1),dhe),mhe);let g,f;if(t=m.clone(t,uhe),h>0){let b=d?2:1;for(let x=0;x<h;x++)t=$.multiplyByVector(p,t,t),g=m.subtract(t,e,WT),g=m.normalize(g,g),o||(g=m.negate(g,g)),f=r.scaleToGeodeticSurface(t,a5),s=fg(f,g,a,s,r,c,1,b)}else g=m.subtract(t,e,WT),g=m.normalize(g,g),o||(g=m.negate(g,g)),f=r.scaleToGeodeticSurface(t,a5),s=fg(f,g,a,s,r,c,1,1),n=m.clone(n,uhe),g=m.subtract(n,e,WT),g=m.normalize(g,g),o||(g=m.negate(g,g)),f=r.scaleToGeodeticSurface(n,a5),s=fg(f,g,a,s,r,c,1,1);return s}tW.removeDuplicatesFromShape=function(e){let t=e.length,n=[];for(let i=t-1,o=0;o<t;i=o++){let r=e[i],s=e[o];D.equals(r,s)||n.push(s)}return n};tW.angleIsGreaterThanPi=function(e,t,n,i){let o=new gs(n,i),r=o.projectPointOntoPlane(m.add(n,e,c5),c5),s=o.projectPointOntoPlane(m.add(n,t,l5),l5);return s.x*r.y-s.y*r.x>=0};var Y6e=new m,O6e=new m;tW.computePositions=function(e,t,n,i,o){let r=i._ellipsoid,s=F6e(e,r),a=i._granularity,c=i._cornerType,d=o?k6e(t,n):lhe(t,n),u=o?lhe(t,n):void 0,h=n.height/2,p=n.width/2,g=e.length,f=[],b=o?[]:void 0,x=L6e,I=R6e,_=V6e,E=G6e,S=Z6e,R=B6e,G=w6e,B=X6e,w=W6e,F=e[0],P=e[1];E=r.geodeticSurfaceNormal(F,E),x=m.subtract(P,F,x),x=m.normalize(x,x),B=m.cross(E,x,B),B=m.normalize(B,B);let A=s[0],T=s[1];o&&(b=fg(F,B,u,b,r,A+h,1,1)),w=m.clone(F,w),F=P,I=m.negate(x,I);let L,V;for(let Q=1;Q<g-1;Q++){let N=o?2:1;if(P=e[Q+1],F.equals(P)){xt("Positions are too close and are considered equivalent with rounding error.");continue}x=m.subtract(P,F,x),x=m.normalize(x,x),E=r.geodeticSurfaceNormal(F,E);let k=m.multiplyByScalar(E,m.dot(x,E),Y6e);m.subtract(x,k,k),m.normalize(k,k);let v=m.multiplyByScalar(E,m.dot(I,E),O6e);if(m.subtract(I,v,v),m.normalize(v,v),!Z.equalsEpsilon(Math.abs(m.dot(k,v)),1,Z.EPSILON7)){_=m.add(x,I,_),_=m.normalize(_,_),_=m.cross(_,E,_),_=m.cross(E,_,_),_=m.normalize(_,_);let H=1/Math.max(.25,m.magnitude(m.cross(_,I,WT))),ee=tW.angleIsGreaterThanPi(x,I,F,r);ee?(S=m.add(F,m.multiplyByScalar(_,H*p,_),S),R=m.add(S,m.multiplyByScalar(B,p,R),R),Ya[0]=m.clone(w,Ya[0]),Ya[1]=m.clone(R,Ya[1]),L=vJ(Ya,A+h,T+h,a),V=Oi.generateArc({positions:Ya,granularity:a,ellipsoid:r}),f=DJ(V,B,d,f,r,L,1),B=m.cross(E,x,B),B=m.normalize(B,B),G=m.add(S,m.multiplyByScalar(B,p,G),G),c===Hi.ROUNDED||c===Hi.BEVELED?hhe(S,R,G,c,ee,r,f,d,T+h,o):(_=m.negate(_,_),f=fg(F,_,d,f,r,T+h,H,N)),w=m.clone(G,w)):(S=m.add(F,m.multiplyByScalar(_,H*p,_),S),R=m.add(S,m.multiplyByScalar(B,-p,R),R),Ya[0]=m.clone(w,Ya[0]),Ya[1]=m.clone(R,Ya[1]),L=vJ(Ya,A+h,T+h,a),V=Oi.generateArc({positions:Ya,granularity:a,ellipsoid:r}),f=DJ(V,B,d,f,r,L,1),B=m.cross(E,x,B),B=m.normalize(B,B),G=m.add(S,m.multiplyByScalar(B,-p,G),G),c===Hi.ROUNDED||c===Hi.BEVELED?hhe(S,R,G,c,ee,r,f,d,T+h,o):f=fg(F,_,d,f,r,T+h,H,N),w=m.clone(G,w)),I=m.negate(x,I)}else f=fg(w,B,d,f,r,A+h,1,1),w=F;A=T,T=s[Q+1],F=P}Ya[0]=m.clone(w,Ya[0]),Ya[1]=m.clone(F,Ya[1]),L=vJ(Ya,A+h,T+h,a),V=Oi.generateArc({positions:Ya,granularity:a,ellipsoid:r}),f=DJ(V,B,d,f,r,L,1),o&&(b=fg(F,B,u,b,r,T+h,1,1)),g=f.length;let W=o?g+b.length:g,M=new Float64Array(W);return M.set(f),o&&M.set(b,g),M};var Dh=tW;var UJ={},FT=new m,bhe=new m,H6e=new m,fhe=new m,Zl=[new m,new m],yhe=new m,Che=new m,xhe=new m,z6e=new m,K6e=new m,J6e=new m,j6e=new m,q6e=new m,$6e=new m,eqe=new m,phe=new Pe,Ahe=new $;function d5(e,t,n,i,o){let r=m.angleBetween(m.subtract(t,e,FT),m.subtract(n,e,bhe)),s=i===Hi.BEVELED?1:Math.ceil(r/Z.toRadians(5))+1,a=s*3,c=new Array(a);c[a-3]=n.x,c[a-2]=n.y,c[a-1]=n.z;let d;o?d=$.fromQuaternion(Pe.fromAxisAngle(m.negate(e,FT),r/s,phe),Ahe):d=$.fromQuaternion(Pe.fromAxisAngle(e,r/s,phe),Ahe);let u=0;t=m.clone(t,FT);for(let h=0;h<s;h++)t=$.multiplyByVector(d,t,t),c[u++]=t.x,c[u++]=t.y,c[u++]=t.z;return c}function tqe(e){let t=yhe,n=Che,i=xhe,o=e[1];n=m.fromArray(e[1],o.length-3,n),i=m.fromArray(e[0],0,i),t=m.midpoint(n,i,t);let r=d5(t,n,i,Hi.ROUNDED,!1),s=e.length-1,a=e[s-1];o=e[s],n=m.fromArray(a,a.length-3,n),i=m.fromArray(o,0,i),t=m.midpoint(n,i,t);let c=d5(t,n,i,Hi.ROUNDED,!1);return[r,c]}function ghe(e,t,n,i){let o=FT;return i?o=m.add(e,t,o):(t=m.negate(t,t),o=m.add(e,t,o)),[o.x,o.y,o.z,n.x,n.y,n.z]}function QJ(e,t,n,i){let o=new Array(e.length),r=new Array(e.length),s=m.multiplyByScalar(t,n,FT),a=m.negate(s,bhe),c=0,d=e.length-1;for(let u=0;u<e.length;u+=3){let h=m.fromArray(e,u,H6e),p=m.add(h,a,fhe);o[c++]=p.x,o[c++]=p.y,o[c++]=p.z;let g=m.add(h,s,fhe);r[d--]=g.z,r[d--]=g.y,r[d--]=g.x}return i.push(o,r),i}UJ.addAttribute=function(e,t,n,i){let o=t.x,r=t.y,s=t.z;l(n)&&(e[n]=o,e[n+1]=r,e[n+2]=s),l(i)&&(e[i]=s,e[i-1]=r,e[i-2]=o)};var nqe=new m,iqe=new m;UJ.computePositions=function(e){let t=e.granularity,n=e.positions,i=e.ellipsoid,o=e.width/2,r=e.cornerType,s=e.saveAttributes,a=yhe,c=Che,d=xhe,u=z6e,h=K6e,p=J6e,g=j6e,f=q6e,b=$6e,x=eqe,I=[],_=s?[]:void 0,E=s?[]:void 0,S=n[0],R=n[1];c=m.normalize(m.subtract(R,S,c),c),a=i.geodeticSurfaceNormal(S,a),u=m.normalize(m.cross(a,c,u),u),s&&(_.push(u.x,u.y,u.z),E.push(a.x,a.y,a.z)),g=m.clone(S,g),S=R,d=m.negate(c,d);let G,B=[],w,F=n.length;for(w=1;w<F-1;w++){a=i.geodeticSurfaceNormal(S,a),R=n[w+1],c=m.normalize(m.subtract(R,S,c),c);let A=m.multiplyByScalar(a,m.dot(c,a),nqe);m.subtract(c,A,A),m.normalize(A,A);let T=m.multiplyByScalar(a,m.dot(d,a),iqe);if(m.subtract(d,T,T),m.normalize(T,T),!Z.equalsEpsilon(Math.abs(m.dot(A,T)),1,Z.EPSILON7)){h=m.normalize(m.add(c,d,h),h),h=m.cross(h,a,h),h=m.cross(a,h,h),h=m.normalize(h,h);let V=o/Math.max(.25,m.magnitude(m.cross(h,d,FT))),W=Dh.angleIsGreaterThanPi(c,d,S,i);h=m.multiplyByScalar(h,V,h),W?(f=m.add(S,h,f),x=m.add(f,m.multiplyByScalar(u,o,x),x),b=m.add(f,m.multiplyByScalar(u,o*2,b),b),Zl[0]=m.clone(g,Zl[0]),Zl[1]=m.clone(x,Zl[1]),G=Oi.generateArc({positions:Zl,granularity:t,ellipsoid:i}),I=QJ(G,u,o,I),s&&(_.push(u.x,u.y,u.z),E.push(a.x,a.y,a.z)),p=m.clone(b,p),u=m.normalize(m.cross(a,c,u),u),b=m.add(f,m.multiplyByScalar(u,o*2,b),b),g=m.add(f,m.multiplyByScalar(u,o,g),g),r===Hi.ROUNDED||r===Hi.BEVELED?B.push({leftPositions:d5(f,p,b,r,W)}):B.push({leftPositions:ghe(S,m.negate(h,h),b,W)})):(b=m.add(S,h,b),x=m.add(b,m.negate(m.multiplyByScalar(u,o,x),x),x),f=m.add(b,m.negate(m.multiplyByScalar(u,o*2,f),f),f),Zl[0]=m.clone(g,Zl[0]),Zl[1]=m.clone(x,Zl[1]),G=Oi.generateArc({positions:Zl,granularity:t,ellipsoid:i}),I=QJ(G,u,o,I),s&&(_.push(u.x,u.y,u.z),E.push(a.x,a.y,a.z)),p=m.clone(f,p),u=m.normalize(m.cross(a,c,u),u),f=m.add(b,m.negate(m.multiplyByScalar(u,o*2,f),f),f),g=m.add(b,m.negate(m.multiplyByScalar(u,o,g),g),g),r===Hi.ROUNDED||r===Hi.BEVELED?B.push({rightPositions:d5(b,p,f,r,W)}):B.push({rightPositions:ghe(S,h,f,W)})),d=m.negate(c,d)}S=R}a=i.geodeticSurfaceNormal(S,a),Zl[0]=m.clone(g,Zl[0]),Zl[1]=m.clone(S,Zl[1]),G=Oi.generateArc({positions:Zl,granularity:t,ellipsoid:i}),I=QJ(G,u,o,I),s&&(_.push(u.x,u.y,u.z),E.push(a.x,a.y,a.z));let P;return r===Hi.ROUNDED&&(P=tqe(I)),{positions:I,corners:B,lefts:_,normals:E,endPositions:P}};var io=UJ;var Ehe=new m,The=new m,u5=new m,m5=new m,oqe=new m,She=new m,S0=new m,PT=new m;function Lhe(e,t){for(let n=0;n<e.length;n++)e[n]=t.scaleToGeodeticSurface(e[n],e[n]);return e}function Qh(e,t,n,i,o,r){let s=e.normals,a=e.tangents,c=e.bitangents,d=m.normalize(m.cross(n,t,S0),S0);r.normal&&io.addAttribute(s,t,i,o),r.tangent&&io.addAttribute(a,d,i,o),r.bitangent&&io.addAttribute(c,n,i,o)}function Rhe(e,t,n){let i=e.positions,o=e.corners,r=e.endPositions,s=e.lefts,a=e.normals,c=new xn,d,u=0,h=0,p,g=0,f;for(p=0;p<i.length;p+=2)f=i[p].length-3,u+=f,g+=f*2,h+=i[p+1].length-3;for(u+=3,h+=3,p=0;p<o.length;p++){d=o[p];let q=o[p].leftPositions;l(q)?(f=q.length,u+=f,g+=f):(f=o[p].rightPositions.length,h+=f,g+=f)}let b=l(r),x;b&&(x=r[0].length-3,u+=x,h+=x,x/=3,g+=x*6);let I=u+h,_=new Float64Array(I),E=t.normal?new Float32Array(I):void 0,S=t.tangent?new Float32Array(I):void 0,R=t.bitangent?new Float32Array(I):void 0,G={normals:E,tangents:S,bitangents:R},B=0,w=I-1,F,P,A,T,L=Ehe,V=The,W,M,Q=x/2,N=Me.createTypedArray(I/3,g),k=0;if(b){M=u5,W=m5;let q=r[0];for(L=m.fromArray(a,0,L),V=m.fromArray(s,0,V),p=0;p<Q;p++)M=m.fromArray(q,(Q-1-p)*3,M),W=m.fromArray(q,(Q+p)*3,W),io.addAttribute(_,W,B),io.addAttribute(_,M,void 0,w),Qh(G,L,V,B,w,t),P=B/3,T=P+1,F=(w-2)/3,A=F-1,N[k++]=F,N[k++]=P,N[k++]=A,N[k++]=A,N[k++]=P,N[k++]=T,B+=3,w-=3}let v=0,O=0,H=i[v++],ee=i[v++];_.set(H,B),_.set(ee,w-ee.length+1),V=m.fromArray(s,O,V);let K,te;for(f=ee.length-3,p=0;p<f;p+=3)K=n.geodeticSurfaceNormal(m.fromArray(H,p,S0),S0),te=n.geodeticSurfaceNormal(m.fromArray(ee,f-p,PT),PT),L=m.normalize(m.add(K,te,L),L),Qh(G,L,V,B,w,t),P=B/3,T=P+1,F=(w-2)/3,A=F-1,N[k++]=F,N[k++]=P,N[k++]=A,N[k++]=A,N[k++]=P,N[k++]=T,B+=3,w-=3;for(K=n.geodeticSurfaceNormal(m.fromArray(H,f,S0),S0),te=n.geodeticSurfaceNormal(m.fromArray(ee,f,PT),PT),L=m.normalize(m.add(K,te,L),L),O+=3,p=0;p<o.length;p++){let q;d=o[p];let pe=d.leftPositions,ye=d.rightPositions,he,xe,Te=She,Be=u5,Le=m5;if(L=m.fromArray(a,O,L),l(pe)){for(Qh(G,L,V,void 0,w,t),w-=3,he=T,xe=A,q=0;q<pe.length/3;q++)Te=m.fromArray(pe,q*3,Te),N[k++]=he,N[k++]=xe-q-1,N[k++]=xe-q,io.addAttribute(_,Te,void 0,w),Be=m.fromArray(_,(xe-q-1)*3,Be),Le=m.fromArray(_,he*3,Le),V=m.normalize(m.subtract(Be,Le,V),V),Qh(G,L,V,void 0,w,t),w-=3;Te=m.fromArray(_,he*3,Te),Be=m.subtract(m.fromArray(_,xe*3,Be),Te,Be),Le=m.subtract(m.fromArray(_,(xe-q)*3,Le),Te,Le),V=m.normalize(m.add(Be,Le,V),V),Qh(G,L,V,B,void 0,t),B+=3}else{for(Qh(G,L,V,B,void 0,t),B+=3,he=A,xe=T,q=0;q<ye.length/3;q++)Te=m.fromArray(ye,q*3,Te),N[k++]=he,N[k++]=xe+q,N[k++]=xe+q+1,io.addAttribute(_,Te,B),Be=m.fromArray(_,he*3,Be),Le=m.fromArray(_,(xe+q)*3,Le),V=m.normalize(m.subtract(Be,Le,V),V),Qh(G,L,V,B,void 0,t),B+=3;Te=m.fromArray(_,he*3,Te),Be=m.subtract(m.fromArray(_,(xe+q)*3,Be),Te,Be),Le=m.subtract(m.fromArray(_,xe*3,Le),Te,Le),V=m.normalize(m.negate(m.add(Le,Be,V),V),V),Qh(G,L,V,void 0,w,t),w-=3}for(H=i[v++],ee=i[v++],H.splice(0,3),ee.splice(ee.length-3,3),_.set(H,B),_.set(ee,w-ee.length+1),f=ee.length-3,O+=3,V=m.fromArray(s,O,V),q=0;q<ee.length;q+=3)K=n.geodeticSurfaceNormal(m.fromArray(H,q,S0),S0),te=n.geodeticSurfaceNormal(m.fromArray(ee,f-q,PT),PT),L=m.normalize(m.add(K,te,L),L),Qh(G,L,V,B,w,t),T=B/3,P=T-1,A=(w-2)/3,F=A+1,N[k++]=F,N[k++]=P,N[k++]=A,N[k++]=A,N[k++]=P,N[k++]=T,B+=3,w-=3;B-=3,w+=3}if(L=m.fromArray(a,a.length-3,L),Qh(G,L,V,B,w,t),b){B+=3,w-=3,M=u5,W=m5;let q=r[1];for(p=0;p<Q;p++)M=m.fromArray(q,(x-p-1)*3,M),W=m.fromArray(q,p*3,W),io.addAttribute(_,M,void 0,w),io.addAttribute(_,W,B),Qh(G,L,V,B,w,t),T=B/3,P=T-1,A=(w-2)/3,F=A+1,N[k++]=F,N[k++]=P,N[k++]=A,N[k++]=A,N[k++]=P,N[k++]=T,B+=3,w-=3}if(c.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:_}),t.st){let q=new Float32Array(I/3*2),pe,ye,he=0;if(b){u/=3,h/=3;let xe=Math.PI/(x+1);ye=1/(u-x+1),pe=1/(h-x+1);let Te,Be=x/2;for(p=Be+1;p<x+1;p++)Te=Z.PI_OVER_TWO+xe*p,q[he++]=pe*(1+Math.cos(Te)),q[he++]=.5*(1+Math.sin(Te));for(p=1;p<h-x+1;p++)q[he++]=p*pe,q[he++]=0;for(p=x;p>Be;p--)Te=Z.PI_OVER_TWO-p*xe,q[he++]=1-pe*(1+Math.cos(Te)),q[he++]=.5*(1+Math.sin(Te));for(p=Be;p>0;p--)Te=Z.PI_OVER_TWO-xe*p,q[he++]=1-ye*(1+Math.cos(Te)),q[he++]=.5*(1+Math.sin(Te));for(p=u-x;p>0;p--)q[he++]=p*ye,q[he++]=1;for(p=1;p<Be+1;p++)Te=Z.PI_OVER_TWO+xe*p,q[he++]=ye*(1+Math.cos(Te)),q[he++]=.5*(1+Math.sin(Te))}else{for(u/=3,h/=3,ye=1/(u-1),pe=1/(h-1),p=0;p<h;p++)q[he++]=p*pe,q[he++]=0;for(p=u;p>0;p--)q[he++]=(p-1)*ye,q[he++]=1}c.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:q})}return t.normal&&(c.normal=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:G.normals})),t.tangent&&(c.tangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:G.tangents})),t.bitangent&&(c.bitangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:G.bitangents})),{attributes:c,indices:N}}function rqe(e,t){if(!t.normal&&!t.tangent&&!t.bitangent&&!t.st)return e;let n=e.position.values,i,o;(t.normal||t.bitangent)&&(i=e.normal.values,o=e.bitangent.values);let r=e.position.values.length/18,s=r*3,a=r*2,c=s*2,d;if(t.normal||t.bitangent||t.tangent){let u=t.normal?new Float32Array(s*6):void 0,h=t.tangent?new Float32Array(s*6):void 0,p=t.bitangent?new Float32Array(s*6):void 0,g=Ehe,f=The,b=u5,x=m5,I=oqe,_=She,E=c;for(d=0;d<s;d+=3){let S=E+c;g=m.fromArray(n,d,g),f=m.fromArray(n,d+s,f),b=m.fromArray(n,(d+3)%s,b),f=m.subtract(f,g,f),b=m.subtract(b,g,b),x=m.normalize(m.cross(f,b,x),x),t.normal&&(io.addAttribute(u,x,S),io.addAttribute(u,x,S+3),io.addAttribute(u,x,E),io.addAttribute(u,x,E+3)),(t.tangent||t.bitangent)&&(_=m.fromArray(i,d,_),t.bitangent&&(io.addAttribute(p,_,S),io.addAttribute(p,_,S+3),io.addAttribute(p,_,E),io.addAttribute(p,_,E+3)),t.tangent&&(I=m.normalize(m.cross(_,x,I),I),io.addAttribute(h,I,S),io.addAttribute(h,I,S+3),io.addAttribute(h,I,E),io.addAttribute(h,I,E+3))),E+=6}if(t.normal){for(u.set(i),d=0;d<s;d+=3)u[d+s]=-i[d],u[d+s+1]=-i[d+1],u[d+s+2]=-i[d+2];e.normal.values=u}else e.normal=void 0;if(t.bitangent?(p.set(o),p.set(o,s),e.bitangent.values=p):e.bitangent=void 0,t.tangent){let S=e.tangent.values;h.set(S),h.set(S,s),e.tangent.values=h}}if(t.st){let u=e.st.values,h=new Float32Array(a*6);h.set(u),h.set(u,a);let p=a*2;for(let g=0;g<2;g++){for(h[p++]=u[0],h[p++]=u[1],d=2;d<a;d+=2){let f=u[d],b=u[d+1];h[p++]=f,h[p++]=b,h[p++]=f,h[p++]=b}h[p++]=u[0],h[p++]=u[1]}e.st.values=h}return e}function kJ(e,t,n){n[t++]=e[0],n[t++]=e[1],n[t++]=e[2];for(let i=3;i<e.length;i+=3){let o=e[i],r=e[i+1],s=e[i+2];n[t++]=o,n[t++]=r,n[t++]=s,n[t++]=o,n[t++]=r,n[t++]=s}return n[t++]=e[0],n[t++]=e[1],n[t++]=e[2],n}function sqe(e,t){let n=new we({position:t.position,normal:t.normal||t.bitangent||e.shadowVolume,tangent:t.tangent,bitangent:t.normal||t.bitangent,st:t.st}),i=e.ellipsoid,o=io.computePositions(e),r=Rhe(o,n,i),s=e.height,a=e.extrudedHeight,c=r.attributes,d=r.indices,u=c.position.values,h=u.length,p=new Float64Array(h*6),g=new Float64Array(h);g.set(u);let f=new Float64Array(h*4);u=_i.scaleToGeodeticHeight(u,s,i),f=kJ(u,0,f),g=_i.scaleToGeodeticHeight(g,a,i),f=kJ(g,h*2,f),p.set(u),p.set(g,h),p.set(f,h*2),c.position.values=p,c=rqe(c,t);let b,x=h/3;if(e.shadowVolume){let F=c.normal.values;h=F.length;let P=new Float32Array(h*6);for(b=0;b<h;b++)F[b]=-F[b];P.set(F,h),P=kJ(F,h*4,P),c.extrudeDirection=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:P}),t.normal||(c.normal=void 0)}if(l(e.offsetAttribute)){let F=new Uint8Array(x*6);if(e.offsetAttribute===pn.TOP)F=F.fill(1,0,x).fill(1,x*2,x*4);else{let P=e.offsetAttribute===pn.NONE?0:1;F=F.fill(P)}c.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:F})}let I=d.length,_=x+x,E=Me.createTypedArray(p.length/3,I*2+_*3);E.set(d);let S=I;for(b=0;b<I;b+=3){let F=d[b],P=d[b+1],A=d[b+2];E[S++]=A+x,E[S++]=P+x,E[S++]=F+x}let R,G,B,w;for(b=0;b<_;b+=2)R=b+_,G=R+_,B=R+1,w=G+1,E[S++]=R,E[S++]=G,E[S++]=B,E[S++]=B,E[S++]=G,E[S++]=w;return{attributes:c,indices:E}}var Ihe=new m,nW=new m,xm=new ge;function _he(e,t,n,i,o,r){let s=m.subtract(t,e,Ihe);m.normalize(s,s);let a=n.geodeticSurfaceNormal(e,nW),c=m.cross(s,a,Ihe);m.multiplyByScalar(c,i,c);let d=o.latitude,u=o.longitude,h=r.latitude,p=r.longitude;m.add(e,c,nW),n.cartesianToCartographic(nW,xm);let g=xm.latitude,f=xm.longitude;d=Math.min(d,g),u=Math.min(u,f),h=Math.max(h,g),p=Math.max(p,f),m.subtract(e,c,nW),n.cartesianToCartographic(nW,xm),g=xm.latitude,f=xm.longitude,d=Math.min(d,g),u=Math.min(u,f),h=Math.max(h,g),p=Math.max(p,f),o.latitude=d,o.longitude=u,r.latitude=h,r.longitude=p}var Cm=new m,iW=new m,fd=new ge,pd=new ge;function Vhe(e,t,n,i,o){e=Lhe(e,t);let r=Xo(e,m.equalsEpsilon),s=r.length;if(s<2||n<=0)return new le;let a=n*.5;fd.latitude=Number.POSITIVE_INFINITY,fd.longitude=Number.POSITIVE_INFINITY,pd.latitude=Number.NEGATIVE_INFINITY,pd.longitude=Number.NEGATIVE_INFINITY;let c,d;if(i===Hi.ROUNDED){let p=r[0];m.subtract(p,r[1],Cm),m.normalize(Cm,Cm),m.multiplyByScalar(Cm,a,Cm),m.add(p,Cm,iW),t.cartesianToCartographic(iW,xm),c=xm.latitude,d=xm.longitude,fd.latitude=Math.min(fd.latitude,c),fd.longitude=Math.min(fd.longitude,d),pd.latitude=Math.max(pd.latitude,c),pd.longitude=Math.max(pd.longitude,d)}for(let p=0;p<s-1;++p)_he(r[p],r[p+1],t,a,fd,pd);let u=r[s-1];m.subtract(u,r[s-2],Cm),m.normalize(Cm,Cm),m.multiplyByScalar(Cm,a,Cm),m.add(u,Cm,iW),_he(u,iW,t,a,fd,pd),i===Hi.ROUNDED&&(t.cartesianToCartographic(iW,xm),c=xm.latitude,d=xm.longitude,fd.latitude=Math.min(fd.latitude,c),fd.longitude=Math.min(fd.longitude,d),pd.latitude=Math.max(pd.latitude,c),pd.longitude=Math.max(pd.longitude,d));let h=l(o)?o:new le;return h.north=pd.latitude,h.south=fd.latitude,h.east=pd.longitude,h.west=fd.longitude,h}function Ag(e){e=e??Y.EMPTY_OBJECT;let t=e.positions,n=e.width,i=e.height??0,o=e.extrudedHeight??i;this._positions=t,this._ellipsoid=ie.clone(e.ellipsoid??ie.default),this._vertexFormat=we.clone(e.vertexFormat??we.DEFAULT),this._width=n,this._height=Math.max(i,o),this._extrudedHeight=Math.min(i,o),this._cornerType=e.cornerType??Hi.ROUNDED,this._granularity=e.granularity??Z.RADIANS_PER_DEGREE,this._shadowVolume=e.shadowVolume??!1,this._workerName="createCorridorGeometry",this._offsetAttribute=e.offsetAttribute,this._rectangle=void 0,this.packedLength=1+t.length*m.packedLength+ie.packedLength+we.packedLength+7}Ag.pack=function(e,t,n){n=n??0;let i=e._positions,o=i.length;t[n++]=o;for(let r=0;r<o;++r,n+=m.packedLength)m.pack(i[r],t,n);return ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,we.pack(e._vertexFormat,t,n),n+=we.packedLength,t[n++]=e._width,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._cornerType,t[n++]=e._granularity,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var Ghe=ie.clone(ie.UNIT_SPHERE),Zhe=new we,pg={positions:void 0,ellipsoid:Ghe,vertexFormat:Zhe,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0,shadowVolume:void 0,offsetAttribute:void 0};Ag.unpack=function(e,t,n){t=t??0;let i=e[t++],o=new Array(i);for(let f=0;f<i;++f,t+=m.packedLength)o[f]=m.unpack(e,t);let r=ie.unpack(e,t,Ghe);t+=ie.packedLength;let s=we.unpack(e,t,Zhe);t+=we.packedLength;let a=e[t++],c=e[t++],d=e[t++],u=e[t++],h=e[t++],p=e[t++]===1,g=e[t];return l(n)?(n._positions=o,n._ellipsoid=ie.clone(r,n._ellipsoid),n._vertexFormat=we.clone(s,n._vertexFormat),n._width=a,n._height=c,n._extrudedHeight=d,n._cornerType=u,n._granularity=h,n._shadowVolume=p,n._offsetAttribute=g===-1?void 0:g,n):(pg.positions=o,pg.width=a,pg.height=c,pg.extrudedHeight=d,pg.cornerType=u,pg.granularity=h,pg.shadowVolume=p,pg.offsetAttribute=g===-1?void 0:g,new Ag(pg))};Ag.computeRectangle=function(e,t){e=e??Y.EMPTY_OBJECT;let n=e.positions,i=e.width,o=e.ellipsoid??ie.default,r=e.cornerType??Hi.ROUNDED;return Vhe(n,o,i,r,t)};Ag.createGeometry=function(e){let t=e._positions,n=e._width,i=e._ellipsoid;t=Lhe(t,i);let o=Xo(t,m.equalsEpsilon);if(o.length<2||n<=0)return;let r=e._height,s=e._extrudedHeight,a=!Z.equalsEpsilon(r,s,0,Z.EPSILON2),c=e._vertexFormat,d={ellipsoid:i,positions:o,width:n,cornerType:e._cornerType,granularity:e._granularity,saveAttributes:!0},u;if(a)d.height=r,d.extrudedHeight=s,d.shadowVolume=e._shadowVolume,d.offsetAttribute=e._offsetAttribute,u=sqe(d,c);else{let g=io.computePositions(d);if(u=Rhe(g,c,i),u.attributes.position.values=_i.scaleToGeodeticHeight(u.attributes.position.values,r,i),l(e._offsetAttribute)){let f=e._offsetAttribute===pn.NONE?0:1,b=u.attributes.position.values.length,x=new Uint8Array(b/3).fill(f);u.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:x})}}let h=u.attributes,p=ue.fromVertices(h.position.values,void 0,3);return c.position||(u.attributes.position.values=void 0),new pt({attributes:h,indices:u.indices,primitiveType:We.TRIANGLES,boundingSphere:p,offsetAttribute:e._offsetAttribute})};Ag.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new Ag({positions:e._positions,width:e._width,cornerType:e._cornerType,ellipsoid:o,granularity:i,extrudedHeight:r,height:s,vertexFormat:we.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(Ag.prototype,{rectangle:{get:function(){return l(this._rectangle)||(this._rectangle=Vhe(this._positions,this._ellipsoid,this._width,this._cornerType)),this._rectangle}},textureCoordinateRotationPoints:{get:function(){return[0,0,0,1,1,0]}}});var Px=Ag;var Aei=y(C(),1);var Bhe=new m,whe=new m,aqe=new m;function cqe(e,t){for(let n=0;n<e.length;n++)e[n]=t.scaleToGeodeticSurface(e[n],e[n]);return e}function Xhe(e,t){let n=[],i=e.positions,o=e.corners,r=e.endPositions,s=new xn,a,c=0,d=0,u,h=0,p;for(u=0;u<i.length;u+=2)p=i[u].length-3,c+=p,h+=p/3*4,d+=i[u+1].length-3;for(c+=3,d+=3,u=0;u<o.length;u++){a=o[u];let W=o[u].leftPositions;l(W)?(p=W.length,c+=p,h+=p/3*2):(p=o[u].rightPositions.length,d+=p,h+=p/3*2)}let g=l(r),f;g&&(f=r[0].length-3,c+=f,d+=f,f/=3,h+=f*4);let b=c+d,x=new Float64Array(b),I=0,_=b-1,E,S,R,G,B,w,F=f/2,P=Me.createTypedArray(b/3,h+4),A=0;if(P[A++]=I/3,P[A++]=(_-2)/3,g){n.push(I/3),w=Bhe,B=whe;let W=r[0];for(u=0;u<F;u++)w=m.fromArray(W,(F-1-u)*3,w),B=m.fromArray(W,(F+u)*3,B),io.addAttribute(x,B,I),io.addAttribute(x,w,void 0,_),S=I/3,G=S+1,E=(_-2)/3,R=E-1,P[A++]=E,P[A++]=R,P[A++]=S,P[A++]=G,I+=3,_-=3}let T=0,L=i[T++],V=i[T++];for(x.set(L,I),x.set(V,_-V.length+1),p=V.length-3,n.push(I/3,(_-2)/3),u=0;u<p;u+=3)S=I/3,G=S+1,E=(_-2)/3,R=E-1,P[A++]=E,P[A++]=R,P[A++]=S,P[A++]=G,I+=3,_-=3;for(u=0;u<o.length;u++){let W;a=o[u];let M=a.leftPositions,Q=a.rightPositions,N,k=aqe;if(l(M)){for(_-=3,N=R,n.push(G),W=0;W<M.length/3;W++)k=m.fromArray(M,W*3,k),P[A++]=N-W-1,P[A++]=N-W,io.addAttribute(x,k,void 0,_),_-=3;n.push(N-Math.floor(M.length/6)),t===Hi.BEVELED&&n.push((_-2)/3+1),I+=3}else{for(I+=3,N=G,n.push(R),W=0;W<Q.length/3;W++)k=m.fromArray(Q,W*3,k),P[A++]=N+W,P[A++]=N+W+1,io.addAttribute(x,k,I),I+=3;n.push(N+Math.floor(Q.length/6)),t===Hi.BEVELED&&n.push(I/3-1),_-=3}for(L=i[T++],V=i[T++],L.splice(0,3),V.splice(V.length-3,3),x.set(L,I),x.set(V,_-V.length+1),p=V.length-3,W=0;W<V.length;W+=3)G=I/3,S=G-1,R=(_-2)/3,E=R+1,P[A++]=E,P[A++]=R,P[A++]=S,P[A++]=G,I+=3,_-=3;I-=3,_+=3,n.push(I/3,(_-2)/3)}if(g){I+=3,_-=3,w=Bhe,B=whe;let W=r[1];for(u=0;u<F;u++)w=m.fromArray(W,(f-u-1)*3,w),B=m.fromArray(W,u*3,B),io.addAttribute(x,w,void 0,_),io.addAttribute(x,B,I),G=I/3,S=G-1,R=(_-2)/3,E=R+1,P[A++]=E,P[A++]=R,P[A++]=S,P[A++]=G,I+=3,_-=3;n.push(I/3)}else n.push(I/3,(_-2)/3);return P[A++]=I/3,P[A++]=(_-2)/3,s.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:x}),{attributes:s,indices:P,wallIndices:n}}function lqe(e){let t=e.ellipsoid,n=io.computePositions(e),i=Xhe(n,e.cornerType),o=i.wallIndices,r=e.height,s=e.extrudedHeight,a=i.attributes,c=i.indices,d=a.position.values,u=d.length,h=new Float64Array(u);h.set(d);let p=new Float64Array(u*2);if(d=_i.scaleToGeodeticHeight(d,r,t),h=_i.scaleToGeodeticHeight(h,s,t),p.set(d),p.set(h,u),a.position.values=p,u/=3,l(e.offsetAttribute)){let E=new Uint8Array(u*2);if(e.offsetAttribute===pn.TOP)E=E.fill(1,0,u);else{let S=e.offsetAttribute===pn.NONE?0:1;E=E.fill(S)}a.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:E})}let g,f=c.length,b=Me.createTypedArray(p.length/3,(f+o.length)*2);b.set(c);let x=f;for(g=0;g<f;g+=2){let E=c[g],S=c[g+1];b[x++]=E+u,b[x++]=S+u}let I,_;for(g=0;g<o.length;g++)I=o[g],_=I+u,b[x++]=I,b[x++]=_;return{attributes:a,indices:b}}function oW(e){e=e??Y.EMPTY_OBJECT;let t=e.positions,n=e.width,i=e.height??0,o=e.extrudedHeight??i;this._positions=t,this._ellipsoid=ie.clone(e.ellipsoid??ie.default),this._width=n,this._height=Math.max(i,o),this._extrudedHeight=Math.min(i,o),this._cornerType=e.cornerType??Hi.ROUNDED,this._granularity=e.granularity??Z.RADIANS_PER_DEGREE,this._offsetAttribute=e.offsetAttribute,this._workerName="createCorridorOutlineGeometry",this.packedLength=1+t.length*m.packedLength+ie.packedLength+6}oW.pack=function(e,t,n){n=n??0;let i=e._positions,o=i.length;t[n++]=o;for(let r=0;r<o;++r,n+=m.packedLength)m.pack(i[r],t,n);return ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,t[n++]=e._width,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._cornerType,t[n++]=e._granularity,t[n]=e._offsetAttribute??-1,t};var Whe=ie.clone(ie.UNIT_SPHERE),L0={positions:void 0,ellipsoid:Whe,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0,offsetAttribute:void 0};oW.unpack=function(e,t,n){t=t??0;let i=e[t++],o=new Array(i);for(let p=0;p<i;++p,t+=m.packedLength)o[p]=m.unpack(e,t);let r=ie.unpack(e,t,Whe);t+=ie.packedLength;let s=e[t++],a=e[t++],c=e[t++],d=e[t++],u=e[t++],h=e[t];return l(n)?(n._positions=o,n._ellipsoid=ie.clone(r,n._ellipsoid),n._width=s,n._height=a,n._extrudedHeight=c,n._cornerType=d,n._granularity=u,n._offsetAttribute=h===-1?void 0:h,n):(L0.positions=o,L0.width=s,L0.height=a,L0.extrudedHeight=c,L0.cornerType=d,L0.granularity=u,L0.offsetAttribute=h===-1?void 0:h,new oW(L0))};oW.createGeometry=function(e){let t=e._positions,n=e._width,i=e._ellipsoid;t=cqe(t,i);let o=Xo(t,m.equalsEpsilon);if(o.length<2||n<=0)return;let r=e._height,s=e._extrudedHeight,a=!Z.equalsEpsilon(r,s,0,Z.EPSILON2),c={ellipsoid:i,positions:o,width:n,cornerType:e._cornerType,granularity:e._granularity,saveAttributes:!1},d;if(a)c.height=r,c.extrudedHeight=s,c.offsetAttribute=e._offsetAttribute,d=lqe(c);else{let p=io.computePositions(c);if(d=Xhe(p,c.cornerType),d.attributes.position.values=_i.scaleToGeodeticHeight(d.attributes.position.values,r,i),l(e._offsetAttribute)){let g=d.attributes.position.values.length,f=e._offsetAttribute===pn.NONE?0:1,b=new Uint8Array(g/3).fill(f);d.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:b})}}let u=d.attributes,h=ue.fromVertices(u.position.values,void 0,3);return new pt({attributes:u,indices:d.indices,primitiveType:We.LINES,boundingSphere:h,offsetAttribute:e._offsetAttribute})};var rW=oW;var Rei=y(C(),1);var dqe=new di(0);function Bl(e){Ci.call(this,e),this._zIndex=0,this._terrainOffsetProperty=void 0}l(Object.create)&&(Bl.prototype=Object.create(Ci.prototype),Bl.prototype.constructor=Bl);Object.defineProperties(Bl.prototype,{zIndex:{get:function(){return this._zIndex}},terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});Bl.prototype._isOnTerrain=function(e,t){return this._fillEnabled&&!l(t.height)&&!l(t.extrudedHeight)&&cl.isSupported(this._scene)};Bl.prototype._getIsClosed=function(e){let t=e.height,n=e.extrudedHeight;return t===0||l(n)&&n!==t};Bl.prototype._computeCenter=Ae.throwInstantiationError;Bl.prototype._onEntityPropertyChanged=function(e,t,n,i){if(Ci.prototype._onEntityPropertyChanged.call(this,e,t,n,i),this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o))return;l(o.zIndex)&&(l(o.height)||l(o.extrudedHeight))&&xt(xt.geometryZIndex),this._zIndex=o.zIndex??dqe,l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0);let r=o.heightReference,s=o.extrudedHeightReference;if(l(r)||l(s)){let a=new hh(this._computeCenter.bind(this),!this._dynamic);this._terrainOffsetProperty=new IC(this._scene,a,r,s)}};Bl.prototype.destroy=function(){l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0),Ci.prototype.destroy.call(this)};Bl.getGeometryHeight=function(e,t){if(!l(e)){t!==et.NONE&&xt(xt.geometryHeightReference);return}return Du(t)?0:e};Bl.getGeometryExtrudedHeight=function(e,t){if(!l(e)){t!==et.NONE&&xt(xt.geometryExtrudedHeightReference);return}return Du(t)?Bl.CLAMP_TO_GROUND:e};Bl.CLAMP_TO_GROUND="clamp";Bl.computeGeometryOffsetAttribute=function(e,t,n,i){(!l(e)||!l(t))&&(t=et.NONE),(!l(n)||!l(i))&&(i=et.NONE);let o=0;if(t!==et.NONE&&o++,i===et.RELATIVE_TO_GROUND&&o++,o===2)return pn.ALL;if(o===1)return pn.TOP};var ii=Bl;var Fhe=new U,Phe=m.ZERO,Mhe=new m,vhe=new le;function uqe(e){this.id=e,this.vertexFormat=void 0,this.positions=void 0,this.width=void 0,this.cornerType=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.offsetAttribute=void 0}function Uh(e,t){ii.call(this,{entity:e,scene:t,geometryOptions:new uqe(e),geometryPropertyName:"corridor",observedPropertyNames:["availability","corridor"]}),this._onEntityPropertyChanged(e,"corridor",e.corridor,void 0)}l(Object.create)&&(Uh.prototype=Object.create(ii.prototype),Uh.prototype.constructor=Uh);Uh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:jn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof qt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,Fhe)),l(o)||(o=U.WHITE),i.color=tn.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,Phe,Mhe))),new wt({id:t,geometry:new Px(this._options),attributes:i})};Uh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=z.getValueOrDefault(this._outlineColorProperty,e,U.BLACK,Fhe),o={show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:tn.fromColor(i),distanceDisplayCondition:jn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0};return l(this._options.offsetAttribute)&&(o.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,Phe,Mhe))),new wt({id:t,geometry:new rW(this._options),attributes:o})};Uh.prototype._computeCenter=function(e,t){let n=z.getValueOrUndefined(this._entity.corridor.positions,e);if(!(!l(n)||n.length===0))return m.clone(n[Math.floor(n.length/2)],t)};Uh.prototype._isHidden=function(e,t){return!l(t.positions)||!l(t.width)||Ci.prototype._isHidden.call(this,e,t)};Uh.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!z.isConstant(t.height)||!z.isConstant(t.extrudedHeight)||!z.isConstant(t.granularity)||!z.isConstant(t.width)||!z.isConstant(t.outlineWidth)||!z.isConstant(t.cornerType)||!z.isConstant(t.zIndex)||this._onTerrain&&!z.isConstant(this._materialProperty)&&!(this._materialProperty instanceof qt)};Uh.prototype._setStaticOptions=function(e,t){let n=z.getValueOrUndefined(t.height,ze.MINIMUM_VALUE),i=z.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,et.NONE),o=z.getValueOrUndefined(t.extrudedHeight,ze.MINIMUM_VALUE),r=z.getValueOrDefault(t.extrudedHeightReference,ze.MINIMUM_VALUE,et.NONE);l(o)&&!l(n)&&(n=0);let s=this._options;s.vertexFormat=this._materialProperty instanceof qt?yn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,s.positions=t.positions.getValue(ze.MINIMUM_VALUE,s.positions),s.width=t.width.getValue(ze.MINIMUM_VALUE),s.granularity=z.getValueOrUndefined(t.granularity,ze.MINIMUM_VALUE),s.cornerType=z.getValueOrUndefined(t.cornerType,ze.MINIMUM_VALUE),s.offsetAttribute=ii.computeGeometryOffsetAttribute(n,i,o,r),s.height=ii.getGeometryHeight(n,i),o=ii.getGeometryExtrudedHeight(o,r),o===ii.CLAMP_TO_GROUND&&(o=Si.getMinimumMaximumHeights(Px.computeRectangle(s,vhe)).minimumTerrainHeight),s.extrudedHeight=o};Uh.DynamicGeometryUpdater=MT;function MT(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(MT.prototype=Object.create(yi.prototype),MT.prototype.constructor=MT);MT.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.positions)||!l(i.width)||yi.prototype._isHidden.call(this,e,t,n)};MT.prototype._setOptions=function(e,t,n){let i=this._options,o=z.getValueOrUndefined(t.height,n),r=z.getValueOrDefault(t.heightReference,n,et.NONE),s=z.getValueOrUndefined(t.extrudedHeight,n),a=z.getValueOrDefault(t.extrudedHeightReference,n,et.NONE);l(s)&&!l(o)&&(o=0),i.positions=z.getValueOrUndefined(t.positions,n),i.width=z.getValueOrUndefined(t.width,n),i.granularity=z.getValueOrUndefined(t.granularity,n),i.cornerType=z.getValueOrUndefined(t.cornerType,n),i.offsetAttribute=ii.computeGeometryOffsetAttribute(o,r,s,a),i.height=ii.getGeometryHeight(o,r),s=ii.getGeometryExtrudedHeight(s,a),s===ii.CLAMP_TO_GROUND&&(s=Si.getMinimumMaximumHeights(Px.computeRectangle(i,vhe)).minimumTerrainHeight),i.extrudedHeight=s};var sW=Uh;var Tni=y(C(),1);var eti=y(C(),1);function h5(){Ae.throwInstantiationError()}Object.defineProperties(h5.prototype,{name:{get:Ae.throwInstantiationError},clock:{get:Ae.throwInstantiationError},entities:{get:Ae.throwInstantiationError},isLoading:{get:Ae.throwInstantiationError},changedEvent:{get:Ae.throwInstantiationError},errorEvent:{get:Ae.throwInstantiationError},loadingEvent:{get:Ae.throwInstantiationError},show:{get:Ae.throwInstantiationError},clustering:{get:Ae.throwInstantiationError}});h5.prototype.update=function(e){Ae.throwInstantiationError()};h5.setLoading=function(e,t){e._isLoading!==t&&(t?e._entityCollection.suspendEvents():e._entityCollection.resumeEvents(),e._isLoading=t,e._loading.raiseEvent(e,t))};var cs=h5;var yni=y(C(),1);var ati=y(C(),1);function op(e,t){this._ellipsoid=e,this._cameraPosition=new m,this._cameraPositionInScaledSpace=new m,this._distanceToLimbInScaledSpaceSquared=0,l(t)&&(this.cameraPosition=t)}Object.defineProperties(op.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},cameraPosition:{get:function(){return this._cameraPosition},set:function(e){let n=this._ellipsoid.transformPositionToScaledSpace(e,this._cameraPositionInScaledSpace),i=m.magnitudeSquared(n)-1;m.clone(e,this._cameraPosition),this._cameraPositionInScaledSpace=n,this._distanceToLimbInScaledSpaceSquared=i}}});var Nhe=new m;op.prototype.isPointVisible=function(e){let n=this._ellipsoid.transformPositionToScaledSpace(e,Nhe);return OJ(n,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};op.prototype.isScaledSpacePointVisible=function(e){return OJ(e,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};var mqe=new m;op.prototype.isScaledSpacePointVisiblePossiblyUnderEllipsoid=function(e,t){let n=this._ellipsoid,i,o;return l(t)&&t<0&&n.minimumRadius>-t?(o=mqe,o.x=this._cameraPosition.x/(n.radii.x+t),o.y=this._cameraPosition.y/(n.radii.y+t),o.z=this._cameraPosition.z/(n.radii.z+t),i=o.x*o.x+o.y*o.y+o.z*o.z-1):(o=this._cameraPositionInScaledSpace,i=this._distanceToLimbInScaledSpaceSquared),OJ(e,o,i)};op.prototype.computeHorizonCullingPoint=function(e,t,n){return Uhe(this._ellipsoid,e,t,n)};var Dhe=ie.clone(ie.UNIT_SPHERE);op.prototype.computeHorizonCullingPointPossiblyUnderEllipsoid=function(e,t,n,i){let o=Qhe(this._ellipsoid,n,Dhe);return Uhe(o,e,t,i)};op.prototype.computeHorizonCullingPointFromVertices=function(e,t,n,i,o){return khe(this._ellipsoid,e,t,n,i,o)};op.prototype.computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid=function(e,t,n,i,o,r){let s=Qhe(this._ellipsoid,o,Dhe);return khe(s,e,t,n,i,r)};var hqe=[];op.prototype.computeHorizonCullingPointFromRectangle=function(e,t,n){let i=le.subsample(e,t,0,hqe),o=ue.fromPoints(i);if(!(m.magnitude(o.center)<.1*t.minimumRadius))return this.computeHorizonCullingPoint(o.center,i,n)};var fqe=new m;function Qhe(e,t,n){if(l(t)&&t<0&&e.minimumRadius>-t){let i=m.fromElements(e.radii.x+t,e.radii.y+t,e.radii.z+t,fqe);e=ie.fromCartesian3(i,n)}return e}function Uhe(e,t,n,i){l(i)||(i=new m);let o=Hhe(e,t),r=0;for(let s=0,a=n.length;s<a;++s){let c=n[s],d=Yhe(e,c,o);if(d<0)return;r=Math.max(r,d)}return Ohe(o,r,i)}var f5=new m;function khe(e,t,n,i,o,r){l(r)||(r=new m),i=i??3,o=o??m.ZERO;let s=Hhe(e,t),a=0;for(let c=0,d=n.length;c<d;c+=i){f5.x=n[c]+o.x,f5.y=n[c+1]+o.y,f5.z=n[c+2]+o.z;let u=Yhe(e,f5,s);if(u<0)return;a=Math.max(a,u)}return Ohe(s,a,r)}function OJ(e,t,n){let i=t,o=n,r=m.subtract(e,i,Nhe),s=-m.dot(r,i);return!(o<0?s>0:s>o&&s*s/m.magnitudeSquared(r)>o)}var pqe=new m,Aqe=new m;function Yhe(e,t,n){let i=e.transformPositionToScaledSpace(t,pqe),o=m.magnitudeSquared(i),r=Math.sqrt(o),s=m.divideByScalar(i,r,Aqe);o=Math.max(1,o),r=Math.max(1,r);let a=m.dot(s,n),c=m.magnitude(m.cross(s,n,s)),d=1/r,u=Math.sqrt(o-1)*d;return 1/(a*d-c*u)}function Ohe(e,t,n){if(!(t<=0||t===1/0||t!==t))return m.multiplyByScalar(e,t,n)}var YJ=new m;function Hhe(e,t){return m.equals(t,m.ZERO)?t:(e.transformPositionToScaledSpace(t,YJ),m.normalize(YJ,YJ))}var gg=op;var Iti=y(C(),1);function Ur(e,t){e=e??Y.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.scaleByDistance,o=e.distanceDisplayCondition;l(n)&&(n=zt.clone(n)),l(i)&&(i=zt.clone(i)),l(o)&&(o=Qt.clone(o)),this._show=e.show??!0,this._position=m.clone(e.position??m.ZERO),this._actualPosition=m.clone(this._position),this._color=U.clone(e.color??U.WHITE),this._outlineColor=U.clone(e.outlineColor??U.TRANSPARENT),this._outlineWidth=e.outlineWidth??0,this._pixelSize=e.pixelSize??10,this._scaleByDistance=i,this._translucencyByDistance=n,this._distanceDisplayCondition=o,this._disableDepthTestDistance=e.disableDepthTestDistance??0,this._id=e.id,this._collection=e.collection??t,this._clusterShow=!0,this._pickId=void 0,this._pointPrimitiveCollection=t,this._dirty=!1,this._index=-1,this._splitDirection=e.splitDirection??Ir.NONE}var zhe=Ur.SHOW_INDEX=0,jhe=Ur.POSITION_INDEX=1,gqe=Ur.COLOR_INDEX=2,bqe=Ur.OUTLINE_COLOR_INDEX=3,yqe=Ur.OUTLINE_WIDTH_INDEX=4,Cqe=Ur.PIXEL_SIZE_INDEX=5,xqe=Ur.SCALE_BY_DISTANCE_INDEX=6,Iqe=Ur.TRANSLUCENCY_BY_DISTANCE_INDEX=7,_qe=Ur.DISTANCE_DISPLAY_CONDITION_INDEX=8,Eqe=Ur.DISABLE_DEPTH_DISTANCE_INDEX=9,Tqe=Ur.SPLIT_DIRECTION_INDEX=10;Ur.NUMBER_OF_PROPERTIES=11;function iu(e,t){let n=e._pointPrimitiveCollection;l(n)&&(n._updatePointPrimitive(e,t),e._dirty=!0)}Object.defineProperties(Ur.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,iu(this,zhe))}},position:{get:function(){return this._position},set:function(e){let t=this._position;m.equals(t,e)||(m.clone(e,t),m.clone(e,this._actualPosition),iu(this,jhe))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;zt.equals(t,e)||(this._scaleByDistance=zt.clone(e,t),iu(this,xqe))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;zt.equals(t,e)||(this._translucencyByDistance=zt.clone(e,t),iu(this,Iqe))}},pixelSize:{get:function(){return this._pixelSize},set:function(e){this._pixelSize!==e&&(this._pixelSize=e,iu(this,Cqe))}},color:{get:function(){return this._color},set:function(e){let t=this._color;U.equals(t,e)||(U.clone(e,t),iu(this,gqe))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;U.equals(t,e)||(U.clone(e,t),iu(this,bqe))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,iu(this,yqe))}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Qt.equals(this._distanceDisplayCondition,e)||(this._distanceDisplayCondition=Qt.clone(e,this._distanceDisplayCondition),iu(this,_qe))}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance!==e&&(this._disableDepthTestDistance=e,iu(this,Eqe))}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickId:{get:function(){return this._pickId}},clusterShow:{get:function(){return this._clusterShow},set:function(e){this._clusterShow!==e&&(this._clusterShow=e,iu(this,zhe))}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,iu(this,Tqe))}}});Ur.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this,collection:this._collection,id:this._id})),this._pickId};Ur.prototype._getActualPosition=function(){return this._actualPosition};Ur.prototype._setActualPosition=function(e){m.clone(e,this._actualPosition),iu(this,jhe)};var Khe=new ce;Ur._computeActualPosition=function(e,t,n){return t.mode===re.SCENE3D?e:(X.multiplyByPoint(n,e,Khe),to.computeActualEllipsoidPosition(t,Khe))};var Jhe=new ce;Ur._computeScreenSpacePosition=function(e,t,n,i){let o=X.multiplyByVector(e,ce.fromElements(t.x,t.y,t.z,1,Jhe),Jhe);return to.worldToWindowCoordinates(n,o,i)};Ur.prototype.computeScreenSpacePosition=function(e,t){let n=this._pointPrimitiveCollection;l(t)||(t=new D);let i=n.modelMatrix,o=Ur._computeScreenSpacePosition(i,this._actualPosition,e,t);if(l(o))return o.y=e.canvas.clientHeight-o.y,o};Ur.getScreenSpaceBoundingBox=function(e,t,n){let i=e.pixelSize,o=i*.5,r=t.x-o,s=t.y-o,a=i,c=i;return l(n)||(n=new Ke),n.x=r,n.y=s,n.width=a,n.height=c,n};Ur.prototype.equals=function(e){return this===e||l(e)&&this._id===e._id&&m.equals(this._position,e._position)&&U.equals(this._color,e._color)&&this._pixelSize===e._pixelSize&&this._outlineWidth===e._outlineWidth&&this._show===e._show&&U.equals(this._outlineColor,e._outlineColor)&&zt.equals(this._scaleByDistance,e._scaleByDistance)&&zt.equals(this._translucencyByDistance,e._translucencyByDistance)&&Qt.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._splitDirection===e._splitDirection};Ur.prototype._destroy=function(){this._pickId=this._pickId&&this._pickId.destroy(),this._pointPrimitiveCollection=void 0};var $s=Ur;var $ti=y(C(),1);var Eti=y(C(),1),R0=`in vec4 v_color; +in vec4 v_outlineColor; +in float v_innerPercent; +in float v_pixelDistance; +in vec4 v_pickColor; +in float v_splitDirection; + +void main() +{ + if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; + + // The distance in UV space from this fragment to the center of the point, at most 0.5. + float distanceToCenter = length(gl_PointCoord - vec2(0.5)); + // The max distance stops one pixel shy of the edge to leave space for anti-aliasing. + float maxDistance = max(0.0, 0.5 - v_pixelDistance); + float wholeAlpha = 1.0 - smoothstep(maxDistance, 0.5, distanceToCenter); + float innerAlpha = 1.0 - smoothstep(maxDistance * v_innerPercent, 0.5 * v_innerPercent, distanceToCenter); + + vec4 color = mix(v_outlineColor, v_color, innerAlpha); + color.a *= wholeAlpha; + +// Fully transparent parts of the billboard are not pickable. +#if !defined(OPAQUE) && !defined(TRANSLUCENT) + if (color.a < 0.005) // matches 0/255 and 1/255 + { + discard; + } +#else +// The billboard is rendered twice. The opaque pass discards translucent fragments +// and the translucent pass discards opaque fragments. +#ifdef OPAQUE + if (color.a < 0.995) // matches < 254/255 + { + discard; + } +#else + if (color.a >= 0.995) // matches 254/255 and 255/255 + { + discard; + } +#endif +#endif + + out_FragColor = czm_gammaCorrect(color); + czm_writeLogDepth(); +} +`;var Sti=y(C(),1),aW=`uniform float u_maxTotalPointSize; + +in vec4 positionHighAndSize; +in vec4 positionLowAndOutline; +in vec4 compressedAttribute0; // color, outlineColor, pick color +in vec4 compressedAttribute1; // show, translucency by distance, some free space +in vec4 scaleByDistance; // near, nearScale, far, farScale +in vec4 distanceDisplayConditionAndDisableDepthAndSplitDirection; // near, far, disableDepthTestDistance, splitDirection + +out vec4 v_color; +out vec4 v_outlineColor; +out float v_innerPercent; +out float v_pixelDistance; +out vec4 v_pickColor; +out float v_splitDirection; + +const float SHIFT_LEFT8 = 256.0; +const float SHIFT_RIGHT8 = 1.0 / 256.0; + +void main() +{ + // Modifying this shader may also require modifications to PointPrimitive._computeScreenSpacePosition + + // unpack attributes + vec3 positionHigh = positionHighAndSize.xyz; + vec3 positionLow = positionLowAndOutline.xyz; + float outlineWidthBothSides = 2.0 * positionLowAndOutline.w; + float totalSize = positionHighAndSize.w + outlineWidthBothSides; + float outlinePercent = outlineWidthBothSides / totalSize; + // Scale in response to browser-zoom. + totalSize *= czm_pixelRatio; + + float temp = compressedAttribute1.x * SHIFT_RIGHT8; + float show = floor(temp); + +#ifdef EYE_DISTANCE_TRANSLUCENCY + vec4 translucencyByDistance; + translucencyByDistance.x = compressedAttribute1.z; + translucencyByDistance.z = compressedAttribute1.w; + + translucencyByDistance.y = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; + + temp = compressedAttribute1.y * SHIFT_RIGHT8; + translucencyByDistance.w = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; +#endif + + /////////////////////////////////////////////////////////////////////////// + + vec4 color; + vec4 outlineColor; + vec4 pickColor; + + // compressedAttribute0.z => pickColor.rgb + + temp = compressedAttribute0.z * SHIFT_RIGHT8; + pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor.r = floor(temp); + + // compressedAttribute0.x => color.rgb + + temp = compressedAttribute0.x * SHIFT_RIGHT8; + color.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + color.g = (temp - floor(temp)) * SHIFT_LEFT8; + color.r = floor(temp); + + // compressedAttribute0.y => outlineColor.rgb + + temp = compressedAttribute0.y * SHIFT_RIGHT8; + outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor.r = floor(temp); + + // compressedAttribute0.w => color.a, outlineColor.a, pickColor.a + + temp = compressedAttribute0.w * SHIFT_RIGHT8; + pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor = pickColor / 255.0; + + temp = floor(temp) * SHIFT_RIGHT8; + outlineColor.a = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor /= 255.0; + color.a = floor(temp); + color /= 255.0; + + /////////////////////////////////////////////////////////////////////////// + + vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + vec4 positionEC = czm_modelViewRelativeToEye * p; + + /////////////////////////////////////////////////////////////////////////// + +#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(DISTANCE_DISPLAY_CONDITION) || defined(DISABLE_DEPTH_DISTANCE) + float lengthSq; + if (czm_sceneMode == czm_sceneMode2D) + { + // 2D camera distance is a special case + // treat all billboards as flattened to the z=0.0 plane + lengthSq = czm_eyeHeight2D.y; + } + else + { + lengthSq = dot(positionEC.xyz, positionEC.xyz); + } +#endif + +#ifdef EYE_DISTANCE_SCALING + totalSize *= czm_nearFarScalar(scaleByDistance, lengthSq); +#endif + if (totalSize > 0.0) { + // Add padding for anti-aliasing on both sides. + totalSize += 3.0; + } + + // Clamp to max point size. + totalSize = min(totalSize, u_maxTotalPointSize); + // If size is too small, push vertex behind near plane for clipping. + // Note that context.minimumAliasedPointSize "will be at most 1.0". + if (totalSize < 1.0) + { + positionEC.xyz = vec3(0.0); + totalSize = 1.0; + } + + float translucency = 1.0; +#ifdef EYE_DISTANCE_TRANSLUCENCY + translucency = czm_nearFarScalar(translucencyByDistance, lengthSq); + // push vertex behind near plane for clipping + if (translucency < 0.004) + { + positionEC.xyz = vec3(0.0); + } +#endif + +#ifdef DISTANCE_DISPLAY_CONDITION + float nearSq = distanceDisplayConditionAndDisableDepthAndSplitDirection.x; + float farSq = distanceDisplayConditionAndDisableDepthAndSplitDirection.y; + if (lengthSq < nearSq || lengthSq > farSq) { + // push vertex behind camera to force it to be clipped + positionEC.xyz = vec3(0.0, 0.0, 1.0); + } +#endif + + gl_Position = czm_projection * positionEC; + czm_vertexLogDepth(); + +#ifdef DISABLE_DEPTH_DISTANCE + float disableDepthTestDistance = distanceDisplayConditionAndDisableDepthAndSplitDirection.z; + if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0) + { + disableDepthTestDistance = czm_minimumDisableDepthTestDistance; + } + + if (disableDepthTestDistance != 0.0) + { + // Don't try to "multiply both sides" by w. Greater/less-than comparisons won't work for negative values of w. + float zclip = gl_Position.z / gl_Position.w; + bool clipped = (zclip < -1.0 || zclip > 1.0); + if (!clipped && (disableDepthTestDistance < 0.0 || (lengthSq > 0.0 && lengthSq < disableDepthTestDistance))) + { + // Position z on the near plane. + gl_Position.z = -gl_Position.w; +#ifdef LOG_DEPTH + czm_vertexLogDepth(vec4(czm_currentFrustum.x)); +#endif + } + } +#endif + + v_color = color; + v_color.a *= translucency * show; + v_outlineColor = outlineColor; + v_outlineColor.a *= translucency * show; + + v_innerPercent = 1.0 - outlinePercent; + v_pixelDistance = 2.0 / totalSize; + gl_PointSize = totalSize * show; + gl_Position *= show; + + v_pickColor = pickColor; + v_splitDirection = distanceDisplayConditionAndDisableDepthAndSplitDirection.w; +} +`;var Sqe=$s.SHOW_INDEX,KJ=$s.POSITION_INDEX,qhe=$s.COLOR_INDEX,Lqe=$s.OUTLINE_COLOR_INDEX,Rqe=$s.OUTLINE_WIDTH_INDEX,Vqe=$s.PIXEL_SIZE_INDEX,$he=$s.SCALE_BY_DISTANCE_INDEX,efe=$s.TRANSLUCENCY_BY_DISTANCE_INDEX,tfe=$s.DISTANCE_DISPLAY_CONDITION_INDEX,Gqe=$s.DISABLE_DEPTH_DISTANCE_INDEX,Zqe=$s.SPLIT_DIRECTION_INDEX,JJ=$s.NUMBER_OF_PROPERTIES,kc={positionHighAndSize:0,positionLowAndOutline:1,compressedAttribute0:2,compressedAttribute1:3,scaleByDistance:4,distanceDisplayConditionAndDisableDepthAndSplitDirection:5};function Im(e){e=e??Y.EMPTY_OBJECT,this._sp=void 0,this._spTranslucent=void 0,this._rsOpaque=void 0,this._rsTranslucent=void 0,this._vaf=void 0,this._pointPrimitives=[],this._pointPrimitivesToUpdate=[],this._pointPrimitivesToUpdateIndex=0,this._pointPrimitivesRemoved=!1,this._createVertexArray=!1,this._shaderScaleByDistance=!1,this._compiledShaderScaleByDistance=!1,this._shaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistance=!1,this._shaderDistanceDisplayCondition=!1,this._compiledShaderDistanceDisplayCondition=!1,this._shaderDisableDepthDistance=!1,this._compiledShaderDisableDepthDistance=!1,this._propertiesChanged=new Uint32Array(JJ),this._maxPixelSize=1,this._baseVolume=new ue,this._baseVolumeWC=new ue,this._baseVolume2D=new ue,this._boundingVolume=new ue,this._boundingVolumeDirty=!1,this._colorCommands=[],this.show=e.show??!0,this.modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this._modelMatrix=X.clone(X.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.blendOption=e.blendOption??No.OPAQUE_AND_TRANSLUCENT,this._blendOption=void 0,this._mode=re.SCENE3D,this._maxTotalPointSize=1,this._buffersUsage=[Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW,Ne.STATIC_DRAW];let t=this;this._uniforms={u_maxTotalPointSize:function(){return t._maxTotalPointSize}}}Object.defineProperties(Im.prototype,{length:{get:function(){return jJ(this),this._pointPrimitives.length}}});function nfe(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}Im.prototype.add=function(e){let t=new $s(e,this);return t._index=this._pointPrimitives.length,this._pointPrimitives.push(t),this._createVertexArray=!0,t};Im.prototype.remove=function(e){return this.contains(e)?(this._pointPrimitives[e._index]=null,this._pointPrimitivesRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};Im.prototype.removeAll=function(){nfe(this._pointPrimitives),this._pointPrimitives=[],this._pointPrimitivesToUpdate=[],this._pointPrimitivesToUpdateIndex=0,this._pointPrimitivesRemoved=!1,this._createVertexArray=!0};function jJ(e){if(e._pointPrimitivesRemoved){e._pointPrimitivesRemoved=!1;let t=[],n=e._pointPrimitives,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];s&&(s._index=r++,t.push(s))}e._pointPrimitives=t}}Im.prototype._updatePointPrimitive=function(e,t){e._dirty||(this._pointPrimitivesToUpdate[this._pointPrimitivesToUpdateIndex++]=e),++this._propertiesChanged[t]};Im.prototype.contains=function(e){return l(e)&&e._pointPrimitiveCollection===this};Im.prototype.get=function(e){return jJ(this),this._pointPrimitives[e]};Im.prototype.computeNewBuffersUsage=function(){let e=this._buffersUsage,t=!1,n=this._propertiesChanged;for(let i=0;i<JJ;++i){let o=n[i]===0?Ne.STATIC_DRAW:Ne.STREAM_DRAW;t=t||e[i]!==o,e[i]=o}return t};function Bqe(e,t,n){return new zA(e,[{index:kc.positionHighAndSize,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[KJ]},{index:kc.positionLowAndShow,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[KJ]},{index:kc.compressedAttribute0,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[qhe]},{index:kc.compressedAttribute1,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[efe]},{index:kc.scaleByDistance,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[$he]},{index:kc.distanceDisplayConditionAndDisableDepthAndSplitDirection,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:n[tfe]}],t)}var HJ=new ni;function ife(e,t,n,i){let o=i._index,r=i._getActualPosition();e._mode===re.SCENE3D&&(ue.expand(e._baseVolume,r,e._baseVolume),e._boundingVolumeDirty=!0),ni.fromCartesian(r,HJ);let s=i.pixelSize,a=i.outlineWidth;e._maxPixelSize=Math.max(e._maxPixelSize,s+a);let c=n[kc.positionHighAndSize],d=HJ.high;c(o,d.x,d.y,d.z,s);let u=n[kc.positionLowAndOutline],h=HJ.low;u(o,h.x,h.y,h.z,a)}var p5=65536,cW=256;function ofe(e,t,n,i){let o=i._index,r=i.color,s=i.getPickId(t).color,a=i.outlineColor,c=U.floatToByte(r.red),d=U.floatToByte(r.green),u=U.floatToByte(r.blue),h=c*p5+d*cW+u;c=U.floatToByte(a.red),d=U.floatToByte(a.green),u=U.floatToByte(a.blue);let p=c*p5+d*cW+u;c=U.floatToByte(s.red),d=U.floatToByte(s.green),u=U.floatToByte(s.blue);let g=c*p5+d*cW+u,f=U.floatToByte(r.alpha)*p5+U.floatToByte(a.alpha)*cW+U.floatToByte(s.alpha),b=n[kc.compressedAttribute0];b(o,h,p,g,f)}function rfe(e,t,n,i){let o=i._index,r=0,s=1,a=1,c=1,d=i.translucencyByDistance;l(d)&&(r=d.near,s=d.nearValue,a=d.far,c=d.farValue,(s!==1||c!==1)&&(e._shaderTranslucencyByDistance=!0));let u=i.show&&i.clusterShow;i.color.alpha===0&&i.outlineColor.alpha===0&&(u=!1),s=Z.clamp(s,0,1),s=s===1?255:s*255|0;let h=(u?1:0)*cW+s;c=Z.clamp(c,0,1),c=c===1?255:c*255|0;let p=c,g=n[kc.compressedAttribute1];g(o,h,p,r,a)}function sfe(e,t,n,i){let o=i._index,r=n[kc.scaleByDistance],s=0,a=1,c=1,d=1,u=i.scaleByDistance;l(u)&&(s=u.near,a=u.nearValue,c=u.far,d=u.farValue,(a!==1||d!==1)&&(e._shaderScaleByDistance=!0)),r(o,s,a,c,d)}function afe(e,t,n,i){let o=i._index,r=n[kc.distanceDisplayConditionAndDisableDepthAndSplitDirection],s=0,a=Number.MAX_VALUE,c=i.distanceDisplayCondition;l(c)&&(s=c.near,a=c.far,s*=s,a*=a,e._shaderDistanceDisplayCondition=!0);let d=i.disableDepthTestDistance;d*=d,d>0&&(e._shaderDisableDepthDistance=!0,d===Number.POSITIVE_INFINITY&&(d=-1));let u=0,h=i.splitDirection;l(h)&&(u=h),r(o,s,a,d,u)}function wqe(e,t,n,i){ife(e,t,n,i),ofe(e,t,n,i),rfe(e,t,n,i),sfe(e,t,n,i),afe(e,t,n,i)}function zJ(e,t,n,i,o,r){let s;i.mode===re.SCENE3D?(s=e._baseVolume,e._boundingVolumeDirty=!0):s=e._baseVolume2D;let a=[];for(let c=0;c<n;++c){let d=t[c],u=d.position,h=$s._computeActualPosition(u,i,o);l(h)&&(d._setActualPosition(h),r?a.push(h):ue.expand(s,h,s))}r&&ue.fromPoints(a,s)}function Xqe(e,t){let n=t.mode,i=e._pointPrimitives,o=e._pointPrimitivesToUpdate,r=e._modelMatrix;e._createVertexArray||e._mode!==n||n!==re.SCENE3D&&!X.equals(r,e.modelMatrix)?(e._mode=n,X.clone(e.modelMatrix,r),e._createVertexArray=!0,(n===re.SCENE3D||n===re.SCENE2D||n===re.COLUMBUS_VIEW)&&zJ(e,i,i.length,t,r,!0)):n===re.MORPHING?zJ(e,i,i.length,t,r,!0):(n===re.SCENE2D||n===re.COLUMBUS_VIEW)&&zJ(e,o,e._pointPrimitivesToUpdateIndex,t,r,!1)}function Wqe(e,t,n){let o=t.camera.getPixelSize(n,t.context.drawingBufferWidth,t.context.drawingBufferHeight)*e._maxPixelSize;n.radius+=o}var Fqe=[];Im.prototype.update=function(e){if(jJ(this),!this.show)return;this._maxTotalPointSize=Kt.maximumAliasedPointSize,Xqe(this,e);let n=this._pointPrimitives.length,i=this._pointPrimitivesToUpdate,o=this._pointPrimitivesToUpdateIndex,r=this._propertiesChanged,s=this._createVertexArray,a,c=e.context,d=e.passes,u=d.pick;if(s||!u&&this.computeNewBuffersUsage()){this._createVertexArray=!1;for(let R=0;R<JJ;++R)r[R]=0;if(this._vaf=this._vaf&&this._vaf.destroy(),n>0){this._vaf=Bqe(c,n,this._buffersUsage),a=this._vaf.writers;for(let R=0;R<n;++R){let G=this._pointPrimitives[R];G._dirty=!1,wqe(this,c,a,G)}this._vaf.commit()}this._pointPrimitivesToUpdateIndex=0}else if(o>0){let R=Fqe;R.length=0,(r[KJ]||r[Rqe]||r[Vqe])&&R.push(ife),(r[qhe]||r[Lqe])&&R.push(ofe),(r[Sqe]||r[efe])&&R.push(rfe),r[$he]&&R.push(sfe),(r[tfe]||r[Gqe]||r[Zqe])&&R.push(afe);let G=R.length;if(a=this._vaf.writers,o/n>.1){for(let B=0;B<o;++B){let w=i[B];w._dirty=!1;for(let F=0;F<G;++F)R[F](this,c,a,w)}this._vaf.commit()}else{for(let B=0;B<o;++B){let w=i[B];w._dirty=!1;for(let F=0;F<G;++F)R[F](this,c,a,w);this._vaf.subCommit(w._index,1)}this._vaf.endSubCommits()}this._pointPrimitivesToUpdateIndex=0}if(o>n*1.5&&(i.length=n),!l(this._vaf)||!l(this._vaf.va))return;this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,ue.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));let h,p=X.IDENTITY;e.mode===re.SCENE3D?(p=this.modelMatrix,h=ue.clone(this._baseVolumeWC,this._boundingVolume)):h=ue.clone(this._baseVolume2D,this._boundingVolume),Wqe(this,e,h);let g=this._blendOption!==this.blendOption;this._blendOption=this.blendOption,g&&(this._blendOption===No.OPAQUE||this._blendOption===No.OPAQUE_AND_TRANSLUCENT?this._rsOpaque=Qe.fromCache({depthTest:{enabled:!0,func:ne.LEQUAL},depthMask:!0}):this._rsOpaque=void 0,this._blendOption===No.TRANSLUCENT||this._blendOption===No.OPAQUE_AND_TRANSLUCENT?this._rsTranslucent=Qe.fromCache({depthTest:{enabled:!0,func:ne.LEQUAL},depthMask:!1,blending:bn.ALPHA_BLEND}):this._rsTranslucent=void 0),this._shaderDisableDepthDistance=this._shaderDisableDepthDistance||e.minimumDisableDepthTestDistance!==0;let f,b;(g||this._shaderScaleByDistance&&!this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance&&!this._compiledShaderTranslucencyByDistance||this._shaderDistanceDisplayCondition&&!this._compiledShaderDistanceDisplayCondition||this._shaderDisableDepthDistance!==this._compiledShaderDisableDepthDistance)&&(f=new Oe({sources:[aW]}),this._shaderScaleByDistance&&f.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&f.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderDistanceDisplayCondition&&f.defines.push("DISTANCE_DISPLAY_CONDITION"),this._shaderDisableDepthDistance&&f.defines.push("DISABLE_DEPTH_DISTANCE"),this._blendOption===No.OPAQUE_AND_TRANSLUCENT&&(b=new Oe({defines:["OPAQUE"],sources:[R0]}),this._sp=ln.replaceCache({context:c,shaderProgram:this._sp,vertexShaderSource:f,fragmentShaderSource:b,attributeLocations:kc}),b=new Oe({defines:["TRANSLUCENT"],sources:[R0]}),this._spTranslucent=ln.replaceCache({context:c,shaderProgram:this._spTranslucent,vertexShaderSource:f,fragmentShaderSource:b,attributeLocations:kc})),this._blendOption===No.OPAQUE&&(b=new Oe({sources:[R0]}),this._sp=ln.replaceCache({context:c,shaderProgram:this._sp,vertexShaderSource:f,fragmentShaderSource:b,attributeLocations:kc})),this._blendOption===No.TRANSLUCENT&&(b=new Oe({sources:[R0]}),this._spTranslucent=ln.replaceCache({context:c,shaderProgram:this._spTranslucent,vertexShaderSource:f,fragmentShaderSource:b,attributeLocations:kc})),this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderDistanceDisplayCondition=this._shaderDistanceDisplayCondition,this._compiledShaderDisableDepthDistance=this._shaderDisableDepthDistance);let x,I,_,E,S=e.commandList;if(d.render||u){let R=this._colorCommands,G=this._blendOption===No.OPAQUE,B=this._blendOption===No.OPAQUE_AND_TRANSLUCENT;x=this._vaf.va,I=x.length,R.length=I;let w=B?I*2:I;for(E=0;E<w;++E){let F=G||B&&E%2===0;_=R[E],l(_)||(_=R[E]=new ot),_.primitiveType=We.POINTS,_.pass=F||!B?Ge.OPAQUE:Ge.TRANSLUCENT,_.owner=this;let P=B?Math.floor(E/2):E;_.boundingVolume=h,_.modelMatrix=p,_.shaderProgram=F?this._sp:this._spTranslucent,_.uniformMap=this._uniforms,_.vertexArray=x[P].va,_.renderState=F?this._rsOpaque:this._rsTranslucent,_.debugShowBoundingVolume=this.debugShowBoundingVolume,_.pickId="v_pickColor",S.push(_)}}};Im.prototype.isDestroyed=function(){return!1};Im.prototype.destroy=function(){return this._sp=this._sp&&this._sp.destroy(),this._spTranslucent=this._spTranslucent&&this._spTranslucent.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),nfe(this._pointPrimitives),me(this)};var vT=Im;var tni=y(C(),1),cfe=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],qJ=1,lW=8,uW=class e{static from(t){if(!(t instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");let[n,i]=new Uint8Array(t,0,2);if(n!==219)throw new Error("Data does not appear to be in a KDBush format.");let o=i>>4;if(o!==qJ)throw new Error(`Got v${o} data when expected v${qJ}.`);let r=cfe[i&15];if(!r)throw new Error("Unrecognized array type.");let[s]=new Uint16Array(t,2,1),[a]=new Uint32Array(t,4,1);return new e(a,s,r,t)}constructor(t,n=64,i=Float64Array,o){if(isNaN(t)||t<0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+n,2),65535),this.ArrayType=i,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;let r=cfe.indexOf(this.ArrayType),s=t*2*this.ArrayType.BYTES_PER_ELEMENT,a=t*this.IndexArrayType.BYTES_PER_ELEMENT,c=(8-a%8)%8;if(r<0)throw new Error(`Unexpected typed array class: ${i}.`);o&&o instanceof ArrayBuffer?(this.data=o,this.ids=new this.IndexArrayType(this.data,lW,t),this.coords=new this.ArrayType(this.data,lW+a+c,t*2),this._pos=t*2,this._finished=!0):(this.data=new ArrayBuffer(lW+s+a+c),this.ids=new this.IndexArrayType(this.data,lW,t),this.coords=new this.ArrayType(this.data,lW+a+c,t*2),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,(qJ<<4)+r]),new Uint16Array(this.data,2,1)[0]=n,new Uint32Array(this.data,4,1)[0]=t)}add(t,n){let i=this._pos>>1;return this.ids[i]=i,this.coords[this._pos++]=t,this.coords[this._pos++]=n,i}finish(){let t=this._pos>>1;if(t!==this.numItems)throw new Error(`Added ${t} items when expected ${this.numItems}.`);return e4(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(t,n,i,o){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:r,coords:s,nodeSize:a}=this,c=[0,r.length-1,0],d=[];for(;c.length;){let u=c.pop()||0,h=c.pop()||0,p=c.pop()||0;if(h-p<=a){for(let x=p;x<=h;x++){let I=s[2*x],_=s[2*x+1];I>=t&&I<=i&&_>=n&&_<=o&&d.push(r[x])}continue}let g=p+h>>1,f=s[2*g],b=s[2*g+1];f>=t&&f<=i&&b>=n&&b<=o&&d.push(r[g]),(u===0?t<=f:n<=b)&&(c.push(p),c.push(g-1),c.push(1-u)),(u===0?i>=f:o>=b)&&(c.push(g+1),c.push(h),c.push(1-u))}return d}within(t,n,i){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:o,coords:r,nodeSize:s}=this,a=[0,o.length-1,0],c=[],d=i*i;for(;a.length;){let u=a.pop()||0,h=a.pop()||0,p=a.pop()||0;if(h-p<=s){for(let x=p;x<=h;x++)lfe(r[2*x],r[2*x+1],t,n)<=d&&c.push(o[x]);continue}let g=p+h>>1,f=r[2*g],b=r[2*g+1];lfe(f,b,t,n)<=d&&c.push(o[g]),(u===0?t-i<=f:n-i<=b)&&(a.push(p),a.push(g-1),a.push(1-u)),(u===0?t+i>=f:n+i>=b)&&(a.push(g+1),a.push(h),a.push(1-u))}return c}};function e4(e,t,n,i,o,r){if(o-i<=n)return;let s=i+o>>1;dfe(e,t,s,i,o,r),e4(e,t,n,i,s-1,1-r),e4(e,t,n,s+1,o,1-r)}function dfe(e,t,n,i,o,r){for(;o>i;){if(o-i>600){let d=o-i+1,u=n-i+1,h=Math.log(d),p=.5*Math.exp(2*h/3),g=.5*Math.sqrt(h*p*(d-p)/d)*(u-d/2<0?-1:1),f=Math.max(i,Math.floor(n-u*p/d+g)),b=Math.min(o,Math.floor(n+(d-u)*p/d+g));dfe(e,t,n,f,b,r)}let s=t[2*n+r],a=i,c=o;for(dW(e,t,i,n),t[2*o+r]>s&&dW(e,t,i,o);a<c;){for(dW(e,t,a,c),a++,c--;t[2*a+r]<s;)a++;for(;t[2*c+r]>s;)c--}t[2*i+r]===s?dW(e,t,i,c):(c++,dW(e,t,c,o)),c<=n&&(i=c+1),n<=c&&(o=c-1)}}function dW(e,t,n,i){$J(e,n,i),$J(t,2*n,2*i),$J(t,2*n+1,2*i+1)}function $J(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}function lfe(e,t,n,i){let o=e-n,r=t-i;return o*o+r*r}function kh(e){e=e??Y.EMPTY_OBJECT,this._enabled=e.enabled??!1,this._pixelRange=e.pixelRange??80,this._minimumClusterSize=e.minimumClusterSize??2,this._clusterBillboards=e.clusterBillboards??!0,this._clusterLabels=e.clusterLabels??!0,this._clusterPoints=e.clusterPoints??!0,this._labelCollection=void 0,this._billboardCollection=void 0,this._pointCollection=void 0,this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity={},this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1,this._clusterDirty=!1,this._cluster=void 0,this._removeEventListener=void 0,this._clusterEvent=new Ce,this.show=e.show??!0}function ufe(e,t){e.x-=t,e.y-=t,e.width+=t*2,e.height+=t*2}var Pqe=new Ke;function mfe(e,t,n,i,o){if(l(e._labelCollection)&&i._clusterLabels?o=p0.getScreenSpaceBoundingBox(e,t,o):l(e._billboardCollection)&&i._clusterBillboards?o=Eo.getScreenSpaceBoundingBox(e,t,o):l(e._pointPrimitiveCollection)&&i._clusterPoints&&(o=$s.getScreenSpaceBoundingBox(e,t,o)),ufe(o,n),i._clusterLabels&&!l(e._labelCollection)&&l(e.id)&&ffe(i,e.id.id)&&l(e.id._label)){let r=i._collectionIndicesByEntity[e.id.id].labelIndex,s=i._labelCollection.get(r),a=p0.getScreenSpaceBoundingBox(s,t,Pqe);ufe(a,n),o=Ke.union(o,a,o)}return o}function Mqe(e,t){if(e.clusterShow=!0,!l(e._labelCollection)&&l(e.id)&&ffe(t,e.id.id)&&l(e.id._label)){let n=t._collectionIndicesByEntity[e.id.id].labelIndex,i=t._labelCollection.get(n);i.clusterShow=!0}}function hfe(e,t,n,i){let o={billboard:i._clusterBillboardCollection.add(),label:i._clusterLabelCollection.add(),point:i._clusterPointCollection.add()};o.billboard.show=!1,o.point.show=!1,o.label.show=!0,o.label.text=t.toLocaleString(),o.label.id=n,o.billboard.position=o.label.position=o.point.position=e,i._clusterEvent.raiseEvent(n,o)}function ffe(e,t){return l(e)&&l(e._collectionIndicesByEntity[t])&&l(e._collectionIndicesByEntity[t].labelIndex)}function t4(e,t,n,i,o){if(!l(e))return;let r=e.length;for(let s=0;s<r;++s){let a=e.get(s);if(a.clusterShow=!1,!a.show||o._scene.mode===re.SCENE3D&&!i.isPointVisible(a.position))continue;let c=o._clusterLabels&&l(a._labelCollection),d=o._clusterBillboards&&l(a.id._billboard),u=o._clusterPoints&&l(a.id._point);if(c&&(u||d))continue;let h=a.computeScreenSpacePosition(n);l(h)&&t.push({index:s,collection:e,clustered:!1,coord:h})}}var vqe=new Ke,Nqe=new Ke,Dqe=new Ke;function Qqe(e){return function(t){if(l(t)&&t<.05||!e.enabled)return;let n=e._scene,i=e._labelCollection,o=e._billboardCollection,r=e._pointCollection;if(!l(i)&&!l(o)&&!l(r)||!e._clusterBillboards&&!e._clusterLabels&&!e._clusterPoints)return;let s=e._clusterLabelCollection,a=e._clusterBillboardCollection,c=e._clusterPointCollection;l(s)?s.removeAll():s=e._clusterLabelCollection=new ep({scene:n}),l(a)?a.removeAll():a=e._clusterBillboardCollection=new qd({scene:n}),l(c)?c.removeAll():c=e._clusterPointCollection=new vT;let d=e._pixelRange,u=e._minimumClusterSize,h=e._previousClusters,p=[],g=e._previousHeight,f=n.camera.positionCartographic.height,b=n.ellipsoid,x=n.camera.positionWC,I=new gg(b,x),_=[];e._clusterLabels&&t4(i,_,n,I,e),e._clusterBillboards&&t4(o,_,n,I,e),e._clusterPoints&&t4(r,_,n,I,e);let E,S,R,G,B,w,F,P,A,T,L,V;if(_.length>0){let W=new uW(_.length,64,Uint32Array);for(let M=0;M<_.length;++M)W.add(_[M].coord.x,_[M].coord.y);if(W.finish(),f<g)for(R=h.length,E=0;E<R;++E){let M=h[E];if(!I.isPointVisible(M.position))continue;let Q=Eo._computeScreenSpacePosition(X.IDENTITY,M.position,m.ZERO,D.ZERO,n);if(!l(Q))continue;let N=1-f/g,k=M.width=M.width*N,v=M.height=M.height*N;k=Math.max(k,M.minimumWidth),v=Math.max(v,M.minimumHeight);let O=Q.x-k*.5,H=Q.y-v*.5,ee=Q.x+k,K=Q.y+v;for(B=W.range(O,H,ee,K),w=B.length,T=0,A=[],S=0;S<w;++S)F=B[S],P=_[F],P.clustered||(++T,L=P.collection,V=P.index,A.push(L.get(V).id));if(T>=u)for(hfe(M.position,T,A,e),p.push(M),S=0;S<w;++S)_[B[S]].clustered=!0}for(R=_.length,E=0;E<R;++E){let M=_[E];if(M.clustered)continue;M.clustered=!0,L=M.collection,V=M.index;let Q=L.get(V);G=mfe(Q,M.coord,d,e,vqe);let N=Ke.clone(G,Nqe);B=W.range(G.x,G.y,G.x+G.width,G.y+G.height),w=B.length;let k=m.clone(Q.position);for(T=1,A=[Q.id],S=0;S<w;++S)if(F=B[S],P=_[F],!P.clustered){let v=P.collection.get(P.index),O=mfe(v,P.coord,d,e,Dqe);m.add(v.position,k,k),Ke.union(N,O,N),++T,A.push(v.id)}if(T>=u){let v=m.multiplyByScalar(k,1/T,k);for(hfe(v,T,A,e),p.push({position:v,width:N.width,height:N.height,minimumWidth:G.width,minimumHeight:G.height}),S=0;S<w;++S)_[B[S]].clustered=!0}else Mqe(Q,e)}}s.length===0&&(s.destroy(),e._clusterLabelCollection=void 0),a.length===0&&(a.destroy(),e._clusterBillboardCollection=void 0),c.length===0&&(c.destroy(),e._clusterPointCollection=void 0),e._previousClusters=p,e._previousHeight=f}}kh.prototype._initialize=function(e){this._scene=e;let t=Qqe(this);this._cluster=t,this._removeEventListener=e.camera.changed.addEventListener(t)};Object.defineProperties(kh.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this._enabledDirty=e!==this._enabled,this._enabled=e}},pixelRange:{get:function(){return this._pixelRange},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._pixelRange,this._pixelRange=e}},minimumClusterSize:{get:function(){return this._minimumClusterSize},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._minimumClusterSize,this._minimumClusterSize=e}},clusterEvent:{get:function(){return this._clusterEvent}},clusterBillboards:{get:function(){return this._clusterBillboards},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterBillboards,this._clusterBillboards=e}},clusterLabels:{get:function(){return this._clusterLabels},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterLabels,this._clusterLabels=e}},clusterPoints:{get:function(){return this._clusterPoints},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterPoints,this._clusterPoints=e}},ready:{get:function(){return!this._enabledDirty&&!this._clusterDirty&&(!l(this._billboardCollection)||this._billboardCollection.ready)&&(!l(this._labelCollection)||this._labelCollection.ready)}}});function i4(e,t,n,i){return function(o){let r=this[e];l(this._collectionIndicesByEntity)||(this._collectionIndicesByEntity={});let s=this._collectionIndicesByEntity[o.id];if(l(s)||(s=this._collectionIndicesByEntity[o.id]={billboardIndex:void 0,labelIndex:void 0,pointIndex:void 0}),l(r)&&l(s[i]))return r.get(s[i]);l(r)||(r=this[e]=new t({scene:this._scene}));let a,c,d=this[n];d.length>0?(a=d.shift(),c=r.get(a)):(c=r.add(),a=r.length-1),s[i]=a;let u=this;return Promise.resolve().then(function(){u._clusterDirty=!0}),c}}function o4(e,t){let n=e._collectionIndicesByEntity[t];!l(n.billboardIndex)&&!l(n.labelIndex)&&!l(n.pointIndex)&&delete e._collectionIndicesByEntity[t]}kh.prototype.getLabel=i4("_labelCollection",ep,"_unusedLabelIndices","labelIndex");kh.prototype.removeLabel=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._labelCollection)||!l(t)||!l(t.labelIndex))return;let n=t.labelIndex;t.labelIndex=void 0,o4(this,e.id);let i=this._labelCollection.get(n);i.show=!1,i.text="",i.id=void 0,this._unusedLabelIndices.push(n),this._clusterDirty=!0};kh.prototype.getBillboard=i4("_billboardCollection",qd,"_unusedBillboardIndices","billboardIndex");kh.prototype.removeBillboard=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._billboardCollection)||!l(t)||!l(t.billboardIndex))return;let n=t.billboardIndex;t.billboardIndex=void 0,o4(this,e.id);let i=this._billboardCollection.get(n);i.id=void 0,i.show=!1,i.image=void 0,this._unusedBillboardIndices.push(n),this._clusterDirty=!0};kh.prototype.getPoint=i4("_pointCollection",vT,"_unusedPointIndices","pointIndex");kh.prototype.removePoint=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._pointCollection)||!l(t)||!l(t.pointIndex))return;let n=t.pointIndex;t.pointIndex=void 0,o4(this,e.id);let i=this._pointCollection.get(n);i.show=!1,i.id=void 0,this._unusedPointIndices.push(n),this._clusterDirty=!0};function n4(e){if(!l(e))return;let t=e.length;for(let n=0;n<t;++n)e.get(n).clusterShow=!0}function Uqe(e){e.enabled||(l(e._clusterLabelCollection)&&e._clusterLabelCollection.destroy(),l(e._clusterBillboardCollection)&&e._clusterBillboardCollection.destroy(),l(e._clusterPointCollection)&&e._clusterPointCollection.destroy(),e._clusterLabelCollection=void 0,e._clusterBillboardCollection=void 0,e._clusterPointCollection=void 0,n4(e._labelCollection),n4(e._billboardCollection),n4(e._pointCollection))}kh.prototype.update=function(e){if(!this.show)return;let t,n=this._labelCollection;l(n)&&n.length>0&&!n.ready&&(t=e.commandList,e.commandList=[],n.update(e),e.commandList=t);let i=this._billboardCollection;l(i)&&i.length>0&&!i.ready&&(t=e.commandList,e.commandList=[],i.update(e),e.commandList=t),this._enabledDirty&&(this._enabledDirty=!1,Uqe(this),this._clusterDirty=!0),this._clusterDirty&&(this._cluster(),this._clusterDirty=l(n)&&!n.ready||l(i)&&!i.ready),l(this._clusterLabelCollection)&&this._clusterLabelCollection.update(e),l(this._clusterBillboardCollection)&&this._clusterBillboardCollection.update(e),l(this._clusterPointCollection)&&this._clusterPointCollection.update(e),l(n)&&n.update(e),l(i)&&i.update(e),l(this._pointCollection)&&this._pointCollection.update(e)};kh.prototype.destroy=function(){l(this._removeEventListener)&&(this._removeEventListener(),this._removeEventListener=void 0),this._labelCollection=this._labelCollection&&this._labelCollection.destroy(),this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),this._pointCollection=this._pointCollection&&this._pointCollection.destroy(),this._clusterLabelCollection=this._clusterLabelCollection&&this._clusterLabelCollection.destroy(),this._clusterBillboardCollection=this._clusterBillboardCollection&&this._clusterBillboardCollection.destroy(),this._clusterPointCollection=this._clusterPointCollection&&this._clusterPointCollection.destroy(),this._labelCollection=void 0,this._billboardCollection=void 0,this._pointCollection=void 0,this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity=void 0,this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1,this._pixelRangeDirty=!1,this._minimumClusterSizeDirty=!1};var ou=kh;function r4(e){this._name=e,this._clock=void 0,this._changed=new Ce,this._error=new Ce,this._isLoading=!1,this._loading=new Ce,this._entityCollection=new Ca(this),this._entityCluster=new ou}Object.defineProperties(r4.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{get:function(){return this._clock},set:function(e){this._clock!==e&&(this._clock=e,this._changed.raiseEvent(this))}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading},set:function(e){cs.setLoading(this,e)}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}}});r4.prototype.update=function(e){return!0};var mW=r4;var Rii=y(C(),1);var Yni=y(C(),1);var Rni=y(C(),1);var pfe={};pfe.computePositions=function(e,t,n,i,o){let r=e*.5,s=-r,a=i+i,c=o?2*a:a,d=new Float64Array(c*3),u,h=0,p=0,g=o?a*3:0,f=o?(a+i)*3:i*3;for(u=0;u<i;u++){let b=u/i*Z.TWO_PI,x=Math.cos(b),I=Math.sin(b),_=x*n,E=I*n,S=x*t,R=I*t;d[p+g]=_,d[p+g+1]=E,d[p+g+2]=s,d[p+f]=S,d[p+f+1]=R,d[p+f+2]=r,p+=3,o&&(d[h++]=_,d[h++]=E,d[h++]=s,d[h++]=S,d[h++]=R,d[h++]=r)}return d};var Mx=pfe;var s4=new D,kqe=new m,Yqe=new m,Oqe=new m,Hqe=new m;function bg(e){e=e??Y.EMPTY_OBJECT;let t=e.length,n=e.topRadius,i=e.bottomRadius,o=e.vertexFormat??we.DEFAULT,r=e.slices??128;this._length=t,this._topRadius=n,this._bottomRadius=i,this._vertexFormat=we.clone(o),this._slices=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createCylinderGeometry"}bg.packedLength=we.packedLength+5;bg.pack=function(e,t,n){return n=n??0,we.pack(e._vertexFormat,t,n),n+=we.packedLength,t[n++]=e._length,t[n++]=e._topRadius,t[n++]=e._bottomRadius,t[n++]=e._slices,t[n]=e._offsetAttribute??-1,t};var Afe=new we,NT={vertexFormat:Afe,length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,offsetAttribute:void 0};bg.unpack=function(e,t,n){t=t??0;let i=we.unpack(e,t,Afe);t+=we.packedLength;let o=e[t++],r=e[t++],s=e[t++],a=e[t++],c=e[t];return l(n)?(n._vertexFormat=we.clone(i,n._vertexFormat),n._length=o,n._topRadius=r,n._bottomRadius=s,n._slices=a,n._offsetAttribute=c===-1?void 0:c,n):(NT.length=o,NT.topRadius=r,NT.bottomRadius=s,NT.slices=a,NT.offsetAttribute=c===-1?void 0:c,new bg(NT))};bg.createGeometry=function(e){let t=e._length,n=e._topRadius,i=e._bottomRadius,o=e._vertexFormat,r=e._slices;if(t<=0||n<0||i<0||n===0&&i===0)return;let s=r+r,a=r+s,c=s+s,d=Mx.computePositions(t,n,i,r,!0),u=o.st?new Float32Array(c*2):void 0,h=o.normal?new Float32Array(c*3):void 0,p=o.tangent?new Float32Array(c*3):void 0,g=o.bitangent?new Float32Array(c*3):void 0,f,b=o.normal||o.tangent||o.bitangent;if(b){let B=o.tangent||o.bitangent,w=0,F=0,P=0,A=Math.atan2(i-n,t),T=kqe;T.z=Math.sin(A);let L=Math.cos(A),V=Oqe,W=Yqe;for(f=0;f<r;f++){let M=f/r*Z.TWO_PI,Q=L*Math.cos(M),N=L*Math.sin(M);b&&(T.x=Q,T.y=N,B&&(V=m.normalize(m.cross(m.UNIT_Z,T,V),V)),o.normal&&(h[w++]=T.x,h[w++]=T.y,h[w++]=T.z,h[w++]=T.x,h[w++]=T.y,h[w++]=T.z),o.tangent&&(p[F++]=V.x,p[F++]=V.y,p[F++]=V.z,p[F++]=V.x,p[F++]=V.y,p[F++]=V.z),o.bitangent&&(W=m.normalize(m.cross(T,V,W),W),g[P++]=W.x,g[P++]=W.y,g[P++]=W.z,g[P++]=W.x,g[P++]=W.y,g[P++]=W.z))}for(f=0;f<r;f++)o.normal&&(h[w++]=0,h[w++]=0,h[w++]=-1),o.tangent&&(p[F++]=1,p[F++]=0,p[F++]=0),o.bitangent&&(g[P++]=0,g[P++]=-1,g[P++]=0);for(f=0;f<r;f++)o.normal&&(h[w++]=0,h[w++]=0,h[w++]=1),o.tangent&&(p[F++]=1,p[F++]=0,p[F++]=0),o.bitangent&&(g[P++]=0,g[P++]=1,g[P++]=0)}let x=12*r-12,I=Me.createTypedArray(c,x),_=0,E=0;for(f=0;f<r-1;f++)I[_++]=E,I[_++]=E+2,I[_++]=E+3,I[_++]=E,I[_++]=E+3,I[_++]=E+1,E+=2;for(I[_++]=s-2,I[_++]=0,I[_++]=1,I[_++]=s-2,I[_++]=1,I[_++]=s-1,f=1;f<r-1;f++)I[_++]=s+f+1,I[_++]=s+f,I[_++]=s;for(f=1;f<r-1;f++)I[_++]=a,I[_++]=a+f,I[_++]=a+f+1;let S=0;if(o.st){let B=Math.max(n,i);for(f=0;f<c;f++){let w=m.fromArray(d,f*3,Hqe);u[S++]=(w.x+B)/(2*B),u[S++]=(w.y+B)/(2*B)}}let R=new xn;o.position&&(R.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:d})),o.normal&&(R.normal=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:h})),o.tangent&&(R.tangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:p})),o.bitangent&&(R.bitangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:g})),o.st&&(R.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:u})),s4.x=t*.5,s4.y=Math.max(i,n);let G=new ue(m.ZERO,D.magnitude(s4));if(l(e._offsetAttribute)){t=d.length;let B=e._offsetAttribute===pn.NONE?0:1,w=new Uint8Array(t/3).fill(B);R.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:w})}return new pt({attributes:R,indices:I,primitiveType:We.TRIANGLES,boundingSphere:G,offsetAttribute:e._offsetAttribute})};var a4;bg.getUnitCylinder=function(){return l(a4)||(a4=bg.createGeometry(new bg({topRadius:1,bottomRadius:1,length:1,vertexFormat:we.POSITION_ONLY}))),a4};var hW=bg;var sii=y(C(),1);var c4=new D;function DT(e){e=e??Y.EMPTY_OBJECT;let t=e.length,n=e.topRadius,i=e.bottomRadius,o=e.slices??128,r=Math.max(e.numberOfVerticalLines??16,0);this._length=t,this._topRadius=n,this._bottomRadius=i,this._slices=o,this._numberOfVerticalLines=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createCylinderOutlineGeometry"}DT.packedLength=6;DT.pack=function(e,t,n){return n=n??0,t[n++]=e._length,t[n++]=e._topRadius,t[n++]=e._bottomRadius,t[n++]=e._slices,t[n++]=e._numberOfVerticalLines,t[n]=e._offsetAttribute??-1,t};var vx={length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,numberOfVerticalLines:void 0,offsetAttribute:void 0};DT.unpack=function(e,t,n){t=t??0;let i=e[t++],o=e[t++],r=e[t++],s=e[t++],a=e[t++],c=e[t];return l(n)?(n._length=i,n._topRadius=o,n._bottomRadius=r,n._slices=s,n._numberOfVerticalLines=a,n._offsetAttribute=c===-1?void 0:c,n):(vx.length=i,vx.topRadius=o,vx.bottomRadius=r,vx.slices=s,vx.numberOfVerticalLines=a,vx.offsetAttribute=c===-1?void 0:c,new DT(vx))};DT.createGeometry=function(e){let t=e._length,n=e._topRadius,i=e._bottomRadius,o=e._slices,r=e._numberOfVerticalLines;if(t<=0||n<0||i<0||n===0&&i===0)return;let s=o*2,a=Mx.computePositions(t,n,i,o,!1),c=o*2,d;if(r>0){let b=Math.min(r,o);d=Math.round(o/b),c+=b}let u=Me.createTypedArray(s,c*2),h=0,p;for(p=0;p<o-1;p++)u[h++]=p,u[h++]=p+1,u[h++]=p+o,u[h++]=p+1+o;if(u[h++]=o-1,u[h++]=0,u[h++]=o+o-1,u[h++]=o,r>0)for(p=0;p<o;p+=d)u[h++]=p,u[h++]=p+o;let g=new xn;g.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:a}),c4.x=t*.5,c4.y=Math.max(i,n);let f=new ue(m.ZERO,D.magnitude(c4));if(l(e._offsetAttribute)){t=a.length;let b=e._offsetAttribute===pn.NONE?0:1,x=new Uint8Array(t/3).fill(b);g.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:x})}return new pt({attributes:g,indices:u,primitiveType:We.LINES,boundingSphere:f,offsetAttribute:e._offsetAttribute})};var fW=DT;var gfe=m.ZERO,bfe=new m,zqe=new m,yfe=new U;function Kqe(e){this.id=e,this.vertexFormat=void 0,this.length=void 0,this.topRadius=void 0,this.bottomRadius=void 0,this.slices=void 0,this.numberOfVerticalLines=void 0,this.offsetAttribute=void 0}function ru(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new Kqe(e),geometryPropertyName:"cylinder",observedPropertyNames:["availability","position","orientation","cylinder"]}),this._onEntityPropertyChanged(e,"cylinder",e.cylinder,void 0)}l(Object.create)&&(ru.prototype=Object.create(Ci.prototype),ru.prototype.constructor=ru);Object.defineProperties(ru.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});ru.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=jn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r,color:void 0,offset:void 0};if(this._materialProperty instanceof qt){let a;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,yfe)),l(a)||(a=U.WHITE),s.color=tn.fromColor(a)}return l(this._options.offsetAttribute)&&(s.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,gfe,bfe))),new wt({id:t,geometry:new hW(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.cylinder.heightReference,this._options.length*.5,this._scene.ellipsoid),attributes:s})};ru.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=z.getValueOrDefault(this._outlineColorProperty,e,U.BLACK,yfe),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:tn.fromColor(i),distanceDisplayCondition:jn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,gfe,bfe))),new wt({id:t,geometry:new fW(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.cylinder.heightReference,this._options.length*.5,this._scene.ellipsoid),attributes:r})};ru.prototype._computeCenter=function(e,t){return z.getValueOrUndefined(this._entity.position,e,t)};ru.prototype._isHidden=function(e,t){return!l(e.position)||!l(t.length)||!l(t.topRadius)||!l(t.bottomRadius)||Ci.prototype._isHidden.call(this,e,t)};ru.prototype._isDynamic=function(e,t){return!e.position.isConstant||!z.isConstant(e.orientation)||!t.length.isConstant||!t.topRadius.isConstant||!t.bottomRadius.isConstant||!z.isConstant(t.slices)||!z.isConstant(t.outlineWidth)||!z.isConstant(t.numberOfVerticalLines)};ru.prototype._setStaticOptions=function(e,t){let n=z.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,et.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof qt?yn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,i.length=t.length.getValue(ze.MINIMUM_VALUE),i.topRadius=t.topRadius.getValue(ze.MINIMUM_VALUE),i.bottomRadius=t.bottomRadius.getValue(ze.MINIMUM_VALUE),i.slices=z.getValueOrUndefined(t.slices,ze.MINIMUM_VALUE),i.numberOfVerticalLines=z.getValueOrUndefined(t.numberOfVerticalLines,ze.MINIMUM_VALUE),i.offsetAttribute=n!==et.NONE?pn.ALL:void 0};ru.prototype._onEntityPropertyChanged=fA;ru.DynamicGeometryUpdater=QT;function QT(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(QT.prototype=Object.create(yi.prototype),QT.prototype.constructor=QT);QT.prototype._isHidden=function(e,t,n){let i=this._options,o=z.getValueOrUndefined(e.position,n,zqe);return!l(o)||!l(i.length)||!l(i.topRadius)||!l(i.bottomRadius)||yi.prototype._isHidden.call(this,e,t,n)};QT.prototype._setOptions=function(e,t,n){let i=z.getValueOrDefault(t.heightReference,n,et.NONE),o=this._options;o.length=z.getValueOrUndefined(t.length,n),o.topRadius=z.getValueOrUndefined(t.topRadius,n),o.bottomRadius=z.getValueOrUndefined(t.bottomRadius,n),o.slices=z.getValueOrUndefined(t.slices,n),o.numberOfVerticalLines=z.getValueOrUndefined(t.numberOfVerticalLines,n),o.offsetAttribute=i!==et.NONE?pn.ALL:void 0};var pW=ru;var Rci=y(C(),1);var Gii=y(C(),1),Jqe={UNBOUNDED:0,CLAMPED:1,LOOP_STOP:2},ls=Object.freeze(Jqe);var Bii=y(C(),1),jqe={TICK_DEPENDENT:0,SYSTEM_CLOCK_MULTIPLIER:1,SYSTEM_CLOCK:2},Ro=Object.freeze(jqe);var Xii=y(C(),1),qqe={NONE:0,HOLD:1,EXTRAPOLATE:2},su=Object.freeze(qqe);var Fii=y(C(),1),Cfe=y(Bd(),1);function $qe(e){let t=new Cfe.default(e);t.normalize();let n=t.path(),i=n.lastIndexOf("/");return i!==-1&&(n=n.substr(i+1)),n}var yg=$qe;var Nii=y(C(),1);var e$e=Z.factorial;function l4(e,t,n,i,o,r){let s=0,a,c,d;if(i>0){for(c=0;c<o;c++){for(a=!1,d=0;d<r.length&&!a;d++)c===r[d]&&(a=!0);a||(r.push(c),s+=l4(e,t,n,i-1,o,r),r.splice(r.length-1,1))}return s}for(s=1,c=0;c<o;c++){for(a=!1,d=0;d<r.length&&!a;d++)c===r[d]&&(a=!0);a||(s*=e-n[t[c]])}return s}var A5={type:"Hermite"};A5.getRequiredDataPoints=function(e,t){return t=t??0,Math.max(Math.floor((e+1)/(t+1)),2)};A5.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a,c,d,u,h=t.length,p=new Array(i);for(r=0;r<i;r++){o[r]=0;let x=new Array(h);for(p[r]=x,s=0;s<h;s++)x[s]=[]}let g=h,f=new Array(g);for(r=0;r<g;r++)f[r]=r;let b=h-1;for(c=0;c<i;c++){for(s=0;s<g;s++)u=f[s]*i+c,p[c][0].push(n[u]);for(r=1;r<g;r++){let x=!1;for(s=0;s<g-r;s++){let I=t[f[s]],_=t[f[s+r]],E;_-I<=0?(u=f[s]*i+i*r+c,E=n[u],p[c][r].push(E/e$e(r))):(E=p[c][r-1][s+1]-p[c][r-1][s],p[c][r].push(E/(_-I))),x=x||E!==0}x||(b=r-1)}}for(a=0,d=0;a<=d;a++)for(r=a;r<=b;r++){let x=l4(e,f,t,a,r,[]);for(c=0;c<i;c++){let I=p[c][r][0];o[c+a*i]+=I*x}}return o};var t$e=[];A5.interpolate=function(e,t,n,i,o,r,s){let a=i*(r+1);l(s)||(s=new Array(a));for(let I=0;I<a;I++)s[I]=0;let c=t.length,d=new Array(c*(o+1)),u;for(u=0;u<c;u++)for(let I=0;I<o+1;I++)d[u*(o+1)+I]=u;let h=d.length,p=t$e,g=n$e(p,d,t,n,i,o),f=[],b=h*(h+1)/2,x=Math.min(g,r);for(let I=0;I<=x;I++)for(u=I;u<=g;u++){f.length=0;let _=l4(e,d,t,I,u,f),E=Math.floor(u*(1-u)/2)+h*u;for(let S=0;S<i;S++){let R=Math.floor(S*b),G=p[R+E];s[S+I*i]+=G*_}}return s};function n$e(e,t,n,i,o,r){let s,a,c=-1,d=t.length,u=d*(d+1)/2;for(let h=0;h<o;h++){let p=Math.floor(h*u);for(s=0;s<d;s++)a=t[s]*o*(r+1)+h,e[p+s]=i[a];for(let g=1;g<d;g++){let f=0,b=Math.floor(g*(1-g)/2)+d*g,x=!1;for(s=0;s<d-g;s++){let I=n[t[s]],_=n[t[s+g]],E,S;if(_-I<=0)a=t[s]*o*(r+1)+o*g+h,E=i[a],S=E/Z.factorial(g),e[p+b+f]=S,f++;else{let R=Math.floor((g-1)*(2-g)/2)+d*(g-1);E=e[p+R+s+1]-e[p+R+s],S=E/(_-I),e[p+b+f]=S,f++}x=x||E!==0}x&&(c=Math.max(c,g))}}return c}var AW=A5;var Uii=y(C(),1);var d4={type:"Lagrange"};d4.getRequiredDataPoints=function(e){return Math.max(e+1,2)};d4.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a=t.length;for(r=0;r<i;r++)o[r]=0;for(r=0;r<a;r++){let c=1;for(s=0;s<a;s++)if(s!==r){let d=t[r]-t[s];c*=(e-t[s])/d}for(s=0;s<i;s++)o[s]+=c*n[r*i+s]}return o};var gW=d4;var Oii=y(C(),1);var u4={type:"Linear"};u4.getRequiredDataPoints=function(e){return 2};u4.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a,c=t[0],d=t[1];for(r=0;r<i;r++)s=n[r],a=n[r+i],o[r]=((a-s)*e+d*s-c*a)/(d-c);return o};var Nx=u4;var Kii=y(C(),1);function Yc(e,t,n){this.clock=e??0,this.cone=t??0,this.magnitude=n??1}Yc.fromCartesian3=function(e,t){let n=e.x,i=e.y,o=e.z,r=n*n+i*i;return l(t)||(t=new Yc),t.clock=Math.atan2(i,n),t.cone=Math.atan2(Math.sqrt(r),o),t.magnitude=Math.sqrt(r+o*o),t};Yc.clone=function(e,t){if(l(e))return l(t)?(t.clock=e.clock,t.cone=e.cone,t.magnitude=e.magnitude,t):new Yc(e.clock,e.cone,e.magnitude)};Yc.normalize=function(e,t){return l(t)?(t.clock=e.clock,t.cone=e.cone,t.magnitude=1,t):new Yc(e.clock,e.cone,1)};Yc.equals=function(e,t){return e===t||l(e)&&l(t)&&e.clock===t.clock&&e.cone===t.cone&&e.magnitude===t.magnitude};Yc.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.clock-t.clock)<=n&&Math.abs(e.cone-t.cone)<=n&&Math.abs(e.magnitude-t.magnitude)<=n};Yc.prototype.equals=function(e){return Yc.equals(this,e)};Yc.prototype.clone=function(e){return Yc.clone(this,e)};Yc.prototype.equalsEpsilon=function(e,t){return Yc.equalsEpsilon(this,e,t)};Yc.prototype.toString=function(){return`(${this.clock}, ${this.cone}, ${this.magnitude})`};var bW=Yc;var _W=y(Bd(),1);var hoi=y(C(),1);var soi=y(C(),1);var jii=y(C(),1),m4;typeof performance<"u"&&typeof performance.now=="function"&&isFinite(performance.now())?m4=function(){return performance.now()}:m4=function(){return Date.now()};var Fi=m4;function h4(e){e=e??Y.EMPTY_OBJECT;let t=e.currentTime,n=e.startTime,i=e.stopTime;l(t)?t=j.clone(t):l(n)?t=j.clone(n):l(i)?t=j.addDays(i,-1,new j):t=j.now(),l(n)?n=j.clone(n):n=j.clone(t),l(i)?i=j.clone(i):i=j.addDays(n,1,new j),this.startTime=n,this.stopTime=i,this.clockRange=e.clockRange??ls.UNBOUNDED,this.canAnimate=e.canAnimate??!0,this.onTick=new Ce,this.onStop=new Ce,this._currentTime=void 0,this._multiplier=void 0,this._clockStep=void 0,this._shouldAnimate=void 0,this._lastSystemTime=Fi(),this.currentTime=t,this.multiplier=e.multiplier??1,this.shouldAnimate=e.shouldAnimate??!1,this.clockStep=e.clockStep??Ro.SYSTEM_CLOCK_MULTIPLIER}Object.defineProperties(h4.prototype,{currentTime:{get:function(){return this._currentTime},set:function(e){j.equals(this._currentTime,e)||(this._clockStep===Ro.SYSTEM_CLOCK&&(this._clockStep=Ro.SYSTEM_CLOCK_MULTIPLIER),this._currentTime=e)}},multiplier:{get:function(){return this._multiplier},set:function(e){this._multiplier!==e&&(this._clockStep===Ro.SYSTEM_CLOCK&&(this._clockStep=Ro.SYSTEM_CLOCK_MULTIPLIER),this._multiplier=e)}},clockStep:{get:function(){return this._clockStep},set:function(e){e===Ro.SYSTEM_CLOCK&&(this._multiplier=1,this._shouldAnimate=!0,this._currentTime=j.now()),this._clockStep=e}},shouldAnimate:{get:function(){return this._shouldAnimate},set:function(e){this._shouldAnimate!==e&&(this._clockStep===Ro.SYSTEM_CLOCK&&(this._clockStep=Ro.SYSTEM_CLOCK_MULTIPLIER),this._shouldAnimate=e)}}});h4.prototype.tick=function(){let e=Fi(),t=j.clone(this._currentTime);if(this.canAnimate&&this._shouldAnimate){let n=this._clockStep;if(n===Ro.SYSTEM_CLOCK)t=j.now(t);else{let i=this._multiplier;if(n===Ro.TICK_DEPENDENT)t=j.addSeconds(t,i,t);else{let a=e-this._lastSystemTime;t=j.addSeconds(t,i*(a/1e3),t)}let o=this.clockRange,r=this.startTime,s=this.stopTime;if(o===ls.CLAMPED)j.lessThan(t,r)?t=j.clone(r,t):j.greaterThan(t,s)&&(t=j.clone(s,t),this.onStop.raiseEvent(this));else if(o===ls.LOOP_STOP)for(j.lessThan(t,r)&&(t=j.clone(r,t));j.greaterThan(t,s);)t=j.addSeconds(r,j.secondsDifference(t,s),t),this.onStop.raiseEvent(this)}}return this._currentTime=t,this._lastSystemTime=e,this.onTick.raiseEvent(this),t};var Yh=h4;function Dx(){this._definitionChanged=new Ce,this._startTime=void 0,this._stopTime=void 0,this._currentTime=void 0,this._clockRange=void 0,this._clockStep=void 0,this._multiplier=void 0}Object.defineProperties(Dx.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},startTime:ul("startTime"),stopTime:ul("stopTime"),currentTime:ul("currentTime"),clockRange:ul("clockRange"),clockStep:ul("clockStep"),multiplier:ul("multiplier")});Dx.prototype.clone=function(e){return l(e)||(e=new Dx),e.startTime=this.startTime,e.stopTime=this.stopTime,e.currentTime=this.currentTime,e.clockRange=this.clockRange,e.clockStep=this.clockStep,e.multiplier=this.multiplier,e};Dx.prototype.equals=function(e){return this===e||l(e)&&j.equals(this.startTime,e.startTime)&&j.equals(this.stopTime,e.stopTime)&&j.equals(this.currentTime,e.currentTime)&&this.clockRange===e.clockRange&&this.clockStep===e.clockStep&&this.multiplier===e.multiplier};Dx.prototype.merge=function(e){this.startTime=this.startTime??e.startTime,this.stopTime=this.stopTime??e.stopTime,this.currentTime=this.currentTime??e.currentTime,this.clockRange=this.clockRange??e.clockRange,this.clockStep=this.clockStep??e.clockStep,this.multiplier=this.multiplier??e.multiplier};Dx.prototype.getValue=function(e){return l(e)||(e=new Yh),e.startTime=this.startTime??e.startTime,e.stopTime=this.stopTime??e.stopTime,e.currentTime=this.currentTime??e.currentTime,e.clockRange=this.clockRange??e.clockRange,e.multiplier=this.multiplier??e.multiplier,e.clockStep=this.clockStep??e.clockStep,e};var Oh=Dx;var _oi=y(C(),1);var i$e=U.WHITE,o$e=.1,r$e=new D(8,8),s$e=new D(0,0),a$e=new D(1,1);function UT(e){e=e??Y.EMPTY_OBJECT,this._definitionChanged=new Ce,this._color=void 0,this._colorSubscription=void 0,this._cellAlpha=void 0,this._cellAlphaSubscription=void 0,this._lineCount=void 0,this._lineCountSubscription=void 0,this._lineThickness=void 0,this._lineThicknessSubscription=void 0,this._lineOffset=void 0,this._lineOffsetSubscription=void 0,this.color=e.color,this.cellAlpha=e.cellAlpha,this.lineCount=e.lineCount,this.lineThickness=e.lineThickness,this.lineOffset=e.lineOffset}Object.defineProperties(UT.prototype,{isConstant:{get:function(){return z.isConstant(this._color)&&z.isConstant(this._cellAlpha)&&z.isConstant(this._lineCount)&&z.isConstant(this._lineThickness)&&z.isConstant(this._lineOffset)}},definitionChanged:{get:function(){return this._definitionChanged}},color:fe("color"),cellAlpha:fe("cellAlpha"),lineCount:fe("lineCount"),lineThickness:fe("lineThickness"),lineOffset:fe("lineOffset")});UT.prototype.getType=function(e){return"Grid"};var c$e=new j;UT.prototype.getValue=function(e,t){return l(e)||(e=j.now(c$e)),l(t)||(t={}),t.color=z.getValueOrClonedDefault(this._color,e,i$e,t.color),t.cellAlpha=z.getValueOrDefault(this._cellAlpha,e,o$e),t.lineCount=z.getValueOrClonedDefault(this._lineCount,e,r$e,t.lineCount),t.lineThickness=z.getValueOrClonedDefault(this._lineThickness,e,a$e,t.lineThickness),t.lineOffset=z.getValueOrClonedDefault(this._lineOffset,e,s$e,t.lineOffset),t};UT.prototype.equals=function(e){return this===e||e instanceof UT&&z.equals(this._color,e._color)&&z.equals(this._cellAlpha,e._cellAlpha)&&z.equals(this._lineCount,e._lineCount)&&z.equals(this._lineThickness,e._lineThickness)&&z.equals(this._lineOffset,e._lineOffset)};var kT=UT;var Zoi=y(C(),1);function YT(e){this._definitionChanged=new Ce,this._color=void 0,this._colorSubscription=void 0,this.color=e}Object.defineProperties(YT.prototype,{isConstant:{get:function(){return z.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:fe("color")});YT.prototype.getType=function(e){return"PolylineArrow"};var l$e=new j;YT.prototype.getValue=function(e,t){return l(e)||(e=j.now(l$e)),l(t)||(t={}),t.color=z.getValueOrClonedDefault(this._color,e,U.WHITE,t.color),t};YT.prototype.equals=function(e){return this===e||e instanceof YT&&z.equals(this._color,e._color)};var OT=YT;var Noi=y(C(),1);var d$e=U.WHITE,u$e=U.TRANSPARENT,m$e=16,h$e=255;function HT(e){e=e??Y.EMPTY_OBJECT,this._definitionChanged=new Ce,this._color=void 0,this._colorSubscription=void 0,this._gapColor=void 0,this._gapColorSubscription=void 0,this._dashLength=void 0,this._dashLengthSubscription=void 0,this._dashPattern=void 0,this._dashPatternSubscription=void 0,this.color=e.color,this.gapColor=e.gapColor,this.dashLength=e.dashLength,this.dashPattern=e.dashPattern}Object.defineProperties(HT.prototype,{isConstant:{get:function(){return z.isConstant(this._color)&&z.isConstant(this._gapColor)&&z.isConstant(this._dashLength)&&z.isConstant(this._dashPattern)}},definitionChanged:{get:function(){return this._definitionChanged}},color:fe("color"),gapColor:fe("gapColor"),dashLength:fe("dashLength"),dashPattern:fe("dashPattern")});HT.prototype.getType=function(e){return"PolylineDash"};var f$e=new j;HT.prototype.getValue=function(e,t){return l(e)||(e=j.now(f$e)),l(t)||(t={}),t.color=z.getValueOrClonedDefault(this._color,e,d$e,t.color),t.gapColor=z.getValueOrClonedDefault(this._gapColor,e,u$e,t.gapColor),t.dashLength=z.getValueOrDefault(this._dashLength,e,m$e,t.dashLength),t.dashPattern=z.getValueOrDefault(this._dashPattern,e,h$e,t.dashPattern),t};HT.prototype.equals=function(e){return this===e||e instanceof HT&&z.equals(this._color,e._color)&&z.equals(this._gapColor,e._gapColor)&&z.equals(this._dashLength,e._dashLength)&&z.equals(this._dashPattern,e._dashPattern)};var zT=HT;var Koi=y(C(),1);var p$e=U.WHITE,A$e=.25,g$e=1;function KT(e){e=e??Y.EMPTY_OBJECT,this._definitionChanged=new Ce,this._color=void 0,this._colorSubscription=void 0,this._glowPower=void 0,this._glowPowerSubscription=void 0,this._taperPower=void 0,this._taperPowerSubscription=void 0,this.color=e.color,this.glowPower=e.glowPower,this.taperPower=e.taperPower}Object.defineProperties(KT.prototype,{isConstant:{get:function(){return z.isConstant(this._color)&&z.isConstant(this._glow)}},definitionChanged:{get:function(){return this._definitionChanged}},color:fe("color"),glowPower:fe("glowPower"),taperPower:fe("taperPower")});KT.prototype.getType=function(e){return"PolylineGlow"};var b$e=new j;KT.prototype.getValue=function(e,t){return l(e)||(e=j.now(b$e)),l(t)||(t={}),t.color=z.getValueOrClonedDefault(this._color,e,p$e,t.color),t.glowPower=z.getValueOrDefault(this._glowPower,e,A$e,t.glowPower),t.taperPower=z.getValueOrDefault(this._taperPower,e,g$e,t.taperPower),t};KT.prototype.equals=function(e){return this===e||e instanceof KT&&z.equals(this._color,e._color)&&z.equals(this._glowPower,e._glowPower)&&z.equals(this._taperPower,e._taperPower)};var JT=KT;var ori=y(C(),1);var y$e=U.WHITE,C$e=U.BLACK,x$e=1;function jT(e){e=e??Y.EMPTY_OBJECT,this._definitionChanged=new Ce,this._color=void 0,this._colorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this.color=e.color,this.outlineColor=e.outlineColor,this.outlineWidth=e.outlineWidth}Object.defineProperties(jT.prototype,{isConstant:{get:function(){return z.isConstant(this._color)&&z.isConstant(this._outlineColor)&&z.isConstant(this._outlineWidth)}},definitionChanged:{get:function(){return this._definitionChanged}},color:fe("color"),outlineColor:fe("outlineColor"),outlineWidth:fe("outlineWidth")});jT.prototype.getType=function(e){return"PolylineOutline"};var I$e=new j;jT.prototype.getValue=function(e,t){return l(e)||(e=j.now(I$e)),l(t)||(t={}),t.color=z.getValueOrClonedDefault(this._color,e,y$e,t.color),t.outlineColor=z.getValueOrClonedDefault(this._outlineColor,e,C$e,t.outlineColor),t.outlineWidth=z.getValueOrDefault(this._outlineWidth,e,x$e),t};jT.prototype.equals=function(e){return this===e||e instanceof jT&&z.equals(this._color,e._color)&&z.equals(this._outlineColor,e._outlineColor)&&z.equals(this._outlineWidth,e._outlineWidth)};var V0=jT;var mri=y(C(),1);function Cg(e,t){this._value=void 0,this._definitionChanged=new Ce,this._eventHelper=new Lr,this._referenceFrame=t??eo.FIXED,this.setValue(e)}Object.defineProperties(Cg.prototype,{isConstant:{get:function(){let e=this._value;if(!l(e))return!0;let t=e.length;for(let n=0;n<t;n++)if(!z.isConstant(e[n]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var _$e=new j;Cg.prototype.getValue=function(e,t){return l(e)||(e=j.now(_$e)),this.getValueInReferenceFrame(e,eo.FIXED,t)};Cg.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._value;if(!l(i))return;let o=i.length;l(n)||(n=new Array(o));let r=0,s=0;for(;r<o;){let c=i[r].getValueInReferenceFrame(e,t,n[r]);l(c)&&(n[s]=c,s++),r++}return n.length=s,n};Cg.prototype.setValue=function(e){let t=this._eventHelper;if(t.removeAll(),l(e)){this._value=e.slice();let n=e.length;for(let i=0;i<n;i++){let o=e[i];l(o)&&t.add(o.definitionChanged,Cg.prototype._raiseDefinitionChanged,this)}}else this._value=void 0;this._definitionChanged.raiseEvent(this)};Cg.prototype.equals=function(e){return this===e||e instanceof Cg&&this._referenceFrame===e._referenceFrame&&z.arrayEquals(this._value,e._value)};Cg.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var xg=Cg;var yri=y(C(),1);function G0(e){this._value=void 0,this._definitionChanged=new Ce,this._eventHelper=new Lr,this.setValue(e)}Object.defineProperties(G0.prototype,{isConstant:{get:function(){let e=this._value;if(!l(e))return!0;let t=e.length;for(let n=0;n<t;n++)if(!z.isConstant(e[n]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}}});var E$e=new j;G0.prototype.getValue=function(e,t){l(e)||(e=j.now(E$e));let n=this._value;if(!l(n))return;let i=n.length;l(t)||(t=new Array(i));let o=0,r=0;for(;o<i;){let a=this._value[o].getValue(e,t[o]);l(a)&&(t[r]=a,r++),o++}return t.length=r,t};G0.prototype.setValue=function(e){let t=this._eventHelper;if(t.removeAll(),l(e)){this._value=e.slice();let n=e.length;for(let i=0;i<n;i++){let o=e[i];l(o)&&t.add(o.definitionChanged,G0.prototype._raiseDefinitionChanged,this)}}else this._value=void 0;this._definitionChanged.raiseEvent(this)};G0.prototype.equals=function(e){return this===e||e instanceof G0&&z.arrayEquals(this._value,e._value)};G0.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var qT=G0;var Tri=y(C(),1);function Qx(e){let t=e._targetProperty;if(!l(t)){let n=e._targetEntity;if(!l(n)){if(n=e._targetCollection.getById(e._targetId),!l(n)){e._targetEntity=e._targetProperty=void 0;return}n.definitionChanged.addEventListener(au.prototype._onTargetEntityDefinitionChanged,e),e._targetEntity=n}let i=e._targetPropertyNames;t=e._targetEntity;for(let o=0,r=i.length;o<r&&l(t);++o)t=t[i[o]];e._targetProperty=t}return t}function au(e,t,n){this._targetCollection=e,this._targetId=t,this._targetPropertyNames=n,this._targetProperty=void 0,this._targetEntity=void 0,this._definitionChanged=new Ce,e.collectionChanged.addEventListener(au.prototype._onCollectionChanged,this)}Object.defineProperties(au.prototype,{isConstant:{get:function(){return z.isConstant(Qx(this))}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){let e=Qx(this);return l(e)?e.referenceFrame:void 0}},targetId:{get:function(){return this._targetId}},targetCollection:{get:function(){return this._targetCollection}},targetPropertyNames:{get:function(){return this._targetPropertyNames}},resolvedProperty:{get:function(){return Qx(this)}}});au.fromString=function(e,t){let n,i=[],o=!0,r=!1,s="";for(let a=0;a<t.length;++a){let c=t.charAt(a);r?(s+=c,r=!1):c==="\\"?r=!0:o&&c==="#"?(n=s,o=!1,s=""):!o&&c==="."?(i.push(s),s=""):s+=c}return i.push(s),new au(e,n,i)};var T$e=new j;au.prototype.getValue=function(e,t){let n=Qx(this);return l(e)||(e=j.now(T$e)),l(n)?n.getValue(e,t):void 0};au.prototype.getValueInReferenceFrame=function(e,t,n){let i=Qx(this);return l(i)?i.getValueInReferenceFrame(e,t,n):void 0};au.prototype.getType=function(e){let t=Qx(this);return l(t)?t.getType(e):void 0};au.prototype.equals=function(e){if(this===e)return!0;let t=this._targetPropertyNames,n=e._targetPropertyNames;if(this._targetCollection!==e._targetCollection||this._targetId!==e._targetId||t.length!==n.length)return!1;let i=this._targetPropertyNames.length;for(let o=0;o<i;o++)if(t[o]!==n[o])return!1;return!0};au.prototype._onTargetEntityDefinitionChanged=function(e,t,n,i){l(this._targetProperty)&&this._targetPropertyNames[0]===t&&(this._targetProperty=void 0,this._definitionChanged.raiseEvent(this))};au.prototype._onCollectionChanged=function(e,t,n){let i=this._targetEntity;l(i)&&n.indexOf(i)!==-1?(i.definitionChanged.removeEventListener(au.prototype._onTargetEntityDefinitionChanged,this),this._targetEntity=this._targetProperty=void 0):l(i)||(i=Qx(this),l(i)&&this._definitionChanged.raiseEvent(this))};var Ig=au;var Vri=y(C(),1);var S$e={packedLength:1,pack:function(e,t,n){return n=n??0,t[n]=e,t},unpack:function(e,t,n){return t=t??0,e[t]},convertPackedArrayForInterpolation:function(e,t,n,i){l(i)||(i=[]),t=t??0,n=n??e.length;let o;for(let r=0,s=n-t+1;r<s;r++){let a=e[t+r];r===0||Math.abs(o-a)<Math.PI?i[r]=a:i[r]=a-Z.TWO_PI,o=a}},unpackInterpolationResult:function(e,t,n,i,o){return o=e[0],o<0?o+Z.TWO_PI:o}},_m=S$e;var Hri=y(C(),1);var Pri=y(C(),1);var xfe={packedLength:1,pack:function(e,t,n){n=n??0,t[n]=e},unpack:function(e,t,n){return t=t??0,e[t]}};function Ife(e,t,n){let i,o=e.length,r=n.length,s=o+r;if(e.length=s,o!==t){let a=o-1;for(i=s-1;i>=t;i--)e[i]=e[a--]}for(i=0;i<r;i++)e[t++]=n[i]}function _fe(e,t){return e instanceof j?e:typeof e=="string"?j.fromIso8601(e):j.addSeconds(t,e,new j)}var f4=[],p4=[];function g5(e,t,n,i,o){let r=0,s,a,c,d,u,h;for(;r<i.length;){u=_fe(i[r],e),c=Yo(t,u,j.compare);let p=0,g=0;if(c<0){for(c=~c,d=c*o,a=void 0,h=t[c];r<i.length&&(u=_fe(i[r],e),!(l(a)&&j.compare(a,u)>=0||l(h)&&j.compare(u,h)>=0));){for(f4[p++]=u,r=r+1,s=0;s<o;s++)p4[g++]=i[r],r=r+1;a=u}p>0&&(p4.length=g,Ife(n,d,p4),f4.length=p,Ife(t,c,f4))}else{for(s=0;s<o;s++)r++,n[c*o+s]=i[r];r++}}}function Em(e,t){let n=e;n===Number&&(n=xfe);let i=n.packedLength,o=n.packedInterpolationLength??i,r=0,s;if(l(t)){let a=t.length;s=new Array(a);for(let c=0;c<a;c++){let d=t[c];d===Number&&(d=xfe);let u=d.packedLength;i+=u,o+=d.packedInterpolationLength??u,s[c]=d}r=a}this._type=e,this._innerType=n,this._interpolationDegree=1,this._interpolationAlgorithm=Nx,this._numberOfPoints=0,this._times=[],this._values=[],this._xTable=[],this._yTable=[],this._packedLength=i,this._packedInterpolationLength=o,this._updateTableLength=!0,this._interpolationResult=new Array(o),this._definitionChanged=new Ce,this._derivativeTypes=t,this._innerDerivativeTypes=s,this._inputOrder=r,this._forwardExtrapolationType=su.NONE,this._forwardExtrapolationDuration=0,this._backwardExtrapolationType=su.NONE,this._backwardExtrapolationDuration=0}Object.defineProperties(Em.prototype,{isConstant:{get:function(){return this._values.length===0}},definitionChanged:{get:function(){return this._definitionChanged}},type:{get:function(){return this._type}},derivativeTypes:{get:function(){return this._derivativeTypes}},interpolationDegree:{get:function(){return this._interpolationDegree}},interpolationAlgorithm:{get:function(){return this._interpolationAlgorithm}},forwardExtrapolationType:{get:function(){return this._forwardExtrapolationType},set:function(e){this._forwardExtrapolationType!==e&&(this._forwardExtrapolationType=e,this._definitionChanged.raiseEvent(this))}},forwardExtrapolationDuration:{get:function(){return this._forwardExtrapolationDuration},set:function(e){this._forwardExtrapolationDuration!==e&&(this._forwardExtrapolationDuration=e,this._definitionChanged.raiseEvent(this))}},backwardExtrapolationType:{get:function(){return this._backwardExtrapolationType},set:function(e){this._backwardExtrapolationType!==e&&(this._backwardExtrapolationType=e,this._definitionChanged.raiseEvent(this))}},backwardExtrapolationDuration:{get:function(){return this._backwardExtrapolationDuration},set:function(e){this._backwardExtrapolationDuration!==e&&(this._backwardExtrapolationDuration=e,this._definitionChanged.raiseEvent(this))}}});var L$e=new j;Em.prototype.getValue=function(e,t){l(e)||(e=j.now(L$e));let n=this._times,i=n.length;if(i===0)return;let o,r=this._innerType,s=this._values,a=Yo(n,e,j.compare);if(a<0){if(a=~a,a===0){let S=n[a];if(o=this._backwardExtrapolationDuration,this._backwardExtrapolationType===su.NONE||o!==0&&j.secondsDifference(S,e)>o)return;if(this._backwardExtrapolationType===su.HOLD)return r.unpack(s,0,t)}if(a>=i){a=i-1;let S=n[a];if(o=this._forwardExtrapolationDuration,this._forwardExtrapolationType===su.NONE||o!==0&&j.secondsDifference(e,S)>o)return;if(this._forwardExtrapolationType===su.HOLD)return a=i-1,r.unpack(s,a*r.packedLength,t)}let c=this._xTable,d=this._yTable,u=this._interpolationAlgorithm,h=this._packedInterpolationLength,p=this._inputOrder;if(this._updateTableLength){this._updateTableLength=!1;let S=Math.min(u.getRequiredDataPoints(this._interpolationDegree,p),i);S!==this._numberOfPoints&&(this._numberOfPoints=S,c.length=S,d.length=S*h)}let g=this._numberOfPoints-1;if(g<1)return;let f=0,b=i-1;if(b-f+1>=g+1){let S=a-(g/2|0)-1;S<f&&(S=f);let R=S+g;R>b&&(R=b,S=R-g,S<f&&(S=f)),f=S,b=R}let I=b-f+1;for(let S=0;S<I;++S)c[S]=j.secondsDifference(n[f+S],n[b]);if(l(r.convertPackedArrayForInterpolation))r.convertPackedArrayForInterpolation(s,f,b,d);else{let S=0,R=this._packedLength,G=f*R,B=(b+1)*R;for(;G<B;)d[S]=s[G],G++,S++}let _=j.secondsDifference(e,n[b]),E;if(p===0||!l(u.interpolate))E=u.interpolateOrderZero(_,c,d,h,this._interpolationResult);else{let S=Math.floor(h/(p+1));E=u.interpolate(_,c,d,S,p,p,this._interpolationResult)}return l(r.unpackInterpolationResult)?r.unpackInterpolationResult(E,s,f,b,t):r.unpack(E,0,t)}return r.unpack(s,a*this._packedLength,t)};Em.prototype.setInterpolationOptions=function(e){if(!l(e))return;let t=!1,n=e.interpolationAlgorithm,i=e.interpolationDegree;l(n)&&this._interpolationAlgorithm!==n&&(this._interpolationAlgorithm=n,t=!0),l(i)&&this._interpolationDegree!==i&&(this._interpolationDegree=i,t=!0),t&&(this._updateTableLength=!0,this._definitionChanged.raiseEvent(this))};Em.prototype.addSample=function(e,t,n){let i=this._innerDerivativeTypes,o=l(i),r=this._innerType,s=[];if(s.push(e),r.pack(t,s,s.length),o){let a=i.length;for(let c=0;c<a;c++)i[c].pack(n[c],s,s.length)}g5(void 0,this._times,this._values,s,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};Em.prototype.addSamples=function(e,t,n){let i=this._innerDerivativeTypes,o=l(i),r=this._innerType,s=e.length,a=[];for(let c=0;c<s;c++)if(a.push(e[c]),r.pack(t[c],a,a.length),o){let d=n[c],u=i.length;for(let h=0;h<u;h++)i[h].pack(d[h],a,a.length)}g5(void 0,this._times,this._values,a,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};Em.prototype.getSample=function(e){let t=this._times,n=t.length;if(l(n))return e<0&&(e+=n),t[e]};Em.prototype.addSamplesPackedArray=function(e,t){g5(t,this._times,this._values,e,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};Em.prototype.removeSample=function(e){let t=Yo(this._times,e,j.compare);return t<0?!1:(Efe(this,t,1),!0)};function Efe(e,t,n){let i=e._packedLength;e._times.splice(t,n),e._values.splice(t*i,n*i),e._updateTableLength=!0,e._definitionChanged.raiseEvent(e)}Em.prototype.removeSamples=function(e){let t=this._times,n=Yo(t,e.start,j.compare);n<0?n=~n:e.isStartIncluded||++n;let i=Yo(t,e.stop,j.compare);i<0?i=~i:e.isStopIncluded&&++i,Efe(this,n,i-n)};Em.prototype.equals=function(e){if(this===e)return!0;if(!l(e)||this._type!==e._type||this._interpolationDegree!==e._interpolationDegree||this._interpolationAlgorithm!==e._interpolationAlgorithm)return!1;let t=this._derivativeTypes,n=l(t),i=e._derivativeTypes,o=l(i);if(n!==o)return!1;let r,s;if(n){if(s=t.length,s!==i.length)return!1;for(r=0;r<s;r++)if(t[r]!==i[r])return!1}let a=this._times,c=e._times;if(s=a.length,s!==c.length)return!1;for(r=0;r<s;r++)if(!j.equals(a[r],c[r]))return!1;let d=this._values,u=e._values;for(s=d.length,r=0;r<s;r++)if(d[r]!==u[r])return!1;return!0};Em._mergeNewSamples=g5;var cu=Em;function Tm(e,t){t=t??0;let n;if(t>0){n=new Array(t);for(let i=0;i<t;i++)n[i]=m}this._numberOfDerivatives=t,this._property=new cu(m,n),this._definitionChanged=new Ce,this._referenceFrame=e??eo.FIXED,this._property._definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this)},this)}Object.defineProperties(Tm.prototype,{isConstant:{get:function(){return this._property.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}},interpolationDegree:{get:function(){return this._property.interpolationDegree}},interpolationAlgorithm:{get:function(){return this._property.interpolationAlgorithm}},numberOfDerivatives:{get:function(){return this._numberOfDerivatives}},forwardExtrapolationType:{get:function(){return this._property.forwardExtrapolationType},set:function(e){this._property.forwardExtrapolationType=e}},forwardExtrapolationDuration:{get:function(){return this._property.forwardExtrapolationDuration},set:function(e){this._property.forwardExtrapolationDuration=e}},backwardExtrapolationType:{get:function(){return this._property.backwardExtrapolationType},set:function(e){this._property.backwardExtrapolationType=e}},backwardExtrapolationDuration:{get:function(){return this._property.backwardExtrapolationDuration},set:function(e){this._property.backwardExtrapolationDuration=e}}});var R$e=new j;Tm.prototype.getValue=function(e,t){return l(e)||(e=j.now(R$e)),this.getValueInReferenceFrame(e,eo.FIXED,t)};Tm.prototype.getValueInReferenceFrame=function(e,t,n){if(n=this._property.getValue(e,n),l(n))return lh.convertToReferenceFrame(e,n,this._referenceFrame,t,n)};Tm.prototype.setInterpolationOptions=function(e){this._property.setInterpolationOptions(e)};Tm.prototype.addSample=function(e,t,n){let i=this._numberOfDerivatives;this._property.addSample(e,t,n)};Tm.prototype.addSamples=function(e,t,n){this._property.addSamples(e,t,n)};Tm.prototype.addSamplesPackedArray=function(e,t){this._property.addSamplesPackedArray(e,t)};Tm.prototype.removeSample=function(e){return this._property.removeSample(e)};Tm.prototype.removeSamples=function(e){this._property.removeSamples(e)};Tm.prototype.equals=function(e){return this===e||e instanceof Tm&&z.equals(this._property,e._property)&&this._referenceFrame===e._referenceFrame};var Oa=Tm;var rsi=y(C(),1);var Kri=y(C(),1),V$e={HORIZONTAL:0,VERTICAL:1},Hh=Object.freeze(V$e);var G$e=Hh.HORIZONTAL,Z$e=U.WHITE,B$e=U.BLACK,w$e=0,X$e=1;function $T(e){e=e??Y.EMPTY_OBJECT,this._definitionChanged=new Ce,this._orientation=void 0,this._orientationSubscription=void 0,this._evenColor=void 0,this._evenColorSubscription=void 0,this._oddColor=void 0,this._oddColorSubscription=void 0,this._offset=void 0,this._offsetSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.orientation=e.orientation,this.evenColor=e.evenColor,this.oddColor=e.oddColor,this.offset=e.offset,this.repeat=e.repeat}Object.defineProperties($T.prototype,{isConstant:{get:function(){return z.isConstant(this._orientation)&&z.isConstant(this._evenColor)&&z.isConstant(this._oddColor)&&z.isConstant(this._offset)&&z.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},orientation:fe("orientation"),evenColor:fe("evenColor"),oddColor:fe("oddColor"),offset:fe("offset"),repeat:fe("repeat")});$T.prototype.getType=function(e){return"Stripe"};var W$e=new j;$T.prototype.getValue=function(e,t){return l(e)||(e=j.now(W$e)),l(t)||(t={}),t.horizontal=z.getValueOrDefault(this._orientation,e,G$e)===Hh.HORIZONTAL,t.evenColor=z.getValueOrClonedDefault(this._evenColor,e,Z$e,t.evenColor),t.oddColor=z.getValueOrClonedDefault(this._oddColor,e,B$e,t.oddColor),t.offset=z.getValueOrDefault(this._offset,e,w$e),t.repeat=z.getValueOrDefault(this._repeat,e,X$e),t};$T.prototype.equals=function(e){return this===e||e instanceof $T&&z.equals(this._orientation,e._orientation)&&z.equals(this._evenColor,e._evenColor)&&z.equals(this._oddColor,e._oddColor)&&z.equals(this._offset,e._offset)&&z.equals(this._repeat,e._repeat)};var eS=$T;var fsi=y(C(),1);function Z0(e){this._definitionChanged=new Ce,this._intervals=new as,this._intervals.changedEvent.addEventListener(Z0.prototype._intervalsChanged,this),this._referenceFrame=e??eo.FIXED}Object.defineProperties(Z0.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}},referenceFrame:{get:function(){return this._referenceFrame}}});var F$e=new j;Z0.prototype.getValue=function(e,t){return l(e)||(e=j.now(F$e)),this.getValueInReferenceFrame(e,eo.FIXED,t)};Z0.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._intervals.findDataForIntervalContainingDate(e);if(l(i))return lh.convertToReferenceFrame(e,i,this._referenceFrame,t,n)};Z0.prototype.equals=function(e){return this===e||e instanceof Z0&&this._intervals.equals(e._intervals,z.equals)&&this._referenceFrame===e._referenceFrame};Z0.prototype._intervalsChanged=function(){this._definitionChanged.raiseEvent(this)};var _g=Z0;var xsi=y(C(),1);function Ux(){this._definitionChanged=new Ce,this._intervals=new as,this._intervals.changedEvent.addEventListener(Ux.prototype._intervalsChanged,this)}Object.defineProperties(Ux.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}}});var P$e=new j;Ux.prototype.getValue=function(e,t){l(e)||(e=j.now(P$e));let n=this._intervals.findDataForIntervalContainingDate(e);return l(n)&&typeof n.clone=="function"?n.clone(t):n};Ux.prototype.equals=function(e){return this===e||e instanceof Ux&&this._intervals.equals(e._intervals,z.equals)};Ux.prototype._intervalsChanged=function(){this._definitionChanged.raiseEvent(this)};var Eg=Ux;var Nsi=y(C(),1);var Rsi=y(C(),1);function tS(e,t){this._position=void 0,this._subscription=void 0,this._definitionChanged=new Ce,this._normalize=t??!0,this.position=e}Object.defineProperties(tS.prototype,{isConstant:{get:function(){return z.isConstant(this._position)}},definitionChanged:{get:function(){return this._definitionChanged}},position:{get:function(){return this._position},set:function(e){let t=this._position;t!==e&&(l(t)&&this._subscription(),this._position=e,l(e)&&(this._subscription=e._definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this)},this)),this._definitionChanged.raiseEvent(this))}},normalize:{get:function(){return this._normalize},set:function(e){this._normalize!==e&&(this._normalize=e,this._definitionChanged.raiseEvent(this))}}});var M$e=new m,Tfe=new m,Sfe=new j,v$e=new j,A4=1/60;tS.prototype.getValue=function(e,t){return this._getValue(e,t)};tS.prototype._getValue=function(e,t,n){l(e)||(e=j.now(v$e)),l(t)||(t=new m);let i=this._position;if(z.isConstant(i))return this._normalize?void 0:m.clone(m.ZERO,t);let o=i.getValue(e,M$e),r=i.getValue(j.addSeconds(e,A4,Sfe),Tfe);if(!l(o)||!l(r)&&(r=o,o=i.getValue(j.addSeconds(e,-A4,Sfe),Tfe),!l(o)))return;if(m.equals(o,r))return this._normalize?void 0:m.clone(m.ZERO,t);l(n)&&o.clone(n);let s=m.subtract(r,o,t);return this._normalize?m.normalize(s,t):m.divideByScalar(s,A4,t)};tS.prototype.equals=function(e){return this===e||e instanceof tS&&z.equals(this._position,e._position)};var Tg=tS;function yW(e,t){this._velocityVectorProperty=new Tg(e,!0),this._subscription=void 0,this._ellipsoid=void 0,this._definitionChanged=new Ce,this.ellipsoid=t??ie.default;let n=this;this._velocityVectorProperty.definitionChanged.addEventListener(function(){n._definitionChanged.raiseEvent(n)})}Object.defineProperties(yW.prototype,{isConstant:{get:function(){return z.isConstant(this._velocityVectorProperty)}},definitionChanged:{get:function(){return this._definitionChanged}},position:{get:function(){return this._velocityVectorProperty.position},set:function(e){this._velocityVectorProperty.position=e}},ellipsoid:{get:function(){return this._ellipsoid},set:function(e){this._ellipsoid!==e&&(this._ellipsoid=e,this._definitionChanged.raiseEvent(this))}}});var Lfe=new m,N$e=new m,Rfe=new $,D$e=new j;yW.prototype.getValue=function(e,t){l(e)||(e=j.now(D$e));let n=this._velocityVectorProperty._getValue(e,N$e,Lfe);if(l(n))return Dt.rotationMatrixFromPositionVelocity(Lfe,n,this._ellipsoid,Rfe),Pe.fromRotationMatrix(Rfe,t)};yW.prototype.equals=function(e){return this===e||e instanceof yW&&z.equals(this._velocityVectorProperty,e._velocityVectorProperty)&&(this._ellipsoid===e._ellipsoid||this._ellipsoid.equals(e._ellipsoid))};var CW=yW;var Usi=y(C(),1);var Sg={COMPLETE:0,BELOW_ELLIPSOID_HORIZON:1,ABOVE_ELLIPSOID_HORIZON:2};Sg.validate=function(e){return e===Sg.COMPLETE||e===Sg.BELOW_ELLIPSOID_HORIZON||e===Sg.ABOVE_ELLIPSOID_HORIZON};Sg.toString=function(e){switch(e){case Sg.COMPLETE:return"COMPLETE";case Sg.BELOW_ELLIPSOID_HORIZON:return"BELOW_ELLIPSOID_HORIZON";case Sg.ABOVE_ELLIPSOID_HORIZON:return"ABOVE_ELLIPSOID_HORIZON";default:throw new Ae("SensorVolumePortionToDisplay value is not valid and cannot be converted to a String.")}};var nS=Sg;function B0(){}B0.packedLength=m.packedLength;B0.unpack=m.unpack;B0.pack=m.pack;var g4;function xW(e,t){return t[0]==="#"&&(t=g4+t),Ig.fromString(e,t)}function Vfe(e,t,n){if(l(n.reference))return xW(t,n.reference);if(l(n.velocityReference)){let i=xW(t,n.velocityReference);switch(e){case m:case B0:return new Tg(i,e===B0);case Pe:return new CW(i)}}throw new de(`${JSON.stringify(n)} is not valid CZML.`)}function Q$e(e,t){return new hh(function(n,i){return t(e.getValue(n,i))},e.isConstant)}var oo=new m,wl=new bW,Oc=new ge,kx=new wn,b5=new Pe;function U$e(e){let t=e.rgbaf;if(l(t))return t;let n=e.rgba;if(!l(n))return;let i=n.length;if(i===U.packedLength)return[U.byteToFloat(n[0]),U.byteToFloat(n[1]),U.byteToFloat(n[2]),U.byteToFloat(n[3])];t=new Array(i);for(let o=0;o<i;o+=5)t[o]=n[o],t[o+1]=U.byteToFloat(n[o+1]),t[o+2]=U.byteToFloat(n[o+2]),t[o+3]=U.byteToFloat(n[o+3]),t[o+4]=U.byteToFloat(n[o+4]);return t}function Gfe(e,t){let n=e.uri??e;return l(t)?t.getDerivedResource({url:n}):Ve.createIfNeeded(n)}function k$e(e){let t=e.wsen;if(l(t))return t;let n=e.wsenDegrees;if(!l(n))return;let i=n.length;if(i===le.packedLength)return[Z.toRadians(n[0]),Z.toRadians(n[1]),Z.toRadians(n[2]),Z.toRadians(n[3])];t=new Array(i);for(let o=0;o<i;o+=5)t[o]=n[o],t[o+1]=Z.toRadians(n[o+1]),t[o+2]=Z.toRadians(n[o+2]),t[o+3]=Z.toRadians(n[o+3]),t[o+4]=Z.toRadians(n[o+4]);return t}function Y$e(e){let t=e.length;if(wl.magnitude=1,t===2)return wl.clock=e[0],wl.cone=e[1],m.fromSpherical(wl,oo),[oo.x,oo.y,oo.z];let n=new Array(t/3*4);for(let i=0,o=0;i<t;i+=3,o+=4)n[o]=e[i],wl.clock=e[i+1],wl.cone=e[i+2],m.fromSpherical(wl,oo),n[o+1]=oo.x,n[o+2]=oo.y,n[o+3]=oo.z;return n}function O$e(e){let t=e.length;if(t===3)return wl.clock=e[0],wl.cone=e[1],wl.magnitude=e[2],m.fromSpherical(wl,oo),[oo.x,oo.y,oo.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],wl.clock=e[i+1],wl.cone=e[i+2],wl.magnitude=e[i+3],m.fromSpherical(wl,oo),n[i+1]=oo.x,n[i+2]=oo.y,n[i+3]=oo.z;return n}function H$e(e){let t=e.length;if(t===3)return Oc.longitude=e[0],Oc.latitude=e[1],Oc.height=e[2],ie.default.cartographicToCartesian(Oc,oo),[oo.x,oo.y,oo.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],Oc.longitude=e[i+1],Oc.latitude=e[i+2],Oc.height=e[i+3],ie.default.cartographicToCartesian(Oc,oo),n[i+1]=oo.x,n[i+2]=oo.y,n[i+3]=oo.z;return n}function z$e(e){let t=e.length;if(t===3)return Oc.longitude=Z.toRadians(e[0]),Oc.latitude=Z.toRadians(e[1]),Oc.height=e[2],ie.default.cartographicToCartesian(Oc,oo),[oo.x,oo.y,oo.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],Oc.longitude=Z.toRadians(e[i+1]),Oc.latitude=Z.toRadians(e[i+2]),Oc.height=e[i+3],ie.default.cartographicToCartesian(Oc,oo),n[i+1]=oo.x,n[i+2]=oo.y,n[i+3]=oo.z;return n}function b4(e){let t=e.cartesian;if(l(t))return t;let n=e.cartesianVelocity;if(l(n))return n;let i=e.unitCartesian;if(l(i))return i;let o=e.unitSpherical;if(l(o))return Y$e(o);let r=e.spherical;if(l(r))return O$e(r);let s=e.cartographicRadians;if(l(s))return H$e(s);let a=e.cartographicDegrees;if(l(a))return z$e(a);throw new de(`${JSON.stringify(e)} is not a valid CZML interval.`)}function Zfe(e,t){m.unpack(e,t,oo),m.normalize(oo,oo),m.pack(oo,e,t)}function K$e(e){let t=b4(e);if(t.length===3)return Zfe(t,0),t;for(let n=1;n<t.length;n+=4)Zfe(t,n);return t}function Bfe(e,t){Pe.unpack(e,t,b5),Pe.normalize(b5,b5),Pe.pack(b5,e,t)}function J$e(e){let t=e.unitQuaternion;if(l(t)){if(t.length===4)return Bfe(t,0),t;for(let n=1;n<t.length;n+=5)Bfe(t,n)}return t}function wfe(e){return typeof e=="boolean"?Boolean:typeof e=="number"?Number:typeof e=="string"?String:e.hasOwnProperty("array")?Array:e.hasOwnProperty("boolean")?Boolean:e.hasOwnProperty("boundingRectangle")?Ke:e.hasOwnProperty("cartesian2")?D:e.hasOwnProperty("cartesian")||e.hasOwnProperty("spherical")||e.hasOwnProperty("cartographicRadians")||e.hasOwnProperty("cartographicDegrees")?m:e.hasOwnProperty("unitCartesian")||e.hasOwnProperty("unitSpherical")?B0:e.hasOwnProperty("rgba")||e.hasOwnProperty("rgbaf")?U:e.hasOwnProperty("arcType")?dn:e.hasOwnProperty("classificationType")?$n:e.hasOwnProperty("colorBlendMode")?Fc:e.hasOwnProperty("cornerType")?Hi:e.hasOwnProperty("heightReference")?et:e.hasOwnProperty("horizontalOrigin")?wi:e.hasOwnProperty("date")?j:e.hasOwnProperty("labelStyle")?nr:e.hasOwnProperty("number")?Number:e.hasOwnProperty("nearFarScalar")?zt:e.hasOwnProperty("distanceDisplayCondition")?Qt:e.hasOwnProperty("object")||e.hasOwnProperty("value")?Object:e.hasOwnProperty("unitQuaternion")?Pe:e.hasOwnProperty("shadowMode")?Gn:e.hasOwnProperty("string")?String:e.hasOwnProperty("stripeOrientation")?Hh:e.hasOwnProperty("wsen")||e.hasOwnProperty("wsenDegrees")?le:e.hasOwnProperty("uri")?_W.default:e.hasOwnProperty("verticalOrigin")?kn:Object}function j$e(e,t,n){switch(e){case dn:return dn[t.arcType??t];case Array:return t.array;case Boolean:return t.boolean??t;case Ke:return t.boundingRectangle;case D:return t.cartesian2;case m:return b4(t);case B0:return K$e(t);case U:return U$e(t);case $n:return $n[t.classificationType??t];case Fc:return Fc[t.colorBlendMode??t];case Hi:return Hi[t.cornerType??t];case et:return et[t.heightReference??t];case wi:return wi[t.horizontalOrigin??t];case Image:return Gfe(t,n);case j:return j.fromIso8601(t.date??t);case nr:return nr[t.labelStyle??t];case Number:return t.number??t;case zt:return t.nearFarScalar;case Qt:return t.distanceDisplayCondition;case Object:return t.object??t.value??t;case Pe:return J$e(t);case _m:return t.number??t;case nS:return nS[t.portionToDisplay??t];case Gn:return Gn[t.shadowMode??t.shadows??t];case String:return t.string??t;case Hh:return Hh[t.stripeOrientation??t];case le:return k$e(t);case _W.default:return Gfe(t,n);case kn:return kn[t.verticalOrigin??t];default:throw new de(`Unknown CzmlDataSource interval type: ${e}`)}}var q$e={HERMITE:AW,LAGRANGE:gW,LINEAR:Nx};function y5(e,t){let n=e.interpolationAlgorithm,i=e.interpolationDegree;(l(n)||l(i))&&t.setInterpolationOptions({interpolationAlgorithm:q$e[n],interpolationDegree:i});let o=e.forwardExtrapolationType;l(o)&&(t.forwardExtrapolationType=su[o]);let r=e.forwardExtrapolationDuration;l(r)&&(t.forwardExtrapolationDuration=r);let s=e.backwardExtrapolationType;l(s)&&(t.backwardExtrapolationType=su[s]);let a=e.backwardExtrapolationDuration;l(a)&&(t.backwardExtrapolationDuration=a)}var Xfe={iso8601:void 0};function Rr(e){if(l(e))return Xfe.iso8601=e,wn.fromIso8601(Xfe)}function y4(e){let t=ze.MAXIMUM_INTERVAL.clone();return t.data=e,t}function Wfe(e){let t=new Uc;return t.intervals.addInterval(y4(e)),t}function Ffe(e){let t=new ka(e.referenceFrame);return t.intervals.addInterval(y4(e)),t}function C5(e,t,n,i,o,r,s){let a=Rr(i.interval);l(o)&&(l(a)?a=wn.intersect(a,o,kx):a=o);let c,d,u,h=!l(i.reference)&&!l(i.velocityReference),p=l(a)&&!a.equals(ze.MAXIMUM_INTERVAL);if(i.delete===!0){if(!p){t[n]=void 0;return}return Hfe(t[n],a)}let g=!1;if(h){if(d=j$e(e,i,r),!l(d))return;c=e.packedLength??1,u=d.length??1,g=!l(i.array)&&typeof d!="string"&&u>c&&e!==Object}let f=typeof e.unpack=="function"&&e!==_m;if(!g&&!p){h?t[n]=new di(f?e.unpack(d,0):d):t[n]=Vfe(e,s,i);return}let b=t[n],x,I=i.epoch;if(l(I)&&(x=j.fromIso8601(I)),g&&!p){b instanceof cu||(t[n]=b=new cu(e)),b.addSamplesPackedArray(d,x),y5(i,b);return}let _;if(!g&&p){a=a.clone(),h?a.data=f?e.unpack(d,0):d:a.data=Vfe(e,s,i),l(b)||(t[n]=b=h?new Eg:new Uc),h&&b instanceof Eg?b.intervals.addInterval(a):b instanceof Uc?(h&&(a.data=new di(a.data)),b.intervals.addInterval(a)):(t[n]=b=Wfe(b),h&&(a.data=new di(a.data)),b.intervals.addInterval(a));return}l(b)||(t[n]=b=new Uc),b instanceof Uc||(t[n]=b=Wfe(b));let E=b.intervals;_=E.findInterval(a),(!l(_)||!(_.data instanceof cu))&&(_=a.clone(),_.data=new cu(e),E.addInterval(_)),_.data.addSamplesPackedArray(d,x),y5(i,_.data)}function Hfe(e,t){if(e instanceof cu){e.removeSamples(t);return}else if(e instanceof Eg){e.intervals.removeInterval(t);return}else if(e instanceof Uc){let n=e.intervals;for(let i=0;i<n.length;++i){let o=wn.intersect(n.get(i),t,kx);o.isEmpty||Hfe(o.data,t)}n.removeInterval(t);return}}function Ie(e,t,n,i,o,r,s){if(l(i))if(Array.isArray(i))for(let a=0,c=i.length;a<c;++a)C5(e,t,n,i[a],o,r,s);else C5(e,t,n,i,o,r,s)}function Pfe(e,t,n,i,o,r){let s=Rr(n.interval);l(i)&&(l(s)?s=wn.intersect(s,i,kx):s=i);let a=l(n.cartesianVelocity)?1:0,c=m.packedLength*(a+1),d,u,h=!l(n.reference),p=l(s)&&!s.equals(ze.MAXIMUM_INTERVAL);if(n.delete===!0){if(!p){e[t]=void 0;return}return zfe(e[t],s)}let g,f=!1;if(h&&(l(n.referenceFrame)&&(g=eo[n.referenceFrame]),g=g??eo.FIXED,d=b4(n),u=d.length??1,f=u>c),!f&&!p){h?e[t]=new dl(m.unpack(d),g):e[t]=xW(r,n.reference);return}let b=e[t],x,I=n.epoch;if(l(I)&&(x=j.fromIso8601(I)),f&&!p){(!(b instanceof Oa)||l(g)&&b.referenceFrame!==g)&&(e[t]=b=new Oa(g,a)),b.addSamplesPackedArray(d,x),y5(n,b);return}let _;if(!f&&p){s=s.clone(),h?s.data=m.unpack(d):s.data=xW(r,n.reference),l(b)||(h?b=new _g(g):b=new ka(g),e[t]=b),h&&b instanceof _g&&l(g)&&b.referenceFrame===g?b.intervals.addInterval(s):b instanceof ka?(h&&(s.data=new dl(s.data,g)),b.intervals.addInterval(s)):(e[t]=b=Ffe(b),h&&(s.data=new dl(s.data,g)),b.intervals.addInterval(s));return}l(b)?b instanceof ka||(e[t]=b=Ffe(b)):e[t]=b=new ka(g);let E=b.intervals;_=E.findInterval(s),(!l(_)||!(_.data instanceof Oa)||l(g)&&_.data.referenceFrame!==g)&&(_=s.clone(),_.data=new Oa(g,a),E.addInterval(_)),_.data.addSamplesPackedArray(d,x),y5(n,_.data)}function zfe(e,t){if(e instanceof Oa){e.removeSamples(t);return}else if(e instanceof _g){e.intervals.removeInterval(t);return}else if(e instanceof ka){let n=e.intervals;for(let i=0;i<n.length;++i){let o=wn.intersect(n.get(i),t,kx);o.isEmpty||zfe(o.data,t)}n.removeInterval(t);return}}function Kfe(e,t,n,i,o,r){if(l(n))if(Array.isArray(n))for(let s=0,a=n.length;s<a;++s)Pfe(e,t,n[s],i,o,r);else Pfe(e,t,n,i,o,r)}function Mfe(e,t,n,i){l(n.references)?x5(e,t,n.references,n.interval,i,qT,Uc):(l(n.cartesian2)?n.array=D.unpackArray(n.cartesian2):l(n.cartesian)&&(n.array=D.unpackArray(n.cartesian)),l(n.array)&&Ie(Array,e,t,n,void 0,void 0,i))}function vfe(e,t,n,i,o,r){let s=Rr(n.interval);l(i)&&(l(s)?s=wn.intersect(s,i,kx):s=i);let a=e[t],c,d;if(l(s)){a instanceof XT||(a=new XT,e[t]=a);let h=a.intervals;d=h.findInterval({start:s.start,stop:s.stop}),l(d)?c=d.data:(d=s.clone(),h.addInterval(d))}else c=a;let u;l(n.solidColor)?(c instanceof qt||(c=new qt),u=n.solidColor,Ie(U,c,"color",u.color,void 0,void 0,r)):l(n.grid)?(c instanceof kT||(c=new kT),u=n.grid,Ie(U,c,"color",u.color,void 0,o,r),Ie(Number,c,"cellAlpha",u.cellAlpha,void 0,o,r),Ie(D,c,"lineCount",u.lineCount,void 0,o,r),Ie(D,c,"lineThickness",u.lineThickness,void 0,o,r),Ie(D,c,"lineOffset",u.lineOffset,void 0,o,r)):l(n.image)?(c instanceof Lb||(c=new Lb),u=n.image,Ie(Image,c,"image",u.image,void 0,o,r),Ie(D,c,"repeat",u.repeat,void 0,o,r),Ie(U,c,"color",u.color,void 0,o,r),Ie(Boolean,c,"transparent",u.transparent,void 0,o,r)):l(n.stripe)?(c instanceof eS||(c=new eS),u=n.stripe,Ie(Hh,c,"orientation",u.orientation,void 0,o,r),Ie(U,c,"evenColor",u.evenColor,void 0,o,r),Ie(U,c,"oddColor",u.oddColor,void 0,o,r),Ie(Number,c,"offset",u.offset,void 0,o,r),Ie(Number,c,"repeat",u.repeat,void 0,o,r)):l(n.polylineOutline)?(c instanceof V0||(c=new V0),u=n.polylineOutline,Ie(U,c,"color",u.color,void 0,o,r),Ie(U,c,"outlineColor",u.outlineColor,void 0,o,r),Ie(Number,c,"outlineWidth",u.outlineWidth,void 0,o,r)):l(n.polylineGlow)?(c instanceof JT||(c=new JT),u=n.polylineGlow,Ie(U,c,"color",u.color,void 0,o,r),Ie(Number,c,"glowPower",u.glowPower,void 0,o,r),Ie(Number,c,"taperPower",u.taperPower,void 0,o,r)):l(n.polylineArrow)?(c instanceof OT||(c=new OT),u=n.polylineArrow,Ie(U,c,"color",u.color,void 0,void 0,r)):l(n.polylineDash)?(c instanceof zT||(c=new zT),u=n.polylineDash,Ie(U,c,"color",u.color,void 0,void 0,r),Ie(U,c,"gapColor",u.gapColor,void 0,void 0,r),Ie(Number,c,"dashLength",u.dashLength,void 0,o,r),Ie(Number,c,"dashPattern",u.dashPattern,void 0,o,r)):l(n.checkerboard)&&(c instanceof BT||(c=new BT),u=n.checkerboard,Ie(U,c,"evenColor",u.evenColor,void 0,o,r),Ie(U,c,"oddColor",u.oddColor,void 0,o,r),Ie(D,c,"repeat",u.repeat,void 0,o,r)),l(d)?d.data=c:e[t]=c}function lu(e,t,n,i,o,r){if(l(n))if(Array.isArray(n))for(let s=0,a=n.length;s<a;++s)vfe(e,t,n[s],i,o,r);else vfe(e,t,n,i,o,r)}function $$e(e,t,n,i){let o=t.name;l(o)&&(e.name=t.name)}function eet(e,t,n,i){let o=t.description;l(o)&&Ie(String,e,"description",o,void 0,i,n)}function tet(e,t,n,i){let o=t.position;l(o)&&Kfe(e,"position",o,void 0,i,n)}function net(e,t,n,i){let o=t.viewFrom;l(o)&&Ie(m,e,"viewFrom",o,void 0,i,n)}function iet(e,t,n,i){let o=t.orientation;l(o)&&Ie(Pe,e,"orientation",o,void 0,i,n)}function oet(e,t,n,i){let o=t.properties;if(l(o)){l(e.properties)||(e.properties=new ml);for(let r in o)if(o.hasOwnProperty(r)){e.properties.hasProperty(r)||e.properties.addProperty(r);let s=o[r];if(Array.isArray(s))for(let a=0,c=s.length;a<c;++a)C5(wfe(s[a]),e.properties,r,s[a],void 0,i,n);else C5(wfe(s),e.properties,r,s,void 0,i,n)}}}function x5(e,t,n,i,o,r,s){let a=n.map(function(c){return xW(o,c)});if(l(i)){i=Rr(i);let c=e[t];if(!(c instanceof s)){let d=new s;d.intervals.addInterval(y4(c)),e[t]=c=d}i.data=new r(a),c.intervals.addInterval(i)}else e[t]=new r(a)}function Nfe(e,t,n,i){let o=n.references;l(o)?x5(e,t,o,n.interval,i,qT,Uc):Ie(Array,e,t,n,void 0,void 0,i)}function Dfe(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)Nfe(e,t,n[o],i);else Nfe(e,t,n,i)}function Qfe(e,t,n,i){let o=n.references;l(o)?x5(e,t,o,n.interval,i,xg,ka):(l(n.cartesian)?n.array=m.unpackArray(n.cartesian):l(n.cartographicRadians)?n.array=m.fromRadiansArrayHeights(n.cartographicRadians,ie.default):l(n.cartographicDegrees)&&(n.array=m.fromDegreesArrayHeights(n.cartographicDegrees,ie.default)),l(n.array)&&Ie(Array,e,t,n,void 0,void 0,i))}function EW(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)Qfe(e,t,n[o],i);else Qfe(e,t,n,i)}function ret(e){return m.unpackArray(e)}function set(e){return m.fromRadiansArrayHeights(e,ie.default)}function aet(e){return m.fromDegreesArrayHeights(e,ie.default)}function Ufe(e,t,n,i){let o=n.references;if(l(o)){let r=o.map(function(s){let a={};return x5(a,"positions",s,n.interval,i,xg,ka),a.positions});e[t]=new xg(r)}else l(n.cartesian)?n.array=n.cartesian.map(ret):l(n.cartographicRadians)?n.array=n.cartographicRadians.map(set):l(n.cartographicDegrees)&&(n.array=n.cartographicDegrees.map(aet)),l(n.array)&&Ie(Array,e,t,n,void 0,void 0,i)}function cet(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)Ufe(e,t,n[o],i);else Ufe(e,t,n,i)}function det(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;o++)Mfe(e,t,n[o],i);else Mfe(e,t,n,i)}function uet(e,t,n,i){let o=t.availability;if(!l(o))return;let r;if(Array.isArray(o))for(let s=0,a=o.length;s<a;++s)l(r)||(r=new as),r.addInterval(Rr(o[s]));else r=new as,r.addInterval(Rr(o));e.availability=r}function met(e,t,n,i,o){l(t)&&Ie(B0,e,"alignedAxis",t,n,i,o)}function het(e,t,n,i){let o=t.billboard;if(!l(o))return;let r=Rr(o.interval),s=e.billboard;l(s)||(e.billboard=s=new _c),Ie(Boolean,s,"show",o.show,r,i,n),Ie(Image,s,"image",o.image,r,i,n),Ie(Number,s,"scale",o.scale,r,i,n),Ie(D,s,"pixelOffset",o.pixelOffset,r,i,n),Ie(m,s,"eyeOffset",o.eyeOffset,r,i,n),Ie(wi,s,"horizontalOrigin",o.horizontalOrigin,r,i,n),Ie(kn,s,"verticalOrigin",o.verticalOrigin,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(U,s,"color",o.color,r,i,n),Ie(_m,s,"rotation",o.rotation,r,i,n),met(s,o.alignedAxis,r,i,n),Ie(Boolean,s,"sizeInMeters",o.sizeInMeters,r,i,n),Ie(Number,s,"width",o.width,r,i,n),Ie(Number,s,"height",o.height,r,i,n),Ie(zt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ie(zt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ie(zt,s,"pixelOffsetScaleByDistance",o.pixelOffsetScaleByDistance,r,i,n),Ie(Ke,s,"imageSubRegion",o.imageSubRegion,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ie(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function fet(e,t,n,i){let o=t.box;if(!l(o))return;let r=Rr(o.interval),s=e.box;l(s)||(e.box=s=new mC),Ie(Boolean,s,"show",o.show,r,i,n),Ie(m,s,"dimensions",o.dimensions,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(Boolean,s,"fill",o.fill,r,i,n),lu(s,"material",o.material,r,i,n),Ie(Boolean,s,"outline",o.outline,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function pet(e,t,n,i){let o=t.corridor;if(!l(o))return;let r=Rr(o.interval),s=e.corridor;l(s)||(e.corridor=s=new fC),Ie(Boolean,s,"show",o.show,r,i,n),EW(s,"positions",o.positions,n),Ie(Number,s,"width",o.width,r,i,n),Ie(Number,s,"height",o.height,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ie(et,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ie(Hi,s,"cornerType",o.cornerType,r,i,n),Ie(Number,s,"granularity",o.granularity,r,i,n),Ie(Boolean,s,"fill",o.fill,r,i,n),lu(s,"material",o.material,r,i,n),Ie(Boolean,s,"outline",o.outline,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ie($n,s,"classificationType",o.classificationType,r,i,n),Ie(Number,s,"zIndex",o.zIndex,r,i,n)}function Aet(e,t,n,i){let o=t.cylinder;if(!l(o))return;let r=Rr(o.interval),s=e.cylinder;l(s)||(e.cylinder=s=new pC),Ie(Boolean,s,"show",o.show,r,i,n),Ie(Number,s,"length",o.length,r,i,n),Ie(Number,s,"topRadius",o.topRadius,r,i,n),Ie(Number,s,"bottomRadius",o.bottomRadius,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(Boolean,s,"fill",o.fill,r,i,n),lu(s,"material",o.material,r,i,n),Ie(Boolean,s,"outline",o.outline,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(Number,s,"numberOfVerticalLines",o.numberOfVerticalLines,r,i,n),Ie(Number,s,"slices",o.slices,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function get(e,t){let n=e.version;if(l(n)&&typeof n=="string"){let r=n.split(".");if(r.length===2){if(r[0]!=="1")throw new de("Cesium only supports CZML version 1.");t._version=n}}if(!l(t._version))throw new de("CZML version information invalid. It is expected to be a property on the document object in the <Major>.<Minor> version format.");let i=t._documentPacket;l(e.name)&&(i.name=e.name);let o=e.clock;if(l(o)){let r=i.clock;l(r)?(r.interval=o.interval??r.interval,r.currentTime=o.currentTime??r.currentTime,r.range=o.range??r.range,r.step=o.step??r.step,r.multiplier=o.multiplier??r.multiplier):i.clock={interval:o.interval,currentTime:o.currentTime,range:o.range,step:o.step,multiplier:o.multiplier}}}function bet(e,t,n,i){let o=t.ellipse;if(!l(o))return;let r=Rr(o.interval),s=e.ellipse;l(s)||(e.ellipse=s=new AC),Ie(Boolean,s,"show",o.show,r,i,n),Ie(Number,s,"semiMajorAxis",o.semiMajorAxis,r,i,n),Ie(Number,s,"semiMinorAxis",o.semiMinorAxis,r,i,n),Ie(Number,s,"height",o.height,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ie(et,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ie(_m,s,"rotation",o.rotation,r,i,n),Ie(_m,s,"stRotation",o.stRotation,r,i,n),Ie(Number,s,"granularity",o.granularity,r,i,n),Ie(Boolean,s,"fill",o.fill,r,i,n),lu(s,"material",o.material,r,i,n),Ie(Boolean,s,"outline",o.outline,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(Number,s,"numberOfVerticalLines",o.numberOfVerticalLines,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ie($n,s,"classificationType",o.classificationType,r,i,n),Ie(Number,s,"zIndex",o.zIndex,r,i,n)}function yet(e,t,n,i){let o=t.ellipsoid;if(!l(o))return;let r=Rr(o.interval),s=e.ellipsoid;l(s)||(e.ellipsoid=s=new gC),Ie(Boolean,s,"show",o.show,r,i,n),Ie(m,s,"radii",o.radii,r,i,n),Ie(m,s,"innerRadii",o.innerRadii,r,i,n),Ie(Number,s,"minimumClock",o.minimumClock,r,i,n),Ie(Number,s,"maximumClock",o.maximumClock,r,i,n),Ie(Number,s,"minimumCone",o.minimumCone,r,i,n),Ie(Number,s,"maximumCone",o.maximumCone,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(Boolean,s,"fill",o.fill,r,i,n),lu(s,"material",o.material,r,i,n),Ie(Boolean,s,"outline",o.outline,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(Number,s,"stackPartitions",o.stackPartitions,r,i,n),Ie(Number,s,"slicePartitions",o.slicePartitions,r,i,n),Ie(Number,s,"subdivisions",o.subdivisions,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function Cet(e,t,n,i){let o=t.label;if(!l(o))return;let r=Rr(o.interval),s=e.label;l(s)||(e.label=s=new dh),Ie(Boolean,s,"show",o.show,r,i,n),Ie(String,s,"text",o.text,r,i,n),Ie(String,s,"font",o.font,r,i,n),Ie(nr,s,"style",o.style,r,i,n),Ie(Number,s,"scale",o.scale,r,i,n),Ie(Boolean,s,"showBackground",o.showBackground,r,i,n),Ie(U,s,"backgroundColor",o.backgroundColor,r,i,n),Ie(D,s,"backgroundPadding",o.backgroundPadding,r,i,n),Ie(D,s,"pixelOffset",o.pixelOffset,r,i,n),Ie(m,s,"eyeOffset",o.eyeOffset,r,i,n),Ie(wi,s,"horizontalOrigin",o.horizontalOrigin,r,i,n),Ie(kn,s,"verticalOrigin",o.verticalOrigin,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(U,s,"fillColor",o.fillColor,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(zt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ie(zt,s,"pixelOffsetScaleByDistance",o.pixelOffsetScaleByDistance,r,i,n),Ie(zt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ie(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function xet(e,t,n,i){let o=t.model;if(!l(o))return;let r=Rr(o.interval),s=e.model;l(s)||(e.model=s=new uA),Ie(Boolean,s,"show",o.show,r,i,n),Ie(_W.default,s,"uri",o.gltf,r,i,n),Ie(Number,s,"scale",o.scale,r,i,n),Ie(Number,s,"minimumPixelSize",o.minimumPixelSize,r,i,n),Ie(Number,s,"maximumScale",o.maximumScale,r,i,n),Ie(Boolean,s,"incrementallyLoadTextures",o.incrementallyLoadTextures,r,i,n),Ie(Boolean,s,"runAnimations",o.runAnimations,r,i,n),Ie(Boolean,s,"clampAnimations",o.clampAnimations,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(U,s,"silhouetteColor",o.silhouetteColor,r,i,n),Ie(Number,s,"silhouetteSize",o.silhouetteSize,r,i,n),Ie(U,s,"color",o.color,r,i,n),Ie(Fc,s,"colorBlendMode",o.colorBlendMode,r,i,n),Ie(Number,s,"colorBlendAmount",o.colorBlendAmount,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n);let a,c,d=o.nodeTransformations;if(l(d))if(Array.isArray(d))for(a=0,c=d.length;a<c;++a)kfe(s,d[a],r,i,n);else kfe(s,d,r,i,n);let u=o.articulations;if(l(u))if(Array.isArray(u))for(a=0,c=u.length;a<c;++a)Yfe(s,u[a],r,i,n);else Yfe(s,u,r,i,n)}function kfe(e,t,n,i,o){let r=Rr(t.interval);l(n)&&(l(r)?r=wn.intersect(r,n,kx):r=n);let s=e.nodeTransformations,a=Object.keys(t);for(let c=0,d=a.length;c<d;++c){let u=a[c];if(u==="interval")continue;let h=t[u];if(!l(h))continue;l(s)||(e.nodeTransformations=s=new ml),s.hasProperty(u)||s.addProperty(u);let p=s[u];l(p)||(s[u]=p=new bC),Ie(m,p,"translation",h.translation,r,i,o),Ie(Pe,p,"rotation",h.rotation,r,i,o),Ie(m,p,"scale",h.scale,r,i,o)}}function Yfe(e,t,n,i,o){let r=Rr(t.interval);l(n)&&(l(r)?r=wn.intersect(r,n,kx):r=n);let s=e.articulations,a=Object.keys(t);for(let c=0,d=a.length;c<d;++c){let u=a[c];if(u==="interval")continue;let h=t[u];l(h)&&(l(s)||(e.articulations=s=new ml),s.hasProperty(u)||s.addProperty(u),Ie(Number,s,u,h,r,i,o))}}function Iet(e,t,n,i){let o=t.path;if(!l(o))return;let r=Rr(o.interval),s=e.path;l(s)||(e.path=s=new mA),Ie(Boolean,s,"show",o.show,r,i,n),Ie(Number,s,"leadTime",o.leadTime,r,i,n),Ie(Number,s,"trailTime",o.trailTime,r,i,n),Ie(Number,s,"width",o.width,r,i,n),Ie(Number,s,"resolution",o.resolution,r,i,n),lu(s,"material",o.material,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function _et(e,t,n,i){let o=t.point;if(!l(o))return;let r=Rr(o.interval),s=e.point;l(s)||(e.point=s=new CC),Ie(Boolean,s,"show",o.show,r,i,n),Ie(Number,s,"pixelSize",o.pixelSize,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(U,s,"color",o.color,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(zt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ie(zt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ie(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function IW(e){this.polygon=e,this._definitionChanged=new Ce}Object.defineProperties(IW.prototype,{isConstant:{get:function(){let e=this.polygon._positions,t=this.polygon._holes;return(!l(e)||e.isConstant)&&(!l(t)||t.isConstant)}},definitionChanged:{get:function(){return this._definitionChanged}}});IW.prototype.getValue=function(e,t){let n;l(this.polygon._positions)&&(n=this.polygon._positions.getValue(e));let i;return l(this.polygon._holes)&&(i=this.polygon._holes.getValue(e),l(i)&&(i=i.map(function(o){return new lc(o)}))),l(t)?(t.positions=n,t.holes=i,t):new lc(n,i)};IW.prototype.equals=function(e){return this===e||e instanceof IW&&z.equals(this.polygon._positions,e.polygon._positions)&&z.equals(this.polygon._holes,e.polygon._holes)};function Eet(e,t,n,i){let o=t.polygon;if(!l(o))return;let r=Rr(o.interval),s=e.polygon;l(s)||(e.polygon=s=new uh),Ie(Boolean,s,"show",o.show,r,i,n),EW(s,"_positions",o.positions,n),cet(s,"_holes",o.holes,n),(l(s._positions)||l(s._holes))&&(s.hierarchy=new IW(s)),Ie(Number,s,"height",o.height,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ie(et,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ie(_m,s,"stRotation",o.stRotation,r,i,n),Ie(Number,s,"granularity",o.granularity,r,i,n),Ie(Boolean,s,"fill",o.fill,r,i,n),lu(s,"material",o.material,r,i,n),Ie(Boolean,s,"outline",o.outline,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(Boolean,s,"perPositionHeight",o.perPositionHeight,r,i,n),Ie(Boolean,s,"closeTop",o.closeTop,r,i,n),Ie(Boolean,s,"closeBottom",o.closeBottom,r,i,n),Ie(dn,s,"arcType",o.arcType,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ie($n,s,"classificationType",o.classificationType,r,i,n),Ie(Number,s,"zIndex",o.zIndex,r,i,n)}function Tet(e){return e?dn.GEODESIC:dn.NONE}function Let(e,t,n,i){let o=t.polyline;if(!l(o))return;let r=Rr(o.interval),s=e.polyline;if(l(s)||(e.polyline=s=new Zc),Ie(Boolean,s,"show",o.show,r,i,n),EW(s,"positions",o.positions,n),Ie(Number,s,"width",o.width,r,i,n),Ie(Number,s,"granularity",o.granularity,r,i,n),lu(s,"material",o.material,r,i,n),lu(s,"depthFailMaterial",o.depthFailMaterial,r,i,n),Ie(dn,s,"arcType",o.arcType,r,i,n),Ie(Boolean,s,"clampToGround",o.clampToGround,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ie($n,s,"classificationType",o.classificationType,r,i,n),Ie(Number,s,"zIndex",o.zIndex,r,i,n),l(o.followSurface)&&!l(o.arcType)){let a={};Ie(Boolean,a,"followSurface",o.followSurface,r,i,n),s.arcType=Q$e(a.followSurface,Tet)}}function Ret(e,t,n,i){let o=t.polylineVolume;if(!l(o))return;let r=Rr(o.interval),s=e.polylineVolume;l(s)||(e.polylineVolume=s=new xC),EW(s,"positions",o.positions,n),det(s,"shape",o.shape,n),Ie(Boolean,s,"show",o.show,r,i,n),Ie(Hi,s,"cornerType",o.cornerType,r,i,n),Ie(Boolean,s,"fill",o.fill,r,i,n),lu(s,"material",o.material,r,i,n),Ie(Boolean,s,"outline",o.outline,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(Number,s,"granularity",o.granularity,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function Vet(e,t,n,i){let o=t.rectangle;if(!l(o))return;let r=Rr(o.interval),s=e.rectangle;l(s)||(e.rectangle=s=new mh),Ie(Boolean,s,"show",o.show,r,i,n),Ie(le,s,"coordinates",o.coordinates,r,i,n),Ie(Number,s,"height",o.height,r,i,n),Ie(et,s,"heightReference",o.heightReference,r,i,n),Ie(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ie(et,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ie(_m,s,"rotation",o.rotation,r,i,n),Ie(_m,s,"stRotation",o.stRotation,r,i,n),Ie(Number,s,"granularity",o.granularity,r,i,n),Ie(Boolean,s,"fill",o.fill,r,i,n),lu(s,"material",o.material,r,i,n),Ie(Boolean,s,"outline",o.outline,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ie($n,s,"classificationType",o.classificationType,r,i,n),Ie(Number,s,"zIndex",o.zIndex,r,i,n)}function Get(e,t,n,i){let o=t.tileset;if(!l(o))return;let r=Rr(o.interval),s=e.tileset;l(s)||(e.tileset=s=new yC),Ie(Boolean,s,"show",o.show,r,i,n),Ie(_W.default,s,"uri",o.uri,r,i,n),Ie(Number,s,"maximumScreenSpaceError",o.maximumScreenSpaceError,r,i,n)}function Zet(e,t,n,i){let o=t.wall;if(!l(o))return;let r=Rr(o.interval),s=e.wall;l(s)||(e.wall=s=new hA),Ie(Boolean,s,"show",o.show,r,i,n),EW(s,"positions",o.positions,n),Dfe(s,"minimumHeights",o.minimumHeights,n),Dfe(s,"maximumHeights",o.maximumHeights,n),Ie(Number,s,"granularity",o.granularity,r,i,n),Ie(Boolean,s,"fill",o.fill,r,i,n),lu(s,"material",o.material,r,i,n),Ie(Boolean,s,"outline",o.outline,r,i,n),Ie(U,s,"outlineColor",o.outlineColor,r,i,n),Ie(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ie(Gn,s,"shadows",o.shadows,r,i,n),Ie(Qt,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function Ofe(e,t,n,i,o){let r=e.id;if(l(r)||(r=qn()),g4=r,!l(o._version)&&r!=="document")throw new de("The first CZML packet is required to be the document object.");if(e.delete===!0)t.removeById(r);else if(r==="document")get(e,o);else{let s=t.getOrCreateEntity(r),a=e.parent;l(a)&&(s.parent=t.getOrCreateEntity(a));for(let c=n.length-1;c>-1;c--)n[c](s,e,t,i)}g4=void 0}function Bet(e){let t,n=e._documentPacket.clock;if(!l(n)){if(!l(e._clock)){let o=e._entityCollection.computeAvailability();if(!o.start.equals(ze.MINIMUM_VALUE)){let r=o.start,s=o.stop,a=j.secondsDifference(s,r),c=Math.round(a/120);return t=new Oh,t.startTime=j.clone(r),t.stopTime=j.clone(s),t.clockRange=ls.LOOP_STOP,t.multiplier=c,t.currentTime=j.clone(r),t.clockStep=Ro.SYSTEM_CLOCK_MULTIPLIER,e._clock=t,!0}}return!1}l(e._clock)?t=e._clock.clone():(t=new Oh,t.startTime=ze.MINIMUM_VALUE.clone(),t.stopTime=ze.MAXIMUM_VALUE.clone(),t.currentTime=ze.MINIMUM_VALUE.clone(),t.clockRange=ls.LOOP_STOP,t.clockStep=Ro.SYSTEM_CLOCK_MULTIPLIER,t.multiplier=1);let i=Rr(n.interval);return l(i)&&(t.startTime=i.start,t.stopTime=i.stop),l(n.currentTime)&&(t.currentTime=j.fromIso8601(n.currentTime)),l(n.range)&&(t.clockRange=ls[n.range]??ls.LOOP_STOP),l(n.step)&&(t.clockStep=Ro[n.step]??Ro.SYSTEM_CLOCK_MULTIPLIER),l(n.multiplier)&&(t.multiplier=n.multiplier),t.equals(e._clock)?!1:(e._clock=t.clone(e._clock),!0)}function Jfe(e,t,n,i){n=n??Y.EMPTY_OBJECT;let o=t,r=n.sourceUri,s=n.credit;if(typeof s=="string"&&(s=new Gt(s)),e._credit=s,typeof t=="string"||t instanceof Ve){t=Ve.createIfNeeded(t),o=t.fetchJson(),r=r??t.clone();let a=e._resourceCredits,c=t.credits;if(l(c)){let d=c.length;for(let u=0;u<d;u++)a.push(c[u])}}return r=Ve.createIfNeeded(r),cs.setLoading(e,!0),Promise.resolve(o).then(function(a){return wet(e,a,r,i)}).catch(function(a){return cs.setLoading(e,!1),e._error.raiseEvent(e,a),console.log(a),Promise.reject(a)})}function wet(e,t,n,i){cs.setLoading(e,!0);let o=e._entityCollection;i&&(e._version=void 0,e._documentPacket=new jfe,o.removeAll()),Ms._processCzml(t,o,n,void 0,e);let r=Bet(e),s=e._documentPacket;return l(s.name)&&e._name!==s.name?(e._name=s.name,r=!0):!l(e._name)&&l(n)&&(e._name=yg(n.getUrlComponent()),r=!0),cs.setLoading(e,!1),r&&e._changed.raiseEvent(e),e}function jfe(){this.name=void 0,this.clock=void 0}function Ms(e){this._name=e,this._changed=new Ce,this._error=new Ce,this._isLoading=!1,this._loading=new Ce,this._clock=void 0,this._documentPacket=new jfe,this._version=void 0,this._entityCollection=new Ca(this),this._entityCluster=new ou,this._credit=void 0,this._resourceCredits=[]}Ms.load=function(e,t){return new Ms().load(e,t)};Object.defineProperties(Ms.prototype,{name:{get:function(){return this._name}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}}});Ms.updaters=[het,fet,pet,Aet,bet,yet,Cet,xet,$$e,eet,Iet,_et,Eet,Let,Ret,oet,Vet,tet,Get,net,Zet,iet,uet];Ms.registerUpdater=function(e){Ms.updaters.includes(e)||Ms.updaters.push(e)};Ms.unregisterUpdater=function(e){if(Ms.updaters.includes(e)){let t=Ms.updaters.indexOf(e);Ms.updaters.splice(t,1)}};Ms.prototype.process=function(e,t){return Jfe(this,e,t,!1)};Ms.prototype.load=function(e,t){return Jfe(this,e,t,!0)};Ms.prototype.update=function(e){return!0};Ms.processPacketData=Ie;Ms.processPositionPacketData=Kfe;Ms.processMaterialPacketData=lu;Ms._processCzml=function(e,t,n,i,o){if(i=i??Ms.updaters,Array.isArray(e))for(let r=0,s=e.length;r<s;++r)Ofe(e[r],t,i,n,o);else Ofe(e,t,i,n,o)};var TW=Ms;var wci=y(C(),1);function Xl(){this._dataSources=[],this._dataSourceAdded=new Ce,this._dataSourceRemoved=new Ce,this._dataSourceMoved=new Ce}Object.defineProperties(Xl.prototype,{length:{get:function(){return this._dataSources.length}},dataSourceAdded:{get:function(){return this._dataSourceAdded}},dataSourceRemoved:{get:function(){return this._dataSourceRemoved}},dataSourceMoved:{get:function(){return this._dataSourceMoved}}});Xl.prototype.add=function(e){let t=this,n=this._dataSources;return Promise.resolve(e).then(function(i){return n===t._dataSources&&(t._dataSources.push(i),t._dataSourceAdded.raiseEvent(t,i)),i})};Xl.prototype.remove=function(e,t){t=t??!1;let n=this._dataSources.indexOf(e);return n!==-1?(this._dataSources.splice(n,1),this._dataSourceRemoved.raiseEvent(this,e),t&&typeof e.destroy=="function"&&e.destroy(),!0):!1};Xl.prototype.removeAll=function(e){e=e??!1;let t=this._dataSources;for(let n=0,i=t.length;n<i;++n){let o=t[n];this._dataSourceRemoved.raiseEvent(this,o),e&&typeof o.destroy=="function"&&o.destroy()}this._dataSources=[]};Xl.prototype.contains=function(e){return this.indexOf(e)!==-1};Xl.prototype.indexOf=function(e){return this._dataSources.indexOf(e)};Xl.prototype.get=function(e){return this._dataSources[e]};Xl.prototype.getByName=function(e){return this._dataSources.filter(function(t){return t.name===e})};function I5(e,t){return e.indexOf(t)}function qfe(e,t,n){let i=e._dataSources,o=i.length-1;if(t=Z.clamp(t,0,o),n=Z.clamp(n,0,o),t===n)return;let r=i[t];i[t]=i[n],i[n]=r,e.dataSourceMoved.raiseEvent(r,n,t)}Xl.prototype.raise=function(e){let t=I5(this._dataSources,e);qfe(this,t,t+1)};Xl.prototype.lower=function(e){let t=I5(this._dataSources,e);qfe(this,t,t-1)};Xl.prototype.raiseToTop=function(e){let t=I5(this._dataSources,e);t!==this._dataSources.length-1&&(this._dataSources.splice(t,1),this._dataSources.push(e),this.dataSourceMoved.raiseEvent(e,this._dataSources.length-1,t))};Xl.prototype.lowerToBottom=function(e){let t=I5(this._dataSources,e);t!==0&&(this._dataSources.splice(t,1),this._dataSources.splice(0,0,e),this.dataSourceMoved.raiseEvent(e,0,t))};Xl.prototype.isDestroyed=function(){return!1};Xl.prototype.destroy=function(){return this.removeAll(!0),me(this)};var SW=Xl;var qCi=y(C(),1);var Yci=y(C(),1);var Nci=y(C(),1);function Ha(e){e=e??Y.EMPTY_OBJECT,this._primitives=[],this._guid=qn(),this._primitiveAdded=new Ce,this._primitiveRemoved=new Ce,this._zIndex=void 0,this.show=e.show??!0,this.destroyPrimitives=e.destroyPrimitives??!0,this._countReferences=e.countReferences??!1}Object.defineProperties(Ha.prototype,{length:{get:function(){return this._primitives.length}},primitiveAdded:{get:function(){return this._primitiveAdded}},primitiveRemoved:{get:function(){return this._primitiveRemoved}}});Ha.prototype.add=function(e,t){let n=l(t),i=e._external=e._external||{},o=i._composites=i._composites||{};return o[this._guid]={collection:this},n?this._primitives.splice(t,0,e):this._primitives.push(e),this._countReferences&&(l(i._referenceCount)?++i._referenceCount:i._referenceCount=1),this._primitiveAdded.raiseEvent(e),e};Ha.prototype.remove=function(e){if(this.contains(e)){let t=this._primitives.indexOf(e);if(t!==-1)return this._primitives.splice(t,1),delete e._external._composites[this._guid],this._countReferences&&e._external._referenceCount--,this.destroyPrimitives&&(!this._countReferences||e._external._referenceCount<=0)&&e.destroy(),this._primitiveRemoved.raiseEvent(e),!0}return!1};Ha.prototype.removeAndDestroy=function(e){let t=this.remove(e);return t&&!this.destroyPrimitives&&e.destroy(),t};Ha.prototype.removeAll=function(){let e=this._primitives,t=e.length;for(let n=0;n<t;++n){let i=e[n];delete i._external._composites[this._guid],this._countReferences&&i._external._referenceCount--,this.destroyPrimitives&&(!this._countReferences||i._external._referenceCount<=0)&&i.destroy(),this._primitiveRemoved.raiseEvent(i)}this._primitives=[]};Ha.prototype.contains=function(e){return!!(l(e)&&e._external&&e._external._composites&&e._external._composites[this._guid])};function _5(e,t){return e._primitives.indexOf(t)}Ha.prototype.raise=function(e){if(l(e)){let t=_5(this,e),n=this._primitives;if(t!==n.length-1){let i=n[t];n[t]=n[t+1],n[t+1]=i}}};Ha.prototype.raiseToTop=function(e){if(l(e)){let t=_5(this,e),n=this._primitives;t!==n.length-1&&(n.splice(t,1),n.push(e))}};Ha.prototype.lower=function(e){if(l(e)){let t=_5(this,e),n=this._primitives;if(t!==0){let i=n[t];n[t]=n[t-1],n[t-1]=i}}};Ha.prototype.lowerToBottom=function(e){if(l(e)){let t=_5(this,e),n=this._primitives;t!==0&&(n.splice(t,1),n.unshift(e))}};Ha.prototype.get=function(e){return this._primitives[e]};Ha.prototype.update=function(e){if(!this.show)return;let t=this._primitives;for(let n=0;n<t.length;++n)t[n].update(e)};Ha.prototype.prePassesUpdate=function(e){let t=this._primitives;for(let n=0;n<t.length;++n){let i=t[n];l(i.prePassesUpdate)&&i.prePassesUpdate(e)}};Ha.prototype.updateForPass=function(e,t){let n=this._primitives;for(let i=0;i<n.length;++i){let o=n[i];l(o.updateForPass)&&o.updateForPass(e,t)}};Ha.prototype.postPassesUpdate=function(e){let t=this._primitives;for(let n=0;n<t.length;++n){let i=t[n];l(i.postPassesUpdate)&&i.postPassesUpdate(e)}};Ha.prototype.isDestroyed=function(){return!1};Ha.prototype.destroy=function(){return this.removeAll(),me(this)};var Wl=Ha;function rp(){this._length=0,this._collections={},this._collectionsArray=[],this.show=!0}Object.defineProperties(rp.prototype,{length:{get:function(){return this._length}}});rp.prototype.add=function(e,t){t=t??0;let n=this._collections[t];if(!l(n)){n=new Wl({destroyPrimitives:!1}),n._zIndex=t,this._collections[t]=n;let i=this._collectionsArray,o=0;for(;o<i.length&&i[o]._zIndex<t;)o++;i.splice(o,0,n)}return n.add(e),this._length++,e._zIndex=t,e};rp.prototype.set=function(e,t){return t===e._zIndex||(this.remove(e,!0),this.add(e,t)),e};rp.prototype.remove=function(e,t){if(this.contains(e)){let n=e._zIndex,i=this._collections[n],o;return t?o=i.remove(e):o=i.removeAndDestroy(e),o&&this._length--,i.length===0&&(this._collectionsArray.splice(this._collectionsArray.indexOf(i),1),this._collections[n]=void 0,i.destroy()),o}return!1};rp.prototype.removeAll=function(){let e=this._collectionsArray;for(let t=0;t<e.length;t++){let n=e[t];n.destroyPrimitives=!0,n.destroy()}this._collections={},this._collectionsArray=[],this._length=0};rp.prototype.contains=function(e){if(!l(e))return!1;let t=this._collections[e._zIndex];return l(t)&&t.contains(e)};rp.prototype.update=function(e){if(!this.show)return;let t=this._collectionsArray;for(let n=0;n<t.length;n++)t[n].update(e)};rp.prototype.isDestroyed=function(){return!1};rp.prototype.destroy=function(){return this.removeAll(),me(this)};var LW=rp;var Vbi=y(C(),1);var Jci=y(C(),1);function iS(e,t){this._primitives=e,this._orderedGroundPrimitives=t,this._dynamicUpdaters=new Bt}iS.prototype.add=function(e,t){this._dynamicUpdaters.set(t.id,t.createDynamicUpdater(this._primitives,this._orderedGroundPrimitives))};iS.prototype.remove=function(e){let t=e.id,n=this._dynamicUpdaters.get(t);l(n)&&(this._dynamicUpdaters.remove(t),n.destroy())};iS.prototype.update=function(e){let t=this._dynamicUpdaters.values;for(let n=0,i=t.length;n<i;n++)t[n].update(e);return!0};iS.prototype.removeAllPrimitives=function(){let e=this._dynamicUpdaters.values;for(let t=0,n=e.length;t<n;t++)e[t].destroy();this._dynamicUpdaters.removeAll()};iS.prototype.getBoundingSphere=function(e,t){return e=this._dynamicUpdaters.get(e.id),l(e)&&l(e.getBoundingSphere)?e.getBoundingSphere(t):At.FAILED};var Yx=iS;var WAi=y(C(),1);var mdi=y(C(),1);var Lli=y(C(),1);var nli=y(C(),1);var x4={},E5=new m,$fe=new m,epe=new Pe,tpe=new $;function oS(e,t,n,i,o,r,s,a,c,d){let u=e+t;m.multiplyByScalar(i,Math.cos(u),E5),m.multiplyByScalar(n,Math.sin(u),$fe),m.add(E5,$fe,E5);let h=Math.cos(e);h=h*h;let p=Math.sin(e);p=p*p;let f=r/Math.sqrt(s*h+o*p)/a;return Pe.fromAxisAngle(E5,f,epe),$.fromQuaternion(epe,tpe),$.multiplyByVector(tpe,c,d),m.normalize(d,d),m.multiplyByScalar(d,a,d),d}var npe=new m,ipe=new m,C4=new m,Xet=new m;x4.raisePositionsToHeight=function(e,t,n){let i=t.ellipsoid,o=t.height,r=t.extrudedHeight,s=n?e.length/3*2:e.length/3,a=new Float64Array(s*3),c=e.length,d=n?c:0;for(let u=0;u<c;u+=3){let h=u+1,p=u+2,g=m.fromArray(e,u,npe);i.scaleToGeodeticSurface(g,g);let f=m.clone(g,ipe),b=i.geodeticSurfaceNormal(g,Xet),x=m.multiplyByScalar(b,o,C4);m.add(g,x,g),n&&(m.multiplyByScalar(b,r,x),m.add(f,x,f),a[u+d]=f.x,a[h+d]=f.y,a[p+d]=f.z),a[u]=g.x,a[h]=g.y,a[p]=g.z}return a};var Wet=new m,Fet=new m,Pet=new m;x4.computeEllipsePositions=function(e,t,n){let i=e.semiMinorAxis,o=e.semiMajorAxis,r=e.rotation,s=e.center,a=e.granularity*8,c=i*i,d=o*o,u=o*i,h=m.magnitude(s),p=m.normalize(s,Wet),g=m.cross(m.UNIT_Z,s,Fet);g=m.normalize(g,g);let f=m.cross(p,g,Pet),b=1+Math.ceil(Z.PI_OVER_TWO/a),x=Z.PI_OVER_TWO/(b-1),I=Z.PI_OVER_TWO-b*x;I<0&&(b-=Math.ceil(Math.abs(I)/x));let _=2*(b*(b+2)),E=t?new Array(_*3):void 0,S=0,R=npe,G=ipe,B=b*4*3,w=B-1,F=0,P=n?new Array(B):void 0,A,T,L,V,W;for(I=Z.PI_OVER_TWO,R=oS(I,r,f,g,c,u,d,h,p,R),t&&(E[S++]=R.x,E[S++]=R.y,E[S++]=R.z),n&&(P[w--]=R.z,P[w--]=R.y,P[w--]=R.x),I=Z.PI_OVER_TWO-x,A=1;A<b+1;++A){if(R=oS(I,r,f,g,c,u,d,h,p,R),G=oS(Math.PI-I,r,f,g,c,u,d,h,p,G),t){for(E[S++]=R.x,E[S++]=R.y,E[S++]=R.z,L=2*A+2,T=1;T<L-1;++T)V=T/(L-1),W=m.lerp(R,G,V,C4),E[S++]=W.x,E[S++]=W.y,E[S++]=W.z;E[S++]=G.x,E[S++]=G.y,E[S++]=G.z}n&&(P[w--]=R.z,P[w--]=R.y,P[w--]=R.x,P[F++]=G.x,P[F++]=G.y,P[F++]=G.z),I=Z.PI_OVER_TWO-(A+1)*x}for(A=b;A>1;--A){if(I=Z.PI_OVER_TWO-(A-1)*x,R=oS(-I,r,f,g,c,u,d,h,p,R),G=oS(I+Math.PI,r,f,g,c,u,d,h,p,G),t){for(E[S++]=R.x,E[S++]=R.y,E[S++]=R.z,L=2*(A-1)+2,T=1;T<L-1;++T)V=T/(L-1),W=m.lerp(R,G,V,C4),E[S++]=W.x,E[S++]=W.y,E[S++]=W.z;E[S++]=G.x,E[S++]=G.y,E[S++]=G.z}n&&(P[w--]=R.z,P[w--]=R.y,P[w--]=R.x,P[F++]=G.x,P[F++]=G.y,P[F++]=G.z)}I=Z.PI_OVER_TWO,R=oS(-I,r,f,g,c,u,d,h,p,R);let M={};return t&&(E[S++]=R.x,E[S++]=R.y,E[S++]=R.z,M.positions=E,M.numPts=b),n&&(P[w--]=R.z,P[w--]=R.y,P[w--]=R.x,M.outerPositions=P),M};var Ad=x4;var rS=new m,I4=new m,_4=new m,ope=new m,ea=new D,rpe=new $,Met=new $,E4=new Pe,spe=new m,ape=new m,cpe=new m,L5=new ge,lpe=new m,dpe=new D,upe=new D;function mpe(e,t,n){let i=t.vertexFormat,o=t.center,r=t.semiMajorAxis,s=t.semiMinorAxis,a=t.ellipsoid,c=t.stRotation,d=n?e.length/3*2:e.length/3,u=t.shadowVolume,h=i.st?new Float32Array(d*2):void 0,p=i.normal?new Float32Array(d*3):void 0,g=i.tangent?new Float32Array(d*3):void 0,f=i.bitangent?new Float32Array(d*3):void 0,b=u?new Float32Array(d*3):void 0,x=0,I=spe,_=ape,E=cpe,S=new Di(a),R=S.project(a.cartesianToCartographic(o,L5),lpe),G=a.scaleToGeodeticSurface(o,rS);a.geodeticSurfaceNormal(G,G);let B=rpe,w=Met;if(c!==0){let W=Pe.fromAxisAngle(G,c,E4);B=$.fromQuaternion(W,B),W=Pe.fromAxisAngle(G,-c,E4),w=$.fromQuaternion(W,w)}else B=$.clone($.IDENTITY,B),w=$.clone($.IDENTITY,w);let F=D.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,dpe),P=D.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,upe),A=e.length,T=n?A:0,L=T/3*2;for(let W=0;W<A;W+=3){let M=W+1,Q=W+2,N=m.fromArray(e,W,rS);if(i.st){let k=$.multiplyByVector(B,N,I4),v=S.project(a.cartesianToCartographic(k,L5),_4);m.subtract(v,R,v),ea.x=(v.x+r)/(2*r),ea.y=(v.y+s)/(2*s),F.x=Math.min(ea.x,F.x),F.y=Math.min(ea.y,F.y),P.x=Math.max(ea.x,P.x),P.y=Math.max(ea.y,P.y),n&&(h[x+L]=ea.x,h[x+1+L]=ea.y),h[x++]=ea.x,h[x++]=ea.y}(i.normal||i.tangent||i.bitangent||u)&&(I=a.geodeticSurfaceNormal(N,I),u&&(b[W+T]=-I.x,b[M+T]=-I.y,b[Q+T]=-I.z),(i.normal||i.tangent||i.bitangent)&&((i.tangent||i.bitangent)&&(_=m.normalize(m.cross(m.UNIT_Z,I,_),_),$.multiplyByVector(w,_,_)),i.normal&&(p[W]=I.x,p[M]=I.y,p[Q]=I.z,n&&(p[W+T]=-I.x,p[M+T]=-I.y,p[Q+T]=-I.z)),i.tangent&&(g[W]=_.x,g[M]=_.y,g[Q]=_.z,n&&(g[W+T]=-_.x,g[M+T]=-_.y,g[Q+T]=-_.z)),i.bitangent&&(E=m.normalize(m.cross(I,_,E),E),f[W]=E.x,f[M]=E.y,f[Q]=E.z,n&&(f[W+T]=E.x,f[M+T]=E.y,f[Q+T]=E.z))))}if(i.st){A=h.length;for(let W=0;W<A;W+=2)h[W]=(h[W]-F.x)/(P.x-F.x),h[W+1]=(h[W+1]-F.y)/(P.y-F.y)}let V=new xn;if(i.position){let W=Ad.raisePositionsToHeight(e,t,n);V.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:W})}if(i.st&&(V.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:h})),i.normal&&(V.normal=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:p})),i.tangent&&(V.tangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:g})),i.bitangent&&(V.bitangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:f})),u&&(V.extrudeDirection=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:b})),n&&l(t.offsetAttribute)){let W=new Uint8Array(d);if(t.offsetAttribute===pn.TOP)W=W.fill(1,0,d/2);else{let M=t.offsetAttribute===pn.NONE?0:1;W=W.fill(M)}V.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:W})}return V}function hpe(e){let t=new Array(12*(e*(e+1))-6),n=0,i,o,r,s,a;for(i=0,r=1,s=0;s<3;s++)t[n++]=r++,t[n++]=i,t[n++]=r;for(s=2;s<e+1;++s){for(r=s*(s+1)-1,i=(s-1)*s-1,t[n++]=r++,t[n++]=i,t[n++]=r,o=2*s,a=0;a<o-1;++a)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;t[n++]=r++,t[n++]=i,t[n++]=r}for(o=e*2,++r,++i,s=0;s<o-1;++s)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;for(t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i++,t[n++]=i,++i,s=e-1;s>1;--s){for(t[n++]=i++,t[n++]=i,t[n++]=r,o=2*s,a=0;a<o-1;++a)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;t[n++]=i++,t[n++]=i++,t[n++]=r++}for(s=0;s<3;s++)t[n++]=i++,t[n++]=i,t[n++]=r;return t}var Ox=new m;function vet(e){let t=e.center;Ox=m.multiplyByScalar(e.ellipsoid.geodeticSurfaceNormal(t,Ox),e.height,Ox),Ox=m.add(t,Ox,Ox);let n=new ue(Ox,e.semiMajorAxis),i=Ad.computeEllipsePositions(e,!0,!1),o=i.positions,r=i.numPts,s=mpe(o,e,!1),a=hpe(r);return a=Me.createTypedArray(o.length/3,a),{boundingSphere:n,attributes:s,indices:a}}function Net(e,t){let n=t.vertexFormat,i=t.center,o=t.semiMajorAxis,r=t.semiMinorAxis,s=t.ellipsoid,a=t.height,c=t.extrudedHeight,d=t.stRotation,u=e.length/3*2,h=new Float64Array(u*3),p=n.st?new Float32Array(u*2):void 0,g=n.normal?new Float32Array(u*3):void 0,f=n.tangent?new Float32Array(u*3):void 0,b=n.bitangent?new Float32Array(u*3):void 0,x=t.shadowVolume,I=x?new Float32Array(u*3):void 0,_=0,E=spe,S=ape,R=cpe,G=new Di(s),B=G.project(s.cartesianToCartographic(i,L5),lpe),w=s.scaleToGeodeticSurface(i,rS);s.geodeticSurfaceNormal(w,w);let F=Pe.fromAxisAngle(w,d,E4),P=$.fromQuaternion(F,rpe),A=D.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,dpe),T=D.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,upe),L=e.length,V=L/3*2;for(let M=0;M<L;M+=3){let Q=M+1,N=M+2,k=m.fromArray(e,M,rS),v;if(n.st){let H=$.multiplyByVector(P,k,I4),ee=G.project(s.cartesianToCartographic(H,L5),_4);m.subtract(ee,B,ee),ea.x=(ee.x+o)/(2*o),ea.y=(ee.y+r)/(2*r),A.x=Math.min(ea.x,A.x),A.y=Math.min(ea.y,A.y),T.x=Math.max(ea.x,T.x),T.y=Math.max(ea.y,T.y),p[_+V]=ea.x,p[_+1+V]=ea.y,p[_++]=ea.x,p[_++]=ea.y}k=s.scaleToGeodeticSurface(k,k),v=m.clone(k,I4),E=s.geodeticSurfaceNormal(k,E),x&&(I[M+L]=-E.x,I[Q+L]=-E.y,I[N+L]=-E.z);let O=m.multiplyByScalar(E,a,ope);if(k=m.add(k,O,k),O=m.multiplyByScalar(E,c,O),v=m.add(v,O,v),n.position&&(h[M+L]=v.x,h[Q+L]=v.y,h[N+L]=v.z,h[M]=k.x,h[Q]=k.y,h[N]=k.z),n.normal||n.tangent||n.bitangent){R=m.clone(E,R);let H=m.fromArray(e,(M+3)%L,ope);m.subtract(H,k,H);let ee=m.subtract(v,k,_4);E=m.normalize(m.cross(ee,H,E),E),n.normal&&(g[M]=E.x,g[Q]=E.y,g[N]=E.z,g[M+L]=E.x,g[Q+L]=E.y,g[N+L]=E.z),n.tangent&&(S=m.normalize(m.cross(R,E,S),S),f[M]=S.x,f[Q]=S.y,f[N]=S.z,f[M+L]=S.x,f[M+1+L]=S.y,f[M+2+L]=S.z),n.bitangent&&(b[M]=R.x,b[Q]=R.y,b[N]=R.z,b[M+L]=R.x,b[Q+L]=R.y,b[N+L]=R.z)}}if(n.st){L=p.length;for(let M=0;M<L;M+=2)p[M]=(p[M]-A.x)/(T.x-A.x),p[M+1]=(p[M+1]-A.y)/(T.y-A.y)}let W=new xn;if(n.position&&(W.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:h})),n.st&&(W.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:p})),n.normal&&(W.normal=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:g})),n.tangent&&(W.tangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:f})),n.bitangent&&(W.bitangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:b})),x&&(W.extrudeDirection=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:I})),l(t.offsetAttribute)){let M=new Uint8Array(u);if(t.offsetAttribute===pn.TOP)M=M.fill(1,0,u/2);else{let Q=t.offsetAttribute===pn.NONE?0:1;M=M.fill(Q)}W.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:M})}return W}function Det(e){let t=e.length/3,n=Me.createTypedArray(t,t*6),i=0;for(let o=0;o<t;o++){let r=o,s=o+t,a=(r+1)%t,c=a+t;n[i++]=r,n[i++]=s,n[i++]=a,n[i++]=a,n[i++]=s,n[i++]=c}return n}var T5=new ue,S5=new ue;function Qet(e){let t=e.center,n=e.ellipsoid,i=e.semiMajorAxis,o=m.multiplyByScalar(n.geodeticSurfaceNormal(t,rS),e.height,rS);T5.center=m.add(t,o,T5.center),T5.radius=i,o=m.multiplyByScalar(n.geodeticSurfaceNormal(t,o),e.extrudedHeight,o),S5.center=m.add(t,o,S5.center),S5.radius=i;let r=Ad.computeEllipsePositions(e,!0,!0),s=r.positions,a=r.numPts,c=r.outerPositions,d=ue.union(T5,S5),u=mpe(s,e,!0),h=hpe(a),p=h.length;h.length=p*2;let g=s.length/3;for(let S=0;S<p;S+=3)h[S+p]=h[S+2]+g,h[S+1+p]=h[S+1]+g,h[S+2+p]=h[S]+g;let f=Me.createTypedArray(g*2/3,h),b=new pt({attributes:u,indices:f,primitiveType:We.TRIANGLES}),x=Net(c,e);h=Det(c);let I=Me.createTypedArray(c.length*2/3,h),_=new pt({attributes:x,indices:I,primitiveType:We.TRIANGLES}),E=Yn.combineInstances([new wt({geometry:b}),new wt({geometry:_})]);return{boundingSphere:d,attributes:E[0].attributes,indices:E[0].indices}}function fpe(e,t,n,i,o,r,s){let c=Ad.computeEllipsePositions({center:e,semiMajorAxis:t,semiMinorAxis:n,rotation:i,granularity:o},!1,!0).outerPositions,d=c.length/3,u=new Array(d);for(let p=0;p<d;++p)u[p]=m.fromArray(c,p*3);let h=le.fromCartesianArray(u,r,s);return h.width>Z.PI&&(h.north=h.north>0?Z.PI_OVER_TWO-Z.EPSILON7:h.north,h.south=h.south<0?Z.EPSILON7-Z.PI_OVER_TWO:h.south,h.east=Z.PI,h.west=-Z.PI),h}function ap(e){e=e??Y.EMPTY_OBJECT;let t=e.center,n=e.ellipsoid??ie.default,i=e.semiMajorAxis,o=e.semiMinorAxis,r=e.granularity??Z.RADIANS_PER_DEGREE,s=e.vertexFormat??we.DEFAULT,a=e.height??0,c=e.extrudedHeight??a;this._center=m.clone(t),this._semiMajorAxis=i,this._semiMinorAxis=o,this._ellipsoid=ie.clone(n),this._rotation=e.rotation??0,this._stRotation=e.stRotation??0,this._height=Math.max(c,a),this._granularity=r,this._vertexFormat=we.clone(s),this._extrudedHeight=Math.min(c,a),this._shadowVolume=e.shadowVolume??!1,this._workerName="createEllipseGeometry",this._offsetAttribute=e.offsetAttribute,this._rectangle=void 0,this._textureCoordinateRotationPoints=void 0}ap.packedLength=m.packedLength+ie.packedLength+we.packedLength+9;ap.pack=function(e,t,n){return n=n??0,m.pack(e._center,t,n),n+=m.packedLength,ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,we.pack(e._vertexFormat,t,n),n+=we.packedLength,t[n++]=e._semiMajorAxis,t[n++]=e._semiMinorAxis,t[n++]=e._rotation,t[n++]=e._stRotation,t[n++]=e._height,t[n++]=e._granularity,t[n++]=e._extrudedHeight,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var ppe=new m,Ape=new ie,gpe=new we,sp={center:ppe,ellipsoid:Ape,vertexFormat:gpe,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,stRotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};ap.unpack=function(e,t,n){t=t??0;let i=m.unpack(e,t,ppe);t+=m.packedLength;let o=ie.unpack(e,t,Ape);t+=ie.packedLength;let r=we.unpack(e,t,gpe);t+=we.packedLength;let s=e[t++],a=e[t++],c=e[t++],d=e[t++],u=e[t++],h=e[t++],p=e[t++],g=e[t++]===1,f=e[t];return l(n)?(n._center=m.clone(i,n._center),n._ellipsoid=ie.clone(o,n._ellipsoid),n._vertexFormat=we.clone(r,n._vertexFormat),n._semiMajorAxis=s,n._semiMinorAxis=a,n._rotation=c,n._stRotation=d,n._height=u,n._granularity=h,n._extrudedHeight=p,n._shadowVolume=g,n._offsetAttribute=f===-1?void 0:f,n):(sp.height=u,sp.extrudedHeight=p,sp.granularity=h,sp.stRotation=d,sp.rotation=c,sp.semiMajorAxis=s,sp.semiMinorAxis=a,sp.shadowVolume=g,sp.offsetAttribute=f===-1?void 0:f,new ap(sp))};ap.computeRectangle=function(e,t){e=e??Y.EMPTY_OBJECT;let n=e.center,i=e.ellipsoid??ie.default,o=e.semiMajorAxis,r=e.semiMinorAxis,s=e.granularity??Z.RADIANS_PER_DEGREE,a=e.rotation??0;return fpe(n,o,r,a,s,i,t)};ap.createGeometry=function(e){if(e._semiMajorAxis<=0||e._semiMinorAxis<=0)return;let t=e._height,n=e._extrudedHeight,i=!Z.equalsEpsilon(t,n,0,Z.EPSILON2);e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);let o={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:t,granularity:e._granularity,vertexFormat:e._vertexFormat,stRotation:e._stRotation},r;if(i)o.extrudedHeight=n,o.shadowVolume=e._shadowVolume,o.offsetAttribute=e._offsetAttribute,r=Qet(o);else if(r=vet(o),l(e._offsetAttribute)){let s=r.attributes.position.values.length,a=e._offsetAttribute===pn.NONE?0:1,c=new Uint8Array(s/3).fill(a);r.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:c})}return new pt({attributes:r.attributes,indices:r.indices,primitiveType:We.TRIANGLES,boundingSphere:r.boundingSphere,offsetAttribute:e._offsetAttribute})};ap.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new ap({center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:o,rotation:e._rotation,stRotation:e._stRotation,granularity:i,extrudedHeight:r,height:s,vertexFormat:we.POSITION_ONLY,shadowVolume:!0})};function Uet(e){let t=-e._stRotation;if(t===0)return[0,0,0,1,1,0];let i=Ad.computeEllipsePositions({center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,rotation:e._rotation,granularity:e._granularity},!1,!0).outerPositions,o=i.length/3,r=new Array(o);for(let c=0;c<o;++c)r[c]=m.fromArray(i,c*3);let s=e._ellipsoid,a=e.rectangle;return pt._textureCoordinateRotationPoints(r,t,s,a)}Object.defineProperties(ap.prototype,{rectangle:{get:function(){return l(this._rectangle)||(this._rectangle=fpe(this._center,this._semiMajorAxis,this._semiMinorAxis,this._rotation,this._granularity,this._ellipsoid)),this._rectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=Uet(this)),this._textureCoordinateRotationPoints}}});var Fl=ap;var Uli=y(C(),1);var bpe=new m,Hx=new m;function ket(e){let t=e.center;Hx=m.multiplyByScalar(e.ellipsoid.geodeticSurfaceNormal(t,Hx),e.height,Hx),Hx=m.add(t,Hx,Hx);let n=new ue(Hx,e.semiMajorAxis),i=Ad.computeEllipsePositions(e,!1,!0).outerPositions,o=new xn({position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:Ad.raisePositionsToHeight(i,e,!1)})}),r=i.length/3,s=Me.createTypedArray(r,r*2),a=0;for(let c=0;c<r;++c)s[a++]=c,s[a++]=(c+1)%r;return{boundingSphere:n,attributes:o,indices:s}}var R5=new ue,V5=new ue;function Yet(e){let t=e.center,n=e.ellipsoid,i=e.semiMajorAxis,o=m.multiplyByScalar(n.geodeticSurfaceNormal(t,bpe),e.height,bpe);R5.center=m.add(t,o,R5.center),R5.radius=i,o=m.multiplyByScalar(n.geodeticSurfaceNormal(t,o),e.extrudedHeight,o),V5.center=m.add(t,o,V5.center),V5.radius=i;let r=Ad.computeEllipsePositions(e,!1,!0).outerPositions,s=new xn({position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:Ad.raisePositionsToHeight(r,e,!0)})});r=s.position.values;let a=ue.union(R5,V5),c=r.length/3;if(l(e.offsetAttribute)){let f=new Uint8Array(c);if(e.offsetAttribute===pn.TOP)f=f.fill(1,0,c/2);else{let b=e.offsetAttribute===pn.NONE?0:1;f=f.fill(b)}s.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:f})}let d=e.numberOfVerticalLines??16;d=Z.clamp(d,0,c/2);let u=Me.createTypedArray(c,c*2+d*2);c/=2;let h=0,p;for(p=0;p<c;++p)u[h++]=p,u[h++]=(p+1)%c,u[h++]=p+c,u[h++]=(p+1)%c+c;let g;if(d>0){let f=Math.min(d,c);g=Math.round(c/f);let b=Math.min(g*d,c);for(p=0;p<b;p+=g)u[h++]=p,u[h++]=p+c}return{boundingSphere:a,attributes:s,indices:u}}function sS(e){e=e??Y.EMPTY_OBJECT;let t=e.center,n=e.ellipsoid??ie.default,i=e.semiMajorAxis,o=e.semiMinorAxis,r=e.granularity??Z.RADIANS_PER_DEGREE,s=e.height??0,a=e.extrudedHeight??s;this._center=m.clone(t),this._semiMajorAxis=i,this._semiMinorAxis=o,this._ellipsoid=ie.clone(n),this._rotation=e.rotation??0,this._height=Math.max(a,s),this._granularity=r,this._extrudedHeight=Math.min(a,s),this._numberOfVerticalLines=Math.max(e.numberOfVerticalLines??16,0),this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipseOutlineGeometry"}sS.packedLength=m.packedLength+ie.packedLength+8;sS.pack=function(e,t,n){return n=n??0,m.pack(e._center,t,n),n+=m.packedLength,ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,t[n++]=e._semiMajorAxis,t[n++]=e._semiMinorAxis,t[n++]=e._rotation,t[n++]=e._height,t[n++]=e._granularity,t[n++]=e._extrudedHeight,t[n++]=e._numberOfVerticalLines,t[n]=e._offsetAttribute??-1,t};var ype=new m,Cpe=new ie,Lg={center:ype,ellipsoid:Cpe,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,numberOfVerticalLines:void 0,offsetAttribute:void 0};sS.unpack=function(e,t,n){t=t??0;let i=m.unpack(e,t,ype);t+=m.packedLength;let o=ie.unpack(e,t,Cpe);t+=ie.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],d=e[t++],u=e[t++],h=e[t++],p=e[t];return l(n)?(n._center=m.clone(i,n._center),n._ellipsoid=ie.clone(o,n._ellipsoid),n._semiMajorAxis=r,n._semiMinorAxis=s,n._rotation=a,n._height=c,n._granularity=d,n._extrudedHeight=u,n._numberOfVerticalLines=h,n._offsetAttribute=p===-1?void 0:p,n):(Lg.height=c,Lg.extrudedHeight=u,Lg.granularity=d,Lg.rotation=a,Lg.semiMajorAxis=r,Lg.semiMinorAxis=s,Lg.numberOfVerticalLines=h,Lg.offsetAttribute=p===-1?void 0:p,new sS(Lg))};sS.createGeometry=function(e){if(e._semiMajorAxis<=0||e._semiMinorAxis<=0)return;let t=e._height,n=e._extrudedHeight,i=!Z.equalsEpsilon(t,n,0,Z.EPSILON2);e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);let o={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:t,granularity:e._granularity,numberOfVerticalLines:e._numberOfVerticalLines},r;if(i)o.extrudedHeight=n,o.offsetAttribute=e._offsetAttribute,r=Yet(o);else if(r=ket(o),l(e._offsetAttribute)){let s=r.attributes.position.values.length,a=e._offsetAttribute===pn.NONE?0:1,c=new Uint8Array(s/3).fill(a);r.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:c})}return new pt({attributes:r.attributes,indices:r.indices,primitiveType:We.LINES,boundingSphere:r.boundingSphere,offsetAttribute:e._offsetAttribute})};var du=sS;var xpe=new U,Ipe=m.ZERO,_pe=new m,Epe=new le;function Oet(e){this.id=e,this.vertexFormat=void 0,this.center=void 0,this.semiMajorAxis=void 0,this.semiMinorAxis=void 0,this.rotation=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.numberOfVerticalLines=void 0,this.offsetAttribute=void 0}function zh(e,t){ii.call(this,{entity:e,scene:t,geometryOptions:new Oet(e),geometryPropertyName:"ellipse",observedPropertyNames:["availability","position","ellipse"]}),this._onEntityPropertyChanged(e,"ellipse",e.ellipse,void 0)}l(Object.create)&&(zh.prototype=Object.create(ii.prototype),zh.prototype.constructor=zh);zh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:jn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof qt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,xpe)),l(o)||(o=U.WHITE),i.color=tn.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,Ipe,_pe))),new wt({id:t,geometry:new Fl(this._options),attributes:i})};zh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=z.getValueOrDefault(this._outlineColorProperty,e,U.BLACK,xpe),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:tn.fromColor(i),distanceDisplayCondition:jn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,Ipe,_pe))),new wt({id:t,geometry:new du(this._options),attributes:r})};zh.prototype._computeCenter=function(e,t){return z.getValueOrUndefined(this._entity.position,e,t)};zh.prototype._isHidden=function(e,t){let n=e.position;return!l(n)||!l(t.semiMajorAxis)||!l(t.semiMinorAxis)||Ci.prototype._isHidden.call(this,e,t)};zh.prototype._isDynamic=function(e,t){return!e.position.isConstant||!t.semiMajorAxis.isConstant||!t.semiMinorAxis.isConstant||!z.isConstant(t.rotation)||!z.isConstant(t.height)||!z.isConstant(t.extrudedHeight)||!z.isConstant(t.granularity)||!z.isConstant(t.stRotation)||!z.isConstant(t.outlineWidth)||!z.isConstant(t.numberOfVerticalLines)||!z.isConstant(t.zIndex)||this._onTerrain&&!z.isConstant(this._materialProperty)&&!(this._materialProperty instanceof qt)};zh.prototype._setStaticOptions=function(e,t){let n=z.getValueOrUndefined(t.height,ze.MINIMUM_VALUE),i=z.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,et.NONE),o=z.getValueOrUndefined(t.extrudedHeight,ze.MINIMUM_VALUE),r=z.getValueOrDefault(t.extrudedHeightReference,ze.MINIMUM_VALUE,et.NONE);l(o)&&!l(n)&&(n=0);let s=this._options;s.vertexFormat=this._materialProperty instanceof qt?yn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,s.center=e.position.getValue(ze.MINIMUM_VALUE,s.center),s.semiMajorAxis=t.semiMajorAxis.getValue(ze.MINIMUM_VALUE,s.semiMajorAxis),s.semiMinorAxis=t.semiMinorAxis.getValue(ze.MINIMUM_VALUE,s.semiMinorAxis),s.rotation=z.getValueOrUndefined(t.rotation,ze.MINIMUM_VALUE),s.granularity=z.getValueOrUndefined(t.granularity,ze.MINIMUM_VALUE),s.stRotation=z.getValueOrUndefined(t.stRotation,ze.MINIMUM_VALUE),s.numberOfVerticalLines=z.getValueOrUndefined(t.numberOfVerticalLines,ze.MINIMUM_VALUE),s.offsetAttribute=ii.computeGeometryOffsetAttribute(n,i,o,r),s.height=ii.getGeometryHeight(n,i),o=ii.getGeometryExtrudedHeight(o,r),o===ii.CLAMP_TO_GROUND&&(o=Si.getMinimumMaximumHeights(Fl.computeRectangle(s,Epe)).minimumTerrainHeight),s.extrudedHeight=o};zh.DynamicGeometryUpdater=aS;function aS(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(aS.prototype=Object.create(yi.prototype),aS.prototype.constructor=aS);aS.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.center)||!l(i.semiMajorAxis)||!l(i.semiMinorAxis)||yi.prototype._isHidden.call(this,e,t,n)};aS.prototype._setOptions=function(e,t,n){let i=this._options,o=z.getValueOrUndefined(t.height,n),r=z.getValueOrDefault(t.heightReference,n,et.NONE),s=z.getValueOrUndefined(t.extrudedHeight,n),a=z.getValueOrDefault(t.extrudedHeightReference,n,et.NONE);l(s)&&!l(o)&&(o=0),i.center=z.getValueOrUndefined(e.position,n,i.center),i.semiMajorAxis=z.getValueOrUndefined(t.semiMajorAxis,n),i.semiMinorAxis=z.getValueOrUndefined(t.semiMinorAxis,n),i.rotation=z.getValueOrUndefined(t.rotation,n),i.granularity=z.getValueOrUndefined(t.granularity,n),i.stRotation=z.getValueOrUndefined(t.stRotation,n),i.numberOfVerticalLines=z.getValueOrUndefined(t.numberOfVerticalLines,n),i.offsetAttribute=ii.computeGeometryOffsetAttribute(o,r,s,a),i.height=ii.getGeometryHeight(o,r),s=ii.getGeometryExtrudedHeight(s,a),s===ii.CLAMP_TO_GROUND&&(s=Si.getMinimumMaximumHeights(Fl.computeRectangle(i,Epe)).minimumTerrainHeight),i.extrudedHeight=s};var RW=zh;var nui=y(C(),1);var Vdi=y(C(),1);var Het=new m,zet=new m,Ket=new m,Jet=new m,jet=new m,qet=new m(1,1,1),Tpe=Math.cos,Spe=Math.sin;function Rg(e){e=e??Y.EMPTY_OBJECT;let t=e.radii??qet,n=e.innerRadii??t,i=e.minimumClock??0,o=e.maximumClock??Z.TWO_PI,r=e.minimumCone??0,s=e.maximumCone??Z.PI,a=Math.round(e.stackPartitions??64),c=Math.round(e.slicePartitions??64),d=e.vertexFormat??we.DEFAULT;this._radii=m.clone(t),this._innerRadii=m.clone(n),this._minimumClock=i,this._maximumClock=o,this._minimumCone=r,this._maximumCone=s,this._stackPartitions=a,this._slicePartitions=c,this._vertexFormat=we.clone(d),this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipsoidGeometry"}Rg.packedLength=2*m.packedLength+we.packedLength+7;Rg.pack=function(e,t,n){return n=n??0,m.pack(e._radii,t,n),n+=m.packedLength,m.pack(e._innerRadii,t,n),n+=m.packedLength,we.pack(e._vertexFormat,t,n),n+=we.packedLength,t[n++]=e._minimumClock,t[n++]=e._maximumClock,t[n++]=e._minimumCone,t[n++]=e._maximumCone,t[n++]=e._stackPartitions,t[n++]=e._slicePartitions,t[n]=e._offsetAttribute??-1,t};var Lpe=new m,Rpe=new m,Vpe=new we,w0={radii:Lpe,innerRadii:Rpe,vertexFormat:Vpe,minimumClock:void 0,maximumClock:void 0,minimumCone:void 0,maximumCone:void 0,stackPartitions:void 0,slicePartitions:void 0,offsetAttribute:void 0};Rg.unpack=function(e,t,n){t=t??0;let i=m.unpack(e,t,Lpe);t+=m.packedLength;let o=m.unpack(e,t,Rpe);t+=m.packedLength;let r=we.unpack(e,t,Vpe);t+=we.packedLength;let s=e[t++],a=e[t++],c=e[t++],d=e[t++],u=e[t++],h=e[t++],p=e[t];return l(n)?(n._radii=m.clone(i,n._radii),n._innerRadii=m.clone(o,n._innerRadii),n._vertexFormat=we.clone(r,n._vertexFormat),n._minimumClock=s,n._maximumClock=a,n._minimumCone=c,n._maximumCone=d,n._stackPartitions=u,n._slicePartitions=h,n._offsetAttribute=p===-1?void 0:p,n):(w0.minimumClock=s,w0.maximumClock=a,w0.minimumCone=c,w0.maximumCone=d,w0.stackPartitions=u,w0.slicePartitions=h,w0.offsetAttribute=p===-1?void 0:p,new Rg(w0))};Rg.createGeometry=function(e){let t=e._radii;if(t.x<=0||t.y<=0||t.z<=0)return;let n=e._innerRadii;if(n.x<=0||n.y<=0||n.z<=0)return;let i=e._minimumClock,o=e._maximumClock,r=e._minimumCone,s=e._maximumCone,a=e._vertexFormat,c=e._slicePartitions+1,d=e._stackPartitions+1;c=Math.round(c*Math.abs(o-i)/Z.TWO_PI),d=Math.round(d*Math.abs(s-r)/Z.PI),c<2&&(c=2),d<2&&(d=2);let u,h,p=0,g=[r],f=[i];for(u=0;u<d;u++)g.push(r+u*(s-r)/(d-1));for(g.push(s),h=0;h<c;h++)f.push(i+h*(o-i)/(c-1));f.push(o);let b=g.length,x=f.length,I=0,_=1,E=n.x!==t.x||n.y!==t.y||n.z!==t.z,S=!1,R=!1,G=!1;E&&(_=2,r>0&&(S=!0,I+=c-1),s<Math.PI&&(R=!0,I+=c-1),(o-i)%Z.TWO_PI?(G=!0,I+=(d-1)*2+1):I+=1);let B=x*b*_,w=new Float64Array(B*3),F=new Array(B).fill(!1),P=new Array(B).fill(!1),A=c*d*_,T=6*(A+I+1-(c+d)*_),L=Me.createTypedArray(A,T),V=a.normal?new Float32Array(B*3):void 0,W=a.tangent?new Float32Array(B*3):void 0,M=a.bitangent?new Float32Array(B*3):void 0,Q=a.st?new Float32Array(B*2):void 0,N=new Array(b),k=new Array(b);for(u=0;u<b;u++)N[u]=Spe(g[u]),k[u]=Tpe(g[u]);let v=new Array(x),O=new Array(x);for(h=0;h<x;h++)O[h]=Tpe(f[h]),v[h]=Spe(f[h]);for(u=0;u<b;u++)for(h=0;h<x;h++)w[p++]=t.x*N[u]*O[h],w[p++]=t.y*N[u]*v[h],w[p++]=t.z*k[u];let H=B/2;if(E)for(u=0;u<b;u++)for(h=0;h<x;h++)w[p++]=n.x*N[u]*O[h],w[p++]=n.y*N[u]*v[h],w[p++]=n.z*k[u],F[H]=!0,u>0&&u!==b-1&&h!==0&&h!==x-1&&(P[H]=!0),H++;p=0;let ee,K;for(u=1;u<b-2;u++)for(ee=u*x,K=(u+1)*x,h=1;h<x-2;h++)L[p++]=K+h,L[p++]=K+h+1,L[p++]=ee+h+1,L[p++]=K+h,L[p++]=ee+h+1,L[p++]=ee+h;if(E){let je=b*x;for(u=1;u<b-2;u++)for(ee=je+u*x,K=je+(u+1)*x,h=1;h<x-2;h++)L[p++]=K+h,L[p++]=ee+h,L[p++]=ee+h+1,L[p++]=K+h,L[p++]=ee+h+1,L[p++]=K+h+1}let te,q;if(E){if(S)for(q=b*x,u=1;u<x-2;u++)L[p++]=u,L[p++]=u+1,L[p++]=q+u+1,L[p++]=u,L[p++]=q+u+1,L[p++]=q+u;if(R)for(te=b*x-x,q=b*x*_-x,u=1;u<x-2;u++)L[p++]=te+u+1,L[p++]=te+u,L[p++]=q+u,L[p++]=te+u+1,L[p++]=q+u,L[p++]=q+u+1}if(G){for(u=1;u<b-2;u++)q=x*b+x*u,te=x*u,L[p++]=q,L[p++]=te+x,L[p++]=te,L[p++]=q,L[p++]=q+x,L[p++]=te+x;for(u=1;u<b-2;u++)q=x*b+x*(u+1)-1,te=x*(u+1)-1,L[p++]=te+x,L[p++]=q,L[p++]=te,L[p++]=te+x,L[p++]=q+x,L[p++]=q}let pe=new xn;a.position&&(pe.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:w}));let ye=0,he=0,xe=0,Te=0,Be=B/2,Le,De=ie.fromCartesian3(t),Ue=ie.fromCartesian3(n);if(a.st||a.normal||a.tangent||a.bitangent){for(u=0;u<B;u++){Le=F[u]?Ue:De;let je=m.fromArray(w,u*3,Het),it=Le.geodeticSurfaceNormal(je,zet);if(P[u]&&m.negate(it,it),a.st){let nn=D.negate(it,jet);Q[ye++]=Math.atan2(nn.y,nn.x)/Z.TWO_PI+.5,Q[ye++]=Math.asin(it.z)/Math.PI+.5}if(a.normal&&(V[he++]=it.x,V[he++]=it.y,V[he++]=it.z),a.tangent||a.bitangent){let nn=Ket,rt=0,rn;if(F[u]&&(rt=Be),!S&&u>=rt&&u<rt+x*2?rn=m.UNIT_X:rn=m.UNIT_Z,m.cross(rn,it,nn),m.normalize(nn,nn),a.tangent&&(W[xe++]=nn.x,W[xe++]=nn.y,W[xe++]=nn.z),a.bitangent){let Jt=m.cross(it,nn,Jet);m.normalize(Jt,Jt),M[Te++]=Jt.x,M[Te++]=Jt.y,M[Te++]=Jt.z}}}a.st&&(pe.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:Q})),a.normal&&(pe.normal=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:V})),a.tangent&&(pe.tangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:W})),a.bitangent&&(pe.bitangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:M}))}if(l(e._offsetAttribute)){let je=w.length,it=e._offsetAttribute===pn.NONE?0:1,nn=new Uint8Array(je/3).fill(it);pe.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:nn})}return new pt({attributes:pe,indices:L,primitiveType:We.TRIANGLES,boundingSphere:ue.fromEllipsoid(De),offsetAttribute:e._offsetAttribute})};var T4;Rg.getUnitEllipsoid=function(){return l(T4)||(T4=Rg.createGeometry(new Rg({radii:new m(1,1,1),vertexFormat:we.POSITION_ONLY}))),T4};var xa=Rg;var $et=new qt(U.WHITE),S4=m.ZERO,L4=new m,ett=new m,ttt=new m,R4=new U,ntt=new m(1,1,1);function itt(e){this.id=e,this.vertexFormat=void 0,this.radii=void 0,this.innerRadii=void 0,this.minimumClock=void 0,this.maximumClock=void 0,this.minimumCone=void 0,this.maximumCone=void 0,this.stackPartitions=void 0,this.slicePartitions=void 0,this.subdivisions=void 0,this.offsetAttribute=void 0}function uu(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new itt(e),geometryPropertyName:"ellipsoid",observedPropertyNames:["availability","position","orientation","ellipsoid"]}),this._onEntityPropertyChanged(e,"ellipsoid",e.ellipsoid,void 0)}l(Object.create)&&(uu.prototype=Object.create(Ci.prototype),uu.prototype.constructor=uu);Object.defineProperties(uu.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});uu.prototype.createFillGeometryInstance=function(e,t,n){let i=this._entity,o=i.isAvailable(e),r,s=new Vn(o&&i.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),a=this._distanceDisplayConditionProperty.getValue(e),c=jn.fromDistanceDisplayCondition(a),d={show:s,distanceDisplayCondition:c,color:void 0,offset:void 0};if(this._materialProperty instanceof qt){let u;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||o)&&(u=this._materialProperty.color.getValue(e,R4)),l(u)||(u=U.WHITE),r=tn.fromColor(u),d.color=r}return l(this._options.offsetAttribute)&&(d.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,S4,L4))),new wt({id:i,geometry:new xa(this._options),modelMatrix:t?void 0:i.computeModelMatrixForHeightReference(e,i.ellipsoid.heightReference,this._options.radii.z*.5,this._scene.ellipsoid,n),attributes:d})};uu.prototype.createOutlineGeometryInstance=function(e,t,n){let i=this._entity,o=i.isAvailable(e),r=z.getValueOrDefault(this._outlineColorProperty,e,U.BLACK,R4),s=this._distanceDisplayConditionProperty.getValue(e),a={show:new Vn(o&&i.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:tn.fromColor(r),distanceDisplayCondition:jn.fromDistanceDisplayCondition(s),offset:void 0};return l(this._options.offsetAttribute)&&(a.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,S4,L4))),new wt({id:i,geometry:new nu(this._options),modelMatrix:t?void 0:i.computeModelMatrixForHeightReference(e,i.ellipsoid.heightReference,this._options.radii.z*.5,this._scene.ellipsoid,n),attributes:a})};uu.prototype._computeCenter=function(e,t){return z.getValueOrUndefined(this._entity.position,e,t)};uu.prototype._isHidden=function(e,t){return!l(e.position)||!l(t.radii)||Ci.prototype._isHidden.call(this,e,t)};uu.prototype._isDynamic=function(e,t){return!e.position.isConstant||!z.isConstant(e.orientation)||!t.radii.isConstant||!z.isConstant(t.innerRadii)||!z.isConstant(t.stackPartitions)||!z.isConstant(t.slicePartitions)||!z.isConstant(t.outlineWidth)||!z.isConstant(t.minimumClock)||!z.isConstant(t.maximumClock)||!z.isConstant(t.minimumCone)||!z.isConstant(t.maximumCone)||!z.isConstant(t.subdivisions)};uu.prototype._setStaticOptions=function(e,t){let n=z.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,et.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof qt?yn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,i.radii=t.radii.getValue(ze.MINIMUM_VALUE,i.radii),i.innerRadii=z.getValueOrUndefined(t.innerRadii,i.radii),i.minimumClock=z.getValueOrUndefined(t.minimumClock,ze.MINIMUM_VALUE),i.maximumClock=z.getValueOrUndefined(t.maximumClock,ze.MINIMUM_VALUE),i.minimumCone=z.getValueOrUndefined(t.minimumCone,ze.MINIMUM_VALUE),i.maximumCone=z.getValueOrUndefined(t.maximumCone,ze.MINIMUM_VALUE),i.stackPartitions=z.getValueOrUndefined(t.stackPartitions,ze.MINIMUM_VALUE),i.slicePartitions=z.getValueOrUndefined(t.slicePartitions,ze.MINIMUM_VALUE),i.subdivisions=z.getValueOrUndefined(t.subdivisions,ze.MINIMUM_VALUE),i.offsetAttribute=n!==et.NONE?pn.ALL:void 0};uu.prototype._onEntityPropertyChanged=fA;uu.DynamicGeometryUpdater=VW;function VW(e,t,n){yi.call(this,e,t,n),this._scene=e._scene,this._modelMatrix=new X,this._attributes=void 0,this._outlineAttributes=void 0,this._lastSceneMode=void 0,this._lastShow=void 0,this._lastOutlineShow=void 0,this._lastOutlineWidth=void 0,this._lastOutlineColor=void 0,this._lastOffset=new m,this._material={}}l(Object.create)&&(VW.prototype=Object.create(yi.prototype),VW.prototype.constructor=VW);VW.prototype.update=function(e){let t=this._entity,n=t.ellipsoid;if(!t.isShowing||!t.isAvailable(e)||!z.getValueOrDefault(n.show,e,!0)){l(this._primitive)&&(this._primitive.show=!1),l(this._outlinePrimitive)&&(this._outlinePrimitive.show=!1);return}let i=z.getValueOrUndefined(n.radii,e,ett),o=l(i)?t.computeModelMatrixForHeightReference(e,n.heightReference,i.z*.5,this._scene.ellipsoid,this._modelMatrix):void 0;if(!l(o)||!l(i)){l(this._primitive)&&(this._primitive.show=!1),l(this._outlinePrimitive)&&(this._outlinePrimitive.show=!1);return}let r=z.getValueOrDefault(n.fill,e,!0),s=z.getValueOrDefault(n.outline,e,!1),a=z.getValueOrClonedDefault(n.outlineColor,e,U.BLACK,R4),c=dr.getValue(e,n.material??$et,this._material),d=z.getValueOrUndefined(n.innerRadii,e,ttt),u=z.getValueOrUndefined(n.minimumClock,e),h=z.getValueOrUndefined(n.maximumClock,e),p=z.getValueOrUndefined(n.minimumCone,e),g=z.getValueOrUndefined(n.maximumCone,e),f=z.getValueOrUndefined(n.stackPartitions,e),b=z.getValueOrUndefined(n.slicePartitions,e),x=z.getValueOrUndefined(n.subdivisions,e),I=z.getValueOrDefault(n.outlineWidth,e,1),_=z.getValueOrDefault(n.heightReference,e,et.NONE),E=_!==et.NONE?pn.ALL:void 0,S=this._scene.mode,R=S===re.SCENE3D&&_===et.NONE,G=this._options,B=this._geometryUpdater.shadowsProperty.getValue(e),F=this._geometryUpdater.distanceDisplayConditionProperty.getValue(e),P=z.getValueOrDefault(this._geometryUpdater.terrainOffsetProperty,e,S4,L4);if(!R||this._lastSceneMode!==S||!l(this._primitive)||G.stackPartitions!==f||G.slicePartitions!==b||l(d)&&!m.equals(G.innerRadii!==d)||G.minimumClock!==u||G.maximumClock!==h||G.minimumCone!==p||G.maximumCone!==g||G.subdivisions!==x||this._lastOutlineWidth!==I||G.offsetAttribute!==E){let T=this._primitives;T.removeAndDestroy(this._primitive),T.removeAndDestroy(this._outlinePrimitive),this._primitive=void 0,this._outlinePrimitive=void 0,this._lastSceneMode=S,this._lastOutlineWidth=I,G.stackPartitions=f,G.slicePartitions=b,G.subdivisions=x,G.offsetAttribute=E,G.radii=m.clone(R?ntt:i,G.radii),l(d)?R?G.innerRadii=m.fromElements(d.x/i.x,d.y/i.y,d.z/i.z,G.innerRadii):G.innerRadii=m.clone(d,G.innerRadii):G.innerRadii=void 0,G.minimumClock=u,G.maximumClock=h,G.minimumCone=p,G.maximumCone=g;let L=new Io({material:c,translucent:c.isTranslucent(),closed:!0});G.vertexFormat=L.vertexFormat;let V=this._geometryUpdater.createFillGeometryInstance(e,R,this._modelMatrix);this._primitive=T.add(new Nn({geometryInstances:V,appearance:L,asynchronous:!1,shadows:B}));let W=this._geometryUpdater.createOutlineGeometryInstance(e,R,this._modelMatrix);this._outlinePrimitive=T.add(new Nn({geometryInstances:W,appearance:new yn({flat:!0,translucent:W.attributes.color.value[3]!==255,renderState:{lineWidth:this._geometryUpdater._scene.clampLineWidth(I)}}),asynchronous:!1,shadows:B})),this._lastShow=r,this._lastOutlineShow=s,this._lastOutlineColor=U.clone(a,this._lastOutlineColor),this._lastDistanceDisplayCondition=F,this._lastOffset=m.clone(P,this._lastOffset)}else if(this._primitive.ready){let T=this._primitive,L=this._outlinePrimitive;T.show=!0,L.show=!0,T.appearance.material=c;let V=this._attributes;l(V)||(V=T.getGeometryInstanceAttributes(t),this._attributes=V),r!==this._lastShow&&(V.show=Vn.toValue(r,V.show),this._lastShow=r);let W=this._outlineAttributes;l(W)||(W=L.getGeometryInstanceAttributes(t),this._outlineAttributes=W),s!==this._lastOutlineShow&&(W.show=Vn.toValue(s,W.show),this._lastOutlineShow=s),U.equals(a,this._lastOutlineColor)||(W.color=tn.toValue(a,W.color),U.clone(a,this._lastOutlineColor)),Qt.equals(F,this._lastDistanceDisplayCondition)||(V.distanceDisplayCondition=jn.toValue(F,V.distanceDisplayCondition),W.distanceDisplayCondition=jn.toValue(F,W.distanceDisplayCondition),Qt.clone(F,this._lastDistanceDisplayCondition)),m.equals(P,this._lastOffset)||(V.offset=mo.toValue(P,V.offset),W.offset=mo.toValue(P,V.offset),m.clone(P,this._lastOffset))}R&&(i.x=Math.max(i.x,.001),i.y=Math.max(i.y,.001),i.z=Math.max(i.z,.001),o=X.multiplyByScale(o,i,o),this._primitive.modelMatrix=o,this._outlinePrimitive.modelMatrix=o)};var GW=uu;var Yui=y(C(),1);var fui=y(C(),1);function cS(e){e=e??Y.EMPTY_OBJECT;let t=e.vertexFormat??we.DEFAULT;this._vertexFormat=t,this._workerName="createPlaneGeometry"}cS.packedLength=we.packedLength;cS.pack=function(e,t,n){return n=n??0,we.pack(e._vertexFormat,t,n),t};var Gpe=new we,ott={vertexFormat:Gpe};cS.unpack=function(e,t,n){t=t??0;let i=we.unpack(e,t,Gpe);return l(n)?(n._vertexFormat=we.clone(i,n._vertexFormat),n):new cS(ott)};var G5=new m(-.5,-.5,0),Z5=new m(.5,.5,0);cS.createGeometry=function(e){let t=e._vertexFormat,n=new xn,i,o;if(t.position){if(o=new Float64Array(12),o[0]=G5.x,o[1]=G5.y,o[2]=0,o[3]=Z5.x,o[4]=G5.y,o[5]=0,o[6]=Z5.x,o[7]=Z5.y,o[8]=0,o[9]=G5.x,o[10]=Z5.y,o[11]=0,n.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:o}),t.normal){let r=new Float32Array(12);r[0]=0,r[1]=0,r[2]=1,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=1,r[9]=0,r[10]=0,r[11]=1,n.normal=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:r})}if(t.st){let r=new Float32Array(8);r[0]=0,r[1]=0,r[2]=1,r[3]=0,r[4]=1,r[5]=1,r[6]=0,r[7]=1,n.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:r})}if(t.tangent){let r=new Float32Array(12);r[0]=1,r[1]=0,r[2]=0,r[3]=1,r[4]=0,r[5]=0,r[6]=1,r[7]=0,r[8]=0,r[9]=1,r[10]=0,r[11]=0,n.tangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:r})}if(t.bitangent){let r=new Float32Array(12);r[0]=0,r[1]=1,r[2]=0,r[3]=0,r[4]=1,r[5]=0,r[6]=0,r[7]=1,r[8]=0,r[9]=0,r[10]=1,r[11]=0,n.bitangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:r})}i=new Uint16Array(6),i[0]=0,i[1]=1,i[2]=2,i[3]=0,i[4]=2,i[5]=3}return new pt({attributes:n,indices:i,primitiveType:We.TRIANGLES,boundingSphere:new ue(m.ZERO,Math.sqrt(2))})};var ZW=cS;var Eui=y(C(),1);function lS(){this._workerName="createPlaneOutlineGeometry"}lS.packedLength=0;lS.pack=function(e,t){return t};lS.unpack=function(e,t,n){return l(n)?n:new lS};var X0=new m(-.5,-.5,0),B5=new m(.5,.5,0);lS.createGeometry=function(){let e=new xn,t=new Uint16Array(8),n=new Float64Array(12);return n[0]=X0.x,n[1]=X0.y,n[2]=X0.z,n[3]=B5.x,n[4]=X0.y,n[5]=X0.z,n[6]=B5.x,n[7]=B5.y,n[8]=X0.z,n[9]=X0.x,n[10]=B5.y,n[11]=X0.z,e.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:n}),t[0]=0,t[1]=1,t[2]=1,t[3]=2,t[4]=2,t[5]=3,t[6]=3,t[7]=0,new pt({attributes:e,indices:t,primitiveType:We.LINES,boundingSphere:new ue(m.ZERO,Math.sqrt(2))})};var BW=lS;var rtt=new m,Zpe=new U;function stt(e){this.id=e,this.vertexFormat=void 0,this.plane=void 0,this.dimensions=void 0}function Sm(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new stt(e),geometryPropertyName:"plane",observedPropertyNames:["availability","position","orientation","plane"]}),this._onEntityPropertyChanged(e,"plane",e.plane,void 0)}l(Object.create)&&(Sm.prototype=Object.create(Ci.prototype),Sm.prototype.constructor=Sm);Sm.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=jn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof qt){let g;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(g=this._materialProperty.color.getValue(e,Zpe)),l(g)||(g=U.WHITE),o=tn.fromColor(g),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};let c=t.plane,d=this._options,u=t.computeModelMatrix(e),h=z.getValueOrDefault(c.plane,e,d.plane),p=z.getValueOrUndefined(c.dimensions,e,d.dimensions);return d.plane=h,d.dimensions=p,u=V4(h,p,u,u),new wt({id:t,geometry:new ZW(this._options),modelMatrix:u,attributes:i})};Sm.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=z.getValueOrDefault(this._outlineColorProperty,e,U.BLACK,Zpe),o=this._distanceDisplayConditionProperty.getValue(e),r=t.plane,s=this._options,a=t.computeModelMatrix(e),c=z.getValueOrDefault(r.plane,e,s.plane),d=z.getValueOrUndefined(r.dimensions,e,s.dimensions);return s.plane=c,s.dimensions=d,a=V4(c,d,a,a),new wt({id:t,geometry:new BW,modelMatrix:a,attributes:{show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:tn.fromColor(i),distanceDisplayCondition:jn.fromDistanceDisplayCondition(o)}})};Sm.prototype._isHidden=function(e,t){return!l(t.plane)||!l(t.dimensions)||!l(e.position)||Ci.prototype._isHidden.call(this,e,t)};Sm.prototype._getIsClosed=function(e){return!1};Sm.prototype._isDynamic=function(e,t){return!e.position.isConstant||!z.isConstant(e.orientation)||!t.plane.isConstant||!t.dimensions.isConstant||!z.isConstant(t.outlineWidth)};Sm.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof qt,i=this._options;i.vertexFormat=n?yn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,i.plane=t.plane.getValue(ze.MINIMUM_VALUE,i.plane),i.dimensions=t.dimensions.getValue(ze.MINIMUM_VALUE,i.dimensions)};Sm.DynamicGeometryUpdater=dS;function dS(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(dS.prototype=Object.create(yi.prototype),dS.prototype.constructor=dS);dS.prototype._isHidden=function(e,t,n){let i=this._options,o=z.getValueOrUndefined(e.position,n,rtt);return!l(o)||!l(i.plane)||!l(i.dimensions)||yi.prototype._isHidden.call(this,e,t,n)};dS.prototype._setOptions=function(e,t,n){let i=this._options;i.plane=z.getValueOrDefault(t.plane,n,i.plane),i.dimensions=z.getValueOrUndefined(t.dimensions,n,i.dimensions)};var att=new m,ctt=new m,ltt=new m,dtt=new m,utt=new $,mtt=new $,htt=new X;function V4(e,t,n,i){let o=e.normal,r=e.distance,s=m.multiplyByScalar(o,-r,ltt),a=m.clone(m.UNIT_Z,ctt);Z.equalsEpsilon(Math.abs(m.dot(a,o)),1,Z.EPSILON8)&&(a=m.clone(m.UNIT_Y,a));let c=m.cross(a,o,att);a=m.cross(o,c,a),m.normalize(c,c),m.normalize(a,a);let d=utt;$.setColumn(d,0,c,d),$.setColumn(d,1,a,d),$.setColumn(d,2,o,d);let u=m.fromElements(t.x,t.y,1,dtt),h=$.multiplyByScale(d,u,mtt),p=X.fromRotationTranslation(h,s,htt);return X.multiplyTransformation(n,p,i)}Sm.createPrimitiveMatrix=V4;var wW=Sm;var hhi=y(C(),1);var Ami=y(C(),1);var ftt=new m,ptt=new Ke,Att=new D,gtt=new D,btt=new m,ytt=new m,Ctt=new m,XW=new m,xtt=new m,Itt=new m,Bpe=new Pe,_tt=new $,Ett=new $,Ttt=new m;function Stt(e,t,n,i,o,r,s,a,c){let d=e.positions,u=_i.triangulate(e.positions2D,e.holes);u.length<3&&(u=[0,1,2]);let h=Me.createTypedArray(d.length,u.length);h.set(u);let p=_tt;if(i!==0){let A=Pe.fromAxisAngle(s,i,Bpe);if(p=$.fromQuaternion(A,p),t.tangent||t.bitangent){A=Pe.fromAxisAngle(s,-i,Bpe);let T=$.fromQuaternion(A,Ett);a=m.normalize($.multiplyByVector(T,a,a),a),t.bitangent&&(c=m.normalize(m.cross(s,a,c),c))}}else p=$.clone($.IDENTITY,p);let g=gtt;t.st&&(g.x=n.x,g.y=n.y);let f=d.length,b=f*3,x=new Float64Array(b),I=t.normal?new Float32Array(b):void 0,_=t.tangent?new Float32Array(b):void 0,E=t.bitangent?new Float32Array(b):void 0,S=t.st?new Float32Array(f*2):void 0,R=0,G=0,B=0,w=0,F=0;for(let A=0;A<f;A++){let T=d[A];if(x[R++]=T.x,x[R++]=T.y,x[R++]=T.z,t.st)if(l(o)&&o.positions.length===f)S[F++]=o.positions[A].x,S[F++]=o.positions[A].y;else{let L=$.multiplyByVector(p,T,ftt),V=r(L,Att);D.subtract(V,g,V);let W=Z.clamp(V.x/n.width,0,1),M=Z.clamp(V.y/n.height,0,1);S[F++]=W,S[F++]=M}t.normal&&(I[G++]=s.x,I[G++]=s.y,I[G++]=s.z),t.tangent&&(_[w++]=a.x,_[w++]=a.y,_[w++]=a.z),t.bitangent&&(E[B++]=c.x,E[B++]=c.y,E[B++]=c.z)}let P=new xn;return t.position&&(P.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:x})),t.normal&&(P.normal=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:I})),t.tangent&&(P.tangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:_})),t.bitangent&&(P.bitangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:E})),t.st&&(P.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:S})),new pt({attributes:P,indices:h,primitiveType:We.TRIANGLES})}function zx(e){e=e??Y.EMPTY_OBJECT;let t=e.polygonHierarchy,n=e.textureCoordinates,i=e.vertexFormat??we.DEFAULT;this._vertexFormat=we.clone(i),this._polygonHierarchy=t,this._stRotation=e.stRotation??0,this._ellipsoid=ie.clone(e.ellipsoid??ie.default),this._workerName="createCoplanarPolygonGeometry",this._textureCoordinates=n,this.packedLength=ti.computeHierarchyPackedLength(t,m)+we.packedLength+ie.packedLength+(l(n)?ti.computeHierarchyPackedLength(n,D):1)+2}zx.fromPositions=function(e){e=e??Y.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions},vertexFormat:e.vertexFormat,stRotation:e.stRotation,ellipsoid:e.ellipsoid,textureCoordinates:e.textureCoordinates};return new zx(t)};zx.pack=function(e,t,n){return n=n??0,n=ti.packPolygonHierarchy(e._polygonHierarchy,t,n,m),ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,we.pack(e._vertexFormat,t,n),n+=we.packedLength,t[n++]=e._stRotation,l(e._textureCoordinates)?n=ti.packPolygonHierarchy(e._textureCoordinates,t,n,D):t[n++]=-1,t[n++]=e.packedLength,t};var Ltt=ie.clone(ie.UNIT_SPHERE),Rtt=new we,Vtt={polygonHierarchy:{}};zx.unpack=function(e,t,n){t=t??0;let i=ti.unpackPolygonHierarchy(e,t,m);t=i.startingIndex,delete i.startingIndex;let o=ie.unpack(e,t,Ltt);t+=ie.packedLength;let r=we.unpack(e,t,Rtt);t+=we.packedLength;let s=e[t++],a=e[t]===-1?void 0:ti.unpackPolygonHierarchy(e,t,D);l(a)?(t=a.startingIndex,delete a.startingIndex):t++;let c=e[t++];return l(n)||(n=new zx(Vtt)),n._polygonHierarchy=i,n._ellipsoid=ie.clone(o,n._ellipsoid),n._vertexFormat=we.clone(r,n._vertexFormat),n._stRotation=s,n._textureCoordinates=a,n.packedLength=c,n};zx.createGeometry=function(e){let t=e._vertexFormat,n=e._polygonHierarchy,i=e._stRotation,o=e._textureCoordinates,r=l(o),s=n.positions;if(s=Xo(s,m.equalsEpsilon,!0),s.length<3)return;let a=btt,c=ytt,d=Ctt,u=xtt,h=Itt;if(!sg.computeProjectTo2DArguments(s,XW,u,h))return;if(a=m.cross(u,h,a),a=m.normalize(a,a),!m.equalsEpsilon(XW,m.ZERO,Z.EPSILON6)){let F=e._ellipsoid.geodeticSurfaceNormal(XW,Ttt);m.dot(a,F)<0&&(a=m.negate(a,a),u=m.negate(u,u))}let g=sg.createProjectPointsTo2DFunction(XW,u,h),f=sg.createProjectPointTo2DFunction(XW,u,h);t.tangent&&(c=m.clone(u,c)),t.bitangent&&(d=m.clone(h,d));let b=ti.polygonsFromHierarchy(n,r,g,!1),x=b.hierarchy,I=b.polygons,_=function(F){return F},E=r?ti.polygonsFromHierarchy(o,!0,_,!1).polygons:void 0;if(x.length===0)return;s=x[0].outerRing;let S=ue.fromPoints(s),R=ti.computeBoundingRectangle(a,f,s,i,ptt),G=[];for(let F=0;F<I.length;F++){let P=new wt({geometry:Stt(I[F],t,R,i,r?E[F]:void 0,f,a,c,d)});G.push(P)}let B=Yn.combineInstances(G)[0];B.attributes.position.values=new Float64Array(B.attributes.position.values),B.indices=Me.createTypedArray(B.attributes.position.values.length/3,B.indices);let w=B.attributes;return t.position||delete w.position,new pt({attributes:w,indices:B.indices,primitiveType:B.primitiveType,boundingSphere:S})};var WW=zx;var Mmi=y(C(),1);var wpe=[],w5=[];function Gtt(e,t,n,i,o){let s=gs.fromPoints(t,e).projectPointsOntoPlane(t,wpe);_i.computeWindingOrder2D(s)===ws.CLOCKWISE&&(s.reverse(),t=t.slice().reverse());let c,d,u=t.length,h=0;if(i)for(c=new Float64Array(u*2*3),d=0;d<u;d++){let f=t[d],b=t[(d+1)%u];c[h++]=f.x,c[h++]=f.y,c[h++]=f.z,c[h++]=b.x,c[h++]=b.y,c[h++]=b.z}else{let f=0;if(o===dn.GEODESIC)for(d=0;d<u;d++)f+=ti.subdivideLineCount(t[d],t[(d+1)%u],n);else if(o===dn.RHUMB)for(d=0;d<u;d++)f+=ti.subdivideRhumbLineCount(e,t[d],t[(d+1)%u],n);for(c=new Float64Array(f*3),d=0;d<u;d++){let b;o===dn.GEODESIC?b=ti.subdivideLine(t[d],t[(d+1)%u],n,w5):o===dn.RHUMB&&(b=ti.subdivideRhumbLine(e,t[d],t[(d+1)%u],n,w5));let x=b.length;for(let I=0;I<x;++I)c[h++]=b[I]}}u=c.length/3;let p=u*2,g=Me.createTypedArray(u,p);for(h=0,d=0;d<u-1;d++)g[h++]=d,g[h++]=d+1;return g[h++]=u-1,g[h++]=0,new wt({geometry:new pt({attributes:new xn({position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:c})}),indices:g,primitiveType:We.LINES})})}function Ztt(e,t,n,i,o){let s=gs.fromPoints(t,e).projectPointsOntoPlane(t,wpe);_i.computeWindingOrder2D(s)===ws.CLOCKWISE&&(s.reverse(),t=t.slice().reverse());let c,d,u=t.length,h=new Array(u),p=0;if(i)for(c=new Float64Array(u*2*3*2),d=0;d<u;++d){h[d]=p/3;let x=t[d],I=t[(d+1)%u];c[p++]=x.x,c[p++]=x.y,c[p++]=x.z,c[p++]=I.x,c[p++]=I.y,c[p++]=I.z}else{let x=0;if(o===dn.GEODESIC)for(d=0;d<u;d++)x+=ti.subdivideLineCount(t[d],t[(d+1)%u],n);else if(o===dn.RHUMB)for(d=0;d<u;d++)x+=ti.subdivideRhumbLineCount(e,t[d],t[(d+1)%u],n);for(c=new Float64Array(x*3*2),d=0;d<u;++d){h[d]=p/3;let I;o===dn.GEODESIC?I=ti.subdivideLine(t[d],t[(d+1)%u],n,w5):o===dn.RHUMB&&(I=ti.subdivideRhumbLine(e,t[d],t[(d+1)%u],n,w5));let _=I.length;for(let E=0;E<_;++E)c[p++]=I[E]}}u=c.length/6;let g=h.length,f=(u*2+g)*2,b=Me.createTypedArray(u+g,f);for(p=0,d=0;d<u;++d)b[p++]=d,b[p++]=(d+1)%u,b[p++]=d+u,b[p++]=(d+1)%u+u;for(d=0;d<g;d++){let x=h[d];b[p++]=x,b[p++]=x+u}return new wt({geometry:new pt({attributes:new xn({position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:c})}),indices:b,primitiveType:We.LINES})})}function Kx(e){let t=e.polygonHierarchy,n=e.ellipsoid??ie.default,i=e.granularity??Z.RADIANS_PER_DEGREE,o=e.perPositionHeight??!1,r=o&&l(e.extrudedHeight),s=e.arcType??dn.GEODESIC,a=e.height??0,c=e.extrudedHeight??a;if(!r){let d=Math.max(a,c);c=Math.min(a,c),a=d}this._ellipsoid=ie.clone(n),this._granularity=i,this._height=a,this._extrudedHeight=c,this._arcType=s,this._polygonHierarchy=t,this._perPositionHeight=o,this._perPositionHeightExtrude=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createPolygonOutlineGeometry",this.packedLength=ti.computeHierarchyPackedLength(t,m)+ie.packedLength+8}Kx.pack=function(e,t,n){return n=n??0,n=ti.packPolygonHierarchy(e._polygonHierarchy,t,n,m),ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._granularity,t[n++]=e._perPositionHeightExtrude?1:0,t[n++]=e._perPositionHeight?1:0,t[n++]=e._arcType,t[n++]=e._offsetAttribute??-1,t[n]=e.packedLength,t};var Btt=ie.clone(ie.UNIT_SPHERE),wtt={polygonHierarchy:{}};Kx.unpack=function(e,t,n){t=t??0;let i=ti.unpackPolygonHierarchy(e,t,m);t=i.startingIndex,delete i.startingIndex;let o=ie.unpack(e,t,Btt);t+=ie.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++]===1,d=e[t++]===1,u=e[t++],h=e[t++],p=e[t];return l(n)||(n=new Kx(wtt)),n._polygonHierarchy=i,n._ellipsoid=ie.clone(o,n._ellipsoid),n._height=r,n._extrudedHeight=s,n._granularity=a,n._perPositionHeight=d,n._perPositionHeightExtrude=c,n._arcType=u,n._offsetAttribute=h===-1?void 0:h,n.packedLength=p,n};Kx.fromPositions=function(e){e=e??Y.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions},height:e.height,extrudedHeight:e.extrudedHeight,ellipsoid:e.ellipsoid,granularity:e.granularity,perPositionHeight:e.perPositionHeight,arcType:e.arcType,offsetAttribute:e.offsetAttribute};return new Kx(t)};Kx.createGeometry=function(e){let t=e._ellipsoid,n=e._granularity,i=e._polygonHierarchy,o=e._perPositionHeight,r=e._arcType,s=ti.polygonOutlinesFromHierarchy(i,!o,t);if(s.length===0)return;let a,c=[],d=Z.chordLength(n,t.maximumRadius),u=e._height,h=e._extrudedHeight,p=e._perPositionHeightExtrude||!Z.equalsEpsilon(u,h,0,Z.EPSILON2),g,f;if(p)for(f=0;f<s.length;f++){if(a=Ztt(t,s[f],d,o,r),a.geometry=ti.scaleToGeodeticHeightExtruded(a.geometry,u,h,t,o),l(e._offsetAttribute)){let I=a.geometry.attributes.position.values.length/3,_=new Uint8Array(I);e._offsetAttribute===pn.TOP?_=_.fill(1,0,I/2):(g=e._offsetAttribute===pn.NONE?0:1,_=_.fill(g)),a.geometry.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:_})}c.push(a)}else for(f=0;f<s.length;f++){if(a=Gtt(t,s[f],d,o,r),a.geometry.attributes.position.values=_i.scaleToGeodeticHeight(a.geometry.attributes.position.values,u,t,!o),l(e._offsetAttribute)){let I=a.geometry.attributes.position.values.length;g=e._offsetAttribute===pn.NONE?0:1;let _=new Uint8Array(I/3).fill(g);a.geometry.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:_})}c.push(a)}let b=Yn.combineInstances(c)[0],x=ue.fromVertices(b.attributes.position.values);return new pt({attributes:b.attributes,indices:b.indices,primitiveType:b.primitiveType,boundingSphere:x,offsetAttribute:e._offsetAttribute})};var FW=Kx;var Xpe="Entity polygons cannot have both height and perPositionHeight. height will be ignored",Wpe="heightReference is not supported for entity polygons with perPositionHeight. heightReference will be ignored",Fpe=new U,Ppe=m.ZERO,Mpe=new m,vpe=new le,Xtt=[],Wtt=new D;function Ftt(e){this.id=e,this.vertexFormat=void 0,this.polygonHierarchy=void 0,this.perPositionHeight=void 0,this.closeTop=void 0,this.closeBottom=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.offsetAttribute=void 0,this.arcType=void 0,this.textureCoordinates=void 0}function mu(e,t){ii.call(this,{entity:e,scene:t,geometryOptions:new Ftt(e),geometryPropertyName:"polygon",observedPropertyNames:["availability","polygon"]}),this._onEntityPropertyChanged(e,"polygon",e.polygon,void 0)}l(Object.create)&&(mu.prototype=Object.create(ii.prototype),mu.prototype.constructor=mu);mu.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=this._options,o={show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:jn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof qt){let s;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(s=this._materialProperty.color.getValue(e,Fpe)),l(s)||(s=U.WHITE),o.color=tn.fromColor(s)}l(i.offsetAttribute)&&(o.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,Ppe,Mpe)));let r;return i.perPositionHeight&&!l(i.extrudedHeight)?r=new WW(i):r=new VA(i),new wt({id:t,geometry:r,attributes:o})};mu.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=this._options,o=z.getValueOrDefault(this._outlineColorProperty,e,U.BLACK,Fpe),r=this._distanceDisplayConditionProperty.getValue(e),s={show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:tn.fromColor(o),distanceDisplayCondition:jn.fromDistanceDisplayCondition(r),offset:void 0};l(i.offsetAttribute)&&(s.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,Ppe,Mpe)));let a;return i.perPositionHeight&&!l(i.extrudedHeight)?a=new bm(i):a=new FW(i),new wt({id:t,geometry:a,attributes:s})};mu.prototype._computeCenter=function(e,t){let n=z.getValueOrUndefined(this._entity.polygon.hierarchy,e);if(!l(n))return;let i=n.positions;if(i.length===0)return;let o=this._scene.ellipsoid,r=gs.fromPoints(i,o),s=r.projectPointsOntoPlane(i,Xtt),a=s.length,c=0,d=a-1,u=new D;for(let p=0;p<a;d=p++){let g=s[p],f=s[d],b=g.x*f.y-f.x*g.y,x=D.add(g,f,Wtt);x=D.multiplyByScalar(x,b,x),u=D.add(u,x,u),c+=b}let h=1/(c*3);return u=D.multiplyByScalar(u,h,u),r.projectPointOntoEllipsoid(u,t)};mu.prototype._isHidden=function(e,t){return!l(t.hierarchy)||Ci.prototype._isHidden.call(this,e,t)};mu.prototype._isOnTerrain=function(e,t){let n=ii.prototype._isOnTerrain.call(this,e,t),i=t.perPositionHeight,o=l(i)&&(i.isConstant?i.getValue(ze.MINIMUM_VALUE):!0);return n&&!o};mu.prototype._isDynamic=function(e,t){return!t.hierarchy.isConstant||!z.isConstant(t.height)||!z.isConstant(t.extrudedHeight)||!z.isConstant(t.granularity)||!z.isConstant(t.stRotation)||!z.isConstant(t.textureCoordinates)||!z.isConstant(t.outlineWidth)||!z.isConstant(t.perPositionHeight)||!z.isConstant(t.closeTop)||!z.isConstant(t.closeBottom)||!z.isConstant(t.zIndex)||!z.isConstant(t.arcType)||this._onTerrain&&!z.isConstant(this._materialProperty)&&!(this._materialProperty instanceof qt)};mu.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof qt,i=this._options;i.vertexFormat=n?yn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat;let o=t.hierarchy.getValue(ze.MINIMUM_VALUE),r=z.getValueOrUndefined(t.height,ze.MINIMUM_VALUE),s=z.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,et.NONE),a=z.getValueOrUndefined(t.extrudedHeight,ze.MINIMUM_VALUE),c=z.getValueOrDefault(t.extrudedHeightReference,ze.MINIMUM_VALUE,et.NONE),d=z.getValueOrDefault(t.perPositionHeight,ze.MINIMUM_VALUE,!1);r=ii.getGeometryHeight(r,s);let u;if(d?(l(r)&&(r=void 0,xt(Xpe)),s!==et.NONE&&d&&(r=void 0,xt(Wpe))):(l(a)&&!l(r)&&(r=0),u=ii.computeGeometryOffsetAttribute(r,s,a,c)),i.polygonHierarchy=o,i.granularity=z.getValueOrUndefined(t.granularity,ze.MINIMUM_VALUE),i.stRotation=z.getValueOrUndefined(t.stRotation,ze.MINIMUM_VALUE),i.perPositionHeight=d,i.closeTop=z.getValueOrDefault(t.closeTop,ze.MINIMUM_VALUE,!0),i.closeBottom=z.getValueOrDefault(t.closeBottom,ze.MINIMUM_VALUE,!0),i.offsetAttribute=u,i.height=r,i.arcType=z.getValueOrDefault(t.arcType,ze.MINIMUM_VALUE,dn.GEODESIC),i.textureCoordinates=z.getValueOrUndefined(t.textureCoordinates,ze.MINIMUM_VALUE),a=ii.getGeometryExtrudedHeight(a,c),a===ii.CLAMP_TO_GROUND){let h=VA.computeRectangleFromPositions(i.polygonHierarchy.positions,i.ellipsoid,i.arcType,vpe);a=Si.getMinimumMaximumHeights(h).minimumTerrainHeight}i.extrudedHeight=a};mu.prototype._getIsClosed=function(e){let t=e.height,n=e.extrudedHeight,i=l(n)&&n!==t;return!e.perPositionHeight&&(!i&&t===0||i&&e.closeTop&&e.closeBottom)};mu.DynamicGeometryUpdater=uS;function uS(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(uS.prototype=Object.create(yi.prototype),uS.prototype.constructor=uS);uS.prototype._isHidden=function(e,t,n){return!l(this._options.polygonHierarchy)||yi.prototype._isHidden.call(this,e,t,n)};uS.prototype._setOptions=function(e,t,n){let i=this._options;i.polygonHierarchy=z.getValueOrUndefined(t.hierarchy,n);let o=z.getValueOrUndefined(t.height,n),r=z.getValueOrDefault(t.heightReference,n,et.NONE),s=z.getValueOrDefault(t.extrudedHeightReference,n,et.NONE),a=z.getValueOrUndefined(t.extrudedHeight,n),c=z.getValueOrUndefined(t.perPositionHeight,n);o=ii.getGeometryHeight(o,s);let d;if(c?(l(o)&&(o=void 0,xt(Xpe)),r!==et.NONE&&c&&(o=void 0,xt(Wpe))):(l(a)&&!l(o)&&(o=0),d=ii.computeGeometryOffsetAttribute(o,r,a,s)),i.granularity=z.getValueOrUndefined(t.granularity,n),i.stRotation=z.getValueOrUndefined(t.stRotation,n),i.textureCoordinates=z.getValueOrUndefined(t.textureCoordinates,n),i.perPositionHeight=z.getValueOrUndefined(t.perPositionHeight,n),i.closeTop=z.getValueOrDefault(t.closeTop,n,!0),i.closeBottom=z.getValueOrDefault(t.closeBottom,n,!0),i.offsetAttribute=d,i.height=o,i.arcType=z.getValueOrDefault(t.arcType,n,dn.GEODESIC),a=ii.getGeometryExtrudedHeight(a,s),a===ii.CLAMP_TO_GROUND){let u=VA.computeRectangleFromPositions(i.polygonHierarchy.positions,i.ellipsoid,i.arcType,vpe);a=Si.getMinimumMaximumHeights(u).minimumTerrainHeight}i.extrudedHeight=a};var PW=mu;var xfi=y(C(),1);var Phi=y(C(),1);function Ptt(e,t,n,i){let o=new xn;i.position&&(o.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:e}));let r=t.length,s=e.length/3,a=(s-r*2)/(r*2),c=_i.triangulate(t),d=(a-1)*r*6+c.length*2,u=Me.createTypedArray(s,d),h,p,g,f,b,x,I=r*2,_=0;for(h=0;h<a-1;h++){for(p=0;p<r-1;p++)g=p*2+h*r*2,x=g+I,f=g+1,b=f+I,u[_++]=f,u[_++]=g,u[_++]=b,u[_++]=b,u[_++]=g,u[_++]=x;g=r*2-2+h*r*2,f=g+1,b=f+I,x=g+I,u[_++]=f,u[_++]=g,u[_++]=b,u[_++]=b,u[_++]=g,u[_++]=x}if(i.st||i.tangent||i.bitangent){let R=new Float32Array(s*2),G=1/(a-1),B=1/n.height,w=n.height/2,F,P,A=0;for(h=0;h<a;h++){for(F=h*G,P=B*(t[0].y+w),R[A++]=F,R[A++]=P,p=1;p<r;p++)P=B*(t[p].y+w),R[A++]=F,R[A++]=P,R[A++]=F,R[A++]=P;P=B*(t[0].y+w),R[A++]=F,R[A++]=P}for(p=0;p<r;p++)F=0,P=B*(t[p].y+w),R[A++]=F,R[A++]=P;for(p=0;p<r;p++)F=(a-1)*G,P=B*(t[p].y+w),R[A++]=F,R[A++]=P;o.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:new Float32Array(R)})}let E=s-r*2;for(h=0;h<c.length;h+=3){let R=c[h]+E,G=c[h+1]+E,B=c[h+2]+E;u[_++]=R,u[_++]=G,u[_++]=B,u[_++]=B+r,u[_++]=G+r,u[_++]=R+r}let S=new pt({attributes:o,indices:u,boundingSphere:ue.fromVertices(e),primitiveType:We.TRIANGLES});if(i.normal&&(S=Yn.computeNormal(S)),i.tangent||i.bitangent){try{S=Yn.computeTangentAndBitangent(S)}catch{xt("polyline-volume-tangent-bitangent","Unable to compute tangents and bitangents for polyline volume geometry")}i.tangent||(S.attributes.tangent=void 0),i.bitangent||(S.attributes.bitangent=void 0),i.st||(S.attributes.st=void 0)}return S}function vW(e){e=e??Y.EMPTY_OBJECT;let t=e.polylinePositions,n=e.shapePositions;this._positions=t,this._shape=n,this._ellipsoid=ie.clone(e.ellipsoid??ie.default),this._cornerType=e.cornerType??Hi.ROUNDED,this._vertexFormat=we.clone(e.vertexFormat??we.DEFAULT),this._granularity=e.granularity??Z.RADIANS_PER_DEGREE,this._workerName="createPolylineVolumeGeometry";let i=1+t.length*m.packedLength;i+=1+n.length*D.packedLength,this.packedLength=i+ie.packedLength+we.packedLength+2}vW.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=m.packedLength)m.pack(o[i],t,n);let s=e._shape;for(r=s.length,t[n++]=r,i=0;i<r;++i,n+=D.packedLength)D.pack(s[i],t,n);return ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,we.pack(e._vertexFormat,t,n),n+=we.packedLength,t[n++]=e._cornerType,t[n]=e._granularity,t};var Npe=ie.clone(ie.UNIT_SPHERE),Dpe=new we,MW={polylinePositions:void 0,shapePositions:void 0,ellipsoid:Npe,vertexFormat:Dpe,cornerType:void 0,granularity:void 0};vW.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=m.packedLength)r[i]=m.unpack(e,t);o=e[t++];let s=new Array(o);for(i=0;i<o;++i,t+=D.packedLength)s[i]=D.unpack(e,t);let a=ie.unpack(e,t,Npe);t+=ie.packedLength;let c=we.unpack(e,t,Dpe);t+=we.packedLength;let d=e[t++],u=e[t];return l(n)?(n._positions=r,n._shape=s,n._ellipsoid=ie.clone(a,n._ellipsoid),n._vertexFormat=we.clone(c,n._vertexFormat),n._cornerType=d,n._granularity=u,n):(MW.polylinePositions=r,MW.shapePositions=s,MW.cornerType=d,MW.granularity=u,new vW(MW))};var Mtt=new Ke;vW.createGeometry=function(e){let t=e._positions,n=Xo(t,m.equalsEpsilon),i=e._shape;if(i=Dh.removeDuplicatesFromShape(i),n.length<2||i.length<3)return;_i.computeWindingOrder2D(i)===ws.CLOCKWISE&&i.reverse();let o=Ke.fromPoints(i,Mtt),r=Dh.computePositions(n,i,o,e,!0);return Ptt(r,i,o,e._vertexFormat)};var NW=vW;var ofi=y(C(),1);function vtt(e,t){let n=new xn;n.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:e});let i=t.length,o=n.position.values.length/3,s=e.length/3/i,a=Me.createTypedArray(o,2*i*(s+1)),c,d,u=0;c=0;let h=c*i;for(d=0;d<i-1;d++)a[u++]=d+h,a[u++]=d+h+1;for(a[u++]=i-1+h,a[u++]=h,c=s-1,h=c*i,d=0;d<i-1;d++)a[u++]=d+h,a[u++]=d+h+1;for(a[u++]=i-1+h,a[u++]=h,c=0;c<s-1;c++){let g=i*c,f=g+i;for(d=0;d<i;d++)a[u++]=d+g,a[u++]=d+f}return new pt({attributes:n,indices:Me.createTypedArray(o,a),boundingSphere:ue.fromVertices(e),primitiveType:We.LINES})}function QW(e){e=e??Y.EMPTY_OBJECT;let t=e.polylinePositions,n=e.shapePositions;this._positions=t,this._shape=n,this._ellipsoid=ie.clone(e.ellipsoid??ie.default),this._cornerType=e.cornerType??Hi.ROUNDED,this._granularity=e.granularity??Z.RADIANS_PER_DEGREE,this._workerName="createPolylineVolumeOutlineGeometry";let i=1+t.length*m.packedLength;i+=1+n.length*D.packedLength,this.packedLength=i+ie.packedLength+2}QW.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=m.packedLength)m.pack(o[i],t,n);let s=e._shape;for(r=s.length,t[n++]=r,i=0;i<r;++i,n+=D.packedLength)D.pack(s[i],t,n);return ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,t[n++]=e._cornerType,t[n]=e._granularity,t};var Qpe=ie.clone(ie.UNIT_SPHERE),DW={polylinePositions:void 0,shapePositions:void 0,ellipsoid:Qpe,height:void 0,cornerType:void 0,granularity:void 0};QW.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=m.packedLength)r[i]=m.unpack(e,t);o=e[t++];let s=new Array(o);for(i=0;i<o;++i,t+=D.packedLength)s[i]=D.unpack(e,t);let a=ie.unpack(e,t,Qpe);t+=ie.packedLength;let c=e[t++],d=e[t];return l(n)?(n._positions=r,n._shape=s,n._ellipsoid=ie.clone(a,n._ellipsoid),n._cornerType=c,n._granularity=d,n):(DW.polylinePositions=r,DW.shapePositions=s,DW.cornerType=c,DW.granularity=d,new QW(DW))};var Ntt=new Ke;QW.createGeometry=function(e){let t=e._positions,n=Xo(t,m.equalsEpsilon),i=e._shape;if(i=Dh.removeDuplicatesFromShape(i),n.length<2||i.length<3)return;_i.computeWindingOrder2D(i)===ws.CLOCKWISE&&i.reverse();let o=Ke.fromPoints(i,Ntt),r=Dh.computePositions(n,i,o,e,!1);return vtt(r,i)};var UW=QW;var Upe=new U;function Dtt(e){this.id=e,this.vertexFormat=void 0,this.polylinePositions=void 0,this.shapePositions=void 0,this.cornerType=void 0,this.granularity=void 0}function cp(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new Dtt(e),geometryPropertyName:"polylineVolume",observedPropertyNames:["availability","polylineVolume"]}),this._onEntityPropertyChanged(e,"polylineVolume",e.polylineVolume,void 0)}l(Object.create)&&(cp.prototype=Object.create(Ci.prototype),cp.prototype.constructor=cp);cp.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=jn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof qt){let c;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(c=this._materialProperty.color.getValue(e,Upe)),l(c)||(c=U.WHITE),o=tn.fromColor(c),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};return new wt({id:t,geometry:new NW(this._options),attributes:i})};cp.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=z.getValueOrDefault(this._outlineColorProperty,e,U.BLACK,Upe),o=this._distanceDisplayConditionProperty.getValue(e);return new wt({id:t,geometry:new UW(this._options),attributes:{show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:tn.fromColor(i),distanceDisplayCondition:jn.fromDistanceDisplayCondition(o)}})};cp.prototype._isHidden=function(e,t){return!l(t.positions)||!l(t.shape)||Ci.prototype._isHidden.call(this,e,t)};cp.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!t.shape.isConstant||!z.isConstant(t.granularity)||!z.isConstant(t.outlineWidth)||!z.isConstant(t.cornerType)};cp.prototype._setStaticOptions=function(e,t){let n=t.granularity,i=t.cornerType,o=this._options,r=this._materialProperty instanceof qt;o.vertexFormat=r?yn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,o.polylinePositions=t.positions.getValue(ze.MINIMUM_VALUE,o.polylinePositions),o.shapePositions=t.shape.getValue(ze.MINIMUM_VALUE,o.shape),o.granularity=l(n)?n.getValue(ze.MINIMUM_VALUE):void 0,o.cornerType=l(i)?i.getValue(ze.MINIMUM_VALUE):void 0};cp.DynamicGeometryUpdater=mS;function mS(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(mS.prototype=Object.create(yi.prototype),mS.prototype.constructor=mS);mS.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.polylinePositions)||!l(i.shapePositions)||yi.prototype._isHidden.call(this,e,t,n)};mS.prototype._setOptions=function(e,t,n){let i=this._options;i.polylinePositions=z.getValueOrUndefined(t.positions,n,i.polylinePositions),i.shapePositions=z.getValueOrUndefined(t.shape,n),i.granularity=z.getValueOrUndefined(t.granularity,n),i.cornerType=z.getValueOrUndefined(t.cornerType,n)};var kW=cp;var bpi=y(C(),1);var Hfi=y(C(),1);var G4=new m,Ope=new m,Hpe=new m,zpe=new m,Kpe=new le,Qtt=new D,Utt=new ue,ktt=new ue;function Jpe(e,t){let n=new pt({attributes:new xn,primitiveType:We.TRIANGLES});return n.attributes.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:t.positions}),e.normal&&(n.attributes.normal=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:t.normals})),e.tangent&&(n.attributes.tangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:t.tangents})),e.bitangent&&(n.attributes.bitangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:t.bitangents})),n}function Ytt(e,t,n,i){let o=e.length,r=t.normal?new Float32Array(o):void 0,s=t.tangent?new Float32Array(o):void 0,a=t.bitangent?new Float32Array(o):void 0,c=0,d=zpe,u=Hpe,h=Ope;if(t.normal||t.tangent||t.bitangent)for(let p=0;p<o;p+=3){let g=m.fromArray(e,p,G4),f=c+1,b=c+2;h=n.geodeticSurfaceNormal(g,h),(t.tangent||t.bitangent)&&(m.cross(m.UNIT_Z,h,u),$.multiplyByVector(i,u,u),m.normalize(u,u),t.bitangent&&m.normalize(m.cross(h,u,d),d)),t.normal&&(r[c]=h.x,r[f]=h.y,r[b]=h.z),t.tangent&&(s[c]=u.x,s[f]=u.y,s[b]=u.z),t.bitangent&&(a[c]=d.x,a[f]=d.y,a[b]=d.z),c+=3}return Jpe(t,{positions:e,normals:r,tangents:s,bitangents:a})}var Z4=new m,jpe=new m;function Ott(e,t,n){let i=e.length,o=t.normal?new Float32Array(i):void 0,r=t.tangent?new Float32Array(i):void 0,s=t.bitangent?new Float32Array(i):void 0,a=0,c=0,d=0,u=!0,h=zpe,p=Hpe,g=Ope;if(t.normal||t.tangent||t.bitangent)for(let f=0;f<i;f+=6){let b=m.fromArray(e,f,G4),x=m.fromArray(e,(f+6)%i,Z4);if(u){let I=m.fromArray(e,(f+3)%i,jpe);m.subtract(x,b,x),m.subtract(I,b,I),g=m.normalize(m.cross(I,x,g),g),u=!1}m.equalsEpsilon(x,b,Z.EPSILON10)&&(u=!0),(t.tangent||t.bitangent)&&(h=n.geodeticSurfaceNormal(b,h),t.tangent&&(p=m.normalize(m.cross(h,g,p),p))),t.normal&&(o[a++]=g.x,o[a++]=g.y,o[a++]=g.z,o[a++]=g.x,o[a++]=g.y,o[a++]=g.z),t.tangent&&(r[c++]=p.x,r[c++]=p.y,r[c++]=p.z,r[c++]=p.x,r[c++]=p.y,r[c++]=p.z),t.bitangent&&(s[d++]=h.x,s[d++]=h.y,s[d++]=h.z,s[d++]=h.x,s[d++]=h.y,s[d++]=h.z)}return Jpe(t,{positions:e,normals:o,tangents:r,bitangents:s})}function qpe(e,t){let n=e._vertexFormat,i=e._ellipsoid,o=t.height,r=t.width,s=t.northCap,a=t.southCap,c=0,d=o,u=o,h=0;s&&(c=1,u-=1,h+=1),a&&(d-=1,u-=1,h+=1),h+=r*u;let p=n.position?new Float64Array(h*3):void 0,g=n.st?new Float32Array(h*2):void 0,f=0,b=0,x=G4,I=Qtt,_=Number.MAX_VALUE,E=Number.MAX_VALUE,S=-Number.MAX_VALUE,R=-Number.MAX_VALUE;for(let T=c;T<d;++T)for(let L=0;L<r;++L)js.computePosition(t,i,n.st,T,L,x,I),p[f++]=x.x,p[f++]=x.y,p[f++]=x.z,n.st&&(g[b++]=I.x,g[b++]=I.y,_=Math.min(_,I.x),E=Math.min(E,I.y),S=Math.max(S,I.x),R=Math.max(R,I.y));if(s&&(js.computePosition(t,i,n.st,0,0,x,I),p[f++]=x.x,p[f++]=x.y,p[f++]=x.z,n.st&&(g[b++]=I.x,g[b++]=I.y,_=I.x,E=I.y,S=I.x,R=I.y)),a&&(js.computePosition(t,i,n.st,o-1,0,x,I),p[f++]=x.x,p[f++]=x.y,p[f]=x.z,n.st&&(g[b++]=I.x,g[b]=I.y,_=Math.min(_,I.x),E=Math.min(E,I.y),S=Math.max(S,I.x),R=Math.max(R,I.y))),n.st&&(_<0||E<0||S>1||R>1))for(let T=0;T<g.length;T+=2)g[T]=(g[T]-_)/(S-_),g[T+1]=(g[T+1]-E)/(R-E);let G=Ytt(p,n,i,t.tangentRotationMatrix),B=6*(r-1)*(u-1);s&&(B+=3*(r-1)),a&&(B+=3*(r-1));let w=Me.createTypedArray(h,B),F=0,P=0,A;for(A=0;A<u-1;++A){for(let T=0;T<r-1;++T){let L=F,V=L+r,W=V+1,M=L+1;w[P++]=L,w[P++]=V,w[P++]=M,w[P++]=M,w[P++]=V,w[P++]=W,++F}++F}if(s||a){let T=h-1,L=h-1;s&&a&&(T=h-2);let V,W;if(F=0,s)for(A=0;A<r-1;A++)V=F,W=V+1,w[P++]=T,w[P++]=V,w[P++]=W,++F;if(a)for(F=(u-1)*r,A=0;A<r-1;A++)V=F,W=V+1,w[P++]=V,w[P++]=L,w[P++]=W,++F}return G.indices=w,n.st&&(G.attributes.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:g})),G}function hS(e,t,n,i,o){return e[t++]=i[n],e[t++]=i[n+1],e[t++]=i[n+2],e[t++]=o[n],e[t++]=o[n+1],e[t]=o[n+2],e}function fS(e,t,n,i){return e[t++]=i[n],e[t++]=i[n+1],e[t++]=i[n],e[t]=i[n+1],e}var B4=new we;function Htt(e,t){let n=e._shadowVolume,i=e._offsetAttribute,o=e._vertexFormat,r=e._extrudedHeight,s=e._surfaceHeight,a=e._ellipsoid,c=t.height,d=t.width,u;if(n){let rt=we.clone(o,B4);rt.normal=!0,e._vertexFormat=rt}let h=qpe(e,t);n&&(e._vertexFormat=o);let p=_i.scaleToGeodeticHeight(h.attributes.position.values,s,a,!1);p=new Float64Array(p);let g=p.length,f=g*2,b=new Float64Array(f);b.set(p);let x=_i.scaleToGeodeticHeight(h.attributes.position.values,r,a);b.set(x,g),h.attributes.position.values=b;let I=o.normal?new Float32Array(f):void 0,_=o.tangent?new Float32Array(f):void 0,E=o.bitangent?new Float32Array(f):void 0,S=o.st?new Float32Array(f/3*2):void 0,R,G;if(o.normal){for(G=h.attributes.normal.values,I.set(G),u=0;u<g;u++)G[u]=-G[u];I.set(G,g),h.attributes.normal.values=I}if(n){G=h.attributes.normal.values,o.normal||(h.attributes.normal=void 0);let rt=new Float32Array(f);for(u=0;u<g;u++)G[u]=-G[u];rt.set(G,g),h.attributes.extrudeDirection=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:rt})}let B,w=l(i);if(w){let rt=g/3*2,rn=new Uint8Array(rt);i===pn.TOP?rn=rn.fill(1,0,rt/2):(B=i===pn.NONE?0:1,rn=rn.fill(B)),h.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:rn})}if(o.tangent){let rt=h.attributes.tangent.values;for(_.set(rt),u=0;u<g;u++)rt[u]=-rt[u];_.set(rt,g),h.attributes.tangent.values=_}if(o.bitangent){let rt=h.attributes.bitangent.values;E.set(rt),E.set(rt,g),h.attributes.bitangent.values=E}o.st&&(R=h.attributes.st.values,S.set(R),S.set(R,g/3*2),h.attributes.st.values=S);let F=h.indices,P=F.length,A=g/3,T=Me.createTypedArray(f/3,P*2);for(T.set(F),u=0;u<P;u+=3)T[u+P]=F[u+2]+A,T[u+1+P]=F[u+1]+A,T[u+2+P]=F[u]+A;h.indices=T;let L=t.northCap,V=t.southCap,W=c,M=2,Q=0,N=4,k=4;L&&(M-=1,W-=1,Q+=1,N-=2,k-=1),V&&(M-=1,W-=1,Q+=1,N-=2,k-=1),Q+=M*d+2*W-N;let v=(Q+k)*2,O=new Float64Array(v*3),H=n?new Float32Array(v*3):void 0,ee=w?new Uint8Array(v):void 0,K=o.st?new Float32Array(v*2):void 0,te=i===pn.TOP;w&&!te&&(B=i===pn.ALL?1:0,ee=ee.fill(B));let q=0,pe=0,ye=0,he=0,xe=d*W,Te;for(u=0;u<xe;u+=d)Te=u*3,O=hS(O,q,Te,p,x),q+=6,o.st&&(K=fS(K,pe,u*2,R),pe+=4),n&&(ye+=3,H[ye++]=G[Te],H[ye++]=G[Te+1],H[ye++]=G[Te+2]),te&&(ee[he++]=1,he+=1);if(V){let rt=L?xe+1:xe;for(Te=rt*3,u=0;u<2;u++)O=hS(O,q,Te,p,x),q+=6,o.st&&(K=fS(K,pe,rt*2,R),pe+=4),n&&(ye+=3,H[ye++]=G[Te],H[ye++]=G[Te+1],H[ye++]=G[Te+2]),te&&(ee[he++]=1,he+=1)}else for(u=xe-d;u<xe;u++)Te=u*3,O=hS(O,q,Te,p,x),q+=6,o.st&&(K=fS(K,pe,u*2,R),pe+=4),n&&(ye+=3,H[ye++]=G[Te],H[ye++]=G[Te+1],H[ye++]=G[Te+2]),te&&(ee[he++]=1,he+=1);for(u=xe-1;u>0;u-=d)Te=u*3,O=hS(O,q,Te,p,x),q+=6,o.st&&(K=fS(K,pe,u*2,R),pe+=4),n&&(ye+=3,H[ye++]=G[Te],H[ye++]=G[Te+1],H[ye++]=G[Te+2]),te&&(ee[he++]=1,he+=1);if(L){let rt=xe;for(Te=rt*3,u=0;u<2;u++)O=hS(O,q,Te,p,x),q+=6,o.st&&(K=fS(K,pe,rt*2,R),pe+=4),n&&(ye+=3,H[ye++]=G[Te],H[ye++]=G[Te+1],H[ye++]=G[Te+2]),te&&(ee[he++]=1,he+=1)}else for(u=d-1;u>=0;u--)Te=u*3,O=hS(O,q,Te,p,x),q+=6,o.st&&(K=fS(K,pe,u*2,R),pe+=4),n&&(ye+=3,H[ye++]=G[Te],H[ye++]=G[Te+1],H[ye++]=G[Te+2]),te&&(ee[he++]=1,he+=1);let Be=Ott(O,o,a);o.st&&(Be.attributes.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:K})),n&&(Be.attributes.extrudeDirection=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:H})),w&&(Be.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:ee}));let Le=Me.createTypedArray(v,Q*6),De,Ue,je,it;g=O.length/3;let nn=0;for(u=0;u<g-1;u+=2){De=u,it=(De+2)%g;let rt=m.fromArray(O,De*3,Z4),rn=m.fromArray(O,it*3,jpe);m.equalsEpsilon(rt,rn,Z.EPSILON10)||(Ue=(De+1)%g,je=(Ue+2)%g,Le[nn++]=De,Le[nn++]=Ue,Le[nn++]=it,Le[nn++]=it,Le[nn++]=Ue,Le[nn++]=je)}return Be.indices=Le,Be=Yn.combineInstances([new wt({geometry:h}),new wt({geometry:Be})]),Be[0]}var ztt=[new m,new m,new m,new m],$pe=new ge,Ktt=new ge;function w4(e,t,n,i,o){if(n===0)return le.clone(e,o);let r=js.computeOptions(e,t,n,0,Kpe,$pe),s=r.height,a=r.width,c=ztt;return js.computePosition(r,i,!1,0,0,c[0]),js.computePosition(r,i,!1,0,a-1,c[1]),js.computePosition(r,i,!1,s-1,0,c[2]),js.computePosition(r,i,!1,s-1,a-1,c[3]),le.fromCartesianArray(c,i,o)}function lp(e){e=e??Y.EMPTY_OBJECT;let t=e.rectangle,n=e.height??0,i=e.extrudedHeight??n;this._rectangle=le.clone(t),this._granularity=e.granularity??Z.RADIANS_PER_DEGREE,this._ellipsoid=ie.clone(e.ellipsoid??ie.default),this._surfaceHeight=Math.max(n,i),this._rotation=e.rotation??0,this._stRotation=e.stRotation??0,this._vertexFormat=we.clone(e.vertexFormat??we.DEFAULT),this._extrudedHeight=Math.min(n,i),this._shadowVolume=e.shadowVolume??!1,this._workerName="createRectangleGeometry",this._offsetAttribute=e.offsetAttribute,this._rotatedRectangle=void 0,this._textureCoordinateRotationPoints=void 0}lp.packedLength=le.packedLength+ie.packedLength+we.packedLength+7;lp.pack=function(e,t,n){return n=n??0,le.pack(e._rectangle,t,n),n+=le.packedLength,ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,we.pack(e._vertexFormat,t,n),n+=we.packedLength,t[n++]=e._granularity,t[n++]=e._surfaceHeight,t[n++]=e._rotation,t[n++]=e._stRotation,t[n++]=e._extrudedHeight,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var eAe=new le,tAe=ie.clone(ie.UNIT_SPHERE),W0={rectangle:eAe,ellipsoid:tAe,vertexFormat:B4,granularity:void 0,height:void 0,rotation:void 0,stRotation:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};lp.unpack=function(e,t,n){t=t??0;let i=le.unpack(e,t,eAe);t+=le.packedLength;let o=ie.unpack(e,t,tAe);t+=ie.packedLength;let r=we.unpack(e,t,B4);t+=we.packedLength;let s=e[t++],a=e[t++],c=e[t++],d=e[t++],u=e[t++],h=e[t++]===1,p=e[t];return l(n)?(n._rectangle=le.clone(i,n._rectangle),n._ellipsoid=ie.clone(o,n._ellipsoid),n._vertexFormat=we.clone(r,n._vertexFormat),n._granularity=s,n._surfaceHeight=a,n._rotation=c,n._stRotation=d,n._extrudedHeight=u,n._shadowVolume=h,n._offsetAttribute=p===-1?void 0:p,n):(W0.granularity=s,W0.height=a,W0.rotation=c,W0.stRotation=d,W0.extrudedHeight=u,W0.shadowVolume=h,W0.offsetAttribute=p===-1?void 0:p,new lp(W0))};lp.computeRectangle=function(e,t){e=e??Y.EMPTY_OBJECT;let n=e.rectangle,i=e.granularity??Z.RADIANS_PER_DEGREE,o=e.ellipsoid??ie.default,r=e.rotation??0;return w4(n,i,r,o,t)};var Jtt=new $,kpe=new Pe,jtt=new ge;lp.createGeometry=function(e){if(Z.equalsEpsilon(e._rectangle.north,e._rectangle.south,Z.EPSILON10)||Z.equalsEpsilon(e._rectangle.east,e._rectangle.west,Z.EPSILON10))return;let t=e._rectangle,n=e._ellipsoid,i=e._rotation,o=e._stRotation,r=e._vertexFormat,s=js.computeOptions(t,e._granularity,i,o,Kpe,$pe,Ktt),a=Jtt;if(o!==0||i!==0){let g=le.center(t,jtt),f=n.geodeticSurfaceNormalCartographic(g,Z4);Pe.fromAxisAngle(f,-o,kpe),$.fromQuaternion(kpe,a)}else $.clone($.IDENTITY,a);let c=e._surfaceHeight,d=e._extrudedHeight,u=!Z.equalsEpsilon(c,d,0,Z.EPSILON2);s.lonScalar=1/e._rectangle.width,s.latScalar=1/e._rectangle.height,s.tangentRotationMatrix=a;let h,p;if(t=e._rectangle,u){h=Htt(e,s);let g=ue.fromRectangle3D(t,n,c,ktt),f=ue.fromRectangle3D(t,n,d,Utt);p=ue.union(g,f)}else{if(h=qpe(e,s),h.attributes.position.values=_i.scaleToGeodeticHeight(h.attributes.position.values,c,n,!1),l(e._offsetAttribute)){let g=h.attributes.position.values.length,f=e._offsetAttribute===pn.NONE?0:1,b=new Uint8Array(g/3).fill(f);h.attributes.applyOffset=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:1,values:b})}p=ue.fromRectangle3D(t,n,c)}return r.position||delete h.attributes.position,new pt({attributes:h.attributes,indices:h.indices,primitiveType:h.primitiveType,boundingSphere:p,offsetAttribute:e._offsetAttribute})};lp.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new lp({rectangle:e._rectangle,rotation:e._rotation,ellipsoid:o,stRotation:e._stRotation,granularity:i,extrudedHeight:s,height:r,vertexFormat:we.POSITION_ONLY,shadowVolume:!0})};var Ype=new le,qtt=[new D,new D,new D],$tt=new Qi,ent=new ge;function tnt(e){if(e._stRotation===0)return[0,0,0,1,1,0];let t=le.clone(e._rectangle,Ype),n=e._granularity,i=e._ellipsoid,o=e._rotation-e._stRotation,r=w4(t,n,o,i,Ype),s=qtt;s[0].x=r.west,s[0].y=r.south,s[1].x=r.west,s[1].y=r.north,s[2].x=r.east,s[2].y=r.south;let a=e.rectangle,c=Qi.fromRotation(e._stRotation,$tt),d=le.center(a,ent);for(let f=0;f<3;++f){let b=s[f];b.x-=d.longitude,b.y-=d.latitude,Qi.multiplyByVector(c,b,b),b.x+=d.longitude,b.y+=d.latitude,b.x=(b.x-a.west)/a.width,b.y=(b.y-a.south)/a.height}let u=s[0],h=s[1],p=s[2],g=new Array(6);return D.pack(u,g),D.pack(h,g,2),D.pack(p,g,4),g}Object.defineProperties(lp.prototype,{rectangle:{get:function(){return l(this._rotatedRectangle)||(this._rotatedRectangle=w4(this._rectangle,this._granularity,this._rotation,this._ellipsoid)),this._rotatedRectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=tnt(this)),this._textureCoordinateRotationPoints}}});var Jx=lp;var nAe=new U,iAe=m.ZERO,oAe=new m,rAe=new le,nnt=new le,int=new ge;function ont(e){this.id=e,this.vertexFormat=void 0,this.rectangle=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.rotation=void 0,this.offsetAttribute=void 0}function Kh(e,t){ii.call(this,{entity:e,scene:t,geometryOptions:new ont(e),geometryPropertyName:"rectangle",observedPropertyNames:["availability","rectangle"]}),this._onEntityPropertyChanged(e,"rectangle",e.rectangle,void 0)}l(Object.create)&&(Kh.prototype=Object.create(ii.prototype),Kh.prototype.constructor=Kh);Kh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:jn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof qt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,nAe)),l(o)||(o=U.WHITE),i.color=tn.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,iAe,oAe))),new wt({id:t,geometry:new Jx(this._options),attributes:i})};Kh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=z.getValueOrDefault(this._outlineColorProperty,e,U.BLACK,nAe),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:tn.fromColor(i),distanceDisplayCondition:jn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=mo.fromCartesian3(z.getValueOrDefault(this._terrainOffsetProperty,e,iAe,oAe))),new wt({id:t,geometry:new _x(this._options),attributes:r})};Kh.prototype._computeCenter=function(e,t){let n=z.getValueOrUndefined(this._entity.rectangle.coordinates,e,nnt);if(!l(n))return;let i=le.center(n,int);return ge.toCartesian(i,ie.default,t)};Kh.prototype._isHidden=function(e,t){return!l(t.coordinates)||Ci.prototype._isHidden.call(this,e,t)};Kh.prototype._isDynamic=function(e,t){return!t.coordinates.isConstant||!z.isConstant(t.height)||!z.isConstant(t.extrudedHeight)||!z.isConstant(t.granularity)||!z.isConstant(t.stRotation)||!z.isConstant(t.rotation)||!z.isConstant(t.outlineWidth)||!z.isConstant(t.zIndex)||this._onTerrain&&!z.isConstant(this._materialProperty)&&!(this._materialProperty instanceof qt)};Kh.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof qt,i=z.getValueOrUndefined(t.height,ze.MINIMUM_VALUE),o=z.getValueOrDefault(t.heightReference,ze.MINIMUM_VALUE,et.NONE),r=z.getValueOrUndefined(t.extrudedHeight,ze.MINIMUM_VALUE),s=z.getValueOrDefault(t.extrudedHeightReference,ze.MINIMUM_VALUE,et.NONE);l(r)&&!l(i)&&(i=0);let a=this._options;a.vertexFormat=n?yn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,a.rectangle=t.coordinates.getValue(ze.MINIMUM_VALUE,a.rectangle),a.granularity=z.getValueOrUndefined(t.granularity,ze.MINIMUM_VALUE),a.stRotation=z.getValueOrUndefined(t.stRotation,ze.MINIMUM_VALUE),a.rotation=z.getValueOrUndefined(t.rotation,ze.MINIMUM_VALUE),a.offsetAttribute=ii.computeGeometryOffsetAttribute(i,o,r,s),a.height=ii.getGeometryHeight(i,o),r=ii.getGeometryExtrudedHeight(r,s),r===ii.CLAMP_TO_GROUND&&(r=Si.getMinimumMaximumHeights(Jx.computeRectangle(a,rAe)).minimumTerrainHeight),a.extrudedHeight=r};Kh.DynamicGeometryUpdater=pS;function pS(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(pS.prototype=Object.create(yi.prototype),pS.prototype.constructor=pS);pS.prototype._isHidden=function(e,t,n){return!l(this._options.rectangle)||yi.prototype._isHidden.call(this,e,t,n)};pS.prototype._setOptions=function(e,t,n){let i=this._options,o=z.getValueOrUndefined(t.height,n),r=z.getValueOrDefault(t.heightReference,n,et.NONE),s=z.getValueOrUndefined(t.extrudedHeight,n),a=z.getValueOrDefault(t.extrudedHeightReference,n,et.NONE);l(s)&&!l(o)&&(o=0),i.rectangle=z.getValueOrUndefined(t.coordinates,n,i.rectangle),i.granularity=z.getValueOrUndefined(t.granularity,n),i.stRotation=z.getValueOrUndefined(t.stRotation,n),i.rotation=z.getValueOrUndefined(t.rotation,n),i.offsetAttribute=ii.computeGeometryOffsetAttribute(o,r,s,a),i.height=ii.getGeometryHeight(o,r),s=ii.getGeometryExtrudedHeight(s,a),s===ii.CLAMP_TO_GROUND&&(s=Si.getMinimumMaximumHeights(Jx.computeRectangle(i,rAe)).minimumTerrainHeight),i.extrudedHeight=s};var YW=Kh;var CAi=y(C(),1);var Qpi=y(C(),1);var Spi=y(C(),1);var sAe={};function rnt(e,t){return Z.equalsEpsilon(e.latitude,t.latitude,Z.EPSILON10)&&Z.equalsEpsilon(e.longitude,t.longitude,Z.EPSILON10)}var snt=new ge,ant=new ge;function cnt(e,t,n,i){t=Xo(t,m.equalsEpsilon);let o=t.length;if(o<2)return;let r=l(i),s=l(n),a=new Array(o),c=new Array(o),d=new Array(o),u=t[0];a[0]=u;let h=e.cartesianToCartographic(u,snt);s&&(h.height=n[0]),c[0]=h.height,r?d[0]=i[0]:d[0]=0;let p=c[0],g=d[0],f=p===g,b=1;for(let x=1;x<o;++x){let I=t[x],_=e.cartesianToCartographic(I,ant);s&&(_.height=n[x]),f=f&&_.height===0,rnt(h,_)?h.height<_.height&&(c[b-1]=_.height):(a[b]=I,c[b]=_.height,r?d[b]=i[x]:d[b]=0,f=f&&c[b]===d[b],ge.clone(_,h),++b)}if(!(f||b<2))return a.length=b,c.length=b,d.length=b,{positions:a,topHeights:c,bottomHeights:d}}var lnt=new Array(2),dnt=new Array(2),unt={positions:void 0,height:void 0,granularity:void 0,ellipsoid:void 0};sAe.computePositions=function(e,t,n,i,o,r){let s=cnt(e,t,n,i);if(!l(s))return;t=s.positions,n=s.topHeights,i=s.bottomHeights;let a=t.length,c=a-2,d,u,h=Z.chordLength(o,e.maximumRadius),p=unt;if(p.minDistance=h,p.ellipsoid=e,r){let g=0,f;for(f=0;f<a-1;f++)g+=Oi.numberOfPoints(t[f],t[f+1],h)+1;d=new Float64Array(g*3),u=new Float64Array(g*3);let b=lnt,x=dnt;p.positions=b,p.height=x;let I=0;for(f=0;f<a-1;f++){b[0]=t[f],b[1]=t[f+1],x[0]=n[f],x[1]=n[f+1];let _=Oi.generateArc(p);d.set(_,I),x[0]=i[f],x[1]=i[f+1],u.set(Oi.generateArc(p),I),I+=_.length}}else p.positions=t,p.height=n,d=new Float64Array(Oi.generateArc(p)),p.height=i,u=new Float64Array(Oi.generateArc(p));return{bottomPositions:u,topPositions:d,numCorners:c}};var jx=sAe;var X4=new m,X5=new m,mnt=new m,aAe=new m,hnt=new m,fnt=new m,pnt=new m;function qx(e){e=e??Y.EMPTY_OBJECT;let t=e.positions,n=e.maximumHeights,i=e.minimumHeights,o=e.vertexFormat??we.DEFAULT,r=e.granularity??Z.RADIANS_PER_DEGREE,s=e.ellipsoid??ie.default;this._positions=t,this._minimumHeights=i,this._maximumHeights=n,this._vertexFormat=we.clone(o),this._granularity=r,this._ellipsoid=ie.clone(s),this._workerName="createWallGeometry";let a=1+t.length*m.packedLength+2;l(i)&&(a+=i.length),l(n)&&(a+=n.length),this.packedLength=a+ie.packedLength+we.packedLength+1}qx.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=m.packedLength)m.pack(o[i],t,n);let s=e._minimumHeights;if(r=l(s)?s.length:0,t[n++]=r,l(s))for(i=0;i<r;++i)t[n++]=s[i];let a=e._maximumHeights;if(r=l(a)?a.length:0,t[n++]=r,l(a))for(i=0;i<r;++i)t[n++]=a[i];return ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,we.pack(e._vertexFormat,t,n),n+=we.packedLength,t[n]=e._granularity,t};var cAe=ie.clone(ie.UNIT_SPHERE),lAe=new we,OW={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:cAe,vertexFormat:lAe,granularity:void 0};qx.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=m.packedLength)r[i]=m.unpack(e,t);o=e[t++];let s;if(o>0)for(s=new Array(o),i=0;i<o;++i)s[i]=e[t++];o=e[t++];let a;if(o>0)for(a=new Array(o),i=0;i<o;++i)a[i]=e[t++];let c=ie.unpack(e,t,cAe);t+=ie.packedLength;let d=we.unpack(e,t,lAe);t+=we.packedLength;let u=e[t];return l(n)?(n._positions=r,n._minimumHeights=s,n._maximumHeights=a,n._ellipsoid=ie.clone(c,n._ellipsoid),n._vertexFormat=we.clone(d,n._vertexFormat),n._granularity=u,n):(OW.positions=r,OW.minimumHeights=s,OW.maximumHeights=a,OW.granularity=u,new qx(OW))};qx.fromConstantHeights=function(e){e=e??Y.EMPTY_OBJECT;let t=e.positions,n,i,o=e.minimumHeight,r=e.maximumHeight,s=l(o),a=l(r);if(s||a){let d=t.length;n=s?new Array(d):void 0,i=a?new Array(d):void 0;for(let u=0;u<d;++u)s&&(n[u]=o),a&&(i[u]=r)}let c={positions:t,maximumHeights:i,minimumHeights:n,ellipsoid:e.ellipsoid,vertexFormat:e.vertexFormat};return new qx(c)};qx.createGeometry=function(e){let t=e._positions,n=e._minimumHeights,i=e._maximumHeights,o=e._vertexFormat,r=e._granularity,s=e._ellipsoid,a=jx.computePositions(s,t,i,n,r,!0);if(!l(a))return;let c=a.bottomPositions,d=a.topPositions,u=a.numCorners,h=d.length,p=h*2,g=o.position?new Float64Array(p):void 0,f=o.normal?new Float32Array(p):void 0,b=o.tangent?new Float32Array(p):void 0,x=o.bitangent?new Float32Array(p):void 0,I=o.st?new Float32Array(p/3*2):void 0,_=0,E=0,S=0,R=0,G=0,B=pnt,w=fnt,F=hnt,P=!0;h/=3;let A,T=0,L=1/(h-u-1);for(A=0;A<h;++A){let N=A*3,k=m.fromArray(d,N,X4),v=m.fromArray(c,N,X5);if(o.position&&(g[_++]=v.x,g[_++]=v.y,g[_++]=v.z,g[_++]=k.x,g[_++]=k.y,g[_++]=k.z),o.st&&(I[G++]=T,I[G++]=0,I[G++]=T,I[G++]=1),o.normal||o.tangent||o.bitangent){let O=m.clone(m.ZERO,aAe),H=m.subtract(k,s.geodeticSurfaceNormal(k,X5),X5);if(A+1<h&&(O=m.fromArray(d,N+3,aAe)),P){let ee=m.subtract(O,k,mnt),K=m.subtract(H,k,X4);B=m.normalize(m.cross(K,ee,B),B),P=!1}m.equalsEpsilon(k,O,Z.EPSILON10)?P=!0:(T+=L,o.tangent&&(w=m.normalize(m.subtract(O,k,w),w)),o.bitangent&&(F=m.normalize(m.cross(B,w,F),F))),o.normal&&(f[E++]=B.x,f[E++]=B.y,f[E++]=B.z,f[E++]=B.x,f[E++]=B.y,f[E++]=B.z),o.tangent&&(b[R++]=w.x,b[R++]=w.y,b[R++]=w.z,b[R++]=w.x,b[R++]=w.y,b[R++]=w.z),o.bitangent&&(x[S++]=F.x,x[S++]=F.y,x[S++]=F.z,x[S++]=F.x,x[S++]=F.y,x[S++]=F.z)}}let V=new xn;o.position&&(V.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:g})),o.normal&&(V.normal=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:f})),o.tangent&&(V.tangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:b})),o.bitangent&&(V.bitangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:x})),o.st&&(V.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:I}));let W=p/3;p-=6*(u+1);let M=Me.createTypedArray(W,p),Q=0;for(A=0;A<W-2;A+=2){let N=A,k=A+2,v=m.fromArray(g,N*3,X4),O=m.fromArray(g,k*3,X5);if(m.equalsEpsilon(v,O,Z.EPSILON10))continue;let H=A+1,ee=A+3;M[Q++]=H,M[Q++]=N,M[Q++]=ee,M[Q++]=ee,M[Q++]=N,M[Q++]=k}return new pt({attributes:V,indices:M,primitiveType:We.TRIANGLES,boundingSphere:new ue.fromVertices(g)})};var HW=qx;var iAi=y(C(),1);var dAe=new m,uAe=new m;function $x(e){e=e??Y.EMPTY_OBJECT;let t=e.positions,n=e.maximumHeights,i=e.minimumHeights,o=e.granularity??Z.RADIANS_PER_DEGREE,r=e.ellipsoid??ie.default;this._positions=t,this._minimumHeights=i,this._maximumHeights=n,this._granularity=o,this._ellipsoid=ie.clone(r),this._workerName="createWallOutlineGeometry";let s=1+t.length*m.packedLength+2;l(i)&&(s+=i.length),l(n)&&(s+=n.length),this.packedLength=s+ie.packedLength+1}$x.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=m.packedLength)m.pack(o[i],t,n);let s=e._minimumHeights;if(r=l(s)?s.length:0,t[n++]=r,l(s))for(i=0;i<r;++i)t[n++]=s[i];let a=e._maximumHeights;if(r=l(a)?a.length:0,t[n++]=r,l(a))for(i=0;i<r;++i)t[n++]=a[i];return ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,t[n]=e._granularity,t};var mAe=ie.clone(ie.UNIT_SPHERE),zW={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:mAe,granularity:void 0};$x.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=m.packedLength)r[i]=m.unpack(e,t);o=e[t++];let s;if(o>0)for(s=new Array(o),i=0;i<o;++i)s[i]=e[t++];o=e[t++];let a;if(o>0)for(a=new Array(o),i=0;i<o;++i)a[i]=e[t++];let c=ie.unpack(e,t,mAe);t+=ie.packedLength;let d=e[t];return l(n)?(n._positions=r,n._minimumHeights=s,n._maximumHeights=a,n._ellipsoid=ie.clone(c,n._ellipsoid),n._granularity=d,n):(zW.positions=r,zW.minimumHeights=s,zW.maximumHeights=a,zW.granularity=d,new $x(zW))};$x.fromConstantHeights=function(e){e=e??Y.EMPTY_OBJECT;let t=e.positions,n,i,o=e.minimumHeight,r=e.maximumHeight,s=l(o),a=l(r);if(s||a){let d=t.length;n=s?new Array(d):void 0,i=a?new Array(d):void 0;for(let u=0;u<d;++u)s&&(n[u]=o),a&&(i[u]=r)}let c={positions:t,maximumHeights:i,minimumHeights:n,ellipsoid:e.ellipsoid};return new $x(c)};$x.createGeometry=function(e){let t=e._positions,n=e._minimumHeights,i=e._maximumHeights,o=e._granularity,r=e._ellipsoid,s=jx.computePositions(r,t,i,n,o,!1);if(!l(s))return;let a=s.bottomPositions,c=s.topPositions,d=c.length,u=d*2,h=new Float64Array(u),p=0;d/=3;let g;for(g=0;g<d;++g){let _=g*3,E=m.fromArray(c,_,dAe),S=m.fromArray(a,_,uAe);h[p++]=S.x,h[p++]=S.y,h[p++]=S.z,h[p++]=E.x,h[p++]=E.y,h[p++]=E.z}let f=new xn({position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:h})}),b=u/3;u=2*b-4+b;let x=Me.createTypedArray(b,u),I=0;for(g=0;g<b-2;g+=2){let _=g,E=g+2,S=m.fromArray(h,_*3,dAe),R=m.fromArray(h,E*3,uAe);if(m.equalsEpsilon(S,R,Z.EPSILON10))continue;let G=g+1,B=g+3;x[I++]=G,x[I++]=_,x[I++]=G,x[I++]=B,x[I++]=_,x[I++]=E}return x[I++]=b-2,x[I++]=b-1,new pt({attributes:f,indices:x,primitiveType:We.LINES,boundingSphere:new ue.fromVertices(h)})};var KW=$x;var hAe=new U;function Ant(e){this.id=e,this.vertexFormat=void 0,this.positions=void 0,this.minimumHeights=void 0,this.maximumHeights=void 0,this.granularity=void 0}function Jh(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new Ant(e),geometryPropertyName:"wall",observedPropertyNames:["availability","wall"]}),this._onEntityPropertyChanged(e,"wall",e.wall,void 0)}l(Object.create)&&(Jh.prototype=Object.create(Ci.prototype),Jh.prototype.constructor=Jh);Jh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=jn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof qt){let c;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(c=this._materialProperty.color.getValue(e,hAe)),l(c)||(c=U.WHITE),o=tn.fromColor(c),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};return new wt({id:t,geometry:new HW(this._options),attributes:i})};Jh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=z.getValueOrDefault(this._outlineColorProperty,e,U.BLACK,hAe),o=this._distanceDisplayConditionProperty.getValue(e);return new wt({id:t,geometry:new KW(this._options),attributes:{show:new Vn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:tn.fromColor(i),distanceDisplayCondition:jn.fromDistanceDisplayCondition(o)}})};Jh.prototype._isHidden=function(e,t){return!l(t.positions)||Ci.prototype._isHidden.call(this,e,t)};Jh.prototype._getIsClosed=function(e){return!1};Jh.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!z.isConstant(t.minimumHeights)||!z.isConstant(t.maximumHeights)||!z.isConstant(t.outlineWidth)||!z.isConstant(t.granularity)};Jh.prototype._setStaticOptions=function(e,t){let n=t.minimumHeights,i=t.maximumHeights,o=t.granularity,r=this._materialProperty instanceof qt,s=this._options;s.vertexFormat=r?yn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,s.positions=t.positions.getValue(ze.MINIMUM_VALUE,s.positions),s.minimumHeights=l(n)?n.getValue(ze.MINIMUM_VALUE,s.minimumHeights):void 0,s.maximumHeights=l(i)?i.getValue(ze.MINIMUM_VALUE,s.maximumHeights):void 0,s.granularity=l(o)?o.getValue(ze.MINIMUM_VALUE):void 0};Jh.DynamicGeometryUpdater=AS;function AS(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(AS.prototype=Object.create(yi.prototype),AS.prototype.constructor=AS);AS.prototype._isHidden=function(e,t,n){return!l(this._options.positions)||yi.prototype._isHidden.call(this,e,t,n)};AS.prototype._setOptions=function(e,t,n){let i=this._options;i.positions=z.getValueOrUndefined(t.positions,n,i.positions),i.minimumHeights=z.getValueOrUndefined(t.minimumHeights,n,i.minimumHeights),i.maximumHeights=z.getValueOrUndefined(t.maximumHeights,n,i.maximumHeights),i.granularity=z.getValueOrUndefined(t.granularity,n)};var JW=Jh;var eI=[AZ,pW,sW,RW,GW,wW,PW,kW,YW,JW];function tI(e,t){this.entity=e,this.scene=t;let n=new Array(eI.length),i=new Ce,o=new Lr;for(let r=0;r<n.length;r++){let s=new eI[r](e,t);o.add(s.geometryChanged,a=>{i.raiseEvent(a)}),n[r]=s}this.updaters=n,this.geometryChanged=i,this.eventHelper=o,this._removeEntitySubscription=e.definitionChanged.addEventListener(tI.prototype._onEntityPropertyChanged,this)}tI.prototype._onEntityPropertyChanged=function(e,t,n,i){let o=this.updaters;for(let r=0;r<o.length;r++)o[r]._onEntityPropertyChanged(e,t,n,i)};tI.prototype.forEach=function(e){let t=this.updaters;for(let n=0;n<t.length;n++)e(t[n])};tI.prototype.destroy=function(){this.eventHelper.removeAll();let e=this.updaters;for(let t=0;t<e.length;t++)e[t].destroy();this._removeEntitySubscription(),me(this)};tI.registerUpdater=function(e){eI.includes(e)||eI.push(e)};tI.unregisterUpdater=function(e){if(eI.includes(e)){let t=eI.indexOf(e);eI.splice(t,1)}};var nI=tI;var jAi=y(C(),1);var fAe=new U,gnt=new Qt,bnt=new Qt,ynt=m.ZERO,Cnt=new m;function jh(e,t,n,i,o,r,s){this.translucent=t,this.appearanceType=n,this.depthFailAppearanceType=i,this.depthFailMaterialProperty=o,this.depthFailMaterial=void 0,this.closed=r,this.shadows=s,this.primitives=e,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Bt,this.updaters=new Bt,this.updatersWithAttributes=new Bt,this.attributes=new Bt,this.subscriptions=new Bt,this.showsUpdated=new Bt,this.itemsToRemove=[],this.invalidated=!1;let a;l(o)&&(a=o.definitionChanged.addEventListener(jh.prototype.onMaterialChanged,this)),this.removeMaterialSubscription=a}jh.prototype.onMaterialChanged=function(){this.invalidated=!0};jh.prototype.isMaterial=function(e){let t=this.depthFailMaterialProperty,n=e.depthFailMaterialProperty;return n===t?!0:l(t)?t.equals(n):!1};jh.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),!e.hasConstantFill||!e.fillMaterialProperty.isConstant||!z.isConstant(e.distanceDisplayConditionProperty)||!z.isConstant(e.terrainOffsetProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};jh.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};jh.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0){l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i);let c;l(this.depthFailAppearanceType)&&(l(this.depthFailMaterialProperty)&&(this.depthFailMaterial=dr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial)),c=new this.depthFailAppearanceType({material:this.depthFailMaterial,translucent:this.translucent,closed:this.closed})),i=new Nn({show:!1,asynchronous:!0,geometryInstances:s.slice(),appearance:new this.appearanceType({translucent:this.translucent,closed:this.closed}),depthFailAppearance:c,shadows:this.shadows}),o.add(i),t=!1}else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0),l(this.depthFailAppearanceType)&&!(this.depthFailMaterialProperty instanceof qt)&&(this.depthFailMaterial=dr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),this.primitive.depthFailAppearance.material=this.depthFailMaterial);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let d=s[r],u=this.geometry.get(d.id),h=this.attributes.get(u.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(u.id),this.attributes.set(u.id.id,h)),!d.fillMaterialProperty.isConstant||c){let x=d.fillMaterialProperty.color,I=z.getValueOrDefault(x,e,U.WHITE,fAe);U.equals(h._lastColor,I)||(h._lastColor=U.clone(I,h._lastColor),h.color=tn.toValue(I,h.color),(this.translucent&&h.color[3]===255||!this.translucent&&h.color[3]!==255)&&(this.itemsToRemove[n++]=d))}if(l(this.depthFailAppearanceType)&&d.depthFailMaterialProperty instanceof qt&&(!d.depthFailMaterialProperty.isConstant||c)){let x=d.depthFailMaterialProperty.color,I=z.getValueOrDefault(x,e,U.WHITE,fAe);U.equals(h._lastDepthFailColor,I)||(h._lastDepthFailColor=U.clone(I,h._lastDepthFailColor),h.depthFailColor=tn.toValue(I,h.depthFailColor))}let p=d.entity.isShowing&&(d.hasConstantFill||d.isFilled(e)),g=h.show[0]===1;p!==g&&(h.show=Vn.toValue(p,h.show));let f=d.distanceDisplayConditionProperty;if(!z.isConstant(f)){let x=z.getValueOrDefault(f,e,bnt,gnt);Qt.equals(x,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Qt.clone(x,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=jn.toValue(x,h.distanceDisplayCondition))}let b=d.terrainOffsetProperty;if(!z.isConstant(b)){let x=z.getValueOrDefault(b,e,ynt,Cnt);m.equals(x,h._lastOffset)||(h._lastOffset=m.clone(x,h._lastOffset),h.offset=mo.toValue(x,h.offset))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};jh.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=Vn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};jh.prototype.contains=function(e){return this.updaters.contains(e.id)};jh.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return At.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?At.FAILED:(i.boundingSphere.clone(t),At.DONE)};jh.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),l(this.removeMaterialSubscription)&&this.removeMaterialSubscription()};function gS(e,t,n,i,o){this._solidItems=[],this._translucentItems=[],this._primitives=e,this._appearanceType=t,this._depthFailAppearanceType=n,this._closed=i,this._shadows=o}gS.prototype.add=function(e,t){let n,i,o=t.createFillGeometryInstance(e);o.attributes.color.value[3]===255?(n=this._solidItems,i=!1):(n=this._translucentItems,i=!0);let r=n.length;for(let a=0;a<r;a++){let c=n[a];if(c.isMaterial(t)){c.add(t,o);return}}let s=new jh(this._primitives,i,this._appearanceType,this._depthFailAppearanceType,t.depthFailMaterialProperty,this._closed,this._shadows);s.add(t,o),n.push(s)};function pAe(e,t){let n=e.length;for(let i=n-1;i>=0;i--){let o=e[i];if(o.remove(t))return o.updaters.length===0&&(e.splice(i,1),o.destroy()),!0}return!1}gS.prototype.remove=function(e){pAe(this._solidItems,e)||pAe(this._translucentItems,e)};function AAe(e,t,n){let i=!1,o=t.length;for(let r=0;r<o;++r){let s=t[r],a=s.itemsToRemove,c=a.length;if(c>0)for(r=0;r<c;r++){let d=a[r];s.remove(d),e.add(n,d),i=!0}}return i}function W5(e,t,n,i){let o=t.length,r;for(r=o-1;r>=0;r--){let s=t[r];if(s.invalidated){t.splice(r,1);let a=s.updaters.values,c=a.length;for(let d=0;d<c;d++)e.add(n,a[d]);s.destroy()}}for(o=t.length,r=0;r<o;++r)i=t[r].update(n)&&i;return i}gS.prototype.update=function(e){let t=W5(this,this._solidItems,e,!0);t=W5(this,this._translucentItems,e,t)&&t;let n=AAe(this,this._solidItems,e),i=AAe(this,this._translucentItems,e);return(n||i)&&(t=W5(this,this._solidItems,e,t)&&t,t=W5(this,this._translucentItems,e,t)&&t),t};function gAe(e,t,n){let i=e.length;for(let o=0;o<i;o++){let r=e[o];if(r.contains(t))return r.getBoundingSphere(t,n)}return At.FAILED}gS.prototype.getBoundingSphere=function(e,t){let n=gAe(this._solidItems,e,t);return n===At.FAILED?gAe(this._translucentItems,e,t):n};function bAe(e){let t=e.length;for(let n=0;n<t;n++)e[n].destroy();e.length=0}gS.prototype.removeAllPrimitives=function(){bAe(this._solidItems),bAe(this._translucentItems)};var Lm=gS;var hgi=y(C(),1);var xnt=new Qt,Int=new Qt,_nt=m.ZERO,Ent=new m;function qh(e,t,n,i,o,r,s){this.primitives=e,this.appearanceType=t,this.materialProperty=n,this.depthFailAppearanceType=i,this.depthFailMaterialProperty=o,this.closed=r,this.shadows=s,this.updaters=new Bt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Bt,this.material=void 0,this.depthFailMaterial=void 0,this.updatersWithAttributes=new Bt,this.attributes=new Bt,this.invalidated=!1,this.removeMaterialSubscription=n.definitionChanged.addEventListener(qh.prototype.onMaterialChanged,this),this.subscriptions=new Bt,this.showsUpdated=new Bt}qh.prototype.onMaterialChanged=function(){this.invalidated=!0};qh.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty,i=this.depthFailMaterialProperty,o=e.depthFailMaterialProperty;if(n===t&&o===i)return!0;let r=l(t)&&t.equals(n);return r=(!l(i)&&!l(o)||l(i)&&i.equals(o))&&r,r};qh.prototype.add=function(e,t){let n=t.id;if(this.updaters.set(n,t),this.geometry.set(n,t.createFillGeometryInstance(e)),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!z.isConstant(t.distanceDisplayConditionProperty)||!z.isConstant(t.terrainOffsetProperty))this.updatersWithAttributes.set(n,t);else{let i=this;this.subscriptions.set(n,t.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};qh.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};var Tnt=new U;qh.prototype.update=function(e){let t=!0,n=this.primitive,i=this.primitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0){l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),this.material=dr.getValue(e,this.materialProperty,this.material);let a;l(this.depthFailMaterialProperty)&&(this.depthFailMaterial=dr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),a=new this.depthFailAppearanceType({material:this.depthFailMaterial,translucent:this.depthFailMaterial.isTranslucent(),closed:this.closed})),n=new Nn({show:!1,asynchronous:!0,geometryInstances:o.slice(),appearance:new this.appearanceType({material:this.material,translucent:this.material.isTranslucent(),closed:this.closed}),depthFailAppearance:a,shadows:this.shadows}),i.add(n),t=!1}else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=dr.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material,l(this.depthFailAppearanceType)&&!(this.depthFailMaterialProperty instanceof qt)&&(this.depthFailMaterial=dr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),this.primitive.depthFailAppearance.material=this.depthFailMaterial);let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],d=c.entity,u=this.geometry.get(c.id),h=this.attributes.get(u.id.id);if(l(h)||(h=n.getGeometryInstanceAttributes(u.id),this.attributes.set(u.id.id,h)),l(this.depthFailAppearanceType)&&this.depthFailMaterialProperty instanceof qt&&!c.depthFailMaterialProperty.isConstant){let x=c.depthFailMaterialProperty.color,I=z.getValueOrDefault(x,e,U.WHITE,Tnt);U.equals(h._lastDepthFailColor,I)||(h._lastDepthFailColor=U.clone(I,h._lastDepthFailColor),h.depthFailColor=tn.toValue(I,h.depthFailColor))}let p=d.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;p!==g&&(h.show=Vn.toValue(p,h.show));let f=c.distanceDisplayConditionProperty;if(!z.isConstant(f)){let x=z.getValueOrDefault(f,e,Int,xnt);Qt.equals(x,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Qt.clone(x,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=jn.toValue(x,h.distanceDisplayCondition))}let b=c.terrainOffsetProperty;if(!z.isConstant(b)){let x=z.getValueOrDefault(b,e,_nt,Ent);m.equals(x,h._lastOffset)||(h._lastOffset=m.clone(x,h._lastOffset),h.offset=mo.toValue(x,h.offset))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};qh.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,d=a.show[0]===1;c!==d&&(a.show=Vn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};qh.prototype.contains=function(e){return this.updaters.contains(e.id)};qh.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return At.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?At.FAILED:(i.boundingSphere.clone(t),At.DONE)};qh.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),this.removeMaterialSubscription()};function bS(e,t,n,i,o){this._items=[],this._primitives=e,this._appearanceType=t,this._depthFailAppearanceType=n,this._closed=i,this._shadows=o}bS.prototype.add=function(e,t){let n=this._items,i=n.length;for(let r=0;r<i;r++){let s=n[r];if(s.isMaterial(t)){s.add(e,t);return}}let o=new qh(this._primitives,this._appearanceType,t.fillMaterialProperty,this._depthFailAppearanceType,t.depthFailMaterialProperty,this._closed,this._shadows);o.add(e,t),n.push(o)};bS.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0;i--){let o=t[i];if(o.remove(e)){o.updaters.length===0&&(t.splice(i,1),o.destroy());break}}};bS.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];if(r.invalidated){n.splice(t,1);let s=r.updaters.values,a=s.length;for(let c=0;c<a;c++)this.add(e,s[c]);r.destroy()}}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};bS.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return At.FAILED};bS.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var Rm=bS;var Xgi=y(C(),1);var xgi=y(C(),1);var bgi=y(C(),1);var pgi=y(C(),1);function F5(e,t,n=0,i=e.length-1,o=Snt){for(;i>n;){if(i-n>600){let c=i-n+1,d=t-n+1,u=Math.log(c),h=.5*Math.exp(2*u/3),p=.5*Math.sqrt(u*h*(c-h)/c)*(d-c/2<0?-1:1),g=Math.max(n,Math.floor(t-d*h/c+p)),f=Math.min(i,Math.floor(t+(c-d)*h/c+p));F5(e,t,g,f,o)}let r=e[t],s=n,a=i;for(jW(e,n,t),o(e[i],r)>0&&jW(e,n,i);s<a;){for(jW(e,s,a),s++,a--;o(e[s],r)<0;)s++;for(;o(e[a],r)>0;)a--}o(e[n],r)===0?jW(e,n,a):(a++,jW(e,a,i)),a<=t&&(n=a+1),t<=a&&(i=a-1)}}function jW(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}function Snt(e,t){return e<t?-1:e>t?1:0}var eF=class{constructor(t=9){this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(this._maxEntries*.4)),this.clear()}all(){return this._all(this.data,[])}search(t){let n=this.data,i=[];if(!M5(t,n))return i;let o=this.toBBox,r=[];for(;n;){for(let s=0;s<n.children.length;s++){let a=n.children[s],c=n.leaf?o(a):a;M5(t,c)&&(n.leaf?i.push(a):F4(t,c)?this._all(a,i):r.push(a))}n=r.pop()}return i}collides(t){let n=this.data;if(!M5(t,n))return!1;let i=[];for(;n;){for(let o=0;o<n.children.length;o++){let r=n.children[o],s=n.leaf?this.toBBox(r):r;if(M5(t,s)){if(n.leaf||F4(t,s))return!0;i.push(r)}}n=i.pop()}return!1}load(t){if(!(t&&t.length))return this;if(t.length<this._minEntries){for(let i=0;i<t.length;i++)this.insert(t[i]);return this}let n=this._build(t.slice(),0,t.length-1,0);if(!this.data.children.length)this.data=n;else if(this.data.height===n.height)this._splitRoot(this.data,n);else{if(this.data.height<n.height){let i=this.data;this.data=n,n=i}this._insert(n,this.data.height-n.height-1,!0)}return this}insert(t){return t&&this._insert(t,this.data.height-1),this}clear(){return this.data=CS([]),this}remove(t,n){if(!t)return this;let i=this.data,o=this.toBBox(t),r=[],s=[],a,c,d;for(;i||r.length;){if(i||(i=r.pop(),c=r[r.length-1],a=s.pop(),d=!0),i.leaf){let u=Lnt(t,i.children,n);if(u!==-1)return i.children.splice(u,1),r.push(i),this._condense(r),this}!d&&!i.leaf&&F4(i,o)?(r.push(i),s.push(a),a=0,c=i,i=i.children[0]):c?(a++,i=c.children[a],d=!1):i=null}return this}toBBox(t){return t}compareMinX(t,n){return t.minX-n.minX}compareMinY(t,n){return t.minY-n.minY}toJSON(){return this.data}fromJSON(t){return this.data=t,this}_all(t,n){let i=[];for(;t;)t.leaf?n.push(...t.children):i.push(...t.children),t=i.pop();return n}_build(t,n,i,o){let r=i-n+1,s=this._maxEntries,a;if(r<=s)return a=CS(t.slice(n,i+1)),yS(a,this.toBBox),a;o||(o=Math.ceil(Math.log(r)/Math.log(s)),s=Math.ceil(r/Math.pow(s,o-1))),a=CS([]),a.leaf=!1,a.height=o;let c=Math.ceil(r/s),d=c*Math.ceil(Math.sqrt(s));yAe(t,n,i,d,this.compareMinX);for(let u=n;u<=i;u+=d){let h=Math.min(u+d-1,i);yAe(t,u,h,c,this.compareMinY);for(let p=u;p<=h;p+=c){let g=Math.min(p+c-1,h);a.children.push(this._build(t,p,g,o-1))}}return yS(a,this.toBBox),a}_chooseSubtree(t,n,i,o){for(;o.push(n),!(n.leaf||o.length-1===i);){let r=1/0,s=1/0,a;for(let c=0;c<n.children.length;c++){let d=n.children[c],u=W4(d),h=Gnt(t,d)-u;h<s?(s=h,r=u<r?u:r,a=d):h===s&&u<r&&(r=u,a=d)}n=a||n.children[0]}return n}_insert(t,n,i){let o=i?t:this.toBBox(t),r=[],s=this._chooseSubtree(o,this.data,n,r);for(s.children.push(t),$W(s,o);n>=0&&r[n].children.length>this._maxEntries;)this._split(r,n),n--;this._adjustParentBBoxes(o,r,n)}_split(t,n){let i=t[n],o=i.children.length,r=this._minEntries;this._chooseSplitAxis(i,r,o);let s=this._chooseSplitIndex(i,r,o),a=CS(i.children.splice(s,i.children.length-s));a.height=i.height,a.leaf=i.leaf,yS(i,this.toBBox),yS(a,this.toBBox),n?t[n-1].children.push(a):this._splitRoot(i,a)}_splitRoot(t,n){this.data=CS([t,n]),this.data.height=t.height+1,this.data.leaf=!1,yS(this.data,this.toBBox)}_chooseSplitIndex(t,n,i){let o,r=1/0,s=1/0;for(let a=n;a<=i-n;a++){let c=qW(t,0,a,this.toBBox),d=qW(t,a,i,this.toBBox),u=Znt(c,d),h=W4(c)+W4(d);u<r?(r=u,o=a,s=h<s?h:s):u===r&&h<s&&(s=h,o=a)}return o||i-n}_chooseSplitAxis(t,n,i){let o=t.leaf?this.compareMinX:Rnt,r=t.leaf?this.compareMinY:Vnt,s=this._allDistMargin(t,n,i,o),a=this._allDistMargin(t,n,i,r);s<a&&t.children.sort(o)}_allDistMargin(t,n,i,o){t.children.sort(o);let r=this.toBBox,s=qW(t,0,n,r),a=qW(t,i-n,i,r),c=P5(s)+P5(a);for(let d=n;d<i-n;d++){let u=t.children[d];$W(s,t.leaf?r(u):u),c+=P5(s)}for(let d=i-n-1;d>=n;d--){let u=t.children[d];$W(a,t.leaf?r(u):u),c+=P5(a)}return c}_adjustParentBBoxes(t,n,i){for(let o=i;o>=0;o--)$W(n[o],t)}_condense(t){for(let n=t.length-1,i;n>=0;n--)t[n].children.length===0?n>0?(i=t[n-1].children,i.splice(i.indexOf(t[n]),1)):this.clear():yS(t[n],this.toBBox)}};function Lnt(e,t,n){if(!n)return t.indexOf(e);for(let i=0;i<t.length;i++)if(n(e,t[i]))return i;return-1}function yS(e,t){qW(e,0,e.children.length,t,e)}function qW(e,t,n,i,o){o||(o=CS(null)),o.minX=1/0,o.minY=1/0,o.maxX=-1/0,o.maxY=-1/0;for(let r=t;r<n;r++){let s=e.children[r];$W(o,e.leaf?i(s):s)}return o}function $W(e,t){return e.minX=Math.min(e.minX,t.minX),e.minY=Math.min(e.minY,t.minY),e.maxX=Math.max(e.maxX,t.maxX),e.maxY=Math.max(e.maxY,t.maxY),e}function Rnt(e,t){return e.minX-t.minX}function Vnt(e,t){return e.minY-t.minY}function W4(e){return(e.maxX-e.minX)*(e.maxY-e.minY)}function P5(e){return e.maxX-e.minX+(e.maxY-e.minY)}function Gnt(e,t){return(Math.max(t.maxX,e.maxX)-Math.min(t.minX,e.minX))*(Math.max(t.maxY,e.maxY)-Math.min(t.minY,e.minY))}function Znt(e,t){let n=Math.max(e.minX,t.minX),i=Math.max(e.minY,t.minY),o=Math.min(e.maxX,t.maxX),r=Math.min(e.maxY,t.maxY);return Math.max(0,o-n)*Math.max(0,r-i)}function F4(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&t.maxX<=e.maxX&&t.maxY<=e.maxY}function M5(e,t){return t.minX<=e.maxX&&t.minY<=e.maxY&&t.maxX>=e.minX&&t.maxY>=e.minY}function CS(e){return{children:e,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function yAe(e,t,n,i,o){let r=[t,n];for(;r.length;){if(n=r.pop(),t=r.pop(),n-t<=i)continue;let s=t+Math.ceil((n-t)/i/2)*i;F5(e,s,t,n,o),r.push(t,s,s,n)}}function v5(){this._tree=new eF}function iI(){this.minX=0,this.minY=0,this.maxX=0,this.maxY=0,this.id=""}iI.fromRectangleAndId=function(e,t,n){return n.minX=t.west,n.minY=t.south,n.maxX=t.east,n.maxY=t.north,n.id=e,n};v5.prototype.insert=function(e,t){let n=iI.fromRectangleAndId(e,t,new iI);this._tree.insert(n)};function Bnt(e,t){return e.id===t.id}var wnt=new iI;v5.prototype.remove=function(e,t){let n=iI.fromRectangleAndId(e,t,wnt);this._tree.remove(n,Bnt)};var Xnt=new iI;v5.prototype.collides=function(e){let t=iI.fromRectangleAndId("",e,Xnt);return this._tree.collides(t)};var oI=v5;var Wnt=new U,Fnt=new Qt,Pnt=new Qt;function Vg(e,t,n,i){this.primitives=e,this.zIndex=i,this.classificationType=t,this.color=n,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Bt,this.updaters=new Bt,this.updatersWithAttributes=new Bt,this.attributes=new Bt,this.subscriptions=new Bt,this.showsUpdated=new Bt,this.itemsToRemove=[],this.isDirty=!1,this.rectangleCollisionCheck=new oI}Vg.prototype.overlapping=function(e){return this.rectangleCollisionCheck.collides(e)};Vg.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),this.rectangleCollisionCheck.insert(n,t.geometry.rectangle),!e.hasConstantFill||!e.fillMaterialProperty.isConstant||!z.isConstant(e.distanceDisplayConditionProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};Vg.prototype.remove=function(e){let t=e.id,n=this.geometry.get(t);if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.rectangleCollisionCheck.remove(t,n.geometry.rectangle),this.updatersWithAttributes.remove(t);let i=this.subscriptions.get(t);return l(i)&&(i(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};Vg.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0)l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i),i=new cl({show:!1,asynchronous:!0,geometryInstances:s.slice(),classificationType:this.classificationType}),o.add(i,this.zIndex),t=!1;else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let d=s[r],u=this.geometry.get(d.id),h=this.attributes.get(u.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(u.id),this.attributes.set(u.id.id,h)),!d.fillMaterialProperty.isConstant||c){let b=d.fillMaterialProperty.color,x=z.getValueOrDefault(b,e,U.WHITE,Wnt);U.equals(h._lastColor,x)||(h._lastColor=U.clone(x,h._lastColor),h.color=tn.toValue(x,h.color))}let p=d.entity.isShowing&&(d.hasConstantFill||d.isFilled(e)),g=h.show[0]===1;p!==g&&(h.show=Vn.toValue(p,h.show));let f=d.distanceDisplayConditionProperty;if(!z.isConstant(f)){let b=z.getValueOrDefault(f,e,Pnt,Fnt);Qt.equals(b,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Qt.clone(b,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=jn.toValue(b,h.distanceDisplayCondition))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};Vg.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=Vn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};Vg.prototype.contains=function(e){return this.updaters.contains(e.id)};Vg.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return At.PENDING;let i=n.getBoundingSphere(e.entity);return l(i)?(i.clone(t),At.DONE):At.FAILED};Vg.prototype.removeAllPrimitives=function(){let e=this.primitives,t=this.primitive;l(t)&&(e.remove(t),this.primitive=void 0,this.geometry.removeAll(),this.updaters.removeAll());let n=this.oldPrimitive;l(n)&&(e.remove(n),this.oldPrimitive=void 0)};function xS(e,t){this._batches=[],this._primitives=e,this._classificationType=t}xS.prototype.add=function(e,t){let n=t.createFillGeometryInstance(e),i=this._batches,o=z.getValueOrDefault(t.zIndex,0),r,s=i.length;for(let a=0;a<s;++a){let c=i[a];if(c.zIndex===o&&!c.overlapping(n.geometry.rectangle)){r=c;break}}return l(r)||(r=new Vg(this._primitives,this._classificationType,n.attributes.color.value,o),i.push(r)),r.add(t,n),r};xS.prototype.remove=function(e){let t=this._batches,n=t.length;for(let i=0;i<n;++i)if(t[i].remove(e))return};xS.prototype.update=function(e){let t,n,i=!0,o=this._batches,r=o.length;for(t=0;t<r;++t)i=o[t].update(e)&&i;for(t=0;t<r;++t){let s=o[t],a=s.itemsToRemove,c=a.length;for(let d=0;d<c;d++){n=a[d],s.remove(n);let u=this.add(e,n);s.isDirty=!0,u.isDirty=!0}}for(t=r-1;t>=0;--t){let s=o[t];s.isDirty&&(i=o[t].update(e)&&i,s.isDirty=!1),s.geometry.length===0&&o.splice(t,1)}return i};xS.prototype.getBoundingSphere=function(e,t){let n=this._batches,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return At.FAILED};xS.prototype.removeAllPrimitives=function(){let e=this._batches,t=e.length;for(let n=0;n<t;++n)e[n].removeAllPrimitives()};var IS=xS;var zgi=y(C(),1);var Mnt=new Qt,vnt=new Qt;function dp(e,t,n,i,o,r){this.primitives=e,this.classificationType=t,this.appearanceType=n,this.materialProperty=i,this.updaters=new Bt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Bt,this.material=void 0,this.updatersWithAttributes=new Bt,this.attributes=new Bt,this.subscriptions=new Bt,this.showsUpdated=new Bt,this.usingSphericalTextureCoordinates=o,this.zIndex=r,this.rectangleCollisionCheck=new oI}dp.prototype.overlapping=function(e){return this.rectangleCollisionCheck.collides(e)};dp.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty;return n===t||n instanceof qt&&t instanceof qt?!0:l(t)&&t.equals(n)};dp.prototype.add=function(e,t,n){let i=t.id;if(this.updaters.set(i,t),this.geometry.set(i,n),this.rectangleCollisionCheck.insert(i,n.geometry.rectangle),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!z.isConstant(t.distanceDisplayConditionProperty))this.updatersWithAttributes.set(i,t);else{let o=this;this.subscriptions.set(i,t.entity.definitionChanged.addEventListener(function(r,s,a,c){s==="isShowing"&&o.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};dp.prototype.remove=function(e){let t=e.id,n=this.geometry.get(t);if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.rectangleCollisionCheck.remove(t,n.geometry.rectangle),this.updatersWithAttributes.remove(t);let i=this.subscriptions.get(t);return l(i)&&(i(),this.subscriptions.remove(t)),!0}return!1};dp.prototype.update=function(e){let t=!0,n=this.primitive,i=this.primitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0)l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),this.material=dr.getValue(e,this.materialProperty,this.material),n=new cl({show:!1,asynchronous:!0,geometryInstances:o.slice(),appearance:new this.appearanceType({material:this.material}),classificationType:this.classificationType}),i.add(n,this.zIndex),t=!1;else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=dr.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material;let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],d=c.entity,u=this.geometry.get(c.id),h=this.attributes.get(u.id.id);l(h)||(h=n.getGeometryInstanceAttributes(u.id),this.attributes.set(u.id.id,h));let p=d.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;p!==g&&(h.show=Vn.toValue(p,h.show));let f=c.distanceDisplayConditionProperty;if(!z.isConstant(f)){let b=z.getValueOrDefault(f,e,vnt,Mnt);Qt.equals(b,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Qt.clone(b,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=jn.toValue(b,h.distanceDisplayCondition))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};dp.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,d=a.show[0]===1;c!==d&&(a.show=Vn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};dp.prototype.contains=function(e){return this.updaters.contains(e.id)};dp.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return At.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?At.FAILED:(i.boundingSphere.clone(t),At.DONE)};dp.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n)};function _S(e,t,n){this._items=[],this._primitives=e,this._classificationType=t,this._appearanceType=n}_S.prototype.add=function(e,t){let n=this._items,i=n.length,o=t.createFillGeometryInstance(e),r=Pd.shouldUseSphericalCoordinates(o.geometry.rectangle),s=z.getValueOrDefault(t.zIndex,0);for(let c=0;c<i;++c){let d=n[c];if(d.isMaterial(t)&&d.usingSphericalTextureCoordinates===r&&d.zIndex===s&&!d.overlapping(o.geometry.rectangle)){d.add(e,t,o);return}}let a=new dp(this._primitives,this._classificationType,this._appearanceType,t.fillMaterialProperty,r,s);a.add(e,t,o),n.push(a)};_S.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0&&!t[i].remove(e);i--);};_S.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];r.updaters.length===0&&(n.splice(t,1),r.destroy())}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};_S.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return At.FAILED};_S.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var tF=_S;var lbi=y(C(),1);var Nnt=new U,Dnt=new Qt,Qnt=new Qt,Unt=m.ZERO,knt=new m;function Gg(e,t,n,i){this.translucent=t,this.width=n,this.shadows=i,this.primitives=e,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Bt,this.updaters=new Bt,this.updatersWithAttributes=new Bt,this.attributes=new Bt,this.itemsToRemove=[],this.subscriptions=new Bt,this.showsUpdated=new Bt}Gg.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),!e.hasConstantOutline||!e.outlineColorProperty.isConstant||!z.isConstant(e.distanceDisplayConditionProperty)||!z.isConstant(e.terrainOffsetProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};Gg.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};Gg.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0)l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i),i=new Nn({show:!1,asynchronous:!0,geometryInstances:s.slice(),appearance:new yn({flat:!0,translucent:this.translucent,renderState:{lineWidth:this.width}}),shadows:this.shadows}),o.add(i),t=!1;else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let d=s[r],u=this.geometry.get(d.id),h=this.attributes.get(u.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(u.id),this.attributes.set(u.id.id,h)),!d.outlineColorProperty.isConstant||c){let x=d.outlineColorProperty,I=z.getValueOrDefault(x,e,U.WHITE,Nnt);U.equals(h._lastColor,I)||(h._lastColor=U.clone(I,h._lastColor),h.color=tn.toValue(I,h.color),(this.translucent&&h.color[3]===255||!this.translucent&&h.color[3]!==255)&&(this.itemsToRemove[n++]=d))}let p=d.entity.isShowing&&(d.hasConstantOutline||d.isOutlineVisible(e)),g=h.show[0]===1;p!==g&&(h.show=Vn.toValue(p,h.show));let f=d.distanceDisplayConditionProperty;if(!z.isConstant(f)){let x=z.getValueOrDefault(f,e,Qnt,Dnt);Qt.equals(x,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Qt.clone(x,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=jn.toValue(x,h.distanceDisplayCondition))}let b=d.terrainOffsetProperty;if(!z.isConstant(b)){let x=z.getValueOrDefault(b,e,Unt,knt);m.equals(x,h._lastOffset)||(h._lastOffset=m.clone(x,h._lastOffset),h.offset=mo.toValue(x,h.offset))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};Gg.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=Vn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};Gg.prototype.contains=function(e){return this.updaters.contains(e.id)};Gg.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return At.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?At.FAILED:(i.boundingSphere.clone(t),At.DONE)};Gg.prototype.removeAllPrimitives=function(){let e=this.primitives,t=this.primitive;l(t)&&(e.remove(t),this.primitive=void 0,this.geometry.removeAll(),this.updaters.removeAll());let n=this.oldPrimitive;l(n)&&(e.remove(n),this.oldPrimitive=void 0)};function ES(e,t,n){this._primitives=e,this._scene=t,this._shadows=n,this._solidBatches=new Bt,this._translucentBatches=new Bt}ES.prototype.add=function(e,t){let n=t.createOutlineGeometryInstance(e),i=this._scene.clampLineWidth(t.outlineWidth),o,r;n.attributes.color.value[3]===255?(o=this._solidBatches,r=o.get(i),l(r)||(r=new Gg(this._primitives,!1,i,this._shadows),o.set(i,r)),r.add(t,n)):(o=this._translucentBatches,r=o.get(i),l(r)||(r=new Gg(this._primitives,!0,i,this._shadows),o.set(i,r)),r.add(t,n))};ES.prototype.remove=function(e){let t,n=this._solidBatches.values,i=n.length;for(t=0;t<i;t++)if(n[t].remove(e))return;let o=this._translucentBatches.values,r=o.length;for(t=0;t<r;t++)if(o[t].remove(e))return};ES.prototype.update=function(e){let t,n,i,o,r=this._solidBatches.values,s=r.length,a=this._translucentBatches.values,c=a.length,d,u=!0,h=!1;do{for(h=!1,n=0;n<s;n++){o=r[n],u=o.update(e),d=o.itemsToRemove;let p=d.length;if(p>0)for(h=!0,t=0;t<p;t++)i=d[t],o.remove(i),this.add(e,i)}for(n=0;n<c;n++){o=a[n],u=o.update(e),d=o.itemsToRemove;let p=d.length;if(p>0)for(h=!0,t=0;t<p;t++)i=d[t],o.remove(i),this.add(e,i)}}while(h);return u};ES.prototype.getBoundingSphere=function(e,t){let n,i=this._solidBatches.values,o=i.length;for(n=0;n<o;n++){let a=i[n];if(a.contains(e))return a.getBoundingSphere(e,t)}let r=this._translucentBatches.values,s=r.length;for(n=0;n<s;n++){let a=r[n];if(a.contains(e))return a.getBoundingSphere(e,t)}return At.FAILED};ES.prototype.removeAllPrimitives=function(){let e,t=this._solidBatches.values,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._translucentBatches.values,o=i.length;for(e=0;e<o;e++)i[e].removeAllPrimitives()};var TS=ES;var Ynt=[];function gd(e,t,n,i){n=n??e.primitives,i=i??e.groundPrimitives,this._scene=e,this._primitives=n,this._groundPrimitives=i,this._entityCollection=void 0,this._addedObjects=new Bt,this._removedObjects=new Bt,this._changedObjects=new Bt;let o=Gn.NUMBER_OF_SHADOW_MODES;this._outlineBatches=new Array(o*2),this._closedColorBatches=new Array(o*2),this._closedMaterialBatches=new Array(o*2),this._openColorBatches=new Array(o*2),this._openMaterialBatches=new Array(o*2);let r=ur.supportsMaterialsforEntitiesOnTerrain(e);this._supportsMaterialsforEntitiesOnTerrain=r;let s;for(s=0;s<o;++s)this._outlineBatches[s]=new TS(n,e,s,!1),this._outlineBatches[o+s]=new TS(n,e,s,!0),this._closedColorBatches[s]=new Lm(n,yn,void 0,!0,s,!0),this._closedColorBatches[o+s]=new Lm(n,yn,void 0,!0,s,!1),this._closedMaterialBatches[s]=new Rm(n,Io,void 0,!0,s,!0),this._closedMaterialBatches[o+s]=new Rm(n,Io,void 0,!0,s,!1),this._openColorBatches[s]=new Lm(n,yn,void 0,!1,s,!0),this._openColorBatches[o+s]=new Lm(n,yn,void 0,!1,s,!1),this._openMaterialBatches[s]=new Rm(n,Io,void 0,!1,s,!0),this._openMaterialBatches[o+s]=new Rm(n,Io,void 0,!1,s,!1);let a=$n.NUMBER_OF_CLASSIFICATION_TYPES,c=new Array(a),d=[];if(r)for(s=0;s<a;++s)d.push(new tF(i,s,Io)),c[s]=new IS(i,s);else for(s=0;s<a;++s)c[s]=new IS(i,s);this._groundColorBatches=c,this._groundMaterialBatches=d,this._dynamicBatch=new Yx(n,i),this._batches=this._outlineBatches.concat(this._closedColorBatches,this._closedMaterialBatches,this._openColorBatches,this._openMaterialBatches,this._groundColorBatches,this._groundMaterialBatches,this._dynamicBatch),this._subscriptions=new Bt,this._updaterSets=new Bt,this._entityCollection=t,t.collectionChanged.addEventListener(gd.prototype._onCollectionChanged,this),this._onCollectionChanged(t,t.values,Ynt)}gd.registerUpdater=function(e){nI.registerUpdater(e)};gd.unregisterUpdater=function(e){nI.unregisterUpdater(e)};gd.prototype.update=function(e){let t=this._addedObjects,n=t.values,i=this._removedObjects,o=i.values,r=this._changedObjects,s=r.values,a,c,d,u,h=this;for(a=s.length-1;a>-1;a--)c=s[a],d=c.id,u=this._updaterSets.get(d),u.entity===c?u.forEach(function(b){h._removeUpdater(b),h._insertUpdaterIntoBatch(e,b)}):(o.push(c),n.push(c));for(a=o.length-1;a>-1;a--)c=o[a],d=c.id,u=this._updaterSets.get(d),u.forEach(this._removeUpdater.bind(this)),u.destroy(),this._updaterSets.remove(d),this._subscriptions.get(d)(),this._subscriptions.remove(d);for(a=n.length-1;a>-1;a--)c=n[a],d=c.id,u=new nI(c,this._scene),this._updaterSets.set(d,u),u.forEach(function(b){h._insertUpdaterIntoBatch(e,b)}),this._subscriptions.set(d,u.geometryChanged.addEventListener(gd._onGeometryChanged,this));t.removeAll(),i.removeAll(),r.removeAll();let p=!0,g=this._batches,f=g.length;for(a=0;a<f;a++)p=g[a].update(e)&&p;return p};var Ont=[],Hnt=new ue;gd.prototype.getBoundingSphere=function(e,t){let n=Ont,i=Hnt,o=0,r=At.DONE,s=this._batches,a=s.length,c=e.id,d=this._updaterSets.get(c).updaters;for(let u=0;u<d.length;u++){let h=d[u];for(let p=0;p<a;p++){if(r=s[p].getBoundingSphere(h,i),r===At.PENDING)return At.PENDING;r===At.DONE&&(n[o]=ue.clone(i,n[o]),o++)}}return o===0?At.FAILED:(n.length=o,ue.fromBoundingSpheres(n,t),At.DONE)};gd.prototype.isDestroyed=function(){return!1};gd.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(gd.prototype._onCollectionChanged,this),this._addedObjects.removeAll(),this._removedObjects.removeAll();let e,t=this._batches,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._subscriptions.values;for(n=i.length,e=0;e<n;e++)i[e]();this._subscriptions.removeAll();let o=this._updaterSets.values;for(n=o.length,e=0;e<n;e++)o[e].destroy();return this._updaterSets.removeAll(),me(this)};gd.prototype._removeUpdater=function(e){let t=this._batches,n=t.length;for(let i=0;i<n;i++)t[i].remove(e)};gd.prototype._insertUpdaterIntoBatch=function(e,t){if(t.isDynamic){this._dynamicBatch.add(e,t);return}let n;(t.outlineEnabled||t.fillEnabled)&&(n=t.shadowsProperty.getValue(e));let i=Gn.NUMBER_OF_SHADOW_MODES;if(t.outlineEnabled&&(l(t.terrainOffsetProperty)?this._outlineBatches[i+n].add(e,t):this._outlineBatches[n].add(e,t)),t.fillEnabled)if(t.onTerrain){let o=t.classificationTypeProperty.getValue(e);t.fillMaterialProperty instanceof qt?this._groundColorBatches[o].add(e,t):this._groundMaterialBatches[o].add(e,t)}else t.isClosed?t.fillMaterialProperty instanceof qt?l(t.terrainOffsetProperty)?this._closedColorBatches[i+n].add(e,t):this._closedColorBatches[n].add(e,t):l(t.terrainOffsetProperty)?this._closedMaterialBatches[i+n].add(e,t):this._closedMaterialBatches[n].add(e,t):t.fillMaterialProperty instanceof qt?l(t.terrainOffsetProperty)?this._openColorBatches[i+n].add(e,t):this._openColorBatches[n].add(e,t):l(t.terrainOffsetProperty)?this._openMaterialBatches[i+n].add(e,t):this._openMaterialBatches[n].add(e,t)};gd._onGeometryChanged=function(e){let t=this._removedObjects,n=this._changedObjects,i=e.entity,o=i.id;!l(t.get(o))&&!l(n.get(o))&&n.set(o,i)};gd.prototype._onCollectionChanged=function(e,t,n){let i=this._addedObjects,o=this._removedObjects,r=this._changedObjects,s,a,c;for(s=n.length-1;s>-1;s--)c=n[s],a=c.id,i.remove(a)||(o.set(a,c),r.remove(a));for(s=t.length-1;s>-1;s--)c=t[s],a=c.id,o.remove(a)?r.set(a,c):i.set(a,c)};var nF=gd;var Ybi=y(C(),1);var znt=1,Knt="30px sans-serif",Jnt=nr.FILL,jnt=U.WHITE,qnt=U.BLACK,$nt=1,eit=!1,tit=new U(.165,.165,.165,.8),nit=new D(7,5),iit=D.ZERO,oit=m.ZERO,rit=et.NONE,sit=wi.CENTER,ait=kn.CENTER,cit=new m,lit=new U,dit=new U,uit=new U,mit=new D,hit=new m,fit=new D,pit=new zt,Ait=new zt,git=new zt,bit=new Qt;function CAe(e){this.entity=e,this.label=void 0,this.index=void 0}function F0(e,t){t.collectionChanged.addEventListener(F0.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new Bt,this._onCollectionChanged(t,t.values,[],[])}F0.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._label,c,d=r.label,u=s.isShowing&&s.isAvailable(e)&&z.getValueOrDefault(a._show,e,!0),h;if(u&&(h=z.getValueOrUndefined(s._position,e,cit),c=z.getValueOrUndefined(a._text,e),u=l(h)&&l(c)),!u){P4(r,s,n);continue}z.isConstant(s._position)||(n._clusterDirty=!0);let p=!1,g=z.getValueOrDefault(a._heightReference,e,rit);l(d)||(d=n.getLabel(s),d.id=s,r.label=d,p=m.equals(d.position,h)&&d.heightReference===g),d.show=!0,d.position=h,d.text=c,d.scale=z.getValueOrDefault(a._scale,e,znt),d.font=z.getValueOrDefault(a._font,e,Knt),d.style=z.getValueOrDefault(a._style,e,Jnt),d.fillColor=z.getValueOrDefault(a._fillColor,e,jnt,lit),d.outlineColor=z.getValueOrDefault(a._outlineColor,e,qnt,dit),d.outlineWidth=z.getValueOrDefault(a._outlineWidth,e,$nt),d.showBackground=z.getValueOrDefault(a._showBackground,e,eit),d.backgroundColor=z.getValueOrDefault(a._backgroundColor,e,tit,uit),d.backgroundPadding=z.getValueOrDefault(a._backgroundPadding,e,nit,mit),d.pixelOffset=z.getValueOrDefault(a._pixelOffset,e,iit,fit),d.eyeOffset=z.getValueOrDefault(a._eyeOffset,e,oit,hit),d.heightReference=g,d.horizontalOrigin=z.getValueOrDefault(a._horizontalOrigin,e,sit),d.verticalOrigin=z.getValueOrDefault(a._verticalOrigin,e,ait),d.translucencyByDistance=z.getValueOrUndefined(a._translucencyByDistance,e,pit),d.pixelOffsetScaleByDistance=z.getValueOrUndefined(a._pixelOffsetScaleByDistance,e,Ait),d.scaleByDistance=z.getValueOrUndefined(a._scaleByDistance,e,git),d.distanceDisplayCondition=z.getValueOrUndefined(a._distanceDisplayCondition,e,bit),d.disableDepthTestDistance=z.getValueOrUndefined(a._disableDepthTestDistance,e),p&&d._updateClamping()}return!0};F0.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!l(n.label))return At.FAILED;let i=n.label;return t.center=m.clone(i._clampedPosition??i.position,t.center),t.radius=0,At.DONE};F0.prototype.isDestroyed=function(){return!1};F0.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(F0.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removeLabel(e[t]);return me(this)};F0.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._label)&&l(r._position)&&s.set(r.id,new CAe(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._label)&&l(r._position)?s.contains(r.id)||s.set(r.id,new CAe(r)):(P4(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],P4(s.get(r.id),r,a),s.remove(r.id)};function P4(e,t,n){l(e)&&(e.label=void 0,n.removeLabel(t))}var iF=F0;var u0i=y(C(),1);var yit=1,Cit=!0,xit=0,Iit=!0,_it=!0,Eit=Gn.ENABLED,Tit=et.NONE,Sit=U.RED,Lit=0,Rit=U.WHITE,Vit=Fc.HIGHLIGHT,Git=.5,Zit=new D(1,1),xAe={maximumPositionEpsilon:Number.POSITIVE_INFINITY},Bit=new X,wit=new X,IAe=new U,_Ae=new Array(4),Xit=new m;function P0(e,t){t.collectionChanged.addEventListener(P0.prototype._onCollectionChanged,this),this._scene=e,this._primitives=e.primitives,this._entityCollection=t,this._modelHash={},this._entitiesToVisualize=new Bt,this._onCollectionChanged(t,t.values,[],[])}async function Wit(e,t,n,i,o){let r=e._primitives,s=e._modelHash;try{let a=await Bh.fromGltfAsync({url:n,incrementallyLoadTextures:i,scene:e._scene,environmentMapOptions:o});if(e.isDestroyed()||!l(s[t.id]))return;a.id=t,r.add(a),s[t.id].modelPrimitive=a,a.errorEvent.addEventListener(c=>{l(s[t.id])&&(console.log(c),c.name!=="TextureError"&&a.incrementallyLoadTextures&&(s[t.id].loadFailed=!0))})}catch(a){if(e.isDestroyed()||!l(s[t.id]))return;console.log(a),s[t.id].loadFailed=!0}}P0.prototype.update=function(e){let t=this._entitiesToVisualize.values,n=this._modelHash,i=this._primitives;for(let o=0,r=t.length;o<r;o++){let s=t[o],a=s._model,c,d=n[s.id],u=s.isShowing&&s.isAvailable(e)&&z.getValueOrDefault(a._show,e,!0),h;if(u&&(h=s.computeModelMatrix(e,Bit),c=Ve.createIfNeeded(z.getValueOrUndefined(a._uri,e)),u=l(h)&&l(c)),!u){l(d)&&d.modelPrimitive&&(d.modelPrimitive.show=!1);continue}if(!l(d)||c.url!==d.url){l(d?.modelPrimitive)&&(i.removeAndDestroy(d.modelPrimitive),delete n[s.id]),d={modelPrimitive:void 0,url:c.url,animationsRunning:!1,nodeTransformationsScratch:{},articulationsScratch:{},loadFailed:!1,modelUpdated:!1,environmentMapOptionsScratch:{...xAe}},n[s.id]=d;let f=z.getValueOrDefault(a._incrementallyLoadTextures,e,Iit),b=z.getValueOrDefault(a._environmentMapOptions,e,xAe,d.environmentMapOptionsScratch);Wit(this,s,c,f,b)}let p=d.modelPrimitive;if(!l(p))continue;p.show=!0,p.scale=z.getValueOrDefault(a._scale,e,yit),p.enableVerticalExaggeration=z.getValueOrDefault(a._enableVerticalExaggeration,e,Cit),p.minimumPixelSize=z.getValueOrDefault(a._minimumPixelSize,e,xit),p.maximumScale=z.getValueOrUndefined(a._maximumScale,e),p.modelMatrix=X.clone(h,p.modelMatrix),p.shadows=z.getValueOrDefault(a._shadows,e,Eit),p.heightReference=z.getValueOrDefault(a._heightReference,e,Tit),p.distanceDisplayCondition=z.getValueOrUndefined(a._distanceDisplayCondition,e),p.silhouetteColor=z.getValueOrDefault(a._silhouetteColor,e,Sit,IAe),p.silhouetteSize=z.getValueOrDefault(a._silhouetteSize,e,Lit),p.color=z.getValueOrDefault(a._color,e,Rit,IAe),p.colorBlendMode=z.getValueOrDefault(a._colorBlendMode,e,Vit),p.colorBlendAmount=z.getValueOrDefault(a._colorBlendAmount,e,Git),p.clippingPlanes=z.getValueOrUndefined(a._clippingPlanes,e),p.clampAnimations=z.getValueOrDefault(a._clampAnimations,e,_it),p.imageBasedLighting.imageBasedLightingFactor=z.getValueOrDefault(a._imageBasedLightingFactor,e,Zit);let g=z.getValueOrUndefined(a._lightColor,e);if(l(g)&&(U.pack(g,_Ae,0),g=m.unpack(_Ae,0,Xit)),p.lightColor=g,p.customShader=z.getValueOrUndefined(a._customShader,e),n[s.id].modelUpdated=!0,p.ready){let f=z.getValueOrDefault(a._runAnimations,e,!0);d.animationsRunning!==f&&(f?p.activeAnimations.addAll({loop:od.REPEAT}):p.activeAnimations.removeAll(),d.animationsRunning=f);let b=z.getValueOrUndefined(a._nodeTransformations,e,d.nodeTransformationsScratch);if(l(b)){let _=Object.keys(b);for(let E=0,S=_.length;E<S;++E){let R=_[E],G=b[R];if(!l(G))continue;let B=p.getNode(R);if(!l(B))continue;let w=X.fromTranslationRotationScale(G,wit);B.matrix=X.multiply(B.originalMatrix,w,w)}}let x=!1,I=z.getValueOrUndefined(a._articulations,e,d.articulationsScratch);if(l(I)){let _=Object.keys(I);for(let E=0,S=_.length;E<S;++E){let R=_[E],G=I[R];l(G)&&(x=!0,p.setArticulationStage(R,G))}}x&&p.applyArticulations()}}return!0};P0.prototype.isDestroyed=function(){return!1};P0.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(P0.prototype._onCollectionChanged,this);let e=this._entitiesToVisualize.values,t=this._modelHash,n=this._primitives;for(let i=e.length-1;i>-1;i--)M4(this,e[i],t,n);return me(this)};var N5=new m,Fit=new ge;P0.prototype.getBoundingSphere=function(e,t){let n=this._modelHash[e.id];if(!l(n))return At.FAILED;if(n.loadFailed)return At.FAILED;let i=n.modelPrimitive;if(!l(i)||!i.show)return At.PENDING;if(!i.ready||!n.modelUpdated)return At.PENDING;let o=this._scene,r=o.ellipsoid??ie.default;if(i.heightReference!==et.NONE){let a=i.modelMatrix;N5.x=a[12],N5.y=a[13],N5.z=a[14];let c=r.cartesianToCartographic(N5,Fit),d=o.getHeight(c,i.heightReference);return l(d)&&(Du(i.heightReference)?c.height=d:c.height+=d),ue.clone(i.boundingSphere,t),t.center=r.cartographicToCartesian(c),At.DONE}return ue.clone(i.boundingSphere,t),At.DONE};P0.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._entitiesToVisualize,a=this._modelHash,c=this._primitives;for(o=t.length-1;o>-1;o--)r=t[o],l(r._model)&&l(r._position)&&s.set(r.id,r);for(o=i.length-1;o>-1;o--)r=i[o],l(r._model)&&l(r._position)?(Pit(r,a),s.set(r.id,r)):(M4(this,r,a,c),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],M4(this,r,a,c),s.remove(r.id)};function M4(e,t,n,i){let o=n[t.id];l(o)&&(i.removeAndDestroy(o.modelPrimitive),delete n[t.id])}function Pit(e,t){let n=t[e.id];l(n)&&(n.nodeTransformationsScratch={},n.articulationsScratch={})}var oF=P0;var Q0i=y(C(),1);var y0i=y(C(),1);function M0(e){this._definitionChanged=new Ce,this._value=void 0,this._removeSubscription=void 0,this.setValue(e)}Object.defineProperties(M0.prototype,{isConstant:{get:function(){return z.isConstant(this._value)}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return l(this._value)?this._value.referenceFrame:eo.FIXED}}});var Mit=new j;M0.prototype.getValue=function(e,t){return l(e)||(e=j.now(Mit)),this.getValueInReferenceFrame(e,eo.FIXED,t)};M0.prototype.setValue=function(e){this._value!==e&&(this._value=e,l(this._removeSubscription)&&(this._removeSubscription(),this._removeSubscription=void 0),l(e)&&(this._removeSubscription=e.definitionChanged.addEventListener(this._raiseDefinitionChanged,this)),this._definitionChanged.raiseEvent(this))};M0.prototype.getValueInReferenceFrame=function(e,t,n){if(l(this._value))return n=this._value.getValueInReferenceFrame(e,t,n),l(n)?ie.default.scaleToGeodeticSurface(n,n):void 0};M0.prototype.equals=function(e){return this===e||e instanceof M0&&this._value===e._value};M0.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var up=M0;var vit=60,Nit=1,TAe=new wn,v4=new wn,N4=new wn;function EAe(e){this.entity=e,this.polyline=void 0,this.index=void 0,this.updater=void 0}function Dit(e,t,n,i,o,r,s,a,c){let d=a,u;u=e.getValueInReferenceFrame(t,r,c[d]),l(u)&&(c[d++]=u);let h=!l(o)||j.lessThanOrEquals(o,t)||j.greaterThanOrEquals(o,n),p=0,g=i.length,f=i[p],b=n,x=!1,I,_,E;for(;p<g;){if(!h&&j.greaterThanOrEquals(f,o)&&(u=e.getValueInReferenceFrame(o,r,c[d]),l(u)&&(c[d++]=u),h=!0),j.greaterThan(f,t)&&j.lessThan(f,b)&&!f.equals(o)&&(u=e.getValueInReferenceFrame(f,r,c[d]),l(u)&&(c[d++]=u)),p<g-1){if(s>0&&!x){let S=i[p+1],R=j.secondsDifference(S,f);x=R>s,x&&(I=Math.ceil(R/s),_=0,E=R/Math.max(I,2),I=Math.max(I-1,1))}if(x&&_<I){f=j.addSeconds(f,E,new j),_++;continue}}x=!1,p++,f=i[p]}return u=e.getValueInReferenceFrame(n,r,c[d]),l(u)&&(c[d++]=u),d}function Qit(e,t,n,i,o,r,s,a){let c,d=0,u=s,h=t,p=!l(i)||j.lessThanOrEquals(i,t)||j.greaterThanOrEquals(i,n);for(;j.lessThan(h,n);)!p&&j.greaterThanOrEquals(h,i)&&(p=!0,c=e.getValueInReferenceFrame(i,o,a[u]),l(c)&&(a[u]=c,u++)),c=e.getValueInReferenceFrame(h,o,a[u]),l(c)&&(a[u]=c,u++),d++,h=j.addSeconds(t,r*d,new j);return c=e.getValueInReferenceFrame(n,o,a[u]),l(c)&&(a[u]=c,u++),u}function Uit(e,t,n,i,o,r,s,a){let c,d=0,u=s,h=t,p=Math.max(r,60),g=!l(i)||j.lessThanOrEquals(i,t)||j.greaterThanOrEquals(i,n);for(;j.lessThan(h,n);)!g&&j.greaterThanOrEquals(h,i)&&(g=!0,c=e.getValueInReferenceFrame(i,o,a[u]),l(c)&&(a[u]=c,u++)),c=e.getValueInReferenceFrame(h,o,a[u]),l(c)&&(a[u]=c,u++),d++,h=j.addSeconds(t,p*d,new j);return c=e.getValueInReferenceFrame(n,o,a[u]),l(c)&&(a[u]=c,u++),u}function kit(e,t,n,i,o,r,s,a){N4.start=t,N4.stop=n;let c=s,d=e.intervals;for(let u=0;u<d.length;u++){let h=d.get(u);if(!wn.intersect(h,N4,TAe).isEmpty){let p=h.start;h.isStartIncluded||(h.isStopIncluded?p=h.stop:p=j.addSeconds(h.start,j.secondsDifference(h.stop,h.start)/2,new j));let g=e.getValueInReferenceFrame(p,o,a[c]);l(g)&&(a[c]=g,c++)}}return c}function Yit(e,t,n,i,o,r,s,a){let c=e.getValueInReferenceFrame(t,o,a[s]);return l(c)&&(a[s++]=c),s}function Oit(e,t,n,i,o,r,s,a){v4.start=t,v4.stop=n;let c=s,d=e.intervals;for(let u=0;u<d.length;u++){let h=d.get(u);if(!wn.intersect(h,v4,TAe).isEmpty){let p=h.start,g=h.stop,f=t;j.greaterThan(p,f)&&(f=p);let b=n;j.lessThan(g,b)&&(b=g),c=SAe(h.data,f,b,i,o,r,c,a)}}return c}function SAe(e,t,n,i,o,r,s,a){for(;e instanceof Ig;)e=e.resolvedProperty;if(e instanceof Oa){let c=e._property._times;s=Dit(e,t,n,c,i,o,r,s,a)}else e instanceof gZ?s=Qit(e,t,n,i,o,r,s,a):e instanceof ka?s=Oit(e,t,n,i,o,r,s,a):e instanceof _g?s=kit(e,t,n,i,o,r,s,a):e instanceof dl||e instanceof up&&z.isConstant(e)?s=Yit(e,t,n,i,o,r,s,a):s=Uit(e,t,n,i,o,r,s,a);return s}function LAe(e,t,n,i,o,r,s){l(s)||(s=[]);let a=SAe(e,t,n,i,o,r,0,s);return s.length=a,s}var Hit=new $;function rF(e,t){this._unusedIndexes=[],this._polylineCollection=new Wh,this._scene=e,this._referenceFrame=t,e.primitives.add(this._polylineCollection)}rF.prototype.update=function(e){if(this._referenceFrame===eo.INERTIAL){let t=Dt.computeIcrfToCentralBodyFixedMatrix(e,Hit);X.fromRotationTranslation(t,m.ZERO,this._polylineCollection.modelMatrix)}};rF.prototype.updateObject=function(e,t){let n=t.entity,i=n._path,o=n._position,r,s,a=i._show,c=t.polyline,d=n.isShowing&&n.isAvailable(e)&&(!l(a)||a.getValue(e));if(d){let h=z.getValueOrUndefined(i._leadTime,e),p=z.getValueOrUndefined(i._trailTime,e),g=n._availability,f=l(g),b=l(h),x=l(p);if(d=f||b&&x,d){if(x&&(r=j.addSeconds(e,-p,new j)),b&&(s=j.addSeconds(e,h,new j)),f){let I=g.start,_=g.stop;(!x||j.greaterThan(I,r))&&(r=I),(!b||j.lessThan(_,s))&&(s=_)}d=j.lessThan(r,s)}}if(!d){l(c)&&(this._unusedIndexes.push(t.index),t.polyline=void 0,c.show=!1,t.index=void 0);return}if(!l(c)){let h=this._unusedIndexes;if(h.length>0){let g=h.pop();c=this._polylineCollection.get(g),t.index=g}else t.index=this._polylineCollection.length,c=this._polylineCollection.add();c.id=n,t.polyline=c}let u=z.getValueOrDefault(i._resolution,e,vit);c.show=!0,c.positions=LAe(o,r,s,e,this._referenceFrame,u,c.positions.slice()),c.material=dr.getValue(e,i._material,c.material),c.width=z.getValueOrDefault(i._width,e,Nit),c.distanceDisplayCondition=z.getValueOrUndefined(i._distanceDisplayCondition,e,c.distanceDisplayCondition)};rF.prototype.removeObject=function(e){let t=e.polyline;l(t)&&(this._unusedIndexes.push(e.index),e.polyline=void 0,t.show=!1,t.id=void 0,e.index=void 0)};rF.prototype.destroy=function(){return this._scene.primitives.remove(this._polylineCollection),me(this)};function v0(e,t){t.collectionChanged.addEventListener(v0.prototype._onCollectionChanged,this),this._scene=e,this._updaters={},this._entityCollection=t,this._items=new Bt,this._onCollectionChanged(t,t.values,[],[])}v0.prototype.update=function(e){let t=this._updaters;for(let i in t)t.hasOwnProperty(i)&&t[i].update(e);let n=this._items.values;if(n.length===0&&l(this._updaters)&&Object.keys(this._updaters).length>0){for(let i in t)t.hasOwnProperty(i)&&t[i].destroy();this._updaters={}}for(let i=0,o=n.length;i<o;i++){let r=n[i],a=r.entity._position,c=r.updater,d=eo.FIXED;this._scene.mode===re.SCENE3D&&(d=a.referenceFrame);let u=this._updaters[d];if(c===u&&l(u)){u.updateObject(e,r);continue}l(c)&&c.removeObject(r),l(u)||(u=new rF(this._scene,d),u.update(e),this._updaters[d]=u),r.updater=u,l(u)&&u.updateObject(e,r)}return!0};v0.prototype.isDestroyed=function(){return!1};v0.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(v0.prototype._onCollectionChanged,this);let e=this._updaters;for(let t in e)e.hasOwnProperty(t)&&e[t].destroy();return me(this)};v0.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s,a=this._items;for(o=t.length-1;o>-1;o--)r=t[o],l(r._path)&&l(r._position)&&a.set(r.id,new EAe(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._path)&&l(r._position)?a.contains(r.id)||a.set(r.id,new EAe(r)):(s=a.get(r.id),l(s)&&(l(s.updater)&&s.updater.removeObject(s),a.remove(r.id)));for(o=n.length-1;o>-1;o--)r=n[o],s=a.get(r.id),l(s)&&(l(s.updater)&&s.updater.removeObject(s),a.remove(r.id))};v0._subSample=LAe;var sF=v0;var nyi=y(C(),1);var RAe=U.WHITE,VAe=U.BLACK,GAe=0,ZAe=1,BAe=0,wAe=Ir.NONE,XAe=new U,zit=new m,WAe=new U,FAe=new zt,PAe=new zt,MAe=new Qt;function vAe(e){this.entity=e,this.pointPrimitive=void 0,this.billboard=void 0,this.color=void 0,this.outlineColor=void 0,this.pixelSize=void 0,this.outlineWidth=void 0}function N0(e,t){t.collectionChanged.addEventListener(N0.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new Bt,this._onCollectionChanged(t,t.values,[],[])}N0.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._point,c=r.pointPrimitive,d=r.billboard,u=z.getValueOrDefault(a._heightReference,e,et.NONE),h=s.isShowing&&s.isAvailable(e)&&z.getValueOrDefault(a._show,e,!0),p;if(h&&(p=z.getValueOrUndefined(s._position,e,zit),h=l(p)),!h){aF(r,s,n);continue}z.isConstant(s._position)||(n._clusterDirty=!0);let g=!1,f=!1;if(u!==et.NONE&&!l(d)?(l(c)&&(aF(r,s,n),c=void 0),d=n.getBillboard(s),d.id=s,d.image=void 0,r.billboard=d,g=!0,f=m.equals(d.position,p)&&d.heightReference===u):u===et.NONE&&!l(c)&&(l(d)&&(aF(r,s,n),d=void 0),c=n.getPoint(s),c.id=s,r.pointPrimitive=c),l(c))c.show=!0,c.position=p,c.scaleByDistance=z.getValueOrUndefined(a._scaleByDistance,e,FAe),c.translucencyByDistance=z.getValueOrUndefined(a._translucencyByDistance,e,PAe),c.color=z.getValueOrDefault(a._color,e,RAe,XAe),c.outlineColor=z.getValueOrDefault(a._outlineColor,e,VAe,WAe),c.outlineWidth=z.getValueOrDefault(a._outlineWidth,e,GAe),c.pixelSize=z.getValueOrDefault(a._pixelSize,e,ZAe),c.distanceDisplayCondition=z.getValueOrUndefined(a._distanceDisplayCondition,e,MAe),c.disableDepthTestDistance=z.getValueOrDefault(a._disableDepthTestDistance,e,BAe),c.splitDirection=z.getValueOrDefault(a._splitDirection,e,wAe);else if(l(d)){d.show=!0,d.position=p,d.scaleByDistance=z.getValueOrUndefined(a._scaleByDistance,e,FAe),d.translucencyByDistance=z.getValueOrUndefined(a._translucencyByDistance,e,PAe),d.distanceDisplayCondition=z.getValueOrUndefined(a._distanceDisplayCondition,e,MAe),d.disableDepthTestDistance=z.getValueOrDefault(a._disableDepthTestDistance,e,BAe),d.splitDirection=z.getValueOrDefault(a._splitDirection,e,wAe),d.heightReference=u;let b=z.getValueOrDefault(a._color,e,RAe,XAe),x=z.getValueOrDefault(a._outlineColor,e,VAe,WAe),I=Math.round(z.getValueOrDefault(a._outlineWidth,e,GAe)),_=Math.max(1,Math.round(z.getValueOrDefault(a._pixelSize,e,ZAe)));if(I>0?(d.scale=1,g=g||I!==r.outlineWidth||_!==r.pixelSize||!U.equals(b,r.color)||!U.equals(x,r.outlineColor)):(d.scale=_/50,_=50,g=g||I!==r.outlineWidth||!U.equals(b,r.color)||!U.equals(x,r.outlineColor)),g){r.color=U.clone(b,r.color),r.outlineColor=U.clone(x,r.outlineColor),r.pixelSize=_,r.outlineWidth=I;let E=b.alpha,S=b.toCssColorString(),R=x.toCssColorString(),G=JSON.stringify([S,_,R,I]);d.setImage(G,fx(E,S,R,I,_))}f&&d._updateClamping()}}return!0};N0.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!(l(n.pointPrimitive)||l(n.billboard)))return At.FAILED;if(l(n.pointPrimitive))t.center=m.clone(n.pointPrimitive.position,t.center);else{let i=n.billboard;if(!l(i._clampedPosition))return At.PENDING;t.center=m.clone(i._clampedPosition,t.center)}return t.radius=0,At.DONE};N0.prototype.isDestroyed=function(){return!1};N0.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(N0.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removePoint(e[t]);return me(this)};N0.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._point)&&l(r._position)&&s.set(r.id,new vAe(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._point)&&l(r._position)?s.contains(r.id)||s.set(r.id,new vAe(r)):(aF(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],aF(s.get(r.id),r,a),s.remove(r.id)};function aF(e,t,n){if(l(e)){let i=e.pointPrimitive;if(l(i)){e.pointPrimitive=void 0,n.removePoint(t);return}let o=e.billboard;l(o)&&(e.billboard=void 0,n.removeBillboard(t))}}var cF=N0;var ZCi=y(C(),1);var qyi=y(C(),1);var Iyi=y(C(),1);var kAe=[];function Kit(e,t,n,i,o){let r=kAe;r.length=o;let s,a=n.red,c=n.green,d=n.blue,u=n.alpha,h=i.red,p=i.green,g=i.blue,f=i.alpha;if(U.equals(n,i)){for(s=0;s<o;s++)r[s]=U.clone(n);return r}let b=(h-a)/o,x=(p-c)/o,I=(g-d)/o,_=(f-u)/o;for(s=0;s<o;s++)r[s]=new U(a+s*b,c+s*x,d+s*I,u+s*_);return r}function lF(e){e=e??Y.EMPTY_OBJECT;let t=e.positions,n=e.colors,i=e.width??1,o=e.colorsPerVertex??!1;this._positions=t,this._colors=n,this._width=i,this._colorsPerVertex=o,this._vertexFormat=we.clone(e.vertexFormat??we.DEFAULT),this._arcType=e.arcType??dn.GEODESIC,this._granularity=e.granularity??Z.RADIANS_PER_DEGREE,this._ellipsoid=ie.clone(e.ellipsoid??ie.default),this._workerName="createPolylineGeometry";let r=1+t.length*m.packedLength;r+=l(n)?1+n.length*U.packedLength:1,this.packedLength=r+ie.packedLength+we.packedLength+4}lF.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=m.packedLength)m.pack(o[i],t,n);let s=e._colors;for(r=l(s)?s.length:0,t[n++]=r,i=0;i<r;++i,n+=U.packedLength)U.pack(s[i],t,n);return ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,we.pack(e._vertexFormat,t,n),n+=we.packedLength,t[n++]=e._width,t[n++]=e._colorsPerVertex?1:0,t[n++]=e._arcType,t[n]=e._granularity,t};var YAe=ie.clone(ie.UNIT_SPHERE),OAe=new we,rI={positions:void 0,colors:void 0,ellipsoid:YAe,vertexFormat:OAe,width:void 0,colorsPerVertex:void 0,arcType:void 0,granularity:void 0};lF.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=m.packedLength)r[i]=m.unpack(e,t);o=e[t++];let s=o>0?new Array(o):void 0;for(i=0;i<o;++i,t+=U.packedLength)s[i]=U.unpack(e,t);let a=ie.unpack(e,t,YAe);t+=ie.packedLength;let c=we.unpack(e,t,OAe);t+=we.packedLength;let d=e[t++],u=e[t++]===1,h=e[t++],p=e[t];return l(n)?(n._positions=r,n._colors=s,n._ellipsoid=ie.clone(a,n._ellipsoid),n._vertexFormat=we.clone(c,n._vertexFormat),n._width=d,n._colorsPerVertex=u,n._arcType=h,n._granularity=p,n):(rI.positions=r,rI.colors=s,rI.width=d,rI.colorsPerVertex=u,rI.arcType=h,rI.granularity=p,new lF(rI))};var NAe=new m,DAe=new m,QAe=new m,UAe=new m;lF.createGeometry=function(e){let t=e._width,n=e._vertexFormat,i=e._colors,o=e._colorsPerVertex,r=e._arcType,s=e._granularity,a=e._ellipsoid,c,d,u,h=[],p=Xo(e._positions,m.equalsEpsilon,!1,h);if(l(i)&&h.length>0){let W=0,M=h[0];i=i.filter(function(Q,N){let k=!1;return o?k=N===M||N===0&&M===1:k=N+1===M,k?(W++,M=h[W],!1):!0})}let g=p.length;if(g<2||t<=0)return;if(r===dn.GEODESIC||r===dn.RHUMB){let W,M;r===dn.GEODESIC?(W=Z.chordLength(s,a.maximumRadius),M=Oi.numberOfPoints):(W=s,M=Oi.numberOfPointsRhumbLine);let Q=Oi.extractHeights(p,a);if(l(i)){let N=1;for(c=0;c<g-1;++c)N+=M(p[c],p[c+1],W);let k=new Array(N),v=0;for(c=0;c<g-1;++c){let O=p[c],H=p[c+1],ee=i[c],K=M(O,H,W);if(o&&c<N){let te=i[c+1],q=Kit(O,H,ee,te,K),pe=q.length;for(d=0;d<pe;++d)k[v++]=q[d]}else for(d=0;d<K;++d)k[v++]=U.clone(ee)}k[v]=U.clone(i[i.length-1]),i=k,kAe.length=0}r===dn.GEODESIC?p=Oi.generateCartesianArc({positions:p,minDistance:W,ellipsoid:a,height:Q}):p=Oi.generateCartesianRhumbArc({positions:p,granularity:W,ellipsoid:a,height:Q})}g=p.length;let f=g*4-4,b=new Float64Array(f*3),x=new Float64Array(f*3),I=new Float64Array(f*3),_=new Float32Array(f*2),E=n.st?new Float32Array(f*2):void 0,S=l(i)?new Uint8Array(f*4):void 0,R=0,G=0,B=0,w=0,F;for(d=0;d<g;++d){d===0?(F=NAe,m.subtract(p[0],p[1],F),m.add(p[0],F,F)):F=p[d-1],m.clone(F,QAe),m.clone(p[d],DAe),d===g-1?(F=NAe,m.subtract(p[g-1],p[g-2],F),m.add(p[g-1],F,F)):F=p[d+1],m.clone(F,UAe);let W,M;l(S)&&(d!==0&&!o?W=i[d-1]:W=i[d],d!==g-1&&(M=i[d]));let Q=d===0?2:0,N=d===g-1?2:4;for(u=Q;u<N;++u){m.pack(DAe,b,R),m.pack(QAe,x,R),m.pack(UAe,I,R),R+=3;let k=u-2<0?-1:1;if(_[G++]=2*(u%2)-1,_[G++]=k*t,n.st&&(E[B++]=d/(g-1),E[B++]=Math.max(_[G-2],0)),l(S)){let v=u<2?W:M;S[w++]=U.floatToByte(v.red),S[w++]=U.floatToByte(v.green),S[w++]=U.floatToByte(v.blue),S[w++]=U.floatToByte(v.alpha)}}}let P=new xn;P.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:b}),P.prevPosition=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:x}),P.nextPosition=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:I}),P.expandAndWidth=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:_}),n.st&&(P.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:E})),l(S)&&(P.color=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:4,values:S,normalize:!0}));let A=Me.createTypedArray(f,g*6-6),T=0,L=0,V=g-1;for(d=0;d<V;++d)A[L++]=T,A[L++]=T+2,A[L++]=T+1,A[L++]=T+1,A[L++]=T+2,A[L++]=T+3,T+=4;return new pt({attributes:P,indices:A,primitiveType:We.TRIANGLES,boundingSphere:ue.fromPoints(p),geometryType:Qu.POLYLINES})};var Zg=lF;var Jit=new di(0),D5={},HAe=new U,jit=new qt(U.WHITE),qit=new di(!0),$it=new di(Gn.DISABLED),eot=new di(new Qt),tot=new di($n.BOTH);function not(){this.vertexFormat=void 0,this.positions=void 0,this.width=void 0,this.arcType=void 0,this.granularity=void 0}function iot(){this.positions=void 0,this.width=void 0,this.arcType=void 0,this.granularity=void 0}function $h(e,t){this._entity=e,this._scene=t,this._entitySubscription=e.definitionChanged.addEventListener($h.prototype._onEntityPropertyChanged,this),this._fillEnabled=!1,this._dynamic=!1,this._geometryChanged=new Ce,this._showProperty=void 0,this._materialProperty=void 0,this._shadowsProperty=void 0,this._distanceDisplayConditionProperty=void 0,this._classificationTypeProperty=void 0,this._depthFailMaterialProperty=void 0,this._geometryOptions=new not,this._groundGeometryOptions=new iot,this._id=`polyline-${e.id}`,this._clampToGround=!1,this._supportsPolylinesOnTerrain=ur.supportsPolylinesOnTerrain(t),this._zIndex=0,this._onEntityPropertyChanged(e,"polyline",e.polyline,void 0)}Object.defineProperties($h.prototype,{id:{get:function(){return this._id}},entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!l(this._entity.availability)&&z.isConstant(this._showProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},depthFailMaterialProperty:{get:function(){return this._depthFailMaterialProperty}},outlineEnabled:{value:!1},hasConstantOutline:{value:!0},outlineColorProperty:{value:void 0},shadowsProperty:{get:function(){return this._shadowsProperty}},distanceDisplayConditionProperty:{get:function(){return this._distanceDisplayConditionProperty}},classificationTypeProperty:{get:function(){return this._classificationTypeProperty}},isDynamic:{get:function(){return this._dynamic}},isClosed:{value:!1},geometryChanged:{get:function(){return this._geometryChanged}},arcType:{get:function(){return this._arcType}},clampToGround:{get:function(){return this._clampToGround&&this._supportsPolylinesOnTerrain}},zIndex:{get:function(){return this._zIndex}}});$h.prototype.isOutlineVisible=function(e){return!1};$h.prototype.isFilled=function(e){let t=this._entity;return(this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e))??!1};$h.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new Vn(n&&t.isShowing&&this._showProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=jn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r},a;return this._materialProperty instanceof qt&&(l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,HAe)),l(a)||(a=U.WHITE),s.color=tn.fromColor(a)),this.clampToGround?new wt({id:t,geometry:new cC(this._groundGeometryOptions),attributes:s}):(l(this._depthFailMaterialProperty)&&this._depthFailMaterialProperty instanceof qt&&(l(this._depthFailMaterialProperty.color)&&(this._depthFailMaterialProperty.color.isConstant||n)&&(a=this._depthFailMaterialProperty.color.getValue(e,HAe)),l(a)||(a=U.WHITE),s.depthFailColor=tn.fromColor(a)),new wt({id:t,geometry:new Zg(this._geometryOptions),attributes:s}))};$h.prototype.createOutlineGeometryInstance=function(e){};$h.prototype.isDestroyed=function(){return!1};$h.prototype.destroy=function(){this._entitySubscription(),me(this)};$h.prototype._onEntityPropertyChanged=function(e,t,n,i){if(!(t==="availability"||t==="polyline"))return;let o=this._entity.polyline;if(!l(o)){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let r=o.positions,s=o.show;if(l(s)&&s.isConstant&&!s.getValue(ze.MINIMUM_VALUE)||!l(r)){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let a=o.zIndex,c=o.material??jit,d=c instanceof qt;this._materialProperty=c,this._depthFailMaterialProperty=o.depthFailMaterial,this._showProperty=s??qit,this._shadowsProperty=o.shadows??$it,this._distanceDisplayConditionProperty=o.distanceDisplayCondition??eot,this._classificationTypeProperty=o.classificationType??tot,this._fillEnabled=!0,this._zIndex=a??Jit;let u=o.width,h=o.arcType,p=o.clampToGround,g=o.granularity;if(!r.isConstant||!z.isConstant(u)||!z.isConstant(h)||!z.isConstant(g)||!z.isConstant(p)||!z.isConstant(a))this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this));else{let f=this._geometryOptions,b=r.getValue(ze.MINIMUM_VALUE,f.positions);if(!l(b)||b.length<2){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let x;d&&(!l(this._depthFailMaterialProperty)||this._depthFailMaterialProperty instanceof qt)?x=bs.VERTEX_FORMAT:x=Pa.VERTEX_FORMAT,f.vertexFormat=x,f.positions=b,f.width=l(u)?u.getValue(ze.MINIMUM_VALUE):void 0,f.arcType=l(h)?h.getValue(ze.MINIMUM_VALUE):void 0,f.granularity=l(g)?g.getValue(ze.MINIMUM_VALUE):void 0;let I=this._groundGeometryOptions;I.positions=b,I.width=f.width,I.arcType=f.arcType,I.granularity=f.granularity,this._clampToGround=l(p)?p.getValue(ze.MINIMUM_VALUE):!1,!this._clampToGround&&l(a)&&xt("Entity polylines must have clampToGround: true when using zIndex. zIndex will be ignored."),this._dynamic=!1,this._geometryChanged.raiseEvent(this)}};$h.prototype.createDynamicUpdater=function(e,t){return new dF(e,t,this)};var SS={positions:void 0,granularity:void 0,height:void 0,ellipsoid:void 0};function dF(e,t,n){this._line=void 0,this._primitives=e,this._groundPrimitives=t,this._groundPolylinePrimitive=void 0,this._material=void 0,this._geometryUpdater=n,this._positions=[]}function zAe(e){if(l(e._line))return e._line;let t=e._primitives,n=e._geometryUpdater._scene.id+t._guid,i=D5[n];!l(i)||i.isDestroyed()?(i=new Wh,D5[n]=i,t.add(i)):t.contains(i)||t.add(i);let o=i.add();return o.id=e._geometryUpdater._entity,e._line=o,o}dF.prototype.update=function(e){let t=this._geometryUpdater,n=t._entity,i=n.polyline,o=i.positions,r=z.getValueOrUndefined(o,e,this._positions);t._clampToGround=z.getValueOrDefault(i._clampToGround,e,!1),t._groundGeometryOptions.positions=r,t._groundGeometryOptions.width=z.getValueOrDefault(i._width,e,1),t._groundGeometryOptions.arcType=z.getValueOrDefault(i._arcType,e,dn.GEODESIC),t._groundGeometryOptions.granularity=z.getValueOrDefault(i._granularity,e,9999);let s=this._groundPrimitives;if(l(this._groundPolylinePrimitive)&&(s.remove(this._groundPolylinePrimitive),this._groundPolylinePrimitive=void 0),t.clampToGround){if(!n.isShowing||!n.isAvailable(e)||!z.getValueOrDefault(i._show,e,!0)||!l(r)||r.length<2)return;let h=t.fillMaterialProperty,p;if(h instanceof qt)p=new bs;else{let g=dr.getValue(e,h,this._material);p=new Pa({material:g,translucent:g.isTranslucent()}),this._material=g}this._groundPolylinePrimitive=s.add(new ch({geometryInstances:t.createFillGeometryInstance(e),appearance:p,classificationType:t.classificationTypeProperty.getValue(e),asynchronous:!1}),z.getValueOrUndefined(t.zIndex,e)),l(this._line)&&(this._line.show=!1);return}let a=zAe(this);if(!n.isShowing||!n.isAvailable(e)||!z.getValueOrDefault(i._show,e,!0)){a.show=!1;return}if(!l(r)||r.length<2){a.show=!1;return}let c=dn.GEODESIC;c=z.getValueOrDefault(i._arcType,e,c);let d=t._scene.globe,u=t._scene.ellipsoid;c!==dn.NONE&&l(d)&&(SS.ellipsoid=u,SS.positions=r,SS.granularity=z.getValueOrUndefined(i._granularity,e),SS.height=Oi.extractHeights(r,u),c===dn.GEODESIC?r=Oi.generateCartesianArc(SS):r=Oi.generateCartesianRhumbArc(SS)),a.show=!0,a.positions=r.slice(),a.material=dr.getValue(e,t.fillMaterialProperty,a.material),a.width=z.getValueOrDefault(i._width,e,1),a.distanceDisplayCondition=z.getValueOrUndefined(i._distanceDisplayCondition,e,a.distanceDisplayCondition)};dF.prototype.getBoundingSphere=function(e){if(this._geometryUpdater.clampToGround){let t=this._groundPolylinePrimitive;if(l(t)&&t.show&&t.ready){let n=t.getGeometryInstanceAttributes(this._geometryUpdater._entity);if(l(n)&&l(n.boundingSphere))return ue.clone(n.boundingSphere,e),At.DONE}return l(t)&&!t.ready?At.PENDING:At.DONE}else{let t=zAe(this);if(t.show&&t.positions.length>0)return ue.fromPoints(t.positions,e),At.DONE}return At.FAILED};dF.prototype.isDestroyed=function(){return!1};dF.prototype.destroy=function(){let t=this._geometryUpdater._scene.id+this._primitives._guid,n=D5[t];l(n)&&(n.remove(this._line),n.length===0&&(this._primitives.removeAndDestroy(n),delete D5[t])),l(this._groundPolylinePrimitive)&&this._groundPrimitives.remove(this._groundPolylinePrimitive),me(this)};var uF=$h;var fCi=y(C(),1);var oot=new U,rot=new Qt,sot=new Qt;function ef(e,t,n,i,o){let r;n instanceof qt?r=bs:r=Pa,this.orderedGroundPrimitives=e,this.classificationType=t,this.appearanceType=r,this.materialProperty=n,this.updaters=new Bt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Bt,this.material=void 0,this.updatersWithAttributes=new Bt,this.attributes=new Bt,this.invalidated=!1,this.removeMaterialSubscription=n.definitionChanged.addEventListener(ef.prototype.onMaterialChanged,this),this.subscriptions=new Bt,this.showsUpdated=new Bt,this.zIndex=i,this._asynchronous=o}ef.prototype.onMaterialChanged=function(){this.invalidated=!0};ef.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty;return n===t||n instanceof qt&&t instanceof qt?!0:l(t)&&t.equals(n)};ef.prototype.add=function(e,t,n){let i=t.id;if(this.updaters.set(i,t),this.geometry.set(i,n),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!z.isConstant(t.distanceDisplayConditionProperty))this.updatersWithAttributes.set(i,t);else{let o=this;this.subscriptions.set(i,t.entity.definitionChanged.addEventListener(function(r,s,a,c){s==="isShowing"&&o.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};ef.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t)),!0}return!1};ef.prototype.update=function(e){let t=!0,n=this.primitive,i=this.orderedGroundPrimitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0)l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),n=new ch({show:!1,asynchronous:this._asynchronous,geometryInstances:o.slice(),appearance:new this.appearanceType,classificationType:this.classificationType}),this.appearanceType===Pa&&(this.material=dr.getValue(e,this.materialProperty,this.material),n.appearance.material=this.material),i.add(n,this.zIndex),t=!1;else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.appearanceType===Pa&&(this.material=dr.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material);let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],d=c.entity,u=this.geometry.get(c.id),h=this.attributes.get(u.id.id);if(l(h)||(h=n.getGeometryInstanceAttributes(u.id),this.attributes.set(u.id.id,h)),!c.fillMaterialProperty.isConstant){let b=c.fillMaterialProperty.color,x=z.getValueOrDefault(b,e,U.WHITE,oot);U.equals(h._lastColor,x)||(h._lastColor=U.clone(x,h._lastColor),h.color=tn.toValue(x,h.color))}let p=d.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;p!==g&&(h.show=Vn.toValue(p,h.show));let f=c.distanceDisplayConditionProperty;if(!z.isConstant(f)){let b=z.getValueOrDefault(f,e,sot,rot);Qt.equals(b,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Qt.clone(b,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=jn.toValue(b,h.distanceDisplayCondition))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};ef.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,d=a.show[0]===1;c!==d&&(a.show=Vn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};ef.prototype.contains=function(e){return this.updaters.contains(e.id)};ef.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return At.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?At.FAILED:(i.boundingSphere.clone(t),At.DONE)};ef.prototype.destroy=function(){let e=this.primitive,t=this.orderedGroundPrimitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),this.removeMaterialSubscription()};function LS(e,t,n){this._items=[],this._orderedGroundPrimitives=e,this._classificationType=t,this._asynchronous=n??!0}LS.prototype.add=function(e,t){let n=this._items,i=n.length,o=t.createFillGeometryInstance(e),r=z.getValueOrDefault(t.zIndex,0);for(let a=0;a<i;++a){let c=n[a];if(c.isMaterial(t)&&c.zIndex===r){c.add(e,t,o);return}}let s=new ef(this._orderedGroundPrimitives,this._classificationType,t.fillMaterialProperty,r,this._asynchronous);s.add(e,t,o),n.push(s)};LS.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0;i--){let o=t[i];if(o.remove(e)){o.updaters.length===0&&(t.splice(i,1),o.destroy());break}}};LS.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];if(r.invalidated){n.splice(t,1);let s=r.updaters.values,a=s.length;for(let c=0;c<a;c++)this.add(e,s[c]);r.destroy()}}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};LS.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return At.FAILED};LS.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var mF=LS;var aot=[];function KAe(e,t){let n=e._batches,i=n.length;for(let o=0;o<i;o++)n[o].remove(t)}function JAe(e,t,n){if(n.isDynamic){e._dynamicBatch.add(t,n);return}if(n.clampToGround&&n.fillEnabled){let s=n.classificationTypeProperty.getValue(t);e._groundBatches[s].add(t,n);return}let i;n.fillEnabled&&(i=n.shadowsProperty.getValue(t));let o=0;l(n.depthFailMaterialProperty)&&(o=n.depthFailMaterialProperty instanceof qt?1:2);let r;l(i)&&(r=i+o*Gn.NUMBER_OF_SHADOW_MODES),n.fillEnabled&&(n.fillMaterialProperty instanceof qt?e._colorBatches[r].add(t,n):e._materialBatches[r].add(t,n))}function mp(e,t,n,i){i=i??e.groundPrimitives,n=n??e.primitives,this._scene=e,this._primitives=n,this._entityCollection=void 0,this._addedObjects=new Bt,this._removedObjects=new Bt,this._changedObjects=new Bt;let o,r=Gn.NUMBER_OF_SHADOW_MODES;for(this._colorBatches=new Array(r*3),this._materialBatches=new Array(r*3),o=0;o<r;++o)this._colorBatches[o]=new Lm(n,bs,void 0,!1,o),this._materialBatches[o]=new Rm(n,Pa,void 0,!1,o),this._colorBatches[o+r]=new Lm(n,bs,bs,!1,o),this._materialBatches[o+r]=new Rm(n,Pa,bs,!1,o),this._colorBatches[o+r*2]=new Lm(n,bs,Pa,!1,o),this._materialBatches[o+r*2]=new Rm(n,Pa,Pa,!1,o);this._dynamicBatch=new Yx(n,i);let s=$n.NUMBER_OF_CLASSIFICATION_TYPES;for(this._groundBatches=new Array(s),o=0;o<s;++o)this._groundBatches[o]=new mF(i,o);this._batches=this._colorBatches.concat(this._materialBatches,this._dynamicBatch,this._groundBatches),this._subscriptions=new Bt,this._updaters=new Bt,this._entityCollection=t,t.collectionChanged.addEventListener(mp.prototype._onCollectionChanged,this),this._onCollectionChanged(t,t.values,aot)}mp.prototype.update=function(e){let t=this._addedObjects,n=t.values,i=this._removedObjects,o=i.values,r=this._changedObjects,s=r.values,a,c,d,u;for(a=s.length-1;a>-1;a--)c=s[a],d=c.id,u=this._updaters.get(d),u.entity===c?(KAe(this,u),JAe(this,e,u)):(o.push(c),n.push(c));for(a=o.length-1;a>-1;a--)c=o[a],d=c.id,u=this._updaters.get(d),KAe(this,u),u.destroy(),this._updaters.remove(d),this._subscriptions.get(d)(),this._subscriptions.remove(d);for(a=n.length-1;a>-1;a--)c=n[a],d=c.id,u=new uF(c,this._scene),this._updaters.set(d,u),JAe(this,e,u),this._subscriptions.set(d,u.geometryChanged.addEventListener(mp._onGeometryChanged,this));t.removeAll(),i.removeAll(),r.removeAll();let h=!0,p=this._batches,g=p.length;for(a=0;a<g;a++)h=p[a].update(e)&&h;return h};var cot=[],lot=new ue;mp.prototype.getBoundingSphere=function(e,t){let n=cot,i=lot,o=0,r=At.DONE,s=this._batches,a=s.length,c=this._updaters.get(e.id);for(let d=0;d<a;d++){if(r=s[d].getBoundingSphere(c,i),r===At.PENDING)return At.PENDING;r===At.DONE&&(n[o]=ue.clone(i,n[o]),o++)}return o===0?At.FAILED:(n.length=o,ue.fromBoundingSpheres(n,t),At.DONE)};mp.prototype.isDestroyed=function(){return!1};mp.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(mp.prototype._onCollectionChanged,this),this._addedObjects.removeAll(),this._removedObjects.removeAll();let e,t=this._batches,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._subscriptions.values;for(n=i.length,e=0;e<n;e++)i[e]();return this._subscriptions.removeAll(),me(this)};mp._onGeometryChanged=function(e){let t=this._removedObjects,n=this._changedObjects,i=e.entity,o=i.id;!l(t.get(o))&&!l(n.get(o))&&n.set(o,i)};mp.prototype._onCollectionChanged=function(e,t,n){let i=this._addedObjects,o=this._removedObjects,r=this._changedObjects,s,a,c;for(s=n.length-1;s>-1;s--)c=n[s],a=c.id,i.remove(a)||(o.set(a,c),r.remove(a));for(s=t.length-1;s>-1;s--)c=t[s],a=c.id,o.remove(a)?r.set(a,c):i.set(a,c)};var hF=mp;function bd(e){cl.initializeTerrainHeights(),ch.initializeTerrainHeights();let t=e.scene,n=e.dataSourceCollection;this._eventHelper=new Lr,this._eventHelper.add(n.dataSourceAdded,this._onDataSourceAdded,this),this._eventHelper.add(n.dataSourceRemoved,this._onDataSourceRemoved,this),this._eventHelper.add(n.dataSourceMoved,this._onDataSourceMoved,this),this._eventHelper.add(t.postRender,this._postRender,this),this._dataSourceCollection=n,this._scene=t,this._visualizersCallback=e.visualizersCallback??bd.defaultVisualizersCallback;let i=!1,o=new Wl,r=new Wl;n.length>0&&(t.primitives.add(o),t.groundPrimitives.add(r),i=!0),this._primitives=o,this._groundPrimitives=r;for(let d=0,u=n.length;d<u;d++)this._onDataSourceAdded(n,n.get(d));let s=new mW;this._onDataSourceAdded(void 0,s),this._defaultDataSource=s;let a,c;if(!i){let d=this,u=function(){t.primitives.add(o),t.groundPrimitives.add(r),a(),c(),d._removeDefaultDataSourceListener=void 0,d._removeDataSourceCollectionListener=void 0};a=s.entities.collectionChanged.addEventListener(u),c=n.dataSourceAdded.addEventListener(u)}this._removeDefaultDataSourceListener=a,this._removeDataSourceCollectionListener=c,this._ready=!1}var RS=[];bd.registerVisualizer=function(e){RS.includes(e)||RS.push(e)};bd.unregisterVisualizer=function(e){if(RS.includes(e)){let t=RS.indexOf(e);RS.splice(t,1)}};bd.defaultVisualizersCallback=function(e,t,n){let i=n.entities;return[new h1(t,i),new nF(e,i,n._primitives,n._groundPrimitives),new iF(t,i),new oF(e,i),new j2(e,i),new cF(t,i),new sF(e,i),new hF(e,i,n._primitives,n._groundPrimitives),...RS.map(o=>new o(e,i))]};Object.defineProperties(bd.prototype,{scene:{get:function(){return this._scene}},dataSources:{get:function(){return this._dataSourceCollection}},defaultDataSource:{get:function(){return this._defaultDataSource}},ready:{get:function(){return this._ready}}});bd.prototype.isDestroyed=function(){return!1};bd.prototype.destroy=function(){this._eventHelper.removeAll();let e=this._dataSourceCollection;for(let t=0,n=e.length;t<n;++t)this._onDataSourceRemoved(this._dataSourceCollection,e.get(t));return this._onDataSourceRemoved(void 0,this._defaultDataSource),l(this._removeDefaultDataSourceListener)?(this._removeDefaultDataSourceListener(),this._removeDataSourceCollectionListener()):(this._scene.primitives.remove(this._primitives),this._scene.groundPrimitives.remove(this._groundPrimitives)),me(this)};bd.prototype.update=function(e){if(!Si.initialized)return this._ready=!1,!1;let t=!0,n,i,o,r,s=this._dataSourceCollection,a=s.length;for(n=0;n<a;n++){let c=s.get(n);for(l(c.update)&&(t=c.update(e)&&t),o=c._visualizers,r=o.length,i=0;i<r;i++)t=o[i].update(e)&&t}for(o=this._defaultDataSource._visualizers,r=o.length,i=0;i<r;i++)t=o[i].update(e)&&t;return!this._ready&&t&&this._scene.requestRender(),this._ready=this._ready||t,t};bd.prototype._postRender=function(){let e=this._scene.frameState,t=this._dataSourceCollection,n=t.length;for(let i=0;i<n;i++){let o=t.get(i),r=o.credit;l(r)&&e.creditDisplay.addCreditToNextFrame(r);let s=o._resourceCredits;if(l(s)){let a=s.length;for(let c=0;c<a;c++)e.creditDisplay.addCreditToNextFrame(s[c])}}};var dot=[],uot=new ue;bd.prototype.getBoundingSphere=function(e,t,n){if(!this._ready)return At.PENDING;let i,o,r=this._defaultDataSource;if(!r.entities.contains(e)){r=void 0;let p=this._dataSourceCollection;for(o=p.length,i=0;i<o;i++){let g=p.get(i);if(g.entities.contains(e)){r=g;break}}}if(!l(r))return At.FAILED;let s=dot,a=uot,c=0,d=At.DONE,u=r._visualizers,h=u.length;for(i=0;i<h;i++){let p=u[i];if(l(p.getBoundingSphere)){if(d=u[i].getBoundingSphere(e,a),!t&&d===At.PENDING)return At.PENDING;d===At.DONE&&(s[c]=ue.clone(a,s[c]),c++)}}return c===0?At.FAILED:(s.length=c,ue.fromBoundingSpheres(s,n),At.DONE)};bd.prototype._onDataSourceAdded=function(e,t){let n=this._scene,i=this._primitives,o=this._groundPrimitives,r=i.add(new Wl),s=o.add(new LW);t._primitives=r,t._groundPrimitives=s;let a=t.clustering;a._initialize(n),r.add(a),t._visualizers=this._visualizersCallback(n,a,t)};bd.prototype._onDataSourceRemoved=function(e,t){let n=this._primitives,i=this._groundPrimitives,o=t._primitives,r=t._groundPrimitives,s=t.clustering;o.remove(s);let a=t._visualizers,c=a.length;for(let d=0;d<c;d++)a[d].destroy();n.remove(o),i.remove(r),t._visualizers=void 0};bd.prototype._onDataSourceMoved=function(e,t,n){let i=this._primitives,o=this._groundPrimitives,r=e._primitives,s=e._groundPrimitives;t===n+1?(i.raise(r),o.raise(s)):t===n-1?(i.lower(r),o.lower(s)):t===0?(i.lowerToBottom(r),o.lowerToBottom(s),i.raise(r),o.raise(s)):(i.raiseToTop(r),o.raiseToTop(s))};var fF=bd;var Axi=y(C(),1);var txi=y(C(),1);function D4(e,t,n){this.heading=e??0,this.pitch=t??0,this.range=n??0}D4.clone=function(e,t){if(l(e))return l(t)||(t=new D4),t.heading=e.heading,t.pitch=e.pitch,t.range=e.range,t};var Vm=D4;var jAe=new $,qAe=new $,$Ae=new $,mot=new X,Q5=new m,ege=new m,Q4=new m,U4=new m,tge=new m,nge=new m,hot=new Pe,fot=new m,pot=new $,VS=new j,Aot=1.25;function got(e,t,n,i,o,r,s,a,c,d){let u=e.scene.mode,h=o.getValue(c,e._lastCartesian);if(l(h)){let p=!1,g=!1,f,b,x;if(u===re.SCENE3D){j.addSeconds(c,.001,VS);let B=o.getValue(VS,Q5);if(l(B)||(j.addSeconds(c,-.001,VS),B=o.getValue(VS,Q5),g=!0),l(B)){let w=Dt.computeFixedToIcrfMatrix(c,jAe),F=Dt.computeFixedToIcrfMatrix(VS,qAe),P;!l(w)||!l(F)?(P=Dt.computeTemeToPseudoFixedMatrix(c,$Ae),w=$.transpose(P,jAe),F=Dt.computeTemeToPseudoFixedMatrix(VS,qAe),$.transpose(F,F)):P=$.transpose(w,$Ae);let A=$.multiplyByVector(w,h,tge),T=$.multiplyByVector(F,B,nge);m.subtract(A,T,U4);let L=m.magnitude(U4)*1e3,V=Z.GRAVITATIONALPARAMETER,W=-V/(L*L-2*V/m.magnitude(A));W<0||W>Aot*d.maximumRadius?(f=ege,m.normalize(h,f),m.negate(f,f),x=m.clone(m.UNIT_Z,Q4),b=m.cross(x,f,Q5),m.magnitude(b)>Z.EPSILON7&&(m.normalize(f,f),m.normalize(b,b),x=m.cross(f,b,Q4),m.normalize(x,x),p=!0)):m.equalsEpsilon(h,B,Z.EPSILON7)||(x=ege,m.normalize(A,x),m.normalize(T,T),b=m.cross(x,T,Q4),g&&(b=m.multiplyByScalar(b,-1,b)),m.equalsEpsilon(b,m.ZERO,Z.EPSILON7)||(f=m.cross(b,x,Q5),$.multiplyByVector(P,f,f),$.multiplyByVector(P,b,b),$.multiplyByVector(P,x,x),m.normalize(f,f),m.normalize(b,b),m.normalize(x,x),p=!0))}}l(e.boundingSphere)&&(h=e.boundingSphere.center);let I,_,E;i&&(I=m.clone(t.position,U4),_=m.clone(t.direction,tge),E=m.clone(t.up,nge));let S=mot,R;l(s)&&(R=s.getValue(c,hot));let G=r.getValue(c,fot);if(a===rA.INERTIAL&&l(R))X.fromTranslationQuaternionRotationScale(h,R,m.ONE,S);else if(a===rA.VELOCITY&&l(G)){let B=Dt.rotationMatrixFromPositionVelocity(h,G,d,pot);X.fromRotationTranslation(B,h,S)}else a===rA.ENU||!p?Dt.eastNorthUpToFixedFrame(h,d,S):(S[0]=f.x,S[1]=f.y,S[2]=f.z,S[3]=0,S[4]=b.x,S[5]=b.y,S[6]=b.z,S[7]=0,S[8]=x.x,S[9]=x.y,S[10]=x.z,S[11]=0,S[12]=h.x,S[13]=h.y,S[14]=h.z,S[15]=0);t._setTransform(S),i&&(m.clone(I,t.position),m.clone(_,t.direction),m.clone(E,t.up),m.cross(_,E,t.right))}if(n){let p=u===re.SCENE2D||m.equals(e._offset3D,m.ZERO)?void 0:e._offset3D;t.lookAtTransform(t.transform,p)}}function pF(e,t,n){this.entity=e,this.scene=t,this.ellipsoid=n??ie.default,this.boundingSphere=void 0,this._lastEntity=void 0,this._mode=void 0,this._lastCartesian=new m,this._defaultOffset3D=void 0,this._velocityProperty=new Tg(e.position,!0),this._offset3D=new m}Object.defineProperties(pF,{defaultOffset3D:{get:function(){return this._defaultOffset3D},set:function(e){this._defaultOffset3D=m.clone(e,new m)}}});pF.defaultOffset3D=new m(-14e3,3500,3500);var U5=new Vm,bot=new m;pF.prototype.update=function(e,t){let n=this.scene,i=this.ellipsoid,o=n.mode;if(o===re.MORPHING)return;let r=this.entity,s=r.trackingReferenceFrame,a=r.position;if(!l(a))return;let c=this._velocityProperty,d=r.orientation,u=r!==this._lastEntity,h=o!==this._mode,p=n.camera,g=u||h,f=!0;if(u){let b=r.viewFrom,x=l(b);if(!x&&l(t)){U5.pitch=-Z.PI_OVER_FOUR,U5.range=0;let I=a.getValue(e,bot);if(l(I)){let _=2-1/Math.max(1,m.magnitude(I)/i.maximumRadius);U5.pitch*=_}p.viewBoundingSphere(t,U5),this.boundingSphere=t,g=!1,f=!1}else(!x||!l(b.getValue(e,this._offset3D)))&&m.clone(pF._defaultOffset3D,this._offset3D)}else!h&&this._mode!==re.SCENE2D&&m.clone(p.position,this._offset3D);this._lastEntity=r,this._mode=o,got(this,p,g,f,a,c,d,s,e,i)};var AF=pF;var zIi=y(C(),1);var _xi=y(C(),1);function bF(){this._cache={}}bF.prototype.fromColor=function(e,t){return k5(void 0,void 0,e,t,this._cache)};bF.prototype.fromUrl=function(e,t,n){return k5(e,void 0,t,n,this._cache)};bF.prototype.fromMakiIconId=function(e,t,n){return k5(hn(`Assets/Textures/maki/${encodeURIComponent(e)}.png`),void 0,t,n,this._cache)};bF.prototype.fromText=function(e,t,n){return k5(void 0,e,t,n,this._cache)};var yot=new U;function Cot(e,t,n){e.save(),e.scale(n/24,n/24),e.fillStyle=t.toCssColorString(),e.strokeStyle=t.brighten(.6,yot).toCssColorString(),e.lineWidth=.846,e.beginPath(),e.moveTo(6.72,.422),e.lineTo(17.28,.422),e.bezierCurveTo(18.553,.422,19.577,1.758,19.577,3.415),e.lineTo(19.577,10.973),e.bezierCurveTo(19.577,12.63,18.553,13.966,17.282,13.966),e.lineTo(14.386,14.008),e.lineTo(11.826,23.578),e.lineTo(9.614,14.008),e.lineTo(6.719,13.965),e.bezierCurveTo(5.446,13.983,4.422,12.629,4.422,10.972),e.lineTo(4.422,3.416),e.bezierCurveTo(4.423,1.76,5.447,.423,6.718,.423),e.closePath(),e.fill(),e.stroke(),e.restore()}function ige(e,t,n){let i=n/2.5,o=i,r=i;t.width>t.height?r=i*(t.height/t.width):t.width<t.height&&(o=i*(t.width/t.height));let s=Math.round((n-o)/2),a=Math.round(7/24*n-r/2);e.globalCompositeOperation="destination-out",e.drawImage(t,s-1,a,o,r),e.drawImage(t,s,a-1,o,r),e.drawImage(t,s+1,a,o,r),e.drawImage(t,s,a+1,o,r),e.globalCompositeOperation="destination-over",e.fillStyle=U.BLACK.toCssColorString(),e.fillRect(s-1,a-1,o+2,r+2),e.globalCompositeOperation="destination-out",e.drawImage(t,s,a,o,r),e.globalCompositeOperation="destination-over",e.fillStyle=U.WHITE.toCssColorString(),e.fillRect(s-1,a-2,o+2,r+2)}var gF=new Array(4);function k5(e,t,n,i,o){gF[0]=e,gF[1]=t,gF[2]=n,gF[3]=i;let r=JSON.stringify(gF),s=o[r];if(l(s))return s;let a=document.createElement("canvas");a.width=i,a.height=i;let c=a.getContext("2d");if(Cot(c,n,i),l(e)){let u=Ve.createIfNeeded(e).fetchImage().then(function(h){return ige(c,h,i),o[r]=a,a});return o[r]=u,u}else if(l(t)){let d=Ax(t,{font:`bold ${i}px sans-serif`});ige(c,d,i)}return o[r]=a,a}var Bg=bF;var hIi=y(C());var Zxi=y(C());var Rxi=y(C());var Txi=y(C());function k4(e){return e}function Y5(e){if(e==null)return k4;var t,n,i=e.scale[0],o=e.scale[1],r=e.translate[0],s=e.translate[1];return function(a,c){c||(t=n=0);var d=2,u=a.length,h=new Array(u);for(h[0]=(t+=a[0])*i+r,h[1]=(n+=a[1])*o+s;d<u;)h[d]=a[d],++d;return h}}var Pxi=y(C());var wxi=y(C());function oge(e,t){for(var n,i=e.length,o=i-t;o<--i;)n=e[o],e[o++]=e[i],e[i]=n}function Y4(e,t){return typeof t=="string"&&(t=e.objects[t]),t.type==="GeometryCollection"?{type:"FeatureCollection",features:t.geometries.map(function(n){return rge(e,n)})}:rge(e,t)}function rge(e,t){var n=t.id,i=t.bbox,o=t.properties==null?{}:t.properties,r=O4(e,t);return n==null&&i==null?{type:"Feature",properties:o,geometry:r}:i==null?{type:"Feature",id:n,properties:o,geometry:r}:{type:"Feature",id:n,bbox:i,properties:o,geometry:r}}function O4(e,t){var n=Y5(e.transform),i=e.arcs;function o(u,h){h.length&&h.pop();for(var p=i[u<0?~u:u],g=0,f=p.length;g<f;++g)h.push(n(p[g],g));u<0&&oge(h,f)}function r(u){return n(u)}function s(u){for(var h=[],p=0,g=u.length;p<g;++p)o(u[p],h);return h.length<2&&h.push(h[0]),h}function a(u){for(var h=s(u);h.length<4;)h.push(h[0]);return h}function c(u){return u.map(a)}function d(u){var h=u.type,p;switch(h){case"GeometryCollection":return{type:h,geometries:u.geometries.map(d)};case"Point":p=r(u.coordinates);break;case"MultiPoint":p=u.coordinates.map(r);break;case"LineString":p=s(u.arcs);break;case"MultiLineString":p=u.arcs.map(s);break;case"Polygon":p=c(u.arcs);break;case"MultiPolygon":p=u.arcs.map(c);break;default:return null}return{type:h,coordinates:p}}return d(t)}var Uxi=y(C());var vxi=y(C());var Hxi=y(C());var $xi=y(C());var Kxi=y(C());var sIi=y(C());var nIi=y(C());function O5(e){return m.fromDegrees(e[0],e[1],e[2])}var H4={"urn:ogc:def:crs:OGC:1.3:CRS84":O5,"EPSG:4326":O5,"urn:ogc:def:crs:EPSG::4326":O5},sge={},age={},z4=48,K4,J4=U.ROYALBLUE,j4=U.YELLOW,q4=2,$4=U.fromBytes(255,255,0,100),ej=!1,Tot={small:24,medium:48,large:64},Sot=["title","description","marker-size","marker-symbol","marker-color","stroke","stroke-opacity","stroke-width","fill","fill-opacity"];function cge(e,t){let n="";for(let i in e)if(e.hasOwnProperty(i)){if(i===t||Sot.indexOf(i)!==-1)continue;let o=e[i];l(o)&&(typeof o=="object"?n+=`<tr><th>${i}</th><td>${cge(o)}</td></tr>`:n+=`<tr><th>${i}</th><td>${o}</td></tr>`)}return n.length>0&&(n=`<table class="cesium-infoBox-defaultTable"><tbody>${n}</tbody></table>`),n}function Lot(e,t,n){let i;return function(o,r){return l(i)||(i=e(t,n)),i}}function Rot(e,t){return new hh(Lot(cge,e,t),!0)}function H5(e,t,n){let i=e.id;if(!l(i)||e.type!=="Feature")i=qn();else{let s=2,a=i;for(;l(t.getById(a));)a=`${i}_${s}`,s++;i=a}let o=t.getOrCreateEntity(i),r=e.properties;if(l(r)){o.properties=r;let s,a=r.title;if(l(a))o.name=a,s="title";else{let d=Number.MAX_VALUE;for(let u in r)if(r.hasOwnProperty(u)&&r[u]){let h=u.toLowerCase();if(d>1&&h==="title"){d=1,s=u;break}else d>2&&h==="name"?(d=2,s=u):d>3&&/title/i.test(u)?(d=3,s=u):d>4&&/name/i.test(u)&&(d=4,s=u)}l(s)&&(o.name=r[s])}let c=r.description;c!==null&&(o.description=l(c)?new di(c):n(r,s))}return o}function tj(e,t){let n=new Array(e.length);for(let i=0;i<e.length;i++)n[i]=t(e[i]);return n}var lge={Feature:uge,FeatureCollection:Vot,GeometryCollection:mge,LineString:gge,MultiLineString:bge,MultiPoint:pge,MultiPolygon:xge,Point:fge,Polygon:Cge,Topology:Ige},dge={GeometryCollection:mge,LineString:gge,MultiLineString:bge,MultiPoint:pge,MultiPolygon:xge,Point:fge,Polygon:Cge,Topology:Ige};function uge(e,t,n,i,o){if(t.geometry===null){H5(t,e._entityCollection,o.describe);return}if(!l(t.geometry))throw new de("feature.geometry is required.");let r=t.geometry.type,s=dge[r];if(!l(s))throw new de(`Unknown geometry type: ${r}`);s(e,t,t.geometry,i,o)}function Vot(e,t,n,i,o){let r=t.features;for(let s=0,a=r.length;s<a;s++)uge(e,r[s],void 0,i,o)}function mge(e,t,n,i,o){let r=n.geometries;for(let s=0,a=r.length;s<a;s++){let c=r[s],d=c.type,u=dge[d];if(!l(u))throw new de(`Unknown geometry type: ${d}`);u(e,t,c,i,o)}}function hge(e,t,n,i,o){let r=o.markerSymbol,s=o.markerColor,a=o.markerSize,c=t.properties;if(l(c)){let g=c["marker-color"];l(g)&&(s=U.fromCssColorString(g)),a=Tot[c["marker-size"]]??a;let f=c["marker-symbol"];l(f)&&(r=f)}let d;l(r)?r.length===1?d=e._pinBuilder.fromText(r.toUpperCase(),s,a):d=e._pinBuilder.fromMakiIconId(r,s,a):d=e._pinBuilder.fromColor(s,a);let u=new _c;u.verticalOrigin=new di(kn.BOTTOM),i.length===2&&o.clampToGround&&(u.heightReference=et.CLAMP_TO_GROUND);let h=H5(t,e._entityCollection,o.describe);h.billboard=u,h.position=new dl(n(i));let p=Promise.resolve(d).then(function(g){u.image=new di(g)}).catch(function(){u.image=new di(e._pinBuilder.fromColor(s,a))});e._promises.push(p)}function fge(e,t,n,i,o){hge(e,t,i,n.coordinates,o)}function pge(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)hge(e,t,i,r[s],o)}function Age(e,t,n,i,o){let r=o.strokeMaterialProperty,s=o.strokeWidthProperty,a=t.properties;if(l(a)){let u=a["stroke-width"];l(u)&&(s=new di(u));let h,p=a.stroke;l(p)&&(h=U.fromCssColorString(p));let g=a["stroke-opacity"];l(g)&&g!==1&&(l(h)||(h=r.color.getValue().clone()),h.alpha=g),l(h)&&(r=new qt(h))}let c=H5(t,e._entityCollection,o.describe),d=new Zc;c.polyline=d,d.clampToGround=o.clampToGround,d.material=r,d.width=s,d.positions=new di(tj(i,n)),d.arcType=dn.RHUMB}function gge(e,t,n,i,o){Age(e,t,i,n.coordinates,o)}function bge(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)Age(e,t,i,r[s],o)}function yge(e,t,n,i,o){if(i.length===0||i[0].length===0)return;let r=o.strokeMaterialProperty.color,s=o.fillMaterialProperty,a=o.strokeWidthProperty,c=t.properties;if(l(c)){let g=c["stroke-width"];l(g)&&(a=new di(g));let f,b=c.stroke;l(b)&&(f=U.fromCssColorString(b));let x=c["stroke-opacity"];l(x)&&x!==1&&(l(f)||(f=r.getValue().clone()),f.alpha=x),l(f)&&(r=new di(f));let I,_=c.fill,E=s.color.getValue();l(_)&&(I=U.fromCssColorString(_),I.alpha=E.alpha),x=c["fill-opacity"],l(x)&&x!==E.alpha&&(l(I)||(I=E.clone()),I.alpha=x),l(I)&&(s=new qt(I))}let d=new uh;d.outline=new di(!0),d.outlineColor=r,d.outlineWidth=a,d.material=s,d.arcType=dn.RHUMB;let u=[];for(let g=1,f=i.length;g<f;g++)u.push(new lc(tj(i[g],n)));let h=i[0];d.hierarchy=new di(new lc(tj(h,n),u)),h[0].length>2?d.perPositionHeight=new di(!0):o.clampToGround||(d.height=0);let p=H5(t,e._entityCollection,o.describe);p.polygon=d}function Cge(e,t,n,i,o){yge(e,t,i,n.coordinates,o)}function xge(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)yge(e,t,i,r[s],o)}function Ige(e,t,n,i,o){for(let r in n.objects)if(n.objects.hasOwnProperty(r)){let s=Y4(n,n.objects[r]),a=lge[s.type];a(e,s,s,i,o)}}function D0(e){this._name=e,this._changed=new Ce,this._error=new Ce,this._isLoading=!1,this._loading=new Ce,this._entityCollection=new Ca(this),this._promises=[],this._pinBuilder=new Bg,this._entityCluster=new ou,this._credit=void 0,this._resourceCredits=[]}D0.load=function(e,t){return new D0().load(e,t)};Object.defineProperties(D0,{markerSize:{get:function(){return z4},set:function(e){z4=e}},markerSymbol:{get:function(){return K4},set:function(e){K4=e}},markerColor:{get:function(){return J4},set:function(e){J4=e}},stroke:{get:function(){return j4},set:function(e){j4=e}},strokeWidth:{get:function(){return q4},set:function(e){q4=e}},fill:{get:function(){return $4},set:function(e){$4=e}},clampToGround:{get:function(){return ej},set:function(e){ej=e}},crsNames:{get:function(){return H4}},crsLinkHrefs:{get:function(){return sge}},crsLinkTypes:{get:function(){return age}}});Object.defineProperties(D0.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{value:void 0,writable:!1},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}}});D0.prototype.load=function(e,t){return _ge(this,e,t,!0)};D0.prototype.process=function(e,t){return _ge(this,e,t,!1)};function _ge(e,t,n,i){cs.setLoading(e,!0),n=n??Y.EMPTY_OBJECT;let o=n.credit;typeof o=="string"&&(o=new Gt(o)),e._credit=o;let r=t,s=n.sourceUri;if(typeof t=="string"||t instanceof Ve){t=Ve.createIfNeeded(t),r=t.fetchJson(),s=s??t.getUrlComponent();let a=e._resourceCredits,c=t.credits;if(l(c)){let d=c.length;for(let u=0;u<d;u++)a.push(c[u])}}return n={describe:n.describe??Rot,markerSize:n.markerSize??z4,markerSymbol:n.markerSymbol??K4,markerColor:n.markerColor??J4,strokeWidthProperty:new di(n.strokeWidth??q4),strokeMaterialProperty:new qt(n.stroke??j4),fillMaterialProperty:new qt(n.fill??$4),clampToGround:n.clampToGround??ej},Promise.resolve(r).then(function(a){return Got(e,a,n,s,i)}).catch(function(a){throw cs.setLoading(e,!1),e._error.raiseEvent(e,a),a})}D0.prototype.update=function(e){return!0};function Got(e,t,n,i,o){let r;l(i)&&(r=yg(i)),l(r)&&e._name!==r&&(e._name=r,e._changed.raiseEvent(e));let s=lge[t.type];if(!l(s))throw new de(`Unsupported GeoJSON object type: ${t.type}`);let a=t.crs,c=a!==null?O5:null;if(l(a)){if(!l(a.properties))throw new de("crs.properties is undefined.");let d=a.properties;if(a.type==="name"){if(c=H4[d.name],!l(c))throw new de(`Unknown crs name: ${d.name}`)}else if(a.type==="link"){let u=sge[d.href];if(l(u)||(u=age[d.type]),!l(u))throw new de(`Unable to resolve crs link: ${JSON.stringify(d)}`);c=u(d)}else if(a.type==="EPSG"){if(c=H4[`EPSG:${d.code}`],!l(c))throw new de(`Unknown crs EPSG code: ${d.code}`)}else throw new de(`Unknown crs type: ${a.type}`)}return Promise.resolve(c).then(function(d){return o&&e._entityCollection.removeAll(),d!==null&&s(e,t,t,d,n),Promise.all(e._promises).then(function(){return e._promises.length=0,cs.setLoading(e,!1),e})})}var Q0=D0;var vTi=y(C(),1);var $Ei=y(C());var PEi=y(C());var JIi=y(C(),1),nj=function(e,t){return nj=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},nj(e,t)};function hp(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");nj(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var vs=function(){return vs=Object.assign||function(t){for(var n,i=1,o=arguments.length;i<o;i++){n=arguments[i];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},vs.apply(this,arguments)};function Ege(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var i=n.call(e),o,r=[],s;try{for(;(t===void 0||t-- >0)&&!(o=i.next()).done;)r.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(s)throw s.error}}return r}function Tge(e,t,n){if(n||arguments.length===2)for(var i=0,o=t.length,r;i<o;i++)(r||!(i in t))&&(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))}var qIi=y(C()),Sge="4.1.5";var e_i=y(C()),Lge=Object.prototype.hasOwnProperty;function hu(e){return typeof e=="boolean"}function Rge(e,t,n){var i;return e.length>t&&(n==null?(n="…",i=3):i=n.length,e=e.substring(0,t-i)+n),e}function U0(e,t){for(var n=e.length-1;n>=0;n--)t(e[n])===!0&&e.splice(n,1)}function tf(e){throw new Error("Unhandled case for value: '".concat(e,"'"))}var A_i=y(C());var i_i=y(C());var z5=/\s+/,K5=function(){function e(t){t===void 0&&(t={}),this.tagName="",this.attrs={},this.innerHTML="",this.tagName=t.tagName||"",this.attrs=t.attrs||{},this.innerHTML=t.innerHtml||t.innerHTML||""}return e.prototype.setTagName=function(t){return this.tagName=t,this},e.prototype.getTagName=function(){return this.tagName},e.prototype.setAttr=function(t,n){var i=this.getAttrs();return i[t]=n,this},e.prototype.getAttr=function(t){return this.getAttrs()[t]},e.prototype.setAttrs=function(t){return Object.assign(this.getAttrs(),t),this},e.prototype.getAttrs=function(){return this.attrs},e.prototype.setClass=function(t){return this.setAttr("class",t)},e.prototype.addClass=function(t){for(var n=this.getClass(),i=n?n.split(z5):[],o=t.split(z5),r;r=o.shift();)i.indexOf(r)===-1&&i.push(r);return this.getAttrs().class=i.join(" "),this},e.prototype.removeClass=function(t){for(var n=this.getClass(),i=n?n.split(z5):[],o=t.split(z5),r;i.length&&(r=o.shift());){var s=i.indexOf(r);s!==-1&&i.splice(s,1)}return this.getAttrs().class=i.join(" "),this},e.prototype.getClass=function(){return this.getAttrs().class||""},e.prototype.hasClass=function(t){return(" "+this.getClass()+" ").indexOf(" "+t+" ")!==-1},e.prototype.setInnerHTML=function(t){return this.innerHTML=t,this},e.prototype.setInnerHtml=function(t){return this.setInnerHTML(t)},e.prototype.getInnerHTML=function(){return this.innerHTML||""},e.prototype.getInnerHtml=function(){return this.getInnerHTML()},e.prototype.toAnchorString=function(){var t=this.getTagName(),n=this.buildAttrsStr();return n=n?" "+n:"",["<",t,n,">",this.getInnerHtml(),"</",t,">"].join("")},e.prototype.buildAttrsStr=function(){var t=this.getAttrs(),n=[];for(var i in t)Lge.call(t,i)&&n.push(i+'="'+t[i]+'"');return n.join(" ")},e}();var r_i=y(C());function Gge(e,t,n){var i,o;if(n==null?(n="…",o=3,i=8):(o=n.length,i=n.length),e.length<=t)return e;var r=t-o,s=Zot(e);if(s.query){var a=s.query.match(/^(.*?)(?=(\?|#))(.*?)$/i);a&&(s.query=s.query.substr(0,a[1].length),e=Vge(s))}if(e.length<=t||(s.host&&(s.host=s.host.replace(/^www\./,""),e=Vge(s)),e.length<=t))return e;var c="";if(s.host&&(c+=s.host),c.length>=r)return s.host.length===t?(s.host.substr(0,t-o)+n).substr(0,r+i):ij(c,r,n).substr(0,r+i);var d="";if(s.path&&(d+="/"+s.path),s.query&&(d+="?"+s.query),d)if((c+d).length>=r){if((c+d).length==t)return(c+d).substr(0,t);var u=r-c.length;return(c+ij(d,u,n)).substr(0,r+i)}else c+=d;if(s.fragment){var h="#"+s.fragment;if((c+h).length>=r){if((c+h).length==t)return(c+h).substr(0,t);var p=r-c.length;return(c+ij(h,p,n)).substr(0,r+i)}else c+=h}if(s.scheme&&s.host){var g=s.scheme+"://";if((c+g).length<r)return(g+c).substr(0,t)}if(c.length<=t)return c;var f="";return r>0&&(f=c.substr(-1*Math.floor(r/2))),(c.substr(0,Math.ceil(r/2))+n+f).substr(0,r+i)}function Zot(e){var t={},n=e,i=n.match(/^([a-z]+):\/\//i);return i&&(t.scheme=i[1],n=n.slice(i[0].length)),i=n.match(/^(.*?)(?=(\?|#|\/|$))/i),i&&(t.host=i[1],n=n.slice(i[0].length)),i=n.match(/^\/(.*?)(?=(\?|#|$))/i),i&&(t.path=i[1],n=n.slice(i[0].length)),i=n.match(/^\?(.*?)(?=(#|$))/i),i&&(t.query=i[1],n=n.slice(i[0].length)),i=n.match(/^#(.*?)$/i),i&&(t.fragment=i[1]),t}function Vge(e){var t="";return e.scheme&&e.host&&(t+=e.scheme+"://"),e.host&&(t+=e.host),e.path&&(t+="/"+e.path),e.query&&(t+="?"+e.query),e.fragment&&(t+="#"+e.fragment),t}function ij(e,t,n){var i=t/2,o=Math.ceil(i),r=-1*Math.floor(i),s="";return r<0&&(s=e.substr(r)),e.substr(0,o)+n+s}var a_i=y(C());function Zge(e,t,n){if(e.length<=t)return e;var i,o;n==null?(n="…",i=8,o=3):(i=n.length,o=n.length);var r=t-o,s="";return r>0&&(s=e.substr(-1*Math.floor(r/2))),(e.substr(0,Math.ceil(r/2))+n+s).substr(0,r+i)}var d_i=y(C());function Bge(e,t,n){return Rge(e,t,n)}var wge=function(){function e(t){t===void 0&&(t={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=t.newWindow||!1,this.truncate=t.truncate||{},this.className=t.className||""}return e.prototype.build=function(t){return new K5({tagName:"a",attrs:this.createAttrs(t),innerHtml:this.processAnchorText(t.getAnchorText())})},e.prototype.createAttrs=function(t){var n={href:t.getAnchorHref()},i=this.createCssClass(t);return i&&(n.class=i),this.newWindow&&(n.target="_blank",n.rel="noopener noreferrer"),this.truncate.length&&this.truncate.length<t.getAnchorText().length&&(n.title=t.getAnchorHref()),n},e.prototype.createCssClass=function(t){var n=this.className;if(n){for(var i=[n],o=t.getCssClassSuffixes(),r=0,s=o.length;r<s;r++)i.push(n+"-"+o[r]);return i.join(" ")}else return""},e.prototype.processAnchorText=function(t){return t=this.doTruncate(t),t},e.prototype.doTruncate=function(t){var n=this.truncate;if(!n.length)return t;var i=n.length,o=n.location;return o==="smart"?Gge(t,i):o==="middle"?Zge(t,i):Bge(t,i)},e}();var xEi=y(C());var Z_i=y(C());var b_i=y(C()),fp=function(){function e(t){this._=null,this.matchedText="",this.offset=0,this.tagBuilder=t.tagBuilder,this.matchedText=t.matchedText,this.offset=t.offset}return e.prototype.getMatchedText=function(){return this.matchedText},e.prototype.setOffset=function(t){this.offset=t},e.prototype.getOffset=function(){return this.offset},e.prototype.getCssClassSuffixes=function(){return[this.type]},e.prototype.buildTag=function(){return this.tagBuilder.build(this)},e}();var S_i=y(C());var C_i=y(C());function Xge(e){return e>=0&&e<=31||e==127}function wg(e){return e>=65&&e<=90||e>=97&&e<=122}function Ns(e){return e>=48&&e<=57}function J5(e){return e==34||e==39}function k0(e){return e<8232?e<160?e>=9&&e<=13||e==32:e<5760?e==160:e==5760||e>=8192&&e<=8202:e<8287?e>=8232&&e<=8233||e==8239:e<12288?e==8287:e==12288||e==65279}function nf(e){return e<4800?e<2949?e<2451?e<1425?e<768?e<192?e<169?e<65?e>=48&&e<=57:e>=65&&e<=90||e>=97&&e<=122:e<181?e>=169&&e<=170||e==174:e==181||e==186:e<710?e<216?e>=192&&e<=214:e>=216&&e<=246||e>=248&&e<=705:e<748?e>=710&&e<=721||e>=736&&e<=740:e==748||e==750:e<910?e<895?e<886?e>=768&&e<=884:e>=886&&e<=887||e>=890&&e<=893:e<904?e==895||e==902:e>=904&&e<=906||e==908:e<1155?e<931?e>=910&&e<=929:e>=931&&e<=1013||e>=1015&&e<=1153:e<1369?e>=1155&&e<=1327||e>=1329&&e<=1366:e==1369||e>=1377&&e<=1415:e<1808?e<1552?e<1476?e<1471?e>=1425&&e<=1469:e==1471||e>=1473&&e<=1474:e<1488?e>=1476&&e<=1477||e==1479:e>=1488&&e<=1514||e>=1520&&e<=1522:e<1749?e<1568?e>=1552&&e<=1562:e>=1568&&e<=1641||e>=1646&&e<=1747:e<1770?e>=1749&&e<=1756||e>=1759&&e<=1768:e>=1770&&e<=1788||e==1791:e<2230?e<2042?e<1869?e>=1808&&e<=1866:e>=1869&&e<=1969||e>=1984&&e<=2037:e<2112?e==2042||e>=2048&&e<=2093:e>=2112&&e<=2139||e>=2208&&e<=2228:e<2406?e<2260?e>=2230&&e<=2237:e>=2260&&e<=2273||e>=2275&&e<=2403:e<2437?e>=2406&&e<=2415||e>=2417&&e<=2435:e>=2437&&e<=2444||e>=2447&&e<=2448:e<2693?e<2579?e<2519?e<2486?e<2474?e>=2451&&e<=2472:e>=2474&&e<=2480||e==2482:e<2503?e>=2486&&e<=2489||e>=2492&&e<=2500:e>=2503&&e<=2504||e>=2507&&e<=2510:e<2534?e<2524?e==2519:e>=2524&&e<=2525||e>=2527&&e<=2531:e<2565?e>=2534&&e<=2545||e>=2561&&e<=2563:e>=2565&&e<=2570||e>=2575&&e<=2576:e<2631?e<2613?e<2602?e>=2579&&e<=2600:e>=2602&&e<=2608||e>=2610&&e<=2611:e<2620?e>=2613&&e<=2614||e>=2616&&e<=2617:e==2620||e>=2622&&e<=2626:e<2649?e<2635?e>=2631&&e<=2632:e>=2635&&e<=2637||e==2641:e<2662?e>=2649&&e<=2652||e==2654:e>=2662&&e<=2677||e>=2689&&e<=2691:e<2821?e<2759?e<2730?e<2703?e>=2693&&e<=2701:e>=2703&&e<=2705||e>=2707&&e<=2728:e<2741?e>=2730&&e<=2736||e>=2738&&e<=2739:e>=2741&&e<=2745||e>=2748&&e<=2757:e<2784?e<2763?e>=2759&&e<=2761:e>=2763&&e<=2765||e==2768:e<2809?e>=2784&&e<=2787||e>=2790&&e<=2799:e==2809||e>=2817&&e<=2819:e<2887?e<2858?e<2831?e>=2821&&e<=2828:e>=2831&&e<=2832||e>=2835&&e<=2856:e<2869?e>=2858&&e<=2864||e>=2866&&e<=2867:e>=2869&&e<=2873||e>=2876&&e<=2884:e<2911?e<2902?e>=2887&&e<=2888||e>=2891&&e<=2893:e>=2902&&e<=2903||e>=2908&&e<=2909:e<2929?e>=2911&&e<=2915||e>=2918&&e<=2927:e==2929||e>=2946&&e<=2947:e<3517?e<3205?e<3046?e<2984?e<2969?e<2958?e>=2949&&e<=2954:e>=2958&&e<=2960||e>=2962&&e<=2965:e<2974?e>=2969&&e<=2970||e==2972:e>=2974&&e<=2975||e>=2979&&e<=2980:e<3014?e<2990?e>=2984&&e<=2986:e>=2990&&e<=3001||e>=3006&&e<=3010:e<3024?e>=3014&&e<=3016||e>=3018&&e<=3021:e==3024||e==3031:e<3142?e<3086?e<3072?e>=3046&&e<=3055:e>=3072&&e<=3075||e>=3077&&e<=3084:e<3114?e>=3086&&e<=3088||e>=3090&&e<=3112:e>=3114&&e<=3129||e>=3133&&e<=3140:e<3160?e<3146?e>=3142&&e<=3144:e>=3146&&e<=3149||e>=3157&&e<=3158:e<3174?e>=3160&&e<=3162||e>=3168&&e<=3171:e>=3174&&e<=3183||e>=3200&&e<=3203:e<3333?e<3274?e<3242?e<3214?e>=3205&&e<=3212:e>=3214&&e<=3216||e>=3218&&e<=3240:e<3260?e>=3242&&e<=3251||e>=3253&&e<=3257:e>=3260&&e<=3268||e>=3270&&e<=3272:e<3296?e<3285?e>=3274&&e<=3277:e>=3285&&e<=3286||e==3294:e<3313?e>=3296&&e<=3299||e>=3302&&e<=3311:e>=3313&&e<=3314||e>=3329&&e<=3331:e<3423?e<3389?e<3342?e>=3333&&e<=3340:e>=3342&&e<=3344||e>=3346&&e<=3386:e<3402?e>=3389&&e<=3396||e>=3398&&e<=3400:e>=3402&&e<=3406||e>=3412&&e<=3415:e<3458?e<3430?e>=3423&&e<=3427:e>=3430&&e<=3439||e>=3450&&e<=3455:e<3482?e>=3458&&e<=3459||e>=3461&&e<=3478:e>=3482&&e<=3505||e>=3507&&e<=3515:e<3804?e<3722?e<3570?e<3535?e<3520?e==3517:e>=3520&&e<=3526||e==3530:e<3544?e>=3535&&e<=3540||e==3542:e>=3544&&e<=3551||e>=3558&&e<=3567:e<3664?e<3585?e>=3570&&e<=3571:e>=3585&&e<=3642||e>=3648&&e<=3662:e<3716?e>=3664&&e<=3673||e>=3713&&e<=3714:e==3716||e>=3719&&e<=3720:e<3754?e<3737?e<3725?e==3722:e==3725||e>=3732&&e<=3735:e<3749?e>=3737&&e<=3743||e>=3745&&e<=3747:e==3749||e==3751:e<3776?e<3757?e>=3754&&e<=3755:e>=3757&&e<=3769||e>=3771&&e<=3773:e<3784?e>=3776&&e<=3780||e==3782:e>=3784&&e<=3789||e>=3792&&e<=3801:e<4176?e<3902?e<3872?e<3840?e>=3804&&e<=3807:e==3840||e>=3864&&e<=3865:e<3895?e>=3872&&e<=3881||e==3893:e==3895||e==3897:e<3974?e<3913?e>=3902&&e<=3911:e>=3913&&e<=3948||e>=3953&&e<=3972:e<4038?e>=3974&&e<=3991||e>=3993&&e<=4028:e==4038||e>=4096&&e<=4169:e<4688?e<4301?e<4256?e>=4176&&e<=4253:e>=4256&&e<=4293||e==4295:e<4348?e==4301||e>=4304&&e<=4346:e>=4348&&e<=4680||e>=4682&&e<=4685:e<4746?e<4698?e>=4688&&e<=4694||e==4696:e>=4698&&e<=4701||e>=4704&&e<=4744:e<4786?e>=4746&&e<=4749||e>=4752&&e<=4784:e>=4786&&e<=4789||e>=4792&&e<=4798:e<11035?e<7416?e<6176?e<5873?e<4992?e<4824?e<4802?e==4800:e>=4802&&e<=4805||e>=4808&&e<=4822:e<4888?e>=4824&&e<=4880||e>=4882&&e<=4885:e>=4888&&e<=4954||e>=4957&&e<=4959:e<5121?e<5024?e>=4992&&e<=5007:e>=5024&&e<=5109||e>=5112&&e<=5117:e<5761?e>=5121&&e<=5740||e>=5743&&e<=5759:e>=5761&&e<=5786||e>=5792&&e<=5866:e<6002?e<5920?e<5888?e>=5873&&e<=5880:e>=5888&&e<=5900||e>=5902&&e<=5908:e<5984?e>=5920&&e<=5940||e>=5952&&e<=5971:e>=5984&&e<=5996||e>=5998&&e<=6e3:e<6108?e<6016?e>=6002&&e<=6003:e>=6016&&e<=6099||e==6103:e<6155?e>=6108&&e<=6109||e>=6112&&e<=6121:e>=6155&&e<=6157||e>=6160&&e<=6169:e<6783?e<6512?e<6400?e<6272?e>=6176&&e<=6263:e>=6272&&e<=6314||e>=6320&&e<=6389:e<6448?e>=6400&&e<=6430||e>=6432&&e<=6443:e>=6448&&e<=6459||e>=6470&&e<=6509:e<6608?e<6528?e>=6512&&e<=6516:e>=6528&&e<=6571||e>=6576&&e<=6601:e<6688?e>=6608&&e<=6617||e>=6656&&e<=6683:e>=6688&&e<=6750||e>=6752&&e<=6780:e<7040?e<6832?e<6800?e>=6783&&e<=6793:e>=6800&&e<=6809||e==6823:e<6992?e>=6832&&e<=6846||e>=6912&&e<=6987:e>=6992&&e<=7001||e>=7019&&e<=7027:e<7245?e<7168?e>=7040&&e<=7155:e>=7168&&e<=7223||e>=7232&&e<=7241:e<7376?e>=7245&&e<=7293||e>=7296&&e<=7304:e>=7376&&e<=7378||e>=7380&&e<=7414:e<8450?e<8130?e<8025?e<7960?e<7424?e>=7416&&e<=7417:e>=7424&&e<=7669||e>=7675&&e<=7957:e<8008?e>=7960&&e<=7965||e>=7968&&e<=8005:e>=8008&&e<=8013||e>=8016&&e<=8023:e<8031?e<8027?e==8025:e==8027||e==8029:e<8118?e>=8031&&e<=8061||e>=8064&&e<=8116:e>=8118&&e<=8124||e==8126:e<8205?e<8150?e<8134?e>=8130&&e<=8132:e>=8134&&e<=8140||e>=8144&&e<=8147:e<8178?e>=8150&&e<=8155||e>=8160&&e<=8172:e>=8178&&e<=8180||e>=8182&&e<=8188:e<8305?e<8252?e==8205:e==8252||e==8265:e<8336?e==8305||e==8319:e>=8336&&e<=8348||e>=8400&&e<=8432:e<8579?e<8486?e<8469?e<8455?e==8450:e==8455||e>=8458&&e<=8467:e<8482?e==8469||e>=8473&&e<=8477:e==8482||e==8484:e<8495?e<8488?e==8486:e==8488||e>=8490&&e<=8493:e<8517?e>=8495&&e<=8505||e>=8508&&e<=8511:e>=8517&&e<=8521||e==8526:e<9410?e<9e3?e<8592?e>=8579&&e<=8580:e>=8592&&e<=8703||e>=8986&&e<=8987:e<9193?e==9e3||e==9167:e>=9193&&e<=9203||e>=9208&&e<=9210:e<9723?e<9654?e==9410||e>=9642&&e<=9643:e==9654||e==9664:e<10548?e>=9723&&e<=9726||e>=9728&&e<=10175:e>=10548&&e<=10549||e>=11013&&e<=11015:e<43259?e<12445?e<11688?e<11520?e<11264?e<11088?e>=11035&&e<=11036:e==11088||e==11093:e<11360?e>=11264&&e<=11310||e>=11312&&e<=11358:e>=11360&&e<=11492||e>=11499&&e<=11507:e<11568?e<11559?e>=11520&&e<=11557:e==11559||e==11565:e<11647?e>=11568&&e<=11623||e==11631:e>=11647&&e<=11670||e>=11680&&e<=11686:e<11744?e<11712?e<11696?e>=11688&&e<=11694:e>=11696&&e<=11702||e>=11704&&e<=11710:e<11728?e>=11712&&e<=11718||e>=11720&&e<=11726:e>=11728&&e<=11734||e>=11736&&e<=11742:e<12330?e<11823?e>=11744&&e<=11775:e==11823||e>=12293&&e<=12294:e<12353?e>=12330&&e<=12341||e>=12347&&e<=12349:e>=12353&&e<=12438||e>=12441&&e<=12442:e<42512?e<12951?e<12549?e<12449?e>=12445&&e<=12447:e>=12449&&e<=12538||e>=12540&&e<=12543:e<12704?e>=12549&&e<=12589||e>=12593&&e<=12686:e>=12704&&e<=12730||e>=12784&&e<=12799:e<19968?e<12953?e==12951:e==12953||e>=13312&&e<=19893:e<42192?e>=19968&&e<=40917||e>=40960&&e<=42124:e>=42192&&e<=42237||e>=42240&&e<=42508:e<42891?e<42623?e<42560?e>=42512&&e<=42539:e>=42560&&e<=42610||e>=42612&&e<=42621:e<42775?e>=42623&&e<=42725||e>=42736&&e<=42737:e>=42775&&e<=42783||e>=42786&&e<=42888:e<43072?e<42928?e>=42891&&e<=42926:e>=42928&&e<=42935||e>=42999&&e<=43047:e<43216?e>=43072&&e<=43123||e>=43136&&e<=43205:e>=43216&&e<=43225||e>=43232&&e<=43255:e<55243?e<43744?e<43488?e<43312?e<43261?e==43259:e==43261||e>=43264&&e<=43309:e<43392?e>=43312&&e<=43347||e>=43360&&e<=43388:e>=43392&&e<=43456||e>=43471&&e<=43481:e<43600?e<43520?e>=43488&&e<=43518:e>=43520&&e<=43574||e>=43584&&e<=43597:e<43642?e>=43600&&e<=43609||e>=43616&&e<=43638:e>=43642&&e<=43714||e>=43739&&e<=43741:e<43824?e<43785?e<43762?e>=43744&&e<=43759:e>=43762&&e<=43766||e>=43777&&e<=43782:e<43808?e>=43785&&e<=43790||e>=43793&&e<=43798:e>=43808&&e<=43814||e>=43816&&e<=43822:e<44012?e<43868?e>=43824&&e<=43866:e>=43868&&e<=43877||e>=43888&&e<=44010:e<44032?e>=44012&&e<=44013||e>=44016&&e<=44025:e>=44032&&e<=55203||e>=55216&&e<=55238:e<64848?e<64298?e<64112?e<55296?e>=55243&&e<=55291:e>=55296&&e<=57343||e>=63744&&e<=64109:e<64275?e>=64112&&e<=64217||e>=64256&&e<=64262:e>=64275&&e<=64279||e>=64285&&e<=64296:e<64320?e<64312?e>=64298&&e<=64310:e>=64312&&e<=64316||e==64318:e<64326?e>=64320&&e<=64321||e>=64323&&e<=64324:e>=64326&&e<=64433||e>=64467&&e<=64829:e<65296?e<65024?e<64914?e>=64848&&e<=64911:e>=64914&&e<=64967||e>=65008&&e<=65019:e<65136?e>=65024&&e<=65039||e>=65056&&e<=65071:e>=65136&&e<=65140||e>=65142&&e<=65276:e<65474?e<65345?e>=65296&&e<=65305||e>=65313&&e<=65338:e>=65345&&e<=65370||e>=65382&&e<=65470:e<65490?e>=65474&&e<=65479||e>=65482&&e<=65487:e>=65490&&e<=65495||e>=65498&&e<=65500}function Wge(e){return e<47?e<42?e==33||e>=35&&e<=39:e>=42&&e<=43||e==45:e<63?e==47||e==61:e<94?e==63:e>=94&&e<=96||e>=123&&e<=126}function Fge(e){return e<91?e<47?e>=35&&e<=43||e==45:e<61?e==47:e==61||e==64:e<95?e==91||e==93:e<123?e==95:e>=123&&e<=126||e==10003}function j5(e){return e<58?e<44?e==33:e==44||e==46:e<63?e>=58&&e<=59:e==63||e==94}function Pge(e){return e<91?e==40:e==91||e==123}function oj(e){return e<93?e==41:e==93||e==125}var I_i=y(C()),Mge=/^(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|travelersinsurance|vermögensberatung|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbah1a3hjkrd|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--mgbcpq6gpa1a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbc0a9azcg|xn--nqv7fs00ema|americanfamily|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq480n2rg|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|wolterskluwer|xn--cckwcxetd|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--4dbrk0ce|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nextdirect|properties|protection|prudential|realestate|republican|restaurant|schaeffler|tatamotors|technology|university|vlaanderen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--q7ce6a|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|institute|insurance|kuokgroup|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|pramerica|richardli|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--qxa6a|xn--tckwe|xn--vhquv|yodobashi|موريتانيا|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|builders|business|capetown|catering|catholic|cipriani|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|mckinsey|memorial|merckmsd|mortgage|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|softbank|software|stcgroup|supplies|training|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|banamex|bauhaus|bestbuy|booking|brother|capital|caravan|careers|channel|charity|chintai|citadel|clubmed|college|cologne|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hotmail|hyundai|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lanxess|lasalle|latrobe|leclerc|limited|lincoln|markets|monster|netbank|netflix|network|neustar|okinawa|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|singles|staples|storage|support|surgery|systems|temasek|theater|theatre|tickets|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|yamaxun|youtube|zuerich|католик|البحرين|الجزائر|العليان|پاکستان|كاثوليك|இந்தியா|abbott|abbvie|africa|agency|airbus|airtel|alipay|alsace|alstom|amazon|anquan|aramco|author|bayern|beauty|berlin|bharti|bostik|boston|broker|camera|career|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kindle|kosher|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|monash|mormon|moscow|museum|nagoya|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|pictet|quebec|racing|realty|reisen|repair|report|review|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|walter|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dance|deals|delta|drive|dubai|earth|edeka|email|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|irish|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|loans|locus|lotte|lotto|mango|media|miami|money|movie|music|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|ישראל|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|aero|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|dvag|erni|fage|fail|fans|farm|fast|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kids|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|read|reit|rent|rest|rich|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scot|seat|seek|sexy|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|アマゾン|グーグル|クラウド|ポイント|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|ceo|cfa|cfd|com|cpa|crs|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gay|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|llp|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|scb|sew|sex|sfr|ski|sky|soy|spa|srl|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ລາວ|ストア|セール|みんな|中文网|亚马逊|天主教|我爱你|新加坡|淡马锡|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|ευ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|广东|微博|慈善|手机|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)$/;var rj=/https?:\/\//i,vge=new RegExp("^"+rj.source,"i"),Bot=/^(javascript|vbscript):/i,wot=/^[A-Za-z][-.+A-Za-z0-9]*:(\/\/)?([^:/]*)/,Xot=/^(?:\/\/)?([^/#?:]+)/,GS=wg;function sj(e){return wg(e)||Ns(e)||e===43||e===45||e===46}var Xg=nf;function q5(e){return e===95||Xg(e)}function aj(e){return nf(e)||Fge(e)||j5(e)}function $5(e){return e===47||e===63||e===35}function cj(e){return Mge.test(e.toLowerCase())}function Nge(e){if(Bot.test(e))return!1;var t=e.match(wot);if(!t)return!1;var n=!!t[1],i=t[2];return n?!0:!(i.indexOf(".")===-1||!/[A-Za-z]/.test(i))}function Dge(e){var t=e.match(Xot);if(!t)return!1;var n=t[0],i=n.split(".");if(i.length<2)return!1;var o=i[i.length-1];return!!cj(o)}var Wot=/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,Fot=/[:/?#]/;function Qge(e){var t=e.split(Fot,1)[0];return Wot.test(t)}var Pot=/^(https?:\/\/)?(?:www\.)?/i,Mot=/^\/\//,Uge=function(e){hp(t,e);function t(n){var i=e.call(this,n)||this;return i.type="url",i.url="",i.urlMatchType="scheme",i.protocolRelativeMatch=!1,i.stripPrefix={scheme:!0,www:!0},i.stripTrailingSlash=!0,i.decodePercentEncoding=!0,i.protocolPrepended=!1,i.urlMatchType=n.urlMatchType,i.url=n.url,i.protocolRelativeMatch=n.protocolRelativeMatch,i.stripPrefix=n.stripPrefix,i.stripTrailingSlash=n.stripTrailingSlash,i.decodePercentEncoding=n.decodePercentEncoding,i}return t.prototype.getType=function(){return"url"},t.prototype.getUrlMatchType=function(){return this.urlMatchType},t.prototype.getUrl=function(){var n=this.url;return!this.protocolRelativeMatch&&this.urlMatchType!=="scheme"&&!this.protocolPrepended&&(n=this.url="http://"+n,this.protocolPrepended=!0),n},t.prototype.getAnchorHref=function(){var n=this.getUrl();return n.replace(/&/g,"&")},t.prototype.getAnchorText=function(){var n=this.getMatchedText();return this.protocolRelativeMatch&&(n=Dot(n)),this.stripPrefix.scheme&&(n=vot(n)),this.stripPrefix.www&&(n=Not(n)),this.stripTrailingSlash&&(n=Qot(n)),this.decodePercentEncoding&&(n=Uot(n)),n},t}(fp);function vot(e){return e.replace(vge,"")}function Not(e){return e.includes("www.")?e.replace(Pot,"$1"):e}function Dot(e){return e.replace(Mot,"")}function Qot(e){return e.charAt(e.length-1)==="/"&&(e=e.slice(0,-1)),e}function Uot(e){var t=e.replace(/%(?:22|26|27|3C|3E)/gi,function(n){return n==="%22"?""":n==="%26"?"&":n==="%27"?"'":n==="%3C"||n==="%3c"?"<":">"});if(t.includes("%"))try{return decodeURIComponent(t)}catch{}return t}var W_i=y(C());var kge=/^mailto:/i,lj=nf;function eU(e){return lj(e)||Wge(e)}function Yge(e){var t=e.split(".").pop();return cj(t)}var v_i=y(C());var Oge=function(e){hp(t,e);function t(n){var i=e.call(this,n)||this;return i.type="email",i.email="",i.email=n.email,i}return t.prototype.getType=function(){return"email"},t.prototype.getEmail=function(){return this.email},t.prototype.getAnchorHref=function(){return"mailto:"+this.email},t.prototype.getAnchorText=function(){return this.email},t}(fp);var Q_i=y(C());function dj(e){return e===95||nf(e)}function Hge(e){return e.length<=140}var zge=["twitter","facebook","instagram","tiktok","youtube"];var H_i=y(C());var Kge=function(e){hp(t,e);function t(n){var i=e.call(this,n)||this;return i.type="hashtag",i.serviceName="twitter",i.hashtag="",i.serviceName=n.serviceName,i.hashtag=n.hashtag,i}return t.prototype.getType=function(){return"hashtag"},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getHashtag=function(){return this.hashtag},t.prototype.getAnchorHref=function(){var n=this.serviceName,i=this.hashtag;switch(n){case"twitter":return"https://twitter.com/hashtag/"+i;case"facebook":return"https://www.facebook.com/hashtag/"+i;case"instagram":return"https://instagram.com/explore/tags/"+i;case"tiktok":return"https://www.tiktok.com/tag/"+i;case"youtube":return"https://youtube.com/hashtag/"+i;default:tf(n)}},t.prototype.getAnchorText=function(){return"#"+this.hashtag},t.prototype.getCssClassSuffixes=function(){var n=e.prototype.getCssClassSuffixes.call(this),i=this.getServiceName();return i&&n.push(i),n},t}(fp);var J_i=y(C());var kot={twitter:/^@\w{1,15}$/,instagram:/^@[_\w]{1,30}$/,soundcloud:/^@[-a-z0-9_]{3,25}$/,tiktok:/^@[.\w]{1,23}[\w]$/,youtube:/^@[-.·\w]{3,30}$/};function uj(e){return e===45||e===46||e===95||wg(e)||Ns(e)}function Jge(e,t){var n=kot[t];return n.test(e)}var jge=["twitter","instagram","soundcloud","tiktok","youtube"];var tEi=y(C());var qge=function(e){hp(t,e);function t(n){var i=e.call(this,n)||this;return i.type="mention",i.serviceName="twitter",i.mention="",i.mention=n.mention,i.serviceName=n.serviceName,i}return t.prototype.getType=function(){return"mention"},t.prototype.getMention=function(){return this.mention},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getAnchorHref=function(){switch(this.serviceName){case"twitter":return"https://twitter.com/"+this.mention;case"instagram":return"https://instagram.com/"+this.mention;case"soundcloud":return"https://soundcloud.com/"+this.mention;case"tiktok":return"https://www.tiktok.com/@"+this.mention;case"youtube":return"https://youtube.com/@"+this.mention;default:tf(this.serviceName)}},t.prototype.getAnchorText=function(){return"@"+this.mention},t.prototype.getCssClassSuffixes=function(){var n=e.prototype.getCssClassSuffixes.call(this),i=this.getServiceName();return i&&n.push(i),n},t}(fp);var iEi=y(C()),Yot=/[-. ()]/,Oot=/(?:(?:(?:(\+)?\d{1,3}[-. ]?)?\(?\d{3}\)?[-. ]?\d{3}[-. ]?\d{4})|(?:(\+)(?:9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-. ]?(?:\d[-. ]?){6,12}\d+))([,;]+[0-9]+#?)*/,Hot=/(0([1-9]-?[1-9]\d{3}|[1-9]{2}-?\d{3}|[1-9]{2}\d{1}-?\d{2}|[1-9]{2}\d{2}-?\d{1})-?\d{4}|0[789]0-?\d{4}-?\d{4}|050-?\d{4}-?\d{4})/,zot=new RegExp("^".concat(Oot.source,"|").concat(Hot.source,"$"));function mj(e){return e===45||e===46||e===32}function tU(e){return e===44||e===59}function $ge(e){var t=e.charAt(0)==="+"||Yot.test(e);return t&&zot.test(e)}var aEi=y(C());var ebe=function(e){hp(t,e);function t(n){var i=e.call(this,n)||this;return i.type="phone",i.number="",i.plusSign=!1,i.number=n.number,i.plusSign=n.plusSign,i}return t.prototype.getType=function(){return"phone"},t.prototype.getPhoneNumber=function(){return this.number},t.prototype.getNumber=function(){return this.getPhoneNumber()},t.prototype.getAnchorHref=function(){return"tel:"+(this.plusSign?"+":"")+this.number},t.prototype.getAnchorText=function(){return this.matchedText},t}(fp);var Kot=function(){function e(t,n){this.charIdx=0,this.matches=[],this._stateMachines=[],this.schemeUrlMachinesCount=0,this.text=t,this.tagBuilder=n.tagBuilder,this.stripPrefix=n.stripPrefix,this.stripTrailingSlash=n.stripTrailingSlash,this.decodePercentEncoding=n.decodePercentEncoding,this.hashtagServiceName=n.hashtagServiceName,this.mentionServiceName=n.mentionServiceName}return Object.defineProperty(e.prototype,"stateMachines",{get:function(){return this._stateMachines},enumerable:!1,configurable:!0}),e.prototype.addMachine=function(t){this._stateMachines.push(t),nbe(t)&&this.schemeUrlMachinesCount++},e.prototype.removeMachine=function(t){this._stateMachines=this._stateMachines.filter(function(n){return n!==t}),nbe(t)&&this.schemeUrlMachinesCount--},e.prototype.hasSchemeUrlMachine=function(){return this.schemeUrlMachinesCount>0},e}();function ibe(e,t){for(var n=new Kot(e,t);n.charIdx<n.text.length;n.charIdx++){var i=e.charAt(n.charIdx),o=e.charCodeAt(n.charIdx);if(n.stateMachines.length===0)nU(n,i,o);else{for(var r=n.stateMachines.length-1;r>=0;r--){var s=n.stateMachines[r];switch(s.state){case 11:trt(n,s,o);break;case 12:nrt(n,s,o);break;case 0:Jot(n,s,o);break;case 1:jot(n,s,o);break;case 2:qot(n,s,o);break;case 3:$ot(n,s,o);break;case 4:ert(n,s,i,o);break;case 5:irt(n,s,o);break;case 6:ort(n,s,i,o);break;case 7:rrt(n,s,i,o);break;case 13:srt(n,s,o);break;case 14:art(n,s,o);break;case 8:crt(n,s,o);break;case 9:lrt(n,s,o);break;case 10:drt(n,s,o);break;case 15:urt(n,s,i,o);break;case 16:mrt(n,s,i,o);break;case 17:hrt(n,s,i,o);break;case 18:frt(n,s,i,o);break;case 19:prt(n,s,i,o);break;case 20:Art(n,s,o);break;case 21:grt(n,s,o);break;case 22:sI(n,s,o);break;case 23:brt(n,s,o);break;case 24:yrt(n,s,o);break;case 25:Crt(n,s,o);break;case 26:xrt(n,s,o);break;case 27:Irt(n,s,o);break;case 28:_rt(n,s,o);break;case 29:Ert(n,s,o);break;case 30:Trt(n,s,o);break;case 31:Srt(n,s,o);break;case 32:Rrt(n,s,i,o);break;case 33:Vrt(n,s,o);break;case 34:Grt(n,s,o);break;case 35:Zrt(n,s,o);break;case 36:Brt(n,s,i,o);break;case 37:Lrt(n,s,i,o);break;case 38:wrt(n,s,i,o);break;case 39:Xrt(n,s,i,o);break;case 40:Wrt(n,s,o);break;case 41:Frt(n,s,o);break;default:tf(s.state)}}if(!n.hasSchemeUrlMachine()&&n.charIdx>0&&GS(o)){var a=n.text.charCodeAt(n.charIdx-1);GS(a)||n.addMachine(iU(n.charIdx,0))}}}for(var c=n.stateMachines.length-1;c>=0;c--)n.stateMachines.forEach(function(d){return ds(n,d)});return n.matches}function nU(e,t,n){var i=e.charIdx;if(n===35)e.addMachine(Drt(i,28));else if(n===64)e.addMachine(Qrt(i,30));else if(n===47)e.addMachine(fj(i,11));else if(n===43)e.addMachine(hj(i,37));else if(n===40)e.addMachine(hj(i,32));else{if(Ns(n)&&(e.addMachine(hj(i,38)),e.addMachine(vrt(i,13))),lj(n)){var o=t.toLowerCase()==="m"?15:22;e.addMachine(Nrt(i,o))}GS(n)&&e.addMachine(iU(i,0)),nf(n)&&e.addMachine(fj(i,5))}}function Jot(e,t,n){n===58?t.state=2:n===45?t.state=1:sj(n)||e.removeMachine(t)}function jot(e,t,n){var i=e.charIdx;n===45||(n===47?(e.removeMachine(t),e.addMachine(fj(i,11))):sj(n)?t.state=0:e.removeMachine(t))}function qot(e,t,n){var i=e.charIdx;n===47?t.state=3:n===46?e.removeMachine(t):Xg(n)?(t.state=5,GS(n)&&e.addMachine(iU(i,0))):e.removeMachine(t)}function $ot(e,t,n){n===47?t.state=4:aj(n)?(t.state=10,t.acceptStateReached=!0):ds(e,t)}function ert(e,t,n,i){i===47?(t.state=10,t.acceptStateReached=!0):Xg(i)?(t.state=5,t.acceptStateReached=!0):e.removeMachine(t)}function trt(e,t,n){n===47?t.state=12:e.removeMachine(t)}function nrt(e,t,n){Xg(n)?t.state=5:e.removeMachine(t)}function irt(e,t,n){n===46?t.state=7:n===45?t.state=6:n===58?t.state=8:$5(n)?t.state=10:q5(n)||ds(e,t)}function ort(e,t,n,i){i===45||(i===46?ds(e,t):Xg(i)?t.state=5:ds(e,t))}function rrt(e,t,n,i){i===46?ds(e,t):Xg(i)?(t.state=5,t.acceptStateReached=!0):ds(e,t)}function srt(e,t,n){n===46?t.state=14:n===58?t.state=8:Ns(n)||($5(n)?t.state=10:nf(n)?e.removeMachine(t):ds(e,t))}function art(e,t,n){Ns(n)?(t.octetsEncountered++,t.octetsEncountered===4&&(t.acceptStateReached=!0),t.state=13):ds(e,t)}function crt(e,t,n){Ns(n)?t.state=9:ds(e,t)}function lrt(e,t,n){Ns(n)||($5(n)?t.state=10:ds(e,t))}function drt(e,t,n){aj(n)||ds(e,t)}function urt(e,t,n,i){n.toLowerCase()==="a"?t.state=16:sI(e,t,i)}function mrt(e,t,n,i){n.toLowerCase()==="i"?t.state=17:sI(e,t,i)}function hrt(e,t,n,i){n.toLowerCase()==="l"?t.state=18:sI(e,t,i)}function frt(e,t,n,i){n.toLowerCase()==="t"?t.state=19:sI(e,t,i)}function prt(e,t,n,i){n.toLowerCase()==="o"?t.state=20:sI(e,t,i)}function Art(e,t,n){n===58?t.state=21:sI(e,t,n)}function grt(e,t,n){eU(n)?t.state=22:e.removeMachine(t)}function sI(e,t,n){n===46?t.state=23:n===64?t.state=24:eU(n)?t.state=22:e.removeMachine(t)}function brt(e,t,n){n===46||n===64?e.removeMachine(t):eU(n)?t.state=22:e.removeMachine(t)}function yrt(e,t,n){Xg(n)?t.state=25:e.removeMachine(t)}function Crt(e,t,n){n===46?t.state=27:n===45?t.state=26:q5(n)||ds(e,t)}function xrt(e,t,n){n===45||n===46?ds(e,t):q5(n)?t.state=25:ds(e,t)}function Irt(e,t,n){n===46||n===45?ds(e,t):Xg(n)?(t.state=25,t.acceptStateReached=!0):ds(e,t)}function _rt(e,t,n){dj(n)?(t.state=29,t.acceptStateReached=!0):e.removeMachine(t)}function Ert(e,t,n){dj(n)||ds(e,t)}function Trt(e,t,n){uj(n)?(t.state=31,t.acceptStateReached=!0):e.removeMachine(t)}function Srt(e,t,n){uj(n)||(nf(n)?e.removeMachine(t):ds(e,t))}function Lrt(e,t,n,i){Ns(i)?t.state=38:(e.removeMachine(t),nU(e,n,i))}function Rrt(e,t,n,i){Ns(i)?t.state=33:e.removeMachine(t),nU(e,n,i)}function Vrt(e,t,n){Ns(n)?t.state=34:e.removeMachine(t)}function Grt(e,t,n){Ns(n)?t.state=35:e.removeMachine(t)}function Zrt(e,t,n){n===41?t.state=36:e.removeMachine(t)}function Brt(e,t,n,i){Ns(i)?t.state=38:mj(i)?t.state=39:e.removeMachine(t)}function wrt(e,t,n,i){var o=e.charIdx;t.acceptStateReached=!0,tU(i)?t.state=40:i===35?t.state=41:Ns(i)||(i===40?t.state=32:mj(i)?t.state=39:(ds(e,t),GS(i)&&e.addMachine(iU(o,0))))}function Xrt(e,t,n,i){Ns(i)?t.state=38:i===40?t.state=32:(ds(e,t),nU(e,n,i))}function Wrt(e,t,n){tU(n)||(n===35?t.state=41:Ns(n)?t.state=38:ds(e,t))}function Frt(e,t,n){tU(n)?t.state=40:Ns(n)?e.removeMachine(t):ds(e,t)}function ds(e,t){var n=e.matches,i=e.text,o=e.charIdx,r=e.tagBuilder,s=e.stripPrefix,a=e.stripTrailingSlash,c=e.decodePercentEncoding,d=e.hashtagServiceName,u=e.mentionServiceName;if(e.removeMachine(t),!!t.acceptStateReached){var h=t.startIdx,p=i.slice(t.startIdx,o);switch(p=Mrt(p),t.type){case 0:{var g=i.charCodeAt(t.startIdx-1);if(g===64)return;switch(t.matchType){case 0:{var f=rj.exec(p);if(f&&(h=h+f.index,p=p.slice(f.index)),!Nge(p))return;break}case 1:{if(!Dge(p))return;break}case 2:{if(!Qge(p))return;break}default:tf(t)}n.push(new Uge({tagBuilder:r,matchedText:p,offset:h,urlMatchType:Prt(t.matchType),url:p,protocolRelativeMatch:p.slice(0,2)==="//",stripPrefix:s,stripTrailingSlash:a,decodePercentEncoding:c}));break}case 1:{Yge(p)&&n.push(new Oge({tagBuilder:r,matchedText:p,offset:h,email:p.replace(kge,"")}));break}case 2:{Hge(p)&&n.push(new Kge({tagBuilder:r,matchedText:p,offset:h,serviceName:d,hashtag:p.slice(1)}));break}case 3:{Jge(p,u)&&n.push(new qge({tagBuilder:r,matchedText:p,offset:h,serviceName:u,mention:p.slice(1)}));break}case 4:{if(p=p.replace(/ +$/g,""),$ge(p)){var b=p.replace(/[^0-9,;#]/g,"");n.push(new ebe({tagBuilder:r,matchedText:p,offset:h,number:b,plusSign:p.charAt(0)==="+"}))}break}default:tf(t)}}}function Prt(e){switch(e){case 0:return"scheme";case 1:return"tld";case 2:return"ipV4";default:tf(e)}}var tbe={")":"(","}":"{","]":"["};function Mrt(e){for(var t={"(":0,"{":0,"[":0},n=0;n<e.length;n++){var i=e.charAt(n),o=e.charCodeAt(n);Pge(o)?t[i]++:oj(o)&&t[tbe[i]]--}for(var r=e.length-1;r>=0;){var i=e.charAt(r),o=e.charCodeAt(r);if(oj(o)){var s=tbe[i];if(t[s]<0)t[s]++,r--;else break}else if(j5(o))r--;else break}return e.slice(0,r+1)}function iU(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:0}}function fj(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:1}}function vrt(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:2,octetsEncountered:1}}function Nrt(e,t){return{type:1,startIdx:e,state:t,acceptStateReached:!1}}function Drt(e,t){return{type:2,startIdx:e,state:t,acceptStateReached:!1}}function Qrt(e,t){return{type:3,startIdx:e,state:t,acceptStateReached:!1}}function hj(e,t){return{type:4,startIdx:e,state:t,acceptStateReached:!1}}function nbe(e){return e.type===0&&e.matchType===0}var SEi=y(C());var pp=function(){function e(t){t===void 0&&(t={}),this.idx=t.idx!==void 0?t.idx:-1,this.type=t.type||"tag",this.name=t.name||"",this.isOpening=!!t.isOpening,this.isClosing=!!t.isClosing}return e}(),Aj=new pp,Urt=function(){function e(t,n){this.charIdx=0,this.state=0,this.currentDataIdx=0,this.currentTag=Aj,this.html=t,this.callbacks=n}return e}();function obe(e,t){for(var n=new Urt(e,t),i=e.length;n.charIdx<i;){var o=e.charAt(n.charIdx),r=e.charCodeAt(n.charIdx);switch(n.state){case 0:krt(n,o);break;case 1:Yrt(n,o,r);break;case 2:Hrt(n,o,r);break;case 3:Ort(n,o,r);break;case 4:zrt(n,o,r);break;case 5:Krt(n,o,r);break;case 6:Jrt(n,o,r);break;case 7:jrt(n,o,r);break;case 8:qrt(n,o);break;case 9:$rt(n,o);break;case 10:est(n,o,r);break;case 11:tst(n,o,r);break;case 12:nst(n,o);break;case 13:ist(n);break;case 14:ost(n,o);break;case 15:rst(n,o);break;case 16:sst(n,o);break;case 17:ast(n,o);break;case 18:cst(n,o);break;case 19:lst(n,o);break;case 20:dst(n,o);break;default:tf(n.state)}n.charIdx++}n.currentDataIdx<n.charIdx&&ust(n)}function krt(e,t){t==="<"&&Ap(e)}function Yrt(e,t,n){t==="!"?e.state=13:t==="/"?(e.state=2,e.currentTag=new pp(vs(vs({},e.currentTag),{isClosing:!0}))):t==="<"?Ap(e):wg(n)?(e.state=3,e.currentTag=new pp(vs(vs({},e.currentTag),{isOpening:!0}))):(e.state=0,e.currentTag=Aj)}function Ort(e,t,n){k0(n)?(e.currentTag=new pp(vs(vs({},e.currentTag),{name:pj(e)})),e.state=4):t==="<"?Ap(e):t==="/"?(e.currentTag=new pp(vs(vs({},e.currentTag),{name:pj(e)})),e.state=12):t===">"?(e.currentTag=new pp(vs(vs({},e.currentTag),{name:pj(e)})),gp(e)):!wg(n)&&!Ns(n)&&t!==":"&&Gm(e)}function Hrt(e,t,n){t===">"?Gm(e):wg(n)?e.state=3:Gm(e)}function zrt(e,t,n){k0(n)||(t==="/"?e.state=12:t===">"?gp(e):t==="<"?Ap(e):t==="="||J5(n)||Xge(n)?Gm(e):e.state=5)}function Krt(e,t,n){k0(n)?e.state=6:t==="/"?e.state=12:t==="="?e.state=7:t===">"?gp(e):t==="<"?Ap(e):J5(n)&&Gm(e)}function Jrt(e,t,n){k0(n)||(t==="/"?e.state=12:t==="="?e.state=7:t===">"?gp(e):t==="<"?Ap(e):J5(n)?Gm(e):e.state=5)}function jrt(e,t,n){k0(n)||(t==='"'?e.state=8:t==="'"?e.state=9:/[>=`]/.test(t)?Gm(e):t==="<"?Ap(e):e.state=10)}function qrt(e,t){t==='"'&&(e.state=11)}function $rt(e,t){t==="'"&&(e.state=11)}function est(e,t,n){k0(n)?e.state=4:t===">"?gp(e):t==="<"&&Ap(e)}function tst(e,t,n){k0(n)?e.state=4:t==="/"?e.state=12:t===">"?gp(e):t==="<"?Ap(e):(e.state=4,mst(e))}function nst(e,t){t===">"?(e.currentTag=new pp(vs(vs({},e.currentTag),{isClosing:!0})),gp(e)):Gm(e)}function ist(e){var t=e.html,n=e.charIdx;t.slice(n,n+2)==="--"?(e.charIdx++,e.currentTag=new pp(vs(vs({},e.currentTag),{type:"comment"})),e.state=14):t.slice(n,n+7).toUpperCase()==="DOCTYPE"?(e.charIdx+=6,e.currentTag=new pp(vs(vs({},e.currentTag),{type:"doctype"})),e.state=20):Gm(e)}function ost(e,t){t==="-"?e.state=15:t===">"?Gm(e):e.state=16}function rst(e,t){t==="-"?e.state=18:t===">"?Gm(e):e.state=16}function sst(e,t){t==="-"&&(e.state=17)}function ast(e,t){t==="-"?e.state=18:e.state=16}function cst(e,t){t===">"?gp(e):t==="!"?e.state=19:t==="-"||(e.state=16)}function lst(e,t){t==="-"?e.state=17:t===">"?gp(e):e.state=16}function dst(e,t){t===">"?gp(e):t==="<"&&Ap(e)}function Gm(e){e.state=0,e.currentTag=Aj}function Ap(e){e.state=1,e.currentTag=new pp({idx:e.charIdx})}function gp(e){var t=e.html.slice(e.currentDataIdx,e.currentTag.idx);t&&e.callbacks.onText(t,e.currentDataIdx);var n=e.currentTag;n.type==="comment"?e.callbacks.onComment(n.idx):n.type==="doctype"?e.callbacks.onDoctype(n.idx):(n.isOpening&&e.callbacks.onOpenTag(n.name,n.idx),n.isClosing&&e.callbacks.onCloseTag(n.name,n.idx)),Gm(e),e.currentDataIdx=e.charIdx+1}function ust(e){var t=e.html.slice(e.currentDataIdx,e.charIdx);e.callbacks.onText(t,e.currentDataIdx),e.currentDataIdx=e.charIdx+1}function pj(e){var t=e.currentTag.idx+(e.currentTag.isClosing?2:1);return e.html.slice(t,e.charIdx).toLowerCase()}function mst(e){e.charIdx--}var hst=function(){function e(t){t===void 0&&(t={}),this.version=e.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:"end"},this.className="",this.replaceFn=null,this.context=void 0,this.sanitizeHtml=!1,this.tagBuilder=null,this.urls=fst(t.urls),this.email=hu(t.email)?t.email:this.email,this.phone=hu(t.phone)?t.phone:this.phone,this.hashtag=t.hashtag||this.hashtag,this.mention=t.mention||this.mention,this.newWindow=hu(t.newWindow)?t.newWindow:this.newWindow,this.stripPrefix=pst(t.stripPrefix),this.stripTrailingSlash=hu(t.stripTrailingSlash)?t.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding=hu(t.decodePercentEncoding)?t.decodePercentEncoding:this.decodePercentEncoding,this.sanitizeHtml=t.sanitizeHtml||!1;var n=this.mention;if(n!==!1&&jge.indexOf(n)===-1)throw new Error("invalid `mention` cfg '".concat(n,"' - see docs"));var i=this.hashtag;if(i!==!1&&zge.indexOf(i)===-1)throw new Error("invalid `hashtag` cfg '".concat(i,"' - see docs"));this.truncate=Ast(t.truncate),this.className=t.className||this.className,this.replaceFn=t.replaceFn||this.replaceFn,this.context=t.context||this}return e.link=function(t,n){var i=new e(n);return i.link(t)},e.parse=function(t,n){var i=new e(n);return i.parse(t)},e.prototype.parse=function(t){var n=this,i=["a","style","script"],o=0,r=[];return obe(t,{onOpenTag:function(s){i.indexOf(s)>=0&&o++},onText:function(s,a){if(o===0){var c=/( | |<|<|>|>|"|"|')/gi,d=s.split(c),u=a;d.forEach(function(h,p){if(p%2===0){var g=n.parseText(h,u);r.push.apply(r,Tge([],Ege(g),!1))}u+=h.length})}},onCloseTag:function(s){i.indexOf(s)>=0&&(o=Math.max(o-1,0))},onComment:function(){},onDoctype:function(){}}),r=this.compactMatches(r),r=this.removeUnwantedMatches(r),r},e.prototype.compactMatches=function(t){t.sort(gst);for(var n=0;n<t.length-1;){var i=t[n],o=i.getOffset(),r=i.getMatchedText().length;if(n+1<t.length&&t[n+1].getOffset()===o){var s=t[n+1].getMatchedText().length>r?n:n+1;t.splice(s,1);continue}n++}return t},e.prototype.removeUnwantedMatches=function(t){return this.hashtag||U0(t,function(n){return n.getType()==="hashtag"}),this.email||U0(t,function(n){return n.getType()==="email"}),this.phone||U0(t,function(n){return n.getType()==="phone"}),this.mention||U0(t,function(n){return n.getType()==="mention"}),this.urls.schemeMatches||U0(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="scheme"}),this.urls.tldMatches||U0(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="tld"}),this.urls.ipV4Matches||U0(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="ipV4"}),t},e.prototype.parseText=function(t,n){n=n||0;for(var i=ibe(t,{tagBuilder:this.getTagBuilder(),stripPrefix:this.stripPrefix,stripTrailingSlash:this.stripTrailingSlash,decodePercentEncoding:this.decodePercentEncoding,hashtagServiceName:this.hashtag,mentionServiceName:this.mention||"twitter"}),o=0,r=i.length;o<r;o++)i[o].setOffset(n+i[o].getOffset());return i},e.prototype.link=function(t){if(!t)return"";this.sanitizeHtml&&(t=t.replace(/</g,"<").replace(/>/g,">"));for(var n=this.parse(t),i=new Array(n.length*2+1),o=0,r=0,s=n.length;r<s;r++){var a=n[r];i.push(t.substring(o,a.getOffset())),i.push(this.createMatchReturnVal(a)),o=a.getOffset()+a.getMatchedText().length}return i.push(t.substring(o)),i.join("")},e.prototype.createMatchReturnVal=function(t){var n;if(this.replaceFn&&(n=this.replaceFn.call(this.context,t)),typeof n=="string")return n;if(n===!1)return t.getMatchedText();if(n instanceof K5)return n.toAnchorString();var i=t.buildTag();return i.toAnchorString()},e.prototype.getTagBuilder=function(){var t=this.tagBuilder;return t||(t=this.tagBuilder=new wge({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),t},e.version=Sge,e}(),rbe=hst;function fst(e){return e==null&&(e=!0),hu(e)?{schemeMatches:e,tldMatches:e,ipV4Matches:e}:{schemeMatches:hu(e.schemeMatches)?e.schemeMatches:!0,tldMatches:hu(e.tldMatches)?e.tldMatches:!0,ipV4Matches:hu(e.ipV4Matches)?e.ipV4Matches:!0}}function pst(e){return e==null&&(e=!0),hu(e)?{scheme:e,www:e}:{scheme:hu(e.scheme)?e.scheme:!0,www:hu(e.www)?e.www:!0}}function Ast(e){return typeof e=="number"?{length:e,location:"end"}:vs({length:Number.POSITIVE_INFINITY,location:"end"},e)}function gst(e,t){return e.getOffset()-t.getOffset()}var NEi=y(C());var MEi=y(C());var KEi=y(C());var oU=rbe;var fbe;typeof DOMParser<"u"&&(fbe=new DOMParser);var bst=new oU({stripPrefix:!1,email:!1,replaceFn:function(e,t){return t.urlMatchType==="scheme"||t.urlMatchType==="www"}}),rU=32,sbe=2414016,abe=1,cbe=16093e3,lbe=.1,yst=[null,void 0,"http://www.topografix.com/GPX/1/1"],Do={gpx:yst};function Cst(e){return new Promise((t,n)=>{let i=new FileReader;i.addEventListener("load",function(){t(i.result)}),i.addEventListener("error",function(){n(i.error)}),i.readAsText(e)})}function gj(e,t){let n=xF(e,"id");return n=l(n)?n:qn(),t.getOrCreateEntity(n)}function bj(e){let t=dbe(e,"lon"),n=dbe(e,"lat"),i=yF(e,"ele",Do.gpx);return m.fromDegrees(t,n,i)}function dbe(e,t){if(!l(e))return;let n=e.getAttribute(t);if(n!==null){let i=parseFloat(n);return isNaN(i)?void 0:i}}function xF(e,t){if(!l(e))return;let n=e.getAttribute(t);return n!==null?n:void 0}function Y0(e,t,n){if(!l(e))return;let i=e.childNodes,o=i.length;for(let r=0;r<o;r++){let s=i[r];if(s.localName===t&&n.indexOf(s.namespaceURI)!==-1)return s}}function yj(e,t,n){if(!l(e))return;let i=[],o=e.getElementsByTagName(t),r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function yF(e,t,n){let i=Y0(e,t,n);if(l(i)){let o=parseFloat(i.textContent);return isNaN(o)?void 0:o}}function yd(e,t,n){let i=Y0(e,t,n);if(l(i))return i.textContent.trim()}function pbe(e){let t=new _c;return t.width=rU,t.height=rU,t.scaleByDistance=new zt(sbe,abe,cbe,lbe),t.pixelOffsetScaleByDistance=new zt(sbe,abe,cbe,lbe),t.verticalOrigin=new di(kn.BOTTOM),t.image=e,t}function xst(){let e=new dh;return e.translucencyByDistance=new zt(3e6,1,5e6,0),e.pixelOffset=new D(17,0),e.horizontalOrigin=wi.LEFT,e.font="16px sans-serif",e.style=nr.FILL_AND_OUTLINE,e}function Abe(e){let t=new Zc;return t.width=4,t.material=new V0,t.material.color=l(e)?e:U.RED,t.material.outlineWidth=2,t.material.outlineColor=U.BLACK,t}var ube={time:{text:"Time",tag:"time"},comment:{text:"Comment",tag:"cmt"},description:{text:"Description",tag:"desc"},source:{text:"Source",tag:"src"},number:{text:"GPS track/route number",tag:"number"},type:{text:"Type",tag:"type"}},CF;typeof document<"u"&&(CF=document.createElement("div"));function Cj(e,t){let n,i="",o=Object.keys(ube),r=o.length;for(n=0;n<r;n++){let u=o[n],h=ube[u];h.value=yd(e,h.tag,Do.gpx)??"",l(h.value)&&h.value!==""&&(i=`${i}<p>${h.text}: ${h.value}</p>`)}if(!l(i)||i==="")return;i=bst.link(i),CF.innerHTML=i;let s=CF.querySelectorAll("a");for(n=0;n<s.length;n++)s[n].setAttribute("target","_blank");let a=U.WHITE,c=U.BLACK,d='<div class="cesium-infoBox-description-lighter" style="';return d+="overflow:auto;",d+="word-wrap:break-word;",d+=`background-color:${a.toCssColorString()};`,d+=`color:${c.toCssColorString()};`,d+='">',d+=`${CF.innerHTML}</div>`,CF.innerHTML="",d}function gbe(e,t,n,i){let o=bj(t),r=gj(t,n);r.position=o;let s=l(i.waypointImage)?i.waypointImage:e._pinBuilder.fromMakiIconId("marker",U.RED,rU);r.billboard=pbe(s);let a=yd(t,"name",Do.gpx);r.name=a,r.label=xst(),r.label.text=a,r.description=Cj(t,r),i.clampToGround&&(r.billboard.heightReference=et.CLAMP_TO_GROUND,r.label.heightReference=et.CLAMP_TO_GROUND)}function Ist(e,t,n,i){let o=gj(t,n);o.description=Cj(t,o);let r=yj(t,"rtept",Do.gpx),s=new Array(r.length);for(let a=0;a<r.length;a++)gbe(e,r[a],n,i),s[a]=bj(r[a]);o.polyline=Abe(i.routeColor),i.clampToGround&&(o.polyline.clampToGround=!0),o.polyline.positions=s}function _st(e,t,n,i){let o=gj(t,n);o.description=Cj(t,o);let r=yj(t,"trkseg",Do.gpx),s=[],a=[],c,d=!0,u=new Oa;for(let h=0;h<r.length;h++)c=Est(r[h]),s=s.concat(c.positions),c.times.length>0?(a=a.concat(c.times),u.addSamples(a,s),d=d&&!0):d=!1;if(d){let h=l(i.waypointImage)?i.waypointImage:e._pinBuilder.fromMakiIconId("marker",U.RED,rU);o.billboard=pbe(h),o.position=u,i.clampToGround&&(o.billboard.heightReference=et.CLAMP_TO_GROUND),o.availability=new as,o.availability.addInterval(new wn({start:a[0],stop:a[a.length-1]}))}o.polyline=Abe(i.trackColor),o.polyline.positions=s,i.clampToGround&&(o.polyline.clampToGround=!0)}function Est(e){let t={positions:[],times:[]},n=yj(e,"trkpt",Do.gpx),i;for(let o=0;o<n.length;o++){let r=bj(n[o]);t.positions.push(r),i=yd(n[o],"time",Do.gpx),l(i)&&t.times.push(j.fromIso8601(i))}return t}function Tst(e){let t=Y0(e,"metadata",Do.gpx);if(l(t)){let n={name:yd(t,"name",Do.gpx),desc:yd(t,"desc",Do.gpx),author:Sst(t),copyright:Rst(t),link:bbe(t),time:yd(t,"time",Do.gpx),keywords:yd(t,"keywords",Do.gpx),bounds:Vst(t)};if(l(n.name)||l(n.desc)||l(n.author)||l(n.copyright)||l(n.link)||l(n.time)||l(n.keywords)||l(n.bounds))return n}}function Sst(e){let t=Y0(e,"author",Do.gpx);if(l(t)){let n={name:yd(t,"name",Do.gpx),email:Lst(t),link:bbe(t)};if(l(n.name)||l(n.email)||l(n.link))return n}}function Lst(e){let t=Y0(e,"email",Do.gpx);if(l(t)){let n=yd(t,"id",Do.gpx),i=yd(t,"domain",Do.gpx);return`${n}@${i}`}}function bbe(e){let t=Y0(e,"link",Do.gpx);if(l(t)){let n={href:xF(t,"href"),text:yd(t,"text",Do.gpx),mimeType:yd(t,"type",Do.gpx)};if(l(n.href)||l(n.text)||l(n.mimeType))return n}}function Rst(e){let t=Y0(e,"copyright",Do.gpx);if(l(t)){let n={author:xF(t,"author"),year:yd(t,"year",Do.gpx),license:yd(t,"license",Do.gpx)};if(l(n.author)||l(n.year)||l(n.license))return n}}function Vst(e){let t=Y0(e,"bounds",Do.gpx);if(l(t)){let n={minLat:yF(t,"minlat",Do.gpx),maxLat:yF(t,"maxlat",Do.gpx),minLon:yF(t,"minlon",Do.gpx),maxLon:yF(t,"maxlon",Do.gpx)};if(l(n.minLat)||l(n.maxLat)||l(n.minLon)||l(n.maxLon))return n}}var mbe={wpt:gbe,rte:Ist,trk:_st};function Gst(e,t,n,i){let o=Object.keys(mbe),r=o.length;for(let s=0;s<r;s++){let a=o[s],c=mbe[a],d=t.childNodes,u=d.length;for(let h=0;h<u;h++){let p=d[h];p.localName===a&&Do.gpx.indexOf(p.namespaceURI)!==-1&&c(e,p,n,i)}}}function hbe(e,t,n){let i=e._entityCollection;i.removeAll();let o=t.documentElement,r=xF(o,"version"),s=xF(o,"creator"),a,c=Tst(o);l(c)&&(a=c.name),o.localName==="gpx"?Gst(e,o,i,n):console.log(`GPX - Unsupported node: ${o.localName}`);let d,u=i.computeAvailability(),h=u.start,p=u.stop,g=j.equals(h,ze.MINIMUM_VALUE),f=j.equals(p,ze.MAXIMUM_VALUE);if(!g||!f){let x;g&&(x=new Date,x.setHours(0,0,0,0),h=j.fromDate(x)),f&&(x=new Date,x.setHours(24,0,0,0),p=j.fromDate(x)),d=new Oh,d.startTime=h,d.stopTime=p,d.currentTime=j.clone(h),d.clockRange=ls.LOOP_STOP,d.clockStep=Ro.SYSTEM_CLOCK_MULTIPLIER,d.multiplier=Math.round(Math.min(Math.max(j.secondsDifference(p,h)/60,1),31556900))}let b=!1;return e._name!==a&&(e._name=a,b=!0),e._creator!==s&&(e._creator=s,b=!0),Zst(e._metadata,c)&&(e._metadata=c,b=!0),e._version!==r&&(e._version=r,b=!0),d!==e._clock&&(b=!0,e._clock=d),b&&e._changed.raiseEvent(e),cs.setLoading(e,!1),e}function Zst(e,t){return!l(e)&&!l(t)?!1:l(e)&&l(t)?e.name!==t.name||e.dec!==t.desc||e.src!==t.src||e.author!==t.author||e.copyright!==t.copyright||e.link!==t.link||e.time!==t.time||e.bounds!==t.bounds:!0}function Bst(e,t,n,i){i=i??Y.EMPTY_OBJECT;let o=n;if(typeof n=="string"||n instanceof Ve){n=Ve.createIfNeeded(n),o=n.fetchBlob();let r=e._resourceCredits,s=n.credits;if(l(s)){let a=s.length;for(let c=0;c<a;c++)r.push(s[c])}}return Promise.resolve(o).then(function(r){return r instanceof Blob?Cst(r).then(function(s){let a,c;try{a=fbe.parseFromString(s,"application/xml")}catch(d){c=d.toString()}if(l(c)||a.body||a.documentElement.tagName==="parsererror"){let d=l(c)?c:a.documentElement.firstChild.nodeValue;throw d||(d=a.body.innerText),new de(d)}return hbe(e,a,i)}):hbe(e,r,i)}).catch(function(r){return e._error.raiseEvent(e,r),console.log(r),Promise.reject(r)})}function ZS(){this._changed=new Ce,this._error=new Ce,this._loading=new Ce,this._clock=void 0,this._entityCollection=new Ca(this),this._entityCluster=new ou,this._name=void 0,this._version=void 0,this._creator=void 0,this._metadata=void 0,this._isLoading=!1,this._pinBuilder=new Bg}ZS.load=function(e,t){return new ZS().load(e,t)};Object.defineProperties(ZS.prototype,{name:{get:function(){return this._name}},version:{get:function(){return this._version}},creator:{get:function(){return this._creator}},metadata:{get:function(){return this._metadata}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}}});ZS.prototype.update=function(e){return!0};ZS.prototype.load=function(e,t){if(!l(e))throw new Ae("data is required.");t=t??Y.EMPTY_OBJECT,cs.setLoading(this,!0);let n=this._name,i=this;return Bst(this,this._entityCollection,e,t).then(function(){let o,r=i._entityCollection.computeAvailability(),s=r.start,a=r.stop,c=j.equals(s,ze.MINIMUM_VALUE),d=j.equals(a,ze.MAXIMUM_VALUE);if(!c||!d){let h;c&&(h=new Date,h.setHours(0,0,0,0),s=j.fromDate(h)),d&&(h=new Date,h.setHours(24,0,0,0),a=j.fromDate(h)),o=new Oh,o.startTime=s,o.stopTime=a,o.currentTime=j.clone(s),o.clockRange=ls.LOOP_STOP,o.clockStep=Ro.SYSTEM_CLOCK_MULTIPLIER,o.multiplier=Math.round(Math.min(Math.max(j.secondsDifference(a,s)/60,1),31556900))}let u=!1;return o!==i._clock&&(i._clock=o,u=!0),n!==i._name&&(u=!0),u&&i._changed.raiseEvent(i),cs.setLoading(i,!1),i}).catch(function(o){return cs.setLoading(i,!1),i._error.raiseEvent(i,o),console.log(o),Promise.reject(o)})};var IF=ZS;var DTi=y(C(),1);function wst(e,t){this.position=e,this.headingPitchRoll=t}var _F=wst;var SRi=y(C(),1);var qF=y(Bd(),1);var WLi=y(C(),1);var UTi=y(C(),1);function mU(e){return hU(e.map(([t,n])=>new Array(t).fill(n,0,t)))}function hU(e){return e.reduce((t,n)=>t.concat(Array.isArray(n)?hU(n):n),[])}var ybe=[0,1,2,3].concat(...mU([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function Vr(){let e=this;function t(o){let r=e.dyn_tree,s=e.stat_desc.static_tree,a=e.stat_desc.extra_bits,c=e.stat_desc.extra_base,d=e.stat_desc.max_length,u,h,p,g,f,b,x=0;for(g=0;g<=15;g++)o.bl_count[g]=0;for(r[o.heap[o.heap_max]*2+1]=0,u=o.heap_max+1;u<573;u++)h=o.heap[u],g=r[r[h*2+1]*2+1]+1,g>d&&(g=d,x++),r[h*2+1]=g,!(h>e.max_code)&&(o.bl_count[g]++,f=0,h>=c&&(f=a[h-c]),b=r[h*2],o.opt_len+=b*(g+f),s&&(o.static_len+=b*(s[h*2+1]+f)));if(x!==0){do{for(g=d-1;o.bl_count[g]===0;)g--;o.bl_count[g]--,o.bl_count[g+1]+=2,o.bl_count[d]--,x-=2}while(x>0);for(g=d;g!==0;g--)for(h=o.bl_count[g];h!==0;)p=o.heap[--u],!(p>e.max_code)&&(r[p*2+1]!=g&&(o.opt_len+=(g-r[p*2+1])*r[p*2],r[p*2+1]=g),h--)}}function n(o,r){let s=0;do s|=o&1,o>>>=1,s<<=1;while(--r>0);return s>>>1}function i(o,r,s){let a=[],c=0,d,u,h;for(d=1;d<=15;d++)a[d]=c=c+s[d-1]<<1;for(u=0;u<=r;u++)h=o[u*2+1],h!==0&&(o[u*2]=n(a[h]++,h))}e.build_tree=function(o){let r=e.dyn_tree,s=e.stat_desc.static_tree,a=e.stat_desc.elems,c,d,u=-1,h;for(o.heap_len=0,o.heap_max=573,c=0;c<a;c++)r[c*2]!==0?(o.heap[++o.heap_len]=u=c,o.depth[c]=0):r[c*2+1]=0;for(;o.heap_len<2;)h=o.heap[++o.heap_len]=u<2?++u:0,r[h*2]=1,o.depth[h]=0,o.opt_len--,s&&(o.static_len-=s[h*2+1]);for(e.max_code=u,c=Math.floor(o.heap_len/2);c>=1;c--)o.pqdownheap(r,c);h=a;do c=o.heap[1],o.heap[1]=o.heap[o.heap_len--],o.pqdownheap(r,1),d=o.heap[1],o.heap[--o.heap_max]=c,o.heap[--o.heap_max]=d,r[h*2]=r[c*2]+r[d*2],o.depth[h]=Math.max(o.depth[c],o.depth[d])+1,r[c*2+1]=r[d*2+1]=h,o.heap[1]=h++,o.pqdownheap(r,1);while(o.heap_len>=2);o.heap[--o.heap_max]=o.heap[1],t(o),i(r,e.max_code,o.bl_count)}}Vr._length_code=[0,1,2,3,4,5,6,7].concat(...mU([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]]));Vr.base_length=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0];Vr.base_dist=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576];Vr.d_code=function(e){return e<256?ybe[e]:ybe[256+(e>>>7)]};Vr.extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];Vr.extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];Vr.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];Vr.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function pc(e,t,n,i,o){let r=this;r.static_tree=e,r.extra_bits=t,r.extra_base=n,r.elems=i,r.max_length=o}var Xst=[12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227],Wst=mU([[144,8],[112,9],[24,7],[8,8]]);pc.static_ltree=hU(Xst.map((e,t)=>[e,Wst[t]]));var Fst=[0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23],Pst=mU([[30,5]]);pc.static_dtree=hU(Fst.map((e,t)=>[e,Pst[t]]));pc.static_l_desc=new pc(pc.static_ltree,Vr.extra_lbits,257,286,15);pc.static_d_desc=new pc(pc.static_dtree,Vr.extra_dbits,0,30,15);pc.static_bl_desc=new pc(null,Vr.extra_blbits,0,19,7);var Mst=9,vst=8;function bp(e,t,n,i,o){let r=this;r.good_length=e,r.max_lazy=t,r.nice_length=n,r.max_chain=i,r.func=o}var xbe=0,dU=1,aI=2,of=[new bp(0,0,0,0,xbe),new bp(4,4,8,4,dU),new bp(4,5,16,8,dU),new bp(4,6,32,32,dU),new bp(4,4,16,16,aI),new bp(8,16,32,32,aI),new bp(8,16,128,128,aI),new bp(8,32,128,256,aI),new bp(32,128,258,1024,aI),new bp(32,258,258,4096,aI)],sU=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],Zm=0,aU=1,EF=2,cU=3,Nst=32,xj=42,lU=113,TF=666,Ij=8,Dst=0,_j=1,Qst=2,kr=3,uU=258,fu=uU+kr+1;function Cbe(e,t,n,i){let o=e[t*2],r=e[n*2];return o<r||o==r&&i[t]<=i[n]}function Ust(){let e=this,t,n,i,o,r,s,a,c,d,u,h,p,g,f,b,x,I,_,E,S,R,G,B,w,F,P,A,T,L,V,W,M,Q,N=new Vr,k=new Vr,v=new Vr;e.depth=[];let O,H,ee,K,te,q;e.bl_count=[],e.heap=[],W=[],M=[],Q=[];function pe(){d=2*r,h[g-1]=0;for(let ve=0;ve<g-1;ve++)h[ve]=0;P=of[A].max_lazy,L=of[A].good_length,V=of[A].nice_length,F=of[A].max_chain,R=0,I=0,B=0,_=w=kr-1,S=0,p=0}function ye(){let ve;for(ve=0;ve<286;ve++)W[ve*2]=0;for(ve=0;ve<30;ve++)M[ve*2]=0;for(ve=0;ve<19;ve++)Q[ve*2]=0;W[256*2]=1,e.opt_len=e.static_len=0,H=ee=0}function he(){N.dyn_tree=W,N.stat_desc=pc.static_l_desc,k.dyn_tree=M,k.stat_desc=pc.static_d_desc,v.dyn_tree=Q,v.stat_desc=pc.static_bl_desc,te=0,q=0,K=8,ye()}e.pqdownheap=function(ve,ut){let qe=e.heap,nt=qe[ut],yt=ut<<1;for(;yt<=e.heap_len&&(yt<e.heap_len&&Cbe(ve,qe[yt+1],qe[yt],e.depth)&&yt++,!Cbe(ve,nt,qe[yt],e.depth));)qe[ut]=qe[yt],ut=yt,yt<<=1;qe[ut]=nt};function xe(ve,ut){let qe=-1,nt,yt=ve[1],$t=0,Sn=7,fo=4;yt===0&&(Sn=138,fo=3),ve[(ut+1)*2+1]=65535;for(let uo=0;uo<=ut;uo++)nt=yt,yt=ve[(uo+1)*2+1],!(++$t<Sn&&nt==yt)&&($t<fo?Q[nt*2]+=$t:nt!==0?(nt!=qe&&Q[nt*2]++,Q[32]++):$t<=10?Q[34]++:Q[36]++,$t=0,qe=nt,yt===0?(Sn=138,fo=3):nt==yt?(Sn=6,fo=3):(Sn=7,fo=4))}function Te(){let ve;for(xe(W,N.max_code),xe(M,k.max_code),v.build_tree(e),ve=18;ve>=3&&Q[Vr.bl_order[ve]*2+1]===0;ve--);return e.opt_len+=3*(ve+1)+5+5+4,ve}function Be(ve){e.pending_buf[e.pending++]=ve}function Le(ve){Be(ve&255),Be(ve>>>8&255)}function De(ve){Be(ve>>8&255),Be(ve&255&255)}function Ue(ve,ut){let qe,nt=ut;q>16-nt?(qe=ve,te|=qe<<q&65535,Le(te),te=qe>>>16-q,q+=nt-16):(te|=ve<<q&65535,q+=nt)}function je(ve,ut){let qe=ve*2;Ue(ut[qe]&65535,ut[qe+1]&65535)}function it(ve,ut){let qe,nt=-1,yt,$t=ve[1],Sn=0,fo=7,uo=4;for($t===0&&(fo=138,uo=3),qe=0;qe<=ut;qe++)if(yt=$t,$t=ve[(qe+1)*2+1],!(++Sn<fo&&yt==$t)){if(Sn<uo)do je(yt,Q);while(--Sn!==0);else yt!==0?(yt!=nt&&(je(yt,Q),Sn--),je(16,Q),Ue(Sn-3,2)):Sn<=10?(je(17,Q),Ue(Sn-3,3)):(je(18,Q),Ue(Sn-11,7));Sn=0,nt=yt,$t===0?(fo=138,uo=3):yt==$t?(fo=6,uo=3):(fo=7,uo=4)}}function nn(ve,ut,qe){let nt;for(Ue(ve-257,5),Ue(ut-1,5),Ue(qe-4,4),nt=0;nt<qe;nt++)Ue(Q[Vr.bl_order[nt]*2+1],3);it(W,ve-1),it(M,ut-1)}function rt(){q==16?(Le(te),te=0,q=0):q>=8&&(Be(te&255),te>>>=8,q-=8)}function rn(){Ue(_j<<1,3),je(256,pc.static_ltree),rt(),1+K+10-q<9&&(Ue(_j<<1,3),je(256,pc.static_ltree),rt()),K=7}function Jt(ve,ut){let qe,nt,yt;if(e.dist_buf[H]=ve,e.lc_buf[H]=ut&255,H++,ve===0?W[ut*2]++:(ee++,ve--,W[(Vr._length_code[ut]+256+1)*2]++,M[Vr.d_code(ve)*2]++),(H&8191)===0&&A>2){for(qe=H*8,nt=R-I,yt=0;yt<30;yt++)qe+=M[yt*2]*(5+Vr.extra_dbits[yt]);if(qe>>>=3,ee<Math.floor(H/2)&&qe<Math.floor(nt/2))return!0}return H==O-1}function Xt(ve,ut){let qe,nt,yt=0,$t,Sn;if(H!==0)do qe=e.dist_buf[yt],nt=e.lc_buf[yt],yt++,qe===0?je(nt,ve):($t=Vr._length_code[nt],je($t+256+1,ve),Sn=Vr.extra_lbits[$t],Sn!==0&&(nt-=Vr.base_length[$t],Ue(nt,Sn)),qe--,$t=Vr.d_code(qe),je($t,ut),Sn=Vr.extra_dbits[$t],Sn!==0&&(qe-=Vr.base_dist[$t],Ue(qe,Sn)));while(yt<H);je(256,ve),K=ve[256*2+1]}function Li(){q>8?Le(te):q>0&&Be(te&255),te=0,q=0}function bi(ve,ut,qe){Li(),K=8,qe&&(Le(ut),Le(~ut)),e.pending_buf.set(c.subarray(ve,ve+ut),e.pending),e.pending+=ut}function vt(ve,ut,qe){Ue((Dst<<1)+(qe?1:0),3),bi(ve,ut,!0)}function Rt(ve,ut,qe){let nt,yt,$t=0;A>0?(N.build_tree(e),k.build_tree(e),$t=Te(),nt=e.opt_len+3+7>>>3,yt=e.static_len+3+7>>>3,yt<=nt&&(nt=yt)):nt=yt=ut+5,ut+4<=nt&&ve!=-1?vt(ve,ut,qe):yt==nt?(Ue((_j<<1)+(qe?1:0),3),Xt(pc.static_ltree,pc.static_dtree)):(Ue((Qst<<1)+(qe?1:0),3),nn(N.max_code+1,k.max_code+1,$t+1),Xt(W,M)),ye(),qe&&Li()}function si(ve){Rt(I>=0?I:-1,R-I,ve),I=R,t.flush_pending()}function _t(){let ve,ut,qe,nt;do{if(nt=d-B-R,nt===0&&R===0&&B===0)nt=r;else if(nt==-1)nt--;else if(R>=r+r-fu){c.set(c.subarray(r,r+r),0),G-=r,R-=r,I-=r,ve=g,qe=ve;do ut=h[--qe]&65535,h[qe]=ut>=r?ut-r:0;while(--ve!==0);ve=r,qe=ve;do ut=u[--qe]&65535,u[qe]=ut>=r?ut-r:0;while(--ve!==0);nt+=r}if(t.avail_in===0)return;ve=t.read_buf(c,R+B,nt),B+=ve,B>=kr&&(p=c[R]&255,p=(p<<x^c[R+1]&255)&b)}while(B<fu&&t.avail_in!==0)}function Fo(ve){let ut=65535,qe;for(ut>i-5&&(ut=i-5);;){if(B<=1){if(_t(),B===0&&ve==0)return Zm;if(B===0)break}if(R+=B,B=0,qe=I+ut,(R===0||R>=qe)&&(B=R-qe,R=qe,si(!1),t.avail_out===0)||R-I>=r-fu&&(si(!1),t.avail_out===0))return Zm}return si(ve==4),t.avail_out===0?ve==4?EF:Zm:ve==4?cU:aU}function Uo(ve){let ut=F,qe=R,nt,yt,$t=w,Sn=R>r-fu?R-(r-fu):0,fo=V,uo=a,ra=R+uU,sa=c[qe+$t-1],Hn=c[qe+$t];w>=L&&(ut>>=2),fo>B&&(fo=B);do if(nt=ve,!(c[nt+$t]!=Hn||c[nt+$t-1]!=sa||c[nt]!=c[qe]||c[++nt]!=c[qe+1])){qe+=2,nt++;do;while(c[++qe]==c[++nt]&&c[++qe]==c[++nt]&&c[++qe]==c[++nt]&&c[++qe]==c[++nt]&&c[++qe]==c[++nt]&&c[++qe]==c[++nt]&&c[++qe]==c[++nt]&&c[++qe]==c[++nt]&&qe<ra);if(yt=uU-(ra-qe),qe=ra-uU,yt>$t){if(G=ve,$t=yt,yt>=fo)break;sa=c[qe+$t-1],Hn=c[qe+$t]}}while((ve=u[ve&uo]&65535)>Sn&&--ut!==0);return $t<=B?$t:B}function Va(ve){let ut=0,qe;for(;;){if(B<fu){if(_t(),B<fu&&ve==0)return Zm;if(B===0)break}if(B>=kr&&(p=(p<<x^c[R+(kr-1)]&255)&b,ut=h[p]&65535,u[R&a]=h[p],h[p]=R),ut!==0&&(R-ut&65535)<=r-fu&&T!=2&&(_=Uo(ut)),_>=kr)if(qe=Jt(R-G,_-kr),B-=_,_<=P&&B>=kr){_--;do R++,p=(p<<x^c[R+(kr-1)]&255)&b,ut=h[p]&65535,u[R&a]=h[p],h[p]=R;while(--_!==0);R++}else R+=_,_=0,p=c[R]&255,p=(p<<x^c[R+1]&255)&b;else qe=Jt(0,c[R]&255),B--,R++;if(qe&&(si(!1),t.avail_out===0))return Zm}return si(ve==4),t.avail_out===0?ve==4?EF:Zm:ve==4?cU:aU}function Cr(ve){let ut=0,qe,nt;for(;;){if(B<fu){if(_t(),B<fu&&ve==0)return Zm;if(B===0)break}if(B>=kr&&(p=(p<<x^c[R+(kr-1)]&255)&b,ut=h[p]&65535,u[R&a]=h[p],h[p]=R),w=_,E=G,_=kr-1,ut!==0&&w<P&&(R-ut&65535)<=r-fu&&(T!=2&&(_=Uo(ut)),_<=5&&(T==1||_==kr&&R-G>4096)&&(_=kr-1)),w>=kr&&_<=w){nt=R+B-kr,qe=Jt(R-1-E,w-kr),B-=w-1,w-=2;do++R<=nt&&(p=(p<<x^c[R+(kr-1)]&255)&b,ut=h[p]&65535,u[R&a]=h[p],h[p]=R);while(--w!==0);if(S=0,_=kr-1,R++,qe&&(si(!1),t.avail_out===0))return Zm}else if(S!==0){if(qe=Jt(0,c[R-1]&255),qe&&si(!1),R++,B--,t.avail_out===0)return Zm}else S=1,R++,B--}return S!==0&&(qe=Jt(0,c[R-1]&255),S=0),si(ve==4),t.avail_out===0?ve==4?EF:Zm:ve==4?cU:aU}function wr(ve){return ve.total_in=ve.total_out=0,ve.msg=null,e.pending=0,e.pending_out=0,n=lU,o=0,he(),pe(),0}e.deflateInit=function(ve,ut,qe,nt,yt,$t){return nt||(nt=Ij),yt||(yt=vst),$t||($t=0),ve.msg=null,ut==-1&&(ut=6),yt<1||yt>Mst||nt!=Ij||qe<9||qe>15||ut<0||ut>9||$t<0||$t>2?-2:(ve.dstate=e,s=qe,r=1<<s,a=r-1,f=yt+7,g=1<<f,b=g-1,x=Math.floor((f+kr-1)/kr),c=new Uint8Array(r*2),u=[],h=[],O=1<<yt+6,e.pending_buf=new Uint8Array(O*4),i=O*4,e.dist_buf=new Uint16Array(O),e.lc_buf=new Uint8Array(O),A=ut,T=$t,wr(ve))},e.deflateEnd=function(){return n!=xj&&n!=lU&&n!=TF?-2:(e.lc_buf=null,e.dist_buf=null,e.pending_buf=null,h=null,u=null,c=null,e.dstate=null,n==lU?-3:0)},e.deflateParams=function(ve,ut,qe){let nt=0;return ut==-1&&(ut=6),ut<0||ut>9||qe<0||qe>2?-2:(of[A].func!=of[ut].func&&ve.total_in!==0&&(nt=ve.deflate(1)),A!=ut&&(A=ut,P=of[A].max_lazy,L=of[A].good_length,V=of[A].nice_length,F=of[A].max_chain),T=qe,nt)},e.deflateSetDictionary=function(ve,ut,qe){let nt=qe,yt,$t=0;if(!ut||n!=xj)return-2;if(nt<kr)return 0;for(nt>r-fu&&(nt=r-fu,$t=qe-nt),c.set(ut.subarray($t,$t+nt),0),R=nt,I=nt,p=c[0]&255,p=(p<<x^c[1]&255)&b,yt=0;yt<=nt-kr;yt++)p=(p<<x^c[yt+(kr-1)]&255)&b,u[yt&a]=h[p],h[p]=yt;return 0},e.deflate=function(ve,ut){let qe,nt,yt,$t,Sn;if(ut>4||ut<0)return-2;if(!ve.next_out||!ve.next_in&&ve.avail_in!==0||n==TF&&ut!=4)return ve.msg=sU[4],-2;if(ve.avail_out===0)return ve.msg=sU[7],-5;if(t=ve,$t=o,o=ut,n==xj&&(nt=Ij+(s-8<<4)<<8,yt=(A-1&255)>>1,yt>3&&(yt=3),nt|=yt<<6,R!==0&&(nt|=Nst),nt+=31-nt%31,n=lU,De(nt)),e.pending!==0){if(t.flush_pending(),t.avail_out===0)return o=-1,0}else if(t.avail_in===0&&ut<=$t&&ut!=4)return t.msg=sU[7],-5;if(n==TF&&t.avail_in!==0)return ve.msg=sU[7],-5;if(t.avail_in!==0||B!==0||ut!=0&&n!=TF){switch(Sn=-1,of[A].func){case xbe:Sn=Fo(ut);break;case dU:Sn=Va(ut);break;case aI:Sn=Cr(ut);break;default:}if((Sn==EF||Sn==cU)&&(n=TF),Sn==Zm||Sn==EF)return t.avail_out===0&&(o=-1),0;if(Sn==aU){if(ut==1)rn();else if(vt(0,0,!1),ut==3)for(qe=0;qe<g;qe++)h[qe]=0;if(t.flush_pending(),t.avail_out===0)return o=-1,0}}return ut!=4?0:1}}function Ibe(){let e=this;e.next_in_index=0,e.next_out_index=0,e.avail_in=0,e.total_in=0,e.avail_out=0,e.total_out=0}Ibe.prototype={deflateInit(e,t){let n=this;return n.dstate=new Ust,t||(t=15),n.dstate.deflateInit(n,e,t)},deflate(e){let t=this;return t.dstate?t.dstate.deflate(t,e):-2},deflateEnd(){let e=this;if(!e.dstate)return-2;let t=e.dstate.deflateEnd();return e.dstate=null,t},deflateParams(e,t){let n=this;return n.dstate?n.dstate.deflateParams(n,e,t):-2},deflateSetDictionary(e,t){let n=this;return n.dstate?n.dstate.deflateSetDictionary(n,e,t):-2},read_buf(e,t,n){let i=this,o=i.avail_in;return o>n&&(o=n),o===0?0:(i.avail_in-=o,e.set(i.next_in.subarray(i.next_in_index,i.next_in_index+o),t),i.next_in_index+=o,i.total_in+=o,o)},flush_pending(){let e=this,t=e.dstate.pending;t>e.avail_out&&(t=e.avail_out),t!==0&&(e.next_out.set(e.dstate.pending_buf.subarray(e.dstate.pending_out,e.dstate.pending_out+t),e.next_out_index),e.next_out_index+=t,e.dstate.pending_out+=t,e.total_out+=t,e.avail_out-=t,e.dstate.pending-=t,e.dstate.pending===0&&(e.dstate.pending_out=0))}};function _be(e){let t=this,n=new Ibe,i=kst(e&&e.chunkSize?e.chunkSize:64*1024),o=0,r=new Uint8Array(i),s=e?e.level:-1;typeof s>"u"&&(s=-1),n.deflateInit(s),n.next_out=r,t.append=function(a,c){let d,u,h=0,p=0,g=0,f=[];if(a.length){n.next_in_index=0,n.next_in=a,n.avail_in=a.length;do{if(n.next_out_index=0,n.avail_out=i,d=n.deflate(o),d!=0)throw new Error("deflating: "+n.msg);n.next_out_index&&(n.next_out_index==i?f.push(new Uint8Array(r)):f.push(r.subarray(0,n.next_out_index))),g+=n.next_out_index,c&&n.next_in_index>0&&n.next_in_index!=h&&(c(n.next_in_index),h=n.next_in_index)}while(n.avail_in>0||n.avail_out===0);return f.length>1?(u=new Uint8Array(g),f.forEach(function(b){u.set(b,p),p+=b.length})):u=f[0]?new Uint8Array(f[0]):new Uint8Array,u}},t.flush=function(){let a,c,d=0,u=0,h=[];do{if(n.next_out_index=0,n.avail_out=i,a=n.deflate(4),a!=1&&a!=0)throw new Error("deflating: "+n.msg);i-n.avail_out>0&&h.push(r.slice(0,n.next_out_index)),u+=n.next_out_index}while(n.avail_in>0||n.avail_out===0);return n.deflateEnd(),c=new Uint8Array(u),h.forEach(function(p){c.set(p,d),d+=p.length}),c}}function kst(e){return e+5*(Math.floor(e/16383)+1)}var YTi=y(C(),1);var pu=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],Ube=1440,Yst=0,Ost=4,Hst=9,zst=5,Kst=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],Jst=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],jst=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],qst=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],$st=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],eat=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],O0=15;function Lj(){let e=this,t,n,i,o,r,s;function a(d,u,h,p,g,f,b,x,I,_,E){let S,R,G,B,w,F,P,A,T,L,V,W,M,Q,N;L=0,w=h;do i[d[u+L]]++,L++,w--;while(w!==0);if(i[0]==h)return b[0]=-1,x[0]=0,0;for(A=x[0],F=1;F<=O0&&i[F]===0;F++);for(P=F,A<F&&(A=F),w=O0;w!==0&&i[w]===0;w--);for(G=w,A>w&&(A=w),x[0]=A,Q=1<<F;F<w;F++,Q<<=1)if((Q-=i[F])<0)return-3;if((Q-=i[w])<0)return-3;for(i[w]+=Q,s[1]=F=0,L=1,M=2;--w!==0;)s[M]=F+=i[L],M++,L++;w=0,L=0;do(F=d[u+L])!==0&&(E[s[F]++]=w),L++;while(++w<h);for(h=s[G],s[0]=w=0,L=0,B=-1,W=-A,r[0]=0,V=0,N=0;P<=G;P++)for(S=i[P];S--!==0;){for(;P>W+A;){if(B++,W+=A,N=G-W,N=N>A?A:N,(R=1<<(F=P-W))>S+1&&(R-=S+1,M=P,F<N))for(;++F<N&&!((R<<=1)<=i[++M]);)R-=i[M];if(N=1<<F,_[0]+N>Ube)return-3;r[B]=V=_[0],_[0]+=N,B!==0?(s[B]=w,o[0]=F,o[1]=A,F=w>>>W-A,o[2]=V-r[B-1]-F,I.set(o,(r[B-1]+F)*3)):b[0]=V}for(o[1]=P-W,L>=h?o[0]=192:E[L]<p?(o[0]=E[L]<256?0:96,o[2]=E[L++]):(o[0]=f[E[L]-p]+16+64,o[2]=g[E[L++]-p]),R=1<<P-W,F=w>>>W;F<N;F+=R)I.set(o,(V+F)*3);for(F=1<<P-1;(w&F)!==0;F>>>=1)w^=F;for(w^=F,T=(1<<W)-1;(w&T)!=s[B];)B--,W-=A,T=(1<<W)-1}return Q!==0&&G!=1?-5:0}function c(d){let u;for(t||(t=[],n=[],i=new Int32Array(O0+1),o=[],r=new Int32Array(O0),s=new Int32Array(O0+1)),n.length<d&&(n=[]),u=0;u<d;u++)n[u]=0;for(u=0;u<O0+1;u++)i[u]=0;for(u=0;u<3;u++)o[u]=0;r.set(i.subarray(0,O0),0),s.set(i.subarray(0,O0+1),0)}e.inflate_trees_bits=function(d,u,h,p,g){let f;return c(19),t[0]=0,f=a(d,0,19,19,null,null,h,u,p,t,n),f==-3?g.msg="oversubscribed dynamic bit lengths tree":(f==-5||u[0]===0)&&(g.msg="incomplete dynamic bit lengths tree",f=-3),f},e.inflate_trees_dynamic=function(d,u,h,p,g,f,b,x,I){let _;return c(288),t[0]=0,_=a(h,0,d,257,jst,qst,f,p,x,t,n),_!=0||p[0]===0?(_==-3?I.msg="oversubscribed literal/length tree":_!=-4&&(I.msg="incomplete literal/length tree",_=-3),_):(c(288),_=a(h,d,u,0,$st,eat,b,g,x,t,n),_!=0||g[0]===0&&d>257?(_==-3?I.msg="oversubscribed distance tree":_==-5?(I.msg="incomplete distance tree",_=-3):_!=-4&&(I.msg="empty distance tree with lengths",_=-3),_):0)}}Lj.inflate_trees_fixed=function(e,t,n,i){return e[0]=Hst,t[0]=zst,n[0]=Kst,i[0]=Jst,0};var fU=0,Ebe=1,Tbe=2,Sbe=3,Lbe=4,Rbe=5,Vbe=6,Ej=7,Gbe=8,pU=9;function tat(){let e=this,t,n=0,i,o=0,r=0,s=0,a=0,c=0,d=0,u=0,h,p=0,g,f=0;function b(x,I,_,E,S,R,G,B){let w,F,P,A,T,L,V,W,M,Q,N,k,v,O,H,ee;V=B.next_in_index,W=B.avail_in,T=G.bitb,L=G.bitk,M=G.write,Q=M<G.read?G.read-M-1:G.end-M,N=pu[x],k=pu[I];do{for(;L<20;)W--,T|=(B.read_byte(V++)&255)<<L,L+=8;if(w=T&N,F=_,P=E,ee=(P+w)*3,(A=F[ee])===0){T>>=F[ee+1],L-=F[ee+1],G.win[M++]=F[ee+2],Q--;continue}do{if(T>>=F[ee+1],L-=F[ee+1],(A&16)!==0){for(A&=15,v=F[ee+2]+(T&pu[A]),T>>=A,L-=A;L<15;)W--,T|=(B.read_byte(V++)&255)<<L,L+=8;w=T&k,F=S,P=R,ee=(P+w)*3,A=F[ee];do if(T>>=F[ee+1],L-=F[ee+1],(A&16)!==0){for(A&=15;L<A;)W--,T|=(B.read_byte(V++)&255)<<L,L+=8;if(O=F[ee+2]+(T&pu[A]),T>>=A,L-=A,Q-=v,M>=O)H=M-O,M-H>0&&2>M-H?(G.win[M++]=G.win[H++],G.win[M++]=G.win[H++],v-=2):(G.win.set(G.win.subarray(H,H+2),M),M+=2,H+=2,v-=2);else{H=M-O;do H+=G.end;while(H<0);if(A=G.end-H,v>A){if(v-=A,M-H>0&&A>M-H)do G.win[M++]=G.win[H++];while(--A!==0);else G.win.set(G.win.subarray(H,H+A),M),M+=A,H+=A,A=0;H=0}}if(M-H>0&&v>M-H)do G.win[M++]=G.win[H++];while(--v!==0);else G.win.set(G.win.subarray(H,H+v),M),M+=v,H+=v,v=0;break}else if((A&64)===0)w+=F[ee+2],w+=T&pu[A],ee=(P+w)*3,A=F[ee];else return B.msg="invalid distance code",v=B.avail_in-W,v=L>>3<v?L>>3:v,W+=v,V-=v,L-=v<<3,G.bitb=T,G.bitk=L,B.avail_in=W,B.total_in+=V-B.next_in_index,B.next_in_index=V,G.write=M,-3;while(!0);break}if((A&64)===0){if(w+=F[ee+2],w+=T&pu[A],ee=(P+w)*3,(A=F[ee])===0){T>>=F[ee+1],L-=F[ee+1],G.win[M++]=F[ee+2],Q--;break}}else return(A&32)!==0?(v=B.avail_in-W,v=L>>3<v?L>>3:v,W+=v,V-=v,L-=v<<3,G.bitb=T,G.bitk=L,B.avail_in=W,B.total_in+=V-B.next_in_index,B.next_in_index=V,G.write=M,1):(B.msg="invalid literal/length code",v=B.avail_in-W,v=L>>3<v?L>>3:v,W+=v,V-=v,L-=v<<3,G.bitb=T,G.bitk=L,B.avail_in=W,B.total_in+=V-B.next_in_index,B.next_in_index=V,G.write=M,-3)}while(!0)}while(Q>=258&&W>=10);return v=B.avail_in-W,v=L>>3<v?L>>3:v,W+=v,V-=v,L-=v<<3,G.bitb=T,G.bitk=L,B.avail_in=W,B.total_in+=V-B.next_in_index,B.next_in_index=V,G.write=M,0}e.init=function(x,I,_,E,S,R){t=fU,d=x,u=I,h=_,p=E,g=S,f=R,i=null},e.proc=function(x,I,_){let E,S,R,G=0,B=0,w=0,F,P,A,T;for(w=I.next_in_index,F=I.avail_in,G=x.bitb,B=x.bitk,P=x.write,A=P<x.read?x.read-P-1:x.end-P;;)switch(t){case fU:if(A>=258&&F>=10&&(x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,_=b(d,u,h,p,g,f,x,I),w=I.next_in_index,F=I.avail_in,G=x.bitb,B=x.bitk,P=x.write,A=P<x.read?x.read-P-1:x.end-P,_!=0)){t=_==1?Ej:pU;break}r=d,i=h,o=p,t=Ebe;case Ebe:for(E=r;B<E;){if(F!==0)_=0;else return x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);F--,G|=(I.read_byte(w++)&255)<<B,B+=8}if(S=(o+(G&pu[E]))*3,G>>>=i[S+1],B-=i[S+1],R=i[S],R===0){s=i[S+2],t=Vbe;break}if((R&16)!==0){a=R&15,n=i[S+2],t=Tbe;break}if((R&64)===0){r=R,o=S/3+i[S+2];break}if((R&32)!==0){t=Ej;break}return t=pU,I.msg="invalid literal/length code",_=-3,x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);case Tbe:for(E=a;B<E;){if(F!==0)_=0;else return x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);F--,G|=(I.read_byte(w++)&255)<<B,B+=8}n+=G&pu[E],G>>=E,B-=E,r=u,i=g,o=f,t=Sbe;case Sbe:for(E=r;B<E;){if(F!==0)_=0;else return x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);F--,G|=(I.read_byte(w++)&255)<<B,B+=8}if(S=(o+(G&pu[E]))*3,G>>=i[S+1],B-=i[S+1],R=i[S],(R&16)!==0){a=R&15,c=i[S+2],t=Lbe;break}if((R&64)===0){r=R,o=S/3+i[S+2];break}return t=pU,I.msg="invalid distance code",_=-3,x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);case Lbe:for(E=a;B<E;){if(F!==0)_=0;else return x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);F--,G|=(I.read_byte(w++)&255)<<B,B+=8}c+=G&pu[E],G>>=E,B-=E,t=Rbe;case Rbe:for(T=P-c;T<0;)T+=x.end;for(;n!==0;){if(A===0&&(P==x.end&&x.read!==0&&(P=0,A=P<x.read?x.read-P-1:x.end-P),A===0&&(x.write=P,_=x.inflate_flush(I,_),P=x.write,A=P<x.read?x.read-P-1:x.end-P,P==x.end&&x.read!==0&&(P=0,A=P<x.read?x.read-P-1:x.end-P),A===0)))return x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);x.win[P++]=x.win[T++],A--,T==x.end&&(T=0),n--}t=fU;break;case Vbe:if(A===0&&(P==x.end&&x.read!==0&&(P=0,A=P<x.read?x.read-P-1:x.end-P),A===0&&(x.write=P,_=x.inflate_flush(I,_),P=x.write,A=P<x.read?x.read-P-1:x.end-P,P==x.end&&x.read!==0&&(P=0,A=P<x.read?x.read-P-1:x.end-P),A===0)))return x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);_=0,x.win[P++]=s,A--,t=fU;break;case Ej:if(B>7&&(B-=8,F++,w--),x.write=P,_=x.inflate_flush(I,_),P=x.write,A=P<x.read?x.read-P-1:x.end-P,x.read!=x.write)return x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);t=Gbe;case Gbe:return _=1,x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);case pU:return _=-3,x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_);default:return _=-2,x.bitb=G,x.bitk=B,I.avail_in=F,I.total_in+=w-I.next_in_index,I.next_in_index=w,x.write=P,x.inflate_flush(I,_)}},e.free=function(){}}var Zbe=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],BS=0,Tj=1,Bbe=2,wbe=3,Xbe=4,Wbe=5,AU=6,gU=7,Fbe=8,cI=9;function nat(e,t){let n=this,i=BS,o=0,r=0,s=0,a,c=[0],d=[0],u=new tat,h=0,p=new Int32Array(Ube*3),g=0,f=new Lj;n.bitk=0,n.bitb=0,n.win=new Uint8Array(t),n.end=t,n.read=0,n.write=0,n.reset=function(b,x){x&&(x[0]=g),i==AU&&u.free(b),i=BS,n.bitk=0,n.bitb=0,n.read=n.write=0},n.reset(e,null),n.inflate_flush=function(b,x){let I,_,E;return _=b.next_out_index,E=n.read,I=(E<=n.write?n.write:n.end)-E,I>b.avail_out&&(I=b.avail_out),I!==0&&x==-5&&(x=0),b.avail_out-=I,b.total_out+=I,b.next_out.set(n.win.subarray(E,E+I),_),_+=I,E+=I,E==n.end&&(E=0,n.write==n.end&&(n.write=0),I=n.write-E,I>b.avail_out&&(I=b.avail_out),I!==0&&x==-5&&(x=0),b.avail_out-=I,b.total_out+=I,b.next_out.set(n.win.subarray(E,E+I),_),_+=I,E+=I),b.next_out_index=_,n.read=E,x},n.proc=function(b,x){let I,_,E,S,R,G,B,w;for(S=b.next_in_index,R=b.avail_in,_=n.bitb,E=n.bitk,G=n.write,B=G<n.read?n.read-G-1:n.end-G;;){let F,P,A,T,L,V,W,M;switch(i){case BS:for(;E<3;){if(R!==0)x=0;else return n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);R--,_|=(b.read_byte(S++)&255)<<E,E+=8}switch(I=_&7,h=I&1,I>>>1){case 0:_>>>=3,E-=3,I=E&7,_>>>=I,E-=I,i=Tj;break;case 1:F=[],P=[],A=[[]],T=[[]],Lj.inflate_trees_fixed(F,P,A,T),u.init(F[0],P[0],A[0],0,T[0],0),_>>>=3,E-=3,i=AU;break;case 2:_>>>=3,E-=3,i=wbe;break;case 3:return _>>>=3,E-=3,i=cI,b.msg="invalid block type",x=-3,n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x)}break;case Tj:for(;E<32;){if(R!==0)x=0;else return n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);R--,_|=(b.read_byte(S++)&255)<<E,E+=8}if((~_>>>16&65535)!=(_&65535))return i=cI,b.msg="invalid stored block lengths",x=-3,n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);o=_&65535,_=E=0,i=o!==0?Bbe:h!==0?gU:BS;break;case Bbe:if(R===0||B===0&&(G==n.end&&n.read!==0&&(G=0,B=G<n.read?n.read-G-1:n.end-G),B===0&&(n.write=G,x=n.inflate_flush(b,x),G=n.write,B=G<n.read?n.read-G-1:n.end-G,G==n.end&&n.read!==0&&(G=0,B=G<n.read?n.read-G-1:n.end-G),B===0)))return n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);if(x=0,I=o,I>R&&(I=R),I>B&&(I=B),n.win.set(b.read_buf(S,I),G),S+=I,R-=I,G+=I,B-=I,(o-=I)!==0)break;i=h!==0?gU:BS;break;case wbe:for(;E<14;){if(R!==0)x=0;else return n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);R--,_|=(b.read_byte(S++)&255)<<E,E+=8}if(r=I=_&16383,(I&31)>29||(I>>5&31)>29)return i=cI,b.msg="too many length or distance symbols",x=-3,n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);if(I=258+(I&31)+(I>>5&31),!a||a.length<I)a=[];else for(w=0;w<I;w++)a[w]=0;_>>>=14,E-=14,s=0,i=Xbe;case Xbe:for(;s<4+(r>>>10);){for(;E<3;){if(R!==0)x=0;else return n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);R--,_|=(b.read_byte(S++)&255)<<E,E+=8}a[Zbe[s++]]=_&7,_>>>=3,E-=3}for(;s<19;)a[Zbe[s++]]=0;if(c[0]=7,I=f.inflate_trees_bits(a,c,d,p,b),I!=0)return x=I,x==-3&&(a=null,i=cI),n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);s=0,i=Wbe;case Wbe:for(;I=r,!(s>=258+(I&31)+(I>>5&31));){let Q,N;for(I=c[0];E<I;){if(R!==0)x=0;else return n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);R--,_|=(b.read_byte(S++)&255)<<E,E+=8}if(I=p[(d[0]+(_&pu[I]))*3+1],N=p[(d[0]+(_&pu[I]))*3+2],N<16)_>>>=I,E-=I,a[s++]=N;else{for(w=N==18?7:N-14,Q=N==18?11:3;E<I+w;){if(R!==0)x=0;else return n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);R--,_|=(b.read_byte(S++)&255)<<E,E+=8}if(_>>>=I,E-=I,Q+=_&pu[w],_>>>=w,E-=w,w=s,I=r,w+Q>258+(I&31)+(I>>5&31)||N==16&&w<1)return a=null,i=cI,b.msg="invalid bit length repeat",x=-3,n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);N=N==16?a[w-1]:0;do a[w++]=N;while(--Q!==0);s=w}}if(d[0]=-1,L=[],V=[],W=[],M=[],L[0]=9,V[0]=6,I=r,I=f.inflate_trees_dynamic(257+(I&31),1+(I>>5&31),a,L,V,W,M,p,b),I!=0)return I==-3&&(a=null,i=cI),x=I,n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);u.init(L[0],V[0],p,W[0],p,M[0]),i=AU;case AU:if(n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,(x=u.proc(n,b,x))!=1)return n.inflate_flush(b,x);if(x=0,u.free(b),S=b.next_in_index,R=b.avail_in,_=n.bitb,E=n.bitk,G=n.write,B=G<n.read?n.read-G-1:n.end-G,h===0){i=BS;break}i=gU;case gU:if(n.write=G,x=n.inflate_flush(b,x),G=n.write,B=G<n.read?n.read-G-1:n.end-G,n.read!=n.write)return n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);i=Fbe;case Fbe:return x=1,n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);case cI:return x=-3,n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x);default:return x=-2,n.bitb=_,n.bitk=E,b.avail_in=R,b.total_in+=S-b.next_in_index,b.next_in_index=S,n.write=G,n.inflate_flush(b,x)}}},n.free=function(b){n.reset(b,null),n.win=null,p=null},n.set_dictionary=function(b,x,I){n.win.set(b.subarray(x,x+I),0),n.read=n.write=I},n.sync_point=function(){return i==Tj?1:0}}var iat=32,oat=8,rat=0,Pbe=1,Mbe=2,vbe=3,Nbe=4,Dbe=5,Sj=6,SF=7,Qbe=12,H0=13,sat=[0,0,255,255];function aat(){let e=this;e.mode=0,e.method=0,e.was=[0],e.need=0,e.marker=0,e.wbits=0;function t(n){return!n||!n.istate?-2:(n.total_in=n.total_out=0,n.msg=null,n.istate.mode=SF,n.istate.blocks.reset(n,null),0)}e.inflateEnd=function(n){return e.blocks&&e.blocks.free(n),e.blocks=null,0},e.inflateInit=function(n,i){return n.msg=null,e.blocks=null,i<8||i>15?(e.inflateEnd(n),-2):(e.wbits=i,n.istate.blocks=new nat(n,1<<i),t(n),0)},e.inflate=function(n,i){let o,r;if(!n||!n.istate||!n.next_in)return-2;let s=n.istate;for(i=i==Ost?-5:0,o=-5;;)switch(s.mode){case rat:if(n.avail_in===0)return o;if(o=i,n.avail_in--,n.total_in++,((s.method=n.read_byte(n.next_in_index++))&15)!=oat){s.mode=H0,n.msg="unknown compression method",s.marker=5;break}if((s.method>>4)+8>s.wbits){s.mode=H0,n.msg="invalid win size",s.marker=5;break}s.mode=Pbe;case Pbe:if(n.avail_in===0)return o;if(o=i,n.avail_in--,n.total_in++,r=n.read_byte(n.next_in_index++)&255,((s.method<<8)+r)%31!==0){s.mode=H0,n.msg="incorrect header check",s.marker=5;break}if((r&iat)===0){s.mode=SF;break}s.mode=Mbe;case Mbe:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need=(n.read_byte(n.next_in_index++)&255)<<24&4278190080,s.mode=vbe;case vbe:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need+=(n.read_byte(n.next_in_index++)&255)<<16&16711680,s.mode=Nbe;case Nbe:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need+=(n.read_byte(n.next_in_index++)&255)<<8&65280,s.mode=Dbe;case Dbe:return n.avail_in===0?o:(o=i,n.avail_in--,n.total_in++,s.need+=n.read_byte(n.next_in_index++)&255,s.mode=Sj,2);case Sj:return s.mode=H0,n.msg="need dictionary",s.marker=0,-2;case SF:if(o=s.blocks.proc(n,o),o==-3){s.mode=H0,s.marker=0;break}if(o==0&&(o=i),o!=1)return o;o=i,s.blocks.reset(n,s.was),s.mode=Qbe;case Qbe:return n.avail_in=0,1;case H0:return-3;default:return-2}},e.inflateSetDictionary=function(n,i,o){let r=0,s=o;if(!n||!n.istate||n.istate.mode!=Sj)return-2;let a=n.istate;return s>=1<<a.wbits&&(s=(1<<a.wbits)-1,r=o-s),a.blocks.set_dictionary(i,r,s),a.mode=SF,0},e.inflateSync=function(n){let i,o,r,s,a;if(!n||!n.istate)return-2;let c=n.istate;if(c.mode!=H0&&(c.mode=H0,c.marker=0),(i=n.avail_in)===0)return-5;for(o=n.next_in_index,r=c.marker;i!==0&&r<4;)n.read_byte(o)==sat[r]?r++:n.read_byte(o)!==0?r=0:r=4-r,o++,i--;return n.total_in+=o-n.next_in_index,n.next_in_index=o,n.avail_in=i,c.marker=r,r!=4?-3:(s=n.total_in,a=n.total_out,t(n),n.total_in=s,n.total_out=a,c.mode=SF,0)},e.inflateSyncPoint=function(n){return!n||!n.istate||!n.istate.blocks?-2:n.istate.blocks.sync_point()}}function kbe(){}kbe.prototype={inflateInit(e){let t=this;return t.istate=new aat,e||(e=15),t.istate.inflateInit(t,e)},inflate(e){let t=this;return t.istate?t.istate.inflate(t,e):-2},inflateEnd(){let e=this;if(!e.istate)return-2;let t=e.istate.inflateEnd(e);return e.istate=null,t},inflateSync(){let e=this;return e.istate?e.istate.inflateSync(e):-2},inflateSetDictionary(e,t){let n=this;return n.istate?n.istate.inflateSetDictionary(n,e,t):-2},read_byte(e){return this.next_in[e]},read_buf(e,t){return this.next_in.subarray(e,e+t)}};function Ybe(e){let t=this,n=new kbe,i=e&&e.chunkSize?Math.floor(e.chunkSize*2):128*1024,o=Yst,r=new Uint8Array(i),s=!1;n.inflateInit(),n.next_out=r,t.append=function(a,c){let d=[],u,h,p=0,g=0,f=0;if(a.length!==0){n.next_in_index=0,n.next_in=a,n.avail_in=a.length;do{if(n.next_out_index=0,n.avail_out=i,n.avail_in===0&&!s&&(n.next_in_index=0,s=!0),u=n.inflate(o),s&&u===-5){if(n.avail_in!==0)throw new Error("inflating: bad input")}else if(u!==0&&u!==1)throw new Error("inflating: "+n.msg);if((s||u===1)&&n.avail_in===a.length)throw new Error("inflating: bad input");n.next_out_index&&(n.next_out_index===i?d.push(new Uint8Array(r)):d.push(r.subarray(0,n.next_out_index))),f+=n.next_out_index,c&&n.next_in_index>0&&n.next_in_index!=p&&(c(n.next_in_index),p=n.next_in_index)}while(n.avail_in>0||n.avail_out===0);return d.length>1?(h=new Uint8Array(f),d.forEach(function(b){h.set(b,g),g+=b.length})):h=d[0]?new Uint8Array(d[0]):new Uint8Array,h}},t.flush=function(){n.inflateEnd()}}var eSi=y(C(),1);var HTi=y(C(),1);var Rj=new Date(2107,11,31),Vj=new Date(1980,0,1),ri=void 0,Au="undefined",Wg="function";var KTi=y(C(),1);var LF=class{constructor(t){return class extends TransformStream{constructor(n,i){let o=new t(i);super({transform(r,s){s.enqueue(o.append(r))},flush(r){let s=o.flush();s&&r.enqueue(s)}})}}}};var cat=64,Obe=2;try{typeof navigator!=Au&&navigator.hardwareConcurrency&&(Obe=navigator.hardwareConcurrency)}catch{}var lat={chunkSize:512*1024,maxWorkers:Obe,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,workerScripts:ri,CompressionStreamNative:typeof CompressionStream!=Au&&CompressionStream,DecompressionStreamNative:typeof DecompressionStream!=Au&&DecompressionStream},K0=Object.assign({},lat);function RF(){return K0}function bU(e){return Math.max(e.chunkSize,cat)}function wS(e){let{baseURL:t,chunkSize:n,maxWorkers:i,terminateWorkerTimeout:o,useCompressionStream:r,useWebWorkers:s,Deflate:a,Inflate:c,CompressionStream:d,DecompressionStream:u,workerScripts:h}=e;if(z0("baseURL",t),z0("chunkSize",n),z0("maxWorkers",i),z0("terminateWorkerTimeout",o),z0("useCompressionStream",r),z0("useWebWorkers",s),a&&(K0.CompressionStream=new LF(a)),c&&(K0.DecompressionStream=new LF(c)),z0("CompressionStream",d),z0("DecompressionStream",u),h!==ri){let{deflate:p,inflate:g}=h;if((p||g)&&(K0.workerScripts||(K0.workerScripts={})),p){if(!Array.isArray(p))throw new Error("workerScripts.deflate must be an array");K0.workerScripts.deflate=p}if(g){if(!Array.isArray(g))throw new Error("workerScripts.inflate must be an array");K0.workerScripts.inflate=g}}}function z0(e,t){t!==ri&&(K0[e]=t)}var nSi=y(C(),1);var zSi=y(C(),1);var vSi=y(C(),1);var FSi=y(C(),1);var aSi=y(C(),1);var oSi=y(C(),1),Hbe=[];for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t&1?t=t>>>1^3988292384:t=t>>>1;Hbe[e]=t}var Fg=class{constructor(t){this.crc=t||-1}append(t){let n=this.crc|0;for(let i=0,o=t.length|0;i<o;i++)n=n>>>8^Hbe[(n^t[i])&255];this.crc=n}get(){return~this.crc}};var VF=class extends TransformStream{constructor(){let t,n=new Fg;super({transform(i,o){n.append(i),o.enqueue(i)},flush(){let i=new Uint8Array(4);new DataView(i.buffer).setUint32(0,n.get()),t.value=i}}),t=this}};var SSi=y(C(),1);var dSi=y(C(),1);function XS(e){if(typeof TextEncoder==Au){e=unescape(encodeURIComponent(e));let t=new Uint8Array(e.length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}else return new TextEncoder().encode(e)}var mSi=y(C(),1),Pl={concat(e,t){if(e.length===0||t.length===0)return e.concat(t);let n=e[e.length-1],i=Pl.getPartial(n);return i===32?e.concat(t):Pl._shiftRight(t,i,n|0,e.slice(0,e.length-1))},bitLength(e){let t=e.length;if(t===0)return 0;let n=e[t-1];return(t-1)*32+Pl.getPartial(n)},clamp(e,t){if(e.length*32<t)return e;e=e.slice(0,Math.ceil(t/32));let n=e.length;return t=t&31,n>0&&t&&(e[n-1]=Pl.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial(e,t,n){return e===32?t:(n?t|0:t<<32-e)+e*1099511627776},getPartial(e){return Math.round(e/1099511627776)||32},_shiftRight(e,t,n,i){for(i===void 0&&(i=[]);t>=32;t-=32)i.push(n),n=0;if(t===0)return i.concat(e);for(let s=0;s<e.length;s++)i.push(n|e[s]>>>t),n=e[s]<<32-t;let o=e.length?e[e.length-1]:0,r=Pl.getPartial(o);return i.push(Pl.partial(t+r&31,t+r>32?n:i.pop(),1)),i}},GF={bytes:{fromBits(e){let n=Pl.bitLength(e)/8,i=new Uint8Array(n),o;for(let r=0;r<n;r++)(r&3)===0&&(o=e[r/4]),i[r]=o>>>24,o<<=8;return i},toBits(e){let t=[],n,i=0;for(n=0;n<e.length;n++)i=i<<8|e[n],(n&3)===3&&(t.push(i),i=0);return n&3&&t.push(Pl.partial(8*(n&3),i)),t}}},zbe={};zbe.sha1=class{constructor(e){let t=this;t.blockSize=512,t._init=[1732584193,4023233417,2562383102,271733878,3285377520],t._key=[1518500249,1859775393,2400959708,3395469782],e?(t._h=e._h.slice(0),t._buffer=e._buffer.slice(0),t._length=e._length):t.reset()}reset(){let e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){let t=this;typeof e=="string"&&(e=GF.utf8String.toBits(e));let n=t._buffer=Pl.concat(t._buffer,e),i=t._length,o=t._length=i+Pl.bitLength(e);if(o>9007199254740991)throw new Error("Cannot hash more than 2^53 - 1 bits");let r=new Uint32Array(n),s=0;for(let a=t.blockSize+i-(t.blockSize+i&t.blockSize-1);a<=o;a+=t.blockSize)t._block(r.subarray(16*s,16*(s+1))),s+=1;return n.splice(0,16*s),t}finalize(){let e=this,t=e._buffer,n=e._h;t=Pl.concat(t,[Pl.partial(1,1)]);for(let i=t.length+2;i&15;i++)t.push(0);for(t.push(Math.floor(e._length/4294967296)),t.push(e._length|0);t.length;)e._block(t.splice(0,16));return e.reset(),n}_f(e,t,n,i){if(e<=19)return t&n|~t&i;if(e<=39)return t^n^i;if(e<=59)return t&n|t&i|n&i;if(e<=79)return t^n^i}_S(e,t){return t<<e|t>>>32-e}_block(e){let t=this,n=t._h,i=Array(80);for(let d=0;d<16;d++)i[d]=e[d];let o=n[0],r=n[1],s=n[2],a=n[3],c=n[4];for(let d=0;d<=79;d++){d>=16&&(i[d]=t._S(1,i[d-3]^i[d-8]^i[d-14]^i[d-16]));let u=t._S(5,o)+t._f(d,r,s,a)+c+i[d]+t._key[Math.floor(d/20)]|0;c=a,a=s,s=t._S(30,r),r=o,o=u}n[0]=n[0]+o|0,n[1]=n[1]+r|0,n[2]=n[2]+s|0,n[3]=n[3]+a|0,n[4]=n[4]+c|0}};var Gj={};Gj.aes=class{constructor(e){let t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();let n=t._tables[0][4],i=t._tables[1],o=e.length,r,s,a,c=1;if(o!==4&&o!==6&&o!==8)throw new Error("invalid aes key size");for(t._key=[s=e.slice(0),a=[]],r=o;r<4*o+28;r++){let d=s[r-1];(r%o===0||o===8&&r%o===4)&&(d=n[d>>>24]<<24^n[d>>16&255]<<16^n[d>>8&255]<<8^n[d&255],r%o===0&&(d=d<<8^d>>>24^c<<24,c=c<<1^(c>>7)*283)),s[r]=s[r-o]^d}for(let d=0;r;d++,r--){let u=s[d&3?r:r-4];r<=4||d<4?a[d]=u:a[d]=i[0][n[u>>>24]]^i[1][n[u>>16&255]]^i[2][n[u>>8&255]]^i[3][n[u&255]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){let e=this._tables[0],t=this._tables[1],n=e[4],i=t[4],o=[],r=[],s,a,c,d;for(let u=0;u<256;u++)r[(o[u]=u<<1^(u>>7)*283)^u]=u;for(let u=s=0;!n[u];u^=a||1,s=r[s]||1){let h=s^s<<1^s<<2^s<<3^s<<4;h=h>>8^h&255^99,n[u]=h,i[h]=u,d=o[c=o[a=o[u]]];let p=d*16843009^c*65537^a*257^u*16843008,g=o[h]*257^h*16843008;for(let f=0;f<4;f++)e[f][u]=g=g<<24^g>>>8,t[f][h]=p=p<<24^p>>>8}for(let u=0;u<5;u++)e[u]=e[u].slice(0),t[u]=t[u].slice(0)}_crypt(e,t){if(e.length!==4)throw new Error("invalid aes block size");let n=this._key[t],i=n.length/4-2,o=[0,0,0,0],r=this._tables[t],s=r[0],a=r[1],c=r[2],d=r[3],u=r[4],h=e[0]^n[0],p=e[t?3:1]^n[1],g=e[2]^n[2],f=e[t?1:3]^n[3],b=4,x,I,_;for(let E=0;E<i;E++)x=s[h>>>24]^a[p>>16&255]^c[g>>8&255]^d[f&255]^n[b],I=s[p>>>24]^a[g>>16&255]^c[f>>8&255]^d[h&255]^n[b+1],_=s[g>>>24]^a[f>>16&255]^c[h>>8&255]^d[p&255]^n[b+2],f=s[f>>>24]^a[h>>16&255]^c[p>>8&255]^d[g&255]^n[b+3],b+=4,h=x,p=I,g=_;for(let E=0;E<4;E++)o[t?3&-E:E]=u[h>>>24]<<24^u[p>>16&255]<<16^u[g>>8&255]<<8^u[f&255]^n[b++],x=h,h=p,p=g,g=f,f=x;return o}};var Kbe={getRandomValues(e){let t=new Uint32Array(e.buffer),n=i=>{let o=987654321,r=4294967295;return function(){return o=36969*(o&65535)+(o>>16)&r,i=18e3*(i&65535)+(i>>16)&r,(((o<<16)+i&r)/4294967296+.5)*(Math.random()>.5?1:-1)}};for(let i=0,o;i<e.length;i+=4){let r=n((o||Math.random())*4294967296);o=r()*987654071,t[i/4]=r()*4294967296|0}return e}},Zj={};Zj.ctrGladman=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if((e>>24&255)===255){let t=e>>16&255,n=e>>8&255,i=e&255;t===255?(t=0,n===255?(n=0,i===255?i=0:++i):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=i}else e+=1<<24;return e}incCounter(e){(e[0]=this.incWord(e[0]))===0&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let i;if(!(i=t.length))return[];let o=Pl.bitLength(t);for(let r=0;r<i;r+=4){this.incCounter(n);let s=e.encrypt(n);t[r]^=s[0],t[r+1]^=s[1],t[r+2]^=s[2],t[r+3]^=s[3]}return Pl.clamp(t,o)}};var J0={importKey(e){return new J0.hmacSha1(GF.bytes.toBits(e))},pbkdf2(e,t,n,i){if(n=n||1e4,i<0||n<0)throw new Error("invalid params to pbkdf2");let o=(i>>5)+1<<2,r,s,a,c,d,u=new ArrayBuffer(o),h=new DataView(u),p=0,g=Pl;for(t=GF.bytes.toBits(t),d=1;p<(o||1);d++){for(r=s=e.encrypt(g.concat(t,[d])),a=1;a<n;a++)for(s=e.encrypt(s),c=0;c<s.length;c++)r[c]^=s[c];for(a=0;p<(o||1)&&a<r.length;a++)h.setInt32(p,r[a]),p+=4}return u.slice(0,i/8)}};J0.hmacSha1=class{constructor(e){let t=this,n=t._hash=zbe.sha1,i=[[],[]];t._baseHash=[new n,new n];let o=t._baseHash[0].blockSize/32;e.length>o&&(e=new n().update(e).finalize());for(let r=0;r<o;r++)i[0][r]=e[r]^909522486,i[1][r]=e[r]^1549556828;t._baseHash[0].update(i[0]),t._baseHash[1].update(i[1]),t._resultHash=new n(t._baseHash[0])}reset(){let e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){let t=this;t._updated=!0,t._resultHash.update(e)}digest(){let e=this,t=e._resultHash.finalize(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new Error("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}};var CSi=y(C(),1);var dat=typeof crypto!=Au&&typeof crypto.getRandomValues==Wg,j0="Invalid password",lI="Invalid signature",Pg="zipjs-abort-check-password";function yU(e){return dat?crypto.getRandomValues(e):Kbe.getRandomValues(e)}var WS=16,uat="raw",qbe={name:"PBKDF2"},mat={name:"HMAC"},hat="SHA-1",fat=Object.assign({hash:mat},qbe),Bj=Object.assign({iterations:1e3,hash:{name:hat}},qbe),pat=["deriveBits"],BF=[8,12,16],ZF=[16,24,32],q0=10,Aat=[0,0,0,0],IU=typeof crypto!=Au,WF=IU&&crypto.subtle,$be=IU&&typeof WF!=Au,yp=GF.bytes,gat=Gj.aes,bat=Zj.ctrGladman,yat=J0.hmacSha1,Jbe=IU&&$be&&typeof WF.importKey==Wg,jbe=IU&&$be&&typeof WF.deriveBits==Wg,CU=class extends TransformStream{constructor({password:t,rawPassword:n,signed:i,encryptionStrength:o,checkPasswordOnly:r}){super({start(){Object.assign(this,{ready:new Promise(s=>this.resolveReady=s),password:n0e(t,n),signed:i,strength:o-1,pending:new Uint8Array})},async transform(s,a){let c=this,{password:d,strength:u,resolveReady:h,ready:p}=c;d?(await Cat(c,u,d,Bm(s,0,BF[u]+2)),s=Bm(s,BF[u]+2),r?a.error(new Error(Pg)):h()):await p;let g=new Uint8Array(s.length-q0-(s.length-q0)%WS);a.enqueue(e0e(c,s,g,0,q0,!0))},async flush(s){let{signed:a,ctr:c,hmac:d,pending:u,ready:h}=this;if(d&&c){await h;let p=Bm(u,0,u.length-q0),g=Bm(u,u.length-q0),f=new Uint8Array;if(p.length){let b=XF(yp,p);d.update(b);let x=c.update(b);f=wF(yp,x)}if(a){let b=Bm(wF(yp,d.digest()),0,q0);for(let x=0;x<q0;x++)if(b[x]!=g[x])throw new Error(lI)}s.enqueue(f)}}})}},xU=class extends TransformStream{constructor({password:t,rawPassword:n,encryptionStrength:i}){let o;super({start(){Object.assign(this,{ready:new Promise(r=>this.resolveReady=r),password:n0e(t,n),strength:i-1,pending:new Uint8Array})},async transform(r,s){let a=this,{password:c,strength:d,resolveReady:u,ready:h}=a,p=new Uint8Array;c?(p=await xat(a,d,c),u()):await h;let g=new Uint8Array(p.length+r.length-r.length%WS);g.set(p,0),s.enqueue(e0e(a,r,g,p.length,0))},async flush(r){let{ctr:s,hmac:a,pending:c,ready:d}=this;if(a&&s){await d;let u=new Uint8Array;if(c.length){let h=s.update(XF(yp,c));a.update(h),u=wF(yp,h)}o.signature=wF(yp,a.digest()).slice(0,q0),r.enqueue(wj(u,o.signature))}}}),o=this}};function e0e(e,t,n,i,o,r){let{ctr:s,hmac:a,pending:c}=e,d=t.length-o;c.length&&(t=wj(c,t),n=Eat(n,d-d%WS));let u;for(u=0;u<=d-WS;u+=WS){let h=XF(yp,Bm(t,u,u+WS));r&&a.update(h);let p=s.update(h);r||a.update(p),n.set(wF(yp,p),u+i)}return e.pending=Bm(t,u),n}async function Cat(e,t,n,i){let o=await t0e(e,t,n,Bm(i,0,BF[t])),r=Bm(i,BF[t]);if(o[0]!=r[0]||o[1]!=r[1])throw new Error(j0)}async function xat(e,t,n){let i=yU(new Uint8Array(BF[t])),o=await t0e(e,t,n,i);return wj(i,o)}async function t0e(e,t,n,i){e.password=null;let o=await Iat(uat,n,fat,!1,pat),r=await _at(Object.assign({salt:i},Bj),o,8*(ZF[t]*2+2)),s=new Uint8Array(r),a=XF(yp,Bm(s,0,ZF[t])),c=XF(yp,Bm(s,ZF[t],ZF[t]*2)),d=Bm(s,ZF[t]*2);return Object.assign(e,{keys:{key:a,authentication:c,passwordVerification:d},ctr:new bat(new gat(a),Array.from(Aat)),hmac:new yat(c)}),d}async function Iat(e,t,n,i,o){if(Jbe)try{return await WF.importKey(e,t,n,i,o)}catch{return Jbe=!1,J0.importKey(t)}else return J0.importKey(t)}async function _at(e,t,n){if(jbe)try{return await WF.deriveBits(e,t,n)}catch{return jbe=!1,J0.pbkdf2(t,e.salt,Bj.iterations,n)}else return J0.pbkdf2(t,e.salt,Bj.iterations,n)}function n0e(e,t){return t===ri?XS(e):t}function wj(e,t){let n=e;return e.length+t.length&&(n=new Uint8Array(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function Eat(e,t){if(t&&t>e.length){let n=e;e=new Uint8Array(t),e.set(n,0)}return e}function Bm(e,t,n){return e.subarray(t,n)}function wF(e,t){return e.fromBits(t)}function XF(e,t){return e.toBits(t)}var GSi=y(C(),1);var FS=12,_U=class extends TransformStream{constructor({password:t,passwordVerification:n,checkPasswordOnly:i}){super({start(){Object.assign(this,{password:t,passwordVerification:n}),s0e(this,t)},transform(o,r){let s=this;if(s.password){let a=i0e(s,o.subarray(0,FS));if(s.password=null,a[FS-1]!=s.passwordVerification)throw new Error(j0);o=o.subarray(FS)}i?r.error(new Error(Pg)):r.enqueue(i0e(s,o))}})}},EU=class extends TransformStream{constructor({password:t,passwordVerification:n}){super({start(){Object.assign(this,{password:t,passwordVerification:n}),s0e(this,t)},transform(i,o){let r=this,s,a;if(r.password){r.password=null;let c=yU(new Uint8Array(FS));c[FS-1]=r.passwordVerification,s=new Uint8Array(i.length+c.length),s.set(o0e(r,c),0),a=FS}else s=new Uint8Array(i.length),a=0;s.set(o0e(r,i),a),o.enqueue(s)}})}};function i0e(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=a0e(e)^t[i],Xj(e,n[i]);return n}function o0e(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=a0e(e)^t[i],Xj(e,t[i]);return n}function s0e(e,t){let n=[305419896,591751049,878082192];Object.assign(e,{keys:n,crcKey0:new Fg(n[0]),crcKey2:new Fg(n[2])});for(let i=0;i<t.length;i++)Xj(e,t.charCodeAt(i))}function Xj(e,t){let[n,i,o]=e.keys;e.crcKey0.append([t]),n=~e.crcKey0.get(),i=r0e(Math.imul(r0e(i+c0e(n)),134775813)+1),e.crcKey2.append([i>>>24]),o=~e.crcKey2.get(),e.keys=[n,i,o]}function a0e(e){let t=e.keys[2]|2;return c0e(Math.imul(t,t^1)>>>8)}function c0e(e){return e&255}function r0e(e){return e&4294967295}var FF="Invalid uncompressed size",Tat="deflate-raw",TU=class extends TransformStream{constructor(t,{chunkSize:n,CompressionStream:i,CompressionStreamNative:o}){super({});let{compressed:r,encrypted:s,useCompressionStream:a,zipCrypto:c,signed:d,level:u}=t,h=this,p,g,f=super.readable;(!s||c)&&d&&(p=new VF,f=$0(f,p)),r&&(f=d0e(f,a,{level:u,chunkSize:n},o,i)),s&&(c?f=$0(f,new EU(t)):(g=new xU(t),f=$0(f,g))),l0e(h,f,()=>{let b;s&&!c&&(b=g.signature),(!s||c)&&d&&(b=new DataView(p.value.buffer).getUint32(0)),h.signature=b})}},SU=class extends TransformStream{constructor(t,{chunkSize:n,DecompressionStream:i,DecompressionStreamNative:o}){super({});let{zipCrypto:r,encrypted:s,signed:a,signature:c,compressed:d,useCompressionStream:u}=t,h,p,g=super.readable;s&&(r?g=$0(g,new _U(t)):(p=new CU(t),g=$0(g,p))),d&&(g=d0e(g,u,{chunkSize:n},o,i)),(!s||r)&&a&&(h=new VF,g=$0(g,h)),l0e(this,g,()=>{if((!s||r)&&a){let f=new DataView(h.value.buffer);if(c!=f.getUint32(0,!1))throw new Error(lI)}})}};function l0e(e,t,n){t=$0(t,new TransformStream({flush:n})),Object.defineProperty(e,"readable",{get(){return t}})}function d0e(e,t,n,i,o){let r=t&&i?i:o;return $0(e,new r(Tat,n))}function $0(e,t){return e.pipeThrough(t)}var u0e="message",m0e="start",h0e="pull",Wj="data",f0e="ack",Fj="close",VU="deflate",GU="inflate";var LU=class extends TransformStream{constructor(t,n){super({});let i=this,{codecType:o}=t,r;o.startsWith(VU)?r=TU:o.startsWith(GU)&&(r=SU),i.outputSize=0;let s=0,a=new r(t,n),c=super.readable,d=new TransformStream({transform(h,p){h&&h.length&&(s+=h.length,p.enqueue(h))},flush(){Object.assign(i,{inputSize:s})}}),u=new TransformStream({transform(h,p){if(h&&h.length&&(p.enqueue(h),i.outputSize+=h.length,t.outputSize&&i.outputSize>t.outputSize))throw new Error(FF)},flush(){let{signature:h}=a;Object.assign(i,{signature:h,inputSize:s})}});Object.defineProperty(i,"readable",{get(){return c.pipeThrough(d).pipeThrough(a).pipeThrough(u)}})}},RU=class extends TransformStream{constructor(t){let n;super({transform:i,flush(o){n&&n.length&&o.enqueue(n)}});function i(o,r){if(n){let s=new Uint8Array(n.length+o.length);s.set(n),s.set(o,n.length),o=s,n=null}o.length>t?(r.enqueue(o.slice(0,t)),i(o.slice(t),r)):n=o}}};var USi=y(C(),1);var g0e=typeof Worker!=Au;var PS=class{constructor(t,{readable:n,writable:i},{options:o,config:r,streamOptions:s,useWebWorkers:a,transferStreams:c,scripts:d},u){let{signal:h}=s;return Object.assign(t,{busy:!0,readable:n.pipeThrough(new RU(r.chunkSize)).pipeThrough(new Mj(s),{signal:h}),writable:i,options:Object.assign({},o),scripts:d,transferStreams:c,terminate(){return new Promise(p=>{let{worker:g,busy:f}=t;g?(f?t.resolveTerminated=p:(g.terminate(),p()),t.interface=null):p()})},onTaskFinished(){let{resolveTerminated:p}=t;p&&(t.resolveTerminated=null,t.terminated=!0,t.worker.terminate(),p()),t.busy=!1,u(t)}}),(a&&g0e?Sat:b0e)(t,r)}},Mj=class extends TransformStream{constructor({onstart:t,onprogress:n,size:i,onend:o}){let r=0;super({async start(){t&&await Pj(t,i)},async transform(s,a){r+=s.length,n&&await Pj(n,r,i),a.enqueue(s)},async flush(){o&&await Pj(o,r)}})}};async function Pj(e,...t){try{await e(...t)}catch{}}function b0e(e,t){return{run:()=>Lat(e,t)}}function Sat(e,t){let{baseURL:n,chunkSize:i}=t;if(!e.interface){let o;try{o=Gat(e.scripts[0],n,e)}catch{return g0e=!1,b0e(e,t)}Object.assign(e,{worker:o,interface:{run:()=>Rat(e,{chunkSize:i})}})}return e.interface}async function Lat({options:e,readable:t,writable:n,onTaskFinished:i},o){let r;try{r=new LU(e,o),await t.pipeThrough(r).pipeTo(n,{preventClose:!0,preventAbort:!0});let{signature:s,inputSize:a,outputSize:c}=r;return{signature:s,inputSize:a,outputSize:c}}catch(s){throw r&&(s.outputSize=r.outputSize),s}finally{i()}}async function Rat(e,t){let n,i,o=new Promise((p,g)=>{n=p,i=g});Object.assign(e,{reader:null,writer:null,resolveResult:n,rejectResult:i,result:o});let{readable:r,options:s,scripts:a}=e,{writable:c,closed:d}=Vat(e.writable),u=ZU({type:m0e,scripts:a.slice(1),options:s,config:t,readable:r,writable:c},e);u||Object.assign(e,{reader:r.getReader(),writer:c.getWriter()});let h=await o;return u||await c.getWriter().close(),await d,h}function Vat(e){let t,n=new Promise(o=>t=o);return{writable:new WritableStream({async write(o){let r=e.getWriter();await r.ready,await r.write(o),r.releaseLock()},close(){t()},abort(o){return e.getWriter().abort(o)}}),closed:n}}var p0e=!0,A0e=!0;function Gat(e,t,n){let i={type:"module"},o,r;typeof e==Wg&&(e=e());try{o=new URL(e,t)}catch{o=e}if(p0e)try{r=new Worker(o)}catch{p0e=!1,r=new Worker(o,i)}else r=new Worker(o,i);return r.addEventListener(u0e,s=>Zat(s,n)),r}function ZU(e,{worker:t,writer:n,onTaskFinished:i,transferStreams:o}){try{let{value:r,readable:s,writable:a}=e,c=[];if(r&&(r.byteLength<r.buffer.byteLength?e.value=r.buffer.slice(0,r.byteLength):e.value=r.buffer,c.push(e.value)),o&&A0e?(s&&c.push(s),a&&c.push(a)):e.readable=e.writable=null,c.length)try{return t.postMessage(e,c),!0}catch{A0e=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(r){throw n&&n.releaseLock(),i(),r}}async function Zat({data:e},t){let{type:n,value:i,messageId:o,result:r,error:s}=e,{reader:a,writer:c,resolveResult:d,rejectResult:u,onTaskFinished:h}=t;try{if(s){let{message:g,stack:f,code:b,name:x,outputSize:I}=s,_=new Error(g);Object.assign(_,{stack:f,code:b,name:x,outputSize:I}),p(_)}else{if(n==h0e){let{value:g,done:f}=await a.read();ZU({type:Wj,value:g,done:f,messageId:o},t)}n==Wj&&(await c.ready,await c.write(new Uint8Array(i)),ZU({type:f0e,messageId:o},t)),n==Fj&&p(null,r)}}catch(g){ZU({type:Fj,messageId:o},t),p(g)}function p(g,f){g?u(g):d(f),c&&c.releaseLock(),h()}}var dI=[],vj=[];var y0e=0;async function BU(e,t){let{options:n,config:i}=t,{transferStreams:o,useWebWorkers:r,useCompressionStream:s,codecType:a,compressed:c,signed:d,encrypted:u}=n,{workerScripts:h,maxWorkers:p}=i;t.transferStreams=o||o===ri;let g=!c&&!d&&!u&&!t.transferStreams;return t.useWebWorkers=!g&&(r||r===ri&&i.useWebWorkers),t.scripts=t.useWebWorkers&&h?h[a]:[],n.useCompressionStream=s||s===ri&&i.useCompressionStream,(await f()).run();async function f(){let x=dI.find(I=>!I.busy);if(x)return C0e(x),new PS(x,e,t,b);if(dI.length<p){let I={indexWorker:y0e};return y0e++,dI.push(I),new PS(I,e,t,b)}else return new Promise(I=>vj.push({resolve:I,stream:e,workerOptions:t}))}function b(x){if(vj.length){let[{resolve:I,stream:_,workerOptions:E}]=vj.splice(0,1);I(new PS(x,_,E,b))}else x.worker?(C0e(x),Bat(x,t)):dI=dI.filter(I=>I!=x)}}function Bat(e,t){let{config:n}=t,{terminateWorkerTimeout:i}=n;Number.isFinite(i)&&i>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{dI=dI.filter(o=>o!=e);try{await e.terminate()}catch{}},i))}function C0e(e){let{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}var qSi=y(C(),1);var wat="Writer iterator completed too soon",Xat="Writer not initialized",Wat="text/plain";var Fat="Content-Type";var Pat=64*1024,Qj="writable",MS=class{constructor(){this.size=0}init(){this.initialized=!0}},wU=class extends MS{get readable(){let t=this,{chunkSize:n=Pat}=t,i=new ReadableStream({start(){this.chunkOffset=0},async pull(o){let{offset:r=0,size:s,diskNumberStart:a}=i,{chunkOffset:c}=this,d=s===ri?n:Math.min(n,s-c),u=await za(t,r+c,d,a);o.enqueue(u),c+n>s||s===ri&&!u.length&&d?o.close():this.chunkOffset+=n}});return i}},Nj=class extends MS{constructor(){super();let t=this,n=new WritableStream({write(i){if(!t.initialized)throw new Error(Xat);return t.writeUint8Array(i)}});Object.defineProperty(t,Qj,{get(){return n}})}writeUint8Array(){}};var XU=class extends Nj{constructor(t){super(),Object.assign(this,{data:"data:"+(t||"")+";base64,",pending:[]})}writeUint8Array(t){let n=this,i=0,o=n.pending,r=n.pending.length;for(n.pending="",i=0;i<Math.floor((r+t.length)/3)*3-r;i++)o+=String.fromCharCode(t[i]);for(;i<t.length;i++)n.pending+=String.fromCharCode(t[i]);o.length&&(o.length>2?n.data+=btoa(o):n.pending+=o)}getData(){return this.data+btoa(this.pending)}},Mg=class extends wU{constructor(t){super(),Object.assign(this,{blob:t,size:t.size})}async readUint8Array(t,n){let i=this,o=t+n,s=await(t||o<i.size?i.blob.slice(t,o):i.blob).arrayBuffer();return s.byteLength>n&&(s=s.slice(t,o)),new Uint8Array(s)}},PF=class extends MS{constructor(t){super();let n=this,i=new TransformStream,o=[];t&&o.push([Fat,t]),Object.defineProperty(n,Qj,{get(){return i.writable}}),n.blob=new Response(i.readable,{headers:o}).blob()}getData(){return this.blob}},WU=class extends Mg{constructor(t){super(new Blob([t],{type:Wat}))}},FU=class extends PF{constructor(t){super(t),Object.assign(this,{encoding:t,utf8:!t||t.toLowerCase()=="utf-8"})}async getData(){let{encoding:t,utf8:n}=this,i=await super.getData();if(i.text&&n)return i.text();{let o=new FileReader;return new Promise((r,s)=>{Object.assign(o,{onload:({target:a})=>r(a.result),onerror:()=>s(o.error)}),o.readAsText(i,t)})}}};var Dj=class extends wU{constructor(t){super(),this.readers=t}async init(){let t=this,{readers:n}=t;t.lastDiskNumber=0,t.lastDiskOffset=0,await Promise.all(n.map(async(i,o)=>{await i.init(),o!=n.length-1&&(t.lastDiskOffset+=i.size),t.size+=i.size})),super.init()}async readUint8Array(t,n,i=0){let o=this,{readers:r}=this,s,a=i;a==-1&&(a=r.length-1);let c=t;for(;r[a]&&c>=r[a].size;)c-=r[a].size,a++;let d=r[a];if(d){let u=d.size;if(c+n<=u)s=await za(d,c,n);else{let h=u-c;s=new Uint8Array(n);let p=await za(d,c,h);s.set(p,0);let g=await o.readUint8Array(t+h,n-h,i);s.set(g,h),p.length+g.length<n&&(s=s.subarray(0,p.length+g.length))}}else s=new Uint8Array;return o.lastDiskNumber=Math.max(a,o.lastDiskNumber),s}},PU=class extends MS{constructor(t,n=4294967295){super();let i=this;Object.assign(i,{diskNumber:0,diskOffset:0,size:0,maxSize:n,availableSize:n});let o,r,s,a=new WritableStream({async write(u){let{availableSize:h}=i;if(s)u.length>=h?(await c(u.subarray(0,h)),await d(),i.diskOffset+=o.size,i.diskNumber++,s=null,await this.write(u.subarray(h))):await c(u);else{let{value:p,done:g}=await t.next();if(g&&!p)throw new Error(wat);o=p,o.size=0,o.maxSize&&(i.maxSize=o.maxSize),i.availableSize=i.maxSize,await xp(o),r=p.writable,s=r.getWriter(),await this.write(u)}},async close(){await s.ready,await d()}});Object.defineProperty(i,Qj,{get(){return a}});async function c(u){let h=u.length;h&&(await s.ready,await s.write(u),o.size+=h,i.size+=h,i.availableSize-=h)}async function d(){await s.close()}}},uI=class{constructor(t){return Array.isArray(t)&&(t=new Dj(t)),t instanceof ReadableStream&&(t={readable:t}),t}},vS=class{constructor(t){return t.writable===ri&&typeof t.next==Wg&&(t=new PU(t)),t instanceof WritableStream&&(t={writable:t}),t.size===ri&&(t.size=0),t instanceof PU||Object.assign(t,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),t}};async function xp(e,t){if(e.init&&!e.initialized)await e.init(t);else return Promise.resolve()}function za(e,t,n,i){return e.readUint8Array(t,n,i)}var gLi=y(C(),1);var iLi=y(C(),1);var eLi=y(C(),1),x0e="\0\u263A\u263B\u2665\u2666\u2663\u2660\u2022\u25D8\u25CB\u25D9\u2642\u2640\u266A\u266B\u263C\u25BA\u25C4\u2195\u203C\xB6\xA7\u25AC\u21A8\u2191\u2193\u2192\u2190\u221F\u2194\u25B2\u25BC !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u2302\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0 ".split(""),Mat=x0e.length==256;function I0e(e){if(Mat){let t="";for(let n=0;n<e.length;n++)t+=x0e[e[n]];return t}else return new TextDecoder().decode(e)}function MF(e,t){return t&&t.trim().toLowerCase()=="cp437"?I0e(e):new TextDecoder(t).decode(e)}var rLi=y(C(),1),Uj="filename",kj="rawFilename",vF="comment",Yj="rawComment",NF="uncompressedSize",Oj="compressedSize",Hj="offset",MU="diskNumberStart",NS="lastModDate",vU="rawLastModDate",DF="lastAccessDate",_0e="rawLastAccessDate",QF="creationDate",E0e="rawCreationDate",zj="internalFileAttribute",Kj="internalFileAttributes",Jj="externalFileAttribute",jj="externalFileAttributes",qj="msDosCompatible",NU="zip64",$j="encrypted",e8="version",t8="versionMadeBy",n8="zipCrypto",UF="directory",i8="executable",o8="compressionMethod",r8="signature",s8="extraField",vat=[Uj,kj,Oj,NF,NS,vU,vF,Yj,DF,QF,Hj,MU,MU,zj,Kj,Jj,jj,qj,NU,$j,e8,t8,n8,UF,i8,o8,r8,s8,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"],ey=class{constructor(t){vat.forEach(n=>this[n]=t[n])}};var aLi=y(C(),1),T0e="filenameEncoding",S0e="commentEncoding",L0e="decodeText",R0e="extractPrependedData",V0e="extractAppendedData",DU="password",QU="rawPassword",UU="passThrough",kU="signal",G0e="checkPasswordOnly",Z0e="checkOverlappingEntryOnly",B0e="checkOverlappingEntry",w0e="checkSignature",YU="useWebWorkers",OU="useCompressionStream",X0e="transferStreams",HU="preventClose",W0e="encryptionStrength",F0e="extendedTimestamp",P0e="keepOrder",M0e="level",v0e="bufferedWrite",N0e="dataDescriptorSignature",D0e="useUnicodeFileNames",Q0e="dataDescriptor",a8="supportZip64SplitFile",U0e="encodeText",c8="offset",l8="usdz";var d8="File format is not recognized",kat="End of central directory not found",Yat="End of Zip64 central directory locator not found",Oat="Central directory header not found",Hat="Local file header not found",zat="Zip64 extra field not found",Kat="File contains encrypted entry",Jat="Encryption method not supported",k0e="Compression method not supported",Y0e="Split zip file",jat="Overlapping entry found",O0e="utf-8",H0e="cp437",qat=[[NF,4294967295],[Oj,4294967295],[Hj,4294967295],[MU,65535]],$at={65535:{getValue:Gr,bytes:4},4294967295:{getValue:QS,bytes:8}},kS=class{constructor(t,n={}){Object.assign(this,{reader:new uI(t),options:n,config:RF(),readRanges:[]})}async*getEntriesGenerator(t={}){let n=this,{reader:i}=n,{config:o}=n;if(await xp(i),(i.size===ri||!i.readUint8Array)&&(i=new Mg(await new Response(i.readable).blob()),await xp(i)),i.size<22)throw new Error(d8);i.chunkSize=bU(o);let r=await rct(i,101010256,i.size,22,65535*16);if(!r){let P=await za(i,0,4),A=Yr(P);throw Gr(A)==134695760?new Error(Y0e):new Error(kat)}let s=Yr(r),a=Gr(s,12),c=Gr(s,16),d=r.offset,u=Ka(s,20),h=d+22+u,p=Ka(s,4),g=i.lastDiskNumber||0,f=Ka(s,6),b=Ka(s,8),x=0,I=0;if(c==4294967295||a==4294967295||b==65535||f==65535){let P=await za(i,r.offset-20,20),A=Yr(P);if(Gr(A,0)==117853008){c=QS(A,8);let T=await za(i,c,56,-1),L=Yr(T),V=r.offset-20-56;if(Gr(L,0)!=101075792&&c!=V){let W=c;c=V,c>W&&(x=c-W),T=await za(i,c,56,-1),L=Yr(T)}if(Gr(L,0)!=101075792)throw new Error(Yat);p==65535&&(p=Gr(L,16)),f==65535&&(f=Gr(L,20)),b==65535&&(b=QS(L,32)),a==4294967295&&(a=QS(L,40)),c-=a}}if(c>=i.size&&(x=i.size-c-a-22,c=i.size-a-22),g!=p)throw new Error(Y0e);if(c<0)throw new Error(d8);let _=0,E=await za(i,c,a,f),S=Yr(E);if(a){let P=r.offset-a;if(Gr(S,_)!=33639248&&c!=P){let A=c;c=P,c>A&&(x+=c-A),E=await za(i,c,a,f),S=Yr(E)}}let R=r.offset-c-(i.lastDiskOffset||0);if(a!=R&&R>=0&&(a=R,E=await za(i,c,a,f),S=Yr(E)),c<0||c>=i.size)throw new Error(d8);let G=Ac(n,t,T0e),B=Ac(n,t,S0e);for(let P=0;P<b;P++){let A=new m8(i,o,n.options);if(Gr(S,_)!=33639248)throw new Error(Oat);K0e(A,S,_+6);let T=!!A.bitFlag.languageEncodingFlag,L=_+46,V=L+A.filenameLength,W=V+A.extraFieldLength,M=Ka(S,_+4),Q=M>>8==0,N=M>>8==3,k=E.subarray(L,V),v=Ka(S,_+32),O=W+v,H=E.subarray(W,O),ee=T,K=T,te=Gr(S,_+38),q=Q&&(DS(S,_+38)&16)==16||N&&(te>>16&61440)==16384||k.length&&k[k.length-1]=="/".charCodeAt(0),pe=N&&(te>>16&73)!=0,ye=Gr(S,_+42)+x;Object.assign(A,{versionMadeBy:M,msDosCompatible:Q,compressedSize:0,uncompressedSize:0,commentLength:v,directory:q,offset:ye,diskNumberStart:Ka(S,_+34),internalFileAttributes:Ka(S,_+36),externalFileAttributes:te,rawFilename:k,filenameUTF8:ee,commentUTF8:K,rawExtraField:E.subarray(V,W),executable:pe}),A.internalFileAttribute=A.internalFileAttributes,A.externalFileAttribute=A.externalFileAttributes;let he=Ac(n,t,L0e)||MF,xe=ee?O0e:G||H0e,Te=K?O0e:B||H0e,Be=he(k,xe);Be===ri&&(Be=MF(k,xe));let Le=he(H,Te);Le===ri&&(Le=MF(H,Te)),Object.assign(A,{rawComment:H,filename:Be,comment:Le,directory:q||Be.endsWith("/")}),I=Math.max(ye,I),J0e(A,A,S,_+6),A.zipCrypto=A.encrypted&&!A.extraFieldAES;let De=new ey(A);De.getData=(je,it)=>A.getData(je,De,n.readRanges,it),De.arrayBuffer=async je=>{let it=new TransformStream,[nn]=await Promise.all([new Response(it.readable).arrayBuffer(),A.getData(it,De,n.readRanges,je)]);return nn},_=O;let{onprogress:Ue}=t;if(Ue)try{await Ue(P+1,b,new ey(A))}catch{}yield De}let w=Ac(n,t,R0e),F=Ac(n,t,V0e);return w&&(n.prependedData=I>0?await za(i,0,I):new Uint8Array),n.comment=u?await za(i,d+22,u):new Uint8Array,F&&(n.appendedData=h<i.size?await za(i,h,i.size-h):new Uint8Array),!0}async getEntries(t={}){let n=[];for await(let i of this.getEntriesGenerator(t))n.push(i);return n}async close(){}};var m8=class{constructor(t,n,i){Object.assign(this,{reader:t,config:n,options:i})}async getData(t,n,i,o={}){let r=this,{reader:s,offset:a,diskNumberStart:c,extraFieldAES:d,extraFieldZip64:u,compressionMethod:h,config:p,bitFlag:g,signature:f,rawLastModDate:b,uncompressedSize:x,compressedSize:I}=r,{dataDescriptor:_}=g,E=n.localDirectory={},S=await za(s,a,30,c),R=Yr(S),G=Ac(r,o,DU),B=Ac(r,o,QU),w=Ac(r,o,UU);if(G=G&&G.length&&G,B=B&&B.length&&B,d&&d.originalCompressionMethod!=99)throw new Error(k0e);if(h!=0&&h!=8&&!w)throw new Error(k0e);if(Gr(R,0)!=67324752)throw new Error(Hat);K0e(E,R,4);let{extraFieldLength:F,filenameLength:P,lastAccessDate:A,creationDate:T}=E;E.rawExtraField=F?await za(s,a+30+P,F,c):new Uint8Array,J0e(r,E,R,4,!0),Object.assign(n,{lastAccessDate:A,creationDate:T});let L=r.encrypted&&E.encrypted&&!w,V=L&&!d;if(w||(n.zipCrypto=V),L){if(!V&&d.strength===ri)throw new Error(Jat);if(!G&&!B)throw new Error(Kat)}let W=a+30+P+F,M=I,Q=s.readable;Object.assign(Q,{diskNumberStart:c,offset:W,size:M});let N=Ac(r,o,kU),k=Ac(r,o,G0e),v=Ac(r,o,B0e),O=Ac(r,o,Z0e);O&&(v=!0);let{onstart:H,onprogress:ee,onend:K}=o,te={options:{codecType:GU,password:G,rawPassword:B,zipCrypto:V,encryptionStrength:d&&d.strength,signed:Ac(r,o,w0e)&&!w,passwordVerification:V&&(_?b>>>8&255:f>>>24&255),outputSize:x,signature:f,compressed:h!=0&&!w,encrypted:r.encrypted&&!w,useWebWorkers:Ac(r,o,YU),useCompressionStream:Ac(r,o,OU),transferStreams:Ac(r,o,X0e),checkPasswordOnly:k},config:p,streamOptions:{signal:N,size:M,onstart:H,onprogress:ee,onend:K}};v&&await oct({reader:s,fileEntry:n,offset:a,diskNumberStart:c,signature:f,compressedSize:I,uncompressedSize:x,dataOffset:W,dataDescriptor:_||E.bitFlag.dataDescriptor,extraFieldZip64:u||E.extraFieldZip64,readRanges:i});let q;try{if(!O){k&&(t=new WritableStream),t=new vS(t),await xp(t,w?I:x),{writable:q}=t;let{outputSize:pe}=await BU({readable:Q,writable:q},te);if(t.size+=pe,pe!=(w?I:x))throw new Error(FF)}}catch(pe){if(pe.outputSize!==ri&&(t.size+=pe.outputSize),!k||pe.message!=Pg)throw pe}finally{!Ac(r,o,HU)&&q&&!q.locked&&await q.getWriter().close()}return k||O?ri:t.getData?t.getData():q}};function K0e(e,t,n){let i=e.rawBitFlag=Ka(t,n+2),o=(i&1)==1,r=Gr(t,n+6);Object.assign(e,{encrypted:o,version:Ka(t,n),bitFlag:{level:(i&6)>>1,dataDescriptor:(i&8)==8,languageEncodingFlag:(i&2048)==2048},rawLastModDate:r,lastModDate:sct(r),filenameLength:Ka(t,n+22),extraFieldLength:Ka(t,n+24)})}function J0e(e,t,n,i,o){let{rawExtraField:r}=t,s=t.extraField=new Map,a=Yr(new Uint8Array(r)),c=0;try{for(;c<r.length;){let I=Ka(a,c),_=Ka(a,c+2);s.set(I,{type:I,data:r.slice(c+4,c+4+_)}),c+=4+_}}catch{}let d=Ka(n,i+4);Object.assign(t,{signature:Gr(n,i+10),compressedSize:Gr(n,i+14),uncompressedSize:Gr(n,i+18)});let u=s.get(1);u&&(ect(u,t),t.extraFieldZip64=u);let h=s.get(28789);h&&(z0e(h,Uj,kj,t,e),t.extraFieldUnicodePath=h);let p=s.get(25461);p&&(z0e(p,vF,Yj,t,e),t.extraFieldUnicodeComment=p);let g=s.get(39169);g?(tct(g,t,d),t.extraFieldAES=g):t.compressionMethod=d;let f=s.get(10);f&&(nct(f,t),t.extraFieldNTFS=f);let b=s.get(21589);b&&(ict(b,t,o),t.extraFieldExtendedTimestamp=b);let x=s.get(6534);x&&(t.extraFieldUSDZ=x)}function ect(e,t){t.zip64=!0;let n=Yr(e.data),i=qat.filter(([o,r])=>t[o]==r);for(let o=0,r=0;o<i.length;o++){let[s,a]=i[o];if(t[s]==a){let c=$at[a];t[s]=e[s]=c.getValue(n,r),r+=c.bytes}else if(e[s])throw new Error(zat)}}function z0e(e,t,n,i,o){let r=Yr(e.data),s=new Fg;s.append(o[n]);let a=Yr(new Uint8Array(4));a.setUint32(0,s.get(),!0);let c=Gr(r,1);Object.assign(e,{version:DS(r,0),[t]:MF(e.data.subarray(5)),valid:!o.bitFlag.languageEncodingFlag&&c==Gr(a,0)}),e.valid&&(i[t]=e[t],i[t+"UTF8"]=!0)}function tct(e,t,n){let i=Yr(e.data),o=DS(i,4);Object.assign(e,{vendorVersion:DS(i,0),vendorId:DS(i,2),strength:o,originalCompressionMethod:n,compressionMethod:Ka(i,5)}),t.compressionMethod=e.compressionMethod}function nct(e,t){let n=Yr(e.data),i=4,o;try{for(;i<e.data.length&&!o;){let r=Ka(n,i),s=Ka(n,i+2);r==1&&(o=e.data.slice(i+4,i+4+s)),i+=4+s}}catch{}try{if(o&&o.length==24){let r=Yr(o),s=r.getBigUint64(0,!0),a=r.getBigUint64(8,!0),c=r.getBigUint64(16,!0);Object.assign(e,{rawLastModDate:s,rawLastAccessDate:a,rawCreationDate:c});let d=u8(s),u=u8(a),h=u8(c),p={lastModDate:d,lastAccessDate:u,creationDate:h};Object.assign(e,p),Object.assign(t,p)}}catch{}}function ict(e,t,n){let i=Yr(e.data),o=DS(i,0),r=[],s=[];n?((o&1)==1&&(r.push(NS),s.push(vU)),(o&2)==2&&(r.push(DF),s.push(_0e)),(o&4)==4&&(r.push(QF),s.push(E0e))):e.data.length>=5&&(r.push(NS),s.push(vU));let a=1;r.forEach((c,d)=>{if(e.data.length>=a+4){let u=Gr(i,a);t[c]=e[c]=new Date(u*1e3);let h=s[d];e[h]=u}a+=4})}async function oct({reader:e,fileEntry:t,offset:n,diskNumberStart:i,signature:o,compressedSize:r,uncompressedSize:s,dataOffset:a,dataDescriptor:c,extraFieldZip64:d,readRanges:u}){let h=0;if(i)for(let f=0;f<i;f++){let b=e.readers[f];h+=b.size}let p=0;if(c&&(d?p=20:p=12),p){let f=await za(e,a+r,p+4,i);if(Gr(Yr(f),0)==134695760){let x=Gr(Yr(f),4),I,_;d?(I=QS(Yr(f),8),_=QS(Yr(f),16)):(I=Gr(Yr(f),8),_=Gr(Yr(f),12)),(t.encrypted&&!t.zipCrypto||x==o)&&I==r&&_==s&&(p+=4)}}let g={start:h+n,end:h+a+r+p,fileEntry:t};for(let f of u)if(f.fileEntry!=t&&g.start>=f.start&&g.start<f.end){let b=new Error(jat);throw b.overlappingEntry=f.fileEntry,b}u.push(g)}async function rct(e,t,n,i,o){let r=new Uint8Array(4),s=Yr(r);act(s,0,t);let a=i+o;return await c(i)||await c(Math.min(a,n));async function c(d){let u=n-d,h=await za(e,u,d);for(let p=h.length-i;p>=0;p--)if(h[p]==r[0]&&h[p+1]==r[1]&&h[p+2]==r[2]&&h[p+3]==r[3])return{offset:u+p,buffer:h.slice(p,p+i).buffer}}}function Ac(e,t,n){return t[n]===ri?e.options[n]:t[n]}function sct(e){let t=(e&4294901760)>>16,n=e&65535;try{return new Date(1980+((t&65024)>>9),((t&480)>>5)-1,t&31,(n&63488)>>11,(n&2016)>>5,(n&31)*2,0)}catch{}}function u8(e){return new Date(Number(e/BigInt(1e4)-BigInt(116444736e5)))}function DS(e,t){return e.getUint8(t)}function Ka(e,t){return e.getUint16(t,!0)}function Gr(e,t){return e.getUint32(t,!0)}function QS(e,t){return Number(e.getBigUint64(t,!0))}function act(e,t,n){e.setUint32(t,n,!0)}function Yr(e){return new DataView(e.buffer)}var LLi=y(C(),1);var fct="File already exists",pct="Zip file comment exceeds 64KB",Act="File entry comment exceeds 64KB",gct="File entry name exceeds 64KB",$0e="Version exceeds 65535",bct="The strength must equal 1, 2, or 3",yct="Extra field type exceeds 65535",Cct="Extra field data exceeds 64KB",B8="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",xct="Undefined uncompressed size",Ict="Zip file not empty",eye=new Uint8Array([7,0,2,0,65,69,3,0,0]),V8=0,tye=[],ok=class{constructor(t,n={}){t=new vS(t);let i=t.availableSize!==ri&&t.availableSize>0&&t.availableSize!==1/0&&t.maxSize!==ri&&t.maxSize>0&&t.maxSize!==1/0;Object.assign(this,{writer:t,addSplitZipSignature:i,options:n,config:RF(),files:new Map,filenames:new Set,offset:n[c8]===ri?t.size||t.writable.size||0:n[c8],pendingEntriesSize:0,pendingAddFileCalls:new Set,bufferedWrites:0})}async prependZip(t){if(this.filenames.size)throw new Error(Ict);t=new uI(t);let n=new kS(t.readable),i=await n.getEntries();await n.close(),await t.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=t.size,this.filenames=new Set(i.map(o=>o.filename)),this.files=new Map(i.map(o=>{let{version:r,compressionMethod:s,lastModDate:a,lastAccessDate:c,creationDate:d,rawFilename:u,bitFlag:h,encrypted:p,uncompressedSize:g,compressedSize:f,diskOffset:b,diskNumber:x,zip64:I}=o,{rawExtraFieldZip64:_,rawExtraFieldAES:E,rawExtraFieldExtendedTimestamp:S,rawExtraFieldNTFS:R,rawExtraField:G}=o,{level:B,languageEncodingFlag:w,dataDescriptor:F}=h;_=_||new Uint8Array,E=E||new Uint8Array,S=S||new Uint8Array,R=R||new Uint8Array,G=G||new Uint8Array;let P=Ki(_,E,S,R,G),A=I&&g>4294967295,T=I&&f>4294967295,{headerArray:L,headerView:V}=oye({version:r,bitFlag:rye(B,w,F,p,s),compressionMethod:s,uncompressedSize:g,compressedSize:f,lastModDate:a,rawFilename:u,zip64CompressedSize:T,zip64UncompressedSize:A,extraFieldLength:P});return Object.assign(o,{zip64UncompressedSize:A,zip64CompressedSize:T,zip64Offset:I&&this.offset-b>4294967295,zip64DiskNumberStart:I&&x>65535,rawExtraFieldZip64:_,rawExtraFieldAES:E,rawExtraFieldExtendedTimestamp:S,rawExtraFieldNTFS:R,rawExtraField:G,extendedTimestamp:S.length>0||R.length>0,extraFieldExtendedTimestampFlag:1+(c?2:0)+(d?4:0),headerArray:L,headerView:V}),[o.filename,o]}))}async add(t="",n,i={}){let o=this,{pendingAddFileCalls:r,config:s}=o;V8<s.maxWorkers?V8++:await new Promise(c=>tye.push(c));let a;try{if(t=t.trim(),o.filenames.has(t))throw new Error(fct);return o.filenames.add(t),a=_ct(o,t,n,i),r.add(a),await a}catch(c){throw o.filenames.delete(t),c}finally{r.delete(a);let c=tye.shift();c?c():V8--}}remove(t){let{filenames:n,files:i}=this;if(typeof t=="string"&&(t=i.get(t)),t&&t.filename!==ri){let{filename:o}=t;if(n.has(o)&&i.has(o))return n.delete(o),i.delete(o),!0}return!1}async close(t=new Uint8Array,n={}){let i=this,{pendingAddFileCalls:o,writer:r}=this,{writable:s}=r;for(;o.size;)await Promise.allSettled(Array.from(o));return await Zct(this,t,n),co(i,n,HU)||await s.getWriter().close(),r.getData?r.getData():s}};async function _ct(e,t,n,i){t=t.trim();let o=co(e,i,qj),r=co(e,i,t8,o?20:768),s=co(e,i,i8);if(r>65535)throw new Error($0e);let a=co(e,i,jj,0);a===0&&(a=co(e,i,Jj,0)),!i[UF]&&t.endsWith("/")&&(i[UF]=!0),co(e,i,UF)?(t.endsWith("/")||(t+="/"),a===0&&(a=16,o||(a|=16877<<16))):!o&&a===0&&(s?a=493<<16:a=420<<16);let d=co(e,i,U0e,XS),u=d(t);if(u===ri&&(u=XS(t)),Ki(u)>65535)throw new Error(gct);let h=i[vF]||"",p=d(h);if(p===ri&&(p=XS(h)),Ki(p)>65535)throw new Error(Act);let g=co(e,i,e8,20);if(g>65535)throw new Error($0e);let f=co(e,i,NS,new Date),b=co(e,i,DF),x=co(e,i,QF),I=co(e,i,Kj,0);I===0&&(I=co(e,i,zj,0));let _=co(e,i,UU),E,S;_||(E=co(e,i,DU),S=co(e,i,QU));let R=co(e,i,W0e,3),G=co(e,i,n8),B=co(e,i,F0e,!0),w=co(e,i,P0e,!0),F=co(e,i,M0e),P=co(e,i,YU),A=co(e,i,v0e),T=co(e,i,N0e,!1),L=co(e,i,kU),V=co(e,i,D0e,!0),W=co(e,i,OU),M=co(e,i,o8),Q=co(e,i,Q0e);A&&Q===ri&&(Q=!1),(Q===ri||G)&&(Q=!0);let N=co(e,i,NU);if(!G&&(E!==ri||S!==ri)&&!(R>=1&&R<=3))throw new Error(bct);let k=new Uint8Array,v=i[s8];if(v){let nn=0,rt=0;v.forEach(rn=>nn+=4+Ki(rn)),k=new Uint8Array(nn),v.forEach((rn,Jt)=>{if(Jt>65535)throw new Error(yct);if(Ki(rn)>65535)throw new Error(Cct);Ds(k,new Uint16Array([Jt]),rt),Ds(k,new Uint16Array([Ki(rn)]),rt+2),Ds(k,rn,rt+4),rt+=4+Ki(rn)})}let O=0,H=0,ee=0;if(_&&(ee=i[NF],ee===ri))throw new Error(xct);let K=N===!0;n&&(n=new uI(n),await xp(n),_?(i.uncompressedSize=ee,O=iye(ee)):n.size===ri?(Q=!0,(N||N===ri)&&(N=!0,ee=O=4294967296)):(i.uncompressedSize=ee=n.size,O=iye(ee)));let{diskOffset:te,diskNumber:q,maxSize:pe}=e.writer,ye=K||ee>4294967295,he=K||O>4294967295,xe=K||e.offset+e.pendingEntriesSize-te>4294967295,Be=co(e,i,a8,!0)&&K||q+Math.ceil(e.pendingEntriesSize/pe)>65535;if(xe||ye||he||Be){if(N===!1||!w)throw new Error(B8);N=!0}N=N||!1;let Le=co(e,i,$j);i=Object.assign({},i,{rawFilename:u,rawComment:p,version:g,versionMadeBy:r,lastModDate:f,lastAccessDate:b,creationDate:x,rawExtraField:k,zip64:N,zip64UncompressedSize:ye,zip64CompressedSize:he,zip64Offset:xe,zip64DiskNumberStart:Be,password:E,rawPassword:S,level:!W&&e.config.CompressionStream===ri&&e.config.CompressionStreamNative===ri?0:F,useWebWorkers:P,encryptionStrength:R,extendedTimestamp:B,zipCrypto:G,bufferedWrite:A,keepOrder:w,useUnicodeFileNames:V,dataDescriptor:Q,dataDescriptorSignature:T,signal:L,msDosCompatible:o,internalFileAttribute:I,internalFileAttributes:I,externalFileAttribute:a,externalFileAttributes:a,useCompressionStream:W,passThrough:_,encrypted:!!(E&&Ki(E)||S&&Ki(S))||_&&Le,signature:i[r8],compressionMethod:M,uncompressedSize:ee,offset:e.offset-te,diskNumberStart:q});let De=Sct(i),Ue=Rct(i),je=Ki(De.localHeaderArray,Ue.dataDescriptorArray);H=je+O,e.options[l8]&&(H+=H+64),e.pendingEntriesSize+=H;let it;try{it=await Ect(e,t,n,{headerInfo:De,dataDescriptorInfo:Ue,metadataSize:je},i)}finally{e.pendingEntriesSize-=H}return Object.assign(it,{name:t,comment:h,extraField:v}),new ey(it)}async function Ect(e,t,n,i,o){let{files:r,writer:s}=e,{keepOrder:a,dataDescriptor:c,signal:d}=o,{headerInfo:u}=i,h=e.options[l8],p=Array.from(r.values()).pop(),g={},f,b,x,I,_,E,S;r.set(t,g);try{let w;a&&(w=p&&p.lock,R()),(o.bufferedWrite||e.writerLocked||e.bufferedWrites&&a||!c)&&!h?(E=new TransformStream,E.size=0,f=!0,e.bufferedWrites++,await xp(s)):(E=s,await G()),await xp(E);let{writable:F,diskOffset:P}=s;if(e.addSplitZipSignature){delete e.addSplitZipSignature;let W=new Uint8Array(4),M=gc(W);zi(M,0,134695760),await vg(s,W),e.offset+=4}h&&Lct(i,e.offset-P);let{localHeaderView:A,localHeaderArray:T}=u;f||(await w,await B(F));let{diskNumber:L}=s;_=!0,g.diskNumberStart=L,f?S=new Response(E.readable).blob():await vg(E,T),g=await Tct(n,E,g,i,e.config,o);let{zip64:V}=g;if(_=!1,r.set(t,g),g.filename=t,f){let[W]=await Promise.all([S,E.writable.getWriter().close(),w]);await G(),I=!0,g.diskNumberStart=s.diskNumber,g.offset=e.offset-s.diskOffset,V&&nye(g),Gct(g,A,o),await B(F),await vg(s,T),await W.stream().pipeTo(F,{preventClose:!0,preventAbort:!0,signal:d}),s.size+=E.size,I=!1}else g.offset=e.offset-P,V&&nye(g);if(g.offset>4294967295&&!V)throw new Error(B8);return e.offset+=g.size,g}catch(w){if(f&&I||!f&&_){if(e.hasCorruptedEntries=!0,w)try{w.corruptedEntry=!0}catch{}f?e.offset+=E.size:e.offset=E.size}throw r.delete(t),w}finally{f&&e.bufferedWrites--,x&&x(),b&&b()}function R(){g.lock=new Promise(w=>x=w)}async function G(){e.writerLocked=!0;let{lockWriter:w}=e;e.lockWriter=new Promise(F=>b=()=>{e.writerLocked=!1,F()}),await w}async function B(w){Ki(u.localHeaderArray)>s.availableSize&&(s.availableSize=0,await vg(w,new Uint8Array))}}async function Tct(e,t,{diskNumberStart:n,lock:i},o,r,s){let{headerInfo:a,dataDescriptorInfo:c,metadataSize:d}=o,{headerArray:u,headerView:h,lastModDate:p,rawLastModDate:g,encrypted:f,compressed:b,version:x,compressionMethod:I,rawExtraFieldZip64:_,localExtraFieldZip64Length:E,rawExtraFieldExtendedTimestamp:S,extraFieldExtendedTimestampFlag:R,rawExtraFieldNTFS:G,rawExtraFieldAES:B}=a,{dataDescriptorArray:w}=c,{rawFilename:F,lastAccessDate:P,creationDate:A,password:T,rawPassword:L,level:V,zip64:W,zip64UncompressedSize:M,zip64CompressedSize:Q,zip64Offset:N,zip64DiskNumberStart:k,zipCrypto:v,dataDescriptor:O,directory:H,executable:ee,versionMadeBy:K,rawComment:te,rawExtraField:q,useWebWorkers:pe,onstart:ye,onprogress:he,onend:xe,signal:Te,encryptionStrength:Be,extendedTimestamp:Le,msDosCompatible:De,internalFileAttributes:Ue,externalFileAttributes:je,useCompressionStream:it,passThrough:nn}=s,rt={lock:i,versionMadeBy:K,zip64:W,directory:!!H,executable:!!ee,filenameUTF8:!0,rawFilename:F,commentUTF8:!0,rawComment:te,rawExtraFieldZip64:_,localExtraFieldZip64Length:E,rawExtraFieldExtendedTimestamp:S,rawExtraFieldNTFS:G,rawExtraFieldAES:B,rawExtraField:q,extendedTimestamp:Le,msDosCompatible:De,internalFileAttributes:Ue,externalFileAttributes:je,diskNumberStart:n},{signature:rn,uncompressedSize:Jt}=s,Xt=0;nn||(Jt=0);let{writable:Li}=t;if(e){e.chunkSize=bU(r);let bi=e.readable,vt=e.size,Rt={options:{codecType:VU,level:V,rawPassword:L,password:T,encryptionStrength:Be,zipCrypto:f&&v,passwordVerification:f&&v&&g>>8&255,signed:!nn,compressed:b&&!nn,encrypted:f&&!nn,useWebWorkers:pe,useCompressionStream:it,transferStreams:!1},config:r,streamOptions:{signal:Te,size:vt,onstart:ye,onprogress:he,onend:xe}};try{let si=await BU({readable:bi,writable:Li},Rt);Xt=si.outputSize,t.size+=Xt,nn||(Jt=si.inputSize,rn=si.signature)}catch(si){throw si.outputSize!==ri&&(t.size+=si.outputSize),si}}return Vct({signature:rn,compressedSize:Xt,uncompressedSize:Jt,headerInfo:a,dataDescriptorInfo:c},s),O&&await vg(t,w),Object.assign(rt,{uncompressedSize:Jt,compressedSize:Xt,lastModDate:p,rawLastModDate:g,creationDate:A,lastAccessDate:P,encrypted:f,zipCrypto:v,size:d+Xt,compressionMethod:I,version:x,headerArray:u,headerView:h,signature:rn,extraFieldExtendedTimestampFlag:R,zip64UncompressedSize:M,zip64CompressedSize:Q,zip64Offset:N,zip64DiskNumberStart:k}),rt}function Sct(e){let{rawFilename:t,lastModDate:n,lastAccessDate:i,creationDate:o,level:r,zip64:s,zipCrypto:a,useUnicodeFileNames:c,dataDescriptor:d,directory:u,rawExtraField:h,encryptionStrength:p,extendedTimestamp:g,passThrough:f,encrypted:b,zip64UncompressedSize:x,zip64CompressedSize:I,zip64Offset:_,zip64DiskNumberStart:E,uncompressedSize:S,offset:R,diskNumberStart:G}=e,{version:B,compressionMethod:w}=e,F=!u&&(r>0||r===ri&&w!==0),P,A=f||!F,T=s&&(e.bufferedWrite||!x&&!I||A);if(s){let te=4;x&&(te+=8),I&&(te+=8),_&&(te+=8),E&&(te+=4),P=new Uint8Array(te);let q=gc(P);if(Co(q,0,1),Co(q,2,Ki(P)-4),T){let pe=gc(P),ye=4;x&&(ta(pe,ye,BigInt(S)),ye+=8),I&&A&&(ta(pe,ye,BigInt(S)),ye+=8),_&&(ta(pe,ye,BigInt(R)),ye+=8),E&&(zi(pe,ye,G),ye+=4)}}else P=new Uint8Array;let L;if(b&&!a){L=new Uint8Array(Ki(eye)+2);let te=gc(L);Co(te,0,39169),Ds(L,eye,2),Z8(te,8,p)}else L=new Uint8Array;let V,W,M;if(g){W=new Uint8Array(9+(i?4:0)+(o?4:0));let te=gc(W);Co(te,0,21589),Co(te,2,Ki(W)-4),M=1+(i?2:0)+(o?4:0),Z8(te,4,M);let q=5;zi(te,q,Math.floor(n.getTime()/1e3)),q+=4,i&&(zi(te,q,Math.floor(i.getTime()/1e3)),q+=4),o&&zi(te,q,Math.floor(o.getTime()/1e3));try{V=new Uint8Array(36);let pe=gc(V),ye=G8(n);Co(pe,0,10),Co(pe,2,32),Co(pe,8,1),Co(pe,10,24),ta(pe,12,ye),ta(pe,20,G8(i)||ye),ta(pe,28,G8(o)||ye)}catch{V=new Uint8Array}}else V=W=new Uint8Array;w===ri&&(w=F?8:0),s&&(B=B>45?B:45),b&&!a&&(B=B>51?B:51,L[9]=w,w=99);let Q=T?Ki(P):0,N=Q+Ki(L,W,V,h),{headerArray:k,headerView:v,rawLastModDate:O}=oye({version:B,bitFlag:rye(r,c,d,b,w),compressionMethod:w,uncompressedSize:S,lastModDate:n<Vj?Vj:n>Rj?Rj:n,rawFilename:t,zip64CompressedSize:I,zip64UncompressedSize:x,extraFieldLength:N}),H=30,ee=new Uint8Array(H+Ki(t)+N),K=gc(ee);return zi(K,0,67324752),Ds(ee,k,4),Ds(ee,t,H),H+=Ki(t),T&&Ds(ee,P,H),H+=Q,Ds(ee,L,H),H+=Ki(L),Ds(ee,W,H),H+=Ki(W),Ds(ee,V,H),H+=Ki(V),Ds(ee,h,H),d&&(zi(K,18,0),zi(K,22,0)),{localHeaderArray:ee,localHeaderView:K,headerArray:k,headerView:v,lastModDate:n,rawLastModDate:O,encrypted:b,compressed:F,version:B,compressionMethod:w,extraFieldExtendedTimestampFlag:M,rawExtraFieldZip64:P,localExtraFieldZip64Length:Q,rawExtraFieldExtendedTimestamp:W,rawExtraFieldNTFS:V,rawExtraFieldAES:L,extraFieldLength:N}}function Lct(e,t){let{headerInfo:n}=e,{localHeaderArray:i,extraFieldLength:o}=n,r=gc(i),s=64-(t+Ki(i))%64;s<4&&(s+=64);let a=new Uint8Array(s),c=gc(a);Co(c,0,6534),Co(c,2,s-2);let d=i;n.localHeaderArray=i=new Uint8Array(Ki(d)+s),Ds(i,d),Ds(i,a,Ki(d)),r=gc(i),Co(r,28,o+s),e.metadataSize+=s}function Rct({zip64:e,dataDescriptor:t,dataDescriptorSignature:n}){let i=new Uint8Array,o,r=0,s=e?20:12;return n&&(s+=4),t&&(i=new Uint8Array(s),o=gc(i),n&&(r=4,zi(o,0,134695760))),{dataDescriptorArray:i,dataDescriptorView:o,dataDescriptorOffset:r}}function Vct({signature:e,compressedSize:t,uncompressedSize:n,headerInfo:i,dataDescriptorInfo:o},{zip64:r,zipCrypto:s,dataDescriptor:a}){let{headerView:c,encrypted:d}=i,{dataDescriptorView:u,dataDescriptorOffset:h}=o;(!d||s)&&e!==ri&&(zi(c,10,e),a&&zi(u,h,e)),r?a&&(ta(u,h+4,BigInt(t)),ta(u,h+12,BigInt(n))):(zi(c,14,t),zi(c,18,n),a&&(zi(u,h+4,t),zi(u,h+8,n)))}function Gct({rawFilename:e,encrypted:t,zip64:n,localExtraFieldZip64Length:i,signature:o,compressedSize:r,uncompressedSize:s,offset:a,diskNumberStart:c,zip64UncompressedSize:d,zip64CompressedSize:u,zip64Offset:h,zip64DiskNumberStart:p},g,{dataDescriptor:f}){if(f||(t||zi(g,14,o),n||(zi(g,18,r),zi(g,22,s))),n&&i){let b=30+Ki(e)+4;d&&(ta(g,b,BigInt(s)),b+=8),u&&(ta(g,b,BigInt(r)),b+=8),h&&(ta(g,b,BigInt(a)),b+=8),p&&zi(g,b,c)}}function nye({compressedSize:e,uncompressedSize:t,offset:n,diskNumberStart:i,zip64UncompressedSize:o,zip64CompressedSize:r,zip64Offset:s,zip64DiskNumberStart:a,rawExtraFieldZip64:c}){let d=gc(c),u=4;o&&(ta(d,u,BigInt(t)),u+=8),r&&(ta(d,u,BigInt(e)),u+=8),s&&(ta(d,u,BigInt(n)),u+=8),a&&zi(d,u,i)}async function Zct(e,t,n){let{files:i,writer:o}=e,{diskOffset:r}=o,{diskNumber:s}=o,a=0,c=0,d=e.offset-r,u=i.size;for(let[,S]of i){let{rawFilename:R,rawExtraFieldZip64:G,rawExtraFieldAES:B,rawComment:w,rawExtraFieldNTFS:F,rawExtraField:P,extendedTimestamp:A,extraFieldExtendedTimestampFlag:T,lastModDate:L}=S,V;if(A){V=new Uint8Array(9);let W=gc(V);Co(W,0,21589),Co(W,2,5),Z8(W,4,T),zi(W,5,Math.floor(L.getTime()/1e3))}else V=new Uint8Array;S.rawExtraFieldExtendedTimestamp=V,c+=46+Ki(R,w,G,B,F,V,P)}let h=new Uint8Array(c),p=gc(h);await xp(o);let g=0;for(let[S,R]of Array.from(i.values()).entries()){let{offset:G,rawFilename:B,rawExtraFieldZip64:w,rawExtraFieldAES:F,rawExtraFieldExtendedTimestamp:P,rawExtraFieldNTFS:A,rawExtraField:T,rawComment:L,versionMadeBy:V,headerArray:W,headerView:M,zip64:Q,zip64UncompressedSize:N,zip64CompressedSize:k,zip64DiskNumberStart:v,zip64Offset:O,internalFileAttributes:H,externalFileAttributes:ee,diskNumberStart:K,uncompressedSize:te,compressedSize:q}=R,pe=Ki(w,F,P,A,T);zi(p,a,33639248),Co(p,a+4,V),N||zi(M,18,te),k||zi(M,14,q),Ds(h,W,a+6);let ye=a+30;if(Co(p,ye,pe),ye+=2,Co(p,ye,Ki(L)),ye+=2,Co(p,ye,Q&&v?65535:K),ye+=2,Co(p,ye,H),ye+=2,ee&&zi(p,ye,ee),ye+=4,zi(p,ye,Q&&O?4294967295:G),ye+=4,Ds(h,B,ye),ye+=Ki(B),Ds(h,w,ye),ye+=Ki(w),Ds(h,F,ye),ye+=Ki(F),Ds(h,P,ye),ye+=Ki(P),Ds(h,A,ye),ye+=Ki(A),Ds(h,T,ye),ye+=Ki(T),Ds(h,L,ye),a-g>o.availableSize&&(o.availableSize=0,await vg(o,h.slice(g,a)),g=a),a=ye,n.onprogress)try{await n.onprogress(S+1,i.size,new ey(R))}catch{}}await vg(o,g?h.slice(g):h);let f=o.diskNumber,{availableSize:b}=o;b<22&&f++;let x=co(e,n,NU);if(d>4294967295||c>4294967295||u>65535||f>65535){if(x===!1)throw new Error(B8);x=!0}let I=new Uint8Array(x?98:22),_=gc(I);a=0,x&&(zi(_,0,101075792),ta(_,4,BigInt(44)),Co(_,12,45),Co(_,14,45),zi(_,16,f),zi(_,20,s),ta(_,24,BigInt(u)),ta(_,32,BigInt(u)),ta(_,40,BigInt(c)),ta(_,48,BigInt(d)),zi(_,56,117853008),ta(_,64,BigInt(d)+BigInt(c)),zi(_,72,f+1),co(e,n,a8,!0)&&(f=65535,s=65535),u=65535,d=4294967295,c=4294967295,a+=76),zi(_,a,101010256),Co(_,a+4,f),Co(_,a+6,s),Co(_,a+8,u),Co(_,a+10,u),zi(_,a+12,c),zi(_,a+16,d);let E=Ki(t);if(E)if(E<=65535)Co(_,a+20,E);else throw new Error(pct);await vg(o,I),E&&await vg(o,t)}async function vg(e,t){let{writable:n}=e,i=n.getWriter();try{await i.ready,e.size+=Ki(t),await i.write(t)}finally{i.releaseLock()}}function G8(e){if(e)return(BigInt(e.getTime())+BigInt(116444736e5))*BigInt(1e4)}function co(e,t,n,i){let o=t[n]===ri?e.options[n]:t[n];return o===ri?i:o}function iye(e){return e+5*(Math.floor(e/16383)+1)}function Z8(e,t,n){e.setUint8(t,n)}function Co(e,t,n){e.setUint16(t,n,!0)}function zi(e,t,n){e.setUint32(t,n,!0)}function ta(e,t,n){e.setBigUint64(t,n,!0)}function Ds(e,t,n){e.set(t,n)}function gc(e){return new DataView(e.buffer)}function Ki(...e){let t=0;return e.forEach(n=>n&&(t+=n.length)),t}function oye({version:e,bitFlag:t,compressionMethod:n,uncompressedSize:i,compressedSize:o,lastModDate:r,rawFilename:s,zip64CompressedSize:a,zip64UncompressedSize:c,extraFieldLength:d}){let u=new Uint8Array(26),h=gc(u);Co(h,0,e),Co(h,2,t),Co(h,4,n);let p=new Uint32Array(1),g=gc(p);Co(g,0,(r.getHours()<<6|r.getMinutes())<<5|r.getSeconds()/2),Co(g,2,(r.getFullYear()-1980<<4|r.getMonth()+1)<<5|r.getDate());let f=p[0];return zi(h,6,f),(a||o!==ri)&&zi(h,14,a?4294967295:o),(c||i!==ri)&&zi(h,18,c?4294967295:i),Co(h,22,Ki(s)),Co(h,24,d),{headerArray:u,headerView:h,rawLastModDate:f}}function rye(e,t,n,i,o){let r=0;return t&&(r=r|2048),n&&(r=r|8),(o==8||o==9)&&(e>=0&&e<=3&&(r=r|6),e>3&&e<=5&&(r=r|4),e==9&&(r=r|2)),i&&(r=r|1),r}wS({Deflate:_be,Inflate:Ybe});var NLi=y(C(),1);function Bct(e){return typeof e=="string"&&(e=document.getElementById(e)),e}var Dn=Bct;var QLi=y(C(),1);function wct(e,t){this.position=e,this.headingPitchRange=t}var HF=wct;var OLi=y(C(),1);function rk(e,t){this.id=t,this.name=e,this.playlistIndex=0,this.playlist=[],this.tourStart=new Ce,this.tourEnd=new Ce,this.entryStart=new Ce,this.entryEnd=new Ce,this._activeEntries=[]}rk.prototype.addPlaylistEntry=function(e){this.playlist.push(e)};rk.prototype.play=function(e,t){this.tourStart.raiseEvent();let n=this;cye.call(this,e,t,function(i){n.playlistIndex=0,i||aye(n._activeEntries),n.tourEnd.raiseEvent(i)})};rk.prototype.stop=function(){aye(this._activeEntries)};function aye(e){for(let t=e.pop();t!==void 0;t=e.pop())t.stop()}function cye(e,t,n){let i=this.playlist[this.playlistIndex];if(i){let o=Xct.bind(this,e,t,n);if(this._activeEntries.push(i),this.entryStart.raiseEvent(i),i.blocking)i.play(o,e.scene.camera,t);else{let r=this;i.play(function(){r.entryEnd.raiseEvent(i);let s=r._activeEntries.indexOf(i);s>=0&&r._activeEntries.splice(s,1)}),o(e,t,n)}}else l(n)&&n(!1)}function Xct(e,t,n,i){let o=this.playlist[this.playlistIndex];if(this.entryEnd.raiseEvent(o,i),i)n(i);else{let r=this._activeEntries.indexOf(o);r>=0&&this._activeEntries.splice(r,1),this.playlistIndex++,cye.call(this,e,t,n)}}var zF=rk;var l1i=y(C(),1);var i1i=y(C(),1);var e1i=y(C(),1),Ji=Object.freeze({Linear:Object.freeze({None:function(e){return e},In:function(e){return e},Out:function(e){return e},InOut:function(e){return e}}),Quadratic:Object.freeze({In:function(e){return e*e},Out:function(e){return e*(2-e)},InOut:function(e){return(e*=2)<1?.5*e*e:-.5*(--e*(e-2)-1)}}),Cubic:Object.freeze({In:function(e){return e*e*e},Out:function(e){return--e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e:.5*((e-=2)*e*e+2)}}),Quartic:Object.freeze({In:function(e){return e*e*e*e},Out:function(e){return 1- --e*e*e*e},InOut:function(e){return(e*=2)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2)}}),Quintic:Object.freeze({In:function(e){return e*e*e*e*e},Out:function(e){return--e*e*e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2)}}),Sinusoidal:Object.freeze({In:function(e){return 1-Math.sin((1-e)*Math.PI/2)},Out:function(e){return Math.sin(e*Math.PI/2)},InOut:function(e){return .5*(1-Math.sin(Math.PI*(.5-e)))}}),Exponential:Object.freeze({In:function(e){return e===0?0:Math.pow(1024,e-1)},Out:function(e){return e===1?1:1-Math.pow(2,-10*e)},InOut:function(e){return e===0?0:e===1?1:(e*=2)<1?.5*Math.pow(1024,e-1):.5*(-Math.pow(2,-10*(e-1))+2)}}),Circular:Object.freeze({In:function(e){return 1-Math.sqrt(1-e*e)},Out:function(e){return Math.sqrt(1- --e*e)},InOut:function(e){return(e*=2)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1)}}),Elastic:Object.freeze({In:function(e){return e===0?0:e===1?1:-Math.pow(2,10*(e-1))*Math.sin((e-1.1)*5*Math.PI)},Out:function(e){return e===0?0:e===1?1:Math.pow(2,-10*e)*Math.sin((e-.1)*5*Math.PI)+1},InOut:function(e){return e===0?0:e===1?1:(e*=2,e<1?-.5*Math.pow(2,10*(e-1))*Math.sin((e-1.1)*5*Math.PI):.5*Math.pow(2,-10*(e-1))*Math.sin((e-1.1)*5*Math.PI)+1)}}),Back:Object.freeze({In:function(e){var t=1.70158;return e===1?1:e*e*((t+1)*e-t)},Out:function(e){var t=1.70158;return e===0?0:--e*e*((t+1)*e+t)+1},InOut:function(e){var t=2.5949095;return(e*=2)<1?.5*(e*e*((t+1)*e-t)):.5*((e-=2)*e*((t+1)*e+t)+2)}}),Bounce:Object.freeze({In:function(e){return 1-Ji.Bounce.Out(1-e)},Out:function(e){return e<.36363636363636365?7.5625*e*e:e<.7272727272727273?7.5625*(e-=.5454545454545454)*e+.75:e<.9090909090909091?7.5625*(e-=.8181818181818182)*e+.9375:7.5625*(e-=.9545454545454546)*e+.984375},InOut:function(e){return e<.5?Ji.Bounce.In(e*2)*.5:Ji.Bounce.Out(e*2-1)*.5+.5}}),generatePow:function(e){return e===void 0&&(e=4),e=e<Number.EPSILON?Number.EPSILON:e,e=e>1e4?1e4:e,{In:function(t){return Math.pow(t,e)},Out:function(t){return 1-Math.pow(1-t,e)},InOut:function(t){return t<.5?Math.pow(t*2,e)/2:(1-Math.pow(2-t*2,e))/2+.5}}}}),KF=function(){return performance.now()},Wct=function(){function e(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];this._tweens={},this._tweensAddedDuringUpdate={},this.add.apply(this,t)}return e.prototype.getAll=function(){var t=this;return Object.keys(this._tweens).map(function(n){return t._tweens[n]})},e.prototype.removeAll=function(){this._tweens={}},e.prototype.add=function(){for(var t,n=[],i=0;i<arguments.length;i++)n[i]=arguments[i];for(var o=0,r=n;o<r.length;o++){var s=r[o];(t=s._group)===null||t===void 0||t.remove(s),s._group=this,this._tweens[s.getId()]=s,this._tweensAddedDuringUpdate[s.getId()]=s}},e.prototype.remove=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];for(var i=0,o=t;i<o.length;i++){var r=o[i];r._group=void 0,delete this._tweens[r.getId()],delete this._tweensAddedDuringUpdate[r.getId()]}},e.prototype.allStopped=function(){return this.getAll().every(function(t){return!t.isPlaying()})},e.prototype.update=function(t,n){t===void 0&&(t=KF()),n===void 0&&(n=!0);var i=Object.keys(this._tweens);if(i.length!==0)for(;i.length>0;){this._tweensAddedDuringUpdate={};for(var o=0;o<i.length;o++){var r=this._tweens[i[o]],s=!n;r&&r.update(t,s)===!1&&!n&&this.remove(r)}i=Object.keys(this._tweensAddedDuringUpdate)}},e}(),YS={Linear:function(e,t){var n=e.length-1,i=n*t,o=Math.floor(i),r=YS.Utils.Linear;return t<0?r(e[0],e[1],i):t>1?r(e[n],e[n-1],n-i):r(e[o],e[o+1>n?n:o+1],i-o)},Bezier:function(e,t){for(var n=0,i=e.length-1,o=Math.pow,r=YS.Utils.Bernstein,s=0;s<=i;s++)n+=o(1-t,i-s)*o(t,s)*e[s]*r(i,s);return n},CatmullRom:function(e,t){var n=e.length-1,i=n*t,o=Math.floor(i),r=YS.Utils.CatmullRom;return e[0]===e[n]?(t<0&&(o=Math.floor(i=n*(1+t))),r(e[(o-1+n)%n],e[o],e[(o+1)%n],e[(o+2)%n],i-o)):t<0?e[0]-(r(e[0],e[0],e[1],e[1],-i)-e[0]):t>1?e[n]-(r(e[n],e[n],e[n-1],e[n-1],i-n)-e[n]):r(e[o?o-1:0],e[o],e[n<o+1?n:o+1],e[n<o+2?n:o+2],i-o)},Utils:{Linear:function(e,t,n){return(t-e)*n+e},Bernstein:function(e,t){var n=YS.Utils.Factorial;return n(e)/n(t)/n(e-t)},Factorial:function(){var e=[1];return function(t){var n=1;if(e[t])return e[t];for(var i=t;i>1;i--)n*=i;return e[t]=n,n}}(),CatmullRom:function(e,t,n,i,o){var r=(n-e)*.5,s=(i-t)*.5,a=o*o,c=o*a;return(2*t-2*n+r+s)*c+(-3*t+3*n-2*r-s)*a+r*o+t}}},lye=function(){function e(){}return e.nextId=function(){return e._nextId++},e._nextId=0,e}(),w8=new Wct,dye=function(){function e(t,n){this._isPaused=!1,this._pauseStart=0,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._isDynamic=!1,this._initialRepeat=0,this._repeat=0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=0,this._easingFunction=Ji.Linear.None,this._interpolationFunction=YS.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._id=lye.nextId(),this._isChainStopped=!1,this._propertiesAreSetUp=!1,this._goToEnd=!1,this._object=t,typeof n=="object"?(this._group=n,n.add(this)):n===!0&&(this._group=w8,w8.add(this))}return e.prototype.getId=function(){return this._id},e.prototype.isPlaying=function(){return this._isPlaying},e.prototype.isPaused=function(){return this._isPaused},e.prototype.getDuration=function(){return this._duration},e.prototype.to=function(t,n){if(n===void 0&&(n=1e3),this._isPlaying)throw new Error("Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.");return this._valuesEnd=t,this._propertiesAreSetUp=!1,this._duration=n<0?0:n,this},e.prototype.duration=function(t){return t===void 0&&(t=1e3),this._duration=t<0?0:t,this},e.prototype.dynamic=function(t){return t===void 0&&(t=!1),this._isDynamic=t,this},e.prototype.start=function(t,n){if(t===void 0&&(t=KF()),n===void 0&&(n=!1),this._isPlaying)return this;if(this._repeat=this._initialRepeat,this._reversed){this._reversed=!1;for(var i in this._valuesStartRepeat)this._swapEndStartRepeatValues(i),this._valuesStart[i]=this._valuesStartRepeat[i]}if(this._isPlaying=!0,this._isPaused=!1,this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._isChainStopped=!1,this._startTime=t,this._startTime+=this._delayTime,!this._propertiesAreSetUp||n){if(this._propertiesAreSetUp=!0,!this._isDynamic){var o={};for(var r in this._valuesEnd)o[r]=this._valuesEnd[r];this._valuesEnd=o}this._setupProperties(this._object,this._valuesStart,this._valuesEnd,this._valuesStartRepeat,n)}return this},e.prototype.startFromCurrentValues=function(t){return this.start(t,!0)},e.prototype._setupProperties=function(t,n,i,o,r){for(var s in i){var a=t[s],c=Array.isArray(a),d=c?"array":typeof a,u=!c&&Array.isArray(i[s]);if(!(d==="undefined"||d==="function")){if(u){var h=i[s];if(h.length===0)continue;for(var p=[a],g=0,f=h.length;g<f;g+=1){var b=this._handleRelativeValue(a,h[g]);if(isNaN(b)){u=!1,console.warn("Found invalid interpolation list. Skipping.");break}p.push(b)}u&&(i[s]=p)}if((d==="object"||c)&&a&&!u){n[s]=c?[]:{};var x=a;for(var I in x)n[s][I]=x[I];o[s]=c?[]:{};var h=i[s];if(!this._isDynamic){var _={};for(var I in h)_[I]=h[I];i[s]=h=_}this._setupProperties(x,n[s],h,o[s],r)}else(typeof n[s]>"u"||r)&&(n[s]=a),c||(n[s]*=1),u?o[s]=i[s].slice().reverse():o[s]=n[s]||0}}},e.prototype.stop=function(){return this._isChainStopped||(this._isChainStopped=!0,this.stopChainedTweens()),this._isPlaying?(this._isPlaying=!1,this._isPaused=!1,this._onStopCallback&&this._onStopCallback(this._object),this):this},e.prototype.end=function(){return this._goToEnd=!0,this.update(this._startTime+this._duration),this},e.prototype.pause=function(t){return t===void 0&&(t=KF()),this._isPaused||!this._isPlaying?this:(this._isPaused=!0,this._pauseStart=t,this)},e.prototype.resume=function(t){return t===void 0&&(t=KF()),!this._isPaused||!this._isPlaying?this:(this._isPaused=!1,this._startTime+=t-this._pauseStart,this._pauseStart=0,this)},e.prototype.stopChainedTweens=function(){for(var t=0,n=this._chainedTweens.length;t<n;t++)this._chainedTweens[t].stop();return this},e.prototype.group=function(t){return t?(t.add(this),this):(console.warn("tween.group() without args has been removed, use group.add(tween) instead."),this)},e.prototype.remove=function(){var t;return(t=this._group)===null||t===void 0||t.remove(this),this},e.prototype.delay=function(t){return t===void 0&&(t=0),this._delayTime=t,this},e.prototype.repeat=function(t){return t===void 0&&(t=0),this._initialRepeat=t,this._repeat=t,this},e.prototype.repeatDelay=function(t){return this._repeatDelayTime=t,this},e.prototype.yoyo=function(t){return t===void 0&&(t=!1),this._yoyo=t,this},e.prototype.easing=function(t){return t===void 0&&(t=Ji.Linear.None),this._easingFunction=t,this},e.prototype.interpolation=function(t){return t===void 0&&(t=YS.Linear),this._interpolationFunction=t,this},e.prototype.chain=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return this._chainedTweens=t,this},e.prototype.onStart=function(t){return this._onStartCallback=t,this},e.prototype.onEveryStart=function(t){return this._onEveryStartCallback=t,this},e.prototype.onUpdate=function(t){return this._onUpdateCallback=t,this},e.prototype.onRepeat=function(t){return this._onRepeatCallback=t,this},e.prototype.onComplete=function(t){return this._onCompleteCallback=t,this},e.prototype.onStop=function(t){return this._onStopCallback=t,this},e.prototype.update=function(t,n){var i=this,o;if(t===void 0&&(t=KF()),n===void 0&&(n=e.autoStartOnUpdate),this._isPaused)return!0;var r;if(!this._goToEnd&&!this._isPlaying)if(n)this.start(t,!0);else return!1;if(this._goToEnd=!1,t<this._startTime)return!0;this._onStartCallbackFired===!1&&(this._onStartCallback&&this._onStartCallback(this._object),this._onStartCallbackFired=!0),this._onEveryStartCallbackFired===!1&&(this._onEveryStartCallback&&this._onEveryStartCallback(this._object),this._onEveryStartCallbackFired=!0);var s=t-this._startTime,a=this._duration+((o=this._repeatDelayTime)!==null&&o!==void 0?o:this._delayTime),c=this._duration+this._repeat*a,d=function(){if(i._duration===0||s>c)return 1;var b=Math.trunc(s/a),x=s-b*a,I=Math.min(x/i._duration,1);return I===0&&s===i._duration?1:I},u=d(),h=this._easingFunction(u);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,h),this._onUpdateCallback&&this._onUpdateCallback(this._object,u),this._duration===0||s>=this._duration)if(this._repeat>0){var p=Math.min(Math.trunc((s-this._duration)/a)+1,this._repeat);isFinite(this._repeat)&&(this._repeat-=p);for(r in this._valuesStartRepeat)!this._yoyo&&typeof this._valuesEnd[r]=="string"&&(this._valuesStartRepeat[r]=this._valuesStartRepeat[r]+parseFloat(this._valuesEnd[r])),this._yoyo&&this._swapEndStartRepeatValues(r),this._valuesStart[r]=this._valuesStartRepeat[r];return this._yoyo&&(this._reversed=!this._reversed),this._startTime+=a*p,this._onRepeatCallback&&this._onRepeatCallback(this._object),this._onEveryStartCallbackFired=!1,!0}else{this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var g=0,f=this._chainedTweens.length;g<f;g++)this._chainedTweens[g].start(this._startTime+this._duration,!1);return this._isPlaying=!1,!1}return!0},e.prototype._updateProperties=function(t,n,i,o){for(var r in i)if(n[r]!==void 0){var s=n[r]||0,a=i[r],c=Array.isArray(t[r]),d=Array.isArray(a),u=!c&&d;u?t[r]=this._interpolationFunction(a,o):typeof a=="object"&&a?this._updateProperties(t[r],s,a,o):(a=this._handleRelativeValue(s,a),typeof a=="number"&&(t[r]=s+(a-s)*o))}},e.prototype._handleRelativeValue=function(t,n){return typeof n!="string"?n:n.charAt(0)==="+"||n.charAt(0)==="-"?t+parseFloat(n):parseFloat(n)},e.prototype._swapEndStartRepeatValues=function(t){var n=this._valuesStartRepeat[t],i=this._valuesEnd[t];typeof i=="string"?this._valuesStartRepeat[t]=this._valuesStartRepeat[t]+parseFloat(i):this._valuesStartRepeat[t]=this._valuesEnd[t],this._valuesEnd[t]=n},e.autoStartOnUpdate=!1,e}();var HLi=lye.nextId,Ip=w8,zLi=Ip.getAll.bind(Ip),KLi=Ip.removeAll.bind(Ip),JLi=Ip.add.bind(Ip),jLi=Ip.remove.bind(Ip),qLi=Ip.update.bind(Ip);var Fct={LINEAR_NONE:Ji.Linear.None,QUADRATIC_IN:Ji.Quadratic.In,QUADRATIC_OUT:Ji.Quadratic.Out,QUADRATIC_IN_OUT:Ji.Quadratic.InOut,CUBIC_IN:Ji.Cubic.In,CUBIC_OUT:Ji.Cubic.Out,CUBIC_IN_OUT:Ji.Cubic.InOut,QUARTIC_IN:Ji.Quartic.In,QUARTIC_OUT:Ji.Quartic.Out,QUARTIC_IN_OUT:Ji.Quartic.InOut,QUINTIC_IN:Ji.Quintic.In,QUINTIC_OUT:Ji.Quintic.Out,QUINTIC_IN_OUT:Ji.Quintic.InOut,SINUSOIDAL_IN:Ji.Sinusoidal.In,SINUSOIDAL_OUT:Ji.Sinusoidal.Out,SINUSOIDAL_IN_OUT:Ji.Sinusoidal.InOut,EXPONENTIAL_IN:Ji.Exponential.In,EXPONENTIAL_OUT:Ji.Exponential.Out,EXPONENTIAL_IN_OUT:Ji.Exponential.InOut,CIRCULAR_IN:Ji.Circular.In,CIRCULAR_OUT:Ji.Circular.Out,CIRCULAR_IN_OUT:Ji.Circular.InOut,ELASTIC_IN:Ji.Elastic.In,ELASTIC_OUT:Ji.Elastic.Out,ELASTIC_IN_OUT:Ji.Elastic.InOut,BACK_IN:Ji.Back.In,BACK_OUT:Ji.Back.Out,BACK_IN_OUT:Ji.Back.InOut,BOUNCE_IN:Ji.Bounce.In,BOUNCE_OUT:Ji.Bounce.Out,BOUNCE_IN_OUT:Ji.Bounce.InOut},ms=Object.freeze(Fct);function sk(e,t,n){this.type="KmlTourFlyTo",this.blocking=!0,this.activeCamera=null,this.activeCallback=null,this.duration=e,this.view=n,this.flyToMode=t}sk.prototype.play=function(e,t,n){if(this.activeCamera=t,l(e)&&e!==null){let o=this;this.activeCallback=function(r){delete o.activeCallback,delete o.activeCamera,e(l(r)?!1:r)}}let i=this.getCameraOptions(n);if(this.view.headingPitchRoll)t.flyTo(i);else if(this.view.headingPitchRange){let o=new ue(this.view.position);t.flyToBoundingSphere(o,i)}};sk.prototype.stop=function(){l(this.activeCamera)&&this.activeCamera.cancelFlight(),l(this.activeCallback)&&this.activeCallback(!0)};sk.prototype.getCameraOptions=function(e){let t={duration:this.duration};return l(this.activeCallback)&&(t.complete=this.activeCallback),this.flyToMode==="smooth"&&(t.easingFunction=ms.LINEAR_NONE),this.view.headingPitchRoll?(t.destination=this.view.position,t.orientation=this.view.headingPitchRoll):this.view.headingPitchRange&&(t.offset=this.view.headingPitchRange),l(e)&&(t=Lt(t,e)),t};var JF=sk;var m1i=y(C(),1);function X8(e){this.type="KmlTourWait",this.blocking=!0,this.duration=e,this.timeout=null}X8.prototype.play=function(e){let t=this;this.activeCallback=e,this.timeout=setTimeout(function(){delete t.activeCallback,e(!1)},this.duration*1e3)};X8.prototype.stop=function(){clearTimeout(this.timeout),l(this.activeCallback)&&this.activeCallback(!0)};var jF=X8;var Cye={avi:"video/x-msvideo",bmp:"image/bmp",bz2:"application/x-bzip2",chm:"application/vnd.ms-htmlhelp",css:"text/css",csv:"text/csv",doc:"application/msword",dvi:"application/x-dvi",eps:"application/postscript",flv:"video/x-flv",gif:"image/gif",gz:"application/x-gzip",htm:"text/html",html:"text/html",ico:"image/vnd.microsoft.icon",jnlp:"application/x-java-jnlp-file",jpeg:"image/jpeg",jpg:"image/jpeg",m3u:"audio/x-mpegurl",m4v:"video/mp4",mathml:"application/mathml+xml",mid:"audio/midi",midi:"audio/midi",mov:"video/quicktime",mp3:"audio/mpeg",mp4:"video/mp4",mp4v:"video/mp4",mpeg:"video/mpeg",mpg:"video/mpeg",odp:"application/vnd.oasis.opendocument.presentation",ods:"application/vnd.oasis.opendocument.spreadsheet",odt:"application/vnd.oasis.opendocument.text",ogg:"application/ogg",pdf:"application/pdf",png:"image/png",pps:"application/vnd.ms-powerpoint",ppt:"application/vnd.ms-powerpoint",ps:"application/postscript",qt:"video/quicktime",rdf:"application/rdf+xml",rss:"application/rss+xml",rtf:"application/rtf",svg:"image/svg+xml",swf:"application/x-shockwave-flash",text:"text/plain",tif:"image/tiff",tiff:"image/tiff",txt:"text/plain",wav:"audio/x-wav",wma:"audio/x-ms-wma",wmv:"video/x-ms-wmv",xml:"application/xml",zip:"application/zip",detectFromFilename:function(e){let t=e.toLowerCase();return t=Fy(t),Cye[t]}},D8;typeof DOMParser<"u"&&(D8=new DOMParser);var Pct=new oU({stripPrefix:!1,email:!1,replaceFn:function(e){return e.urlMatchType==="scheme"||e.urlMatchType==="www"}}),ny=32,uye=2414016,mye=1,hye=16093e3,fye=.1,pye=[null,void 0,"http://www.opengis.net/kml/2.2","http://earth.google.com/kml/2.2","http://earth.google.com/kml/2.1","http://earth.google.com/kml/2.0"],Aye=["http://www.google.com/kml/ext/2.2"],Mct=["http://www.w3.org/2005/Atom"],Fe={kml:pye,gx:Aye,atom:Mct,kmlgx:pye.concat(Aye)},Q8={Document:Gye,Folder:ilt,Placemark:olt,NetworkLink:hlt,GroundOverlay:dlt,PhotoOverlay:wye,ScreenOverlay:llt,Tour:slt};function _p(e){this._dataSource=e,this._deferred=Ol(),this._stack=[],this._promises=[],this._timeoutSet=!1,this._used=!1,this._started=0,this._timeThreshold=1e3}Object.defineProperties(_p.prototype,{dataSource:{get:function(){return this._dataSource}}});_p.prototype.addNodes=function(e,t){this._stack.push({nodes:e,index:0,processingData:t}),this._used=!0};_p.prototype.addPromise=function(e){this._promises.push(e)};_p.prototype.wait=function(){let e=this._deferred;return this._used||e.resolve(),Promise.all([e.promise,Promise.all(this._promises)])};_p.prototype.process=function(){let e=this._stack.length===1;return e&&(this._started=yu._getTimestamp()),this._process(e)};_p.prototype._giveUpTime=function(){if(this._timeoutSet)return;this._timeoutSet=!0,this._timeThreshold=50;let e=this;setTimeout(function(){e._timeoutSet=!1,e._started=yu._getTimestamp(),e._process(!0)},0)};_p.prototype._nextNode=function(){let e=this._stack,t=e[e.length-1],n=t.index,i=t.nodes;if(n!==i.length)return++t.index,i[n]};_p.prototype._pop=function(){let e=this._stack;return e.pop(),e.length===0?(this._deferred.resolve(),!1):!0};_p.prototype._process=function(e){let t=this.dataSource,n=this._stack[this._stack.length-1].processingData,i=this._nextNode();for(;l(i);){let o=Q8[i.localName];if(l(o)&&(Fe.kml.indexOf(i.namespaceURI)!==-1||Fe.gx.indexOf(i.namespaceURI)!==-1)&&(o(t,i,n,this),this._timeoutSet||yu._getTimestamp()>this._started+this._timeThreshold)){this._giveUpTime();return}i=this._nextNode()}this._pop()&&e&&this._process(!0)};function vct(e){let t=e.slice(0,Math.min(4,e.size)),n=Ol(),i=new FileReader;return i.addEventListener("load",function(){n.resolve(new DataView(i.result).getUint32(0,!1)===1347093252)}),i.addEventListener("error",function(){n.reject(i.error)}),i.readAsArrayBuffer(t),n.promise}function Nct(e){let t=Ol(),n=new FileReader;return n.addEventListener("load",function(){t.resolve(n.result)}),n.addEventListener("error",function(){t.reject(n.error)}),n.readAsText(e),t.promise}function xye(e){let t={xsi:"http://www.w3.org/2001/XMLSchema-instance"},n,i,o,r;for(let s in t)t.hasOwnProperty(s)&&(o=RegExp(`[< ]${s}:`),r=`xmlns:${s}=`,o.test(e)&&e.indexOf(r)===-1&&(l(n)||(n=e.substr(0,e.indexOf("<kml")+4),i=e.substr(n.length)),n+=` ${r}"${t[s]}"`));return l(n)&&(e=n+i),e}function Iye(e){let t=e.indexOf("xmlns:"),n=e.indexOf(">",t),i,o,r;for(;t!==-1&&t<n;)i=e.slice(t,e.indexOf('"',t)),o=t,t=e.indexOf(i,t+1),t!==-1?(r=e.indexOf('"',e.indexOf('"',t)+1),e=e.slice(0,t-1)+e.slice(r+1,e.length),t=e.indexOf("xmlns:",o-1)):t=e.indexOf("xmlns:",o+1);return e}function Dct(e,t){return Promise.resolve(e.getData(new FU)).then(function(n){n=xye(n),n=Iye(n),t.kml=D8.parseFromString(n,"application/xml")})}function W8(e,t){let n=Cye.detectFromFilename(e.filename)??"application/octet-stream";return Promise.resolve(e.getData(new XU(n))).then(function(i){t[e.filename]=i})}function gu(e,t,n,i){let o=i.keys,r=new qF.default("."),s=e.querySelectorAll(t);for(let a=0;a<s.length;a++){let c=s[a],d=c.getAttribute(n);if(l(d)){let h=new qF.default(d).absoluteTo(r).toString(),p=o.indexOf(h);if(p!==-1){let g=o[p];c.setAttribute(n,i[g]),t==="a"&&c.getAttribute("download")===null&&c.setAttribute("download",g)}}}}function bu(e,t,n,i){let o=e.querySelectorAll(t);for(let r=0;r<o.length;r++){let s=o[r],a=s.getAttribute(n),c=U8(a,i);l(c)&&s.setAttribute(n,c.url)}}function _ye(e,t,n){let i=na(e,"id");i=l(i)&&i.length!==0?i:qn(),l(n)&&(i=n+i);let o=t.getById(i);return l(o)&&(i=qn(),l(n)&&(i=n+i)),o=t.add(new ur({id:i})),l(o.kml)||(o.addProperty("kml"),o.kml=new glt),o}function $F(e,t){return e==="absolute"||e==="relativeToGround"||t==="relativeToSeaFloor"}function dk(e,t){if(!l(e))return m.fromDegrees(0,0,0,t);let n=e.match(/[^\s,\n]+/g);if(!l(n))return m.fromDegrees(0,0,0,t);let i=parseFloat(n[0]),o=parseFloat(n[1]),r=parseFloat(n[2]);return i=isNaN(i)?0:i,o=isNaN(o)?0:o,r=isNaN(r)?0:r,m.fromDegrees(i,o,r,t)}function ak(e,t){if(!l(e))return;let n=e.textContent.match(/[^\s\n]+/g);if(!l(n))return;let i=n.length,o=new Array(i),r=0;for(let s=0;s<i;s++)o[r++]=dk(n[s],t);return o}function iy(e,t){if(!l(e))return;let n=e.getAttribute(t);if(n!==null){let i=parseFloat(n);return isNaN(i)?void 0:i}}function na(e,t){if(!l(e))return;let n=e.getAttribute(t);return n!==null?n:void 0}function ji(e,t,n){if(!l(e))return;let i=e.childNodes,o=i.length;for(let r=0;r<o;r++){let s=i[r];if(s.localName===t&&n.indexOf(s.namespaceURI)!==-1)return s}}function gye(e,t,n){if(!l(e))return;let i=[],o=e.getElementsByTagNameNS("*",t),r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function rf(e,t,n){if(!l(e))return[];let i=[],o=e.childNodes,r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function gi(e,t,n){let i=ji(e,t,n);if(l(i)){let o=parseFloat(i.textContent);return isNaN(o)?void 0:o}}function Qn(e,t,n){let i=ji(e,t,n);if(l(i))return i.textContent.trim()}function sf(e,t,n){let i=ji(e,t,n);if(l(i)){let o=i.textContent.trim();return o==="1"||/^true$/i.test(o)}}function U8(e,t,n){if(!l(e))return;let i;if(l(n)){e=e.replace(/\\/g,"/");let o=n[e];if(l(o))i=new Ve({url:o});else{let r=new qF.default(t.getUrlComponent()),s=new qF.default(e);o=n[s.absoluteTo(r)],l(o)&&(i=new Ve({url:o}))}}return l(i)||(i=t.getDerivedResource({url:e})),i}var Cd={maximumRed:void 0,red:void 0,maximumGreen:void 0,green:void 0,maximumBlue:void 0,blue:void 0};function v8(e,t){if(!l(e)||/^\s*$/gm.test(e))return;e[0]==="#"&&(e=e.substring(1));let n=parseInt(e.substring(0,2),16)/255,i=parseInt(e.substring(2,4),16)/255,o=parseInt(e.substring(4,6),16)/255,r=parseInt(e.substring(6,8),16)/255;return t?(r>0?(Cd.maximumRed=r,Cd.red=void 0):(Cd.maximumRed=void 0,Cd.red=0),o>0?(Cd.maximumGreen=o,Cd.green=void 0):(Cd.maximumGreen=void 0,Cd.green=0),i>0?(Cd.maximumBlue=i,Cd.blue=void 0):(Cd.maximumBlue=void 0,Cd.blue=0),Cd.alpha=n,U.fromRandom(Cd)):new U(r,o,i,n)}function fI(e,t,n){let i=Qn(e,t,n);if(l(i))return v8(i,Qn(e,"colorMode",n)==="random")}function Qct(e){let t=ji(e,"TimeStamp",Fe.kmlgx),n=Qn(t,"when",Fe.kmlgx);if(!l(t)||!l(n)||n.length===0)return;let i=j.fromIso8601(n),o=new as;return o.addInterval(new wn({start:i,stop:ze.MAXIMUM_VALUE})),o}function Uct(e){let t=ji(e,"TimeSpan",Fe.kmlgx);if(!l(t))return;let n,i=ji(t,"begin",Fe.kmlgx),o=l(i)?j.fromIso8601(i.textContent):void 0,r=ji(t,"end",Fe.kmlgx),s=l(r)?j.fromIso8601(r.textContent):void 0;if(l(o)&&l(s)){if(j.lessThan(s,o)){let a=o;o=s,s=a}n=new as,n.addInterval(new wn({start:o,stop:s}))}else l(o)?(n=new as,n.addInterval(new wn({start:o,stop:ze.MAXIMUM_VALUE}))):l(s)&&(n=new as,n.addInterval(new wn({start:ze.MINIMUM_VALUE,stop:s})));return n}function Eye(){let e=new _c;return e.width=ny,e.height=ny,e.scaleByDistance=new zt(uye,mye,hye,fye),e.pixelOffsetScaleByDistance=new zt(uye,mye,hye,fye),e}function k8(){let e=new uh;return e.outline=!0,e.outlineColor=U.WHITE,e}function Tye(){let e=new dh;return e.translucencyByDistance=new zt(3e6,1,5e6,0),e.pixelOffset=new D(17,0),e.horizontalOrigin=wi.LEFT,e.font="16px sans-serif",e.style=nr.FILL_AND_OUTLINE,e}function Y8(e,t,n,i,o){let r=Qn(e,"href",Fe.kml);if(!l(r)||r.length===0)return;if(r.indexOf("root://icons/palette-")===0){let a=r.charAt(21),c=gi(e,"x",Fe.gx)??0,d=gi(e,"y",Fe.gx)??0;c=Math.min(c/32,7),d=7-Math.min(d/32,7);let u=8*d+c;r=`https://maps.google.com/mapfiles/kml/pal${a}/icon${u}.png`}let s=U8(r,n,i);if(o){let a=Qn(e,"refreshMode",Fe.kml),c=Qn(e,"viewRefreshMode",Fe.kml);a==="onInterval"||a==="onExpire"?xt(`kml-refreshMode-${a}`,`KML - Unsupported Icon refreshMode: ${a}`):(c==="onStop"||c==="onRegion")&&xt(`kml-refreshMode-${c}`,`KML - Unsupported Icon viewRefreshMode: ${c}`);let d=Qn(e,"viewBoundScale",Fe.kml)??1,u=c==="onStop"?"BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]":"",h=Qn(e,"viewFormat",Fe.kml)??u,p=Qn(e,"httpQuery",Fe.kml);l(h)&&s.setQueryParameters(wd(lk(h))),l(p)&&s.setQueryParameters(wd(lk(p)));let g=t._ellipsoid;return H8(s,t.camera,t.canvas,d,t._lastCameraView.bbox,g),s}return s}function kct(e,t,n,i,o){let r=gi(t,"scale",Fe.kml),s=gi(t,"heading",Fe.kml),a=fI(t,"color",Fe.kml),c=ji(t,"Icon",Fe.kml),d=Y8(c,e,i,o,!1);l(c)&&!l(d)&&(d=!1);let u=gi(c,"x",Fe.gx),h=gi(c,"y",Fe.gx),p=gi(c,"w",Fe.gx),g=gi(c,"h",Fe.gx),f=ji(t,"hotSpot",Fe.kml),b=iy(f,"x"),x=iy(f,"y"),I=na(f,"xunits"),_=na(f,"yunits"),E=n.billboard;l(E)||(E=Eye(),n.billboard=E),E.image=d,E.scale=r,E.color=a,(l(u)||l(h)||l(p)||l(g))&&(E.imageSubRegion=new Ke(u,h,p,g)),l(s)&&s!==0&&(E.rotation=Z.toRadians(-s),E.alignedAxis=m.UNIT_Z),r=r??1;let S,R;l(b)&&(I==="pixels"?S=-b*r:I==="insetPixels"?S=(b-ny)*r:I==="fraction"&&(S=-b*ny*r),S+=ny*.5*r),l(x)&&(_==="pixels"?R=x*r:_==="insetPixels"?R=(-x+ny)*r:_==="fraction"&&(R=x*ny*r),R-=ny*.5*r),(l(S)||l(R))&&(E.pixelOffset=new D(S,R))}function ck(e,t,n,i,o){for(let r=0,s=t.childNodes.length;r<s;r++){let a=t.childNodes.item(r);if(a.localName==="IconStyle")kct(e,a,n,i,o);else if(a.localName==="LabelStyle"){let c=n.label;l(c)||(c=Tye(),n.label=c),c.scale=gi(a,"scale",Fe.kml)??c.scale,c.fillColor=fI(a,"color",Fe.kml)??c.fillColor,c.text=n.name}else if(a.localName==="LineStyle"){let c=n.polyline;l(c)||(c=new Zc,n.polyline=c),c.width=gi(a,"width",Fe.kml),c.material=fI(a,"color",Fe.kml),l(fI(a,"outerColor",Fe.gx))&&xt("kml-gx:outerColor","KML - gx:outerColor is not supported in a LineStyle"),l(gi(a,"outerWidth",Fe.gx))&&xt("kml-gx:outerWidth","KML - gx:outerWidth is not supported in a LineStyle"),l(gi(a,"physicalWidth",Fe.gx))&&xt("kml-gx:physicalWidth","KML - gx:physicalWidth is not supported in a LineStyle"),l(sf(a,"labelVisibility",Fe.gx))&&xt("kml-gx:labelVisibility","KML - gx:labelVisibility is not supported in a LineStyle")}else if(a.localName==="PolyStyle"){let c=n.polygon;l(c)||(c=k8(),n.polygon=c),c.material=fI(a,"color",Fe.kml)??c.material,c.fill=sf(a,"fill",Fe.kml)??c.fill,c.outline=sf(a,"outline",Fe.kml)??c.outline}else if(a.localName==="BalloonStyle"){let c=v8(Qn(a,"bgColor",Fe.kml))??U.WHITE,d=v8(Qn(a,"textColor",Fe.kml))??U.BLACK,u=Qn(a,"text",Fe.kml);n.addProperty("balloonStyle"),n.balloonStyle={bgColor:c,textColor:d,text:u}}else if(a.localName==="ListStyle"){let c=Qn(a,"listItemType",Fe.kml);(c==="radioFolder"||c==="checkOffOnly")&&xt(`kml-listStyle-${c}`,`KML - Unsupported ListStyle with listItemType: ${c}`)}}}function Yct(e,t,n,i,o){let r=new ur,s,a=-1,c=t.childNodes,d=c.length;for(let h=0;h<d;h++){let p=c[h];(p.localName==="Style"||p.localName==="StyleMap")&&(a=h)}if(a!==-1){let h=c[a];if(h.localName==="Style")ck(e,h,r,i,o);else{let p=rf(h,"Pair",Fe.kml);for(let g=0;g<p.length;g++){let f=p[g],b=Qn(f,"key",Fe.kml);if(b==="normal"){let x=Qn(f,"styleUrl",Fe.kml);if(l(x))s=n.getById(x),l(s)||(s=n.getById(`#${x}`)),l(s)&&r.merge(s);else{let I=ji(f,"Style",Fe.kml);ck(e,I,r,i,o)}}else xt(`kml-styleMap-${b}`,`KML - Unsupported StyleMap key: ${b}`)}}}let u=Qn(t,"styleUrl",Fe.kml);if(l(u)){let h=u;if(u[0]!=="#"&&u.indexOf("#")!==-1){let p=u.split("#"),g=p[0];h=`${i.getDerivedResource({url:g}).getUrlComponent()}#${p[1]}`}s=n.getById(h),l(s)||(s=n.getById(`#${h}`)),l(s)&&r.merge(s)}return r}function Oct(e,t,n){return t.fetchXML().then(function(i){return Sye(e,i,n,t,!0)})}function Sye(e,t,n,i,o,r){let s,a,c,d,u=gye(t,"Style",Fe.kml);if(l(u)){let b=u.length;for(s=0;s<b;s++)d=u[s],a=na(d,"id"),l(a)&&(a=`#${a}`,o&&l(i)&&(a=i.getUrlComponent()+a),l(n.getById(a))||(c=new ur({id:a}),n.add(c),ck(e,d,c,i,r)))}let h=gye(t,"StyleMap",Fe.kml);if(l(h)){let b=h.length;for(s=0;s<b;s++){let x=h[s];if(a=na(x,"id"),l(a)){let I=rf(x,"Pair",Fe.kml);for(let _=0;_<I.length;_++){let E=I[_],S=Qn(E,"key",Fe.kml);if(S==="normal"){if(a=`#${a}`,o&&l(i)&&(a=i.getUrlComponent()+a),!l(n.getById(a))){c=n.getOrCreateEntity(a);let R=Qn(E,"styleUrl",Fe.kml);if(l(R)){R[0]!=="#"&&(R=`#${R}`),o&&l(i)&&(R=i.getUrlComponent()+R);let G=n.getById(R);l(G)&&c.merge(G)}else d=ji(E,"Style",Fe.kml),ck(e,d,c,i,r)}}else xt(`kml-styleMap-${S}`,`KML - Unsupported StyleMap key: ${S}`)}}}}let p=[],g=t.getElementsByTagName("styleUrl"),f=g.length;for(s=0;s<f;s++){let b=g[s].textContent;if(b[0]!=="#"){let x=b.split("#");if(x.length===2){let I=x[0],_=i.getDerivedResource({url:I});p.push(Oct(e,_,n))}}}return p}function O8(e,t,n){let i=new Ig(e,t.id,["position"]),o=new up(t.position);t.polyline=l(n.polyline)?n.polyline.clone():new Zc,t.polyline.positions=new xg([i,o])}function Lye(e,t){return!l(e)&&!l(t)||e==="clampToGround"?et.CLAMP_TO_GROUND:e==="relativeToGround"?et.RELATIVE_TO_GROUND:e==="absolute"?et.NONE:t==="clampToSeaFloor"?(xt("kml-gx:altitudeMode-clampToSeaFloor","KML - <gx:altitudeMode>:clampToSeaFloor is currently not supported, using <kml:altitudeMode>:clampToGround."),et.CLAMP_TO_GROUND):t==="relativeToSeaFloor"?(xt("kml-gx:altitudeMode-relativeToSeaFloor","KML - <gx:altitudeMode>:relativeToSeaFloor is currently not supported, using <kml:altitudeMode>:relativeToGround."),et.RELATIVE_TO_GROUND):(l(e)?xt("kml-altitudeMode-unknown",`KML - Unknown <kml:altitudeMode>:${e}, using <kml:altitudeMode>:CLAMP_TO_GROUND.`):xt("kml-gx:altitudeMode-unknown",`KML - Unknown <gx:altitudeMode>:${t}, using <kml:altitudeMode>:CLAMP_TO_GROUND.`),et.CLAMP_TO_GROUND)}function Hct(e,t,n){return n==="relativeToSeaFloor"||t==="absolute"||t==="relativeToGround"?e:((l(t)&&t!=="clampToGround"||l(n)&&n!=="clampToSeaFloor")&&xt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${t??n}`),new up(e))}function zct(e,t,n,i){if(!l(e))return;if(n==="relativeToSeaFloor"||t==="absolute"||t==="relativeToGround")return e;(l(t)&&t!=="clampToGround"||l(n)&&n!=="clampToSeaFloor")&&xt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${t??n}`);let o=e.length;for(let r=0;r<o;r++){let s=e[r];i.scaleToGeodeticSurface(s,s)}return e}function uk(e,t,n,i){let o=t.label;l(o)||(o=l(n.label)?n.label.clone():Tye(),t.label=o),o.text=t.name;let r=t.billboard;l(r)||(r=l(n.billboard)?n.billboard.clone():Eye(),t.billboard=r),l(r.image)?r.image.getValue()||(r.image=void 0):r.image=e._pinBuilder.fromColor(U.YELLOW,64);let s=1;l(r.scale)&&(s=r.scale.getValue(),s!==0?o.pixelOffset=new D(s*16+1,0):(o.pixelOffset=void 0,o.horizontalOrigin=void 0)),l(i)&&e._clampToGround&&(r.heightReference=i,o.heightReference=i)}function Rye(e,t){let n=e.path;l(n)||(n=new mA,n.leadTime=0,e.path=n);let i=t.polyline;l(i)&&(n.material=i.material,n.width=i.width)}function Kct(e,t,n,i,o){let r=Qn(n,"coordinates",Fe.kml),s=Qn(n,"altitudeMode",Fe.kml),a=Qn(n,"altitudeMode",Fe.gx),c=sf(n,"extrude",Fe.kml),d=e._ellipsoid,u=dk(r,d);return i.position=u,uk(e,i,o,Lye(s,a)),c&&$F(s,a)&&O8(t,i,o),!0}function bye(e,t,n,i,o){let r=ji(n,"coordinates",Fe.kml),s=Qn(n,"altitudeMode",Fe.kml),a=Qn(n,"altitudeMode",Fe.gx),c=sf(n,"extrude",Fe.kml),d=sf(n,"tessellate",Fe.kml),u=$F(s,a),h=gi(n,"drawOrder",Fe.gx),p=e._ellipsoid,g=ak(r,p),f=o.polyline;if(u&&c){let b=new hA;i.wall=b,b.positions=g;let x=o.polygon;l(x)&&(b.fill=x.fill,b.material=x.material),b.outline=!0,l(f)?(b.outlineColor=l(f.material)?f.material.color:U.WHITE,b.outlineWidth=f.width):l(x)&&(b.outlineColor=l(x.material)?x.material.color:U.WHITE)}else if(e._clampToGround&&!u&&d){let b=new Zc;b.clampToGround=!0,i.polyline=b,b.positions=g,l(f)?(b.material=l(f.material)?f.material.color.getValue(ze.MINIMUM_VALUE):U.WHITE,b.width=f.width??1):(b.material=U.WHITE,b.width=1),b.zIndex=h}else l(h)&&xt("kml-gx:drawOrder","KML - gx:drawOrder is not supported in LineStrings when clampToGround is false"),e._clampToGround&&!d&&xt("kml-line-tesselate","Ignoring clampToGround for KML lines without the tessellate flag."),f=l(f)?f.clone():new Zc,i.polyline=f,f.positions=zct(g,s,a,p),(!d||u)&&(f.arcType=dn.NONE);return!0}function Jct(e,t,n,i,o){let r=ji(n,"outerBoundaryIs",Fe.kml),s=ji(r,"LinearRing",Fe.kml),a=ji(s,"coordinates",Fe.kml),c=e._ellipsoid,d=ak(a,c),u=sf(n,"extrude",Fe.kml),h=Qn(n,"altitudeMode",Fe.kml),p=Qn(n,"altitudeMode",Fe.gx),g=$F(h,p),f=l(o.polygon)?o.polygon.clone():k8(),b=o.polyline;if(l(b)&&(f.outlineColor=l(b.material)?b.material.color:U.WHITE,f.outlineWidth=b.width),i.polygon=f,g?(f.perPositionHeight=!0,f.extrudedHeight=u?0:void 0):e._clampToGround||(f.height=0),l(d)){let x=new lc(d),I=rf(n,"innerBoundaryIs",Fe.kml);for(let _=0;_<I.length;_++){s=rf(I[_],"LinearRing",Fe.kml);for(let E=0;E<s.length;E++)a=ji(s[E],"coordinates",Fe.kml),d=ak(a,c),l(d)&&x.holes.push(new lc(d))}f.hierarchy=x}return!0}function jct(e,t,n,i,o){let r=Qn(n,"altitudeMode",Fe.kml),s=Qn(n,"altitudeMode",Fe.gx),a=rf(n,"coord",Fe.gx),c=rf(n,"angles",Fe.gx),d=rf(n,"when",Fe.kml),u=sf(n,"extrude",Fe.kml),h=$F(r,s),p=e._ellipsoid;c.length>0&&xt("kml-gx:angles","KML - gx:angles are not supported in gx:Tracks");let g=Math.min(a.length,d.length),f=[],b=[];for(let I=0;I<g;I++){let _=dk(a[I].textContent,p);f.push(_),b.push(j.fromIso8601(d[I].textContent))}let x=new Oa;return x.addSamples(b,f),i.position=x,uk(e,i,o,Lye(r,s)),Rye(i,o),i.availability=new as,d.length>0&&i.availability.addInterval(new wn({start:b[0],stop:b[b.length-1]})),h&&u&&O8(t,i,o),!0}function yye(e,t,n,i,o,r,s,a,c){let d=e[0],u=e[e.length-1],h=new Oa;h.addSamples(e,t),n.intervals.addInterval(new wn({start:d,stop:u,isStartIncluded:c,isStopIncluded:c,data:Hct(h,s,a)})),i.addInterval(new wn({start:d,stop:u,isStartIncluded:c,isStopIncluded:c})),o.intervals.addInterval(new wn({start:d,stop:u,isStartIncluded:c,isStopIncluded:c,data:r}))}function qct(e,t,n,i,o){let r=sf(n,"interpolate",Fe.gx),s=rf(n,"Track",Fe.gx),a,c,d,u=!1,h=new Eg,p=new as,g=new ka,f=e._ellipsoid;for(let b=0,x=s.length;b<x;b++){let I=s[b],_=rf(I,"when",Fe.kml),E=rf(I,"coord",Fe.gx),S=Qn(I,"altitudeMode",Fe.kml),R=Qn(I,"altitudeMode",Fe.gx),G=$F(S,R),B=sf(I,"extrude",Fe.kml),w=Math.min(E.length,_.length),F=[];a=[];for(let P=0;P<w;P++){let A=dk(E[P].textContent,f);F.push(A),a.push(j.fromIso8601(_[P].textContent))}r&&(l(c)&&yye([c,a[0]],[d,F[0]],g,p,h,!1,"absolute",void 0,!1),c=a[w-1],d=F[F.length-1]),yye(a,F,g,p,h,G&&B,S,R,!0),u=u||G&&B}return i.availability=p,i.position=g,uk(e,i,o),Rye(i,o),u&&(O8(t,i,o),i.polyline.show=h),!0}var Vye={Point:Kct,LineString:bye,LinearRing:bye,Polygon:Jct,Track:jct,MultiTrack:qct,MultiGeometry:$ct,Model:elt};function $ct(e,t,n,i,o,r){let s=n.childNodes,a=!1;for(let c=0,d=s.length;c<d;c++){let u=s.item(c),h=Vye[u.localName];if(l(h)){let p=_ye(u,t,r);p.parent=i,p.name=i.name,p.availability=i.availability,p.description=i.description,p.kml=i.kml,h(e,t,u,p,o)&&(a=!0)}}return a}function elt(e,t,n,i,o){return xt("kml-unsupportedGeometry",`KML - Unsupported geometry: ${n.localName}`),!1}function tlt(e,t){let n=ji(e,"ExtendedData",Fe.kml);if(!l(n))return;l(ji(n,"SchemaData",Fe.kml))&&xt("kml-schemaData","KML - SchemaData is unsupported"),l(na(n,"xmlns:prefix"))&&xt("kml-extendedData","KML - ExtendedData with xmlns:prefix is unsupported");let i={},o=rf(n,"Data",Fe.kml);if(l(o)){let r=o.length;for(let s=0;s<r;s++){let a=o[s],c=na(a,"name");l(c)&&(i[c]={displayName:Qn(a,"displayName",Fe.kml),value:Qn(a,"value",Fe.kml)})}}t.kml.extendedData=i}var Vo;typeof document<"u"&&(Vo=document.createElement("div"));function nlt(e,t,n,i,o){let r,s,a,c=t.kml,d=c.extendedData,u=Qn(e,"description",Fe.kml),h=t.balloonStyle??n.balloonStyle,p=U.WHITE,g=U.BLACK,f=u;l(h)&&(p=h.bgColor??U.WHITE,g=h.textColor??U.BLACK,f=h.text??u);let b;if(l(f)){if(f=f.replace("$[name]",t.name??""),f=f.replace("$[description]",u??""),f=f.replace("$[address]",c.address??""),f=f.replace("$[Snippet]",c.snippet??""),f=f.replace("$[id]",t.id),f=f.replace("$[geDirections]",""),l(d)){let _=f.match(/\$\[.+?\]/g);if(_!==null)for(r=0;r<_.length;r++){let E=_[r],S=E.substr(2,E.length-3),R=/\/displayName$/.test(S);S=S.replace(/\/displayName$/,""),b=d[S],l(b)&&(b=R?b.displayName:b.value),l(b)&&(f=f.replace(E,b??""))}}}else if(l(d)&&(a=Object.keys(d),a.length>0)){for(f='<table class="cesium-infoBox-defaultTable cesium-infoBox-defaultTable-lighter"><tbody>',r=0;r<a.length;r++)s=a[r],b=d[s],f+=`<tr><th>${b.displayName??s}</th><td>${b.value??""}</td></tr>`;f+="</tbody></table>"}if(!l(f))return;f=Pct.link(f),Vo.innerHTML=f;let x=Vo.querySelectorAll("a");for(r=0;r<x.length;r++)x[r].setAttribute("target","_blank");l(i)&&i.keys.length>1&&(gu(Vo,"a","href",i),gu(Vo,"link","href",i),gu(Vo,"area","href",i),gu(Vo,"img","src",i),gu(Vo,"iframe","src",i),gu(Vo,"video","src",i),gu(Vo,"audio","src",i),gu(Vo,"source","src",i),gu(Vo,"track","src",i),gu(Vo,"input","src",i),gu(Vo,"embed","src",i),gu(Vo,"script","src",i),gu(Vo,"video","poster",i)),bu(Vo,"a","href",o),bu(Vo,"link","href",o),bu(Vo,"area","href",o),bu(Vo,"img","src",o),bu(Vo,"iframe","src",o),bu(Vo,"video","src",o),bu(Vo,"audio","src",o),bu(Vo,"source","src",o),bu(Vo,"track","src",o),bu(Vo,"input","src",o),bu(Vo,"embed","src",o),bu(Vo,"script","src",o),bu(Vo,"video","poster",o);let I='<div class="cesium-infoBox-description-lighter" style="';I+="overflow:auto;",I+="word-wrap:break-word;",I+=`background-color:${p.toCssColorString()};`,I+=`color:${g.toCssColorString()};`,I+='">',I+=`${Vo.innerHTML}</div>`,Vo.innerHTML="",t.description=I}function mk(e,t,n){let i=n.entityCollection,o=n.parentEntity,r=n.sourceResource,s=n.uriResolver,a=_ye(t,i,n.context),c=a.kml,d=Yct(e,t,n.styleCollection,r,s),u=Qn(t,"name",Fe.kml);a.name=u,a.parent=o;let h=Uct(t);l(h)||(h=Qct(t)),a.availability=h,K8(a);function p(E){return E?E.show&&p(E.parent):!0}let g=sf(t,"visibility",Fe.kml);a.show=p(o)&&(g??!0);let f=ji(t,"author",Fe.atom),b=c.author;b.name=Qn(f,"name",Fe.atom),b.uri=Qn(f,"uri",Fe.atom),b.email=Qn(f,"email",Fe.atom);let x=ji(t,"link",Fe.atom),I=c.link;I.href=na(x,"href"),I.hreflang=na(x,"hreflang"),I.rel=na(x,"rel"),I.type=na(x,"type"),I.title=na(x,"title"),I.length=na(x,"length"),c.address=Qn(t,"address",Fe.kml),c.phoneNumber=Qn(t,"phoneNumber",Fe.kml),c.snippet=Qn(t,"Snippet",Fe.kml),tlt(t,a),nlt(t,a,d,s,r);let _=e._ellipsoid;return Bye(t,a,_),Zye(t,a,_),l(ji(t,"Region",Fe.kml))&&xt("kml-region","KML - Placemark Regions are unsupported"),{entity:a,styleEntity:d}}function Gye(e,t,n,i){i.addNodes(t.childNodes,n),i.process()}function ilt(e,t,n,i){let o=mk(e,t,n),r=ke(n);r.parentEntity=o.entity,Gye(e,t,r,i)}function olt(e,t,n,i){let o=mk(e,t,n),r=o.entity,s=o.styleEntity,a=!1,c=t.childNodes;for(let d=0,u=c.length;d<u&&!a;d++){let h=c.item(d),p=Vye[h.localName];l(p)&&(p(e,n.entityCollection,h,r,s,r.id),a=!0)}a||(r.merge(s),uk(e,r,s))}var rlt={FlyTo:clt,Wait:alt,SoundCue:F8,AnimatedUpdate:F8,TourControl:F8};function slt(e,t,n,i){let o=Qn(t,"name",Fe.kml),r=na(t,"id"),s=new zF(o,r),a=ji(t,"Playlist",Fe.gx);if(a){let c=e._ellipsoid,d=a.childNodes;for(let u=0;u<d.length;u++){let h=d[u];if(h.localName){let p=rlt[h.localName];p?p(s,h,c):console.log(`Unknown KML Tour playlist entry type ${h.localName}`)}}}e._kmlTours.push(s)}function F8(e,t){xt(`KML Tour unsupported node ${t.localName}`)}function alt(e,t){let n=gi(t,"duration",Fe.gx);e.addPlaylistEntry(new jF(n))}function clt(e,t,n){let i=gi(t,"duration",Fe.gx),o=Qn(t,"flyToMode",Fe.gx),r={kml:{}};Bye(t,r,n),Zye(t,r,n);let s=r.kml.lookAt||r.kml.camera,a=new JF(i,o,s);e.addPlaylistEntry(a)}function Zye(e,t,n){let i=ji(e,"Camera",Fe.kml);if(l(i)){let o=gi(i,"longitude",Fe.kml)??0,r=gi(i,"latitude",Fe.kml)??0,s=gi(i,"altitude",Fe.kml)??0,a=gi(i,"heading",Fe.kml)??0,c=gi(i,"tilt",Fe.kml)??0,d=gi(i,"roll",Fe.kml)??0,u=m.fromDegrees(o,r,s,n),h=ic.fromDegrees(a,c-90,d);t.kml.camera=new _F(u,h)}}function Bye(e,t,n){let i=ji(e,"LookAt",Fe.kml);if(l(i)){let o=gi(i,"longitude",Fe.kml)??0,r=gi(i,"latitude",Fe.kml)??0,s=gi(i,"altitude",Fe.kml)??0,a=gi(i,"heading",Fe.kml),c=gi(i,"tilt",Fe.kml),d=gi(i,"range",Fe.kml)??0;c=Z.toRadians(c??0),a=Z.toRadians(a??0);let u=new Vm(a,c-Z.PI_OVER_TWO,d),h=m.fromDegrees(o,r,s,n);t.kml.lookAt=new HF(h,u)}}function llt(e,t,n,i){let o=n.screenOverlayContainer;if(!l(o))return;let r=n.sourceResource,s=n.uriResolver,a=ji(t,"Icon",Fe.kml),c=Y8(a,e,r,s,!1);if(!l(c))return;let d=document.createElement("img");e._screenOverlays.push(d),d.src=c.url,d.onload=function(){let u=["position: absolute"],h=ji(t,"screenXY",Fe.kml),p=ji(t,"overlayXY",Fe.kml),g=ji(t,"size",Fe.kml),f,b,x,I,_,E;l(g)&&(f=iy(g,"x"),b=iy(g,"y"),x=na(g,"xunits"),I=na(g,"yunits"),l(f)&&f!==-1&&f!==0&&(x==="fraction"?_=`width: ${Math.floor(f*100)}%`:x==="pixels"&&(_=`width: ${f}px`),u.push(_)),l(b)&&b!==-1&&b!==0&&(I==="fraction"?E=`height: ${Math.floor(b*100)}%`:I==="pixels"&&(E=`height: ${b}px`),u.push(E))),d.style=u.join(";");let S=0,R=d.height;l(p)&&(f=iy(p,"x"),b=iy(p,"y"),x=na(p,"xunits"),I=na(p,"yunits"),l(f)&&(x==="fraction"?S=f*d.width:(x==="pixels"||x==="insetPixels")&&(S=f)),l(b)&&(I==="fraction"?R=b*d.height:(I==="pixels"||I==="insetPixels")&&(R=b))),l(h)&&(f=iy(h,"x"),b=iy(h,"y"),x=na(h,"xunits"),I=na(h,"yunits"),l(f)&&(x==="fraction"?_=`left: calc(${Math.floor(f*100)}% - ${S}px)`:x==="pixels"?_=`left: ${f-S}px`:x==="insetPixels"&&(_=`right: ${f-S}px`),u.push(_)),l(b)&&(I==="fraction"?E=`bottom: calc(${Math.floor(b*100)}% - ${R}px)`:I==="pixels"?E=`bottom: ${b-R}px`:I==="insetPixels"&&(E=`top: ${b-R}px`),u.push(E))),d.style=u.join(";")},o.appendChild(d)}function dlt(e,t,n,i){let r=mk(e,t,n).entity,s,a=!1,c=e._ellipsoid,d=ak(ji(t,"LatLonQuad",Fe.gx),c),u=gi(t,"drawOrder",Fe.kml);if(l(d))s=k8(),s.hierarchy=new lc(d),s.zIndex=u,r.polygon=s,a=!0;else{s=new mh,s.zIndex=u,r.rectangle=s;let f=ji(t,"LatLonBox",Fe.kml);if(l(f)){let b=gi(f,"west",Fe.kml),x=gi(f,"south",Fe.kml),I=gi(f,"east",Fe.kml),_=gi(f,"north",Fe.kml);l(b)&&(b=Z.negativePiToPi(Z.toRadians(b))),l(x)&&(x=Z.clampToLatitudeRange(Z.toRadians(x))),l(I)&&(I=Z.negativePiToPi(Z.toRadians(I))),l(_)&&(_=Z.clampToLatitudeRange(Z.toRadians(_))),s.coordinates=new le(b,x,I,_);let E=gi(f,"rotation",Fe.kml);if(l(E)){let S=Z.toRadians(E);s.rotation=S,s.stRotation=S}}}let h=ji(t,"Icon",Fe.kml),p=Y8(h,e,n.sourceResource,n.uriResolver,!0);if(l(p)){a&&xt("kml-gx:LatLonQuad","KML - gx:LatLonQuad Icon does not support texture projection.");let f=gi(h,"x",Fe.gx),b=gi(h,"y",Fe.gx),x=gi(h,"w",Fe.gx),I=gi(h,"h",Fe.gx);(l(f)||l(b)||l(x)||l(I))&&xt("kml-groundOverlay-xywh","KML - gx:x, gx:y, gx:w, gx:h aren't supported for GroundOverlays"),s.material=p,s.material.color=fI(t,"color",Fe.kml),s.material.transparent=!0}else s.material=fI(t,"color",Fe.kml);let g=Qn(t,"altitudeMode",Fe.kml);l(g)?g==="absolute"?(s.height=gi(t,"altitude",Fe.kml),s.zIndex=void 0):g!=="clampToGround"&&xt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${g}`):(g=Qn(t,"altitudeMode",Fe.gx),g==="relativeToSeaFloor"?(xt("kml-altitudeMode-relativeToSeaFloor","KML - altitudeMode relativeToSeaFloor is currently not supported, treating as absolute."),s.height=gi(t,"altitude",Fe.kml),s.zIndex=void 0):g==="clampToSeaFloor"?xt("kml-altitudeMode-clampToSeaFloor","KML - altitudeMode clampToSeaFloor is currently not supported, treating as clampToGround."):l(g)&&xt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${g}`))}function wye(e,t,n,i){e._unsupportedNode.raiseEvent(e,n.parentEntity,t,n.entityCollection,n.styleCollection,n.sourceResource,n.uriResolver),xt(`kml-unsupportedFeature-${t.nodeName}`,`KML - Unsupported feature: ${t.nodeName}`)}var oy={INTERVAL:0,EXPIRE:1,STOP:2};function lk(e){if(!l(e)||e.length===0)return"";let t=e[0];return(t==="&"||t==="?")&&(e=e.substring(1)),e}var ult=new le,OS=new ge,P8=new D,mlt=new m;function H8(e,t,n,i,o,r){function s(d){return d<-Z.PI_OVER_TWO?-Z.PI_OVER_TWO:d>Z.PI_OVER_TWO?Z.PI_OVER_TWO:d}function a(d){return d>Z.PI?d-Z.TWO_PI:d<-Z.PI?d+Z.TWO_PI:d}let c=vy(e.queryParameters);if(c=c.replace(/%5B/g,"[").replace(/%5D/g,"]"),l(t)&&t._mode!==re.MORPHING){let d,u;if(o=o??ult,l(n)&&(P8.x=n.clientWidth*.5,P8.y=n.clientHeight*.5,d=t.pickEllipsoid(P8,r,mlt)),l(d)?u=r.cartesianToCartographic(d,OS):(u=le.center(o,OS),d=r.cartographicToCartesian(u)),l(i)&&!Z.equalsEpsilon(i,1,Z.EPSILON9)){let I=o.width*i*.5,_=o.height*i*.5;o=new le(a(u.longitude-I),s(u.latitude-_),a(u.longitude+I),s(u.latitude+_))}c=c.replace("[bboxWest]",Z.toDegrees(o.west).toString()),c=c.replace("[bboxSouth]",Z.toDegrees(o.south).toString()),c=c.replace("[bboxEast]",Z.toDegrees(o.east).toString()),c=c.replace("[bboxNorth]",Z.toDegrees(o.north).toString());let h=Z.toDegrees(u.longitude).toString(),p=Z.toDegrees(u.latitude).toString();c=c.replace("[lookatLon]",h),c=c.replace("[lookatLat]",p),c=c.replace("[lookatTilt]",Z.toDegrees(t.pitch).toString()),c=c.replace("[lookatHeading]",Z.toDegrees(t.heading).toString()),c=c.replace("[lookatRange]",m.distance(t.positionWC,d)),c=c.replace("[lookatTerrainLon]",h),c=c.replace("[lookatTerrainLat]",p),c=c.replace("[lookatTerrainAlt]",u.height.toString()),r.cartesianToCartographic(t.positionWC,OS),c=c.replace("[cameraLon]",Z.toDegrees(OS.longitude).toString()),c=c.replace("[cameraLat]",Z.toDegrees(OS.latitude).toString()),c=c.replace("[cameraAlt]",Z.toDegrees(OS.height).toString());let g=t.frustum,f=g.aspectRatio,b="",x="";if(l(f)){let I=Z.toDegrees(g.fov);f>1?(b=I,x=I/f):(x=I,b=I*f)}c=c.replace("[horizFov]",b.toString()),c=c.replace("[vertFov]",x.toString())}else c=c.replace("[bboxWest]","-180"),c=c.replace("[bboxSouth]","-90"),c=c.replace("[bboxEast]","180"),c=c.replace("[bboxNorth]","90"),c=c.replace("[lookatLon]",""),c=c.replace("[lookatLat]",""),c=c.replace("[lookatRange]",""),c=c.replace("[lookatTilt]",""),c=c.replace("[lookatHeading]",""),c=c.replace("[lookatTerrainLon]",""),c=c.replace("[lookatTerrainLat]",""),c=c.replace("[lookatTerrainAlt]",""),c=c.replace("[cameraLon]",""),c=c.replace("[cameraLat]",""),c=c.replace("[cameraAlt]",""),c=c.replace("[horizFov]",""),c=c.replace("[vertFov]","");l(n)?(c=c.replace("[horizPixels]",n.clientWidth),c=c.replace("[vertPixels]",n.clientHeight)):(c=c.replace("[horizPixels]",""),c=c.replace("[vertPixels]","")),c=c.replace("[terrainEnabled]","1"),c=c.replace("[clientVersion]","1"),c=c.replace("[kmlVersion]","2.2"),c=c.replace("[clientName]","Cesium"),c=c.replace("[language]","English"),e.setQueryParameters(wd(c))}function hlt(e,t,n,i){let r=mk(e,t,n).entity,s=n.sourceResource,a=n.uriResolver,c=ji(t,"Link",Fe.kml);if(l(c)||(c=ji(t,"Url",Fe.kml)),l(c)){let d=Qn(c,"href",Fe.kml),u,h;if(l(d)){let p=d;if(d=U8(d,s,n.uriResolver),/^data:/.test(d.getUrlComponent()))/\.kmz/i.test(s.getUrlComponent())||(p=s.getDerivedResource({url:p}));else{if(p=d.clone(),u=Qn(c,"viewRefreshMode",Fe.kml),u==="onRegion"){xt("kml-refrehMode-onRegion","KML - Unsupported viewRefreshMode: onRegion");return}h=Qn(c,"viewBoundScale",Fe.kml)??1;let x=u==="onStop"?"BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]":"",I=Qn(c,"viewFormat",Fe.kml)??x,_=Qn(c,"httpQuery",Fe.kml);l(I)&&d.setQueryParameters(wd(lk(I))),l(_)&&d.setQueryParameters(wd(lk(_)));let E=e._ellipsoid;H8(d,e.camera,e.canvas,h,e._lastCameraView.bbox,E)}let g={sourceUri:p,uriResolver:a,context:r.id,screenOverlayContainer:n.screenOverlayContainer},f=new Ca,b=z8(e,f,d,g).then(function(x){let I=e._entityCollection,_=f.values;I.suspendEvents();for(let R=0;R<_.length;R++){let G=_[R];l(G.parent)||(G.parent=r,K8(G)),I.add(G)}I.resumeEvents();let E=Qn(c,"refreshMode",Fe.kml),S=gi(c,"refreshInterval",Fe.kml)??0;if(E==="onInterval"&&S>0||E==="onExpire"||u==="onStop"){let R=ji(x,"NetworkLinkControl",Fe.kml),G=l(R),B=j.now(),w={id:qn(),href:d,cookie:{},lastUpdated:B,updating:!1,entity:r,viewBoundScale:h,needsUpdate:!1,cameraUpdateTime:B},F=0;if(G&&(w.cookie=wd(Qn(R,"cookie",Fe.kml)??""),F=gi(R,"minRefreshPeriod",Fe.kml)??0),E==="onInterval")G&&(S=Math.max(F,S)),w.refreshMode=oy.INTERVAL,w.time=S;else if(E==="onExpire"){let P;if(G&&(P=Qn(R,"expires",Fe.kml)),l(P))try{let A=j.fromIso8601(P),T=j.secondsDifference(A,B);T>0&&T<F&&j.addSeconds(B,F,A),w.refreshMode=oy.EXPIRE,w.time=A}catch{xt("kml-refreshMode-onInterval-onExpire","KML - NetworkLinkControl expires is not a valid date")}else xt("kml-refreshMode-onExpire","KML - refreshMode of onExpire requires the NetworkLinkControl to have an expires element")}else l(e.camera)?(w.refreshMode=oy.STOP,w.time=gi(c,"viewRefreshTime",Fe.kml)??0):xt("kml-refrehMode-onStop-noCamera","A NetworkLink with viewRefreshMode=onStop requires the `camera` property to be defined.");l(w.refreshMode)&&e._networkLinks.set(w.id,w)}}).catch(function(x){xt(`An error occured during loading ${d.url}`),e._error.raiseEvent(e,x)});i.addPromise(b)}}}function flt(e,t,n,i){let o=Q8[t.localName];return l(o)?o(e,t,n,i):wye(e,t,n,i)}function N8(e,t,n,i,o,r,s){t.removeAll();let a=n.documentElement,c=a.localName==="Document"?a:ji(a,"Document",Fe.kml),d=Qn(c,"name",Fe.kml);l(d)||(d=yg(i.getUrlComponent())),l(e._name)||(e._name=d);let u=new yu._DeferredLoading(e),h=new Ca(e);return Promise.all(Sye(e,n,h,i,!1,o)).then(function(){let p=n.documentElement;if(p.localName==="kml"){let f=p.childNodes;for(let b=0;b<f.length;b++){let x=f[b];if(l(Q8[x.localName])){p=x;break}}}let g={parentEntity:void 0,entityCollection:t,styleCollection:h,sourceResource:i,uriResolver:o,context:s,screenOverlayContainer:r};return t.suspendEvents(),flt(e,p,g,u),t.resumeEvents(),u.wait().then(function(){return n.documentElement})})}function plt(e,t,n,i,o){let r=hn("ThirdParty/Workers/z-worker-pako.js");wS({workerScripts:{deflate:[r,"./pako_deflate.min.js"],inflate:[r,"./pako_inflate.min.js"]}});let s=new kS(new Mg(n));return Promise.resolve(s.getEntries()).then(function(a){let c=[],d={},u;for(let h=0;h<a.length;h++){let p=a[h];p.directory||(/\.kml$/i.test(p.filename)&&(!l(u)||!/\//i.test(p.filename))?(l(u)&&c.push(W8(u,d)),u=p):c.push(W8(p,d)))}return l(u)&&c.push(Dct(u,d)),Promise.all(c).then(function(){if(s.close(),!l(d.kml))throw new de("KMZ file does not contain a KML document.");return d.keys=Object.keys(d),N8(e,t,d.kml,i,d,o)})})}function z8(e,t,n,i){i=i??Y.EMPTY_OBJECT;let o=i.sourceUri,r=i.uriResolver,s=i.context,a=i.screenOverlayContainer,c=n;if(typeof n=="string"||n instanceof Ve){n=Ve.createIfNeeded(n),c=n.fetchBlob(),o=o??n.clone();let d=e._resourceCredits,u=n.credits;if(l(u)){let h=u.length;for(let p=0;p<h;p++)d.push(u[p])}}else o=o??Ve.DEFAULT.clone();return o=Ve.createIfNeeded(o),l(a)&&(a=Dn(a)),Promise.resolve(c).then(function(d){return d instanceof Blob?vct(d).then(function(u){return u?plt(e,t,d,o,a):Nct(d).then(function(h){h=xye(h),h=Iye(h);let p,g;try{p=D8.parseFromString(h,"application/xml")}catch(f){g=f.toString()}if(l(g)||p.body||p.documentElement.tagName==="parsererror"){let f=l(g)?g:p.documentElement.firstChild.nodeValue;throw f||(f=p.body.innerText),new de(f)}return N8(e,t,p,o,r,a,s)})}):N8(e,t,d,o,r,a,s)}).catch(function(d){return e._error.raiseEvent(e,d),console.log(d),Promise.reject(d)})}function yu(e){e=e??Y.EMPTY_OBJECT;let t=e.camera,n=e.canvas;this._changed=new Ce,this._error=new Ce,this._loading=new Ce,this._refresh=new Ce,this._unsupportedNode=new Ce,this._clock=void 0,this._entityCollection=new Ca(this),this._name=void 0,this._isLoading=!1,this._pinBuilder=new Bg,this._networkLinks=new Bt,this._entityCluster=new ou,this.canvas=n,this.camera=t,this._lastCameraView={position:l(t)?m.clone(t.positionWC):void 0,direction:l(t)?m.clone(t.directionWC):void 0,up:l(t)?m.clone(t.upWC):void 0,bbox:l(t)?t.computeViewRectangle():le.clone(le.MAX_VALUE)},this._ellipsoid=e.ellipsoid??ie.default;let i=e.credit;typeof i=="string"&&(i=new Gt(i)),this._credit=i,this._resourceCredits=[],this._kmlTours=[],this._screenOverlays=[]}yu.load=function(e,t){return t=t??Y.EMPTY_OBJECT,new yu(t).load(e,t)};Object.defineProperties(yu.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},refreshEvent:{get:function(){return this._refresh}},unsupportedNodeEvent:{get:function(){return this._unsupportedNode}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}},kmlTours:{get:function(){return this._kmlTours}}});yu.prototype.load=function(e,t){t=t??Y.EMPTY_OBJECT,cs.setLoading(this,!0);let n=this._name;this._name=void 0,this._clampToGround=t.clampToGround??!1;let i=this;return z8(this,this._entityCollection,e,t).then(function(){let o,r=i._entityCollection.computeAvailability(),s=r.start,a=r.stop,c=j.equals(s,ze.MINIMUM_VALUE),d=j.equals(a,ze.MAXIMUM_VALUE);if(!c||!d){let h;c&&(h=new Date,h.setHours(0,0,0,0),s=j.fromDate(h)),d&&(h=new Date,h.setHours(24,0,0,0),a=j.fromDate(h)),o=new Oh,o.startTime=s,o.stopTime=a,o.currentTime=j.clone(s),o.clockRange=ls.LOOP_STOP,o.clockStep=Ro.SYSTEM_CLOCK_MULTIPLIER,o.multiplier=Math.round(Math.min(Math.max(j.secondsDifference(a,s)/60,1),31556900))}let u=!1;return o!==i._clock&&(i._clock=o,u=!0),n!==i._name&&(u=!0),u&&i._changed.raiseEvent(i),cs.setLoading(i,!1),i}).catch(function(o){return cs.setLoading(i,!1),i._error.raiseEvent(i,o),console.log(o),Promise.reject(o)})};yu.prototype.destroy=function(){for(;this._screenOverlays.length>0;)this._screenOverlays.pop().remove()};function K8(e){let t=e.parent;if(l(t)){let n=t.availability;if(l(n)){let i=e.availability;l(i)?i.intersect(n):e.availability=n}}}function Alt(e,t,n,i,o){return function(r){if(!i.contains(t.id))return;let s=!1,a=ji(r,"NetworkLinkControl",Fe.kml),c=l(a),d=0;if(c){if(l(ji(a,"Update",Fe.kml))){xt("kml-networkLinkControl-update","KML - NetworkLinkControl updates aren't supported."),t.updating=!1,i.remove(t.id);return}t.cookie=wd(Qn(a,"cookie",Fe.kml)??""),d=gi(a,"minRefreshPeriod",Fe.kml)??0}let u=j.now(),h=t.refreshMode;if(h===oy.INTERVAL)l(a)&&(t.time=Math.max(d,t.time));else if(h===oy.EXPIRE){let B;if(l(a)&&(B=Qn(a,"expires",Fe.kml)),l(B))try{let w=j.fromIso8601(B),F=j.secondsDifference(w,u);F>0&&F<d&&j.addSeconds(u,d,w),t.time=w}catch{xt("kml-networkLinkControl-expires","KML - NetworkLinkControl expires is not a valid date"),s=!0}else xt("kml-refreshMode-onExpire","KML - refreshMode of onExpire requires the NetworkLinkControl to have an expires element"),s=!0}let p=t.entity,g=e._entityCollection,f=n.values;function b(B){g.remove(B);let w=B._children,F=w.length;for(let P=0;P<F;++P)b(w[P])}g.suspendEvents();let x=g.values.slice(),I;for(I=0;I<x.length;++I){let B=x[I];B.parent===p&&(B.parent=void 0,b(B))}for(g.resumeEvents(),g.suspendEvents(),I=0;I<f.length;I++){let B=f[I];l(B.parent)||(B.parent=p,K8(B)),g.add(B)}g.resumeEvents(),s?i.remove(t.id):t.lastUpdated=u;let _=g.computeAvailability(),E=_.start,S=_.stop,R=j.equals(E,ze.MINIMUM_VALUE),G=j.equals(S,ze.MAXIMUM_VALUE);if(!R||!G){let B=e._clock;(B.startTime!==E||B.stopTime!==S)&&(B.startTime=E,B.stopTime=S,e._changed.raiseEvent(e))}t.updating=!1,t.needsUpdate=!1,e._refresh.raiseEvent(e,o.getUrlComponent(!0))}}var M8=new Bt;yu.prototype.update=function(e){let t=this._networkLinks;if(t.length===0)return!0;let n=j.now(),i=this;M8.removeAll();function o(u){let h=u._children,p=h.length;for(let g=0;g<p;++g){let f=h[g];M8.set(f.id,f),o(f)}}let r=!1,s=this._lastCameraView,a=this.camera;l(a)&&!(a.positionWC.equalsEpsilon(s.position,Z.EPSILON7)&&a.directionWC.equalsEpsilon(s.direction,Z.EPSILON7)&&a.upWC.equalsEpsilon(s.up,Z.EPSILON7))&&(s.position=m.clone(a.positionWC),s.direction=m.clone(a.directionWC),s.up=m.clone(a.upWC),s.bbox=a.computeViewRectangle(),r=!0);let c=new Bt,d=!1;return t.values.forEach(function(u){let h=u.entity;if(!M8.contains(h.id)){if(!u.updating){let p=!1;if(u.refreshMode===oy.INTERVAL?j.secondsDifference(n,u.lastUpdated)>u.time&&(p=!0):u.refreshMode===oy.EXPIRE?j.greaterThan(n,u.time)&&(p=!0):u.refreshMode===oy.STOP&&(r&&(u.needsUpdate=!0,u.cameraUpdateTime=n),u.needsUpdate&&j.secondsDifference(n,u.cameraUpdateTime)>=u.time&&(p=!0)),p){o(h),u.updating=!0;let g=new Ca,f=u.href.clone();f.setQueryParameters(u.cookie);let b=i._ellipsoid??ie.default;H8(f,i.camera,i.canvas,u.viewBoundScale,s.bbox,b),z8(i,g,f,{context:h.id}).then(Alt(i,u,g,c,f)).catch(function(x){let I=`NetworkLink ${u.href} refresh failed: ${x}`;console.log(I),i._error.raiseEvent(i,I)}),d=!0}}c.set(u.id,u)}}),d&&(this._networkLinks=c,this._changed.raiseEvent(this)),!0};function glt(){this.author={name:void 0,uri:void 0,email:void 0},this.link={href:void 0,hreflang:void 0,rel:void 0,type:void 0,title:void 0,length:void 0},this.address=void 0,this.phoneNumber=void 0,this.snippet=void 0,this.extendedData=void 0}yu._DeferredLoading=_p;yu._getTimestamp=Fi;var pI=yu;var VRi=y(C(),1);function eP(){Ae.throwInstantiationError()}eP.prototype.update=Ae.throwInstantiationError;eP.prototype.getBoundingSphere=Ae.throwInstantiationError;eP.prototype.isDestroyed=Ae.throwInstantiationError;eP.prototype.destroy=Ae.throwInstantiationError;var J8=eP;var rVi=y(C(),1);var j8=32,blt="http://www.opengis.net/kml/2.2",cf="http://www.google.com/kml/ext/2.2",ylt="http://www.w3.org/2000/xmlns/";function hk(e){this._files={},this._promises=[],this._count=0,this._modelCallback=e}var Clt=/^data:image\/([^,;]+)/;hk.prototype.texture=function(e){let t=this,n;if(typeof e=="string"||e instanceof Ve){if(e=Ve.createIfNeeded(e),!e.isDataUri)return e.url;let i=e.url.match(Clt);n=`texture_${++this._count}`,l(i)&&(n+=`.${i[1]}`);let o=e.fetchBlob().then(function(r){t._files[n]=r});return this._promises.push(o),n}if(e instanceof HTMLCanvasElement){n=`texture_${++this._count}.png`;let i=new Promise(o=>{e.toBlob(function(r){t._files[n]=r,o()})});return this._promises.push(i),n}return""};function xlt(e,t){return function(n){e._files[t]=n}}hk.prototype.model=function(e,t){let n=this._modelCallback;if(!l(n))throw new de("Encountered a model entity while exporting to KML, but no model callback was supplied.");let i={},o=n(e,t,i);for(let r in i)if(i.hasOwnProperty(r)){let s=Promise.resolve(i[r]);this._promises.push(s),s.then(xlt(this,r))}return o};Object.defineProperties(hk.prototype,{promise:{get:function(){return Promise.all(this._promises)}},files:{get:function(){return this._files}}});function fk(e){this._time=e}fk.prototype.get=function(e,t,n){let i;return l(e)&&(i=l(e.getValue)?e.getValue(this._time,n):e),i??t};fk.prototype.getColor=function(e,t){let n=this.get(e,t);if(l(n))return gI(n)};fk.prototype.getMaterialType=function(e){if(l(e))return e.getType(this._time)};function q8(){this._ids={},this._styles={},this._count=0}q8.prototype.get=function(e){let t=this._ids,n=e.innerHTML;if(l(t[n]))return t[n];let i=`style-${++this._count}`;return e.setAttribute("id",i),i=`#${i}`,t[n]=i,this._styles[n]=e,i};q8.prototype.save=function(e){let t=this._styles,n=e.childNodes[0];for(let i in t)t.hasOwnProperty(i)&&e.insertBefore(t[i],n)};function Fye(){this._ids={}}Fye.prototype.get=function(e){if(!l(e))return this.get(qn());let t=this._ids;return l(t[e])?`${e.toString()}-${++t[e]}`:(t[e]=0,e)};function $8(e){e=e??Y.EMPTY_OBJECT;let t=e.entities,n=e.kmz??!1,i=$8._createState(e),o=t.values.filter(function(d){return!l(d.parent)}),r=i.kmlDoc,s=r.documentElement;s.setAttributeNS(ylt,"xmlns:gx",cf);let a=r.createElement("Document");s.appendChild(a),Mye(i,a,o),i.styleCache.save(a);let c=i.externalFileHandler;return c.promise.then(function(){let u=new XMLSerializer().serializeToString(i.kmlDoc);return n?Ilt(u,c.files):{kml:u,externalFiles:c.files}})}function Ilt(e,t){let n=hn("ThirdParty/Workers/z-worker-pako.js");wS({workerScripts:{deflate:[n,"./pako_deflate.min.js"],inflate:[n,"./pako_inflate.min.js"]}});let i=new PF,o=new ok(i);return o.add("doc.kml",new WU(e)).then(function(){let r=Object.keys(t);return Pye(o,r,t,0)}).then(function(){return o.close()}).then(function(r){return{kmz:r}})}function Pye(e,t,n,i){if(t.length===i)return;let o=t[i];return e.add(o,new Mg(n[o])).then(function(){return Pye(e,t,n,i+1)})}$8._createState=function(e){let t=e.entities,n=new q8,i=t.computeAvailability(),o=l(e.time)?e.time:i.start,r=e.defaultAvailability??i,s=e.sampleDuration??60;r.start===ze.MINIMUM_VALUE?r.stop===ze.MAXIMUM_VALUE?r=new wn:j.addSeconds(r.stop,-10*s,r.start):r.stop===ze.MAXIMUM_VALUE&&j.addSeconds(r.start,10*s,r.stop);let a=new hk(e.modelCallback);return{kmlDoc:document.implementation.createDocument(blt,"kml"),ellipsoid:e.ellipsoid??ie.default,idManager:new Fye,styleCache:n,externalFileHandler:a,time:o,valueGetter:new fk(o),sampleDuration:s,defaultAvailability:new as([r])}};function Mye(e,t,n){let i=e.kmlDoc,o=e.styleCache,r=e.valueGetter,s=e.idManager,a=n.length,c,d,u;for(let h=0;h<a;++h){let p=n[h];c=[],d=[],u=[],_lt(e,p,d,u),Elt(e,p.polyline,d,u),Wye(e,p.rectangle,d,u,c),Wye(e,p.polygon,d,u,c),Rlt(e,p,p.model,d,u);let g,f=p.availability;l(f)&&(g=i.createElement("TimeSpan"),j.equals(f.start,ze.MINIMUM_VALUE)||g.appendChild(In(i,"begin",j.toIso8601(f.start))),j.equals(f.stop,ze.MAXIMUM_VALUE)||g.appendChild(In(i,"end",j.toIso8601(f.stop))));for(let I=0;I<c.length;++I){let _=c[I];_.setAttribute("id",s.get(p.id)),_.appendChild(In(i,"name",p.name)),_.appendChild(In(i,"visibility",p.show)),_.appendChild(In(i,"description",p.description)),l(g)&&_.appendChild(g),t.appendChild(_)}let b=d.length;if(b>0){let I=i.createElement("Placemark");I.setAttribute("id",s.get(p.id));let _=p.name,E=p.label;if(l(E)){let R=i.createElement("LabelStyle"),G=r.get(E.text);_=l(G)&&G.length>0?G:_;let B=r.getColor(E.fillColor);l(B)&&(R.appendChild(In(i,"color",B)),R.appendChild(In(i,"colorMode","normal")));let w=r.get(E.scale);l(w)&&R.appendChild(In(i,"scale",w)),u.push(R)}I.appendChild(In(i,"name",_)),I.appendChild(In(i,"visibility",p.show)),I.appendChild(In(i,"description",p.description)),l(g)&&I.appendChild(g),t.appendChild(I);let S=u.length;if(S>0){let R=i.createElement("Style");for(let G=0;G<S;++G)R.appendChild(u[G]);I.appendChild(In(i,"styleUrl",o.get(R)))}if(d.length===1)I.appendChild(d[0]);else if(d.length>1){let R=i.createElement("MultiGeometry");for(let G=0;G<b;++G)R.appendChild(d[G]);I.appendChild(R)}}let x=p._children;if(x.length>0){let I=i.createElement("Folder");I.setAttribute("id",s.get(p.id)),I.appendChild(In(i,"name",p.name)),I.appendChild(In(i,"visibility",p.show)),I.appendChild(In(i,"description",p.description)),t.appendChild(I),Mye(e,I,x)}}}var xd=new m,Ml=new ge,af=new j;function _lt(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=e.valueGetter,a=t.billboard??t.point;if(!l(a)&&!l(t.path))return;let c=t.position;if(!c.isConstant){vye(e,t,a,n,i);return}s.get(c,void 0,xd);let d=In(o,"coordinates",AI(xd,r)),u=o.createElement("Point"),h=o.createElement("altitudeMode");h.appendChild(bI(e,a.heightReference)),u.appendChild(h),u.appendChild(d),n.push(u);let p=a instanceof _c?Dye(e,a):Nye(e,a);i.push(p)}function vye(e,t,n,i,o){let r=e.kmlDoc,s=e.ellipsoid,a=e.valueGetter,c,d=t.position,u=!0;d instanceof ka?(c=d.intervals,u=!1):c=t.availability??e.defaultAvailability;let h=n instanceof uA,p,g,f,b=[];for(p=0;p<c.length;++p){let I=c.get(p),_=u?d:I.data,E=r.createElement("altitudeMode");_ instanceof up?(_=_._value,E.appendChild(bI(e,et.CLAMP_TO_GROUND))):l(n)?E.appendChild(bI(e,n.heightReference)):E.appendChild(bI(e,et.NONE));let S=[],R=[];if(_.isConstant){a.get(_,void 0,xd);let B=In(r,"coordinates",AI(xd,s));S.push(j.toIso8601(I.start)),R.push(B),S.push(j.toIso8601(I.stop)),R.push(B)}else if(_ instanceof Oa)for(f=_._property._times,g=0;g<f.length;++g)S.push(j.toIso8601(f[g])),_.getValueInReferenceFrame(f[g],eo.FIXED,xd),R.push(AI(xd,s));else if(_ instanceof cu){f=_._times;let B=_._values;for(g=0;g<f.length;++g)S.push(j.toIso8601(f[g])),m.fromArray(B,g*3,xd),R.push(AI(xd,s))}else{let B=e.sampleDuration;I.start.clone(af),I.isStartIncluded||j.addSeconds(af,B,af);let w=I.stop;for(;j.lessThan(af,w);)_.getValue(af,xd),S.push(j.toIso8601(af)),R.push(AI(xd,s)),j.addSeconds(af,B,af);I.isStopIncluded&&j.equals(af,w)&&(_.getValue(af,xd),S.push(j.toIso8601(af)),R.push(AI(xd,s)))}let G=r.createElementNS(cf,"Track");G.appendChild(E);for(let B=0;B<S.length;++B){let w=In(r,"when",S[B]),F=In(r,"coord",R[B],cf);G.appendChild(w),G.appendChild(F)}h&&G.appendChild(Qye(e,n)),b.push(G)}if(b.length===1)i.push(b[0]);else if(b.length>1){let I=r.createElementNS(cf,"MultiTrack");for(p=0;p<b.length;++p)I.appendChild(b[p]);i.push(I)}if(l(n)&&!h){let I=n instanceof _c?Dye(e,n):Nye(e,n);o.push(I)}let x=t.path;if(l(x)){let I=a.get(x.width),_=x.material;if(l(_)||l(I)){let E=r.createElement("LineStyle");l(I)&&E.appendChild(In(r,"width",I)),e7(e,_,E),o.push(E)}}}function Nye(e,t){let n=e.kmlDoc,i=e.valueGetter,o=n.createElement("IconStyle"),r=i.getColor(t.color);l(r)&&(o.appendChild(In(n,"color",r)),o.appendChild(In(n,"colorMode","normal")));let s=i.get(t.pixelSize);return l(s)&&o.appendChild(In(n,"scale",s/j8)),o}function Dye(e,t){let n=e.kmlDoc,i=e.valueGetter,o=e.externalFileHandler,r=n.createElement("IconStyle"),s=i.get(t.image);if(l(s)){s=o.texture(s);let p=n.createElement("Icon");p.appendChild(In(n,"href",s));let g=i.get(t.imageSubRegion);l(g)&&(p.appendChild(In(n,"x",g.x,cf)),p.appendChild(In(n,"y",g.y,cf)),p.appendChild(In(n,"w",g.width,cf)),p.appendChild(In(n,"h",g.height,cf))),r.appendChild(p)}let a=i.getColor(t.color);l(a)&&(r.appendChild(In(n,"color",a)),r.appendChild(In(n,"colorMode","normal")));let c=i.get(t.scale);l(c)&&r.appendChild(In(n,"scale",c));let d=i.get(t.pixelOffset);if(l(d)){c=c??1,D.divideByScalar(d,c,d);let p=i.get(t.width,j8),g=i.get(t.height,j8),f=i.get(t.horizontalOrigin,wi.CENTER);f===wi.CENTER?d.x-=p*.5:f===wi.RIGHT&&(d.x-=p);let b=i.get(t.verticalOrigin,kn.CENTER);b===kn.TOP?d.y+=g:b===kn.CENTER&&(d.y+=g*.5);let x=n.createElement("hotSpot");x.setAttribute("x",-d.x),x.setAttribute("y",d.y),x.setAttribute("xunits","pixels"),x.setAttribute("yunits","pixels"),r.appendChild(x)}let u=i.get(t.rotation),h=i.get(t.alignedAxis);return l(u)&&m.equals(m.UNIT_Z,h)&&(u=Z.toDegrees(-u),u===0&&(u=360),r.appendChild(In(n,"heading",u))),r}function Elt(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=e.valueGetter;if(!l(t))return;let a=o.createElement("LineString"),c=o.createElement("altitudeMode"),d=s.get(t.clampToGround,!1),u;d?(a.appendChild(In(o,"tessellate",!0)),u=o.createTextNode("clampToGround")):u=o.createTextNode("absolute"),c.appendChild(u),a.appendChild(c);let h=t.positions,p=s.get(h),g=In(o,"coordinates",AI(p,r));a.appendChild(g);let f=s.get(t.zIndex);d&&l(f)&&a.appendChild(In(o,"drawOrder",f,cf)),n.push(a);let b=o.createElement("LineStyle"),x=s.get(t.width);l(x)&&b.appendChild(In(o,"width",x)),e7(e,t.material,b),i.push(b)}function Tlt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=o.get(t.height,0);n>0&&(r=n);let s=t.coordinates,a=o.get(s),c=[],d=[le.northeast,le.southeast,le.southwest,le.northwest];for(let g=0;g<4;++g)d[g](a,Ml),c.push(`${Z.toDegrees(Ml.longitude)},${Z.toDegrees(Ml.latitude)},${r}`);let u=In(i,"coordinates",c.join(" ")),h=i.createElement("outerBoundaryIs"),p=i.createElement("LinearRing");return p.appendChild(u),h.appendChild(p),[h]}function Xye(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=[],a=t.length;for(let u=0;u<a;++u)ge.fromCartesian(t[u],r,Ml),s.push(`${Z.toDegrees(Ml.longitude)},${Z.toDegrees(Ml.latitude)},${i?Ml.height:n}`);let c=In(o,"coordinates",s.join(" ")),d=o.createElement("LinearRing");return d.appendChild(c),d}function Slt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=o.get(t.height,0),s=o.get(t.perPositionHeight,!1);!s&&n>0&&(r=n);let a=[],c=t.hierarchy,d=o.get(c),u=Array.isArray(d)?d:d.positions,h=i.createElement("outerBoundaryIs");h.appendChild(Xye(e,u,r,s)),a.push(h);let p=d.holes;if(l(p)){let g=p.length;for(let f=0;f<g;++f){let b=i.createElement("innerBoundaryIs");b.appendChild(Xye(e,p[f].positions,r,s)),a.push(b)}}return a}function Wye(e,t,n,i,o){let r=e.kmlDoc,s=e.valueGetter;if(!l(t))return;let a=t instanceof mh;if(a&&s.getMaterialType(t.material)==="Image"){Llt(e,t,o);return}let c=r.createElement("Polygon"),d=s.get(t.extrudedHeight,0);d>0&&c.appendChild(In(r,"extrude",!0));let u=a?Tlt(e,t,d):Slt(e,t,d),h=u.length;for(let x=0;x<h;++x)c.appendChild(u[x]);let p=r.createElement("altitudeMode");p.appendChild(bI(e,t.heightReference)),c.appendChild(p),n.push(c);let g=r.createElement("PolyStyle"),f=s.get(t.fill,!1);f&&g.appendChild(In(r,"fill",f)),e7(e,t.material,g);let b=s.get(t.outline,!1);if(b){g.appendChild(In(r,"outline",b));let x=r.createElement("LineStyle"),I=s.get(t.outlineWidth,1);x.appendChild(In(r,"width",I));let _=s.getColor(t.outlineColor,U.BLACK);x.appendChild(In(r,"color",_)),x.appendChild(In(r,"colorMode","normal")),i.push(x)}i.push(g)}function Llt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=e.externalFileHandler,s=i.createElement("GroundOverlay"),a=i.createElement("altitudeMode");a.appendChild(bI(e,t.heightReference)),s.appendChild(a);let c=o.get(t.height);l(c)&&s.appendChild(In(i,"altitude",c));let d=o.get(t.coordinates),u=i.createElement("LatLonBox");u.appendChild(In(i,"north",Z.toDegrees(d.north))),u.appendChild(In(i,"south",Z.toDegrees(d.south))),u.appendChild(In(i,"east",Z.toDegrees(d.east))),u.appendChild(In(i,"west",Z.toDegrees(d.west))),s.appendChild(u);let h=o.get(t.material),p=r.texture(h.image),g=i.createElement("Icon");g.appendChild(In(i,"href",p)),s.appendChild(g);let f=h.color;l(f)&&s.appendChild(In(i,"color",gI(h.color))),n.push(s)}function Qye(e,t){let n=e.kmlDoc,i=e.valueGetter,o=e.externalFileHandler,r=n.createElement("Model"),s=i.get(t.scale);if(l(s)){let d=n.createElement("scale");d.appendChild(In(n,"x",s)),d.appendChild(In(n,"y",s)),d.appendChild(In(n,"z",s)),r.appendChild(d)}let a=n.createElement("Link"),c=o.model(t,e.time);return a.appendChild(In(n,"href",c)),r.appendChild(a),r}function Rlt(e,t,n,i,o){let r=e.kmlDoc,s=e.ellipsoid,a=e.valueGetter;if(!l(n))return;let c=t.position;if(!c.isConstant){vye(e,t,n,i,o);return}let d=Qye(e,n),u=r.createElement("altitudeMode");u.appendChild(bI(e,n.heightReference)),d.appendChild(u),a.get(c,void 0,xd),ge.fromCartesian(xd,s,Ml);let h=r.createElement("Location");h.appendChild(In(r,"longitude",Z.toDegrees(Ml.longitude))),h.appendChild(In(r,"latitude",Z.toDegrees(Ml.latitude))),h.appendChild(In(r,"altitude",Ml.height)),d.appendChild(h),i.push(d)}function e7(e,t,n){let i=e.kmlDoc,o=e.valueGetter;if(!l(t))return;let r=o.get(t);if(!l(r))return;let s,a=o.getMaterialType(t),c,d;switch(a){case"Image":s=gI(U.WHITE);break;case"Color":case"Grid":case"PolylineGlow":case"PolylineArrow":case"PolylineDash":s=gI(r.color);break;case"PolylineOutline":s=gI(r.color),c=gI(r.outlineColor),d=r.outlineWidth,n.appendChild(In(i,"outerColor",c,cf)),n.appendChild(In(i,"outerWidth",d,cf));break;case"Stripe":s=gI(r.oddColor);break}l(s)&&(n.appendChild(In(i,"color",s)),n.appendChild(In(i,"colorMode","normal")))}function bI(e,t){let n=e.kmlDoc,o=e.valueGetter.get(t,et.NONE),r;switch(o){case et.NONE:r=n.createTextNode("absolute");break;case et.CLAMP_TO_GROUND:r=n.createTextNode("clampToGround");break;case et.RELATIVE_TO_GROUND:r=n.createTextNode("relativeToGround");break}return r}function AI(e,t){Array.isArray(e)||(e=[e]);let n=e.length,i=[];for(let o=0;o<n;++o)ge.fromCartesian(e[o],t,Ml),i.push(`${Z.toDegrees(Ml.longitude)},${Z.toDegrees(Ml.latitude)},${Ml.height}`);return i.join(" ")}function In(e,t,n,i){n=n??"",typeof n=="boolean"&&(n=n?"1":"0");let o=l(i)?e.createElementNS(i,t):e.createElement(t),r=n==="string"&&n.indexOf("<")!==-1?e.createCDATASection(n):e.createTextNode(n);return o.appendChild(r),o}function gI(e){let t="",n=e.toBytes();for(let i=3;i>=0;--i)t+=n[i]<16?`0${n[i].toString(16)}`:n[i].toString(16);return t}var t7=$8;var CVi=y(C(),1);var aVi=y(C(),1),yI=`in vec4 position; +in vec2 textureCoordinates; + +out vec2 v_textureCoordinates; + +void main() +{ + gl_Position = position; + v_textureCoordinates = textureCoordinates; +} +`;function pk(e){this._context=e}var tP,Vlt=new ot({primitiveType:We.TRIANGLES}),Glt=new xi({color:new U(0,0,0,0)});function Zlt(e,t){return new jr({context:e,colorTextures:[t],destroyAttachments:!1})}function Blt(e,t){return ln.fromCache({context:e,vertexShaderSource:yI,fragmentShaderSource:t,attributeLocations:{position:0,textureCoordinates:1}})}function wlt(e,t){return(!l(tP)||tP.viewport.width!==e||tP.viewport.height!==t)&&(tP=Qe.fromCache({viewport:new Ke(0,0,e,t)})),tP}pk.prototype.execute=function(e){l(e.preExecute)&&e.preExecute(e);let t=e.outputTexture,n=t.width,i=t.height,o=this._context,r=l(e.vertexArray)?e.vertexArray:o.getViewportQuadVertexArray(),s=l(e.shaderProgram)?e.shaderProgram:Blt(o,e.fragmentShaderSource),a=Zlt(o,t),c=wlt(n,i),d=e.uniformMap,u=Glt;u.framebuffer=a,u.renderState=c,u.execute(o);let h=Vlt;h.vertexArray=r,h.renderState=c,h.shaderProgram=s,h.uniformMap=d,h.framebuffer=a,h.execute(o),a.destroy(),e.persists||(s.destroy(),l(e.vertexArray)&&r.destroy()),l(e.postExecute)&&e.postExecute(t)};pk.prototype.isDestroyed=function(){return!1};pk.prototype.destroy=function(){return me(this)};var nP=pk;var DGi=y(C(),1);var IVi=y(C(),1);function Xlt(e){this.context=e,this.framebuffer=void 0,this.blendingEnabled=void 0,this.scissorTest=void 0,this.viewport=void 0}var Hc=Xlt;var RVi=y(C(),1);function lf(e){this._context=e,this._shaders={},this._numberOfShaders=0,this._shadersToRelease={}}Object.defineProperties(lf.prototype,{numberOfShaders:{get:function(){return this._numberOfShaders}}});lf.prototype.replaceShaderProgram=function(e){return l(e.shaderProgram)&&e.shaderProgram.destroy(),this.getShaderProgram(e)};function Wlt(e){let t=Object.keys(e).sort();return JSON.stringify(e,t)}lf.prototype.getShaderProgram=function(e){let t=e.vertexShaderSource,n=e.fragmentShaderSource,i=e.attributeLocations;typeof t=="string"&&(t=new Oe({sources:[t]})),typeof n=="string"&&(n=new Oe({sources:[n]}));let o=t.getCacheKey(),r=n.getCacheKey(),s=l(i)?Wlt(i):"",a=`${o}:${r}:${s}`,c;if(l(this._shaders[a]))c=this._shaders[a],delete this._shadersToRelease[a];else{let d=this._context,u=t.createCombinedVertexShader(d),h=n.createCombinedFragmentShader(d),p=new ln({gl:d._gl,logShaderCompilation:d.logShaderCompilation,debugShaders:d.debugShaders,vertexShaderSource:t,vertexShaderText:u,fragmentShaderSource:n,fragmentShaderText:h,attributeLocations:i});c={cache:this,shaderProgram:p,keyword:a,derivedKeywords:[],count:0},p._cachedShader=c,this._shaders[a]=c,++this._numberOfShaders}return++c.count,c.shaderProgram};lf.prototype.replaceDerivedShaderProgram=function(e,t,n){let i=e._cachedShader,o=t+i.keyword,r=this._shaders[o];if(l(r)){n7(this,r);let s=i.derivedKeywords.indexOf(t);s>-1&&i.derivedKeywords.splice(s,1)}return this.createDerivedShaderProgram(e,t,n)};lf.prototype.getDerivedShaderProgram=function(e,t){let n=e._cachedShader,i=t+n.keyword,o=this._shaders[i];if(l(o))return o.shaderProgram};lf.prototype.createDerivedShaderProgram=function(e,t,n){let i=e._cachedShader,o=t+i.keyword,r=n.vertexShaderSource,s=n.fragmentShaderSource,a=n.attributeLocations;typeof r=="string"&&(r=new Oe({sources:[r]})),typeof s=="string"&&(s=new Oe({sources:[s]}));let c=this._context,d=r.createCombinedVertexShader(c),u=s.createCombinedFragmentShader(c),h=new ln({gl:c._gl,logShaderCompilation:c.logShaderCompilation,debugShaders:c.debugShaders,vertexShaderSource:r,vertexShaderText:d,fragmentShaderSource:s,fragmentShaderText:u,attributeLocations:a}),p={cache:this,shaderProgram:h,keyword:o,derivedKeywords:[],count:0};return i.derivedKeywords.push(t),h._cachedShader=p,this._shaders[o]=p,h};function n7(e,t){let n=t.derivedKeywords,i=n.length;for(let o=0;o<i;++o){let r=n[o]+t.keyword,s=e._shaders[r];n7(e,s)}delete e._shaders[t.keyword],t.shaderProgram.finalDestroy()}lf.prototype.destroyReleasedShaderPrograms=function(){let e=this._shadersToRelease;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];n7(this,n),--this._numberOfShaders}this._shadersToRelease={}};lf.prototype.releaseShaderProgram=function(e){if(l(e)){let t=e._cachedShader;t&&--t.count===0&&(this._shadersToRelease[t.keyword]=t)}};lf.prototype.isDestroyed=function(){return!1};lf.prototype.destroy=function(){let e=this._shaders;for(let t in e)e.hasOwnProperty(t)&&e[t].shaderProgram.finalDestroy();return me(this)};var iP=lf;var BVi=y(C(),1);function CI(){this._textures={},this._numberOfTextures=0,this._texturesToRelease={}}Object.defineProperties(CI.prototype,{numberOfTextures:{get:function(){return this._numberOfTextures}}});CI.prototype.getTexture=function(e){let t=this._textures[e];if(l(t))return delete this._texturesToRelease[e],++t.count,t.texture};CI.prototype.addTexture=function(e,t){let n={texture:t,count:1};t.finalDestroy=t.destroy;let i=this;t.destroy=function(){--n.count===0&&(i._texturesToRelease[e]=n)},this._textures[e]=n,++this._numberOfTextures};CI.prototype.destroyReleasedTextures=function(){let e=this._texturesToRelease;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];delete this._textures[t],n.texture.finalDestroy(),--this._numberOfTextures}this._texturesToRelease={}};CI.prototype.isDestroyed=function(){return!1};CI.prototype.destroy=function(){let e=this._textures;for(let t in e)e.hasOwnProperty(t)&&e[t].texture.finalDestroy();return me(this)};var oP=CI;var dGi=y(C(),1);var DVi=y(C(),1);var i7={};function Flt(e){let t=6.239996+.0172019696544*e;return .001657*Math.sin(t+.01671*Math.sin(t))}var Plt=32.184,Mlt=2451545;function aCe(e,t){t=j.addSeconds(e,Plt,t);let n=j.totalDays(t)-Mlt;return t=j.addSeconds(t,Flt(n),t),t}var Ak=new j(2451545,0,oi.TAI),vlt=1e3,wm=Z.RADIANS_PER_DEGREE,Cu=Z.RADIANS_PER_ARCSECOND,bc=14959787e4,Uye=new $;function cCe(e,t,n,i,o,r,s){n<0&&(n=-n,o+=Z.PI);let a=e*(1-t),c=i-o,d=o,u=Dlt(r-i,t),h=Nlt(t,0);Olt(c,n,d,Uye);let p=a*(1+t),g=Math.cos(u),f=Math.sin(u),b=1+t*g,x=p/b;return l(s)?(s.x=x*g,s.y=x*f,s.z=0):s=new m(x*g,x*f,0),$.multiplyByVector(Uye,s,s)}function Nlt(e,t){return e<=t?"Circular":e<1-t?"Elliptical":e<=1+t?"Parabolic":"Hyperbolic"}function Dlt(e,t){let n=klt(e,t);return Ylt(n,t)}var Qlt=50,Ult=Z.EPSILON8;function klt(e,t){let n=Math.floor(e/Z.TWO_PI);e-=n*Z.TWO_PI;let i=e+t*Math.sin(e)/(1-Math.sin(e+t)+Math.sin(e)),o=Number.MAX_VALUE,r;for(r=0;r<Qlt&&Math.abs(o-i)>Ult;++r){o=i;let s=o-t*Math.sin(o)-e,a=1-t*Math.cos(o);i=o-s/a}return o=i+n*Z.TWO_PI,o}function Ylt(e,t){let n=Math.floor(e/Z.TWO_PI);e-=n*Z.TWO_PI;let i=Math.cos(e)-t,o=Math.sin(e)*Math.sqrt(1-t*t),r=Math.atan2(o,i);return r=Z.zeroToTwoPi(r),e<0&&(r-=Z.TWO_PI),r+=n*Z.TWO_PI,r}function Olt(e,t,n,i){let o=Math.cos(e),r=Math.sin(e),s=Math.cos(t),a=Math.sin(t),c=Math.cos(n),d=Math.sin(n);return l(i)?(i[0]=c*o-d*r*s,i[1]=d*o+c*r*s,i[2]=r*a,i[3]=-c*r-d*o*s,i[4]=-d*r+c*o*s,i[5]=o*a,i[6]=d*a,i[7]=-c*a,i[8]=s):i=new $(c*o-d*r*s,-c*r-d*o*s,d*a,d*o+c*r*s,-d*r+c*o*s,-c*a,r*a,o*a,s),i}var Hlt=1.0000010178*bc,zlt=100.46645683*wm,Klt=129597742283429e-5*Cu,kye=16002,Yye=21863,Oye=32004,Hye=10931,zye=14529,Kye=16368,Jye=15318,jye=32794,Jlt=64*1e-7*bc,jlt=-152*1e-7*bc,qlt=62*1e-7*bc,$lt=-8*1e-7*bc,edt=32*1e-7*bc,tdt=-41*1e-7*bc,ndt=19*1e-7*bc,idt=-11*1e-7*bc,odt=-150*1e-7*bc,rdt=-46*1e-7*bc,sdt=68*1e-7*bc,adt=54*1e-7*bc,cdt=14*1e-7*bc,ldt=24*1e-7*bc,ddt=-28*1e-7*bc,udt=22*1e-7*bc,qye=10,$ye=16002,eCe=21863,tCe=10931,nCe=1473,iCe=32004,oCe=4387,rCe=73,mdt=-325*1e-7,hdt=-322*1e-7,fdt=-79*1e-7,pdt=232*1e-7,Adt=-52*1e-7,gdt=97*1e-7,bdt=55*1e-7,ydt=-41*1e-7,Cdt=-105*1e-7,xdt=-137*1e-7,Idt=258*1e-7,_dt=35*1e-7,Edt=-116*1e-7,Tdt=-88*1e-7,Sdt=-112*1e-7,Ldt=-80*1e-7,HS=new j(0,0,oi.TAI);function Rdt(e,t){aCe(e,HS);let i=(HS.dayNumber-Ak.dayNumber+(HS.secondsOfDay-Ak.secondsOfDay)/ai.SECONDS_PER_DAY)/(ai.DAYS_PER_JULIAN_CENTURY*10),o=.3595362*i,r=Hlt+Jlt*Math.cos(kye*o)+odt*Math.sin(kye*o)+jlt*Math.cos(Yye*o)+rdt*Math.sin(Yye*o)+qlt*Math.cos(Oye*o)+sdt*Math.sin(Oye*o)+$lt*Math.cos(Hye*o)+adt*Math.sin(Hye*o)+edt*Math.cos(zye*o)+cdt*Math.sin(zye*o)+tdt*Math.cos(Kye*o)+ldt*Math.sin(Kye*o)+ndt*Math.cos(Jye*o)+ddt*Math.sin(Jye*o)+idt*Math.cos(jye*o)+udt*Math.sin(jye*o),s=zlt+Klt*i+mdt*Math.cos(qye*o)+Cdt*Math.sin(qye*o)+hdt*Math.cos($ye*o)+xdt*Math.sin($ye*o)+fdt*Math.cos(eCe*o)+Idt*Math.sin(eCe*o)+pdt*Math.cos(tCe*o)+_dt*Math.sin(tCe*o)+Adt*Math.cos(nCe*o)+Edt*Math.sin(nCe*o)+gdt*Math.cos(iCe*o)+Tdt*Math.sin(iCe*o)+bdt*Math.cos(oCe*o)+Sdt*Math.sin(oCe*o)+ydt*Math.cos(rCe*o)+Ldt*Math.sin(rCe*o),a=.0167086342-.0004203654*i,c=102.93734808*wm+11612.3529*Cu*i,d=469.97289*Cu*i,u=174.87317577*wm-8679.27034*Cu*i;return cCe(r,a,d,c,u,s,t)}function lCe(e,t){aCe(e,HS);let i=(HS.dayNumber-Ak.dayNumber+(HS.secondsOfDay-Ak.secondsOfDay)/ai.SECONDS_PER_DAY)/ai.DAYS_PER_JULIAN_CENTURY,o=i*i,r=o*i,s=r*i,a=383397.7725+.004*i,c=.055545526-16e-9*i,d=5.15668983*wm,u=-8e-5*i+.02966*o-42e-6*r-13e-8*s,h=83.35324312*wm,p=146434202669e-4*i-38.2702*o-.045047*r+21301e-8*s,g=125.04455501*wm,f=-69679193631e-4*i+6.3602*o+.007625*r-3586e-8*s,b=218.31664563*wm,x=17325593434847e-4*i-6.391*o+.006588*r-3169e-8*s,I=297.85019547*wm+Cu*(1602961601209e-3*i-6.3706*o+.006593*r-3169e-8*s),_=93.27209062*wm+Cu*(17395272628478e-4*i-12.7512*o-.001037*r+417e-8*s),E=134.96340251*wm+Cu*(17179159232178e-4*i+31.8792*o+.051635*r-2447e-7*s),S=357.52910918*wm+Cu*(1295965810481e-4*i-.5532*o+136e-6*r-1149e-8*s),R=310.17137918*wm-Cu*(6967051436e-3*i+6.2068*o+.007618*r-3219e-8*s),G=2*I,B=4*I,w=6*I,F=2*E,P=3*E,A=4*E,T=2*_;a+=3400.4*Math.cos(G)-635.6*Math.cos(G-E)-235.6*Math.cos(E)+218.1*Math.cos(G-S)+181*Math.cos(G+E),c+=.014216*Math.cos(G-E)+.008551*Math.cos(G-F)-.001383*Math.cos(E)+.001356*Math.cos(G+E)-.001147*Math.cos(B-P)-914e-6*Math.cos(B-F)+869e-6*Math.cos(G-S-E)-627e-6*Math.cos(G)-394e-6*Math.cos(B-A)+282e-6*Math.cos(G-S-F)-279e-6*Math.cos(I-E)-236e-6*Math.cos(F)+231e-6*Math.cos(B)+229e-6*Math.cos(w-A)-201e-6*Math.cos(F-T),u+=486.26*Math.cos(G-T)-40.13*Math.cos(G)+37.51*Math.cos(T)+25.73*Math.cos(F-T)+19.97*Math.cos(G-S-T),p+=-55609*Math.sin(G-E)-34711*Math.sin(G-F)-9792*Math.sin(E)+9385*Math.sin(B-P)+7505*Math.sin(B-F)+5318*Math.sin(G+E)+3484*Math.sin(B-A)-3417*Math.sin(G-S-E)-2530*Math.sin(w-A)-2376*Math.sin(G)-2075*Math.sin(G-P)-1883*Math.sin(F)-1736*Math.sin(w-5*E)+1626*Math.sin(S)-1370*Math.sin(w-P),f+=-5392*Math.sin(G-T)-540*Math.sin(S)-441*Math.sin(G)+423*Math.sin(T)-288*Math.sin(F-T),x+=-3332.9*Math.sin(G)+1197.4*Math.sin(G-E)-662.5*Math.sin(S)+396.3*Math.sin(E)-218*Math.sin(G-S);let L=2*R,V=3*R;u+=46.997*Math.cos(R)*i-.614*Math.cos(G-T+R)*i+.614*Math.cos(G-T-R)*i-.0297*Math.cos(L)*o-.0335*Math.cos(R)*o+.0012*Math.cos(G-T+L)*o-16e-5*Math.cos(R)*r+4e-5*Math.cos(V)*r+4e-5*Math.cos(L)*r;let W=2.116*Math.sin(R)*i-.111*Math.sin(G-T-R)*i-.0015*Math.sin(R)*o;p+=W,x+=W,f+=-520.77*Math.sin(R)*i+13.66*Math.sin(G-T+R)*i+1.12*Math.sin(G-R)*i-1.06*Math.sin(T-R)*i+.66*Math.sin(L)*o+.371*Math.sin(R)*o-.035*Math.sin(G-T+L)*o-.015*Math.sin(G-T+R)*o+.0014*Math.sin(R)*r-.0011*Math.sin(V)*r-9e-4*Math.sin(L)*r,a*=vlt;let M=d+u*Cu,Q=h+p*Cu,N=b+x*Cu,k=g+f*Cu;return cCe(a,c,M,Q,k,N,t)}var sCe=.012300034,Vdt=sCe/(sCe+1)*-1;function Gdt(e,t){return t=lCe(e,t),m.multiplyByScalar(t,Vdt,t)}var dCe=new $(1.0000000000000002,5619723173785822e-31,4690511510146299e-34,-5154129427414611e-31,.9174820620691819,-.39777715593191376,-223970096136568e-30,.39777715593191376,.9174820620691819),rP=new m;i7.computeSunPositionInEarthInertialFrame=function(e,t){return l(e)||(e=j.now()),l(t)||(t=new m),rP=Rdt(e,rP),t=m.negate(rP,t),Gdt(e,rP),m.subtract(t,rP,t),$.multiplyByVector(dCe,t,t),t};i7.computeMoonPositionInEarthInertialFrame=function(e,t){return l(e)||(e=j.now()),t=lCe(e,t),$.multiplyByVector(dCe,t,t),t};var ry=i7;var YVi=y(C(),1);function Zdt(e){e=e??Y.EMPTY_OBJECT,this.color=U.clone(e.color??U.WHITE),this.intensity=e.intensity??2}var Ng=Zdt;function zS(){this.globeDepthTexture=void 0,this.gamma=void 0,this._viewport=new Ke,this._viewportCartesian4=new ce,this._viewportDirty=!1,this._viewportOrthographicMatrix=X.clone(X.IDENTITY),this._viewportTransformation=X.clone(X.IDENTITY),this._model=X.clone(X.IDENTITY),this._view=X.clone(X.IDENTITY),this._inverseView=X.clone(X.IDENTITY),this._projection=X.clone(X.IDENTITY),this._infiniteProjection=X.clone(X.IDENTITY),this._entireFrustum=new D,this._currentFrustum=new D,this._frustumPlanes=new ce,this._farDepthFromNearPlusOne=void 0,this._log2FarDepthFromNearPlusOne=void 0,this._oneOverLog2FarDepthFromNearPlusOne=void 0,this._frameState=void 0,this._temeToPseudoFixed=$.clone(X.IDENTITY),this._view3DDirty=!0,this._view3D=new X,this._inverseView3DDirty=!0,this._inverseView3D=new X,this._inverseModelDirty=!0,this._inverseModel=new X,this._inverseTransposeModelDirty=!0,this._inverseTransposeModel=new $,this._viewRotation=new $,this._inverseViewRotation=new $,this._viewRotation3D=new $,this._inverseViewRotation3D=new $,this._inverseProjectionDirty=!0,this._inverseProjection=new X,this._modelViewDirty=!0,this._modelView=new X,this._modelView3DDirty=!0,this._modelView3D=new X,this._modelViewRelativeToEyeDirty=!0,this._modelViewRelativeToEye=new X,this._inverseModelViewDirty=!0,this._inverseModelView=new X,this._inverseModelView3DDirty=!0,this._inverseModelView3D=new X,this._viewProjectionDirty=!0,this._viewProjection=new X,this._inverseViewProjectionDirty=!0,this._inverseViewProjection=new X,this._modelViewProjectionDirty=!0,this._modelViewProjection=new X,this._inverseModelViewProjectionDirty=!0,this._inverseModelViewProjection=new X,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewProjectionRelativeToEye=new X,this._modelViewInfiniteProjectionDirty=!0,this._modelViewInfiniteProjection=new X,this._normalDirty=!0,this._normal=new $,this._normal3DDirty=!0,this._normal3D=new $,this._inverseNormalDirty=!0,this._inverseNormal=new $,this._inverseNormal3DDirty=!0,this._inverseNormal3D=new $,this._encodedCameraPositionMCDirty=!0,this._encodedCameraPositionMC=new ni,this._cameraPosition=new m,this._sunPositionWC=new m,this._sunPositionColumbusView=new m,this._sunDirectionWC=new m,this._sunDirectionEC=new m,this._moonDirectionEC=new m,this._lightDirectionWC=new m,this._lightDirectionEC=new m,this._lightColor=new m,this._lightColorHdr=new m,this._pass=void 0,this._mode=void 0,this._mapProjection=void 0,this._ellipsoid=void 0,this._cameraDirection=new m,this._cameraRight=new m,this._cameraUp=new m,this._frustum2DWidth=0,this._eyeHeight=0,this._eyeHeight2D=new D,this._eyeEllipsoidNormalEC=new m,this._eyeEllipsoidCurvature=new D,this._modelToEnu=new X,this._enuToModel=new X,this._pixelRatio=1,this._orthographicIn3D=!1,this._backgroundColor=new U,this._brdfLut=void 0,this._environmentMap=void 0,this._sphericalHarmonicCoefficients=void 0,this._specularEnvironmentMaps=void 0,this._specularEnvironmentMapsMaximumLOD=void 0,this._fogDensity=void 0,this._fogVisualDensityScalar=void 0,this._fogMinimumBrightness=void 0,this._atmosphereHsbShift=void 0,this._atmosphereLightIntensity=void 0,this._atmosphereRayleighCoefficient=new m,this._atmosphereRayleighScaleHeight=new m,this._atmosphereMieCoefficient=new m,this._atmosphereMieScaleHeight=void 0,this._atmosphereMieAnisotropy=void 0,this._atmosphereDynamicLighting=void 0,this._invertClassificationColor=void 0,this._splitPosition=0,this._pixelSizePerMeter=void 0,this._geometricToleranceOverMeter=void 0,this._minimumDisableDepthTestDistance=void 0}Object.defineProperties(zS.prototype,{frameState:{get:function(){return this._frameState}},viewport:{get:function(){return this._viewport},set:function(e){if(!Ke.equals(e,this._viewport)){Ke.clone(e,this._viewport);let t=this._viewport,n=this._viewportCartesian4;n.x=t.x,n.y=t.y,n.z=t.width,n.w=t.height,this._viewportDirty=!0}}},viewportCartesian4:{get:function(){return this._viewportCartesian4}},viewportOrthographic:{get:function(){return mCe(this),this._viewportOrthographicMatrix}},viewportTransformation:{get:function(){return mCe(this),this._viewportTransformation}},model:{get:function(){return this._model},set:function(e){X.clone(e,this._model),this._modelView3DDirty=!0,this._inverseModelView3DDirty=!0,this._inverseModelDirty=!0,this._inverseTransposeModelDirty=!0,this._modelViewDirty=!0,this._inverseModelViewDirty=!0,this._modelViewRelativeToEyeDirty=!0,this._inverseModelViewDirty=!0,this._modelViewProjectionDirty=!0,this._inverseModelViewProjectionDirty=!0,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewInfiniteProjectionDirty=!0,this._normalDirty=!0,this._inverseNormalDirty=!0,this._normal3DDirty=!0,this._inverseNormal3DDirty=!0,this._encodedCameraPositionMCDirty=!0}},inverseModel:{get:function(){return this._inverseModelDirty&&(this._inverseModelDirty=!1,X.inverse(this._model,this._inverseModel)),this._inverseModel}},inverseTransposeModel:{get:function(){let e=this._inverseTransposeModel;return this._inverseTransposeModelDirty&&(this._inverseTransposeModelDirty=!1,X.getMatrix3(this.inverseModel,e),$.transpose(e,e)),e}},view:{get:function(){return this._view}},view3D:{get:function(){return r7(this),this._view3D}},viewRotation:{get:function(){return r7(this),this._viewRotation}},viewRotation3D:{get:function(){return r7(this),this._viewRotation3D}},inverseView:{get:function(){return this._inverseView}},inverseView3D:{get:function(){return pCe(this),this._inverseView3D}},inverseViewRotation:{get:function(){return this._inverseViewRotation}},inverseViewRotation3D:{get:function(){return pCe(this),this._inverseViewRotation3D}},projection:{get:function(){return this._projection}},inverseProjection:{get:function(){return Qdt(this),this._inverseProjection}},infiniteProjection:{get:function(){return this._infiniteProjection}},modelView:{get:function(){return Udt(this),this._modelView}},modelView3D:{get:function(){return kdt(this),this._modelView3D}},modelViewRelativeToEye:{get:function(){return Jdt(this),this._modelViewRelativeToEye}},inverseModelView:{get:function(){return Ydt(this),this._inverseModelView}},inverseModelView3D:{get:function(){return Odt(this),this._inverseModelView3D}},viewProjection:{get:function(){return Hdt(this),this._viewProjection}},inverseViewProjection:{get:function(){return zdt(this),this._inverseViewProjection}},modelViewProjection:{get:function(){return Kdt(this),this._modelViewProjection}},inverseModelViewProjection:{get:function(){return jdt(this),this._inverseModelViewProjection}},modelViewProjectionRelativeToEye:{get:function(){return qdt(this),this._modelViewProjectionRelativeToEye}},modelViewInfiniteProjection:{get:function(){return $dt(this),this._modelViewInfiniteProjection}},normal:{get:function(){return eut(this),this._normal}},normal3D:{get:function(){return tut(this),this._normal3D}},inverseNormal:{get:function(){return nut(this),this._inverseNormal}},inverseNormal3D:{get:function(){return iut(this),this._inverseNormal3D}},entireFrustum:{get:function(){return this._entireFrustum}},currentFrustum:{get:function(){return this._currentFrustum}},frustumPlanes:{get:function(){return this._frustumPlanes}},farDepthFromNearPlusOne:{get:function(){return this._farDepthFromNearPlusOne}},log2FarDepthFromNearPlusOne:{get:function(){return this._log2FarDepthFromNearPlusOne}},oneOverLog2FarDepthFromNearPlusOne:{get:function(){return this._oneOverLog2FarDepthFromNearPlusOne}},eyeHeight:{get:function(){return this._eyeHeight}},eyeHeight2D:{get:function(){return this._eyeHeight2D}},eyeEllipsoidNormalEC:{get:function(){return this._eyeEllipsoidNormalEC}},eyeEllipsoidCurvature:{get:function(){return this._eyeEllipsoidCurvature}},modelToEnu:{get:function(){return this._modelToEnu}},enuToModel:{get:function(){return this._enuToModel}},sunPositionWC:{get:function(){return this._sunPositionWC}},sunPositionColumbusView:{get:function(){return this._sunPositionColumbusView}},sunDirectionWC:{get:function(){return this._sunDirectionWC}},sunDirectionEC:{get:function(){return this._sunDirectionEC}},moonDirectionEC:{get:function(){return this._moonDirectionEC}},lightDirectionWC:{get:function(){return this._lightDirectionWC}},lightDirectionEC:{get:function(){return this._lightDirectionEC}},lightColor:{get:function(){return this._lightColor}},lightColorHdr:{get:function(){return this._lightColorHdr}},encodedCameraPositionMCHigh:{get:function(){return fCe(this),this._encodedCameraPositionMC.high}},encodedCameraPositionMCLow:{get:function(){return fCe(this),this._encodedCameraPositionMC.low}},temeToPseudoFixedMatrix:{get:function(){return this._temeToPseudoFixed}},pixelRatio:{get:function(){return this._pixelRatio}},fogDensity:{get:function(){return this._fogDensity}},fogVisualDensityScalar:{get:function(){return this._fogVisualDensityScalar}},fogMinimumBrightness:{get:function(){return this._fogMinimumBrightness}},atmosphereHsbShift:{get:function(){return this._atmosphereHsbShift}},atmosphereLightIntensity:{get:function(){return this._atmosphereLightIntensity}},atmosphereRayleighCoefficient:{get:function(){return this._atmosphereRayleighCoefficient}},atmosphereRayleighScaleHeight:{get:function(){return this._atmosphereRayleighScaleHeight}},atmosphereMieCoefficient:{get:function(){return this._atmosphereMieCoefficient}},atmosphereMieScaleHeight:{get:function(){return this._atmosphereMieScaleHeight}},atmosphereMieAnisotropy:{get:function(){return this._atmosphereMieAnisotropy}},atmosphereDynamicLighting:{get:function(){return this._atmosphereDynamicLighting}},geometricToleranceOverMeter:{get:function(){return this._geometricToleranceOverMeter}},pass:{get:function(){return this._pass}},backgroundColor:{get:function(){return this._backgroundColor}},brdfLut:{get:function(){return this._brdfLut}},environmentMap:{get:function(){return this._environmentMap}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients}},specularEnvironmentMaps:{get:function(){return this._specularEnvironmentMaps}},specularEnvironmentMapsMaximumLOD:{get:function(){return this._specularEnvironmentMapsMaximumLOD}},splitPosition:{get:function(){return this._splitPosition}},minimumDisableDepthTestDistance:{get:function(){return this._minimumDisableDepthTestDistance}},invertClassificationColor:{get:function(){return this._invertClassificationColor}},orthographicIn3D:{get:function(){return this._orthographicIn3D}},ellipsoid:{get:function(){return this._ellipsoid??ie.default}}});function Bdt(e,t){X.clone(t,e._view),X.getMatrix3(t,e._viewRotation),e._view3DDirty=!0,e._inverseView3DDirty=!0,e._modelViewDirty=!0,e._modelView3DDirty=!0,e._modelViewRelativeToEyeDirty=!0,e._inverseModelViewDirty=!0,e._inverseModelView3DDirty=!0,e._viewProjectionDirty=!0,e._inverseViewProjectionDirty=!0,e._modelViewProjectionDirty=!0,e._modelViewProjectionRelativeToEyeDirty=!0,e._modelViewInfiniteProjectionDirty=!0,e._normalDirty=!0,e._inverseNormalDirty=!0,e._normal3DDirty=!0,e._inverseNormal3DDirty=!0}function wdt(e,t){X.clone(t,e._inverseView),X.getMatrix3(t,e._inverseViewRotation)}function Xdt(e,t){X.clone(t,e._projection),e._inverseProjectionDirty=!0,e._viewProjectionDirty=!0,e._inverseViewProjectionDirty=!0,e._modelViewProjectionDirty=!0,e._modelViewProjectionRelativeToEyeDirty=!0}function Wdt(e,t){X.clone(t,e._infiniteProjection),e._modelViewInfiniteProjectionDirty=!0}var uCe=new m,Fdt=new X;function Pdt(e,t){m.clone(t.positionWC,e._cameraPosition),m.clone(t.directionWC,e._cameraDirection),m.clone(t.rightWC,e._cameraRight),m.clone(t.upWC,e._cameraUp);let n=e._ellipsoid,i,o=t.positionCartographic;if(l(o)?(e._eyeHeight=o.height,e._eyeEllipsoidNormalEC=n.geodeticSurfaceNormalCartographic(o,e._eyeEllipsoidNormalEC),i=m.fromRadians(o.longitude,o.latitude,0,n,uCe)):(e._eyeHeight=-n.maximumRadius,m.magnitude(t.positionWC)>0&&(e._eyeEllipsoidNormalEC=m.normalize(t.positionWC,e._eyeEllipsoidNormalEC)),i=n.scaleToGeodeticSurface(t.positionWC,uCe)),e._encodedCameraPositionMCDirty=!0,!l(i))return;e._eyeEllipsoidNormalEC=$.multiplyByVector(e._viewRotation,e._eyeEllipsoidNormalEC,e._eyeEllipsoidNormalEC);let r=Dt.eastNorthUpToFixedFrame(i,n,Fdt);e._enuToModel=X.multiplyTransformation(e.inverseModel,r,e._enuToModel),e._modelToEnu=X.inverseTransformation(e._enuToModel,e._modelToEnu),Z.equalsEpsilon(n._radii.x,n._radii.y,Z.EPSILON15)&&(e._eyeEllipsoidCurvature=n.getLocalCurvature(i,e._eyeEllipsoidCurvature))}var o7=new $,Mdt=new ge;function vdt(e,t){Dt.computeIcrfToCentralBodyFixedMatrix(t.time,o7);let n=ry.computeSunPositionInEarthInertialFrame(t.time,e._sunPositionWC);$.multiplyByVector(o7,n,n),m.normalize(n,e._sunDirectionWC),n=$.multiplyByVector(e.viewRotation3D,n,e._sunDirectionEC),m.normalize(n,n),n=ry.computeMoonPositionInEarthInertialFrame(t.time,e._moonDirectionEC),$.multiplyByVector(o7,n,n),$.multiplyByVector(e.viewRotation3D,n,n),m.normalize(n,n);let i=t.mapProjection,r=i.ellipsoid.cartesianToCartographic(e._sunPositionWC,Mdt);i.project(r,e._sunPositionColumbusView)}zS.prototype.updateCamera=function(e){Bdt(this,e.viewMatrix),wdt(this,e.inverseViewMatrix),Pdt(this,e),this._entireFrustum.x=e.frustum.near,this._entireFrustum.y=e.frustum.far,this.updateFrustum(e.frustum),this._orthographicIn3D=this._mode!==re.SCENE2D&&e.frustum instanceof gn};zS.prototype.updateFrustum=function(e){Xdt(this,e.projectionMatrix),l(e.infiniteProjectionMatrix)&&Wdt(this,e.infiniteProjectionMatrix),this._currentFrustum.x=e.near,this._currentFrustum.y=e.far,this._farDepthFromNearPlusOne=e.far-e.near+1,this._log2FarDepthFromNearPlusOne=Z.log2(this._farDepthFromNearPlusOne),this._oneOverLog2FarDepthFromNearPlusOne=1/this._log2FarDepthFromNearPlusOne;let t=e.offCenterFrustum;l(t)&&(e=t),this._frustumPlanes.x=e.top,this._frustumPlanes.y=e.bottom,this._frustumPlanes.z=e.left,this._frustumPlanes.w=e.right};zS.prototype.updatePass=function(e){this._pass=e};var Ndt=[],Ddt=new Ng;zS.prototype.update=function(e){this._mode=e.mode,this._mapProjection=e.mapProjection,this._ellipsoid=e.mapProjection.ellipsoid,this._pixelRatio=e.pixelRatio;let t=e.camera;this.updateCamera(t),e.mode===re.SCENE2D?(this._frustum2DWidth=t.frustum.right-t.frustum.left,this._eyeHeight2D.x=this._frustum2DWidth*.5,this._eyeHeight2D.y=this._eyeHeight2D.x*this._eyeHeight2D.x):(this._frustum2DWidth=0,this._eyeHeight2D.x=0,this._eyeHeight2D.y=0),vdt(this,e);let n=e.light??Ddt;n instanceof Ng?(this._lightDirectionWC=m.clone(this._sunDirectionWC,this._lightDirectionWC),this._lightDirectionEC=m.clone(this._sunDirectionEC,this._lightDirectionEC)):(this._lightDirectionWC=m.normalize(m.negate(n.direction,this._lightDirectionWC),this._lightDirectionWC),this._lightDirectionEC=$.multiplyByVector(this.viewRotation3D,this._lightDirectionWC,this._lightDirectionEC));let i=n.color,o=m.fromElements(i.red,i.green,i.blue,this._lightColorHdr);o=m.multiplyByScalar(o,n.intensity,o);let r=m.maximumComponent(o);r>1?m.divideByScalar(o,r,this._lightColor):m.clone(o,this._lightColor);let s=e.brdfLutGenerator,a=l(s)?s.colorTexture:void 0;this._brdfLut=a,this._environmentMap=e.environmentMap??e.context.defaultCubeMap,this._sphericalHarmonicCoefficients=e.sphericalHarmonicCoefficients??Ndt,this._specularEnvironmentMaps=e.specularEnvironmentMaps,this._specularEnvironmentMapsMaximumLOD=e.specularEnvironmentMapsMaximumLOD,this._fogDensity=e.fog.density,this._fogVisualDensityScalar=e.fog.visualDensityScalar,this._fogMinimumBrightness=e.fog.minimumBrightness;let c=e.atmosphere;l(c)&&(this._atmosphereHsbShift=m.fromElements(c.hueShift,c.saturationShift,c.brightnessShift,this._atmosphereHsbShift),this._atmosphereLightIntensity=c.lightIntensity,this._atmosphereRayleighCoefficient=m.clone(c.rayleighCoefficient,this._atmosphereRayleighCoefficient),this._atmosphereRayleighScaleHeight=c.rayleighScaleHeight,this._atmosphereMieCoefficient=m.clone(c.mieCoefficient,this._atmosphereMieCoefficient),this._atmosphereMieScaleHeight=c.mieScaleHeight,this._atmosphereMieAnisotropy=c.mieAnisotropy,this._atmosphereDynamicLighting=c.dynamicLighting),this._invertClassificationColor=e.invertClassificationColor,this._frameState=e,this._temeToPseudoFixed=Dt.computeTemeToPseudoFixedMatrix(e.time,this._temeToPseudoFixed),this._splitPosition=e.splitPosition*e.context.drawingBufferWidth;let d=t.frustum.fov,u=this._viewport,h;l(d)?u.height>u.width?h=Math.tan(.5*d)*2/u.height:h=Math.tan(.5*d)*2/u.width:h=1/Math.max(u.width,u.height),this._geometricToleranceOverMeter=h*e.maximumScreenSpaceError,U.clone(e.backgroundColor,this._backgroundColor),this._minimumDisableDepthTestDistance=e.minimumDisableDepthTestDistance,this._minimumDisableDepthTestDistance*=this._minimumDisableDepthTestDistance,this._minimumDisableDepthTestDistance===Number.POSITIVE_INFINITY&&(this._minimumDisableDepthTestDistance=-1)};function mCe(e){if(e._viewportDirty){let t=e._viewport;X.computeOrthographicOffCenter(t.x,t.x+t.width,t.y,t.y+t.height,0,1,e._viewportOrthographicMatrix),X.computeViewportTransformation(t,0,1,e._viewportTransformation),e._viewportDirty=!1}}function Qdt(e){e._inverseProjectionDirty&&(e._inverseProjectionDirty=!1,e._mode!==re.SCENE2D&&e._mode!==re.MORPHING&&!e._orthographicIn3D?X.inverse(e._projection,e._inverseProjection):X.clone(X.ZERO,e._inverseProjection))}function Udt(e){e._modelViewDirty&&(e._modelViewDirty=!1,X.multiplyTransformation(e._view,e._model,e._modelView))}function kdt(e){e._modelView3DDirty&&(e._modelView3DDirty=!1,X.multiplyTransformation(e.view3D,e._model,e._modelView3D))}function Ydt(e){e._inverseModelViewDirty&&(e._inverseModelViewDirty=!1,X.inverse(e.modelView,e._inverseModelView))}function Odt(e){e._inverseModelView3DDirty&&(e._inverseModelView3DDirty=!1,X.inverse(e.modelView3D,e._inverseModelView3D))}function Hdt(e){e._viewProjectionDirty&&(e._viewProjectionDirty=!1,X.multiply(e._projection,e._view,e._viewProjection))}function zdt(e){e._inverseViewProjectionDirty&&(e._inverseViewProjectionDirty=!1,X.inverse(e.viewProjection,e._inverseViewProjection))}function Kdt(e){e._modelViewProjectionDirty&&(e._modelViewProjectionDirty=!1,X.multiply(e._projection,e.modelView,e._modelViewProjection))}function Jdt(e){if(e._modelViewRelativeToEyeDirty){e._modelViewRelativeToEyeDirty=!1;let t=e.modelView,n=e._modelViewRelativeToEye;n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=0,n[13]=0,n[14]=0,n[15]=t[15]}}function jdt(e){e._inverseModelViewProjectionDirty&&(e._inverseModelViewProjectionDirty=!1,X.inverse(e.modelViewProjection,e._inverseModelViewProjection))}function qdt(e){e._modelViewProjectionRelativeToEyeDirty&&(e._modelViewProjectionRelativeToEyeDirty=!1,X.multiply(e._projection,e.modelViewRelativeToEye,e._modelViewProjectionRelativeToEye))}function $dt(e){e._modelViewInfiniteProjectionDirty&&(e._modelViewInfiniteProjectionDirty=!1,X.multiply(e._infiniteProjection,e.modelView,e._modelViewInfiniteProjection))}function eut(e){if(e._normalDirty){e._normalDirty=!1;let t=e._normal;X.getMatrix3(e.inverseModelView,t),$.transpose(t,t)}}function tut(e){if(e._normal3DDirty){e._normal3DDirty=!1;let t=e._normal3D;X.getMatrix3(e.inverseModelView3D,t),$.transpose(t,t)}}function nut(e){if(e._inverseNormalDirty){e._inverseNormalDirty=!1;let t=e._inverseNormal;X.getMatrix3(e.modelView,t),$.transpose(t,t)}}function iut(e){if(e._inverseNormal3DDirty){e._inverseNormal3DDirty=!1;let t=e._inverseNormal3D;X.getMatrix3(e.modelView3D,t),$.transpose(t,t)}}var hCe=new m;function fCe(e){e._encodedCameraPositionMCDirty&&(e._encodedCameraPositionMCDirty=!1,X.multiplyByPoint(e.inverseModel,e._cameraPosition,hCe),ni.fromCartesian(hCe,e._encodedCameraPositionMC))}var out=new m,rut=new m,sut=new m,aut=new m,cut=new ge,lut=new m,dut=new X;function uut(e,t,n,i,o,r,s,a){let c=out;c.x=e.y,c.y=e.z,c.z=e.x;let d=rut;d.x=n.y,d.y=n.z,d.z=n.x;let u=sut;u.x=i.y,u.y=i.z,u.z=i.x;let h=aut;h.x=t.y,h.y=t.z,h.z=t.x,r===re.SCENE2D&&(c.z=o*.5);let p=s.unproject(c,cut);p.longitude=Z.clamp(p.longitude,-Math.PI,Math.PI),p.latitude=Z.clamp(p.latitude,-Z.PI_OVER_TWO,Z.PI_OVER_TWO);let g=s.ellipsoid,f=g.cartographicToCartesian(p,lut),b=Dt.eastNorthUpToFixedFrame(f,g,dut);return X.multiplyByPointAsVector(b,d,d),X.multiplyByPointAsVector(b,u,u),X.multiplyByPointAsVector(b,h,h),l(a)||(a=new X),a[0]=d.x,a[1]=u.x,a[2]=-h.x,a[3]=0,a[4]=d.y,a[5]=u.y,a[6]=-h.y,a[7]=0,a[8]=d.z,a[9]=u.z,a[10]=-h.z,a[11]=0,a[12]=-m.dot(d,f),a[13]=-m.dot(u,f),a[14]=m.dot(h,f),a[15]=1,a}function r7(e){e._view3DDirty&&(e._mode===re.SCENE3D?X.clone(e._view,e._view3D):uut(e._cameraPosition,e._cameraDirection,e._cameraRight,e._cameraUp,e._frustum2DWidth,e._mode,e._mapProjection,e._view3D),X.getMatrix3(e._view3D,e._viewRotation3D),e._view3DDirty=!1)}function pCe(e){e._inverseView3DDirty&&(X.inverseTransformation(e.view3D,e._inverseView3D),X.getMatrix3(e._inverseView3D,e._inverseViewRotation3D),e._inverseView3DDirty=!1)}var sP=zS;function xu(e,t){let{getWebGLStub:n,requestWebgl1:i,webgl:o={},allowTextureFilterAnisotropic:r=!0}=t??{};o.alpha=o.alpha??!1,o.stencil=o.stencil??!0,o.powerPreference=o.powerPreference??"high-performance";let s=l(n)?n(e,o):mut(e,o,i),c=typeof WebGL2RenderingContext<"u"&&s instanceof WebGL2RenderingContext;this._canvas=e,this._originalGLContext=s,this._gl=s,this._webgl2=c,this._id=qn(),this.validateFramebuffer=!1,this.validateShaderProgram=!1,this.logShaderCompilation=!1,this._throwOnWebGLError=!1,this._shaderCache=new iP(this),this._textureCache=new oP;let d=s;this._stencilBits=d.getParameter(d.STENCIL_BITS),Kt._maximumCombinedTextureImageUnits=d.getParameter(d.MAX_COMBINED_TEXTURE_IMAGE_UNITS),Kt._maximumCubeMapSize=d.getParameter(d.MAX_CUBE_MAP_TEXTURE_SIZE),Kt._maximumFragmentUniformVectors=d.getParameter(d.MAX_FRAGMENT_UNIFORM_VECTORS),Kt._maximumTextureImageUnits=d.getParameter(d.MAX_TEXTURE_IMAGE_UNITS),Kt._maximumRenderbufferSize=d.getParameter(d.MAX_RENDERBUFFER_SIZE),Kt._maximumTextureSize=d.getParameter(d.MAX_TEXTURE_SIZE),Kt._maximumVaryingVectors=d.getParameter(d.MAX_VARYING_VECTORS),Kt._maximumVertexAttributes=d.getParameter(d.MAX_VERTEX_ATTRIBS),Kt._maximumVertexTextureImageUnits=d.getParameter(d.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Kt._maximumVertexUniformVectors=d.getParameter(d.MAX_VERTEX_UNIFORM_VECTORS),Kt._maximumSamples=this._webgl2?d.getParameter(d.MAX_SAMPLES):0;let u=d.getParameter(d.ALIASED_LINE_WIDTH_RANGE);Kt._minimumAliasedLineWidth=u[0],Kt._maximumAliasedLineWidth=u[1];let h=d.getParameter(d.ALIASED_POINT_SIZE_RANGE);Kt._minimumAliasedPointSize=h[0],Kt._maximumAliasedPointSize=h[1];let p=d.getParameter(d.MAX_VIEWPORT_DIMS);Kt._maximumViewportWidth=p[0],Kt._maximumViewportHeight=p[1];let g=d.getShaderPrecisionFormat(d.FRAGMENT_SHADER,d.HIGH_FLOAT);Kt._highpFloatSupported=g.precision!==0;let f=d.getShaderPrecisionFormat(d.FRAGMENT_SHADER,d.HIGH_INT);Kt._highpIntSupported=f.rangeMax!==0,this._antialias=d.getContextAttributes().antialias,this._standardDerivatives=!!Hr(d,["OES_standard_derivatives"]),this._blendMinmax=!!Hr(d,["EXT_blend_minmax"]),this._elementIndexUint=!!Hr(d,["OES_element_index_uint"]),this._depthTexture=!!Hr(d,["WEBGL_depth_texture","WEBKIT_WEBGL_depth_texture"]),this._fragDepth=!!Hr(d,["EXT_frag_depth"]),this._debugShaders=Hr(d,["WEBGL_debug_shaders"]),this._textureFloat=!!Hr(d,["OES_texture_float"]),this._textureHalfFloat=!!Hr(d,["OES_texture_half_float"]),this._textureFloatLinear=!!Hr(d,["OES_texture_float_linear"]),this._textureHalfFloatLinear=!!Hr(d,["OES_texture_half_float_linear"]),this._supportsTextureLod=!!Hr(d,["EXT_shader_texture_lod"]),this._colorBufferFloat=!!Hr(d,["EXT_color_buffer_float","WEBGL_color_buffer_float"]),this._floatBlend=!!Hr(d,["EXT_float_blend"]),this._colorBufferHalfFloat=!!Hr(d,["EXT_color_buffer_half_float"]),this._s3tc=!!Hr(d,["WEBGL_compressed_texture_s3tc","MOZ_WEBGL_compressed_texture_s3tc","WEBKIT_WEBGL_compressed_texture_s3tc"]),this._pvrtc=!!Hr(d,["WEBGL_compressed_texture_pvrtc","WEBKIT_WEBGL_compressed_texture_pvrtc"]),this._astc=!!Hr(d,["WEBGL_compressed_texture_astc"]),this._etc=!!Hr(d,["WEBG_compressed_texture_etc"]),this._etc1=!!Hr(d,["WEBGL_compressed_texture_etc1"]),this._bc7=!!Hr(d,["EXT_texture_compression_bptc"]),Kl.setKTX2SupportedFormats(this._s3tc,this._pvrtc,this._astc,this._etc,this._etc1,this._bc7);let b=r?Hr(d,["EXT_texture_filter_anisotropic","WEBKIT_EXT_texture_filter_anisotropic"]):void 0;this._textureFilterAnisotropic=b,Kt._maximumTextureFilterAnisotropy=l(b)?d.getParameter(b.MAX_TEXTURE_MAX_ANISOTROPY_EXT):1;let x,I,_,E,S,R,G,B,w,F;if(c){let L=this;x=function(){return L._gl.createVertexArray()},I=function(V){L._gl.bindVertexArray(V)},_=function(V){L._gl.deleteVertexArray(V)},E=function(V,W,M,Q,N){d.drawElementsInstanced(V,W,M,Q,N)},S=function(V,W,M,Q){d.drawArraysInstanced(V,W,M,Q)},R=function(V,W){d.vertexAttribDivisor(V,W)},G=function(V){d.drawBuffers(V)}}else B=Hr(d,["OES_vertex_array_object"]),l(B)&&(x=function(){return B.createVertexArrayOES()},I=function(L){B.bindVertexArrayOES(L)},_=function(L){B.deleteVertexArrayOES(L)}),w=Hr(d,["ANGLE_instanced_arrays"]),l(w)&&(E=function(L,V,W,M,Q){w.drawElementsInstancedANGLE(L,V,W,M,Q)},S=function(L,V,W,M){w.drawArraysInstancedANGLE(L,V,W,M)},R=function(L,V){w.vertexAttribDivisorANGLE(L,V)}),F=Hr(d,["WEBGL_draw_buffers"]),l(F)&&(G=function(L){F.drawBuffersWEBGL(L)});this.glCreateVertexArray=x,this.glBindVertexArray=I,this.glDeleteVertexArray=_,this.glDrawElementsInstanced=E,this.glDrawArraysInstanced=S,this.glVertexAttribDivisor=R,this.glDrawBuffers=G,this._vertexArrayObject=!!B,this._instancedArrays=!!w,this._drawBuffers=!!F,Kt._maximumDrawBuffers=this.drawBuffers?d.getParameter(ne.MAX_DRAW_BUFFERS):1,Kt._maximumColorAttachments=this.drawBuffers?d.getParameter(ne.MAX_COLOR_ATTACHMENTS):1,this._clearColor=new U(0,0,0,0),this._clearDepth=1,this._clearStencil=0;let P=new sP,A=new Hc(this),T=Qe.fromCache();this._defaultPassState=A,this._defaultRenderState=T,this._defaultTexture=void 0,this._defaultEmissiveTexture=void 0,this._defaultNormalTexture=void 0,this._defaultCubeMap=void 0,this._us=P,this._currentRenderState=T,this._currentPassState=A,this._currentFramebuffer=void 0,this._maxFrameTextureUnitIndex=0,this._vertexAttribDivisors=[],this._previousDrawInstanced=!1;for(let L=0;L<Kt._maximumVertexAttributes;L++)this._vertexAttribDivisors.push(0);this._pickObjects={},this._nextPickColor=new Uint32Array(1),this.options={getWebGLStub:n,requestWebgl1:i,webgl:o,allowTextureFilterAnisotropic:r},this.cache={},Qe.apply(d,T,A)}function mut(e,t,n){if(typeof WebGLRenderingContext>"u")throw new de("The browser does not support WebGL. Visit http://get.webgl.org.");!n&&!(typeof WebGL2RenderingContext<"u")&&(n=!0);let o=n?"webgl":"webgl2",r=e.getContext(o,t);if(!l(r))throw new de("The browser supports WebGL, but initialization failed.");return r}function hut(e,t){let n="WebGL Error: ";switch(t){case e.INVALID_ENUM:n+="INVALID_ENUM";break;case e.INVALID_VALUE:n+="INVALID_VALUE";break;case e.INVALID_OPERATION:n+="INVALID_OPERATION";break;case e.OUT_OF_MEMORY:n+="OUT_OF_MEMORY";break;case e.CONTEXT_LOST_WEBGL:n+="CONTEXT_LOST_WEBGL lost";break;default:n+=`Unknown (${t})`}return n}function fut(e,t,n,i){let o=`${hut(e,i)}: ${t.name}(`;for(let r=0;r<n.length;++r)r!==0&&(o+=", "),o+=n[r];return o+=");",o}function put(e,t,n){let i=e.getError();if(i!==e.NO_ERROR)throw new de(fut(e,t,n,i))}function Aut(e,t,n){return{get:function(){let i=e[t];return n(e,`get: ${t}`,i),e[t]},set:function(i){e[t]=i,n(e,`set: ${t}`,i)}}}function gut(e,t){if(!l(t))return e;function n(o){return function(){let r=o.apply(e,arguments);return t(e,o,arguments),r}}let i={};for(let o in e){let r=e[o];r instanceof Function?i[o]=n(r):Object.defineProperty(i,o,Aut(e,o,t))}return i}function Hr(e,t){let n=t.length;for(let i=0;i<n;++i){let o=e.getExtension(t[i]);if(o)return o}}var but={};Object.defineProperties(xu.prototype,{id:{get:function(){return this._id}},webgl2:{get:function(){return this._webgl2}},canvas:{get:function(){return this._canvas}},shaderCache:{get:function(){return this._shaderCache}},textureCache:{get:function(){return this._textureCache}},uniformState:{get:function(){return this._us}},stencilBits:{get:function(){return this._stencilBits}},stencilBuffer:{get:function(){return this._stencilBits>=8}},antialias:{get:function(){return this._antialias}},msaa:{get:function(){return this._webgl2}},standardDerivatives:{get:function(){return this._standardDerivatives||this._webgl2}},floatBlend:{get:function(){return this._floatBlend}},blendMinmax:{get:function(){return this._blendMinmax||this._webgl2}},elementIndexUint:{get:function(){return this._elementIndexUint||this._webgl2}},depthTexture:{get:function(){return this._depthTexture||this._webgl2}},floatingPointTexture:{get:function(){return this._webgl2||this._textureFloat}},halfFloatingPointTexture:{get:function(){return this._webgl2||this._textureHalfFloat}},textureFloatLinear:{get:function(){return this._textureFloatLinear}},textureHalfFloatLinear:{get:function(){return this._webgl2&&this._textureFloatLinear||!this._webgl2&&this._textureHalfFloatLinear}},supportsTextureLod:{get:function(){return this._webgl2||this._supportsTextureLod}},textureFilterAnisotropic:{get:function(){return!!this._textureFilterAnisotropic}},s3tc:{get:function(){return this._s3tc}},pvrtc:{get:function(){return this._pvrtc}},astc:{get:function(){return this._astc}},etc:{get:function(){return this._etc}},etc1:{get:function(){return this._etc1}},bc7:{get:function(){return this._bc7}},supportsBasis:{get:function(){return this._s3tc||this._pvrtc||this._astc||this._etc||this._etc1||this._bc7}},vertexArrayObject:{get:function(){return this._vertexArrayObject||this._webgl2}},fragmentDepth:{get:function(){return this._fragDepth||this._webgl2}},instancedArrays:{get:function(){return this._instancedArrays||this._webgl2}},colorBufferFloat:{get:function(){return this._colorBufferFloat}},colorBufferHalfFloat:{get:function(){return this._webgl2&&this._colorBufferFloat||!this._webgl2&&this._colorBufferHalfFloat}},drawBuffers:{get:function(){return this._drawBuffers||this._webgl2}},debugShaders:{get:function(){return this._debugShaders}},throwOnWebGLError:{get:function(){return this._throwOnWebGLError},set:function(e){this._throwOnWebGLError=e,this._gl=gut(this._originalGLContext,e?put:void 0)}},defaultTexture:{get:function(){return this._defaultTexture===void 0&&(this._defaultTexture=new Wt({context:this,source:{width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])},flipY:!1})),this._defaultTexture}},defaultEmissiveTexture:{get:function(){return this._defaultEmissiveTexture===void 0&&(this._defaultEmissiveTexture=new Wt({context:this,pixelFormat:tt.RGB,source:{width:1,height:1,arrayBufferView:new Uint8Array([0,0,0])},flipY:!1})),this._defaultEmissiveTexture}},defaultNormalTexture:{get:function(){return this._defaultNormalTexture===void 0&&(this._defaultNormalTexture=new Wt({context:this,pixelFormat:tt.RGB,source:{width:1,height:1,arrayBufferView:new Uint8Array([128,128,255])},flipY:!1})),this._defaultNormalTexture}},defaultCubeMap:{get:function(){if(this._defaultCubeMap===void 0){let e={width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])};this._defaultCubeMap=new Pr({context:this,source:{positiveX:e,negativeX:e,positiveY:e,negativeY:e,positiveZ:e,negativeZ:e},flipY:!1})}return this._defaultCubeMap}},drawingBufferHeight:{get:function(){return this._gl.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._gl.drawingBufferWidth}},defaultFramebuffer:{get:function(){return but}}});function ACe(e,t,n,i){let o=e._currentRenderState,r=e._currentPassState;e._currentRenderState=t,e._currentPassState=n,Qe.partialApply(e._gl,o,t,r,n,i)}var s7;typeof WebGLRenderingContext<"u"&&(s7=[ne.BACK]);function a7(e,t){if(t!==e._currentFramebuffer){e._currentFramebuffer=t;let n=s7;if(l(t))t._bind(),n=t._getActiveColorAttachments();else{let i=e._gl;i.bindFramebuffer(i.FRAMEBUFFER,null)}e.drawBuffers&&e.glDrawBuffers(n)}}var yut=new xi;xu.prototype.clear=function(e,t){e=e??yut,t=t??this._defaultPassState;let n=this._gl,i=0,o=e.color,r=e.depth,s=e.stencil;l(o)&&(U.equals(this._clearColor,o)||(U.clone(o,this._clearColor),n.clearColor(o.red,o.green,o.blue,o.alpha)),i|=n.COLOR_BUFFER_BIT),l(r)&&(r!==this._clearDepth&&(this._clearDepth=r,n.clearDepth(r)),i|=n.DEPTH_BUFFER_BIT),l(s)&&(s!==this._clearStencil&&(this._clearStencil=s,n.clearStencil(s)),i|=n.STENCIL_BUFFER_BIT);let a=e.renderState??this._defaultRenderState;ACe(this,a,t,!0);let c=e.framebuffer??t.framebuffer;a7(this,c),n.clear(i)};function Cut(e,t,n,i,o){a7(e,t),ACe(e,o,n,!1),i._bind(),e._maxFrameTextureUnitIndex=Math.max(e._maxFrameTextureUnitIndex,i.maximumTextureUnitIndex)}function xut(e,t,n,i){let o=t._primitiveType,r=t._vertexArray,s=t._offset,a=t._count,c=t.instanceCount;e._us.model=t._modelMatrix??X.IDENTITY,n._setUniforms(i,e._us,e.validateShaderProgram),r._bind();let d=r.indexBuffer;l(d)?(s=s*d.bytesPerIndex,l(a)?a=Math.min(a,d.numberOfIndices):a=d.numberOfIndices,c===0?e._gl.drawElements(o,a,d.indexDatatype,s):e.glDrawElementsInstanced(o,a,d.indexDatatype,s,c)):(l(a)?a=Math.min(a,r.numberOfVertices):a=r.numberOfVertices,c===0?e._gl.drawArrays(o,s,a):e.glDrawArraysInstanced(o,s,a,c)),r._unBind()}xu.prototype.draw=function(e,t,n,i){t=t??this._defaultPassState;let o=e._framebuffer??t.framebuffer,r=e._renderState??this._defaultRenderState;n=n??e._shaderProgram,i=i??e._uniformMap,Cut(this,o,t,n,r),xut(this,e,n,i)};xu.prototype.beginFrame=function(){};xu.prototype.endFrame=function(){let e=this._gl;e.useProgram(null),this._currentFramebuffer=void 0,e.bindFramebuffer(e.FRAMEBUFFER,null);let t=s7;this.drawBuffers&&this.glDrawBuffers(t);let n=this._maxFrameTextureUnitIndex;this._maxFrameTextureUnitIndex=0;for(let i=0;i<n;++i)e.activeTexture(e.TEXTURE0+i),e.bindTexture(e.TEXTURE_2D,null),e.bindTexture(e.TEXTURE_CUBE_MAP,null)};xu.prototype.readPixels=function(e){let t=this._gl;e=e??Y.EMPTY_OBJECT;let n=Math.max(e.x??0,0),i=Math.max(e.y??0,0),o=e.width??this.drawingBufferWidth,r=e.height??this.drawingBufferHeight,s=e.framebuffer,a=Ye.UNSIGNED_BYTE;l(s)&&s.numberOfColorAttachments>0&&(a=s.getColorTexture(0).pixelDatatype);let c=tt.createTypedArray(tt.RGBA,a,o,r);return a7(this,s),t.readPixels(n,i,o,r,tt.RGBA,Ye.toWebGLConstant(a,this),c),c};var gCe={position:0,textureCoordinates:1};xu.prototype.getViewportQuadVertexArray=function(){let e=this.cache.viewportQuad_vertexArray;if(!l(e)){let t=new pt({attributes:{position:new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:[-1,-1,1,-1,1,1,-1,1]}),textureCoordinates:new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:[0,0,1,0,1,1,0,1]})},indices:new Uint16Array([0,1,2,0,2,3]),primitiveType:We.TRIANGLES});e=ui.fromGeometry({context:this,geometry:t,attributeLocations:gCe,bufferUsage:Ne.STATIC_DRAW,interleave:!0}),this.cache.viewportQuad_vertexArray=e}return e};xu.prototype.createViewportQuadCommand=function(e,t){return t=t??Y.EMPTY_OBJECT,new ot({vertexArray:this.getViewportQuadVertexArray(),primitiveType:We.TRIANGLES,renderState:t.renderState,shaderProgram:ln.fromCache({context:this,vertexShaderSource:yI,fragmentShaderSource:e,attributeLocations:gCe}),uniformMap:t.uniformMap,owner:t.owner,framebuffer:t.framebuffer,pass:t.pass})};xu.prototype.getObjectByPickColor=function(e){return this._pickObjects[e.toRgba()]};function c7(e,t,n){this._pickObjects=e,this.key=t,this.color=n}Object.defineProperties(c7.prototype,{object:{get:function(){return this._pickObjects[this.key]},set:function(e){this._pickObjects[this.key]=e}}});c7.prototype.destroy=function(){delete this._pickObjects[this.key]};xu.prototype.createPickId=function(e){++this._nextPickColor[0];let t=this._nextPickColor[0];if(t===0)throw new de("Out of unique Pick IDs.");return this._pickObjects[t]=e,new c7(this._pickObjects,t,U.fromRgba(t))};xu.prototype.isDestroyed=function(){return!1};xu.prototype.destroy=function(){let e=this.cache;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];l(n.destroy)&&n.destroy()}return this._shaderCache=this._shaderCache.destroy(),this._textureCache=this._textureCache.destroy(),this._defaultTexture=this._defaultTexture&&this._defaultTexture.destroy(),this._defaultEmissiveTexture=this._defaultEmissiveTexture&&this._defaultEmissiveTexture.destroy(),this._defaultNormalTexture=this._defaultNormalTexture&&this._defaultNormalTexture.destroy(),this._defaultCubeMap=this._defaultCubeMap&&this._defaultCubeMap.destroy(),me(this)};var xI=xu;var OGi=y(C(),1);function gk(e){this._autoDestroy=e?.autoDestroy??!0,this._canvas=document.createElement("canvas"),this._context=new xI(this._canvas,ke(e?.contextOptions)),this._canvases=[]}gk.prototype.createSceneContext=function(e){let t=e.getContext("2d",{alpha:!0}),n=this;n._canvases.push(e);let i=!1,o=function(){i=!0;let c=n._canvases.indexOf(e);c!==-1&&(n._canvases.splice(c,1),n._autoDestroy&&n._canvases.length===0&&n.destroy())},r=function(){let c=n._context.canvas,d=this.drawingBufferWidth;c.width<d&&(c.width=d);let u=this.drawingBufferHeight;c.height<u&&(c.height=u)},s=function(){let c=this.drawingBufferWidth,d=this.drawingBufferHeight,u=n._context.canvas.height-d;t.drawImage(n._context.canvas,0,u,c,d,0,0,c,d),n._context.endFrame()};return new Proxy(this._context,{get(c,d,u){if(d==="isDestroyed")return function(){return i};switch(d){case"_canvas":return e;case"destroy":return o;case"drawingBufferWidth":return e.width;case"drawingBufferHeight":return e.height;case"beginFrame":return r;case"endFrame":return s;default:return Reflect.get(c,d,u)}}})};gk.prototype.destroy=function(){this._context.destroy(),me(this)};gk.prototype.isDestroyed=function(){return!1};var aP=gk;var sZi=y(C(),1);function II(e){e=e??Y.EMPTY_OBJECT;let{context:t,source:n,pixelFormat:i=tt.RGBA,pixelDatatype:o=Ye.UNSIGNED_BYTE,flipY:r=!0,skipColorSpaceConversion:s=!1,sampler:a=new sn}=e;if(!t.webgl2)throw new Ae("WebGL1 does not support texture3D. Please use a WebGL2 context.");let{width:c,height:d,depth:u}=e;l(n)&&(l(c)||(c=n.width),l(d)||(d=n.height),l(u)||(u=n.depth));let h=e.preMultiplyAlpha||i===tt.RGB||i===tt.LUMINANCE,p=tt.toInternalFormat(i,o,t),g=tt.isCompressedFormat(p),f=t._gl,b=tt.texture3DSizeInBytes(i,o,c,d,u);if(this._id=e.id??qn(),this._context=t,this._textureFilterAnisotropic=t._textureFilterAnisotropic,this._textureTarget=f.TEXTURE_3D,this._texture=f.createTexture(),this._internalFormat=p,this._pixelFormat=i,this._pixelDatatype=o,this._width=c,this._height=d,this._depth=u,this._dimensions=new m(c,d,u),this._hasMipmap=!1,this._sizeInBytes=b,this._preMultiplyAlpha=h,this._flipY=r,this._initialized=!1,this._sampler=void 0,this._sampler=a,bCe(this,a),f.activeTexture(f.TEXTURE0),f.bindTexture(this._textureTarget,this._texture),l(n)){if(s?f.pixelStorei(f.UNPACK_COLORSPACE_CONVERSION_WEBGL,f.NONE):f.pixelStorei(f.UNPACK_COLORSPACE_CONVERSION_WEBGL,f.BROWSER_DEFAULT_WEBGL),!l(n.arrayBufferView))throw new Ae("For Texture3D, options.source.arrayBufferView must be defined");Iut(this,n),this._initialized=!0}else _ut(this);f.bindTexture(this._textureTarget,null)}function Iut(e,t){let n=e._context,i=n._gl,o=e._textureTarget,r=e._internalFormat,{width:s,height:a,depth:c,pixelFormat:d,pixelDatatype:u,flipY:h}=e,p=tt.alignmentInBytes(d,u,s);i.pixelStorei(i.UNPACK_ALIGNMENT,p),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1);let{arrayBufferView:g}=t;h&&console.warn("texture3D.flipY is not supported.");let f=1;if(t.mipLevels&&t.mipLevels.length&&(f=t.mipLevels.length+1),i.texStorage3D(o,f,r,s,a,c),i.texSubImage3D(o,0,0,0,0,s,a,c,d,Ye.toWebGLConstant(u,n),g),f>1){let b=s,x=a,I=c;for(let _=0;_<t.mipLevels.length;++_)b=l7(b),x=l7(x),I=l7(I),i.texSubImage3D(o,_+1,0,0,0,b,x,I,d,Ye.toWebGLConstant(u,n),t.mipLevels[_])}}function l7(e){let t=Math.floor(e/2)|0;return Math.max(t,1)}function _ut(e){let t=e._context;t._gl.texImage3D(e._textureTarget,0,e._internalFormat,e._width,e._height,e._depth,0,e._pixelFormat,Ye.toWebGLConstant(e._pixelDatatype,t),null)}II.create=function(e){return new II(e)};Object.defineProperties(II.prototype,{id:{get:function(){return this._id}},sampler:{get:function(){return this._sampler},set:function(e){bCe(this,e),this._sampler=e}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},dimensions:{get:function(){return this._dimensions}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},width:{get:function(){return this._width}},height:{get:function(){return this._height}},depth:{get:function(){return this._depth}},sizeInBytes:{get:function(){return this._hasMipmap?Math.floor(this._sizeInBytes*8/7):this._sizeInBytes}},_target:{get:function(){return this._textureTarget}}});function bCe(e,t){let{minificationFilter:n,magnificationFilter:i}=t,o=[en.NEAREST_MIPMAP_NEAREST,en.NEAREST_MIPMAP_LINEAR,en.LINEAR_MIPMAP_NEAREST,en.LINEAR_MIPMAP_LINEAR].includes(n),r=e._context,s=e._pixelFormat,a=e._pixelDatatype;(a===Ye.FLOAT&&!r.textureFloatLinear||a===Ye.HALF_FLOAT&&!r.textureHalfFloatLinear)&&(n=o?en.NEAREST_MIPMAP_NEAREST:en.NEAREST,i=pi.NEAREST),tt.isDepthFormat(s)&&(n=en.NEAREST,i=pi.NEAREST);let c=r._gl,d=e._textureTarget;c.activeTexture(c.TEXTURE0),c.bindTexture(d,e._texture),c.texParameteri(d,c.TEXTURE_MIN_FILTER,n),c.texParameteri(d,c.TEXTURE_MAG_FILTER,i),c.texParameteri(d,c.TEXTURE_WRAP_R,t.wrapR),c.texParameteri(d,c.TEXTURE_WRAP_S,t.wrapS),c.texParameteri(d,c.TEXTURE_WRAP_T,t.wrapT),l(e._textureFilterAnisotropic)&&c.texParameteri(d,e._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.maximumAnisotropy),c.bindTexture(d,null)}II.prototype.generateMipmap=function(e){e=e??Yu.DONT_CARE,this._hasMipmap=!0;let t=this._context._gl,n=this._textureTarget;t.hint(t.GENERATE_MIPMAP_HINT,e),t.activeTexture(t.TEXTURE0),t.bindTexture(n,this._texture),t.generateMipmap(n),t.bindTexture(n,null)};II.prototype.isDestroyed=function(){return!1};II.prototype.destroy=function(){return this._context._gl.deleteTexture(this._texture),me(this)};var d7=II;var dZi=y(C(),1);function Eut(e,t,n){let i={flipY:!0,skipColorSpaceConversion:n,preferImageBitmap:!0},o=[Ve.createIfNeeded(t.positiveX).fetchImage(i),Ve.createIfNeeded(t.negativeX).fetchImage(i),Ve.createIfNeeded(t.positiveY).fetchImage(i),Ve.createIfNeeded(t.negativeY).fetchImage(i),Ve.createIfNeeded(t.positiveZ).fetchImage(i),Ve.createIfNeeded(t.negativeZ).fetchImage(i)];return Promise.all(o).then(function(r){return new Pr({context:e,source:{positiveX:r[0],negativeX:r[1],positiveY:r[2],negativeY:r[3],positiveZ:r[4],negativeZ:r[5]}})})}var cP=Eut;var mZi=y(C(),1),KS=`#ifdef MRT +layout (location = 0) out vec4 out_FragData_0; +layout (location = 1) out vec4 out_FragData_1; +#else +layout (location = 0) out vec4 out_FragColor; +#endif + +uniform vec4 u_bgColor; +uniform sampler2D u_depthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + if (texture(u_depthTexture, v_textureCoordinates).r < 1.0) + { +#ifdef MRT + out_FragData_0 = u_bgColor; + out_FragData_1 = vec4(u_bgColor.a); +#else + out_FragColor = u_bgColor; +#endif + return; + } + + discard; +} +`;var fZi=y(C(),1),lP=`in vec2 v_textureCoordinates; +const float M_PI = 3.141592653589793; + +float vdcRadicalInverse(int i) +{ + float r; + float base = 2.0; + float value = 0.0; + float invBase = 1.0 / base; + float invBi = invBase; + for (int x = 0; x < 100; x++) + { + if (i <= 0) + { + break; + } + r = mod(float(i), base); + value += r * invBi; + invBi *= invBase; + i = int(float(i) * invBase); + } + return value; +} + +vec2 hammersley2D(int i, int N) +{ + return vec2(float(i) / float(N), vdcRadicalInverse(i)); +} + +vec3 importanceSampleGGX(vec2 xi, float alphaRoughness, vec3 N) +{ + float alphaRoughnessSquared = alphaRoughness * alphaRoughness; + float phi = 2.0 * M_PI * xi.x; + float cosTheta = sqrt((1.0 - xi.y) / (1.0 + (alphaRoughnessSquared - 1.0) * xi.y)); + float sinTheta = sqrt(1.0 - cosTheta * cosTheta); + vec3 H = vec3(sinTheta * cos(phi), sinTheta * sin(phi), cosTheta); + vec3 upVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 tangentX = normalize(cross(upVector, N)); + vec3 tangentY = cross(N, tangentX); + return tangentX * H.x + tangentY * H.y + N * H.z; +} + +/** + * Estimate the geometric self-shadowing of the microfacets in a surface, + * using the Smith Joint GGX visibility function. + * Note: Vis = G / (4 * NdotL * NdotV) + * see Eric Heitz. 2014. Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs. Journal of Computer Graphics Techniques, 3 + * see Real-Time Rendering. Page 331 to 336. + * see https://google.github.io/filament/Filament.md.html#materialsystem/specularbrdf/geometricshadowing(specularg) + * + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @param {float} NdotL The cosine of the angle between the surface normal and the direction to the light source. + * @param {float} NdotV The cosine of the angle between the surface normal and the direction to the camera. + */ +float smithVisibilityGGX(float alphaRoughness, float NdotL, float NdotV) +{ + float alphaRoughnessSq = alphaRoughness * alphaRoughness; + + float GGXV = NdotL * sqrt(NdotV * NdotV * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + float GGXL = NdotV * sqrt(NdotL * NdotL * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + + float GGX = GGXV + GGXL; // 2.0 if NdotL = NdotV = 1.0 + if (GGX > 0.0) + { + return 0.5 / GGX; // 1/4 if NdotL = NdotV = 1.0 + } + return 0.0; +} + +vec2 integrateBrdf(float roughness, float NdotV) +{ + vec3 V = vec3(sqrt(1.0 - NdotV * NdotV), 0.0, NdotV); + float A = 0.0; + float B = 0.0; + const int NumSamples = 1024; + float alphaRoughness = roughness * roughness; + for (int i = 0; i < NumSamples; i++) + { + vec2 xi = hammersley2D(i, NumSamples); + vec3 H = importanceSampleGGX(xi, alphaRoughness, vec3(0.0, 0.0, 1.0)); + vec3 L = 2.0 * dot(V, H) * H - V; + float NdotL = clamp(L.z, 0.0, 1.0); + float NdotH = clamp(H.z, 0.0, 1.0); + float VdotH = clamp(dot(V, H), 0.0, 1.0); + if (NdotL > 0.0) + { + float G = smithVisibilityGGX(alphaRoughness, NdotL, NdotV); + float G_Vis = 4.0 * G * VdotH * NdotL / NdotH; + float Fc = pow(1.0 - VdotH, 5.0); + A += (1.0 - Fc) * G_Vis; + B += Fc * G_Vis; + } + } + return vec2(A, B) / float(NumSamples); +} + +void main() +{ + out_FragColor = vec4(integrateBrdf(v_textureCoordinates.y, v_textureCoordinates.x), 0.0, 1.0); +} +`;var AZi=y(C(),1),dP=`uniform sampler2D u_noiseTexture; +uniform vec3 u_noiseTextureDimensions; +uniform float u_noiseDetail; +in vec2 v_offset; +in vec3 v_maximumSize; +in vec4 v_color; +in float v_slice; +in float v_brightness; + +float wrap(float value, float rangeLength) { + if(value < 0.0) { + float absValue = abs(value); + float modValue = mod(absValue, rangeLength); + return mod(rangeLength - modValue, rangeLength); + } + return mod(value, rangeLength); +} + +vec3 wrapVec(vec3 value, float rangeLength) { + return vec3(wrap(value.x, rangeLength), + wrap(value.y, rangeLength), + wrap(value.z, rangeLength)); +} + +vec2 voxelToUV(vec3 voxelIndex) { + float textureSliceWidth = u_noiseTextureDimensions.x; + float noiseTextureRows = u_noiseTextureDimensions.y; + float inverseNoiseTextureRows = u_noiseTextureDimensions.z; + + float textureSliceWidthSquared = textureSliceWidth * textureSliceWidth; + vec2 inverseNoiseTextureDimensions = vec2(noiseTextureRows / textureSliceWidthSquared, + inverseNoiseTextureRows / textureSliceWidth); + vec3 wrappedIndex = wrapVec(voxelIndex, textureSliceWidth); + float column = mod(wrappedIndex.z, textureSliceWidth * inverseNoiseTextureRows); + float row = floor(wrappedIndex.z / textureSliceWidth * noiseTextureRows); + + float xPixelCoord = wrappedIndex.x + column * textureSliceWidth; + float yPixelCoord = wrappedIndex.y + row * textureSliceWidth; + return vec2(xPixelCoord, yPixelCoord) * inverseNoiseTextureDimensions; +} + +// Interpolate a voxel with its neighbor (along the positive X-axis) +vec4 lerpSamplesX(vec3 voxelIndex, float x) { + vec2 uv0 = voxelToUV(voxelIndex); + vec2 uv1 = voxelToUV(voxelIndex + vec3(1.0, 0.0, 0.0)); + vec4 sample0 = texture(u_noiseTexture, uv0); + vec4 sample1 = texture(u_noiseTexture, uv1); + return mix(sample0, sample1, x); +} + +vec4 sampleNoiseTexture(vec3 position) { + float textureSliceWidth = u_noiseTextureDimensions.x; + vec3 recenteredPos = position + vec3(textureSliceWidth / 2.0); + vec3 lerpValue = fract(recenteredPos); + vec3 voxelIndex = floor(recenteredPos); + + vec4 xLerp00 = lerpSamplesX(voxelIndex, lerpValue.x); + vec4 xLerp01 = lerpSamplesX(voxelIndex + vec3(0.0, 0.0, 1.0), lerpValue.x); + vec4 xLerp10 = lerpSamplesX(voxelIndex + vec3(0.0, 1.0, 0.0), lerpValue.x); + vec4 xLerp11 = lerpSamplesX(voxelIndex + vec3(0.0, 1.0, 1.0), lerpValue.x); + + vec4 yLerp0 = mix(xLerp00, xLerp10, lerpValue.y); + vec4 yLerp1 = mix(xLerp01, xLerp11, lerpValue.y); + return mix(yLerp0, yLerp1, lerpValue.z); +} + +// Intersection with a unit sphere with radius 0.5 at center (0, 0, 0). +bool intersectSphere(vec3 origin, vec3 dir, float slice, + out vec3 point, out vec3 normal) { + float A = dot(dir, dir); + float B = dot(origin, dir); + float C = dot(origin, origin) - 0.25; + float discriminant = (B * B) - (A * C); + if(discriminant < 0.0) { + return false; + } + float root = sqrt(discriminant); + float t = (-B - root) / A; + if(t < 0.0) { + t = (-B + root) / A; + } + point = origin + t * dir; + + if(slice >= 0.0) { + point.z = (slice / 2.0) - 0.5; + if(length(point) > 0.5) { + return false; + } + } + + normal = normalize(point); + point -= czm_epsilon2 * normal; + return true; +} + +// Transforms the ray origin and direction into unit sphere space, +// then transforms the result back into the ellipsoid's space. +bool intersectEllipsoid(vec3 origin, vec3 dir, vec3 center, vec3 scale, float slice, + out vec3 point, out vec3 normal) { + if(scale.x <= 0.01 || scale.y < 0.01 || scale.z < 0.01) { + return false; + } + + vec3 o = (origin - center) / scale; + vec3 d = dir / scale; + vec3 p, n; + bool intersected = intersectSphere(o, d, slice, p, n); + if(intersected) { + point = (p * scale) + center; + normal = n; + } + return intersected; +} + +// Assume that if phase shift is being called for octave i, +// the frequency is of i - 1. This saves us from doing extra +// division / multiplication operations. +vec2 phaseShift2D(vec2 p, vec2 freq) { + return (czm_pi / 2.0) * sin(freq.yx * p.yx); +} + +vec2 phaseShift3D(vec3 p, vec2 freq) { + return phaseShift2D(p.xy, freq) + czm_pi * vec2(sin(freq.x * p.z)); +} + +// The cloud texture function derived from Gardner's 1985 paper, +// "Visual Simulation of Clouds." +// https://www.cs.drexel.edu/~david/Classes/Papers/p297-gardner.pdf +const float T0 = 0.6; // contrast of the texture pattern +const float k = 0.1; // computed to produce a maximum value of 1 +const float C0 = 0.8; // coefficient +const float FX0 = 0.6; // frequency X +const float FY0 = 0.6; // frequency Y +const int octaves = 5; + +float T(vec3 point) { + vec2 sum = vec2(0.0); + float Ci = C0; + vec2 FXY = vec2(FX0, FY0); + vec2 PXY = vec2(0.0); + for(int i = 1; i <= octaves; i++) { + PXY = phaseShift3D(point, FXY); + Ci *= 0.707; + FXY *= 2.0; + vec2 sinTerm = sin(FXY * point.xy + PXY); + sum += Ci * sinTerm + vec2(T0); + } + return k * sum.x * sum.y; +} + +const float a = 0.5; // fraction of surface reflection due to ambient or scattered light, +const float t = 0.4; // fraction of texture shading +const float s = 0.25; // fraction of specular reflection + +float I(float Id, float Is, float It) { + return (1.0 - a) * ((1.0 - t) * ((1.0 - s) * Id + s * Is) + t * It) + a; +} + +const vec3 lightDir = normalize(vec3(0.2, -1.0, 0.7)); + +vec4 drawCloud(vec3 rayOrigin, vec3 rayDir, vec3 cloudCenter, vec3 cloudScale, float cloudSlice, + float brightness) { + vec3 cloudPoint, cloudNormal; + if(!intersectEllipsoid(rayOrigin, rayDir, cloudCenter, cloudScale, cloudSlice, + cloudPoint, cloudNormal)) { + return vec4(0.0); + } + + float Id = clamp(dot(cloudNormal, -lightDir), 0.0, 1.0); // diffuse reflection + float Is = max(pow(dot(-lightDir, -rayDir), 2.0), 0.0); // specular reflection + float It = T(cloudPoint); // texture function + float intensity = I(Id, Is, It); + vec3 color = vec3(intensity * clamp(brightness, 0.1, 1.0)); + + vec4 noise = sampleNoiseTexture(u_noiseDetail * cloudPoint); + float W = noise.x; + float W2 = noise.y; + float W3 = noise.z; + + // The dot product between the cloud's normal and the ray's direction is greatest + // in the center of the ellipsoid's surface. It decreases towards the edge. + // Thus, it is used to blur the areas leading to the edges of the ellipsoid, + // so that no harsh lines appear. + + // The first (and biggest) layer of worley noise is then subtracted from this. + // The final result is scaled up so that the base cloud is not too translucent. + float ndDot = clamp(dot(cloudNormal, -rayDir), 0.0, 1.0); + float TR = pow(ndDot, 3.0) - W; // translucency + TR *= 1.3; + + // Subtracting the second and third layers of worley noise is more complicated. + // If these layers of noise were simply subtracted from the current translucency, + // the shape derived from the first layer of noise would be completely deleted. + // The erosion of this noise should thus be constricted to the edges of the cloud. + // However, because the edges of the ellipsoid were already blurred away, mapping + // the noise to (1.0 - ndDot) will have no impact on most of the cloud's appearance. + // The value of (0.5 - ndDot) provides the best compromise. + float minusDot = 0.5 - ndDot; + + // Even with the previous calculation, subtracting the second layer of wnoise + // erode too much of the cloud. The addition of it, however, will detailed + // volume to the cloud. As long as the noise is only added and not subtracted, + // the results are aesthetically pleasing. + + // The minusDot product is mapped in a way that it is larger at the edges of + // the ellipsoid, so a subtraction and min operation are used instead of + // an addition and max one. + TR -= min(minusDot * W2, 0.0); + + // The third level of worley noise is subtracted from the result, with some + // modifications. First, a scalar is added to minusDot so that the noise + // starts affecting the shape farther away from the center of the ellipsoid's + // surface. Then, it is scaled down so its impact is not too intense. + TR -= 0.8 * (minusDot + 0.25) * W3; + + // The texture function's shading does not correlate with the shape of the cloud + // produced by the layers of noise, so an extra shading scalar is calculated. + // The darkest areas of the cloud are assigned to be where the noise erodes + // the cloud the most. This is then interpolated based on the translucency + // and the diffuse shading term of that point in the cloud. + float shading = mix(1.0 - 0.8 * W * W, 1.0, Id * TR); + + // To avoid values that are too dark, this scalar is increased by a small amount + // and clamped so it never goes to zero. + shading = clamp(shading + 0.2, 0.3, 1.0); + + // Finally, the contrast of the cloud's color is increased. + vec3 finalColor = mix(vec3(0.5), shading * color, 1.15); + return vec4(finalColor, clamp(TR, 0.0, 1.0)) * v_color; +} + +void main() { +#ifdef DEBUG_BILLBOARDS + out_FragColor = vec4(0.0, 0.5, 0.5, 1.0); +#endif + // To avoid calculations with high values, + // we raycast from an arbitrarily smaller space. + vec2 coordinate = v_maximumSize.xy * v_offset; + + vec3 ellipsoidScale = 0.82 * v_maximumSize; + vec3 ellipsoidCenter = vec3(0.0); + + float zOffset = max(ellipsoidScale.z - 10.0, 0.0); + vec3 eye = vec3(0, 0, -10.0 - zOffset); + vec3 rayDir = normalize(vec3(coordinate, 1.0) - eye); + vec3 rayOrigin = eye; +#ifdef DEBUG_ELLIPSOIDS + vec3 point, normal; + if(intersectEllipsoid(rayOrigin, rayDir, ellipsoidCenter, ellipsoidScale, v_slice, + point, normal)) { + out_FragColor = v_brightness * v_color; + } +#else +#ifndef DEBUG_BILLBOARDS + vec4 cloud = drawCloud(rayOrigin, rayDir, + ellipsoidCenter, ellipsoidScale, v_slice, v_brightness); + if(cloud.w < 0.01) { + discard; + } + out_FragColor = cloud; +#endif +#endif +} +`;var bZi=y(C(),1),uP=`#ifdef INSTANCED +in vec2 direction; +#endif +in vec4 positionHighAndScaleX; +in vec4 positionLowAndScaleY; +in vec4 packedAttribute0; +in vec4 packedAttribute1; +in vec4 color; + +out vec2 v_offset; +out vec3 v_maximumSize; +out vec4 v_color; +out float v_slice; +out float v_brightness; + +void main() { + // Unpack attributes. + vec3 positionHigh = positionHighAndScaleX.xyz; + vec3 positionLow = positionLowAndScaleY.xyz; + vec2 scale = vec2(positionHighAndScaleX.w, positionLowAndScaleY.w); + + float show = packedAttribute0.x; + float brightness = packedAttribute0.y; + vec2 coordinates = packedAttribute0.wz; + vec3 maximumSize = packedAttribute1.xyz; + float slice = packedAttribute1.w; + +#ifdef INSTANCED + vec2 dir = direction; +#else + vec2 dir = coordinates; +#endif + + vec2 offset = dir - vec2(0.5, 0.5); + vec2 scaledOffset = scale * offset; + vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + vec4 positionEC = czm_modelViewRelativeToEye * p; + positionEC.xy += scaledOffset; + + positionEC.xyz *= show; + gl_Position = czm_projection * positionEC; + + v_offset = offset; + v_maximumSize = maximumSize; + v_color = color; + v_slice = slice; + v_brightness = brightness; +} +`;var CZi=y(C(),1),mP=`uniform vec3 u_noiseTextureDimensions; +uniform float u_noiseDetail; +uniform vec3 u_noiseOffset; +in vec2 v_position; + +float wrap(float value, float rangeLength) { + if(value < 0.0) { + float absValue = abs(value); + float modValue = mod(absValue, rangeLength); + return mod(rangeLength - modValue, rangeLength); + } + return mod(value, rangeLength); +} + +vec3 wrapVec(vec3 value, float rangeLength) { + return vec3(wrap(value.x, rangeLength), + wrap(value.y, rangeLength), + wrap(value.z, rangeLength)); +} + +vec3 random3(vec3 p) { + float dot1 = dot(p, vec3(127.1, 311.7, 932.8)); + float dot2 = dot(p, vec3(269.5, 183.3, 421.4)); + return fract(vec3(sin(dot1 - dot2), cos(dot1 * dot2), dot1 * dot2)); +} + +// Frequency corresponds to cell size. +// The higher the frequency, the smaller the cell size. +vec3 getWorleyCellPoint(vec3 centerCell, vec3 offset, float freq) { + float textureSliceWidth = u_noiseTextureDimensions.x; + vec3 cell = centerCell + offset; + cell = wrapVec(cell, textureSliceWidth / u_noiseDetail); + cell += floor(u_noiseOffset / u_noiseDetail); + vec3 p = offset + random3(cell); + return p; +} + +float worleyNoise(vec3 p, float freq) { + vec3 centerCell = floor(p * freq); + vec3 pointInCell = fract(p * freq); + float shortestDistance = 1000.0; + + for(float z = -1.0; z <= 1.0; z++) { + for(float y = -1.0; y <= 1.0; y++) { + for(float x = -1.0; x <= 1.0; x++) { + vec3 offset = vec3(x, y, z); + vec3 point = getWorleyCellPoint(centerCell, offset, freq); + + float distance = length(pointInCell - point); + if(distance < shortestDistance) { + shortestDistance = distance; + } + } + } + } + + return shortestDistance; +} + +const float MAX_FBM_ITERATIONS = 10.0; + +float worleyFBMNoise(vec3 p, float octaves, float scale) { + float noise = 0.0; + float freq = 1.0; + float persistence = 0.625; + for(float i = 0.0; i < MAX_FBM_ITERATIONS; i++) { + if(i >= octaves) { + break; + } + + noise += worleyNoise(p * scale, freq * scale) * persistence; + persistence *= 0.5; + freq *= 2.0; + } + return noise; +} + +void main() { + float textureSliceWidth = u_noiseTextureDimensions.x; + float inverseNoiseTextureRows = u_noiseTextureDimensions.z; + float x = mod(v_position.x, textureSliceWidth); + float y = mod(v_position.y, textureSliceWidth); + float sliceRow = floor(v_position.y / textureSliceWidth); + float z = floor(v_position.x / textureSliceWidth) + sliceRow * inverseNoiseTextureRows * textureSliceWidth; + + vec3 position = vec3(x, y, z); + position /= u_noiseDetail; + float worley0 = clamp(worleyFBMNoise(position, 3.0, 1.0), 0.0, 1.0); + float worley1 = clamp(worleyFBMNoise(position, 3.0, 2.0), 0.0, 1.0); + float worley2 = clamp(worleyFBMNoise(position, 3.0, 3.0), 0.0, 1.0); + out_FragColor = vec4(worley0, worley1, worley2, 1.0); +} +`;var IZi=y(C(),1),hP=`uniform vec3 u_noiseTextureDimensions; +in vec2 position; + +out vec2 v_position; + +void main() +{ + gl_Position = vec4(position, 0.1, 1.0); + + float textureSliceWidth = u_noiseTextureDimensions.x; + float noiseTextureRows = u_noiseTextureDimensions.y; + float inverseNoiseTextureRows = u_noiseTextureDimensions.z; + vec2 transformedPos = (position * 0.5) + vec2(0.5); + transformedPos *= textureSliceWidth; + transformedPos.x *= textureSliceWidth * inverseNoiseTextureRows; + transformedPos.y *= noiseTextureRows; + v_position = transformedPos; +} +`;var EZi=y(C(),1),fP=`uniform sampler2D u_opaqueDepthTexture; +uniform sampler2D u_translucentDepthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + float opaqueDepth = texture(u_opaqueDepthTexture, v_textureCoordinates).r; + float translucentDepth = texture(u_translucentDepthTexture, v_textureCoordinates).r; + translucentDepth = czm_branchFreeTernary(translucentDepth > opaqueDepth, 1.0, translucentDepth); + out_FragColor = czm_packDepth(translucentDepth); +} +`;var SZi=y(C(),1),pP=`/** + * Compositing for Weighted Blended Order-Independent Transparency. See: + * - http://jcgt.org/published/0002/02/09/ + * - http://casual-effects.blogspot.com/2014/03/weighted-blended-order-independent.html + */ + +uniform sampler2D u_opaque; +uniform sampler2D u_accumulation; +uniform sampler2D u_revealage; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 opaque = texture(u_opaque, v_textureCoordinates); + vec4 accum = texture(u_accumulation, v_textureCoordinates); + float r = texture(u_revealage, v_textureCoordinates).r; + +#ifdef MRT + vec4 transparent = vec4(accum.rgb / clamp(r, 1e-4, 5e4), accum.a); +#else + vec4 transparent = vec4(accum.rgb / clamp(accum.a, 1e-4, 5e4), r); +#endif + + out_FragColor = (1.0 - transparent.a) * transparent + transparent.a * opaque; + + if (opaque != czm_backgroundColor) + { + out_FragColor.a = 1.0; + } +} +`;var RZi=y(C(),1),AP=`in vec4 positionEC; + +void main() +{ + vec3 position; + vec3 direction; + if (czm_orthographicIn3D == 1.0) + { + vec2 uv = (gl_FragCoord.xy - czm_viewport.xy) / czm_viewport.zw; + vec2 minPlane = vec2(czm_frustumPlanes.z, czm_frustumPlanes.y); // left, bottom + vec2 maxPlane = vec2(czm_frustumPlanes.w, czm_frustumPlanes.x); // right, top + position = vec3(mix(minPlane, maxPlane, uv), 0.0); + direction = vec3(0.0, 0.0, -1.0); + } + else + { + position = vec3(0.0); + direction = normalize(positionEC.xyz); + } + + czm_ray ray = czm_ray(position, direction); + + vec3 ellipsoid_center = czm_view[3].xyz; + + czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid_center, czm_ellipsoidInverseRadii); + if (!czm_isEmpty(intersection)) + { + out_FragColor = vec4(1.0, 1.0, 0.0, 1.0); + } + else + { + discard; + } + + czm_writeLogDepth(); +} +`;var GZi=y(C(),1),gP=`in vec4 position; + +out vec4 positionEC; + +void main() +{ + positionEC = czm_modelView * position; + gl_Position = czm_projection * positionEC; + + czm_vertexLogDepth(); +} +`;var BZi=y(C(),1),JS=`uniform vec3 u_radii; +uniform vec3 u_oneOverEllipsoidRadiiSquared; + +in vec3 v_positionEC; + +vec4 computeEllipsoidColor(czm_ray ray, float intersection, float side) +{ + vec3 positionEC = czm_pointAlongRay(ray, intersection); + vec3 positionMC = (czm_inverseModelView * vec4(positionEC, 1.0)).xyz; + vec3 geodeticNormal = normalize(czm_geodeticSurfaceNormal(positionMC, vec3(0.0), u_oneOverEllipsoidRadiiSquared)); + vec3 sphericalNormal = normalize(positionMC / u_radii); + vec3 normalMC = geodeticNormal * side; // normalized surface normal (always facing the viewer) in model coordinates + vec3 normalEC = normalize(czm_normal * normalMC); // normalized surface normal in eye coordinates + + vec2 st = czm_ellipsoidTextureCoordinates(sphericalNormal); + vec3 positionToEyeEC = -positionEC; + + czm_materialInput materialInput; + materialInput.s = st.s; + materialInput.st = st; + materialInput.str = (positionMC + u_radii) / u_radii; + materialInput.normalEC = normalEC; + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(positionMC, normalEC); + materialInput.positionToEyeEC = positionToEyeEC; + czm_material material = czm_getMaterial(materialInput); + +#ifdef ONLY_SUN_LIGHTING + return czm_private_phong(normalize(positionToEyeEC), material, czm_sunDirectionEC); +#else + return czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} + +void main() +{ + // PERFORMANCE_TODO: When dynamic branching is available, compute ratio of maximum and minimum radii + // in the vertex shader. Only when it is larger than some constant, march along the ray. + // Otherwise perform one intersection test which will be the common case. + + // Test if the ray intersects a sphere with the ellipsoid's maximum radius. + // For very oblate ellipsoids, using the ellipsoid's radii for an intersection test + // may cause false negatives. This will discard fragments before marching the ray forward. + float maxRadius = max(u_radii.x, max(u_radii.y, u_radii.z)) * 1.5; + vec3 direction = normalize(v_positionEC); + vec3 ellipsoidCenter = czm_modelView[3].xyz; + + float t1 = -1.0; + float t2 = -1.0; + + float b = -2.0 * dot(direction, ellipsoidCenter); + float c = dot(ellipsoidCenter, ellipsoidCenter) - maxRadius * maxRadius; + + float discriminant = b * b - 4.0 * c; + if (discriminant >= 0.0) { + t1 = (-b - sqrt(discriminant)) * 0.5; + t2 = (-b + sqrt(discriminant)) * 0.5; + } + + if (t1 < 0.0 && t2 < 0.0) { + discard; + } + + float t = min(t1, t2); + if (t < 0.0) { + t = 0.0; + } + + // March ray forward to intersection with larger sphere and find + czm_ray ray = czm_ray(t * direction, direction); + + vec3 ellipsoid_inverseRadii = vec3(1.0 / u_radii.x, 1.0 / u_radii.y, 1.0 / u_radii.z); + + czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoidCenter, ellipsoid_inverseRadii); + + if (czm_isEmpty(intersection)) + { + discard; + } + + // If the viewer is outside, compute outsideFaceColor, with normals facing outward. + vec4 outsideFaceColor = (intersection.start != 0.0) ? computeEllipsoidColor(ray, intersection.start, 1.0) : vec4(0.0); + + // If the viewer either is inside or can see inside, compute insideFaceColor, with normals facing inward. + vec4 insideFaceColor = (outsideFaceColor.a < 1.0) ? computeEllipsoidColor(ray, intersection.stop, -1.0) : vec4(0.0); + + out_FragColor = mix(insideFaceColor, outsideFaceColor, outsideFaceColor.a); + out_FragColor.a = 1.0 - (1.0 - insideFaceColor.a) * (1.0 - outsideFaceColor.a); + +#if (defined(WRITE_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth))) + t = (intersection.start != 0.0) ? intersection.start : intersection.stop; + vec3 positionEC = czm_pointAlongRay(ray, t); + vec4 positionCC = czm_projection * vec4(positionEC, 1.0); +#ifdef LOG_DEPTH + czm_writeLogDepth(1.0 + positionCC.w); +#else + float z = positionCC.z / positionCC.w; + + float n = czm_depthRange.near; + float f = czm_depthRange.far; + + gl_FragDepth = (z * (f - n) + f + n) * 0.5; +#endif +#endif +} +`;var XZi=y(C(),1),jS=`in vec3 position; + +uniform vec3 u_radii; + +out vec3 v_positionEC; + +void main() +{ + // In the vertex data, the cube goes from (-1.0, -1.0, -1.0) to (1.0, 1.0, 1.0) in model coordinates. + // Scale to consider the radii. We could also do this once on the CPU when using the BoxGeometry, + // but doing it here allows us to change the radii without rewriting the vertex data, and + // allows all ellipsoids to reuse the same vertex data. + vec4 p = vec4(u_radii * position, 1.0); + + vec4 pEC = czm_modelView * p; + v_positionEC = pEC.xyz; // position in eye coordinates + gl_Position = czm_projection * pEC; + // With multi-frustum, when the ellipsoid primitive is positioned on the intersection of two frustums + // and close to terrain, the terrain (writes depth) in the closest frustum can overwrite part of the + // ellipsoid (does not write depth) that was rendered in the farther frustum. + // + // Here, we clamp the depth in the vertex shader to avoid being overwritten; however, this creates + // artifacts since some fragments can be alpha blended twice. This is solved by only rendering + // the ellipsoid in the closest frustum to the viewer. + gl_Position.z = clamp(gl_Position.z, czm_depthRange.near, czm_depthRange.far); + + czm_vertexLogDepth(); +} +`;var FZi=y(C(),1);/** + * @license + * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of NVIDIA CORPORATION nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */var bP=`/** + * @license + * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of NVIDIA CORPORATION nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS \`\`AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +// NVIDIA GameWorks Graphics Samples GitHub link: https://github.com/NVIDIAGameWorks/GraphicsSamples +// Original source (archived): https://archive.org/details/nvidiagame-works-graphics-samples-master +// Original FXAA 3.11 shader link: https://github.com/NVIDIAGameWorks/GraphicsSamples/blob/master/samples/es3-kepler/FXAA/FXAA3_11.h +// Shader link in fork: https://github.com/lyntel/GraphicsSamples/blob/3d30817ebeeade64fe6a4fc3aa1fe4265c29b6fd/samples/es3-kepler/FXAA/FXAA3_11.h + +// Steps used to integrate into Cesium: +// * The following defines are set: +// #define FXAA_PC 1 +// #define FXAA_WEBGL_1 1 +// #define FXAA_GREEN_AS_LUMA 1 +// #define FXAA_EARLY_EXIT 1 +// #define FXAA_GLSL_120 1 +// * All other preprocessor directives besides the FXAA_QUALITY__P* directives were removed. +// * Double underscores are invalid for preprocessor directives so replace them with a single underscore. Replace +// /FXAA_QUALITY__P(.*)/g with /FXAA_QUALITY__P$1/. +// * There are no implicit conversions from ivec* to vec* so replace: +// #define FxaaInt2 ivec2 +// with +// #define FxaaInt2 vec2 +// * The texture2DLod function is only available in vertex shaders so replace: +// #define FxaaTexTop(t, p) texture2DLod(t, p, 0.0) +// #define FxaaTexOff(t, p, o, r) texture2DLod(t, p + (o * r), 0.0) +// with +// #define FxaaTexTop(t, p) texture(t, p) +// #define FxaaTexOff(t, p, o, r) texture(t, p + (o * r)) +// * FXAA_QUALITY_PRESET is prepended in the javascript code. We may want to expose that setting in the future. +// * The following parameters to FxaaPixelShader are unused and can be removed: +// fxaaConsolePosPos +// fxaaConsoleRcpFrameOpt +// fxaaConsoleRcpFrameOpt2 +// fxaaConsole360RcpFrameOpt2 +// fxaaConsoleEdgeSharpness +// fxaaConsoleEdgeThreshold +// fxaaConsoleEdgeThresholdMi +// fxaaConsole360ConstDir + +// +// Choose the quality preset. +// This needs to be compiled into the shader as it effects code. +// Best option to include multiple presets is to +// in each shader define the preset, then include this file. +// +// OPTIONS +// ----------------------------------------------------------------------- +// 10 to 15 - default medium dither (10=fastest, 15=highest quality) +// 20 to 29 - less dither, more expensive (20=fastest, 29=highest quality) +// 39 - no dither, very expensive +// +// NOTES +// ----------------------------------------------------------------------- +// 12 = slightly faster then FXAA 3.9 and higher edge quality (default) +// 13 = about same speed as FXAA 3.9 and better than 12 +// 23 = closest to FXAA 3.9 visually and performance wise +// _ = the lowest digit is directly related to performance +// _ = the highest digit is directly related to style +// +//#define FXAA_QUALITY_PRESET 12 + + +#if (FXAA_QUALITY_PRESET == 10) + #define FXAA_QUALITY_PS 3 + #define FXAA_QUALITY_P0 1.5 + #define FXAA_QUALITY_P1 3.0 + #define FXAA_QUALITY_P2 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 11) + #define FXAA_QUALITY_PS 4 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 3.0 + #define FXAA_QUALITY_P3 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 12) + #define FXAA_QUALITY_PS 5 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 4.0 + #define FXAA_QUALITY_P4 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 13) + #define FXAA_QUALITY_PS 6 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 4.0 + #define FXAA_QUALITY_P5 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 14) + #define FXAA_QUALITY_PS 7 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 4.0 + #define FXAA_QUALITY_P6 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 15) + #define FXAA_QUALITY_PS 8 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 4.0 + #define FXAA_QUALITY_P7 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 20) + #define FXAA_QUALITY_PS 3 + #define FXAA_QUALITY_P0 1.5 + #define FXAA_QUALITY_P1 2.0 + #define FXAA_QUALITY_P2 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 21) + #define FXAA_QUALITY_PS 4 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 22) + #define FXAA_QUALITY_PS 5 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 23) + #define FXAA_QUALITY_PS 6 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 24) + #define FXAA_QUALITY_PS 7 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 3.0 + #define FXAA_QUALITY_P6 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 25) + #define FXAA_QUALITY_PS 8 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 4.0 + #define FXAA_QUALITY_P7 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 26) + #define FXAA_QUALITY_PS 9 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 4.0 + #define FXAA_QUALITY_P8 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 27) + #define FXAA_QUALITY_PS 10 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 4.0 + #define FXAA_QUALITY_P9 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 28) + #define FXAA_QUALITY_PS 11 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 2.0 + #define FXAA_QUALITY_P9 4.0 + #define FXAA_QUALITY_P10 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 29) + #define FXAA_QUALITY_PS 12 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 2.0 + #define FXAA_QUALITY_P9 2.0 + #define FXAA_QUALITY_P10 4.0 + #define FXAA_QUALITY_P11 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 39) + #define FXAA_QUALITY_PS 12 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.0 + #define FXAA_QUALITY_P2 1.0 + #define FXAA_QUALITY_P3 1.0 + #define FXAA_QUALITY_P4 1.0 + #define FXAA_QUALITY_P5 1.5 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 2.0 + #define FXAA_QUALITY_P9 2.0 + #define FXAA_QUALITY_P10 4.0 + #define FXAA_QUALITY_P11 8.0 +#endif + +#define FxaaBool bool +#define FxaaFloat float +#define FxaaFloat2 vec2 +#define FxaaFloat3 vec3 +#define FxaaFloat4 vec4 +#define FxaaHalf float +#define FxaaHalf2 vec2 +#define FxaaHalf3 vec3 +#define FxaaHalf4 vec4 +#define FxaaInt2 vec2 +#define FxaaTex sampler2D + +#define FxaaSat(x) clamp(x, 0.0, 1.0) +#define FxaaTexTop(t, p) texture(t, p) +#define FxaaTexOff(t, p, o, r) texture(t, p + (o * r)) + +FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; } + +FxaaFloat4 FxaaPixelShader( + // + // Use noperspective interpolation here (turn off perspective interpolation). + // {xy} = center of pixel + FxaaFloat2 pos, + // + // Input color texture. + // {rgb_} = color in linear or perceptual color space + // if (FXAA_GREEN_AS_LUMA == 0) + // {___a} = luma in perceptual color space (not linear) + FxaaTex tex, + // + // Only used on FXAA Quality. + // This must be from a constant/uniform. + // {x_} = 1.0/screenWidthInPixels + // {_y} = 1.0/screenHeightInPixels + FxaaFloat2 fxaaQualityRcpFrame, + // + // Only used on FXAA Quality. + // This used to be the FXAA_QUALITY_SUBPIX define. + // It is here now to allow easier tuning. + // Choose the amount of sub-pixel aliasing removal. + // This can effect sharpness. + // 1.00 - upper limit (softer) + // 0.75 - default amount of filtering + // 0.50 - lower limit (sharper, less sub-pixel aliasing removal) + // 0.25 - almost off + // 0.00 - completely off + FxaaFloat fxaaQualitySubpix, + // + // Only used on FXAA Quality. + // This used to be the FXAA_QUALITY_EDGE_THRESHOLD define. + // It is here now to allow easier tuning. + // The minimum amount of local contrast required to apply algorithm. + // 0.333 - too little (faster) + // 0.250 - low quality + // 0.166 - default + // 0.125 - high quality + // 0.063 - overkill (slower) + FxaaFloat fxaaQualityEdgeThreshold, + // + // Only used on FXAA Quality. + // This used to be the FXAA_QUALITY_EDGE_THRESHOLD_MIN define. + // It is here now to allow easier tuning. + // Trims the algorithm from processing darks. + // 0.0833 - upper limit (default, the start of visible unfiltered edges) + // 0.0625 - high quality (faster) + // 0.0312 - visible limit (slower) + // Special notes when using FXAA_GREEN_AS_LUMA, + // Likely want to set this to zero. + // As colors that are mostly not-green + // will appear very dark in the green channel! + // Tune by looking at mostly non-green content, + // then start at zero and increase until aliasing is a problem. + FxaaFloat fxaaQualityEdgeThresholdMin +) { +/*--------------------------------------------------------------------------*/ + FxaaFloat2 posM; + posM.x = pos.x; + posM.y = pos.y; + FxaaFloat4 rgbyM = FxaaTexTop(tex, posM); + #define lumaM rgbyM.y + FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy)); +/*--------------------------------------------------------------------------*/ + FxaaFloat maxSM = max(lumaS, lumaM); + FxaaFloat minSM = min(lumaS, lumaM); + FxaaFloat maxESM = max(lumaE, maxSM); + FxaaFloat minESM = min(lumaE, minSM); + FxaaFloat maxWN = max(lumaN, lumaW); + FxaaFloat minWN = min(lumaN, lumaW); + FxaaFloat rangeMax = max(maxWN, maxESM); + FxaaFloat rangeMin = min(minWN, minESM); + FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold; + FxaaFloat range = rangeMax - rangeMin; + FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled); + FxaaBool earlyExit = range < rangeMaxClamped; +/*--------------------------------------------------------------------------*/ + if(earlyExit) + return rgbyM; +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy)); +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNS = lumaN + lumaS; + FxaaFloat lumaWE = lumaW + lumaE; + FxaaFloat subpixRcpRange = 1.0/range; + FxaaFloat subpixNSWE = lumaNS + lumaWE; + FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS; + FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE; +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNESE = lumaNE + lumaSE; + FxaaFloat lumaNWNE = lumaNW + lumaNE; + FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE; + FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE; +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNWSW = lumaNW + lumaSW; + FxaaFloat lumaSWSE = lumaSW + lumaSE; + FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2); + FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2); + FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW; + FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE; + FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4; + FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4; +/*--------------------------------------------------------------------------*/ + FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE; + FxaaFloat lengthSign = fxaaQualityRcpFrame.x; + FxaaBool horzSpan = edgeHorz >= edgeVert; + FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE; +/*--------------------------------------------------------------------------*/ + if(!horzSpan) lumaN = lumaW; + if(!horzSpan) lumaS = lumaE; + if(horzSpan) lengthSign = fxaaQualityRcpFrame.y; + FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM; +/*--------------------------------------------------------------------------*/ + FxaaFloat gradientN = lumaN - lumaM; + FxaaFloat gradientS = lumaS - lumaM; + FxaaFloat lumaNN = lumaN + lumaM; + FxaaFloat lumaSS = lumaS + lumaM; + FxaaBool pairN = abs(gradientN) >= abs(gradientS); + FxaaFloat gradient = max(abs(gradientN), abs(gradientS)); + if(pairN) lengthSign = -lengthSign; + FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange); +/*--------------------------------------------------------------------------*/ + FxaaFloat2 posB; + posB.x = posM.x; + posB.y = posM.y; + FxaaFloat2 offNP; + offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x; + offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y; + if(!horzSpan) posB.x += lengthSign * 0.5; + if( horzSpan) posB.y += lengthSign * 0.5; +/*--------------------------------------------------------------------------*/ + FxaaFloat2 posN; + posN.x = posB.x - offNP.x * FXAA_QUALITY_P0; + posN.y = posB.y - offNP.y * FXAA_QUALITY_P0; + FxaaFloat2 posP; + posP.x = posB.x + offNP.x * FXAA_QUALITY_P0; + posP.y = posB.y + offNP.y * FXAA_QUALITY_P0; + FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0; + FxaaFloat lumaEndN = FxaaLuma(FxaaTexTop(tex, posN)); + FxaaFloat subpixE = subpixC * subpixC; + FxaaFloat lumaEndP = FxaaLuma(FxaaTexTop(tex, posP)); +/*--------------------------------------------------------------------------*/ + if(!pairN) lumaNN = lumaSS; + FxaaFloat gradientScaled = gradient * 1.0/4.0; + FxaaFloat lumaMM = lumaM - lumaNN * 0.5; + FxaaFloat subpixF = subpixD * subpixE; + FxaaBool lumaMLTZero = lumaMM < 0.0; +/*--------------------------------------------------------------------------*/ + lumaEndN -= lumaNN * 0.5; + lumaEndP -= lumaNN * 0.5; + FxaaBool doneN = abs(lumaEndN) >= gradientScaled; + FxaaBool doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P1; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P1; + FxaaBool doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P1; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P1; +/*--------------------------------------------------------------------------*/ + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P2; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P2; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P2; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P2; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 3) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P3; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P3; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P3; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P3; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 4) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P4; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P4; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P4; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P4; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 5) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P5; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P5; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P5; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P5; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 6) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P6; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P6; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P6; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P6; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 7) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P7; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P7; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P7; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P7; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 8) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P8; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P8; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P8; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P8; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 9) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P9; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P9; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P9; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P9; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 10) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P10; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P10; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P10; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P10; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 11) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P11; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P11; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P11; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P11; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 12) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P12; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P12; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P12; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P12; +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } +/*--------------------------------------------------------------------------*/ + FxaaFloat dstN = posM.x - posN.x; + FxaaFloat dstP = posP.x - posM.x; + if(!horzSpan) dstN = posM.y - posN.y; + if(!horzSpan) dstP = posP.y - posM.y; +/*--------------------------------------------------------------------------*/ + FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero; + FxaaFloat spanLength = (dstP + dstN); + FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero; + FxaaFloat spanLengthRcp = 1.0/spanLength; +/*--------------------------------------------------------------------------*/ + FxaaBool directionN = dstN < dstP; + FxaaFloat dst = min(dstN, dstP); + FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP; + FxaaFloat subpixG = subpixF * subpixF; + FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5; + FxaaFloat subpixH = subpixG * fxaaQualitySubpix; +/*--------------------------------------------------------------------------*/ + FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0; + FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH); + if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign; + if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign; + return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM); +} +`;var MZi=y(C(),1),yP=`uniform vec4 u_initialColor; + +#if TEXTURE_UNITS > 0 +uniform sampler2D u_dayTextures[TEXTURE_UNITS]; +uniform vec4 u_dayTextureTranslationAndScale[TEXTURE_UNITS]; +uniform bool u_dayTextureUseWebMercatorT[TEXTURE_UNITS]; + +#ifdef APPLY_ALPHA +uniform float u_dayTextureAlpha[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_DAY_NIGHT_ALPHA +uniform float u_dayTextureNightAlpha[TEXTURE_UNITS]; +uniform float u_dayTextureDayAlpha[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_SPLIT +uniform float u_dayTextureSplit[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_BRIGHTNESS +uniform float u_dayTextureBrightness[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_CONTRAST +uniform float u_dayTextureContrast[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_HUE +uniform float u_dayTextureHue[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_SATURATION +uniform float u_dayTextureSaturation[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_GAMMA +uniform float u_dayTextureOneOverGamma[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_IMAGERY_CUTOUT +uniform vec4 u_dayTextureCutoutRectangles[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_COLOR_TO_ALPHA +uniform vec4 u_colorsToAlpha[TEXTURE_UNITS]; +#endif + +uniform vec4 u_dayTextureTexCoordsRectangle[TEXTURE_UNITS]; +#endif + +#if defined(HAS_WATER_MASK) && (defined(SHOW_REFLECTIVE_OCEAN) || defined(APPLY_MATERIAL)) +uniform sampler2D u_waterMask; +uniform vec4 u_waterMaskTranslationAndScale; +uniform float u_zoomedOutOceanSpecularIntensity; +#endif + +#ifdef SHOW_OCEAN_WAVES +uniform sampler2D u_oceanNormalMap; +#endif + +#if defined(ENABLE_DAYNIGHT_SHADING) || defined(GROUND_ATMOSPHERE) +uniform vec2 u_lightingFadeDistance; +#endif + +#ifdef TILE_LIMIT_RECTANGLE +uniform vec4 u_cartographicLimitRectangle; +#endif + +#ifdef GROUND_ATMOSPHERE +uniform vec2 u_nightFadeDistance; +#endif + +#ifdef ENABLE_CLIPPING_PLANES +uniform highp sampler2D u_clippingPlanes; +uniform mat4 u_clippingPlanesMatrix; +uniform vec4 u_clippingPlanesEdgeStyle; +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS +uniform highp sampler2D u_clippingDistance; +in vec2 v_clippingPosition; +flat in int v_regionIndex; +#endif + +#if defined(GROUND_ATMOSPHERE) || defined(FOG) && defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING)) +uniform float u_minimumBrightness; +#endif + +// Based on colorCorrect +// The colorCorrect flag can only be true when tileProvider.hue/saturation/brightnessShift +// are nonzero AND when (applyFog || showGroundAtmosphere) in the tile provider +// - The tileProvider.hue/saturation/brightnessShift are just passed through +// from the Globe hue/saturation/brightness, like atmosphereBrightnessShift +// - The applyFog depends on enableFog, and some tile distance from the viewer +// - The showGroundAtmosphere is a flag that is passed through from the Globe, +// and is true by default when the ellipsoid is WGS84 +#ifdef COLOR_CORRECT +uniform vec3 u_hsbShift; // Hue, saturation, brightness +#endif + +// Based on highlightFillTile +// This is set for terrain tiles when they are "fill" tiles, and +// the terrainProvider.fillHighlightColor was set to a value with +// nonzero alpha +#ifdef HIGHLIGHT_FILL_TILE +uniform vec4 u_fillHighlightColor; +#endif + +// Based on translucent +// This is set depending on the GlobeTranslucencyState +#ifdef TRANSLUCENT +uniform vec4 u_frontFaceAlphaByDistance; +uniform vec4 u_backFaceAlphaByDistance; +uniform vec4 u_translucencyRectangle; +#endif + +// Based on showUndergroundColor +// This is set when GlobeSurfaceTileProvider.isUndergroundVisible +// returns true, AND the tileProvider.undergroundColor had a value with +// nonzero alpha, and the tileProvider.undergroundColorAlphaByDistance +// was in the right range +#ifdef UNDERGROUND_COLOR +uniform vec4 u_undergroundColor; +uniform vec4 u_undergroundColorAlphaByDistance; +#endif + +// Based on enableLighting && hasVertexNormals +// The enableLighting flag is passed in directly from the Globe. +// The hasVertexNormals flag is from the tileProvider +#ifdef ENABLE_VERTEX_LIGHTING +uniform float u_lambertDiffuseMultiplier; +uniform float u_vertexShadowDarkness; +#endif + +in vec3 v_positionMC; +in vec3 v_positionEC; +in vec3 v_textureCoordinates; +in vec3 v_normalMC; +in vec3 v_normalEC; + +#ifdef APPLY_MATERIAL +in float v_height; +in float v_slope; +in float v_aspect; +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) +in float v_distance; +#endif + +#if defined(GROUND_ATMOSPHERE) || defined(FOG) +in vec3 v_atmosphereRayleighColor; +in vec3 v_atmosphereMieColor; +in float v_atmosphereOpacity; +#endif + +#if defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) +float interpolateByDistance(vec4 nearFarScalar, float distance) +{ + float startDistance = nearFarScalar.x; + float startValue = nearFarScalar.y; + float endDistance = nearFarScalar.z; + float endValue = nearFarScalar.w; + float t = clamp((distance - startDistance) / (endDistance - startDistance), 0.0, 1.0); + return mix(startValue, endValue, t); +} +#endif + +#if defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) || defined(APPLY_MATERIAL) +vec4 alphaBlend(vec4 sourceColor, vec4 destinationColor) +{ + return sourceColor * vec4(sourceColor.aaa, 1.0) + destinationColor * (1.0 - sourceColor.a); +} +#endif + +#ifdef TRANSLUCENT +bool inTranslucencyRectangle() +{ + return + v_textureCoordinates.x > u_translucencyRectangle.x && + v_textureCoordinates.x < u_translucencyRectangle.z && + v_textureCoordinates.y > u_translucencyRectangle.y && + v_textureCoordinates.y < u_translucencyRectangle.w; +} +#endif + +vec4 sampleAndBlend( + vec4 previousColor, + sampler2D textureToSample, + vec2 tileTextureCoordinates, + vec4 textureCoordinateRectangle, + vec4 textureCoordinateTranslationAndScale, + float textureAlpha, + float textureNightAlpha, + float textureDayAlpha, + float textureBrightness, + float textureContrast, + float textureHue, + float textureSaturation, + float textureOneOverGamma, + float split, + vec4 colorToAlpha, + float nightBlend) +{ + // This crazy step stuff sets the alpha to 0.0 if this following condition is true: + // tileTextureCoordinates.s < textureCoordinateRectangle.s || + // tileTextureCoordinates.s > textureCoordinateRectangle.p || + // tileTextureCoordinates.t < textureCoordinateRectangle.t || + // tileTextureCoordinates.t > textureCoordinateRectangle.q + // In other words, the alpha is zero if the fragment is outside the rectangle + // covered by this texture. Would an actual 'if' yield better performance? + vec2 alphaMultiplier = step(textureCoordinateRectangle.st, tileTextureCoordinates); + textureAlpha = textureAlpha * alphaMultiplier.x * alphaMultiplier.y; + + alphaMultiplier = step(vec2(0.0), textureCoordinateRectangle.pq - tileTextureCoordinates); + textureAlpha = textureAlpha * alphaMultiplier.x * alphaMultiplier.y; + +#if defined(APPLY_DAY_NIGHT_ALPHA) && defined(ENABLE_DAYNIGHT_SHADING) + textureAlpha *= mix(textureDayAlpha, textureNightAlpha, nightBlend); +#endif + + vec2 translation = textureCoordinateTranslationAndScale.xy; + vec2 scale = textureCoordinateTranslationAndScale.zw; + vec2 textureCoordinates = tileTextureCoordinates * scale + translation; + vec4 value = texture(textureToSample, textureCoordinates); + vec3 color = value.rgb; + float alpha = value.a; + +#ifdef APPLY_COLOR_TO_ALPHA + vec3 colorDiff = abs(color.rgb - colorToAlpha.rgb); + colorDiff.r = czm_maximumComponent(colorDiff); + alpha = czm_branchFreeTernary(colorDiff.r < colorToAlpha.a, 0.0, alpha); +#endif + +#if !defined(APPLY_GAMMA) + vec4 tempColor = czm_gammaCorrect(vec4(color, alpha)); + color = tempColor.rgb; + alpha = tempColor.a; +#else + color = pow(color, vec3(textureOneOverGamma)); +#endif + +#ifdef APPLY_SPLIT + float splitPosition = czm_splitPosition; + // Split to the left + if (split < 0.0 && gl_FragCoord.x > splitPosition) { + alpha = 0.0; + } + // Split to the right + else if (split > 0.0 && gl_FragCoord.x < splitPosition) { + alpha = 0.0; + } +#endif + +#ifdef APPLY_BRIGHTNESS + color = mix(vec3(0.0), color, textureBrightness); +#endif + +#ifdef APPLY_CONTRAST + color = mix(vec3(0.5), color, textureContrast); +#endif + +#ifdef APPLY_HUE + color = czm_hue(color, textureHue); +#endif + +#ifdef APPLY_SATURATION + color = czm_saturation(color, textureSaturation); +#endif + + float sourceAlpha = alpha * textureAlpha; + float outAlpha = mix(previousColor.a, 1.0, sourceAlpha); + outAlpha += sign(outAlpha) - 1.0; + + vec3 outColor = mix(previousColor.rgb * previousColor.a, color, sourceAlpha) / outAlpha; + + // When rendering imagery for a tile in multiple passes, + // some GPU/WebGL implementation combinations will not blend fragments in + // additional passes correctly if their computation includes an unmasked + // divide-by-zero operation, + // even if it's not in the output or if the output has alpha zero. + // + // For example, without sanitization for outAlpha, + // this renders without artifacts: + // if (outAlpha == 0.0) { outColor = vec3(0.0); } + // + // but using czm_branchFreeTernary will cause portions of the tile that are + // alpha-zero in the additional pass to render as black instead of blending + // with the previous pass: + // outColor = czm_branchFreeTernary(outAlpha == 0.0, vec3(0.0), outColor); + // + // So instead, sanitize against divide-by-zero, + // store this state on the sign of outAlpha, and correct on return. + + return vec4(outColor, max(outAlpha, 0.0)); +} + +vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend); +vec4 computeWaterColor(vec3 positionEyeCoordinates, vec2 textureCoordinates, mat3 enuToEye, vec4 imageryColor, float specularMapValue, float fade); + +const float fExposure = 2.0; + +vec3 computeEllipsoidPosition() +{ + float mpp = czm_metersPerPixel(vec4(0.0, 0.0, -czm_currentFrustum.x, 1.0), 1.0); + vec2 xy = gl_FragCoord.xy / czm_viewport.zw * 2.0 - vec2(1.0); + xy *= czm_viewport.zw * mpp * 0.5; + + vec3 direction; + if (czm_orthographicIn3D == 1.0) + { + direction = vec3(0.0, 0.0, -1.0); + } + else + { + direction = normalize(vec3(xy, -czm_currentFrustum.x)); + } + + czm_ray ray = czm_ray(vec3(0.0), direction); + + vec3 ellipsoid_center = czm_view[3].xyz; + + czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid_center, czm_ellipsoidInverseRadii); + + vec3 ellipsoidPosition = czm_pointAlongRay(ray, intersection.start); + return (czm_inverseView * vec4(ellipsoidPosition, 1.0)).xyz; +} + +void main() +{ +#ifdef TILE_LIMIT_RECTANGLE + if (v_textureCoordinates.x < u_cartographicLimitRectangle.x || u_cartographicLimitRectangle.z < v_textureCoordinates.x || + v_textureCoordinates.y < u_cartographicLimitRectangle.y || u_cartographicLimitRectangle.w < v_textureCoordinates.y) + { + discard; + } +#endif + +#ifdef ENABLE_CLIPPING_PLANES + float clipDistance = clip(gl_FragCoord, u_clippingPlanes, u_clippingPlanesMatrix); +#endif + +#if defined(SHOW_REFLECTIVE_OCEAN) || defined(ENABLE_DAYNIGHT_SHADING) || defined(HDR) + vec3 normalMC = czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0)); // normalized surface normal in model coordinates + vec3 normalEC = czm_normal3D * normalMC; // normalized surface normal in eye coordinates +#endif + +#if defined(APPLY_DAY_NIGHT_ALPHA) && defined(ENABLE_DAYNIGHT_SHADING) + float nightBlend = 1.0 - clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * 5.0, 0.0, 1.0); +#else + float nightBlend = 0.0; +#endif + + // The clamp below works around an apparent bug in Chrome Canary v23.0.1241.0 + // where the fragment shader sees textures coordinates < 0.0 and > 1.0 for the + // fragments on the edges of tiles even though the vertex shader is outputting + // coordinates strictly in the 0-1 range. + vec4 color = computeDayColor(u_initialColor, clamp(v_textureCoordinates, 0.0, 1.0), nightBlend); + +#ifdef SHOW_TILE_BOUNDARIES + if (v_textureCoordinates.x < (1.0/256.0) || v_textureCoordinates.x > (255.0/256.0) || + v_textureCoordinates.y < (1.0/256.0) || v_textureCoordinates.y > (255.0/256.0)) + { + color = vec4(1.0, 0.0, 0.0, 1.0); + } +#endif + +#if defined(ENABLE_DAYNIGHT_SHADING) || defined(GROUND_ATMOSPHERE) + float cameraDist; + if (czm_sceneMode == czm_sceneMode2D) + { + cameraDist = max(czm_frustumPlanes.x - czm_frustumPlanes.y, czm_frustumPlanes.w - czm_frustumPlanes.z) * 0.5; + } + else if (czm_sceneMode == czm_sceneModeColumbusView) + { + cameraDist = -czm_view[3].z; + } + else + { + cameraDist = length(czm_view[3]); + } + float fadeOutDist = u_lightingFadeDistance.x; + float fadeInDist = u_lightingFadeDistance.y; + if (czm_sceneMode != czm_sceneMode3D) { + vec3 radii = czm_ellipsoidRadii; + float maxRadii = max(radii.x, max(radii.y, radii.z)); + fadeOutDist -= maxRadii; + fadeInDist -= maxRadii; + } + float fade = clamp((cameraDist - fadeOutDist) / (fadeInDist - fadeOutDist), 0.0, 1.0); +#else + float fade = 0.0; +#endif + +#if defined(HAS_WATER_MASK) && (defined(SHOW_REFLECTIVE_OCEAN) || defined(APPLY_MATERIAL)) + vec2 waterMaskTranslation = u_waterMaskTranslationAndScale.xy; + vec2 waterMaskScale = u_waterMaskTranslationAndScale.zw; + vec2 waterMaskTextureCoordinates = v_textureCoordinates.xy * waterMaskScale + waterMaskTranslation; + waterMaskTextureCoordinates.y = 1.0 - waterMaskTextureCoordinates.y; + + float mask = texture(u_waterMask, waterMaskTextureCoordinates).r; + + #ifdef SHOW_REFLECTIVE_OCEAN + if (mask > 0.0) + { + mat3 enuToEye = czm_eastNorthUpToEyeCoordinates(v_positionMC, normalEC); + + vec2 ellipsoidTextureCoordinates = czm_ellipsoidTextureCoordinates(normalMC); + vec2 ellipsoidFlippedTextureCoordinates = czm_ellipsoidTextureCoordinates(normalMC.zyx); + + vec2 textureCoordinates = mix(ellipsoidTextureCoordinates, ellipsoidFlippedTextureCoordinates, czm_morphTime * smoothstep(0.9, 0.95, normalMC.z)); + + color = computeWaterColor(v_positionEC, textureCoordinates, enuToEye, color, mask, fade); + } + #endif +#endif + +#ifdef APPLY_MATERIAL + czm_materialInput materialInput; + materialInput.st = v_textureCoordinates.st; + materialInput.normalEC = normalize(v_normalEC); + materialInput.positionToEyeEC = -v_positionEC; + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, normalize(v_normalEC)); + materialInput.slope = v_slope; + materialInput.height = v_height; + materialInput.aspect = v_aspect; + #ifdef HAS_WATER_MASK + materialInput.waterMask = mask; + #endif + + czm_material material = czm_getMaterial(materialInput); + vec4 materialColor = vec4(material.diffuse, material.alpha); + color = alphaBlend(materialColor, color); +#endif + +#ifdef ENABLE_VERTEX_LIGHTING + float diffuseIntensity = clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalize(v_normalEC)) * u_lambertDiffuseMultiplier + u_vertexShadowDarkness, 0.0, 1.0); + vec4 finalColor = vec4(color.rgb * czm_lightColor * diffuseIntensity, color.a); +#elif defined(ENABLE_DAYNIGHT_SHADING) + float diffuseIntensity = clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * 5.0 + 0.3, 0.0, 1.0); + diffuseIntensity = mix(1.0, diffuseIntensity, fade); + vec4 finalColor = vec4(color.rgb * czm_lightColor * diffuseIntensity, color.a); +#else + vec4 finalColor = color; +#endif + +#ifdef ENABLE_CLIPPING_PLANES + vec4 clippingPlanesEdgeColor = vec4(1.0); + clippingPlanesEdgeColor.rgb = u_clippingPlanesEdgeStyle.rgb; + float clippingPlanesEdgeWidth = u_clippingPlanesEdgeStyle.a; + + if (clipDistance < clippingPlanesEdgeWidth) + { + finalColor = clippingPlanesEdgeColor; + } +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS + vec2 clippingPosition = v_clippingPosition; + int regionIndex = v_regionIndex; + clipPolygons(u_clippingDistance, CLIPPING_POLYGON_REGIONS_LENGTH, clippingPosition, regionIndex); +#endif + +#ifdef HIGHLIGHT_FILL_TILE + finalColor = vec4(mix(finalColor.rgb, u_fillHighlightColor.rgb, u_fillHighlightColor.a), finalColor.a); +#endif + +#if defined(DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN) + vec3 atmosphereLightDirection = czm_sunDirectionWC; +#else + vec3 atmosphereLightDirection = czm_lightDirectionWC; +#endif + +#if defined(GROUND_ATMOSPHERE) || defined(FOG) + if (!czm_backFacing()) + { + bool dynamicLighting = false; + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_DAYNIGHT_SHADING) || defined(ENABLE_VERTEX_LIGHTING)) + dynamicLighting = true; + #endif + + vec3 rayleighColor; + vec3 mieColor; + float opacity; + + vec3 positionWC; + vec3 lightDirection; + + // When the camera is far away (camera distance > nightFadeOutDistance), the scattering is computed in the fragment shader. + // Otherwise, the scattering is computed in the vertex shader. + #ifdef PER_FRAGMENT_GROUND_ATMOSPHERE + positionWC = computeEllipsoidPosition(); + lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(positionWC)); + computeAtmosphereScattering( + positionWC, + lightDirection, + rayleighColor, + mieColor, + opacity + ); + #else + positionWC = v_positionMC; + lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(positionWC)); + rayleighColor = v_atmosphereRayleighColor; + mieColor = v_atmosphereMieColor; + opacity = v_atmosphereOpacity; + #endif + + #ifdef COLOR_CORRECT + const bool ignoreBlackPixels = true; + rayleighColor = czm_applyHSBShift(rayleighColor, u_hsbShift, ignoreBlackPixels); + mieColor = czm_applyHSBShift(mieColor, u_hsbShift, ignoreBlackPixels); + #endif + + vec4 groundAtmosphereColor = computeAtmosphereColor(positionWC, lightDirection, rayleighColor, mieColor, opacity); + + // Fog is applied to tiles selected for fog, close to the Earth. + #ifdef FOG + vec3 fogColor = groundAtmosphereColor.rgb; + + // If there is lighting, apply that to the fog. + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING)) + float darken = clamp(dot(normalize(czm_viewerPositionWC), atmosphereLightDirection), u_minimumBrightness, 1.0); + fogColor *= darken; + #endif + + #ifndef HDR + fogColor.rgb = czm_pbrNeutralTonemapping(fogColor.rgb); + fogColor.rgb = czm_inverseGamma(fogColor.rgb); + #endif + + finalColor = vec4(czm_fog(v_distance, finalColor.rgb, fogColor.rgb, czm_fogVisualDensityScalar), finalColor.a); + + #else + // Apply ground atmosphere. This happens when the camera is far away from the earth. + + // The transmittance is based on optical depth i.e. the length of segment of the ray inside the atmosphere. + // This value is larger near the "circumference", as it is further away from the camera. We use it to + // brighten up that area of the ground atmosphere. + const float transmittanceModifier = 0.5; + float transmittance = transmittanceModifier + clamp(1.0 - groundAtmosphereColor.a, 0.0, 1.0); + + vec3 finalAtmosphereColor = finalColor.rgb + groundAtmosphereColor.rgb * transmittance; + + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING)) + float fadeInDist = u_nightFadeDistance.x; + float fadeOutDist = u_nightFadeDistance.y; + + float sunlitAtmosphereIntensity = clamp((cameraDist - fadeOutDist) / (fadeInDist - fadeOutDist), 0.05, 1.0); + float darken = clamp(dot(normalize(positionWC), atmosphereLightDirection), 0.0, 1.0); + vec3 darkenendGroundAtmosphereColor = mix(groundAtmosphereColor.rgb, finalAtmosphereColor.rgb, darken); + + finalAtmosphereColor = mix(darkenendGroundAtmosphereColor, finalAtmosphereColor, sunlitAtmosphereIntensity); + #endif + + #ifndef HDR + finalAtmosphereColor.rgb = vec3(1.0) - exp(-fExposure * finalAtmosphereColor.rgb); + #else + finalAtmosphereColor.rgb = czm_saturation(finalAtmosphereColor.rgb, 1.6); + #endif + + finalColor.rgb = mix(finalColor.rgb, finalAtmosphereColor.rgb, fade); + #endif + } +#endif + +#ifdef UNDERGROUND_COLOR + if (czm_backFacing()) + { + float distanceFromEllipsoid = max(czm_eyeHeight, 0.0); + float distance = max(v_distance - distanceFromEllipsoid, 0.0); + float blendAmount = interpolateByDistance(u_undergroundColorAlphaByDistance, distance); + vec4 undergroundColor = vec4(u_undergroundColor.rgb, u_undergroundColor.a * blendAmount); + finalColor = alphaBlend(undergroundColor, finalColor); + } +#endif + +#ifdef TRANSLUCENT + if (inTranslucencyRectangle()) + { + vec4 alphaByDistance = gl_FrontFacing ? u_frontFaceAlphaByDistance : u_backFaceAlphaByDistance; + finalColor.a *= interpolateByDistance(alphaByDistance, v_distance); + } +#endif + + out_FragColor = finalColor; +} + + +#ifdef SHOW_REFLECTIVE_OCEAN + +float waveFade(float edge0, float edge1, float x) +{ + float y = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); + return pow(1.0 - y, 5.0); +} + +float linearFade(float edge0, float edge1, float x) +{ + return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); +} + +// Based on water rendering by Jonas Wagner: +// http://29a.ch/2012/7/19/webgl-terrain-rendering-water-fog + +// low altitude wave settings +const float oceanFrequencyLowAltitude = 825000.0; +const float oceanAnimationSpeedLowAltitude = 0.004; +const float oceanOneOverAmplitudeLowAltitude = 1.0 / 2.0; +const float oceanSpecularIntensity = 0.5; + +// high altitude wave settings +const float oceanFrequencyHighAltitude = 125000.0; +const float oceanAnimationSpeedHighAltitude = 0.008; +const float oceanOneOverAmplitudeHighAltitude = 1.0 / 2.0; + +vec4 computeWaterColor(vec3 positionEyeCoordinates, vec2 textureCoordinates, mat3 enuToEye, vec4 imageryColor, float maskValue, float fade) +{ + vec3 positionToEyeEC = -positionEyeCoordinates; + float positionToEyeECLength = length(positionToEyeEC); + + // The double normalize below works around a bug in Firefox on Android devices. + vec3 normalizedPositionToEyeEC = normalize(normalize(positionToEyeEC)); + + // Fade out the waves as the camera moves far from the surface. + float waveIntensity = waveFade(70000.0, 1000000.0, positionToEyeECLength); + +#ifdef SHOW_OCEAN_WAVES + // high altitude waves + float time = czm_frameNumber * oceanAnimationSpeedHighAltitude; + vec4 noise = czm_getWaterNoise(u_oceanNormalMap, textureCoordinates * oceanFrequencyHighAltitude, time, 0.0); + vec3 normalTangentSpaceHighAltitude = vec3(noise.xy, noise.z * oceanOneOverAmplitudeHighAltitude); + + // low altitude waves + time = czm_frameNumber * oceanAnimationSpeedLowAltitude; + noise = czm_getWaterNoise(u_oceanNormalMap, textureCoordinates * oceanFrequencyLowAltitude, time, 0.0); + vec3 normalTangentSpaceLowAltitude = vec3(noise.xy, noise.z * oceanOneOverAmplitudeLowAltitude); + + // blend the 2 wave layers based on distance to surface + float highAltitudeFade = linearFade(0.0, 60000.0, positionToEyeECLength); + float lowAltitudeFade = 1.0 - linearFade(20000.0, 60000.0, positionToEyeECLength); + vec3 normalTangentSpace = + (highAltitudeFade * normalTangentSpaceHighAltitude) + + (lowAltitudeFade * normalTangentSpaceLowAltitude); + normalTangentSpace = normalize(normalTangentSpace); + + // fade out the normal perturbation as we move farther from the water surface + normalTangentSpace.xy *= waveIntensity; + normalTangentSpace = normalize(normalTangentSpace); +#else + vec3 normalTangentSpace = vec3(0.0, 0.0, 1.0); +#endif + + vec3 normalEC = enuToEye * normalTangentSpace; + + const vec3 waveHighlightColor = vec3(0.3, 0.45, 0.6); + + // Use diffuse light to highlight the waves + float diffuseIntensity = czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * maskValue; + vec3 diffuseHighlight = waveHighlightColor * diffuseIntensity * (1.0 - fade); + +#ifdef SHOW_OCEAN_WAVES + // Where diffuse light is low or non-existent, use wave highlights based solely on + // the wave bumpiness and no particular light direction. + float tsPerturbationRatio = normalTangentSpace.z; + vec3 nonDiffuseHighlight = mix(waveHighlightColor * 5.0 * (1.0 - tsPerturbationRatio), vec3(0.0), diffuseIntensity); +#else + vec3 nonDiffuseHighlight = vec3(0.0); +#endif + + // Add specular highlights in 3D, and in all modes when zoomed in. + float specularIntensity = czm_getSpecular(czm_lightDirectionEC, normalizedPositionToEyeEC, normalEC, 10.0); + float surfaceReflectance = mix(0.0, mix(u_zoomedOutOceanSpecularIntensity, oceanSpecularIntensity, waveIntensity), maskValue); + float specular = specularIntensity * surfaceReflectance; + +#ifdef HDR + specular *= 1.4; + + float e = 0.2; + float d = 3.3; + float c = 1.7; + + vec3 color = imageryColor.rgb + (c * (vec3(e) + imageryColor.rgb * d) * (diffuseHighlight + nonDiffuseHighlight + specular)); +#else + vec3 color = imageryColor.rgb + diffuseHighlight + nonDiffuseHighlight + specular; +#endif + + return vec4(color, imageryColor.a); +} + +#endif // #ifdef SHOW_REFLECTIVE_OCEAN +`;var NZi=y(C(),1),CP=`#ifdef QUANTIZATION_BITS12 +in vec4 compressed0; +in float compressed1; +#else +in vec4 position3DAndHeight; +in vec4 textureCoordAndEncodedNormals; +#endif + +#ifdef GEODETIC_SURFACE_NORMALS +in vec3 geodeticSurfaceNormal; +#endif + +#ifdef EXAGGERATION +uniform vec2 u_verticalExaggerationAndRelativeHeight; +#endif + +uniform vec3 u_center3D; +uniform mat4 u_modifiedModelView; +uniform mat4 u_modifiedModelViewProjection; +uniform vec4 u_tileRectangle; + +// Uniforms for 2D Mercator projection +uniform vec2 u_southAndNorthLatitude; +uniform vec2 u_southMercatorYAndOneOverHeight; + +out vec3 v_positionMC; +out vec3 v_positionEC; + +out vec3 v_textureCoordinates; +out vec3 v_normalMC; +out vec3 v_normalEC; + +#ifdef APPLY_MATERIAL +out float v_slope; +out float v_aspect; +out float v_height; +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) +out float v_distance; +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) +out vec3 v_atmosphereRayleighColor; +out vec3 v_atmosphereMieColor; +out float v_atmosphereOpacity; +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS +uniform highp sampler2D u_clippingExtents; +out vec2 v_clippingPosition; +flat out int v_regionIndex; +#endif + +// These functions are generated at runtime. +vec4 getPosition(vec3 position, float height, vec2 textureCoordinates); +float get2DYPositionFraction(vec2 textureCoordinates); + +vec4 getPosition3DMode(vec3 position, float height, vec2 textureCoordinates) +{ + return u_modifiedModelViewProjection * vec4(position, 1.0); +} + +float get2DMercatorYPositionFraction(vec2 textureCoordinates) +{ + // The width of a tile at level 11, in radians and assuming a single root tile, is + // 2.0 * czm_pi / pow(2.0, 11.0) + // We want to just linearly interpolate the 2D position from the texture coordinates + // when we're at this level or higher. The constant below is the expression + // above evaluated and then rounded up at the 4th significant digit. + const float maxTileWidth = 0.003068; + float positionFraction = textureCoordinates.y; + float southLatitude = u_southAndNorthLatitude.x; + float northLatitude = u_southAndNorthLatitude.y; + if (northLatitude - southLatitude > maxTileWidth) + { + float southMercatorY = u_southMercatorYAndOneOverHeight.x; + float oneOverMercatorHeight = u_southMercatorYAndOneOverHeight.y; + + float currentLatitude = mix(southLatitude, northLatitude, textureCoordinates.y); + currentLatitude = clamp(currentLatitude, -czm_webMercatorMaxLatitude, czm_webMercatorMaxLatitude); + positionFraction = czm_latitudeToWebMercatorFraction(currentLatitude, southMercatorY, oneOverMercatorHeight); + } + return positionFraction; +} + +float get2DGeographicYPositionFraction(vec2 textureCoordinates) +{ + return textureCoordinates.y; +} + +vec4 getPositionPlanarEarth(vec3 position, float height, vec2 textureCoordinates) +{ + float yPositionFraction = get2DYPositionFraction(textureCoordinates); + vec4 rtcPosition2D = vec4(height, mix(u_tileRectangle.st, u_tileRectangle.pq, vec2(textureCoordinates.x, yPositionFraction)), 1.0); + return u_modifiedModelViewProjection * rtcPosition2D; +} + +vec4 getPosition2DMode(vec3 position, float height, vec2 textureCoordinates) +{ + return getPositionPlanarEarth(position, 0.0, textureCoordinates); +} + +vec4 getPositionColumbusViewMode(vec3 position, float height, vec2 textureCoordinates) +{ + return getPositionPlanarEarth(position, height, textureCoordinates); +} + +vec4 getPositionMorphingMode(vec3 position, float height, vec2 textureCoordinates) +{ + // We do not do RTC while morphing, so there is potential for jitter. + // This is unlikely to be noticeable, though. + vec3 position3DWC = position + u_center3D; + float yPositionFraction = get2DYPositionFraction(textureCoordinates); + vec4 position2DWC = vec4(height, mix(u_tileRectangle.st, u_tileRectangle.pq, vec2(textureCoordinates.x, yPositionFraction)), 1.0); + vec4 morphPosition = czm_columbusViewMorph(position2DWC, vec4(position3DWC, 1.0), czm_morphTime); + vec4 morphPositionEC = czm_modelView * morphPosition; + return czm_projection * morphPositionEC; +} + +#ifdef QUANTIZATION_BITS12 +uniform vec2 u_minMaxHeight; +uniform mat4 u_scaleAndBias; +#endif + +void main() +{ +#ifdef QUANTIZATION_BITS12 + vec2 xy = czm_decompressTextureCoordinates(compressed0.x); + vec2 zh = czm_decompressTextureCoordinates(compressed0.y); + vec3 position = vec3(xy, zh.x); + float height = zh.y; + vec2 textureCoordinates = czm_decompressTextureCoordinates(compressed0.z); + + height = height * (u_minMaxHeight.y - u_minMaxHeight.x) + u_minMaxHeight.x; + position = (u_scaleAndBias * vec4(position, 1.0)).xyz; + +#if (defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL)) && defined(INCLUDE_WEB_MERCATOR_Y) || defined(APPLY_MATERIAL) + float webMercatorT = czm_decompressTextureCoordinates(compressed0.w).x; + float encodedNormal = compressed1; +#elif defined(INCLUDE_WEB_MERCATOR_Y) + float webMercatorT = czm_decompressTextureCoordinates(compressed0.w).x; + float encodedNormal = 0.0; +#elif defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) + float webMercatorT = textureCoordinates.y; + float encodedNormal = compressed0.w; +#else + float webMercatorT = textureCoordinates.y; + float encodedNormal = 0.0; +#endif + +#else + // A single float per element + vec3 position = position3DAndHeight.xyz; + float height = position3DAndHeight.w; + vec2 textureCoordinates = textureCoordAndEncodedNormals.xy; + +#if (defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL)) && defined(INCLUDE_WEB_MERCATOR_Y) + float webMercatorT = textureCoordAndEncodedNormals.z; + float encodedNormal = textureCoordAndEncodedNormals.w; +#elif defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL) + float webMercatorT = textureCoordinates.y; + float encodedNormal = textureCoordAndEncodedNormals.z; +#elif defined(INCLUDE_WEB_MERCATOR_Y) + float webMercatorT = textureCoordAndEncodedNormals.z; + float encodedNormal = 0.0; +#else + float webMercatorT = textureCoordinates.y; + float encodedNormal = 0.0; +#endif + +#endif + + vec3 position3DWC = position + u_center3D; + +#ifdef GEODETIC_SURFACE_NORMALS + vec3 ellipsoidNormal = geodeticSurfaceNormal; +#else + vec3 ellipsoidNormal = normalize(position3DWC); +#endif + +#if defined(EXAGGERATION) && defined(GEODETIC_SURFACE_NORMALS) + float exaggeration = u_verticalExaggerationAndRelativeHeight.x; + float relativeHeight = u_verticalExaggerationAndRelativeHeight.y; + float newHeight = (height - relativeHeight) * exaggeration + relativeHeight; + + // stop from going through center of earth + float minRadius = min(min(czm_ellipsoidRadii.x, czm_ellipsoidRadii.y), czm_ellipsoidRadii.z); + newHeight = max(newHeight, -minRadius); + + vec3 offset = ellipsoidNormal * (newHeight - height); + position += offset; + position3DWC += offset; + height = newHeight; +#endif + + gl_Position = getPosition(position, height, textureCoordinates); + + v_positionEC = (u_modifiedModelView * vec4(position, 1.0)).xyz; + v_positionMC = position3DWC; // position in model coordinates + + v_textureCoordinates = vec3(textureCoordinates, webMercatorT); + +#if defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL) + vec3 normalMC = czm_octDecode(encodedNormal); + +#if defined(EXAGGERATION) && defined(GEODETIC_SURFACE_NORMALS) + vec3 projection = dot(normalMC, ellipsoidNormal) * ellipsoidNormal; + vec3 rejection = normalMC - projection; + normalMC = normalize(projection + rejection * exaggeration); +#endif + + v_normalMC = normalMC; + v_normalEC = czm_normal3D * v_normalMC; +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS + vec2 sphericalLatLong = czm_approximateSphericalCoordinates(position3DWC); + sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi); + + vec2 minDistance = vec2(czm_infinity); + v_clippingPosition = vec2(czm_infinity); + v_regionIndex = -1; + + for (int regionIndex = 0; regionIndex < CLIPPING_POLYGON_REGIONS_LENGTH; regionIndex++) { + vec4 extents = unpackClippingExtents(u_clippingExtents, regionIndex); + vec2 rectUv = (sphericalLatLong.yx - extents.yx) * extents.wz; + + vec2 clamped = clamp(rectUv, vec2(0.0), vec2(1.0)); + vec2 distance = abs(rectUv - clamped) * extents.wz; + + float threshold = 0.01; + if (minDistance.x > distance.x || minDistance.y > distance.y) { + minDistance = distance; + v_clippingPosition = rectUv; + if (rectUv.x > threshold && rectUv.y > threshold && rectUv.x < 1.0 - threshold && rectUv.y < 1.0 - threshold) { + v_regionIndex = regionIndex; + } + } + } +#endif + +#if defined(FOG) || (defined(GROUND_ATMOSPHERE) && !defined(PER_FRAGMENT_GROUND_ATMOSPHERE)) + + bool dynamicLighting = false; + + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_DAYNIGHT_SHADING) || defined(ENABLE_VERTEX_LIGHTING)) + dynamicLighting = true; + #endif + +#if defined(DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN) + vec3 atmosphereLightDirection = czm_sunDirectionWC; +#else + vec3 atmosphereLightDirection = czm_lightDirectionWC; +#endif + + vec3 lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(position3DWC)); + + computeAtmosphereScattering( + position3DWC, + lightDirection, + v_atmosphereRayleighColor, + v_atmosphereMieColor, + v_atmosphereOpacity + ); +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) + v_distance = length((czm_modelView3D * vec4(position3DWC, 1.0)).xyz); +#endif + +#ifdef APPLY_MATERIAL + float northPoleZ = czm_ellipsoidRadii.z; + vec3 northPolePositionMC = vec3(0.0, 0.0, northPoleZ); + vec3 vectorEastMC = normalize(cross(northPolePositionMC - v_positionMC, ellipsoidNormal)); + float dotProd = abs(dot(ellipsoidNormal, v_normalMC)); + v_slope = acos(dotProd); + vec3 normalRejected = ellipsoidNormal * dotProd; + vec3 normalProjected = v_normalMC - normalRejected; + vec3 aspectVector = normalize(normalProjected); + v_aspect = acos(dot(aspectVector, vectorEastMC)); + float determ = dot(cross(vectorEastMC, aspectVector), ellipsoidNormal); + v_aspect = czm_branchFreeTernary(determ < 0.0, 2.0 * czm_pi - v_aspect, v_aspect); + v_height = height; +#endif +} +`;var QZi=y(C(),1),qS=`void computeAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity) { + + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection); + + float atmosphereInnerRadius = length(positionWC); + + computeScattering( + primaryRay, + length(cameraToPositionWC), + lightDirection, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); +} +`;var kZi=y(C(),1),$S=`float interpolateByDistance(vec4 nearFarScalar, float distance) +{ + float startDistance = nearFarScalar.x; + float startValue = nearFarScalar.y; + float endDistance = nearFarScalar.z; + float endValue = nearFarScalar.w; + float t = clamp((distance - startDistance) / (endDistance - startDistance), 0.0, 1.0); + return mix(startValue, endValue, t); +} + +void computeAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity, out float underTranslucentGlobe) +{ + float ellipsoidRadiiDifference = czm_ellipsoidRadii.x - czm_ellipsoidRadii.z; + + // Adjustment to the atmosphere radius applied based on the camera height. + float distanceAdjustMin = czm_ellipsoidRadii.x / 4.0; + float distanceAdjustMax = czm_ellipsoidRadii.x; + float distanceAdjustModifier = ellipsoidRadiiDifference / 2.0; + float distanceAdjust = distanceAdjustModifier * clamp((czm_eyeHeight - distanceAdjustMin) / (distanceAdjustMax - distanceAdjustMin), 0.0, 1.0); + + // Since atmosphere scattering assumes the atmosphere is a spherical shell, we compute an inner radius of the atmosphere best fit + // for the position on the ellipsoid. + float radiusAdjust = (ellipsoidRadiiDifference / 4.0) + distanceAdjust; + float atmosphereInnerRadius = (length(czm_viewerPositionWC) - czm_eyeHeight) - radiusAdjust; + + // Setup the primary ray: from the camera position to the vertex position. + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection); + + underTranslucentGlobe = 0.0; + + // Brighten the sky atmosphere under the Earth's atmosphere when translucency is enabled. + #if defined(GLOBE_TRANSLUCENT) + + // Check for intersection with the inner radius of the atmopshere. + czm_raySegment primaryRayEarthIntersect = czm_raySphereIntersectionInterval(primaryRay, vec3(0.0), atmosphereInnerRadius + radiusAdjust); + if (primaryRayEarthIntersect.start > 0.0 && primaryRayEarthIntersect.stop > 0.0) { + + // Compute position on globe. + vec3 direction = normalize(positionWC); + czm_ray ellipsoidRay = czm_ray(positionWC, -direction); + czm_raySegment ellipsoidIntersection = czm_rayEllipsoidIntersectionInterval(ellipsoidRay, vec3(0.0), czm_ellipsoidInverseRadii); + vec3 onEarth = positionWC - (direction * ellipsoidIntersection.start); + + // Control the color using the camera angle. + float angle = dot(normalize(czm_viewerPositionWC), normalize(onEarth)); + + // Control the opacity using the distance from Earth. + opacity = interpolateByDistance(vec4(0.0, 1.0, czm_ellipsoidRadii.x, 0.0), length(czm_viewerPositionWC - onEarth)); + vec3 horizonColor = vec3(0.1, 0.2, 0.3); + vec3 nearColor = vec3(0.0); + + rayleighColor = mix(nearColor, horizonColor, exp(-angle) * opacity); + + // Set the traslucent flag to avoid alpha adjustment in computeFinalColor funciton. + underTranslucentGlobe = 1.0; + return; + } + #endif + + computeScattering( + primaryRay, + length(cameraToPositionWC), + lightDirection, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); + + // Alter the opacity based on how close the viewer is to the ground. + // (0.0 = At edge of atmosphere, 1.0 = On ground) + float cameraHeight = czm_eyeHeight + atmosphereInnerRadius; + float atmosphereOuterRadius = atmosphereInnerRadius + ATMOSPHERE_THICKNESS; + opacity = clamp((atmosphereOuterRadius - cameraHeight) / (atmosphereOuterRadius - atmosphereInnerRadius), 0.0, 1.0); + + // Alter alpha based on time of day (0.0 = night , 1.0 = day) + float nightAlpha = (u_radiiAndDynamicAtmosphereColor.z != 0.0) ? clamp(dot(normalize(positionWC), lightDirection), 0.0, 1.0) : 1.0; + opacity *= pow(nightAlpha, 0.5); +} +`;var OZi=y(C(),1),xP=`in vec3 v_outerPositionWC; + +uniform vec3 u_hsbShift; + +#ifndef PER_FRAGMENT_ATMOSPHERE +in vec3 v_mieColor; +in vec3 v_rayleighColor; +in float v_opacity; +in float v_translucent; +#endif + +void main (void) +{ + float lightEnum = u_radiiAndDynamicAtmosphereColor.z; + vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(v_outerPositionWC, lightEnum); + + vec3 mieColor; + vec3 rayleighColor; + float opacity; + float translucent; + + #ifdef PER_FRAGMENT_ATMOSPHERE + computeAtmosphereScattering( + v_outerPositionWC, + lightDirection, + rayleighColor, + mieColor, + opacity, + translucent + ); + #else + mieColor = v_mieColor; + rayleighColor = v_rayleighColor; + opacity = v_opacity; + translucent = v_translucent; + #endif + + vec4 color = computeAtmosphereColor(v_outerPositionWC, lightDirection, rayleighColor, mieColor, opacity); + + #ifndef HDR + color.rgb = czm_pbrNeutralTonemapping(color.rgb); + color.rgb = czm_inverseGamma(color.rgb); + #endif + + #ifdef COLOR_CORRECT + const bool ignoreBlackPixels = true; + color.rgb = czm_applyHSBShift(color.rgb, u_hsbShift, ignoreBlackPixels); + #endif + + // For the parts of the sky atmosphere that are not behind a translucent globe, + // we mix in the default opacity so that the sky atmosphere still appears at distance. + // This is needed because the opacity in the sky atmosphere is initially adjusted based + // on the camera height. + if (translucent == 0.0) { + color.a = mix(color.b, 1.0, color.a) * smoothstep(0.0, 1.0, czm_morphTime); + } + + out_FragColor = color; +} +`;var zZi=y(C(),1),IP=`in vec4 position; + +out vec3 v_outerPositionWC; + +#ifndef PER_FRAGMENT_ATMOSPHERE +out vec3 v_mieColor; +out vec3 v_rayleighColor; +out float v_opacity; +out float v_translucent; +#endif + +void main(void) +{ + vec4 positionWC = czm_model * position; + float lightEnum = u_radiiAndDynamicAtmosphereColor.z; + vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(positionWC.xyz, lightEnum); + + #ifndef PER_FRAGMENT_ATMOSPHERE + computeAtmosphereScattering( + positionWC.xyz, + lightDirection, + v_rayleighColor, + v_mieColor, + v_opacity, + v_translucent + ); + #endif + + v_outerPositionWC = positionWC.xyz; + vec4 positionEC = czm_modelView * position; + gl_Position = czm_projection * positionEC; +} +`;var JZi=y(C(),1),_P=`uniform samplerCube u_cubeMap; + +in vec3 v_texCoord; + +void main() +{ + vec4 color = czm_textureCube(u_cubeMap, normalize(v_texCoord)); + out_FragColor = vec4(czm_gammaCorrect(color).rgb, czm_morphTime); +} +`;var qZi=y(C(),1),EP=`in vec3 position; +out vec3 v_texCoord; + +void main() +{ + vec3 p = czm_viewRotation * (czm_temeToPseudoFixed * (czm_entireFrustum.y * position)); + gl_Position = czm_projection * vec4(p, 1.0); + v_texCoord = position.xyz; +} +`;var eBi=y(C(),1),TP=`uniform sampler2D u_texture; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 color = texture(u_texture, v_textureCoordinates); + out_FragColor = czm_gammaCorrect(color); +} +`;var nBi=y(C(),1),SP=`uniform float u_radiusTS; + +in vec2 v_textureCoordinates; + +vec2 rotate(vec2 p, vec2 direction) +{ + return vec2(p.x * direction.x - p.y * direction.y, p.x * direction.y + p.y * direction.x); +} + +vec4 addBurst(vec2 position, vec2 direction, float lengthScalar) +{ + vec2 rotatedPosition = rotate(position, direction) * vec2(25.0, 0.75); + float radius = length(rotatedPosition) * lengthScalar; + float burst = 1.0 - smoothstep(0.0, 0.55, radius); + return vec4(burst); +} + +void main() +{ + float lengthScalar = 2.0 / sqrt(2.0); + vec2 position = v_textureCoordinates - vec2(0.5); + float radius = length(position) * lengthScalar; + float surface = step(radius, u_radiusTS); + vec4 color = vec4(vec2(1.0), surface + 0.2, surface); + + float glow = 1.0 - smoothstep(0.0, 0.55, radius); + color.ba += mix(vec2(0.0), vec2(1.0), glow) * 0.75; + + vec4 burst = vec4(0.0); + + // The following loop has been manually unrolled for speed, to + // avoid sin() and cos(). + // + //for (float i = 0.4; i < 3.2; i += 1.047) { + // vec2 direction = vec2(sin(i), cos(i)); + // burst += 0.4 * addBurst(position, direction, lengthScalar); + // + // direction = vec2(sin(i - 0.08), cos(i - 0.08)); + // burst += 0.3 * addBurst(position, direction, lengthScalar); + //} + + burst += 0.4 * addBurst(position, vec2(0.38942, 0.92106), lengthScalar); // angle == 0.4 + burst += 0.4 * addBurst(position, vec2(0.99235, 0.12348), lengthScalar); // angle == 0.4 + 1.047 + burst += 0.4 * addBurst(position, vec2(0.60327, -0.79754), lengthScalar); // angle == 0.4 + 1.047 * 2.0 + + burst += 0.3 * addBurst(position, vec2(0.31457, 0.94924), lengthScalar); // angle == 0.4 - 0.08 + burst += 0.3 * addBurst(position, vec2(0.97931, 0.20239), lengthScalar); // angle == 0.4 + 1.047 - 0.08 + burst += 0.3 * addBurst(position, vec2(0.66507, -0.74678), lengthScalar); // angle == 0.4 + 1.047 * 2.0 - 0.08 + + // End of manual loop unrolling. + + color += clamp(burst, vec4(0.0), vec4(1.0)) * 0.15; + + out_FragColor = clamp(color, vec4(0.0), vec4(1.0)); +} +`;var oBi=y(C(),1),LP=`in vec2 direction; + +uniform float u_size; + +out vec2 v_textureCoordinates; + +void main() +{ + vec4 position; + if (czm_morphTime == 1.0) + { + position = vec4(czm_sunPositionWC, 1.0); + } + else + { + position = vec4(czm_sunPositionColumbusView.zxy, 1.0); + } + + vec4 positionEC = czm_view * position; + vec4 positionWC = czm_eyeToWindowCoordinates(positionEC); + + vec2 halfSize = vec2(u_size * 0.5); + halfSize *= ((direction * 2.0) - 1.0); + + gl_Position = czm_viewportOrthographic * vec4(positionWC.xy + halfSize, -positionWC.z, 1.0); + + v_textureCoordinates = direction; +} +`;var sBi=y(C(),1),RP=` +in vec2 v_textureCoordinates; + +void main() +{ + czm_materialInput materialInput; + + materialInput.s = v_textureCoordinates.s; + materialInput.st = v_textureCoordinates; + materialInput.str = vec3(v_textureCoordinates, 0.0); + materialInput.normalEC = vec3(0.0, 0.0, -1.0); + + czm_material material = czm_getMaterial(materialInput); + + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +} +`;var mqi=y(C(),1);var CBi=y(C(),1);var fBi=y(C(),1);var lBi=y(C(),1);async function Tut(e,t,n,i){return l(i)||(i=!1),Rut(e,t,n,i)}function Sut(e,t,n){let i=e[0],o=i.terrainProvider.requestTileGeometry(i.x,i.y,i.level);if(!o)return!1;let r;return n?r=o.then(CCe(i)):r=o.then(CCe(i)).catch(Vut(i)),e.shift(),t.push(r),!0}function Lut(e){return new Promise(function(t){setTimeout(t,e)})}function u7(e,t,n){return e.length?Sut(e,t,n)?u7(e,t,n):Lut(100).then(()=>u7(e,t,n)):Promise.resolve()}function Rut(e,t,n,i){let o=e.tilingScheme,r,s=[],a={};for(r=0;r<n.length;++r){let d=o.positionToTileXY(n[r],t);if(!l(d))continue;let u=d.toString();if(!a.hasOwnProperty(u)){let h={x:d.x,y:d.y,level:t,tilingScheme:o,terrainProvider:e,positions:[]};a[u]=h,s.push(h)}a[u].positions.push(n[r])}let c=[];return u7(s,c,i).then(function(){return Promise.all(c).then(function(){return n})})}function yCe(e,t,n){let i=t.interpolateHeight(n,e.longitude,e.latitude);return i===void 0?!1:(e.height=i,!0)}function CCe(e){let t=e.positions,n=e.tilingScheme.tileXYToRectangle(e.x,e.y,e.level);return function(i){let o=!1;for(let r=0;r<t.length;++r){let s=t[r];if(!yCe(s,i,n)){o=!0;break}}return o?i.createMesh({tilingScheme:e.tilingScheme,x:e.x,y:e.y,level:e.level,throttle:!1}).then(function(){for(let r=0;r<t.length;++r){let s=t[r];yCe(s,i,n)}}):Promise.resolve()}}function Vut(e){let t=e.positions;return function(){for(let n=0;n<t.length;++n){let i=t[n];i.height=void 0}}}var VP=Tut;var m7=new D;async function xCe(e,t,n){l(n)||(n=!1);let i=[],o=[],r=e.availability,s=[];for(let c=0;c<t.length;++c){let d=t[c],u=r.computeMaximumLevelAtPosition(d);if(o[c]=u,u===0){e.tilingScheme.positionToTileXY(d,1,m7);let p=e.loadTileDataAvailability(m7.x,m7.y,1);l(p)&&s.push(p)}let h=i[u];l(h)||(i[u]=h=[]),h.push(d)}await Promise.all(s),await Promise.all(i.map(function(c,d){if(l(c))return VP(e,d,c,n)}));let a=[];for(let c=0;c<t.length;++c){let d=t[c];r.computeMaximumLevelAtPosition(d)!==o[c]&&a.push(d)}return a.length>0&&await xCe(e,a,n),t}var _I=xCe;async function h7(e,t){let n=t.terrainProvider,i=t.mapProjection,o=i.ellipsoid,r,s=t.camera.getRectangleCameraCoordinates(e);if(t.mode===re.SCENE3D?r=o.cartesianToCartographic(s):r=i.unproject(s),!l(n))return r;let a=n.availability;if(!l(a)||t.mode===re.SCENE2D)return r;let c=[le.center(e),le.southeast(e),le.southwest(e),le.northeast(e),le.northwest(e)],d=await h7._sampleTerrainMostDetailed(n,c),u=!1,h=d.reduce(function(g,f){return l(f.height)?(u=!0,Math.max(f.height,g)):g},-Number.MAX_VALUE),p=r;return u&&(p.height+=h),p}h7._sampleTerrainMostDetailed=_I;var EI=h7;var cFi=y(C(),1);var Rwi=y(C(),1);var ywi=y(C(),1);var IBi=y(C(),1),Gut={NONE:0,LERC:1},Xm=Object.freeze(Gut);var jBi=y(C(),1);var WBi=y(C(),1);var EBi=y(C(),1),Zut={NONE:0,BITS12:1},Ia=Object.freeze(Zut);var TI=new m,But=new m,Wm=new D,bk=new X,wut=new X,Xut=Math.pow(2,12);function zc(e,t,n,i,o,r,s,a,c,d){let u=Ia.NONE,h,p;if(l(t)&&l(n)&&l(i)&&l(o)){let g=t.minimum,f=t.maximum,b=m.subtract(f,g,But),x=i-n;Math.max(m.maximumComponent(b),x)<Xut-1?u=Ia.BITS12:u=Ia.NONE,h=X.inverseTransformation(o,new X);let _=m.negate(g,TI);X.multiply(X.fromTranslation(_,bk),h,h);let E=TI;E.x=1/b.x,E.y=1/b.y,E.z=1/b.z,X.multiply(X.fromScale(E,bk),h,h),p=X.clone(o),X.setTranslation(p,m.ZERO,p),o=X.clone(o,new X);let S=X.fromTranslation(g,bk),R=X.fromScale(b,wut),G=X.multiply(S,R,bk);X.multiply(o,G,o),X.multiply(p,G,p)}this.quantization=u,this.minimumHeight=n,this.maximumHeight=i,this.center=m.clone(e),this.toScaledENU=h,this.fromScaledENU=o,this.matrix=p,this.hasVertexNormals=r,this.hasWebMercatorT=s??!1,this.hasGeodeticSurfaceNormals=a??!1,this.exaggeration=c??1,this.exaggerationRelativeHeight=d??0,this.stride=0,this._offsetGeodeticSurfaceNormal=0,this._offsetVertexNormal=0,this._calculateStrideAndOffsets()}zc.prototype.encode=function(e,t,n,i,o,r,s,a){let c=i.x,d=i.y;if(this.quantization===Ia.BITS12){n=X.multiplyByPoint(this.toScaledENU,n,TI),n.x=Z.clamp(n.x,0,1),n.y=Z.clamp(n.y,0,1),n.z=Z.clamp(n.z,0,1);let u=this.maximumHeight-this.minimumHeight,h=Z.clamp((o-this.minimumHeight)/u,0,1);D.fromElements(n.x,n.y,Wm);let p=Mn.compressTextureCoordinates(Wm);D.fromElements(n.z,h,Wm);let g=Mn.compressTextureCoordinates(Wm);D.fromElements(c,d,Wm);let f=Mn.compressTextureCoordinates(Wm);if(e[t++]=p,e[t++]=g,e[t++]=f,this.hasWebMercatorT){D.fromElements(s,0,Wm);let b=Mn.compressTextureCoordinates(Wm);e[t++]=b}}else m.subtract(n,this.center,TI),e[t++]=TI.x,e[t++]=TI.y,e[t++]=TI.z,e[t++]=o,e[t++]=c,e[t++]=d,this.hasWebMercatorT&&(e[t++]=s);return this.hasVertexNormals&&(e[t++]=Mn.octPackFloat(r)),this.hasGeodeticSurfaceNormals&&(e[t++]=a.x,e[t++]=a.y,e[t++]=a.z),t};var Wut=new m,ICe=new m;zc.prototype.addGeodeticSurfaceNormals=function(e,t,n){if(this.hasGeodeticSurfaceNormals)return;let i=this.stride,o=e.length/i;this.hasGeodeticSurfaceNormals=!0,this._calculateStrideAndOffsets();let r=this.stride;for(let s=0;s<o;s++){for(let u=0;u<i;u++){let h=s*i+u,p=s*r+u;t[p]=e[h]}let a=this.decodePosition(t,s,Wut),c=n.geodeticSurfaceNormal(a,ICe),d=s*r+this._offsetGeodeticSurfaceNormal;t[d]=c.x,t[d+1]=c.y,t[d+2]=c.z}};zc.prototype.removeGeodeticSurfaceNormals=function(e,t){if(!this.hasGeodeticSurfaceNormals)return;let n=this.stride,i=e.length/n;this.hasGeodeticSurfaceNormals=!1,this._calculateStrideAndOffsets();let o=this.stride;for(let r=0;r<i;r++)for(let s=0;s<o;s++){let a=r*n+s,c=r*o+s;t[c]=e[a]}};zc.prototype.decodePosition=function(e,t,n){if(l(n)||(n=new m),t*=this.stride,this.quantization===Ia.BITS12){let i=Mn.decompressTextureCoordinates(e[t],Wm);n.x=i.x,n.y=i.y;let o=Mn.decompressTextureCoordinates(e[t+1],Wm);return n.z=o.x,X.multiplyByPoint(this.fromScaledENU,n,n)}return n.x=e[t],n.y=e[t+1],n.z=e[t+2],m.add(n,this.center,n)};zc.prototype.getExaggeratedPosition=function(e,t,n){n=this.decodePosition(e,t,n);let i=this.exaggeration,o=this.exaggerationRelativeHeight;if(i!==1&&this.hasGeodeticSurfaceNormals){let s=this.decodeGeodeticSurfaceNormal(e,t,ICe),a=this.decodeHeight(e,t),c=Mr.getHeight(a,i,o)-a;n.x+=s.x*c,n.y+=s.y*c,n.z+=s.z*c}return n};zc.prototype.decodeTextureCoordinates=function(e,t,n){return l(n)||(n=new D),t*=this.stride,this.quantization===Ia.BITS12?Mn.decompressTextureCoordinates(e[t+2],n):D.fromElements(e[t+4],e[t+5],n)};zc.prototype.decodeHeight=function(e,t){return t*=this.stride,this.quantization===Ia.BITS12?Mn.decompressTextureCoordinates(e[t+1],Wm).y*(this.maximumHeight-this.minimumHeight)+this.minimumHeight:e[t+3]};zc.prototype.decodeWebMercatorT=function(e,t){return t*=this.stride,this.quantization===Ia.BITS12?Mn.decompressTextureCoordinates(e[t+3],Wm).x:e[t+6]};zc.prototype.getOctEncodedNormal=function(e,t,n){t=t*this.stride+this._offsetVertexNormal;let i=e[t]/256,o=Math.floor(i),r=(i-o)*256;return D.fromElements(o,r,n)};zc.prototype.decodeGeodeticSurfaceNormal=function(e,t,n){return t=t*this.stride+this._offsetGeodeticSurfaceNormal,n.x=e[t],n.y=e[t+1],n.z=e[t+2],n};zc.prototype._calculateStrideAndOffsets=function(){let e=0;switch(this.quantization){case Ia.BITS12:e+=3;break;default:e+=6}this.hasWebMercatorT&&(e+=1),this.hasVertexNormals&&(this._offsetVertexNormal=e,e+=1),this.hasGeodeticSurfaceNormals&&(this._offsetGeodeticSurfaceNormal=e,e+=3),this.stride=e};var yk={position3DAndHeight:0,textureCoordAndEncodedNormals:1,geodeticSurfaceNormal:2},Ck={compressed0:0,compressed1:1,geodeticSurfaceNormal:2};zc.prototype.getAttributes=function(e){let t=J.FLOAT,n=J.getSizeInBytes(t),i=this.stride*n,o=0,r=[];function s(a,c){r.push({index:a,vertexBuffer:e,componentDatatype:t,componentsPerAttribute:c,offsetInBytes:o,strideInBytes:i}),o+=c*n}if(this.quantization===Ia.NONE){s(yk.position3DAndHeight,4);let a=2;a+=this.hasWebMercatorT?1:0,a+=this.hasVertexNormals?1:0,s(yk.textureCoordAndEncodedNormals,a),this.hasGeodeticSurfaceNormals&&s(yk.geodeticSurfaceNormal,3)}else{let a=this.hasWebMercatorT||this.hasVertexNormals,c=this.hasWebMercatorT&&this.hasVertexNormals;s(Ck.compressed0,a?4:3),c&&s(Ck.compressed1,1),this.hasGeodeticSurfaceNormals&&s(Ck.geodeticSurfaceNormal,3)}return r};zc.prototype.getAttributeLocations=function(){return this.quantization===Ia.NONE?yk:Ck};zc.clone=function(e,t){if(l(e))return l(t)||(t=new zc),t.quantization=e.quantization,t.minimumHeight=e.minimumHeight,t.maximumHeight=e.maximumHeight,t.center=m.clone(e.center),t.toScaledENU=X.clone(e.toScaledENU),t.fromScaledENU=X.clone(e.fromScaledENU),t.matrix=X.clone(e.matrix),t.hasVertexNormals=e.hasVertexNormals,t.hasWebMercatorT=e.hasWebMercatorT,t.hasGeodeticSurfaceNormals=e.hasGeodeticSurfaceNormals,t.exaggeration=e.exaggeration,t.exaggerationRelativeHeight=e.exaggerationRelativeHeight,t._calculateStrideAndOffsets(),t};var Kc=zc;var Ep={};Ep.DEFAULT_STRUCTURE=Object.freeze({heightScale:1,heightOffset:0,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1});var f7=new m,Fut=new X,Put=new m,Mut=new m;Ep.computeVertices=function(e){let t=Math.cos,n=Math.sin,i=Math.sqrt,o=Math.atan,r=Math.exp,s=Z.PI_OVER_TWO,a=Z.toRadians,c=e.heightmap,d=e.width,u=e.height,h=e.skirtHeight,p=h>0,g=e.isGeographic??!0,f=e.ellipsoid??ie.default,b=1/f.maximumRadius,x=le.clone(e.nativeRectangle),I=le.clone(e.rectangle),_,E,S,R;l(I)?(_=I.west,E=I.south,S=I.east,R=I.north):g?(_=a(x.west),E=a(x.south),S=a(x.east),R=a(x.north)):(_=x.west*b,E=s-2*o(r(-x.south*b)),S=x.east*b,R=s-2*o(r(-x.north*b)));let G=e.relativeToCenter,B=l(G);G=B?G:m.ZERO;let w=e.includeWebMercatorT??!1,F=e.exaggeration??1,P=e.exaggerationRelativeHeight??0,T=F!==1,L=e.structure??Ep.DEFAULT_STRUCTURE,V=L.heightScale??Ep.DEFAULT_STRUCTURE.heightScale,W=L.heightOffset??Ep.DEFAULT_STRUCTURE.heightOffset,M=L.elementsPerHeight??Ep.DEFAULT_STRUCTURE.elementsPerHeight,Q=L.stride??Ep.DEFAULT_STRUCTURE.stride,N=L.elementMultiplier??Ep.DEFAULT_STRUCTURE.elementMultiplier,k=L.isBigEndian??Ep.DEFAULT_STRUCTURE.isBigEndian,v=le.computeWidth(x),O=le.computeHeight(x),H=v/(d-1),ee=O/(u-1);g||(v*=b,O*=b);let K=f.radiiSquared,te=K.x,q=K.y,pe=K.z,ye=65536,he=-65536,xe=Dt.eastNorthUpToFixedFrame(G,f),Te=X.inverseTransformation(xe,Fut),Be,Le;w&&(Be=Ui.geodeticLatitudeToMercatorAngle(E),Le=1/(Ui.geodeticLatitudeToMercatorAngle(R)-Be));let De=Put;De.x=Number.POSITIVE_INFINITY,De.y=Number.POSITIVE_INFINITY,De.z=Number.POSITIVE_INFINITY;let Ue=Mut;Ue.x=Number.NEGATIVE_INFINITY,Ue.y=Number.NEGATIVE_INFINITY,Ue.z=Number.NEGATIVE_INFINITY;let je=Number.POSITIVE_INFINITY,it=d*u,nn=h>0?d*2+u*2:0,rt=it+nn,rn=new Array(rt),Jt=new Array(rt),Xt=new Array(rt),Li=w?new Array(rt):[],bi=T?new Array(rt):[],vt=0,Rt=u,si=0,_t=d;p&&(--vt,++Rt,--si,++_t);let Fo=1e-5;for(let nt=vt;nt<Rt;++nt){let yt=nt;yt<0&&(yt=0),yt>=u&&(yt=u-1);let $t=x.north-ee*yt;g?$t=a($t):$t=s-2*o(r(-$t*b));let Sn=($t-E)/(R-E);Sn=Z.clamp(Sn,0,1);let fo=nt===vt,uo=nt===Rt-1;h>0&&(fo?$t+=Fo*O:uo&&($t-=Fo*O));let ra=t($t),sa=n($t),Hn=pe*sa,Ti;w&&(Ti=(Ui.geodeticLatitudeToMercatorAngle($t)-Be)*Le);for(let Rs=si;Rs<_t;++Rs){let Jo=Rs;Jo<0&&(Jo=0),Jo>=d&&(Jo=d-1);let Ga=yt*(d*Q)+Jo*Q,po;if(M===1)po=c[Ga];else{po=0;let Zo;if(k)for(Zo=0;Zo<M;++Zo)po=po*N+c[Ga+Zo];else for(Zo=M-1;Zo>=0;--Zo)po=po*N+c[Ga+Zo]}po=po*V+W,he=Math.max(he,po),ye=Math.min(ye,po);let jo=x.west+H*Jo;g?jo=a(jo):jo=jo*b;let Wu=(jo-_)/(S-_);Wu=Z.clamp(Wu,0,1);let xr=yt*d+Jo;if(h>0){let Zo=Rs===si,mn=Rs===_t-1,Re=fo||uo||Zo||mn;if((fo||uo)&&(Zo||mn))continue;Re&&(po-=h,Zo?(xr=it+(u-yt-1),jo-=Fo*v):uo?xr=it+u+(d-Jo-1):mn?(xr=it+u+d+yt,jo+=Fo*v):fo&&(xr=it+u+d+u+Jo))}let Vs=ra*t(jo),ks=ra*n(jo),Jm=te*Vs,fs=q*ks,nc=1/i(Jm*Vs+fs*ks+Hn*sa),Xr=Jm*nc,kl=fs*nc,Yl=Hn*nc,aa=new m;aa.x=Xr+Vs*po,aa.y=kl+ks*po,aa.z=Yl+sa*po,X.multiplyByPoint(Te,aa,f7),m.minimumByComponent(f7,De,De),m.maximumByComponent(f7,Ue,Ue),je=Math.min(je,po),rn[xr]=aa,Xt[xr]=new D(Wu,Sn),Jt[xr]=po,w&&(Li[xr]=Ti),T&&(bi[xr]=f.geodeticSurfaceNormal(aa))}}let Uo=ue.fromPoints(rn),Va;l(I)&&(Va=vn.fromRectangle(I,ye,he,f));let Cr;B&&(Cr=new gg(f).computeHorizonCullingPointPossiblyUnderEllipsoid(G,rn,ye));let wr=new Ib(De,Ue,G),ve=new Kc(G,wr,je,he,xe,!1,w,T,F,P),ut=new Float32Array(rt*ve.stride),qe=0;for(let nt=0;nt<rt;++nt)qe=ve.encode(ut,qe,rn[nt],Xt[nt],Jt[nt],void 0,Li[nt],bi[nt]);return{vertices:ut,maximumHeight:he,minimumHeight:ye,encoding:ve,boundingSphere3D:Uo,orientedBoundingBox:Va,occludeePointInScaledSpace:Cr}};var eL=Ep;var ewi=y(C(),1);function sy(){Ae.throwInstantiationError()}Object.defineProperties(sy.prototype,{credits:{get:Ae.throwInstantiationError},waterMask:{get:Ae.throwInstantiationError}});sy.prototype.interpolateHeight=Ae.throwInstantiationError;sy.prototype.isChildAvailable=Ae.throwInstantiationError;sy.prototype.createMesh=Ae.throwInstantiationError;sy.prototype.upsample=Ae.throwInstantiationError;sy.prototype.wasCreatedByUpsampling=Ae.throwInstantiationError;sy.maximumAsynchronousTasks=5;var df=sy;var nwi=y(C(),1);function vut(e,t,n,i,o,r,s,a,c,d,u,h,p,g,f,b){this.center=e,this.vertices=t,this.stride=d??6,this.indices=n,this.indexCountWithoutSkirts=i,this.vertexCountWithoutSkirts=o,this.minimumHeight=r,this.maximumHeight=s,this.boundingSphere3D=a,this.occludeePointInScaledSpace=c,this.orientedBoundingBox=u,this.encoding=h,this.westIndicesSouthToNorth=p,this.southIndicesEastToWest=g,this.eastIndicesNorthToSouth=f,this.northIndicesWestToEast=b}var Fm=vut;function Dg(e){this._buffer=e.buffer,this._width=e.width,this._height=e.height,this._childTileMask=e.childTileMask??15,this._encoding=e.encoding??Xm.NONE;let t=eL.DEFAULT_STRUCTURE,n=e.structure;l(n)?n!==t&&(n.heightScale=n.heightScale??t.heightScale,n.heightOffset=n.heightOffset??t.heightOffset,n.elementsPerHeight=n.elementsPerHeight??t.elementsPerHeight,n.stride=n.stride??t.stride,n.elementMultiplier=n.elementMultiplier??t.elementMultiplier,n.isBigEndian=n.isBigEndian??t.isBigEndian):n=t,this._structure=n,this._createdByUpsampling=e.createdByUpsampling??!1,this._waterMask=e.waterMask,this._skirtHeight=void 0,this._bufferType=this._encoding===Xm.LERC?Float32Array:this._buffer.constructor,this._mesh=void 0}Object.defineProperties(Dg.prototype,{credits:{get:function(){}},waterMask:{get:function(){return this._waterMask}},childTileMask:{get:function(){return this._childTileMask}}});var _Ce="createVerticesFromHeightmap",Nut=new hi(_Ce),Dut=new hi(_Ce,df.maximumAsynchronousTasks);Dg.prototype.createMesh=function(e){e=e??Y.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid,d=t.tileXYToNativeRectangle(n,i,o),u=t.tileXYToRectangle(n,i,o),h=c.cartographicToCartesian(le.center(u)),p=this._structure,f=Es.getEstimatedLevelZeroGeometricErrorForAHeightmap(c,this._width,t.getNumberOfXTilesAtLevel(0))/(1<<o);this._skirtHeight=Math.min(f*4,1e3);let x=(a?Dut:Nut).scheduleTask({heightmap:this._buffer,structure:p,includeWebMercatorT:!0,width:this._width,height:this._height,nativeRectangle:d,rectangle:u,relativeToCenter:h,ellipsoid:c,skirtHeight:this._skirtHeight,isGeographic:t.projection instanceof Di,exaggeration:r,exaggerationRelativeHeight:s,encoding:this._encoding});if(!l(x))return;let I=this;return Promise.resolve(x).then(function(_){let E;I._skirtHeight>0?E=Es.getRegularGridAndSkirtIndicesAndEdgeIndices(_.gridWidth,_.gridHeight):E=Es.getRegularGridIndicesAndEdgeIndices(_.gridWidth,_.gridHeight);let S=_.gridWidth*_.gridHeight;return I._mesh=new Fm(h,new Float32Array(_.vertices),E.indices,E.indexCountWithoutSkirts,S,_.minimumHeight,_.maximumHeight,ue.clone(_.boundingSphere3D),m.clone(_.occludeePointInScaledSpace),_.numberOfAttributes,vn.clone(_.orientedBoundingBox),Kc.clone(_.encoding),E.westIndicesSouthToNorth,E.southIndicesEastToWest,E.eastIndicesNorthToSouth,E.northIndicesWestToEast),I._buffer=void 0,I._mesh})};Dg.prototype._createMeshSync=function(e){let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=t.ellipsoid,c=t.tileXYToNativeRectangle(n,i,o),d=t.tileXYToRectangle(n,i,o),u=a.cartographicToCartesian(le.center(d)),h=this._structure,g=Es.getEstimatedLevelZeroGeometricErrorForAHeightmap(a,this._width,t.getNumberOfXTilesAtLevel(0))/(1<<o);this._skirtHeight=Math.min(g*4,1e3);let f=eL.computeVertices({heightmap:this._buffer,structure:h,includeWebMercatorT:!0,width:this._width,height:this._height,nativeRectangle:c,rectangle:d,relativeToCenter:u,ellipsoid:a,skirtHeight:this._skirtHeight,isGeographic:t.projection instanceof Di,exaggeration:r,exaggerationRelativeHeight:s});this._buffer=void 0;let b;this._skirtHeight>0?b=Es.getRegularGridAndSkirtIndicesAndEdgeIndices(this._width,this._height):b=Es.getRegularGridIndicesAndEdgeIndices(this._width,this._height);let x=f.gridWidth*f.gridHeight;return this._mesh=new Fm(u,f.vertices,b.indices,b.indexCountWithoutSkirts,x,f.minimumHeight,f.maximumHeight,f.boundingSphere3D,f.occludeePointInScaledSpace,f.encoding.stride,f.orientedBoundingBox,f.encoding,b.westIndicesSouthToNorth,b.southIndicesEastToWest,b.eastIndicesNorthToSouth,b.northIndicesWestToEast),this._mesh};Dg.prototype.interpolateHeight=function(e,t,n){let i=this._width,o=this._height,r=this._structure,s=r.stride,a=r.elementsPerHeight,c=r.elementMultiplier,d=r.isBigEndian,u=r.heightOffset,h=r.heightScale,p=l(this._mesh),g=this._encoding===Xm.LERC;if(!p&&g)return;let b;if(p){let x=this._mesh.vertices,I=this._mesh.encoding;b=ECe(x,I,u,h,e,i,o,t,n)}else b=Qut(this._buffer,a,c,s,d,e,i,o,t,n),b=b*h+u;return b};Dg.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(a))return;let c=this._width,d=this._height,u=this._structure,h=u.stride,p=new this._bufferType(c*d*h),g=a.vertices,f=a.encoding,b=e.tileXYToRectangle(t,n,i),x=e.tileXYToRectangle(o,r,s),I=u.heightOffset,_=u.heightScale,E=u.elementsPerHeight,S=u.elementMultiplier,R=u.isBigEndian,G=Math.pow(S,E-1);for(let B=0;B<d;++B){let w=Z.lerp(x.north,x.south,B/(d-1));for(let F=0;F<c;++F){let P=Z.lerp(x.west,x.east,F/(c-1)),A=ECe(g,f,I,_,b,c,d,P,w);A=A<u.lowestEncodedHeight?u.lowestEncodedHeight:A,A=A>u.highestEncodedHeight?u.highestEncodedHeight:A,Uut(p,E,S,G,h,R,B*c+F,A)}}return Promise.resolve(new Dg({buffer:p,width:c,height:d,childTileMask:0,structure:this._structure,createdByUpsampling:!0}))};Dg.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};Dg.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};function Qut(e,t,n,i,o,r,s,a,c,d){let u=(c-r.west)*(s-1)/(r.east-r.west),h=(d-r.south)*(a-1)/(r.north-r.south),p=u|0,g=p+1;g>=s&&(g=s-1,p=s-2);let f=h|0,b=f+1;b>=a&&(b=a-1,f=a-2);let x=u-p,I=h-f;f=a-1-f,b=a-1-b;let _=xk(e,t,n,i,o,f*s+p),E=xk(e,t,n,i,o,f*s+g),S=xk(e,t,n,i,o,b*s+p),R=xk(e,t,n,i,o,b*s+g);return TCe(x,I,_,E,S,R)}function ECe(e,t,n,i,o,r,s,a,c){let d=(a-o.west)*(r-1)/(o.east-o.west),u=(c-o.south)*(s-1)/(o.north-o.south),h=d|0,p=h+1;p>=r&&(p=r-1,h=r-2);let g=u|0,f=g+1;f>=s&&(f=s-1,g=s-2);let b=d-h,x=u-g;g=s-1-g,f=s-1-f;let I=(t.decodeHeight(e,g*r+h)-n)/i,_=(t.decodeHeight(e,g*r+p)-n)/i,E=(t.decodeHeight(e,f*r+h)-n)/i,S=(t.decodeHeight(e,f*r+p)-n)/i;return TCe(b,x,I,_,E,S)}function TCe(e,t,n,i,o,r){return t<e?n+e*(i-n)+t*(r-i):n+e*(r-o)+t*(o-n)}function xk(e,t,n,i,o,r){r*=i;let s=0,a;if(o)for(a=0;a<t;++a)s=s*n+e[r+a];else for(a=t-1;a>=0;--a)s=s*n+e[r+a];return s}function Uut(e,t,n,i,o,r,s,a){s*=o;let c;if(r)for(c=0;c<t-1;++c)e[s+c]=a/i|0,a-=e[s+c]*i,i/=n;else for(c=t-1;c>0;--c)e[s+c]=a/i|0,a-=e[s+c]*i,i/=n;e[s+c]=a}var yc=Dg;function tL(e){e=e??Y.EMPTY_OBJECT,this._tilingScheme=e.tilingScheme,l(this._tilingScheme)||(this._tilingScheme=new ao({ellipsoid:e.ellipsoid??ie.default})),this._levelZeroMaximumGeometricError=Es.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,64,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._errorEvent=new Ce}Object.defineProperties(tL.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});tL.prototype.requestTileGeometry=function(e,t,n,i){return Promise.resolve(new yc({buffer:new Uint8Array(256),width:16,height:16}))};tL.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};tL.prototype.getTileDataAvailable=function(e,t,n){};tL.prototype.loadTileDataAvailability=function(e,t,n){};var Tp=tL;var Nwi=y(C(),1);var Bwi=y(C(),1);var kut=new D;function Yut(e,t){let n=e.unionClippingRegions,i=e.length,o=Ws.useFloatTexture(t),r=Ws.getTextureResolution(e,t,kut),s=r.x,a=r.y,c=o?zut(s,a):Kut(s,a);return c+=` +`,c+=n?Out(i):Hut(i),c}function Out(e){return`float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) +{ + vec4 position = czm_windowToEyeCoordinates(fragCoord); + vec3 clipNormal = vec3(0.0); + vec3 clipPosition = vec3(0.0); + float clipAmount; + float pixelWidth = czm_metersPerPixel(position); + bool breakAndDiscard = false; + for (int i = 0; i < ${e}; ++i) + { + vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix); + clipNormal = clippingPlane.xyz; + clipPosition = -clippingPlane.w * clipNormal; + float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth; + clipAmount = czm_branchFreeTernary(i == 0, amount, min(amount, clipAmount)); + if (amount <= 0.0) + { + breakAndDiscard = true; + break; + } + } + if (breakAndDiscard) { + discard; + } + return clipAmount; +} +`}function Hut(e){return`float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) +{ + bool clipped = true; + vec4 position = czm_windowToEyeCoordinates(fragCoord); + vec3 clipNormal = vec3(0.0); + vec3 clipPosition = vec3(0.0); + float clipAmount = 0.0; + float pixelWidth = czm_metersPerPixel(position); + for (int i = 0; i < ${e}; ++i) + { + vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix); + clipNormal = clippingPlane.xyz; + clipPosition = -clippingPlane.w * clipNormal; + float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth; + clipAmount = max(amount, clipAmount); + clipped = clipped && (amount <= 0.0); + } + if (clipped) + { + discard; + } + return clipAmount; +} +`}function zut(e,t){let n=1/e,i=1/t,o=`${n}`;o.indexOf(".")===-1&&(o+=".0");let r=`${i}`;return r.indexOf(".")===-1&&(r+=".0"),`vec4 getClippingPlane(highp sampler2D packedClippingPlanes, int clippingPlaneNumber, mat4 transform) +{ + int pixY = clippingPlaneNumber / ${e}; + int pixX = clippingPlaneNumber - (pixY * ${e}); + float u = (float(pixX) + 0.5) * ${o}; + float v = (float(pixY) + 0.5) * ${r}; + vec4 plane = texture(packedClippingPlanes, vec2(u, v)); + return czm_transformPlane(plane, transform); +} +`}function Kut(e,t){let n=1/e,i=1/t,o=`${n}`;o.indexOf(".")===-1&&(o+=".0");let r=`${i}`;return r.indexOf(".")===-1&&(r+=".0"),`vec4 getClippingPlane(highp sampler2D packedClippingPlanes, int clippingPlaneNumber, mat4 transform) +{ + int clippingPlaneStartIndex = clippingPlaneNumber * 2; + int pixY = clippingPlaneStartIndex / ${e}; + int pixX = clippingPlaneStartIndex - (pixY * ${e}); + float u = (float(pixX) + 0.5) * ${o}; + float v = (float(pixY) + 0.5) * ${r}; + vec4 oct32 = texture(packedClippingPlanes, vec2(u, v)) * 255.0; + vec2 oct = vec2(oct32.x * 256.0 + oct32.y, oct32.z * 256.0 + oct32.w); + vec4 plane; + plane.xyz = czm_octDecode(oct, 65535.0); + plane.w = czm_unpackFloat(texture(packedClippingPlanes, vec2(u + ${o}, v))); + return czm_transformPlane(plane, transform); +} +`}var Qg=Yut;function Jut(e,t,n,i,o,r){this.numberOfDayTextures=e,this.flags=t,this.material=n,this.shaderProgram=i,this.clippingShaderState=o,this.clippingPolygonShaderState=r}function p7(){this.baseVertexShaderSource=void 0,this.baseFragmentShaderSource=void 0,this._shadersByTexturesFlags=[],this.material=void 0}function jut(e){let t="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPosition3DMode(position, height, textureCoordinates); }",n="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPositionColumbusViewMode(position, height, textureCoordinates); }",i="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPositionMorphingMode(position, height, textureCoordinates); }",o;switch(e){case re.SCENE3D:o=t;break;case re.SCENE2D:case re.COLUMBUS_VIEW:o=n;break;case re.MORPHING:o=i;break}return o}function qut(e){return e.webgl2?`void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) { + czm_clipPolygons(clippingDistance, regionsLength, clippingPosition, regionIndex); + }`:`void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) { + }`}function $ut(e){return e.webgl2?`vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) { + return czm_unpackClippingExtents(extentsTexture, index); + }`:`vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) { + return vec4(); + }`}function emt(e){return e?"float get2DYPositionFraction(vec2 textureCoordinates) { return get2DMercatorYPositionFraction(textureCoordinates); }":"float get2DYPositionFraction(vec2 textureCoordinates) { return get2DGeographicYPositionFraction(textureCoordinates); }"}p7.prototype.getShaderProgram=function(e){let t=e.frameState,n=e.surfaceTile,i=e.numberOfDayTextures,o=e.applyBrightness,r=e.applyContrast,s=e.applyHue,a=e.applySaturation,c=e.applyGamma,d=e.applyAlpha,u=e.applyDayNightAlpha,h=e.applySplit,p=e.hasWaterMask,g=e.showReflectiveOcean,f=e.showOceanWaves,b=e.enableLighting,x=e.dynamicAtmosphereLighting,I=e.dynamicAtmosphereLightingFromSun,_=e.showGroundAtmosphere,E=e.perFragmentGroundAtmosphere,S=e.hasVertexNormals,R=e.useWebMercatorProjection,G=e.enableFog,B=e.enableClippingPlanes,w=e.clippingPlanes,F=e.enableClippingPolygons,P=e.clippingPolygons,A=e.clippedByBoundaries,T=e.hasImageryLayerCutout,L=e.colorCorrect,V=e.highlightFillTile,W=e.colorToAlpha,M=e.hasGeodeticSurfaceNormals,Q=e.hasExaggeration,N=e.showUndergroundColor,k=e.translucent,v=0,O="",ee=n.renderedMesh.encoding;ee.quantization===Ia.BITS12&&(v=1,O="QUANTIZATION_BITS12");let te=0,q="";A&&(te=1,q="TILE_LIMIT_RECTANGLE");let pe=0,ye="";T&&(pe=1,ye="APPLY_IMAGERY_CUTOUT");let he=t.mode,xe=he|o<<2|r<<3|s<<4|a<<5|c<<6|d<<7|p<<8|g<<9|f<<10|b<<11|x<<12|I<<13|_<<14|E<<15|S<<16|R<<17|G<<18|v<<19|h<<20|B<<21|F<<22|te<<23|pe<<24|L<<25|V<<26|W<<27|M<<28|Q<<29|N<<30|k<<31|u<<32,Te=0;l(w)&&w.length>0&&(Te=B?w.clippingPlanesState:0);let Be=0;l(P)&&P.length>0&&(Be=F?P.clippingPolygonsState:0);let Le=n.surfaceShader;if(l(Le)&&Le.numberOfDayTextures===i&&Le.flags===xe&&Le.material===this.material&&Le.clippingShaderState===Te&&Le.clippingPolygonShaderState===Be)return Le.shaderProgram;let De=this._shadersByTexturesFlags[i];if(l(De)||(De=this._shadersByTexturesFlags[i]=[]),Le=De[xe],!l(Le)||Le.material!==this.material||Le.clippingShaderState!==Te||Le.clippingPolygonShaderState!==Be){let Ue=this.baseVertexShaderSource.clone(),je=this.baseFragmentShaderSource.clone();Te!==0&&je.sources.unshift(Qg(w,t.context)),Be!==0&&(je.sources.unshift(qut(t.context)),Ue.sources.unshift($ut(t.context))),Ue.defines.push(O),je.defines.push(`TEXTURE_UNITS ${i}`,q,ye),o&&je.defines.push("APPLY_BRIGHTNESS"),r&&je.defines.push("APPLY_CONTRAST"),s&&je.defines.push("APPLY_HUE"),a&&je.defines.push("APPLY_SATURATION"),c&&je.defines.push("APPLY_GAMMA"),d&&je.defines.push("APPLY_ALPHA"),u&&je.defines.push("APPLY_DAY_NIGHT_ALPHA"),p&&je.defines.push("HAS_WATER_MASK"),g&&(je.defines.push("SHOW_REFLECTIVE_OCEAN"),Ue.defines.push("SHOW_REFLECTIVE_OCEAN")),f&&je.defines.push("SHOW_OCEAN_WAVES"),W&&je.defines.push("APPLY_COLOR_TO_ALPHA"),N&&(Ue.defines.push("UNDERGROUND_COLOR"),je.defines.push("UNDERGROUND_COLOR")),k&&(Ue.defines.push("TRANSLUCENT"),je.defines.push("TRANSLUCENT")),b&&(S?(Ue.defines.push("ENABLE_VERTEX_LIGHTING"),je.defines.push("ENABLE_VERTEX_LIGHTING")):(Ue.defines.push("ENABLE_DAYNIGHT_SHADING"),je.defines.push("ENABLE_DAYNIGHT_SHADING"))),x&&(Ue.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING"),je.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING"),I&&(Ue.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN"),je.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN"))),_&&(Ue.defines.push("GROUND_ATMOSPHERE"),je.defines.push("GROUND_ATMOSPHERE"),E&&(Ue.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE"),je.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE"))),Ue.defines.push("INCLUDE_WEB_MERCATOR_Y"),je.defines.push("INCLUDE_WEB_MERCATOR_Y"),G&&(Ue.defines.push("FOG"),je.defines.push("FOG")),h&&je.defines.push("APPLY_SPLIT"),B&&je.defines.push("ENABLE_CLIPPING_PLANES"),F&&(je.defines.push("ENABLE_CLIPPING_POLYGONS"),Ue.defines.push("ENABLE_CLIPPING_POLYGONS"),P.inverse&&je.defines.push("CLIPPING_INVERSE"),je.defines.push(`CLIPPING_POLYGON_REGIONS_LENGTH ${P.extentsCount}`),Ue.defines.push(`CLIPPING_POLYGON_REGIONS_LENGTH ${P.extentsCount}`)),L&&je.defines.push("COLOR_CORRECT"),V&&je.defines.push("HIGHLIGHT_FILL_TILE"),M&&Ue.defines.push("GEODETIC_SURFACE_NORMALS"),Q&&Ue.defines.push("EXAGGERATION");let it=` vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend) + { + vec4 color = initialColor; +`;T&&(it+=` vec4 cutoutAndColorResult; + bool texelUnclipped; +`);for(let rt=0;rt<i;++rt)T?it+=` cutoutAndColorResult = u_dayTextureCutoutRectangles[${rt}]; + texelUnclipped = v_textureCoordinates.x < cutoutAndColorResult.x || cutoutAndColorResult.z < v_textureCoordinates.x || v_textureCoordinates.y < cutoutAndColorResult.y || cutoutAndColorResult.w < v_textureCoordinates.y; + cutoutAndColorResult = sampleAndBlend( +`:it+=` color = sampleAndBlend( +`,it+=` color, + u_dayTextures[${rt}], + u_dayTextureUseWebMercatorT[${rt}] ? textureCoordinates.xz : textureCoordinates.xy, + u_dayTextureTexCoordsRectangle[${rt}], + u_dayTextureTranslationAndScale[${rt}], + ${d?`u_dayTextureAlpha[${rt}]`:"1.0"}, + ${u?`u_dayTextureNightAlpha[${rt}]`:"1.0"}, + ${u?`u_dayTextureDayAlpha[${rt}]`:"1.0"}, + ${o?`u_dayTextureBrightness[${rt}]`:"0.0"}, + ${r?`u_dayTextureContrast[${rt}]`:"0.0"}, + ${s?`u_dayTextureHue[${rt}]`:"0.0"}, + ${a?`u_dayTextureSaturation[${rt}]`:"0.0"}, + ${c?`u_dayTextureOneOverGamma[${rt}]`:"0.0"}, + ${h?`u_dayTextureSplit[${rt}]`:"0.0"}, + ${W?`u_colorsToAlpha[${rt}]`:"vec4(0.0)"}, + nightBlend); +`,T&&(it+=` color = czm_branchFreeTernary(texelUnclipped, cutoutAndColorResult, color); +`);it+=` return color; + }`,je.sources.push(it),Ue.sources.push(jut(he)),Ue.sources.push(emt(R));let nn=ln.fromCache({context:t.context,vertexShaderSource:Ue,fragmentShaderSource:je,attributeLocations:ee.getAttributeLocations()});Le=De[xe]=new Jut(i,xe,this.material,nn,Te,Be)}return n.surfaceShader=Le,Le.shaderProgram};p7.prototype.destroy=function(){let e,t,n=this._shadersByTexturesFlags;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i];if(!l(o))continue;for(e in o)o.hasOwnProperty(e)&&(t=o[e],l(t)&&t.shaderProgram.destroy())}return me(this)};var GP=p7;var H2i=y(C(),1);var Qwi=y(C(),1),tmt={NONE:-1,PARTIAL:0,FULL:1},Zr=Object.freeze(tmt);var xXi=y(C(),1);var kwi=y(C(),1),nmt={START:0,LOADING:1,DONE:2,FAILED:3},_a=Object.freeze(nmt);var Owi=y(C(),1),imt={FAILED:0,UNLOADED:1,RECEIVING:2,RECEIVED:3,TRANSFORMING:4,TRANSFORMED:5,READY:6},So=Object.freeze(imt);function Ar(){this.imagery=[],this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new ce(0,0,1,1),this.terrainData=void 0,this.vertexArray=void 0,this.tileBoundingRegion=void 0,this.occludeePointInScaledSpace=new m,this.boundingVolumeSourceTile=void 0,this.boundingVolumeIsFromMesh=!1,this.terrainState=So.UNLOADED,this.mesh=void 0,this.fill=void 0,this.pickBoundingSphere=new ue,this.surfaceShader=void 0,this.isClipped=!0,this.clippedByBoundaries=!1}Object.defineProperties(Ar.prototype,{eligibleForUnloading:{get:function(){let e=this.terrainState,n=!(e===So.RECEIVING||e===So.TRANSFORMING),i=this.imagery;for(let o=0,r=i.length;n&&o<r;++o){let s=i[o];n=!l(s.loadingImagery)||s.loadingImagery.state!==Jn.TRANSITIONING}return n}},renderedMesh:{get:function(){if(l(this.vertexArray))return this.mesh;if(l(this.fill))return this.fill.mesh}}});var omt=new ge;function A7(e,t,n,i,o,r){let s=e.getExaggeratedPosition(i,o,r);if(l(t)&&t!==re.SCENE3D){let c=n.ellipsoid.cartesianToCartographic(s,omt);s=n.project(c,r),s=m.fromElements(s.z,s.x,s.y,r)}return s}var rmt=new m,smt=new m,amt=new m;Ar.prototype.pick=function(e,t,n,i,o){let r=this.renderedMesh;if(!l(r))return;let s=r.vertices,a=r.indices,c=r.encoding,d=a.length,u=Number.MAX_VALUE;for(let h=0;h<d;h+=3){let p=a[h],g=a[h+1],f=a[h+2],b=A7(c,t,n,s,p,rmt),x=A7(c,t,n,s,g,smt),I=A7(c,t,n,s,f,amt),_=fi.rayTriangleParametric(e,b,x,I,i);l(_)&&_<u&&_>=0&&(u=_)}return u!==Number.MAX_VALUE?En.getPoint(e,u,o):void 0};Ar.prototype.freeResources=function(){l(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,this.waterMaskTexture.referenceCount===0&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0),this.terrainData=void 0,this.terrainState=So.UNLOADED,this.mesh=void 0,this.fill=this.fill&&this.fill.destroy();let e=this.imagery;for(let t=0,n=e.length;t<n;++t)e[t].freeResources();this.imagery.length=0,this.freeVertexArray()};Ar.prototype.freeVertexArray=function(){Ar._freeVertexArray(this.vertexArray),this.vertexArray=void 0,Ar._freeVertexArray(this.wireframeVertexArray),this.wireframeVertexArray=void 0};Ar.initialize=function(e,t,n){let i=e.data;l(i)||(i=e.data=new Ar),e.state===_a.START&&(cmt(e,t,n),e.state=_a.LOADING)};Ar.processStateMachine=function(e,t,n,i,o,r,s){Ar.initialize(e,n,i);let a=e.data;if(e.state===_a.LOADING&&lmt(e,t,n,i,o,r),s)return;let c=e.renderable;e.renderable=l(a.vertexArray);let d=a.terrainState===So.READY;e.upsampledFromParent=l(a.terrainData)&&a.terrainData.wasCreatedByUpsampling();let u=a.processImagery(e,n,t);if(d&&u){let h=e._loadedCallbacks,p={};for(let g in h)h.hasOwnProperty(g)&&(h[g](e)||(p[g]=h[g]));e._loadedCallbacks=p,e.state=_a.DONE}c&&(e.renderable=!0)};Ar.prototype.processImagery=function(e,t,n,i){let o=e.data,r=e.upsampledFromParent,s=!1,a=!0,c=o.imagery,d,u;for(d=0,u=c.length;d<u;++d){let h=c[d];if(!l(h.loadingImagery)){r=!1;continue}if(h.loadingImagery.state===Jn.PLACEHOLDER){let g=h.loadingImagery.imageryLayer;if(g.ready){h.freeResources(),c.splice(d,1),g._createTileImagerySkeletons(e,t,d),--d,u=c.length;continue}else r=!1}let p=h.processStateMachine(e,n,i);a=a&&p,s=s||p||l(h.readyImagery),r=r&&l(h.loadingImagery)&&(h.loadingImagery.state===Jn.FAILED||h.loadingImagery.state===Jn.INVALID)}return e.upsampledFromParent=r,e.renderable=e.renderable&&(s||a),a};function SCe(e,t,n,i){let o=e.renderedMesh,r=o.vertices,s=o.encoding,a=r.length/s.stride,c=Kc.clone(s);c.hasGeodeticSurfaceNormals=t,c=Kc.clone(c);let d=c.stride,u=new Float32Array(a*d);t?s.addGeodeticSurfaceNormals(r,u,n):s.removeGeodeticSurfaceNormals(r,u),o.vertices=u,o.stride=d,o!==e.mesh?(Ar._freeVertexArray(e.fill.vertexArray),e.fill.vertexArray=Ar._createVertexArrayForMesh(i.context,o)):(Ar._freeVertexArray(e.vertexArray),e.vertexArray=Ar._createVertexArrayForMesh(i.context,o)),Ar._freeVertexArray(e.wireframeVertexArray),e.wireframeVertexArray=void 0}Ar.prototype.addGeodeticSurfaceNormals=function(e,t){SCe(this,!0,e,t)};Ar.prototype.removeGeodeticSurfaceNormals=function(e){SCe(this,!1,void 0,e)};Ar.prototype.updateExaggeration=function(e,t,n){let i=this,o=i.renderedMesh;if(o===void 0)return;let r=t.verticalExaggeration,s=t.verticalExaggerationRelativeHeight,a=r!==1,c=o.encoding,d=c.exaggeration!==r,u=c.exaggerationRelativeHeight!==s;if(d||u){if(d)if(a&&!c.hasGeodeticSurfaceNormals){let h=e.tilingScheme.ellipsoid;i.addGeodeticSurfaceNormals(h,t)}else!a&&c.hasGeodeticSurfaceNormals&&i.removeGeodeticSurfaceNormals(t);if(c.exaggeration=r,c.exaggerationRelativeHeight=s,n!==void 0){n._tileToUpdateHeights.push(e);let h=e.customData,p=h.length;for(let g=0;g<p;g++){let f=h[g];f.level=-1}}}};function cmt(e,t,n){let i=t.getTileDataAvailable(e.x,e.y,e.level);if(!l(i)&&l(e.parent)){let o=e.parent,r=o.data;l(r)&&l(r.terrainData)&&(i=r.terrainData.isChildAvailable(o.x,o.y,e.x,e.y))}i===!1&&(e.data.terrainState=So.FAILED);for(let o=0,r=n.length;o<r;++o){let s=n.get(o);s.show&&s._createTileImagerySkeletons(e,t)}}function lmt(e,t,n,i,o,r){let s=e.data,a=e.parent;if(s.terrainState===So.FAILED&&a!==void 0&&(a.data!==void 0&&a.data.terrainData!==void 0&&a.data.terrainData.canUpsample!==!1||Ar.processStateMachine(a,t,n,i,o,r,!0)),s.terrainState===So.FAILED&&dmt(s,e,t,n,e.x,e.y,e.level),s.terrainState===So.UNLOADED&&umt(s,n,e.x,e.y,e.level),s.terrainState===So.RECEIVED&&hmt(s,t,n,e.x,e.y,e.level),s.terrainState===So.TRANSFORMED&&(fmt(s,t.context,n,e.x,e.y,e.level,r),s.updateExaggeration(e,t,o)),s.terrainState>=So.RECEIVED&&s.waterMaskTexture===void 0&&n.hasWaterMask)if(s.terrainData.waterMask!==void 0)Amt(t.context,s);else{let d=s._findAncestorTileWithTerrainData(e);l(d)&&l(d.data.waterMaskTexture)&&(s.waterMaskTexture=d.data.waterMaskTexture,++s.waterMaskTexture.referenceCount,s._computeWaterMaskTranslationAndScale(e,d,s.waterMaskTranslationAndScale))}}function dmt(e,t,n,i,o,r,s){let a=t.parent;if(!a){t.state=_a.FAILED;return}let c=a.data.terrainData,d=a.x,u=a.y,h=a.level;if(!l(c))return;let p=c.upsample(i.tilingScheme,d,u,h,o,r,s);l(p)&&(e.terrainState=So.RECEIVING,Promise.resolve(p).then(function(g){l(g)&&(e.terrainData=g,e.terrainState=So.RECEIVED)}).catch(function(){e.terrainState=So.FAILED}))}function umt(e,t,n,i,o){function r(c){if(!l(c)){e.terrainState=So.UNLOADED,e.request=void 0;return}e.terrainData=c,e.terrainState=So.RECEIVED,e.request=void 0}function s(c){if(e.request.state===mi.CANCELLED){e.terrainData=void 0,e.terrainState=So.UNLOADED,e.request=void 0;return}e.terrainState=So.FAILED,e.request=void 0;let d=`Failed to obtain terrain tile X: ${n} Y: ${i} Level: ${o}. Error message: "${c}"`;t._requestError=vo.reportError(t._requestError,t,t.errorEvent,d,n,i,o),t._requestError.retry&&a()}function a(){let c=new sr({throttle:!1,throttleByServer:!0,type:Zs.TERRAIN});e.request=c;let d=t.requestTileGeometry(n,i,o,c);l(d)?(e.terrainState=So.RECEIVING,Promise.resolve(d).then(function(u){r(u)}).catch(function(u){s(u)})):(e.terrainState=So.UNLOADED,e.request=void 0)}a()}var mmt={tilingScheme:void 0,x:0,y:0,level:0,exaggeration:1,exaggerationRelativeHeight:0,throttle:!0};function hmt(e,t,n,i,o,r){let s=n.tilingScheme,a=mmt;a.tilingScheme=s,a.x=i,a.y=o,a.level=r,a.exaggeration=t.verticalExaggeration,a.exaggerationRelativeHeight=t.verticalExaggerationRelativeHeight,a.throttle=!0;let d=e.terrainData.createMesh(a);l(d)&&(e.terrainState=So.TRANSFORMING,Promise.resolve(d).then(function(u){e.mesh=u,e.terrainState=So.TRANSFORMED}).catch(function(){e.terrainState=So.FAILED}))}Ar._createVertexArrayForMesh=function(e,t){let n=t.vertices,i=It.createVertexBuffer({context:e,typedArray:n,usage:Ne.STATIC_DRAW}),o=t.encoding.getAttributes(i),r=t.indices.indexBuffers||{},s=r[e.id];if(!l(s)||s.isDestroyed()){let a=t.indices;s=It.createIndexBuffer({context:e,typedArray:a,usage:Ne.STATIC_DRAW,indexDatatype:Me.fromSizeInBytes(a.BYTES_PER_ELEMENT)}),s.vertexArrayDestroyable=!1,s.referenceCount=1,r[e.id]=s,t.indices.indexBuffers=r}else++s.referenceCount;return new ui({context:e,attributes:o,indexBuffer:s})};Ar._freeVertexArray=function(e){if(l(e)){let t=e.indexBuffer;e.isDestroyed()||e.destroy(),l(t)&&!t.isDestroyed()&&l(t.referenceCount)&&(--t.referenceCount,t.referenceCount===0&&t.destroy())}};function fmt(e,t,n,i,o,r,s){e.vertexArray=Ar._createVertexArrayForMesh(t,e.mesh),e.terrainState=So.READY,e.fill=e.fill&&e.fill.destroy(s)}function pmt(e){let t=e.cache.tile_waterMaskData;if(!l(t)){let n=Wt.create({context:e,pixelFormat:tt.LUMINANCE,pixelDatatype:Ye.UNSIGNED_BYTE,source:{arrayBufferView:new Uint8Array([255]),width:1,height:1}});n.referenceCount=1;let i=new sn({wrapS:Ln.CLAMP_TO_EDGE,wrapT:Ln.CLAMP_TO_EDGE,minificationFilter:en.LINEAR,magnificationFilter:pi.LINEAR});t={allWaterTexture:n,sampler:i,destroy:function(){this.allWaterTexture.destroy()}},e.cache.tile_waterMaskData=t}return t}function Amt(e,t){let n=t.terrainData.waterMask,i=pmt(e),o,r=n.length;if(r===1)if(n[0]!==0)o=i.allWaterTexture;else return;else{let s=Math.sqrt(r);o=Wt.create({context:e,pixelFormat:tt.LUMINANCE,pixelDatatype:Ye.UNSIGNED_BYTE,source:{width:s,height:s,arrayBufferView:n},sampler:i.sampler,flipY:!1}),o.referenceCount=0}++o.referenceCount,t.waterMaskTexture=o,ce.fromElements(0,0,1,1,t.waterMaskTranslationAndScale)}Ar.prototype._findAncestorTileWithTerrainData=function(e){let t=e.parent;for(;l(t)&&(!l(t.data)||!l(t.data.terrainData)||t.data.terrainData.wasCreatedByUpsampling());)t=t.parent;return t};Ar.prototype._computeWaterMaskTranslationAndScale=function(e,t,n){let i=t.rectangle,o=e.rectangle,r=o.width,s=o.height,a=r/i.width,c=s/i.height;return n.x=a*(o.west-i.west)/r,n.y=c*(o.south-i.south)/s,n.z=a,n.w=c,n};var Pm=Ar;var HXi=y(C(),1);var _Xi=y(C(),1),gmt={WEST:0,NORTH:1,EAST:2,SOUTH:3,NORTHWEST:4,NORTHEAST:5,SOUTHWEST:6,SOUTHEAST:7},Rn=gmt;var TXi=y(C(),1),LCe={NONE:0,CULLED:1,RENDERED:2,REFINED:3,RENDERED_AND_KICKED:6,REFINED_AND_KICKED:7,CULLED_BUT_NEEDED:9,wasKicked:function(e){return e>=LCe.RENDERED_AND_KICKED},originalResult:function(e){return e&3},kick:function(e){return e|4}},li=LCe;function iL(e){this.tile=e,this.frameLastUpdated=void 0,this.westMeshes=[],this.westTiles=[],this.southMeshes=[],this.southTiles=[],this.eastMeshes=[],this.eastTiles=[],this.northMeshes=[],this.northTiles=[],this.southwestMesh=void 0,this.southwestTile=void 0,this.southeastMesh=void 0,this.southeastTile=void 0,this.northwestMesh=void 0,this.northwestTile=void 0,this.northeastMesh=void 0,this.northeastTile=void 0,this.changedThisFrame=!0,this.visitedFrame=void 0,this.enqueuedFrame=void 0,this.mesh=void 0,this.vertexArray=void 0,this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new ce}iL.prototype.update=function(e,t,n){this.changedThisFrame&&(XCe(e,t,this.tile,n),this.changedThisFrame=!1)};iL.prototype.destroy=function(e){this._destroyVertexArray(e),l(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,this.waterMaskTexture.referenceCount===0&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0)};iL.prototype._destroyVertexArray=function(e){l(this.vertexArray)&&(l(e)?e.push(this.vertexArray):Pm._freeVertexArray(this.vertexArray),this.vertexArray=void 0)};var bmt=new Jb;iL.updateFillTiles=function(e,t,n,i){let o=e._quadtree,r=o._levelZeroTiles,s=o._lastSelectionFrameNumber,a=bmt;a.clear();for(let d=0;d<t.length;++d){let u=t[d];l(u.data.vertexArray)&&a.enqueue(t[d])}let c=a.dequeue();for(;c!==void 0;){let d=c.findTileToWest(r),u=c.findTileToSouth(r),h=c.findTileToEast(r),p=c.findTileToNorth(r);ia(e,n,c,d,s,Rn.EAST,!1,a,i),ia(e,n,c,u,s,Rn.NORTH,!1,a,i),ia(e,n,c,h,s,Rn.WEST,!1,a,i),ia(e,n,c,p,s,Rn.SOUTH,!1,a,i);let g=d.findTileToNorth(r),f=d.findTileToSouth(r),b=h.findTileToNorth(r),x=h.findTileToSouth(r);ia(e,n,c,g,s,Rn.SOUTHEAST,!1,a,i),ia(e,n,c,b,s,Rn.SOUTHWEST,!1,a,i),ia(e,n,c,f,s,Rn.NORTHEAST,!1,a,i),ia(e,n,c,x,s,Rn.NORTHWEST,!1,a,i),c=a.dequeue()}};function ia(e,t,n,i,o,r,s,a,c){if(i===void 0)return;let d=i;for(;d&&(d._lastSelectionResultFrame!==o||li.wasKicked(d._lastSelectionResult)||li.originalResult(d._lastSelectionResult)===li.CULLED);){if(s)return;let u=d.parent;if(r>=Rn.NORTHWEST&&u!==void 0)switch(r){case Rn.NORTHWEST:d=d===u.northwestChild?u:void 0;break;case Rn.NORTHEAST:d=d===u.northeastChild?u:void 0;break;case Rn.SOUTHWEST:d=d===u.southwestChild?u:void 0;break;case Rn.SOUTHEAST:d=d===u.southeastChild?u:void 0;break}else d=u}if(d!==void 0){if(d._lastSelectionResult===li.RENDERED){if(l(d.data.vertexArray))return;ymt(e,t,n,d,r,o,a,c);return}if(li.originalResult(i._lastSelectionResult)!==li.CULLED)switch(r){case Rn.WEST:ia(e,t,n,i.northwestChild,o,r,!0,a,c),ia(e,t,n,i.southwestChild,o,r,!0,a,c);break;case Rn.EAST:ia(e,t,n,i.southeastChild,o,r,!0,a,c),ia(e,t,n,i.northeastChild,o,r,!0,a,c);break;case Rn.SOUTH:ia(e,t,n,i.southwestChild,o,r,!0,a,c),ia(e,t,n,i.southeastChild,o,r,!0,a,c);break;case Rn.NORTH:ia(e,t,n,i.northeastChild,o,r,!0,a,c),ia(e,t,n,i.northwestChild,o,r,!0,a,c);break;case Rn.NORTHWEST:ia(e,t,n,i.northwestChild,o,r,!0,a,c);break;case Rn.NORTHEAST:ia(e,t,n,i.northeastChild,o,r,!0,a,c);break;case Rn.SOUTHWEST:ia(e,t,n,i.southwestChild,o,r,!0,a,c);break;case Rn.SOUTHEAST:ia(e,t,n,i.southeastChild,o,r,!0,a,c);break;default:throw new Ae("Invalid edge")}}}function ymt(e,t,n,i,o,r,s,a){let c=i.data;if(c.fill===void 0)c.fill=new iL(i);else if(c.fill.visitedFrame===r)return;c.fill.enqueuedFrame!==r&&(c.fill.enqueuedFrame=r,c.fill.changedThisFrame=!1,s.enqueue(i)),Cmt(e,t,n,i,o,a)}function Cmt(e,t,n,i,o,r){let s=i.data.fill,a,c=n.data.fill;l(c)?(c.visitedFrame=t.frameNumber,c.changedThisFrame&&(XCe(e,t,n,r),c.changedThisFrame=!1),a=n.data.fill.mesh):a=n.data.mesh;let d,u;switch(o){case Rn.WEST:d=s.westMeshes,u=s.westTiles;break;case Rn.SOUTH:d=s.southMeshes,u=s.southTiles;break;case Rn.EAST:d=s.eastMeshes,u=s.eastTiles;break;case Rn.NORTH:d=s.northMeshes,u=s.northTiles;break;case Rn.NORTHWEST:s.changedThisFrame=s.changedThisFrame||s.northwestMesh!==a,s.northwestMesh=a,s.northwestTile=n;return;case Rn.NORTHEAST:s.changedThisFrame=s.changedThisFrame||s.northeastMesh!==a,s.northeastMesh=a,s.northeastTile=n;return;case Rn.SOUTHWEST:s.changedThisFrame=s.changedThisFrame||s.southwestMesh!==a,s.southwestMesh=a,s.southwestTile=n;return;case Rn.SOUTHEAST:s.changedThisFrame=s.changedThisFrame||s.southeastMesh!==a,s.southeastMesh=a,s.southeastTile=n;return}if(n.level<=i.level){s.changedThisFrame=s.changedThisFrame||d[0]!==a||d.length!==1,d[0]=a,u[0]=n,d.length=1,u.length=1;return}let h,p,g,f,b=n.rectangle,x,I=i.rectangle;switch(o){case Rn.WEST:for(x=(I.north-I.south)*Z.EPSILON5,h=0;h<u.length&&(g=u[h],f=g.rectangle,!Z.greaterThan(b.north,f.south,x));++h);for(p=h;p<u.length&&(g=u[p],f=g.rectangle,!Z.greaterThanOrEquals(b.south,f.north,x));++p);break;case Rn.SOUTH:for(x=(I.east-I.west)*Z.EPSILON5,h=0;h<u.length&&(g=u[h],f=g.rectangle,!Z.lessThan(b.west,f.east,x));++h);for(p=h;p<u.length&&(g=u[p],f=g.rectangle,!Z.lessThanOrEquals(b.east,f.west,x));++p);break;case Rn.EAST:for(x=(I.north-I.south)*Z.EPSILON5,h=0;h<u.length&&(g=u[h],f=g.rectangle,!Z.lessThan(b.south,f.north,x));++h);for(p=h;p<u.length&&(g=u[p],f=g.rectangle,!Z.lessThanOrEquals(b.north,f.south,x));++p);break;case Rn.NORTH:for(x=(I.east-I.west)*Z.EPSILON5,h=0;h<u.length&&(g=u[h],f=g.rectangle,!Z.greaterThan(b.east,f.west,x));++h);for(p=h;p<u.length&&(g=u[p],f=g.rectangle,!Z.greaterThanOrEquals(b.west,f.east,x));++p);break}p-h===1?(s.changedThisFrame=s.changedThisFrame||d[h]!==a,d[h]=a,u[h]=n):(s.changedThisFrame=!0,d.splice(h,p-h,a),u.splice(h,p-h,n))}var SI=new ge,xmt=new ge,nL=new m,C7=new m,g7=new D,b7=new D,Iu=new D;function Rk(){this.height=0,this.encodedNormal=new D}function Ik(e,t,n,i,o,r,s,a,c){if(l(o))return o;let d;if(l(r)&&l(s))d=(r.height+s.height)*.5;else if(l(r))d=r.height;else if(l(s))d=s.height;else if(l(a))d=a.height;else{let h=e.tile.data.tileBoundingRegion,p=0,g=0;l(h)&&(p=h.minimumHeight,g=h.maximumHeight),d=(p+g)*.5}return WCe(e,t,n,i,d,c),c}var Imt={minimumHeight:0,maximumHeight:0},_mt=new m,RCe=new Rk,VCe=new Rk,GCe=new Rk,ZCe=new Rk,Emt=typeof Uint8Array<"u"?new Uint8Array(81):void 0,Tmt={tilingScheme:void 0,x:0,y:0,level:0,exaggeration:1,exaggerationRelativeHeight:0};function XCe(e,t,n,i){Pm.initialize(n,e.terrainProvider,e._imageryLayers);let o=n.data,r=o.fill,s=n.rectangle,a=t.verticalExaggeration,c=t.verticalExaggerationRelativeHeight,d=a!==1,u=n.tilingScheme.ellipsoid,h=Ek(r,u,0,1,r.northwestTile,r.northwestMesh,r.northTiles,r.northMeshes,r.westTiles,r.westMeshes,GCe),p=Ek(r,u,0,0,r.southwestTile,r.southwestMesh,r.westTiles,r.westMeshes,r.southTiles,r.southMeshes,RCe),g=Ek(r,u,1,0,r.southeastTile,r.southeastMesh,r.southTiles,r.southMeshes,r.eastTiles,r.eastMeshes,VCe),f=Ek(r,u,1,1,r.northeastTile,r.northeastMesh,r.eastTiles,r.eastMeshes,r.northTiles,r.northMeshes,ZCe);h=Ik(r,u,0,1,h,p,f,g,GCe),p=Ik(r,u,0,0,p,h,g,f,RCe),g=Ik(r,u,1,1,g,p,f,h,VCe),f=Ik(r,u,1,1,f,g,h,p,ZCe);let b=p.height,x=g.height,I=h.height,_=f.height,E=Math.min(b,x,I,_),S=Math.max(b,x,I,_),R=(E+S)*.5,G,B,w=e.getLevelMaximumGeometricError(n.level),F=u.maximumRadius-w,P=Math.acos(F/u.maximumRadius)*4;if(P*=1.5,s.width>P&&S-E<=w){let L=new yc({width:9,height:9,buffer:Emt,structure:{heightOffset:S}}),V=Tmt;V.tilingScheme=n.tilingScheme,V.x=n.x,V.y=n.y,V.level=n.level,V.exaggeration=a,V.exaggerationRelativeHeight=c,r.mesh=L._createMeshSync(V)}else{let L=d,V=le.center(s,xmt);V.height=R;let W=u.cartographicToCartesian(V,_mt),M=new Kc(W,void 0,void 0,void 0,void 0,!0,!0,L,a,c),Q=5,N;for(N=r.westMeshes,G=0,B=N.length;G<B;++G)Q+=N[G].eastIndicesNorthToSouth.length;for(N=r.southMeshes,G=0,B=N.length;G<B;++G)Q+=N[G].northIndicesWestToEast.length;for(N=r.eastMeshes,G=0,B=N.length;G<B;++G)Q+=N[G].westIndicesSouthToNorth.length;for(N=r.northMeshes,G=0,B=N.length;G<B;++G)Q+=N[G].southIndicesEastToWest.length;let k=Imt;k.minimumHeight=E,k.maximumHeight=S;let v=M.stride,O=new Float32Array(Q*v),H=0,ee=H;H=_k(u,s,M,O,H,0,1,h.height,h.encodedNormal,1,k),H=Sk(r,u,M,O,H,r.westTiles,r.westMeshes,Rn.EAST,k);let K=H;H=_k(u,s,M,O,H,0,0,p.height,p.encodedNormal,0,k),H=Sk(r,u,M,O,H,r.southTiles,r.southMeshes,Rn.NORTH,k);let te=H;H=_k(u,s,M,O,H,1,0,g.height,g.encodedNormal,0,k),H=Sk(r,u,M,O,H,r.eastTiles,r.eastMeshes,Rn.WEST,k);let q=H;H=_k(u,s,M,O,H,1,1,f.height,f.encodedNormal,1,k),H=Sk(r,u,M,O,H,r.northTiles,r.northMeshes,Rn.SOUTH,k),E=k.minimumHeight,S=k.maximumHeight;let pe=vn.fromRectangle(s,E,S,n.tilingScheme.ellipsoid),ye=Ui.geodeticLatitudeToMercatorAngle(s.south),he=1/(Ui.geodeticLatitudeToMercatorAngle(s.north)-ye),xe=(Ui.geodeticLatitudeToMercatorAngle(V.latitude)-ye)*he,Te=u.geodeticSurfaceNormalCartographic(SI,C7),Be=Mn.octEncode(Te,g7),Le=H;M.encode(O,H*v,pe.center,D.fromElements(.5,.5,Iu),R,Be,xe,Te),++H;let De=H,Ue=De<256?1:2,je=(De-1)*3,it=je*Ue,nn=(O.length-De*v)*Float32Array.BYTES_PER_ELEMENT,rt;if(nn>=it){let vt=De*v*Float32Array.BYTES_PER_ELEMENT;rt=De<256?new Uint8Array(O.buffer,vt,je):new Uint16Array(O.buffer,vt,je)}else rt=De<256?new Uint8Array(je):new Uint16Array(je);O=new Float32Array(O.buffer,0,De*v);let rn=0;for(G=0;G<De-2;++G)rt[rn++]=Le,rt[rn++]=G,rt[rn++]=G+1;rt[rn++]=Le,rt[rn++]=G,rt[rn++]=0;let Jt=[];for(G=K;G>=ee;--G)Jt.push(G);let Xt=[];for(G=te;G>=K;--G)Xt.push(G);let Li=[];for(G=q;G>=te;--G)Li.push(G);let bi=[];for(bi.push(0),G=Le-1;G>=q;--G)bi.push(G);r.mesh=new Fm(M.center,O,rt,je,De,E,S,ue.fromOrientedBoundingBox(pe),Bmt(e,pe.center,s,E,S),M.stride,pe,M,Jt,Xt,Li,bi)}let A=t.context;r._destroyVertexArray(i),r.vertexArray=Pm._createVertexArrayForMesh(A,r.mesh),o.processImagery(n,e.terrainProvider,t,!0);let T=r.waterMaskTexture;if(r.waterMaskTexture=void 0,e.terrainProvider.hasWaterMask){let L=o._findAncestorTileWithTerrainData(n);l(L)&&l(L.data.waterMaskTexture)&&(r.waterMaskTexture=L.data.waterMaskTexture,++r.waterMaskTexture.referenceCount,o._computeWaterMaskTranslationAndScale(n,L,r.waterMaskTranslationAndScale))}l(T)&&(--T.referenceCount,T.referenceCount===0&&T.destroy())}function _k(e,t,n,i,o,r,s,a,c,d,u){let h=SI;h.longitude=Z.lerp(t.west,t.east,r),h.latitude=Z.lerp(t.south,t.north,s),h.height=a;let p=e.cartographicToCartesian(h,nL),g;n.hasGeodeticSurfaceNormals&&(g=e.geodeticSurfaceNormal(p,C7));let f=b7;return f.x=r,f.y=s,n.encode(i,o*n.stride,p,f,a,c,d,g),u.minimumHeight=Math.min(u.minimumHeight,a),u.maximumHeight=Math.max(u.maximumHeight,a),o+1}var Lk=new le;function ZP(e,t,n,i){let o=e.rectangle,r=t.rectangle;t.x===0&&n.x===1&&e.x===e.tilingScheme.getNumberOfXTilesAtLevel(e.level)-1?(o=le.clone(e.rectangle,Lk),o.west-=Z.TWO_PI,o.east-=Z.TWO_PI):e.x===0&&n.x===0&&t.x===t.tilingScheme.getNumberOfXTilesAtLevel(t.level)-1&&(o=le.clone(e.rectangle,Lk),o.west+=Z.TWO_PI,o.east+=Z.TWO_PI);let s=o.east-o.west,a=(r.west-o.west)/s,c=(r.east-o.west)/s,d=o.north-o.south,u=(r.south-o.south)/d,h=(r.north-o.south)/d,p=(n.x-a)/(c-a),g=(n.y-u)/(h-u);return Math.abs(p)<Math.EPSILON5?p=0:Math.abs(p-1)<Math.EPSILON5&&(p=1),Math.abs(g)<Math.EPSILON5?g=0:Math.abs(g-1)<Math.EPSILON5&&(g=1),i.x=p,i.y=g,i}var Smt=new D;function y7(e,t,n,i,o){let r=e.encoding,s=e.vertices;if(o.height=r.decodeHeight(s,t),r.hasVertexNormals)r.getOctEncodedNormal(s,t,o.encodedNormal);else{let a=o.encodedNormal;a.x=0,a.y=0}}var Lmt=new D,Rmt=new m;function Vmt(e,t,n,i,o,r,s,a,c,d){let u=i.encoding,h=i.vertices,p=ZP(t,n,u.decodeTextureCoordinates(h,o,Iu),Iu),g=ZP(t,n,u.decodeTextureCoordinates(h,r,b7),b7),f;c?f=(s-p.x)/(g.x-p.x):f=(a-p.y)/(g.y-p.y);let b=u.decodeHeight(h,o),x=u.decodeHeight(h,r),I=n.rectangle;SI.longitude=Z.lerp(I.west,I.east,s),SI.latitude=Z.lerp(I.south,I.north,a),d.height=SI.height=Z.lerp(b,x,f);let _;if(u.hasVertexNormals){let E=u.getOctEncodedNormal(h,o,Smt),S=u.getOctEncodedNormal(h,r,Lmt),R=Mn.octDecode(E.x,E.y,nL),G=Mn.octDecode(S.x,S.y,Rmt);_=m.lerp(R,G,f,nL),m.normalize(_,_),Mn.octEncode(_,d.encodedNormal)}else _=e.geodeticSurfaceNormalCartographic(SI,nL),Mn.octEncode(_,d.encodedNormal)}function WCe(e,t,n,i,o,r){r.height=o;let s=t.geodeticSurfaceNormalCartographic(SI,nL);Mn.octEncode(s,r.encodedNormal)}function Ek(e,t,n,i,o,r,s,a,c,d,u){if(wCe(e,t,a,s,!1,n,i,u)||wCe(e,t,d,c,!0,n,i,u))return u;let p;if(x7(o,r))return n===0?i===0?p=r.eastIndicesNorthToSouth[0]:p=r.southIndicesEastToWest[0]:i===0?p=r.northIndicesWestToEast[0]:p=r.westIndicesSouthToNorth[0],y7(r,p,n,i,u),u;let g;if(n===0?i===0?g=Tk(e.westMeshes,e.westTiles,Rn.EAST,e.southMeshes,e.southTiles,Rn.NORTH,n,i):g=Tk(e.northMeshes,e.northTiles,Rn.SOUTH,e.westMeshes,e.westTiles,Rn.EAST,n,i):i===0?g=Tk(e.southMeshes,e.southTiles,Rn.NORTH,e.eastMeshes,e.eastTiles,Rn.WEST,n,i):g=Tk(e.eastMeshes,e.eastTiles,Rn.WEST,e.northMeshes,e.northTiles,Rn.SOUTH,n,i),l(g))return WCe(e,t,n,i,g,u),u}function Tk(e,t,n,i,o,r,s,a){let c=BCe(e,t,!1,n,s,a),d=BCe(i,o,!0,r,s,a);return l(c)&&l(d)?(c+d)*.5:l(c)?c:d}function Sk(e,t,n,i,o,r,s,a,c){for(let d=0;d<r.length;++d)o=Gmt(e,t,n,i,o,r[d],s[d],a,c);return o}function Gmt(e,t,n,i,o,r,s,a,c){let d=r.rectangle;a===Rn.EAST&&e.tile.x===0?(d=le.clone(r.rectangle,Lk),d.west-=Z.TWO_PI,d.east-=Z.TWO_PI):a===Rn.WEST&&r.x===0&&(d=le.clone(r.rectangle,Lk),d.west+=Z.TWO_PI,d.east+=Z.TWO_PI);let u=e.tile.rectangle,h,p;o>0&&(n.decodeTextureCoordinates(i,o-1,Iu),h=Iu.x,p=Iu.y);let g,f;switch(a){case Rn.WEST:g=s.westIndicesSouthToNorth,f=!1;break;case Rn.NORTH:g=s.northIndicesWestToEast,f=!0;break;case Rn.EAST:g=s.eastIndicesNorthToSouth,f=!1;break;case Rn.SOUTH:g=s.southIndicesEastToWest,f=!0;break}let b=r,x=e.tile,I=s.encoding,_=s.vertices,E=n.stride,S,R;I.hasWebMercatorT&&(S=Ui.geodeticLatitudeToMercatorAngle(u.south),R=1/(Ui.geodeticLatitudeToMercatorAngle(u.north)-S));for(let G=0;G<g.length;++G){let B=g[G],w=I.decodeTextureCoordinates(_,B,Iu);ZP(b,x,w,w);let F=w.x,P=w.y,A=f?F:P;if(A<0||A>1||Math.abs(F-h)<Z.EPSILON5&&Math.abs(P-p)<Z.EPSILON5)continue;let T=Math.abs(F)<Z.EPSILON5||Math.abs(F-1)<Z.EPSILON5,L=Math.abs(P)<Z.EPSILON5||Math.abs(P-1)<Z.EPSILON5;if(T&&L)continue;let V=I.decodePosition(_,B,nL),W=I.decodeHeight(_,B),M;I.hasVertexNormals?M=I.getOctEncodedNormal(_,B,g7):(M=g7,M.x=0,M.y=0);let Q=P;if(I.hasWebMercatorT){let k=Z.lerp(u.south,u.north,P);Q=(Ui.geodeticLatitudeToMercatorAngle(k)-S)*R}let N;n.hasGeodeticSurfaceNormals&&(N=t.geodeticSurfaceNormal(V,C7)),n.encode(i,o*E,V,w,W,M,Q,N),c.minimumHeight=Math.min(c.minimumHeight,W),c.maximumHeight=Math.max(c.maximumHeight,W),++o}return o}function BCe(e,t,n,i,o,r){let s,a,c;n?(s=0,a=e.length,c=1):(s=e.length-1,a=-1,c=-1);for(let d=s;d!==a;d+=c){let u=e[d],h=t[d];if(!x7(h,u))continue;let p;switch(i){case Rn.WEST:p=u.westIndicesSouthToNorth;break;case Rn.SOUTH:p=u.southIndicesEastToWest;break;case Rn.EAST:p=u.eastIndicesNorthToSouth;break;case Rn.NORTH:p=u.northIndicesWestToEast;break}let g=p[n?0:p.length-1];if(l(g))return u.encoding.decodeHeight(u.vertices,g)}}function x7(e,t){return l(t)&&(!l(e.data.fill)||!e.data.fill.changedThisFrame)}function wCe(e,t,n,i,o,r,s,a){let c,d,u,h,p,g=i[o?0:n.length-1],f=n[o?0:n.length-1];if(x7(g,f)&&(r===0?s===0?(c=o?f.northIndicesWestToEast:f.eastIndicesNorthToSouth,d=o,u=o):(c=o?f.eastIndicesNorthToSouth:f.southIndicesEastToWest,d=!o,u=!1):s===0?(c=o?f.westIndicesSouthToNorth:f.northIndicesWestToEast,d=!o,u=!0):(c=o?f.southIndicesEastToWest:f.westIndicesSouthToNorth,d=o,u=!o),c.length>0)){h=o?0:c.length-1,p=c[h],f.encoding.decodeTextureCoordinates(f.vertices,p,Iu);let b=ZP(g,e.tile,Iu,Iu);if(b.x===r&&b.y===s)return y7(f,p,r,s,a),!0;if(h=Yo(c,d?r:s,function(x,I){f.encoding.decodeTextureCoordinates(f.vertices,x,Iu);let _=ZP(g,e.tile,Iu,Iu);return u?d?_.x-r:_.y-s:d?r-_.x:s-_.y}),h<0){if(h=~h,h>0&&h<c.length)return Vmt(t,g,e.tile,f,c[h-1],c[h],r,s,d,a),!0}else return y7(f,c[h],r,s,a),!0}return!1}var Zmt=[new m,new m,new m,new m];function Bmt(e,t,n,i,o,r){let s=e.quadtree._occluders.ellipsoid,a=s.ellipsoid,c=Zmt;return m.fromRadians(n.west,n.south,o,a,c[0]),m.fromRadians(n.east,n.south,o,a,c[1]),m.fromRadians(n.west,n.north,o,a,c[2]),m.fromRadians(n.east,n.north,o,a,c[3]),s.computeHorizonCullingPointPossiblyUnderEllipsoid(t,c,i,r)}var oL=iL;function gr(e){this.lightingFadeOutDistance=65e5,this.lightingFadeInDistance=9e6,this.hasWaterMask=!1,this.showWaterEffect=!1,this.oceanNormalMap=void 0,this.zoomedOutOceanSpecularIntensity=.5,this.enableLighting=!1,this.dynamicAtmosphereLighting=!1,this.dynamicAtmosphereLightingFromSun=!1,this.showGroundAtmosphere=!1,this.shadows=Gn.RECEIVE_ONLY,this.vertexShadowDarkness=.3,this.fillHighlightColor=void 0,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this.showSkirts=!0,this.backFaceCulling=!0,this.undergroundColor=void 0,this.undergroundColorAlphaByDistance=void 0,this.lambertDiffuseMultiplier=0,this.materialUniformMap=void 0,this._materialUniformMap=void 0,this._quadtree=void 0,this._terrainProvider=e.terrainProvider,this._imageryLayers=e.imageryLayers,this._surfaceShaderSet=e.surfaceShaderSet,this._renderState=void 0,this._blendRenderState=void 0,this._disableCullingRenderState=void 0,this._disableCullingBlendRenderState=void 0,this._errorEvent=new Ce,this._removeLayerAddedListener=this._imageryLayers.layerAdded.addEventListener(gr.prototype._onLayerAdded,this),this._removeLayerRemovedListener=this._imageryLayers.layerRemoved.addEventListener(gr.prototype._onLayerRemoved,this),this._removeLayerMovedListener=this._imageryLayers.layerMoved.addEventListener(gr.prototype._onLayerMoved,this),this._removeLayerShownListener=this._imageryLayers.layerShownOrHidden.addEventListener(gr.prototype._onLayerShownOrHidden,this),this._imageryLayersUpdatedEvent=new Ce,this._layerOrderChanged=!1,this._tilesToRenderByTextureCount=[],this._drawCommands=[],this._uniformMaps=[],this._usedDrawCommands=0,this._vertexArraysToDestroy=[],this._debug={wireframe:!1,boundingSphereTile:void 0},this._baseColor=void 0,this._firstPassInitialColor=void 0,this.baseColor=new U(0,0,.5,1),this._clippingPlanes=void 0,this._clippingPolygons=void 0,this.cartographicLimitRectangle=le.clone(le.MAX_VALUE),this._hasLoadedTilesThisFrame=!1,this._hasFillTilesThisFrame=!1,this._oldVerticalExaggeration=void 0,this._oldVerticalExaggerationRelativeHeight=void 0}Object.defineProperties(gr.prototype,{baseColor:{get:function(){return this._baseColor},set:function(e){this._baseColor=e,this._firstPassInitialColor=ce.fromColor(e,this._firstPassInitialColor)}},quadtree:{get:function(){return this._quadtree},set:function(e){this._quadtree=e}},tilingScheme:{get:function(){if(l(this._terrainProvider))return this._terrainProvider.tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},imageryLayersUpdatedEvent:{get:function(){return this._imageryLayersUpdatedEvent}},terrainProvider:{get:function(){return this._terrainProvider},set:function(e){this._terrainProvider!==e&&(this._terrainProvider=e,l(this._quadtree)&&this._quadtree.invalidateAllTiles())}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Ws.setOwner(e,this,"_clippingPlanes")}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){Ih.setOwner(e,this,"_clippingPolygons")}}});function wmt(e,t){let n=e.loadingImagery;l(n)||(n=e.readyImagery);let i=t.loadingImagery;return l(i)||(i=t.readyImagery),n.imageryLayer._layerIndex-i.imageryLayer._layerIndex}gr.prototype.update=function(e){this._imageryLayers._update()};function Xmt(e,t){let n=t.creditDisplay,i=e._terrainProvider;l(i)&&l(i.credit)&&n.addCreditToNextFrame(i.credit);let o=e._imageryLayers;for(let r=0,s=o.length;r<s;++r){let a=o.get(r);a.ready&&a.show&&l(a.imageryProvider.credit)&&n.addCreditToNextFrame(a.imageryProvider.credit)}}gr.prototype.initialize=function(e){this._imageryLayers.queueReprojectionCommands(e),this._layerOrderChanged&&(this._layerOrderChanged=!1,this._quadtree.forEachLoadedTile(function(i){i.data.imagery.sort(wmt)})),Xmt(this,e);let t=this._vertexArraysToDestroy,n=t.length;for(let i=0;i<n;++i)Pm._freeVertexArray(t[i]);t.length=0};gr.prototype.beginUpdate=function(e){let t=this._tilesToRenderByTextureCount;for(let o=0,r=t.length;o<r;++o){let s=t[o];l(s)&&(s.length=0)}let n=this._clippingPlanes;l(n)&&n.enabled&&n.update(e);let i=this._clippingPolygons;l(i)&&i.enabled&&(i.update(e),i.queueCommands(e)),this._usedDrawCommands=0,this._hasLoadedTilesThisFrame=!1,this._hasFillTilesThisFrame=!1};gr.prototype.endUpdate=function(e){if(!l(this._renderState)){this._renderState=Qe.fromCache({cull:{enabled:!0},depthTest:{enabled:!0,func:Fa.LESS}}),this._blendRenderState=Qe.fromCache({cull:{enabled:!0},depthTest:{enabled:!0,func:Fa.LESS_OR_EQUAL},blending:bn.ALPHA_BLEND});let s=ke(this._renderState,!0);s.cull.enabled=!1,this._disableCullingRenderState=Qe.fromCache(s),s=ke(this._blendRenderState,!0),s.cull.enabled=!1,this._disableCullingBlendRenderState=Qe.fromCache(s)}this._hasFillTilesThisFrame&&this._hasLoadedTilesThisFrame&&oL.updateFillTiles(this,this._quadtree._tilesToRender,e,this._vertexArraysToDestroy);let t=this.quadtree,n=e.verticalExaggeration,i=e.verticalExaggerationRelativeHeight,o=this._oldVerticalExaggeration!==n||this._oldVerticalExaggerationRelativeHeight!==i;this._oldVerticalExaggeration=n,this._oldVerticalExaggerationRelativeHeight=i,o&&t.forEachLoadedTile(function(s){s.data.updateExaggeration(s,e,t)});let r=this._tilesToRenderByTextureCount;for(let s=0,a=r.length;s<a;++s){let c=r[s];if(l(c))for(let d=0,u=c.length;d<u;++d){let h=c[d],p=h.data.tileBoundingRegion;oht(this,h,e),e.minimumTerrainHeight=Math.min(e.minimumTerrainHeight,p.minimumHeight)}}};function NCe(e,t){let n=t.globeTranslucencyState;if(n.translucent){let i=e.renderState.blending.enabled;n.pushDerivedCommands(e,i,t)}else t.commandList.push(e)}gr.prototype.updateForPick=function(e){let t=this._drawCommands;for(let n=0,i=this._usedDrawCommands;n<i;++n)NCe(t[n],e)};gr.prototype.cancelReprojections=function(){this._imageryLayers.cancelReprojections()};gr.prototype.getLevelMaximumGeometricError=function(e){return l(this._terrainProvider)?this._terrainProvider.getLevelMaximumGeometricError(e):0};gr.prototype.loadTile=function(e,t){let n=t.data,i=!0,o;l(n)&&(i=n.boundingVolumeSourceTile!==t||t._lastSelectionResult===li.CULLED_BUT_NEEDED,o=n.terrainState),Pm.processStateMachine(t,e,this.terrainProvider,this._imageryLayers,this.quadtree,this._vertexArraysToDestroy,i),n=t.data,i&&o!==t.data.terrainState&&this.computeTileVisibility(t,e,this.quadtree.occluders)!==Zr.NONE&&n.boundingVolumeSourceTile===t&&(i=!1,Pm.processStateMachine(t,e,this.terrainProvider,this._imageryLayers,this.quadtree,this._vertexArraysToDestroy,i))};var Wmt=new ue,DCe=new le,Fmt=new le,Pmt=new ge;function Gk(e,t){if(t.west<t.east)return t;let n=le.clone(t,Fmt);return le.center(e,Pmt).longitude>0?n.east=Z.PI:n.west=-Z.PI,n}function QCe(e,t){if(t.cameraUnderground||t.globeTranslucencyState.translucent)return!0;if(e.backFaceCulling)return!1;let n=e._clippingPlanes;if(l(n)&&n.enabled)return!0;let i=e._clippingPolygons;return!!(l(i)&&i.enabled||!le.equals(e.cartographicLimitRectangle,le.MAX_VALUE))}gr.prototype.computeTileVisibility=function(e,t,n){let i=this.computeDistanceToTile(e,t);e._distance=i;let o=QCe(this,t);if(t.fog.enabled&&!o&&Z.fog(i,t.fog.density)>=1)return Zr.NONE;let r=e.data,s=r.tileBoundingRegion;if(r.boundingVolumeSourceTile===void 0)return Zr.PARTIAL;let a=t.cullingVolume,c=s.boundingVolume;l(c)||(c=s.boundingSphere),r.clippedByBoundaries=!1;let d=Gk(e.rectangle,this.cartographicLimitRectangle),u=le.simpleIntersection(d,e.rectangle,DCe);if(!l(u))return Zr.NONE;if(le.equals(u,e.rectangle)||(r.clippedByBoundaries=!0),t.mode!==re.SCENE3D&&(c=Wmt,ue.fromRectangleWithHeights2D(e.rectangle,t.mapProjection,s.minimumHeight,s.maximumHeight,c),m.fromElements(c.center.z,c.center.x,c.center.y,c.center),t.mode===re.MORPHING&&l(r.renderedMesh)&&(c=ue.union(s.boundingSphere,c,c))),!l(c))return Zr.PARTIAL;let h=this._clippingPlanes;if(l(h)&&h.enabled){let x=h.computeIntersectionWithBoundingVolume(c);if(e.isClipped=x!==on.INSIDE,x===on.OUTSIDE)return Zr.NONE}let p=this._clippingPolygons;if(l(p)&&p.enabled){let x=p.computeIntersectionWithBoundingVolume(s);e.isClipped=x!==on.OUTSIDE}let g,f=a.computeVisibility(c);if(f===on.OUTSIDE?g=Zr.NONE:f===on.INTERSECTING?g=Zr.PARTIAL:f===on.INSIDE&&(g=Zr.FULL),g===Zr.NONE)return g;let b=t.mode===re.SCENE3D&&t.camera.frustum instanceof gn;if(t.mode===re.SCENE3D&&!b&&l(n)&&!o){let x=r.occludeePointInScaledSpace;return!l(x)||n.ellipsoid.isScaledSpacePointVisiblePossiblyUnderEllipsoid(x,s.minimumHeight)?g:Zr.NONE}return g};gr.prototype.canRefine=function(e){return l(e.data.terrainData)?!0:this.terrainProvider.getTileDataAvailable(e.x*2,e.y*2,e.level+1)!==void 0};var Mmt=[],vmt=[];gr.prototype.canRenderWithoutLosingDetail=function(e,t){let n=e.data,i=Mmt;i.length=this._imageryLayers.length;let o=!1,r=!1,s;l(n)&&(o=n.terrainState===So.READY,r=!0,s=n.imagery);let a,c;for(a=0,c=i.length;a<c;++a)i[a]=r;if(l(s))for(a=0,c=s.length;a<c;++a){let h=s[a],p=h.loadingImagery,g=!l(p)||p.state===Jn.FAILED||p.state===Jn.INVALID,f=(h.loadingImagery||h.readyImagery).imageryLayer._layerIndex;i[f]=g&&i[f]}let d=this.quadtree._lastSelectionFrameNumber,u=vmt;for(u.length=0,u.push(e.southwestChild,e.southeastChild,e.northwestChild,e.northeastChild);u.length>0;){let h=u.pop(),p=h._lastSelectionResultFrame===d?h._lastSelectionResult:li.NONE;if(p===li.RENDERED){let g=h.data;if(!l(g))continue;if(!o&&h.data.terrainState===So.READY)return!1;let f=h.data.imagery;for(a=0,c=f.length;a<c;++a){let b=f[a],x=b.loadingImagery,I=!l(x)||x.state===Jn.FAILED||x.state===Jn.INVALID,_=(b.loadingImagery||b.readyImagery).imageryLayer._layerIndex;if(I&&!i[_])return!1}}else p===li.REFINED&&u.push(h.southwestChild,h.southeastChild,h.northwestChild,h.northeastChild)}return!0};var Nmt=new m;gr.prototype.computeTileLoadPriority=function(e,t){let n=e.data;if(n===void 0)return 0;let i=n.tileBoundingRegion.boundingVolume;if(i===void 0)return 0;let o=t.camera.positionWC,r=t.camera.directionWC,s=m.subtract(i.center,o,Nmt),a=m.magnitude(s);return a<Z.EPSILON5?0:(m.divideByScalar(s,a,s),(1-m.dot(s,r))*e._distance)};var FCe=new X,Vk=new X,Dmt=new ce,Qmt=new ce,Umt=new ce,kmt=new m,PCe=new m,Ymt=new m,Omt=new m;gr.prototype.showTileThisFrame=function(e,t){let n=0,i=e.data.imagery;for(let a=0,c=i.length;a<c;++a){let d=i[a];l(d.readyImagery)&&d.readyImagery.imageryLayer.alpha!==0&&++n}let o=this._tilesToRenderByTextureCount[n];l(o)||(o=[],this._tilesToRenderByTextureCount[n]=o),o.push(e);let r=e.data;l(r.vertexArray)?this._hasLoadedTilesThisFrame=!0:this._hasFillTilesThisFrame=!0;let s=this._debug;++s.tilesRendered,s.texturesRendered+=n};var Hmt=[new m,new m,new m,new m];function MCe(e,t,n,i,o,r){let s=e.quadtree._occluders.ellipsoid,a=s.ellipsoid,c=Hmt;return m.fromRadians(n.west,n.south,o,a,c[0]),m.fromRadians(n.east,n.south,o,a,c[1]),m.fromRadians(n.west,n.north,o,a,c[2]),m.fromRadians(n.east,n.north,o,a,c[3]),s.computeHorizonCullingPointPossiblyUnderEllipsoid(t,c,i,r)}gr.prototype.computeDistanceToTile=function(e,t){zmt(e,this,t);let n=e.data;if(n.boundingVolumeSourceTile===void 0)return 9999999999;let o=n.tileBoundingRegion,r=o.minimumHeight,s=o.maximumHeight;if(n.boundingVolumeSourceTile!==e){let c=t.camera.positionCartographic.height,d=Math.abs(c-r),u=Math.abs(c-s);d>u?(o.minimumHeight=r,o.maximumHeight=r):(o.minimumHeight=s,o.maximumHeight=s)}let a=o.distanceToCamera(t);return o.minimumHeight=r,o.maximumHeight=s,a};function zmt(e,t,n){let i=e.data;i===void 0&&(i=e.data=new Pm);let o=e.tilingScheme.ellipsoid;i.tileBoundingRegion===void 0&&(i.tileBoundingRegion=new tu({computeBoundingVolumes:!1,rectangle:e.rectangle,ellipsoid:o,minimumHeight:0,maximumHeight:0}));let r=i.tileBoundingRegion,s=r.minimumHeight,a=r.maximumHeight,c=!1,d=e,u=i.mesh,h=i.terrainData;if(u!==void 0&&u.minimumHeight!==void 0&&u.maximumHeight!==void 0)r.minimumHeight=u.minimumHeight,r.maximumHeight=u.maximumHeight,c=!0;else if(h!==void 0&&h._minimumHeight!==void 0&&h._maximumHeight!==void 0)r.minimumHeight=h._minimumHeight,r.maximumHeight=h._maximumHeight;else{r.minimumHeight=Number.NaN,r.maximumHeight=Number.NaN;let p=e.parent;for(;p!==void 0;){let g=p.data;if(g!==void 0){let f=g.mesh,b=g.terrainData;if(f!==void 0&&f.minimumHeight!==void 0&&f.maximumHeight!==void 0){r.minimumHeight=f.minimumHeight,r.maximumHeight=f.maximumHeight;break}else if(b!==void 0&&b._minimumHeight!==void 0&&b._maximumHeight!==void 0){r.minimumHeight=b._minimumHeight,r.maximumHeight=b._maximumHeight;break}}p=p.parent}d=p}if(d!==void 0){let p=n.verticalExaggeration,g=n.verticalExaggerationRelativeHeight;if(p!==1&&(c=!1,r.minimumHeight=Mr.getHeight(r.minimumHeight,p,g),r.maximumHeight=Mr.getHeight(r.maximumHeight,p,g)),c)i.boundingVolumeIsFromMesh||(r._orientedBoundingBox=vn.clone(u.orientedBoundingBox,r._orientedBoundingBox),r._boundingSphere=ue.clone(u.boundingSphere3D,r._boundingSphere),i.occludeePointInScaledSpace=m.clone(u.occludeePointInScaledSpace,i.occludeePointInScaledSpace),l(i.occludeePointInScaledSpace)||(i.occludeePointInScaledSpace=MCe(t,r._orientedBoundingBox.center,e.rectangle,r.minimumHeight,r.maximumHeight,i.occludeePointInScaledSpace)));else{let b=r._orientedBoundingBox===void 0||r._boundingSphere===void 0;(r.minimumHeight!==s||r.maximumHeight!==a||b)&&(r.computeBoundingVolumes(o),i.occludeePointInScaledSpace=MCe(t,r._orientedBoundingBox.center,e.rectangle,r.minimumHeight,r.maximumHeight,i.occludeePointInScaledSpace))}i.boundingVolumeSourceTile=d,i.boundingVolumeIsFromMesh=c}else i.boundingVolumeSourceTile=void 0,i.boundingVolumeIsFromMesh=!1}gr.prototype.isDestroyed=function(){return!1};gr.prototype.destroy=function(){return this._tileProvider=this._tileProvider&&this._tileProvider.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._clippingPolygons=this._clippingPolygons&&this._clippingPolygons.destroy(),this._removeLayerAddedListener=this._removeLayerAddedListener&&this._removeLayerAddedListener(),this._removeLayerRemovedListener=this._removeLayerRemovedListener&&this._removeLayerRemovedListener(),this._removeLayerMovedListener=this._removeLayerMovedListener&&this._removeLayerMovedListener(),this._removeLayerShownListener=this._removeLayerShownListener&&this._removeLayerShownListener(),me(this)};function Kmt(e,t,n){return function(i){let o,r,s=-1,a=i.data.imagery,c=a.length,d;for(d=0;d<c;++d)if(o=a[d],r=o.readyImagery??o.loadingImagery,r.imageryLayer===t){s=d;break}if(s!==-1){let u=s+e;if(o=a[u],r=l(o)?o.readyImagery??o.loadingImagery:void 0,!l(r)||r.imageryLayer!==t)return!t._createTileImagerySkeletons(i,n,u);for(d=s;d<u;++d)a[d].freeResources();a.splice(s,e)}return!0}}gr.prototype._onLayerAdded=function(e,t){if(!this.isDestroyed()&&e.show){let n=this._terrainProvider,i=this,o=this._imageryLayersUpdatedEvent,r=function(){e._imageryCache={},i._quadtree.forEachLoadedTile(function(s){if(l(s._loadedCallbacks[e._layerIndex]))return;let a,c=s.data.imagery,d=c.length,u=-1,h=0;for(a=0;a<d;++a){let g=c[a];if((g.readyImagery??g.loadingImagery).imageryLayer===e)u===-1&&(u=a),++h;else if(u!==-1)break}if(u===-1)return;let p=u+h;e._createTileImagerySkeletons(s,n,p)&&(s._loadedCallbacks[e._layerIndex]=Kmt(h,e,n),s.state=_a.LOADING)})};if(e.ready){let s=e.imageryProvider;s._reload=r}this._quadtree.forEachLoadedTile(function(s){e._createTileImagerySkeletons(s,n)&&(s.state=_a.LOADING,s.level!==0&&(s._lastSelectionResultFrame!==i.quadtree._lastSelectionFrameNumber||s._lastSelectionResult!==li.RENDERED)&&(s.renderable=!1))}),this._layerOrderChanged=!0,o.raiseEvent()}};gr.prototype._onLayerRemoved=function(e,t){this._quadtree.forEachLoadedTile(function(n){let i=n.data.imagery,o=-1,r=0;for(let s=0,a=i.length;s<a;++s){let c=i[s],d=c.loadingImagery;if(l(d)||(d=c.readyImagery),d.imageryLayer===e)o===-1&&(o=s),c.freeResources(),++r;else if(o!==-1)break}o!==-1&&i.splice(o,r)}),l(e.imageryProvider)&&(e.imageryProvider._reload=void 0),this._imageryLayersUpdatedEvent.raiseEvent()};gr.prototype._onLayerMoved=function(e,t,n){this._layerOrderChanged=!0,this._imageryLayersUpdatedEvent.raiseEvent()};gr.prototype._onLayerShownOrHidden=function(e,t,n){n?this._onLayerAdded(e,t):this._onLayerRemoved(e,t)};var Jmt=new X,jmt=new X;function vCe(e,t){let n={u_initialColor:function(){return this.properties.initialColor},u_fillHighlightColor:function(){return this.properties.fillHighlightColor},u_zoomedOutOceanSpecularIntensity:function(){return this.properties.zoomedOutOceanSpecularIntensity},u_oceanNormalMap:function(){return this.properties.oceanNormalMap},u_atmosphereLightIntensity:function(){return this.properties.atmosphereLightIntensity},u_atmosphereRayleighCoefficient:function(){return this.properties.atmosphereRayleighCoefficient},u_atmosphereMieCoefficient:function(){return this.properties.atmosphereMieCoefficient},u_atmosphereRayleighScaleHeight:function(){return this.properties.atmosphereRayleighScaleHeight},u_atmosphereMieScaleHeight:function(){return this.properties.atmosphereMieScaleHeight},u_atmosphereMieAnisotropy:function(){return this.properties.atmosphereMieAnisotropy},u_lightingFadeDistance:function(){return this.properties.lightingFadeDistance},u_nightFadeDistance:function(){return this.properties.nightFadeDistance},u_center3D:function(){return this.properties.center3D},u_verticalExaggerationAndRelativeHeight:function(){return this.properties.verticalExaggerationAndRelativeHeight},u_tileRectangle:function(){return this.properties.tileRectangle},u_modifiedModelView:function(){let i=e.context.uniformState.view,o=X.multiplyByPoint(i,this.properties.rtc,PCe);return X.setTranslation(i,o,FCe),FCe},u_modifiedModelViewProjection:function(){let i=e.context.uniformState.view,o=e.context.uniformState.projection,r=X.multiplyByPoint(i,this.properties.rtc,PCe);return X.setTranslation(i,r,Vk),X.multiply(o,Vk,Vk),Vk},u_dayTextures:function(){return this.properties.dayTextures},u_dayTextureTranslationAndScale:function(){return this.properties.dayTextureTranslationAndScale},u_dayTextureTexCoordsRectangle:function(){return this.properties.dayTextureTexCoordsRectangle},u_dayTextureUseWebMercatorT:function(){return this.properties.dayTextureUseWebMercatorT},u_dayTextureAlpha:function(){return this.properties.dayTextureAlpha},u_dayTextureNightAlpha:function(){return this.properties.dayTextureNightAlpha},u_dayTextureDayAlpha:function(){return this.properties.dayTextureDayAlpha},u_dayTextureBrightness:function(){return this.properties.dayTextureBrightness},u_dayTextureContrast:function(){return this.properties.dayTextureContrast},u_dayTextureHue:function(){return this.properties.dayTextureHue},u_dayTextureSaturation:function(){return this.properties.dayTextureSaturation},u_dayTextureOneOverGamma:function(){return this.properties.dayTextureOneOverGamma},u_dayIntensity:function(){return this.properties.dayIntensity},u_southAndNorthLatitude:function(){return this.properties.southAndNorthLatitude},u_southMercatorYAndOneOverHeight:function(){return this.properties.southMercatorYAndOneOverHeight},u_waterMask:function(){return this.properties.waterMask},u_waterMaskTranslationAndScale:function(){return this.properties.waterMaskTranslationAndScale},u_minMaxHeight:function(){return this.properties.minMaxHeight},u_scaleAndBias:function(){return this.properties.scaleAndBias},u_dayTextureSplit:function(){return this.properties.dayTextureSplit},u_dayTextureCutoutRectangles:function(){return this.properties.dayTextureCutoutRectangles},u_clippingPlanes:function(){let i=t._clippingPlanes;return l(i)&&l(i.texture)?i.texture:e.context.defaultTexture},u_cartographicLimitRectangle:function(){return this.properties.localizedCartographicLimitRectangle},u_clippingPlanesMatrix:function(){let i=t._clippingPlanes,o=l(i)?X.multiply(e.context.uniformState.view,i.modelMatrix,Jmt):X.IDENTITY;return X.inverseTranspose(o,jmt)},u_clippingPlanesEdgeStyle:function(){let i=this.properties.clippingPlanesEdgeColor;return i.alpha=this.properties.clippingPlanesEdgeWidth,i},u_clippingDistance:function(){let i=t._clippingPolygons.clippingTexture;return l(i)?i:e.context.defaultTexture},u_clippingExtents:function(){let i=t._clippingPolygons.extentsTexture;return l(i)?i:e.context.defaultTexture},u_minimumBrightness:function(){return e.fog.minimumBrightness},u_hsbShift:function(){return this.properties.hsbShift},u_colorsToAlpha:function(){return this.properties.colorsToAlpha},u_frontFaceAlphaByDistance:function(){return this.properties.frontFaceAlphaByDistance},u_backFaceAlphaByDistance:function(){return this.properties.backFaceAlphaByDistance},u_translucencyRectangle:function(){return this.properties.localizedTranslucencyRectangle},u_undergroundColor:function(){return this.properties.undergroundColor},u_undergroundColorAlphaByDistance:function(){return this.properties.undergroundColorAlphaByDistance},u_lambertDiffuseMultiplier:function(){return this.properties.lambertDiffuseMultiplier},u_vertexShadowDarkness:function(){return this.properties.vertexShadowDarkness},properties:{initialColor:new ce(0,0,.5,1),fillHighlightColor:new U(0,0,0,0),zoomedOutOceanSpecularIntensity:.5,oceanNormalMap:void 0,lightingFadeDistance:new D(65e5,9e6),nightFadeDistance:new D(1e7,4e7),atmosphereLightIntensity:10,atmosphereRayleighCoefficient:new m(55e-7,13e-6,284e-7),atmosphereMieCoefficient:new m(21e-6,21e-6,21e-6),atmosphereRayleighScaleHeight:1e4,atmosphereMieScaleHeight:3200,atmosphereMieAnisotropy:.9,hsbShift:new m,center3D:void 0,rtc:new m,modifiedModelView:new X,tileRectangle:new ce,verticalExaggerationAndRelativeHeight:new D(1,0),dayTextures:[],dayTextureTranslationAndScale:[],dayTextureTexCoordsRectangle:[],dayTextureUseWebMercatorT:[],dayTextureAlpha:[],dayTextureNightAlpha:[],dayTextureDayAlpha:[],dayTextureBrightness:[],dayTextureContrast:[],dayTextureHue:[],dayTextureSaturation:[],dayTextureOneOverGamma:[],dayTextureSplit:[],dayTextureCutoutRectangles:[],dayIntensity:0,colorsToAlpha:[],southAndNorthLatitude:new D,southMercatorYAndOneOverHeight:new D,waterMask:void 0,waterMaskTranslationAndScale:new ce,minMaxHeight:new D,scaleAndBias:new X,clippingPlanesEdgeColor:U.clone(U.WHITE),clippingPlanesEdgeWidth:0,localizedCartographicLimitRectangle:new ce,frontFaceAlphaByDistance:new ce,backFaceAlphaByDistance:new ce,localizedTranslucencyRectangle:new ce,undergroundColor:U.clone(U.TRANSPARENT),undergroundColorAlphaByDistance:new ce,lambertDiffuseMultiplier:0,vertexShadowDarkness:0}};return l(t.materialUniformMap)?Lt(n,t.materialUniformMap):n}function qmt(e,t,n){let i=n.data,o,r;if(l(i.vertexArray)?(o=i.mesh,r=i.vertexArray):l(i.fill)&&l(i.fill.vertexArray)&&(o=i.fill.mesh,r=i.fill.vertexArray),!(!l(o)||!l(r))){if(l(i.wireframeVertexArray)){if(i.wireframeVertexArray.mesh===o)return;i.wireframeVertexArray.destroy(),i.wireframeVertexArray=void 0}i.wireframeVertexArray=$mt(e,r,o),i.wireframeVertexArray.mesh=o}}function $mt(e,t,n){let o={indices:n.indices,primitiveType:We.TRIANGLES};Yn.toWireframe(o);let r=o.indices,s=It.createIndexBuffer({context:e,typedArray:r,usage:Ne.STATIC_DRAW,indexDatatype:Me.fromSizeInBytes(r.BYTES_PER_ELEMENT)});return new ui({context:e,attributes:t._attributes,indexBuffer:s})}var UCe,kCe,Zk;(function(){let e=new wt({geometry:nh.fromDimensions({dimensions:new m(2,2,2)})}),t=new wt({geometry:new cg({radius:1})}),n=new X,i,o;function r(s){return new Nn({geometryInstances:s,appearance:new yn({translucent:!1,flat:!0}),asynchronous:!1})}UCe=function(s,a){return s===i||(Zk(),i=s,n=X.fromRotationTranslation(s.halfAxes,s.center,n),e.modelMatrix=n,e.attributes.color=tn.fromColor(a),o=r(e)),o},kCe=function(s,a){return s===i||(Zk(),i=s,n=X.fromTranslation(s.center,n),n=X.multiplyByUniformScale(n,s.radius,n),t.modelMatrix=n,t.attributes.color=tn.fromColor(a),o=r(t)),o},Zk=function(){l(o)&&(o.destroy(),o=void 0,i=void 0)}})();var eht=new ce(0,0,0,0),tht={frameState:void 0,surfaceTile:void 0,numberOfDayTextures:void 0,applyBrightness:void 0,applyContrast:void 0,applyHue:void 0,applySaturation:void 0,applyGamma:void 0,applyAlpha:void 0,applyDayNightAlpha:void 0,applySplit:void 0,showReflectiveOcean:void 0,showOceanWaves:void 0,enableLighting:void 0,dynamicAtmosphereLighting:void 0,dynamicAtmosphereLightingFromSun:void 0,showGroundAtmosphere:void 0,perFragmentGroundAtmosphere:void 0,hasVertexNormals:void 0,useWebMercatorProjection:void 0,enableFog:void 0,enableClippingPlanes:void 0,clippingPlanes:void 0,enableClippingPolygons:void 0,clippingPolygons:void 0,clippedByBoundaries:void 0,hasImageryLayerCutout:void 0,colorCorrect:void 0,colorToAlpha:void 0,hasGeodeticSurfaceNormals:void 0,hasExaggeration:void 0},nht=U.TRANSPARENT,iht=new zt;function oht(e,t,n){let i=t.data;l(i.vertexArray)||(i.fill===void 0&&(i.fill=new oL(t)),i.fill.update(e,n));let o=n.creditDisplay,r=i.terrainData;if(l(r)&&l(r.credits)){let vt=r.credits;for(let Rt=0,si=vt.length;Rt<si;++Rt)o.addCreditToNextFrame(vt[Rt])}let s=Kt.maximumTextureImageUnits,a=i.waterMaskTexture,c=i.waterMaskTranslationAndScale;!l(a)&&l(i.fill)&&(a=i.fill.waterMaskTexture,c=i.fill.waterMaskTranslationAndScale);let d=n.cameraUnderground,u=n.globeTranslucencyState,h=u.translucent,p=u.frontFaceAlphaByDistance,g=u.backFaceAlphaByDistance,f=u.rectangle,b=e.undergroundColor??nht,x=e.undergroundColorAlphaByDistance??iht,I=QCe(e,n)&&n.mode===re.SCENE3D&&b.alpha>0&&(x.nearValue>0||x.farValue>0),_=e.lambertDiffuseMultiplier,E=e.vertexShadowDarkness,S=e.hasWaterMask&&l(a),R=S&&e.showWaterEffect,G=e.oceanNormalMap,B=R&&l(G),w=e.terrainProvider,F=l(w)&&e.terrainProvider.hasVertexNormals,P=n.fog.enabled&&n.fog.renderable&&!d,A=e.showGroundAtmosphere&&n.mode===re.SCENE3D,T=Gn.castShadows(e.shadows)&&!h,L=Gn.receiveShadows(e.shadows)&&!h,V=e.hueShift,W=e.saturationShift,M=e.brightnessShift,Q=!(Z.equalsEpsilon(V,0,Z.EPSILON7)&&Z.equalsEpsilon(W,0,Z.EPSILON7)&&Z.equalsEpsilon(M,0,Z.EPSILON7)),N=!1;if(A){let vt=m.magnitude(n.camera.positionWC),Rt=e.nightFadeOutDistance;N=vt>Rt}S&&--s,B&&--s,l(n.shadowState)&&n.shadowState.shadowsEnabled&&--s,l(e.clippingPlanes)&&e.clippingPlanes.enabled&&--s,l(e.clippingPolygons)&&e.clippingPolygons.enabled&&(--s,--s),s-=u.numberOfTextureUniforms;let k=i.renderedMesh,v=k.center,O=k.encoding,H=i.tileBoundingRegion,ee=n.verticalExaggeration,K=n.verticalExaggerationRelativeHeight,te=ee!==1,q=O.hasGeodeticSurfaceNormals,pe=Dmt,ye=0,he=0,xe=0,Te=0,Be=!1;if(n.mode!==re.SCENE3D){let vt=n.mapProjection,Rt=vt.project(le.southwest(t.rectangle),Ymt),si=vt.project(le.northeast(t.rectangle),Omt);if(pe.x=Rt.x,pe.y=Rt.y,pe.z=si.x,pe.w=si.y,n.mode!==re.MORPHING&&(v=kmt,v.x=0,v.y=(pe.z+pe.x)*.5,v.z=(pe.w+pe.y)*.5,pe.x-=v.y,pe.y-=v.z,pe.z-=v.y,pe.w-=v.z),n.mode===re.SCENE2D&&O.quantization===Ia.BITS12){let _t=1/(Math.pow(2,12)-1)*.5,Fo=(pe.z-pe.x)*_t,Uo=(pe.w-pe.y)*_t;pe.x-=Fo,pe.y-=Uo,pe.z+=Fo,pe.w+=Uo}vt instanceof Ui&&(ye=t.rectangle.south,he=t.rectangle.north,xe=Ui.geodeticLatitudeToMercatorAngle(ye),Te=1/(Ui.geodeticLatitudeToMercatorAngle(he)-xe),Be=!0)}let Le=tht;Le.frameState=n,Le.surfaceTile=i,Le.hasWaterMask=S,Le.showReflectiveOcean=R,Le.showOceanWaves=B,Le.enableLighting=e.enableLighting,Le.dynamicAtmosphereLighting=e.dynamicAtmosphereLighting,Le.dynamicAtmosphereLightingFromSun=e.dynamicAtmosphereLightingFromSun,Le.showGroundAtmosphere=A,Le.atmosphereLightIntensity=e.atmosphereLightIntensity,Le.atmosphereRayleighCoefficient=e.atmosphereRayleighCoefficient,Le.atmosphereMieCoefficient=e.atmosphereMieCoefficient,Le.atmosphereRayleighScaleHeight=e.atmosphereRayleighScaleHeight,Le.atmosphereMieScaleHeight=e.atmosphereMieScaleHeight,Le.atmosphereMieAnisotropy=e.atmosphereMieAnisotropy,Le.perFragmentGroundAtmosphere=N,Le.hasVertexNormals=F,Le.useWebMercatorProjection=Be,Le.clippedByBoundaries=i.clippedByBoundaries,Le.hasGeodeticSurfaceNormals=q,Le.hasExaggeration=te;let De=i.imagery,Ue=0,je=De.length,it=e.showSkirts&&!d&&!h,nn=e.backFaceCulling&&!d&&!h,rt=nn?e._renderState:e._disableCullingRenderState,rn=nn?e._blendRenderState:e._disableCullingBlendRenderState,Jt=rt,Xt=e._firstPassInitialColor,Li=n.context;if(l(e._debug.boundingSphereTile)||Zk(),e._materialUniformMap!==e.materialUniformMap){e._materialUniformMap=e.materialUniformMap;let vt=e._drawCommands.length;for(let Rt=0;Rt<vt;++Rt)e._uniformMaps[Rt]=vCe(n,e)}do{let vt=0,Rt,si;if(e._drawCommands.length<=e._usedDrawCommands?(Rt=new ot,Rt.owner=t,Rt.cull=!1,Rt.boundingVolume=new ue,Rt.orientedBoundingBox=void 0,si=vCe(n,e),e._drawCommands.push(Rt),e._uniformMaps.push(si)):(Rt=e._drawCommands[e._usedDrawCommands],si=e._uniformMaps[e._usedDrawCommands]),Rt.owner=t,++e._usedDrawCommands,t===e._debug.boundingSphereTile){let fs=H.boundingVolume,tc=H.boundingSphere;l(fs)?UCe(fs,U.RED).update(n):l(tc)&&kCe(tc,U.RED).update(n)}let _t=si.properties;ce.clone(Xt,_t.initialColor),_t.oceanNormalMap=G,_t.lightingFadeDistance.x=e.lightingFadeOutDistance,_t.lightingFadeDistance.y=e.lightingFadeInDistance,_t.nightFadeDistance.x=e.nightFadeOutDistance,_t.nightFadeDistance.y=e.nightFadeInDistance,_t.atmosphereLightIntensity=e.atmosphereLightIntensity,_t.atmosphereRayleighCoefficient=e.atmosphereRayleighCoefficient,_t.atmosphereMieCoefficient=e.atmosphereMieCoefficient,_t.atmosphereRayleighScaleHeight=e.atmosphereRayleighScaleHeight,_t.atmosphereMieScaleHeight=e.atmosphereMieScaleHeight,_t.atmosphereMieAnisotropy=e.atmosphereMieAnisotropy,_t.zoomedOutOceanSpecularIntensity=e.zoomedOutOceanSpecularIntensity;let Fo=d?g:p,Uo=d?p:g;l(Fo)&&(ce.fromElements(Fo.near,Fo.nearValue,Fo.far,Fo.farValue,_t.frontFaceAlphaByDistance),ce.fromElements(Uo.near,Uo.nearValue,Uo.far,Uo.farValue,_t.backFaceAlphaByDistance)),ce.fromElements(x.near,x.nearValue,x.far,x.farValue,_t.undergroundColorAlphaByDistance),U.clone(b,_t.undergroundColor),_t.lambertDiffuseMultiplier=_,_t.vertexShadowDarkness=E;let Va=!l(i.vertexArray)&&l(e.fillHighlightColor)&&e.fillHighlightColor.alpha>0;Va&&U.clone(e.fillHighlightColor,_t.fillHighlightColor),_t.verticalExaggerationAndRelativeHeight.x=ee,_t.verticalExaggerationAndRelativeHeight.y=K,_t.center3D=k.center,m.clone(v,_t.rtc),ce.clone(pe,_t.tileRectangle),_t.southAndNorthLatitude.x=ye,_t.southAndNorthLatitude.y=he,_t.southMercatorYAndOneOverHeight.x=xe,_t.southMercatorYAndOneOverHeight.y=Te;let Cr=Qmt,wr=Gk(t.rectangle,e.cartographicLimitRectangle),ve=Umt,ut=Gk(t.rectangle,f);m.fromElements(V,W,M,_t.hsbShift);let qe=t.rectangle,nt=1/qe.width,yt=1/qe.height;Cr.x=(wr.west-qe.west)*nt,Cr.y=(wr.south-qe.south)*yt,Cr.z=(wr.east-qe.west)*nt,Cr.w=(wr.north-qe.south)*yt,ce.clone(Cr,_t.localizedCartographicLimitRectangle),ve.x=(ut.west-qe.west)*nt,ve.y=(ut.south-qe.south)*yt,ve.z=(ut.east-qe.west)*nt,ve.w=(ut.north-qe.south)*yt,ce.clone(ve,_t.localizedTranslucencyRectangle);let $t=P&&Z.fog(t._distance,n.fog.density)>Z.EPSILON3;Q=Q&&($t||A);let Sn=!1,fo=!1,uo=!1,ra=!1,sa=!1,Hn=!1,Ti=!1,Rs=!1,Jo=!1,Ga=!1;for(;vt<s&&Ue<je;){let fs=De[Ue],tc=fs.readyImagery;if(++Ue,!l(tc)||tc.imageryLayer.alpha===0)continue;let nc=fs.useWebMercatorT?tc.textureWebMercator:tc.texture,Xr=tc.imageryLayer;l(fs.textureTranslationAndScale)||(fs.textureTranslationAndScale=Xr._calculateTextureTranslationAndScale(t,fs)),_t.dayTextures[vt]=nc,_t.dayTextureTranslationAndScale[vt]=fs.textureTranslationAndScale,_t.dayTextureTexCoordsRectangle[vt]=fs.textureCoordinateRectangle,_t.dayTextureUseWebMercatorT[vt]=fs.useWebMercatorT,_t.dayTextureAlpha[vt]=Xr.alpha,Hn=Hn||_t.dayTextureAlpha[vt]!==1,_t.dayTextureNightAlpha[vt]=Xr.nightAlpha,Ti=Ti||_t.dayTextureNightAlpha[vt]!==1,_t.dayTextureDayAlpha[vt]=Xr.dayAlpha,Ti=Ti||_t.dayTextureDayAlpha[vt]!==1,_t.dayTextureBrightness[vt]=Xr.brightness,Sn=Sn||_t.dayTextureBrightness[vt]!==is.DEFAULT_BRIGHTNESS,_t.dayTextureContrast[vt]=Xr.contrast,fo=fo||_t.dayTextureContrast[vt]!==is.DEFAULT_CONTRAST,_t.dayTextureHue[vt]=Xr.hue,uo=uo||_t.dayTextureHue[vt]!==is.DEFAULT_HUE,_t.dayTextureSaturation[vt]=Xr.saturation,ra=ra||_t.dayTextureSaturation[vt]!==is.DEFAULT_SATURATION,_t.dayTextureOneOverGamma[vt]=1/Xr.gamma,sa=sa||_t.dayTextureOneOverGamma[vt]!==1/is.DEFAULT_GAMMA,_t.dayTextureSplit[vt]=Xr.splitDirection,Rs=Rs||_t.dayTextureSplit[vt]!==0;let kl=_t.dayTextureCutoutRectangles[vt];if(l(kl)||(kl=_t.dayTextureCutoutRectangles[vt]=new ce),ce.clone(ce.ZERO,kl),l(Xr.cutoutRectangle)){let Zo=Gk(qe,Xr.cutoutRectangle),mn=le.simpleIntersection(Zo,qe,DCe);Jo=l(mn)||Jo,kl.x=(Zo.west-qe.west)*nt,kl.y=(Zo.south-qe.south)*yt,kl.z=(Zo.east-qe.west)*nt,kl.w=(Zo.north-qe.south)*yt}let Yl=_t.colorsToAlpha[vt];l(Yl)||(Yl=_t.colorsToAlpha[vt]=new ce);let aa=l(Xr.colorToAlpha)&&Xr.colorToAlphaThreshold>0;if(Ga=Ga||aa,aa){let Zo=Xr.colorToAlpha;Yl.x=Zo.red,Yl.y=Zo.green,Yl.z=Zo.blue,Yl.w=Xr.colorToAlphaThreshold}else Yl.w=-1;if(l(tc.credits)){let Zo=tc.credits;for(let mn=0,Re=Zo.length;mn<Re;++mn)o.addCreditToNextFrame(Zo[mn])}++vt}_t.dayTextures.length=vt,_t.waterMask=a,ce.clone(c,_t.waterMaskTranslationAndScale),_t.minMaxHeight.x=O.minimumHeight,_t.minMaxHeight.y=O.maximumHeight,X.clone(O.matrix,_t.scaleAndBias);let po=e._clippingPlanes,jo=l(po)&&po.enabled&&t.isClipped;jo&&(_t.clippingPlanesEdgeColor=U.clone(po.edgeColor,_t.clippingPlanesEdgeColor),_t.clippingPlanesEdgeWidth=po.edgeWidth);let Wu=e._clippingPolygons,xr=l(Wu)&&Wu.enabled&&t.isClipped;Le.numberOfDayTextures=vt,Le.applyBrightness=Sn,Le.applyContrast=fo,Le.applyHue=uo,Le.applySaturation=ra,Le.applyGamma=sa,Le.applyAlpha=Hn,Le.applyDayNightAlpha=Ti,Le.applySplit=Rs,Le.enableFog=$t,Le.enableClippingPlanes=jo,Le.clippingPlanes=po,Le.enableClippingPolygons=xr,Le.clippingPolygons=Wu,Le.hasImageryLayerCutout=Jo,Le.colorCorrect=Q,Le.highlightFillTile=Va,Le.colorToAlpha=Ga,Le.showUndergroundColor=I,Le.translucent=h;let Vs=i.renderedMesh.indices.length;it||(Vs=i.renderedMesh.indexCountWithoutSkirts),Rt.shaderProgram=e._surfaceShaderSet.getShaderProgram(Le),Rt.castShadows=T,Rt.receiveShadows=L,Rt.renderState=Jt,Rt.primitiveType=We.TRIANGLES,Rt.vertexArray=i.vertexArray||i.fill.vertexArray,Rt.count=Vs,Rt.uniformMap=si,Rt.pass=Ge.GLOBE,e._debug.wireframe&&(qmt(Li,e,t),l(i.wireframeVertexArray)&&(Rt.vertexArray=i.wireframeVertexArray,Rt.primitiveType=We.LINES,Rt.count=Vs*2));let ks=Rt.boundingVolume,Jm=Rt.orientedBoundingBox;n.mode!==re.SCENE3D?(ue.fromRectangleWithHeights2D(t.rectangle,n.mapProjection,H.minimumHeight,H.maximumHeight,ks),m.fromElements(ks.center.z,ks.center.x,ks.center.y,ks.center),n.mode===re.MORPHING&&(ks=ue.union(H.boundingSphere,ks,ks))):(Rt.boundingVolume=ue.clone(H.boundingSphere,ks),Rt.orientedBoundingBox=vn.clone(H.boundingVolume,Jm)),Rt.dirty=!0,h&&u.updateDerivedCommands(Rt,n),NCe(Rt,n),Jt=rn,Xt=eht}while(Ue<je)}var BP=gr;var q2i=y(C(),1);function YCe(){this._enabled=!1,this._frontFaceAlpha=1,this._frontFaceAlphaByDistance=void 0,this._backFaceAlpha=1,this._backFaceAlphaByDistance=void 0,this._rectangle=le.clone(le.MAX_VALUE)}Object.defineProperties(YCe.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this._enabled=e}},frontFaceAlpha:{get:function(){return this._frontFaceAlpha},set:function(e){this._frontFaceAlpha=e}},frontFaceAlphaByDistance:{get:function(){return this._frontFaceAlphaByDistance},set:function(e){this._frontFaceAlphaByDistance=zt.clone(e,this._frontFaceAlphaByDistance)}},backFaceAlpha:{get:function(){return this._backFaceAlpha},set:function(e){this._backFaceAlpha=e}},backFaceAlphaByDistance:{get:function(){return this._backFaceAlphaByDistance},set:function(e){this._backFaceAlphaByDistance=zt.clone(e,this._backFaceAlphaByDistance)}},rectangle:{get:function(){return this._rectangle},set:function(e){l(e)||(e=le.clone(le.MAX_VALUE)),le.clone(e,this._rectangle)}}});var wP=YCe;var ZWi=y(C(),1);var nWi=y(C(),1);function OCe(e){this._ellipsoid=new gg(e.ellipsoid,m.ZERO)}Object.defineProperties(OCe.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var XP=OCe;var cWi=y(C(),1);var I7=class{constructor(t){this.maxSize=t,this.cache=new Map}get(t){if(!this.cache.has(t))return;let n=this.cache.get(t);return this.cache.delete(t),this.cache.set(t,n),n}set(t,n){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.maxSize){let i=this.cache.keys().next().value;this.cache.delete(i)}this.cache.set(t,n)}clear(){this.cache.clear()}},rht=1e3;function Ea(e){this._tilingScheme=e.tilingScheme,this._x=e.x,this._y=e.y,this._level=e.level,this._parent=e.parent,this._rectangle=this._tilingScheme.tileXYToRectangle(this._x,this._y,this._level),this._southwestChild=void 0,this._southeastChild=void 0,this._northwestChild=void 0,this._northeastChild=void 0,this.replacementPrevious=void 0,this.replacementNext=void 0,this._distance=0,this._loadPriority=0,this._customData=[],this._frameUpdated=void 0,this._lastSelectionResult=li.NONE,this._lastSelectionResultFrame=void 0,this._loadedCallbacks={},this._positionCache=new I7(rht),this.state=_a.START,this.renderable=!1,this.upsampledFromParent=!1,this.data=void 0}Ea.createLevelZeroTiles=function(e){let t=e.getNumberOfXTilesAtLevel(0),n=e.getNumberOfYTilesAtLevel(0),i=new Array(t*n),o=0;for(let r=0;r<n;++r)for(let s=0;s<t;++s)i[o++]=new Ea({tilingScheme:e,x:s,y:r,level:0});return i};var sht=256;function aht(e,t,n,i){let o=n.width/sht*i,r=Math.floor(e/o)*o,s=Math.floor(t/o)*o;return`${r.toFixed(10)},${s.toFixed(10)}`}Ea.prototype._getCacheKey=function(e,t){return aht(e.longitude,e.latitude,this._rectangle,t)};Ea.prototype.getPositionCacheEntry=function(e,t){return this._positionCache.get(this._getCacheKey(e,t))};Ea.prototype.setPositionCacheEntry=function(e,t,n){this._positionCache.set(this._getCacheKey(e,t),n)};Ea.prototype.clearPositionCache=function(){this._positionCache.size>0&&this._positionCache.clear()};Ea.prototype._updateCustomData=function(e,t,n){let i=this.customData,o,r,s;if(l(t)&&l(n)){for(i=i.filter(function(a){return n.indexOf(a)===-1}),this._customData=i,s=this._rectangle,o=0;o<t.length;++o)r=t[o],le.contains(s,r.positionCartographic)&&i.push(r);this._frameUpdated=e}else{let a=this._parent;if(l(a)&&this._frameUpdated!==a._frameUpdated){i.length=0,s=this._rectangle;let c=a.customData;for(o=0;o<c.length;++o)r=c[o],le.contains(s,r.positionCartographic)&&i.push(r);this._frameUpdated=a._frameUpdated}}};Object.defineProperties(Ea.prototype,{tilingScheme:{get:function(){return this._tilingScheme}},x:{get:function(){return this._x}},y:{get:function(){return this._y}},level:{get:function(){return this._level}},parent:{get:function(){return this._parent}},rectangle:{get:function(){return this._rectangle}},children:{get:function(){return[this.northwestChild,this.northeastChild,this.southwestChild,this.southeastChild]}},southwestChild:{get:function(){return l(this._southwestChild)||(this._southwestChild=new Ea({tilingScheme:this.tilingScheme,x:this.x*2,y:this.y*2+1,level:this.level+1,parent:this})),this._southwestChild}},southeastChild:{get:function(){return l(this._southeastChild)||(this._southeastChild=new Ea({tilingScheme:this.tilingScheme,x:this.x*2+1,y:this.y*2+1,level:this.level+1,parent:this})),this._southeastChild}},northwestChild:{get:function(){return l(this._northwestChild)||(this._northwestChild=new Ea({tilingScheme:this.tilingScheme,x:this.x*2,y:this.y*2,level:this.level+1,parent:this})),this._northwestChild}},northeastChild:{get:function(){return l(this._northeastChild)||(this._northeastChild=new Ea({tilingScheme:this.tilingScheme,x:this.x*2+1,y:this.y*2,level:this.level+1,parent:this})),this._northeastChild}},customData:{get:function(){return this._customData}},needsLoading:{get:function(){return this.state<_a.DONE}},eligibleForUnloading:{get:function(){let e=!0;return l(this.data)&&(e=this.data.eligibleForUnloading,l(e)||(e=!0)),e}}});Ea.prototype.findLevelZeroTile=function(e,t,n){let i=this.tilingScheme.getNumberOfXTilesAtLevel(0);if(t<0?t+=i:t>=i&&(t-=i),!(n<0||n>=this.tilingScheme.getNumberOfYTilesAtLevel(0)))return e.filter(function(o){return o.x===t&&o.y===n})[0]};Ea.prototype.findTileToWest=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x-1,this.y);if(t.southeastChild===this)return t.southwestChild;if(t.northeastChild===this)return t.northwestChild;let n=t.findTileToWest(e);if(n!==void 0)return t.southwestChild===this?n.southeastChild:n.northeastChild};Ea.prototype.findTileToEast=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x+1,this.y);if(t.southwestChild===this)return t.southeastChild;if(t.northwestChild===this)return t.northeastChild;let n=t.findTileToEast(e);if(n!==void 0)return t.southeastChild===this?n.southwestChild:n.northwestChild};Ea.prototype.findTileToSouth=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x,this.y+1);if(t.northwestChild===this)return t.southwestChild;if(t.northeastChild===this)return t.southeastChild;let n=t.findTileToSouth(e);if(n!==void 0)return t.southwestChild===this?n.northwestChild:n.northeastChild};Ea.prototype.findTileToNorth=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x,this.y-1);if(t.southwestChild===this)return t.northwestChild;if(t.southeastChild===this)return t.northeastChild;let n=t.findTileToNorth(e);if(n!==void 0)return t.northwestChild===this?n.southwestChild:n.southeastChild};Ea.prototype.freeResources=function(){this.clearPositionCache(),this.state=_a.START,this.renderable=!1,this.upsampledFromParent=!1,l(this.data)&&l(this.data.freeResources)&&this.data.freeResources(),Bk(this._southwestChild),this._southwestChild=void 0,Bk(this._southeastChild),this._southeastChild=void 0,Bk(this._northwestChild),this._northwestChild=void 0,Bk(this._northeastChild),this._northeastChild=void 0};function Bk(e){l(e)&&e.freeResources()}var WP=Ea;var uWi=y(C(),1);function wk(){this.head=void 0,this.tail=void 0,this.count=0,this._lastBeforeStartOfFrame=void 0}wk.prototype.markStartOfRenderFrame=function(){this._lastBeforeStartOfFrame=this.head};wk.prototype.trimTiles=function(e){let t=this.tail,n=!0;for(;n&&l(this._lastBeforeStartOfFrame)&&this.count>e&&l(t);){n=t!==this._lastBeforeStartOfFrame;let i=t.replacementPrevious;t.eligibleForUnloading&&(t.freeResources(),HCe(this,t)),t=i}};function HCe(e,t){let n=t.replacementPrevious,i=t.replacementNext;t===e._lastBeforeStartOfFrame&&(e._lastBeforeStartOfFrame=i),t===e.head?e.head=i:n.replacementNext=i,t===e.tail?e.tail=n:i.replacementPrevious=n,t.replacementPrevious=void 0,t.replacementNext=void 0,--e.count}wk.prototype.markTileRendered=function(e){let t=this.head;if(t===e){e===this._lastBeforeStartOfFrame&&(this._lastBeforeStartOfFrame=e.replacementNext);return}if(++this.count,!l(t)){e.replacementPrevious=void 0,e.replacementNext=void 0,this.head=e,this.tail=e;return}(l(e.replacementPrevious)||l(e.replacementNext))&&HCe(this,e),e.replacementPrevious=void 0,e.replacementNext=t,t.replacementPrevious=e,this.head=e};var FP=wk;function Mm(e){this._tileProvider=e.tileProvider,this._tileProvider.quadtree=this,this._debug={enableDebugOutput:!1,maxDepth:0,maxDepthVisited:0,tilesVisited:0,tilesCulled:0,tilesRendered:0,tilesWaitingForChildren:0,lastMaxDepth:-1,lastMaxDepthVisited:-1,lastTilesVisited:-1,lastTilesCulled:-1,lastTilesRendered:-1,lastTilesWaitingForChildren:-1,suspendLodUpdate:!1};let n=this._tileProvider.tilingScheme.ellipsoid;this._tilesToRender=[],this._tileLoadQueueHigh=[],this._tileLoadQueueMedium=[],this._tileLoadQueueLow=[],this._tileReplacementQueue=new FP,this._levelZeroTiles=void 0,this._loadQueueTimeSlice=5,this._tilesInvalidated=!1,this._addHeightCallbacks=[],this._removeHeightCallbacks=[],this._tileToUpdateHeights=[],this._lastTileIndex=0,this._updateHeightsTimeSlice=2,this._cameraPositionCartographic=void 0,this._cameraReferenceFrameOriginCartographic=void 0,this.maximumScreenSpaceError=e.maximumScreenSpaceError??2,this.tileCacheSize=e.tileCacheSize??100,this.loadingDescendantLimit=20,this.preloadAncestors=!0,this.preloadSiblings=!1,this._occluders=new XP({ellipsoid:n}),this._tileLoadProgressEvent=new Ce,this._lastTileLoadQueueLength=0,this._lastSelectionFrameNumber=void 0}Object.defineProperties(Mm.prototype,{tileProvider:{get:function(){return this._tileProvider}},tileLoadProgressEvent:{get:function(){return this._tileLoadProgressEvent}},occluders:{get:function(){return this._occluders}}});Mm.prototype.invalidateAllTiles=function(){this._tilesInvalidated=!0};function cht(e){let t=e._tileReplacementQueue;t.head=void 0,t.tail=void 0,t.count=0,KCe(e);let n=e._levelZeroTiles;if(l(n))for(let i=0;i<n.length;++i){let r=n[i].customData,s=r.length;for(let a=0;a<s;++a){let c=r[a];c.level=0,e._addHeightCallbacks.push(c)}n[i].freeResources()}e._levelZeroTiles=void 0,e._tileProvider.cancelReprojections()}Mm.prototype.forEachLoadedTile=function(e){let t=this._tileReplacementQueue.head;for(;l(t);)t.state!==_a.START&&e(t),t=t.replacementNext};Mm.prototype.forEachRenderedTile=function(e){let t=this._tilesToRender;for(let n=0,i=t.length;n<i;++n)e(t[n])};Mm.prototype.updateHeight=function(e,t){let n=this,i={positionOnEllipsoidSurface:void 0,positionCartographic:e,level:-1,callback:t};return i.removeFunc=function(){let o=n._addHeightCallbacks,r=o.length;for(let s=0;s<r;++s)if(o[s]===i){o.splice(s,1);break}n._removeHeightCallbacks.push(i),i.callback&&(i.callback=void 0)},n._addHeightCallbacks.push(i),i.removeFunc};Mm.prototype.update=function(e){l(this._tileProvider.update)&&this._tileProvider.update(e)};function KCe(e){let t=e._debug;t.maxDepth=0,t.maxDepthVisited=0,t.tilesVisited=0,t.tilesCulled=0,t.tilesRendered=0,t.tilesWaitingForChildren=0,e._tileLoadQueueHigh.length=0,e._tileLoadQueueMedium.length=0,e._tileLoadQueueLow.length=0}Mm.prototype.beginFrame=function(e){e.passes.render&&(this._tilesInvalidated&&(cht(this),this._tilesInvalidated=!1),this._tileProvider.initialize(e),KCe(this),!this._debug.suspendLodUpdate&&this._tileReplacementQueue.markStartOfRenderFrame())};Mm.prototype.render=function(e){let t=e.passes,n=this._tileProvider;t.render&&(n.beginUpdate(e),mht(this,e),Iht(this,e),n.endUpdate(e)),t.pick&&this._tilesToRender.length>0&&n.updateForPick(e)};function lht(e,t){let n=e._tileLoadQueueHigh.length+e._tileLoadQueueMedium.length+e._tileLoadQueueLow.length;if(n!==e._lastTileLoadQueueLength||e._tilesInvalidated){let o=Ce.prototype.raiseEvent.bind(e._tileLoadProgressEvent,n);t.afterRender.push(()=>(o(),!0)),e._lastTileLoadQueueLength=n}let i=e._debug;i.enableDebugOutput&&!i.suspendLodUpdate&&(i.maxDepth=e._tilesToRender.reduce(function(o,r){return Math.max(o,r.level)},-1),i.tilesRendered=e._tilesToRender.length,(i.tilesVisited!==i.lastTilesVisited||i.tilesRendered!==i.lastTilesRendered||i.tilesCulled!==i.lastTilesCulled||i.maxDepth!==i.lastMaxDepth||i.tilesWaitingForChildren!==i.lastTilesWaitingForChildren||i.maxDepthVisited!==i.lastMaxDepthVisited)&&(console.log(`Visited ${i.tilesVisited}, Rendered: ${i.tilesRendered}, Culled: ${i.tilesCulled}, Max Depth Rendered: ${i.maxDepth}, Max Depth Visited: ${i.maxDepthVisited}, Waiting for children: ${i.tilesWaitingForChildren}`),i.lastTilesVisited=i.tilesVisited,i.lastTilesRendered=i.tilesRendered,i.lastTilesCulled=i.tilesCulled,i.lastMaxDepth=i.maxDepth,i.lastTilesWaitingForChildren=i.tilesWaitingForChildren,i.lastMaxDepthVisited=i.maxDepthVisited))}Mm.prototype.endFrame=function(e){!e.passes.render||e.mode===re.MORPHING||(bht(this,e),xht(this,e),lht(this,e))};Mm.prototype.isDestroyed=function(){return!1};Mm.prototype.destroy=function(){this._tileProvider=this._tileProvider&&this._tileProvider.destroy()};var MP,zCe=new ge;function dht(e,t){let n=le.center(e.rectangle,zCe),i=n.longitude-MP.longitude,o=n.latitude-MP.latitude;n=le.center(t.rectangle,zCe);let r=n.longitude-MP.longitude,s=n.latitude-MP.latitude;return i*i+o*o-(r*r+s*s)}var uht=new m,PP=[];function mht(e,t){let n=e._debug;if(n.suspendLodUpdate)return;let i=e._tilesToRender;i.length=0;let o,r=e._tileProvider;if(!l(e._levelZeroTiles)){let b=r.tilingScheme;if(l(b)){let x=r.tilingScheme;e._levelZeroTiles=WP.createLevelZeroTiles(x);let I=e._levelZeroTiles.length;if(PP.length<I)for(PP=new Array(I),o=0;o<I;++o)PP[o]===void 0&&(PP[o]=new vP)}else return}e._occluders.ellipsoid.cameraPosition=t.camera.positionWC;let s,a=e._levelZeroTiles,c=a.length>1?e._occluders:void 0;MP=t.camera.positionCartographic,a.sort(dht);let d=e._addHeightCallbacks,u=e._removeHeightCallbacks,h=t.frameNumber,p;if(d.length>0||u.length>0){for(o=0,p=a.length;o<p;++o)s=a[o],s._updateCustomData(h,d,u);d.length=0,u.length=0}let g=t.camera;e._cameraPositionCartographic=g.positionCartographic;let f=X.getTranslation(g.transform,uht);for(e._cameraReferenceFrameOriginCartographic=e.tileProvider.tilingScheme.ellipsoid.cartesianToCartographic(f,e._cameraReferenceFrameOriginCartographic),o=0,p=a.length;o<p;++o)s=a[o],e._tileReplacementQueue.markTileRendered(s),s.renderable?Cc(e,s,r,t,c,!1,PP[o]):(Ug(e,e._tileLoadQueueHigh,s,t),++n.tilesWaitingForChildren);e._lastSelectionFrameNumber=h}function Ug(e,t,n,i){n.needsLoading&&(e.tileProvider.computeTileLoadPriority!==void 0&&(n._loadPriority=e.tileProvider.computeTileLoadPriority(n,i)),t.push(n))}function vP(){this.allAreRenderable=!0,this.anyWereRenderedLastFrame=!1,this.notYetRenderableCount=0}function JCe(){this.southwest=new vP,this.southeast=new vP,this.northwest=new vP,this.northeast=new vP}JCe.prototype.combine=function(e){let t=this.southwest,n=this.southeast,i=this.northwest,o=this.northeast;e.allAreRenderable=t.allAreRenderable&&n.allAreRenderable&&i.allAreRenderable&&o.allAreRenderable,e.anyWereRenderedLastFrame=t.anyWereRenderedLastFrame||n.anyWereRenderedLastFrame||i.anyWereRenderedLastFrame||o.anyWereRenderedLastFrame,e.notYetRenderableCount=t.notYetRenderableCount+n.notYetRenderableCount+i.notYetRenderableCount+o.notYetRenderableCount};var E7=new Array(31);for(let e=0;e<E7.length;++e)E7[e]=new JCe;function hht(e,t,n,i,o){let r=e._debug;++r.tilesVisited,e._tileReplacementQueue.markTileRendered(n),n._updateCustomData(t.frameNumber),n.level>r.maxDepthVisited&&(r.maxDepthVisited=n.level);let s=Aht(e,t,n)<e.maximumScreenSpaceError,a=n.southwestChild,c=n.southeastChild,d=n.northwestChild,u=n.northeastChild,h=e._lastSelectionFrameNumber,p=n._lastSelectionResultFrame===h?n._lastSelectionResult:li.NONE,g=e.tileProvider;if(s||i){let f=li.originalResult(p)===li.RENDERED,b=li.originalResult(p)===li.CULLED||p===li.NONE,x=n.state===_a.DONE,I=f||b||x;if(I||l(g.canRenderWithoutLosingDetail)&&(I=g.canRenderWithoutLosingDetail(n)),I){s&&Ug(e,e._tileLoadQueueMedium,n,t),Xk(e,n),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=p===li.RENDERED,o.notYetRenderableCount=n.renderable?0:1,n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=li.RENDERED,o.anyWereRenderedLastFrame||e._tileToUpdateHeights.push(n);return}i=!0,s&&Ug(e,e._tileLoadQueueHigh,n,t)}if(g.canRefine(n)){if(a.upsampledFromParent&&c.upsampledFromParent&&d.upsampledFromParent&&u.upsampledFromParent){Xk(e,n),Ug(e,e._tileLoadQueueMedium,n,t),e._tileReplacementQueue.markTileRendered(a),e._tileReplacementQueue.markTileRendered(c),e._tileReplacementQueue.markTileRendered(d),e._tileReplacementQueue.markTileRendered(u),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=p===li.RENDERED,o.notYetRenderableCount=n.renderable?0:1,n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=li.RENDERED,o.anyWereRenderedLastFrame||e._tileToUpdateHeights.push(n);return}n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=li.REFINED;let b=e._tilesToRender.length,x=e._tileLoadQueueLow.length,I=e._tileLoadQueueMedium.length,_=e._tileLoadQueueHigh.length,E=e._tileToUpdateHeights.length;if(fht(e,a,c,d,u,t,i,o),b!==e._tilesToRender.length){let S=o.allAreRenderable,R=o.anyWereRenderedLastFrame,G=o.notYetRenderableCount,B=!1;if(!S&&!R){let w=e._tilesToRender;for(let P=b;P<w.length;++P){let A=w[P];for(;A!==void 0&&A._lastSelectionResult!==li.KICKED&&A!==n;)A._lastSelectionResult=li.kick(A._lastSelectionResult),A=A.parent}e._tilesToRender.length=b,e._tileToUpdateHeights.length=E,Xk(e,n),n._lastSelectionResult=li.RENDERED;let F=p===li.RENDERED;!F&&G>e.loadingDescendantLimit&&(e._tileLoadQueueLow.length=x,e._tileLoadQueueMedium.length=I,e._tileLoadQueueHigh.length=_,Ug(e,e._tileLoadQueueMedium,n,t),o.notYetRenderableCount=n.renderable?0:1,B=!0),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=F,F||e._tileToUpdateHeights.push(n),++r.tilesWaitingForChildren}e.preloadAncestors&&!B&&Ug(e,e._tileLoadQueueLow,n,t)}return}n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=li.RENDERED,Xk(e,n),Ug(e,e._tileLoadQueueHigh,n,t),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=p===li.RENDERED,o.notYetRenderableCount=n.renderable?0:1}function fht(e,t,n,i,o,r,s,a){let c=r.camera.positionCartographic,d=e._tileProvider,u=e._occluders,h=E7[t.level],p=h.southwest,g=h.southeast,f=h.northwest,b=h.northeast;c.longitude<t.rectangle.east?c.latitude<t.rectangle.north?(Cc(e,t,d,r,u,s,p),Cc(e,n,d,r,u,s,g),Cc(e,i,d,r,u,s,f),Cc(e,o,d,r,u,s,b)):(Cc(e,i,d,r,u,s,f),Cc(e,t,d,r,u,s,p),Cc(e,o,d,r,u,s,b),Cc(e,n,d,r,u,s,g)):c.latitude<t.rectangle.north?(Cc(e,n,d,r,u,s,g),Cc(e,t,d,r,u,s,p),Cc(e,o,d,r,u,s,b),Cc(e,i,d,r,u,s,f)):(Cc(e,o,d,r,u,s,b),Cc(e,i,d,r,u,s,f),Cc(e,n,d,r,u,s,g),Cc(e,t,d,r,u,s,p)),h.combine(a)}function pht(e,t){let n=t.rectangle;return l(e._cameraPositionCartographic)&&le.contains(n,e._cameraPositionCartographic)||l(e._cameraReferenceFrameOriginCartographic)&&le.contains(n,e._cameraReferenceFrameOriginCartographic)}function Cc(e,t,n,i,o,r,s){if(n.computeTileVisibility(t,i,o)!==Zr.NONE)return hht(e,i,t,r,s);if(++e._debug.tilesCulled,e._tileReplacementQueue.markTileRendered(t),s.allAreRenderable=!0,s.anyWereRenderedLastFrame=!1,s.notYetRenderableCount=0,pht(e,t)){(!l(t.data)||!l(t.data.vertexArray))&&Ug(e,e._tileLoadQueueMedium,t,i);let a=e._lastSelectionFrameNumber,c=t._lastSelectionResultFrame===a?t._lastSelectionResult:li.NONE;c!==li.CULLED_BUT_NEEDED&&c!==li.RENDERED&&e._tileToUpdateHeights.push(t),t._lastSelectionResult=li.CULLED_BUT_NEEDED}else e.preloadSiblings||t.level===0?(Ug(e,e._tileLoadQueueLow,t,i),t._lastSelectionResult=li.CULLED):t._lastSelectionResult=li.CULLED;t._lastSelectionResultFrame=i.frameNumber}function Aht(e,t,n){if(t.mode===re.SCENE2D||t.camera.frustum instanceof gn||t.camera.frustum instanceof qr)return ght(e,t,n);let i=e._tileProvider.getLevelMaximumGeometricError(n.level),o=n._distance,r=t.context.drawingBufferHeight,s=t.camera.frustum.sseDenominator,a=i*r/(o*s);return t.fog.enabled&&(a-=Z.fog(o,t.fog.density)*t.fog.sse),a/=t.pixelRatio,a}function ght(e,t,n){let o=t.camera.frustum,r=o.offCenterFrustum;l(r)&&(o=r);let s=t.context,a=s.drawingBufferWidth,c=s.drawingBufferHeight,d=e._tileProvider.getLevelMaximumGeometricError(n.level),u=Math.max(o.top-o.bottom,o.right-o.left)/Math.max(a,c),h=d/u;return t.fog.enabled&&t.mode!==re.SCENE2D&&(h-=Z.fog(n._distance,t.fog.density)*t.fog.sse),h/=t.pixelRatio,h}function Xk(e,t){e._tilesToRender.push(t)}function bht(e,t){let n=e._tileLoadQueueHigh,i=e._tileLoadQueueMedium,o=e._tileLoadQueueLow;if(n.length===0&&i.length===0&&o.length===0)return;e._tileReplacementQueue.trimTiles(e.tileCacheSize);let r=Fi()+e._loadQueueTimeSlice,s=e._tileProvider,a=_7(e,t,s,r,n,!1);a=_7(e,t,s,r,i,a),_7(e,t,s,r,o,a)}function yht(e,t){return e._loadPriority-t._loadPriority}function _7(e,t,n,i,o,r){n.computeTileLoadPriority!==void 0&&o.sort(yht);for(let s=0,a=o.length;s<a&&(Fi()<i||!r);++s){let c=o[s];e._tileReplacementQueue.markTileRendered(c),n.loadTile(t,c),r=!0}return r}var rL=new En,Wk=new ge,ay=new m,Cht=[];function xht(e,t){if(!l(e.tileProvider.tilingScheme))return;let n=Cht;n.length=0;let i=e._tileToUpdateHeights,o=Fi(),r=e._updateHeightsTimeSlice,s=o+r,a=t.mode,c=t.mapProjection,d=e.tileProvider.tilingScheme.ellipsoid,u;for(;i.length>0;){let h=i[0];if(!l(h.data)||!l(h.data.mesh)){let b=h._lastSelectionResultFrame===e._lastSelectionFrameNumber?h._lastSelectionResult:li.NONE;(b===li.RENDERED||b===li.CULLED_BUT_NEEDED)&&n.push(h),h.clearPositionCache(),i.shift(),e._lastTileIndex=0;continue}let p=h.customData,g=p.length,f=!1;for(u=e._lastTileIndex;u<g;++u){let b=p[u],x=h.data.terrainData,I=l(x)&&x.wasCreatedByUpsampling();if(h.level>b.level&&!I){let _,E=h.getPositionCacheEntry(b.positionCartographic,e.maximumScreenSpaceError);if(l(E))_=E;else{if(l(b.positionOnEllipsoidSurface)||(b.positionOnEllipsoidSurface=m.fromRadians(b.positionCartographic.longitude,b.positionCartographic.latitude,0,d)),a===re.SCENE3D){let S=d.geodeticSurfaceNormal(b.positionOnEllipsoidSurface,rL.direction),R=d.getSurfaceNormalIntersectionWithZAxis(b.positionOnEllipsoidSurface,11500,rL.origin);if(!l(R)){let G=0;l(h.data.tileBoundingRegion)&&(G=h.data.tileBoundingRegion.minimumHeight);let B=Math.min(G,-11500),w=m.multiplyByScalar(S,Math.abs(B)+1,ay);m.subtract(b.positionOnEllipsoidSurface,w,rL.origin)}}else ge.clone(b.positionCartographic,Wk),Wk.height=-11500,c.project(Wk,ay),m.fromElements(ay.z,ay.x,ay.y,ay),m.clone(ay,rL.origin),m.clone(m.UNIT_X,rL.direction);_=h.data.pick(rL,a,c,!1,ay),l(_)&&h.setPositionCacheEntry(b.positionCartographic,e.maximumScreenSpaceError,_)}if(l(_)){if(l(b.callback)){let S=d.cartesianToCartographic(_,Wk);b.callback(S)}b.level=h.level}}if(Fi()>=s){f=!0;break}}if(f){e._lastTileIndex=u;break}else e._lastTileIndex=0,i.shift()}for(u=0;u<n.length;u++)i.push(n[u])}function Iht(e,t){let n=e._tileProvider,i=e._tilesToRender;for(let o=0,r=i.length;o<r;++o){let s=i[o];n.showTileThisFrame(s,t)}}var NP=Mm;function uf(e){e=e??ie.default;let t=new Tp({ellipsoid:e}),n=new Xx;this._ellipsoid=e,this._imageryLayerCollection=n,this._surfaceShaderSet=new GP,this._material=void 0,this._surface=new NP({tileProvider:new BP({terrainProvider:t,imageryLayers:n,surfaceShaderSet:this._surfaceShaderSet})}),this._terrainProvider=t,this._terrainProviderChanged=new Ce,this._undergroundColor=U.clone(U.BLACK),this._undergroundColorAlphaByDistance=new zt(e.maximumRadius/1e3,0,e.maximumRadius/5,1),this._translucency=new wP,S7(this),this.show=!0,this._oceanNormalMapResourceDirty=!0,this._oceanNormalMapResource=new Ve({url:hn("Assets/Textures/waterNormalsSmall.jpg")}),this.maximumScreenSpaceError=2,this.tileCacheSize=100,this.loadingDescendantLimit=20,this.preloadAncestors=!0,this.preloadSiblings=!1,this.fillHighlightColor=void 0,this.enableLighting=!1,this.lambertDiffuseMultiplier=.9,this.dynamicAtmosphereLighting=!0,this.dynamicAtmosphereLightingFromSun=!1,this.showGroundAtmosphere=ie.WGS84.equals(e),this.atmosphereLightIntensity=10,this.atmosphereRayleighCoefficient=new m(55e-7,13e-6,284e-7),this.atmosphereMieCoefficient=new m(21e-6,21e-6,21e-6),this.atmosphereRayleighScaleHeight=1e4,this.atmosphereMieScaleHeight=3200,this.atmosphereMieAnisotropy=.9,this.lightingFadeOutDistance=Z.PI_OVER_TWO*e.minimumRadius,this.lightingFadeInDistance=Z.PI*e.minimumRadius,this.nightFadeOutDistance=Z.PI_OVER_TWO*e.minimumRadius,this.nightFadeInDistance=5*Z.PI_OVER_TWO*e.minimumRadius,this.showWaterEffect=!0,this.depthTestAgainstTerrain=!1,this.shadows=Gn.RECEIVE_ONLY,this.atmosphereHueShift=0,this.atmosphereSaturationShift=0,this.atmosphereBrightnessShift=0,this.showSkirts=!0,this.backFaceCulling=!0,this._oceanNormalMap=void 0,this._zoomedOutOceanSpecularIntensity=void 0,this.vertexShadowDarkness=.3}Object.defineProperties(uf.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},imageryLayers:{get:function(){return this._imageryLayerCollection}},imageryLayersUpdatedEvent:{get:function(){return this._surface.tileProvider.imageryLayersUpdatedEvent}},tilesLoaded:{get:function(){return l(this._surface)?this._surface._tileLoadQueueHigh.length===0&&this._surface._tileLoadQueueMedium.length===0&&this._surface._tileLoadQueueLow.length===0:!0}},baseColor:{get:function(){return this._surface.tileProvider.baseColor},set:function(e){this._surface.tileProvider.baseColor=e}},clippingPlanes:{get:function(){return this._surface.tileProvider.clippingPlanes},set:function(e){this._surface.tileProvider.clippingPlanes=e}},clippingPolygons:{get:function(){return this._surface.tileProvider.clippingPolygons},set:function(e){this._surface.tileProvider.clippingPolygons=e}},cartographicLimitRectangle:{get:function(){return this._surface.tileProvider.cartographicLimitRectangle},set:function(e){l(e)||(e=le.clone(le.MAX_VALUE)),this._surface.tileProvider.cartographicLimitRectangle=e}},oceanNormalMapUrl:{get:function(){return this._oceanNormalMapResource.url},set:function(e){this._oceanNormalMapResource.url=e,this._oceanNormalMapResourceDirty=!0}},terrainProvider:{get:function(){return this._terrainProvider},set:function(e){e!==this._terrainProvider&&(this._terrainProvider=e,this._terrainProviderChanged.raiseEvent(e),l(this._material)&&S7(this))}},terrainProviderChanged:{get:function(){return this._terrainProviderChanged}},tileLoadProgressEvent:{get:function(){return this._surface.tileLoadProgressEvent}},material:{get:function(){return this._material},set:function(e){this._material!==e&&(this._material=e,S7(this))}},undergroundColor:{get:function(){return this._undergroundColor},set:function(e){this._undergroundColor=U.clone(e,this._undergroundColor)}},undergroundColorAlphaByDistance:{get:function(){return this._undergroundColorAlphaByDistance},set:function(e){this._undergroundColorAlphaByDistance=zt.clone(e,this._undergroundColorAlphaByDistance)}},translucency:{get:function(){return this._translucency}}});function S7(e){let t=[],n=l(e._material)&&(l(e._material.shaderSource.match(/slope/))||l(e._material.shaderSource.match("normalEC"))),i=[_h,qS];l(e._material)&&(!n||e._terrainProvider.requestVertexNormals)?(i.push(e._material.shaderSource),t.push("APPLY_MATERIAL"),e._surface._tileProvider.materialUniformMap=e._material._uniforms):e._surface._tileProvider.materialUniformMap=void 0,i.push(yP),e._surfaceShaderSet.baseVertexShaderSource=new Oe({sources:[_h,qS,CP],defines:t}),e._surfaceShaderSet.baseFragmentShaderSource=new Oe({sources:i,defines:t}),e._surfaceShaderSet.material=e._material}function _ht(e){return function(t,n){let i=ue.distanceSquaredTo(t.pickBoundingSphere,e),o=ue.distanceSquaredTo(n.pickBoundingSphere,e);return i-o}}var Eht=[],Tht={start:0,stop:0};uf.prototype.pickWorldCoordinates=function(e,t,n,i){n=n??!0;let o=t.mode,r=t.mapProjection,s=Eht;s.length=0;let a=this._surface._tilesToRender,c=a.length,d,u;for(u=0;u<c;++u){d=a[u];let p=d.data;if(!l(p))continue;let g=p.pickBoundingSphere;if(o!==re.SCENE3D)p.pickBoundingSphere=g=ue.fromRectangleWithHeights2D(d.rectangle,r,p.tileBoundingRegion.minimumHeight,p.tileBoundingRegion.maximumHeight,g),m.fromElements(g.center.z,g.center.x,g.center.y,g.center);else if(l(p.renderedMesh))ue.clone(p.tileBoundingRegion.boundingSphere,g);else continue;let f=fi.raySphere(e,g,Tht);l(f)&&s.push(p)}s.sort(_ht(e.origin));let h;for(c=s.length,u=0;u<c&&(h=s[u].pick(e,t.mode,t.mapProjection,n,i),!l(h));++u);return h};var Sht=new ge;uf.prototype.pick=function(e,t,n){if(n=this.pickWorldCoordinates(e,t,!0,n),l(n)&&t.mode!==re.SCENE3D){n=m.fromElements(n.y,n.z,n.x,n);let i=t.mapProjection.unproject(n,Sht);n=this._ellipsoid.cartographicToCartesian(i,n)}return n};var Lht=new m,jCe=new m,Rht=new ge,Vht=new En;function T7(e,t){return l(e)&&le.contains(e.rectangle,t)?e:void 0}uf.prototype.getHeight=function(e){let t=this._surface._levelZeroTiles;if(!l(t))return;let n,i,o=t.length;for(i=0;i<o&&(n=t[i],!le.contains(n.rectangle,e));++i);if(i>=o)return;let r=n;for(;l(n);)n=T7(n._southwestChild,e)||T7(n._southeastChild,e)||T7(n._northwestChild,e)||n._northeastChild,l(n)&&l(n.data)&&l(n.data.renderedMesh)&&(r=n);if(n=r,!l(n)||!l(n.data)||!l(n.data.renderedMesh))return;let s=this._surface._tileProvider.tilingScheme.projection,a=this._surface._tileProvider.tilingScheme.ellipsoid,c=m.fromRadians(e.longitude,e.latitude,0,a,Lht),d=Vht,u=a.geodeticSurfaceNormal(c,d.direction),h=a.getSurfaceNormalIntersectionWithZAxis(c,11500,d.origin);if(!l(h)){let g;l(n.data.tileBoundingRegion)&&(g=n.data.tileBoundingRegion.minimumHeight);let f=Math.min(g??0,-11500),b=m.multiplyByScalar(u,Math.abs(f)+1,jCe);m.subtract(c,b,d.origin)}let p=n.data.pick(d,void 0,s,!1,jCe);if(l(p))return a.cartesianToCartographic(p,Rht).height};uf.prototype.update=function(e){this.show&&e.passes.render&&this._surface.update(e)};uf.prototype.beginFrame=function(e){let t=this._surface,n=t.tileProvider,i=this.terrainProvider,o=l(i)&&i.hasWaterMask&&i.hasWaterMask;if(o&&this._oceanNormalMapResourceDirty){this._oceanNormalMapResourceDirty=!1;let a=this._oceanNormalMapResource,c=a.url;if(l(c)){let d=this;a.fetchImage().then(function(u){c===d._oceanNormalMapResource.url&&(d._oceanNormalMap=d._oceanNormalMap&&d._oceanNormalMap.destroy(),d._oceanNormalMap=new Wt({context:e.context,source:u}))})}else this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy()}let r=e.passes,s=e.mode;r.render&&(this.showGroundAtmosphere?this._zoomedOutOceanSpecularIntensity=.4:this._zoomedOutOceanSpecularIntensity=.5,t.maximumScreenSpaceError=this.maximumScreenSpaceError,t.tileCacheSize=this.tileCacheSize,t.loadingDescendantLimit=this.loadingDescendantLimit,t.preloadAncestors=this.preloadAncestors,t.preloadSiblings=this.preloadSiblings,n.terrainProvider=this.terrainProvider,n.lightingFadeOutDistance=this.lightingFadeOutDistance,n.lightingFadeInDistance=this.lightingFadeInDistance,n.nightFadeOutDistance=this.nightFadeOutDistance,n.nightFadeInDistance=this.nightFadeInDistance,n.zoomedOutOceanSpecularIntensity=s===re.SCENE3D?this._zoomedOutOceanSpecularIntensity:0,n.hasWaterMask=o,n.showWaterEffect=this.showWaterEffect,n.oceanNormalMap=this._oceanNormalMap,n.enableLighting=this.enableLighting,n.dynamicAtmosphereLighting=this.dynamicAtmosphereLighting,n.dynamicAtmosphereLightingFromSun=this.dynamicAtmosphereLightingFromSun,n.showGroundAtmosphere=this.showGroundAtmosphere,n.atmosphereLightIntensity=this.atmosphereLightIntensity,n.atmosphereRayleighCoefficient=this.atmosphereRayleighCoefficient,n.atmosphereMieCoefficient=this.atmosphereMieCoefficient,n.atmosphereRayleighScaleHeight=this.atmosphereRayleighScaleHeight,n.atmosphereMieScaleHeight=this.atmosphereMieScaleHeight,n.atmosphereMieAnisotropy=this.atmosphereMieAnisotropy,n.shadows=this.shadows,n.hueShift=this.atmosphereHueShift,n.saturationShift=this.atmosphereSaturationShift,n.brightnessShift=this.atmosphereBrightnessShift,n.fillHighlightColor=this.fillHighlightColor,n.showSkirts=this.showSkirts,n.backFaceCulling=this.backFaceCulling,n.vertexShadowDarkness=this.vertexShadowDarkness,n.undergroundColor=this._undergroundColor,n.undergroundColorAlphaByDistance=this._undergroundColorAlphaByDistance,n.lambertDiffuseMultiplier=this.lambertDiffuseMultiplier,t.beginFrame(e))};uf.prototype.render=function(e){this.show&&(l(this._material)&&this._material.update(e.context),this._surface.render(e))};uf.prototype.endFrame=function(e){this.show&&e.passes.render&&this._surface.endFrame(e)};uf.prototype.isDestroyed=function(){return!1};uf.prototype.destroy=function(){return this._surfaceShaderSet=this._surfaceShaderSet&&this._surfaceShaderSet.destroy(),this._surface=this._surface&&this._surface.destroy(),this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy(),me(this)};var DP=uf;var uPi=y(C(),1);var SFi=y(C(),1);var gFi=y(C(),1);var dFi=y(C(),1);function Ght(e,t,n,i){this.rightAscension=e,this.declination=t,this.rotation=n,this.rotationRate=i}var QP=Ght;var uxe={},Zht=32.184,Bht=2451545,qCe=-.0529921,$Ce=-.1059842,exe=13.0120009,txe=13.3407154,nxe=.9856003,ixe=26.4057084,oxe=13.064993,rxe=.3287146,sxe=1.7484877,axe=-.1589763,cxe=.0036096,lxe=.1643573,dxe=12.9590088,L7=new j;uxe.ComputeMoon=function(e,t){l(e)||(e=j.now()),L7=j.addSeconds(e,Zht,L7);let n=j.totalDays(L7)-Bht,i=n/ai.DAYS_PER_JULIAN_CENTURY,o=(125.045+qCe*n)*Z.RADIANS_PER_DEGREE,r=(250.089+$Ce*n)*Z.RADIANS_PER_DEGREE,s=(260.008+exe*n)*Z.RADIANS_PER_DEGREE,a=(176.625+txe*n)*Z.RADIANS_PER_DEGREE,c=(357.529+nxe*n)*Z.RADIANS_PER_DEGREE,d=(311.589+ixe*n)*Z.RADIANS_PER_DEGREE,u=(134.963+oxe*n)*Z.RADIANS_PER_DEGREE,h=(276.617+rxe*n)*Z.RADIANS_PER_DEGREE,p=(34.226+sxe*n)*Z.RADIANS_PER_DEGREE,g=(15.134+axe*n)*Z.RADIANS_PER_DEGREE,f=(119.743+cxe*n)*Z.RADIANS_PER_DEGREE,b=(239.961+lxe*n)*Z.RADIANS_PER_DEGREE,x=(25.053+dxe*n)*Z.RADIANS_PER_DEGREE,I=Math.sin(o),_=Math.sin(r),E=Math.sin(s),S=Math.sin(a),R=Math.sin(c),G=Math.sin(d),B=Math.sin(u),w=Math.sin(h),F=Math.sin(p),P=Math.sin(g),A=Math.sin(f),T=Math.sin(b),L=Math.sin(x),V=Math.cos(o),W=Math.cos(r),M=Math.cos(s),Q=Math.cos(a),N=Math.cos(c),k=Math.cos(d),v=Math.cos(u),O=Math.cos(h),H=Math.cos(p),ee=Math.cos(g),K=Math.cos(f),te=Math.cos(b),q=Math.cos(x),pe=(269.9949+.0031*i-3.8787*I-.1204*_+.07*E-.0172*S+.0072*G-.0052*P+.0043*L)*Z.RADIANS_PER_DEGREE,ye=(66.5392+.013*i+1.5419*V+.0239*W-.0278*M+.0068*Q-.0029*k+9e-4*v+8e-4*ee-9e-4*q)*Z.RADIANS_PER_DEGREE,he=(38.3213+13.17635815*n-14e-13*n*n+3.561*I+.1208*_-.0642*E+.0158*S+.0252*R-.0066*G-.0047*B-.0046*w+.0028*F+.0052*P+.004*A+.0019*T-.0044*L)*Z.RADIANS_PER_DEGREE,xe=(13.17635815-14e-13*(2*n)+3.561*V*qCe+.1208*W*$Ce-.0642*M*exe+.0158*Q*txe+.0252*N*nxe-.0066*k*ixe-.0047*v*oxe-.0046*O*rxe+.0028*H*sxe+.0052*ee*axe+.004*K*cxe+.0019*te*lxe-.0044*q*dxe)/86400*Z.RADIANS_PER_DEGREE;return l(t)||(t=new QP),t.rightAscension=pe,t.declination=ye,t.rotation=he,t.rotationRate=xe,t};var UP=uxe;function mxe(e){(!l(e)||typeof e!="function")&&(e=UP.ComputeMoon),this._computeFunction=e}var wht=new m,Xht=new m,Wht=new m;function Fht(e,t,n){let i=wht;i.x=Math.cos(e+Z.PI_OVER_TWO),i.y=Math.sin(e+Z.PI_OVER_TWO),i.z=0;let o=Math.cos(t),r=Wht;r.x=o*Math.cos(e),r.y=o*Math.sin(e),r.z=Math.sin(t);let s=m.cross(r,i,Xht);return l(n)||(n=new $),n[0]=i.x,n[1]=s.x,n[2]=r.x,n[3]=i.y,n[4]=s.y,n[5]=r.y,n[6]=i.z,n[7]=s.z,n[8]=r.z,n}var Pht=new $,Mht=new Pe;mxe.prototype.evaluate=function(e,t){l(e)||(e=j.now());let n=this._computeFunction(e),i=Fht(n.rightAscension,n.declination,t),o=Z.zeroToTwoPi(n.rotation),r=Pe.fromAxisAngle(m.UNIT_Z,o,Mht),s=$.fromQuaternion(Pe.conjugate(r,r),Pht);return $.multiply(s,i,i)};var kP=mxe;var JFi=y(C(),1);var R7={position:0};function Fk(e){e=e??Y.EMPTY_OBJECT,this.center=m.clone(e.center??m.ZERO),this._center=new m,this.radii=m.clone(e.radii),this._radii=new m,this._oneOverEllipsoidRadiiSquared=new m,this._boundingSphere=new ue,this.modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this._modelMatrix=new X,this._computedModelMatrix=new X,this.show=e.show??!0,this.material=e.material??so.fromType(so.ColorType),this._material=void 0,this._translucent=void 0,this.id=e.id,this._id=void 0,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.onlySunLighting=e.onlySunLighting??!1,this._onlySunLighting=!1,this._depthTestEnabled=e.depthTestEnabled??!0,this._useLogDepth=!1,this._sp=void 0,this._rs=void 0,this._va=void 0,this._pickSP=void 0,this._pickId=void 0,this._colorCommand=new ot({owner:e._owner??this}),this._pickCommand=new ot({owner:e._owner??this,pickOnly:!0});let t=this;this._uniforms={u_radii:function(){return t.radii},u_oneOverEllipsoidRadiiSquared:function(){return t._oneOverEllipsoidRadiiSquared}},this._pickUniforms={czm_pickColor:function(){return t._pickId.color}}}function vht(e){let t=e.cache.ellipsoidPrimitive_vertexArray;if(l(t))return t;let n=sc.createGeometry(sc.fromDimensions({dimensions:new m(2,2,2),vertexFormat:we.POSITION_ONLY}));return t=ui.fromGeometry({context:e,geometry:n,attributeLocations:R7,bufferUsage:Ne.STATIC_DRAW,interleave:!0}),e.cache.ellipsoidPrimitive_vertexArray=t,t}Fk.prototype.update=function(e){if(!this.show||e.mode!==re.SCENE3D||!l(this.center)||!l(this.radii))return;let t=e.context,n=this.material.isTranslucent(),i=this._translucent!==n;(!l(this._rs)||i)&&(this._translucent=n,this._rs=Qe.fromCache({cull:{enabled:!0,face:Xi.FRONT},depthTest:{enabled:this._depthTestEnabled},depthMask:!n&&t.fragmentDepth,blending:n?bn.ALPHA_BLEND:void 0})),l(this._va)||(this._va=vht(t));let o=!1,r=this.radii;if(!m.equals(this._radii,r)){m.clone(r,this._radii);let b=this._oneOverEllipsoidRadiiSquared;b.x=1/(r.x*r.x),b.y=1/(r.y*r.y),b.z=1/(r.z*r.z),o=!0}(!X.equals(this.modelMatrix,this._modelMatrix)||!m.equals(this.center,this._center))&&(X.clone(this.modelMatrix,this._modelMatrix),m.clone(this.center,this._center),X.multiplyByTranslation(this.modelMatrix,this.center,this._computedModelMatrix),o=!0),o&&(m.clone(m.ZERO,this._boundingSphere.center),this._boundingSphere.radius=m.maximumComponent(r),ue.transform(this._boundingSphere,this._computedModelMatrix,this._boundingSphere));let s=this._material!==this.material;this._material=this.material,this._material.update(t);let a=this.onlySunLighting!==this._onlySunLighting;this._onlySunLighting=this.onlySunLighting;let c=e.useLogDepth,d=this._useLogDepth!==c;this._useLogDepth=c;let u=this._colorCommand,h,p;(s||a||i||d)&&(h=new Oe({sources:[jS]}),p=new Oe({sources:[this.material.shaderSource,JS]}),this.onlySunLighting&&p.defines.push("ONLY_SUN_LIGHTING"),!n&&t.fragmentDepth&&p.defines.push("WRITE_DEPTH"),this._useLogDepth&&(h.defines.push("LOG_DEPTH"),p.defines.push("LOG_DEPTH")),this._sp=ln.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:h,fragmentShaderSource:p,attributeLocations:R7}),u.vertexArray=this._va,u.renderState=this._rs,u.shaderProgram=this._sp,u.uniformMap=Lt(this._uniforms,this.material._uniforms),u.executeInClosestFrustum=n);let g=e.commandList,f=e.passes;if(f.render&&(u.boundingVolume=this._boundingSphere,u.debugShowBoundingVolume=this.debugShowBoundingVolume,u.modelMatrix=this._computedModelMatrix,u.pass=n?Ge.TRANSLUCENT:Ge.OPAQUE,g.push(u)),f.pick){let b=this._pickCommand;(!l(this._pickId)||this._id!==this.id)&&(this._id=this.id,this._pickId=this._pickId&&this._pickId.destroy(),this._pickId=t.createPickId({primitive:this,id:this.id})),(s||a||!l(this._pickSP)||d)&&(h=new Oe({sources:[jS]}),p=new Oe({sources:[this.material.shaderSource,JS],pickColorQualifier:"uniform"}),this.onlySunLighting&&p.defines.push("ONLY_SUN_LIGHTING"),!n&&t.fragmentDepth&&p.defines.push("WRITE_DEPTH"),this._useLogDepth&&(h.defines.push("LOG_DEPTH"),p.defines.push("LOG_DEPTH")),this._pickSP=ln.replaceCache({context:t,shaderProgram:this._pickSP,vertexShaderSource:h,fragmentShaderSource:p,attributeLocations:R7}),b.vertexArray=this._va,b.renderState=this._rs,b.shaderProgram=this._pickSP,b.uniformMap=Lt(Lt(this._uniforms,this._pickUniforms),this.material._uniforms),b.executeInClosestFrustum=n),b.boundingVolume=this._boundingSphere,b.modelMatrix=this._computedModelMatrix,b.pass=n?Ge.TRANSLUCENT:Ge.OPAQUE,g.push(b)}};Fk.prototype.isDestroyed=function(){return!1};Fk.prototype.destroy=function(){return this._sp=this._sp&&this._sp.destroy(),this._pickSP=this._pickSP&&this._pickSP.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),me(this)};var YP=Fk;function OP(e){e=e??Y.EMPTY_OBJECT;let t=e.textureUrl;l(t)||(t=hn("Assets/Textures/moonSmall.jpg")),this.show=e.show??!0,this.textureUrl=t,this._ellipsoid=e.ellipsoid??ie.MOON,this.onlySunLighting=e.onlySunLighting??!0,this._ellipsoidPrimitive=new YP({radii:this.ellipsoid.radii,material:so.fromType(so.ImageType),depthTestEnabled:!1,_owner:this}),this._ellipsoidPrimitive.material.translucent=!1,this._axes=new kP}Object.defineProperties(OP.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var Pk=new $,Nht=new $,Dht=new m,Mk=[];OP.prototype.update=function(e){if(!this.show)return;let t=this._ellipsoidPrimitive;t.material.uniforms.image=this.textureUrl,t.onlySunLighting=this.onlySunLighting;let n=e.time;l(Dt.computeIcrfToFixedMatrix(n,Pk))||Dt.computeTemeToPseudoFixedMatrix(n,Pk);let i=this._axes.evaluate(n,Nht);$.transpose(i,i),$.multiply(Pk,i,i);let o=ry.computeMoonPositionInEarthInertialFrame(n,Dht);$.multiplyByVector(Pk,o,o),X.fromRotationTranslation(i,o,t.modelMatrix);let r=e.commandList;return e.commandList=Mk,Mk.length=0,t.update(e),e.commandList=r,Mk.length===1?Mk[0]:void 0};OP.prototype.isDestroyed=function(){return!1};OP.prototype.destroy=function(){return this._ellipsoidPrimitive=this._ellipsoidPrimitive&&this._ellipsoidPrimitive.destroy(),me(this)};var HP=OP;var i8i=y(C(),1);var hPi=y(C(),1);var V7=[],G7=[];function Qht(e,t,n,i,o,r){let s=o-i+1,a=r-o,c=V7,d=G7,u,h;for(u=0;u<s;++u)c[u]=e[i+u];for(h=0;h<a;++h)d[h]=e[o+h+1];u=0,h=0;for(let p=i;p<=r;++p){let g=c[u],f=d[h];u<s&&(h>=a||t(g,f,n)<=0)?(e[p]=g,++u):h<a&&(e[p]=f,++h)}}function Z7(e,t,n,i,o){if(i>=o)return;let r=Math.floor((i+o)*.5);Z7(e,t,n,i,r),Z7(e,t,n,r+1,o),Qht(e,t,n,i,r,o)}function Uht(e,t,n){let i=e.length,o=Math.ceil(i*.5);V7.length=o,G7.length=o,Z7(e,t,n,0,i-1),V7.length=0,G7.length=0}var Sp=Uht;var IPi=y(C(),1);function Jc(e,t){this._occluderPosition=m.clone(e.center),this._occluderRadius=e.radius,this._horizonDistance=0,this._horizonPlaneNormal=void 0,this._horizonPlanePosition=void 0,this._cameraPosition=void 0,this.cameraPosition=t}var vk=new m;Object.defineProperties(Jc.prototype,{position:{get:function(){return this._occluderPosition}},radius:{get:function(){return this._occluderRadius}},cameraPosition:{set:function(e){e=m.clone(e,this._cameraPosition);let t=m.subtract(this._occluderPosition,e,vk),n=m.magnitudeSquared(t),i=this._occluderRadius*this._occluderRadius,o,r,s;if(n>i){o=Math.sqrt(n-i),n=1/Math.sqrt(n),r=m.multiplyByScalar(t,n,vk);let a=o*o*n;s=m.add(e,m.multiplyByScalar(r,a,vk),vk)}else o=Number.MAX_VALUE;this._horizonDistance=o,this._horizonPlaneNormal=r,this._horizonPlanePosition=s,this._cameraPosition=e}}});Jc.fromBoundingSphere=function(e,t,n){return l(n)?(m.clone(e.center,n._occluderPosition),n._occluderRadius=e.radius,n.cameraPosition=t,n):new Jc(e,t)};var fxe=new m;Jc.prototype.isPointVisible=function(e){if(this._horizonDistance!==Number.MAX_VALUE){let t=m.subtract(e,this._occluderPosition,fxe),n=this._occluderRadius;if(n=m.magnitudeSquared(t)-n*n,n>0)return n=Math.sqrt(n)+this._horizonDistance,t=m.subtract(e,this._cameraPosition,t),n*n>m.magnitudeSquared(t)}return!1};var kht=new m;Jc.prototype.isBoundingSphereVisible=function(e){let t=m.clone(e.center,kht),n=e.radius;if(this._horizonDistance!==Number.MAX_VALUE){let i=m.subtract(t,this._occluderPosition,fxe),o=this._occluderRadius-n;if(o=m.magnitudeSquared(i)-o*o,n<this._occluderRadius)return o>0?(o=Math.sqrt(o)+this._horizonDistance,i=m.subtract(t,this._cameraPosition,i),o*o+n*n>m.magnitudeSquared(i)):!1;if(o>0){i=m.subtract(t,this._cameraPosition,i);let r=m.magnitudeSquared(i),s=this._occluderRadius*this._occluderRadius,a=n*n;return(this._horizonDistance*this._horizonDistance+s)*a>r*s?!0:(o=Math.sqrt(o)+this._horizonDistance,o*o+a>r)}return!0}return!1};var Yht=new m;Jc.prototype.computeVisibility=function(e){let t=m.clone(e.center),n=e.radius;if(n>this._occluderRadius)return Zr.FULL;if(this._horizonDistance!==Number.MAX_VALUE){let i=m.subtract(t,this._occluderPosition,Yht),o=this._occluderRadius-n,r=m.magnitudeSquared(i);if(o=r-o*o,o>0){o=Math.sqrt(o)+this._horizonDistance,i=m.subtract(t,this._cameraPosition,i);let s=m.magnitudeSquared(i);return o*o+n*n<s?Zr.NONE:(o=this._occluderRadius+n,o=r-o*o,o>0?(o=Math.sqrt(o)+this._horizonDistance,s<o*o+n*n?Zr.FULL:Zr.PARTIAL):(i=m.subtract(t,this._horizonPlanePosition,i),m.dot(i,this._horizonPlaneNormal)>-n?Zr.PARTIAL:Zr.FULL))}}return Zr.NONE};var Nk=new m;Jc.computeOccludeePoint=function(e,t,n){let i=m.clone(t),o=m.clone(e.center),r=e.radius,s=n.length,a=m.normalize(m.subtract(i,o,Nk),Nk),c=-m.dot(a,o),d=Jc._anyRotationVector(o,a,c),u=Jc._horizonToPlaneNormalDotProduct(e,a,c,d,n[0]);if(!u)return;let h;for(let g=1;g<s;++g){if(h=Jc._horizonToPlaneNormalDotProduct(e,a,c,d,n[g]),!h)return;h<u&&(u=h)}if(u<.0017453283658983088)return;let p=r/u;return m.add(o,m.multiplyByScalar(a,p,Nk),Nk)};var Oht=[];Jc.computeOccludeePointFromRectangle=function(e,t){t=t??ie.default;let n=le.subsample(e,t,0,Oht),i=ue.fromPoints(n),o=m.ZERO;if(!m.equals(o,i.center))return Jc.computeOccludeePoint(new ue(o,t.minimumRadius),i.center,n)};var Hht=new m;Jc._anyRotationVector=function(e,t,n){let i=m.abs(t,Hht),o=i.x>i.y?0:1;(o===0&&i.z>i.x||o===1&&i.z>i.y)&&(o=2);let r=new m,s;o===0?(i.x=e.x,i.y=e.y+1,i.z=e.z+1,s=m.UNIT_X):o===1?(i.x=e.x+1,i.y=e.y,i.z=e.z+1,s=m.UNIT_Y):(i.x=e.x+1,i.y=e.y+1,i.z=e.z,s=m.UNIT_Z);let a=(m.dot(t,i)+n)/-m.dot(t,s);return m.normalize(m.subtract(m.add(i,m.multiplyByScalar(s,a,r),i),e,i),i)};var zht=new m;Jc._rotationVector=function(e,t,n,i,o){let r=m.subtract(i,e,zht);if(r=m.normalize(r,r),m.dot(t,r)<.9999999847691291){let s=m.cross(t,r,r);if(m.magnitude(s)>Z.EPSILON13)return m.normalize(s,new m)}return o};var B7=new m,Kht=new m,Dk=new m,hxe=new m;Jc._horizonToPlaneNormalDotProduct=function(e,t,n,i,o){let r=m.clone(o,B7),s=m.clone(e.center,Kht),a=e.radius,c=m.subtract(s,r,Dk),d=m.magnitudeSquared(c),u=a*a;if(d<u)return!1;let h=d-u,p=Math.sqrt(h),f=1/Math.sqrt(d),x=p*f*p;c=m.normalize(c,c);let I=m.add(r,m.multiplyByScalar(c,x,hxe),hxe),_=Math.sqrt(h-x*x),E=this._rotationVector(s,t,n,r,i),S=m.fromElements(E.x*E.x*c.x+(E.x*E.y-E.z)*c.y+(E.x*E.z+E.y)*c.z,(E.x*E.y+E.z)*c.x+E.y*E.y*c.y+(E.y*E.z-E.x)*c.z,(E.x*E.z-E.y)*c.x+(E.y*E.z+E.x)*c.y+E.z*E.z*c.z,B7);S=m.normalize(S,S);let R=m.multiplyByScalar(S,_,B7);E=m.normalize(m.subtract(m.add(I,R,Dk),s,Dk),Dk);let G=m.dot(t,E);E=m.normalize(m.subtract(m.subtract(I,R,E),s,E),E);let B=m.dot(t,E);return G<B?G:B};var zP=Jc;var PPi=y(C(),1);var ZPi=y(C(),1);function Lp(e){e=e??Y.EMPTY_OBJECT,this.left=e.left,this._left=void 0,this.right=e.right,this._right=void 0,this.top=e.top,this._top=void 0,this.bottom=e.bottom,this._bottom=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this._cullingVolume=new Xs,this._perspectiveMatrix=new X,this._infinitePerspective=new X}function w7(e){let{top:t,bottom:n,right:i,left:o,near:r,far:s}=e;(t!==e._top||n!==e._bottom||o!==e._left||i!==e._right||r!==e._near||s!==e._far)&&(e._left=o,e._right=i,e._top=t,e._bottom=n,e._near=r,e._far=s,e._perspectiveMatrix=X.computePerspectiveOffCenter(o,i,n,t,r,s,e._perspectiveMatrix),e._infinitePerspective=X.computeInfinitePerspectiveOffCenter(o,i,n,t,r,e._infinitePerspective))}Object.defineProperties(Lp.prototype,{projectionMatrix:{get:function(){return w7(this),this._perspectiveMatrix}},infiniteProjectionMatrix:{get:function(){return w7(this),this._infinitePerspective}}});var Jht=new m,jht=new m,qht=new m,$ht=new m;Lp.prototype.computeCullingVolume=function(e,t,n){let i=this._cullingVolume.planes,o=this.top,r=this.bottom,s=this.right,a=this.left,c=this.near,d=this.far,u=m.cross(t,n,Jht),h=jht;m.multiplyByScalar(t,c,h),m.add(e,h,h);let p=qht;m.multiplyByScalar(t,d,p),m.add(e,p,p);let g=$ht;m.multiplyByScalar(u,a,g),m.add(h,g,g),m.subtract(g,e,g),m.normalize(g,g),m.cross(g,n,g),m.normalize(g,g);let f=i[0];return l(f)||(f=i[0]=new ce),f.x=g.x,f.y=g.y,f.z=g.z,f.w=-m.dot(g,e),m.multiplyByScalar(u,s,g),m.add(h,g,g),m.subtract(g,e,g),m.cross(n,g,g),m.normalize(g,g),f=i[1],l(f)||(f=i[1]=new ce),f.x=g.x,f.y=g.y,f.z=g.z,f.w=-m.dot(g,e),m.multiplyByScalar(n,r,g),m.add(h,g,g),m.subtract(g,e,g),m.cross(u,g,g),m.normalize(g,g),f=i[2],l(f)||(f=i[2]=new ce),f.x=g.x,f.y=g.y,f.z=g.z,f.w=-m.dot(g,e),m.multiplyByScalar(n,o,g),m.add(h,g,g),m.subtract(g,e,g),m.cross(g,u,g),m.normalize(g,g),f=i[3],l(f)||(f=i[3]=new ce),f.x=g.x,f.y=g.y,f.z=g.z,f.w=-m.dot(g,e),f=i[4],l(f)||(f=i[4]=new ce),f.x=t.x,f.y=t.y,f.z=t.z,f.w=-m.dot(t,h),m.negate(t,g),f=i[5],l(f)||(f=i[5]=new ce),f.x=g.x,f.y=g.y,f.z=g.z,f.w=-m.dot(g,p),this._cullingVolume};Lp.prototype.getPixelDimensions=function(e,t,n,i,o){w7(this);let r=1/this.near,s=this.top*r,a=2*i*n*s/t;s=this.right*r;let c=2*i*n*s/e;return o.x=c,o.y=a,o};Lp.prototype.clone=function(e){return l(e)||(e=new Lp),e.right=this.right,e.left=this.left,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e._left=void 0,e._right=void 0,e._top=void 0,e._bottom=void 0,e._near=void 0,e._far=void 0,e};Lp.prototype.equals=function(e){return l(e)&&e instanceof Lp&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far};Lp.prototype.equalsEpsilon=function(e,t,n){return e===this||l(e)&&e instanceof Lp&&Z.equalsEpsilon(this.right,e.right,t,n)&&Z.equalsEpsilon(this.left,e.left,t,n)&&Z.equalsEpsilon(this.top,e.top,t,n)&&Z.equalsEpsilon(this.bottom,e.bottom,t,n)&&Z.equalsEpsilon(this.near,e.near,t,n)&&Z.equalsEpsilon(this.far,e.far,t,n)};var vl=Lp;function Id(e){e=e??Y.EMPTY_OBJECT,this._offCenterFrustum=new vl,this.fov=e.fov,this._fov=void 0,this._fovy=void 0,this._sseDenominator=void 0,this.aspectRatio=e.aspectRatio,this._aspectRatio=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this.xOffset=e.xOffset??0,this._xOffset=this.xOffset,this.yOffset=e.yOffset??0,this._yOffset=this.yOffset}Id.packedLength=6;Id.pack=function(e,t,n){return n=n??0,t[n++]=e.fov,t[n++]=e.aspectRatio,t[n++]=e.near,t[n++]=e.far,t[n++]=e.xOffset,t[n]=e.yOffset,t};Id.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Id),n.fov=e[t++],n.aspectRatio=e[t++],n.near=e[t++],n.far=e[t++],n.xOffset=e[t++],n.yOffset=e[t],n};function mf(e){if(!(e.fov!==e._fov||e.aspectRatio!==e._aspectRatio||e.near!==e._near||e.far!==e._far||e.xOffset!==e._xOffset||e.yOffset!==e._yOffset))return;e._aspectRatio=e.aspectRatio,e._fov=e.fov,e._fovy=e.aspectRatio<=1?e.fov:Math.atan(Math.tan(e.fov*.5)/e.aspectRatio)*2,e._near=e.near,e._far=e.far,e._sseDenominator=2*Math.tan(.5*e._fovy),e._xOffset=e.xOffset,e._yOffset=e.yOffset;let n=e._offCenterFrustum;n.top=e.near*Math.tan(.5*e._fovy),n.bottom=-n.top,n.right=e.aspectRatio*n.top,n.left=-n.right,n.near=e.near,n.far=e.far,n.right+=e.xOffset,n.left+=e.xOffset,n.top+=e.yOffset,n.bottom+=e.yOffset}Object.defineProperties(Id.prototype,{projectionMatrix:{get:function(){return mf(this),this._offCenterFrustum.projectionMatrix}},infiniteProjectionMatrix:{get:function(){return mf(this),this._offCenterFrustum.infiniteProjectionMatrix}},fovy:{get:function(){return mf(this),this._fovy}},sseDenominator:{get:function(){return mf(this),this._sseDenominator}},offCenterFrustum:{get:function(){return mf(this),this._offCenterFrustum}}});Id.prototype.computeCullingVolume=function(e,t,n){return mf(this),this._offCenterFrustum.computeCullingVolume(e,t,n)};Id.prototype.getPixelDimensions=function(e,t,n,i,o){return mf(this),this._offCenterFrustum.getPixelDimensions(e,t,n,i,o)};Id.prototype.clone=function(e){return l(e)||(e=new Id),e.aspectRatio=this.aspectRatio,e.fov=this.fov,e.near=this.near,e.far=this.far,e._aspectRatio=void 0,e._fov=void 0,e._near=void 0,e._far=void 0,this._offCenterFrustum.clone(e._offCenterFrustum),e};Id.prototype.equals=function(e){return!l(e)||!(e instanceof Id)?!1:(mf(this),mf(e),this.fov===e.fov&&this.aspectRatio===e.aspectRatio&&this._offCenterFrustum.equals(e._offCenterFrustum))};Id.prototype.equalsEpsilon=function(e,t,n){return!l(e)||!(e instanceof Id)?!1:(mf(this),mf(e),Z.equalsEpsilon(this.fov,e.fov,t,n)&&Z.equalsEpsilon(this.aspectRatio,e.aspectRatio,t,n)&&this._offCenterFrustum.equalsEpsilon(e._offCenterFrustum,t,n))};var Ni=Id;var KPi=y(C(),1);function KP(){this._colorTexture=void 0,this._drawCommand=void 0}Object.defineProperties(KP.prototype,{colorTexture:{get:function(){return this._colorTexture}}});function eft(e,t,n){let i=t.createViewportQuadCommand(lP,{framebuffer:n,renderState:Qe.fromCache({viewport:new Ke(0,0,256,256)})});e._drawCommand=i}KP.prototype.update=function(e){if(!l(this._colorTexture)){let t=e.context,n=new Wt({context:t,width:256,height:256,pixelFormat:tt.RGBA,pixelDatatype:Ye.UNSIGNED_BYTE,sampler:sn.NEAREST});this._colorTexture=n;let i=new jr({context:t,colorTextures:[n],destroyAttachments:!1});eft(this,t,i),this._drawCommand.execute(t),i.destroy(),this._drawCommand.shaderProgram=this._drawCommand.shaderProgram&&this._drawCommand.shaderProgram.destroy()}};KP.prototype.isDestroyed=function(){return!1};KP.prototype.destroy=function(){return this._colorTexture=this._colorTexture&&this._colorTexture.destroy(),me(this)};var JP=KP;var vMi=y(C(),1);var aMi=y(C(),1);var bxe={};function tft(e,t,n){let i,o,r;if(e instanceof Ni){let s=Math.tan(.5*e.fovy);return i=e.near,o=e.near*s,r=e.aspectRatio*o,Math.max(t*i/r,n*i/o)}else if(e instanceof vl)return i=e.near,o=e.top,r=e.right,Math.max(t*i/r,n*i/o);return Math.max(t,n)}var nft=new m,pxe=new m;function yxe(e,t,n,i){if(l(i)&&n(.5)>i){let o=n(0),r=n(1),s=n(.5),a=s-o,c=s-r;return function(d){let u=n(d);if(d<=.5){let p=(u-o)/a;return Z.lerp(e,-Z.PI_OVER_TWO,p)}let h=(u-r)/c;return Z.lerp(-Z.PI_OVER_TWO,t,1-h)}}return function(o){return Z.lerp(e,t,o)}}function W7(e,t,n,i,o){let r=o,s=Math.max(n,i);if(!l(r)){let a=e.position,c=t,d=e.up,u=e.right,h=e.frustum,p=m.subtract(a,c,nft),g=m.magnitude(m.multiplyByScalar(d,m.dot(p,d),pxe)),f=m.magnitude(m.multiplyByScalar(u,m.dot(p,u),pxe));r=Math.min(tft(h,g,f)*.2,1e9)}if(s<r){let d=-Math.pow((r-n)*1e6,.125),u=Math.pow((r-i)*1e6,1/8);return function(h){let p=h*(u-d)+d;return-Math.pow(p,8)/1e6+r}}return function(a){return Z.lerp(n,i,a)}}function jP(e,t){return Z.equalsEpsilon(e,Z.TWO_PI,Z.EPSILON11)&&(e=0),t>e+Math.PI?e+=Z.TWO_PI:t<e-Math.PI&&(e-=Z.TWO_PI),e}var Cxe=new m;function ift(e,t,n,i,o,r,s,a){let c=e.camera,d=m.clone(c.position,Cxe),u=c.pitch,h=jP(c.heading,i),p=jP(c.roll,r),g=W7(c,n,d.z,n.z,s),f=yxe(u,o,g,a);function b(x){let I=x.time/t;c.setView({orientation:{heading:Z.lerp(h,i,I),pitch:f(I),roll:Z.lerp(p,r,I)}}),D.lerp(d,n,I,c.position),c.position.z=g(I)}return b}function oft(e,t){e.longitude<t.longitude?e.longitude+=Z.TWO_PI:t.longitude+=Z.TWO_PI}function rft(e,t){let n=e.longitude-t.longitude;n<-Z.PI?e.longitude+=Z.TWO_PI:n>Z.PI&&(t.longitude+=Z.TWO_PI)}var sft=new ge,aft=new ge;function cft(e,t,n,i,o,r,s,a,c,d){let u=e.camera,p=e.mapProjection.ellipsoid,g=ge.clone(u.positionCartographic,sft),f=u.pitch,b=jP(u.heading,i),x=jP(u.roll,r),I=p.cartesianToCartographic(n,aft);g.longitude=Z.zeroToTwoPi(g.longitude),I.longitude=Z.zeroToTwoPi(I.longitude);let _=!1;if(l(a)){let G=Z.zeroToTwoPi(a),B=Math.min(g.longitude,I.longitude),w=Math.max(g.longitude,I.longitude),F=G>=B&&G<=w;if(l(c)){let P=Math.abs(g.longitude-I.longitude),A=Z.TWO_PI-P;(F?P:A)<(F?A:P)*c&&!F&&(_=!0)}else F||(_=!0)}_?oft(g,I):rft(g,I);let E=W7(u,n,g.height,I.height,s),S=yxe(f,o,E,d);function R(){let G=g.longitude,B=I.longitude,w=g.latitude,F=I.latitude;return function(A){let T=A.time/t,L=m.fromRadians(Z.lerp(G,B,T),Z.lerp(w,F,T),E(T),p);u.setView({destination:L,orientation:{heading:Z.lerp(b,i,T),pitch:S(T),roll:Z.lerp(x,r,T)}})}}return R()}function lft(e,t,n,i,o,r,s){let a=e.camera,c=m.clone(a.position,Cxe),d=jP(a.heading,i),u=a.frustum.right-a.frustum.left,h=W7(a,n,u,n.z,s);function p(g){let f=g.time/t;a.setView({orientation:{heading:Z.lerp(d,i,f)}}),D.lerp(c,n,f,a.position);let b=h(f),x=a.frustum,I=x.top/x.right,_=(b-(x.right-x.left))*.5;x.right+=_,x.left-=_,x.top=I*x.right,x.bottom=-x.top}return p}var Axe=new ge,dft=new m;function X7(e,t){return{startObject:{},stopObject:{},duration:0,complete:e,cancel:t}}function gxe(e,t){function n(){typeof t=="function"&&t(),e.enableInputs=!0}return n}bxe.createTween=function(e,t){t=t??Y.EMPTY_OBJECT;let n=t.destination,i=e.mode;if(i===re.MORPHING)return X7();let o=t.convert??!0,r=e.mapProjection,s=r.ellipsoid,a=t.maximumHeight,c=t.flyOverLongitude,d=t.flyOverLongitudeWeight,u=t.pitchAdjustHeight,h=t.easingFunction;o&&i!==re.SCENE3D&&(s.cartesianToCartographic(n,Axe),n=r.project(Axe,dft));let p=e.camera,g=t.endTransform;l(g)&&p._setTransform(g);let f=t.duration;l(f)||(f=Math.ceil(m.distance(p.position,n)/1e6)+2,f=Math.min(f,3));let b=t.heading??0,x=t.pitch??-Z.PI_OVER_TWO,I=t.roll??0,_=e.screenSpaceCameraController;_.enableInputs=!1;let E=gxe(_,t.complete),S=gxe(_,t.cancel),R=p.frustum,G=e.mode===re.SCENE2D;if(G=G&&D.equalsEpsilon(p.position,n,Z.EPSILON6),G=G&&Z.equalsEpsilon(Math.max(R.right-R.left,R.top-R.bottom),n.z,Z.EPSILON6),G=G||e.mode!==re.SCENE2D&&m.equalsEpsilon(n,p.position,Z.EPSILON10),G=G&&Z.equalsEpsilon(Z.negativePiToPi(b),Z.negativePiToPi(p.heading),Z.EPSILON10)&&Z.equalsEpsilon(Z.negativePiToPi(x),Z.negativePiToPi(p.pitch),Z.EPSILON10)&&Z.equalsEpsilon(Z.negativePiToPi(I),Z.negativePiToPi(p.roll),Z.EPSILON10),G)return X7(E,S);let B=new Array(4);if(B[re.SCENE2D]=lft,B[re.SCENE3D]=cft,B[re.COLUMBUS_VIEW]=ift,f<=0)return X7(function(){B[i](e,1,n,b,x,I,a,c,d,u)({time:1}),typeof E=="function"&&E()},S);let w=B[i](e,f,n,b,x,I,a,c,d,u);if(!l(h)){let F=p.positionCartographic.height,P=i===re.SCENE3D?s.cartesianToCartographic(n).height:n.z;F>P&&F>11500?h=ms.CUBIC_OUT:h=ms.QUINTIC_IN_OUT}return{duration:f,easingFunction:h,startObject:{time:0},stopObject:{time:f},update:w,complete:E,cancel:S}};var qP=bxe;var lMi=y(C(),1),uft={ROTATE:0,INFINITE_SCROLL:1},_d=Object.freeze(uft);function un(e){this._scene=e,this._transform=X.clone(X.IDENTITY),this._invTransform=X.clone(X.IDENTITY),this._actualTransform=X.clone(X.IDENTITY),this._actualInvTransform=X.clone(X.IDENTITY),this._transformChanged=!1,this.position=new m,this._position=new m,this._positionWC=new m,this._positionCartographic=new ge,this._oldPositionWC=void 0,this.positionWCDeltaMagnitude=0,this.positionWCDeltaMagnitudeLastFrame=0,this.timeSinceMoved=0,this._lastMovedTimestamp=0,this.direction=new m,this._direction=new m,this._directionWC=new m,this.up=new m,this._up=new m,this._upWC=new m,this.right=new m,this._right=new m,this._rightWC=new m,this.frustum=new Ni,this.frustum.aspectRatio=e.drawingBufferWidth/e.drawingBufferHeight,this.frustum.fov=Z.toRadians(60),this.defaultMoveAmount=1e5,this.defaultLookAmount=Math.PI/60,this.defaultRotateAmount=Math.PI/3600,this.defaultZoomAmount=1e5,this.constrainedAxis=void 0,this.maximumZoomFactor=1.5,this._moveStart=new Ce,this._moveEnd=new Ce,this._changed=new Ce,this._changedPosition=void 0,this._changedDirection=void 0,this._changedFrustum=void 0,this._changedHeading=void 0,this._changedRoll=void 0,this.percentageChanged=.5,this._viewMatrix=new X,this._invViewMatrix=new X,Rxe(this),this._mode=re.SCENE3D,this._modeChanged=!0;let t=e.mapProjection;this._projection=t,this._maxCoord=t.project(new ge(Math.PI,Z.PI_OVER_TWO)),this._max2Dfrustum=void 0,Nxe(this,un.DEFAULT_VIEW_RECTANGLE,this.position,!0);let n=m.magnitude(this.position);n+=n*un.DEFAULT_VIEW_FACTOR,m.normalize(this.position,this.position),m.multiplyByScalar(this.position,n,this.position)}un.TRANSFORM_2D=new X(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);un.TRANSFORM_2D_INVERSE=X.inverseTransformation(un.TRANSFORM_2D,new X);un.DEFAULT_VIEW_RECTANGLE=le.fromDegrees(-95,-20,-70,90);un.DEFAULT_VIEW_FACTOR=.5;un.DEFAULT_OFFSET=new Vm(0,-Z.PI_OVER_FOUR,0);function Rxe(e){X.computeView(e._position,e._direction,e._up,e._right,e._viewMatrix),X.multiply(e._viewMatrix,e._actualInvTransform,e._viewMatrix),X.inverseTransformation(e._viewMatrix,e._invViewMatrix)}function mft(e){if(!l(e._oldPositionWC))e._oldPositionWC=m.clone(e.positionWC,e._oldPositionWC);else{e.positionWCDeltaMagnitudeLastFrame=e.positionWCDeltaMagnitude;let t=m.subtract(e.positionWC,e._oldPositionWC,e._oldPositionWC);e.positionWCDeltaMagnitude=m.magnitude(t),e._oldPositionWC=m.clone(e.positionWC,e._oldPositionWC),e.positionWCDeltaMagnitude>0?(e.timeSinceMoved=0,e._lastMovedTimestamp=Fi()):e.timeSinceMoved=Math.max(Fi()-e._lastMovedTimestamp,0)/1e3}}un.prototype.canPreloadFlight=function(){return l(this._currentFlight)&&this._mode!==re.SCENE2D};un.prototype._updateCameraChanged=function(){let e=this;if(mft(e),e._changed.numberOfListeners===0)return;let t=e.percentageChanged,n=e.heading;l(e._changedHeading)||(e._changedHeading=n);let i=Math.abs(e._changedHeading-n)%Z.TWO_PI;i=i>Z.PI?Z.TWO_PI-i:i;let o=i/Math.PI;o>t&&(e._changedHeading=n);let r=e.roll;l(e._changedRoll)||(e._changedRoll=r);let s=Math.abs(e._changedRoll-r)%Z.TWO_PI;s=s>Z.PI?Z.TWO_PI-s:s;let a=s/Math.PI;if(a>t&&(e._changedRoll=r),(a>t||o>t)&&e._changed.raiseEvent(Math.max(a,o)),e._mode===re.SCENE2D){if(!l(e._changedFrustum)){e._changedPosition=m.clone(e.position,e._changedPosition),e._changedFrustum=e.frustum.clone();return}let p=e.position,g=e._changedPosition,f=e.frustum,b=e._changedFrustum,x=p.x+f.left,I=p.x+f.right,_=g.x+b.left,E=g.x+b.right,S=p.y+f.bottom,R=p.y+f.top,G=g.y+b.bottom,B=g.y+b.top,w=Math.max(x,_),F=Math.min(I,E),P=Math.max(S,G),A=Math.min(R,B),T;if(w>=F||P>=R)T=1;else{let L=b;x<_&&I>E&&S<G&&R>B&&(L=f),T=1-(F-w)*(A-P)/((L.right-L.left)*(L.top-L.bottom))}T>t&&(e._changed.raiseEvent(T),e._changedPosition=m.clone(e.position,e._changedPosition),e._changedFrustum=e.frustum.clone(e._changedFrustum));return}if(!l(e._changedDirection)){e._changedPosition=m.clone(e.positionWC,e._changedPosition),e._changedDirection=m.clone(e.directionWC,e._changedDirection);return}let c=Z.acosClamped(m.dot(e.directionWC,e._changedDirection)),d;l(e.frustum.fovy)?d=c/(e.frustum.fovy*.5):d=c;let h=m.distance(e.positionWC,e._changedPosition)/e.positionCartographic.height;(d>t||h>t)&&(e._changed.raiseEvent(Math.max(d,h)),e._changedPosition=m.clone(e.positionWC,e._changedPosition),e._changedDirection=m.clone(e.directionWC,e._changedDirection))};function hft(e){Dt.basisTo2D(e._projection,e._transform,e._actualTransform)}var fft=new ge,pft=new m,Qk=new m,Aft=new ce,gft=new ce,bft=new ce,yft=new ce,Cft=new ce;function xft(e){let t=e._projection,n=t.ellipsoid,i=X.getColumn(e._transform,3,Aft),o=n.cartesianToCartographic(i,fft),r=t.project(o,pft),s=gft;s.x=r.z,s.y=r.x,s.z=r.y,s.w=1;let a=ce.clone(ce.UNIT_X,Cft),c=ce.add(X.getColumn(e._transform,0,Qk),i,Qk);n.cartesianToCartographic(c,o),t.project(o,r);let d=bft;d.x=r.z,d.y=r.x,d.z=r.y,d.w=0,m.subtract(d,s,d),d.x=0;let u=yft;if(m.magnitudeSquared(d)>Z.EPSILON10)m.cross(a,d,u);else{let h=ce.add(X.getColumn(e._transform,1,Qk),i,Qk);n.cartesianToCartographic(h,o),t.project(o,r),u.x=r.z,u.y=r.x,u.z=r.y,u.w=0,m.subtract(u,s,u),u.x=0,m.magnitudeSquared(u)<Z.EPSILON10&&(ce.clone(ce.UNIT_Y,d),ce.clone(ce.UNIT_Z,u))}m.cross(u,a,d),m.normalize(d,d),m.cross(a,d,u),m.normalize(u,u),X.setColumn(e._actualTransform,0,d,e._actualTransform),X.setColumn(e._actualTransform,1,u,e._actualTransform),X.setColumn(e._actualTransform,2,a,e._actualTransform),X.setColumn(e._actualTransform,3,s,e._actualTransform)}var F7=new m;function qc(e){let t=e._mode,n=!1,i=0;t===re.SCENE2D&&(i=e.frustum.right-e.frustum.left,n=i!==e._positionCartographic.height);let o=e._position,r=!m.equals(o,e.position)||n;r&&(o=m.clone(e.position,e._position));let s=e._direction,a=!m.equals(s,e.direction);a&&(m.normalize(e.direction,e.direction),s=m.clone(e.direction,e._direction));let c=e._up,d=!m.equals(c,e.up);d&&(m.normalize(e.up,e.up),c=m.clone(e.up,e._up));let u=e._right,h=!m.equals(u,e.right);h&&(m.normalize(e.right,e.right),u=m.clone(e.right,e._right));let p=e._transformChanged||e._modeChanged;e._transformChanged=!1,p&&(X.inverseTransformation(e._transform,e._invTransform),e._mode===re.COLUMBUS_VIEW||e._mode===re.SCENE2D?X.equals(X.IDENTITY,e._transform)?X.clone(un.TRANSFORM_2D,e._actualTransform):e._mode===re.COLUMBUS_VIEW?hft(e):xft(e):X.clone(e._transform,e._actualTransform),X.inverseTransformation(e._actualTransform,e._actualInvTransform),e._modeChanged=!1);let g=e._actualTransform;if(r||p)if(e._positionWC=X.multiplyByPoint(g,o,e._positionWC),t===re.SCENE3D||t===re.MORPHING)e._positionCartographic=e._projection.ellipsoid.cartesianToCartographic(e._positionWC,e._positionCartographic);else{let f=F7;f.x=e._positionWC.y,f.y=e._positionWC.z,f.z=e._positionWC.x,t===re.SCENE2D&&(f.z=i),e._projection.unproject(f,e._positionCartographic)}if(a||d||h){let f=m.dot(s,m.cross(c,u,F7));if(Math.abs(1-f)>Z.EPSILON2){let b=1/m.magnitudeSquared(c),x=m.dot(c,s)*b,I=m.multiplyByScalar(s,x,F7);c=m.normalize(m.subtract(c,I,e._up),e._up),m.clone(c,e.up),u=m.cross(s,c,e._right),m.clone(u,e.right)}}(a||p)&&(e._directionWC=X.multiplyByPointAsVector(g,s,e._directionWC),m.normalize(e._directionWC,e._directionWC)),(d||p)&&(e._upWC=X.multiplyByPointAsVector(g,c,e._upWC),m.normalize(e._upWC,e._upWC)),(h||p)&&(e._rightWC=X.multiplyByPointAsVector(g,u,e._rightWC),m.normalize(e._rightWC,e._rightWC)),(r||a||d||h||p)&&Rxe(e)}function Vxe(e,t){let n;return Z.equalsEpsilon(Math.abs(e.z),1,Z.EPSILON3)?n=Math.atan2(t.y,t.x)-Z.PI_OVER_TWO:n=Math.atan2(e.y,e.x)-Z.PI_OVER_TWO,Z.TWO_PI-Z.zeroToTwoPi(n)}function Gxe(e){return Z.PI_OVER_TWO-Z.acosClamped(e.z)}function Zxe(e,t,n){let i=0;return Z.equalsEpsilon(Math.abs(e.z),1,Z.EPSILON3)||(i=Math.atan2(-n.z,t.z),i=Z.zeroToTwoPi(i+Z.TWO_PI)),i}var Yk=new X,Ok=new X;Object.defineProperties(un.prototype,{transform:{get:function(){return this._transform}},inverseTransform:{get:function(){return qc(this),this._invTransform}},viewMatrix:{get:function(){return qc(this),this._viewMatrix}},inverseViewMatrix:{get:function(){return qc(this),this._invViewMatrix}},positionCartographic:{get:function(){return qc(this),this._positionCartographic}},positionWC:{get:function(){return qc(this),this._positionWC}},directionWC:{get:function(){return qc(this),this._directionWC}},upWC:{get:function(){return qc(this),this._upWC}},rightWC:{get:function(){return qc(this),this._rightWC}},heading:{get:function(){if(this._mode!==re.MORPHING){let e=this._projection.ellipsoid,t=X.clone(this._transform,Yk),n=Dt.eastNorthUpToFixedFrame(this.positionWC,e,Ok);this._setTransform(n);let i=Vxe(this.direction,this.up);return this._setTransform(t),i}}},pitch:{get:function(){if(this._mode!==re.MORPHING){let e=this._projection.ellipsoid,t=X.clone(this._transform,Yk),n=Dt.eastNorthUpToFixedFrame(this.positionWC,e,Ok);this._setTransform(n);let i=Gxe(this.direction);return this._setTransform(t),i}}},roll:{get:function(){if(this._mode!==re.MORPHING){let e=this._projection.ellipsoid,t=X.clone(this._transform,Yk),n=Dt.eastNorthUpToFixedFrame(this.positionWC,e,Ok);this._setTransform(n);let i=Zxe(this.direction,this.up,this.right);return this._setTransform(t),i}}},moveStart:{get:function(){return this._moveStart}},moveEnd:{get:function(){return this._moveEnd}},changed:{get:function(){return this._changed}}});un.prototype.update=function(e){let t=!1;if(e!==this._mode&&(this._mode=e,this._modeChanged=e!==re.MORPHING,t=this._mode===re.SCENE2D),t){let n=this._max2Dfrustum=this.frustum.clone(),i=2,o=n.top/n.right;n.right=this._maxCoord.x*i,n.left=-n.right,n.top=o*n.right,n.bottom=-n.top}this._mode===re.SCENE2D&&Wxe(this,this.position)};var Ift=new m,_ft=new m,Eft=new m;un.prototype._setTransform=function(e){let t=m.clone(this.positionWC,Ift),n=m.clone(this.upWC,_ft),i=m.clone(this.directionWC,Eft);X.clone(e,this._transform),this._transformChanged=!0,qc(this);let o=this._actualInvTransform;X.multiplyByPoint(o,t,this.position),X.multiplyByPointAsVector(o,i,this.direction),X.multiplyByPointAsVector(o,n,this.up),m.cross(this.direction,this.up,this.right),qc(this)};var Tft=new D,Sft=new En,Lft=new m,Rft=new m;function Bxe(e){if(!X.equals(X.IDENTITY,e.transform))return m.magnitude(e.position);let t=e._scene,n=t.globe,i=Tft;i.x=t.drawingBufferWidth/t.pixelRatio/2,i.y=t.drawingBufferHeight/t.pixelRatio/2;let o;if(l(n)){let a=e.getPickRay(i,Sft);o=n.pickWorldCoordinates(a,t,!0,Lft)}let r;t.pickPositionSupported&&(r=t.pickPositionWorldCoordinates(i,Rft));let s;if(l(o)||l(r)){let a=l(r)?m.distance(r,e.positionWC):Number.POSITIVE_INFINITY,c=l(o)?m.distance(o,e.positionWC):Number.POSITIVE_INFINITY;s=Math.min(a,c)}else s=Math.max(e.positionCartographic.height,0);return s}un.prototype._adjustOrthographicFrustum=function(e){this.frustum instanceof gn&&(!e&&this._positionCartographic.height<15e4||(this.frustum.width=Bxe(this)))};var Hk=new m,D7=new X,Vft=new X,Q7=new Pe,U7=new $,wxe=new ge;function Gft(e,t,n){let i=X.clone(e.transform,D7),o=Dt.eastNorthUpToFixedFrame(t,e._projection.ellipsoid,Vft);e._setTransform(o),m.clone(m.ZERO,e.position),n.heading=n.heading-Z.PI_OVER_TWO;let r=Pe.fromHeadingPitchRoll(n,Q7),s=$.fromQuaternion(r,U7);$.getColumn(s,0,e.direction),$.getColumn(s,2,e.up),m.cross(e.direction,e.up,e.right),e._setTransform(i),e._adjustOrthographicFrustum(!0)}function Zft(e,t,n,i){let o=X.clone(e.transform,D7);if(e._setTransform(X.IDENTITY),!m.equals(t,e.positionWC)){if(i){let a=e._projection,c=a.ellipsoid.cartesianToCartographic(t,wxe);t=a.project(c,Hk)}m.clone(t,e.position)}n.heading=n.heading-Z.PI_OVER_TWO;let r=Pe.fromHeadingPitchRoll(n,Q7),s=$.fromQuaternion(r,U7);$.getColumn(s,0,e.direction),$.getColumn(s,2,e.up),m.cross(e.direction,e.up,e.right),e._setTransform(o),e._adjustOrthographicFrustum(!0)}function Bft(e,t,n,i){let o=X.clone(e.transform,D7);if(e._setTransform(X.IDENTITY),!m.equals(t,e.positionWC)){if(i){let c=e._projection,d=c.ellipsoid.cartesianToCartographic(t,wxe);t=c.project(d,Hk)}D.clone(t,e.position);let r=-t.z*.5,s=-r,a=e.frustum;if(s>r){let c=a.top/a.right;a.right=s,a.left=r,a.top=a.right*c,a.bottom=-a.top}}if(e._scene.mapMode2D===_d.ROTATE){n.heading=n.heading-Z.PI_OVER_TWO,n.pitch=-Z.PI_OVER_TWO,n.roll=0;let r=Pe.fromHeadingPitchRoll(n,Q7),s=$.fromQuaternion(r,U7);$.getColumn(s,2,e.up),m.cross(e.direction,e.up,e.right)}e._setTransform(o)}var wft=new m,Xft=new m,Wft=new m;function Xxe(e,t,n,i){let o=m.clone(n.direction,wft),r=m.clone(n.up,Xft);if(e._scene.mode===re.SCENE3D){let a=e._projection.ellipsoid,c=Dt.eastNorthUpToFixedFrame(t,a,Yk),d=X.inverseTransformation(c,Ok);X.multiplyByPointAsVector(d,o,o),X.multiplyByPointAsVector(d,r,r)}let s=m.cross(o,r,Wft);return i.heading=Vxe(o,r),i.pitch=Gxe(o),i.roll=Zxe(o,r,s),i}var N7={destination:void 0,orientation:{direction:void 0,up:void 0,heading:void 0,pitch:void 0,roll:void 0},convert:void 0,endTransform:void 0},sL=new ic;un.prototype.setView=function(e){e=e??Y.EMPTY_OBJECT;let t=e.orientation??Y.EMPTY_OBJECT,n=this._mode;if(n===re.MORPHING)return;l(e.endTransform)&&this._setTransform(e.endTransform);let i=e.convert??!0,o=e.destination??m.clone(this.positionWC,Hk);l(o)&&l(o.west)&&(o=this.getRectangleCameraCoordinates(o,Hk),i=!1),l(t.direction)&&(t=Xxe(this,o,t,N7.orientation)),sL.heading=t.heading??0,sL.pitch=t.pitch??-Z.PI_OVER_TWO,sL.roll=t.roll??0,n===re.SCENE3D?Gft(this,o,sL):n===re.SCENE2D?Bft(this,o,sL,i):Zft(this,o,sL,i)};var Fft=new m;un.prototype.flyHome=function(e){let t=this._mode;if(t===re.MORPHING&&this._scene.completeMorph(),t===re.SCENE2D)this.flyTo({destination:un.DEFAULT_VIEW_RECTANGLE,duration:e,endTransform:X.IDENTITY});else if(t===re.SCENE3D){let n=this.getRectangleCameraCoordinates(un.DEFAULT_VIEW_RECTANGLE),i=m.magnitude(n);i+=i*un.DEFAULT_VIEW_FACTOR,m.normalize(n,n),m.multiplyByScalar(n,i,n),this.flyTo({destination:n,duration:e,endTransform:X.IDENTITY})}else if(t===re.COLUMBUS_VIEW){let n=this._projection.ellipsoid.maximumRadius,i=new m(0,-1,1);i=m.multiplyByScalar(m.normalize(i,i),5*n,i),this.flyTo({destination:i,duration:e,orientation:{heading:0,pitch:-Math.acos(m.normalize(i,Fft).z),roll:0},endTransform:X.IDENTITY,convert:!1})}};un.prototype.worldToCameraCoordinates=function(e,t){return l(t)||(t=new ce),qc(this),X.multiplyByVector(this._actualInvTransform,e,t)};un.prototype.worldToCameraCoordinatesPoint=function(e,t){return l(t)||(t=new m),qc(this),X.multiplyByPoint(this._actualInvTransform,e,t)};un.prototype.worldToCameraCoordinatesVector=function(e,t){return l(t)||(t=new m),qc(this),X.multiplyByPointAsVector(this._actualInvTransform,e,t)};un.prototype.cameraToWorldCoordinates=function(e,t){return l(t)||(t=new ce),qc(this),X.multiplyByVector(this._actualTransform,e,t)};un.prototype.cameraToWorldCoordinatesPoint=function(e,t){return l(t)||(t=new m),qc(this),X.multiplyByPoint(this._actualTransform,e,t)};un.prototype.cameraToWorldCoordinatesVector=function(e,t){return l(t)||(t=new m),qc(this),X.multiplyByPointAsVector(this._actualTransform,e,t)};function Wxe(e,t){let n=e._scene.mapMode2D===_d.ROTATE,i=e._maxCoord.x,o=e._maxCoord.y,r,s;n?(s=i,r=-s):(s=t.x-i*2,r=t.x+i*2),t.x>i&&(t.x=s),t.x<-i&&(t.x=r),t.y>o&&(t.y=o),t.y<-o&&(t.y=-o)}var xxe=new m;un.prototype.move=function(e,t){let n=this.position;m.multiplyByScalar(e,t,xxe),m.add(n,xxe,n),this._mode===re.SCENE2D&&Wxe(this,n),this._adjustOrthographicFrustum(!0)};un.prototype.moveForward=function(e){e=e??this.defaultMoveAmount,this._mode===re.SCENE2D?zk(this,e):this.move(this.direction,e)};un.prototype.moveBackward=function(e){e=e??this.defaultMoveAmount,this._mode===re.SCENE2D?zk(this,-e):this.move(this.direction,-e)};un.prototype.moveUp=function(e){e=e??this.defaultMoveAmount,this.move(this.up,e)};un.prototype.moveDown=function(e){e=e??this.defaultMoveAmount,this.move(this.up,-e)};un.prototype.moveRight=function(e){e=e??this.defaultMoveAmount,this.move(this.right,e)};un.prototype.moveLeft=function(e){e=e??this.defaultMoveAmount,this.move(this.right,-e)};un.prototype.lookLeft=function(e){e=e??this.defaultLookAmount,this._mode!==re.SCENE2D&&this.look(this.up,-e)};un.prototype.lookRight=function(e){e=e??this.defaultLookAmount,this._mode!==re.SCENE2D&&this.look(this.up,e)};un.prototype.lookUp=function(e){e=e??this.defaultLookAmount,this._mode!==re.SCENE2D&&this.look(this.right,-e)};un.prototype.lookDown=function(e){e=e??this.defaultLookAmount,this._mode!==re.SCENE2D&&this.look(this.right,e)};var Pft=new Pe,Mft=new $;un.prototype.look=function(e,t){let n=t??this.defaultLookAmount,i=Pe.fromAxisAngle(e,-n,Pft),o=$.fromQuaternion(i,Mft),r=this.direction,s=this.up,a=this.right;$.multiplyByVector(o,r,r),$.multiplyByVector(o,s,s),$.multiplyByVector(o,a,a)};un.prototype.twistLeft=function(e){e=e??this.defaultLookAmount,this.look(this.direction,e)};un.prototype.twistRight=function(e){e=e??this.defaultLookAmount,this.look(this.direction,-e)};var vft=new Pe,Nft=new $;un.prototype.rotate=function(e,t){let n=t??this.defaultRotateAmount,i=Pe.fromAxisAngle(e,-n,vft),o=$.fromQuaternion(i,Nft);$.multiplyByVector(o,this.position,this.position),$.multiplyByVector(o,this.direction,this.direction),$.multiplyByVector(o,this.up,this.up),m.cross(this.direction,this.up,this.right),m.cross(this.right,this.direction,this.up),this._adjustOrthographicFrustum(!1)};un.prototype.rotateDown=function(e){e=e??this.defaultRotateAmount,Fxe(this,e)};un.prototype.rotateUp=function(e){e=e??this.defaultRotateAmount,Fxe(this,-e)};var Dft=new m,Qft=new m,Uft=new m,Ixe=new m;function Fxe(e,t){let n=e.position;if(l(e.constrainedAxis)&&!m.equalsEpsilon(e.position,m.ZERO,Z.EPSILON2)){let i=m.normalize(n,Dft),o=m.equalsEpsilon(i,e.constrainedAxis,Z.EPSILON2),r=m.equalsEpsilon(i,m.negate(e.constrainedAxis,Ixe),Z.EPSILON2);if(!o&&!r){let s=m.normalize(e.constrainedAxis,Qft),a=m.dot(i,s),c=Z.acosClamped(a);t>0&&t>c&&(t=c-Z.EPSILON4),a=m.dot(i,m.negate(s,Ixe)),c=Z.acosClamped(a),t<0&&-t>c&&(t=-c+Z.EPSILON4);let d=m.cross(s,i,Uft);e.rotate(d,t)}else(o&&t<0||r&&t>0)&&e.rotate(e.right,t)}else e.rotate(e.right,t)}un.prototype.rotateRight=function(e){e=e??this.defaultRotateAmount,Pxe(this,-e)};un.prototype.rotateLeft=function(e){e=e??this.defaultRotateAmount,Pxe(this,e)};function Pxe(e,t){l(e.constrainedAxis)?e.rotate(e.constrainedAxis,t):e.rotate(e.up,t)}function zk(e,t){let n=e.frustum,i;if(t=t*.5,Math.abs(n.top)+Math.abs(n.bottom)>Math.abs(n.left)+Math.abs(n.right)){let o=n.top-t,r=n.bottom+t,s=e._maxCoord.y;e._scene.mapMode2D===_d.ROTATE&&(s*=e.maximumZoomFactor),r>s&&(r=s,o=-s),o<=r&&(o=1,r=-1),i=n.right/n.top,n.top=o,n.bottom=r,n.right=n.top*i,n.left=-n.right}else{let o=n.right-t,r=n.left+t,s=e._maxCoord.x;e._scene.mapMode2D===_d.ROTATE&&(s*=e.maximumZoomFactor),o>s&&(o=s,r=-s),o<=r&&(o=1,r=-1),i=n.top/n.right,n.right=o,n.left=r,n.top=n.right*i,n.bottom=-n.top}}function Mxe(e,t){e.move(e.direction,t)}un.prototype.zoomIn=function(e){e=e??this.defaultZoomAmount,this._mode===re.SCENE2D?zk(this,e):Mxe(this,e)};un.prototype.zoomOut=function(e){e=e??this.defaultZoomAmount,this._mode===re.SCENE2D?zk(this,-e):Mxe(this,-e)};un.prototype.getMagnitude=function(){if(this._mode===re.SCENE3D)return m.magnitude(this.position);if(this._mode===re.COLUMBUS_VIEW)return Math.abs(this.position.z);if(this._mode===re.SCENE2D)return Math.max(this.frustum.right-this.frustum.left,this.frustum.top-this.frustum.bottom)};var kft=new X;un.prototype.lookAt=function(e,t){let i=this._scene.ellipsoid??ie.default,o=Dt.eastNorthUpToFixedFrame(e,i,kft);this.lookAtTransform(o,t)};var Yft=new m,Oft=new Pe,Hft=new Pe,zft=new $;function vxe(e,t,n){t=Z.clamp(t,-Z.PI_OVER_TWO,Z.PI_OVER_TWO),e=Z.zeroToTwoPi(e)-Z.PI_OVER_TWO;let i=Pe.fromAxisAngle(m.UNIT_Y,-t,Oft),o=Pe.fromAxisAngle(m.UNIT_Z,-e,Hft),r=Pe.multiply(o,i,o),s=$.fromQuaternion(r,zft),a=m.clone(m.UNIT_X,Yft);return $.multiplyByVector(s,a,a),m.negate(a,a),m.multiplyByScalar(a,n,a),a}un.prototype.lookAtTransform=function(e,t){if(this._setTransform(e),!l(t))return;let n;if(l(t.heading)?n=vxe(t.heading,t.pitch,t.range):n=t,this._mode===re.SCENE2D){D.clone(D.ZERO,this.position),m.negate(n,this.up),this.up.z=0,m.magnitudeSquared(this.up)<Z.EPSILON10&&m.clone(m.UNIT_Y,this.up),m.normalize(this.up,this.up),this._setTransform(X.IDENTITY),m.negate(m.UNIT_Z,this.direction),m.cross(this.direction,this.up,this.right),m.normalize(this.right,this.right);let i=this.frustum,o=i.top/i.right;i.right=m.magnitude(n)*.5,i.left=-i.right,i.top=o*i.right,i.bottom=-i.top,this._setTransform(e);return}m.clone(n,this.position),m.negate(this.position,this.direction),m.normalize(this.direction,this.direction),m.cross(this.direction,m.UNIT_Z,this.right),m.magnitudeSquared(this.right)<Z.EPSILON10&&m.clone(m.UNIT_X,this.right),m.normalize(this.right,this.right),m.cross(this.right,this.direction,this.up),m.normalize(this.up,this.up),this._adjustOrthographicFrustum(!0)};var $P=new ge,Kft=new ge,Jft=new m,jft=new m,qft=new m,$ft=new m,ept=new m,tpt=new m,npt=new m,P7=new m,ipt={direction:new m,right:new m,up:new m},_xe;function jc(e,t,n,i){return Math.abs(m.dot(t,n))/i-m.dot(e,n)}function Nxe(e,t,n,i){let o=e._projection.ellipsoid,r=i?e:ipt,{north:s,south:a,west:c}=t,{east:d}=t;c>d&&(d+=Z.TWO_PI);let u=(c+d)*.5,h;if(a<-Z.PI_OVER_TWO+Z.RADIANS_PER_DEGREE&&s>Z.PI_OVER_TWO-Z.RADIANS_PER_DEGREE)h=0;else{let F=$P;F.longitude=u,F.latitude=s,F.height=0;let P=Kft;P.longitude=u,P.latitude=a,P.height=0;let A=_xe;(!l(A)||A.ellipsoid!==o)&&(_xe=A=new sA(void 0,void 0,o)),A.setEndPoints(F,P),h=A.interpolateUsingFraction(.5,$P).latitude}let p=$P;p.longitude=u,p.latitude=h,p.height=0;let g=o.cartographicToCartesian(p,npt),f=$P;f.longitude=d,f.latitude=s;let b=o.cartographicToCartesian(f,Jft);f.longitude=c;let x=o.cartographicToCartesian(f,qft);f.longitude=u;let I=o.cartographicToCartesian(f,ept);f.latitude=a;let _=o.cartographicToCartesian(f,tpt);f.longitude=d;let E=o.cartographicToCartesian(f,$ft);f.longitude=c;let S=o.cartographicToCartesian(f,jft);m.subtract(x,g,x),m.subtract(E,g,E),m.subtract(b,g,b),m.subtract(S,g,S),m.subtract(I,g,I),m.subtract(_,g,_);let R=o.geodeticSurfaceNormal(g,r.direction);m.negate(R,R);let G=m.cross(R,m.UNIT_Z,r.right);m.normalize(G,G);let B=m.cross(G,R,r.up),w;if(e.frustum instanceof gn){let F=Math.max(m.distance(b,x),m.distance(E,S)),P=Math.max(m.distance(b,E),m.distance(x,S)),A,T,L=e.frustum._offCenterFrustum,V=L.right/L.top,W=P*V;F>W?(A=F,T=A/V):(T=P,A=W),w=Math.max(A,T)}else{let F=Math.tan(e.frustum.fovy*.5),P=e.frustum.aspectRatio*F;if(w=Math.max(jc(R,B,x,F),jc(R,B,E,F),jc(R,B,b,F),jc(R,B,S,F),jc(R,B,I,F),jc(R,B,_,F),jc(R,G,x,P),jc(R,G,E,P),jc(R,G,b,P),jc(R,G,S,P),jc(R,G,I,P),jc(R,G,_,P)),a<0&&s>0){let A=$P;A.longitude=c,A.latitude=0,A.height=0;let T=o.cartographicToCartesian(A,P7);m.subtract(T,g,T),w=Math.max(w,jc(R,B,T,F),jc(R,G,T,P)),A.longitude=d,T=o.cartographicToCartesian(A,P7),m.subtract(T,g,T),w=Math.max(w,jc(R,B,T,F),jc(R,G,T,P))}}return m.add(g,m.multiplyByScalar(R,-w,P7),n)}var opt=new ge,rpt=new m,spt=new m;function apt(e,t,n){let i=e._projection;t.west>t.east&&(t=le.MAX_VALUE);let o=e._actualTransform,r=e._actualInvTransform,s=opt;s.longitude=t.east,s.latitude=t.north;let a=i.project(s,rpt);X.multiplyByPoint(o,a,a),X.multiplyByPoint(r,a,a),s.longitude=t.west,s.latitude=t.south;let c=i.project(s,spt);if(X.multiplyByPoint(o,c,c),X.multiplyByPoint(r,c,c),n.x=(a.x-c.x)*.5+c.x,n.y=(a.y-c.y)*.5+c.y,l(e.frustum.fovy)){let d=Math.tan(e.frustum.fovy*.5),u=e.frustum.aspectRatio*d;n.z=Math.max((a.x-c.x)/u,(a.y-c.y)/d)*.5}else{let d=a.x-c.x,u=a.y-c.y;n.z=Math.max(d,u)}return n}var cpt=new ge,lpt=new m,dpt=new m;function upt(e,t,n){let i=e._projection,o=t.east;t.west>t.east&&(e._scene.mapMode2D===_d.INFINITE_SCROLL?o+=Z.TWO_PI:(t=le.MAX_VALUE,o=t.east));let r=cpt;r.longitude=o,r.latitude=t.north;let s=i.project(r,lpt);r.longitude=t.west,r.latitude=t.south;let a=i.project(r,dpt),c=Math.abs(s.x-a.x)*.5,d=Math.abs(s.y-a.y)*.5,u,h,p=e.frustum.right/e.frustum.top,g=d*p;return c>g?(u=c,h=u/p):(h=d,u=g),d=Math.max(2*u,2*h),n.x=(s.x-a.x)*.5+a.x,n.y=(s.y-a.y)*.5+a.y,r=i.unproject(n,r),r.height=d,n=i.project(r,n),n}un.prototype.getRectangleCameraCoordinates=function(e,t){let n=this._mode;if(l(t)||(t=new m),n===re.SCENE3D)return Nxe(this,e,t);if(n===re.COLUMBUS_VIEW)return apt(this,e,t);if(n===re.SCENE2D)return upt(this,e,t)};var mpt=new En;function hpt(e,t,n,i){n=n??ie.default;let o=e.getPickRay(t,mpt),r=fi.rayEllipsoid(o,n);if(!r)return;let s=r.start>0?r.start:r.stop;return En.getPoint(o,s,i)}var fpt=new En;function ppt(e,t,n,i){let r=e.getPickRay(t,fpt).origin;r=m.fromElements(r.y,r.z,0,r);let s=n.unproject(r);if(!(s.latitude<-Z.PI_OVER_TWO||s.latitude>Z.PI_OVER_TWO))return n.ellipsoid.cartographicToCartesian(s,i)}var Apt=new En;function gpt(e,t,n,i){let o=e.getPickRay(t,Apt),r=-o.origin.x/o.direction.x;En.getPoint(o,r,i);let s=n.unproject(new m(i.y,i.z,0));if(!(s.latitude<-Z.PI_OVER_TWO||s.latitude>Z.PI_OVER_TWO||s.longitude<-Math.PI||s.longitude>Math.PI))return n.ellipsoid.cartographicToCartesian(s,i)}un.prototype.pickEllipsoid=function(e,t,n){let i=this._scene.canvas;if(!(i.clientWidth===0||i.clientHeight===0)){if(l(n)||(n=new m),t=t??ie.default,this._mode===re.SCENE3D)n=hpt(this,e,t,n);else if(this._mode===re.SCENE2D)n=ppt(this,e,this._projection,n);else if(this._mode===re.COLUMBUS_VIEW)n=gpt(this,e,this._projection,n);else return;return n}};var bpt=new m,ypt=new m,Cpt=new m;function xpt(e,t,n){let i=e._scene.canvas,o=i.clientWidth,r=i.clientHeight,s=Math.tan(e.frustum.fovy*.5),a=e.frustum.aspectRatio*s,c=e.frustum.near,d=2/o*t.x-1,u=2/r*(r-t.y)-1,h=e.positionWC;m.clone(h,n.origin);let p=m.multiplyByScalar(e.directionWC,c,bpt);m.add(h,p,p);let g=m.multiplyByScalar(e.rightWC,d*c*a,ypt),f=m.multiplyByScalar(e.upWC,u*c*s,Cpt),b=m.add(p,g,n.direction);return m.add(b,f,b),m.subtract(b,h,b),m.normalize(b,b),n}var Uk=new m;function Ipt(e,t,n){let i=e._scene.canvas,o=i.clientWidth,r=i.clientHeight,s=e.frustum,a=s.offCenterFrustum;l(a)&&(s=a);let c=2/o*t.x-1;c*=(s.right-s.left)*.5;let d=2/r*(r-t.y)-1;d*=(s.top-s.bottom)*.5;let u=n.origin;return m.clone(e.positionWC,u),m.multiplyByScalar(e.rightWC,c,Uk),m.add(Uk,u,u),m.multiplyByScalar(e.upWC,d,Uk),m.add(Uk,u,u),m.clone(e.directionWC,n.direction),n}un.prototype.getPickRay=function(e,t){l(t)||(t=new En);let n=this._scene.canvas;if(n.clientWidth<=0||n.clientHeight<=0)return;let i=this.frustum;return l(i.aspectRatio)&&l(i.fov)&&l(i.near)?xpt(this,e,t):Ipt(this,e,t)};var _pt=new m,Ept=new m;un.prototype.distanceToBoundingSphere=function(e){let t=m.subtract(this.positionWC,e.center,_pt),n=m.multiplyByScalar(this.directionWC,m.dot(t,this.directionWC),Ept);return Math.max(0,m.magnitude(n)-e.radius)};var Tpt=new D;un.prototype.getPixelSize=function(e,t,n){let i=this.distanceToBoundingSphere(e),o=this.frustum.getPixelDimensions(t,n,i,this._scene.pixelRatio,Tpt);return Math.max(o.x,o.y)};function Spt(e,t,n,i,o,r){let s=m.clone(t);n.y>i?s.y-=n.y-i:n.y<-i&&(s.y+=-i-n.y),n.z>o?s.z-=n.z-o:n.z<-o&&(s.z+=-o-n.z);function a(c){let d=m.lerp(t,s,c.time,new m);e.worldToCameraCoordinatesPoint(d,e.position)}return{easingFunction:ms.EXPONENTIAL_OUT,startObject:{time:0},stopObject:{time:1},duration:r,update:a}}var Lpt=new m,Exe=new m,Rpt=new m,Vpt=new m;function Gpt(e,t){let n=e.position,i=e.direction,o=e.worldToCameraCoordinatesVector(m.UNIT_X,Lpt),r=-m.dot(o,n)/m.dot(o,i),s=m.add(n,m.multiplyByScalar(i,r,Exe),Exe);e.cameraToWorldCoordinatesPoint(s,s),n=e.cameraToWorldCoordinatesPoint(e.position,Rpt);let a=Math.tan(e.frustum.fovy*.5),c=e.frustum.aspectRatio*a,d=m.magnitude(m.subtract(n,s,Vpt)),u=c*d,h=a*d,p=e._maxCoord.x,g=e._maxCoord.y,f=Math.max(u-p,p),b=Math.max(h-g,g);if(n.z<-f||n.z>f||n.y<-b||n.y>b){let x=s.y<-f||s.y>f,I=s.z<-b||s.z>b;if(x||I)return Spt(e,n,s,f,b,t)}}un.prototype.createCorrectPositionTween=function(e){if(this._mode===re.COLUMBUS_VIEW)return Gpt(this,e)};var Zpt=new m,Ta={destination:void 0,heading:void 0,pitch:void 0,roll:void 0,duration:void 0,complete:void 0,cancel:void 0,endTransform:void 0,maximumHeight:void 0,easingFunction:void 0};un.prototype.cancelFlight=function(){l(this._currentFlight)&&(this._currentFlight.cancelTween(),this._currentFlight=void 0)};un.prototype.completeFlight=function(){if(l(this._currentFlight)){this._currentFlight.cancelTween();let e={destination:void 0,orientation:{heading:void 0,pitch:void 0,roll:void 0}};e.destination=Ta.destination,e.orientation.heading=Ta.heading,e.orientation.pitch=Ta.pitch,e.orientation.roll=Ta.roll,this.setView(e),l(this._currentFlight.complete)&&this._currentFlight.complete(),this._currentFlight=void 0}};un.prototype.flyTo=function(e){e=e??Y.EMPTY_OBJECT;let t=e.destination;if(this._mode===re.MORPHING)return;this.cancelFlight();let i=t instanceof le;i&&(t=this.getRectangleCameraCoordinates(t,Zpt));let o=e.orientation??Y.EMPTY_OBJECT;if(l(o.direction)&&(o=Xxe(this,t,o,N7.orientation)),l(e.duration)&&e.duration<=0){let u=N7;u.destination=e.destination,u.orientation.heading=o.heading,u.orientation.pitch=o.pitch,u.orientation.roll=o.roll,u.convert=e.convert,u.endTransform=e.endTransform,this.setView(u),typeof e.complete=="function"&&e.complete();return}let r=this,s;Ta.destination=t,Ta.heading=o.heading,Ta.pitch=o.pitch,Ta.roll=o.roll,Ta.duration=e.duration,Ta.complete=function(){s===r._currentFlight&&(r._currentFlight=void 0),l(e.complete)&&e.complete()},Ta.cancel=e.cancel,Ta.endTransform=e.endTransform,Ta.convert=i?!1:e.convert,Ta.maximumHeight=e.maximumHeight,Ta.pitchAdjustHeight=e.pitchAdjustHeight,Ta.flyOverLongitude=e.flyOverLongitude,Ta.flyOverLongitudeWeight=e.flyOverLongitudeWeight,Ta.easingFunction=e.easingFunction;let a=this._scene,c=qP.createTween(a,Ta);if(c.duration===0){typeof c.complete=="function"&&c.complete();return}s=a.tweens.add(c),this._currentFlight=s;let d=this._scene.preloadFlightCamera;this._mode!==re.SCENE2D&&(l(d)||(d=un.clone(this)),d.setView({destination:t,orientation:o}),this._scene.preloadFlightCullingVolume=d.frustum.computeCullingVolume(d.positionWC,d.directionWC,d.upWC))};function Bpt(e,t){let n=e.frustum,i=Math.tan(n.fovy*.5),o=n.aspectRatio*i;return Math.max(t/o,t/i)}function wpt(e,t){let n=e.frustum,i=n.offCenterFrustum;l(i)&&(n=i);let o,r,s=n.right/n.top,a=t*s;return t>a?(o=t,r=o/s):(r=t,o=a),Math.max(o,r)*1.5}var Xpt=100;function Dxe(e,t,n){n=Vm.clone(l(n)?n:un.DEFAULT_OFFSET);let i=e._scene.screenSpaceCameraController.minimumZoomDistance,o=e._scene.screenSpaceCameraController.maximumZoomDistance,r=n.range;if(!l(r)||r===0){let s=t.radius;s===0?n.range=Xpt:e.frustum instanceof gn||e._mode===re.SCENE2D?n.range=wpt(e,s):n.range=Bpt(e,s),n.range=Z.clamp(n.range,i,o)}return n}un.prototype.viewBoundingSphere=function(e,t){t=Dxe(this,e,t),this.lookAt(e.center,t)};var Wpt=new X,Fpt=new m,Ppt=new m,Mpt=new m,vpt=new m,Npt=new ce,Dpt=new Pe,Qpt=new $;un.prototype.flyToBoundingSphere=function(e,t){t=t??Y.EMPTY_OBJECT;let n=this._mode===re.SCENE2D||this._mode===re.COLUMBUS_VIEW;this._setTransform(X.IDENTITY);let i=Dxe(this,e,t.offset),o;n?o=m.multiplyByScalar(m.UNIT_Z,i.range,Fpt):o=vxe(i.heading,i.pitch,i.range);let s=this._scene.ellipsoid??ie.default,a=Dt.eastNorthUpToFixedFrame(e.center,s,Wpt);X.multiplyByPoint(a,o,o);let c,d;if(!n){if(c=m.subtract(e.center,o,Ppt),m.normalize(c,c),d=X.multiplyByPointAsVector(a,m.UNIT_Z,Mpt),1-Math.abs(m.dot(c,d))<Z.EPSILON6){let h=Pe.fromAxisAngle(c,i.heading,Dpt),p=$.fromQuaternion(h,Qpt);m.fromCartesian4(X.getColumn(a,1,Npt),d),$.multiplyByVector(p,d,d)}let u=m.cross(c,d,vpt);m.cross(u,c,d),m.normalize(d,d)}this.flyTo({destination:o,orientation:{direction:c,up:d},duration:t.duration,complete:t.complete,cancel:t.cancel,endTransform:t.endTransform,maximumHeight:t.maximumHeight,easingFunction:t.easingFunction,flyOverLongitude:t.flyOverLongitude,flyOverLongitudeWeight:t.flyOverLongitudeWeight,pitchAdjustHeight:t.pitchAdjustHeight})};var Txe=new m,Sxe=new m,M7=new m,Lxe=new m,eM=[new m,new m,new m,new m];function Upt(e,t){let n=t.radii,i=e.positionWC,o=m.multiplyComponents(t.oneOverRadii,i,Txe),r=m.magnitude(o),s=m.normalize(o,Sxe),a,c;m.equalsEpsilon(s,m.UNIT_Z,Z.EPSILON10)?(a=new m(0,1,0),c=new m(0,0,1)):(a=m.normalize(m.cross(m.UNIT_Z,s,M7),M7),c=m.normalize(m.cross(s,a,Lxe),Lxe));let d=Math.sqrt(m.magnitudeSquared(o)-1),u=m.multiplyByScalar(s,1/r,Txe),h=d/r,p=m.multiplyByScalar(a,h,Sxe),g=m.multiplyByScalar(c,h,M7),f=m.add(u,g,eM[0]);m.subtract(f,p,f),m.multiplyComponents(n,f,f);let b=m.subtract(u,g,eM[1]);m.subtract(b,p,b),m.multiplyComponents(n,b,b);let x=m.subtract(u,g,eM[2]);m.add(x,p,x),m.multiplyComponents(n,x,x);let I=m.add(u,g,eM[3]);return m.add(I,p,I),m.multiplyComponents(n,I,I),eM}var v7=new D,kpt=new m,cy=[new ge,new ge,new ge,new ge];function kk(e,t,n,i,o,r){v7.x=e,v7.y=t;let s=i.pickEllipsoid(v7,o,kpt);return l(s)?(cy[n]=o.cartesianToCartographic(s,cy[n]),1):(cy[n]=o.cartesianToCartographic(r[n],cy[n]),0)}un.prototype.computeViewRectangle=function(e,t){e=e??ie.default;let n=this.frustum.computeCullingVolume(this.positionWC,this.directionWC,this.upWC),i=new ue(m.ZERO,e.maximumRadius);if(n.computeVisibility(i)===on.OUTSIDE)return;let r=this._scene.canvas,s=r.clientWidth,a=r.clientHeight,c=0,d=Upt(this,e);if(c+=kk(0,0,0,this,e,d),c+=kk(0,a,1,this,e,d),c+=kk(s,a,2,this,e,d),c+=kk(s,0,3,this,e,d),c<2)return le.MAX_VALUE;t=le.fromCartographicArray(cy,t);let u=0,h=cy[3].longitude;for(let p=0;p<4;++p){let g=cy[p].longitude,f=Math.abs(g-h);f>Z.PI?u+=Z.TWO_PI-f:u+=f,h=g}return Z.equalsEpsilon(Math.abs(u),Z.TWO_PI,Z.EPSILON9)&&(t.west=-Z.PI,t.east=Z.PI,cy[0].latitude>=0?t.north=Z.PI_OVER_TWO:t.south=-Z.PI_OVER_TWO),t};un.prototype.switchToPerspectiveFrustum=function(){if(this._mode===re.SCENE2D||this.frustum instanceof Ni)return;let e=this._scene;this.frustum=new Ni,this.frustum.aspectRatio=e.drawingBufferWidth/e.drawingBufferHeight,this.frustum.fov=Z.toRadians(60)};un.prototype.switchToOrthographicFrustum=function(){if(this._mode===re.SCENE2D||this.frustum instanceof gn)return;let e=Bxe(this),t=this._scene;this.frustum=new gn,this.frustum.aspectRatio=t.drawingBufferWidth/t.drawingBufferHeight,this.frustum.width=e};un.clone=function(e,t){return l(t)||(t=new un(e._scene)),m.clone(e.position,t.position),m.clone(e.direction,t.direction),m.clone(e.up,t.up),m.clone(e.right,t.right),X.clone(e._transform,t.transform),t._transformChanged=!0,t.frustum=e.frustum.clone(),t};var xo=un;var DMi=y(C(),1);function Ypt(e){this.pass=e.pass,this.commandList=e.commandList,this.camera=e.camera,this.cullingVolume=e.cullingVolume,this.ready=!1}var vm=Ypt;var zMi=y(C(),1);var Oxe=y(Bd(),1),Qxe=576,Opt=100,tM="#ffffff",Kk="#48b";function Hxe(e,t){this.credit=e,this.count=t??1}function Hpt(e,t){let n=e.length;for(let i=0;i<n;i++){let o=e[i];if(Gt.equals(o,t))return!0}return!1}function zpt(e){let t=e._previousCesiumCredit,n=e._currentCesiumCredit;Gt.equals(n,t)||(l(t)&&e._cesiumCreditContainer.removeChild(t.element),l(n)&&e._cesiumCreditContainer.appendChild(n.element),e._previousCesiumCredit=n)}var zxe="cesium-credit-delimiter";function Uxe(e){let t=document.createElement("span");return t.textContent=e,t.className=zxe,t}function kxe(e,t){if(l(t)){let n=document.createElement(t);n._creditId=e._creditId,n.appendChild(e),e=n}return e}function Yxe(e,t,n,i){let o=e.childNodes,r=-1;t.sort(function(s,a){return a.count-s.count});for(let s=0;s<t.length;++s){let a=t[s].credit;if(l(a)){if(r=s,l(n)&&(r*=2,s>0)){let d=r-1;if(o.length<=d)e.appendChild(Uxe(n));else{let u=o[d];u.className!==zxe&&e.replaceChild(Uxe(n),u)}}let c=a.element;if(o.length<=r)e.appendChild(kxe(c,i));else{let d=o[r];d._creditId!==a._id&&e.replaceChild(kxe(c,i),d)}}}for(++r;r<o.length;)e.removeChild(o[r])}function Kpt(e){let t=e._lightboxCredits,n=e.viewport.clientWidth,i=e.viewport.clientHeight;n!==e._lastViewportWidth&&(n<Qxe?(t.className="cesium-credit-lightbox cesium-credit-lightbox-mobile",t.style.marginTop="0"):(t.className="cesium-credit-lightbox cesium-credit-lightbox-expanded",t.style.marginTop=`${Math.floor((i-t.clientHeight)*.5)}px`),e._lastViewportWidth=n),n>=Qxe&&i!==e._lastViewportHeight&&(t.style.marginTop=`${Math.floor((i-t.clientHeight)*.5)}px`,e._lastViewportHeight=i)}function Jpt(e){let t=` +.cesium-credit-lightbox-overlay { + display: none; + z-index: 1; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(80, 80, 80, 0.8); +} + +.cesium-credit-lightbox { + background-color: #303336; + color: ${tM}; + position: relative; + min-height: ${Opt}px; + margin: auto; +} +.cesium-credit-lightbox > ul > li a, +.cesium-credit-lightbox > ul > li a:visited, +.cesium-credit-wrapper a, +.cesium-credit-wrapper a:visited { + color: ${tM}; +} +.cesium-credit-lightbox > ul > li a:hover { + color: ${Kk}; +} +.cesium-credit-lightbox.cesium-credit-lightbox-expanded { + border: 1px solid #444; + border-radius: 5px; + max-width: 370px; +} +.cesium-credit-lightbox.cesium-credit-lightbox-mobile { + height: 100%; + width: 100%; +} +.cesium-credit-lightbox-title { + padding: 20px 20px 0 20px; +} +.cesium-credit-lightbox-close { + font-size: 18pt; + cursor: pointer; + position: absolute; + top: 0; + right: 6px; + color: ${tM}; +} +.cesium-credit-lightbox-close:hover { + color: ${Kk}; +} +.cesium-credit-lightbox > ul { + margin: 0; + padding: 12px 20px 12px 40px; + font-size: 13px; +} +.cesium-credit-lightbox > ul > li { + padding-bottom: 6px; +} +.cesium-credit-lightbox > ul > li * { + padding: 0; + margin: 0; +} + +.cesium-credit-expand-link { + padding-left: 5px; + cursor: pointer; + text-decoration: underline; + color: ${tM}; +} +.cesium-credit-expand-link:hover { + color: ${Kk}; +} + +.cesium-credit-text { + color: ${tM}; +} + +.cesium-credit-delimiter { + padding: 0 5px; +} + +.cesium-credit-textContainer *, +.cesium-credit-logoContainer * { + display: inline; +} + +.cesium-credit-textContainer a:hover { + color: ${Kk} +} + +.cesium-credit-textContainer .cesium-credit-wrapper:first-of-type { + padding-left: 5px; +} +`;function n(r){if(r.shadowRoot)return r.shadowRoot;if(r.getRootNode){let s=r.getRootNode();if(s instanceof ShadowRoot)return s}}let i=n(e)??document.head,o=document.createElement("style");o.innerHTML=t,i.appendChild(o)}function Br(e,t,n){let i=this;n=n??document.body;let o=document.createElement("div");o.className="cesium-credit-lightbox-overlay",n.appendChild(o);let r=document.createElement("div");r.className="cesium-credit-lightbox",o.appendChild(r);function s(f){r.contains(f.target)||i.hideLightbox()}o.addEventListener("click",s,!1);let a=document.createElement("div");a.className="cesium-credit-lightbox-title",a.textContent="Data provided by:",r.appendChild(a);let c=document.createElement("a");c.onclick=this.hideLightbox.bind(this),c.innerHTML="×",c.className="cesium-credit-lightbox-close",r.appendChild(c);let d=document.createElement("ul");r.appendChild(d);let u=document.createElement("div");u.className="cesium-credit-logoContainer",u.style.display="inline",e.appendChild(u);let h=document.createElement("div");h.className="cesium-credit-textContainer",h.style.display="inline",e.appendChild(h);let p=document.createElement("a");p.className="cesium-credit-expand-link",p.onclick=this.showLightbox.bind(this),p.textContent="Data attribution",e.appendChild(p),Jpt(e);let g=Gt.clone(Br.cesiumCredit);this._delimiter=t??"\u2022",this._screenContainer=h,this._cesiumCreditContainer=u,this._lastViewportHeight=void 0,this._lastViewportWidth=void 0,this._lightboxCredits=r,this._creditList=d,this._lightbox=o,this._hideLightbox=s,this._expandLink=p,this._expanded=!1,this._staticCredits=[],this._cesiumCredit=g,this._previousCesiumCredit=void 0,this._currentCesiumCredit=g,this._creditDisplayElementPool=[],this._creditDisplayElementIndex=0,this._currentFrameCredits={screenCredits:new Bt,lightboxCredits:new Bt},this._defaultCredit=void 0,this.viewport=n,this.container=e}function Kxe(e,t,n,i){i=i??1;let o=t.get(n.id);if(l(o))o.count<Number.MAX_VALUE&&(o.count+=i);else{let r=e._creditDisplayElementPool,s=e._creditDisplayElementPoolIndex;s<r.length?(o=r[s],o.credit=n,o.count=i):(o=new Hxe(n,i),r.push(o)),++e._creditDisplayElementPoolIndex,t.set(n.id,o)}}Br.prototype.addCreditToNextFrame=function(e){if(e.isIon()){l(this._defaultCredit)||(this._defaultCredit=Gt.clone(Jxe())),this._currentCesiumCredit=this._defaultCredit;return}let t;e.showOnScreen?t=this._currentFrameCredits.screenCredits:t=this._currentFrameCredits.lightboxCredits,Kxe(this,t,e)};Br.prototype.addStaticCredit=function(e){let t=this._staticCredits;Hpt(t,e)||t.push(e)};Br.prototype.removeStaticCredit=function(e){let t=this._staticCredits,n=t.indexOf(e);n!==-1&&t.splice(n,1)};Br.prototype.showLightbox=function(){this._lightbox.style.display="block",this._expanded=!0};Br.prototype.hideLightbox=function(){this._lightbox.style.display="none",this._expanded=!1};Br.prototype.update=function(){this._expanded&&Kpt(this)};Br.prototype.beginFrame=function(){let e=this._currentFrameCredits;this._creditDisplayElementPoolIndex=0;let t=e.screenCredits,n=e.lightboxCredits;t.removeAll(),n.removeAll();let i=this._staticCredits;for(let o=0;o<i.length;++o){let r=i[o],s=r.showOnScreen?t:n;r.isIon()&&Gt.equals(Br.cesiumCredit,this._cesiumCredit)||Kxe(this,s,r,Number.MAX_VALUE)}Gt.equals(Br.cesiumCredit,this._cesiumCredit)||(this._cesiumCredit=Gt.clone(Br.cesiumCredit)),this._currentCesiumCredit=this._cesiumCredit};Br.prototype.endFrame=function(){let e=this._currentFrameCredits.screenCredits.values;Yxe(this._screenContainer,e,this._delimiter,void 0);let t=this._currentFrameCredits.lightboxCredits.values;this._expandLink.style.display=t.length>0?"inline":"none",Yxe(this._creditList,t,void 0,"li"),zpt(this)};Br.prototype.destroy=function(){return this._lightbox.removeEventListener("click",this._hideLightbox,!1),this.container.removeChild(this._cesiumCreditContainer),this.container.removeChild(this._screenContainer),this.container.removeChild(this._expandLink),this.viewport.removeChild(this._lightbox),me(this)};Br.prototype.isDestroyed=function(){return!1};Br._cesiumCredit=void 0;Br._cesiumCreditInitialized=!1;var Jk;function Jxe(){if(!l(Jk)){let e=hn("Assets/Images/ion-credit.png");e.indexOf("http://")!==0&&e.indexOf("https://")!==0&&e.indexOf("data:")!==0&&(e=new Oxe.default(e).path()),Jk=new Gt(`<a href="https://cesium.com/" target="_blank"><img src="${e}" style="vertical-align: -7px" title="Cesium ion"/></a>`,!0)}return Br._cesiumCreditInitialized||(Br._cesiumCredit=Jk,Br._cesiumCreditInitialized=!0),Jk}Object.defineProperties(Br,{cesiumCredit:{get:function(){return Jxe(),Br._cesiumCredit},set:function(e){Br._cesiumCredit=e,Br._cesiumCreditInitialized=!0}}});Br.CreditDisplayElement=Hxe;var nM=Br;var kvi=y(C(),1);var uvi=y(C(),1);var jk=0,jpt=1;function LI(e){let t=e.frustum,n=e.orientation,i=e.origin,o=e.vertexFormat??we.DEFAULT,r=e._drawNearPlane??!0,s,a;t instanceof Ni?(s=jk,a=Ni.packedLength):t instanceof gn&&(s=jpt,a=gn.packedLength),this._frustumType=s,this._frustum=t.clone(),this._origin=m.clone(i),this._orientation=Pe.clone(n),this._drawNearPlane=r,this._vertexFormat=o,this._workerName="createFrustumGeometry",this.packedLength=2+a+m.packedLength+Pe.packedLength+we.packedLength}LI.pack=function(e,t,n){n=n??0;let i=e._frustumType,o=e._frustum;return t[n++]=i,i===jk?(Ni.pack(o,t,n),n+=Ni.packedLength):(gn.pack(o,t,n),n+=gn.packedLength),m.pack(e._origin,t,n),n+=m.packedLength,Pe.pack(e._orientation,t,n),n+=Pe.packedLength,we.pack(e._vertexFormat,t,n),n+=we.packedLength,t[n]=e._drawNearPlane?1:0,t};var qpt=new Ni,$pt=new gn,eAt=new Pe,tAt=new m,nAt=new we;LI.unpack=function(e,t,n){t=t??0;let i=e[t++],o;i===jk?(o=Ni.unpack(e,t,qpt),t+=Ni.packedLength):(o=gn.unpack(e,t,$pt),t+=gn.packedLength);let r=m.unpack(e,t,tAt);t+=m.packedLength;let s=Pe.unpack(e,t,eAt);t+=Pe.packedLength;let a=we.unpack(e,t,nAt);t+=we.packedLength;let c=e[t]===1;if(!l(n))return new LI({frustum:o,origin:r,orientation:s,vertexFormat:a,_drawNearPlane:c});let d=i===n._frustumType?n._frustum:void 0;return n._frustum=o.clone(d),n._frustumType=i,n._origin=m.clone(r,n._origin),n._orientation=Pe.clone(s,n._orientation),n._vertexFormat=we.clone(a,n._vertexFormat),n._drawNearPlane=c,n};function aL(e,t,n,i,o,r,s,a){let c=e/3*2;for(let d=0;d<4;++d)l(t)&&(t[e]=r.x,t[e+1]=r.y,t[e+2]=r.z),l(n)&&(n[e]=s.x,n[e+1]=s.y,n[e+2]=s.z),l(i)&&(i[e]=a.x,i[e+1]=a.y,i[e+2]=a.z),e+=3;o[c]=0,o[c+1]=0,o[c+2]=1,o[c+3]=0,o[c+4]=1,o[c+5]=1,o[c+6]=0,o[c+7]=1}var iAt=new $,oAt=new X,k7=new X,jxe=new m,qxe=new m,$xe=new m,rAt=new m,sAt=new m,aAt=new m,ly=new Array(3),iM=new Array(4);iM[0]=new ce(-1,-1,1,1);iM[1]=new ce(1,-1,1,1);iM[2]=new ce(1,1,1,1);iM[3]=new ce(-1,1,1,1);var eIe=new Array(4);for(let e=0;e<4;++e)eIe[e]=new ce;LI._computeNearFarPlanes=function(e,t,n,i,o,r,s,a){let c=$.fromQuaternion(t,iAt),d=r??jxe,u=s??qxe,h=a??$xe;d=$.getColumn(c,0,d),u=$.getColumn(c,1,u),h=$.getColumn(c,2,h),m.normalize(d,d),m.normalize(u,u),m.normalize(h,h),m.negate(d,d);let p=X.computeView(e,h,u,d,oAt),g,f,b=i.projectionMatrix;if(n===jk){let x=X.multiply(b,p,k7);f=X.inverse(x,k7)}else g=X.inverseTransformation(p,k7);l(f)?(ly[0]=i.near,ly[1]=i.far):(ly[0]=0,ly[1]=i.near,ly[2]=i.far);for(let x=0;x<2;++x)for(let I=0;I<4;++I){let _=ce.clone(iM[I],eIe[I]);if(l(f)){_=X.multiplyByVector(f,_,_);let E=1/_.w;m.multiplyByScalar(_,E,_),m.subtract(_,e,_),m.normalize(_,_);let S=m.dot(h,_);m.multiplyByScalar(_,ly[x]/S,_),m.add(_,e,_)}else{let E=i.offCenterFrustum;l(E)&&(i=E);let S=ly[x],R=ly[x+1];_.x=(_.x*(i.right-i.left)+i.left+i.right)*.5,_.y=(_.y*(i.top-i.bottom)+i.bottom+i.top)*.5,_.z=(_.z*(S-R)-S-R)*.5,_.w=1,X.multiplyByVector(g,_,_)}o[12*x+I*3]=_.x,o[12*x+I*3+1]=_.y,o[12*x+I*3+2]=_.z}};LI.createGeometry=function(e){let t=e._frustumType,n=e._frustum,i=e._origin,o=e._orientation,r=e._drawNearPlane,s=e._vertexFormat,a=r?6:5,c=new Float64Array(72);LI._computeNearFarPlanes(i,o,t,n,c);let d=24;c[d]=c[12],c[d+1]=c[13],c[d+2]=c[14],c[d+3]=c[0],c[d+4]=c[1],c[d+5]=c[2],c[d+6]=c[9],c[d+7]=c[10],c[d+8]=c[11],c[d+9]=c[21],c[d+10]=c[22],c[d+11]=c[23],d+=12,c[d]=c[15],c[d+1]=c[16],c[d+2]=c[17],c[d+3]=c[3],c[d+4]=c[4],c[d+5]=c[5],c[d+6]=c[0],c[d+7]=c[1],c[d+8]=c[2],c[d+9]=c[12],c[d+10]=c[13],c[d+11]=c[14],d+=12,c[d]=c[3],c[d+1]=c[4],c[d+2]=c[5],c[d+3]=c[15],c[d+4]=c[16],c[d+5]=c[17],c[d+6]=c[18],c[d+7]=c[19],c[d+8]=c[20],c[d+9]=c[6],c[d+10]=c[7],c[d+11]=c[8],d+=12,c[d]=c[6],c[d+1]=c[7],c[d+2]=c[8],c[d+3]=c[18],c[d+4]=c[19],c[d+5]=c[20],c[d+6]=c[21],c[d+7]=c[22],c[d+8]=c[23],c[d+9]=c[9],c[d+10]=c[10],c[d+11]=c[11],r||(c=c.subarray(12));let u=new xn({position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:c})});if(l(s.normal)||l(s.tangent)||l(s.bitangent)||l(s.st)){let p=l(s.normal)?new Float32Array(12*a):void 0,g=l(s.tangent)?new Float32Array(12*a):void 0,f=l(s.bitangent)?new Float32Array(12*a):void 0,b=l(s.st)?new Float32Array(8*a):void 0,x=jxe,I=qxe,_=$xe,E=m.negate(x,rAt),S=m.negate(I,sAt),R=m.negate(_,aAt);d=0,r&&(aL(d,p,g,f,b,R,x,I),d+=12),aL(d,p,g,f,b,_,E,I),d+=12,aL(d,p,g,f,b,E,R,I),d+=12,aL(d,p,g,f,b,S,R,E),d+=12,aL(d,p,g,f,b,x,_,I),d+=12,aL(d,p,g,f,b,I,_,E),l(p)&&(u.normal=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:p})),l(g)&&(u.tangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:g})),l(f)&&(u.bitangent=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:f})),l(b)&&(u.st=new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:2,values:b}))}let h=new Uint16Array(6*a);for(let p=0;p<a;++p){let g=p*6,f=p*4;h[g]=f,h[g+1]=f+1,h[g+2]=f+2,h[g+3]=f,h[g+4]=f+2,h[g+5]=f+3}return new pt({attributes:u,indices:h,primitiveType:We.TRIANGLES,boundingSphere:ue.fromVertices(c)})};var RI=LI;var Tvi=y(C(),1);var Y7=0,cAt=1;function oM(e){let t=e.frustum,n=e.orientation,i=e.origin,o=e._drawNearPlane??!0,r,s;t instanceof Ni?(r=Y7,s=Ni.packedLength):t instanceof gn&&(r=cAt,s=gn.packedLength),this._frustumType=r,this._frustum=t.clone(),this._origin=m.clone(i),this._orientation=Pe.clone(n),this._drawNearPlane=o,this._workerName="createFrustumOutlineGeometry",this.packedLength=2+s+m.packedLength+Pe.packedLength}oM.pack=function(e,t,n){n=n??0;let i=e._frustumType,o=e._frustum;return t[n++]=i,i===Y7?(Ni.pack(o,t,n),n+=Ni.packedLength):(gn.pack(o,t,n),n+=gn.packedLength),m.pack(e._origin,t,n),n+=m.packedLength,Pe.pack(e._orientation,t,n),n+=Pe.packedLength,t[n]=e._drawNearPlane?1:0,t};var lAt=new Ni,dAt=new gn,uAt=new Pe,mAt=new m;oM.unpack=function(e,t,n){t=t??0;let i=e[t++],o;i===Y7?(o=Ni.unpack(e,t,lAt),t+=Ni.packedLength):(o=gn.unpack(e,t,dAt),t+=gn.packedLength);let r=m.unpack(e,t,mAt);t+=m.packedLength;let s=Pe.unpack(e,t,uAt);t+=Pe.packedLength;let a=e[t]===1;if(!l(n))return new oM({frustum:o,origin:r,orientation:s,_drawNearPlane:a});let c=i===n._frustumType?n._frustum:void 0;return n._frustum=o.clone(c),n._frustumType=i,n._origin=m.clone(r,n._origin),n._orientation=Pe.clone(s,n._orientation),n._drawNearPlane=a,n};oM.createGeometry=function(e){let t=e._frustumType,n=e._frustum,i=e._origin,o=e._orientation,r=e._drawNearPlane,s=new Float64Array(24);RI._computeNearFarPlanes(i,o,t,n,s);let a=new xn({position:new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:s})}),c,d,u=r?2:1,h=new Uint16Array(8*(u+1)),p=r?0:1;for(;p<2;++p)c=r?p*8:0,d=p*4,h[c]=d,h[c+1]=d+1,h[c+2]=d+1,h[c+3]=d+2,h[c+4]=d+2,h[c+5]=d+3,h[c+6]=d+3,h[c+7]=d;for(p=0;p<2;++p)c=(u+p)*8,d=p*4,h[c]=d,h[c+1]=d+4,h[c+2]=d+1,h[c+3]=d+5,h[c+4]=d+2,h[c+5]=d+6,h[c+6]=d+3,h[c+7]=d+7;return new pt({attributes:a,indices:h,primitiveType:We.LINES,boundingSphere:ue.fromVertices(s)})};var rM=oM;function qk(e){e=e??Y.EMPTY_OBJECT,this._camera=e.camera,this._frustumSplits=e.frustumSplits,this._color=e.color??U.CYAN,this._updateOnChange=e.updateOnChange??!0,this.show=e.show??!0,this.id=e.id,this._id=void 0,this._outlinePrimitives=[],this._planesPrimitives=[]}var hAt=new m,fAt=new $,pAt=new Pe,AAt=new Ni,gAt=new vl,bAt=new gn,yAt=new qr,CAt=new U,xAt=[1,1e5];qk.prototype.update=function(e){if(!this.show)return;let t=this._planesPrimitives,n=this._outlinePrimitives,i,o;if(this._updateOnChange){for(o=t.length,i=0;i<o;++i)n[i]=n[i]&&n[i].destroy(),t[i]=t[i]&&t[i].destroy();t.length=0,n.length=0}if(t.length===0){let r=this._camera,s=r.frustum,a;s instanceof Ni?a=AAt:s instanceof vl?a=gAt:s instanceof gn?a=bAt:a=yAt,a=s.clone(a);let c,d=this._frustumSplits;!l(d)||d.length<=1?(d=xAt,d[0]=this._camera.frustum.near,d[1]=this._camera.frustum.far,c=1):c=d.length-1;let u=r.positionWC,h=r.directionWC,p=r.upWC,g=r.rightWC;g=m.negate(g,hAt);let f=fAt;$.setColumn(f,0,g,f),$.setColumn(f,1,p,f),$.setColumn(f,2,h,f);let b=Pe.fromRotationMatrix(f,pAt);for(t.length=n.length=c,i=0;i<c;++i)a.near=d[i],a.far=d[i+1],t[i]=new Nn({geometryInstances:new wt({geometry:new RI({origin:u,orientation:b,frustum:a,_drawNearPlane:i===0}),attributes:{color:tn.fromColor(U.fromAlpha(this._color,.1,CAt))},id:this.id,pickPrimitive:this}),appearance:new yn({translucent:!0,flat:!0}),asynchronous:!1}),n[i]=new Nn({geometryInstances:new wt({geometry:new rM({origin:u,orientation:b,frustum:a,_drawNearPlane:i===0}),attributes:{color:tn.fromColor(this._color)},id:this.id,pickPrimitive:this}),appearance:new yn({translucent:!1,flat:!0}),asynchronous:!1})}for(o=t.length,i=0;i<o;++i)n[i].update(e),t[i].update(e)};qk.prototype.isDestroyed=function(){return!1};qk.prototype.destroy=function(){let e=this._planesPrimitives.length;for(let t=0;t<e;++t)this._outlinePrimitives[t]=this._outlinePrimitives[t]&&this._outlinePrimitives[t].destroy(),this._planesPrimitives[t]=this._planesPrimitives[t]&&this._planesPrimitives[t].destroy();return me(this)};var Rp=qk;var mNi=y(C(),1);function aM(e){this._rs=void 0,this._sp=void 0,this._va=void 0,this._command=void 0,this._mode=void 0,this._useLogDepth=!1,this._ellipsoidOffset=e??0}var sM=Ht.supportsTypedArrays()?new Float32Array(12):[],tIe=new m,nIe=new m,O7=new m,iIe=new m,$k=new m;function IAt(e,t){let n=e.radii,i=t.camera,o,r,s;if(i.frustum instanceof gn)o=m.ZERO,r=i.rightWC,s=i.upWC;else{let h=i.positionWC,p=m.multiplyComponents(e.oneOverRadii,h,tIe),g=m.normalize(p,nIe),f=m.normalize(m.cross(m.UNIT_Z,p,O7),O7),b=m.normalize(m.cross(g,f,iIe),iIe),x=m.magnitude(p),I=Math.sqrt(x*x-1);o=m.multiplyByScalar(g,1/x,tIe);let _=I/x;r=m.multiplyByScalar(f,_,nIe),s=m.multiplyByScalar(b,_,O7)}let a=m.add(o,s,$k);m.subtract(a,r,a),m.multiplyComponents(n,a,a),m.pack(a,sM,0);let c=m.subtract(o,s,$k);m.subtract(c,r,c),m.multiplyComponents(n,c,c),m.pack(c,sM,3);let d=m.add(o,s,$k);m.add(d,r,d),m.multiplyComponents(n,d,d),m.pack(d,sM,6);let u=m.subtract(o,s,$k);return m.add(u,r,u),m.multiplyComponents(n,u,u),m.pack(u,sM,9),sM}aM.prototype.update=function(e){if(this._mode=e.mode,e.mode!==re.SCENE3D)return;let t=e.context,n=e.mapProjection.ellipsoid.radii,i=new ie(n.x+this._ellipsoidOffset,n.y+this._ellipsoidOffset,n.z+this._ellipsoidOffset),o=e.useLogDepth;if(l(this._command)||(this._rs=Qe.fromCache({cull:{enabled:!0},depthTest:{enabled:!0},colorMask:{red:!1,green:!1,blue:!1,alpha:!1}}),this._command=new ot({renderState:this._rs,boundingVolume:new ue(m.ZERO,i.maximumRadius),pass:Ge.OPAQUE,owner:this})),!l(this._sp)||this._useLogDepth!==o){this._useLogDepth=o;let s=new Oe({sources:[gP]}),a=new Oe({sources:[AP]});o&&(a.defines.push("LOG_DEPTH"),s.defines.push("LOG_DEPTH")),this._sp=ln.replaceCache({shaderProgram:this._sp,context:t,vertexShaderSource:s,fragmentShaderSource:a,attributeLocations:{position:0}}),this._command.shaderProgram=this._sp}let r=IAt(i,e);if(l(this._va))this._va.getAttribute(0).vertexBuffer.copyFromArrayView(r);else{let s=new pt({attributes:{position:new Ze({componentDatatype:J.FLOAT,componentsPerAttribute:3,values:r})},indices:[0,1,2,2,1,3],primitiveType:We.TRIANGLES});this._va=ui.fromGeometry({context:t,geometry:s,attributeLocations:{position:0},bufferUsage:Ne.DYNAMIC_DRAW}),this._command.vertexArray=this._va}};aM.prototype.execute=function(e,t){this._mode===re.SCENE3D&&this._command.execute(e,t)};aM.prototype.isDestroyed=function(){return!1};aM.prototype.destroy=function(){this._sp=this._sp&&this._sp.destroy(),this._va=this._va&&this._va.destroy()};var cM=aM;var xNi=y(C(),1);function lL(){}var _At=/\bgl_FragDepth\b/,EAt=/\bdiscard\b/;function TAt(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"depthOnly");if(l(n))return n;let i=t.fragmentShaderSource,o=!1,r=i.sources;for(let a=0;a<r.length;++a)if(_At.test(r[a])||EAt.test(r[a])){o=!0;break}let s=i.defines.indexOf("LOG_DEPTH")>=0;if(!o&&!s){let a=`void main() +{ + out_FragColor = vec4(1.0); +} +`;i=new Oe({sources:[a]})}else if(!o&&s){let a=`void main() +{ + out_FragColor = vec4(1.0); + czm_writeLogDepth(); +} +`;i=new Oe({defines:["LOG_DEPTH"],sources:[a]})}return e.shaderCache.createDerivedShaderProgram(t,"depthOnly",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:i,attributeLocations:t._attributeLocations})}function SAt(e,t){let n=e._depthOnlyRenderStateCache,i=n[t.id];if(l(i))return i;let o=Qe.getState(t);o.depthMask=!0,o.colorMask={red:!1,green:!1,blue:!1,alpha:!1};let r=Qe.fromCache(o);return n[t.id]=r,r}lL.createDepthOnlyDerivedCommand=function(e,t,n,i){l(i)||(i={});let o=i.depthOnlyCommand?.shaderProgram,r=i.depthOnlyCommand?.renderState;return i.depthOnlyCommand=ot.shallowClone(t,i.depthOnlyCommand),!l(o)||i.shaderProgramId!==t.shaderProgram.id?(i.depthOnlyCommand.shaderProgram=TAt(n,t.shaderProgram),i.depthOnlyCommand.renderState=SAt(e,t.renderState),i.shaderProgramId=t.shaderProgram.id):(i.depthOnlyCommand.shaderProgram=o,i.depthOnlyCommand.renderState=r),i};var LAt=/\s+czm_writeLogDepth\(/,RAt=/\s+czm_vertexLogDepth\(/;function VAt(e,t){if(t.fragmentShaderSource.defines.indexOf("LOG_DEPTH_READ_ONLY")>=0)return t;let i=e.shaderCache.getDerivedShaderProgram(t,"logDepth");if(l(i))return i;let o=t._attributeLocations,r=t.vertexShaderSource.clone(),s=t.fragmentShaderSource.clone();r.defines=l(r.defines)?r.defines.slice(0):[],r.defines.push("LOG_DEPTH"),s.defines=l(s.defines)?s.defines.slice(0):[],s.defines.push("LOG_DEPTH");let a=!1,c=r.sources;for(let u=0;u<c.length;++u)if(RAt.test(c[u])){a=!0;break}if(!a){for(let h=0;h<c.length;++h)c[h]=Oe.replaceMain(c[h],"czm_log_depth_main");c.push(` + +void main() +{ + czm_log_depth_main(); + czm_vertexLogDepth(); +} +`)}c=s.sources,a=!1;for(let u=0;u<c.length;++u)LAt.test(c[u])&&(a=!0);s.defines.indexOf("LOG_DEPTH_WRITE")!==-1&&(a=!0);let d="";if(!a){for(let u=0;u<c.length;u++)c[u]=Oe.replaceMain(c[u],"czm_log_depth_main");d=` +void main() +{ + czm_log_depth_main(); + czm_writeLogDepth(); +} +`}return c.push(d),e.shaderCache.createDerivedShaderProgram(t,"logDepth",{vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:o})}lL.createLogDepthCommand=function(e,t,n){l(n)||(n={});let i=n.command?.shaderProgram;return n.command=ot.shallowClone(e,n.command),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.command.shaderProgram=VAt(t,e.shaderProgram),n.shaderProgramId=e.shaderProgram.id):n.command.shaderProgram=i,n};function GAt(e,t,n){let i=e.shaderCache.getDerivedShaderProgram(t,"pick");if(l(i))return i;let o=t._attributeLocations,{sources:r,defines:s}=t.fragmentShaderSource,c=r.some(g=>g.includes("out_FragData"))?"out_FragData_0":"out_FragColor",d=`void main () +{ + czm_non_pick_main(); + if (${c}.a == 0.0) { + discard; + } + ${c} = ${n}; +} `,u=r.length,h=new Array(u+1);for(let g=0;g<u;++g)h[g]=Oe.replaceMain(r[g],"czm_non_pick_main");h[u]=d;let p=new Oe({sources:h,defines:s});return e.shaderCache.createDerivedShaderProgram(t,"pick",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:p,attributeLocations:o})}function oIe(e,t){let n=e.picking.pickRenderStateCache,i=n[t.id];if(l(i))return i;let o=Qe.getState(t);o.blending.enabled=!1,o.depthMask=!0;let r=Qe.fromCache(o);return n[t.id]=r,r}lL.createPickDerivedCommand=function(e,t,n,i){l(i)||(i={});let o=i.pickCommand?.shaderProgram,r=i.pickCommand?.renderState;return i.pickCommand=ot.shallowClone(t,i.pickCommand),!l(o)||i.shaderProgramId!==t.shaderProgram.id?(i.pickCommand.shaderProgram=GAt(n,t.shaderProgram,t.pickId),i.pickCommand.renderState=oIe(e,t.renderState),i.shaderProgramId=t.shaderProgram.id):(i.pickCommand.shaderProgram=o,i.pickCommand.renderState=r),i};function cL(e,t,n){let i=e.length;for(let o=0;o<i;o++)e[o].trimStart().split(/\s+/)[0]===t&&(e[o]=`${t} ${n}`)}function rIe(e){return e.isArray?e.arrayLength:bt.getComponentCount(e.type)}function ZAt(e){let t=rIe(e);return e.normalized?t===1?"float":`vec${t}`:t===1?"int":`ivec${t}`}function sIe(e,t,n){return`((${e} - float(${t})) / float(${n}))`}function aIe(e,t){let n=Ut.getMaximum(t);return`(${e}) / float(${n})`}function BAt(e,t){let n="float(value)";if(t.hasValueTransform){let i=t.offset,o=t.scale;n=sIe(n,i,o)}return e.normalized||(n=aIe(n,e.componentType)),n}function wAt(e,t,n){let o=`float(${`value.${n}`})`;if(t.hasValueTransform){let r=t.offset[n],s=t.scale[n];o=sIe(o,r,s)}return e.normalized||(o=aIe(o,e.componentType)),o}function XAt(e,t,n){let i=n.schemaId,o=n.className,r=n.propertyName,s=`pickMetadata-${i}-${o}-${r}`,a=e.shaderCache.getDerivedShaderProgram(t,s);if(l(a))return a;let c=n.metadataProperty,d=n.classProperty,u=ZAt(d),h=["0.0","0.0","0.0","0.0"],p=rIe(d);if(p===1)h[0]=BAt(d,c);else{let x=["x","y","z","w"];for(let I=0;I<p;I++)h[I]=wAt(d,c,x[I])}let g=t.fragmentShaderSource.defines.slice();g.push(Jd.METADATA_PICKING_ENABLED),cL(g,Jd.METADATA_PICKING_VALUE_TYPE,u),cL(g,Jd.METADATA_PICKING_VALUE_STRING,`metadata.${r}`),cL(g,Jd.METADATA_PICKING_VALUE_COMPONENT_X,h[0]),cL(g,Jd.METADATA_PICKING_VALUE_COMPONENT_Y,h[1]),cL(g,Jd.METADATA_PICKING_VALUE_COMPONENT_Z,h[2]),cL(g,Jd.METADATA_PICKING_VALUE_COMPONENT_W,h[3]);let f=new Oe({sources:t.fragmentShaderSource.sources,defines:g});return e.shaderCache.createDerivedShaderProgram(t,s,{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:f,attributeLocations:t._attributeLocations})}lL.createPickMetadataDerivedCommand=function(e,t,n,i){return l(i)||(i={}),i.pickMetadataCommand=ot.shallowClone(t,i.pickMetadataCommand),i.pickMetadataCommand.shaderProgram=XAt(n,t.shaderProgram,t.pickedMetadataInfo),i.pickMetadataCommand.renderState=oIe(e,t.renderState),i.shaderProgramId=t.shaderProgram.id,i};function WAt(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"HDR");if(l(n))return n;let i=t._attributeLocations,o=t.vertexShaderSource.clone(),r=t.fragmentShaderSource.clone();return o.defines=l(o.defines)?o.defines.slice(0):[],o.defines.push("HDR"),r.defines=l(r.defines)?r.defines.slice(0):[],r.defines.push("HDR"),e.shaderCache.createDerivedShaderProgram(t,"HDR",{vertexShaderSource:o,fragmentShaderSource:r,attributeLocations:i})}lL.createHdrCommand=function(e,t,n){l(n)||(n={});let i=n.command?.shaderProgram;return n.command=ot.shallowClone(e,n.command),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.command.shaderProgram=WAt(t,e.shaderProgram),n.shaderProgramId=e.shaderProgram.id):n.command.shaderProgram=i,n};var Vp=lL;var RNi=y(C(),1);function eY(e){this._scene=e,this._lastAlpha=void 0,this._lastBeta=void 0,this._lastGamma=void 0,this._alpha=void 0,this._beta=void 0,this._gamma=void 0;let t=this;function n(i){let o=i.alpha;if(!l(o)){t._alpha=void 0,t._beta=void 0,t._gamma=void 0;return}t._alpha=Z.toRadians(o),t._beta=Z.toRadians(i.beta),t._gamma=Z.toRadians(i.gamma)}window.addEventListener("deviceorientation",n,!1),this._removeListener=function(){window.removeEventListener("deviceorientation",n,!1)}}var FAt=new Pe,cIe=new Pe,PAt=new $;function MAt(e,t,n,i){let o=e.direction,r=e.right,s=e.up,a=Pe.fromAxisAngle(o,n,cIe),c=Pe.fromAxisAngle(r,i,FAt),d=Pe.multiply(c,a,c),u=Pe.fromAxisAngle(s,t,cIe);Pe.multiply(u,d,d);let h=$.fromQuaternion(d,PAt);$.multiplyByVector(h,r,r),$.multiplyByVector(h,s,s),$.multiplyByVector(h,o,o)}eY.prototype.update=function(){if(!l(this._alpha))return;l(this._lastAlpha)||(this._lastAlpha=this._alpha,this._lastBeta=this._beta,this._lastGamma=this._gamma);let e=this._lastAlpha-this._alpha,t=this._lastBeta-this._beta,n=this._lastGamma-this._gamma;MAt(this._scene.camera,-e,t,n),this._lastAlpha=this._alpha,this._lastBeta=this._beta,this._lastGamma=this._gamma};eY.prototype.isDestroyed=function(){return!1};eY.prototype.destroy=function(){return this._removeListener(),me(this)};var lM=eY;var XNi=y(C(),1);function H7(){this.enabled=!0,this.renderable=!0,this.density=6e-4,this.heightScalar=.001,this._heightFalloff=.59,this.maxHeight=8e5,this.visualDensityScalar=.15,this.screenSpaceErrorFactor=2,this.minimumBrightness=.03}Object.defineProperties(H7.prototype,{heightFalloff:{get:function(){return this._heightFalloff},set:function(e){this._heightFalloff=e}}});var vAt=new m;H7.prototype.update=function(e){if(!(e.fog.enabled=this.enabled))return;e.fog.renderable=this.renderable;let n=e.camera,i=n.positionCartographic;if(!l(i)||i.height>this.maxHeight||e.mode!==re.SCENE3D){e.fog.enabled=!1,e.fog.density=0;return}let o=i.height,r=this.density*this.heightScalar*Math.pow(Math.max(o/this.maxHeight,Z.EPSILON4),-Math.max(this._heightFalloff,0)),s=m.normalize(n.positionWC,vAt),a=Math.abs(m.dot(n.directionWC,s));r*=1-a,e.fog.density=r,e.fog.visualDensityScalar=this.visualDensityScalar,e.fog.sse=this.screenSpaceErrorFactor,e.fog.minimumBrightness=this.minimumBrightness};var dM=H7;var PNi=y(C(),1);function NAt(e,t,n){this.context=e,this.commandList=[],this.shadowMaps=[],this.brdfLutGenerator=void 0,this.environmentMap=void 0,this.sphericalHarmonicCoefficients=void 0,this.specularEnvironmentMaps=void 0,this.specularEnvironmentMapsMaximumLOD=void 0,this.mode=re.SCENE3D,this.morphTime=re.getMorphTime(re.SCENE3D),this.frameNumber=0,this.newFrame=!1,this.time=void 0,this.jobScheduler=n,this.mapProjection=void 0,this.camera=void 0,this.cameraUnderground=!1,this.globeTranslucencyState=void 0,this.cullingVolume=void 0,this.occluder=void 0,this.maximumScreenSpaceError=void 0,this.pixelRatio=1,this.passes={render:!1,pick:!1,pickVoxel:!1,depth:!1,postProcess:!1,offscreen:!1},this.creditDisplay=t,this.afterRender=[],this.scene3DOnly=!1,this.fog={enabled:!1,renderable:!1,density:void 0,visualDensityScalar:void 0,sse:void 0,minimumBrightness:void 0},this.atmosphere=void 0,this.verticalExaggeration=1,this.verticalExaggerationRelativeHeight=0,this.shadowState={shadowsEnabled:!0,shadowMaps:[],lightShadowMaps:[],nearPlane:1,farPlane:5e3,closestObjectSize:1e3,lastDirtyTime:0,outOfView:!0},this.splitPosition=0,this.frustumSplits=[],this.backgroundColor=void 0,this.light=void 0,this.minimumDisableDepthTestDistance=void 0,this.invertClassification=!1,this.invertClassificationColor=void 0,this.useLogDepth=!1,this.tilesetPassState=void 0,this.minimumTerrainHeight=0,this.pickingMetadata=!1,this.pickedMetadataInfo=void 0}var uM=NAt;var JNi=y(C(),1);var Ja={OPAQUE_FRONT_FACE:0,OPAQUE_BACK_FACE:1,DEPTH_ONLY_FRONT_FACE:2,DEPTH_ONLY_BACK_FACE:3,DEPTH_ONLY_FRONT_AND_BACK_FACE:4,TRANSLUCENT_FRONT_FACE:5,TRANSLUCENT_BACK_FACE:6,TRANSLUCENT_FRONT_FACE_MANUAL_DEPTH_TEST:7,TRANSLUCENT_BACK_FACE_MANUAL_DEPTH_TEST:8,PICK_FRONT_FACE:9,PICK_BACK_FACE:10,DERIVED_COMMANDS_MAXIMUM_LENGTH:11},VI=Ja.DERIVED_COMMANDS_MAXIMUM_LENGTH,bIe=["opaqueFrontFaceCommand","opaqueBackFaceCommand","depthOnlyFrontFaceCommand","depthOnlyBackFaceCommand","depthOnlyFrontAndBackFaceCommand","translucentFrontFaceCommand","translucentBackFaceCommand","translucentFrontFaceManualDepthTestCommand","translucentBackFaceManualDepthTestCommand","pickFrontFaceCommand","pickBackFaceCommand"];function GI(){this._frontFaceAlphaByDistance=new zt(0,1,0,1),this._backFaceAlphaByDistance=new zt(0,1,0,1),this._frontFaceTranslucent=!1,this._backFaceTranslucent=!1,this._requiresManualDepthTest=!1,this._sunVisibleThroughGlobe=!1,this._environmentVisible=!1,this._useDepthPlane=!1,this._numberOfTextureUniforms=0,this._globeTranslucencyFramebuffer=void 0,this._rectangle=le.clone(le.MAX_VALUE),this._derivedCommandKey=0,this._derivedCommandsDirty=!1,this._derivedCommandPacks=void 0,this._derivedCommandTypes=new Array(VI),this._derivedBlendCommandTypes=new Array(VI),this._derivedPickCommandTypes=new Array(VI),this._derivedCommandTypesToUpdate=new Array(VI),this._derivedCommandsLength=0,this._derivedBlendCommandsLength=0,this._derivedPickCommandsLength=0,this._derivedCommandsToUpdateLength=0}Object.defineProperties(GI.prototype,{frontFaceAlphaByDistance:{get:function(){return this._frontFaceAlphaByDistance}},backFaceAlphaByDistance:{get:function(){return this._backFaceAlphaByDistance}},translucent:{get:function(){return this._frontFaceTranslucent}},sunVisibleThroughGlobe:{get:function(){return this._sunVisibleThroughGlobe}},environmentVisible:{get:function(){return this._environmentVisible}},useDepthPlane:{get:function(){return this._useDepthPlane}},numberOfTextureUniforms:{get:function(){return this._numberOfTextureUniforms}},rectangle:{get:function(){return this._rectangle}}});GI.prototype.update=function(e){let t=e.globe;if(!l(t)||!t.show){this._frontFaceTranslucent=!1,this._backFaceTranslucent=!1,this._sunVisibleThroughGlobe=!0,this._environmentVisible=!0,this._useDepthPlane=!1;return}this._frontFaceAlphaByDistance=lIe(t.translucency.enabled,t.translucency.frontFaceAlpha,t.translucency.frontFaceAlphaByDistance,this._frontFaceAlphaByDistance),this._backFaceAlphaByDistance=lIe(t.translucency.enabled,t.translucency.backFaceAlpha,t.translucency.backFaceAlphaByDistance,this._backFaceAlphaByDistance),this._frontFaceTranslucent=dIe(t.translucency.enabled,this._frontFaceAlphaByDistance,t),this._backFaceTranslucent=dIe(t.translucency.enabled,this._backFaceAlphaByDistance,t),this._requiresManualDepthTest=kAt(this,e,t),this._sunVisibleThroughGlobe=DAt(this,e),this._environmentVisible=QAt(this,e),this._useDepthPlane=UAt(this,e),this._numberOfTextureUniforms=YAt(this),this._rectangle=le.clone(t.translucency.rectangle,this._rectangle),OAt(this,e)};function lIe(e,t,n,i){return e?l(n)?(zt.clone(n,i),i.nearValue*=t,i.farValue*=t,i):(i.nearValue=t,i.farValue=t,i):(i.nearValue=1,i.farValue=1,i)}function dIe(e,t,n){return e&&(n.baseColor.alpha<1||t.nearValue<1||t.farValue<1)}function DAt(e,t){let n=e._frontFaceTranslucent,i=e._backFaceTranslucent;return n&&(t.cameraUnderground||i)}function QAt(e,t){return!t.cameraUnderground||e._frontFaceTranslucent}function UAt(e,t){return!t.cameraUnderground&&!e._frontFaceTranslucent}function kAt(e,t,n){return e._frontFaceTranslucent&&!e._backFaceTranslucent&&!n.depthTestAgainstTerrain&&t.mode!==re.SCENE2D&&t.context.depthTexture}function YAt(e){let t=0;return e._frontFaceTranslucent&&++t,e._requiresManualDepthTest&&++t,t}function OAt(e,t){e._derivedCommandsLength=z7(e,t,!1,!1,e._derivedCommandTypes),e._derivedBlendCommandsLength=z7(e,t,!0,!1,e._derivedBlendCommandTypes),e._derivedPickCommandsLength=z7(e,t,!1,!0,e._derivedPickCommandTypes);let n,i=0;for(n=0;n<e._derivedCommandsLength;++n)i|=1<<e._derivedCommandTypes[n];for(n=0;n<e._derivedBlendCommandsLength;++n)i|=1<<e._derivedBlendCommandTypes[n];for(n=0;n<e._derivedPickCommandsLength;++n)i|=1<<e._derivedPickCommandTypes[n];let o=0;for(n=0;n<VI;++n)(i&1<<n)>0&&(e._derivedCommandTypesToUpdate[o++]=n);e._derivedCommandsToUpdateLength=o;let r=i!==e._derivedCommandKey;e._derivedCommandKey=i,e._derivedCommandsDirty=r,!l(e._derivedCommandPacks)&&e._frontFaceTranslucent&&(e._derivedCommandPacks=agt())}function z7(e,t,n,i,o){let r=0,s=e._frontFaceTranslucent,a=e._backFaceTranslucent;if(!s)return r;let c=t.cameraUnderground,d=e._requiresManualDepthTest,u=i?Ja.PICK_FRONT_FACE:d?Ja.TRANSLUCENT_FRONT_FACE_MANUAL_DEPTH_TEST:Ja.TRANSLUCENT_FRONT_FACE,h=i?Ja.PICK_BACK_FACE:d?Ja.TRANSLUCENT_BACK_FACE_MANUAL_DEPTH_TEST:Ja.TRANSLUCENT_BACK_FACE;return t.mode===re.SCENE2D?(o[r++]=Ja.DEPTH_ONLY_FRONT_FACE,o[r++]=u,r):(a?(n||(o[r++]=Ja.DEPTH_ONLY_FRONT_AND_BACK_FACE),c?(o[r++]=u,o[r++]=h):(o[r++]=h,o[r++]=u)):c?(n||(o[r++]=Ja.DEPTH_ONLY_BACK_FACE),o[r++]=Ja.OPAQUE_FRONT_FACE,o[r++]=h):(n||(o[r++]=Ja.DEPTH_ONLY_FRONT_FACE),o[r++]=Ja.OPAQUE_BACK_FACE,o[r++]=u),r)}function Nm(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function uIe(e,t){return e.indexOf(t)>-1}function HAt(e,t){Nm(e.defines,"TRANSLUCENT"),Nm(t.defines,"TRANSLUCENT")}function zAt(e,t){Nm(e.defines,"GROUND_ATMOSPHERE"),Nm(t.defines,"GROUND_ATMOSPHERE"),Nm(e.defines,"FOG"),Nm(t.defines,"FOG"),Nm(e.defines,"TRANSLUCENT"),Nm(t.defines,"TRANSLUCENT")}function K7(e,t){if(uIe(t.defines,"TILE_LIMIT_RECTANGLE")||uIe(t.defines,"ENABLE_CLIPPING_PLANES"))return;let n=`void main() +{ + out_FragColor = vec4(1.0); +} +`;t.sources=[n]}function J7(e,t){let n=t.sources,i=n.length;for(let r=0;r<i;++r)n[r]=Oe.replaceMain(n[r],"czm_globe_translucency_main");n.push(` + +uniform sampler2D u_classificationTexture; +void main() +{ + vec2 st = gl_FragCoord.xy / czm_viewport.zw; +#ifdef MANUAL_DEPTH_TEST + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, st)); + if (logDepthOrDepth != 0.0) + { + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + float depthEC = eyeCoordinate.z / eyeCoordinate.w; + if (v_positionEC.z < depthEC) + { + discard; + } + } +#endif + czm_globe_translucency_main(); + vec4 classificationColor = texture(u_classificationTexture, st); + if (classificationColor.a > 0.0) + { + // Reverse premultiplication process to get the correct composited result of the classification primitives + classificationColor.rgb /= classificationColor.a; + } + out_FragColor = classificationColor * vec4(classificationColor.aaa, 1.0) + out_FragColor * (1.0 - classificationColor.a); +} +`)}function yIe(e,t){J7(e,t),Nm(e.defines,"GROUND_ATMOSPHERE"),Nm(t.defines,"GROUND_ATMOSPHERE"),Nm(e.defines,"FOG"),Nm(t.defines,"FOG")}function KAt(e,t){J7(e,t),e.defines.push("GENERATE_POSITION"),t.defines.push("MANUAL_DEPTH_TEST")}function JAt(e,t){yIe(e,t),e.defines.push("GENERATE_POSITION"),t.defines.push("MANUAL_DEPTH_TEST")}function mIe(e,t){let n=`uniform sampler2D u_classificationTexture; +void main() +{ + vec2 st = gl_FragCoord.xy / czm_viewport.zw; + vec4 pickColor = texture(u_classificationTexture, st); + if (pickColor == vec4(0.0)) + { + discard; + } + out_FragColor = pickColor; +} +`;t.sources=[n]}function jAt(e,t,n,i,o,r){if(!l(o))return t;if(!i&&l(n))return n;let s=e.shaderCache.getDerivedShaderProgram(t,r);if(!l(s)){let a=t._attributeLocations,c=t.vertexShaderSource.clone(),d=t.fragmentShaderSource.clone();c.defines=l(c.defines)?c.defines.slice(0):[],d.defines=l(d.defines)?d.defines.slice(0):[],o(c,d),s=e.shaderCache.createDerivedShaderProgram(t,r,{vertexShaderSource:c,fragmentShaderSource:d,attributeLocations:a})}return s}function qAt(e){e.cull.face=Xi.BACK,e.cull.enabled=!0}function $At(e){e.cull.face=Xi.FRONT,e.cull.enabled=!0}function egt(e){e.cull.face=Xi.BACK,e.cull.enabled=!0,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function tgt(e){e.cull.face=Xi.FRONT,e.cull.enabled=!0,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function ngt(e){e.cull.enabled=!1,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function hIe(e){e.cull.face=Xi.BACK,e.cull.enabled=!0,e.depthMask=!1,e.blending=bn.ALPHA_BLEND}function fIe(e){e.cull.face=Xi.FRONT,e.cull.enabled=!0,e.depthMask=!1,e.blending=bn.ALPHA_BLEND}function igt(e){e.cull.face=Xi.BACK,e.cull.enabled=!0,e.blending.enabled=!1}function ogt(e){e.cull.face=Xi.FRONT,e.cull.enabled=!0,e.blending.enabled=!1}function rgt(e,t,n,i,o){if(!l(i))return e;if(!n&&l(t))return t;let r=o[e.id];if(!l(r)){let s=Qe.getState(e);i(s),r=Qe.fromCache(s),o[e.id]=r}return r}function dL(e){return{u_classificationTexture:function(){return e._globeTranslucencyFramebuffer.classificationTexture}}}function sgt(e,t,n,i,o){return l(o)?!i&&l(n)?n:Lt(t,o(e),!1):t}function hf(e){this.pass=e.pass,this.pickOnly=e.pickOnly,this.getShaderProgramFunction=e.getShaderProgramFunction,this.getRenderStateFunction=e.getRenderStateFunction,this.getUniformMapFunction=e.getUniformMapFunction,this.renderStateCache={}}function agt(){return[new hf({pass:Ge.GLOBE,pickOnly:!1,getShaderProgramFunction:HAt,getRenderStateFunction:qAt,getUniformMapFunction:void 0}),new hf({pass:Ge.GLOBE,pickOnly:!1,getShaderProgramFunction:zAt,getRenderStateFunction:$At,getUniformMapFunction:void 0}),new hf({pass:Ge.GLOBE,pickOnly:!1,getShaderProgramFunction:K7,getRenderStateFunction:egt,getUniformMapFunction:void 0}),new hf({pass:Ge.GLOBE,pickOnly:!1,getShaderProgramFunction:K7,getRenderStateFunction:tgt,getUniformMapFunction:void 0}),new hf({pass:Ge.GLOBE,pickOnly:!1,getShaderProgramFunction:K7,getRenderStateFunction:ngt,getUniformMapFunction:void 0}),new hf({pass:Ge.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:J7,getRenderStateFunction:hIe,getUniformMapFunction:dL}),new hf({pass:Ge.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:yIe,getRenderStateFunction:fIe,getUniformMapFunction:dL}),new hf({pass:Ge.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:KAt,getRenderStateFunction:hIe,getUniformMapFunction:dL}),new hf({pass:Ge.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:JAt,getRenderStateFunction:fIe,getUniformMapFunction:dL}),new hf({pass:Ge.TRANSLUCENT,pickOnly:!0,getShaderProgramFunction:mIe,getRenderStateFunction:igt,getUniformMapFunction:dL}),new hf({pass:Ge.TRANSLUCENT,pickOnly:!0,getShaderProgramFunction:mIe,getRenderStateFunction:ogt,getUniformMapFunction:dL})]}var pIe=new Array(VI),AIe=new Array(VI);GI.prototype.updateDerivedCommands=function(e,t){let n=this._derivedCommandTypesToUpdate,i=this._derivedCommandsToUpdateLength;if(i!==0){for(let o=0;o<i;++o)AIe[o]=this._derivedCommandPacks[n[o]],pIe[o]=bIe[n[o]];cgt(this,e,i,n,pIe,AIe,t)}};function cgt(e,t,n,i,o,r,s){let a=t.derivedCommands.globeTranslucency,c=e._derivedCommandsDirty;if(t.dirty||!l(a)||c){t.dirty=!1,l(a)||(a={},t.derivedCommands.globeTranslucency=a);let d=s.frameNumber,u=a.uniformMapDirtyFrame??0,h=a.shaderProgramDirtyFrame??0,p=a.renderStateDirtyFrame??0,g=a.uniformMap!==t.uniformMap,f=a.shaderProgramId!==t.shaderProgram.id,b=a.renderStateId!==t.renderState.id;g&&(a.uniformMapDirtyFrame=d),f&&(a.shaderProgramDirtyFrame=d),b&&(a.renderStateDirtyFrame=d),a.uniformMap=t.uniformMap,a.shaderProgramId=t.shaderProgram.id,a.renderStateId=t.renderState.id;for(let x=0;x<n;++x){let I=r[x],_=i[x],E=o[x],S=a[E],R,G,B;l(S)?(R=S.uniformMap,G=S.shaderProgram,B=S.renderState):(R=void 0,G=void 0,B=void 0),S=ot.shallowClone(t,S),a[E]=S;let w=S.derivedCommands.uniformMapDirtyFrame??0,F=S.derivedCommands.shaderProgramDirtyFrame??0,P=S.derivedCommands.renderStateDirtyFrame??0,A=g||w<u,T=f||F<h,L=b||P<p;A&&(S.derivedCommands.uniformMapDirtyFrame=d),T&&(S.derivedCommands.shaderProgramDirtyFrame=d),L&&(S.derivedCommands.renderStateDirtyFrame=d),S.derivedCommands.type=_,S.pass=I.pass,S.pickOnly=I.pickOnly,S.uniformMap=sgt(e,t.uniformMap,R,A,I.getUniformMapFunction),S.shaderProgram=jAt(s.context,t.shaderProgram,G,T,I.getShaderProgramFunction,E),S.renderState=rgt(t.renderState,B,L,I.getRenderStateFunction,I.renderStateCache)}}}GI.prototype.pushDerivedCommands=function(e,t,n){let i=n.passes.pick||n.passes.pickVoxel;if(i&&t)return;let o=this._derivedCommandTypes,r=this._derivedCommandsLength;if(i?(o=this._derivedPickCommandTypes,r=this._derivedPickCommandsLength):t&&(o=this._derivedBlendCommandTypes,r=this._derivedBlendCommandsLength),r===0){n.commandList.push(e);return}let s=e.derivedCommands.globeTranslucency;for(let a=0;a<r;++a){let c=bIe[o[a]];n.commandList.push(s[c])}};function CIe(e,t,n,i,o,r){for(let s=0;s<t;++s){let a=e[s],c=a.derivedCommands.type;(!l(r)||r.indexOf(c)>-1)&&n(a,i,o)}}function gIe(e,t,n,i,o){for(let r=0;r<t;++r)n(e[r],i,o)}var lgt=[Ja.OPAQUE_FRONT_FACE,Ja.OPAQUE_BACK_FACE],dgt=[Ja.DEPTH_ONLY_FRONT_FACE,Ja.DEPTH_ONLY_BACK_FACE,Ja.DEPTH_ONLY_FRONT_AND_BACK_FACE];GI.prototype.executeGlobeCommands=function(e,t,n,i,o){let r=i.context,s=e.commands[Ge.GLOBE],a=e.indices[Ge.GLOBE];a!==0&&(this._globeTranslucencyFramebuffer=n,n.clearClassification(r,o),CIe(s,a,t,i,o,lgt))};GI.prototype.executeGlobeClassificationCommands=function(e,t,n,i,o){let{context:r}=i,{uniformState:s}=r,a=e.commands[Ge.GLOBE],c=e.indices[Ge.GLOBE],d=e.commands[Ge.TERRAIN_CLASSIFICATION],u=e.indices[Ge.TERRAIN_CLASSIFICATION];if(c===0||u===0)return;let h=this._frontFaceTranslucent,p=this._backFaceTranslucent;if((!h||!p)&&gIe(d,u,t,i,o),!h&&!p)return;this._globeTranslucencyFramebuffer=n;let g=s.globeDepthTexture,f=o.framebuffer;if(o.framebuffer=n.classificationFramebuffer,CIe(a,c,t,i,o,dgt),r.depthTexture){let b=n.packDepth(r,o);s.globeDepthTexture=b}gIe(d,u,t,i,o),s.globeDepthTexture=g,o.framebuffer=f};var mM=GI;var g9i=y(C(),1);var qNi=y(C(),1),Ed=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + out_FragColor = texture(colorTexture, v_textureCoordinates); +} +`;function Gp(){this._numSamples=1,this.previousFramebuffer=void 0,this._previousFramebuffer=void 0,this._depthStencilTexture=void 0,this._depthStencilRenderbuffer=void 0,this._fbo=new Gi({depthStencil:!0,createDepthAttachments:!1}),this._fboClassified=new Gi({depthStencil:!0,createDepthAttachments:!1}),this._rsUnclassified=void 0,this._rsClassified=void 0,this._unclassifiedCommand=void 0,this._classifiedCommand=void 0,this._translucentCommand=void 0,this._clearColorCommand=new xi({color:new U(0,0,0,0),owner:this}),this._clearCommand=new xi({color:new U(0,0,0,0),depth:1,stencil:0});let e=this;this._uniformMap={colorTexture:function(){return e._fbo.getColorTexture()},depthTexture:function(){return e._depthStencilTexture},classifiedTexture:function(){return e._fboClassified.getColorTexture()}}}Object.defineProperties(Gp.prototype,{unclassifiedCommand:{get:function(){return this._unclassifiedCommand}}});Gp.isTranslucencySupported=function(e){return e.depthTexture&&e.fragmentDepth};var ugt={depthMask:!1,stencilTest:{enabled:!0,frontFunction:ei.EQUAL,frontOperation:{fail:Ct.KEEP,zFail:Ct.KEEP,zPass:Ct.KEEP},backFunction:ei.NEVER,reference:0,mask:jt.CLASSIFICATION_MASK},blending:bn.ALPHA_BLEND},mgt={depthMask:!1,stencilTest:{enabled:!0,frontFunction:ei.NOT_EQUAL,frontOperation:{fail:Ct.KEEP,zFail:Ct.KEEP,zPass:Ct.KEEP},backFunction:ei.NEVER,reference:0,mask:jt.CLASSIFICATION_MASK},blending:bn.ALPHA_BLEND},hgt={depthMask:!0,depthTest:{enabled:!0},stencilTest:jt.setCesium3DTileBit(),stencilMask:jt.CESIUM_3D_TILE_MASK,blending:bn.ALPHA_BLEND},fgt=`uniform sampler2D colorTexture; +uniform sampler2D depthTexture; +uniform sampler2D classifiedTexture; +in vec2 v_textureCoordinates; +void main() +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + if (color.a == 0.0) + { + discard; + } + bool isClassified = all(equal(texture(classifiedTexture, v_textureCoordinates), vec4(0.0))); +#ifdef UNCLASSIFIED + vec4 highlightColor = czm_invertClassificationColor; + if (isClassified) + { + discard; + } +#else + vec4 highlightColor = vec4(1.0); + if (!isClassified) + { + discard; + } +#endif + out_FragColor = color * highlightColor; + gl_FragDepth = texture(depthTexture, v_textureCoordinates).r; +} +`,pgt=`uniform sampler2D colorTexture; +in vec2 v_textureCoordinates; +void main() +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + if (color.a == 0.0) + { + discard; + } +#ifdef UNCLASSIFIED + out_FragColor = color * czm_invertClassificationColor; +#else + out_FragColor = color; +#endif +} +`;Gp.prototype.update=function(e,t,n){let i=this._fbo.getColorTexture(),o=this.previousFramebuffer!==this._previousFramebuffer;this._previousFramebuffer=this.previousFramebuffer;let r=this._numSamples!==t,s=e.drawingBufferWidth,a=e.drawingBufferHeight,c=!l(i)||i.width!==s||i.height!==a;if((c||o||r)&&(this._numSamples=t,this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy(),l(this._previousFramebuffer)||(this._depthStencilTexture=new Wt({context:e,width:s,height:a,pixelFormat:tt.DEPTH_STENCIL,pixelDatatype:Ye.UNSIGNED_INT_24_8}),t>1&&(this._depthStencilRenderbuffer=new Hd({context:e,width:s,height:a,format:Tl.DEPTH24_STENCIL8,numSamples:t})))),!l(this._fbo.framebuffer)||c||o||r){this._fbo.destroy(),this._fboClassified.destroy();let d,u;l(this._previousFramebuffer)?(d=n.getDepthStencilTexture(),u=n.getDepthStencilRenderbuffer()):(d=this._depthStencilTexture,u=this._depthStencilRenderbuffer),this._fbo.setDepthStencilTexture(d),l(u)&&this._fbo.setDepthStencilRenderbuffer(u),this._fbo.update(e,s,a,t),l(this._previousFramebuffer)||(this._fboClassified.setDepthStencilTexture(d),this._fboClassified.update(e,s,a))}if(l(this._rsUnclassified)||(this._rsUnclassified=Qe.fromCache(ugt),this._rsClassified=Qe.fromCache(mgt),this._rsDefault=Qe.fromCache(hgt)),!l(this._unclassifiedCommand)||o||r){l(this._unclassifiedCommand)&&(this._unclassifiedCommand.shaderProgram=this._unclassifiedCommand.shaderProgram&&this._unclassifiedCommand.shaderProgram.destroy(),this._classifiedCommand.shaderProgram=this._classifiedCommand.shaderProgram&&this._classifiedCommand.shaderProgram.destroy());let d=l(this._previousFramebuffer)?pgt:fgt,u=new Oe({defines:["UNCLASSIFIED"],sources:[d]}),h=new Oe({sources:[d]});this._unclassifiedCommand=e.createViewportQuadCommand(u,{renderState:l(this._previousFramebuffer)?this._rsUnclassified:this._rsDefault,uniformMap:this._uniformMap,owner:this}),this._classifiedCommand=e.createViewportQuadCommand(h,{renderState:l(this._previousFramebuffer)?this._rsClassified:this._rsDefault,uniformMap:this._uniformMap,owner:this}),l(this._translucentCommand)&&(this._translucentCommand.shaderProgram=this._translucentCommand.shaderProgram&&this._translucentCommand.shaderProgram.destroy()),l(this._previousFramebuffer)||(this._translucentCommand=e.createViewportQuadCommand(Ed,{renderState:this._rsUnclassified,uniformMap:this._uniformMap,owner:this}))}};Gp.prototype.prepareTextures=function(e,t){this._fbo._numSamples>1&&this._fbo.prepareTextures(e,t)};Gp.prototype.clear=function(e,t){l(this._previousFramebuffer)?this._fbo.clear(e,this._clearColorCommand,t):(this._fbo.clear(e,this._clearCommand,t),this._fboClassified.clear(e,this._clearCommand,t))};Gp.prototype.executeClassified=function(e,t){if(!l(this._previousFramebuffer)){let n=t.framebuffer;this.prepareTextures(e,!0),t.framebuffer=this._fboClassified.framebuffer,this._translucentCommand.execute(e,t),t.framebuffer=n}this._classifiedCommand.execute(e,t)};Gp.prototype.executeUnclassified=function(e,t){this._unclassifiedCommand.execute(e,t)};Gp.prototype.isDestroyed=function(){return!1};Gp.prototype.destroy=function(){return this._fbo.destroy(),this._fboClassified.destroy(),this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy(),l(this._unclassifiedCommand)&&(this._unclassifiedCommand.shaderProgram=this._unclassifiedCommand.shaderProgram&&this._unclassifiedCommand.shaderProgram.destroy(),this._classifiedCommand.shaderProgram=this._classifiedCommand.shaderProgram&&this._classifiedCommand.shaderProgram.destroy()),me(this)};var uL=Gp;var I9i=y(C(),1);function tY(e){this._total=e,this.usedThisFrame=0,this.stolenFromMeThisFrame=0,this.starvedThisFrame=!1,this.starvedLastFrame=!1}Object.defineProperties(tY.prototype,{total:{get:function(){return this._total}}});function dy(e){let t=new Array(uc.NUMBER_OF_JOB_TYPES);t[uc.TEXTURE]=new tY(l(e)?e[uc.TEXTURE]:10),t[uc.PROGRAM]=new tY(l(e)?e[uc.PROGRAM]:10),t[uc.BUFFER]=new tY(l(e)?e[uc.BUFFER]:30);let n=t.length,i,o=0;for(i=0;i<n;++i)o+=t[i].total;let r=new Array(n);for(i=0;i<n;++i)r[i]=!1;this._totalBudget=o,this._totalUsedThisFrame=0,this._budgets=t,this._executedThisFrame=r}dy.getTimestamp=Fi;Object.defineProperties(dy.prototype,{totalBudget:{get:function(){return this._totalBudget}}});dy.prototype.disableThisFrame=function(){this._totalUsedThisFrame=this._totalBudget};dy.prototype.resetBudgets=function(){let e=this._budgets,t=e.length;for(let n=0;n<t;++n){let i=e[n];i.starvedLastFrame=i.starvedThisFrame,i.starvedThisFrame=!1,i.usedThisFrame=0,i.stolenFromMeThisFrame=0}this._totalUsedThisFrame=0};dy.prototype.execute=function(e,t){let n=this._budgets,i=n[t],o=this._executedThisFrame[t];if(this._totalUsedThisFrame>=this._totalBudget&&o)return i.starvedThisFrame=!0,!1;let r;if(i.usedThisFrame+i.stolenFromMeThisFrame>=i.total){let c=n.length,d;for(d=0;d<c&&(r=n[d],!(r.usedThisFrame+r.stolenFromMeThisFrame<r.total&&!r.starvedLastFrame));++d);if(d===c&&o)return!1;o&&(i.starvedThisFrame=!0)}let s=dy.getTimestamp();e.execute();let a=dy.getTimestamp()-s;return this._totalUsedThisFrame+=a,r?r.stolenFromMeThisFrame+=a:i.usedThisFrame+=a,this._executedThisFrame[t]=!0,!0};var hM=dy;var R9i=y(C(),1);function nY(e){e=e??Y.EMPTY_OBJECT;let t=Dn(e.container);this._container=t;let n=document.createElement("div");n.className="cesium-performanceDisplay";let i=document.createElement("div");i.className="cesium-performanceDisplay-fps",this._fpsText=document.createTextNode(""),i.appendChild(this._fpsText);let o=document.createElement("div");o.className="cesium-performanceDisplay-ms",this._msText=document.createTextNode(""),o.appendChild(this._msText),n.appendChild(o),n.appendChild(i),this._container.appendChild(n),this._lastFpsSampleTime=Fi(),this._lastMsSampleTime=Fi(),this._fpsFrameCount=0,this._msFrameCount=0,this._throttled=!1;let r=document.createElement("div");r.className="cesium-performanceDisplay-throttled",this._throttledText=document.createTextNode(""),r.appendChild(this._throttledText),n.appendChild(r)}Object.defineProperties(nY.prototype,{throttled:{get:function(){return this._throttled},set:function(e){this._throttled!==e&&(e?this._throttledText.nodeValue="(throttled)":this._throttledText.nodeValue="",this._throttled=e)}}});nY.prototype.update=function(e){let t=Fi(),n=e??!0;this._fpsFrameCount++;let i=t-this._lastFpsSampleTime;if(i>1e3){let r="N/A";n&&(r=this._fpsFrameCount*1e3/i|0),this._fpsText.nodeValue=`${r} FPS`,this._lastFpsSampleTime=t,this._fpsFrameCount=0}this._msFrameCount++;let o=t-this._lastMsSampleTime;if(o>200){let r="N/A";n&&(r=(o/this._msFrameCount).toFixed(2)),this._msText.nodeValue=`${r} MS`,this._lastMsSampleTime=t,this._msFrameCount=0}};nY.prototype.destroy=function(){return me(this)};var kg=nY;var RUi=y(C(),1);var D9i=y(C(),1);var ja={};ja.decodeRawMetadataValue=function(e,t,n){switch(e){case Ut.INT8:return t.getInt8(n);case Ut.UINT8:return t.getUint8(n);case Ut.INT16:return t.getInt16(n,!0);case Ut.UINT16:return t.getUint16(n,!0);case Ut.INT32:return t.getInt32(n,!0);case Ut.UINT32:return t.getUint32(n,!0);case Ut.INT64:return t.getBigInt64(n,!0);case Ut.UINT64:return t.getBigUint64(n,!0);case Ut.FLOAT32:return t.getFloat32(n,!0);case Ut.FLOAT64:return t.getFloat64(n,!0)}throw new de(`Invalid component type: ${e}`)};ja.decodeRawMetadataValueComponent=function(e,t,n){let i=e.componentType,o=ja.decodeRawMetadataValue(i,t,n);return e.normalized?Ut.normalize(o,i):o};ja.decodeRawMetadataValueElement=function(e,t,n){let i=e.componentType,o=Ut.getSizeInBytes(i),r=e.type,s=bt.getComponentCount(r),a=o*s;if(s>1){let u=Array(s);for(let h=0;h<s;h++){let p=n*a+h*o,g=ja.decodeRawMetadataValueComponent(e,t,p);u[h]=g}return u}let c=n*a;return ja.decodeRawMetadataValueComponent(e,t,c)};ja.decodeRawMetadataValues=function(e,t){let n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(e.isArray){let o=e.arrayLength,r=Array(o);for(let s=0;s<o;s++){let a=ja.decodeRawMetadataValueElement(e,n,s);r[s]=a}return r}return ja.decodeRawMetadataValueElement(e,n,0)};ja.convertToObjectType=function(e,t){if(!l(t)||e===bt.SCALAR||e===bt.STRING||e===bt.BOOLEAN||e===bt.ENUM)return t;let n=t.map(i=>Number(i));switch(e){case bt.VEC2:return D.unpack(n,0,new D);case bt.VEC3:return m.unpack(n,0,new m);case bt.VEC4:return ce.unpack(n,0,new ce);case bt.MAT2:return Qi.unpack(n,0,new Qi);case bt.MAT3:return $.unpack(n,0,new $);case bt.MAT4:return X.unpack(n,0,new X)}throw new de(`Invalid metadata object type: ${e}`)};ja.convertFromObjectType=function(e,t){if(!l(t)||e===bt.SCALAR||e===bt.STRING||e===bt.BOOLEAN||e===bt.ENUM)return t;switch(e){case bt.VEC2:return D.pack(t,Array(2));case bt.VEC3:return m.pack(t,Array(3));case bt.VEC4:return ce.pack(t,Array(4));case bt.MAT2:return Qi.pack(t,Array(4));case bt.MAT3:return $.pack(t,Array(9));case bt.MAT4:return X.pack(t,Array(16))}throw new de(`Invalid metadata object type: ${e}`)};ja.decodeMetadataValues=function(e,t,n){let i=ja.decodeRawMetadataValues(e,n);if(t.hasValueTransform){let r=ja.convertFromObjectType(e.type,t.offset),s=ja.convertFromObjectType(e.type,t.scale);i=Qf.valueTransformInPlace(i,r,s,Ut.applyValueTransform)}if(e.isArray){let r=e.arrayLength,s=Array(r);for(let a=0;a<r;a++){let c=i[a],d=ja.convertToObjectType(e.type,c);s[a]=d}return s}return ja.convertToObjectType(e.type,i)};var fM=Object.freeze(ja);var z9i=y(C(),1);function ZI(){this._framebuffer=new Gi,this._textureToCopy=void 0,this._copyDepthCommand=void 0}Object.defineProperties(ZI.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}}});function Agt(e,t,n){let{width:i,height:o}=n;e._framebuffer.update(t,i,o)}function ggt(e,t,n){l(e._copyDepthCommand)||(e._copyDepthCommand=t.createViewportQuadCommand(`uniform highp sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 globeDepthPacked = texture(czm_globeDepthTexture, v_textureCoordinates); + float globeDepth = czm_unpackDepth(globeDepthPacked); + float depth = texture(colorTexture, v_textureCoordinates).r; + out_FragColor = czm_branchFreeTernary(globeDepth <= 0.0 || globeDepth >= 1.0 || depth < globeDepth && depth > 0.0 && depth < 1.0, + czm_packDepth(depth), globeDepthPacked); +} +`,{renderState:Qe.fromCache(),uniformMap:{colorTexture:function(){return e._textureToCopy}},owner:e})),e._textureToCopy=n,e._copyDepthCommand.framebuffer=e.framebuffer}ZI.prototype.update=function(e,t){Agt(this,e,t),ggt(this,e,t)};var bgt=new ce,ygt=new ce(1,1/255,1/65025,1/16581375);ZI.prototype.getDepth=function(e,t,n){if(!l(this.framebuffer))return;let i=e.readPixels({x:t,y:n,width:1,height:1,framebuffer:this.framebuffer}),o=ce.unpack(i,0,bgt);return ce.divideByScalar(o,255,o),ce.dot(o,ygt)};ZI.prototype.executeCopyDepth=function(e,t){this._copyDepthCommand.execute(e,t)};ZI.prototype.isDestroyed=function(){return!1};ZI.prototype.destroy=function(){return this._framebuffer.destroy(),l(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=l(this._copyDepthCommand.shaderProgram)&&this._copyDepthCommand.shaderProgram.destroy()),me(this)};var pM=ZI;var nUi=y(C(),1);var j9i=y(C(),1);function Cgt(e,t){this.near=e??0,this.far=t??0;let n=Ge.NUMBER_OF_PASSES,i=new Array(n),o=new Array(n);for(let r=0;r<n;++r)i[r]=[],o[r]=0;this.commands=i,this.indices=o}var AM=Cgt;var pDi=y(C(),1);var $9i=y(C(),1),uy=`uniform highp sampler2D u_depthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + out_FragColor = czm_packDepth(texture(u_depthTexture, v_textureCoordinates).r); +} +`;function Zp(){this._picking=!1,this._numSamples=1,this._tempCopyDepthTexture=void 0,this._pickColorFramebuffer=new Gi({depthStencil:!0,supportsDepthTexture:!0}),this._outputFramebuffer=new Gi({depthStencil:!0,supportsDepthTexture:!0}),this._copyDepthFramebuffer=new Gi,this._tempCopyDepthFramebuffer=new Gi,this._updateDepthFramebuffer=new Gi({createColorAttachments:!1,createDepthAttachments:!1,depthStencil:!0}),this._clearGlobeColorCommand=void 0,this._copyColorCommand=void 0,this._copyDepthCommand=void 0,this._tempCopyDepthCommand=void 0,this._updateDepthCommand=void 0,this._viewport=new Ke,this._rs=void 0,this._rsBlend=void 0,this._rsUpdate=void 0,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHdr=void 0,this._clearGlobeDepth=void 0}Object.defineProperties(Zp.prototype,{colorFramebufferManager:{get:function(){return this._picking?this._pickColorFramebuffer:this._outputFramebuffer}},framebuffer:{get:function(){return this.colorFramebufferManager.framebuffer}},depthStencilTexture:{get:function(){return this.colorFramebufferManager.getDepthStencilTexture()}},picking:{get:function(){return this._picking},set:function(e){this._picking=e}}});function xIe(e,t,n,i,o){let r=e._viewport;r.width=n,r.height=i;let s=!Ke.equals(r,o.viewport),a=s!==e._useScissorTest;e._useScissorTest=s,Ke.equals(e._scissorRectangle,o.viewport)||(e._scissorRectangle=Ke.clone(o.viewport,e._scissorRectangle),a=!0),(!l(e._rs)||!Ke.equals(r,e._rs.viewport)||a)&&(e._rs=Qe.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}}),e._rsBlend=Qe.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},blending:bn.ALPHA_BLEND}),e._rsUpdate=Qe.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},stencilTest:{enabled:!0,frontFunction:ei.EQUAL,frontOperation:{fail:Ct.KEEP,zFail:Ct.KEEP,zPass:Ct.KEEP},backFunction:ei.NEVER,reference:jt.CESIUM_3D_TILE_MASK,mask:jt.CESIUM_3D_TILE_MASK}})),l(e._copyDepthCommand)||(e._copyDepthCommand=t.createViewportQuadCommand(uy,{uniformMap:{u_depthTexture:function(){return e.colorFramebufferManager.getDepthStencilTexture()}},owner:e})),e._copyDepthCommand.framebuffer=e._copyDepthFramebuffer.framebuffer,e._copyDepthCommand.renderState=e._rs,l(e._copyColorCommand)||(e._copyColorCommand=t.createViewportQuadCommand(Ed,{uniformMap:{colorTexture:function(){return e.colorFramebufferManager.getColorTexture()}},owner:e})),e._copyColorCommand.renderState=e._rs,l(e._tempCopyDepthCommand)||(e._tempCopyDepthCommand=t.createViewportQuadCommand(uy,{uniformMap:{u_depthTexture:function(){return e._tempCopyDepthTexture}},owner:e})),e._tempCopyDepthCommand.framebuffer=e._tempCopyDepthFramebuffer.framebuffer,e._tempCopyDepthCommand.renderState=e._rs,l(e._updateDepthCommand)||(e._updateDepthCommand=t.createViewportQuadCommand(Ed,{uniformMap:{colorTexture:function(){return e._tempCopyDepthFramebuffer.getColorTexture()}},owner:e})),e._updateDepthCommand.framebuffer=e._updateDepthFramebuffer.framebuffer,e._updateDepthCommand.renderState=e._rsUpdate,l(e._clearGlobeColorCommand)||(e._clearGlobeColorCommand=new xi({color:new U(0,0,0,0),stencil:0,owner:e})),e._clearGlobeColorCommand.framebuffer=e.framebuffer}Zp.prototype.update=function(e,t,n,i,o,r){let{width:s,height:a}=n,c=o?e.halfFloatingPointTexture?Ye.HALF_FLOAT:Ye.FLOAT:Ye.UNSIGNED_BYTE;this._numSamples=i,this.picking?this._pickColorFramebuffer.update(e,s,a):this._outputFramebuffer.update(e,s,a,i,c),this._copyDepthFramebuffer.update(e,s,a),xIe(this,e,s,a,t),e.uniformState.globeDepthTexture=void 0,this._clearGlobeDepth=r};Zp.prototype.prepareColorTextures=function(e,t){!this.picking&&this._numSamples>1&&this._outputFramebuffer.prepareTextures(e,t)};Zp.prototype.executeCopyDepth=function(e,t){l(this._copyDepthCommand)&&(this.prepareColorTextures(e),this._copyDepthCommand.execute(e,t),e.uniformState.globeDepthTexture=this._copyDepthFramebuffer.getColorTexture())};Zp.prototype.executeUpdateDepth=function(e,t,n){let i=l(n)?n:t.framebuffer.depthStencilTexture;if(!this._clearGlobeDepth&&i===this.colorFramebufferManager.getDepthStencilTexture()){l(this._copyDepthCommand)&&this._copyDepthCommand.execute(e,t);return}if(!l(this._updateDepthCommand))return;let o=this._updateDepthFramebuffer;if(!l(o.framebuffer)||o.getDepthStencilTexture()!==i||o.getColorTexture()!==this._copyDepthFramebuffer.getColorTexture()){let r=this._copyDepthFramebuffer.getColorTexture(),{width:s,height:a}=r;this._tempCopyDepthFramebuffer.destroy(),this._tempCopyDepthFramebuffer.update(e,s,a),o.setColorTexture(r,0),o.setDepthStencilTexture(i),o.update(e,s,a),xIe(this,e,s,a,t)}this._tempCopyDepthTexture=i,this._tempCopyDepthCommand.execute(e,t),this._updateDepthCommand.execute(e,t)};Zp.prototype.executeCopyColor=function(e,t){l(this._copyColorCommand)&&this._copyColorCommand.execute(e,t)};Zp.prototype.clear=function(e,t,n){let i=this._clearGlobeColorCommand;l(i)&&(U.clone(n,i.color),this.colorFramebufferManager.clear(e,i,t))};Zp.prototype.isDestroyed=function(){return!1};Zp.prototype.destroy=function(){return this._pickColorFramebuffer.destroy(),this._outputFramebuffer.destroy(),this._copyDepthFramebuffer.destroy(),this._tempCopyDepthFramebuffer.destroy(),this._updateDepthFramebuffer.destroy(),l(this._copyColorCommand)&&(this._copyColorCommand.shaderProgram=this._copyColorCommand.shaderProgram.destroy()),l(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=this._copyDepthCommand.shaderProgram.destroy()),l(this._tempCopyDepthCommand)&&(this._tempCopyDepthCommand.shaderProgram=this._tempCopyDepthCommand.shaderProgram.destroy()),l(this._updateDepthCommand)&&(this._updateDepthCommand.shaderProgram=this._updateDepthCommand.shaderProgram.destroy()),me(this)};var gM=Zp;var SDi=y(C(),1);function BI(){this._framebuffer=new Gi({depthStencil:!0,supportsDepthTexture:!0}),this._packedDepthFramebuffer=new Gi,this._renderState=void 0,this._packedDepthCommand=void 0,this._clearCommand=void 0,this._viewport=new Ke,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHdr=void 0}Object.defineProperties(BI.prototype,{classificationTexture:{get:function(){return this._framebuffer.getColorTexture()}},classificationFramebuffer:{get:function(){return this._framebuffer.framebuffer}},packedDepthFramebuffer:{get:function(){return this._packedDepthFramebuffer.framebuffer}},depthStencilTexture:{get:function(){return this._framebuffer.getDepthStencilTexture()}},depthStencilRenderbuffer:{get:function(){return this._framebuffer.getDepthStencilRenderbuffer()}},packedDepthTexture:{get:function(){return this._packedDepthFramebuffer.getColorTexture()}}});function xgt(e){e._framebuffer.destroy(),e._packedDepthFramebuffer.destroy()}function Igt(e,t,n,i,o){let r=o?t.halfFloatingPointTexture?Ye.HALF_FLOAT:Ye.FLOAT:Ye.UNSIGNED_BYTE;e._framebuffer.update(t,n,i,1,r),e._packedDepthFramebuffer.update(t,n,i)}function _gt(e,t,n,i,o){e._viewport.width=n,e._viewport.height=i;let r=!Ke.equals(e._viewport,o.viewport),s=r!==e._useScissorTest;e._useScissorTest=r,Ke.equals(e._scissorRectangle,o.viewport)||(e._scissorRectangle=Ke.clone(o.viewport,e._scissorRectangle),s=!0),(!l(e._renderState)||!Ke.equals(e._viewport,e._renderState.viewport)||s)&&(e._renderState=Qe.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}})),l(e._packedDepthCommand)||(e._packedDepthCommand=t.createViewportQuadCommand(uy,{uniformMap:{u_depthTexture:function(){return e.depthStencilTexture}},owner:e})),l(e._clearCommand)||(e._clearCommand=new xi({color:new U(0,0,0,0),depth:1,stencil:0,owner:e})),e._packedDepthCommand.framebuffer=e._packedDepthFramebuffer.framebuffer,e._packedDepthCommand.renderState=e._renderState,e._clearCommand.framebuffer=e.classificationFramebuffer,e._clearCommand.renderState=e._renderState}BI.prototype.updateAndClear=function(e,t,n,i){let o=t.width,r=t.height;Igt(this,n,o,r,e),_gt(this,n,o,r,i),this._useHdr=e};BI.prototype.clearClassification=function(e,t){this._clearCommand.execute(e,t)};BI.prototype.packDepth=function(e,t){return this._packedDepthCommand.execute(e,t),this.packedDepthTexture};BI.prototype.isDestroyed=function(){return!1};BI.prototype.destroy=function(){return xgt(this),me(this)};var bM=BI;var YDi=y(C(),1);function Yg(e){this._numSamples=1,this._translucentMultipassSupport=!1,this._translucentMRTSupport=!1;let t=e.colorBufferFloat&&e.depthTexture&&e.floatBlend;this._translucentMRTSupport=e.drawBuffers&&t,this._translucentMultipassSupport=!this._translucentMRTSupport&&t,this._opaqueFBO=void 0,this._opaqueTexture=void 0,this._depthStencilTexture=void 0,this._accumulationTexture=void 0,this._translucentFBO=new Gi({colorAttachmentsLength:this._translucentMRTSupport?2:1,createColorAttachments:!1,createDepthAttachments:!1,depth:!0}),this._alphaFBO=new Gi({createColorAttachments:!1,createDepthAttachments:!1,depth:!0}),this._adjustTranslucentFBO=new Gi({colorAttachmentsLength:this._translucentMRTSupport?2:1,createColorAttachments:!1}),this._adjustAlphaFBO=new Gi({createColorAttachments:!1}),this._opaqueClearCommand=new xi({color:new U(0,0,0,0),owner:this}),this._translucentMRTClearCommand=new xi({color:new U(0,0,0,1),owner:this}),this._translucentMultipassClearCommand=new xi({color:new U(0,0,0,0),owner:this}),this._alphaClearCommand=new xi({color:new U(1,1,1,1),owner:this}),this._translucentRenderStateCache={},this._alphaRenderStateCache={},this._compositeCommand=void 0,this._adjustTranslucentCommand=void 0,this._adjustAlphaCommand=void 0,this._viewport=new Ke,this._rs=void 0,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHDR=!1}function IIe(e){e._accumulationTexture=e._accumulationTexture&&!e._accumulationTexture.isDestroyed()&&e._accumulationTexture.destroy(),e._revealageTexture=e._revealageTexture&&!e._revealageTexture.isDestroyed()&&e._revealageTexture.destroy()}function j7(e){e._translucentFBO.destroy(),e._alphaFBO.destroy(),e._adjustTranslucentFBO.destroy(),e._adjustAlphaFBO.destroy()}function _Ie(e){IIe(e),j7(e)}function Egt(e,t,n,i){IIe(e),e._accumulationTexture=new Wt({context:t,width:n,height:i,pixelFormat:tt.RGBA,pixelDatatype:Ye.FLOAT}),e._revealageTexture=new Wt({context:t,pixelFormat:tt.RGBA,pixelDatatype:Ye.FLOAT,width:n,height:i,flipY:!1})}function Tgt(e,t){j7(e);let n=ne.FRAMEBUFFER_COMPLETE,i=!0,{width:o,height:r}=e._accumulationTexture;if(e._translucentMRTSupport&&(e._translucentFBO.setColorTexture(e._accumulationTexture,0),e._translucentFBO.setColorTexture(e._revealageTexture,1),e._translucentFBO.setDepthStencilTexture(e._depthStencilTexture),e._translucentFBO.update(t,o,r),e._adjustTranslucentFBO.setColorTexture(e._accumulationTexture,0),e._adjustTranslucentFBO.setColorTexture(e._revealageTexture,1),e._adjustTranslucentFBO.update(t,o,r),(e._translucentFBO.status!==n||e._adjustTranslucentFBO.status!==n)&&(j7(e),e._translucentMRTSupport=!1)),!e._translucentMRTSupport){e._translucentFBO.setColorTexture(e._accumulationTexture),e._translucentFBO.setDepthStencilTexture(e._depthStencilTexture),e._translucentFBO.update(t,o,r),e._alphaFBO.setColorTexture(e._revealageTexture),e._alphaFBO.setDepthStencilTexture(e._depthStencilTexture),e._alphaFBO.update(t,o,r),e._adjustTranslucentFBO.setColorTexture(e._accumulationTexture),e._adjustTranslucentFBO.update(t,o,r),e._adjustAlphaFBO.setColorTexture(e._revealageTexture),e._adjustAlphaFBO.update(t,o,r);let s=e._translucentFBO.status===n,a=e._alphaFBO.status===n,c=e._adjustTranslucentFBO.status===n,d=e._adjustAlphaFBO.status===n;(!s||!a||!c||!d)&&(_Ie(e),e._translucentMultipassSupport=!1,i=!1)}return i}Yg.prototype.update=function(e,t,n,i,o){if(!this.isSupported())return;this._opaqueFBO=n,this._opaqueTexture=n.getColorTexture(0),this._depthStencilTexture=n.getDepthStencilTexture();let{width:r,height:s}=this._opaqueTexture,a=this._accumulationTexture,c=!l(a)||a.width!==r||a.height!==s||i!==this._useHDR,d=this._numSamples!==o;if((c||d)&&(this._numSamples=o,Egt(this,e,r,s)),(!l(this._translucentFBO.framebuffer)||c||d)&&!Tgt(this,e))return;this._useHDR=i;let u=this,h,p;l(this._compositeCommand)||(h=new Oe({sources:[pP]}),this._translucentMRTSupport&&h.defines.push("MRT"),p={u_opaque:function(){return u._opaqueTexture},u_accumulation:function(){return u._accumulationTexture},u_revealage:function(){return u._revealageTexture}},this._compositeCommand=e.createViewportQuadCommand(h,{uniformMap:p,owner:this})),l(this._adjustTranslucentCommand)||(this._translucentMRTSupport?(h=new Oe({defines:["MRT"],sources:[KS]}),p={u_bgColor:function(){return u._translucentMRTClearCommand.color},u_depthTexture:function(){return u._depthStencilTexture}},this._adjustTranslucentCommand=e.createViewportQuadCommand(h,{uniformMap:p,owner:this})):this._translucentMultipassSupport&&(h=new Oe({sources:[KS]}),p={u_bgColor:function(){return u._translucentMultipassClearCommand.color},u_depthTexture:function(){return u._depthStencilTexture}},this._adjustTranslucentCommand=e.createViewportQuadCommand(h,{uniformMap:p,owner:this}),p={u_bgColor:function(){return u._alphaClearCommand.color},u_depthTexture:function(){return u._depthStencilTexture}},this._adjustAlphaCommand=e.createViewportQuadCommand(h,{uniformMap:p,owner:this}))),this._viewport.width=r,this._viewport.height=s;let g=!Ke.equals(this._viewport,t.viewport),f=g!==this._useScissorTest;this._useScissorTest=g,Ke.equals(this._scissorRectangle,t.viewport)||(this._scissorRectangle=Ke.clone(t.viewport,this._scissorRectangle),f=!0),(!l(this._rs)||!Ke.equals(this._viewport,this._rs.viewport)||f)&&(this._rs=Qe.fromCache({viewport:this._viewport,scissorTest:{enabled:this._useScissorTest,rectangle:this._scissorRectangle}})),l(this._compositeCommand)&&(this._compositeCommand.renderState=this._rs),this._adjustTranslucentCommand&&(this._adjustTranslucentCommand.renderState=this._rs),l(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.renderState=this._rs)};var Sgt={enabled:!0,color:new U(0,0,0,0),equationRgb:ac.ADD,equationAlpha:ac.ADD,functionSourceRgb:Po.ONE,functionDestinationRgb:Po.ONE,functionSourceAlpha:Po.ZERO,functionDestinationAlpha:Po.ONE_MINUS_SOURCE_ALPHA},Lgt={enabled:!0,color:new U(0,0,0,0),equationRgb:ac.ADD,equationAlpha:ac.ADD,functionSourceRgb:Po.ONE,functionDestinationRgb:Po.ONE,functionSourceAlpha:Po.ONE,functionDestinationAlpha:Po.ONE},Rgt={enabled:!0,color:new U(0,0,0,0),equationRgb:ac.ADD,equationAlpha:ac.ADD,functionSourceRgb:Po.ZERO,functionDestinationRgb:Po.ONE_MINUS_SOURCE_ALPHA,functionSourceAlpha:Po.ZERO,functionDestinationAlpha:Po.ONE_MINUS_SOURCE_ALPHA};function q7(e,t,n,i){let o=n[i.id];if(!l(o)){let r=Qe.getState(i);r.depthMask=!1,r.blending=t,o=Qe.fromCache(r),n[i.id]=o}return o}function Vgt(e,t,n){return q7(t,Sgt,e._translucentRenderStateCache,n)}function Ggt(e,t,n){return q7(t,Lgt,e._translucentRenderStateCache,n)}function Zgt(e,t,n){return q7(t,Rgt,e._alphaRenderStateCache,n)}var Bgt=` vec3 Ci = czm_out_FragColor.rgb * czm_out_FragColor.a; + float ai = czm_out_FragColor.a; + float wzi = czm_alphaWeight(ai); + out_FragData_0 = vec4(Ci * wzi, ai); + out_FragData_1 = vec4(ai * wzi); +`,wgt=` vec3 Ci = czm_out_FragColor.rgb * czm_out_FragColor.a; + float ai = czm_out_FragColor.a; + float wzi = czm_alphaWeight(ai); + out_FragColor = vec4(Ci, ai) * wzi; +`,Xgt=` float ai = czm_out_FragColor.a; + out_FragColor = vec4(ai); +`;function $7(e,t,n,i){let{shaderCache:o}=e,r=o.getDerivedShaderProgram(t,n);if(l(r))return r;let s=t._attributeLocations,a=t.fragmentShaderSource.clone();a.sources=a.sources.map(function(u){return Oe.replaceMain(u,"czm_translucent_main").replace(/out_FragColor/g,"czm_out_FragColor").replace(/layout\s*\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g,"").replace(/\bdiscard\b/g,"czm_discard = true").replace(/czm_phong/g,"czm_translucentPhong")}),a.sources.splice(0,0,`vec4 czm_out_FragColor; +bool czm_discard = false; +`);let c=[...i.matchAll(/out_FragData_(\d+)/g)],d="";for(let u=0;u<c.length;u++){let h=c[u];d=`layout (location = ${h[1]}) out vec4 ${h[0]}; +${d}`}return a.sources.push(d),a.sources.push(`void main() +{ + czm_translucent_main(); + if (czm_discard) + { + discard; + } +${i}} +`),o.createDerivedShaderProgram(t,n,{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:a,attributeLocations:s})}function Wgt(e,t){return $7(e,t,"translucentMRT",Bgt)}function Fgt(e,t){return $7(e,t,"translucentMultipass",wgt)}function Pgt(e,t){return $7(e,t,"alphaMultipass",Xgt)}Yg.prototype.createDerivedCommands=function(e,t,n){if(l(n)||(n={}),this._translucentMRTSupport){let a,c;return l(n.translucentCommand)&&(a=n.translucentCommand.shaderProgram,c=n.translucentCommand.renderState),n.translucentCommand=ot.shallowClone(e,n.translucentCommand),!l(a)||n.shaderProgramId!==e.shaderProgram.id?(n.translucentCommand.shaderProgram=Wgt(t,e.shaderProgram),n.translucentCommand.renderState=Vgt(this,t,e.renderState),n.shaderProgramId=e.shaderProgram.id):(n.translucentCommand.shaderProgram=a,n.translucentCommand.renderState=c),n}let i,o,r,s;return l(n.translucentCommand)&&(i=n.translucentCommand.shaderProgram,o=n.translucentCommand.renderState,r=n.alphaCommand.shaderProgram,s=n.alphaCommand.renderState),n.translucentCommand=ot.shallowClone(e,n.translucentCommand),n.alphaCommand=ot.shallowClone(e,n.alphaCommand),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.translucentCommand.shaderProgram=Fgt(t,e.shaderProgram),n.translucentCommand.renderState=Ggt(this,t,e.renderState),n.alphaCommand.shaderProgram=Pgt(t,e.shaderProgram),n.alphaCommand.renderState=Zgt(this,t,e.renderState),n.shaderProgramId=e.shaderProgram.id):(n.translucentCommand.shaderProgram=i,n.translucentCommand.renderState=o,n.alphaCommand.shaderProgram=r,n.alphaCommand.renderState=s),n};function Mgt(e,t,n,i,o,r){let{context:s,frameState:a}=t,{useLogDepth:c,shadowState:d}=a,u=t._hdr,h=i.framebuffer,p=d.lightShadowsEnabled;i.framebuffer=e._adjustTranslucentFBO.framebuffer,e._adjustTranslucentCommand.execute(s,i),i.framebuffer=e._adjustAlphaFBO.framebuffer,e._adjustAlphaCommand.execute(s,i);let g=e._opaqueFBO.framebuffer;i.framebuffer=e._translucentFBO.framebuffer;for(let f=0;f<o.length;++f){let b=o[f];b=c?b.derivedCommands.logDepth.command:b,b=u?b.derivedCommands.hdr.command:b;let x=p&&b.receiveShadows?b.derivedCommands.oit.shadows.translucentCommand:b.derivedCommands.oit.translucentCommand;n(x,t,i,g)}if(l(r)){let f=r.unclassifiedCommand,b=p&&f.receiveShadows?f.derivedCommands.oit.shadows.translucentCommand:f.derivedCommands.oit.translucentCommand;n(b,t,i,g)}i.framebuffer=e._alphaFBO.framebuffer;for(let f=0;f<o.length;++f){let b=o[f];b=c?b.derivedCommands.logDepth.command:b,b=u?b.derivedCommands.hdr.command:b;let x=p&&b.receiveShadows?b.derivedCommands.oit.shadows.alphaCommand:b.derivedCommands.oit.alphaCommand;n(x,t,i,g)}if(l(r)){let f=r.unclassifiedCommand,b=p&&f.receiveShadows?f.derivedCommands.oit.shadows.alphaCommand:f.derivedCommands.oit.alphaCommand;n(b,t,i,g)}i.framebuffer=h}function vgt(e,t,n,i,o,r){let{context:s,frameState:a}=t,{useLogDepth:c,shadowState:d}=a,u=t._hdr,h=i.framebuffer,p=d.lightShadowsEnabled;i.framebuffer=e._adjustTranslucentFBO.framebuffer,e._adjustTranslucentCommand.execute(s,i);let g=e._opaqueFBO.framebuffer;i.framebuffer=e._translucentFBO.framebuffer;for(let f=0;f<o.length;++f){let b=o[f];b=c?b.derivedCommands.logDepth.command:b,b=u?b.derivedCommands.hdr.command:b;let x=p&&b.receiveShadows?b.derivedCommands.oit.shadows.translucentCommand:b.derivedCommands.oit.translucentCommand;n(x,t,i,g)}if(l(r)){let f=r.unclassifiedCommand,b=p&&f.receiveShadows?f.derivedCommands.oit.shadows.translucentCommand:f.derivedCommands.oit.translucentCommand;n(b,t,i,g)}i.framebuffer=h}Yg.prototype.executeCommands=function(e,t,n,i,o){if(this._translucentMRTSupport){vgt(this,e,t,n,i,o);return}Mgt(this,e,t,n,i,o)};Yg.prototype.execute=function(e,t){this._compositeCommand.execute(e,t)};Yg.prototype.clear=function(e,t,n){let i=t.framebuffer;t.framebuffer=this._opaqueFBO.framebuffer,U.clone(n,this._opaqueClearCommand.color),this._opaqueClearCommand.execute(e,t),t.framebuffer=this._translucentFBO.framebuffer,(this._translucentMRTSupport?this._translucentMRTClearCommand:this._translucentMultipassClearCommand).execute(e,t),this._translucentMultipassSupport&&(t.framebuffer=this._alphaFBO.framebuffer,this._alphaClearCommand.execute(e,t)),t.framebuffer=i};Yg.prototype.isSupported=function(){return this._translucentMRTSupport||this._translucentMultipassSupport};Yg.prototype.isDestroyed=function(){return!1};Yg.prototype.destroy=function(){return _Ie(this),l(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),l(this._adjustTranslucentCommand)&&(this._adjustTranslucentCommand.shaderProgram=this._adjustTranslucentCommand.shaderProgram&&this._adjustTranslucentCommand.shaderProgram.destroy()),l(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.shaderProgram=this._adjustAlphaCommand.shaderProgram&&this._adjustAlphaCommand.shaderProgram.destroy()),me(this)};var yM=Yg;var jDi=y(C(),1);function CM(){this._framebuffer=new Gi({color:!1,depthStencil:!0,supportsDepthTexture:!0}),this._passState=void 0}Object.defineProperties(CM.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}}});function Ngt(e){e._framebuffer.destroy()}function Dgt(e,t){let n=t.drawingBufferWidth,i=t.drawingBufferHeight;e._framebuffer.update(t,n,i);let o=new Hc(t);o.blendingEnabled=!1,o.scissorTest={enabled:!0,rectangle:new Ke},o.viewport=new Ke,e._passState=o}CM.prototype.update=function(e,t,n){let i=n.width,o=n.height;this._framebuffer.isDirty(i,o)&&Dgt(this,e);let r=this.framebuffer,s=this._passState;return s.framebuffer=r,s.viewport.width=i,s.viewport.height=o,s.scissorTest.rectangle.x=t.x,s.scissorTest.rectangle.y=o-t.y,s.scissorTest.rectangle.width=1,s.scissorTest.rectangle.height=1,s};CM.prototype.isDestroyed=function(){return!1};CM.prototype.destroy=function(){return Ngt(this),me(this)};var xM=CM;var rQi=y(C(),1);function mL(e){let t=new Hc(e);t.blendingEnabled=!1,t.scissorTest={enabled:!0,rectangle:new Ke},t.viewport=new Ke,this._context=e,this._fb=new Gi({depthStencil:!0}),this._passState=t,this._width=0,this._height=0}mL.prototype.begin=function(e,t){let n=this._context,{width:i,height:o}=t;return Ke.clone(e,this._passState.scissorTest.rectangle),this._width=i,this._height=o,this._fb.update(n,i,o),this._passState.framebuffer=this._fb.framebuffer,this._passState.viewport.width=i,this._passState.viewport.height=o,this._passState};var IM=new U;mL.prototype.end=function(e){let t=e.width??1,n=e.height??1,i=this._context,o=i.readPixels({x:e.x,y:e.y,width:t,height:n,framebuffer:this._fb.framebuffer}),r=Math.max(t,n),s=r*r,a=Math.floor(t*.5),c=Math.floor(n*.5),d=0,u=0,h=0,p=-1;for(let g=0;g<s;++g){if(-a<=d&&d<=a&&-c<=u&&u<=c){let f=4*((c-u)*t+d+a);IM.red=U.byteToFloat(o[f]),IM.green=U.byteToFloat(o[f+1]),IM.blue=U.byteToFloat(o[f+2]),IM.alpha=U.byteToFloat(o[f+3]);let b=i.getObjectByPickColor(IM);if(l(b))return b}if(d===u||d<0&&-d===u||d>0&&d===1-u){let f=h;h=-p,p=f}d+=h,u+=p}};mL.prototype.readCenterPixel=function(e){let t=e.width??1,n=e.height??1,o=this._context.readPixels({x:e.x,y:e.y,width:t,height:n,framebuffer:this._fb.framebuffer}),r=Math.floor(t*.5),a=4*(Math.floor(n*.5)*t+r);return o.slice(a,a+4)};mL.prototype.isDestroyed=function(){return!1};mL.prototype.destroy=function(){return this._fb.destroy(),me(this)};var _M=mL;var mQi=y(C(),1);function Og(){this._numSamples=1,this._colorFramebuffer=new Gi({depthStencil:!0,supportsDepthTexture:!0}),this._idFramebuffer=new Gi({depthStencil:!0,supportsDepthTexture:!0}),this._idClearColor=new U(0,0,0,0),this._clearCommand=new xi({color:new U(0,0,0,0),depth:1,owner:this})}function Qgt(e){e._colorFramebuffer.destroy(),e._idFramebuffer.destroy()}Object.defineProperties(Og.prototype,{framebuffer:{get:function(){return this._colorFramebuffer.framebuffer}},idFramebuffer:{get:function(){return this._idFramebuffer.framebuffer}},depthStencilTexture:{get:function(){return this._colorFramebuffer.getDepthStencilTexture()}}});Og.prototype.update=function(e,t,n,i){let o=t.width,r=t.height,s=n?e.halfFloatingPointTexture?Ye.HALF_FLOAT:Ye.FLOAT:Ye.UNSIGNED_BYTE;this._numSamples=i,this._colorFramebuffer.update(e,o,r,i,s),this._idFramebuffer.update(e,o,r)};Og.prototype.clear=function(e,t,n){U.clone(n,this._clearCommand.color),U.clone(this._idClearColor,this._clearCommand.color),this._colorFramebuffer.clear(e,this._clearCommand,t),this._idFramebuffer.clear(e,this._clearCommand,t)};Og.prototype.getFramebuffer=function(){return this._colorFramebuffer.framebuffer};Og.prototype.getIdFramebuffer=function(){return this._idFramebuffer.framebuffer};Og.prototype.prepareColorTextures=function(e){this._numSamples>1&&this._colorFramebuffer.prepareTextures(e)};Og.prototype.isDestroyed=function(){return!1};Og.prototype.destroy=function(){return Qgt(this),me(this)};var wI=Og;var l5i=y(C(),1);var AQi=y(C(),1);function XI(){}XI.getShadowCastShaderKeyword=function(e,t,n,i){return`castShadow ${e} ${t} ${n} ${i}`};XI.createShadowCastVertexShader=function(e,t,n){let i=e.defines.slice(0),o=e.sources.slice(0);i.push("SHADOW_MAP"),n&&i.push("GENERATE_POSITION");let r=Oe.findPositionVarying(e),s=l(r);if(t&&!s){let a=o.length;for(let d=0;d<a;++d)o[d]=Oe.replaceMain(o[d],"czm_shadow_cast_main");o.push(`out vec3 v_positionEC; +void main() +{ + czm_shadow_cast_main(); + v_positionEC = (czm_inverseProjection * gl_Position).xyz; +}`)}return new Oe({defines:i,sources:o})};XI.createShadowCastFragmentShader=function(e,t,n,i){let o=e.defines.slice(0),r=e.sources.slice(0);o.push("SHADOW_MAP");let s=Oe.findPositionVarying(e),a=l(s);a||(s="v_positionEC");let c=r.length;for(let u=0;u<c;++u)r[u]=Oe.replaceMain(r[u],"czm_shadow_cast_main");let d="";return t&&(a||(d+=`in vec3 v_positionEC; +`),d+=`uniform vec4 shadowMap_lightPositionEC; +`),i?d+=`void main() +{ +`:d+=`void main() +{ + czm_shadow_cast_main(); + if (out_FragColor.a == 0.0) + { + discard; + } +`,t?d+=` float distance = length(${s}); + if (distance >= shadowMap_lightPositionEC.w) + { + discard; + } + distance /= shadowMap_lightPositionEC.w; // radius + out_FragColor = czm_packDepth(distance); +`:n?d+=` out_FragColor = vec4(1.0); +`:d+=` out_FragColor = czm_packDepth(gl_FragCoord.z); +`,d+=`} +`,r.push(d),new Oe({defines:o,sources:r})};XI.getShadowReceiveShaderKeyword=function(e,t,n,i){let o=e._usesDepthTexture,r=e._polygonOffsetSupported,s=e._isPointLight,a=e._isSpotLight,c=e._numberOfCascades>1,d=e.debugCascadeColors,u=e.softShadows;return`receiveShadow ${o}${r}${s}${a}${c}${d}${u}${t}${n}${i}`};XI.createShadowReceiveVertexShader=function(e,t,n){let i=e.defines.slice(0),o=e.sources.slice(0);return i.push("SHADOW_MAP"),t&&(n?i.push("GENERATE_POSITION_AND_NORMAL"):i.push("GENERATE_POSITION")),new Oe({defines:i,sources:o})};XI.createShadowReceiveFragmentShader=function(e,t,n,i,o){let r=Oe.findNormalVarying(e),s=!i&&l(r)||i&&o,a=Oe.findPositionVarying(e),c=l(a),d=t._usesDepthTexture,u=t._polygonOffsetSupported,h=t._isPointLight,p=t._isSpotLight,g=t._numberOfCascades>1,f=t.debugCascadeColors,b=t.softShadows,x=h?t._pointBias:i?t._terrainBias:t._primitiveBias,I=e.defines.slice(0),_=e.sources.slice(0),E=_.length;for(let G=0;G<E;++G)_[G]=Oe.replaceMain(_[G],"czm_shadow_receive_main");h?I.push("USE_CUBE_MAP_SHADOW"):d&&I.push("USE_SHADOW_DEPTH_TEXTURE"),b&&!h&&I.push("USE_SOFT_SHADOWS"),g&&n&&i&&(s?I.push("ENABLE_VERTEX_LIGHTING"):I.push("ENABLE_DAYNIGHT_SHADING")),n&&x.normalShading&&s&&(I.push("USE_NORMAL_SHADING"),x.normalShadingSmooth>0&&I.push("USE_NORMAL_SHADING_SMOOTH"));let S="";h?S+=`uniform samplerCube shadowMap_textureCube; +`:S+=`uniform sampler2D shadowMap_texture; +`;let R;return c?R=` return vec4(${a}, 1.0); +`:R=`#ifndef LOG_DEPTH + return czm_windowToEyeCoordinates(gl_FragCoord); +#else + return vec4(v_logPositionEC, 1.0); +#endif +`,S+=`uniform mat4 shadowMap_matrix; +uniform vec3 shadowMap_lightDirectionEC; +uniform vec4 shadowMap_lightPositionEC; +uniform vec4 shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness; +uniform vec4 shadowMap_texelSizeDepthBiasAndNormalShadingSmooth; +#ifdef LOG_DEPTH +in vec3 v_logPositionEC; +#endif +vec4 getPositionEC() +{ +${R}} +vec3 getNormalEC() +{ +${s?` return normalize(${r}); +`:` return vec3(1.0); +`}} +void applyNormalOffset(inout vec4 positionEC, vec3 normalEC, float nDotL) +{ +${x.normalOffset&&s?` float normalOffset = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.x; + float normalOffsetScale = 1.0 - nDotL; + vec3 offset = normalOffset * normalOffsetScale * normalEC; + positionEC.xyz += offset; +`:""}} +`,S+=`void main() +{ + czm_shadow_receive_main(); + vec4 positionEC = getPositionEC(); + vec3 normalEC = getNormalEC(); + float depth = -positionEC.z; +`,S+=` czm_shadowParameters shadowParameters; + shadowParameters.texelStepSize = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.xy; + shadowParameters.depthBias = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.z; + shadowParameters.normalShadingSmooth = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.w; + shadowParameters.darkness = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.w; +`,i?S+=` shadowParameters.depthBias *= max(depth * 0.01, 1.0); +`:u||(S+=` shadowParameters.depthBias *= mix(1.0, 100.0, depth * 0.0015); +`),h?S+=` vec3 directionEC = positionEC.xyz - shadowMap_lightPositionEC.xyz; + float distance = length(directionEC); + directionEC = normalize(directionEC); + float radius = shadowMap_lightPositionEC.w; + // Stop early if the fragment is beyond the point light radius + if (distance > radius) + { + return; + } + vec3 directionWC = czm_inverseViewRotation * directionEC; + shadowParameters.depth = distance / radius; + shadowParameters.nDotL = clamp(dot(normalEC, -directionEC), 0.0, 1.0); + shadowParameters.texCoords = directionWC; + float visibility = czm_shadowVisibility(shadowMap_textureCube, shadowParameters); +`:p?S+=` vec3 directionEC = normalize(positionEC.xyz - shadowMap_lightPositionEC.xyz); + float nDotL = clamp(dot(normalEC, -directionEC), 0.0, 1.0); + applyNormalOffset(positionEC, normalEC, nDotL); + vec4 shadowPosition = shadowMap_matrix * positionEC; + // Spot light uses a perspective projection, so perform the perspective divide + shadowPosition /= shadowPosition.w; + // Stop early if the fragment is not in the shadow bounds + if (any(lessThan(shadowPosition.xyz, vec3(0.0))) || any(greaterThan(shadowPosition.xyz, vec3(1.0)))) + { + return; + } + shadowParameters.texCoords = shadowPosition.xy; + shadowParameters.depth = shadowPosition.z; + shadowParameters.nDotL = nDotL; + float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters); +`:g?S+=` float maxDepth = shadowMap_cascadeSplits[1].w; + // Stop early if the eye depth exceeds the last cascade + if (depth > maxDepth) + { + return; + } + // Get the cascade based on the eye-space depth + vec4 weights = czm_cascadeWeights(depth); + // Apply normal offset + float nDotL = clamp(dot(normalEC, shadowMap_lightDirectionEC), 0.0, 1.0); + applyNormalOffset(positionEC, normalEC, nDotL); + // Transform position into the cascade + vec4 shadowPosition = czm_cascadeMatrix(weights) * positionEC; + // Get visibility + shadowParameters.texCoords = shadowPosition.xy; + shadowParameters.depth = shadowPosition.z; + shadowParameters.nDotL = nDotL; + float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters); + // Fade out shadows that are far away + float shadowMapMaximumDistance = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.z; + float fade = max((depth - shadowMapMaximumDistance * 0.8) / (shadowMapMaximumDistance * 0.2), 0.0); + visibility = mix(visibility, 1.0, fade); +${f?` // Draw cascade colors for debugging + out_FragColor *= czm_cascadeColor(weights); +`:""}`:S+=` float nDotL = clamp(dot(normalEC, shadowMap_lightDirectionEC), 0.0, 1.0); + applyNormalOffset(positionEC, normalEC, nDotL); + vec4 shadowPosition = shadowMap_matrix * positionEC; + // Stop early if the fragment is not in the shadow bounds + if (any(lessThan(shadowPosition.xyz, vec3(0.0))) || any(greaterThan(shadowPosition.xyz, vec3(1.0)))) + { + return; + } + shadowParameters.texCoords = shadowPosition.xy; + shadowParameters.depth = shadowPosition.z; + shadowParameters.nDotL = nDotL; + float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters); +`,S+=` out_FragColor.rgb *= visibility; +} +`,_.push(S),new Oe({defines:I,sources:_})};var Bp=XI;function wp(e){e=e??Y.EMPTY_OBJECT;let t=e.context;this._enabled=e.enabled??!0,this._softShadows=e.softShadows??!1,this._normalOffset=e.normalOffset??!0,this.dirty=!0,this.fromLightSource=e.fromLightSource??!0,this.darkness=e.darkness??.3,this._darkness=this.darkness,this.fadingEnabled=e.fadingEnabled??!0,this.maximumDistance=e.maximumDistance??5e3,this._outOfView=!1,this._outOfViewPrevious=!1,this._needsUpdate=!0;let n=!0;(Ht.isInternetExplorer()||Ht.isEdge()||(Ht.isChrome()||Ht.isFirefox())&&Ht.isWindows()&&!t.depthTexture)&&(n=!1),this._polygonOffsetSupported=n,this._terrainBias={polygonOffset:n,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:.5,normalShading:!0,normalShadingSmooth:.3,depthBias:1e-4},this._primitiveBias={polygonOffset:n,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:.1,normalShading:!0,normalShadingSmooth:.05,depthBias:2e-5},this._pointBias={polygonOffset:!1,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:0,normalShading:!0,normalShadingSmooth:.1,depthBias:5e-4},this._depthAttachment=void 0,this._colorAttachment=void 0,this._shadowMapMatrix=new X,this._shadowMapTexture=void 0,this._lightDirectionEC=new m,this._lightPositionEC=new ce,this._distance=0,this._lightCamera=e.lightCamera,this._shadowMapCamera=new iY,this._shadowMapCullingVolume=void 0,this._sceneCamera=void 0,this._boundingSphere=new ue,this._isPointLight=e.isPointLight??!1,this._pointLightRadius=e.pointLightRadius??100,this._cascadesEnabled=this._isPointLight?!1:e.cascadesEnabled??!0,this._numberOfCascades=this._cascadesEnabled?e.numberOfCascades??4:0,this._fitNearFar=!0,this._maximumCascadeDistances=[25,150,700,Number.MAX_VALUE],this._textureSize=new D,this._isSpotLight=!1,this._cascadesEnabled?this._shadowMapCamera.frustum=new qr:l(this._lightCamera.frustum.fov)&&(this._isSpotLight=!0),this._cascadeSplits=[new ce,new ce],this._cascadeMatrices=[new X,new X,new X,new X],this._cascadeDistances=new ce;let i;this._isPointLight?i=6:this._cascadesEnabled?i=this._numberOfCascades:i=1,this._passes=new Array(i);for(let o=0;o<i;++o)this._passes[o]=new Ugt(t);this.debugShow=!1,this.debugFreezeFrame=!1,this._debugFreezeFrame=!1,this._debugCascadeColors=!1,this._debugLightFrustum=void 0,this._debugCameraFrustum=void 0,this._debugCascadeFrustums=new Array(this._numberOfCascades),this._debugShadowViewCommand=void 0,this._usesDepthTexture=t.depthTexture,this._isPointLight&&(this._usesDepthTexture=!1),this._primitiveRenderState=void 0,this._terrainRenderState=void 0,this._pointRenderState=void 0,t6(this),this._clearCommand=new xi({depth:1,color:new U}),this._clearPassState=new Hc(t),this._size=e.size??2048,this.size=this._size}wp.MAXIMUM_DISTANCE=2e4;function Ugt(e){this.camera=new iY,this.passState=new Hc(e),this.framebuffer=void 0,this.textureOffsets=void 0,this.commandList=[],this.cullingVolume=void 0}function e6(e,t){return Qe.fromCache({cull:{enabled:!0,face:Xi.BACK},depthTest:{enabled:!0},colorMask:{red:e,green:e,blue:e,alpha:e},depthMask:!0,polygonOffset:{enabled:t.polygonOffset,factor:t.polygonOffsetFactor,units:t.polygonOffsetUnits}})}function t6(e){let t=!e._usesDepthTexture;e._primitiveRenderState=e6(t,e._primitiveBias),e._terrainRenderState=e6(t,e._terrainBias),e._pointRenderState=e6(t,e._pointBias)}wp.prototype.debugCreateRenderStates=function(){t6(this)};Object.defineProperties(wp.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this.dirty=this._enabled!==e,this._enabled=e}},normalOffset:{get:function(){return this._normalOffset},set:function(e){this.dirty=this._normalOffset!==e,this._normalOffset=e,this._terrainBias.normalOffset=e,this._primitiveBias.normalOffset=e,this._pointBias.normalOffset=e}},softShadows:{get:function(){return this._softShadows},set:function(e){this.dirty=this._softShadows!==e,this._softShadows=e}},size:{get:function(){return this._size},set:function(e){Kgt(this,e)}},outOfView:{get:function(){return this._outOfView}},shadowMapCullingVolume:{get:function(){return this._shadowMapCullingVolume}},passes:{get:function(){return this._passes}},isPointLight:{get:function(){return this._isPointLight}},debugCascadeColors:{get:function(){return this._debugCascadeColors},set:function(e){this.dirty=this._debugCascadeColors!==e,this._debugCascadeColors=e}}});function n6(e){let t=e._passes.length;for(let n=0;n<t;++n){let i=e._passes[n],o=i.framebuffer;l(o)&&!o.isDestroyed()&&o.destroy(),i.framebuffer=void 0}e._depthAttachment=e._depthAttachment&&e._depthAttachment.destroy(),e._colorAttachment=e._colorAttachment&&e._colorAttachment.destroy()}function kgt(e,t){let n=new Hd({context:t,width:e._textureSize.x,height:e._textureSize.y,format:Tl.DEPTH_COMPONENT16}),i=new Wt({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:tt.RGBA,pixelDatatype:Ye.UNSIGNED_BYTE,sampler:sn.NEAREST}),o=new jr({context:t,depthRenderbuffer:n,colorTextures:[i],destroyAttachments:!1}),r=e._passes.length;for(let s=0;s<r;++s){let a=e._passes[s];a.framebuffer=o,a.passState.framebuffer=o}e._shadowMapTexture=i,e._depthAttachment=n,e._colorAttachment=i}function Ygt(e,t){let n=new Wt({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:tt.DEPTH_STENCIL,pixelDatatype:Ye.UNSIGNED_INT_24_8,sampler:sn.NEAREST}),i=new jr({context:t,depthStencilTexture:n,destroyAttachments:!1}),o=e._passes.length;for(let r=0;r<o;++r){let s=e._passes[r];s.framebuffer=i,s.passState.framebuffer=i}e._shadowMapTexture=n,e._depthAttachment=n}function Ogt(e,t){let n=new Hd({context:t,width:e._textureSize.x,height:e._textureSize.y,format:Tl.DEPTH_COMPONENT16}),i=new Pr({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:tt.RGBA,pixelDatatype:Ye.UNSIGNED_BYTE,sampler:sn.NEAREST}),o=[i.negativeX,i.negativeY,i.negativeZ,i.positiveX,i.positiveY,i.positiveZ];for(let r=0;r<6;++r){let s=new jr({context:t,depthRenderbuffer:n,colorTextures:[o[r]],destroyAttachments:!1}),a=e._passes[r];a.framebuffer=s,a.passState.framebuffer=s}e._shadowMapTexture=i,e._depthAttachment=n,e._colorAttachment=i}function SIe(e,t){e._isPointLight?Ogt(e,t):e._usesDepthTexture?Ygt(e,t):kgt(e,t)}function Hgt(e,t){e._usesDepthTexture&&e._passes[0].framebuffer.status!==ne.FRAMEBUFFER_COMPLETE&&(e._usesDepthTexture=!1,t6(e),n6(e),SIe(e,t))}function zgt(e,t){(!l(e._passes[0].framebuffer)||e._shadowMapTexture.width!==e._textureSize.x)&&(n6(e),SIe(e,t),Hgt(e,t),LIe(e,t))}function LIe(e,t,n){n=n??0,(e._isPointLight||n===0)&&(e._clearCommand.framebuffer=e._passes[n].framebuffer,e._clearCommand.execute(t,e._clearPassState))}function Kgt(e,t){e._size=t;let n=e._passes,i=n.length,o=e._textureSize;if(e._isPointLight){t=Kt.maximumCubeMapSize>=t?t:Kt.maximumCubeMapSize,o.x=t,o.y=t;let r=new Ke(0,0,t,t);n[0].passState.viewport=r,n[1].passState.viewport=r,n[2].passState.viewport=r,n[3].passState.viewport=r,n[4].passState.viewport=r,n[5].passState.viewport=r}else i===1?(t=Kt.maximumTextureSize>=t?t:Kt.maximumTextureSize,o.x=t,o.y=t,n[0].passState.viewport=new Ke(0,0,t,t)):i===4&&(t=Kt.maximumTextureSize>=t*2?t:Kt.maximumTextureSize/2,o.x=t*2,o.y=t*2,n[0].passState.viewport=new Ke(0,0,t,t),n[1].passState.viewport=new Ke(t,0,t,t),n[2].passState.viewport=new Ke(0,t,t,t),n[3].passState.viewport=new Ke(t,t,t,t));e._clearPassState.viewport=new Ke(0,0,o.x,o.y);for(let r=0;r<i;++r){let s=n[r],a=s.passState.viewport,c=a.x/o.x,d=a.y/o.y,u=a.width/o.x,h=a.height/o.y;s.textureOffsets=new X(u,0,0,c,0,h,0,d,0,0,1,0,0,0,0,1)}}var Jgt=new Ke;function jgt(e,t){let n;e._isPointLight?n=`uniform samplerCube shadowMap_textureCube; +in vec2 v_textureCoordinates; +void main() +{ + vec2 uv = v_textureCoordinates; + vec3 dir; + + if (uv.y < 0.5) + { + if (uv.x < 0.333) + { + dir.x = -1.0; + dir.y = uv.x * 6.0 - 1.0; + dir.z = uv.y * 4.0 - 1.0; + } + else if (uv.x < 0.666) + { + dir.y = -1.0; + dir.x = uv.x * 6.0 - 3.0; + dir.z = uv.y * 4.0 - 1.0; + } + else + { + dir.z = -1.0; + dir.x = uv.x * 6.0 - 5.0; + dir.y = uv.y * 4.0 - 1.0; + } + } + else + { + if (uv.x < 0.333) + { + dir.x = 1.0; + dir.y = uv.x * 6.0 - 1.0; + dir.z = uv.y * 4.0 - 3.0; + } + else if (uv.x < 0.666) + { + dir.y = 1.0; + dir.x = uv.x * 6.0 - 3.0; + dir.z = uv.y * 4.0 - 3.0; + } + else + { + dir.z = 1.0; + dir.x = uv.x * 6.0 - 5.0; + dir.y = uv.y * 4.0 - 3.0; + } + } + + float shadow = czm_unpackDepth(czm_textureCube(shadowMap_textureCube, dir)); + out_FragColor = vec4(vec3(shadow), 1.0); +} +`:n=`uniform sampler2D shadowMap_texture; +in vec2 v_textureCoordinates; +void main() +{ +${e._usesDepthTexture?` float shadow = texture(shadowMap_texture, v_textureCoordinates).r; +`:` float shadow = czm_unpackDepth(texture(shadowMap_texture, v_textureCoordinates)); +`} out_FragColor = vec4(vec3(shadow), 1.0); +} +`;let i=t.createViewportQuadCommand(n,{uniformMap:{shadowMap_texture:function(){return e._shadowMapTexture},shadowMap_textureCube:function(){return e._shadowMapTexture}}});return i.pass=Ge.OVERLAY,i}function qgt(e,t){let n=t.context,i=t.context.drawingBufferWidth,o=t.context.drawingBufferHeight,r=Math.min(i,o)*.3,s=Jgt;s.x=i-r,s.y=0,s.width=r,s.height=r;let a=e._debugShadowViewCommand;l(a)||(a=jgt(e,n),e._debugShadowViewCommand=a),(!l(a.renderState)||!Ke.equals(a.renderState.viewport,s))&&(a.renderState=Qe.fromCache({viewport:Ke.clone(s)})),t.commandList.push(e._debugShadowViewCommand)}var Xp=new Array(8);Xp[0]=new ce(-1,-1,-1,1);Xp[1]=new ce(1,-1,-1,1);Xp[2]=new ce(1,1,-1,1);Xp[3]=new ce(-1,1,-1,1);Xp[4]=new ce(-1,-1,1,1);Xp[5]=new ce(1,-1,1,1);Xp[6]=new ce(1,1,1,1);Xp[7]=new ce(-1,1,1,1);var my=new X,i6=new Array(8);for(let e=0;e<8;++e)i6[e]=new ce;function $gt(e,t){let n=new wt({geometry:new nh({minimum:new m(-.5,-.5,-.5),maximum:new m(.5,.5,.5)}),attributes:{color:tn.fromColor(t)}}),i=new wt({geometry:new cg({radius:.5}),attributes:{color:tn.fromColor(t)}});return new Nn({geometryInstances:[n,i],appearance:new yn({translucent:!1,flat:!0}),asynchronous:!1,modelMatrix:e})}var ebt=[U.RED,U.GREEN,U.BLUE,U.MAGENTA],tbt=new m;function nbt(e,t){qgt(e,t);let n=e.debugFreezeFrame&&!e._debugFreezeFrame;if(e._debugFreezeFrame=e.debugFreezeFrame,e.debugFreezeFrame&&(n&&(e._debugCameraFrustum=e._debugCameraFrustum&&e._debugCameraFrustum.destroy(),e._debugCameraFrustum=new Rp({camera:e._sceneCamera,color:U.CYAN,updateOnChange:!1})),e._debugCameraFrustum.update(t)),e._cascadesEnabled){if(e.debugFreezeFrame){n&&(e._debugLightFrustum=e._debugLightFrustum&&e._debugLightFrustum.destroy(),e._debugLightFrustum=new Rp({camera:e._shadowMapCamera,color:U.YELLOW,updateOnChange:!1})),e._debugLightFrustum.update(t);for(let i=0;i<e._numberOfCascades;++i)n&&(e._debugCascadeFrustums[i]=e._debugCascadeFrustums[i]&&e._debugCascadeFrustums[i].destroy(),e._debugCascadeFrustums[i]=new Rp({camera:e._passes[i].camera,color:ebt[i],updateOnChange:!1})),e._debugCascadeFrustums[i].update(t)}}else if(e._isPointLight){if(!l(e._debugLightFrustum)||e._needsUpdate){let i=e._shadowMapCamera.positionWC,o=Pe.IDENTITY,r=e._pointLightRadius*2,s=m.fromElements(r,r,r,tbt),a=X.fromTranslationQuaternionRotationScale(i,o,s,my);e._debugLightFrustum=e._debugLightFrustum&&e._debugLightFrustum.destroy(),e._debugLightFrustum=$gt(a,U.YELLOW)}e._debugLightFrustum.update(t)}else(!l(e._debugLightFrustum)||e._needsUpdate)&&(e._debugLightFrustum=new Rp({camera:e._shadowMapCamera,color:U.YELLOW,updateOnChange:!1})),e._debugLightFrustum.update(t)}function iY(){this.viewMatrix=new X,this.inverseViewMatrix=new X,this.frustum=void 0,this.positionCartographic=new ge,this.positionWC=new m,this.directionWC=m.clone(m.UNIT_Z),this.upWC=m.clone(m.UNIT_Y),this.rightWC=m.clone(m.UNIT_X),this.viewProjectionMatrix=new X}iY.prototype.clone=function(e){X.clone(e.viewMatrix,this.viewMatrix),X.clone(e.inverseViewMatrix,this.inverseViewMatrix),this.frustum=e.frustum.clone(this.frustum),ge.clone(e.positionCartographic,this.positionCartographic),m.clone(e.positionWC,this.positionWC),m.clone(e.directionWC,this.directionWC),m.clone(e.upWC,this.upWC),m.clone(e.rightWC,this.rightWC)};var ibt=new X(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1);iY.prototype.getViewProjection=function(){let e=this.viewMatrix,t=this.frustum.projectionMatrix;return X.multiply(t,e,this.viewProjectionMatrix),X.multiply(ibt,this.viewProjectionMatrix,this.viewProjectionMatrix),this.viewProjectionMatrix};var obt=new Array(5),rbt=new Ni,sbt=new Array(4),RIe=new m,VIe=new m;function abt(e,t){let n=e._shadowMapCamera,i=e._sceneCamera,o=i.frustum.near,r=i.frustum.far,s=e._numberOfCascades,a,c=r-o,d=r/o,u=.9,h=!1;t.shadowState.closestObjectSize<200&&(h=!0,u=.9);let p=sbt,g=obt;for(g[0]=o,g[s]=r,a=0;a<s;++a){let P=(a+1)/s,A=o*Math.pow(d,P),T=o+c*P,L=Z.lerp(T,A,u);g[a+1]=L,p[a]=L-g[a]}if(h){for(a=0;a<s;++a)p[a]=Math.min(p[a],e._maximumCascadeDistances[a]);let P=g[0];for(a=0;a<s-1;++a)P+=p[a],g[a+1]=P}ce.unpack(g,0,e._cascadeSplits[0]),ce.unpack(g,1,e._cascadeSplits[1]),ce.unpack(p,0,e._cascadeDistances);let f=n.frustum,b=f.left,x=f.right,I=f.bottom,_=f.top,E=f.near,S=f.far,R=n.positionWC,G=n.directionWC,B=n.upWC,w=i.frustum.clone(rbt),F=n.getViewProjection();for(a=0;a<s;++a){w.near=g[a],w.far=g[a+1];let P=X.multiply(w.projectionMatrix,i.viewMatrix,my),A=X.inverse(P,my),T=X.multiply(F,A,my),L=m.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,RIe),V=m.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,VIe);for(let k=0;k<8;++k){let v=ce.clone(Xp[k],i6[k]);X.multiplyByVector(T,v,v),m.divideByScalar(v,v.w,v),m.minimumByComponent(v,L,L),m.maximumByComponent(v,V,V)}L.x=Math.max(L.x,0),L.y=Math.max(L.y,0),L.z=0,V.x=Math.min(V.x,1),V.y=Math.min(V.y,1),V.z=Math.min(V.z,1);let W=e._passes[a],M=W.camera;M.clone(n);let Q=M.frustum;Q.left=b+L.x*(x-b),Q.right=b+V.x*(x-b),Q.bottom=I+L.y*(_-I),Q.top=I+V.y*(_-I),Q.near=E+L.z*(S-E),Q.far=E+V.z*(S-E),W.cullingVolume=M.frustum.computeCullingVolume(R,G,B);let N=e._cascadeMatrices[a];X.multiply(M.getViewProjection(),i.inverseViewMatrix,N),X.multiply(W.textureOffsets,N,N)}}var cbt=new X,lbt=new m,dbt=new m,EIe=new m;function ubt(e,t){let n=e._shadowMapCamera,i=e._sceneCamera,o=X.multiply(i.frustum.projectionMatrix,i.viewMatrix,my),r=X.inverse(o,my),s=n.directionWC,a=i.directionWC;m.equalsEpsilon(s,a,Z.EPSILON10)&&(a=i.upWC);let c=m.cross(s,a,lbt);a=m.cross(c,s,dbt),m.normalize(a,a),m.normalize(c,c);let d=m.fromElements(0,0,0,EIe),u=X.computeView(d,s,a,c,cbt),h=X.multiply(u,r,my),p=m.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,RIe),g=m.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,VIe);for(let S=0;S<8;++S){let R=ce.clone(Xp[S],i6[S]);X.multiplyByVector(h,R,R),m.divideByScalar(R,R.w,R),m.minimumByComponent(R,p,p),m.maximumByComponent(R,g,g)}g.z+=1e3,p.z-=10;let f=EIe;f.x=-(.5*(p.x+g.x)),f.y=-(.5*(p.y+g.y)),f.z=-g.z;let b=X.fromTranslation(f,my);u=X.multiply(b,u,u);let x=.5*(g.x-p.x),I=.5*(g.y-p.y),_=g.z-p.z,E=n.frustum;E.left=-x,E.right=x,E.bottom=-I,E.top=I,E.near=.01,E.far=_,X.clone(u,n.viewMatrix),X.inverse(u,n.inverseViewMatrix),X.getTranslation(n.inverseViewMatrix,n.positionWC),t.mapProjection.ellipsoid.cartesianToCartographic(n.positionWC,n.positionCartographic),m.clone(s,n.directionWC),m.clone(a,n.upWC),m.clone(c,n.rightWC)}var mbt=[new m(-1,0,0),new m(0,-1,0),new m(0,0,-1),new m(1,0,0),new m(0,1,0),new m(0,0,1)],hbt=[new m(0,-1,0),new m(0,0,-1),new m(0,-1,0),new m(0,-1,0),new m(0,0,1),new m(0,-1,0)],fbt=[new m(0,0,1),new m(1,0,0),new m(-1,0,0),new m(0,0,-1),new m(1,0,0),new m(1,0,0)];function pbt(e,t){let n=new Ni;n.fov=Z.PI_OVER_TWO,n.near=1,n.far=e._pointLightRadius,n.aspectRatio=1;for(let i=0;i<6;++i){let o=e._passes[i].camera;o.positionWC=e._shadowMapCamera.positionWC,o.positionCartographic=t.mapProjection.ellipsoid.cartesianToCartographic(o.positionWC,o.positionCartographic),o.directionWC=mbt[i],o.upWC=hbt[i],o.rightWC=fbt[i],X.computeView(o.positionWC,o.directionWC,o.upWC,o.rightWC,o.viewMatrix),X.inverse(o.viewMatrix,o.inverseViewMatrix),o.frustum=n}}var Abt=new m,gbt=new m,GIe=new ue,TIe=GIe.center;function bbt(e,t){let n=e._sceneCamera,i=e._shadowMapCamera,o=GIe;if(e._cascadesEnabled){if(n.frustum.near>=e.maximumDistance){e._outOfView=!0,e._needsUpdate=!1;return}let r=t.mapProjection.ellipsoid.geodeticSurfaceNormal(n.positionWC,Abt),s=m.negate(i.directionWC,gbt),a=m.dot(r,s);if(e.fadingEnabled){let c=Z.clamp(a/.1,0,1);e._darkness=Z.lerp(1,e.darkness,c)}else e._darkness=e.darkness;if(a<0){e._outOfView=!0,e._needsUpdate=!1;return}e._needsUpdate=!0,e._outOfView=!1}else if(e._isPointLight)o.center=i.positionWC,o.radius=e._pointLightRadius,e._outOfView=t.cullingVolume.computeVisibility(o)===on.OUTSIDE,e._needsUpdate=!e._outOfView&&!e._boundingSphere.equals(o),ue.clone(o,e._boundingSphere);else{let r=i.frustum.far/2,s=m.add(i.positionWC,m.multiplyByScalar(i.directionWC,r,TIe),TIe);o.center=s,o.radius=r,e._outOfView=t.cullingVolume.computeVisibility(o)===on.OUTSIDE,e._needsUpdate=!e._outOfView&&!e._boundingSphere.equals(o),ue.clone(o,e._boundingSphere)}}function ybt(e,t){let n=t.camera,i=e._lightCamera,o=e._sceneCamera,r=e._shadowMapCamera;e._cascadesEnabled?m.clone(i.directionWC,r.directionWC):e._isPointLight?m.clone(i.positionWC,r.positionWC):r.clone(i);let s=e._lightDirectionEC;X.multiplyByPointAsVector(n.viewMatrix,r.directionWC,s),m.normalize(s,s),m.negate(s,s),X.multiplyByPoint(n.viewMatrix,r.positionWC,e._lightPositionEC),e._lightPositionEC.w=e._pointLightRadius;let a,c;e._fitNearFar?(a=Math.min(t.shadowState.nearPlane,e.maximumDistance),c=Math.min(t.shadowState.farPlane,e.maximumDistance),c=Math.max(c,a+1)):(a=n.frustum.near,c=e.maximumDistance),e._sceneCamera=xo.clone(n,o),n.frustum.clone(e._sceneCamera.frustum),e._sceneCamera.frustum.near=a,e._sceneCamera.frustum.far=c,e._distance=c-a,bbt(e,t),!e._outOfViewPrevious&&e._outOfView&&(e._needsUpdate=!0),e._outOfViewPrevious=e._outOfView}wp.prototype.update=function(e){if(ybt(this,e),this._needsUpdate)if(zgt(this,e.context),this._isPointLight&&pbt(this,e),this._cascadesEnabled&&(ubt(this,e),this._numberOfCascades>1&&abt(this,e)),this._isPointLight)this._shadowMapCullingVolume=Xs.fromBoundingSphere(this._boundingSphere);else{let t=this._shadowMapCamera,n=t.positionWC,i=t.directionWC,o=t.upWC;this._shadowMapCullingVolume=t.frustum.computeCullingVolume(n,i,o),this._passes.length===1&&this._passes[0].camera.clone(t)}if(this._passes.length===1){let t=this._sceneCamera.inverseViewMatrix;X.multiply(this._shadowMapCamera.getViewProjection(),t,this._shadowMapMatrix)}this.debugShow&&nbt(this,e)};wp.prototype.updatePass=function(e,t){LIe(this,e,t)};var Cbt=new D;function ZIe(e,t,n){let i=e._isPointLight?e._pointBias:n?e._terrainBias:e._primitiveBias,o={shadowMap_texture:function(){return e._shadowMapTexture},shadowMap_textureCube:function(){return e._shadowMapTexture},shadowMap_matrix:function(){return e._shadowMapMatrix},shadowMap_cascadeSplits:function(){return e._cascadeSplits},shadowMap_cascadeMatrices:function(){return e._cascadeMatrices},shadowMap_lightDirectionEC:function(){return e._lightDirectionEC},shadowMap_lightPositionEC:function(){return e._lightPositionEC},shadowMap_cascadeDistances:function(){return e._cascadeDistances},shadowMap_texelSizeDepthBiasAndNormalShadingSmooth:function(){let r=Cbt;return r.x=1/e._textureSize.x,r.y=1/e._textureSize.y,ce.fromElements(r.x,r.y,i.depthBias,i.normalShadingSmooth,this.combinedUniforms1)},shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness:function(){return ce.fromElements(i.normalOffsetScale,e._distance,e.maximumDistance,e._darkness,this.combinedUniforms2)},combinedUniforms1:new ce,combinedUniforms2:new ce};return Lt(t,o,!1)}function xbt(e,t,n,i,o,r){let s,a,c;if(l(r)&&(s=r.shaderProgram,a=r.renderState,c=r.uniformMap),r=ot.shallowClone(n,r),r.castShadows=!0,r.receiveShadows=!1,!l(s)||o!==n.shaderProgram.id||t){let d=n.shaderProgram,u=n.pass===Ge.GLOBE,h=n.pass!==Ge.TRANSLUCENT,p=e._isPointLight,g=e._usesDepthTexture,f=Bp.getShadowCastShaderKeyword(p,u,g,h);if(s=i.shaderCache.getDerivedShaderProgram(d,f),!l(s)){let x=d.vertexShaderSource,I=d.fragmentShaderSource,_=Bp.createShadowCastVertexShader(x,p,u),E=Bp.createShadowCastFragmentShader(I,p,g,h);s=i.shaderCache.createDerivedShaderProgram(d,f,{vertexShaderSource:_,fragmentShaderSource:E,attributeLocations:d._attributeLocations})}a=e._primitiveRenderState,p?a=e._pointRenderState:u&&(a=e._terrainRenderState),n.renderState.cull.enabled||(a=ke(a,!1),a.cull=ke(a.cull,!1),a.cull.enabled=!1,a=Qe.fromCache(a)),c=ZIe(e,n.uniformMap,u)}return r.shaderProgram=s,r.renderState=a,r.uniformMap=c,r}wp.createReceiveDerivedCommand=function(e,t,n,i,o){l(o)||(o={});let r=e.length>0,s=t.shaderProgram,a=s.vertexShaderSource,c=s.fragmentShaderSource,d=t.pass===Ge.GLOBE,u=!1;if(d&&(u=t.owner.data.renderedMesh.encoding.hasVertexNormals),t.receiveShadows&&r){let h,p;l(o.receiveCommand)&&(h=o.receiveCommand.shaderProgram,p=o.receiveCommand.uniformMap),o.receiveCommand=ot.shallowClone(t,o.receiveCommand),o.castShadows=!1,o.receiveShadows=!0;let g=o.receiveShaderCastShadows!==t.castShadows,f=o.receiveShaderProgramId!==t.shaderProgram.id;if(!l(h)||f||n||g){let b=Bp.getShadowReceiveShaderKeyword(e[0],t.castShadows,d,u);if(h=i.shaderCache.getDerivedShaderProgram(s,b),!l(h)){let x=Bp.createShadowReceiveVertexShader(a,d,u),I=Bp.createShadowReceiveFragmentShader(c,e[0],t.castShadows,d,u);h=i.shaderCache.createDerivedShaderProgram(s,b,{vertexShaderSource:x,fragmentShaderSource:I,attributeLocations:s._attributeLocations})}p=ZIe(e[0],t.uniformMap,d)}o.receiveCommand.shaderProgram=h,o.receiveCommand.uniformMap=p,o.receiveShaderProgramId=t.shaderProgram.id,o.receiveShaderCastShadows=t.castShadows}return o};wp.createCastDerivedCommand=function(e,t,n,i,o){if(l(o)||(o={}),t.castShadows){let r=o.castCommands;l(r)||(r=o.castCommands=[]);let s=o.castShaderProgramId,a=e.length;r.length=a;for(let c=0;c<a;++c)r[c]=xbt(e[c],n,t,i,s,r[c]);o.castShaderProgramId=t.shaderProgram.id}return o};wp.prototype.isDestroyed=function(){return!1};wp.prototype.destroy=function(){n6(this),this._debugLightFrustum=this._debugLightFrustum&&this._debugLightFrustum.destroy(),this._debugCameraFrustum=this._debugCameraFrustum&&this._debugCameraFrustum.destroy(),this._debugShadowViewCommand=this._debugShadowViewCommand&&this._debugShadowViewCommand.shaderProgram&&this._debugShadowViewCommand.shaderProgram.destroy();for(let e=0;e<this._numberOfCascades;++e)this._debugCascadeFrustums[e]=this._debugCascadeFrustums[e]&&this._debugCascadeFrustums[e].destroy();return me(this)};var Hg=wp;var B5i=y(C(),1);var u5i=y(C(),1),WI=`uniform sampler2D colorTexture; + +#ifdef DEBUG_SHOW_DEPTH +uniform sampler2D u_packedTranslucentDepth; +#endif + +in vec2 v_textureCoordinates; + +void main() +{ +#ifdef DEBUG_SHOW_DEPTH + if (v_textureCoordinates.x < 0.5) + { + out_FragColor.rgb = vec3(czm_unpackDepth(texture(u_packedTranslucentDepth, v_textureCoordinates))); + out_FragColor.a = 1.0; + } +#else + vec4 color = texture(colorTexture, v_textureCoordinates); + +#ifdef PICK + if (color == vec4(0.0)) + { + discard; + } +#else + // Reverse premultiplication process to get the correct composited result of the classification primitives + color.rgb /= color.a; +#endif + out_FragColor = color; +#endif +} +`;var Ibt=!1;function hy(e){this._drawClassificationFBO=new Gi({createDepthAttachments:!1}),this._accumulationFBO=new Gi({createDepthAttachments:!1}),this._packFBO=new Gi,this._opaqueDepthStencilTexture=void 0,this._textureToComposite=void 0,this._translucentDepthStencilTexture=void 0,this._packDepthCommand=void 0,this._accumulateCommand=void 0,this._compositeCommand=void 0,this._copyCommand=void 0,this._clearColorCommand=new xi({color:new U(0,0,0,0),owner:this}),this._clearDepthStencilCommand=new xi({depth:1,stencil:0,owner:this}),this._supported=e.depthTexture,this._viewport=new Ke,this._rsDepth=void 0,this._rsAccumulate=void 0,this._rsComp=void 0,this._useScissorTest=void 0,this._scissorRectangle=void 0,this._hasTranslucentDepth=!1,this._frustumsDrawn=0}Object.defineProperties(hy.prototype,{hasTranslucentDepth:{get:function(){return this._hasTranslucentDepth}}});function BIe(e){e._textureToComposite=void 0,e._translucentDepthStencilTexture=e._translucentDepthStencilTexture&&!e._translucentDepthStencilTexture.isDestroyed()&&e._translucentDepthStencilTexture.destroy()}function wIe(e){e._drawClassificationFBO.destroy(),e._accumulationFBO.destroy(),e._packFBO.destroy()}function _bt(e,t,n,i){BIe(e),e._translucentDepthStencilTexture=new Wt({context:t,width:n,height:i,pixelFormat:tt.DEPTH_STENCIL,pixelDatatype:Ye.UNSIGNED_INT_24_8,sampler:sn.NEAREST})}function Ebt(e,t,n,i){wIe(e),e._drawClassificationFBO.setDepthStencilTexture(e._translucentDepthStencilTexture),e._drawClassificationFBO.update(t,n,i),e._accumulationFBO.setDepthStencilTexture(e._translucentDepthStencilTexture),e._accumulationFBO.update(t,n,i),e._packFBO.update(t,n,i)}function Tbt(e,t,n,i){if(!e.isSupported())return;e._opaqueDepthStencilTexture=i;let o=e._opaqueDepthStencilTexture.width,r=e._opaqueDepthStencilTexture.height;e._drawClassificationFBO.isDirty(o,r)&&(_bt(e,t,o,r),Ebt(e,t,o,r));let s,a;if(l(e._packDepthCommand)||(s=new Oe({sources:[fP]}),a={u_opaqueDepthTexture:function(){return e._opaqueDepthStencilTexture},u_translucentDepthTexture:function(){return e._translucentDepthStencilTexture}},e._packDepthCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),!l(e._compositeCommand)){s=new Oe({sources:[WI]}),a={colorTexture:function(){return e._textureToComposite}},Ibt&&(s.defines=["DEBUG_SHOW_DEPTH"],a.u_packedTranslucentDepth=function(){return e._packFBO.getColorTexture()}),e._compositeCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e});let u=e._compositeCommand,h=u.shaderProgram,p=t.shaderCache.createDerivedShaderProgram(h,"pick",{vertexShaderSource:h.vertexShaderSource,fragmentShaderSource:new Oe({sources:s.sources,defines:["PICK"]}),attributeLocations:h._attributeLocations}),g=ot.shallowClone(u);g.shaderProgram=p,u.derivedCommands.pick=g}l(e._copyCommand)||(s=new Oe({sources:[WI]}),a={colorTexture:function(){return e._drawClassificationFBO.getColorTexture()}},e._copyCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),l(e._accumulateCommand)||(s=new Oe({sources:[WI]}),a={colorTexture:function(){return e._drawClassificationFBO.getColorTexture()}},e._accumulateCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),e._viewport.width=o,e._viewport.height=r;let c=!Ke.equals(e._viewport,n.viewport),d=c!==e._useScissorTest;e._useScissorTest=c,Ke.equals(e._scissorRectangle,n.viewport)||(e._scissorRectangle=Ke.clone(n.viewport,e._scissorRectangle),d=!0),(!l(e._rsDepth)||!Ke.equals(e._viewport,e._rsDepth.viewport)||d)&&(e._rsDepth=Qe.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}})),l(e._packDepthCommand)&&(e._packDepthCommand.renderState=e._rsDepth),(!l(e._rsAccumulate)||!Ke.equals(e._viewport,e._rsAccumulate.viewport)||d)&&(e._rsAccumulate=Qe.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},stencilTest:{enabled:!0,frontFunction:ei.EQUAL,reference:jt.CESIUM_3D_TILE_MASK}})),l(e._accumulateCommand)&&(e._accumulateCommand.renderState=e._rsAccumulate),(!l(e._rsComp)||!Ke.equals(e._viewport,e._rsComp.viewport)||d)&&(e._rsComp=Qe.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},blending:bn.ALPHA_BLEND})),l(e._compositeCommand)&&(e._compositeCommand.renderState=e._rsComp,e._compositeCommand.derivedCommands.pick.renderState=e._rsComp)}hy.prototype.executeTranslucentCommands=function(e,t,n,i,o){let r=e.frameState.useLogDepth,s=e.context,a=n.framebuffer;for(let c=0;c<i.length;++c){let d=i[c];if(d=r?d.derivedCommands.logDepth.command:d,d.depthForTranslucentClassification){this._hasTranslucentDepth=!0;break}}if(this._hasTranslucentDepth){Tbt(this,s,n,o),n.framebuffer=this._drawClassificationFBO.framebuffer,this._clearDepthStencilCommand.execute(s,n);for(let c=0;c<i.length;++c){let d=i[c];if(d=r?d.derivedCommands.logDepth.command:d,!d.depthForTranslucentClassification)continue;let u=d.derivedCommands.depth.depthOnlyCommand;t(u,e,n)}this._frustumsDrawn+=this._hasTranslucentDepth?1:0,this._hasTranslucentDepth&&(n.framebuffer=this._packFBO.framebuffer,this._packDepthCommand.execute(s,n)),n.framebuffer=a}};hy.prototype.executeClassificationCommands=function(e,t,n,i){if(!this._hasTranslucentDepth)return;let o=e.context,r=o.uniformState,s=n.framebuffer;n.framebuffer=this._accumulationFBO.framebuffer,this._accumulateCommand.execute(o,n),n.framebuffer=this._drawClassificationFBO.framebuffer,this._frustumsDrawn>1&&this._clearColorCommand.execute(o,n),r.updatePass(Ge.CESIUM_3D_TILE_CLASSIFICATION);let a=r.globeDepthTexture;r.globeDepthTexture=this._packFBO.getColorTexture();let c=i.commands[Ge.CESIUM_3D_TILE_CLASSIFICATION],d=i.indices[Ge.CESIUM_3D_TILE_CLASSIFICATION];for(let u=0;u<d;++u)t(c[u],e,n);r.globeDepthTexture=a,n.framebuffer=s,this._frustumsDrawn!==1&&(n.framebuffer=this._accumulationFBO.framebuffer,this._accumulateCommand.execute(o,n),n.framebuffer=s)};hy.prototype.execute=function(e,t){if(!this._hasTranslucentDepth)return;this._frustumsDrawn===1?this._textureToComposite=this._drawClassificationFBO.getColorTexture():this._textureToComposite=this._accumulationFBO.getColorTexture(),(e.frameState.passes.pick?this._compositeCommand.derivedCommands.pick:this._compositeCommand).execute(e.context,t),Sbt(this,e,t)};function Sbt(e,t,n){if(!e._hasTranslucentDepth)return;let i=n.framebuffer;n.framebuffer=e._drawClassificationFBO.framebuffer,e._clearColorCommand.execute(t._context,n),n.framebuffer=i,e._frustumsDrawn>1&&(n.framebuffer=e._accumulationFBO.framebuffer,e._clearColorCommand.execute(t._context,n)),e._hasTranslucentDepth=!1,e._frustumsDrawn=0}hy.prototype.isSupported=function(){return this._supported};hy.prototype.isDestroyed=function(){return!1};hy.prototype.destroy=function(){return BIe(this),wIe(this),l(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),l(this._packDepthCommand)&&(this._packDepthCommand.shaderProgram=this._packDepthCommand.shaderProgram&&this._packDepthCommand.shaderProgram.destroy()),me(this)};var EM=hy;function Lbt(){this.command=void 0,this.near=void 0,this.far=void 0}function oY(e,t,n){let i=e.context,o;i.depthTexture&&(o=new gM);let r;e._useOIT&&i.depthTexture&&(r=new yM(i));let s=new Hc(i);s.viewport=Ke.clone(n),this.camera=t,this._cameraClone=xo.clone(t),this._cameraStartFired=!1,this._cameraMovedTime=void 0,this.viewport=n,this.passState=s,this.pickFramebuffer=new _M(i),this.pickDepthFramebuffer=new xM,this.sceneFramebuffer=new wI,this.globeDepth=o,this.globeTranslucencyFramebuffer=new bM,this.oit=r,this.translucentTileClassification=new EM(i),this.pickDepths=[],this.frustumCommandsList=[],this.debugFrustumStatistics=void 0,this._commandExtents=[]}var o6=new m,r6=new m;function Rbt(e,t,n){let i=Math.max(m.maximumComponent(m.abs(e.position,o6)),m.maximumComponent(m.abs(t.position,r6))),o=1/Math.max(1,i);return m.multiplyByScalar(e.position,o,o6),m.multiplyByScalar(t.position,o,r6),m.equalsEpsilon(o6,r6,n)&&m.equalsEpsilon(e.direction,t.direction,n)&&m.equalsEpsilon(e.up,t.up,n)&&m.equalsEpsilon(e.right,t.right,n)&&X.equalsEpsilon(e.transform,t.transform,n)&&e.frustum.equalsEpsilon(t.frustum,n)}oY.prototype.checkForCameraUpdates=function(e){let t=this.camera,n=this._cameraClone;return Rbt(t,n,Z.EPSILON15)?(this._cameraStartFired&&Fi()-this._cameraMovedTime>e.cameraEventWaitTime&&(t.moveEnd.raiseEvent(),this._cameraStartFired=!1),!1):(this._cameraStartFired||(t.moveStart.raiseEvent(),this._cameraStartFired=!0),this._cameraMovedTime=Fi(),xo.clone(t,n),!0)};function Vbt(e,t,n,i){let{frameState:o}=t,{camera:r,useLogDepth:s}=o,a=s?t.logarithmicDepthFarToNearRatio:t.farToNearRatio,c=t.mode===re.SCENE2D,d=t.nearToFarDistance2D;i*=1+Z.EPSILON2,n=Math.min(Math.max(n,r.frustum.near),r.frustum.far),i=Math.max(Math.min(i,r.frustum.far),n);let u;c?(i=Math.min(i,r.position.z+t.nearToFarDistance2D),n=Math.min(n,i),u=Math.ceil(Math.max(1,i-n)/t.nearToFarDistance2D)):u=Math.ceil(Math.log(i/n)/Math.log(a));let{frustumCommandsList:h}=e;h.length=u;for(let p=0;p<u;++p){let g,f;c?(g=Math.min(i-d,n+p*d),f=Math.min(i,g+d)):(g=Math.max(n,Math.pow(a,p)*n),f=Math.min(i,a*g));let b=h[p];l(b)?(b.near=g,b.far=f):b=h[p]=new AM(g,f)}}function Gbt(e,t,n){let{command:i,near:o,far:r}=n;t.debugShowFrustums&&(i.debugOverlappingFrustums=0);let{frustumCommandsList:s}=e;for(let a=0;a<s.length;++a){let c=s[a];if(o>c.far)continue;if(r<c.near)break;let d=i.pass,u=c.indices[d]++;if(c.commands[d][u]=i,t.debugShowFrustums&&(i.debugOverlappingFrustums|=1<<a),i.executeInClosestFrustum)break}if(t.debugShowFrustums){let{debugFrustumStatistics:a}=e,{debugOverlappingFrustums:c}=i,d=a.commandsInFrustums;d[c]=l(d[c])?d[c]+1:1,++a.totalCommands}t.updateDerivedCommands(i)}var XIe=new Xs,Zbt=new oc;oY.prototype.createPotentiallyVisibleSet=function(e){let{frameState:t}=e,{camera:n,commandList:i,shadowState:o}=t,{positionWC:r,directionWC:s,frustum:a}=n,c=e._computeCommandList,d=e._overlayCommandList;e.debugShowFrustums&&(this.debugFrustumStatistics={totalCommands:0,commandsInFrustums:{}});let u=this.frustumCommandsList;for(let F=0;F<u.length;++F)for(let P=0;P<Ge.NUMBER_OF_PASSES;++P)u[F].indices[P]=0;c.length=0,d.length=0;let h=this._commandExtents,p=h.length,g=0,f=+Number.MAX_VALUE,b=-Number.MAX_VALUE,{shadowsEnabled:x}=o,I=+Number.MAX_VALUE,_=-Number.MAX_VALUE,E=Number.MAX_VALUE,S=t.mode===re.SCENE3D?t.occluder:void 0,{cullingVolume:R}=t,G=XIe.planes;for(let F=0;F<5;++F)G[F]=R.planes[F];R=XIe;for(let F=0;F<i.length;++F){let P=i[F],{pass:A,boundingVolume:T}=P;if(A===Ge.COMPUTE)c.push(P);else if(A===Ge.OVERLAY)d.push(P);else{let L,V;if(l(T)){if(!e.isVisible(R,P,S))continue;let M=T.computePlaneDistances(r,s,Zbt);if(L=M.start,V=M.stop,f=Math.min(f,L),b=Math.max(b,V),x&&P.receiveShadows&&L<Hg.MAXIMUM_DISTANCE&&!(A===Ge.GLOBE&&L<-100&&V>100)){let Q=V-L;A!==Ge.GLOBE&&L<100&&(E=Math.min(E,Q)),I=Math.min(I,L),_=Math.max(_,V)}}else P instanceof xi?(L=a.near,V=a.far):(L=a.near,V=a.far,f=Math.min(f,L),b=Math.max(b,V));let W=h[g];l(W)||(W=h[g]=new Lbt),W.command=P,W.near=L,W.far=V,g++}}x&&(I=Math.min(Math.max(I,a.near),a.far),_=Math.max(Math.min(_,a.far),I),o.nearPlane=I,o.farPlane=_,o.closestObjectSize=E),Vbt(this,e,f,b);for(let F=0;F<g;F++)Gbt(this,e,h[F]);if(g<p)for(let F=g;F<p;F++){let P=h[F];if(!l(P.command))break;P.command=void 0}let B=u.length,{frustumSplits:w}=t;w.length=B+1;for(let F=0;F<B;++F)w[F]=u[F].near,F===B-1&&(w[F+1]=u[F].far)};oY.prototype.destroy=function(){this.pickFramebuffer=this.pickFramebuffer&&this.pickFramebuffer.destroy(),this.pickDepthFramebuffer=this.pickDepthFramebuffer&&this.pickDepthFramebuffer.destroy(),this.sceneFramebuffer=this.sceneFramebuffer&&this.sceneFramebuffer.destroy(),this.globeDepth=this.globeDepth&&this.globeDepth.destroy(),this.oit=this.oit&&this.oit.destroy(),this.translucentTileClassification=this.translucentTileClassification&&this.translucentTileClassification.destroy(),this.globeTranslucencyFramebuffer=this.globeTranslucencyFramebuffer&&this.globeTranslucencyFramebuffer.destroy();let e=this.pickDepths;for(let t=0;t<e.length;++t)e[t].destroy()};var FI=oY;var FIe=.1,Bbt=new vm({pass:zo.MOST_DETAILED_PRELOAD}),wbt=new vm({pass:zo.MOST_DETAILED_PICK}),TM=new vm({pass:zo.PICK});function Sa(e){this._mostDetailedRayPicks=[],this.pickRenderStateCache={},this._pickPositionCache={},this._pickPositionCacheDirty=!1;let t=new Ke(0,0,1,1),n=new xo(e);n.frustum=new gn({width:FIe,aspectRatio:1,near:.1}),this._pickOffscreenView=new FI(e,n,t)}Sa.prototype.update=function(){this._pickPositionCacheDirty=!0};Sa.prototype.getPickDepth=function(e,t){let n=e.view.pickDepths,i=n[t];return l(i)||(i=new pM,n[t]=i),i};var Xbt=new qr,Wbt=new m,rY=new m,Fbt=new D,Pbt=new X;function Mbt(e,t,n,i,o){let r=e.camera,s=r.frustum,a=s.offCenterFrustum;l(a)&&(s=a);let c=2*(t.x-o.x)/o.width-1;c*=(s.right-s.left)*.5;let d=2*(o.height-t.y-o.y)/o.height-1;d*=(s.top-s.bottom)*.5;let u=X.clone(r.transform,Pbt);r._setTransform(X.IDENTITY);let h=m.clone(r.position,Wbt);m.multiplyByScalar(r.right,c,rY),m.add(rY,h,h),m.multiplyByScalar(r.up,d,rY),m.add(rY,h,h),r._setTransform(u),e.mode===re.SCENE2D&&m.fromElements(h.z,h.x,h.y,h);let p=s.getPixelDimensions(o.width,o.height,1,1,Fbt),g=Xbt;return g.right=p.x*.5,g.left=-g.right,g.top=p.y*.5,g.bottom=-g.top,g.near=s.near,g.far=s.far,g.computeCullingVolume(h,r.directionWC,r.upWC)}var vbt=new vl,Nbt=new D;function Dbt(e,t,n,i,o){let r=e.camera,s=r.frustum,a=s.near,c=Math.tan(s.fovy*.5),d=s.aspectRatio*c,u=2*(t.x-o.x)/o.width-1,h=2*(o.height-t.y-o.y)/o.height-1,p=u*a*d,g=h*a*c,f=s.getPixelDimensions(o.width,o.height,1,1,Nbt),b=f.x*n*.5,x=f.y*i*.5,I=vbt;return I.top=g+x,I.bottom=g-x,I.right=p+b,I.left=p-b,I.near=a,I.far=s.far,I.computeCullingVolume(r.positionWC,r.directionWC,r.upWC)}function sY(e,t,n,i,o){let r=e.camera.frustum;return r instanceof gn||r instanceof qr?Mbt(e,t,n,i,o):Dbt(e,t,n,i,o)}var aY=new Ke(0,0,3,3),cY=new D,SM=new U(0,0,0,0);function s6(e,t,n,i,o){return o.width=n??3,o.height=i??o.width,o.x=t.x-(o.width-1)*.5,o.y=e-t.y-(o.height-1)*.5,o}Sa.prototype.pick=function(e,t,n,i){let{context:o,frameState:r,defaultView:s}=e,{viewport:a,pickFramebuffer:c}=s;e.view=s,a.x=0,a.y=0,a.width=o.drawingBufferWidth,a.height=o.drawingBufferHeight;let d=s.passState;d.viewport=Ke.clone(a,d.viewport);let u=to.transformWindowToDrawingBuffer(e,t,cY),h=s6(o.drawingBufferHeight,u,n,i,aY);e.jobScheduler.disableThisFrame(),e.updateFrameState(),r.cullingVolume=sY(e,u,h.width,h.height,a),r.invertClassification=!1,r.passes.pick=!0,r.tilesetPassState=TM,o.uniformState.update(r),e.updateEnvironment(),d=c.begin(h,a),e.updateAndExecuteCommands(d,SM),e.resolveFramebuffers(d);let p=c.end(h);return o.endFrame(),p};Sa.prototype.pickVoxelCoordinate=function(e,t,n,i){let{context:o,frameState:r,defaultView:s}=e,{viewport:a,pickFramebuffer:c}=s;e.view=s,a.x=0,a.y=0,a.width=o.drawingBufferWidth,a.height=o.drawingBufferHeight;let d=s.passState;d.viewport=Ke.clone(a,d.viewport);let u=to.transformWindowToDrawingBuffer(e,t,cY),h=s6(o.drawingBufferHeight,u,n,i,aY);e.jobScheduler.disableThisFrame(),e.updateFrameState(),r.cullingVolume=sY(e,u,h.width,h.height,a),r.invertClassification=!1,r.passes.pickVoxel=!0,r.tilesetPassState=TM,o.uniformState.update(r),e.updateEnvironment(),d=c.begin(h,a),e.updateAndExecuteCommands(d,SM),e.resolveFramebuffers(d);let p=c.readCenterPixel(h);return o.endFrame(),p};Sa.prototype.pickMetadata=function(e,t,n){let{context:i,frameState:o,defaultView:r}=e,{viewport:s,pickFramebuffer:a}=r;e.view=r,s.x=0,s.y=0,s.width=i.drawingBufferWidth,s.height=i.drawingBufferHeight;let c=r.passState;c.viewport=Ke.clone(s,c.viewport);let d=to.transformWindowToDrawingBuffer(e,t,cY),u=s6(i.drawingBufferHeight,d,1,1,aY);e.jobScheduler.disableThisFrame(),e.updateFrameState(),o.cullingVolume=sY(e,d,u.width,u.height,s),o.invertClassification=!1,o.passes.pick=!0,o.tilesetPassState=TM,o.pickingMetadata=!0,o.pickedMetadataInfo=n,i.uniformState.update(o),e.updateEnvironment(),c=a.begin(u,s),e.updateAndExecuteCommands(c,SM);let h=e._environmentState.useOIT;e._environmentState.useOIT=!1,e.resolveFramebuffers(c),e._environmentState.useOIT=h;let p=a.readCenterPixel(u);return i.endFrame(),o.pickingMetadata=!1,fM.decodeMetadataValues(n.classProperty,n.metadataProperty,p)};function Qbt(e,t){let{defaultView:n,context:i,frameState:o,environmentState:r}=e,{viewport:s,pickDepthFramebuffer:a}=n;e.view=n,s.x=0,s.y=0,s.width=i.drawingBufferWidth,s.height=i.drawingBufferHeight;let c=n.passState;c.viewport=Ke.clone(s,c.viewport),e.clearPasses(o.passes),o.passes.pick=!0,o.passes.depth=!0,o.cullingVolume=sY(e,t,1,1,s),o.tilesetPassState=TM,e.updateEnvironment(),r.renderTranslucentDepthForPick=!0,c=a.update(i,t,s),e.updateAndExecuteCommands(c,SM),e.resolveFramebuffers(c),i.endFrame()}var Ubt=new Ni,kbt=new vl,Ybt=new gn,Obt=new qr;Sa.prototype.pickPositionWorldCoordinates=function(e,t,n){if(!e.useDepthPicking)return;let i=t.toString();if(this._pickPositionCacheDirty)this._pickPositionCache={},this._pickPositionCacheDirty=!1;else if(this._pickPositionCache.hasOwnProperty(i))return m.clone(this._pickPositionCache[i],n);let{context:o,frameState:r,camera:s,defaultView:a}=e,{uniformState:c}=o;e.view=a;let d=to.transformWindowToDrawingBuffer(e,t,cY);e.pickTranslucentDepth?Qbt(e,d):(e.updateFrameState(),c.update(r),e.updateEnvironment()),d.y=e.drawingBufferHeight-d.y;let u;l(s.frustum.fov)?u=s.frustum.clone(Ubt):l(s.frustum.infiniteProjectionMatrix)?u=s.frustum.clone(kbt):l(s.frustum.width)?u=s.frustum.clone(Ybt):u=s.frustum.clone(Obt);let{frustumCommandsList:h}=a,p=h.length;for(let g=0;g<p;++g){let b=this.getPickDepth(e,g).getDepth(o,d.x,d.y);if(l(b)&&b>0&&b<1){let x=h[g],I;return e.mode===re.SCENE2D?(I=s.position.z,s.position.z=I-x.near+1,u.far=Math.max(1,x.far-x.near),u.near=1,c.update(r),c.updateFrustum(u)):(u.near=x.near*(g!==0?e.opaqueFrustumNearOffset:1),u.far=x.far,c.updateFrustum(u)),n=to.drawingBufferToWorldCoordinates(e,d,b,n),e.mode===re.SCENE2D&&(s.position.z=I,c.update(r)),this._pickPositionCache[i]=m.clone(n),n}}this._pickPositionCache[i]=void 0};var Hbt=new ge;Sa.prototype.pickPosition=function(e,t,n){if(n=this.pickPositionWorldCoordinates(e,t,n),l(n)&&e.mode!==re.SCENE3D){m.fromElements(n.y,n.z,n.x,n);let i=e.mapProjection,o=i.ellipsoid,r=i.unproject(n,Hbt);o.cartographicToCartesian(r,n)}return n};function PIe(e,t){let n,i,o=[],r=[],s=[],a=[];l(e)||(e=Number.MAX_VALUE);let c=t();for(;l(c);){let d=c.object,u=c.position,h=c.exclude;if(l(u)&&!l(d)){o.push(c);break}if(!l(d)||!l(d.primitive)||!h&&(o.push(c),0>=--e))break;let p=d.primitive,g=!1;typeof p.getGeometryInstanceAttributes=="function"&&l(d.id)&&(i=p.getGeometryInstanceAttributes(d.id),l(i)&&l(i.show)&&(g=!0,i.show=Vn.toValue(!1,i.show),s.push(i))),d instanceof ma&&(g=!0,d.show=!1,a.push(d)),g||(p.show=!1,r.push(p)),c=t()}for(n=0;n<r.length;++n)r[n].show=!0;for(n=0;n<s.length;++n)i=s[n],i.show=Vn.toValue(!0,i.show);for(n=0;n<a.length;++n)a[n].show=!0;return o}Sa.prototype.drillPick=function(e,t,n,i,o){let r=this;return PIe(n,function(){let c=r.pick(e,t,i,o);if(l(c))return{object:c,position:void 0,exclude:!1}}).map(function(c){return c.object})};var WIe=new m,zbt=new m;function Kbt(e,t,n){this.ray=e,this.width=t,this.tilesets=n,this.ready=!1;let i=this;this.promise=new Promise(o=>{i._completePick=()=>{o()}})}function MIe(e,t,n,i){let o=t.direction,r=m.mostOrthogonalAxis(o,WIe),s=m.cross(o,r,WIe),a=m.cross(o,s,zbt);return i.position=t.origin,i.direction=o,i.up=a,i.right=s,i.frustum.width=n??FIe,i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC)}function Jbt(e,t,n){let i=t.frameState,{ray:o,width:r,tilesets:s}=n,a=e._pickOffscreenView.camera,c=MIe(e,o,r,a),d=Bbt;d.camera=a,d.cullingVolume=c;let u=!0,h=s.length;for(let p=0;p<h;++p){let g=s[p];g.show&&t.primitives.contains(g)&&(g.updateForPass(i,d),u=u&&d.ready)}return u&&n._completePick(),u}Sa.prototype.updateMostDetailedRayPicks=function(e){let t=this._mostDetailedRayPicks;for(let n=0;n<t.length;++n)Jbt(this,e,t[n])&&t.splice(n--,1)};function vIe(e,t,n){for(let i=0;i<e.length;++i){let o=e.get(i);o.show&&(l(o.isCesium3DTileset)?(!l(t)||t.indexOf(o)===-1)&&n.push(o):o instanceof Wl&&vIe(o,t,n))}}function lY(e,t,n,i,o,r){let s=[];if(vIe(t.primitives,i,s),s.length===0)return Promise.resolve(r());let a=new Kbt(n,o,s);return e._mostDetailedRayPicks.push(a),a.promise.then(function(){return r()})}function jbt(e,t){return!l(e)||!l(t)||t.length===0?!1:t.indexOf(e)>-1||t.indexOf(e.primitive)>-1||t.indexOf(e.id)>-1}function qbt(e,t,n,i,o,r,s){let{context:a,frameState:c}=t,d=a.uniformState,u=e._pickOffscreenView;t.view=u,MIe(e,n,o,u.camera);let h=Ke.clone(u.viewport,aY),p=u.pickFramebuffer.begin(h,u.viewport);t.jobScheduler.disableThisFrame(),t.updateFrameState(),c.invertClassification=!1,c.passes.pick=!0,c.passes.offscreen=!0,s?c.tilesetPassState=wbt:c.tilesetPassState=TM,d.update(c),t.updateEnvironment(),t.updateAndExecuteCommands(p,SM),t.resolveFramebuffers(p);let g,f=u.pickFramebuffer.end(h);if(t.context.depthTexture){let{frustumCommandsList:b}=u,x=b.length;for(let I=0;I<x;++I){let E=e.getPickDepth(t,I).getDepth(a,0,0);if(l(E)&&E>0&&E<1){let S=b[I],R=S.near*(I!==0?t.opaqueFrustumNearOffset:1),G=S.far,B=R+E*(G-R);g=En.getPoint(n,B);break}}}if(t.view=t.defaultView,a.endFrame(),l(f)||l(g))return{object:f,position:g,exclude:!l(g)&&r||jbt(f,i)}}function NIe(e,t,n,i,o,r,s,a){return PIe(i,function(){return qbt(e,t,n,o,r,s,a)})}function hL(e,t,n,i,o,r,s){let a=NIe(e,t,n,1,i,o,r,s);if(a.length>0)return a[0]}function DIe(e,t,n,i,o,r,s,a){return NIe(e,t,n,i,o,r,s,a)}function dY(e,t){return new Promise((n,i)=>{t.then(function(o){let r=e.postRender.addEventListener(function(){r(),n(o)});e.requestRender()}).catch(function(o){i(o)})})}Sa.prototype.pickFromRay=function(e,t,n,i){return hL(this,e,t,n,i,!1,!1)};Sa.prototype.drillPickFromRay=function(e,t,n,i,o){return DIe(this,e,t,n,i,o,!1,!1)};Sa.prototype.pickFromRayMostDetailed=function(e,t,n,i){let o=this;return t=En.clone(t),n=l(n)?n.slice():n,dY(e,lY(o,e,t,n,i,function(){return hL(o,e,t,n,i,!1,!0)}))};Sa.prototype.drillPickFromRayMostDetailed=function(e,t,n,i,o){let r=this;return t=En.clone(t),i=l(i)?i.slice():i,dY(e,lY(r,e,t,i,o,function(){return DIe(r,e,t,n,i,o,!1,!0)}))};var $bt=new m,e0t=new m,t0t=new En,QIe=new ge;function a6(e,t){let n=e.ellipsoid,i=Si._defaultMaxTerrainHeight,o=n.geodeticSurfaceNormalCartographic(t,e0t),r=ge.toCartesian(t,n,$bt),s=t0t;s.origin=r,s.direction=o;let a=new En;return En.getPoint(s,i,a.origin),m.negate(o,a.direction),a}function UIe(e,t){let n=e.ellipsoid,i=ge.fromCartesian(t,n,QIe);return a6(e,i)}function kIe(e,t){let n=e.ellipsoid;return ge.fromCartesian(t,n,QIe).height}function n0t(e,t,n,i,o){let r=a6(t,n);return lY(e,t,r,i,o,function(){let s=hL(e,t,r,i,o,!0,!0);if(l(s))return kIe(t,s.position)})}function i0t(e,t,n,i,o,r){let s=UIe(t,n);return lY(e,t,s,i,o,function(){let a=hL(e,t,s,i,o,!0,!0);if(l(a))return m.clone(a.position,r)})}Sa.prototype.sampleHeight=function(e,t,n,i){let o=a6(e,t),r=hL(this,e,o,n,i,!0,!1);if(l(r))return kIe(e,r.position)};Sa.prototype.clampToHeight=function(e,t,n,i,o){let r=UIe(e,t),s=hL(this,e,r,n,i,!0,!1);if(l(s))return m.clone(s.position,o)};Sa.prototype.sampleHeightMostDetailed=function(e,t,n,i){n=l(n)?n.slice():n;let o=t.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=n0t(this,e,t[s],n,i);return dY(e,Promise.all(r).then(function(s){let a=s.length;for(let c=0;c<a;++c)t[c].height=s[c];return t}))};Sa.prototype.clampToHeightMostDetailed=function(e,t,n,i){n=l(n)?n.slice():n;let o=t.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=i0t(this,e,t[s],n,i,t[s]);return dY(e,Promise.all(r).then(function(s){let a=s.length;for(let c=0;c<a;++c)t[c]=s[c];return t}))};Sa.prototype.destroy=function(){this._pickOffscreenView=this._pickOffscreenView&&this._pickOffscreenView.destroy()};var LM=Sa;var $Yi=y(C(),1);var LYi=y(C(),1);var GUi=y(C(),1),RM=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; + +#ifdef AUTO_EXPOSURE + color /= texture(autoExposure, vec2(0.5)).r; +#else + color *= vec3(exposure); +#endif + color = czm_acesTonemapping(color); + color = czm_inverseGamma(color); + + out_FragColor = vec4(color, fragmentColor.a); +} +`;var BUi=y(C(),1),VM=`precision highp float; + +uniform sampler2D randomTexture; +uniform sampler2D depthTexture; +uniform float intensity; +uniform float bias; +uniform float lengthCap; +uniform int stepCount; +uniform int directionCount; + +vec4 pixelToEye(vec2 screenCoordinate) +{ + vec2 uv = screenCoordinate / czm_viewport.zw; + float depth = czm_readDepth(depthTexture, uv); + vec2 xy = 2.0 * uv - vec2(1.0); + vec4 posEC = czm_inverseProjection * vec4(xy, depth, 1.0); + posEC = posEC / posEC.w; + // Avoid numerical error at far plane + if (depth >= 1.0) { + posEC.z = czm_currentFrustum.y; + } + return posEC; +} + +// Reconstruct surface normal in eye coordinates, avoiding edges +vec3 getNormalXEdge(vec3 positionEC) +{ + // Find the 3D surface positions at adjacent screen pixels + vec2 centerCoord = gl_FragCoord.xy; + vec3 positionLeft = pixelToEye(centerCoord + vec2(-1.0, 0.0)).xyz; + vec3 positionRight = pixelToEye(centerCoord + vec2(1.0, 0.0)).xyz; + vec3 positionUp = pixelToEye(centerCoord + vec2(0.0, 1.0)).xyz; + vec3 positionDown = pixelToEye(centerCoord + vec2(0.0, -1.0)).xyz; + + // Compute potential tangent vectors + vec3 dx0 = positionEC - positionLeft; + vec3 dx1 = positionRight - positionEC; + vec3 dy0 = positionEC - positionDown; + vec3 dy1 = positionUp - positionEC; + + // The shorter tangent is more likely to be on the same surface + vec3 dx = length(dx0) < length(dx1) ? dx0 : dx1; + vec3 dy = length(dy0) < length(dy1) ? dy0 : dy1; + + return normalize(cross(dx, dy)); +} + +const float sqrtTwoPi = sqrt(czm_twoPi); + +float gaussian(float x, float standardDeviation) { + float argument = x / standardDeviation; + return exp(-0.5 * argument * argument) / (sqrtTwoPi * standardDeviation); +} + +void main(void) +{ + vec4 positionEC = pixelToEye(gl_FragCoord.xy); + + // Exit if we are too close to the back of the frustum, where the depth value is invalid. + float maxValidDepth = czm_currentFrustum.y - lengthCap; + if (-positionEC.z > maxValidDepth) + { + out_FragColor = vec4(1.0); + return; + } + + vec3 normalEC = getNormalXEdge(positionEC.xyz); + float gaussianVariance = lengthCap * sqrt(-positionEC.z); + // Choose a step length such that the marching stops just before 3 * variance. + float stepLength = 3.0 * gaussianVariance / (float(stepCount) + 1.0); + float metersPerPixel = czm_metersPerPixel(positionEC, 1.0); + // Minimum step is 1 pixel to avoid double sampling + float pixelsPerStep = max(stepLength / metersPerPixel, 1.0); + stepLength = pixelsPerStep * metersPerPixel; + + float angleStepScale = 1.0 / float(directionCount); + float angleStep = angleStepScale * czm_twoPi; + float cosStep = cos(angleStep); + float sinStep = sin(angleStep); + mat2 rotateStep = mat2(cosStep, sinStep, -sinStep, cosStep); + + // Initial sampling direction (different for each pixel) + const float randomTextureSize = 255.0; + vec2 randomTexCoord = fract(gl_FragCoord.xy / randomTextureSize); + float randomVal = texture(randomTexture, randomTexCoord).x; + vec2 sampleDirection = vec2(cos(angleStep * randomVal), sin(angleStep * randomVal)); + + float ao = 0.0; + // Loop over sampling directions +#if __VERSION__ == 300 + for (int i = 0; i < directionCount; i++) + { +#else + for (int i = 0; i < 16; i++) + { + if (i >= directionCount) { + break; + } +#endif + sampleDirection = rotateStep * sampleDirection; + + float localAO = 0.0; + vec2 radialStep = pixelsPerStep * sampleDirection; + +#if __VERSION__ == 300 + for (int j = 0; j < stepCount; j++) + { +#else + for (int j = 0; j < 64; j++) + { + if (j >= stepCount) { + break; + } +#endif + // Step along sampling direction, away from output pixel + vec2 samplePixel = floor(gl_FragCoord.xy + float(j + 1) * radialStep) + vec2(0.5); + + // Exit if we stepped off the screen + if (clamp(samplePixel, vec2(0.0), czm_viewport.zw) != samplePixel) { + break; + } + + // Compute step vector from output point to sampled point + vec4 samplePositionEC = pixelToEye(samplePixel); + vec3 stepVector = samplePositionEC.xyz - positionEC.xyz; + + // Estimate the angle from the surface normal. + float dotVal = clamp(dot(normalEC, normalize(stepVector)), 0.0, 1.0); + dotVal = czm_branchFreeTernary(dotVal > bias, dotVal, 0.0); + dotVal = czm_branchFreeTernary(-samplePositionEC.z <= maxValidDepth, dotVal, 0.0); + + // Weight contribution based on the distance from the output point + float sampleDistance = length(stepVector); + float weight = gaussian(sampleDistance, gaussianVariance); + localAO += weight * dotVal; + } + ao += localAO; + } + + ao *= angleStepScale * stepLength; + ao = 1.0 - clamp(ao, 0.0, 1.0); + ao = pow(ao, intensity); + out_FragColor = vec4(vec3(ao), 1.0); +} +`;var XUi=y(C(),1),GM=`uniform sampler2D colorTexture; +uniform sampler2D ambientOcclusionTexture; +uniform bool ambientOcclusionOnly; +in vec2 v_textureCoordinates; + +void main(void) +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + vec4 ao = texture(ambientOcclusionTexture, v_textureCoordinates); + out_FragColor = ambientOcclusionOnly ? ao : ao * color; +} +`;var FUi=y(C(),1),ZM=`uniform sampler2D colorTexture; +uniform float gradations; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb; +#ifdef CZM_SELECTED_FEATURE + if (czm_selected()) { + out_FragColor = vec4(rgb, 1.0); + return; + } +#endif + float luminance = czm_luminance(rgb); + float darkness = luminance * gradations; + darkness = (darkness - fract(darkness)) / gradations; + out_FragColor = vec4(vec3(darkness), 1.0); +} +`;var MUi=y(C(),1),BM=`uniform sampler2D colorTexture; +uniform sampler2D bloomTexture; +uniform bool glowOnly; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + +#ifdef CZM_SELECTED_FEATURE + if (czm_selected()) { + out_FragColor = color; + return; + } +#endif + + vec4 bloom = texture(bloomTexture, v_textureCoordinates); + out_FragColor = glowOnly ? bloom : bloom + color; +} +`;var NUi=y(C(),1),wM=`uniform sampler2D colorTexture; +uniform float brightness; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb; + vec3 target = vec3(0.0); + out_FragColor = vec4(mix(target, rgb, brightness), 1.0); +} +`;var QUi=y(C(),1),XM=`uniform sampler2D colorTexture; +uniform float contrast; +uniform float brightness; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec3 sceneColor = texture(colorTexture, v_textureCoordinates).xyz; + sceneColor = czm_RGBToHSB(sceneColor); + sceneColor.z += brightness; + sceneColor = czm_HSBToRGB(sceneColor); + + float factor = (259.0 * (contrast + 255.0)) / (255.0 * (259.0 - contrast)); + sceneColor = factor * (sceneColor - vec3(0.5)) + vec3(0.5); + out_FragColor = vec4(sceneColor, 1.0); +} +`;var kUi=y(C(),1),WM=`uniform sampler2D colorTexture; +uniform sampler2D blurTexture; +uniform sampler2D depthTexture; +uniform float focalDistance; + +in vec2 v_textureCoordinates; + +vec4 toEye(vec2 uv, float depth) +{ + vec2 xy = vec2((uv.x * 2.0 - 1.0), ((1.0 - uv.y) * 2.0 - 1.0)); + vec4 posInCamera = czm_inverseProjection * vec4(xy, depth, 1.0); + posInCamera = posInCamera / posInCamera.w; + return posInCamera; +} + +float computeDepthBlur(float depth) +{ + float f; + if (depth < focalDistance) + { + f = (focalDistance - depth) / (focalDistance - czm_currentFrustum.x); + } + else + { + f = (depth - focalDistance) / (czm_currentFrustum.y - focalDistance); + f = pow(f, 0.1); + } + f *= f; + f = clamp(f, 0.0, 1.0); + return pow(f, 0.5); +} + +void main(void) +{ + float depth = czm_readDepth(depthTexture, v_textureCoordinates); + vec4 posInCamera = toEye(v_textureCoordinates, depth); + float d = computeDepthBlur(-posInCamera.z); + out_FragColor = mix(texture(colorTexture, v_textureCoordinates), texture(blurTexture, v_textureCoordinates), d); +} +`;var OUi=y(C(),1),FM=`uniform sampler2D depthTexture; + +in vec2 v_textureCoordinates; + +void main(void) +{ + float depth = czm_readDepth(depthTexture, v_textureCoordinates); + out_FragColor = vec4(vec3(depth), 1.0); +} +`;var zUi=y(C(),1),PM=`uniform sampler2D depthTexture; +uniform float length; +uniform vec4 color; + +in vec2 v_textureCoordinates; + +void main(void) +{ + float directions[3]; + directions[0] = -1.0; + directions[1] = 0.0; + directions[2] = 1.0; + + float scalars[3]; + scalars[0] = 3.0; + scalars[1] = 10.0; + scalars[2] = 3.0; + + float padx = czm_pixelRatio / czm_viewport.z; + float pady = czm_pixelRatio / czm_viewport.w; + +#ifdef CZM_SELECTED_FEATURE + bool selected = false; + for (int i = 0; i < 3; ++i) + { + float dir = directions[i]; + selected = selected || czm_selected(vec2(-padx, dir * pady)); + selected = selected || czm_selected(vec2(padx, dir * pady)); + selected = selected || czm_selected(vec2(dir * padx, -pady)); + selected = selected || czm_selected(vec2(dir * padx, pady)); + if (selected) + { + break; + } + } + if (!selected) + { + out_FragColor = vec4(color.rgb, 0.0); + return; + } +#endif + + float horizEdge = 0.0; + float vertEdge = 0.0; + + for (int i = 0; i < 3; ++i) + { + float dir = directions[i]; + float scale = scalars[i]; + + horizEdge -= texture(depthTexture, v_textureCoordinates + vec2(-padx, dir * pady)).x * scale; + horizEdge += texture(depthTexture, v_textureCoordinates + vec2(padx, dir * pady)).x * scale; + + vertEdge -= texture(depthTexture, v_textureCoordinates + vec2(dir * padx, -pady)).x * scale; + vertEdge += texture(depthTexture, v_textureCoordinates + vec2(dir * padx, pady)).x * scale; + } + + float len = sqrt(horizEdge * horizEdge + vertEdge * vertEdge); + out_FragColor = vec4(color.rgb, len > length ? color.a : 0.0); +} +`;var JUi=y(C(),1),MM=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +// See slides 142 and 143: +// http://www.gdcvault.com/play/1012459/Uncharted_2__HDR_Lighting + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; + +#ifdef AUTO_EXPOSURE + float exposure = texture(autoExposure, vec2(0.5)).r; + color /= exposure; +#else + color *= vec3(exposure); +#endif + + const float A = 0.22; // shoulder strength + const float B = 0.30; // linear strength + const float C = 0.10; // linear angle + const float D = 0.20; // toe strength + const float E = 0.01; // toe numerator + const float F = 0.30; // toe denominator + + const float white = 11.2; // linear white point value + + vec3 c = ((color * (A * color + C * B) + D * E) / (color * ( A * color + B) + D * F)) - E / F; + float w = ((white * (A * white + C * B) + D * E) / (white * ( A * white + B) + D * F)) - E / F; + + c = czm_inverseGamma(c / w); + out_FragColor = vec4(c, fragmentColor.a); +} +`;var qUi=y(C(),1),vM=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; + +#ifdef AUTO_EXPOSURE + color /= texture(autoExposure, vec2(0.5)).r; +#else + color *= vec3(exposure); +#endif + color = czm_pbrNeutralTonemapping(color); + color = czm_inverseGamma(color); + + out_FragColor = vec4(color, fragmentColor.a); +} +`;var eki=y(C(),1),NM=`in vec2 v_textureCoordinates; + +uniform sampler2D colorTexture; + +const float fxaaQualitySubpix = 0.5; +const float fxaaQualityEdgeThreshold = 0.125; +const float fxaaQualityEdgeThresholdMin = 0.0833; + +void main() +{ + vec2 fxaaQualityRcpFrame = vec2(1.0) / czm_viewport.zw; + vec4 color = FxaaPixelShader( + v_textureCoordinates, + colorTexture, + fxaaQualityRcpFrame, + fxaaQualitySubpix, + fxaaQualityEdgeThreshold, + fxaaQualityEdgeThresholdMin); + float alpha = texture(colorTexture, v_textureCoordinates).a; + out_FragColor = vec4(color.rgb, alpha); +} +`;var nki=y(C(),1),fy=`#define SAMPLES 8 + +uniform float delta; +uniform float sigma; +uniform float direction; // 0.0 for x direction, 1.0 for y direction + +uniform sampler2D colorTexture; + +#ifdef USE_STEP_SIZE +uniform float stepSize; +#else +uniform vec2 step; +#endif + +in vec2 v_textureCoordinates; + +// Incremental Computation of the Gaussian: +// https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch40.html + +void main() +{ + vec2 st = v_textureCoordinates; + vec2 dir = vec2(1.0 - direction, direction); + +#ifdef USE_STEP_SIZE + vec2 step = vec2(stepSize * (czm_pixelRatio / czm_viewport.zw)); +#else + vec2 step = step; +#endif + + vec3 g; + g.x = 1.0 / (sqrt(czm_twoPi) * sigma); + g.y = exp((-0.5 * delta * delta) / (sigma * sigma)); + g.z = g.y * g.y; + + vec4 result = texture(colorTexture, st) * g.x; + for (int i = 1; i < SAMPLES; ++i) + { + g.xy *= g.yz; + + vec2 offset = float(i) * dir * step; + result += texture(colorTexture, st - offset) * g.x; + result += texture(colorTexture, st + offset) * g.x; + } + + out_FragColor = result; +} +`;var oki=y(C(),1),DM=`uniform sampler2D colorTexture; +uniform sampler2D dirtTexture; +uniform sampler2D starTexture; +uniform vec2 dirtTextureDimensions; +uniform float distortion; +uniform float ghostDispersal; +uniform float haloWidth; +uniform float dirtAmount; +uniform float earthRadius; +uniform float intensity; + +in vec2 v_textureCoordinates; + +// whether it is in space or not +// 6500000.0 is empirical value +#define DISTANCE_TO_SPACE 6500000.0 + +// return ndc from world coordinate biased earthRadius +vec4 getNDCFromWC(vec3 WC, float earthRadius) +{ + vec4 positionEC = czm_view * vec4(WC, 1.0); + positionEC = vec4(positionEC.x + earthRadius, positionEC.y, positionEC.z, 1.0); + vec4 positionWC = czm_eyeToWindowCoordinates(positionEC); + return czm_viewportOrthographic * vec4(positionWC.xy, -positionWC.z, 1.0); +} + +// Check if current pixel is included Earth +// if then mask it gradually +float isInEarth(vec2 texcoord, vec2 sceneSize) +{ + vec2 NDC = texcoord * 2.0 - 1.0; + vec4 earthPosSC = getNDCFromWC(vec3(0.0), 0.0); + vec4 earthPosSCEdge = getNDCFromWC(vec3(0.0), earthRadius * 1.5); + NDC.xy -= earthPosSC.xy; + + float X = abs(NDC.x) * sceneSize.x; + float Y = abs(NDC.y) * sceneSize.y; + + return clamp(0.0, 1.0, max(sqrt(X * X + Y * Y) / max(abs(earthPosSCEdge.x * sceneSize.x), 1.0) - 0.8 , 0.0)); +} + +// For Chromatic effect +vec4 textureDistorted(sampler2D tex, vec2 texcoord, vec2 direction, vec3 distortion, bool isSpace) +{ + vec2 sceneSize = czm_viewport.zw; + vec3 color; + if(isSpace) + { + color.r = isInEarth(texcoord + direction * distortion.r, sceneSize) * texture(tex, texcoord + direction * distortion.r).r; + color.g = isInEarth(texcoord + direction * distortion.g, sceneSize) * texture(tex, texcoord + direction * distortion.g).g; + color.b = isInEarth(texcoord + direction * distortion.b, sceneSize) * texture(tex, texcoord + direction * distortion.b).b; + } + else + { + color.r = texture(tex, texcoord + direction * distortion.r).r; + color.g = texture(tex, texcoord + direction * distortion.g).g; + color.b = texture(tex, texcoord + direction * distortion.b).b; + } + return vec4(clamp(color, 0.0, 1.0), 0.0); +} + +void main(void) +{ + vec4 originalColor = texture(colorTexture, v_textureCoordinates); + vec3 rgb = originalColor.rgb; + bool isSpace = length(czm_viewerPositionWC.xyz) > DISTANCE_TO_SPACE; + + // Sun position + vec4 sunPos = czm_morphTime == 1.0 ? vec4(czm_sunPositionWC, 1.0) : vec4(czm_sunPositionColumbusView.zxy, 1.0); + vec4 sunPositionEC = czm_view * sunPos; + vec4 sunPositionWC = czm_eyeToWindowCoordinates(sunPositionEC); + sunPos = czm_viewportOrthographic * vec4(sunPositionWC.xy, -sunPositionWC.z, 1.0); + + // If sun is not in the screen space, use original color. + if(!isSpace || !((sunPos.x >= -1.1 && sunPos.x <= 1.1) && (sunPos.y >= -1.1 && sunPos.y <= 1.1))) + { + // Lens flare is disabled when not in space until #5932 is fixed. + // https://github.com/CesiumGS/cesium/issues/5932 + out_FragColor = originalColor; + return; + } + + vec2 texcoord = vec2(1.0) - v_textureCoordinates; + vec2 pixelSize = czm_pixelRatio / czm_viewport.zw; + vec2 invPixelSize = 1.0 / pixelSize; + vec3 distortionVec = pixelSize.x * vec3(-distortion, 0.0, distortion); + + // ghost vector to image centre: + vec2 ghostVec = (vec2(0.5) - texcoord) * ghostDispersal; + vec3 direction = normalize(vec3(ghostVec, 0.0)); + + // sample ghosts: + vec4 result = vec4(0.0); + vec4 ghost = vec4(0.0); + for (int i = 0; i < 4; ++i) + { + vec2 offset = fract(texcoord + ghostVec * float(i)); + // Only bright spots from the centre of the source image + ghost += textureDistorted(colorTexture, offset, direction.xy, distortionVec, isSpace); + } + result += ghost; + + // sample halo + vec2 haloVec = normalize(ghostVec) * haloWidth; + float weightForHalo = length(vec2(0.5) - fract(texcoord + haloVec)) / length(vec2(0.5)); + weightForHalo = pow(1.0 - weightForHalo, 5.0); + + result += textureDistorted(colorTexture, texcoord + haloVec, direction.xy, distortionVec, isSpace) * weightForHalo * 1.5; + + // dirt on lens + vec2 dirtTexCoords = (v_textureCoordinates * invPixelSize) / dirtTextureDimensions; + if (dirtTexCoords.x > 1.0) + { + dirtTexCoords.x = mod(floor(dirtTexCoords.x), 2.0) == 1.0 ? 1.0 - fract(dirtTexCoords.x) : fract(dirtTexCoords.x); + } + if (dirtTexCoords.y > 1.0) + { + dirtTexCoords.y = mod(floor(dirtTexCoords.y), 2.0) == 1.0 ? 1.0 - fract(dirtTexCoords.y) : fract(dirtTexCoords.y); + } + result += dirtAmount * texture(dirtTexture, dirtTexCoords); + + // Rotating starburst texture's coordinate + // dot(czm_view[0].xyz, vec3(0.0, 0.0, 1.0)) + dot(czm_view[1].xyz, vec3(0.0, 1.0, 0.0)) + float camrot = czm_view[0].z + czm_view[1].y; + float cosValue = cos(camrot); + float sinValue = sin(camrot); + mat3 rotation = mat3( + cosValue, -sinValue, 0.0, + sinValue, cosValue, 0.0, + 0.0, 0.0, 1.0 + ); + + vec3 st1 = vec3(v_textureCoordinates * 2.0 - vec2(1.0), 1.0); + vec3 st2 = vec3((rotation * st1).xy, 1.0); + vec3 st3 = st2 * 0.5 + vec3(0.5); + vec2 lensStarTexcoord = st3.xy; + float weightForLensFlare = length(vec3(sunPos.xy, 0.0)); + float oneMinusWeightForLensFlare = max(1.0 - weightForLensFlare, 0.0); + + if (!isSpace) + { + result *= oneMinusWeightForLensFlare * intensity * 0.2; + } + else + { + result *= oneMinusWeightForLensFlare * intensity; + result *= texture(starTexture, lensStarTexcoord) * pow(weightForLensFlare, 1.0) * max((1.0 - length(vec3(st1.xy, 0.0))), 0.0) * 2.0; + } + + result += texture(colorTexture, v_textureCoordinates); + + out_FragColor = result; +} +`;var ski=y(C(),1),QM=`uniform sampler2D colorTexture; +uniform vec3 white; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +// See equation 4: +// http://www.cs.utah.edu/~reinhard/cdrom/tonemap.pdf + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; +#ifdef AUTO_EXPOSURE + float exposure = texture(autoExposure, vec2(0.5)).r; + color /= exposure; +#else + color *= vec3(exposure); +#endif + color = (color * (1.0 + color / white)) / (1.0 + color); + color = czm_inverseGamma(color); + out_FragColor = vec4(color, fragmentColor.a); +} +`;var cki=y(C(),1),UM=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +float rand(vec2 co) +{ + return fract(sin(dot(co.xy ,vec2(12.9898, 78.233))) * 43758.5453); +} + +void main(void) +{ + float noiseValue = rand(v_textureCoordinates + sin(czm_frameNumber)) * 0.1; + vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb; + vec3 green = vec3(0.0, 1.0, 0.0); + out_FragColor = vec4((noiseValue + rgb) * green, 1.0); +} +`;var dki=y(C(),1),kM=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +// See equation 3: +// http://www.cs.utah.edu/~reinhard/cdrom/tonemap.pdf + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; +#ifdef AUTO_EXPOSURE + float exposure = texture(autoExposure, vec2(0.5)).r; + color /= exposure; +#else + color *= vec3(exposure); +#endif + color = color / (1.0 + color); + color = czm_inverseGamma(color); + out_FragColor = vec4(color, fragmentColor.a); +} +`;var mki=y(C(),1),YM=`uniform sampler2D colorTexture; +uniform sampler2D silhouetteTexture; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec4 silhouetteColor = texture(silhouetteTexture, v_textureCoordinates); + vec4 color = texture(colorTexture, v_textureCoordinates); + out_FragColor = mix(color, silhouetteColor, silhouetteColor.a); +} +`;var xki=y(C(),1);function PI(){this._uniformMap=void 0,this._command=void 0,this._colorTexture=void 0,this._depthTexture=void 0,this._ready=!1,this._name="czm_autoexposure",this._logDepthChanged=void 0,this._useLogDepth=void 0,this._framebuffers=void 0,this._previousLuminance=new Gi,this._commands=void 0,this._clearCommand=void 0,this._minMaxLuminance=new D,this.enabled=!0,this._enabled=!0,this.minimumLuminance=.1,this.maximumLuminance=10}Object.defineProperties(PI.prototype,{ready:{get:function(){return this._ready}},name:{get:function(){return this._name}},outputTexture:{get:function(){let e=this._framebuffers;if(l(e))return e[e.length-1].getColorTexture(0)}}});function YIe(e){let t=e._framebuffers;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].destroy();e._framebuffers=void 0,e._previousLuminance.destroy(),e._previousLuminance=void 0}function o0t(e,t){YIe(e);let n=e._width,i=e._height,o=t.halfFloatingPointTexture?Ye.HALF_FLOAT:Ye.FLOAT,r=Math.ceil(Math.log(Math.max(n,i))/Math.log(3)),s=new Array(r);for(let c=0;c<r;++c)n=Math.max(Math.ceil(n/3),1),i=Math.max(Math.ceil(i/3),1),s[c]=new Gi,s[c].update(t,n,i,1,o);let a=s[r-1].getColorTexture(0);e._previousLuminance.update(t,a.width,a.height,1,o),e._framebuffers=s}function OIe(e){let t=e._commands;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].shaderProgram.destroy();e._commands=void 0}function r0t(e,t){let n;if(t===0)n={colorTexture:function(){return e._colorTexture},colorTextureDimensions:function(){return e._colorTexture.dimensions}};else{let i=e._framebuffers[t-1].getColorTexture(0);n={colorTexture:function(){return i},colorTextureDimensions:function(){return i.dimensions}}}return n.minMaxLuminance=function(){return e._minMaxLuminance},n.previousLuminance=function(){return e._previousLuminance.getColorTexture(0)},n}function s0t(e,t){let n=`uniform sampler2D colorTexture; +in vec2 v_textureCoordinates; +float sampleTexture(vec2 offset) { +`;return e===0?n+=` vec4 color = texture(colorTexture, v_textureCoordinates + offset); + return czm_luminance(color.rgb); +`:n+=` return texture(colorTexture, v_textureCoordinates + offset).r; +`,n+=`} + +`,n+=`uniform vec2 colorTextureDimensions; +uniform vec2 minMaxLuminance; +uniform sampler2D previousLuminance; +void main() { + float color = 0.0; + float xStep = 1.0 / colorTextureDimensions.x; + float yStep = 1.0 / colorTextureDimensions.y; + int count = 0; + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + vec2 offset; + offset.x = -xStep + float(i) * xStep; + offset.y = -yStep + float(j) * yStep; + if (offset.x < 0.0 || offset.x > 1.0 || offset.y < 0.0 || offset.y > 1.0) { + continue; + } + color += sampleTexture(offset); + ++count; + } + } + if (count > 0) { + color /= float(count); + } +`,e===t-1&&(n+=` float previous = texture(previousLuminance, vec2(0.5)).r; + color = clamp(color, minMaxLuminance.x, minMaxLuminance.y); + color = previous + (color - previous) / (60.0 * 1.5); + color = clamp(color, minMaxLuminance.x, minMaxLuminance.y); +`),n+=` out_FragColor = vec4(color); +} +`,n}function a0t(e,t){OIe(e);let n=e._framebuffers,i=n.length,o=new Array(i);for(let r=0;r<i;++r)o[r]=t.createViewportQuadCommand(s0t(r,i),{framebuffer:n[r].framebuffer,uniformMap:r0t(e,r)});e._commands=o}PI.prototype.clear=function(e){let t=this._framebuffers;if(!l(t))return;let n=this._clearCommand;l(n)||(n=this._clearCommand=new xi({color:new U(0,0,0,0),framebuffer:void 0}));let i=t.length;for(let o=0;o<i;++o)t[o].clear(e,n)};PI.prototype.update=function(e){let t=e.drawingBufferWidth,n=e.drawingBufferHeight;(t!==this._width||n!==this._height)&&(this._width=t,this._height=n,o0t(this,e),a0t(this,e),this._ready||(this._ready=!0)),this._minMaxLuminance.x=this.minimumLuminance,this._minMaxLuminance.y=this.maximumLuminance;let i=this._framebuffers,o=i[i.length-1];i[i.length-1]=this._previousLuminance,this._commands[this._commands.length-1].framebuffer=this._previousLuminance.framebuffer,this._previousLuminance=o};PI.prototype.execute=function(e,t){this._colorTexture=t;let n=this._commands;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o)n[o].execute(e)};PI.prototype.isDestroyed=function(){return!1};PI.prototype.destroy=function(){return YIe(this),OIe(this),me(this)};var OM=PI;var kki=y(C(),1);var _ki=y(C(),1),c0t={NEAREST:0,LINEAR:1},_u=c0t;function MI(e){e=e??Y.EMPTY_OBJECT;let{name:t=qn(),fragmentShader:n,uniforms:i,textureScale:o=1,forcePowerOfTwo:r=!1,sampleMode:s=_u.NEAREST,pixelFormat:a=tt.RGBA,pixelDatatype:c=Ye.UNSIGNED_BYTE,clearColor:d=U.BLACK,scissorRectangle:u}=e;this._fragmentShader=n,this._uniforms=i,this._textureScale=o,this._forcePowerOfTwo=r,this._sampleMode=s,this._pixelFormat=a,this._pixelDatatype=c,this._clearColor=d,this._uniformMap=void 0,this._command=void 0,this._colorTexture=void 0,this._depthTexture=void 0,this._idTexture=void 0,this._actualUniforms={},this._dirtyUniforms=[],this._texturesToRelease=[],this._texturesToCreate=[],this._texturePromise=void 0;let h=new Hc;h.scissorTest={enabled:!0,rectangle:l(u)?Ke.clone(u):new Ke},this._passState=h,this._ready=!1,this._name=t,this._logDepthChanged=void 0,this._useLogDepth=void 0,this._selectedIdTexture=void 0,this._selected=void 0,this._selectedShadow=void 0,this._parentSelected=void 0,this._parentSelectedShadow=void 0,this._combinedSelected=void 0,this._combinedSelectedShadow=void 0,this._selectedLength=0,this._parentSelectedLength=0,this._selectedDirty=!0,this._textureCache=void 0,this._index=void 0,this.enabled=!0,this._enabled=!0}Object.defineProperties(MI.prototype,{ready:{get:function(){return this._ready}},name:{get:function(){return this._name}},fragmentShader:{get:function(){return this._fragmentShader}},uniforms:{get:function(){return this._uniforms}},textureScale:{get:function(){return this._textureScale}},forcePowerOfTwo:{get:function(){return this._forcePowerOfTwo}},sampleMode:{get:function(){return this._sampleMode}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},clearColor:{get:function(){return this._clearColor}},scissorRectangle:{get:function(){return this._passState.scissorTest.rectangle}},outputTexture:{get:function(){if(l(this._textureCache)){let e=this._textureCache.getFramebuffer(this._name);if(l(e))return e.getColorTexture(0)}}},selected:{get:function(){return this._selected},set:function(e){this._selected=e}},parentSelected:{get:function(){return this._parentSelected},set:function(e){this._parentSelected=e}}});var l0t=/uniform\s+sampler2D\s+depthTexture/g;MI.prototype._isSupported=function(e){return!l0t.test(this._fragmentShader)||e.depthTexture};function d0t(e,t,n){let i=t[n];return(typeof i=="string"||i instanceof HTMLCanvasElement||i instanceof HTMLImageElement||i instanceof HTMLVideoElement||i instanceof ImageData)&&e._dirtyUniforms.push(n),{get:function(){return t[n]},set:function(o){let r=t[n];t[n]=o;let s=e._actualUniforms,a=s[n];l(a)&&a!==r&&a instanceof Wt&&!l(e._textureCache.getStageByName(n))&&(e._texturesToRelease.push(a),delete s[n],delete s[`${n}Dimensions`]),r instanceof Wt&&e._texturesToRelease.push(r),typeof o=="string"||o instanceof HTMLCanvasElement||o instanceof HTMLImageElement||o instanceof HTMLVideoElement||o instanceof ImageData?e._dirtyUniforms.push(n):s[n]=o}}}function u0t(e,t){return function(){let n=e._actualUniforms[t];return typeof n=="function"?n():n}}function m0t(e,t){return function(){let n=e[t]();if(l(n))return n.dimensions}}function h0t(e){if(l(e._uniformMap))return;let t={},n={},i=e._uniforms,o=e._actualUniforms;for(let r in i){if(!i.hasOwnProperty(r))continue;typeof i[r]!="function"?(t[r]=u0t(e,r),n[r]=d0t(e,i,r)):(t[r]=i[r],n[r]=i[r]),o[r]=i[r];let s=t[r]();(typeof s=="string"||s instanceof Wt||s instanceof HTMLImageElement||s instanceof HTMLCanvasElement||s instanceof HTMLVideoElement)&&(t[`${r}Dimensions`]=m0t(t,r))}e._uniforms={},Object.defineProperties(e._uniforms,n),e._uniformMap=Lt(t,{colorTexture:function(){return e._colorTexture},colorTextureDimensions:function(){return e._colorTexture.dimensions},depthTexture:function(){return e._depthTexture},depthTextureDimensions:function(){return e._depthTexture.dimensions},czm_idTexture:function(){return e._idTexture},czm_selectedIdTexture:function(){return e._selectedIdTexture},czm_selectedIdTextureStep:function(){return 1/e._selectedIdTexture.width}})}function f0t(e,t){return e=e.replace(/in\s+vec2\s+v_textureCoordinates;/g,""),`#define CZM_SELECTED_FEATURE +uniform sampler2D czm_idTexture; +uniform sampler2D czm_selectedIdTexture; +uniform float czm_selectedIdTextureStep; +in vec2 v_textureCoordinates; +bool czm_selected(vec2 offset) +{ + bool selected = false; + vec4 id = texture(czm_idTexture, v_textureCoordinates + offset); + for (int i = 0; i < ${t}; ++i) + { + vec4 selectedId = texture(czm_selectedIdTexture, vec2((float(i) + 0.5) * czm_selectedIdTextureStep, 0.5)); + if (all(equal(id, selectedId))) + { + return true; + } + } + return false; +} +bool czm_selected() +{ + return czm_selected(vec2(0.0)); +} + +${e}`}function p0t(e,t){if(l(e._command)&&!e._logDepthChanged&&!e._selectedDirty)return;let n=e._fragmentShader;if(l(e._selectedIdTexture)){let o=e._selectedIdTexture.width;n=f0t(n,o)}let i=new Oe({defines:[e._useLogDepth?"LOG_DEPTH":""],sources:[n]});e._command=t.createViewportQuadCommand(i,{uniformMap:e._uniformMap,owner:e})}function A0t(e){let t=e._sampleMode,n,i;t===_u.LINEAR?(n=en.LINEAR,i=pi.LINEAR):(n=en.NEAREST,i=pi.NEAREST);let o=e._sampler;(!l(o)||o.minificationFilter!==n||o.magnificationFilter!==i)&&(e._sampler=new sn({wrapS:Ln.CLAMP_TO_EDGE,wrapT:Ln.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i}))}function g0t(e,t){return function(n){e._texturesToCreate.push({name:t,source:n})}}function b0t(e,t){return function(){return e._textureCache.getOutputTexture(t)}}function y0t(e,t){let n=e._texturesToRelease;for(let a=0;a<n.length;++a){let c=n[a];c=c&&c.destroy()}n.length=0;let i=e._texturesToCreate;for(let a=0;a<i.length;++a){let{name:c,source:d}=i[a];e._actualUniforms[c]=new Wt({context:t,source:d})}i.length=0;let o=e._dirtyUniforms;if(o.length===0&&!l(e._texturePromise)){e._ready=!0;return}if(o.length===0||l(e._texturePromise))return;let r=e._uniforms,s=[];for(let a=0;a<o.length;++a){let c=o[a],d=r[c],u=e._textureCache.getStageByName(d);if(l(u))e._actualUniforms[c]=b0t(e,d);else if(typeof d=="string"){let h=new Ve({url:d});s.push(h.fetchImage().then(g0t(e,c)))}else e._texturesToCreate.push({name:c,source:d})}o.length=0,s.length>0?(e._ready=!1,e._texturePromise=Promise.all(s).then(function(){e._ready=!0,e._texturePromise=void 0})):e._ready=!0}function HIe(e){l(e._command)&&(e._command.shaderProgram=e._command.shaderProgram&&e._command.shaderProgram.destroy(),e._command=void 0),e._selectedIdTexture=e._selectedIdTexture&&e._selectedIdTexture.destroy();let t=e._textureCache;if(!l(t))return;let n=e._uniforms,i=e._actualUniforms;for(let o in i){if(!i.hasOwnProperty(o))continue;let r=i[o];r instanceof Wt&&(l(t.getStageByName(n[o]))||r.destroy(),e._dirtyUniforms.push(o))}}function C0t(e){let t=l(e._selected)?e._selected.length:0,n=l(e._parentSelected)?e._parentSelected:0,i=e._selected!==e._selectedShadow||t!==e._selectedLength||e._parentSelected!==e._parentSelectedShadow||n!==e._parentSelectedLength;if(l(e._selected)&&l(e._parentSelected)?e._combinedSelected=e._selected.concat(e._parentSelected):l(e._parentSelected)?e._combinedSelected=e._parentSelected:e._combinedSelected=e._selected,!i&&l(e._combinedSelected)){if(!l(e._combinedSelectedShadow))return!0;for(let o=0;o<e._combinedSelected.length;++o)if(e._combinedSelected[o]!==e._combinedSelectedShadow[o])return!0}return i}function x0t(e,t){if(!e._selectedDirty)return;e._selectedIdTexture=e._selectedIdTexture&&e._selectedIdTexture.destroy(),e._selectedIdTexture=void 0;let n=e._combinedSelected;if(!l(n))return;let i=0;for(let s=0;s<n.length;++s){let a=n[s];l(a.pickIds)?i+=a.pickIds.length:l(a.pickId)&&++i}if(n.length===0||i===0){let s=new Uint8Array([255,255,255,255]);e._selectedIdTexture=new Wt({context:t,pixelFormat:tt.RGBA,pixelDatatype:Ye.UNSIGNED_BYTE,source:{arrayBufferView:s,width:1,height:1},sampler:sn.NEAREST});return}let o=0,r=new Uint8Array(i*4);for(let s=0;s<n.length;++s){let a=n[s];if(l(a.pickIds)){let c=a.pickIds,d=c.length;for(let u=0;u<d;++u){let h=c[u].color;r[o]=U.floatToByte(h.red),r[o+1]=U.floatToByte(h.green),r[o+2]=U.floatToByte(h.blue),r[o+3]=U.floatToByte(h.alpha),o+=4}}else if(l(a.pickId)){let c=a.pickId.color;r[o]=U.floatToByte(c.red),r[o+1]=U.floatToByte(c.green),r[o+2]=U.floatToByte(c.blue),r[o+3]=U.floatToByte(c.alpha),o+=4}}e._selectedIdTexture=new Wt({context:t,pixelFormat:tt.RGBA,pixelDatatype:Ye.UNSIGNED_BYTE,source:{arrayBufferView:r,width:i,height:1},sampler:sn.NEAREST})}MI.prototype.update=function(e,t){if(this.enabled!==this._enabled&&!this.enabled&&HIe(this),this._enabled=this.enabled,!this._enabled||(this._logDepthChanged=t!==this._useLogDepth,this._useLogDepth=t,this._selectedDirty=C0t(this),this._selectedShadow=this._selected,this._parentSelectedShadow=this._parentSelected,this._combinedSelectedShadow=this._combinedSelected,this._selectedLength=l(this._selected)?this._selected.length:0,this._parentSelectedLength=l(this._parentSelected)?this._parentSelected.length:0,x0t(this,e),h0t(this),y0t(this,e),p0t(this,e),A0t(this),this._selectedDirty=!1,!this._ready))return;let n=this._textureCache.getFramebuffer(this._name);if(this._command.framebuffer=n,!l(n))return;let i=n.getColorTexture(0),o;(i.width!==e.drawingBufferWidth||i.height!==e.drawingBufferHeight)&&(o=this._renderState,(!l(o)||i.width!==o.viewport.width||i.height!==o.viewport.height)&&(this._renderState=Qe.fromCache({viewport:new Ke(0,0,i.width,i.height)}))),this._command.renderState=o};MI.prototype.execute=function(e,t,n,i){if(!l(this._command)||!l(this._command.framebuffer)||!this._ready||!this._enabled)return;this._colorTexture=t,this._depthTexture=n,this._idTexture=i,sn.equals(this._colorTexture.sampler,this._sampler)||(this._colorTexture.sampler=this._sampler);let o=this.scissorRectangle.width>0&&this.scissorRectangle.height>0?this._passState:void 0;l(o)&&(o.context=e),this._command.execute(e,o)};MI.prototype.isDestroyed=function(){return!1};MI.prototype.destroy=function(){return HIe(this),me(this)};var Lo=MI;var Jki=y(C(),1);function vI(e){e=e??Y.EMPTY_OBJECT,this._stages=e.stages,this._inputPreviousStageTexture=e.inputPreviousStageTexture??!0;let t=e.name;l(t)||(t=qn()),this._name=t,this._uniforms=e.uniforms,this._textureCache=void 0,this._index=void 0,this._selected=void 0,this._selectedShadow=void 0,this._parentSelected=void 0,this._parentSelectedShadow=void 0,this._combinedSelected=void 0,this._combinedSelectedShadow=void 0,this._selectedLength=0,this._parentSelectedLength=0,this._selectedDirty=!0}Object.defineProperties(vI.prototype,{ready:{get:function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)if(!e[n].ready)return!1;return!0}},name:{get:function(){return this._name}},enabled:{get:function(){return this._stages[0].enabled},set:function(e){let t=this._stages,n=t.length;for(let i=0;i<n;++i)t[i].enabled=e}},uniforms:{get:function(){return this._uniforms}},inputPreviousStageTexture:{get:function(){return this._inputPreviousStageTexture}},length:{get:function(){return this._stages.length}},selected:{get:function(){return this._selected},set:function(e){this._selected=e}},parentSelected:{get:function(){return this._parentSelected},set:function(e){this._parentSelected=e}}});vI.prototype._isSupported=function(e){let t=this._stages,n=t.length;for(let i=0;i<n;++i)if(!t[i]._isSupported(e))return!1;return!0};vI.prototype.get=function(e){return this._stages[e]};function I0t(e){let t=l(e._selected)?e._selected.length:0,n=l(e._parentSelected)?e._parentSelected:0,i=e._selected!==e._selectedShadow||t!==e._selectedLength;if(i=i||e._parentSelected!==e._parentSelectedShadow||n!==e._parentSelectedLength,l(e._selected)&&l(e._parentSelected)?e._combinedSelected=e._selected.concat(e._parentSelected):l(e._parentSelected)?e._combinedSelected=e._parentSelected:e._combinedSelected=e._selected,!i&&l(e._combinedSelected)){if(!l(e._combinedSelectedShadow))return!0;t=e._combinedSelected.length;for(let o=0;o<t;++o)if(e._combinedSelected[o]!==e._combinedSelectedShadow[o])return!0}return i}vI.prototype.update=function(e,t){this._selectedDirty=I0t(this),this._selectedShadow=this._selected,this._parentSelectedShadow=this._parentSelected,this._combinedSelectedShadow=this._combinedSelected,this._selectedLength=l(this._selected)?this._selected.length:0,this._parentSelectedLength=l(this._parentSelected)?this._parentSelected.length:0;let n=this._stages,i=n.length;for(let o=0;o<i;++o){let r=n[o];this._selectedDirty&&(r.parentSelected=this._combinedSelected),r.update(e,t)}};vI.prototype.isDestroyed=function(){return!1};vI.prototype.destroy=function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return me(this)};var Td=vI;var zr={};function c6(e){let o=`#define USE_STEP_SIZE +${fy}`,r=new Lo({name:`${e}_x_direction`,fragmentShader:o,uniforms:{delta:1,sigma:2,stepSize:1,direction:0},sampleMode:_u.LINEAR}),s=new Lo({name:`${e}_y_direction`,fragmentShader:o,uniforms:{delta:1,sigma:2,stepSize:1,direction:1},sampleMode:_u.LINEAR}),a={};return Object.defineProperties(a,{delta:{get:function(){return r.uniforms.delta},set:function(c){let d=r.uniforms,u=s.uniforms;d.delta=u.delta=c}},sigma:{get:function(){return r.uniforms.sigma},set:function(c){let d=r.uniforms,u=s.uniforms;d.sigma=u.sigma=c}},stepSize:{get:function(){return r.uniforms.stepSize},set:function(c){let d=r.uniforms,u=s.uniforms;d.stepSize=u.stepSize=c}}}),new Td({name:e,stages:[r,s],uniforms:a})}zr.createBlurStage=function(){return c6("czm_blur")};zr.createDepthOfFieldStage=function(){let e=c6("czm_depth_of_field_blur"),t=new Lo({name:"czm_depth_of_field_composite",fragmentShader:WM,uniforms:{focalDistance:5,blurTexture:e.name}}),n={};return Object.defineProperties(n,{focalDistance:{get:function(){return t.uniforms.focalDistance},set:function(i){t.uniforms.focalDistance=i}},delta:{get:function(){return e.uniforms.delta},set:function(i){e.uniforms.delta=i}},sigma:{get:function(){return e.uniforms.sigma},set:function(i){e.uniforms.sigma=i}},stepSize:{get:function(){return e.uniforms.stepSize},set:function(i){e.uniforms.stepSize=i}}}),new Td({name:"czm_depth_of_field",stages:[e,t],inputPreviousStageTexture:!1,uniforms:n})};zr.isDepthOfFieldSupported=function(e){return e.context.depthTexture};zr.createEdgeDetectionStage=function(){let e=qn();return new Lo({name:`czm_edge_detection_${e}`,fragmentShader:PM,uniforms:{length:.25,color:U.clone(U.BLACK)}})};zr.isEdgeDetectionSupported=function(e){return e.context.depthTexture};function _0t(e){if(!l(e))return zr.createEdgeDetectionStage();let t=new Td({name:"czm_edge_detection_multiple",stages:e,inputPreviousStageTexture:!1}),n={},i="",o="";for(let a=0;a<e.length;++a)i+=`uniform sampler2D edgeTexture${a}; +`,o+=` vec4 edge${a} = texture(edgeTexture${a}, v_textureCoordinates); + if (edge${a}.a > 0.0) + { + color = edge${a}; + break; + } +`,n[`edgeTexture${a}`]=e[a].name;let r=`${i}in vec2 v_textureCoordinates; +void main() { + vec4 color = vec4(0.0); + for (int i = 0; i < ${e.length}; i++) + { +${o} } + out_FragColor = color; +} +`,s=new Lo({name:"czm_edge_detection_combine",fragmentShader:r,uniforms:n});return new Td({name:"czm_edge_detection_composite",stages:[t,s]})}zr.createSilhouetteStage=function(e){let t=_0t(e),n=new Lo({name:"czm_silhouette_color_edges",fragmentShader:YM,uniforms:{silhouetteTexture:t.name}});return new Td({name:"czm_silhouette",stages:[t,n],inputPreviousStageTexture:!1,uniforms:t.uniforms})};zr.isSilhouetteSupported=function(e){return e.context.depthTexture};zr.createBloomStage=function(){let e=new Lo({name:"czm_bloom_contrast_bias",fragmentShader:XM,uniforms:{contrast:128,brightness:-.3}}),t=c6("czm_bloom_blur"),n=new Td({name:"czm_bloom_contrast_bias_blur",stages:[e,t]}),i=new Lo({name:"czm_bloom_generate_composite",fragmentShader:BM,uniforms:{glowOnly:!1,bloomTexture:n.name}}),o={};return Object.defineProperties(o,{glowOnly:{get:function(){return i.uniforms.glowOnly},set:function(r){i.uniforms.glowOnly=r}},contrast:{get:function(){return e.uniforms.contrast},set:function(r){e.uniforms.contrast=r}},brightness:{get:function(){return e.uniforms.brightness},set:function(r){e.uniforms.brightness=r}},delta:{get:function(){return t.uniforms.delta},set:function(r){t.uniforms.delta=r}},sigma:{get:function(){return t.uniforms.sigma},set:function(r){t.uniforms.sigma=r}},stepSize:{get:function(){return t.uniforms.stepSize},set:function(r){t.uniforms.stepSize=r}}}),new Td({name:"czm_bloom",stages:[n,i],inputPreviousStageTexture:!1,uniforms:o})};zr.createAmbientOcclusionStage=function(){let e=new Lo({name:"czm_ambient_occlusion_generate",fragmentShader:VM,uniforms:{intensity:3,bias:.1,lengthCap:.26,directionCount:8,stepCount:32,randomTexture:void 0}}),t=new Lo({name:"czm_ambient_occlusion_composite",fragmentShader:GM,uniforms:{ambientOcclusionOnly:!1,ambientOcclusionTexture:e.name}}),n={};return Object.defineProperties(n,{intensity:{get:function(){return e.uniforms.intensity},set:function(i){e.uniforms.intensity=i}},bias:{get:function(){return e.uniforms.bias},set:function(i){e.uniforms.bias=i}},lengthCap:{get:function(){return e.uniforms.lengthCap},set:function(i){e.uniforms.lengthCap=i}},directionCount:{get:function(){return e.uniforms.directionCount},set:function(i){e.uniforms.directionCount=i}},stepCount:{get:function(){return e.uniforms.stepCount},set:function(i){e.uniforms.stepCount=i}},randomTexture:{get:function(){return e.uniforms.randomTexture},set:function(i){e.uniforms.randomTexture=i}},ambientOcclusionOnly:{get:function(){return t.uniforms.ambientOcclusionOnly},set:function(i){t.uniforms.ambientOcclusionOnly=i}}}),new Td({name:"czm_ambient_occlusion",stages:[e,t],inputPreviousStageTexture:!1,uniforms:n})};zr.isAmbientOcclusionSupported=function(e){return e.context.depthTexture};var E0t=`#define FXAA_QUALITY_PRESET 39 +${bP} +${NM}`;zr.createFXAAStage=function(){return new Lo({name:"czm_FXAA",fragmentShader:E0t,sampleMode:_u.LINEAR})};zr.createAcesTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=RM,new Lo({name:"czm_aces",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};zr.createFilmicTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=MM,new Lo({name:"czm_filmic",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};zr.createPbrNeutralTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=vM,new Lo({name:"czm_pbr_neutral",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};zr.createReinhardTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=kM,new Lo({name:"czm_reinhard",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};zr.createModifiedReinhardTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=QM,new Lo({name:"czm_modified_reinhard",fragmentShader:t,uniforms:{white:U.WHITE,autoExposure:void 0,exposure:1}})};zr.createAutoExposureStage=function(){return new OM};zr.createBlackAndWhiteStage=function(){return new Lo({name:"czm_black_and_white",fragmentShader:ZM,uniforms:{gradations:5}})};zr.createBrightnessStage=function(){return new Lo({name:"czm_brightness",fragmentShader:wM,uniforms:{brightness:.5}})};zr.createNightVisionStage=function(){return new Lo({name:"czm_night_vision",fragmentShader:UM})};zr.createDepthViewStage=function(){return new Lo({name:"czm_depth_view",fragmentShader:FM})};zr.createLensFlareStage=function(){return new Lo({name:"czm_lens_flare",fragmentShader:DM,uniforms:{dirtTexture:hn("Assets/Textures/LensFlare/DirtMask.jpg"),starTexture:hn("Assets/Textures/LensFlare/StarBurst.jpg"),intensity:2,distortion:10,ghostDispersal:.4,haloWidth:.4,dirtAmount:.4,earthRadius:ie.WGS84.maximumRadius}})};var Eu=zr;var WYi=y(C(),1);function zg(e){this._collection=e,this._framebuffers=[],this._stageNameToFramebuffer={},this._width=void 0,this._height=void 0,this._updateDependencies=!1}function zM(e){for(;l(e.length);)e=e.get(e.length-1);return e.name}function l6(e,t,n,i,o){if(!i.enabled||!i._isSupported(t))return o;let r=n[i.name]={};if(l(o)){let a=e.getStageByName(o);r[zM(a)]=!0}let s=i.uniforms;if(l(s)){let a=Object.getOwnPropertyNames(s),c=a.length;for(let d=0;d<c;++d){let u=s[a[d]];if(typeof u=="string"){let h=e.getStageByName(u);l(h)&&(r[zM(h)]=!0)}}}return i.name}function HM(e,t,n,i,o){if(l(i.enabled)&&!i.enabled||l(i._isSupported)&&!i._isSupported(t))return o;let r=o,s=!l(i.inputPreviousStageTexture)||i.inputPreviousStageTexture,a=o,c=i.length;for(let h=0;h<c;++h){let p=i.get(h);l(p.length)?a=HM(e,t,n,p,o):a=l6(e,t,n,p,o),s&&(o=a)}let d,u;if(s)for(d=1;d<c;++d)u=zM(i.get(d)),l(n[u])||(n[u]={}),n[u][r]=!0;else for(d=1;d<c;++d){u=zM(i.get(d));let h=n[u];for(let p=0;p<d;++p)h[zM(i.get(p))]=!0}return a}function T0t(e,t){let n={};if(l(e.ambientOcclusion)){let i=e.ambientOcclusion,o=e.bloom,r=e._tonemapping,s=e.fxaa,a=HM(e,t,n,i,void 0);a=HM(e,t,n,o,a),a=l6(e,t,n,r,a),a=HM(e,t,n,e,a),l6(e,t,n,s,a)}else HM(e,t,n,e,void 0);return n}function S0t(e,t,n){let o=e._collection.getStageByName(t),r=o._textureScale,s=o._forcePowerOfTwo,a=o._pixelFormat,c=o._pixelDatatype,d=o._clearColor,u,h,p=e._framebuffers,g=p.length;for(u=0;u<g;++u){if(h=p[u],r!==h.textureScale||s!==h.forcePowerOfTwo||a!==h.pixelFormat||c!==h.pixelDatatype||!U.equals(d,h.clearColor))continue;let f=h.stages,b=f.length,x=!1;for(let I=0;I<b;++I)if(n[f[I]]){x=!0;break}if(!x)break}return l(h)&&u<g?(h.stages.push(t),h):(h={textureScale:r,forcePowerOfTwo:s,pixelFormat:a,pixelDatatype:c,clearColor:d,stages:[t],buffer:new Gi({pixelFormat:a,pixelDatatype:c}),clear:void 0},p.push(h),h)}function L0t(e,t){let n=T0t(e._collection,t);for(let i in n)n.hasOwnProperty(i)&&(e._stageNameToFramebuffer[i]=S0t(e,i,n[i]))}function d6(e){let t=e._framebuffers,n=t.length;for(let i=0;i<n;++i)t[i].buffer.destroy()}function R0t(e,t){let n=e._width,i=e._height,o=e._framebuffers,r=o.length;for(let s=0;s<r;++s){let a=o[s],c=a.textureScale,d=Math.ceil(n*c),u=Math.ceil(i*c),h=Math.min(d,u);a.forcePowerOfTwo&&(Z.isPowerOfTwo(h)||(h=Z.nextPowerOfTwo(h)),d=h,u=h),a.buffer.update(t,d,u),a.clear=new xi({color:a.clearColor,framebuffer:a.buffer.framebuffer})}}zg.prototype.updateDependencies=function(){this._updateDependencies=!0};zg.prototype.update=function(e){let t=this._collection,n=this._updateDependencies,i=l(t.ambientOcclusion)&&t.ambientOcclusion.enabled&&t.ambientOcclusion._isSupported(e),o=l(t.bloom)&&t.bloom.enabled&&t.bloom._isSupported(e),r=l(t._tonemapping)&&t._tonemapping.enabled&&t._tonemapping._isSupported(e),s=l(t.fxaa)&&t.fxaa.enabled&&t.fxaa._isSupported(e),a=!l(t._activeStages)||t._activeStages.length>0||i||o||r||s;if((n||!a&&this._framebuffers.length>0)&&(d6(this),this._framebuffers.length=0,this._stageNameToFramebuffer={},this._width=void 0,this._height=void 0),!n&&!a)return;this._framebuffers.length===0&&L0t(this,e);let c=e.drawingBufferWidth,d=e.drawingBufferHeight,u=this._width!==c||this._height!==d;!n&&!u||(this._width=c,this._height=d,this._updateDependencies=!1,d6(this),R0t(this,e))};zg.prototype.clear=function(e){let t=this._framebuffers;for(let n=0;n<t.length;++n)t[n].clear.execute(e)};zg.prototype.getStageByName=function(e){return this._collection.getStageByName(e)};zg.prototype.getOutputTexture=function(e){return this._collection.getOutputTexture(e)};zg.prototype.getFramebuffer=function(e){let t=this._stageNameToFramebuffer[e];if(l(t))return t.buffer.framebuffer};zg.prototype.isDestroyed=function(){return!1};zg.prototype.destroy=function(){return d6(this),me(this)};var NI=zg;var PYi=y(C(),1),V0t={REINHARD:"REINHARD",MODIFIED_REINHARD:"MODIFIED_REINHARD",FILMIC:"FILMIC",ACES:"ACES",PBR_NEUTRAL:"PBR_NEUTRAL"};var Kg=Object.freeze(V0t);var u6=[];function Nl(){let e=Eu.createFXAAStage(),t=Eu.createAmbientOcclusionStage(),n=Eu.createBloomStage();this._autoExposureEnabled=!1,this._autoExposure=Eu.createAutoExposureStage(),this._exposure=1,this._tonemapping=void 0,this._tonemapper=void 0,this.tonemapper=Kg.PBR_NEUTRAL;let i=this._tonemapping;e.enabled=!1,t.enabled=!1,n.enabled=!1,i.enabled=!1;let o=new NI(this),r={},s=u6;for(s.push(e,t,n,i);s.length>0;){let c=s.pop();r[c.name]=c,c._textureCache=o;let d=c.length;if(l(d))for(let u=0;u<d;++u)s.push(c.get(u))}this._stages=[],this._activeStages=[],this._previousActiveStages=[],this._randomTexture=void 0;let a=this;t.uniforms.randomTexture=function(){return a._randomTexture},this._ao=t,this._bloom=n,this._fxaa=e,this._aoEnabled=void 0,this._bloomEnabled=void 0,this._tonemappingEnabled=void 0,this._fxaaEnabled=void 0,this._activeStagesChanged=!1,this._stagesRemoved=!1,this._textureCacheDirty=!1,this._stageNames=r,this._textureCache=o}Object.defineProperties(Nl.prototype,{ready:{get:function(){let e=!1,t=this._stages,n=t.length;for(let a=n-1;a>=0;--a){let c=t[a];e=e||c.ready&&c.enabled}let i=this._fxaa,o=this._ao,r=this._bloom,s=this._tonemapping;return e=e||i.ready&&i.enabled,e=e||o.ready&&o.enabled,e=e||r.ready&&r.enabled,e=e||s.ready&&s.enabled,e}},fxaa:{get:function(){return this._fxaa}},ambientOcclusion:{get:function(){return this._ao}},bloom:{get:function(){return this._bloom}},length:{get:function(){return m6(this),this._stages.length}},outputTexture:{get:function(){let e=this._fxaa;if(e.enabled&&e.ready)return this.getOutputTexture(e.name);let t=this._stages,n=t.length;for(let s=n-1;s>=0;--s){let a=t[s];if(l(a)&&a.ready&&a.enabled)return this.getOutputTexture(a.name)}let i=this._tonemapping;if(i.enabled&&i.ready)return this.getOutputTexture(i.name);let o=this._bloom;if(o.enabled&&o.ready)return this.getOutputTexture(o.name);let r=this._ao;if(r.enabled&&r.ready)return this.getOutputTexture(r.name)}},hasSelected:{get:function(){let e=this._stages.slice();for(;e.length>0;){let t=e.pop();if(!l(t))continue;if(l(t.selected))return!0;let n=t.length;if(l(n))for(let i=0;i<n;++i)e.push(t.get(i))}return!1}},tonemapper:{get:function(){return this._tonemapper},set:function(e){if(this._tonemapper===e)return;l(this._tonemapping)&&(delete this._stageNames[this._tonemapping.name],this._tonemapping.destroy());let t=this._autoExposureEnabled,n;switch(e){case Kg.REINHARD:n=Eu.createReinhardTonemappingStage(t);break;case Kg.MODIFIED_REINHARD:n=Eu.createModifiedReinhardTonemappingStage(t);break;case Kg.FILMIC:n=Eu.createFilmicTonemappingStage(t);break;case Kg.PBR_NEUTRAL:n=Eu.createPbrNeutralTonemappingStage(t);break;default:n=Eu.createAcesTonemappingStage(t);break}if(t){let i=this._autoExposure;n.uniforms.autoExposure=function(){return i.outputTexture}}else n.uniforms.exposure=this._exposure;this._tonemapper=e,this._tonemapping=n,l(this._stageNames)&&(this._stageNames[n.name]=n,n._textureCache=this._textureCache),this._textureCacheDirty=!0}},exposure:{get:function(){return this._exposure},set:function(e){this._tonemapping.uniforms.exposure=e,this._exposure=e}}});function m6(e){if(!e._stagesRemoved)return;e._stagesRemoved=!1;let t=[],n=e._stages;for(let i=0,o=0;i<n.length;++i){let r=n[i];r&&(r._index=o++,t.push(r))}e._stages=t}Nl.prototype.add=function(e){let t=this._stageNames,n=u6;for(n.push(e);n.length>0;){let o=n.pop();t[o.name]=o,o._textureCache=this._textureCache;let r=o.length;if(l(r))for(let s=0;s<r;++s)n.push(o.get(s))}let i=this._stages;return e._index=i.length,i.push(e),this._textureCacheDirty=!0,e};Nl.prototype.remove=function(e){if(!this.contains(e))return!1;let t=this._stageNames,n=u6;for(n.push(e);n.length>0;){let i=n.pop();delete t[i.name];let o=i.length;if(l(o))for(let r=0;r<o;++r)n.push(i.get(r))}return this._stages[e._index]=void 0,this._stagesRemoved=!0,this._textureCacheDirty=!0,e._index=void 0,e._textureCache=void 0,e.destroy(),!0};Nl.prototype.contains=function(e){return l(e)&&l(e._index)&&e._textureCache===this._textureCache};Nl.prototype.get=function(e){return m6(this),this._stages[e]};Nl.prototype.removeAll=function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)this.remove(e[n]);e.length=0};Nl.prototype.getStageByName=function(e){return this._stageNames[e]};Nl.prototype.update=function(e,t,n){m6(this);let i=this._activeStages,o=this._activeStages=this._previousActiveStages;this._previousActiveStages=i;let r=this._stages;o.length=r.length;let s=0;for(let I=0;I<r.length;++I){let _=r[I];_.ready&&_.enabled&&_._isSupported(e)&&(o[s++]=_)}o.length=s;let a=s!==i.length;if(!a){for(let I=0;I<s;++I)if(o[I]!==i[I]){a=!0;break}}let c=this._ao,d=this._bloom,u=this._autoExposure,h=this._tonemapping,p=this._fxaa;h.enabled=n;let g=c.enabled&&c._isSupported(e),f=d.enabled&&d._isSupported(e),b=h.enabled&&h._isSupported(e),x=p.enabled&&p._isSupported(e);if((a||this._textureCacheDirty||g!==this._aoEnabled||f!==this._bloomEnabled||b!==this._tonemappingEnabled||x!==this._fxaaEnabled)&&(this._textureCache.updateDependencies(),this._aoEnabled=g,this._bloomEnabled=f,this._tonemappingEnabled=b,this._fxaaEnabled=x,this._textureCacheDirty=!1),l(this._randomTexture)&&!g&&(this._randomTexture.destroy(),this._randomTexture=void 0),!l(this._randomTexture)&&g){let _=new Uint8Array(196608);for(let E=0;E<196608;E+=3)_[E]=Math.floor(Math.random()*255);this._randomTexture=new Wt({context:e,pixelFormat:tt.RGB,pixelDatatype:Ye.UNSIGNED_BYTE,source:{arrayBufferView:_,width:256,height:256},sampler:new sn({wrapS:Ln.REPEAT,wrapT:Ln.REPEAT,minificationFilter:en.NEAREST,magnificationFilter:pi.NEAREST})})}this._textureCache.update(e),p.update(e,t),c.update(e,t),d.update(e,t),h.update(e,t),this._autoExposureEnabled&&u.update(e,t);for(let I=0;I<r.length;++I)r[I].update(e,t);s=0;for(let I=0;I<r.length;++I){let _=r[I];_.ready&&_.enabled&&_._isSupported(e)&&s++}a=s!==o.length,a&&this.update(e,t,n)};Nl.prototype.clear=function(e){this._textureCache.clear(e),this._autoExposureEnabled&&this._autoExposure.clear(e)};function DI(e){for(;l(e.length);)e=e.get(e.length-1);return e.outputTexture}Nl.prototype.getOutputTexture=function(e){let t=this.getStageByName(e);if(l(t))return DI(t)};function Wp(e,t,n,i,o){if(l(e.execute)){e.execute(t,n,i,o);return}if(e.inputPreviousStageTexture){Wp(e.get(0),t,n,i,o);for(let r=1;r<e.length;++r)Wp(e.get(r),t,DI(e.get(r-1)),i,o)}else for(let r=0;r<e.length;++r)Wp(e.get(r),t,n,i,o)}Nl.prototype.execute=function(e,t,n,i){let o=this._activeStages,r=o.length,s=this._fxaa,a=this._ao,c=this._bloom,d=this._autoExposure,u=this._tonemapping,h=a.enabled&&a._isSupported(e),p=c.enabled&&c._isSupported(e),g=this._autoExposureEnabled,f=u.enabled&&u._isSupported(e),b=s.enabled&&s._isSupported(e);if(!b&&!h&&!p&&!f&&r===0)return;let x=t;h&&a.ready&&(Wp(a,e,x,n,i),x=DI(a)),p&&c.ready&&(Wp(c,e,x,n,i),x=DI(c)),g&&d.ready&&Wp(d,e,x,n,i),f&&u.ready&&(Wp(u,e,x,n,i),x=DI(u));let I=x;if(r>0){Wp(o[0],e,x,n,i);for(let _=1;_<r;++_)Wp(o[_],e,DI(o[_-1]),n,i);I=DI(o[r-1])}b&&s.ready&&Wp(s,e,I,n,i)};Nl.prototype.copy=function(e,t){if(!l(this._copyColorCommand)){let n=this;this._copyColorCommand=e.createViewportQuadCommand(Ed,{uniformMap:{colorTexture:function(){return n.outputTexture}},owner:this})}this._copyColorCommand.framebuffer=t,this._copyColorCommand.execute(e)};Nl.prototype.isDestroyed=function(){return!1};Nl.prototype.destroy=function(){return this._fxaa.destroy(),this._ao.destroy(),this._bloom.destroy(),this._autoExposure.destroy(),this._tonemapping.destroy(),this.removeAll(),this._textureCache=this._textureCache&&this._textureCache.destroy(),me(this)};var KM=Nl;var Z3i=y(C(),1);var h3i=y(C(),1);var t3i=y(C(),1),G0t={SHIFT:0,CTRL:1,ALT:2},La=Object.freeze(G0t);var i3i=y(C(),1),Z0t={LEFT_DOWN:0,LEFT_UP:1,LEFT_CLICK:2,LEFT_DOUBLE_CLICK:3,RIGHT_DOWN:5,RIGHT_UP:6,RIGHT_CLICK:7,MIDDLE_DOWN:10,MIDDLE_UP:11,MIDDLE_CLICK:12,MOUSE_MOVE:15,WHEEL:16,PINCH_START:17,PINCH_END:18,PINCH_MOVE:19},Zn=Object.freeze(Z0t);function py(e,t,n){let i=e._element;if(i===document)return n.x=t.clientX,n.y=t.clientY,n;let o=i.getBoundingClientRect();return n.x=t.clientX-o.left,n.y=t.clientY-o.top,n}function b6(e,t){let n=e;return l(t)&&(n+=`+${t}`),n}function QI(e){if(e.shiftKey)return La.SHIFT;if(e.ctrlKey)return La.CTRL;if(e.altKey)return La.ALT}var hs={LEFT:0,MIDDLE:1,RIGHT:2};function Tu(e,t,n,i){function o(r){i(e,r)}Ht.isInternetExplorer()?n.addEventListener(t,o,!1):n.addEventListener(t,o,{capture:!1,passive:!1}),e._removalFunctions.push(function(){n.removeEventListener(t,o,!1)})}function B0t(e){let t=e._element,n=l(t.disableRootEvents)?t:document;Ht.supportsPointerEvents()?(Tu(e,"pointerdown",t,M0t),Tu(e,"pointerup",t,i_e),Tu(e,"pointermove",t,v0t),Tu(e,"pointercancel",t,i_e)):(Tu(e,"mousedown",t,o_e),Tu(e,"mouseup",n,r_e),Tu(e,"mousemove",n,s_e),Tu(e,"touchstart",t,F0t),Tu(e,"touchend",n,qIe),Tu(e,"touchmove",n,P0t),Tu(e,"touchcancel",n,qIe)),Tu(e,"dblclick",t,X0t);let i;"onwheel"in t?i="wheel":document.onmousewheel!==void 0?i="mousewheel":i="DOMMouseScroll",Tu(e,i,t,W0t)}function w0t(e){let t=e._removalFunctions;for(let n=0;n<t.length;++n)t[n]()}var zIe={position:new D};function y6(e){e._lastSeenTouchEvent=Fi()}function C6(e){return Fi()-e._lastSeenTouchEvent>ff.mouseEmulationIgnoreMilliseconds}function g6(e,t,n){let i=e.x-t.x,o=e.y-t.y;return Math.sqrt(i*i+o*o)<n}function o_e(e,t){if(!C6(e))return;let n=t.button;e._buttonDown[n]=!0;let i;if(n===hs.LEFT)i=Zn.LEFT_DOWN;else if(n===hs.MIDDLE)i=Zn.MIDDLE_DOWN;else if(n===hs.RIGHT)i=Zn.RIGHT_DOWN;else return;let o=py(e,t,e._primaryPosition);D.clone(o,e._primaryStartPosition),D.clone(o,e._primaryPreviousPosition);let r=QI(t),s=e.getInputAction(i,r);l(s)&&(D.clone(o,zIe.position),s(zIe),t.preventDefault())}var KIe={position:new D},JIe={position:new D};function h6(e,t,n,i){let o=QI(i),r=e.getInputAction(t,o),s=e.getInputAction(n,o);if(l(r)||l(s)){let a=py(e,i,e._primaryPosition);if(l(r)&&(D.clone(a,KIe.position),r(KIe)),l(s)){let c=e._primaryStartPosition;g6(c,a,e._clickPixelTolerance)&&(D.clone(a,JIe.position),s(JIe))}}}function r_e(e,t){if(!C6(e))return;let n=t.button;n!==hs.LEFT&&n!==hs.MIDDLE&&n!==hs.RIGHT||(e._buttonDown[hs.LEFT]&&(h6(e,Zn.LEFT_UP,Zn.LEFT_CLICK,t),e._buttonDown[hs.LEFT]=!1),e._buttonDown[hs.MIDDLE]&&(h6(e,Zn.MIDDLE_UP,Zn.MIDDLE_CLICK,t),e._buttonDown[hs.MIDDLE]=!1),e._buttonDown[hs.RIGHT]&&(h6(e,Zn.RIGHT_UP,Zn.RIGHT_CLICK,t),e._buttonDown[hs.RIGHT]=!1))}var f6={startPosition:new D,endPosition:new D};function s_e(e,t){if(!C6(e))return;let n=QI(t),i=py(e,t,e._primaryPosition),o=e._primaryPreviousPosition,r=e.getInputAction(Zn.MOUSE_MOVE,n);l(r)&&(D.clone(o,f6.startPosition),D.clone(i,f6.endPosition),r(f6)),D.clone(i,o),(e._buttonDown[hs.LEFT]||e._buttonDown[hs.MIDDLE]||e._buttonDown[hs.RIGHT])&&t.preventDefault()}var jIe={position:new D};function X0t(e,t){let n=t.button,i;if(n===hs.LEFT)i=Zn.LEFT_DOUBLE_CLICK;else return;let o=QI(t),r=e.getInputAction(i,o);l(r)&&(py(e,t,jIe.position),r(jIe))}function W0t(e,t){let n;if(l(t.deltaY)){let r=t.deltaMode;r===t.DOM_DELTA_PIXEL?n=-t.deltaY:r===t.DOM_DELTA_LINE?n=-t.deltaY*40:n=-t.deltaY*120}else t.detail>0?n=t.detail*-120:n=t.wheelDelta;if(!l(n))return;let i=QI(t),o=e.getInputAction(Zn.WHEEL,i);l(o)&&(o(n),t.preventDefault())}function F0t(e,t){y6(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i)r=n[i],s=r.identifier,a.set(s,py(e,r,new D));uY(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,c.set(s,D.clone(a.get(s)))}function qIe(e,t){y6(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i)r=n[i],s=r.identifier,a.remove(s);uY(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,c.remove(s)}var $Ie={position:new D},p6={position1:new D,position2:new D},e_e={position:new D},t_e={position:new D},n_e={position:new D};function uY(e,t){let n=QI(t),i=e._positions,o=i.length,r,s,a=e._isPinching;if(o!==1&&e._buttonDown[hs.LEFT]){if(e._buttonDown[hs.LEFT]=!1,l(e._touchHoldTimer)&&(clearTimeout(e._touchHoldTimer),e._touchHoldTimer=void 0),r=e.getInputAction(Zn.LEFT_UP,n),l(r)&&(D.clone(e._primaryPosition,e_e.position),r(e_e)),o===0&&!e._isTouchHolding&&(s=e.getInputAction(Zn.LEFT_CLICK,n),l(s))){let c=e._primaryStartPosition,d=e._previousPositions.values[0];g6(c,d,e._clickPixelTolerance)&&(D.clone(e._primaryPosition,t_e.position),s(t_e))}e._isTouchHolding=!1}if(o===0&&a&&(e._isPinching=!1,r=e.getInputAction(Zn.PINCH_END,n),l(r)&&r()),o===1&&!a){let c=i.values[0];D.clone(c,e._primaryPosition),D.clone(c,e._primaryStartPosition),D.clone(c,e._primaryPreviousPosition),e._buttonDown[hs.LEFT]=!0,r=e.getInputAction(Zn.LEFT_DOWN,n),l(r)&&(D.clone(c,$Ie.position),r($Ie)),e._touchHoldTimer=setTimeout(function(){if(!e.isDestroyed()&&(e._touchHoldTimer=void 0,e._isTouchHolding=!0,s=e.getInputAction(Zn.RIGHT_CLICK,n),l(s))){let d=e._primaryStartPosition,u=e._previousPositions.values[0];g6(d,u,e._holdPixelTolerance)&&(D.clone(e._primaryPosition,n_e.position),s(n_e))}},ff.touchHoldDelayMilliseconds),t.preventDefault()}o===2&&!a&&(e._isPinching=!0,r=e.getInputAction(Zn.PINCH_START,n),l(r)&&(D.clone(i.values[0],p6.position1),D.clone(i.values[1],p6.position2),r(p6),t.preventDefault()))}function P0t(e,t){y6(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i){r=n[i],s=r.identifier;let d=a.get(s);l(d)&&py(e,r,d)}a_e(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,D.clone(a.get(s),c.get(s))}var A6={startPosition:new D,endPosition:new D},JM={distance:{startPosition:new D,endPosition:new D},angleAndHeight:{startPosition:new D,endPosition:new D}};function a_e(e,t){let n=QI(t),i=e._positions,o=e._previousPositions,r=i.length,s;if(r===1&&e._buttonDown[hs.LEFT]){let a=i.values[0];D.clone(a,e._primaryPosition);let c=e._primaryPreviousPosition;s=e.getInputAction(Zn.MOUSE_MOVE,n),l(s)&&(D.clone(c,A6.startPosition),D.clone(a,A6.endPosition),s(A6)),D.clone(a,c),t.preventDefault()}else if(r===2&&e._isPinching&&(s=e.getInputAction(Zn.PINCH_MOVE,n),l(s))){let a=i.values[0],c=i.values[1],d=o.values[0],u=o.values[1],h=c.x-a.x,p=c.y-a.y,g=Math.sqrt(h*h+p*p)*.25,f=u.x-d.x,b=u.y-d.y,x=Math.sqrt(f*f+b*b)*.25,I=(c.y+a.y)*.125,_=(u.y+d.y)*.125,E=Math.atan2(p,h),S=Math.atan2(b,f);D.fromElements(0,x,JM.distance.startPosition),D.fromElements(0,g,JM.distance.endPosition),D.fromElements(S,_,JM.angleAndHeight.startPosition),D.fromElements(E,I,JM.angleAndHeight.endPosition),s(JM)}}function M0t(e,t){if(t.target.setPointerCapture(t.pointerId),t.pointerType==="touch"){let n=e._positions,i=t.pointerId;n.set(i,py(e,t,new D)),uY(e,t),e._previousPositions.set(i,D.clone(n.get(i)))}else o_e(e,t)}function i_e(e,t){if(t.pointerType==="touch"){let n=e._positions,i=t.pointerId;n.remove(i),uY(e,t),e._previousPositions.remove(i)}else r_e(e,t)}function v0t(e,t){if(t.pointerType==="touch"){let n=e._positions,i=t.pointerId,o=n.get(i);if(!l(o))return;py(e,t,o),a_e(e,t);let r=e._previousPositions;D.clone(n.get(i),r.get(i))}else s_e(e,t)}function ff(e){this._inputEvents={},this._buttonDown={[hs.LEFT]:!1,[hs.MIDDLE]:!1,[hs.RIGHT]:!1},this._isPinching=!1,this._isTouchHolding=!1,this._lastSeenTouchEvent=-ff.mouseEmulationIgnoreMilliseconds,this._primaryStartPosition=new D,this._primaryPosition=new D,this._primaryPreviousPosition=new D,this._positions=new Bt,this._previousPositions=new Bt,this._removalFunctions=[],this._touchHoldTimer=void 0,this._clickPixelTolerance=5,this._holdPixelTolerance=25,this._element=e??document,B0t(this)}ff.prototype.setInputAction=function(e,t,n){let i=b6(t,n);this._inputEvents[i]=e};ff.prototype.getInputAction=function(e,t){let n=b6(e,t);return this._inputEvents[n]};ff.prototype.removeInputAction=function(e,t){let n=b6(e,t);delete this._inputEvents[n]};ff.prototype.isDestroyed=function(){return!1};ff.prototype.destroy=function(){return w0t(this),me(this)};ff.mouseEmulationIgnoreMilliseconds=800;ff.touchHoldDelayMilliseconds=1500;var Su=ff;function UI(e){this._scene=e,this._currentTweens=[],this._morphHandler=void 0,this._morphCancelled=!1,this._completeMorph=void 0,this._morphToOrthographic=!1}UI.prototype.completeMorph=function(){l(this._completeMorph)&&this._completeMorph()};UI.prototype.morphTo2D=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;this._previousMode=n.mode,this._morphToOrthographic=n.camera.frustum instanceof gn,!(this._previousMode===re.SCENE2D||this._previousMode===re.MORPHING)&&(this._scene.morphStart.raiseEvent(this,this._previousMode,re.SCENE2D,!0),n._mode=re.MORPHING,n.camera._setTransform(X.IDENTITY),this._previousMode===re.COLUMBUS_VIEW?byt(this,e):Tyt(this,e,t),e===0&&l(this._completeMorph)&&this._completeMorph())};var N0t=new m,D0t=new m,Q0t=new m,U0t=new m,k0t=new m,Y0t=new m,O0t=new m,H0t=new ge,z0t=new X,K0t=new Ni,J0t=new gn,j0t={position:void 0,direction:void 0,up:void 0,position2D:void 0,direction2D:void 0,up2D:void 0,frustum:void 0};UI.prototype.morphToColumbusView=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;if(this._previousMode=n.mode,this._previousMode===re.COLUMBUS_VIEW||this._previousMode===re.MORPHING)return;this._scene.morphStart.raiseEvent(this,this._previousMode,re.COLUMBUS_VIEW,!0),n.camera._setTransform(X.IDENTITY);let i=N0t,o=D0t,r=Q0t;if(e>0)i.x=0,i.y=-1,i.z=1,i=m.multiplyByScalar(m.normalize(i,i),5*t.maximumRadius,i),m.negate(m.normalize(i,o),o),m.cross(m.UNIT_X,o,r);else{let d=n.camera;if(this._previousMode===re.SCENE2D)m.clone(d.position,i),i.z=d.frustum.right-d.frustum.left,m.negate(m.UNIT_Z,o),m.clone(m.UNIT_Y,r);else{m.clone(d.positionWC,i),m.clone(d.directionWC,o),m.clone(d.upWC,r);let u=t.scaleToGeodeticSurface(i,O0t),h=Dt.eastNorthUpToFixedFrame(u,t,z0t);X.inverseTransformation(h,h),n.mapProjection.project(t.cartesianToCartographic(i,H0t),i),X.multiplyByPointAsVector(h,o,o),X.multiplyByPointAsVector(h,r,r)}}let s;this._morphToOrthographic?(s=J0t,s.width=n.camera.frustum.right-n.camera.frustum.left,s.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight):(s=K0t,s.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight,s.fov=Z.toRadians(60));let a=j0t;a.position=i,a.direction=o,a.up=r,a.frustum=s;let c=Lyt(a);jM(this,c),this._previousMode===re.SCENE2D?Syt(this,e,a,c):(a.position2D=X.multiplyByPoint(xo.TRANSFORM_2D,i,U0t),a.direction2D=X.multiplyByPointAsVector(xo.TRANSFORM_2D,o,k0t),a.up2D=X.multiplyByPointAsVector(xo.TRANSFORM_2D,r,Y0t),n._mode=re.MORPHING,b_e(this,e,a,c)),e===0&&l(this._completeMorph)&&this._completeMorph()};var _6={position:new m,direction:new m,up:new m,frustum:void 0},l_e=new Ni;UI.prototype.morphTo3D=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;if(this._previousMode=n.mode,!(this._previousMode===re.SCENE3D||this._previousMode===re.MORPHING)){if(this._scene.morphStart.raiseEvent(this,this._previousMode,re.SCENE3D,!0),n._mode=re.MORPHING,n.camera._setTransform(X.IDENTITY),this._previousMode===re.SCENE2D)cyt(this,e,t);else{let i;e>0?(i=_6,m.fromDegrees(0,0,5*t.maximumRadius,t,i.position),m.negate(i.position,i.direction),m.normalize(i.direction,i.direction),m.clone(m.UNIT_Z,i.up)):i=d_e(this,t);let o,r=n.camera;r.frustum instanceof gn?o=r.frustum.clone():(o=l_e,o.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight,o.fov=Z.toRadians(60)),i.frustum=o;let s=C_e(i);jM(this,s),I6(this,e,i,s)}e===0&&l(this._completeMorph)&&this._completeMorph()}};UI.prototype.isDestroyed=function(){return!1};UI.prototype.destroy=function(){return mY(this),me(this)};function jM(e,t){if(e._scene.completeMorphOnUserInput){e._morphHandler=new Su(e._scene.canvas);let n=function(){e._morphCancelled=!0,e._scene.camera.cancelFlight(),t(e)};e._completeMorph=n,e._morphHandler.setInputAction(n,Zn.LEFT_DOWN),e._morphHandler.setInputAction(n,Zn.MIDDLE_DOWN),e._morphHandler.setInputAction(n,Zn.RIGHT_DOWN),e._morphHandler.setInputAction(n,Zn.WHEEL)}}function mY(e){let t=e._currentTweens;for(let n=0;n<t.length;++n)t[n].cancelTween();e._currentTweens.length=0,e._morphHandler=e._morphHandler&&e._morphHandler.destroy()}var q0t=new ge,$0t=new m,eyt=new X;function d_e(e,t){let n=e._scene,i=n.camera,o=_6,r=o.position,s=o.direction,a=o.up,c=n.mapProjection.unproject(i.position,q0t);t.cartographicToCartesian(c,r);let d=t.scaleToGeodeticSurface(r,$0t),u=Dt.eastNorthUpToFixedFrame(d,t,eyt);return X.multiplyByPointAsVector(u,i.direction,s),X.multiplyByPointAsVector(u,i.up,a),o}var tyt=new m,nyt=new m,iyt=new m,oyt=new m,ryt=new m,syt=new m;function I6(e,t,n,i){t*=.5;let o=e._scene,r=o.camera,s=m.clone(r.position,tyt),a=m.clone(r.direction,nyt),c=m.clone(r.up,iyt),d=X.multiplyByPoint(xo.TRANSFORM_2D_INVERSE,n.position,oyt),u=X.multiplyByPointAsVector(xo.TRANSFORM_2D_INVERSE,n.direction,ryt),h=X.multiplyByPointAsVector(xo.TRANSFORM_2D_INVERSE,n.up,syt);function p(f){Dm(s,d,f.time,r.position),Dm(a,u,f.time,r.direction),Dm(c,h,f.time,r.up),m.cross(r.direction,r.up,r.right),m.normalize(r.right,r.right)}let g=o.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:p,complete:function(){y_e(e,o,0,1,t,i)}});e._currentTweens.push(g)}var ayt=new gn,u_e=new m,m_e=new m,h_e=new m,E6=new m,f_e=new m,p_e=new m;function cyt(e,t,n){t/=3;let i=e._scene,o=i.camera,r;t>0?(r=_6,m.fromDegrees(0,0,5*n.maximumRadius,n,r.position),m.negate(r.position,r.direction),m.normalize(r.direction,r.direction),m.clone(m.UNIT_Z,r.up)):(o.position.z=o.frustum.right-o.frustum.left,r=d_e(e,n));let s;e._morphToOrthographic?(s=ayt,s.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,s.width=o.frustum.right-o.frustum.left):(s=l_e,s.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,s.fov=Z.toRadians(60)),r.frustum=s;let a=C_e(r);jM(e,a);let c;e._morphToOrthographic?c=function(){I6(e,t,r,a)}:c=function(){g_e(e,t,r,function(){I6(e,t,r,a)})},t>0?(i._mode=re.SCENE2D,o.flyTo({duration:t,destination:m.fromDegrees(0,0,5*n.maximumRadius,n,E6),complete:function(){i._mode=re.MORPHING,c()}})):c()}function Dm(e,t,n,i){return m.lerp(e,t,n,i)}function A_e(e,t,n,i,o){let r=e._scene,s=r.camera;if(s.frustum instanceof gn)return;let a=s.frustum.fov,c=Z.RADIANS_PER_DEGREE*.5,d=n.position.z*Math.tan(a*.5);s.frustum.far=d/Math.tan(c*.5)+1e7;function u(p){s.frustum.fov=Z.lerp(a,c,p.time);let g=d/Math.tan(s.frustum.fov*.5);i(s,g)}let h=r.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:u,complete:function(){s.frustum=n.frustum.clone(),o(e)}});e._currentTweens.push(h)}var lyt=new m,dyt=new m,uyt=new m,x6=new m,myt=new m,hyt=new m,fyt=new qr,pyt=new En,Ayt=new m,gyt={position:void 0,direction:void 0,up:void 0,frustum:void 0};function byt(e,t){t*=.5;let n=e._scene,i=n.camera,o=m.clone(i.position,lyt),r=m.clone(i.direction,dyt),s=m.clone(i.up,uyt),a=m.negate(m.UNIT_Z,myt),c=m.clone(m.UNIT_Y,hyt),d=x6;if(t>0)m.clone(m.ZERO,x6),d.z=5*n.ellipsoid.maximumRadius;else{m.clone(o,x6);let x=pyt;X.multiplyByPoint(xo.TRANSFORM_2D,o,x.origin),X.multiplyByPointAsVector(xo.TRANSFORM_2D,r,x.direction);let I=n.globe;if(l(I)){let _=I.pickWorldCoordinates(x,n,!0,Ayt);l(_)&&(X.multiplyByPoint(xo.TRANSFORM_2D_INVERSE,_,d),d.z+=m.distance(o,d))}}let u=fyt;u.right=d.z*.5,u.left=-u.right,u.top=u.right*(n.drawingBufferHeight/n.drawingBufferWidth),u.bottom=-u.top;let h=gyt;h.position=d,h.direction=a,h.up=c,h.frustum=u;let p=x_e(h);jM(e,p);function g(x){Dm(o,d,x.time,i.position),Dm(r,a,x.time,i.direction),Dm(s,c,x.time,i.up),m.cross(i.direction,i.up,i.right),m.normalize(i.right,i.right),i._adjustOrthographicFrustum(!0)}function f(x,I){x.position.z=I}let b=n.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:g,complete:function(){A_e(e,t,h,f,p)}});e._currentTweens.push(b)}var c_e=new ge,yyt={position:new m,direction:new m,up:new m,position2D:new m,direction2D:new m,up2D:new m,frustum:new qr},Cyt={position:new m,direction:new m,up:new m,frustum:void 0},xyt=new m,Iyt=new En,_yt=new X,Eyt=new m;function Tyt(e,t,n){t*=.5;let i=e._scene,o=i.camera,r=yyt;if(t>0)m.clone(m.ZERO,r.position),r.position.z=5*n.maximumRadius,m.negate(m.UNIT_Z,r.direction),m.clone(m.UNIT_Y,r.up);else{n.cartesianToCartographic(o.positionWC,c_e),i.mapProjection.project(c_e,r.position),m.negate(m.UNIT_Z,r.direction),m.clone(m.UNIT_Y,r.up);let h=Iyt;m.clone(r.position2D,h.origin);let p=m.clone(o.directionWC,h.direction),g=n.scaleToGeodeticSurface(o.positionWC,Eyt),f=Dt.eastNorthUpToFixedFrame(g,n,_yt);X.inverseTransformation(f,f),X.multiplyByPointAsVector(f,p,p),X.multiplyByPointAsVector(xo.TRANSFORM_2D,p,p);let b=i.globe;if(l(b)){let x=b.pickWorldCoordinates(h,i,!0,xyt);if(l(x)){let I=m.distance(r.position2D,x);x.x+=I,m.clone(x,r.position2D)}}}function s(h,p){h.position.x=p}X.multiplyByPoint(xo.TRANSFORM_2D,r.position,r.position2D),X.multiplyByPointAsVector(xo.TRANSFORM_2D,r.direction,r.direction2D),X.multiplyByPointAsVector(xo.TRANSFORM_2D,r.up,r.up2D);let a=r.frustum;a.right=r.position.z*.5,a.left=-a.right,a.top=a.right*(i.drawingBufferHeight/i.drawingBufferWidth),a.bottom=-a.top;let c=Cyt;X.multiplyByPoint(xo.TRANSFORM_2D_INVERSE,r.position2D,c.position),m.clone(r.direction,c.direction),m.clone(r.up,c.up),c.frustum=a;let d=x_e(c);jM(e,d);function u(){A_e(e,t,r,s,d)}b_e(e,t,r,u)}function g_e(e,t,n,i){let o=e._scene,r=o.camera,s=r.frustum.right-r.frustum.left;r.frustum=n.frustum.clone();let a=r.frustum.fov,c=Z.RADIANS_PER_DEGREE*.5,d=s*Math.tan(a*.5);r.frustum.far=d/Math.tan(c*.5)+1e7,r.frustum.fov=c;function u(p){r.frustum.fov=Z.lerp(c,a,p.time),r.position.z=d/Math.tan(r.frustum.fov*.5)}let h=o.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:u,complete:function(){i(e)}});e._currentTweens.push(h)}function Syt(e,t,n,i){t*=.5;let o=e._scene,r=o.camera,s=m.clone(n.position,E6),a=m.clone(n.direction,f_e),c=m.clone(n.up,p_e);o._mode=re.MORPHING;function d(){r.frustum=n.frustum.clone();let u=m.clone(r.position,u_e),h=m.clone(r.direction,m_e),p=m.clone(r.up,h_e);u.z=s.z;function g(b){Dm(u,s,b.time,r.position),Dm(h,a,b.time,r.direction),Dm(p,c,b.time,r.up),m.cross(r.direction,r.up,r.right),m.normalize(r.right,r.right)}let f=o.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:g,complete:function(){i(e)}});e._currentTweens.push(f)}e._morphToOrthographic?d():g_e(e,0,n,d)}function b_e(e,t,n,i){let o=e._scene,r=o.camera,s=m.clone(r.position,u_e),a=m.clone(r.direction,m_e),c=m.clone(r.up,h_e),d=m.clone(n.position2D,E6),u=m.clone(n.direction2D,f_e),h=m.clone(n.up2D,p_e);function p(f){Dm(s,d,f.time,r.position),Dm(a,u,f.time,r.direction),Dm(c,h,f.time,r.up),m.cross(r.direction,r.up,r.right),m.normalize(r.right,r.right),r._adjustOrthographicFrustum(!0)}let g=o.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:p,complete:function(){y_e(e,o,1,0,t,i)}});e._currentTweens.push(g)}function y_e(e,t,n,i,o,r){let s={object:t,property:"morphTime",startValue:n,stopValue:i,duration:o,easingFunction:ms.QUARTIC_OUT};l(r)&&(s.complete=function(){r(e)});let a=t.tweens.addProperty(s);e._currentTweens.push(a)}function C_e(e){return function(t){let n=t._scene;n._mode=re.SCENE3D,n.morphTime=re.getMorphTime(re.SCENE3D),mY(t);let i=n.camera;(t._previousMode!==re.MORPHING||t._morphCancelled)&&(t._morphCancelled=!1,m.clone(e.position,i.position),m.clone(e.direction,i.direction),m.clone(e.up,i.up),m.cross(i.direction,i.up,i.right),m.normalize(i.right,i.right),i.frustum=e.frustum.clone());let o=i.frustum;n.frameState.useLogDepth&&(o.near=.1,o.far=1e10);let r=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,re.SCENE3D,r)}}function x_e(e){return function(t){let n=t._scene;n._mode=re.SCENE2D,n.morphTime=re.getMorphTime(re.SCENE2D),mY(t);let i=n.camera;m.clone(e.position,i.position),i.position.z=n.ellipsoid.maximumRadius*2,m.clone(e.direction,i.direction),m.clone(e.up,i.up),m.cross(i.direction,i.up,i.right),m.normalize(i.right,i.right),i.frustum=e.frustum.clone();let o=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,re.SCENE2D,o)}}function Lyt(e){return function(t){let n=t._scene;n._mode=re.COLUMBUS_VIEW,n.morphTime=re.getMorphTime(re.COLUMBUS_VIEW),mY(t);let i=n.camera;(t._previousModeMode!==re.MORPHING||t._morphCancelled)&&(t._morphCancelled=!1,m.clone(e.position,i.position),m.clone(e.direction,i.direction),m.clone(e.up,i.up),m.cross(i.direction,i.up,i.right),m.normalize(i.right,i.right));let o=i.frustum;n.frameState.useLogDepth&&(o.near=.1,o.far=1e10);let r=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,re.COLUMBUS_VIEW,r)}}var qM=UI;var TOi=y(C(),1);var U3i=y(C(),1);var w3i=y(C(),1),Ryt={LEFT_DRAG:0,RIGHT_DRAG:1,MIDDLE_DRAG:2,WHEEL:3,PINCH:4},qi=Object.freeze(Ryt);function Ra(e,t){let n=`${e}`;return l(t)&&(n+=`+${t}`),n}function Vyt(e,t){D.clone(e.distance.startPosition,t.distance.startPosition),D.clone(e.distance.endPosition,t.distance.endPosition),D.clone(e.angleAndHeight.startPosition,t.angleAndHeight.startPosition),D.clone(e.angleAndHeight.endPosition,t.angleAndHeight.endPosition)}function I_e(e,t,n){let i=Ra(qi.PINCH,t),o=e._update,r=e._isDown,s=e._eventStartPosition,a=e._pressTime,c=e._releaseTime;o[i]=!0,r[i]=!1,s[i]=new D;let d=e._movement[i];l(d)||(d=e._movement[i]={}),d.distance={startPosition:new D,endPosition:new D},d.angleAndHeight={startPosition:new D,endPosition:new D},d.prevAngle=0,e._eventHandler.setInputAction(function(u){e._buttonsDown++,r[i]=!0,a[i]=new Date,D.lerp(u.position1,u.position2,.5,s[i])},Zn.PINCH_START,t),e._eventHandler.setInputAction(function(){e._buttonsDown=Math.max(e._buttonsDown-1,0),r[i]=!1,c[i]=new Date},Zn.PINCH_END,t),e._eventHandler.setInputAction(function(u){if(r[i]){o[i]?(Vyt(u,d),o[i]=!1,d.prevAngle=d.angleAndHeight.startPosition.x):(D.clone(u.distance.endPosition,d.distance.endPosition),D.clone(u.angleAndHeight.endPosition,d.angleAndHeight.endPosition));let h=d.angleAndHeight.endPosition.x,p=d.prevAngle,g=Math.PI*2;for(;h>=p+Math.PI;)h-=g;for(;h<p-Math.PI;)h+=g;d.angleAndHeight.endPosition.x=-h*n.clientWidth/12,d.angleAndHeight.startPosition.x=-p*n.clientWidth/12}},Zn.PINCH_MOVE,t)}function __e(e,t){let n=Ra(qi.WHEEL,t),i=e._pressTime,o=e._releaseTime,r=e._update;r[n]=!0;let s=e._movement[n];l(s)||(s=e._movement[n]={});let a=e._lastMovement[n];l(a)||(a=e._lastMovement[n]={startPosition:new D,endPosition:new D,valid:!1}),s.startPosition=new D,D.clone(D.ZERO,s.startPosition),s.endPosition=new D,e._eventHandler.setInputAction(function(c){let d=7.5*Z.toRadians(c);i[n]=o[n]=new Date,s.endPosition.x=0,s.endPosition.y=d,D.clone(s.endPosition,a.endPosition),a.valid=!0,r[n]=!1},Zn.WHEEL,t)}function fL(e,t,n){let i=Ra(n,t),o=e._isDown,r=e._eventStartPosition,s=e._pressTime;o[i]=!1,r[i]=new D;let a=e._lastMovement[i];l(a)||(a=e._lastMovement[i]={startPosition:new D,endPosition:new D,valid:!1});let c,d;n===qi.LEFT_DRAG?(c=Zn.LEFT_DOWN,d=Zn.LEFT_UP):n===qi.RIGHT_DRAG?(c=Zn.RIGHT_DOWN,d=Zn.RIGHT_UP):n===qi.MIDDLE_DRAG&&(c=Zn.MIDDLE_DOWN,d=Zn.MIDDLE_UP),e._eventHandler.setInputAction(function(u){e._buttonsDown++,a.valid=!1,o[i]=!0,s[i]=new Date,D.clone(u.position,r[i])},c,t),e._eventHandler.setInputAction(function(){T6(Ra(n,void 0),e);for(let u of Object.values(La)){let h=Ra(n,u);T6(h,e)}},d,t)}function T6(e,t){let n=t._releaseTime,i=t._isDown;i[e]&&(t._buttonsDown=Math.max(t._buttonsDown-1,0)),i[e]=!1,n[e]=new Date}function E_e(e,t){D.clone(e.startPosition,t.startPosition),D.clone(e.endPosition,t.endPosition)}function Gyt(e,t,n){let i=n._isDown,o=!1,r=Ra(e,t);for(let[c,d]of Object.entries(i))c.startsWith(e)&&d&&c!==r&&(o=!0,T6(c,n));if(!o)return;let s=n._pressTime,a=n._lastMovement[r];l(a)||(a=n._lastMovement[r]={startPosition:new D,endPosition:new D,valid:!1}),n._buttonsDown++,a.valid=!1,i[r]=!0,s[r]=new Date}function T_e(e,t){let n=e._update,i=e._movement,o=e._lastMovement,r=e._isDown;for(let s in qi)if(qi.hasOwnProperty(s)){let a=qi[s];if(l(a)){let c=Ra(a,t);n[c]=!0,l(e._lastMovement[c])||(e._lastMovement[c]={startPosition:new D,endPosition:new D,valid:!1}),l(e._movement[c])||(e._movement[c]={startPosition:new D,endPosition:new D})}}e._eventHandler.setInputAction(function(s){for(let a in qi)if(qi.hasOwnProperty(a)){let c=qi[a];if(l(c)){let d=Ra(c,t);Gyt(c,t,e),r[d]&&(n[d]?(E_e(i[d],o[d]),o[d].valid=!0,E_e(s,i[d]),n[d]=!1):D.clone(s.endPosition,i[d].endPosition))}}D.clone(s.endPosition,e._currentMousePosition)},Zn.MOUSE_MOVE,t)}function Qm(e){this._eventHandler=new Su(e),this._update={},this._movement={},this._lastMovement={},this._isDown={},this._eventStartPosition={},this._pressTime={},this._releaseTime={},this._buttonsDown=0,this._currentMousePosition=new D,__e(this,void 0),I_e(this,void 0,e),fL(this,void 0,qi.LEFT_DRAG),fL(this,void 0,qi.RIGHT_DRAG),fL(this,void 0,qi.MIDDLE_DRAG),T_e(this,void 0);for(let t in La)if(La.hasOwnProperty(t)){let n=La[t];l(n)&&(__e(this,n),I_e(this,n,e),fL(this,n,qi.LEFT_DRAG),fL(this,n,qi.RIGHT_DRAG),fL(this,n,qi.MIDDLE_DRAG),T_e(this,n))}}Object.defineProperties(Qm.prototype,{currentMousePosition:{get:function(){return this._currentMousePosition}},anyButtonDown:{get:function(){let e=!this._update[Ra(qi.WHEEL)]||!this._update[Ra(qi.WHEEL,La.SHIFT)]||!this._update[Ra(qi.WHEEL,La.CTRL)]||!this._update[Ra(qi.WHEEL,La.ALT)];return this._buttonsDown>0||e}}});Qm.prototype.isMoving=function(e,t){let n=Ra(e,t);return!this._update[n]};Qm.prototype.getMovement=function(e,t){let n=Ra(e,t);return this._movement[n]};Qm.prototype.getLastMovement=function(e,t){let n=Ra(e,t),i=this._lastMovement[n];if(i.valid)return i};Qm.prototype.isButtonDown=function(e,t){let n=Ra(e,t);return this._isDown[n]};Qm.prototype.getStartMousePosition=function(e,t){if(e===qi.WHEEL)return this._currentMousePosition;let n=Ra(e,t);return this._eventStartPosition[n]};Qm.prototype.getButtonPressTime=function(e,t){let n=Ra(e,t);return this._pressTime[n]};Qm.prototype.getButtonReleaseTime=function(e,t){let n=Ra(e,t);return this._releaseTime[n]};Qm.prototype.reset=function(){for(let e in this._update)this._update.hasOwnProperty(e)&&(this._update[e]=!0)};Qm.prototype.isDestroyed=function(){return!1};Qm.prototype.destroy=function(){return this._eventHandler=this._eventHandler&&this._eventHandler.destroy(),me(this)};var $M=Qm;var q3i=y(C(),1);function hY(e,t,n,i,o,r,s,a,c,d){this._tweens=e,this._tweenjs=t,this._startObject=ke(n),this._stopObject=ke(i),this._duration=o,this._delay=r,this._easingFunction=s,this._update=a,this._complete=c,this.cancel=d,this.needsStart=!0}Object.defineProperties(hY.prototype,{startObject:{get:function(){return this._startObject}},stopObject:{get:function(){return this._stopObject}},duration:{get:function(){return this._duration}},delay:{get:function(){return this._delay}},easingFunction:{get:function(){return this._easingFunction}},update:{get:function(){return this._update}},complete:{get:function(){return this._complete}},tweenjs:{get:function(){return this._tweenjs}}});hY.prototype.cancelTween=function(){this._tweens.remove(this)};function pf(){this._tweens=[]}Object.defineProperties(pf.prototype,{length:{get:function(){return this._tweens.length}}});pf.prototype.add=function(e){if(e=e??Y.EMPTY_OBJECT,e.duration===0)return l(e.complete)&&e.complete(),new hY(this);let t=e.duration/ai.SECONDS_PER_MILLISECOND,n=e.delay??0,i=n/ai.SECONDS_PER_MILLISECOND,o=e.easingFunction??ms.LINEAR_NONE,r=e.startObject,s=new dye(r);s.to(ke(e.stopObject),t),s.delay(i),s.easing(o),l(e.update)&&s.onUpdate(function(){e.update(r)}),s.onComplete(e.complete??null),s.repeat(e._repeat??0);let a=new hY(this,s,e.startObject,e.stopObject,e.duration,n,o,e.update,e.complete,e.cancel);return this._tweens.push(a),a};pf.prototype.addProperty=function(e){e=e??Y.EMPTY_OBJECT;let t=e.object,n=e.property,i=e.startValue,o=e.stopValue;function r(s){t[n]=s.value}return this.add({startObject:{value:i},stopObject:{value:o},duration:e.duration??3,delay:e.delay,easingFunction:e.easingFunction,update:r,complete:e.complete,cancel:e.cancel,_repeat:e._repeat})};pf.prototype.addAlpha=function(e){e=e??Y.EMPTY_OBJECT;let t=e.material,n=[];for(let o in t.uniforms)t.uniforms.hasOwnProperty(o)&&l(t.uniforms[o])&&l(t.uniforms[o].alpha)&&n.push(o);function i(o){let r=n.length;for(let s=0;s<r;++s)t.uniforms[n[s]].alpha=o.alpha}return this.add({startObject:{alpha:e.startValue??0},stopObject:{alpha:e.stopValue??1},duration:e.duration??3,delay:e.delay,easingFunction:e.easingFunction,update:i,complete:e.complete,cancel:e.cancel})};pf.prototype.addOffsetIncrement=function(e){e=e??Y.EMPTY_OBJECT;let n=e.material.uniforms;return this.addProperty({object:n,property:"offset",startValue:n.offset,stopValue:n.offset+1,duration:e.duration,delay:e.delay,easingFunction:e.easingFunction,update:e.update,cancel:e.cancel,_repeat:1/0})};pf.prototype.remove=function(e){if(!l(e))return!1;let t=this._tweens.indexOf(e);return t!==-1?(e.tweenjs.stop(),l(e.cancel)&&e.cancel(),this._tweens.splice(t,1),!0):!1};pf.prototype.removeAll=function(){let e=this._tweens;for(let t=0;t<e.length;++t){let n=e[t];n.tweenjs.stop(),l(n.cancel)&&n.cancel()}e.length=0};pf.prototype.contains=function(e){return l(e)&&this._tweens.indexOf(e)!==-1};pf.prototype.get=function(e){return this._tweens[e]};pf.prototype.update=function(e){let t=this._tweens,n=0;for(e=l(e)?e/ai.SECONDS_PER_MILLISECOND:Fi();n<t.length;){let i=t[n],o=i.tweenjs;i.needsStart?(i.needsStart=!1,o.start(e)):o.update(e)?n++:(o.stop(),t.splice(n,1))}};var kI=pf;function tv(e){this.enableInputs=!0,this.enableTranslate=!0,this.enableZoom=!0,this.enableRotate=!0,this.enableTilt=!0,this.enableLook=!0,this.inertiaSpin=.9,this.inertiaTranslate=.9,this.inertiaZoom=.8,this.maximumMovementRatio=.1,this.bounceAnimationTime=3,this.minimumZoomDistance=1,this.maximumZoomDistance=Number.POSITIVE_INFINITY,this.zoomFactor=5,this.translateEventTypes=qi.LEFT_DRAG,this.zoomEventTypes=[qi.RIGHT_DRAG,qi.WHEEL,qi.PINCH],this.rotateEventTypes=qi.LEFT_DRAG,this.tiltEventTypes=[qi.MIDDLE_DRAG,qi.PINCH,{eventType:qi.LEFT_DRAG,modifier:La.CTRL},{eventType:qi.RIGHT_DRAG,modifier:La.CTRL}],this.lookEventTypes={eventType:qi.LEFT_DRAG,modifier:La.SHIFT};let t=e.ellipsoid??ie.default;this.minimumPickingTerrainHeight=ie.WGS84.equals(t)?15e4:t.minimumRadius*.025,this._minimumPickingTerrainHeight=this.minimumPickingTerrainHeight,this.minimumPickingTerrainDistanceWithInertia=ie.WGS84.equals(t)?4e3:t.minimumRadius*63e-5,this.minimumCollisionTerrainHeight=ie.WGS84.equals(t)?15e3:t.minimumRadius*.0025,this._minimumCollisionTerrainHeight=this.minimumCollisionTerrainHeight,this.minimumTrackBallHeight=ie.WGS84.equals(t)?75e5:t.minimumRadius*1.175,this._minimumTrackBallHeight=this.minimumTrackBallHeight,this.enableCollisionDetection=!0,this.maximumTiltAngle=void 0,this._scene=e,this._globe=void 0,this._ellipsoid=t,this._lastGlobeHeight=0,this._aggregator=new $M(e.canvas),this._lastInertiaSpinMovement=void 0,this._lastInertiaZoomMovement=void 0,this._lastInertiaTranslateMovement=void 0,this._lastInertiaTiltMovement=void 0,this._inertiaDisablers={_lastInertiaZoomMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement","_lastInertiaTiltMovement"],_lastInertiaTiltMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement"]},this._tweens=new kI,this._tween=void 0,this._horizontalRotationAxis=void 0,this._tiltCenterMousePosition=new D(-1,-1),this._tiltCenter=new m,this._rotateMousePosition=new D(-1,-1),this._rotateStartPosition=new m,this._strafeStartPosition=new m,this._strafeMousePosition=new D,this._strafeEndMousePosition=new D,this._zoomMouseStart=new D(-1,-1),this._zoomWorldPosition=new m,this._useZoomWorldPosition=!1,this._panLastMousePosition=new D,this._panLastWorldPosition=new m,this._tiltCVOffMap=!1,this._looking=!1,this._rotating=!1,this._strafing=!1,this._zoomingOnVector=!1,this._zoomingUnderground=!1,this._rotatingZoom=!1,this._adjustedHeightForTerrain=!1,this._cameraUnderground=!1;let n=e.mapProjection;this._maxCoord=n.project(new ge(Math.PI,Z.PI_OVER_TWO)),this._rotateFactor=void 0,this._rotateRateRangeAdjustment=void 0,this._maximumRotateRate=1.77,this._minimumRotateRate=1/5e3,this._minimumZoomRate=20,this._maximumZoomRate=5906376272e3,this._minimumUndergroundPickDistance=2e3,this._maximumUndergroundPickDistance=1e4}function Zyt(e,t){if(e<0)return 0;let n=(1-t)*25;return Math.exp(-n*e)}function Byt(e){return D.equalsEpsilon(e.startPosition,e.endPosition,Z.EPSILON14)}var wyt=.4;function Xyt(e,t,n,i,o,r,s){let a=r[s];l(a)||(a=r[s]={startPosition:new D,endPosition:new D,motion:new D,inertiaEnabled:!0});let c=e.getButtonPressTime(t,n),d=e.getButtonReleaseTime(t,n),u=c&&d&&(d.getTime()-c.getTime())/1e3,p=d&&(new Date().getTime()-d.getTime())/1e3;if(c&&d&&u<wyt){let g=Zyt(p,i),f=e.getLastMovement(t,n);if(!l(f)||Byt(f)||!a.inertiaEnabled||(a.motion.x=(f.endPosition.x-f.startPosition.x)*.5,a.motion.y=(f.endPosition.y-f.startPosition.y)*.5,a.startPosition=D.clone(f.startPosition,a.startPosition),a.endPosition=D.multiplyByScalar(a.motion,g,a.endPosition),a.endPosition=D.add(a.startPosition,a.endPosition,a.endPosition),isNaN(a.endPosition.x)||isNaN(a.endPosition.y)||D.distance(a.startPosition,a.endPosition)<.5))return;if(!e.isButtonDown(t,n)){let b=e.getStartMousePosition(t,n);o(r,b,a)}}}function Wyt(e,t){if(l(t)){let n=e[t];l(n)&&(n.inertiaEnabled=!0);let i=e._inertiaDisablers[t];if(l(i)){let o=i.length;for(let r=0;r<o;++r)n=e[i[r]],l(n)&&(n.inertiaEnabled=!1)}}}var S_e=[];function Dl(e,t,n,i,o,r){if(!l(n))return;let s=e._aggregator;Array.isArray(n)||(S_e[0]=n,n=S_e);let a=n.length;for(let c=0;c<a;++c){let d=n[c],u=l(d.eventType)?d.eventType:d,h=d.modifier,p=s.isMoving(u,h)&&s.getMovement(u,h),g=s.getStartMousePosition(u,h);e.enableInputs&&t&&(p?(i(e,g,p),Wyt(e,r)):o<1&&Xyt(s,u,h,o,i,e,r))}}var fY=new En,Fyt=new m,Pyt=new D,Myt=new m,vyt=new D,Nyt=new m,Dyt=new m,Qyt=new m,Uyt=new m,M_e=new m,kyt=new m,Yyt=new m,Oyt=new m,Hyt=new m,zyt=new m,Kyt=new m,Jyt=new m,jyt=new m,qyt=new m,$yt=new m,YI=new m,L_e=new m,R_e=new m,S6={orientation:new ic};function X6(e,t,n,i,o,r){let s=1;l(r)&&(s=Z.clamp(Math.abs(r),.25,1));let a=n.endPosition.y-n.startPosition.y,d=a>0?e.minimumZoomDistance*s:0,u=e.maximumZoomDistance,h=o-d,p=i*h;p=Z.clamp(p,e._minimumZoomRate,e._maximumZoomRate);let g=a/e._scene.canvas.clientHeight;g=Math.min(g,e.maximumMovementRatio);let f=p*g;if(e.enableCollisionDetection||e.minimumZoomDistance===0||!l(e._globe)){if(f>0&&Math.abs(o-d)<1||f<0&&Math.abs(o-u)<1)return;o-f<d?f=o-d-1:o-f>u&&(f=o-u)}let b=e._scene,x=b.camera,I=b.mode,_=S6.orientation;_.heading=x.heading,_.pitch=x.pitch,_.roll=x.roll;let E=n.inertiaEnabled??D.equals(t,e._zoomMouseStart),S=e._zoomingOnVector,R=e._rotatingZoom,G;if(E||(e._zoomMouseStart=D.clone(t,e._zoomMouseStart),l(e._globe)&&I===re.SCENE2D?(G=x.getPickRay(t,fY).origin,G=m.fromElements(G.y,G.z,G.x)):l(e._globe)&&(G=Jg(e,t,Fyt)),l(G)?(e._useZoomWorldPosition=!0,e._zoomWorldPosition=m.clone(G,e._zoomWorldPosition)):e._useZoomWorldPosition=!1,S=e._zoomingOnVector=!1,R=e._rotatingZoom=!1,e._zoomingUnderground=e._cameraUnderground),!e._useZoomWorldPosition){x.zoomIn(f);return}let B=I===re.COLUMBUS_VIEW;if(x.positionCartographic.height<2e6&&(R=!0),!E||R){if(I===re.SCENE2D){let w=e._zoomWorldPosition,F=x.position;if(!m.equals(w,F)&&x.positionCartographic.height<e._maxCoord.x*2){let P=x.position.x,A=m.subtract(w,F,Myt);m.normalize(A,A);let T=m.distance(w,F)*f/(x.getMagnitude()*.5);x.move(A,T*.5),(x.position.x<0&&P>0||x.position.x>0&&P<0)&&(G=x.getPickRay(t,fY).origin,G=m.fromElements(G.y,G.z,G.x),e._zoomWorldPosition=m.clone(G,e._zoomWorldPosition))}}else if(I===re.SCENE3D){let w=m.normalize(x.position,M_e);if(e._cameraUnderground||e._zoomingUnderground||x.positionCartographic.height<3e3&&Math.abs(m.dot(x.direction,w))<.6)B=!0;else{let F=b.canvas,P=vyt;P.x=F.clientWidth/2,P.y=F.clientHeight/2;let A=Jg(e,P,Nyt);if(!l(A))B=!0;else if(x.positionCartographic.height<1e6)if(m.dot(x.direction,w)>=-.5)B=!0;else{let T=Yyt;m.clone(x.position,T);let L=e._zoomWorldPosition,V=kyt;if(V=m.normalize(L,V),m.dot(V,w)<0)return;let W=$yt,M=zyt;m.clone(x.direction,M),m.add(T,m.multiplyByScalar(M,1e3,YI),W);let Q=Kyt,N=Jyt;m.subtract(L,T,Q),m.normalize(Q,N);let k=m.dot(w,N);if(k>=0){e._zoomMouseStart.x=-1;return}let v=Math.acos(-k),O=m.magnitude(T),H=m.magnitude(L),ee=O-f,K=m.magnitude(Q),te=Math.asin(Z.clamp(K/H*Math.sin(v),-1,1)),q=Math.asin(Z.clamp(ee/H*Math.sin(v),-1,1)),pe=te-q+v,ye=Oyt;m.normalize(T,ye);let he=Hyt;he=m.cross(N,ye,he),he=m.normalize(he,he),m.normalize(m.cross(ye,he,YI),M),m.multiplyByScalar(m.normalize(W,YI),m.magnitude(W)-f,W),m.normalize(T,T),m.multiplyByScalar(T,ee,T);let xe=jyt;m.multiplyByScalar(m.add(m.multiplyByScalar(ye,Math.cos(pe)-1,L_e),m.multiplyByScalar(M,Math.sin(pe),R_e),YI),ee,xe),m.add(T,xe,T),m.normalize(W,ye),m.normalize(m.cross(ye,he,YI),M);let Te=qyt;m.multiplyByScalar(m.add(m.multiplyByScalar(ye,Math.cos(pe)-1,L_e),m.multiplyByScalar(M,Math.sin(pe),R_e),YI),m.magnitude(W),Te),m.add(W,Te,W),m.clone(T,x.position),m.normalize(m.subtract(W,T,YI),x.direction),m.clone(x.direction,x.direction),m.cross(x.direction,x.up,x.right),m.cross(x.right,x.direction,x.up),x.setView(S6);return}else{let T=m.normalize(A,Dyt),L=m.normalize(e._zoomWorldPosition,Qyt),V=m.dot(L,T);if(V>0&&V<1){let W=Z.acosClamped(V),M=m.cross(L,T,Uyt),Q=Math.abs(W)>Z.toRadians(20)?x.positionCartographic.height*.75:x.positionCartographic.height-f,N=f/Q;x.rotate(M,W*N)}}}}e._rotatingZoom=!B}if(!E&&B||S){let w,F=to.worldToWindowCoordinates(b,e._zoomWorldPosition,Pyt);I!==re.COLUMBUS_VIEW&&D.equals(t,e._zoomMouseStart)&&l(F)?w=x.getPickRay(F,fY):w=x.getPickRay(t,fY);let P=w.direction;(I===re.COLUMBUS_VIEW||I===re.SCENE2D)&&m.fromElements(P.y,P.z,P.x,P),x.move(P,f),e._zoomingOnVector=!0}else x.zoomIn(f);e._cameraUnderground||x.setView(S6)}var eCt=new En,tCt=new En,nCt=new m;function iCt(e,t,n){let o=e._scene.camera,r=o.getPickRay(n.startPosition,eCt).origin,s=o.getPickRay(n.endPosition,tCt).origin;r=m.fromElements(r.y,r.z,r.x,r),s=m.fromElements(s.y,s.z,s.x,s);let a=m.subtract(r,s,nCt),c=m.magnitude(a);c>0&&(m.normalize(a,a),o.move(a,c))}function V_e(e,t,n){l(n.distance)&&(n=n.distance);let o=e._scene.camera;X6(e,t,n,e.zoomFactor,o.getMagnitude())}var oCt=new D,rCt=new D;function G_e(e,t,n){if(l(n.angleAndHeight)){sCt(e,t,n.angleAndHeight);return}let i=e._scene,o=i.camera,r=i.canvas,s=r.clientWidth,a=r.clientHeight,c=oCt;c.x=2/s*n.startPosition.x-1,c.y=2/a*(a-n.startPosition.y)-1,c=D.normalize(c,c);let d=rCt;d.x=2/s*n.endPosition.x-1,d.y=2/a*(a-n.endPosition.y)-1,d=D.normalize(d,d);let u=Z.acosClamped(c.x);c.y<0&&(u=Z.TWO_PI-u);let h=Z.acosClamped(d.x);d.y<0&&(h=Z.TWO_PI-h);let p=h-u;o.twistRight(p)}function sCt(e,t,n){let i=e._rotateFactor*e._rotateRateRangeAdjustment;i>e._maximumRotateRate&&(i=e._maximumRotateRate),i<e._minimumRotateRate&&(i=e._minimumRotateRate);let o=e._scene,r=o.camera,s=o.canvas,a=(n.endPosition.x-n.startPosition.x)/s.clientWidth;a=Math.min(a,e.maximumMovementRatio);let c=i*a*Math.PI*4;r.twistRight(c)}function aCt(e){let t=e._scene.mapMode2D===_d.ROTATE;X.equals(X.IDENTITY,e._scene.camera.transform)?(Dl(e,e.enableTranslate,e.translateEventTypes,iCt,e.inertiaTranslate,"_lastInertiaTranslateMovement"),Dl(e,e.enableZoom,e.zoomEventTypes,V_e,e.inertiaZoom,"_lastInertiaZoomMovement"),t&&Dl(e,e.enableRotate,e.tiltEventTypes,G_e,e.inertiaSpin,"_lastInertiaTiltMovement")):(Dl(e,e.enableZoom,e.zoomEventTypes,V_e,e.inertiaZoom,"_lastInertiaZoomMovement"),t&&Dl(e,e.enableRotate,e.translateEventTypes,G_e,e.inertiaSpin,"_lastInertiaSpinMovement"))}var v_e=new En,cCt=new m,lCt=new m;function Jg(e,t,n){let i=e._scene,o=e._globe,r=i.camera,s;if(i.pickPositionSupported&&(s=i.pickPositionWorldCoordinates(t,cCt)),!l(o))return m.clone(s,n);let a=!e._cameraUnderground,c=r.getPickRay(t,v_e),d=o.pickWorldCoordinates(c,i,a,lCt),u=l(s)?m.distance(s,r.positionWC):Number.POSITIVE_INFINITY,h=l(d)?m.distance(d,r.positionWC):Number.POSITIVE_INFINITY;return u<h?m.clone(s,n):m.clone(d,n)}var dCt=new ge;function xY(e){let t=e._ellipsoid,n=e._scene,i=n.camera,o=n.mode,r=0;if(o===re.SCENE3D){let c=t.cartesianToCartographic(i.position,dCt);l(c)&&(r=c.height)}else r=i.position.z;let s=e._scene.globeHeight??0;return Math.abs(s-r)}var uCt=new m;function N_e(e,t){let n=t.origin,i=t.direction,o=xY(e),r=m.normalize(n,uCt),s=Math.abs(m.dot(r,i));return s=Math.max(s,.5)*2,o*s}function D_e(e,t,n,i){let o=m.distance(t.origin,n),r=xY(e),s=Z.clamp(r*5,e._minimumUndergroundPickDistance,e._maximumUndergroundPickDistance);return o>s&&(o=Math.min(o,r/5),o=Math.max(o,100)),En.getPoint(t,o,i)}function Q_e(e,t,n,i){let o;return l(n)?(o=m.distance(t.origin,n),o>e._maximumUndergroundPickDistance&&(o=xY(e))):o=xY(e),En.getPoint(t,o,i)}var mCt=new D;function U_e(e,t){let n=t.endPosition,i=D.subtract(t.endPosition,t.startPosition,mCt),o=e._strafeEndMousePosition;D.add(o,i,o),t.endPosition=o,W6(e,t,e._strafeStartPosition),t.endPosition=n}var Z_e=new En,hCt=new En,L6=new m,fCt=new m,pCt=new m,ACt=new m,gCt=new An(m.UNIT_X,0),bCt=new D,yCt=new D;function CCt(e,t,n){if(m.equals(t,e._translateMousePosition)||(e._looking=!1),m.equals(t,e._strafeMousePosition)||(e._strafing=!1),e._looking){Ru(e,t,n);return}if(e._strafing){U_e(e,n);return}let o=e._scene.camera,r=e._cameraUnderground,s=D.clone(n.startPosition,bCt),a=D.clone(n.endPosition,yCt),c=o.getPickRay(s,Z_e),d=m.clone(m.ZERO,ACt),u=m.UNIT_X,h;if(o.position.z<e._minimumPickingTerrainHeight&&(h=Jg(e,s,L6),l(h)&&(d.x=h.x)),r||d.x>o.position.z&&l(h)){let E=h;r&&(E=Q_e(e,c,h,L6)),D.clone(t,e._strafeMousePosition),D.clone(t,e._strafeEndMousePosition),m.clone(E,e._strafeStartPosition),e._strafing=!0,W6(e,n,e._strafeStartPosition);return}let p=An.fromPointNormal(d,u,gCt);c=o.getPickRay(s,Z_e);let g=fi.rayPlane(c,p,L6),f=o.getPickRay(a,hCt),b=fi.rayPlane(f,p,fCt);if(!l(g)||!l(b)){e._looking=!0,Ru(e,t,n),D.clone(t,e._translateMousePosition);return}let x=m.subtract(g,b,pCt),I=x.x;x.x=x.y,x.y=x.z,x.z=I;let _=m.magnitude(x);_>Z.EPSILON6&&(m.normalize(x,x),o.move(x,_))}var k_e=new D,gY=new En,bY=new m,xCt=new m,Y_e=new X,ICt=new X,_Ct=new m,ECt=new An(m.UNIT_X,0),R6=new m,Z6=new ge,O_e=new X,TCt=new Pe,SCt=new $,yY=new m;function LCt(e,t,n){if(l(n.angleAndHeight)&&(n=n.angleAndHeight),D.equals(t,e._tiltCenterMousePosition)||(e._tiltCVOffMap=!1,e._looking=!1),e._looking){Ru(e,t,n);return}let o=e._scene.camera;e._tiltCVOffMap||!e.onMap()||Math.abs(o.position.z)>e._minimumPickingTerrainHeight?(e._tiltCVOffMap=!0,RCt(e,t,n)):VCt(e,t,n)}function RCt(e,t,n){let i=e._scene,o=i.camera,r=i.canvas,s=k_e;s.x=r.clientWidth/2,s.y=r.clientHeight/2;let a=o.getPickRay(s,gY),c=m.UNIT_X,d=a.origin,u=a.direction,h,p=m.dot(c,u);if(Math.abs(p)>Z.EPSILON6&&(h=-m.dot(c,d)/p),!l(h)||h<=0){e._looking=!0,Ru(e,t,n),D.clone(t,e._tiltCenterMousePosition);return}let g=m.multiplyByScalar(u,h,bY);m.add(d,g,g);let f=i.mapProjection,b=f.ellipsoid;m.fromElements(g.y,g.z,g.x,g);let x=f.unproject(g,Z6);b.cartographicToCartesian(x,g);let I=Dt.eastNorthUpToFixedFrame(g,b,Y_e),_=e._globe,E=e._ellipsoid;e._globe=void 0,e._ellipsoid=ie.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let S=X.clone(o.transform,O_e);o._setTransform(I),Lu(e,t,n,m.UNIT_Z),o._setTransform(S),e._globe=_,e._ellipsoid=E;let R=E.maximumRadius;e._rotateFactor=1/R,e._rotateRateRangeAdjustment=R}function VCt(e,t,n){let i=e._scene,o=i.camera,r=e._cameraUnderground,s,a,c=m.UNIT_X;if(D.equals(t,e._tiltCenterMousePosition))s=m.clone(e._tiltCenter,bY);else{if(o.position.z<e._minimumPickingTerrainHeight&&(s=Jg(e,t,bY)),!l(s)){a=o.getPickRay(t,gY);let A=a.origin,T=a.direction,L,V=m.dot(c,T);if(Math.abs(V)>Z.EPSILON6&&(L=-m.dot(c,A)/V),!l(L)||L<=0){e._looking=!0,Ru(e,t,n),D.clone(t,e._tiltCenterMousePosition);return}s=m.multiplyByScalar(T,L,bY),m.add(A,s,s)}r&&(l(a)||(a=o.getPickRay(t,gY)),D_e(e,a,s,s)),D.clone(t,e._tiltCenterMousePosition),m.clone(s,e._tiltCenter)}let d=i.canvas,u=k_e;u.x=d.clientWidth/2,u.y=e._tiltCenterMousePosition.y,a=o.getPickRay(u,gY);let h=m.clone(m.ZERO,_Ct);h.x=s.x;let p=An.fromPointNormal(h,c,ECt),g=fi.rayPlane(a,p,xCt),f=o._projection,b=f.ellipsoid;m.fromElements(s.y,s.z,s.x,s);let x=f.unproject(s,Z6);b.cartographicToCartesian(x,s);let I=Dt.eastNorthUpToFixedFrame(s,b,Y_e),_;l(g)?(m.fromElements(g.y,g.z,g.x,g),x=f.unproject(g,Z6),b.cartographicToCartesian(x,g),_=Dt.eastNorthUpToFixedFrame(g,b,ICt)):_=I;let E=e._globe,S=e._ellipsoid;e._globe=void 0,e._ellipsoid=ie.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let R=m.UNIT_Z,G=X.clone(o.transform,O_e);o._setTransform(I);let B=m.cross(m.UNIT_Z,m.normalize(o.position,R6),R6),w=m.dot(o.right,B);if(Lu(e,t,n,R,!1,!0),o._setTransform(_),w<0){let A=n.startPosition.y-n.endPosition.y;(r&&A<0||!r&&A>0)&&(R=void 0);let T=o.constrainedAxis;o.constrainedAxis=void 0,Lu(e,t,n,R,!0,!1),o.constrainedAxis=T}else Lu(e,t,n,R,!0,!1);if(l(o.constrainedAxis)){let A=m.cross(o.direction,o.constrainedAxis,yY);m.equalsEpsilon(A,m.ZERO,Z.EPSILON6)||(m.dot(A,o.right)<0&&m.negate(A,A),m.cross(A,o.direction,o.up),m.cross(o.direction,o.up,o.right),m.normalize(o.up,o.up),m.normalize(o.right,o.right))}o._setTransform(G),e._globe=E,e._ellipsoid=S;let F=S.maximumRadius;e._rotateFactor=1/F,e._rotateRateRangeAdjustment=F;let P=m.clone(o.positionWC,R6);if(e.enableCollisionDetection&&M6(e,!0),!m.equals(o.positionWC,P)){o._setTransform(_),o.worldToCameraCoordinatesPoint(P,P);let A=m.magnitudeSquared(P);m.magnitudeSquared(o.position)>A&&(m.normalize(o.position,o.position),m.multiplyByScalar(o.position,Math.sqrt(A),o.position));let T=m.angleBetween(P,o.position),L=m.cross(P,o.position,P);m.normalize(L,L);let V=Pe.fromAxisAngle(L,T,TCt),W=$.fromQuaternion(V,SCt);$.multiplyByVector(W,o.direction,o.direction),$.multiplyByVector(W,o.up,o.up),m.cross(o.direction,o.up,o.right),m.cross(o.right,o.direction,o.up),o._setTransform(G)}}var H_e=new D,z_e=new En,K_e=new m;function GCt(e,t,n){l(n.distance)&&(n=n.distance);let i=e._scene,o=i.camera,r=i.canvas,s=e._cameraUnderground,a;s?a=t:(a=H_e,a.x=r.clientWidth/2,a.y=r.clientHeight/2);let c=o.getPickRay(a,z_e),d=c.origin,u=c.direction,h=o.position.z,p;h<e._minimumPickingTerrainHeight&&(p=Jg(e,a,K_e));let g;if(l(p)&&(g=m.distance(d,p)),s){let f=N_e(e,c,h);l(g)?g=Math.min(g,f):g=f}if(!l(g)){let f=m.UNIT_X;g=-m.dot(f,d)/m.dot(f,u)}X6(e,t,n,e.zoomFactor,g)}function ZCt(e){let n=e._scene.camera;if(!X.equals(X.IDENTITY,n.transform))Dl(e,e.enableRotate,e.rotateEventTypes,Lu,e.inertiaSpin,"_lastInertiaSpinMovement"),Dl(e,e.enableZoom,e.zoomEventTypes,j_e,e.inertiaZoom,"_lastInertiaZoomMovement");else{let i=e._tweens;if(e._aggregator.anyButtonDown&&i.removeAll(),Dl(e,e.enableTilt,e.tiltEventTypes,LCt,e.inertiaSpin,"_lastInertiaTiltMovement"),Dl(e,e.enableTranslate,e.translateEventTypes,CCt,e.inertiaTranslate,"_lastInertiaTranslateMovement"),Dl(e,e.enableZoom,e.zoomEventTypes,GCt,e.inertiaZoom,"_lastInertiaZoomMovement"),Dl(e,e.enableLook,e.lookEventTypes,Ru),!e._aggregator.anyButtonDown&&!i.contains(e._tween)){let o=n.createCorrectPositionTween(e.bounceAnimationTime);l(o)&&(e._tween=i.add(o))}i.update()}}var BCt=new En,wCt=new An(m.UNIT_X,0),XCt=new m,WCt=new m;function W6(e,t,n){let i=e._scene,o=i.camera,r=o.getPickRay(t.endPosition,BCt),s=m.clone(o.direction,WCt);i.mode===re.COLUMBUS_VIEW&&m.fromElements(s.z,s.x,s.y,s);let a=An.fromPointNormal(n,s,wCt),c=fi.rayPlane(r,a,XCt);l(c)&&(s=m.subtract(n,c,s),i.mode===re.COLUMBUS_VIEW&&m.fromElements(s.y,s.z,s.x,s),m.add(o.position,s,o.position))}var B_e=new m,J_e=new ge,B6=new m,w6=new ie,FCt=new m,PCt=new m,MCt=new m;function vCt(e,t,n){let o=e._scene.camera,r=e._cameraUnderground,s=e._ellipsoid;if(!X.equals(o.transform,X.IDENTITY)){Lu(e,t,n);return}let a,c,d=s.geodeticSurfaceNormal(o.position,FCt);if(D.equals(t,e._rotateMousePosition)){if(e._looking)Ru(e,t,n,d);else if(e._rotating)Lu(e,t,n);else if(e._strafing)U_e(e,n);else{if(m.magnitude(o.position)<m.magnitude(e._rotateStartPosition))return;a=m.magnitude(e._rotateStartPosition),c=B6,c.x=c.y=c.z=a,s=ie.fromCartesian3(c,w6),G6(e,t,n,s)}return}e._looking=!1,e._rotating=!1,e._strafing=!1;let u=s.cartesianToCartographic(o.positionWC,J_e).height,h=e._globe;if(l(h)&&u<e._minimumPickingTerrainHeight){let p=Jg(e,n.startPosition,MCt);if(l(p)){let g=!1,f=o.getPickRay(n.startPosition,v_e);if(r)g=!0,Q_e(e,f,p,p);else{let b=s.geodeticSurfaceNormal(p,PCt);Math.abs(m.dot(f.direction,b))<.05?g=!0:g=m.magnitude(o.position)<m.magnitude(p)}g?(D.clone(t,e._strafeEndMousePosition),m.clone(p,e._strafeStartPosition),e._strafing=!0,W6(e,n,e._strafeStartPosition)):(a=m.magnitude(p),c=B6,c.x=c.y=c.z=a,s=ie.fromCartesian3(c,w6),G6(e,t,n,s),m.clone(p,e._rotateStartPosition))}else e._looking=!0,Ru(e,t,n,d)}else l(o.pickEllipsoid(n.startPosition,e._ellipsoid,B_e))?(G6(e,t,n,e._ellipsoid),m.clone(B_e,e._rotateStartPosition)):u>e._minimumTrackBallHeight?(e._rotating=!0,Lu(e,t,n)):(e._looking=!0,Ru(e,t,n,d));D.clone(t,e._rotateMousePosition)}function Lu(e,t,n,i,o,r){o=o??!1,r=r??!1;let s=e._scene,a=s.camera,c=s.canvas,d=a.constrainedAxis;l(i)&&(a.constrainedAxis=i);let u=m.magnitude(a.position),h=e._rotateFactor*(u-e._rotateRateRangeAdjustment);h>e._maximumRotateRate&&(h=e._maximumRotateRate),h<e._minimumRotateRate&&(h=e._minimumRotateRate);let p=(n.startPosition.x-n.endPosition.x)/c.clientWidth,g=(n.startPosition.y-n.endPosition.y)/c.clientHeight;p=Math.min(p,e.maximumMovementRatio),g=Math.min(g,e.maximumMovementRatio);let f=h*p*Math.PI*2,b=h*g*Math.PI;if(l(i)&&l(e.maximumTiltAngle)){let x=e.maximumTiltAngle,I=m.dot(a.direction,i),_=Math.PI-Math.acos(I)+b;_>x&&(b-=_-x)}o||a.rotateRight(f),r||a.rotateUp(b),a.constrainedAxis=d}var V6=ce.clone(ce.UNIT_W),w_e=ce.clone(ce.UNIT_W),pY=new m,pL=new m,AY=new m,X_e=new m,NCt=new D,DCt=new D,QCt=new D,UCt=new D,kCt=new En;function G6(e,t,n,i){let o=e._scene,r=o.camera,s=D.clone(n.startPosition,NCt),a=D.clone(n.endPosition,DCt),c=i.cartesianToCartographic(r.positionWC,J_e).height,d,u;if(!n.inertiaEnabled&&c<e._minimumPickingTerrainHeight&&(d=m.clone(e._panLastWorldPosition,V6),!l(e._globe)&&!D.equalsEpsilon(s,e._panLastMousePosition)&&(d=Jg(e,s,V6)),!l(e._globe)&&l(d))){let h=m.subtract(d,r.positionWC,pL),p=m.multiplyByScalar(r.directionWC,m.dot(r.directionWC,h),pL),g=m.magnitude(p),f=r.frustum.getPixelDimensions(o.drawingBufferWidth,o.drawingBufferHeight,g,o.pixelRatio,UCt),b=D.subtract(a,s,QCt),x=m.multiplyByScalar(r.rightWC,b.x*f.x,pL),I=m.normalize(r.positionWC,M_e),_=r.getPickRay(a,kCt).direction,E=m.subtract(_,m.projectVector(_,r.rightWC,AY),AY),S=m.angleBetween(E,r.directionWC),R=1;l(r.frustum.fov)&&(R=Math.max(Math.tan(S),.1));let G=Math.abs(m.dot(r.directionWC,I)),B=-b.y*f.y*2/Math.sqrt(R)*(1-G),w=m.multiplyByScalar(_,B,AY);G=Math.abs(m.dot(r.upWC,I));let F=m.multiplyByScalar(r.upWC,-b.y*(1-G)*f.y,X_e);u=m.add(d,x,w_e),u=m.add(u,w,u),u=m.add(u,F,u),m.clone(u,e._panLastWorldPosition),D.clone(a,e._panLastMousePosition)}if((!l(d)||!l(u))&&(d=r.pickEllipsoid(s,i,V6),u=r.pickEllipsoid(a,i,w_e)),!l(d)||!l(u)){e._rotating=!0,Lu(e,t,n);return}if(d=r.worldToCameraCoordinates(d,d),u=r.worldToCameraCoordinates(u,u),l(r.constrainedAxis)){let h=r.constrainedAxis,p=m.mostOrthogonalAxis(h,pY);m.cross(p,h,p),m.normalize(p,p);let g=m.cross(h,p,pL),f=m.magnitude(d),b=m.dot(h,d),x=Math.acos(b/f),I=m.multiplyByScalar(h,b,AY);m.subtract(d,I,I),m.normalize(I,I);let _=m.magnitude(u),E=m.dot(h,u),S=Math.acos(E/_),R=m.multiplyByScalar(h,E,X_e);m.subtract(u,R,R),m.normalize(R,R);let G=Math.acos(m.dot(I,p));m.dot(I,g)<0&&(G=Z.TWO_PI-G);let B=Math.acos(m.dot(R,p));m.dot(R,g)<0&&(B=Z.TWO_PI-B);let w=G-B,F;m.equalsEpsilon(h,r.position,Z.EPSILON2)?F=r.right:F=m.cross(h,r.position,pY);let P=m.cross(h,F,pY),A=m.dot(P,m.subtract(d,h,pL)),T=m.dot(P,m.subtract(u,h,pL)),L;A>0&&T>0?L=S-x:A>0&&T<=0?m.dot(r.position,h)>0?L=-x-S:L=x+S:L=x-S,r.rotateRight(w),r.rotateUp(L)}else{m.normalize(d,d),m.normalize(u,u);let h=m.dot(d,u),p=m.cross(d,u,pY);if(h<1&&!m.equalsEpsilon(p,m.ZERO,Z.EPSILON14)){let g=Math.acos(h);r.rotate(p,g)}}}var YCt=new m,OCt=new ge,W_e=0;function j_e(e,t,n){l(n.distance)&&(n=n.distance);let i=n.inertiaEnabled,o=e._ellipsoid,r=e._scene,s=r.camera,a=r.canvas,c=e._cameraUnderground,d;c?d=t:(d=H_e,d.x=a.clientWidth/2,d.y=a.clientHeight/2);let u=s.getPickRay(d,z_e),h,p=o.cartesianToCartographic(s.position,OCt).height,g=Math.abs(W_e)<e.minimumPickingTerrainDistanceWithInertia;(i?g:p<e._minimumPickingTerrainHeight)&&(h=Jg(e,d,K_e));let b;if(l(h)&&(b=m.distance(u.origin,h),W_e=b),c){let I=N_e(e,u,p);l(b)?b=Math.min(b,I):b=I}l(b)||(b=p);let x=m.normalize(s.position,YCt);X6(e,t,n,e.zoomFactor,b,m.dot(x,s.direction))}var q_e=new D,CY=new En,ev=new m,HCt=new m,$_e=new X,zCt=new X,eEe=new X,KCt=new Pe,JCt=new $,F6=new ge,P6=new m;function jCt(e,t,n){let o=e._scene.camera;if(!X.equals(o.transform,X.IDENTITY))return;if(l(n.angleAndHeight)&&(n=n.angleAndHeight),D.equals(t,e._tiltCenterMousePosition)||(e._tiltOnEllipsoid=!1,e._looking=!1),e._looking){let a=e._ellipsoid.geodeticSurfaceNormal(o.position,P6);Ru(e,t,n,a);return}let s=e._ellipsoid.cartesianToCartographic(o.position,F6);e._tiltOnEllipsoid||s.height>e._minimumCollisionTerrainHeight?(e._tiltOnEllipsoid=!0,$Ct(e,t,n)):ext(e,t,n)}var qCt=new ge;function $Ct(e,t,n){let i=e._ellipsoid,o=e._scene,r=o.camera,s=e.minimumZoomDistance*.25,a=i.cartesianToCartographic(r.positionWC,qCt).height;if(a-s-1<Z.EPSILON3&&n.endPosition.y-n.startPosition.y<0)return;let c=o.canvas,d=q_e;d.x=c.clientWidth/2,d.y=c.clientHeight/2;let u=r.getPickRay(d,CY),h,p=fi.rayEllipsoid(u,i);if(l(p))h=En.getPoint(u,p.start,ev);else if(a>e._minimumTrackBallHeight){let _=fi.grazingAltitudeLocation(u,i);if(!l(_))return;let E=i.cartesianToCartographic(_,F6);E.height=0,h=i.cartographicToCartesian(E,ev)}else{e._looking=!0;let _=e._ellipsoid.geodeticSurfaceNormal(r.position,P6);Ru(e,t,n,_),D.clone(t,e._tiltCenterMousePosition);return}let g=Dt.eastNorthUpToFixedFrame(h,i,$_e),f=e._globe,b=e._ellipsoid;e._globe=void 0,e._ellipsoid=ie.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let x=X.clone(r.transform,eEe);r._setTransform(g),Lu(e,t,n,m.UNIT_Z),r._setTransform(x),e._globe=f,e._ellipsoid=b;let I=b.maximumRadius;e._rotateFactor=1/I,e._rotateRateRangeAdjustment=I}function ext(e,t,n){let i=e._ellipsoid,o=e._scene,r=o.camera,s=e._cameraUnderground,a,c,d;if(D.equals(t,e._tiltCenterMousePosition))a=m.clone(e._tiltCenter,ev);else{if(a=Jg(e,t,ev),!l(a)){if(c=r.getPickRay(t,CY),d=fi.rayEllipsoid(c,i),!l(d)){if(i.cartesianToCartographic(r.position,F6).height<=e._minimumTrackBallHeight){e._looking=!0;let T=e._ellipsoid.geodeticSurfaceNormal(r.position,P6);Ru(e,t,n,T),D.clone(t,e._tiltCenterMousePosition)}return}a=En.getPoint(c,d.start,ev)}s&&(l(c)||(c=r.getPickRay(t,CY)),D_e(e,c,a,a)),D.clone(t,e._tiltCenterMousePosition),m.clone(a,e._tiltCenter)}let u=o.canvas,h=q_e;h.x=u.clientWidth/2,h.y=e._tiltCenterMousePosition.y,c=r.getPickRay(h,CY);let p=m.magnitude(a),g=m.fromElements(p,p,p,B6),f=ie.fromCartesian3(g,w6);if(d=fi.rayEllipsoid(c,f),!l(d))return;let b=m.magnitude(c.origin)>p?d.start:d.stop,x=En.getPoint(c,b,HCt),I=Dt.eastNorthUpToFixedFrame(a,i,$_e),_=Dt.eastNorthUpToFixedFrame(x,f,zCt),E=e._globe,S=e._ellipsoid;e._globe=void 0,e._ellipsoid=ie.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let R=m.UNIT_Z,G=X.clone(r.transform,eEe);r._setTransform(_);let B=m.cross(x,r.positionWC,yY);if(m.dot(r.rightWC,B)<0){let A=n.startPosition.y-n.endPosition.y;(s&&A<0||!s&&A>0)&&(R=void 0);let T=r.constrainedAxis;r.constrainedAxis=void 0,Lu(e,t,n,R,!0,!1),r.constrainedAxis=T}else Lu(e,t,n,R,!0,!1);if(r._setTransform(I),Lu(e,t,n,R,!1,!0),l(r.constrainedAxis)){let A=m.cross(r.direction,r.constrainedAxis,yY);m.equalsEpsilon(A,m.ZERO,Z.EPSILON6)||(m.dot(A,r.right)<0&&m.negate(A,A),m.cross(A,r.direction,r.up),m.cross(r.direction,r.up,r.right),m.normalize(r.up,r.up),m.normalize(r.right,r.right))}r._setTransform(G),e._globe=E,e._ellipsoid=S;let F=S.maximumRadius;e._rotateFactor=1/F,e._rotateRateRangeAdjustment=F;let P=m.clone(r.positionWC,yY);if(e.enableCollisionDetection&&M6(e,!0),!m.equals(r.positionWC,P)){r._setTransform(_),r.worldToCameraCoordinatesPoint(P,P);let A=m.magnitudeSquared(P);m.magnitudeSquared(r.position)>A&&(m.normalize(r.position,r.position),m.multiplyByScalar(r.position,Math.sqrt(A),r.position));let T=m.angleBetween(P,r.position),L=m.cross(P,r.position,P);m.normalize(L,L);let V=Pe.fromAxisAngle(L,T,KCt),W=$.fromQuaternion(V,JCt);$.multiplyByVector(W,r.direction,r.direction),$.multiplyByVector(W,r.up,r.up),m.cross(r.direction,r.up,r.right),m.cross(r.right,r.direction,r.up),r._setTransform(G)}}var txt=new D,nxt=new D,F_e=new En,P_e=new En,ixt=new m,oxt=new m;function Ru(e,t,n,i){let r=e._scene.camera,s=txt;s.x=n.startPosition.x,s.y=0;let a=nxt;a.x=n.endPosition.x,a.y=0;let c=r.getPickRay(s,F_e),d=r.getPickRay(a,P_e),u=0,h,p;r.frustum instanceof gn?(h=c.origin,p=d.origin,m.add(r.direction,h,h),m.add(r.direction,p,p),m.subtract(h,r.position,h),m.subtract(p,r.position,p),m.normalize(h,h),m.normalize(p,p)):(h=c.direction,p=d.direction);let g=m.dot(h,p);g<1&&(u=Math.acos(g)),u=n.startPosition.x>n.endPosition.x?-u:u;let f=e._horizontalRotationAxis;if(l(i)?r.look(i,-u):l(f)?r.look(f,-u):r.lookLeft(u),s.x=0,s.y=n.startPosition.y,a.x=0,a.y=n.endPosition.y,c=r.getPickRay(s,F_e),d=r.getPickRay(a,P_e),u=0,r.frustum instanceof gn?(h=c.origin,p=d.origin,m.add(r.direction,h,h),m.add(r.direction,p,p),m.subtract(h,r.position,h),m.subtract(p,r.position,p),m.normalize(h,h),m.normalize(p,p)):(h=c.direction,p=d.direction),g=m.dot(h,p),g<1&&(u=Math.acos(g)),u=n.startPosition.y>n.endPosition.y?-u:u,i=i??f,l(i)){let b=r.direction,x=m.negate(i,ixt),I=m.equalsEpsilon(b,i,Z.EPSILON2),_=m.equalsEpsilon(b,x,Z.EPSILON2);if(!I&&!_){g=m.dot(b,i);let E=Z.acosClamped(g);u>0&&u>E&&(u=E-Z.EPSILON4),g=m.dot(b,x),E=Z.acosClamped(g),u<0&&-u>E&&(u=-E+Z.EPSILON4);let S=m.cross(i,b,oxt);r.look(S,u)}else(I&&u<0||_&&u>0)&&r.look(r.right,-u)}else r.lookUp(u)}function rxt(e){Dl(e,e.enableRotate,e.rotateEventTypes,vCt,e.inertiaSpin,"_lastInertiaSpinMovement"),Dl(e,e.enableZoom,e.zoomEventTypes,j_e,e.inertiaZoom,"_lastInertiaZoomMovement"),Dl(e,e.enableTilt,e.tiltEventTypes,jCt,e.inertiaSpin,"_lastInertiaTiltMovement"),Dl(e,e.enableLook,e.lookEventTypes,Ru)}var sxt=new X,axt=new ge;function M6(e,t){e._adjustedHeightForTerrain=!0;let n=e._scene,i=n.mode;if(i===re.SCENE2D||i===re.MORPHING)return;let o=n.camera,r=n.ellipsoid??ie.WGS84,s=n.mapProjection,a,c;X.equals(o.transform,X.IDENTITY)||(a=X.clone(o.transform,sxt),c=m.magnitude(o.position),o._setTransform(X.IDENTITY));let d=axt;i===re.SCENE3D?r.cartesianToCartographic(o.position,d):s.unproject(o.position,d);let u=!1;if(d.height<e._minimumCollisionTerrainHeight){let h=e._scene.globeHeight;if(l(h)){let p=h+e.minimumZoomDistance,g=h-e._lastGlobeHeight,f=g/e._lastGlobeHeight;d.height<p&&(t||Math.abs(f)<=.1)&&(d.height=p,i===re.SCENE3D?r.cartographicToCartesian(d,o.position):s.project(d,o.position),u=!0),t||Math.abs(f)<=.1?e._lastGlobeHeight=h:e._lastGlobeHeight+=g*.1}}l(a)&&(o._setTransform(a),u&&(m.normalize(o.position,o.position),m.negate(o.position,o.direction),m.multiplyByScalar(o.position,Math.max(c,e.minimumZoomDistance),o.position),m.normalize(o.direction,o.direction),m.cross(o.direction,o.up,o.right),m.cross(o.right,o.direction,o.up)))}tv.prototype.onMap=function(){let e=this._scene,t=e.mode,n=e.camera;return t===re.COLUMBUS_VIEW?Math.abs(n.position.x)-this._maxCoord.x<0&&Math.abs(n.position.y)-this._maxCoord.y<0:!0};var cxt=new m,lxt=new m;tv.prototype.update=function(){let e=this._scene,{camera:t,globe:n,mode:i}=e;X.equals(t.transform,X.IDENTITY)?(this._globe=n,this._ellipsoid=e.ellipsoid??ie.default):(this._globe=void 0,this._ellipsoid=ie.UNIT_SPHERE);let{verticalExaggeration:o,verticalExaggerationRelativeHeight:r}=e;this._minimumCollisionTerrainHeight=Mr.getHeight(this.minimumCollisionTerrainHeight,o,r),this._minimumPickingTerrainHeight=Mr.getHeight(this.minimumPickingTerrainHeight,o,r),this._minimumTrackBallHeight=Mr.getHeight(this.minimumTrackBallHeight,o,r),this._cameraUnderground=e.cameraUnderground&&l(this._globe);let s=this._ellipsoid.maximumRadius;this._rotateFactor=1/s,this._rotateRateRangeAdjustment=s,this._adjustedHeightForTerrain=!1;let a=m.clone(t.positionWC,cxt),c=m.clone(t.directionWC,lxt);if(i===re.SCENE2D?aCt(this):i===re.COLUMBUS_VIEW?(this._horizontalRotationAxis=m.UNIT_Z,ZCt(this)):i===re.SCENE3D&&(this._horizontalRotationAxis=void 0,rxt(this)),this.enableCollisionDetection&&!this._adjustedHeightForTerrain){let d=!m.equals(a,t.positionWC)||!m.equals(c,t.directionWC);M6(this,d)}this._aggregator.reset()};tv.prototype.isDestroyed=function(){return!1};tv.prototype.destroy=function(){return this._tweens.removeAll(),this._aggregator=this._aggregator&&this._aggregator.destroy(),me(this)};var nv=tv;var zOi=y(C(),1);var LOi=y(C(),1),iv=`uniform sampler2D colorTexture; +uniform sampler2D colorTexture2; + +uniform vec2 center; +uniform float radius; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 color0 = texture(colorTexture, v_textureCoordinates); + vec4 color1 = texture(colorTexture2, v_textureCoordinates); + + float x = length(gl_FragCoord.xy - center) / radius; + float t = smoothstep(0.5, 0.8, x); + out_FragColor = mix(color0 + color1, color1, t); +} +`;var VOi=y(C(),1),ov=`uniform sampler2D colorTexture; + +uniform float avgLuminance; +uniform float threshold; +uniform float offset; + +in vec2 v_textureCoordinates; + +float key(float avg) +{ + float guess = 1.5 - (1.5 / (avg * 0.1 + 1.0)); + return max(0.0, guess) + 0.1; +} + +// See section 9. "The bright-pass filter" of Realtime HDR Rendering +// http://www.cg.tuwien.ac.at/research/publications/2007/Luksch_2007_RHR/Luksch_2007_RHR-RealtimeHDR%20.pdf + +void main() +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + vec3 xyz = czm_RGBToXYZ(color.rgb); + float luminance = xyz.r; + + float scaledLum = key(avgLuminance) * luminance / avgLuminance; + float brightLum = max(scaledLum - threshold, 0.0); + float brightness = brightLum / (offset + brightLum); + + xyz.r = brightness; + out_FragColor = vec4(czm_XYZToRGB(xyz), 1.0); +} +`;function jg(){this._sceneFramebuffer=new wI;let e=.125,t=new Array(6);t[0]=new Lo({fragmentShader:Ed,textureScale:e,forcePowerOfTwo:!0,sampleMode:_u.LINEAR});let n=t[1]=new Lo({fragmentShader:ov,uniforms:{avgLuminance:.5,threshold:.25,offset:.1},textureScale:e,forcePowerOfTwo:!0}),i=this;this._delta=1,this._sigma=2,this._blurStep=new D,t[2]=new Lo({fragmentShader:fy,uniforms:{step:function(){return i._blurStep.x=i._blurStep.y=1/n.outputTexture.width,i._blurStep},delta:function(){return i._delta},sigma:function(){return i._sigma},direction:0},textureScale:e,forcePowerOfTwo:!0}),t[3]=new Lo({fragmentShader:fy,uniforms:{step:function(){return i._blurStep.x=i._blurStep.y=1/n.outputTexture.width,i._blurStep},delta:function(){return i._delta},sigma:function(){return i._sigma},direction:1},textureScale:e,forcePowerOfTwo:!0}),t[4]=new Lo({fragmentShader:Ed,sampleMode:_u.LINEAR}),this._uCenter=new D,this._uRadius=void 0,t[5]=new Lo({fragmentShader:iv,uniforms:{center:function(){return i._uCenter},radius:function(){return i._uRadius},colorTexture2:function(){return i._sceneFramebuffer.framebuffer.getColorTexture(0)}}}),this._stages=new Td({stages:t});let o=new NI(this),r=t.length;for(let s=0;s<r;++s)t[s]._textureCache=o;this._textureCache=o,this.length=t.length}jg.prototype.get=function(e){return this._stages.get(e)};jg.prototype.getStageByName=function(e){let t=this._stages.length;for(let n=0;n<t;++n){let i=this._stages.get(n);if(i.name===e)return i}};var dxt=new ce,tEe=new D,uxt=new D,nEe=new X;function mxt(e,t,n){let i=t.uniformState,o=i.sunPositionWC,r=i.view,s=i.viewProjection,a=i.projection,c=X.computeViewportTransformation(n,0,1,nEe),d=X.multiplyByPoint(r,o,dxt),u=Dt.pointToGLWindowCoordinates(s,c,o,tEe);d.x+=Z.SOLAR_RADIUS;let h=Dt.pointToGLWindowCoordinates(a,c,d,d),p=D.magnitude(D.subtract(h,u,h))*30*2,g=uxt;g.x=p,g.y=p,e._uCenter=D.clone(u,e._uCenter),e._uRadius=Math.max(g.x,g.y)*.15;let f=t.drawingBufferWidth,b=t.drawingBufferHeight,x=e._stages,I=x.get(0),_=I.outputTexture.width,E=I.outputTexture.height,S=new Ke;S.width=_,S.height=E,c=X.computeViewportTransformation(S,0,1,nEe),u=Dt.pointToGLWindowCoordinates(s,c,o,tEe),g.x*=_/f,g.y*=E/b;let R=I.scissorRectangle;R.x=Math.max(u.x-g.x*.5,0),R.y=Math.max(u.y-g.y*.5,0),R.width=Math.min(g.x,f),R.height=Math.min(g.y,b);for(let G=1;G<4;++G)Ke.clone(R,x.get(G).scissorRectangle)}jg.prototype.clear=function(e,t,n){this._sceneFramebuffer.clear(e,t,n),this._textureCache.clear(e)};jg.prototype.update=function(e){let t=e.context,n=e.viewport,i=this._sceneFramebuffer;i.update(t,n);let o=i.framebuffer;return this._textureCache.update(t),this._stages.update(t,!1),mxt(this,t,n),o};jg.prototype.execute=function(e){let t=this._sceneFramebuffer.framebuffer.getColorTexture(0),n=this._stages,i=n.length;n.get(0).execute(e,t);for(let o=1;o<i;++o)n.get(o).execute(e,n.get(o-1).outputTexture)};jg.prototype.copy=function(e,t){if(!l(this._copyColorCommand)){let n=this;this._copyColorCommand=e.createViewportQuadCommand(Ed,{uniformMap:{colorTexture:function(){return n._stages.get(n._stages.length-1).outputTexture}},owner:this})}this._copyColorCommand.framebuffer=t,this._copyColorCommand.execute(e)};jg.prototype.isDestroyed=function(){return!1};jg.prototype.destroy=function(){return this._textureCache.destroy(),this._stages.destroy(),me(this)};var rv=jg;var tHi=y(C(),1);function iEe(){this._cachedShowFrustumsShaders={}}function hxt(e){let t={},n=e.vertexAttributes;for(let i in n)n.hasOwnProperty(i)&&(t[i]=n[i].index);return t}function fxt(e,t){let n=e.context,i=t,o=i.fragmentShaderSource.clone(),r=[];o.sources=o.sources.map(function(u){u=Oe.replaceMain(u,"czm_Debug_main");let h=/out_FragData_(\d+)/g,p;for(;(p=h.exec(u))!==null;)r.indexOf(p[1])===-1&&r.push(p[1]);return u});let s=r.length,a="";a+=`uniform vec3 debugShowCommandsColor; +`,a+=`uniform vec3 debugShowFrustumsColor; +`,a+=`void main() +{ + czm_Debug_main(); +`;let c;if(s>0)for(c=0;c<s;++c)a+=` out_FragData_${r[c]}.rgb *= debugShowCommandsColor; +`,a+=` out_FragData_${r[c]}.rgb *= debugShowFrustumsColor; +`;else a+=` out_FragColor.rgb *= debugShowCommandsColor; +`,a+=` out_FragColor.rgb *= debugShowFrustumsColor; +`;a+="}",o.sources.push(a);let d=hxt(i);return ln.fromCache({context:n,vertexShaderSource:i.vertexShaderSource,fragmentShaderSource:o,attributeLocations:d})}var sv=new U;function pxt(e,t){let n;return l(t.uniformMap)?n=t.uniformMap:n={},l(n.debugShowCommandsColor)||l(n.debugShowFrustumsColor)||(n.debugShowCommandsColor=function(){return e.debugShowCommands?(l(t._debugColor)||(t._debugColor=U.fromRandom()),t._debugColor):U.WHITE},n.debugShowFrustumsColor=function(){return e.debugShowFrustums?(sv.red=t.debugOverlappingFrustums&1?1:0,sv.green=t.debugOverlappingFrustums&2?1:0,sv.blue=t.debugOverlappingFrustums&4?1:0,sv.alpha=1,sv):U.WHITE}),n}var Axt=new ot;iEe.prototype.executeDebugShowFrustumsCommand=function(e,t,n){let i=t.shaderProgram.id,o=this._cachedShowFrustumsShaders[i];l(o)||(o=fxt(e,t.shaderProgram),this._cachedShowFrustumsShaders[i]=o);let r=ot.shallowClone(t,Axt);r.shaderProgram=o,r.uniformMap=pxt(e,t),r.execute(e.context,n)};var av=iEe;var aHi=y(C(),1);function OI(e,t,n){this._primitive=e,this._tileIndex=t,this._sampleIndex=n,this._metadata={},this._orientedBoundingBox=new vn}OI.fromKeyframeNode=function(e,t,n,i){let o=new OI(e,t,n),{spatialNode:r,content:s}=i;return o._metadata=gxt(e,s,n),o._orientedBoundingBox=yxt(e,r,n,o._orientedBoundingBox),o};function gxt(e,t,n){if(!l(t)||!l(t.metadata))return;let{names:i,types:o}=e.provider,{metadata:r}=t,s={};for(let a=0;a<i.length;a++){let c=i[a],d=bt.getComponentCount(o[a]),u=r[a].slice(n*d,(n+1)*d);s[c]=u}return s}var oEe=new m,bxt=new m;function yxt(e,t,n,i){let o=t.dimensions,r=o.x*o.y,s=Math.floor(n/r),a=n-s*r,c=Math.floor(a/o.x),d=a-c*o.x,u=m.fromElements(d,c,s,oEe),h=m.divideComponents(m.subtract(u,e._paddingBefore,oEe),e.dimensions,bxt);return e._shape.computeOrientedBoundingBoxForSample(t,e.dimensions,h,i)}Object.defineProperties(OI.prototype,{metadata:{get:function(){return this._metadata}},primitive:{get:function(){return this._primitive}},sampleIndex:{get:function(){return this._sampleIndex}},tileIndex:{get:function(){return this._tileIndex}},orientedBoundingBox:{get:function(){return this._orientedBoundingBox.clone()}}});OI.prototype.hasProperty=function(e){return l(this._metadata[e])};OI.prototype.getNames=function(){return Object.keys(this._metadata)};OI.prototype.getProperty=function(e){return this._metadata[e]};var cv=OI;var C4i=y(C(),1);var Vzi=y(C(),1);var uzi=y(C(),1);var lHi=y(C(),1),lv=`struct Ray { + vec3 pos; + vec3 dir; + vec3 rawDir; +}; + +#if defined(JITTER) +/** + * Generate a pseudo-random value for a given 2D screen coordinate. + * Similar to https://www.shadertoy.com/view/4djSRW with a modified hashscale. + */ +float hash(vec2 p) +{ + vec3 p3 = fract(vec3(p.xyx) * 50.0); + p3 += dot(p3, p3.yzx + 19.19); + return fract((p3.x + p3.y) * p3.z); +} +#endif + +float minComponent(in vec3 v) { + return min(min(v.x, v.y), v.z); +} + +float maxComponent(in vec3 v) { + return max(max(v.x, v.y), v.z); +} + +struct PointJacobianT { + vec3 point; + mat3 jacobianT; +}; +`;var uHi=y(C(),1),dv=`// See Intersection.glsl for the definition of intersectScene +// See IntersectionUtils.glsl for the definition of nextIntersection +// See convertUvToBox.glsl, convertUvToCylinder.glsl, or convertUvToEllipsoid.glsl +// for the definition of convertUvToShapeUvSpace. The appropriate function is +// selected based on the VoxelPrimitive shape type, and added to the shader in +// Scene/VoxelRenderResources.js. +// See Octree.glsl for the definitions of TraversalData, SampleData, +// traverseOctreeFromBeginning, and traverseOctreeFromExisting +// See Megatexture.glsl for the definition of accumulatePropertiesFromMegatexture + +#define STEP_COUNT_MAX 1000 // Harcoded value because GLSL doesn't like variable length loops +#if defined(PICKING_VOXEL) + #define ALPHA_ACCUM_MAX 0.1 +#else + #define ALPHA_ACCUM_MAX 0.98 // Must be > 0.0 and <= 1.0 +#endif + +uniform mat4 u_transformPositionUvToView; +uniform mat3 u_transformDirectionViewToLocal; +uniform vec3 u_cameraPositionUv; +uniform vec3 u_cameraDirectionUv; +uniform float u_stepSize; + +#if defined(PICKING) + uniform vec4 u_pickColor; +#endif + +vec3 getSampleSize(in int level) { + vec3 sampleCount = exp2(float(level)) * vec3(u_dimensions); + vec3 sampleSizeUv = 1.0 / sampleCount; + return scaleShapeUvToShapeSpace(sampleSizeUv); +} + +#define MINIMUM_STEP_SCALAR (0.02) +#define SHIFT_FRACTION (0.001) + +/** + * Given a coordinate within a tile, and sample spacings along a ray through + * the coordinate, find the distance to the points where the ray entered and + * exited the voxel cell, along with the surface normals at those points. + * The surface normals are returned in shape space coordinates. + */ +RayShapeIntersection getVoxelIntersection(in vec3 tileUv, in vec3 sampleSizeAlongRay) { + vec3 voxelCoord = tileUv * vec3(u_dimensions); + vec3 directions = sign(sampleSizeAlongRay); + vec3 positiveDirections = max(directions, 0.0); + vec3 entryCoord = mix(ceil(voxelCoord), floor(voxelCoord), positiveDirections); + vec3 exitCoord = entryCoord + directions; + + vec3 distanceFromEntry = -abs((entryCoord - voxelCoord) * sampleSizeAlongRay); + float lastEntry = maxComponent(distanceFromEntry); + bvec3 isLastEntry = equal(distanceFromEntry, vec3(lastEntry)); + vec3 entryNormal = -1.0 * vec3(isLastEntry) * directions; + vec4 entry = vec4(entryNormal, lastEntry); + + vec3 distanceToExit = abs((exitCoord - voxelCoord) * sampleSizeAlongRay); + float firstExit = minComponent(distanceToExit); + bvec3 isFirstExit = equal(distanceToExit, vec3(firstExit)); + vec3 exitNormal = vec3(isFirstExit) * directions; + vec4 exit = vec4(exitNormal, firstExit); + + return RayShapeIntersection(entry, exit); +} + +vec4 getStepSize(in SampleData sampleData, in Ray viewRay, in RayShapeIntersection shapeIntersection, in mat3 jacobianT, in float currentT) { + // The Jacobian is computed in a space where the shape spans [-1, 1]. + // But the ray is marched in a space where the shape fills [0, 1]. + // So we need to scale the Jacobian by 2. + vec3 gradient = 2.0 * viewRay.rawDir * jacobianT; + vec3 sampleSizeAlongRay = getSampleSize(sampleData.tileCoords.w) / gradient; + + RayShapeIntersection voxelIntersection = getVoxelIntersection(sampleData.tileUv, sampleSizeAlongRay); + + // Transform normal from shape space to Cartesian space + vec3 voxelNormal = normalize(jacobianT * voxelIntersection.entry.xyz); + // Compare with the shape intersection, to choose the appropriate normal + vec4 voxelEntry = vec4(voxelNormal, currentT + voxelIntersection.entry.w); + vec4 entry = intersectionMax(shapeIntersection.entry, voxelEntry); + + float fixedStep = minComponent(abs(sampleSizeAlongRay)) * u_stepSize; + float shift = fixedStep * SHIFT_FRACTION; + float dt = voxelIntersection.exit.w + shift; + if ((currentT + dt) > shapeIntersection.exit.w) { + // Stop at end of shape + dt = shapeIntersection.exit.w - currentT + shift; + } + float stepSize = clamp(dt, fixedStep * MINIMUM_STEP_SCALAR, fixedStep + shift); + + return vec4(entry.xyz, stepSize); +} + +vec2 packIntToVec2(int value) { + float shifted = float(value) / 255.0; + float lowBits = fract(shifted); + float highBits = floor(shifted) / 255.0; + return vec2(highBits, lowBits); +} + +vec2 packFloatToVec2(float value) { + float lowBits = fract(value); + float highBits = floor(value) / 255.0; + return vec2(highBits, lowBits); +} + +int getSampleIndex(in SampleData sampleData) { + // tileUv = 1.0 is a valid coordinate but sampleIndex = u_inputDimensions is not. + // (tileUv = 1.0 corresponds to the far edge of the last sample, at index = u_inputDimensions - 1). + // Clamp to [0, voxelDimensions - 0.5) to avoid numerical error before flooring + vec3 maxCoordinate = vec3(u_inputDimensions) - vec3(0.5); + vec3 inputCoordinate = clamp(sampleData.inputCoordinate, vec3(0.0), maxCoordinate); + ivec3 sampleIndex = ivec3(floor(inputCoordinate)); + // Convert to a 1D index for lookup in a 1D data array + return sampleIndex.x + u_inputDimensions.x * (sampleIndex.y + u_inputDimensions.y * sampleIndex.z); +} + +/** + * Compute the view ray at the current fragment, in the local UV coordinates of the shape. + */ +Ray getViewRayUv() { + vec4 eyeCoordinates = czm_windowToEyeCoordinates(gl_FragCoord); + vec3 viewDirUv; + vec3 viewPosUv; + if (czm_orthographicIn3D == 1.0) { + eyeCoordinates.z = 0.0; + viewPosUv = (u_transformPositionViewToUv * eyeCoordinates).xyz; + viewDirUv = normalize(u_cameraDirectionUv); + } else { + viewPosUv = u_cameraPositionUv; + viewDirUv = normalize(u_transformDirectionViewToLocal * eyeCoordinates.xyz); + } + #if defined(SHAPE_ELLIPSOID) + // viewDirUv has been scaled to a space where the ellipsoid is a sphere. + // Undo this scaling to get the raw direction. + vec3 rawDir = viewDirUv * u_ellipsoidRadiiUv; + return Ray(viewPosUv, viewDirUv, rawDir); + #else + return Ray(viewPosUv, viewDirUv, viewDirUv); + #endif +} + +void main() +{ + Ray viewRayUv = getViewRayUv(); + + Intersections ix; + vec2 screenCoord = (gl_FragCoord.xy - czm_viewport.xy) / czm_viewport.zw; // [0,1] + RayShapeIntersection shapeIntersection = intersectScene(screenCoord, viewRayUv, ix); + // Exit early if the scene was completely missed. + if (shapeIntersection.entry.w == NO_HIT) { + discard; + } + + float currentT = shapeIntersection.entry.w; + float endT = shapeIntersection.exit.w; + vec3 positionUv = viewRayUv.pos + currentT * viewRayUv.dir; + PointJacobianT pointJacobian = convertUvToShapeUvSpaceDerivative(positionUv); + + // Traverse the tree from the start position + TraversalData traversalData; + SampleData sampleDatas[SAMPLE_COUNT]; + traverseOctreeFromBeginning(pointJacobian.point, traversalData, sampleDatas); + vec4 step = getStepSize(sampleDatas[0], viewRayUv, shapeIntersection, pointJacobian.jacobianT, currentT); + + #if defined(JITTER) + float noise = hash(screenCoord); // [0,1] + currentT += noise * step.w; + positionUv += noise * step.w * viewRayUv.dir; + #endif + + FragmentInput fragmentInput; + #if defined(STATISTICS) + setStatistics(fragmentInput.metadataStatistics); + #endif + + czm_modelMaterial materialOutput; + vec4 colorAccum = vec4(0.0); + + for (int stepCount = 0; stepCount < STEP_COUNT_MAX; ++stepCount) { + // Read properties from the megatexture based on the traversal state + Properties properties = accumulatePropertiesFromMegatexture(sampleDatas); + + // Prepare the custom shader inputs + copyPropertiesToMetadata(properties, fragmentInput.metadata); + + fragmentInput.attributes.positionEC = vec3(u_transformPositionUvToView * vec4(positionUv, 1.0)); + fragmentInput.attributes.normalEC = normalize(czm_normal * step.xyz); + + fragmentInput.voxel.viewDirUv = viewRayUv.dir; + + fragmentInput.voxel.travelDistance = step.w; + fragmentInput.voxel.stepCount = stepCount; + fragmentInput.voxel.tileIndex = sampleDatas[0].megatextureIndex; + fragmentInput.voxel.sampleIndex = getSampleIndex(sampleDatas[0]); + fragmentInput.voxel.distanceToDepthBuffer = ix.distanceToDepthBuffer - currentT; + + // Run the custom shader + fragmentMain(fragmentInput, materialOutput); + + // Sanitize the custom shader output + vec4 color = vec4(materialOutput.diffuse, materialOutput.alpha); + color.rgb = max(color.rgb, vec3(0.0)); + color.a = clamp(color.a, 0.0, 1.0); + + // Pre-multiplied alpha blend + colorAccum += (1.0 - colorAccum.a) * vec4(color.rgb * color.a, color.a); + + // Stop traversing if the alpha has been fully saturated + if (colorAccum.a > ALPHA_ACCUM_MAX) { + colorAccum.a = ALPHA_ACCUM_MAX; + break; + } + + if (step.w == 0.0) { + // Shape is infinitely thin. The ray may have hit the edge of a + // foreground voxel. Step ahead slightly to check for more voxels + step.w == 0.00001; + } + + // Keep raymarching + currentT += step.w; + // Check if there's more intersections. + if (currentT > endT) { + #if (INTERSECTION_COUNT == 1) + break; + #else + shapeIntersection = nextIntersection(ix); + if (shapeIntersection.entry.w == NO_HIT) { + break; + } else { + // Found another intersection. Resume raymarching there + currentT = shapeIntersection.entry.w; + endT = shapeIntersection.exit.w; + } + #endif + } + positionUv = viewRayUv.pos + currentT * viewRayUv.dir; + + // Traverse the tree from the current ray position. + // This is similar to traverseOctreeFromBeginning but is faster when the ray is in the same tile as the previous step. + pointJacobian = convertUvToShapeUvSpaceDerivative(positionUv); + traverseOctreeFromExisting(pointJacobian.point, traversalData, sampleDatas); + step = getStepSize(sampleDatas[0], viewRayUv, shapeIntersection, pointJacobian.jacobianT, currentT); + } + + // Convert the alpha from [0,ALPHA_ACCUM_MAX] to [0,1] + colorAccum.a /= ALPHA_ACCUM_MAX; + + #if defined(PICKING) + // If alpha is 0.0 there is nothing to pick + if (colorAccum.a == 0.0) { + discard; + } + out_FragColor = u_pickColor; + #elif defined(PICKING_VOXEL) + // If alpha is 0.0 there is nothing to pick + if (colorAccum.a == 0.0) { + discard; + } + vec2 megatextureId = packIntToVec2(sampleDatas[0].megatextureIndex); + vec2 sampleIndex = packIntToVec2(getSampleIndex(sampleDatas[0])); + out_FragColor = vec4(megatextureId, sampleIndex); + #else + out_FragColor = colorAccum; + #endif +} +`;var hHi=y(C(),1),uv=`in vec2 position; + +uniform vec4 u_ndcSpaceAxisAlignedBoundingBox; + +void main() { + vec2 aabbMin = u_ndcSpaceAxisAlignedBoundingBox.xy; + vec2 aabbMax = u_ndcSpaceAxisAlignedBoundingBox.zw; + vec2 translation = 0.5 * (aabbMax + aabbMin); + vec2 scale = 0.5 * (aabbMax - aabbMin); + gl_Position = vec4(position * scale + translation, 0.0, 1.0); +} +`;var pHi=y(C(),1),mv=`/* Intersection defines +#define INTERSECTION_COUNT ### +*/ + +#define NO_HIT (-czm_infinity) +#define INF_HIT (czm_infinity * 0.5) + +struct RayShapeIntersection { + vec4 entry; + vec4 exit; +}; + +vec4 intersectionMin(in vec4 intersect0, in vec4 intersect1) +{ + if (intersect0.w == NO_HIT) { + return intersect1; + } else if (intersect1.w == NO_HIT) { + return intersect0; + } + return (intersect0.w <= intersect1.w) ? intersect0 : intersect1; +} + +vec4 intersectionMax(in vec4 intersect0, in vec4 intersect1) +{ + return (intersect0.w >= intersect1.w) ? intersect0 : intersect1; +} + +RayShapeIntersection intersectIntersections(in Ray ray, in RayShapeIntersection intersect0, in RayShapeIntersection intersect1) +{ + bool missed = (intersect0.entry.w == NO_HIT) || + (intersect1.entry.w == NO_HIT) || + (intersect0.exit.w < intersect1.entry.w) || + (intersect0.entry.w > intersect1.exit.w); + if (missed) { + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + return RayShapeIntersection(miss, miss); + } + + vec4 entry = intersectionMax(intersect0.entry, intersect1.entry); + vec4 exit = intersectionMin(intersect0.exit, intersect1.exit); + + return RayShapeIntersection(entry, exit); +} + +struct Intersections { + // Don't access these member variables directly - call the functions instead. + + // Store an array of ray-surface intersections. Each intersection is composed of: + // .xyz for the surface normal at the intersection point + // .w for the T value + // The scale of the normal encodes the shape intersection type: + // length(intersection.xyz) = 1: positive shape entry + // length(intersection.xyz) = 2: positive shape exit + // length(intersection.xyz) = 3: negative shape entry + // length(intersection.xyz) = 4: negative shape exit + // INTERSECTION_COUNT is the number of ray-*shape* (volume) intersections, + // so we need twice as many to track ray-*surface* intersections + vec4 intersections[INTERSECTION_COUNT * 2]; + float distanceToDepthBuffer; + + #if (INTERSECTION_COUNT > 1) + // Maintain state for future nextIntersection calls + int index; + int surroundCount; + bool surroundIsPositive; + #endif +}; + +RayShapeIntersection getFirstIntersection(in Intersections ix) +{ + return RayShapeIntersection(ix.intersections[0], ix.intersections[1]); +} + +vec4 encodeIntersectionType(vec4 intersection, int index, bool entry) +{ + float scale = float(index > 0) * 2.0 + float(!entry) + 1.0; + return vec4(intersection.xyz * scale, intersection.w); +} + +// Use defines instead of real functions because WebGL1 cannot access array with non-constant index. +#define setIntersection(/*inout Intersections*/ ix, /*int*/ index, /*float*/ t, /*bool*/ positive, /*bool*/ enter) (ix).intersections[(index)] = vec4(0.0, float(!positive) * 2.0 + float(!enter) + 1.0, 0.0, (t)) +#define setIntersectionPair(/*inout Intersections*/ ix, /*int*/ index, /*vec2*/ entryExit) (ix).intersections[(index) * 2 + 0] = vec4(0.0, float((index) > 0) * 2.0 + 1.0, 0.0, (entryExit).x); (ix).intersections[(index) * 2 + 1] = vec4(0.0, float((index) > 0) * 2.0 + 2.0, 0.0, (entryExit).y) +#define setSurfaceIntersection(/*inout Intersections*/ ix, /*int*/ index, /*vec4*/ intersection, /*bool*/ positive, /*bool*/ enter) (ix).intersections[(index)] = encodeIntersectionType((intersection), int(!positive), (enter)) +#define setShapeIntersection(/*inout Intersections*/ ix, /*int*/ index, /*RayShapeIntersection*/ intersection) (ix).intersections[(index) * 2 + 0] = encodeIntersectionType((intersection).entry, (index), true); (ix).intersections[(index) * 2 + 1] = encodeIntersectionType((intersection).exit, (index), false) + +#if (INTERSECTION_COUNT > 1) +void initializeIntersections(inout Intersections ix) { + // Sort the intersections from min T to max T with bubble sort. + // Note: If this sorting function changes, some of the intersection test may + // need to be updated. Search for "bubble sort" to find those areas. + const int sortPasses = INTERSECTION_COUNT * 2 - 1; + for (int n = sortPasses; n > 0; --n) { + for (int i = 0; i < sortPasses; ++i) { + // The loop should be: for (i = 0; i < n; ++i) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (i >= n) { break; } + + vec4 intersect0 = ix.intersections[i + 0]; + vec4 intersect1 = ix.intersections[i + 1]; + + bool inOrder = intersect0.w <= intersect1.w; + + ix.intersections[i + 0] = inOrder ? intersect0 : intersect1; + ix.intersections[i + 1] = inOrder ? intersect1 : intersect0; + } + } + + // Prepare initial state for nextIntersection + ix.index = 0; + ix.surroundCount = 0; + ix.surroundIsPositive = false; +} +#endif + +#if (INTERSECTION_COUNT > 1) +RayShapeIntersection nextIntersection(inout Intersections ix) { + vec4 surfaceIntersection = vec4(0.0, 0.0, 0.0, NO_HIT); + RayShapeIntersection shapeIntersection = RayShapeIntersection(surfaceIntersection, surfaceIntersection); + + const int passCount = INTERSECTION_COUNT * 2; + + if (ix.index == passCount) { + return shapeIntersection; + } + + for (int i = 0; i < passCount; ++i) { + // The loop should be: for (i = ix.index; i < passCount; ++i) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to continue instead. + if (i < ix.index) { + continue; + } + + ix.index = i + 1; + + surfaceIntersection = ix.intersections[i]; + int intersectionType = int(length(surfaceIntersection.xyz) - 0.5); + bool currShapeIsPositive = intersectionType < 2; + bool enter = intMod(intersectionType, 2) == 0; + + ix.surroundCount += enter ? +1 : -1; + ix.surroundIsPositive = currShapeIsPositive ? enter : ix.surroundIsPositive; + + // entering positive or exiting negative + if (ix.surroundCount == 1 && ix.surroundIsPositive && enter == currShapeIsPositive) { + shapeIntersection.entry = surfaceIntersection; + } + + // exiting positive or entering negative after being inside positive + bool exitPositive = !enter && currShapeIsPositive && ix.surroundCount == 0; + bool enterNegativeFromPositive = enter && !currShapeIsPositive && ix.surroundCount == 2 && ix.surroundIsPositive; + if (exitPositive || enterNegativeFromPositive) { + shapeIntersection.exit = surfaceIntersection; + + // entry and exit have been found, so the loop can stop + if (exitPositive) { + // After exiting positive shape there is nothing left to intersect, so jump to the end index. + ix.index = passCount; + } + break; + } + } + + return shapeIntersection; +} +#endif + +// NOTE: initializeIntersections, nextIntersection aren't even declared unless INTERSECTION_COUNT > 1 +`;var gHi=y(C(),1),hv=`// See IntersectionUtils.glsl for the definitions of Ray, Intersections, +// setIntersectionPair, INF_HIT, NO_HIT + +/* intersectDepth defines (set in Scene/VoxelRenderResources.js) +#define DEPTH_INTERSECTION_INDEX ### +*/ + +uniform mat4 u_transformPositionViewToUv; + +void intersectDepth(in vec2 screenCoord, in Ray ray, inout Intersections ix) { + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, screenCoord)); + float entry; + float exit; + if (logDepthOrDepth != 0.0) { + // Calculate how far the ray must travel before it hits the depth buffer. + vec4 eyeCoordinateDepth = czm_screenToEyeCoordinates(screenCoord, logDepthOrDepth); + eyeCoordinateDepth /= eyeCoordinateDepth.w; + vec3 depthPositionUv = vec3(u_transformPositionViewToUv * eyeCoordinateDepth); + entry = dot(depthPositionUv - ray.pos, ray.dir); + exit = +INF_HIT; + } else { + // There's no depth at this location. + entry = NO_HIT; + exit = NO_HIT; + } + ix.distanceToDepthBuffer = entry; +#if defined(DEPTH_TEST) + setIntersectionPair(ix, DEPTH_INTERSECTION_INDEX, vec2(entry, exit)); +#endif +} +`;var yHi=y(C(),1),fv=`// See IntersectionUtils.glsl for the definitions of Ray, Intersections, INF_HIT, +// NO_HIT, setShapeIntersection + +/* Clipping plane defines (set in Scene/VoxelRenderResources.js) +#define CLIPPING_PLANES_UNION +#define CLIPPING_PLANES_COUNT +#define CLIPPING_PLANES_INTERSECTION_INDEX +*/ + +uniform sampler2D u_clippingPlanesTexture; +uniform mat4 u_clippingPlanesMatrix; + +// Plane is in Hessian Normal Form +vec4 intersectPlane(in Ray ray, in vec4 plane) { + vec3 n = plane.xyz; // normal + float w = plane.w; // -dot(pointOnPlane, normal) + + float a = dot(ray.pos, n); + float b = dot(ray.dir, n); + float t = -(w + a) / b; + + return vec4(n, t); +} + +void intersectClippingPlanes(in Ray ray, inout Intersections ix) { + vec4 backSide = vec4(-ray.dir, -INF_HIT); + vec4 farSide = vec4(ray.dir, +INF_HIT); + RayShapeIntersection clippingVolume; + + #if (CLIPPING_PLANES_COUNT == 1) + // Union and intersection are the same when there's one clipping plane, and the code + // is more simplified. + vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, 0, u_clippingPlanesMatrix); + vec4 intersection = intersectPlane(ray, planeUv); + bool reflects = dot(ray.dir, intersection.xyz) < 0.0; + clippingVolume.entry = reflects ? backSide : intersection; + clippingVolume.exit = reflects ? intersection : farSide; + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume); + #elif defined(CLIPPING_PLANES_UNION) + vec4 firstTransmission = vec4(ray.dir, +INF_HIT); + vec4 lastReflection = vec4(-ray.dir, -INF_HIT); + for (int i = 0; i < CLIPPING_PLANES_COUNT; i++) { + vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, i, u_clippingPlanesMatrix); + vec4 intersection = intersectPlane(ray, planeUv); + if (dot(ray.dir, planeUv.xyz) > 0.0) { + firstTransmission = intersection.w <= firstTransmission.w ? intersection : firstTransmission; + } else { + lastReflection = intersection.w >= lastReflection.w ? intersection : lastReflection; + } + } + clippingVolume.entry = backSide; + clippingVolume.exit = lastReflection; + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 0, clippingVolume); + clippingVolume.entry = firstTransmission; + clippingVolume.exit = farSide; + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 1, clippingVolume); + #else // intersection + vec4 lastTransmission = vec4(ray.dir, -INF_HIT); + vec4 firstReflection = vec4(-ray.dir, +INF_HIT); + for (int i = 0; i < CLIPPING_PLANES_COUNT; i++) { + vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, i, u_clippingPlanesMatrix); + vec4 intersection = intersectPlane(ray, planeUv); + if (dot(ray.dir, planeUv.xyz) > 0.0) { + lastTransmission = intersection.w > lastTransmission.w ? intersection : lastTransmission; + } else { + firstReflection = intersection.w < firstReflection.w ? intersection: firstReflection; + } + } + if (lastTransmission.w < firstReflection.w) { + clippingVolume.entry = lastTransmission; + clippingVolume.exit = firstReflection; + } else { + clippingVolume.entry = vec4(-ray.dir, NO_HIT); + clippingVolume.exit = vec4(ray.dir, NO_HIT); + } + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume); + #endif +} +`;var xHi=y(C(),1),AL=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, INF_HIT, +// RayShapeIntersection + +vec4 intersectLongitude(in Ray ray, in float angle, in bool positiveNormal) { + float normalSign = positiveNormal ? 1.0 : -1.0; + vec2 planeNormal = vec2(-sin(angle), cos(angle)) * normalSign; + + vec2 position = ray.pos.xy; + vec2 direction = ray.dir.xy; + float approachRate = dot(direction, planeNormal); + float distance = -dot(position, planeNormal); + + float t = (approachRate == 0.0) + ? NO_HIT + : distance / approachRate; + + return vec4(planeNormal, 0.0, t); +} + +RayShapeIntersection intersectHalfSpace(in Ray ray, in float angle, in bool positiveNormal) +{ + vec4 intersection = intersectLongitude(ray, angle, positiveNormal); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + bool hitFront = (intersection.w > 0.0) == (dot(ray.pos.xy, intersection.xy) > 0.0); + if (!hitFront) { + return RayShapeIntersection(intersection, farSide); + } else { + return RayShapeIntersection(-1.0 * farSide, intersection); + } +} + +void intersectFlippedWedge(in Ray ray, in vec2 minMaxAngle, out RayShapeIntersection intersections[2]) +{ + intersections[0] = intersectHalfSpace(ray, minMaxAngle.x, false); + intersections[1] = intersectHalfSpace(ray, minMaxAngle.y, true); +} + +bool hitPositiveHalfPlane(in Ray ray, in vec4 intersection, in bool positiveNormal) { + float normalSign = positiveNormal ? 1.0 : -1.0; + vec2 planeDirection = vec2(intersection.y, -intersection.x) * normalSign; + vec2 hit = ray.pos.xy + intersection.w * ray.dir.xy; + return dot(hit, planeDirection) > 0.0; +} + +void intersectHalfPlane(in Ray ray, in float angle, out RayShapeIntersection intersections[2]) { + vec4 intersection = intersectLongitude(ray, angle, true); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + if (hitPositiveHalfPlane(ray, intersection, true)) { + intersections[0].entry = -1.0 * farSide; + intersections[0].exit = vec4(-1.0 * intersection.xy, 0.0, intersection.w); + intersections[1].entry = intersection; + intersections[1].exit = farSide; + } else { + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + intersections[0].entry = -1.0 * farSide; + intersections[0].exit = farSide; + intersections[1].entry = miss; + intersections[1].exit = miss; + } +} + +RayShapeIntersection intersectRegularWedge(in Ray ray, in vec2 minMaxAngle) +{ + // Note: works for maxAngle > minAngle + pi, where the "regular wedge" + // is actually a negative volume. + // Compute intersections with the two planes. + // Normals will point toward the "outside" (negative space) + vec4 intersect1 = intersectLongitude(ray, minMaxAngle.x, false); + vec4 intersect2 = intersectLongitude(ray, minMaxAngle.y, true); + + // Choose intersection with smallest T as the "first", the other as "last" + // Note: first or last could be in the "shadow" wedge, beyond the tip + bool inOrder = intersect1.w <= intersect2.w; + vec4 first = inOrder ? intersect1 : intersect2; + vec4 last = inOrder ? intersect2 : intersect1; + + bool firstIsAhead = first.w >= 0.0; + bool startedInsideFirst = dot(ray.pos.xy, first.xy) < 0.0; + bool exitFromInside = firstIsAhead == startedInsideFirst; + bool lastIsAhead = last.w > 0.0; + bool startedOutsideLast = dot(ray.pos.xy, last.xy) >= 0.0; + bool enterFromOutside = lastIsAhead == startedOutsideLast; + + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + + if (exitFromInside && enterFromOutside) { + // Ray crosses both faces of negative wedge, exiting then entering the positive shape + return RayShapeIntersection(first, last); + } else if (!exitFromInside && enterFromOutside) { + // Ray starts inside wedge. last is in shadow wedge, and first is actually the entry + return RayShapeIntersection(-1.0 * farSide, first); + } else if (exitFromInside && !enterFromOutside) { + // First intersection was in the shadow wedge, so last is actually the exit + return RayShapeIntersection(last, farSide); + } else { // !exitFromInside && !enterFromOutside + // Both intersections were in the shadow wedge + return RayShapeIntersection(miss, miss); + } +} +`;var _Hi=y(C(),1),pv=`// See IntersectionUtils.glsl for the definitions of Ray, RayShapeIntersection, +// NO_HIT, Intersections + +/* Box defines (set in Scene/VoxelBoxShape.js) +#define BOX_INTERSECTION_INDEX ### // always 0 +*/ + +uniform vec3 u_renderMinBounds; +uniform vec3 u_renderMaxBounds; + +RayShapeIntersection intersectBox(in Ray ray, in vec3 minBound, in vec3 maxBound) +{ + // Consider the box as the intersection of the space between 3 pairs of parallel planes + // Compute the distance along the ray to each plane + vec3 t0 = (minBound - ray.pos) / ray.dir; + vec3 t1 = (maxBound - ray.pos) / ray.dir; + + // Identify candidate entries/exits based on distance from ray.pos + vec3 entries = min(t0, t1); + vec3 exits = max(t0, t1); + + vec3 directions = sign(ray.dir); + + // The actual intersection points are the furthest entry and the closest exit + float lastEntry = maxComponent(entries); + bvec3 isLastEntry = equal(entries, vec3(lastEntry)); + vec3 entryNormal = -1.0 * vec3(isLastEntry) * directions; + vec4 entry = vec4(entryNormal, lastEntry); + + float firstExit = minComponent(exits); + bvec3 isFirstExit = equal(exits, vec3(firstExit)); + vec3 exitNormal = vec3(isLastEntry) * directions; + vec4 exit = vec4(exitNormal, firstExit); + + if (entry.w > exit.w) { + entry.w = NO_HIT; + exit.w = NO_HIT; + } + + return RayShapeIntersection(entry, exit); +} + +void intersectShape(in Ray ray, inout Intersections ix) +{ + RayShapeIntersection intersection = intersectBox(ray, u_renderMinBounds, u_renderMaxBounds); + setShapeIntersection(ix, BOX_INTERSECTION_INDEX, intersection); +} +`;var THi=y(C(),1),Av=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, Intersections, +// RayShapeIntersection, setSurfaceIntersection, setShapeIntersection, +// intersectIntersections +// See IntersectLongitude.glsl for the definitions of intersectHalfPlane, +// intersectFlippedWedge, intersectRegularWedge + +/* Cylinder defines (set in Scene/VoxelCylinderShape.js) +#define CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN +#define CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO + +#define CYLINDER_INTERSECTION_INDEX_RADIUS_MAX +#define CYLINDER_INTERSECTION_INDEX_RADIUS_MIN +#define CYLINDER_INTERSECTION_INDEX_ANGLE +*/ + +// Cylinder uniforms +uniform vec2 u_cylinderRenderRadiusMinMax; +uniform vec2 u_cylinderRenderHeightMinMax; +#if defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE) + uniform vec2 u_cylinderRenderAngleMinMax; +#endif + +/** + * Find the intersection of a ray with the volume defined by two planes of constant z + */ +RayShapeIntersection intersectHeightBounds(in Ray ray, in vec2 minMaxHeight, in bool convex) +{ + float zPosition = ray.pos.z; + float zDirection = ray.dir.z; + + float tmin = (minMaxHeight.x - zPosition) / zDirection; + float tmax = (minMaxHeight.y - zPosition) / zDirection; + + // Normals point outside the volume + float signFlip = convex ? 1.0 : -1.0; + vec4 intersectMin = vec4(0.0, 0.0, -1.0 * signFlip, tmin); + vec4 intersectMax = vec4(0.0, 0.0, 1.0 * signFlip, tmax); + + bool topEntry = zDirection < 0.0; + vec4 entry = topEntry ? intersectMax : intersectMin; + vec4 exit = topEntry ? intersectMin : intersectMax; + + return RayShapeIntersection(entry, exit); +} + +/** + * Find the intersection of a ray with a right cylindrical surface of a given radius + * about the z-axis. + */ +RayShapeIntersection intersectCylinder(in Ray ray, in float radius, in bool convex) +{ + vec2 position = ray.pos.xy; + vec2 direction = ray.dir.xy; + + float a = dot(direction, direction); + float b = dot(position, direction); + float c = dot(position, position) - radius * radius; + float determinant = b * b - a * c; + + if (determinant < 0.0) { + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + return RayShapeIntersection(miss, miss); + } + + determinant = sqrt(determinant); + float t1 = (-b - determinant) / a; + float t2 = (-b + determinant) / a; + float signFlip = convex ? 1.0 : -1.0; + vec4 intersect1 = vec4(normalize(position + t1 * direction) * signFlip, 0.0, t1); + vec4 intersect2 = vec4(normalize(position + t2 * direction) * signFlip, 0.0, t2); + + return RayShapeIntersection(intersect1, intersect2); +} + +/** + * Find the intersection of a ray with a right cylindrical solid of given + * radius and height bounds. NOTE: The shape is assumed to be convex. + */ +RayShapeIntersection intersectBoundedCylinder(in Ray ray, in float radius, in vec2 minMaxHeight) +{ + RayShapeIntersection cylinderIntersection = intersectCylinder(ray, radius, true); + RayShapeIntersection heightBoundsIntersection = intersectHeightBounds(ray, minMaxHeight, true); + return intersectIntersections(ray, cylinderIntersection, heightBoundsIntersection); +} + +void intersectShape(Ray ray, inout Intersections ix) +{ + // Position is converted from [0,1] to [-1,+1] because shape intersections assume unit space is [-1,+1]. + // Direction is scaled as well to be in sync with position. + ray.pos = ray.pos * 2.0 - 1.0; + ray.dir *= 2.0; + + RayShapeIntersection outerIntersect = intersectBoundedCylinder(ray, u_cylinderRenderRadiusMinMax.y, u_cylinderRenderHeightMinMax); + + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_RADIUS_MAX, outerIntersect); + + if (outerIntersect.entry.w == NO_HIT) { + return; + } + + #if defined(CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT) + // When the cylinder is perfectly thin it's necessary to sandwich the + // inner cylinder intersection inside the outer cylinder intersection. + + // Without this special case, + // [outerMin, outerMax, innerMin, innerMax] will bubble sort to + // [outerMin, innerMin, outerMax, innerMax] which will cause the back + // side of the cylinder to be invisible because it will think the ray + // is still inside the inner (negative) cylinder after exiting the + // outer (positive) cylinder. + + // With this special case, + // [outerMin, innerMin, innerMax, outerMax] will bubble sort to + // [outerMin, innerMin, innerMax, outerMax] which will work correctly. + + // Note: If initializeIntersections() changes its sorting function + // from bubble sort to something else, this code may need to change. + RayShapeIntersection innerIntersect = intersectCylinder(ray, 1.0, false); + setSurfaceIntersection(ix, 0, outerIntersect.entry, true, true); // positive, enter + setSurfaceIntersection(ix, 1, innerIntersect.entry, false, true); // negative, enter + setSurfaceIntersection(ix, 2, innerIntersect.exit, false, false); // negative, exit + setSurfaceIntersection(ix, 3, outerIntersect.exit, true, false); // positive, exit + #elif defined(CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN) + RayShapeIntersection innerIntersect = intersectCylinder(ray, u_cylinderRenderRadiusMinMax.x, false); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_RADIUS_MIN, innerIntersect); + #endif + + #if defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF) + RayShapeIntersection wedgeIntersect = intersectRegularWedge(ray, u_cylinderRenderAngleMinMax); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE, wedgeIntersect); + #elif defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF) + RayShapeIntersection wedgeIntersects[2]; + intersectFlippedWedge(ray, u_cylinderRenderAngleMinMax, wedgeIntersects); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 1, wedgeIntersects[1]); + #elif defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO) + RayShapeIntersection wedgeIntersects[2]; + intersectHalfPlane(ray, u_cylinderRenderAngleMinMax.x, wedgeIntersects); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 1, wedgeIntersects[1]); + #endif +} +`;var LHi=y(C(),1),gv=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, INF_HIT, Intersections, +// RayShapeIntersection, setSurfaceIntersection, setShapeIntersection +// See IntersectLongitude.glsl for the definitions of intersectHalfPlane, +// intersectFlippedWedge, intersectRegularWedge + +/* Ellipsoid defines (set in Scene/VoxelEllipsoidShape.js) +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF +#define ELLIPSOID_INTERSECTION_INDEX_LONGITUDE +#define ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX +#define ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN +#define ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX +#define ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN +*/ + +#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE) + uniform vec2 u_ellipsoidRenderLongitudeMinMax; +#endif +uniform float u_eccentricitySquared; +uniform vec2 u_ellipsoidRenderLatitudeSinMinMax; +uniform vec2 u_clipMinMaxHeight; + +RayShapeIntersection intersectZPlane(in Ray ray, in float z) { + float t = -ray.pos.z / ray.dir.z; + + bool startsOutside = sign(ray.pos.z) == sign(z); + bool entry = (t >= 0.0) != startsOutside; + + vec4 intersect = vec4(0.0, 0.0, z, t); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + if (entry) { + return RayShapeIntersection(intersect, farSide); + } else { + return RayShapeIntersection(-1.0 * farSide, intersect); + } +} + +RayShapeIntersection intersectHeight(in Ray ray, in float relativeHeight, in bool convex) +{ + // Scale the ray by the ellipsoid axes to make it a unit sphere + // Note: approximating ellipsoid + height as an ellipsoid + vec3 radiiCorrection = u_ellipsoidRadiiUv / (u_ellipsoidRadiiUv + relativeHeight); + vec3 position = ray.pos * radiiCorrection; + vec3 direction = ray.dir * radiiCorrection; + + float a = dot(direction, direction); // ~ 1.0 (or maybe 4.0 if ray is scaled) + float b = dot(direction, position); // roughly inside [-1.0, 1.0] when zoomed in + float c = dot(position, position) - 1.0; // ~ 0.0 when zoomed in. + float determinant = b * b - a * c; // ~ b * b when zoomed in + + if (determinant < 0.0) { + vec4 miss = vec4(normalize(direction), NO_HIT); + return RayShapeIntersection(miss, miss); + } + + determinant = sqrt(determinant); + + // Compute larger root using standard formula + float signB = b < 0.0 ? -1.0 : 1.0; + // The other root may suffer from subtractive cancellation in the standard formula. + // Compute it from the first root instead. + float t1 = (-b - signB * determinant) / a; + float t2 = c / (a * t1); + float tmin = min(t1, t2); + float tmax = max(t1, t2); + + float directionScale = convex ? 1.0 : -1.0; + vec3 d1 = directionScale * normalize(position + tmin * direction); + vec3 d2 = directionScale * normalize(position + tmax * direction); + + return RayShapeIntersection(vec4(d1, tmin), vec4(d2, tmax)); +} + +/** + * Given a circular cone around the z-axis, with apex at the origin, + * find the parametric distance(s) along a ray where that ray intersects + * the cone. + * The cone opening angle is described by the squared cosine of + * its half-angle (the angle between the Z-axis and the surface) + */ +vec2 intersectDoubleEndedCone(in Ray ray, in float cosSqrHalfAngle) +{ + vec3 o = ray.pos; + vec3 d = ray.dir; + float sinSqrHalfAngle = 1.0 - cosSqrHalfAngle; + + float aSin = d.z * d.z * sinSqrHalfAngle; + float aCos = -dot(d.xy, d.xy) * cosSqrHalfAngle; + float a = aSin + aCos; + + float bSin = d.z * o.z * sinSqrHalfAngle; + float bCos = -dot(o.xy, d.xy) * cosSqrHalfAngle; + float b = bSin + bCos; + + float cSin = o.z * o.z * sinSqrHalfAngle; + float cCos = -dot(o.xy, o.xy) * cosSqrHalfAngle; + float c = cSin + cCos; + // determinant = b * b - a * c. But bSin * bSin = aSin * cSin. + // Avoid subtractive cancellation by expanding to eliminate these terms + float determinant = 2.0 * bSin * bCos + bCos * bCos - aSin * cCos - aCos * cSin - aCos * cCos; + + if (determinant < 0.0) { + return vec2(NO_HIT); + } else if (a == 0.0) { + // Ray is parallel to cone surface + return (b == 0.0) + ? vec2(NO_HIT) // Ray is on cone surface + : vec2(-0.5 * c / b, NO_HIT); + } + + determinant = sqrt(determinant); + + // Compute larger root using standard formula + float signB = b < 0.0 ? -1.0 : 1.0; + float t1 = (-b - signB * determinant) / a; + // The other root may suffer from subtractive cancellation in the standard formula. + // Compute it from the first root instead. + float t2 = c / (a * t1); + float tmin = min(t1, t2); + float tmax = max(t1, t2); + return vec2(tmin, tmax); +} + +/** + * Given a point on a conical surface, find the surface normal at that point. + */ +vec3 getConeNormal(in vec3 p, in bool convex) { + // Start with radial component pointing toward z-axis + vec2 radial = -abs(p.z) * normalize(p.xy); + // Z component points toward opening of cone + float zSign = (p.z < 0.0) ? -1.0 : 1.0; + float z = length(p.xy) * zSign; + // Flip normal if shape is convex + float flip = (convex) ? -1.0 : 1.0; + return normalize(vec3(radial, z) * flip); +} + +/** + * Compute the shift between the ellipsoid origin and the apex of a cone of latitude + */ +float getLatitudeConeShift(in float sinLatitude) { + // Find prime vertical radius of curvature: + // the distance along the ellipsoid normal to the intersection with the z-axis + float x2 = u_eccentricitySquared * sinLatitude * sinLatitude; + float primeVerticalRadius = inversesqrt(1.0 - x2); + + // Compute a shift from the origin to the intersection of the cone with the z-axis + return primeVerticalRadius * u_eccentricitySquared * sinLatitude; +} + +void intersectFlippedCone(in Ray ray, in float cosHalfAngle, out RayShapeIntersection intersections[2]) { + // Undo the scaling from ellipsoid to sphere + ray.pos = ray.pos * u_ellipsoidRadiiUv; + ray.dir = ray.dir * u_ellipsoidRadiiUv; + // Shift the ray to account for the latitude cone not being centered at the Earth center + ray.pos.z += getLatitudeConeShift(cosHalfAngle); + + float cosSqrHalfAngle = cosHalfAngle * cosHalfAngle; + vec2 intersect = intersectDoubleEndedCone(ray, cosSqrHalfAngle); + + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + // Initialize output with no intersections + intersections[0].entry = -1.0 * farSide; + intersections[0].exit = farSide; + intersections[1].entry = miss; + intersections[1].exit = miss; + + if (intersect.x == NO_HIT) { + return; + } + + // Find the points of intersection + float tmin = intersect.x; + float tmax = intersect.y; + vec3 p0 = ray.pos + tmin * ray.dir; + vec3 p1 = ray.pos + tmax * ray.dir; + + vec4 intersect0 = vec4(getConeNormal(p0, true), tmin); + vec4 intersect1 = vec4(getConeNormal(p1, true), tmax); + + bool p0InShadowCone = sign(p0.z) != sign(cosHalfAngle); + bool p1InShadowCone = sign(p1.z) != sign(cosHalfAngle); + + if (p0InShadowCone && p1InShadowCone) { + // no valid intersections + } else if (p0InShadowCone) { + intersections[0].exit = intersect1; + } else if (p1InShadowCone) { + intersections[0].entry = intersect0; + } else { + intersections[0].exit = intersect0; + intersections[1].entry = intersect1; + intersections[1].exit = farSide; + } +} + +RayShapeIntersection intersectRegularCone(in Ray ray, in float cosHalfAngle, in bool convex) { + // Undo the scaling from ellipsoid to sphere + ray.pos = ray.pos * u_ellipsoidRadiiUv; + ray.dir = ray.dir * u_ellipsoidRadiiUv; + // Shift the ray to account for the latitude cone not being centered at the Earth center + ray.pos.z += getLatitudeConeShift(cosHalfAngle); + + float cosSqrHalfAngle = cosHalfAngle * cosHalfAngle; + vec2 intersect = intersectDoubleEndedCone(ray, cosSqrHalfAngle); + + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + if (intersect.x == NO_HIT) { + return RayShapeIntersection(miss, miss); + } + + // Find the points of intersection + float tmin = intersect.x; + float tmax = intersect.y; + vec3 p0 = ray.pos + tmin * ray.dir; + vec3 p1 = ray.pos + tmax * ray.dir; + + vec4 intersect0 = vec4(getConeNormal(p0, convex), tmin); + vec4 intersect1 = vec4(getConeNormal(p1, convex), tmax); + + bool p0InShadowCone = sign(p0.z) != sign(cosHalfAngle); + bool p1InShadowCone = sign(p1.z) != sign(cosHalfAngle); + + if (p0InShadowCone && p1InShadowCone) { + return RayShapeIntersection(miss, miss); + } else if (p0InShadowCone) { + return RayShapeIntersection(intersect1, farSide); + } else if (p1InShadowCone) { + return RayShapeIntersection(-1.0 * farSide, intersect0); + } else { + return RayShapeIntersection(intersect0, intersect1); + } +} + +void intersectShape(in Ray ray, inout Intersections ix) { + // Position is converted from [0,1] to [-1,+1] because shape intersections assume unit space is [-1,+1]. + // Direction is scaled as well to be in sync with position. + ray.pos = ray.pos * 2.0 - 1.0; + ray.dir *= 2.0; + + // Outer ellipsoid + RayShapeIntersection outerIntersect = intersectHeight(ray, u_clipMinMaxHeight.y, true); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX, outerIntersect); + + // Exit early if the outer ellipsoid was missed. + if (outerIntersect.entry.w == NO_HIT) { + return; + } + + // Inner ellipsoid + RayShapeIntersection innerIntersect = intersectHeight(ray, u_clipMinMaxHeight.x, false); + + if (innerIntersect.entry.w == NO_HIT) { + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN, innerIntersect); + } else { + // When the ellipsoid is large and thin it's possible for floating point math + // to cause the ray to intersect the inner ellipsoid before the outer ellipsoid. + // To prevent this from happening, clamp innerIntersect to outerIntersect and + // sandwich the inner ellipsoid intersection inside the outer ellipsoid intersection. + + // Without this special case, + // [outerMin, outerMax, innerMin, innerMax] will bubble sort to + // [outerMin, innerMin, outerMax, innerMax] which will cause the back + // side of the ellipsoid to be invisible because it will think the ray + // is still inside the inner (negative) ellipsoid after exiting the + // outer (positive) ellipsoid. + + // With this special case, + // [outerMin, innerMin, innerMax, outerMax] will bubble sort to + // [outerMin, innerMin, innerMax, outerMax] which will work correctly. + + // Note: If initializeIntersections() changes its sorting function + // from bubble sort to something else, this code may need to change. + innerIntersect.entry.w = max(innerIntersect.entry.w, outerIntersect.entry.w); + innerIntersect.exit.w = min(innerIntersect.exit.w, outerIntersect.exit.w); + setSurfaceIntersection(ix, 0, outerIntersect.entry, true, true); // positive, enter + setSurfaceIntersection(ix, 1, innerIntersect.entry, false, true); // negative, enter + setSurfaceIntersection(ix, 2, innerIntersect.exit, false, false); // negative, exit + setSurfaceIntersection(ix, 3, outerIntersect.exit, true, false); // positive, exit + } + + // Bottom cone + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF) + RayShapeIntersection bottomConeIntersection = intersectRegularCone(ray, u_ellipsoidRenderLatitudeSinMinMax.x, false); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN, bottomConeIntersection); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF) + RayShapeIntersection bottomConeIntersection = intersectZPlane(ray, -1.0); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN, bottomConeIntersection); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF) + RayShapeIntersection bottomConeIntersections[2]; + intersectFlippedCone(ray, u_ellipsoidRenderLatitudeSinMinMax.x, bottomConeIntersections); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN + 0, bottomConeIntersections[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN + 1, bottomConeIntersections[1]); + #endif + + // Top cone + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF) + RayShapeIntersection topConeIntersections[2]; + intersectFlippedCone(ray, u_ellipsoidRenderLatitudeSinMinMax.y, topConeIntersections); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX + 0, topConeIntersections[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX + 1, topConeIntersections[1]); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF) + RayShapeIntersection topConeIntersection = intersectZPlane(ray, 1.0); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX, topConeIntersection); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF) + RayShapeIntersection topConeIntersection = intersectRegularCone(ray, u_ellipsoidRenderLatitudeSinMinMax.y, false); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX, topConeIntersection); + #endif + + // Wedge + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO) + RayShapeIntersection wedgeIntersects[2]; + intersectHalfPlane(ray, u_ellipsoidRenderLongitudeMinMax.x, wedgeIntersects); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 1, wedgeIntersects[1]); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF) + RayShapeIntersection wedgeIntersect = intersectRegularWedge(ray, u_ellipsoidRenderLongitudeMinMax); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE, wedgeIntersect); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF) + RayShapeIntersection wedgeIntersects[2]; + intersectFlippedWedge(ray, u_ellipsoidRenderLongitudeMinMax, wedgeIntersects); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 1, wedgeIntersects[1]); + #endif +} +`;var VHi=y(C(),1),HI=`// Main intersection function for Voxel scenes. +// See IntersectBox.glsl, IntersectCylinder.glsl, or IntersectEllipsoid.glsl +// for the definition of intersectShape. The appropriate function is selected +// based on the VoxelPrimitive shape type, and added to the shader in +// Scene/VoxelRenderResources.js. +// See also IntersectClippingPlane.glsl and IntersectDepth.glsl. +// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, +// getFirstIntersection, initializeIntersections, nextIntersection. + +/* Intersection defines (set in Scene/VoxelRenderResources.js) +#define INTERSECTION_COUNT ### +*/ + +RayShapeIntersection intersectScene(in vec2 screenCoord, in Ray ray, out Intersections ix) { + // Do a ray-shape intersection to find the exact starting and ending points. + intersectShape(ray, ix); + + // Exit early if the positive shape was completely missed or behind the ray. + RayShapeIntersection intersection = getFirstIntersection(ix); + if (intersection.entry.w == NO_HIT) { + // Positive shape was completely missed - so exit early. + return intersection; + } + + // Clipping planes + #if defined(CLIPPING_PLANES) + intersectClippingPlanes(ray, ix); + #endif + + // Depth + intersectDepth(screenCoord, ray, ix); + + // Find the first intersection that's in front of the ray + #if (INTERSECTION_COUNT > 1) + initializeIntersections(ix); + for (int i = 0; i < INTERSECTION_COUNT; ++i) { + intersection = nextIntersection(ix); + if (intersection.exit.w > 0.0) { + // Set start to 0.0 when ray is inside the shape. + intersection.entry.w = max(intersection.entry.w, 0.0); + break; + } + } + #else + // Set start to 0.0 when ray is inside the shape. + intersection.entry.w = max(intersection.entry.w, 0.0); + #endif + + return intersection; +} +`;var ZHi=y(C(),1),bv=`/* Box defines (set in Scene/VoxelBoxShape.js) +#define BOX_HAS_SHAPE_BOUNDS +*/ + +#if defined(BOX_HAS_SHAPE_BOUNDS) + uniform vec3 u_boxUvToShapeUvScale; + uniform vec3 u_boxUvToShapeUvTranslate; +#endif + +PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) { + // For BOX, UV space = shape space, so we can use positionUv as-is, + // and the Jacobian is the identity matrix, except that a step of 1 + // only spans half the shape space [-1, 1], so the identity is scaled. + return PointJacobianT(positionUv, mat3(0.5)); +} + +vec3 convertShapeToShapeUvSpace(in vec3 positionShape) { +#if defined(BOX_HAS_SHAPE_BOUNDS) + return positionShape * u_boxUvToShapeUvScale + u_boxUvToShapeUvTranslate; +#else + return positionShape; +#endif +} + +PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) { + PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv); + pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point); + return pointJacobian; +} + +vec3 convertShapeUvToUvSpace(in vec3 shapeUv) { +#if defined(BOX_HAS_SHAPE_BOUNDS) + return (shapeUv - u_boxUvToShapeUvTranslate) / u_boxUvToShapeUvScale; +#else + return shapeUv; +#endif +} + +vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { +#if defined(BOX_HAS_SHAPE_BOUNDS) + return shapeUv / u_boxUvToShapeUvScale; +#else + return shapeUv; +#endif +}`;var wHi=y(C(),1),yv=`/* Cylinder defines (set in Scene/VoxelCylinderShape.js) +#define CYLINDER_HAS_SHAPE_BOUNDS_RADIUS +#define CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED +*/ + +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS) + uniform vec2 u_cylinderUvToShapeUvRadius; // x = scale, y = offset +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT) + uniform vec2 u_cylinderUvToShapeUvHeight; // x = scale, y = offset +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE) + uniform vec2 u_cylinderUvToShapeUvAngle; // x = scale, y = offset +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY) + uniform vec2 u_cylinderShapeUvAngleMinMax; +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED) + uniform float u_cylinderShapeUvAngleRangeZeroMid; +#endif + +PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) { + // Convert from Cartesian UV space [0, 1] to Cartesian local space [-1, 1] + vec3 position = positionUv * 2.0 - 1.0; + + float radius = length(position.xy); // [0, 1] + vec3 radial = normalize(vec3(position.xy, 0.0)); + + // Shape space height is defined within [0, 1] + float height = positionUv.z; // [0, 1] + vec3 z = vec3(0.0, 0.0, 1.0); + + float angle = atan(position.y, position.x); + vec3 east = normalize(vec3(-position.y, position.x, 0.0)); + + vec3 point = vec3(radius, angle, height); + mat3 jacobianT = mat3(radial, east / length(position.xy), z); + return PointJacobianT(point, jacobianT); +} + +vec3 convertShapeToShapeUvSpace(in vec3 positionShape) { + float radius = positionShape.x; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS) + radius = radius * u_cylinderUvToShapeUvRadius.x + u_cylinderUvToShapeUvRadius.y; + #endif + + float angle = (positionShape.y + czm_pi) / czm_twoPi; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE) + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED) + // Comparing against u_cylinderShapeUvAngleMinMax has precision problems. u_cylinderShapeUvAngleRangeZeroMid is more conservative. + angle += float(angle < u_cylinderShapeUvAngleRangeZeroMid); + #endif + + // Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity. + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) + angle = angle > u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.x : angle; + #elif defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY) + angle = angle < u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.y : angle; + #endif + + angle = angle * u_cylinderUvToShapeUvAngle.x + u_cylinderUvToShapeUvAngle.y; + #endif + + float height = positionShape.z; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT) + height = height * u_cylinderUvToShapeUvHeight.x + u_cylinderUvToShapeUvHeight.y; + #endif + + return vec3(radius, angle, height); +} + +PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) { + PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv); + pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point); + return pointJacobian; +} + +vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { + float radius = shapeUv.x; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS) + radius /= u_cylinderUvToShapeUvRadius.x; + #endif + + float angle = shapeUv.y * czm_twoPi; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE) + angle /= u_cylinderUvToShapeUvAngle.x; + #endif + + float height = shapeUv.z; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT) + height /= u_cylinderUvToShapeUvHeight.x; + #endif + + return vec3(radius, angle, height); +} +`;var WHi=y(C(),1),Cv=`/* Ellipsoid defines (set in Scene/VoxelEllipsoidShape.js) +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY +#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE +#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED +#define ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE +*/ + +uniform vec3 u_ellipsoidRadiiUv; // [0,1] +uniform vec2 u_evoluteScale; // (radiiUv.x ^ 2 - radiiUv.z ^ 2) * vec2(1.0, -1.0) / radiiUv; +uniform vec3 u_ellipsoidInverseRadiiSquaredUv; +#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY) || defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY) || defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED) + uniform vec3 u_ellipsoidShapeUvLongitudeMinMaxMid; +#endif +#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE) + uniform vec2 u_ellipsoidUvToShapeUvLongitude; // x = scale, y = offset +#endif +#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE) + uniform vec2 u_ellipsoidUvToShapeUvLatitude; // x = scale, y = offset +#endif +uniform float u_ellipsoidInverseHeightDifferenceUv; + +// robust iterative solution without trig functions +// https://github.com/0xfaded/ellipse_demo/issues/1 +// https://stackoverflow.com/questions/22959698/distance-from-given-point-to-given-ellipse +// Extended to return radius of curvature along with the point +vec3 nearestPointAndRadiusOnEllipse(vec2 pos, vec2 radii) { + vec2 p = abs(pos); + vec2 inverseRadii = 1.0 / radii; + + // We describe the ellipse parametrically: v = radii * vec2(cos(t), sin(t)) + // but store the cos and sin of t in a vec2 for efficiency. + // Initial guess: t = pi/4 + vec2 tTrigs = vec2(0.7071067811865476); + // Initial guess of point on ellipsoid + vec2 v = radii * tTrigs; + // Center of curvature of the ellipse at v + vec2 evolute = u_evoluteScale * tTrigs * tTrigs * tTrigs; + + const int iterations = 3; + for (int i = 0; i < iterations; ++i) { + // Find the (approximate) intersection of p - evolute with the ellipsoid. + vec2 q = normalize(p - evolute) * length(v - evolute); + // Update the estimate of t. + tTrigs = (q + evolute) * inverseRadii; + tTrigs = normalize(clamp(tTrigs, 0.0, 1.0)); + v = radii * tTrigs; + evolute = u_evoluteScale * tTrigs * tTrigs * tTrigs; + } + + return vec3(v * sign(pos), length(v - evolute)); +} + +PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) { + // Convert from UV space [0, 1] to local space [-1, 1] + vec3 position = positionUv * 2.0 - 1.0; + // Undo the scaling from ellipsoid to sphere + position = position * u_ellipsoidRadiiUv; + + float longitude = atan(position.y, position.x); + vec3 east = normalize(vec3(-position.y, position.x, 0.0)); + + // Convert the 3D position to a 2D position relative to the ellipse (radii.x, radii.z) + // (assume radii.y == radii.x) and find the nearest point on the ellipse and its normal + float distanceFromZAxis = length(position.xy); + vec2 posEllipse = vec2(distanceFromZAxis, position.z); + vec3 surfacePointAndRadius = nearestPointAndRadiusOnEllipse(posEllipse, u_ellipsoidRadiiUv.xz); + vec2 surfacePoint = surfacePointAndRadius.xy; + + vec2 normal2d = normalize(surfacePoint * u_ellipsoidInverseRadiiSquaredUv.xz); + float latitude = atan(normal2d.y, normal2d.x); + vec3 north = vec3(-normal2d.y * normalize(position.xy), abs(normal2d.x)); + + float heightSign = length(posEllipse) < length(surfacePoint) ? -1.0 : 1.0; + float height = heightSign * length(posEllipse - surfacePoint); + vec3 up = normalize(cross(east, north)); + + vec3 point = vec3(longitude, latitude, height); + mat3 jacobianT = mat3(east / distanceFromZAxis, north / (surfacePointAndRadius.z + height), up); + return PointJacobianT(point, jacobianT); +} + +vec3 convertShapeToShapeUvSpace(in vec3 positionShape) { + // Longitude: shift & scale to [0, 1] + float longitude = (positionShape.x + czm_pi) / czm_twoPi; + + // Correct the angle when max < min + // Technically this should compare against min longitude - but it has precision problems so compare against the middle of empty space. + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED) + longitude += float(longitude < u_ellipsoidShapeUvLongitudeMinMaxMid.z); + #endif + + // Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity. + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY) + longitude = longitude > u_ellipsoidShapeUvLongitudeMinMaxMid.z ? u_ellipsoidShapeUvLongitudeMinMaxMid.x : longitude; + #endif + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY) + longitude = longitude < u_ellipsoidShapeUvLongitudeMinMaxMid.z ? u_ellipsoidShapeUvLongitudeMinMaxMid.y : longitude; + #endif + + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE) + longitude = longitude * u_ellipsoidUvToShapeUvLongitude.x + u_ellipsoidUvToShapeUvLongitude.y; + #endif + + // Latitude: shift and scale to [0, 1] + float latitude = (positionShape.y + czm_piOverTwo) / czm_pi; + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE) + latitude = latitude * u_ellipsoidUvToShapeUvLatitude.x + u_ellipsoidUvToShapeUvLatitude.y; + #endif + + // Height: scale to the range [0, 1] + float height = 1.0 + positionShape.z * u_ellipsoidInverseHeightDifferenceUv; + + return vec3(longitude, latitude, height); +} + +PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) { + PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv); + pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point); + return pointJacobian; +} + +vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { + // Convert from [0, 1] to radians [-pi, pi] + float longitude = shapeUv.x * czm_twoPi; + #if defined (ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE) + longitude /= u_ellipsoidUvToShapeUvLongitude.x; + #endif + + // Convert from [0, 1] to radians [-pi/2, pi/2] + float latitude = shapeUv.y * czm_pi; + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE) + latitude /= u_ellipsoidUvToShapeUvLatitude.x; + #endif + + float height = shapeUv.z / u_ellipsoidInverseHeightDifferenceUv; + + return vec3(longitude, latitude, height); +} +`;var PHi=y(C(),1),xv=`// These octree flags must be in sync with GpuOctreeFlag in VoxelTraversal.js +#define OCTREE_FLAG_INTERNAL 0 +#define OCTREE_FLAG_LEAF 1 +#define OCTREE_FLAG_PACKED_LEAF_FROM_PARENT 2 + +#define OCTREE_MAX_LEVELS 32 // Harcoded value because GLSL doesn't like variable length loops + +uniform sampler2D u_octreeInternalNodeTexture; +uniform vec2 u_octreeInternalNodeTexelSizeUv; +uniform int u_octreeInternalNodeTilesPerRow; +#if (SAMPLE_COUNT > 1) +uniform sampler2D u_octreeLeafNodeTexture; +uniform vec2 u_octreeLeafNodeTexelSizeUv; +uniform int u_octreeLeafNodeTilesPerRow; +#endif +uniform ivec3 u_dimensions; // does not include padding, and is in the z-up orientation +uniform ivec3 u_inputDimensions; // includes padding, and is in the orientation of the input data +#if defined(PADDING) + uniform ivec3 u_paddingBefore; +#endif + +struct OctreeNodeData { + int data; + int flag; +}; + +struct TraversalData { + ivec4 octreeCoords; + int parentOctreeIndex; +}; + +struct SampleData { + int megatextureIndex; + ivec4 tileCoords; + vec3 tileUv; + vec3 inputCoordinate; + #if (SAMPLE_COUNT > 1) + float weight; + #endif +}; + +// Integer mod: For WebGL1 only +int intMod(in int a, in int b) { + return a - (b * (a / b)); +} +int normU8_toInt(in float value) { + return int(value * 255.0); +} +int normU8x2_toInt(in vec2 value) { + return int(value.x * 255.0) + 256 * int(value.y * 255.0); +} +float normU8x2_toFloat(in vec2 value) { + return float(normU8x2_toInt(value)) / 65535.0; +} + +OctreeNodeData getOctreeNodeData(in vec2 octreeUv) { + vec4 texData = texture(u_octreeInternalNodeTexture, octreeUv); + + OctreeNodeData data; + data.data = normU8x2_toInt(texData.xy); + data.flag = normU8x2_toInt(texData.zw); + return data; +} + +OctreeNodeData getOctreeChildData(in int parentOctreeIndex, in ivec3 childCoord) { + int childIndex = childCoord.z * 4 + childCoord.y * 2 + childCoord.x; + int octreeCoordX = intMod(parentOctreeIndex, u_octreeInternalNodeTilesPerRow) * 9 + 1 + childIndex; + int octreeCoordY = parentOctreeIndex / u_octreeInternalNodeTilesPerRow; + vec2 octreeUv = u_octreeInternalNodeTexelSizeUv * vec2(float(octreeCoordX) + 0.5, float(octreeCoordY) + 0.5); + return getOctreeNodeData(octreeUv); +} + +int getOctreeParentIndex(in int octreeIndex) { + int octreeCoordX = intMod(octreeIndex, u_octreeInternalNodeTilesPerRow) * 9; + int octreeCoordY = octreeIndex / u_octreeInternalNodeTilesPerRow; + vec2 octreeUv = u_octreeInternalNodeTexelSizeUv * vec2(float(octreeCoordX) + 0.5, float(octreeCoordY) + 0.5); + vec4 parentData = texture(u_octreeInternalNodeTexture, octreeUv); + int parentOctreeIndex = normU8x2_toInt(parentData.xy); + return parentOctreeIndex; +} + +/** +* Convert a position in the uv-space of the tileset bounding shape +* into the uv-space of a tile within the tileset +*/ +vec3 getTileUv(in vec3 shapePosition, in ivec4 octreeCoords) { + // PERFORMANCE_IDEA: use bit-shifting (only in WebGL2) + float dimAtLevel = exp2(float(octreeCoords.w)); + return shapePosition * dimAtLevel - vec3(octreeCoords.xyz); +} + +vec3 getClampedTileUv(in vec3 shapePosition, in ivec4 octreeCoords) { + vec3 tileUv = getTileUv(shapePosition, octreeCoords); + return clamp(tileUv, vec3(0.0), vec3(1.0)); +} + +void addSampleCoordinates(in vec3 shapePosition, inout SampleData sampleData) { + vec3 tileUv = getClampedTileUv(shapePosition, sampleData.tileCoords); + + vec3 inputCoordinate = tileUv * vec3(u_dimensions); +#if defined(PADDING) + inputCoordinate += vec3(u_paddingBefore); +#endif +#if defined(Y_UP_METADATA_ORDER) +#if defined(SHAPE_BOX) + float inputY = inputCoordinate.y; + inputCoordinate.y = float(u_inputDimensions.y) - inputCoordinate.z; + inputCoordinate.z = inputY; +#elif defined(SHAPE_CYLINDER) + float angle = inputCoordinate.y; + float height = inputCoordinate.z; + #if (!defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE)) + // Account for the different 0-angle convention in glTF vs 3DTiles + if (sampleData.tileCoords.w == 0) { + float angleCount = float(u_inputDimensions.z); + angle = mod(angle + angleCount / 2.0, angleCount); + } + #endif + inputCoordinate.y = height; + inputCoordinate.z = angle; +#endif +#endif + + sampleData.tileUv = tileUv; + sampleData.inputCoordinate = inputCoordinate; +} + +void getOctreeLeafSampleData(in OctreeNodeData data, in ivec4 octreeCoords, out SampleData sampleData) { + sampleData.megatextureIndex = data.data; + sampleData.tileCoords = (data.flag == OCTREE_FLAG_PACKED_LEAF_FROM_PARENT) + ? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1) + : octreeCoords; +} + +#if (SAMPLE_COUNT > 1) +void getOctreeLeafSampleDatas(in OctreeNodeData data, in ivec4 octreeCoords, out SampleData sampleDatas[SAMPLE_COUNT]) { + int leafIndex = data.data; + int leafNodeTexelCount = 2; + // Adding 0.5 moves to the center of the texel + float leafCoordXStart = float(intMod(leafIndex, u_octreeLeafNodeTilesPerRow) * leafNodeTexelCount) + 0.5; + float leafCoordY = float(leafIndex / u_octreeLeafNodeTilesPerRow) + 0.5; + + // Get an interpolation weight and a flag to determine whether to read the parent texture + vec2 leafUv0 = u_octreeLeafNodeTexelSizeUv * vec2(leafCoordXStart + 0.0, leafCoordY); + vec4 leafData0 = texture(u_octreeLeafNodeTexture, leafUv0); + float lerp = normU8x2_toFloat(leafData0.xy); + sampleDatas[0].weight = 1.0 - lerp; + sampleDatas[1].weight = lerp; + // TODO: this looks wrong? Should be comparing to OCTREE_FLAG_PACKED_LEAF_FROM_PARENT + sampleDatas[0].tileCoords = (normU8_toInt(leafData0.z) == 1) + ? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1) + : octreeCoords; + sampleDatas[1].tileCoords = (normU8_toInt(leafData0.w) == 1) + ? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1) + : octreeCoords; + + // Get megatexture indices for both samples + vec2 leafUv1 = u_octreeLeafNodeTexelSizeUv * vec2(leafCoordXStart + 1.0, leafCoordY); + vec4 leafData1 = texture(u_octreeLeafNodeTexture, leafUv1); + sampleDatas[0].megatextureIndex = normU8x2_toInt(leafData1.xy); + sampleDatas[1].megatextureIndex = normU8x2_toInt(leafData1.zw); +} +#endif + +OctreeNodeData traverseOctreeDownwards(in vec3 shapePosition, inout TraversalData traversalData) { + float sizeAtLevel = exp2(-1.0 * float(traversalData.octreeCoords.w)); + vec3 start = vec3(traversalData.octreeCoords.xyz) * sizeAtLevel; + vec3 end = start + vec3(sizeAtLevel); + OctreeNodeData childData; + + for (int i = 0; i < OCTREE_MAX_LEVELS; ++i) { + // Find out which octree child contains the position + // 0 if before center, 1 if after + vec3 center = 0.5 * (start + end); + vec3 childCoord = step(center, shapePosition); + + // Get octree coords for the next level down + ivec4 octreeCoords = traversalData.octreeCoords; + traversalData.octreeCoords = ivec4(octreeCoords.xyz * 2 + ivec3(childCoord), octreeCoords.w + 1); + + childData = getOctreeChildData(traversalData.parentOctreeIndex, ivec3(childCoord)); + + if (childData.flag != OCTREE_FLAG_INTERNAL) { + // leaf tile - stop traversing + break; + } + + // interior tile - keep going deeper + start = mix(start, center, childCoord); + end = mix(center, end, childCoord); + traversalData.parentOctreeIndex = childData.data; + } + + return childData; +} + +/** +* Transform a given position to an octree tile coordinate and a position within that tile, +* and find the corresponding megatexture index and texture coordinates +*/ +void traverseOctreeFromBeginning(in vec3 shapePosition, out TraversalData traversalData, out SampleData sampleDatas[SAMPLE_COUNT]) { + traversalData.octreeCoords = ivec4(0); + traversalData.parentOctreeIndex = 0; + + OctreeNodeData nodeData = getOctreeNodeData(vec2(0.0)); + if (nodeData.flag != OCTREE_FLAG_LEAF) { + nodeData = traverseOctreeDownwards(shapePosition, traversalData); + } + + #if (SAMPLE_COUNT == 1) + getOctreeLeafSampleData(nodeData, traversalData.octreeCoords, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[0]); + #else + getOctreeLeafSampleDatas(nodeData, traversalData.octreeCoords, sampleDatas); + addSampleCoordinates(shapePosition, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[1]); + #endif +} + +bool inRange(in vec3 v, in vec3 minVal, in vec3 maxVal) { + return clamp(v, minVal, maxVal) == v; +} + +bool insideTile(in vec3 shapePosition, in ivec4 octreeCoords) { + vec3 tileUv = getTileUv(shapePosition, octreeCoords); + bool inside = inRange(tileUv, vec3(0.0), vec3(1.0)); + // Assume (!) the position is always inside the root tile. + return inside || octreeCoords.w == 0; +} + +void traverseOctreeFromExisting(in vec3 shapePosition, inout TraversalData traversalData, inout SampleData sampleDatas[SAMPLE_COUNT]) { + if (insideTile(shapePosition, traversalData.octreeCoords)) { + for (int i = 0; i < SAMPLE_COUNT; i++) { + addSampleCoordinates(shapePosition, sampleDatas[i]); + } + return; + } + + // Go up tree until we find a parent tile containing shapePosition + for (int i = 0; i < OCTREE_MAX_LEVELS; ++i) { + traversalData.octreeCoords.xyz /= 2; + traversalData.octreeCoords.w -= 1; + + if (insideTile(shapePosition, traversalData.octreeCoords)) { + break; + } + + traversalData.parentOctreeIndex = getOctreeParentIndex(traversalData.parentOctreeIndex); + } + + // Go down tree + OctreeNodeData nodeData = traverseOctreeDownwards(shapePosition, traversalData); + + #if (SAMPLE_COUNT == 1) + getOctreeLeafSampleData(nodeData, traversalData.octreeCoords, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[0]); + #else + getOctreeLeafSampleDatas(nodeData, traversalData.octreeCoords, sampleDatas); + addSampleCoordinates(shapePosition, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[1]); + #endif +} +`;var vHi=y(C(),1),Iv=`// See Octree.glsl for the definitions of SampleData and intMod + +/* Megatexture defines (set in Scene/VoxelRenderResources.js) +#define SAMPLE_COUNT ### +#define NEAREST_SAMPLING +#define PADDING +*/ + +uniform ivec2 u_megatextureSliceDimensions; // number of slices per tile, in two dimensions +uniform ivec2 u_megatextureTileDimensions; // number of tiles per megatexture, in two dimensions +uniform vec2 u_megatextureVoxelSizeUv; +uniform vec2 u_megatextureSliceSizeUv; +uniform vec2 u_megatextureTileSizeUv; + +// Integer min, max, clamp: For WebGL1 only +int intMin(int a, int b) { + return a <= b ? a : b; +} +int intMax(int a, int b) { + return a >= b ? a : b; +} +int intClamp(int v, int minVal, int maxVal) { + return intMin(intMax(v, minVal), maxVal); +} + +vec2 index1DTo2DTexcoord(int index, ivec2 dimensions, vec2 uvScale) +{ + int indexX = intMod(index, dimensions.x); + int indexY = index / dimensions.x; + return vec2(indexX, indexY) * uvScale; +} + +/* + How is 3D data stored in a 2D megatexture? + + In this example there is only one loaded tile and it has 2x2x2 voxels (8 voxels total). + The data is sliced by Z. The data at Z = 0 is placed in texels (0,0), (0,1), (1,0), (1,1) and + the data at Z = 1 is placed in texels (2,0), (2,1), (3,0), (3,1). + Note that there could be empty space in the megatexture because it's a power of two. + + 0 1 2 3 + +---+---+---+---+ + | | | | | 3 + +---+---+---+---+ + | | | | | 2 + +-------+-------+ + |010|110|011|111| 1 + |--- ---|--- ---| + |000|100|001|101| 0 + +-------+-------+ + + When doing linear interpolation the megatexture needs to be sampled twice: once for + the Z slice above the voxel coordinate and once for the slice below. The two slices + are interpolated with fract(coord.z - 0.5). For example, a Z coordinate of 1.0 is + halfway between two Z slices so the interpolation factor is 0.5. Below is a side view + of the 3D voxel grid with voxel coordinates on the left side. + + 2 +---+ + |001| + 1 +-z-+ + |000| + 0 +---+ + + When doing nearest neighbor the megatexture only needs to be sampled once at the closest Z slice. +*/ + +Properties getPropertiesFromMegatexture(in SampleData sampleData) { + int tileIndex = sampleData.megatextureIndex; + + vec3 voxelCoord = sampleData.inputCoordinate; + #if defined(NEAREST_SAMPLING) + // Round to the center of the nearest voxel + voxelCoord = floor(voxelCoord) + vec3(0.5); + #endif + + // Tile location + vec2 tileUvOffset = index1DTo2DTexcoord(tileIndex, u_megatextureTileDimensions, u_megatextureTileSizeUv); + + // Slice location + float slice = voxelCoord.z - 0.5; + int sliceIndex = int(floor(slice)); + int sliceIndex0 = intClamp(sliceIndex, 0, u_inputDimensions.z - 1); + vec2 sliceUvOffset0 = index1DTo2DTexcoord(sliceIndex0, u_megatextureSliceDimensions, u_megatextureSliceSizeUv); + + // Voxel location + vec2 voxelUvOffset = clamp(voxelCoord.xy, vec2(0.5), vec2(u_inputDimensions.xy) - vec2(0.5)) * u_megatextureVoxelSizeUv; + + // Final location in the megatexture + vec2 uv0 = tileUvOffset + sliceUvOffset0 + voxelUvOffset; + + #if defined(NEAREST_SAMPLING) + return getPropertiesFromMegatextureAtUv(uv0); + #else + float sliceLerp = fract(slice); + int sliceIndex1 = intMin(sliceIndex + 1, u_inputDimensions.z - 1); + vec2 sliceUvOffset1 = index1DTo2DTexcoord(sliceIndex1, u_megatextureSliceDimensions, u_megatextureSliceSizeUv); + vec2 uv1 = tileUvOffset + sliceUvOffset1 + voxelUvOffset; + Properties properties0 = getPropertiesFromMegatextureAtUv(uv0); + Properties properties1 = getPropertiesFromMegatextureAtUv(uv1); + return mixProperties(properties0, properties1, sliceLerp); + #endif +} + +// Convert an array of sample datas to a final weighted properties. +Properties accumulatePropertiesFromMegatexture(in SampleData sampleDatas[SAMPLE_COUNT]) { + #if (SAMPLE_COUNT == 1) + return getPropertiesFromMegatexture(sampleDatas[0]); + #else + // When more than one sample is taken the accumulator needs to start at 0 + Properties properties = clearProperties(); + for (int i = 0; i < SAMPLE_COUNT; ++i) { + float weight = sampleDatas[i].weight; + + // Avoid reading the megatexture when the weight is 0 as it can be costly. + if (weight > 0.0) { + Properties tempProperties = getPropertiesFromMegatexture(sampleDatas[i]); + tempProperties = scaleProperties(tempProperties, weight); + properties = sumProperties(properties, tempProperties); + } + } + return properties; + #endif +} +`;var DHi=y(C(),1),Cxt={Z_UP:0,Y_UP:1},Um=Object.freeze(Cxt);function xxt(e){let t=new OA;this.shaderBuilder=t;let n=e._customShader,i=Lt(e._uniformMap,n.uniformMap);e._uniformMap=i;let o=n.uniforms;for(let p in o)if(o.hasOwnProperty(p)){let g=o[p];t.addUniform(g.type,p,be.FRAGMENT)}t.addUniform("sampler2D","u_megatextureTextures[METADATA_COUNT]",be.FRAGMENT),this.uniformMap=i;let r=e._clippingPlanes,s=l(r)&&r.enabled?r.length:0;this.clippingPlanes=r,this.clippingPlanesLength=s,t.addVertexLines([uv]),e.provider.metadataOrder===Um.Y_UP&&t.addDefine("Y_UP_METADATA_ORDER",void 0,be.FRAGMENT);let a=e._provider.shape;a==="BOX"?t.addDefine("SHAPE_BOX",void 0,be.FRAGMENT):a==="CYLINDER"?t.addDefine("SHAPE_CYLINDER",void 0,be.FRAGMENT):a==="ELLIPSOID"&&t.addDefine("SHAPE_ELLIPSOID",void 0,be.FRAGMENT),t.addFragmentLines([n.fragmentShaderText,"#line 0",xv,lv,mv,Iv]),s>0&&(t.addDefine("CLIPPING_PLANES",void 0,be.FRAGMENT),t.addDefine("CLIPPING_PLANES_COUNT",s,be.FRAGMENT),r.unionClippingRegions&&t.addDefine("CLIPPING_PLANES_UNION",void 0,be.FRAGMENT),t.addFragmentLines([fv])),t.addFragmentLines([hv]),e._depthTest&&t.addDefine("DEPTH_TEST",void 0,be.FRAGMENT),a==="BOX"?t.addFragmentLines([bv,pv,HI]):a==="CYLINDER"?t.addFragmentLines([yv,AL,Av,HI]):a==="ELLIPSOID"&&t.addFragmentLines([Cv,AL,gv,HI]),t.addFragmentLines([dv]);let c=e._shape,d=c.shaderDefines;for(let p in d)if(d.hasOwnProperty(p)){let g=d[p];l(g)&&(g=g===!0?void 0:g,t.addDefine(p,g,be.FRAGMENT))}let u=c.shaderMaximumIntersectionsLength;s>0&&(t.addDefine("CLIPPING_PLANES_INTERSECTION_INDEX",u,be.FRAGMENT),s===1?u+=1:r.unionClippingRegions?u+=2:u+=1),e._depthTest&&(t.addDefine("DEPTH_INTERSECTION_INDEX",u,be.FRAGMENT),u+=1),t.addDefine("INTERSECTION_COUNT",u,be.FRAGMENT),(!m.equals(e.paddingBefore,m.ZERO)||!m.equals(e.paddingAfter,m.ZERO))&&t.addDefine("PADDING",void 0,be.FRAGMENT),e._useLogDepth&&t.addDefine("LOG_DEPTH_READ_ONLY",void 0,be.FRAGMENT),e._nearestSampling&&t.addDefine("NEAREST_SAMPLING",void 0,be.FRAGMENT);let h=e._traversal;t.addDefine("SAMPLE_COUNT",`${h._sampleCount}`,be.FRAGMENT)}var _v=xxt;var Azi=y(C(),1);function Ixt(e,t){let{shaderBuilder:n}=e,{names:i,types:o,componentTypes:r,minimumValues:s,maximumValues:a}=t._provider,c=o.length,d=l(s)&&l(a);n.addDefine("METADATA_COUNT",c,be.FRAGMENT),d&&n.addDefine("STATISTICS",void 0,be.FRAGMENT);for(let A=0;A<c;A++){let T=i[A],L=IY(o[A]),V=`PropertyStatistics_${T}`,W=`PropertyStatistics_${T}`;n.addStruct(V,W,be.FRAGMENT),n.addStructField(V,L,"min"),n.addStructField(V,L,"max")}let u="MetadataStatistics",h="MetadataStatistics",p="metadataStatistics";n.addStruct(u,h,be.FRAGMENT);for(let A=0;A<c;A++){let T=i[A],L=`PropertyStatistics_${T}`,V=T;n.addStructField(u,L,V)}let g="Metadata",f="Metadata",b="metadata";n.addStruct(g,f,be.FRAGMENT);for(let A=0;A<c;A++){let T=IY(o[A]);n.addStructField(g,T,i[A])}let x="Attributes",I="Attributes",_="attributes";n.addStruct(x,I,be.FRAGMENT),n.addStructField(x,"vec3","positionEC"),n.addStructField(x,"vec3","normalEC");let E="Voxel",S="Voxel",R="voxel";n.addStruct(E,S,be.FRAGMENT),n.addStructField(E,"vec3","viewDirUv"),n.addStructField(E,"float","travelDistance"),n.addStructField(E,"int","stepCount"),n.addStructField(E,"int","tileIndex"),n.addStructField(E,"int","sampleIndex"),n.addStructField(E,"float","distanceToDepthBuffer");let G="FragmentInput";n.addStruct(G,"FragmentInput",be.FRAGMENT),n.addStructField(G,h,p),n.addStructField(G,f,b),n.addStructField(G,I,_),n.addStructField(G,S,R);let w="Properties",F="Properties",P="properties";n.addStruct(w,F,be.FRAGMENT);for(let A=0;A<c;A++){let T=IY(o[A]);n.addStructField(w,T,i[A])}{let A="clearProperties";n.addFunction(A,`${F} clearProperties()`,be.FRAGMENT),n.addFunctionLines(A,[`${F} ${P};`]);for(let T=0;T<c;T++){let L=IY(o[T],r[T]);n.addFunctionLines(A,[`${P}.${i[T]} = ${L}(0.0);`])}n.addFunctionLines(A,[`return ${P};`])}{let A="sumProperties";n.addFunction(A,`${F} sumProperties(${F} propertiesA, ${F} propertiesB)`,be.FRAGMENT),n.addFunctionLines(A,[`${F} ${P};`]);for(let T=0;T<c;T++){let L=i[T];n.addFunctionLines(A,[`${P}.${L} = propertiesA.${L} + propertiesB.${L};`])}n.addFunctionLines(A,[`return ${P};`])}{let A="scaleProperties";n.addFunction(A,`${F} scaleProperties(${F} ${P}, float scale)`,be.FRAGMENT),n.addFunctionLines(A,[`${F} scaledProperties = ${P};`]);for(let T=0;T<c;T++)n.addFunctionLines(A,[`scaledProperties.${i[T]} *= scale;`]);n.addFunctionLines(A,["return scaledProperties;"])}{let A="mixProperties";n.addFunction(A,`${F} mixProperties(${F} propertiesA, ${F} propertiesB, float mixFactor)`,be.FRAGMENT),n.addFunctionLines(A,[`${F} ${P};`]);for(let T=0;T<c;T++){let L=i[T];n.addFunctionLines(A,[`${P}.${L} = mix(propertiesA.${L}, propertiesB.${L}, mixFactor);`])}n.addFunctionLines(A,[`return ${P};`])}{let A="copyPropertiesToMetadata";n.addFunction(A,`void copyPropertiesToMetadata(in ${F} ${P}, inout ${f} ${b})`,be.FRAGMENT);for(let T=0;T<c;T++){let L=i[T];n.addFunctionLines(A,[`${b}.${L} = ${P}.${L};`])}}if(d){let A="setStatistics";n.addFunction(A,`void setStatistics(inout ${h} ${p})`,be.FRAGMENT);for(let T=0;T<c;T++){let L=i[T],V=o[T],W=bt.getComponentCount(V);for(let M=0;M<W;M++){let Q=Ext(V,M),N=s[T][M],k=a[T][M];!l(N)||!l(k)||n.addFunctionLines(A,[`${p}.${L}.min${Q} = ${rEe(N)};`,`${p}.${L}.max${Q} = ${rEe(k)};`])}}}{let A="getPropertiesFromMegatextureAtUv";n.addFunction(A,`${F} getPropertiesFromMegatextureAtUv(vec2 texcoord)`,be.FRAGMENT),n.addFunctionLines(A,[`${F} ${P};`]);for(let T=0;T<c;T++){let L=o[T],V=r[T],W=_xt(L,V);n.addFunctionLines(A,[`properties.${i[T]} = texture(u_megatextureTextures[${T}], texcoord)${W};`])}n.addFunctionLines(A,[`return ${P};`])}}function IY(e){if(e===bt.SCALAR)return"float";if(e===bt.VEC2)return"vec2";if(e===bt.VEC3)return"vec3";if(e===bt.VEC4)return"vec4"}function _xt(e){if(e===bt.SCALAR)return".r";if(e===bt.VEC2)return".ra";if(e===bt.VEC3)return".rgb";if(e===bt.VEC4)return""}function rEe(e){let t=e.toString();return t.indexOf(".")===-1&&(t=`${e}.0`),t}function Ext(e,t){return e===bt.SCALAR?"":`[${t}]`}var Ev=Ixt;function Txt(e,t){let n=new _v(e);Ev(n,e);let{shaderBuilder:i,clippingPlanes:o,clippingPlanesLength:r}=n;if(r>0){let I="getClippingPlane",_=Qg(o,t),E=0,S=_.indexOf(")")+1,R=_.indexOf("{",S)+1,G=_.indexOf("}",R),B=_.slice(E,S),w=_.slice(R,G);i.addFunction(I,B,be.FRAGMENT),i.addFunctionLines(I,[w])}let s=i.clone();s.addDefine("PICKING",void 0,be.FRAGMENT);let a=i.clone();a.addDefine("PICKING_VOXEL",void 0,be.FRAGMENT);let c=i.buildShaderProgram(t),d=s.buildShaderProgram(t),u=a.buildShaderProgram(t),h=Qe.fromCache({cull:{enabled:!0,face:Xi.BACK},depthTest:{enabled:!1},depthMask:!1,blending:bn.PRE_MULTIPLIED_ALPHA_BLEND}),p=t.getViewportQuadVertexArray(),g=e._depthTest,f=new ot({vertexArray:p,primitiveType:We.TRIANGLES,renderState:h,shaderProgram:c,uniformMap:n.uniformMap,modelMatrix:e._compoundModelMatrix,pass:Ge.VOXELS,executeInClosestFrustum:!0,owner:this,cull:g,occlude:g}),b=ot.shallowClone(f,new ot);b.shaderProgram=d,b.pickOnly=!0;let x=ot.shallowClone(f,new ot);if(x.shaderProgram=u,x.pickOnly=!0,l(e._drawCommand)){let I=e._drawCommand;I.shaderProgram=I.shaderProgram&&I.shaderProgram.destroy()}if(l(e._drawCommandPick)){let I=e._drawCommandPick;I.shaderProgram=I.shaderProgram&&I.shaderProgram.destroy()}if(l(e._drawCommandPickVoxel)){let I=e._drawCommandPickVoxel;I.shaderProgram=I.shaderProgram&&I.shaderProgram.destroy()}e._drawCommand=f,e._drawCommandPick=b,e._drawCommandPickVoxel=x}var Tv=Txt;var eKi=y(C(),1);var Zzi=y(C(),1),Sxt={FLOAT:"float",VEC2:"vec2",VEC3:"vec3",VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",MAT2:"mat2",MAT3:"mat3",MAT4:"mat4",SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube"},gL=Object.freeze(Sxt);var kzi=y(C(),1);var wzi=y(C(),1);function Lxt(e,t,n){let i=new Uint8ClampedArray(e.buffer),o=new ImageData(i,t,n),r=document.createElement("canvas");return r.width=t,r.height=n,r.getContext("2d").putImageData(o,0,0),r}var Sv=Lxt;function bL(){this._defaultTexture=void 0,this._textures={},this._loadedImages=[],this._lastUpdatedFrame=-1}bL.prototype.getTexture=function(e){return this._textures[e]};function Rxt(e,t,n){n.resource.fetchImage().then(function(i){e._loadedImages.push({id:t,image:i,textureUniform:n})}).catch(function(){let i=e._textures[t];l(i)&&i!==e._defaultTexture&&i.destroy(),e._textures[t]=e._defaultTexture})}bL.prototype.loadTexture2D=function(e,t){l(t.typedArray)?this._loadedImages.push({id:e,textureUniform:t}):Rxt(this,e,t)};function Vxt(e,t,n){let{id:i,textureUniform:o,image:r}=t,s=n.webgl2?_Y(o,r,n):Gxt(o,r,n),a=e._textures[i];l(a)&&a!==n.defaultTexture&&a.destroy(),e._textures[i]=s}function _Y(e,t,n){let{typedArray:i,sampler:o}=e,r=l(i)?aEe(e,n):new Wt({context:n,source:t,sampler:o});return sEe(o)&&r.generateMipmap(),r}function Gxt(e,t,n){let{typedArray:i,sampler:o}=e,r=sEe(o),s=o.wrapS===Ln.REPEAT||o.wrapS===Ln.MIRRORED_REPEAT||o.wrapT===Ln.REPEAT||o.wrapT===Ln.MIRRORED_REPEAT,{width:a,height:c}=l(i)?e:t,d=[a,c].every(Z.isPowerOfTwo);if((r||s)&&!d)if(l(i)){if(e.pixelDatatype===Ye.UNSIGNED_BYTE){let h=Sv(i,a,c),p=kb(h);return _Y({sampler:o},p,n)}}else{let h=kb(t);return _Y(e,h,n)}else return _Y(e,t,n);return r?console.warn("Texture requires resizing for mipmaps but pixelDataType cannot be resized. The texture may be rendered incorrectly."):s&&console.warn("Texture requires resizing for wrapping but pixelDataType cannot be resized. The texture may be rendered incorrectly."),aEe(e,n)}function sEe(e){return[en.NEAREST_MIPMAP_NEAREST,en.NEAREST_MIPMAP_LINEAR,en.LINEAR_MIPMAP_NEAREST,en.LINEAR_MIPMAP_LINEAR].includes(e.minificationFilter)}function aEe(e,t){let{pixelFormat:n,pixelDatatype:i,width:o,height:r,typedArray:s,sampler:a}=e;return new Wt({context:t,pixelFormat:n,pixelDatatype:i,source:{arrayBufferView:s,width:o,height:r},sampler:a,flipY:!1})}bL.prototype.update=function(e){if(e.frameNumber===this._lastUpdatedFrame)return;this._lastUpdatedFrame=e.frameNumber;let t=e.context;this._defaultTexture=t.defaultTexture;let n=this._loadedImages;for(let i=0;i<n.length;i++){let o=n[i];Vxt(this,o,t)}n.length=0};bL.prototype.isDestroyed=function(){return!1};bL.prototype.destroy=function(){let e=this._textures;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];n!==this._defaultTexture&&n.destroy()}return me(this)};var Lv=bL;function Rv(e){e=e??Y.EMPTY_OBJECT,this.mode=e.mode??DA.MODIFY_MATERIAL,this.lightingModel=e.lightingModel,this.uniforms=e.uniforms??Y.EMPTY_OBJECT,this.varyings=e.varyings??Y.EMPTY_OBJECT,this.vertexShaderText=e.vertexShaderText,this.fragmentShaderText=e.fragmentShaderText,this.translucencyMode=e.translucencyMode??c0.INHERIT,this._textureManager=new Lv,this._defaultTexture=void 0,this.uniformMap=Zxt(this),this.usedVariablesVertex={attributeSet:{},featureIdSet:{},metadataSet:{}},this.usedVariablesFragment={attributeSet:{},featureIdSet:{},metadataSet:{},materialSet:{}},Xxt(this),Wxt(this)}function Zxt(e){let t=e.uniforms,n={};for(let i in t)if(t.hasOwnProperty(i)){let o=t[i];o.type===gL.SAMPLER_2D?(e._textureManager.loadTexture2D(i,o.value),n[i]=Bxt(e,i)):n[i]=wxt(e,i)}return n}function Bxt(e,t){return function(){return e._textureManager.getTexture(t)??e._defaultTexture}}function wxt(e,t){return function(){return e.uniforms[t].value}}function zI(e,t,n){let i;for(;(i=t.exec(e))!==null;){let o=i[1];n[o]=!0}}function Xxt(e){let t=/[vf]sInput\.attributes\.(\w+)/g,n=/[vf]sInput\.featureIds\.(\w+)/g,i=/[vf]sInput\.metadata.(\w+)/g,o,r=e.vertexShaderText;l(r)&&(o=e.usedVariablesVertex.attributeSet,zI(r,t,o),o=e.usedVariablesVertex.featureIdSet,zI(r,n,o),o=e.usedVariablesVertex.metadataSet,zI(r,i,o));let s=e.fragmentShaderText;if(l(s)){o=e.usedVariablesFragment.attributeSet,zI(s,t,o),o=e.usedVariablesFragment.featureIdSet,zI(s,n,o),o=e.usedVariablesFragment.metadataSet,zI(s,i,o);let a=/material\.(\w+)/g,c=e.usedVariablesFragment.materialSet;zI(s,a,c)}}function cEe(e){let t=/^.*MC$/,n=/^.*WC$/,i=/^.*EC$/;return t.test(e)?`${e} (model coordinates)`:n.test(e)?`${e} (Cartesian world coordinates)`:i.test(e)?`${e} (eye coordinates)`:e}function $c(e,t,n,i){if(e.hasOwnProperty(t)){let o=`${cEe(t)} is not available in the ${i} shader. Did you mean ${cEe(n)} instead?`;throw new Ae(o)}}function Wxt(e){let t=e.usedVariablesVertex.attributeSet;$c(t,"position","positionMC","vertex"),$c(t,"normal","normalMC","vertex"),$c(t,"tangent","tangentMC","vertex"),$c(t,"bitangent","bitangentMC","vertex"),$c(t,"positionWC","positionMC","vertex"),$c(t,"positionEC","positionMC","vertex"),$c(t,"normalEC","normalMC","vertex"),$c(t,"tangentEC","tangentMC","vertex"),$c(t,"bitangentEC","bitangentMC","vertex");let n=e.usedVariablesFragment.attributeSet;$c(n,"position","positionEC","fragment"),$c(n,"normal","normalEC","fragment"),$c(n,"tangent","tangentEC","fragment"),$c(n,"bitangent","bitangentEC","fragment"),$c(n,"normalMC","normalEC","fragment"),$c(n,"tangentMC","tangentEC","fragment"),$c(n,"bitangentMC","bitangentEC","fragment")}Rv.prototype.setUniform=function(e,t){let n=this.uniforms[e];n.type===gL.SAMPLER_2D?this._textureManager.loadTexture2D(e,t):l(t.clone)?n.value=t.clone(n.value):n.value=t};Rv.prototype.update=function(e){this._defaultTexture=e.context.defaultTexture,this._textureManager.update(e)};Rv.prototype.isDestroyed=function(){return!1};Rv.prototype.destroy=function(){this._textureManager=this._textureManager&&this._textureManager.destroy(),me(this)};var KI=Rv;var cKi=y(C(),1);function qg(e){let{loader:t,metadata:n}=e;this._loader=t,this._metadata=n,this._resourcesLoaded=!1,this._ready=!1}Object.defineProperties(qg.prototype,{ready:{get:function(){return this._ready}},metadata:{get:function(){return this._metadata}}});qg.fromMetadataArray=function(e){return new qg({metadata:e})};qg.fromGltf=async function(e){let t=new Od({gltfResource:e,releaseGltfJson:!1,loadAttributesAsTypedArray:!0});try{await t.load()}catch(n){throw t.destroy(),n}return new qg({loader:t})};qg.prototype.update=function(e,t){let n=this._loader;if(!this._ready){if(t.afterRender.push(()=>!0),!l(n)){this._ready=!0;return}if(this._resourcesLoaded){let{structuralMetadata:i,scene:o}=n.components,{attributes:r}=o.nodes[0].primitives[0];this._metadata=Fxt(r,i,e),this._ready=!0;return}this._resourcesLoaded=n.process(t)}};function Fxt(e,t,n){let{className:i,names:o,types:r,componentTypes:s}=n.provider,a=t.propertyAttributes.find(u=>u.class.id===i),{properties:c}=a,d=new Array(o.length);for(let u=0;u<e.length;u++){let h=c[o[u]].attribute,p=e.find(x=>x.name===h);if(!l(p))continue;let g=Ut.toComponentDatatype(s[u]),f=bt.getComponentCount(r[u]),b=p.count*f;d[u]=J.createArrayBufferView(g,p.typedArray.buffer,p.typedArray.byteOffset+p.byteOffset,b)}return d}qg.prototype.isDestroyed=function(){return!1};qg.prototype.destroy=function(){return this._loader=this._loader&&this._loader.destroy(),me(this)};var JI=qg;var QKi=y(C(),1);var AKi=y(C(),1);function Fp(){this.orientedBoundingBox=new vn,this.boundingSphere=new ue,this.boundTransform=new X,this.shapeTransform=new X,this._minBounds=Fp.DefaultMinBounds.clone(),this._maxBounds=Fp.DefaultMaxBounds.clone(),this.shaderUniforms={renderMinBounds:new m,renderMaxBounds:new m,boxUvToShapeUvScale:new m,boxUvToShapeUvTranslate:new m},this.shaderDefines={BOX_INTERSECTION_INDEX:void 0,BOX_HAS_SHAPE_BOUNDS:void 0},this.shaderMaximumIntersectionsLength=0}var Pxt=new m,v6=new m,Mxt=new $,vxt=new m,Nxt=new m,Dxt=new m,Qxt=new m,lEe=X.fromRotationTranslation($.fromUniformScale(.5,new $),new m(.5,.5,.5),new X);Fp.prototype.update=function(e,t,n,i,o){i=i??t.clone(vxt),o=o??n.clone(Nxt),t=m.clone(t,this._minBounds),n=m.clone(n,this._maxBounds);let r=m.clamp(t,i,o,Dxt),s=m.clamp(n,i,o,Qxt),a=X.getScale(e,v6);if(r.x>s.x||r.y>s.y||r.z>s.z||(r.x===s.x)+(r.y===s.y)+(r.z===s.z)>=2||a.x===0||a.y===0||a.z===0)return!1;this.shapeTransform=X.clone(e,this.shapeTransform),this.orientedBoundingBox=D6(r,s,this.shapeTransform,this.orientedBoundingBox),this.boundTransform=X.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=ue.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let{shaderUniforms:c,shaderDefines:d}=this;for(let g in d)d.hasOwnProperty(g)&&(d[g]=void 0);let u=0;d.BOX_INTERSECTION_INDEX=u,u+=1,c.renderMinBounds=X.multiplyByPoint(lEe,r,c.renderMinBounds),c.renderMaxBounds=X.multiplyByPoint(lEe,s,c.renderMaxBounds),d.BOX_HAS_SHAPE_BOUNDS=!0;let h=t,p=n;return c.boxUvToShapeUvScale=m.fromElements(2/(h.x===p.x?1:p.x-h.x),2/(h.y===p.y?1:p.y-h.y),2/(h.z===p.z?1:p.z-h.z),c.boxUvToShapeUvScale),c.boxUvToShapeUvTranslate=m.fromElements(-c.boxUvToShapeUvScale.x*(h.x*.5+.5),-c.boxUvToShapeUvScale.y*(h.y*.5+.5),-c.boxUvToShapeUvScale.z*(h.z*.5+.5),c.boxUvToShapeUvTranslate),this.shaderMaximumIntersectionsLength=u,!0};var EY=new m,N6=new m;Fp.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=this._minBounds,s=this._maxBounds,a=1/Math.pow(2,e),c=m.fromElements(Z.lerp(r.x,s.x,a*t),Z.lerp(r.y,s.y,a*n),Z.lerp(r.z,s.z,a*i),EY),d=m.fromElements(Z.lerp(r.x,s.x,a*(t+1)),Z.lerp(r.y,s.y,a*(n+1)),Z.lerp(r.z,s.z,a*(i+1)),N6);return D6(c,d,this.shapeTransform,o)};var dEe=new m;Fp.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=m.divideComponents(m.ONE,t,dEe),s=m.multiplyByScalar(r,o,dEe),a=m.multiplyByScalar(m.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,EY),o,EY),c=m.add(a,s,N6),d=this._minBounds,u=this._maxBounds,h=m.fromElements(Z.lerp(d.x,u.x,a.x),Z.lerp(d.y,u.y,a.y),Z.lerp(d.z,u.z,a.z),EY),p=m.fromElements(Z.lerp(d.x,u.x,c.x),Z.lerp(d.y,u.y,c.y),Z.lerp(d.z,u.z,c.z),N6);return D6(h,p,this.shapeTransform,i)};Fp.DefaultMinBounds=Object.freeze(new m(-1,-1,-1));Fp.DefaultMaxBounds=Object.freeze(new m(1,1,1));function D6(e,t,n,i){let o=Fp.DefaultMinBounds,r=Fp.DefaultMaxBounds;if(m.equals(e,o)&&m.equals(t,r))i.center=X.getTranslation(n,i.center),i.halfAxes=X.getMatrix3(n,i.halfAxes);else{let a=X.getScale(n,v6),c=m.midpoint(e,t,Pxt);i.center=X.multiplyByPoint(n,c,i.center),a=m.fromElements(a.x*.5*(t.x-e.x),a.y*.5*(t.y-e.y),a.z*.5*(t.z-e.z),v6);let d=X.getRotation(n,Mxt);i.halfAxes=$.setScale(d,a,i.halfAxes)}return i}var jI=Fp;var SKi=y(C(),1);function $g(){this.orientedBoundingBox=new vn,this.boundingSphere=new ue,this.boundTransform=new X,this.shapeTransform=new X,this._minBounds=$g.DefaultMinBounds.clone(),this._maxBounds=$g.DefaultMaxBounds.clone(),this.shaderUniforms={cylinderRenderRadiusMinMax:new D,cylinderRenderAngleMinMax:new D,cylinderRenderHeightMinMax:new D,cylinderUvToShapeUvRadius:new D,cylinderUvToShapeUvAngle:new D,cylinderUvToShapeUvHeight:new D,cylinderShapeUvAngleMinMax:new D,cylinderShapeUvAngleRangeZeroMid:0},this.shaderDefines={CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN:void 0,CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF:void 0,CYLINDER_HAS_SHAPE_BOUNDS_RADIUS:void 0,CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED:void 0,CYLINDER_INTERSECTION_INDEX_RADIUS_MAX:void 0,CYLINDER_INTERSECTION_INDEX_RADIUS_MIN:void 0,CYLINDER_INTERSECTION_INDEX_ANGLE:void 0},this.shaderMaximumIntersectionsLength=0}var hEe=new m,Uxt=new m,kxt=new m,Yxt=new m,Oxt=new m;$g.prototype.update=function(e,t,n,i,o){i=i??t.clone(Uxt),o=o??n.clone(kxt),t=m.clone(t,this._minBounds),n=m.clone(n,this._maxBounds);let{DefaultMinBounds:r,DefaultMaxBounds:s}=$g,a=s.y-r.y,c=.5*a,d=Z.EPSILON10,u=Z.EPSILON3,h=Z.EPSILON10;t.x=Math.max(0,t.x),n.x=Math.max(0,n.x),t.y=Z.negativePiToPi(t.y),n.y=Z.negativePiToPi(n.y),i.y=Z.negativePiToPi(i.y),o.y=Z.negativePiToPi(o.y);let p=m.maximumByComponent(t,i,Yxt),g=m.minimumByComponent(n,o,Oxt),f=X.getScale(e,hEe);if(g.x===0||p.x>g.x||p.z>g.z||Z.equalsEpsilon(f.x,0,void 0,d)||Z.equalsEpsilon(f.y,0,void 0,d)||Z.equalsEpsilon(f.z,0,void 0,d))return!1;this.shapeTransform=X.clone(e,this.shapeTransform),this.orientedBoundingBox=k6(p,g,this.shapeTransform,this.orientedBoundingBox),this.boundTransform=X.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=ue.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let b=t.x===r.x&&n.x===s.x,x=n.y<t.y,I=n.y-t.y+x*a,_=I>c+h&&I<a-h,E=I<c-h,S=I>=c-h&&I<=c+h,R=_||E||S,G=Z.equalsEpsilon(t.y,r.y,void 0,u),B=Z.equalsEpsilon(n.y,s.y,void 0,u),w=t.z===r.z&&n.z===s.z,F=p.x===r.x,P=g.y<p.y,A=g.y-p.y+P*a,T=A>=c-h&&A<a-h,L=A>h&&A<c-h,V=A<=h,W=T||L||V,{shaderUniforms:M,shaderDefines:Q}=this;for(let k in Q)Q.hasOwnProperty(k)&&(Q[k]=void 0);let N=0;if(Q.CYLINDER_INTERSECTION_INDEX_RADIUS_MAX=N,N+=1,F||(Q.CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN=!0,Q.CYLINDER_INTERSECTION_INDEX_RADIUS_MIN=N,N+=1),M.cylinderRenderRadiusMinMax=D.fromElements(p.x,g.x,M.cylinderRenderRadiusMinMax),p.x===g.x&&(Q.CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT=!0),!b){Q.CYLINDER_HAS_SHAPE_BOUNDS_RADIUS=!0;let k=n.x-t.x,v=0,O=1;k!==0&&(v=1/k,O=-t.x/k),M.cylinderUvToShapeUvRadius=D.fromElements(v,O,M.cylinderUvToShapeUvRadius)}if(!w){Q.CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT=!0;let k=n.z-t.z,v=0,O=1;k!==0&&(v=2/k,O=-(t.z+1)/k),M.cylinderUvToShapeUvHeight=D.fromElements(v,O,M.cylinderUvToShapeUvHeight)}if(M.cylinderRenderHeightMinMax=D.fromElements(p.z,g.z,M.cylinderRenderHeightMinMax),x&&(Q.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED=!0),W&&(Q.CYLINDER_HAS_RENDER_BOUNDS_ANGLE=!0,Q.CYLINDER_INTERSECTION_INDEX_ANGLE=N,T?(Q.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF=!0,N+=1):L?(Q.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF=!0,N+=2):V&&(Q.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO=!0,N+=2),M.cylinderRenderAngleMinMax=D.fromElements(p.y,g.y,M.cylinderRenderAngleMinMax)),R){Q.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE=!0,G&&(Q.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY=!0),B&&(Q.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY=!0);let k=(t.y-r.y)/a,v=(n.y-r.y)/a,O=1-I/a;if(M.cylinderShapeUvAngleMinMax=D.fromElements(k,v,M.cylinderShapeUvAngleMinMax),M.cylinderShapeUvAngleRangeZeroMid=(v+.5*O)%1,I<=h)M.cylinderUvToShapeUvAngle=D.fromElements(0,1,M.cylinderUvToShapeUvAngle);else{let H=a/I,ee=-(t.y-r.y)/I;M.cylinderUvToShapeUvAngle=D.fromElements(H,ee,M.cylinderUvToShapeUvAngle)}}return this.shaderMaximumIntersectionsLength=N,!0};var TY=new m,U6=new m;$g.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=this._minBounds,s=this._maxBounds,a=1/Math.pow(2,e),c=m.fromElements(Z.lerp(r.x,s.x,t*a),Z.lerp(r.y,s.y,n*a),Z.lerp(r.z,s.z,i*a),TY),d=m.fromElements(Z.lerp(r.x,s.x,(t+1)*a),Z.lerp(r.y,s.y,(n+1)*a),Z.lerp(r.z,s.z,(i+1)*a),U6);return k6(c,d,this.shapeTransform,o)};var uEe=new m;$g.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=m.divideComponents(m.ONE,t,uEe),s=m.multiplyByScalar(r,o,uEe),a=m.multiplyByScalar(m.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,TY),o,TY),c=m.add(a,s,U6),d=this._minBounds,u=this._maxBounds,h=m.fromElements(Z.lerp(d.x,u.x,a.x),Z.lerp(d.y,u.y,a.y),Z.lerp(d.z,u.z,a.z),TY),p=m.fromElements(Z.lerp(d.x,u.x,c.x),Z.lerp(d.y,u.y,c.y),Z.lerp(d.z,u.z,c.z),U6);return k6(h,p,this.shapeTransform,i)};$g.DefaultMinBounds=Object.freeze(new m(0,-Z.PI,-1));$g.DefaultMaxBounds=Object.freeze(new m(1,+Z.PI,1));var Hxt=5,zxt=new Array(Hxt),Kxt=new m,Jxt=new $,jxt=new X,qxt=new X,$xt=new X,Q6=new X,eIt=new m,tIt=new m,nIt=new m,fEe=new Array(8);for(let e=0;e<8;e++)fEe[e]=new m;function mEe(e,t,n){return Math.abs(ce.dot(e,t))<n}function iIt(e){let t=X.getColumn(e,0,eIt),n=X.getColumn(e,1,tIt),i=X.getColumn(e,2,nIt),o=Z.EPSILON4;return mEe(t,n,o)&&mEe(n,i,o)}function oIt(e,t){let n=fEe;m.fromElements(-.5,-.5,-.5,n[0]),m.fromElements(-.5,-.5,.5,n[1]),m.fromElements(-.5,.5,-.5,n[2]),m.fromElements(-.5,.5,.5,n[3]),m.fromElements(.5,-.5,-.5,n[4]),m.fromElements(.5,-.5,.5,n[5]),m.fromElements(.5,.5,-.5,n[6]),m.fromElements(.5,.5,.5,n[7]);for(let i=0;i<8;++i)X.multiplyByPoint(e,n[i],n[i]);return vn.fromPoints(n,t)}function k6(e,t,n,i){let o=e.x,r=t.x,s=e.y,a=t.y<s?t.y+Z.TWO_PI:t.y,c=e.z,d=t.z,u=a-s,h=s+u*.5,p=zxt,g=0;p[g++]=s,p[g++]=a,p[g++]=h,u>Z.PI&&(p[g++]=h-Z.PI_OVER_TWO,p[g++]=h+Z.PI_OVER_TWO);let f=Number.POSITIVE_INFINITY,b=Number.POSITIVE_INFINITY,x=Number.NEGATIVE_INFINITY,I=Number.NEGATIVE_INFINITY;for(let M=0;M<g;++M){let Q=p[M]-h,N=Math.cos(Q),k=Math.sin(Q),v=N*o,O=k*o,H=N*r,ee=k*r;f=Math.min(f,v,H),b=Math.min(b,O,ee),x=Math.max(x,v,H),I=Math.max(I,O,ee)}let _=x-f,E=I-b,S=d-c,R=(f+x)*.5,G=(b+I)*.5,B=(c+d)*.5,w=m.fromElements(R,G,B,Kxt),F=$.fromRotationZ(h,Jxt),P=m.fromElements(_,E,S,hEe),A=X.fromScale(P,$xt),T=X.fromRotation(F,qxt),L=X.fromTranslation(w,jxt),V=X.multiplyTransformation(T,X.multiplyTransformation(L,A,Q6),Q6),W=X.multiplyTransformation(n,V,Q6);return iIt(W)?vn.fromTransformation(W,i):oIt(W,i)}var qI=$g;var PKi=y(C(),1);function eb(){this.orientedBoundingBox=new vn,this.boundingSphere=new ue,this.boundTransform=new X,this.shapeTransform=new X,this._rectangle=new le,this._minimumHeight=eb.DefaultMinBounds.z,this._maximumHeight=eb.DefaultMaxBounds.z,this._ellipsoid=new ie,this._translation=new m,this._rotation=new $,this.shaderUniforms={ellipsoidRadiiUv:new m,eccentricitySquared:0,evoluteScale:new D,ellipsoidInverseRadiiSquaredUv:new m,ellipsoidRenderLongitudeMinMax:new D,ellipsoidShapeUvLongitudeMinMaxMid:new m,ellipsoidUvToShapeUvLongitude:new D,ellipsoidUvToShapeUvLatitude:new D,ellipsoidRenderLatitudeSinMinMax:new D,ellipsoidInverseHeightDifferenceUv:0,clipMinMaxHeight:new D},this.shaderDefines={ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE:void 0,ELLIPSOID_INTERSECTION_INDEX_LONGITUDE:void 0,ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX:void 0,ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN:void 0,ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX:void 0,ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN:void 0},this.shaderMaximumIntersectionsLength=0}var rIt=new m,sIt=new m,aIt=new m,cIt=new m,lIt=new m,dIt=new m,uIt=new m,mIt=new m,hIt=new $,pEe=new m,AEe=new m,fIt=new le;eb.prototype.update=function(e,t,n,i,o){let{DefaultMinBounds:r,DefaultMaxBounds:s}=eb;i=i??r,o=o??s;let a=Z.EPSILON10,c=Z.EPSILON3,d=Z.EPSILON10,u=Z.EPSILON10,h=Z.EPSILON3,p=X.getScale(e,mIt),g=m.clone(r,rIt);g.z=-m.minimumComponent(p);let f=m.clamp(t,g,s,sIt),b=m.clamp(n,g,s,aIt),x=m.clamp(i,g,s,cIt),I=m.clamp(o,g,s,lIt),_=m.maximumByComponent(f,x,dIt),E=m.minimumByComponent(b,I,uIt),S=m.add(p,m.fromElements(b.z,b.z,b.z,pEe),pEe),R=m.maximumComponent(S),G=m.add(p,m.fromElements(E.z,E.z,E.z,AEe),AEe);if(_.y>E.y||_.y===s.y||E.y===r.y||_.z>E.z||Z.equalsEpsilon(G,m.ZERO,void 0,a))return!1;this._rectangle=le.fromRadians(f.x,f.y,b.x,b.y),this._translation=X.getTranslation(e,this._translation),this._rotation=X.getRotation(e,this._rotation),this._ellipsoid=ie.fromCartesian3(p,this._ellipsoid),this._minimumHeight=f.z,this._maximumHeight=b.z;let B=le.fromRadians(_.x,_.y,E.x,E.y,fIt);this.orientedBoundingBox=Y6(B,_.z,E.z,this._ellipsoid,this._translation,this._rotation,this.orientedBoundingBox),this.shapeTransform=X.fromRotationTranslation($.setScale(this._rotation,S,hIt),this._translation,this.shapeTransform),this.boundTransform=X.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=ue.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let w=s.x-r.x,F=.5*w,P=E.x<_.x,A=E.x-_.x+P*w,T=A<=d,L=A>=F-d&&A<w-d,V=A>d&&A<F-d,W=T||L||V,M=b.x<f.x,Q=b.x-f.x+M*w,N=Q>F+d&&Q<w-d,k=Q>=F-d&&Q<=F+d,v=Q<F-d,O=N||k||v,H=E.y<-h,ee=E.y>=-h&&E.y<=+h,K=E.y>+h&&E.y<s.y-u,te=H||ee||K,q=_.y>r.y+u&&_.y<-h,pe=_.y>=-h&&_.y<=+h,ye=_.y>+h,he=q||pe||ye,xe=te||he,Te=b.y-f.y,Be=b.y<-h,Le=b.y>=-h&&b.y<=+h,De=b.y>+h&&b.y<s.y-u,Ue=Be||Le||De,je=f.y>r.y+u&&f.y<-h,it=f.y>=-h&&f.y<=+h,nn=f.y>+h,rn=Ue||(je||it||nn),{shaderUniforms:Jt,shaderDefines:Xt}=this;for(let _t in Xt)Xt.hasOwnProperty(_t)&&(Xt[_t]=void 0);Jt.ellipsoidRadiiUv=m.divideByScalar(S,R,Jt.ellipsoidRadiiUv);let{x:Li,z:bi}=Jt.ellipsoidRadiiUv,vt=bi/Li;Jt.eccentricitySquared=1-vt*vt,Jt.evoluteScale=D.fromElements((Li*Li-bi*bi)/Li,(bi*bi-Li*Li)/bi,Jt.evoluteScale),Jt.ellipsoidInverseRadiiSquaredUv=m.divideComponents(m.ONE,m.multiplyComponents(Jt.ellipsoidRadiiUv,Jt.ellipsoidRadiiUv,Jt.ellipsoidInverseRadiiSquaredUv),Jt.ellipsoidInverseRadiiSquaredUv);let Rt=0;Xt.ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX=Rt,Rt+=1,Xt.ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN=Rt,Rt+=1,Jt.clipMinMaxHeight=D.fromElements((_.z-b.z)/R,(E.z-b.z)/R,Jt.clipMinMaxHeight);let si=(b.z-f.z)/R;if(Jt.ellipsoidInverseHeightDifferenceUv=1/si,f.z===b.z&&(Jt.ellipsoidInverseHeightDifferenceUv=0),W&&(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE=!0,Xt.ELLIPSOID_INTERSECTION_INDEX_LONGITUDE=Rt,L?(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF=!0,Rt+=1):V?(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF=!0,Rt+=2):T&&(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO=!0,Rt+=2),Jt.ellipsoidRenderLongitudeMinMax=D.fromElements(_.x,E.x,Jt.ellipsoidRenderLongitudeMinMax)),O)if(Xt.ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE=!0,b.x<f.x&&(Xt.ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED=!0),Q<=d)Jt.ellipsoidUvToShapeUvLongitude=D.fromElements(0,1,Jt.ellipsoidUvToShapeUvLongitude);else{let Fo=w/Q,Uo=-(f.x-r.x)/Q;Jt.ellipsoidUvToShapeUvLongitude=D.fromElements(Fo,Uo,Jt.ellipsoidUvToShapeUvLongitude)}if(W){let _t=Z.equalsEpsilon(_.x,r.x,void 0,c),Fo=Z.equalsEpsilon(E.x,s.x,void 0,c);_t&&(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY=!0),Fo&&(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY=!0);let Uo=(f.x-r.x)/w,Va=(b.x-r.x)/w,Cr=(E.x-r.x)/w,wr=1-A/w,ve=(Cr+.5*wr)%1;Jt.ellipsoidShapeUvLongitudeMinMaxMid=m.fromElements(Uo,Va,ve,Jt.ellipsoidShapeUvLongitudeMinMaxMid)}if(xe&&(he&&(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN=!0,Xt.ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN=Rt,q?(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF=!0,Rt+=1):pe?(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF=!0,Rt+=1):ye&&(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF=!0,Rt+=2)),te&&(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX=!0,Xt.ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX=Rt,H?(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF=!0,Rt+=2):ee?(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF=!0,Rt+=1):K&&(Xt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF=!0,Rt+=1)),Jt.ellipsoidRenderLatitudeSinMinMax=D.fromElements(Math.sin(_.y),Math.sin(E.y),Jt.ellipsoidRenderLatitudeSinMinMax)),rn)if(Xt.ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE=!0,Te<u)Jt.ellipsoidUvToShapeUvLatitude=D.fromElements(0,1,Jt.ellipsoidUvToShapeUvLatitude);else{let Fo=(s.y-r.y)/Te,Uo=(r.y-f.y)/Te;Jt.ellipsoidUvToShapeUvLatitude=D.fromElements(Fo,Uo,Jt.ellipsoidUvToShapeUvLatitude)}return this.shaderMaximumIntersectionsLength=Rt,!0};var yEe=new le;eb.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=1/Math.pow(2,e),s=t*r,a=(t+1)*r,c=n*r,d=(n+1)*r,u=i*r,h=(i+1)*r,p=le.subsection(this._rectangle,s,c,a,d,yEe),g=Z.lerp(this._minimumHeight,this._maximumHeight,u),f=Z.lerp(this._minimumHeight,this._maximumHeight,h);return Y6(p,g,f,this._ellipsoid,this._translation,this._rotation,o)};var gEe=new m,bEe=new m,pIt=new m;eb.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=m.divideComponents(m.ONE,t,gEe),s=m.multiplyByScalar(r,o,gEe),a=m.multiplyByScalar(m.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,bEe),o,bEe),c=m.add(a,s,pIt),d=le.subsection(this._rectangle,a.x,a.y,c.x,c.y,yEe),u=Z.lerp(this._minimumHeight,this._maximumHeight,a.z),h=Z.lerp(this._minimumHeight,this._maximumHeight,c.z);return Y6(d,u,h,this._ellipsoid,this._translation,this._rotation,i)};function Y6(e,t,n,i,o,r,s){return s=vn.fromRectangle(e,t,n,i,s),s.center=m.add(s.center,o,s.center),s.halfAxes=$.multiply(s.halfAxes,r,s.halfAxes),s}eb.DefaultMinBounds=Object.freeze(new m(-Z.PI,-Z.PI_OVER_TWO,-ie.WGS84.minimumRadius));eb.DefaultMaxBounds=Object.freeze(new m(Z.PI,Z.PI_OVER_TWO,10*ie.WGS84.maximumRadius));var $I=eb;var Vu={BOX:"BOX",ELLIPSOID:"ELLIPSOID",CYLINDER:"CYLINDER"};Vu.getMinBounds=function(e){switch(e){case Vu.BOX:return jI.DefaultMinBounds;case Vu.ELLIPSOID:return $I.DefaultMinBounds;case Vu.CYLINDER:return qI.DefaultMinBounds}};Vu.getMaxBounds=function(e){switch(e){case Vu.BOX:return jI.DefaultMaxBounds;case Vu.ELLIPSOID:return $I.DefaultMaxBounds;case Vu.CYLINDER:return qI.DefaultMaxBounds}};Vu.getShapeConstructor=function(e){switch(e){case Vu.BOX:return jI;case Vu.ELLIPSOID:return $I;case Vu.CYLINDER:return qI}};var qa=Object.freeze(Vu);var kJi=y(C(),1);var OKi=y(C(),1);function Af(e){this._comparator=e.comparator,this._maximumLength=e.maximumLength,this._array=l(e.maximumLength)?new Array(e.maximumLength):[],this._length=0}Object.defineProperties(Af.prototype,{length:{get:function(){return this._length}},maximumLength:{get:function(){return this._maximumLength},set:function(e){if(l(e)){for(;this._length>e;)this.removeMinimum();this._array.length=e}this._maximumLength=e}},internalArray:{get:function(){return this._array}},comparator:{get:function(){return this._comparator}}});Af.prototype.clone=function(){let e=this._maximumLength,t=this._comparator,n=this._array,i=this._length,o=new Af({comparator:t,maximumLength:e});o._length=i;for(let r=0;r<i;r++)o._array[r]=n[r];return o};Af.prototype.reset=function(){this._length=0;let e=this._maximumLength;if(l(e))for(let t=0;t<e;t++)this._array[t]=void 0;else this._array.length=0};Af.prototype.resort=function(){let e=this._length;for(let t=0;t<e;t++)CEe(this,t)};Af.prototype.insert=function(e){let t,n=this._maximumLength;if(l(n)){if(n===0)return;if(this._length===n){let o=this._array[0];if(this._comparator(e,o)<=0)return e;t=this.removeMinimum()}}let i=this._length;return this._array[i]=e,this._length++,CEe(this,i),t};Af.prototype.removeMinimum=function(){let e=this._length;if(e===0)return;this._length--;let t=this._array[0];return e>=2&&(this._array[0]=this._array[e-1],xEe(this,0)),this._array[e-1]=void 0,t};Af.prototype.removeMaximum=function(){let e=this._length;if(e===0)return;this._length--;let t;if(e<=2)t=this._array[e-1];else{let n=O6(this,1,2)?1:2;t=this._array[n],this._array[n]=this._array[e-1],e>=4&&xEe(this,n)}return this._array[e-1]=void 0,t};Af.prototype.getMinimum=function(){if(this._length!==0)return this._array[0]};Af.prototype.getMaximum=function(){let e=this._length;if(e!==0)return e<=2?this._array[e-1]:this._array[O6(this,1,2)?1:2]};function SY(e,t,n){let i=e._array,o=i[t];i[t]=i[n],i[n]=o}function Vv(e,t,n){return e._comparator(e._array[t],e._array[n])<0}function O6(e,t,n){return e._comparator(e._array[t],e._array[n])>0}function CEe(e,t){if(t===0)return;let n=Math.floor(Z.log2(t+1))%2===0,i=Math.floor((t-1)/2),o=Vv(e,t,i);for(o!==n&&(SY(e,t,i),t=i);t>=3;){let r=Math.floor((t-3)/4);if(Vv(e,t,r)!==o)break;SY(e,t,r),t=r}}function xEe(e,t){let n=e._length,i=Math.floor(Z.log2(t+1))%2===0,o;for(;(o=2*t+1)<n;){let r=o,s=o+1;if(s<n){Vv(e,s,r)===i&&(r=s);let a=2*o+1,c=Math.max(Math.min(n-a,4),0);for(let d=0;d<c;d++){let u=a+d;Vv(e,u,r)===i&&(r=u)}}if(Vv(e,r,t)===i&&(SY(e,r,t),r!==o&&r!==s)){let a=Math.floor((r-1)/2);O6(e,r,a)===i&&SY(e,r,a)}t=r}}var e_=Af;var zKi=y(C(),1),H6=Object.freeze({UNLOADED:0,RECEIVING:1,PROCESSING:2,LOADED:3,FAILED:4,UNAVAILABLE:5});function Gv(e,t){this.spatialNode=e,this.keyframe=t,this.state=H6.UNLOADED,this.content=void 0,this.megatextureIndex=-1,this.priority=-Number.MAX_VALUE,this.highPriorityFrameNumber=-1}Gv.prototype.unload=function(){this.content=this.content&&this.content.destroy(),this.spatialNode=void 0,this.state=H6.UNLOADED,this.megatextureIndex=-1,this.priority=-Number.MAX_VALUE,this.highPriorityFrameNumber=-1};Gv.priorityComparator=function(e,t){return e.priority-t.priority};Gv.searchComparator=function(e,t){return e.keyframe-t.keyframe};Gv.LoadState=H6;var Go=Gv;var hJi=y(C(),1);function Ay(e,t,n,i,o){if(o=Math.min(o??128*1024*1024,536870912),i===Ut.UNSIGNED_SHORT&&(i=Ut.FLOAT32),i===Ut.FLOAT32&&!e.floatingPointTexture)throw new de("Floating point texture not supported");let s=AIt(i),a=gIt(n,e.webgl2),c=Ut.getSizeInBytes(i),d=bIt(o,n,c),u=Math.ceil(Math.sqrt(t.x)),h=Math.ceil(t.z/u),p=u*t.x,g=h*t.y,f=Math.floor(d/p),b=Math.floor(d/g);if(f===0||b===0)throw new de("Tileset is too large to fit into megatexture");this.channelCount=n,this.componentType=i,this.textureMemoryByteLength=c*n*d**2,this.voxelCountPerTile=m.clone(t,new m),this.maximumTileCount=f*b,this.regionCountPerMegatexture=new D(f,b),this.voxelCountPerRegion=new D(p,g),this.sliceCountPerRegion=new D(u,h),this.voxelSizeUv=new D(1/d,1/d),this.sliceSizeUv=new D(t.x/d,t.y/d),this.regionSizeUv=new D(p/d,g/d),this.texture=new Wt({context:e,pixelFormat:a,pixelDatatype:s,flipY:!1,width:d,height:d,sampler:new sn({wrapS:Ln.CLAMP_TO_EDGE,wrapT:Ln.CLAMP_TO_EDGE,minificationFilter:en.LINEAR,magnificationFilter:pi.LINEAR})});let x=Ut.toComponentDatatype(i);this.tileVoxelDataTemp=J.createTypedArray(x,p*g*n),this.nodes=new Array(this.maximumTileCount);for(let I=0;I<this.maximumTileCount;I++)this.nodes[I]=new yIt(I);for(let I=0;I<this.maximumTileCount;I++){let _=this.nodes[I];_.previousNode=I>0?this.nodes[I-1]:void 0,_.nextNode=I<this.maximumTileCount-1?this.nodes[I+1]:void 0}this.occupiedList=void 0,this.emptyList=this.nodes[0],this.occupiedCount=0}function AIt(e){if(e===Ut.FLOAT32||e===Ut.FLOAT64)return Ye.FLOAT;if(e===Ut.UINT8)return Ye.UNSIGNED_BYTE}function gIt(e,t){if(e===1)return t?tt.RED:tt.LUMINANCE;if(e===2)return t?tt.RG:tt.LUMINANCE_ALPHA;if(e===3)return tt.RGB;if(e===4)return tt.RGBA}function bIt(e,t,n){let i=Math.floor(e/(t*n));return Math.min(Kt.maximumTextureSize,Z.previousPowerOfTwo(Math.floor(Math.sqrt(i))))}function yIt(e){this.index=e,this.nextNode=void 0,this.previousNode=void 0}Ay.prototype.add=function(e){if(this.isFull())throw new Ae("Trying to add when there are no empty spots");let t=this.emptyList;this.emptyList=this.emptyList.nextNode,l(this.emptyList)&&(this.emptyList.previousNode=void 0),t.nextNode=this.occupiedList,l(t.nextNode)&&(t.nextNode.previousNode=t),this.occupiedList=t;let n=t.index;return this.writeDataToTexture(n,e),this.occupiedCount++,n};Ay.prototype.remove=function(e){if(e<0||e>=this.maximumTileCount)throw new Ae("Megatexture index out of bounds");let t=this.nodes[e];l(t.previousNode)&&(t.previousNode.nextNode=t.nextNode),l(t.nextNode)&&(t.nextNode.previousNode=t.previousNode),t.nextNode=this.emptyList,l(t.nextNode)&&(t.nextNode.previousNode=t),t.previousNode=void 0,this.emptyList=t,this.occupiedCount--};Ay.prototype.isFull=function(){return this.emptyList===void 0};Ay.getApproximateTextureMemoryByteLength=function(e,t,n,i){i===Ut.UNSIGNED_SHORT&&(i=Ut.FLOAT32);let o=Ut.getSizeInBytes(i),r=e*t.x*t.y*t.z,s=Math.ceil(Math.sqrt(t.x)),a=Math.ceil(t.z/s),c=s*t.x,d=a*t.y,u=Z.previousPowerOfTwo(Math.floor(Math.sqrt(r)));for(;;){let p=Math.floor(u/c),g=Math.floor(u/d);if(p*g>=e)break;u*=2}return u*u*n*o};Ay.prototype.writeDataToTexture=function(e,t){let n=t.constructor===Uint16Array?new Float32Array(t):t,{tileVoxelDataTemp:i,voxelCountPerTile:o,sliceCountPerRegion:r,voxelCountPerRegion:s,channelCount:a,regionCountPerMegatexture:c}=this;for(let g=0;g<o.z;g++){let f=g%r.x*o.x,b=Math.floor(g/r.x)*o.y;for(let x=0;x<o.y;x++){let I=CIt(o,x,g),_=(b+x)*s.x+f;for(let E=0;E<o.x;E++){let S=I+E,R=_+E;for(let G=0;G<a;G++)i[R*a+G]=n[S*a+G]}}}let d=e%c.x*s.x,u=Math.floor(e/c.x)*s.y,p={source:{arrayBufferView:i,width:s.x,height:s.y},xOffset:d,yOffset:u};this.texture.copyFrom(p)};function CIt(e,t,n){let i=e.y*e.x,o=n,r=t;return o*i+r*e.x}Ay.prototype.isDestroyed=function(){return!1};Ay.prototype.destroy=function(){return this.texture=this.texture&&this.texture.destroy(),me(this)};var yL=Ay;var _Ji=y(C(),1);function km(e,t,n,i,o,r,s){this.children=void 0,this.parent=o,this.level=e,this.x=t,this.y=n,this.z=i,this.dimensions=m.clone(s),this.keyframeNodes=[],this.renderableKeyframeNodes=[],this.renderableKeyframeNodeLerp=0,this.renderableKeyframeNodePrevious=void 0,this.renderableKeyframeNodeNext=void 0,this.orientedBoundingBox=new vn,this.approximateVoxelSize=0,this.screenSpaceError=0,this.visitedFrameNumber=-1,this.computeBoundingVolumes(r)}var xIt=new m;km.prototype.computeBoundingVolumes=function(e){this.orientedBoundingBox=e.computeOrientedBoundingBoxForTile(this.level,this.x,this.y,this.z,this.orientedBoundingBox);let t=$.getScale(this.orientedBoundingBox.halfAxes,xIt),n=2*m.maximumComponent(t);this.approximateVoxelSize=n/m.minimumComponent(this.dimensions)};km.prototype.constructChildNodes=function(e){let{level:t,x:n,y:i,z:o}=this,r=n*2,s=i*2,a=o*2,c=s+1,d=r+1,u=a+1,h=t+1,p=[[h,r,s,a],[h,d,s,a],[h,r,c,a],[h,d,c,a],[h,r,s,u],[h,d,s,u],[h,r,c,u],[h,d,c,u]];this.children=p.map(([g,f,b,x])=>new km(g,f,b,x,this,e,this.dimensions))};km.prototype.visibility=function(e,t){let n=this.orientedBoundingBox;return e.cullingVolume.computeVisibilityWithPlaneMask(n,t)};km.prototype.computeScreenSpaceError=function(e,t){let n=this.orientedBoundingBox,i=Math.sqrt(n.distanceSquaredTo(e));i=Math.max(i,Z.EPSILON7);let o=this.approximateVoxelSize,r=t*(o/i);this.screenSpaceError=r};var IEe={keyframe:0};function Zv(e,t){return IEe.keyframe=e,Yo(t,IEe,Go.searchComparator)}km.prototype.computeSurroundingRenderableKeyframeNodes=function(e){let t=this,n=t.level,i=Math.floor(e),o=Math.ceil(e),r,s,a=+Number.MAX_VALUE,c=+Number.MAX_VALUE;for(;l(t);){let{renderableKeyframeNodes:h}=t;if(h.length>=1){let p=IIt(i,h),g=h[p],f=o===i||i<g.keyframe?p:Math.min(p+1,h.length-1),b=h[f],x=i-g.keyframe,I=_Ee(n-t.level,x);I<a&&(a=I,r=g);let _=b.keyframe-o,E=_Ee(n-t.level,_);if(E<c&&(c=E,s=b),x===0&&_===0)break}t=t.parent}if(this.renderableKeyframeNodePrevious=r,this.renderableKeyframeNodeNext=s,!l(r)||!l(s))return;let d=r.keyframe,u=s.keyframe;this.renderableKeyframeNodeLerp=d===u?0:Z.clamp((e-d)/(u-d),0,1)};function IIt(e,t){let n=Zv(e,t);return n<0?Z.clamp(~n-1,0,t.length-1):n}function _Ee(e,t){let n=Math.exp(e*4),i=t>=0?1:-200;return e*n+t*i}km.prototype.isVisited=function(e){return this.visitedFrameNumber===e};km.prototype.createKeyframeNode=function(e){let t=Zv(e,this.keyframeNodes);if(t<0){t=~t;let n=new Go(this,e);this.keyframeNodes.splice(t,0,n)}};km.prototype.destroyKeyframeNode=function(e,t){let n=e.keyframe,i=Zv(n,this.keyframeNodes);if(i<0)throw new Ae("Keyframe node does not exist.");if(this.keyframeNodes.splice(i,1),e.megatextureIndex!==-1){for(let r=0;r<t.length;r++)t[r].remove(e.megatextureIndex);let o=Zv(n,this.renderableKeyframeNodes);if(o<0)throw new Ae("Renderable keyframe node does not exist.");this.renderableKeyframeNodes.splice(o,1)}e.unload()};km.prototype.addKeyframeNodeToMegatextures=function(e,t){if(e.megatextureIndex!==-1||e.content.metadata.length!==t.length)throw new Ae("Keyframe node cannot be added to megatexture");let{metadata:n}=e.content;for(let r=0;r<t.length;r++){let s=t[r];e.megatextureIndex=s.add(n[r])}let i=this.renderableKeyframeNodes,o=Zv(e.keyframe,i);if(o>=0)throw new Ae("Keyframe already renderable");o=~o,i.splice(o,0,e)};km.prototype.isRenderable=function(e){let t=this.renderableKeyframeNodePrevious,n=this.renderableKeyframeNodeNext,i=this.level;return l(t)&&l(n)&&(t.spatialNode.level===i||n.spatialNode.level===i)&&this.visitedFrameNumber===e};var Bv=km;function gy(e,t,n,i){let{provider:o,dimensions:r,paddingBefore:s,paddingAfter:a}=e,{types:c,componentTypes:d,metadataOrder:u}=o,h=m.add(r,s,new m);if(m.add(h,a,h),u===Um.Y_UP){let E=h.y;h.y=h.z,h.z=E}!l(i)&&l(o.maximumTileCount)&&(i=WIt(o.maximumTileCount,h,c,d)),this._primitive=e,this.textureMemoryByteLength=0,this.megatextures=new Array(c.length);for(let E=0;E<c.length;E++){let S=c[E],R=bt.getComponentCount(S),G=d[E];this.megatextures[E]=new yL(t,h,R,G,i),this.textureMemoryByteLength+=this.megatextures[E].textureMemoryByteLength}let p=this.megatextures[0].maximumTileCount;this._simultaneousRequestCount=0,this._debugPrint=!1,this._calculateStatistics=this._primitive._calculateStatistics??!1,this._frameNumber=0;let g=e._shape;this.rootNode=new Bv(0,0,0,0,void 0,g,r),this._priorityQueue=new e_({maximumLength:p,comparator:Go.priorityComparator}),this._highPriorityKeyframeNodes=new Array(p),this._highPriorityKeyframeNodeCount=0,this._keyframeNodesInMegatexture=new Array(p),this._keyframeCount=n,this._sampleCount=void 0,this._keyframeLocation=0,this._binaryTreeKeyframeWeighting=new Array(n),this._initialTilesLoaded=!1;let f=this._binaryTreeKeyframeWeighting;f[0]=0,f[n-1]=0,z6(f,1,n-2,0);let b=9,x=2048,I=Math.floor(x/b),_=Math.ceil(p/I);this.internalNodeTexture=new Wt({context:t,pixelFormat:tt.RGBA,pixelDatatype:Ye.UNSIGNED_BYTE,flipY:!1,width:x,height:_,sampler:new sn({minificationFilter:en.NEAREST,magnificationFilter:pi.NEAREST})}),this.internalNodeTilesPerRow=I,this.internalNodeTexelSizeUv=new D(1/x,1/_),this.leafNodeTexture=void 0,this.leafNodeTilesPerRow=void 0,this.leafNodeTexelSizeUv=new D}gy.prototype.findKeyframeNode=function(e){return this._keyframeNodesInMegatexture.find(function(t){return t.megatextureIndex===e})};function z6(e,t,n,i){if(t>n)return;let o=Math.floor((t+n)/2);e[o]=i,z6(e,t,o-1,i+1),z6(e,o+1,n,i+1)}gy.simultaneousRequestCountMaximum=50;gy.prototype.update=function(e,t,n,i){let o=this._primitive,r=e.context,s=this.megatextures[0].maximumTileCount,a=this._keyframeCount,c=o._levelBlendFactor,d=c>0,u=a>1,h=(d?2:1)*(u?2:1);this._sampleCount=h;let p=h>=2;if(p&&!l(this.leafNodeTexture)){let E=Math.floor(512),S=Math.ceil(s/E);this.leafNodeTexture=new Wt({context:r,pixelFormat:tt.RGBA,pixelDatatype:Ye.UNSIGNED_BYTE,flipY:!1,width:1024,height:S,sampler:new sn({minificationFilter:en.NEAREST,magnificationFilter:pi.NEAREST})}),this.leafNodeTexelSizeUv=D.fromElements(1/1024,1/S,this.leafNodeTexelSizeUv),this.leafNodeTilesPerRow=E}else!p&&l(this.leafNodeTexture)&&(this.leafNodeTexture=this.leafNodeTexture.destroy());if(this._keyframeLocation=Z.clamp(t,0,a-1),n&&EEe(this,this.rootNode),i)return;this._frameNumber=e.frameNumber;let g=Fi();TIt(this,e),SIt(this,e);let f=Fi();ZIt(this,h,c);let b=Fi(),x=o.loadProgress.numberOfListeners>0||o.allTilesLoaded.numberOfListeners>0||o.initialTilesLoaded.numberOfListeners>0;if(this._debugPrint||this._calculateStatistics||x){let I=f-g,_=b-f,E=b-g;GIt(this,e,I,_,E)}};gy.prototype.isRenderable=function(e){return e.isRenderable(this._frameNumber)};gy.prototype.isDestroyed=function(){return!1};gy.prototype.destroy=function(){let e=this.megatextures,t=e.length;for(let n=0;n<t;n++)e[n]=e[n]&&e[n].destroy();return this.textureMemoryByteLength=0,this.internalNodeTexture=this.internalNodeTexture&&this.internalNodeTexture.destroy(),this.leafNodeTexture=this.leafNodeTexture&&this.leafNodeTexture.destroy(),me(this)};function EEe(e,t){if(t.computeBoundingVolumes(e._primitive._shape),l(t.children))for(let n=0;n<8;n++){let i=t.children[n];EEe(e,i)}}function _It(e,t){if(e._simultaneousRequestCount>=gy.simultaneousRequestCountMaximum)return;let i=e._primitive.provider,{keyframe:o,spatialNode:r}=t;if(l(i.availableLevels)&&r.level>=i.availableLevels)return;function s(u){e._simultaneousRequestCount--,t.content=u,t.state=l(u)?Go.LoadState.PROCESSING:Go.LoadState.UNAVAILABLE}function a(u){e._simultaneousRequestCount--,t.state=Go.LoadState.FAILED,e._primitive.tileFailed.raiseEvent()}let c={tileLevel:r.level,tileX:r.x,tileY:r.y,tileZ:r.z,keyframe:o},d=i.requestData(c);l(d)&&(e._simultaneousRequestCount++,t.state=Go.LoadState.RECEIVING,d.then(s).catch(a))}function EIt(e){return e/(1+e)}function TIt(e,t){let n=e._frameNumber,i=e._priorityQueue;i.reset(),TEe(e.rootNode,Xs.MASK_INDETERMINATE,e,t);let o=e._highPriorityKeyframeNodes,r=0,s;for(;i.length>0;)s=i.removeMaximum(),s.highPriorityFrameNumber=n,o[r]=s,r++;e._highPriorityKeyframeNodeCount=r}function SIt(e,t){let n=e.megatextures[0],i=n.occupiedCount,o=e._keyframeNodesInMegatexture;o.length=i,o.sort(LIt);let r=e._highPriorityKeyframeNodes,s=e._highPriorityKeyframeNodeCount,a=0,c=0;for(let d=0;d<s;d++){let u=r[d];if(!(u.state===Go.LoadState.LOADED||u.spatialNode===void 0)&&(u.state===Go.LoadState.UNLOADED&&_It(e,u),u.state===Go.LoadState.PROCESSING)){let{content:h}=u;if(h.update(e._primitive,t),!h.ready)continue;if(!RIt(h.metadata,e)){u.content=void 0,u.state=Go.LoadState.FAILED,e._primitive.tileFailed.raiseEvent();continue}let p=0;if(n.isFull()){p=i-1-a,a++;let g=o[p];e._primitive.tileUnload.raiseEvent(),g.spatialNode.destroyKeyframeNode(g,e.megatextures)}else p=i+c,c++;u.spatialNode.addKeyframeNodeToMegatextures(u,e.megatextures),u.state=Go.LoadState.LOADED,o[p]=u,e._primitive.tileLoad.raiseEvent()}}}function LIt(e,t){return e.highPriorityFrameNumber===t.highPriorityFrameNumber?t.priority-e.priority:t.highPriorityFrameNumber-e.highPriorityFrameNumber}function RIt(e,t){let n=t._primitive.provider.types.length;if(!Array.isArray(e)||e.length!==n)return!1;let{megatextures:i}=t;for(let o=0;o<n;o++){let{voxelCountPerTile:r,channelCount:s}=i[o],{x:a,y:c,z:d}=r,u=a*c*d,h=e[o],p=u*s;if(h.length!==p)return!1}return!0}function TEe(e,t,n,i){let{camera:o,context:r,pixelRatio:s,frameNumber:a}=i,{positionWC:c,frustum:d}=o,h=r.drawingBufferHeight/s/d.sseDenominator;if(e.computeScreenSpaceError(c,h),t=e.visibility(i,t),t===Xs.MASK_OUTSIDE)return;e.visitedFrameNumber=a;let p=n._primitive,g=p._shape,f=p.screenSpaceError,b=n._priorityQueue,x=n._keyframeCount,I=Z.clamp(Math.floor(n._keyframeLocation),0,x-2),_=I+1;if(x===1)e.createKeyframeNode(0);else if(e.keyframeNodes.length!==x)for(let B=0;B<x;B++)e.createKeyframeNode(B);let{screenSpaceError:E,keyframeNodes:S}=e,R=EIt(E),G=!1;for(let B=0;B<S.length;B++){let w=S[B];w.priority=10*R+VIt(I,w.keyframe,_,n),w.state!==Go.LoadState.UNAVAILABLE&&w.state!==Go.LoadState.FAILED&&w.priority!==-Number.MAX_VALUE&&b.insert(w),w.state===Go.LoadState.LOADED&&(G=!0)}if(E<f||!G){e.children=void 0;return}l(e.children)||e.constructChildNodes(g);for(let B=0;B<8;B++){let w=e.children[B];TEe(w,t,n,i)}}function VIt(e,t,n,i){let o=Math.min(Math.abs(t-e),Math.abs(t-n)),r=Math.max(e,i._keyframeCount-n-1,1),s=Math.pow(1-o/r,4),a=Math.exp(-i._binaryTreeKeyframeWeighting[t]);return Z.lerp(a,s,.15+.85*s)}function GIt(e,t,n,i,o){let r=e._keyframeCount,s=e.rootNode,a=Object.keys(Go.LoadState).length,c=new Array(a),d=new Array(a),u=0;for(let G=0;G<a;G++){let B=new Array(r).fill(0);c[G]=B,d[G]=0}function h(G){let B=G.keyframeNodes;for(let w=0;w<B.length;w++){let F=B[w],P=F.keyframe,A=F.state;c[A][P]+=1,d[A]+=1,u++}if(l(G.children))for(let w=0;w<8;w++){let F=G.children[w];h(F)}}h(s),e._primitive.statistics.numberOfTilesWithContentReady=d[Go.LoadState.LOADED],e._primitive.statistics.visited=u;let p=d[Go.LoadState.RECEIVING],g=d[Go.LoadState.PROCESSING],f=p!==e._primitive.statistics.numberOfPendingRequests||g!==e._primitive.statistics.numberOfTilesProcessing;if(f&&t.afterRender.push(function(){return e._primitive.loadProgress.raiseEvent(p,g),!0}),e._primitive.statistics.numberOfPendingRequests=p,e._primitive.statistics.numberOfTilesProcessing=g,f&&(p===0&&g===0)&&(t.afterRender.push(function(){return e._primitive.allTilesLoaded.raiseEvent(),!0}),e._initialTilesLoaded||(e._initialTilesLoaded=!0,t.afterRender.push(function(){return e._primitive.initialTilesLoaded.raiseEvent(),!0}))),!e._debugPrint)return;let x=`KEYFRAMES: ${c[Go.LoadState.LOADED]}`,I=`UNLOADED: ${d[Go.LoadState.UNLOADED]} | RECEIVING: ${d[Go.LoadState.RECEIVING]} | PROCESSING: ${d[Go.LoadState.PROCESSING]} | LOADED: ${d[Go.LoadState.LOADED]} | FAILED: ${d[Go.LoadState.FAILED]} | UNAVAILABLE: ${d[Go.LoadState.UNAVAILABLE]} | TOTAL: ${u}`,_=Math.round(n*100)/100,E=Math.round(i*100)/100,S=Math.round(o*100)/100,R=`LOAD: ${_} | OCT: ${E} | ALL: ${S}`;console.log(`${x} || ${I} || ${R}`)}var LY={INTERNAL:0,LEAF:1,PACKED_LEAF_FROM_PARENT:2};function ZIt(e,t,n){let i=e._primitive._screenSpaceError,o=e._keyframeLocation,r=e._frameNumber,s=t>=2,a=0,c=0,d=[],u=[];function h(g,f,b,x,I){let _=!1;if(l(g.children))for(let E=0;E<8;E++){let S=g.children[E];S.computeSurroundingRenderableKeyframeNodes(o),S.isRenderable(r)&&(_=!0)}if(_){d[I]=LY.INTERNAL<<16|f,d[b]=x,a++,x=f,I=x*9+1;for(let E=0;E<8;E++){let S=g.children[E];f=a,b=f*9+0,h(S,f,b,x,I+E)}}else{if(e._primitive.tileVisible.raiseEvent(),s){let E=c*5,S=g.renderableKeyframeNodePrevious,R=g.level-S.spatialNode.level,G=S.spatialNode.parent,B=l(G)?G.renderableKeyframeNodePrevious:S,w=BIt(g,i,n),F=R,P=1,A=S.megatextureIndex,T=B.megatextureIndex;u[E+0]=w,u[E+1]=F,u[E+2]=P,u[E+3]=A,u[E+4]=T,d[I]=LY.LEAF<<16|c}else{let E=g.renderableKeyframeNodePrevious,R=g.level-E.spatialNode.level===0?LY.LEAF:LY.PACKED_LEAF_FROM_PARENT;d[I]=R<<16|E.megatextureIndex}c++}}let p=e.rootNode;p.computeSurroundingRenderableKeyframeNodes(o),p.isRenderable(r)&&h(p,0,0,0,0),wIt(d,9,e.internalNodeTilesPerRow,e.internalNodeTexture),s&&XIt(u,2,e.leafNodeTilesPerRow,e.leafNodeTexture)}function BIt(e,t,n){if(e.parent===void 0)return 0;let i=e.screenSpaceError,o=e.parent.screenSpaceError,s=((t-i)/(o-i)+n-1)/n;return Z.clamp(s,0,1)}function wIt(e,t,n,i){let o=tt.componentsLength(i.pixelFormat),r=Math.ceil(e.length/t),s=Math.max(1,t*Math.min(r,n)),a=Math.max(1,Math.ceil(r/n)),c=new Uint8Array(s*a*o);for(let h=0;h<e.length;h++){let p=e[h],g=h*o;for(let f=0;f<o;f++)c[g+f]=p>>>f*8&255}let u={source:{arrayBufferView:c,width:s,height:a},xOffset:0,yOffset:0};i.copyFrom(u)}function XIt(e,t,n,i){let o=tt.componentsLength(i.pixelFormat),r=5,s=Math.ceil(e.length/r),a=Math.max(1,t*Math.min(s,n)),c=Math.max(1,Math.ceil(s/n)),d=new Uint8Array(a*c*o);for(let p=0;p<s;p++){let g=e[p*r+0],f=e[p*r+1],b=e[p*r+2],x=e[p*r+3],I=e[p*r+4],_=Z.clamp(Math.floor(65536*g),0,65535);d[p*8+0]=_>>>0&255,d[p*8+1]=_>>>8&255,d[p*8+2]=f&255,d[p*8+3]=b&255,d[p*8+4]=x>>>0&255,d[p*8+5]=x>>>8&255,d[p*8+6]=I>>>0&255,d[p*8+7]=I>>>8&255}let h={source:{arrayBufferView:d,width:a,height:c},xOffset:0,yOffset:0};i.copyFrom(h)}function WIt(e,t,n,i){let o=0,r=n.length;for(let s=0;s<r;s++){let a=n[s],c=i[s],d=bt.getComponentCount(a);o+=yL.getApproximateTextureMemoryByteLength(e,t,d,c)}return o}var wv=gy;function Pp(e){e=e??Y.EMPTY_OBJECT,this._ready=!1,this._provider=e.provider??Pp.DefaultProvider,this._traversal=void 0,this._statistics=new Nh,this._calculateStatistics=e.calculateStatistics??!1,this._shape=void 0,this._shapeVisible=!1,this._dimensions=new m,this._inputDimensions=new m,this._paddingBefore=new m,this._paddingAfter=new m,this._minBounds=new m,this._minBoundsOld=new m,this._maxBounds=new m,this._maxBoundsOld=new m,this._exaggeratedMinBounds=new m,this._exaggeratedMinBoundsOld=new m,this._exaggeratedMaxBounds=new m,this._exaggeratedMaxBoundsOld=new m,this._minClippingBounds=new m,this._minClippingBoundsOld=new m,this._maxClippingBounds=new m,this._maxClippingBoundsOld=new m,this._clippingPlanes=void 0,this._clippingPlanesState=0,this._clippingPlanesEnabled=!1,this._modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this._exaggeratedModelMatrix=X.clone(this._modelMatrix),this._compoundModelMatrix=new X,this._compoundModelMatrixOld=new X,this._customShader=e.customShader??Pp.DefaultCustomShader,this._customShaderCompilationEvent=new Ce,this._shaderDirty=!0,this._drawCommand=void 0,this._drawCommandPick=void 0,this._pickId=void 0,this._clock=e.clock,this._transformPositionWorldToUv=new X,this._transformDirectionWorldToUv=new $,this._transformPositionUvToWorld=new X,this._transformDirectionWorldToLocal=new $,this._nearestSampling=!1,this._levelBlendFactor=0,this._stepSizeMultiplier=1,this._depthTest=!0,this._useLogDepth=void 0,this._screenSpaceError=4,this._debugPolylines=new Wh,this._debugDraw=!1,this._disableRender=!1,this._disableUpdate=!1,this._uniforms={octreeInternalNodeTexture:void 0,octreeInternalNodeTilesPerRow:0,octreeInternalNodeTexelSizeUv:new D,octreeLeafNodeTexture:void 0,octreeLeafNodeTilesPerRow:0,octreeLeafNodeTexelSizeUv:new D,megatextureTextures:[],megatextureSliceDimensions:new D,megatextureTileDimensions:new D,megatextureVoxelSizeUv:new D,megatextureSliceSizeUv:new D,megatextureTileSizeUv:new D,dimensions:new m,inputDimensions:new m,paddingBefore:new m,paddingAfter:new m,transformPositionViewToUv:new X,transformPositionUvToView:new X,transformDirectionViewToLocal:new $,cameraPositionUv:new m,cameraDirectionUv:new m,ndcSpaceAxisAlignedBoundingBox:new ce,clippingPlanesTexture:void 0,clippingPlanesMatrix:new X,stepSize:0,pickColor:new U},this._shapeDefinesOld={},this._uniformMap={};let t=this._uniforms,n=this._uniformMap;for(let o in t)if(t.hasOwnProperty(o)){let r=`u_${o}`;n[r]=function(){return t[o]}}this.tileLoad=new Ce,this.tileVisible=new Ce,this.tileFailed=new Ce,this.tileUnload=new Ce,this.loadProgress=new Ce,this.allTilesLoaded=new Ce,this.initialTilesLoaded=new Ce;let i=this._provider;FIt(this,i)}function FIt(e,t){let{shape:n,minBounds:i=qa.getMinBounds(n),maxBounds:o=qa.getMaxBounds(n)}=t;e.minBounds=i,e.maxBounds=o,e.minClippingBounds=i.clone(),e.maxClippingBounds=o.clone(),e._exaggeratedMinBounds=m.clone(e._minBounds,e._exaggeratedMinBounds),e._exaggeratedMaxBounds=m.clone(e._maxBounds,e._exaggeratedMaxBounds),e._exaggeratedModelMatrix=X.clone(e._modelMatrix,e._exaggeratedModelMatrix),LEe(e,t);let r=qa.getShapeConstructor(n);e._shape=new r,e._shapeVisible=REe(e,e._shape,t)}Object.defineProperties(Pp.prototype,{ready:{get:function(){return this._ready}},provider:{get:function(){return this._provider}},boundingSphere:{get:function(){return this._shape.boundingSphere}},orientedBoundingBox:{get:function(){return this._shape.orientedBoundingBox}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=X.clone(e,this._modelMatrix)}},shape:{get:function(){return this._provider.shape}},dimensions:{get:function(){return this._dimensions}},inputDimensions:{get:function(){return this._inputDimensions}},paddingBefore:{get:function(){return this._paddingBefore}},paddingAfter:{get:function(){return this._paddingAfter}},minimumValues:{get:function(){return this._provider.minimumValues}},maximumValues:{get:function(){return this._provider.maximumValues}},show:{get:function(){return!this._disableRender},set:function(e){this._disableRender=!e}},disableUpdate:{get:function(){return this._disableUpdate},set:function(e){this._disableUpdate=e}},debugDraw:{get:function(){return this._debugDraw},set:function(e){this._debugDraw=e}},depthTest:{get:function(){return this._depthTest},set:function(e){this._depthTest!==e&&(this._depthTest=e,this._shaderDirty=!0)}},nearestSampling:{get:function(){return this._nearestSampling},set:function(e){this._nearestSampling!==e&&(this._nearestSampling=e,this._shaderDirty=!0)}},levelBlendFactor:{get:function(){return this._levelBlendFactor},set:function(e){this._levelBlendFactor=Z.clamp(e,0,1)}},screenSpaceError:{get:function(){return this._screenSpaceError},set:function(e){this._screenSpaceError=e}},stepSize:{get:function(){return this._stepSizeMultiplier},set:function(e){this._stepSizeMultiplier=e}},minBounds:{get:function(){return this._minBounds},set:function(e){this._minBounds=m.clone(e,this._minBounds)}},maxBounds:{get:function(){return this._maxBounds},set:function(e){this._maxBounds=m.clone(e,this._maxBounds)}},minClippingBounds:{get:function(){return this._minClippingBounds},set:function(e){this._minClippingBounds=m.clone(e,this._minClippingBounds)}},maxClippingBounds:{get:function(){return this._maxClippingBounds},set:function(e){this._maxClippingBounds=m.clone(e,this._maxClippingBounds)}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Ws.setOwner(e,this,"_clippingPlanes")}},customShader:{get:function(){return this._customShader},set:function(e){if(this._customShader!==e){let t=this._uniformMap,i=this._customShader.uniformMap;for(let o in i)i.hasOwnProperty(o)&&delete t[o];l(e)?this._customShader=e:this._customShader=Pp.DefaultCustomShader,this._shaderDirty=!0}}},customShaderCompilationEvent:{get:function(){return this._customShaderCompilationEvent}},statistics:{get:function(){return this._statistics}}});var PIt=new ce,MIt=new ce,vIt=new X,NIt=new X,DIt=new X,QIt=X.fromRotationTranslation($.fromUniformScale(.5,new $),new m(.5,.5,.5),new X),UIt=X.fromRotationTranslation($.fromUniformScale(2,new $),new m(-1,-1,-1),new X);Pp.prototype.update=function(e){let t=this._provider;this._customShader.update(e);let n=e.context;if(!this._ready){KIt(this,t,n),e.afterRender.push(()=>(this._ready=!0,!0));return}HIt(this,e);let i=LEe(this,t),o=this._shape;if(i&&(this._shapeVisible=REe(this,o,t),jIt(this,o)&&(this._shaderDirty=!0)),!this._shapeVisible)return;let r=qIt(t.timeIntervalCollection,this._clock),s=this._traversal,a=s._sampleCount;if(s.update(e,r,i,this._disableUpdate),a!==s._sampleCount&&(this._shaderDirty=!0),!s.isRenderable(s.rootNode)||(this._debugDraw&&s_t(this,e),this._disableRender))return;this._useLogDepth!==e.useLogDepth&&(this._useLogDepth=e.useLogDepth,this._shaderDirty=!0),$It(this,e)&&(this._shaderDirty=!0);let d=s.leafNodeTexture,u=this._uniforms;l(d)&&(u.octreeLeafNodeTexture=s.leafNodeTexture,u.octreeLeafNodeTexelSizeUv=D.clone(s.leafNodeTexelSizeUv,u.octreeLeafNodeTexelSizeUv),u.octreeLeafNodeTilesPerRow=s.leafNodeTilesPerRow),this._shaderDirty&&(Tv(this,n),this._shaderDirty=!1);let h=n.uniformState.viewProjection,p=o.orientedBoundingBox,g=n_t(p,h,MIt);if(g.x===1||g.y===1||g.z===-1||g.w===-1)return;u.ndcSpaceAxisAlignedBoundingBox=ce.clone(g,u.ndcSpaceAxisAlignedBoundingBox);let b=n.uniformState.inverseView;u.transformPositionViewToUv=X.multiplyTransformation(this._transformPositionWorldToUv,b,u.transformPositionViewToUv);let x=n.uniformState.view;u.transformPositionUvToView=X.multiplyTransformation(x,this._transformPositionUvToWorld,u.transformPositionUvToView);let I=n.uniformState.inverseViewRotation;u.transformDirectionViewToLocal=$.multiply(this._transformDirectionWorldToLocal,I,u.transformDirectionViewToLocal),u.cameraPositionUv=X.multiplyByPoint(this._transformPositionWorldToUv,e.camera.positionWC,u.cameraPositionUv),u.cameraDirectionUv=$.multiplyByVector(this._transformDirectionWorldToUv,e.camera.directionWC,u.cameraDirectionUv),u.cameraDirectionUv=m.normalize(u.cameraDirectionUv,u.cameraDirectionUv),u.stepSize=this._stepSizeMultiplier;let _=e.passes.pick?this._drawCommandPick:e.passes.pickVoxel?this._drawCommandPickVoxel:this._drawCommand;_.boundingVolume=o.boundingSphere,e.commandList.push(_)};var kIt=new m,K6=new m,YIt=new ge,OIt=new m;function HIt(e,t){if(e._exaggeratedMinBounds=m.clone(e._minBounds,e._exaggeratedMinBounds),e._exaggeratedMaxBounds=m.clone(e._maxBounds,e._exaggeratedMaxBounds),e.shape===qa.ELLIPSOID){let n=t.verticalExaggerationRelativeHeight,i=t.verticalExaggeration;e._exaggeratedMinBounds.z=(e._minBounds.z-n)*i+n,e._exaggeratedMaxBounds.z=(e._maxBounds.z-n)*i+n}else{let n=m.fromElements(1,1,t.verticalExaggeration,kIt);e._exaggeratedModelMatrix=X.multiplyByScale(e._modelMatrix,n,e._exaggeratedModelMatrix),e._exaggeratedModelMatrix=X.multiplyByTranslation(e._exaggeratedModelMatrix,zIt(e,t),e._exaggeratedModelMatrix)}}function zIt(e,t){let{shapeTransform:n=X.IDENTITY,globalTransform:i=X.IDENTITY}=e._provider,o=X.getTranslation(n,K6),r=X.multiplyByPoint(e._modelMatrix,o,K6),s=X.multiplyByPoint(i,r,K6),c=ie.WGS84.cartesianToCartographic(s,YIt),d=0;l(c)&&(d=c.height);let u=Mr.getHeight(d,t.verticalExaggeration,t.verticalExaggerationRelativeHeight);return m.fromElements(0,0,(u-d)/t.verticalExaggeration,OIt)}function KIt(e,t,n){let i=e._uniforms;e._pickId=n.createPickId({primitive:e}),i.pickColor=U.clone(e._pickId.color,i.pickColor);let{shaderDefines:o,shaderUniforms:r}=e._shape;e._shapeDefinesOld=ke(o,!0);let s=e._uniformMap;for(let c in r)if(r.hasOwnProperty(c)){let d=`u_${c}`;s[d]=function(){return r[c]}}if(e._dimensions=m.clone(t.dimensions,e._dimensions),i.dimensions=m.clone(e._dimensions,i.dimensions),e._paddingBefore=m.clone(t.paddingBefore??m.ZERO,e._paddingBefore),i.paddingBefore=m.clone(e._paddingBefore,i.paddingBefore),e._paddingAfter=m.clone(t.paddingAfter??m.ZERO,e._paddingAfter),i.paddingAfter=m.clone(e._paddingAfter,i.paddingAfter),e._inputDimensions=m.add(e._dimensions,e._paddingBefore,e._inputDimensions),e._inputDimensions=m.add(e._inputDimensions,e._paddingAfter,e._inputDimensions),t.metadataOrder===Um.Y_UP){let c=e._inputDimensions.y;e._inputDimensions.y=e._inputDimensions.z,e._inputDimensions.z=c}i.inputDimensions=m.clone(e._inputDimensions,i.inputDimensions);let a=t.keyframeCount??1;e._traversal=new wv(e,n,a),e.statistics.texturesByteLength=e._traversal.textureMemoryByteLength,JIt(e._traversal,i)}function LEe(e,t){let n=t.shapeTransform??X.IDENTITY,i=t.globalTransform??X.IDENTITY;return X.multiplyTransformation(i,e._exaggeratedModelMatrix,e._compoundModelMatrix),X.multiplyTransformation(e._compoundModelMatrix,n,e._compoundModelMatrix),t_(e,"_compoundModelMatrix","_compoundModelMatrixOld")+t_(e,"_minBounds","_minBoundsOld")+t_(e,"_maxBounds","_maxBoundsOld")+t_(e,"_exaggeratedMinBounds","_exaggeratedMinBoundsOld")+t_(e,"_exaggeratedMaxBounds","_exaggeratedMaxBoundsOld")+t_(e,"_minClippingBounds","_minClippingBoundsOld")+t_(e,"_maxClippingBounds","_maxClippingBoundsOld")>0}function t_(e,t,n){let i=e[t],o=e[n],r=!i.equals(o);return r&&i.clone(o),r?1:0}function REe(e,t,n){if(!t.update(e._compoundModelMatrix,e._exaggeratedMinBounds,e._exaggeratedMaxBounds,e.minClippingBounds,e.maxClippingBounds))return!1;let o=t.shapeTransform,r=X.inverse(o,vIt);return e._transformPositionWorldToUv=X.multiplyTransformation(QIt,r,e._transformPositionWorldToUv),e._transformDirectionWorldToUv=X.getMatrix3(e._transformPositionWorldToUv,e._transformDirectionWorldToUv),e._transformPositionUvToWorld=X.multiplyTransformation(o,UIt,e._transformPositionUvToWorld),e._transformDirectionWorldToLocal=X.getMatrix3(r,e._transformDirectionWorldToLocal),!0}function JIt(e,t){t.octreeInternalNodeTexture=e.internalNodeTexture,t.octreeInternalNodeTexelSizeUv=D.clone(e.internalNodeTexelSizeUv,t.octreeInternalNodeTexelSizeUv),t.octreeInternalNodeTilesPerRow=e.internalNodeTilesPerRow;let n=e.megatextures,i=n[0],o=n.length;t.megatextureTextures=new Array(o);for(let r=0;r<o;r++)t.megatextureTextures[r]=n[r].texture;t.megatextureSliceDimensions=D.clone(i.sliceCountPerRegion,t.megatextureSliceDimensions),t.megatextureTileDimensions=D.clone(i.regionCountPerMegatexture,t.megatextureTileDimensions),t.megatextureVoxelSizeUv=D.clone(i.voxelSizeUv,t.megatextureVoxelSizeUv),t.megatextureSliceSizeUv=D.clone(i.sliceSizeUv,t.megatextureSliceSizeUv),t.megatextureTileSizeUv=D.clone(i.regionSizeUv,t.megatextureTileSizeUv)}function jIt(e,t){let n=t.shaderDefines,i=Object.keys(n).some(o=>n[o]!==e._shapeDefinesOld[o]);return i&&(e._shapeDefinesOld=ke(n,!0)),i}function qIt(e,t){if(!l(e)||!l(t))return 0;let n=t.currentTime,i,o=e.indexOf(n);o>=0?i=e.get(o):(o=~o,o===e.length?(o=e.length-1,i=e.get(o),n=i.stop):(i=e.get(o),n=i.start));let r=j.secondsDifference(i.stop,i.start),a=j.secondsDifference(n,i.start)/r;return o+a}function $It(e,t){let n=e.clippingPlanes;if(!l(n))return!1;n.update(t);let{clippingPlanesState:i,enabled:o}=n;if(o){let r=e._uniforms;r.clippingPlanesTexture=n.texture,r.clippingPlanesMatrix=X.transpose(X.multiplyTransformation(X.inverse(n.modelMatrix,r.clippingPlanesMatrix),e._transformPositionUvToWorld,r.clippingPlanesMatrix),r.clippingPlanesMatrix)}return e._clippingPlanesState===i&&e._clippingPlanesEnabled===o?!1:(e._clippingPlanesState=i,e._clippingPlanesEnabled=o,!0)}Pp.prototype.isDestroyed=function(){return!1};Pp.prototype.destroy=function(){let e=this._drawCommand;l(e)&&(e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy());let t=this._drawCommandPick;return l(t)&&(t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy()),this._pickId=this._pickId&&this._pickId.destroy(),this._traversal=this._traversal&&this._traversal.destroy(),this.statistics.texturesByteLength=0,this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),me(this)};var SEe=new Array(new ce(-1,-1,-1,1),new ce(1,-1,-1,1),new ce(-1,1,-1,1),new ce(1,1,-1,1),new ce(-1,-1,1,1),new ce(1,-1,1,1),new ce(-1,1,1,1),new ce(1,1,1,1)),e_t=new Array(1,2,4,0,3,5,0,3,6,1,2,7,0,5,6,1,4,7,2,4,7,3,5,6),t_t=new Array(new ce,new ce,new ce,new ce,new ce,new ce,new ce,new ce);function n_t(e,t,n){let i=X.fromRotationTranslation(e.halfAxes,e.center,NIt),o=X.multiply(t,i,DIt),r=+Number.MAX_VALUE,s=-Number.MAX_VALUE,a=+Number.MAX_VALUE,c=-Number.MAX_VALUE,d,u=t_t,h=SEe.length;for(d=0;d<h;d++)X.multiplyByVector(o,SEe[d],u[d]);for(d=0;d<h;d++){let p=u[d];if(p.z>=-p.w){let g=p.x/p.w,f=p.y/p.w;r=Math.min(r,g),s=Math.max(s,g),a=Math.min(a,f),c=Math.max(c,f)}else for(let g=0;g<3;g++){let f=e_t[d*3+g],b=u[f];if(b.z>=-b.w){let x=p.z+p.w,I=b.z+b.w,_=x/(x-I),E=ce.lerp(p,b,_,PIt),S=E.x/E.w,R=E.y/E.w;r=Math.min(r,S),s=Math.max(s,S),a=Math.min(a,R),c=Math.max(c,R)}}}return r=Z.clamp(r,-1,1),a=Z.clamp(a,-1,1),s=Z.clamp(s,-1,1),c=Z.clamp(c,-1,1),n=ce.fromElements(r,a,s,c,n),n}var J6=3e7,i_t=new m(J6,0,0),o_t=new m(0,J6,0),r_t=new m(0,0,J6);function s_t(e,t){let n=e._traversal,i=e._debugPolylines;i.removeAll();function o(c,d,u,h){i.add({positions:[c,d],width:h,material:so.fromType("Color",{color:u})})}function r(c,d,u){let h=c.computeCorners();o(h[0],h[1],d,u),o(h[2],h[3],d,u),o(h[4],h[5],d,u),o(h[6],h[7],d,u),o(h[0],h[2],d,u),o(h[4],h[6],d,u),o(h[1],h[3],d,u),o(h[5],h[7],d,u),o(h[0],h[4],d,u),o(h[2],h[6],d,u),o(h[1],h[5],d,u),o(h[3],h[7],d,u)}function s(c){if(!n.isRenderable(c))return;let d=c.level,h=Math.max(1,5/Math.pow(2,d)),g=[U.RED,U.LIME,U.BLUE][d%3];if(r(c.orientedBoundingBox,g,h),l(c.children))for(let f=0;f<8;f++)s(c.children[f])}r(e._shape.orientedBoundingBox,U.WHITE,5),s(n.rootNode);let a=10;o(m.ZERO,i_t,U.RED,a),o(m.ZERO,o_t,U.LIME,a),o(m.ZERO,r_t,U.BLUE,a),i.update(t)}Pp.DefaultCustomShader=new KI({fragmentShaderText:`void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material) +{ + material.diffuse = vec3(1.0); + material.alpha = 1.0; +}`});function VEe(){this.ready=!0,this.shape=qa.BOX,this.dimensions=new m(1,1,1),this.names=["data"],this.types=[bt.SCALAR],this.componentTypes=[Ut.FLOAT32],this.maximumTileCount=1}VEe.prototype.requestData=function(e){if((l(e)?e.tileLevel??0:0)>=1)return;let n=new JI({metadata:[new Float32Array(1)]});return Promise.resolve(n)};Pp.DefaultProvider=new VEe;var by=Pp;var _4i=y(C(),1);function a_t(e,t,n,i){if(!l(e)||l(t)&&e.id!==t)return;let r=(e.classes||{})[n];if(!l(r))return;let a=(r.properties||{})[i];if(l(a))return a}var Xv=a_t;var T4i=y(C(),1);function c_t(e,t,n,i,o){this.schemaId=e,this.className=t,this.propertyName=n,this.classProperty=i,this.metadataProperty=o}var Wv=c_t;var R4i=y(C(),1);function l_t(e,t,n){if(!l(e))return;let i=e.propertyTextures;for(let o of i)if(o.class.id===t){let a=o.properties[n];if(l(a))return a}}var Fv=l_t;var VY=function(e){return function(){e.frameState.afterRender.push(function(){e.requestRender()})}};function Ei(e){e=e??Y.EMPTY_OBJECT;let t=e.canvas,n=e.creditContainer,i=e.creditViewport,o=e.contextOptions instanceof aP;if(o)this._context=e.contextOptions.createSceneContext(t);else{let d=ke(e.contextOptions);this._context=new xI(t,d)}let r=this._context,s=l(n);s||(n=document.createElement("div"),n.style.position="absolute",n.style.bottom="0",n.style["text-shadow"]="0 0 2px #000000",n.style.color="#ffffff",n.style["font-size"]="10px",n.style["padding-right"]="5px",t.parentNode.appendChild(n)),l(i)||(i=t.parentNode),this._id=qn(),this._jobScheduler=new hM,this._frameState=new uM(r,new nM(n,"\u2022",i),this._jobScheduler),this._frameState.scene3DOnly=e.scene3DOnly??!1,this._removeCreditContainer=!s,this._creditContainer=n,this._canvas=t,this._computeEngine=new nP(r),this._ellipsoid=e.ellipsoid??ie.default,this._globe=void 0,this._globeTranslucencyState=new mM,this._primitives=new Wl({countReferences:o}),this._groundPrimitives=new Wl({countReferences:o}),this._globeHeight=void 0,this._globeHeightDirty=!0,this._cameraUnderground=!1,this._removeUpdateHeightCallback=void 0,this._logDepthBuffer=Ei.defaultLogDepthBuffer&&r.fragmentDepth,this._logDepthBufferDirty=!0,this._tweens=new kI,this._shaderFrameCount=0,this._sunPostProcess=void 0,this._computeCommandList=[],this._overlayCommandList=[],this._useOIT=e.orderIndependentTranslucency??!0,this._executeOITFunction=void 0,this._depthPlane=new cM(e.depthPlaneEllipsoidOffset),this._clearColorCommand=new xi({color:new U,stencil:0,owner:this}),this._depthClearCommand=new xi({depth:1,owner:this}),this._stencilClearCommand=new xi({stencil:0}),this._classificationStencilClearCommand=new xi({stencil:0,renderState:Qe.fromCache({stencilMask:jt.CLASSIFICATION_MASK})}),this._depthOnlyRenderStateCache={},this._transitioner=new qM(this),this._preUpdate=new Ce,this._postUpdate=new Ce,this._renderError=new Ce,this._preRender=new Ce,this._postRender=new Ce,this._minimumDisableDepthTestDistance=0,this._debugInspector=new av,this._msaaSamples=e.msaaSamples??4,this.rethrowRenderErrors=!1,this.completeMorphOnUserInput=!0,this.morphStart=new Ce,this.morphComplete=new Ce,this.skyBox=void 0,this.skyAtmosphere=void 0,this.sun=void 0,this.sunBloom=!0,this._sunBloom=void 0,this.moon=void 0,this.backgroundColor=U.clone(U.BLACK),this._mode=re.SCENE3D,this._mapProjection=l(e.mapProjection)?e.mapProjection:new Di(this._ellipsoid),this.morphTime=1,this.farToNearRatio=1e3,this.logarithmicDepthFarToNearRatio=1e9,this.nearToFarDistance2D=175e4,this.verticalExaggeration=1,this.verticalExaggerationRelativeHeight=0,this.debugCommandFilter=void 0,this.debugShowCommands=!1,this.debugShowFrustums=!1,this.debugShowFramesPerSecond=!1,this.debugShowDepthFrustum=1,this.debugShowFrustumPlanes=!1,this._debugShowFrustumPlanes=!1,this._debugFrustumPlanes=void 0,this.useDepthPicking=!0,this.pickTranslucentDepth=!1,this.cameraEventWaitTime=500,this.atmosphere=new JC,this.fog=new dM,this.fog.enabled=ie.WGS84.equals(this._ellipsoid),ie.WGS84.equals(this._ellipsoid)||(xo.DEFAULT_VIEW_RECTANGLE=le.fromDegrees(-45,-45,45,45)),this._shadowMapCamera=new xo(this),this.shadowMap=new Hg({context:r,lightCamera:this._shadowMapCamera,enabled:e.shadows??!1}),this.invertClassification=!1,this.invertClassificationColor=U.clone(U.WHITE),this._actualInvertClassificationColor=U.clone(this._invertClassificationColor),this._invertClassification=new uL,this.focalLength=void 0,this.eyeSeparation=void 0,this.postProcessStages=new KM,this._brdfLutGenerator=new JP,this._performanceDisplay=void 0,this._debugVolume=void 0,this._screenSpaceCameraController=new nv(this),this._cameraUnderground=!1,this._mapMode2D=e.mapMode2D??_d.INFINITE_SCROLL,this._environmentState={skyBoxCommand:void 0,skyAtmosphereCommand:void 0,sunDrawCommand:void 0,sunComputeCommand:void 0,moonCommand:void 0,isSunVisible:!1,isMoonVisible:!1,isReadyForAtmosphere:!1,isSkyAtmosphereVisible:!1,clearGlobeDepth:!1,useDepthPlane:!1,renderTranslucentDepthForPick:!1,originalFramebuffer:void 0,useGlobeDepthFramebuffer:!1,useOIT:!1,useInvertClassification:!1,usePostProcess:!1,usePostProcessSelected:!1,useWebVR:!1},this._useWebVR=!1,this._cameraVR=void 0,this._aspectRatioVR=void 0,this.requestRenderMode=e.requestRenderMode??!1,this._renderRequested=!0,this.maximumRenderTimeChange=e.maximumRenderTimeChange??0,this._lastRenderTime=void 0,this._frameRateMonitor=void 0,this._removeRequestListenerCallback=Sc.requestCompletedEvent.addEventListener(VY(this)),this._removeTaskProcessorListenerCallback=hi.taskCompletedEvent.addEventListener(VY(this)),this._removeGlobeCallbacks=[],this._removeTerrainProviderReadyListener=void 0;let a=new Ke(0,0,r.drawingBufferWidth,r.drawingBufferHeight),c=new xo(this);this._logDepthBuffer&&(c.frustum.near=.1,c.frustum.far=1e10),this.preloadFlightCamera=new xo(this),this.preloadFlightCullingVolume=void 0,this._picking=new LM(this),this._defaultView=new FI(this,c,a),this._view=this._defaultView,this._hdr=void 0,this._hdrDirty=void 0,this.highDynamicRange=!1,this.gamma=2.2,this.sphericalHarmonicCoefficients=void 0,this.specularEnvironmentMaps=void 0,this._specularEnvironmentCubeMap=void 0,this.light=new Ng,WEe(this,0,j.now()),this.updateFrameState(),this.initializeFrame()}Ei.defaultLogDepthBuffer=!0;function d_t(e,t){for(let i=0;i<e._removeGlobeCallbacks.length;++i)e._removeGlobeCallbacks[i]();e._removeGlobeCallbacks.length=0;let n=[];l(t)&&(n.push(t.imageryLayersUpdatedEvent.addEventListener(VY(e))),n.push(t.terrainProviderChanged.addEventListener(VY(e)))),e._removeGlobeCallbacks=n}Object.defineProperties(Ei.prototype,{canvas:{get:function(){return this._canvas}},drawingBufferHeight:{get:function(){return this._context.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._context.drawingBufferWidth}},maximumAliasedLineWidth:{get:function(){return Kt.maximumAliasedLineWidth}},maximumCubeMapSize:{get:function(){return Kt.maximumCubeMapSize}},pickPositionSupported:{get:function(){return this._context.depthTexture}},sampleHeightSupported:{get:function(){return this._context.depthTexture}},clampToHeightSupported:{get:function(){return this._context.depthTexture}},invertClassificationSupported:{get:function(){return this._context.depthTexture}},specularEnvironmentMapsSupported:{get:function(){return ph.isSupported(this._context)}},ellipsoid:{get:function(){return this._ellipsoid}},globe:{get:function(){return this._globe},set:function(e){this._globe=this._globe&&this._globe.destroy(),this._globe=e,d_t(this,e)}},primitives:{get:function(){return this._primitives}},groundPrimitives:{get:function(){return this._groundPrimitives}},camera:{get:function(){return this._view.camera},set:function(e){this._view.camera=e}},view:{get:function(){return this._view},set:function(e){this._view=e}},defaultView:{get:function(){return this._defaultView}},picking:{get:function(){return this._picking}},screenSpaceCameraController:{get:function(){return this._screenSpaceCameraController}},mapProjection:{get:function(){return this._mapProjection}},jobScheduler:{get:function(){return this._jobScheduler}},frameState:{get:function(){return this._frameState}},environmentState:{get:function(){return this._environmentState}},tweens:{get:function(){return this._tweens}},imageryLayers:{get:function(){if(l(this.globe))return this.globe.imageryLayers}},terrainProvider:{get:function(){if(l(this.globe))return this.globe.terrainProvider},set:function(e){this._removeTerrainProviderReadyListener=this._removeTerrainProviderReadyListener&&this._removeTerrainProviderReadyListener(),l(this.globe)&&(this.globe.terrainProvider=e)}},terrainProviderChanged:{get:function(){if(l(this.globe))return this.globe.terrainProviderChanged}},preUpdate:{get:function(){return this._preUpdate}},postUpdate:{get:function(){return this._postUpdate}},renderError:{get:function(){return this._renderError}},preRender:{get:function(){return this._preRender}},postRender:{get:function(){return this._postRender}},lastRenderTime:{get:function(){return this._lastRenderTime}},context:{get:function(){return this._context}},debugFrustumStatistics:{get:function(){return this._view.debugFrustumStatistics}},scene3DOnly:{get:function(){return this._frameState.scene3DOnly}},orderIndependentTranslucency:{get:function(){return this._useOIT}},id:{get:function(){return this._id}},mode:{get:function(){return this._mode},set:function(e){e===re.SCENE2D?this.morphTo2D(0):e===re.SCENE3D?this.morphTo3D(0):e===re.COLUMBUS_VIEW&&this.morphToColumbusView(0),this._mode=e}},frustumCommandsList:{get:function(){return this._view.frustumCommandsList}},numberOfFrustums:{get:function(){return this._view.frustumCommandsList.length}},useWebVR:{get:function(){return this._useWebVR},set:function(e){this._useWebVR=e,this._useWebVR?(this._frameState.creditDisplay.container.style.visibility="hidden",this._cameraVR=new xo(this),l(this._deviceOrientationCameraController)||(this._deviceOrientationCameraController=new lM(this)),this._aspectRatioVR=this.camera.frustum.aspectRatio):(this._frameState.creditDisplay.container.style.visibility="visible",this._cameraVR=void 0,this._deviceOrientationCameraController=this._deviceOrientationCameraController&&!this._deviceOrientationCameraController.isDestroyed()&&this._deviceOrientationCameraController.destroy(),this.camera.frustum.aspectRatio=this._aspectRatioVR,this.camera.frustum.xOffset=0)}},mapMode2D:{get:function(){return this._mapMode2D}},splitPosition:{get:function(){return this._frameState.splitPosition},set:function(e){this._frameState.splitPosition=e}},minimumDisableDepthTestDistance:{get:function(){return this._minimumDisableDepthTestDistance},set:function(e){this._minimumDisableDepthTestDistance=e}},logarithmicDepthBuffer:{get:function(){return this._logDepthBuffer},set:function(e){e=this._context.fragmentDepth&&e,this._logDepthBuffer!==e&&(this._logDepthBuffer=e,this._logDepthBufferDirty=!0)}},gamma:{get:function(){return this._context.uniformState.gamma},set:function(e){this._context.uniformState.gamma=e}},highDynamicRange:{get:function(){return this._hdr},set:function(e){let t=this._context,n=e&&t.depthTexture&&(t.colorBufferFloat||t.colorBufferHalfFloat);this._hdrDirty=n!==this._hdr,this._hdr=n}},highDynamicRangeSupported:{get:function(){let e=this._context;return e.depthTexture&&(e.colorBufferFloat||e.colorBufferHalfFloat)}},cameraUnderground:{get:function(){return this._cameraUnderground}},msaaSamples:{get:function(){return this._msaaSamples},set:function(e){e=Math.min(e,Kt.maximumSamples),this._msaaSamples=e}},msaaSupported:{get:function(){return this._context.msaa}},pixelRatio:{get:function(){return this._frameState.pixelRatio},set:function(e){this._frameState.pixelRatio=e}},opaqueFrustumNearOffset:{get:function(){return .9999}},globeHeight:{get:function(){return this._globeHeight}}});Ei.prototype.getCompressedTextureFormatSupported=function(e){let t=this.context;return(e==="WEBGL_compressed_texture_s3tc"||e==="s3tc")&&t.s3tc||(e==="WEBGL_compressed_texture_pvrtc"||e==="pvrtc")&&t.pvrtc||(e==="WEBGL_compressed_texture_etc"||e==="etc")&&t.etc||(e==="WEBGL_compressed_texture_etc1"||e==="etc1")&&t.etc1||(e==="WEBGL_compressed_texture_astc"||e==="astc")&&t.astc||(e==="EXT_texture_compression_bptc"||e==="bc7")&&t.bc7};function u_t(e,t){let n=e.pickedMetadataInfo,i=t.pickedMetadataInfo;return n?.schemaId!==i?.schemaId||n?.className!==i?.className||n?.propertyName!==i?.propertyName}function GEe(e,t,n){let i=e._frameState,o=e._context,r=e._view.oit,{lightShadowMaps:s,lightShadowsEnabled:a}=i.shadowState,c=t.derivedCommands;l(t.pickId)&&(c.picking=Vp.createPickDerivedCommand(e,t,o,c.picking)),i.pickingMetadata&&t.pickMetadataAllowed&&(t.pickedMetadataInfo=i.pickedMetadataInfo,l(t.pickedMetadataInfo)&&(c.pickingMetadata=Vp.createPickMetadataDerivedCommand(e,t,o,c.pickingMetadata))),t.pickOnly||(c.depth=Vp.createDepthOnlyDerivedCommand(e,t,o,c.depth)),c.originalCommand=t,e._hdr&&(c.hdr=Vp.createHdrCommand(t,o,c.hdr),t=c.hdr.command,c=t.derivedCommands),a&&t.receiveShadows&&(c.shadows=Hg.createReceiveDerivedCommand(s,t,n,o,c.shadows)),t.pass===Ge.TRANSLUCENT&&l(r)&&r.isSupported()&&(a&&t.receiveShadows?(c.oit=l(c.oit)?c.oit:{},c.oit.shadows=r.createDerivedCommands(c.shadows.receiveCommand,o,c.oit.shadows)):c.oit=r.createDerivedCommands(t,o,c.oit))}Ei.prototype.updateDerivedCommands=function(e){let{derivedCommands:t}=e;if(!l(t))return;let n=this._frameState,{shadowState:i,useLogDepth:o}=this._frameState,r=this._context,s=!1,a=i.lastDirtyTime;e.lastDirtyTime!==a&&(e.lastDirtyTime=a,e.dirty=!0,s=!0);let c=this._hdr,d=l(t.logDepth),u=l(t.hdr),h=l(t.originalCommand),p=o&&!d,g=c&&!u,f=(!o||!c)&&!h,b=n.pickingMetadata&&u_t(e,n);if(e.dirty=e.dirty||p||g||f||b,!e.dirty)return;e.dirty=!1;let{shadowsEnabled:x,shadowMaps:I}=i;x&&e.castShadows&&(t.shadows=Hg.createCastDerivedCommand(I,e,s,r,t.shadows)),(d||p)&&(t.logDepth=Vp.createLogDepthCommand(e,r,t.logDepth),GEe(this,t.logDepth.command,s)),(h||f)&&GEe(this,e,s)};var m_t=new vm({pass:zo.RENDER}),j6=new vm({pass:zo.PRELOAD}),q6=new vm({pass:zo.PRELOAD_FLIGHT}),h_t=new vm({pass:zo.REQUEST_RENDER_MODE_DEFER_CHECK}),ZEe=new ue,$6;function f_t(e){if(!(e._mode!==re.SCENE3D||!e.globe?.show||e._cameraUnderground||e._globeTranslucencyState.translucent))return ZEe.radius=e.ellipsoid.minimumRadius+e.frameState.minimumTerrainHeight,$6=zP.fromBoundingSphere(ZEe,e.camera.positionWC,$6),$6}Ei.prototype.clearPasses=function(e){e.render=!1,e.pick=!1,e.pickVoxel=!1,e.depth=!1,e.postProcess=!1,e.offscreen=!1};function WEe(e,t,n){let i=e._frameState;i.frameNumber=t,i.time=j.clone(n,i.time)}Ei.prototype.updateFrameState=function(){let e=this.camera,t=this._frameState;t.commandList.length=0,t.shadowMaps.length=0,t.brdfLutGenerator=this._brdfLutGenerator,t.environmentMap=this.skyBox&&this.skyBox._cubeMap,t.mode=this._mode,t.morphTime=this.morphTime,t.mapProjection=this.mapProjection,t.camera=e,t.cullingVolume=e.frustum.computeCullingVolume(e.positionWC,e.directionWC,e.upWC),t.occluder=f_t(this),t.minimumTerrainHeight=0,t.minimumDisableDepthTestDistance=this._minimumDisableDepthTestDistance,t.invertClassification=this.invertClassification,t.useLogDepth=this._logDepthBuffer&&!(this.camera.frustum instanceof gn||this.camera.frustum instanceof qr),t.light=this.light,t.cameraUnderground=this._cameraUnderground,t.globeTranslucencyState=this._globeTranslucencyState;let{globe:n}=this;l(n)&&n._terrainExaggerationChanged&&(this.verticalExaggeration=n._terrainExaggeration,this.verticalExaggerationRelativeHeight=n._terrainExaggerationRelativeHeight,n._terrainExaggerationChanged=!1),t.verticalExaggeration=this.verticalExaggeration,t.verticalExaggerationRelativeHeight=this.verticalExaggerationRelativeHeight,l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.ready?(t.specularEnvironmentMaps=this._specularEnvironmentCubeMap.texture,t.specularEnvironmentMapsMaximumLOD=this._specularEnvironmentCubeMap.maximumMipmapLevel):(t.specularEnvironmentMaps=void 0,t.specularEnvironmentMapsMaximumLOD=void 0),t.sphericalHarmonicCoefficients=this.sphericalHarmonicCoefficients,this._actualInvertClassificationColor=U.clone(this.invertClassificationColor,this._actualInvertClassificationColor),uL.isTranslucencySupported(this._context)||(this._actualInvertClassificationColor.alpha=1),t.invertClassificationColor=this._actualInvertClassificationColor,l(this.globe)?t.maximumScreenSpaceError=this.globe.maximumScreenSpaceError:t.maximumScreenSpaceError=2,this.clearPasses(t.passes),t.tilesetPassState=void 0};Ei.prototype.isVisible=function(e,t,n){if(!l(t))return!1;let{boundingVolume:i}=t;return!l(i)||!t.cull?!0:e.computeVisibility(i)===on.OUTSIDE?!1:!l(n)||!t.occlude||!i.isOccluded(n)};var RY=new X(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);RY=X.inverseTransformation(RY,RY);function p_t(e,t,n,i){let o=t._frameState,r=o.context,s=e.boundingVolume;l(t._debugVolume)&&t._debugVolume.destroy();let a=m.clone(s.center);if(o.mode!==re.SCENE3D){a=X.multiplyByPoint(RY,a,a);let f=o.mapProjection,b=f.unproject(a);a=f.ellipsoid.cartographicToCartesian(b)}let c,d,{radius:u}=s;l(u)?(c=xa.createGeometry(new xa({radii:new m(u,u,u),vertexFormat:yn.FLAT_VERTEX_FORMAT})),d=X.fromTranslation(a)):(c=sc.createGeometry(sc.fromDimensions({dimensions:new m(2,2,2),vertexFormat:yn.FLAT_VERTEX_FORMAT})),d=X.fromRotationTranslation(s.halfAxes,a,new X)),t._debugVolume=new Nn({geometryInstances:new wt({geometry:Yn.toWireframe(c),modelMatrix:d,attributes:{color:new tn(1,0,0,1)}}),appearance:new yn({flat:!0,translucent:!1}),asynchronous:!1});let h=o.commandList,p=o.commandList=[];t._debugVolume.update(o),e=p[0],o.useLogDepth&&(e=Vp.createLogDepthCommand(e,r).command);let g;l(i)&&(g=n.framebuffer,n.framebuffer=i),e.execute(r,n),l(g)&&(n.framebuffer=g),o.commandList=h}function gf(e,t,n,i){let o=t._frameState,r=t._context;if(l(t.debugCommandFilter)&&!t.debugCommandFilter(e))return;if(e instanceof xi){e.execute(r,n);return}e.debugShowBoundingVolume&&l(e.boundingVolume)&&p_t(e,t,n,i),o.useLogDepth&&l(e.derivedCommands.logDepth)&&(e=e.derivedCommands.logDepth.command);let s=o.passes;if(!s.pick&&!s.pickVoxel&&!s.depth&&t._hdr&&l(e.derivedCommands)&&l(e.derivedCommands.hdr)&&(e=e.derivedCommands.hdr.command),s.pick||s.depth){if(s.pick&&!s.depth){if(o.pickingMetadata&&l(e.derivedCommands.pickingMetadata)){e=e.derivedCommands.pickingMetadata.pickMetadataCommand,e.execute(r,n);return}if(!o.pickingMetadata&&l(e.derivedCommands.picking)){e=e.derivedCommands.picking.pickCommand,e.execute(r,n);return}}else if(l(e.derivedCommands.depth)){e=e.derivedCommands.depth.depthOnlyCommand,e.execute(r,n);return}}if(t.debugShowCommands||t.debugShowFrustums){t._debugInspector.executeDebugShowFrustumsCommand(t,e,n);return}o.shadowState.lightShadowsEnabled&&e.receiveShadows&&l(e.derivedCommands.shadows)?e.derivedCommands.shadows.receiveCommand.execute(r,n):e.execute(r,n)}function BEe(e,t,n){let{derivedCommands:i}=e;if(!l(i))return;let o=t._frameState,r=t._context;o.useLogDepth&&l(i.logDepth)&&(e=i.logDepth.command);let{picking:s,pickingMetadata:a,depth:c}=e.derivedCommands;l(a)&&(e=i.pickingMetadata.pickMetadataCommand,e.execute(r,n)),l(s)?(e=s.pickCommand,e.execute(r,n)):l(c)&&(e=c.depthOnlyCommand,e.execute(r,n))}function FEe(e,t,n){return t.boundingVolume.distanceSquaredTo(n)-e.boundingVolume.distanceSquaredTo(n)}var A_t=new m;function wEe(e,t){let n=m.subtract(e,t,A_t),i=Math.max(0,m.magnitude(n));return i*i}function g_t(e,t,n){let i=e.boundingVolume,o=t.boundingVolume;return wEe(o.center,n)-wEe(i.center,n)}function b_t(e,t,n){return e.boundingVolume.distanceSquaredTo(n)-t.boundingVolume.distanceSquaredTo(n)+Z.EPSILON12}function y_t(e,t,n,i,o){Sp(i,FEe,e.camera.positionWC),l(o)&&t(o.unclassifiedCommand,e,n);for(let r=0;r<i.length;++r)t(i[r],e,n)}function C_t(e,t,n,i,o){Sp(i,b_t,e.camera.positionWC),l(o)&&t(o.unclassifiedCommand,e,n);for(let r=0;r<i.length;++r)t(i[r],e,n)}function x_t(e,t,n){e.context.uniformState.updatePass(Ge.VOXELS);let i=n.commands[Ge.VOXELS];i.length=n.indices[Ge.VOXELS],Sp(i,FEe,e.camera.positionWC);for(let o=0;o<i.length;++o)gf(i[o],e,t)}function I_t(e,t,n){e.context.uniformState.updatePass(Ge.GAUSSIAN_SPLATS);let i=n.commands[Ge.GAUSSIAN_SPLATS];i.length=n.indices[Ge.GAUSSIAN_SPLATS],Sp(i,g_t,e.camera.positionWC);for(let o=0;o<i.length;++o)gf(i[o],e,t)}var __t=new Ni,E_t=new vl,T_t=new gn,S_t=new qr;function L_t(e){let{frustum:t}=e;return l(t.fov)?t.clone(__t):l(t.infiniteProjectionMatrix)?t.clone(E_t):l(t.width)?t.clone(T_t):t.clone(S_t)}function R_t(e){if(e._environmentState.useOIT){if(!l(e._executeOITFunction)){let{view:t,context:n}=e;e._executeOITFunction=function(i,o,r,s,a){t.globeDepth.prepareColorTextures(n),t.oit.executeCommands(i,o,r,s,a)}}return e._executeOITFunction}return e.frameState.passes.render?y_t:C_t}function V_t(e,t,n){let{frameState:i,context:o}=e,{pick:r,pickVoxel:s}=i.passes,a=r||s,c;!a&&e._environmentState.useInvertClassification&&i.invertClassificationColor.alpha<1&&(c=e._invertClassification);let d=R_t(e);o.uniformState.updatePass(Ge.TRANSLUCENT);let u=n.commands[Ge.TRANSLUCENT];u.length=n.indices[Ge.TRANSLUCENT],d(e,gf,t,u,c)}function G_t(e,t,n){let{translucentTileClassification:i,globeDepth:o}=e._view;if(!(n.indices[Ge.CESIUM_3D_TILE_CLASSIFICATION]>0)||!i.isSupported())return;let s=n.commands[Ge.TRANSLUCENT];i.executeTranslucentCommands(e,gf,t,s,o.depthStencilTexture),i.executeClassificationCommands(e,gf,t,n)}function tq(e,t){let{camera:n,context:i,frameState:o}=e,{uniformState:r}=i;r.updateCamera(n);let s=L_t(n);s.near=n.frustum.near,s.far=n.frustum.far;let a=o.passes,c=a.pick||a.pickVoxel;c||Z_t(e,t);let{clearGlobeDepth:d,renderTranslucentDepthForPick:u,useDepthPlane:h,useGlobeDepthFramebuffer:p,useInvertClassification:g,usePostProcessSelected:f}=e._environmentState,{globeDepth:b,globeTranslucencyFramebuffer:x,sceneFramebuffer:I,frustumCommandsList:_}=e._view,E=_.length,S=e._globeTranslucencyState,R=e._depthClearCommand,G=e._stencilClearCommand,B=e._classificationStencilClearCommand,w=e._depthPlane,F=n.position.z;function P(T,L){r.updatePass(L);let V=T.commands[L],W=T.indices[L];for(let M=0;M<W;++M)gf(V[M],e,t);return W}function A(T,L){r.updatePass(L);let V=T.commands[L],W=T.indices[L];for(let M=0;M<W;++M)BEe(V[M],e,t)}for(let T=0;T<E;++T){let L=E-T-1,V=_[L];e.mode===re.SCENE2D?(n.position.z=F-V.near+1,s.far=Math.max(1,V.far-V.near),s.near=1,r.update(o),r.updateFrustum(s)):(s.near=L!==0?V.near*e.opaqueFrustumNearOffset:V.near,s.far=V.far,r.updateFrustum(s)),R.execute(i,t),i.stencilBuffer&&G.execute(i,t),S.translucent?(r.updatePass(Ge.GLOBE),S.executeGlobeCommands(V,gf,x,e,t)):P(V,Ge.GLOBE),p&&b.executeCopyDepth(i,t),u||(S.translucent?(r.updatePass(Ge.TERRAIN_CLASSIFICATION),S.executeGlobeClassificationCommands(V,gf,x,e,t)):P(V,Ge.TERRAIN_CLASSIFICATION)),d&&(R.execute(i,t),h&&w.execute(i,t));let W;if(!g||c||u)W=P(V,Ge.CESIUM_3D_TILE),W>0&&(p&&(b.prepareColorTextures(i,d),b.executeUpdateDepth(i,t,b.depthStencilTexture)),u||(W=P(V,Ge.CESIUM_3D_TILE_CLASSIFICATION)));else{e._invertClassification.clear(i,t);let Q=t.framebuffer;t.framebuffer=e._invertClassification._fbo.framebuffer,W=P(V,Ge.CESIUM_3D_TILE),p&&(e._invertClassification.prepareTextures(i),b.executeUpdateDepth(i,t,e._invertClassification._fbo.getDepthStencilTexture())),W=P(V,Ge.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW),t.framebuffer=Q,e._invertClassification.executeClassified(i,t),o.invertClassificationColor.alpha===1&&e._invertClassification.executeUnclassified(i,t),W>0&&i.stencilBuffer&&B.execute(i,t),W=P(V,Ge.CESIUM_3D_TILE_CLASSIFICATION)}if(W>0&&i.stencilBuffer&&G.execute(i,t),x_t(e,t,V),P(V,Ge.OPAQUE),I_t(e,t,V),L!==0&&e.mode!==re.SCENE2D&&(s.near=V.near,r.updateFrustum(s)),V_t(e,t,V),G_t(e,t,V),i.depthTexture&&e.useDepthPicking&&(p||u)){let Q=e._picking.getPickDepth(e,L);Q.update(i,b.depthStencilTexture),Q.executeCopyDepth(i,t)}if(c||!f)continue;let M=t.framebuffer;t.framebuffer=I.getIdFramebuffer(),s.near=L!==0?V.near*e.opaqueFrustumNearOffset:V.near,s.far=V.far,r.updateFrustum(s),S.translucent?(r.updatePass(Ge.GLOBE),S.executeGlobeCommands(V,BEe,x,e,t)):A(V,Ge.GLOBE),d&&(R.framebuffer=t.framebuffer,R.execute(i,t),R.framebuffer=void 0),d&&h&&w.execute(i,t),A(V,Ge.CESIUM_3D_TILE),A(V,Ge.OPAQUE),A(V,Ge.TRANSLUCENT),t.framebuffer=M}}function Z_t(e,t){let{context:n,environmentState:i,view:o}=e;if(n.uniformState.updatePass(Ge.ENVIRONMENT),l(i.skyBoxCommand)&&gf(i.skyBoxCommand,e,t),i.isSkyAtmosphereVisible&&gf(i.skyAtmosphereCommand,e,t),i.isSunVisible&&(i.sunDrawCommand.execute(n,t),e.sunBloom&&!i.useWebVR)){let r;i.useGlobeDepthFramebuffer?r=o.globeDepth.framebuffer:i.usePostProcess?r=o.sceneFramebuffer.framebuffer:r=i.originalFramebuffer,e._sunPostProcess.execute(n),e._sunPostProcess.copy(n,r),t.framebuffer=r}i.isMoonVisible&&i.moonCommand.execute(n,t)}function PEe(e){e.context.uniformState.updatePass(Ge.COMPUTE);let t=e._environmentState.sunComputeCommand;l(t)&&t.execute(e._computeEngine);let n=e._computeCommandList;for(let i=0;i<n.length;++i)n[i].execute(e._computeEngine)}function B_t(e,t){e.context.uniformState.updatePass(Ge.OVERLAY);let n=e.context,i=e._overlayCommandList;for(let o=0;o<i.length;++o)i[o].execute(n,t)}function w_t(e,t,n){let{shadowMapCullingVolume:i,isPointLight:o,passes:r}=n,s=r.length,a=[Ge.GLOBE,Ge.CESIUM_3D_TILE,Ge.OPAQUE,Ge.TRANSLUCENT];for(let c=0;c<t.length;++c){let d=t[c];if(e.updateDerivedCommands(d),!(!d.castShadows||a.indexOf(d.pass)<0||!e.isVisible(i,d)))if(o)for(let u=0;u<s;++u)r[u].commandList.push(d);else if(s===1)r[0].commandList.push(d);else{let u=!1;for(let h=s-1;h>=0;--h){let p=r[h].cullingVolume;if(e.isVisible(p,d))r[h].commandList.push(d),u=!0;else if(u)break}}}}function MEe(e){let{shadowState:t,commandList:n}=e.frameState,{shadowsEnabled:i,shadowMaps:o}=t;if(!i)return;let{context:r}=e,{uniformState:s}=r;for(let a=0;a<o.length;++a){let c=o[a];if(c.outOfView)continue;let{passes:d}=c;for(let u=0;u<d.length;++u)d[u].commandList.length=0;w_t(e,n,c);for(let u=0;u<d.length;++u){let h=c.passes[u],{camera:p,commandList:g}=h;s.updateCamera(p),c.updatePass(r,u);for(let f=0;f<g.length;++f){let b=g[f];s.updatePass(b.pass);let x=b.derivedCommands.shadows.castCommands[a];gf(x,e,h.passState)}}}}var X_t=new m;Ei.prototype.updateAndExecuteCommands=function(e,t){H_t(this,e,t),this._environmentState.useWebVR?W_t(this,e,t):this._frameState.mode!==re.SCENE2D||this._mapMode2D===_d.ROTATE?yy(!0,this,e):k_t(this,e)};function W_t(e,t){let n=e._view,i=n.camera,r=e._environmentState.renderTranslucentDepthForPick;vEe(e),n.createPotentiallyVisibleSet(e),PEe(e),r||MEe(e);let s=t.viewport;s.x=0,s.y=0,s.width=s.width*.5;let a=xo.clone(i,e._cameraVR);a.frustum=i.frustum;let c=i.frustum.near,d=c*(e.focalLength??5),u=e.eyeSeparation??d/30,h=m.multiplyByScalar(a.right,u*.5,X_t);i.frustum.aspectRatio=s.width/s.height;let p=.5*u*c/d;m.add(a.position,h,i.position),i.frustum.xOffset=p,tq(e,t),s.x=s.width,m.subtract(a.position,h,i.position),i.frustum.xOffset=-p,tq(e,t),xo.clone(a,i)}var F_t=new ge(Math.PI,Z.PI_OVER_TWO),P_t=new m,M_t=new m,v_t=new X,N_t=new X,D_t=new m,Q_t=new m,U_t=new Ke;function k_t(e,t){let{frameState:n,camera:i}=e,{uniformState:o}=e.context,r=t.viewport,s=Ke.clone(r,U_t);t.viewport=s;let a=F_t,c=P_t;e.mapProjection.project(a,c);let u=m.clone(i.position,M_t),h=X.clone(i.transform,N_t),p=i.frustum.clone();i._setTransform(X.IDENTITY);let g=X.computeViewportTransformation(s,0,1,v_t),f=i.frustum.projectionMatrix,b=i.positionWC.y,x=m.fromElements(Z.sign(b)*c.x-b,0,-i.positionWC.x,D_t),I=Dt.pointToGLWindowCoordinates(f,g,x,Q_t);I.x=Math.floor(I.x);let _=s.x,E=s.width;if(b===0||I.x<=_||I.x>=_+E)yy(!0,e,t);else if(Math.abs(_+E*.5-I.x)<1)s.width=I.x-s.x,i.position.x*=Z.sign(i.position.x),i.frustum.right=0,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),yy(!0,e,t),s.x=I.x,i.position.x=-i.position.x,i.frustum.right=-i.frustum.left,i.frustum.left=0,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),yy(!1,e,t);else if(I.x>_+E*.5){s.width=I.x-_;let S=i.frustum.right;i.frustum.right=c.x-b,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),yy(!0,e,t),s.x=I.x,s.width=_+E-I.x,i.position.x=-i.position.x,i.frustum.left=-i.frustum.right,i.frustum.right=S-i.frustum.right*2,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),yy(!1,e,t)}else{s.x=I.x,s.width=_+E-I.x;let S=i.frustum.left;i.frustum.left=-c.x-b,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),yy(!0,e,t),s.x=_,s.width=I.x-_,i.position.x=-i.position.x,i.frustum.right=-i.frustum.left,i.frustum.left=S-i.frustum.left*2,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),yy(!1,e,t)}i._setTransform(h),m.clone(u,i.position),i.frustum=p.clone(),t.viewport=r}function yy(e,t,n){let i=t._view,{renderTranslucentDepthForPick:o}=t._environmentState;e||(t.frameState.commandList.length=0),vEe(t),i.createPotentiallyVisibleSet(t),e&&(PEe(t),o||MEe(t)),tq(t,n)}var XEe=new Xs;Ei.prototype.updateEnvironment=function(){let e=this._frameState,t=this._view,n=this._environmentState,i=e.passes.render,o=e.passes.offscreen,r=this.atmosphere,s=this.skyAtmosphere,a=this.globe,c=this._globeTranslucencyState;if(!i||this._mode!==re.SCENE2D&&t.camera.frustum instanceof gn||!c.environmentVisible)n.skyAtmosphereCommand=void 0,n.skyBoxCommand=void 0,n.sunDrawCommand=void 0,n.sunComputeCommand=void 0,n.moonCommand=void 0;else{if(l(s)){if(l(a))s.setDynamicLighting(GA.fromGlobeFlags(a)),n.isReadyForAtmosphere=n.isReadyForAtmosphere||!a.show||a._surface._tilesToRender.length>0;else{let I=r.dynamicLighting;s.setDynamicLighting(I),n.isReadyForAtmosphere=!0}n.skyAtmosphereCommand=s.update(e,a),l(n.skyAtmosphereCommand)&&this.updateDerivedCommands(n.skyAtmosphereCommand)}else n.skyAtmosphereCommand=void 0;n.skyBoxCommand=l(this.skyBox)?this.skyBox.update(e,this._hdr):void 0;let x=l(this.sun)?this.sun.update(e,t.passState,this._hdr):void 0;n.sunDrawCommand=l(x)?x.drawCommand:void 0,n.sunComputeCommand=l(x)?x.computeCommand:void 0,n.moonCommand=l(this.moon)?this.moon.update(e):void 0}let d=n.clearGlobeDepth=l(a)&&a.show&&(!a.depthTestAgainstTerrain||this.mode===re.SCENE2D);(n.useDepthPlane=d&&this.mode===re.SCENE3D&&c.useDepthPlane)&&this._depthPlane.update(e),n.renderTranslucentDepthForPick=!1,n.useWebVR=this._useWebVR&&this.mode!==re.SCENE2D&&!o;let h=e.mode===re.SCENE3D&&!c.sunVisibleThroughGlobe?e.occluder:void 0,p=e.cullingVolume,g=XEe.planes;for(let x=0;x<5;++x)g[x]=p.planes[x];p=XEe,n.isSkyAtmosphereVisible=l(n.skyAtmosphereCommand)&&n.isReadyForAtmosphere,n.isSunVisible=this.isVisible(p,n.sunDrawCommand,h),n.isMoonVisible=this.isVisible(p,n.moonCommand,h);let f=this.specularEnvironmentMaps,b=this._specularEnvironmentCubeMap;l(f)&&b?.url!==f?(b=b&&b.destroy(),this._specularEnvironmentCubeMap=new ph(f)):!l(f)&&l(b)&&(b.destroy(),this._specularEnvironmentCubeMap=void 0),l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.update(e)};function Y_t(e){let t=e._frameState;e.debugShowFrustumPlanes!==e._debugShowFrustumPlanes&&(e.debugShowFrustumPlanes?e._debugFrustumPlanes=new Rp({camera:e.camera,updateOnChange:!1,frustumSplits:t.frustumSplits}):e._debugFrustumPlanes=e._debugFrustumPlanes&&e._debugFrustumPlanes.destroy(),e._debugShowFrustumPlanes=e.debugShowFrustumPlanes),l(e._debugFrustumPlanes)&&e._debugFrustumPlanes.update(t)}function O_t(e){let t=e._frameState,{passes:n,shadowState:i,shadowMaps:o}=t,r=o.length,s=r>0&&!n.pick&&!n.pickVoxel&&e.mode===re.SCENE3D;if(s!==i.shadowsEnabled&&(++i.lastDirtyTime,i.shadowsEnabled=s),i.lightShadowsEnabled=!1,!!s){for(let a=0;a<r;++a)if(o[a]!==i.shadowMaps[a]){++i.lastDirtyTime;break}i.shadowMaps.length=0,i.lightShadowMaps.length=0;for(let a=0;a<r;++a){let c=o[a];c.update(t),i.shadowMaps.push(c),c.fromLightSource&&(i.lightShadowMaps.push(c),i.lightShadowsEnabled=!0),c.dirty&&(++i.lastDirtyTime,c.dirty=!1)}}}function vEe(e){let t=e._frameState;e._groundPrimitives.update(t),e._primitives.update(t),Y_t(e),O_t(e),e._globe&&e._globe.render(t)}function H_t(e,t,n){let i=e._context,o=e._frameState,r=e._environmentState,s=e._view,a=o.passes,c=a.pick||a.pickVoxel;l(s.globeDepth)&&(s.globeDepth.picking=c);let d=r.useWebVR;r.originalFramebuffer=t.framebuffer,l(e.sun)&&e.sunBloom!==e._sunBloom?(e.sunBloom&&!d?e._sunPostProcess=new rv:l(e._sunPostProcess)&&(e._sunPostProcess=e._sunPostProcess.destroy()),e._sunBloom=e.sunBloom):!l(e.sun)&&l(e._sunPostProcess)&&(e._sunPostProcess=e._sunPostProcess.destroy(),e._sunBloom=!1);let u=e._clearColorCommand;U.clone(n,u.color),u.execute(i,t);let h=r.useGlobeDepthFramebuffer=l(s.globeDepth);h&&(s.globeDepth.update(i,t,s.viewport,e.msaaSamples,e._hdr,r.clearGlobeDepth),s.globeDepth.clear(i,t,n));let p=s.oit,g=r.useOIT=!c&&l(p)&&p.isSupported();g&&(p.update(i,t,s.globeDepth.colorFramebufferManager,e._hdr,e.msaaSamples),p.clear(i,t,n),r.useOIT=p.isSupported());let f=e.postProcessStages,b=r.usePostProcess=!c&&(e._hdr||f.length>0||f.ambientOcclusion.enabled||f.fxaa.enabled||f.bloom.enabled);if(r.usePostProcessSelected=!1,b&&(s.sceneFramebuffer.update(i,s.viewport,e._hdr,e.msaaSamples),s.sceneFramebuffer.clear(i,t,n),f.update(i,o.useLogDepth,e._hdr),f.clear(i),b=r.usePostProcess=f.ready,r.usePostProcessSelected=b&&f.hasSelected),r.isSunVisible&&e.sunBloom&&!d?(t.framebuffer=e._sunPostProcess.update(t),e._sunPostProcess.clear(i,t,n)):h?t.framebuffer=s.globeDepth.framebuffer:b&&(t.framebuffer=s.sceneFramebuffer.framebuffer),l(t.framebuffer)&&u.execute(i,t),r.useInvertClassification=!c&&l(t.framebuffer)&&e.invertClassification){let I;if(o.invertClassificationColor.alpha===1&&h&&(I=s.globeDepth.framebuffer),l(I)||i.depthTexture){if(e._invertClassification.previousFramebuffer=I,e._invertClassification.update(i,e.msaaSamples,s.globeDepth.colorFramebufferManager),e._invertClassification.clear(i,t),o.invertClassificationColor.alpha<1&&g){let _=e._invertClassification.unclassifiedCommand,E=_.derivedCommands;E.oit=p.createDerivedCommands(_,i,E.oit)}}else r.useInvertClassification=!1}e._globeTranslucencyState.translucent&&s.globeTranslucencyFramebuffer.updateAndClear(e._hdr,s.viewport,i,t)}Ei.prototype.resolveFramebuffers=function(e){let t=this._context,n=this._environmentState,i=this._view,{globeDepth:o,translucentTileClassification:r}=i;l(o)&&o.prepareColorTextures(t);let{useOIT:s,useGlobeDepthFramebuffer:a,usePostProcess:c,originalFramebuffer:d}=n,u=a?o.colorFramebufferManager:void 0,h=i.sceneFramebuffer._colorFramebuffer,p=i.sceneFramebuffer.idFramebuffer;if(s&&(e.framebuffer=c?h.framebuffer:d,i.oit.execute(t,e)),r.hasTranslucentDepth&&r.isSupported()&&r.execute(this,e),c){i.sceneFramebuffer.prepareColorTextures(t);let g=h;a&&!s&&(g=u);let f=this.postProcessStages,b=g.getColorTexture(0),x=p.getColorTexture(0),I=(u??h).getDepthStencilTexture();f.execute(t,b,I,x),f.copy(t,d)}!s&&!c&&a&&(e.framebuffer=d,o.executeCopyColor(t,e))};function z_t(e){let t=e._frameState.afterRender;for(let n=0;n<t.length;++n)t[n]()&&e.requestRender();t.length=0}function K_t(e){if(e.mode===re.MORPHING)return;let t=e.camera.positionCartographic;return e.getHeight(t)}function NEe(e,t,n){let i=Number.NEGATIVE_INFINITY;if(e instanceof Wl){let o=e.length;for(let r=0;r<o;++r){let s=e.get(r),a=NEe(s,t,n);l(a)&&a>i&&(i=a)}}else if(e.isCesium3DTileset&&e.show&&e.enableCollision){let o=e.getHeight(t,n);if(l(o)&&o>i)return o}return i}Ei.prototype.getHeight=function(e,t){if(!l(e))return;let n=t===et.CLAMP_TO_TERRAIN||t===et.RELATIVE_TO_TERRAIN,i=t===et.CLAMP_TO_3D_TILE||t===et.RELATIVE_TO_3D_TILE;if(!l(e))return;let o=Number.NEGATIVE_INFINITY;if(!n){let s=NEe(this.primitives,e,this);l(s)&&s>o&&(o=s)}let r=this._globe;if(!i&&l(r)&&r.show){let s=r.getHeight(e);s>o&&(o=s)}if(o>Number.NEGATIVE_INFINITY)return o};var eq=new ge;Ei.prototype.updateHeight=function(e,t,n){let i=this._ellipsoid,o=g=>{ge.clone(e,eq);let f;l(g)&&(f=g.height),l(f)||(f=this.getHeight(e,n)),l(f)&&(eq.height=f,t(eq))},r=n===et.CLAMP_TO_TERRAIN||n===et.RELATIVE_TO_TERRAIN,s=n===et.CLAMP_TO_3D_TILE||n===et.RELATIVE_TO_3D_TILE,a;!s&&l(this.globe)&&(a=this.globe._surface.updateHeight(e,o));let c={},d=g=>{if(r||g.isDestroyed()||!g.isCesium3DTileset)return;let f=g.updateHeight(e,o,i);c[g.id]=f};if(!r){let g=this.primitives.length;for(let f=0;f<g;++f){let b=this.primitives.get(f);d(b)}}let u=this.primitives.primitiveAdded.addEventListener(d),h=this.primitives.primitiveRemoved.addEventListener(g=>{g.isDestroyed()||!g.isCesium3DTileset||(l(c[g.id])&&c[g.id](),delete c[g.id])});return()=>{a=a&&a(),Object.values(c).forEach(g=>g()),c={},u(),h()}};function J_t(e){let t=e.camera,n=e._mode,i=e._screenSpaceCameraController,o=t.positionCartographic;if(!l(o))return!1;if(!i.onMap()&&o.height<0)return!0;if(n===re.SCENE2D||n===re.MORPHING)return!1;let r=e._globeHeight;return l(r)&&o.height<r}Ei.prototype.initializeFrame=function(){if(this._shaderFrameCount++===120&&(this._shaderFrameCount=0,this._context.shaderCache.destroyReleasedShaderPrograms(),this._context.textureCache.destroyReleasedTextures()),this._tweens.update(),this._globeHeightDirty){l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),this._globeHeight=K_t(this),this._globeHeightDirty=!1;let e=this.camera.positionCartographic;this._removeUpdateHeightCallback=this.updateHeight(e,t=>{this.isDestroyed()||(this._globeHeight=t.height)})}this._cameraUnderground=J_t(this),this._globeTranslucencyState.update(this),this._screenSpaceCameraController.update(),l(this._deviceOrientationCameraController)&&this._deviceOrientationCameraController.update(),this.camera.update(this._mode),this.camera._updateCameraChanged()};function j_t(e,t){if(e.debugShowFramesPerSecond){if(!l(e._performanceDisplay)){let n=document.createElement("div");n.className="cesium-performanceDisplay-defaultContainer",e._canvas.parentNode.appendChild(n);let o=new kg({container:n});e._performanceDisplay=o,e._performanceContainer=n}e._performanceDisplay.throttled=e.requestRenderMode,e._performanceDisplay.update(t)}else l(e._performanceDisplay)&&(e._performanceDisplay=e._performanceDisplay&&e._performanceDisplay.destroy(),e._performanceContainer.parentNode.removeChild(e._performanceContainer))}function q_t(e){e._jobScheduler.resetBudgets();let t=e._frameState;e.primitives.prePassesUpdate(t),l(e.globe)&&e.globe.update(t),e._picking.update(),t.creditDisplay.update()}function $_t(e){e.primitives.postPassesUpdate(e._frameState),Sc.update()}var eEt=new U;function tEt(e){let t=e._frameState,n=e.context,{uniformState:i}=n,o=e._defaultView;e._view=o,e.updateFrameState(),t.passes.render=!0,t.passes.postProcess=e.postProcessStages.hasSelected,t.tilesetPassState=m_t;let r=e.backgroundColor??U.BLACK;e._hdr&&(r=U.clone(r,eEt),r.red=Math.pow(r.red,e.gamma),r.green=Math.pow(r.green,e.gamma),r.blue=Math.pow(r.blue,e.gamma)),t.backgroundColor=r,t.atmosphere=e.atmosphere,e.fog.update(t),i.update(t);let s=e.shadowMap;l(s)&&s.enabled&&(!l(e.light)||e.light instanceof Ng?m.negate(i.sunDirectionWC,e._shadowMapCamera.direction):m.clone(e.light.direction,e._shadowMapCamera.direction),t.shadowMaps.push(s)),e._computeCommandList.length=0,e._overlayCommandList.length=0;let a=o.viewport;a.x=0,a.y=0,a.width=n.drawingBufferWidth,a.height=n.drawingBufferHeight;let c=o.passState;c.framebuffer=void 0,c.blendingEnabled=void 0,c.scissorTest=void 0,c.viewport=Ke.clone(a,c.viewport),n.beginFrame(),l(e.globe)&&e.globe.beginFrame(t),e.updateEnvironment(),e.updateAndExecuteCommands(c,r),e.resolveFramebuffers(c),c.framebuffer=void 0,B_t(e,c),l(e.globe)&&(e.globe.endFrame(t),e.globe.tilesLoaded||(e._renderRequested=!0)),n.endFrame()}function n_(e,t){try{t(e)}catch(n){if(e._renderError.raiseEvent(e,n),e.rethrowRenderErrors)throw n}}function nEt(e){return e._picking.updateMostDetailedRayPicks(e)}Ei.prototype.render=function(e){this._preUpdate.raiseEvent(this,e);let t=this._frameState;t.newFrame=!1,l(e)||(e=j.now());let n=this._view.checkForCameraUpdates(this);n&&(this._globeHeightDirty=!0);let i=!this.requestRenderMode||this._renderRequested||n||this._logDepthBufferDirty||this._hdrDirty||this.mode===re.MORPHING;if(!i&&l(this.maximumRenderTimeChange)&&l(this._lastRenderTime)){let o=Math.abs(j.secondsDifference(this._lastRenderTime,e));i=i||o>this.maximumRenderTimeChange}if(i){this._lastRenderTime=j.clone(e,this._lastRenderTime),this._renderRequested=!1,this._logDepthBufferDirty=!1,this._hdrDirty=!1;let o=Z.incrementWrap(t.frameNumber,15e6,1);WEe(this,o,e),t.newFrame=!0}n_(this,q_t),this.primitives.show&&(n_(this,nEt),n_(this,iEt),n_(this,oEt),i||n_(this,rEt)),this._postUpdate.raiseEvent(this,e),i&&(this._preRender.raiseEvent(this,e),t.creditDisplay.beginFrame(),n_(this,tEt)),j_t(this,i),n_(this,$_t),z_t(this),i&&(this._postRender.raiseEvent(this,e),t.creditDisplay.endFrame())};Ei.prototype.forceRender=function(e){this._renderRequested=!0,this.render(e)};Ei.prototype.requestRender=function(){this._renderRequested=!0};Ei.prototype.clampLineWidth=function(e){return Math.max(Kt.minimumAliasedLineWidth,Math.min(e,Kt.maximumAliasedLineWidth))};Ei.prototype.pick=function(e,t,n){return this._picking.pick(this,e,t,n)};Ei.prototype.pickVoxel=function(e,t,n){let i=this.pick(e,t,n);if(!l(i))return;let o=i.primitive;if(!(o instanceof by))return;let r=this._picking.pickVoxelCoordinate(this,e,t,n),s=255*r[0]+r[1],a=o._traversal.findKeyframeNode(s);if(!l(a))return;let c=255*r[2]+r[3];return cv.fromKeyframeNode(o,s,c,a)};Ei.prototype.pickMetadata=function(e,t,n,i){let o=this.pick(e);if(!l(o))return;let r=o.detail?.model?.structuralMetadata;if(!l(r))return;let s=r.schema,a=Xv(s,t,n,i);if(!l(a))return;let c=Fv(r,n,i);if(!l(c))return;let d=new Wv(t,n,i,a,c);return this._picking.pickMetadata(this,e,d)};Ei.prototype.pickMetadataSchema=function(e){let t=this.pick(e);return l(t)?t.detail?.model?.structuralMetadata?.schema:void 0};Ei.prototype.pickPositionWorldCoordinates=function(e,t){return this._picking.pickPositionWorldCoordinates(this,e,t)};Ei.prototype.pickPosition=function(e,t){return this._picking.pickPosition(this,e,t)};Ei.prototype.drillPick=function(e,t,n,i){return this._picking.drillPick(this,e,t,n,i)};function iEt(e){let t=e._frameState;j6.camera=t.camera,j6.cullingVolume=t.cullingVolume,e.primitives.updateForPass(t,j6)}function oEt(e){let t=e._frameState;if(!t.camera.canPreloadFlight())return;q6.camera=e.preloadFlightCamera,q6.cullingVolume=e.preloadFlightCullingVolume,e.primitives.updateForPass(t,q6)}function rEt(e){e.primitives.updateForPass(e._frameState,h_t)}Ei.prototype.pickFromRay=function(e,t,n){return this._picking.pickFromRay(this,e,t,n)};Ei.prototype.drillPickFromRay=function(e,t,n,i){return this._picking.drillPickFromRay(this,e,t,n,i)};Ei.prototype.pickFromRayMostDetailed=function(e,t,n){return this._picking.pickFromRayMostDetailed(this,e,t,n)};Ei.prototype.drillPickFromRayMostDetailed=function(e,t,n,i){return this._picking.drillPickFromRayMostDetailed(this,e,t,n,i)};Ei.prototype.sampleHeight=function(e,t,n){return this._picking.sampleHeight(this,e,t,n)};Ei.prototype.clampToHeight=function(e,t,n,i){return this._picking.clampToHeight(this,e,t,n,i)};Ei.prototype.sampleHeightMostDetailed=function(e,t,n){return this._picking.sampleHeightMostDetailed(this,e,t,n)};Ei.prototype.clampToHeightMostDetailed=function(e,t,n){return this._picking.clampToHeightMostDetailed(this,e,t,n)};Ei.prototype.cartesianToCanvasCoordinates=function(e,t){return to.worldToWindowCoordinates(this,e,t)};Ei.prototype.completeMorph=function(){this._transitioner.completeMorph()};Ei.prototype.morphTo2D=function(e){e=e??2,this._transitioner.morphTo2D(e,this._ellipsoid)};Ei.prototype.morphToColumbusView=function(e){e=e??2,this._transitioner.morphToColumbusView(e,this._ellipsoid)};Ei.prototype.morphTo3D=function(e){e=e??2,this._transitioner.morphTo3D(e,this._ellipsoid)};function sEt(e,t){if(e._removeTerrainProviderReadyListener=e._removeTerrainProviderReadyListener&&e._removeTerrainProviderReadyListener(),t.ready){l(e.globe)&&(e.globe.terrainProvider=t.provider);return}e.globe.terrainProvider=void 0,e._removeTerrainProviderReadyListener=t.readyEvent.addEventListener(n=>{l(e)&&l(e.globe)&&(e.globe.terrainProvider=n),e._removeTerrainProviderReadyListener()})}Ei.prototype.setTerrain=function(e){return sEt(this,e),e};Ei.prototype.isDestroyed=function(){return!1};Ei.prototype.destroy=function(){this._tweens.removeAll(),this._computeEngine=this._computeEngine&&this._computeEngine.destroy(),this._screenSpaceCameraController=this._screenSpaceCameraController&&this._screenSpaceCameraController.destroy(),this._deviceOrientationCameraController=this._deviceOrientationCameraController&&!this._deviceOrientationCameraController.isDestroyed()&&this._deviceOrientationCameraController.destroy(),this._primitives=this._primitives&&this._primitives.destroy(),this._groundPrimitives=this._groundPrimitives&&this._groundPrimitives.destroy(),this._globe=this._globe&&this._globe.destroy(),this._removeTerrainProviderReadyListener=this._removeTerrainProviderReadyListener&&this._removeTerrainProviderReadyListener(),this.skyBox=this.skyBox&&this.skyBox.destroy(),this.skyAtmosphere=this.skyAtmosphere&&this.skyAtmosphere.destroy(),this._debugSphere=this._debugSphere&&this._debugSphere.destroy(),this.sun=this.sun&&this.sun.destroy(),this._sunPostProcess=this._sunPostProcess&&this._sunPostProcess.destroy(),this._depthPlane=this._depthPlane&&this._depthPlane.destroy(),this._transitioner=this._transitioner&&this._transitioner.destroy(),this._debugFrustumPlanes=this._debugFrustumPlanes&&this._debugFrustumPlanes.destroy(),this._brdfLutGenerator=this._brdfLutGenerator&&this._brdfLutGenerator.destroy(),this._picking=this._picking&&this._picking.destroy(),this._defaultView=this._defaultView&&this._defaultView.destroy(),this._view=void 0,this._removeCreditContainer&&this._canvas.parentNode.removeChild(this._creditContainer),this.postProcessStages=this.postProcessStages&&this.postProcessStages.destroy(),this._context=this._context&&this._context.destroy(),this._frameState.creditDisplay=this._frameState.creditDisplay&&this._frameState.creditDisplay.destroy(),l(this._performanceDisplay)&&(this._performanceDisplay=this._performanceDisplay&&this._performanceDisplay.destroy(),this._performanceContainer.parentNode.removeChild(this._performanceContainer)),this._removeRequestListenerCallback(),this._removeTaskProcessorListenerCallback();for(let e=0;e<this._removeGlobeCallbacks.length;++e)this._removeGlobeCallbacks[e]();return this._removeGlobeCallbacks.length=0,l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),me(this)};var Pv=Ei;var R8i=y(C(),1);function CL(e){e=e??ie.WGS84,this.show=!0,this.perFragmentAtmosphere=!1,this._ellipsoid=e;let t=1.025,n=m.multiplyByScalar(e.radii,t,new m);this._scaleMatrix=X.fromScale(n),this._modelMatrix=new X,this._command=new ot({owner:this,modelMatrix:this._modelMatrix}),this._spSkyFromSpace=void 0,this._spSkyFromAtmosphere=void 0,this._flags=void 0,this.atmosphereLightIntensity=50,this.atmosphereRayleighCoefficient=new m(55e-7,13e-6,284e-7),this.atmosphereMieCoefficient=new m(21e-6,21e-6,21e-6),this.atmosphereRayleighScaleHeight=1e4,this.atmosphereMieScaleHeight=3200,this.atmosphereMieAnisotropy=.9,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this._hueSaturationBrightness=new m;let i=new m;i.x=e.maximumRadius*t,i.y=e.maximumRadius,i.z=0,this._radiiAndDynamicAtmosphereColor=i;let o=this;this._command.uniformMap={u_radiiAndDynamicAtmosphereColor:function(){return o._radiiAndDynamicAtmosphereColor},u_hsbShift:function(){return o._hueSaturationBrightness.x=o.hueShift,o._hueSaturationBrightness.y=o.saturationShift,o._hueSaturationBrightness.z=o.brightnessShift,o._hueSaturationBrightness},u_atmosphereLightIntensity:function(){return o.atmosphereLightIntensity},u_atmosphereRayleighCoefficient:function(){return o.atmosphereRayleighCoefficient},u_atmosphereMieCoefficient:function(){return o.atmosphereMieCoefficient},u_atmosphereRayleighScaleHeight:function(){return o.atmosphereRayleighScaleHeight},u_atmosphereMieScaleHeight:function(){return o.atmosphereMieScaleHeight},u_atmosphereMieAnisotropy:function(){return o.atmosphereMieAnisotropy}}}Object.defineProperties(CL.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});CL.prototype.setDynamicLighting=function(e){this._radiiAndDynamicAtmosphereColor.z=e};var nq=new X;CL.prototype.update=function(e,t){if(!this.show)return;let n=e.mode;if(n!==re.SCENE3D&&n!==re.MORPHING||!e.passes.render)return;let i=X.fromRotationTranslation(e.context.uniformState.inverseViewRotation,m.ZERO,nq),o=X.multiplyTransformation(i,ho.Y_UP_TO_Z_UP,nq),r=X.multiply(this._scaleMatrix,o,nq);X.clone(r,this._modelMatrix);let s=e.context,a=aEt(this),c=e.globeTranslucencyState.translucent,d=this.perFragmentAtmosphere||c||!l(t)||!t.show,u=this._command;if(!l(u.vertexArray)){let p=xa.createGeometry(new xa({radii:new m(1,1,1),slicePartitions:256,stackPartitions:256,vertexFormat:we.POSITION_ONLY}));u.vertexArray=ui.fromGeometry({context:s,geometry:p,attributeLocations:Yn.createAttributeLocations(p),bufferUsage:Ne.STATIC_DRAW}),u.renderState=Qe.fromCache({cull:{enabled:!0,face:Xi.FRONT},blending:bn.ALPHA_BLEND,depthMask:!1})}let h=a|d<<2|c<<3;if(h!==this._flags){this._flags=h;let p=[];a&&p.push("COLOR_CORRECT"),d&&p.push("PER_FRAGMENT_ATMOSPHERE"),c&&p.push("GLOBE_TRANSLUCENT");let g=new Oe({defines:p,sources:[_h,$S,IP]}),f=new Oe({defines:p,sources:[_h,$S,xP]});this._spSkyAtmosphere=ln.fromCache({context:s,vertexShaderSource:g,fragmentShaderSource:f}),u.shaderProgram=this._spSkyAtmosphere}return u};function aEt(e){return!(Z.equalsEpsilon(e.hueShift,0,Z.EPSILON7)&&Z.equalsEpsilon(e.saturationShift,0,Z.EPSILON7)&&Z.equalsEpsilon(e.brightnessShift,0,Z.EPSILON7))}CL.prototype.isDestroyed=function(){return!1};CL.prototype.destroy=function(){let e=this._command;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),this._spSkyAtmosphere=this._spSkyAtmosphere&&this._spSkyAtmosphere.destroy(),me(this)};var Mv=CL;var J8i=y(C(),1);function IL(e){this.sources=e.sources,this._sources=void 0,this.show=e.show??!0,this._command=new ot({modelMatrix:X.clone(X.IDENTITY),owner:this}),this._cubeMap=void 0,this._attributeLocations=void 0,this._useHdr=void 0,this._hasError=!1,this._error=void 0}IL.prototype.update=function(e,t){let n=this,{mode:i,passes:o,context:r}=e;if(!this.show||i!==re.SCENE3D&&i!==re.MORPHING||!o.render)return;if(this._hasError){let a=this._error;throw this._hasError=!1,this._error=void 0,a}if(this._sources!==this.sources){this._sources=this.sources;let a=this.sources;typeof a.positiveX=="string"?cP(r,this._sources).then(function(c){n._cubeMap=n._cubeMap&&n._cubeMap.destroy(),n._cubeMap=c}).catch(c=>{this._hasError=!0,this._error=c}):(this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),this._cubeMap=new Pr({context:r,source:a}))}let s=this._command;if(!l(s.vertexArray)){s.uniformMap={u_cubeMap:function(){return n._cubeMap}};let a=sc.createGeometry(sc.fromDimensions({dimensions:new m(2,2,2),vertexFormat:we.POSITION_ONLY})),c=this._attributeLocations=Yn.createAttributeLocations(a);s.vertexArray=ui.fromGeometry({context:r,geometry:a,attributeLocations:c,bufferUsage:Ne.STATIC_DRAW}),s.renderState=Qe.fromCache({blending:bn.ALPHA_BLEND})}if(!l(s.shaderProgram)||this._useHdr!==t){let a=new Oe({defines:[t?"HDR":""],sources:[_P]});s.shaderProgram=ln.fromCache({context:r,vertexShaderSource:EP,fragmentShaderSource:a,attributeLocations:this._attributeLocations}),this._useHdr=t}if(l(this._cubeMap))return s};IL.prototype.isDestroyed=function(){return!1};IL.prototype.destroy=function(){let e=this._command;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy(),this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),me(this)};function xL(e){return hn(`Assets/Textures/SkyBox/tycho2t3_80_${e}.jpg`)}IL.createEarthSkyBox=function(){return new IL({sources:{positiveX:xL("px"),negativeX:xL("mx"),positiveY:xL("py"),negativeY:xL("my"),positiveZ:xL("pz"),negativeZ:xL("mz")}})};var vv=IL;var T7i=y(C(),1);function Dv(){this.show=!0,this._drawCommand=new ot({primitiveType:We.TRIANGLES,boundingVolume:new ue,owner:this}),this._commands={drawCommand:this._drawCommand,computeCommand:void 0},this._boundingVolume=new ue,this._boundingVolume2D=new ue,this._texture=void 0,this._drawingBufferWidth=void 0,this._drawingBufferHeight=void 0,this._radiusTS=void 0,this._size=void 0,this.glowFactor=1,this._glowFactorDirty=!1,this._useHdr=void 0;let e=this;this._uniformMap={u_texture:function(){return e._texture},u_size:function(){return e._size}}}Object.defineProperties(Dv.prototype,{glowFactor:{get:function(){return this._glowFactor},set:function(e){e=Math.max(e,0),this._glowFactor=e,this._glowFactorDirty=!0}}});var cEt=new D,lEt=new D,dEt=new ce,Nv=new ce;Dv.prototype.update=function(e,t,n){if(!this.show)return;let i=e.mode;if(i===re.SCENE2D||i===re.MORPHING||!e.passes.render)return;let o=e.context,r=t.viewport.width,s=t.viewport.height;if(!l(this._texture)||r!==this._drawingBufferWidth||s!==this._drawingBufferHeight||this._glowFactorDirty||n!==this._useHdr){this._texture=this._texture&&this._texture.destroy(),this._drawingBufferWidth=r,this._drawingBufferHeight=s,this._glowFactorDirty=!1,this._useHdr=n;let S=Math.max(r,s);S=Math.pow(2,Math.ceil(Math.log(S)/Math.log(2))-2),S=Math.max(1,S);let R=n?o.halfFloatingPointTexture?Ye.HALF_FLOAT:Ye.FLOAT:Ye.UNSIGNED_BYTE;this._texture=new Wt({context:o,width:S,height:S,pixelFormat:tt.RGBA,pixelDatatype:R}),this._glowLengthTS=this._glowFactor*5,this._radiusTS=1/(1+2*this._glowLengthTS)*.5;let G=this,B={u_radiusTS:function(){return G._radiusTS}};this._commands.computeCommand=new Il({fragmentShaderSource:SP,outputTexture:this._texture,uniformMap:B,persists:!1,owner:this,postExecute:function(){G._commands.computeCommand=void 0}})}let a=this._drawCommand;if(!l(a.vertexArray)){let S={direction:0},R=new Uint8Array(8);R[0]=0,R[1]=0,R[2]=255,R[3]=0,R[4]=255,R[5]=255,R[6]=0,R[7]=255;let G=It.createVertexBuffer({context:o,typedArray:R,usage:Ne.STATIC_DRAW}),B=[{index:S.direction,vertexBuffer:G,componentsPerAttribute:2,normalize:!0,componentDatatype:J.UNSIGNED_BYTE}],w=It.createIndexBuffer({context:o,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Ne.STATIC_DRAW,indexDatatype:Me.UNSIGNED_SHORT});a.vertexArray=new ui({context:o,attributes:B,indexBuffer:w}),a.shaderProgram=ln.fromCache({context:o,vertexShaderSource:LP,fragmentShaderSource:TP,attributeLocations:S}),a.renderState=Qe.fromCache({blending:bn.ALPHA_BLEND}),a.uniformMap=this._uniformMap}let c=o.uniformState.sunPositionWC,d=o.uniformState.sunPositionColumbusView,u=this._boundingVolume,h=this._boundingVolume2D;m.clone(c,u.center),h.center.x=d.z,h.center.y=d.x,h.center.z=d.y,u.radius=Z.SOLAR_RADIUS+Z.SOLAR_RADIUS*this._glowLengthTS,h.radius=u.radius,i===re.SCENE3D?ue.clone(u,a.boundingVolume):i===re.COLUMBUS_VIEW&&ue.clone(h,a.boundingVolume);let p=to.computeActualEllipsoidPosition(e,c,Nv),g=m.magnitude(m.subtract(p,e.camera.position,Nv)),f=o.uniformState.projection,b=dEt;b.x=0,b.y=0,b.z=-g,b.w=1;let x=X.multiplyByVector(f,b,Nv),I=to.clipToGLWindowCoordinates(t.viewport,x,cEt);b.x=Z.SOLAR_RADIUS;let _=X.multiplyByVector(f,b,Nv),E=to.clipToGLWindowCoordinates(t.viewport,_,lEt);return this._size=D.magnitude(D.subtract(E,I,Nv)),this._size=2*this._size*(1+2*this._glowLengthTS),this._size=Math.ceil(this._size),this._commands};Dv.prototype.isDestroyed=function(){return!1};Dv.prototype.destroy=function(){let e=this._drawCommand;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy(),this._texture=this._texture&&this._texture.destroy(),me(this)};var Qv=Dv;var G6i=y(C(),1);var m6i=y(C(),1);var UEe=y(T9(),1);var L7i=y(C(),1);function uEt(e,t,n){return` float clipDistance = clip(gl_FragCoord, ${e}, ${t}); + vec4 clippingPlanesEdgeColor = vec4(1.0); + clippingPlanesEdgeColor.rgb = ${n}.rgb; + float clippingPlanesEdgeWidth = ${n}.a; + if (clipDistance > 0.0 && clipDistance < clippingPlanesEdgeWidth) + { + out_FragColor = clippingPlanesEdgeColor; + } +`}var Uv=uEt;var G7i=y(C(),1);var mEt={modifyFragmentShader:function(t){return t=Oe.replaceMain(t,"czm_splitter_main"),t+=`uniform float czm_splitDirection; +void main() +{ +#ifndef SHADOW_MAP + if (czm_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (czm_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; +#endif + czm_splitter_main(); +} +`,t},addUniforms:function(t,n){n.czm_splitDirection=function(){return t.splitDirection}}},_L=mEt;var i_={NEEDS_DECODE:0,DECODING:1,READY:2,FAILED:3};function kv(e){this._parsedContent=void 0,this._drawCommand=void 0,this._isTranslucent=!1,this._styleTranslucent=!1,this._constantColor=U.clone(U.DARKGRAY),this._highlightColor=U.clone(U.WHITE),this._pointSize=1,this._rtcCenter=void 0,this._quantizedVolumeScale=void 0,this._quantizedVolumeOffset=void 0,this._styleableShaderAttributes=void 0,this._isQuantized=!1,this._isOctEncoded16P=!1,this._isRGB565=!1,this._hasColors=!1,this._hasNormals=!1,this._hasBatchIds=!1,this._decodingState=i_.READY,this._dequantizeInShader=!0,this._isQuantizedDraco=!1,this._isOctEncodedDraco=!1,this._quantizedRange=0,this._octEncodedRange=0,this.backFaceCulling=!1,this._backFaceCulling=!1,this.normalShading=!0,this._normalShading=!0,this._opaqueRenderState=void 0,this._translucentRenderState=void 0,this._mode=void 0,this._ready=!1,this._pointsLength=0,this._geometryByteLength=0,this._vertexShaderLoaded=e.vertexShaderLoaded,this._fragmentShaderLoaded=e.fragmentShaderLoaded,this._uniformMapLoaded=e.uniformMapLoaded,this._batchTableLoaded=e.batchTableLoaded,this._pickIdLoaded=e.pickIdLoaded,this._opaquePass=e.opaquePass??Ge.OPAQUE,this._cull=e.cull??!0,this.style=void 0,this._style=void 0,this.styleDirty=!1,this.modelMatrix=X.clone(X.IDENTITY),this._modelMatrix=X.clone(X.IDENTITY),this.time=0,this.shadows=Gn.ENABLED,this._boundingSphere=void 0,this.clippingPlanes=void 0,this.isClipped=!1,this.clippingPlanesDirty=!1,this.clippingPlanesOriginMatrix=void 0,this.attenuation=!1,this._attenuation=!1,this.geometricError=0,this.geometricErrorScale=1,this.maximumAttenuation=this._pointSize,this.splitDirection=e.splitDirection??Ir.NONE,this._splittingEnabled=!1,this._error=void 0,hEt(this,e)}Object.defineProperties(kv.prototype,{pointsLength:{get:function(){return this._pointsLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}},color:{get:function(){return U.clone(this._highlightColor)},set:function(e){this._highlightColor=U.clone(e,this._highlightColor)}},boundingSphere:{get:function(){if(l(this._drawCommand))return this._drawCommand.boundingVolume},set:function(e){this._boundingSphere=ue.clone(e,this._boundingSphere)}}});function hEt(e,t){let n=ux.parse(t.arrayBuffer,t.byteOffset);if(e._parsedContent=n,e._rtcCenter=n.rtcCenter,e._hasNormals=n.hasNormals,e._hasColors=n.hasColors,e._hasBatchIds=n.hasBatchIds,e._isTranslucent=n.isTranslucent,!n.hasBatchIds&&l(n.batchTableBinary)&&(n.styleableProperties=bA.getBinaryProperties(n.pointsLength,n.batchTableJson,n.batchTableBinary)),l(n.draco)){let a=n.draco;e._decodingState=i_.NEEDS_DECODE,a.dequantizeInShader=e._dequantizeInShader}let i=n.positions;l(i)&&(e._isQuantized=i.isQuantized,e._quantizedVolumeScale=i.quantizedVolumeScale,e._quantizedVolumeOffset=i.quantizedVolumeOffset,e._quantizedRange=i.quantizedRange);let o=n.normals;l(o)&&(e._isOctEncoded16P=o.octEncoded);let r=n.colors;l(r)&&(l(r.constantColor)&&(e._constantColor=U.clone(r.constantColor,e._constantColor),e._hasColors=!1),e._isRGB565=r.isRGB565);let s=n.batchIds;l(n.batchIds)&&(s.name="BATCH_ID",s.semantic="BATCH_ID",s.setIndex=void 0),n.hasBatchIds&&e._batchTableLoaded(n.batchLength,n.batchTableJson,n.batchTableBinary),e._pointsLength=n.pointsLength}var fEt=new m,pEt=new m,AEt=new m,DEe,GY;function gEt(e){if(!l(GY)){DEe=new UEe.default(0),GY=new Array(e);for(let t=0;t<e;++t)GY[t]=DEe.random()}return GY}function bEt(e){let n=e.length/3,i=Math.min(n,20),o=gEt(20),r=Number.MAX_VALUE,s=-Number.MAX_VALUE,a=m.fromElements(r,r,r,fEt),c=m.fromElements(s,s,s,pEt);for(let u=0;u<i;++u){let h=Math.floor(o[u]*n),p=m.unpack(e,h*3,AEt);m.minimumByComponent(a,p,a),m.maximumByComponent(c,p,c)}let d=ue.fromCornerPoints(a,c);return d.radius+=Z.EPSILON2,d}function QEe(e,t){let n=J.fromTypedArray(e);return n===J.INT||n===J.UNSIGNED_INT||n===J.DOUBLE?(xt("Cast pnts property to floats",`Point cloud property "${t}" will be cast to a float array because INT, UNSIGNED_INT, and DOUBLE are not valid WebGL vertex attribute types. Some precision may be lost.`),new Float32Array(e)):e}var yEt=new ce,CEt=new ce,xEt=new U,kEe=0,ZY=1,aq=2,YEe=3,IEt=4,iq=new X,_Et=new X;function EEt(e,t){let n=t.context,i=e._parsedContent,o=e._pointsLength,r=i.positions,s=i.colors,a=i.normals,c=i.batchIds,d=i.styleableProperties,u=l(d),h=e._isQuantized,p=e._isQuantizedDraco,g=e._isOctEncoded16P,f=e._isOctEncodedDraco,b=e._quantizedRange,x=e._octEncodedRange,I=e._isRGB565,_=e._isTranslucent,E=e._hasColors,S=e._hasNormals,R=e._hasBatchIds,G,B,w=[],F={};if(e._styleableShaderAttributes=F,u){let N=IEt;for(let k in d)if(d.hasOwnProperty(k)){let v=d[k],O=QEe(v.typedArray,k);G=v.componentCount,B=J.fromTypedArray(O);let H=It.createVertexBuffer({context:n,typedArray:O,usage:Ne.STATIC_DRAW});e._geometryByteLength+=H.sizeInBytes;let ee={index:N,vertexBuffer:H,componentsPerAttribute:G,componentDatatype:B,normalize:!1,offsetInBytes:0,strideInBytes:0};w.push(ee),F[k]={location:N,componentCount:G},++N}}let P=It.createVertexBuffer({context:n,typedArray:r.typedArray,usage:Ne.STATIC_DRAW});e._geometryByteLength+=P.sizeInBytes;let A;E&&(A=It.createVertexBuffer({context:n,typedArray:s.typedArray,usage:Ne.STATIC_DRAW}),e._geometryByteLength+=A.sizeInBytes);let T;S&&(T=It.createVertexBuffer({context:n,typedArray:a.typedArray,usage:Ne.STATIC_DRAW}),e._geometryByteLength+=T.sizeInBytes);let L;R&&(c.typedArray=QEe(c.typedArray,"batchIds"),L=It.createVertexBuffer({context:n,typedArray:c.typedArray,usage:Ne.STATIC_DRAW}),e._geometryByteLength+=L.sizeInBytes);let V=[];if(h?B=J.UNSIGNED_SHORT:p?B=b<=255?J.UNSIGNED_BYTE:J.UNSIGNED_SHORT:B=J.FLOAT,V.push({index:kEe,vertexBuffer:P,componentsPerAttribute:3,componentDatatype:B,normalize:!1,offsetInBytes:0,strideInBytes:0}),e._cull&&(h||p?e._boundingSphere=ue.fromCornerPoints(m.ZERO,e._quantizedVolumeScale):e._boundingSphere=bEt(r.typedArray)),E)if(I)V.push({index:ZY,vertexBuffer:A,componentsPerAttribute:1,componentDatatype:J.UNSIGNED_SHORT,normalize:!1,offsetInBytes:0,strideInBytes:0});else{let N=_?4:3;V.push({index:ZY,vertexBuffer:A,componentsPerAttribute:N,componentDatatype:J.UNSIGNED_BYTE,normalize:!0,offsetInBytes:0,strideInBytes:0})}S&&(g?(G=2,B=J.UNSIGNED_BYTE):f?(G=2,B=x<=255?J.UNSIGNED_BYTE:J.UNSIGNED_SHORT):(G=3,B=J.FLOAT),V.push({index:aq,vertexBuffer:T,componentsPerAttribute:G,componentDatatype:B,normalize:!1,offsetInBytes:0,strideInBytes:0})),R&&V.push({index:YEe,vertexBuffer:L,componentsPerAttribute:1,componentDatatype:J.fromTypedArray(c.typedArray),normalize:!1,offsetInBytes:0,strideInBytes:0}),u&&(V=V.concat(w));let W=new ui({context:n,attributes:V}),M={depthTest:{enabled:!0}},Q={depthTest:{enabled:!0},depthMask:!1,blending:bn.ALPHA_BLEND};e._opaquePass===Ge.CESIUM_3D_TILE&&(M.stencilTest=jt.setCesium3DTileBit(),M.stencilMask=jt.CESIUM_3D_TILE_MASK,Q.stencilTest=jt.setCesium3DTileBit(),Q.stencilMask=jt.CESIUM_3D_TILE_MASK),e._opaqueRenderState=Qe.fromCache(M),e._translucentRenderState=Qe.fromCache(Q),e._drawCommand=new ot({boundingVolume:new ue,cull:e._cull,modelMatrix:new X,primitiveType:We.POINTS,vertexArray:W,count:o,shaderProgram:void 0,uniformMap:void 0,renderState:_?e._translucentRenderState:e._opaqueRenderState,pass:_?Ge.TRANSLUCENT:e._opaquePass,owner:e,castShadows:!1,receiveShadows:!1,pickId:e._pickIdLoaded()})}function TEt(e,t){let n=t.context,i=e._isQuantized,o=e._isQuantizedDraco,r=e._isOctEncodedDraco,s={u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier:function(){let a=yEt;if(a.x=e._attenuation?e.maximumAttenuation:e._pointSize,a.x*=t.pixelRatio,a.y=e.time,e._attenuation){let c=t.camera.frustum,d;t.mode===re.SCENE2D||c instanceof gn?d=Number.POSITIVE_INFINITY:d=n.drawingBufferHeight/t.camera.frustum.sseDenominator,a.z=e.geometricError*e.geometricErrorScale,a.w=d}return a},u_highlightColor:function(){return e._highlightColor},u_constantColor:function(){return e._constantColor},u_clippingPlanes:function(){let a=e.clippingPlanes;return e.isClipped?a.texture:n.defaultTexture},u_clippingPlanesEdgeStyle:function(){let a=e.clippingPlanes;if(!l(a))return U.TRANSPARENT;let c=U.clone(a.edgeColor,xEt);return c.alpha=a.edgeWidth,c},u_clippingPlanesMatrix:function(){let a=e.clippingPlanes;if(!l(a))return X.IDENTITY;let c=e.clippingPlanesOriginMatrix??e._modelMatrix;X.multiply(n.uniformState.view3D,c,iq);let d=X.multiply(iq,a.modelMatrix,iq);return X.inverseTranspose(d,_Et)}};_L.addUniforms(e,s),(i||o||r)&&(s=Lt(s,{u_quantizedVolumeScaleAndOctEncodedRange:function(){let a=CEt;if(l(e._quantizedVolumeScale)){let c=m.clone(e._quantizedVolumeScale,a);m.divideByScalar(c,e._quantizedRange,a)}return a.w=e._octEncodedRange,a}})),l(e._uniformMapLoaded)&&(s=e._uniformMapLoaded(s)),e._drawCommand.uniformMap=s}function oq(e,t){let n=/czm_3dtiles_property_(\d+)/g,i=n.exec(e);for(;i!==null;){let o=parseInt(i[1]);t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function rq(e,t){e=e.slice(e.indexOf(` +`));let n=/czm_3dtiles_builtin_property_(\w+)/g,i=n.exec(e);for(;i!==null;){let o=i[1];t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function sq(e,t){let n=e.numberOfAttributes;for(let i=0;i<n;++i){let o=e.getAttribute(i);if(o.index===t)return o}}var SEt={POSITION:"czm_3dtiles_builtin_property_POSITION",POSITION_ABSOLUTE:"czm_3dtiles_builtin_property_POSITION_ABSOLUTE",COLOR:"czm_3dtiles_builtin_property_COLOR",NORMAL:"czm_3dtiles_builtin_property_NORMAL"};function LEt(e,t,n){let i,o,r,s=t.context,a=l(n),c=e._isQuantized,d=e._isQuantizedDraco,u=e._isOctEncoded16P,h=e._isOctEncodedDraco,p=e._isRGB565,g=e._isTranslucent,f=e._hasColors,b=e._hasNormals,x=e._hasBatchIds,I=e._backFaceCulling,_=e._normalShading,E=e._drawCommand.vertexArray,S=e.clippingPlanes,R=e._attenuation,G,B,w,F=g,P=ke(SEt),A={},T=e._styleableShaderAttributes;for(o in T)T.hasOwnProperty(o)&&(r=T[o],P[o]=`czm_3dtiles_property_${r.location}`,A[r.location]=r);if(a){let he={translucent:!1},xe="(vec3 czm_3dtiles_builtin_property_POSITION, vec3 czm_3dtiles_builtin_property_POSITION_ABSOLUTE, vec4 czm_3dtiles_builtin_property_COLOR, vec3 czm_3dtiles_builtin_property_NORMAL)";G=n.getColorShaderFunction(`getColorFromStyle${xe}`,P,he),B=n.getShowShaderFunction(`getShowFromStyle${xe}`,P,he),w=n.getPointSizeShaderFunction(`getPointSizeFromStyle${xe}`,P,he),l(G)&&he.translucent&&(F=!0)}e._styleTranslucent=F;let L=l(G),V=l(B),W=l(w),M=e.isClipped,Q=[],N=[];L&&(oq(G,Q),rq(G,N)),V&&(oq(B,Q),rq(B,N)),W&&(oq(w,Q),rq(w,N));let k=N.indexOf("COLOR")>=0,v=N.indexOf("NORMAL")>=0;if(v&&!b)throw new de("Style references the NORMAL semantic but the point cloud does not have normals");for(o in T)if(T.hasOwnProperty(o)){r=T[o];let he=Q.indexOf(r.location)>=0,xe=sq(E,r.location);xe.enabled=he}let O=f&&(!L||k);if(f){let he=sq(E,ZY);he.enabled=O}let H=b&&(_||I||v);if(b){let he=sq(E,aq);he.enabled=H}let ee={a_position:kEe};O&&(ee.a_color=ZY),H&&(ee.a_normal=aq),x&&(ee.a_batchId=YEe);let K="",te=Q.length;for(i=0;i<te;++i){let he=Q[i];r=A[he];let xe=r.componentCount,Te=`czm_3dtiles_property_${he}`,Be;xe===1?Be="float":Be=`vec${xe}`,K+=`in ${Be} ${Te}; +`,ee[Te]=r.location}TEt(e,t);let q=`in vec3 a_position; +out vec4 v_color; +uniform vec4 u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier; +uniform vec4 u_constantColor; +uniform vec4 u_highlightColor; +`;q+=`float u_pointSize; +float tiles3d_tileset_time; +`,R&&(q+=`float u_geometricError; +float u_depthMultiplier; +`),q+=K,O&&(g?q+=`in vec4 a_color; +`:p?q+=`in float a_color; +const float SHIFT_RIGHT_11 = 1.0 / 2048.0; +const float SHIFT_RIGHT_5 = 1.0 / 32.0; +const float SHIFT_LEFT_11 = 2048.0; +const float SHIFT_LEFT_5 = 32.0; +const float NORMALIZE_6 = 1.0 / 64.0; +const float NORMALIZE_5 = 1.0 / 32.0; +`:q+=`in vec3 a_color; +`),H&&(u||h?q+=`in vec2 a_normal; +`:q+=`in vec3 a_normal; +`),x&&(q+=`in float a_batchId; +`),(c||d||h)&&(q+=`uniform vec4 u_quantizedVolumeScaleAndOctEncodedRange; +`),L&&(q+=G),V&&(q+=B),W&&(q+=w),q+=`void main() +{ + u_pointSize = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.x; + tiles3d_tileset_time = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.y; +`,R&&(q+=` u_geometricError = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.z; + u_depthMultiplier = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.w; +`),O?g?q+=` vec4 color = a_color; +`:p?q+=` float compressed = a_color; + float r = floor(compressed * SHIFT_RIGHT_11); + compressed -= r * SHIFT_LEFT_11; + float g = floor(compressed * SHIFT_RIGHT_5); + compressed -= g * SHIFT_LEFT_5; + float b = compressed; + vec3 rgb = vec3(r * NORMALIZE_5, g * NORMALIZE_6, b * NORMALIZE_5); + vec4 color = vec4(rgb, 1.0); +`:q+=` vec4 color = vec4(a_color, 1.0); +`:q+=` vec4 color = u_constantColor; +`,c||d?q+=` vec3 position = a_position * u_quantizedVolumeScaleAndOctEncodedRange.xyz; +`:q+=` vec3 position = a_position; +`,q+=` vec3 position_absolute = vec3(czm_model * vec4(position, 1.0)); +`,H?(u?q+=` vec3 normal = czm_octDecode(a_normal); +`:h?q+=` vec3 normal = czm_octDecode(a_normal, u_quantizedVolumeScaleAndOctEncodedRange.w).zxy; +`:q+=` vec3 normal = a_normal; +`,q+=` vec3 normalEC = czm_normal * normal; +`):q+=` vec3 normal = vec3(1.0); +`,L&&(q+=` color = getColorFromStyle(position, position_absolute, color, normal); +`),V&&(q+=` float show = float(getShowFromStyle(position, position_absolute, color, normal)); +`),W?q+=` gl_PointSize = getPointSizeFromStyle(position, position_absolute, color, normal) * czm_pixelRatio; +`:R?q+=` vec4 positionEC = czm_modelView * vec4(position, 1.0); + float depth = -positionEC.z; + gl_PointSize = min((u_geometricError / depth) * u_depthMultiplier, u_pointSize); +`:q+=` gl_PointSize = u_pointSize; +`,q+=` color = color * u_highlightColor; +`,H&&_&&(q+=` float diffuseStrength = czm_getLambertDiffuse(czm_lightDirectionEC, normalEC); + diffuseStrength = max(diffuseStrength, 0.4); + color.xyz *= diffuseStrength * czm_lightColor; +`),q+=` v_color = color; + gl_Position = czm_modelViewProjection * vec4(position, 1.0); +`,H&&I&&(q+=` float visible = step(-normalEC.z, 0.0); + gl_Position *= visible; + gl_PointSize *= visible; +`),V&&(q+=` gl_Position.w *= float(show); + gl_PointSize *= float(show); +`),q+=`} +`;let pe=`in vec4 v_color; +`;M&&(pe+=`uniform highp sampler2D u_clippingPlanes; +uniform mat4 u_clippingPlanesMatrix; +uniform vec4 u_clippingPlanesEdgeStyle; +`,pe+=` +`,pe+=Qg(S,s),pe+=` +`),pe+=`void main() +{ + out_FragColor = czm_gammaCorrect(v_color); +`,M&&(pe+=Uv("u_clippingPlanes","u_clippingPlanesMatrix","u_clippingPlanesEdgeStyle")),pe+=`} +`,e.splitDirection!==Ir.NONE&&(pe=_L.modifyFragmentShader(pe)),l(e._vertexShaderLoaded)&&(q=e._vertexShaderLoaded(q)),l(e._fragmentShaderLoaded)&&(pe=e._fragmentShaderLoaded(pe));let ye=e._drawCommand;l(ye.shaderProgram)&&ye.shaderProgram.destroy(),ye.shaderProgram=ln.fromCache({context:s,vertexShaderSource:q,fragmentShaderSource:pe,attributeLocations:ee});try{ye.shaderProgram._bind()}catch{throw new de("Error generating style shader: this may be caused by a type mismatch, index out-of-bounds, or other syntax error.")}}function REt(e,t){if(e._decodingState===i_.READY)return!1;if(e._decodingState===i_.NEEDS_DECODE){let n=e._parsedContent,i=n.draco,o=TA.decodePointCloud(i,t);l(o)&&(e._decodingState=i_.DECODING,o.then(function(r){e._decodingState=i_.READY;let s=l(r.POSITION)?r.POSITION.array:void 0,a=l(r.RGB)?r.RGB.array:void 0,c=l(r.RGBA)?r.RGBA.array:void 0,d=l(r.NORMAL)?r.NORMAL.array:void 0,u=l(r.BATCH_ID)?r.BATCH_ID.array:void 0,h=l(s)&&l(r.POSITION.data.quantization),p=l(d)&&l(r.NORMAL.data.quantization);if(h){let x=r.POSITION.data.quantization,I=x.range;e._quantizedVolumeScale=m.fromElements(I,I,I),e._quantizedVolumeOffset=m.unpack(x.minValues),e._quantizedRange=(1<<x.quantizationBits)-1,e._isQuantizedDraco=!0}p&&(e._octEncodedRange=(1<<r.NORMAL.data.quantization.quantizationBits)-1,e._isOctEncodedDraco=!0);let g=n.styleableProperties,f=i.batchTableProperties;for(let x in f)if(f.hasOwnProperty(x)){let I=r[x];l(g)||(g={}),g[x]={typedArray:I.array,componentCount:I.data.componentsPerAttribute}}l(s)&&(n.positions={typedArray:s});let b=c??a;l(b)&&(n.colors={typedArray:b}),l(d)&&(n.normals={typedArray:d}),l(u)&&(n.batchIds={typedArray:u}),n.styleableProperties=g}).catch(function(r){e._decodingState=i_.FAILED,e._error=r}))}return!0}var VEt=new ce,GEt=new m;kv.prototype.update=function(e){let t=e.context;if(l(this._error)){let d=this._error;throw this._error=void 0,d}if(REt(this,t))return;let i=!1,o=!X.equals(this._modelMatrix,this.modelMatrix);if(this._mode!==e.mode&&(this._mode=e.mode,o=!0),l(this._drawCommand)||(EEt(this,e),o=!0,i=!0,this._ready=!0,this._parsedContent=void 0),o){X.clone(this.modelMatrix,this._modelMatrix);let d=this._drawCommand.modelMatrix;if(X.clone(this._modelMatrix,d),l(this._rtcCenter)&&X.multiplyByTranslation(d,this._rtcCenter,d),l(this._quantizedVolumeOffset)&&X.multiplyByTranslation(d,this._quantizedVolumeOffset,d),e.mode!==re.SCENE3D){let h=e.mapProjection,p=X.getColumn(d,3,VEt);ce.equals(p,ce.UNIT_W)||Dt.basisTo2D(h,d,d)}let u=this._drawCommand.boundingVolume;if(ue.clone(this._boundingSphere,u),this._cull){let h=u.center;X.multiplyByPoint(d,h,h);let p=X.getScale(d,GEt);u.radius*=m.maximumComponent(p)}}this.clippingPlanesDirty&&(this.clippingPlanesDirty=!1,i=!0),this._attenuation!==this.attenuation&&(this._attenuation=this.attenuation,i=!0),this.backFaceCulling!==this._backFaceCulling&&(this._backFaceCulling=this.backFaceCulling,i=!0),this.normalShading!==this._normalShading&&(this._normalShading=this.normalShading,i=!0),(this._style!==this.style||this.styleDirty)&&(this._style=this.style,this.styleDirty=!1,i=!0);let r=this.splitDirection!==Ir.NONE;this._splittingEnabled!==r&&(this._splittingEnabled=r,i=!0),i&&LEt(this,e,this._style),this._drawCommand.castShadows=Gn.castShadows(this.shadows),this._drawCommand.receiveShadows=Gn.receiveShadows(this.shadows);let s=this._highlightColor.alpha<1||this._constantColor.alpha<1||this._styleTranslucent;this._drawCommand.renderState=s?this._translucentRenderState:this._opaqueRenderState,this._drawCommand.pass=s?Ge.TRANSLUCENT:this._opaquePass;let a=e.commandList,c=e.passes;(c.render||c.pick)&&a.push(this._drawCommand)};kv.prototype.isDestroyed=function(){return!1};kv.prototype.destroy=function(){let e=this._drawCommand;return l(e)&&(e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy()),me(this)};var Yv=kv;function r_(e){e=e??Y.EMPTY_OBJECT,this.show=e.show??!0,this.modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this.shadows=e.shadows??Gn.ENABLED,this.maximumMemoryUsage=e.maximumMemoryUsage??256,this.shading=new Hf(e.shading),this.style=e.style,this.frameFailed=new Ce,this.frameChanged=new Ce,this._clock=e.clock,this._intervals=e.intervals,this._clippingPlanes=void 0,this.clippingPlanes=e.clippingPlanes,this._pointCloudEyeDomeLighting=new XA,this._loadTimestamp=void 0,this._clippingPlanesState=0,this._styleDirty=!1,this._pickId=void 0,this._totalMemoryUsageInBytes=0,this._frames=[],this._previousInterval=void 0,this._nextInterval=void 0,this._lastRenderedFrame=void 0,this._clockMultiplier=0,this._runningSum=0,this._runningLength=0,this._runningIndex=0,this._runningSamples=new Array(5).fill(0),this._runningAverage=0}Object.defineProperties(r_.prototype,{clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Ws.setOwner(e,this,"_clippingPlanes")}},totalMemoryUsageInBytes:{get:function(){return this._totalMemoryUsageInBytes}},boundingSphere:{get:function(){if(l(this._lastRenderedFrame))return this._lastRenderedFrame.pointCloud.boundingSphere}}});function ZEt(e){return`uniform vec4 czm_pickColor; +${e}`}function BEt(e){return function(t){return Lt(t,{czm_pickColor:function(){return e._pickId.color}})}}function wEt(){return"czm_pickColor"}r_.prototype.makeStyleDirty=function(){this._styleDirty=!0};r_.prototype._getAverageLoadTime=function(){return this._runningLength===0?.05:this._runningAverage};var XEt=new j;function lq(e){let t=e._clock,n=t.canAnimate&&t.shouldAnimate,i=t.multiplier;return n?i:0}function o_(e,t){return e._intervals.indexOf(t.start)}function WEt(e,t){let n=e._intervals,i=e._clock,o=lq(e);if(o===0)return;let r=e._getAverageLoadTime(),s=j.addSeconds(i.currentTime,r*o,XEt),a=n.indexOf(s),c=o_(e,t);return a===c&&(o>=0?++a:--a),n.get(a)}function FEt(e){let t=e._intervals,i=e._clock.currentTime,o=t.indexOf(i);return t.get(o)}function PEt(e,t,n){let i=lq(e),o=o_(e,t),r=o_(e,n);return i>=0?o>=r:o<=r}function HEe(e,t){return function(n){let i=l(n.message)?n.message:n.toString();e.frameFailed.numberOfListeners>0?e.frameFailed.raiseEvent({uri:t,message:i}):(console.log(`A frame failed to load: ${t}`),console.log(`Error: ${i}`))}}function MEt(e,t,n){let i=o_(e,t),o=e._frames,r=o[i];if(!l(r)){let s=t.data.transform,a=l(s)?X.fromArray(s):void 0,c=t.data.uri;r={pointCloud:void 0,transform:a,timestamp:Fi(),sequential:!0,ready:!1,touchedFrameNumber:n.frameNumber,uri:c},o[i]=r,Ve.fetchArrayBuffer({url:c}).then(function(d){r.pointCloud=new Yv({arrayBuffer:d,cull:!0,fragmentShaderLoaded:ZEt,uniformMapLoaded:BEt(e),pickIdLoaded:wEt})}).catch(HEe(e,c))}return r}function vEt(e,t){e._runningSum+=t,e._runningSum-=e._runningSamples[e._runningIndex],e._runningSamples[e._runningIndex]=t,e._runningLength=Math.min(e._runningLength+1,e._runningSamples.length),e._runningIndex=(e._runningIndex+1)%e._runningSamples.length,e._runningAverage=e._runningSum/e._runningLength}function NEt(e,t,n,i){t.touchedFrameNumber<i.frameNumber-1&&(t.sequential=!1);let o=t.pointCloud;if(l(o)&&!t.ready){let r=i.commandList,s=r.length;if(zEe(e,t,n,i),o.ready&&(t.ready=!0,e._totalMemoryUsageInBytes+=o.geometryByteLength,r.length=s,t.sequential)){let a=(Fi()-t.timestamp)/1e3;vEt(e,a)}}t.touchedFrameNumber=i.frameNumber}var DEt=new X;function QEt(e,t){let n=e.shading;return l(n)&&l(n.baseResolution)?n.baseResolution:l(t.boundingSphere)?Z.cbrt(t.boundingSphere.volume()/t.pointsLength):0}function UEt(e){let t=e.shading;return l(t)&&l(t.maximumAttenuation)?t.maximumAttenuation:10}var kEt=new Hf;function zEe(e,t,n,i){let o=e.shading??kEt,r=t.pointCloud,s=t.transform??X.IDENTITY;r.modelMatrix=X.multiplyTransformation(e.modelMatrix,s,DEt),r.style=e.style,r.time=n.timeSinceLoad,r.shadows=e.shadows,r.clippingPlanes=e._clippingPlanes,r.isClipped=n.isClipped,r.attenuation=o.attenuation,r.backFaceCulling=o.backFaceCulling,r.normalShading=o.normalShading,r.geometricError=QEt(e,r),r.geometricErrorScale=o.geometricErrorScale,r.maximumAttenuation=UEt(e);try{r.update(i)}catch(a){HEe(e,t.uri)(a)}t.touchedFrameNumber=i.frameNumber}function cq(e,t,n,i){let o=MEt(e,t,i);NEt(e,o,n,i)}function YEt(e){return function(t){return t.touchedFrameNumber<e.frameNumber}}function KEe(e,t){let n=e._frames,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(l(r)&&(!l(t)||t(r))){let s=r.pointCloud;r.ready&&(e._totalMemoryUsageInBytes-=s.geometryByteLength),l(s)&&s.destroy(),r===e._lastRenderedFrame&&(e._lastRenderedFrame=void 0),n[o]=void 0}}}function OEt(e,t){let n=o_(e,t),i=e._frames[n];if(l(i)&&i.ready)return i}function OEe(e,t,n,i,o){return l(n)?n.ready?!0:(cq(e,t,i,o),n.ready):!1}function HEt(e,t,n,i,o){let r,s,a,c=e._intervals,d=e._frames,u=o_(e,n),h=o_(e,t);if(u>=h){for(r=u;r>=h;--r)if(s=c.get(r),a=d[r],OEe(e,s,a,i,o))return s}else for(r=u;r<=h;++r)if(s=c.get(r),a=d[r],OEe(e,s,a,i,o))return s;return t}function zEt(e,t,n){let i=e._frames,o=i.length;for(let r=0;r<o;++r){let s=i[r];l(s)&&l(s.pointCloud)&&(s.pointCloud.clippingPlanesDirty=t,s.pointCloud.styleDirty=n)}}var EL={timeSinceLoad:0,isClipped:!1,clippingPlanesDirty:!1};r_.prototype.update=function(e){if(e.mode===re.MORPHING||!this.show)return;l(this._pickId)||(this._pickId=e.context.createPickId({primitive:this})),l(this._loadTimestamp)||(this._loadTimestamp=j.clone(e.time));let t=Math.max(j.secondsDifference(e.time,this._loadTimestamp)*1e3,0),n=this._clippingPlanes,i=0,o=!1,r=l(n)&&n.enabled;r&&(n.update(e),i=n.clippingPlanesState),this._clippingPlanesState!==i&&(this._clippingPlanesState=i,o=!0);let s=this._styleDirty;this._styleDirty=!1,(o||s)&&zEt(this,o,s),EL.timeSinceLoad=t,EL.isClipped=r;let a=this.shading,c=this._pointCloudEyeDomeLighting,d=e.commandList,u=d.length,h=this._previousInterval,p=this._nextInterval,g=FEt(this);if(!l(g))return;let f=!1,b=lq(this),x=b===0;b!==this._clockMultiplier&&(f=!0,this._clockMultiplier=b),(!l(h)||x)&&(h=g),(!l(p)||f||PEt(this,g,p))&&(p=WEt(this,g)),h=HEt(this,h,g,EL,e);let I=OEt(this,h);l(I)||(cq(this,h,EL,e),I=this._lastRenderedFrame),l(I)&&zEe(this,I,EL,e),l(p)&&cq(this,p,EL,e);let _=this;l(I)&&!l(this._lastRenderedFrame)&&e.afterRender.push(function(){return!0}),l(I)&&I!==this._lastRenderedFrame&&_.frameChanged.numberOfListeners>0&&e.afterRender.push(function(){return _.frameChanged.raiseEvent(_),!0}),this._previousInterval=h,this._nextInterval=p,this._lastRenderedFrame=I;let E=this._totalMemoryUsageInBytes,S=this.maximumMemoryUsage*1024*1024;E>S&&KEe(this,YEt(e));let G=d.length-u;l(a)&&a.attenuation&&a.eyeDomeLighting&&G>0&&c.update(e,u,a,this.boundingSphere)};r_.prototype.isDestroyed=function(){return!1};r_.prototype.destroy=function(){return KEe(this),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),me(this)};var TL=r_;function qEe(e,t){if(l(t)){let n=t.clock;l(n)&&n.getValue(e)}}function KEt(e){e._renderLoopRunning=!0;let t=0;function n(i){if(!e.isDestroyed())if(e._useDefaultRenderLoop)try{let o=e._targetFrameRate;if(!l(o))e.resize(),e.render(),requestAnimationFrame(n);else{let r=1e3/o,s=i-t;s>r&&(e.resize(),e.render(),t=i-s%r),requestAnimationFrame(n)}}catch(o){e._useDefaultRenderLoop=!1,e._renderLoopRunning=!1,e._showRenderLoopErrors&&e.showErrorPanel("An error occurred while rendering. Rendering has stopped.",void 0,o)}else e._renderLoopRunning=!1}requestAnimationFrame(n)}function $Ee(e){let t=e._useBrowserRecommendedResolution?1:window.devicePixelRatio;return t*=e._resolutionScale,l(e._scene)&&(e._scene.pixelRatio=t),t}function eTe(e){let t=e._canvas,n=t.clientWidth,i=t.clientHeight,o=$Ee(e);e._canvasClientWidth=n,e._canvasClientHeight=i,n*=o,i*=o,t.width=n,t.height=i,e._canRender=n!==0&&i!==0,e._lastDevicePixelRatio=window.devicePixelRatio}function tTe(e){let t=e._canvas,n=t.width,i=t.height;if(n!==0&&i!==0){let o=e._scene.camera.frustum;l(o.aspectRatio)?o.aspectRatio=n/i:(o.top=o.right*(i/n),o.bottom=-o.top)}}function Qo(e,t){e=Dn(e),t=t??Y.EMPTY_OBJECT;let n=document.createElement("div");n.className="cesium-widget",e.appendChild(n);let i=document.createElement("canvas"),o=Ht.supportsImageRenderingPixelated();this._supportsImageRenderingPixelated=o,o&&(i.style.imageRendering=Ht.imageRenderingValue()),i.oncontextmenu=function(){return!1},i.onselectstart=function(){return!1};function r(){i!==i.ownerDocument.activeElement&&i.ownerDocument.activeElement.blur()}(t.blurActiveElementOnCanvasFocus??!0)&&(i.addEventListener("mousedown",r),i.addEventListener("pointerdown",r)),n.appendChild(i);let a=document.createElement("div");a.className="cesium-widget-credits";let c=l(t.creditContainer)?Dn(t.creditContainer):n;c.appendChild(a);let d=l(t.creditViewport)?Dn(t.creditViewport):n,u=t.showRenderLoopErrors??!0,h=t.useBrowserRecommendedResolution??!0;this._element=n,this._container=e,this._canvas=i,this._canvasClientWidth=0,this._canvasClientHeight=0,this._lastDevicePixelRatio=0,this._creditViewport=d,this._creditContainer=c,this._innerCreditContainer=a,this._canRender=!1,this._renderLoopRunning=!1,this._showRenderLoopErrors=u,this._resolutionScale=1,this._useBrowserRecommendedResolution=h,this._forceResize=!1,this._entityView=void 0,this._clockTrackedDataSource=void 0,this._trackedEntity=void 0,this._needTrackedEntityUpdate=!1,this._zoomIsFlight=!1,this._zoomTarget=void 0,this._zoomPromise=void 0,this._zoomOptions=void 0,this._trackedEntityChanged=new Ce,this._allowDataSourcesToSuspendAnimation=!0,this._clock=l(t.clock)?t.clock:new Yh,l(t.shouldAnimate)&&(this._clock.shouldAnimate=t.shouldAnimate),eTe(this);try{let p=t.ellipsoid??ie.default,g=new Pv({canvas:i,contextOptions:t.contextOptions,creditContainer:a,creditViewport:d,ellipsoid:p,mapProjection:t.mapProjection,orderIndependentTranslucency:t.orderIndependentTranslucency,scene3DOnly:t.scene3DOnly??!1,shadows:t.shadows,mapMode2D:t.mapMode2D,requestRenderMode:t.requestRenderMode,maximumRenderTimeChange:t.maximumRenderTimeChange,depthPlaneEllipsoidOffset:t.depthPlaneEllipsoidOffset,msaaSamples:t.msaaSamples});this._scene=g,g.camera.constrainedAxis=m.UNIT_Z,$Ee(this),tTe(this);let f=t.globe;l(f)||(f=new DP(p)),f!==!1&&(g.globe=f,g.globe.shadows=t.terrainShadows??Gn.RECEIVE_ONLY);let b=t.skyBox;!l(b)&&ie.WGS84.equals(p)&&(b=vv.createEarthSkyBox()),b!==!1&&(g.skyBox=b,g.sun=new Qv,ie.WGS84.equals(p)&&(g.moon=new HP));let x=t.skyAtmosphere;!l(x)&&ie.WGS84.equals(p)&&(x=new Mv(p),x.show=t.globe!==!1&&f.show),x!==!1&&(g.skyAtmosphere=x);let I=t.baseLayer;t.globe!==!1&&I!==!1&&(l(I)||(I=is.fromWorldImagery()),g.imageryLayers.add(I)),l(t.terrainProvider)&&t.globe!==!1&&(g.terrainProvider=t.terrainProvider),l(t.terrain)&&t.globe!==!1&&g.setTerrain(t.terrain),this._screenSpaceEventHandler=new Su(i),l(t.sceneMode)&&(t.sceneMode===re.SCENE2D&&this._scene.morphTo2D(0),t.sceneMode===re.COLUMBUS_VIEW&&this._scene.morphToColumbusView(0)),this._useDefaultRenderLoop=void 0,this.useDefaultRenderLoop=t.useDefaultRenderLoop??!0,this._targetFrameRate=void 0,this.targetFrameRate=t.targetFrameRate;let _=this;this._onRenderError=function(w,F){_._useDefaultRenderLoop=!1,_._renderLoopRunning=!1,_._showRenderLoopErrors&&_.showErrorPanel("An error occurred while rendering. Rendering has stopped.",void 0,F)},g.renderError.addEventListener(this._onRenderError);let E=t.dataSources,S=!1;l(E)||(E=new SW,S=!0);let R=new fF({scene:g,dataSourceCollection:E}),G=new Lr;this._dataSourceChangedListeners={},this._automaticallyTrackDataSourceClocks=t.automaticallyTrackDataSourceClocks??!0,this._dataSourceCollection=E,this._destroyDataSourceCollection=S,this._dataSourceDisplay=R,this._eventHelper=G,this._canAnimateUpdateCallback=this._updateCanAnimate,G.add(this._clock.onTick,Qo.prototype._onTick,this),G.add(g.morphStart,Qo.prototype._clearTrackedObject,this),G.add(E.dataSourceAdded,Qo.prototype._onDataSourceAdded,this),G.add(E.dataSourceRemoved,Qo.prototype._onDataSourceRemoved,this),G.add(g.postRender,Qo.prototype._postRender,this);let B=E.length;for(let w=0;w<B;w++)this._dataSourceAdded(E,E.get(w));this._dataSourceAdded(void 0,R.defaultDataSource),G.add(E.dataSourceAdded,Qo.prototype._dataSourceAdded,this),G.add(E.dataSourceRemoved,Qo.prototype._dataSourceRemoved,this)}catch(p){throw u&&this.showErrorPanel("Error constructing CesiumWidget.",'Visit <a href="http://get.webgl.org">http://get.webgl.org</a> to verify that your web browser and hardware support WebGL. Consider trying a different web browser or updating your video drivers. Detailed error information is below:',p),p}}Object.defineProperties(Qo.prototype,{container:{get:function(){return this._container}},canvas:{get:function(){return this._canvas}},creditContainer:{get:function(){return this._creditContainer}},creditViewport:{get:function(){return this._creditViewport}},scene:{get:function(){return this._scene}},imageryLayers:{get:function(){return this._scene.imageryLayers}},terrainProvider:{get:function(){return this._scene.terrainProvider},set:function(e){this._scene.terrainProvider=e}},creditDisplay:{get:function(){return this._scene.frameState.creditDisplay}},dataSourceDisplay:{get:function(){return this._dataSourceDisplay}},entities:{get:function(){return this._dataSourceDisplay.defaultDataSource.entities}},dataSources:{get:function(){return this._dataSourceCollection}},camera:{get:function(){return this._scene.camera}},ellipsoid:{get:function(){return this._scene.ellipsoid}},clock:{get:function(){return this._clock}},screenSpaceEventHandler:{get:function(){return this._screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._targetFrameRate},set:function(e){this._targetFrameRate=e}},useDefaultRenderLoop:{get:function(){return this._useDefaultRenderLoop},set:function(e){this._useDefaultRenderLoop!==e&&(this._useDefaultRenderLoop=e,e&&!this._renderLoopRunning&&KEt(this))}},resolutionScale:{get:function(){return this._resolutionScale},set:function(e){this._resolutionScale!==e&&(this._resolutionScale=e,this._forceResize=!0)}},useBrowserRecommendedResolution:{get:function(){return this._useBrowserRecommendedResolution},set:function(e){this._useBrowserRecommendedResolution!==e&&(this._useBrowserRecommendedResolution=e,this._forceResize=!0)}},allowDataSourcesToSuspendAnimation:{get:function(){return this._allowDataSourcesToSuspendAnimation},set:function(e){this._allowDataSourcesToSuspendAnimation=e}},trackedEntity:{get:function(){return this._trackedEntity},set:function(e){if(this._trackedEntity!==e){this._trackedEntity=e,dq(this);let t=this.scene,n=t.mode;!l(e)||!l(e.position)?(this._needTrackedEntityUpdate=!1,(n===re.COLUMBUS_VIEW||n===re.SCENE2D)&&(t.screenSpaceCameraController.enableTranslate=!0),(n===re.COLUMBUS_VIEW||n===re.SCENE3D)&&(t.screenSpaceCameraController.enableTilt=!0),this._entityView=void 0,this.camera.lookAtTransform(X.IDENTITY)):this._needTrackedEntityUpdate=!0,this._trackedEntityChanged.raiseEvent(e),this.scene.requestRender()}}},trackedEntityChanged:{get:function(){return this._trackedEntityChanged}},clockTrackedDataSource:{get:function(){return this._clockTrackedDataSource},set:function(e){this._clockTrackedDataSource!==e&&(this._clockTrackedDataSource=e,qEe(this.clock,e))}}});Qo.prototype.showErrorPanel=function(e,t,n){let i=this._element,o=document.createElement("div");o.className="cesium-widget-errorPanel";let r=document.createElement("div");r.className="cesium-widget-errorPanel-content",o.appendChild(r);let s=document.createElement("div");s.className="cesium-widget-errorPanel-header",s.appendChild(document.createTextNode(e)),r.appendChild(s);let a=document.createElement("div");a.className="cesium-widget-errorPanel-scroll",r.appendChild(a);function c(){a.style.maxHeight=`${Math.max(Math.round(i.clientHeight*.9-100),30)}px`}c(),l(window.addEventListener)&&window.addEventListener("resize",c,!1);let d=l(t),u=l(n);if(d||u){let g=document.createElement("div");if(g.className="cesium-widget-errorPanel-message",a.appendChild(g),u){let f=Kf(n);d||(typeof n=="string"&&(n=new Error(n)),t=Kf({name:n.name,message:n.message}),f=n.stack),typeof console<"u"&&console.error(`${e} +${t} +${f}`);let b=document.createElement("div");b.className="cesium-widget-errorPanel-message-details collapsed";let x=document.createElement("span");x.className="cesium-widget-errorPanel-more-details",x.appendChild(document.createTextNode("See more...")),b.appendChild(x),b.onclick=function(I){b.removeChild(x),b.appendChild(document.createTextNode(f)),b.className="cesium-widget-errorPanel-message-details",r.className="cesium-widget-errorPanel-content expanded",b.onclick=void 0},a.appendChild(b)}g.innerHTML=`<p>${t}</p>`}let h=document.createElement("div");h.className="cesium-widget-errorPanel-buttonPanel",r.appendChild(h);let p=document.createElement("button");p.setAttribute("type","button"),p.className="cesium-button",p.appendChild(document.createTextNode("OK")),p.onclick=function(){l(c)&&l(window.removeEventListener)&&window.removeEventListener("resize",c,!1),i.removeChild(o)},h.appendChild(p),i.appendChild(o)};Qo.prototype.isDestroyed=function(){return!1};Qo.prototype.destroy=function(){let e=this.dataSources,t=e.length;for(let n=0;n<t;n++)this._dataSourceRemoved(e,e.get(n));this._dataSourceRemoved(void 0,this._dataSourceDisplay.defaultDataSource),this._dataSourceDisplay=this._dataSourceDisplay.destroy(),l(this._scene)&&(this._scene.renderError.removeEventListener(this._onRenderError),this._scene=this._scene.destroy()),this._container.removeChild(this._element),this._creditContainer.removeChild(this._innerCreditContainer),this._eventHelper.removeAll(),this._destroyDataSourceCollection&&(this._dataSourceCollection=this._dataSourceCollection.destroy()),me(this)};Qo.prototype.resize=function(){let e=this._canvas;!this._forceResize&&this._canvasClientWidth===e.clientWidth&&this._canvasClientHeight===e.clientHeight&&this._lastDevicePixelRatio===window.devicePixelRatio||(this._forceResize=!1,eTe(this),tTe(this),this._scene.requestRender())};Qo.prototype.render=function(){if(this._canRender){this._scene.initializeFrame();let e=this._clock.tick();this._scene.render(e)}else this._clock.tick()};Qo.prototype._dataSourceAdded=function(e,t){t.entities.collectionChanged.addEventListener(Qo.prototype._onEntityCollectionChanged,this)};Qo.prototype._dataSourceRemoved=function(e,t){let n=t.entities;n.collectionChanged.removeEventListener(Qo.prototype._onEntityCollectionChanged,this),l(this.trackedEntity)&&n.getById(this.trackedEntity.id)===this.trackedEntity&&(this.trackedEntity=void 0)};Qo.prototype._updateCanAnimate=function(e){this._clock.canAnimate=e};var JEt=new ue;Qo.prototype._onTick=function(e){let t=e.currentTime,n=this._dataSourceDisplay.update(t);this._allowDataSourcesToSuspendAnimation&&this._canAnimateUpdateCallback(n);let i=this._entityView;if(l(i)){let o=this._trackedEntity;this._dataSourceDisplay.getBoundingSphere(o,!1,i.boundingSphere??JEt)===At.DONE&&i.update(t)}};Qo.prototype._onEntityCollectionChanged=function(e,t,n){let i=n.length;for(let o=0;o<i;o++){let r=n[o];this.trackedEntity===r&&(this.trackedEntity=void 0)}};Qo.prototype._clearTrackedObject=function(){this.trackedEntity=void 0};Qo.prototype._onDataSourceChanged=function(e){this.clockTrackedDataSource===e&&qEe(this.clock,e)};Qo.prototype._onDataSourceAdded=function(e,t){this._automaticallyTrackDataSourceClocks&&(this.clockTrackedDataSource=t);let n=t.entities.id,i=this._eventHelper.add(t.changedEvent,Qo.prototype._onDataSourceChanged,this);this._dataSourceChangedListeners[n]=i};Qo.prototype._onDataSourceRemoved=function(e,t){let n=this.clockTrackedDataSource===t,i=t.entities.id;if(this._dataSourceChangedListeners[i](),this._dataSourceChangedListeners[i]=void 0,n){let o=e.length;this._automaticallyTrackDataSourceClocks&&o>0?this.clockTrackedDataSource=e.get(o-1):this.clockTrackedDataSource=void 0}};Qo.prototype.zoomTo=function(e,t){return nTe(this,e,{offset:t},!1)};Qo.prototype.flyTo=function(e,t){return nTe(this,e,t,!0)};function nTe(e,t,n,i){dq(e);let o=new Promise(r=>{e._completeZoom=function(s){r(s)}});return e._zoomPromise=o,e._zoomIsFlight=i,e._zoomOptions=n,Promise.resolve(t).then(function(r){if(e._zoomPromise===o){if(r instanceof is){let s;l(r.imageryProvider)?s=Promise.resolve(r.getImageryRectangle()):s=new Promise(a=>{let c=r.readyEvent.addEventListener(()=>{c(),a(r.getImageryRectangle())})}),s.then(function(a){return EI(a,e.scene)}).then(function(a){e._zoomPromise===o&&(e._zoomTarget=a)});return}if(r instanceof Ps||r instanceof TL||r instanceof by){e._zoomTarget=r;return}if(r.isLoading&&l(r.loadingEvent)){let s=r.loadingEvent.addEventListener(function(){s(),e._zoomPromise===o&&(e._zoomTarget=r.entities.values.slice(0))});return}if(Array.isArray(r)){e._zoomTarget=r.slice(0);return}r=r.values??r,l(r.entities)&&(r=r.entities.values),Array.isArray(r)?e._zoomTarget=r.slice(0):e._zoomTarget=[r]}}),e.scene.requestRender(),o}function Ov(e){e._zoomPromise=void 0,e._zoomTarget=void 0,e._zoomOptions=void 0}function dq(e){let t=e._zoomPromise;l(t)&&(Ov(e),e._completeZoom(!1))}Qo.prototype._postRender=function(){jEt(this),qEt(this)};var JEe=new ue;function jEt(e){let t=e._zoomTarget;if(!l(t)||e.scene.mode===re.MORPHING)return;let n=e.scene,i=n.camera,o=e._zoomOptions??{},r;function s(u){l(o.offset)||(o.offset=new Vm(0,-.5,u.radius)),r={offset:o.offset,duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)}},e._zoomIsFlight?i.flyToBoundingSphere(t.boundingSphere,r):(i.viewBoundingSphere(u,o.offset),i.lookAtTransform(X.IDENTITY),e._completeZoom(!0)),Ov(e)}if(t instanceof TL){if(l(t.boundingSphere)){s(t.boundingSphere);return}let u=t.frameChanged.addEventListener(function(h){s(h.boundingSphere),u()});return}if(t instanceof Ps||t instanceof by){s(t.boundingSphere);return}if(t instanceof ge){r={destination:n.ellipsoid.cartographicToCartesian(t),duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)}},e._zoomIsFlight?i.flyTo(r):(i.setView(r),e._completeZoom(!0)),Ov(e);return}let a=t,c=[];for(let u=0,h=a.length;u<h;u++){let p=e._dataSourceDisplay.getBoundingSphere(a[u],!1,JEe);if(p===At.PENDING)return;p!==At.FAILED&&c.push(ue.clone(JEe))}if(c.length===0){dq(e);return}e.trackedEntity=void 0;let d=ue.fromBoundingSpheres(c);e._zoomIsFlight?(Ov(e),i.flyToBoundingSphere(d,{duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)},offset:o.offset})):(i.viewBoundingSphere(d,o.offset),i.lookAtTransform(X.IDENTITY),Ov(e),e._completeZoom(!0))}var jEe=new ue;function qEt(e){if(!e._needTrackedEntityUpdate)return;let t=e._trackedEntity,n=e.clock.currentTime,i=z.getValueOrUndefined(t.position,n);if(!l(i))return;let o=e.scene,r=e._dataSourceDisplay.getBoundingSphere(t,!1,jEe);if(r===At.PENDING)return;let s=o.mode;(s===re.COLUMBUS_VIEW||s===re.SCENE2D)&&(o.screenSpaceCameraController.enableTranslate=!1),(s===re.COLUMBUS_VIEW||s===re.SCENE3D)&&(o.screenSpaceCameraController.enableTilt=!1);let a=r!==At.FAILED?jEe:void 0;e._entityView=new AF(t,o,o.ellipsoid),e._entityView.update(n,a),e._needTrackedEntityUpdate=!1}var Hv=Qo;var vqi=y(C(),1);var bqi=y(C(),1);function RL(e,t){this._tilingScheme=e,this._maximumLevel=t,this._rootNodes=[]}var s_=new le;function $Et(e,t,n,i){let o=i.length;for(let r=0;r<o;++r){let s=i[r];if(s.x===t&&s.y===n&&s.level===e)return!0}return!1}RL.prototype.addAvailableTileRange=function(e,t,n,i,o){let r=this._tilingScheme,s=this._rootNodes;if(e===0)for(let p=n;p<=o;++p)for(let g=t;g<=i;++g)$Et(e,g,p,s)||s.push(new SL(r,void 0,0,g,p));r.tileXYToRectangle(t,n,e,s_);let a=s_.west,c=s_.north;r.tileXYToRectangle(i,o,e,s_);let d=s_.east,u=s_.south,h=new oTt(e,a,u,d,c);for(let p=0;p<s.length;++p){let g=s[p];uq(g.extent,h)&&rTt(this._maximumLevel,g,h)}};RL.prototype.computeMaximumLevelAtPosition=function(e){let t;for(let n=0;n<this._rootNodes.length;++n){let i=this._rootNodes[n];if(LL(i.extent,e)){t=i;break}}return l(t)?zv(void 0,t,e):-1};var eTt=[],tTt=[],nTt=new le,iTt=new le;RL.prototype.computeBestAvailableLevelOverRectangle=function(e){let t=eTt;t.length=0,e.east<e.west?(t.push(le.fromRadians(-Math.PI,e.south,e.east,e.north,nTt)),t.push(le.fromRadians(e.west,e.south,Math.PI,e.north,iTt))):t.push(e);let n=tTt;n.length=0;let i;for(i=0;i<this._rootNodes.length;++i)Kv(n,this._rootNodes[i],t);for(i=n.length-1;i>=0;--i)if(l(n[i])&&n[i].length===0)return i;return 0};var iTe=new ge;RL.prototype.isTileAvailable=function(e,t,n){let i=this._tilingScheme.tileXYToRectangle(t,n,e,s_);return le.center(i,iTe),this.computeMaximumLevelAtPosition(iTe)>=e};RL.prototype.computeChildMaskForTile=function(e,t,n){let i=e+1;if(i>=this._maximumLevel)return 0;let o=0;return o|=this.isTileAvailable(i,2*t,2*n+1)?1:0,o|=this.isTileAvailable(i,2*t+1,2*n+1)?2:0,o|=this.isTileAvailable(i,2*t,2*n)?4:0,o|=this.isTileAvailable(i,2*t+1,2*n)?8:0,o};function SL(e,t,n,i,o){this.tilingScheme=e,this.parent=t,this.level=n,this.x=i,this.y=o,this.extent=e.tileXYToRectangle(i,o,n),this.rectangles=[],this._sw=void 0,this._se=void 0,this._nw=void 0,this._ne=void 0}Object.defineProperties(SL.prototype,{nw:{get:function(){return this._nw||(this._nw=new SL(this.tilingScheme,this,this.level+1,this.x*2,this.y*2)),this._nw}},ne:{get:function(){return this._ne||(this._ne=new SL(this.tilingScheme,this,this.level+1,this.x*2+1,this.y*2)),this._ne}},sw:{get:function(){return this._sw||(this._sw=new SL(this.tilingScheme,this,this.level+1,this.x*2,this.y*2+1)),this._sw}},se:{get:function(){return this._se||(this._se=new SL(this.tilingScheme,this,this.level+1,this.x*2+1,this.y*2+1)),this._se}}});function oTt(e,t,n,i,o){this.level=e,this.west=t,this.south=n,this.east=i,this.north=o}function uq(e,t){let n=Math.max(e.west,t.west),i=Math.max(e.south,t.south),o=Math.min(e.east,t.east),r=Math.min(e.north,t.north);return i<r&&n<o}function rTt(e,t,n){for(;t.level<e;)if(BY(t.nw.extent,n))t=t.nw;else if(BY(t.ne.extent,n))t=t.ne;else if(BY(t.sw.extent,n))t=t.sw;else if(BY(t.se.extent,n))t=t.se;else break;if(t.rectangles.length===0||t.rectangles[t.rectangles.length-1].level<=n.level)t.rectangles.push(n);else{let i=Yo(t.rectangles,n.level,sTt);i<0&&(i=~i),t.rectangles.splice(i,0,n)}}function sTt(e,t){return e.level-t}function BY(e,t){return t.west>=e.west&&t.east<=e.east&&t.south>=e.south&&t.north<=e.north}function LL(e,t){return t.longitude>=e.west&&t.longitude<=e.east&&t.latitude>=e.south&&t.latitude<=e.north}function zv(e,t,n){let i=0,o=!1;for(;!o;){let r=t._nw&&LL(t._nw.extent,n),s=t._ne&&LL(t._ne.extent,n),a=t._sw&&LL(t._sw.extent,n),c=t._se&&LL(t._se.extent,n);if(r+s+a+c>1){r&&(i=Math.max(i,zv(t,t._nw,n))),s&&(i=Math.max(i,zv(t,t._ne,n))),a&&(i=Math.max(i,zv(t,t._sw,n))),c&&(i=Math.max(i,zv(t,t._se,n)));break}else r?t=t._nw:s?t=t._ne:a?t=t._sw:c?t=t._se:o=!0}for(;t!==e;){let r=t.rectangles;for(let s=r.length-1;s>=0&&r[s].level>i;--s){let a=r[s];LL(a,n)&&(i=a.level)}t=t.parent}return i}function Kv(e,t,n){if(!t)return;let i,o=!1;for(i=0;i<n.length;++i)o=o||uq(t.extent,n[i]);if(!o)return;let r=t.rectangles;for(i=0;i<r.length;++i){let s=r[i];e[s.level]||(e[s.level]=n),e[s.level]=aTt(e[s.level],s)}Kv(e,t._nw,n),Kv(e,t._ne,n),Kv(e,t._sw,n),Kv(e,t._se,n)}function aTt(e,t){let n=[];for(let i=0;i<e.length;++i){let o=e[i];uq(o,t)?(o.west<t.west&&n.push(new le(o.west,o.south,t.west,o.north)),o.east>t.east&&n.push(new le(t.east,o.south,o.east,o.north)),o.south<t.south&&n.push(new le(Math.max(t.west,o.west),o.south,Math.min(t.east,o.east),t.south)),o.north>t.north&&n.push(new le(Math.max(t.west,o.west),t.north,Math.min(t.east,o.east),o.north))):n.push(o)}return n}var bf=RL;var cTt=15;function oTe(e){this.ellipsoid=e.ellipsoid??ie.default,this.credit=void 0,this.tilingScheme=void 0,this.height=void 0,this.width=void 0,this.encoding=void 0,this.lodCount=void 0,this.hasAvailability=!1,this.tilesAvailable=void 0,this.tilesAvailabilityLoaded=void 0,this.levelZeroMaximumGeometricError=void 0,this.terrainDataStructure=void 0}oTe.prototype.build=function(e){e._credit=this.credit,e._tilingScheme=this.tilingScheme,e._height=this.height,e._width=this.width,e._encoding=this.encoding,e._lodCount=this.lodCount,e._hasAvailability=this.hasAvailability,e._tilesAvailable=this.tilesAvailable,e._tilesAvailabilityLoaded=this.tilesAvailabilityLoaded,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._terrainDataStructure=this.terrainDataStructure};function lTt(e,t){let n=t.copyrightText;l(n)&&(e.credit=new Gt(n));let i=t.spatialReference,o=i.latestWkid??i.wkid,r=t.extent,s={ellipsoid:e.ellipsoid};if(o===4326)s.rectangle=le.fromDegrees(r.xmin,r.ymin,r.xmax,r.ymax),e.tilingScheme=new ao(s);else if(o===3857){let d=Math.PI*e.ellipsoid.maximumRadius;t.extent.xmax>d&&(t.extent.xmax=d),t.extent.ymax>d&&(t.extent.ymax=d),t.extent.xmin<-d&&(t.extent.xmin=-d),t.extent.ymin<-d&&(t.extent.ymin=-d),s.rectangleSouthwestInMeters=new D(r.xmin,r.ymin),s.rectangleNortheastInMeters=new D(r.xmax,r.ymax),e.tilingScheme=new _s(s)}else throw new de("Invalid spatial reference");let a=t.tileInfo;if(!l(a))throw new de("tileInfo is required");e.width=a.rows+1,e.height=a.cols+1,e.encoding=a.format==="LERC"?Xm.LERC:Xm.NONE,e.lodCount=a.lods.length-1,(e.hasAvailability=t.capabilities.indexOf("Tilemap")!==-1)&&(e.tilesAvailable=new bf(e.tilingScheme,e.lodCount),e.tilesAvailable.addAvailableTileRange(0,0,0,e.tilingScheme.getNumberOfXTilesAtLevel(0),e.tilingScheme.getNumberOfYTilesAtLevel(0)),e.tilesAvailabilityLoaded=new bf(e.tilingScheme,e.lodCount)),e.levelZeroMaximumGeometricError=Es.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.tilingScheme.ellipsoid,e.width,e.tilingScheme.getNumberOfXTilesAtLevel(0)),t.bandCount>1&&console.log("ArcGISTiledElevationTerrainProvider: Terrain data has more than 1 band. Using the first one."),l(t.minValues)&&l(t.maxValues)?e.terrainDataStructure={elementMultiplier:1,lowestEncodedHeight:t.minValues[0],highestEncodedHeight:t.maxValues[0]}:e.terrainDataStructure={elementMultiplier:1}}async function dTt(e,t,n){try{let i=await t.fetchJson();lTt(e,i)}catch(i){let o=`An error occurred while accessing ${t}.`;throw vo.reportError(void 0,n,l(n)?n._errorEvent:void 0,o),i}}function Cy(e){e=e??Y.EMPTY_OBJECT,this._resource=void 0,this._credit=void 0,this._tilingScheme=void 0,this._levelZeroMaximumGeometricError=void 0,this._maxLevel=void 0,this._terrainDataStructure=void 0,this._width=void 0,this._height=void 0,this._encoding=void 0,this._lodCount=void 0,this._hasAvailability=!1,this._tilesAvailable=void 0,this._tilesAvailabilityLoaded=void 0,this._availableCache={},this._errorEvent=new Ce}Object.defineProperties(Cy.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){return this._tilesAvailable}}});Cy.fromUrl=async function(e,t){t=t??Y.EMPTY_OBJECT,e=await Promise.resolve(e);let n=Ve.createIfNeeded(e);n.appendForwardSlash(),l(t.token)&&(n=n.getDerivedResource({queryParameters:{token:t.token}}));let i=n.getDerivedResource({queryParameters:{f:"pjson"}}),o=new oTe(t);await dTt(o,i);let r=new Cy(t);return o.build(r),r._resource=n,r};Cy.prototype.requestTileGeometry=function(e,t,n,i){let o=this._resource.getDerivedResource({url:`tile/${n}/${t}/${e}`,request:i}),r=this._hasAvailability,s=Promise.resolve(!0),a;if(r&&!l(mq(this,n+1,e*2,t*2))){let h=rTe(this,n+1,e*2,t*2);s=h.promise,a=h.request}let c=o.fetchArrayBuffer();if(!l(c)||!l(s))return;let d=this,u=this._tilesAvailable;return Promise.all([c,s]).then(function(h){return new yc({buffer:h[0],width:d._width,height:d._height,childTileMask:r?u.computeChildMaskForTile(n,e,t):cTt,structure:d._terrainDataStructure,encoding:d._encoding})}).catch(async function(h){if(l(a)&&a.state===mi.CANCELLED){i.cancel();try{await i.deferred?.promise}catch{}return i.state=mi.CANCELLED,Promise.reject(h)}return Promise.reject(h)})};function mq(e,t,n,i){if(!e._hasAvailability)return;let o=e._tilesAvailabilityLoaded,r=e._tilesAvailable;if(t>e._lodCount)return!1;if(r.isTileAvailable(t,n,i))return!0;if(o.isTileAvailable(t,n,i))return!1}Cy.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};Cy.prototype.getTileDataAvailable=function(e,t,n){if(!this._hasAvailability)return;let i=mq(this,n,e,t);if(l(i))return i;rTe(this,n,e,t)};Cy.prototype.loadTileDataAvailability=function(e,t,n){};function uTt(e,t,n,i){let o=t-1,r=n-1,s=i[e.y*t+e.x],a=[],c={startX:e.x,startY:e.y,endX:0,endY:0},d=new D(e.x+1,e.y+1),u=!1,h=!1;for(;!(u&&h);){let p=d.x,g=h?d.y+1:d.y;if(!u){for(let f=e.y;f<g;++f)if(i[f*t+d.x]!==s){u=!0;break}u?(a.push(new D(d.x,e.y)),--d.x,--p,c.endX=d.x):d.x===o?(c.endX=d.x,u=!0):++d.x}if(!h){let f=d.y*t;for(let b=e.x;b<=p;++b)if(i[f+b]!==s){h=!0;break}h?(a.push(new D(e.x,d.y)),--d.y,c.endY=d.y):d.y===r?(c.endY=d.y,h=!0):++d.y}}return{endingIndices:a,range:c,value:s}}function mTt(e,t,n,i,o){let r=[];if(o.every(function(c){return c===o[0]}))return o[0]===1&&r.push({startX:e,startY:t,endX:e+n-1,endY:t+i-1}),r;let a=[new D(0,0)];for(;a.length>0;){let c=a.pop(),d=uTt(c,n,i,o);if(d.value===1){let h=d.range;h.startX+=e,h.endX+=e,h.startY+=t,h.endY+=t,r.push(h)}let u=d.endingIndices;u.length>0&&(a=a.concat(u))}return r}function rTe(e,t,n,i){if(!e._hasAvailability)return{};let o=Math.floor(n/128)*128,r=Math.floor(i/128)*128,s=Math.min(1<<t,128),a=`tilemap/${t}/${r}/${o}/${s}/${s}`,c=e._availableCache;if(l(c[a]))return c[a];let d=new sr({throttle:!1,throttleByServer:!0,type:Zs.TERRAIN}),h=e._resource.getDerivedResource({url:a,request:d}).fetchJson();return l(h)?(h=h.then(function(p){let g=mTt(o,r,s,s,p.data);e._tilesAvailabilityLoaded.addAvailableTileRange(t,o,r,o+s,r+s);let f=e._tilesAvailable;for(let b=0;b<g.length;++b){let x=g[b];f.addAvailableTileRange(t,x.startX,x.startY,x.endX,x.endY)}return mq(e,t,n,i)}),c[a]={promise:h,request:d},h=h.finally(function(p){return delete c[a],p}),{promise:h,request:d}):{}}var hq=Cy;var Oqi=y(C(),1);var sTe="https://dev.virtualearth.net/REST/v1/Locations";function fq(e){e=e??Y.EMPTY_OBJECT;let t=e.key;this._key=t;let n={key:t};l(e.culture)&&(n.culture=e.culture),this._resource=new Ve({url:sTe,queryParameters:n}),this._credit=new Gt('<img src="http://dev.virtualearth.net/Branding/logo_powered_by.png"/>',!1)}Object.defineProperties(fq.prototype,{url:{get:function(){return sTe}},key:{get:function(){return this._key}},credit:{get:function(){return this._credit}}});fq.prototype.geocode=async function(e){return this._resource.getDerivedResource({queryParameters:{query:e}}).fetchJsonp("jsonp").then(function(n){return n.resourceSets.length===0?[]:n.resourceSets[0].resources.map(function(o){let r=o.bbox,s=r[0],a=r[1],c=r[2],d=r[3];return{displayName:o.name,destination:le.fromDegrees(a,s,d,c)}})})};var pq=fq;var Kqi=y(C(),1);function Aq(){}Object.defineProperties(Aq.prototype,{credit:{get:function(){}}});Aq.prototype.geocode=function(e){let t=e.match(/[^\s,\n]+/g);if(t.length===2||t.length===3){let n=+t[0],i=+t[1],o=t.length===3?+t[2]:300;if(isNaN(n)&&isNaN(i)){let r=/^(\d+.?\d*)([nsew])/i;for(let s=0;s<t.length;++s){let a=t[s].match(r);r.test(t[s])&&a.length===3&&(/^[ns]/i.test(a[2])?i=/^[n]/i.test(a[2])?+a[1]:-a[1]:/^[ew]/i.test(a[2])&&(n=/^[e]/i.test(a[2])?+a[1]:-a[1]))}}if(!isNaN(n)&&!isNaN(i)&&!isNaN(o)){let r={displayName:e,destination:m.fromDegrees(n,i,o)};return Promise.resolve([r])}}return Promise.resolve([])};var gq=Aq;var o$i=y(C(),1);var hTt=new ce,aTe=new m,VL=new m;function fTt(e){let t=e.points,n=e.times;if(t.length<3){let i=n[0],o=1/(n[1]-i),r=t[0],s=t[1];return function(a,c){l(c)||(c=new m);let d=(a-i)*o;return m.lerp(r,s,d,c)}}return function(i,o){l(o)||(o=new m);let r=e._lastTimeIndex=e.findTimeInterval(i,e._lastTimeIndex),s=(i-n[r])/(n[r+1]-n[r]),a=hTt;a.z=s,a.y=s*s,a.x=a.y*s,a.w=1;let c,d,u,h,p;return r===0?(c=t[0],d=t[1],u=e.firstTangent,h=m.subtract(t[2],c,aTe),m.multiplyByScalar(h,.5,h),p=X.multiplyByVector(o0.hermiteCoefficientMatrix,a,a)):r===t.length-2?(c=t[r],d=t[r+1],h=e.lastTangent,u=m.subtract(d,t[r-1],aTe),m.multiplyByScalar(u,.5,u),p=X.multiplyByVector(o0.hermiteCoefficientMatrix,a,a)):(c=t[r-1],d=t[r],u=t[r+1],h=t[r+2],p=X.multiplyByVector(xy.catmullRomCoefficientMatrix,a,a)),o=m.multiplyByScalar(c,p.x,o),m.multiplyByScalar(d,p.y,VL),m.add(o,VL,o),m.multiplyByScalar(u,p.z,VL),m.add(o,VL,o),m.multiplyByScalar(h,p.w,VL),m.add(o,VL,o)}}var pTt=new m,ATt=new m;function xy(e){e=e??Y.EMPTY_OBJECT;let t=e.points,n=e.times,i=e.firstTangent,o=e.lastTangent;if(t.length>2&&(l(i)||(i=pTt,m.multiplyByScalar(t[1],2,i),m.subtract(i,t[2],i),m.subtract(i,t[0],i),m.multiplyByScalar(i,.5,i)),!l(o))){let r=t.length-1;o=ATt,m.multiplyByScalar(t[r-1],2,o),m.subtract(t[r],o,o),m.add(o,t[r-2],o),m.multiplyByScalar(o,.5,o)}this._times=n,this._points=t,this._firstTangent=m.clone(i),this._lastTangent=m.clone(o),this._evaluateFunction=fTt(this),this._lastTimeIndex=0}Object.defineProperties(xy.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}},firstTangent:{get:function(){return this._firstTangent}},lastTangent:{get:function(){return this._lastTangent}}});xy.catmullRomCoefficientMatrix=new X(-.5,1,-.5,0,1.5,-2.5,0,1,-1.5,2,.5,0,.5,-.5,0,0);xy.prototype.findTimeInterval=yo.prototype.findTimeInterval;xy.prototype.wrapTime=yo.prototype.wrapTime;xy.prototype.clampTime=yo.prototype.clampTime;xy.prototype.evaluate=function(e,t){return this._evaluateFunction(e,t)};var bq=xy;var K$i=y(C(),1);var E$i=y(C(),1);var l$i=y(C(),1);var wY={};wY.clipTriangleAtAxisAlignedThreshold=function(e,t,n,i,o,r){l(r)?r.length=0:r=[];let s,a,c;t?(s=n<e,a=i<e,c=o<e):(s=n>e,a=i>e,c=o>e);let d=s+a+c,u,h,p,g,f,b;return d===1?s?(u=(e-n)/(i-n),h=(e-n)/(o-n),r.push(1),r.push(2),h!==1&&(r.push(-1),r.push(0),r.push(2),r.push(h)),u!==1&&(r.push(-1),r.push(0),r.push(1),r.push(u))):a?(p=(e-i)/(o-i),g=(e-i)/(n-i),r.push(2),r.push(0),g!==1&&(r.push(-1),r.push(1),r.push(0),r.push(g)),p!==1&&(r.push(-1),r.push(1),r.push(2),r.push(p))):c&&(f=(e-o)/(n-o),b=(e-o)/(i-o),r.push(0),r.push(1),b!==1&&(r.push(-1),r.push(2),r.push(1),r.push(b)),f!==1&&(r.push(-1),r.push(2),r.push(0),r.push(f))):d===2?!s&&n!==e?(g=(e-i)/(n-i),f=(e-o)/(n-o),r.push(0),r.push(-1),r.push(1),r.push(0),r.push(g),r.push(-1),r.push(2),r.push(0),r.push(f)):!a&&i!==e?(b=(e-o)/(i-o),u=(e-n)/(i-n),r.push(1),r.push(-1),r.push(2),r.push(1),r.push(b),r.push(-1),r.push(0),r.push(1),r.push(u)):!c&&o!==e&&(h=(e-n)/(o-n),p=(e-i)/(o-i),r.push(2),r.push(-1),r.push(0),r.push(2),r.push(h),r.push(-1),r.push(1),r.push(2),r.push(p)):d!==3&&(r.push(0),r.push(1),r.push(2)),r};wY.computeBarycentricCoordinates=function(e,t,n,i,o,r,s,a,c){let d=n-s,u=s-o,h=r-a,p=i-a,g=1/(h*d+u*p),f=t-a,b=e-s,x=(h*b+u*f)*g,I=(-p*b+d*f)*g,_=1-x-I;return l(c)?(c.x=x,c.y=I,c.z=_,c):new m(x,I,_)};wY.computeLineSegmentLineSegmentIntersection=function(e,t,n,i,o,r,s,a,c){let d=(s-o)*(t-r)-(a-r)*(e-o),u=(n-e)*(t-r)-(i-t)*(e-o),h=(a-r)*(n-e)-(s-o)*(i-t);if(h===0)return;let p=d/h,g=u/h;if(p>=0&&p<=1&&g>=0&&g<=1)return l(c)||(c=new D),c.x=e+p*(n-e),c.y=t+p*(i-t),c};var tb=wY;function Iy(e){this._quantizedVertices=e.quantizedVertices,this._encodedNormals=e.encodedNormals,this._indices=e.indices,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._boundingSphere=e.boundingSphere,this._orientedBoundingBox=e.orientedBoundingBox,this._horizonOcclusionPoint=e.horizonOcclusionPoint,this._credits=e.credits;let t=this._quantizedVertices.length/3,n=this._uValues=this._quantizedVertices.subarray(0,t),i=this._vValues=this._quantizedVertices.subarray(t,2*t);this._heightValues=this._quantizedVertices.subarray(2*t,3*t);function o(s,a){return i[s]-i[a]}function r(s,a){return n[s]-n[a]}this._westIndices=WY(e.westIndices,o,t),this._southIndices=WY(e.southIndices,r,t),this._eastIndices=WY(e.eastIndices,o,t),this._northIndices=WY(e.northIndices,r,t),this._westSkirtHeight=e.westSkirtHeight,this._southSkirtHeight=e.southSkirtHeight,this._eastSkirtHeight=e.eastSkirtHeight,this._northSkirtHeight=e.northSkirtHeight,this._childTileMask=e.childTileMask??15,this._createdByUpsampling=e.createdByUpsampling??!1,this._waterMask=e.waterMask,this._mesh=void 0}Object.defineProperties(Iy.prototype,{credits:{get:function(){return this._credits}},waterMask:{get:function(){return this._waterMask}},childTileMask:{get:function(){return this._childTileMask}},canUpsample:{get:function(){return l(this._mesh)}}});var XY=[];function WY(e,t,n){XY.length=e.length;let i=!1;for(let o=0,r=e.length;o<r;++o)XY[o]=e[o],i=i||o>0&&t(e[o-1],e[o])>0;return i?(XY.sort(t),Me.createTypedArray(n,XY)):e}var cTe="createVerticesFromQuantizedTerrainMesh",gTt=new hi(cTe),bTt=new hi(cTe,df.maximumAsynchronousTasks);Iy.prototype.createMesh=function(e){e=e??Y.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid,d=t.tileXYToRectangle(n,i,o),h=(a?bTt:gTt).scheduleTask({minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,quantizedVertices:this._quantizedVertices,octEncodedNormals:this._encodedNormals,includeWebMercatorT:!0,indices:this._indices,westIndices:this._westIndices,southIndices:this._southIndices,eastIndices:this._eastIndices,northIndices:this._northIndices,westSkirtHeight:this._westSkirtHeight,southSkirtHeight:this._southSkirtHeight,eastSkirtHeight:this._eastSkirtHeight,northSkirtHeight:this._northSkirtHeight,rectangle:d,relativeToCenter:this._boundingSphere.center,ellipsoid:c,exaggeration:r,exaggerationRelativeHeight:s});if(!l(h))return;let p=this;return Promise.resolve(h).then(function(g){let f=p._quantizedVertices.length/3,b=f+p._westIndices.length+p._southIndices.length+p._eastIndices.length+p._northIndices.length,x=Me.createTypedArray(b,g.indices),I=new Float32Array(g.vertices),_=g.center,E=g.minimumHeight,S=g.maximumHeight,R=p._boundingSphere,G=p._orientedBoundingBox,B=m.clone(g.occludeePointInScaledSpace)??p._horizonOcclusionPoint,w=g.vertexStride,F=Kc.clone(g.encoding);return p._mesh=new Fm(_,I,x,g.indexCountWithoutSkirts,f,E,S,R,B,w,G,F,g.westIndicesSouthToNorth,g.southIndicesEastToWest,g.eastIndicesNorthToSouth,g.northIndicesWestToEast),p._quantizedVertices=void 0,p._encodedNormals=void 0,p._indices=void 0,p._uValues=void 0,p._vValues=void 0,p._heightValues=void 0,p._westIndices=void 0,p._southIndices=void 0,p._eastIndices=void 0,p._northIndices=void 0,p._mesh})};var yTt=new hi("upsampleQuantizedTerrainMesh",df.maximumAsynchronousTasks);Iy.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(this._mesh))return;let c=t*2!==o,d=n*2===r,u=e.ellipsoid,h=e.tileXYToRectangle(o,r,s),p=yTt.scheduleTask({vertices:a.vertices,vertexCountWithoutSkirts:a.vertexCountWithoutSkirts,indices:a.indices,indexCountWithoutSkirts:a.indexCountWithoutSkirts,encoding:a.encoding,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:c,isNorthChild:d,childRectangle:h,ellipsoid:u});if(!l(p))return;let g=Math.min(this._westSkirtHeight,this._eastSkirtHeight);g=Math.min(g,this._southSkirtHeight),g=Math.min(g,this._northSkirtHeight);let f=c?g*.5:this._westSkirtHeight,b=d?g*.5:this._southSkirtHeight,x=c?this._eastSkirtHeight:g*.5,I=d?this._northSkirtHeight:g*.5,_=this._credits;return Promise.resolve(p).then(function(E){let S=new Uint16Array(E.vertices),R=Me.createTypedArray(S.length/3,E.indices),G;return l(E.encodedNormals)&&(G=new Uint8Array(E.encodedNormals)),new Iy({quantizedVertices:S,indices:R,encodedNormals:G,minimumHeight:E.minimumHeight,maximumHeight:E.maximumHeight,boundingSphere:ue.clone(E.boundingSphere),orientedBoundingBox:vn.clone(E.orientedBoundingBox),horizonOcclusionPoint:m.clone(E.horizonOcclusionPoint),westIndices:E.westIndices,southIndices:E.southIndices,eastIndices:E.eastIndices,northIndices:E.northIndices,westSkirtHeight:f,southSkirtHeight:b,eastSkirtHeight:x,northSkirtHeight:I,childTileMask:0,credits:_,createdByUpsampling:!0})})};var yq=32767,lTe=new m;Iy.prototype.interpolateHeight=function(e,t,n){let i=Z.clamp((t-e.west)/e.width,0,1);i*=yq;let o=Z.clamp((n-e.south)/e.height,0,1);return o*=yq,l(this._mesh)?_Tt(this,i,o):ETt(this,i,o)};function dTe(e,t,n,i,o,r,s,a){let c=Math.min(n,o,s),d=Math.max(n,o,s),u=Math.min(i,r,a),h=Math.max(i,r,a);return e>=c&&e<=d&&t>=u&&t<=h}var CTt=new D,xTt=new D,ITt=new D;function _Tt(e,t,n){let i=e._mesh,o=i.vertices,r=i.encoding,s=i.indices;for(let a=0,c=s.length;a<c;a+=3){let d=s[a],u=s[a+1],h=s[a+2],p=r.decodeTextureCoordinates(o,d,CTt),g=r.decodeTextureCoordinates(o,u,xTt),f=r.decodeTextureCoordinates(o,h,ITt);if(dTe(t,n,p.x,p.y,g.x,g.y,f.x,f.y)){let b=tb.computeBarycentricCoordinates(t,n,p.x,p.y,g.x,g.y,f.x,f.y,lTe);if(b.x>=-1e-15&&b.y>=-1e-15&&b.z>=-1e-15){let x=r.decodeHeight(o,d),I=r.decodeHeight(o,u),_=r.decodeHeight(o,h);return b.x*x+b.y*I+b.z*_}}}}function ETt(e,t,n){let i=e._uValues,o=e._vValues,r=e._heightValues,s=e._indices;for(let a=0,c=s.length;a<c;a+=3){let d=s[a],u=s[a+1],h=s[a+2],p=i[d],g=i[u],f=i[h],b=o[d],x=o[u],I=o[h];if(dTe(t,n,p,b,g,x,f,I)){let _=tb.computeBarycentricCoordinates(t,n,p,b,g,x,f,I,lTe);if(_.x>=-1e-15&&_.y>=-1e-15&&_.z>=-1e-15){let E=_.x*r[d]+_.y*r[u]+_.z*r[h];return Z.lerp(e._minimumHeight,e._maximumHeight,E/yq)}}}}Iy.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};Iy.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};var a_=Iy;function TTt(e){this.resource=e.resource,this.version=e.version,this.isHeightmap=e.isHeightmap,this.tileUrlTemplates=e.tileUrlTemplates,this.availability=e.availability,this.hasVertexNormals=e.hasVertexNormals,this.hasWaterMask=e.hasWaterMask,this.hasMetadata=e.hasMetadata,this.availabilityLevels=e.availabilityLevels,this.availabilityTilesLoaded=e.availabilityTilesLoaded,this.littleEndianExtensionSize=e.littleEndianExtensionSize,this.availabilityPromiseCache={}}function mTe(e){this.requestVertexNormals=e.requestVertexNormals??!1,this.requestWaterMask=e.requestWaterMask??!1,this.requestMetadata=e.requestMetadata??!0,this.ellipsoid=e.ellipsoid??ie.default,this.heightmapWidth=65,this.heightmapStructure=void 0,this.hasWaterMask=!1,this.hasMetadata=!1,this.hasVertexNormals=!1,this.scheme=void 0,this.lastResource=void 0,this.layerJsonResource=void 0,this.previousError=void 0,this.availability=void 0,this.tilingScheme=void 0,this.levelZeroMaximumGeometricError=void 0,this.heightmapStructure=void 0,this.layers=[],this.attribution="",this.overallAvailability=[],this.overallMaxZoom=0,this.tileCredits=[]}mTe.prototype.build=function(e){e._heightmapWidth=this.heightmapWidth,e._scheme=this.scheme;let t=l(this.lastResource.credits)?this.lastResource.credits:[];e._tileCredits=t.concat(this.tileCredits),e._availability=this.availability,e._tilingScheme=this.tilingScheme,e._requestWaterMask=this.requestWaterMask,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._heightmapStructure=this.heightmapStructure,e._layers=this.layers,e._hasWaterMask=this.hasWaterMask,e._hasVertexNormals=this.hasVertexNormals,e._hasMetadata=this.hasMetadata};async function hTe(e,t,n){if(!t.format){let b="The tile format is not specified in the layer.json file.";throw e.previousError=vo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,b),new de(b)}if(!t.tiles||t.tiles.length===0){let b="The layer.json file does not specify any tile URL templates.";throw e.previousError=vo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,b),new de(b)}let i=!1,o=!1,r=!1,s=!0,a=!1;if(t.format==="heightmap-1.0")a=!0,l(e.heightmapStructure)||(e.heightmapStructure={heightScale:1/5,heightOffset:-1e3,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1,lowestEncodedHeight:0,highestEncodedHeight:256*256-1}),o=!0,e.requestWaterMask=!0;else if(t.format.indexOf("quantized-mesh-1.")!==0){let b=`The tile format "${t.format}" is invalid or not supported.`;throw e.previousError=vo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,b),new de(b)}let c=t.tiles,d=t.maxzoom;if(e.overallMaxZoom=Math.max(e.overallMaxZoom,d),!t.projection||t.projection==="EPSG:4326")e.tilingScheme=new ao({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});else if(t.projection==="EPSG:3857")e.tilingScheme=new _s({numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});else{let b=`The projection "${t.projection}" is invalid or not supported.`;throw e.previousError=vo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,b),new de(b)}if(e.levelZeroMaximumGeometricError=Es.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.tilingScheme.ellipsoid,e.heightmapWidth,e.tilingScheme.getNumberOfXTilesAtLevel(0)),!t.scheme||t.scheme==="tms"||t.scheme==="slippyMap")e.scheme=t.scheme;else{let b=`The scheme "${t.scheme}" is invalid or not supported.`;throw e.previousError=vo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,b),new de(b)}let u;l(t.extensions)&&t.extensions.indexOf("octvertexnormals")!==-1?i=!0:l(t.extensions)&&t.extensions.indexOf("vertexnormals")!==-1&&(i=!0,s=!1),l(t.extensions)&&t.extensions.indexOf("watermask")!==-1&&(o=!0),l(t.extensions)&&t.extensions.indexOf("metadata")!==-1&&(r=!0);let h=t.metadataAvailability,p=t.available,g;if(l(p)&&!l(h)){g=new bf(e.tilingScheme,p.length);for(let b=0;b<p.length;++b){let x=p[b],I=e.tilingScheme.getNumberOfYTilesAtLevel(b);l(e.overallAvailability[b])||(e.overallAvailability[b]=[]);for(let _=0;_<x.length;++_){let E=x[_],S=I-E.endY-1,R=I-E.startY-1;e.overallAvailability[b].push([E.startX,S,E.endX,R]),g.addAvailableTileRange(b,E.startX,S,E.endX,R)}}}else l(h)&&(u=new bf(e.tilingScheme,d),g=new bf(e.tilingScheme,d),e.overallAvailability[0]=[[0,0,1,0]],g.addAvailableTileRange(0,0,0,1,0));e.hasWaterMask=e.hasWaterMask||o,e.hasVertexNormals=e.hasVertexNormals||i,e.hasMetadata=e.hasMetadata||r,l(t.attribution)&&(e.attribution.length>0&&(e.attribution+=" "),e.attribution+=t.attribution),e.layers.push(new TTt({resource:e.lastResource,version:t.version,isHeightmap:a,tileUrlTemplates:c,availability:g,hasVertexNormals:i,hasWaterMask:o,hasMetadata:r,availabilityLevels:h,availabilityTilesLoaded:u,littleEndianExtensionSize:s}));let f=t.parentUrl;return l(f)?l(g)?(e.lastResource=e.lastResource.getDerivedResource({url:f}),e.lastResource.appendForwardSlash(),e.layerJsonResource=e.lastResource.getDerivedResource({url:"layer.json"}),await Iq(e),!0):(console.log("A layer.json can't have a parentUrl if it does't have an available array."),!0):!0}function STt(e,t,n){let i=`An error occurred while accessing ${e.layerJsonResource.url}.`;if(l(t)&&(i+=` +${t.message}`),e.previousError=vo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,i),e.previousError.retry)return Iq(e,n);throw new de(i)}async function LTt(e,t,n){await hTe(e,t,n);let i=e.overallAvailability.length;if(i>0){let o=e.availability=new bf(e.tilingScheme,e.overallMaxZoom);for(let r=0;r<i;++r){let s=e.overallAvailability[r];for(let a=0;a<s.length;++a){let c=s[a];o.addAvailableTileRange(r,c[0],c[1],c[2],c[3])}}}if(e.attribution.length>0){let o=new Gt(e.attribution);e.tileCredits.push(o)}return!0}async function Iq(e,t){try{let n=await e.layerJsonResource.fetchJson();return LTt(e,n,t)}catch(n){return l(n)&&n.statusCode===404?(await hTe(e,{tilejson:"2.1.0",format:"heightmap-1.0",version:"1.0.0",scheme:"tms",tiles:["{z}/{x}/{y}.terrain?v={version}"]},t),!0):STt(e,n,t)}}function yf(e){e=e??Y.EMPTY_OBJECT,this._heightmapWidth=void 0,this._heightmapStructure=void 0,this._hasWaterMask=!1,this._hasVertexNormals=!1,this._hasMetadata=!1,this._scheme=void 0,this._ellipsoid=e.ellipsoid,this._requestVertexNormals=e.requestVertexNormals??!1,this._requestWaterMask=e.requestWaterMask??!1,this._requestMetadata=e.requestMetadata??!0,this._errorEvent=new Ce;let t=e.credit;typeof t=="string"&&(t=new Gt(t)),this._credit=t,this._availability=void 0,this._tilingScheme=void 0,this._levelZeroMaximumGeometricError=void 0,this._layers=void 0,this._tileCredits=void 0}var Cq={OCT_VERTEX_NORMALS:1,WATER_MASK:2,METADATA:4};function uTe(e){return!l(e)||e.length===0?{Accept:"application/vnd.quantized-mesh,application/octet-stream;q=0.9,*/*;q=0.01"}:{Accept:`application/vnd.quantized-mesh;extensions=${e.join("-")},application/octet-stream;q=0.9,*/*;q=0.01`}}function RTt(e,t,n,i,o){let r=new Uint16Array(t,0,e._heightmapWidth*e._heightmapWidth);return new yc({buffer:r,childTileMask:new Uint8Array(t,r.byteLength,1)[0],waterMask:new Uint8Array(t,r.byteLength+1,t.byteLength-r.byteLength-1),width:e._heightmapWidth,height:e._heightmapWidth,structure:e._heightmapStructure,credits:e._tileCredits})}function VTt(e,t,n,i,o,r){let s=r.littleEndianExtensionSize,a=0,c=3,d=c+1,u=Float64Array.BYTES_PER_ELEMENT*c,h=Float64Array.BYTES_PER_ELEMENT*d,g=Uint16Array.BYTES_PER_ELEMENT*3,f=3,b=Uint16Array.BYTES_PER_ELEMENT,x=b*f,I=new DataView(t),_=new m(I.getFloat64(a,!0),I.getFloat64(a+8,!0),I.getFloat64(a+16,!0));a+=u;let E=I.getFloat32(a,!0);a+=Float32Array.BYTES_PER_ELEMENT;let S=I.getFloat32(a,!0);a+=Float32Array.BYTES_PER_ELEMENT;let R=new ue(new m(I.getFloat64(a,!0),I.getFloat64(a+8,!0),I.getFloat64(a+16,!0)),I.getFloat64(a+u,!0));a+=h;let G=new m(I.getFloat64(a,!0),I.getFloat64(a+8,!0),I.getFloat64(a+16,!0));a+=u;let B=I.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let w=new Uint16Array(t,a,B*3);a+=B*g,B>64*1024&&(b=Uint32Array.BYTES_PER_ELEMENT,x=b*f);let F=w.subarray(0,B),P=w.subarray(B,2*B),A=w.subarray(B*2,3*B);Mn.zigZagDeltaDecode(F,P,A),a%b!==0&&(a+=b-a%b);let T=I.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let L=Me.createTypedArrayFromArrayBuffer(B,t,a,T*f);a+=T*x;let V=0,W=L.length;for(let he=0;he<W;++he){let xe=L[he];L[he]=V-xe,xe===0&&++V}let M=I.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let Q=Me.createTypedArrayFromArrayBuffer(B,t,a,M);a+=M*b;let N=I.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let k=Me.createTypedArrayFromArrayBuffer(B,t,a,N);a+=N*b;let v=I.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let O=Me.createTypedArrayFromArrayBuffer(B,t,a,v);a+=v*b;let H=I.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let ee=Me.createTypedArrayFromArrayBuffer(B,t,a,H);a+=H*b;let K,te;for(;a<I.byteLength;){let he=I.getUint8(a,!0);a+=Uint8Array.BYTES_PER_ELEMENT;let xe=I.getUint32(a,s);if(a+=Uint32Array.BYTES_PER_ELEMENT,he===Cq.OCT_VERTEX_NORMALS&&e._requestVertexNormals)K=new Uint8Array(t,a,B*2);else if(he===Cq.WATER_MASK&&e._requestWaterMask)te=new Uint8Array(t,a,xe);else if(he===Cq.METADATA&&e._requestMetadata){let Te=I.getUint32(a,!0);if(Te>0){let Le=mr(new Uint8Array(t),a+Uint32Array.BYTES_PER_ELEMENT,Te).available;if(l(Le))for(let De=0;De<Le.length;++De){let Ue=n+De+1,je=Le[De],it=e._tilingScheme.getNumberOfYTilesAtLevel(Ue);for(let nn=0;nn<je.length;++nn){let rt=je[nn],rn=it-rt.endY-1,Jt=it-rt.startY-1;e.availability.addAvailableTileRange(Ue,rt.startX,rn,rt.endX,Jt),r.availability.addAvailableTileRange(Ue,rt.startX,rn,rt.endX,Jt)}}}r.availabilityTilesLoaded.addAvailableTileRange(n,i,o,i,o)}a+=xe}let q=e.getLevelMaximumGeometricError(n)*5,pe=e._tilingScheme.tileXYToRectangle(i,o,n),ye=vn.fromRectangle(pe,E,S,e._tilingScheme.ellipsoid);return new a_({center:_,minimumHeight:E,maximumHeight:S,boundingSphere:R,orientedBoundingBox:ye,horizonOcclusionPoint:G,quantizedVertices:w,encodedNormals:K,indices:L,westIndices:Q,southIndices:k,eastIndices:O,northIndices:ee,westSkirtHeight:q,southSkirtHeight:q,eastSkirtHeight:q,northSkirtHeight:q,childTileMask:e.availability.computeChildMaskForTile(n,i,o),waterMask:te,credits:e._tileCredits})}yf.prototype.requestTileGeometry=function(e,t,n,i){let o=this._layers,r,s=o.length,a=!1,c=Promise.resolve();if(s===1)r=o[0];else for(let d=0;d<s;++d){let u=o[d];if(!l(u.availability)||u.availability.isTileAvailable(n,e,t)){r=u;break}let h=_q(this,e,t,n,u,d===0);h.result&&(a=!0,c=c.then(()=>h.promise))}return!l(r)&&a?c.then(()=>new Promise(d=>{setTimeout(()=>{let u=this.requestTileGeometry(e,t,n,i);d(u)},0)})):fTe(this,e,t,n,r,i)};function fTe(e,t,n,i,o,r){if(!l(o))return Promise.reject(new de("Terrain tile doesn't exist"));let s=o.tileUrlTemplates;if(s.length===0)return;let a;!e._scheme||e._scheme==="tms"?a=e._tilingScheme.getNumberOfYTilesAtLevel(i)-n-1:a=n;let c=[];e._requestVertexNormals&&o.hasVertexNormals&&c.push(o.littleEndianExtensionSize?"octvertexnormals":"vertexnormals"),e._requestWaterMask&&o.hasWaterMask&&c.push("watermask"),e._requestMetadata&&o.hasMetadata&&c.push("metadata");let d,u,h=s[(t+a+i)%s.length],p=o.resource;l(p._ionEndpoint)&&!l(p._ionEndpoint.externalType)?(c.length!==0&&(u={extensions:c.join("-")}),d=uTe(void 0)):d=uTe(c);let g=p.getDerivedResource({url:h,templateValues:{version:o.version,z:i,x:t,y:a},queryParameters:u,headers:d,request:r}).fetchArrayBuffer();if(l(g))return g.then(function(f){return l(f)?l(e._heightmapStructure)?RTt(e,f,i,t,n):VTt(e,f,i,t,n,o):Promise.reject(new de("Mesh buffer doesn't exist."))})}Object.defineProperties(yf.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return this._hasWaterMask&&this._requestWaterMask}},hasVertexNormals:{get:function(){return this._hasVertexNormals&&this._requestVertexNormals}},hasMetadata:{get:function(){return this._hasMetadata&&this._requestMetadata}},requestVertexNormals:{get:function(){return this._requestVertexNormals}},requestWaterMask:{get:function(){return this._requestWaterMask}},requestMetadata:{get:function(){return this._requestMetadata}},availability:{get:function(){return this._availability}}});yf.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};yf.fromIonAssetId=async function(e,t){let n=await Nd.fromAssetId(e);return yf.fromUrl(n,t)};yf.fromUrl=async function(e,t){t=t??Y.EMPTY_OBJECT,e=await Promise.resolve(e);let n=Ve.createIfNeeded(e);n.appendForwardSlash();let i=new mTe(t);i.lastResource=n,i.layerJsonResource=i.lastResource.getDerivedResource({url:"layer.json"}),await Iq(i);let o=new yf(t);return i.build(o),o};yf.prototype.getTileDataAvailable=function(e,t,n){if(!l(this._availability))return;if(n>this._availability._maximumLevel)return!1;if(this._availability.isTileAvailable(n,e,t))return!0;if(!this._hasMetadata)return!1;let i=this._layers,o=i.length;for(let r=0;r<o;++r)if(_q(this,e,t,n,i[r],r===0).result)return;return!1};yf.prototype.loadTileDataAvailability=function(e,t,n){if(!l(this._availability)||n>this._availability._maximumLevel||this._availability.isTileAvailable(n,e,t)||!this._hasMetadata)return;let i=this._layers,o=i.length;for(let r=0;r<o;++r){let s=_q(this,e,t,n,i[r],r===0);if(l(s.promise))return s.promise}};function xq(e,t,n,i){if(i===0)return;let o=e.availabilityLevels,r=i%o===0?i-o:(i/o|0)*o,s=1<<i-r,a=t/s|0,c=n/s|0;return{level:r,x:a,y:c}}function _q(e,t,n,i,o,r){if(!l(o.availabilityLevels))return{result:!1};let s,a=function(){delete o.availabilityPromiseCache[s]},c=o.availabilityTilesLoaded,d=o.availability,u=xq(o,t,n,i);for(;l(u);){if(d.isTileAvailable(u.level,u.x,u.y)&&!c.isTileAvailable(u.level,u.x,u.y)){let h;if(!r&&(s=`${u.level}-${u.x}-${u.y}`,h=o.availabilityPromiseCache[s],!l(h))){let p=new sr({throttle:!1,throttleByServer:!0,type:Zs.TERRAIN});h=fTe(e,u.x,u.y,u.level,o,p),l(h)&&(o.availabilityPromiseCache[s]=h,h.then(a))}return{result:!0,promise:h}}u=xq(o,u.x,u.y,u.level)}return{result:!1}}yf._getAvailabilityTile=xq;var c_=yf;var ieo=y(C(),1);function nb(e){e=e??Y.EMPTY_OBJECT;let t=e.radius,n={center:e.center,semiMajorAxis:t,semiMinorAxis:t,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,vertexFormat:e.vertexFormat,stRotation:e.stRotation,shadowVolume:e.shadowVolume};this._ellipseGeometry=new Fl(n),this._workerName="createCircleGeometry"}nb.packedLength=Fl.packedLength;nb.pack=function(e,t,n){return Fl.pack(e._ellipseGeometry,t,n)};var pTe=new Fl({center:new m,semiMajorAxis:1,semiMinorAxis:1}),xc={center:new m,radius:void 0,ellipsoid:ie.clone(ie.default),height:void 0,extrudedHeight:void 0,granularity:void 0,vertexFormat:new we,stRotation:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0,shadowVolume:void 0};nb.unpack=function(e,t,n){let i=Fl.unpack(e,t,pTe);return xc.center=m.clone(i._center,xc.center),xc.ellipsoid=ie.clone(i._ellipsoid,xc.ellipsoid),xc.ellipsoid=ie.clone(i._ellipsoid,pTe._ellipsoid),xc.height=i._height,xc.extrudedHeight=i._extrudedHeight,xc.granularity=i._granularity,xc.vertexFormat=we.clone(i._vertexFormat,xc.vertexFormat),xc.stRotation=i._stRotation,xc.shadowVolume=i._shadowVolume,l(n)?(xc.semiMajorAxis=i._semiMajorAxis,xc.semiMinorAxis=i._semiMinorAxis,n._ellipseGeometry=new Fl(xc),n):(xc.radius=i._semiMajorAxis,new nb(xc))};nb.createGeometry=function(e){return Fl.createGeometry(e._ellipseGeometry)};nb.createShadowVolume=function(e,t,n){let i=e._ellipseGeometry._granularity,o=e._ellipseGeometry._ellipsoid,r=t(i,o),s=n(i,o);return new nb({center:e._ellipseGeometry._center,radius:e._ellipseGeometry._semiMajorAxis,ellipsoid:o,stRotation:e._ellipseGeometry._stRotation,granularity:i,extrudedHeight:r,height:s,vertexFormat:we.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(nb.prototype,{rectangle:{get:function(){return this._ellipseGeometry.rectangle}},textureCoordinateRotationPoints:{get:function(){return this._ellipseGeometry.textureCoordinateRotationPoints}}});var Eq=nb;var deo=y(C(),1);function GL(e){e=e??Y.EMPTY_OBJECT;let t=e.radius,n={center:e.center,semiMajorAxis:t,semiMinorAxis:t,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,numberOfVerticalLines:e.numberOfVerticalLines};this._ellipseGeometry=new du(n),this._workerName="createCircleOutlineGeometry"}GL.packedLength=du.packedLength;GL.pack=function(e,t,n){return du.pack(e._ellipseGeometry,t,n)};var GTt=new du({center:new m,semiMajorAxis:1,semiMinorAxis:1}),Gu={center:new m,radius:void 0,ellipsoid:ie.clone(ie.UNIT_SPHERE),height:void 0,extrudedHeight:void 0,granularity:void 0,numberOfVerticalLines:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0};GL.unpack=function(e,t,n){let i=du.unpack(e,t,GTt);return Gu.center=m.clone(i._center,Gu.center),Gu.ellipsoid=ie.clone(i._ellipsoid,Gu.ellipsoid),Gu.height=i._height,Gu.extrudedHeight=i._extrudedHeight,Gu.granularity=i._granularity,Gu.numberOfVerticalLines=i._numberOfVerticalLines,l(n)?(Gu.semiMajorAxis=i._semiMajorAxis,Gu.semiMinorAxis=i._semiMinorAxis,n._ellipseGeometry=new du(Gu),n):(Gu.radius=i._semiMajorAxis,new GL(Gu))};GL.createGeometry=function(e){return du.createGeometry(e._ellipseGeometry)};var Tq=GL;var Ceo=y(C(),1);function ZL(e){e=e??Y.EMPTY_OBJECT,this._callback=e.callback,this._tilingScheme=e.tilingScheme,l(this._tilingScheme)||(this._tilingScheme=new ao({ellipsoid:e.ellipsoid??ie.default})),this._width=e.width,this._height=e.height;let t=Math.max(this._width,this._height);this._levelZeroMaximumGeometricError=Es.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,t,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._errorEvent=new Ce;let n=e.credit;typeof n=="string"&&(n=new Gt(n)),this._credit=n}Object.defineProperties(ZL.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});ZL.prototype.requestTileGeometry=function(e,t,n,i){let o=this._callback(e,t,n);if(!l(o))return;let r=this._width,s=this._height;return Promise.resolve(o).then(function(a){let c=a;return Array.isArray(c)&&(c=new Float64Array(c)),new yc({buffer:c,width:r,height:s})})};ZL.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};ZL.prototype.getTileDataAvailable=function(e,t,n){};ZL.prototype.loadTileDataAvailability=function(e,t,n){};var Sq=ZL;var Ieo=y(C(),1);function ATe(e){this.proxy=e}ATe.prototype.getURL=function(e){let t=this.proxy.indexOf("?")===-1?"?":"";return this.proxy+t+encodeURIComponent(e)};var Lq=ATe;var Eeo=y(C(),1),ZTt={SEARCH:0,AUTOCOMPLETE:1},_y=Object.freeze(ZTt);var Veo=y(C(),1);function FY(){Ae.throwInstantiationError()}Object.defineProperties(FY.prototype,{credit:{get:Ae.throwInstantiationError}});FY.getCreditsFromResult=function(e){if(l(e.attributions))return e.attributions.map(Gt.getIonCredit)};FY.prototype.geocode=Ae.throwInstantiationError;var BL=FY;var Beo=y(C(),1);function gTe(){Ae.throwInstantiationError()}gTe.createGeometry=function(e){Ae.throwInstantiationError()};var Rq=gTe;var qeo=y(C(),1),PTt=y(Vq(),1);var veo=y(C(),1);var Weo=y(C(),1);function BTt(e,t){return(e&t)!==0}var el=BTt;var wTt=[1,2,4,8],bTe=15,XTt=16,WTt=64,FTt=128;function Mp(e,t,n,i,o,r){this._bits=e,this.cnodeVersion=t,this.imageryVersion=n,this.terrainVersion=i,this.imageryProvider=o,this.terrainProvider=r,this.ancestorHasTerrain=!1,this.terrainState=void 0}Mp.clone=function(e,t){return l(t)?(t._bits=e._bits,t.cnodeVersion=e.cnodeVersion,t.imageryVersion=e.imageryVersion,t.terrainVersion=e.terrainVersion,t.imageryProvider=e.imageryProvider,t.terrainProvider=e.terrainProvider):t=new Mp(e._bits,e.cnodeVersion,e.imageryVersion,e.terrainVersion,e.imageryProvider,e.terrainProvider),t.ancestorHasTerrain=e.ancestorHasTerrain,t.terrainState=e.terrainState,t};Mp.prototype.setParent=function(e){this.ancestorHasTerrain=e.ancestorHasTerrain||this.hasTerrain()};Mp.prototype.hasSubtree=function(){return el(this._bits,XTt)};Mp.prototype.hasImagery=function(){return el(this._bits,WTt)};Mp.prototype.hasTerrain=function(){return el(this._bits,FTt)};Mp.prototype.hasChildren=function(){return el(this._bits,bTe)};Mp.prototype.hasChild=function(e){return el(this._bits,wTt[e])};Mp.prototype.getChildBitmask=function(){return this._bits&bTe};var Jv=Mp;function MTt(e){let t=e.length,n=new ArrayBuffer(t),i=new Uint8Array(n);for(let o=0;o<t;++o)i[o]=e.charCodeAt(o);return n}var vTt=MTt(`E\xF4\xBD\vy\xE2jE"\x92,\xCDq\xF8IFgQ\0B%\xC6\xE8a,f)\b\xC64\xDCjb%y +wmi\xD6\xF0\x9Ck\x93\xA1\xBDNu\xE0A[\xDF@V\f\xD9\xBBr\x9B\x81|3S\xEEOl\xD4q\xB0{\xC0\x7FEVZ\xADwUe\v3\x92*\xACl5\xC50s\xF83>mF8J\xB4\xDD\xF0.\xDDu\xDA\x8CDt"\xFAa"\f3"So\xAF9D\v\x8C9\xD99L\xB9\xBF\x7F\xAB\\\x8CP_\x9F"ux\xE9\x07q\x91h;\xC1\xC4\x9B\x7F\xF0<VqH\x82'UfYNe\x98u\xA3aF}a?A\0\x9F\xD7\xB44M\xCE\x87F\xB0\xD5\xB8\x8A'{\x8B\xDC+\xBBMg0\xC8\xD1\xF6\\\x8FP\xFA[/F\x9Bn5/'C.\xEB +\f^\xA5s\x1Be4\xE5l.jC'c#U\xA9?q{gC}:\xAF\xCD\xE2TU\x9C\xFDK\xC6\xE2\x9F/(\xED\xCB\\\xC6-f\x07\x88\xA7;/*"N\xB0k.\xDD\r\x95}}G\xBAC\xB2\xB2+>M\xAA>}\xE6\xCEI\x89\xC6\xE6x\fa1-\xA4O\xA5~q \x88\xEC\r1\xE8N\v\0nPh}=\b\r\x95\xA6n\xA3h\x97$[k\xF3#\xF3\xB6s\xB3\r\v@\xC0\x9F\xD8Q]\xFA".j\xDFI\0\xB9\xA0wU\xC6\xEFj\xBF{GL\x7F\x83\xEE\xDC\xDCF\x85\xA9\xADS\x07+S4\x07\xFF\x94Y\xE48\xE81\x83N\xB9XFk\xCB-#\x86\x92p\x005\x88"\xCF1\xB2&/\xE7\xC3u-6,rt\xB0#G\xB7\xD3\xD1&\x857r\xE2\0\x8CD\xCF\xDA3-\xDE\`\x86i#i*|\xCDKQ\r\x95T9w.)\xEA\x1B\xA6P\xA2j\x8FoP\x99\\>T\xFB\xEFP[\v\x07E\x89m(w7\xDB\x8EJfJo\x99 \xE5p\xE2\xB9q~\fmI-z\xFEr\xC7\xF2Y0\x8F\xBB]s\xE5\xC9 \xEAx\xEC \x90\xF0\x8A\x7FB|G\`\xB0\xBD&\xB7q\xB6\xC7\x9F\xD13\x82=\xD3\xAB\xEEc\x99\xC8+S\xA0D\\q\xC6\xCCD2O<\xCA\xC0)=R\xD3aX\xA9}e\xB4\xDC\xCF\r\xF4=\xF1\b\xA9B\xDA# \xD8\xBF^PI\xF8M\xC0\xCBGLO\xF7{+\xD8\xC51\x92;\xB5o\xDCl\r\x92\x88\xD1\x9E\xDB?\xE2\xE9\xDA_\xD4\x84\xE2FaZ\xDEU\xCF\xA4\0\xBE\xFD\xCEg\xF1Ji\x97\xE6 H\xD8]\x7F~\xAEq N\xAE\xC0V\xA9\x91<\x82r\xE7v\xEC)I\xD6]-\x83\xE3\xDB6\xA9;f\x97\x87j\xD5\xB6=P^R\xB9K\xC7sWx\xC9\xF4.Y\x07\x95\x93o\xD0KW>''\xC7\`\xDB;\xED\x9ASD>?\x8D\x92mw\xA2 +\xEB?R\xA8\xC6U^1I7\x85\xF4\xC5&-\xA9\xBF\x8B'T\xDA\xC3j \xE5*x\xB0\xD6\x90pr\xAA\x8Bh\xBD\x88\xF7_H\xB1~\xC0XL?f\xF9>\xE1e\xC0p\xA7\xCF8i\xAF\xF0VldI\x9C'\xADxtO\xC2\x87\xDEV9\0\xDAw\v\xCB-\x1B\x89\xFB5O\xF5\bQ\`\xC1 +ZGM&30x\xDA\xC0\x9CFG\xE2[y\`In7gS +>\xE9\xECF9\xB2\xF14\r\xC6\x84Sun\xE1\fY\xD9\xDE)\x85{II\xA5wy\xBEIV.6\xE7\v:\xBBOb{\xD2M1\x95/\xBD8{\xA8O!\xE1\xECFpv\x95})"x\x88 +\x90\xDD\x9D\\\xDA\xDEQ\xCF\xF0\xFCYRe|3\xDF\xF3H\xDA\xBB*u\xDB\`\xB2\xD4\xFC\xED\x1B\xEC\x7F5\xA8\xFF(1\x07-\xC8\xDC\x88F|\x8A["`);function Zu(e){this.imageryPresent=!0,this.protoImagery=void 0,this.terrainPresent=!0,this.negativeAltitudeExponentBias=32,this.negativeAltitudeThreshold=Z.EPSILON12,this.providers={},this.key=void 0,this._resource=void 0,this._quadPacketVersion=1,this._tileInfo={},this._subtreePromises={}}Object.defineProperties(Zu.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},resource:{get:function(){return this._resource}}});Zu.fromUrl=async function(e){let t=e;typeof t!="string"&&!(t instanceof Ve)&&(t=e.url);let n=Ve.createIfNeeded(t);n.appendForwardSlash();let i=new Zu;i._resource=n;try{await NTt(i),await i.getQuadTreePacket("",i._quadPacketVersion)}catch(o){let r=`An error occurred while accessing ${CTe(i,"",1).url}: ${o}`;throw new de(r)}return i};Zu.tileXYToQuadKey=function(e,t,n){let i="";for(let o=n;o>=0;--o){let r=1<<o,s=0;el(t,r)?el(e,r)&&(s|=1):(s|=2,el(e,r)||(s|=1)),i+=s}return i};Zu.quadKeyToTileXY=function(e){let t=0,n=0,i=e.length-1;for(let o=i;o>=0;--o){let r=1<<o,s=+e[i-o];el(s,2)?el(s,1)||(t|=r):(n|=r,el(s,1)&&(t|=r))}return{x:t,y:n,level:i}};Zu.prototype.isValid=function(e){let t=this.getTileInformationFromQuadKey(e);if(l(t))return t!==null;let n=!0,i=e,o;for(;i.length>1;)if(o=i.substring(i.length-1),i=i.substring(0,i.length-1),t=this.getTileInformationFromQuadKey(i),l(t)){!t.hasSubtree()&&!t.hasChild(parseInt(o))&&(n=!1);break}else if(t===null){n=!1;break}return n};var yTe=new hi("decodeGoogleEarthEnterprisePacket");Zu.prototype.getQuadTreePacket=function(e,t,n){t=t??1,e=e??"";let o=CTe(this,e,t,n).fetchArrayBuffer();if(!l(o))return;let r=this._tileInfo,s=this.key;return o.then(function(a){return yTe.scheduleTask({buffer:a,quadKey:e,type:"Metadata",key:s},[a]).then(function(d){let u,h=-1;if(e!==""){h=e.length+1;let f=d[e];u=r[e],u._bits|=f._bits,delete d[e]}let p=Object.keys(d);p.sort(function(f,b){return f.length-b.length});let g=p.length;for(let f=0;f<g;++f){let b=p[f];if(d[b]!==null){let I=Jv.clone(d[b]),_=b.length;if(_===h)I.setParent(u);else if(_>1){let E=r[b.substring(0,b.length-1)];I.setParent(E)}r[b]=I}else r[b]=null}})})};Zu.prototype.populateSubtree=function(e,t,n,i){let o=Zu.tileXYToQuadKey(e,t,n);return Bq(this,o,i)};function Bq(e,t,n){let i=e._tileInfo,o=t,r=i[o];if(l(r)&&(!r.hasSubtree()||r.hasChildren()))return r;for(;r===void 0&&o.length>1;)o=o.substring(0,o.length-1),r=i[o];let s,a=e._subtreePromises,c=a[o];if(l(c))return c.then(function(){return s=new sr({throttle:n.throttle,throttleByServer:n.throttleByServer,type:n.type,priorityFunction:n.priorityFunction}),Bq(e,t,s)});if(!l(r)||!r.hasSubtree())return Promise.reject(new de(`Couldn't load metadata for tile ${t}`));if(c=e.getQuadTreePacket(o,r.cnodeVersion,n),!!l(c))return a[o]=c,c.then(function(){return s=new sr({throttle:n.throttle,throttleByServer:n.throttleByServer,type:n.type,priorityFunction:n.priorityFunction}),Bq(e,t,s)}).finally(function(){delete a[o]})}Zu.prototype.getTileInformation=function(e,t,n){let i=Zu.tileXYToQuadKey(e,t,n);return this._tileInfo[i]};Zu.prototype.getTileInformationFromQuadKey=function(e){return this._tileInfo[e]};function CTe(e,t,n,i){return e._resource.getDerivedResource({url:`flatfile?q2-0${t}-q.${n.toString()}`,request:i})}var Gq,Zq;function NTt(e){let t=e._resource.getDerivedResource({url:"dbRoot.v5",queryParameters:{output:"proto"}});if(!l(Zq)){let n=hn("ThirdParty/google-earth-dbroot-parser.js"),i=window.cesiumGoogleEarthDbRootParser;Zq=My(n).then(function(){Gq=window.cesiumGoogleEarthDbRootParser(PTt),l(i)?window.cesiumGoogleEarthDbRootParser=i:delete window.cesiumGoogleEarthDbRootParser})}return Zq.then(function(){return t.fetchArrayBuffer()}).then(function(n){let i=Gq.EncryptedDbRootProto.decode(new Uint8Array(n)),o=i.encryptionData,r=o.byteOffset,s=r+o.byteLength,a=e.key=o.buffer.slice(r,s);o=i.dbrootData,r=o.byteOffset,s=r+o.byteLength;let c=o.buffer.slice(r,s);return yTe.scheduleTask({buffer:c,type:"DbRoot",key:a},[c])}).then(function(n){let i=Gq.DbRootProto.decode(new Uint8Array(n.buffer));if(e.imageryPresent=i.imageryPresent??e.imageryPresent,e.protoImagery=i.protoImagery,e.terrainPresent=i.terrainPresent??e.terrainPresent,l(i.endSnippet)&&l(i.endSnippet.model)){let a=i.endSnippet.model;e.negativeAltitudeExponentBias=a.negativeAltitudeExponentBias??e.negativeAltitudeExponentBias,e.negativeAltitudeThreshold=a.compressedNegativeAltitudeThreshold??e.negativeAltitudeThreshold}l(i.databaseVersion)&&(e._quadPacketVersion=i.databaseVersion.quadtreeVersion??e._quadPacketVersion);let o=e.providers,r=i.providerInfo??[],s=r.length;for(let a=0;a<s;++a){let c=r[a],d=c.copyrightString;l(d)&&(o[c.providerId]=new Gt(d.value))}}).catch(function(){console.log(`Failed to retrieve ${t.url}. Using defaults.`),e.key=vTt})}var ib=Zu;var pto=y(C(),1);function l_(e){e=e??Y.EMPTY_OBJECT,this._buffer=e.buffer,this._credits=e.credits,this._negativeAltitudeExponentBias=e.negativeAltitudeExponentBias,this._negativeElevationThreshold=e.negativeElevationThreshold;let t=e.childTileMask??15,n=t&3;n|=t&4?8:0,n|=t&8?4:0,this._childTileMask=n,this._createdByUpsampling=e.createdByUpsampling??!1,this._skirtHeight=void 0,this._bufferType=this._buffer.constructor,this._mesh=void 0,this._minimumHeight=void 0,this._maximumHeight=void 0}Object.defineProperties(l_.prototype,{credits:{get:function(){return this._credits}},waterMask:{get:function(){}}});var _Te="createVerticesFromGoogleEarthEnterpriseBuffer",DTt=new hi(_Te),QTt=new hi(_Te,df.maximumAsynchronousTasks),xTe=new le,wq=new le;l_.prototype.createMesh=function(e){e=e??Y.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid;t.tileXYToNativeRectangle(n,i,o,xTe),t.tileXYToRectangle(n,i,o,wq);let d=c.cartographicToCartesian(le.center(wq)),h=40075.16/(1<<o);this._skirtHeight=Math.min(h*8,1e3);let g=(a?QTt:DTt).scheduleTask({buffer:this._buffer,nativeRectangle:xTe,rectangle:wq,relativeToCenter:d,ellipsoid:c,skirtHeight:this._skirtHeight,exaggeration:r,exaggerationRelativeHeight:s,includeWebMercatorT:!0,negativeAltitudeExponentBias:this._negativeAltitudeExponentBias,negativeElevationThreshold:this._negativeElevationThreshold});if(!l(g))return;let f=this;return g.then(function(b){return f._mesh=new Fm(d,new Float32Array(b.vertices),new Uint16Array(b.indices),b.indexCountWithoutSkirts,b.vertexCountWithoutSkirts,b.minimumHeight,b.maximumHeight,ue.clone(b.boundingSphere3D),m.clone(b.occludeePointInScaledSpace),b.numberOfAttributes,vn.clone(b.orientedBoundingBox),Kc.clone(b.encoding),b.westIndicesSouthToNorth,b.southIndicesEastToWest,b.eastIndicesNorthToSouth,b.northIndicesWestToEast),f._minimumHeight=b.minimumHeight,f._maximumHeight=b.maximumHeight,f._buffer=void 0,f._mesh})};l_.prototype.interpolateHeight=function(e,t,n){let i=Z.clamp((t-e.west)/e.width,0,1),o=Z.clamp((n-e.south)/e.height,0,1);return l(this._mesh)?HTt(this,i,o):JTt(this,i,o,e)};var UTt=new hi("upsampleQuantizedTerrainMesh",df.maximumAsynchronousTasks);l_.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(this._mesh))return;let c=t*2!==o,d=n*2===r,u=e.ellipsoid,h=e.tileXYToRectangle(o,r,s),p=UTt.scheduleTask({vertices:a.vertices,indices:a.indices,indexCountWithoutSkirts:a.indexCountWithoutSkirts,vertexCountWithoutSkirts:a.vertexCountWithoutSkirts,encoding:a.encoding,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:c,isNorthChild:d,childRectangle:h,ellipsoid:u});if(!l(p))return;let g=this;return p.then(function(f){let b=new Uint16Array(f.vertices),x=Me.createTypedArray(b.length/3,f.indices),I=g._skirtHeight;return new a_({quantizedVertices:b,indices:x,minimumHeight:f.minimumHeight,maximumHeight:f.maximumHeight,boundingSphere:ue.clone(f.boundingSphere),orientedBoundingBox:vn.clone(f.orientedBoundingBox),horizonOcclusionPoint:m.clone(f.horizonOcclusionPoint),westIndices:f.westIndices,southIndices:f.southIndices,eastIndices:f.eastIndices,northIndices:f.northIndices,westSkirtHeight:I,southSkirtHeight:I,eastSkirtHeight:I,northSkirtHeight:I,childTileMask:0,createdByUpsampling:!0,credits:g._credits})})};l_.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};l_.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};var kTt=new D,YTt=new D,OTt=new D,ETe=new m;function HTt(e,t,n){let i=e._mesh,o=i.vertices,r=i.encoding,s=i.indices;for(let a=0,c=s.length;a<c;a+=3){let d=s[a],u=s[a+1],h=s[a+2],p=r.decodeTextureCoordinates(o,d,kTt),g=r.decodeTextureCoordinates(o,u,YTt),f=r.decodeTextureCoordinates(o,h,OTt),b=tb.computeBarycentricCoordinates(t,n,p.x,p.y,g.x,g.y,f.x,f.y,ETe);if(b.x>=-1e-15&&b.y>=-1e-15&&b.z>=-1e-15){let x=r.decodeHeight(o,d),I=r.decodeHeight(o,u),_=r.decodeHeight(o,h);return b.x*x+b.y*I+b.z*_}}}var zTt=Uint16Array.BYTES_PER_ELEMENT,ITe=Uint32Array.BYTES_PER_ELEMENT,Xq=Int32Array.BYTES_PER_ELEMENT,KTt=Float32Array.BYTES_PER_ELEMENT,Wq=Float64Array.BYTES_PER_ELEMENT;function JTt(e,t,n,i){let o=e._buffer,r=0,s=0,a=0;n>.5?(t>.5?(r=2,s=.5):r=3,a=.5):t>.5&&(r=1,s=.5);let c=new DataView(o),d=0;for(let R=0;R<r;++R)d+=c.getUint32(d,!0),d+=ITe;d+=ITe,d+=2*Wq;let u=Z.toRadians(c.getFloat64(d,!0)*180);d+=Wq;let h=Z.toRadians(c.getFloat64(d,!0)*180);d+=Wq;let p=i.width/u/2,g=i.height/h/2,f=c.getInt32(d,!0);d+=Xq;let b=c.getInt32(d,!0)*3;d+=Xq,d+=Xq;let x=new Array(f),I=new Array(f),_=new Array(f),E;for(E=0;E<f;++E)x[E]=s+c.getUint8(d++)*p,I[E]=a+c.getUint8(d++)*g,_[E]=c.getFloat32(d,!0)*6371010,d+=KTt;let S=new Array(b);for(E=0;E<b;++E)S[E]=c.getUint16(d,!0),d+=zTt;for(E=0;E<b;E+=3){let R=S[E],G=S[E+1],B=S[E+2],w=x[R],F=x[G],P=x[B],A=I[R],T=I[G],L=I[B],V=tb.computeBarycentricCoordinates(t,n,w,A,F,T,P,L,ETe);if(V.x>=-1e-15&&V.y>=-1e-15&&V.z>=-1e-15)return V.x*_[R]+V.y*_[G]+V.z*_[B]}}var wL=l_;var wto=y(C(),1);var Ym={UNKNOWN:0,NONE:1,SELF:2,PARENT:3},PY=new j;function MY(){this._terrainCache={},this._lastTidy=j.now()}MY.prototype.add=function(e,t){this._terrainCache[e]={buffer:t,timestamp:j.now()}};MY.prototype.get=function(e){let n=this._terrainCache[e];if(l(n))return delete this._terrainCache[e],n.buffer};MY.prototype.tidy=function(){if(j.now(PY),j.secondsDifference(PY,this._lastTidy)>10){let e=this._terrainCache,t=Object.keys(e),n=t.length;for(let i=0;i<n;++i){let o=t[i],r=e[o];j.secondsDifference(PY,r.timestamp)>10&&delete e[o]}j.clone(PY,this._lastTidy)}};function Ey(e){e=e??Y.EMPTY_OBJECT,this._tilingScheme=new ao({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new le(-Z.PI,-Z.PI,Z.PI,Z.PI),ellipsoid:e.ellipsoid});let t=e.credit;typeof t=="string"&&(t=new Gt(t)),this._credit=t,this._levelZeroMaximumGeometricError=40075.16,this._terrainCache=new MY,this._terrainPromises={},this._terrainRequests={},this._errorEvent=new Ce}Object.defineProperties(Ey.prototype,{url:{get:function(){return this._metadata.url}},proxy:{get:function(){return this._metadata.proxy}},tilingScheme:{get:function(){return this._tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});Ey.fromMetadata=function(e,t){if(!e.terrainPresent)throw new de(`The server ${e.url} doesn't have terrain`);let n=new Ey(t);return n._metadata=e,n};var jTt=new hi("decodeGoogleEarthEnterprisePacket");function TTe(e,t,n){let i=t.getChildBitmask();if(t.terrainState===Ym.PARENT){i=0;for(let o=0;o<4;++o){let r=n.getTileInformationFromQuadKey(e+o.toString());l(r)&&r.hasTerrain()&&(i|=1<<o)}}return i}Ey.prototype.requestTileGeometry=function(e,t,n,i){let o=ib.tileXYToQuadKey(e,t,n),r=this._terrainCache,s=this._metadata,a=s.getTileInformationFromQuadKey(o);if(!l(a))return Promise.reject(new de("Terrain tile doesn't exist"));let c=a.terrainState;l(c)||(c=a.terrainState=Ym.UNKNOWN);let d=r.get(o);if(l(d)){let I=s.providers[a.terrainProvider];return Promise.resolve(new wL({buffer:d,childTileMask:TTe(o,a,s),credits:l(I)?[I]:void 0,negativeAltitudeExponentBias:s.negativeAltitudeExponentBias,negativeElevationThreshold:s.negativeAltitudeThreshold}))}if(r.tidy(),a.ancestorHasTerrain){if(c===Ym.NONE)return Promise.reject(new de("Terrain tile doesn't exist"))}else return Promise.resolve(new yc({buffer:new Uint8Array(256),width:16,height:16}));let u,h=o,p=-1;switch(c){case Ym.SELF:p=a.terrainVersion;break;case Ym.PARENT:h=h.substring(0,h.length-1),u=s.getTileInformationFromQuadKey(h),p=u.terrainVersion;break;case Ym.UNKNOWN:a.hasTerrain()?p=a.terrainVersion:(h=h.substring(0,h.length-1),u=s.getTileInformationFromQuadKey(h),l(u)&&u.hasTerrain()&&(p=u.terrainVersion));break}if(p<0)return Promise.reject(new de("Terrain tile doesn't exist"));let g=this._terrainPromises,f=this._terrainRequests,b,x;if(l(g[h]))b=g[h],x=f[h];else{x=i;let I=qTt(this,h,p,x).fetchArrayBuffer();if(!l(I))return;b=I.then(function(_){return l(_)?jTt.scheduleTask({buffer:_,type:"Terrain",key:s.key},[_]).then(function(E){let S=s.getTileInformationFromQuadKey(h);S.terrainState=Ym.SELF,r.add(h,E[0]);let R=S.terrainProvider,G=E.length-1;for(let B=0;B<G;++B){let w=h+B.toString(),F=s.getTileInformationFromQuadKey(w);l(F)&&(r.add(w,E[B+1]),F.terrainState=Ym.PARENT,F.terrainProvider===0&&(F.terrainProvider=R))}}):Promise.reject(new de("Failed to load terrain."))}),g[h]=b,f[h]=x,b=b.finally(function(){delete g[h],delete f[h]})}return b.then(function(){let I=r.get(o);if(l(I)){let _=s.providers[a.terrainProvider];return new wL({buffer:I,childTileMask:TTe(o,a,s),credits:l(_)?[_]:void 0,negativeAltitudeExponentBias:s.negativeAltitudeExponentBias,negativeElevationThreshold:s.negativeAltitudeThreshold})}return Promise.reject(new de("Failed to load terrain."))}).catch(function(I){return x.state===mi.CANCELLED?(i.state=x.state,Promise.reject(I)):(a.terrainState=Ym.NONE,Promise.reject(I))})};Ey.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};Ey.prototype.getTileDataAvailable=function(e,t,n){let i=this._metadata,o=ib.tileXYToQuadKey(e,t,n),r=i.getTileInformation(e,t,n);if(r===null)return!1;if(l(r)){if(!r.ancestorHasTerrain)return!0;let s=r.terrainState;if(s===Ym.NONE)return!1;if((!l(s)||s===Ym.UNKNOWN)&&(r.terrainState=Ym.UNKNOWN,!r.hasTerrain())){o=o.substring(0,o.length-1);let a=i.getTileInformationFromQuadKey(o);if(!l(a)||!a.hasTerrain())return!1}return!0}if(i.isValid(o)){let s=new sr({throttle:!1,throttleByServer:!0,type:Zs.TERRAIN});i.populateSubtree(e,t,n,s)}return!1};Ey.prototype.loadTileDataAvailability=function(e,t,n){};function qTt(e,t,n,i){return n=l(n)&&n>0?n:1,e._metadata.resource.getDerivedResource({url:`flatfile?f1c-0${t}-t.${n.toString()}`,request:i})}var Fq=Ey;var Nto=y(C(),1);var $Tt="https://maps.googleapis.com/maps/api/geocode/json",STe='<img alt="Google" src="https://assets.ion.cesium.com/google-credit.png" style="vertical-align:-5px">';function Pq(e){e=e??Y.EMPTY_OBJECT;let t=e.key;this._resource=new Ve({url:$Tt,queryParameters:{key:t}}),this._credit=new Gt(STe,!0)}Object.defineProperties(Pq.prototype,{credit:{get:function(){return this._credit}}});Pq.prototype.geocode=async function(e){let n=await this._resource.getDerivedResource({queryParameters:{address:e}}).fetchJson();if(n.status==="ZERO_RESULTS")return[];if(n.status!=="OK")throw new de(`GoogleGeocoderService got a bad response ${n.status}: ${n.error_message}`);return n.results.map(o=>{let r=o.geometry.viewport.southwest,s=o.geometry.viewport.northeast;return{displayName:o.formatted_address,destination:le.fromDegrees(r.lng,r.lat,s.lng,s.lat),attribution:{html:STe,collapsible:!1}}})};var Mq=Pq;var kto=y(C(),1);var vY={};vY.defaultApiKey=void 0;vY.mapTilesApiEndpoint=new Ve({url:"https://tile.googleapis.com/v1/"});vY.getDefaultCredit=function(){return new Gt('<img src="https://assets.ion.cesium.com/google-credit.png" style="vertical-align: -5px" alt="Google">',!0)};var d_=vY;var Kto=y(C(),1);var Qs={};Qs.ExportStatus=Object.freeze({NotStarted:"NotStarted",InProgress:"InProgress",Complete:"Complete",Invalid:"Invalid"});Qs.ExportType=Object.freeze({IMODEL:"IMODEL",CESIUM:"CESIUM","3DTILES":"3DTILES"});Qs.RealityDataType=Object.freeze({Cesium3DTiles:"Cesium3DTiles",PNTS:"PNTS",RealityMesh3DTiles:"RealityMesh3DTiles",Terrain3DTiles:"Terrain3DTiles",KML:"KML",GeoJSON:"GeoJSON",Unstructured:"Unstructured"});Qs.defaultAccessToken=void 0;Qs.defaultShareKey=void 0;Qs._getAuthorizationHeader=function(){return l(Qs.defaultShareKey)?`Basic ${Qs.defaultShareKey}`:`Bearer ${Qs.defaultAccessToken}`};Qs.apiEndpoint=new Ve({url:"https://api.bentley.com"});Qs.getExports=async function(e,t){let n=new Ve({url:`${Qs.apiEndpoint}mesh-export`,headers:{Authorization:Qs._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json",Prefer:"return=representation"},queryParameters:{iModelId:e,exportType:Qs.ExportType["3DTILES"],$top:"5",client:"CesiumJS"}});typeof CESIUM_VERSION<"u"&&n.appendQueryParameters({clientVersion:CESIUM_VERSION}),l(t)&&t!==""&&n.appendQueryParameters({changesetId:t});try{return await n.fetchJson()}catch(i){let o=JSON.parse(i.response);if(i.statusCode===401){let r=o.error.details?.[0].code??"";throw new de(`Unauthorized, bad token, wrong scopes or headers bad. ${r}`)}else{if(i.statusCode===403)throw console.error(o.error.code,o.error.message),new de("Not allowed, forbidden");if(i.statusCode===422)throw new de(`Unprocessable Entity:${o.error.code} ${o.error.message}`);if(i.statusCode===429)throw new de("Too many requests")}throw new de(`Unknown request failure ${i.statusCode}`)}};Qs.getRealityDataMetadata=async function(e,t){let n=new Ve({url:`${Qs.apiEndpoint}reality-management/reality-data/${t}`,headers:{Authorization:Qs._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{iTwinId:e}});try{return(await n.fetchJson()).realityData}catch(i){let o=JSON.parse(i.response);if(i.statusCode===401){let r=o.error.details?.[0].code??"";throw new de(`Unauthorized, bad token, wrong scopes or headers bad. ${r}`)}else{if(i.statusCode===403)throw console.error(o.error.code,o.error.message),new de("Not allowed, forbidden");if(i.statusCode===404)throw new de(`Reality data not found: ${e}, ${t}`);if(i.statusCode===422)throw new de(`Unprocessable Entity:${o.error.code} ${o.error.message}`);if(i.statusCode===429)throw new de("Too many requests")}throw new de(`Unknown request failure ${i.statusCode}`)}};Qs.getRealityDataURL=async function(e,t,n){let i=new Ve({url:`${Qs.apiEndpoint}reality-management/reality-data/${t}/readaccess`,headers:{Authorization:Qs._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{iTwinId:e}});try{let r=(await i.fetchJson())._links.containerUrl.href,s=new URL(r);return s.pathname=`${s.pathname}/${n}`,s.toString()}catch(o){let r=JSON.parse(o.response);if(o.statusCode===401){let s=r.error.details?.[0].code??"";throw new de(`Unauthorized, bad token, wrong scopes or headers bad. ${s}`)}else{if(o.statusCode===403)throw console.error(r.error.code,r.error.message),new de("Not allowed, forbidden");if(o.statusCode===404)throw new de(`Reality data not found: ${e}, ${t}`);if(o.statusCode===422)throw new de(`Unprocessable Entity:${r.error.code} ${r.error.message}`);if(o.statusCode===429)throw new de("Too many requests")}throw new de(`Unknown request failure ${o.statusCode}`)}};var oa=Qs;var qto=y(C(),1);var jv={};jv.type=void 0;jv.getRequiredDataPoints=Ae.throwInstantiationError;jv.interpolateOrderZero=Ae.throwInstantiationError;jv.interpolate=Ae.throwInstantiationError;var vq=jv;var eno=y(C(),1),eSt={GOOGLE:"GOOGLE",BING:"BING",DEFAULT:"DEFAULT"},ob=Object.freeze(eSt);var gno=y(C(),1);var ano=y(C(),1);function Nq(e){this._url=Ve.createIfNeeded(e),this._url.appendForwardSlash()}Object.defineProperties(Nq.prototype,{url:{get:function(){return this._url}},credit:{get:function(){}}});Nq.prototype.geocode=async function(e,t){return this._url.getDerivedResource({url:t===_y.AUTOCOMPLETE?"autocomplete":"search",queryParameters:{text:e}}).fetchJson().then(function(i){return i.features.map(function(o){let r,s=o.bbox;if(l(s))r=le.fromDegrees(s[0],s[1],s[2],s[3]);else{let a=o.geometry.coordinates[0],c=o.geometry.coordinates[1];r=m.fromDegrees(a,c)}return{displayName:o.properties.label,destination:r,attributions:i.attributions}})})};var qv=Nq;function tSt(e){if(!Object.values(ob).some(t=>t===e))throw new Ae(`Invalid geocodeProviderType: "${e}"`)}var LTe=Object.freeze({[ob.GOOGLE]:"google",[ob.BING]:"bing",[ob.DEFAULT]:void 0});function nSt(e){return LTe[e]}function iSt(e){return Object.entries(LTe).find(t=>t[1]===e)[0]}function Dq(e){e=e??Y.EMPTY_OBJECT;let t=e.geocodeProviderType??ob.DEFAULT,n=e.accessToken??Ah.defaultAccessToken,i=Ve.createIfNeeded(e.server??Ah.defaultServer);i.appendForwardSlash();let o=Ah.getDefaultTokenCredit(n);l(o)&&e.scene.frameState.creditDisplay.addStaticCredit(Gt.clone(o));let r=i.getDerivedResource({url:"v1/geocode"});l(n)&&r.appendQueryParameters({access_token:n}),this._accessToken=n,this._server=i,this._pelias=new qv(r),this.geocodeProviderType=t}Object.defineProperties(Dq.prototype,{credit:{get:function(){}},geocodeProviderType:{get:function(){return iSt(this._pelias.url.queryParameters.geocoder)},set:function(e){tSt(e);let t={...this._pelias.url.queryParameters,geocoder:nSt(e)};l(t.geocoder)||delete t.geocoder,this._pelias.url.setQueryParameters(t)}}});Dq.prototype.geocode=async function(e,t){return this._pelias.geocode(e,t)};var u_=Dq;var Cno=y(C(),1);function NY(){Ae.throwInstantiationError()}Object.defineProperties(NY.prototype,{ellipsoid:{get:Ae.throwInstantiationError}});NY.prototype.project=Ae.throwInstantiationError;NY.prototype.unproject=Ae.throwInstantiationError;var Qq=NY;var Tno=y(C(),1);function XL(e){e=e??Y.EMPTY_OBJECT;let t=e.weights,n=e.times;this._times=n,this._weights=t,this._count=t.length/n.length,this._lastTimeIndex=0}Object.defineProperties(XL.prototype,{times:{get:function(){return this._times}},weights:{get:function(){return this._weights}}});XL.prototype.findTimeInterval=yo.prototype.findTimeInterval;XL.prototype.wrapTime=yo.prototype.wrapTime;XL.prototype.clampTime=yo.prototype.clampTime;XL.prototype.evaluate=function(e,t){let n=this.weights,i=this.times,o=this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex),r=(e-i[o])/(i[o+1]-i[o]);l(t)||(t=new Array(this._count));for(let s=0;s<this._count;s++){let a=o*this._count+s;t[s]=n[a]*(1-r)+n[a+this._count]*r}return t};var Uq=XL;var wno=y(C(),1);function kq(e,t,n){e=Ve.createIfNeeded(e),e.appendForwardSlash(),e.setQueryParameters({key:t}),this._url=e,this._params=n??{},this._credit=new Gt('Geodata copyright <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors',!1)}Object.defineProperties(kq.prototype,{url:{get:function(){return this._url}},params:{get:function(){return this._params}},credit:{get:function(){return this._credit}}});kq.prototype.geocode=async function(e){return this._url.getDerivedResource({url:"json",queryParameters:Lt(this._params,{q:e})}).fetchJson().then(function(n){return n.results.map(function(i){let o,r=i.bounds;if(l(r))o=le.fromDegrees(r.southwest.lng,r.southwest.lat,r.northeast.lng,r.northeast.lat);else{let s=i.geometry.lat,a=i.geometry.lng;o=m.fromDegrees(s,a)}return{displayName:i.formatted,destination:o}})})};var Yq=kq;var Fno=y(C(),1);var oSt={packedLength:void 0,pack:Ae.throwInstantiationError,unpack:Ae.throwInstantiationError},Oq=oSt;var vno=y(C(),1);var rSt={packedInterpolationLength:void 0,convertPackedArrayForInterpolation:Ae.throwInstantiationError,unpackInterpolationResult:Ae.throwInstantiationError},Hq=rSt;var Qno=y(C(),1);function RTe(){Ae.throwInstantiationError()}RTe.prototype.getURL=Ae.throwInstantiationError;var zq=RTe;var rio=y(C(),1);function sSt(e,t,n,i,o,r,s){let a=Oi.numberOfPoints(e,t,o),c,d=n.red,u=n.green,h=n.blue,p=n.alpha,g=i.red,f=i.green,b=i.blue,x=i.alpha;if(U.equals(n,i)){for(c=0;c<a;c++)r[s++]=U.floatToByte(d),r[s++]=U.floatToByte(u),r[s++]=U.floatToByte(h),r[s++]=U.floatToByte(p);return s}let I=(g-d)/a,_=(f-u)/a,E=(b-h)/a,S=(x-p)/a,R=s;for(c=0;c<a;c++)r[R++]=U.floatToByte(d+c*I),r[R++]=U.floatToByte(u+c*_),r[R++]=U.floatToByte(h+c*E),r[R++]=U.floatToByte(p+c*S);return R}function $v(e){e=e??Y.EMPTY_OBJECT;let t=e.positions,n=e.colors,i=e.colorsPerVertex??!1;this._positions=t,this._colors=n,this._colorsPerVertex=i,this._arcType=e.arcType??dn.GEODESIC,this._granularity=e.granularity??Z.RADIANS_PER_DEGREE,this._ellipsoid=e.ellipsoid??ie.default,this._workerName="createSimplePolylineGeometry";let o=1+t.length*m.packedLength;o+=l(n)?1+n.length*U.packedLength:1,this.packedLength=o+ie.packedLength+3}$v.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=m.packedLength)m.pack(o[i],t,n);let s=e._colors;for(r=l(s)?s.length:0,t[n++]=r,i=0;i<r;++i,n+=U.packedLength)U.pack(s[i],t,n);return ie.pack(e._ellipsoid,t,n),n+=ie.packedLength,t[n++]=e._colorsPerVertex?1:0,t[n++]=e._arcType,t[n]=e._granularity,t};$v.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=m.packedLength)r[i]=m.unpack(e,t);o=e[t++];let s=o>0?new Array(o):void 0;for(i=0;i<o;++i,t+=U.packedLength)s[i]=U.unpack(e,t);let a=ie.unpack(e,t);t+=ie.packedLength;let c=e[t++]===1,d=e[t++],u=e[t];return l(n)?(n._positions=r,n._colors=s,n._ellipsoid=a,n._colorsPerVertex=c,n._arcType=d,n._granularity=u,n):new $v({positions:r,colors:s,ellipsoid:a,colorsPerVertex:c,arcType:d,granularity:u})};var DY=new Array(2),QY=new Array(2),aSt={positions:DY,height:QY,ellipsoid:void 0,minDistance:void 0,granularity:void 0};$v.createGeometry=function(e){let t=e._positions,n=e._colors,i=e._colorsPerVertex,o=e._arcType,r=e._granularity,s=e._ellipsoid,a=Z.chordLength(r,s.maximumRadius),c=l(n)&&!i,d,u=t.length,h,p,g,f,b=0;if(o===dn.GEODESIC||o===dn.RHUMB){let S,R,G;o===dn.GEODESIC?(S=Z.chordLength(r,s.maximumRadius),R=Oi.numberOfPoints,G=Oi.generateArc):(S=r,R=Oi.numberOfPointsRhumbLine,G=Oi.generateRhumbArc);let B=Oi.extractHeights(t,s),w=aSt;if(o===dn.GEODESIC?w.minDistance=a:w.granularity=r,w.ellipsoid=s,c){let F=0;for(d=0;d<u-1;d++)F+=R(t[d],t[d+1],S)+1;h=new Float64Array(F*3),g=new Uint8Array(F*4),w.positions=DY,w.height=QY;let P=0;for(d=0;d<u-1;++d){DY[0]=t[d],DY[1]=t[d+1],QY[0]=B[d],QY[1]=B[d+1];let A=G(w);if(l(n)){let T=A.length/3;f=n[d];for(let L=0;L<T;++L)g[P++]=U.floatToByte(f.red),g[P++]=U.floatToByte(f.green),g[P++]=U.floatToByte(f.blue),g[P++]=U.floatToByte(f.alpha)}h.set(A,b),b+=A.length}}else if(w.positions=t,w.height=B,h=new Float64Array(G(w)),l(n)){for(g=new Uint8Array(h.length/3*4),d=0;d<u-1;++d){let P=t[d],A=t[d+1],T=n[d],L=n[d+1];b=sSt(P,A,T,L,a,g,b)}let F=n[u-1];g[b++]=U.floatToByte(F.red),g[b++]=U.floatToByte(F.green),g[b++]=U.floatToByte(F.blue),g[b++]=U.floatToByte(F.alpha)}}else{p=c?u*2-2:u,h=new Float64Array(p*3),g=l(n)?new Uint8Array(p*4):void 0;let S=0,R=0;for(d=0;d<u;++d){let G=t[d];if(c&&d>0&&(m.pack(G,h,S),S+=3,f=n[d-1],g[R++]=U.floatToByte(f.red),g[R++]=U.floatToByte(f.green),g[R++]=U.floatToByte(f.blue),g[R++]=U.floatToByte(f.alpha)),c&&d===u-1)break;m.pack(G,h,S),S+=3,l(n)&&(f=n[d],g[R++]=U.floatToByte(f.red),g[R++]=U.floatToByte(f.green),g[R++]=U.floatToByte(f.blue),g[R++]=U.floatToByte(f.alpha))}}let x=new xn;x.position=new Ze({componentDatatype:J.DOUBLE,componentsPerAttribute:3,values:h}),l(n)&&(x.color=new Ze({componentDatatype:J.UNSIGNED_BYTE,componentsPerAttribute:4,values:g,normalize:!0})),p=h.length/3;let I=(p-1)*2,_=Me.createTypedArray(p,I),E=0;for(d=0;d<p-1;++d)_[E++]=d,_[E++]=d+1;return new pt({attributes:x,indices:_,primitiveType:We.LINES,boundingSphere:ue.fromPoints(t)})};var Kq=$v;var uio=y(C(),1);function WL(e){let t=e.radius??1,i={radii:new m(t,t,t),stackPartitions:e.stackPartitions,slicePartitions:e.slicePartitions,vertexFormat:e.vertexFormat};this._ellipsoidGeometry=new xa(i),this._workerName="createSphereGeometry"}WL.packedLength=xa.packedLength;WL.pack=function(e,t,n){return xa.pack(e._ellipsoidGeometry,t,n)};var cSt=new xa,Ty={radius:void 0,radii:new m,vertexFormat:new we,stackPartitions:void 0,slicePartitions:void 0};WL.unpack=function(e,t,n){let i=xa.unpack(e,t,cSt);return Ty.vertexFormat=we.clone(i._vertexFormat,Ty.vertexFormat),Ty.stackPartitions=i._stackPartitions,Ty.slicePartitions=i._slicePartitions,l(n)?(m.clone(i._radii,Ty.radii),n._ellipsoidGeometry=new xa(Ty),n):(Ty.radius=i._radii.x,new WL(Ty))};WL.createGeometry=function(e){return xa.createGeometry(e._ellipsoidGeometry)};var Jq=WL;var fio=y(C(),1);function Sy(e){}Object.defineProperties(Sy.prototype,{ellipsoid:{get:Ae.throwInstantiationError},rectangle:{get:Ae.throwInstantiationError},projection:{get:Ae.throwInstantiationError}});Sy.prototype.getNumberOfXTilesAtLevel=Ae.throwInstantiationError;Sy.prototype.getNumberOfYTilesAtLevel=Ae.throwInstantiationError;Sy.prototype.rectangleToNativeRectangle=Ae.throwInstantiationError;Sy.prototype.tileXYToNativeRectangle=Ae.throwInstantiationError;Sy.prototype.tileXYToRectangle=Ae.throwInstantiationError;Sy.prototype.positionToTileXY=Ae.throwInstantiationError;var jq=Sy;var Gio=y(C(),1);function lSt(e,t){this.rectangle=e,this.maxLevel=t}function VTe(e){this.ellipsoid=e.ellipsoid??ie.default,this.tilingScheme=void 0,this.heightmapWidth=void 0,this.heightmapHeight=void 0,this.levelZeroMaximumGeometricError=void 0,this.rectangles=[]}VTe.prototype.build=function(e){e._tilingScheme=this.tilingScheme,e._heightmapWidth=this.heightmapWidth,e._heightmapHeight=this.heightmapHeight,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._rectangles=this.rectangles};function dSt(e,t){let n=t.getElementsByTagName("SRS")[0].textContent;if(n==="EPSG:4326")e.tilingScheme=new ao({ellipsoid:e.ellipsoid});else throw new de(`SRS ${n} is not supported`);let i=t.getElementsByTagName("TileFormat")[0];e.heightmapWidth=parseInt(i.getAttribute("width"),10),e.heightmapHeight=parseInt(i.getAttribute("height"),10),e.levelZeroMaximumGeometricError=Es.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.ellipsoid,Math.min(e.heightmapWidth,e.heightmapHeight),e.tilingScheme.getNumberOfXTilesAtLevel(0));let o=t.getElementsByTagName("DataExtent");for(let r=0;r<o.length;++r){let s=o[r],a=Z.toRadians(parseFloat(s.getAttribute("minx"))),c=Z.toRadians(parseFloat(s.getAttribute("miny"))),d=Z.toRadians(parseFloat(s.getAttribute("maxx"))),u=Z.toRadians(parseFloat(s.getAttribute("maxy"))),h=parseInt(s.getAttribute("maxlevel"),10);e.rectangles.push(new lSt(new le(a,c,d,u),h))}}function uSt(e,t,n){let i=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(i=`${i}: ${t.message}`),vo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i),new de(i)}async function mSt(e,t,n){try{let i=await t.fetchXML();dSt(e,i)}catch(i){uSt(t,i,n)}}function Ly(e){e=e??Y.EMPTY_OBJECT,this._errorEvent=new Ce,this._terrainDataStructure={heightScale:1/1e3,heightOffset:-1e3,elementsPerHeight:3,stride:4,elementMultiplier:256,isBigEndian:!0,lowestEncodedHeight:0,highestEncodedHeight:256*256*256-1};let t=e.credit;typeof t=="string"&&(t=new Gt(t)),this._credit=t,this._tilingScheme=void 0,this._rectangles=[]}Object.defineProperties(Ly.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});Ly.fromUrl=async function(e,t){t=t??Y.EMPTY_OBJECT;let n=new VTe(t),i=Ve.createIfNeeded(e);await mSt(n,i);let o=new Ly(t);return n.build(o),o._resource=i,o};Ly.prototype.requestTileGeometry=function(e,t,n,i){let o=this._tilingScheme.getNumberOfYTilesAtLevel(n),s=this._resource.getDerivedResource({url:`${n}/${e}/${o-t-1}.tif`,queryParameters:{cesium:!0},request:i}).fetchImage({preferImageBitmap:!0});if(!l(s))return;let a=this;return Promise.resolve(s).then(function(c){return new yc({buffer:$m(c),width:a._heightmapWidth,height:a._heightmapHeight,childTileMask:hSt(a,e,t,n),structure:a._terrainDataStructure})})};Ly.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};var GTe=new le;function hSt(e,t,n,i){let o=e._tilingScheme,r=e._rectangles,s=o.tileXYToRectangle(t,n,i),a=0;for(let c=0;c<r.length&&a!==15;++c){let d=r[c];if(d.maxLevel<=i)continue;let u=d.rectangle,h=le.intersection(u,s,GTe);l(h)&&(UY(o,u,t*2,n*2,i+1)&&(a|=4),UY(o,u,t*2+1,n*2,i+1)&&(a|=8),UY(o,u,t*2,n*2+1,i+1)&&(a|=1),UY(o,u,t*2+1,n*2+1,i+1)&&(a|=2))}return a}function UY(e,t,n,i,o){let r=e.tileXYToRectangle(n,i,o);return l(le.intersection(r,t,GTe))}Ly.prototype.getTileDataAvailable=function(e,t,n){};Ly.prototype.loadTileDataAvailability=function(e,t,n){};var qq=Ly;var Pio=y(C(),1);function m_(e){e=e??Y.EMPTY_OBJECT,this._clock=void 0,this._element=void 0,this._clockSubscription=void 0,this._seekFunction=void 0,this._lastPlaybackRate=void 0,this.clock=e.clock,this.element=e.element,this.epoch=e.epoch??ze.MINIMUM_VALUE,this.tolerance=e.tolerance??1,this._seeking=!1,this._seekFunction=void 0,this._firstTickAfterSeek=!1}Object.defineProperties(m_.prototype,{clock:{get:function(){return this._clock},set:function(e){let t=this._clock;t!==e&&(l(t)&&(this._clockSubscription(),this._clockSubscription=void 0),l(e)&&(this._clockSubscription=e.onTick.addEventListener(m_.prototype._onTick,this)),this._clock=e)}},element:{get:function(){return this._element},set:function(e){let t=this._element;t!==e&&(l(t)&&t.removeEventListener("seeked",this._seekFunction,!1),l(e)&&(this._seeking=!1,this._seekFunction=fSt(this),e.addEventListener("seeked",this._seekFunction,!1)),this._element=e,this._seeking=!1,this._firstTickAfterSeek=!1)}}});m_.prototype.destroy=function(){return this.element=void 0,this.clock=void 0,me(this)};m_.prototype.isDestroyed=function(){return!1};m_.prototype._trySetPlaybackRate=function(e){if(this._lastPlaybackRate===e.multiplier)return;let t=this._element;try{t.playbackRate=e.multiplier}catch{t.playbackRate=0}this._lastPlaybackRate=e.multiplier};m_.prototype._onTick=function(e){let t=this._element;if(!l(t)||t.readyState<2)return;let n=t.paused,i=e.shouldAnimate;if(i===n&&(i?t.play():t.pause()),this._seeking||this._firstTickAfterSeek){this._firstTickAfterSeek=!1;return}this._trySetPlaybackRate(e);let o=e.currentTime,r=this.epoch??ze.MINIMUM_VALUE,s=j.secondsDifference(o,r),a=t.duration,c,d=t.currentTime;t.loop?(s=s%a,s<0&&(s=a-s),c=s):s>a?c=a:s<0?c=0:c=s;let u=i?this.tolerance??1:.001;Math.abs(c-d)>u&&(this._seeking=!0,t.currentTime=c)};function fSt(e){return function(){e._seeking=!1,e._firstTickAfterSeek=!0}}var $q=m_;var vio=y(C(),1),pSt={VK_FORMAT_UNDEFINED:0,VK_FORMAT_R4G4_UNORM_PACK8:1,VK_FORMAT_R4G4B4A4_UNORM_PACK16:2,VK_FORMAT_B4G4R4A4_UNORM_PACK16:3,VK_FORMAT_R5G6B5_UNORM_PACK16:4,VK_FORMAT_B5G6R5_UNORM_PACK16:5,VK_FORMAT_R5G5B5A1_UNORM_PACK16:6,VK_FORMAT_B5G5R5A1_UNORM_PACK16:7,VK_FORMAT_A1R5G5B5_UNORM_PACK16:8,VK_FORMAT_R8_UNORM:9,VK_FORMAT_R8_SNORM:10,VK_FORMAT_R8_USCALED:11,VK_FORMAT_R8_SSCALED:12,VK_FORMAT_R8_UINT:13,VK_FORMAT_R8_SINT:14,VK_FORMAT_R8_SRGB:15,VK_FORMAT_R8G8_UNORM:16,VK_FORMAT_R8G8_SNORM:17,VK_FORMAT_R8G8_USCALED:18,VK_FORMAT_R8G8_SSCALED:19,VK_FORMAT_R8G8_UINT:20,VK_FORMAT_R8G8_SINT:21,VK_FORMAT_R8G8_SRGB:22,VK_FORMAT_R8G8B8_UNORM:23,VK_FORMAT_R8G8B8_SNORM:24,VK_FORMAT_R8G8B8_USCALED:25,VK_FORMAT_R8G8B8_SSCALED:26,VK_FORMAT_R8G8B8_UINT:27,VK_FORMAT_R8G8B8_SINT:28,VK_FORMAT_R8G8B8_SRGB:29,VK_FORMAT_B8G8R8_UNORM:30,VK_FORMAT_B8G8R8_SNORM:31,VK_FORMAT_B8G8R8_USCALED:32,VK_FORMAT_B8G8R8_SSCALED:33,VK_FORMAT_B8G8R8_UINT:34,VK_FORMAT_B8G8R8_SINT:35,VK_FORMAT_B8G8R8_SRGB:36,VK_FORMAT_R8G8B8A8_UNORM:37,VK_FORMAT_R8G8B8A8_SNORM:38,VK_FORMAT_R8G8B8A8_USCALED:39,VK_FORMAT_R8G8B8A8_SSCALED:40,VK_FORMAT_R8G8B8A8_UINT:41,VK_FORMAT_R8G8B8A8_SINT:42,VK_FORMAT_R8G8B8A8_SRGB:43,VK_FORMAT_B8G8R8A8_UNORM:44,VK_FORMAT_B8G8R8A8_SNORM:45,VK_FORMAT_B8G8R8A8_USCALED:46,VK_FORMAT_B8G8R8A8_SSCALED:47,VK_FORMAT_B8G8R8A8_UINT:48,VK_FORMAT_B8G8R8A8_SINT:49,VK_FORMAT_B8G8R8A8_SRGB:50,VK_FORMAT_A8B8G8R8_UNORM_PACK32:51,VK_FORMAT_A8B8G8R8_SNORM_PACK32:52,VK_FORMAT_A8B8G8R8_USCALED_PACK32:53,VK_FORMAT_A8B8G8R8_SSCALED_PACK32:54,VK_FORMAT_A8B8G8R8_UINT_PACK32:55,VK_FORMAT_A8B8G8R8_SINT_PACK32:56,VK_FORMAT_A8B8G8R8_SRGB_PACK32:57,VK_FORMAT_A2R10G10B10_UNORM_PACK32:58,VK_FORMAT_A2R10G10B10_SNORM_PACK32:59,VK_FORMAT_A2R10G10B10_USCALED_PACK32:60,VK_FORMAT_A2R10G10B10_SSCALED_PACK32:61,VK_FORMAT_A2R10G10B10_UINT_PACK32:62,VK_FORMAT_A2R10G10B10_SINT_PACK32:63,VK_FORMAT_A2B10G10R10_UNORM_PACK32:64,VK_FORMAT_A2B10G10R10_SNORM_PACK32:65,VK_FORMAT_A2B10G10R10_USCALED_PACK32:66,VK_FORMAT_A2B10G10R10_SSCALED_PACK32:67,VK_FORMAT_A2B10G10R10_UINT_PACK32:68,VK_FORMAT_A2B10G10R10_SINT_PACK32:69,VK_FORMAT_R16_UNORM:70,VK_FORMAT_R16_SNORM:71,VK_FORMAT_R16_USCALED:72,VK_FORMAT_R16_SSCALED:73,VK_FORMAT_R16_UINT:74,VK_FORMAT_R16_SINT:75,VK_FORMAT_R16_SFLOAT:76,VK_FORMAT_R16G16_UNORM:77,VK_FORMAT_R16G16_SNORM:78,VK_FORMAT_R16G16_USCALED:79,VK_FORMAT_R16G16_SSCALED:80,VK_FORMAT_R16G16_UINT:81,VK_FORMAT_R16G16_SINT:82,VK_FORMAT_R16G16_SFLOAT:83,VK_FORMAT_R16G16B16_UNORM:84,VK_FORMAT_R16G16B16_SNORM:85,VK_FORMAT_R16G16B16_USCALED:86,VK_FORMAT_R16G16B16_SSCALED:87,VK_FORMAT_R16G16B16_UINT:88,VK_FORMAT_R16G16B16_SINT:89,VK_FORMAT_R16G16B16_SFLOAT:90,VK_FORMAT_R16G16B16A16_UNORM:91,VK_FORMAT_R16G16B16A16_SNORM:92,VK_FORMAT_R16G16B16A16_USCALED:93,VK_FORMAT_R16G16B16A16_SSCALED:94,VK_FORMAT_R16G16B16A16_UINT:95,VK_FORMAT_R16G16B16A16_SINT:96,VK_FORMAT_R16G16B16A16_SFLOAT:97,VK_FORMAT_R32_UINT:98,VK_FORMAT_R32_SINT:99,VK_FORMAT_R32_SFLOAT:100,VK_FORMAT_R32G32_UINT:101,VK_FORMAT_R32G32_SINT:102,VK_FORMAT_R32G32_SFLOAT:103,VK_FORMAT_R32G32B32_UINT:104,VK_FORMAT_R32G32B32_SINT:105,VK_FORMAT_R32G32B32_SFLOAT:106,VK_FORMAT_R32G32B32A32_UINT:107,VK_FORMAT_R32G32B32A32_SINT:108,VK_FORMAT_R32G32B32A32_SFLOAT:109,VK_FORMAT_R64_UINT:110,VK_FORMAT_R64_SINT:111,VK_FORMAT_R64_SFLOAT:112,VK_FORMAT_R64G64_UINT:113,VK_FORMAT_R64G64_SINT:114,VK_FORMAT_R64G64_SFLOAT:115,VK_FORMAT_R64G64B64_UINT:116,VK_FORMAT_R64G64B64_SINT:117,VK_FORMAT_R64G64B64_SFLOAT:118,VK_FORMAT_R64G64B64A64_UINT:119,VK_FORMAT_R64G64B64A64_SINT:120,VK_FORMAT_R64G64B64A64_SFLOAT:121,VK_FORMAT_B10G11R11_UFLOAT_PACK32:122,VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:123,VK_FORMAT_D16_UNORM:124,VK_FORMAT_X8_D24_UNORM_PACK32:125,VK_FORMAT_D32_SFLOAT:126,VK_FORMAT_S8_UINT:127,VK_FORMAT_D16_UNORM_S8_UINT:128,VK_FORMAT_D24_UNORM_S8_UINT:129,VK_FORMAT_D32_SFLOAT_S8_UINT:130,VK_FORMAT_BC1_RGB_UNORM_BLOCK:131,VK_FORMAT_BC1_RGB_SRGB_BLOCK:132,VK_FORMAT_BC1_RGBA_UNORM_BLOCK:133,VK_FORMAT_BC1_RGBA_SRGB_BLOCK:134,VK_FORMAT_BC2_UNORM_BLOCK:135,VK_FORMAT_BC2_SRGB_BLOCK:136,VK_FORMAT_BC3_UNORM_BLOCK:137,VK_FORMAT_BC3_SRGB_BLOCK:138,VK_FORMAT_BC4_UNORM_BLOCK:139,VK_FORMAT_BC4_SNORM_BLOCK:140,VK_FORMAT_BC5_UNORM_BLOCK:141,VK_FORMAT_BC5_SNORM_BLOCK:142,VK_FORMAT_BC6H_UFLOAT_BLOCK:143,VK_FORMAT_BC6H_SFLOAT_BLOCK:144,VK_FORMAT_BC7_UNORM_BLOCK:145,VK_FORMAT_BC7_SRGB_BLOCK:146,VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:147,VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:148,VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:149,VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:150,VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:151,VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:152,VK_FORMAT_EAC_R11_UNORM_BLOCK:153,VK_FORMAT_EAC_R11_SNORM_BLOCK:154,VK_FORMAT_EAC_R11G11_UNORM_BLOCK:155,VK_FORMAT_EAC_R11G11_SNORM_BLOCK:156,VK_FORMAT_ASTC_4x4_UNORM_BLOCK:157,VK_FORMAT_ASTC_4x4_SRGB_BLOCK:158,VK_FORMAT_ASTC_5x4_UNORM_BLOCK:159,VK_FORMAT_ASTC_5x4_SRGB_BLOCK:160,VK_FORMAT_ASTC_5x5_UNORM_BLOCK:161,VK_FORMAT_ASTC_5x5_SRGB_BLOCK:162,VK_FORMAT_ASTC_6x5_UNORM_BLOCK:163,VK_FORMAT_ASTC_6x5_SRGB_BLOCK:164,VK_FORMAT_ASTC_6x6_UNORM_BLOCK:165,VK_FORMAT_ASTC_6x6_SRGB_BLOCK:166,VK_FORMAT_ASTC_8x5_UNORM_BLOCK:167,VK_FORMAT_ASTC_8x5_SRGB_BLOCK:168,VK_FORMAT_ASTC_8x6_UNORM_BLOCK:169,VK_FORMAT_ASTC_8x6_SRGB_BLOCK:170,VK_FORMAT_ASTC_8x8_UNORM_BLOCK:171,VK_FORMAT_ASTC_8x8_SRGB_BLOCK:172,VK_FORMAT_ASTC_10x5_UNORM_BLOCK:173,VK_FORMAT_ASTC_10x5_SRGB_BLOCK:174,VK_FORMAT_ASTC_10x6_UNORM_BLOCK:175,VK_FORMAT_ASTC_10x6_SRGB_BLOCK:176,VK_FORMAT_ASTC_10x8_UNORM_BLOCK:177,VK_FORMAT_ASTC_10x8_SRGB_BLOCK:178,VK_FORMAT_ASTC_10x10_UNORM_BLOCK:179,VK_FORMAT_ASTC_10x10_SRGB_BLOCK:180,VK_FORMAT_ASTC_12x10_UNORM_BLOCK:181,VK_FORMAT_ASTC_12x10_SRGB_BLOCK:182,VK_FORMAT_ASTC_12x12_UNORM_BLOCK:183,VK_FORMAT_ASTC_12x12_SRGB_BLOCK:184,VK_FORMAT_G8B8G8R8_422_UNORM:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:1000156006,VK_FORMAT_R10X6_UNORM_PACK16:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:1000156016,VK_FORMAT_R12X4_UNORM_PACK16:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:1000156033,VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:1000054e3,VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:1000054001,VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:1000054002,VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:1000054003,VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:1000054004,VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:1000054005,VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:1000054006,VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:1000054007,VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT:1000066e3,VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT:1000066001,VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT:1000066002,VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT:1000066003,VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT:1000066004,VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT:1000066005,VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT:1000066006,VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT:1000066007,VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT:1000066008,VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT:1000066009,VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT:1000066010,VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT:1000066011,VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT:1000066012,VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT:1000066013,VK_FORMAT_G8B8G8R8_422_UNORM_KHR:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM_KHR:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR:1000156006,VK_FORMAT_R10X6_UNORM_PACK16_KHR:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR:1000156016,VK_FORMAT_R12X4_UNORM_PACK16_KHR:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM_KHR:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM_KHR:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR:1000156033},e$=Object.freeze(pSt);var Uio=y(C(),1);function ASt(e){return e=e??Y.EMPTY_OBJECT,c_.fromIonAssetId(2426648,{requestVertexNormals:e.requestVertexNormals??!1})}var eN=ASt;var zio=y(C(),1);function gSt(e){return e=e??Y.EMPTY_OBJECT,c_.fromIonAssetId(1,{requestVertexNormals:e.requestVertexNormals??!1,requestWaterMask:e.requestWaterMask??!1,ellipsoid:ie.WGS84})}var h_=gSt;var jio=y(C(),1);var bSt=1953029805,ySt=2917034100;function t$(e,t){if(t$.passThroughDataForTesting)return t;let n=e.byteLength;if(n===0||n%4!==0)throw new de("The length of key must be greater than 0 and a multiple of 4.");let i=new DataView(t),o=i.getUint32(0,!0);if(o===bSt||o===ySt)return t;let r=new DataView(e),s=0,a=t.byteLength,c=a-a%8,d=n,u,h=8;for(;s<c;)for(h=(h+8)%24,u=h;s<c&&u<d;)i.setUint32(s,i.getUint32(s,!0)^r.getUint32(u,!0),!0),i.setUint32(s+4,i.getUint32(s+4,!0)^r.getUint32(u+4,!0),!0),s+=8,u+=24;if(s<a)for(u>=d&&(h=(h+8)%24,u=h);s<a;)i.setUint8(s,i.getUint8(s)^r.getUint8(u)),s++,u++}t$.passThroughDataForTesting=!1;var tN=t$;var too=y(C(),1);function ZTe(e,t){return _r("defaultValue","defaultValue has been deprecated and will be removed in Cesium 1.134. Use the nullish coalescing operator instead: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing"),e??t}Object.defineProperty(ZTe,"EMPTY_OBJECT",{get:function(){return _r("defaultValue.EMPTY_OBJECT","defaultValue.EMPTY_OBJECT has been deprecated and will be removed in Cesium 1.134. Use Frozen.EMPTY_OBJECT instead"),Y.EMPTY_OBJECT}});var n$=ZTe;var soo=y(C(),1);var CSt=new m;function xSt(e,t,n,i){let o=Hy(e,t,n,i,CSt);return l(o)?o.x>0&&o.y>0&&o.z>0:!1}var i$=xSt;var coo=y(C(),1);function ISt(e){return e<=.04045?e*.07739938080495357:Math.pow((e+.055)*.9478672985781991,2.4)}var f_=ISt;var uoo=y(C(),1);function _St(e){switch(e){case ne.FLOAT:return"float";case ne.FLOAT_VEC2:return"vec2";case ne.FLOAT_VEC3:return"vec3";case ne.FLOAT_VEC4:return"vec4";case ne.FLOAT_MAT2:return"mat2";case ne.FLOAT_MAT3:return"mat3";case ne.FLOAT_MAT4:return"mat4";case ne.SAMPLER_2D:return"sampler2D";case ne.BOOL:return"bool"}}var o$=_St;var hoo=y(C(),1);function ESt(e,t,n){return function(){n.apply(e,arguments),t.apply(e,arguments)}}var nN=ESt;var goo=y(C(),1);var TSt=new m(1,1,1);function r$(e){e=e??TSt,this._dimensions=m.clone(e)}Object.defineProperties(r$.prototype,{dimensions:{get:function(){return this._dimensions},set:function(e){m.clone(e,this._dimensions)}}});var SSt=new m;r$.prototype.emit=function(e){let t=this._dimensions,n=m.multiplyByScalar(t,.5,SSt),i=Z.randomBetween(-n.x,n.x),o=Z.randomBetween(-n.y,n.y),r=Z.randomBetween(-n.z,n.z);e.position=m.fromElements(i,o,r,e.position),e.velocity=m.normalize(e.position,e.velocity)};var s$=r$;var Coo=y(C(),1);function vp(){this.featurePropertiesDirty=!1}Object.defineProperties(vp.prototype,{featuresLength:{get:function(){Ae.throwInstantiationError()}},pointsLength:{get:function(){Ae.throwInstantiationError()}},trianglesLength:{get:function(){Ae.throwInstantiationError()}},geometryByteLength:{get:function(){Ae.throwInstantiationError()}},texturesByteLength:{get:function(){Ae.throwInstantiationError()}},batchTableByteLength:{get:function(){Ae.throwInstantiationError()}},innerContents:{get:function(){Ae.throwInstantiationError()}},ready:{get:function(){Ae.throwInstantiationError()}},tileset:{get:function(){Ae.throwInstantiationError()}},tile:{get:function(){Ae.throwInstantiationError()}},url:{get:function(){Ae.throwInstantiationError()}},batchTable:{get:function(){Ae.throwInstantiationError()}},metadata:{get:function(){Ae.throwInstantiationError()},set:function(e){Ae.throwInstantiationError()}},group:{get:function(){Ae.throwInstantiationError()},set:function(e){Ae.throwInstantiationError()}}});vp.prototype.hasProperty=function(e,t){Ae.throwInstantiationError()};vp.prototype.getFeature=function(e){Ae.throwInstantiationError()};vp.prototype.applyDebugSettings=function(e,t){Ae.throwInstantiationError()};vp.prototype.applyStyle=function(e){Ae.throwInstantiationError()};vp.prototype.update=function(e,t){Ae.throwInstantiationError()};vp.prototype.pick=function(e,t,n){Ae.throwInstantiationError()};vp.prototype.isDestroyed=function(){Ae.throwInstantiationError()};vp.prototype.destroy=function(){Ae.throwInstantiationError()};var a$=vp;var Woo=y(C(),1);var Soo=y(C(),1);function FL(e,t){this._conditionsExpression=ke(e,!0),this._conditions=e.conditions,this._runtimeConditions=void 0,RSt(this,t)}Object.defineProperties(FL.prototype,{conditionsExpression:{get:function(){return this._conditionsExpression}}});function LSt(e,t){this.condition=e,this.expression=t}function RSt(e,t){let n=[],i=e._conditions;if(!l(i))return;let o=i.length;for(let r=0;r<o;++r){let s=i[r],a=String(s[0]),c=String(s[1]);n.push(new LSt(new $u(a,t),new $u(c,t)))}e._runtimeConditions=n}FL.prototype.evaluate=function(e,t){let n=this._runtimeConditions;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.condition.evaluate(e))return r.expression.evaluate(e,t)}};FL.prototype.evaluateColor=function(e,t){let n=this._runtimeConditions;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.condition.evaluate(e))return r.expression.evaluateColor(e,t)}};FL.prototype.getShaderFunction=function(e,t,n,i){let o=this._runtimeConditions;if(!l(o)||o.length===0)return;let r="",s=o.length;for(let a=0;a<s;++a){let c=o[a],d=c.condition.getShaderExpression(t,n),u=c.expression.getShaderExpression(t,n);r+=` ${a===0?"if":"else if"} (${d}) + { + return ${u}; + } +`}return r=`${i} ${e} +{ +${r} return ${i}(1.0); +} +`,r};FL.prototype.getVariables=function(){let e=[],t=this._runtimeConditions;if(!l(t)||t.length===0)return e;let n=t.length;for(let i=0;i<n;++i){let o=t[i];ci(e,o.condition.getVariables()),ci(e,o.expression.getVariables())}return e=e.filter(function(i,o,r){return r.indexOf(i)===o}),e};var iN=FL;function Ry(e){this._style={},this._ready=!1,this._show=void 0,this._color=void 0,this._pointSize=void 0,this._pointOutlineColor=void 0,this._pointOutlineWidth=void 0,this._labelColor=void 0,this._labelOutlineColor=void 0,this._labelOutlineWidth=void 0,this._font=void 0,this._labelStyle=void 0,this._labelText=void 0,this._backgroundColor=void 0,this._backgroundPadding=void 0,this._backgroundEnabled=void 0,this._scaleByDistance=void 0,this._translucencyByDistance=void 0,this._distanceDisplayCondition=void 0,this._heightOffset=void 0,this._anchorLineEnabled=void 0,this._anchorLineColor=void 0,this._image=void 0,this._disableDepthTestDistance=void 0,this._horizontalOrigin=void 0,this._verticalOrigin=void 0,this._labelHorizontalOrigin=void 0,this._labelVerticalOrigin=void 0,this._meta=void 0,this._colorShaderFunction=void 0,this._showShaderFunction=void 0,this._pointSizeShaderFunction=void 0,this._colorShaderFunctionReady=!1,this._showShaderFunctionReady=!1,this._pointSizeShaderFunctionReady=!1,this._colorShaderTranslucent=!1,VSt(this,e)}function VSt(e,t){t=ke(t,!0)??e._style,e._style=t,e.show=t.show,e.color=t.color,e.pointSize=t.pointSize,e.pointOutlineColor=t.pointOutlineColor,e.pointOutlineWidth=t.pointOutlineWidth,e.labelColor=t.labelColor,e.labelOutlineColor=t.labelOutlineColor,e.labelOutlineWidth=t.labelOutlineWidth,e.labelStyle=t.labelStyle,e.font=t.font,e.labelText=t.labelText,e.backgroundColor=t.backgroundColor,e.backgroundPadding=t.backgroundPadding,e.backgroundEnabled=t.backgroundEnabled,e.scaleByDistance=t.scaleByDistance,e.translucencyByDistance=t.translucencyByDistance,e.distanceDisplayCondition=t.distanceDisplayCondition,e.heightOffset=t.heightOffset,e.anchorLineEnabled=t.anchorLineEnabled,e.anchorLineColor=t.anchorLineColor,e.image=t.image,e.disableDepthTestDistance=t.disableDepthTestDistance,e.horizontalOrigin=t.horizontalOrigin,e.verticalOrigin=t.verticalOrigin,e.labelHorizontalOrigin=t.labelHorizontalOrigin,e.labelVerticalOrigin=t.labelVerticalOrigin;let n={};if(l(t.meta)){let i=t.defines,o=t.meta??Y.EMPTY_OBJECT;for(let r in o)o.hasOwnProperty(r)&&(n[r]=new $u(o[r],i))}e._meta=n,e._ready=!0}function br(e,t){let n=(e._style??Y.EMPTY_OBJECT).defines;if(l(t)){if(typeof t=="boolean"||typeof t=="number")return new $u(String(t));if(typeof t=="string")return new $u(t,n);if(l(t.conditions))return new iN(t,n)}else return;return t}function yr(e){if(l(e)){if(l(e.expression))return e.expression;if(l(e.conditionsExpression))return ke(e.conditionsExpression,!0)}else return;return e}Object.defineProperties(Ry.prototype,{style:{get:function(){return this._style}},show:{get:function(){return this._show},set:function(e){this._show=br(this,e),this._style.show=yr(this._show),this._showShaderFunctionReady=!1}},color:{get:function(){return this._color},set:function(e){this._color=br(this,e),this._style.color=yr(this._color),this._colorShaderFunctionReady=!1}},pointSize:{get:function(){return this._pointSize},set:function(e){this._pointSize=br(this,e),this._style.pointSize=yr(this._pointSize),this._pointSizeShaderFunctionReady=!1}},pointOutlineColor:{get:function(){return this._pointOutlineColor},set:function(e){this._pointOutlineColor=br(this,e),this._style.pointOutlineColor=yr(this._pointOutlineColor)}},pointOutlineWidth:{get:function(){return this._pointOutlineWidth},set:function(e){this._pointOutlineWidth=br(this,e),this._style.pointOutlineWidth=yr(this._pointOutlineWidth)}},labelColor:{get:function(){return this._labelColor},set:function(e){this._labelColor=br(this,e),this._style.labelColor=yr(this._labelColor)}},labelOutlineColor:{get:function(){return this._labelOutlineColor},set:function(e){this._labelOutlineColor=br(this,e),this._style.labelOutlineColor=yr(this._labelOutlineColor)}},labelOutlineWidth:{get:function(){return this._labelOutlineWidth},set:function(e){this._labelOutlineWidth=br(this,e),this._style.labelOutlineWidth=yr(this._labelOutlineWidth)}},font:{get:function(){return this._font},set:function(e){this._font=br(this,e),this._style.font=yr(this._font)}},labelStyle:{get:function(){return this._labelStyle},set:function(e){this._labelStyle=br(this,e),this._style.labelStyle=yr(this._labelStyle)}},labelText:{get:function(){return this._labelText},set:function(e){this._labelText=br(this,e),this._style.labelText=yr(this._labelText)}},backgroundColor:{get:function(){return this._backgroundColor},set:function(e){this._backgroundColor=br(this,e),this._style.backgroundColor=yr(this._backgroundColor)}},backgroundPadding:{get:function(){return this._backgroundPadding},set:function(e){this._backgroundPadding=br(this,e),this._style.backgroundPadding=yr(this._backgroundPadding)}},backgroundEnabled:{get:function(){return this._backgroundEnabled},set:function(e){this._backgroundEnabled=br(this,e),this._style.backgroundEnabled=yr(this._backgroundEnabled)}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){this._scaleByDistance=br(this,e),this._style.scaleByDistance=yr(this._scaleByDistance)}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){this._translucencyByDistance=br(this,e),this._style.translucencyByDistance=yr(this._translucencyByDistance)}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){this._distanceDisplayCondition=br(this,e),this._style.distanceDisplayCondition=yr(this._distanceDisplayCondition)}},heightOffset:{get:function(){return this._heightOffset},set:function(e){this._heightOffset=br(this,e),this._style.heightOffset=yr(this._heightOffset)}},anchorLineEnabled:{get:function(){return this._anchorLineEnabled},set:function(e){this._anchorLineEnabled=br(this,e),this._style.anchorLineEnabled=yr(this._anchorLineEnabled)}},anchorLineColor:{get:function(){return this._anchorLineColor},set:function(e){this._anchorLineColor=br(this,e),this._style.anchorLineColor=yr(this._anchorLineColor)}},image:{get:function(){return this._image},set:function(e){this._image=br(this,e),this._style.image=yr(this._image)}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance=br(this,e),this._style.disableDepthTestDistance=yr(this._disableDepthTestDistance)}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin=br(this,e),this._style.horizontalOrigin=yr(this._horizontalOrigin)}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){this._verticalOrigin=br(this,e),this._style.verticalOrigin=yr(this._verticalOrigin)}},labelHorizontalOrigin:{get:function(){return this._labelHorizontalOrigin},set:function(e){this._labelHorizontalOrigin=br(this,e),this._style.labelHorizontalOrigin=yr(this._labelHorizontalOrigin)}},labelVerticalOrigin:{get:function(){return this._labelVerticalOrigin},set:function(e){this._labelVerticalOrigin=br(this,e),this._style.labelVerticalOrigin=yr(this._labelVerticalOrigin)}},meta:{get:function(){return this._meta},set:function(e){this._meta=e}}});Ry.fromUrl=function(e){return Ve.createIfNeeded(e).fetchJson(e).then(function(n){return new Ry(n)})};Ry.prototype.getColorShaderFunction=function(e,t,n){return this._colorShaderFunctionReady?(n.translucent=this._colorShaderTranslucent,this._colorShaderFunction):(this._colorShaderFunctionReady=!0,l(this.color)&&l(this.color.getShaderFunction)?this._colorShaderFunction=this.color.getShaderFunction(e,t,n,"vec4"):this._colorShaderFunction=void 0,this._colorShaderTranslucent=n.translucent,this._colorShaderFunction)};Ry.prototype.getShowShaderFunction=function(e,t,n){return this._showShaderFunctionReady?this._showShaderFunction:(this._showShaderFunctionReady=!0,l(this.show)&&l(this.show.getShaderFunction)?this._showShaderFunction=this.show.getShaderFunction(e,t,n,"bool"):this._showShaderFunction=void 0,this._showShaderFunction)};Ry.prototype.getPointSizeShaderFunction=function(e,t,n){return this._pointSizeShaderFunctionReady?this._pointSizeShaderFunction:(this._pointSizeShaderFunctionReady=!0,l(this.pointSize)&&l(this.pointSize.getShaderFunction)?this._pointSizeShaderFunction=this.pointSize.getShaderFunction(e,t,n,"float"):this._pointSizeShaderFunction=void 0,this._pointSizeShaderFunction)};Ry.prototype.getVariables=function(){let e=[];return l(this.color)&&l(this.color.getVariables)&&ci(e,this.color.getVariables()),l(this.show)&&l(this.show.getVariables)&&ci(e,this.show.getVariables()),l(this.pointSize)&&l(this.pointSize.getVariables)&&ci(e,this.pointSize.getVariables()),e=e.filter(function(t,n,i){return i.indexOf(t)===n}),e};var p_=Ry;var uro=y(C(),1);var voo=y(C(),1);function oN(e){e=e??Y.EMPTY_OBJECT,this._maximumSubtreeCount=e.maximumSubtreeCount??0,this._subtreeRequestCounter=0,this._queue=new e_({comparator:oN.comparator})}oN.prototype.addSubtree=function(e){let t=new GSt(e,this._subtreeRequestCounter);this._subtreeRequestCounter++,this._queue.insert(t);let n=e.implicitCoordinates;if(n.level>0){let i=n.getParentSubtreeCoordinates(),o=this.find(i)}if(this._maximumSubtreeCount>0)for(;this._queue.length>this._maximumSubtreeCount&&this._queue.getMinimum()!==t;)this._queue.removeMinimum()};oN.prototype.find=function(e){let t=this._queue,n=t.internalArray,i=t.length;for(let o=0;o<i;o++){let r=n[o],a=r.subtree.implicitCoordinates;if(e.isEqual(a))return r.subtree}};oN.comparator=function(e,t){let n=e.subtree.implicitCoordinates,i=t.subtree.implicitCoordinates;return n.isAncestor(i)?1:i.isAncestor(n)?-1:e.stamp-t.stamp};function GSt(e,t){this.subtree=e,this.stamp=t}var rN=oN;function sN(e){e=e??Y.EMPTY_OBJECT;let{className:t,names:n,types:i,componentTypes:o,shape:r,dimensions:s,paddingBefore:a=m.ZERO.clone(),paddingAfter:c=m.ZERO.clone(),globalTransform:d=X.IDENTITY.clone(),shapeTransform:u=X.IDENTITY.clone(),minBounds:h,maxBounds:p,minimumValues:g,maximumValues:f,maximumTileCount:b}=e;this._shapeTransform=u,this._globalTransform=d,this._shape=r,this._minBounds=h,this._maxBounds=p,this._dimensions=s,this._paddingBefore=a,this._paddingAfter=c,this._className=t,this._names=n,this._types=i,this._componentTypes=o,this._metadataOrder=r===qa.ELLIPSOID?Um.Z_UP:Um.Y_UP,this._minimumValues=g,this._maximumValues=f,this._maximumTileCount=b,this._availableLevels=void 0,this._implicitTileset=void 0,this._subtreeCache=new rN}Object.defineProperties(sN.prototype,{globalTransform:{get:function(){return this._globalTransform}},shapeTransform:{get:function(){return this._shapeTransform}},shape:{get:function(){return this._shape}},minBounds:{get:function(){return this._minBounds}},maxBounds:{get:function(){return this._maxBounds}},dimensions:{get:function(){return this._dimensions}},paddingBefore:{get:function(){return this._paddingBefore}},paddingAfter:{get:function(){return this._paddingAfter}},className:{get:function(){return this._className}},names:{get:function(){return this._names}},types:{get:function(){return this._types}},componentTypes:{get:function(){return this._componentTypes}},metadataOrder:{get:function(){return this._metadataOrder}},minimumValues:{get:function(){return this._minimumValues}},maximumValues:{get:function(){return this._maximumValues}},maximumTileCount:{get:function(){return this._maximumTileCount}},availableLevels:{get:function(){return this._availableLevels}}});sN.fromUrl=async function(e){let t=Ve.createIfNeeded(e),n=await t.fetchJson();BSt(n);let i=vSt(n,t);await i.load();let{root:o}=n,r=Ii(n,"3DTILES_metadata")?n.extensions["3DTILES_metadata"]:n,s=new Gx({metadataJson:r,schema:i.schema}),a=o.content.extensions["3DTILES_content_voxels"],c=a.class,d=NSt(s,c);Object.assign(d,wSt(o)),l(o.transform)?d.globalTransform=X.unpack(o.transform):d.globalTransform=X.clone(X.IDENTITY),d.dimensions=m.unpack(a.dimensions),d.maximumTileCount=ZSt(s),l(a.padding)&&(d.paddingBefore=m.unpack(a.padding.before),d.paddingAfter=m.unpack(a.padding.after));let u=new sN(d),h=new Bx(t,o,i.schema);return u._implicitTileset=h,u._availableLevels=h.availableLevels,Mi.unload(i),u};function ZSt(e){if(l(e.tileset))return e.tileset.getPropertyBySemantic(kC.TILESET_TILE_COUNT)}function BSt(e){let t=e.root;if(!l(t.content))throw new de("Root must have content");if(!Ii(t.content,"3DTILES_content_voxels"))throw new de("Root tile content must have 3DTILES_content_voxels extension");if(!Ii(t,"3DTILES_implicit_tiling")&&!l(t.implicitTiling))throw new de("Root tile must have implicit tiling");if(!l(e.schema)&&!l(e.schemaUri)&&!Ii(e,"3DTILES_metadata"))throw new de("Tileset must have a metadata schema")}function wSt(e){let t=e.boundingVolume;if(l(t.box))return PSt(t.box);if(l(t.region))return XSt(t.region);if(Ii(t,"3DTILES_bounding_volume_cylinder"))return MSt(t.extensions["3DTILES_bounding_volume_cylinder"]);throw new de("Only box, region and 3DTILES_bounding_volume_cylinder are supported in Cesium3DTilesVoxelProvider")}function XSt(e){let t=e[0],n=e[1],i=e[2],o=e[3],r=e[4],s=e[5],a=X.fromScale(ie.WGS84.radii),c=new m(t,n,r),d=new m(i,o,s);return{shape:qa.ELLIPSOID,minBounds:c,maxBounds:d,shapeTransform:a}}var WSt=new m,FSt=new $;function PSt(e){let t=vn.unpack(e),n=$.getScale(t.halfAxes,WSt),i=$.getRotation(t.halfAxes,FSt);return{shape:qa.BOX,minBounds:m.negate(n,new m),maxBounds:m.clone(n),shapeTransform:X.fromRotationTranslation(i,t.center)}}function MSt(e){let{minRadius:t,maxRadius:n,height:i,minAngle:o=-Z.PI,maxAngle:r=Z.PI,translation:s=[0,0,0],rotation:a=[0,0,0,1]}=e,c=-.5*i+s[2],d=.5*i+s[2],u=X.fromTranslationQuaternionRotationScale(m.unpack(s),Pe.unpack(a),m.ONE);return{shape:qa.CYLINDER,minBounds:m.fromElements(t,o,c),maxBounds:m.fromElements(n,r,d),shapeTransform:u}}function vSt(e,t){let{schemaUri:n,schema:i}=e;return l(n)?Mi.getSchemaLoader({resource:t.getDerivedResource({url:n})}):Mi.getSchemaLoader({schema:i})}function NSt(e,t){let{schema:n,statistics:i}=e,o=i?.classes[t],r=n.classes[t].properties,s=Object.entries(r).map(([g,f])=>{let{type:b,componentType:x}=f,I=o?.properties[g].min,_=o?.properties[g].max,E=bt.getComponentCount(b),S=BTe(I,E),R=BTe(_,E);return{id:g,type:b,componentType:x,minValue:S,maxValue:R}}),a=s.map(g=>g.id),c=s.map(g=>g.type),d=s.map(g=>g.componentType),u=s.map(g=>g.minValue),h=s.map(g=>g.maxValue),p=u.some(l);return{className:t,names:a,types:c,componentTypes:d,minimumValues:p?u:void 0,maximumValues:p?h:void 0}}function BTe(e,t){if(!l(e))return;let n=Array.isArray(e)?e:[e];return Array.from({length:t},(i,o)=>n[o])}async function DSt(e,t){let n=e._implicitTileset,i=e._subtreeCache,o=i.find(t);if(l(o))return o;let r=n.subtreeUriTemplate.getDerivedResource({templateValues:t.getTemplateValues()}),s=n.baseResource.getDerivedResource({url:r.url}),a=await s.fetchArrayBuffer();if(o=i.find(t),l(o))return o;let c=rg(a);return o=await UC.fromSubtreeJson(s,c.jsonPayload,c.binaryPayload,n,t),i.addSubtree(o),o}sN.prototype.requestData=async function(e){e=e??Y.EMPTY_OBJECT;let{tileLevel:t=0,tileX:n=0,tileY:i=0,tileZ:o=0,keyframe:r=0}=e;if(r!==0)return Promise.reject("3D Tiles currently doesn't support time-dynamic data.");let s=this._implicitTileset,a=new wx({subdivisionScheme:s.subdivisionScheme,subtreeLevels:s.subtreeLevels,level:t,x:n,y:i,z:o}),c=a.isSubtreeRoot()&&a.level>0,d=c?a.getParentSubtreeCoordinates():a.getSubtreeCoordinates(),h=await DSt(this,d);if(!(c?h.childSubtreeIsAvailableAtCoordinates:h.tileIsAvailableAtCoordinates).call(h,a))return Promise.reject(`Tile is not available at level ${t}, x ${n}, y ${i}, z ${o}.`);let{contentUriTemplates:f,baseResource:b}=s,x=f[0].getDerivedResource({templateValues:a.getTemplateValues()}),I=b.getDerivedResource({url:x.url});return JI.fromGltf(I)};var c$=sN;var pro=y(C(),1);function l$(e){e=e??1,this._radius=e??1}Object.defineProperties(l$.prototype,{radius:{get:function(){return this._radius},set:function(e){this._radius=e}}});l$.prototype.emit=function(e){let t=Z.randomBetween(0,Z.TWO_PI),n=Z.randomBetween(0,this._radius),i=n*Math.cos(t),o=n*Math.sin(t),r=0;e.position=m.fromElements(i,o,r,e.position),e.velocity=m.clone(m.UNIT_Z,e.velocity)};var aN=l$;var rso=y(C(),1);var gro=y(C(),1),d$={CUMULUS:0};d$.validate=function(e){return e===d$.CUMULUS};var PL=Object.freeze(d$);var Ero=y(C(),1);function Cf(e,t){if(e=e??Y.EMPTY_OBJECT,this._show=e.show??!0,this._position=m.clone(e.position??m.ZERO),!l(e.scale)&&l(e.maximumSize))this._maximumSize=m.clone(e.maximumSize),this._scale=new D(this._maximumSize.x,this._maximumSize.y);else{this._scale=D.clone(e.scale??new D(20,12));let n=new m(this._scale.x,this._scale.y,Math.min(this._scale.x,this._scale.y)/1.5);this._maximumSize=m.clone(e.maximumSize??n)}this._slice=e.slice??-1,this._color=U.clone(e.color??U.WHITE),this._brightness=e.brightness??1,this._cloudCollection=t,this._index=-1}var QSt=Cf.SHOW_INDEX=0,USt=Cf.POSITION_INDEX=1,kSt=Cf.SCALE_INDEX=2,YSt=Cf.MAXIMUM_SIZE_INDEX=3,OSt=Cf.SLICE_INDEX=4,HSt=Cf.BRIGHTNESS_INDEX=5,zSt=Cf.COLOR_INDEX=6;Cf.NUMBER_OF_PROPERTIES=7;function A_(e,t){let n=e._cloudCollection;l(n)&&(n._updateCloud(e,t),e._dirty=!0)}Object.defineProperties(Cf.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,A_(this,QSt))}},position:{get:function(){return this._position},set:function(e){let t=this._position;m.equals(t,e)||(m.clone(e,t),A_(this,USt))}},scale:{get:function(){return this._scale},set:function(e){let t=this._scale;D.equals(t,e)||(D.clone(e,t),A_(this,kSt))}},maximumSize:{get:function(){return this._maximumSize},set:function(e){let t=this._maximumSize;m.equals(t,e)||(m.clone(e,t),A_(this,YSt))}},color:{get:function(){return this._color},set:function(e){let t=this._color;U.equals(t,e)||(U.clone(e,t),A_(this,zSt))}},slice:{get:function(){return this._slice},set:function(e){this._slice!==e&&(this._slice=e,A_(this,OSt))}},brightness:{get:function(){return this._brightness},set:function(e){this._brightness!==e&&(this._brightness=e,A_(this,HSt))}}});Cf.prototype._destroy=function(){this._cloudCollection=void 0};var Bu=Cf;var wu,kY=new m,KSt={positionHighAndScaleX:0,positionLowAndScaleY:1,packedAttribute0:2,packedAttribute1:3,color:4},JSt={direction:0,positionHighAndScaleX:1,positionLowAndScaleY:2,packedAttribute0:3,packedAttribute1:4,color:5},jSt=Bu.SHOW_INDEX,qSt=Bu.POSITION_INDEX,$St=Bu.SCALE_INDEX,eLt=Bu.MAXIMUM_SIZE_INDEX,tLt=Bu.SLICE_INDEX,nLt=Bu.BRIGHTNESS_INDEX,iLt=Bu.NUMBER_OF_PROPERTIES,oLt=Bu.COLOR_INDEX;function xf(e){e=e??Y.EMPTY_OBJECT,this._clouds=[],this._cloudsToUpdate=[],this._cloudsToUpdateIndex=0,this._cloudsRemoved=!1,this._createVertexArray=!1,this._propertiesChanged=new Uint32Array(iLt),this._noiseTexture=void 0,this._textureSliceWidth=128,this._noiseTextureRows=4,this.noiseDetail=e.noiseDetail??16,this.noiseOffset=m.clone(e.noiseOffset??m.ZERO),this._loading=!1,this._ready=!1;let t=this;this._uniforms={u_noiseTexture:function(){return t._noiseTexture},u_noiseTextureDimensions:wTe(t),u_noiseDetail:function(){return t.noiseDetail}},this._vaNoise=void 0,this._spNoise=void 0,this._spCreated=!1,this._sp=void 0,this._rs=void 0,this.show=e.show??!0,this._colorCommands=[],this.debugBillboards=e.debugBillboards??!1,this._compiledDebugBillboards=!1,this.debugEllipsoids=e.debugEllipsoids??!1,this._compiledDebugEllipsoids=!1}function wTe(e){return function(){return kY.x=e._textureSliceWidth,kY.y=e._noiseTextureRows,kY.z=1/e._noiseTextureRows,kY}}Object.defineProperties(xf.prototype,{length:{get:function(){return m$(this),this._clouds.length}}});function XTe(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}xf.prototype.add=function(e){e=e??Y.EMPTY_OBJECT;let t=e.cloudType??PL.CUMULUS,n;return t===PL.CUMULUS&&(n=new Bu(e,this),n._index=this._clouds.length,this._clouds.push(n),this._createVertexArray=!0),n};xf.prototype.remove=function(e){return this.contains(e)?(this._clouds[e._index]=void 0,this._cloudsRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};xf.prototype.removeAll=function(){XTe(this._clouds),this._clouds=[],this._cloudsToUpdate=[],this._cloudsToUpdateIndex=0,this._cloudsRemoved=!1,this._createVertexArray=!0};function m$(e){if(e._cloudsRemoved){e._cloudsRemoved=!1;let t=[],n=e._clouds,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];l(s)&&(n._index=r++,t.push(s))}e._clouds=t}}xf.prototype._updateCloud=function(e,t){e._dirty||(this._cloudsToUpdate[this._cloudsToUpdateIndex++]=e),++this._propertiesChanged[t]};xf.prototype.contains=function(e){return l(e)&&e._cloudCollection===this};xf.prototype.get=function(e){return m$(this),this._clouds[e]};var rLt=new Float32Array([-1,-1,1,-1,1,1,-1,1]),sLt=new Uint16Array([0,1,2,0,2,3]);function aLt(e){let t=It.createVertexBuffer({context:e,typedArray:rLt,usage:Ne.STATIC_DRAW}),n=It.createIndexBuffer({context:e,typedArray:sLt,usage:Ne.STATIC_DRAW,indexDatatype:Me.UNSIGNED_SHORT}),i=[{index:0,vertexBuffer:t,componentsPerAttribute:2,componentDatatype:J.FLOAT}];return new ui({context:e,attributes:i,indexBuffer:n})}var h$;function cLt(e){let n=e.cache.cloudCollection_indexBufferBatched;if(l(n))return n;let i=16384*6-6,o=new Uint16Array(i);for(let r=0,s=0;r<i;r+=6,s+=4)o[r]=s,o[r+1]=s+1,o[r+2]=s+2,o[r+3]=s,o[r+4]=s+2,o[r+5]=s+3;return n=It.createIndexBuffer({context:e,typedArray:o,usage:Ne.STATIC_DRAW,indexDatatype:Me.UNSIGNED_SHORT}),n.vertexArrayDestroyable=!1,e.cache.cloudCollection_indexBufferBatched=n,n}function lLt(e){let t=e.cache.cloudCollection_indexBufferInstanced;return l(t)||(t=It.createIndexBuffer({context:e,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Ne.STATIC_DRAW,indexDatatype:Me.UNSIGNED_SHORT}),t.vertexArrayDestroyable=!1,e.cache.cloudCollection_indexBufferInstanced=t),t}function dLt(e){let t=e.cache.cloudCollection_vertexBufferInstanced;return l(t)||(t=It.createVertexBuffer({context:e,typedArray:new Float32Array([0,0,1,0,1,1,0,1]),usage:Ne.STATIC_DRAW}),t.vertexArrayDestroyable=!1,e.cache.cloudCollection_vertexBufferInstanced=t),t}function uLt(e,t,n){let i=[{index:wu.positionHighAndScaleX,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:Ne.STATIC_DRAW},{index:wu.positionLowAndScaleY,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:Ne.STATIC_DRAW},{index:wu.packedAttribute0,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:Ne.STATIC_DRAW},{index:wu.packedAttribute1,componentsPerAttribute:4,componentDatatype:J.FLOAT,usage:Ne.STATIC_DRAW},{index:wu.color,componentsPerAttribute:4,componentDatatype:J.UNSIGNED_BYTE,normalize:!0,usage:Ne.STATIC_DRAW}];n&&i.push({index:wu.direction,componentsPerAttribute:2,componentDatatype:J.FLOAT,vertexBuffer:dLt(e)});let o=n?t:4*t;return new zA(e,i,o,n)}var u$=new ni;function WTe(e,t,n,i){let o,r=n[wu.positionHighAndScaleX],s=n[wu.positionLowAndScaleY],a=i.position;ni.fromCartesian(a,u$);let c=i.scale,d=u$.high,u=u$.low;e._instanced?(o=i._index,r(o,d.x,d.y,d.z,c.x),s(o,u.x,u.y,u.z,c.y)):(o=i._index*4,r(o+0,d.x,d.y,d.z,c.x),r(o+1,d.x,d.y,d.z,c.x),r(o+2,d.x,d.y,d.z,c.x),r(o+3,d.x,d.y,d.z,c.x),s(o+0,u.x,u.y,u.z,c.y),s(o+1,u.x,u.y,u.z,c.y),s(o+2,u.x,u.y,u.z,c.y),s(o+3,u.x,u.y,u.z,c.y))}function FTe(e,t,n,i){let o,r=n[wu.packedAttribute0],s=i.show,a=i.brightness;e._instanced?(o=i._index,r(o,s,a,0,0)):(o=i._index*4,r(o+0,s,a,0,0),r(o+1,s,a,1,0),r(o+2,s,a,1,1),r(o+3,s,a,0,1))}function PTe(e,t,n,i){let o,r=n[wu.packedAttribute1],s=i.maximumSize,a=i.slice;e._instanced?(o=i._index,r(o,s.x,s.y,s.z,a)):(o=i._index*4,r(o+0,s.x,s.y,s.z,a),r(o+1,s.x,s.y,s.z,a),r(o+2,s.x,s.y,s.z,a),r(o+3,s.x,s.y,s.z,a))}function MTe(e,t,n,i){let o,r=n[wu.color],s=i.color,a=U.floatToByte(s.red),c=U.floatToByte(s.green),d=U.floatToByte(s.blue),u=U.floatToByte(s.alpha);e._instanced?(o=i._index,r(o,a,c,d,u)):(o=i._index*4,r(o+0,a,c,d,u),r(o+1,a,c,d,u),r(o+2,a,c,d,u),r(o+3,a,c,d,u))}function mLt(e,t,n,i){WTe(e,t,n,i),FTe(e,t,n,i),PTe(e,t,n,i),MTe(e,t,n,i)}function hLt(e,t,n,i){let o=e,r=o._textureSliceWidth,s=o._noiseTextureRows,a=t.context;o._vaNoise=aLt(a),o._spNoise=ln.fromCache({context:a,vertexShaderSource:n,fragmentShaderSource:i,attributeLocations:{position:0}});let c=o.noiseDetail,d=o.noiseOffset;o._noiseTexture=new Wt({context:a,width:r*r/s,height:r*s,pixelDatatype:Ye.UNSIGNED_BYTE,pixelFormat:tt.RGBA,sampler:new sn({wrapS:Ln.REPEAT,wrapT:Ln.REPEAT,minificationFilter:en.NEAREST,magnificationFilter:pi.NEAREST})});let u=new Il({vertexArray:o._vaNoise,shaderProgram:o._spNoise,outputTexture:o._noiseTexture,uniformMap:{u_noiseTextureDimensions:wTe(o),u_noiseDetail:function(){return c},u_noiseOffset:function(){return d}},persists:!1,owner:e,postExecute:function(h){o._ready=!0,o._loading=!1}});t.commandList.push(u),o._loading=!0}function fLt(e,t){let n=e,i=t.context;n._createVertexArray=!1,n._vaf=n._vaf&&n._vaf.destroy();let o=e._clouds,r=o.length;if(r>0){n._vaf=uLt(i,r,n._instanced);let s=n._vaf.writers,a;for(a=0;a<r;++a){let c=o[a];mLt(e,t,s,c)}n._vaf.commit(h$(i))}}var pLt=[];function ALt(e,t){let n=t.context,i=e,r=i._clouds.length,s=i._cloudsToUpdate,a=i._cloudsToUpdateIndex,c=i._propertiesChanged,d=pLt;d.length=0,(c[qSt]||c[$St])&&d.push(WTe),(c[jSt]||c[nLt])&&d.push(FTe),(c[eLt]||c[tLt])&&d.push(PTe),c[oLt]&&d.push(MTe);let u=d.length,h=i._vaf.writers,p,g,f;if(a/r>.1){for(p=0;p<a;++p)for(g=s[p],g._dirty=!1,f=0;f<u;++f)d[f](e,t,h,g);i._vaf.commit(h$(n))}else{for(p=0;p<a;++p){for(g=s[p],g._dirty=!1,f=0;f<u;++f)d[f](e,t,h,g);i._instanced?i._vaf.subCommit(g._index,1):i._vaf.subCommit(g._index*4,4)}i._vaf.endSubCommits()}i._cloudsToUpdateIndex=0}function gLt(e,t,n,i){let o=t.context,r=e,s=new Oe({defines:[],sources:[n]});r._instanced&&s.defines.push("INSTANCED");let a=new Oe({defines:[],sources:[i]});r.debugBillboards&&a.defines.push("DEBUG_BILLBOARDS"),r.debugEllipsoids&&a.defines.push("DEBUG_ELLIPSOIDS"),r._sp=ln.replaceCache({context:o,shaderProgram:r._sp,vertexShaderSource:s,fragmentShaderSource:a,attributeLocations:wu}),r._rs=Qe.fromCache({depthTest:{enabled:!0,func:ne.LESS},depthMask:!1,blending:bn.ALPHA_BLEND}),r._spCreated=!0,r._compiledDebugBillboards=r.debugBillboards,r._compiledDebugEllipsoids=r.debugEllipsoids}function bLt(e,t){let n=e,i=t.passes,o=n._uniforms,r=t.commandList;if(i.render){let s=n._colorCommands,a=n._vaf.va,c=a.length;s.length=c;for(let d=0;d<c;d++){let u=s[d];l(u)||(u=s[d]=new ot),u.pass=Ge.TRANSLUCENT,u.owner=e,u.uniformMap=o,u.count=a[d].indicesCount,u.vertexArray=a[d].va,u.shaderProgram=n._sp,u.renderState=n._rs,n._instanced&&(u.count=6,u.instanceCount=n._clouds.length),r.push(u)}}}xf.prototype.update=function(e){if(m$(this),!this.show)return;let t=this.debugBillboards||this.debugEllipsoids;this._ready=t?!0:l(this._noiseTexture),!this._ready&&!this._loading&&!t&&hLt(this,e,hP,mP),this._instanced=e.context.instancedArrays,wu=this._instanced?JSt:KSt,h$=this._instanced?lLt:cLt;let i=this._clouds.length,o=this._cloudsToUpdate,r=this._cloudsToUpdateIndex;this._createVertexArray?fLt(this,e):r>0&&ALt(this,e),r>i*1.5&&(o.length=i),!(!l(this._vaf)||!l(this._vaf.va)||!this._ready&!t)&&((!this._spCreated||this.debugBillboards!==this._compiledDebugBillboards||this.debugEllipsoids!==this._compiledDebugEllipsoids)&&gLt(this,e,uP,dP),bLt(this,e))};xf.prototype.isDestroyed=function(){return!1};xf.prototype.destroy=function(){return this._noiseTexture=this._noiseTexture&&this._noiseTexture.destroy(),this._sp=this._sp&&this._sp.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),XTe(this._clouds),me(this)};var f$=xf;var lso=y(C(),1);var yLt=Z.toRadians(30);function p$(e){this._angle=e??yLt}Object.defineProperties(p$.prototype,{angle:{get:function(){return this._angle},set:function(e){this._angle=e}}});p$.prototype.emit=function(e){let t=Math.tan(this._angle),n=Z.randomBetween(0,Z.TWO_PI),i=Z.randomBetween(0,t),o=i*Math.cos(n),r=i*Math.sin(n),s=1;e.velocity=m.fromElements(o,r,s,e.velocity),m.normalize(e.velocity,e.velocity),e.position=m.clone(m.ZERO,e.position)};var A$=p$;var fso=y(C(),1);function cN(e){e=e??Y.EMPTY_OBJECT;let t=e.attributeName,n=e.perInstanceAttribute;l(n)||(n=!1);let i=e.glslDatatype??"vec3",o=`v_${t}`,r;if(t==="normal"||t==="tangent"||t==="bitangent")r=`vec4 getColor() { return vec4((${o} + vec3(1.0)) * 0.5, 1.0); } +`;else switch(t==="st"&&(i="vec2"),i){case"float":r=`vec4 getColor() { return vec4(vec3(${o}), 1.0); } +`;break;case"vec2":r=`vec4 getColor() { return vec4(${o}, 0.0, 1.0); } +`;break;case"vec3":r=`vec4 getColor() { return vec4(${o}, 1.0); } +`;break;case"vec4":r=`vec4 getColor() { return ${o}; } +`;break}let s=`in vec3 position3DHigh; +in vec3 position3DLow; +in float batchId; +${n?"":`in ${i} ${t}; +`}out ${i} ${o}; +void main() +{ +vec4 p = czm_translateRelativeToEye(position3DHigh, position3DLow); +${n?`${o} = czm_batchTable_${t}(batchId); +`:`${o} = ${t}; +`}gl_Position = czm_modelViewProjectionRelativeToEye * p; +}`,a=`in ${i} ${o}; +${r} +void main() +{ +out_FragColor = getColor(); +}`;this.material=void 0,this.translucent=e.translucent??!1,this._vertexShaderSource=e.vertexShaderSource??s,this._fragmentShaderSource=e.fragmentShaderSource??a,this._renderState=go.getDefaultRenderState(!1,!1,e.renderState),this._closed=e.closed??!1,this._attributeName=t,this._glslDatatype=i}Object.defineProperties(cN.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},attributeName:{get:function(){return this._attributeName}},glslDatatype:{get:function(){return this._glslDatatype}}});cN.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;cN.prototype.isTranslucent=go.prototype.isTranslucent;cN.prototype.getRenderState=go.prototype.getRenderState;var g$=cN;var Lso=y(C(),1);function YY(e){e=e??Y.EMPTY_OBJECT,this.length=e.length??1e7,this._length=void 0,this.width=e.width??2,this._width=void 0,this.show=e.show??!0,this.modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this._modelMatrix=new X,this.id=e.id,this._id=void 0,this._primitive=void 0}YY.prototype.update=function(e){if(this.show){if(!l(this._primitive)||!X.equals(this._modelMatrix,this.modelMatrix)||this._length!==this.length||this._width!==this.width||this._id!==this.id){this._modelMatrix=X.clone(this.modelMatrix,this._modelMatrix),this._length=this.length,this._width=this.width,this._id=this.id,l(this._primitive)&&this._primitive.destroy(),this.modelMatrix[12]===0&&this.modelMatrix[13]===0&&this.modelMatrix[14]===0&&(this.modelMatrix[14]=.01);let t=new wt({geometry:new Zg({positions:[m.ZERO,m.UNIT_X],width:this.width,vertexFormat:bs.VERTEX_FORMAT,colors:[U.RED,U.RED],arcType:dn.NONE}),modelMatrix:X.multiplyByUniformScale(this.modelMatrix,this.length,new X),id:this.id,pickPrimitive:this}),n=new wt({geometry:new Zg({positions:[m.ZERO,m.UNIT_Y],width:this.width,vertexFormat:bs.VERTEX_FORMAT,colors:[U.GREEN,U.GREEN],arcType:dn.NONE}),modelMatrix:X.multiplyByUniformScale(this.modelMatrix,this.length,new X),id:this.id,pickPrimitive:this}),i=new wt({geometry:new Zg({positions:[m.ZERO,m.UNIT_Z],width:this.width,vertexFormat:bs.VERTEX_FORMAT,colors:[U.BLUE,U.BLUE],arcType:dn.NONE}),modelMatrix:X.multiplyByUniformScale(this.modelMatrix,this.length,new X),id:this.id,pickPrimitive:this});this._primitive=new Nn({geometryInstances:[t,n,i],appearance:new bs,asynchronous:!1})}this._primitive.update(e)}};YY.prototype.isDestroyed=function(){return!1};YY.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),me(this)};var lN=YY;var Zso=y(C(),1);function CLt(e){this.direction=m.clone(e.direction),this.color=U.clone(e.color??U.WHITE),this.intensity=e.intensity??1}var b$=CLt;var kso=y(C(),1);var wso=y(C(),1),dN=`in vec3 v_positionMC; +in vec3 v_positionEC; +in vec2 v_st; + +void main() +{ + czm_materialInput materialInput; + + vec3 normalEC = normalize(czm_normal3D * czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0))); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + materialInput.s = v_st.s; + materialInput.st = v_st; + materialInput.str = vec3(v_st, 0.0); + + // Convert tangent space material normal to eye space + materialInput.normalEC = normalEC; + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, materialInput.normalEC); + + // Convert view vector to world space + vec3 positionToEyeEC = -v_positionEC; + materialInput.positionToEyeEC = positionToEyeEC; + + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} +`;var Wso=y(C(),1),uN=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec2 st; +in float batchId; + +out vec3 v_positionMC; +out vec3 v_positionEC; +out vec2 v_st; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionMC = position3DHigh + position3DLow; // position in model coordinates + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_st = st; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;function g_(e){e=e??Y.EMPTY_OBJECT;let t=e.translucent??!0,n=e.aboveGround??!1;this.material=l(e.material)?e.material:so.fromType(so.ColorType),this.translucent=e.translucent??!0,this._vertexShaderSource=e.vertexShaderSource??uN,this._fragmentShaderSource=e.fragmentShaderSource??dN,this._renderState=go.getDefaultRenderState(t,!n,e.renderState),this._closed=!1,this._flat=e.flat??!1,this._faceForward=e.faceForward??n,this._aboveGround=n}Object.defineProperties(g_.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return g_.VERTEX_FORMAT}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}},aboveGround:{get:function(){return this._aboveGround}}});g_.VERTEX_FORMAT=we.POSITION_AND_ST;g_.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;g_.prototype.isTranslucent=go.prototype.isTranslucent;g_.prototype.getRenderState=go.prototype.getRenderState;var y$=g_;var jso=y(C(),1);function Sd(e){this._scene=e.scene,this.samplingWindow=e.samplingWindow??Sd.defaultSettings.samplingWindow,this.quietPeriod=e.quietPeriod??Sd.defaultSettings.quietPeriod,this.warmupPeriod=e.warmupPeriod??Sd.defaultSettings.warmupPeriod,this.minimumFrameRateDuringWarmup=e.minimumFrameRateDuringWarmup??Sd.defaultSettings.minimumFrameRateDuringWarmup,this.minimumFrameRateAfterWarmup=e.minimumFrameRateAfterWarmup??Sd.defaultSettings.minimumFrameRateAfterWarmup,this._lowFrameRate=new Ce,this._nominalFrameRate=new Ce,this._frameTimes=[],this._needsQuietPeriod=!0,this._quietPeriodEndTime=0,this._warmupPeriodEndTime=0,this._frameRateIsLow=!1,this._lastFramesPerSecond=void 0,this._pauseCount=0;let t=this;this._preUpdateRemoveListener=this._scene.preUpdate.addEventListener(function(o,r){xLt(t,r)}),this._hiddenPropertyName=document.hidden!==void 0?"hidden":document.mozHidden!==void 0?"mozHidden":document.msHidden!==void 0?"msHidden":document.webkitHidden!==void 0?"webkitHidden":void 0;let n=document.hidden!==void 0?"visibilitychange":document.mozHidden!==void 0?"mozvisibilitychange":document.msHidden!==void 0?"msvisibilitychange":document.webkitHidden!==void 0?"webkitvisibilitychange":void 0;function i(){ILt(t)}this._visibilityChangeRemoveListener=void 0,l(n)&&(document.addEventListener(n,i,!1),this._visibilityChangeRemoveListener=function(){document.removeEventListener(n,i,!1)})}Sd.defaultSettings={samplingWindow:5,quietPeriod:2,warmupPeriod:5,minimumFrameRateDuringWarmup:4,minimumFrameRateAfterWarmup:8};Sd.fromScene=function(e){return(!l(e._frameRateMonitor)||e._frameRateMonitor.isDestroyed())&&(e._frameRateMonitor=new Sd({scene:e})),e._frameRateMonitor};Object.defineProperties(Sd.prototype,{scene:{get:function(){return this._scene}},lowFrameRate:{get:function(){return this._lowFrameRate}},nominalFrameRate:{get:function(){return this._nominalFrameRate}},lastFramesPerSecond:{get:function(){return this._lastFramesPerSecond}}});Sd.prototype.pause=function(){++this._pauseCount,this._pauseCount===1&&(this._frameTimes.length=0,this._lastFramesPerSecond=void 0)};Sd.prototype.unpause=function(){--this._pauseCount,this._pauseCount<=0&&(this._pauseCount=0,this._needsQuietPeriod=!0)};Sd.prototype.isDestroyed=function(){return!1};Sd.prototype.destroy=function(){return this._preUpdateRemoveListener(),l(this._visibilityChangeRemoveListener)&&this._visibilityChangeRemoveListener(),me(this)};function xLt(e,t){if(e._pauseCount>0)return;let n=Fi();if(e._needsQuietPeriod)e._needsQuietPeriod=!1,e._frameTimes.length=0,e._quietPeriodEndTime=n+e.quietPeriod/ai.SECONDS_PER_MILLISECOND,e._warmupPeriodEndTime=e._quietPeriodEndTime+(e.warmupPeriod+e.samplingWindow)/ai.SECONDS_PER_MILLISECOND;else if(n>=e._quietPeriodEndTime){e._frameTimes.push(n);let i=n-e.samplingWindow/ai.SECONDS_PER_MILLISECOND;if(e._frameTimes.length>=2&&e._frameTimes[0]<=i){for(;e._frameTimes.length>=2&&e._frameTimes[1]<i;)e._frameTimes.shift();let o=(n-e._frameTimes[0])/(e._frameTimes.length-1);e._lastFramesPerSecond=1e3/o;let r=1e3/(n>e._warmupPeriodEndTime?e.minimumFrameRateAfterWarmup:e.minimumFrameRateDuringWarmup);o>r?e._frameRateIsLow||(e._frameRateIsLow=!0,e._needsQuietPeriod=!0,e.lowFrameRate.raiseEvent(e.scene,e._lastFramesPerSecond)):e._frameRateIsLow&&(e._frameRateIsLow=!1,e._needsQuietPeriod=!0,e.nominalFrameRate.raiseEvent(e.scene,e._lastFramesPerSecond))}}}function ILt(e){document[e._hiddenPropertyName]?e.pause():e.unpause()}var mN=Sd;var uao=y(C(),1);var vTe=y(Vq(),1);function C$(){this._image=new Image}C$.prototype.isReady=function(){return!0};C$.prototype.shouldDiscardImage=function(e){return e===this._image};function b_(e){e=e??Y.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._tilingScheme=new ao({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new le(-Z.PI,-Z.PI,Z.PI,Z.PI),ellipsoid:e.ellipsoid});let t=e.credit;typeof t=="string"&&(t=new Gt(t)),this._credit=t,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=23,l(this._tileDiscardPolicy)||(this._tileDiscardPolicy=new C$),this._errorEvent=new Ce}Object.defineProperties(b_.prototype,{url:{get:function(){return this._metadata.url}},proxy:{get:function(){return this._metadata.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!1}}});b_.fromMetadata=function(e,t){if(!e.imageryPresent)throw new de(`The server ${e.url} doesn't have imagery`);let n=new b_(t);return n._metadata=e,n};b_.prototype.getTileCredits=function(e,t,n){let i=this._metadata,o=i.getTileInformation(e,t,n);if(l(o)){let r=i.providers[o.imageryProvider];if(l(r))return[r]}};b_.prototype.requestImage=function(e,t,n,i){let o=this._tileDiscardPolicy._image,r=this._metadata,s=ib.tileXYToQuadKey(e,t,n),a=r.getTileInformation(e,t,n);if(!l(a)){if(r.isValid(s)){let d=new sr({throttle:i.throttle,throttleByServer:i.throttleByServer,type:i.type,priorityFunction:i.priorityFunction});r.populateSubtree(e,t,n,d);return}return Promise.resolve(o)}if(!a.hasImagery())return Promise.resolve(o);let c=_Lt(this,a,e,t,n,i).fetchArrayBuffer();if(l(c))return c.then(function(d){tN(r.key,d);let u=new Uint8Array(d),h,p=r.protoImagery;if((!l(p)||!p)&&(h=ELt(u)),!l(h)&&(!l(p)||p)){let g=TLt(u);h=g.imageType,u=g.imageData}return!l(h)||!l(u)?o:FC({uint8Array:u,format:h,flipY:!0})})};b_.prototype.pickFeatures=function(e,t,n,i,o){};function _Lt(e,t,n,i,o,r){let s=ib.tileXYToQuadKey(n,i,o),a=t.imageryVersion;return a=l(a)&&a>0?a:1,e._metadata.resource.getDerivedResource({url:`flatfile?f1-0${s}-i.${a.toString()}`,request:r})}function ELt(e){let t="JFIF";if(e[6]===t.charCodeAt(0)&&e[7]===t.charCodeAt(1)&&e[8]===t.charCodeAt(2)&&e[9]===t.charCodeAt(3))return"image/jpeg";let n="PNG";if(e[1]===n.charCodeAt(0)&&e[2]===n.charCodeAt(1)&&e[3]===n.charCodeAt(2))return"image/png"}function TLt(e){let t=vTe.Reader.create(e),n=t.len,i={};for(;t.pos<n;){let s=t.uint32(),a;switch(s>>>3){case 1:i.imageType=t.uint32();break;case 2:i.imageData=t.bytes();break;case 3:i.alphaType=t.uint32();break;case 4:i.imageAlpha=t.bytes();break;case 5:if(a=i.copyrightIds,l(a)||(a=i.copyrightIds=[]),(s&7)===2){let c=t.uint32()+t.pos;for(;t.pos<c;)a.push(t.uint32())}else a.push(t.uint32());break;default:t.skipType(s&7);break}}let o=i.imageType;if(l(o))switch(o){case 0:i.imageType="image/jpeg";break;case 4:i.imageType="image/png";break;default:throw new de("GoogleEarthEnterpriseImageryProvider: Unsupported image type.")}let r=i.alphaType;return l(r)&&r!==0&&(console.log("GoogleEarthEnterpriseImageryProvider: External alpha not supported."),delete i.alphaType,delete i.imageAlpha),i}var x$=b_;var bao=y(C(),1);var SLt=new U(1,1,1,.4),LLt=new U(0,1,0,.05),RLt=new U(0,.5,0,.2);function y_(e){e=e??Y.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new ao({ellipsoid:e.ellipsoid}),this._cells=e.cells??8,this._color=e.color??SLt,this._glowColor=e.glowColor??LLt,this._glowWidth=e.glowWidth??6,this._backgroundColor=e.backgroundColor??RLt,this._errorEvent=new Ce,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._canvasSize=e.canvasSize??256,this._canvas=this._createGridCanvas()}Object.defineProperties(y_.prototype,{proxy:{get:function(){}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){}},minimumLevel:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},hasAlphaChannel:{get:function(){return!0}}});y_.prototype._drawGrid=function(e){let n=this._canvasSize;for(let i=0;i<=this._cells;++i){let r=1+i/this._cells*(n-1);e.moveTo(r,0),e.lineTo(r,n),e.moveTo(0,r),e.lineTo(n,r)}e.stroke()};y_.prototype._createGridCanvas=function(){let e=document.createElement("canvas");e.width=this._canvasSize,e.height=this._canvasSize;let t=0,n=this._canvasSize,i=e.getContext("2d"),o=this._backgroundColor.toCssColorString();i.fillStyle=o,i.fillRect(t,t,n,n);let r=this._glowColor.toCssColorString();i.strokeStyle=r,i.lineWidth=this._glowWidth,i.strokeRect(t,t,n,n),this._drawGrid(i),i.lineWidth=this._glowWidth*.5,i.strokeRect(t,t,n,n),this._drawGrid(i);let s=this._color.toCssColorString();return i.strokeStyle=s,i.lineWidth=2,i.strokeRect(t,t,n,n),i.lineWidth=1,this._drawGrid(i),e};y_.prototype.getTileCredits=function(e,t,n){};y_.prototype.requestImage=function(e,t,n,i){return Promise.resolve(this._canvas)};y_.prototype.pickFeatures=function(e,t,n,i,o){};var I$=y_;var jco=y(C(),1);var _co=y(C(),1);var sco=y(C(),1);var Rao=y(C(),1);function If(){}If._maxDecodingConcurrency=Math.max(Ht.hardwareConcurrency-1,1);If._decodeTaskProcessor=new hi("decodeI3S",If._maxDecodingConcurrency);If._promise=void 0;async function VLt(){if(await If._decodeTaskProcessor.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/draco_decoder.wasm"}))return If._decodeTaskProcessor;throw new de("I3S decoder could not be initialized.")}If.decode=async function(e,t,n,i,o){return l(If._promise)||(If._promise=VLt()),If._promise.then(function(r){let s=n._parent._data,a=n._parent._inverseRotationMatrix,c=0,d=0,u=0;l(s.obb)?(c=s.obb.center[0],d=s.obb.center[1],u=s.obb.center[2]):l(s.mbs)&&(c=s.mbs[0],d=s.mbs[1],u=s.mbs[2]);let h=$.fromRotationX(-Z.PI_OVER_TWO),p=new $;$.multiply(h,a,p);let g=ge.fromDegrees(c,d,u),f=ie.WGS84.cartographicToCartesian(g),b={binaryData:n._data,featureData:l(i)&&l(i[0])?i[0].data:void 0,schema:t,bufferInfo:n._geometryBufferInfo,ellipsoidRadiiSquare:ie.WGS84.radiiSquared,url:e,geoidDataList:n._dataProvider._geoidDataList,cartographicCenter:g,cartesianCenter:f,parentRotation:p,enableFeatures:n._dataProvider.showFeatures,splitGeometryByColorTransparency:n._dataProvider.adjustMaterialAlphaMode,symbologyData:o,calculateNormals:n._dataProvider.calculateNormals};return r.scheduleTask(b)})};var hN=If;var Bao=y(C(),1);function _$(e,t){this._parent=e,this._dataProvider=e._dataProvider,this._layer=e._layer,l(this._parent._nodeIndex)?this._resource=this._parent._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.attribute.resource}/${t}`}):this._resource=this._parent.resource.getDerivedResource({url:t})}Object.defineProperties(_$.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}}});_$.prototype.load=async function(){return this._data=await _f.loadJson(this._resource),this._data};var fN=_$;var Fao=y(C(),1);function rb(e,t){this._storageInfo=t,this._parent=e,this._dataProvider=e._dataProvider,this._loadPromise=void 0;let n=`attributes/${t.key}/0`;l(this._parent._nodeIndex)?this._resource=this._parent._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.attribute.resource}/${n}`}):this._resource=this._parent.resource.getDerivedResource({url:n})}Object.defineProperties(rb.prototype,{resource:{get:function(){return this._resource}},header:{get:function(){return this._header}},values:{get:function(){if(l(this._values)){if(l(this._values.attributeValues))return this._values.attributeValues;if(l(this._values.objectIds))return this._values.objectIds}return[]}},name:{get:function(){return this._storageInfo.name}}});function OY(e){return e==="UInt8"||e==="Int8"?1:e==="UInt16"||e==="Int16"?2:e==="UInt32"||e==="Int32"||e==="Oid32"||e==="Float32"?4:e==="UInt64"||e==="Int64"||e==="Float64"?8:0}function GLt(e){return e==="String"?1:OY(e)}async function ZLt(e){let t=await e._dataProvider._loadBinary(e._resource),n=new DataView(t);e._data=t,e._validateHeader(n);let i=e._parseHeader(n),o=e._getBodyOffset(i);e._validateBody(n,o),e._parseBody(n,o)}rb.prototype.load=function(){return l(this._loadPromise)?this._loadPromise:(this._loadPromise=ZLt(this).catch(function(e){console.error(e)}),this._loadPromise)};rb.prototype._parseValue=function(e,t,n){let i;if(t==="UInt8")i=e.getUint8(n),n+=1;else if(t==="Int8")i=e.getInt8(n),n+=1;else if(t==="UInt16")i=e.getUint16(n,!0),n+=2;else if(t==="Int16")i=e.getInt16(n,!0),n+=2;else if(t==="UInt32")i=e.getUint32(n,!0),n+=4;else if(t==="Oid32")i=e.getUint32(n,!0),n+=4;else if(t==="Int32")i=e.getInt32(n,!0),n+=4;else if(t==="UInt64"){let o=e.getUint32(n,!0),r=e.getUint32(n+4,!0);i=o+Math.pow(2,32)*r,n+=8}else if(t==="Int64"){let o=e.getUint32(n,!0),r=e.getUint32(n+4,!0);r<Math.pow(2,31)?i=o+Math.pow(2,32)*r:i=o+Math.pow(2,32)*(r-Math.pow(2,32)),n+=8}else t==="Float32"?(i=e.getFloat32(n,!0),n+=4):t==="Float64"?(i=e.getFloat64(n,!0),n+=8):t==="String"&&(i=String.fromCharCode(e.getUint8(n)),n+=1);return{value:i,offset:n}};rb.prototype._parseHeader=function(e){let t=0;this._header={};for(let n=0;n<this._storageInfo.header.length;n++){let i=this._storageInfo.header[n],o=this._parseValue(e,i.valueType,t);this._header[i.property]=o.value,t=o.offset}return t};rb.prototype._parseBody=function(e,t){this._values={};for(let n=0;n<this._storageInfo.ordering.length;n++){let i=this._storageInfo.ordering[n],o=i==="ObjectIds"?"objectIds":i,r=this._storageInfo[o];if(l(r)){this._values[o]=[];for(let s=0;s<this._header.count;++s)if(r.valueType!=="String"){let a=this._parseValue(e,r.valueType,t);this._values[o].push(a.value),t=a.offset}else{let a=this._values.attributeByteCounts[s],c="";for(let d=0;d<a;++d){let u=this._parseValue(e,r.valueType,t);u.value.charCodeAt(0)!==0&&(c+=u.value),t=u.offset}this._values[o].push(c)}}}};rb.prototype._getBodyOffset=function(e){let t=0;return l(this._storageInfo.attributeValues)?t=OY(this._storageInfo.attributeValues.valueType):l(this._storageInfo.objectIds)&&(t=OY(this._storageInfo.objectIds.valueType)),t>0?Math.ceil(e/t)*t:e};rb.prototype._validateHeader=function(e){let t=0;for(let n=0;n<this._storageInfo.header.length;n++){let i=this._storageInfo.header[n];t+=GLt(i.valueType)}if(e.byteLength<t)throw new de(`Invalid attribute buffer size (field: ${this.name}, header: ${t}, actual: ${e.byteLength})`)};rb.prototype._validateBody=function(e,t){if(!l(this._header.count))throw new de(`Invalid attribute buffer (field: ${this.name}, count is missing)`);let n;for(let i=0;i<this._storageInfo.ordering.length&&t<e.byteLength;i++){let o=this._storageInfo.ordering[i],r=o==="ObjectIds"?"objectIds":o,s=this._storageInfo[r];if(l(s))if(s.valueType!=="String"){r==="attributeByteCounts"&&(n=t);let a=OY(s.valueType);t+=a*this._header.count}else{if(!l(n))throw new de(`Invalid attribute buffer (field: ${this.name}, attributeByteCounts is missing)`);for(let a=0;a<this._header.count&&t<e.byteLength;++a){let c=this._parseValue(e,this._storageInfo.attributeByteCounts.valueType,n);t+=c.value,n=c.offset}}else throw new de(`Invalid attribute buffer (field: ${this.name}, ${r} is missing)`)}if(e.byteLength<t)throw new de(`Invalid attribute buffer size (field: ${this.name}, expected: ${t}, actual: ${e.byteLength})`)};var pN=rb;var Uao=y(C(),1);function AN(e,t){let n=e._dataProvider,i=e._layer,o;l(e._nodeIndex)?o=i.resource.getDerivedResource({url:`nodes/${e._data.mesh.geometry.resource}/${t}`}):o=e.resource.getDerivedResource({url:t}),this._parent=e,this._dataProvider=n,this._layer=i,this._resource=o,this._customAttributes=void 0}Object.defineProperties(AN.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},customAttributes:{get:function(){return this._customAttributes}}});AN.prototype.load=function(){let e=this;return this._dataProvider._loadBinary(this._resource).then(function(t){return e._data=t,t})};var BLt=new m,wLt=new m,XLt=new m,WLt=new m,FLt=new m;function E$(e,t,n,i){let o=m.subtract(i,n,BLt),r=m.cross(o,m.subtract(e,n,wLt),WLt),s=m.cross(o,m.subtract(t,n,XLt),FLt);return m.dot(r,s)>=0}var PLt=new m,MLt=new m,vLt=new m,NLt=new m,DLt=new m,QLt=new m,ULt=new m,kLt=new m,YLt=new m,OLt=new m;AN.prototype.getClosestPointIndexOnTriangle=function(e,t,n){if(l(this._customAttributes)&&l(this._customAttributes.positions)){let i=new m(e,t,n);i.x-=this._customAttributes.cartesianCenter.x,i.y-=this._customAttributes.cartesianCenter.y,i.z-=this._customAttributes.cartesianCenter.z,$.multiplyByVector(this._customAttributes.parentRotation,i,i);let o=Number.MAX_VALUE,r,s,a,c,d=this._customAttributes.positions,u=this._customAttributes.indices,h;l(u)?h=u.length:h=d.length/3;for(let p=0;p<h;p++){let g,f,b;l(u)?(g=u[p],f=u[p+1],b=u[p+2]):(g=p*3,f=p*3+1,b=p*3+2);let x=m.fromElements(d[g*3],d[g*3+1],d[g*3+2],PLt),I=m.fromElements(d[f*3],d[f*3+1],d[f*3+2],MLt),_=new m(d[b*3],d[b*3+1],d[b*3+2],vLt);if(!E$(i,x,I,_)||!E$(i,I,x,_)||!E$(i,_,x,I))continue;let E=m.subtract(I,x,NLt),S=m.subtract(_,x,DLt),R=m.cross(E,S,QLt);if(m.magnitude(R)===0)continue;let G=m.normalize(R,ULt),B=m.subtract(i,x,kLt),w=Math.abs(m.dot(B,G));if(w<o){o=w,r=p;let F=m.magnitudeSquared(m.subtract(i,x,B)),P=m.magnitudeSquared(m.subtract(i,I,YLt)),A=m.magnitudeSquared(m.subtract(i,_,OLt));F<P&&F<A?(a=g,c=x,s=F):P<A?(a=f,c=I,s=P):(a=b,c=_,s=A)}}if(l(r))return{index:a,distanceSquared:s,distance:Math.sqrt(s),queriedPosition:i,closestPosition:m.clone(c)}}return{index:-1,distanceSquared:Number.Infinity,distance:Number.Infinity}};function NTe(e){let t=[],n=e.length;for(let i=0;i<n;i++)i<3?t.push(f_(e[i])):t.push(e[i]);return t}AN.prototype._generateGltf=function(e,t,n,i,o,r,s,a){let c={pbrMetallicRoughness:{metallicFactor:0},doubleSided:!0,name:"Material"},d=!1,u,h="";if(l(this._parent._data.mesh)&&l(this._layer._data.materialDefinitions)){let E=this._parent._data.mesh.material.definition;if(E>=0&&E<this._layer._data.materialDefinitions.length){if(u=this._layer._data.materialDefinitions[E],c=u,l(c.pbrMetallicRoughness)&&l(c.pbrMetallicRoughness.baseColorTexture)){d=!0,c.pbrMetallicRoughness.baseColorTexture.index=0;let S="0";if(l(this._layer._data.textureSetDefinitions))for(let R=0;R<this._layer._data.textureSetDefinitions.length;R++){let G=this._layer._data.textureSetDefinitions[R];for(let B=0;B<G.formats.length;B++){let w=G.formats[B];if(w.format==="jpg"){S=w.name;break}}}l(this._parent._data.mesh)&&this._parent._data.mesh.material.resource>=0&&(h=this._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.material.resource}/textures/${S}`}).url)}l(c.pbrMetallicRoughness)&&l(c.pbrMetallicRoughness.baseColorFactor)&&(c.pbrMetallicRoughness.baseColorFactor=NTe(c.pbrMetallicRoughness.baseColorFactor)),l(c.emissiveFactor)&&(c.emissiveFactor=NTe(c.emissiveFactor))}}else l(this._parent._data.textureData)&&(d=!0,h=this._parent.resource.getDerivedResource({url:`${this._parent._data.textureData[0].href}`}).url,c.pbrMetallicRoughness.baseColorTexture={index:0});l(c.alphaMode)&&(c.alphaMode=c.alphaMode.toUpperCase());let p=[],g=[],f=[];d&&(p=[{sampler:0,source:0}],g=[{uri:h}],f=[{magFilter:9729,minFilter:9986,wrapS:10497,wrapT:10497}]);let b=[],x=n.length;for(let _=0;_<x;_++){let E=n[_].primitives,S=E.length;for(let R=0;R<S;R++){let G=E[R];if(l(G.material)){for(;G.material>=b.length;){let w=ke(c,!0);b.push(w)}let B=b[G.material];l(G.extra)&&G.extra.isTransparent?l(B.alphaMode)||(B.alphaMode="BLEND"):B.alphaMode==="BLEND"&&(B.alphaMode="OPAQUE")}}}return{scene:0,scenes:[{nodes:e}],nodes:t,meshes:n,buffers:i,bufferViews:o,accessors:r,materials:b,textures:p,images:g,samplers:f,asset:{version:"2.0"},extensions:s,extensionsUsed:a}};var ML=AN;function tl(e,t,n){let i,o,r,s;n?(i=0,o=e):(i=e._level+1,o=e._layer),typeof t=="number"?r=t:s=e.resource.getDerivedResource({url:`${t}/`}),this._parent=e,this._dataProvider=e._dataProvider,this._isRoot=n,this._level=i,this._layer=o,this._nodeIndex=r,this._resource=s,this._isLoading=!1,this._tile=void 0,this._data=void 0,this._geometryData=[],this._featureData=[],this._fields={},this._children=[],this._childrenReadyPromise=void 0,this._globalTransform=void 0,this._inverseGlobalTransform=void 0,this._inverseRotationMatrix=void 0,this._symbologyData=void 0}Object.defineProperties(tl.prototype,{resource:{get:function(){return this._resource}},layer:{get:function(){return this._layer}},parent:{get:function(){return this._parent}},children:{get:function(){return this._children}},geometryData:{get:function(){return this._geometryData}},featureData:{get:function(){return this._featureData}},fields:{get:function(){return this._fields}},tile:{get:function(){return this._tile}},data:{get:function(){return this._data}}});tl.prototype.load=async function(){let e=this;function t(){if(!e._isRoot){let o=e._create3DTileDefinition();e._tile=new ym(e._layer._tileset,e._dataProvider.resource,o,e._parent._tile),e._tile._i3sNode=e}}if(!l(this._nodeIndex)){let o=await _f.loadJson(this._resource);e._data=o,t();return}let n=await this._layer._getNodeInNodePages(this._nodeIndex);e._data=n;let i;e._isRoot?i="nodes/root/":l(n.mesh)&&(i=`../${n.mesh.geometry.resource}/`),l(i)&&l(e._parent.resource)&&(e._resource=e._parent.resource.getDerivedResource({url:i})),t()};function DTe(e,t){let n=new pN(e,t);return e._fields[t.name]=n,n.load()}tl.prototype.loadFields=function(){let e=this._layer._data.attributeStorageInfo,t=[];if(l(e))for(let n=0;n<e.length;n++){let i=e[n],o=this._fields[i.name];l(o)?t.push(o.load()):t.push(DTe(this,i))}return Promise.all(t)};tl.prototype.loadField=function(e){let t=this._fields[e];if(l(t))return t.load();let n=this._layer._data.attributeStorageInfo;if(l(n))for(let i=0;i<n.length;i++){let o=n[i];if(o.name===e)return DTe(this,o)}return Promise.resolve()};tl.prototype.getFieldsForPickedPosition=function(e){let t=this.geometryData[0];if(!l(t.customAttributes.featureIndex))return{};let n=t.getClosestPointIndexOnTriangle(e.x,e.y,e.z);if(n.index===-1||n.index>t.customAttributes.featureIndex.length)return{};let i=t.customAttributes.featureIndex[n.index];return this.getFieldsForFeature(i)};tl.prototype.getFieldsForFeature=function(e){let t={};for(let n in this.fields)if(this.fields.hasOwnProperty(n)){let i=this.fields[n];e>=0&&e<i.values.length&&(t[i.name]=i.values[e])}return t};tl.prototype._loadChildren=function(){let e=this;if(l(this._childrenReadyPromise))return this._childrenReadyPromise;let t=[];if(l(e._data.children))for(let n=0;n<e._data.children.length;n++){let i=e._data.children[n],o=new tl(e,i.href??i,!1);e._children.push(o),t.push(o.load())}return this._childrenReadyPromise=Promise.all(t).then(function(){for(let n=0;n<e._children.length;n++)e._tile.children.push(e._children[n]._tile)}),this._childrenReadyPromise};tl.prototype._loadGeometryData=function(){let e=[];if(l(this._data.geometryData))for(let t=0;t<this._data.geometryData.length;t++){let n=new ML(this,this._data.geometryData[t].href);this._geometryData.push(n),e.push(n.load())}else if(l(this._data.mesh)){let t=this._layer._findBestGeometryBuffers(this._data.mesh.geometry.definition,["position","uv0"]),n=`./geometries/${t.bufferIndex}/`,i=new ML(this,n);i._geometryDefinitions=t.definition,i._geometryBufferInfo=t.geometryBufferInfo,this._geometryData.push(i),e.push(i.load())}return Promise.all(e)};tl.prototype._loadFeatureData=function(){let e=[];if(l(this._data.featureData))for(let t=0;t<this._data.featureData.length;t++){let n=new fN(this,this._data.featureData[t].href);this._featureData.push(n),e.push(n.load())}return Promise.all(e)};tl.prototype._clearGeometryData=function(){this._geometryData=[]};tl.prototype._create3DTileDefinition=function(){let e=this._data.obb,t=this._data.mbs;if(!l(e)&&!l(t)){console.error("Failed to load I3S node. Bounding volume is required.");return}let n;if(l(e)?n=ge.fromDegrees(e.center[0],e.center[1],e.center[2]):n=ge.fromDegrees(t[0],t[1],t[2]),l(this._dataProvider._geoidDataList)&&l(n))for(let I=0;I<this._dataProvider._geoidDataList.length;I++){let _=this._dataProvider._geoidDataList[I],E=_.projection.project(n);if(E.x>_.nativeExtent.west&&E.x<_.nativeExtent.east&&E.y>_.nativeExtent.south&&E.y<_.nativeExtent.north){n.height+=JLt(E.x,E.y,_);break}}let i={},o,r=0;l(e)?(i={box:[0,0,0,e.halfSize[0],0,0,0,e.halfSize[1],0,0,0,e.halfSize[2]]},r=Math.max(Math.max(this._data.obb.halfSize[0],this._data.obb.halfSize[1]),this._data.obb.halfSize[2]),o=ie.WGS84.cartographicToCartesian(n)):(i={sphere:[0,0,0,t[3]]},o=ie.WGS84.cartographicToCartesian(n),r=this._data.mbs[3]),r*=2;let s=1/0;if(l(this._data.lodThreshold))if(this._layer._data.nodePages.lodSelectionMetricType==="maxScreenThresholdSQ"){let I=Math.sqrt(this._data.lodThreshold/(Math.PI*.25));s=r/I}else if(this._layer._data.nodePages.lodSelectionMetricType==="maxScreenThreshold"){let I=this._data.lodThreshold;s=r/I}else console.error("Invalid lodSelectionMetricType in Layer");else if(l(this._data.lodSelection))for(let I=0;I<this._data.lodSelection.length;I++)this._data.lodSelection[I].metricType==="maxScreenThreshold"&&(s=r/this._data.lodSelection[I].maxError);s===1/0&&(s=1e5);let a=s*16,c=new ic(0,0,0),d=Dt.headingPitchRollQuaternion(o,c);l(this._data.obb)&&(d=new Pe(this._data.obb.quaternion[0],this._data.obb.quaternion[1],this._data.obb.quaternion[2],this._data.obb.quaternion[3]));let u=$.fromQuaternion(d),h=$.inverse(u,new $),p=new X(u[0],u[1],u[2],0,u[3],u[4],u[5],0,u[6],u[7],u[8],0,o.x,o.y,o.z,1),g=X.inverse(p,new X),f=X.clone(p);l(this._parent._globalTransform)&&X.multiply(p,this._parent._inverseGlobalTransform,f),this._globalTransform=p,this._inverseGlobalTransform=g,this._inverseRotationMatrix=h;let b=[];for(let I=0;I<this._children.length;I++)b.push(this._children[I]._create3DTileDefinition());return{children:b,refine:"REPLACE",boundingVolume:i,transform:[f[0],f[4],f[8],f[12],f[1],f[5],f[9],f[13],f[2],f[6],f[10],f[14],f[3],f[7],f[11],f[15]],content:{uri:l(this._resource)?this._resource.url:void 0},geometricError:a}};tl.prototype._loadSymbology=async function(){!l(this._symbologyData)&&l(this._layer._symbology)&&(this._symbologyData=await this._layer._symbology._getSymbology(this))};tl.prototype._createContentURL=async function(){let e={scene:0,scenes:[{nodes:[0]}],nodes:[{name:"singleNode"}],meshes:[],buffers:[],bufferViews:[],accessors:[],materials:[],textures:[],images:[],samplers:[],asset:{version:"2.0"}},t=[this._loadGeometryData()];if(this._dataProvider.legacyVersion16&&t.push(this._loadFeatureData()),await Promise.all(t),l(this._geometryData)&&this._geometryData.length>0){this._dataProvider._applySymbology&&await this._loadSymbology();let o=this._geometryData[0].resource.url,r=this._layer._data.store.defaultGeometrySchema,s=this._geometryData[0],a=await hN.decode(o,r,s,this._featureData[0],this._symbologyData);if(!l(a))return;e=s._generateGltf(a.meshData.nodesInScene,a.meshData.nodes,a.meshData.meshes,a.meshData.buffers,a.meshData.bufferViews,a.meshData.accessors,a.meshData.rootExtensions,a.meshData.extensionsUsed),this._geometryData[0]._customAttributes=a.meshData._customAttributes}let n=this._dataProvider._binarizeGltf(e),i=new Blob([n],{type:"application/binary"});return URL.createObjectURL(i)};async function HLt(e){let t=e._layer._filters,n=[];for(let i=0;i<t.length;i++){let o=e.loadField(t[i].name);n.push(o)}return await Promise.all(n),t}function zLt(e,t,n){if(!l(n.values)||n.values.length===0)return!1;let i=l(t)?t.values:[],o;e<i.length&&(o=i[e]);let r=!1;for(let s=0;s<n.values.length;s++)if(n.values[s]===o){r=!0;break}return r}async function QTe(e,t){let n=e._tile.content.batchTable;if(l(n)&&n.featuresLength>0){n.setAllShow(!0);let i=await HLt(e);if(i.length>0)for(let o=0;o<n.featuresLength;o++)for(let r=0;r<i.length;r++){let s=i[r];if(!zLt(o,e._fields[s.name],s)){n.setShow(o,!1);break}}}t.show=!0}tl.prototype._filterFeatures=function(){let e=[];for(let n=0;n<this._children.length;n++){let i=this._children[n]._filterFeatures();e.push(i)}let t=this._tile?.content?._model;if(l(this._geometryData)&&this._geometryData.length>0&&l(t)&&t.ready){t.show=!1;let n=QTe(this,t);e.push(n)}return Promise.all(e)};ym.prototype._hookedRequestContent=ym.prototype.requestContent;ym.prototype.requestContent=function(){if(!this.tileset._isI3STileSet)return this._hookedRequestContent();if(!this._isLoading){this._isLoading=!0;let e=this;return this._i3sNode._createContentURL().then(t=>{if(!l(t)){e._isLoading=!1;return}return e._contentResource=new Ve({url:t}),e._hookedRequestContent()}).then(t=>{let n=t?._model;return l(e._i3sNode._geometryData)&&e._i3sNode._geometryData.length>0&&l(n)&&(n.show=!1,n.readyEvent.addEventListener(()=>{QTe(e._i3sNode,n)})),e._isLoading=!1,t})}};function KLt(e,t,n,i,o,r){let s=n*(1-e)+i*e,a=o*(1-e)+r*e;return s*(1-t)+a*t}function HY(e,t,n,i){let o=e+t*n;return i[o]}function JLt(e,t,n){let i=n.nativeExtent,o=(e-i.west)/(i.east-i.west)*(n.width-1),r=(t-i.south)/(i.north-i.south)*(n.height-1),s=Math.floor(o),a=Math.floor(r);o-=s,r-=a;let c=s<n.width?s+1:s,d=a<n.height?a+1:a;a=n.height-1-a,d=n.height-1-d;let u=HY(s,a,n.width,n.buffer),h=HY(c,a,n.width,n.buffer),p=HY(s,d,n.width,n.buffer),g=HY(c,d,n.width,n.buffer),f=KLt(o,r,u,h,p,g);return f=f*n.scale+n.offset,f}Object.defineProperties(ym.prototype,{i3sNode:{get:function(){return this._i3sNode}}});var vL=tl;var uco=y(C(),1);function zY(e){this._layer=e,this._defaultSymbology=void 0,this._valueFields=[],this._uniqueValueHash=void 0,this._classBreaksHash=void 0,this._parseLayerSymbology()}Object.defineProperties(zY.prototype,{defaultSymbology:{get:function(){return this._defaultSymbology}}});function T$(e,t){let n=[];for(let i=0;i<e.length;i++){let o=U.byteToFloat(e[i]);i<3?n.push(f_(o)):n.push(o)}return n.length===3&&(l(t)?n.push(1-t/100):n.push(1)),n}function NL(e,t){let n={edges:void 0,material:void 0};if(l(e)&&l(e.symbolLayers))for(let i=0;i<e.symbolLayers.length;i++){let o=e.symbolLayers[i];if(o.type==="Fill"){let r=o.edges,s=o.outline;if(l(r)?(n.edges={},l(r.color)&&(n.edges.color=T$(r.color,r.transparency))):l(s)&&(n.edges={},l(s.color)&&(n.edges.color=T$(s.color,s.transparency))),!t){let a=o.material;l(a)&&(n.material={colorMixMode:a.colorMixMode},l(a.color)&&(n.material.color=T$(a.color,a.transparency)))}break}}return n}function jLt(e,t){if(l(e.uniqueValueGroups)){let n={};for(let i=0;i<e.uniqueValueGroups.length;i++){let o=e.uniqueValueGroups[i].classes;if(l(o))for(let r=0;r<o.length;r++){let s=NL(o[r].symbol,t),a=o[r].values;for(let c=0;c<a.length;c++){let d=a[c],u=n;for(let h=0;h<d.length;h++){let p=d[h];h===d.length-1?u[p]=s:(l(u[p])||(u[p]={}),u=u[p])}}}}return n}if(l(e.uniqueValueInfos)){let n={};for(let i=0;i<e.uniqueValueInfos.length;i++){let o=e.uniqueValueInfos[i];n[o.value]=NL(o.symbol,t)}return n}}function qLt(e,t){if(l(e.classBreakInfos)){let n=[...e.classBreakInfos];n.sort(function(o,r){let s=o.classMaxValue??o.classMinValue,a=r.classMaxValue??r.classMinValue;return s-a});let i={ranges:[],symbols:[]};l(e.minValue)&&(i.ranges.push(e.minValue),i.symbols.push(void 0));for(let o=0;o<n.length;o++){let r=n[o];l(r.classMinValue)&&(i.ranges.length===0||r.classMinValue>i.ranges[i.ranges.length-1])&&(i.ranges.push(r.classMinValue),i.symbols.push(void 0)),l(r.classMaxValue)&&(i.ranges.length===0||r.classMaxValue>i.ranges[i.ranges.length-1])&&(i.ranges.push(r.classMaxValue),i.symbols.push(NL(r.symbol,t)))}return i.symbols.push(void 0),i}}zY.prototype._parseLayerSymbology=function(){let e=this._layer.data.drawingInfo;if(l(e)&&l(e.renderer)){let t=this._layer.data.cachedDrawingInfo,n=l(t)&&t.color===!0,i=e.renderer;i.type==="simple"?this._defaultSymbology=NL(i.symbol,n):i.type==="uniqueValue"?(this._defaultSymbology=NL(i.defaultSymbol,n),this._valueFields.push(i.field1),l(i.field2)&&this._valueFields.push(i.field2),l(i.field3)&&this._valueFields.push(i.field3),this._uniqueValueHash=jLt(i,n)):i.type==="classBreaks"&&(this._defaultSymbology=NL(i.defaultSymbol,n),this._valueFields.push(i.field),this._classBreaksHash=qLt(i,n))}};function UTe(e,t,n,i){let o=t[n];if(i<o.length){let r=o[i],s=e[r];return l(s)&&++n<t.length?UTe(s,t,n,i):s}}function $Lt(e,t){let n=0,i=e.length;if(n<i)do{let o=n+i>>>1;e[o]<t?n=o+1:i=o}while(n<i);return n}function e1t(e,t,n){let i=t[n],o=$Lt(e.ranges,i);return e.symbols[o]}zY.prototype._getSymbology=async function(e){let t={default:this._defaultSymbology};if(this._valueFields.length>0){let n=[];for(let r=0;r<this._valueFields.length;r++)n.push(e.loadField(this._valueFields[r]));await Promise.all(n);let i=[];for(let r=0;r<this._valueFields.length;r++)i.push(e.fields[this._valueFields[r]].values);let o;if(l(this._uniqueValueHash)?o=r=>UTe(this._uniqueValueHash,i,0,r):l(this._classBreaksHash)&&(o=r=>e1t(this._classBreaksHash,i[0],r)),l(o)){let r=i[0];for(let s=0;s<r.length;s++){let a=o(s);l(a)&&(t[s]=a)}}}return t};var gN=zY;function Ld(e,t,n){this._dataProvider=e,this._parent=n,!l(t.href)&&l(t.id)&&(t.href=`layers/${t.id}`);let i=this._parent.resource.getUrlComponent(),o="";i.match(/layers\/\d/)?o=`${i}`.replace(/\/+$/,""):o=`${i}`.replace(/\/?$/,"/").concat(`${t.href}`),this._version=t.store.version;let r=this._version.split(".");this._majorVersion=parseInt(r[0]),this._minorVersion=r.length>1?parseInt(r[1]):0,this._resource=new Ve({url:o}),this._resource.setQueryParameters(this._dataProvider.resource.queryParameters),this._resource.appendForwardSlash(),this._data=t,this._rootNode=void 0,this._nodePages={},this._nodePageFetches={},this._extent=void 0,this._tileset=void 0,this._geometryDefinitions=void 0,this._filters=[],this._symbology=void 0,this._computeGeometryDefinitions(!0),this._computeExtent()}Object.defineProperties(Ld.prototype,{resource:{get:function(){return this._resource}},rootNode:{get:function(){return this._rootNode}},tileset:{get:function(){return this._tileset}},data:{get:function(){return this._data}},version:{get:function(){return this._version}},majorVersion:{get:function(){return this._majorVersion}},minorVersion:{get:function(){return this._minorVersion}},legacyVersion16:{get:function(){if(l(this.version))return this.majorVersion<1||this.majorVersion===1&&this.minorVersion<=6}}});Ld.prototype.load=async function(e){if(this._data.spatialReference.wkid!==4326)throw new de(`Unsupported spatial reference: ${this._data.spatialReference.wkid}`);if(this._dataProvider.applySymbology&&(this._symbology=new gN(this)),await this._dataProvider.loadGeoidData(),await this._loadRootNode(e),await this._create3DTileset(e),this._rootNode._tile=this._tileset._root,this._tileset._root._i3sNode=this._rootNode,this.legacyVersion16)return this._rootNode._loadChildren()};Ld.prototype._computeGeometryDefinitions=function(e){if(this._geometryDefinitions=[],l(this._data.geometryDefinitions))for(let t=0;t<this._data.geometryDefinitions.length;t++){let n=[],i=this._data.geometryDefinitions[t].geometryBuffers;for(let o=0;o<i.length;o++){let r=i[o],s=[],a=!1;if(l(r.compressedAttributes)&&e){a=!0;let c=r.compressedAttributes.attributes;for(let d=0;d<c.length;d++)s.push(c[d])}else for(let c in r)c!=="offset"&&s.push(c);n.push({compressed:a,attributes:s,index:i.indexOf(r)})}n.sort(function(o,r){return o.compressed&&!r.compressed?-1:!o.compressed&&r.compressed?1:o.attributes.length-r.attributes.length}),this._geometryDefinitions.push(n)}};Ld.prototype._findBestGeometryBuffers=function(e,t){let n=this._geometryDefinitions[e];if(l(n)){for(let i=0;i<n.length;++i){let o=n[i],r=!1,s=o.attributes;for(let a=0;a<t.length;a++)if(!s.includes(t[a])){r=!0;break}if(!r)return{bufferIndex:o.index,definition:n,geometryBufferInfo:o}}if(l(n[0]))return{bufferIndex:0,definition:n,geometryBufferInfo:n[0]}}};Ld.prototype._loadRootNode=function(e){if(l(this._data.nodePages)){let t=0;l(this._data.nodePages.rootIndex)&&(t=this._data.nodePages.rootIndex),this._rootNode=new vL(this,t,!0)}else this._rootNode=new vL(this,this._data.store.rootNode,!0);return this._rootNode.load(e)};Ld.prototype._getNodeInNodePages=function(e){let t=Math.floor(e/this._data.nodePages.nodesPerPage),n=e%this._data.nodePages.nodesPerPage;return this._loadNodePage(t).then(function(i){return i.nodes[n]})};Ld._fetchJson=function(e){return e.fetchJson()};Ld.prototype._loadNodePage=function(e){let t=this;if(!l(this._nodePageFetches[e])){let n=this.resource.getDerivedResource({url:`nodepages/${e}/`}),i=Ld._fetchJson(n).then(function(o){return l(o.error)&&o.error.code!==200?Promise.reject(o.error):(t._nodePages[e]=o.nodes,o)});this._nodePageFetches[e]=i}return this._nodePageFetches[e]};Ld.prototype._computeExtent=function(){l(this._data.fullExtent)?this._extent=le.fromDegrees(this._data.fullExtent.xmin,this._data.fullExtent.ymin,this._data.fullExtent.xmax,this._data.fullExtent.ymax):l(this._data.store.extent)&&(this._extent=le.fromDegrees(this._data.store.extent[0],this._data.store.extent[1],this._data.store.extent[2],this._data.store.extent[3]))};Ld.prototype._create3DTileset=async function(e){let t={asset:{version:"1.0"},geometricError:Number.MAX_VALUE,root:this._rootNode._create3DTileDefinition()},n=new Blob([JSON.stringify(t)],{type:"application/json"}),i=URL.createObjectURL(n),o=this._symbology?.defaultSymbology?.edges?.color;l(o)&&!l(e?.outlineColor)&&(e=l(e)?ke(e):{},e.outlineColor=U.fromCartesian4(ce.fromArray(o))),this._tileset=await Ps.fromUrl(i,e),this._tileset.show=this._parent.show,this._tileset._isI3STileSet=!0,this._tileset.tileUnload.addEventListener(function(r){r._i3sNode._clearGeometryData(),URL.revokeObjectURL(r._contentResource._url),r._contentResource=r._i3sNode.resource}),this._tileset.tileVisible.addEventListener(function(r){l(r._i3sNode)&&r._i3sNode._loadChildren()})};Ld.prototype._updateVisibility=function(){l(this._tileset)&&(this._tileset.show=this._parent.show)};Ld.prototype.filterByAttributes=function(e){this._filters=l(e)?ke(e,!0):[];let t=this._rootNode;return l(t)?t._filterFeatures():Promise.resolve()};var C_=Ld;var Rco=y(C(),1);function KY(e,t){this._dataProvider=e,this._resource=new Ve({url:t}),this._resource.setQueryParameters(e.resource.queryParameters),this._resource.appendForwardSlash()}Object.defineProperties(KY.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},names:{get:function(){let e=[],t=this._data.summary;if(l(t))for(let n=0;n<t.length;++n)e.push(t[n].fieldName);return e}}});KY.prototype.load=async function(){return this._data=await _f.loadJson(this._resource),this._data};KY.prototype._getValues=function(e){let t=this._data.summary;if(l(t))for(let n=0;n<t.length;++n){let i=t[n];if(i.fieldName===e)return l(i.mostFrequentValues)?[...i.mostFrequentValues]:[]}};var bN=KY;var Xco=y(C(),1);function yN(e,t,n){this._dataProvider=e,this._parent=t,this._data=n,this._name=n.name,this._modelName=n.modelName,this._visibility=n.visibility??!0,this._resource=void 0,this._sublayers=[],this._i3sLayers=[]}Object.defineProperties(yN.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},name:{get:function(){return this._name}},modelName:{get:function(){return this._modelName}},sublayers:{get:function(){return this._sublayers}},visibility:{get:function(){return this._visibility},set:function(e){if(this._visibility!==e){this._visibility=e;for(let t=0;t<this._i3sLayers.length;t++)this._i3sLayers[t]._updateVisibility()}}},show:{get:function(){return this._visibility&&this._parent.show}}});yN._fromData=async function(e,t,n,i){let o=new yN(e,i,n);if(o._data.layerType==="group"){let r=o._data.sublayers;if(l(r)){let s=[];for(let c=0;c<r.length;c++){let d=yN._fromData(e,t,r[c],o);s.push(d)}let a=await Promise.all(s);for(let c=0;c<a.length;c++){let d=a[c];o._sublayers.push(d),o._i3sLayers.push(...d._i3sLayers)}}}else if(o._data.layerType==="3DObject"){let r=t.concat(`/sublayers/${o._data.id}`),s=new Ve({url:r});s.setQueryParameters(e.resource.queryParameters),s.appendForwardSlash(),o._resource=s;let a=await _f.loadJson(o._resource),c=new C_(e,a,o);o._i3sLayers.push(c)}else console.log(`${o._data.layerType} layer ${o._data.name} is skipped as not supported.`);return o};var CN=yN;var OTe=y(kTe(),1);function Us(e){e=e??Y.EMPTY_OBJECT,this._name=e.name,this._show=e.show??!0,this._geoidTiledTerrainProvider=e.geoidTiledTerrainProvider,this._showFeatures=e.showFeatures??!1,this._adjustMaterialAlphaMode=e.adjustMaterialAlphaMode??!1,this._applySymbology=e.applySymbology??!1,this._calculateNormals=e.calculateNormals??!1,this._cesium3dTilesetOptions=e.cesium3dTilesetOptions??Y.EMPTY_OBJECT,this._layers=[],this._sublayers=[],this._data=void 0,this._extent=void 0,this._geoidDataPromise=void 0,this._geoidDataList=void 0,this._decoderTaskProcessor=void 0,this._taskProcessorReadyPromise=void 0,this._attributeStatistics=[],this._layersExtent=[]}Object.defineProperties(Us.prototype,{name:{get:function(){return this._name}},show:{get:function(){return this._show},set:function(e){if(this._show!==e){this._show=e;for(let t=0;t<this._layers.length;t++)this._layers[t]._updateVisibility()}}},geoidTiledTerrainProvider:{get:function(){return this._geoidTiledTerrainProvider}},layers:{get:function(){return this._layers}},sublayers:{get:function(){return this._sublayers}},data:{get:function(){return this._data}},extent:{get:function(){return this._extent}},resource:{get:function(){return this._resource}},showFeatures:{get:function(){return this._showFeatures}},adjustMaterialAlphaMode:{get:function(){return this._adjustMaterialAlphaMode}},applySymbology:{get:function(){return this._applySymbology}},calculateNormals:{get:function(){return this._calculateNormals}}});Us.prototype.destroy=function(){for(let e=0;e<this._layers.length;e++)l(this._layers[e]._tileset)&&this._layers[e]._tileset.destroy();return me(this)};Us.prototype.isDestroyed=function(){return!1};Us.prototype.update=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.update(e)};Us.prototype.prePassesUpdate=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.prePassesUpdate(e)};Us.prototype.postPassesUpdate=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.postPassesUpdate(e)};Us.prototype.updateForPass=function(e,t){for(let n=0;n<this._layers.length;n++)l(this._layers[n]._tileset)&&this._layers[n]._tileset.updateForPass(e,t)};function t1t(e,t){let n=e.resource.getUrlComponent(),i="";return n.match(/layers\/\d/)?i=`${n}`.replace(/\/+$/,""):i=`${n}`.replace(/\/?$/,"/").concat(`layers/${t}`),i}async function YTe(e,t,n){if(t.layerType==="Building"){l(n.showFeatures)||(e._showFeatures=!0),l(n.adjustMaterialAlphaMode)||(e._adjustMaterialAlphaMode=!0),l(n.applySymbology)||(e._applySymbology=!0),l(n.calculateNormals)||(e._calculateNormals=!0);let i=t1t(e,t.id);if(l(t.sublayers)){let o=[];for(let s=0;s<t.sublayers.length;s++){let a=CN._fromData(e,i,t.sublayers[s],e);o.push(a)}let r=await Promise.all(o);for(let s=0;s<r.length;s++){let a=r[s];e._sublayers.push(a),e._layers.push(...a._i3sLayers)}}if(l(t.statisticsHRef)){let o=i.concat(`/${t.statisticsHRef}`),r=new bN(e,o);await r.load(),e._attributeStatistics.push(r)}if(l(t.fullExtent)){let o=le.fromDegrees(t.fullExtent.xmin,t.fullExtent.ymin,t.fullExtent.xmax,t.fullExtent.ymax);e._layersExtent.push(o)}}else if(t.layerType==="3DObject"||t.layerType==="IntegratedMesh"){!l(n.calculateNormals)&&!l(t.textureSetDefinitions)&&(e._calculateNormals=!0);let i=new C_(e,t,e);e._layers.push(i),l(i._extent)&&e._layersExtent.push(i._extent)}else console.log(`${t.layerType} layer ${t.name} is skipped as not supported.`)}Us.fromUrl=async function(e,t){t=t??Y.EMPTY_OBJECT;let n=Ve.createIfNeeded(e);n.setQueryParameters({f:"pjson"},!0);let i=await Us.loadJson(n),o=new Us(t);if(o._resource=n,o._data=i,l(i.layers)){let s=[];for(let a=0;a<i.layers.length;a++){let c=YTe(o,i.layers[a],t);s.push(c)}await Promise.all(s)}else await YTe(o,i,t);o._computeExtent();let r=[];for(let s=0;s<o._layers.length;s++)r.push(o._layers[s].load(t.cesium3dTilesetOptions));return await Promise.all(r),o};Us._fetchJson=function(e){return e.fetchJson()};Us.loadJson=async function(e){let t=await Us._fetchJson(e);if(l(t.error)){if(console.error("Failed to fetch I3S ",e.url),l(t.error.message)&&console.error(t.error.message),l(t.error.details))for(let n=0;n<t.error.details.length;n++)console.log(t.error.details[n]);throw new de(t.error)}return t};Us.prototype._loadBinary=async function(e){let t=await e.fetchArrayBuffer();if(t.byteLength>0&&new Uint8Array(t)[0]===123&&new TextDecoder().decode(t).includes("404"))throw new de(`Failed to load binary: ${e.url}`);return t};Us.prototype._binarizeGltf=function(e){let n=new TextEncoder().encode(JSON.stringify(e)),i=new Uint8Array(n.byteLength+20),o={magic:new Uint8Array(i.buffer,0,4),version:new Uint32Array(i.buffer,4,1),length:new Uint32Array(i.buffer,8,1),chunkLength:new Uint32Array(i.buffer,12,1),chunkType:new Uint32Array(i.buffer,16,1),chunkData:new Uint8Array(i.buffer,20,n.byteLength)};return o.magic[0]=103,o.magic[1]=108,o.magic[2]=84,o.magic[3]=70,o.version[0]=2,o.length[0]=i.byteLength,o.chunkLength[0]=n.byteLength,o.chunkType[0]=1313821514,o.chunkData.set(n),i};var n1t=new D;function i1t(e,t){let n=e.tilingScheme,i=[],o={},r=e._lodCount,s=ge.fromRadians(t.west,t.north),a=ge.fromRadians(t.east,t.south),c=n.positionToTileXY(s,r),d=n.positionToTileXY(a,r);for(let h=c.x;h<=d.x;h++)for(let p=c.y;p<=d.y;p++){let g=D.fromElements(h,p,n1t),f=g.toString();if(!o.hasOwnProperty(f)){let b={x:g.x,y:g.y,level:r,tilingScheme:n,terrainProvider:e,positions:[]};o[f]=b,i.push(b)}}let u=[];for(let h=0;h<i.length;++h){let p=i[h],g=p.terrainProvider.requestTileGeometry(p.x,p.y,p.level);u.push(g)}return Promise.all(u).then(function(h){let p=[];for(let g=0;g<h.length;g++){let f={tilingScheme:n,x:i[g].x,y:i[g].y,level:i[g].level},b=h[g],x="Geographic";n._projection instanceof Ui&&(x="WebMercator");let I={projectionType:x,projection:n._projection,nativeExtent:n.tileXYToNativeRectangle(f.x,f.y,f.level),height:b._height,width:b._width,scale:b._structure.heightScale,offset:b._structure.heightOffset};if(b._encoding===Xm.LERC){let _=OTe.default.decode(b._buffer);I.buffer=_.pixels[0]}else I.buffer=b._buffer;p.push(I)}return p})}async function o1t(e){let t=e._geoidTiledTerrainProvider;if(l(t))try{let n=await i1t(t,e._extent);e._geoidDataList=n}catch{console.log("Error retrieving Geoid Terrain tiles - no geoid conversion will be performed.")}}Us.prototype.loadGeoidData=async function(){return l(this._geoidDataPromise)?this._geoidDataPromise:(this._geoidDataPromise=o1t(this),this._geoidDataPromise)};Us.prototype._computeExtent=function(){let e;for(let t=0;t<this._layersExtent.length;t++){let n=this._layersExtent[t];l(e)?le.union(e,n,e):e=le.clone(n)}this._extent=e};Us.prototype.getAttributeNames=function(){let e=[];for(let t=0;t<this._attributeStatistics.length;++t)e.push(...this._attributeStatistics[t].names);return e};Us.prototype.getAttributeValues=function(e){for(let t=0;t<this._attributeStatistics.length;++t){let n=this._attributeStatistics[t]._getValues(e);if(l(n))return n}return[]};Us.prototype.filterByAttributes=function(e){let t=[];for(let n=0;n<this._layers.length;n++){let i=this._layers[n].filterByAttributes(e);t.push(i)}return Promise.all(t)};var _f=Us;var alo=y(C(),1);var xN={};xN.createTilesetFromIModelId=async function(e){let t=e;typeof e=="string"&&(t={iModelId:e,tilesetOptions:arguments[1]},_r("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iModelId:n,changesetId:i,tilesetOptions:o}=t,{exports:r}=await oa.getExports(n,i);if(r.length>0&&r.every(u=>u.status===oa.ExportStatus.Invalid))throw new de(`All exports for this iModel are Invalid: ${n}`);let s=r.find(u=>u.status===oa.ExportStatus.Complete);if(!l(s))return;let a=new URL(s._links.mesh.href);a.pathname=`${a.pathname}/tileset.json`;let c=a.toString(),d=new Ve({url:c});return Ps.fromUrl(d,o)};xN.createTilesetForRealityDataId=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,realityDataId:arguments[1],type:arguments[2],rootDocument:arguments[3]},_r("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,realityDataId:i}=t,{type:o,rootDocument:r}=t;if(!l(o)||!l(r)){let c=await oa.getRealityDataMetadata(n,i);r=c.rootDocument,o=c.type}if(![oa.RealityDataType.Cesium3DTiles,oa.RealityDataType.PNTS,oa.RealityDataType.RealityMesh3DTiles,oa.RealityDataType.Terrain3DTiles].includes(o))throw new de(`Reality data type is not a mesh type: ${o}`);let a=await oa.getRealityDataURL(n,i,r);return Ps.fromUrl(a,{maximumScreenSpaceError:4})};xN.createDataSourceForRealityDataId=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,realityDataId:arguments[1],type:arguments[2],rootDocument:arguments[3]},_r("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,realityDataId:i}=t,{type:o,rootDocument:r}=t;if(!l(o)||!l(r)){let c=await oa.getRealityDataMetadata(n,i);r=c.rootDocument,o=c.type}if(![oa.RealityDataType.KML,oa.RealityDataType.GeoJSON].includes(o))throw new de(`Reality data type is not a data source type: ${o}`);let a=await oa.getRealityDataURL(n,i,r);return o===oa.RealityDataType.GeoJSON?Q0.load(a):pI.load(a)};xN.loadGeospatialFeatures=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,collectionId:arguments[1],limit:arguments[2]},_r("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,collectionId:i,limit:o}=t,r=o??1e4,s=`${oa.apiEndpoint}geospatial-features/itwins/${n}/ogc/collections/${i}/items`,a=new Ve({url:s,headers:{Authorization:oa._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{limit:r,client:"CesiumJS"}});return Q0.load(a)};var S$=xN;var dlo=y(C(),1);function HTe(){}Object.defineProperties(HTe.prototype,{color:{get:Ae.throwInstantiationError},intensity:{get:Ae.throwInstantiationError}});var L$=HTe;var glo=y(C(),1);var r1t=/\/$/,zTe=new Gt('© <a href="https://www.mapbox.com/about/maps/">Mapbox</a> © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> <strong><a href="https://www.mapbox.com/map-feedback/">Improve this map</a></strong>');function DL(e){e=e??Y.EMPTY_OBJECT;let t=e.styleId,n=e.accessToken;this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let i=Ve.createIfNeeded(e.url??"https://api.mapbox.com/styles/v1/");this._styleId=t,this._accessToken=n;let o=e.tilesize??512;this._tilesize=o;let r=e.username??"mapbox";this._username=r;let s=l(e.scaleFactor)?"@2x":"",a=i.getUrlComponent();r1t.test(a)||(a+="/"),a+=`${this._username}/${t}/tiles/${this._tilesize}/{z}/{x}/{y}${s}`,i.url=a,i.setQueryParameters({access_token:n});let c;l(e.credit)?(c=e.credit,typeof c=="string"&&(c=new Gt(c))):c=zTe,this._resource=i,this._imageryProvider=new hc({url:i,credit:c,ellipsoid:e.ellipsoid,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,rectangle:e.rectangle})}Object.defineProperties(DL.prototype,{url:{get:function(){return this._imageryProvider.url}},rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._imageryProvider.errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},proxy:{get:function(){return this._imageryProvider.proxy}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}}});DL.prototype.getTileCredits=function(e,t,n){};DL.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};DL.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};DL._defaultCredit=zTe;var R$=DL;var ylo=y(C(),1);function V$(e){}V$.prototype.isReady=function(){return!0};V$.prototype.shouldDiscardImage=function(e){return!1};var G$=V$;var Rlo=y(C(),1);var s1t=new Gt("MapQuest, Open Street Map and contributors, CC-BY-SA");function jY(e){e=e??Y.EMPTY_OBJECT;let t=Ve.createIfNeeded(e.url??"https://tile.openstreetmap.org/");t.appendForwardSlash(),t.url+=`{z}/{x}/{y}${e.retinaTiles?"@2x":""}.${e.fileExtension??"png"}`;let n=new _s({ellipsoid:e.ellipsoid}),i=256,o=256,r=e.minimumLevel??0,s=e.maximumLevel,a=e.rectangle??n.rectangle,c=n.positionToTileXY(le.southwest(a),r),d=n.positionToTileXY(le.northeast(a),r),u=(Math.abs(d.x-c.x)+1)*(Math.abs(d.y-c.y)+1),h=e.credit??s1t;typeof h=="string"&&(h=new Gt(h)),hc.call(this,{url:t,credit:h,tilingScheme:n,tileWidth:i,tileHeight:o,minimumLevel:r,maximumLevel:s,rectangle:a})}l(Object.create)&&(jY.prototype=Object.create(hc.prototype),jY.prototype.constructor=jY);var sb=jY;var Wlo=y(C(),1);var a1t=new D(1,1);function Z$(e){e=e??Y.EMPTY_OBJECT,this.mass=e.mass??1,this.position=m.clone(e.position??m.ZERO),this.velocity=m.clone(e.velocity??m.ZERO),this.life=e.life??Number.MAX_VALUE,this.image=e.image,this.startColor=U.clone(e.startColor??U.WHITE),this.endColor=U.clone(e.endColor??U.WHITE),this.startScale=e.startScale??1,this.endScale=e.endScale??1,this.imageSize=D.clone(e.imageSize??a1t),this._age=0,this._normalizedAge=0,this._billboard=void 0}Object.defineProperties(Z$.prototype,{age:{get:function(){return this._age}},normalizedAge:{get:function(){return this._normalizedAge}}});var KTe=new m;Z$.prototype.update=function(e,t){return m.multiplyByScalar(this.velocity,e,KTe),m.add(this.position,KTe,this.position),l(t)&&t(this,e),this._age+=e,this.life===Number.MAX_VALUE?this._normalizedAge=0:this._normalizedAge=this._age/this.life,this._age<=this.life};var QL=Z$;var Mlo=y(C(),1);function JTe(e){e=e??Y.EMPTY_OBJECT,this.time=e.time??0,this.minimum=e.minimum??0,this.maximum=e.maximum??50,this._complete=!1}Object.defineProperties(JTe.prototype,{complete:{get:function(){return this._complete}}});var B$=JTe;var Dlo=y(C(),1);function jTe(e){}jTe.prototype.emit=function(e){Ae.throwInstantiationError()};var w$=jTe;var ndo=y(C(),1);var qTe=new D(1,1);function IN(e){e=e??Y.EMPTY_OBJECT,this.show=e.show??!0,this.updateCallback=e.updateCallback,this.loop=e.loop??!0,this.image=e.image??void 0;let t=e.emitter;l(t)||(t=new aN(.5)),this._emitter=t,this._bursts=e.bursts,this._modelMatrix=X.clone(e.modelMatrix??X.IDENTITY),this._emitterModelMatrix=X.clone(e.emitterModelMatrix??X.IDENTITY),this._matrixDirty=!0,this._combinedMatrix=new X,this._startColor=U.clone(e.color??e.startColor??U.WHITE),this._endColor=U.clone(e.color??e.endColor??U.WHITE),this._startScale=e.scale??e.startScale??1,this._endScale=e.scale??e.endScale??1,this._emissionRate=e.emissionRate??5,this._minimumSpeed=e.speed??e.minimumSpeed??1,this._maximumSpeed=e.speed??e.maximumSpeed??1,this._minimumParticleLife=e.particleLife??e.minimumParticleLife??5,this._maximumParticleLife=e.particleLife??e.maximumParticleLife??5,this._minimumMass=e.mass??e.minimumMass??1,this._maximumMass=e.mass??e.maximumMass??1,this._minimumImageSize=D.clone(e.imageSize??e.minimumImageSize??qTe),this._maximumImageSize=D.clone(e.imageSize??e.maximumImageSize??qTe),this._sizeInMeters=e.sizeInMeters??!1,this._lifetime=e.lifetime??Number.MAX_VALUE,this._billboardCollection=void 0,this._particles=[],this._particlePool=[],this._previousTime=void 0,this._currentTime=0,this._carryOver=0,this._complete=new Ce,this._isComplete=!1,this._updateParticlePool=!0,this._particleEstimate=0}Object.defineProperties(IN.prototype,{emitter:{get:function(){return this._emitter},set:function(e){this._emitter=e}},bursts:{get:function(){return this._bursts},set:function(e){this._bursts=e,this._updateParticlePool=!0}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._matrixDirty=this._matrixDirty||!X.equals(this._modelMatrix,e),X.clone(e,this._modelMatrix)}},emitterModelMatrix:{get:function(){return this._emitterModelMatrix},set:function(e){this._matrixDirty=this._matrixDirty||!X.equals(this._emitterModelMatrix,e),X.clone(e,this._emitterModelMatrix)}},startColor:{get:function(){return this._startColor},set:function(e){U.clone(e,this._startColor)}},endColor:{get:function(){return this._endColor},set:function(e){U.clone(e,this._endColor)}},startScale:{get:function(){return this._startScale},set:function(e){this._startScale=e}},endScale:{get:function(){return this._endScale},set:function(e){this._endScale=e}},emissionRate:{get:function(){return this._emissionRate},set:function(e){this._emissionRate=e,this._updateParticlePool=!0}},minimumSpeed:{get:function(){return this._minimumSpeed},set:function(e){this._minimumSpeed=e}},maximumSpeed:{get:function(){return this._maximumSpeed},set:function(e){this._maximumSpeed=e}},minimumParticleLife:{get:function(){return this._minimumParticleLife},set:function(e){this._minimumParticleLife=e}},maximumParticleLife:{get:function(){return this._maximumParticleLife},set:function(e){this._maximumParticleLife=e,this._updateParticlePool=!0}},minimumMass:{get:function(){return this._minimumMass},set:function(e){this._minimumMass=e}},maximumMass:{get:function(){return this._maximumMass},set:function(e){this._maximumMass=e}},minimumImageSize:{get:function(){return this._minimumImageSize},set:function(e){this._minimumImageSize=e}},maximumImageSize:{get:function(){return this._maximumImageSize},set:function(e){this._maximumImageSize=e}},sizeInMeters:{get:function(){return this._sizeInMeters},set:function(e){this._sizeInMeters=e}},lifetime:{get:function(){return this._lifetime},set:function(e){this._lifetime=e}},complete:{get:function(){return this._complete}},isComplete:{get:function(){return this._isComplete}}});function c1t(e){let t=e._emissionRate,n=e._maximumParticleLife,i=0,o=e._bursts;if(l(o)){let h=o.length;for(let p=0;p<h;++p)i+=o[p].maximum}let r=e._billboardCollection,s=e.image,a=Math.ceil(t*n+i),c=e._particles,d=e._particlePool,u=Math.max(a-c.length-d.length,0);for(let h=0;h<u;++h){let p=new QL;p._billboard=r.add({image:s,show:!1}),d.push(p)}e._particleEstimate=a}function l1t(e){let t=e._particlePool.pop();return l(t)||(t=new QL),t}function d1t(e,t){e._particlePool.push(t)}function u1t(e){let t=e._particles,n=e._particlePool,i=e._billboardCollection,o=t.length,r=n.length,s=e._particleEstimate,a=r-Math.max(s-o-r,0);for(let c=a;c<r;++c){let d=n[c];i.remove(d._billboard)}n.length=a}function m1t(e){l(e._billboard)&&(e._billboard.show=!1)}function $Te(e,t){let n=t._billboard;l(n)||(n=t._billboard=e._billboardCollection.add({image:t.image})),n.width=t.imageSize.x,n.height=t.imageSize.y,n.position=t.position,n.sizeInMeters=e.sizeInMeters,n.show=!0;let i=Z.lerp(t.startColor.red,t.endColor.red,t.normalizedAge),o=Z.lerp(t.startColor.green,t.endColor.green,t.normalizedAge),r=Z.lerp(t.startColor.blue,t.endColor.blue,t.normalizedAge),s=Z.lerp(t.startColor.alpha,t.endColor.alpha,t.normalizedAge);n.color=new U(i,o,r,s),n.scale=Z.lerp(t.startScale,t.endScale,t.normalizedAge)}function h1t(e,t){t.startColor=U.clone(e._startColor,t.startColor),t.endColor=U.clone(e._endColor,t.endColor),t.startScale=e._startScale,t.endScale=e._endScale,t.image=e.image,t.life=Z.randomBetween(e._minimumParticleLife,e._maximumParticleLife),t.mass=Z.randomBetween(e._minimumMass,e._maximumMass),t.imageSize.x=Z.randomBetween(e._minimumImageSize.x,e._maximumImageSize.x),t.imageSize.y=Z.randomBetween(e._minimumImageSize.y,e._maximumImageSize.y),t._normalizedAge=0,t._age=0;let n=Z.randomBetween(e._minimumSpeed,e._maximumSpeed);m.multiplyByScalar(t.velocity,n,t.velocity),e._particles.push(t)}function f1t(e,t){if(e._isComplete)return 0;t=Z.mod(t,e._lifetime);let n=t*e._emissionRate,i=Math.floor(n);if(e._carryOver+=n-i,e._carryOver>1&&(i++,e._carryOver-=1),l(e.bursts)){let o=e.bursts.length;for(let r=0;r<o;r++){let s=e.bursts[r],a=e._currentTime;l(s)&&!s._complete&&a>s.time&&(i+=Z.randomBetween(s.minimum,s.maximum),s._complete=!0)}}return i}var qY=new m;IN.prototype.update=function(e){if(!this.show)return;l(this._billboardCollection)||(this._billboardCollection=new qd),this._updateParticlePool&&(c1t(this),this._updateParticlePool=!1);let t=0;this._previousTime&&(t=j.secondsDifference(e.time,this._previousTime)),t<0&&(t=0);let n=this._particles,i=this._emitter,o=this.updateCallback,r,s,a=n.length;for(r=0;r<a;++r)s=n[r],s.update(t,o)?$Te(this,s):(m1t(s),d1t(this,s),n[r]=n[a-1],--r,--a);n.length=a;let c=f1t(this,t);if(c>0&&l(i)){this._matrixDirty&&(this._combinedMatrix=X.multiply(this.modelMatrix,this.emitterModelMatrix,this._combinedMatrix),this._matrixDirty=!1);let d=this._combinedMatrix;for(r=0;r<c;r++)s=l1t(this),this._emitter.emit(s),m.add(s.position,s.velocity,qY),X.multiplyByPoint(d,qY,qY),s.position=X.multiplyByPoint(d,s.position,s.position),m.subtract(qY,s.position,s.velocity),m.normalize(s.velocity,s.velocity),h1t(this,s),$Te(this,s)}if(this._billboardCollection.update(e),this._previousTime=j.clone(e.time,this._previousTime),this._currentTime+=t,this._lifetime!==Number.MAX_VALUE&&this._currentTime>this._lifetime)if(this.loop){if(this._currentTime=Z.mod(this._currentTime,this._lifetime),this.bursts){let d=this.bursts.length;for(r=0;r<d;r++)this.bursts[r]._complete=!1}}else this._isComplete=!0,this._complete.raiseEvent(this);e.frameNumber%120===0&&u1t(this)};IN.prototype.isDestroyed=function(){return!1};IN.prototype.destroy=function(){return this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),me(this)};var X$=IN;var rdo=y(C(),1);function Xu(){Ae.throwInstantiationError()}Xu.computeDefaultLevelZeroMaximumGeometricError=function(e){return e.ellipsoid.maximumRadius*2*Math.PI*.25/(65*e.getNumberOfXTilesAtLevel(0))};Object.defineProperties(Xu.prototype,{quadtree:{get:Ae.throwInstantiationError,set:Ae.throwInstantiationError},tilingScheme:{get:Ae.throwInstantiationError},errorEvent:{get:Ae.throwInstantiationError}});Xu.prototype.update=Ae.throwInstantiationError;Xu.prototype.beginUpdate=Ae.throwInstantiationError;Xu.prototype.endUpdate=Ae.throwInstantiationError;Xu.prototype.getLevelMaximumGeometricError=Ae.throwInstantiationError;Xu.prototype.loadTile=Ae.throwInstantiationError;Xu.prototype.computeTileVisibility=Ae.throwInstantiationError;Xu.prototype.showTileThisFrame=Ae.throwInstantiationError;Xu.prototype.computeDistanceToTile=Ae.throwInstantiationError;Xu.prototype.isDestroyed=Ae.throwInstantiationError;Xu.prototype.destroy=Ae.throwInstantiationError;var W$=Xu;var ldo=y(C(),1);function F$(e){e=e??1,this._radius=e??1}Object.defineProperties(F$.prototype,{radius:{get:function(){return this._radius},set:function(e){this._radius=e}}});F$.prototype.emit=function(e){let t=Z.randomBetween(0,Z.TWO_PI),n=Z.randomBetween(0,Z.PI),i=Z.randomBetween(0,this._radius),o=i*Math.cos(t)*Math.sin(n),r=i*Math.sin(t)*Math.sin(n),s=i*Math.cos(n);e.position=m.fromElements(o,r,s,e.position),e.velocity=m.normalize(e.position,e.velocity)};var P$=F$;var mdo=y(C(),1);function _N(){}_N.prototype.evaluate=function(e,t){Ae.throwInstantiationError()};_N.prototype.evaluateColor=function(e,t){Ae.throwInstantiationError()};_N.prototype.getShaderFunction=function(e,t,n,i){Ae.throwInstantiationError()};_N.prototype.getVariables=function(){Ae.throwInstantiationError()};var M$=_N;var gdo=y(C(),1);function UL(e){this._ready=!1,this._provider=void 0,this._errorEvent=new Ce,this._readyEvent=new Ce,A1t(this,e)}Object.defineProperties(UL.prototype,{errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},ready:{get:function(){return this._ready}},provider:{get:function(){return this._provider}}});UL.fromWorldTerrain=function(e){return new UL(h_(e))};UL.fromWorldBathymetry=function(e){return new UL(eN(e))};function p1t(e,t){e.numberOfListeners>0?e.raiseEvent(t):console.error(t)}async function A1t(e,t){let n;try{n=await Promise.resolve(t),e._provider=n,e._ready=!0,e._readyEvent.raiseEvent(n)}catch(i){p1t(e._errorEvent,i)}}var EN=UL;var Cdo=y(C(),1);function kL(){}kL.prototype.boundingVolume=void 0;kL.prototype.boundingSphere=void 0;kL.prototype.distanceToCamera=function(e){Ae.throwInstantiationError()};kL.prototype.intersectPlane=function(e){Ae.throwInstantiationError()};kL.prototype.createDebugVolume=function(e){Ae.throwInstantiationError()};var v$=kL;var Ldo=y(C(),1);function TN(e){e=e??Y.EMPTY_OBJECT,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new ao({ellipsoid:e.ellipsoid}),this._color=e.color??U.YELLOW,this._errorEvent=new Ce,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0}Object.defineProperties(TN.prototype,{proxy:{get:function(){}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){}},minimumLevel:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},hasAlphaChannel:{get:function(){return!0}}});TN.prototype.getTileCredits=function(e,t,n){};TN.prototype.requestImage=function(e,t,n,i){let o=document.createElement("canvas");o.width=256,o.height=256;let r=o.getContext("2d"),s=this._color.toCssColorString();return r.strokeStyle=s,r.lineWidth=2,r.strokeRect(1,1,255,255),r.font="bold 25px Arial",r.textAlign="center",r.fillStyle=s,r.fillText(`L: ${n}`,124,86),r.fillText(`X: ${e}`,124,136),r.fillText(`Y: ${t}`,124,186),Promise.resolve(o)};TN.prototype.pickFeatures=function(e,t,n,i,o){};var SN=TN;var Gdo=y(C(),1);function N$(e){Ae.throwInstantiationError()}N$.prototype.isReady=Ae.throwInstantiationError;N$.prototype.shouldDiscardImage=Ae.throwInstantiationError;var D$=N$;var Bdo=y(C(),1),g1t={START:0,LOADING:1,READY:2,UPSAMPLED_ONLY:3},Q$=Object.freeze(g1t);var kdo=y(C(),1);function $Y(e,t){this.show=!0,l(e)||(e=new Ke),this.rectangle=Ke.clone(e),l(t)||(t=so.fromType(so.ColorType,{color:new U(1,1,1,1)})),this.material=t,this._material=void 0,this._overlayCommand=void 0,this._rs=void 0}$Y.prototype.update=function(e){if(!this.show)return;let t=this._rs;if((!l(t)||!Ke.equals(t.viewport,this.rectangle))&&(this._rs=Qe.fromCache({blending:bn.ALPHA_BLEND,viewport:this.rectangle})),e.passes.render){let i=e.context;if(this._material!==this.material||!l(this._overlayCommand)){this._material=this.material,l(this._overlayCommand)&&this._overlayCommand.shaderProgram.destroy();let o=new Oe({sources:[this._material.shaderSource,RP]});this._overlayCommand=i.createViewportQuadCommand(o,{renderState:this._rs,uniformMap:this._material._uniforms,owner:this}),this._overlayCommand.pass=Ge.OVERLAY}this._material.update(i),this._overlayCommand.renderState=this._rs,this._overlayCommand.uniformMap=this._material._uniforms,e.commandList.push(this._overlayCommand)}};$Y.prototype.isDestroyed=function(){return!1};$Y.prototype.destroy=function(){return l(this._overlayCommand)&&(this._overlayCommand.shaderProgram=this._overlayCommand.shaderProgram&&this._overlayCommand.shaderProgram.destroy()),me(this)};var U$=$Y;var Hdo=y(C(),1);function k$(){Ae.throwInstantiationError()}Object.defineProperties(k$.prototype,{globalTransform:{get:Ae.throwInstantiationError},shapeTransform:{get:Ae.throwInstantiationError},shape:{get:Ae.throwInstantiationError},minBounds:{get:Ae.throwInstantiationError},maxBounds:{get:Ae.throwInstantiationError},dimensions:{get:Ae.throwInstantiationError},paddingBefore:{get:Ae.throwInstantiationError},paddingAfter:{get:Ae.throwInstantiationError},names:{get:Ae.throwInstantiationError},types:{get:Ae.throwInstantiationError},componentTypes:{get:Ae.throwInstantiationError},minimumValues:{get:Ae.throwInstantiationError},maximumValues:{get:Ae.throwInstantiationError},maximumTileCount:{get:Ae.throwInstantiationError},availableLevels:{get:Ae.throwInstantiationError},keyframeCount:{get:Ae.throwInstantiationError},timeIntervalCollection:{get:Ae.throwInstantiationError}});k$.prototype.requestData=function(e){Ae.throwInstantiationError()};var Y$=k$;var Jdo=y(C(),1);function x_(){Ae.throwInstantiationError()}Object.defineProperties(x_.prototype,{orientedBoundingBox:{get:Ae.throwInstantiationError},boundingSphere:{get:Ae.throwInstantiationError},boundTransform:{get:Ae.throwInstantiationError},shapeTransform:{get:Ae.throwInstantiationError},shaderUniforms:{get:Ae.throwInstantiationError},shaderDefines:{get:Ae.throwInstantiationError},shaderMaximumIntersectionsLength:{get:Ae.throwInstantiationError}});x_.prototype.update=Ae.throwInstantiationError;x_.prototype.computeOrientedBoundingBoxForTile=Ae.throwInstantiationError;x_.prototype.computeOrientedBoundingBoxForSample=Ae.throwInstantiationError;x_.DefaultMinBounds=Ae.throwInstantiationError;x_.DefaultMaxBounds=Ae.throwInstantiationError;var O$=x_;var muo=y(C(),1);var b1t=new U,y1t=new U,C1t=new U,x1t=new U,eSe=new ce,LN=new Uint8Array(4);function tSe(e,t,n,i){let o=t.height===n.height?0:(e-t.height)/(n.height-t.height);return U.lerp(t.color,n.color,o,i)}function e3(e,t){return{height:e,color:U.clone(t)}}function nSe(e){return e=e.filter(function(t,n,i){let o=n>0,r=n<i.length-1,s=o?t.height===i[n-1].height:!0,a=r?t.height===i[n+1].height:!0;return!s||!a}),e=e.filter(function(t,n,i){let o=n>0,r=n<i.length-1,s=o?U.equals(t.color,i[n-1].color):!1,a=r?U.equals(t.color,i[n+1].color):!1;return!s||!a}),e=e.filter(function(t,n,i){let o=n>0,r=o?U.equals(t.color,i[n-1].color):!1,s=o?t.height===i[n-1].height:!0;return!r||!s}),e}function I1t(e){let t,n,i=[],o=e.length;for(t=0;t<o;t++){let r=e[t],s=r.entries,a=s.length,c=[];for(n=0;n<a;n++){let g=s[n],f=Z.clamp(g.height,Rd._minimumHeight,Rd._maximumHeight),b=U.clone(g.color,b1t);b.red*=b.alpha,b.green*=b.alpha,b.blue*=b.alpha,c.push(e3(f,b))}let d=!0,u=!0;for(n=0;n<a-1;n++){let g=c[n+0],f=c[n+1];d=d&&g.height<=f.height,u=u&&g.height>=f.height}u?c=c.reverse():d||Sp(c,function(g,f){return Z.sign(g.height-f.height)});let h=r.extendDownwards??!1,p=r.extendUpwards??!1;c.length===1&&!h&&!p&&(h=!0,p=!0),h&&c.splice(0,0,e3(Rd._minimumHeight,c[0].color)),p&&c.splice(c.length,0,e3(Rd._maximumHeight,c[c.length-1].color)),c=nSe(c),i.push(c)}return i}function _1t(e){let t=I1t(e),n=[],i=[],o;function r(d,u){n.push(e3(d,u))}function s(d,u,h){let p=U.multiplyByScalar(h,1-u.alpha,x1t);p=U.add(p,u,p),r(d,p)}let a=t.length;for(o=0;o<a;o++){let d=t[o],u=0,h=0;i=n,n=[];let p=d.length,g=i.length;for(;u<p||h<g;){let f=u<p?d[u]:void 0,b=u>0?d[u-1]:void 0,x=u<p-1?d[u+1]:void 0,I=h<g?i[h]:void 0,_=h>0?i[h-1]:void 0,E=h<g-1?i[h+1]:void 0;if(l(f)&&l(I)&&f.height===I.height){let S=l(E)&&I.height===E.height,R=!l(_),G=!l(E),B=l(x)&&f.height===x.height,w=!l(b),F=!l(x);S?B?(s(f.height,f.color,I.color),s(f.height,x.color,E.color)):w?(r(f.height,I.color),s(f.height,f.color,E.color)):F?(s(f.height,f.color,I.color),r(f.height,E.color)):(s(f.height,f.color,I.color),s(f.height,f.color,E.color)):R?B?(r(f.height,f.color),s(f.height,x.color,I.color)):F?(r(f.height,f.color),r(f.height,I.color)):(w||r(f.height,f.color),s(f.height,f.color,I.color)):G?B?(s(f.height,f.color,I.color),r(f.height,x.color)):w?(r(f.height,I.color),r(f.height,f.color)):F?s(f.height,f.color,I.color):(s(f.height,f.color,I.color),r(f.height,f.color)):B?(s(f.height,f.color,I.color),s(f.height,x.color,I.color)):w?(r(f.height,I.color),s(f.height,f.color,I.color)):F?(s(f.height,f.color,I.color),r(f.height,I.color)):s(f.height,f.color,I.color),u+=B?2:1,h+=S?2:1}else if(l(f)&&l(I)&&l(_)&&f.height<I.height){let S=tSe(f.height,_,I,C1t);l(b)?l(x)?s(f.height,f.color,S):(s(f.height,f.color,S),r(f.height,S)):(r(f.height,S),s(f.height,f.color,S)),u++}else if(l(I)&&l(f)&&l(b)&&I.height<f.height){let S=tSe(I.height,b,f,y1t);l(_)?l(E)?s(I.height,S,I.color):(s(I.height,S,I.color),r(I.height,S)):(r(I.height,S),s(I.height,S,I.color)),h++}else l(f)&&(!l(I)||f.height<I.height)?(l(I)&&!l(_)&&!l(x)?(r(f.height,f.color),r(f.height,Rd._emptyColor),r(I.height,Rd._emptyColor)):(!l(I)&&l(_)&&!l(b)&&(r(_.height,Rd._emptyColor),r(f.height,Rd._emptyColor)),r(f.height,f.color)),u++):l(I)&&(!l(f)||I.height<f.height)&&(r(I.height,I.color),h++)}}return nSe(n)}function Rd(e){let{scene:t,layers:n}=e??Y.EMPTY_OBJECT,{context:i}=t,o=_1t(n),r=o.length,s,a,c;if(!Rd._useFloatTexture(i)){a=Ye.UNSIGNED_BYTE,c=tt.RGBA,s=new Uint8Array(r*4);for(let g=0;g<r;g++)ce.packFloat(o[g].height,eSe),ce.pack(eSe,s,g*4)}else{a=Ye.FLOAT,c=i.webgl2?tt.RED:tt.LUMINANCE,s=new Float32Array(r);for(let g=0;g<r;g++)s[g]=o[g].height}let u=Wt.create({context:i,pixelFormat:c,pixelDatatype:a,source:{arrayBufferView:s,width:r,height:1},sampler:new sn({wrapS:Ln.CLAMP_TO_EDGE,wrapT:Ln.CLAMP_TO_EDGE,minificationFilter:en.NEAREST,magnificationFilter:pi.NEAREST})}),h=new Uint8Array(r*4);for(let g=0;g<r;g++)o[g].color.toBytes(LN),h[g*4+0]=LN[0],h[g*4+1]=LN[1],h[g*4+2]=LN[2],h[g*4+3]=LN[3];let p=Wt.create({context:i,pixelFormat:tt.RGBA,pixelDatatype:Ye.UNSIGNED_BYTE,source:{arrayBufferView:h,width:r,height:1},sampler:new sn({wrapS:Ln.CLAMP_TO_EDGE,wrapT:Ln.CLAMP_TO_EDGE,minificationFilter:en.LINEAR,magnificationFilter:pi.LINEAR})});return so.fromType("ElevationBand",{heights:u,colors:p})}Rd._useFloatTexture=function(e){return e.floatingPointTexture};Rd._maximumHeight=5906376425472;Rd._minimumHeight=-5906376425472;Rd._emptyColor=new U(0,0,0,0);var H$=Rd;var xuo=y(C(),1);async function E1t(e,t){t=t??{},t.cacheBytes=t.cacheBytes??1536*1024*1024,t.maximumCacheOverflowBytes=t.maximumCacheOverflowBytes??1024*1024*1024,t.enableCollision=t.enableCollision??!0,e=e??Y.EMPTY_OBJECT,e.onlyUsingWithGoogleGeocoder||xt("google-tiles-with-google-geocoder","Only the Google geocoder can be used with Google Photorealistic 3D Tiles. Set the `geocode` property of Viewer constructor options. You can set additionalOptions.onlyUsingWithGoogleGeocoder to hide this warning once you have configured the geocoder.");let n=e.key??d_.defaultApiKey;if(!l(n))return T1t(t);let i,o=d_.getDefaultCredit();l(o)&&(i=[o]);let r=new Ve({url:`${d_.mapTilesApiEndpoint}3dtiles/root.json`,queryParameters:{key:n},credits:i});return Ps.fromUrl(r,t)}var iSe={};async function T1t(e){let i=iSe[2275207];l(i)||(i=Nd.fromAssetId(2275207),iSe[2275207]=i);let o=await i;return Ps.fromUrl(o,e)}var z$=E1t;var Ruo=y(C(),1);async function S1t(e){let t=await Ps.fromIonAssetId(96188,e);e=e??Y.EMPTY_OBJECT;let n=e.style;if(!l(n)){let i=(e.defaultColor??U.WHITE).toCssColorString();n=new p_({color:`Boolean(\${feature['cesium#color']}) ? color(\${feature['cesium#color']}) : ${i}`})}return t.style=n,t}var K$=S1t;var Muo=y(C(),1);function L1t(e){e=e??Y.EMPTY_OBJECT;let t=[],n=e.geometry;(!l(n.attributes)||!l(n.primitiveType))&&(n=n.constructor.createGeometry(n));let i=n.attributes,o=X.clone(e.modelMatrix??X.IDENTITY),r=e.length??1e4;if(l(i.normal)&&t.push(new wt({geometry:Yn.createLineSegmentsForVectors(n,"normal",r),attributes:{color:new tn(1,0,0,1)},modelMatrix:o})),l(i.tangent)&&t.push(new wt({geometry:Yn.createLineSegmentsForVectors(n,"tangent",r),attributes:{color:new tn(0,1,0,1)},modelMatrix:o})),l(i.bitangent)&&t.push(new wt({geometry:Yn.createLineSegmentsForVectors(n,"bitangent",r),attributes:{color:new tn(0,0,1,1)},modelMatrix:o})),t.length>0)return new Nn({asynchronous:!1,geometryInstances:t,appearance:new yn({flat:!0,translucent:!1})})}var J$=L1t;var Nuo=y(C(),1),j$=`uniform sampler2D u_depthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + float z_window = czm_unpackDepth(texture(u_depthTexture, v_textureCoordinates)); + z_window = czm_reverseLogDepth(z_window); + float n_range = czm_depthRange.near; + float f_range = czm_depthRange.far; + float z_ndc = (2.0 * z_window - n_range - f_range) / (f_range - n_range); + float scale = pow(z_ndc * 0.5 + 0.5, 8.0); + out_FragColor = vec4(mix(vec3(0.0), vec3(1.0), scale), 1.0); +} +`;var zuo=y(C(),1);function R1t(e){e=e??Y.EMPTY_OBJECT,this.typedArray=e.typedArray,this.width=e.width,this.height=e.height,this.pixelFormat=e.pixelFormat??tt.RGBA,this.pixelDatatype=e.pixelDatatype??Ye.UNSIGNED_BYTE;let t=e.url;typeof t=="string"&&(t=Ve.createIfNeeded(t)),this.resource=t;let i=e.repeat??!0?Ln.REPEAT:Ln.CLAMP_TO_EDGE;this.sampler=new sn({wrapS:i,wrapT:i,minificationFilter:e.minificationFilter,magnificationFilter:e.magnificationFilter,maximumAnisotropy:e.maximumAnisotropy})}var q$=R1t;var Juo=y(C(),1),V1t={FLOAT:"float",VEC2:"vec2",VEC3:"vec3",VEC4:"vec4",MAT2:"mat2",MAT3:"mat3",MAT4:"mat4"},$$=Object.freeze(V1t);var quo=y(C(),1),G1t={SIGX:"SIGX",SIGY:"SIGY",SIGZ:"SIGZ",VARX:"VARX",VARY:"VARY",VARZ:"VARZ",SIGR:"VARZ"},eee=Object.freeze(G1t);var tmo=y(C(),1);function Z1t(e){async function t({data:i}){let o=[],r={id:i.id,result:void 0,error:void 0};self.CESIUM_BASE_URL=i.baseUrl;try{let s=await e(i.parameters,o);r.result=s}catch(s){s instanceof Error?r.error={name:s.name,message:s.message,stack:s.stack}:r.error=s}i.canTransferArrayBuffer||(o.length=0);try{postMessage(r,o)}catch(s){r.result=void 0,r.error=`postMessage failed with error: ${Kf(s)} + with responseMessage: ${JSON.stringify(r)}`,postMessage(r)}}function n(i){postMessage({id:i.data?.id,error:`postMessage failed with error: ${JSON.stringify(i)}`})}return self.onmessage=t,self.onmessageerror=n,self}var tee=Z1t;globalThis.CESIUM_VERSION="1.132";var cPo=y(C(),1);var vBo=y(C(),1);var WBo=y(C(),1);var SBo=y(C(),1),RN;typeof ko<"u"&&(RN=ko);(function(){/*! + * Knockout JavaScript library v3.5.1 + * (c) The Knockout.js team - http://knockoutjs.com/ + * License: MIT (http://www.opensource.org/licenses/mit-license.php) + */(function(){(function(e){var t=this||(0,eval)("this"),n=t.document,i=t.navigator,o=t.jQuery,r=t.JSON;o||typeof jQuery>"u"||(o=jQuery),function(s){s(t.ko={})}(function(s,a){function c(A,T){return A===null||typeof A in b?A===T:!1}function d(A,T){var L;return function(){L||(L=f.a.setTimeout(function(){L=e,A()},T))}}function u(A,T){var L;return function(){clearTimeout(L),L=f.a.setTimeout(A,T)}}function h(A,T){T&&T!=="change"?T==="beforeChange"?this.pc(A):this.gb(A,T):this.qc(A)}function p(A,T){T!==null&&T.s&&T.s()}function g(A,T){var L=this.qd,V=L[S];V.ra||(this.Qb&&this.mb[T]?(L.uc(T,A,this.mb[T]),this.mb[T]=null,--this.Qb):V.I[T]||L.uc(T,A,V.J?{da:A}:L.$c(A)),A.Ja&&A.gd())}var f=typeof s<"u"?s:{};f.b=function(A,T){for(var L=A.split("."),V=f,W=0;W<L.length-1;W++)V=V[L[W]];V[L[L.length-1]]=T},f.L=function(A,T,L){A[T]=L},f.version="3.5.1",f.b("version",f.version),f.options={deferUpdates:!1,useOnlyNativeEvents:!1,foreachHidesDestroyed:!1},f.a=function(){function A(K,te){for(var q in K)W.call(K,q)&&te(q,K[q])}function T(K,te){if(te)for(var q in te)W.call(te,q)&&(K[q]=te[q]);return K}function L(K,te){return K.__proto__=te,K}function V(K,te,q,pe){var ye=K[te].match(H)||[];f.a.D(q.match(H),function(he){f.a.Na(ye,he,pe)}),K[te]=ye.join(" ")}var W=Object.prototype.hasOwnProperty,M={__proto__:[]}instanceof Array,Q=typeof Symbol=="function",N={},k={};N[i&&/Firefox\/2/i.test(i.userAgent)?"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"],N.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" "),A(N,function(K,te){if(te.length)for(var q=0,pe=te.length;q<pe;q++)k[te[q]]=K});var v={propertychange:!0},O=n&&function(){for(var K=3,te=n.createElement("div"),q=te.getElementsByTagName("i");te.innerHTML="<!--[if gt IE "+ ++K+"]><i></i><![endif]-->",q[0];);return 4<K?K:e}(),H=/\S+/g,ee;return{Jc:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],D:function(K,te,q){for(var pe=0,ye=K.length;pe<ye;pe++)te.call(q,K[pe],pe,K)},A:typeof Array.prototype.indexOf=="function"?function(K,te){return Array.prototype.indexOf.call(K,te)}:function(K,te){for(var q=0,pe=K.length;q<pe;q++)if(K[q]===te)return q;return-1},Lb:function(K,te,q){for(var pe=0,ye=K.length;pe<ye;pe++)if(te.call(q,K[pe],pe,K))return K[pe];return e},Pa:function(K,te){var q=f.a.A(K,te);0<q?K.splice(q,1):q===0&&K.shift()},wc:function(K){var te=[];return K&&f.a.D(K,function(q){0>f.a.A(te,q)&&te.push(q)}),te},Mb:function(K,te,q){var pe=[];if(K)for(var ye=0,he=K.length;ye<he;ye++)pe.push(te.call(q,K[ye],ye));return pe},jb:function(K,te,q){var pe=[];if(K)for(var ye=0,he=K.length;ye<he;ye++)te.call(q,K[ye],ye)&&pe.push(K[ye]);return pe},Nb:function(K,te){if(te instanceof Array)K.push.apply(K,te);else for(var q=0,pe=te.length;q<pe;q++)K.push(te[q]);return K},Na:function(K,te,q){var pe=f.a.A(f.a.bc(K),te);0>pe?q&&K.push(te):q||K.splice(pe,1)},Ba:M,extend:T,setPrototypeOf:L,Ab:M?L:T,P:A,Ga:function(K,te,q){if(!K)return K;var pe={},ye;for(ye in K)W.call(K,ye)&&(pe[ye]=te.call(q,K[ye],ye,K));return pe},Tb:function(K){for(;K.firstChild;)f.removeNode(K.firstChild)},Yb:function(K){K=f.a.la(K);for(var te=(K[0]&&K[0].ownerDocument||n).createElement("div"),q=0,pe=K.length;q<pe;q++)te.appendChild(f.oa(K[q]));return te},Ca:function(K,te){for(var q=0,pe=K.length,ye=[];q<pe;q++){var he=K[q].cloneNode(!0);ye.push(te?f.oa(he):he)}return ye},va:function(K,te){if(f.a.Tb(K),te)for(var q=0,pe=te.length;q<pe;q++)K.appendChild(te[q])},Xc:function(K,te){var q=K.nodeType?[K]:K;if(0<q.length){for(var pe=q[0],ye=pe.parentNode,he=0,xe=te.length;he<xe;he++)ye.insertBefore(te[he],pe);for(he=0,xe=q.length;he<xe;he++)f.removeNode(q[he])}},Ua:function(K,te){if(K.length){for(te=te.nodeType===8&&te.parentNode||te;K.length&&K[0].parentNode!==te;)K.splice(0,1);for(;1<K.length&&K[K.length-1].parentNode!==te;)K.length--;if(1<K.length){var q=K[0],pe=K[K.length-1];for(K.length=0;q!==pe;)K.push(q),q=q.nextSibling;K.push(pe)}}return K},Zc:function(K,te){7>O?K.setAttribute("selected",te):K.selected=te},Db:function(K){return K===null||K===e?"":K.trim?K.trim():K.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},Ud:function(K,te){return K=K||"",te.length>K.length?!1:K.substring(0,te.length)===te},vd:function(K,te){if(K===te)return!0;if(K.nodeType===11)return!1;if(te.contains)return te.contains(K.nodeType!==1?K.parentNode:K);if(te.compareDocumentPosition)return(te.compareDocumentPosition(K)&16)==16;for(;K&&K!=te;)K=K.parentNode;return!!K},Sb:function(K){return f.a.vd(K,K.ownerDocument.documentElement)},kd:function(K){return!!f.a.Lb(K,f.a.Sb)},R:function(K){return K&&K.tagName&&K.tagName.toLowerCase()},Ac:function(K){return f.onError?function(){try{return K.apply(this,arguments)}catch(te){throw f.onError&&f.onError(te),te}}:K},setTimeout:function(K,te){return setTimeout(f.a.Ac(K),te)},Gc:function(K){setTimeout(function(){throw f.onError&&f.onError(K),K},0)},B:function(K,te,q){var pe=f.a.Ac(q);if(q=v[te],f.options.useOnlyNativeEvents||q||!o)if(q||typeof K.addEventListener!="function")if(typeof K.attachEvent<"u"){var ye=function(xe){pe.call(K,xe)},he="on"+te;K.attachEvent(he,ye),f.a.K.za(K,function(){K.detachEvent(he,ye)})}else throw Error("Browser doesn't support addEventListener or attachEvent");else K.addEventListener(te,pe,!1);else ee||(ee=typeof o(K).on=="function"?"on":"bind"),o(K)[ee](te,pe)},Fb:function(K,te){if(!K||!K.nodeType)throw Error("element must be a DOM node when calling triggerEvent");var q;if(f.a.R(K)==="input"&&K.type&&te.toLowerCase()=="click"?(q=K.type,q=q=="checkbox"||q=="radio"):q=!1,f.options.useOnlyNativeEvents||!o||q)if(typeof n.createEvent=="function")if(typeof K.dispatchEvent=="function")q=n.createEvent(k[te]||"HTMLEvents"),q.initEvent(te,!0,!0,t,0,0,0,0,0,!1,!1,!1,!1,0,K),K.dispatchEvent(q);else throw Error("The supplied element doesn't support dispatchEvent");else if(q&&K.click)K.click();else if(typeof K.fireEvent<"u")K.fireEvent("on"+te);else throw Error("Browser doesn't support triggering events");else o(K).trigger(te)},f:function(K){return f.O(K)?K():K},bc:function(K){return f.O(K)?K.v():K},Eb:function(K,te,q){var pe;te&&(typeof K.classList=="object"?(pe=K.classList[q?"add":"remove"],f.a.D(te.match(H),function(ye){pe.call(K.classList,ye)})):typeof K.className.baseVal=="string"?V(K.className,"baseVal",te,q):V(K,"className",te,q))},Bb:function(K,te){var q=f.a.f(te);(q===null||q===e)&&(q="");var pe=f.h.firstChild(K);!pe||pe.nodeType!=3||f.h.nextSibling(pe)?f.h.va(K,[K.ownerDocument.createTextNode(q)]):pe.data=q,f.a.Ad(K)},Yc:function(K,te){if(K.name=te,7>=O)try{var q=K.name.replace(/[&<>'"]/g,function(pe){return"&#"+pe.charCodeAt(0)+";"});K.mergeAttributes(n.createElement("<input name='"+q+"'/>"),!1)}catch{}},Ad:function(K){9<=O&&(K=K.nodeType==1?K:K.parentNode,K.style&&(K.style.zoom=K.style.zoom))},wd:function(K){if(O){var te=K.style.width;K.style.width=0,K.style.width=te}},Pd:function(K,te){K=f.a.f(K),te=f.a.f(te);for(var q=[],pe=K;pe<=te;pe++)q.push(pe);return q},la:function(K){for(var te=[],q=0,pe=K.length;q<pe;q++)te.push(K[q]);return te},Da:function(K){return Q?Symbol(K):K},Zd:O===6,$d:O===7,W:O,Lc:function(K,te){for(var q=f.a.la(K.getElementsByTagName("input")).concat(f.a.la(K.getElementsByTagName("textarea"))),pe=typeof te=="string"?function(xe){return xe.name===te}:function(xe){return te.test(xe.name)},ye=[],he=q.length-1;0<=he;he--)pe(q[he])&&ye.push(q[he]);return ye},Nd:function(K){return typeof K=="string"&&(K=f.a.Db(K))?r&&r.parse?r.parse(K):new Function("return "+K)():null},hc:function(K,te,q){if(!r||!r.stringify)throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");return r.stringify(f.a.f(K),te,q)},Od:function(K,te,q){q=q||{};var pe=q.params||{},ye=q.includeFields||this.Jc,he=K;if(typeof K=="object"&&f.a.R(K)==="form")for(var he=K.action,xe=ye.length-1;0<=xe;xe--)for(var Te=f.a.Lc(K,ye[xe]),Be=Te.length-1;0<=Be;Be--)pe[Te[Be].name]=Te[Be].value;te=f.a.f(te);var Le=n.createElement("form");Le.style.display="none",Le.action=he,Le.method="post";for(var De in te)K=n.createElement("input"),K.type="hidden",K.name=De,K.value=f.a.hc(f.a.f(te[De])),Le.appendChild(K);A(pe,function(Ue,je){var it=n.createElement("input");it.type="hidden",it.name=Ue,it.value=je,Le.appendChild(it)}),n.body.appendChild(Le),q.submitter?q.submitter(Le):Le.submit(),setTimeout(function(){Le.parentNode.removeChild(Le)},0)}}}(),f.b("utils",f.a),f.b("utils.arrayForEach",f.a.D),f.b("utils.arrayFirst",f.a.Lb),f.b("utils.arrayFilter",f.a.jb),f.b("utils.arrayGetDistinctValues",f.a.wc),f.b("utils.arrayIndexOf",f.a.A),f.b("utils.arrayMap",f.a.Mb),f.b("utils.arrayPushAll",f.a.Nb),f.b("utils.arrayRemoveItem",f.a.Pa),f.b("utils.cloneNodes",f.a.Ca),f.b("utils.createSymbolOrString",f.a.Da),f.b("utils.extend",f.a.extend),f.b("utils.fieldsIncludedWithJsonPost",f.a.Jc),f.b("utils.getFormFields",f.a.Lc),f.b("utils.objectMap",f.a.Ga),f.b("utils.peekObservable",f.a.bc),f.b("utils.postJson",f.a.Od),f.b("utils.parseJson",f.a.Nd),f.b("utils.registerEventHandler",f.a.B),f.b("utils.stringifyJson",f.a.hc),f.b("utils.range",f.a.Pd),f.b("utils.toggleDomNodeCssClass",f.a.Eb),f.b("utils.triggerEvent",f.a.Fb),f.b("utils.unwrapObservable",f.a.f),f.b("utils.objectForEach",f.a.P),f.b("utils.addOrRemoveItem",f.a.Na),f.b("utils.setTextContent",f.a.Bb),f.b("unwrap",f.a.f),Function.prototype.bind||(Function.prototype.bind=function(A){var T=this;if(arguments.length===1)return function(){return T.apply(A,arguments)};var L=Array.prototype.slice.call(arguments,1);return function(){var V=L.slice(0);return V.push.apply(V,arguments),T.apply(A,V)}}),f.a.g=new function(){var A=0,T="__ko__"+new Date().getTime(),L={},V,W;return f.a.W?(V=function(M,Q){var N=M[T];if(!N||N==="null"||!L[N]){if(!Q)return e;N=M[T]="ko"+A++,L[N]={}}return L[N]},W=function(M){var Q=M[T];return Q?(delete L[Q],M[T]=null,!0):!1}):(V=function(M,Q){var N=M[T];return!N&&Q&&(N=M[T]={}),N},W=function(M){return M[T]?(delete M[T],!0):!1}),{get:function(M,Q){var N=V(M,!1);return N&&N[Q]},set:function(M,Q,N){(M=V(M,N!==e))&&(M[Q]=N)},Ub:function(M,Q,N){return M=V(M,!0),M[Q]||(M[Q]=N)},clear:W,Z:function(){return A+++T}}},f.b("utils.domData",f.a.g),f.b("utils.domData.clear",f.a.g.clear),f.a.K=new function(){function A(Q,N){var k=f.a.g.get(Q,V);return k===e&&N&&(k=[],f.a.g.set(Q,V,k)),k}function T(Q){var N=A(Q,!1);if(N)for(var N=N.slice(0),k=0;k<N.length;k++)N[k](Q);f.a.g.clear(Q),f.a.K.cleanExternalData(Q),M[Q.nodeType]&&L(Q.childNodes,!0)}function L(Q,N){for(var k=[],v,O=0;O<Q.length;O++)if((!N||Q[O].nodeType===8)&&(T(k[k.length]=v=Q[O]),Q[O]!==v))for(;O--&&f.a.A(k,Q[O])==-1;);}var V=f.a.g.Z(),W={1:!0,8:!0,9:!0},M={1:!0,9:!0};return{za:function(Q,N){if(typeof N!="function")throw Error("Callback must be a function");A(Q,!0).push(N)},yb:function(Q,N){var k=A(Q,!1);k&&(f.a.Pa(k,N),k.length==0&&f.a.g.set(Q,V,e))},oa:function(Q){return f.u.G(function(){W[Q.nodeType]&&(T(Q),M[Q.nodeType]&&L(Q.getElementsByTagName("*")))}),Q},removeNode:function(Q){f.oa(Q),Q.parentNode&&Q.parentNode.removeChild(Q)},cleanExternalData:function(Q){o&&typeof o.cleanData=="function"&&o.cleanData([Q])}}},f.oa=f.a.K.oa,f.removeNode=f.a.K.removeNode,f.b("cleanNode",f.oa),f.b("removeNode",f.removeNode),f.b("utils.domNodeDisposal",f.a.K),f.b("utils.domNodeDisposal.addDisposeCallback",f.a.K.za),f.b("utils.domNodeDisposal.removeDisposeCallback",f.a.K.yb),function(){var A=[0,"",""],T=[1,"<table>","</table>"],L=[3,"<table><tbody><tr>","</tr></tbody></table>"],V=[1,"<select multiple='multiple'>","</select>"],W={thead:T,tbody:T,tfoot:T,tr:[2,"<table><tbody>","</tbody></table>"],td:L,th:L,option:V,optgroup:V},M=8>=f.a.W;f.a.ua=function(Q,N){var k;if(o){if(o.parseHTML)k=o.parseHTML(Q,N)||[];else if((k=o.clean([Q],N))&&k[0]){for(var v=k[0];v.parentNode&&v.parentNode.nodeType!==11;)v=v.parentNode;v.parentNode&&v.parentNode.removeChild(v)}}else{(k=N)||(k=n);var v=k.parentWindow||k.defaultView||t,O=f.a.Db(Q).toLowerCase(),H=k.createElement("div"),ee;for(ee=(O=O.match(/^(?:\x3c!--.*?--\x3e\s*?)*?<([a-z]+)[\s>]/))&&W[O[1]]||A,O=ee[0],ee="ignored<div>"+ee[1]+Q+ee[2]+"</div>",typeof v.innerShiv=="function"?H.appendChild(v.innerShiv(ee)):(M&&k.body.appendChild(H),H.innerHTML=ee,M&&H.parentNode.removeChild(H));O--;)H=H.lastChild;k=f.a.la(H.lastChild.childNodes)}return k},f.a.Md=function(Q,N){var k=f.a.ua(Q,N);return k.length&&k[0].parentElement||f.a.Yb(k)},f.a.fc=function(Q,N){if(f.a.Tb(Q),N=f.a.f(N),N!==null&&N!==e)if(typeof N!="string"&&(N=N.toString()),o)o(Q).html(N);else for(var k=f.a.ua(N,Q.ownerDocument),v=0;v<k.length;v++)Q.appendChild(k[v])}}(),f.b("utils.parseHtmlFragment",f.a.ua),f.b("utils.setHtml",f.a.fc),f.aa=function(){function A(L,V){if(L){if(L.nodeType==8){var W=f.aa.Uc(L.nodeValue);W!=null&&V.push({ud:L,Kd:W})}else if(L.nodeType==1)for(var W=0,M=L.childNodes,Q=M.length;W<Q;W++)A(M[W],V)}}var T={};return{Xb:function(L){if(typeof L!="function")throw Error("You can only pass a function to ko.memoization.memoize()");var V=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);return T[V]=L,"<!--[ko_memo:"+V+"]-->"},bd:function(L,V){var W=T[L];if(W===e)throw Error("Couldn't find any memo with ID "+L+". Perhaps it's already been unmemoized.");try{return W.apply(null,V||[]),!0}finally{delete T[L]}},cd:function(L,V){var W=[];A(L,W);for(var M=0,Q=W.length;M<Q;M++){var N=W[M].ud,k=[N];V&&f.a.Nb(k,V),f.aa.bd(W[M].Kd,k),N.nodeValue="",N.parentNode&&N.parentNode.removeChild(N)}},Uc:function(L){return(L=L.match(/^\[ko_memo\:(.*?)\]$/))?L[1]:null}}}(),f.b("memoization",f.aa),f.b("memoization.memoize",f.aa.Xb),f.b("memoization.unmemoize",f.aa.bd),f.b("memoization.parseMemoText",f.aa.Uc),f.b("memoization.unmemoizeDomNodeAndDescendants",f.aa.cd),f.na=function(){function A(){if(W){for(var N=W,k=0,v;Q<W;)if(v=V[Q++]){if(Q>N){if(5e3<=++k){Q=W,f.a.Gc(Error("'Too much recursion' after processing "+k+" task groups."));break}N=W}try{v()}catch(O){f.a.Gc(O)}}}}function T(){A(),Q=W=V.length=0}var L,V=[],W=0,M=1,Q=0;return t.MutationObserver?L=function(N){var k=n.createElement("div");return new MutationObserver(N).observe(k,{attributes:!0}),function(){k.classList.toggle("foo")}}(T):L=n&&"onreadystatechange"in n.createElement("script")?function(N){var k=n.createElement("script");k.onreadystatechange=function(){k.onreadystatechange=null,n.documentElement.removeChild(k),k=null,N()},n.documentElement.appendChild(k)}:function(N){setTimeout(N,0)},{scheduler:L,zb:function(N){return W||f.na.scheduler(T),V[W++]=N,M++},cancel:function(N){N=N-(M-W),N>=Q&&N<W&&(V[N]=null)},resetForTesting:function(){var N=W-Q;return Q=W=V.length=0,N},Sd:A}}(),f.b("tasks",f.na),f.b("tasks.schedule",f.na.zb),f.b("tasks.runEarly",f.na.Sd),f.Ta={throttle:function(A,T){A.throttleEvaluation=T;var L=null;return f.$({read:A,write:function(V){clearTimeout(L),L=f.a.setTimeout(function(){A(V)},T)}})},rateLimit:function(A,T){var L,V,W;typeof T=="number"?L=T:(L=T.timeout,V=T.method),A.Hb=!1,W=typeof V=="function"?V:V=="notifyWhenChangesStop"?u:d,A.ub(function(M){return W(M,L,T)})},deferred:function(A,T){if(T!==!0)throw Error("The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.");A.Hb||(A.Hb=!0,A.ub(function(L){var V,W=!1;return function(){if(!W){f.na.cancel(V),V=f.na.zb(L);try{W=!0,A.notifySubscribers(e,"dirty")}finally{W=!1}}}}))},notify:function(A,T){A.equalityComparer=T=="always"?null:c}};var b={undefined:1,boolean:1,number:1,string:1};f.b("extenders",f.Ta),f.ic=function(A,T,L){this.da=A,this.lc=T,this.mc=L,this.Ib=!1,this.fb=this.Jb=null,f.L(this,"dispose",this.s),f.L(this,"disposeWhenNodeIsRemoved",this.l)},f.ic.prototype.s=function(){this.Ib||(this.fb&&f.a.K.yb(this.Jb,this.fb),this.Ib=!0,this.mc(),this.da=this.lc=this.mc=this.Jb=this.fb=null)},f.ic.prototype.l=function(A){this.Jb=A,f.a.K.za(A,this.fb=this.s.bind(this))},f.T=function(){f.a.Ab(this,x),x.qb(this)};var x={qb:function(A){A.U={change:[]},A.sc=1},subscribe:function(A,T,L){var V=this;L=L||"change";var W=new f.ic(V,T?A.bind(T):A,function(){f.a.Pa(V.U[L],W),V.hb&&V.hb(L)});return V.Qa&&V.Qa(L),V.U[L]||(V.U[L]=[]),V.U[L].push(W),W},notifySubscribers:function(A,T){if(T=T||"change",T==="change"&&this.Gb(),this.Wa(T)){var L=T==="change"&&this.ed||this.U[T].slice(0);try{f.u.xc();for(var V=0,W;W=L[V];++V)W.Ib||W.lc(A)}finally{f.u.end()}}},ob:function(){return this.sc},Dd:function(A){return this.ob()!==A},Gb:function(){++this.sc},ub:function(A){var T=this,L=f.O(T),V,W,M,Q,N;T.gb||(T.gb=T.notifySubscribers,T.notifySubscribers=h);var k=A(function(){T.Ja=!1,L&&Q===T&&(Q=T.nc?T.nc():T());var v=W||N&&T.sb(M,Q);N=W=V=!1,v&&T.gb(M=Q)});T.qc=function(v,O){O&&T.Ja||(N=!O),T.ed=T.U.change.slice(0),T.Ja=V=!0,Q=v,k()},T.pc=function(v){V||(M=v,T.gb(v,"beforeChange"))},T.rc=function(){N=!0},T.gd=function(){T.sb(M,T.v(!0))&&(W=!0)}},Wa:function(A){return this.U[A]&&this.U[A].length},Bd:function(A){if(A)return this.U[A]&&this.U[A].length||0;var T=0;return f.a.P(this.U,function(L,V){L!=="dirty"&&(T+=V.length)}),T},sb:function(A,T){return!this.equalityComparer||!this.equalityComparer(A,T)},toString:function(){return"[object Object]"},extend:function(A){var T=this;return A&&f.a.P(A,function(L,V){var W=f.Ta[L];typeof W=="function"&&(T=W(T,V)||T)}),T}};f.L(x,"init",x.qb),f.L(x,"subscribe",x.subscribe),f.L(x,"extend",x.extend),f.L(x,"getSubscriptionsCount",x.Bd),f.a.Ba&&f.a.setPrototypeOf(x,Function.prototype),f.T.fn=x,f.Qc=function(A){return A!=null&&typeof A.subscribe=="function"&&typeof A.notifySubscribers=="function"},f.b("subscribable",f.T),f.b("isSubscribable",f.Qc),f.S=f.u=function(){function A(M){L.push(V),V=M}function T(){V=L.pop()}var L=[],V,W=0;return{xc:A,end:T,cc:function(M){if(V){if(!f.Qc(M))throw Error("Only subscribable things can act as dependencies");V.od.call(V.pd,M,M.fd||(M.fd=++W))}},G:function(M,Q,N){try{return A(),M.apply(Q,N||[])}finally{T()}},qa:function(){if(V)return V.o.qa()},Va:function(){if(V)return V.o.Va()},Ya:function(){if(V)return V.Ya},o:function(){if(V)return V.o}}}(),f.b("computedContext",f.S),f.b("computedContext.getDependenciesCount",f.S.qa),f.b("computedContext.getDependencies",f.S.Va),f.b("computedContext.isInitial",f.S.Ya),f.b("computedContext.registerDependency",f.S.cc),f.b("ignoreDependencies",f.Yd=f.u.G);var I=f.a.Da("_latestValue");f.ta=function(A){function T(){return 0<arguments.length?(T.sb(T[I],arguments[0])&&(T.ya(),T[I]=arguments[0],T.xa()),this):(f.u.cc(T),T[I])}return T[I]=A,f.a.Ba||f.a.extend(T,f.T.fn),f.T.fn.qb(T),f.a.Ab(T,_),f.options.deferUpdates&&f.Ta.deferred(T,!0),T};var _={equalityComparer:c,v:function(){return this[I]},xa:function(){this.notifySubscribers(this[I],"spectate"),this.notifySubscribers(this[I])},ya:function(){this.notifySubscribers(this[I],"beforeChange")}};f.a.Ba&&f.a.setPrototypeOf(_,f.T.fn);var E=f.ta.Ma="__ko_proto__";_[E]=f.ta,f.O=function(A){if((A=typeof A=="function"&&A[E])&&A!==_[E]&&A!==f.o.fn[E])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");return!!A},f.Za=function(A){return typeof A=="function"&&(A[E]===_[E]||A[E]===f.o.fn[E]&&A.Nc)},f.b("observable",f.ta),f.b("isObservable",f.O),f.b("isWriteableObservable",f.Za),f.b("isWritableObservable",f.Za),f.b("observable.fn",_),f.L(_,"peek",_.v),f.L(_,"valueHasMutated",_.xa),f.L(_,"valueWillMutate",_.ya),f.Ha=function(A){if(A=A||[],typeof A!="object"||!("length"in A))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");return A=f.ta(A),f.a.Ab(A,f.Ha.fn),A.extend({trackArrayChanges:!0})},f.Ha.fn={remove:function(A){for(var T=this.v(),L=[],V=typeof A!="function"||f.O(A)?function(Q){return Q===A}:A,W=0;W<T.length;W++){var M=T[W];if(V(M)){if(L.length===0&&this.ya(),T[W]!==M)throw Error("Array modified during remove; cannot remove item");L.push(M),T.splice(W,1),W--}}return L.length&&this.xa(),L},removeAll:function(A){if(A===e){var T=this.v(),L=T.slice(0);return this.ya(),T.splice(0,T.length),this.xa(),L}return A?this.remove(function(V){return 0<=f.a.A(A,V)}):[]},destroy:function(A){var T=this.v(),L=typeof A!="function"||f.O(A)?function(M){return M===A}:A;this.ya();for(var V=T.length-1;0<=V;V--){var W=T[V];L(W)&&(W._destroy=!0)}this.xa()},destroyAll:function(A){return A===e?this.destroy(function(){return!0}):A?this.destroy(function(T){return 0<=f.a.A(A,T)}):[]},indexOf:function(A){var T=this();return f.a.A(T,A)},replace:function(A,T){var L=this.indexOf(A);0<=L&&(this.ya(),this.v()[L]=T,this.xa())},sorted:function(A){var T=this().slice(0);return A?T.sort(A):T.sort()},reversed:function(){return this().slice(0).reverse()}},f.a.Ba&&f.a.setPrototypeOf(f.Ha.fn,f.ta.fn),f.a.D("pop push reverse shift sort splice unshift".split(" "),function(A){f.Ha.fn[A]=function(){var T=this.v();this.ya(),this.zc(T,A,arguments);var L=T[A].apply(T,arguments);return this.xa(),L===T?this:L}}),f.a.D(["slice"],function(A){f.Ha.fn[A]=function(){var T=this();return T[A].apply(T,arguments)}}),f.Pc=function(A){return f.O(A)&&typeof A.remove=="function"&&typeof A.push=="function"},f.b("observableArray",f.Ha),f.b("isObservableArray",f.Pc),f.Ta.trackArrayChanges=function(A,T){function L(){function H(){if(N){var ee=[].concat(A.v()||[]),K;A.Wa("arrayChange")&&((!W||1<N)&&(W=f.a.Pb(k,ee,A.Ob)),K=W),k=ee,W=null,N=0,K&&K.length&&A.notifySubscribers(K,"arrayChange")}}V?H():(V=!0,Q=A.subscribe(function(){++N},null,"spectate"),k=[].concat(A.v()||[]),W=null,M=A.subscribe(H))}if(A.Ob={},T&&typeof T=="object"&&f.a.extend(A.Ob,T),A.Ob.sparse=!0,!A.zc){var V=!1,W=null,M,Q,N=0,k,v=A.Qa,O=A.hb;A.Qa=function(H){v&&v.call(A,H),H==="arrayChange"&&L()},A.hb=function(H){O&&O.call(A,H),H!=="arrayChange"||A.Wa("arrayChange")||(M&&M.s(),Q&&Q.s(),Q=M=null,V=!1,k=e)},A.zc=function(H,ee,K){function te(Le,De,Ue){return q[q.length]={status:Le,value:De,index:Ue}}if(V&&!N){var q=[],pe=H.length,ye=K.length,he=0;switch(ee){case"push":he=pe;case"unshift":for(ee=0;ee<ye;ee++)te("added",K[ee],he+ee);break;case"pop":he=pe-1;case"shift":pe&&te("deleted",H[he],he);break;case"splice":ee=Math.min(Math.max(0,0>K[0]?pe+K[0]:K[0]),pe);for(var pe=ye===1?pe:Math.min(ee+(K[1]||0),pe),ye=ee+ye-2,he=Math.max(pe,ye),xe=[],Te=[],Be=2;ee<he;++ee,++Be)ee<pe&&Te.push(te("deleted",H[ee],ee)),ee<ye&&xe.push(te("added",K[Be],ee));f.a.Kc(Te,xe);break;default:return}W=q}}}};var S=f.a.Da("_state");f.o=f.$=function(A,T,L){function V(){if(0<arguments.length){if(typeof W=="function")W.apply(M.nb,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return this}return M.ra||f.u.cc(V),(M.ka||M.J&&V.Xa())&&V.ha(),M.X}if(typeof A=="object"?L=A:(L=L||{},A&&(L.read=A)),typeof L.read!="function")throw Error("Pass a function that returns the value of the ko.computed");var W=L.write,M={X:e,sa:!0,ka:!0,rb:!1,jc:!1,ra:!1,wb:!1,J:!1,Wc:L.read,nb:T||L.owner,l:L.disposeWhenNodeIsRemoved||L.l||null,Sa:L.disposeWhen||L.Sa,Rb:null,I:{},V:0,Ic:null};return V[S]=M,V.Nc=typeof W=="function",f.a.Ba||f.a.extend(V,f.T.fn),f.T.fn.qb(V),f.a.Ab(V,R),L.pure?(M.wb=!0,M.J=!0,f.a.extend(V,G)):L.deferEvaluation&&f.a.extend(V,B),f.options.deferUpdates&&f.Ta.deferred(V,!0),M.l&&(M.jc=!0,M.l.nodeType||(M.l=null)),M.J||L.deferEvaluation||V.ha(),M.l&&V.ja()&&f.a.K.za(M.l,M.Rb=function(){V.s()}),V};var R={equalityComparer:c,qa:function(){return this[S].V},Va:function(){var A=[];return f.a.P(this[S].I,function(T,L){A[L.Ka]=L.da}),A},Vb:function(A){if(!this[S].V)return!1;var T=this.Va();return f.a.A(T,A)!==-1?!0:!!f.a.Lb(T,function(L){return L.Vb&&L.Vb(A)})},uc:function(A,T,L){if(this[S].wb&&T===this)throw Error("A 'pure' computed must not be called recursively");this[S].I[A]=L,L.Ka=this[S].V++,L.La=T.ob()},Xa:function(){var A,T,L=this[S].I;for(A in L)if(Object.prototype.hasOwnProperty.call(L,A)&&(T=L[A],this.Ia&&T.da.Ja||T.da.Dd(T.La)))return!0},Jd:function(){this.Ia&&!this[S].rb&&this.Ia(!1)},ja:function(){var A=this[S];return A.ka||0<A.V},Rd:function(){this.Ja?this[S].ka&&(this[S].sa=!0):this.Hc()},$c:function(A){if(A.Hb){var T=A.subscribe(this.Jd,this,"dirty"),L=A.subscribe(this.Rd,this);return{da:A,s:function(){T.s(),L.s()}}}return A.subscribe(this.Hc,this)},Hc:function(){var A=this,T=A.throttleEvaluation;T&&0<=T?(clearTimeout(this[S].Ic),this[S].Ic=f.a.setTimeout(function(){A.ha(!0)},T)):A.Ia?A.Ia(!0):A.ha(!0)},ha:function(A){var T=this[S],L=T.Sa,V=!1;if(!T.rb&&!T.ra){if(T.l&&!f.a.Sb(T.l)||L&&L()){if(!T.jc){this.s();return}}else T.jc=!1;T.rb=!0;try{V=this.zd(A)}finally{T.rb=!1}return V}},zd:function(A){var T=this[S],V=!1,L=T.wb?e:!T.V,V={qd:this,mb:T.I,Qb:T.V};f.u.xc({pd:V,od:g,o:this,Ya:L}),T.I={},T.V=0;var W=this.yd(T,V);return T.V?V=this.sb(T.X,W):(this.s(),V=!0),V&&(T.J?this.Gb():this.notifySubscribers(T.X,"beforeChange"),T.X=W,this.notifySubscribers(T.X,"spectate"),!T.J&&A&&this.notifySubscribers(T.X),this.rc&&this.rc()),L&&this.notifySubscribers(T.X,"awake"),V},yd:function(A,T){try{var L=A.Wc;return A.nb?L.call(A.nb):L()}finally{f.u.end(),T.Qb&&!A.J&&f.a.P(T.mb,p),A.sa=A.ka=!1}},v:function(A){var T=this[S];return(T.ka&&(A||!T.V)||T.J&&this.Xa())&&this.ha(),T.X},ub:function(A){f.T.fn.ub.call(this,A),this.nc=function(){return this[S].J||(this[S].sa?this.ha():this[S].ka=!1),this[S].X},this.Ia=function(T){this.pc(this[S].X),this[S].ka=!0,T&&(this[S].sa=!0),this.qc(this,!T)}},s:function(){var A=this[S];!A.J&&A.I&&f.a.P(A.I,function(T,L){L.s&&L.s()}),A.l&&A.Rb&&f.a.K.yb(A.l,A.Rb),A.I=e,A.V=0,A.ra=!0,A.sa=!1,A.ka=!1,A.J=!1,A.l=e,A.Sa=e,A.Wc=e,this.Nc||(A.nb=e)}},G={Qa:function(A){var T=this,L=T[S];if(!L.ra&&L.J&&A=="change"){if(L.J=!1,L.sa||T.Xa())L.I=null,L.V=0,T.ha()&&T.Gb();else{var V=[];f.a.P(L.I,function(W,M){V[M.Ka]=W}),f.a.D(V,function(W,M){var Q=L.I[W],N=T.$c(Q.da);N.Ka=M,N.La=Q.La,L.I[W]=N}),T.Xa()&&T.ha()&&T.Gb()}L.ra||T.notifySubscribers(L.X,"awake")}},hb:function(A){var T=this[S];T.ra||A!="change"||this.Wa("change")||(f.a.P(T.I,function(L,V){V.s&&(T.I[L]={da:V.da,Ka:V.Ka,La:V.La},V.s())}),T.J=!0,this.notifySubscribers(e,"asleep"))},ob:function(){var A=this[S];return A.J&&(A.sa||this.Xa())&&this.ha(),f.T.fn.ob.call(this)}},B={Qa:function(A){A!="change"&&A!="beforeChange"||this.v()}};f.a.Ba&&f.a.setPrototypeOf(R,f.T.fn);var w=f.ta.Ma;R[w]=f.o,f.Oc=function(A){return typeof A=="function"&&A[w]===R[w]},f.Fd=function(A){return f.Oc(A)&&A[S]&&A[S].wb},f.b("computed",f.o),f.b("dependentObservable",f.o),f.b("isComputed",f.Oc),f.b("isPureComputed",f.Fd),f.b("computed.fn",R),f.L(R,"peek",R.v),f.L(R,"dispose",R.s),f.L(R,"isActive",R.ja),f.L(R,"getDependenciesCount",R.qa),f.L(R,"getDependencies",R.Va),f.xb=function(A,T){return typeof A=="function"?f.o(A,T,{pure:!0}):(A=f.a.extend({},A),A.pure=!0,f.o(A,T))},f.b("pureComputed",f.xb),function(){function A(V,W,M){if(M=M||new L,V=W(V),typeof V!="object"||V===null||V===e||V instanceof RegExp||V instanceof Date||V instanceof String||V instanceof Number||V instanceof Boolean)return V;var Q=V instanceof Array?[]:{};return M.save(V,Q),T(V,function(N){var k=W(V[N]);switch(typeof k){case"boolean":case"number":case"string":case"function":Q[N]=k;break;case"object":case"undefined":var v=M.get(k);Q[N]=v!==e?v:A(k,W,M)}}),Q}function T(V,W){if(V instanceof Array){for(var M=0;M<V.length;M++)W(M);typeof V.toJSON=="function"&&W("toJSON")}else for(M in V)W(M)}function L(){this.keys=[],this.values=[]}f.ad=function(V){if(arguments.length==0)throw Error("When calling ko.toJS, pass the object you want to convert.");return A(V,function(W){for(var M=0;f.O(W)&&10>M;M++)W=W();return W})},f.toJSON=function(V,W,M){return V=f.ad(V),f.a.hc(V,W,M)},L.prototype={constructor:L,save:function(V,W){var M=f.a.A(this.keys,V);0<=M?this.values[M]=W:(this.keys.push(V),this.values.push(W))},get:function(V){return V=f.a.A(this.keys,V),0<=V?this.values[V]:e}}}(),f.b("toJS",f.ad),f.b("toJSON",f.toJSON),f.Wd=function(A,T,L){function V(W){var M=f.xb(A,L).extend({ma:"always"}),Q=M.subscribe(function(N){N&&(Q.s(),W(N))});return M.notifySubscribers(M.v()),Q}return typeof Promise!="function"||T?V(T.bind(L)):new Promise(V)},f.b("when",f.Wd),function(){f.w={M:function(A){switch(f.a.R(A)){case"option":return A.__ko__hasDomDataOptionValue__===!0?f.a.g.get(A,f.c.options.$b):7>=f.a.W?A.getAttributeNode("value")&&A.getAttributeNode("value").specified?A.value:A.text:A.value;case"select":return 0<=A.selectedIndex?f.w.M(A.options[A.selectedIndex]):e;default:return A.value}},cb:function(A,T,L){switch(f.a.R(A)){case"option":typeof T=="string"?(f.a.g.set(A,f.c.options.$b,e),"__ko__hasDomDataOptionValue__"in A&&delete A.__ko__hasDomDataOptionValue__,A.value=T):(f.a.g.set(A,f.c.options.$b,T),A.__ko__hasDomDataOptionValue__=!0,A.value=typeof T=="number"?T:"");break;case"select":(T===""||T===null)&&(T=e);for(var V=-1,W=0,M=A.options.length,Q;W<M;++W)if(Q=f.w.M(A.options[W]),Q==T||Q===""&&T===e){V=W;break}(L||0<=V||T===e&&1<A.size)&&(A.selectedIndex=V,f.a.W===6&&f.a.setTimeout(function(){A.selectedIndex=V},0));break;default:(T===null||T===e)&&(T=""),A.value=T}}}}(),f.b("selectExtensions",f.w),f.b("selectExtensions.readValue",f.w.M),f.b("selectExtensions.writeValue",f.w.cb),f.m=function(){function A(N){N=f.a.Db(N),N.charCodeAt(0)===123&&(N=N.slice(1,-1)),N+=` +,`;var k=[],v=N.match(V),O,H=[],ee=0;if(1<v.length){for(var K=0,te;te=v[K];++K){var q=te.charCodeAt(0);if(q===44){if(0>=ee){k.push(O&&H.length?{key:O,value:H.join("")}:{unknown:O||H.join("")}),O=ee=0,H=[];continue}}else if(q===58){if(!ee&&!O&&H.length===1){O=H.pop();continue}}else{if(q===47&&1<te.length&&(te.charCodeAt(1)===47||te.charCodeAt(1)===42))continue;q===47&&K&&1<te.length?(q=v[K-1].match(W))&&!M[q[0]]&&(N=N.substr(N.indexOf(te)+1),v=N.match(V),K=-1,te="/"):q===40||q===123||q===91?++ee:q===41||q===125||q===93?--ee:O||H.length||q!==34&&q!==39||(te=te.slice(1,-1))}H.push(te)}if(0<ee)throw Error("Unbalanced parentheses, braces, or brackets")}return k}var T=["true","false","null","undefined"],L=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,V=RegExp(`"(?:\\\\.|[^"])*"|'(?:\\\\.|[^'])*'|\`(?:\\\\.|[^\`])*\`|/\\*(?:[^*]|\\*+[^*/])*\\*+/|//.* +|/(?:\\\\.|[^/])+/w*|[^\\s:,/][^,"'\`{}()/:[\\]]*[^\\s,"'\`{}()/:[\\]]|[^\\s]`,"g"),W=/[\])"'A-Za-z0-9_$]+$/,M={in:1,return:1,typeof:1},Q={};return{Ra:[],wa:Q,ac:A,vb:function(N,k){function v(q,pe){var ye;if(!K){var he=f.getBindingHandler(q);if(he&&he.preprocess&&!(pe=he.preprocess(pe,q,v)))return;(he=Q[q])&&(ye=pe,0<=f.a.A(T,ye)?ye=!1:(he=ye.match(L),ye=he===null?!1:he[1]?"Object("+he[1]+")"+he[2]:ye),he=ye),he&&H.push("'"+(typeof Q[q]=="string"?Q[q]:q)+"':function(_z){"+ye+"=_z}")}ee&&(pe="function(){return "+pe+" }"),O.push("'"+q+"':"+pe)}k=k||{};var O=[],H=[],ee=k.valueAccessors,K=k.bindingParams,te=typeof N=="string"?A(N):N;return f.a.D(te,function(q){v(q.key||q.unknown,q.value)}),H.length&&v("_ko_property_writers","{"+H.join(",")+" }"),O.join(",")},Id:function(N,k){for(var v=0;v<N.length;v++)if(N[v].key==k)return!0;return!1},eb:function(N,k,v,O,H){N&&f.O(N)?!f.Za(N)||H&&N.v()===O||N(O):(N=k.get("_ko_property_writers"))&&N[v]&&N[v](O)}}}(),f.b("expressionRewriting",f.m),f.b("expressionRewriting.bindingRewriteValidators",f.m.Ra),f.b("expressionRewriting.parseObjectLiteral",f.m.ac),f.b("expressionRewriting.preProcessBindings",f.m.vb),f.b("expressionRewriting._twoWayBindings",f.m.wa),f.b("jsonExpressionRewriting",f.m),f.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",f.m.vb),function(){function A(v){return v.nodeType==8&&M.test(W?v.text:v.nodeValue)}function T(v){return v.nodeType==8&&Q.test(W?v.text:v.nodeValue)}function L(v,O){for(var H=v,ee=1,K=[];H=H.nextSibling;){if(T(H)&&(f.a.g.set(H,k,!0),ee--,ee===0))return K;K.push(H),A(H)&&ee++}if(!O)throw Error("Cannot find closing comment tag to match: "+v.nodeValue);return null}function V(v,O){var H=L(v,O);return H?0<H.length?H[H.length-1].nextSibling:v.nextSibling:null}var W=n&&n.createComment("test").text==="<!--test-->",M=W?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,Q=W?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,N={ul:!0,ol:!0},k="__ko_matchedEndComment__";f.h={ea:{},childNodes:function(v){return A(v)?L(v):v.childNodes},Ea:function(v){if(A(v)){v=f.h.childNodes(v);for(var O=0,H=v.length;O<H;O++)f.removeNode(v[O])}else f.a.Tb(v)},va:function(v,O){if(A(v)){f.h.Ea(v);for(var H=v.nextSibling,ee=0,K=O.length;ee<K;ee++)H.parentNode.insertBefore(O[ee],H)}else f.a.va(v,O)},Vc:function(v,O){var H;A(v)?(H=v.nextSibling,v=v.parentNode):H=v.firstChild,H?O!==H&&v.insertBefore(O,H):v.appendChild(O)},Wb:function(v,O,H){H?(H=H.nextSibling,A(v)&&(v=v.parentNode),H?O!==H&&v.insertBefore(O,H):v.appendChild(O)):f.h.Vc(v,O)},firstChild:function(v){if(A(v))return!v.nextSibling||T(v.nextSibling)?null:v.nextSibling;if(v.firstChild&&T(v.firstChild))throw Error("Found invalid end comment, as the first child of "+v);return v.firstChild},nextSibling:function(v){if(A(v)&&(v=V(v)),v.nextSibling&&T(v.nextSibling)){var O=v.nextSibling;if(T(O)&&!f.a.g.get(O,k))throw Error("Found end comment without a matching opening comment, as child of "+v);return null}return v.nextSibling},Cd:A,Vd:function(v){return(v=(W?v.text:v.nodeValue).match(M))?v[1]:null},Sc:function(v){if(N[f.a.R(v)]){var O=v.firstChild;if(O)do if(O.nodeType===1){var H;H=O.firstChild;var ee=null;if(H)do if(ee)ee.push(H);else if(A(H)){var K=V(H,!0);K?H=K:ee=[H]}else T(H)&&(ee=[H]);while(H=H.nextSibling);if(H=ee)for(ee=O.nextSibling,K=0;K<H.length;K++)ee?v.insertBefore(H[K],ee):v.appendChild(H[K])}while(O=O.nextSibling)}}}}(),f.b("virtualElements",f.h),f.b("virtualElements.allowedBindings",f.h.ea),f.b("virtualElements.emptyNode",f.h.Ea),f.b("virtualElements.insertAfter",f.h.Wb),f.b("virtualElements.prepend",f.h.Vc),f.b("virtualElements.setDomNodeChildren",f.h.va),function(){f.ga=function(){this.nd={}},f.a.extend(f.ga.prototype,{nodeHasBindings:function(A){switch(A.nodeType){case 1:return A.getAttribute("data-bind")!=null||f.j.getComponentNameForNode(A);case 8:return f.h.Cd(A);default:return!1}},getBindings:function(A,T){var L=this.getBindingsString(A,T),L=L?this.parseBindingsString(L,T,A):null;return f.j.tc(L,A,T,!1)},getBindingAccessors:function(A,T){var L=this.getBindingsString(A,T),L=L?this.parseBindingsString(L,T,A,{valueAccessors:!0}):null;return f.j.tc(L,A,T,!0)},getBindingsString:function(A){switch(A.nodeType){case 1:return A.getAttribute("data-bind");case 8:return f.h.Vd(A);default:return null}},parseBindingsString:function(A,T,L,V){try{var W=this.nd,M=A+(V&&V.valueAccessors||""),Q;if(!(Q=W[M])){var N,k="with($context){with($data||{}){return{"+f.m.vb(A,V)+"}}}";N=new Function("$context","$element",k),Q=W[M]=N}return Q(T,L)}catch(v){throw v.message=`Unable to parse bindings. +Bindings value: `+A+` +Message: `+v.message,v}}}),f.ga.instance=new f.ga}(),f.b("bindingProvider",f.ga),function(){function A(he){var xe=(he=f.a.g.get(he,ye))&&he.N;xe&&(he.N=null,xe.Tc())}function T(he,xe,Te){this.node=he,this.yc=xe,this.kb=[],this.H=!1,xe.N||f.a.K.za(he,A),Te&&Te.N&&(Te.N.kb.push(he),this.Kb=Te)}function L(he){return function(){return he}}function V(he){return he()}function W(he){return f.a.Ga(f.u.G(he),function(xe,Te){return function(){return he()[Te]}})}function M(he,xe,Te){return typeof he=="function"?W(he.bind(null,xe,Te)):f.a.Ga(he,L)}function Q(he,xe){return W(this.getBindings.bind(this,he,xe))}function N(he,xe){var Te=f.h.firstChild(xe);if(Te){var Be,Le=f.ga.instance,De=Le.preprocessNode;if(De){for(;Be=Te;)Te=f.h.nextSibling(Be),De.call(Le,Be);Te=f.h.firstChild(xe)}for(;Be=Te;)Te=f.h.nextSibling(Be),k(he,Be)}f.i.ma(xe,f.i.H)}function k(he,xe){var Te=he,Be=xe.nodeType===1;Be&&f.h.Sc(xe),(Be||f.ga.instance.nodeHasBindings(xe))&&(Te=O(xe,null,he).bindingContextForDescendants),Te&&!q[f.a.R(xe)]&&N(Te,xe)}function v(he){var xe=[],Te={},Be=[];return f.a.P(he,function Le(De){if(!Te[De]){var Ue=f.getBindingHandler(De);Ue&&(Ue.after&&(Be.push(De),f.a.D(Ue.after,function(je){if(he[je]){if(f.a.A(Be,je)!==-1)throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+Be.join(", "));Le(je)}}),Be.length--),xe.push({key:De,Mc:Ue})),Te[De]=!0}}),xe}function O(he,xe,Te){var Be=f.a.g.Ub(he,ye,{}),Le=Be.hd;if(!xe){if(Le)throw Error("You cannot apply bindings multiple times to the same element.");Be.hd=!0}Le||(Be.context=Te),Be.Zb||(Be.Zb={});var De;if(xe&&typeof xe!="function")De=xe;else{var Ue=f.ga.instance,je=Ue.getBindingAccessors||Q,it=f.$(function(){return(De=xe?xe(Te,he):je.call(Ue,he,Te))&&(Te[ee]&&Te[ee](),Te[te]&&Te[te]()),De},null,{l:he});De&&it.ja()||(it=null)}var nn=Te,rt;if(De){var rn=function(){return f.a.Ga(it?it():De,V)},Jt=it?function(Xt){return function(){return V(it()[Xt])}}:function(Xt){return De[Xt]};rn.get=function(Xt){return De[Xt]&&V(Jt(Xt))},rn.has=function(Xt){return Xt in De},f.i.H in De&&f.i.subscribe(he,f.i.H,function(){var Xt=(0,De[f.i.H])();if(Xt){var Li=f.h.childNodes(he);Li.length&&Xt(Li,f.Ec(Li[0]))}}),f.i.pa in De&&(nn=f.i.Cb(he,Te),f.i.subscribe(he,f.i.pa,function(){var Xt=(0,De[f.i.pa])();Xt&&f.h.firstChild(he)&&Xt(he)})),Be=v(De),f.a.D(Be,function(Xt){var Li=Xt.Mc.init,bi=Xt.Mc.update,vt=Xt.key;if(he.nodeType===8&&!f.h.ea[vt])throw Error("The binding '"+vt+"' cannot be used with virtual elements");try{typeof Li=="function"&&f.u.G(function(){var Rt=Li(he,Jt(vt),rn,nn.$data,nn);if(Rt&&Rt.controlsDescendantBindings){if(rt!==e)throw Error("Multiple bindings ("+rt+" and "+vt+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");rt=vt}}),typeof bi=="function"&&f.$(function(){bi(he,Jt(vt),rn,nn.$data,nn)},null,{l:he})}catch(Rt){throw Rt.message='Unable to process binding "'+vt+": "+De[vt]+`" +Message: `+Rt.message,Rt}})}return Be=rt===e,{shouldBindDescendants:Be,bindingContextForDescendants:Be&&nn}}function H(he,xe){return he&&he instanceof f.fa?he:new f.fa(he,e,e,xe)}var ee=f.a.Da("_subscribable"),K=f.a.Da("_ancestorBindingInfo"),te=f.a.Da("_dataDependency");f.c={};var q={script:!0,textarea:!0,template:!0};f.getBindingHandler=function(he){return f.c[he]};var pe={};f.fa=function(he,xe,Te,Be,Le){function De(){var Jt=nn?it():it,Xt=f.a.f(Jt);return xe?(f.a.extend(Ue,xe),K in xe&&(Ue[K]=xe[K])):(Ue.$parents=[],Ue.$root=Xt,Ue.ko=f),Ue[ee]=rt,je?Xt=Ue.$data:(Ue.$rawData=Jt,Ue.$data=Xt),Te&&(Ue[Te]=Xt),Be&&Be(Ue,xe,Xt),xe&&xe[ee]&&!f.S.o().Vb(xe[ee])&&xe[ee](),rn&&(Ue[te]=rn),Ue.$data}var Ue=this,je=he===pe,it=je?e:he,nn=typeof it=="function"&&!f.O(it),rt,rn=Le&&Le.dataDependency;Le&&Le.exportDependencies?De():(rt=f.xb(De),rt.v(),rt.ja()?rt.equalityComparer=null:Ue[ee]=e)},f.fa.prototype.createChildContext=function(he,xe,Te,Be){if(!Be&&xe&&typeof xe=="object"&&(Be=xe,xe=Be.as,Te=Be.extend),xe&&Be&&Be.noChildContext){var Le=typeof he=="function"&&!f.O(he);return new f.fa(pe,this,null,function(De){Te&&Te(De),De[xe]=Le?he():he},Be)}return new f.fa(he,this,xe,function(De,Ue){De.$parentContext=Ue,De.$parent=Ue.$data,De.$parents=(Ue.$parents||[]).slice(0),De.$parents.unshift(De.$parent),Te&&Te(De)},Be)},f.fa.prototype.extend=function(he,xe){return new f.fa(pe,this,null,function(Te){f.a.extend(Te,typeof he=="function"?he(Te):he)},xe)};var ye=f.a.g.Z();T.prototype.Tc=function(){this.Kb&&this.Kb.N&&this.Kb.N.sd(this.node)},T.prototype.sd=function(he){f.a.Pa(this.kb,he),!this.kb.length&&this.H&&this.Cc()},T.prototype.Cc=function(){this.H=!0,this.yc.N&&!this.kb.length&&(this.yc.N=null,f.a.K.yb(this.node,A),f.i.ma(this.node,f.i.pa),this.Tc())},f.i={H:"childrenComplete",pa:"descendantsComplete",subscribe:function(he,xe,Te,Be,Le){var De=f.a.g.Ub(he,ye,{});return De.Fa||(De.Fa=new f.T),Le&&Le.notifyImmediately&&De.Zb[xe]&&f.u.G(Te,Be,[he]),De.Fa.subscribe(Te,Be,xe)},ma:function(he,xe){var Te=f.a.g.get(he,ye);if(Te&&(Te.Zb[xe]=!0,Te.Fa&&Te.Fa.notifySubscribers(he,xe),xe==f.i.H)){if(Te.N)Te.N.Cc();else if(Te.N===e&&Te.Fa&&Te.Fa.Wa(f.i.pa))throw Error("descendantsComplete event not supported for bindings on this node")}},Cb:function(he,xe){var Te=f.a.g.Ub(he,ye,{});return Te.N||(Te.N=new T(he,Te,xe[K])),xe[K]==Te?xe:xe.extend(function(Be){Be[K]=Te})}},f.Td=function(he){return(he=f.a.g.get(he,ye))&&he.context},f.ib=function(he,xe,Te){return he.nodeType===1&&f.h.Sc(he),O(he,xe,H(Te))},f.ld=function(he,xe,Te){return Te=H(Te),f.ib(he,M(xe,Te,he),Te)},f.Oa=function(he,xe){xe.nodeType!==1&&xe.nodeType!==8||N(H(he),xe)},f.vc=function(he,xe,Te){if(!o&&t.jQuery&&(o=t.jQuery),2>arguments.length){if(xe=n.body,!xe)throw Error("ko.applyBindings: could not find document.body; has the document been loaded?")}else if(!xe||xe.nodeType!==1&&xe.nodeType!==8)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");k(H(he,Te),xe)},f.Dc=function(he){return!he||he.nodeType!==1&&he.nodeType!==8?e:f.Td(he)},f.Ec=function(he){return(he=f.Dc(he))?he.$data:e},f.b("bindingHandlers",f.c),f.b("bindingEvent",f.i),f.b("bindingEvent.subscribe",f.i.subscribe),f.b("bindingEvent.startPossiblyAsyncContentBinding",f.i.Cb),f.b("applyBindings",f.vc),f.b("applyBindingsToDescendants",f.Oa),f.b("applyBindingAccessorsToNode",f.ib),f.b("applyBindingsToNode",f.ld),f.b("contextFor",f.Dc),f.b("dataFor",f.Ec)}(),function(A){function T(Q,N){var k=Object.prototype.hasOwnProperty.call(W,Q)?W[Q]:A,v;k?k.subscribe(N):(k=W[Q]=new f.T,k.subscribe(N),L(Q,function(O,H){var ee=!(!H||!H.synchronous);M[Q]={definition:O,Gd:ee},delete W[Q],v||ee?k.notifySubscribers(O):f.na.zb(function(){k.notifySubscribers(O)})}),v=!0)}function L(Q,N){V("getConfig",[Q],function(k){k?V("loadComponent",[Q,k],function(v){N(v,k)}):N(null,null)})}function V(Q,N,k,v){v||(v=f.j.loaders.slice(0));var O=v.shift();if(O){var H=O[Q];if(H){var ee=!1;if(H.apply(O,N.concat(function(K){ee?k(null):K!==null?k(K):V(Q,N,k,v)}))!==A&&(ee=!0,!O.suppressLoaderExceptions))throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.")}else V(Q,N,k,v)}else k(null)}var W={},M={};f.j={get:function(Q,N){var k=Object.prototype.hasOwnProperty.call(M,Q)?M[Q]:A;k?k.Gd?f.u.G(function(){N(k.definition)}):f.na.zb(function(){N(k.definition)}):T(Q,N)},Bc:function(Q){delete M[Q]},oc:V},f.j.loaders=[],f.b("components",f.j),f.b("components.get",f.j.get),f.b("components.clearCachedDefinition",f.j.Bc)}(),function(){function A(k,v,O,H){function ee(){--te===0&&H(K)}var K={},te=2,q=O.template;O=O.viewModel,q?W(v,q,function(pe){f.j.oc("loadTemplate",[k,pe],function(ye){K.template=ye,ee()})}):ee(),O?W(v,O,function(pe){f.j.oc("loadViewModel",[k,pe],function(ye){K[N]=ye,ee()})}):ee()}function T(k,v,O){if(typeof v=="function")O(function(ee){return new v(ee)});else if(typeof v[N]=="function")O(v[N]);else if("instance"in v){var H=v.instance;O(function(){return H})}else"viewModel"in v?T(k,v.viewModel,O):k("Unknown viewModel value: "+v)}function L(k){switch(f.a.R(k)){case"script":return f.a.ua(k.text);case"textarea":return f.a.ua(k.value);case"template":if(V(k.content))return f.a.Ca(k.content.childNodes)}return f.a.Ca(k.childNodes)}function V(k){return t.DocumentFragment?k instanceof DocumentFragment:k&&k.nodeType===11}function W(k,v,O){typeof v.require=="string"?a||t.require?(a||t.require)([v.require],function(H){H&&typeof H=="object"&&H.Xd&&H.default&&(H=H.default),O(H)}):k("Uses require, but no AMD loader is present"):O(v)}function M(k){return function(v){throw Error("Component '"+k+"': "+v)}}var Q={};f.j.register=function(k,v){if(!v)throw Error("Invalid configuration for "+k);if(f.j.tb(k))throw Error("Component "+k+" is already registered");Q[k]=v},f.j.tb=function(k){return Object.prototype.hasOwnProperty.call(Q,k)},f.j.unregister=function(k){delete Q[k],f.j.Bc(k)},f.j.Fc={getConfig:function(k,v){v(f.j.tb(k)?Q[k]:null)},loadComponent:function(k,v,O){var H=M(k);W(H,v,function(ee){A(k,H,ee,O)})},loadTemplate:function(k,v,O){if(k=M(k),typeof v=="string")O(f.a.ua(v));else if(v instanceof Array)O(v);else if(V(v))O(f.a.la(v.childNodes));else if(v.element)if(v=v.element,t.HTMLElement?v instanceof HTMLElement:v&&v.tagName&&v.nodeType===1)O(L(v));else if(typeof v=="string"){var H=n.getElementById(v);H?O(L(H)):k("Cannot find element with ID "+v)}else k("Unknown element type: "+v);else k("Unknown template value: "+v)},loadViewModel:function(k,v,O){T(M(k),v,O)}};var N="createViewModel";f.b("components.register",f.j.register),f.b("components.isRegistered",f.j.tb),f.b("components.unregister",f.j.unregister),f.b("components.defaultLoader",f.j.Fc),f.j.loaders.push(f.j.Fc),f.j.dd=Q}(),function(){function A(L,V){var W=L.getAttribute("params");if(W){var W=T.parseBindingsString(W,V,L,{valueAccessors:!0,bindingParams:!0}),W=f.a.Ga(W,function(N){return f.o(N,null,{l:L})}),M=f.a.Ga(W,function(N){var k=N.v();return N.ja()?f.o({read:function(){return f.a.f(N())},write:f.Za(k)&&function(v){N()(v)},l:L}):k});return Object.prototype.hasOwnProperty.call(M,"$raw")||(M.$raw=W),M}return{$raw:{}}}f.j.getComponentNameForNode=function(L){var V=f.a.R(L);if(f.j.tb(V)&&(V.indexOf("-")!=-1||""+L=="[object HTMLUnknownElement]"||8>=f.a.W&&L.tagName===V))return V},f.j.tc=function(L,V,W,M){if(V.nodeType===1){var Q=f.j.getComponentNameForNode(V);if(Q){if(L=L||{},L.component)throw Error('Cannot use the "component" binding on a custom element matching a component');var N={name:Q,params:A(V,W)};L.component=M?function(){return N}:N}}return L};var T=new f.ga;9>f.a.W&&(f.j.register=function(L){return function(V){return L.apply(this,arguments)}}(f.j.register),n.createDocumentFragment=function(L){return function(){var V=L(),W=f.j.dd,M;for(M in W);return V}}(n.createDocumentFragment))}(),function(){function A(V,W,M){if(W=W.template,!W)throw Error("Component '"+V+"' has no template");V=f.a.Ca(W),f.h.va(M,V)}function T(V,W,M){var Q=V.createViewModel;return Q?Q.call(V,W,M):W}var L=0;f.c.component={init:function(V,W,M,Q,N){function k(){var K=v&&v.dispose;typeof K=="function"&&K.call(v),H&&H.s(),O=v=H=null}var v,O,H,ee=f.a.la(f.h.childNodes(V));return f.h.Ea(V),f.a.K.za(V,k),f.o(function(){var K=f.a.f(W()),te,q;if(typeof K=="string"?te=K:(te=f.a.f(K.name),q=f.a.f(K.params)),!te)throw Error("No component name specified");var pe=f.i.Cb(V,N),ye=O=++L;f.j.get(te,function(he){if(O===ye){if(k(),!he)throw Error("Unknown component '"+te+"'");A(te,he,V);var xe=T(he,q,{element:V,templateNodes:ee});he=pe.createChildContext(xe,{extend:function(Te){Te.$component=xe,Te.$componentTemplateNodes=ee}}),xe&&xe.koDescendantsComplete&&(H=f.i.subscribe(V,f.i.pa,xe.koDescendantsComplete,xe)),v=xe,f.Oa(he,V)}})},null,{l:V}),{controlsDescendantBindings:!0}}},f.h.ea.component=!0}();var F={class:"className",for:"htmlFor"};f.c.attr={update:function(A,T){var L=f.a.f(T())||{};f.a.P(L,function(V,W){W=f.a.f(W);var M=V.indexOf(":"),M="lookupNamespaceURI"in A&&0<M&&A.lookupNamespaceURI(V.substr(0,M)),Q=W===!1||W===null||W===e;Q?M?A.removeAttributeNS(M,V):A.removeAttribute(V):W=W.toString(),8>=f.a.W&&V in F?(V=F[V],Q?A.removeAttribute(V):A[V]=W):Q||(M?A.setAttributeNS(M,V,W):A.setAttribute(V,W)),V==="name"&&f.a.Yc(A,Q?"":W)})}},function(){f.c.checked={after:["value","attr"],init:function(A,T,L){function V(){var K=A.checked,te=M();if(!f.S.Ya()&&(K||!N&&!f.S.qa())){var q=f.u.G(T);if(v){var pe=O?q.v():q,ye=ee;ee=te,ye!==te?K&&(f.a.Na(pe,te,!0),f.a.Na(pe,ye,!1)):f.a.Na(pe,te,K),O&&f.Za(q)&&q(pe)}else Q&&(te===e?te=K:K||(te=e)),f.m.eb(q,L,"checked",te,!0)}}function W(){var K=f.a.f(T()),te=M();v?(A.checked=0<=f.a.A(K,te),ee=te):A.checked=Q&&te===e?!!K:M()===K}var M=f.xb(function(){if(L.has("checkedValue"))return f.a.f(L.get("checkedValue"));if(H)return L.has("value")?f.a.f(L.get("value")):A.value}),Q=A.type=="checkbox",N=A.type=="radio";if(Q||N){var k=T(),v=Q&&f.a.f(k)instanceof Array,O=!(v&&k.push&&k.splice),H=N||v,ee=v?M():e;N&&!A.name&&f.c.uniqueName.init(A,function(){return!0}),f.o(V,null,{l:A}),f.a.B(A,"click",V),f.o(W,null,{l:A}),k=e}}},f.m.wa.checked=!0,f.c.checkedValue={update:function(A,T){A.value=f.a.f(T())}}}(),f.c.class={update:function(A,T){var L=f.a.Db(f.a.f(T()));f.a.Eb(A,A.__ko__cssValue,!1),A.__ko__cssValue=L,f.a.Eb(A,L,!0)}},f.c.css={update:function(A,T){var L=f.a.f(T());L!==null&&typeof L=="object"?f.a.P(L,function(V,W){W=f.a.f(W),f.a.Eb(A,V,W)}):f.c.class.update(A,T)}},f.c.enable={update:function(A,T){var L=f.a.f(T());L&&A.disabled?A.removeAttribute("disabled"):L||A.disabled||(A.disabled=!0)}},f.c.disable={update:function(A,T){f.c.enable.update(A,function(){return!f.a.f(T())})}},f.c.event={init:function(A,T,L,V,W){var M=T()||{};f.a.P(M,function(Q){typeof Q=="string"&&f.a.B(A,Q,function(N){var k,v=T()[Q];if(v){try{var O=f.a.la(arguments);V=W.$data,O.unshift(V),k=v.apply(V,O)}finally{k!==!0&&(N.preventDefault?N.preventDefault():N.returnValue=!1)}L.get(Q+"Bubble")===!1&&(N.cancelBubble=!0,N.stopPropagation&&N.stopPropagation())}})})}},f.c.foreach={Rc:function(A){return function(){var T=A(),L=f.a.bc(T);return!L||typeof L.length=="number"?{foreach:T,templateEngine:f.ba.Ma}:(f.a.f(T),{foreach:L.data,as:L.as,noChildContext:L.noChildContext,includeDestroyed:L.includeDestroyed,afterAdd:L.afterAdd,beforeRemove:L.beforeRemove,afterRender:L.afterRender,beforeMove:L.beforeMove,afterMove:L.afterMove,templateEngine:f.ba.Ma})}},init:function(A,T){return f.c.template.init(A,f.c.foreach.Rc(T))},update:function(A,T,L,V,W){return f.c.template.update(A,f.c.foreach.Rc(T),L,V,W)}},f.m.Ra.foreach=!1,f.h.ea.foreach=!0,f.c.hasfocus={init:function(A,T,L){function V(Q){A.__ko_hasfocusUpdating=!0;var N=A.ownerDocument;if("activeElement"in N){var k;try{k=N.activeElement}catch{k=N.body}Q=k===A}N=T(),f.m.eb(N,L,"hasfocus",Q,!0),A.__ko_hasfocusLastValue=Q,A.__ko_hasfocusUpdating=!1}var W=V.bind(null,!0),M=V.bind(null,!1);f.a.B(A,"focus",W),f.a.B(A,"focusin",W),f.a.B(A,"blur",M),f.a.B(A,"focusout",M),A.__ko_hasfocusLastValue=!1},update:function(A,T){var L=!!f.a.f(T());A.__ko_hasfocusUpdating||A.__ko_hasfocusLastValue===L||(L?A.focus():A.blur(),!L&&A.__ko_hasfocusLastValue&&A.ownerDocument.body.focus(),f.u.G(f.a.Fb,null,[A,L?"focusin":"focusout"]))}},f.m.wa.hasfocus=!0,f.c.hasFocus=f.c.hasfocus,f.m.wa.hasFocus="hasfocus",f.c.html={init:function(){return{controlsDescendantBindings:!0}},update:function(A,T){f.a.fc(A,T())}},function(){function A(T,L,V){f.c[T]={init:function(W,M,Q,N,k){var v,O,H={},ee,K,te;if(L){N=Q.get("as");var q=Q.get("noChildContext");te=!(N&&q),H={as:N,noChildContext:q,exportDependencies:te}}return K=(ee=Q.get("completeOn")=="render")||Q.has(f.i.pa),f.o(function(){var pe=f.a.f(M()),ye=!V!=!pe,he=!O,xe;(te||ye!==v)&&(K&&(k=f.i.Cb(W,k)),ye&&((!L||te)&&(H.dataDependency=f.S.o()),xe=L?k.createChildContext(typeof pe=="function"?pe:M,H):f.S.qa()?k.extend(null,H):k),he&&f.S.qa()&&(O=f.a.Ca(f.h.childNodes(W),!0)),ye?(he||f.h.va(W,f.a.Ca(O)),f.Oa(xe,W)):(f.h.Ea(W),ee||f.i.ma(W,f.i.H)),v=ye)},null,{l:W}),{controlsDescendantBindings:!0}}},f.m.Ra[T]=!1,f.h.ea[T]=!0}A("if"),A("ifnot",!1,!0),A("with",!0)}(),f.c.let={init:function(A,T,L,V,W){return T=W.extend(T),f.Oa(T,A),{controlsDescendantBindings:!0}}},f.h.ea.let=!0;var P={};f.c.options={init:function(A){if(f.a.R(A)!=="select")throw Error("options binding applies only to SELECT elements");for(;0<A.length;)A.remove(0);return{controlsDescendantBindings:!0}},update:function(A,T,L){function V(){return f.a.jb(A.options,function(q){return q.selected})}function W(q,pe,ye){var he=typeof pe;return he=="function"?pe(q):he=="string"?q[pe]:ye}function M(q,pe){if(K&&v)f.i.ma(A,f.i.H);else if(ee.length){var ye=0<=f.a.A(ee,f.w.M(pe[0]));f.a.Zc(pe[0],ye),K&&!ye&&f.u.G(f.a.Fb,null,[A,"change"])}}var Q=A.multiple,N=A.length!=0&&Q?A.scrollTop:null,k=f.a.f(T()),v=L.get("valueAllowUnset")&&L.has("value"),O=L.get("optionsIncludeDestroyed");T={};var H,ee=[];v||(Q?ee=f.a.Mb(V(),f.w.M):0<=A.selectedIndex&&ee.push(f.w.M(A.options[A.selectedIndex]))),k&&(typeof k.length>"u"&&(k=[k]),H=f.a.jb(k,function(q){return O||q===e||q===null||!f.a.f(q._destroy)}),L.has("optionsCaption")&&(k=f.a.f(L.get("optionsCaption")),k!==null&&k!==e&&H.unshift(P)));var K=!1;if(T.beforeRemove=function(q){A.removeChild(q)},k=M,L.has("optionsAfterRender")&&typeof L.get("optionsAfterRender")=="function"&&(k=function(q,pe){M(0,pe),f.u.G(L.get("optionsAfterRender"),null,[pe[0],q!==P?q:e])}),f.a.ec(A,H,function(q,pe,ye){return ye.length&&(ee=!v&&ye[0].selected?[f.w.M(ye[0])]:[],K=!0),pe=A.ownerDocument.createElement("option"),q===P?(f.a.Bb(pe,L.get("optionsCaption")),f.w.cb(pe,e)):(ye=W(q,L.get("optionsValue"),q),f.w.cb(pe,f.a.f(ye)),q=W(q,L.get("optionsText"),ye),f.a.Bb(pe,q)),[pe]},T,k),!v){var te;Q?te=ee.length&&V().length<ee.length:te=ee.length&&0<=A.selectedIndex?f.w.M(A.options[A.selectedIndex])!==ee[0]:ee.length||0<=A.selectedIndex,te&&f.u.G(f.a.Fb,null,[A,"change"])}(v||f.S.Ya())&&f.i.ma(A,f.i.H),f.a.wd(A),N&&20<Math.abs(N-A.scrollTop)&&(A.scrollTop=N)}},f.c.options.$b=f.a.g.Z(),f.c.selectedOptions={init:function(A,T,L){function V(){var Q=T(),N=[];f.a.D(A.getElementsByTagName("option"),function(k){k.selected&&N.push(f.w.M(k))}),f.m.eb(Q,L,"selectedOptions",N)}function W(){var Q=f.a.f(T()),N=A.scrollTop;Q&&typeof Q.length=="number"&&f.a.D(A.getElementsByTagName("option"),function(k){var v=0<=f.a.A(Q,f.w.M(k));k.selected!=v&&f.a.Zc(k,v)}),A.scrollTop=N}if(f.a.R(A)!="select")throw Error("selectedOptions binding applies only to SELECT elements");var M;f.i.subscribe(A,f.i.H,function(){M?V():(f.a.B(A,"change",V),M=f.o(W,null,{l:A}))},null,{notifyImmediately:!0})},update:function(){}},f.m.wa.selectedOptions=!0,f.c.style={update:function(A,T){var L=f.a.f(T()||{});f.a.P(L,function(V,W){if(W=f.a.f(W),(W===null||W===e||W===!1)&&(W=""),o)o(A).css(V,W);else if(/^--/.test(V))A.style.setProperty(V,W);else{V=V.replace(/-(\w)/g,function(Q,N){return N.toUpperCase()});var M=A.style[V];A.style[V]=W,W===M||A.style[V]!=M||isNaN(W)||(A.style[V]=W+"px")}})}},f.c.submit={init:function(A,T,L,V,W){if(typeof T()!="function")throw Error("The value for a submit binding must be a function");f.a.B(A,"submit",function(M){var Q,N=T();try{Q=N.call(W.$data,A)}finally{Q!==!0&&(M.preventDefault?M.preventDefault():M.returnValue=!1)}})}},f.c.text={init:function(){return{controlsDescendantBindings:!0}},update:function(A,T){f.a.Bb(A,T())}},f.h.ea.text=!0,function(){if(t&&t.navigator){var A=function(H){if(H)return parseFloat(H[1])},T=t.navigator.userAgent,L,V,W,M,Q;(L=t.opera&&t.opera.version&&parseInt(t.opera.version()))||(Q=A(T.match(/Edge\/([^ ]+)$/)))||A(T.match(/Chrome\/([^ ]+)/))||(V=A(T.match(/Version\/([^ ]+) Safari/)))||(W=A(T.match(/Firefox\/([^ ]+)/)))||(M=f.a.W||A(T.match(/MSIE ([^ ]+)/)))||(M=A(T.match(/rv:([^ )]+)/)))}if(8<=M&&10>M)var N=f.a.g.Z(),k=f.a.g.Z(),v=function(H){var ee=this.activeElement;(ee=ee&&f.a.g.get(ee,k))&&ee(H)},O=function(H,ee){var K=H.ownerDocument;f.a.g.get(K,N)||(f.a.g.set(K,N,!0),f.a.B(K,"selectionchange",v)),f.a.g.set(H,k,ee)};f.c.textInput={init:function(H,ee,K){function te(De,Ue){f.a.B(H,De,Ue)}function q(){var De=f.a.f(ee());(De===null||De===e)&&(De=""),Te!==e&&De===Te?f.a.setTimeout(q,4):H.value!==De&&(Le=!0,H.value=De,Le=!1,he=H.value)}function pe(){xe||(Te=H.value,xe=f.a.setTimeout(ye,4))}function ye(){clearTimeout(xe),Te=xe=e;var De=H.value;he!==De&&(he=De,f.m.eb(ee(),K,"textInput",De))}var he=H.value,xe,Te,Be=f.a.W==9?pe:ye,Le=!1;M&&te("keypress",ye),11>M&&te("propertychange",function(De){Le||De.propertyName!=="value"||Be(De)}),M==8&&(te("keyup",ye),te("keydown",ye)),O&&(O(H,Be),te("dragend",pe)),(!M||9<=M)&&te("input",Be),5>V&&f.a.R(H)==="textarea"?(te("keydown",pe),te("paste",pe),te("cut",pe)):11>L?te("keydown",pe):4>W?(te("DOMAutoComplete",ye),te("dragdrop",ye),te("drop",ye)):Q&&H.type==="number"&&te("keydown",pe),te("change",ye),te("blur",ye),f.o(q,null,{l:H})}},f.m.wa.textInput=!0,f.c.textinput={preprocess:function(H,ee,K){K("textInput",H)}}}(),f.c.uniqueName={init:function(A,T){if(T()){var L="ko_unique_"+ ++f.c.uniqueName.rd;f.a.Yc(A,L)}}},f.c.uniqueName.rd=0,f.c.using={init:function(A,T,L,V,W){var M;return L.has("as")&&(M={as:L.get("as"),noChildContext:L.get("noChildContext")}),T=W.createChildContext(T,M),f.Oa(T,A),{controlsDescendantBindings:!0}}},f.h.ea.using=!0,f.c.value={init:function(A,T,L){var V=f.a.R(A),W=V=="input";if(!W||A.type!="checkbox"&&A.type!="radio"){var M=[],Q=L.get("valueUpdate"),N=!1,k=null;Q&&(typeof Q=="string"?M=[Q]:M=f.a.wc(Q),f.a.Pa(M,"change"));var v=function(){k=null,N=!1;var ee=T(),K=f.w.M(A);f.m.eb(ee,L,"value",K)};!f.a.W||!W||A.type!="text"||A.autocomplete=="off"||A.form&&A.form.autocomplete=="off"||f.a.A(M,"propertychange")!=-1||(f.a.B(A,"propertychange",function(){N=!0}),f.a.B(A,"focus",function(){N=!1}),f.a.B(A,"blur",function(){N&&v()})),f.a.D(M,function(ee){var K=v;f.a.Ud(ee,"after")&&(K=function(){k=f.w.M(A),f.a.setTimeout(v,0)},ee=ee.substring(5)),f.a.B(A,ee,K)});var O;if(O=W&&A.type=="file"?function(){var ee=f.a.f(T());ee===null||ee===e||ee===""?A.value="":f.u.G(v)}:function(){var ee=f.a.f(T()),K=f.w.M(A);k!==null&&ee===k?f.a.setTimeout(O,0):(ee!==K||K===e)&&(V==="select"?(K=L.get("valueAllowUnset"),f.w.cb(A,ee,K),K||ee===f.w.M(A)||f.u.G(v)):f.w.cb(A,ee))},V==="select"){var H;f.i.subscribe(A,f.i.H,function(){H?L.get("valueAllowUnset")?O():v():(f.a.B(A,"change",v),H=f.o(O,null,{l:A}))},null,{notifyImmediately:!0})}else f.a.B(A,"change",v),f.o(O,null,{l:A})}else f.ib(A,{checkedValue:T})},update:function(){}},f.m.wa.value=!0,f.c.visible={update:function(A,T){var L=f.a.f(T()),V=A.style.display!="none";L&&!V?A.style.display="":!L&&V&&(A.style.display="none")}},f.c.hidden={update:function(A,T){f.c.visible.update(A,function(){return!f.a.f(T())})}},function(A){f.c[A]={init:function(T,L,V,W,M){return f.c.event.init.call(this,T,function(){var Q={};return Q[A]=L(),Q},V,W,M)}}}("click"),f.ca=function(){},f.ca.prototype.renderTemplateSource=function(){throw Error("Override renderTemplateSource")},f.ca.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock")},f.ca.prototype.makeTemplateSource=function(A,T){if(typeof A=="string"){T=T||n;var L=T.getElementById(A);if(!L)throw Error("Cannot find template with ID "+A);return new f.C.F(L)}if(A.nodeType==1||A.nodeType==8)return new f.C.ia(A);throw Error("Unknown template type: "+A)},f.ca.prototype.renderTemplate=function(A,T,L,V){return A=this.makeTemplateSource(A,V),this.renderTemplateSource(A,T,L,V)},f.ca.prototype.isTemplateRewritten=function(A,T){return this.allowTemplateRewriting===!1?!0:this.makeTemplateSource(A,T).data("isRewritten")},f.ca.prototype.rewriteTemplate=function(A,T,L){A=this.makeTemplateSource(A,L),T=T(A.text()),A.text(T),A.data("isRewritten",!0)},f.b("templateEngine",f.ca),f.kc=function(){function A(V,W,M,Q){V=f.m.ac(V);for(var N=f.m.Ra,k=0;k<V.length;k++){var v=V[k].key;if(Object.prototype.hasOwnProperty.call(N,v)){var O=N[v];if(typeof O=="function"){if(v=O(V[k].value))throw Error(v)}else if(!O)throw Error("This template engine does not support the '"+v+"' binding within its templates")}}return M="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+f.m.vb(V,{valueAccessors:!0})+" } })()},'"+M.toLowerCase()+"')",Q.createJavaScriptEvaluatorBlock(M)+W}var T=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,L=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{xd:function(V,W,M){W.isTemplateRewritten(V,M)||W.rewriteTemplate(V,function(Q){return f.kc.Ld(Q,W)},M)},Ld:function(V,W){return V.replace(T,function(M,Q,N,k,v){return A(v,Q,N,W)}).replace(L,function(M,Q){return A(Q,"<!-- ko -->","#comment",W)})},md:function(V,W){return f.aa.Xb(function(M,Q){var N=M.nextSibling;N&&N.nodeName.toLowerCase()===W&&f.ib(N,V,Q)})}}}(),f.b("__tr_ambtns",f.kc.md),function(){f.C={},f.C.F=function(L){if(this.F=L){var V=f.a.R(L);this.ab=V==="script"?1:V==="textarea"?2:V=="template"&&L.content&&L.content.nodeType===11?3:4}},f.C.F.prototype.text=function(){var L=this.ab===1?"text":this.ab===2?"value":"innerHTML";if(arguments.length==0)return this.F[L];var V=arguments[0];L==="innerHTML"?f.a.fc(this.F,V):this.F[L]=V};var A=f.a.g.Z()+"_";f.C.F.prototype.data=function(L){if(arguments.length===1)return f.a.g.get(this.F,A+L);f.a.g.set(this.F,A+L,arguments[1])};var T=f.a.g.Z();f.C.F.prototype.nodes=function(){var L=this.F;if(arguments.length==0){var V=f.a.g.get(L,T)||{},W=V.lb||(this.ab===3?L.content:this.ab===4?L:e);if(!W||V.jd){var M=this.text();M&&M!==V.bb&&(W=f.a.Md(M,L.ownerDocument),f.a.g.set(L,T,{lb:W,bb:M,jd:!0}))}return W}V=arguments[0],this.ab!==e&&this.text(""),f.a.g.set(L,T,{lb:V})},f.C.ia=function(L){this.F=L},f.C.ia.prototype=new f.C.F,f.C.ia.prototype.constructor=f.C.ia,f.C.ia.prototype.text=function(){if(arguments.length==0){var L=f.a.g.get(this.F,T)||{};return L.bb===e&&L.lb&&(L.bb=L.lb.innerHTML),L.bb}f.a.g.set(this.F,T,{bb:arguments[0]})},f.b("templateSources",f.C),f.b("templateSources.domElement",f.C.F),f.b("templateSources.anonymousTemplate",f.C.ia)}(),function(){function A(k,v,O){var H;for(v=f.h.nextSibling(v);k&&(H=k)!==v;)k=f.h.nextSibling(H),O(H,k)}function T(k,v){if(k.length){var O=k[0],H=k[k.length-1],ee=O.parentNode,K=f.ga.instance,te=K.preprocessNode;if(te){if(A(O,H,function(q,pe){var ye=q.previousSibling,he=te.call(K,q);he&&(q===O&&(O=he[0]||pe),q===H&&(H=he[he.length-1]||ye))}),k.length=0,!O)return;O===H?k.push(O):(k.push(O,H),f.a.Ua(k,ee))}A(O,H,function(q){q.nodeType!==1&&q.nodeType!==8||f.vc(v,q)}),A(O,H,function(q){q.nodeType!==1&&q.nodeType!==8||f.aa.cd(q,[v])}),f.a.Ua(k,ee)}}function L(k){return k.nodeType?k:0<k.length?k[0]:null}function V(k,v,O,H,ee){ee=ee||{};var K=(k&&L(k)||O||{}).ownerDocument,te=ee.templateEngine||M;if(f.kc.xd(O,te,K),O=te.renderTemplate(O,H,ee,K),typeof O.length!="number"||0<O.length&&typeof O[0].nodeType!="number")throw Error("Template engine must return an array of DOM nodes");switch(K=!1,v){case"replaceChildren":f.h.va(k,O),K=!0;break;case"replaceNode":f.a.Xc(k,O),K=!0;break;case"ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+v)}return K&&(T(O,H),ee.afterRender&&f.u.G(ee.afterRender,null,[O,H[ee.as||"$data"]]),v=="replaceChildren"&&f.i.ma(k,f.i.H)),O}function W(k,v,O){return f.O(k)?k():typeof k=="function"?k(v,O):k}var M;f.gc=function(k){if(k!=e&&!(k instanceof f.ca))throw Error("templateEngine must inherit from ko.templateEngine");M=k},f.dc=function(k,v,O,H,ee){if(O=O||{},(O.templateEngine||M)==e)throw Error("Set a template engine before calling renderTemplate");if(ee=ee||"replaceChildren",H){var K=L(H);return f.$(function(){var q=v&&v instanceof f.fa?v:new f.fa(v,null,null,null,{exportDependencies:!0}),te=W(k,q.$data,q),q=V(H,ee,te,q,O);ee=="replaceNode"&&(H=q,K=L(H))},null,{Sa:function(){return!K||!f.a.Sb(K)},l:K&&ee=="replaceNode"?K.parentNode:K})}return f.aa.Xb(function(te){f.dc(k,v,O,te,"replaceNode")})},f.Qd=function(k,v,O,H,ee){function K(Te,Be){f.u.G(f.a.ec,null,[H,Te,q,O,te,Be]),f.i.ma(H,f.i.H)}function te(Te,Be){T(Be,pe),O.afterRender&&O.afterRender(Be,Te),pe=null}function q(Te,Be){pe=ee.createChildContext(Te,{as:ye,noChildContext:O.noChildContext,extend:function(De){De.$index=Be,ye&&(De[ye+"Index"]=Be)}});var Le=W(k,Te,pe);return V(H,"ignoreTargetNode",Le,pe,O)}var pe,ye=O.as,he=O.includeDestroyed===!1||f.options.foreachHidesDestroyed&&!O.includeDestroyed;if(he||O.beforeRemove||!f.Pc(v))return f.$(function(){var Te=f.a.f(v)||[];typeof Te.length>"u"&&(Te=[Te]),he&&(Te=f.a.jb(Te,function(Be){return Be===e||Be===null||!f.a.f(Be._destroy)})),K(Te)},null,{l:H});K(v.v());var xe=v.subscribe(function(Te){K(v(),Te)},null,"arrayChange");return xe.l(H),xe};var Q=f.a.g.Z(),N=f.a.g.Z();f.c.template={init:function(k,v){var O=f.a.f(v());if(typeof O=="string"||"name"in O)f.h.Ea(k);else if("nodes"in O){if(O=O.nodes||[],f.O(O))throw Error('The "nodes" option must be a plain, non-observable array.');var H=O[0]&&O[0].parentNode;H&&f.a.g.get(H,N)||(H=f.a.Yb(O),f.a.g.set(H,N,!0)),new f.C.ia(k).nodes(H)}else if(O=f.h.childNodes(k),0<O.length)H=f.a.Yb(O),new f.C.ia(k).nodes(H);else throw Error("Anonymous template defined, but no template content was provided");return{controlsDescendantBindings:!0}},update:function(k,v,O,H,ee){var K=v();v=f.a.f(K),O=!0,H=null,typeof v=="string"?v={}:(K="name"in v?v.name:k,"if"in v&&(O=f.a.f(v.if)),O&&"ifnot"in v&&(O=!f.a.f(v.ifnot)),O&&!K&&(O=!1)),"foreach"in v?H=f.Qd(K,O&&v.foreach||[],v,k,ee):O?(O=ee,"data"in v&&(O=ee.createChildContext(v.data,{as:v.as,noChildContext:v.noChildContext,exportDependencies:!0})),H=f.dc(K,O,v,k)):f.h.Ea(k),ee=H,(v=f.a.g.get(k,Q))&&typeof v.s=="function"&&v.s(),f.a.g.set(k,Q,!ee||ee.ja&&!ee.ja()?e:ee)}},f.m.Ra.template=function(k){return k=f.m.ac(k),k.length==1&&k[0].unknown||f.m.Id(k,"name")?null:"This template engine does not support anonymous templates nested within its templates"},f.h.ea.template=!0}(),f.b("setTemplateEngine",f.gc),f.b("renderTemplate",f.dc),f.a.Kc=function(A,T,L){if(A.length&&T.length){var V,W,M,Q,N;for(V=W=0;(!L||V<L)&&(Q=A[W]);++W){for(M=0;N=T[M];++M)if(Q.value===N.value){Q.moved=N.index,N.moved=Q.index,T.splice(M,1),V=M=0;break}V+=M}}},f.a.Pb=function(){function A(T,L,V,W,M){var Q=Math.min,N=Math.max,k=[],v,O=T.length,H,ee=L.length,K=ee-O||1,te=O+ee+1,q,pe,ye;for(v=0;v<=O;v++)for(pe=q,k.push(q=[]),ye=Q(ee,v+K),H=N(0,v-1);H<=ye;H++)q[H]=H?v?T[v-1]===L[H-1]?pe[H-1]:Q(pe[H]||te,q[H-1]||te)+1:H+1:v+1;for(Q=[],N=[],K=[],v=O,H=ee;v||H;)ee=k[v][H]-1,H&&ee===k[v][H-1]?N.push(Q[Q.length]={status:V,value:L[--H],index:H}):v&&ee===k[v-1][H]?K.push(Q[Q.length]={status:W,value:T[--v],index:v}):(--H,--v,M.sparse||Q.push({status:"retained",value:L[H]}));return f.a.Kc(K,N,!M.dontLimitMoves&&10*O),Q.reverse()}return function(T,L,V){return V=typeof V=="boolean"?{dontLimitMoves:V}:V||{},T=T||[],L=L||[],T.length<L.length?A(T,L,"added","deleted",V):A(L,T,"deleted","added",V)}}(),f.b("utils.compareArrays",f.a.Pb),function(){function A(V,W,M,Q,N){var k=[],v=f.$(function(){var O=W(M,N,f.a.Ua(k,V))||[];0<k.length&&(f.a.Xc(k,O),Q&&f.u.G(Q,null,[M,O,N])),k.length=0,f.a.Nb(k,O)},null,{l:V,Sa:function(){return!f.a.kd(k)}});return{Y:k,$:v.ja()?v:e}}var T=f.a.g.Z(),L=f.a.g.Z();f.a.ec=function(V,W,M,Q,N,k){function v(Xt){Le={Aa:Xt,pb:f.ta(pe++)},te.push(Le),K||Be.push(Le)}function O(Xt){Le=ee[Xt],pe!==Le.pb.v()&&Te.push(Le),Le.pb(pe++),f.a.Ua(Le.Y,V),te.push(Le)}function H(Xt,Li){if(Xt)for(var bi=0,vt=Li.length;bi<vt;bi++)f.a.D(Li[bi].Y,function(Rt){Xt(Rt,bi,Li[bi].Aa)})}W=W||[],typeof W.length>"u"&&(W=[W]),Q=Q||{};var ee=f.a.g.get(V,T),K=!ee,te=[],q=0,pe=0,ye=[],he=[],xe=[],Te=[],Be=[],Le,De=0;if(K)f.a.D(W,v);else{if(!k||ee&&ee._countWaitingForRemove){var Ue=f.a.Mb(ee,function(Xt){return Xt.Aa});k=f.a.Pb(Ue,W,{dontLimitMoves:Q.dontLimitMoves,sparse:!0})}for(var Ue=0,je,it,nn;je=k[Ue];Ue++)switch(it=je.moved,nn=je.index,je.status){case"deleted":for(;q<nn;)O(q++);it===e&&(Le=ee[q],Le.$&&(Le.$.s(),Le.$=e),f.a.Ua(Le.Y,V).length&&(Q.beforeRemove&&(te.push(Le),De++,Le.Aa===L?Le=null:xe.push(Le)),Le&&ye.push.apply(ye,Le.Y))),q++;break;case"added":for(;pe<nn;)O(q++);it!==e?(he.push(te.length),O(it)):v(je.value)}for(;pe<W.length;)O(q++);te._countWaitingForRemove=De}f.a.g.set(V,T,te),H(Q.beforeMove,Te),f.a.D(ye,Q.beforeRemove?f.oa:f.removeNode);var rt,rn,Jt;try{Jt=V.ownerDocument.activeElement}catch{}if(he.length)for(;(Ue=he.shift())!=e;){for(Le=te[Ue],rt=e;Ue;)if((rn=te[--Ue].Y)&&rn.length){rt=rn[rn.length-1];break}for(W=0;q=Le.Y[W];rt=q,W++)f.h.Wb(V,q,rt)}for(Ue=0;Le=te[Ue];Ue++){for(Le.Y||f.a.extend(Le,A(V,M,Le.Aa,N,Le.pb)),W=0;q=Le.Y[W];rt=q,W++)f.h.Wb(V,q,rt);!Le.Ed&&N&&(N(Le.Aa,Le.Y,Le.pb),Le.Ed=!0,rt=Le.Y[Le.Y.length-1])}for(Jt&&V.ownerDocument.activeElement!=Jt&&Jt.focus(),H(Q.beforeRemove,xe),Ue=0;Ue<xe.length;++Ue)xe[Ue].Aa=L;H(Q.afterMove,Te),H(Q.afterAdd,Be)}}(),f.b("utils.setDomNodeChildrenFromArrayMapping",f.a.ec),f.ba=function(){this.allowTemplateRewriting=!1},f.ba.prototype=new f.ca,f.ba.prototype.constructor=f.ba,f.ba.prototype.renderTemplateSource=function(A,T,L,V){return(T=!(9>f.a.W)&&A.nodes?A.nodes():null)?f.a.la(T.cloneNode(!0).childNodes):(A=A.text(),f.a.ua(A,V))},f.ba.Ma=new f.ba,f.gc(f.ba.Ma),f.b("nativeTemplateEngine",f.ba),function(){f.$a=function(){var T=this.Hd=function(){if(!o||!o.tmpl)return 0;try{if(0<=o.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch{}return 1}();this.renderTemplateSource=function(L,V,W,M){if(M=M||n,W=W||{},2>T)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var Q=L.data("precompiled");return Q||(Q=L.text()||"",Q=o.template(null,"{{ko_with $item.koBindingContext}}"+Q+"{{/ko_with}}"),L.data("precompiled",Q)),L=[V.$data],V=o.extend({koBindingContext:V},W.templateOptions),V=o.tmpl(Q,L,V),V.appendTo(M.createElement("div")),o.fragments={},V},this.createJavaScriptEvaluatorBlock=function(L){return"{{ko_code ((function() { return "+L+" })()) }}"},this.addTemplate=function(L,V){n.write("<script type='text/html' id='"+L+"'>"+V+"<\/script>")},0<T&&(o.tmpl.tag.ko_code={open:"__.push($1 || '');"},o.tmpl.tag.ko_with={open:"with($1) {",close:"} "})},f.$a.prototype=new f.ca,f.$a.prototype.constructor=f.$a;var A=new f.$a;0<A.Hd&&f.gc(A),f.b("jqueryTmplTemplateEngine",f.$a)}()})})()})()})();var B1t=ko;typeof window<"u"?(ko=window.ko,typeof RN<"u"?window.ko=RN:delete window.ko):(ko=global.ko,typeof RN<"u"?global.ko=RN:delete global.ko);var I_=B1t;var RBo=y(C(),1);/** + * @license + * Knockout ES5 plugin - https://github.com/SteveSanderson/knockout-es5 + * Copyright (c) Steve Sanderson + * MIT license + */var nee="__knockoutObservables",iee="__knockoutSubscribable";function oSe(e,t){if(!e)throw new Error("When calling ko.track, you must pass an object as the first parameter.");var n=this,i=rSe(e,!0);return t=t||Object.getOwnPropertyNames(e),t.forEach(function(o){if(!(o===nee||o===iee)&&!(o in i)){var r=e[o],s=r instanceof Array,a=n.isObservable(r)?r:s?n.observableArray(r):n.observable(r);Object.defineProperty(e,o,{configurable:!0,enumerable:!0,get:a,set:n.isWriteableObservable(a)?a:void 0}),i[o]=a,s&&X1t(n,a)}}),e}function rSe(e,t){var n=e[nee];return!n&&t&&(n={},Object.defineProperty(e,nee,{value:n})),n}function w1t(e,t,n){var i=this,o={owner:e,deferEvaluation:!0};if(typeof n=="function")o.read=n;else{if("value"in n)throw new Error('For ko.defineProperty, you must not specify a "value" for the property. You must provide a "get" function.');if(typeof n.get!="function")throw new Error('For ko.defineProperty, the third parameter must be either an evaluator function, or an options object containing a function called "get".');o.read=n.get,o.write=n.set}return e[t]=i.computed(o),oSe.call(i,e,[t]),e}function X1t(e,t){var n=null;e.computed(function(){n&&(n.dispose(),n=null);var i=t();i instanceof Array&&(n=W1t(e,t,i))})}function W1t(e,t,n){var i=F1t(e,n);return i.subscribe(t)}function F1t(e,t){var n=t[iee];if(!n){n=new e.subscribable,Object.defineProperty(t,iee,{value:n});var i={};P1t(t,n,i),M1t(e,t,n,i)}return n}function P1t(e,t,n){["pop","push","reverse","shift","sort","splice","unshift"].forEach(function(i){var o=e[i];e[i]=function(){var r=o.apply(this,arguments);return n.pause!==!0&&t.notifySubscribers(this),r}})}function M1t(e,t,n,i){["remove","removeAll","destroy","destroyAll","replace"].forEach(function(o){Object.defineProperty(t,o,{enumerable:!1,value:function(){var r;i.pause=!0;try{r=e.observableArray.fn[o].apply(e.observableArray(t),arguments)}finally{i.pause=!1}return n.notifySubscribers(t),r}})})}function sSe(e,t){if(!e)return null;var n=rSe(e,!1);return n&&n[t]||null}function v1t(e,t){var n=sSe(e,t);n&&n.valueHasMutated()}function N1t(e){e.track=oSe,e.getObservable=sSe,e.valueHasMutated=v1t,e.defineProperty=w1t}var VN={attachToKo:N1t};var GBo=y(C(),1),aSe="http://www.w3.org/2000/svg",cSe="cesium-svgPath-svg",D1t={register:function(e){e.bindingHandlers.cesiumSvgPath={init:function(t,n){let i=document.createElementNS(aSe,"svg:svg");i.setAttribute("class",cSe);let o=document.createElementNS(aSe,"path");return i.appendChild(o),e.virtualElements.setDomNodeChildren(t,[i]),e.computed({read:function(){let r=e.unwrap(n());o.setAttribute("d",e.unwrap(r.path));let s=e.unwrap(r.width),a=e.unwrap(r.height);i.setAttribute("width",s),i.setAttribute("height",a),i.setAttribute("viewBox",`0 0 ${s} ${a}`),r.css&&i.setAttribute("class",`${cSe} ${e.unwrap(r.css)}`)},disposeWhenNodeIsRemoved:t}),{controlsDescendantBindings:!0}}},e.virtualElements.allowedBindings.cesiumSvgPath=!0}},GN=D1t;VN.attachToKo(I_);GN.register(I_);var Ee=I_;function ZN(e){l(e)||(e=new Yh),this._clock=e,this._eventHelper=new Lr,this._eventHelper.add(e.onTick,this.synchronize,this),this.systemTime=Ee.observable(j.now()),this.systemTime.equalityComparer=j.equals,this.startTime=Ee.observable(e.startTime),this.startTime.equalityComparer=j.equals,this.startTime.subscribe(function(t){e.startTime=t,this.synchronize()},this),this.stopTime=Ee.observable(e.stopTime),this.stopTime.equalityComparer=j.equals,this.stopTime.subscribe(function(t){e.stopTime=t,this.synchronize()},this),this.currentTime=Ee.observable(e.currentTime),this.currentTime.equalityComparer=j.equals,this.currentTime.subscribe(function(t){e.currentTime=t,this.synchronize()},this),this.multiplier=Ee.observable(e.multiplier),this.multiplier.subscribe(function(t){e.multiplier=t,this.synchronize()},this),this.clockStep=Ee.observable(e.clockStep),this.clockStep.subscribe(function(t){e.clockStep=t,this.synchronize()},this),this.clockRange=Ee.observable(e.clockRange),this.clockRange.subscribe(function(t){e.clockRange=t,this.synchronize()},this),this.canAnimate=Ee.observable(e.canAnimate),this.canAnimate.subscribe(function(t){e.canAnimate=t,this.synchronize()},this),this.shouldAnimate=Ee.observable(e.shouldAnimate),this.shouldAnimate.subscribe(function(t){e.shouldAnimate=t,this.synchronize()},this),Ee.track(this,["systemTime","startTime","stopTime","currentTime","multiplier","clockStep","clockRange","canAnimate","shouldAnimate"])}Object.defineProperties(ZN.prototype,{clock:{get:function(){return this._clock}}});ZN.prototype.synchronize=function(){let e=this._clock;this.systemTime=j.now(),this.startTime=e.startTime,this.stopTime=e.stopTime,this.currentTime=e.currentTime,this.multiplier=e.multiplier,this.clockStep=e.clockStep,this.clockRange=e.clockRange,this.canAnimate=e.canAnimate,this.shouldAnimate=e.shouldAnimate};ZN.prototype.isDestroyed=function(){return!1};ZN.prototype.destroy=function(){this._eventHelper.removeAll(),me(this)};var BN=ZN;var QBo=y(C(),1);function Q1t(){this.canExecute=void 0,this.beforeExecute=void 0,this.afterExecute=void 0,Ae.throwInstantiationError()}var oee=Q1t;var OBo=y(C(),1);var YL={};YL.createCheckbox=function(e,t,n){let i=document.createElement("div"),o=document.createElement("label"),r=document.createElement("input");r.type="checkbox";let s=`checked: ${t}`;return l(n)&&(s+=`, enable: ${n}`),r.setAttribute("data-bind",s),o.appendChild(r),o.appendChild(document.createTextNode(e)),i.appendChild(o),i};YL.createSection=function(e,t,n,i){let o=document.createElement("div");o.className="cesium-cesiumInspector-section",o.setAttribute("data-bind",`css: { "cesium-cesiumInspector-section-collapsed": !${n} }`),e.appendChild(o);let r=document.createElement("h3");r.className="cesium-cesiumInspector-sectionHeader",r.appendChild(document.createTextNode(t)),r.setAttribute("data-bind",`click: ${i}`),o.appendChild(r);let s=document.createElement("div");return s.className="cesium-cesiumInspector-sectionContent",o.appendChild(s),s};YL.createRangeInput=function(e,t,n,i,o,r){r=r??t;let s=document.createElement("input");s.setAttribute("data-bind",`value: ${r}`),s.type="number";let a=document.createElement("input");a.type="range",a.min=n,a.max=i,a.step=o??"any",a.setAttribute("data-bind",`valueUpdate: "input", value: ${t}`);let c=document.createElement("div");c.appendChild(a);let d=document.createElement("div");return d.className="cesium-cesiumInspector-slider",d.appendChild(document.createTextNode(e)),d.appendChild(s),d.appendChild(c),d};YL.createRangeInputWithDynamicMinMax=function(e,t,n,i){i=i??t;let o=document.createElement("input");o.setAttribute("data-bind",`value: ${i}`),o.type="number";let r=document.createElement("input");r.type="range",r.step=n??"any",r.setAttribute("data-bind",`valueUpdate: "input", value: ${t}, attr: { min: ${t}Min, max: ${t}Max }`);let s=document.createElement("div");s.appendChild(r);let a=document.createElement("div");return a.className="cesium-cesiumInspector-slider",a.appendChild(document.createTextNode(e)),a.appendChild(o),a.appendChild(s),a};YL.createButton=function(e,t,n){let i=document.createElement("button");i.type="button",i.textContent=e,i.className="cesium-cesiumInspector-pickButton";let o=`click: ${t}`;return l(n)&&(o+=`, css: {"cesium-cesiumInspector-pickButtonHighlight" : ${n}}`),i.setAttribute("data-bind",o),i};var Vd=YL;var qBo=y(C(),1);function lSe(e,t){this._command=e,t=t??Y.EMPTY_OBJECT,this.toggled=t.toggled??!1,this.tooltip=t.tooltip??"",Ee.track(this,["toggled","tooltip"])}Object.defineProperties(lSe.prototype,{command:{get:function(){return this._command}}});var Vy=lSe;var owo=y(C(),1);function U1t(e,t){t=t??!0;let n=new Ce,i=new Ce;function o(){let r={args:arguments,cancel:!1},s;return n.raiseEvent(r),r.cancel||(s=e.apply(null,arguments),i.raiseEvent(s)),s}return o.canExecute=t,Ee.track(o,["canExecute"]),Object.defineProperties(o,{beforeExecute:{value:n},afterExecute:{value:i}}),o}var Xn=U1t;var awo=y(C(),1);function k1t(e,t,n,i,o){return n.call(i,e[t]),Ee.getObservable(e,t).subscribe(n,i,o)}var $a=k1t;var mwo=y(C(),1);var __="http://www.w3.org/2000/svg",mSe="http://www.w3.org/1999/xlink",t3,wN=U.fromCssColorString("rgba(247,250,255,0.384)"),n3=U.fromCssColorString("rgba(143,191,255,0.216)"),ree=U.fromCssColorString("rgba(153,197,255,0.098)"),i3=U.fromCssColorString("rgba(255,255,255,0.086)"),Y1t=U.fromCssColorString("rgba(255,255,255,0.267)"),O1t=U.fromCssColorString("rgba(255,255,255,0)"),dSe=U.fromCssColorString("rgba(66,67,68,0.3)"),uSe=U.fromCssColorString("rgba(0,0,0,0.5)");function Gy(e){return U.fromCssColorString(window.getComputedStyle(e).getPropertyValue("color"))}var XN={animation_pathReset:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.316,5.318,9.833,13.682,9.833,5.5,5.5,5.5,5.5,25.5,9.833,25.5,9.833,17.318,24.316,25.682z"},animation_pathPause:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M13,5.5,7.5,5.5,7.5,25.5,13,25.5zM24.5,5.5,19,5.5,19,25.5,24.5,25.5z"},animation_pathPlay:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathPlayReverse:{tagName:"path",transform:"translate(16,16) scale(-0.85,0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathLoop:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.249,15.499c-0.009,4.832-3.918,8.741-8.75,8.75c-2.515,0-4.768-1.064-6.365-2.763l2.068-1.442l-7.901-3.703l0.744,8.694l2.193-1.529c2.244,2.594,5.562,4.242,9.26,4.242c6.767,0,12.249-5.482,12.249-12.249H24.249zM15.499,6.75c2.516,0,4.769,1.065,6.367,2.764l-2.068,1.443l7.901,3.701l-0.746-8.693l-2.192,1.529c-2.245-2.594-5.562-4.245-9.262-4.245C8.734,3.25,3.25,8.734,3.249,15.499H6.75C6.758,10.668,10.668,6.758,15.499,6.75z"},animation_pathClock:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-15.5)",d:"M15.5,2.374C8.251,2.375,2.376,8.251,2.374,15.5C2.376,22.748,8.251,28.623,15.5,28.627c7.249-0.004,13.124-5.879,13.125-13.127C28.624,8.251,22.749,2.375,15.5,2.374zM15.5,25.623C9.909,25.615,5.385,21.09,5.375,15.5C5.385,9.909,9.909,5.384,15.5,5.374c5.59,0.01,10.115,4.535,10.124,10.125C25.615,21.09,21.091,25.615,15.5,25.623zM8.625,15.5c-0.001-0.552-0.448-0.999-1.001-1c-0.553,0-1,0.448-1,1c0,0.553,0.449,1,1,1C8.176,16.5,8.624,16.053,8.625,15.5zM8.179,18.572c-0.478,0.277-0.642,0.889-0.365,1.367c0.275,0.479,0.889,0.641,1.365,0.365c0.479-0.275,0.643-0.887,0.367-1.367C9.27,18.461,8.658,18.297,8.179,18.572zM9.18,10.696c-0.479-0.276-1.09-0.112-1.366,0.366s-0.111,1.09,0.365,1.366c0.479,0.276,1.09,0.113,1.367-0.366C9.821,11.584,9.657,10.973,9.18,10.696zM22.822,12.428c0.478-0.275,0.643-0.888,0.366-1.366c-0.275-0.478-0.89-0.642-1.366-0.366c-0.479,0.278-0.642,0.89-0.366,1.367C21.732,12.54,22.344,12.705,22.822,12.428zM12.062,21.455c-0.478-0.275-1.089-0.111-1.366,0.367c-0.275,0.479-0.111,1.09,0.366,1.365c0.478,0.277,1.091,0.111,1.365-0.365C12.704,22.344,12.54,21.732,12.062,21.455zM12.062,9.545c0.479-0.276,0.642-0.888,0.366-1.366c-0.276-0.478-0.888-0.642-1.366-0.366s-0.642,0.888-0.366,1.366C10.973,9.658,11.584,9.822,12.062,9.545zM22.823,18.572c-0.48-0.275-1.092-0.111-1.367,0.365c-0.275,0.479-0.112,1.092,0.367,1.367c0.477,0.275,1.089,0.113,1.365-0.365C23.464,19.461,23.3,18.848,22.823,18.572zM19.938,7.813c-0.477-0.276-1.091-0.111-1.365,0.366c-0.275,0.48-0.111,1.091,0.366,1.367s1.089,0.112,1.366-0.366C20.581,8.702,20.418,8.089,19.938,7.813zM23.378,14.5c-0.554,0.002-1.001,0.45-1.001,1c0.001,0.552,0.448,1,1.001,1c0.551,0,1-0.447,1-1C24.378,14.949,23.929,14.5,23.378,14.5zM15.501,6.624c-0.552,0-1,0.448-1,1l-0.466,7.343l-3.004,1.96c-0.478,0.277-0.642,0.889-0.365,1.365c0.275,0.479,0.889,0.643,1.365,0.367l3.305-1.676C15.39,16.99,15.444,17,15.501,17c0.828,0,1.5-0.671,1.5-1.5l-0.5-7.876C16.501,7.072,16.053,6.624,15.501,6.624zM15.501,22.377c-0.552,0-1,0.447-1,1s0.448,1,1,1s1-0.447,1-1S16.053,22.377,15.501,22.377zM18.939,21.455c-0.479,0.277-0.643,0.889-0.366,1.367c0.275,0.477,0.888,0.643,1.366,0.365c0.478-0.275,0.642-0.889,0.366-1.365C20.028,21.344,19.417,21.18,18.939,21.455z"},animation_pathWingButton:{tagName:"path",d:"m 4.5,0.5 c -2.216,0 -4,1.784 -4,4 l 0,24 c 0,2.216 1.784,4 4,4 l 13.71875,0 C 22.478584,27.272785 27.273681,22.511272 32.5,18.25 l 0,-13.75 c 0,-2.216 -1.784,-4 -4,-4 l -24,0 z"},animation_pathPointer:{tagName:"path",d:"M-15,-65,-15,-55,15,-55,15,-65,0,-95z"},animation_pathSwooshFX:{tagName:"path",d:"m 85,0 c 0,16.617 -4.813944,35.356 -13.131081,48.4508 h 6.099803 c 8.317138,-13.0948 13.13322,-28.5955 13.13322,-45.2124 0,-46.94483 -38.402714,-85.00262 -85.7743869,-85.00262 -1.0218522,0 -2.0373001,0.0241 -3.0506131,0.0589 45.958443,1.59437 82.723058,35.77285 82.723058,81.70532 z"}};function Ef(e){let t=document.createElementNS(__,e.tagName);for(let n in e)if(e.hasOwnProperty(n)&&n!=="tagName")if(n==="children"){let i=e.children.length;for(let o=0;o<i;++o)t.appendChild(Ef(e.children[o]))}else n.indexOf("xlink:")===0?t.setAttributeNS(mSe,n.substring(6),e[n]):n==="textContent"?t.textContent=e[n]:t.setAttribute(n,e[n]);return t}function see(e,t,n){let i=document.createElementNS(__,"text");i.setAttribute("x",e),i.setAttribute("y",t),i.setAttribute("class","cesium-animation-svgText");let o=document.createElementNS(__,"tspan");return o.textContent=n,i.appendChild(o),i}function H1t(e,t,n){e.setAttribute("transform",`translate(100,100) rotate(${n})`),t.setAttribute("transform",`rotate(${n})`)}var o3=new U;function Ss(e,t){let n=t.alpha,i=1-n;return o3.red=e.red*i+t.red*n,o3.green=e.green*i+t.green*n,o3.blue=e.blue*i+t.blue*n,o3.toCssColorString()}function aee(e,t,n){let i=XN[n],o={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${e},${t})`,children:[{tagName:"rect",class:"cesium-animation-buttonGlow",width:32,height:32,rx:2,ry:2},{tagName:"rect",class:"cesium-animation-buttonMain",width:32,height:32,rx:4,ry:4},{class:"cesium-animation-buttonPath",id:n,tagName:i.tagName,transform:i.transform,d:i.d},{tagName:"title",textContent:""}]};return Ef(o)}function z1t(e,t,n){let i=XN[n],o=XN.animation_pathWingButton,r={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${e},${t})`,children:[{class:"cesium-animation-buttonGlow",id:"animation_pathWingButton",tagName:o.tagName,d:o.d},{class:"cesium-animation-buttonMain",id:"animation_pathWingButton",tagName:o.tagName,d:o.d},{class:"cesium-animation-buttonPath",id:n,tagName:i.tagName,transform:i.transform,d:i.d},{tagName:"title",textContent:""}]};return Ef(r)}function K1t(e,t){let n=e._viewModel,i=n.shuttleRingDragging;if(!(i&&t3!==e))if(t.type==="mousedown"||i&&t.type==="mousemove"||t.type==="touchstart"&&t.touches.length===1||i&&t.type==="touchmove"&&t.touches.length===1){let o=e._centerX,r=e._centerY,a=e._svgNode.getBoundingClientRect(),c,d;if(t.type==="touchstart"||t.type==="touchmove"?(c=t.touches[0].clientX,d=t.touches[0].clientY):(c=t.clientX,d=t.clientY),!i&&(c>a.right||c<a.left||d<a.top||d>a.bottom))return;let u=e._shuttleRingPointer.getBoundingClientRect(),h=c-o-a.left,p=d-r-a.top,g=Math.atan2(p,h)*180/Math.PI+90;g>180&&(g-=360);let f=n.shuttleRingAngle;i||c<u.right&&c>u.left&&d>u.top&&d<u.bottom?(t3=e,n.shuttleRingDragging=!0,n.shuttleRingAngle=g):g<f?n.slower():g>f&&n.faster(),t.preventDefault()}else e===t3&&(t3=void 0),n.shuttleRingDragging=!1}function ab(e,t){this._viewModel=t,this.svgElement=e,this._enabled=void 0,this._toggled=void 0;let n=this;this._clickFunction=function(){let i=n._viewModel.command;i.canExecute&&i()},e.addEventListener("click",this._clickFunction,!0),this._subscriptions=[$a(t,"toggled",this.setToggled,this),$a(t,"tooltip",this.setTooltip,this),$a(t.command,"canExecute",this.setEnabled,this)]}ab.prototype.destroy=function(){this.svgElement.removeEventListener("click",this._clickFunction,!0);let e=this._subscriptions;for(let t=0,n=e.length;t<n;t++)e[t].dispose();me(this)};ab.prototype.isDestroyed=function(){return!1};ab.prototype.setEnabled=function(e){if(this._enabled!==e){if(this._enabled=e,!e){this.svgElement.setAttribute("class","cesium-animation-buttonDisabled");return}if(this._toggled){this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled");return}this.svgElement.setAttribute("class","cesium-animation-rectButton")}};ab.prototype.setToggled=function(e){this._toggled!==e&&(this._toggled=e,this._enabled&&(e?this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled"):this.svgElement.setAttribute("class","cesium-animation-rectButton")))};ab.prototype.setTooltip=function(e){this.svgElement.getElementsByTagName("title")[0].textContent=e};function OL(e,t){e=Dn(e),this._viewModel=t,this._container=e,this._centerX=0,this._centerY=0,this._defsElement=void 0,this._svgNode=void 0,this._topG=void 0,this._lastHeight=void 0,this._lastWidth=void 0;let n=e.ownerDocument,i=document.createElement("style");i.textContent=".cesium-animation-rectButton .cesium-animation-buttonGlow { filter: url(#animation_blurred); }.cesium-animation-rectButton .cesium-animation-buttonMain { fill: url(#animation_buttonNormal); }.cesium-animation-buttonToggled .cesium-animation-buttonMain { fill: url(#animation_buttonToggled); }.cesium-animation-rectButton:hover .cesium-animation-buttonMain { fill: url(#animation_buttonHovered); }.cesium-animation-buttonDisabled .cesium-animation-buttonMain { fill: url(#animation_buttonDisabled); }.cesium-animation-shuttleRingG .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshGradient); }.cesium-animation-shuttleRingG:hover .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshHovered); }.cesium-animation-shuttleRingPointer { fill: url(#animation_shuttleRingPointerGradient); }.cesium-animation-shuttleRingPausePointer { fill: url(#animation_shuttleRingPointerPaused); }.cesium-animation-knobOuter { fill: url(#animation_knobOuter); }.cesium-animation-knobInner { fill: url(#animation_knobInner); }",n.head.insertBefore(i,n.head.childNodes[0]);let o=document.createElement("div");o.className="cesium-animation-theme",o.innerHTML='<div class="cesium-animation-themeNormal"></div><div class="cesium-animation-themeHover"></div><div class="cesium-animation-themeSelect"></div><div class="cesium-animation-themeDisabled"></div><div class="cesium-animation-themeKnob"></div><div class="cesium-animation-themePointer"></div><div class="cesium-animation-themeSwoosh"></div><div class="cesium-animation-themeSwooshHover"></div>',this._theme=o,this._themeNormal=o.childNodes[0],this._themeHover=o.childNodes[1],this._themeSelect=o.childNodes[2],this._themeDisabled=o.childNodes[3],this._themeKnob=o.childNodes[4],this._themePointer=o.childNodes[5],this._themeSwoosh=o.childNodes[6],this._themeSwooshHover=o.childNodes[7];let r=document.createElementNS(__,"svg:svg");this._svgNode=r,r.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",mSe);let s=document.createElementNS(__,"g");this._topG=s,this._realtimeSVG=new ab(z1t(3,4,"animation_pathClock"),t.playRealtimeViewModel),this._playReverseSVG=new ab(aee(44,99,"animation_pathPlayReverse"),t.playReverseViewModel),this._playForwardSVG=new ab(aee(124,99,"animation_pathPlay"),t.playForwardViewModel),this._pauseSVG=new ab(aee(84,99,"animation_pathPause"),t.pauseViewModel);let a=document.createElementNS(__,"g");a.appendChild(this._realtimeSVG.svgElement),a.appendChild(this._playReverseSVG.svgElement),a.appendChild(this._playForwardSVG.svgElement),a.appendChild(this._pauseSVG.svgElement);let c=Ef({tagName:"circle",class:"cesium-animation-shuttleRingBack",cx:100,cy:100,r:99});this._shuttleRingBackPanel=c;let d=XN.animation_pathSwooshFX,u=XN.animation_pathPointer,h=Ef({tagName:"g",class:"cesium-animation-shuttleRingSwoosh",children:[{tagName:d.tagName,transform:"translate(100,97) scale(-1,1)",id:"animation_pathSwooshFX",d:d.d},{tagName:d.tagName,transform:"translate(100,97)",id:"animation_pathSwooshFX",d:d.d},{tagName:"line",x1:100,y1:8,x2:100,y2:22}]});this._shuttleRingSwooshG=h,this._shuttleRingPointer=Ef({class:"cesium-animation-shuttleRingPointer",id:"animation_pathPointer",tagName:u.tagName,d:u.d});let p=Ef({tagName:"g",transform:"translate(100,100)"});this._knobOuter=Ef({tagName:"circle",class:"cesium-animation-knobOuter",cx:0,cy:0,r:71});let g=61,f=Ef({tagName:"circle",class:"cesium-animation-knobInner",cx:0,cy:0,r:g});this._knobDate=see(0,-24,""),this._knobTime=see(0,-7,""),this._knobStatus=see(0,-41,"");let b=Ef({tagName:"circle",class:"cesium-animation-blank",cx:0,cy:0,r:g}),x=document.createElementNS(__,"g");x.setAttribute("class","cesium-animation-shuttleRingG"),e.appendChild(o),s.appendChild(x),s.appendChild(p),s.appendChild(a),x.appendChild(c),x.appendChild(h),x.appendChild(this._shuttleRingPointer),p.appendChild(this._knobOuter),p.appendChild(f),p.appendChild(this._knobDate),p.appendChild(this._knobTime),p.appendChild(this._knobStatus),p.appendChild(b),r.appendChild(s),e.appendChild(r);let I=this;function _(B){K1t(I,B)}this._mouseCallback=_,c.addEventListener("mousedown",_,!0),c.addEventListener("touchstart",_,!0),h.addEventListener("mousedown",_,!0),h.addEventListener("touchstart",_,!0),n.addEventListener("mousemove",_,!0),n.addEventListener("touchmove",_,!0),n.addEventListener("mouseup",_,!0),n.addEventListener("touchend",_,!0),n.addEventListener("touchcancel",_,!0),this._shuttleRingPointer.addEventListener("mousedown",_,!0),this._shuttleRingPointer.addEventListener("touchstart",_,!0),this._knobOuter.addEventListener("mousedown",_,!0),this._knobOuter.addEventListener("touchstart",_,!0);let E=this._knobTime.childNodes[0],S=this._knobDate.childNodes[0],R=this._knobStatus.childNodes[0],G;this._subscriptions=[$a(t.pauseViewModel,"toggled",function(B){G!==B&&(G=B,G?I._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPausePointer"):I._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPointer"))}),$a(t,"shuttleRingAngle",function(B){H1t(I._shuttleRingPointer,I._knobOuter,B)}),$a(t,"dateLabel",function(B){S.textContent!==B&&(S.textContent=B)}),$a(t,"timeLabel",function(B){E.textContent!==B&&(E.textContent=B)}),$a(t,"multiplierLabel",function(B){R.textContent!==B&&(R.textContent=B)})],this.applyThemeChanges(),this.resize()}Object.defineProperties(OL.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});OL.prototype.isDestroyed=function(){return!1};OL.prototype.destroy=function(){l(this._observer)&&(this._observer.disconnect(),this._observer=void 0);let e=this._container.ownerDocument,t=this._mouseCallback;this._shuttleRingBackPanel.removeEventListener("mousedown",t,!0),this._shuttleRingBackPanel.removeEventListener("touchstart",t,!0),this._shuttleRingSwooshG.removeEventListener("mousedown",t,!0),this._shuttleRingSwooshG.removeEventListener("touchstart",t,!0),e.removeEventListener("mousemove",t,!0),e.removeEventListener("touchmove",t,!0),e.removeEventListener("mouseup",t,!0),e.removeEventListener("touchend",t,!0),e.removeEventListener("touchcancel",t,!0),this._shuttleRingPointer.removeEventListener("mousedown",t,!0),this._shuttleRingPointer.removeEventListener("touchstart",t,!0),this._knobOuter.removeEventListener("mousedown",t,!0),this._knobOuter.removeEventListener("touchstart",t,!0),this._container.removeChild(this._svgNode),this._container.removeChild(this._theme),this._realtimeSVG.destroy(),this._playReverseSVG.destroy(),this._playForwardSVG.destroy(),this._pauseSVG.destroy();let n=this._subscriptions;for(let i=0,o=n.length;i<o;i++)n[i].dispose();return me(this)};OL.prototype.resize=function(){let e=this._container.clientWidth,t=this._container.clientHeight;if(e===this._lastWidth&&t===this._lastHeight)return;let n=this._svgNode,i=200,o=132,r=e,s=t;e===0&&t===0?(r=i,s=o):e===0?(s=t,r=i*(t/o)):t===0&&(r=e,s=o*(e/i));let a=r/i,c=s/o;n.style.cssText=`width: ${r}px; height: ${s}px; position: absolute; bottom: 0; left: 0; overflow: hidden;`,n.setAttribute("width",r),n.setAttribute("height",s),n.setAttribute("viewBox",`0 0 ${r} ${s}`),this._topG.setAttribute("transform",`scale(${a},${c})`),this._centerX=Math.max(1,100*a),this._centerY=Math.max(1,100*c),this._lastHeight=e,this._lastWidth=t};OL.prototype.applyThemeChanges=function(){let e=this._container.ownerDocument;if(!e.body.contains(this._container)){if(l(this._observer))return;let u=this;u._observer=new MutationObserver(function(){e.body.contains(u._container)&&(u._observer.disconnect(),u._observer=void 0,u.applyThemeChanges())}),u._observer.observe(e,{childList:!0,subtree:!0});return}let t=Gy(this._themeNormal),n=Gy(this._themeHover),i=Gy(this._themeSelect),o=Gy(this._themeDisabled),r=Gy(this._themeKnob),s=Gy(this._themePointer),a=Gy(this._themeSwoosh),c=Gy(this._themeSwooshHover),d=Ef({tagName:"defs",children:[{id:"animation_buttonNormal",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Ss(t,wN)},{tagName:"stop",offset:"12%","stop-color":Ss(t,n3)},{tagName:"stop",offset:"46%","stop-color":Ss(t,ree)},{tagName:"stop",offset:"81%","stop-color":Ss(t,i3)}]},{id:"animation_buttonHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Ss(n,wN)},{tagName:"stop",offset:"12%","stop-color":Ss(n,n3)},{tagName:"stop",offset:"46%","stop-color":Ss(n,ree)},{tagName:"stop",offset:"81%","stop-color":Ss(n,i3)}]},{id:"animation_buttonToggled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Ss(i,wN)},{tagName:"stop",offset:"12%","stop-color":Ss(i,n3)},{tagName:"stop",offset:"46%","stop-color":Ss(i,ree)},{tagName:"stop",offset:"81%","stop-color":Ss(i,i3)}]},{id:"animation_buttonDisabled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Ss(o,Y1t)},{tagName:"stop",offset:"75%","stop-color":Ss(o,O1t)}]},{id:"animation_blurred",tagName:"filter",width:"200%",height:"200%",x:"-50%",y:"-50%",children:[{tagName:"feGaussianBlur",stdDeviation:4,in:"SourceGraphic"}]},{id:"animation_shuttleRingSwooshGradient",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":a.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":a.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":a.toCssColorString()}]},{id:"animation_shuttleRingSwooshHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":c.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":c.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":c.toCssColorString()}]},{id:"animation_shuttleRingPointerGradient",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":s.toCssColorString()},{tagName:"stop",offset:"40%","stop-color":s.toCssColorString()},{tagName:"stop",offset:"60%","stop-color":Ss(s,uSe)},{tagName:"stop",offset:"100%","stop-color":Ss(s,uSe)}]},{id:"animation_shuttleRingPointerPaused",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":"#CCC"},{tagName:"stop",offset:"40%","stop-color":"#CCC"},{tagName:"stop",offset:"60%","stop-color":"#555"},{tagName:"stop",offset:"100%","stop-color":"#555"}]},{id:"animation_knobOuter",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":Ss(r,wN)},{tagName:"stop",offset:"60%","stop-color":Ss(r,dSe)},{tagName:"stop",offset:"85%","stop-color":Ss(r,n3)}]},{id:"animation_knobInner",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":Ss(r,dSe)},{tagName:"stop",offset:"60%","stop-color":Ss(r,wN)},{tagName:"stop",offset:"85%","stop-color":Ss(r,i3)}]}]});l(this._defsElement)?this._svgNode.replaceChild(d,this._defsElement):this._svgNode.appendChild(d),this._defsElement=d};var WN=OL;var Cwo=y(C(),1);var J1t=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],Zy=15,HL=105;function hSe(e,t){return e-t}function cee(e,t){let n=Yo(t,e,hSe);return n<0?~n:n}function j1t(e,t){if(Math.abs(e)<=Zy)return e/Zy;let n=Zy,i=HL,o,r=0,s;return e>0?(o=Math.log(t[t.length-1]),s=(o-r)/(i-n),Math.exp(r+s*(e-n))):(o=Math.log(-t[0]),s=(o-r)/(i-n),-Math.exp(r+s*(Math.abs(e)-n)))}function q1t(e,t,n){if(n.clockStep===Ro.SYSTEM_CLOCK)return Zy;if(Math.abs(e)<=1)return e*Zy;let i=t[t.length-1];e>i?e=i:e<-i&&(e=-i);let o=Zy,r=HL,s,a=0,c;return e>0?(s=Math.log(i),c=(s-a)/(r-o),(Math.log(e)-a)/c+o):(s=Math.log(-t[0]),c=(s-a)/(r-o),-((Math.log(Math.abs(e))-a)/c+o))}function Om(e){let t=this;this._clockViewModel=e,this._allShuttleRingTicks=[],this._dateFormatter=Om.defaultDateFormatter,this._timeFormatter=Om.defaultTimeFormatter,this.shuttleRingDragging=!1,this.snapToTicks=!1,Ee.track(this,["_allShuttleRingTicks","_dateFormatter","_timeFormatter","shuttleRingDragging","snapToTicks"]),this._sortedFilteredPositiveTicks=[],this.setShuttleRingTicks(Om.defaultTicks),this.timeLabel=void 0,Ee.defineProperty(this,"timeLabel",function(){return t._timeFormatter(t._clockViewModel.currentTime,t)}),this.dateLabel=void 0,Ee.defineProperty(this,"dateLabel",function(){return t._dateFormatter(t._clockViewModel.currentTime,t)}),this.multiplierLabel=void 0,Ee.defineProperty(this,"multiplierLabel",function(){let s=t._clockViewModel;if(s.clockStep===Ro.SYSTEM_CLOCK)return"Today";let a=s.multiplier;return a%1===0?`${a.toFixed(0)}x`:`${a.toFixed(3).replace(/0{0,3}$/,"")}x`}),this.shuttleRingAngle=void 0,Ee.defineProperty(this,"shuttleRingAngle",{get:function(){return q1t(e.multiplier,t._allShuttleRingTicks,e)},set:function(s){s=Math.max(Math.min(s,HL),-HL);let a=t._allShuttleRingTicks,c=t._clockViewModel;if(c.clockStep=Ro.SYSTEM_CLOCK_MULTIPLIER,Math.abs(s)===HL){c.multiplier=s>0?a[a.length-1]:a[0];return}let d=j1t(s,a);if(t.snapToTicks)d=a[cee(d,a)];else if(d!==0){let u=Math.abs(d);if(u>100){let h=u.toFixed(0).length-2,p=Math.pow(10,h);d=Math.round(d/p)*p|0}else u>Zy?d=Math.round(d):u>1?d=+d.toFixed(1):u>0&&(d=+d.toFixed(2))}c.multiplier=d}}),this._canAnimate=void 0,Ee.defineProperty(this,"_canAnimate",function(){let s=t._clockViewModel,a=s.clockRange;if(t.shuttleRingDragging||a===ls.UNBOUNDED)return!0;let c=s.multiplier,d=s.currentTime,u=s.startTime,h=!1;if(a===ls.LOOP_STOP)h=j.greaterThan(d,u)||d.equals(u)&&c>0;else{let p=s.stopTime;h=j.greaterThan(d,u)&&j.lessThan(d,p)||d.equals(u)&&c>0||d.equals(p)&&c<0}return h||(s.shouldAnimate=!1),h}),this._isSystemTimeAvailable=void 0,Ee.defineProperty(this,"_isSystemTimeAvailable",function(){let s=t._clockViewModel;if(s.clockRange===ls.UNBOUNDED)return!0;let c=s.systemTime;return j.greaterThanOrEquals(c,s.startTime)&&j.lessThanOrEquals(c,s.stopTime)}),this._isAnimating=void 0,Ee.defineProperty(this,"_isAnimating",function(){return t._clockViewModel.shouldAnimate&&(t._canAnimate||t.shuttleRingDragging)});let n=Xn(function(){let s=t._clockViewModel;s.shouldAnimate?s.shouldAnimate=!1:t._canAnimate&&(s.shouldAnimate=!0)});this._pauseViewModel=new Vy(n,{toggled:Ee.computed(function(){return!t._isAnimating}),tooltip:"Pause"});let i=Xn(function(){let s=t._clockViewModel,a=s.multiplier;a>0&&(s.multiplier=-a),s.shouldAnimate=!0});this._playReverseViewModel=new Vy(i,{toggled:Ee.computed(function(){return t._isAnimating&&e.multiplier<0}),tooltip:"Play Reverse"});let o=Xn(function(){let s=t._clockViewModel,a=s.multiplier;a<0&&(s.multiplier=-a),s.shouldAnimate=!0});this._playForwardViewModel=new Vy(o,{toggled:Ee.computed(function(){return t._isAnimating&&e.multiplier>0&&e.clockStep!==Ro.SYSTEM_CLOCK}),tooltip:"Play Forward"});let r=Xn(function(){t._clockViewModel.clockStep=Ro.SYSTEM_CLOCK},Ee.getObservable(this,"_isSystemTimeAvailable"));this._playRealtimeViewModel=new Vy(r,{toggled:Ee.computed(function(){return e.clockStep===Ro.SYSTEM_CLOCK}),tooltip:Ee.computed(function(){return t._isSystemTimeAvailable?"Today (real-time)":"Current time not in range"})}),this._slower=Xn(function(){let s=t._clockViewModel,a=t._allShuttleRingTicks,c=s.multiplier,d=cee(c,a)-1;d>=0&&(s.multiplier=a[d])}),this._faster=Xn(function(){let s=t._clockViewModel,a=t._allShuttleRingTicks,c=s.multiplier,d=cee(c,a)+1;d<a.length&&(s.multiplier=a[d])})}Om.defaultDateFormatter=function(e,t){let n=j.toGregorianDate(e);return`${J1t[n.month-1]} ${n.day} ${n.year}`};Om.defaultTicks=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800];Om.defaultTimeFormatter=function(e,t){let n=j.toGregorianDate(e),i=Math.round(n.millisecond);return Math.abs(t._clockViewModel.multiplier)<1?`${n.hour.toString().padStart(2,"0")}:${n.minute.toString().padStart(2,"0")}:${n.second.toString().padStart(2,"0")}.${i.toString().padStart(3,"0")}`:`${n.hour.toString().padStart(2,"0")}:${n.minute.toString().padStart(2,"0")}:${n.second.toString().padStart(2,"0")} UTC`};Om.prototype.getShuttleRingTicks=function(){return this._sortedFilteredPositiveTicks.slice(0)};Om.prototype.setShuttleRingTicks=function(e){let t,n,i,o={},r=this._sortedFilteredPositiveTicks;for(r.length=0,t=0,n=e.length;t<n;++t)i=e[t],o.hasOwnProperty(i)||(o[i]=!0,r.push(i));r.sort(hSe);let s=[];for(n=r.length,t=n-1;t>=0;--t)i=r[t],i!==0&&s.push(-i);ci(s,r),this._allShuttleRingTicks=s};Object.defineProperties(Om.prototype,{slower:{get:function(){return this._slower}},faster:{get:function(){return this._faster}},clockViewModel:{get:function(){return this._clockViewModel}},pauseViewModel:{get:function(){return this._pauseViewModel}},playReverseViewModel:{get:function(){return this._playReverseViewModel}},playForwardViewModel:{get:function(){return this._playForwardViewModel}},playRealtimeViewModel:{get:function(){return this._playRealtimeViewModel}},dateFormatter:{get:function(){return this._dateFormatter},set:function(e){this._dateFormatter=e}},timeFormatter:{get:function(){return this._timeFormatter},set:function(e){this._timeFormatter=e}}});Om._maxShuttleRingAngle=HL;Om._realtimeShuttleRingAngle=Zy;var FN=Om;var wwo=y(C(),1);var Swo=y(C(),1);function fSe(e){e=e??Y.EMPTY_OBJECT;let t=e.globe,n=e.imageryProviderViewModels??Y.EMPTY_ARRAY,i=e.terrainProviderViewModels??Y.EMPTY_ARRAY;this._globe=t,this.imageryProviderViewModels=n.slice(0),this.terrainProviderViewModels=i.slice(0),this.dropDownVisible=!1,Ee.track(this,["imageryProviderViewModels","terrainProviderViewModels","dropDownVisible"]);let o=Ee.getObservable(this,"imageryProviderViewModels"),r=Ee.pureComputed(function(){let h=o(),p={},g;for(g=0;g<h.length;g++){let x=h[g],I=x.category;l(p[I])?p[I].push(x):p[I]=[x]}let f=Object.keys(p),b=[];for(g=0;g<f.length;g++){let x=f[g];b.push({name:x,providers:p[x]})}return b});this._imageryProviders=r;let s=Ee.getObservable(this,"terrainProviderViewModels"),a=Ee.pureComputed(function(){let h=s(),p={},g;for(g=0;g<h.length;g++){let x=h[g],I=x.category;l(p[I])?p[I].push(x):p[I]=[x]}let f=Object.keys(p),b=[];for(g=0;g<f.length;g++){let x=f[g];b.push({name:x,providers:p[x]})}return b});this._terrainProviders=a,this.buttonTooltip=void 0,Ee.defineProperty(this,"buttonTooltip",function(){let h=this.selectedImagery,p=this.selectedTerrain,g=l(h)?h.name:void 0,f=l(p)?p.name:void 0;return l(g)&&l(f)?`${g} +${f}`:l(g)?g:f}),this.buttonImageUrl=void 0,Ee.defineProperty(this,"buttonImageUrl",function(){let h=this.selectedImagery;if(l(h))return h.iconUrl}),this.selectedImagery=void 0;let c=Ee.observable();this._currentImageryLayers=[],Ee.defineProperty(this,"selectedImagery",{get:function(){return c()},set:function(h){if(c()===h){this.dropDownVisible=!1;return}let p,g=this._currentImageryLayers,f=g.length,b=this._globe.imageryLayers,x=!1;for(p=0;p<f;p++){let I=b.length;for(let _=0;_<I;_++){let E=b.get(_);if(E===g[p]){b.remove(E),x=!0;break}}}if(l(h)){let I=h.creationCommand();if(Array.isArray(I)){let _=I.length;for(this._currentImageryLayers=[],p=_-1;p>=0;p--){let E=is.fromProviderAsync(I[p]);b.add(E,0),this._currentImageryLayers.push(E)}}else{this._currentImageryLayers=[];let _=is.fromProviderAsync(I);if(_.name=h.name,x)b.add(_,0);else{let E=b.get(0);l(E)&&b.remove(E),b.add(_,0)}this._currentImageryLayers.push(_)}}c(h),this.dropDownVisible=!1}}),this.selectedTerrain=void 0;let d=Ee.observable();Ee.defineProperty(this,"selectedTerrain",{get:function(){return d()},set:function(h){if(d()===h){this.dropDownVisible=!1;return}let p;if(l(h)&&(p=h.creationCommand()),l(p)&&!l(p.then))this._globe.depthTestAgainstTerrain=!(p instanceof Tp),this._globe.terrainProvider=p;else if(l(p)){let g=!1,f=this._globe.terrainProviderChanged.addEventListener(()=>{g=!0,f()}),x=new EN(p).readyEvent.addEventListener(I=>{g||(this._globe.depthTestAgainstTerrain=!(I instanceof Tp),this._globe.terrainProvider=I,x())})}d(h),this.dropDownVisible=!1}});let u=this;this._toggleDropDown=Xn(function(){u.dropDownVisible=!u.dropDownVisible}),this.selectedImagery=e.selectedImageryProviderViewModel??n[0],this.selectedTerrain=e.selectedTerrainProviderViewModel}Object.defineProperties(fSe.prototype,{toggleDropDown:{get:function(){return this._toggleDropDown}},globe:{get:function(){return this._globe}}});var PN=fSe;function r3(e,t){e=Dn(e);let n=new PN(t),i=document.createElement("button");i.type="button",i.className="cesium-button cesium-toolbar-button",i.setAttribute("data-bind","attr: { title: buttonTooltip },click: toggleDropDown"),e.appendChild(i);let o=document.createElement("img");o.setAttribute("draggable","false"),o.className="cesium-baseLayerPicker-selected",o.setAttribute("data-bind","attr: { src: buttonImageUrl }, visible: !!buttonImageUrl"),i.appendChild(o);let r=document.createElement("div");r.className="cesium-baseLayerPicker-dropDown",r.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-dropDown-visible" : dropDownVisible }'),e.appendChild(r);let s=document.createElement("div");s.className="cesium-baseLayerPicker-sectionTitle",s.setAttribute("data-bind","visible: imageryProviderViewModels.length > 0"),s.innerHTML="Imagery",r.appendChild(s);let a=document.createElement("div");a.className="cesium-baseLayerPicker-section",a.setAttribute("data-bind","foreach: _imageryProviders"),r.appendChild(a);let c=document.createElement("div");c.className="cesium-baseLayerPicker-category",a.appendChild(c);let d=document.createElement("div");d.className="cesium-baseLayerPicker-categoryTitle",d.setAttribute("data-bind","text: name"),c.appendChild(d);let u=document.createElement("div");u.className="cesium-baseLayerPicker-choices",u.setAttribute("data-bind","foreach: providers"),c.appendChild(u);let h=document.createElement("div");h.className="cesium-baseLayerPicker-item",h.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedImagery },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedImagery = $data; }'),u.appendChild(h);let p=document.createElement("img");p.className="cesium-baseLayerPicker-itemIcon",p.setAttribute("data-bind","attr: { src: iconUrl }"),p.setAttribute("draggable","false"),h.appendChild(p);let g=document.createElement("div");g.className="cesium-baseLayerPicker-itemLabel",g.setAttribute("data-bind","text: name"),h.appendChild(g);let f=document.createElement("div");f.className="cesium-baseLayerPicker-sectionTitle",f.setAttribute("data-bind","visible: terrainProviderViewModels.length > 0"),f.innerHTML="Terrain",r.appendChild(f);let b=document.createElement("div");b.className="cesium-baseLayerPicker-section",b.setAttribute("data-bind","foreach: _terrainProviders"),r.appendChild(b);let x=document.createElement("div");x.className="cesium-baseLayerPicker-category",b.appendChild(x);let I=document.createElement("div");I.className="cesium-baseLayerPicker-categoryTitle",I.setAttribute("data-bind","text: name"),x.appendChild(I);let _=document.createElement("div");_.className="cesium-baseLayerPicker-choices",_.setAttribute("data-bind","foreach: providers"),x.appendChild(_);let E=document.createElement("div");E.className="cesium-baseLayerPicker-item",E.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedTerrain },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedTerrain = $data; }'),_.appendChild(E);let S=document.createElement("img");S.className="cesium-baseLayerPicker-itemIcon",S.setAttribute("data-bind","attr: { src: iconUrl }"),S.setAttribute("draggable","false"),E.appendChild(S);let R=document.createElement("div");R.className="cesium-baseLayerPicker-itemLabel",R.setAttribute("data-bind","text: name"),E.appendChild(R),Ee.applyBindings(n,i),Ee.applyBindings(n,r),this._viewModel=n,this._container=e,this._element=i,this._dropPanel=r,this._closeDropDown=function(G){i.contains(G.target)||r.contains(G.target)||(n.dropDownVisible=!1)},Ht.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(r3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});r3.prototype.isDestroyed=function(){return!1};r3.prototype.destroy=function(){return Ht.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),Ee.cleanNode(this._element),Ee.cleanNode(this._dropPanel),this._container.removeChild(this._element),this._container.removeChild(this._dropPanel),me(this)};var MN=r3;var vwo=y(C(),1);function pSe(e){let t=e.creationFunction;l(t.canExecute)||(t=Xn(t)),this._creationCommand=t,this.name=e.name,this.tooltip=e.tooltip,this.iconUrl=e.iconUrl,this._category=e.category??"",Ee.track(this,["name","tooltip","iconUrl"])}Object.defineProperties(pSe.prototype,{creationCommand:{get:function(){return this._creationCommand}},category:{get:function(){return this._category}}});var Ls=pSe;var Uwo=y(C(),1);function $1t(){let e=[],t=devicePixelRatio>=2;return e.push(new Ls({name:"Bing Maps Aerial",iconUrl:hn("Widgets/Images/ImageryProviders/bingAerial.png"),tooltip:"Bing Maps aerial imagery, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return YA({style:kA.AERIAL})}})),e.push(new Ls({name:"Bing Maps Aerial with Labels",iconUrl:hn("Widgets/Images/ImageryProviders/bingAerialLabels.png"),tooltip:"Bing Maps aerial imagery with labels, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return YA({style:kA.AERIAL_WITH_LABELS})}})),e.push(new Ls({name:"Bing Maps Roads",iconUrl:hn("Widgets/Images/ImageryProviders/bingRoads.png"),tooltip:"Bing Maps standard road maps, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return YA({style:kA.ROAD})}})),e.push(new Ls({name:"ArcGIS World Imagery",iconUrl:hn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png"),tooltip:`ArcGIS World Imagery provides one meter or better satellite and aerial imagery in many parts of the world and lower resolution satellite imagery worldwide. The map includes 15m TerraColor imagery at small and mid-scales (~1:591M down to ~1:288k) for the world. The map features Maxar imagery at 0.3m resolution for select metropolitan areas around the world, 0.5m resolution across the United States and parts of Western Europe, and 1m resolution imagery across the rest of the world. In addition to commercial sources, the World Imagery map features high-resolution aerial photography contributed by the GIS User Community. This imagery ranges from 0.3m to 0.03m resolution (down to ~1:280 nin select communities). For more information on this map, including the terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=10df2279f9684e4a9f6a7f08febac2a9`,category:"Other",creationFunction:function(){return QA.fromBasemapType(Gh.SATELLITE,{enablePickFeatures:!1})}})),e.push(new Ls({name:"ArcGIS World Hillshade",iconUrl:hn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png"),tooltip:`ArcGIS World Hillshade map portrays elevation as an artistic hillshade. This map is designed to be used as a backdrop for topographical, soil, hydro, landcover or other outdoor recreational maps. The map was compiled from a variety of sources from several data providers. The basemap has global coverage down to a scale of ~1:72k. In select areas of the United States and Europe, coverage is available down to ~1:9k. For more information on this map, including the terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=1b243539f4514b6ba35e7d995890db1d`,category:"Other",creationFunction:function(){return QA.fromBasemapType(Gh.HILLSHADE,{enablePickFeatures:!1})}})),e.push(new Ls({name:"Esri World Ocean",iconUrl:hn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png"),tooltip:`ArcGIS World Ocean map is designed to be used as a base map by marine GIS professionals and as a reference map by anyone interested in ocean data. The base map features marine bathymetry. Land features include inland waters and roads overlaid on land cover and shaded relief imagery. The map was compiled from a variety of best available sources from several data providers, including General Bathymetric Chart of the Oceans GEBCO_08 Grid, National Oceanic and Atmospheric Administration (NOAA), and National Geographic, Garmin, HERE, Geonames.org, and Esri, and various other contributors. The base map currently provides coverage for the world down to a scale of ~1:577k, and coverage down to 1:72k in US coastal areas, and various other areas. Coverage down to ~ 1:9k is available limited areas based on regional hydrographic survey data. The base map was designed and developed by Esri. For more information on this map, including our terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=1e126e7520f9466c9ca28b8f28b5e500`,category:"Other",creationFunction:function(){return QA.fromBasemapType(Gh.OCEANS,{enablePickFeatures:!1})}})),e.push(new Ls({name:"Open\xADStreet\xADMap",iconUrl:hn("Widgets/Images/ImageryProviders/openStreetMap.png"),tooltip:`OpenStreetMap (OSM) is a collaborative project to create a free editable map of the world. +http://www.openstreetmap.org`,category:"Other",creationFunction:function(){return new sb({url:"https://tile.openstreetmap.org/"})}})),e.push(new Ls({name:"Stadia x Stamen Watercolor",iconUrl:hn("Widgets/Images/ImageryProviders/stamenWatercolor.png"),tooltip:`Based on the original basemaps created for the Knight Foundation and reminiscent of hand drawn maps, the watercolor maps from Stamen Design apply raster effect area washes and organic edges over a paper texture to add warm pop to any map. +https://docs.stadiamaps.com/map-styles/stamen-watercolor/`,category:"Other",creationFunction:function(){return new sb({url:"https://tiles.stadiamaps.com/tiles/stamen_watercolor/",fileExtension:"jpg",credit:`© <a href="https://stamen.com/" target="_blank">Stamen Design</a> + © <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Ls({name:"Stadia x Stamen Toner",iconUrl:hn("Widgets/Images/ImageryProviders/stamenToner.png"),tooltip:`Based on the original basemaps created for the Knight Foundation and the most popular of the excellent styles from Stamen Design, these high-contrast B+W (black and white) maps are the perfect backdrop for your colorful and eye-catching overlays. +https://docs.stadiamaps.com/map-styles/stamen-toner/`,category:"Other",creationFunction:function(){return new sb({url:"https://tiles.stadiamaps.com/tiles/stamen_toner/",retinaTiles:t,credit:`© <a href="https://stamen.com/" target="_blank">Stamen Design</a> + © <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Ls({name:"Stadia Alidade Smooth",iconUrl:hn("Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png"),tooltip:`Stadia's custom Alidade Smooth style is designed for maps that use a lot of markers or overlays. It features a muted color scheme and fewer points of interest to allow your added data to shine. +https://docs.stadiamaps.com/map-styles/alidade-smooth/`,category:"Other",creationFunction:function(){return new sb({url:"https://tiles.stadiamaps.com/tiles/alidade_smooth/",retinaTiles:t,credit:`© <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Ls({name:"Stadia Alidade Smooth Dark",iconUrl:hn("Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png"),tooltip:`Stadia Alidade Smooth Dark, like its lighter cousin, is also designed to stay out of the way. It just flips the dark mode switch on the color scheme. With the lights out, your data can now literally shine. +https://docs.stadiamaps.com/map-styles/alidade-smooth-dark/`,category:"Other",creationFunction:function(){return new sb({url:"https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/",retinaTiles:t,credit:`© <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Ls({name:"Sentinel-2",iconUrl:hn("Widgets/Images/ImageryProviders/sentinel-2.png"),tooltip:"Sentinel-2 cloudless by EOX IT Services GmbH (Contains modified Copernicus Sentinel data 2016 and 2017).",category:"Cesium ion",creationFunction:function(){return UA.fromAssetId(3954)}})),e.push(new Ls({name:"Blue Marble",iconUrl:hn("Widgets/Images/ImageryProviders/blueMarble.png"),tooltip:"Blue Marble Next Generation July, 2004 imagery from NASA.",category:"Cesium ion",creationFunction:function(){return UA.fromAssetId(3845)}})),e.push(new Ls({name:"Earth at night",iconUrl:hn("Widgets/Images/ImageryProviders/earthAtNight.png"),tooltip:"The Earth at night, also known as The Black Marble, is a 500 meter resolution global composite imagery layer released by NASA.",category:"Cesium ion",creationFunction:function(){return UA.fromAssetId(3812)}})),e.push(new Ls({name:"Natural Earth\xA0II",iconUrl:hn("Widgets/Images/ImageryProviders/naturalEarthII.png"),tooltip:`Natural Earth II, darkened for contrast. +http://www.naturalearthdata.com/`,category:"Cesium ion",creationFunction:function(){return u0.fromUrl(hn("Assets/Textures/NaturalEarthII"))}})),e}var vN=$1t;var Hwo=y(C(),1);function eRt(){let e=[];return e.push(new Ls({name:"WGS84 Ellipsoid",iconUrl:hn("Widgets/Images/TerrainProviders/Ellipsoid.png"),tooltip:"WGS84 standard ellipsoid, also known as EPSG:4326",category:"Cesium ion",creationFunction:function(){return new Tp({ellipsoid:ie.WGS84})}})),e.push(new Ls({name:"Cesium World Terrain",iconUrl:hn("Widgets/Images/TerrainProviders/CesiumWorldTerrain.png"),tooltip:"High-resolution global terrain tileset curated from several datasources and hosted by Cesium ion",category:"Cesium ion",creationFunction:function(){return h_({requestWaterMask:!0,requestVertexNormals:!0})}})),e}var NN=eRt;var rXo=y(C(),1);var qwo=y(C(),1);function tRt(e){return function(t){let n=e._scene.pick(t.position);l(n)&&n.primitive instanceof Ps&&(e.tileset=n.primitive),e.pickActive=!1}}function gSe(e,t){t?e._eventHandler.setInputAction(function(n){let i=e._scene.pick(n.endPosition);l(i)&&i.primitive instanceof Ps&&(e.tileset=i.primitive)},Zn.MOUSE_MOVE):(e._eventHandler.removeInputAction(Zn.MOUSE_MOVE),e.picking=e.picking)}var nRt={maximumFractionDigits:3};function DN(e){let t=e/1048576;return t<1?t.toLocaleString(void 0,nRt):Math.round(t).toLocaleString()}function QN(e,t){if(!l(e))return"";let n=t?e._statisticsPerPass[zo.PICK]:e._statisticsPerPass[zo.RENDER],i='<ul class="cesium-cesiumInspector-statistics">';return i+=`<li><strong>Visited: </strong>${n.visited.toLocaleString()}</li><li><strong>Selected: </strong>${n.selected.toLocaleString()}</li><li><strong>Commands: </strong>${n.numberOfCommands.toLocaleString()}</li>`,i+="</ul>",t||(i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Requests: </strong>${n.numberOfPendingRequests.toLocaleString()}</li><li><strong>Attempted: </strong>${n.numberOfAttemptedRequests.toLocaleString()}</li><li><strong>Processing: </strong>${n.numberOfTilesProcessing.toLocaleString()}</li><li><strong>Content Ready: </strong>${n.numberOfTilesWithContentReady.toLocaleString()}</li><li><strong>Total: </strong>${n.numberOfTilesTotal.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Features Selected: </strong>${n.numberOfFeaturesSelected.toLocaleString()}</li><li><strong>Features Loaded: </strong>${n.numberOfFeaturesLoaded.toLocaleString()}</li><li><strong>Points Selected: </strong>${n.numberOfPointsSelected.toLocaleString()}</li><li><strong>Points Loaded: </strong>${n.numberOfPointsLoaded.toLocaleString()}</li><li><strong>Triangles Selected: </strong>${n.numberOfTrianglesSelected.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Tiles styled: </strong>${n.numberOfTilesStyled.toLocaleString()}</li><li><strong>Features styled: </strong>${n.numberOfFeaturesStyled.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Children Union Culled: </strong>${n.numberOfTilesCulledWithChildrenUnion.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Geometry Memory (MB): </strong>${DN(n.geometryByteLength)}</li><li><strong>Texture Memory (MB): </strong>${DN(n.texturesByteLength)}</li><li><strong>Batch Table Memory (MB): </strong>${DN(n.batchTableByteLength)}</li>`,i+="</ul>"),i}function bSe(){let e=Mi.statistics;return` + <ul class="cesium-cesiumInspector-statistics"> + <li><strong>Geometry Memory (MB): </strong>${DN(e.geometryByteLength)}</li> + <li><strong>Texture Memory (MB): </strong>${DN(e.texturesByteLength)}</li> + </ul> + `}var iRt=[{text:"Highlight",value:ed.HIGHLIGHT},{text:"Replace",value:ed.REPLACE},{text:"Mix",value:ed.MIX}],ASe=new U(1,1,0,.4),oRt=new U,s3=new U;function ec(e,t){let n=this,i=e.canvas;this._eventHandler=new Su(i),this._scene=e,this._performanceContainer=t,this._canvas=i,this._performanceDisplay=new kg({container:t}),this._statisticsText="",this._pickStatisticsText="",this._resourceCacheStatisticsText="",this._editorError="",this.performance=!1,this.showStatistics=!0,this.showPickStatistics=!0,this.showResourceCacheStatistics=!1,this.inspectorVisible=!0,this.tilesetVisible=!1,this.displayVisible=!1,this.updateVisible=!1,this.loggingVisible=!1,this.styleVisible=!1,this.tileDebugLabelsVisible=!1,this.optimizationVisible=!1,this.styleString="{}",this.hasEnabledWireframe=!1,this._tileset=void 0,this._feature=void 0,this._tile=void 0,Ee.track(this,["performance","inspectorVisible","_statisticsText","_pickStatisticsText","_resourceCacheStatisticsText","_editorError","showPickStatistics","showStatistics","showResourceCacheStatistics","tilesetVisible","displayVisible","updateVisible","loggingVisible","styleVisible","optimizationVisible","tileDebugLabelsVisible","styleString","_feature","_tile","_tileset","hasEnabledWireframe"]),this._properties=Ee.observable({}),this.properties=[],Ee.defineProperty(this,"properties",function(){let v=[],O=n._properties();for(let H in O)O.hasOwnProperty(H)&&v.push(H);return v});let o=Ee.observable();Ee.defineProperty(this,"dynamicScreenSpaceError",{get:function(){return o()},set:function(v){o(v),l(n._tileset)&&(n._tileset.dynamicScreenSpaceError=v)}}),this.dynamicScreenSpaceError=!1;let r=Ee.observable();Ee.defineProperty(this,"colorBlendMode",{get:function(){return r()},set:function(v){r(v),l(n._tileset)&&(n._tileset.colorBlendMode=v,n._scene.requestRender())}}),this.colorBlendMode=ed.HIGHLIGHT;let s=Ee.observable(),a=Ee.observable();Ee.defineProperty(this,"picking",{get:function(){return a()},set:function(v){a(v),v?n._eventHandler.setInputAction(function(O){let H=e.pick(O.endPosition);if(H instanceof ma?(n.feature=H,n.tile=H.content.tile):l(H)&&l(H.content)?(n.feature=void 0,n.tile=H.content.tile):(n.feature=void 0,n.tile=void 0),!!l(n._tileset)){if(s&&l(H)&&l(H.content)){let ee;e.pickPositionSupported&&(ee=e.pickPosition(O.endPosition),l(ee)&&(n._tileset.debugPickPosition=ee)),n._tileset.debugPickedTile=H.content.tile}else n._tileset.debugPickedTile=void 0;n._scene.requestRender()}},Zn.MOUSE_MOVE):(n.feature=void 0,n.tile=void 0,n._eventHandler.removeInputAction(Zn.MOUSE_MOVE))}}),this.picking=!0;let c=Ee.observable();Ee.defineProperty(this,"colorize",{get:function(){return c()},set:function(v){c(v),l(n._tileset)&&(n._tileset.debugColorizeTiles=v,n._scene.requestRender())}}),this.colorize=!1;let d=Ee.observable();Ee.defineProperty(this,"wireframe",{get:function(){return d()},set:function(v){d(v),l(n._tileset)&&(n._tileset.debugWireframe=v,n._scene.requestRender())}}),this.wireframe=!1;let u=Ee.observable();Ee.defineProperty(this,"showBoundingVolumes",{get:function(){return u()},set:function(v){u(v),l(n._tileset)&&(n._tileset.debugShowBoundingVolume=v,n._scene.requestRender())}}),this.showBoundingVolumes=!1;let h=Ee.observable();Ee.defineProperty(this,"showContentBoundingVolumes",{get:function(){return h()},set:function(v){h(v),l(n._tileset)&&(n._tileset.debugShowContentBoundingVolume=v,n._scene.requestRender())}}),this.showContentBoundingVolumes=!1;let p=Ee.observable();Ee.defineProperty(this,"showRequestVolumes",{get:function(){return p()},set:function(v){p(v),l(n._tileset)&&(n._tileset.debugShowViewerRequestVolume=v,n._scene.requestRender())}}),this.showRequestVolumes=!1;let g=Ee.observable();Ee.defineProperty(this,"freezeFrame",{get:function(){return g()},set:function(v){g(v),l(n._tileset)&&(n._tileset.debugFreezeFrame=v,n._scene.debugShowFrustumPlanes=v,n._scene.requestRender())}}),this.freezeFrame=!1,Ee.defineProperty(this,"showOnlyPickedTileDebugLabel",{get:function(){return s()},set:function(v){s(v),l(n._tileset)&&(n._tileset.debugPickedTileLabelOnly=v,n._scene.requestRender())}}),this.showOnlyPickedTileDebugLabel=!1;let f=Ee.observable();Ee.defineProperty(this,"showGeometricError",{get:function(){return f()},set:function(v){f(v),l(n._tileset)&&(n._tileset.debugShowGeometricError=v,n._scene.requestRender())}}),this.showGeometricError=!1;let b=Ee.observable();Ee.defineProperty(this,"showRenderingStatistics",{get:function(){return b()},set:function(v){b(v),l(n._tileset)&&(n._tileset.debugShowRenderingStatistics=v,n._scene.requestRender())}}),this.showRenderingStatistics=!1;let x=Ee.observable();Ee.defineProperty(this,"showMemoryUsage",{get:function(){return x()},set:function(v){x(v),l(n._tileset)&&(n._tileset.debugShowMemoryUsage=v,n._scene.requestRender())}}),this.showMemoryUsage=!1;let I=Ee.observable();Ee.defineProperty(this,"showUrl",{get:function(){return I()},set:function(v){I(v),l(n._tileset)&&(n._tileset.debugShowUrl=v,n._scene.requestRender())}}),this.showUrl=!1;let _=Ee.observable();Ee.defineProperty(this,"maximumScreenSpaceError",{get:function(){return _()},set:function(v){v=Number(v),isNaN(v)||(_(v),l(n._tileset)&&(n._tileset.maximumScreenSpaceError=v))}}),this.maximumScreenSpaceError=16;let E=Ee.observable();Ee.defineProperty(this,"dynamicScreenSpaceErrorDensity",{get:function(){return E()},set:function(v){v=Number(v),isNaN(v)||(E(v),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorDensity=v))}}),this.dynamicScreenSpaceErrorDensity=2e-4,this.dynamicScreenSpaceErrorDensitySliderValue=void 0,Ee.defineProperty(this,"dynamicScreenSpaceErrorDensitySliderValue",{get:function(){return Math.pow(E(),1/6)},set:function(v){let O=Math.pow(v,6);E(O),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorDensity=O)}});let S=Ee.observable();Ee.defineProperty(this,"dynamicScreenSpaceErrorFactor",{get:function(){return S()},set:function(v){v=Number(v),isNaN(v)||(S(v),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorFactor=v))}}),this.dynamicScreenSpaceErrorFactor=24;let R=tRt(this),G=Ee.observable();Ee.defineProperty(this,"pickActive",{get:function(){return G()},set:function(v){G(v),v?n._eventHandler.setInputAction(R,Zn.LEFT_CLICK):n._eventHandler.removeInputAction(Zn.LEFT_CLICK)}});let B=Ee.observable();Ee.defineProperty(this,"pointCloudShading",{get:function(){return B()},set:function(v){B(v),l(n._tileset)&&(n._tileset.pointCloudShading.attenuation=v)}}),this.pointCloudShading=!1;let w=Ee.observable();Ee.defineProperty(this,"geometricErrorScale",{get:function(){return w()},set:function(v){v=Number(v),isNaN(v)||(w(v),l(n._tileset)&&(n._tileset.pointCloudShading.geometricErrorScale=v))}}),this.geometricErrorScale=1;let F=Ee.observable();Ee.defineProperty(this,"maximumAttenuation",{get:function(){return F()},set:function(v){v=Number(v),isNaN(v)||(F(v),l(n._tileset)&&(n._tileset.pointCloudShading.maximumAttenuation=v===0?void 0:v))}}),this.maximumAttenuation=0;let P=Ee.observable();Ee.defineProperty(this,"baseResolution",{get:function(){return P()},set:function(v){v=Number(v),isNaN(v)||(P(v),l(n._tileset)&&(n._tileset.pointCloudShading.baseResolution=v===0?void 0:v))}}),this.baseResolution=0;let A=Ee.observable();Ee.defineProperty(this,"eyeDomeLighting",{get:function(){return A()},set:function(v){A(v),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLighting=v)}}),this.eyeDomeLighting=!1;let T=Ee.observable();Ee.defineProperty(this,"eyeDomeLightingStrength",{get:function(){return T()},set:function(v){v=Number(v),isNaN(v)||(T(v),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLightingStrength=v))}}),this.eyeDomeLightingStrength=1;let L=Ee.observable();Ee.defineProperty(this,"eyeDomeLightingRadius",{get:function(){return L()},set:function(v){v=Number(v),isNaN(v)||(L(v),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLightingRadius=v))}}),this.eyeDomeLightingRadius=1,this.pickActive=!1;let V=Ee.observable();Ee.defineProperty(this,"skipLevelOfDetail",{get:function(){return V()},set:function(v){V(v),l(n._tileset)&&(n._tileset.skipLevelOfDetail=v)}}),this.skipLevelOfDetail=!0;let W=Ee.observable();Ee.defineProperty(this,"skipScreenSpaceErrorFactor",{get:function(){return W()},set:function(v){v=Number(v),isNaN(v)||(W(v),l(n._tileset)&&(n._tileset.skipScreenSpaceErrorFactor=v))}}),this.skipScreenSpaceErrorFactor=16;let M=Ee.observable();Ee.defineProperty(this,"baseScreenSpaceError",{get:function(){return M()},set:function(v){v=Number(v),isNaN(v)||(M(v),l(n._tileset)&&(n._tileset.baseScreenSpaceError=v))}}),this.baseScreenSpaceError=1024;let Q=Ee.observable();Ee.defineProperty(this,"skipLevels",{get:function(){return Q()},set:function(v){v=Number(v),isNaN(v)||(Q(v),l(n._tileset)&&(n._tileset.skipLevels=v))}}),this.skipLevels=1;let N=Ee.observable();Ee.defineProperty(this,"immediatelyLoadDesiredLevelOfDetail",{get:function(){return N()},set:function(v){N(v),l(n._tileset)&&(n._tileset.immediatelyLoadDesiredLevelOfDetail=v)}}),this.immediatelyLoadDesiredLevelOfDetail=!1;let k=Ee.observable();Ee.defineProperty(this,"loadSiblings",{get:function(){return k()},set:function(v){k(v),l(n._tileset)&&(n._tileset.loadSiblings=v)}}),this.loadSiblings=!1,this._style=void 0,this._shouldStyle=!1,this._definedProperties=["properties","dynamicScreenSpaceError","colorBlendMode","picking","colorize","wireframe","showBoundingVolumes","showContentBoundingVolumes","showRequestVolumes","freezeFrame","maximumScreenSpaceError","dynamicScreenSpaceErrorDensity","baseScreenSpaceError","skipScreenSpaceErrorFactor","skipLevelOfDetail","skipLevels","immediatelyLoadDesiredLevelOfDetail","loadSiblings","dynamicScreenSpaceErrorDensitySliderValue","dynamicScreenSpaceErrorFactor","pickActive","showOnlyPickedTileDebugLabel","showGeometricError","showRenderingStatistics","showMemoryUsage","showUrl","pointCloudShading","geometricErrorScale","maximumAttenuation","baseResolution","eyeDomeLighting","eyeDomeLightingStrength","eyeDomeLightingRadius"],this._removePostRenderEvent=e.postRender.addEventListener(function(){n._update()}),l(this._tileset)||gSe(this,!0)}Object.defineProperties(ec.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},statisticsText:{get:function(){return this._statisticsText}},pickStatisticsText:{get:function(){return this._pickStatisticsText}},resourceCacheStatisticsText:{get:function(){return this._resourceCacheStatisticsText}},colorBlendModes:{get:function(){return iRt}},editorError:{get:function(){return this._editorError}},tileset:{get:function(){return this._tileset},set:function(e){if(this._tileset=e,this._style=void 0,this.styleString="{}",this.feature=void 0,this.tile=void 0,l(e)){this._properties(e.properties);let t=["colorize","wireframe","showBoundingVolumes","showContentBoundingVolumes","showRequestVolumes","freezeFrame","showOnlyPickedTileDebugLabel","showGeometricError","showRenderingStatistics","showMemoryUsage","showUrl"],n=t.length;for(let o=0;o<n;++o){let r=t[o];this[r]=this[r]}this.maximumScreenSpaceError=e.maximumScreenSpaceError,this.dynamicScreenSpaceError=e.dynamicScreenSpaceError,this.dynamicScreenSpaceErrorDensity=e.dynamicScreenSpaceErrorDensity,this.dynamicScreenSpaceErrorFactor=e.dynamicScreenSpaceErrorFactor,this.colorBlendMode=e.colorBlendMode,this.skipLevelOfDetail=e.skipLevelOfDetail,this.skipScreenSpaceErrorFactor=e.skipScreenSpaceErrorFactor,this.baseScreenSpaceError=e.baseScreenSpaceError,this.skipLevels=e.skipLevels,this.immediatelyLoadDesiredLevelOfDetail=e.immediatelyLoadDesiredLevelOfDetail,this.loadSiblings=e.loadSiblings,this.hasEnabledWireframe=e._enableDebugWireframe;let i=e.pointCloudShading;this.pointCloudShading=i.attenuation,this.geometricErrorScale=i.geometricErrorScale,this.maximumAttenuation=i.maximumAttenuation?i.maximumAttenuation:0,this.baseResolution=i.baseResolution?i.baseResolution:0,this.eyeDomeLighting=i.eyeDomeLighting,this.eyeDomeLightingStrength=i.eyeDomeLightingStrength,this.eyeDomeLightingRadius=i.eyeDomeLightingRadius,this._scene.requestRender()}else this._properties({});this._statisticsText=QN(e,!1),this._pickStatisticsText=QN(e,!0),this._resourceCacheStatisticsText=bSe(),gSe(this,!1)}},feature:{get:function(){return this._feature},set:function(e){if(this._feature===e)return;let t=this._feature;l(t)&&!t.content.isDestroyed()&&(!this.colorize&&l(this._style)?t.color=l(this._style.color)?this._style.color.evaluateColor(t,oRt):U.WHITE:t.color=s3,this._scene.requestRender()),l(e)&&(U.clone(e.color,s3),e.color=ASe,this._scene.requestRender()),this._feature=e}},tile:{get:function(){return this._tile},set:function(e){if(this._tile===e)return;let t=this._tile;l(t)&&!t.isDestroyed()&&!lee(t.content)&&(t.color=s3,this._scene.requestRender()),l(e)&&!lee(e.content)&&(U.clone(e.color,s3),e.color=ASe,this._scene.requestRender()),this._tile=e}}});function lee(e){if(!l(e))return!1;if(e.featuresLength>0)return!0;let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)if(!lee(t[i]))return!1;return!0}return!1}ec.prototype.togglePickTileset=function(){this.pickActive=!this.pickActive};ec.prototype.toggleInspector=function(){this.inspectorVisible=!this.inspectorVisible};ec.prototype.toggleTileset=function(){this.tilesetVisible=!this.tilesetVisible};ec.prototype.toggleDisplay=function(){this.displayVisible=!this.displayVisible};ec.prototype.toggleUpdate=function(){this.updateVisible=!this.updateVisible};ec.prototype.toggleLogging=function(){this.loggingVisible=!this.loggingVisible};ec.prototype.toggleStyle=function(){this.styleVisible=!this.styleVisible};ec.prototype.toggleTileDebugLabels=function(){this.tileDebugLabelsVisible=!this.tileDebugLabelsVisible};ec.prototype.toggleOptimization=function(){this.optimizationVisible=!this.optimizationVisible};ec.prototype.trimTilesCache=function(){l(this._tileset)&&this._tileset.trimLoadedTiles()};ec.prototype.compileStyle=function(){let e=this._tileset;if(!(!l(e)||this.styleString===JSON.stringify(e.style))){this._editorError="";try{this.styleString.length===0&&(this.styleString="{}"),this._style=new p_(JSON.parse(this.styleString)),this._shouldStyle=!0,this._scene.requestRender()}catch(t){this._editorError=t.toString()}this.feature=this._feature,this.tile=this._tile}};ec.prototype.styleEditorKeyPress=function(e,t){if(t.keyCode===9){t.preventDefault();let n=t.target,i=n.selectionStart,o=n.selectionEnd,r=o,a=n.value.slice(i,o).split(` +`),c=a.length,d;if(t.shiftKey)for(d=0;d<c;++d)a[d][0]===" "&&(a[d][1]===" "?(a[d]=a[d].substr(2),r-=2):(a[d]=a[d].substr(1),r-=1));else for(d=0;d<c;++d)a[d]=` ${a[d]}`,r+=2;let u=a.join(` +`);n.value=n.value.slice(0,i)+u+n.value.slice(o),n.selectionStart=i!==o?i:r,n.selectionEnd=r}else t.ctrlKey&&(t.keyCode===10||t.keyCode===13)&&this.compileStyle();return!0};ec.prototype._update=function(){let e=this._tileset;if(this.performance&&this._performanceDisplay.update(),l(e)){if(e.isDestroyed()){this.tile=void 0,this.feature=void 0,this.tileset=void 0;return}let t=e.style;this._style!==e.style&&(this._shouldStyle?(e.style=this._style,this._shouldStyle=!1):(this._style=t,this.styleString=JSON.stringify(t.style,null," ")))}this.showStatistics&&(this._statisticsText=QN(e,!1),this._pickStatisticsText=QN(e,!0),this._resourceCacheStatisticsText=bSe())};ec.prototype.isDestroyed=function(){return!1};ec.prototype.destroy=function(){this._eventHandler.destroy(),this._removePostRenderEvent();let e=this;return this._definedProperties.forEach(function(t){Ee.getObservable(e,t).dispose()}),me(this)};ec.getStatistics=QN;var UN=ec;function a3(e,t){e=Dn(e);let n=document.createElement("div"),i=document.createElement("div");i.setAttribute("data-bind","visible: performance");let o=new UN(t,i);this._viewModel=o,this._container=e,this._element=n;let r=document.createElement("div");r.textContent="3D Tiles Inspector",r.className="cesium-cesiumInspector-button",r.setAttribute("data-bind","click: toggleInspector"),n.appendChild(r),n.className="cesium-cesiumInspector cesium-3DTilesInspector",n.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : inspectorVisible, "cesium-cesiumInspector-hidden" : !inspectorVisible}'),e.appendChild(n);let s=document.createElement("div");s.className="cesium-cesiumInspector-dropDown",n.appendChild(s);let a=Vd.createSection,c=Vd.createCheckbox,d=Vd.createRangeInput,u=Vd.createButton,h=a(s,"Tileset","tilesetVisible","toggleTileset"),p=a(s,"Display","displayVisible","toggleDisplay"),g=a(s,"Update","updateVisible","toggleUpdate"),f=a(s,"Logging","loggingVisible","toggleLogging"),b=a(s,"Tile Debug Labels","tileDebugLabelsVisible","toggleTileDebugLabels"),x=a(s,"Style","styleVisible","toggleStyle"),I=a(s,"Optimization","optimizationVisible","toggleOptimization"),_=document.createElement("div");_.className="field-group";let E=document.createElement("label");E.className="field-label",E.appendChild(document.createTextNode("Properties: "));let S=document.createElement("div");S.setAttribute("data-bind","text: properties"),_.appendChild(E),_.appendChild(S),h.appendChild(_),h.appendChild(u("Pick Tileset","togglePickTileset","pickActive")),h.appendChild(u("Trim Tiles Cache","trimTilesCache")),h.appendChild(c("Enable Picking","picking")),p.appendChild(c("Colorize","colorize"));let R=p.appendChild(c("Wireframe","wireframe","_tileset === undefined || hasEnabledWireframe")),G=document.createElement("p");G.setAttribute("data-bind","visible: _tileset !== undefined && !hasEnabledWireframe"),G.setAttribute("class","cesium-3DTilesInspector-disabledElementsInfo"),G.innerText="Set enableDebugWireframe to true in the tileset constructor to enable this option.",R.appendChild(G),p.appendChild(c("Bounding Volumes","showBoundingVolumes")),p.appendChild(c("Content Volumes","showContentBoundingVolumes")),p.appendChild(c("Request Volumes","showRequestVolumes")),p.appendChild(c("Point Cloud Shading","pointCloudShading"));let B=document.createElement("div");B.setAttribute("data-bind","visible: pointCloudShading"),B.appendChild(d("Geometric Error Scale","geometricErrorScale",0,2,.01)),B.appendChild(d("Maximum Attenuation","maximumAttenuation",0,32,1)),B.appendChild(d("Base Resolution","baseResolution",0,1,.01)),B.appendChild(c("Eye Dome Lighting (EDL)","eyeDomeLighting")),p.appendChild(B);let w=document.createElement("div");w.setAttribute("data-bind","visible: eyeDomeLighting"),w.appendChild(d("EDL Strength","eyeDomeLightingStrength",0,2,.1)),w.appendChild(d("EDL Radius","eyeDomeLightingRadius",0,4,.1)),B.appendChild(w),g.appendChild(c("Freeze Frame","freezeFrame")),g.appendChild(c("Dynamic Screen Space Error","dynamicScreenSpaceError"));let F=document.createElement("div");F.appendChild(d("Maximum Screen Space Error","maximumScreenSpaceError",0,128,1)),g.appendChild(F);let P=document.createElement("div");P.setAttribute("data-bind","visible: dynamicScreenSpaceError"),P.appendChild(d("Screen Space Error Density","dynamicScreenSpaceErrorDensitySliderValue",0,1,.005,"dynamicScreenSpaceErrorDensity")),P.appendChild(d("Screen Space Error Factor","dynamicScreenSpaceErrorFactor",1,32,.1)),g.appendChild(P),f.appendChild(c("Performance","performance")),f.appendChild(i),f.appendChild(c("Statistics","showStatistics"));let A=document.createElement("div");A.className="cesium-3dTilesInspector-statistics",A.setAttribute("data-bind","html: statisticsText, visible: showStatistics"),f.appendChild(A),f.appendChild(c("Pick Statistics","showPickStatistics"));let T=document.createElement("div");T.className="cesium-3dTilesInspector-statistics",T.setAttribute("data-bind","html: pickStatisticsText, visible: showPickStatistics"),f.appendChild(T),f.appendChild(c("Resource Cache Statistics","showResourceCacheStatistics"));let L=document.createElement("div");L.className="cesium-3dTilesInspector-statistics",L.setAttribute("data-bind","html: resourceCacheStatisticsText, visible: showResourceCacheStatistics"),f.appendChild(L);let V=document.createElement("div");x.appendChild(V),V.appendChild(document.createTextNode("Color Blend Mode: "));let W=document.createElement("select");W.setAttribute("data-bind",'options: colorBlendModes, optionsText: "text", optionsValue: "value", value: colorBlendMode'),V.appendChild(W);let M=document.createElement("textarea");M.setAttribute("data-bind","textInput: styleString, event: { keydown: styleEditorKeyPress }"),V.className="cesium-cesiumInspector-styleEditor",V.appendChild(M);let Q=u("Compile (Ctrl+Enter)","compileStyle");V.appendChild(Q);let N=document.createElement("div");N.className="cesium-cesiumInspector-error",N.setAttribute("data-bind","text: editorError"),V.appendChild(N),b.appendChild(c("Show Picked Only","showOnlyPickedTileDebugLabel")),b.appendChild(c("Geometric Error","showGeometricError")),b.appendChild(c("Rendering Statistics","showRenderingStatistics")),b.appendChild(c("Memory Usage (MB)","showMemoryUsage")),b.appendChild(c("Url","showUrl")),I.appendChild(c("Skip Tile LODs","skipLevelOfDetail"));let k=document.createElement("div");k.appendChild(d("Skip SSE Factor","skipScreenSpaceErrorFactor",1,50,1)),I.appendChild(k);let v=document.createElement("div");v.appendChild(d("SSE before skipping LOD","baseScreenSpaceError",0,4096,1)),I.appendChild(v);let O=document.createElement("div");O.appendChild(d("Min. levels to skip","skipLevels",0,10,1)),I.appendChild(O),I.appendChild(c("Load only tiles that meet the max SSE.","immediatelyLoadDesiredLevelOfDetail")),I.appendChild(c("Load siblings of visible tiles","loadSiblings")),Ee.applyBindings(o,n)}Object.defineProperties(a3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});a3.prototype.isDestroyed=function(){return!1};a3.prototype.destroy=function(){return Ee.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),me(this)};var kN=a3;var yXo=y(C(),1);var uXo=y(C(),1);function rRt(e){let t;if(l(e)){t="Command Statistics";let n=e.commandsInFrustums;for(let i in n)if(n.hasOwnProperty(i)){let o=parseInt(i,10),r;if(o===7)r="1, 2 and 3";else{let s=[];for(let a=2;a>=0;a--){let c=Math.pow(2,a);o>=c&&(s.push(a+1),o-=c)}r=s.reverse().join(" and ")}t+=`<br>    ${n[i]} in frustum ${r}`}t+=`<br>Total: ${e.totalCommands}`}return t}function dee(e,t,n){let i=Math.min(n,t);return i=Math.max(i,e),i}var sRt=new En,aRt=new m;function YN(e,t){let n=this,i=e.canvas,o=new Su(i);this._eventHandler=o,this._scene=e,this._canvas=i,this._primitive=void 0,this._tile=void 0,this._modelMatrixPrimitive=void 0,this._performanceDisplay=void 0,this._performanceContainer=t;let r=this._scene.globe;r.depthTestAgainstTerrain=!0,this.frustums=!1,this.frustumPlanes=!1,this.performance=!1,this.shaderCacheText="",this.primitiveBoundingSphere=!1,this.primitiveReferenceFrame=!1,this.filterPrimitive=!1,this.tileBoundingSphere=!1,this.filterTile=!1,this.wireframe=!1,this.depthFrustum=1,this._numberOfFrustums=1,this.suspendUpdates=!1,this.tileCoordinates=!1,this.frustumStatisticText=!1,this.tileText="",this.hasPickedPrimitive=!1,this.hasPickedTile=!1,this.pickPrimitiveActive=!1,this.pickTileActive=!1,this.dropDownVisible=!0,this.generalVisible=!0,this.primitivesVisible=!1,this.terrainVisible=!1,this.depthFrustumText="",Ee.track(this,["frustums","frustumPlanes","performance","shaderCacheText","primitiveBoundingSphere","primitiveReferenceFrame","filterPrimitive","tileBoundingSphere","filterTile","wireframe","depthFrustum","suspendUpdates","tileCoordinates","frustumStatisticText","tileText","hasPickedPrimitive","hasPickedTile","pickPrimitiveActive","pickTileActive","dropDownVisible","generalVisible","primitivesVisible","terrainVisible","depthFrustumText"]),this._toggleDropDown=Xn(function(){n.dropDownVisible=!n.dropDownVisible}),this._toggleGeneral=Xn(function(){n.generalVisible=!n.generalVisible}),this._togglePrimitives=Xn(function(){n.primitivesVisible=!n.primitivesVisible}),this._toggleTerrain=Xn(function(){n.terrainVisible=!n.terrainVisible}),this._frustumsSubscription=Ee.getObservable(this,"frustums").subscribe(function(d){n._scene.debugShowFrustums=d,n._scene.requestRender()}),this._frustumPlanesSubscription=Ee.getObservable(this,"frustumPlanes").subscribe(function(d){n._scene.debugShowFrustumPlanes=d,n._scene.requestRender()}),this._performanceSubscription=Ee.getObservable(this,"performance").subscribe(function(d){d?n._performanceDisplay=new kg({container:n._performanceContainer}):n._performanceContainer.innerHTML=""}),this._showPrimitiveBoundingSphere=Xn(function(){return n._primitive.debugShowBoundingVolume=n.primitiveBoundingSphere,n._scene.requestRender(),!0}),this._primitiveBoundingSphereSubscription=Ee.getObservable(this,"primitiveBoundingSphere").subscribe(function(){n._showPrimitiveBoundingSphere()}),this._showPrimitiveReferenceFrame=Xn(function(){if(n.primitiveReferenceFrame){let d=n._primitive.modelMatrix;n._modelMatrixPrimitive=new lN({modelMatrix:d}),n._scene.primitives.add(n._modelMatrixPrimitive)}else l(n._modelMatrixPrimitive)&&(n._scene.primitives.remove(n._modelMatrixPrimitive),n._modelMatrixPrimitive=void 0);return n._scene.requestRender(),!0}),this._primitiveReferenceFrameSubscription=Ee.getObservable(this,"primitiveReferenceFrame").subscribe(function(){n._showPrimitiveReferenceFrame()}),this._doFilterPrimitive=Xn(function(){return n.filterPrimitive?n._scene.debugCommandFilter=function(d){return l(n._modelMatrixPrimitive)&&d.owner===n._modelMatrixPrimitive._primitive?!0:l(n._primitive)?d.owner===n._primitive||d.owner===n._primitive._billboardCollection||d.owner.primitive===n._primitive:!1}:n._scene.debugCommandFilter=void 0,!0}),this._filterPrimitiveSubscription=Ee.getObservable(this,"filterPrimitive").subscribe(function(){n._doFilterPrimitive(),n._scene.requestRender()}),this._wireframeSubscription=Ee.getObservable(this,"wireframe").subscribe(function(d){r._surface.tileProvider._debug.wireframe=d,n._scene.requestRender()}),this._depthFrustumSubscription=Ee.getObservable(this,"depthFrustum").subscribe(function(d){n._scene.debugShowDepthFrustum=d,n._scene.requestRender()}),this._incrementDepthFrustum=Xn(function(){let d=n.depthFrustum+1;return n.depthFrustum=dee(1,n._numberOfFrustums,d),n._scene.requestRender(),!0}),this._decrementDepthFrustum=Xn(function(){let d=n.depthFrustum-1;return n.depthFrustum=dee(1,n._numberOfFrustums,d),n._scene.requestRender(),!0}),this._suspendUpdatesSubscription=Ee.getObservable(this,"suspendUpdates").subscribe(function(d){r._surface._debug.suspendLodUpdate=d,d||(n.filterTile=!1)});let s;this._showTileCoordinates=Xn(function(){return n.tileCoordinates&&!l(s)?s=e.imageryLayers.addImageryProvider(new SN({tilingScheme:e.terrainProvider.tilingScheme})):!n.tileCoordinates&&l(s)&&(e.imageryLayers.remove(s),s=void 0),!0}),this._tileCoordinatesSubscription=Ee.getObservable(this,"tileCoordinates").subscribe(function(){n._showTileCoordinates(),n._scene.requestRender()}),this._tileBoundingSphereSubscription=Ee.getObservable(this,"tileBoundingSphere").subscribe(function(){n._showTileBoundingSphere(),n._scene.requestRender()}),this._showTileBoundingSphere=Xn(function(){return n.tileBoundingSphere?r._surface.tileProvider._debug.boundingSphereTile=n._tile:r._surface.tileProvider._debug.boundingSphereTile=void 0,n._scene.requestRender(),!0}),this._doFilterTile=Xn(function(){return n.filterTile?(n.suspendUpdates=!0,r._surface._tilesToRender=[],l(n._tile)&&n._tile.renderable&&r._surface._tilesToRender.push(n._tile)):n.suspendUpdates=!1,!0}),this._filterTileSubscription=Ee.getObservable(this,"filterTile").subscribe(function(){n.doFilterTile(),n._scene.requestRender()});function a(d){let u=n._scene.pick({x:d.position.x,y:d.position.y});l(u)&&(n.primitive=l(u.collection)?u.collection:u.primitive),n._scene.requestRender(),n.pickPrimitiveActive=!1}this._pickPrimitive=Xn(function(){n.pickPrimitiveActive=!n.pickPrimitiveActive}),this._pickPrimitiveActiveSubscription=Ee.getObservable(this,"pickPrimitiveActive").subscribe(function(d){d?o.setInputAction(a,Zn.LEFT_CLICK):o.removeInputAction(Zn.LEFT_CLICK)});function c(d){let u,h=r.ellipsoid,p=n._scene.camera.getPickRay(d.position,sRt),g=r.pick(p,n._scene,aRt);if(l(g)){let f=h.cartesianToCartographic(g),b=r._surface.tileProvider._tilesToRenderByTextureCount;for(let x=0;!u&&x<b.length;++x){let I=b[x];if(l(I))for(let _=0;!u&&_<I.length;++_){let E=I[_];le.contains(E.rectangle,f)&&(u=E)}}}n.tile=u,n.pickTileActive=!1}this._pickTile=Xn(function(){n.pickTileActive=!n.pickTileActive}),this._pickTileActiveSubscription=Ee.getObservable(this,"pickTileActive").subscribe(function(d){d?o.setInputAction(c,Zn.LEFT_CLICK):o.removeInputAction(Zn.LEFT_CLICK)}),this._removePostRenderEvent=e.postRender.addEventListener(function(){n._update()})}Object.defineProperties(YN.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},toggleDropDown:{get:function(){return this._toggleDropDown}},showPrimitiveBoundingSphere:{get:function(){return this._showPrimitiveBoundingSphere}},showPrimitiveReferenceFrame:{get:function(){return this._showPrimitiveReferenceFrame}},doFilterPrimitive:{get:function(){return this._doFilterPrimitive}},incrementDepthFrustum:{get:function(){return this._incrementDepthFrustum}},decrementDepthFrustum:{get:function(){return this._decrementDepthFrustum}},showTileCoordinates:{get:function(){return this._showTileCoordinates}},showTileBoundingSphere:{get:function(){return this._showTileBoundingSphere}},doFilterTile:{get:function(){return this._doFilterTile}},toggleGeneral:{get:function(){return this._toggleGeneral}},togglePrimitives:{get:function(){return this._togglePrimitives}},toggleTerrain:{get:function(){return this._toggleTerrain}},pickPrimitive:{get:function(){return this._pickPrimitive}},pickTile:{get:function(){return this._pickTile}},selectParent:{get:function(){let e=this;return Xn(function(){e.tile=e.tile.parent})}},selectNW:{get:function(){let e=this;return Xn(function(){e.tile=e.tile.northwestChild})}},selectNE:{get:function(){let e=this;return Xn(function(){e.tile=e.tile.northeastChild})}},selectSW:{get:function(){let e=this;return Xn(function(){e.tile=e.tile.southwestChild})}},selectSE:{get:function(){let e=this;return Xn(function(){e.tile=e.tile.southeastChild})}},primitive:{get:function(){return this._primitive},set:function(e){let t=this._primitive;e!==t&&(this.hasPickedPrimitive=!0,l(t)&&(t.debugShowBoundingVolume=!1),this._scene.debugCommandFilter=void 0,l(this._modelMatrixPrimitive)&&(this._scene.primitives.remove(this._modelMatrixPrimitive),this._modelMatrixPrimitive=void 0),this._primitive=e,e.show=!1,setTimeout(function(){e.show=!0},50),this.showPrimitiveBoundingSphere(),this.showPrimitiveReferenceFrame(),this.doFilterPrimitive())}},tile:{get:function(){return this._tile},set:function(e){if(l(e)){this.hasPickedTile=!0;let t=this._tile;if(e!==t){this.tileText=`L: ${e.level} X: ${e.x} Y: ${e.y}`,this.tileText+=`<br>SW corner: ${e.rectangle.west}, ${e.rectangle.south}`,this.tileText+=`<br>NE corner: ${e.rectangle.east}, ${e.rectangle.north}`;let n=e.data;l(n)&&l(n.tileBoundingRegion)?this.tileText+=`<br>Min: ${n.tileBoundingRegion.minimumHeight} Max: ${n.tileBoundingRegion.maximumHeight}`:this.tileText+="<br>(Tile is not loaded)"}this._tile=e,this.showTileBoundingSphere(),this.doFilterTile()}else this.hasPickedTile=!1,this._tile=void 0}}});YN.prototype._update=function(){this.frustums&&(this.frustumStatisticText=rRt(this._scene.debugFrustumStatistics));let e=this._scene.numberOfFrustums;this._numberOfFrustums=e,this.depthFrustum=dee(1,e,this.depthFrustum),this.depthFrustumText=`${this.depthFrustum} of ${e}`,this.performance&&this._performanceDisplay.update(),this.primitiveReferenceFrame&&(this._modelMatrixPrimitive.modelMatrix=this._primitive.modelMatrix),this.shaderCacheText=`Cached shaders: ${this._scene.context.shaderCache.numberOfShaders}`};YN.prototype.isDestroyed=function(){return!1};YN.prototype.destroy=function(){return this._eventHandler.destroy(),this._removePostRenderEvent(),this._frustumsSubscription.dispose(),this._frustumPlanesSubscription.dispose(),this._performanceSubscription.dispose(),this._primitiveBoundingSphereSubscription.dispose(),this._primitiveReferenceFrameSubscription.dispose(),this._filterPrimitiveSubscription.dispose(),this._wireframeSubscription.dispose(),this._depthFrustumSubscription.dispose(),this._suspendUpdatesSubscription.dispose(),this._tileCoordinatesSubscription.dispose(),this._tileBoundingSphereSubscription.dispose(),this._filterTileSubscription.dispose(),this._pickPrimitiveActiveSubscription.dispose(),this._pickTileActiveSubscription.dispose(),me(this)};var ON=YN;function c3(e,t){e=Dn(e);let n=document.createElement("div"),i=new ON(t,n);this._viewModel=i,this._container=e;let o=document.createElement("div");this._element=o;let r=document.createElement("div");r.textContent="Cesium Inspector",r.className="cesium-cesiumInspector-button",r.setAttribute("data-bind","click: toggleDropDown"),o.appendChild(r),o.className="cesium-cesiumInspector",o.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : dropDownVisible, "cesium-cesiumInspector-hidden" : !dropDownVisible }'),e.appendChild(this._element);let s=document.createElement("div");s.className="cesium-cesiumInspector-dropDown",o.appendChild(s);let a=Vd.createSection,c=Vd.createCheckbox,d=a(s,"General","generalVisible","toggleGeneral"),u=c("Show Frustums","frustums"),h=document.createElement("div");h.className="cesium-cesiumInspector-frustumStatistics",h.setAttribute("data-bind","visible: frustums, html: frustumStatisticText"),u.appendChild(h),d.appendChild(u),d.appendChild(c("Show Frustum Planes","frustumPlanes")),d.appendChild(c("Performance Display","performance")),n.className="cesium-cesiumInspector-performanceDisplay",d.appendChild(n);let p=document.createElement("div");p.className="cesium-cesiumInspector-shaderCache",p.setAttribute("data-bind","html: shaderCacheText"),d.appendChild(p);let g=document.createElement("div");d.appendChild(g);let f=document.createElement("span");f.setAttribute("data-bind",'html: "     Frustum:"'),g.appendChild(f);let b=document.createElement("span");b.setAttribute("data-bind","text: depthFrustumText"),g.appendChild(b);let x=document.createElement("input");x.type="button",x.value="-",x.className="cesium-cesiumInspector-pickButton",x.setAttribute("data-bind","click: decrementDepthFrustum"),g.appendChild(x);let I=document.createElement("input");I.type="button",I.value="+",I.className="cesium-cesiumInspector-pickButton",I.setAttribute("data-bind","click: incrementDepthFrustum"),g.appendChild(I);let _=a(s,"Primitives","primitivesVisible","togglePrimitives"),E=document.createElement("div");E.className="cesium-cesiumInspector-pickSection",_.appendChild(E);let S=document.createElement("input");S.type="button",S.value="Pick a primitive",S.className="cesium-cesiumInspector-pickButton",S.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickPrimitiveActive}, click: pickPrimitive');let R=document.createElement("div");R.className="cesium-cesiumInspector-center",R.appendChild(S),E.appendChild(R),E.appendChild(c("Show bounding sphere","primitiveBoundingSphere","hasPickedPrimitive")),E.appendChild(c("Show reference frame","primitiveReferenceFrame","hasPickedPrimitive")),this._primitiveOnly=c("Show only selected","filterPrimitive","hasPickedPrimitive"),E.appendChild(this._primitiveOnly);let G=a(s,"Terrain","terrainVisible","toggleTerrain"),B=document.createElement("div");B.className="cesium-cesiumInspector-pickSection",G.appendChild(B);let w=document.createElement("input");w.type="button",w.value="Pick a tile",w.className="cesium-cesiumInspector-pickButton",w.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickTileActive}, click: pickTile'),R=document.createElement("div"),R.appendChild(w),R.className="cesium-cesiumInspector-center",B.appendChild(R);let F=document.createElement("div");B.appendChild(F);let P=document.createElement("input");P.type="button",P.value="Parent",P.className="cesium-cesiumInspector-pickButton",P.setAttribute("data-bind","click: selectParent");let A=document.createElement("input");A.type="button",A.value="NW",A.className="cesium-cesiumInspector-pickButton",A.setAttribute("data-bind","click: selectNW");let T=document.createElement("input");T.type="button",T.value="NE",T.className="cesium-cesiumInspector-pickButton",T.setAttribute("data-bind","click: selectNE");let L=document.createElement("input");L.type="button",L.value="SW",L.className="cesium-cesiumInspector-pickButton",L.setAttribute("data-bind","click: selectSW");let V=document.createElement("input");V.type="button",V.value="SE",V.className="cesium-cesiumInspector-pickButton",V.setAttribute("data-bind","click: selectSE");let W=document.createElement("div");W.className="cesium-cesiumInspector-tileText",F.className="cesium-cesiumInspector-frustumStatistics",F.appendChild(W),F.setAttribute("data-bind","visible: hasPickedTile"),W.setAttribute("data-bind","html: tileText");let M=document.createElement("div");M.className="cesium-cesiumInspector-relativeText",M.textContent="Select relative:",F.appendChild(M);let Q=document.createElement("table"),N=document.createElement("tr"),k=document.createElement("tr"),v=document.createElement("td");v.appendChild(P);let O=document.createElement("td");O.appendChild(A);let H=document.createElement("td");H.appendChild(T),N.appendChild(v),N.appendChild(O),N.appendChild(H);let ee=document.createElement("td"),K=document.createElement("td");K.appendChild(L);let te=document.createElement("td");te.appendChild(V),k.appendChild(ee),k.appendChild(K),k.appendChild(te),Q.appendChild(N),Q.appendChild(k),F.appendChild(Q),B.appendChild(c("Show bounding volume","tileBoundingSphere","hasPickedTile")),B.appendChild(c("Show only selected","filterTile","hasPickedTile")),G.appendChild(c("Wireframe","wireframe")),G.appendChild(c("Suspend LOD update","suspendUpdates")),G.appendChild(c("Show tile coordinates","tileCoordinates")),Ee.applyBindings(i,this._element)}Object.defineProperties(c3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});c3.prototype.isDestroyed=function(){return!1};c3.prototype.destroy=function(){return Ee.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),me(this)};var HN=c3;var BXo=y(C(),1);var TXo=y(C(),1);function l3(e,t){l(t)||(t=document.body),t=Dn(t);let n=this,i=Ee.observable(Wr.fullscreen),o=Ee.observable(Wr.enabled),r=t.ownerDocument;this.isFullscreen=void 0,Ee.defineProperty(this,"isFullscreen",{get:function(){return i()}}),this.isFullscreenEnabled=void 0,Ee.defineProperty(this,"isFullscreenEnabled",{get:function(){return o()},set:function(s){o(s&&Wr.enabled)}}),this.tooltip=void 0,Ee.defineProperty(this,"tooltip",function(){return this.isFullscreenEnabled?i()?"Exit full screen":"Full screen":"Full screen unavailable"}),this._command=Xn(function(){Wr.fullscreen?Wr.exitFullscreen():Wr.requestFullscreen(n._fullscreenElement)},Ee.getObservable(this,"isFullscreenEnabled")),this._fullscreenElement=Dn(e)??r.body,this._callback=function(){i(Wr.fullscreen)},r.addEventListener(Wr.changeEventName,this._callback)}Object.defineProperties(l3.prototype,{fullscreenElement:{get:function(){return this._fullscreenElement},set:function(e){this._fullscreenElement=e}},command:{get:function(){return this._command}}});l3.prototype.isDestroyed=function(){return!1};l3.prototype.destroy=function(){document.removeEventListener(Wr.changeEventName,this._callback),me(this)};var zN=l3;var cRt="M 83.96875 17.5625 L 83.96875 17.59375 L 76.65625 24.875 L 97.09375 24.96875 L 76.09375 45.96875 L 81.9375 51.8125 L 102.78125 30.9375 L 102.875 51.15625 L 110.15625 43.875 L 110.1875 17.59375 L 83.96875 17.5625 z M 44.125 17.59375 L 17.90625 17.625 L 17.9375 43.90625 L 25.21875 51.1875 L 25.3125 30.96875 L 46.15625 51.8125 L 52 45.96875 L 31 25 L 51.4375 24.90625 L 44.125 17.59375 z M 46.0625 76.03125 L 25.1875 96.875 L 25.09375 76.65625 L 17.8125 83.9375 L 17.8125 110.21875 L 44 110.25 L 51.3125 102.9375 L 30.90625 102.84375 L 51.875 81.875 L 46.0625 76.03125 z M 82 76.15625 L 76.15625 82 L 97.15625 103 L 76.71875 103.0625 L 84.03125 110.375 L 110.25 110.34375 L 110.21875 84.0625 L 102.9375 76.8125 L 102.84375 97 L 82 76.15625 z",lRt="M 104.34375 17.5625 L 83.5 38.4375 L 83.40625 18.21875 L 76.125 25.5 L 76.09375 51.78125 L 102.3125 51.8125 L 102.3125 51.78125 L 109.625 44.5 L 89.1875 44.40625 L 110.1875 23.40625 L 104.34375 17.5625 z M 23.75 17.59375 L 17.90625 23.4375 L 38.90625 44.4375 L 18.5 44.53125 L 25.78125 51.8125 L 52 51.78125 L 51.96875 25.53125 L 44.6875 18.25 L 44.625 38.46875 L 23.75 17.59375 z M 25.6875 76.03125 L 18.375 83.3125 L 38.78125 83.40625 L 17.8125 104.40625 L 23.625 110.25 L 44.5 89.375 L 44.59375 109.59375 L 51.875 102.3125 L 51.875 76.0625 L 25.6875 76.03125 z M 102.375 76.15625 L 76.15625 76.1875 L 76.1875 102.4375 L 83.46875 109.71875 L 83.5625 89.53125 L 104.40625 110.375 L 110.25 104.53125 L 89.25 83.53125 L 109.6875 83.46875 L 102.375 76.15625 z";function d3(e,t){e=Dn(e);let n=new zN(t,e);n._exitFullScreenPath=lRt,n._enterFullScreenPath=cRt;let i=document.createElement("button");i.type="button",i.className="cesium-button cesium-fullscreenButton",i.setAttribute("data-bind","attr: { title: tooltip },click: command,enable: isFullscreenEnabled,cesiumSvgPath: { path: isFullscreen ? _exitFullScreenPath : _enterFullScreenPath, width: 128, height: 128 }"),e.appendChild(i),Ee.applyBindings(n,i),this._container=e,this._viewModel=n,this._element=i}Object.defineProperties(d3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});d3.prototype.isDestroyed=function(){return!1};d3.prototype.destroy=function(){return this._viewModel.destroy(),Ee.cleanNode(this._element),this._container.removeChild(this._element),me(this)};var KN=d3;var YXo=y(C(),1);var MXo=y(C(),1);var ySe=1e3;function Hm(e){l(e.geocoderServices)?this._geocoderServices=e.geocoderServices:this._geocoderServices=[new u_({scene:e.scene})],this._viewContainer=e.container,this._scene=e.scene,this._flightDuration=e.flightDuration,this._searchText="",this._isSearchInProgress=!1,this._wasGeocodeCancelled=!1,this._previousCredits=[],this._complete=new Ce,this._suggestions=[],this._selectedSuggestion=void 0,this._showSuggestions=!0,this._handleArrowDown=xSe,this._handleArrowUp=CSe;let t=this;this._suggestionsVisible=Ee.pureComputed(function(){let o=Ee.getObservable(t,"_suggestions")().length>0,r=Ee.getObservable(t,"_showSuggestions")();return o&&r}),this._searchCommand=Xn(function(i){if(i=i??_y.SEARCH,t._focusTextbox=!1,l(t._selectedSuggestion))return t.activateSuggestion(t._selectedSuggestion),!1;if(t.hideSuggestions(),t.isSearchInProgress)pRt(t);else return hRt(t,t._geocoderServices,i)}),this.deselectSuggestion=function(){t._selectedSuggestion=void 0},this.handleKeyDown=function(i,o){let r=o.key==="ArrowDown"||o.key==="Down"||o.keyCode===40,s=o.key==="ArrowUp"||o.key==="Up"||o.keyCode===38;return(r||s)&&o.preventDefault(),!0},this.handleKeyUp=function(i,o){let r=o.key==="ArrowDown"||o.key==="Down"||o.keyCode===40,s=o.key==="ArrowUp"||o.key==="Up"||o.keyCode===38,a=o.key==="Enter"||o.keyCode===13;return s?CSe(t):r?xSe(t):a&&t._searchCommand(),!0},this.activateSuggestion=function(i){t.hideSuggestions(),t._searchText=i.displayName;let o=i.destination;ESe(t),t.destinationFound(t,o)},this.hideSuggestions=function(){t._showSuggestions=!1,t._selectedSuggestion=void 0},this.showSuggestions=function(){t._showSuggestions=!0},this.handleMouseover=function(i,o){i!==t._selectedSuggestion&&(t._selectedSuggestion=i)},this.keepExpanded=!1,this.autoComplete=e.autocomplete??!0,this.destinationFound=e.destinationFound??Hm.flyToDestination,this._focusTextbox=!1,Ee.track(this,["_searchText","_isSearchInProgress","keepExpanded","_suggestions","_selectedSuggestion","_showSuggestions","_focusTextbox"]);let n=Ee.getObservable(this,"_searchText");n.extend({rateLimit:{timeout:500}}),this._suggestionSubscription=n.subscribe(function(){Hm._updateSearchSuggestions(t)}),this.isSearchInProgress=void 0,Ee.defineProperty(this,"isSearchInProgress",{get:function(){return this._isSearchInProgress}}),this.searchText=void 0,Ee.defineProperty(this,"searchText",{get:function(){return this.isSearchInProgress?"Searching...":this._searchText},set:function(i){this._searchText=i}}),this.flightDuration=void 0,Ee.defineProperty(this,"flightDuration",{get:function(){return this._flightDuration},set:function(i){this._flightDuration=i}})}Object.defineProperties(Hm.prototype,{complete:{get:function(){return this._complete}},scene:{get:function(){return this._scene}},search:{get:function(){return this._searchCommand}},selectedSuggestion:{get:function(){return this._selectedSuggestion}},suggestions:{get:function(){return this._suggestions}}});Hm.prototype.destroy=function(){this._suggestionSubscription.dispose()};function CSe(e){if(e._suggestions.length===0)return;let t=e._suggestions.indexOf(e._selectedSuggestion);if(t===-1||t===0){e._selectedSuggestion=void 0;return}let n=t-1;e._selectedSuggestion=e._suggestions[n],Hm._adjustSuggestionsScroll(e,n)}function xSe(e){if(e._suggestions.length===0)return;let t=e._suggestions.length,i=(e._suggestions.indexOf(e._selectedSuggestion)+1)%t;e._selectedSuggestion=e._suggestions[i],Hm._adjustSuggestionsScroll(e,i)}function dRt(e,t){let n=l(t)?t.availability:void 0;return l(n)?_I(t,[e]).then(function(i){return e=i[0],e.height+=ySe,e}):(e.height+=ySe,Promise.resolve(e))}function uRt(e,t){let n=e._scene,i=n.ellipsoid,o=n.camera,r=n.terrainProvider,s=t,a;return t instanceof le?Z.equalsEpsilon(t.south,t.north,Z.EPSILON7)&&Z.equalsEpsilon(t.east,t.west,Z.EPSILON7)?t=le.center(t):a=EI(t,n):t=i.cartesianToCartographic(t),l(a)||(a=dRt(t,r)),a.then(function(c){s=i.cartographicToCartesian(c)}).finally(function(){o.flyTo({destination:s,complete:function(){e._complete.raiseEvent()},duration:e._flightDuration,endTransform:X.IDENTITY})})}async function mRt(e,t,n){try{return{state:"fulfilled",value:await e.geocode(t,n),credits:e.credit}}catch(i){return{state:"rejected",reason:i}}}async function hRt(e,t,n){let i=e._searchText;if(_Se(i)){e.showSuggestions();return}e._isSearchInProgress=!0,e._wasGeocodeCancelled=!1;let o,r;for(o=0;o<t.length;o++){if(e._wasGeocodeCancelled)return;if(r=await mRt(t[o],i,n),l(r)&&r.state==="fulfilled"&&r.value.length>0)break}if(e._wasGeocodeCancelled)return;e._isSearchInProgress=!1,mee(e);let s=r.value;if(r.state==="fulfilled"&&l(s)&&s.length>0){e._searchText=s[0].displayName,e.destinationFound(e,s[0].destination);let a=ISe(e,BL.getCreditsFromResult(s[0]));l(a)||uee(e,t[o].credit);return}e._searchText=`${i} (not found)`}function uee(e,t){l(t)&&!e._scene.isDestroyed()&&!e._scene.frameState.creditDisplay.isDestroyed()&&(e._scene.frameState.creditDisplay.addStaticCredit(t),e._previousCredits.push(t))}function ISe(e,t){return l(t)&&t.forEach(n=>uee(e,n)),t}function mee(e){!e._scene.isDestroyed()&&!e._scene.frameState.creditDisplay.isDestroyed()&&e._previousCredits.forEach(t=>{e._scene.frameState.creditDisplay.removeStaticCredit(t)}),e._previousCredits.length=0}function fRt(e,t){let n=Dn(e._viewContainer),i=n.getElementsByClassName("search-results")[0],r=n.getElementsByTagName("li")[t];if(t===0){i.scrollTop=0;return}let s=r.offsetTop;s+r.clientHeight>i.clientHeight?i.scrollTop=s+r.clientHeight:s<i.scrollTop&&(i.scrollTop=s)}function pRt(e){e._isSearchInProgress&&(e._isSearchInProgress=!1,e._wasGeocodeCancelled=!0)}function _Se(e){return/^\s*$/.test(e)}function ESe(e){Ee.getObservable(e,"_suggestions").removeAll()}async function ARt(e){if(!e.autoComplete)return;let t=e._searchText;if(ESe(e),mee(e),!_Se(t))for(let n of e._geocoderServices){let i=await n.geocode(t,_y.AUTOCOMPLETE);if(e._suggestions=e._suggestions.concat(i),i.length>0){let o=!0;i.forEach(r=>{let s=BL.getCreditsFromResult(r);o=o&&!l(s),ISe(e,s)}),o&&uee(e,n.credit)}if(e._suggestions.length>=5)return}}Hm.flyToDestination=uRt;Hm._updateSearchSuggestions=ARt;Hm._adjustSuggestionsScroll=fRt;Hm.prototype.isDestroyed=function(){return!1};Hm.prototype.destroy=function(){return mee(this),me(this)};var JN=Hm;var gRt="M29.772,26.433l-7.126-7.126c0.96-1.583,1.523-3.435,1.524-5.421C24.169,8.093,19.478,3.401,13.688,3.399C7.897,3.401,3.204,8.093,3.204,13.885c0,5.789,4.693,10.481,10.484,10.481c1.987,0,3.839-0.563,5.422-1.523l7.128,7.127L29.772,26.433zM7.203,13.885c0.006-3.582,2.903-6.478,6.484-6.486c3.579,0.008,6.478,2.904,6.484,6.486c-0.007,3.58-2.905,6.476-6.484,6.484C10.106,20.361,7.209,17.465,7.203,13.885z",bRt="M24.778,21.419 19.276,15.917 24.777,10.415 21.949,7.585 16.447,13.087 10.945,7.585 8.117,10.415 13.618,15.917 8.116,21.419 10.946,24.248 16.447,18.746 21.948,24.248z";function u3(e){let t=Dn(e.container),n=new JN(e);n._startSearchPath=gRt,n._stopSearchPath=bRt;let i=document.createElement("form");i.setAttribute("data-bind","submit: search");let o=document.createElement("input");o.type="search",o.className="cesium-geocoder-input",o.setAttribute("placeholder","Enter an address or landmark..."),o.setAttribute("data-bind",'textInput: searchText,disable: isSearchInProgress,event: { keyup: handleKeyUp, keydown: handleKeyDown, mouseover: deselectSuggestion },css: { "cesium-geocoder-input-wide" : keepExpanded || searchText.length > 0 },hasFocus: _focusTextbox'),this._onTextBoxFocus=function(){setTimeout(function(){o.select()},0)},o.addEventListener("focus",this._onTextBoxFocus,!1),i.appendChild(o),this._textBox=o;let r=document.createElement("span");r.className="cesium-geocoder-searchButton",r.setAttribute("data-bind","click: search,cesiumSvgPath: { path: isSearchInProgress ? _stopSearchPath : _startSearchPath, width: 32, height: 32 }"),i.appendChild(r),t.appendChild(i);let s=document.createElement("div");s.className="search-results",s.setAttribute("data-bind","visible: _suggestionsVisible");let a=document.createElement("ul");a.setAttribute("data-bind","foreach: _suggestions");let c=document.createElement("li");a.appendChild(c),c.setAttribute("data-bind","text: $data.displayName, click: $parent.activateSuggestion, event: { mouseover: $parent.handleMouseover}, css: { active: $data === $parent._selectedSuggestion }"),s.appendChild(a),t.appendChild(s),Ee.applyBindings(n,i),Ee.applyBindings(n,s),this._container=t,this._searchSuggestionsContainer=s,this._viewModel=n,this._form=i,this._onInputBegin=function(d){let u=d.target;typeof d.composedPath=="function"&&(u=d.composedPath()[0]),t.contains(u)||(n._focusTextbox=!1,n.hideSuggestions())},this._onInputEnd=function(d){n._focusTextbox=!0,n.showSuggestions()},Ht.supportsPointerEvents()?(document.addEventListener("pointerdown",this._onInputBegin,!0),t.addEventListener("pointerup",this._onInputEnd,!0),t.addEventListener("pointercancel",this._onInputEnd,!0)):(document.addEventListener("mousedown",this._onInputBegin,!0),t.addEventListener("mouseup",this._onInputEnd,!0),document.addEventListener("touchstart",this._onInputBegin,!0),t.addEventListener("touchend",this._onInputEnd,!0),t.addEventListener("touchcancel",this._onInputEnd,!0))}Object.defineProperties(u3.prototype,{container:{get:function(){return this._container}},searchSuggestionsContainer:{get:function(){return this._searchSuggestionsContainer}},viewModel:{get:function(){return this._viewModel}}});u3.prototype.isDestroyed=function(){return!1};u3.prototype.destroy=function(){let e=this._container;return Ht.supportsPointerEvents()?(document.removeEventListener("pointerdown",this._onInputBegin,!0),e.removeEventListener("pointerup",this._onInputEnd,!0)):(document.removeEventListener("mousedown",this._onInputBegin,!0),e.removeEventListener("mouseup",this._onInputEnd,!0),document.removeEventListener("touchstart",this._onInputBegin,!0),e.removeEventListener("touchend",this._onInputEnd,!0)),this._viewModel.destroy(),Ee.cleanNode(this._form),Ee.cleanNode(this._searchSuggestionsContainer),e.removeChild(this._form),e.removeChild(this._searchSuggestionsContainer),this._textBox.removeEventListener("focus",this._onTextBoxFocus,!1),me(this)};var jN=u3;var n2o=y(C(),1);var KXo=y(C(),1);function TSe(e,t){this._scene=e,this._duration=t;let n=this;this._command=Xn(function(){n._scene.camera.flyHome(n._duration)}),this.tooltip="View Home",Ee.track(this,["tooltip"])}Object.defineProperties(TSe.prototype,{scene:{get:function(){return this._scene}},command:{get:function(){return this._command}},duration:{get:function(){return this._duration},set:function(e){this._duration=e}}});var qN=TSe;function m3(e,t,n){e=Dn(e);let i=new qN(t,n);i._svgPath="M14,4l-10,8.75h20l-4.25-3.7188v-4.6562h-2.812v2.1875l-2.938-2.5625zm-7.0938,9.906v10.094h14.094v-10.094h-14.094zm2.1876,2.313h3.3122v4.25h-3.3122v-4.25zm5.8442,1.281h3.406v6.438h-3.406v-6.438z";let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-toolbar-button cesium-home-button",o.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 28, height: 28 }"),e.appendChild(o),Ee.applyBindings(i,o),this._container=e,this._viewModel=i,this._element=o}Object.defineProperties(m3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});m3.prototype.isDestroyed=function(){return!1};m3.prototype.destroy=function(){return Ee.cleanNode(this._element),this._container.removeChild(this._element),me(this)};var $N=m3;var m2o=y(C(),1);var s2o=y(C(),1);function yRt(e,t){t.currentTarget.parentElement.parentElement.querySelector(`#${e.name}-expander`).classList.toggle("active"),t.currentTarget.textContent=t.currentTarget.textContent==="+"?"-":"+"}function LSe(e,t){Ee.track(e);for(let n=0;n<e.sublayers.length;n++)LSe(e.sublayers[n],t)}function h3(e){return e.modelName==="FullModel"}function RSe(e){return e.modelName==="Overview"}function VSe(e){return RSe(e)||h3(e)}function SSe(e,t){if(VSe(e)){e.visibility=!1;for(let i=0;i<e.sublayers.length;i++)e.sublayers[i].visibility=!0;let n={name:e.name,modelName:e.modelName,disable:Ee.observable(!1),index:t.sublayers.length};return t.topLayers.push(n),t.sublayers.push(e),n}}function CRt(e,t){if(VSe(e)){t.sublayers.forEach(i=>i.visibility=!1),t.sublayers[e.index].visibility=!0;let n=document.getElementById("bsl-wrapper");h3(e)?(t.currentLevel=t.selectedLevel,n.style.display="block"):(t.selectedLevel=t.currentLevel,t.currentLevel="All",n.style.display="none")}}async function xRt(e,t){try{let n=e.getAttributeNames();for(let i=0;i<n.length;i++)if(n[i]==="BldgLevel"){let o=e.getAttributeValues(n[i]);for(let r=0;r<o.length;r++)t.push(o[r])}t.sort((i,o)=>i-o),t.unshift("All")}catch(n){console.log(`There was an error getting attributes: ${n}`)}}function IRt(e){let t=this;this.levels=[],this.viewModel={sublayers:[],levels:this.levels,currentLevel:Ee.observable(),selectedLevel:"All",topLayers:[{name:"Select a layer to explore...",disable:Ee.observable(!0),index:-1}],currentLayer:Ee.observable(),expandClickHandler:yRt,setOptionDisable:function(i,o){Ee.applyBindingsToNode(i,{disable:o.disable},o)},defaultLayer:void 0},this.viewModel.currentLayer.subscribe(function(i){CRt(i,t.viewModel)});let n=e.sublayers;for(let i=0;i<n.length;i++){LSe(n[i],this.viewModel);let o=SSe(n[i],this.viewModel);l(o)&&(RSe(o)||!l(this.viewModel.defaultLayer)&&h3(o))&&(this.viewModel.defaultLayer=o)}if(this.viewModel.topLayers.length===1&&n.length>0){e.show=!1;let i={name:"Full Model",modelName:"FullModel",visibility:e.show,sublayers:e.sublayers};this.viewModel.defaultLayer=SSe(i,this.viewModel),this.viewModel.currentLayer.subscribe(function(o){e.show=h3(o)})}else this.viewModel.topLayers.length===1&&(this.viewModel.topLayers[0].name="Building layers not found");return xRt(e,this.levels),this.viewModel.currentLevel.subscribe(function(i){i!=="All"?e.filterByAttributes([{name:"BldgLevel",values:[i]}]):e.filterByAttributes()}),this.viewModel}var e9=IRt;function _Rt(e,t){let n=document.getElementById(e),i=document.createElement("div");i.classList.add("cesium-viewer-i3s-explorer"),i.innerHTML=` + <h3>Building explorer</h3> + <select + data-bind="options: topLayers, optionsText: 'name', optionsAfterRender: setOptionDisable, value: currentLayer" + ></select> + <div id="bsl-wrapper"> + <h3>Select Level</h3> + <select data-bind="options: levels, value: currentLevel"></select> + <h3>Disciplines & Categories</h3> + <ul class="layersList" data-bind="foreach: sublayers"> + <ul class="layersList" data-bind="foreach: sublayers.sort(function (l, r) { return l.name.localeCompare(r.name) })"> + <li> + <div class="li-wrapper"> + <span + class="expandItem" + data-bind="click: $root.expandClickHandler" + >+</span + > + <input + type="checkbox" + data-bind="checked: visibility, valueUpdate: 'input', attr: { id: name}" + /> + <label data-bind="attr: { for: name}"> + <span data-bind="text: name"></span> + </label> + </div> + <ul class="nested" data-bind="attr: { id: name + '-expander'}"> + <li data-bind="foreach: sublayers.sort(function (l, r) { return l.name.localeCompare(r.name) })"> + <div class="li-wrapper"> + <input + type="checkbox" + data-bind="checked: visibility, valueUpdate: 'input', attr: { id: name}" + /> + <label data-bind="attr: { for: name}"> + <span data-bind="text: name"></span> + </label> + </div> + </li> + </ul> + </li> + </ul> + </ul> + </div>`,n.appendChild(i);let o=new e9(t);Ee.track(o),Ee.applyBindings(o,n),l(o.defaultLayer)&&(o.currentLayer=o.defaultLayer)}var hee=_Rt;var _2o=y(C(),1);var A2o=y(C(),1);var ERt="M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4853444 22.104033 11.423165 24.0625 13.84375 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 8.975298 28.305952 7.03125 25.875 7.03125 L 13.84375 7.03125 z",TRt="M 27.34375 1.65625 L 5.28125 27.9375 L 8.09375 30.3125 L 30.15625 4.03125 L 27.34375 1.65625 z M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4724893 20.232036 9.5676108 20.7379 9.75 21.21875 L 21.65625 7.03125 L 13.84375 7.03125 z M 28.21875 7.71875 L 14.53125 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 9.8371439 29.456025 8.4902779 28.21875 7.71875 z";function fee(){this._cameraClicked=new Ce,this._closeClicked=new Ce,this.maxHeight=500,this.enableCamera=!1,this.isCameraTracking=!1,this.showInfo=!1,this.titleText="",this.description="",Ee.track(this,["showInfo","titleText","description","maxHeight","enableCamera","isCameraTracking"]),this._loadingIndicatorHtml='<div class="cesium-infoBox-loadingContainer"><span class="cesium-infoBox-loading"></span></div>',this.cameraIconPath=void 0,Ee.defineProperty(this,"cameraIconPath",{get:function(){return!this.enableCamera||this.isCameraTracking?TRt:ERt}}),Ee.defineProperty(this,"_bodyless",{get:function(){return!l(this.description)||this.description.length===0}})}fee.prototype.maxHeightOffset=function(e){return`${this.maxHeight-e}px`};Object.defineProperties(fee.prototype,{cameraClicked:{get:function(){return this._cameraClicked}},closeClicked:{get:function(){return this._closeClicked}}});var t9=fee;function f3(e){e=Dn(e);let t=document.createElement("div");t.className="cesium-infoBox",t.setAttribute("data-bind",'css: { "cesium-infoBox-visible" : showInfo, "cesium-infoBox-bodyless" : _bodyless }'),e.appendChild(t);let n=document.createElement("div");n.className="cesium-infoBox-title",n.setAttribute("data-bind","text: titleText"),t.appendChild(n);let i=document.createElement("button");i.type="button",i.className="cesium-button cesium-infoBox-camera",i.setAttribute("data-bind",'attr: { title: "Focus camera on object" },click: function () { cameraClicked.raiseEvent(this); },enable: enableCamera,cesiumSvgPath: { path: cameraIconPath, width: 32, height: 32 }'),t.appendChild(i);let o=document.createElement("button");o.type="button",o.className="cesium-infoBox-close",o.setAttribute("data-bind","click: function () { closeClicked.raiseEvent(this); }"),o.innerHTML="×",t.appendChild(o);let r=document.createElement("iframe");r.className="cesium-infoBox-iframe",r.setAttribute("sandbox","allow-same-origin allow-popups allow-forms"),r.setAttribute("data-bind","style : { maxHeight : maxHeightOffset(40) }"),r.setAttribute("allowfullscreen",!0),t.appendChild(r);let s=new t9;Ee.applyBindings(s,t),this._container=e,this._element=t,this._frame=r,this._viewModel=s,this._descriptionSubscription=void 0;let a=this;r.addEventListener("load",function(){let c=r.contentDocument,d=c.createElement("link");d.href=hn("Widgets/InfoBox/InfoBoxDescription.css"),d.rel="stylesheet",d.type="text/css";let u=c.createElement("div");u.className="cesium-infoBox-description",c.head.appendChild(d),c.body.appendChild(u),a._descriptionSubscription=$a(s,"description",function(h){r.style.height="5px",u.innerHTML=h;let p=null,g=u.firstElementChild;if(g!==null&&u.childNodes.length===1){let b=window.getComputedStyle(g);if(b!==null){let x=b["background-color"],I=U.fromCssColorString(x);l(I)&&I.alpha!==0&&(p=b["background-color"])}}t.style["background-color"]=p;let f=u.getBoundingClientRect().height;r.style.height=`${f}px`})}),r.setAttribute("src","about:blank")}Object.defineProperties(f3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}},frame:{get:function(){return this._frame}}});f3.prototype.isDestroyed=function(){return!1};f3.prototype.destroy=function(){let e=this._container;return Ee.cleanNode(this._element),e.removeChild(this._element),l(this._descriptionSubscription)&&this._descriptionSubscription.dispose(),me(this)};var n9=f3;var X2o=y(C(),1);var L2o=y(C(),1);function GSe(){this.showInstructions=!1;let e=this;this._command=Xn(function(){e.showInstructions=!e.showInstructions}),this._showClick=Xn(function(){e._touch=!1}),this._showTouch=Xn(function(){e._touch=!0}),this._touch=!1,this.tooltip="Navigation Instructions",Ee.track(this,["tooltip","showInstructions","_touch"])}Object.defineProperties(GSe.prototype,{command:{get:function(){return this._command}},showClick:{get:function(){return this._showClick}},showTouch:{get:function(){return this._showTouch}}});var i9=GSe;function p3(e){let t=Dn(e.container),n=new i9,i=e.instructionsInitiallyVisible??!1;n.showInstructions=i,n._svgPath="M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466z M17.328,24.371h-2.707v-2.596h2.707V24.371zM17.328,19.003v0.858h-2.707v-1.057c0-3.19,3.63-3.696,3.63-5.963c0-1.034-0.924-1.826-2.134-1.826c-1.254,0-2.354,0.924-2.354,0.924l-1.541-1.915c0,0,1.519-1.584,4.137-1.584c2.487,0,4.796,1.54,4.796,4.136C21.156,16.208,17.328,16.627,17.328,19.003z";let o=document.createElement("span");o.className="cesium-navigationHelpButton-wrapper",t.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button cesium-navigation-help-button",r.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 32, height: 32 }"),o.appendChild(r);let s=document.createElement("div");s.className="cesium-navigation-help",s.setAttribute("data-bind",'css: { "cesium-navigation-help-visible" : showInstructions}'),o.appendChild(s);let a=document.createElement("button");a.type="button",a.className="cesium-navigation-button cesium-navigation-button-left",a.setAttribute("data-bind",'click: showClick, css: {"cesium-navigation-button-selected": !_touch, "cesium-navigation-button-unselected": _touch}');let c=document.createElement("img");c.src=hn("Widgets/Images/NavigationHelp/Mouse.svg"),c.className="cesium-navigation-button-icon",c.style.width="25px",c.style.height="25px",a.appendChild(c),a.appendChild(document.createTextNode("Mouse"));let d=document.createElement("button");d.type="button",d.className="cesium-navigation-button cesium-navigation-button-right",d.setAttribute("data-bind",'click: showTouch, css: {"cesium-navigation-button-selected": _touch, "cesium-navigation-button-unselected": !_touch}');let u=document.createElement("img");u.src=hn("Widgets/Images/NavigationHelp/Touch.svg"),u.className="cesium-navigation-button-icon",u.style.width="25px",u.style.height="25px",d.appendChild(u),d.appendChild(document.createTextNode("Touch")),s.appendChild(a),s.appendChild(d);let h=document.createElement("div");h.className="cesium-click-navigation-help cesium-navigation-help-instructions",h.setAttribute("data-bind",'css: { "cesium-click-navigation-help-visible" : !_touch}'),h.innerHTML=` <table> <tr> <td><img src="${hn("Widgets/Images/NavigationHelp/MouseLeft.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">Left click + drag</div> </td> </tr> <tr> <td><img src="${hn("Widgets/Images/NavigationHelp/MouseRight.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Right click + drag, or</div> <div class="cesium-navigation-help-details">Mouse wheel scroll</div> </td> </tr> <tr> <td><img src="${hn("Widgets/Images/NavigationHelp/MouseMiddle.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Rotate view</div> <div class="cesium-navigation-help-details">Middle click + drag, or</div> <div class="cesium-navigation-help-details">CTRL + Left/Right click + drag</div> </td> </tr> </table>`,s.appendChild(h);let p=document.createElement("div");p.className="cesium-touch-navigation-help cesium-navigation-help-instructions",p.setAttribute("data-bind",'css: { "cesium-touch-navigation-help-visible" : _touch}'),p.innerHTML=` <table> <tr> <td><img src="${hn("Widgets/Images/NavigationHelp/TouchDrag.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">One finger drag</div> </td> </tr> <tr> <td><img src="${hn("Widgets/Images/NavigationHelp/TouchZoom.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Two finger pinch</div> </td> </tr> <tr> <td><img src="${hn("Widgets/Images/NavigationHelp/TouchTilt.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Tilt view</div> <div class="cesium-navigation-help-details">Two finger drag, same direction</div> </td> </tr> <tr> <td><img src="${hn("Widgets/Images/NavigationHelp/TouchRotate.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-tilt">Rotate view</div> <div class="cesium-navigation-help-details">Two finger drag, opposite direction</div> </td> </tr> </table>`,s.appendChild(p),Ee.applyBindings(n,o),this._container=t,this._viewModel=n,this._wrapper=o,this._closeInstructions=function(g){o.contains(g.target)||(n.showInstructions=!1)},Ht.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeInstructions,!0):(document.addEventListener("mousedown",this._closeInstructions,!0),document.addEventListener("touchstart",this._closeInstructions,!0))}Object.defineProperties(p3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});p3.prototype.isDestroyed=function(){return!1};p3.prototype.destroy=function(){return Ht.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeInstructions,!0):(document.removeEventListener("mousedown",this._closeInstructions,!0),document.removeEventListener("touchstart",this._closeInstructions,!0)),Ee.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),me(this)};var o9=p3;var z2o=y(C(),1);var D2o=y(C(),1);function pee(e){this._scene=e.scene,this.lowFrameRateMessage=e.lowFrameRateMessage??"This application appears to be performing poorly on your system. Please try using a different web browser or updating your video drivers.",this.lowFrameRateMessageDismissed=!1,this.showingLowFrameRateMessage=!1,Ee.track(this,["lowFrameRateMessage","lowFrameRateMessageDismissed","showingLowFrameRateMessage"]);let t=this;this._dismissMessage=Xn(function(){t.showingLowFrameRateMessage=!1,t.lowFrameRateMessageDismissed=!0});let n=mN.fromScene(e.scene);this._unsubscribeLowFrameRate=n.lowFrameRate.addEventListener(function(){t.lowFrameRateMessageDismissed||(t.showingLowFrameRateMessage=!0)}),this._unsubscribeNominalFrameRate=n.nominalFrameRate.addEventListener(function(){t.showingLowFrameRateMessage=!1})}Object.defineProperties(pee.prototype,{scene:{get:function(){return this._scene}},dismissMessage:{get:function(){return this._dismissMessage}}});pee.prototype.destroy=function(){return this._unsubscribeLowFrameRate(),this._unsubscribeNominalFrameRate(),me(this)};var r9=pee;function A3(e){let t=Dn(e.container),n=new r9(e),i=document.createElement("div");i.className="cesium-performance-watchdog-message-area",i.setAttribute("data-bind","visible: showingLowFrameRateMessage");let o=document.createElement("button");o.setAttribute("type","button"),o.className="cesium-performance-watchdog-message-dismiss",o.innerHTML="×",o.setAttribute("data-bind","click: dismissMessage"),i.appendChild(o);let r=document.createElement("div");r.className="cesium-performance-watchdog-message",r.setAttribute("data-bind","html: lowFrameRateMessage"),i.appendChild(r),t.appendChild(i),Ee.applyBindings(n,i),this._container=t,this._viewModel=n,this._element=i}Object.defineProperties(A3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});A3.prototype.isDestroyed=function(){return!1};A3.prototype.destroy=function(){return this._viewModel.destroy(),Ee.cleanNode(this._element),this._container.removeChild(this._element),me(this)};var s9=A3;var aWo=y(C(),1);var eWo=y(C(),1);function g3(e){this._scene=e,this._orthographic=e.camera.frustum instanceof gn,this._flightInProgress=!1,this.dropDownVisible=!1,this.tooltipPerspective="Perspective Projection",this.tooltipOrthographic="Orthographic Projection",this.selectedTooltip=void 0,this.sceneMode=e.mode,Ee.track(this,["_orthographic","_flightInProgress","sceneMode","dropDownVisible","tooltipPerspective","tooltipOrthographic"]);let t=this;Ee.defineProperty(this,"selectedTooltip",function(){return t._orthographic?t.tooltipOrthographic:t.tooltipPerspective}),this._toggleDropDown=Xn(function(){t.sceneMode===re.SCENE2D||t._flightInProgress||(t.dropDownVisible=!t.dropDownVisible)}),this._eventHelper=new Lr,this._eventHelper.add(e.morphComplete,function(n,i,o,r){t.sceneMode=o,t._orthographic=o===re.SCENE2D||t._scene.camera.frustum instanceof gn}),this._eventHelper.add(e.preRender,function(){t._flightInProgress=l(e.camera._currentFlight)}),this._switchToPerspective=Xn(function(){t.sceneMode!==re.SCENE2D&&(t._scene.camera.switchToPerspectiveFrustum(),t._orthographic=!1,t.dropDownVisible=!1)}),this._switchToOrthographic=Xn(function(){t.sceneMode!==re.SCENE2D&&(t._scene.camera.switchToOrthographicFrustum(),t._orthographic=!0,t.dropDownVisible=!1)}),this._sceneMode=re}Object.defineProperties(g3.prototype,{scene:{get:function(){return this._scene}},toggleDropDown:{get:function(){return this._toggleDropDown}},switchToPerspective:{get:function(){return this._switchToPerspective}},switchToOrthographic:{get:function(){return this._switchToOrthographic}},isOrthographicProjection:{get:function(){return this._orthographic}}});g3.prototype.isDestroyed=function(){return!1};g3.prototype.destroy=function(){this._eventHelper.removeAll(),me(this)};var a9=g3;var SRt="M 28.15625,10.4375 9.125,13.21875 13.75,43.25 41.75,55.09375 50.8125,37 54.5,11.9375 z m 0.125,3 19.976451,0.394265 L 43.03125,16.875 22.6875,14.28125 z M 50.971746,15.705477 47.90625,36.03125 42.53125,46 44.84375,19.3125 z M 12.625,16.03125 l 29.15625,3.6875 -2.65625,31 L 16.4375,41.125 z",LRt="m 31.560594,6.5254438 -20.75,12.4687502 0.1875,24.5625 22.28125,11.8125 19.5,-12 0.65625,-0.375 0,-0.75 0.0312,-23.21875 z m 0.0625,3.125 16.65625,9.5000002 -16.125,10.28125 -17.34375,-9.71875 z m 18.96875,11.1875002 0.15625,20.65625 -17.46875,10.59375 0.15625,-20.28125 z m -37.0625,1.25 17.21875,9.625 -0.15625,19.21875 -16.9375,-9 z";function b3(e,t){e=Dn(e);let n=new a9(t);n._perspectivePath=SRt,n._orthographicPath=LRt;let i=document.createElement("span");i.className="cesium-projectionPicker-wrapper cesium-toolbar-button",e.appendChild(i);let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-toolbar-button",o.setAttribute("data-bind",'css: { "cesium-projectionPicker-buttonPerspective": !_orthographic, "cesium-projectionPicker-buttonOrthographic": _orthographic, "cesium-button-disabled" : sceneMode === _sceneMode.SCENE2D || _flightInProgress, "cesium-projectionPicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),o.innerHTML='<!-- ko cesiumSvgPath: { path: _perspectivePath, width: 64, height: 64, css: "cesium-projectionPicker-iconPerspective" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _orthographicPath, width: 64, height: 64, css: "cesium-projectionPicker-iconOrthographic" } --><!-- /ko -->',i.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button cesium-projectionPicker-dropDown-icon",r.setAttribute("data-bind",'css: { "cesium-projectionPicker-visible" : (dropDownVisible && _orthographic), "cesium-projectionPicker-none" : !_orthographic, "cesium-projectionPicker-hidden" : !dropDownVisible },attr: { title: tooltipPerspective },click: switchToPerspective,cesiumSvgPath: { path: _perspectivePath, width: 64, height: 64 }'),i.appendChild(r);let s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-projectionPicker-dropDown-icon",s.setAttribute("data-bind",'css: { "cesium-projectionPicker-visible" : (dropDownVisible && !_orthographic), "cesium-projectionPicker-none" : _orthographic, "cesium-projectionPicker-hidden" : !dropDownVisible},attr: { title: tooltipOrthographic },click: switchToOrthographic,cesiumSvgPath: { path: _orthographicPath, width: 64, height: 64 }'),i.appendChild(s),Ee.applyBindings(n,i),this._viewModel=n,this._container=e,this._wrapper=i,this._closeDropDown=function(a){i.contains(a.target)||(n.dropDownVisible=!1)},Ht.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(b3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});b3.prototype.isDestroyed=function(){return!1};b3.prototype.destroy=function(){return this._viewModel.destroy(),Ht.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),Ee.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),me(this)};var c9=b3;var xWo=y(C(),1);var fWo=y(C(),1);function y3(e,t){this._scene=e;let n=this,i=function(o,r,s,a){n.sceneMode=s,n.dropDownVisible=!1};this._eventHelper=new Lr,this._eventHelper.add(e.morphStart,i),this._duration=t??2,this.sceneMode=e.mode,this.dropDownVisible=!1,this.tooltip2D="2D",this.tooltip3D="3D",this.tooltipColumbusView="Columbus View",Ee.track(this,["sceneMode","dropDownVisible","tooltip2D","tooltip3D","tooltipColumbusView"]),this.selectedTooltip=void 0,Ee.defineProperty(this,"selectedTooltip",function(){let o=n.sceneMode;return o===re.SCENE2D?n.tooltip2D:o===re.SCENE3D?n.tooltip3D:n.tooltipColumbusView}),this._toggleDropDown=Xn(function(){n.dropDownVisible=!n.dropDownVisible}),this._morphTo2D=Xn(function(){e.morphTo2D(n._duration)}),this._morphTo3D=Xn(function(){e.morphTo3D(n._duration)}),this._morphToColumbusView=Xn(function(){e.morphToColumbusView(n._duration)}),this._sceneMode=re}Object.defineProperties(y3.prototype,{scene:{get:function(){return this._scene}},duration:{get:function(){return this._duration},set:function(e){this._duration=e}},toggleDropDown:{get:function(){return this._toggleDropDown}},morphTo2D:{get:function(){return this._morphTo2D}},morphTo3D:{get:function(){return this._morphTo3D}},morphToColumbusView:{get:function(){return this._morphToColumbusView}}});y3.prototype.isDestroyed=function(){return!1};y3.prototype.destroy=function(){this._eventHelper.removeAll(),me(this)};var l9=y3;var RRt="m 32.401392,4.9330437 c -7.087603,0 -14.096095,2.884602 -19.10793,7.8946843 -5.0118352,5.010083 -7.9296167,11.987468 -7.9296167,19.072999 0,7.085531 2.9177815,14.097848 7.9296167,19.107931 4.837653,4.835961 11.541408,7.631372 18.374354,7.82482 0.05712,0.01231 0.454119,0.139729 0.454119,0.139729 l 0.03493,-0.104797 c 0.08246,7.84e-4 0.162033,0.03493 0.244525,0.03493 0.08304,0 0.161515,-0.03414 0.244526,-0.03493 l 0.03493,0.104797 c 0,0 0.309474,-0.129487 0.349323,-0.139729 6.867765,-0.168094 13.582903,-2.965206 18.444218,-7.82482 2.558195,-2.5573 4.551081,-5.638134 5.903547,-8.977584 1.297191,-3.202966 2.02607,-6.661489 2.02607,-10.130347 0,-6.237309 -2.366261,-12.31219 -6.322734,-17.116794 -0.0034,-0.02316 0.0049,-0.04488 0,-0.06986 -0.01733,-0.08745 -0.104529,-0.278855 -0.104797,-0.279458 -5.31e-4,-0.0012 -0.522988,-0.628147 -0.523984,-0.62878 -3.47e-4,-2.2e-4 -0.133444,-0.03532 -0.244525,-0.06987 C 51.944299,13.447603 51.751076,13.104317 51.474391,12.827728 46.462556,7.8176457 39.488996,4.9330437 32.401392,4.9330437 z m -2.130866,3.5281554 0.104797,9.6762289 c -4.111695,-0.08361 -7.109829,-0.423664 -9.257041,-0.943171 1.198093,-2.269271 2.524531,-4.124404 3.91241,-5.414496 2.167498,-2.0147811 3.950145,-2.8540169 5.239834,-3.3185619 z m 2.794579,0 c 1.280302,0.4754953 3.022186,1.3285948 5.065173,3.2486979 1.424667,1.338973 2.788862,3.303645 3.982275,5.728886 -2.29082,0.403367 -5.381258,0.621049 -8.942651,0.698645 L 33.065105,8.4611991 z m 5.728886,0.2445256 c 4.004072,1.1230822 7.793098,3.1481363 10.724195,6.0782083 0.03468,0.03466 0.07033,0.06991 0.104797,0.104797 -0.45375,0.313891 -0.923054,0.663002 -1.956205,1.082899 -0.647388,0.263114 -1.906242,0.477396 -2.829511,0.733577 -1.382296,-2.988132 -3.027146,-5.368585 -4.785716,-7.0213781 -0.422866,-0.397432 -0.835818,-0.6453247 -1.25756,-0.9781032 z m -15.33525,0.7685092 c -0.106753,0.09503 -0.207753,0.145402 -0.31439,0.244526 -1.684973,1.5662541 -3.298068,3.8232211 -4.680919,6.5672591 -0.343797,-0.14942 -1.035052,-0.273198 -1.292493,-0.419186 -0.956528,-0.542427 -1.362964,-1.022024 -1.537018,-1.292493 -0.0241,-0.03745 -0.01868,-0.0401 -0.03493,-0.06986 2.250095,-2.163342 4.948824,-3.869984 7.859752,-5.0302421 z m -9.641296,7.0912431 c 0.464973,0.571618 0.937729,1.169056 1.956205,1.746612 0.349907,0.198425 1.107143,0.335404 1.537018,0.523983 -1.20166,3.172984 -1.998037,7.051901 -2.165798,11.772162 C 14.256557,30.361384 12.934823,30.161483 12.280427,29.90959 10.644437,29.279855 9.6888882,28.674891 9.1714586,28.267775 8.6540289,27.860658 8.6474751,27.778724 8.6474751,27.778724 l -0.069864,0.03493 C 9.3100294,23.691285 11.163248,19.798527 13.817445,16.565477 z m 37.552149,0.523984 c 2.548924,3.289983 4.265057,7.202594 4.890513,11.318043 -0.650428,0.410896 -1.756876,1.001936 -3.563088,1.606882 -1.171552,0.392383 -3.163859,0.759153 -4.960377,1.117832 -0.04367,-4.752703 -0.784809,-8.591423 -1.88634,-11.807094 0.917574,-0.263678 2.170552,-0.486495 2.864443,-0.76851 1.274693,-0.518066 2.003942,-1.001558 2.654849,-1.467153 z m -31.439008,2.619917 c 2.487341,0.672766 5.775813,1.137775 10.479669,1.222628 l 0.104797,10.689263 0,0.03493 0,0.733577 c -5.435005,-0.09059 -9.512219,-0.519044 -12.610536,-1.117831 0.106127,-4.776683 0.879334,-8.55791 2.02607,-11.562569 z m 23.264866,0.31439 c 1.073459,3.067541 1.833795,6.821314 1.816476,11.702298 -3.054474,0.423245 -7.062018,0.648559 -11.702298,0.698644 l 0,-0.838373 -0.104796,-10.654331 c 4.082416,-0.0864 7.404468,-0.403886 9.990618,-0.908238 z M 8.2632205,30.922625 c 0.7558676,0.510548 1.5529563,1.013339 3.0041715,1.57195 0.937518,0.360875 2.612202,0.647642 3.91241,0.978102 0.112814,3.85566 0.703989,7.107756 1.606883,9.920754 -1.147172,-0.324262 -2.644553,-0.640648 -3.423359,-0.978102 -1.516688,-0.657177 -2.386627,-1.287332 -2.864443,-1.71168 -0.477816,-0.424347 -0.489051,-0.489051 -0.489051,-0.489051 L 9.8002387,40.319395 C 8.791691,37.621767 8.1584238,34.769583 8.1584238,31.900727 c 0,-0.330153 0.090589,-0.648169 0.1047967,-0.978102 z m 48.2763445,0.419186 c 0.0047,0.188973 0.06986,0.36991 0.06986,0.558916 0,2.938869 -0.620228,5.873558 -1.676747,8.628261 -0.07435,0.07583 -0.06552,0.07411 -0.454119,0.349323 -0.606965,0.429857 -1.631665,1.042044 -3.318562,1.676747 -1.208528,0.454713 -3.204964,0.850894 -5.135038,1.25756 0.84593,-2.765726 1.41808,-6.005357 1.606883,-9.815957 2.232369,-0.413371 4.483758,-0.840201 5.938479,-1.327425 1.410632,-0.472457 2.153108,-0.89469 2.96924,-1.327425 z m -38.530252,2.864443 c 3.208141,0.56697 7.372279,0.898588 12.575603,0.978103 l 0.174662,9.885821 c -4.392517,-0.06139 -8.106722,-0.320566 -10.863925,-0.803441 -1.051954,-2.664695 -1.692909,-6.043794 -1.88634,-10.060483 z m 26.793022,0.31439 c -0.246298,3.923551 -0.877762,7.263679 -1.816476,9.885822 -2.561957,0.361954 -5.766249,0.560708 -9.431703,0.62878 l -0.174661,-9.815957 c 4.491734,-0.04969 8.334769,-0.293032 11.42284,-0.698645 z M 12.035901,44.860585 c 0.09977,0.04523 0.105535,0.09465 0.209594,0.139729 1.337656,0.579602 3.441099,1.058072 5.589157,1.537018 1.545042,3.399208 3.548524,5.969402 5.589157,7.789888 -3.034411,-1.215537 -5.871615,-3.007978 -8.174142,-5.309699 -1.245911,-1.245475 -2.271794,-2.662961 -3.213766,-4.156936 z m 40.69605,0 c -0.941972,1.493975 -1.967855,2.911461 -3.213765,4.156936 -2.74253,2.741571 -6.244106,4.696717 -9.955686,5.868615 0.261347,-0.241079 0.507495,-0.394491 0.768509,-0.663713 1.674841,-1.727516 3.320792,-4.181056 4.645987,-7.265904 2.962447,-0.503021 5.408965,-1.122293 7.161107,-1.781544 0.284034,-0.106865 0.337297,-0.207323 0.593848,-0.31439 z m -31.404076,2.305527 c 2.645807,0.376448 5.701178,0.649995 9.466635,0.698645 l 0.139729,7.789888 c -1.38739,-0.480844 -3.316218,-1.29837 -5.659022,-3.388427 -1.388822,-1.238993 -2.743668,-3.0113 -3.947342,-5.100106 z m 20.365491,0.104797 c -1.04872,2.041937 -2.174337,3.779068 -3.353494,4.995309 -1.853177,1.911459 -3.425515,2.82679 -4.611055,3.353494 l -0.139729,-7.789887 c 3.13091,-0.05714 5.728238,-0.278725 8.104278,-0.558916 z",VRt="m 2.9825053,17.550598 0,1.368113 0,26.267766 0,1.368113 1.36811,0 54.9981397,0 1.36811,0 0,-1.368113 0,-26.267766 0,-1.368113 -1.36811,0 -54.9981397,0 -1.36811,0 z m 2.73623,2.736226 10.3292497,0 0,10.466063 -10.3292497,0 0,-10.466063 z m 13.0654697,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 10.32926,0 0,10.466063 -10.32926,0 0,-10.466063 z m -41.9326497,13.202288 10.3292497,0 0,10.329252 -10.3292497,0 0,-10.329252 z m 13.0654697,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 10.32926,0 0,10.329252 -10.32926,0 0,-10.329252 z",GRt="m 14.723969,17.675598 -0.340489,0.817175 -11.1680536,26.183638 -0.817175,1.872692 2.076986,0 54.7506996,0 2.07698,0 -0.81717,-1.872692 -11.16805,-26.183638 -0.34049,-0.817175 -0.91933,0 -32.414586,0 -0.919322,0 z m 1.838643,2.723916 6.196908,0 -2.928209,10.418977 -7.729111,0 4.460412,-10.418977 z m 9.02297,0 4.903049,0 0,10.418977 -7.831258,0 2.928209,-10.418977 z m 7.626964,0 5.584031,0 2.62176,10.418977 -8.205791,0 0,-10.418977 z m 8.410081,0 5.51593,0 4.46042,10.418977 -7.38863,0 -2.58772,-10.418977 z m -30.678091,13.142892 8.103649,0 -2.89416,10.282782 -9.6018026,0 4.3923136,-10.282782 z m 10.929711,0 8.614384,0 0,10.282782 -11.508544,0 2.89416,-10.282782 z m 11.338299,0 8.852721,0 2.58772,10.282782 -11.440441,0 0,-10.282782 z m 11.678781,0 7.86531,0 4.39231,10.282782 -9.6699,0 -2.58772,-10.282782 z";function C3(e,t,n){e=Dn(e);let i=new l9(t,n);i._globePath=RRt,i._flatMapPath=VRt,i._columbusViewPath=GRt;let o=document.createElement("span");o.className="cesium-sceneModePicker-wrapper cesium-toolbar-button",e.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button",r.setAttribute("data-bind",'css: { "cesium-sceneModePicker-button2D": sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-button3D": sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-buttonColumbusView": sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),r.innerHTML='<!-- ko cesiumSvgPath: { path: _globePath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon3D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon2D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-iconColumbusView" } --><!-- /ko -->',o.appendChild(r);let s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",s.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE3D)) || (!dropDownVisible && (sceneMode === _sceneMode.SCENE3D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip3D },click: morphTo3D,cesiumSvgPath: { path: _globePath, width: 64, height: 64 }'),o.appendChild(s);let a=document.createElement("button");a.type="button",a.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",a.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE2D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip2D },click: morphTo2D,cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64 }'),o.appendChild(a);let c=document.createElement("button");c.type="button",c.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",c.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.COLUMBUS_VIEW)) || (!dropDownVisible && (sceneMode === _sceneMode.COLUMBUS_VIEW)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-hidden" : !dropDownVisible},attr: { title: tooltipColumbusView },click: morphToColumbusView,cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64 }'),o.appendChild(c),Ee.applyBindings(i,o),this._viewModel=i,this._container=e,this._wrapper=o,this._closeDropDown=function(d){o.contains(d.target)||(i.dropDownVisible=!1)},Ht.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(C3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});C3.prototype.isDestroyed=function(){return!1};C3.prototype.destroy=function(){return this._viewModel.destroy(),Ht.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),Ee.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),me(this)};var d9=C3;var wWo=y(C(),1);var SWo=y(C(),1);var ZRt=new D,x3="-1000px";function u9(e,t,n){this._scene=e,this._screenPositionX=x3,this._screenPositionY=x3,this._tweens=e.tweens,this._container=n??document.body,this._selectionIndicatorElement=t,this._scale=1,this.position=void 0,this.showSelection=!1,Ee.track(this,["position","_screenPositionX","_screenPositionY","_scale","showSelection"]),this.isVisible=void 0,Ee.defineProperty(this,"isVisible",{get:function(){return this.showSelection&&l(this.position)}}),Ee.defineProperty(this,"_transform",{get:function(){return`scale(${this._scale})`}}),this.computeScreenSpacePosition=function(i,o){return to.worldToWindowCoordinates(e,i,o)}}u9.prototype.update=function(){if(this.showSelection&&l(this.position)){let e=this.computeScreenSpacePosition(this.position,ZRt);if(!l(e))this._screenPositionX=x3,this._screenPositionY=x3;else{let t=this._container,n=t.parentNode.clientWidth,i=t.parentNode.clientHeight,o=this._selectionIndicatorElement.clientWidth,r=o*.5;e.x=Math.min(Math.max(e.x,-o),n+o)-r,e.y=Math.min(Math.max(e.y,-o),i+o)-r,this._screenPositionX=`${Math.floor(e.x+.25)}px`,this._screenPositionY=`${Math.floor(e.y+.25)}px`}}};u9.prototype.animateAppear=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:2,stopValue:1,duration:.8,easingFunction:ms.EXPONENTIAL_OUT})};u9.prototype.animateDepart=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:this._scale,stopValue:1.5,duration:.8,easingFunction:ms.EXPONENTIAL_OUT})};Object.defineProperties(u9.prototype,{container:{get:function(){return this._container}},selectionIndicatorElement:{get:function(){return this._selectionIndicatorElement}},scene:{get:function(){return this._scene}}});var m9=u9;function I3(e,t){e=Dn(e),this._container=e;let n=document.createElement("div");n.className="cesium-selection-wrapper",n.setAttribute("data-bind",'style: { "top" : _screenPositionY, "left" : _screenPositionX },css: { "cesium-selection-wrapper-visible" : isVisible }'),e.appendChild(n),this._element=n;let i="http://www.w3.org/2000/svg",o="M -34 -34 L -34 -11.25 L -30 -15.25 L -30 -30 L -15.25 -30 L -11.25 -34 L -34 -34 z M 11.25 -34 L 15.25 -30 L 30 -30 L 30 -15.25 L 34 -11.25 L 34 -34 L 11.25 -34 z M -34 11.25 L -34 34 L -11.25 34 L -15.25 30 L -30 30 L -30 15.25 L -34 11.25 z M 34 11.25 L 30 15.25 L 30 30 L 15.25 30 L 11.25 34 L 34 34 L 34 11.25 z",r=document.createElementNS(i,"svg:svg");r.setAttribute("width",160),r.setAttribute("height",160),r.setAttribute("viewBox","0 0 160 160");let s=document.createElementNS(i,"g");s.setAttribute("transform","translate(80,80)"),r.appendChild(s);let a=document.createElementNS(i,"path");a.setAttribute("data-bind","attr: { transform: _transform }"),a.setAttribute("d",o),s.appendChild(a),n.appendChild(r);let c=new m9(t,this._element,this._container);this._viewModel=c,Ee.applyBindings(this._viewModel,this._element)}Object.defineProperties(I3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});I3.prototype.isDestroyed=function(){return!1};I3.prototype.destroy=function(){let e=this._container;return Ee.cleanNode(this._element),e.removeChild(this._element),me(this)};var h9=I3;var YWo=y(C(),1);var FWo=y(C(),1);function E_(e,t,n){this._color=e,this._height=t,this._base=n??0}E_.prototype.getHeight=function(){return this._height};E_.prototype.getBase=function(){return this._base};E_.prototype.getStartTime=function(){return this._start};E_.prototype.getStopTime=function(){return this._stop};E_.prototype.setRange=function(e,t){this._start=e,this._stop=t};E_.prototype.render=function(e){let t="";if(this._start&&this._stop&&this._color){let n=j.secondsDifference(this._start,e.epochJulian),i=Math.round(e.timeBarWidth*e.getAlpha(n)),o=j.secondsDifference(this._stop,e.epochJulian),r=Math.round(e.timeBarWidth*e.getAlpha(o))-i;i<0&&(r+=i,i=0),i+r>e.timeBarWidth&&(r=e.timeBarWidth-i),r>0&&(t=`<span class="cesium-timeline-highlight" style="left: ${i.toString()}px; width: ${r.toString()}px; bottom: ${this._base.toString()}px; height: ${this._height}px; background-color: ${this._color};"></span>`)}return t};var f9=E_;var vWo=y(C(),1);function ZSe(e,t,n,i){this.interval=e,this.height=t,this.color=n||new U(.5,.5,.5,1),this.backgroundColor=i||new U(0,0,0,0)}ZSe.prototype.render=function(e,t){let n=this.interval.start,i=this.interval.stop,o=t.startJulian,r=j.addSeconds(t.startJulian,t.duration,new j);if(j.lessThan(n,o)&&j.greaterThan(i,r))e.fillStyle=this.color.toCssColorString(),e.fillRect(0,t.y,t.timeBarWidth,this.height);else if(j.lessThanOrEquals(n,r)&&j.greaterThanOrEquals(i,o)){let s,a,c;for(s=0;s<t.timeBarWidth;++s){let d=j.addSeconds(t.startJulian,s/t.timeBarWidth*t.duration,new j);!l(a)&&j.greaterThanOrEquals(d,n)?a=s:!l(c)&&j.greaterThanOrEquals(d,i)&&(c=s)}e.fillStyle=this.backgroundColor.toCssColorString(),e.fillRect(0,t.y,t.timeBarWidth,this.height),l(a)&&(l(c)||(c=t.timeBarWidth),e.fillStyle=this.color.toCssColorString(),e.fillRect(a,t.y,Math.max(c-a,1),this.height))}};var p9=ZSe;var Aee=1e12,zm={none:0,scrub:1,slide:2,zoom:3,touchOnly:4},Ql={none:0,scrub:1,slideZoom:2,singleTap:3,ignore:4},By=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800,1296e3,2592e3,5184e3,7776e3,15552e3,31536e3,63072e3,126144e3,15768e4,31536e4,63072e4,126144e4,15768e5,31536e5,63072e5,126144e5,15768e6,31536e6],BRt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Ul(e,t){e=Dn(e);let n=e.ownerDocument;this.container=e;let i=n.createElement("div");i.className="cesium-timeline-main",e.appendChild(i),this._topDiv=i,this._endJulian=void 0,this._epochJulian=void 0,this._lastXPos=void 0,this._scrubElement=void 0,this._startJulian=void 0,this._timeBarSecondsSpan=void 0,this._clock=t,this._scrubJulian=t.currentTime,this._mainTicSpan=-1,this._mouseMode=zm.none,this._touchMode=Ql.none,this._touchState={centerX:0,spanX:0},this._mouseX=0,this._timelineDrag=0,this._timelineDragLocation=void 0,this._lastHeight=void 0,this._lastWidth=void 0,this._topDiv.innerHTML='<div class="cesium-timeline-bar"></div><div class="cesium-timeline-trackContainer"><canvas class="cesium-timeline-tracks" width="10" height="1"></canvas></div><div class="cesium-timeline-needle"></div><span class="cesium-timeline-ruler"></span>',this._timeBarEle=this._topDiv.childNodes[0],this._trackContainer=this._topDiv.childNodes[1],this._trackListEle=this._topDiv.childNodes[1].childNodes[0],this._needleEle=this._topDiv.childNodes[2],this._rulerEle=this._topDiv.childNodes[3],this._context=this._trackListEle.getContext("2d"),this._trackList=[],this._highlightRanges=[],this.zoomTo(t.startTime,t.stopTime),this._onMouseDown=wRt(this),this._onMouseUp=XRt(this),this._onMouseMove=WRt(this),this._onMouseWheel=FRt(this),this._onTouchStart=PRt(this),this._onTouchMove=vRt(this),this._onTouchEnd=MRt(this);let o=this._timeBarEle;n.addEventListener("mouseup",this._onMouseUp,!1),n.addEventListener("mousemove",this._onMouseMove,!1),o.addEventListener("mousedown",this._onMouseDown,!1),o.addEventListener("DOMMouseScroll",this._onMouseWheel,!1),o.addEventListener("mousewheel",this._onMouseWheel,!1),o.addEventListener("touchstart",this._onTouchStart,!1),o.addEventListener("touchmove",this._onTouchMove,!1),o.addEventListener("touchend",this._onTouchEnd,!1),o.addEventListener("touchcancel",this._onTouchEnd,!1),this._topDiv.oncontextmenu=function(){return!1},t.onTick.addEventListener(this.updateFromClock,this),this.updateFromClock()}Ul.prototype.addEventListener=function(e,t,n){this._topDiv.addEventListener(e,t,n)};Ul.prototype.removeEventListener=function(e,t,n){this._topDiv.removeEventListener(e,t,n)};Ul.prototype.isDestroyed=function(){return!1};Ul.prototype.destroy=function(){this._clock.onTick.removeEventListener(this.updateFromClock,this);let e=this.container.ownerDocument;e.removeEventListener("mouseup",this._onMouseUp,!1),e.removeEventListener("mousemove",this._onMouseMove,!1);let t=this._timeBarEle;t.removeEventListener("mousedown",this._onMouseDown,!1),t.removeEventListener("DOMMouseScroll",this._onMouseWheel,!1),t.removeEventListener("mousewheel",this._onMouseWheel,!1),t.removeEventListener("touchstart",this._onTouchStart,!1),t.removeEventListener("touchmove",this._onTouchMove,!1),t.removeEventListener("touchend",this._onTouchEnd,!1),t.removeEventListener("touchcancel",this._onTouchEnd,!1),this.container.removeChild(this._topDiv),me(this)};Ul.prototype.addHighlightRange=function(e,t,n){let i=new f9(e,t,n);return this._highlightRanges.push(i),this.resize(),i};Ul.prototype.addTrack=function(e,t,n,i){let o=new p9(e,t,n,i);return this._trackList.push(o),this._lastHeight=void 0,this.resize(),o};Ul.prototype.zoomTo=function(e,t){if(this._startJulian=e,this._endJulian=t,this._timeBarSecondsSpan=j.secondsDifference(t,e),this._clock&&this._clock.clockRange!==ls.UNBOUNDED){let i=this._clock.startTime,o=this._clock.stopTime,r=j.secondsDifference(o,i),s=j.secondsDifference(i,this._startJulian),a=j.secondsDifference(o,this._endJulian);this._timeBarSecondsSpan>=r?(this._timeBarSecondsSpan=r,this._startJulian=this._clock.startTime,this._endJulian=this._clock.stopTime):s>0?(this._endJulian=j.addSeconds(this._endJulian,s,new j),this._startJulian=i,this._timeBarSecondsSpan=j.secondsDifference(this._endJulian,this._startJulian)):a<0&&(this._startJulian=j.addSeconds(this._startJulian,a,new j),this._endJulian=o,this._timeBarSecondsSpan=j.secondsDifference(this._endJulian,this._startJulian))}this._makeTics();let n=document.createEvent("Event");n.initEvent("setzoom",!0,!0),n.startJulian=this._startJulian,n.endJulian=this._endJulian,n.epochJulian=this._epochJulian,n.totalSpan=this._timeBarSecondsSpan,n.mainTicSpan=this._mainTicSpan,this._topDiv.dispatchEvent(n)};Ul.prototype.zoomFrom=function(e){let t=j.secondsDifference(this._scrubJulian,this._startJulian);e>1||t<0||t>this._timeBarSecondsSpan?t=this._timeBarSecondsSpan*.5:t+=t-this._timeBarSecondsSpan*.5;let n=this._timeBarSecondsSpan-t;this.zoomTo(j.addSeconds(this._startJulian,t-t*e,new j),j.addSeconds(this._endJulian,n*e-n,new j))};function gee(e){return e<10?`0${e.toString()}`:e.toString()}Ul.prototype.makeLabel=function(e){let t=j.toGregorianDate(e),n=t.millisecond,i=" UTC";if(n>0&&this._timeBarSecondsSpan<3600){for(i=Math.floor(n).toString();i.length<3;)i=`0${i}`;i=`.${i}`}return`${BRt[t.month-1]} ${t.day} ${t.year} ${gee(t.hour)}:${gee(t.minute)}:${gee(t.second)}${i}`};Ul.prototype.smallestTicInPixels=7;Ul.prototype._makeTics=function(){let e=this._timeBarEle,t=j.secondsDifference(this._scrubJulian,this._startJulian),n=Math.round(t*this._topDiv.clientWidth/this._timeBarSecondsSpan),i=n-8,o,r=this;this._needleEle.style.left=`${n.toString()}px`;let s="",a=.01,c=31536e6,d=1e-10,u=0,h=this._timeBarSecondsSpan;h<a?(h=a,this._timeBarSecondsSpan=a,this._endJulian=j.addSeconds(this._startJulian,a,new j)):h>c&&(h=c,this._timeBarSecondsSpan=c,this._endJulian=j.addSeconds(this._startJulian,c,new j));let p=this._timeBarEle.clientWidth;p<10&&(p=10);let g=this._startJulian,f=Math.min(h/p*1e-5,.4),b,x=j.toGregorianDate(g);h>31536e4?b=j.fromDate(new Date(Date.UTC(Math.floor(x.year/100)*100,0))):h>31536e3?b=j.fromDate(new Date(Date.UTC(Math.floor(x.year/10)*10,0))):h>86400?b=j.fromDate(new Date(Date.UTC(x.year,0))):b=j.fromDate(new Date(Date.UTC(x.year,x.month,x.day)));let I=j.secondsDifference(this._startJulian,j.addSeconds(b,f,new j)),_=I+h;this._epochJulian=b;function E(v){return Math.floor(I/v)*v}function S(v,O){return Math.ceil(v/O+.5)*O}function R(v){return(v-I)/h}function G(v,O){return v-O*Math.round(v/O)}this._rulerEle.innerHTML=this.makeLabel(j.addSeconds(this._endJulian,-a,new j));let B=this._rulerEle.offsetWidth+20;B<30&&(B=180);let w=u;u-=d;let F={startTime:I,startJulian:g,epochJulian:b,duration:h,timeBarWidth:p,getAlpha:R};this._highlightRanges.forEach(function(v){s+=v.render(F)});let P=0,A=0,T=0,L=B/p;L>1&&(L=1),L*=this._timeBarSecondsSpan;let V=-1,W=-1,M=By.length,Q;for(Q=0;Q<M;++Q){let v=By[Q];if(++V,P=v,v>L&&v>u)break;W<0&&p*(v/this._timeBarSecondsSpan)>=this.smallestTicInPixels&&(W=V)}if(V>0){for(;V>0;)if(--V,Math.abs(G(P,By[V]))<1e-5){By[V]>=u&&(A=By[V]);break}if(W>=0)for(;W<V;){if(Math.abs(G(A,By[W]))<1e-5&&By[W]>=u){T=By[W];break}++W}}u=w,u>d&&T<1e-5&&Math.abs(u-P)>d&&(T=u,u<=P+d&&(A=0));let N=-999999,k;if(p*(T/this._timeBarSecondsSpan)>=3)for(o=E(T);o<=_;o=S(o,T))s+=`<span class="cesium-timeline-ticTiny" style="left: ${Math.round(p*R(o)).toString()}px;"></span>`;if(p*(A/this._timeBarSecondsSpan)>=3)for(o=E(A);o<=_;o=S(o,A))s+=`<span class="cesium-timeline-ticSub" style="left: ${Math.round(p*R(o)).toString()}px;"></span>`;if(p*(P/this._timeBarSecondsSpan)>=2){this._mainTicSpan=P,_+=P,o=E(P);let v=j.computeTaiMinusUtc(b);for(;o<=_;){let O=j.addSeconds(g,o-I,new j);if(P>2.1){let te=j.computeTaiMinusUtc(O);Math.abs(te-v)>.1&&(o+=te-v,O=j.addSeconds(g,o-I,new j))}let H=Math.round(p*R(o)),ee=this.makeLabel(O);this._rulerEle.innerHTML=ee,k=this._rulerEle.offsetWidth,k<10&&(k=B);let K=H-(k/2-1);K>N?(N=K+k+5,s+=`<span class="cesium-timeline-ticMain" style="left: ${H.toString()}px;"></span><span class="cesium-timeline-ticLabel" style="left: ${K.toString()}px;">${ee}</span>`):s+=`<span class="cesium-timeline-ticSub" style="left: ${H.toString()}px;"></span>`,o=S(o,P)}}else this._mainTicSpan=-1;s+=`<span class="cesium-timeline-icon16" style="left:${i}px;bottom:0;background-position: 0 0;"></span>`,e.innerHTML=s,this._scrubElement=e.lastChild,this._context.clearRect(0,0,this._trackListEle.width,this._trackListEle.height),F.y=0,this._trackList.forEach(function(v){v.render(r._context,F),F.y+=v.height})};Ul.prototype.updateFromClock=function(){this._scrubJulian=this._clock.currentTime;let e=this._scrubElement;if(l(this._scrubElement)){let t=j.secondsDifference(this._scrubJulian,this._startJulian),n=Math.round(t*this._topDiv.clientWidth/this._timeBarSecondsSpan);this._lastXPos!==n&&(this._lastXPos=n,e.style.left=`${n-8}px`,this._needleEle.style.left=`${n}px`)}l(this._timelineDragLocation)&&(this._setTimeBarTime(this._timelineDragLocation,this._timelineDragLocation*this._timeBarSecondsSpan/this._topDiv.clientWidth),this.zoomTo(j.addSeconds(this._startJulian,this._timelineDrag,new j),j.addSeconds(this._endJulian,this._timelineDrag,new j)))};Ul.prototype._setTimeBarTime=function(e,t){if(e=Math.round(e),this._scrubJulian=j.addSeconds(this._startJulian,t,new j),this._scrubElement){let i=e-8;this._scrubElement.style.left=`${i.toString()}px`,this._needleEle.style.left=`${e.toString()}px`}let n=document.createEvent("Event");n.initEvent("settime",!0,!0),n.clientX=e,n.timeSeconds=t,n.timeJulian=this._scrubJulian,n.clock=this._clock,this._topDiv.dispatchEvent(n)};function wRt(e){return function(t){e._mouseMode!==zm.touchOnly&&(t.button===0?(e._mouseMode=zm.scrub,e._scrubElement&&(e._scrubElement.style.backgroundPosition="-16px 0"),e._onMouseMove(t)):(e._mouseX=t.clientX,t.button===2?e._mouseMode=zm.zoom:e._mouseMode=zm.slide)),t.preventDefault()}}function XRt(e){return function(t){e._mouseMode=zm.none,e._scrubElement&&(e._scrubElement.style.backgroundPosition="0 0"),e._timelineDrag=0,e._timelineDragLocation=void 0}}function WRt(e){return function(t){let n;if(e._mouseMode===zm.scrub){t.preventDefault();let i=t.clientX-e._topDiv.getBoundingClientRect().left;i<0?(e._timelineDragLocation=0,e._timelineDrag=-.01*e._timeBarSecondsSpan):i>e._topDiv.clientWidth?(e._timelineDragLocation=e._topDiv.clientWidth,e._timelineDrag=.01*e._timeBarSecondsSpan):(e._timelineDragLocation=void 0,e._setTimeBarTime(i,i*e._timeBarSecondsSpan/e._topDiv.clientWidth))}else if(e._mouseMode===zm.slide){if(n=e._mouseX-t.clientX,e._mouseX=t.clientX,n!==0){let i=n*e._timeBarSecondsSpan/e._topDiv.clientWidth;e.zoomTo(j.addSeconds(e._startJulian,i,new j),j.addSeconds(e._endJulian,i,new j))}}else e._mouseMode===zm.zoom&&(n=e._mouseX-t.clientX,e._mouseX=t.clientX,n!==0&&e.zoomFrom(Math.pow(1.01,n)))}}function FRt(e){return function(t){let n=t.wheelDeltaY||t.wheelDelta||-t.detail;Aee=Math.max(Math.min(Math.abs(n),Aee),1),n/=Aee,e.zoomFrom(Math.pow(1.05,-n))}}function PRt(e){return function(t){let n=t.touches.length,i,o,r=e._topDiv.getBoundingClientRect().left;t.preventDefault(),e._mouseMode=zm.touchOnly,n===1?(i=j.secondsDifference(e._scrubJulian,e._startJulian),o=Math.round(i*e._topDiv.clientWidth/e._timeBarSecondsSpan+r),Math.abs(t.touches[0].clientX-o)<50?(e._touchMode=Ql.scrub,e._scrubElement&&(e._scrubElement.style.backgroundPosition=n===1?"-16px 0":"0 0")):(e._touchMode=Ql.singleTap,e._touchState.centerX=t.touches[0].clientX-r)):n===2?(e._touchMode=Ql.slideZoom,e._touchState.centerX=(t.touches[0].clientX+t.touches[1].clientX)*.5-r,e._touchState.spanX=Math.abs(t.touches[0].clientX-t.touches[1].clientX)):e._touchMode=Ql.ignore}}function MRt(e){return function(t){let n=t.touches.length,i=e._topDiv.getBoundingClientRect().left;e._touchMode===Ql.singleTap?(e._touchMode=Ql.scrub,e._onTouchMove(t)):e._touchMode===Ql.scrub&&e._onTouchMove(t),e._mouseMode=zm.touchOnly,n!==1?e._touchMode=n>0?Ql.ignore:Ql.none:e._touchMode===Ql.slideZoom&&(e._touchState.centerX=t.touches[0].clientX-i),e._scrubElement&&(e._scrubElement.style.backgroundPosition="0 0")}}function vRt(e){return function(t){let n,i,o,r,s,a,c=1,d=e._topDiv.getBoundingClientRect().left;e._touchMode===Ql.singleTap&&(e._touchMode=Ql.slideZoom),e._mouseMode=zm.touchOnly,e._touchMode===Ql.scrub?(t.preventDefault(),t.changedTouches.length===1&&(i=t.changedTouches[0].clientX-d,i>=0&&i<=e._topDiv.clientWidth&&e._setTimeBarTime(i,i*e._timeBarSecondsSpan/e._topDiv.clientWidth))):e._touchMode===Ql.slideZoom&&(o=t.touches.length,o===2?(r=(t.touches[0].clientX+t.touches[1].clientX)*.5-d,s=Math.abs(t.touches[0].clientX-t.touches[1].clientX)):o===1&&(r=t.touches[0].clientX-d,s=0),l(r)&&(s>0&&e._touchState.spanX>0?(c=e._touchState.spanX/s,a=j.addSeconds(e._startJulian,(e._touchState.centerX*e._timeBarSecondsSpan-r*e._timeBarSecondsSpan*c)/e._topDiv.clientWidth,new j)):(n=e._touchState.centerX-r,a=j.addSeconds(e._startJulian,n*e._timeBarSecondsSpan/e._topDiv.clientWidth,new j)),e.zoomTo(a,j.addSeconds(a,e._timeBarSecondsSpan*c,new j)),e._touchState.centerX=r,e._touchState.spanX=s))}}Ul.prototype.resize=function(){let e=this.container.clientWidth,t=this.container.clientHeight;if(e===this._lastWidth&&t===this._lastHeight)return;this._trackContainer.style.height=`${t}px`;let n=1;this._trackList.forEach(function(i){n+=i.height}),this._trackListEle.style.height=`${n.toString()}px`,this._trackListEle.width=this._trackListEle.clientWidth,this._trackListEle.height=n,this._makeTics(),this._lastXPos=void 0,this._lastWidth=e,this._lastHeight=t};var A9=Ul;var cFo=y(C(),1);var tFo=y(C(),1);var FSe=y(WSe(),1);function QRt(e){let t=!1,n=window.screen;return l(n)&&(l(n.lockOrientation)?t=n.lockOrientation(e):l(n.mozLockOrientation)?t=n.mozLockOrientation(e):l(n.msLockOrientation)?t=n.msLockOrientation(e):l(n.orientation&&n.orientation.lock)&&(t=n.orientation.lock(e))),t}function PSe(){let e=window.screen;l(e)&&(l(e.unlockOrientation)?e.unlockOrientation():l(e.mozUnlockOrientation)?e.mozUnlockOrientation():l(e.msUnlockOrientation)?e.msUnlockOrientation():l(e.orientation&&e.orientation.unlock)&&e.orientation.unlock())}function URt(e,t,n,i){i()||(n()?(t.useWebVR=!1,e._locked&&(PSe(),e._locked=!1),e._noSleep.disable(),Wr.exitFullscreen(),n(!1)):(Wr.fullscreen||Wr.requestFullscreen(e._vrElement),e._noSleep.enable(),e._locked||(e._locked=QRt("landscape")),t.useWebVR=!0,n(!0)))}function _3(e,t){let n=this,i=Ee.observable(Wr.enabled),o=Ee.observable(!1);this.isVRMode=void 0,Ee.defineProperty(this,"isVRMode",{get:function(){return o()}}),this.isVREnabled=void 0,Ee.defineProperty(this,"isVREnabled",{get:function(){return i()},set:function(s){i(s&&Wr.enabled)}}),this.tooltip=void 0,Ee.defineProperty(this,"tooltip",function(){return i()?o()?"Exit VR mode":"Enter VR mode":"VR mode is unavailable"});let r=Ee.observable(!1);this._isOrthographic=void 0,Ee.defineProperty(this,"_isOrthographic",{get:function(){return r()}}),this._eventHelper=new Lr,this._eventHelper.add(e.preRender,function(){r(e.camera.frustum instanceof gn)}),this._locked=!1,this._noSleep=new FSe.default,this._command=Xn(function(){URt(n,e,o,r)},Ee.getObservable(this,"isVREnabled")),this._vrElement=Dn(t)??document.body,this._callback=function(){!Wr.fullscreen&&o()&&(e.useWebVR=!1,n._locked&&(PSe(),n._locked=!1),n._noSleep.disable(),o(!1))},document.addEventListener(Wr.changeEventName,this._callback)}Object.defineProperties(_3.prototype,{vrElement:{get:function(){return this._vrElement},set:function(e){this._vrElement=e}},command:{get:function(){return this._command}}});_3.prototype.isDestroyed=function(){return!1};_3.prototype.destroy=function(){this._eventHelper.removeAll(),document.removeEventListener(Wr.changeEventName,this._callback),me(this)};var g9=_3;var kRt="M 5.3125 6.375 C 4.008126 6.375 2.96875 7.4141499 2.96875 8.71875 L 2.96875 19.5 C 2.96875 20.8043 4.008126 21.875 5.3125 21.875 L 13.65625 21.875 C 13.71832 20.0547 14.845166 18.59375 16.21875 18.59375 C 17.592088 18.59375 18.71881 20.0552 18.78125 21.875 L 27.09375 21.875 C 28.398125 21.875 29.4375 20.8043 29.4375 19.5 L 29.4375 8.71875 C 29.4375 7.4141499 28.398125 6.375 27.09375 6.375 L 5.3125 6.375 z M 9.625 10.4375 C 11.55989 10.4375 13.125 12.03385 13.125 13.96875 C 13.125 15.90365 11.55989 17.46875 9.625 17.46875 C 7.69011 17.46875 6.125 15.90365 6.125 13.96875 C 6.125 12.03385 7.69011 10.4375 9.625 10.4375 z M 22.46875 10.4375 C 24.40364 10.4375 25.96875 12.03385 25.96875 13.96875 C 25.96875 15.90365 24.40364 17.46875 22.46875 17.46875 C 20.53386 17.46875 18.96875 15.90365 18.96875 13.96875 C 18.96875 12.03385 20.53386 10.4375 22.46875 10.4375 z",YRt="M 25.770585,2.4552065 C 15.72282,13.962707 10.699956,19.704407 8.1768352,22.580207 c -1.261561,1.4379 -1.902282,2.1427 -2.21875,2.5 -0.141624,0.1599 -0.208984,0.2355 -0.25,0.2813 l 0.6875,0.75 c 10e-5,-10e-5 0.679191,0.727 0.6875,0.7187 0.01662,-0.016 0.02451,-0.024 0.03125,-0.031 0.01348,-0.014 0.04013,-0.038 0.0625,-0.062 0.04474,-0.05 0.120921,-0.1315 0.28125,-0.3126 0.320657,-0.3619 0.956139,-1.0921 2.2187499,-2.5312 2.5252219,-2.8781 7.5454589,-8.6169 17.5937499,-20.1250005 l -1.5,-1.3125 z m -20.5624998,3.9063 c -1.304375,0 -2.34375,1.0391 -2.34375,2.3437 l 0,10.8125005 c 0,1.3043 1.039375,2.375 2.34375,2.375 l 2.25,0 c 1.9518039,-2.2246 7.4710958,-8.5584 13.5624998,-15.5312005 l -15.8124998,0 z m 21.1249998,0 c -1.855467,2.1245 -2.114296,2.4005 -3.59375,4.0936995 1.767282,0.1815 3.15625,1.685301 3.15625,3.500001 0,1.9349 -1.56511,3.5 -3.5,3.5 -1.658043,0 -3.043426,-1.1411 -3.40625,-2.6875 -1.089617,1.2461 -2.647139,2.9988 -3.46875,3.9375 0.191501,-0.062 0.388502,-0.094 0.59375,-0.094 1.373338,0 2.50006,1.4614 2.5625,3.2812 l 8.3125,0 c 1.304375,0 2.34375,-1.0707 2.34375,-2.375 l 0,-10.8125005 c 0,-1.3046 -1.039375,-2.3437 -2.34375,-2.3437 l -0.65625,0 z M 9.5518351,10.423906 c 1.9348899,0 3.4999999,1.596401 3.4999999,3.531301 0,1.9349 -1.56511,3.5 -3.4999999,3.5 -1.9348899,0 -3.4999999,-1.5651 -3.4999999,-3.5 0,-1.9349 1.56511,-3.531301 3.4999999,-3.531301 z m 4.2187499,10.312601 c -0.206517,0.2356 -0.844218,0.9428 -1.03125,1.1562 l 0.8125,0 c 0.01392,-0.4081 0.107026,-0.7968 0.21875,-1.1562 z";function E3(e,t,n){e=Dn(e);let i=new g9(t,n);i._exitVRPath=YRt,i._enterVRPath=kRt;let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-vrButton",o.setAttribute("data-bind",'css: { "cesium-button-disabled" : _isOrthographic }, attr: { title: tooltip },click: command,enable: isVREnabled,cesiumSvgPath: { path: isVRMode ? _exitVRPath : _enterVRPath, width: 32, height: 32 }'),e.appendChild(o),Ee.applyBindings(i,o),this._container=e,this._viewModel=i,this._element=o}Object.defineProperties(E3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});E3.prototype.isDestroyed=function(){return!1};E3.prototype.destroy=function(){return this._viewModel.destroy(),Ee.cleanNode(this._element),this._container.removeChild(this._element),me(this)};var b9=E3;var VFo=y(C(),1);var MSe=new ue;function DSe(e){let t=e.clock;t.currentTime=e.timeJulian,t.shouldAnimate=!1}function ORt(e){let t=e.getPropertyIds(),n="";return t.forEach(function(i){let o=e.getProperty(i);l(o)&&(n+=`<tr><th>${i}</th><td>${o}</td></tr>`)}),n.length>0&&(n=`<table class="cesium-infoBox-defaultTable"><tbody>${n}</tbody></table>`),n}function HRt(e){let t,n=[],i=e.getPropertyIds();for(t=0;t<i.length;t++){let r=i[t];/^name$/i.test(r)?n[0]=e.getProperty(r):/name/i.test(r)?n[1]=e.getProperty(r):/^title$/i.test(r)?n[2]=e.getProperty(r):/^(id|identifier)$/i.test(r)?n[3]=e.getProperty(r):/element/i.test(r)?n[4]=e.getProperty(r):/(id|identifier)$/i.test(r)&&(n[5]=e.getProperty(r))}let o=n.length;for(t=0;t<o;t++){let r=n[t];if(l(r)&&r!=="")return r}return"Unnamed Feature"}function vSe(e,t){let n=e.scene.pick(t.position);if(l(n)){let i=n.id??n.primitive.id;if(i instanceof ur)return i;if(n instanceof ma)return new ur({name:HRt(n),description:ORt(n),feature:n})}if(l(e.scene.globe))return JRt(e,t.position)}var zRt=new j;function xee(e,t){if(l(t)){let n=t.clock;if(l(n)&&l(e)){let i=n.startTime,o=n.stopTime;j.equals(i,o)&&(o=j.addSeconds(i,Z.EPSILON2,zRt)),e.updateFromClock(),e.zoomTo(i,o)}}}var KRt=new m;function JRt(e,t){let n=e.scene,i=n.camera.getPickRay(t),o=n.imageryLayers.pickImageryLayerFeatures(i,n);if(!l(o))return;let r=new ur({id:"Loading...",description:"Loading feature information..."});return o.then(function(s){if(e.selectedEntity!==r)return;if(!l(s)||s.length===0){e.selectedEntity=NSe();return}let a=s[0],c=new ur({id:a.name,description:a.description});if(l(a.position)){let d=e.scene.ellipsoid.cartographicToCartesian(a.position,KRt);c.position=new dl(d)}e.selectedEntity=c},function(){e.selectedEntity===r&&(e.selectedEntity=NSe())}),r}function NSe(){return new ur({id:"None",description:"No features found."})}function jRt(e,t){let n=e._geocoder,i=e._homeButton,o=e._sceneModePicker,r=e._projectionPicker,s=e._baseLayerPicker,a=e._animation,c=e._timeline,d=e._fullscreenButton,u=e._infoBox,h=e._selectionIndicator,p=t?"hidden":"visible";if(l(n)&&(n.container.style.visibility=p),l(i)&&(i.container.style.visibility=p),l(o)&&(o.container.style.visibility=p),l(r)&&(r.container.style.visibility=p),l(s)&&(s.container.style.visibility=p),l(a)&&(a.container.style.visibility=p),l(c)&&(c.container.style.visibility=p),l(d)&&d.viewModel.isFullscreenEnabled&&(d.container.style.visibility=p),l(u)&&(u.container.style.visibility=p),l(h)&&(h.container.style.visibility=p),e._container){let g=t||!l(d)?0:d.container.clientWidth;e._vrButton.container.style.right=`${g}px`,e.forceResize()}}function lo(e,t){e=Dn(e),t=t??Y.EMPTY_OBJECT;let n=(!l(t.globe)||t.globe!==!1)&&(!l(t.baseLayerPicker)||t.baseLayerPicker!==!1),i=this,o=document.createElement("div");o.className="cesium-viewer",e.appendChild(o);let r=document.createElement("div");r.className="cesium-viewer-cesiumWidgetContainer",o.appendChild(r);let s=document.createElement("div");s.className="cesium-viewer-bottom",o.appendChild(s);let a=t.scene3DOnly??!1,c,d,u=!1;l(t.clockViewModel)?(d=t.clockViewModel,c=d.clock):(c=new Yh,d=new BN(c),u=!0);let h=new Hv(r,{baseLayer:n&&l(t.selectedImageryProviderViewModel)||l(t.baseLayer)||l(t.imageryProvider)?!1:void 0,clock:c,shouldAnimate:t.shouldAnimate,skyBox:t.skyBox,skyAtmosphere:t.skyAtmosphere,sceneMode:t.sceneMode,ellipsoid:t.ellipsoid,mapProjection:t.mapProjection,globe:t.globe,orderIndependentTranslucency:t.orderIndependentTranslucency,automaticallyTrackDataSourceClocks:t.automaticallyTrackDataSourceClocks,contextOptions:t.contextOptions,useDefaultRenderLoop:t.useDefaultRenderLoop,targetFrameRate:t.targetFrameRate,showRenderLoopErrors:t.showRenderLoopErrors,useBrowserRecommendedResolution:t.useBrowserRecommendedResolution,creditContainer:l(t.creditContainer)?t.creditContainer:s,creditViewport:t.creditViewport,dataSources:t.dataSources,scene3DOnly:a,shadows:t.shadows,terrainShadows:t.terrainShadows,mapMode2D:t.mapMode2D,blurActiveElementOnCanvasFocus:t.blurActiveElementOnCanvasFocus,requestRenderMode:t.requestRenderMode,maximumRenderTimeChange:t.maximumRenderTimeChange,depthPlaneEllipsoidOffset:t.depthPlaneEllipsoidOffset,msaaSamples:t.msaaSamples}),p=h.scene,g=new Lr;g.add(c.onTick,lo.prototype._onTick,this);let f;if(!l(t.selectionIndicator)||t.selectionIndicator!==!1){let O=document.createElement("div");O.className="cesium-viewer-selectionIndicatorContainer",o.appendChild(O),f=new h9(O,p)}let b;if(!l(t.infoBox)||t.infoBox!==!1){let O=document.createElement("div");O.className="cesium-viewer-infoBoxContainer",o.appendChild(O),b=new n9(O);let H=b.viewModel;g.add(H.cameraClicked,lo.prototype._onInfoBoxCameraClicked,this),g.add(H.closeClicked,lo.prototype._onInfoBoxClockClicked,this)}let x=document.createElement("div");x.className="cesium-viewer-toolbar",o.appendChild(x);let I;if(!l(t.geocoder)||t.geocoder!==!1){let O=document.createElement("div");O.className="cesium-viewer-geocoderContainer",x.appendChild(O);let H;typeof t.geocoder=="string"?H=[new u_({scene:p,geocodeProviderType:t.geocoder})]:l(t.geocoder)&&typeof t.geocoder!="boolean"&&(H=Array.isArray(t.geocoder)?t.geocoder:[t.geocoder]),I=new jN({container:O,geocoderServices:H,scene:p}),g.add(I.viewModel.search.beforeExecute,lo.prototype._clearObjects,this)}let _;(!l(t.homeButton)||t.homeButton!==!1)&&(_=new $N(x,p),l(I)&&g.add(_.viewModel.command.afterExecute,function(){let O=I.viewModel;O.searchText="",O.isSearchInProgress&&O.search()}),g.add(_.viewModel.command.beforeExecute,lo.prototype._clearTrackedObject,this));let E;!a&&(!l(t.sceneModePicker)||t.sceneModePicker!==!1)&&(E=new d9(x,p));let S;t.projectionPicker&&(S=new c9(x,p));let R,G;if(n){let O=t.imageryProviderViewModels??vN(),H=t.terrainProviderViewModels??NN();R=new MN(x,{globe:p.globe,imageryProviderViewModels:O,selectedImageryProviderViewModel:t.selectedImageryProviderViewModel,terrainProviderViewModels:H,selectedTerrainProviderViewModel:t.selectedTerrainProviderViewModel}),G=x.getElementsByClassName("cesium-baseLayerPicker-dropDown")[0]}l(t.baseLayer)&&t.baseLayer!==!1&&(n&&(R.viewModel.selectedImagery=void 0),p.imageryLayers.removeAll(),p.imageryLayers.add(t.baseLayer)),l(t.terrainProvider)&&(n&&(R.viewModel.selectedTerrain=void 0),p.terrainProvider=t.terrainProvider),l(t.terrain)&&(n&&(p.globe.depthTestAgainstTerrain=!0),p.setTerrain(t.terrain));let B;if(!l(t.navigationHelpButton)||t.navigationHelpButton!==!1){let O=!0;try{if(l(window.localStorage)){let H=window.localStorage.getItem("cesium-hasSeenNavHelp");l(H)&&H?O=!1:window.localStorage.setItem("cesium-hasSeenNavHelp","true")}}catch{}B=new o9({container:x,instructionsInitiallyVisible:t.navigationInstructionsInitiallyVisible??O})}let w;if(!l(t.animation)||t.animation!==!1){let O=document.createElement("div");O.className="cesium-viewer-animationContainer",o.appendChild(O),w=new WN(O,new FN(d))}let F;if(!l(t.timeline)||t.timeline!==!1){let O=document.createElement("div");O.className="cesium-viewer-timelineContainer",o.appendChild(O),F=new A9(O,c),F.addEventListener("settime",DSe,!1),F.zoomTo(c.startTime,c.stopTime)}let P,A,T;(!l(t.fullscreenButton)||t.fullscreenButton!==!1)&&(T=document.createElement("div"),T.className="cesium-viewer-fullscreenContainer",o.appendChild(T),P=new KN(T,t.fullscreenElement),A=$a(P.viewModel,"isFullscreenEnabled",function(O){T.style.display=O?"block":"none",l(F)&&(F.container.style.right=`${T.clientWidth}px`,F.resize())}));let L,V,W;if(t.vrButton){let O=document.createElement("div");O.className="cesium-viewer-vrContainer",o.appendChild(O),L=new b9(O,p,t.fullScreenElement),V=$a(L.viewModel,"isVREnabled",function(H){O.style.display=H?"block":"none",l(P)&&(O.style.right=`${T.clientWidth}px`),l(F)&&(F.container.style.right=`${O.clientWidth}px`,F.resize())}),W=$a(L.viewModel,"isVRMode",function(H){jRt(i,H)})}this._baseLayerPickerDropDown=G,this._fullscreenSubscription=A,this._vrSubscription=V,this._vrModeSubscription=W,this._dataSourceChangedListeners={},this._container=e,this._bottomContainer=s,this._element=o,this._cesiumWidget=h,this._selectionIndicator=f,this._infoBox=b,this._clockViewModel=d,this._destroyClockViewModel=u,this._toolbar=x,this._homeButton=_,this._sceneModePicker=E,this._projectionPicker=S,this._baseLayerPicker=R,this._navigationHelpButton=B,this._animation=w,this._timeline=F,this._fullscreenButton=P,this._vrButton=L,this._geocoder=I,this._eventHelper=g,this._lastWidth=0,this._lastHeight=0,this._enableInfoOrSelection=l(b)||l(f),this._selectedEntity=void 0,this._selectedEntityChanged=new Ce;let M=this._cesiumWidget.dataSources,Q=this._cesiumWidget.dataSourceDisplay;g.add(M.dataSourceAdded,lo.prototype._onDataSourceAdded,this),g.add(M.dataSourceRemoved,lo.prototype._onDataSourceRemoved,this),g.add(p.postUpdate,lo.prototype.resize,this);let N=M.length;for(let O=0;O<N;O++)this._dataSourceAdded(M,M.get(O));this._dataSourceAdded(void 0,Q.defaultDataSource),g.add(M.dataSourceAdded,lo.prototype._dataSourceAdded,this),g.add(M.dataSourceRemoved,lo.prototype._dataSourceRemoved,this);function k(O){let H=vSe(i,O);l(H)?z.getValueOrUndefined(H.position,i.clock.currentTime)?i.trackedEntity=H:i.zoomTo(H):l(i.trackedEntity)&&(i.trackedEntity=void 0)}function v(O){i.selectedEntity=vSe(i,O)}h.screenSpaceEventHandler.setInputAction(v,Zn.LEFT_CLICK),h.screenSpaceEventHandler.setInputAction(k,Zn.LEFT_DOUBLE_CLICK),h._canAnimateUpdateCallback=this._updateCanAnimate(this)}Object.defineProperties(lo.prototype,{container:{get:function(){return this._container}},creditDisplay:{get:function(){return this._cesiumWidget.creditDisplay}},bottomContainer:{get:function(){return this._bottomContainer}},cesiumWidget:{get:function(){return this._cesiumWidget}},selectionIndicator:{get:function(){return this._selectionIndicator}},infoBox:{get:function(){return this._infoBox}},geocoder:{get:function(){return this._geocoder}},homeButton:{get:function(){return this._homeButton}},sceneModePicker:{get:function(){return this._sceneModePicker}},projectionPicker:{get:function(){return this._projectionPicker}},baseLayerPicker:{get:function(){return this._baseLayerPicker}},navigationHelpButton:{get:function(){return this._navigationHelpButton}},animation:{get:function(){return this._animation}},timeline:{get:function(){return this._timeline}},fullscreenButton:{get:function(){return this._fullscreenButton}},vrButton:{get:function(){return this._vrButton}},dataSourceDisplay:{get:function(){return this._cesiumWidget.dataSourceDisplay}},entities:{get:function(){return this._cesiumWidget.entities}},dataSources:{get:function(){return this._cesiumWidget.dataSources}},canvas:{get:function(){return this._cesiumWidget.canvas}},scene:{get:function(){return this._cesiumWidget.scene}},shadows:{get:function(){return this.scene.shadowMap.enabled},set:function(e){this.scene.shadowMap.enabled=e}},terrainShadows:{get:function(){return this.scene.globe.shadows},set:function(e){this.scene.globe.shadows=e}},shadowMap:{get:function(){return this.scene.shadowMap}},imageryLayers:{get:function(){return this.scene.imageryLayers}},terrainProvider:{get:function(){return this.scene.terrainProvider},set:function(e){this.scene.terrainProvider=e}},camera:{get:function(){return this.scene.camera}},ellipsoid:{get:function(){return this._scene.ellipsoid}},postProcessStages:{get:function(){return this.scene.postProcessStages}},clock:{get:function(){return this._clockViewModel.clock}},clockViewModel:{get:function(){return this._clockViewModel}},screenSpaceEventHandler:{get:function(){return this._cesiumWidget.screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._cesiumWidget.targetFrameRate},set:function(e){this._cesiumWidget.targetFrameRate=e}},useDefaultRenderLoop:{get:function(){return this._cesiumWidget.useDefaultRenderLoop},set:function(e){this._cesiumWidget.useDefaultRenderLoop=e}},resolutionScale:{get:function(){return this._cesiumWidget.resolutionScale},set:function(e){this._cesiumWidget.resolutionScale=e}},useBrowserRecommendedResolution:{get:function(){return this._cesiumWidget.useBrowserRecommendedResolution},set:function(e){this._cesiumWidget.useBrowserRecommendedResolution=e}},allowDataSourcesToSuspendAnimation:{get:function(){return this._cesiumWidget.allowDataSourcesToSuspendAnimation},set:function(e){this._cesiumWidget.allowDataSourcesToSuspendAnimation=e}},trackedEntity:{get:function(){return this._cesiumWidget.trackedEntity},set:function(e){this._cesiumWidget.trackedEntity=e}},selectedEntity:{get:function(){return this._selectedEntity},set:function(e){if(this._selectedEntity!==e){this._selectedEntity=e;let t=l(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;l(e)?l(t)&&t.animateAppear():l(t)&&t.animateDepart(),this._selectedEntityChanged.raiseEvent(e)}}},selectedEntityChanged:{get:function(){return this._selectedEntityChanged}},trackedEntityChanged:{get:function(){return this._cesiumWidget.trackedEntityChanged}},clockTrackedDataSource:{get:function(){return this._cesiumWidget.clockTrackedDataSource},set:function(e){this._cesiumWidget.clockTrackedDataSource!==e&&(this._cesiumWidget.clockTrackedDataSource=e,xee(this._timeline,e))}}});lo.prototype.extend=function(e,t){e(this,t)};lo.prototype.resize=function(){let e=this._cesiumWidget,t=this._container,n=t.clientWidth,i=t.clientHeight,o=l(this._animation),r=l(this._timeline);if(e.resize(),n===this._lastWidth&&i===this._lastHeight)return;let s=i-125,a=this._baseLayerPickerDropDown;if(l(a)&&(a.style.maxHeight=`${s}px`),l(this._geocoder)){let f=this._geocoder.searchSuggestionsContainer;f.style.maxHeight=`${s}px`}l(this._infoBox)&&(this._infoBox.viewModel.maxHeight=s);let c=this._timeline,d,u=0,h=5,p=3,g=0;if(o&&window.getComputedStyle(this._animation.container).visibility!=="hidden"){let f=this._lastWidth;d=this._animation.container,n>900?(u=169,f<=900&&(d.style.width="169px",d.style.height="112px",this._animation.resize())):n>=600?(u=136,(f<600||f>900)&&(d.style.width="136px",d.style.height="90px",this._animation.resize())):(u=106,(f>600||f===0)&&(d.style.width="106px",d.style.height="70px",this._animation.resize())),h=u+5}if(r&&window.getComputedStyle(this._timeline.container).visibility!=="hidden"){let f=this._fullscreenButton,b=this._vrButton,x=c.container,I=x.style;p=x.clientHeight+3,I.left=`${u}px`;let _=0;l(f)&&(_+=f.container.clientWidth),l(b)&&(_+=b.container.clientWidth),I.right=`${_}px`,c.resize()}!r&&l(this._fullscreenButton)&&(g=this._fullscreenButton.container.clientWidth),this._bottomContainer.style.left=`${h}px`,this._bottomContainer.style.bottom=`${p}px`,this._bottomContainer.style.right=`${g}px`,this._lastWidth=n,this._lastHeight=i};lo.prototype.forceResize=function(){this._lastWidth=0,this.resize()};lo.prototype.render=function(){this._cesiumWidget.render()};lo.prototype.isDestroyed=function(){return!1};lo.prototype.destroy=function(){return l(this.screenSpaceEventHandler)&&!this.screenSpaceEventHandler.isDestroyed()&&(this.screenSpaceEventHandler.removeInputAction(Zn.LEFT_CLICK),this.screenSpaceEventHandler.removeInputAction(Zn.LEFT_DOUBLE_CLICK)),this._container.removeChild(this._element),this._element.removeChild(this._toolbar),this._eventHelper.removeAll(),l(this._geocoder)&&(this._geocoder=this._geocoder.destroy()),l(this._homeButton)&&(this._homeButton=this._homeButton.destroy()),l(this._sceneModePicker)&&(this._sceneModePicker=this._sceneModePicker.destroy()),l(this._projectionPicker)&&(this._projectionPicker=this._projectionPicker.destroy()),l(this._baseLayerPicker)&&(this._baseLayerPicker=this._baseLayerPicker.destroy()),l(this._animation)&&(this._element.removeChild(this._animation.container),this._animation=this._animation.destroy()),l(this._timeline)&&(this._timeline.removeEventListener("settime",DSe,!1),this._element.removeChild(this._timeline.container),this._timeline=this._timeline.destroy()),l(this._fullscreenButton)&&(this._fullscreenSubscription.dispose(),this._element.removeChild(this._fullscreenButton.container),this._fullscreenButton=this._fullscreenButton.destroy()),l(this._vrButton)&&(this._vrSubscription.dispose(),this._vrModeSubscription.dispose(),this._element.removeChild(this._vrButton.container),this._vrButton=this._vrButton.destroy()),l(this._infoBox)&&(this._element.removeChild(this._infoBox.container),this._infoBox=this._infoBox.destroy()),l(this._selectionIndicator)&&(this._element.removeChild(this._selectionIndicator.container),this._selectionIndicator=this._selectionIndicator.destroy()),this._destroyClockViewModel&&(this._clockViewModel=this._clockViewModel.destroy()),this._cesiumWidget=this._cesiumWidget.destroy(),me(this)};lo.prototype._dataSourceAdded=function(e,t){t.entities.collectionChanged.addEventListener(lo.prototype._onEntityCollectionChanged,this)};lo.prototype._dataSourceRemoved=function(e,t){let n=t.entities;n.collectionChanged.removeEventListener(lo.prototype._onEntityCollectionChanged,this),l(this.selectedEntity)&&n.getById(this.selectedEntity.id)===this.selectedEntity&&(this.selectedEntity=void 0)};lo.prototype._updateCanAnimate=function(e){return function(t){e._clockViewModel.canAnimate=t}};lo.prototype._onTick=function(e){let t=e.currentTime,n,i=!1,o=this.selectedEntity,r=l(o)&&this._enableInfoOrSelection;r&&o.isShowing&&o.isAvailable(t)&&(this._cesiumWidget.dataSourceDisplay.getBoundingSphere(o,!0,MSe)!==At.FAILED?n=MSe.center:l(o.position)&&(n=o.position.getValue(t,n)),i=l(n));let s=l(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;l(s)&&(s.position=m.clone(n,s.position),s.showSelection=r&&i,s.update());let a=l(this._infoBox)?this._infoBox.viewModel:void 0;l(a)&&(a.showInfo=r,a.enableCamera=i,a.isCameraTracking=this.trackedEntity===this.selectedEntity,r?(a.titleText=o.name??o.id,a.description=z.getValueOrDefault(o.description,t,"")):(a.titleText="",a.description=""))};lo.prototype._onEntityCollectionChanged=function(e,t,n){let i=n.length;for(let o=0;o<i;o++){let r=n[o];this.selectedEntity===r&&(this.selectedEntity=void 0)}};lo.prototype._onInfoBoxCameraClicked=function(e){if(e.isCameraTracking&&this.trackedEntity===this.selectedEntity)this.trackedEntity=void 0;else{let n=this.selectedEntity.position;l(n)?this.trackedEntity=this.selectedEntity:this.zoomTo(this.selectedEntity)}};lo.prototype._clearTrackedObject=function(){this.trackedEntity=void 0};lo.prototype._onInfoBoxClockClicked=function(e){this.selectedEntity=void 0};lo.prototype._clearObjects=function(){this.trackedEntity=void 0,this.selectedEntity=void 0};lo.prototype._onDataSourceChanged=function(e){this.clockTrackedDataSource===e&&xee(this.timeline,e)};lo.prototype._onDataSourceAdded=function(e,t){this._cesiumWidget._automaticallyTrackDataSourceClocks&&t===this.clockTrackedDataSource&&xee(this._timeline,t);let n=t.entities.id,i=this._eventHelper.add(t.changedEvent,lo.prototype._onDataSourceChanged,this);this._dataSourceChangedListeners[n]=i};lo.prototype._onDataSourceRemoved=function(e,t){let n=t.entities.id;this._dataSourceChangedListeners[n](),this._dataSourceChangedListeners[n]=void 0};lo.prototype.zoomTo=function(e,t){return this._cesiumWidget.zoomTo(e,t)};lo.prototype.flyTo=function(e,t){return this._cesiumWidget.flyTo(e,t)};var Iee=lo;var BFo=y(C(),1);function qRt(e){let t=document.createElement("div");t.className="cesium-viewer-cesium3DTilesInspectorContainer",e.container.appendChild(t);let n=new kN(t,e.scene);Object.defineProperties(e,{cesium3DTilesInspector:{get:function(){return n}}})}var _ee=qRt;var WFo=y(C(),1);function $Rt(e){let t=document.createElement("div");t.className="cesium-viewer-cesiumInspectorContainer",e.container.appendChild(t);let n=new HN(t,e.scene);Object.defineProperties(e,{cesiumInspector:{get:function(){return n}}})}var Eee=$Rt;var vFo=y(C(),1);function eVt(e,t){t=t??Y.EMPTY_OBJECT;let n=!0,i=t.flyToOnDrop??!0,o=new Ce,r=t.clearOnDrop??!0,s=t.dropTarget??e.container,a=t.clampToGround??!0,c=t.proxy;s=Dn(s),Object.defineProperties(e,{dropTarget:{get:function(){return s},set:function(u){QSe(s,d),s=u,Tee(s,d)}},dropEnabled:{get:function(){return n},set:function(u){u!==n&&(u?Tee(s,d):QSe(s,d),n=u)}},dropError:{get:function(){return o}},clearOnDrop:{get:function(){return r},set:function(u){r=u}},flyToOnDrop:{get:function(){return i},set:function(u){i=u}},proxy:{get:function(){return c},set:function(u){c=u}},clampToGround:{get:function(){return a},set:function(u){a=u}}});function d(u){T_(u),r&&(e.entities.removeAll(),e.dataSources.removeAll());let h=u.dataTransfer.files,p=h.length;for(let g=0;g<p;g++){let f=h[g],b=new FileReader;b.onload=tVt(e,f,c,a),b.onerror=nVt(e,f),b.readAsText(f)}}Tee(s,d),e.destroy=nN(e,e.destroy,function(){e.dropEnabled=!1}),e._handleDrop=d}function T_(e){e.stopPropagation(),e.preventDefault()}function QSe(e,t){let n=e;l(n)&&(n.removeEventListener("drop",t,!1),n.removeEventListener("dragenter",T_,!1),n.removeEventListener("dragover",T_,!1),n.removeEventListener("dragexit",T_,!1))}function Tee(e,t){e.addEventListener("drop",t,!1),e.addEventListener("dragenter",T_,!1),e.addEventListener("dragover",T_,!1),e.addEventListener("dragexit",T_,!1)}function tVt(e,t,n,i){let o=e.scene;return function(r){let s=t.name;try{let a;if(/\.czml$/i.test(s))a=TW.load(JSON.parse(r.target.result),{sourceUri:s});else if(/\.geojson$/i.test(s)||/\.json$/i.test(s)||/\.topojson$/i.test(s))a=Q0.load(JSON.parse(r.target.result),{sourceUri:s,clampToGround:i});else if(/\.(kml|kmz)$/i.test(s))a=pI.load(t,{sourceUri:s,proxy:n,camera:o.camera,canvas:o.canvas,clampToGround:i,screenOverlayContainer:e.container});else if(/\.gpx$/i.test(s))a=IF.load(t,{sourceUri:s,proxy:n});else{e.dropError.raiseEvent(e,s,`Unrecognized file: ${s}`);return}l(a)&&e.dataSources.add(a).then(function(c){e.flyToOnDrop&&e.flyTo(c)}).catch(function(c){e.dropError.raiseEvent(e,s,c)})}catch(a){e.dropError.raiseEvent(e,s,a)}}}function nVt(e,t){return function(n){e.dropError.raiseEvent(e,t.name,n.target.error)}}var See=eVt;var YFo=y(C(),1);function iVt(e,t){t=t??Y.EMPTY_OBJECT;let n=new s9({scene:e.scene,container:e.bottomContainer,lowFrameRateMessage:t.lowFrameRateMessage});Object.defineProperties(e,{performanceWatchdog:{get:function(){return n}}})}var Lee=iVt;var sPo=y(C(),1);var iPo=y(C(),1);var JFo=y(C(),1);function USe(e){let t=e.split(` +`),n;for(n=0;n<t.length&&!t[n].match(/\S/);n++);if(n===t.length)return"";let i="",o=/^\s*/,s=t[n].match(o)[0].length;for(let a=n;a<t.length;a++){let c=t[a];c.match(o)[0].length>=s&&(c=c.slice(s)),i+=`${c} +`}return i}function Km(e){this._scene=e,this._voxelPrimitive=void 0,this._customShaderCompilationRemoveCallback=void 0,this._definedProperties=[],this._getPrimitiveFunctions=[],this._modelMatrixReady=!1;let t=this;function n(o){let{name:r,initialValue:s}=o;t._definedProperties.push(r);let a=o.setPrimitiveFunction;a===!0&&(a=function(u){t._voxelPrimitive[r]=u});let c=o.getPrimitiveFunction;c===!0&&(c=function(){t[r]=t._voxelPrimitive[r]}),l(c)&&t._getPrimitiveFunctions.push(c);let d=Ee.observable();return Ee.defineProperty(t,r,{get:function(){return d()},set:function(u){typeof s=="number"&&typeof u=="string"&&(u=Number(u),isNaN(u)&&(u=s)),typeof s=="boolean"&&typeof u=="number"&&(u=u===1),d(u),l(a)&&l(t._voxelPrimitive)&&(a(u),e.requestRender())}}),t[r]=s,d}function i(o,r){return function(s){let a=t._voxelPrimitive[o].clone();a[r]=s,t._voxelPrimitive[o]=a}}n({name:"inspectorVisible",initialValue:!0}),n({name:"displayVisible",initialValue:!1}),n({name:"transformVisible",initialValue:!1}),n({name:"boundsVisible",initialValue:!1}),n({name:"clippingVisible",initialValue:!1}),n({name:"shaderVisible",initialValue:!1}),n({name:"shaderString",initialValue:"",getPrimitiveFunction:function(){let o=t._voxelPrimitive.customShader.fragmentShaderText;t.shaderString=USe(o)}}),n({name:"shaderCompilationMessage",initialValue:""}),n({name:"shaderCompilationSuccess",initialValue:!0}),n({name:"depthTest",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"show",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"disableUpdate",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"debugDraw",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"jitter",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"nearestSampling",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"screenSpaceError",initialValue:4,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"stepSize",initialValue:1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"shapeIsBox",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsBox=o===qa.BOX}}),n({name:"shapeIsEllipsoid",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsEllipsoid=o===qa.ELLIPSOID}}),n({name:"shapeIsCylinder",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsCylinder=o===qa.CYLINDER}}),n({name:"clippingBoxMaxXMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxXMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingBoxMaxXMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxXMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingBoxMaxX",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingBoxMaxX=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingBoxMinXMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinXMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingBoxMinXMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinXMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingBoxMinX",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingBoxMinX=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingBoxMaxYMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxYMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingBoxMaxYMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxYMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingBoxMaxY",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingBoxMaxY=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingBoxMinYMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinYMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingBoxMinYMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinYMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingBoxMinY",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingBoxMinY=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingBoxMaxZMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxZMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingBoxMaxZMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxZMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingBoxMaxZ",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingBoxMaxZ=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingBoxMinZMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinZMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingBoxMinZMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinZMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingBoxMinZ",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingBoxMinZ=t._voxelPrimitive.minClippingBounds.z}}),n({name:"clippingEllipsoidMaxLongitudeMin",initialValue:-Z.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitudeMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingEllipsoidMaxLongitudeMax",initialValue:Z.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitudeMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingEllipsoidMaxLongitude",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitude=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingEllipsoidMinLongitudeMin",initialValue:-Z.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitudeMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingEllipsoidMinLongitudeMax",initialValue:Z.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitudeMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingEllipsoidMinLongitude",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitude=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingEllipsoidMaxLatitudeMin",initialValue:-Z.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitudeMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingEllipsoidMaxLatitudeMax",initialValue:Z.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitudeMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingEllipsoidMaxLatitude",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitude=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingEllipsoidMinLatitudeMin",initialValue:-Z.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitudeMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingEllipsoidMinLatitudeMax",initialValue:Z.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitudeMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingEllipsoidMinLatitude",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitude=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingEllipsoidMaxHeightMin",initialValue:0,getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingEllipsoidMaxHeightMax",initialValue:1e5,getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingEllipsoidMaxHeight",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeight=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingEllipsoidMinHeightMin",initialValue:-1e5,getPrimitiveFunction:function(){t.clippingEllipsoidMinHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingEllipsoidMinHeightMax",initialValue:0,getPrimitiveFunction:function(){t.clippingEllipsoidMinHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingEllipsoidMinHeight",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingEllipsoidMinHeight=t._voxelPrimitive.minClippingBounds.z}}),n({name:"clippingCylinderMaxRadiusMin",initialValue:0,getPrimitiveFunction:function(){t.clippingCylinderMaxRadiusMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingCylinderMaxRadiusMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMaxRadiusMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingCylinderMaxRadius",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingCylinderMaxRadius=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingCylinderMinRadiusMin",initialValue:0,getPrimitiveFunction:function(){t.clippingCylinderMinRadiusMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingCylinderMinRadiusMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMinRadiusMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingCylinderMinRadius",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingCylinderMinRadius=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingCylinderMaxAngleMin",initialValue:-Z.PI,getPrimitiveFunction:function(){t.clippingCylinderMaxAngleMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingCylinderMaxAngleMax",initialValue:Z.PI,getPrimitiveFunction:function(){t.clippingCylinderMaxAngleMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingCylinderMaxAngle",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingCylinderMaxAngle=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingCylinderMinAngleMin",initialValue:-Z.PI}),n({name:"clippingCylinderMinAngleMax",initialValue:Z.PI}),n({name:"clippingCylinderMinAngle",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingCylinderMinAngle=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingCylinderMaxHeightMin",initialValue:-1,getPrimitiveFunction:function(){t.clippingCylinderMaxHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingCylinderMaxHeightMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMaxHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingCylinderMaxHeight",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingCylinderMaxHeight=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingCylinderMinHeightMin",initialValue:-1,getPrimitiveFunction:function(){t.clippingCylinderMinHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingCylinderMinHeightMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMinHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingCylinderMinHeight",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingCylinderMinHeight=t._voxelPrimitive.minClippingBounds.z}}),n({name:"translationX",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&Np(t)},getPrimitiveFunction:function(){t.translationX=X.getTranslation(t._voxelPrimitive.modelMatrix,new m).x}}),n({name:"translationY",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&Np(t)},getPrimitiveFunction:function(){t.translationY=X.getTranslation(t._voxelPrimitive.modelMatrix,new m).y}}),n({name:"translationZ",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&Np(t)},getPrimitiveFunction:function(){t.translationZ=X.getTranslation(t._voxelPrimitive.modelMatrix,new m).z}}),n({name:"scaleX",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&Np(t)},getPrimitiveFunction:function(){t.scaleX=X.getScale(t._voxelPrimitive.modelMatrix,new m).x}}),n({name:"scaleY",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&Np(t)},getPrimitiveFunction:function(){t.scaleY=X.getScale(t._voxelPrimitive.modelMatrix,new m).y}}),n({name:"scaleZ",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&Np(t)},getPrimitiveFunction:function(){t.scaleZ=X.getScale(t._voxelPrimitive.modelMatrix,new m).z}}),n({name:"angleX",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&Np(t)}}),n({name:"angleY",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&Np(t)}}),n({name:"angleZ",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&Np(t)}})}var oVt=new m,rVt=new m,sVt=new ic,aVt=new $;function Np(e){let t=m.fromElements(e.translationX,e.translationY,e.translationZ,oVt),n=m.fromElements(e.scaleX,e.scaleY,e.scaleZ,rVt),i=sVt;i.heading=e.angleX,i.pitch=e.angleY,i.roll=e.angleZ;let o=$.fromHeadingPitchRoll(i,aVt),r=$.multiplyByScale(o,n,o);e._voxelPrimitive.modelMatrix=X.fromRotationTranslation(r,t,e._voxelPrimitive.modelMatrix)}Object.defineProperties(Km.prototype,{scene:{get:function(){return this._scene}},voxelPrimitive:{get:function(){return this._voxelPrimitive},set:function(e){if(l(this._customShaderCompilationRemoveCallback)&&this._customShaderCompilationRemoveCallback(),!l(e))return;this._voxelPrimitive=e;let t=this;t._customShaderCompilationRemoveCallback=t._voxelPrimitive.customShaderCompilationEvent.addEventListener(function(n){let i=t._voxelPrimitive.customShader.fragmentShaderText;t.shaderString=USe(i),l(n)?(t.shaderCompilationMessage=n.message,t.shaderCompilationSuccess=!1):(t.shaderCompilationMessage="Shader compiled successfully!",t.shaderCompilationSuccess=!0)}),t._modelMatrixReady=!1;for(let n=0;n<t._getPrimitiveFunctions.length;n++)t._getPrimitiveFunctions[n]();t._modelMatrixReady=!0,Np(t)}}});Km.prototype.toggleInspector=function(){this.inspectorVisible=!this.inspectorVisible};Km.prototype.toggleDisplay=function(){this.displayVisible=!this.displayVisible};Km.prototype.toggleTransform=function(){this.transformVisible=!this.transformVisible};Km.prototype.toggleBounds=function(){this.boundsVisible=!this.boundsVisible};Km.prototype.toggleClipping=function(){this.clippingVisible=!this.clippingVisible};Km.prototype.toggleShader=function(){this.shaderVisible=!this.shaderVisible};Km.prototype.compileShader=function(){l(this._voxelPrimitive)&&(this._voxelPrimitive.customShader=new KI({fragmentShaderText:this.shaderString,uniforms:this._voxelPrimitive.customShader.uniforms}))};Km.prototype.shaderEditorKeyPress=function(e,t){if(t.keyCode===9){t.preventDefault();let n=t.target,i=n.selectionStart,o=n.selectionEnd,r=o,a=n.value.slice(i,o).split(` +`),c=a.length,d;if(t.shiftKey)for(d=0;d<c;++d)a[d][0]===" "&&(a[d][1]===" "?(a[d]=a[d].substr(2),r-=2):(a[d]=a[d].substr(1),r-=1));else for(d=0;d<c;++d)a[d]=` ${a[d]}`,r+=2;let u=a.join(` +`);n.value=n.value.slice(0,i)+u+n.value.slice(o),n.selectionStart=i!==o?i:r,n.selectionEnd=r}else t.ctrlKey&&(t.keyCode===10||t.keyCode===13)&&this.compileShader();return!0};Km.prototype.isDestroyed=function(){return!1};Km.prototype.destroy=function(){let e=this;return this._definedProperties.forEach(function(t){Ee.getObservable(e,t).dispose()}),me(this)};var y9=Km;function T3(e,t){e=Dn(e);let n=document.createElement("div"),i=new y9(t);this._viewModel=i,this._container=e,this._element=n;let o=document.createElement("div");o.textContent="Voxel Inspector",o.className="cesium-cesiumInspector-button",o.setAttribute("data-bind","click: toggleInspector"),n.appendChild(o),n.className="cesium-cesiumInspector cesium-VoxelInspector",n.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : inspectorVisible, "cesium-cesiumInspector-hidden" : !inspectorVisible}'),e.appendChild(n);let r=document.createElement("div");r.className="cesium-cesiumInspector-dropDown",n.appendChild(r);let{createSection:s,createCheckbox:a,createRangeInput:c,createButton:d}=Vd,u=s(r,"Display","displayVisible","toggleDisplay"),h=s(r,"Transform","transformVisible","toggleTransform"),p=s(r,"Clipping","clippingVisible","toggleClipping"),g=s(r,"Shader","shaderVisible","toggleShader");u.appendChild(a("Depth Test","depthTest")),u.appendChild(a("Show","show")),u.appendChild(a("Disable Update","disableUpdate")),u.appendChild(a("Debug Draw","debugDraw")),u.appendChild(a("Jitter","jitter")),u.appendChild(a("Nearest Sampling","nearestSampling")),u.appendChild(c("Screen Space Error","screenSpaceError",0,128)),u.appendChild(c("Step Size","stepSize",0,2));let f=10,b=10,x=Z.PI;h.appendChild(c("Translation X","translationX",-f,+f)),h.appendChild(c("Translation Y","translationY",-f,+f)),h.appendChild(c("Translation Z","translationZ",-f,+f)),h.appendChild(c("Scale X","scaleX",0,+b)),h.appendChild(c("Scale Y","scaleY",0,+b)),h.appendChild(c("Scale Z","scaleZ",0,+b)),h.appendChild(c("Heading","angleX",-x,+x)),h.appendChild(c("Pitch","angleY",-x,+x)),h.appendChild(c("Roll","angleZ",-x,+x)),Ree("Max X","Min X","Max Y","Min Y","Max Z","Min Z","clippingBoxMaxX","clippingBoxMinX","clippingBoxMaxY","clippingBoxMinY","clippingBoxMaxZ","clippingBoxMinZ","shapeIsBox",p),Ree("Max Longitude","Min Longitude","Max Latitude","Min Latitude","Max Height","Min Height","clippingEllipsoidMaxLongitude","clippingEllipsoidMinLongitude","clippingEllipsoidMaxLatitude","clippingEllipsoidMinLatitude","clippingEllipsoidMaxHeight","clippingEllipsoidMinHeight","shapeIsEllipsoid",p),Ree("Max Radius","Min Radius","Max Angle","Min Angle","Max Height","Min Height","clippingCylinderMaxRadius","clippingCylinderMinRadius","clippingCylinderMaxAngle","clippingCylinderMinAngle","clippingCylinderMaxHeight","clippingCylinderMinHeight","shapeIsCylinder",p);let I=document.createElement("div");g.appendChild(I);let _=document.createElement("textarea");_.setAttribute("data-bind","textInput: shaderString, event: { keydown: shaderEditorKeyPress }"),I.className="cesium-cesiumInspector-styleEditor",I.appendChild(_);let E=d("Compile (Ctrl+Enter)","compileShader");I.appendChild(E);let S=document.createElement("label");S.style.display="block",S.setAttribute("data-bind","text: shaderCompilationMessage, style: {color: shaderCompilationSuccess ? 'green' : 'red'}"),I.appendChild(S),Ee.applyBindings(i,n)}Object.defineProperties(T3.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});T3.prototype.isDestroyed=function(){return!1};T3.prototype.destroy=function(){return Ee.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),me(this)};function Ree(e,t,n,i,o,r,s,a,c,d,u,h,p,g){let f=Vd.createRangeInputWithDynamicMinMax,b=g.appendChild(document.createElement("div"));b.setAttribute("data-bind",`if: ${p}`),b.appendChild(f(e,s)),b.appendChild(f(t,a)),b.appendChild(f(n,c)),b.appendChild(f(i,d)),b.appendChild(f(o,u)),b.appendChild(f(r,h))}var C9=T3;function cVt(e){let t=document.createElement("div");t.className="cesium-viewer-voxelInspectorContainer",e.container.appendChild(t);let n=new C9(t,e.scene);Object.defineProperties(e,{voxelInspector:{get:function(){return n}}})}var Vee=cVt;globalThis.CESIUM_VERSION="1.132";var lVt="1.132";return $Se(dVt);})(); diff --git a/public/Cesium/ThirdParty/Workers/package.json b/public/Cesium/ThirdParty/Workers/package.json new file mode 100644 index 000000000..0292b9956 --- /dev/null +++ b/public/Cesium/ThirdParty/Workers/package.json @@ -0,0 +1 @@ +{"type":"commonjs"} \ No newline at end of file diff --git a/public/Cesium/ThirdParty/Workers/pako_deflate.min.js b/public/Cesium/ThirdParty/Workers/pako_deflate.min.js new file mode 100644 index 000000000..71416d2af --- /dev/null +++ b/public/Cesium/ThirdParty/Workers/pako_deflate.min.js @@ -0,0 +1 @@ +/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */(function(v,z){typeof exports=="object"&&typeof module<"u"?z(exports):typeof define=="function"&&define.amd?define(["exports"],z):z((v=typeof globalThis<"u"?globalThis:v||self).pako={})})(this,function(v){"use strict";function z(e){let s=e.length;for(;--s>=0;)e[s]=0}const oe=256,Ae=286,H=30,M=15,de=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),ae=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),ra=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),Ee=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Z=new Array(576);z(Z);const P=new Array(60);z(P);const j=new Array(512);z(j);const K=new Array(256);z(K);const ue=new Array(29);z(ue);const se=new Array(H);function fe(e,s,a,r,n){this.static_tree=e,this.extra_bits=s,this.extra_base=a,this.elems=r,this.max_length=n,this.has_stree=e&&e.length}let Ze,Ue,Re;function ce(e,s){this.dyn_tree=e,this.max_code=0,this.stat_desc=s}z(se);const Se=e=>e<256?j[e]:j[256+(e>>>7)],Y=(e,s)=>{e.pending_buf[e.pending++]=255&s,e.pending_buf[e.pending++]=s>>>8&255},p=(e,s,a)=>{e.bi_valid>16-a?(e.bi_buf|=s<<e.bi_valid&65535,Y(e,e.bi_buf),e.bi_buf=s>>16-e.bi_valid,e.bi_valid+=a-16):(e.bi_buf|=s<<e.bi_valid&65535,e.bi_valid+=a)},k=(e,s,a)=>{p(e,a[2*s],a[2*s+1])},Te=(e,s)=>{let a=0;do a|=1&e,e>>>=1,a<<=1;while(--s>0);return a>>>1},Le=(e,s,a)=>{const r=new Array(16);let n,i,_=0;for(n=1;n<=M;n++)_=_+a[n-1]<<1,r[n]=_;for(i=0;i<=s;i++){let t=e[2*i+1];t!==0&&(e[2*i]=Te(r[t]++,t))}},Fe=e=>{let s;for(s=0;s<Ae;s++)e.dyn_ltree[2*s]=0;for(s=0;s<H;s++)e.dyn_dtree[2*s]=0;for(s=0;s<19;s++)e.bl_tree[2*s]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},Oe=e=>{e.bi_valid>8?Y(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},De=(e,s,a,r)=>{const n=2*s,i=2*a;return e[n]<e[i]||e[n]===e[i]&&r[s]<=r[a]},pe=(e,s,a)=>{const r=e.heap[a];let n=a<<1;for(;n<=e.heap_len&&(n<e.heap_len&&De(s,e.heap[n+1],e.heap[n],e.depth)&&n++,!De(s,r,e.heap[n],e.depth));)e.heap[a]=e.heap[n],a=n,n<<=1;e.heap[a]=r},Ne=(e,s,a)=>{let r,n,i,_,t=0;if(e.sym_next!==0)do r=255&e.pending_buf[e.sym_buf+t++],r+=(255&e.pending_buf[e.sym_buf+t++])<<8,n=e.pending_buf[e.sym_buf+t++],r===0?k(e,n,s):(i=K[n],k(e,i+oe+1,s),_=de[i],_!==0&&(n-=ue[i],p(e,n,_)),r--,i=Se(r),k(e,i,a),_=ae[i],_!==0&&(r-=se[i],p(e,r,_)));while(t<e.sym_next);k(e,256,s)},ge=(e,s)=>{const a=s.dyn_tree,r=s.stat_desc.static_tree,n=s.stat_desc.has_stree,i=s.stat_desc.elems;let _,t,h,l=-1;for(e.heap_len=0,e.heap_max=573,_=0;_<i;_++)a[2*_]!==0?(e.heap[++e.heap_len]=l=_,e.depth[_]=0):a[2*_+1]=0;for(;e.heap_len<2;)h=e.heap[++e.heap_len]=l<2?++l:0,a[2*h]=1,e.depth[h]=0,e.opt_len--,n&&(e.static_len-=r[2*h+1]);for(s.max_code=l,_=e.heap_len>>1;_>=1;_--)pe(e,a,_);h=i;do _=e.heap[1],e.heap[1]=e.heap[e.heap_len--],pe(e,a,1),t=e.heap[1],e.heap[--e.heap_max]=_,e.heap[--e.heap_max]=t,a[2*h]=a[2*_]+a[2*t],e.depth[h]=(e.depth[_]>=e.depth[t]?e.depth[_]:e.depth[t])+1,a[2*_+1]=a[2*t+1]=h,e.heap[1]=h++,pe(e,a,1);while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((u,d)=>{const m=d.dyn_tree,V=d.max_code,_e=d.stat_desc.static_tree,Na=d.stat_desc.has_stree,Ia=d.stat_desc.extra_bits,na=d.stat_desc.extra_base,$=d.stat_desc.max_length;let ee,y,B,f,le,xe,he=0;for(f=0;f<=M;f++)u.bl_count[f]=0;for(m[2*u.heap[u.heap_max]+1]=0,ee=u.heap_max+1;ee<573;ee++)y=u.heap[ee],f=m[2*m[2*y+1]+1]+1,f>$&&(f=$,he++),m[2*y+1]=f,y>V||(u.bl_count[f]++,le=0,y>=na&&(le=Ia[y-na]),xe=m[2*y],u.opt_len+=xe*(f+le),Na&&(u.static_len+=xe*(_e[2*y+1]+le)));if(he!==0){do{for(f=$-1;u.bl_count[f]===0;)f--;u.bl_count[f]--,u.bl_count[f+1]+=2,u.bl_count[$]--,he-=2}while(he>0);for(f=$;f!==0;f--)for(y=u.bl_count[f];y!==0;)B=u.heap[--ee],B>V||(m[2*B+1]!==f&&(u.opt_len+=(f-m[2*B+1])*m[2*B],m[2*B+1]=f),y--)}})(e,s),Le(a,l,e.bl_count)},Ie=(e,s,a)=>{let r,n,i=-1,_=s[1],t=0,h=7,l=4;for(_===0&&(h=138,l=3),s[2*(a+1)+1]=65535,r=0;r<=a;r++)n=_,_=s[2*(r+1)+1],++t<h&&n===_||(t<l?e.bl_tree[2*n]+=t:n!==0?(n!==i&&e.bl_tree[2*n]++,e.bl_tree[32]++):t<=10?e.bl_tree[34]++:e.bl_tree[36]++,t=0,i=n,_===0?(h=138,l=3):n===_?(h=6,l=3):(h=7,l=4))},Ce=(e,s,a)=>{let r,n,i=-1,_=s[1],t=0,h=7,l=4;for(_===0&&(h=138,l=3),r=0;r<=a;r++)if(n=_,_=s[2*(r+1)+1],!(++t<h&&n===_)){if(t<l)do k(e,n,e.bl_tree);while(--t!=0);else n!==0?(n!==i&&(k(e,n,e.bl_tree),t--),k(e,16,e.bl_tree),p(e,t-3,2)):t<=10?(k(e,17,e.bl_tree),p(e,t-3,3)):(k(e,18,e.bl_tree),p(e,t-11,7));t=0,i=n,_===0?(h=138,l=3):n===_?(h=6,l=3):(h=7,l=4)}};let Be=!1;const He=(e,s,a,r)=>{p(e,0+(r?1:0),3),Oe(e),Y(e,a),Y(e,~a),a&&e.pending_buf.set(e.window.subarray(s,s+a),e.pending),e.pending+=a};var ia=(e,s,a,r)=>{let n,i,_=0;e.level>0?(e.strm.data_type===2&&(e.strm.data_type=(t=>{let h,l=4093624447;for(h=0;h<=31;h++,l>>>=1)if(1&l&&t.dyn_ltree[2*h]!==0)return 0;if(t.dyn_ltree[18]!==0||t.dyn_ltree[20]!==0||t.dyn_ltree[26]!==0)return 1;for(h=32;h<oe;h++)if(t.dyn_ltree[2*h]!==0)return 1;return 0})(e)),ge(e,e.l_desc),ge(e,e.d_desc),_=(t=>{let h;for(Ie(t,t.dyn_ltree,t.l_desc.max_code),Ie(t,t.dyn_dtree,t.d_desc.max_code),ge(t,t.bl_desc),h=18;h>=3&&t.bl_tree[2*Ee[h]+1]===0;h--);return t.opt_len+=3*(h+1)+5+5+4,h})(e),n=e.opt_len+3+7>>>3,i=e.static_len+3+7>>>3,i<=n&&(n=i)):n=i=a+5,a+4<=n&&s!==-1?He(e,s,a,r):e.strategy===4||i===n?(p(e,2+(r?1:0),3),Ne(e,Z,P)):(p(e,4+(r?1:0),3),((t,h,l,u)=>{let d;for(p(t,h-257,5),p(t,l-1,5),p(t,u-4,4),d=0;d<u;d++)p(t,t.bl_tree[2*Ee[d]+1],3);Ce(t,t.dyn_ltree,h-1),Ce(t,t.dyn_dtree,l-1)})(e,e.l_desc.max_code+1,e.d_desc.max_code+1,_+1),Ne(e,e.dyn_ltree,e.dyn_dtree)),Fe(e),r&&Oe(e)},ta={_tr_init:e=>{Be||((()=>{let s,a,r,n,i;const _=new Array(16);for(r=0,n=0;n<28;n++)for(ue[n]=r,s=0;s<1<<de[n];s++)K[r++]=n;for(K[r-1]=n,i=0,n=0;n<16;n++)for(se[n]=i,s=0;s<1<<ae[n];s++)j[i++]=n;for(i>>=7;n<H;n++)for(se[n]=i<<7,s=0;s<1<<ae[n]-7;s++)j[256+i++]=n;for(a=0;a<=M;a++)_[a]=0;for(s=0;s<=143;)Z[2*s+1]=8,s++,_[8]++;for(;s<=255;)Z[2*s+1]=9,s++,_[9]++;for(;s<=279;)Z[2*s+1]=7,s++,_[7]++;for(;s<=287;)Z[2*s+1]=8,s++,_[8]++;for(Le(Z,287,_),s=0;s<H;s++)P[2*s+1]=5,P[2*s]=Te(s,5);Ze=new fe(Z,de,257,Ae,M),Ue=new fe(P,ae,0,H,M),Re=new fe(new Array(0),ra,0,19,7)})(),Be=!0),e.l_desc=new ce(e.dyn_ltree,Ze),e.d_desc=new ce(e.dyn_dtree,Ue),e.bl_desc=new ce(e.bl_tree,Re),e.bi_buf=0,e.bi_valid=0,Fe(e)},_tr_stored_block:He,_tr_flush_block:ia,_tr_tally:(e,s,a)=>(e.pending_buf[e.sym_buf+e.sym_next++]=s,e.pending_buf[e.sym_buf+e.sym_next++]=s>>8,e.pending_buf[e.sym_buf+e.sym_next++]=a,s===0?e.dyn_ltree[2*a]++:(e.matches++,s--,e.dyn_ltree[2*(K[a]+oe+1)]++,e.dyn_dtree[2*Se(s)]++),e.sym_next===e.sym_end),_tr_align:e=>{p(e,2,3),k(e,256,Z),(s=>{s.bi_valid===16?(Y(s,s.bi_buf),s.bi_buf=0,s.bi_valid=0):s.bi_valid>=8&&(s.pending_buf[s.pending++]=255&s.bi_buf,s.bi_buf>>=8,s.bi_valid-=8)})(e)}},Me=(e,s,a,r)=>{let n=65535&e|0,i=e>>>16&65535|0,_=0;for(;a!==0;){_=a>2e3?2e3:a,a-=_;do n=n+s[r++]|0,i=i+n|0;while(--_);n%=65521,i%=65521}return n|i<<16|0};const _a=new Uint32Array((()=>{let e,s=[];for(var a=0;a<256;a++){e=a;for(var r=0;r<8;r++)e=1&e?3988292384^e>>>1:e>>>1;s[a]=e}return s})());var U=(e,s,a,r)=>{const n=_a,i=r+a;e^=-1;for(let _=r;_<i;_++)e=e>>>8^n[255&(e^s[_])];return-1^e},ne={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},we={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:la,_tr_stored_block:me,_tr_flush_block:ha,_tr_tally:R,_tr_align:oa}=ta,{Z_NO_FLUSH:S,Z_PARTIAL_FLUSH:da,Z_FULL_FLUSH:ua,Z_FINISH:b,Z_BLOCK:Pe,Z_OK:c,Z_STREAM_END:je,Z_STREAM_ERROR:x,Z_DATA_ERROR:fa,Z_BUF_ERROR:be,Z_DEFAULT_COMPRESSION:ca,Z_FILTERED:pa,Z_HUFFMAN_ONLY:re,Z_RLE:ga,Z_FIXED:wa,Z_DEFAULT_STRATEGY:ma,Z_UNKNOWN:ba,Z_DEFLATED:ie}=we,F=258,A=262,N=42,O=113,G=666,D=(e,s)=>(e.msg=ne[s],s),Ke=e=>2*e-(e>4?9:0),T=e=>{let s=e.length;for(;--s>=0;)e[s]=0},ya=e=>{let s,a,r,n=e.w_size;s=e.hash_size,r=s;do a=e.head[--r],e.head[r]=a>=n?a-n:0;while(--s);s=n,r=s;do a=e.prev[--r],e.prev[r]=a>=n?a-n:0;while(--s)};let L=(e,s,a)=>(s<<e.hash_shift^a)&e.hash_mask;const g=e=>{const s=e.state;let a=s.pending;a>e.avail_out&&(a=e.avail_out),a!==0&&(e.output.set(s.pending_buf.subarray(s.pending_out,s.pending_out+a),e.next_out),e.next_out+=a,s.pending_out+=a,e.total_out+=a,e.avail_out-=a,s.pending-=a,s.pending===0&&(s.pending_out=0))},w=(e,s)=>{ha(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,s),e.block_start=e.strstart,g(e.strm)},o=(e,s)=>{e.pending_buf[e.pending++]=s},X=(e,s)=>{e.pending_buf[e.pending++]=s>>>8&255,e.pending_buf[e.pending++]=255&s},ye=(e,s,a,r)=>{let n=e.avail_in;return n>r&&(n=r),n===0?0:(e.avail_in-=n,s.set(e.input.subarray(e.next_in,e.next_in+n),a),e.state.wrap===1?e.adler=Me(e.adler,s,n,a):e.state.wrap===2&&(e.adler=U(e.adler,s,n,a)),e.next_in+=n,e.total_in+=n,n)},Ye=(e,s)=>{let a,r,n=e.max_chain_length,i=e.strstart,_=e.prev_length,t=e.nice_match;const h=e.strstart>e.w_size-A?e.strstart-(e.w_size-A):0,l=e.window,u=e.w_mask,d=e.prev,m=e.strstart+F;let V=l[i+_-1],_e=l[i+_];e.prev_length>=e.good_match&&(n>>=2),t>e.lookahead&&(t=e.lookahead);do if(a=s,l[a+_]===_e&&l[a+_-1]===V&&l[a]===l[i]&&l[++a]===l[i+1]){i+=2,a++;do;while(l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&l[++i]===l[++a]&&i<m);if(r=F-(m-i),i=m-F,r>_){if(e.match_start=s,_=r,r>=t)break;V=l[i+_-1],_e=l[i+_]}}while((s=d[s&u])>h&&--n!=0);return _<=e.lookahead?_:e.lookahead},I=e=>{const s=e.w_size;let a,r,n;do{if(r=e.window_size-e.lookahead-e.strstart,e.strstart>=s+(s-A)&&(e.window.set(e.window.subarray(s,s+s-r),0),e.match_start-=s,e.strstart-=s,e.block_start-=s,e.insert>e.strstart&&(e.insert=e.strstart),ya(e),r+=s),e.strm.avail_in===0)break;if(a=ye(e.strm,e.window,e.strstart+e.lookahead,r),e.lookahead+=a,e.lookahead+e.insert>=3)for(n=e.strstart-e.insert,e.ins_h=e.window[n],e.ins_h=L(e,e.ins_h,e.window[n+1]);e.insert&&(e.ins_h=L(e,e.ins_h,e.window[n+3-1]),e.prev[n&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=n,n++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead<A&&e.strm.avail_in!==0)},Ge=(e,s)=>{let a,r,n,i=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,_=0,t=e.strm.avail_in;do{if(a=65535,n=e.bi_valid+42>>3,e.strm.avail_out<n||(n=e.strm.avail_out-n,r=e.strstart-e.block_start,a>r+e.strm.avail_in&&(a=r+e.strm.avail_in),a>n&&(a=n),a<i&&(a===0&&s!==b||s===S||a!==r+e.strm.avail_in)))break;_=s===b&&a===r+e.strm.avail_in?1:0,me(e,0,0,_),e.pending_buf[e.pending-4]=a,e.pending_buf[e.pending-3]=a>>8,e.pending_buf[e.pending-2]=~a,e.pending_buf[e.pending-1]=~a>>8,g(e.strm),r&&(r>a&&(r=a),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+r),e.strm.next_out),e.strm.next_out+=r,e.strm.avail_out-=r,e.strm.total_out+=r,e.block_start+=r,a-=r),a&&(ye(e.strm,e.strm.output,e.strm.next_out,a),e.strm.next_out+=a,e.strm.avail_out-=a,e.strm.total_out+=a)}while(_===0);return t-=e.strm.avail_in,t&&(t>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=t&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-t,e.strm.next_in),e.strstart),e.strstart+=t,e.insert+=t>e.w_size-e.insert?e.w_size-e.insert:t),e.block_start=e.strstart),e.high_water<e.strstart&&(e.high_water=e.strstart),_?4:s!==S&&s!==b&&e.strm.avail_in===0&&e.strstart===e.block_start?2:(n=e.window_size-e.strstart,e.strm.avail_in>n&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,n+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),n>e.strm.avail_in&&(n=e.strm.avail_in),n&&(ye(e.strm,e.window,e.strstart,n),e.strstart+=n,e.insert+=n>e.w_size-e.insert?e.w_size-e.insert:n),e.high_water<e.strstart&&(e.high_water=e.strstart),n=e.bi_valid+42>>3,n=e.pending_buf_size-n>65535?65535:e.pending_buf_size-n,i=n>e.w_size?e.w_size:n,r=e.strstart-e.block_start,(r>=i||(r||s===b)&&s!==S&&e.strm.avail_in===0&&r<=n)&&(a=r>n?n:r,_=s===b&&e.strm.avail_in===0&&a===r?1:0,me(e,e.block_start,a,_),e.block_start+=a,g(e.strm)),_?3:1)},ve=(e,s)=>{let a,r;for(;;){if(e.lookahead<A){if(I(e),e.lookahead<A&&s===S)return 1;if(e.lookahead===0)break}if(a=0,e.lookahead>=3&&(e.ins_h=L(e,e.ins_h,e.window[e.strstart+3-1]),a=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),a!==0&&e.strstart-a<=e.w_size-A&&(e.match_length=Ye(e,a)),e.match_length>=3)if(r=R(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do e.strstart++,e.ins_h=L(e,e.ins_h,e.window[e.strstart+3-1]),a=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart;while(--e.match_length!=0);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=L(e,e.ins_h,e.window[e.strstart+1]);else r=R(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(r&&(w(e,!1),e.strm.avail_out===0))return 1}return e.insert=e.strstart<2?e.strstart:2,s===b?(w(e,!0),e.strm.avail_out===0?3:4):e.sym_next&&(w(e,!1),e.strm.avail_out===0)?1:2},C=(e,s)=>{let a,r,n;for(;;){if(e.lookahead<A){if(I(e),e.lookahead<A&&s===S)return 1;if(e.lookahead===0)break}if(a=0,e.lookahead>=3&&(e.ins_h=L(e,e.ins_h,e.window[e.strstart+3-1]),a=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,a!==0&&e.prev_length<e.max_lazy_match&&e.strstart-a<=e.w_size-A&&(e.match_length=Ye(e,a),e.match_length<=5&&(e.strategy===pa||e.match_length===3&&e.strstart-e.match_start>4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){n=e.strstart+e.lookahead-3,r=R(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do++e.strstart<=n&&(e.ins_h=L(e,e.ins_h,e.window[e.strstart+3-1]),a=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart);while(--e.prev_length!=0);if(e.match_available=0,e.match_length=2,e.strstart++,r&&(w(e,!1),e.strm.avail_out===0))return 1}else if(e.match_available){if(r=R(e,0,e.window[e.strstart-1]),r&&w(e,!1),e.strstart++,e.lookahead--,e.strm.avail_out===0)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(r=R(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,s===b?(w(e,!0),e.strm.avail_out===0?3:4):e.sym_next&&(w(e,!1),e.strm.avail_out===0)?1:2};function E(e,s,a,r,n){this.good_length=e,this.max_lazy=s,this.nice_length=a,this.max_chain=r,this.func=n}const W=[new E(0,0,0,0,Ge),new E(4,4,8,4,ve),new E(4,5,16,8,ve),new E(4,6,32,32,ve),new E(4,4,16,16,C),new E(8,16,32,32,C),new E(8,16,128,128,C),new E(8,32,128,256,C),new E(32,128,258,1024,C),new E(32,258,258,4096,C)];function va(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ie,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),T(this.dyn_ltree),T(this.dyn_dtree),T(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),T(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),T(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const q=e=>{if(!e)return 1;const s=e.state;return!s||s.strm!==e||s.status!==N&&s.status!==57&&s.status!==69&&s.status!==73&&s.status!==91&&s.status!==103&&s.status!==O&&s.status!==G?1:0},Xe=e=>{if(q(e))return D(e,x);e.total_in=e.total_out=0,e.data_type=ba;const s=e.state;return s.pending=0,s.pending_out=0,s.wrap<0&&(s.wrap=-s.wrap),s.status=s.wrap===2?57:s.wrap?N:O,e.adler=s.wrap===2?0:1,s.last_flush=-2,la(s),c},We=e=>{const s=Xe(e);var a;return s===c&&((a=e.state).window_size=2*a.w_size,T(a.head),a.max_lazy_match=W[a.level].max_lazy,a.good_match=W[a.level].good_length,a.nice_match=W[a.level].nice_length,a.max_chain_length=W[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),s},qe=(e,s,a,r,n,i)=>{if(!e)return x;let _=1;if(s===ca&&(s=6),r<0?(_=0,r=-r):r>15&&(_=2,r-=16),n<1||n>9||a!==ie||r<8||r>15||s<0||s>9||i<0||i>wa||r===8&&_!==1)return D(e,x);r===8&&(r=9);const t=new va;return e.state=t,t.strm=e,t.status=N,t.wrap=_,t.gzhead=null,t.w_bits=r,t.w_size=1<<t.w_bits,t.w_mask=t.w_size-1,t.hash_bits=n+7,t.hash_size=1<<t.hash_bits,t.hash_mask=t.hash_size-1,t.hash_shift=~~((t.hash_bits+3-1)/3),t.window=new Uint8Array(2*t.w_size),t.head=new Uint16Array(t.hash_size),t.prev=new Uint16Array(t.w_size),t.lit_bufsize=1<<n+6,t.pending_buf_size=4*t.lit_bufsize,t.pending_buf=new Uint8Array(t.pending_buf_size),t.sym_buf=t.lit_bufsize,t.sym_end=3*(t.lit_bufsize-1),t.level=s,t.strategy=i,t.method=a,We(e)};var J={deflateInit:(e,s)=>qe(e,s,ie,15,8,ma),deflateInit2:qe,deflateReset:We,deflateResetKeep:Xe,deflateSetHeader:(e,s)=>q(e)||e.state.wrap!==2?x:(e.state.gzhead=s,c),deflate:(e,s)=>{if(q(e)||s>Pe||s<0)return e?D(e,x):x;const a=e.state;if(!e.output||e.avail_in!==0&&!e.input||a.status===G&&s!==b)return D(e,e.avail_out===0?be:x);const r=a.last_flush;if(a.last_flush=s,a.pending!==0){if(g(e),e.avail_out===0)return a.last_flush=-1,c}else if(e.avail_in===0&&Ke(s)<=Ke(r)&&s!==b)return D(e,be);if(a.status===G&&e.avail_in!==0)return D(e,be);if(a.status===N&&a.wrap===0&&(a.status=O),a.status===N){let n=ie+(a.w_bits-8<<4)<<8,i=-1;if(i=a.strategy>=re||a.level<2?0:a.level<6?1:a.level===6?2:3,n|=i<<6,a.strstart!==0&&(n|=32),n+=31-n%31,X(a,n),a.strstart!==0&&(X(a,e.adler>>>16),X(a,65535&e.adler)),e.adler=1,a.status=O,g(e),a.pending!==0)return a.last_flush=-1,c}if(a.status===57){if(e.adler=0,o(a,31),o(a,139),o(a,8),a.gzhead)o(a,(a.gzhead.text?1:0)+(a.gzhead.hcrc?2:0)+(a.gzhead.extra?4:0)+(a.gzhead.name?8:0)+(a.gzhead.comment?16:0)),o(a,255&a.gzhead.time),o(a,a.gzhead.time>>8&255),o(a,a.gzhead.time>>16&255),o(a,a.gzhead.time>>24&255),o(a,a.level===9?2:a.strategy>=re||a.level<2?4:0),o(a,255&a.gzhead.os),a.gzhead.extra&&a.gzhead.extra.length&&(o(a,255&a.gzhead.extra.length),o(a,a.gzhead.extra.length>>8&255)),a.gzhead.hcrc&&(e.adler=U(e.adler,a.pending_buf,a.pending,0)),a.gzindex=0,a.status=69;else if(o(a,0),o(a,0),o(a,0),o(a,0),o(a,0),o(a,a.level===9?2:a.strategy>=re||a.level<2?4:0),o(a,3),a.status=O,g(e),a.pending!==0)return a.last_flush=-1,c}if(a.status===69){if(a.gzhead.extra){let n=a.pending,i=(65535&a.gzhead.extra.length)-a.gzindex;for(;a.pending+i>a.pending_buf_size;){let t=a.pending_buf_size-a.pending;if(a.pending_buf.set(a.gzhead.extra.subarray(a.gzindex,a.gzindex+t),a.pending),a.pending=a.pending_buf_size,a.gzhead.hcrc&&a.pending>n&&(e.adler=U(e.adler,a.pending_buf,a.pending-n,n)),a.gzindex+=t,g(e),a.pending!==0)return a.last_flush=-1,c;n=0,i-=t}let _=new Uint8Array(a.gzhead.extra);a.pending_buf.set(_.subarray(a.gzindex,a.gzindex+i),a.pending),a.pending+=i,a.gzhead.hcrc&&a.pending>n&&(e.adler=U(e.adler,a.pending_buf,a.pending-n,n)),a.gzindex=0}a.status=73}if(a.status===73){if(a.gzhead.name){let n,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(e.adler=U(e.adler,a.pending_buf,a.pending-i,i)),g(e),a.pending!==0)return a.last_flush=-1,c;i=0}n=a.gzindex<a.gzhead.name.length?255&a.gzhead.name.charCodeAt(a.gzindex++):0,o(a,n)}while(n!==0);a.gzhead.hcrc&&a.pending>i&&(e.adler=U(e.adler,a.pending_buf,a.pending-i,i)),a.gzindex=0}a.status=91}if(a.status===91){if(a.gzhead.comment){let n,i=a.pending;do{if(a.pending===a.pending_buf_size){if(a.gzhead.hcrc&&a.pending>i&&(e.adler=U(e.adler,a.pending_buf,a.pending-i,i)),g(e),a.pending!==0)return a.last_flush=-1,c;i=0}n=a.gzindex<a.gzhead.comment.length?255&a.gzhead.comment.charCodeAt(a.gzindex++):0,o(a,n)}while(n!==0);a.gzhead.hcrc&&a.pending>i&&(e.adler=U(e.adler,a.pending_buf,a.pending-i,i))}a.status=103}if(a.status===103){if(a.gzhead.hcrc){if(a.pending+2>a.pending_buf_size&&(g(e),a.pending!==0))return a.last_flush=-1,c;o(a,255&e.adler),o(a,e.adler>>8&255),e.adler=0}if(a.status=O,g(e),a.pending!==0)return a.last_flush=-1,c}if(e.avail_in!==0||a.lookahead!==0||s!==S&&a.status!==G){let n=a.level===0?Ge(a,s):a.strategy===re?((i,_)=>{let t;for(;;){if(i.lookahead===0&&(I(i),i.lookahead===0)){if(_===S)return 1;break}if(i.match_length=0,t=R(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++,t&&(w(i,!1),i.strm.avail_out===0))return 1}return i.insert=0,_===b?(w(i,!0),i.strm.avail_out===0?3:4):i.sym_next&&(w(i,!1),i.strm.avail_out===0)?1:2})(a,s):a.strategy===ga?((i,_)=>{let t,h,l,u;const d=i.window;for(;;){if(i.lookahead<=F){if(I(i),i.lookahead<=F&&_===S)return 1;if(i.lookahead===0)break}if(i.match_length=0,i.lookahead>=3&&i.strstart>0&&(l=i.strstart-1,h=d[l],h===d[++l]&&h===d[++l]&&h===d[++l])){u=i.strstart+F;do;while(h===d[++l]&&h===d[++l]&&h===d[++l]&&h===d[++l]&&h===d[++l]&&h===d[++l]&&h===d[++l]&&h===d[++l]&&l<u);i.match_length=F-(u-l),i.match_length>i.lookahead&&(i.match_length=i.lookahead)}if(i.match_length>=3?(t=R(i,1,i.match_length-3),i.lookahead-=i.match_length,i.strstart+=i.match_length,i.match_length=0):(t=R(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++),t&&(w(i,!1),i.strm.avail_out===0))return 1}return i.insert=0,_===b?(w(i,!0),i.strm.avail_out===0?3:4):i.sym_next&&(w(i,!1),i.strm.avail_out===0)?1:2})(a,s):W[a.level].func(a,s);if(n!==3&&n!==4||(a.status=G),n===1||n===3)return e.avail_out===0&&(a.last_flush=-1),c;if(n===2&&(s===da?oa(a):s!==Pe&&(me(a,0,0,!1),s===ua&&(T(a.head),a.lookahead===0&&(a.strstart=0,a.block_start=0,a.insert=0))),g(e),e.avail_out===0))return a.last_flush=-1,c}return s!==b?c:a.wrap<=0?je:(a.wrap===2?(o(a,255&e.adler),o(a,e.adler>>8&255),o(a,e.adler>>16&255),o(a,e.adler>>24&255),o(a,255&e.total_in),o(a,e.total_in>>8&255),o(a,e.total_in>>16&255),o(a,e.total_in>>24&255)):(X(a,e.adler>>>16),X(a,65535&e.adler)),g(e),a.wrap>0&&(a.wrap=-a.wrap),a.pending!==0?c:je)},deflateEnd:e=>{if(q(e))return x;const s=e.state.status;return e.state=null,s===O?D(e,fa):c},deflateSetDictionary:(e,s)=>{let a=s.length;if(q(e))return x;const r=e.state,n=r.wrap;if(n===2||n===1&&r.status!==N||r.lookahead)return x;if(n===1&&(e.adler=Me(e.adler,s,a,0)),r.wrap=0,a>=r.w_size){n===0&&(T(r.head),r.strstart=0,r.block_start=0,r.insert=0);let h=new Uint8Array(r.w_size);h.set(s.subarray(a-r.w_size,a),0),s=h,a=r.w_size}const i=e.avail_in,_=e.next_in,t=e.input;for(e.avail_in=a,e.next_in=0,e.input=s,I(r);r.lookahead>=3;){let h=r.strstart,l=r.lookahead-2;do r.ins_h=L(r,r.ins_h,r.window[h+3-1]),r.prev[h&r.w_mask]=r.head[r.ins_h],r.head[r.ins_h]=h,h++;while(--l);r.strstart=h,r.lookahead=2,I(r)}return r.strstart+=r.lookahead,r.block_start=r.strstart,r.insert=r.lookahead,r.lookahead=0,r.match_length=r.prev_length=2,r.match_available=0,e.next_in=_,e.input=t,e.avail_in=i,r.wrap=n,c},deflateInfo:"pako deflate (from Nodeca project)"};const za=(e,s)=>Object.prototype.hasOwnProperty.call(e,s);var ka=function(e){const s=Array.prototype.slice.call(arguments,1);for(;s.length;){const a=s.shift();if(a){if(typeof a!="object")throw new TypeError(a+"must be non-object");for(const r in a)za(a,r)&&(e[r]=a[r])}}return e},xa=e=>{let s=0;for(let r=0,n=e.length;r<n;r++)s+=e[r].length;const a=new Uint8Array(s);for(let r=0,n=0,i=e.length;r<i;r++){let _=e[r];a.set(_,n),n+=_.length}return a};let Aa=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{Aa=!1}const ze=new Uint8Array(256);for(let e=0;e<256;e++)ze[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;ze[254]=ze[254]=1;var Je=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let s,a,r,n,i,_=e.length,t=0;for(n=0;n<_;n++)a=e.charCodeAt(n),(64512&a)==55296&&n+1<_&&(r=e.charCodeAt(n+1),(64512&r)==56320&&(a=65536+(a-55296<<10)+(r-56320),n++)),t+=a<128?1:a<2048?2:a<65536?3:4;for(s=new Uint8Array(t),i=0,n=0;i<t;n++)a=e.charCodeAt(n),(64512&a)==55296&&n+1<_&&(r=e.charCodeAt(n+1),(64512&r)==56320&&(a=65536+(a-55296<<10)+(r-56320),n++)),a<128?s[i++]=a:a<2048?(s[i++]=192|a>>>6,s[i++]=128|63&a):a<65536?(s[i++]=224|a>>>12,s[i++]=128|a>>>6&63,s[i++]=128|63&a):(s[i++]=240|a>>>18,s[i++]=128|a>>>12&63,s[i++]=128|a>>>6&63,s[i++]=128|63&a);return s},Ea=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Qe=Object.prototype.toString,{Z_NO_FLUSH:Za,Z_SYNC_FLUSH:Ua,Z_FULL_FLUSH:Ra,Z_FINISH:Sa,Z_OK:te,Z_STREAM_END:Ta,Z_DEFAULT_COMPRESSION:La,Z_DEFAULT_STRATEGY:Fa,Z_DEFLATED:Oa}=we;function Q(e){this.options=ka({level:La,method:Oa,chunkSize:16384,windowBits:15,memLevel:8,strategy:Fa},e||{});let s=this.options;s.raw&&s.windowBits>0?s.windowBits=-s.windowBits:s.gzip&&s.windowBits>0&&s.windowBits<16&&(s.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Ea,this.strm.avail_out=0;let a=J.deflateInit2(this.strm,s.level,s.method,s.windowBits,s.memLevel,s.strategy);if(a!==te)throw new Error(ne[a]);if(s.header&&J.deflateSetHeader(this.strm,s.header),s.dictionary){let r;if(r=typeof s.dictionary=="string"?Je(s.dictionary):Qe.call(s.dictionary)==="[object ArrayBuffer]"?new Uint8Array(s.dictionary):s.dictionary,a=J.deflateSetDictionary(this.strm,r),a!==te)throw new Error(ne[a]);this._dict_set=!0}}function ke(e,s){const a=new Q(s);if(a.push(e,!0),a.err)throw a.msg||ne[a.err];return a.result}Q.prototype.push=function(e,s){const a=this.strm,r=this.options.chunkSize;let n,i;if(this.ended)return!1;for(i=s===~~s?s:s===!0?Sa:Za,typeof e=="string"?a.input=Je(e):Qe.call(e)==="[object ArrayBuffer]"?a.input=new Uint8Array(e):a.input=e,a.next_in=0,a.avail_in=a.input.length;;)if(a.avail_out===0&&(a.output=new Uint8Array(r),a.next_out=0,a.avail_out=r),(i===Ua||i===Ra)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=J.deflate(a,i),n===Ta)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=J.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===te;if(a.avail_out!==0){if(i>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(a.avail_in===0)break}else this.onData(a.output)}return!0},Q.prototype.onData=function(e){this.chunks.push(e)},Q.prototype.onEnd=function(e){e===te&&(this.result=xa(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var Ve=Q,$e=ke,ea=function(e,s){return(s=s||{}).raw=!0,ke(e,s)},aa=function(e,s){return(s=s||{}).gzip=!0,ke(e,s)},sa=we,Da={Deflate:Ve,deflate:$e,deflateRaw:ea,gzip:aa,constants:sa};v.Deflate=Ve,v.constants=sa,v.default=Da,v.deflate=$e,v.deflateRaw=ea,v.gzip=aa,Object.defineProperty(v,"__esModule",{value:!0})}); diff --git a/public/Cesium/ThirdParty/Workers/pako_inflate.min.js b/public/Cesium/ThirdParty/Workers/pako_inflate.min.js new file mode 100644 index 000000000..af61e548d --- /dev/null +++ b/public/Cesium/ThirdParty/Workers/pako_inflate.min.js @@ -0,0 +1 @@ +/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */(function(O,I){typeof exports=="object"&&typeof module<"u"?I(exports):typeof define=="function"&&define.amd?define(["exports"],I):I((O=typeof globalThis<"u"?globalThis:O||self).pako={})})(this,function(O){"use strict";var I=(e,i,t,o)=>{let s=65535&e|0,r=e>>>16&65535|0,h=0;for(;t!==0;){h=t>2e3?2e3:t,t-=h;do s=s+i[o++]|0,r=r+s|0;while(--h);s%=65521,r%=65521}return s|r<<16|0};const Zt=new Uint32Array((()=>{let e,i=[];for(var t=0;t<256;t++){e=t;for(var o=0;o<8;o++)e=1&e?3988292384^e>>>1:e>>>1;i[t]=e}return i})());var U=(e,i,t,o)=>{const s=Zt,r=o+t;e^=-1;for(let h=o;h<r;h++)e=e>>>8^s[255&(e^i[h])];return-1^e};const j=16209;var St=function(e,i){let t,o,s,r,h,l,p,n,a,A,w,d,Z,v,u,y,k,f,g,E,c,x,m,b;const _=e.state;t=e.next_in,m=e.input,o=t+(e.avail_in-5),s=e.next_out,b=e.output,r=s-(i-e.avail_out),h=s+(e.avail_out-257),l=_.dmax,p=_.wsize,n=_.whave,a=_.wnext,A=_.window,w=_.hold,d=_.bits,Z=_.lencode,v=_.distcode,u=(1<<_.lenbits)-1,y=(1<<_.distbits)-1;t:do{d<15&&(w+=m[t++]<<d,d+=8,w+=m[t++]<<d,d+=8),k=Z[w&u];e:for(;;){if(f=k>>>24,w>>>=f,d-=f,f=k>>>16&255,f===0)b[s++]=65535&k;else{if(!(16&f)){if((64&f)==0){k=Z[(65535&k)+(w&(1<<f)-1)];continue e}if(32&f){_.mode=16191;break t}e.msg="invalid literal/length code",_.mode=j;break t}g=65535&k,f&=15,f&&(d<f&&(w+=m[t++]<<d,d+=8),g+=w&(1<<f)-1,w>>>=f,d-=f),d<15&&(w+=m[t++]<<d,d+=8,w+=m[t++]<<d,d+=8),k=v[w&y];i:for(;;){if(f=k>>>24,w>>>=f,d-=f,f=k>>>16&255,!(16&f)){if((64&f)==0){k=v[(65535&k)+(w&(1<<f)-1)];continue i}e.msg="invalid distance code",_.mode=j;break t}if(E=65535&k,f&=15,d<f&&(w+=m[t++]<<d,d+=8,d<f&&(w+=m[t++]<<d,d+=8)),E+=w&(1<<f)-1,E>l){e.msg="invalid distance too far back",_.mode=j;break t}if(w>>>=f,d-=f,f=s-r,E>f){if(f=E-f,f>n&&_.sane){e.msg="invalid distance too far back",_.mode=j;break t}if(c=0,x=A,a===0){if(c+=p-f,f<g){g-=f;do b[s++]=A[c++];while(--f);c=s-E,x=b}}else if(a<f){if(c+=p+a-f,f-=a,f<g){g-=f;do b[s++]=A[c++];while(--f);if(c=0,a<g){f=a,g-=f;do b[s++]=A[c++];while(--f);c=s-E,x=b}}}else if(c+=a-f,f<g){g-=f;do b[s++]=A[c++];while(--f);c=s-E,x=b}for(;g>2;)b[s++]=x[c++],b[s++]=x[c++],b[s++]=x[c++],g-=3;g&&(b[s++]=x[c++],g>1&&(b[s++]=x[c++]))}else{c=s-E;do b[s++]=b[c++],b[s++]=b[c++],b[s++]=b[c++],g-=3;while(g>2);g&&(b[s++]=b[c++],g>1&&(b[s++]=b[c++]))}break}}break}}while(t<o&&s<h);g=d>>3,t-=g,d-=g<<3,w&=(1<<d)-1,e.next_in=t,e.next_out=s,e.avail_in=t<o?o-t+5:5-(t-o),e.avail_out=s<h?h-s+257:257-(s-h),_.hold=w,_.bits=d};const K=15,Tt=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),Ot=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),Ut=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),Dt=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]);var z=(e,i,t,o,s,r,h,l)=>{const p=l.bits;let n,a,A,w,d,Z,v=0,u=0,y=0,k=0,f=0,g=0,E=0,c=0,x=0,m=0,b=null;const _=new Uint16Array(16),S=new Uint16Array(16);let H,q,J,Q=null;for(v=0;v<=K;v++)_[v]=0;for(u=0;u<o;u++)_[i[t+u]]++;for(f=p,k=K;k>=1&&_[k]===0;k--);if(f>k&&(f=k),k===0)return s[r++]=20971520,s[r++]=20971520,l.bits=1,0;for(y=1;y<k&&_[y]===0;y++);for(f<y&&(f=y),c=1,v=1;v<=K;v++)if(c<<=1,c-=_[v],c<0)return-1;if(c>0&&(e===0||k!==1))return-1;for(S[1]=0,v=1;v<K;v++)S[v+1]=S[v]+_[v];for(u=0;u<o;u++)i[t+u]!==0&&(h[S[i[t+u]]++]=u);if(e===0?(b=Q=h,Z=20):e===1?(b=Tt,Q=Ot,Z=257):(b=Ut,Q=Dt,Z=0),m=0,u=0,v=y,d=r,g=f,E=0,A=-1,x=1<<f,w=x-1,e===1&&x>852||e===2&&x>592)return 1;for(;;){H=v-E,h[u]+1<Z?(q=0,J=h[u]):h[u]>=Z?(q=Q[h[u]-Z],J=b[h[u]-Z]):(q=96,J=0),n=1<<v-E,a=1<<g,y=a;do a-=n,s[d+(m>>E)+a]=H<<24|q<<16|J|0;while(a!==0);for(n=1<<v-1;m&n;)n>>=1;if(n!==0?(m&=n-1,m+=n):m=0,u++,--_[v]==0){if(v===k)break;v=i[t+h[u]]}if(v>f&&(m&w)!==A){for(E===0&&(E=f),d+=y,g=v-E,c=1<<g;g+E<k&&(c-=_[g+E],!(c<=0));)g++,c<<=1;if(x+=1<<g,e===1&&x>852||e===2&&x>592)return 1;A=m&w,s[A]=f<<24|g<<16|d-r|0}}return m!==0&&(s[d+m]=v-E<<24|64<<16|0),l.bits=f,0},V={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{Z_FINISH:lt,Z_BLOCK:Bt,Z_TREES:P,Z_OK:C,Z_STREAM_END:It,Z_NEED_DICT:Ct,Z_STREAM_ERROR:T,Z_DATA_ERROR:dt,Z_MEM_ERROR:ft,Z_BUF_ERROR:Nt,Z_DEFLATED:ht}=V,Y=16180,G=16190,D=16191,$=16192,tt=16194,X=16199,W=16200,et=16206,R=16209,ct=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function zt(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const N=e=>{if(!e)return 1;const i=e.state;return!i||i.strm!==e||i.mode<Y||i.mode>16211?1:0},ut=e=>{if(N(e))return T;const i=e.state;return e.total_in=e.total_out=i.total=0,e.msg="",i.wrap&&(e.adler=1&i.wrap),i.mode=Y,i.last=0,i.havedict=0,i.flags=-1,i.dmax=32768,i.head=null,i.hold=0,i.bits=0,i.lencode=i.lendyn=new Int32Array(852),i.distcode=i.distdyn=new Int32Array(592),i.sane=1,i.back=-1,C},wt=e=>{if(N(e))return T;const i=e.state;return i.wsize=0,i.whave=0,i.wnext=0,ut(e)},bt=(e,i)=>{let t;if(N(e))return T;const o=e.state;return i<0?(t=0,i=-i):(t=5+(i>>4),i<48&&(i&=15)),i&&(i<8||i>15)?T:(o.window!==null&&o.wbits!==i&&(o.window=null),o.wrap=t,o.wbits=i,wt(e))},mt=(e,i)=>{if(!e)return T;const t=new zt;e.state=t,t.strm=e,t.window=null,t.mode=Y;const o=bt(e,i);return o!==C&&(e.state=null),o};let it,nt,kt=!0;const Ft=e=>{if(kt){it=new Int32Array(512),nt=new Int32Array(32);let i=0;for(;i<144;)e.lens[i++]=8;for(;i<256;)e.lens[i++]=9;for(;i<280;)e.lens[i++]=7;for(;i<288;)e.lens[i++]=8;for(z(1,e.lens,0,288,it,0,e.work,{bits:9}),i=0;i<32;)e.lens[i++]=5;z(2,e.lens,0,32,nt,0,e.work,{bits:5}),kt=!1}e.lencode=it,e.lenbits=9,e.distcode=nt,e.distbits=5},_t=(e,i,t,o)=>{let s;const r=e.state;return r.window===null&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=new Uint8Array(r.wsize)),o>=r.wsize?(r.window.set(i.subarray(t-r.wsize,t),0),r.wnext=0,r.whave=r.wsize):(s=r.wsize-r.wnext,s>o&&(s=o),r.window.set(i.subarray(t-o,t-o+s),r.wnext),(o-=s)?(r.window.set(i.subarray(t-o,t),0),r.wnext=o,r.whave=r.wsize):(r.wnext+=s,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=s))),0};var B={inflateReset:wt,inflateReset2:bt,inflateResetKeep:ut,inflateInit:e=>mt(e,15),inflateInit2:mt,inflate:(e,i)=>{let t,o,s,r,h,l,p,n,a,A,w,d,Z,v,u,y,k,f,g,E,c,x,m=0;const b=new Uint8Array(4);let _,S;const H=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(N(e)||!e.output||!e.input&&e.avail_in!==0)return T;t=e.state,t.mode===D&&(t.mode=$),h=e.next_out,s=e.output,p=e.avail_out,r=e.next_in,o=e.input,l=e.avail_in,n=t.hold,a=t.bits,A=l,w=p,x=C;t:for(;;)switch(t.mode){case Y:if(t.wrap===0){t.mode=$;break}for(;a<16;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}if(2&t.wrap&&n===35615){t.wbits===0&&(t.wbits=15),t.check=0,b[0]=255&n,b[1]=n>>>8&255,t.check=U(t.check,b,2,0),n=0,a=0,t.mode=16181;break}if(t.head&&(t.head.done=!1),!(1&t.wrap)||(((255&n)<<8)+(n>>8))%31){e.msg="incorrect header check",t.mode=R;break}if((15&n)!==ht){e.msg="unknown compression method",t.mode=R;break}if(n>>>=4,a-=4,c=8+(15&n),t.wbits===0&&(t.wbits=c),c>15||c>t.wbits){e.msg="invalid window size",t.mode=R;break}t.dmax=1<<t.wbits,t.flags=0,e.adler=t.check=1,t.mode=512&n?16189:D,n=0,a=0;break;case 16181:for(;a<16;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}if(t.flags=n,(255&t.flags)!==ht){e.msg="unknown compression method",t.mode=R;break}if(57344&t.flags){e.msg="unknown header flags set",t.mode=R;break}t.head&&(t.head.text=n>>8&1),512&t.flags&&4&t.wrap&&(b[0]=255&n,b[1]=n>>>8&255,t.check=U(t.check,b,2,0)),n=0,a=0,t.mode=16182;case 16182:for(;a<32;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}t.head&&(t.head.time=n),512&t.flags&&4&t.wrap&&(b[0]=255&n,b[1]=n>>>8&255,b[2]=n>>>16&255,b[3]=n>>>24&255,t.check=U(t.check,b,4,0)),n=0,a=0,t.mode=16183;case 16183:for(;a<16;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}t.head&&(t.head.xflags=255&n,t.head.os=n>>8),512&t.flags&&4&t.wrap&&(b[0]=255&n,b[1]=n>>>8&255,t.check=U(t.check,b,2,0)),n=0,a=0,t.mode=16184;case 16184:if(1024&t.flags){for(;a<16;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}t.length=n,t.head&&(t.head.extra_len=n),512&t.flags&&4&t.wrap&&(b[0]=255&n,b[1]=n>>>8&255,t.check=U(t.check,b,2,0)),n=0,a=0}else t.head&&(t.head.extra=null);t.mode=16185;case 16185:if(1024&t.flags&&(d=t.length,d>l&&(d=l),d&&(t.head&&(c=t.head.extra_len-t.length,t.head.extra||(t.head.extra=new Uint8Array(t.head.extra_len)),t.head.extra.set(o.subarray(r,r+d),c)),512&t.flags&&4&t.wrap&&(t.check=U(t.check,o,d,r)),l-=d,r+=d,t.length-=d),t.length))break t;t.length=0,t.mode=16186;case 16186:if(2048&t.flags){if(l===0)break t;d=0;do c=o[r+d++],t.head&&c&&t.length<65536&&(t.head.name+=String.fromCharCode(c));while(c&&d<l);if(512&t.flags&&4&t.wrap&&(t.check=U(t.check,o,d,r)),l-=d,r+=d,c)break t}else t.head&&(t.head.name=null);t.length=0,t.mode=16187;case 16187:if(4096&t.flags){if(l===0)break t;d=0;do c=o[r+d++],t.head&&c&&t.length<65536&&(t.head.comment+=String.fromCharCode(c));while(c&&d<l);if(512&t.flags&&4&t.wrap&&(t.check=U(t.check,o,d,r)),l-=d,r+=d,c)break t}else t.head&&(t.head.comment=null);t.mode=16188;case 16188:if(512&t.flags){for(;a<16;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}if(4&t.wrap&&n!==(65535&t.check)){e.msg="header crc mismatch",t.mode=R;break}n=0,a=0}t.head&&(t.head.hcrc=t.flags>>9&1,t.head.done=!0),e.adler=t.check=0,t.mode=D;break;case 16189:for(;a<32;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}e.adler=t.check=ct(n),n=0,a=0,t.mode=G;case G:if(t.havedict===0)return e.next_out=h,e.avail_out=p,e.next_in=r,e.avail_in=l,t.hold=n,t.bits=a,Ct;e.adler=t.check=1,t.mode=D;case D:if(i===Bt||i===P)break t;case $:if(t.last){n>>>=7&a,a-=7&a,t.mode=et;break}for(;a<3;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}switch(t.last=1&n,n>>>=1,a-=1,3&n){case 0:t.mode=16193;break;case 1:if(Ft(t),t.mode=X,i===P){n>>>=2,a-=2;break t}break;case 2:t.mode=16196;break;case 3:e.msg="invalid block type",t.mode=R}n>>>=2,a-=2;break;case 16193:for(n>>>=7&a,a-=7&a;a<32;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}if((65535&n)!=(n>>>16^65535)){e.msg="invalid stored block lengths",t.mode=R;break}if(t.length=65535&n,n=0,a=0,t.mode=tt,i===P)break t;case tt:t.mode=16195;case 16195:if(d=t.length,d){if(d>l&&(d=l),d>p&&(d=p),d===0)break t;s.set(o.subarray(r,r+d),h),l-=d,r+=d,p-=d,h+=d,t.length-=d;break}t.mode=D;break;case 16196:for(;a<14;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}if(t.nlen=257+(31&n),n>>>=5,a-=5,t.ndist=1+(31&n),n>>>=5,a-=5,t.ncode=4+(15&n),n>>>=4,a-=4,t.nlen>286||t.ndist>30){e.msg="too many length or distance symbols",t.mode=R;break}t.have=0,t.mode=16197;case 16197:for(;t.have<t.ncode;){for(;a<3;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}t.lens[H[t.have++]]=7&n,n>>>=3,a-=3}for(;t.have<19;)t.lens[H[t.have++]]=0;if(t.lencode=t.lendyn,t.lenbits=7,_={bits:t.lenbits},x=z(0,t.lens,0,19,t.lencode,0,t.work,_),t.lenbits=_.bits,x){e.msg="invalid code lengths set",t.mode=R;break}t.have=0,t.mode=16198;case 16198:for(;t.have<t.nlen+t.ndist;){for(;m=t.lencode[n&(1<<t.lenbits)-1],u=m>>>24,y=m>>>16&255,k=65535&m,!(u<=a);){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}if(k<16)n>>>=u,a-=u,t.lens[t.have++]=k;else{if(k===16){for(S=u+2;a<S;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}if(n>>>=u,a-=u,t.have===0){e.msg="invalid bit length repeat",t.mode=R;break}c=t.lens[t.have-1],d=3+(3&n),n>>>=2,a-=2}else if(k===17){for(S=u+3;a<S;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}n>>>=u,a-=u,c=0,d=3+(7&n),n>>>=3,a-=3}else{for(S=u+7;a<S;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}n>>>=u,a-=u,c=0,d=11+(127&n),n>>>=7,a-=7}if(t.have+d>t.nlen+t.ndist){e.msg="invalid bit length repeat",t.mode=R;break}for(;d--;)t.lens[t.have++]=c}}if(t.mode===R)break;if(t.lens[256]===0){e.msg="invalid code -- missing end-of-block",t.mode=R;break}if(t.lenbits=9,_={bits:t.lenbits},x=z(1,t.lens,0,t.nlen,t.lencode,0,t.work,_),t.lenbits=_.bits,x){e.msg="invalid literal/lengths set",t.mode=R;break}if(t.distbits=6,t.distcode=t.distdyn,_={bits:t.distbits},x=z(2,t.lens,t.nlen,t.ndist,t.distcode,0,t.work,_),t.distbits=_.bits,x){e.msg="invalid distances set",t.mode=R;break}if(t.mode=X,i===P)break t;case X:t.mode=W;case W:if(l>=6&&p>=258){e.next_out=h,e.avail_out=p,e.next_in=r,e.avail_in=l,t.hold=n,t.bits=a,St(e,w),h=e.next_out,s=e.output,p=e.avail_out,r=e.next_in,o=e.input,l=e.avail_in,n=t.hold,a=t.bits,t.mode===D&&(t.back=-1);break}for(t.back=0;m=t.lencode[n&(1<<t.lenbits)-1],u=m>>>24,y=m>>>16&255,k=65535&m,!(u<=a);){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}if(y&&(240&y)==0){for(f=u,g=y,E=k;m=t.lencode[E+((n&(1<<f+g)-1)>>f)],u=m>>>24,y=m>>>16&255,k=65535&m,!(f+u<=a);){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}n>>>=f,a-=f,t.back+=f}if(n>>>=u,a-=u,t.back+=u,t.length=k,y===0){t.mode=16205;break}if(32&y){t.back=-1,t.mode=D;break}if(64&y){e.msg="invalid literal/length code",t.mode=R;break}t.extra=15&y,t.mode=16201;case 16201:if(t.extra){for(S=t.extra;a<S;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}t.length+=n&(1<<t.extra)-1,n>>>=t.extra,a-=t.extra,t.back+=t.extra}t.was=t.length,t.mode=16202;case 16202:for(;m=t.distcode[n&(1<<t.distbits)-1],u=m>>>24,y=m>>>16&255,k=65535&m,!(u<=a);){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}if((240&y)==0){for(f=u,g=y,E=k;m=t.distcode[E+((n&(1<<f+g)-1)>>f)],u=m>>>24,y=m>>>16&255,k=65535&m,!(f+u<=a);){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}n>>>=f,a-=f,t.back+=f}if(n>>>=u,a-=u,t.back+=u,64&y){e.msg="invalid distance code",t.mode=R;break}t.offset=k,t.extra=15&y,t.mode=16203;case 16203:if(t.extra){for(S=t.extra;a<S;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}t.offset+=n&(1<<t.extra)-1,n>>>=t.extra,a-=t.extra,t.back+=t.extra}if(t.offset>t.dmax){e.msg="invalid distance too far back",t.mode=R;break}t.mode=16204;case 16204:if(p===0)break t;if(d=w-p,t.offset>d){if(d=t.offset-d,d>t.whave&&t.sane){e.msg="invalid distance too far back",t.mode=R;break}d>t.wnext?(d-=t.wnext,Z=t.wsize-d):Z=t.wnext-d,d>t.length&&(d=t.length),v=t.window}else v=s,Z=h-t.offset,d=t.length;d>p&&(d=p),p-=d,t.length-=d;do s[h++]=v[Z++];while(--d);t.length===0&&(t.mode=W);break;case 16205:if(p===0)break t;s[h++]=t.length,p--,t.mode=W;break;case et:if(t.wrap){for(;a<32;){if(l===0)break t;l--,n|=o[r++]<<a,a+=8}if(w-=p,e.total_out+=w,t.total+=w,4&t.wrap&&w&&(e.adler=t.check=t.flags?U(t.check,s,w,h-w):I(t.check,s,w,h-w)),w=p,4&t.wrap&&(t.flags?n:ct(n))!==t.check){e.msg="incorrect data check",t.mode=R;break}n=0,a=0}t.mode=16207;case 16207:if(t.wrap&&t.flags){for(;a<32;){if(l===0)break t;l--,n+=o[r++]<<a,a+=8}if(4&t.wrap&&n!==(4294967295&t.total)){e.msg="incorrect length check",t.mode=R;break}n=0,a=0}t.mode=16208;case 16208:x=It;break t;case R:x=dt;break t;case 16210:return ft;default:return T}return e.next_out=h,e.avail_out=p,e.next_in=r,e.avail_in=l,t.hold=n,t.bits=a,(t.wsize||w!==e.avail_out&&t.mode<R&&(t.mode<et||i!==lt))&&_t(e,e.output,e.next_out,w-e.avail_out),A-=e.avail_in,w-=e.avail_out,e.total_in+=A,e.total_out+=w,t.total+=w,4&t.wrap&&w&&(e.adler=t.check=t.flags?U(t.check,s,w,e.next_out-w):I(t.check,s,w,e.next_out-w)),e.data_type=t.bits+(t.last?64:0)+(t.mode===D?128:0)+(t.mode===X||t.mode===tt?256:0),(A===0&&w===0||i===lt)&&x===C&&(x=Nt),x},inflateEnd:e=>{if(N(e))return T;let i=e.state;return i.window&&(i.window=null),e.state=null,C},inflateGetHeader:(e,i)=>{if(N(e))return T;const t=e.state;return(2&t.wrap)==0?T:(t.head=i,i.done=!1,C)},inflateSetDictionary:(e,i)=>{const t=i.length;let o,s,r;return N(e)?T:(o=e.state,o.wrap!==0&&o.mode!==G?T:o.mode===G&&(s=1,s=I(s,i,t,0),s!==o.check)?dt:(r=_t(e,i,t,t),r?(o.mode=16210,ft):(o.havedict=1,C)))},inflateInfo:"pako inflate (from Nodeca project)"};const Lt=(e,i)=>Object.prototype.hasOwnProperty.call(e,i);var Mt=function(e){const i=Array.prototype.slice.call(arguments,1);for(;i.length;){const t=i.shift();if(t){if(typeof t!="object")throw new TypeError(t+"must be non-object");for(const o in t)Lt(t,o)&&(e[o]=t[o])}}return e},Ht=e=>{let i=0;for(let o=0,s=e.length;o<s;o++)i+=e[o].length;const t=new Uint8Array(i);for(let o=0,s=0,r=e.length;o<r;o++){let h=e[o];t.set(h,s),s+=h.length}return t};let gt=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{gt=!1}const F=new Uint8Array(256);for(let e=0;e<256;e++)F[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;F[254]=F[254]=1;var jt=e=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(e);let i,t,o,s,r,h=e.length,l=0;for(s=0;s<h;s++)t=e.charCodeAt(s),(64512&t)==55296&&s+1<h&&(o=e.charCodeAt(s+1),(64512&o)==56320&&(t=65536+(t-55296<<10)+(o-56320),s++)),l+=t<128?1:t<2048?2:t<65536?3:4;for(i=new Uint8Array(l),r=0,s=0;r<l;s++)t=e.charCodeAt(s),(64512&t)==55296&&s+1<h&&(o=e.charCodeAt(s+1),(64512&o)==56320&&(t=65536+(t-55296<<10)+(o-56320),s++)),t<128?i[r++]=t:t<2048?(i[r++]=192|t>>>6,i[r++]=128|63&t):t<65536?(i[r++]=224|t>>>12,i[r++]=128|t>>>6&63,i[r++]=128|63&t):(i[r++]=240|t>>>18,i[r++]=128|t>>>12&63,i[r++]=128|t>>>6&63,i[r++]=128|63&t);return i},Kt=(e,i)=>{const t=i||e.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(e.subarray(0,i));let o,s;const r=new Array(2*t);for(s=0,o=0;o<t;){let h=e[o++];if(h<128){r[s++]=h;continue}let l=F[h];if(l>4)r[s++]=65533,o+=l-1;else{for(h&=l===2?31:l===3?15:7;l>1&&o<t;)h=h<<6|63&e[o++],l--;l>1?r[s++]=65533:h<65536?r[s++]=h:(h-=65536,r[s++]=55296|h>>10&1023,r[s++]=56320|1023&h)}}return((h,l)=>{if(l<65534&&h.subarray&>)return String.fromCharCode.apply(null,h.length===l?h:h.subarray(0,l));let p="";for(let n=0;n<l;n++)p+=String.fromCharCode(h[n]);return p})(r,s)},Pt=(e,i)=>{(i=i||e.length)>e.length&&(i=e.length);let t=i-1;for(;t>=0&&(192&e[t])==128;)t--;return t<0||t===0?i:t+F[e[t]]>i?t:i},at={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},Yt=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0},Gt=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const pt=Object.prototype.toString,{Z_NO_FLUSH:Xt,Z_FINISH:Wt,Z_OK:L,Z_STREAM_END:rt,Z_NEED_DICT:ot,Z_STREAM_ERROR:qt,Z_DATA_ERROR:vt,Z_MEM_ERROR:Jt}=V;function M(e){this.options=Mt({chunkSize:65536,windowBits:15,to:""},e||{});const i=this.options;i.raw&&i.windowBits>=0&&i.windowBits<16&&(i.windowBits=-i.windowBits,i.windowBits===0&&(i.windowBits=-15)),!(i.windowBits>=0&&i.windowBits<16)||e&&e.windowBits||(i.windowBits+=32),i.windowBits>15&&i.windowBits<48&&(15&i.windowBits)==0&&(i.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Yt,this.strm.avail_out=0;let t=B.inflateInit2(this.strm,i.windowBits);if(t!==L)throw new Error(at[t]);if(this.header=new Gt,B.inflateGetHeader(this.strm,this.header),i.dictionary&&(typeof i.dictionary=="string"?i.dictionary=jt(i.dictionary):pt.call(i.dictionary)==="[object ArrayBuffer]"&&(i.dictionary=new Uint8Array(i.dictionary)),i.raw&&(t=B.inflateSetDictionary(this.strm,i.dictionary),t!==L)))throw new Error(at[t])}function st(e,i){const t=new M(i);if(t.push(e),t.err)throw t.msg||at[t.err];return t.result}M.prototype.push=function(e,i){const t=this.strm,o=this.options.chunkSize,s=this.options.dictionary;let r,h,l;if(this.ended)return!1;for(h=i===~~i?i:i===!0?Wt:Xt,pt.call(e)==="[object ArrayBuffer]"?t.input=new Uint8Array(e):t.input=e,t.next_in=0,t.avail_in=t.input.length;;){for(t.avail_out===0&&(t.output=new Uint8Array(o),t.next_out=0,t.avail_out=o),r=B.inflate(t,h),r===ot&&s&&(r=B.inflateSetDictionary(t,s),r===L?r=B.inflate(t,h):r===vt&&(r=ot));t.avail_in>0&&r===rt&&t.state.wrap>0&&e[t.next_in]!==0;)B.inflateReset(t),r=B.inflate(t,h);switch(r){case qt:case vt:case ot:case Jt:return this.onEnd(r),this.ended=!0,!1}if(l=t.avail_out,t.next_out&&(t.avail_out===0||r===rt))if(this.options.to==="string"){let p=Pt(t.output,t.next_out),n=t.next_out-p,a=Kt(t.output,p);t.next_out=n,t.avail_out=o-n,n&&t.output.set(t.output.subarray(p,p+n),0),this.onData(a)}else this.onData(t.output.length===t.next_out?t.output:t.output.subarray(0,t.next_out));if(r!==L||l!==0){if(r===rt)return r=B.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,!0;if(t.avail_in===0)break}}return!0},M.prototype.onData=function(e){this.chunks.push(e)},M.prototype.onEnd=function(e){e===L&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Ht(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var xt=M,yt=st,Et=function(e,i){return(i=i||{}).raw=!0,st(e,i)},Rt=st,At=V,Qt={Inflate:xt,inflate:yt,inflateRaw:Et,ungzip:Rt,constants:At};O.Inflate=xt,O.constants=At,O.default=Qt,O.inflate=yt,O.inflateRaw=Et,O.ungzip=Rt,Object.defineProperty(O,"__esModule",{value:!0})}); diff --git a/public/Cesium/ThirdParty/Workers/z-worker-pako.js b/public/Cesium/ThirdParty/Workers/z-worker-pako.js new file mode 100644 index 000000000..86ab5a8c7 --- /dev/null +++ b/public/Cesium/ThirdParty/Workers/z-worker-pako.js @@ -0,0 +1 @@ +(function(){"use strict";const{Array:te,Object:m,Number:ne,Math:I,Error:S,Uint8Array:w,Uint16Array:et,Uint32Array:se,Int32Array:tt,Map:re,DataView:W,Promise:M,TextEncoder:ae,crypto:B,postMessage:K,TransformStream:v,ReadableStream:Ke,WritableStream:Te,CompressionStream:nt,DecompressionStream:st}=self,j=void 0,N="undefined",O="function";class oe{constructor(e){return class extends v{constructor(n,s){const r=new e(s);super({transform(a,o){o.enqueue(r.append(a))},flush(a){const o=r.flush();o&&a.enqueue(o)}})}}}}const ie=[];for(let t=0;256>t;t++){let e=t;for(let n=0;8>n;n++)1&e?e=e>>>1^3988292384:e>>>=1;ie[t]=e}class G{constructor(e){this.crc=e||-1}append(e){let n=0|this.crc;for(let s=0,r=0|e.length;r>s;s++)n=n>>>8^ie[255&(n^e[s])];this.crc=n}get(){return~this.crc}}class ce extends v{constructor(){let e;const n=new G;super({transform(s,r){n.append(s),r.enqueue(s)},flush(){const s=new w(4);new W(s.buffer).setUint32(0,n.get()),e.value=s}}),e=this}}const _={concat(t,e){if(t.length===0||e.length===0)return t.concat(e);const n=t[t.length-1],s=_.getPartial(n);return s===32?t.concat(e):_._shiftRight(e,s,0|n,t.slice(0,t.length-1))},bitLength(t){const e=t.length;if(e===0)return 0;const n=t[e-1];return 32*(e-1)+_.getPartial(n)},clamp(t,e){if(32*t.length<e)return t;const n=(t=t.slice(0,I.ceil(e/32))).length;return e&=31,n>0&&e&&(t[n-1]=_.partial(e,t[n-1]&2147483648>>e-1,1)),t},partial:(t,e,n)=>t===32?e:(n?0|e:e<<32-t)+1099511627776*t,getPartial:t=>I.round(t/1099511627776)||32,_shiftRight(t,e,n,s){for(s===void 0&&(s=[]);e>=32;e-=32)s.push(n),n=0;if(e===0)return s.concat(t);for(let o=0;o<t.length;o++)s.push(n|t[o]>>>e),n=t[o]<<32-e;const r=t.length?t[t.length-1]:0,a=_.getPartial(r);return s.push(_.partial(e+a&31,e+a>32?n:s.pop(),1)),s}},L={bytes:{fromBits(t){const e=_.bitLength(t)/8,n=new w(e);let s;for(let r=0;e>r;r++)3&r||(s=t[r/4]),n[r]=s>>>24,s<<=8;return n},toBits(t){const e=[];let n,s=0;for(n=0;n<t.length;n++)s=s<<8|t[n],3&~n||(e.push(s),s=0);return 3&n&&e.push(_.partial(8*(3&n),s)),e}}},Ve=class{constructor(t){const e=this;e.blockSize=512,e._init=[1732584193,4023233417,2562383102,271733878,3285377520],e._key=[1518500249,1859775393,2400959708,3395469782],t?(e._h=t._h.slice(0),e._buffer=t._buffer.slice(0),e._length=t._length):e.reset()}reset(){const t=this;return t._h=t._init.slice(0),t._buffer=[],t._length=0,t}update(t){const e=this;typeof t=="string"&&(t=L.utf8String.toBits(t));const n=e._buffer=_.concat(e._buffer,t),s=e._length,r=e._length=s+_.bitLength(t);if(r>9007199254740991)throw new S("Cannot hash more than 2^53 - 1 bits");const a=new se(n);let o=0;for(let l=e.blockSize+s-(e.blockSize+s&e.blockSize-1);r>=l;l+=e.blockSize)e._block(a.subarray(16*o,16*(o+1))),o+=1;return n.splice(0,16*o),e}finalize(){const t=this;let e=t._buffer;const n=t._h;e=_.concat(e,[_.partial(1,1)]);for(let s=e.length+2;15&s;s++)e.push(0);for(e.push(I.floor(t._length/4294967296)),e.push(0|t._length);e.length;)t._block(e.splice(0,16));return t.reset(),n}_f(t,e,n,s){return t>19?t>39?t>59?t>79?void 0:e^n^s:e&n|e&s|n&s:e^n^s:e&n|~e&s}_S(t,e){return e<<t|e>>>32-t}_block(t){const e=this,n=e._h,s=te(80);for(let c=0;16>c;c++)s[c]=t[c];let r=n[0],a=n[1],o=n[2],l=n[3],h=n[4];for(let c=0;79>=c;c++){16>c||(s[c]=e._S(1,s[c-3]^s[c-8]^s[c-14]^s[c-16]));const i=e._S(5,r)+e._f(c,a,o,l)+h+s[c]+e._key[I.floor(c/20)]|0;h=l,l=o,o=e._S(30,a),a=r,r=i}n[0]=n[0]+r|0,n[1]=n[1]+a|0,n[2]=n[2]+o|0,n[3]=n[3]+l|0,n[4]=n[4]+h|0}},xe={getRandomValues(t){const e=new se(t.buffer),n=s=>{let r=987654321;const a=4294967295;return()=>(r=36969*(65535&r)+(r>>16)&a,(((r<<16)+(s=18e3*(65535&s)+(s>>16)&a)&a)/4294967296+.5)*(I.random()>.5?1:-1))};for(let s,r=0;r<t.length;r+=4){const a=n(4294967296*(s||I.random()));s=987654071*a(),e[r/4]=4294967296*a()|0}return t}},H={importKey:t=>new H.hmacSha1(L.bytes.toBits(t)),pbkdf2(t,e,n,s){if(n=n||1e4,0>s||0>n)throw new S("invalid params to pbkdf2");const r=1+(s>>5)<<2;let a,o,l,h,c;const i=new ArrayBuffer(r),u=new W(i);let p=0;const f=_;for(e=L.bytes.toBits(e),c=1;(r||1)>p;c++){for(a=o=t.encrypt(f.concat(e,[c])),l=1;n>l;l++)for(o=t.encrypt(o),h=0;h<o.length;h++)a[h]^=o[h];for(l=0;(r||1)>p&&l<a.length;l++)u.setInt32(p,a[l]),p+=4}return i.slice(0,s/8)},hmacSha1:class{constructor(t){const e=this,n=e._hash=Ve,s=[[],[]];e._baseHash=[new n,new n];const r=e._baseHash[0].blockSize/32;t.length>r&&(t=new n().update(t).finalize());for(let a=0;r>a;a++)s[0][a]=909522486^t[a],s[1][a]=1549556828^t[a];e._baseHash[0].update(s[0]),e._baseHash[1].update(s[1]),e._resultHash=new n(e._baseHash[0])}reset(){const t=this;t._resultHash=new t._hash(t._baseHash[0]),t._updated=!1}update(t){this._updated=!0,this._resultHash.update(t)}digest(){const t=this,e=t._resultHash.finalize(),n=new t._hash(t._baseHash[1]).update(e).finalize();return t.reset(),n}encrypt(t){if(this._updated)throw new S("encrypt on already updated hmac called!");return this.update(t),this.digest(t)}}},Ee=typeof B!=N&&typeof B.getRandomValues==O,le="Invalid password",ue="Invalid signature",he="zipjs-abort-check-password";function pe(t){return Ee?B.getRandomValues(t):xe.getRandomValues(t)}const P=16,fe={name:"PBKDF2"},Ue=m.assign({hash:{name:"HMAC"}},fe),X=m.assign({iterations:1e3,hash:{name:"SHA-1"}},fe),We=["deriveBits"],T=[8,12,16],V=[16,24,32],A=10,Me=[0,0,0,0],F=typeof B!=N,x=F&&B.subtle,de=F&&typeof x!=N,z=L.bytes,Ne=class{constructor(t){const e=this;e._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],e._tables[0][0][0]||e._precompute();const n=e._tables[0][4],s=e._tables[1],r=t.length;let a,o,l,h=1;if(r!==4&&r!==6&&r!==8)throw new S("invalid aes key size");for(e._key=[o=t.slice(0),l=[]],a=r;4*r+28>a;a++){let c=o[a-1];(a%r===0||r===8&&a%r===4)&&(c=n[c>>>24]<<24^n[c>>16&255]<<16^n[c>>8&255]<<8^n[255&c],a%r===0&&(c=c<<8^c>>>24^h<<24,h=h<<1^283*(h>>7))),o[a]=o[a-r]^c}for(let c=0;a;c++,a--){const i=o[3&c?a:a-4];l[c]=4>=a||4>c?i:s[0][n[i>>>24]]^s[1][n[i>>16&255]]^s[2][n[i>>8&255]]^s[3][n[255&i]]}}encrypt(t){return this._crypt(t,0)}decrypt(t){return this._crypt(t,1)}_precompute(){const t=this._tables[0],e=this._tables[1],n=t[4],s=e[4],r=[],a=[];let o,l,h,c;for(let i=0;256>i;i++)a[(r[i]=i<<1^283*(i>>7))^i]=i;for(let i=o=0;!n[i];i^=l||1,o=a[o]||1){let u=o^o<<1^o<<2^o<<3^o<<4;u=u>>8^255&u^99,n[i]=u,s[u]=i,c=r[h=r[l=r[i]]];let p=16843009*c^65537*h^257*l^16843008*i,f=257*r[u]^16843008*u;for(let d=0;4>d;d++)t[d][i]=f=f<<24^f>>>8,e[d][u]=p=p<<24^p>>>8}for(let i=0;5>i;i++)t[i]=t[i].slice(0),e[i]=e[i].slice(0)}_crypt(t,e){if(t.length!==4)throw new S("invalid aes block size");const n=this._key[e],s=n.length/4-2,r=[0,0,0,0],a=this._tables[e],o=a[0],l=a[1],h=a[2],c=a[3],i=a[4];let u,p,f,d=t[0]^n[0],g=t[e?3:1]^n[1],y=t[2]^n[2],b=t[e?1:3]^n[3],C=4;for(let D=0;s>D;D++)u=o[d>>>24]^l[g>>16&255]^h[y>>8&255]^c[255&b]^n[C],p=o[g>>>24]^l[y>>16&255]^h[b>>8&255]^c[255&d]^n[C+1],f=o[y>>>24]^l[b>>16&255]^h[d>>8&255]^c[255&g]^n[C+2],b=o[b>>>24]^l[d>>16&255]^h[g>>8&255]^c[255&y]^n[C+3],C+=4,d=u,g=p,y=f;for(let D=0;4>D;D++)r[e?3&-D:D]=i[d>>>24]<<24^i[g>>16&255]<<16^i[y>>8&255]<<8^i[255&b]^n[C++],u=d,d=g,g=y,y=b,b=u;return r}},Oe=class{constructor(t,e){this._prf=t,this._initIv=e,this._iv=e}reset(){this._iv=this._initIv}update(t){return this.calculate(this._prf,t,this._iv)}incWord(t){if(255&~(t>>24))t+=1<<24;else{let e=t>>16&255,n=t>>8&255,s=255&t;e===255?(e=0,n===255?(n=0,s===255?s=0:++s):++n):++e,t=0,t+=e<<16,t+=n<<8,t+=s}return t}incCounter(t){(t[0]=this.incWord(t[0]))===0&&(t[1]=this.incWord(t[1]))}calculate(t,e,n){let s;if(!(s=e.length))return[];const r=_.bitLength(e);for(let a=0;s>a;a+=4){this.incCounter(n);const o=t.encrypt(n);e[a]^=o[0],e[a+1]^=o[1],e[a+2]^=o[2],e[a+3]^=o[3]}return _.clamp(e,r)}},Le=H.hmacSha1;let ge=F&&de&&typeof x.importKey==O,we=F&&de&&typeof x.deriveBits==O;class Fe extends v{constructor({password:e,rawPassword:n,signed:s,encryptionStrength:r,checkPasswordOnly:a}){super({start(){m.assign(this,{ready:new M(o=>this.resolveReady=o),password:_e(e,n),signed:s,strength:r-1,pending:new w})},async transform(o,l){const h=this,{password:c,strength:i,resolveReady:u,ready:p}=h;c?(await(async(d,g,y,b)=>{const C=await me(d,g,y,k(b,0,T[g])),D=k(b,T[g]);if(C[0]!=D[0]||C[1]!=D[1])throw new S(le)})(h,i,c,k(o,0,T[i]+2)),o=k(o,T[i]+2),a?l.error(new S(he)):u()):await p;const f=new w(o.length-A-(o.length-A)%P);l.enqueue(ye(h,o,f,0,A,!0))},async flush(o){const{signed:l,ctr:h,hmac:c,pending:i,ready:u}=this;if(c&&h){await u;const p=k(i,0,i.length-A),f=k(i,i.length-A);let d=new w;if(p.length){const g=U(z,p);c.update(g);const y=h.update(g);d=E(z,y)}if(l){const g=k(E(z,c.digest()),0,A);for(let y=0;A>y;y++)if(g[y]!=f[y])throw new S(ue)}o.enqueue(d)}}})}}class je extends v{constructor({password:e,rawPassword:n,encryptionStrength:s}){let r;super({start(){m.assign(this,{ready:new M(a=>this.resolveReady=a),password:_e(e,n),strength:s-1,pending:new w})},async transform(a,o){const l=this,{password:h,strength:c,resolveReady:i,ready:u}=l;let p=new w;h?(p=await(async(d,g,y)=>{const b=pe(new w(T[g]));return J(b,await me(d,g,y,b))})(l,c,h),i()):await u;const f=new w(p.length+a.length-a.length%P);f.set(p,0),o.enqueue(ye(l,a,f,p.length,0))},async flush(a){const{ctr:o,hmac:l,pending:h,ready:c}=this;if(l&&o){await c;let i=new w;if(h.length){const u=o.update(U(z,h));l.update(u),i=E(z,u)}r.signature=E(z,l.digest()).slice(0,A),a.enqueue(J(i,r.signature))}}}),r=this}}function ye(t,e,n,s,r,a){const{ctr:o,hmac:l,pending:h}=t,c=e.length-r;let i;for(h.length&&(e=J(h,e),n=((u,p)=>{if(p&&p>u.length){const f=u;(u=new w(p)).set(f,0)}return u})(n,c-c%P)),i=0;c-P>=i;i+=P){const u=U(z,k(e,i,i+P));a&&l.update(u);const p=o.update(u);a||l.update(p),n.set(E(z,p),i+s)}return t.pending=k(e,i),n}async function me(t,e,n,s){t.password=null;const r=await(async(i,u,p,f,d)=>{if(!ge)return H.importKey(u);try{return await x.importKey("raw",u,p,!1,d)}catch{return ge=!1,H.importKey(u)}})(0,n,Ue,0,We),a=await(async(i,u,p)=>{if(!we)return H.pbkdf2(u,i.salt,X.iterations,p);try{return await x.deriveBits(i,u,p)}catch{return we=!1,H.pbkdf2(u,i.salt,X.iterations,p)}})(m.assign({salt:s},X),r,8*(2*V[e]+2)),o=new w(a),l=U(z,k(o,0,V[e])),h=U(z,k(o,V[e],2*V[e])),c=k(o,2*V[e]);return m.assign(t,{keys:{key:l,authentication:h,passwordVerification:c},ctr:new Oe(new Ne(l),te.from(Me)),hmac:new Le(h)}),c}function _e(t,e){return e===j?(n=>{if(typeof ae==N){const s=new w((n=unescape(encodeURIComponent(n))).length);for(let r=0;r<s.length;r++)s[r]=n.charCodeAt(r);return s}return new ae().encode(n)})(t):e}function J(t,e){let n=t;return t.length+e.length&&(n=new w(t.length+e.length),n.set(t,0),n.set(e,t.length)),n}function k(t,e,n){return t.subarray(e,n)}function E(t,e){return t.fromBits(e)}function U(t,e){return t.toBits(e)}class Ge extends v{constructor({password:e,passwordVerification:n,checkPasswordOnly:s}){super({start(){m.assign(this,{password:e,passwordVerification:n}),ve(this,e)},transform(r,a){const o=this;if(o.password){const l=be(o,r.subarray(0,12));if(o.password=null,l[11]!=o.passwordVerification)throw new S(le);r=r.subarray(12)}s?a.error(new S(he)):a.enqueue(be(o,r))}})}}class Xe extends v{constructor({password:e,passwordVerification:n}){super({start(){m.assign(this,{password:e,passwordVerification:n}),ve(this,e)},transform(s,r){const a=this;let o,l;if(a.password){a.password=null;const h=pe(new w(12));h[11]=a.passwordVerification,o=new w(s.length+h.length),o.set(Se(a,h),0),l=12}else o=new w(s.length),l=0;o.set(Se(a,s),l),r.enqueue(o)}})}}function be(t,e){const n=new w(e.length);for(let s=0;s<e.length;s++)n[s]=ke(t)^e[s],Q(t,n[s]);return n}function Se(t,e){const n=new w(e.length);for(let s=0;s<e.length;s++)n[s]=ke(t)^e[s],Q(t,e[s]);return n}function ve(t,e){const n=[305419896,591751049,878082192];m.assign(t,{keys:n,crcKey0:new G(n[0]),crcKey2:new G(n[2])});for(let s=0;s<e.length;s++)Q(t,e.charCodeAt(s))}function Q(t,e){let[n,s,r]=t.keys;t.crcKey0.append([e]),n=~t.crcKey0.get(),s=De(I.imul(De(s+ze(n)),134775813)+1),t.crcKey2.append([s>>>24]),r=~t.crcKey2.get(),t.keys=[n,s,r]}function ke(t){const e=2|t.keys[2];return ze(I.imul(e,1^e)>>>8)}function ze(t){return 255&t}function De(t){return 4294967295&t}class Je extends v{constructor(e,{chunkSize:n,CompressionStream:s,CompressionStreamNative:r}){super({});const{compressed:a,encrypted:o,useCompressionStream:l,zipCrypto:h,signed:c,level:i}=e,u=this;let p,f,d=super.readable;o&&!h||!c||(p=new ce,d=q(d,p)),a&&(d=Ie(d,l,{level:i,chunkSize:n},r,s)),o&&(h?d=q(d,new Xe(e)):(f=new je(e),d=q(d,f))),Ce(u,d,()=>{let g;o&&!h&&(g=f.signature),o&&!h||!c||(g=new W(p.value.buffer).getUint32(0)),u.signature=g})}}class Qe extends v{constructor(e,{chunkSize:n,DecompressionStream:s,DecompressionStreamNative:r}){super({});const{zipCrypto:a,encrypted:o,signed:l,signature:h,compressed:c,useCompressionStream:i}=e;let u,p,f=super.readable;o&&(a?f=q(f,new Ge(e)):(p=new Fe(e),f=q(f,p))),c&&(f=Ie(f,i,{chunkSize:n},r,s)),o&&!a||!l||(u=new ce,f=q(f,u)),Ce(this,f,()=>{if((!o||a)&&l){const d=new W(u.value.buffer);if(h!=d.getUint32(0,!1))throw new S(ue)}})}}function Ce(t,e,n){e=q(e,new v({flush:n})),m.defineProperty(t,"readable",{get:()=>e})}function Ie(t,e,n,s,r){return q(t,new(e&&s?s:r)("deflate-raw",n))}function q(t,e){return t.pipeThrough(e)}const Ae="data",qe="close";class Ye extends v{constructor(e,n){super({});const s=this,{codecType:r}=e;let a;r.startsWith("deflate")?a=Je:r.startsWith("inflate")&&(a=Qe),s.outputSize=0;let o=0;const l=new a(e,n),h=super.readable,c=new v({transform(u,p){u&&u.length&&(o+=u.length,p.enqueue(u))},flush(){m.assign(s,{inputSize:o})}}),i=new v({transform(u,p){if(u&&u.length&&(p.enqueue(u),s.outputSize+=u.length,e.outputSize&&s.outputSize>e.outputSize))throw new S("Invalid uncompressed size")},flush(){const{signature:u}=l;m.assign(s,{signature:u,inputSize:o})}});m.defineProperty(s,"readable",{get:()=>h.pipeThrough(c).pipeThrough(l).pipeThrough(i)})}}class Ze extends v{constructor(e){let n;super({transform:function s(r,a){if(n){const o=new w(n.length+r.length);o.set(n),o.set(r,n.length),r=o,n=null}r.length>e?(a.enqueue(r.slice(0,e)),s(r.slice(e),a)):n=r},flush(s){n&&n.length&&s.enqueue(n)}})}}const Y=new re,Z=new re;let $,R=0,Re=!0;async function $e(t){try{const{options:e,scripts:n,config:s}=t;if(n&&n.length)try{Re?importScripts.apply(j,n):await He(n)}catch{Re=!1,await He(n)}self.initCodec&&self.initCodec(),s.CompressionStreamNative=self.CompressionStream,s.DecompressionStreamNative=self.DecompressionStream,self.Deflate&&(s.CompressionStream=new oe(self.Deflate)),self.Inflate&&(s.DecompressionStream=new oe(self.Inflate));const r={highWaterMark:1},a=t.readable||new Ke({async pull(p){const f=new M(y=>Y.set(R,y));ee({type:"pull",messageId:R}),R=(R+1)%ne.MAX_SAFE_INTEGER;const{value:d,done:g}=await f;p.enqueue(d),g&&p.close()}},r),o=t.writable||new Te({async write(p){let f;const d=new M(g=>f=g);Z.set(R,f),ee({type:Ae,value:p,messageId:R}),R=(R+1)%ne.MAX_SAFE_INTEGER,await d}},r),l=new Ye(e,s);$=new AbortController;const{signal:h}=$;await a.pipeThrough(l).pipeThrough(new Ze(s.chunkSize)).pipeTo(o,{signal:h,preventClose:!0,preventAbort:!0}),await o.getWriter().close();const{signature:c,inputSize:i,outputSize:u}=l;ee({type:qe,result:{signature:c,inputSize:i,outputSize:u}})}catch(e){e.outputSize=0,Pe(e)}}async function He(t){for(const e of t)await import(e)}function ee(t){let{value:e}=t;if(e)if(e.length)try{e=new w(e),t.value=e.buffer,K(t,[t.value])}catch{K(t)}else K(t);else K(t)}function Pe(t=new S("Unknown error")){const{message:e,stack:n,code:s,name:r,outputSize:a}=t;K({error:{message:e,stack:n,code:s,name:r,outputSize:a}})}function Be(t,e,n){return class{constructor(r){const a=this;var o,l;o=r,l="level",(typeof m.hasOwn===O?m.hasOwn(o,l):o.hasOwnProperty(l))&&r.level===j&&delete r.level,a.codec=new t(m.assign({},e,r)),n(a.codec,h=>{if(a.pendingData){const c=a.pendingData;a.pendingData=new w(c.length+h.length);const{pendingData:i}=a;i.set(c,0),i.set(h,c.length)}else a.pendingData=new w(h)})}append(r){return this.codec.push(r),s(this)}flush(){return this.codec.push(new w,!0),s(this)}};function s(r){if(r.pendingData){const a=r.pendingData;return r.pendingData=null,a}return new w}}addEventListener("message",({data:t})=>{const{type:e,messageId:n,value:s,done:r}=t;try{if(e=="start"&&$e(t),e==Ae){const a=Y.get(n);Y.delete(n),a({value:new w(s),done:r})}if(e=="ack"){const a=Z.get(n);Z.delete(n),a()}e==qe&&$.abort()}catch(a){Pe(a)}}),self.initCodec=()=>{const{Deflate:t,Inflate:e}=((n,s={},r)=>({Deflate:Be(n.Deflate,s.deflate,r),Inflate:Be(n.Inflate,s.inflate,r)}))(pako,{deflate:{raw:!0},inflate:{raw:!0}},(n,s)=>n.onData=s);self.Deflate=t,self.Inflate=e}})(); diff --git a/public/Cesium/ThirdParty/basis_transcoder.wasm b/public/Cesium/ThirdParty/basis_transcoder.wasm new file mode 100644 index 0000000000000000000000000000000000000000..71328587dfdfaa13f30072ca2bd8d658938ab415 GIT binary patch literal 500839 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%0AE8r7Pddr!xOz@H2nYEofc!|_CNZ^S$^2Sx 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ⅅ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%0A|_Zcaav1H>G(>H(G9d3Np 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%0Dn%99V!O$F<Zp5@}68;qG|0yo@O|_FS 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/ThirdParty/draco_decoder.wasm b/public/Cesium/ThirdParty/draco_decoder.wasm new file mode 100644 index 0000000000000000000000000000000000000000..4138f55900cb8b31a7112def7269112a66a846e7 GIT binary patch literal 285948 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 X14Mx@pyM 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%0DfH>;*FvR@= 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/ThirdParty/google-earth-dbroot-parser.js b/public/Cesium/ThirdParty/google-earth-dbroot-parser.js new file mode 100644 index 000000000..648bf66db --- /dev/null +++ b/public/Cesium/ThirdParty/google-earth-dbroot-parser.js @@ -0,0 +1 @@ +(()=>{window.cesiumGoogleEarthDbRootParser=function(d){"use strict";var f=d.Reader,u=d.util,n=d.roots.default||(d.roots.default={});return n.keyhole=function(){var b={};return b.dbroot=function(){var c={};return c.StringEntryProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.stringId=0,i.prototype.stringValue="",i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.StringEntryProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.stringId=r.fixed32();break}case 2:{o.stringValue=r.string();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("stringId"))throw u.ProtocolError("missing required 'stringId'",{instance:o});if(!o.hasOwnProperty("stringValue"))throw u.ProtocolError("missing required 'stringValue'",{instance:o});return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":u.isInteger(r.stringId)?u.isString(r.stringValue)?null:"stringValue: string expected":"stringId: integer expected"},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.StringEntryProto)return r;var t=new n.keyhole.dbroot.StringEntryProto;return r.stringId!=null&&(t.stringId=r.stringId>>>0),r.stringValue!=null&&(t.stringValue=String(r.stringValue)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.stringId=0,e.stringValue=""),r.stringId!=null&&r.hasOwnProperty("stringId")&&(e.stringId=r.stringId),r.stringValue!=null&&r.hasOwnProperty("stringValue")&&(e.stringValue=r.stringValue),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.StringEntryProto"},i}(),c.StringIdOrValueProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.stringId=0,i.prototype.value="",i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.StringIdOrValueProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.stringId=r.fixed32();break}case 2:{o.value=r.string();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":r.stringId!=null&&r.hasOwnProperty("stringId")&&!u.isInteger(r.stringId)?"stringId: integer expected":r.value!=null&&r.hasOwnProperty("value")&&!u.isString(r.value)?"value: string expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.StringIdOrValueProto)return r;var t=new n.keyhole.dbroot.StringIdOrValueProto;return r.stringId!=null&&(t.stringId=r.stringId>>>0),r.value!=null&&(t.value=String(r.value)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.stringId=0,e.value=""),r.stringId!=null&&r.hasOwnProperty("stringId")&&(e.stringId=r.stringId),r.value!=null&&r.hasOwnProperty("value")&&(e.value=r.value),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.StringIdOrValueProto"},i}(),c.PlanetModelProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.radius=6378.137,i.prototype.flattening=.00335281066474748,i.prototype.elevationBias=0,i.prototype.negativeAltitudeExponentBias=0,i.prototype.compressedNegativeAltitudeThreshold=0,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.PlanetModelProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.radius=r.double();break}case 2:{o.flattening=r.double();break}case 4:{o.elevationBias=r.double();break}case 5:{o.negativeAltitudeExponentBias=r.int32();break}case 6:{o.compressedNegativeAltitudeThreshold=r.double();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":r.radius!=null&&r.hasOwnProperty("radius")&&typeof r.radius!="number"?"radius: number expected":r.flattening!=null&&r.hasOwnProperty("flattening")&&typeof r.flattening!="number"?"flattening: number expected":r.elevationBias!=null&&r.hasOwnProperty("elevationBias")&&typeof r.elevationBias!="number"?"elevationBias: number expected":r.negativeAltitudeExponentBias!=null&&r.hasOwnProperty("negativeAltitudeExponentBias")&&!u.isInteger(r.negativeAltitudeExponentBias)?"negativeAltitudeExponentBias: integer expected":r.compressedNegativeAltitudeThreshold!=null&&r.hasOwnProperty("compressedNegativeAltitudeThreshold")&&typeof r.compressedNegativeAltitudeThreshold!="number"?"compressedNegativeAltitudeThreshold: number expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.PlanetModelProto)return r;var t=new n.keyhole.dbroot.PlanetModelProto;return r.radius!=null&&(t.radius=Number(r.radius)),r.flattening!=null&&(t.flattening=Number(r.flattening)),r.elevationBias!=null&&(t.elevationBias=Number(r.elevationBias)),r.negativeAltitudeExponentBias!=null&&(t.negativeAltitudeExponentBias=r.negativeAltitudeExponentBias|0),r.compressedNegativeAltitudeThreshold!=null&&(t.compressedNegativeAltitudeThreshold=Number(r.compressedNegativeAltitudeThreshold)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.radius=6378.137,e.flattening=.00335281066474748,e.elevationBias=0,e.negativeAltitudeExponentBias=0,e.compressedNegativeAltitudeThreshold=0),r.radius!=null&&r.hasOwnProperty("radius")&&(e.radius=t.json&&!isFinite(r.radius)?String(r.radius):r.radius),r.flattening!=null&&r.hasOwnProperty("flattening")&&(e.flattening=t.json&&!isFinite(r.flattening)?String(r.flattening):r.flattening),r.elevationBias!=null&&r.hasOwnProperty("elevationBias")&&(e.elevationBias=t.json&&!isFinite(r.elevationBias)?String(r.elevationBias):r.elevationBias),r.negativeAltitudeExponentBias!=null&&r.hasOwnProperty("negativeAltitudeExponentBias")&&(e.negativeAltitudeExponentBias=r.negativeAltitudeExponentBias),r.compressedNegativeAltitudeThreshold!=null&&r.hasOwnProperty("compressedNegativeAltitudeThreshold")&&(e.compressedNegativeAltitudeThreshold=t.json&&!isFinite(r.compressedNegativeAltitudeThreshold)?String(r.compressedNegativeAltitudeThreshold):r.compressedNegativeAltitudeThreshold),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.PlanetModelProto"},i}(),c.ProviderInfoProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.providerId=0,i.prototype.copyrightString=null,i.prototype.verticalPixelOffset=-1,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.ProviderInfoProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.providerId=r.int32();break}case 2:{o.copyrightString=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 3:{o.verticalPixelOffset=r.int32();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("providerId"))throw u.ProtocolError("missing required 'providerId'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(!u.isInteger(r.providerId))return"providerId: integer expected";if(r.copyrightString!=null&&r.hasOwnProperty("copyrightString")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.copyrightString);if(t)return"copyrightString."+t}return r.verticalPixelOffset!=null&&r.hasOwnProperty("verticalPixelOffset")&&!u.isInteger(r.verticalPixelOffset)?"verticalPixelOffset: integer expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.ProviderInfoProto)return r;var t=new n.keyhole.dbroot.ProviderInfoProto;if(r.providerId!=null&&(t.providerId=r.providerId|0),r.copyrightString!=null){if(typeof r.copyrightString!="object")throw TypeError(".keyhole.dbroot.ProviderInfoProto.copyrightString: object expected");t.copyrightString=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.copyrightString)}return r.verticalPixelOffset!=null&&(t.verticalPixelOffset=r.verticalPixelOffset|0),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.providerId=0,e.copyrightString=null,e.verticalPixelOffset=-1),r.providerId!=null&&r.hasOwnProperty("providerId")&&(e.providerId=r.providerId),r.copyrightString!=null&&r.hasOwnProperty("copyrightString")&&(e.copyrightString=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.copyrightString,t)),r.verticalPixelOffset!=null&&r.hasOwnProperty("verticalPixelOffset")&&(e.verticalPixelOffset=r.verticalPixelOffset),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.ProviderInfoProto"},i}(),c.PopUpProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.isBalloonStyle=!1,i.prototype.text=null,i.prototype.backgroundColorAbgr=4294967295,i.prototype.textColorAbgr=4278190080,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.PopUpProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.isBalloonStyle=r.bool();break}case 2:{o.text=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 3:{o.backgroundColorAbgr=r.fixed32();break}case 4:{o.textColorAbgr=r.fixed32();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(r.isBalloonStyle!=null&&r.hasOwnProperty("isBalloonStyle")&&typeof r.isBalloonStyle!="boolean")return"isBalloonStyle: boolean expected";if(r.text!=null&&r.hasOwnProperty("text")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.text);if(t)return"text."+t}return r.backgroundColorAbgr!=null&&r.hasOwnProperty("backgroundColorAbgr")&&!u.isInteger(r.backgroundColorAbgr)?"backgroundColorAbgr: integer expected":r.textColorAbgr!=null&&r.hasOwnProperty("textColorAbgr")&&!u.isInteger(r.textColorAbgr)?"textColorAbgr: integer expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.PopUpProto)return r;var t=new n.keyhole.dbroot.PopUpProto;if(r.isBalloonStyle!=null&&(t.isBalloonStyle=!!r.isBalloonStyle),r.text!=null){if(typeof r.text!="object")throw TypeError(".keyhole.dbroot.PopUpProto.text: object expected");t.text=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.text)}return r.backgroundColorAbgr!=null&&(t.backgroundColorAbgr=r.backgroundColorAbgr>>>0),r.textColorAbgr!=null&&(t.textColorAbgr=r.textColorAbgr>>>0),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.isBalloonStyle=!1,e.text=null,e.backgroundColorAbgr=4294967295,e.textColorAbgr=4278190080),r.isBalloonStyle!=null&&r.hasOwnProperty("isBalloonStyle")&&(e.isBalloonStyle=r.isBalloonStyle),r.text!=null&&r.hasOwnProperty("text")&&(e.text=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.text,t)),r.backgroundColorAbgr!=null&&r.hasOwnProperty("backgroundColorAbgr")&&(e.backgroundColorAbgr=r.backgroundColorAbgr),r.textColorAbgr!=null&&r.hasOwnProperty("textColorAbgr")&&(e.textColorAbgr=r.textColorAbgr),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.PopUpProto"},i}(),c.StyleAttributeProto=function(){function i(l){if(this.drawFlag=[],l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.styleId="",i.prototype.providerId=0,i.prototype.polyColorAbgr=4294967295,i.prototype.lineColorAbgr=4294967295,i.prototype.lineWidth=1,i.prototype.labelColorAbgr=4294967295,i.prototype.labelScale=1,i.prototype.placemarkIconColorAbgr=4294967295,i.prototype.placemarkIconScale=1,i.prototype.placemarkIconPath=null,i.prototype.placemarkIconX=0,i.prototype.placemarkIconY=0,i.prototype.placemarkIconWidth=32,i.prototype.placemarkIconHeight=32,i.prototype.popUp=null,i.prototype.drawFlag=u.emptyArray,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.StyleAttributeProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.styleId=r.string();break}case 3:{o.providerId=r.int32();break}case 4:{o.polyColorAbgr=r.fixed32();break}case 5:{o.lineColorAbgr=r.fixed32();break}case 6:{o.lineWidth=r.float();break}case 7:{o.labelColorAbgr=r.fixed32();break}case 8:{o.labelScale=r.float();break}case 9:{o.placemarkIconColorAbgr=r.fixed32();break}case 10:{o.placemarkIconScale=r.float();break}case 11:{o.placemarkIconPath=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 12:{o.placemarkIconX=r.int32();break}case 13:{o.placemarkIconY=r.int32();break}case 14:{o.placemarkIconWidth=r.int32();break}case 15:{o.placemarkIconHeight=r.int32();break}case 16:{o.popUp=n.keyhole.dbroot.PopUpProto.decode(r,r.uint32());break}case 17:{o.drawFlag&&o.drawFlag.length||(o.drawFlag=[]),o.drawFlag.push(n.keyhole.dbroot.DrawFlagProto.decode(r,r.uint32()));break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("styleId"))throw u.ProtocolError("missing required 'styleId'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(!u.isString(r.styleId))return"styleId: string expected";if(r.providerId!=null&&r.hasOwnProperty("providerId")&&!u.isInteger(r.providerId))return"providerId: integer expected";if(r.polyColorAbgr!=null&&r.hasOwnProperty("polyColorAbgr")&&!u.isInteger(r.polyColorAbgr))return"polyColorAbgr: integer expected";if(r.lineColorAbgr!=null&&r.hasOwnProperty("lineColorAbgr")&&!u.isInteger(r.lineColorAbgr))return"lineColorAbgr: integer expected";if(r.lineWidth!=null&&r.hasOwnProperty("lineWidth")&&typeof r.lineWidth!="number")return"lineWidth: number expected";if(r.labelColorAbgr!=null&&r.hasOwnProperty("labelColorAbgr")&&!u.isInteger(r.labelColorAbgr))return"labelColorAbgr: integer expected";if(r.labelScale!=null&&r.hasOwnProperty("labelScale")&&typeof r.labelScale!="number")return"labelScale: number expected";if(r.placemarkIconColorAbgr!=null&&r.hasOwnProperty("placemarkIconColorAbgr")&&!u.isInteger(r.placemarkIconColorAbgr))return"placemarkIconColorAbgr: integer expected";if(r.placemarkIconScale!=null&&r.hasOwnProperty("placemarkIconScale")&&typeof r.placemarkIconScale!="number")return"placemarkIconScale: number expected";if(r.placemarkIconPath!=null&&r.hasOwnProperty("placemarkIconPath")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.placemarkIconPath);if(t)return"placemarkIconPath."+t}if(r.placemarkIconX!=null&&r.hasOwnProperty("placemarkIconX")&&!u.isInteger(r.placemarkIconX))return"placemarkIconX: integer expected";if(r.placemarkIconY!=null&&r.hasOwnProperty("placemarkIconY")&&!u.isInteger(r.placemarkIconY))return"placemarkIconY: integer expected";if(r.placemarkIconWidth!=null&&r.hasOwnProperty("placemarkIconWidth")&&!u.isInteger(r.placemarkIconWidth))return"placemarkIconWidth: integer expected";if(r.placemarkIconHeight!=null&&r.hasOwnProperty("placemarkIconHeight")&&!u.isInteger(r.placemarkIconHeight))return"placemarkIconHeight: integer expected";if(r.popUp!=null&&r.hasOwnProperty("popUp")){var t=n.keyhole.dbroot.PopUpProto.verify(r.popUp);if(t)return"popUp."+t}if(r.drawFlag!=null&&r.hasOwnProperty("drawFlag")){if(!Array.isArray(r.drawFlag))return"drawFlag: array expected";for(var e=0;e<r.drawFlag.length;++e){var t=n.keyhole.dbroot.DrawFlagProto.verify(r.drawFlag[e]);if(t)return"drawFlag."+t}}return null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.StyleAttributeProto)return r;var t=new n.keyhole.dbroot.StyleAttributeProto;if(r.styleId!=null&&(t.styleId=String(r.styleId)),r.providerId!=null&&(t.providerId=r.providerId|0),r.polyColorAbgr!=null&&(t.polyColorAbgr=r.polyColorAbgr>>>0),r.lineColorAbgr!=null&&(t.lineColorAbgr=r.lineColorAbgr>>>0),r.lineWidth!=null&&(t.lineWidth=Number(r.lineWidth)),r.labelColorAbgr!=null&&(t.labelColorAbgr=r.labelColorAbgr>>>0),r.labelScale!=null&&(t.labelScale=Number(r.labelScale)),r.placemarkIconColorAbgr!=null&&(t.placemarkIconColorAbgr=r.placemarkIconColorAbgr>>>0),r.placemarkIconScale!=null&&(t.placemarkIconScale=Number(r.placemarkIconScale)),r.placemarkIconPath!=null){if(typeof r.placemarkIconPath!="object")throw TypeError(".keyhole.dbroot.StyleAttributeProto.placemarkIconPath: object expected");t.placemarkIconPath=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.placemarkIconPath)}if(r.placemarkIconX!=null&&(t.placemarkIconX=r.placemarkIconX|0),r.placemarkIconY!=null&&(t.placemarkIconY=r.placemarkIconY|0),r.placemarkIconWidth!=null&&(t.placemarkIconWidth=r.placemarkIconWidth|0),r.placemarkIconHeight!=null&&(t.placemarkIconHeight=r.placemarkIconHeight|0),r.popUp!=null){if(typeof r.popUp!="object")throw TypeError(".keyhole.dbroot.StyleAttributeProto.popUp: object expected");t.popUp=n.keyhole.dbroot.PopUpProto.fromObject(r.popUp)}if(r.drawFlag){if(!Array.isArray(r.drawFlag))throw TypeError(".keyhole.dbroot.StyleAttributeProto.drawFlag: array expected");t.drawFlag=[];for(var e=0;e<r.drawFlag.length;++e){if(typeof r.drawFlag[e]!="object")throw TypeError(".keyhole.dbroot.StyleAttributeProto.drawFlag: object expected");t.drawFlag[e]=n.keyhole.dbroot.DrawFlagProto.fromObject(r.drawFlag[e])}}return t},i.toObject=function(r,t){t||(t={});var e={};if((t.arrays||t.defaults)&&(e.drawFlag=[]),t.defaults&&(e.styleId="",e.providerId=0,e.polyColorAbgr=4294967295,e.lineColorAbgr=4294967295,e.lineWidth=1,e.labelColorAbgr=4294967295,e.labelScale=1,e.placemarkIconColorAbgr=4294967295,e.placemarkIconScale=1,e.placemarkIconPath=null,e.placemarkIconX=0,e.placemarkIconY=0,e.placemarkIconWidth=32,e.placemarkIconHeight=32,e.popUp=null),r.styleId!=null&&r.hasOwnProperty("styleId")&&(e.styleId=r.styleId),r.providerId!=null&&r.hasOwnProperty("providerId")&&(e.providerId=r.providerId),r.polyColorAbgr!=null&&r.hasOwnProperty("polyColorAbgr")&&(e.polyColorAbgr=r.polyColorAbgr),r.lineColorAbgr!=null&&r.hasOwnProperty("lineColorAbgr")&&(e.lineColorAbgr=r.lineColorAbgr),r.lineWidth!=null&&r.hasOwnProperty("lineWidth")&&(e.lineWidth=t.json&&!isFinite(r.lineWidth)?String(r.lineWidth):r.lineWidth),r.labelColorAbgr!=null&&r.hasOwnProperty("labelColorAbgr")&&(e.labelColorAbgr=r.labelColorAbgr),r.labelScale!=null&&r.hasOwnProperty("labelScale")&&(e.labelScale=t.json&&!isFinite(r.labelScale)?String(r.labelScale):r.labelScale),r.placemarkIconColorAbgr!=null&&r.hasOwnProperty("placemarkIconColorAbgr")&&(e.placemarkIconColorAbgr=r.placemarkIconColorAbgr),r.placemarkIconScale!=null&&r.hasOwnProperty("placemarkIconScale")&&(e.placemarkIconScale=t.json&&!isFinite(r.placemarkIconScale)?String(r.placemarkIconScale):r.placemarkIconScale),r.placemarkIconPath!=null&&r.hasOwnProperty("placemarkIconPath")&&(e.placemarkIconPath=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.placemarkIconPath,t)),r.placemarkIconX!=null&&r.hasOwnProperty("placemarkIconX")&&(e.placemarkIconX=r.placemarkIconX),r.placemarkIconY!=null&&r.hasOwnProperty("placemarkIconY")&&(e.placemarkIconY=r.placemarkIconY),r.placemarkIconWidth!=null&&r.hasOwnProperty("placemarkIconWidth")&&(e.placemarkIconWidth=r.placemarkIconWidth),r.placemarkIconHeight!=null&&r.hasOwnProperty("placemarkIconHeight")&&(e.placemarkIconHeight=r.placemarkIconHeight),r.popUp!=null&&r.hasOwnProperty("popUp")&&(e.popUp=n.keyhole.dbroot.PopUpProto.toObject(r.popUp,t)),r.drawFlag&&r.drawFlag.length){e.drawFlag=[];for(var o=0;o<r.drawFlag.length;++o)e.drawFlag[o]=n.keyhole.dbroot.DrawFlagProto.toObject(r.drawFlag[o],t)}return e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.StyleAttributeProto"},i}(),c.StyleMapProto=function(){function i(l){if(this.channelId=[],l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.styleMapId=0,i.prototype.channelId=u.emptyArray,i.prototype.normalStyleAttribute=0,i.prototype.highlightStyleAttribute=0,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.StyleMapProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.styleMapId=r.int32();break}case 2:{if(o.channelId&&o.channelId.length||(o.channelId=[]),(a&7)===2)for(var p=r.uint32()+r.pos;r.pos<p;)o.channelId.push(r.int32());else o.channelId.push(r.int32());break}case 3:{o.normalStyleAttribute=r.int32();break}case 4:{o.highlightStyleAttribute=r.int32();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("styleMapId"))throw u.ProtocolError("missing required 'styleMapId'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(!u.isInteger(r.styleMapId))return"styleMapId: integer expected";if(r.channelId!=null&&r.hasOwnProperty("channelId")){if(!Array.isArray(r.channelId))return"channelId: array expected";for(var t=0;t<r.channelId.length;++t)if(!u.isInteger(r.channelId[t]))return"channelId: integer[] expected"}return r.normalStyleAttribute!=null&&r.hasOwnProperty("normalStyleAttribute")&&!u.isInteger(r.normalStyleAttribute)?"normalStyleAttribute: integer expected":r.highlightStyleAttribute!=null&&r.hasOwnProperty("highlightStyleAttribute")&&!u.isInteger(r.highlightStyleAttribute)?"highlightStyleAttribute: integer expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.StyleMapProto)return r;var t=new n.keyhole.dbroot.StyleMapProto;if(r.styleMapId!=null&&(t.styleMapId=r.styleMapId|0),r.channelId){if(!Array.isArray(r.channelId))throw TypeError(".keyhole.dbroot.StyleMapProto.channelId: array expected");t.channelId=[];for(var e=0;e<r.channelId.length;++e)t.channelId[e]=r.channelId[e]|0}return r.normalStyleAttribute!=null&&(t.normalStyleAttribute=r.normalStyleAttribute|0),r.highlightStyleAttribute!=null&&(t.highlightStyleAttribute=r.highlightStyleAttribute|0),t},i.toObject=function(r,t){t||(t={});var e={};if((t.arrays||t.defaults)&&(e.channelId=[]),t.defaults&&(e.styleMapId=0,e.normalStyleAttribute=0,e.highlightStyleAttribute=0),r.styleMapId!=null&&r.hasOwnProperty("styleMapId")&&(e.styleMapId=r.styleMapId),r.channelId&&r.channelId.length){e.channelId=[];for(var o=0;o<r.channelId.length;++o)e.channelId[o]=r.channelId[o]}return r.normalStyleAttribute!=null&&r.hasOwnProperty("normalStyleAttribute")&&(e.normalStyleAttribute=r.normalStyleAttribute),r.highlightStyleAttribute!=null&&r.hasOwnProperty("highlightStyleAttribute")&&(e.highlightStyleAttribute=r.highlightStyleAttribute),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.StyleMapProto"},i}(),c.ZoomRangeProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.minZoom=0,i.prototype.maxZoom=0,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.ZoomRangeProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.minZoom=r.int32();break}case 2:{o.maxZoom=r.int32();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("minZoom"))throw u.ProtocolError("missing required 'minZoom'",{instance:o});if(!o.hasOwnProperty("maxZoom"))throw u.ProtocolError("missing required 'maxZoom'",{instance:o});return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":u.isInteger(r.minZoom)?u.isInteger(r.maxZoom)?null:"maxZoom: integer expected":"minZoom: integer expected"},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.ZoomRangeProto)return r;var t=new n.keyhole.dbroot.ZoomRangeProto;return r.minZoom!=null&&(t.minZoom=r.minZoom|0),r.maxZoom!=null&&(t.maxZoom=r.maxZoom|0),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.minZoom=0,e.maxZoom=0),r.minZoom!=null&&r.hasOwnProperty("minZoom")&&(e.minZoom=r.minZoom),r.maxZoom!=null&&r.hasOwnProperty("maxZoom")&&(e.maxZoom=r.maxZoom),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.ZoomRangeProto"},i}(),c.DrawFlagProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.drawFlagType=1,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.DrawFlagProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.drawFlagType=r.int32();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("drawFlagType"))throw u.ProtocolError("missing required 'drawFlagType'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";switch(r.drawFlagType){default:return"drawFlagType: enum value expected";case 1:case 2:case 3:case 4:case 5:break}return null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.DrawFlagProto)return r;var t=new n.keyhole.dbroot.DrawFlagProto;switch(r.drawFlagType){case"TYPE_FILL_ONLY":case 1:t.drawFlagType=1;break;case"TYPE_OUTLINE_ONLY":case 2:t.drawFlagType=2;break;case"TYPE_FILL_AND_OUTLINE":case 3:t.drawFlagType=3;break;case"TYPE_ANTIALIASING":case 4:t.drawFlagType=4;break;case"TYPE_CENTER_LABEL":case 5:t.drawFlagType=5;break}return t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.drawFlagType=t.enums===String?"TYPE_FILL_ONLY":1),r.drawFlagType!=null&&r.hasOwnProperty("drawFlagType")&&(e.drawFlagType=t.enums===String?n.keyhole.dbroot.DrawFlagProto.DrawFlagType[r.drawFlagType]:r.drawFlagType),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.DrawFlagProto"},i.DrawFlagType=function(){var l={},r=Object.create(l);return r[l[1]="TYPE_FILL_ONLY"]=1,r[l[2]="TYPE_OUTLINE_ONLY"]=2,r[l[3]="TYPE_FILL_AND_OUTLINE"]=3,r[l[4]="TYPE_ANTIALIASING"]=4,r[l[5]="TYPE_CENTER_LABEL"]=5,r}(),i}(),c.LayerProto=function(){function i(l){if(this.zoomRange=[],l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.zoomRange=u.emptyArray,i.prototype.preserveTextLevel=30,i.prototype.lodBeginTransition=!1,i.prototype.lodEndTransition=!1,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.LayerProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.zoomRange&&o.zoomRange.length||(o.zoomRange=[]),o.zoomRange.push(n.keyhole.dbroot.ZoomRangeProto.decode(r,r.uint32()));break}case 2:{o.preserveTextLevel=r.int32();break}case 4:{o.lodBeginTransition=r.bool();break}case 5:{o.lodEndTransition=r.bool();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(r.zoomRange!=null&&r.hasOwnProperty("zoomRange")){if(!Array.isArray(r.zoomRange))return"zoomRange: array expected";for(var t=0;t<r.zoomRange.length;++t){var e=n.keyhole.dbroot.ZoomRangeProto.verify(r.zoomRange[t]);if(e)return"zoomRange."+e}}return r.preserveTextLevel!=null&&r.hasOwnProperty("preserveTextLevel")&&!u.isInteger(r.preserveTextLevel)?"preserveTextLevel: integer expected":r.lodBeginTransition!=null&&r.hasOwnProperty("lodBeginTransition")&&typeof r.lodBeginTransition!="boolean"?"lodBeginTransition: boolean expected":r.lodEndTransition!=null&&r.hasOwnProperty("lodEndTransition")&&typeof r.lodEndTransition!="boolean"?"lodEndTransition: boolean expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.LayerProto)return r;var t=new n.keyhole.dbroot.LayerProto;if(r.zoomRange){if(!Array.isArray(r.zoomRange))throw TypeError(".keyhole.dbroot.LayerProto.zoomRange: array expected");t.zoomRange=[];for(var e=0;e<r.zoomRange.length;++e){if(typeof r.zoomRange[e]!="object")throw TypeError(".keyhole.dbroot.LayerProto.zoomRange: object expected");t.zoomRange[e]=n.keyhole.dbroot.ZoomRangeProto.fromObject(r.zoomRange[e])}}return r.preserveTextLevel!=null&&(t.preserveTextLevel=r.preserveTextLevel|0),r.lodBeginTransition!=null&&(t.lodBeginTransition=!!r.lodBeginTransition),r.lodEndTransition!=null&&(t.lodEndTransition=!!r.lodEndTransition),t},i.toObject=function(r,t){t||(t={});var e={};if((t.arrays||t.defaults)&&(e.zoomRange=[]),t.defaults&&(e.preserveTextLevel=30,e.lodBeginTransition=!1,e.lodEndTransition=!1),r.zoomRange&&r.zoomRange.length){e.zoomRange=[];for(var o=0;o<r.zoomRange.length;++o)e.zoomRange[o]=n.keyhole.dbroot.ZoomRangeProto.toObject(r.zoomRange[o],t)}return r.preserveTextLevel!=null&&r.hasOwnProperty("preserveTextLevel")&&(e.preserveTextLevel=r.preserveTextLevel),r.lodBeginTransition!=null&&r.hasOwnProperty("lodBeginTransition")&&(e.lodBeginTransition=r.lodBeginTransition),r.lodEndTransition!=null&&r.hasOwnProperty("lodEndTransition")&&(e.lodEndTransition=r.lodEndTransition),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.LayerProto"},i}(),c.FolderProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.isExpandable=!0,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.FolderProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.isExpandable=r.bool();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":r.isExpandable!=null&&r.hasOwnProperty("isExpandable")&&typeof r.isExpandable!="boolean"?"isExpandable: boolean expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.FolderProto)return r;var t=new n.keyhole.dbroot.FolderProto;return r.isExpandable!=null&&(t.isExpandable=!!r.isExpandable),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.isExpandable=!0),r.isExpandable!=null&&r.hasOwnProperty("isExpandable")&&(e.isExpandable=r.isExpandable),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.FolderProto"},i}(),c.RequirementProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.requiredVram="",i.prototype.requiredClientVer="",i.prototype.probability="",i.prototype.requiredUserAgent="",i.prototype.requiredClientCapabilities="",i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.RequirementProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 3:{o.requiredVram=r.string();break}case 4:{o.requiredClientVer=r.string();break}case 5:{o.probability=r.string();break}case 6:{o.requiredUserAgent=r.string();break}case 7:{o.requiredClientCapabilities=r.string();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":r.requiredVram!=null&&r.hasOwnProperty("requiredVram")&&!u.isString(r.requiredVram)?"requiredVram: string expected":r.requiredClientVer!=null&&r.hasOwnProperty("requiredClientVer")&&!u.isString(r.requiredClientVer)?"requiredClientVer: string expected":r.probability!=null&&r.hasOwnProperty("probability")&&!u.isString(r.probability)?"probability: string expected":r.requiredUserAgent!=null&&r.hasOwnProperty("requiredUserAgent")&&!u.isString(r.requiredUserAgent)?"requiredUserAgent: string expected":r.requiredClientCapabilities!=null&&r.hasOwnProperty("requiredClientCapabilities")&&!u.isString(r.requiredClientCapabilities)?"requiredClientCapabilities: string expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.RequirementProto)return r;var t=new n.keyhole.dbroot.RequirementProto;return r.requiredVram!=null&&(t.requiredVram=String(r.requiredVram)),r.requiredClientVer!=null&&(t.requiredClientVer=String(r.requiredClientVer)),r.probability!=null&&(t.probability=String(r.probability)),r.requiredUserAgent!=null&&(t.requiredUserAgent=String(r.requiredUserAgent)),r.requiredClientCapabilities!=null&&(t.requiredClientCapabilities=String(r.requiredClientCapabilities)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.requiredVram="",e.requiredClientVer="",e.probability="",e.requiredUserAgent="",e.requiredClientCapabilities=""),r.requiredVram!=null&&r.hasOwnProperty("requiredVram")&&(e.requiredVram=r.requiredVram),r.requiredClientVer!=null&&r.hasOwnProperty("requiredClientVer")&&(e.requiredClientVer=r.requiredClientVer),r.probability!=null&&r.hasOwnProperty("probability")&&(e.probability=r.probability),r.requiredUserAgent!=null&&r.hasOwnProperty("requiredUserAgent")&&(e.requiredUserAgent=r.requiredUserAgent),r.requiredClientCapabilities!=null&&r.hasOwnProperty("requiredClientCapabilities")&&(e.requiredClientCapabilities=r.requiredClientCapabilities),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.RequirementProto"},i}(),c.LookAtProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.longitude=0,i.prototype.latitude=0,i.prototype.range=0,i.prototype.tilt=0,i.prototype.heading=0,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.LookAtProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.longitude=r.float();break}case 2:{o.latitude=r.float();break}case 3:{o.range=r.float();break}case 4:{o.tilt=r.float();break}case 5:{o.heading=r.float();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("longitude"))throw u.ProtocolError("missing required 'longitude'",{instance:o});if(!o.hasOwnProperty("latitude"))throw u.ProtocolError("missing required 'latitude'",{instance:o});return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":typeof r.longitude!="number"?"longitude: number expected":typeof r.latitude!="number"?"latitude: number expected":r.range!=null&&r.hasOwnProperty("range")&&typeof r.range!="number"?"range: number expected":r.tilt!=null&&r.hasOwnProperty("tilt")&&typeof r.tilt!="number"?"tilt: number expected":r.heading!=null&&r.hasOwnProperty("heading")&&typeof r.heading!="number"?"heading: number expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.LookAtProto)return r;var t=new n.keyhole.dbroot.LookAtProto;return r.longitude!=null&&(t.longitude=Number(r.longitude)),r.latitude!=null&&(t.latitude=Number(r.latitude)),r.range!=null&&(t.range=Number(r.range)),r.tilt!=null&&(t.tilt=Number(r.tilt)),r.heading!=null&&(t.heading=Number(r.heading)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.longitude=0,e.latitude=0,e.range=0,e.tilt=0,e.heading=0),r.longitude!=null&&r.hasOwnProperty("longitude")&&(e.longitude=t.json&&!isFinite(r.longitude)?String(r.longitude):r.longitude),r.latitude!=null&&r.hasOwnProperty("latitude")&&(e.latitude=t.json&&!isFinite(r.latitude)?String(r.latitude):r.latitude),r.range!=null&&r.hasOwnProperty("range")&&(e.range=t.json&&!isFinite(r.range)?String(r.range):r.range),r.tilt!=null&&r.hasOwnProperty("tilt")&&(e.tilt=t.json&&!isFinite(r.tilt)?String(r.tilt):r.tilt),r.heading!=null&&r.hasOwnProperty("heading")&&(e.heading=t.json&&!isFinite(r.heading)?String(r.heading):r.heading),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.LookAtProto"},i}(),c.NestedFeatureProto=function(){function i(l){if(this.children=[],l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.featureType=1,i.prototype.kmlUrl=null,i.prototype.databaseUrl="",i.prototype.layer=null,i.prototype.folder=null,i.prototype.requirement=null,i.prototype.channelId=0,i.prototype.displayName=null,i.prototype.isVisible=!0,i.prototype.isEnabled=!0,i.prototype.isChecked=!1,i.prototype.layerMenuIconPath="icons/773_l.png",i.prototype.description=null,i.prototype.lookAt=null,i.prototype.assetUuid="",i.prototype.isSaveLocked=!0,i.prototype.children=u.emptyArray,i.prototype.clientConfigScriptName="",i.prototype.dioramaDataChannelBase=-1,i.prototype.replicaDataChannelBase=-1,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.NestedFeatureProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.featureType=r.int32();break}case 2:{o.kmlUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 21:{o.databaseUrl=r.string();break}case 3:{o.layer=n.keyhole.dbroot.LayerProto.decode(r,r.uint32());break}case 4:{o.folder=n.keyhole.dbroot.FolderProto.decode(r,r.uint32());break}case 5:{o.requirement=n.keyhole.dbroot.RequirementProto.decode(r,r.uint32());break}case 6:{o.channelId=r.int32();break}case 7:{o.displayName=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 8:{o.isVisible=r.bool();break}case 9:{o.isEnabled=r.bool();break}case 10:{o.isChecked=r.bool();break}case 11:{o.layerMenuIconPath=r.string();break}case 12:{o.description=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 13:{o.lookAt=n.keyhole.dbroot.LookAtProto.decode(r,r.uint32());break}case 15:{o.assetUuid=r.string();break}case 16:{o.isSaveLocked=r.bool();break}case 17:{o.children&&o.children.length||(o.children=[]),o.children.push(n.keyhole.dbroot.NestedFeatureProto.decode(r,r.uint32()));break}case 18:{o.clientConfigScriptName=r.string();break}case 19:{o.dioramaDataChannelBase=r.int32();break}case 20:{o.replicaDataChannelBase=r.int32();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("channelId"))throw u.ProtocolError("missing required 'channelId'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(r.featureType!=null&&r.hasOwnProperty("featureType"))switch(r.featureType){default:return"featureType: enum value expected";case 1:case 2:case 3:case 4:break}if(r.kmlUrl!=null&&r.hasOwnProperty("kmlUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.kmlUrl);if(t)return"kmlUrl."+t}if(r.databaseUrl!=null&&r.hasOwnProperty("databaseUrl")&&!u.isString(r.databaseUrl))return"databaseUrl: string expected";if(r.layer!=null&&r.hasOwnProperty("layer")){var t=n.keyhole.dbroot.LayerProto.verify(r.layer);if(t)return"layer."+t}if(r.folder!=null&&r.hasOwnProperty("folder")){var t=n.keyhole.dbroot.FolderProto.verify(r.folder);if(t)return"folder."+t}if(r.requirement!=null&&r.hasOwnProperty("requirement")){var t=n.keyhole.dbroot.RequirementProto.verify(r.requirement);if(t)return"requirement."+t}if(!u.isInteger(r.channelId))return"channelId: integer expected";if(r.displayName!=null&&r.hasOwnProperty("displayName")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.displayName);if(t)return"displayName."+t}if(r.isVisible!=null&&r.hasOwnProperty("isVisible")&&typeof r.isVisible!="boolean")return"isVisible: boolean expected";if(r.isEnabled!=null&&r.hasOwnProperty("isEnabled")&&typeof r.isEnabled!="boolean")return"isEnabled: boolean expected";if(r.isChecked!=null&&r.hasOwnProperty("isChecked")&&typeof r.isChecked!="boolean")return"isChecked: boolean expected";if(r.layerMenuIconPath!=null&&r.hasOwnProperty("layerMenuIconPath")&&!u.isString(r.layerMenuIconPath))return"layerMenuIconPath: string expected";if(r.description!=null&&r.hasOwnProperty("description")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.description);if(t)return"description."+t}if(r.lookAt!=null&&r.hasOwnProperty("lookAt")){var t=n.keyhole.dbroot.LookAtProto.verify(r.lookAt);if(t)return"lookAt."+t}if(r.assetUuid!=null&&r.hasOwnProperty("assetUuid")&&!u.isString(r.assetUuid))return"assetUuid: string expected";if(r.isSaveLocked!=null&&r.hasOwnProperty("isSaveLocked")&&typeof r.isSaveLocked!="boolean")return"isSaveLocked: boolean expected";if(r.children!=null&&r.hasOwnProperty("children")){if(!Array.isArray(r.children))return"children: array expected";for(var e=0;e<r.children.length;++e){var t=n.keyhole.dbroot.NestedFeatureProto.verify(r.children[e]);if(t)return"children."+t}}return r.clientConfigScriptName!=null&&r.hasOwnProperty("clientConfigScriptName")&&!u.isString(r.clientConfigScriptName)?"clientConfigScriptName: string expected":r.dioramaDataChannelBase!=null&&r.hasOwnProperty("dioramaDataChannelBase")&&!u.isInteger(r.dioramaDataChannelBase)?"dioramaDataChannelBase: integer expected":r.replicaDataChannelBase!=null&&r.hasOwnProperty("replicaDataChannelBase")&&!u.isInteger(r.replicaDataChannelBase)?"replicaDataChannelBase: integer expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.NestedFeatureProto)return r;var t=new n.keyhole.dbroot.NestedFeatureProto;switch(r.featureType){case"TYPE_POINT_Z":case 1:t.featureType=1;break;case"TYPE_POLYGON_Z":case 2:t.featureType=2;break;case"TYPE_LINE_Z":case 3:t.featureType=3;break;case"TYPE_TERRAIN":case 4:t.featureType=4;break}if(r.kmlUrl!=null){if(typeof r.kmlUrl!="object")throw TypeError(".keyhole.dbroot.NestedFeatureProto.kmlUrl: object expected");t.kmlUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.kmlUrl)}if(r.databaseUrl!=null&&(t.databaseUrl=String(r.databaseUrl)),r.layer!=null){if(typeof r.layer!="object")throw TypeError(".keyhole.dbroot.NestedFeatureProto.layer: object expected");t.layer=n.keyhole.dbroot.LayerProto.fromObject(r.layer)}if(r.folder!=null){if(typeof r.folder!="object")throw TypeError(".keyhole.dbroot.NestedFeatureProto.folder: object expected");t.folder=n.keyhole.dbroot.FolderProto.fromObject(r.folder)}if(r.requirement!=null){if(typeof r.requirement!="object")throw TypeError(".keyhole.dbroot.NestedFeatureProto.requirement: object expected");t.requirement=n.keyhole.dbroot.RequirementProto.fromObject(r.requirement)}if(r.channelId!=null&&(t.channelId=r.channelId|0),r.displayName!=null){if(typeof r.displayName!="object")throw TypeError(".keyhole.dbroot.NestedFeatureProto.displayName: object expected");t.displayName=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.displayName)}if(r.isVisible!=null&&(t.isVisible=!!r.isVisible),r.isEnabled!=null&&(t.isEnabled=!!r.isEnabled),r.isChecked!=null&&(t.isChecked=!!r.isChecked),r.layerMenuIconPath!=null&&(t.layerMenuIconPath=String(r.layerMenuIconPath)),r.description!=null){if(typeof r.description!="object")throw TypeError(".keyhole.dbroot.NestedFeatureProto.description: object expected");t.description=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.description)}if(r.lookAt!=null){if(typeof r.lookAt!="object")throw TypeError(".keyhole.dbroot.NestedFeatureProto.lookAt: object expected");t.lookAt=n.keyhole.dbroot.LookAtProto.fromObject(r.lookAt)}if(r.assetUuid!=null&&(t.assetUuid=String(r.assetUuid)),r.isSaveLocked!=null&&(t.isSaveLocked=!!r.isSaveLocked),r.children){if(!Array.isArray(r.children))throw TypeError(".keyhole.dbroot.NestedFeatureProto.children: array expected");t.children=[];for(var e=0;e<r.children.length;++e){if(typeof r.children[e]!="object")throw TypeError(".keyhole.dbroot.NestedFeatureProto.children: object expected");t.children[e]=n.keyhole.dbroot.NestedFeatureProto.fromObject(r.children[e])}}return r.clientConfigScriptName!=null&&(t.clientConfigScriptName=String(r.clientConfigScriptName)),r.dioramaDataChannelBase!=null&&(t.dioramaDataChannelBase=r.dioramaDataChannelBase|0),r.replicaDataChannelBase!=null&&(t.replicaDataChannelBase=r.replicaDataChannelBase|0),t},i.toObject=function(r,t){t||(t={});var e={};if((t.arrays||t.defaults)&&(e.children=[]),t.defaults&&(e.featureType=t.enums===String?"TYPE_POINT_Z":1,e.kmlUrl=null,e.layer=null,e.folder=null,e.requirement=null,e.channelId=0,e.displayName=null,e.isVisible=!0,e.isEnabled=!0,e.isChecked=!1,e.layerMenuIconPath="icons/773_l.png",e.description=null,e.lookAt=null,e.assetUuid="",e.isSaveLocked=!0,e.clientConfigScriptName="",e.dioramaDataChannelBase=-1,e.replicaDataChannelBase=-1,e.databaseUrl=""),r.featureType!=null&&r.hasOwnProperty("featureType")&&(e.featureType=t.enums===String?n.keyhole.dbroot.NestedFeatureProto.FeatureType[r.featureType]:r.featureType),r.kmlUrl!=null&&r.hasOwnProperty("kmlUrl")&&(e.kmlUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.kmlUrl,t)),r.layer!=null&&r.hasOwnProperty("layer")&&(e.layer=n.keyhole.dbroot.LayerProto.toObject(r.layer,t)),r.folder!=null&&r.hasOwnProperty("folder")&&(e.folder=n.keyhole.dbroot.FolderProto.toObject(r.folder,t)),r.requirement!=null&&r.hasOwnProperty("requirement")&&(e.requirement=n.keyhole.dbroot.RequirementProto.toObject(r.requirement,t)),r.channelId!=null&&r.hasOwnProperty("channelId")&&(e.channelId=r.channelId),r.displayName!=null&&r.hasOwnProperty("displayName")&&(e.displayName=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.displayName,t)),r.isVisible!=null&&r.hasOwnProperty("isVisible")&&(e.isVisible=r.isVisible),r.isEnabled!=null&&r.hasOwnProperty("isEnabled")&&(e.isEnabled=r.isEnabled),r.isChecked!=null&&r.hasOwnProperty("isChecked")&&(e.isChecked=r.isChecked),r.layerMenuIconPath!=null&&r.hasOwnProperty("layerMenuIconPath")&&(e.layerMenuIconPath=r.layerMenuIconPath),r.description!=null&&r.hasOwnProperty("description")&&(e.description=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.description,t)),r.lookAt!=null&&r.hasOwnProperty("lookAt")&&(e.lookAt=n.keyhole.dbroot.LookAtProto.toObject(r.lookAt,t)),r.assetUuid!=null&&r.hasOwnProperty("assetUuid")&&(e.assetUuid=r.assetUuid),r.isSaveLocked!=null&&r.hasOwnProperty("isSaveLocked")&&(e.isSaveLocked=r.isSaveLocked),r.children&&r.children.length){e.children=[];for(var o=0;o<r.children.length;++o)e.children[o]=n.keyhole.dbroot.NestedFeatureProto.toObject(r.children[o],t)}return r.clientConfigScriptName!=null&&r.hasOwnProperty("clientConfigScriptName")&&(e.clientConfigScriptName=r.clientConfigScriptName),r.dioramaDataChannelBase!=null&&r.hasOwnProperty("dioramaDataChannelBase")&&(e.dioramaDataChannelBase=r.dioramaDataChannelBase),r.replicaDataChannelBase!=null&&r.hasOwnProperty("replicaDataChannelBase")&&(e.replicaDataChannelBase=r.replicaDataChannelBase),r.databaseUrl!=null&&r.hasOwnProperty("databaseUrl")&&(e.databaseUrl=r.databaseUrl),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.NestedFeatureProto"},i.FeatureType=function(){var l={},r=Object.create(l);return r[l[1]="TYPE_POINT_Z"]=1,r[l[2]="TYPE_POLYGON_Z"]=2,r[l[3]="TYPE_LINE_Z"]=3,r[l[4]="TYPE_TERRAIN"]=4,r}(),i}(),c.MfeDomainFeaturesProto=function(){function i(l){if(this.supportedFeatures=[],l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.countryCode="",i.prototype.domainName="",i.prototype.supportedFeatures=u.emptyArray,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.MfeDomainFeaturesProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.countryCode=r.string();break}case 2:{o.domainName=r.string();break}case 3:{if(o.supportedFeatures&&o.supportedFeatures.length||(o.supportedFeatures=[]),(a&7)===2)for(var p=r.uint32()+r.pos;r.pos<p;)o.supportedFeatures.push(r.int32());else o.supportedFeatures.push(r.int32());break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("countryCode"))throw u.ProtocolError("missing required 'countryCode'",{instance:o});if(!o.hasOwnProperty("domainName"))throw u.ProtocolError("missing required 'domainName'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(!u.isString(r.countryCode))return"countryCode: string expected";if(!u.isString(r.domainName))return"domainName: string expected";if(r.supportedFeatures!=null&&r.hasOwnProperty("supportedFeatures")){if(!Array.isArray(r.supportedFeatures))return"supportedFeatures: array expected";for(var t=0;t<r.supportedFeatures.length;++t)switch(r.supportedFeatures[t]){default:return"supportedFeatures: enum value[] expected";case 0:case 1:case 2:break}}return null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.MfeDomainFeaturesProto)return r;var t=new n.keyhole.dbroot.MfeDomainFeaturesProto;if(r.countryCode!=null&&(t.countryCode=String(r.countryCode)),r.domainName!=null&&(t.domainName=String(r.domainName)),r.supportedFeatures){if(!Array.isArray(r.supportedFeatures))throw TypeError(".keyhole.dbroot.MfeDomainFeaturesProto.supportedFeatures: array expected");t.supportedFeatures=[];for(var e=0;e<r.supportedFeatures.length;++e)switch(r.supportedFeatures[e]){default:case"GEOCODING":case 0:t.supportedFeatures[e]=0;break;case"LOCAL_SEARCH":case 1:t.supportedFeatures[e]=1;break;case"DRIVING_DIRECTIONS":case 2:t.supportedFeatures[e]=2;break}}return t},i.toObject=function(r,t){t||(t={});var e={};if((t.arrays||t.defaults)&&(e.supportedFeatures=[]),t.defaults&&(e.countryCode="",e.domainName=""),r.countryCode!=null&&r.hasOwnProperty("countryCode")&&(e.countryCode=r.countryCode),r.domainName!=null&&r.hasOwnProperty("domainName")&&(e.domainName=r.domainName),r.supportedFeatures&&r.supportedFeatures.length){e.supportedFeatures=[];for(var o=0;o<r.supportedFeatures.length;++o)e.supportedFeatures[o]=t.enums===String?n.keyhole.dbroot.MfeDomainFeaturesProto.SupportedFeature[r.supportedFeatures[o]]:r.supportedFeatures[o]}return e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.MfeDomainFeaturesProto"},i.SupportedFeature=function(){var l={},r=Object.create(l);return r[l[0]="GEOCODING"]=0,r[l[1]="LOCAL_SEARCH"]=1,r[l[2]="DRIVING_DIRECTIONS"]=2,r}(),i}(),c.ClientOptionsProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.disableDiskCache=!1,i.prototype.disableEmbeddedBrowserVista=!1,i.prototype.drawAtmosphere=!0,i.prototype.drawStars=!0,i.prototype.shaderFilePrefix="",i.prototype.useProtobufQuadtreePackets=!1,i.prototype.useExtendedCopyrightIds=!0,i.prototype.precipitationsOptions=null,i.prototype.captureOptions=null,i.prototype.show_2dMapsIcon=!0,i.prototype.disableInternalBrowser=!1,i.prototype.internalBrowserBlacklist="",i.prototype.internalBrowserOriginWhitelist="*",i.prototype.polarTileMergingLevel=0,i.prototype.jsBridgeRequestWhitelist="http://*.google.com/*",i.prototype.mapsOptions=null,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.ClientOptionsProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.disableDiskCache=r.bool();break}case 2:{o.disableEmbeddedBrowserVista=r.bool();break}case 3:{o.drawAtmosphere=r.bool();break}case 4:{o.drawStars=r.bool();break}case 5:{o.shaderFilePrefix=r.string();break}case 6:{o.useProtobufQuadtreePackets=r.bool();break}case 7:{o.useExtendedCopyrightIds=r.bool();break}case 8:{o.precipitationsOptions=n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.decode(r,r.uint32());break}case 9:{o.captureOptions=n.keyhole.dbroot.ClientOptionsProto.CaptureOptions.decode(r,r.uint32());break}case 10:{o.show_2dMapsIcon=r.bool();break}case 11:{o.disableInternalBrowser=r.bool();break}case 12:{o.internalBrowserBlacklist=r.string();break}case 13:{o.internalBrowserOriginWhitelist=r.string();break}case 14:{o.polarTileMergingLevel=r.int32();break}case 15:{o.jsBridgeRequestWhitelist=r.string();break}case 16:{o.mapsOptions=n.keyhole.dbroot.ClientOptionsProto.MapsOptions.decode(r,r.uint32());break}default:r.skipType(a&7);break}}return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(r.disableDiskCache!=null&&r.hasOwnProperty("disableDiskCache")&&typeof r.disableDiskCache!="boolean")return"disableDiskCache: boolean expected";if(r.disableEmbeddedBrowserVista!=null&&r.hasOwnProperty("disableEmbeddedBrowserVista")&&typeof r.disableEmbeddedBrowserVista!="boolean")return"disableEmbeddedBrowserVista: boolean expected";if(r.drawAtmosphere!=null&&r.hasOwnProperty("drawAtmosphere")&&typeof r.drawAtmosphere!="boolean")return"drawAtmosphere: boolean expected";if(r.drawStars!=null&&r.hasOwnProperty("drawStars")&&typeof r.drawStars!="boolean")return"drawStars: boolean expected";if(r.shaderFilePrefix!=null&&r.hasOwnProperty("shaderFilePrefix")&&!u.isString(r.shaderFilePrefix))return"shaderFilePrefix: string expected";if(r.useProtobufQuadtreePackets!=null&&r.hasOwnProperty("useProtobufQuadtreePackets")&&typeof r.useProtobufQuadtreePackets!="boolean")return"useProtobufQuadtreePackets: boolean expected";if(r.useExtendedCopyrightIds!=null&&r.hasOwnProperty("useExtendedCopyrightIds")&&typeof r.useExtendedCopyrightIds!="boolean")return"useExtendedCopyrightIds: boolean expected";if(r.precipitationsOptions!=null&&r.hasOwnProperty("precipitationsOptions")){var t=n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.verify(r.precipitationsOptions);if(t)return"precipitationsOptions."+t}if(r.captureOptions!=null&&r.hasOwnProperty("captureOptions")){var t=n.keyhole.dbroot.ClientOptionsProto.CaptureOptions.verify(r.captureOptions);if(t)return"captureOptions."+t}if(r.show_2dMapsIcon!=null&&r.hasOwnProperty("show_2dMapsIcon")&&typeof r.show_2dMapsIcon!="boolean")return"show_2dMapsIcon: boolean expected";if(r.disableInternalBrowser!=null&&r.hasOwnProperty("disableInternalBrowser")&&typeof r.disableInternalBrowser!="boolean")return"disableInternalBrowser: boolean expected";if(r.internalBrowserBlacklist!=null&&r.hasOwnProperty("internalBrowserBlacklist")&&!u.isString(r.internalBrowserBlacklist))return"internalBrowserBlacklist: string expected";if(r.internalBrowserOriginWhitelist!=null&&r.hasOwnProperty("internalBrowserOriginWhitelist")&&!u.isString(r.internalBrowserOriginWhitelist))return"internalBrowserOriginWhitelist: string expected";if(r.polarTileMergingLevel!=null&&r.hasOwnProperty("polarTileMergingLevel")&&!u.isInteger(r.polarTileMergingLevel))return"polarTileMergingLevel: integer expected";if(r.jsBridgeRequestWhitelist!=null&&r.hasOwnProperty("jsBridgeRequestWhitelist")&&!u.isString(r.jsBridgeRequestWhitelist))return"jsBridgeRequestWhitelist: string expected";if(r.mapsOptions!=null&&r.hasOwnProperty("mapsOptions")){var t=n.keyhole.dbroot.ClientOptionsProto.MapsOptions.verify(r.mapsOptions);if(t)return"mapsOptions."+t}return null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.ClientOptionsProto)return r;var t=new n.keyhole.dbroot.ClientOptionsProto;if(r.disableDiskCache!=null&&(t.disableDiskCache=!!r.disableDiskCache),r.disableEmbeddedBrowserVista!=null&&(t.disableEmbeddedBrowserVista=!!r.disableEmbeddedBrowserVista),r.drawAtmosphere!=null&&(t.drawAtmosphere=!!r.drawAtmosphere),r.drawStars!=null&&(t.drawStars=!!r.drawStars),r.shaderFilePrefix!=null&&(t.shaderFilePrefix=String(r.shaderFilePrefix)),r.useProtobufQuadtreePackets!=null&&(t.useProtobufQuadtreePackets=!!r.useProtobufQuadtreePackets),r.useExtendedCopyrightIds!=null&&(t.useExtendedCopyrightIds=!!r.useExtendedCopyrightIds),r.precipitationsOptions!=null){if(typeof r.precipitationsOptions!="object")throw TypeError(".keyhole.dbroot.ClientOptionsProto.precipitationsOptions: object expected");t.precipitationsOptions=n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.fromObject(r.precipitationsOptions)}if(r.captureOptions!=null){if(typeof r.captureOptions!="object")throw TypeError(".keyhole.dbroot.ClientOptionsProto.captureOptions: object expected");t.captureOptions=n.keyhole.dbroot.ClientOptionsProto.CaptureOptions.fromObject(r.captureOptions)}if(r.show_2dMapsIcon!=null&&(t.show_2dMapsIcon=!!r.show_2dMapsIcon),r.disableInternalBrowser!=null&&(t.disableInternalBrowser=!!r.disableInternalBrowser),r.internalBrowserBlacklist!=null&&(t.internalBrowserBlacklist=String(r.internalBrowserBlacklist)),r.internalBrowserOriginWhitelist!=null&&(t.internalBrowserOriginWhitelist=String(r.internalBrowserOriginWhitelist)),r.polarTileMergingLevel!=null&&(t.polarTileMergingLevel=r.polarTileMergingLevel|0),r.jsBridgeRequestWhitelist!=null&&(t.jsBridgeRequestWhitelist=String(r.jsBridgeRequestWhitelist)),r.mapsOptions!=null){if(typeof r.mapsOptions!="object")throw TypeError(".keyhole.dbroot.ClientOptionsProto.mapsOptions: object expected");t.mapsOptions=n.keyhole.dbroot.ClientOptionsProto.MapsOptions.fromObject(r.mapsOptions)}return t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.disableDiskCache=!1,e.disableEmbeddedBrowserVista=!1,e.drawAtmosphere=!0,e.drawStars=!0,e.shaderFilePrefix="",e.useProtobufQuadtreePackets=!1,e.useExtendedCopyrightIds=!0,e.precipitationsOptions=null,e.captureOptions=null,e.show_2dMapsIcon=!0,e.disableInternalBrowser=!1,e.internalBrowserBlacklist="",e.internalBrowserOriginWhitelist="*",e.polarTileMergingLevel=0,e.jsBridgeRequestWhitelist="http://*.google.com/*",e.mapsOptions=null),r.disableDiskCache!=null&&r.hasOwnProperty("disableDiskCache")&&(e.disableDiskCache=r.disableDiskCache),r.disableEmbeddedBrowserVista!=null&&r.hasOwnProperty("disableEmbeddedBrowserVista")&&(e.disableEmbeddedBrowserVista=r.disableEmbeddedBrowserVista),r.drawAtmosphere!=null&&r.hasOwnProperty("drawAtmosphere")&&(e.drawAtmosphere=r.drawAtmosphere),r.drawStars!=null&&r.hasOwnProperty("drawStars")&&(e.drawStars=r.drawStars),r.shaderFilePrefix!=null&&r.hasOwnProperty("shaderFilePrefix")&&(e.shaderFilePrefix=r.shaderFilePrefix),r.useProtobufQuadtreePackets!=null&&r.hasOwnProperty("useProtobufQuadtreePackets")&&(e.useProtobufQuadtreePackets=r.useProtobufQuadtreePackets),r.useExtendedCopyrightIds!=null&&r.hasOwnProperty("useExtendedCopyrightIds")&&(e.useExtendedCopyrightIds=r.useExtendedCopyrightIds),r.precipitationsOptions!=null&&r.hasOwnProperty("precipitationsOptions")&&(e.precipitationsOptions=n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.toObject(r.precipitationsOptions,t)),r.captureOptions!=null&&r.hasOwnProperty("captureOptions")&&(e.captureOptions=n.keyhole.dbroot.ClientOptionsProto.CaptureOptions.toObject(r.captureOptions,t)),r.show_2dMapsIcon!=null&&r.hasOwnProperty("show_2dMapsIcon")&&(e.show_2dMapsIcon=r.show_2dMapsIcon),r.disableInternalBrowser!=null&&r.hasOwnProperty("disableInternalBrowser")&&(e.disableInternalBrowser=r.disableInternalBrowser),r.internalBrowserBlacklist!=null&&r.hasOwnProperty("internalBrowserBlacklist")&&(e.internalBrowserBlacklist=r.internalBrowserBlacklist),r.internalBrowserOriginWhitelist!=null&&r.hasOwnProperty("internalBrowserOriginWhitelist")&&(e.internalBrowserOriginWhitelist=r.internalBrowserOriginWhitelist),r.polarTileMergingLevel!=null&&r.hasOwnProperty("polarTileMergingLevel")&&(e.polarTileMergingLevel=r.polarTileMergingLevel),r.jsBridgeRequestWhitelist!=null&&r.hasOwnProperty("jsBridgeRequestWhitelist")&&(e.jsBridgeRequestWhitelist=r.jsBridgeRequestWhitelist),r.mapsOptions!=null&&r.hasOwnProperty("mapsOptions")&&(e.mapsOptions=n.keyhole.dbroot.ClientOptionsProto.MapsOptions.toObject(r.mapsOptions,t)),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.ClientOptionsProto"},i.PrecipitationsOptions=function(){function l(r){if(this.weatherMapping=[],r)for(var t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return l.prototype.imageUrl="",l.prototype.imageExpireTime=900,l.prototype.maxColorDistance=20,l.prototype.imageLevel=5,l.prototype.weatherMapping=u.emptyArray,l.prototype.cloudsLayerUrl="",l.prototype.animationDecelerationDelay=20,l.decode=function(t,e){t instanceof f||(t=f.create(t));for(var o=e===void 0?t.len:t.pos+e,a=new n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions;t.pos<o;){var p=t.uint32();switch(p>>>3){case 1:{a.imageUrl=t.string();break}case 2:{a.imageExpireTime=t.int32();break}case 3:{a.maxColorDistance=t.int32();break}case 4:{a.imageLevel=t.int32();break}case 5:{a.weatherMapping&&a.weatherMapping.length||(a.weatherMapping=[]),a.weatherMapping.push(n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.WeatherMapping.decode(t,t.uint32()));break}case 6:{a.cloudsLayerUrl=t.string();break}case 7:{a.animationDecelerationDelay=t.float();break}default:t.skipType(p&7);break}}return a},l.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.imageUrl!=null&&t.hasOwnProperty("imageUrl")&&!u.isString(t.imageUrl))return"imageUrl: string expected";if(t.imageExpireTime!=null&&t.hasOwnProperty("imageExpireTime")&&!u.isInteger(t.imageExpireTime))return"imageExpireTime: integer expected";if(t.maxColorDistance!=null&&t.hasOwnProperty("maxColorDistance")&&!u.isInteger(t.maxColorDistance))return"maxColorDistance: integer expected";if(t.imageLevel!=null&&t.hasOwnProperty("imageLevel")&&!u.isInteger(t.imageLevel))return"imageLevel: integer expected";if(t.weatherMapping!=null&&t.hasOwnProperty("weatherMapping")){if(!Array.isArray(t.weatherMapping))return"weatherMapping: array expected";for(var e=0;e<t.weatherMapping.length;++e){var o=n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.WeatherMapping.verify(t.weatherMapping[e]);if(o)return"weatherMapping."+o}}return t.cloudsLayerUrl!=null&&t.hasOwnProperty("cloudsLayerUrl")&&!u.isString(t.cloudsLayerUrl)?"cloudsLayerUrl: string expected":t.animationDecelerationDelay!=null&&t.hasOwnProperty("animationDecelerationDelay")&&typeof t.animationDecelerationDelay!="number"?"animationDecelerationDelay: number expected":null},l.fromObject=function(t){if(t instanceof n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions)return t;var e=new n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions;if(t.imageUrl!=null&&(e.imageUrl=String(t.imageUrl)),t.imageExpireTime!=null&&(e.imageExpireTime=t.imageExpireTime|0),t.maxColorDistance!=null&&(e.maxColorDistance=t.maxColorDistance|0),t.imageLevel!=null&&(e.imageLevel=t.imageLevel|0),t.weatherMapping){if(!Array.isArray(t.weatherMapping))throw TypeError(".keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.weatherMapping: array expected");e.weatherMapping=[];for(var o=0;o<t.weatherMapping.length;++o){if(typeof t.weatherMapping[o]!="object")throw TypeError(".keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.weatherMapping: object expected");e.weatherMapping[o]=n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.WeatherMapping.fromObject(t.weatherMapping[o])}}return t.cloudsLayerUrl!=null&&(e.cloudsLayerUrl=String(t.cloudsLayerUrl)),t.animationDecelerationDelay!=null&&(e.animationDecelerationDelay=Number(t.animationDecelerationDelay)),e},l.toObject=function(t,e){e||(e={});var o={};if((e.arrays||e.defaults)&&(o.weatherMapping=[]),e.defaults&&(o.imageUrl="",o.imageExpireTime=900,o.maxColorDistance=20,o.imageLevel=5,o.cloudsLayerUrl="",o.animationDecelerationDelay=20),t.imageUrl!=null&&t.hasOwnProperty("imageUrl")&&(o.imageUrl=t.imageUrl),t.imageExpireTime!=null&&t.hasOwnProperty("imageExpireTime")&&(o.imageExpireTime=t.imageExpireTime),t.maxColorDistance!=null&&t.hasOwnProperty("maxColorDistance")&&(o.maxColorDistance=t.maxColorDistance),t.imageLevel!=null&&t.hasOwnProperty("imageLevel")&&(o.imageLevel=t.imageLevel),t.weatherMapping&&t.weatherMapping.length){o.weatherMapping=[];for(var a=0;a<t.weatherMapping.length;++a)o.weatherMapping[a]=n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.WeatherMapping.toObject(t.weatherMapping[a],e)}return t.cloudsLayerUrl!=null&&t.hasOwnProperty("cloudsLayerUrl")&&(o.cloudsLayerUrl=t.cloudsLayerUrl),t.animationDecelerationDelay!=null&&t.hasOwnProperty("animationDecelerationDelay")&&(o.animationDecelerationDelay=e.json&&!isFinite(t.animationDecelerationDelay)?String(t.animationDecelerationDelay):t.animationDecelerationDelay),o},l.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},l.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions"},l.WeatherMapping=function(){function r(t){if(t)for(var e=Object.keys(t),o=0;o<e.length;++o)t[e[o]]!=null&&(this[e[o]]=t[e[o]])}return r.prototype.colorAbgr=0,r.prototype.weatherType=0,r.prototype.elongation=1,r.prototype.opacity=0,r.prototype.fogDensity=0,r.prototype.speed0=0,r.prototype.speed1=0,r.prototype.speed2=0,r.prototype.speed3=0,r.decode=function(e,o){e instanceof f||(e=f.create(e));for(var a=o===void 0?e.len:e.pos+o,p=new n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.WeatherMapping;e.pos<a;){var y=e.uint32();switch(y>>>3){case 1:{p.colorAbgr=e.uint32();break}case 2:{p.weatherType=e.int32();break}case 3:{p.elongation=e.float();break}case 4:{p.opacity=e.float();break}case 5:{p.fogDensity=e.float();break}case 6:{p.speed0=e.float();break}case 7:{p.speed1=e.float();break}case 8:{p.speed2=e.float();break}case 9:{p.speed3=e.float();break}default:e.skipType(y&7);break}}if(!p.hasOwnProperty("colorAbgr"))throw u.ProtocolError("missing required 'colorAbgr'",{instance:p});if(!p.hasOwnProperty("weatherType"))throw u.ProtocolError("missing required 'weatherType'",{instance:p});return p},r.verify=function(e){if(typeof e!="object"||e===null)return"object expected";if(!u.isInteger(e.colorAbgr))return"colorAbgr: integer expected";switch(e.weatherType){default:return"weatherType: enum value expected";case 0:case 1:case 2:break}return e.elongation!=null&&e.hasOwnProperty("elongation")&&typeof e.elongation!="number"?"elongation: number expected":e.opacity!=null&&e.hasOwnProperty("opacity")&&typeof e.opacity!="number"?"opacity: number expected":e.fogDensity!=null&&e.hasOwnProperty("fogDensity")&&typeof e.fogDensity!="number"?"fogDensity: number expected":e.speed0!=null&&e.hasOwnProperty("speed0")&&typeof e.speed0!="number"?"speed0: number expected":e.speed1!=null&&e.hasOwnProperty("speed1")&&typeof e.speed1!="number"?"speed1: number expected":e.speed2!=null&&e.hasOwnProperty("speed2")&&typeof e.speed2!="number"?"speed2: number expected":e.speed3!=null&&e.hasOwnProperty("speed3")&&typeof e.speed3!="number"?"speed3: number expected":null},r.fromObject=function(e){if(e instanceof n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.WeatherMapping)return e;var o=new n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.WeatherMapping;switch(e.colorAbgr!=null&&(o.colorAbgr=e.colorAbgr>>>0),e.weatherType){case"NO_PRECIPITATION":case 0:o.weatherType=0;break;case"RAIN":case 1:o.weatherType=1;break;case"SNOW":case 2:o.weatherType=2;break}return e.elongation!=null&&(o.elongation=Number(e.elongation)),e.opacity!=null&&(o.opacity=Number(e.opacity)),e.fogDensity!=null&&(o.fogDensity=Number(e.fogDensity)),e.speed0!=null&&(o.speed0=Number(e.speed0)),e.speed1!=null&&(o.speed1=Number(e.speed1)),e.speed2!=null&&(o.speed2=Number(e.speed2)),e.speed3!=null&&(o.speed3=Number(e.speed3)),o},r.toObject=function(e,o){o||(o={});var a={};return o.defaults&&(a.colorAbgr=0,a.weatherType=o.enums===String?"NO_PRECIPITATION":0,a.elongation=1,a.opacity=0,a.fogDensity=0,a.speed0=0,a.speed1=0,a.speed2=0,a.speed3=0),e.colorAbgr!=null&&e.hasOwnProperty("colorAbgr")&&(a.colorAbgr=e.colorAbgr),e.weatherType!=null&&e.hasOwnProperty("weatherType")&&(a.weatherType=o.enums===String?n.keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.WeatherMapping.WeatherType[e.weatherType]:e.weatherType),e.elongation!=null&&e.hasOwnProperty("elongation")&&(a.elongation=o.json&&!isFinite(e.elongation)?String(e.elongation):e.elongation),e.opacity!=null&&e.hasOwnProperty("opacity")&&(a.opacity=o.json&&!isFinite(e.opacity)?String(e.opacity):e.opacity),e.fogDensity!=null&&e.hasOwnProperty("fogDensity")&&(a.fogDensity=o.json&&!isFinite(e.fogDensity)?String(e.fogDensity):e.fogDensity),e.speed0!=null&&e.hasOwnProperty("speed0")&&(a.speed0=o.json&&!isFinite(e.speed0)?String(e.speed0):e.speed0),e.speed1!=null&&e.hasOwnProperty("speed1")&&(a.speed1=o.json&&!isFinite(e.speed1)?String(e.speed1):e.speed1),e.speed2!=null&&e.hasOwnProperty("speed2")&&(a.speed2=o.json&&!isFinite(e.speed2)?String(e.speed2):e.speed2),e.speed3!=null&&e.hasOwnProperty("speed3")&&(a.speed3=o.json&&!isFinite(e.speed3)?String(e.speed3):e.speed3),a},r.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},r.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/keyhole.dbroot.ClientOptionsProto.PrecipitationsOptions.WeatherMapping"},r.WeatherType=function(){var t={},e=Object.create(t);return e[t[0]="NO_PRECIPITATION"]=0,e[t[1]="RAIN"]=1,e[t[2]="SNOW"]=2,e}(),r}(),l}(),i.CaptureOptions=function(){function l(r){if(r)for(var t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return l.prototype.allowSaveAsImage=!0,l.prototype.maxFreeCaptureRes=2400,l.prototype.maxPremiumCaptureRes=4800,l.decode=function(t,e){t instanceof f||(t=f.create(t));for(var o=e===void 0?t.len:t.pos+e,a=new n.keyhole.dbroot.ClientOptionsProto.CaptureOptions;t.pos<o;){var p=t.uint32();switch(p>>>3){case 1:{a.allowSaveAsImage=t.bool();break}case 2:{a.maxFreeCaptureRes=t.int32();break}case 3:{a.maxPremiumCaptureRes=t.int32();break}default:t.skipType(p&7);break}}return a},l.verify=function(t){return typeof t!="object"||t===null?"object expected":t.allowSaveAsImage!=null&&t.hasOwnProperty("allowSaveAsImage")&&typeof t.allowSaveAsImage!="boolean"?"allowSaveAsImage: boolean expected":t.maxFreeCaptureRes!=null&&t.hasOwnProperty("maxFreeCaptureRes")&&!u.isInteger(t.maxFreeCaptureRes)?"maxFreeCaptureRes: integer expected":t.maxPremiumCaptureRes!=null&&t.hasOwnProperty("maxPremiumCaptureRes")&&!u.isInteger(t.maxPremiumCaptureRes)?"maxPremiumCaptureRes: integer expected":null},l.fromObject=function(t){if(t instanceof n.keyhole.dbroot.ClientOptionsProto.CaptureOptions)return t;var e=new n.keyhole.dbroot.ClientOptionsProto.CaptureOptions;return t.allowSaveAsImage!=null&&(e.allowSaveAsImage=!!t.allowSaveAsImage),t.maxFreeCaptureRes!=null&&(e.maxFreeCaptureRes=t.maxFreeCaptureRes|0),t.maxPremiumCaptureRes!=null&&(e.maxPremiumCaptureRes=t.maxPremiumCaptureRes|0),e},l.toObject=function(t,e){e||(e={});var o={};return e.defaults&&(o.allowSaveAsImage=!0,o.maxFreeCaptureRes=2400,o.maxPremiumCaptureRes=4800),t.allowSaveAsImage!=null&&t.hasOwnProperty("allowSaveAsImage")&&(o.allowSaveAsImage=t.allowSaveAsImage),t.maxFreeCaptureRes!=null&&t.hasOwnProperty("maxFreeCaptureRes")&&(o.maxFreeCaptureRes=t.maxFreeCaptureRes),t.maxPremiumCaptureRes!=null&&t.hasOwnProperty("maxPremiumCaptureRes")&&(o.maxPremiumCaptureRes=t.maxPremiumCaptureRes),o},l.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},l.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/keyhole.dbroot.ClientOptionsProto.CaptureOptions"},l}(),i.MapsOptions=function(){function l(r){if(r)for(var t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return l.prototype.enableMaps=!1,l.prototype.docsAutoDownloadEnabled=!1,l.prototype.docsAutoDownloadInterval=0,l.prototype.docsAutoUploadEnabled=!1,l.prototype.docsAutoUploadDelay=0,l.decode=function(t,e){t instanceof f||(t=f.create(t));for(var o=e===void 0?t.len:t.pos+e,a=new n.keyhole.dbroot.ClientOptionsProto.MapsOptions;t.pos<o;){var p=t.uint32();switch(p>>>3){case 1:{a.enableMaps=t.bool();break}case 2:{a.docsAutoDownloadEnabled=t.bool();break}case 3:{a.docsAutoDownloadInterval=t.int32();break}case 4:{a.docsAutoUploadEnabled=t.bool();break}case 5:{a.docsAutoUploadDelay=t.int32();break}default:t.skipType(p&7);break}}return a},l.verify=function(t){return typeof t!="object"||t===null?"object expected":t.enableMaps!=null&&t.hasOwnProperty("enableMaps")&&typeof t.enableMaps!="boolean"?"enableMaps: boolean expected":t.docsAutoDownloadEnabled!=null&&t.hasOwnProperty("docsAutoDownloadEnabled")&&typeof t.docsAutoDownloadEnabled!="boolean"?"docsAutoDownloadEnabled: boolean expected":t.docsAutoDownloadInterval!=null&&t.hasOwnProperty("docsAutoDownloadInterval")&&!u.isInteger(t.docsAutoDownloadInterval)?"docsAutoDownloadInterval: integer expected":t.docsAutoUploadEnabled!=null&&t.hasOwnProperty("docsAutoUploadEnabled")&&typeof t.docsAutoUploadEnabled!="boolean"?"docsAutoUploadEnabled: boolean expected":t.docsAutoUploadDelay!=null&&t.hasOwnProperty("docsAutoUploadDelay")&&!u.isInteger(t.docsAutoUploadDelay)?"docsAutoUploadDelay: integer expected":null},l.fromObject=function(t){if(t instanceof n.keyhole.dbroot.ClientOptionsProto.MapsOptions)return t;var e=new n.keyhole.dbroot.ClientOptionsProto.MapsOptions;return t.enableMaps!=null&&(e.enableMaps=!!t.enableMaps),t.docsAutoDownloadEnabled!=null&&(e.docsAutoDownloadEnabled=!!t.docsAutoDownloadEnabled),t.docsAutoDownloadInterval!=null&&(e.docsAutoDownloadInterval=t.docsAutoDownloadInterval|0),t.docsAutoUploadEnabled!=null&&(e.docsAutoUploadEnabled=!!t.docsAutoUploadEnabled),t.docsAutoUploadDelay!=null&&(e.docsAutoUploadDelay=t.docsAutoUploadDelay|0),e},l.toObject=function(t,e){e||(e={});var o={};return e.defaults&&(o.enableMaps=!1,o.docsAutoDownloadEnabled=!1,o.docsAutoDownloadInterval=0,o.docsAutoUploadEnabled=!1,o.docsAutoUploadDelay=0),t.enableMaps!=null&&t.hasOwnProperty("enableMaps")&&(o.enableMaps=t.enableMaps),t.docsAutoDownloadEnabled!=null&&t.hasOwnProperty("docsAutoDownloadEnabled")&&(o.docsAutoDownloadEnabled=t.docsAutoDownloadEnabled),t.docsAutoDownloadInterval!=null&&t.hasOwnProperty("docsAutoDownloadInterval")&&(o.docsAutoDownloadInterval=t.docsAutoDownloadInterval),t.docsAutoUploadEnabled!=null&&t.hasOwnProperty("docsAutoUploadEnabled")&&(o.docsAutoUploadEnabled=t.docsAutoUploadEnabled),t.docsAutoUploadDelay!=null&&t.hasOwnProperty("docsAutoUploadDelay")&&(o.docsAutoUploadDelay=t.docsAutoUploadDelay),o},l.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},l.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/keyhole.dbroot.ClientOptionsProto.MapsOptions"},l}(),i}(),c.FetchingOptionsProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.maxRequestsPerQuery=1,i.prototype.forceMaxRequestsPerQuery=!1,i.prototype.sortBatches=!1,i.prototype.maxDrawable=2,i.prototype.maxImagery=2,i.prototype.maxTerrain=5,i.prototype.maxQuadtree=5,i.prototype.maxDioramaMetadata=1,i.prototype.maxDioramaData=0,i.prototype.maxConsumerFetchRatio=1,i.prototype.maxProEcFetchRatio=0,i.prototype.safeOverallQps=0,i.prototype.safeImageryQps=0,i.prototype.domainsForHttps="google.com gstatic.com",i.prototype.hostsForHttp="",i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.FetchingOptionsProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.maxRequestsPerQuery=r.int32();break}case 12:{o.forceMaxRequestsPerQuery=r.bool();break}case 13:{o.sortBatches=r.bool();break}case 2:{o.maxDrawable=r.int32();break}case 3:{o.maxImagery=r.int32();break}case 4:{o.maxTerrain=r.int32();break}case 5:{o.maxQuadtree=r.int32();break}case 6:{o.maxDioramaMetadata=r.int32();break}case 7:{o.maxDioramaData=r.int32();break}case 8:{o.maxConsumerFetchRatio=r.float();break}case 9:{o.maxProEcFetchRatio=r.float();break}case 10:{o.safeOverallQps=r.float();break}case 11:{o.safeImageryQps=r.float();break}case 14:{o.domainsForHttps=r.string();break}case 15:{o.hostsForHttp=r.string();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":r.maxRequestsPerQuery!=null&&r.hasOwnProperty("maxRequestsPerQuery")&&!u.isInteger(r.maxRequestsPerQuery)?"maxRequestsPerQuery: integer expected":r.forceMaxRequestsPerQuery!=null&&r.hasOwnProperty("forceMaxRequestsPerQuery")&&typeof r.forceMaxRequestsPerQuery!="boolean"?"forceMaxRequestsPerQuery: boolean expected":r.sortBatches!=null&&r.hasOwnProperty("sortBatches")&&typeof r.sortBatches!="boolean"?"sortBatches: boolean expected":r.maxDrawable!=null&&r.hasOwnProperty("maxDrawable")&&!u.isInteger(r.maxDrawable)?"maxDrawable: integer expected":r.maxImagery!=null&&r.hasOwnProperty("maxImagery")&&!u.isInteger(r.maxImagery)?"maxImagery: integer expected":r.maxTerrain!=null&&r.hasOwnProperty("maxTerrain")&&!u.isInteger(r.maxTerrain)?"maxTerrain: integer expected":r.maxQuadtree!=null&&r.hasOwnProperty("maxQuadtree")&&!u.isInteger(r.maxQuadtree)?"maxQuadtree: integer expected":r.maxDioramaMetadata!=null&&r.hasOwnProperty("maxDioramaMetadata")&&!u.isInteger(r.maxDioramaMetadata)?"maxDioramaMetadata: integer expected":r.maxDioramaData!=null&&r.hasOwnProperty("maxDioramaData")&&!u.isInteger(r.maxDioramaData)?"maxDioramaData: integer expected":r.maxConsumerFetchRatio!=null&&r.hasOwnProperty("maxConsumerFetchRatio")&&typeof r.maxConsumerFetchRatio!="number"?"maxConsumerFetchRatio: number expected":r.maxProEcFetchRatio!=null&&r.hasOwnProperty("maxProEcFetchRatio")&&typeof r.maxProEcFetchRatio!="number"?"maxProEcFetchRatio: number expected":r.safeOverallQps!=null&&r.hasOwnProperty("safeOverallQps")&&typeof r.safeOverallQps!="number"?"safeOverallQps: number expected":r.safeImageryQps!=null&&r.hasOwnProperty("safeImageryQps")&&typeof r.safeImageryQps!="number"?"safeImageryQps: number expected":r.domainsForHttps!=null&&r.hasOwnProperty("domainsForHttps")&&!u.isString(r.domainsForHttps)?"domainsForHttps: string expected":r.hostsForHttp!=null&&r.hasOwnProperty("hostsForHttp")&&!u.isString(r.hostsForHttp)?"hostsForHttp: string expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.FetchingOptionsProto)return r;var t=new n.keyhole.dbroot.FetchingOptionsProto;return r.maxRequestsPerQuery!=null&&(t.maxRequestsPerQuery=r.maxRequestsPerQuery|0),r.forceMaxRequestsPerQuery!=null&&(t.forceMaxRequestsPerQuery=!!r.forceMaxRequestsPerQuery),r.sortBatches!=null&&(t.sortBatches=!!r.sortBatches),r.maxDrawable!=null&&(t.maxDrawable=r.maxDrawable|0),r.maxImagery!=null&&(t.maxImagery=r.maxImagery|0),r.maxTerrain!=null&&(t.maxTerrain=r.maxTerrain|0),r.maxQuadtree!=null&&(t.maxQuadtree=r.maxQuadtree|0),r.maxDioramaMetadata!=null&&(t.maxDioramaMetadata=r.maxDioramaMetadata|0),r.maxDioramaData!=null&&(t.maxDioramaData=r.maxDioramaData|0),r.maxConsumerFetchRatio!=null&&(t.maxConsumerFetchRatio=Number(r.maxConsumerFetchRatio)),r.maxProEcFetchRatio!=null&&(t.maxProEcFetchRatio=Number(r.maxProEcFetchRatio)),r.safeOverallQps!=null&&(t.safeOverallQps=Number(r.safeOverallQps)),r.safeImageryQps!=null&&(t.safeImageryQps=Number(r.safeImageryQps)),r.domainsForHttps!=null&&(t.domainsForHttps=String(r.domainsForHttps)),r.hostsForHttp!=null&&(t.hostsForHttp=String(r.hostsForHttp)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.maxRequestsPerQuery=1,e.maxDrawable=2,e.maxImagery=2,e.maxTerrain=5,e.maxQuadtree=5,e.maxDioramaMetadata=1,e.maxDioramaData=0,e.maxConsumerFetchRatio=1,e.maxProEcFetchRatio=0,e.safeOverallQps=0,e.safeImageryQps=0,e.forceMaxRequestsPerQuery=!1,e.sortBatches=!1,e.domainsForHttps="google.com gstatic.com",e.hostsForHttp=""),r.maxRequestsPerQuery!=null&&r.hasOwnProperty("maxRequestsPerQuery")&&(e.maxRequestsPerQuery=r.maxRequestsPerQuery),r.maxDrawable!=null&&r.hasOwnProperty("maxDrawable")&&(e.maxDrawable=r.maxDrawable),r.maxImagery!=null&&r.hasOwnProperty("maxImagery")&&(e.maxImagery=r.maxImagery),r.maxTerrain!=null&&r.hasOwnProperty("maxTerrain")&&(e.maxTerrain=r.maxTerrain),r.maxQuadtree!=null&&r.hasOwnProperty("maxQuadtree")&&(e.maxQuadtree=r.maxQuadtree),r.maxDioramaMetadata!=null&&r.hasOwnProperty("maxDioramaMetadata")&&(e.maxDioramaMetadata=r.maxDioramaMetadata),r.maxDioramaData!=null&&r.hasOwnProperty("maxDioramaData")&&(e.maxDioramaData=r.maxDioramaData),r.maxConsumerFetchRatio!=null&&r.hasOwnProperty("maxConsumerFetchRatio")&&(e.maxConsumerFetchRatio=t.json&&!isFinite(r.maxConsumerFetchRatio)?String(r.maxConsumerFetchRatio):r.maxConsumerFetchRatio),r.maxProEcFetchRatio!=null&&r.hasOwnProperty("maxProEcFetchRatio")&&(e.maxProEcFetchRatio=t.json&&!isFinite(r.maxProEcFetchRatio)?String(r.maxProEcFetchRatio):r.maxProEcFetchRatio),r.safeOverallQps!=null&&r.hasOwnProperty("safeOverallQps")&&(e.safeOverallQps=t.json&&!isFinite(r.safeOverallQps)?String(r.safeOverallQps):r.safeOverallQps),r.safeImageryQps!=null&&r.hasOwnProperty("safeImageryQps")&&(e.safeImageryQps=t.json&&!isFinite(r.safeImageryQps)?String(r.safeImageryQps):r.safeImageryQps),r.forceMaxRequestsPerQuery!=null&&r.hasOwnProperty("forceMaxRequestsPerQuery")&&(e.forceMaxRequestsPerQuery=r.forceMaxRequestsPerQuery),r.sortBatches!=null&&r.hasOwnProperty("sortBatches")&&(e.sortBatches=r.sortBatches),r.domainsForHttps!=null&&r.hasOwnProperty("domainsForHttps")&&(e.domainsForHttps=r.domainsForHttps),r.hostsForHttp!=null&&r.hasOwnProperty("hostsForHttp")&&(e.hostsForHttp=r.hostsForHttp),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.FetchingOptionsProto"},i}(),c.TimeMachineOptionsProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.serverUrl="",i.prototype.isTimemachine=!1,i.prototype.dwellTimeMs=500,i.prototype.discoverabilityAltitudeMeters=15e3,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.TimeMachineOptionsProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.serverUrl=r.string();break}case 2:{o.isTimemachine=r.bool();break}case 3:{o.dwellTimeMs=r.int32();break}case 4:{o.discoverabilityAltitudeMeters=r.int32();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":r.serverUrl!=null&&r.hasOwnProperty("serverUrl")&&!u.isString(r.serverUrl)?"serverUrl: string expected":r.isTimemachine!=null&&r.hasOwnProperty("isTimemachine")&&typeof r.isTimemachine!="boolean"?"isTimemachine: boolean expected":r.dwellTimeMs!=null&&r.hasOwnProperty("dwellTimeMs")&&!u.isInteger(r.dwellTimeMs)?"dwellTimeMs: integer expected":r.discoverabilityAltitudeMeters!=null&&r.hasOwnProperty("discoverabilityAltitudeMeters")&&!u.isInteger(r.discoverabilityAltitudeMeters)?"discoverabilityAltitudeMeters: integer expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.TimeMachineOptionsProto)return r;var t=new n.keyhole.dbroot.TimeMachineOptionsProto;return r.serverUrl!=null&&(t.serverUrl=String(r.serverUrl)),r.isTimemachine!=null&&(t.isTimemachine=!!r.isTimemachine),r.dwellTimeMs!=null&&(t.dwellTimeMs=r.dwellTimeMs|0),r.discoverabilityAltitudeMeters!=null&&(t.discoverabilityAltitudeMeters=r.discoverabilityAltitudeMeters|0),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.serverUrl="",e.isTimemachine=!1,e.dwellTimeMs=500,e.discoverabilityAltitudeMeters=15e3),r.serverUrl!=null&&r.hasOwnProperty("serverUrl")&&(e.serverUrl=r.serverUrl),r.isTimemachine!=null&&r.hasOwnProperty("isTimemachine")&&(e.isTimemachine=r.isTimemachine),r.dwellTimeMs!=null&&r.hasOwnProperty("dwellTimeMs")&&(e.dwellTimeMs=r.dwellTimeMs),r.discoverabilityAltitudeMeters!=null&&r.hasOwnProperty("discoverabilityAltitudeMeters")&&(e.discoverabilityAltitudeMeters=r.discoverabilityAltitudeMeters),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.TimeMachineOptionsProto"},i}(),c.AutopiaOptionsProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.metadataServerUrl="http://cbk0.google.com/cbk",i.prototype.depthmapServerUrl="http://cbk0.google.com/cbk",i.prototype.coverageOverlayUrl="",i.prototype.maxImageryQps=0,i.prototype.maxMetadataDepthmapQps=0,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.AutopiaOptionsProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.metadataServerUrl=r.string();break}case 2:{o.depthmapServerUrl=r.string();break}case 3:{o.coverageOverlayUrl=r.string();break}case 4:{o.maxImageryQps=r.float();break}case 5:{o.maxMetadataDepthmapQps=r.float();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":r.metadataServerUrl!=null&&r.hasOwnProperty("metadataServerUrl")&&!u.isString(r.metadataServerUrl)?"metadataServerUrl: string expected":r.depthmapServerUrl!=null&&r.hasOwnProperty("depthmapServerUrl")&&!u.isString(r.depthmapServerUrl)?"depthmapServerUrl: string expected":r.coverageOverlayUrl!=null&&r.hasOwnProperty("coverageOverlayUrl")&&!u.isString(r.coverageOverlayUrl)?"coverageOverlayUrl: string expected":r.maxImageryQps!=null&&r.hasOwnProperty("maxImageryQps")&&typeof r.maxImageryQps!="number"?"maxImageryQps: number expected":r.maxMetadataDepthmapQps!=null&&r.hasOwnProperty("maxMetadataDepthmapQps")&&typeof r.maxMetadataDepthmapQps!="number"?"maxMetadataDepthmapQps: number expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.AutopiaOptionsProto)return r;var t=new n.keyhole.dbroot.AutopiaOptionsProto;return r.metadataServerUrl!=null&&(t.metadataServerUrl=String(r.metadataServerUrl)),r.depthmapServerUrl!=null&&(t.depthmapServerUrl=String(r.depthmapServerUrl)),r.coverageOverlayUrl!=null&&(t.coverageOverlayUrl=String(r.coverageOverlayUrl)),r.maxImageryQps!=null&&(t.maxImageryQps=Number(r.maxImageryQps)),r.maxMetadataDepthmapQps!=null&&(t.maxMetadataDepthmapQps=Number(r.maxMetadataDepthmapQps)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.metadataServerUrl="http://cbk0.google.com/cbk",e.depthmapServerUrl="http://cbk0.google.com/cbk",e.coverageOverlayUrl="",e.maxImageryQps=0,e.maxMetadataDepthmapQps=0),r.metadataServerUrl!=null&&r.hasOwnProperty("metadataServerUrl")&&(e.metadataServerUrl=r.metadataServerUrl),r.depthmapServerUrl!=null&&r.hasOwnProperty("depthmapServerUrl")&&(e.depthmapServerUrl=r.depthmapServerUrl),r.coverageOverlayUrl!=null&&r.hasOwnProperty("coverageOverlayUrl")&&(e.coverageOverlayUrl=r.coverageOverlayUrl),r.maxImageryQps!=null&&r.hasOwnProperty("maxImageryQps")&&(e.maxImageryQps=t.json&&!isFinite(r.maxImageryQps)?String(r.maxImageryQps):r.maxImageryQps),r.maxMetadataDepthmapQps!=null&&r.hasOwnProperty("maxMetadataDepthmapQps")&&(e.maxMetadataDepthmapQps=t.json&&!isFinite(r.maxMetadataDepthmapQps)?String(r.maxMetadataDepthmapQps):r.maxMetadataDepthmapQps),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.AutopiaOptionsProto"},i}(),c.CSIOptionsProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.samplingPercentage=0,i.prototype.experimentId="",i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.CSIOptionsProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.samplingPercentage=r.int32();break}case 2:{o.experimentId=r.string();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":r.samplingPercentage!=null&&r.hasOwnProperty("samplingPercentage")&&!u.isInteger(r.samplingPercentage)?"samplingPercentage: integer expected":r.experimentId!=null&&r.hasOwnProperty("experimentId")&&!u.isString(r.experimentId)?"experimentId: string expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.CSIOptionsProto)return r;var t=new n.keyhole.dbroot.CSIOptionsProto;return r.samplingPercentage!=null&&(t.samplingPercentage=r.samplingPercentage|0),r.experimentId!=null&&(t.experimentId=String(r.experimentId)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.samplingPercentage=0,e.experimentId=""),r.samplingPercentage!=null&&r.hasOwnProperty("samplingPercentage")&&(e.samplingPercentage=r.samplingPercentage),r.experimentId!=null&&r.hasOwnProperty("experimentId")&&(e.experimentId=r.experimentId),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.CSIOptionsProto"},i}(),c.SearchTabProto=function(){function i(l){if(this.inputBox=[],l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.isVisible=!1,i.prototype.tabLabel=null,i.prototype.baseUrl="",i.prototype.viewportPrefix="",i.prototype.inputBox=u.emptyArray,i.prototype.requirement=null,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.SearchTabProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.isVisible=r.bool();break}case 2:{o.tabLabel=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 3:{o.baseUrl=r.string();break}case 4:{o.viewportPrefix=r.string();break}case 5:{o.inputBox&&o.inputBox.length||(o.inputBox=[]),o.inputBox.push(n.keyhole.dbroot.SearchTabProto.InputBoxInfo.decode(r,r.uint32()));break}case 6:{o.requirement=n.keyhole.dbroot.RequirementProto.decode(r,r.uint32());break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("isVisible"))throw u.ProtocolError("missing required 'isVisible'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(typeof r.isVisible!="boolean")return"isVisible: boolean expected";if(r.tabLabel!=null&&r.hasOwnProperty("tabLabel")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.tabLabel);if(t)return"tabLabel."+t}if(r.baseUrl!=null&&r.hasOwnProperty("baseUrl")&&!u.isString(r.baseUrl))return"baseUrl: string expected";if(r.viewportPrefix!=null&&r.hasOwnProperty("viewportPrefix")&&!u.isString(r.viewportPrefix))return"viewportPrefix: string expected";if(r.inputBox!=null&&r.hasOwnProperty("inputBox")){if(!Array.isArray(r.inputBox))return"inputBox: array expected";for(var e=0;e<r.inputBox.length;++e){var t=n.keyhole.dbroot.SearchTabProto.InputBoxInfo.verify(r.inputBox[e]);if(t)return"inputBox."+t}}if(r.requirement!=null&&r.hasOwnProperty("requirement")){var t=n.keyhole.dbroot.RequirementProto.verify(r.requirement);if(t)return"requirement."+t}return null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.SearchTabProto)return r;var t=new n.keyhole.dbroot.SearchTabProto;if(r.isVisible!=null&&(t.isVisible=!!r.isVisible),r.tabLabel!=null){if(typeof r.tabLabel!="object")throw TypeError(".keyhole.dbroot.SearchTabProto.tabLabel: object expected");t.tabLabel=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.tabLabel)}if(r.baseUrl!=null&&(t.baseUrl=String(r.baseUrl)),r.viewportPrefix!=null&&(t.viewportPrefix=String(r.viewportPrefix)),r.inputBox){if(!Array.isArray(r.inputBox))throw TypeError(".keyhole.dbroot.SearchTabProto.inputBox: array expected");t.inputBox=[];for(var e=0;e<r.inputBox.length;++e){if(typeof r.inputBox[e]!="object")throw TypeError(".keyhole.dbroot.SearchTabProto.inputBox: object expected");t.inputBox[e]=n.keyhole.dbroot.SearchTabProto.InputBoxInfo.fromObject(r.inputBox[e])}}if(r.requirement!=null){if(typeof r.requirement!="object")throw TypeError(".keyhole.dbroot.SearchTabProto.requirement: object expected");t.requirement=n.keyhole.dbroot.RequirementProto.fromObject(r.requirement)}return t},i.toObject=function(r,t){t||(t={});var e={};if((t.arrays||t.defaults)&&(e.inputBox=[]),t.defaults&&(e.isVisible=!1,e.tabLabel=null,e.baseUrl="",e.viewportPrefix="",e.requirement=null),r.isVisible!=null&&r.hasOwnProperty("isVisible")&&(e.isVisible=r.isVisible),r.tabLabel!=null&&r.hasOwnProperty("tabLabel")&&(e.tabLabel=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.tabLabel,t)),r.baseUrl!=null&&r.hasOwnProperty("baseUrl")&&(e.baseUrl=r.baseUrl),r.viewportPrefix!=null&&r.hasOwnProperty("viewportPrefix")&&(e.viewportPrefix=r.viewportPrefix),r.inputBox&&r.inputBox.length){e.inputBox=[];for(var o=0;o<r.inputBox.length;++o)e.inputBox[o]=n.keyhole.dbroot.SearchTabProto.InputBoxInfo.toObject(r.inputBox[o],t)}return r.requirement!=null&&r.hasOwnProperty("requirement")&&(e.requirement=n.keyhole.dbroot.RequirementProto.toObject(r.requirement,t)),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.SearchTabProto"},i.InputBoxInfo=function(){function l(r){if(r)for(var t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return l.prototype.label=null,l.prototype.queryVerb="",l.prototype.queryPrepend="",l.decode=function(t,e){t instanceof f||(t=f.create(t));for(var o=e===void 0?t.len:t.pos+e,a=new n.keyhole.dbroot.SearchTabProto.InputBoxInfo;t.pos<o;){var p=t.uint32();switch(p>>>3){case 1:{a.label=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}case 2:{a.queryVerb=t.string();break}case 3:{a.queryPrepend=t.string();break}default:t.skipType(p&7);break}}if(!a.hasOwnProperty("label"))throw u.ProtocolError("missing required 'label'",{instance:a});if(!a.hasOwnProperty("queryVerb"))throw u.ProtocolError("missing required 'queryVerb'",{instance:a});return a},l.verify=function(t){if(typeof t!="object"||t===null)return"object expected";{var e=n.keyhole.dbroot.StringIdOrValueProto.verify(t.label);if(e)return"label."+e}return u.isString(t.queryVerb)?t.queryPrepend!=null&&t.hasOwnProperty("queryPrepend")&&!u.isString(t.queryPrepend)?"queryPrepend: string expected":null:"queryVerb: string expected"},l.fromObject=function(t){if(t instanceof n.keyhole.dbroot.SearchTabProto.InputBoxInfo)return t;var e=new n.keyhole.dbroot.SearchTabProto.InputBoxInfo;if(t.label!=null){if(typeof t.label!="object")throw TypeError(".keyhole.dbroot.SearchTabProto.InputBoxInfo.label: object expected");e.label=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.label)}return t.queryVerb!=null&&(e.queryVerb=String(t.queryVerb)),t.queryPrepend!=null&&(e.queryPrepend=String(t.queryPrepend)),e},l.toObject=function(t,e){e||(e={});var o={};return e.defaults&&(o.label=null,o.queryVerb="",o.queryPrepend=""),t.label!=null&&t.hasOwnProperty("label")&&(o.label=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.label,e)),t.queryVerb!=null&&t.hasOwnProperty("queryVerb")&&(o.queryVerb=t.queryVerb),t.queryPrepend!=null&&t.hasOwnProperty("queryPrepend")&&(o.queryPrepend=t.queryPrepend),o},l.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},l.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/keyhole.dbroot.SearchTabProto.InputBoxInfo"},l}(),i}(),c.CobrandProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.logoUrl="",i.prototype.xCoord=null,i.prototype.yCoord=null,i.prototype.tiePoint=6,i.prototype.screenSize=0,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.CobrandProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.logoUrl=r.string();break}case 2:{o.xCoord=n.keyhole.dbroot.CobrandProto.Coord.decode(r,r.uint32());break}case 3:{o.yCoord=n.keyhole.dbroot.CobrandProto.Coord.decode(r,r.uint32());break}case 4:{o.tiePoint=r.int32();break}case 5:{o.screenSize=r.double();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("logoUrl"))throw u.ProtocolError("missing required 'logoUrl'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(!u.isString(r.logoUrl))return"logoUrl: string expected";if(r.xCoord!=null&&r.hasOwnProperty("xCoord")){var t=n.keyhole.dbroot.CobrandProto.Coord.verify(r.xCoord);if(t)return"xCoord."+t}if(r.yCoord!=null&&r.hasOwnProperty("yCoord")){var t=n.keyhole.dbroot.CobrandProto.Coord.verify(r.yCoord);if(t)return"yCoord."+t}if(r.tiePoint!=null&&r.hasOwnProperty("tiePoint"))switch(r.tiePoint){default:return"tiePoint: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:break}return r.screenSize!=null&&r.hasOwnProperty("screenSize")&&typeof r.screenSize!="number"?"screenSize: number expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.CobrandProto)return r;var t=new n.keyhole.dbroot.CobrandProto;if(r.logoUrl!=null&&(t.logoUrl=String(r.logoUrl)),r.xCoord!=null){if(typeof r.xCoord!="object")throw TypeError(".keyhole.dbroot.CobrandProto.xCoord: object expected");t.xCoord=n.keyhole.dbroot.CobrandProto.Coord.fromObject(r.xCoord)}if(r.yCoord!=null){if(typeof r.yCoord!="object")throw TypeError(".keyhole.dbroot.CobrandProto.yCoord: object expected");t.yCoord=n.keyhole.dbroot.CobrandProto.Coord.fromObject(r.yCoord)}switch(r.tiePoint){case"TOP_LEFT":case 0:t.tiePoint=0;break;case"TOP_CENTER":case 1:t.tiePoint=1;break;case"TOP_RIGHT":case 2:t.tiePoint=2;break;case"MID_LEFT":case 3:t.tiePoint=3;break;case"MID_CENTER":case 4:t.tiePoint=4;break;case"MID_RIGHT":case 5:t.tiePoint=5;break;case"BOTTOM_LEFT":case 6:t.tiePoint=6;break;case"BOTTOM_CENTER":case 7:t.tiePoint=7;break;case"BOTTOM_RIGHT":case 8:t.tiePoint=8;break}return r.screenSize!=null&&(t.screenSize=Number(r.screenSize)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.logoUrl="",e.xCoord=null,e.yCoord=null,e.tiePoint=t.enums===String?"BOTTOM_LEFT":6,e.screenSize=0),r.logoUrl!=null&&r.hasOwnProperty("logoUrl")&&(e.logoUrl=r.logoUrl),r.xCoord!=null&&r.hasOwnProperty("xCoord")&&(e.xCoord=n.keyhole.dbroot.CobrandProto.Coord.toObject(r.xCoord,t)),r.yCoord!=null&&r.hasOwnProperty("yCoord")&&(e.yCoord=n.keyhole.dbroot.CobrandProto.Coord.toObject(r.yCoord,t)),r.tiePoint!=null&&r.hasOwnProperty("tiePoint")&&(e.tiePoint=t.enums===String?n.keyhole.dbroot.CobrandProto.TiePoint[r.tiePoint]:r.tiePoint),r.screenSize!=null&&r.hasOwnProperty("screenSize")&&(e.screenSize=t.json&&!isFinite(r.screenSize)?String(r.screenSize):r.screenSize),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.CobrandProto"},i.Coord=function(){function l(r){if(r)for(var t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return l.prototype.value=0,l.prototype.isRelative=!1,l.decode=function(t,e){t instanceof f||(t=f.create(t));for(var o=e===void 0?t.len:t.pos+e,a=new n.keyhole.dbroot.CobrandProto.Coord;t.pos<o;){var p=t.uint32();switch(p>>>3){case 1:{a.value=t.double();break}case 2:{a.isRelative=t.bool();break}default:t.skipType(p&7);break}}if(!a.hasOwnProperty("value"))throw u.ProtocolError("missing required 'value'",{instance:a});return a},l.verify=function(t){return typeof t!="object"||t===null?"object expected":typeof t.value!="number"?"value: number expected":t.isRelative!=null&&t.hasOwnProperty("isRelative")&&typeof t.isRelative!="boolean"?"isRelative: boolean expected":null},l.fromObject=function(t){if(t instanceof n.keyhole.dbroot.CobrandProto.Coord)return t;var e=new n.keyhole.dbroot.CobrandProto.Coord;return t.value!=null&&(e.value=Number(t.value)),t.isRelative!=null&&(e.isRelative=!!t.isRelative),e},l.toObject=function(t,e){e||(e={});var o={};return e.defaults&&(o.value=0,o.isRelative=!1),t.value!=null&&t.hasOwnProperty("value")&&(o.value=e.json&&!isFinite(t.value)?String(t.value):t.value),t.isRelative!=null&&t.hasOwnProperty("isRelative")&&(o.isRelative=t.isRelative),o},l.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},l.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/keyhole.dbroot.CobrandProto.Coord"},l}(),i.TiePoint=function(){var l={},r=Object.create(l);return r[l[0]="TOP_LEFT"]=0,r[l[1]="TOP_CENTER"]=1,r[l[2]="TOP_RIGHT"]=2,r[l[3]="MID_LEFT"]=3,r[l[4]="MID_CENTER"]=4,r[l[5]="MID_RIGHT"]=5,r[l[6]="BOTTOM_LEFT"]=6,r[l[7]="BOTTOM_CENTER"]=7,r[l[8]="BOTTOM_RIGHT"]=8,r}(),i}(),c.DatabaseDescriptionProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.databaseName=null,i.prototype.databaseUrl="",i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.DatabaseDescriptionProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.databaseName=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 2:{o.databaseUrl=r.string();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("databaseUrl"))throw u.ProtocolError("missing required 'databaseUrl'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(r.databaseName!=null&&r.hasOwnProperty("databaseName")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.databaseName);if(t)return"databaseName."+t}return u.isString(r.databaseUrl)?null:"databaseUrl: string expected"},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.DatabaseDescriptionProto)return r;var t=new n.keyhole.dbroot.DatabaseDescriptionProto;if(r.databaseName!=null){if(typeof r.databaseName!="object")throw TypeError(".keyhole.dbroot.DatabaseDescriptionProto.databaseName: object expected");t.databaseName=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.databaseName)}return r.databaseUrl!=null&&(t.databaseUrl=String(r.databaseUrl)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.databaseName=null,e.databaseUrl=""),r.databaseName!=null&&r.hasOwnProperty("databaseName")&&(e.databaseName=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.databaseName,t)),r.databaseUrl!=null&&r.hasOwnProperty("databaseUrl")&&(e.databaseUrl=r.databaseUrl),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.DatabaseDescriptionProto"},i}(),c.ConfigScriptProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.scriptName="",i.prototype.scriptData="",i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.ConfigScriptProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.scriptName=r.string();break}case 2:{o.scriptData=r.string();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("scriptName"))throw u.ProtocolError("missing required 'scriptName'",{instance:o});if(!o.hasOwnProperty("scriptData"))throw u.ProtocolError("missing required 'scriptData'",{instance:o});return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":u.isString(r.scriptName)?u.isString(r.scriptData)?null:"scriptData: string expected":"scriptName: string expected"},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.ConfigScriptProto)return r;var t=new n.keyhole.dbroot.ConfigScriptProto;return r.scriptName!=null&&(t.scriptName=String(r.scriptName)),r.scriptData!=null&&(t.scriptData=String(r.scriptData)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.scriptName="",e.scriptData=""),r.scriptName!=null&&r.hasOwnProperty("scriptName")&&(e.scriptName=r.scriptName),r.scriptData!=null&&r.hasOwnProperty("scriptData")&&(e.scriptData=r.scriptData),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.ConfigScriptProto"},i}(),c.SwoopParamsProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.startDistInMeters=0,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.SwoopParamsProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.startDistInMeters=r.double();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":r.startDistInMeters!=null&&r.hasOwnProperty("startDistInMeters")&&typeof r.startDistInMeters!="number"?"startDistInMeters: number expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.SwoopParamsProto)return r;var t=new n.keyhole.dbroot.SwoopParamsProto;return r.startDistInMeters!=null&&(t.startDistInMeters=Number(r.startDistInMeters)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.startDistInMeters=0),r.startDistInMeters!=null&&r.hasOwnProperty("startDistInMeters")&&(e.startDistInMeters=t.json&&!isFinite(r.startDistInMeters)?String(r.startDistInMeters):r.startDistInMeters),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.SwoopParamsProto"},i}(),c.PostingServerProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.name=null,i.prototype.baseUrl=null,i.prototype.postWizardPath=null,i.prototype.fileSubmitPath=null,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.PostingServerProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.name=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 2:{o.baseUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 3:{o.postWizardPath=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 4:{o.fileSubmitPath=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}default:r.skipType(a&7);break}}return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(r.name!=null&&r.hasOwnProperty("name")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.name);if(t)return"name."+t}if(r.baseUrl!=null&&r.hasOwnProperty("baseUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.baseUrl);if(t)return"baseUrl."+t}if(r.postWizardPath!=null&&r.hasOwnProperty("postWizardPath")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.postWizardPath);if(t)return"postWizardPath."+t}if(r.fileSubmitPath!=null&&r.hasOwnProperty("fileSubmitPath")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.fileSubmitPath);if(t)return"fileSubmitPath."+t}return null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.PostingServerProto)return r;var t=new n.keyhole.dbroot.PostingServerProto;if(r.name!=null){if(typeof r.name!="object")throw TypeError(".keyhole.dbroot.PostingServerProto.name: object expected");t.name=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.name)}if(r.baseUrl!=null){if(typeof r.baseUrl!="object")throw TypeError(".keyhole.dbroot.PostingServerProto.baseUrl: object expected");t.baseUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.baseUrl)}if(r.postWizardPath!=null){if(typeof r.postWizardPath!="object")throw TypeError(".keyhole.dbroot.PostingServerProto.postWizardPath: object expected");t.postWizardPath=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.postWizardPath)}if(r.fileSubmitPath!=null){if(typeof r.fileSubmitPath!="object")throw TypeError(".keyhole.dbroot.PostingServerProto.fileSubmitPath: object expected");t.fileSubmitPath=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.fileSubmitPath)}return t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.name=null,e.baseUrl=null,e.postWizardPath=null,e.fileSubmitPath=null),r.name!=null&&r.hasOwnProperty("name")&&(e.name=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.name,t)),r.baseUrl!=null&&r.hasOwnProperty("baseUrl")&&(e.baseUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.baseUrl,t)),r.postWizardPath!=null&&r.hasOwnProperty("postWizardPath")&&(e.postWizardPath=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.postWizardPath,t)),r.fileSubmitPath!=null&&r.hasOwnProperty("fileSubmitPath")&&(e.fileSubmitPath=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.fileSubmitPath,t)),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.PostingServerProto"},i}(),c.PlanetaryDatabaseProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.url=null,i.prototype.name=null,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.PlanetaryDatabaseProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.url=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 2:{o.name=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("url"))throw u.ProtocolError("missing required 'url'",{instance:o});if(!o.hasOwnProperty("name"))throw u.ProtocolError("missing required 'name'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";{var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.url);if(t)return"url."+t}{var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.name);if(t)return"name."+t}return null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.PlanetaryDatabaseProto)return r;var t=new n.keyhole.dbroot.PlanetaryDatabaseProto;if(r.url!=null){if(typeof r.url!="object")throw TypeError(".keyhole.dbroot.PlanetaryDatabaseProto.url: object expected");t.url=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.url)}if(r.name!=null){if(typeof r.name!="object")throw TypeError(".keyhole.dbroot.PlanetaryDatabaseProto.name: object expected");t.name=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.name)}return t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.url=null,e.name=null),r.url!=null&&r.hasOwnProperty("url")&&(e.url=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.url,t)),r.name!=null&&r.hasOwnProperty("name")&&(e.name=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.name,t)),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.PlanetaryDatabaseProto"},i}(),c.LogServerProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.url=null,i.prototype.enable=!1,i.prototype.throttlingFactor=1,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.LogServerProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.url=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 2:{o.enable=r.bool();break}case 3:{o.throttlingFactor=r.int32();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(r.url!=null&&r.hasOwnProperty("url")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.url);if(t)return"url."+t}return r.enable!=null&&r.hasOwnProperty("enable")&&typeof r.enable!="boolean"?"enable: boolean expected":r.throttlingFactor!=null&&r.hasOwnProperty("throttlingFactor")&&!u.isInteger(r.throttlingFactor)?"throttlingFactor: integer expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.LogServerProto)return r;var t=new n.keyhole.dbroot.LogServerProto;if(r.url!=null){if(typeof r.url!="object")throw TypeError(".keyhole.dbroot.LogServerProto.url: object expected");t.url=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.url)}return r.enable!=null&&(t.enable=!!r.enable),r.throttlingFactor!=null&&(t.throttlingFactor=r.throttlingFactor|0),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.url=null,e.enable=!1,e.throttlingFactor=1),r.url!=null&&r.hasOwnProperty("url")&&(e.url=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.url,t)),r.enable!=null&&r.hasOwnProperty("enable")&&(e.enable=r.enable),r.throttlingFactor!=null&&r.hasOwnProperty("throttlingFactor")&&(e.throttlingFactor=r.throttlingFactor),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.LogServerProto"},i}(),c.EndSnippetProto=function(){function i(l){if(this.mfeDomains=[],this.searchTab=[],this.cobrandInfo=[],this.validDatabase=[],this.configScript=[],this.planetaryDatabase=[],this.filmstripConfig=[],l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.model=null,i.prototype.authServerUrl=null,i.prototype.disableAuthentication=!1,i.prototype.mfeDomains=u.emptyArray,i.prototype.mfeLangParam="hl=$5Bhl5D",i.prototype.adsUrlPatterns="",i.prototype.reverseGeocoderUrl=null,i.prototype.reverseGeocoderProtocolVersion=3,i.prototype.skyDatabaseIsAvailable=!0,i.prototype.skyDatabaseUrl=null,i.prototype.defaultWebPageIntlUrl=null,i.prototype.numStartUpTips=17,i.prototype.startUpTipsUrl=null,i.prototype.numProStartUpTips=0,i.prototype.proStartUpTipsUrl=null,i.prototype.startupTipsIntlUrl=null,i.prototype.userGuideIntlUrl=null,i.prototype.supportCenterIntlUrl=null,i.prototype.businessListingIntlUrl=null,i.prototype.supportAnswerIntlUrl=null,i.prototype.supportTopicIntlUrl=null,i.prototype.supportRequestIntlUrl=null,i.prototype.earthIntlUrl=null,i.prototype.addContentUrl=null,i.prototype.sketchupNotInstalledUrl=null,i.prototype.sketchupErrorUrl=null,i.prototype.freeLicenseUrl=null,i.prototype.proLicenseUrl=null,i.prototype.tutorialUrl=null,i.prototype.keyboardShortcutsUrl=null,i.prototype.releaseNotesUrl=null,i.prototype.hideUserData=!1,i.prototype.useGeLogo=!0,i.prototype.dioramaDescriptionUrlBase=null,i.prototype.dioramaDefaultColor=4291281607,i.prototype.dioramaBlacklistUrl=null,i.prototype.clientOptions=null,i.prototype.fetchingOptions=null,i.prototype.timeMachineOptions=null,i.prototype.csiOptions=null,i.prototype.searchTab=u.emptyArray,i.prototype.cobrandInfo=u.emptyArray,i.prototype.validDatabase=u.emptyArray,i.prototype.configScript=u.emptyArray,i.prototype.deauthServerUrl=null,i.prototype.swoopParameters=null,i.prototype.bbsServerInfo=null,i.prototype.dataErrorServerInfo=null,i.prototype.planetaryDatabase=u.emptyArray,i.prototype.logServer=null,i.prototype.autopiaOptions=null,i.prototype.searchConfig=null,i.prototype.searchInfo=null,i.prototype.elevationServiceBaseUrl="http://maps.google.com/maps/api/elevation/",i.prototype.elevationProfileQueryDelay=500,i.prototype.proUpgradeUrl=null,i.prototype.earthCommunityUrl=null,i.prototype.googleMapsUrl=null,i.prototype.sharingUrl=null,i.prototype.privacyPolicyUrl=null,i.prototype.doGplusUserCheck=!1,i.prototype.rocktreeDataProto=null,i.prototype.filmstripConfig=u.emptyArray,i.prototype.showSigninButton=!1,i.prototype.proMeasureUpsellUrl=null,i.prototype.proPrintUpsellUrl=null,i.prototype.starDataProto=null,i.prototype.feedbackUrl=null,i.prototype.oauth2LoginUrl=null,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.EndSnippetProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.model=n.keyhole.dbroot.PlanetModelProto.decode(r,r.uint32());break}case 2:{o.authServerUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 3:{o.disableAuthentication=r.bool();break}case 4:{o.mfeDomains&&o.mfeDomains.length||(o.mfeDomains=[]),o.mfeDomains.push(n.keyhole.dbroot.MfeDomainFeaturesProto.decode(r,r.uint32()));break}case 5:{o.mfeLangParam=r.string();break}case 6:{o.adsUrlPatterns=r.string();break}case 7:{o.reverseGeocoderUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 8:{o.reverseGeocoderProtocolVersion=r.int32();break}case 9:{o.skyDatabaseIsAvailable=r.bool();break}case 10:{o.skyDatabaseUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 11:{o.defaultWebPageIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 12:{o.numStartUpTips=r.int32();break}case 13:{o.startUpTipsUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 51:{o.numProStartUpTips=r.int32();break}case 52:{o.proStartUpTipsUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 64:{o.startupTipsIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 14:{o.userGuideIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 15:{o.supportCenterIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 16:{o.businessListingIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 17:{o.supportAnswerIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 18:{o.supportTopicIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 19:{o.supportRequestIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 20:{o.earthIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 21:{o.addContentUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 22:{o.sketchupNotInstalledUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 23:{o.sketchupErrorUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 24:{o.freeLicenseUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 25:{o.proLicenseUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 48:{o.tutorialUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 49:{o.keyboardShortcutsUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 50:{o.releaseNotesUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 26:{o.hideUserData=r.bool();break}case 27:{o.useGeLogo=r.bool();break}case 28:{o.dioramaDescriptionUrlBase=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 29:{o.dioramaDefaultColor=r.uint32();break}case 53:{o.dioramaBlacklistUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 30:{o.clientOptions=n.keyhole.dbroot.ClientOptionsProto.decode(r,r.uint32());break}case 31:{o.fetchingOptions=n.keyhole.dbroot.FetchingOptionsProto.decode(r,r.uint32());break}case 32:{o.timeMachineOptions=n.keyhole.dbroot.TimeMachineOptionsProto.decode(r,r.uint32());break}case 33:{o.csiOptions=n.keyhole.dbroot.CSIOptionsProto.decode(r,r.uint32());break}case 34:{o.searchTab&&o.searchTab.length||(o.searchTab=[]),o.searchTab.push(n.keyhole.dbroot.SearchTabProto.decode(r,r.uint32()));break}case 35:{o.cobrandInfo&&o.cobrandInfo.length||(o.cobrandInfo=[]),o.cobrandInfo.push(n.keyhole.dbroot.CobrandProto.decode(r,r.uint32()));break}case 36:{o.validDatabase&&o.validDatabase.length||(o.validDatabase=[]),o.validDatabase.push(n.keyhole.dbroot.DatabaseDescriptionProto.decode(r,r.uint32()));break}case 37:{o.configScript&&o.configScript.length||(o.configScript=[]),o.configScript.push(n.keyhole.dbroot.ConfigScriptProto.decode(r,r.uint32()));break}case 38:{o.deauthServerUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 39:{o.swoopParameters=n.keyhole.dbroot.SwoopParamsProto.decode(r,r.uint32());break}case 40:{o.bbsServerInfo=n.keyhole.dbroot.PostingServerProto.decode(r,r.uint32());break}case 41:{o.dataErrorServerInfo=n.keyhole.dbroot.PostingServerProto.decode(r,r.uint32());break}case 42:{o.planetaryDatabase&&o.planetaryDatabase.length||(o.planetaryDatabase=[]),o.planetaryDatabase.push(n.keyhole.dbroot.PlanetaryDatabaseProto.decode(r,r.uint32()));break}case 43:{o.logServer=n.keyhole.dbroot.LogServerProto.decode(r,r.uint32());break}case 44:{o.autopiaOptions=n.keyhole.dbroot.AutopiaOptionsProto.decode(r,r.uint32());break}case 54:{o.searchConfig=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.decode(r,r.uint32());break}case 45:{o.searchInfo=n.keyhole.dbroot.EndSnippetProto.SearchInfoProto.decode(r,r.uint32());break}case 46:{o.elevationServiceBaseUrl=r.string();break}case 47:{o.elevationProfileQueryDelay=r.int32();break}case 55:{o.proUpgradeUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 56:{o.earthCommunityUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 57:{o.googleMapsUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 58:{o.sharingUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 59:{o.privacyPolicyUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 60:{o.doGplusUserCheck=r.bool();break}case 61:{o.rocktreeDataProto=n.keyhole.dbroot.EndSnippetProto.RockTreeDataProto.decode(r,r.uint32());break}case 62:{o.filmstripConfig&&o.filmstripConfig.length||(o.filmstripConfig=[]),o.filmstripConfig.push(n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.decode(r,r.uint32()));break}case 63:{o.showSigninButton=r.bool();break}case 65:{o.proMeasureUpsellUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 66:{o.proPrintUpsellUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 67:{o.starDataProto=n.keyhole.dbroot.EndSnippetProto.StarDataProto.decode(r,r.uint32());break}case 68:{o.feedbackUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 69:{o.oauth2LoginUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}default:r.skipType(a&7);break}}return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(r.model!=null&&r.hasOwnProperty("model")){var t=n.keyhole.dbroot.PlanetModelProto.verify(r.model);if(t)return"model."+t}if(r.authServerUrl!=null&&r.hasOwnProperty("authServerUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.authServerUrl);if(t)return"authServerUrl."+t}if(r.disableAuthentication!=null&&r.hasOwnProperty("disableAuthentication")&&typeof r.disableAuthentication!="boolean")return"disableAuthentication: boolean expected";if(r.mfeDomains!=null&&r.hasOwnProperty("mfeDomains")){if(!Array.isArray(r.mfeDomains))return"mfeDomains: array expected";for(var e=0;e<r.mfeDomains.length;++e){var t=n.keyhole.dbroot.MfeDomainFeaturesProto.verify(r.mfeDomains[e]);if(t)return"mfeDomains."+t}}if(r.mfeLangParam!=null&&r.hasOwnProperty("mfeLangParam")&&!u.isString(r.mfeLangParam))return"mfeLangParam: string expected";if(r.adsUrlPatterns!=null&&r.hasOwnProperty("adsUrlPatterns")&&!u.isString(r.adsUrlPatterns))return"adsUrlPatterns: string expected";if(r.reverseGeocoderUrl!=null&&r.hasOwnProperty("reverseGeocoderUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.reverseGeocoderUrl);if(t)return"reverseGeocoderUrl."+t}if(r.reverseGeocoderProtocolVersion!=null&&r.hasOwnProperty("reverseGeocoderProtocolVersion")&&!u.isInteger(r.reverseGeocoderProtocolVersion))return"reverseGeocoderProtocolVersion: integer expected";if(r.skyDatabaseIsAvailable!=null&&r.hasOwnProperty("skyDatabaseIsAvailable")&&typeof r.skyDatabaseIsAvailable!="boolean")return"skyDatabaseIsAvailable: boolean expected";if(r.skyDatabaseUrl!=null&&r.hasOwnProperty("skyDatabaseUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.skyDatabaseUrl);if(t)return"skyDatabaseUrl."+t}if(r.defaultWebPageIntlUrl!=null&&r.hasOwnProperty("defaultWebPageIntlUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.defaultWebPageIntlUrl);if(t)return"defaultWebPageIntlUrl."+t}if(r.numStartUpTips!=null&&r.hasOwnProperty("numStartUpTips")&&!u.isInteger(r.numStartUpTips))return"numStartUpTips: integer expected";if(r.startUpTipsUrl!=null&&r.hasOwnProperty("startUpTipsUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.startUpTipsUrl);if(t)return"startUpTipsUrl."+t}if(r.numProStartUpTips!=null&&r.hasOwnProperty("numProStartUpTips")&&!u.isInteger(r.numProStartUpTips))return"numProStartUpTips: integer expected";if(r.proStartUpTipsUrl!=null&&r.hasOwnProperty("proStartUpTipsUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.proStartUpTipsUrl);if(t)return"proStartUpTipsUrl."+t}if(r.startupTipsIntlUrl!=null&&r.hasOwnProperty("startupTipsIntlUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.startupTipsIntlUrl);if(t)return"startupTipsIntlUrl."+t}if(r.userGuideIntlUrl!=null&&r.hasOwnProperty("userGuideIntlUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.userGuideIntlUrl);if(t)return"userGuideIntlUrl."+t}if(r.supportCenterIntlUrl!=null&&r.hasOwnProperty("supportCenterIntlUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.supportCenterIntlUrl);if(t)return"supportCenterIntlUrl."+t}if(r.businessListingIntlUrl!=null&&r.hasOwnProperty("businessListingIntlUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.businessListingIntlUrl);if(t)return"businessListingIntlUrl."+t}if(r.supportAnswerIntlUrl!=null&&r.hasOwnProperty("supportAnswerIntlUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.supportAnswerIntlUrl);if(t)return"supportAnswerIntlUrl."+t}if(r.supportTopicIntlUrl!=null&&r.hasOwnProperty("supportTopicIntlUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.supportTopicIntlUrl);if(t)return"supportTopicIntlUrl."+t}if(r.supportRequestIntlUrl!=null&&r.hasOwnProperty("supportRequestIntlUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.supportRequestIntlUrl);if(t)return"supportRequestIntlUrl."+t}if(r.earthIntlUrl!=null&&r.hasOwnProperty("earthIntlUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.earthIntlUrl);if(t)return"earthIntlUrl."+t}if(r.addContentUrl!=null&&r.hasOwnProperty("addContentUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.addContentUrl);if(t)return"addContentUrl."+t}if(r.sketchupNotInstalledUrl!=null&&r.hasOwnProperty("sketchupNotInstalledUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.sketchupNotInstalledUrl);if(t)return"sketchupNotInstalledUrl."+t}if(r.sketchupErrorUrl!=null&&r.hasOwnProperty("sketchupErrorUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.sketchupErrorUrl);if(t)return"sketchupErrorUrl."+t}if(r.freeLicenseUrl!=null&&r.hasOwnProperty("freeLicenseUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.freeLicenseUrl);if(t)return"freeLicenseUrl."+t}if(r.proLicenseUrl!=null&&r.hasOwnProperty("proLicenseUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.proLicenseUrl);if(t)return"proLicenseUrl."+t}if(r.tutorialUrl!=null&&r.hasOwnProperty("tutorialUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.tutorialUrl);if(t)return"tutorialUrl."+t}if(r.keyboardShortcutsUrl!=null&&r.hasOwnProperty("keyboardShortcutsUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.keyboardShortcutsUrl);if(t)return"keyboardShortcutsUrl."+t}if(r.releaseNotesUrl!=null&&r.hasOwnProperty("releaseNotesUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.releaseNotesUrl);if(t)return"releaseNotesUrl."+t}if(r.hideUserData!=null&&r.hasOwnProperty("hideUserData")&&typeof r.hideUserData!="boolean")return"hideUserData: boolean expected";if(r.useGeLogo!=null&&r.hasOwnProperty("useGeLogo")&&typeof r.useGeLogo!="boolean")return"useGeLogo: boolean expected";if(r.dioramaDescriptionUrlBase!=null&&r.hasOwnProperty("dioramaDescriptionUrlBase")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.dioramaDescriptionUrlBase);if(t)return"dioramaDescriptionUrlBase."+t}if(r.dioramaDefaultColor!=null&&r.hasOwnProperty("dioramaDefaultColor")&&!u.isInteger(r.dioramaDefaultColor))return"dioramaDefaultColor: integer expected";if(r.dioramaBlacklistUrl!=null&&r.hasOwnProperty("dioramaBlacklistUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.dioramaBlacklistUrl);if(t)return"dioramaBlacklistUrl."+t}if(r.clientOptions!=null&&r.hasOwnProperty("clientOptions")){var t=n.keyhole.dbroot.ClientOptionsProto.verify(r.clientOptions);if(t)return"clientOptions."+t}if(r.fetchingOptions!=null&&r.hasOwnProperty("fetchingOptions")){var t=n.keyhole.dbroot.FetchingOptionsProto.verify(r.fetchingOptions);if(t)return"fetchingOptions."+t}if(r.timeMachineOptions!=null&&r.hasOwnProperty("timeMachineOptions")){var t=n.keyhole.dbroot.TimeMachineOptionsProto.verify(r.timeMachineOptions);if(t)return"timeMachineOptions."+t}if(r.csiOptions!=null&&r.hasOwnProperty("csiOptions")){var t=n.keyhole.dbroot.CSIOptionsProto.verify(r.csiOptions);if(t)return"csiOptions."+t}if(r.searchTab!=null&&r.hasOwnProperty("searchTab")){if(!Array.isArray(r.searchTab))return"searchTab: array expected";for(var e=0;e<r.searchTab.length;++e){var t=n.keyhole.dbroot.SearchTabProto.verify(r.searchTab[e]);if(t)return"searchTab."+t}}if(r.cobrandInfo!=null&&r.hasOwnProperty("cobrandInfo")){if(!Array.isArray(r.cobrandInfo))return"cobrandInfo: array expected";for(var e=0;e<r.cobrandInfo.length;++e){var t=n.keyhole.dbroot.CobrandProto.verify(r.cobrandInfo[e]);if(t)return"cobrandInfo."+t}}if(r.validDatabase!=null&&r.hasOwnProperty("validDatabase")){if(!Array.isArray(r.validDatabase))return"validDatabase: array expected";for(var e=0;e<r.validDatabase.length;++e){var t=n.keyhole.dbroot.DatabaseDescriptionProto.verify(r.validDatabase[e]);if(t)return"validDatabase."+t}}if(r.configScript!=null&&r.hasOwnProperty("configScript")){if(!Array.isArray(r.configScript))return"configScript: array expected";for(var e=0;e<r.configScript.length;++e){var t=n.keyhole.dbroot.ConfigScriptProto.verify(r.configScript[e]);if(t)return"configScript."+t}}if(r.deauthServerUrl!=null&&r.hasOwnProperty("deauthServerUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.deauthServerUrl);if(t)return"deauthServerUrl."+t}if(r.swoopParameters!=null&&r.hasOwnProperty("swoopParameters")){var t=n.keyhole.dbroot.SwoopParamsProto.verify(r.swoopParameters);if(t)return"swoopParameters."+t}if(r.bbsServerInfo!=null&&r.hasOwnProperty("bbsServerInfo")){var t=n.keyhole.dbroot.PostingServerProto.verify(r.bbsServerInfo);if(t)return"bbsServerInfo."+t}if(r.dataErrorServerInfo!=null&&r.hasOwnProperty("dataErrorServerInfo")){var t=n.keyhole.dbroot.PostingServerProto.verify(r.dataErrorServerInfo);if(t)return"dataErrorServerInfo."+t}if(r.planetaryDatabase!=null&&r.hasOwnProperty("planetaryDatabase")){if(!Array.isArray(r.planetaryDatabase))return"planetaryDatabase: array expected";for(var e=0;e<r.planetaryDatabase.length;++e){var t=n.keyhole.dbroot.PlanetaryDatabaseProto.verify(r.planetaryDatabase[e]);if(t)return"planetaryDatabase."+t}}if(r.logServer!=null&&r.hasOwnProperty("logServer")){var t=n.keyhole.dbroot.LogServerProto.verify(r.logServer);if(t)return"logServer."+t}if(r.autopiaOptions!=null&&r.hasOwnProperty("autopiaOptions")){var t=n.keyhole.dbroot.AutopiaOptionsProto.verify(r.autopiaOptions);if(t)return"autopiaOptions."+t}if(r.searchConfig!=null&&r.hasOwnProperty("searchConfig")){var t=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.verify(r.searchConfig);if(t)return"searchConfig."+t}if(r.searchInfo!=null&&r.hasOwnProperty("searchInfo")){var t=n.keyhole.dbroot.EndSnippetProto.SearchInfoProto.verify(r.searchInfo);if(t)return"searchInfo."+t}if(r.elevationServiceBaseUrl!=null&&r.hasOwnProperty("elevationServiceBaseUrl")&&!u.isString(r.elevationServiceBaseUrl))return"elevationServiceBaseUrl: string expected";if(r.elevationProfileQueryDelay!=null&&r.hasOwnProperty("elevationProfileQueryDelay")&&!u.isInteger(r.elevationProfileQueryDelay))return"elevationProfileQueryDelay: integer expected";if(r.proUpgradeUrl!=null&&r.hasOwnProperty("proUpgradeUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.proUpgradeUrl);if(t)return"proUpgradeUrl."+t}if(r.earthCommunityUrl!=null&&r.hasOwnProperty("earthCommunityUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.earthCommunityUrl);if(t)return"earthCommunityUrl."+t}if(r.googleMapsUrl!=null&&r.hasOwnProperty("googleMapsUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.googleMapsUrl);if(t)return"googleMapsUrl."+t}if(r.sharingUrl!=null&&r.hasOwnProperty("sharingUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.sharingUrl);if(t)return"sharingUrl."+t}if(r.privacyPolicyUrl!=null&&r.hasOwnProperty("privacyPolicyUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.privacyPolicyUrl);if(t)return"privacyPolicyUrl."+t}if(r.doGplusUserCheck!=null&&r.hasOwnProperty("doGplusUserCheck")&&typeof r.doGplusUserCheck!="boolean")return"doGplusUserCheck: boolean expected";if(r.rocktreeDataProto!=null&&r.hasOwnProperty("rocktreeDataProto")){var t=n.keyhole.dbroot.EndSnippetProto.RockTreeDataProto.verify(r.rocktreeDataProto);if(t)return"rocktreeDataProto."+t}if(r.filmstripConfig!=null&&r.hasOwnProperty("filmstripConfig")){if(!Array.isArray(r.filmstripConfig))return"filmstripConfig: array expected";for(var e=0;e<r.filmstripConfig.length;++e){var t=n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.verify(r.filmstripConfig[e]);if(t)return"filmstripConfig."+t}}if(r.showSigninButton!=null&&r.hasOwnProperty("showSigninButton")&&typeof r.showSigninButton!="boolean")return"showSigninButton: boolean expected";if(r.proMeasureUpsellUrl!=null&&r.hasOwnProperty("proMeasureUpsellUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.proMeasureUpsellUrl);if(t)return"proMeasureUpsellUrl."+t}if(r.proPrintUpsellUrl!=null&&r.hasOwnProperty("proPrintUpsellUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.proPrintUpsellUrl);if(t)return"proPrintUpsellUrl."+t}if(r.starDataProto!=null&&r.hasOwnProperty("starDataProto")){var t=n.keyhole.dbroot.EndSnippetProto.StarDataProto.verify(r.starDataProto);if(t)return"starDataProto."+t}if(r.feedbackUrl!=null&&r.hasOwnProperty("feedbackUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.feedbackUrl);if(t)return"feedbackUrl."+t}if(r.oauth2LoginUrl!=null&&r.hasOwnProperty("oauth2LoginUrl")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.oauth2LoginUrl);if(t)return"oauth2LoginUrl."+t}return null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.EndSnippetProto)return r;var t=new n.keyhole.dbroot.EndSnippetProto;if(r.model!=null){if(typeof r.model!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.model: object expected");t.model=n.keyhole.dbroot.PlanetModelProto.fromObject(r.model)}if(r.authServerUrl!=null){if(typeof r.authServerUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.authServerUrl: object expected");t.authServerUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.authServerUrl)}if(r.disableAuthentication!=null&&(t.disableAuthentication=!!r.disableAuthentication),r.mfeDomains){if(!Array.isArray(r.mfeDomains))throw TypeError(".keyhole.dbroot.EndSnippetProto.mfeDomains: array expected");t.mfeDomains=[];for(var e=0;e<r.mfeDomains.length;++e){if(typeof r.mfeDomains[e]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.mfeDomains: object expected");t.mfeDomains[e]=n.keyhole.dbroot.MfeDomainFeaturesProto.fromObject(r.mfeDomains[e])}}if(r.mfeLangParam!=null&&(t.mfeLangParam=String(r.mfeLangParam)),r.adsUrlPatterns!=null&&(t.adsUrlPatterns=String(r.adsUrlPatterns)),r.reverseGeocoderUrl!=null){if(typeof r.reverseGeocoderUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.reverseGeocoderUrl: object expected");t.reverseGeocoderUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.reverseGeocoderUrl)}if(r.reverseGeocoderProtocolVersion!=null&&(t.reverseGeocoderProtocolVersion=r.reverseGeocoderProtocolVersion|0),r.skyDatabaseIsAvailable!=null&&(t.skyDatabaseIsAvailable=!!r.skyDatabaseIsAvailable),r.skyDatabaseUrl!=null){if(typeof r.skyDatabaseUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.skyDatabaseUrl: object expected");t.skyDatabaseUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.skyDatabaseUrl)}if(r.defaultWebPageIntlUrl!=null){if(typeof r.defaultWebPageIntlUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.defaultWebPageIntlUrl: object expected");t.defaultWebPageIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.defaultWebPageIntlUrl)}if(r.numStartUpTips!=null&&(t.numStartUpTips=r.numStartUpTips|0),r.startUpTipsUrl!=null){if(typeof r.startUpTipsUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.startUpTipsUrl: object expected");t.startUpTipsUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.startUpTipsUrl)}if(r.numProStartUpTips!=null&&(t.numProStartUpTips=r.numProStartUpTips|0),r.proStartUpTipsUrl!=null){if(typeof r.proStartUpTipsUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.proStartUpTipsUrl: object expected");t.proStartUpTipsUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.proStartUpTipsUrl)}if(r.startupTipsIntlUrl!=null){if(typeof r.startupTipsIntlUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.startupTipsIntlUrl: object expected");t.startupTipsIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.startupTipsIntlUrl)}if(r.userGuideIntlUrl!=null){if(typeof r.userGuideIntlUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.userGuideIntlUrl: object expected");t.userGuideIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.userGuideIntlUrl)}if(r.supportCenterIntlUrl!=null){if(typeof r.supportCenterIntlUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.supportCenterIntlUrl: object expected");t.supportCenterIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.supportCenterIntlUrl)}if(r.businessListingIntlUrl!=null){if(typeof r.businessListingIntlUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.businessListingIntlUrl: object expected");t.businessListingIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.businessListingIntlUrl)}if(r.supportAnswerIntlUrl!=null){if(typeof r.supportAnswerIntlUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.supportAnswerIntlUrl: object expected");t.supportAnswerIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.supportAnswerIntlUrl)}if(r.supportTopicIntlUrl!=null){if(typeof r.supportTopicIntlUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.supportTopicIntlUrl: object expected");t.supportTopicIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.supportTopicIntlUrl)}if(r.supportRequestIntlUrl!=null){if(typeof r.supportRequestIntlUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.supportRequestIntlUrl: object expected");t.supportRequestIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.supportRequestIntlUrl)}if(r.earthIntlUrl!=null){if(typeof r.earthIntlUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.earthIntlUrl: object expected");t.earthIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.earthIntlUrl)}if(r.addContentUrl!=null){if(typeof r.addContentUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.addContentUrl: object expected");t.addContentUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.addContentUrl)}if(r.sketchupNotInstalledUrl!=null){if(typeof r.sketchupNotInstalledUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.sketchupNotInstalledUrl: object expected");t.sketchupNotInstalledUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.sketchupNotInstalledUrl)}if(r.sketchupErrorUrl!=null){if(typeof r.sketchupErrorUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.sketchupErrorUrl: object expected");t.sketchupErrorUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.sketchupErrorUrl)}if(r.freeLicenseUrl!=null){if(typeof r.freeLicenseUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.freeLicenseUrl: object expected");t.freeLicenseUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.freeLicenseUrl)}if(r.proLicenseUrl!=null){if(typeof r.proLicenseUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.proLicenseUrl: object expected");t.proLicenseUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.proLicenseUrl)}if(r.tutorialUrl!=null){if(typeof r.tutorialUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.tutorialUrl: object expected");t.tutorialUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.tutorialUrl)}if(r.keyboardShortcutsUrl!=null){if(typeof r.keyboardShortcutsUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.keyboardShortcutsUrl: object expected");t.keyboardShortcutsUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.keyboardShortcutsUrl)}if(r.releaseNotesUrl!=null){if(typeof r.releaseNotesUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.releaseNotesUrl: object expected");t.releaseNotesUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.releaseNotesUrl)}if(r.hideUserData!=null&&(t.hideUserData=!!r.hideUserData),r.useGeLogo!=null&&(t.useGeLogo=!!r.useGeLogo),r.dioramaDescriptionUrlBase!=null){if(typeof r.dioramaDescriptionUrlBase!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.dioramaDescriptionUrlBase: object expected");t.dioramaDescriptionUrlBase=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.dioramaDescriptionUrlBase)}if(r.dioramaDefaultColor!=null&&(t.dioramaDefaultColor=r.dioramaDefaultColor>>>0),r.dioramaBlacklistUrl!=null){if(typeof r.dioramaBlacklistUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.dioramaBlacklistUrl: object expected");t.dioramaBlacklistUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.dioramaBlacklistUrl)}if(r.clientOptions!=null){if(typeof r.clientOptions!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.clientOptions: object expected");t.clientOptions=n.keyhole.dbroot.ClientOptionsProto.fromObject(r.clientOptions)}if(r.fetchingOptions!=null){if(typeof r.fetchingOptions!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.fetchingOptions: object expected");t.fetchingOptions=n.keyhole.dbroot.FetchingOptionsProto.fromObject(r.fetchingOptions)}if(r.timeMachineOptions!=null){if(typeof r.timeMachineOptions!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.timeMachineOptions: object expected");t.timeMachineOptions=n.keyhole.dbroot.TimeMachineOptionsProto.fromObject(r.timeMachineOptions)}if(r.csiOptions!=null){if(typeof r.csiOptions!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.csiOptions: object expected");t.csiOptions=n.keyhole.dbroot.CSIOptionsProto.fromObject(r.csiOptions)}if(r.searchTab){if(!Array.isArray(r.searchTab))throw TypeError(".keyhole.dbroot.EndSnippetProto.searchTab: array expected");t.searchTab=[];for(var e=0;e<r.searchTab.length;++e){if(typeof r.searchTab[e]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.searchTab: object expected");t.searchTab[e]=n.keyhole.dbroot.SearchTabProto.fromObject(r.searchTab[e])}}if(r.cobrandInfo){if(!Array.isArray(r.cobrandInfo))throw TypeError(".keyhole.dbroot.EndSnippetProto.cobrandInfo: array expected");t.cobrandInfo=[];for(var e=0;e<r.cobrandInfo.length;++e){if(typeof r.cobrandInfo[e]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.cobrandInfo: object expected");t.cobrandInfo[e]=n.keyhole.dbroot.CobrandProto.fromObject(r.cobrandInfo[e])}}if(r.validDatabase){if(!Array.isArray(r.validDatabase))throw TypeError(".keyhole.dbroot.EndSnippetProto.validDatabase: array expected");t.validDatabase=[];for(var e=0;e<r.validDatabase.length;++e){if(typeof r.validDatabase[e]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.validDatabase: object expected");t.validDatabase[e]=n.keyhole.dbroot.DatabaseDescriptionProto.fromObject(r.validDatabase[e])}}if(r.configScript){if(!Array.isArray(r.configScript))throw TypeError(".keyhole.dbroot.EndSnippetProto.configScript: array expected");t.configScript=[];for(var e=0;e<r.configScript.length;++e){if(typeof r.configScript[e]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.configScript: object expected");t.configScript[e]=n.keyhole.dbroot.ConfigScriptProto.fromObject(r.configScript[e])}}if(r.deauthServerUrl!=null){if(typeof r.deauthServerUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.deauthServerUrl: object expected");t.deauthServerUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.deauthServerUrl)}if(r.swoopParameters!=null){if(typeof r.swoopParameters!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.swoopParameters: object expected");t.swoopParameters=n.keyhole.dbroot.SwoopParamsProto.fromObject(r.swoopParameters)}if(r.bbsServerInfo!=null){if(typeof r.bbsServerInfo!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.bbsServerInfo: object expected");t.bbsServerInfo=n.keyhole.dbroot.PostingServerProto.fromObject(r.bbsServerInfo)}if(r.dataErrorServerInfo!=null){if(typeof r.dataErrorServerInfo!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.dataErrorServerInfo: object expected");t.dataErrorServerInfo=n.keyhole.dbroot.PostingServerProto.fromObject(r.dataErrorServerInfo)}if(r.planetaryDatabase){if(!Array.isArray(r.planetaryDatabase))throw TypeError(".keyhole.dbroot.EndSnippetProto.planetaryDatabase: array expected");t.planetaryDatabase=[];for(var e=0;e<r.planetaryDatabase.length;++e){if(typeof r.planetaryDatabase[e]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.planetaryDatabase: object expected");t.planetaryDatabase[e]=n.keyhole.dbroot.PlanetaryDatabaseProto.fromObject(r.planetaryDatabase[e])}}if(r.logServer!=null){if(typeof r.logServer!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.logServer: object expected");t.logServer=n.keyhole.dbroot.LogServerProto.fromObject(r.logServer)}if(r.autopiaOptions!=null){if(typeof r.autopiaOptions!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.autopiaOptions: object expected");t.autopiaOptions=n.keyhole.dbroot.AutopiaOptionsProto.fromObject(r.autopiaOptions)}if(r.searchConfig!=null){if(typeof r.searchConfig!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.searchConfig: object expected");t.searchConfig=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.fromObject(r.searchConfig)}if(r.searchInfo!=null){if(typeof r.searchInfo!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.searchInfo: object expected");t.searchInfo=n.keyhole.dbroot.EndSnippetProto.SearchInfoProto.fromObject(r.searchInfo)}if(r.elevationServiceBaseUrl!=null&&(t.elevationServiceBaseUrl=String(r.elevationServiceBaseUrl)),r.elevationProfileQueryDelay!=null&&(t.elevationProfileQueryDelay=r.elevationProfileQueryDelay|0),r.proUpgradeUrl!=null){if(typeof r.proUpgradeUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.proUpgradeUrl: object expected");t.proUpgradeUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.proUpgradeUrl)}if(r.earthCommunityUrl!=null){if(typeof r.earthCommunityUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.earthCommunityUrl: object expected");t.earthCommunityUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.earthCommunityUrl)}if(r.googleMapsUrl!=null){if(typeof r.googleMapsUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.googleMapsUrl: object expected");t.googleMapsUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.googleMapsUrl)}if(r.sharingUrl!=null){if(typeof r.sharingUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.sharingUrl: object expected");t.sharingUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.sharingUrl)}if(r.privacyPolicyUrl!=null){if(typeof r.privacyPolicyUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.privacyPolicyUrl: object expected");t.privacyPolicyUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.privacyPolicyUrl)}if(r.doGplusUserCheck!=null&&(t.doGplusUserCheck=!!r.doGplusUserCheck),r.rocktreeDataProto!=null){if(typeof r.rocktreeDataProto!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.rocktreeDataProto: object expected");t.rocktreeDataProto=n.keyhole.dbroot.EndSnippetProto.RockTreeDataProto.fromObject(r.rocktreeDataProto)}if(r.filmstripConfig){if(!Array.isArray(r.filmstripConfig))throw TypeError(".keyhole.dbroot.EndSnippetProto.filmstripConfig: array expected");t.filmstripConfig=[];for(var e=0;e<r.filmstripConfig.length;++e){if(typeof r.filmstripConfig[e]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.filmstripConfig: object expected");t.filmstripConfig[e]=n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.fromObject(r.filmstripConfig[e])}}if(r.showSigninButton!=null&&(t.showSigninButton=!!r.showSigninButton),r.proMeasureUpsellUrl!=null){if(typeof r.proMeasureUpsellUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.proMeasureUpsellUrl: object expected");t.proMeasureUpsellUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.proMeasureUpsellUrl)}if(r.proPrintUpsellUrl!=null){if(typeof r.proPrintUpsellUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.proPrintUpsellUrl: object expected");t.proPrintUpsellUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.proPrintUpsellUrl)}if(r.starDataProto!=null){if(typeof r.starDataProto!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.starDataProto: object expected");t.starDataProto=n.keyhole.dbroot.EndSnippetProto.StarDataProto.fromObject(r.starDataProto)}if(r.feedbackUrl!=null){if(typeof r.feedbackUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.feedbackUrl: object expected");t.feedbackUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.feedbackUrl)}if(r.oauth2LoginUrl!=null){if(typeof r.oauth2LoginUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.oauth2LoginUrl: object expected");t.oauth2LoginUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.oauth2LoginUrl)}return t},i.toObject=function(r,t){t||(t={});var e={};if((t.arrays||t.defaults)&&(e.mfeDomains=[],e.searchTab=[],e.cobrandInfo=[],e.validDatabase=[],e.configScript=[],e.planetaryDatabase=[],e.filmstripConfig=[]),t.defaults&&(e.model=null,e.authServerUrl=null,e.disableAuthentication=!1,e.mfeLangParam="hl=$5Bhl5D",e.adsUrlPatterns="",e.reverseGeocoderUrl=null,e.reverseGeocoderProtocolVersion=3,e.skyDatabaseIsAvailable=!0,e.skyDatabaseUrl=null,e.defaultWebPageIntlUrl=null,e.numStartUpTips=17,e.startUpTipsUrl=null,e.userGuideIntlUrl=null,e.supportCenterIntlUrl=null,e.businessListingIntlUrl=null,e.supportAnswerIntlUrl=null,e.supportTopicIntlUrl=null,e.supportRequestIntlUrl=null,e.earthIntlUrl=null,e.addContentUrl=null,e.sketchupNotInstalledUrl=null,e.sketchupErrorUrl=null,e.freeLicenseUrl=null,e.proLicenseUrl=null,e.hideUserData=!1,e.useGeLogo=!0,e.dioramaDescriptionUrlBase=null,e.dioramaDefaultColor=4291281607,e.clientOptions=null,e.fetchingOptions=null,e.timeMachineOptions=null,e.csiOptions=null,e.deauthServerUrl=null,e.swoopParameters=null,e.bbsServerInfo=null,e.dataErrorServerInfo=null,e.logServer=null,e.autopiaOptions=null,e.searchInfo=null,e.elevationServiceBaseUrl="http://maps.google.com/maps/api/elevation/",e.elevationProfileQueryDelay=500,e.tutorialUrl=null,e.keyboardShortcutsUrl=null,e.releaseNotesUrl=null,e.numProStartUpTips=0,e.proStartUpTipsUrl=null,e.dioramaBlacklistUrl=null,e.searchConfig=null,e.proUpgradeUrl=null,e.earthCommunityUrl=null,e.googleMapsUrl=null,e.sharingUrl=null,e.privacyPolicyUrl=null,e.doGplusUserCheck=!1,e.rocktreeDataProto=null,e.showSigninButton=!1,e.startupTipsIntlUrl=null,e.proMeasureUpsellUrl=null,e.proPrintUpsellUrl=null,e.starDataProto=null,e.feedbackUrl=null,e.oauth2LoginUrl=null),r.model!=null&&r.hasOwnProperty("model")&&(e.model=n.keyhole.dbroot.PlanetModelProto.toObject(r.model,t)),r.authServerUrl!=null&&r.hasOwnProperty("authServerUrl")&&(e.authServerUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.authServerUrl,t)),r.disableAuthentication!=null&&r.hasOwnProperty("disableAuthentication")&&(e.disableAuthentication=r.disableAuthentication),r.mfeDomains&&r.mfeDomains.length){e.mfeDomains=[];for(var o=0;o<r.mfeDomains.length;++o)e.mfeDomains[o]=n.keyhole.dbroot.MfeDomainFeaturesProto.toObject(r.mfeDomains[o],t)}if(r.mfeLangParam!=null&&r.hasOwnProperty("mfeLangParam")&&(e.mfeLangParam=r.mfeLangParam),r.adsUrlPatterns!=null&&r.hasOwnProperty("adsUrlPatterns")&&(e.adsUrlPatterns=r.adsUrlPatterns),r.reverseGeocoderUrl!=null&&r.hasOwnProperty("reverseGeocoderUrl")&&(e.reverseGeocoderUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.reverseGeocoderUrl,t)),r.reverseGeocoderProtocolVersion!=null&&r.hasOwnProperty("reverseGeocoderProtocolVersion")&&(e.reverseGeocoderProtocolVersion=r.reverseGeocoderProtocolVersion),r.skyDatabaseIsAvailable!=null&&r.hasOwnProperty("skyDatabaseIsAvailable")&&(e.skyDatabaseIsAvailable=r.skyDatabaseIsAvailable),r.skyDatabaseUrl!=null&&r.hasOwnProperty("skyDatabaseUrl")&&(e.skyDatabaseUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.skyDatabaseUrl,t)),r.defaultWebPageIntlUrl!=null&&r.hasOwnProperty("defaultWebPageIntlUrl")&&(e.defaultWebPageIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.defaultWebPageIntlUrl,t)),r.numStartUpTips!=null&&r.hasOwnProperty("numStartUpTips")&&(e.numStartUpTips=r.numStartUpTips),r.startUpTipsUrl!=null&&r.hasOwnProperty("startUpTipsUrl")&&(e.startUpTipsUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.startUpTipsUrl,t)),r.userGuideIntlUrl!=null&&r.hasOwnProperty("userGuideIntlUrl")&&(e.userGuideIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.userGuideIntlUrl,t)),r.supportCenterIntlUrl!=null&&r.hasOwnProperty("supportCenterIntlUrl")&&(e.supportCenterIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.supportCenterIntlUrl,t)),r.businessListingIntlUrl!=null&&r.hasOwnProperty("businessListingIntlUrl")&&(e.businessListingIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.businessListingIntlUrl,t)),r.supportAnswerIntlUrl!=null&&r.hasOwnProperty("supportAnswerIntlUrl")&&(e.supportAnswerIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.supportAnswerIntlUrl,t)),r.supportTopicIntlUrl!=null&&r.hasOwnProperty("supportTopicIntlUrl")&&(e.supportTopicIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.supportTopicIntlUrl,t)),r.supportRequestIntlUrl!=null&&r.hasOwnProperty("supportRequestIntlUrl")&&(e.supportRequestIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.supportRequestIntlUrl,t)),r.earthIntlUrl!=null&&r.hasOwnProperty("earthIntlUrl")&&(e.earthIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.earthIntlUrl,t)),r.addContentUrl!=null&&r.hasOwnProperty("addContentUrl")&&(e.addContentUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.addContentUrl,t)),r.sketchupNotInstalledUrl!=null&&r.hasOwnProperty("sketchupNotInstalledUrl")&&(e.sketchupNotInstalledUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.sketchupNotInstalledUrl,t)),r.sketchupErrorUrl!=null&&r.hasOwnProperty("sketchupErrorUrl")&&(e.sketchupErrorUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.sketchupErrorUrl,t)),r.freeLicenseUrl!=null&&r.hasOwnProperty("freeLicenseUrl")&&(e.freeLicenseUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.freeLicenseUrl,t)),r.proLicenseUrl!=null&&r.hasOwnProperty("proLicenseUrl")&&(e.proLicenseUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.proLicenseUrl,t)),r.hideUserData!=null&&r.hasOwnProperty("hideUserData")&&(e.hideUserData=r.hideUserData),r.useGeLogo!=null&&r.hasOwnProperty("useGeLogo")&&(e.useGeLogo=r.useGeLogo),r.dioramaDescriptionUrlBase!=null&&r.hasOwnProperty("dioramaDescriptionUrlBase")&&(e.dioramaDescriptionUrlBase=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.dioramaDescriptionUrlBase,t)),r.dioramaDefaultColor!=null&&r.hasOwnProperty("dioramaDefaultColor")&&(e.dioramaDefaultColor=r.dioramaDefaultColor),r.clientOptions!=null&&r.hasOwnProperty("clientOptions")&&(e.clientOptions=n.keyhole.dbroot.ClientOptionsProto.toObject(r.clientOptions,t)),r.fetchingOptions!=null&&r.hasOwnProperty("fetchingOptions")&&(e.fetchingOptions=n.keyhole.dbroot.FetchingOptionsProto.toObject(r.fetchingOptions,t)),r.timeMachineOptions!=null&&r.hasOwnProperty("timeMachineOptions")&&(e.timeMachineOptions=n.keyhole.dbroot.TimeMachineOptionsProto.toObject(r.timeMachineOptions,t)),r.csiOptions!=null&&r.hasOwnProperty("csiOptions")&&(e.csiOptions=n.keyhole.dbroot.CSIOptionsProto.toObject(r.csiOptions,t)),r.searchTab&&r.searchTab.length){e.searchTab=[];for(var o=0;o<r.searchTab.length;++o)e.searchTab[o]=n.keyhole.dbroot.SearchTabProto.toObject(r.searchTab[o],t)}if(r.cobrandInfo&&r.cobrandInfo.length){e.cobrandInfo=[];for(var o=0;o<r.cobrandInfo.length;++o)e.cobrandInfo[o]=n.keyhole.dbroot.CobrandProto.toObject(r.cobrandInfo[o],t)}if(r.validDatabase&&r.validDatabase.length){e.validDatabase=[];for(var o=0;o<r.validDatabase.length;++o)e.validDatabase[o]=n.keyhole.dbroot.DatabaseDescriptionProto.toObject(r.validDatabase[o],t)}if(r.configScript&&r.configScript.length){e.configScript=[];for(var o=0;o<r.configScript.length;++o)e.configScript[o]=n.keyhole.dbroot.ConfigScriptProto.toObject(r.configScript[o],t)}if(r.deauthServerUrl!=null&&r.hasOwnProperty("deauthServerUrl")&&(e.deauthServerUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.deauthServerUrl,t)),r.swoopParameters!=null&&r.hasOwnProperty("swoopParameters")&&(e.swoopParameters=n.keyhole.dbroot.SwoopParamsProto.toObject(r.swoopParameters,t)),r.bbsServerInfo!=null&&r.hasOwnProperty("bbsServerInfo")&&(e.bbsServerInfo=n.keyhole.dbroot.PostingServerProto.toObject(r.bbsServerInfo,t)),r.dataErrorServerInfo!=null&&r.hasOwnProperty("dataErrorServerInfo")&&(e.dataErrorServerInfo=n.keyhole.dbroot.PostingServerProto.toObject(r.dataErrorServerInfo,t)),r.planetaryDatabase&&r.planetaryDatabase.length){e.planetaryDatabase=[];for(var o=0;o<r.planetaryDatabase.length;++o)e.planetaryDatabase[o]=n.keyhole.dbroot.PlanetaryDatabaseProto.toObject(r.planetaryDatabase[o],t)}if(r.logServer!=null&&r.hasOwnProperty("logServer")&&(e.logServer=n.keyhole.dbroot.LogServerProto.toObject(r.logServer,t)),r.autopiaOptions!=null&&r.hasOwnProperty("autopiaOptions")&&(e.autopiaOptions=n.keyhole.dbroot.AutopiaOptionsProto.toObject(r.autopiaOptions,t)),r.searchInfo!=null&&r.hasOwnProperty("searchInfo")&&(e.searchInfo=n.keyhole.dbroot.EndSnippetProto.SearchInfoProto.toObject(r.searchInfo,t)),r.elevationServiceBaseUrl!=null&&r.hasOwnProperty("elevationServiceBaseUrl")&&(e.elevationServiceBaseUrl=r.elevationServiceBaseUrl),r.elevationProfileQueryDelay!=null&&r.hasOwnProperty("elevationProfileQueryDelay")&&(e.elevationProfileQueryDelay=r.elevationProfileQueryDelay),r.tutorialUrl!=null&&r.hasOwnProperty("tutorialUrl")&&(e.tutorialUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.tutorialUrl,t)),r.keyboardShortcutsUrl!=null&&r.hasOwnProperty("keyboardShortcutsUrl")&&(e.keyboardShortcutsUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.keyboardShortcutsUrl,t)),r.releaseNotesUrl!=null&&r.hasOwnProperty("releaseNotesUrl")&&(e.releaseNotesUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.releaseNotesUrl,t)),r.numProStartUpTips!=null&&r.hasOwnProperty("numProStartUpTips")&&(e.numProStartUpTips=r.numProStartUpTips),r.proStartUpTipsUrl!=null&&r.hasOwnProperty("proStartUpTipsUrl")&&(e.proStartUpTipsUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.proStartUpTipsUrl,t)),r.dioramaBlacklistUrl!=null&&r.hasOwnProperty("dioramaBlacklistUrl")&&(e.dioramaBlacklistUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.dioramaBlacklistUrl,t)),r.searchConfig!=null&&r.hasOwnProperty("searchConfig")&&(e.searchConfig=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.toObject(r.searchConfig,t)),r.proUpgradeUrl!=null&&r.hasOwnProperty("proUpgradeUrl")&&(e.proUpgradeUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.proUpgradeUrl,t)),r.earthCommunityUrl!=null&&r.hasOwnProperty("earthCommunityUrl")&&(e.earthCommunityUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.earthCommunityUrl,t)),r.googleMapsUrl!=null&&r.hasOwnProperty("googleMapsUrl")&&(e.googleMapsUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.googleMapsUrl,t)),r.sharingUrl!=null&&r.hasOwnProperty("sharingUrl")&&(e.sharingUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.sharingUrl,t)),r.privacyPolicyUrl!=null&&r.hasOwnProperty("privacyPolicyUrl")&&(e.privacyPolicyUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.privacyPolicyUrl,t)),r.doGplusUserCheck!=null&&r.hasOwnProperty("doGplusUserCheck")&&(e.doGplusUserCheck=r.doGplusUserCheck),r.rocktreeDataProto!=null&&r.hasOwnProperty("rocktreeDataProto")&&(e.rocktreeDataProto=n.keyhole.dbroot.EndSnippetProto.RockTreeDataProto.toObject(r.rocktreeDataProto,t)),r.filmstripConfig&&r.filmstripConfig.length){e.filmstripConfig=[];for(var o=0;o<r.filmstripConfig.length;++o)e.filmstripConfig[o]=n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.toObject(r.filmstripConfig[o],t)}return r.showSigninButton!=null&&r.hasOwnProperty("showSigninButton")&&(e.showSigninButton=r.showSigninButton),r.startupTipsIntlUrl!=null&&r.hasOwnProperty("startupTipsIntlUrl")&&(e.startupTipsIntlUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.startupTipsIntlUrl,t)),r.proMeasureUpsellUrl!=null&&r.hasOwnProperty("proMeasureUpsellUrl")&&(e.proMeasureUpsellUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.proMeasureUpsellUrl,t)),r.proPrintUpsellUrl!=null&&r.hasOwnProperty("proPrintUpsellUrl")&&(e.proPrintUpsellUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.proPrintUpsellUrl,t)),r.starDataProto!=null&&r.hasOwnProperty("starDataProto")&&(e.starDataProto=n.keyhole.dbroot.EndSnippetProto.StarDataProto.toObject(r.starDataProto,t)),r.feedbackUrl!=null&&r.hasOwnProperty("feedbackUrl")&&(e.feedbackUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.feedbackUrl,t)),r.oauth2LoginUrl!=null&&r.hasOwnProperty("oauth2LoginUrl")&&(e.oauth2LoginUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.oauth2LoginUrl,t)),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.EndSnippetProto"},i.SearchConfigProto=function(){function l(r){if(this.searchServer=[],this.oneboxService=[],r)for(var t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return l.prototype.searchServer=u.emptyArray,l.prototype.oneboxService=u.emptyArray,l.prototype.kmlSearchUrl=null,l.prototype.kmlRenderUrl=null,l.prototype.searchHistoryUrl=null,l.prototype.errorPageUrl=null,l.decode=function(t,e){t instanceof f||(t=f.create(t));for(var o=e===void 0?t.len:t.pos+e,a=new n.keyhole.dbroot.EndSnippetProto.SearchConfigProto;t.pos<o;){var p=t.uint32();switch(p>>>3){case 1:{a.searchServer&&a.searchServer.length||(a.searchServer=[]),a.searchServer.push(n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.decode(t,t.uint32()));break}case 2:{a.oneboxService&&a.oneboxService.length||(a.oneboxService=[]),a.oneboxService.push(n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.OneboxServiceProto.decode(t,t.uint32()));break}case 3:{a.kmlSearchUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}case 4:{a.kmlRenderUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}case 6:{a.searchHistoryUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}case 5:{a.errorPageUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}default:t.skipType(p&7);break}}return a},l.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.searchServer!=null&&t.hasOwnProperty("searchServer")){if(!Array.isArray(t.searchServer))return"searchServer: array expected";for(var e=0;e<t.searchServer.length;++e){var o=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.verify(t.searchServer[e]);if(o)return"searchServer."+o}}if(t.oneboxService!=null&&t.hasOwnProperty("oneboxService")){if(!Array.isArray(t.oneboxService))return"oneboxService: array expected";for(var e=0;e<t.oneboxService.length;++e){var o=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.OneboxServiceProto.verify(t.oneboxService[e]);if(o)return"oneboxService."+o}}if(t.kmlSearchUrl!=null&&t.hasOwnProperty("kmlSearchUrl")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(t.kmlSearchUrl);if(o)return"kmlSearchUrl."+o}if(t.kmlRenderUrl!=null&&t.hasOwnProperty("kmlRenderUrl")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(t.kmlRenderUrl);if(o)return"kmlRenderUrl."+o}if(t.searchHistoryUrl!=null&&t.hasOwnProperty("searchHistoryUrl")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(t.searchHistoryUrl);if(o)return"searchHistoryUrl."+o}if(t.errorPageUrl!=null&&t.hasOwnProperty("errorPageUrl")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(t.errorPageUrl);if(o)return"errorPageUrl."+o}return null},l.fromObject=function(t){if(t instanceof n.keyhole.dbroot.EndSnippetProto.SearchConfigProto)return t;var e=new n.keyhole.dbroot.EndSnippetProto.SearchConfigProto;if(t.searchServer){if(!Array.isArray(t.searchServer))throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.searchServer: array expected");e.searchServer=[];for(var o=0;o<t.searchServer.length;++o){if(typeof t.searchServer[o]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.searchServer: object expected");e.searchServer[o]=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.fromObject(t.searchServer[o])}}if(t.oneboxService){if(!Array.isArray(t.oneboxService))throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.oneboxService: array expected");e.oneboxService=[];for(var o=0;o<t.oneboxService.length;++o){if(typeof t.oneboxService[o]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.oneboxService: object expected");e.oneboxService[o]=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.OneboxServiceProto.fromObject(t.oneboxService[o])}}if(t.kmlSearchUrl!=null){if(typeof t.kmlSearchUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.kmlSearchUrl: object expected");e.kmlSearchUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.kmlSearchUrl)}if(t.kmlRenderUrl!=null){if(typeof t.kmlRenderUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.kmlRenderUrl: object expected");e.kmlRenderUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.kmlRenderUrl)}if(t.searchHistoryUrl!=null){if(typeof t.searchHistoryUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.searchHistoryUrl: object expected");e.searchHistoryUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.searchHistoryUrl)}if(t.errorPageUrl!=null){if(typeof t.errorPageUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.errorPageUrl: object expected");e.errorPageUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.errorPageUrl)}return e},l.toObject=function(t,e){e||(e={});var o={};if((e.arrays||e.defaults)&&(o.searchServer=[],o.oneboxService=[]),e.defaults&&(o.kmlSearchUrl=null,o.kmlRenderUrl=null,o.errorPageUrl=null,o.searchHistoryUrl=null),t.searchServer&&t.searchServer.length){o.searchServer=[];for(var a=0;a<t.searchServer.length;++a)o.searchServer[a]=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.toObject(t.searchServer[a],e)}if(t.oneboxService&&t.oneboxService.length){o.oneboxService=[];for(var a=0;a<t.oneboxService.length;++a)o.oneboxService[a]=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.OneboxServiceProto.toObject(t.oneboxService[a],e)}return t.kmlSearchUrl!=null&&t.hasOwnProperty("kmlSearchUrl")&&(o.kmlSearchUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.kmlSearchUrl,e)),t.kmlRenderUrl!=null&&t.hasOwnProperty("kmlRenderUrl")&&(o.kmlRenderUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.kmlRenderUrl,e)),t.errorPageUrl!=null&&t.hasOwnProperty("errorPageUrl")&&(o.errorPageUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.errorPageUrl,e)),t.searchHistoryUrl!=null&&t.hasOwnProperty("searchHistoryUrl")&&(o.searchHistoryUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.searchHistoryUrl,e)),o},l.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},l.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/keyhole.dbroot.EndSnippetProto.SearchConfigProto"},l.SearchServer=function(){function r(t){if(this.suggestion=[],this.searchlet=[],t)for(var e=Object.keys(t),o=0;o<e.length;++o)t[e[o]]!=null&&(this[e[o]]=t[e[o]])}return r.prototype.name=null,r.prototype.url=null,r.prototype.type=0,r.prototype.htmlTransformUrl=null,r.prototype.kmlTransformUrl=null,r.prototype.supplementalUi=null,r.prototype.suggestion=u.emptyArray,r.prototype.searchlet=u.emptyArray,r.prototype.requirements=null,r.prototype.suggestServer=null,r.decode=function(e,o){e instanceof f||(e=f.create(e));for(var a=o===void 0?e.len:e.pos+o,p=new n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer;e.pos<a;){var y=e.uint32();switch(y>>>3){case 1:{p.name=n.keyhole.dbroot.StringIdOrValueProto.decode(e,e.uint32());break}case 2:{p.url=n.keyhole.dbroot.StringIdOrValueProto.decode(e,e.uint32());break}case 3:{p.type=e.int32();break}case 4:{p.htmlTransformUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(e,e.uint32());break}case 5:{p.kmlTransformUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(e,e.uint32());break}case 6:{p.supplementalUi=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SupplementalUi.decode(e,e.uint32());break}case 9:{p.suggestion&&p.suggestion.length||(p.suggestion=[]),p.suggestion.push(n.keyhole.dbroot.StringIdOrValueProto.decode(e,e.uint32()));break}case 7:{p.searchlet&&p.searchlet.length||(p.searchlet=[]),p.searchlet.push(n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto.decode(e,e.uint32()));break}case 8:{p.requirements=n.keyhole.dbroot.RequirementProto.decode(e,e.uint32());break}case 10:{p.suggestServer=n.keyhole.dbroot.StringIdOrValueProto.decode(e,e.uint32());break}default:e.skipType(y&7);break}}return p},r.verify=function(e){if(typeof e!="object"||e===null)return"object expected";if(e.name!=null&&e.hasOwnProperty("name")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(e.name);if(o)return"name."+o}if(e.url!=null&&e.hasOwnProperty("url")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(e.url);if(o)return"url."+o}if(e.type!=null&&e.hasOwnProperty("type"))switch(e.type){default:return"type: enum value expected";case 0:case 1:break}if(e.htmlTransformUrl!=null&&e.hasOwnProperty("htmlTransformUrl")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(e.htmlTransformUrl);if(o)return"htmlTransformUrl."+o}if(e.kmlTransformUrl!=null&&e.hasOwnProperty("kmlTransformUrl")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(e.kmlTransformUrl);if(o)return"kmlTransformUrl."+o}if(e.supplementalUi!=null&&e.hasOwnProperty("supplementalUi")){var o=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SupplementalUi.verify(e.supplementalUi);if(o)return"supplementalUi."+o}if(e.suggestion!=null&&e.hasOwnProperty("suggestion")){if(!Array.isArray(e.suggestion))return"suggestion: array expected";for(var a=0;a<e.suggestion.length;++a){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(e.suggestion[a]);if(o)return"suggestion."+o}}if(e.searchlet!=null&&e.hasOwnProperty("searchlet")){if(!Array.isArray(e.searchlet))return"searchlet: array expected";for(var a=0;a<e.searchlet.length;++a){var o=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto.verify(e.searchlet[a]);if(o)return"searchlet."+o}}if(e.requirements!=null&&e.hasOwnProperty("requirements")){var o=n.keyhole.dbroot.RequirementProto.verify(e.requirements);if(o)return"requirements."+o}if(e.suggestServer!=null&&e.hasOwnProperty("suggestServer")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(e.suggestServer);if(o)return"suggestServer."+o}return null},r.fromObject=function(e){if(e instanceof n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer)return e;var o=new n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer;if(e.name!=null){if(typeof e.name!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.name: object expected");o.name=n.keyhole.dbroot.StringIdOrValueProto.fromObject(e.name)}if(e.url!=null){if(typeof e.url!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.url: object expected");o.url=n.keyhole.dbroot.StringIdOrValueProto.fromObject(e.url)}switch(e.type){case"RESULT_TYPE_KML":case 0:o.type=0;break;case"RESULT_TYPE_XML":case 1:o.type=1;break}if(e.htmlTransformUrl!=null){if(typeof e.htmlTransformUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.htmlTransformUrl: object expected");o.htmlTransformUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(e.htmlTransformUrl)}if(e.kmlTransformUrl!=null){if(typeof e.kmlTransformUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.kmlTransformUrl: object expected");o.kmlTransformUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(e.kmlTransformUrl)}if(e.supplementalUi!=null){if(typeof e.supplementalUi!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.supplementalUi: object expected");o.supplementalUi=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SupplementalUi.fromObject(e.supplementalUi)}if(e.suggestion){if(!Array.isArray(e.suggestion))throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.suggestion: array expected");o.suggestion=[];for(var a=0;a<e.suggestion.length;++a){if(typeof e.suggestion[a]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.suggestion: object expected");o.suggestion[a]=n.keyhole.dbroot.StringIdOrValueProto.fromObject(e.suggestion[a])}}if(e.searchlet){if(!Array.isArray(e.searchlet))throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.searchlet: array expected");o.searchlet=[];for(var a=0;a<e.searchlet.length;++a){if(typeof e.searchlet[a]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.searchlet: object expected");o.searchlet[a]=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto.fromObject(e.searchlet[a])}}if(e.requirements!=null){if(typeof e.requirements!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.requirements: object expected");o.requirements=n.keyhole.dbroot.RequirementProto.fromObject(e.requirements)}if(e.suggestServer!=null){if(typeof e.suggestServer!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.suggestServer: object expected");o.suggestServer=n.keyhole.dbroot.StringIdOrValueProto.fromObject(e.suggestServer)}return o},r.toObject=function(e,o){o||(o={});var a={};if((o.arrays||o.defaults)&&(a.searchlet=[],a.suggestion=[]),o.defaults&&(a.name=null,a.url=null,a.type=o.enums===String?"RESULT_TYPE_KML":0,a.htmlTransformUrl=null,a.kmlTransformUrl=null,a.supplementalUi=null,a.requirements=null,a.suggestServer=null),e.name!=null&&e.hasOwnProperty("name")&&(a.name=n.keyhole.dbroot.StringIdOrValueProto.toObject(e.name,o)),e.url!=null&&e.hasOwnProperty("url")&&(a.url=n.keyhole.dbroot.StringIdOrValueProto.toObject(e.url,o)),e.type!=null&&e.hasOwnProperty("type")&&(a.type=o.enums===String?n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.ResultType[e.type]:e.type),e.htmlTransformUrl!=null&&e.hasOwnProperty("htmlTransformUrl")&&(a.htmlTransformUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(e.htmlTransformUrl,o)),e.kmlTransformUrl!=null&&e.hasOwnProperty("kmlTransformUrl")&&(a.kmlTransformUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(e.kmlTransformUrl,o)),e.supplementalUi!=null&&e.hasOwnProperty("supplementalUi")&&(a.supplementalUi=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SupplementalUi.toObject(e.supplementalUi,o)),e.searchlet&&e.searchlet.length){a.searchlet=[];for(var p=0;p<e.searchlet.length;++p)a.searchlet[p]=n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto.toObject(e.searchlet[p],o)}if(e.requirements!=null&&e.hasOwnProperty("requirements")&&(a.requirements=n.keyhole.dbroot.RequirementProto.toObject(e.requirements,o)),e.suggestion&&e.suggestion.length){a.suggestion=[];for(var p=0;p<e.suggestion.length;++p)a.suggestion[p]=n.keyhole.dbroot.StringIdOrValueProto.toObject(e.suggestion[p],o)}return e.suggestServer!=null&&e.hasOwnProperty("suggestServer")&&(a.suggestServer=n.keyhole.dbroot.StringIdOrValueProto.toObject(e.suggestServer,o)),a},r.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},r.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer"},r.ResultType=function(){var t={},e=Object.create(t);return e[t[0]="RESULT_TYPE_KML"]=0,e[t[1]="RESULT_TYPE_XML"]=1,e}(),r.SupplementalUi=function(){function t(e){if(e)for(var o=Object.keys(e),a=0;a<o.length;++a)e[o[a]]!=null&&(this[o[a]]=e[o[a]])}return t.prototype.url=null,t.prototype.label=null,t.prototype.height=160,t.decode=function(o,a){o instanceof f||(o=f.create(o));for(var p=a===void 0?o.len:o.pos+a,y=new n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SupplementalUi;o.pos<p;){var h=o.uint32();switch(h>>>3){case 1:{y.url=n.keyhole.dbroot.StringIdOrValueProto.decode(o,o.uint32());break}case 2:{y.label=n.keyhole.dbroot.StringIdOrValueProto.decode(o,o.uint32());break}case 3:{y.height=o.int32();break}default:o.skipType(h&7);break}}return y},t.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.url!=null&&o.hasOwnProperty("url")){var a=n.keyhole.dbroot.StringIdOrValueProto.verify(o.url);if(a)return"url."+a}if(o.label!=null&&o.hasOwnProperty("label")){var a=n.keyhole.dbroot.StringIdOrValueProto.verify(o.label);if(a)return"label."+a}return o.height!=null&&o.hasOwnProperty("height")&&!u.isInteger(o.height)?"height: integer expected":null},t.fromObject=function(o){if(o instanceof n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SupplementalUi)return o;var a=new n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SupplementalUi;if(o.url!=null){if(typeof o.url!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SupplementalUi.url: object expected");a.url=n.keyhole.dbroot.StringIdOrValueProto.fromObject(o.url)}if(o.label!=null){if(typeof o.label!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SupplementalUi.label: object expected");a.label=n.keyhole.dbroot.StringIdOrValueProto.fromObject(o.label)}return o.height!=null&&(a.height=o.height|0),a},t.toObject=function(o,a){a||(a={});var p={};return a.defaults&&(p.url=null,p.label=null,p.height=160),o.url!=null&&o.hasOwnProperty("url")&&(p.url=n.keyhole.dbroot.StringIdOrValueProto.toObject(o.url,a)),o.label!=null&&o.hasOwnProperty("label")&&(p.label=n.keyhole.dbroot.StringIdOrValueProto.toObject(o.label,a)),o.height!=null&&o.hasOwnProperty("height")&&(p.height=o.height),p},t.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},t.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SupplementalUi"},t}(),r.SearchletProto=function(){function t(e){if(e)for(var o=Object.keys(e),a=0;a<o.length;++a)e[o[a]]!=null&&(this[o[a]]=e[o[a]])}return t.prototype.url=null,t.prototype.name=null,t.prototype.requirements=null,t.decode=function(o,a){o instanceof f||(o=f.create(o));for(var p=a===void 0?o.len:o.pos+a,y=new n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto;o.pos<p;){var h=o.uint32();switch(h>>>3){case 1:{y.url=n.keyhole.dbroot.StringIdOrValueProto.decode(o,o.uint32());break}case 2:{y.name=n.keyhole.dbroot.StringIdOrValueProto.decode(o,o.uint32());break}case 3:{y.requirements=n.keyhole.dbroot.RequirementProto.decode(o,o.uint32());break}default:o.skipType(h&7);break}}return y},t.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.url!=null&&o.hasOwnProperty("url")){var a=n.keyhole.dbroot.StringIdOrValueProto.verify(o.url);if(a)return"url."+a}if(o.name!=null&&o.hasOwnProperty("name")){var a=n.keyhole.dbroot.StringIdOrValueProto.verify(o.name);if(a)return"name."+a}if(o.requirements!=null&&o.hasOwnProperty("requirements")){var a=n.keyhole.dbroot.RequirementProto.verify(o.requirements);if(a)return"requirements."+a}return null},t.fromObject=function(o){if(o instanceof n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto)return o;var a=new n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto;if(o.url!=null){if(typeof o.url!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto.url: object expected");a.url=n.keyhole.dbroot.StringIdOrValueProto.fromObject(o.url)}if(o.name!=null){if(typeof o.name!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto.name: object expected");a.name=n.keyhole.dbroot.StringIdOrValueProto.fromObject(o.name)}if(o.requirements!=null){if(typeof o.requirements!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto.requirements: object expected");a.requirements=n.keyhole.dbroot.RequirementProto.fromObject(o.requirements)}return a},t.toObject=function(o,a){a||(a={});var p={};return a.defaults&&(p.url=null,p.name=null,p.requirements=null),o.url!=null&&o.hasOwnProperty("url")&&(p.url=n.keyhole.dbroot.StringIdOrValueProto.toObject(o.url,a)),o.name!=null&&o.hasOwnProperty("name")&&(p.name=n.keyhole.dbroot.StringIdOrValueProto.toObject(o.name,a)),o.requirements!=null&&o.hasOwnProperty("requirements")&&(p.requirements=n.keyhole.dbroot.RequirementProto.toObject(o.requirements,a)),p},t.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},t.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/keyhole.dbroot.EndSnippetProto.SearchConfigProto.SearchServer.SearchletProto"},t}(),r}(),l.OneboxServiceProto=function(){function r(t){if(t)for(var e=Object.keys(t),o=0;o<e.length;++o)t[e[o]]!=null&&(this[e[o]]=t[e[o]])}return r.prototype.serviceUrl=null,r.prototype.requirements=null,r.decode=function(e,o){e instanceof f||(e=f.create(e));for(var a=o===void 0?e.len:e.pos+o,p=new n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.OneboxServiceProto;e.pos<a;){var y=e.uint32();switch(y>>>3){case 1:{p.serviceUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(e,e.uint32());break}case 2:{p.requirements=n.keyhole.dbroot.RequirementProto.decode(e,e.uint32());break}default:e.skipType(y&7);break}}return p},r.verify=function(e){if(typeof e!="object"||e===null)return"object expected";if(e.serviceUrl!=null&&e.hasOwnProperty("serviceUrl")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(e.serviceUrl);if(o)return"serviceUrl."+o}if(e.requirements!=null&&e.hasOwnProperty("requirements")){var o=n.keyhole.dbroot.RequirementProto.verify(e.requirements);if(o)return"requirements."+o}return null},r.fromObject=function(e){if(e instanceof n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.OneboxServiceProto)return e;var o=new n.keyhole.dbroot.EndSnippetProto.SearchConfigProto.OneboxServiceProto;if(e.serviceUrl!=null){if(typeof e.serviceUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.OneboxServiceProto.serviceUrl: object expected");o.serviceUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(e.serviceUrl)}if(e.requirements!=null){if(typeof e.requirements!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.SearchConfigProto.OneboxServiceProto.requirements: object expected");o.requirements=n.keyhole.dbroot.RequirementProto.fromObject(e.requirements)}return o},r.toObject=function(e,o){o||(o={});var a={};return o.defaults&&(a.serviceUrl=null,a.requirements=null),e.serviceUrl!=null&&e.hasOwnProperty("serviceUrl")&&(a.serviceUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(e.serviceUrl,o)),e.requirements!=null&&e.hasOwnProperty("requirements")&&(a.requirements=n.keyhole.dbroot.RequirementProto.toObject(e.requirements,o)),a},r.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},r.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/keyhole.dbroot.EndSnippetProto.SearchConfigProto.OneboxServiceProto"},r}(),l}(),i.SearchInfoProto=function(){function l(r){if(r)for(var t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return l.prototype.defaultUrl="http://maps.google.com/maps",l.prototype.geocodeParam="q",l.decode=function(t,e){t instanceof f||(t=f.create(t));for(var o=e===void 0?t.len:t.pos+e,a=new n.keyhole.dbroot.EndSnippetProto.SearchInfoProto;t.pos<o;){var p=t.uint32();switch(p>>>3){case 1:{a.defaultUrl=t.string();break}case 2:{a.geocodeParam=t.string();break}default:t.skipType(p&7);break}}return a},l.verify=function(t){return typeof t!="object"||t===null?"object expected":t.defaultUrl!=null&&t.hasOwnProperty("defaultUrl")&&!u.isString(t.defaultUrl)?"defaultUrl: string expected":t.geocodeParam!=null&&t.hasOwnProperty("geocodeParam")&&!u.isString(t.geocodeParam)?"geocodeParam: string expected":null},l.fromObject=function(t){if(t instanceof n.keyhole.dbroot.EndSnippetProto.SearchInfoProto)return t;var e=new n.keyhole.dbroot.EndSnippetProto.SearchInfoProto;return t.defaultUrl!=null&&(e.defaultUrl=String(t.defaultUrl)),t.geocodeParam!=null&&(e.geocodeParam=String(t.geocodeParam)),e},l.toObject=function(t,e){e||(e={});var o={};return e.defaults&&(o.defaultUrl="http://maps.google.com/maps",o.geocodeParam="q"),t.defaultUrl!=null&&t.hasOwnProperty("defaultUrl")&&(o.defaultUrl=t.defaultUrl),t.geocodeParam!=null&&t.hasOwnProperty("geocodeParam")&&(o.geocodeParam=t.geocodeParam),o},l.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},l.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/keyhole.dbroot.EndSnippetProto.SearchInfoProto"},l}(),i.RockTreeDataProto=function(){function l(r){if(r)for(var t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return l.prototype.url=null,l.decode=function(t,e){t instanceof f||(t=f.create(t));for(var o=e===void 0?t.len:t.pos+e,a=new n.keyhole.dbroot.EndSnippetProto.RockTreeDataProto;t.pos<o;){var p=t.uint32();switch(p>>>3){case 1:{a.url=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}default:t.skipType(p&7);break}}return a},l.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.url!=null&&t.hasOwnProperty("url")){var e=n.keyhole.dbroot.StringIdOrValueProto.verify(t.url);if(e)return"url."+e}return null},l.fromObject=function(t){if(t instanceof n.keyhole.dbroot.EndSnippetProto.RockTreeDataProto)return t;var e=new n.keyhole.dbroot.EndSnippetProto.RockTreeDataProto;if(t.url!=null){if(typeof t.url!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.RockTreeDataProto.url: object expected");e.url=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.url)}return e},l.toObject=function(t,e){e||(e={});var o={};return e.defaults&&(o.url=null),t.url!=null&&t.hasOwnProperty("url")&&(o.url=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.url,e)),o},l.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},l.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/keyhole.dbroot.EndSnippetProto.RockTreeDataProto"},l}(),i.FilmstripConfigProto=function(){function l(r){if(this.imageryType=[],r)for(var t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return l.prototype.requirements=null,l.prototype.alleycatUrlTemplate=null,l.prototype.fallbackAlleycatUrlTemplate=null,l.prototype.metadataUrlTemplate=null,l.prototype.thumbnailUrlTemplate=null,l.prototype.kmlUrlTemplate=null,l.prototype.featuredToursUrl=null,l.prototype.enableViewportFallback=!1,l.prototype.viewportFallbackDistance=0,l.prototype.imageryType=u.emptyArray,l.decode=function(t,e){t instanceof f||(t=f.create(t));for(var o=e===void 0?t.len:t.pos+e,a=new n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto;t.pos<o;){var p=t.uint32();switch(p>>>3){case 1:{a.requirements=n.keyhole.dbroot.RequirementProto.decode(t,t.uint32());break}case 2:{a.alleycatUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}case 9:{a.fallbackAlleycatUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}case 3:{a.metadataUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}case 4:{a.thumbnailUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}case 5:{a.kmlUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}case 6:{a.featuredToursUrl=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}case 7:{a.enableViewportFallback=t.bool();break}case 8:{a.viewportFallbackDistance=t.uint32();break}case 10:{a.imageryType&&a.imageryType.length||(a.imageryType=[]),a.imageryType.push(n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto.decode(t,t.uint32()));break}default:t.skipType(p&7);break}}return a},l.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.requirements!=null&&t.hasOwnProperty("requirements")){var e=n.keyhole.dbroot.RequirementProto.verify(t.requirements);if(e)return"requirements."+e}if(t.alleycatUrlTemplate!=null&&t.hasOwnProperty("alleycatUrlTemplate")){var e=n.keyhole.dbroot.StringIdOrValueProto.verify(t.alleycatUrlTemplate);if(e)return"alleycatUrlTemplate."+e}if(t.fallbackAlleycatUrlTemplate!=null&&t.hasOwnProperty("fallbackAlleycatUrlTemplate")){var e=n.keyhole.dbroot.StringIdOrValueProto.verify(t.fallbackAlleycatUrlTemplate);if(e)return"fallbackAlleycatUrlTemplate."+e}if(t.metadataUrlTemplate!=null&&t.hasOwnProperty("metadataUrlTemplate")){var e=n.keyhole.dbroot.StringIdOrValueProto.verify(t.metadataUrlTemplate);if(e)return"metadataUrlTemplate."+e}if(t.thumbnailUrlTemplate!=null&&t.hasOwnProperty("thumbnailUrlTemplate")){var e=n.keyhole.dbroot.StringIdOrValueProto.verify(t.thumbnailUrlTemplate);if(e)return"thumbnailUrlTemplate."+e}if(t.kmlUrlTemplate!=null&&t.hasOwnProperty("kmlUrlTemplate")){var e=n.keyhole.dbroot.StringIdOrValueProto.verify(t.kmlUrlTemplate);if(e)return"kmlUrlTemplate."+e}if(t.featuredToursUrl!=null&&t.hasOwnProperty("featuredToursUrl")){var e=n.keyhole.dbroot.StringIdOrValueProto.verify(t.featuredToursUrl);if(e)return"featuredToursUrl."+e}if(t.enableViewportFallback!=null&&t.hasOwnProperty("enableViewportFallback")&&typeof t.enableViewportFallback!="boolean")return"enableViewportFallback: boolean expected";if(t.viewportFallbackDistance!=null&&t.hasOwnProperty("viewportFallbackDistance")&&!u.isInteger(t.viewportFallbackDistance))return"viewportFallbackDistance: integer expected";if(t.imageryType!=null&&t.hasOwnProperty("imageryType")){if(!Array.isArray(t.imageryType))return"imageryType: array expected";for(var o=0;o<t.imageryType.length;++o){var e=n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto.verify(t.imageryType[o]);if(e)return"imageryType."+e}}return null},l.fromObject=function(t){if(t instanceof n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto)return t;var e=new n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto;if(t.requirements!=null){if(typeof t.requirements!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.requirements: object expected");e.requirements=n.keyhole.dbroot.RequirementProto.fromObject(t.requirements)}if(t.alleycatUrlTemplate!=null){if(typeof t.alleycatUrlTemplate!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.alleycatUrlTemplate: object expected");e.alleycatUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.alleycatUrlTemplate)}if(t.fallbackAlleycatUrlTemplate!=null){if(typeof t.fallbackAlleycatUrlTemplate!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.fallbackAlleycatUrlTemplate: object expected");e.fallbackAlleycatUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.fallbackAlleycatUrlTemplate)}if(t.metadataUrlTemplate!=null){if(typeof t.metadataUrlTemplate!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.metadataUrlTemplate: object expected");e.metadataUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.metadataUrlTemplate)}if(t.thumbnailUrlTemplate!=null){if(typeof t.thumbnailUrlTemplate!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.thumbnailUrlTemplate: object expected");e.thumbnailUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.thumbnailUrlTemplate)}if(t.kmlUrlTemplate!=null){if(typeof t.kmlUrlTemplate!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.kmlUrlTemplate: object expected");e.kmlUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.kmlUrlTemplate)}if(t.featuredToursUrl!=null){if(typeof t.featuredToursUrl!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.featuredToursUrl: object expected");e.featuredToursUrl=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.featuredToursUrl)}if(t.enableViewportFallback!=null&&(e.enableViewportFallback=!!t.enableViewportFallback),t.viewportFallbackDistance!=null&&(e.viewportFallbackDistance=t.viewportFallbackDistance>>>0),t.imageryType){if(!Array.isArray(t.imageryType))throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.imageryType: array expected");e.imageryType=[];for(var o=0;o<t.imageryType.length;++o){if(typeof t.imageryType[o]!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.imageryType: object expected");e.imageryType[o]=n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto.fromObject(t.imageryType[o])}}return e},l.toObject=function(t,e){e||(e={});var o={};if((e.arrays||e.defaults)&&(o.imageryType=[]),e.defaults&&(o.requirements=null,o.alleycatUrlTemplate=null,o.metadataUrlTemplate=null,o.thumbnailUrlTemplate=null,o.kmlUrlTemplate=null,o.featuredToursUrl=null,o.enableViewportFallback=!1,o.viewportFallbackDistance=0,o.fallbackAlleycatUrlTemplate=null),t.requirements!=null&&t.hasOwnProperty("requirements")&&(o.requirements=n.keyhole.dbroot.RequirementProto.toObject(t.requirements,e)),t.alleycatUrlTemplate!=null&&t.hasOwnProperty("alleycatUrlTemplate")&&(o.alleycatUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.alleycatUrlTemplate,e)),t.metadataUrlTemplate!=null&&t.hasOwnProperty("metadataUrlTemplate")&&(o.metadataUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.metadataUrlTemplate,e)),t.thumbnailUrlTemplate!=null&&t.hasOwnProperty("thumbnailUrlTemplate")&&(o.thumbnailUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.thumbnailUrlTemplate,e)),t.kmlUrlTemplate!=null&&t.hasOwnProperty("kmlUrlTemplate")&&(o.kmlUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.kmlUrlTemplate,e)),t.featuredToursUrl!=null&&t.hasOwnProperty("featuredToursUrl")&&(o.featuredToursUrl=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.featuredToursUrl,e)),t.enableViewportFallback!=null&&t.hasOwnProperty("enableViewportFallback")&&(o.enableViewportFallback=t.enableViewportFallback),t.viewportFallbackDistance!=null&&t.hasOwnProperty("viewportFallbackDistance")&&(o.viewportFallbackDistance=t.viewportFallbackDistance),t.fallbackAlleycatUrlTemplate!=null&&t.hasOwnProperty("fallbackAlleycatUrlTemplate")&&(o.fallbackAlleycatUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.fallbackAlleycatUrlTemplate,e)),t.imageryType&&t.imageryType.length){o.imageryType=[];for(var a=0;a<t.imageryType.length;++a)o.imageryType[a]=n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto.toObject(t.imageryType[a],e)}return o},l.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},l.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/keyhole.dbroot.EndSnippetProto.FilmstripConfigProto"},l.AlleycatImageryTypeProto=function(){function r(t){if(t)for(var e=Object.keys(t),o=0;o<e.length;++o)t[e[o]]!=null&&(this[e[o]]=t[e[o]])}return r.prototype.imageryTypeId=0,r.prototype.imageryTypeLabel="",r.prototype.metadataUrlTemplate=null,r.prototype.thumbnailUrlTemplate=null,r.prototype.kmlUrlTemplate=null,r.decode=function(e,o){e instanceof f||(e=f.create(e));for(var a=o===void 0?e.len:e.pos+o,p=new n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto;e.pos<a;){var y=e.uint32();switch(y>>>3){case 1:{p.imageryTypeId=e.int32();break}case 2:{p.imageryTypeLabel=e.string();break}case 3:{p.metadataUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.decode(e,e.uint32());break}case 4:{p.thumbnailUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.decode(e,e.uint32());break}case 5:{p.kmlUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.decode(e,e.uint32());break}default:e.skipType(y&7);break}}return p},r.verify=function(e){if(typeof e!="object"||e===null)return"object expected";if(e.imageryTypeId!=null&&e.hasOwnProperty("imageryTypeId")&&!u.isInteger(e.imageryTypeId))return"imageryTypeId: integer expected";if(e.imageryTypeLabel!=null&&e.hasOwnProperty("imageryTypeLabel")&&!u.isString(e.imageryTypeLabel))return"imageryTypeLabel: string expected";if(e.metadataUrlTemplate!=null&&e.hasOwnProperty("metadataUrlTemplate")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(e.metadataUrlTemplate);if(o)return"metadataUrlTemplate."+o}if(e.thumbnailUrlTemplate!=null&&e.hasOwnProperty("thumbnailUrlTemplate")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(e.thumbnailUrlTemplate);if(o)return"thumbnailUrlTemplate."+o}if(e.kmlUrlTemplate!=null&&e.hasOwnProperty("kmlUrlTemplate")){var o=n.keyhole.dbroot.StringIdOrValueProto.verify(e.kmlUrlTemplate);if(o)return"kmlUrlTemplate."+o}return null},r.fromObject=function(e){if(e instanceof n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto)return e;var o=new n.keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto;if(e.imageryTypeId!=null&&(o.imageryTypeId=e.imageryTypeId|0),e.imageryTypeLabel!=null&&(o.imageryTypeLabel=String(e.imageryTypeLabel)),e.metadataUrlTemplate!=null){if(typeof e.metadataUrlTemplate!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto.metadataUrlTemplate: object expected");o.metadataUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.fromObject(e.metadataUrlTemplate)}if(e.thumbnailUrlTemplate!=null){if(typeof e.thumbnailUrlTemplate!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto.thumbnailUrlTemplate: object expected");o.thumbnailUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.fromObject(e.thumbnailUrlTemplate)}if(e.kmlUrlTemplate!=null){if(typeof e.kmlUrlTemplate!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto.kmlUrlTemplate: object expected");o.kmlUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.fromObject(e.kmlUrlTemplate)}return o},r.toObject=function(e,o){o||(o={});var a={};return o.defaults&&(a.imageryTypeId=0,a.imageryTypeLabel="",a.metadataUrlTemplate=null,a.thumbnailUrlTemplate=null,a.kmlUrlTemplate=null),e.imageryTypeId!=null&&e.hasOwnProperty("imageryTypeId")&&(a.imageryTypeId=e.imageryTypeId),e.imageryTypeLabel!=null&&e.hasOwnProperty("imageryTypeLabel")&&(a.imageryTypeLabel=e.imageryTypeLabel),e.metadataUrlTemplate!=null&&e.hasOwnProperty("metadataUrlTemplate")&&(a.metadataUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.toObject(e.metadataUrlTemplate,o)),e.thumbnailUrlTemplate!=null&&e.hasOwnProperty("thumbnailUrlTemplate")&&(a.thumbnailUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.toObject(e.thumbnailUrlTemplate,o)),e.kmlUrlTemplate!=null&&e.hasOwnProperty("kmlUrlTemplate")&&(a.kmlUrlTemplate=n.keyhole.dbroot.StringIdOrValueProto.toObject(e.kmlUrlTemplate,o)),a},r.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},r.getTypeUrl=function(e){return e===void 0&&(e="type.googleapis.com"),e+"/keyhole.dbroot.EndSnippetProto.FilmstripConfigProto.AlleycatImageryTypeProto"},r}(),l}(),i.StarDataProto=function(){function l(r){if(r)for(var t=Object.keys(r),e=0;e<t.length;++e)r[t[e]]!=null&&(this[t[e]]=r[t[e]])}return l.prototype.url=null,l.decode=function(t,e){t instanceof f||(t=f.create(t));for(var o=e===void 0?t.len:t.pos+e,a=new n.keyhole.dbroot.EndSnippetProto.StarDataProto;t.pos<o;){var p=t.uint32();switch(p>>>3){case 1:{a.url=n.keyhole.dbroot.StringIdOrValueProto.decode(t,t.uint32());break}default:t.skipType(p&7);break}}return a},l.verify=function(t){if(typeof t!="object"||t===null)return"object expected";if(t.url!=null&&t.hasOwnProperty("url")){var e=n.keyhole.dbroot.StringIdOrValueProto.verify(t.url);if(e)return"url."+e}return null},l.fromObject=function(t){if(t instanceof n.keyhole.dbroot.EndSnippetProto.StarDataProto)return t;var e=new n.keyhole.dbroot.EndSnippetProto.StarDataProto;if(t.url!=null){if(typeof t.url!="object")throw TypeError(".keyhole.dbroot.EndSnippetProto.StarDataProto.url: object expected");e.url=n.keyhole.dbroot.StringIdOrValueProto.fromObject(t.url)}return e},l.toObject=function(t,e){e||(e={});var o={};return e.defaults&&(o.url=null),t.url!=null&&t.hasOwnProperty("url")&&(o.url=n.keyhole.dbroot.StringIdOrValueProto.toObject(t.url,e)),o},l.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},l.getTypeUrl=function(t){return t===void 0&&(t="type.googleapis.com"),t+"/keyhole.dbroot.EndSnippetProto.StarDataProto"},l}(),i}(),c.DbRootRefProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.url="",i.prototype.isCritical=!1,i.prototype.requirements=null,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.DbRootRefProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 2:{o.url=r.string();break}case 1:{o.isCritical=r.bool();break}case 3:{o.requirements=n.keyhole.dbroot.RequirementProto.decode(r,r.uint32());break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("url"))throw u.ProtocolError("missing required 'url'",{instance:o});return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(!u.isString(r.url))return"url: string expected";if(r.isCritical!=null&&r.hasOwnProperty("isCritical")&&typeof r.isCritical!="boolean")return"isCritical: boolean expected";if(r.requirements!=null&&r.hasOwnProperty("requirements")){var t=n.keyhole.dbroot.RequirementProto.verify(r.requirements);if(t)return"requirements."+t}return null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.DbRootRefProto)return r;var t=new n.keyhole.dbroot.DbRootRefProto;if(r.url!=null&&(t.url=String(r.url)),r.isCritical!=null&&(t.isCritical=!!r.isCritical),r.requirements!=null){if(typeof r.requirements!="object")throw TypeError(".keyhole.dbroot.DbRootRefProto.requirements: object expected");t.requirements=n.keyhole.dbroot.RequirementProto.fromObject(r.requirements)}return t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.isCritical=!1,e.url="",e.requirements=null),r.isCritical!=null&&r.hasOwnProperty("isCritical")&&(e.isCritical=r.isCritical),r.url!=null&&r.hasOwnProperty("url")&&(e.url=r.url),r.requirements!=null&&r.hasOwnProperty("requirements")&&(e.requirements=n.keyhole.dbroot.RequirementProto.toObject(r.requirements,t)),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.DbRootRefProto"},i}(),c.DatabaseVersionProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.quadtreeVersion=0,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.DatabaseVersionProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.quadtreeVersion=r.uint32();break}default:r.skipType(a&7);break}}if(!o.hasOwnProperty("quadtreeVersion"))throw u.ProtocolError("missing required 'quadtreeVersion'",{instance:o});return o},i.verify=function(r){return typeof r!="object"||r===null?"object expected":u.isInteger(r.quadtreeVersion)?null:"quadtreeVersion: integer expected"},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.DatabaseVersionProto)return r;var t=new n.keyhole.dbroot.DatabaseVersionProto;return r.quadtreeVersion!=null&&(t.quadtreeVersion=r.quadtreeVersion>>>0),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.quadtreeVersion=0),r.quadtreeVersion!=null&&r.hasOwnProperty("quadtreeVersion")&&(e.quadtreeVersion=r.quadtreeVersion),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.DatabaseVersionProto"},i}(),c.DbRootProto=function(){function i(l){if(this.providerInfo=[],this.nestedFeature=[],this.styleAttribute=[],this.styleMap=[],this.translationEntry=[],this.dbrootReference=[],l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.databaseName=null,i.prototype.imageryPresent=!0,i.prototype.protoImagery=!1,i.prototype.terrainPresent=!1,i.prototype.providerInfo=u.emptyArray,i.prototype.nestedFeature=u.emptyArray,i.prototype.styleAttribute=u.emptyArray,i.prototype.styleMap=u.emptyArray,i.prototype.endSnippet=null,i.prototype.translationEntry=u.emptyArray,i.prototype.language="en",i.prototype.version=5,i.prototype.dbrootReference=u.emptyArray,i.prototype.databaseVersion=null,i.prototype.refreshTimeout=0,i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.DbRootProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 15:{o.databaseName=n.keyhole.dbroot.StringIdOrValueProto.decode(r,r.uint32());break}case 1:{o.imageryPresent=r.bool();break}case 14:{o.protoImagery=r.bool();break}case 2:{o.terrainPresent=r.bool();break}case 3:{o.providerInfo&&o.providerInfo.length||(o.providerInfo=[]),o.providerInfo.push(n.keyhole.dbroot.ProviderInfoProto.decode(r,r.uint32()));break}case 4:{o.nestedFeature&&o.nestedFeature.length||(o.nestedFeature=[]),o.nestedFeature.push(n.keyhole.dbroot.NestedFeatureProto.decode(r,r.uint32()));break}case 5:{o.styleAttribute&&o.styleAttribute.length||(o.styleAttribute=[]),o.styleAttribute.push(n.keyhole.dbroot.StyleAttributeProto.decode(r,r.uint32()));break}case 6:{o.styleMap&&o.styleMap.length||(o.styleMap=[]),o.styleMap.push(n.keyhole.dbroot.StyleMapProto.decode(r,r.uint32()));break}case 7:{o.endSnippet=n.keyhole.dbroot.EndSnippetProto.decode(r,r.uint32());break}case 8:{o.translationEntry&&o.translationEntry.length||(o.translationEntry=[]),o.translationEntry.push(n.keyhole.dbroot.StringEntryProto.decode(r,r.uint32()));break}case 9:{o.language=r.string();break}case 10:{o.version=r.int32();break}case 11:{o.dbrootReference&&o.dbrootReference.length||(o.dbrootReference=[]),o.dbrootReference.push(n.keyhole.dbroot.DbRootRefProto.decode(r,r.uint32()));break}case 13:{o.databaseVersion=n.keyhole.dbroot.DatabaseVersionProto.decode(r,r.uint32());break}case 16:{o.refreshTimeout=r.int32();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(r.databaseName!=null&&r.hasOwnProperty("databaseName")){var t=n.keyhole.dbroot.StringIdOrValueProto.verify(r.databaseName);if(t)return"databaseName."+t}if(r.imageryPresent!=null&&r.hasOwnProperty("imageryPresent")&&typeof r.imageryPresent!="boolean")return"imageryPresent: boolean expected";if(r.protoImagery!=null&&r.hasOwnProperty("protoImagery")&&typeof r.protoImagery!="boolean")return"protoImagery: boolean expected";if(r.terrainPresent!=null&&r.hasOwnProperty("terrainPresent")&&typeof r.terrainPresent!="boolean")return"terrainPresent: boolean expected";if(r.providerInfo!=null&&r.hasOwnProperty("providerInfo")){if(!Array.isArray(r.providerInfo))return"providerInfo: array expected";for(var e=0;e<r.providerInfo.length;++e){var t=n.keyhole.dbroot.ProviderInfoProto.verify(r.providerInfo[e]);if(t)return"providerInfo."+t}}if(r.nestedFeature!=null&&r.hasOwnProperty("nestedFeature")){if(!Array.isArray(r.nestedFeature))return"nestedFeature: array expected";for(var e=0;e<r.nestedFeature.length;++e){var t=n.keyhole.dbroot.NestedFeatureProto.verify(r.nestedFeature[e]);if(t)return"nestedFeature."+t}}if(r.styleAttribute!=null&&r.hasOwnProperty("styleAttribute")){if(!Array.isArray(r.styleAttribute))return"styleAttribute: array expected";for(var e=0;e<r.styleAttribute.length;++e){var t=n.keyhole.dbroot.StyleAttributeProto.verify(r.styleAttribute[e]);if(t)return"styleAttribute."+t}}if(r.styleMap!=null&&r.hasOwnProperty("styleMap")){if(!Array.isArray(r.styleMap))return"styleMap: array expected";for(var e=0;e<r.styleMap.length;++e){var t=n.keyhole.dbroot.StyleMapProto.verify(r.styleMap[e]);if(t)return"styleMap."+t}}if(r.endSnippet!=null&&r.hasOwnProperty("endSnippet")){var t=n.keyhole.dbroot.EndSnippetProto.verify(r.endSnippet);if(t)return"endSnippet."+t}if(r.translationEntry!=null&&r.hasOwnProperty("translationEntry")){if(!Array.isArray(r.translationEntry))return"translationEntry: array expected";for(var e=0;e<r.translationEntry.length;++e){var t=n.keyhole.dbroot.StringEntryProto.verify(r.translationEntry[e]);if(t)return"translationEntry."+t}}if(r.language!=null&&r.hasOwnProperty("language")&&!u.isString(r.language))return"language: string expected";if(r.version!=null&&r.hasOwnProperty("version")&&!u.isInteger(r.version))return"version: integer expected";if(r.dbrootReference!=null&&r.hasOwnProperty("dbrootReference")){if(!Array.isArray(r.dbrootReference))return"dbrootReference: array expected";for(var e=0;e<r.dbrootReference.length;++e){var t=n.keyhole.dbroot.DbRootRefProto.verify(r.dbrootReference[e]);if(t)return"dbrootReference."+t}}if(r.databaseVersion!=null&&r.hasOwnProperty("databaseVersion")){var t=n.keyhole.dbroot.DatabaseVersionProto.verify(r.databaseVersion);if(t)return"databaseVersion."+t}return r.refreshTimeout!=null&&r.hasOwnProperty("refreshTimeout")&&!u.isInteger(r.refreshTimeout)?"refreshTimeout: integer expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.DbRootProto)return r;var t=new n.keyhole.dbroot.DbRootProto;if(r.databaseName!=null){if(typeof r.databaseName!="object")throw TypeError(".keyhole.dbroot.DbRootProto.databaseName: object expected");t.databaseName=n.keyhole.dbroot.StringIdOrValueProto.fromObject(r.databaseName)}if(r.imageryPresent!=null&&(t.imageryPresent=!!r.imageryPresent),r.protoImagery!=null&&(t.protoImagery=!!r.protoImagery),r.terrainPresent!=null&&(t.terrainPresent=!!r.terrainPresent),r.providerInfo){if(!Array.isArray(r.providerInfo))throw TypeError(".keyhole.dbroot.DbRootProto.providerInfo: array expected");t.providerInfo=[];for(var e=0;e<r.providerInfo.length;++e){if(typeof r.providerInfo[e]!="object")throw TypeError(".keyhole.dbroot.DbRootProto.providerInfo: object expected");t.providerInfo[e]=n.keyhole.dbroot.ProviderInfoProto.fromObject(r.providerInfo[e])}}if(r.nestedFeature){if(!Array.isArray(r.nestedFeature))throw TypeError(".keyhole.dbroot.DbRootProto.nestedFeature: array expected");t.nestedFeature=[];for(var e=0;e<r.nestedFeature.length;++e){if(typeof r.nestedFeature[e]!="object")throw TypeError(".keyhole.dbroot.DbRootProto.nestedFeature: object expected");t.nestedFeature[e]=n.keyhole.dbroot.NestedFeatureProto.fromObject(r.nestedFeature[e])}}if(r.styleAttribute){if(!Array.isArray(r.styleAttribute))throw TypeError(".keyhole.dbroot.DbRootProto.styleAttribute: array expected");t.styleAttribute=[];for(var e=0;e<r.styleAttribute.length;++e){if(typeof r.styleAttribute[e]!="object")throw TypeError(".keyhole.dbroot.DbRootProto.styleAttribute: object expected");t.styleAttribute[e]=n.keyhole.dbroot.StyleAttributeProto.fromObject(r.styleAttribute[e])}}if(r.styleMap){if(!Array.isArray(r.styleMap))throw TypeError(".keyhole.dbroot.DbRootProto.styleMap: array expected");t.styleMap=[];for(var e=0;e<r.styleMap.length;++e){if(typeof r.styleMap[e]!="object")throw TypeError(".keyhole.dbroot.DbRootProto.styleMap: object expected");t.styleMap[e]=n.keyhole.dbroot.StyleMapProto.fromObject(r.styleMap[e])}}if(r.endSnippet!=null){if(typeof r.endSnippet!="object")throw TypeError(".keyhole.dbroot.DbRootProto.endSnippet: object expected");t.endSnippet=n.keyhole.dbroot.EndSnippetProto.fromObject(r.endSnippet)}if(r.translationEntry){if(!Array.isArray(r.translationEntry))throw TypeError(".keyhole.dbroot.DbRootProto.translationEntry: array expected");t.translationEntry=[];for(var e=0;e<r.translationEntry.length;++e){if(typeof r.translationEntry[e]!="object")throw TypeError(".keyhole.dbroot.DbRootProto.translationEntry: object expected");t.translationEntry[e]=n.keyhole.dbroot.StringEntryProto.fromObject(r.translationEntry[e])}}if(r.language!=null&&(t.language=String(r.language)),r.version!=null&&(t.version=r.version|0),r.dbrootReference){if(!Array.isArray(r.dbrootReference))throw TypeError(".keyhole.dbroot.DbRootProto.dbrootReference: array expected");t.dbrootReference=[];for(var e=0;e<r.dbrootReference.length;++e){if(typeof r.dbrootReference[e]!="object")throw TypeError(".keyhole.dbroot.DbRootProto.dbrootReference: object expected");t.dbrootReference[e]=n.keyhole.dbroot.DbRootRefProto.fromObject(r.dbrootReference[e])}}if(r.databaseVersion!=null){if(typeof r.databaseVersion!="object")throw TypeError(".keyhole.dbroot.DbRootProto.databaseVersion: object expected");t.databaseVersion=n.keyhole.dbroot.DatabaseVersionProto.fromObject(r.databaseVersion)}return r.refreshTimeout!=null&&(t.refreshTimeout=r.refreshTimeout|0),t},i.toObject=function(r,t){t||(t={});var e={};if((t.arrays||t.defaults)&&(e.providerInfo=[],e.nestedFeature=[],e.styleAttribute=[],e.styleMap=[],e.translationEntry=[],e.dbrootReference=[]),t.defaults&&(e.imageryPresent=!0,e.terrainPresent=!1,e.endSnippet=null,e.language="en",e.version=5,e.databaseVersion=null,e.protoImagery=!1,e.databaseName=null,e.refreshTimeout=0),r.imageryPresent!=null&&r.hasOwnProperty("imageryPresent")&&(e.imageryPresent=r.imageryPresent),r.terrainPresent!=null&&r.hasOwnProperty("terrainPresent")&&(e.terrainPresent=r.terrainPresent),r.providerInfo&&r.providerInfo.length){e.providerInfo=[];for(var o=0;o<r.providerInfo.length;++o)e.providerInfo[o]=n.keyhole.dbroot.ProviderInfoProto.toObject(r.providerInfo[o],t)}if(r.nestedFeature&&r.nestedFeature.length){e.nestedFeature=[];for(var o=0;o<r.nestedFeature.length;++o)e.nestedFeature[o]=n.keyhole.dbroot.NestedFeatureProto.toObject(r.nestedFeature[o],t)}if(r.styleAttribute&&r.styleAttribute.length){e.styleAttribute=[];for(var o=0;o<r.styleAttribute.length;++o)e.styleAttribute[o]=n.keyhole.dbroot.StyleAttributeProto.toObject(r.styleAttribute[o],t)}if(r.styleMap&&r.styleMap.length){e.styleMap=[];for(var o=0;o<r.styleMap.length;++o)e.styleMap[o]=n.keyhole.dbroot.StyleMapProto.toObject(r.styleMap[o],t)}if(r.endSnippet!=null&&r.hasOwnProperty("endSnippet")&&(e.endSnippet=n.keyhole.dbroot.EndSnippetProto.toObject(r.endSnippet,t)),r.translationEntry&&r.translationEntry.length){e.translationEntry=[];for(var o=0;o<r.translationEntry.length;++o)e.translationEntry[o]=n.keyhole.dbroot.StringEntryProto.toObject(r.translationEntry[o],t)}if(r.language!=null&&r.hasOwnProperty("language")&&(e.language=r.language),r.version!=null&&r.hasOwnProperty("version")&&(e.version=r.version),r.dbrootReference&&r.dbrootReference.length){e.dbrootReference=[];for(var o=0;o<r.dbrootReference.length;++o)e.dbrootReference[o]=n.keyhole.dbroot.DbRootRefProto.toObject(r.dbrootReference[o],t)}return r.databaseVersion!=null&&r.hasOwnProperty("databaseVersion")&&(e.databaseVersion=n.keyhole.dbroot.DatabaseVersionProto.toObject(r.databaseVersion,t)),r.protoImagery!=null&&r.hasOwnProperty("protoImagery")&&(e.protoImagery=r.protoImagery),r.databaseName!=null&&r.hasOwnProperty("databaseName")&&(e.databaseName=n.keyhole.dbroot.StringIdOrValueProto.toObject(r.databaseName,t)),r.refreshTimeout!=null&&r.hasOwnProperty("refreshTimeout")&&(e.refreshTimeout=r.refreshTimeout),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.DbRootProto"},i}(),c.EncryptedDbRootProto=function(){function i(l){if(l)for(var r=Object.keys(l),t=0;t<r.length;++t)l[r[t]]!=null&&(this[r[t]]=l[r[t]])}return i.prototype.encryptionType=0,i.prototype.encryptionData=u.newBuffer([]),i.prototype.dbrootData=u.newBuffer([]),i.decode=function(r,t){r instanceof f||(r=f.create(r));for(var e=t===void 0?r.len:r.pos+t,o=new n.keyhole.dbroot.EncryptedDbRootProto;r.pos<e;){var a=r.uint32();switch(a>>>3){case 1:{o.encryptionType=r.int32();break}case 2:{o.encryptionData=r.bytes();break}case 3:{o.dbrootData=r.bytes();break}default:r.skipType(a&7);break}}return o},i.verify=function(r){if(typeof r!="object"||r===null)return"object expected";if(r.encryptionType!=null&&r.hasOwnProperty("encryptionType"))switch(r.encryptionType){default:return"encryptionType: enum value expected";case 0:break}return r.encryptionData!=null&&r.hasOwnProperty("encryptionData")&&!(r.encryptionData&&typeof r.encryptionData.length=="number"||u.isString(r.encryptionData))?"encryptionData: buffer expected":r.dbrootData!=null&&r.hasOwnProperty("dbrootData")&&!(r.dbrootData&&typeof r.dbrootData.length=="number"||u.isString(r.dbrootData))?"dbrootData: buffer expected":null},i.fromObject=function(r){if(r instanceof n.keyhole.dbroot.EncryptedDbRootProto)return r;var t=new n.keyhole.dbroot.EncryptedDbRootProto;switch(r.encryptionType){case"ENCRYPTION_XOR":case 0:t.encryptionType=0;break}return r.encryptionData!=null&&(typeof r.encryptionData=="string"?u.base64.decode(r.encryptionData,t.encryptionData=u.newBuffer(u.base64.length(r.encryptionData)),0):r.encryptionData.length>=0&&(t.encryptionData=r.encryptionData)),r.dbrootData!=null&&(typeof r.dbrootData=="string"?u.base64.decode(r.dbrootData,t.dbrootData=u.newBuffer(u.base64.length(r.dbrootData)),0):r.dbrootData.length>=0&&(t.dbrootData=r.dbrootData)),t},i.toObject=function(r,t){t||(t={});var e={};return t.defaults&&(e.encryptionType=t.enums===String?"ENCRYPTION_XOR":0,t.bytes===String?e.encryptionData="":(e.encryptionData=[],t.bytes!==Array&&(e.encryptionData=u.newBuffer(e.encryptionData))),t.bytes===String?e.dbrootData="":(e.dbrootData=[],t.bytes!==Array&&(e.dbrootData=u.newBuffer(e.dbrootData)))),r.encryptionType!=null&&r.hasOwnProperty("encryptionType")&&(e.encryptionType=t.enums===String?n.keyhole.dbroot.EncryptedDbRootProto.EncryptionType[r.encryptionType]:r.encryptionType),r.encryptionData!=null&&r.hasOwnProperty("encryptionData")&&(e.encryptionData=t.bytes===String?u.base64.encode(r.encryptionData,0,r.encryptionData.length):t.bytes===Array?Array.prototype.slice.call(r.encryptionData):r.encryptionData),r.dbrootData!=null&&r.hasOwnProperty("dbrootData")&&(e.dbrootData=t.bytes===String?u.base64.encode(r.dbrootData,0,r.dbrootData.length):t.bytes===Array?Array.prototype.slice.call(r.dbrootData):r.dbrootData),e},i.prototype.toJSON=function(){return this.constructor.toObject(this,d.util.toJSONOptions)},i.getTypeUrl=function(r){return r===void 0&&(r="type.googleapis.com"),r+"/keyhole.dbroot.EncryptedDbRootProto"},i.EncryptionType=function(){var l={},r=Object.create(l);return r[l[0]="ENCRYPTION_XOR"]=0,r}(),i}(),c}(),b}(),n.keyhole.dbroot};})(); diff --git a/public/Cesium/ThirdParty/wasm_splats_bg.wasm b/public/Cesium/ThirdParty/wasm_splats_bg.wasm new file mode 100644 index 0000000000000000000000000000000000000000..9e46cc4cdf900fd6581e7746070d58ee8d13f19c GIT binary patch literal 26522 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Animation/Animation.css b/public/Cesium/Widgets/Animation/Animation.css new file mode 100644 index 000000000..0f18c52e2 --- /dev/null +++ b/public/Cesium/Widgets/Animation/Animation.css @@ -0,0 +1,127 @@ +/* packages/widgets/Source/Animation/Animation.css */ +.cesium-animation-theme { + visibility: hidden; + display: block; + position: absolute; + z-index: -100; +} +.cesium-animation-themeNormal { + color: #222; +} +.cesium-animation-themeHover { + color: #4488b0; +} +.cesium-animation-themeSelect { + color: #242; +} +.cesium-animation-themeDisabled { + color: #333; +} +.cesium-animation-themeKnob { + color: #222; +} +.cesium-animation-themePointer { + color: #2e2; +} +.cesium-animation-themeSwoosh { + color: #8ac; +} +.cesium-animation-themeSwooshHover { + color: #aef; +} +.cesium-animation-svgText { + fill: #edffff; + font-family: Sans-Serif; + font-size: 15px; + text-anchor: middle; +} +.cesium-animation-blank { + fill: #000; + fill-opacity: 0.01; + stroke: none; +} +.cesium-animation-rectButton { + cursor: pointer; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.cesium-animation-rectButton .cesium-animation-buttonGlow { + fill: #fff; + stroke: none; + display: none; +} +.cesium-animation-rectButton:hover .cesium-animation-buttonGlow { + display: block; +} +.cesium-animation-rectButton .cesium-animation-buttonPath { + fill: #edffff; +} +.cesium-animation-rectButton .cesium-animation-buttonMain { + stroke: #444; + stroke-width: 1.2; +} +.cesium-animation-rectButton:hover .cesium-animation-buttonMain { + stroke: #aef; +} +.cesium-animation-rectButton:active .cesium-animation-buttonMain { + fill: #abd6ff; +} +.cesium-animation-buttonDisabled { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.cesium-animation-buttonDisabled .cesium-animation-buttonMain { + stroke: #555; +} +.cesium-animation-buttonDisabled .cesium-animation-buttonPath { + fill: #818181; +} +.cesium-animation-buttonDisabled .cesium-animation-buttonGlow { + display: none; +} +.cesium-animation-buttonToggled .cesium-animation-buttonGlow { + display: block; + fill: #2e2; +} +.cesium-animation-buttonToggled .cesium-animation-buttonMain { + stroke: #2e2; +} +.cesium-animation-buttonToggled:hover .cesium-animation-buttonGlow { + fill: #fff; +} +.cesium-animation-buttonToggled:hover .cesium-animation-buttonMain { + stroke: #2e2; +} +.cesium-animation-shuttleRingG { + cursor: pointer; +} +.cesium-animation-shuttleRingPointer { + cursor: pointer; +} +.cesium-animation-shuttleRingPausePointer { + cursor: pointer; +} +.cesium-animation-shuttleRingBack { + fill: #181818; + fill-opacity: 0.8; + stroke: #333; + stroke-width: 1.2; +} +.cesium-animation-shuttleRingSwoosh line { + stroke: #8ac; + stroke-width: 3; + stroke-opacity: 0.2; + stroke-linecap: round; +} +.cesium-animation-knobOuter { + cursor: pointer; + stroke: #444; + stroke-width: 1.2; +} +.cesium-animation-knobInner { + cursor: pointer; +} diff --git a/public/Cesium/Widgets/Animation/lighter.css b/public/Cesium/Widgets/Animation/lighter.css new file mode 100644 index 000000000..466ddb603 --- /dev/null +++ b/public/Cesium/Widgets/Animation/lighter.css @@ -0,0 +1,70 @@ +/* packages/widgets/Source/Animation/lighter.css */ +.cesium-lighter .cesium-animation-themeNormal { + color: #e5f2fe; +} +.cesium-lighter .cesium-animation-themeHover { + color: #abd6ff; +} +.cesium-lighter .cesium-animation-themeSelect { + color: #e5f2fe; +} +.cesium-lighter .cesium-animation-themeDisabled { + color: #efefef; +} +.cesium-lighter .cesium-animation-themeKnob { + color: #e1e2e3; +} +.cesium-lighter .cesium-animation-themePointer { + color: #fa5; +} +.cesium-lighter .cesium-animation-themeSwoosh { + color: #ace; +} +.cesium-lighter .cesium-animation-themeSwooshHover { + color: #bdf; +} +.cesium-lighter .cesium-animation-svgText { + fill: #111; +} +.cesium-lighter .cesium-animation-rectButton .cesium-animation-buttonPath { + fill: #111; +} +.cesium-lighter .cesium-animation-rectButton .cesium-animation-buttonMain { + stroke: #759dc0; +} +.cesium-lighter .cesium-animation-buttonToggled .cesium-animation-buttonGlow { + fill: #ffaa2a; +} +.cesium-lighter .cesium-animation-buttonToggled .cesium-animation-buttonMain { + stroke: #ea0; +} +.cesium-lighter .cesium-animation-rectButton:hover .cesium-animation-buttonMain { + stroke: #759dc0; +} +.cesium-lighter .cesium-animation-buttonToggled:hover .cesium-animation-buttonGlow { + fill: #fff; +} +.cesium-lighter .cesium-animation-buttonToggled:hover .cesium-animation-buttonMain { + stroke: #ea0; +} +.cesium-lighter .cesium-animation-rectButton:active .cesium-animation-buttonMain { + fill: #abd6ff; +} +.cesium-lighter .cesium-animation-buttonDisabled .cesium-animation-buttonMain { + stroke: #d3d3d3; +} +.cesium-lighter .cesium-animation-buttonDisabled .cesium-animation-buttonPath { + fill: #818181; +} +.cesium-lighter .cesium-animation-shuttleRingBack { + fill: #fafafa; + fill-opacity: 1; + stroke: #aeaeae; + stroke-width: 1.2; +} +.cesium-lighter .cesium-animation-shuttleRingSwoosh line { + stroke: #8ac; +} +.cesium-lighter .cesium-animation-knobOuter { + stroke: #a5a5a5; +} diff --git a/public/Cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css b/public/Cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css new file mode 100644 index 000000000..ac37d16e0 --- /dev/null +++ b/public/Cesium/Widgets/BaseLayerPicker/BaseLayerPicker.css @@ -0,0 +1,108 @@ +/* packages/widgets/Source/BaseLayerPicker/BaseLayerPicker.css */ +.cesium-baseLayerPicker-selected { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + border: none; +} +.cesium-baseLayerPicker-dropDown { + display: block; + position: absolute; + box-sizing: content-box; + top: auto; + right: 0; + width: 320px; + max-height: 500px; + margin-top: 5px; + background-color: rgba(38, 38, 38, 0.75); + border: 1px solid #444; + padding: 6px; + overflow: auto; + border-radius: 10px; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + transform: translate(0, -20%); + visibility: hidden; + opacity: 0; + transition: + visibility 0s 0.2s, + opacity 0.2s ease-in, + transform 0.2s ease-in; +} +.cesium-baseLayerPicker-dropDown-visible { + transform: translate(0, 0); + visibility: visible; + opacity: 1; + transition: opacity 0.2s ease-out, transform 0.2s ease-out; +} +.cesium-baseLayerPicker-sectionTitle { + display: block; + font-family: sans-serif; + font-size: 16pt; + text-align: left; + color: #edffff; + margin-bottom: 4px; +} +.cesium-baseLayerPicker-choices { + margin-bottom: 5px; +} +.cesium-baseLayerPicker-categoryTitle { + color: #edffff; + font-size: 11pt; +} +.cesium-baseLayerPicker-choices { + display: block; + border: 1px solid #888; + border-radius: 5px; + padding: 5px 0; +} +.cesium-baseLayerPicker-item { + display: inline-block; + vertical-align: top; + margin: 2px 5px; + width: 64px; + text-align: center; + cursor: pointer; +} +.cesium-baseLayerPicker-itemLabel { + display: block; + font-family: sans-serif; + font-size: 8pt; + text-align: center; + vertical-align: middle; + color: #edffff; + cursor: pointer; + word-wrap: break-word; +} +.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemLabel, +.cesium-baseLayerPicker-item:focus .cesium-baseLayerPicker-itemLabel { + text-decoration: underline; +} +.cesium-baseLayerPicker-itemIcon { + display: inline-block; + position: relative; + width: inherit; + height: auto; + background-size: 100% 100%; + border: solid 1px #444; + border-radius: 9px; + color: #edffff; + margin: 0; + padding: 0; + cursor: pointer; + box-sizing: border-box; +} +.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemIcon { + border-color: #fff; + box-shadow: 0 0 8px #fff, 0 0 8px #fff; +} +.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemLabel { + color: rgb(189, 236, 248); +} +.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemIcon { + border: double 4px rgb(189, 236, 248); +} diff --git a/public/Cesium/Widgets/BaseLayerPicker/lighter.css b/public/Cesium/Widgets/BaseLayerPicker/lighter.css new file mode 100644 index 000000000..d43cd3d96 --- /dev/null +++ b/public/Cesium/Widgets/BaseLayerPicker/lighter.css @@ -0,0 +1,22 @@ +/* packages/widgets/Source/BaseLayerPicker/lighter.css */ +.cesium-lighter .cesium-baseLayerPicker-itemIcon { + border-color: #759dc0; +} +.cesium-lighter .cesium-baseLayerPicker-dropDown { + background-color: rgba(240, 240, 240, 0.75); +} +.cesium-lighter .cesium-baseLayerPicker-sectionTitle { + color: black; +} +.cesium-lighter .cesium-baseLayerPicker-itemLabel { + color: black; +} +.cesium-lighter .cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemIcon { + border-color: #000; +} +.cesium-lighter .cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemLabel { + color: rgb(0, 61, 168); +} +.cesium-lighter .cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemIcon { + border: double 4px rgb(0, 61, 168); +} diff --git a/public/Cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css b/public/Cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css new file mode 100644 index 000000000..5b6295b40 --- /dev/null +++ b/public/Cesium/Widgets/Cesium3DTilesInspector/Cesium3DTilesInspector.css @@ -0,0 +1,102 @@ +/* packages/widgets/Source/Cesium3DTilesInspector/Cesium3DTilesInspector.css */ +ul.cesium-cesiumInspector-statistics { + margin: 0; + padding-top: 3px; + padding-bottom: 3px; +} +ul.cesium-cesiumInspector-statistics + ul.cesium-cesiumInspector-statistics { + border-top: 1px solid #aaa; +} +.cesium-cesiumInspector-slider { + margin-top: 5px; +} +.cesium-cesiumInspector-slider input[type=number] { + text-align: left; + background-color: #222; + outline: none; + border: 1px solid #444; + color: #edffff; + width: 100px; + border-radius: 3px; + padding: 1px; + margin-left: 10px; + cursor: auto; +} +.cesium-cesiumInspector-slider input[type=number]::-webkit-outer-spin-button, +.cesium-cesiumInspector-slider input[type=number]::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} +.cesium-cesiumInspector-slider input[type=range] { + margin-left: 5px; + vertical-align: middle; +} +.cesium-cesiumInspector-hide .cesium-cesiumInspector-styleEditor { + display: none; +} +.cesium-cesiumInspector-styleEditor { + padding: 10px; + border-radius: 5px; + background: rgba(48, 51, 54, 0.8); + border: 1px solid #444; +} +.cesium-cesiumInspector-styleEditor textarea { + width: 100%; + height: 300px; + background: transparent; + color: #edffff; + border: none; + padding: 0; + white-space: pre; + overflow-wrap: normal; + overflow-x: auto; +} +.cesium-3DTilesInspector { + width: 300px; + pointer-events: all; +} +.cesium-3DTilesInspector-statistics { + font-size: 11px; +} +.cesium-3DTilesInspector-disabledElementsInfo { + margin: 5px 0 0 0; + padding: 0 0 0 20px; + color: #eed202; +} +.cesium-3DTilesInspector div, +.cesium-3DTilesInspector input[type=range] { + width: 100%; + box-sizing: border-box; +} +.cesium-cesiumInspector-error { + color: #ff9e9e; + overflow: auto; +} +.cesium-3DTilesInspector .cesium-cesiumInspector-section { + margin-top: 3px; +} +.cesium-3DTilesInspector .cesium-cesiumInspector-sectionHeader + .cesium-cesiumInspector-show { + border-top: 1px solid white; +} +input.cesium-cesiumInspector-url { + overflow: hidden; + white-space: nowrap; + overflow-x: scroll; + background-color: transparent; + color: white; + outline: none; + border: none; + height: 1em; + width: 100%; +} +.cesium-cesiumInspector .field-group { + display: table; +} +.cesium-cesiumInspector .field-group > label { + display: table-cell; + font-weight: bold; +} +.cesium-cesiumInspector .field-group > .field { + display: table-cell; + width: 100%; +} diff --git a/public/Cesium/Widgets/CesiumInspector/CesiumInspector.css b/public/Cesium/Widgets/CesiumInspector/CesiumInspector.css new file mode 100644 index 000000000..aeb7700e9 --- /dev/null +++ b/public/Cesium/Widgets/CesiumInspector/CesiumInspector.css @@ -0,0 +1,113 @@ +/* packages/widgets/Source/CesiumInspector/CesiumInspector.css */ +.cesium-cesiumInspector { + border-radius: 5px; + transition: width ease-in-out 0.25s; + background: rgba(48, 51, 54, 0.8); + border: 1px solid #444; + color: #edffff; + display: inline-block; + position: relative; + padding: 4px 12px; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + overflow: hidden; +} +.cesium-cesiumInspector-button { + text-align: center; + font-size: 11pt; +} +.cesium-cesiumInspector-visible .cesium-cesiumInspector-button { + border-bottom: 1px solid #aaa; + padding-bottom: 3px; +} +.cesium-cesiumInspector input:enabled, +.cesium-cesiumInspector-button { + cursor: pointer; +} +.cesium-cesiumInspector-visible { + width: 185px; + height: auto; +} +.cesium-cesiumInspector-hidden { + width: 122px; + height: 17px; +} +.cesium-cesiumInspector-sectionContent { + max-height: 600px; +} +.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionContent { + max-height: 0; + padding: 0 !important; + overflow: hidden; +} +.cesium-cesiumInspector-dropDown { + margin: 5px 0; + font-family: sans-serif; + font-size: 10pt; + width: 185px; +} +.cesium-cesiumInspector-frustumStatistics { + padding-left: 10px; + padding: 5px; + background-color: rgba(80, 80, 80, 0.75); +} +.cesium-cesiumInspector-pickButton { + background-color: rgba(0, 0, 0, 0.3); + border: 1px solid #444; + color: #edffff; + border-radius: 5px; + padding: 3px 7px; + cursor: pointer; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + margin: 0 auto; +} +.cesium-cesiumInspector-pickButton:focus { + outline: none; +} +.cesium-cesiumInspector-pickButton:active, +.cesium-cesiumInspector-pickButtonHighlight { + color: #000; + background: #adf; + border-color: #fff; + box-shadow: 0 0 8px #fff; +} +.cesium-cesiumInspector-center { + text-align: center; +} +.cesium-cesiumInspector-sectionHeader { + font-weight: bold; + font-size: 10pt; + margin: 0; + cursor: pointer; +} +.cesium-cesiumInspector-pickSection { + border: 1px solid #aaa; + border-radius: 5px; + padding: 3px; + margin-bottom: 5px; +} +.cesium-cesiumInspector-sectionContent { + margin-bottom: 10px; + transition: max-height 0.25s; +} +.cesium-cesiumInspector-tileText { + padding-bottom: 10px; + border-bottom: 1px solid #aaa; +} +.cesium-cesiumInspector-relativeText { + padding-top: 10px; +} +.cesium-cesiumInspector-sectionHeader::before { + margin-right: 5px; + content: "-"; + width: 1ch; + display: inline-block; +} +.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionHeader::before { + content: "+"; +} diff --git a/public/Cesium/Widgets/CesiumWidget/CesiumWidget.css b/public/Cesium/Widgets/CesiumWidget/CesiumWidget.css new file mode 100644 index 000000000..0763b6496 --- /dev/null +++ b/public/Cesium/Widgets/CesiumWidget/CesiumWidget.css @@ -0,0 +1,119 @@ +.cesium-widget { + font-family: sans-serif; + font-size: 16px; + overflow: hidden; + display: block; + position: relative; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.cesium-widget, +.cesium-widget canvas { + width: 100%; + height: 100%; + touch-action: none; +} + +.cesium-widget-credits { + display: block; + position: absolute; + bottom: 0; + left: 0; + color: #fff; + font-size: 10px; + text-shadow: 0px 0px 2px #000000; + padding-right: 5px; +} + +.cesium-widget-errorPanel { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + text-align: center; + background: rgba(0, 0, 0, 0.7); + z-index: 99999; +} + +.cesium-widget-errorPanel:before { + display: inline-block; + vertical-align: middle; + height: 100%; + content: ""; +} + +.cesium-widget-errorPanel-content { + width: 75%; + max-width: 500px; + display: inline-block; + text-align: left; + vertical-align: middle; + border: 1px solid #510c00; + border-radius: 7px; + background-color: #f0d9d5; + font-size: 14px; + color: #510c00; +} + +.cesium-widget-errorPanel-content.expanded { + max-width: 75%; +} + +.cesium-widget-errorPanel-header { + font-size: 18px; + font-family: "Open Sans", Verdana, Geneva, sans-serif; + background: #d69d93; + border-bottom: 2px solid #510c00; + padding-bottom: 10px; + border-radius: 3px 3px 0 0; + padding: 15px; +} + +.cesium-widget-errorPanel-scroll { + overflow: auto; + font-family: "Open Sans", Verdana, Geneva, sans-serif; + white-space: pre-wrap; + padding: 0 15px; + margin: 10px 0 20px 0; +} + +.cesium-widget-errorPanel-buttonPanel { + padding: 0 15px; + margin: 10px 0 20px 0; + text-align: right; +} + +.cesium-widget-errorPanel-buttonPanel button { + border-color: #510c00; + background: #d69d93; + color: #202020; + margin: 0; +} +.cesium-widget-errorPanel-buttonPanel button:focus { + border-color: #510c00; + background: #f0d9d5; + color: #510c00; +} +.cesium-widget-errorPanel-buttonPanel button:hover { + border-color: #510c00; + background: #f0d9d5; + color: #510c00; +} +.cesium-widget-errorPanel-buttonPanel button:active { + border-color: #510c00; + background: #b17b72; + color: #510c00; +} + +.cesium-widget-errorPanel-more-details { + text-decoration: underline; + cursor: pointer; +} + +.cesium-widget-errorPanel-more-details:hover { + color: #2b0700; +} diff --git a/public/Cesium/Widgets/CesiumWidget/lighter.css b/public/Cesium/Widgets/CesiumWidget/lighter.css new file mode 100644 index 000000000..899e024cb --- /dev/null +++ b/public/Cesium/Widgets/CesiumWidget/lighter.css @@ -0,0 +1,14 @@ +.cesium-lighter .cesium-widget-errorPanel { + background: rgba(255, 255, 255, 0.7); +} + +.cesium-lighter .cesium-widget-errorPanel-content { + border: 1px solid #526f82; + border-radius: 7px; + background-color: white; + color: black; +} + +.cesium-lighter .cesium-widget-errorPanel-header { + color: #b87d00; +} diff --git a/public/Cesium/Widgets/FullscreenButton/FullscreenButton.css b/public/Cesium/Widgets/FullscreenButton/FullscreenButton.css new file mode 100644 index 000000000..fdb0a411a --- /dev/null +++ b/public/Cesium/Widgets/FullscreenButton/FullscreenButton.css @@ -0,0 +1,8 @@ +/* packages/widgets/Source/FullscreenButton/FullscreenButton.css */ +.cesium-button.cesium-fullscreenButton { + display: block; + width: 100%; + height: 100%; + margin: 0; + border-radius: 0; +} diff --git a/public/Cesium/Widgets/Geocoder/Geocoder.css b/public/Cesium/Widgets/Geocoder/Geocoder.css new file mode 100644 index 000000000..a0b478fc4 --- /dev/null +++ b/public/Cesium/Widgets/Geocoder/Geocoder.css @@ -0,0 +1,70 @@ +/* packages/widgets/Source/Geocoder/Geocoder.css */ +.cesium-viewer-geocoderContainer .cesium-geocoder-input { + border: solid 1px #444; + background-color: rgba(40, 40, 40, 0.7); + color: white; + display: inline-block; + vertical-align: middle; + width: 0; + height: 32px; + margin: 0; + padding: 0 32px 0 0; + border-radius: 0; + box-sizing: border-box; + transition: width ease-in-out 0.25s, background-color 0.2s ease-in-out; + -webkit-appearance: none; +} +.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input { + border-color: #aef; + box-shadow: 0 0 8px #fff; +} +.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus { + border-color: #ea4; + background-color: rgba(15, 15, 15, 0.9); + box-shadow: none; + outline: none; +} +.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input, +.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus, +.cesium-viewer-geocoderContainer .cesium-geocoder-input-wide { + padding-left: 4px; + width: 250px; +} +.cesium-viewer-geocoderContainer .search-results { + position: absolute; + background-color: #000; + color: #eee; + overflow-y: auto; + opacity: 0.8; + width: 100%; +} +.cesium-viewer-geocoderContainer .search-results ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.cesium-viewer-geocoderContainer .search-results ul li { + font-size: 14px; + padding: 3px 10px; +} +.cesium-viewer-geocoderContainer .search-results ul li:hover { + cursor: pointer; +} +.cesium-viewer-geocoderContainer .search-results ul li.active { + background: #48b; +} +.cesium-geocoder-searchButton { + background-color: #303336; + display: inline-block; + position: absolute; + cursor: pointer; + width: 32px; + top: 1px; + right: 1px; + height: 30px; + vertical-align: middle; + fill: #edffff; +} +.cesium-geocoder-searchButton:hover { + background-color: #48b; +} diff --git a/public/Cesium/Widgets/Geocoder/lighter.css b/public/Cesium/Widgets/Geocoder/lighter.css new file mode 100644 index 000000000..b15c18924 --- /dev/null +++ b/public/Cesium/Widgets/Geocoder/lighter.css @@ -0,0 +1,17 @@ +/* packages/widgets/Source/Geocoder/lighter.css */ +.cesium-lighter .cesium-geocoder-input { + border: solid 1px #759dc0; + background-color: rgba(240, 240, 240, 0.9); + color: black; +} +.cesium-lighter .cesium-viewer-geocoderContainer:hover .cesium-geocoder-input { + border-color: #aef; + box-shadow: 0 0 8px #fff; +} +.cesium-lighter .cesium-geocoder-searchButton { + background-color: #e2f0ff; + fill: #111; +} +.cesium-lighter .cesium-geocoder-searchButton:hover { + background-color: #a6d2ff; +} diff --git a/public/Cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css b/public/Cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css new file mode 100644 index 000000000..49b623064 --- /dev/null +++ b/public/Cesium/Widgets/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css @@ -0,0 +1,27 @@ +/* packages/widgets/Source/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css */ +.cesium-viewer-i3s-explorer ul { + list-style-type: none; +} +.cesium-viewer-i3s-explorer .layersList { + padding: 0; +} +.cesium-viewer-i3s-explorer input { + margin: 0 3px 0 0; +} +.cesium-viewer-i3s-explorer .expandItem { + cursor: pointer; + user-select: none; + width: 20px; +} +.cesium-viewer-i3s-explorer .nested, +.cesium-viewer-i3s-explorer #bsl-wrapper { + display: none; +} +.cesium-viewer-i3s-explorer .active { + display: block; +} +.cesium-viewer-i3s-explorer .li-wrapper { + display: flex; + flex-direction: row; + align-content: center; +} diff --git a/public/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png b/public/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png new file mode 100644 index 0000000000000000000000000000000000000000..bd5976d24d5687ad29a2760511656d4158c63016 GIT binary patch literal 8624 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 A0RR91 literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png b/public/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png new file mode 100644 index 0000000000000000000000000000000000000000..46ffe9c6f21dcf1ce2ac0de44b62bbb59ed89c35 GIT binary patch literal 12290 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�mL;W<>miSO$#?GD`$6G7mrvZ)W$yo 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png b/public/Cesium/Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png new file mode 100644 index 0000000000000000000000000000000000000000..286f3a0574bae93ff2d8a0d6c578dce0c3a904f7 GIT binary patch literal 9905 zcmY*<1yCJb67I#_U4y&3I~NG<8r)qj7Mu{=or^oc-Q8V-B)Ge~1YZ8#eY@|Ssh<8$ z&(~j{K2uXQH8l|`N-`*jgopqD07Xt#O6{)~`^Vs6|DMZjTsHnX2sbqu2|)EU@$uhD zh=q=vrJ^E$;V*^<z(8OEp#Gu!Jpd4d0GNMa0N^tO(SNZT1l@l)kN`lK4FLK-9KFB( zpCS9#{$~HjL*+sIPcaYjzihEQsQ=-A(wgj88~!>3XIWi0000T=AA<mZv+)0_>Dp-M zfOHfU1k9WqSWL{FOf6Wv9Gw5j0tk5t{Dlq{AQLh#2YW|10WV>Se=!99;(x-d6lDLR zfb4`RbQD#{B%NF>$aq-TSlB2;5Xs2Mgj~%n1=OT~|4IKl6Q-~Rft&?cSv@^HSv)ye zoLsF~+4=eTS=l&PIXIaAGML@G9YH2u%#Lo9{}%bbI#L#HX0A5QAR8w~vVU|<Or6|8 z!W0z$6#DP@_c}o~mjA2d==Pts{x-<^&lOg77B<%ZYX40Y`X?%&>}q52xAH&wBJ4u{ zV*Y=z|I`s;{ipc<vzUK(`mgBURz(nnSpU0iB8UWr+i(B?m5H2`xP}*md*)aJ)v|l8 zvZm#dP*)us7a;}w0_qs512(z$VT{&$E`i~K3BP>=jchpr*X%&1T@G!)=9D&cS#5)A z*;m~R-kB%Cg{tuu(f0$da0<d0!!xbS(T7)S6vJUt?wDN@l0`FW!X~XVv`jwI$GTO= z0#`m@A)V=r=i+Bl-Bf7}iW{alKMOq7ss^oZKC!CI2MO9Os>0apx~!({88Y0fGIQ2L zQ?216Cd>@d%u5p%LhDlnOAhsx-2VP+8!`Oa$}<zT-ak(k%Ou=Xf0}U+jDQ4U2DZ`R ztocMXb$*EHHz7`C`G`C(v{4?8CwaSn_>Nqlb358{6RL_+)na>Bk*-d$JiJO0GwKp= z)m!smK%(t#XWk1Cy1yU%W_V;V;Y0OF|1z9^;-`OMM422;BX!6Gb|Wdej{Z#S$@cZi zjeF@-Q=>d(v|LxVOhen)xMQ8%c%yj0ryP9-QFlMRd$q6@(&EfRFhqqzox|TWu_-66 zktJ7o(np|1np6<JY`_@mfM~XHKL-)X$=ib9chELUNTWa({>*aLjH#etuQByB#-JC6 zIGsNH^scQ+oMm_PzT;7$aT!4-3S^Zdx<t$jBYt1-jn>b43IvH;xo8UVh`amB#zEid z=ONP}3uy%z9l0*C5CS^~6*0;iiZnc?W=uirB|>vG@nji#Xz35PgFh@aI3$y85gsS$ z40y!NLR@i>b4=vTk=_$;UhT2RwwQ&_JWDc6yWt22DfrdH)=o*JdSkIVL+pk|T&CRw ze{aTvyaDvK7W!wX^X5|>)KhX8op_XJF-MEFL&>L^h&zJ@%`}bl0X647tp<|UbrIX9 zexiI{Ndi3y=H?FRm#jlXYUat;+k9d^O~etaI@`iW#M^1Jy1|w<`iVI9uza(nXjn86 zQ;%~GYE<1QH*4dTL8CaGYLRXzw1>Li;V{xa?P9#LE(*kMrZ%`GbcT;0Zk;S$)}`o> z!bcDd+@O~E4<-ZPl}pg%2IO8vvHCF_aHVl|J1|6jTP2lzf#S9cc8krE3?VR%8XTm@ zPU{5*tYf@#eWw$J$-sA;aF4?U^NVatX2YDvU6cB)VLy;ylh}{edk8kWLDLFnKx1XX z71@C8gU+Nczg()?k458J0%iF?Y>Go91x!0#X0$n-9aD#NIE6>_{3h&QxWR3(@+$Ds z^S?R$W}I>k?E;nL^<^5?6_;O{kZlk2*H|Ig4}CXx2=xYM(3&pzYqaS~eQrfJrp#ja zzusU_brXG?*F^X-!Wek)b+*s4nceV4;u~ZmS;X?rw^w{&VH1yzqej6xL#D!w375Dp zOb0$ogTc1(LC2`2BYY!?aVx&C)>9GiF_yH?w~&GAZZB8IblkLGvbMR6m<nQFHTp83 zmc8GhJ!}_G|M;|EMM-@m(mHHh8tj4mjv<T5Tp?yzeZx!I#K5gzBn~^aVUMQ^>(@u1 zd-b<Gr?hA<LKpBwrc8PCOW?j38A+p%-E6y6$}RucYVaK!z<}1tyI+guRqYrJ=kofn zjreFFmFTmZB?d$Y2I0;ON@9kvYKQDZFX~V-geZtaJpi%oDZf-KaeA#>MBuL(ae?KG z^`@1B6_f^qsfWEpbfI12vYv7p%HGrS|4^ZrK7;fJALBZn{25mE(RBueCj*{9XmpNd z?crtIaC2u_FhLZ$BdCL$5G(P6V2q(y&;IS$A<?PpKVL8i4&kaG@^oU9kn;AQ7m1yt zn>ggdN^;-y#bD3M<p8sh6Xq}bxA`}|$6D3;H!9Sg32|zGnKZ~|QR%S4>LK!&2%}A* z<oG3(@w7Oh6;V7StaMwUSYU{dBnneOD4``i@XVz!`x#24K)JjwIPIVWt8``Nw;)9? zuKYNJ!m{0UHZD8)*Rn#8^Tb#P_p8}=_qK;X=a2Jz8XOG{yWB7w!bF@%5cYRSO7Ve@ zu970SZnj$rR+abT{A#AUF{AMj*;q8TG1afiag^vrpCqHCVu_`cX(E3tire00bCDNZ znsWq!b$VeU$)2^I)3FDL+$FBq^|%doWcPwF;)<X*<fmLkTRKvmGr9w47NX}ao9Uzk zk^tT_txNX{{4BC!FP$55wIUOHQC8``$@FG8a?hTNtyBE!x-KSdRB-82>aCT_f=r_Y zwh_{P!a}ItF=SFj``^iU={Y&SF*SihdWX6U(K_h{PBA9vlc#V+t*C1fj<FIV$S<x9 z3J!InI1ci0VT3-G5Haf;fGjjuYA$MYmdSR`!iV#mPs5$$X|qWshf+b3h&Z~5v6c;e z(OlHNK}2@PFhe2Y?&TILe;)@Kz|pn|ag`QEmp><hvU*L>)3D>hG478h0+NKp%7!uF zqWRXjyrdB{<tXz&TCDpoB}L?tpWQ2&87ioVlQ^p;FYT!8i7IIkzL%xo%g}8cK9+27 zoVj40*__|~`7;1TfO9nd9Z4bv$?MhzVkR@vmISW<m#c+Rj&zqe?r;+v7mGN-yGA@- z<?;f^DW>svH0v`PSt+cdr&WWyLHtjuWl1lb#2+4AB+?f2-x2UQmXv40#s={Ra}&W> zoM6NGBFBmC`+6I$c=j*7PX4aaH4G^wQEk=Bnq5YpGG^q+z0*|wDBi}ii%+M$^N=db zig&@H)TaAuNb}*Wg~k~eNmZ;LZ0ji;`}~OCF|Cq@;L@4c8M2~LAhW6k*xmHYvTYLQ zCu~yAg788v>R4dN0zbDB3fbtDyj}G2S80nanI?JU8_DzAh#+9OJvyPmr1KJzkVdmE zeQx*_pL{0vBt>>yYr!-|3eF5#W3C>+W<Q5wrIZpkz}<~Y{{$SfO2YWmpL8{M?hmCy zL6xH#l!t(`1vX`X`^6X(|AXFE%%uX=4SgmNUWn3fICxax@K$qjl*x+G0HZ%CxR#D! z>BB-J6ubO_p_ckxB`}hMFq>)U^sTaqu9s>MhemNvEHiywiJ9b^8h~6!0ey$eS*Unr z+YJXR%(l_YG!e_LDLMq&ph5#9uv)^E8;VPg0ONwkZ@?nC9>eoiaSO&*+6iKc)Dys} zH46tf_}rC2oME-KT!l+kEQNlMb2d|6L$TZWFtbwZKALRs$>eL81wwzY6T%L4>ge0C zyK4n?x)ql~vO`2&CU+fX2%dAa4i5gxc|7dklAo7pjwdBdNL##``8g<yirKRAS{z}S zyOD-fRmZ21YcNG^8hBfzmXGj_doN^(5_8@Hlxx}Wo#TQ1=yA6`icEIOu5AtuYvjeZ z8hl4>_M_YQ4;69_wS(yQ^~C1|Ps~%{F-V>wXQZ1q?nx{DDfD?oM`ff8u}WEK3l-SU zmTjsLZbx>(F$Z1(=D2k#;%bt;vi*Q=DUZ%p)PA5&AEITPX1a8%WiX!;X0UcuYWg1# zZd{!5SS9o9S1twxS91lJqS{emIpfMIMk*$i9b($e$A;+A*Vg4zp}iq(kv<K1MYT*x z3vt&1o1AtgL#D)6UOXCcIt;uU5$a=Igc}vyoR)890^r6tl|(lrSp!bpb2C{J_r>pk zj6*}GP1kG;n>O&!n@vBVR`fj|R4MAbR6ElEWPROwP9U!FeW?ZUm3OORKg%sq2n=(n zq@J+3(0Ul8o8qrYIjP*K<4uzj3rGx|Awp4mnu26gNK#zc%NeB7{V&?N-Xe*zm^10z zCQ9$Z*cvzLU*VLI#vR6YVO7i|8VqL4Qu=A0A<|U}A4}y?bAfXd+1cveVDEBKcEI#J z_}!_{;)=D<(#v1t<znzH;(FnA%wdn-sW~?@zEXR2S&fA(-ezOnk@tIV(y)3tnAD&> zJjX$moc?&o)1R4L>R>O;wm?X!=$d3~Vj$#qH=mT#EKK7lnwB{@kde{MMKQ!O;!E5! z2uE}cwQ!>=9OJPuVMQ*UBTw)*Zc-bx|NIT-wvgx>>xR;%kMezBXln|dE{@tK<ga6U zin>#9Qu<SWG~`m$n7H%kOQ_(JK1YdgvJ$li(w*KjoE6oXlcb+Kq^oPym_j^V=vo2W z6$4O3hpDNe-FB3LA{^9eUkrQt1t7EqmPO?IIx1O@h5WSWK6-WsTbG}Hy_O&BQ#gNT zbEB$|XN8wl5QPdwl0akTBsJ?oC>-{)gN>pPr~gheb2}3%7u(|~2R@siTZ8`0q}C4i zNATq1Pd*OX;F?eWj=iMCu-<ESl^1%h*2}^bIZe@Y!0o+${YbdeMoxm)oCU0qw*Z#} z=VTrQ^mvjpH9=Be03&=#-m%YH2JcZy0f_1cVe{U#m6}k{7d>oP%#~|&@j6sv`pZVP zs0fq@-Cuip1L=7w1QHA1sMg?8`QLG29Ydp@c3;Er=Rj3-2Dl1wv;khXHxw+jqqqLN z2T8PF;qH&vd37qSrOK%AF-y;IsqGIvj+v{lgZ(|kIJi<a<(=w7Z(OLMj-@ExSe=;g zc7Y9o?Gg_z;?qB0C+O8`{nNjZH~cVXuPi6?qHmO882Xhg>oy;|PNKkC3SIpZ&?1fd zh_(tHNRV!9w+=Z0eUw>aDAmy(i?Ai6U%C4y?o%(d0k-x^l8KhuyNV*215A1)8jE}j zBaG^ed!kfE3qFhxHg2F1IGUDPN9FoUu%9T-=lY8ZgDlsyAeq9Pq*@*56oRZJ=XPx* zx>DdY<Piyn;EE}Vr4?iUQsgUMr?NIE^9T>O=$9fQ(-$cR@ZcSw(?jXdra5oen!M5* zF$~WNieiwWY1^FGX%NRR2a!JGRespwuiBTv8QKY+O-0^puJcWfZBaC*8$l~rmhNI! zCx$gKAA;^O(WP2w3civy*tS&!<z_0K*lKVU?4tu<5CJ1p7vgsdT|a+f2MI4Ir!TJ} zN+du2bE2wdj2*7j_smS0P+A@6B=E)-6YPSVkjUD|>9W(Y4zF4WrhY18rQ&e@&>&L~ zk<bwZZMV{7?z@r@jfjbwP5S5e9#p5R{q$2Yy|p}*V-JOBp%#Ta>Yq&}*aSnE0c&Jb zv|OQLs(uQk{1XmE*iTH$Og2&CcR~HKJw5*3qz*twIHn={>Hbs^7a^C;{Y7q@Ch57v zvqV#5p^O=tPIWdDa%QI4<W=h?t4`XgfF+Uf+xTBe-(R1p^6s*G_oFmHmYNsdBJZGv zC`%s7Igr!r0ZD4y<PBL$J%XIRKO_@V-D7sc^b=Ed+#Nb`^)xLfSAfDKW4PYjP}=I; zId5LPA>e3pOfGm3vk+0$9Oi)7y5AnKFyr|MpN9lbA&c)Yr@|f*H(~~6Tw(!!=MYSh z<5X$8YLHR8X^{4sPV?Qj)GSp%x067Ai}Q(o<uH-ZC_SlwQu*9znhI1kjYNc{E<qz} zmYn52^7ZzH30yQ)>SV!htW4*ac=C-|WMgAy(|ko*dR1gE5@+Th8uFFF1vjaW+371X zU(BBUaRv^rKvRO+%<g<9F{kxiKBV@@g896xZG?S42Ct}S)9QlC?YzpADH9-P5tVfF zCRc}Nu)N5aU`h@;uX?|sTh~X^e3K0$^`2!hV>&RG+yvSWn%B$pn~aaKzY<D;#x{Uh z>Ewd?>V3@kVat(*jk1*|BLp_*xWN?&QZv`PWCz;E=%QkKn2;xpyS#g_=Rg8JhZZA{ z3oCZ*z<!o4E}OT<FJrxs?JdvP7344)SAsc<t^!uHZx*<=M=aO!CBl1iGyb_^Z0vtH zZ|Pa<1uDp{d3aUoDbPoDPzZ4>iibEc4R@Ig4o{Ku1hkq%D#^9nVMy(FPu@6K=#W=Y zXvM2q`Rw4Zcwh1umzs))XU(Tp>^se0_V(Jg1QSVsF5HG*cv7i^3VPy-n}3cw%JgNp z@*JG3(xR?<aJ?gTZ-t}JHOzxu#ox?PM5Q6>Xdp@^8S*vGh2_I~AqR?iNF+3VtUf38 zm)+YNzWBG5J+2b-|6T(2Ho!P=8WaS77_lk!l!(8y-{Pl{Os3$o#5Rh*Anx8!@lE>5 zqudNhbBb)l?1bgdb&d~*VSpWXAED+An?hmPwqbUk>Am|RA&}hlI-kpxK?J*&*wTT; z$F6C|i<oO{6&q}MFc@B1$G7tpAE&6@i7?@jq<X=@TfUH~G*C!B*X@$yQ0U1WQpt37 zMZN}tbc&N}>j~&hFpl$<2lv4yThGSPWIRRnR@anOd1#(3bCw1?Wi`7m!TqI6R!$Nm zQ4vo=Q9RM?+Ej#h0^eG_)8};wM+kxiA+v-cn!(_d6`@6#Y3diNsn!nNp-gSo-S_K! z`^`Eii_aTmtg#D9VI={dBQ)v0nAN@|6S}6%Cmf^Fc;q=K%75#*Cg_&;>%K#v(4iw2 z-r7DYkM*gPRay#ZIp?9&GwzR}{+uflR6e}w-}!Ne5pNbc6WP_k8F<O=!DS5o`RbyR zFiE_7s%<6Ih4;8iALxzyNmO*WbX6L1Nvm{b;nwT^h1-NHj$ZvtK+Dy~O%h@mHc25g z93B26ut0CJi@5VdinMsMf}cIsQ(HYVHFwydfuVT5NZfm{Wt_e?2igz)P*jARiW(6T z{bmi%c*WIo?9T#vk7#_gUgMQ<PUil%r}K`PLC4>ldp86zG0aELF42A*iiS*1qt~U^ zm)-4w#%q<Kp<Y_3^N-e{)j%9*&rjLY{AOMu3XR^k2RLFjU$cj%N)ZNh9yrhuKb}fO zF=$q=hwxa@r`ZT~%tTLzrm*J3)#G2R03gG>i9}Z@cCy-DsOSP=c!wPoj?!e1XGcbQ z0;fQBAAvC@{_oxTJyaaM9pJaDdocR#ZrEj^Wa7=S5obSEL;Hcl+j79uBfL9FKx^*c z+2~TnfW?~nu4s3Mh1n3_`?gb0<OPNUrBOdtG`owxJLx4*A(!-E4=Y|0|NZJ&rp$O( zdKW3MO&V07mEIr|WIa!U3_lk2G?Y1!9`|WyJ$p`0fTV9Vug-y`MEDSbpo>R;`)<Sq zhNBfK1*hpNYW$CNX6o|m4oG6F@Jc}M$<sC?L(}An;8$}|bV|qgw?K<o6Y+`(FJJIT zvhP;?2LqUjbz#xLmo)fh4<`2_w9b@r@v99|_9Qar`+Mp-NsmvYks&8bvFghS_}ImQ z#3-2Z<0;p0uqNP^1z0pVwM5Wf8*$Q{#SEFBSD<ChnecLRZsGd^!qRuP2VQIubEdq6 zPXNy?qckbkA&2-<p;Re&wY0OQ++0!&+GE8~Wk(|95IxsgMJEf@&mgMYJp5<JO+#m4 z$j}yX7QUoI4*C-(t~TU}aTms<XgU{bWjeUrJzA=x(7msU`sL-(cXUkY*_glxhXPB# z&6Zz#OFZJ4oHr}0g3zv;m38!EcNKYeK7HJ-KAn$fuEl7;&RNFvTy3Tz*DH^`4I%M- zAx}qZUW!#I)-04A@Wcx}4Vj!vcY{9<@6cZ;G7Nu(XujJ(wh;L4@{8I2xEJQ^n7`-s zMKMYzcEMNzLPTLrJ=`cCiHAkgRKQRQi_HMbzY+!(OmSIK#D6ij)q!m>8=V0rqOfmH zCCZMq`PppjHgvU(Zgm*r1+Ik8R)~(o)myDqF9xE_M_#|6U;4L31iV|*SQ#q+Mpmpb zdNA{v@t1g{!<4&lax&{}_<b%cr%p@iDATyS%1*$%a#SZb)9hh<8LYbe!0n$8fL27^ zo*t;>JyKn?pkirmovo!Widmq<^r-30iRUtX)jK1sqqqajmP!56nz6B_puPoaF}^+n zbNmD1bB^6$*uv<)HAHz)wJ5(LuNZoA>S2oXC4b@7HOzh57AYv+cV^mojZ>~W$dLDX zx~~aHI?7)T>0N1;8BJ-)igpzWpi)~@FKDFxrB~XB*PaJO%uQsb0C97HuU=y<ew`r6 zxCMDuMYd4hdxvp_4mUNOg`a|z&J<I9qBy+q6Hd$G04D&KELfHZ<4S%{e*A<9ViP(Z zxyP^~uaaVl@+D*hreoR>q6_UY>M3`#JMPl>XAGE+@<6#1EPLHj!*Km*q)u!>2Sc@? zK^P8a2ip>B|H?Q@nS)=kK5O6RSEK-xW3H@^aR2ptRXmI@zG5o)>6ayP6XaSYN@7M- z;y3_FY^F6LiM08L8l3eD4rwDfZ*JY}<z~W5^M*4~l&iXJNuJAYbqt1QqP?6>*5gz! zl==$2zJbG-9rNR(r*U9r-j(LjEapK--7}4qxd*{{1ykx!B-NNO|7`qaA(ZgqEh)~p z_gjtUqiSEaz~BeYA#>?^vbWAJYDf*$$;h9tyX#hZM^UY<t-XsSMOzc2_Y1fK@dj-5 zOHPm1x?HHU_z>=}SDZs%GqcLlpZ%HTW({wMMSabetuwLjwj*F+rQ>nTGf2}A!Yu5d z$jZfk#x}M9`*!HMSI^a_>-S-)4YHtWry(Im_>=N2qp<O!T7^#Q#6h2W{%ogm`2d5L z!bxi^mf}1w!>$MZpgQXhMrofvowDjTZqj8(h#huObQh#_11dt11I|QP<qFg2&fcgM z!Q)&s(MLBdQB6OTQuh`VF$?-Hlo({>QNYxzHw9bNL48wlQY!|*MDf%Ga;pZ?g+!il zSj6iN_92>LB|t%aB<G@aHW76V-PGSBnQHIND;nE|ySQSD$DsVaOYLjt4}yYY^aggf zj;x`*ZJKvD_rBZ}*)G$WZRr-ALlmaOdM_^8(?a8y{md4&tP!Ix@xw+rLwM=W3Gwe> zErAGk->+T;xwSAtzd}?A1_utwp*At}{Yf#zkd#Mi5GQ|*&AUcL%oqH|`W<{L9GMTx zIk0#EQ7c*a^bsi)ZYX^x$1TVvWbu=m8s&llo}?>?-gd*{l_?4pDiz_J=@1&yIO*mk zxVtYgo-Q(OMfc|Ufz#qH*`bw7rD*?3N&*xP_qN*A*VS<Q1Q~<*gT!)B^8;M%l5Ly9 zl&bQ2@#=Z~REPPof9a3Y)1K-fFg#*{c<xk9)T$=<z5kJyAGgkujnka>v>0C_6lG2` ztNPXvaWa4kBkahm-RA|+JP2Kfyy;2WJBrPiM--xqeZlSFWDt?_RdK$WzF~nn!-Fwa zw(>hZ#pT5Xo8QByc_tFnb(r>odubF`50o%(P&%R@kW-ic^byn2psUq*-NLo_Jug?! z>`^0rU>l3v6&-2G5W)j)<dj}xm8Y~mPi79PWy7%UIoSRt%tv5O8N+F_n+loqN)U{! z>8Q4&*-t1ZFj;7_!<J1u>z(T1MTn!867yiEgJ3rjKegZypzPz7()m4nw1#R8qaNm7 z{|*v_Fm;iNUnNMVGQ(Ym@Aj?5$gs#3bZ`e(OT8FPuBA${8>$f_|G;Vvifxf9o_oQF z>WjW4%`OM_EXJg<j`AHA>Le=c6J++TVp}44G|y?;f;c?N=L63Z3qdtodys&Z42gD| z3qNQQxhq-AQA9SM0Q@;}@3GovVb;0M$=gcE2&A8f>RcXqzr3k>l!<UpbYPHwDcL1~ z@KF@}TL~OK&AvE5%8uwYx2+@YK2koA=H%uUd;CtW^QzE=z$-hd?M&0QpUPJ{3gmUb zFAHYAQ2+h+ZIQQ|++t(ZgVM}Em1JY`;rgB$7eQUdqwV302P#+{%$1hBs2%v0e<Tw% z^KlojA+s@FYVIZ7Xp#j2heiEVusmM&9DTC~ogu%6@`56XWgXMERc}sS(F$=gK4lOO zI*7YP<-<0$Qa+#v&bq@n5u?hae}dmQP0DV{co8YSU;AmTJTqvG(t7}KA=;^d^Y(RH zjD;PV6AtbspU|)K6Mg97>ow2h>Hx0zc`xN(26ouXgskM%pXG~5Y(Y%qCvgv0$Uxs% zo@)BO8s=G67zRkRE03eH>~D73vh9=0+a|^bW)Qtx3#u*quYckKIJz}P4`=;pGm}c< zo?v{+?n_pA*!Ca4M6~w8?0@r)k<@G`rp4!~W2gH1^D02*vgAkiny~}p2FndU`K%&_ z``bD4rq=DmFZISUXrnpq3yklEUlx>~TBDsl?jgdj4uz$t%X<U7U&!k}o(R83_tvsp zdcSS2Ubc4Q7<JnZU2bj;UW!ib)>QWt8IbM*C%oJcaM>!nhzo035opVg0r|k7MkH(? zV)_)>^xet<c>>0;$wq+hWh$5e*V+8ElL$`_<TV7D;4g5$OhL-UC>JO+`H*vjS8H&x z*NPNVN>S?;Zn?mv<suiUe>F)EGRZjgwE1Zi!#Wnf#437hkuV;IKv5HpQFDAv`P1X| z-KJ<UGk@kjZ3sNRsaFp^hUv`a@TVT5;qx*Kteh{jEqsZWYid^E?)vSs&n~A2vgzF1 z#W=-XdQq#v&2*m$e||g*4vCO<Zj*v74MsK~+dChS-u&jgLPBy|es%=SO(|R9S#3dC z&%_rZ@!7mvhJ=1*9tW+26vge^uZSzfCR2>KC<ZqXjMRKQ`@P+qaCE<3hswA*c?ROj zFN0NKmpjsQ=w^Zs{H+jp=6?2pO9Njn{Xq*ufpoL6>`4doJ&yc4ONxLjFad;G#afMs zj0+V3Vn5<R56tYzu!}@wVR5z+n(3z_C>@{W>%***vp|HyJw)bltAL><Dyr#qNGHC1 zU-77NMYYAe%S+r29y&kqM2g>;&x=w9(0eTL;<=G%l`bdxFyGn(S=vY;O=;!?qc%6$ z^j4b+B=tIq2|<GE(SAUDr0TMpS(@g=c}E;6#_nm<hs~}`3iO^Z7E3}JCw-63jGsU5 zU}JK9<(gA4ZkM<u)-alB;c^mdN`rwu-%SJ=LWLQJAbpJ$t7)6fHZ*bP`53I*5Y2pE zkc9D1+{1HcR@d9N2A=or<~PWtIJ5(wVWCOdWFB2!&u{}dr9J9Mxc%{}+=H20=uAE@ zEfp|eN1+z&hAt-CBo<$cDvukLnk-co2c9E*?tw}bNGaL+U6AZ}=J2xBT)ErPx&Ivo z^<9_pb-b+0sxiSKVLOk$My`srw*s(^qAxEok=$<)^-FLQuQL|j3W((vOK)V9Eh*$J z`iGB~rQ{D#=;-=g-L(+u02;Hc>1J?8ud&uGvKGds&QDrL0s>hBcb{|@!CNdwYNE^( z=9pWVO2l>*LN;5#vX5mM@u{%jpmB0a=p)Mry>1+~j8Ef%Wr#9}uW86Z=2?*VPZ!`U zH3Zd-oO(}QyEY)yf|?Ec&6#v9f4C$Rfhgt29lSaY+g7I0pD;dJrZySpex_N4YNdf2 zvDB5z107iSID#K0ob7i?d=9E{m4F#$X2#dpcP7hmHjs496jwnkwOkYy{i5YJ3%Pm? z$DIP&BTu$Vw^#ER#r|>=?ZGO@ukQ}m`-Fc#iG5t9;AN*-XY=5oRqsxau<%5;wN5h1 zW#ST`sCb&Tiop`beLAc&?;{=UDuU+TwKMsh$-ESV-eI)`keq|jUnfq>ZkoeaSS9HL z$hI1kW{B~)sbdHKFzJUOC>%ihzU9UYR)YZSBDIgo8<Nhu124q{7He;T0kRaMk^HtR z*lRWko2%y!q%&=gqnE-@i}=ix4E6V4lNGq26n)ZX)1zW`Q9sX@*sOl}0bc+fVES}P zS^Z-~Ul<S{TITnM20LAr8KPN0p~krs^3l3}n3R0L6Vnz)blJhaU1=oFcnoXRn58$B zQWix;JTnGM#zruH+A#Q_T!ID}n)_ZLVbF~hc>YsxKttAIQBGSoE!ZR@6)p7;fbBA) z1^`8Gh`#hXbPh|&gdheyED6w(4%7;Als~-$8Dw@5>>*t2Kn4P8(`pP$k?X;8W9*oO z6A{>c%}v!jtuS={=AttpQntZyT7TB_>Ba?o(M`#s-yq2vYqo~11A@Mec!0%ot@DeI z6Q4j>=QMyp^98TzPUurNqe8tDRrwP_d~&n-GHN~~XMJWl6pXw#oAogi4M#A_MMm9v zj00yvY;$$ORh)S+4+lWlcN#{07qj=a0osTI+P%lHaLcK@8ih>DfecVM7WsuNz4}L_ zXu8ly@jF{#2NcEYf_6evIkh;Rt=#iBl1zeC_fG`zsIX}W#Z|=AD!?;fMqHV+%q92^ z(Nm)V2*oTO#DHG$nK>^KupZe!#>GgsJa<?nMsn2Z(a(DZE@#=rBMNCc(dDv6Pd{lM zJyfUbM?MuQlK8cnxBI*JaaoG5X+T(nSK=1E9_mUq_CTI1m>G8|%lbvOT#qvC;|9jv zC#(o@xJ4(TJC9vws_hv<!}tS$Rm@q=RoNedPT~JT&lDX8p<gQc&I3^i3xH8+xxFC{ z$+KAv`pu~G?o8Bk_$Q-ELXE66tsfIgXt3cV7#K>ktMDF6l9Bz8;ut(QVN;XHjiZF1 zq_=XpW*{dq&~H0*mF^K=NPzc!IQg(f%$Bl`n&m!N*92<QQxf(=`P3$KtmYW)W%drr z9$rfjT)z2>n<2oxAM06v_O=^(*f!_>ZDZhyc_#{k!?A(dy{v5*dwsyY>ku^c0VAe( W7%D<lzVpw2TXND$Qq>a1!T$%Pri0@E literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/ImageryProviders/bingAerial.png b/public/Cesium/Widgets/Images/ImageryProviders/bingAerial.png new file mode 100644 index 0000000000000000000000000000000000000000..a78a154b11be8f5fba30dc547d5d3d5a6f14cfa0 GIT binary patch literal 9943 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 t0k--R*rwS!{)Fk9B8x8qUaoX!)KOVwj0Cv$cs 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 VS2|d4-sS)R002ovPDHLkV1k<_RD=Kk literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png b/public/Cesium/Widgets/Images/ImageryProviders/bingAerialLabels.png new file mode 100644 index 0000000000000000000000000000000000000000..4cafd40f94f048f4a55f98ccf29a6c1e0dea261a GIT binary patch literal 10374 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/ImageryProviders/bingRoads.png b/public/Cesium/Widgets/Images/ImageryProviders/bingRoads.png new file mode 100644 index 0000000000000000000000000000000000000000..282d6ada85a58ca9c63ebfb646c32281bc151e89 GIT binary patch literal 8076 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 aCjVbng3ne9rkY#;0000<MNUMnLSTYXJ&n}> literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/ImageryProviders/blueMarble.png b/public/Cesium/Widgets/Images/ImageryProviders/blueMarble.png new file mode 100644 index 0000000000000000000000000000000000000000..b8b5b7b1a19f3ceb9120d8e2f4012a80ec7a3cc3 GIT binary patch literal 7403 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/ImageryProviders/earthAtNight.png b/public/Cesium/Widgets/Images/ImageryProviders/earthAtNight.png new file mode 100644 index 0000000000000000000000000000000000000000..45e0fc7b833f80d2fc68f1d3c9f5b82a5d52e74d GIT binary patch literal 5836 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 WE1@9ze`f*!0000<MNUMnLSTYEa2QSi literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png b/public/Cesium/Widgets/Images/ImageryProviders/mapQuestOpenStreetMap.png new file mode 100644 index 0000000000000000000000000000000000000000..f2eba41069b5387b697843e0fc2338915644b573 GIT binary patch literal 11342 zcmV-UEV0vxP)<h;3K|Lk000e1NJLTq002M$002M;0ssI2B@5<>00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv001k!Nkl<ZXhS7>_jg<OohAQ=IeTVz&&g!d z?RX|}Hcqm$89OsOGs$@3*jBM@Nw!rjtM^KYq9{_NNU`@0f(0Om-aGK{dhZ1fcn_7N zdUKEC-C20|oX>CX-~jh~zxRIb#d%GKx~vywMwbaEScFgoMCB-=deFQN%|{?5Mw&QX zRRB%S8AT6G9qk!A-R}u-k0&FU*_b=b1R&K-XbZeC&ze@YWM@kr#tbn=iZda;jB+KI zDFU1c$W@rrv!s-v1(fC}niU`d&oXJU2%=h?DaF}xkjT5(LYP$CS#AW$k5Pt;E#;Up zMwlR8O|$nhd>u<+nfaC3iTT^z{invKF4!F%O(TBS@xGRk&~!|U!CI0~gM{kF@*cDp zL<&)?kR=QfR9Vz0yHH`z_2JV4zJ4EfpmVC#Y70v!T87brk1?E#vC5iGt`uZTNyY?d z6Q)az$<bz-HeyUMOy|RFJ|*h7r1CT;<WMw__JCaDQ4W<uTq(*LQOU%W3YwEfa`|ph zT|rfZC`ho*AZ3`j53%cb3eSvMCYswXyz{~9)7IO|j{c^slAH3)SfiE%<Hyu6t$EqJ zo638zLI5p9Fg-yOAy~r^UG<{uvCi=w=X&<voI2DwF`q_Kx(FLMW+b>uge!;GQkX3# z=}L~QAb1r;D<D!zp=N|I{G{Qb3U0O#6wQoeV2nz@EaZ+mZNX)&uEKndD-s9?#{e{% z%X)xO57cE1PAvN3YcbZH5&b9=VX>5eWLO9k;CbiVhevl7)&)KfH_2rRVG|G)#`z$| zIZ4URXsdMILmN@57{~K5qL{%7IkZ5e1bkp+`FMNR;nuF+rPZ9Kfq9lR38o4X#VBRO zC?koP8Mu_oRp4w5%2cxHQVcNtsOct6Cv7+yM6qQ*SBa6OB%IHr>Flh-hKd@cl`z4W zTnKjbthM)A`(}G5oxL}Q2U@yUTkpi%2f<roxz4HRm?JdjU5(;#SJJin$gav`vvgl; zqQx}JCh~fY69Xw|24H5$!U}8p`ErIa)2JT7j2KpmW0f>s1`}K&g2!)9^euQ+NR7sI zoHP*3$lzvzD#qwy3^(GCnFPw|Of{XUrGRQ2Du=O>pDOto!%G=nvK%0*QKTBnnQ5d* zxzov|Knh^Xi*Dpn+g#6ZczQWyi@4o@V=?3(TS?uS0y;;bw!z%B{%Gf<e|X8c81VVQ z)XpP&^t)Q^S+R+e(kv4x=xIUmC9sJEH%8T0h4m<FX2@b1Du%&w0Id4Jsu!<^s8WQ^ z$9%CloQ_C3$QD7u0CL3ywVvV2QPBu;W{@Zak#Y#EMxlBFT~FcFWaGS<Qo3;*WMe8> zVjYBPxl9>I$l09AOgg;YEZfqv&^f#oh4PeMffOh!M?fV9NL*GZWcj)eG)7i(y>p2P z8#rN$d$QQ}gL_MliuLDOlU~6jDJIJyCGV%?<up42>+?)GNahoWmdF*u*@{0?S<94d zP|1cD>@aCzX!}MjrzlZDPf<o1Fq3F4Lz{6<57T;(C<HMxjFw|)If0Z@XbB)ph%`~s z#E3FR)p7bRiLN6+8BFKFl!Pw?qmCrrF}mVOQmA4Oc@fidgpte$L05KlF>Igrd%9;9 zPF(N3-e;d&#>W;jA(%US`CR?EvGJMO#F<%I2=IbOk==&j732kqn-%gtR!bpD95iCt zav)uH!F3m1cjaro$BzJ=cjOtDN_$ErfXc@*g-EWF#Y-Te1Gt)@i-1@|)lE{Y6Ql{F zMHDNMXhUfw5~&d6I!SNfXc@?8Ngoj%UR|1Y`>mnWawv<+1yYwW6{QL}XKL>D)Rm*n zA8h~VPg@Ue+jVUJ`^S!-XzuNwjLoe=h*VhcE*p=8&Clc}s1QX3Pq7dyD}m>Cp+7%F zzN%+GtDtoqS0qr(156>o7%^iLxOWeFz5#!8m-?zke05j;dR_eHu2eU%LXG4Mq)_1u zgDd5k4O94JL;v!D@yUbYMqN=&mNpo~q_ZZTEn#RCBWnnhkNIKO>8@)>Z?ufq9CN-v z3@1Q=rgREZ08hep?)vd_*N^&B_891k03lQ$2B)V!Jbd<Q=cF?N38ujroKhp#pNdV` zdWO(KWj*n^3H|R1eK)xDaAoEj9QjLa{m%~`ef{X+*N^Uf{p7)48na&gnjju5+Ue#S z^ySuPi)-Id?APn-ji-NpdjIRk5B{>T{&l_nb*cP3l{M$)@1_!esTLpUyd<Gm9!=>` z!T`Z4%H5-La=d@O@96bwDNamrOjaZ_9GGR(5TA-e{!<r@-|D_CtLhhDeQ8^D^z;oD zOO;1YpL@gcBj?Y~Iu@m}qSd5)joo-GH-&XSk`ETN#OL?5dc^D9dtm+_|K0ZbHs`y0 z<Hs*B9sT){d9i;AxZL60ea!y*ovVNU=JL<}#q-O53;u44^AFp7yAA-CTj)EzLSLVD zrw=@S#{Krr#ozt=%>VqC=)q(66Y=LI#o)728HdVXte8$2IoL!fgY2FdJaN4X)7Qyz zktlIk0mRfa%*Q7!gGY`ZiN%u7o_@Mfd(hE#=Yw7Q6S36OCr^uIb9#C1Wb<iSrT8LA zh-pTRH+k}&oDt*X<nzrEFgi2zFYk@M^2Wli{@3!ae{K7p|6}#Ff3pAX4=b<!+wyOI zzw+`wt-bVW>}UTN{_$_(FZ?F<(ytva{A}sxzp%gh+vR`$-NbKyW&7j5T3>r@{*}L9 z{MBpL-~7|so7=R-h36)x6Mj~W0)=R*l!oeLT0_~g-r7HYq<JLHtV6mEs0gUXXfwr| zXlH-h&}d(GPxpcShjwh;`Rf1phoAoVNB{WRueWb|{rtsqeIt|a?K>FBCP)PaX}?@a zG-V%Vxu<mHY2nLfkCEk&^+>n<!?w`=i>ZT$lLtOZ95|Xda5}N?T=IjnnO$e#-Dj8& z&ca&`pl|PGKRCi3Jb@fIp4xXLu>X+f$YIyfBc6|s2R=R%*niId(S_jYD~ikU#a+2^ zKS|94nSQ920xL*V0MWeGIpH{P!RpA|1q+*Sk%x-_re{cnK6Cl<)clNAP*#>#{`C4= zue|*7FJJ!2%Rl?>#R~_EB^jidy+=<hdp%6UtONv?fu=|)94n;62m0o-=R8@$BLyk3 zt^j2w&BGBKjq*&|U{hr}S`=c2o+>L*RZl3zl%%IbDIs!Ek&SB{VA5D2lVLDer{FS? zEzwX31^B#{fBacZtf%1ODq3|yWpA#r;OiV$uQ;>H+XokW7OG+9DQIj$rkob3IHI1q zFfcK@V$_U>PafXtxc$=?U;O1SUi{$wH~jwD&%fDBlHo1;wr3eWh3BW2(&t;In_^lJ zs-o(%4SwTs-)!XI>FHgEr?wm!f8*5nn`fuDoV9E{W8HpcWyhJ7ttaQ-JTm^)@sXVu zr*~YOc=N>ImQxekPcLjczWnwv>szO$-Z(wB{mRlG&n*1giTN!Ttvi}0y4OPFeFLlK zas?M!S_6wNyb9=_)RRhKJRod889Lji-mwe4j^wR{#cLzemv61T^FjBv_m3vQBrkJk z&tKfLckhXlAHTEXk7E-(^+)Ecdw%OjAGQun9Bb}9dU@pVg|Q|#V8wJ)xxYzOpM89D z>E*ZEe!8XShg*Apuw&pSJ4avKG4{fip%>m7dTHD6&)yyU+xL2Z_|DCr?CkjdyElKh z<JQl1kG!;f@`XRn{Nk;Jm;X5Q-`^bg#kR>8x6b}(`}~jIo%+d+?lUtX{@F9}UY;>C zY%xaU)2P9^N$$#AbbGV?k0-r5n<F3Hb{yy$*xzyE<BmIf&dlvOX8Ha0z1Qwso?f1C z`T~+xtkmoAM0|SAYF&%|>$Veb?!R)hwWnus!4h+=WIatw!I2D`<Z31M?&pWQJwM%k z=X={mzq5VfJKM(oZm)IMZRonqI62Dy{+Q>t`>oqr!e^F*(<|J`W$}bXd8ZBf`8x~0 z*<n9+OX;(kr#tX}cz5-sx9s14+xeZhmcRe@#JS0g^!O9jP$(tGY6z}z0a`gewDxw3 z{q1X>4!b@cDXtLO5{1p9@v&(9<LkD4XBRKs9{cFRfrBUa%`GnJX7%y&&tQVP*wVe_ zy<>0gICZwQ-;s>0<{U0^F(}!Z20gcef*&Y}^0QAbj;CMPKJqu)roX#m?x%aKhsWVH z@$s7QrHlDuHd)%&nz=kJc+{_bg+IHLuT!<Zv{@^!?V9elDN*iAH~c8VJo>mj_sV;| zAHD7UZ*RI@+GcN?CreMBa4N}208>-~wAN~a|8&j%hf9tdHaWrH10)Tp<})?kt3xBH z;DL^r_SuXN6kM_J*z`op^_C;YjvP38=-}D2N1I#QdfM%_+sWimG&d5ZW)hlh0Um4W zjdafub72$GzIfKPLcH>!^*e9Re|OvBKb#1)`HIts{_&u*$A#hRpPlX{-afT*xZ8E; z&Z>j@lzsRg2byEsk5~!g$y6Y9x^MCNT=@N#;43>F-+N=_dw*Ja?Lc5MP%J%qKnfVd zWG%tyg-O?*fx!ENseixdm`+qcK_ZkKSjfcnbl5~E!PwEh>4^XhN%vW;j*)aA=w4o( zomrXeot+%8F02K{5#TC~oa2-}Kpa^C`$l7ZO*62iKhe|J2GXbXg{<<Yv%Vi}v48h1 z?@PM_|9Ua_Z&#*&d*oJ!69($fceNybwQKn2@3sE@fv!yLi}q#tx9?ic^;6oDudEqx zG??je!dovo8mjo-TjM|4HoUFHvqo-64?aoK%8Vy;;`Yel-su)c;-(wldeP!%9w0iy zR5F>oKO%=SMQ$dZIdo%e+C!uAXQKHjtEsdCDixeJ$Ur7KV_)_JM#0Q^mcF1?$9!mK zud{g?m~8Tjk-pHa1#Ar2z;dPf(cbLeZFl|P&B%A(@P2R0>@N?F92f~Wlt<I>z26>M zdhy+Xzx}Z5l$8J;|L@lhul?PYh1P`)>G?N)!JJ7_F?Hjbm3(E-%n!HS{`rSD&(8<4 z>yOjrCsPsSXxGy5-l>^XIv{bDG_vdBgcB)ei!@Y;Cp2dx4uU!}=?osbI<gj(MDrW9 z`W0*FYzfZaCFKg60D*<&HOJ~$Cey;JT`B68CE7BV9r8%Nri=-VM*0T)?P1BMJ-a{Z zQ+~J4{o~hHfAWU&mG@Ua8b~|Ddp7pb_Lk_+cTN3ZTlXtR`U15-_oT}&yfgf_TjnlL z)x@XY40*|2S1fB(X#sow`UUrk+gn~g(>a+2pv{eGKt4VMzJJ3p5J)6+3M?QVFng?R zsckwLRhVQUmMOaN^-wM!n08KF?dl7rd8PcRU_Ri>1*(8GvK>f6UOzB9866!SO=f#C zWV<DJ(GCwno0-fy)C5<NMPR;f?Us*Rl^+xV{oaZ0<STE@{(8&G!8X7_Y$l4I->?e5 z+i(5(yAyxAbKtG^CG^X`yg!)u(bhYE_xALGHd1)-Wv`w2{o(mJ*j!}(yydF@*YCBo zOxn_U!A<8b&$+f<a~&OtF5<8Qb9=zWwPfJxaOhaa>QW}<qunXhf!ADMVJU>pEqRv# zLX=Azf>~q@5tZRM8ucfl%XXlzCwAk;kSp9{4W3=ebS8Bt{glEUGEG1+=cT=q!C@zC zNk|dqZfPZ>y?bJH%K@(?w61^he}KZLGqGaVs`}=Iz{?+u9k*b}7k_#6wC%-rCSH7F z=G9#*0qTB4c+~CT{pBa!;mRM5F7Ll=Nnnyv7gmA!t8@Jy4bC^)Jkx+{A~Ir$3{UwM zuFiPR3@!I94X;FpR+B>>a4Jl$WVnbw8;ybx!jg=NV?qMvLs=^9PlpzqiR+#AYn=nr ztF4ycrEGo)Du*)VB>8}DN~k$E8JY}D%|r(*sbLT4&*Y24Hu_X+dc-FCP{oVOPP{N4 zFCOeCU)nwW{vb92m;Yw#^bfZz{`d{+3$KqI@6OJrWh+y>1IXL2yLO#*y2GX{S0LOU z#>Q5Vi7C)N13MQnn;l(Rh3yMK;QFff$Uxt`yFHTbTy(WtoWtHsB#L6oLBAvBNunW~ z4<qy%K-fSw6v#z-=B;PDhdQPQrq-?}m@%^Ah73Pw#<3dIWQP({q2L|6rE{fwGTy(C zoy?gyv-xz~Exdne{`Eth|G2N?e|<dh>Y?SA_d34&j`fFo?LRr>{;xZhzq8%`{Vl66 zY_<M!$Jna}$6q}?|MG#pH%^Q#`=p}wG~rK9PY$@_7N8ITHqx1mOx#Gtb;Qq8;|cKW zoNG_pl?-uP5IU0SzDUxZB`ARA9q~1Hc0Pj4r*JDsIUzb0%*F?-%NGU)E=}GU_6|Cd zJ*2)!8V;=JB};L%7;m~Zy>xMCwROhT<D7ReHvE2ydH}Ic3~1xw9Y6He#lfHLX#LUK z{Xf~U@||tYzuxBhs~xL<wbS-j@2&jR_ND*4b>+L;mVUf#=EZGe4NY&kvb+#P%#x|H zgl%@NqivvfV$}@;nQ}H=O(#vl%ZYs+;=OB@H_s2=m>mVsD<pD+#YSi%h?6KpLScBp z5^5e<Jz)v7d$W!J0Qb-N4z~<6PmFiF`)%l0njMGvNkUy>i*CB$C-T9jqqpt*u3K9z zet#ZHZ-%pVf36Y-ss!<5gLw9Q4i(>Pv;1oB$d9&7{$R)2U%zetPup$(>0R4j@3j5r zcbERl*15mgGWp_r<A1+z;)Cms2vexvS5)4Pq{n07rGc@fLzk!8=IlW=70zd(nlc_? z-#Rt>LCfm(nLvz6WwSSs<T)%c#3No!NRzY&lPq4iZ6<PIHqkvDUA;20wCBpeg~6#F z$LMsbGow$irUhokU}j1vIFxc@vwNG~Ib$F22rCp5tS2Iyt5MUFE5W%El`b*Z1CxFJ zI8%Et7-rtOF#n6)6F>i8>HF_k{>xjl-`O_*(ucO6e>nS_0}~%~x<^Blvc73l@Oo)k z#IEslw`2sDV$s8$OCR-24uowk9vyIlr+Pwrt~v+o6s{Grhz|wkMZ_9e=@mgoky|B@ zA&?j#Oe=QJw<bAn`RoV#XAkrYcR8jOvV$?H3oG2o*On-82Bs!RVV>7k1>MuM?PP2^ ze%G(nyd~6EPJrt?VrUr|%@u*10c3TQ*(~eNKbIbVX-QSi45j|{$jm<<S@`Fp^KV{Q zIy08ELM5dBx%vDPNz3H<Ss88R(MysxsNPSY8^%mFe{^8&(CvmAa>qIxtz#K`%J60R zY%Yo9+yPf#$kmnc_7aIv0h#2;=|VY7n#q8i8U=%=7A+r7&0JrbA5Tp9$N{q0N2xt( zX-P5HXlVh!#$a+<E_#~wU1dIQ&+fjye0<C`536zMVTP@MJVF*jv=Jnf1f}4trWMzp zR33fx@XuebfBuDd{|j>ck@m?Kl`p@_KYUCT%B)1(H3AxR3k_cq=uui*Nom29sf4ws zU3Tf+)Amyx$zBT`#wycm4qwdUUt7!utt>eWL+xOy8Oz=(2y2>@0g0R+!P}R^dwVTM z<`ynGr@AAf5yeIntq9e#dEcp+j^aj0DS2RO1|+5geXYTO{dli$_x0JgFU}2zjEwX- zrEPLWiYW#d-HY=<n27KqAxKQY)D=UG!%4;zlzR$Z#9;;G3`Wp-nv6U(9eVB>2X_}M zQDKux>dYF>-dRbX?(+A}DWTlw8R|YR7Sd3dqWuEp74U^rvRM>w^L&pa%@Tw+7>~Bx zncUYr^kJLj=(y+ds-rtP7tDLLCn;95DDq@|-KACh+D1ZKkMO#a6qhJ@rO6|a(GsyH zV*9(T?_Qpt@T4IT!PFF@L@_l^%2`?jL=B<Eba9=&`&<{wIKamuq&KI;2?HQ?kkK)- z3~6W|6F)=J16d_75e|=dsoQhe%eO4{02+hEEXAi$2%|t%K%mS*QJ*33%RJj!Do*m; zLNsZOf~l5)sofWQE=;<+{XkDBHl7Z9`2@Y5E8dH9(zM78Ny?m53GuarREtTahU`{R zZmB6^1QS(ndL!2xh<?~Q_0jbnYsd|%7*ZrDlOi;TkkSMn6ZNcQ<O=H~%0~$~BA79K zJ*`(0av`Xjfz3@H174HJ4o0y7dAidQ|KRjuM}NZULn4VR&XJ6aC<RDX;|d>8g_TJ3 zjHKQwRY#Tl94Q48X!30P&0}r1W+Tb5aHPv+pUQ?(2Fu@5Xd@*QoqB0W(xzq8Mw?-( zoZ>4<rVzqK2gcc(a+O%B<Vlty9xiu%-u}Ur!Lz;gr3{zR3xGy~QVJHrIl@b@F;)S2 z6|QfJ)f)KtLGsfFktZeZr*+5EYL7sC1mq6T(onw2O)aI)Ty_qOP}U{Pu@)3~zHF8h zl`7YuylE$e&Meq03JapVMranySW8R5$m;Ti&erANf-O9{;J*{1Jvoy^D*|0*Xd@w- z4&$z?{3I-GhKo-rssxC2h|EV-GbL!@Cdf>HW-Oz}vqdZ{@uPn9*lp+Dmic~13e;49 zPbUyBmnRri1Q}T}&C)tsEO_hkl$yP<fsKgq7CLhn%p8=AF}fI?wz<z;UFaLih9X4- zRV9hhHQdl}T}^PJH4Wc@sAiPv)TEHC<mhtaOOpYPzC1M5HhgEvGw6-nOhC6V%}!Ne zy2^?*R$qrp8<EQWsQC~upHhX#oP3umJ?0DRM7{(nda5ZYCIA_NbsExHq^!myxqmHs zsCDk(<(aXiU<%2EQ{g}Yz0htubu-pB<_|#DXyTHPx^Ne}#kejT$c$mcaV0nFc3-_S z-#+S}_mTmSOH&vn=42%yi))%<QPmNIyq<+yjgqrgPM2gr<UmA4vITh!*H3oOcTP?& zxCX<i4npiBbt_s3q4^A7K<XRhy*g+XQVf@<KhEn9IBApAHi_Z}sT8uNnQMx(VMxSS zLxp5K!KX4BkdWY&bgsGIdg@y5`0UE~)atpbQ|}*}+kYi~Y0%%l+^&`9H{`KL+{`9r ze^!_M3FyYSzjZJ&WPw*gd<Ye?0*WdTMsX|ZnkY<>WG6x2fT<glG*PNSdVvtw6wO1B z%BA$upcgyYZS9zxbj4?K<RHp+;mQ<ahNyf>)N*&LWKB*2{<*1vP7F_pRe~;otN~OW zaJrGx)pQfA1t=Zn3lynk5Y>kkT&UsB=q?*z>6x8q>6kxxX7XZ-btRxWvu2ztAUa-p zKy1`<B{}<Kb2AvkE_AFNX|?yyM^^*sSQexNs-ag!_p5qizmKG{?Fc@Iv(vop5{wuk z#j;|8FhORMPpI@l1~}epIXkd0xNHR|x1cTL(2guI&~R{8jptS1X^p%m#-o<r>&N$J z<8I@=z*P}kOB8E(UeA^CU=vgFGx;PfC4^#_Z=^hVCc_WMr2#)TW{tXT^aRdbZp33* zTYs+I+mtqn+P#ug&)1)>Z#;Qotbfzm9o~0#v3~(t_Q&E`KbTviP^Zc{1!@+~^}yI2 zMxLQ18>dCoGA@*fq!7tfq1*#5P(=FNOJ@cLj`WNSc|sv9MyVb}pTWqRAkoceHdzl= zis>&lh))X{aCz{?;XQaJxc*dA@6ntAXeC%vv-JYf^lhf&10?I`6$d3wgZMB=O@hjj zpIjYS@my$+-kCrteZBH@!?>TXJ}wp?==$TD`Pnnne9$ogow^a}7)#8%GQMPt;^R0x z#lw9XHb^A8Fkpa}mnm(P&^%N=N~>w6m;(z*=q^3OL6_E+kKXAz)zdZP@q~D^ksv5# ziWY8=?0Ht}$gf+<8}7|&_>*etxf;t@`kVK>55|1vT|v7~n-AFPCQ~gDWhvK0s&<02 zQ>>k4XGwa5B<EPp%N3vq1>G3)?K`vDGXo17_w|QmrKVLMRV$Bc+P%6X1K*tTUFuGD zPZMMI*iz7I^)7m2^NHB)i0hblVGj_vs!KMd;nqqc^oH4Df|5dFDNU8r5iN6Zb@7A# z-ZsnFVr(_7p;<i*idK}p4P&Pv^e`!26H236$y(Iyb;Ws~b*C+NuI_&yOMlBi{vp!< zP$(hm73yx0Xv(r3Ir2764YK@@qRbdt(9{XJAZIyc!T}w-wtD84#|;~F{W)Pgp$d-x z%9vk{_YOE`Ex?==Uv$As5m#IcPx?mh%-<ZGxzIcCVNdr~uji6paH&Ru5@VE@6!Ixn z^6^@LDaN}O+K=`$cdQJrB&H+ie1fw@sJRp|NHBL8s-3{vByFm&?vo8~FxX=qKP99l z!j>D&N46ljHGPv%?^ALG5wvu@O5ZierX+PbiCh5S>o{>+7UwF3>}JI<%5~1zOtZCN z8*-w<bE-SuwZu<_jA@TNIGMH1BN2xz<nHC75{glf8ba6oYv|mRe{|eAJnJ5?`Z~So z+YmENi>tgCWZ8%)#|1T#MpkUT$xEHb2QBSUY!PDT8to*@PXfXurA+5_i<w`{i%WVT zT&N>z8S(^1E}VX|>&iQw7q@p^-y<tgeG^yj5)BP-TB=s1D>~W)i)|R&OVSfGJu3;$ zl8$fI>($MNg}aZ%&1W%Tz1@OsJ>~k-v6Z8pu3IzFF-shQ%2akek3Evnje?Xf)S{3) z7RP7em?zC=GiolQhqKyZit2;$ZdIAl<Yk6)X7J#oZSH*g&AzE&09~cIWkI&_nvK?1 zSYt&i*(+sNwdgHKeyso~HCo%?XgRgCczdkxtab86I=)=lV2k%zb(2tPm{Ni(HKtak zn+R!~S5{>uA}euK%@zt=sccs7-qqIEsmf+V-ncdg@4gy6KZN$$(j)dj6v8tQGdmsj zIxq$`B^oPeRvc-e(Gi{vFd7Kz09a1IWk;6lM)1oVbsa~#Jc0h+xyiHL<Cpp^z8uUe zQCVD-1P?F!S>3~%u6)T;D)~$Kuqwu-JR($iab3)B@@f$gn0P^kO_MKFg~B~fuA})) zTCSj~ftG7b6QwNBf|uiyyp$C+NG{N_A)1?oeBF!^+O0+O!#3}w86qNoNtjQ%Cv1@% z8q8oPn#T`c=#D`?MwpX`W(_=9gxhp{lp<%c^emt(rTD2N)&-+&p}@u2>9co++fQ}$ zo$i}i$bpTJL&}W^7?qTmpvE~P$XESZC1{v&BcIb`l2tj%RM@&Atv4bAZ5qgWjnPd) zZ_u(%l6r<O!K?vt1u$PFn<&*m@*$efa2hO{7+1pSA}X1<xl#0Hv^`fsd)gBgtWH1r z4_JPDxy|B^BlEuOforzyXKpyq&J1&i%Iq#A56Gbd8gNF$F5&o9i0H~7gCIT`PYvJc zKYzXb>h00#t~tkOAeb&=K%@65KB1K6^I0~Zp-N$@8sN)8Sx+c3B1r<Js<192CdaQ+ zN)=S{vHCikFJ;t9qkaI85G5O*(zBci^ChH-5Mwx#!Ds*z0bB<#6T}QqZdh!k2oUSd zL*(9$goWCG9{xv^e|o-aZ4E$YgTSfw?7?eOF=Zgl?4f~^C9uten```~s&dwl&uQW< zk+-0PXKHEu_|<c5BX?%KHdi(X$RJ_la%zaF#t}V?YdJg*!lfuu_2Z_G(gKav!AJyE z<g*1lnNKkrS*aG~WJk3g*DEnn@-l@KrX-mnh-+!G0OX`tlbDw{MIr<WY&2CRg;o*i zp<I1XUa#HD8=o(R%UjN`?ClGzh)*qW{iDv+$w(-{>22N8(bLO};UlD*d2#t}K3Nnk z4AD#@`xWxzBG)0&%bvj6rS8!ax4Q;?Lq2Lch71%+0f|p=LLz@J1s6StmTUANu$)9T z0z}PA8Xh_yVhb6z4x{T?uo|S+y^Lu?=?PI@(hM&lI0Yk3>*)pqpcujROp^6CAp*+e zCBaY;1<A<iYyn2AB3G^zs-KGHpQnBK-Ob*et&u&Qz=t=|?_OM(4rii7p=Ut6))Mx| zou0@YQA%kV%BcZHofXs`nr?-`9ssaSSr?BqcehOsd5B58G?Yb8oBDvpEDH1rmtVlO zMMUz$N(?cBSk;Y}99Vt@S8Y_mO`3kJ;>XG^tguLFGbBI6aE<C?XJn^ZNwI|lE{9<; zz?o?xA87)#a8}ImwR}#&;3AdP`5-I$$chhtJnAl97(^}&bH{EGA6`rzxDr2d)$NF@ zajZHrjWu6)965c%vbqdWX(|swN*Xn?m>C0AFCfN}1TbP*Z0YLp#+M;xh>@?6)IkE> zR}gP%d@oIQapEW;%n`~mrP~@{K;Duer?d1pBurxJ0;R7p1sAO}Lewm$46wq0EHCns zqjWc`)DmnVNUC01@iLmXiMbD^Whg5NU|!|#-j6ay?;>#Iru)6~wjJke@10%#@Pg}5 zbNJ+qXxmV_XF3)^)d(yM%?D0i8Tsf`@3bu*!QiwA!KReZxI~`Hm~4Q>ZqF|szt%Q5 zJ()v22sT7fEf{<V%zi*XhiT*j4&Nk+L5v<lxG7Ya!$m70+6mcC<rf*lg3EI-vw$)- zm|Vo!Nu2A#=q`?*r`Z)g?;{i^!mmQ?3d-3C-rj`Qi5Npg@W!rR2c+kdYxyHr!#j`L z-#=~Jb8hKqt9@*ZNpg>!S;>{d)_|y=2%u#=$<deYj2*c;x)SBnaw#EdeoAs;TwGHl z3g5TpI?{IM@||HvG(?CwQ4Pw{lE{rR)J+sV%du^;Jm094Y{LK*8!p>O#mVMFyb%#f zUcS6a<!!j=Bn2-<uMwODWqKgIi=gH(av7#=8FDF&FJ*{DkXlAqTT_e`CLP(ELxH2s zGkedDe|Tp8)Q!MevJ%7Bt$unXOia5H^Zxi!G(6#%Urt*iqBE)l>`-*~#T&cM4UV~m z$spZ2>ppOOWcS7HZoB*X{Pg?HEob{C>}im#<Y}D{8U`&U6fr0YmQ?OMC3fZwpOjBX zjeb!K(Tzf)hFCqt6;rIy2uluHcXNdppHDJUgq2ruVHhU+DR!A)U4-n%WgjN_NZC)T z0bUO`ZQVP%=a}_$i|f#Z(IZ#;8g3n=1hQOa%J~GDo%bxR#$14a5k(#|Na>*%<o$NU zGn+{5X&L$Fy*+Q8oPF!e=zCWuc3&Rd+dOotZ{))G(8<33+bhlhL&UjEj?ZEoLQ*Kl zqP*Y_q|af}ZOI5TYL=7}m=eaNFeb$?IfE-1TniI<52pHXB}z(3LWnkM9U)Gk%owM5 zL@iEhF*5({(D@jv$An^{>Duj#)m4VsFJSQ=tQmBz#BLP1YNItpobe@qZ77CCB|d_{ zos*;OQ-dGhJh%JG>GzvE-n}@qzukS)&UJdQzA)0gn(AH&_N>}QLUsp{3rl>q$ny7C zwoDKb!Ara>3rZmqfvz&<u=wr&A}B7WF}YzWNleNhA_$8BqC`>Ek0=2|jG;mb;}Z>~ z67np<PV!nvE@V(C3jhBRL$DA+#ZXg*Eu;t~fv_opMpc!oR+&<XFBP<EQ8M$Ku4BAm zb>vQ79^H4M>r&^;{!6WAdq&RmS<j8QP7b=e1MoPMU1WifDj?NzTtyRwEKnuW1sXJP ztOO8+46VYlPKzok7a}33nKDNR-G?d}GM{S<q2_QEL=^;<A-M5F)L_FVa4m}~ATDKS zEr?39AT!P=ez6EJ1%NDM2|a_W-)=Nqi8rw&4i(`Hk)l*uE*ny*E|>4B)%(Wg6Jzsf zjx0<r#Jh(g!_$y2QO<FXAZ0x%mS#fu3YZ@W67vwVDuJ0s&3kIHcXfJ`CN^_O4I*l+ za97Ab<cjwhxdfN$q*_cXrayw*q)IcW=0oHZBBvoS2@1)akbxu^QBgFXZfs~oi=avx zkpM(Y5o!RI8u@CJmVH7IpbI&om?QKorlk=j3Cr;&b)A+P{nErsb#?vz`h#bmEjy#D zepoU;%hBsr7kX>JV_BsM=`*hIg}(U}tQHb1?*K>_td9GTxde85Z6T5e<;S}EK*>L5 zxO)Jz0Vxk;{h?mGuc=i+D`gZTRNjc`6?c|u+#hF>Si!!1C$E9wTNtnmzzPg05U9p; znjh3ckQ_&(G@&+F^5fcEjvv=*DSe$_OE6VNF+G=)l35{^lM+q7m|ak_7!^UVRIOgW z|LF51z%O|~XM$f0pmXl*N{DboSk8Q|Z9F6NLRLWM0=Cs;W_TrRPe^0V+@aR?n=`|p zj20iLY$+STm(rYHyQ|cmZWd}LOr}uM38GVKVVRTXH=h86<mQVRR8BUI@Y_>VQ?Qza zR1j2hpcc*LeXt%vv;-`t8utX(yr?n-aHDE9uGA2rhEp{hE#y*SEXIZ7e59$nxBuMv z<2`q7w%xe7U~wf9T;GtbcWNbokz=maV{KQj4fnSW58WIcL{vJ-B(4pdKYjC9`|$9e zb{$_0sk3%!+y2WZu5|)5?TveT##;NPTRTUtFM3wWn-9_ee)Zaw(b20DlPB9dwqV4h zqQ~SSB<L`y0;rrolsK#=U^NY?IY`Zd`7o$^&|(NLrco`^NX}HzPwEW@#-vi1HB)R2 zMay7TO+>k1nDxhmP}9`3cjwMMw{CTHbq=+*4lgbxE;RS{&CC;3xqo%|X#26XoU41T zZ`X<4pqx&zzMaSZ5W&_WVCI$A{<Id55c<)9V>g>Sh9YUS<z{=&P-iIP>K^Uv85!i2 z(%M@5_|a3@lrs_<K7RCfisEWeSTIQ;k0E>tkz%kCfz%kRHh9QFS_b-m0FVZNLYmM4 z&V;0DLa5kac}g%sgc@rAfX!?|iiB8y13**^Hw_MjcI`gWKR7ltGS_x%BoIT}dWJ`q z=e4KBG0*6Uj$<(<Heemuf98O)AtWj9mVK{Po(X)B|K00vhSPkZ{@JPKYrPXAtKRV8 zW9JuE77KNCYH6}-u%F~Lr#p7}QghkhG01gj|G#i-qju%g0-#sv1_Ov3LzD=tME^ek zSp60Nl=mQds1XcstpNa$YiX(KXc&=bL>ivMZ(wjK6PLpQ))(M>0p9<A0nb~+EzS?F Q2><{907*qoM6N<$g1%1>RR910 literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/ImageryProviders/mapboxSatellite.png b/public/Cesium/Widgets/Images/ImageryProviders/mapboxSatellite.png new file mode 100644 index 0000000000000000000000000000000000000000..30ee6dbd555eb7f1c0d57b82002b1504b9783f22 GIT binary patch literal 9242 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/ImageryProviders/mapboxStreets.png b/public/Cesium/Widgets/Images/ImageryProviders/mapboxStreets.png new file mode 100644 index 0000000000000000000000000000000000000000..6eef1fc3adff2d3ceb4aa625ffe60eb924cb2aa4 GIT binary patch literal 7270 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 AxBvhE literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/ImageryProviders/mapboxTerrain.png b/public/Cesium/Widgets/Images/ImageryProviders/mapboxTerrain.png new file mode 100644 index 0000000000000000000000000000000000000000..e6bc3551388c875a0886fedca8923e29d6e5e586 GIT binary patch literal 8300 zcmV-yAd}yTP)<h;3K|Lk000e1NJLTq002Ay002A)0ssI2wVqBT00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02p*dSaefwW^{L9 za%BK;VQFr3E^cLXAT%y8E;VI^GGzb&AKghrK~!i%ZF=={8(p@o{=)a;)Xb~<<_>)M zLdKZmm|0+<#mp8nGoxjhNwUlo1_zwPZ?%+fW^UD0ol+flx4PHaXYIAumP`^`UhtL& zMW*KzQOC^ElLdYoRnmnyL;g%?dcLIXUzB#wai5M*{xM2>Fv)y4&3=UUar*D0wBJUl z#2CRl?Y9Z$!v#S*K1dc4?^JOoTiq*gFUg(b0>cnP(SuLn<~TURc{027gd*;o=eOZ0 zILp=b3yecd#WOrkVtrwWFStuf(H&X-P@1h{$np)Px5N~ghb7h#rDuX9G(P7WhNz-W zj=GPGhe<jy7WnPJ%F*=mbOU(&Jnt!RPqH2Y+z9QrvBd`yjNhkNkES_~@pwQ1Pz+4w zcu(;T&;Z2O530g!wRcMGodhP1rjM!YSq{zM&a>PnxMo4n##HnOjYEJUcaAZYy&}`F z%000hn)Q{Li5-6KP?o7lGBs(jq4AbjV)F~BZB*eJC()!`Q|w1{c{dRrNf#jEj))mq z*s-MPC)OkB1QZ+ujyYc24EG6vjJSY^C<2D1&I<^*^Sm}3r;3S{(-qxH*O;eBcV-t& zu?1aVM(vs48wTxZDns7=>kgt0EJNWOQ#OHOBDIZZ{nKjS6yh4);%5(Kh;*hdEgk7R zMJ7lgbBtkCq;dKKB1nQZiWuQ}I>UMVuU)3gx&fLlf7ZGHpou35Fejde>#;(d!t!X6 zE-V{YvQ>R-W&e_TKx!T}MaYf}-IZIkBq+8t)taKJJQJQG1DD|rSU*GY3_C!e^iJXw z7KT4{!5OT<Q=oaP(&)Z6e<;q@<fS96D@T{vM`ZR<oF#!_bIm9smf%1WE;g=xmP-T! z6lAOWz&7k7__rwQ20m;KCZH)!frU6uP)N|mRSm{d(ycA~=7znt@2wq2${U72fn(3o znxH8Nrz;Q8-MBMIA~HYM1*bub<?yW1HLmeZ;kJN<a5~ate^ub$F=p%H{GlROQ`*uL z?3l_sDYcJ~01kuLTs{#?M0$#i@d#@G%Rxj020_JQ5O|>EFAsu+0>dCrKLEtU(Dma= zqnnb+tFKPu>lKH9M^P(To9ph=({QpXwWi2mg*8dh2WNl`B*7vj7BFE7VMAge<FWNP z-pWNR#vCUHSK01O69`>6QbsleShFEAXO1su{8OX}#zSJze@A+aE&hfaN4yuB+~Dd4 zxcUKT3kL4R!BF=hz#t<2Y$nhPnQdfA-><Swl`G2!``-O6pG>lt&zLvXJaXyc#aT2~ zmLN#x1Q`U-hh`yD;4Ww&whSY3$SPpvX#4PvC?H1IMm!FC;$LBSH#D&WZLTgx7GllV z7E6L`jxCVJ39N(~G}#PhcOnc3Eo2A*z}+zrT|9%>LGKip2NvSNID%8ShHo6S1ZhW& zV8E|X$QW8RyBTSAz^8coI=6S=F05-!Aqqevu0Sbwj3PU|MFNM+F^b&-30caX7Gh`= zxDL(nmFS>#a7Ulo<-789z{Q#g(D4O=9`k|@vIr>!UJ^+LCV-~65wh?X_g&-ISuhXx z0$hcA0=NyKS=<F7S&qzl(@W>4QH7jQE!%J36?xo+{p~<)H;{<y4)%O|`|fB~1UdpP zAY!SG>|*8AP-v(%-bo@ah3!ZQgbZm7qC#pRBklqtu)1U^YZBXhXO51igIe|s6}U+Z zX&YPqge7~*Qgm?CJphUi$eiPH7i4J87+KH<iK_{$&M~Amh@}fmV;M+!ti%|ZmpMo6 zVfta+UtM*o6ikhZWiyKs5gnkLmU&t=tG@3qtY~G{F`;o7_s88p49JMD%#u6CkVq6F zWQ2ARD%6xL{_>DBx9BY~OnF6MO=wG!5j*UvF*<KcQAp%KoE@+Vf@)bvpbb&9foY9* zOy_%{^A2m=FEpMpjc*chT@KA_{WHjGY_UExV@pyYrMRy(NyY{C=wf-(T5m*mH+}h( z(dU*6c;vIA*w>FGg^a$v;kmv@tX55tv{+^yhg@K(&MXa40Aiw+HI)>(#8UNQlfiG` zv!|%8EX7umIZ6^+a$eya$3cm01ba*Bbl-HkU-fve`+eun{f)`+HaS{eibuo=n<Amn zC%MKr)f}B(_K)fUQ-<(77=lIPlZX@Q7T&R6hR~FMMP1smUz|oS8Zn88dVQMu{Js<k zs&pE5Z7&!KsJ6G<+uP1$Q4Y}9rRDG(?!#8~f{lcRN(q@qE<*KCu4T?KM}}rgkv%JX zYe{8}&4OJ3jX@Nb9?xly`}CRn45Qn9(dD}Aa9ww}UUqq|d%c%~{?oBgjhU{fa&}dK zs_~2%!!!EO9Oz+=&ASV9{|eilrf7l`MMMPV?d;q4w!Bg?ZEwTtw28$+YBZ!0@hLX5 zP^n<l_WUdB2Bb1rfqa6BA)6sY-~*J3ryoSd(<Ge&<8y2UcnJF0Q#8k#9usX~if=@v z>n6NMkLRqH7^j#t=cldFT1mJ2yvudb?!4-9Uk&+>7Q6wuYg+F|IamNMElIK^NwFm6 z)p4<_%(EosN*nr<<4`8OEEZDSPD!O?UE<6g?uWj8tSIG-ja655!vq;Yunpna<gUn; zqyR2JL+pXLseMBTKX|WnkHcxm?ZfVMtu8{>`o^KKP&T9-39vexSMAPg#JI<O*6F-z zq3`jW|1oJU$$i@GI`8zn9QN*T-9oi%SRa_SrfAMQ9VunZDKd3A@+O$&ZtvO7PeWH{ zv5#-_N;w^R^6k?~K5Y^SDd#7#%DPeOoiT;Ua>saZZ7H<I1x?wSKI}Ur4~W4KBzmhp zATRmL{q7YZ(oyXh!&0HhI8GYyHkhfByco5w+dW$*YP{0!xW-Bd+IY^NVL~tme>T_P zKIw8__INKByneZBQtf(Sh%SKH_JYV;;rmyZa2o#HQfgJYwQD&$j)+BMu%%M4(ibN; zRvi~7(Z-=~XV0;|WeH{kj?`jcl?}B9M1&awQAaqT<%`m;rr~L4srnolvS-tv@FEvS z;RL}Sl6TuuJ`$7~!eT>MIuaF+r0SJ$pZB!GdD+BGAO=sGle1?8bb>Zro|{qsmMkJO z1jh{lBn<^F3<FgFOx1>_;ziN%kuR6iiv$#jn7Y1dzdVUuo<!Fw_Ec1NbD7xLab#AM z{t^dH5L7{}MX^M%VN;>yaP|O=q=aVc{FBK8r7|Lv*<XP7$XZfnmy@Z%w#u`0MSNEr z-Q?#ExZX|uOk|_OebbC_lkQFEt&rm#OKNl8^!hFrlPj96(UGNlvh$`Wst+NK&_ri~ zQC`y@9(qrY!&euH)8oiVBYa#7Em9|;Eq1Hu@;q_W2<0joPnr!aGDYXH`z>+<E6h6T zVk`C{^NZA;z*<&{?6X4SAY_qbic_Gtsa<(=U4%G6x-ChnGd+*m!w7l72WTQx<rj3% z8JIojYmj4Wlc60D{jvQOq-Hw0E6IhHvnqFH)*PME5V}6+&2ZucaXc@IXC)h3wni-= z6p({H)sN3rA&;U_vi5epyL+x^O2UvmLw3RmfhQDEJ7S4i!%_Ew=vV_t41}?5p(RDb zK0pvjt~?44D_C8Ee!25>;6}-C6&Q{T)t;EvM3-m*|Db2T%Y6+20m>%&Q*wOOwPD4s z=_~&6(C!oa%@fC~=YeB(reIz%c#4bW$b`xRw>hl|!Y)r0tGZ}dWis$?-<QgHD~mCc zO&DOUDrH-xYCskI6<7U0%Y<M+C~y!Hpu|?hHu>T8B};r>?ieA#G=YT>FVr@K86FY? zf1>i?VYbAaCp%||(>X!QsBgX7ec9={0#87XKJPKo7nx8v6fal2)8Va7=S92Y>Y3+a zKE9<X`5XnVDLk(6j2a{4;<~=NVQCx&P#u|z(_3qvyH6D%pPWq^R;xyeume2-8XqJX z;*Cc`yisnDh#(A173_*GIGflJxK_ma=pqRLj&BQNTS9~uJ_d*#S(-71$~Q@rF5k2x zNB5VRp4=SvNLMf~L{@seXMo<>)bGjgj&svmJ>epod6{e{(${_Z)N$S6ydDi7@-r!O zQSQwxgbTbxRlZYmWHS0xLigcK0p&)eU_eh2Da9n?(HQ+ftIY#kI2_n(1Q<Mln1Iu; zoGf)8`nTYw!nLL+1uNV_O&{MRTrc_yQ+xrX2#9et29z9C+E-?Kimb$rFkj=xH#wHF znw3bQ)&P2&;~H$CC(EpKaVoq+Xr=pXEV$q2Iq5*)o!0~YGhsgEDslZea$!xgvT3N* zJo$`~w={ov5ZKvrxq@skq1lTNtrOe`q#6`QivYnEn}^}x!4qU8e3jZe5w5aGr6YZI zU*#?^VX<2#4%G<T(ef@_eZRsr27`exgZjxmaqdu_J>Vy|*zSr{oC%Hw4^Z|Ia*R&b zC76Ru<)rhxZ03)WbcR!7p}Mx{36<H7_<XUdudJF^Dkd~$@r+FAm_T%vv;*)@BFiwE z7l<7?43uuf3p<Y%y=AKK4q<^sAz9)Skii(4Yh3}G0;7i{on3k|yYv(rr1DH6`~dA+ zA)qIAg#_-pJaZsQ@37Iy(PL>;Q|Mr?=cFl!1mmCk4~KjW1Rj3^eW&vr+cF<p(`6K) zEIU?^#EKGcjH|RwqFh7o^k^0xg!@H|@!m>JI4YzZ>?jtX_Dq5>h_}%AoCL)1E*Px| zPQ!m9XQ$bZCm9c6!H^cnQLKdE32>L0@C>ca9;G`|6Q_1Ks;qUuQ%A`Et&HxAW?603 zre-zuGz*sZQjl<)f}>jRh}!jBjsCpELZ=O6C^0~Wa)<#=qYD8B5C)OPqfu+ob2OX1 zXC$<cz}i#~3I-Ykd;nDxxs1jU4TaoE_<cY}78}BI-Xb$p<>czpTpcBefSx;46dM9h zRW=tY19z7TA^!#a54gXo5{`pBJ>Cmd-mOl^1p)PPgyPMU-9=XGiv*Z#2m^MzNtk}v zJ<xre{($&mi2WEnA$lC}gk&NDOvX~c0kofh1<;TlqD5~GSS`R^(x6EmmfA;k{%MdT zSCdyxOqCM@5F_yEnyk=}#5R{?xxk?BxXl4q_%G<Kc(=x{IVAs?_qx+_GalGdg!#tc z7~xlmUTM}-V8DT4LR58_zU4uL96+1jq;;TIAiReyMKt%=9dlv<0)mOyj7WF4(iw@2 z)Pz_fso}Yhpzz>0;$Pup_chr)RiMJb8vH9LPu$2RFS^DEZL7ouXiL4Bnkc1&^=+d6 zAF(Iu6w0mZ3Ts>RnB|UPv3W@8Y4sVCO4mfIaYi}B1f>xa2XqV+OOidksP;{wbm2OQ z<pp*GaRoj??fFm9FJKu0!w|@gZK5Er&BIt^V3m_OkfDweUOq|j5ZVI6#PF?fBI}%D zgP%B1%Zkyl&>r~kOIQec{2M*YOmh=pzs|edH#32vCc>0kV4M17w&yzkl+->(e9dAQ z0yDvK>@%RF`M@TS>?xwrZLt=K3>yVmf!<*|ATba@h$XBRWN4oE6fDO=aSK%YV3mWs z^p%(>NtOhqX$Od%^;g)zHD2~WTs{VE<jxJNFqcFP0xKZfO<DXm>09JM$dL@A;Ujt0 zCGzovPO{2BZH!LoLsMw0L3fl%^c<*qXwk##TqNQGkfDe`=9tPJq##p8a0q;Wh7cWu zX96o;Aig&vlz*J@J2(R$XH8LC?UuW^XwNP{I$c?Yzs&KKIJmFB%8YIbATp&Rak(MP z)@9x;v$PPOjcfriV&6g7fs1C-)EcMA;BL>=fd8DCIyY9f6I<TsicIexhiKT+i>M^f zneYZbdnhLXF_0nhh$To2BMXRV5N3HqZw#um6p*Ftg{l)@U=wZg6NDc*PGoR$F1evO zx~hKu_Wu5l*W25R`b{Rf#S5;oquYXXO_HsP3xr?iXX_&0wq98Z&Bv;Jo<^JFyv=dZ z;XH?{LDbtFCs@F%+wXte=hjqM4zAE56>4aO8eOHKGNgAnBygoA+N}%)^yW7;eJoWE z@&JVj($nfa;nNXmjMn#hpt85Tm|W9+{q`9Tc>VGw74`%jhH5eM<@U?xukS;v-1vqx zxhacpN)ubM#HKv4rO4GZ<s-$)k*IJei|<<vmE=--eLhwn@YZ@gM=$*63(>RhKfdSU zzI@z&_w#->c1cOBit=fGCMnFuM41RYFo~!!uqKi&s2~6VG>(A8ct_eoZU7P4i9gYA zwm^gHP#A0uNb>r_84!m(=80$jFe$ihlaez#xUpLJ@$<*+*LTf$5wCA|Uw+N*@4wuA z`taq|xBJ^)e-p3oXK&9AU%mPj;rn~5Mr>9I?(cstM9&{uFWVhA?M`AezbUvTfg5la z9BqH=cL~CMHycc#M1Ua|kZRzA(<Q#Yf=o)g#nusp6Lo9U5@CM-{{3KQW9ZSJ-@Ll{ z^*}u8=TE%Xcek%E&++)3^~&AdT{ae2ma^l1`}aEn8_qTk_S|NzSt)pVb=myf{ngo# zQNEN6x=acl){py8;sj^<{`iidmBDBN=+F_+7k~g7G6(fQ;NdzT<Cp*|L>{0S@@}vK z%`?$Hn1;FfUR!JlPf`nLPQ471Z(qMQA5FaQJo;o0<wb|zuD?7xe)aOoWl*e@GVGZF zn^ugo?Af8Q&i^i?!gjr6y6?faZ(p&(vCh9nz1D2p-~G4$<F#mTAAoLi0PBBfB|xJo zgcwsr#P2LKoX0K7BHjxEqMD$&C%Oq$FR;Rb$sMCW+|v0)S%)pc!Q;6LFVbP}j~_q2 zef^@~k{5>Cf=(lzH#hV+6Z18fK)k-+-CbRr0t$~jf<Kv4eKDWCb!w{jxA$+~_-#5R zkJ36KUz)dS#h5ffpEO1NKS0N~1;Ekz5ri-(yf&2k7H*IjY=%&vED_pnL|p}8h*RLq z1nW1AlM2v^r3I%!fd_p4e0yBqGb(s|>L~tXPWK;duY*5WPd4hKjdfep0s(bgM4!Z2 zEVZ18{UFYMpBsAe?#(NUM(8%G5c0ck-@pyWGIsChLhS0P{S@>7)}{%}&Z0<vZb zc1$-Tji{4F#Lp-|iJ}A0Xkj4aAUfy)SsYt@FwbwF<vmi_7jWOL)#BizKfQbN8c^`6 zmNH_-6ei5c-rbD~R)uQ@fB)0j@gWX|T_*PIASM7^Ohs@Oui3#z03GpI#B}0=cnN6} zR;>i5)Wz~s2fQv?p^G73{e^Gmxp$WYgO5Nq`OrSic?3?kB8{M;4x!a0N{^lBfx&gE zxC^TSi$-a`;Y!f`>g6e(fvAkM|3BoJ+o+rye2iU2bQi~;?W~t^7SEP2rx9SERZD)+ zjtP!%=7tK%@Xwz=FlGlHo}JV`ynl<yvW(*~t6x0*zaEPkmqn`D#h`~AUAI(2*_ze2 zD$qx%B-9891r-KL2+)Z1Q<y0fbHZW6<3{GR0it8$Y9Zu=-u)V2ytJDlY4arI*k2&K zxjavYJ#n9XXKm%j_a8WNd2;;i>$e|2?l8aqd0$9`i^<5B+t06W2%Wh&IsWwFBXR2f z{`|Oc_m#Np%k6C{=vpu5KD>MP?)96W_djD*kt0v{ZY=L!8P`u7g?)W!l|uroC0&2B zpJ{{YfviY7Py)3B4FzyRjNwReaEkqC3;}Mo&G-{5fyd$*2P{F}#(w_ohu7cl39Mi4 zKA&FJ>Ze;*ZyQJFd--)|Wk2}(-R1ZDZ@~WP%iHU>jd!;fpT56*^Xa^PRyn!edHLbw z;&tuhdi(wDD_rya{_ex)*RMaE)-P9VDcW*qN|%%-_HEf6_3E*sR5OvlT0|OTrHF`% zh$zCy0yOaxiEEr_eq7_)z!WC1B_qU-%Kt>xHudBM1e>cHq)FQsgik5L&hf>Evz(`7 z0n+p_Thk+Vj^G-GqDy2Ue)vH*1=9?hZ-~!3N|N-pGQF$x6zP@}S`dtRQ+y7QS`N+0 z9pktd4>iW-@IfHd_-0VgGy8HlVSkxNf<HzPLGi<2se3_ga6@Ps2GIf67$trM^Oack zG>xU~!9I-Be}BI4caR>D#;vK+jw$wo8SX>6vSX6{&)%uOOtF85yF%07Y><hcnk1GH z<TU<7ZWuz-uHuq?Rl9m@*}Cv1wxnp9>=_#FkGtWayyXG-HqaGTLS%jcsfGCw8v0cs zR`kGPOU$8u6OqPs$TNfiSD^TzQA3~G{Q8+<OHo2qZuP>1eB~R6?_NQDG(XrAkcy$~ z7B5fRgYtYeP}+<{b5@m^KEKq3rU)xnx+k%CYz54EtHh#?!e{!*ocNx+dTK7$Y?X#B zx*-G!aU7u0$%-u_0>g8jeu%B=XDWMPD2VE&8Nk!k37Ip`MifZPA-KFrKyP_%Owh|X zbBoSA4dxiuKC;1&Z3@wq;ViCc84`qnXBb@D%QOo%@%r`!lqFuFq^)=6PjqFc&^$ns zwX@XSbVbL4=*gVmk<{^AVt?+)laqVg?14PKDNgSy!Yk6ysvxk!^%R-5G})Y-TaLmH zkBDu9Y)v;dkSs<I^^higB6iGs*NqzQ7zs;6T+tfho%o?HNkNUQo>?j<MqovxL66qY zVTcp)J7RDK=xNfnKx!EfZ$Euh@u-XA-Hgc|)a`d~Umu?xWLHA<(~YfKA+_QNruE^B zskj!~JSZPttZ&uQn@6$6%Uta;lit#o_k6pj>616BCok7ueLQ~q`RwA&_UeJJwBydN zyVrJ82Pf6Nqm|M|Snpyj2;2NCB6p5OLbrlGUhA9E2WFOovuHqabw%~qQ8{#EceMyG zVh`HDqc;D|;W>ze4FWNa&-YQ8A;wVUS2tH*KYzJ8J-PeV6u2Mv*XM-$`_I?A*RMam zYkKaV_dj4d@9*!L*6+vnpBR|je*AQGMyUROzVN9JZ{D`%<^We>dmdSpkf0UdF)BGI z1-U@xMb?EYht~9#&Y58$#)vee11SQZjRJ&BC5zfQs-f>czi(H|6WxEu?eNT<TBW*^ zfB*5#*-@P}GazD2qRurAc2H$tNKopetl61?hXIHF<A?XyliQCU@WGc?7q}RuJLb1j zM>~bIaTJ}`FRxH>v?7LpHYQ`wp<3B=Vmza`9@YdW3Uv)hLi}7XhOBC_9z85n#*v{L zLJ;XW51O1J1LQ$swf-jrWqgG8PnKc`cR}fD6+d5GJ23y}G1`O6n-lzbcSrEssu600 zbX2wR?!Uuz;K=3K$<X6JV*<~V47qSBVArd7l-Dn>$GZL-SaHgx6`_3M)a<|`d>lt` z_W6^)pep57gKRswaAYQlo8K}bkVw)+6gd&`tuQEIiqHGYONE*tf1pFxtqV@0uoJbA z*FLuRPl})iw*zRnB}65bw+)g1;s_G9>E-pMO(Q}{r;c_ZS~x-;Zab>&0tdV+Tqu^b zxmtvs!YSHl=lMw^pA3r@2^WP0zr4OcKY=-Gx__%$!UQiY03<1GL}=>1(B?A9TVjE@ zt>5-qeHV1f7@3F9&hBeV2j)`UR65dU_N5R(hz7)N7PUh;c=zKD6?>%pzgqW2@q799 z60pDu?DhM1Z#*Wonoq?k>PRQ-9zcJ-{X{(e{X6so09{H)nbUo^AR7<xD1<S@>*DkX zP8Ac*?9f^%i%(%C@FXAKzALOnn5y>hs(_T*QN%Wh|4p!`sXz~tr1lY|D7eZi*7c=^ zzR*zR4i))BdHO&CF_BtFz#`D;;^q*>l0NYadkr4Hy1H!a?|l0B9$N`2V^4t(jKou? zdmrp=R$HJ)JO29i^-Exa*@x4Q`D{S-_Vvw7|HIWn>gMVKce83lxS0H+14mk*@u~N( z->huKDUv6K&@3r)AOWD<p)`FUPVR}KTm0baQh1#YxGTr{<`;I7);~Zcc7#wv$cr^e zh1{kpgoXe5<+D-2g@(|^yEGy?9#F|Ap@1qrB_43(5<z6CLoY+~f{W25Sk%H#A3wlk zV^skC>iSos)u`<X7blQ~cD)pS8b`prqxv2uz>R+K%ctAQc7iN<EVGS~@<+1P|2O3u zvK+>tEZ<NRkJJb-4r1U)a#t8$<6=F)9jtOtdO#;oAN%#~?%yre|N8n@_4#!B9&I)z zaHDw7#r&-n=JI9j{AQoH;*S?35&o_<|NP|xV%?hOsy?dpsmw7>^oYO_+28?L3nHSP zsY?*r7HFIbuX9`R&Nt+kfZQt2B<lGj>w!=|skSoo4z@KY&^g#TCkvHaV`DD6IF<mf zQg`lON5f^gCB!v{n9jt~!SO2eSixODM%MSYu_i}KYtFE}DM_@fDet>>FJjvl{^Ehz zpOd;1B9(pK9OM}NY_)BXuN&d&`(Z^$wlo!`AFi7C9<jm(0aE+o7F_HA;KsHEfQvs{ z%fLI78zuot0@+4V4paU*&iDsK@^p^>aDx5Y2<>k}3;#9A`i(4k0^d?TGzThNg=b_r zGOG#<Z`9I=+5Xo0r}u<TH;#8FSZzWNPam4p1joE(R{2DW+Md{v7~?Zy>kx0bpRVkJ z7hovSe-K~t6QJWeLc|jB_7oVtG83%|K8e_;_Cz2IPGJp1?EeTnsE<X8&BMfh;kBAH z_TvQs;SJ&Yn!dDcg8mQ_j;7C*V{V*z)=nMn0uxDWip{0h&Goa5lbikH%boIOoGBX` zr~Qqhp7vJciA{0o&{#RP<oApl7tZva6e7l7CY%;mKZt=xFjc+qfTUa<St!dN$$>Aj z$qTJ5A>@D_+u|3F<Y;>_fWCzoSH^b)D3ho`b9|x~#_G`=U;-Bfl&yb)oM1de6Nw{% z70&9h4Q?)9(?!+=Frvoj4A;=ZH}=90QKV02mL8*E(d2!m+;X*H-#B%bYS#4==f;^k qwXH<0X!%v#8UC60CIbu54g7z!K3S|WO?*=T0000<MNUMnLSTXt{sD&o literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/ImageryProviders/naturalEarthII.png b/public/Cesium/Widgets/Images/ImageryProviders/naturalEarthII.png new file mode 100644 index 0000000000000000000000000000000000000000..50271c79a07e623796179e9feacab21f69ff8859 GIT binary patch literal 7491 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 N002ovPDHLkV1oIR%-;Y2 literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/ImageryProviders/openStreetMap.png b/public/Cesium/Widgets/Images/ImageryProviders/openStreetMap.png new file mode 100644 index 0000000000000000000000000000000000000000..84acdb8095f8efa82d7d9ff5a8c4411741f7b488 GIT binary patch literal 2663 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/ImageryProviders/sentinel-2.png b/public/Cesium/Widgets/Images/ImageryProviders/sentinel-2.png new file mode 100644 index 0000000000000000000000000000000000000000..775fb38ce12a0ea7e90c762a5d70cb45fc4e1759 GIT binary patch literal 10086 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 IM6N<$f=G;?=l}o! literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png b/public/Cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png new file mode 100644 index 0000000000000000000000000000000000000000..0520e17c706f233fccb3ce9e09f171949945e6ed GIT binary patch literal 7302 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png b/public/Cesium/Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png new file mode 100644 index 0000000000000000000000000000000000000000..1546494ca34e9e2c08d62f36d71aa89ad0aad762 GIT binary patch literal 7289 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 TQThHq|ACrnda9q5Z6p5&?MckJ literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/ImageryProviders/stamenToner.png b/public/Cesium/Widgets/Images/ImageryProviders/stamenToner.png new file mode 100644 index 0000000000000000000000000000000000000000..af894096c891f908ea13939d7b41574a5d9228a9 GIT binary patch literal 4119 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 Tbyfe%DgZgKvUIJaaq#~EEV0_J literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png b/public/Cesium/Widgets/Images/ImageryProviders/stamenWatercolor.png new file mode 100644 index 0000000000000000000000000000000000000000..552130eb52c29237b125b2febfbecab41bd41c07 GIT binary patch literal 10806 zcmV-6D#_J}P)<h;3K|Lk000e1NJLTq002M$002M;0ssI2B@5<>00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D02*{fSaefwW^{L9 za%BKeVQFr3E>1;MAa*k@H7+qQF!XYv001eaNkl<ZXhTJMXOLXymEHWX|GHdT-YS>N zTN`VGSGHFhBumz=b`>bCw4x|eR3IsV1OX6Xa?XPR2AKefKoB7E0D}QAIril4>72V? zPMy>1emQja3=-G3i7mV8)>q%W4s*jf=iWOtb@dVcaHP0D$p6}&`mR0uz6}=(Oc_~~ zDVrSg>8VI16EYJX37a=^VIvVJXTp_i1k6YU)r8MXx<qtd#bz|hsWA>SZk5PIAv(c_ zAF9NnLE1!e&0rTRBfl?CA1G%XdDmmf`A`hb2;q5ybE>4x#5YuG^J&^+ur{zV>)TC+ zDx6!VHZ^QM>$+a0T}Hh2+~mAk%xR?DX40p}{YE^fvVpq&-t>V$_E1FJ>o5G+6Z^_+ zU?E!+7~4+VQAvk1_^wPykK06KM$d%H>5!iAsc|ou%z4yUP-WcJxKoNQ7Cbk=O8z@y za8#k@M070eyktc0D6T0XFjM6wm2-cnUi;?L)S^V$N{)L)@8dFSuW&9ovZCPY61obe z5*r%p&>5Qv-Xm+f32)ASxy;U1lVOpuD$I5@=`S;`XEB?G&X$7rHT+@Skud*ZFt^WN z*yG8*?xO$ee0ZM~Gm5B*FPU+-k&c+@kispg<bs()jD!yYFw;Rj={HgVGalMWg?Ey^ zO3bOoRz%vOu$xBQsZdUx+&1v#_{OIt_vK>XfrKtT6EJh^4gKt&?D#$|keeCntunc$ zQ`;5VZjxI%zENei%apakIwbT7=Qx-0UMNIv>`==k?>!kAQ=<>1z^#(!qU5`f^IQ~y zcXVXdL{{q#2C^RpUImbUV>|KZv+jB)sb!;*|B236%~aS(2Ss{vC$V8<5jEzLS+|}H zC^4@V_i40UqqkMYu5osqb!m)CrJa?yznpLzthbT~R+3Hu9gVG>QT?|BKw85047p_t z|L!h3sRzeRbl#*O+1nbnuH)+!YO6x7tHJwO_h&l^i@`dIfjg4t3U42h+_z;2AUa_( z8#_q=o3#>iX_URpdFvXYLPMZbAClhl6%YB+-0llZ)`e<Wjd^pCNr2sMVyhIqzMJyv zsQ?61%|ZG-TEeZyT~LQgHeAg{09pp?ti;@4)woB-Hbi92WE^GIsdAnQYbn~#C+AwT z3w<SeqdNP(^6>xgfqU$Hm*BWy66<EnQ{vVo=M8S{Xwi2~$L7lPwn4kf^hVNpw2Un1 ztkq1ob@+{OSB(bn+c_uP&7`O9P>8P&3j5soUpdqNxaQ4QcdO67XkWKwHL)CAk+3IO z=O+p^18~>Vft_s7OnTw-3TrQ?yhhwtP6qTCT)bt#8|yS<E-;9p%()E4q0@GQ3uvUX z44Fn&D$z$d=XfPy(@*|!HSa71Ze^?|5}T)Y$@vPgp4>R9<BvsjL8q-cvu%Q-<aW+; zrG_*pFAECc);VW6;dy0nH)5{3gOTDvKmUQZ@TN8K*Hh$aEdKK4v(oPFRe~l}Lzg1i zm9wBHD(jb6o6b1lV}Kbr;Ty{de>v{gS&zonysse&USb_a%=7<^vzFuV#AR?E3EvXD z(>k`glib+J2c@t@k1i^aaeB2eHs7owpH&%;M!OZ#Dk2tx+ALFU37gQFMT7Gij8h@3 z8nq4Cd6gQ-5m?>+Fn=g4yzkBb!jb%oh49yB?dsEK&%b!-m*jU>U9_4gg+7%$qh;Kx zahp(UlXb%9;ghus4d3Od#{35DF0(EJ^36D^39lLVn+cFPUnLc+#QbH}W6(~M0iCs1 z@f9JwBqDR%VwdQ>Z;}of-!`bF)Iz-!UQlr>&|1NkmFT>QtSiwC5HudU59QS<dxdqG zv;*V;v`Zbs{YoOSyn{Jv23eNX&7PwabJ_#ZslzC@<J*sbVU@?JcBF^npyrM&&F z=~*zTRg<u)DA3NS6Al%#l{vRcZbMceH&E^}?U2z;gR<*iW(XowscqmQWE8lrkXstQ zRi?JZ$f}B3Qp-IiIVTY-6>x}lCAWIZ(VCtbq*X$ez%<mVA=@Usp0i%o@#QiUmfqG# ztI60^%2tUifCNEHsXG*f3gnK2v-RQ3en;y24z9r+dHQ@e@0wJL*-;9w8oUv>Birxi z{fh?31!fh)s~QTzXVVB9xC>dSay1A6cofnGK!V&ro*<oN1`=-vgWs*-n<}<hg|`t_ zliW<LcI%PHMgO{nZR*5U!TqTezF-g=Dr!}+broMRsjXTuIgcE8AX85a8hV*SCAMmH z#<xxHlt8)oB2m{6DKvz0&5=w?B)u<~eBH^tzTz(Iyih4e_R%Mbo|UURT4p=DaiQp% z(vcM%T{rP9HL|KeB9Tpqr%c*k1)~wxn*39CgV@$_E4*qDHXYwG;Ery9qtKYadoa+= z?AA%ucc~iPta5gPvX+Te&f2R+9+l}WkRTP?GHI(ySq;u12S!DF`c(js3ph1=S%}Qp z_|o2Rwyu*9JJDh%lIx77JEG}Bp8P-9@dM6ic}I_Ya=5tkc}7<Qg;dUYJ~w}{<eAZt zH3MCjL(58dSwl9}=!St=tCXXH*^KCB8S)oi*P%Y>7CeVn<;W_4#Kf&8VKZqvcn@`` z#o!;KX7;F_n>xKJW9vJN$0X+S&NE`<A>c>HofXPmp&Wc@tgwB#Ou7N|P)41y0g6;~ zMe#f)B(WX>=%z~DWU&j$bp%uO0q(ah>YK~nuPiz3qQIT&j5fc<`<6y=x>99h%SVgL zw`A|4>RnLWvua>o@+~N!Bv5g5U5l<O;Z-@bVnXu3?|?-^HVohf1vs`tw*sfj%(g~s zNXV*!uEC^Wgl=&&O|t8}7@pSs8zKj_TFP&n&DzgEj!dF9Xh^|(Ch^3K`>K>1kfu{x z8n&f|7e&WtF|=0M-L31u@?ChL2j{zxd^4K)jhp_S4g2G%t<7A~)$mUA-M_&G->;~p zmpih8O$(E!70b<neXQi0)ji94&{9D+AO<C}0s$E4CY&|B3a+TY6J$fjwjc%tsR3Py zuEWS+5SuVHsMwlF0|M7H?;UFPkU*{*ffWUrRUyaNtn3)gZk>_wHJNslsj0mELecX% z@4J@SI+0%+Dy^R=c*Zr)eZe`VK_?!h#Q{p_K!676eO~654(gjLp+8-4ukiwQ@^JFZ z-pu*KqHp%a^WEyxY$-IJo;)Ml@5!Di&9$g_7L3q}>|a#FE8ur6_t+L(%F#_V1SDAl z=&R9n9U?(D;UyhiQ==<jT6Ap}*;azHVsvgdAAFjD`(imVD`1;^$g%@E;lCnBM=SJV z!F@yYUMq+1>7hy0J+ArY6wF$%Udb<?l5AH6_rtnDqSS*H+K_BhBz+*5_?Z>^+eQDM zEqc9$Lhfou?#V}`hi4O`!{tIo+0mX=bG&yn{p4(UZB%kRk)5-;f7uAHD1jw4vi8b* za90bhLIvO=N7evWwI|Uvcmvc5$OAH9;2RRYAOu$x|Fq^kr8&<g?2jbhyn(Hj3A@VK zWMn<R-jiGImz~!{|3opgkl((}2WP8QfiTSMj!{;*oa-*Xe6p^ODs*Alc05xbj=k?= z-g4pJ+fM!Myf4c|3!}&Ki&xZ@hxyqH{M2R1ko4X1OO=RC4a&1uMcaMDJ8J+9Jo83i z*^I1~qiaBMHM*)r!Ra+P!PL;A8d}oB%SO~vA+{=1O(kJ+*722+Yeot$mY0s~`aTjt z9wIXex?&>EGHH=KH+f5s=(-kLy;kALXD@c2Rn)@H?nhMayRO`Ke9T3b7oP5#5?R*= z490RTNV+MK+#gE))Jgu;a%7(uPi;-+ZuiC>pApwb#q~S+#WMxV=*y@2?u%;CGZw$z z#y=b>ZH|hLCz^jz3tCK|Z)8;qSs=|SWIC`U2bc87D!8r$=0)$U8eCL^%kWS^R#kih zXev6N0PeN<4=RDn`K24G<8BGvQt-*d+PRpeT?$O<jH{fCzT7c(UVO177{7K>-$VJI zM00P4wVz?714#N|Mycy1O6}2HOElXMO6~C_zi%V|%Hp3)W|EICq(}SZwL6M^T(?gY z*01C~??_liUp%Y+>rNrFcB$~-s9?D++s4emVkNq1_?ATHEKox6FPhOc2nO8Mg3GFJ zUh^;Lfkhnx0Hnc_$O;IT0_3retI;`gt!2k^N?5sJIPU4lrs%zsvGl#r(#hRt8=^5U z8JALpW+eFoFZDAw|3Oe~ph^v#+)N6G3E^Fguj@kjPLyws=00#SKey4}-D1AE;uka{ zH+oF4Tvj(G0qe@vxVkx!pE*_<J0`lOU%Y&_v%|@bd;G*l;^K9~KBc>tOz)Bg<3`X@ zhO7r`0#&oXvgV!FJaamn-Z}VD57mkTG05=J_T&8alU?t}#^U~>`%%$)x3qaZG2JY! zT+?4v_XZQ+uv6c(qTjbuzY3Q2A$$WXv~p4ht+tV+zL+qWl-nt>t|gRij^qvofx+3g zys@uYqRoMrk&F;0_6QRnsn*BB_PDbBMA{lttoMowm)ZOMG8=mNvhqU5lVg1<1i5)% zu}v7>dDS%|ZckK#zy}Lt9q3U8feI|uSYCr!tsroR7@$N(WYcgz&aQq|O|0oRzFN+1 zi|f~ukDH3?pFrg0mpk8fqJQU!{R%5I(n38}Xd+9^B;Q8l`<T*DTo}nHXR`X~lv>x0 z<XVwJ1H$k1r+;9L{k0`(DX1mKgmAY{wA@TA-jcUQ72CM9c^@t%%XMw$WNh@9;$M<6 zNAg}r`q7}cenWOnfv<{lTCz_<7@B*wmh!-Y?4O4K{-58k!hp+{!ZoitA7(7q6=L0Z z^iTSoZ&gxrCC~Nj*46adt*VykqvPN7kZ*<A!+5fZ$+fXUcTDQQbNw`bJW)Cx<Ikq$ zvk9rL8!sO5Cl7~n5Ws6T?#CO1SvA=keay|CVqgI#u;SdM^z3D6<DR_rKzB|ETNC2^ zmHdO@)ZJlm@~kj_u4uU|+n`VrCF^5wU3JeYjwuu3@y=;q;vUon{08q|#UT3@3?O=N zR@ffn*Y0LlMt5?7%EiAlm*0^Ir?_-Qn7yd@EfzufzMt8Hr<#~_6Ps;kOFf)$G$Ec$ zN#`=+$2sLvPW!ZA)ODiyHsAm*d=O0k!p)u`aw6$UTx~0-@#^!ZPhae6m_xLDuG#L3 zTMqzBitVxLof5al<n=qM<)OHAwJ`UwvNl?C+P45!u3^Tad<lKQHX*oX!0A`HhhX3$ z!gKem48#C_J03|Z*K@1)s*%sdTYqB4J>v4Gg~jtKvH7?l{xq81M;02%Y$KCzA#>df ze<CfPPD_{a+Qp1~C8K;2FV%J8`3^MG5J|u7Nx(kfEGo&F3*7DgmoJ{8N;y#}S7HHW z;i_i6FKs_ktmE?bL)kW7S{YT=9;%CXWXtu;+(mu+vErDPoKN)Nyb)ZNYTa#J^RMVW zixFG`-pig@kR!<bt1zGxs&`TMEvn9GaceC5_<{~A@94Ly_-J<inqv7>Go-gX<ZC|a zH%O+DEY_phPFCqjD97{q1>U@z*KYFWosxM+E<+;|I?!x8Exzl^yzgX`r)KKGQ0{We z?sLPM6D3vRE;VPL92YDX#jRV#t^2~pUCs7T*%%X7Mg_}#ZF7`gydtbzhm6Yp1<Ajp zgx0IDD@8YIP1?6C0kd7x0H-ezRU-o^ESy?+)qn{KCPLSf!rX<DfBEU$Z+60$dHe00 z=aECvUq`a<(1m???g*Ccic6ie*vXX!;-wRD{%WawEvMZrnKyW)t{)S6faxgza|e4b z#;d_iesnN;Zl4y~sJ?t!EoGv2+6%5JZuF!$abB9cDzDy9H=wV5URb&%tc`-nn|Flu zt43(P)`=r9maeJ(MZqy8JElupPc&bx34ka;0FZbn!mA1x(KQ($6qpwrkA$U*03QAN zx2p7`)YMrsg`TG~Kk>$Xi=+-=nO2Gi*E^|VH&-0Vh@bG<#|7=Pyml+6-saW1Axs`1 z#RI|2+n!Wft!(`GTcJHa$~-(N1~zxTc>40`7dy{)D$k$l@o;SHbZP2Lar)!j^d)Ka zwzz&*uv`-X{q{$yXH0R8>b_agH6{C|R2aEjGp2W5cg>o?rC0bVLwkl`LKfgaEey|M ze)Ey$nklZ|m*=mlNqhCvKQdWsY4fIB)!)O@KMm6#62RSJJDKl^mxhw+(X>30DxJ@Y zr&6WQi^iC^^H|-j>!*z#BLAC6W{4=}-5Z;K_&dS2_n%gksA-(Q()G^x=kfgK@#11Z zp+ugy&8F`UWJgbwrY{#~K9)A_==N#NF$cY(uy$UwJ`z0-MbC;BT2TYbFe90M5TAL_ zA_KOc;G!N`hS3OyA}s_2n3X(pnrBwqepr~iWKfTv-u@evb7q}mAwm1cF!vLLdl%vA z<EidcagbGqQp%~cav`gJQZ%lrJGaF0)#A>zqF&d-$ZcWypZ%$|f>@Zm=s)s?D&;N{ znb$XoUq$lo;L<Nbg}1zgH{AK31mZ1dY&D%19n<*3c75`!{^TRUazn5`mhBUo<G$>= zwi|_68it4^fRpN5)V+&E`@|~)6v;l|39LbLymLbJOpES0#XVD8y_MM<`yzCqym&zM zPimG2`g8L}s`Ppw{tsySm(ffMUFuAWgBj&)-uNi1oXLpCQ^JXaa4IPb=k&V1n6lqn z-0R{5sleUnmOax;S>bhiVn435WBFdZa41sP7mn}s#(on{9RR5fB!1%}up*yXxRts) zBFtTq)^CGARf3Co>m|uCrTM1yn#?a7&`<*wXb7OE&>Y|_IVOS7pi4FL&za#>$vFl6 z5#GGxJEzX?Qvx%EsnZ$XZ4q^3O!Hzq`+5-l36*#+O1HCxJ|_QBUOkhQM&hOW#Y(JN zcJLx}VsURYwI!NThR7{lucYvGUjJ=4*Grd9vdRc44Ur-!)d-_Cp~b_Y;;#a!H-d#X zeZ+<+s+=o1dd`^nRJ7kO*&pkWTHB?vZ(a>rYD!<5e-@!LKzD;C4Q)<#P8T-E;Z)r- z3b4g9UxeOgAJ5KQ+sUnzZ+*i^2MRM6iu31-%U6o4xAk}kcG>0-cQ7q<ro@q~dO9bc z%*(ww@v)%ggEKknWL*=X9|~vhXC=<8V5-5Y=C)kvz={L3a3-dIlr)a9@=;pqiRK2# z(r`>|C33$F#lGW0zP91rmIRgZ=SI(z=C72t#$@+o(Rxd^eGa2e1zS@Bb1+M5fn|Ps zLUK-O?rCrx>Hz$P!A@{ZN$#221m&1Y&t4T=V}^CuSl(|C>-p)=vX;xB5c#bKm14qY zR`x^_EgauVWE<k~9!hLs#157h8GmWzle#`4*GTd(njQ?~f8`Z^<4eG1+>I9oX<>wx zhA@7RDh)#bNd71*4=`dcRXh|;{oK!d*M<Dp>rPdwy9!&Jx+2>i!D3)WmSx|#5`Jhz z)+&e{SZhYsw7?<^OEA@{z6A-Y0Z#jBV^WRZ&^kbHS8imd&OR$_o1gt<m3kD1Hor7f zh}fS#H+P@Euu8_;M5=`=9LvdPQff~u-<HhZPw}Pgsl>ex>$)(b8&~=nxeG6~g)@z4 zwu_PmB7igPT*3qt9c9D;yf{b-oslf8&MlGjen0z;mwd}le$DRwsmnuGOqsAt>-P+p z@In?HwFv&Za&Sfuuba@$LMukdqQOGro)SIa^ioZuf)+Wrpad6S-~)wKx9?>p&x_=i zcJDho4}T;TV|s!#o<BQJ#P<08Z${B~k@P_#+m#WU6Xmn%0?qR=+vVhBQ|3u$-4Lsu zib*G9VlOyK6-QWggi?=_^6{8@ic`;LswWcqiI{ebRfcG>pB6glVgs6fKS=Khk#7gW zKa7yS4taE4PCxoc*tjS87ffukf>{LL9RrzE1M7-!sV0}+IoLn-(5fC<gDInoY--4g z7FjkT%aV6i3OvzWljW$Tirg+={!bPE$IqWXKgY1YXAk|M-TS==^;;r4QB*BOsgupc z<zmtPd1<^qw|XN#f4Z(46OPi#Ff9)=QXj^HuVBYn<!r({!Kp)}(1#aK#<gP%u(@=U zDs@wQ3-kvx)=0+R4^wYN@$dVsURB9&PxEtU1^Za-j}f4l_Rj?CWz{zeh!@-d`bFI~ zTiO~2*->ENi>xc|d0~6X@GnEJ(45opM<4N17bMDSjQw!u!tWUL{n-@%*K5xIyy5tJ zH}zJCix|ePmetInf^Q3}*Yb1yAOni+dR-4L^`NDGymTU_9%E!MaQY}E9;c+^j55Nh zy%^s|6~Wpf>25sV98ESxWBUWxA%xtE;U6H_8;Gw1kIK6`zx9xxy(X{S6t*6S-ifU3 zuI?Q#yJ}3;0~XOa&u>D*o`(5U_AY`1iLP1Azf}7(8E|^*ZhqmSMA?m-e^a^ocjb@& z%yf2Yg{WW3e#Rub@q}MgDndGAe<IGF7uP-`Mq7B>Xky`FEr5}DxmE#M0(S?A(#g0E zml0Y%71xI$B&Y)i^c9YB@`<!Ql$5%d%>E$qVFatEnI?kRg9LvZau4FD@XXK>SZ;l+ zWVyyKU01C)b4#c4wmX@%ThjKp;e|+`8$bh|m3@n_{)6e^70I_y!PaHZWP0usjoy^* z{r$6D-Yhz*8}0hdzf(T{wrOoM0w0&DiDy}t&R8^RLvq}XjrS(zj-{Rq!BQ_B<BX%V z0D!Cj5()703PLqL#57>@sf2!vmY_sODWR9kw-NDrlxm^b4l3Qwuw5**m&RX<M%toY zx2`>Zwxf`KacxZ5xFZn@RbfMoJ}NC=$xnS!Sii4&W{S=!4GIE!`sI!fT~G1N7q_1j z7B5#BtMT9+#wfk+@((achs^8QVA*%|=}Lz&@s2wFTjkP!Q_uarare#LwIPETHJR<Y z0aEHk_@iWLgb~~Pg+Wp~&gno|K+(BO<yAF?7^xrjXfof8rCTCg3(7Sj)Zr+8Ac{1x z%wa5g1dr||kauzNXF=cnZ07m1r#YbJ?3JQ_{^e7>D*Cm+XX55<%{C!=pOgaAW@Hok z!>j3<w@)h0hiY(Lo&PxRoi(O@^}MP%bLpS^@xR#e{MdukBgEBIdN!AHE0S9;8WL6Y zT`x}`k&peE+VLOjdhyaADfUD%XX5HHs0JyXjT@&p1)A6ClnDYlM2UT5sSC~b5V_&F z&`amqi9`#|cE;03NV0*Zni#T)#@ge=J{0?PjClj|2djo2-iY7nA+NV;q;vOW*(|uy z6W!|iC;aLy*}EhL|7|Ayx8c+~Q*tj9<}c*~bMpAVz@#nMCo)X9olL&TrQeItzlh;` znA9O6aRkp#WF*+KUR3pe-I1S($+}@yJDn<@Ng5Zj<@4$CxrA|&RgY83sZ{wy(m0ti zM-qBJB@D-u;kY!w6b56(R{=CrTm!=#A&GhdZR5x$7HMVaHk{i>a~Ct&swRup$Nbdg zQi<6X48qVv-W8u65vDH~%P_-EK<;a6O$|aTqHj^MKS|DC(TD}*&OeLZN9on8x#cSX zLH<F||3;Xrr}-{4Ihe@xC6!~T(yF9ID%G&A2Xwve7zZ-14^!d@BXoo_{e(D3r~`!F zPm9BGwU;cx<tV3gV}(vM-B0BP*g_AR?P8NhP~rfJ?vF<5Nvx4Tx=8X!obKWhdvIbe zk-VJA6n1vx-Rj4Q#J>>SPr{KAHX*Bc#`<w-@pyLeN^<qS=$_>rQ^08$ytR$%$@z;F zZpK(RP)>T|p^fy^we;2)SIVDdxF(t#&WR(r?5BD2im0E?DyNdAA-2##=If5p`cbMT zmm>h1m_9<QBcw7^V>Xz0JPs-(4bWmABMdUd;}qXRW*~r0CeccBhjFZtCJ&;~!x+*+ zp*;z1Ad%>cCqG1~_i^e2oH>B9`^nf|D*g^Zzl9M;DOOg<{QS|_>_BSaBgJ}`cPu~? zkT$O4H-3?R+-Jn5jD@|sFRG0$WSYUa$&Y!<9V0{E%;vl3!pS&)5jL`%bU7nl%_}#h z>J714H^NqiX>EwCO*=!JHcUvTIpb8!Jdx0j$COt#1T!3#gReNA5P<{TOs11bHsW*( z%N!wUF|=@WD~ET+ncjG;FBTunW?NXcnT>ZQV4cmj$Fr@;>_IyA9u~VACwT>}(&Ne1 z<H^T;!p4Kr`e<stL$n+Vk9}B9tO+;1Q!z^)V)&j&N?`(s<ytwPxR)t4P^r#1|8ZV^ zSX6Ec#vQ3Ls_xzv%XOU*p$}6ANM(>#23h5F%shrmM@jh@tAh38MNn86<9b=4jmY%S zxdDy`4zyG828=q4qx-@^I1i!#q(}pav~x^vBGJh)1Mx&Zm+WB^M^m|>bgrFZ+bH$` zPQK|09u7wDXVPhzNvxjFOm=bi_i&Tl{OY~p_U)W?rtBJd<~VvOo%*4N460@GsX3j` zxC8;wjB`x-B(GdA3ODl7&Aj|ss`zP=uj`D;oru^=$VWM&pOy#E(s5Eb!RjEU!wir? z9HQjouoZxkvLzsKH<{_AQa!PBXDn4u5|I7|ifEwl!(^n9##&jbjiH-px|dBJ<+6Qj zri*3T2%?9fI|!l?#ajsa07?Bc8hYF9qGXZ}kH@BZQ*-C@n>X^7M~SIZ8oeN0`=45D zvx_9Y<3yn0oaORL991aaGGDsLn-5FX(ULx{RmYUdJ;|sIbAyZm=Sb2#&KSd#26mj$ zPqW4_A@^fK|Cg-|CZ!>^)JNxGEdmI&Q!#*0Gff}C&;|krYiH;dj)7p>XsVT=yJPWQ zE<Th<cQLVcis|Oqc8Y8#@OmV2m_$AxBR}=oUiWPrL%b<d6-ZlR>WsMgD7$hkZMnD; zSrYGl)iC%bHoYg4IF=~Tnn|nLMJ{!YD~=Y+cZ=2AeED8hznT~8dP%7ZEA<j$7s`K0 z1_f+{Gmlg1Fyx-m25<qUj6rB*ME+=8fB?GabVHOp6hZ58{9rV42#Fp>k%N)&2a(_b zG}1`m5I{4Iw_tb|N%yl%7lHNCSU-mk#<(tuY((HAp}lD2#~#Q3vaNi>x<HzmWVugG zok&lgi;o@WT@(7+5z~9_BF+887X=OIgD_I@ZaQ%>C0#0%J}C+33;dOmay_lo^)gz` zXswUYk23l&YxEOxA1;C4eMoVbQqCqTFy0MOLJywp#F9YbHay<VrJG5%iK4*!dK_zp zc1Dp0aAbe2E2D>zXe&u}(#%jY)z8sA6xx9Y2V&@OD%MS5y)4-mquSU|8y<K+>is9r z)|(zDUsiLjvHZi2bCVaSrB8Q=$Hu*H1a<!HXrhtHcE_^~OsbR2T%?7wasFmOpX8O( ziS$PasjeNDT2Y||DfQ6MuoSR9vSt9PlX3GXE)C-~2tfsUiCj04?jq71WU`IqnklyC zH%&qS0Hpnq&^|2k0UBv$X+Ts9Nw(rdJ5IJ!L<@l&iTD~&|NelZg$y@gffg*-h(-1X z>>nWhH+<f&TDSIY2ddA@S`L@9gqo+m*eS`k{y~<RfAOI2aq(s@(?R80V%Ziv-5x7W z%i`1LUx?42X3AP!Cn@!@S~o8C5i)dxep2p0#ZDYVNgJS)<8fn<7JEtlXdGHWZYaSI zBnl(xQai~u5G44$FB;w(3GNF8J_Iab$bo1W&Vv|QPhcH!riH?q!APW)2zOB7W-`!- zdOOHaAB)z0BtnOY(4MgOHNWRuPFFuhK1j#kv2FK<{anS==Rc_Mt^q9frVsg10KJwh zIHg1vmu;f*_p+s@&z_sX&xMO$t?Q<h4qWJhwT3kYA^or(5K=#*cSMT)l-x(c5TOpm zlx`y5jwCzqWH+1XCgWX9yqRX&NUDvi)uD|b;XI6?hfw4Y8vPIne;5hu3%FazXa|mT zQfMRQJB+$os9+Q3>m<W~sBS89B;q*~^}QeT{K#SZA6DmoUl07z()NFtnE!VVpR`Ai z>c+A1+ySlN%)hL<Rn2%>HnMJ&LmsA5F~h8QI`n&Q?&OfV4npjqVNwtVXtkS=2U(*V zDGiWv4+b@nhGChk4HQB*QRpEHJygDj&Gb^qHiB&=saArh^<b86!HFgUZz2gmKb%Lf z=)s7;5eu{tp<WX0z=AEfuMu}2ia6_|?j9DY1we#4$Vf90IgEzib%ovvVL#aRe%)#R z-RZS|e{cFV%c_~P?tcE4<?G+5me9oF#pK-StlyFkUo?v3E<2@6zL!x;r?^C252JQd zGI&2gsa-@Z23QY<Nbz{AJV>ihfk6;Z4n`xX1I@Lg86d!Lve3;Y+PD~`{}72Cp$WKj zFbohEtOF#7!kTcvOayS!iU+#ra5ov~r31}`zk`W%lA*yk(Mv|UDFohj1P$*E1%B@L z{gc)82dkUEzqr!q46I3|XXU&)@lGYRRS0frp6SHmu!2n|*2Z?IabfaJp~|1-vi%9Z z4!|=25`>8-V&xN@K1gXTp<)LHktkiLFi6R;;=s<(i57a8QX`t^WO4(sLLUojF$pwi zAc4osVHAVhAB=>Wp`#&zLuj}KjW!{{4-ro*6=^^`jfkreb++N2PM|@^)rJP!QGX|m zG!WqfNMKJi^nYBQ@7O$FUA52T3QF9U+`bXFT+DA@iLYH{AN6FGPjgf4Imb1Vc%+X1 ztRg4x@})sGGY~7)brNzHCidcTSF{A)cOzmKCUs&!47rD>Ri+m!_7XxTR%k=B?L?-N zNDq*iK|0-zv#qd{aq)IG)<Q8L|1d{<81^5*g7tW`36Hi?$RWhrjQZP&U^f$L#XZeY zXBQO!2KRGB7ZK{Dq77&e*z&g5^UpTt*X_Rlvan{$B~zQ@>6u~f?z{QPdf9)!=y{}Z zj_mg3ozz-o{PkzyGpMP9uzpm~Zf0Q?qEzs;IauhylulIc!IfT29-y>Vh>F#_po_(| zeok#i^FV`MGT%jHj&b}jm+PUEoouWb2iVYH%@n!U=h^FX0WS}SgY{VCK-lwP(AkMc zI`Lo+73?DX5I`&H2Kx5W=n#ty#>i$Yd;|%75c2-gANZQh^LtC1Ou3Y={S(Y|Y~_p) zdMszDopez0KO*Nw%;eVY^*`6Q`UuVJWb%WF!kJjUt_71jNv#c$x=^JJQF=-J7-x=f zMhhx*ka8Q!_fSGB&bQ-yODNfm!4Q#YiL$K--H1}1GzSL5LT^0TLXizP3V=S0g3N;) zg%3o19W>G&^><={KA-{NZ$sTJh^vzb)&gL#UXWKT+=zynFwX%b^dnE;ua>PMH4(e> zZq{;KwBA*nqgp&#a*t(ad(w{^Rcu~=@V|E-{v=f~yYR#(dG%gitLsLkws5fv5eI2w zkTIbS9TAus)b@zj3eSNdFipg?4xDepvTbOpA;dLBxHdf20Rw3SZ6_Isp@U*tVXnp^ z4S4i}pr;-PfFnl$PC<7k=Iz3LV9lZJ9?a24`n!o>4~Y!La1f$)#0T}M5Bc8n`@g+u z`_q|uIkTR6@MdCui1$Acy$>{OoqBMjWV^~g?&Ix`s*`V)7xw98`C_(oETLXW7wZOS zeF&g}irtuaJXwL!ZGZ;(7khBEpVC29dr7&Q7F&>9D+GXN+KFs`yx2vj+R1nu39W!` zMDRugYlwzgNEC*gdLr6@!zLa)67jZTfgTdlAL?hq16;Hd_w`c2qg?b<is+}Ky;P*1 zL3&6~s_6TH;J3GIU$LwfbHU8$PZRg+i(BWC<G*EYAIPj-7HMCWTilJ=l>2|XL(Sy9 z%bX<j<J`HpQrAtY-K5gbngd+98`>}?KwpEi8&g|Cd?#A#aUDdl1<67HtyroBO*Tbi zjZvxvgRIm2$#f^fb#o95)_{f^N#rmV-WPNq47m@59BsHCau42vK^Q$Wq})Boga@f$ z9~FTLw1nMFAy<9azsKkMXRrS&Ya19(r*3~ce)hG*=RYcr9hR|;YHC(kYAr7wsyunK zeB<k-*jjFLRFC71a`kM|sDnWW#-ZkDu`yg|2nzMVQX2|@F?w*VHN^K(Dm3N}yx5Kv z8ba~LaI6JMwxWrqDBTbyj)aiI!N`$N^h*mIi3axtJ^RDHgHdli;%&mbjS**S#0fEg z-+-k)!r4#x2N<NAhz_tAq`wO~8X0Z~2ln{<KXm*4e0Ad!j3yS|O<#S7z4lsWva=%K z^7t>y*$pG*Hw#>O^H2qOEE5hX6OpPrCu8FO1tV;z0sz5-{Qv*}07*qoM6N<$g6MEO A{Qv*} literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/NavigationHelp/Mouse.svg b/public/Cesium/Widgets/Images/NavigationHelp/Mouse.svg new file mode 100644 index 000000000..7fae028c0 --- /dev/null +++ b/public/Cesium/Widgets/Images/NavigationHelp/Mouse.svg @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + width="29.6875" + height="40.625095" + viewBox="0 0 29.6875 40.625095" + enable-background="new 0 0 64 64" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="Mouse.svg"><metadata + id="metadata21"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs19" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="747" + inkscape:window-height="596" + id="namedview17" + showgrid="false" + inkscape:zoom="1.84375" + inkscape:cx="-37.919388" + inkscape:cy="92.305679" + inkscape:window-x="266" + inkscape:window-y="72" + inkscape:window-maximized="0" + inkscape:current-layer="Layer_1" + inkscape:snap-center="false" + inkscape:snap-page="false" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> +<g + id="g3" + transform="translate(-17.15625,-19.531154)"> + <g + id="g5" + style="fill:#4d4d4d;stroke:#4d4d4d"> + <path + d="M 31.9335,20.041 C 24.639,20.034 17.653,20.318 17.653,44.617 c 0,10.951 8.799,15.032 14.347,15.032 5.545,0 14.347,-4.081 14.347,-15.032 0,-24.27 -7.119,-24.569 -14.4135,-24.576 z m 0.7515,1.358 c 5.643,0.012 10.927,0.236 12.063,16.153 -3.86,1.805 -7.916,2.765 -12.063,2.86 l 0,-2.966 c 0.845,-0.162 1.481,-0.909 1.481,-1.782 l 0,-8.956 c 0,-0.876 -0.637,-1.621 -1.481,-1.784 z m -1.027,4.855 0.685,0 c 0.249,0 0.453,0.205 0.453,0.454 l 0,8.956 c 0,0.249 -0.204,0.449 -0.453,0.449 l -0.685,0 c -0.249,0 -0.452,-0.2 -0.452,-0.449 l 0,-8.956 c 0,-0.249 0.203,-0.454 0.452,-0.454 z m -0.345,-4.855 0,3.525 c -0.845,0.163 -1.479,0.91 -1.479,1.784 l 0,8.956 c 0,0.873 0.634,1.62 1.479,1.782 l 0,2.966 C 25.002,40.264 20.408,38.16 19.25,37.573 20.381,21.633 25.668,21.411 31.313,21.399 z M 32,58.274 c -5.016,0 -12.976,-3.707 -12.976,-13.658 0,-1.983 0.045,-3.853 0.134,-5.563 2.003,0.929 6.696,2.74 12.868,2.74 4.394,0 8.704,-0.934 12.813,-2.771 0.089,1.718 0.135,3.6 0.135,5.595 0,9.95 -7.958,13.657 -12.974,13.657 z" + id="path7" + style="fill:#4d4d4d;stroke:#4d4d4d" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cssscccccssccsssssssssccssccccsscscss" /> + </g> + + +<path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 32.922034,38.950793 c 0,-1.135825 0.114919,-1.458045 0.677966,-1.900938 l 0.677966,-0.533288 0,-5.28078 c 0,-5.271249 -0.0012,-5.282003 -0.677966,-5.958745 -0.557439,-0.557439 -0.677966,-0.940935 -0.677966,-2.157165 l 0,-1.479199 1.535487,0 c 5.657554,0 8.584338,3.728529 9.71855,12.380791 0.498434,3.802265 0.50348,3.525731 -0.0676,3.704572 -0.261017,0.08174 -1.528694,0.512016 -2.817059,0.956167 -2.037206,0.702306 -4.048032,1.113044 -7.488026,1.529528 l -0.881356,0.106707 0,-1.36765 z" + id="path3768" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 31.485081,35.842143 c -0.104591,-0.104591 -0.190166,-2.231347 -0.190166,-4.726123 0,-3.983994 0.05502,-4.557071 0.452127,-4.709456 0.24867,-0.09542 0.556802,-0.06882 0.684738,0.05912 0.127937,0.127936 0.199056,2.296481 0.158043,4.818988 -0.06319,3.886405 -0.13867,4.598683 -0.494572,4.667009 -0.231003,0.04435 -0.505579,-0.0049 -0.61017,-0.109533 l 0,0 z" + id="path3770" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 30.440433,57.945316 c -3.064053,-0.42113 -6.77723,-2.474953 -8.457621,-4.67806 -2.1588,-2.830333 -3.113918,-6.737716 -2.769592,-11.330385 l 0.193121,-2.575872 2.07988,0.735628 c 3.527026,1.247466 6.337701,1.719068 10.215474,1.71405 4.171771,-0.0054 6.642981,-0.38868 10.25836,-1.591058 2.178973,-0.724668 2.692193,-0.815856 2.813444,-0.499883 0.08157,0.21256 0.08664,2.119864 0.01127,4.238453 -0.106217,2.98581 -0.266531,4.212938 -0.712935,5.457208 -1.450217,4.042206 -4.401118,6.844156 -8.437938,8.012017 -2.314747,0.669661 -3.34314,0.772215 -5.193465,0.517902 z" + id="path3772" + inkscape:connector-curvature="0" /></g> +<path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644;stroke-opacity:1" + d="M 11.584306,20.532528 C 9.1265112,20.247533 6.2927846,19.555647 4.1047676,18.706316 c -0.969492,-0.376332 -1.792939,-0.704961 -1.829884,-0.730287 -0.152564,-0.104584 0.766016,-6.242541 1.16801,-7.804656 1.421191,-5.5226316 4.304477,-8.0618496 9.1542404,-8.0618496 l 1.541531,0 0,1.627119 c 0,1.237125 -0.09381,1.627118 -0.391402,1.627118 -0.215271,0 -0.581373,0.271221 -0.813559,0.602714 -0.345889,0.493826 -0.422157,1.5275241 -0.422157,5.7217066 l 0,5.118992 0.813559,0.759978 c 0.675846,0.631335 0.813559,0.971083 0.813559,2.007108 0,0.835921 -0.111771,1.235378 -0.338983,1.211489 -0.18644,-0.0196 -1.18336,-0.133551 -2.215376,-0.25322 l 0,0 z" + id="path3766" + inkscape:connector-curvature="0" /></svg> \ No newline at end of file diff --git a/public/Cesium/Widgets/Images/NavigationHelp/MouseLeft.svg b/public/Cesium/Widgets/Images/NavigationHelp/MouseLeft.svg new file mode 100644 index 000000000..0c49c15fb --- /dev/null +++ b/public/Cesium/Widgets/Images/NavigationHelp/MouseLeft.svg @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + width="64px" + height="64px" + viewBox="0 0 64 64" + enable-background="new 0 0 64 64" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="MouseLeft.svg"><metadata + id="metadata21"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs19" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1282" + inkscape:window-height="886" + id="namedview17" + showgrid="false" + inkscape:zoom="3.6875" + inkscape:cx="-10.305085" + inkscape:cy="32" + inkscape:window-x="104" + inkscape:window-y="136" + inkscape:window-maximized="0" + inkscape:current-layer="g3" /> +<g + id="g3"> + <g + id="g5" + style="fill:#4d4d4d;stroke:#4d4d4d"> + <path + fill="#020202" + d="M32.854,20.028c-0.015-1.274,0.576-2.269,1.151-3.236c0.758-1.278,1.543-2.6,0.997-4.417 c-0.555-1.667-1.607-2.485-2.539-3.212c-1.254-0.973-2.159-1.676-1.687-4.343l0.041-0.229l-1.35-0.238L29.427,4.58 c-0.615,3.484,0.878,4.643,2.195,5.666c0.85,0.663,1.653,1.288,2.072,2.542c0.366,1.224-0.18,2.143-0.869,3.306 c-0.641,1.081-1.366,2.3-1.349,3.933c-6.837,0.007-13.823,0.291-13.823,24.59c0,10.951,8.799,15.032,14.347,15.032 c5.545,0,14.347-4.081,14.347-15.032C46.347,20.347,39.228,20.048,32.854,20.028z M32.685,21.399 c5.643,0.012,10.927,0.236,12.063,16.153c-3.86,1.805-7.916,2.765-12.063,2.86v-2.966c0.845-0.162,1.481-0.909,1.481-1.782v-8.956 c0-0.876-0.637-1.621-1.481-1.784V21.399z M31.658,26.254h0.685c0.249,0,0.453,0.205,0.453,0.454v8.956 c0,0.249-0.204,0.449-0.453,0.449h-0.685c-0.249,0-0.452-0.2-0.452-0.449v-8.956C31.206,26.459,31.409,26.254,31.658,26.254z M31.313,21.399v3.525c-0.845,0.163-1.479,0.91-1.479,1.784v8.956c0,0.873,0.634,1.62,1.479,1.782v2.966 c-6.311-0.148-10.905-2.252-12.063-2.839C20.381,21.633,25.668,21.411,31.313,21.399z M32,58.274 c-5.016,0-12.976-3.707-12.976-13.658c0-1.983,0.045-3.853,0.134-5.563c2.003,0.929,6.696,2.74,12.868,2.74 c4.394,0,8.704-0.934,12.813-2.771c0.089,1.718,0.135,3.6,0.135,5.595C44.974,54.567,37.016,58.274,32,58.274z" + id="path7" + style="fill:#4d4d4d;stroke:#4d4d4d" /> + </g> + + +<path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 32.922034,38.950793 c 0,-1.135825 0.114919,-1.458045 0.677966,-1.900938 l 0.677966,-0.533288 0,-5.28078 c 0,-5.271249 -0.0012,-5.282003 -0.677966,-5.958745 -0.557439,-0.557439 -0.677966,-0.940935 -0.677966,-2.157165 l 0,-1.479199 1.535487,0 c 5.657554,0 8.584338,3.728529 9.71855,12.380791 0.498434,3.802265 0.50348,3.525731 -0.0676,3.704572 -0.261017,0.08174 -1.528694,0.512016 -2.817059,0.956167 -2.037206,0.702306 -4.048032,1.113044 -7.488026,1.529528 l -0.881356,0.106707 0,-1.36765 z" + id="path3768" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 31.485081,35.842143 c -0.104591,-0.104591 -0.190166,-2.231347 -0.190166,-4.726123 0,-3.983994 0.05502,-4.557071 0.452127,-4.709456 0.24867,-0.09542 0.556802,-0.06882 0.684738,0.05912 0.127937,0.127936 0.199056,2.296481 0.158043,4.818988 -0.06319,3.886405 -0.13867,4.598683 -0.494572,4.667009 -0.231003,0.04435 -0.505579,-0.0049 -0.61017,-0.109533 l 0,0 z" + id="path3770" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 30.440433,57.945316 c -3.064053,-0.42113 -6.77723,-2.474953 -8.457621,-4.67806 -2.1588,-2.830333 -3.113918,-6.737716 -2.769592,-11.330385 l 0.193121,-2.575872 2.07988,0.735628 c 3.527026,1.247466 6.337701,1.719068 10.215474,1.71405 4.171771,-0.0054 6.642981,-0.38868 10.25836,-1.591058 2.178973,-0.724668 2.692193,-0.815856 2.813444,-0.499883 0.08157,0.21256 0.08664,2.119864 0.01127,4.238453 -0.106217,2.98581 -0.266531,4.212938 -0.712935,5.457208 -1.450217,4.042206 -4.401118,6.844156 -8.437938,8.012017 -2.314747,0.669661 -3.34314,0.772215 -5.193465,0.517902 z" + id="path3772" + inkscape:connector-curvature="0" /></g> +<path + style="fill:#66CCFF;stroke:#66CCFF;stroke-width:0.27118643999999997" + d="m 28.740556,40.063682 c -2.457795,-0.284995 -5.291522,-0.976881 -7.479539,-1.826212 -0.969492,-0.376332 -1.792939,-0.704961 -1.829884,-0.730287 -0.152564,-0.104584 0.766016,-6.242541 1.16801,-7.804656 1.421191,-5.522631 4.304477,-8.061849 9.154241,-8.061849 l 1.541531,0 0,1.627119 c 0,1.237125 -0.09381,1.627118 -0.391402,1.627118 -0.215271,0 -0.581373,0.271221 -0.813559,0.602714 -0.345889,0.493826 -0.422157,1.527524 -0.422157,5.721706 l 0,5.118992 0.813559,0.759978 c 0.675846,0.631335 0.813559,0.971083 0.813559,2.007108 0,0.835921 -0.111771,1.235378 -0.338983,1.211489 -0.18644,-0.0196 -1.18336,-0.133551 -2.215376,-0.25322 l 0,0 z" + id="path3766" + inkscape:connector-curvature="0" /></svg> \ No newline at end of file diff --git a/public/Cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg b/public/Cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg new file mode 100644 index 000000000..9dd533d58 --- /dev/null +++ b/public/Cesium/Widgets/Images/NavigationHelp/MouseMiddle.svg @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + width="64px" + height="64px" + viewBox="0 0 64 64" + enable-background="new 0 0 64 64" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="MouseMiddle.svg"><metadata + id="metadata21"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs19" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1282" + inkscape:window-height="886" + id="namedview17" + showgrid="false" + inkscape:zoom="3.6875" + inkscape:cx="-10.305085" + inkscape:cy="32" + inkscape:window-x="31" + inkscape:window-y="15" + inkscape:window-maximized="0" + inkscape:current-layer="g3" /> +<g + id="g3"> + <g + id="g5" + style="stroke:#4d4d4d;fill:#4d4d4d"> + <path + fill="#020202" + d="M32.854,20.028c-0.015-1.274,0.576-2.269,1.151-3.236c0.758-1.278,1.543-2.6,0.997-4.417 c-0.555-1.667-1.607-2.485-2.539-3.212c-1.254-0.973-2.159-1.676-1.687-4.343l0.041-0.229l-1.35-0.238L29.427,4.58 c-0.615,3.484,0.878,4.643,2.195,5.666c0.85,0.663,1.653,1.288,2.072,2.542c0.366,1.224-0.18,2.143-0.869,3.306 c-0.641,1.081-1.366,2.3-1.349,3.933c-6.837,0.007-13.823,0.291-13.823,24.59c0,10.951,8.799,15.032,14.347,15.032 c5.545,0,14.347-4.081,14.347-15.032C46.347,20.347,39.228,20.048,32.854,20.028z M32.685,21.399 c5.643,0.012,10.927,0.236,12.063,16.153c-3.86,1.805-7.916,2.765-12.063,2.86v-2.966c0.845-0.162,1.481-0.909,1.481-1.782v-8.956 c0-0.876-0.637-1.621-1.481-1.784V21.399z M31.658,26.254h0.685c0.249,0,0.453,0.205,0.453,0.454v8.956 c0,0.249-0.204,0.449-0.453,0.449h-0.685c-0.249,0-0.452-0.2-0.452-0.449v-8.956C31.206,26.459,31.409,26.254,31.658,26.254z M31.313,21.399v3.525c-0.845,0.163-1.479,0.91-1.479,1.784v8.956c0,0.873,0.634,1.62,1.479,1.782v2.966 c-6.311-0.148-10.905-2.252-12.063-2.839C20.381,21.633,25.668,21.411,31.313,21.399z M32,58.274 c-5.016,0-12.976-3.707-12.976-13.658c0-1.983,0.045-3.853,0.134-5.563c2.003,0.929,6.696,2.74,12.868,2.74 c4.394,0,8.704-0.934,12.813-2.771c0.089,1.718,0.135,3.6,0.135,5.595C44.974,54.567,37.016,58.274,32,58.274z" + id="path7" + style="stroke:#4d4d4d;fill:#4d4d4d" /> + </g> + + +<path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118643999999997" + d="m 32.922034,38.950793 c 0,-1.135825 0.114919,-1.458045 0.677966,-1.900938 l 0.677966,-0.533288 0,-5.28078 c 0,-5.271249 -0.0012,-5.282003 -0.677966,-5.958745 -0.557439,-0.557439 -0.677966,-0.940935 -0.677966,-2.157165 l 0,-1.479199 1.535487,0 c 5.657554,0 8.584338,3.728529 9.71855,12.380791 0.498434,3.802265 0.50348,3.525731 -0.0676,3.704572 -0.261017,0.08174 -1.528694,0.512016 -2.817059,0.956167 -2.037206,0.702306 -4.048032,1.113044 -7.488026,1.529528 l -0.881356,0.106707 0,-1.36765 z" + id="path3768" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 30.440433,57.945316 c -3.064053,-0.42113 -6.77723,-2.474953 -8.457621,-4.67806 -2.1588,-2.830333 -3.113918,-6.737716 -2.769592,-11.330385 l 0.193121,-2.575872 2.07988,0.735628 c 3.527026,1.247466 6.337701,1.719068 10.215474,1.71405 4.171771,-0.0054 6.642981,-0.38868 10.25836,-1.591058 2.178973,-0.724668 2.692193,-0.815856 2.813444,-0.499883 0.08157,0.21256 0.08664,2.119864 0.01127,4.238453 -0.106217,2.98581 -0.266531,4.212938 -0.712935,5.457208 -1.450217,4.042206 -4.401118,6.844156 -8.437938,8.012017 -2.314747,0.669661 -3.34314,0.772215 -5.193465,0.517902 z" + id="path3772" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 28.740556,40.063682 c -2.457795,-0.284995 -5.291522,-0.976881 -7.479539,-1.826212 -0.969492,-0.376332 -1.792939,-0.704961 -1.829884,-0.730287 -0.152564,-0.104584 0.766016,-6.242541 1.16801,-7.804656 1.421191,-5.522631 4.304477,-8.061849 9.154241,-8.061849 l 1.541531,0 0,1.627119 c 0,1.237125 -0.09381,1.627118 -0.391402,1.627118 -0.215271,0 -0.581373,0.271221 -0.813559,0.602714 -0.345889,0.493826 -0.422157,1.527524 -0.422157,5.721706 l 0,5.118992 0.813559,0.759978 c 0.675846,0.631335 0.813559,0.971083 0.813559,2.007108 0,0.835921 -0.111771,1.235378 -0.338983,1.211489 -0.18644,-0.0196 -1.18336,-0.133551 -2.215376,-0.25322 l 0,0 z" + id="path3778" + inkscape:connector-curvature="0" /><path + style="fill:#ffd800;stroke:#ffd800;stroke-width:0.33870965" + d="m 31.356243,35.809264 c -0.164314,-0.103856 -0.298753,-2.215682 -0.298753,-4.692945 0,-3.956026 0.08644,-4.52508 0.710296,-4.676395 0.390663,-0.09475 0.87474,-0.06834 1.075729,0.0587 0.200991,0.127038 0.312719,2.28036 0.248288,4.785159 -0.09927,3.859122 -0.217853,4.566401 -0.776977,4.634247 -0.362909,0.04404 -0.79427,-0.0049 -0.958583,-0.108765 l 0,0 z" + id="path3770" + inkscape:connector-curvature="0" /></g> +</svg> \ No newline at end of file diff --git a/public/Cesium/Widgets/Images/NavigationHelp/MouseRight.svg b/public/Cesium/Widgets/Images/NavigationHelp/MouseRight.svg new file mode 100644 index 000000000..2662ad18d --- /dev/null +++ b/public/Cesium/Widgets/Images/NavigationHelp/MouseRight.svg @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Layer_1" + x="0px" + y="0px" + width="64px" + height="64px" + viewBox="0 0 64 64" + enable-background="new 0 0 64 64" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="MouseRight.svg"><metadata + id="metadata21"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs19" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1282" + inkscape:window-height="886" + id="namedview17" + showgrid="false" + inkscape:zoom="3.6875" + inkscape:cx="32" + inkscape:cy="32" + inkscape:window-x="31" + inkscape:window-y="15" + inkscape:window-maximized="0" + inkscape:current-layer="g3" /> +<g + id="g3"> + <g + id="g5" + style="stroke:#4d4d4d;fill:#4d4d4d"> + <path + fill="#020202" + d="M32.854,20.028c-0.015-1.274,0.576-2.269,1.151-3.236c0.758-1.278,1.543-2.6,0.997-4.417 c-0.555-1.667-1.607-2.485-2.539-3.212c-1.254-0.973-2.159-1.676-1.687-4.343l0.041-0.229l-1.35-0.238L29.427,4.58 c-0.615,3.484,0.878,4.643,2.195,5.666c0.85,0.663,1.653,1.288,2.072,2.542c0.366,1.224-0.18,2.143-0.869,3.306 c-0.641,1.081-1.366,2.3-1.349,3.933c-6.837,0.007-13.823,0.291-13.823,24.59c0,10.951,8.799,15.032,14.347,15.032 c5.545,0,14.347-4.081,14.347-15.032C46.347,20.347,39.228,20.048,32.854,20.028z M32.685,21.399 c5.643,0.012,10.927,0.236,12.063,16.153c-3.86,1.805-7.916,2.765-12.063,2.86v-2.966c0.845-0.162,1.481-0.909,1.481-1.782v-8.956 c0-0.876-0.637-1.621-1.481-1.784V21.399z M31.658,26.254h0.685c0.249,0,0.453,0.205,0.453,0.454v8.956 c0,0.249-0.204,0.449-0.453,0.449h-0.685c-0.249,0-0.452-0.2-0.452-0.449v-8.956C31.206,26.459,31.409,26.254,31.658,26.254z M31.313,21.399v3.525c-0.845,0.163-1.479,0.91-1.479,1.784v8.956c0,0.873,0.634,1.62,1.479,1.782v2.966 c-6.311-0.148-10.905-2.252-12.063-2.839C20.381,21.633,25.668,21.411,31.313,21.399z M32,58.274 c-5.016,0-12.976-3.707-12.976-13.658c0-1.983,0.045-3.853,0.134-5.563c2.003,0.929,6.696,2.74,12.868,2.74 c4.394,0,8.704-0.934,12.813-2.771c0.089,1.718,0.135,3.6,0.135,5.595C44.974,54.567,37.016,58.274,32,58.274z" + id="path7" + style="stroke:#4d4d4d;fill:#4d4d4d" /> + </g> + + +<path + style="fill:#65FD00;stroke:#65FD00;stroke-width:0.27118643999999997" + d="m 32.922034,38.950793 c 0,-1.135825 0.114919,-1.458045 0.677966,-1.900938 l 0.677966,-0.533288 0,-5.28078 c 0,-5.271249 -0.0012,-5.282003 -0.677966,-5.958745 -0.557439,-0.557439 -0.677966,-0.940935 -0.677966,-2.157165 l 0,-1.479199 1.535487,0 c 5.657554,0 8.584338,3.728529 9.71855,12.380791 0.498434,3.802265 0.50348,3.525731 -0.0676,3.704572 -0.261017,0.08174 -1.528694,0.512016 -2.817059,0.956167 -2.037206,0.702306 -4.048032,1.113044 -7.488026,1.529528 l -0.881356,0.106707 0,-1.36765 z" + id="path3768" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 31.485081,35.842143 c -0.104591,-0.104591 -0.190166,-2.231347 -0.190166,-4.726123 0,-3.983994 0.05502,-4.557071 0.452127,-4.709456 0.24867,-0.09542 0.556802,-0.06882 0.684738,0.05912 0.127937,0.127936 0.199056,2.296481 0.158043,4.818988 -0.06319,3.886405 -0.13867,4.598683 -0.494572,4.667009 -0.231003,0.04435 -0.505579,-0.0049 -0.61017,-0.109533 l 0,0 z" + id="path3770" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 30.440433,57.945316 c -3.064053,-0.42113 -6.77723,-2.474953 -8.457621,-4.67806 -2.1588,-2.830333 -3.113918,-6.737716 -2.769592,-11.330385 l 0.193121,-2.575872 2.07988,0.735628 c 3.527026,1.247466 6.337701,1.719068 10.215474,1.71405 4.171771,-0.0054 6.642981,-0.38868 10.25836,-1.591058 2.178973,-0.724668 2.692193,-0.815856 2.813444,-0.499883 0.08157,0.21256 0.08664,2.119864 0.01127,4.238453 -0.106217,2.98581 -0.266531,4.212938 -0.712935,5.457208 -1.450217,4.042206 -4.401118,6.844156 -8.437938,8.012017 -2.314747,0.669661 -3.34314,0.772215 -5.193465,0.517902 z" + id="path3772" + inkscape:connector-curvature="0" /><path + style="fill:#ffffff;stroke:#ffffff;stroke-width:0.27118644" + d="m 28.740556,40.063682 c -2.457795,-0.284995 -5.291522,-0.976881 -7.479539,-1.826212 -0.969492,-0.376332 -1.792939,-0.704961 -1.829884,-0.730287 -0.152564,-0.104584 0.766016,-6.242541 1.16801,-7.804656 1.421191,-5.522631 4.304477,-8.061849 9.154241,-8.061849 l 1.541531,0 0,1.627119 c 0,1.237125 -0.09381,1.627118 -0.391402,1.627118 -0.215271,0 -0.581373,0.271221 -0.813559,0.602714 -0.345889,0.493826 -0.422157,1.527524 -0.422157,5.721706 l 0,5.118992 0.813559,0.759978 c 0.675846,0.631335 0.813559,0.971083 0.813559,2.007108 0,0.835921 -0.111771,1.235378 -0.338983,1.211489 -0.18644,-0.0196 -1.18336,-0.133551 -2.215376,-0.25322 l 0,0 z" + id="path3778" + inkscape:connector-curvature="0" /></g> +</svg> \ No newline at end of file diff --git a/public/Cesium/Widgets/Images/NavigationHelp/Touch.svg b/public/Cesium/Widgets/Images/NavigationHelp/Touch.svg new file mode 100644 index 000000000..e682b3019 --- /dev/null +++ b/public/Cesium/Widgets/Images/NavigationHelp/Touch.svg @@ -0,0 +1,120 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Capa_1" + x="0px" + y="0px" + width="76.664284" + height="128.25087" + viewBox="0 0 76.664283 128.25086" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="Touch.svg"><metadata + id="metadata3468"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs3466" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="920" + inkscape:window-height="780" + id="namedview3464" + showgrid="false" + inkscape:zoom="1.7688899" + inkscape:cx="-0.07794217" + inkscape:cy="94.239301" + inkscape:window-x="1529" + inkscape:window-y="186" + inkscape:window-maximized="0" + inkscape:current-layer="g3428" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> +<g + id="g3428" + transform="translate(-7.9878665e-4,-5.1661327)"> + + <path + d="M 76.151,80.896 C 77.465,66.89 62.145,65.577 62.145,65.577 57.771,52.885 46.39,59.45 46.39,59.45 40.701,46.758 29.322,55.511 29.322,55.511 27.912,55.092 25.613,11.796 24.414,11.604 23.44,7.068 14.011,-1.728 12.511,14.772 c 0,36.5 -1.135,47.304 -1.135,47.304 C 9.188,67.328 5.31,80.458 5.31,80.458 -3.006,89.649 0.933,96.214 0.933,96.214 c 7.002,12.255 21.385,28.449 21.385,28.449 6.129,5.252 2.627,8.316 2.627,8.316 l 42.455,0.438 2.334,-7.878 c 9.628,-18.382 6.417,-44.643 6.417,-44.643 z" + id="path3432" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccc" + style="fill:#ffffff;fill-opacity:1" /> +</g> +<g + id="g3434" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3436" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3438" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3440" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3442" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3444" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3446" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3448" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3450" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3452" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3454" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3456" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3458" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3460" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +<g + id="g3462" + transform="translate(-7.9878665e-4,-5.1661327)"> +</g> +</svg> \ No newline at end of file diff --git a/public/Cesium/Widgets/Images/NavigationHelp/TouchDrag.svg b/public/Cesium/Widgets/Images/NavigationHelp/TouchDrag.svg new file mode 100644 index 000000000..f0509e855 --- /dev/null +++ b/public/Cesium/Widgets/Images/NavigationHelp/TouchDrag.svg @@ -0,0 +1,129 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Capa_1" + x="0px" + y="0px" + width="76.664284" + height="133.41701" + viewBox="0 0 76.664283 133.417" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="TouchDrag.svg"><metadata + id="metadata3468"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs3466" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="920" + inkscape:window-height="780" + id="namedview3464" + showgrid="false" + inkscape:zoom="1.7688899" + inkscape:cx="-0.077942171" + inkscape:cy="94.239298" + inkscape:window-x="161" + inkscape:window-y="225" + inkscape:window-maximized="0" + inkscape:current-layer="g3428" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> +<g + id="g3428" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="M 18.653,0 C 12.359,0 7.258,5.102 7.258,11.395 c 0,6.293 5.102,11.395 11.396,11.395 6.293,0 11.395,-5.102 11.395,-11.395 C 30.048,5.102 24.946,0 18.653,0 z m 0,20.43 c -4.989,0 -9.036,-4.046 -9.036,-9.036 0,-4.989 4.047,-9.035 9.036,-9.035 4.989,0 9.035,4.046 9.035,9.035 0,4.99 -4.045,9.036 -9.035,9.036 z" + id="path3430" + inkscape:connector-curvature="0" /> + <path + d="M 76.151,80.896 C 77.465,66.89 62.145,65.577 62.145,65.577 57.771,52.885 46.39,59.45 46.39,59.45 40.701,46.758 29.322,55.511 29.322,55.511 27.912,55.092 25.613,11.796 24.414,11.604 23.44,7.068 14.011,-1.728 12.511,14.772 c 0,36.5 -1.135,47.304 -1.135,47.304 C 9.188,67.328 5.31,80.458 5.31,80.458 -3.006,89.649 0.933,96.214 0.933,96.214 c 7.002,12.255 21.385,28.449 21.385,28.449 6.129,5.252 2.627,8.316 2.627,8.316 l 42.455,0.438 2.334,-7.878 c 9.628,-18.382 6.417,-44.643 6.417,-44.643 z" + id="path3432" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccc" + style="fill:#ffffff;fill-opacity:1" /> +<path + d="m 65.247258,98.823749 c -0.681067,0.71969 -7.149935,7.376421 -7.149935,7.376421 0,0 -0.86404,0.92222 -0.86404,-0.29705 0.0013,-1.22468 0.0013,-3.17039 0.0013,-3.17039 0,0 -0.498094,0.003 -1.261753,0.002 -2.35324,0.002 -6.936466,0.002 -8.692502,0.002 0,0 -0.07751,-0.007 -0.162642,-0.0472 0,0.0378 0,0.0972 0,0.13232 0.01652,0.0891 0.0013,0.16068 0,0.16608 0,0.0149 0,0.0419 0,0.0554 0,0 0.01779,0.077 0,0.17013 0,2.02673 0,6.49066 0,8.99672 0.0013,0.90332 0,1.49203 0,1.49203 0,0 2.283354,0.002 3.229986,0 0.942821,0 0.07751,0.87225 0.07751,0.87225 l -7.121981,7.36157 c 0,0 -0.470139,0.5833 -0.963151,0.0607 -0.677255,-0.72374 -6.941548,-7.59515 -6.941548,-7.59515 0,0 -0.867853,-0.91952 0.280812,-0.91952 1.151207,0.002 2.983481,0.002 2.983481,0.002 0,0 -0.0026,-0.52929 -0.0013,-1.34079 -0.0013,-2.50067 -0.0013,-7.37102 -0.0013,-9.23572 l 0,-0.004 c 0,-0.0567 0,-0.14582 0,-0.21333 -0.08259,0.0392 -0.15883,0.0459 -0.15883,0.0459 -1.756036,0 -6.339262,0 -8.696314,-0.002 -0.759847,0.002 -1.260482,0 -1.260482,0 0,0 0.0026,1.94706 0.0026,3.17039 -0.0013,1.21793 -0.864041,0.29975 -0.864041,0.29975 0,0 -6.467597,-6.655381 -7.147393,-7.377761 -0.493012,-0.52525 0.05464,-1.02484 0.05464,-1.02484 l 6.927571,-7.566801 c 0,0 0.82338,-0.92357 0.82211,0.08236 0.0026,1.004586 0.0026,3.432334 0.0026,3.432334 0,0 0.552732,-0.0014 1.402796,-0.0041 2.439643,0.0041 6.872933,0.0027 8.678524,0.0014 0,0 0.116899,-0.03106 0.23634,0.027 0,-4.084505 0,-8.204115 0.0013,-9.436893 -0.0013,-0.807449 0,-1.339448 0,-1.339448 0,0 -1.832274,0.0027 -2.983481,0.0027 -1.146124,-0.0014 -0.280813,-0.918169 -0.280813,-0.918169 0,0 6.261752,-6.872771 6.942819,-7.596505 0.494283,-0.522547 0.964422,0.05806 0.964422,0.05806 l 7.12071,7.361561 c 0,0 0.869123,0.874963 -0.07624,0.872261 -0.945362,0.0027 -3.229987,0.0027 -3.229987,0.0027 0,0 0.0013,0.587358 0.0038,1.492025 -0.0013,1.284087 -0.0026,5.419901 -0.0026,9.503056 0.120712,-0.06211 0.240153,-0.02835 0.240153,-0.02835 1.804319,0 6.237609,0 8.675982,0 0.851334,-0.0014 1.404066,0 1.404066,0 0,0 0.0013,-2.426399 0,-3.430985 0,-1.003235 0.820838,-0.08236 0.820838,-0.08236 l 6.927572,7.566803 c 0,0.001 0.546378,0.50094 0.05845,1.02484 z" + id="path3238" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccccccccccsscccccccccccccccccccccccccccccccc" + style="fill:#66ccff;fill-opacity:1" /></g> +<g + id="g3434" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3436" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3438" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3440" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3442" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3444" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3446" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3448" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3450" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3452" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3454" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3456" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3458" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3460" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +<g + id="g3462" + transform="translate(-7.9878665e-4,-2.9265169e-6)"> +</g> +</svg> \ No newline at end of file diff --git a/public/Cesium/Widgets/Images/NavigationHelp/TouchRotate.svg b/public/Cesium/Widgets/Images/NavigationHelp/TouchRotate.svg new file mode 100644 index 000000000..fe968ff45 --- /dev/null +++ b/public/Cesium/Widgets/Images/NavigationHelp/TouchRotate.svg @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Capa_1" + x="0px" + y="0px" + width="99.001816" + height="101.57817" + viewBox="0 0 99.001814 101.57817" + enable-background="new 0 0 100.775 118.638" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="TouchRotate.svg"><metadata + id="metadata3382"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs3380" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1105" + inkscape:window-height="739" + id="namedview3378" + showgrid="false" + inkscape:zoom="1.9873603" + inkscape:cx="11.856691" + inkscape:cy="15.112094" + inkscape:window-x="67" + inkscape:window-y="152" + inkscape:window-maximized="0" + inkscape:current-layer="Capa_1" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> + +<path + inkscape:connector-curvature="0" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="m 48.832974,0 c -5.85006,0 -10.591269,4.862311 -10.591269,10.85967 0,5.997358 4.742138,10.859669 10.592198,10.859669 5.849132,0 10.59127,-4.862311 10.59127,-10.859669 C 59.42425,4.862311 54.682106,0 48.832974,0 z m 0,19.47021 c -4.637107,0 -8.398657,-3.855921 -8.398657,-8.611493 0,-4.754621 3.76155,-8.610543 8.398657,-8.610543 4.637107,0 8.397729,3.855922 8.397729,8.610543 0,4.755572 -3.759691,8.611493 -8.397729,8.611493 z" + id="path3430" /><path + inkscape:connector-curvature="0" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="m 27.154761,39.321738 c -5.457398,0 -9.88037,4.703155 -9.88037,10.504205 0,5.801049 4.423839,10.504204 9.881237,10.504204 5.456532,0 9.880371,-4.703155 9.880371,-10.504204 -8.67e-4,-5.80105 -4.424707,-10.504205 -9.881238,-10.504205 z m 0,18.8329 c -4.325859,0 -7.834929,-3.729707 -7.834929,-8.329617 0,-4.598989 3.50907,-8.328696 7.834929,-8.328696 4.32586,0 7.834063,3.729707 7.834063,8.328696 0,4.59991 -3.507336,8.329617 -7.834063,8.329617 z" + id="path3430-5" /><path + d="M 93.394891,94.930552 91.5074,101.57817 52.728925,101.21032 c 8.08e-4,-8.5e-4 2.829619,-2.585988 -2.124439,-7.016318 0,0 -10.822746,-5.22596 -18.506953,-18.0968 0,0 -6.310236,-6.742109 -6.091889,-9.206596 -0.583067,-4.408398 -1.209805,-6.954724 -1.715239,-8.534999 -1.063849,-4.039774 -1.553525,-2.844172 -1.553525,-7.228104 2.452812,-14.333817 10.869455,1.810623 12.764445,5.488368 0,0 6.305384,7.578229 9.063029,9.283373 8.851152,-2.291524 3.039071,-22.109494 3.660956,-23.668675 0,0 -1.25024,-10.043558 -2.822341,-23.064577 -3.9949,-15.561935 8.286796,-19.626706 11.636292,-3.093053 1.545414,7.344522 3.686834,19.52689 4.483397,19.774098 0,0 8.395048,-7.385018 12.995707,3.323385 0,0 9.202125,-5.538975 12.741777,5.170273 0,0 12.387573,1.10695 11.326563,12.923992 0,0 2.595085,22.156743 -5.191814,37.665865 z" + id="path3376" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccccccc" + style="fill:#ffffff" /><path + d="m 36.857901,10.534807 -5.731265,12.511815 c 0,0 -0.666487,1.516584 -1.19043,0.316343 -0.52908,-1.19559 -1.800413,-4.092683 -1.800413,-4.092683 0,0 -0.774356,0.279126 -1.962218,0.711771 -3.412049,1.225827 -9.61846,3.462323 -12.145716,4.370646 0,0 -0.609983,0.412873 -1.019633,-0.532666 -0.419926,-0.944375 -3.7806092,-8.602891 -4.0798222,-9.279772 -0.294076,-0.674552 0.288938,-0.867615 0.288938,-0.867615 2.4553422,-0.886224 8.8659382,-3.19599 12.1688342,-4.381112 1.05816,-0.382636 1.763171,-0.631523 1.763171,-0.631523 0,0 -1.02734,-2.324887 -1.664289,-3.782156 -0.636951,-1.454944 1.049169,-0.79202 1.049169,-0.79202 0,0 12.534822,4.676522 13.866509,5.195231 0.963131,0.382636 0.457165,1.253741 0.457165,1.253741 z" + id="path9" + style="fill:#d800d8;fill-opacity:1" + inkscape:connector-curvature="0" /><g + id="g2997" + transform="matrix(0,-1,1,0,-0.01316643,45.882166)" + inkscape:transform-center-x="-4.9812271" + inkscape:transform-center-y="-4.2696251"><path + id="path2999" + d="M 6.6614176,0.14173229 19.48819,5.5984253 c 0,0 1.559055,0.6377953 0.354331,1.1338583 -1.240158,0.5314961 -4.181103,1.7716536 -4.181103,1.7716536 0,0 0.283465,0.7440945 0.744095,1.9133858 1.27559,3.259843 3.57874,9.248032 4.535433,11.692914 0,0 0.425197,0.566929 -0.566929,0.992126 -0.956693,0.389764 -8.751969,3.685039 -9.460631,4.003937 -0.673228,0.283464 -0.885827,-0.283465 -0.885827,-0.283465 C 9.1062996,24.448819 6.6968507,18.283465 5.4921262,15.094489 5.0669294,14.066929 4.8188979,13.393701 4.8188979,13.393701 c 0,0 -2.3740159,0.992126 -3.86220494,1.629921 -1.48818905,0.637796 -0.81496067,-0.992126 -0.81496067,-0.992126 0,0 4.71259861,-12.1535432 5.24409471,-13.42913378 0.3897638,-0.95669294 1.2755906,-0.46062993 1.2755906,-0.46062993 z" + style="fill:#d800d8;fill-opacity:1;fill-rule:nonzero;stroke:none" + inkscape:connector-curvature="0" /></g></svg> \ No newline at end of file diff --git a/public/Cesium/Widgets/Images/NavigationHelp/TouchTilt.svg b/public/Cesium/Widgets/Images/NavigationHelp/TouchTilt.svg new file mode 100644 index 000000000..e1206c5d6 --- /dev/null +++ b/public/Cesium/Widgets/Images/NavigationHelp/TouchTilt.svg @@ -0,0 +1,135 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Capa_1" + x="0px" + y="0px" + width="76.663582" + height="140.44" + viewBox="0 0 76.663581 140.44" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="TouchTilt.svg"><metadata + id="metadata3364"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs3362" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="766" + inkscape:window-height="480" + id="namedview3360" + showgrid="false" + inkscape:zoom="1.6804329" + inkscape:cx="6.1930652" + inkscape:cy="74.717535" + inkscape:window-x="343" + inkscape:window-y="203" + inkscape:window-maximized="0" + inkscape:current-layer="Capa_1" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> +<g + id="g3322" + style="fill:#ffffff" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="m 12.622,5.815 c -6.294,0 -11.396,5.102 -11.396,11.395 0,6.293 5.102,11.395 11.396,11.395 6.293,0 11.395,-5.102 11.395,-11.395 0,-6.293 -5.102,-11.395 -11.395,-11.395 z m 0,20.431 c -4.99,0 -9.036,-4.046 -9.036,-9.036 0,-4.989 4.046,-9.035 9.036,-9.035 4.988,0 9.035,4.046 9.035,9.035 0,4.99 -4.047,9.036 -9.035,9.036 z" + id="path3324" + inkscape:connector-curvature="0" /> + <path + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="m 43.793,0 c -6.294,0 -11.396,5.102 -11.396,11.395 0,6.293 5.102,11.395 11.396,11.395 6.293,0 11.395,-5.102 11.395,-11.395 C 55.188,5.102 50.086,0 43.793,0 z m 0,20.43 c -4.99,0 -9.036,-4.046 -9.036,-9.036 0,-4.989 4.046,-9.035 9.036,-9.035 4.988,0 9.035,4.046 9.035,9.035 0,4.99 -4.047,9.036 -9.035,9.036 z" + id="path3326" + inkscape:connector-curvature="0" /> + <path + d="M 76.151,87.918 C 77.464,73.913 62.146,72.6 62.146,72.6 57.769,59.907 47.556,66.472 47.556,66.472 c 0,0 2.262,-49.025 1.395,-54.713 -0.51,-3.331 -6.383,-10.562 -9.998,-1.684 -2.137,6.166 -5.59,60.75 -9.465,56.874 C 24.984,62.447 20.611,18.817 19.414,18.626 18.438,14.09 9.011,5.294 7.511,21.794 c 3,39.5 3.865,47.304 3.865,47.304 C 9.187,74.35 5.31,87.481 5.31,87.481 c -8.316,9.191 -4.377,15.756 -4.377,15.756 7.002,12.255 21.385,28.449 21.385,28.449 6.127,5.252 2.625,8.316 2.625,8.316 l 42.455,0.438 2.334,-7.879 c 9.628,-18.382 6.419,-44.643 6.419,-44.643 z" + id="path3328" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccccc" + style="fill:#ffffff" /> +</g> +<g + id="g3330" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3332" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3334" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3336" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3338" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3340" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3342" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3344" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3346" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3348" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3350" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3352" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3354" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3356" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<g + id="g3358" + transform="translate(-7.9878665e-4,-3.8214145e-7)"> +</g> +<path + inkscape:connector-curvature="0" + d="m 52.342987,124.78465 -8.980622,9.44613 c 0,0 -0.592129,0.74692 -1.214412,0.0786 -0.853927,-0.92772 -8.753091,-9.74549 -8.753091,-9.74549 0,0 -1.096535,-1.17966 0.352262,-1.17818 1.454279,10e-4 3.762485,10e-4 3.762485,10e-4 0,0 -0.0027,-0.67875 -0.0014,-1.72058 -0.0014,-3.20848 -0.0014,-9.4565 -0.0027,-11.8499 0,0 -0.01233,-0.56315 0.655179,-0.56019 0.672999,0 8.298029,0 9.238308,-0.003 0.937537,0.003 0.774428,0.66985 0.774428,0.66985 0,2.45861 0,8.50359 -0.0027,11.82767 0.0041,1.16039 0.0027,1.91472 0.0027,1.91472 0,0 2.879775,0.003 4.070886,0 1.192483,-10e-4 0.09869,1.11889 0.09869,1.11889 z m -0.09869,-37.828986 c -1.191111,0.003 -4.073627,0.003 -4.073627,0.003 0,0 0.0027,0.752845 0.0041,1.914716 -0.0041,3.327041 -0.0041,9.370556 -0.0014,11.83064 0,0 0.16174,0.66393 -0.774427,0.66096 -0.943021,0.006 -8.563939,0.003 -9.235567,0.004 -0.670257,-0.003 -0.65655,-0.56167 -0.65655,-0.56167 -0.0014,-2.393393 -0.0014,-8.642902 0.0014,-11.855831 -0.0014,-1.034421 0,-1.717613 0,-1.717613 0,0 -2.312318,0.003 -3.762486,0.0044 -1.444685,-0.003 -0.355003,-1.178173 -0.355003,-1.178173 0,0 7.896422,-8.81777 8.755832,-9.745488 0.622284,-0.671338 1.215783,0.07558 1.215783,0.07558 l 8.979252,9.444648 c 0,0 1.096534,1.121857 -0.09732,1.120375 z" + id="path3432" + sodipodi:nodetypes="ccccsccccccccccccccccccccccccc" + style="fill:#ffd800;fill-opacity:1" /></svg> \ No newline at end of file diff --git a/public/Cesium/Widgets/Images/NavigationHelp/TouchZoom.svg b/public/Cesium/Widgets/Images/NavigationHelp/TouchZoom.svg new file mode 100644 index 000000000..74e55d7cb --- /dev/null +++ b/public/Cesium/Widgets/Images/NavigationHelp/TouchZoom.svg @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Capa_1" + x="0px" + y="0px" + width="95.087433" + height="118.43173" + viewBox="0 0 95.087431 118.43173" + enable-background="new 0 0 100.775 118.638" + xml:space="preserve" + inkscape:version="0.48.4 r9939" + sodipodi:docname="TouchZoom.svg"><metadata + id="metadata3382"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs + id="defs3380" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1105" + inkscape:window-height="739" + id="namedview3378" + showgrid="false" + inkscape:zoom="2.8132167" + inkscape:cx="10.565593" + inkscape:cy="72.192791" + inkscape:window-x="67" + inkscape:window-y="152" + inkscape:window-maximized="0" + inkscape:current-layer="Capa_1" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> + +<path + d="m 0.0436199,84.941029 c 0,0 -0.2799964,-1.323641 0.578786,-0.720397 0.8621957,0.601498 2.9536375,2.059778 2.9536375,2.059778 0,0 0.3431801,-0.517567 0.8707286,-1.316651 1.521209,-2.28009 4.281925,-6.427623 5.405325,-8.116707 0,0 0.187721,-0.53855 0.863902,-0.06295 0.682926,0.472104 6.206065,4.329377 6.692655,4.668591 0.483157,0.340966 0.220227,0.718649 0.220227,0.718649 -1.094368,1.641877 -3.948985,5.929292 -5.418977,8.132449 -0.469526,0.711655 -0.783654,1.178514 -0.783654,1.178514 0,0 1.678274,1.168023 2.728271,1.900661 1.043172,0.732637 -0.28341,0.987925 -0.28341,0.987925 0,0 -9.7470195,2.05628 -10.7936043,2.25911 -0.756328,0.145111 -0.8468168,-0.666198 -0.8468168,-0.666198 z" + id="path3376-4" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccccccc" + style="fill:#65ff00;fill-opacity:1" /><path + inkscape:connector-curvature="0" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="m 44.918594,16.853557 c -5.85006,0 -10.591269,4.862311 -10.591269,10.85967 0,5.997358 4.742138,10.859669 10.592198,10.859669 5.849132,0 10.59127,-4.862311 10.59127,-10.859669 -9.23e-4,-5.997359 -4.743067,-10.85967 -10.592199,-10.85967 z m 0,19.47021 c -4.637107,0 -8.398657,-3.855921 -8.398657,-8.611493 0,-4.754621 3.76155,-8.610543 8.398657,-8.610543 4.637107,0 8.397729,3.855922 8.397729,8.610543 0,4.755572 -3.759691,8.611493 -8.397729,8.611493 z" + id="path3430" /><path + inkscape:connector-curvature="0" + style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd" + d="m 23.240381,56.175295 c -5.457398,0 -9.88037,4.703155 -9.88037,10.504205 0,5.801049 4.423839,10.504204 9.881237,10.504204 5.456532,0 9.880371,-4.703155 9.880371,-10.504204 -8.67e-4,-5.80105 -4.424707,-10.504205 -9.881238,-10.504205 z m 0,18.8329 c -4.325859,0 -7.834929,-3.729707 -7.834929,-8.329617 0,-4.598989 3.50907,-8.328696 7.834929,-8.328696 4.32586,0 7.834063,3.729707 7.834063,8.328696 0,4.59991 -3.507336,8.329617 -7.834063,8.329617 z" + id="path3430-5" /><path + d="m 89.480511,111.78411 -1.887491,6.64762 -38.778475,-0.36785 c 8.08e-4,-8.5e-4 2.829619,-2.58599 -2.124439,-7.01632 0,0 -10.822746,-5.22596 -18.506953,-18.096801 0,0 -6.310236,-6.742109 -6.091889,-9.206596 C 21.508197,79.335765 20.881459,76.789439 20.376025,75.209164 19.312176,71.16939 18.8225,72.364992 18.8225,67.98106 c 2.452812,-14.333817 10.869455,1.810623 12.764445,5.488368 0,0 6.305384,7.578229 9.063029,9.283373 8.851152,-2.291524 3.039071,-22.109494 3.660956,-23.668675 0,0 -1.25024,-10.043558 -2.822341,-23.064577 -3.9949,-15.561935 8.286796,-19.626706 11.636292,-3.093053 1.545414,7.344522 3.686834,19.52689 4.483397,19.774098 0,0 8.395048,-7.385018 12.995707,3.323385 0,0 9.202125,-5.538975 12.741777,5.170273 0,0 12.387573,1.10695 11.326563,12.923992 0,0 2.59509,22.156743 -5.191814,37.665866 z" + id="path3376" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccccccccccccccccc" + style="fill:#ffffff" /><path + d="m 49.854025,14.903508 c 0.696314,0.466948 6.359531,4.268019 6.858144,4.604015 0.491619,0.334273 0.748797,-0.05343 0.748797,-0.05343 1.121449,-1.617954 4.044902,-5.844621 5.545997,-8.013953 0.488115,-0.703007 0.803031,-1.164787 0.803031,-1.164787 0,0 1.714536,1.152726 2.792243,1.876411 1.07596,0.721961 0.813533,-0.620302 0.813533,-0.620302 0,0 -1.732034,-9.8989818 -1.933227,-10.95349441 -0.150463,-0.7615853 -0.939496,-0.5513731 -0.939496,-0.5513731 L 53.458049,1.9374693 c 0,0 -1.336636,0.2136595 -0.454876,0.8046693 0.88876,0.5927325 3.02493,2.0297666 3.02493,2.0297666 0,0 -0.355152,0.5083037 -0.895757,1.2940169 -1.558825,2.2468717 -4.387811,6.3339699 -5.538999,7.9984459 -0.0018,0.0017 -0.433883,0.370456 0.260678,0.83914 z" + id="path3376-7-4" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccccccccccccc" + style="fill:#65ff00;fill-opacity:1" /></svg> \ No newline at end of file diff --git a/public/Cesium/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png b/public/Cesium/Widgets/Images/TerrainProviders/CesiumWorldTerrain.png new file mode 100644 index 0000000000000000000000000000000000000000..16343ec24135b6250935b07399c51a4eeb214620 GIT binary patch literal 10080 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 CK-V|` literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/TerrainProviders/Ellipsoid.png b/public/Cesium/Widgets/Images/TerrainProviders/Ellipsoid.png new file mode 100644 index 0000000000000000000000000000000000000000..a36259bbecd3db15252723fbeb9d202907306d6a GIT binary patch literal 6173 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/TimelineIcons.png b/public/Cesium/Widgets/Images/TimelineIcons.png new file mode 100644 index 0000000000000000000000000000000000000000..e3a04556a8555469578401d47e8dd07ad3bbf228 GIT binary patch literal 781 zcmV+o1M>WdP)<h;3K|Lk000e1NJLTq001BW000mO1^@s6cL04^00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iph? z5)&web1Xvu00NCkL_t(Y$HmpnOB7)o2k`Ga>#7^5Seeq2xT&Q@QV^>LBhXV(hd?9` z(V>G85nZ~h2WRTgA5a8h*QijcLxDjU6cK?|5G~HZ%*>6}UH4^Xb!X;z>0nMXyQ{bx z(Ol-4ndkGH?>zI&Gr)h|q}&r@&!*(rC>>r}<q!ZU7hnLG!BJZYG}U>P!Tv6Jqk_eH zR{&-7tzbScqzVrh0jS_$TtG+?I0XztARf;Gx`_wFJ$d0v@njvJzwuJcTO4XyN5|d< z%tX_ei)!d<_Ty_z$3kiaJ%{`dJ_@6TqP}lTIB)Lsk0!#lpLnj?{?%(W&)WeO4d!|p zb?UpTP59dN@bn@KQ=n#B%GE#D4+QtQ+Uvf*bHB^m0pbZ0TF#KNO(u_#F<i%`dON`J zW}jkdCK&PBoj9X*+v0!9@#PqTjn#^?V5#0Ukq%#aDjM6WP+lgWPA?+RUJVF=xfu;D z9Xr7p#h1@XFg=d&!z+1{(CLrVRpH%y1P}t9O@2&8V&IG-xTgX4#^2bUI13yL_>^?Q z0HX}M{1y17Mxnlspsb8TPpp6%SyYy1(A!?G6dG2ipZqju`|%fH+dr9{c6nETTi1H! z*g_J<iV42T@Nx8lq~5<MeHb|>(NzmZCX39Hh6e9!!S`B<C%HvhJrN}lH^DpvO(*UM z00^ACD>xxYEa~Vuuv-}#3T?O$73=c?JRZ3!)1(235VW^$2LQCS)PPe9B4y(C^#OUa zrL|a33KcnXbceG1GYe+%wa>}25dV=vUw1&+%KBc6FBl*+*emn23G?^jVrET1GZDIc zO5RF<Vm#TX$l2~%C6&wq0JMaT)4@8Wn7`cLdH{gu;7#G&{|o;MAwTPJv`aW700000 LNkvXXu0mjf4a8Z% literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/Images/info-loading.gif b/public/Cesium/Widgets/Images/info-loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..8df10dd5103204269c65a5127154ae9d3ed8e95f GIT binary patch literal 723 zcmZ?wbhEHb6ky<H_`(1Jk1kJFkQLQXlNJ=<zH@Fekh^nDbzZt>Pjjq|g~s7+O$(-G zrzf~{)<;{IsvX$eaPRz-Ig>I(h4~ca#W*-vH!LZYlM&(KWOuOE3idPC)0X4o<pdiH zA{75~`?-b$J39ur8tEA@GlGQvNjVp#CYGe8D3oWGWGEzNC069*C#L9S=B4E`DE?&O z<OZtJ0qF)gl7UrML7^`tbKa5#T#rsMt#c4)wm4&2aJl;4?H%*^*q;ctZ+YZ!f=91- z-8C-PwbPuinV^!8D8ZUAZ$+j|`^0?*ZXH_r=F;-s=Wq7D-W{Q@F^9F$TCh`s37bYU zpw-=pI*&V4IF+P$l9wbc(l{x7eoOCbBdG(^nGZDWjsAGTTd?u$#mhT{{bn8t<<=6J z=66T{n^C4fqn2>E3WhNCJ~l~G@x1uTreFAcY2|b4S-i`cPqf%2ZE*i3+J9zZu_cRC z<?3tQyR_y8DPl9p2ofIGHbp#h37ovc<5E&ksO!lsv5&0c-cGyCn07cm@P#sC?}=w8 zSd-^@t-ShG3aj7DA;zc_#<r~3l(a1KW^3Z~jK_<%<<5%bQ+V^YX?vpJ17^MHzAF7Q zOqk+z8O+R1FWC1Why$CG^dV+F0lH_!rgy7~WK@H;@IEkI|9iVk!F29#T}NgWw#xj9 X(`7JWbB<iU1Zx11Y=$)`iGTqBF97aE literal 0 HcmV?d00001 diff --git a/public/Cesium/Widgets/InfoBox/InfoBox.css b/public/Cesium/Widgets/InfoBox/InfoBox.css new file mode 100644 index 000000000..42a7b2201 --- /dev/null +++ b/public/Cesium/Widgets/InfoBox/InfoBox.css @@ -0,0 +1,92 @@ +/* packages/widgets/Source/InfoBox/InfoBox.css */ +.cesium-infoBox { + display: block; + position: absolute; + top: 50px; + right: 0; + width: 40%; + max-width: 480px; + background: rgba(38, 38, 38, 0.95); + color: #edffff; + border: 1px solid #444; + border-right: none; + border-top-left-radius: 7px; + border-bottom-left-radius: 7px; + box-shadow: 0 0 10px 1px #000; + transform: translate(100%, 0); + visibility: hidden; + opacity: 0; + transition: + visibility 0s 0.2s, + opacity 0.2s ease-in, + transform 0.2s ease-in; +} +.cesium-infoBox-visible { + transform: translate(0, 0); + visibility: visible; + opacity: 1; + transition: opacity 0.2s ease-out, transform 0.2s ease-out; +} +.cesium-infoBox-title { + display: block; + height: 20px; + padding: 5px 30px 5px 25px; + background: rgba(84, 84, 84, 1); + border-top-left-radius: 7px; + text-align: center; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + box-sizing: content-box; +} +.cesium-infoBox-bodyless .cesium-infoBox-title { + border-bottom-left-radius: 7px; +} +button.cesium-infoBox-camera { + display: block; + position: absolute; + top: 4px; + left: 4px; + width: 22px; + height: 22px; + background: transparent; + border-color: transparent; + border-radius: 3px; + padding: 0 5px; + margin: 0; +} +button.cesium-infoBox-close { + display: block; + position: absolute; + top: 5px; + right: 5px; + height: 20px; + background: transparent; + border: none; + border-radius: 2px; + font-weight: bold; + font-size: 16px; + padding: 0 5px; + margin: 0; + color: #edffff; +} +button.cesium-infoBox-close:focus { + background: rgba(238, 136, 0, 0.44); + outline: none; +} +button.cesium-infoBox-close:hover { + background: #888; + color: #000; +} +button.cesium-infoBox-close:active { + background: #a00; + color: #000; +} +.cesium-infoBox-bodyless .cesium-infoBox-iframe { + display: none; +} +.cesium-infoBox-iframe { + border: none; + width: 100%; + width: calc(100% - 2px); +} diff --git a/public/Cesium/Widgets/InfoBox/InfoBoxDescription.css b/public/Cesium/Widgets/InfoBox/InfoBoxDescription.css new file mode 100644 index 000000000..04ee3dbc0 --- /dev/null +++ b/public/Cesium/Widgets/InfoBox/InfoBoxDescription.css @@ -0,0 +1,178 @@ +/* packages/widgets/Source/shared.css */ +.cesium-svgPath-svg { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow: hidden; +} +.cesium-button { + display: inline-block; + position: relative; + background: #303336; + border: 1px solid #444; + color: #edffff; + fill: #edffff; + border-radius: 4px; + padding: 5px 12px; + margin: 2px 3px; + cursor: pointer; + overflow: hidden; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.cesium-button:focus { + color: #fff; + fill: #fff; + border-color: #ea4; + outline: none; +} +.cesium-button:hover { + color: #fff; + fill: #fff; + background: #48b; + border-color: #aef; + box-shadow: 0 0 8px #fff; +} +.cesium-button:active { + color: #000; + fill: #000; + background: #adf; + border-color: #fff; + box-shadow: 0 0 8px #fff; +} +.cesium-button:disabled, +.cesium-button-disabled, +.cesium-button-disabled:focus, +.cesium-button-disabled:hover, +.cesium-button-disabled:active { + background: #303336; + border-color: #444; + color: #646464; + fill: #646464; + box-shadow: none; + cursor: default; +} +.cesium-button option { + background-color: #000; + color: #eee; +} +.cesium-button option:disabled { + color: #777; +} +.cesium-button input, +.cesium-button label { + cursor: pointer; +} +.cesium-button input { + vertical-align: sub; +} +.cesium-toolbar-button { + box-sizing: border-box; + width: 32px; + height: 32px; + border-radius: 14%; + padding: 0; + vertical-align: middle; + z-index: 0; +} +.cesium-performanceDisplay-defaultContainer { + position: absolute; + top: 50px; + right: 10px; + text-align: right; +} +.cesium-performanceDisplay { + background-color: rgba(40, 40, 40, 0.7); + padding: 7px; + border-radius: 5px; + border: 1px solid #444; + font: bold 12px sans-serif; +} +.cesium-performanceDisplay-fps { + color: #e52; +} +.cesium-performanceDisplay-throttled { + color: #a42; +} +.cesium-performanceDisplay-ms { + color: #de3; +} + +/* packages/widgets/Source/InfoBox/InfoBoxDescription.css */ +body { + margin: 0; + padding: 0; +} +.cesium-infoBox-description { + font-family: sans-serif; + font-size: 13px; + padding: 4px 10px; + margin-right: 4px; + color: #edffff; +} +.cesium-infoBox-description a:link, +.cesium-infoBox-description a:visited, +.cesium-infoBox-description a:hover, +.cesium-infoBox-description a:active { + color: #edffff; +} +.cesium-infoBox-description table { + color: #edffff; +} +.cesium-infoBox-defaultTable { + width: 100%; + color: #edffff; +} +.cesium-infoBox-defaultTable tr:nth-child(odd) { + background-color: rgba(84, 84, 84, 0.8); +} +.cesium-infoBox-defaultTable tr:nth-child(even) { + background-color: rgba(84, 84, 84, 0.25); +} +.cesium-infoBox-defaultTable th { + font-weight: normal; + padding: 3px; + vertical-align: middle; + text-align: center; +} +.cesium-infoBox-defaultTable td { + padding: 3px; + vertical-align: middle; + text-align: left; +} +.cesium-infoBox-description-lighter { + color: #000000; +} +.cesium-infoBox-description-lighter a:link, +.cesium-infoBox-description-lighter a:visited, +.cesium-infoBox-description-lighter a:hover, +.cesium-infoBox-description-lighter a:active { + color: #000000; +} +.cesium-infoBox-description-lighter table { + color: #000000; +} +.cesium-infoBox-defaultTable-lighter { + width: 100%; + color: #000000; +} +.cesium-infoBox-defaultTable-lighter tr:nth-child(odd) { + background-color: rgba(179, 179, 179, 0.8); +} +.cesium-infoBox-defaultTable-lighter tr:nth-child(even) { + background-color: rgba(179, 179, 179, 0.25); +} +.cesium-infoBox-loadingContainer { + margin: 5px; + text-align: center; +} +.cesium-infoBox-loading { + display: inline-block; + background-image: url(data:text/plain;base64,R0lGODlhEAALAPQAAAAAAOLTlyAdFSgmGxEQC9zOk+LTl7mse25nSYyDXTw4KMO2gqCVa2dgRIl/Wzg1JsCzgN7PlJySaBUTDiEfFggIBbCkdR4cFAoJB0A7KlNONy4rHg4NCQAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCwAAACwAAAAAEAALAAAFLSAgjmRpnqSgCuLKAq5AEIM4zDVw03ve27ifDgfkEYe04kDIDC5zrtYKRa2WQgAh+QQJCwAAACwAAAAAEAALAAAFJGBhGAVgnqhpHIeRvsDawqns0qeN5+y967tYLyicBYE7EYkYAgAh+QQJCwAAACwAAAAAEAALAAAFNiAgjothLOOIJAkiGgxjpGKiKMkbz7SN6zIawJcDwIK9W/HISxGBzdHTuBNOmcJVCyoUlk7CEAAh+QQJCwAAACwAAAAAEAALAAAFNSAgjqQIRRFUAo3jNGIkSdHqPI8Tz3V55zuaDacDyIQ+YrBH+hWPzJFzOQQaeavWi7oqnVIhACH5BAkLAAAALAAAAAAQAAsAAAUyICCOZGme1rJY5kRRk7hI0mJSVUXJtF3iOl7tltsBZsNfUegjAY3I5sgFY55KqdX1GgIAIfkECQsAAAAsAAAAABAACwAABTcgII5kaZ4kcV2EqLJipmnZhWGXaOOitm2aXQ4g7P2Ct2ER4AMul00kj5g0Al8tADY2y6C+4FIIACH5BAkLAAAALAAAAAAQAAsAAAUvICCOZGme5ERRk6iy7qpyHCVStA3gNa/7txxwlwv2isSacYUc+l4tADQGQ1mvpBAAIfkECQsAAAAsAAAAABAACwAABS8gII5kaZ7kRFGTqLLuqnIcJVK0DeA1r/u3HHCXC/aKxJpxhRz6Xi0ANAZDWa+kEAA7AAAAAAAAAAAA); + width: 16px; + height: 11px; +} diff --git a/public/Cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css b/public/Cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css new file mode 100644 index 000000000..60f7a5bf1 --- /dev/null +++ b/public/Cesium/Widgets/NavigationHelpButton/NavigationHelpButton.css @@ -0,0 +1,93 @@ +/* packages/widgets/Source/NavigationHelpButton/NavigationHelpButton.css */ +.cesium-navigationHelpButton-wrapper { + position: relative; + display: inline-block; +} +.cesium-navigation-help { + visibility: hidden; + position: absolute; + top: 38px; + right: 2px; + width: 250px; + border-radius: 10px; + transform: scale(0.01); + transform-origin: 234px -10px; + transition: visibility 0s 0.25s, transform 0.25s ease-in; +} +.cesium-navigation-help-visible { + visibility: visible; + transform: scale(1); + transition: transform 0.25s ease-out; +} +.cesium-navigation-help-instructions { + border: 1px solid #444; + background-color: rgba(38, 38, 38, 0.75); + padding-bottom: 5px; + border-radius: 0 0 10px 10px; +} +.cesium-click-navigation-help { + display: none; +} +.cesium-touch-navigation-help { + display: none; + padding-top: 5px; +} +.cesium-click-navigation-help-visible { + display: block; +} +.cesium-touch-navigation-help-visible { + display: block; +} +.cesium-navigation-help-pan { + color: #66ccff; + font-weight: bold; +} +.cesium-navigation-help-zoom { + color: #65fd00; + font-weight: bold; +} +.cesium-navigation-help-rotate { + color: #ffd800; + font-weight: bold; +} +.cesium-navigation-help-tilt { + color: #d800d8; + font-weight: bold; +} +.cesium-navigation-help-details { + color: #ffffff; +} +.cesium-navigation-button { + color: #fff; + background-color: transparent; + border-bottom: none; + border-top: 1px solid #444; + border-right: 1px solid #444; + margin: 0; + width: 50%; + cursor: pointer; +} +.cesium-navigation-button-icon { + vertical-align: middle; + padding: 5px 1px; +} +.cesium-navigation-button:focus { + outline: none; +} +.cesium-navigation-button-left { + border-radius: 10px 0 0 0; + border-left: 1px solid #444; +} +.cesium-navigation-button-right { + border-radius: 0 10px 0 0; + border-left: none; +} +.cesium-navigation-button-selected { + background-color: rgba(38, 38, 38, 0.75); +} +.cesium-navigation-button-unselected { + background-color: rgba(0, 0, 0, 0.75); +} +.cesium-navigation-button-unselected:hover { + background-color: rgba(76, 76, 76, 0.75); +} diff --git a/public/Cesium/Widgets/NavigationHelpButton/lighter.css b/public/Cesium/Widgets/NavigationHelpButton/lighter.css new file mode 100644 index 000000000..7cf654b32 --- /dev/null +++ b/public/Cesium/Widgets/NavigationHelpButton/lighter.css @@ -0,0 +1,38 @@ +/* packages/widgets/Source/NavigationHelpButton/lighter.css */ +.cesium-lighter .cesium-navigation-help-instructions { + border: 1px solid #759dc0; + background-color: rgba(255, 255, 255, 0.9); +} +.cesium-lighter .cesium-navigation-help-pan { + color: #66ccee; + font-weight: bold; +} +.cesium-lighter .cesium-navigation-help-zoom { + color: #65ec00; + font-weight: bold; +} +.cesium-lighter .cesium-navigation-help-rotate { + color: #eec722; + font-weight: bold; +} +.cesium-lighter .cesium-navigation-help-tilt { + color: #d800d8; + font-weight: bold; +} +.cesium-lighter .cesium-navigation-help-details { + color: #222222; +} +.cesium-lighter .cesium-navigation-button { + color: #222222; + border-top: 1px solid #759dc0; + border-right: 1px solid #759dc0; +} +.cesium-lighter .cesium-navigation-button-selected { + background-color: rgba(196, 225, 255, 0.9); +} +.cesium-lighter .cesium-navigation-button-unselected { + background-color: rgba(226, 240, 255, 0.9); +} +.cesium-lighter .cesium-navigation-button-unselected:hover { + background-color: rgba(166, 210, 255, 0.9); +} diff --git a/public/Cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css b/public/Cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css new file mode 100644 index 000000000..f8f770ad9 --- /dev/null +++ b/public/Cesium/Widgets/PerformanceWatchdog/PerformanceWatchdog.css @@ -0,0 +1,15 @@ +/* packages/widgets/Source/PerformanceWatchdog/PerformanceWatchdog.css */ +.cesium-performance-watchdog-message-area { + position: relative; + background-color: yellow; + color: black; + padding: 10px; +} +.cesium-performance-watchdog-message { + margin-right: 30px; +} +.cesium-performance-watchdog-message-dismiss { + position: absolute; + right: 0; + margin: 0 10px 0 0; +} diff --git a/public/Cesium/Widgets/ProjectionPicker/ProjectionPicker.css b/public/Cesium/Widgets/ProjectionPicker/ProjectionPicker.css new file mode 100644 index 000000000..57b6f6fd4 --- /dev/null +++ b/public/Cesium/Widgets/ProjectionPicker/ProjectionPicker.css @@ -0,0 +1,38 @@ +/* packages/widgets/Source/ProjectionPicker/ProjectionPicker.css */ +span.cesium-projectionPicker-wrapper { + display: inline-block; + position: relative; + margin: 0 3px; +} +.cesium-projectionPicker-visible { + visibility: visible; + opacity: 1; + transition: opacity 0.25s linear; +} +.cesium-projectionPicker-hidden { + visibility: hidden; + opacity: 0; + transition: visibility 0s 0.25s, opacity 0.25s linear; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-none { + display: none; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-dropDown-icon { + box-sizing: border-box; + padding: 0; + margin: 3px 0; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective, +.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic { + margin: 0 0 3px 0; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective .cesium-projectionPicker-iconOrthographic { + left: 100%; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic .cesium-projectionPicker-iconPerspective { + left: -100%; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-selected { + border-color: #2e2; + box-shadow: 0 0 8px #fff, 0 0 8px #fff; +} diff --git a/public/Cesium/Widgets/SceneModePicker/SceneModePicker.css b/public/Cesium/Widgets/SceneModePicker/SceneModePicker.css new file mode 100644 index 000000000..51e4c67f7 --- /dev/null +++ b/public/Cesium/Widgets/SceneModePicker/SceneModePicker.css @@ -0,0 +1,56 @@ +/* packages/widgets/Source/SceneModePicker/SceneModePicker.css */ +span.cesium-sceneModePicker-wrapper { + display: inline-block; + position: relative; + margin: 0 3px; +} +.cesium-sceneModePicker-visible { + visibility: visible; + opacity: 1; + transition: opacity 0.25s linear; +} +.cesium-sceneModePicker-hidden { + visibility: hidden; + opacity: 0; + transition: visibility 0s 0.25s, opacity 0.25s linear; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-none { + display: none; +} +.cesium-sceneModePicker-slide-svg { + transition: left 2s; + top: 0; + left: 0; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-dropDown-icon { + box-sizing: border-box; + padding: 0; + margin: 3px 0; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D, +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView, +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D { + margin: 0 0 3px 0; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-icon2D { + left: 100%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-iconColumbusView { + left: 200%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon3D { + left: -200%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon2D { + left: -100%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-icon3D { + left: -100%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-iconColumbusView { + left: 100%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-selected { + border-color: #2e2; + box-shadow: 0 0 8px #fff, 0 0 8px #fff; +} diff --git a/public/Cesium/Widgets/SelectionIndicator/SelectionIndicator.css b/public/Cesium/Widgets/SelectionIndicator/SelectionIndicator.css new file mode 100644 index 000000000..148ff4a87 --- /dev/null +++ b/public/Cesium/Widgets/SelectionIndicator/SelectionIndicator.css @@ -0,0 +1,20 @@ +/* packages/widgets/Source/SelectionIndicator/SelectionIndicator.css */ +.cesium-selection-wrapper { + position: absolute; + width: 160px; + height: 160px; + pointer-events: none; + visibility: hidden; + opacity: 0; + transition: visibility 0s 0.2s, opacity 0.2s ease-in; +} +.cesium-selection-wrapper-visible { + visibility: visible; + opacity: 1; + transition: opacity 0.2s ease-out; +} +.cesium-selection-wrapper svg { + fill: #2e2; + stroke: #000; + stroke-width: 1.1px; +} diff --git a/public/Cesium/Widgets/Timeline/Timeline.css b/public/Cesium/Widgets/Timeline/Timeline.css new file mode 100644 index 000000000..adb8b99e2 --- /dev/null +++ b/public/Cesium/Widgets/Timeline/Timeline.css @@ -0,0 +1,103 @@ +/* packages/widgets/Source/Timeline/Timeline.css */ +.cesium-timeline-main { + position: relative; + left: 0; + bottom: 0; + overflow: hidden; + border: solid 1px #888; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.cesium-timeline-trackContainer { + width: 100%; + overflow: auto; + border-top: solid 1px #888; + position: relative; + top: 0; + left: 0; +} +.cesium-timeline-tracks { + position: absolute; + top: 0; + left: 0; + width: 100%; +} +.cesium-timeline-needle { + position: absolute; + left: 0; + top: 1.7em; + bottom: 0; + width: 1px; + background: #f00; +} +.cesium-timeline-bar { + position: relative; + left: 0; + top: 0; + overflow: hidden; + cursor: pointer; + width: 100%; + height: 1.7em; + background: + linear-gradient( + to bottom, + rgba(116, 117, 119, 0.8) 0%, + rgba(58, 68, 82, 0.8) 11%, + rgba(46, 50, 56, 0.8) 46%, + rgba(53, 53, 53, 0.8) 81%, + rgba(53, 53, 53, 0.8) 100%); +} +.cesium-timeline-ruler { + visibility: hidden; + white-space: nowrap; + font-size: 80%; + z-index: -200; +} +.cesium-timeline-highlight { + position: absolute; + bottom: 0; + left: 0; + background: #08f; +} +.cesium-timeline-ticLabel { + position: absolute; + top: 0; + left: 0; + white-space: nowrap; + font-size: 80%; + color: #eee; +} +.cesium-timeline-ticMain { + position: absolute; + bottom: 0; + left: 0; + width: 1px; + height: 50%; + background: #eee; +} +.cesium-timeline-ticSub { + position: absolute; + bottom: 0; + left: 0; + width: 1px; + height: 33%; + background: #aaa; +} +.cesium-timeline-ticTiny { + position: absolute; + bottom: 0; + left: 0; + width: 1px; + height: 25%; + background: #888; +} +.cesium-timeline-icon16 { + display: block; + position: absolute; + width: 16px; + height: 16px; + background-image: url(data:text/plain;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAAB3AH1ZAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sIDBITKIVzLEMAAAKNSURBVEjHxdXNSxRhHAfw7zzrqhuoWJnSkrippUVSEKsHI9BTUYdAJA/RoYMREV26rAdn6tAfUARi16hQqkOBQRgUEYFWEC3OwczMjdZd92VmdWfmeelgTjO7q7gb0VzmmZnn85vvPPPMM8B/3qTcE2PPpuTZKB1eWuUQACgXYACYwVFbCTTVeZXB/i55o4LFelcAZfStYD4vpAoPGAGo4GBcQEgSOAUMQyAezwK6iQfDPXnhS/FkHZ+/8VLMWxxqWkfH3gbMRNOYi2roavbja0zHQmoFPYf8ED4Ko4aivm9MOG/u9I8mwrafeK7a/tVrNc/bARYN5noadeq7q0342vXw9CIMU6BmW8rVP9cPBPe52uu+v3O/y9sB4gkTWs6Qsk0mj5ExXMelejvA8WafYmkmGPHanTijdtvif8rx5RiCjdWKs2Cp3jWRDl96KhrbqlBeJqBOLyLQXg0IgbkZDS0dO8EZxZfPSTA9jvDDK3mT0OmP1FXh3XwEEAKdTX5MRWLgjCK4pwH3xt/YnjgLHAv4lHTCAKMMu/wV+KZGob6PoKyMQ0+sgBpZVJZn0NterxQaVqef/DRn+/EXYds/mZx2eVeAW9d65dhCEsaKCb7K8HH0gqTevyh9GDkn0VULRiaLzJKGBu9swfdaiie5RVo9ESURN8E8BE0n7ggACJy8KzghSCzp6DmwWxkaCm24EBXr8wI8Hrkq06QBiRC0t24HALS11IBTCyJl4vb1AXmzpbVYTwoVOXN0h7L8Mwtm8bXPybIQ/5FCX3dA2cr6XowvGCA02CvztAnz9+JiZk1AMxG6fEreSoBiPNmoyNnuWiWVzAIAtISO08E6pZi/3N96AIDn4E3h3P8L/wshP+txtEs4JAAAAABJRU5ErkJggg==); + background-repeat: no-repeat; +} diff --git a/public/Cesium/Widgets/Timeline/lighter.css b/public/Cesium/Widgets/Timeline/lighter.css new file mode 100644 index 000000000..f2acaa211 --- /dev/null +++ b/public/Cesium/Widgets/Timeline/lighter.css @@ -0,0 +1,23 @@ +/* packages/widgets/Source/Timeline/lighter.css */ +.cesium-lighter .cesium-timeline-bar { + background: + linear-gradient( + to bottom, + #eeeeee 0%, + #ffffff 50%, + #fafafa 100%); +} +.cesium-lighter .cesium-timeline-ticLabel { + color: #000; +} +.cesium-lighter .cesium-timeline-ticMain { + position: absolute; + bottom: 0; + left: 0; + width: 1px; + height: 50%; + background: #000; +} +.cesium-lighter .cesium-timeline-ticSub { + background: #444; +} diff --git a/public/Cesium/Widgets/VRButton/VRButton.css b/public/Cesium/Widgets/VRButton/VRButton.css new file mode 100644 index 000000000..1005bd4a0 --- /dev/null +++ b/public/Cesium/Widgets/VRButton/VRButton.css @@ -0,0 +1,8 @@ +/* packages/widgets/Source/VRButton/VRButton.css */ +.cesium-button.cesium-vrButton { + display: block; + width: 100%; + height: 100%; + margin: 0; + border-radius: 0; +} diff --git a/public/Cesium/Widgets/Viewer/Viewer.css b/public/Cesium/Widgets/Viewer/Viewer.css new file mode 100644 index 000000000..5884a8697 --- /dev/null +++ b/public/Cesium/Widgets/Viewer/Viewer.css @@ -0,0 +1,107 @@ +/* packages/widgets/Source/Viewer/Viewer.css */ +.cesium-viewer { + font-family: sans-serif; + font-size: 16px; + overflow: hidden; + display: block; + position: relative; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.cesium-viewer-cesiumWidgetContainer { + width: 100%; + height: 100%; +} +.cesium-viewer-bottom { + display: block; + position: absolute; + bottom: 0; + left: 0; + padding-right: 5px; +} +.cesium-viewer .cesium-widget-credits { + display: inline; + position: static; + bottom: auto; + left: auto; + padding-right: 0; + color: #ffffff; + font-size: 10px; + text-shadow: 0 0 2px #000000; +} +.cesium-viewer-timelineContainer { + position: absolute; + bottom: 0; + left: 169px; + right: 29px; + height: 27px; + padding: 0; + margin: 0; + overflow: hidden; + font-size: 14px; +} +.cesium-viewer-animationContainer { + position: absolute; + bottom: 0; + left: 0; + padding: 0; + width: 169px; + height: 112px; +} +.cesium-viewer-fullscreenContainer { + position: absolute; + bottom: 0; + right: 0; + padding: 0; + width: 29px; + height: 29px; + overflow: hidden; +} +.cesium-viewer-vrContainer { + position: absolute; + bottom: 0; + right: 0; + padding: 0; + width: 29px; + height: 29px; + overflow: hidden; +} +.cesium-viewer-toolbar { + display: block; + position: absolute; + top: 5px; + right: 5px; +} +.cesium-viewer-cesiumInspectorContainer { + display: block; + position: absolute; + top: 50px; + right: 10px; +} +.cesium-viewer-geocoderContainer { + position: relative; + display: inline-block; + margin: 0 3px; +} +.cesium-viewer-cesium3DTilesInspectorContainer { + display: block; + position: absolute; + top: 50px; + right: 10px; + max-height: calc(100% - 120px); + box-sizing: border-box; + overflow-y: auto; + overflow-x: hidden; +} +.cesium-viewer-voxelInspectorContainer { + display: block; + position: absolute; + top: 50px; + right: 10px; + max-height: calc(100% - 120px); + box-sizing: border-box; + overflow-y: auto; + overflow-x: hidden; +} diff --git a/public/Cesium/Widgets/VoxelInspector/VoxelInspector.css b/public/Cesium/Widgets/VoxelInspector/VoxelInspector.css new file mode 100644 index 000000000..a0a31024b --- /dev/null +++ b/public/Cesium/Widgets/VoxelInspector/VoxelInspector.css @@ -0,0 +1,16 @@ +/* packages/widgets/Source/VoxelInspector/VoxelInspector.css */ +.cesium-VoxelInspector { + width: 300px; + pointer-events: all; +} +.cesium-VoxelInspector div, +.cesium-VoxelInspector input[type=range] { + width: 100%; + box-sizing: border-box; +} +.cesium-VoxelInspector .cesium-cesiumInspector-section { + margin-top: 3px; +} +.cesium-VoxelInspector .cesium-cesiumInspector-sectionHeader + .cesium-cesiumInspector-show { + border-top: 1px solid white; +} diff --git a/public/Cesium/Widgets/lighter.css b/public/Cesium/Widgets/lighter.css new file mode 100644 index 000000000..c6cc48d45 --- /dev/null +++ b/public/Cesium/Widgets/lighter.css @@ -0,0 +1,237 @@ +/* packages/widgets/Source/lighterShared.css */ +.cesium-lighter .cesium-button { + color: #111; + fill: #111; + background: #e2f0ff; + border: 1px solid #759dc0; +} +.cesium-lighter .cesium-button:focus { + color: #000; + fill: #000; + border-color: #ea4; +} +.cesium-lighter .cesium-button:hover { + color: #000; + fill: #000; + background: #a6d2ff; + border-color: #aef; + box-shadow: 0 0 8px #777; +} +.cesium-lighter .cesium-button:active { + color: #fff; + fill: #fff; + background: #48b; + border-color: #ea0; +} +.cesium-lighter .cesium-button:disabled, +.cesium-lighter .cesium-button-disabled, +.cesium-lighter .cesium-button-disabled:focus, +.cesium-lighter .cesium-button-disabled:hover, +.cesium-lighter .cesium-button-disabled:active { + background: #ccc; + border-color: #999; + color: #999; + fill: #999; + box-shadow: none; +} +.cesium-lighter .cesium-performanceDisplay { + background-color: #e2f0ff; + border-color: #759dc0; +} +.cesium-lighter .cesium-performanceDisplay-fps { + color: #e52; +} +.cesium-lighter .cesium-performanceDisplay-ms { + color: #ea4; +} + +/* packages/widgets/Source/Animation/lighter.css */ +.cesium-lighter .cesium-animation-themeNormal { + color: #e5f2fe; +} +.cesium-lighter .cesium-animation-themeHover { + color: #abd6ff; +} +.cesium-lighter .cesium-animation-themeSelect { + color: #e5f2fe; +} +.cesium-lighter .cesium-animation-themeDisabled { + color: #efefef; +} +.cesium-lighter .cesium-animation-themeKnob { + color: #e1e2e3; +} +.cesium-lighter .cesium-animation-themePointer { + color: #fa5; +} +.cesium-lighter .cesium-animation-themeSwoosh { + color: #ace; +} +.cesium-lighter .cesium-animation-themeSwooshHover { + color: #bdf; +} +.cesium-lighter .cesium-animation-svgText { + fill: #111; +} +.cesium-lighter .cesium-animation-rectButton .cesium-animation-buttonPath { + fill: #111; +} +.cesium-lighter .cesium-animation-rectButton .cesium-animation-buttonMain { + stroke: #759dc0; +} +.cesium-lighter .cesium-animation-buttonToggled .cesium-animation-buttonGlow { + fill: #ffaa2a; +} +.cesium-lighter .cesium-animation-buttonToggled .cesium-animation-buttonMain { + stroke: #ea0; +} +.cesium-lighter .cesium-animation-rectButton:hover .cesium-animation-buttonMain { + stroke: #759dc0; +} +.cesium-lighter .cesium-animation-buttonToggled:hover .cesium-animation-buttonGlow { + fill: #fff; +} +.cesium-lighter .cesium-animation-buttonToggled:hover .cesium-animation-buttonMain { + stroke: #ea0; +} +.cesium-lighter .cesium-animation-rectButton:active .cesium-animation-buttonMain { + fill: #abd6ff; +} +.cesium-lighter .cesium-animation-buttonDisabled .cesium-animation-buttonMain { + stroke: #d3d3d3; +} +.cesium-lighter .cesium-animation-buttonDisabled .cesium-animation-buttonPath { + fill: #818181; +} +.cesium-lighter .cesium-animation-shuttleRingBack { + fill: #fafafa; + fill-opacity: 1; + stroke: #aeaeae; + stroke-width: 1.2; +} +.cesium-lighter .cesium-animation-shuttleRingSwoosh line { + stroke: #8ac; +} +.cesium-lighter .cesium-animation-knobOuter { + stroke: #a5a5a5; +} + +/* packages/widgets/Source/BaseLayerPicker/lighter.css */ +.cesium-lighter .cesium-baseLayerPicker-itemIcon { + border-color: #759dc0; +} +.cesium-lighter .cesium-baseLayerPicker-dropDown { + background-color: rgba(240, 240, 240, 0.75); +} +.cesium-lighter .cesium-baseLayerPicker-sectionTitle { + color: black; +} +.cesium-lighter .cesium-baseLayerPicker-itemLabel { + color: black; +} +.cesium-lighter .cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemIcon { + border-color: #000; +} +.cesium-lighter .cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemLabel { + color: rgb(0, 61, 168); +} +.cesium-lighter .cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemIcon { + border: double 4px rgb(0, 61, 168); +} + +/* packages/engine/Source/Widget/lighter.css */ +.cesium-lighter .cesium-widget-errorPanel { + background: rgba(255, 255, 255, 0.7); +} +.cesium-lighter .cesium-widget-errorPanel-content { + border: 1px solid #526f82; + border-radius: 7px; + background-color: white; + color: black; +} +.cesium-lighter .cesium-widget-errorPanel-header { + color: #b87d00; +} + +/* packages/widgets/Source/Geocoder/lighter.css */ +.cesium-lighter .cesium-geocoder-input { + border: solid 1px #759dc0; + background-color: rgba(240, 240, 240, 0.9); + color: black; +} +.cesium-lighter .cesium-viewer-geocoderContainer:hover .cesium-geocoder-input { + border-color: #aef; + box-shadow: 0 0 8px #fff; +} +.cesium-lighter .cesium-geocoder-searchButton { + background-color: #e2f0ff; + fill: #111; +} +.cesium-lighter .cesium-geocoder-searchButton:hover { + background-color: #a6d2ff; +} + +/* packages/widgets/Source/Timeline/lighter.css */ +.cesium-lighter .cesium-timeline-bar { + background: + linear-gradient( + to bottom, + #eeeeee 0%, + #ffffff 50%, + #fafafa 100%); +} +.cesium-lighter .cesium-timeline-ticLabel { + color: #000; +} +.cesium-lighter .cesium-timeline-ticMain { + position: absolute; + bottom: 0; + left: 0; + width: 1px; + height: 50%; + background: #000; +} +.cesium-lighter .cesium-timeline-ticSub { + background: #444; +} + +/* packages/widgets/Source/NavigationHelpButton/lighter.css */ +.cesium-lighter .cesium-navigation-help-instructions { + border: 1px solid #759dc0; + background-color: rgba(255, 255, 255, 0.9); +} +.cesium-lighter .cesium-navigation-help-pan { + color: #66ccee; + font-weight: bold; +} +.cesium-lighter .cesium-navigation-help-zoom { + color: #65ec00; + font-weight: bold; +} +.cesium-lighter .cesium-navigation-help-rotate { + color: #eec722; + font-weight: bold; +} +.cesium-lighter .cesium-navigation-help-tilt { + color: #d800d8; + font-weight: bold; +} +.cesium-lighter .cesium-navigation-help-details { + color: #222222; +} +.cesium-lighter .cesium-navigation-button { + color: #222222; + border-top: 1px solid #759dc0; + border-right: 1px solid #759dc0; +} +.cesium-lighter .cesium-navigation-button-selected { + background-color: rgba(196, 225, 255, 0.9); +} +.cesium-lighter .cesium-navigation-button-unselected { + background-color: rgba(226, 240, 255, 0.9); +} +.cesium-lighter .cesium-navigation-button-unselected:hover { + background-color: rgba(166, 210, 255, 0.9); +} + +/* packages/widgets/Source/lighter.css */ diff --git a/public/Cesium/Widgets/lighterShared.css b/public/Cesium/Widgets/lighterShared.css new file mode 100644 index 000000000..7d3b4ddd3 --- /dev/null +++ b/public/Cesium/Widgets/lighterShared.css @@ -0,0 +1,46 @@ +/* packages/widgets/Source/lighterShared.css */ +.cesium-lighter .cesium-button { + color: #111; + fill: #111; + background: #e2f0ff; + border: 1px solid #759dc0; +} +.cesium-lighter .cesium-button:focus { + color: #000; + fill: #000; + border-color: #ea4; +} +.cesium-lighter .cesium-button:hover { + color: #000; + fill: #000; + background: #a6d2ff; + border-color: #aef; + box-shadow: 0 0 8px #777; +} +.cesium-lighter .cesium-button:active { + color: #fff; + fill: #fff; + background: #48b; + border-color: #ea0; +} +.cesium-lighter .cesium-button:disabled, +.cesium-lighter .cesium-button-disabled, +.cesium-lighter .cesium-button-disabled:focus, +.cesium-lighter .cesium-button-disabled:hover, +.cesium-lighter .cesium-button-disabled:active { + background: #ccc; + border-color: #999; + color: #999; + fill: #999; + box-shadow: none; +} +.cesium-lighter .cesium-performanceDisplay { + background-color: #e2f0ff; + border-color: #759dc0; +} +.cesium-lighter .cesium-performanceDisplay-fps { + color: #e52; +} +.cesium-lighter .cesium-performanceDisplay-ms { + color: #ea4; +} diff --git a/public/Cesium/Widgets/shared.css b/public/Cesium/Widgets/shared.css new file mode 100644 index 000000000..2c9b949e9 --- /dev/null +++ b/public/Cesium/Widgets/shared.css @@ -0,0 +1,103 @@ +/* packages/widgets/Source/shared.css */ +.cesium-svgPath-svg { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow: hidden; +} +.cesium-button { + display: inline-block; + position: relative; + background: #303336; + border: 1px solid #444; + color: #edffff; + fill: #edffff; + border-radius: 4px; + padding: 5px 12px; + margin: 2px 3px; + cursor: pointer; + overflow: hidden; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.cesium-button:focus { + color: #fff; + fill: #fff; + border-color: #ea4; + outline: none; +} +.cesium-button:hover { + color: #fff; + fill: #fff; + background: #48b; + border-color: #aef; + box-shadow: 0 0 8px #fff; +} +.cesium-button:active { + color: #000; + fill: #000; + background: #adf; + border-color: #fff; + box-shadow: 0 0 8px #fff; +} +.cesium-button:disabled, +.cesium-button-disabled, +.cesium-button-disabled:focus, +.cesium-button-disabled:hover, +.cesium-button-disabled:active { + background: #303336; + border-color: #444; + color: #646464; + fill: #646464; + box-shadow: none; + cursor: default; +} +.cesium-button option { + background-color: #000; + color: #eee; +} +.cesium-button option:disabled { + color: #777; +} +.cesium-button input, +.cesium-button label { + cursor: pointer; +} +.cesium-button input { + vertical-align: sub; +} +.cesium-toolbar-button { + box-sizing: border-box; + width: 32px; + height: 32px; + border-radius: 14%; + padding: 0; + vertical-align: middle; + z-index: 0; +} +.cesium-performanceDisplay-defaultContainer { + position: absolute; + top: 50px; + right: 10px; + text-align: right; +} +.cesium-performanceDisplay { + background-color: rgba(40, 40, 40, 0.7); + padding: 7px; + border-radius: 5px; + border: 1px solid #444; + font: bold 12px sans-serif; +} +.cesium-performanceDisplay-fps { + color: #e52; +} +.cesium-performanceDisplay-throttled { + color: #a42; +} +.cesium-performanceDisplay-ms { + color: #de3; +} diff --git a/public/Cesium/Widgets/widgets.css b/public/Cesium/Widgets/widgets.css new file mode 100644 index 000000000..df675d599 --- /dev/null +++ b/public/Cesium/Widgets/widgets.css @@ -0,0 +1,1342 @@ +/* packages/widgets/Source/shared.css */ +.cesium-svgPath-svg { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow: hidden; +} +.cesium-button { + display: inline-block; + position: relative; + background: #303336; + border: 1px solid #444; + color: #edffff; + fill: #edffff; + border-radius: 4px; + padding: 5px 12px; + margin: 2px 3px; + cursor: pointer; + overflow: hidden; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.cesium-button:focus { + color: #fff; + fill: #fff; + border-color: #ea4; + outline: none; +} +.cesium-button:hover { + color: #fff; + fill: #fff; + background: #48b; + border-color: #aef; + box-shadow: 0 0 8px #fff; +} +.cesium-button:active { + color: #000; + fill: #000; + background: #adf; + border-color: #fff; + box-shadow: 0 0 8px #fff; +} +.cesium-button:disabled, +.cesium-button-disabled, +.cesium-button-disabled:focus, +.cesium-button-disabled:hover, +.cesium-button-disabled:active { + background: #303336; + border-color: #444; + color: #646464; + fill: #646464; + box-shadow: none; + cursor: default; +} +.cesium-button option { + background-color: #000; + color: #eee; +} +.cesium-button option:disabled { + color: #777; +} +.cesium-button input, +.cesium-button label { + cursor: pointer; +} +.cesium-button input { + vertical-align: sub; +} +.cesium-toolbar-button { + box-sizing: border-box; + width: 32px; + height: 32px; + border-radius: 14%; + padding: 0; + vertical-align: middle; + z-index: 0; +} +.cesium-performanceDisplay-defaultContainer { + position: absolute; + top: 50px; + right: 10px; + text-align: right; +} +.cesium-performanceDisplay { + background-color: rgba(40, 40, 40, 0.7); + padding: 7px; + border-radius: 5px; + border: 1px solid #444; + font: bold 12px sans-serif; +} +.cesium-performanceDisplay-fps { + color: #e52; +} +.cesium-performanceDisplay-throttled { + color: #a42; +} +.cesium-performanceDisplay-ms { + color: #de3; +} + +/* packages/widgets/Source/Animation/Animation.css */ +.cesium-animation-theme { + visibility: hidden; + display: block; + position: absolute; + z-index: -100; +} +.cesium-animation-themeNormal { + color: #222; +} +.cesium-animation-themeHover { + color: #4488b0; +} +.cesium-animation-themeSelect { + color: #242; +} +.cesium-animation-themeDisabled { + color: #333; +} +.cesium-animation-themeKnob { + color: #222; +} +.cesium-animation-themePointer { + color: #2e2; +} +.cesium-animation-themeSwoosh { + color: #8ac; +} +.cesium-animation-themeSwooshHover { + color: #aef; +} +.cesium-animation-svgText { + fill: #edffff; + font-family: Sans-Serif; + font-size: 15px; + text-anchor: middle; +} +.cesium-animation-blank { + fill: #000; + fill-opacity: 0.01; + stroke: none; +} +.cesium-animation-rectButton { + cursor: pointer; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.cesium-animation-rectButton .cesium-animation-buttonGlow { + fill: #fff; + stroke: none; + display: none; +} +.cesium-animation-rectButton:hover .cesium-animation-buttonGlow { + display: block; +} +.cesium-animation-rectButton .cesium-animation-buttonPath { + fill: #edffff; +} +.cesium-animation-rectButton .cesium-animation-buttonMain { + stroke: #444; + stroke-width: 1.2; +} +.cesium-animation-rectButton:hover .cesium-animation-buttonMain { + stroke: #aef; +} +.cesium-animation-rectButton:active .cesium-animation-buttonMain { + fill: #abd6ff; +} +.cesium-animation-buttonDisabled { + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.cesium-animation-buttonDisabled .cesium-animation-buttonMain { + stroke: #555; +} +.cesium-animation-buttonDisabled .cesium-animation-buttonPath { + fill: #818181; +} +.cesium-animation-buttonDisabled .cesium-animation-buttonGlow { + display: none; +} +.cesium-animation-buttonToggled .cesium-animation-buttonGlow { + display: block; + fill: #2e2; +} +.cesium-animation-buttonToggled .cesium-animation-buttonMain { + stroke: #2e2; +} +.cesium-animation-buttonToggled:hover .cesium-animation-buttonGlow { + fill: #fff; +} +.cesium-animation-buttonToggled:hover .cesium-animation-buttonMain { + stroke: #2e2; +} +.cesium-animation-shuttleRingG { + cursor: pointer; +} +.cesium-animation-shuttleRingPointer { + cursor: pointer; +} +.cesium-animation-shuttleRingPausePointer { + cursor: pointer; +} +.cesium-animation-shuttleRingBack { + fill: #181818; + fill-opacity: 0.8; + stroke: #333; + stroke-width: 1.2; +} +.cesium-animation-shuttleRingSwoosh line { + stroke: #8ac; + stroke-width: 3; + stroke-opacity: 0.2; + stroke-linecap: round; +} +.cesium-animation-knobOuter { + cursor: pointer; + stroke: #444; + stroke-width: 1.2; +} +.cesium-animation-knobInner { + cursor: pointer; +} + +/* packages/widgets/Source/BaseLayerPicker/BaseLayerPicker.css */ +.cesium-baseLayerPicker-selected { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + border: none; +} +.cesium-baseLayerPicker-dropDown { + display: block; + position: absolute; + box-sizing: content-box; + top: auto; + right: 0; + width: 320px; + max-height: 500px; + margin-top: 5px; + background-color: rgba(38, 38, 38, 0.75); + border: 1px solid #444; + padding: 6px; + overflow: auto; + border-radius: 10px; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + transform: translate(0, -20%); + visibility: hidden; + opacity: 0; + transition: + visibility 0s 0.2s, + opacity 0.2s ease-in, + transform 0.2s ease-in; +} +.cesium-baseLayerPicker-dropDown-visible { + transform: translate(0, 0); + visibility: visible; + opacity: 1; + transition: opacity 0.2s ease-out, transform 0.2s ease-out; +} +.cesium-baseLayerPicker-sectionTitle { + display: block; + font-family: sans-serif; + font-size: 16pt; + text-align: left; + color: #edffff; + margin-bottom: 4px; +} +.cesium-baseLayerPicker-choices { + margin-bottom: 5px; +} +.cesium-baseLayerPicker-categoryTitle { + color: #edffff; + font-size: 11pt; +} +.cesium-baseLayerPicker-choices { + display: block; + border: 1px solid #888; + border-radius: 5px; + padding: 5px 0; +} +.cesium-baseLayerPicker-item { + display: inline-block; + vertical-align: top; + margin: 2px 5px; + width: 64px; + text-align: center; + cursor: pointer; +} +.cesium-baseLayerPicker-itemLabel { + display: block; + font-family: sans-serif; + font-size: 8pt; + text-align: center; + vertical-align: middle; + color: #edffff; + cursor: pointer; + word-wrap: break-word; +} +.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemLabel, +.cesium-baseLayerPicker-item:focus .cesium-baseLayerPicker-itemLabel { + text-decoration: underline; +} +.cesium-baseLayerPicker-itemIcon { + display: inline-block; + position: relative; + width: inherit; + height: auto; + background-size: 100% 100%; + border: solid 1px #444; + border-radius: 9px; + color: #edffff; + margin: 0; + padding: 0; + cursor: pointer; + box-sizing: border-box; +} +.cesium-baseLayerPicker-item:hover .cesium-baseLayerPicker-itemIcon { + border-color: #fff; + box-shadow: 0 0 8px #fff, 0 0 8px #fff; +} +.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemLabel { + color: rgb(189, 236, 248); +} +.cesium-baseLayerPicker-selectedItem .cesium-baseLayerPicker-itemIcon { + border: double 4px rgb(189, 236, 248); +} + +/* packages/engine/Source/Widget/CesiumWidget.css */ +.cesium-widget { + font-family: sans-serif; + font-size: 16px; + overflow: hidden; + display: block; + position: relative; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.cesium-widget, +.cesium-widget canvas { + width: 100%; + height: 100%; + touch-action: none; +} +.cesium-widget-credits { + display: block; + position: absolute; + bottom: 0; + left: 0; + color: #fff; + font-size: 10px; + text-shadow: 0px 0px 2px #000000; + padding-right: 5px; +} +.cesium-widget-errorPanel { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + text-align: center; + background: rgba(0, 0, 0, 0.7); + z-index: 99999; +} +.cesium-widget-errorPanel:before { + display: inline-block; + vertical-align: middle; + height: 100%; + content: ""; +} +.cesium-widget-errorPanel-content { + width: 75%; + max-width: 500px; + display: inline-block; + text-align: left; + vertical-align: middle; + border: 1px solid #510c00; + border-radius: 7px; + background-color: #f0d9d5; + font-size: 14px; + color: #510c00; +} +.cesium-widget-errorPanel-content.expanded { + max-width: 75%; +} +.cesium-widget-errorPanel-header { + font-size: 18px; + font-family: + "Open Sans", + Verdana, + Geneva, + sans-serif; + background: #d69d93; + border-bottom: 2px solid #510c00; + padding-bottom: 10px; + border-radius: 3px 3px 0 0; + padding: 15px; +} +.cesium-widget-errorPanel-scroll { + overflow: auto; + font-family: + "Open Sans", + Verdana, + Geneva, + sans-serif; + white-space: pre-wrap; + padding: 0 15px; + margin: 10px 0 20px 0; +} +.cesium-widget-errorPanel-buttonPanel { + padding: 0 15px; + margin: 10px 0 20px 0; + text-align: right; +} +.cesium-widget-errorPanel-buttonPanel button { + border-color: #510c00; + background: #d69d93; + color: #202020; + margin: 0; +} +.cesium-widget-errorPanel-buttonPanel button:focus { + border-color: #510c00; + background: #f0d9d5; + color: #510c00; +} +.cesium-widget-errorPanel-buttonPanel button:hover { + border-color: #510c00; + background: #f0d9d5; + color: #510c00; +} +.cesium-widget-errorPanel-buttonPanel button:active { + border-color: #510c00; + background: #b17b72; + color: #510c00; +} +.cesium-widget-errorPanel-more-details { + text-decoration: underline; + cursor: pointer; +} +.cesium-widget-errorPanel-more-details:hover { + color: #2b0700; +} + +/* packages/widgets/Source/CesiumInspector/CesiumInspector.css */ +.cesium-cesiumInspector { + border-radius: 5px; + transition: width ease-in-out 0.25s; + background: rgba(48, 51, 54, 0.8); + border: 1px solid #444; + color: #edffff; + display: inline-block; + position: relative; + padding: 4px 12px; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + overflow: hidden; +} +.cesium-cesiumInspector-button { + text-align: center; + font-size: 11pt; +} +.cesium-cesiumInspector-visible .cesium-cesiumInspector-button { + border-bottom: 1px solid #aaa; + padding-bottom: 3px; +} +.cesium-cesiumInspector input:enabled, +.cesium-cesiumInspector-button { + cursor: pointer; +} +.cesium-cesiumInspector-visible { + width: 185px; + height: auto; +} +.cesium-cesiumInspector-hidden { + width: 122px; + height: 17px; +} +.cesium-cesiumInspector-sectionContent { + max-height: 600px; +} +.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionContent { + max-height: 0; + padding: 0 !important; + overflow: hidden; +} +.cesium-cesiumInspector-dropDown { + margin: 5px 0; + font-family: sans-serif; + font-size: 10pt; + width: 185px; +} +.cesium-cesiumInspector-frustumStatistics { + padding-left: 10px; + padding: 5px; + background-color: rgba(80, 80, 80, 0.75); +} +.cesium-cesiumInspector-pickButton { + background-color: rgba(0, 0, 0, 0.3); + border: 1px solid #444; + color: #edffff; + border-radius: 5px; + padding: 3px 7px; + cursor: pointer; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + margin: 0 auto; +} +.cesium-cesiumInspector-pickButton:focus { + outline: none; +} +.cesium-cesiumInspector-pickButton:active, +.cesium-cesiumInspector-pickButtonHighlight { + color: #000; + background: #adf; + border-color: #fff; + box-shadow: 0 0 8px #fff; +} +.cesium-cesiumInspector-center { + text-align: center; +} +.cesium-cesiumInspector-sectionHeader { + font-weight: bold; + font-size: 10pt; + margin: 0; + cursor: pointer; +} +.cesium-cesiumInspector-pickSection { + border: 1px solid #aaa; + border-radius: 5px; + padding: 3px; + margin-bottom: 5px; +} +.cesium-cesiumInspector-sectionContent { + margin-bottom: 10px; + transition: max-height 0.25s; +} +.cesium-cesiumInspector-tileText { + padding-bottom: 10px; + border-bottom: 1px solid #aaa; +} +.cesium-cesiumInspector-relativeText { + padding-top: 10px; +} +.cesium-cesiumInspector-sectionHeader::before { + margin-right: 5px; + content: "-"; + width: 1ch; + display: inline-block; +} +.cesium-cesiumInspector-section-collapsed .cesium-cesiumInspector-sectionHeader::before { + content: "+"; +} + +/* packages/widgets/Source/Cesium3DTilesInspector/Cesium3DTilesInspector.css */ +ul.cesium-cesiumInspector-statistics { + margin: 0; + padding-top: 3px; + padding-bottom: 3px; +} +ul.cesium-cesiumInspector-statistics + ul.cesium-cesiumInspector-statistics { + border-top: 1px solid #aaa; +} +.cesium-cesiumInspector-slider { + margin-top: 5px; +} +.cesium-cesiumInspector-slider input[type=number] { + text-align: left; + background-color: #222; + outline: none; + border: 1px solid #444; + color: #edffff; + width: 100px; + border-radius: 3px; + padding: 1px; + margin-left: 10px; + cursor: auto; +} +.cesium-cesiumInspector-slider input[type=number]::-webkit-outer-spin-button, +.cesium-cesiumInspector-slider input[type=number]::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} +.cesium-cesiumInspector-slider input[type=range] { + margin-left: 5px; + vertical-align: middle; +} +.cesium-cesiumInspector-hide .cesium-cesiumInspector-styleEditor { + display: none; +} +.cesium-cesiumInspector-styleEditor { + padding: 10px; + border-radius: 5px; + background: rgba(48, 51, 54, 0.8); + border: 1px solid #444; +} +.cesium-cesiumInspector-styleEditor textarea { + width: 100%; + height: 300px; + background: transparent; + color: #edffff; + border: none; + padding: 0; + white-space: pre; + overflow-wrap: normal; + overflow-x: auto; +} +.cesium-3DTilesInspector { + width: 300px; + pointer-events: all; +} +.cesium-3DTilesInspector-statistics { + font-size: 11px; +} +.cesium-3DTilesInspector-disabledElementsInfo { + margin: 5px 0 0 0; + padding: 0 0 0 20px; + color: #eed202; +} +.cesium-3DTilesInspector div, +.cesium-3DTilesInspector input[type=range] { + width: 100%; + box-sizing: border-box; +} +.cesium-cesiumInspector-error { + color: #ff9e9e; + overflow: auto; +} +.cesium-3DTilesInspector .cesium-cesiumInspector-section { + margin-top: 3px; +} +.cesium-3DTilesInspector .cesium-cesiumInspector-sectionHeader + .cesium-cesiumInspector-show { + border-top: 1px solid white; +} +input.cesium-cesiumInspector-url { + overflow: hidden; + white-space: nowrap; + overflow-x: scroll; + background-color: transparent; + color: white; + outline: none; + border: none; + height: 1em; + width: 100%; +} +.cesium-cesiumInspector .field-group { + display: table; +} +.cesium-cesiumInspector .field-group > label { + display: table-cell; + font-weight: bold; +} +.cesium-cesiumInspector .field-group > .field { + display: table-cell; + width: 100%; +} + +/* packages/widgets/Source/VoxelInspector/VoxelInspector.css */ +.cesium-VoxelInspector { + width: 300px; + pointer-events: all; +} +.cesium-VoxelInspector div, +.cesium-VoxelInspector input[type=range] { + width: 100%; + box-sizing: border-box; +} +.cesium-VoxelInspector .cesium-cesiumInspector-section { + margin-top: 3px; +} +.cesium-VoxelInspector .cesium-cesiumInspector-sectionHeader + .cesium-cesiumInspector-show { + border-top: 1px solid white; +} + +/* packages/widgets/Source/FullscreenButton/FullscreenButton.css */ +.cesium-button.cesium-fullscreenButton { + display: block; + width: 100%; + height: 100%; + margin: 0; + border-radius: 0; +} + +/* packages/widgets/Source/VRButton/VRButton.css */ +.cesium-button.cesium-vrButton { + display: block; + width: 100%; + height: 100%; + margin: 0; + border-radius: 0; +} + +/* packages/widgets/Source/Geocoder/Geocoder.css */ +.cesium-viewer-geocoderContainer .cesium-geocoder-input { + border: solid 1px #444; + background-color: rgba(40, 40, 40, 0.7); + color: white; + display: inline-block; + vertical-align: middle; + width: 0; + height: 32px; + margin: 0; + padding: 0 32px 0 0; + border-radius: 0; + box-sizing: border-box; + transition: width ease-in-out 0.25s, background-color 0.2s ease-in-out; + -webkit-appearance: none; +} +.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input { + border-color: #aef; + box-shadow: 0 0 8px #fff; +} +.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus { + border-color: #ea4; + background-color: rgba(15, 15, 15, 0.9); + box-shadow: none; + outline: none; +} +.cesium-viewer-geocoderContainer:hover .cesium-geocoder-input, +.cesium-viewer-geocoderContainer .cesium-geocoder-input:focus, +.cesium-viewer-geocoderContainer .cesium-geocoder-input-wide { + padding-left: 4px; + width: 250px; +} +.cesium-viewer-geocoderContainer .search-results { + position: absolute; + background-color: #000; + color: #eee; + overflow-y: auto; + opacity: 0.8; + width: 100%; +} +.cesium-viewer-geocoderContainer .search-results ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.cesium-viewer-geocoderContainer .search-results ul li { + font-size: 14px; + padding: 3px 10px; +} +.cesium-viewer-geocoderContainer .search-results ul li:hover { + cursor: pointer; +} +.cesium-viewer-geocoderContainer .search-results ul li.active { + background: #48b; +} +.cesium-geocoder-searchButton { + background-color: #303336; + display: inline-block; + position: absolute; + cursor: pointer; + width: 32px; + top: 1px; + right: 1px; + height: 30px; + vertical-align: middle; + fill: #edffff; +} +.cesium-geocoder-searchButton:hover { + background-color: #48b; +} + +/* packages/widgets/Source/InfoBox/InfoBox.css */ +.cesium-infoBox { + display: block; + position: absolute; + top: 50px; + right: 0; + width: 40%; + max-width: 480px; + background: rgba(38, 38, 38, 0.95); + color: #edffff; + border: 1px solid #444; + border-right: none; + border-top-left-radius: 7px; + border-bottom-left-radius: 7px; + box-shadow: 0 0 10px 1px #000; + transform: translate(100%, 0); + visibility: hidden; + opacity: 0; + transition: + visibility 0s 0.2s, + opacity 0.2s ease-in, + transform 0.2s ease-in; +} +.cesium-infoBox-visible { + transform: translate(0, 0); + visibility: visible; + opacity: 1; + transition: opacity 0.2s ease-out, transform 0.2s ease-out; +} +.cesium-infoBox-title { + display: block; + height: 20px; + padding: 5px 30px 5px 25px; + background: rgba(84, 84, 84, 1); + border-top-left-radius: 7px; + text-align: center; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + box-sizing: content-box; +} +.cesium-infoBox-bodyless .cesium-infoBox-title { + border-bottom-left-radius: 7px; +} +button.cesium-infoBox-camera { + display: block; + position: absolute; + top: 4px; + left: 4px; + width: 22px; + height: 22px; + background: transparent; + border-color: transparent; + border-radius: 3px; + padding: 0 5px; + margin: 0; +} +button.cesium-infoBox-close { + display: block; + position: absolute; + top: 5px; + right: 5px; + height: 20px; + background: transparent; + border: none; + border-radius: 2px; + font-weight: bold; + font-size: 16px; + padding: 0 5px; + margin: 0; + color: #edffff; +} +button.cesium-infoBox-close:focus { + background: rgba(238, 136, 0, 0.44); + outline: none; +} +button.cesium-infoBox-close:hover { + background: #888; + color: #000; +} +button.cesium-infoBox-close:active { + background: #a00; + color: #000; +} +.cesium-infoBox-bodyless .cesium-infoBox-iframe { + display: none; +} +.cesium-infoBox-iframe { + border: none; + width: 100%; + width: calc(100% - 2px); +} + +/* packages/widgets/Source/SceneModePicker/SceneModePicker.css */ +span.cesium-sceneModePicker-wrapper { + display: inline-block; + position: relative; + margin: 0 3px; +} +.cesium-sceneModePicker-visible { + visibility: visible; + opacity: 1; + transition: opacity 0.25s linear; +} +.cesium-sceneModePicker-hidden { + visibility: hidden; + opacity: 0; + transition: visibility 0s 0.25s, opacity 0.25s linear; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-none { + display: none; +} +.cesium-sceneModePicker-slide-svg { + transition: left 2s; + top: 0; + left: 0; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-dropDown-icon { + box-sizing: border-box; + padding: 0; + margin: 3px 0; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D, +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView, +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D { + margin: 0 0 3px 0; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-icon2D { + left: 100%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button3D .cesium-sceneModePicker-iconColumbusView { + left: 200%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon3D { + left: -200%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-buttonColumbusView .cesium-sceneModePicker-icon2D { + left: -100%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-icon3D { + left: -100%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-button2D .cesium-sceneModePicker-iconColumbusView { + left: 100%; +} +.cesium-sceneModePicker-wrapper .cesium-sceneModePicker-selected { + border-color: #2e2; + box-shadow: 0 0 8px #fff, 0 0 8px #fff; +} + +/* packages/widgets/Source/ProjectionPicker/ProjectionPicker.css */ +span.cesium-projectionPicker-wrapper { + display: inline-block; + position: relative; + margin: 0 3px; +} +.cesium-projectionPicker-visible { + visibility: visible; + opacity: 1; + transition: opacity 0.25s linear; +} +.cesium-projectionPicker-hidden { + visibility: hidden; + opacity: 0; + transition: visibility 0s 0.25s, opacity 0.25s linear; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-none { + display: none; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-dropDown-icon { + box-sizing: border-box; + padding: 0; + margin: 3px 0; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective, +.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic { + margin: 0 0 3px 0; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonPerspective .cesium-projectionPicker-iconOrthographic { + left: 100%; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-buttonOrthographic .cesium-projectionPicker-iconPerspective { + left: -100%; +} +.cesium-projectionPicker-wrapper .cesium-projectionPicker-selected { + border-color: #2e2; + box-shadow: 0 0 8px #fff, 0 0 8px #fff; +} + +/* packages/widgets/Source/PerformanceWatchdog/PerformanceWatchdog.css */ +.cesium-performance-watchdog-message-area { + position: relative; + background-color: yellow; + color: black; + padding: 10px; +} +.cesium-performance-watchdog-message { + margin-right: 30px; +} +.cesium-performance-watchdog-message-dismiss { + position: absolute; + right: 0; + margin: 0 10px 0 0; +} + +/* packages/widgets/Source/NavigationHelpButton/NavigationHelpButton.css */ +.cesium-navigationHelpButton-wrapper { + position: relative; + display: inline-block; +} +.cesium-navigation-help { + visibility: hidden; + position: absolute; + top: 38px; + right: 2px; + width: 250px; + border-radius: 10px; + transform: scale(0.01); + transform-origin: 234px -10px; + transition: visibility 0s 0.25s, transform 0.25s ease-in; +} +.cesium-navigation-help-visible { + visibility: visible; + transform: scale(1); + transition: transform 0.25s ease-out; +} +.cesium-navigation-help-instructions { + border: 1px solid #444; + background-color: rgba(38, 38, 38, 0.75); + padding-bottom: 5px; + border-radius: 0 0 10px 10px; +} +.cesium-click-navigation-help { + display: none; +} +.cesium-touch-navigation-help { + display: none; + padding-top: 5px; +} +.cesium-click-navigation-help-visible { + display: block; +} +.cesium-touch-navigation-help-visible { + display: block; +} +.cesium-navigation-help-pan { + color: #66ccff; + font-weight: bold; +} +.cesium-navigation-help-zoom { + color: #65fd00; + font-weight: bold; +} +.cesium-navigation-help-rotate { + color: #ffd800; + font-weight: bold; +} +.cesium-navigation-help-tilt { + color: #d800d8; + font-weight: bold; +} +.cesium-navigation-help-details { + color: #ffffff; +} +.cesium-navigation-button { + color: #fff; + background-color: transparent; + border-bottom: none; + border-top: 1px solid #444; + border-right: 1px solid #444; + margin: 0; + width: 50%; + cursor: pointer; +} +.cesium-navigation-button-icon { + vertical-align: middle; + padding: 5px 1px; +} +.cesium-navigation-button:focus { + outline: none; +} +.cesium-navigation-button-left { + border-radius: 10px 0 0 0; + border-left: 1px solid #444; +} +.cesium-navigation-button-right { + border-radius: 0 10px 0 0; + border-left: none; +} +.cesium-navigation-button-selected { + background-color: rgba(38, 38, 38, 0.75); +} +.cesium-navigation-button-unselected { + background-color: rgba(0, 0, 0, 0.75); +} +.cesium-navigation-button-unselected:hover { + background-color: rgba(76, 76, 76, 0.75); +} + +/* packages/widgets/Source/SelectionIndicator/SelectionIndicator.css */ +.cesium-selection-wrapper { + position: absolute; + width: 160px; + height: 160px; + pointer-events: none; + visibility: hidden; + opacity: 0; + transition: visibility 0s 0.2s, opacity 0.2s ease-in; +} +.cesium-selection-wrapper-visible { + visibility: visible; + opacity: 1; + transition: opacity 0.2s ease-out; +} +.cesium-selection-wrapper svg { + fill: #2e2; + stroke: #000; + stroke-width: 1.1px; +} + +/* packages/widgets/Source/Timeline/Timeline.css */ +.cesium-timeline-main { + position: relative; + left: 0; + bottom: 0; + overflow: hidden; + border: solid 1px #888; + -moz-user-select: none; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; +} +.cesium-timeline-trackContainer { + width: 100%; + overflow: auto; + border-top: solid 1px #888; + position: relative; + top: 0; + left: 0; +} +.cesium-timeline-tracks { + position: absolute; + top: 0; + left: 0; + width: 100%; +} +.cesium-timeline-needle { + position: absolute; + left: 0; + top: 1.7em; + bottom: 0; + width: 1px; + background: #f00; +} +.cesium-timeline-bar { + position: relative; + left: 0; + top: 0; + overflow: hidden; + cursor: pointer; + width: 100%; + height: 1.7em; + background: + linear-gradient( + to bottom, + rgba(116, 117, 119, 0.8) 0%, + rgba(58, 68, 82, 0.8) 11%, + rgba(46, 50, 56, 0.8) 46%, + rgba(53, 53, 53, 0.8) 81%, + rgba(53, 53, 53, 0.8) 100%); +} +.cesium-timeline-ruler { + visibility: hidden; + white-space: nowrap; + font-size: 80%; + z-index: -200; +} +.cesium-timeline-highlight { + position: absolute; + bottom: 0; + left: 0; + background: #08f; +} +.cesium-timeline-ticLabel { + position: absolute; + top: 0; + left: 0; + white-space: nowrap; + font-size: 80%; + color: #eee; +} +.cesium-timeline-ticMain { + position: absolute; + bottom: 0; + left: 0; + width: 1px; + height: 50%; + background: #eee; +} +.cesium-timeline-ticSub { + position: absolute; + bottom: 0; + left: 0; + width: 1px; + height: 33%; + background: #aaa; +} +.cesium-timeline-ticTiny { + position: absolute; + bottom: 0; + left: 0; + width: 1px; + height: 25%; + background: #888; +} +.cesium-timeline-icon16 { + display: block; + position: absolute; + width: 16px; + height: 16px; + background-image: url(data:text/plain;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAYAAAB3AH1ZAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sIDBITKIVzLEMAAAKNSURBVEjHxdXNSxRhHAfw7zzrqhuoWJnSkrippUVSEKsHI9BTUYdAJA/RoYMREV26rAdn6tAfUARi16hQqkOBQRgUEYFWEC3OwczMjdZd92VmdWfmeelgTjO7q7gb0VzmmZnn85vvPPPMM8B/3qTcE2PPpuTZKB1eWuUQACgXYACYwVFbCTTVeZXB/i55o4LFelcAZfStYD4vpAoPGAGo4GBcQEgSOAUMQyAezwK6iQfDPXnhS/FkHZ+/8VLMWxxqWkfH3gbMRNOYi2roavbja0zHQmoFPYf8ED4Ko4aivm9MOG/u9I8mwrafeK7a/tVrNc/bARYN5noadeq7q0342vXw9CIMU6BmW8rVP9cPBPe52uu+v3O/y9sB4gkTWs6Qsk0mj5ExXMelejvA8WafYmkmGPHanTijdtvif8rx5RiCjdWKs2Cp3jWRDl96KhrbqlBeJqBOLyLQXg0IgbkZDS0dO8EZxZfPSTA9jvDDK3mT0OmP1FXh3XwEEAKdTX5MRWLgjCK4pwH3xt/YnjgLHAv4lHTCAKMMu/wV+KZGob6PoKyMQ0+sgBpZVJZn0NterxQaVqef/DRn+/EXYds/mZx2eVeAW9d65dhCEsaKCb7K8HH0gqTevyh9GDkn0VULRiaLzJKGBu9swfdaiie5RVo9ESURN8E8BE0n7ggACJy8KzghSCzp6DmwWxkaCm24EBXr8wI8Hrkq06QBiRC0t24HALS11IBTCyJl4vb1AXmzpbVYTwoVOXN0h7L8Mwtm8bXPybIQ/5FCX3dA2cr6XowvGCA02CvztAnz9+JiZk1AMxG6fEreSoBiPNmoyNnuWiWVzAIAtISO08E6pZi/3N96AIDn4E3h3P8L/wshP+txtEs4JAAAAABJRU5ErkJggg==); + background-repeat: no-repeat; +} + +/* packages/widgets/Source/Viewer/Viewer.css */ +.cesium-viewer { + font-family: sans-serif; + font-size: 16px; + overflow: hidden; + display: block; + position: relative; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.cesium-viewer-cesiumWidgetContainer { + width: 100%; + height: 100%; +} +.cesium-viewer-bottom { + display: block; + position: absolute; + bottom: 0; + left: 0; + padding-right: 5px; +} +.cesium-viewer .cesium-widget-credits { + display: inline; + position: static; + bottom: auto; + left: auto; + padding-right: 0; + color: #ffffff; + font-size: 10px; + text-shadow: 0 0 2px #000000; +} +.cesium-viewer-timelineContainer { + position: absolute; + bottom: 0; + left: 169px; + right: 29px; + height: 27px; + padding: 0; + margin: 0; + overflow: hidden; + font-size: 14px; +} +.cesium-viewer-animationContainer { + position: absolute; + bottom: 0; + left: 0; + padding: 0; + width: 169px; + height: 112px; +} +.cesium-viewer-fullscreenContainer { + position: absolute; + bottom: 0; + right: 0; + padding: 0; + width: 29px; + height: 29px; + overflow: hidden; +} +.cesium-viewer-vrContainer { + position: absolute; + bottom: 0; + right: 0; + padding: 0; + width: 29px; + height: 29px; + overflow: hidden; +} +.cesium-viewer-toolbar { + display: block; + position: absolute; + top: 5px; + right: 5px; +} +.cesium-viewer-cesiumInspectorContainer { + display: block; + position: absolute; + top: 50px; + right: 10px; +} +.cesium-viewer-geocoderContainer { + position: relative; + display: inline-block; + margin: 0 3px; +} +.cesium-viewer-cesium3DTilesInspectorContainer { + display: block; + position: absolute; + top: 50px; + right: 10px; + max-height: calc(100% - 120px); + box-sizing: border-box; + overflow-y: auto; + overflow-x: hidden; +} +.cesium-viewer-voxelInspectorContainer { + display: block; + position: absolute; + top: 50px; + right: 10px; + max-height: calc(100% - 120px); + box-sizing: border-box; + overflow-y: auto; + overflow-x: hidden; +} + +/* packages/widgets/Source/I3SBuildingSceneLayerExplorer/I3SBuildingSceneLayerExplorer.css */ +.cesium-viewer-i3s-explorer ul { + list-style-type: none; +} +.cesium-viewer-i3s-explorer .layersList { + padding: 0; +} +.cesium-viewer-i3s-explorer input { + margin: 0 3px 0 0; +} +.cesium-viewer-i3s-explorer .expandItem { + cursor: pointer; + user-select: none; + width: 20px; +} +.cesium-viewer-i3s-explorer .nested, +.cesium-viewer-i3s-explorer #bsl-wrapper { + display: none; +} +.cesium-viewer-i3s-explorer .active { + display: block; +} +.cesium-viewer-i3s-explorer .li-wrapper { + display: flex; + flex-direction: row; + align-content: center; +} + +/* packages/widgets/Source/widgets.css */ diff --git a/public/Cesium/Workers/chunk-35SHYARM.js b/public/Cesium/Workers/chunk-35SHYARM.js new file mode 100644 index 000000000..2f1a929ac --- /dev/null +++ b/public/Cesium/Workers/chunk-35SHYARM.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as fn,c as Tn}from"./chunk-VTAIKJXX.js";var Dn=Tn((nt,bt)=>{var _=_||{};_.scope={};_.arrayIteratorImpl=function(p){var c=0;return function(){return c<p.length?{done:!1,value:p[c++]}:{done:!0}}};_.arrayIterator=function(p){return{next:_.arrayIteratorImpl(p)}};_.makeIterator=function(p){var c=typeof Symbol<"u"&&Symbol.iterator&&p[Symbol.iterator];return c?c.call(p):_.arrayIterator(p)};_.ASSUME_ES5=!1;_.ASSUME_NO_NATIVE_MAP=!1;_.ASSUME_NO_NATIVE_SET=!1;_.SIMPLE_FROUND_POLYFILL=!1;_.ISOLATE_POLYFILLS=!1;_.FORCE_POLYFILL_PROMISE=!1;_.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION=!1;_.getGlobal=function(p){p=[typeof globalThis=="object"&&globalThis,p,typeof window=="object"&&window,typeof self=="object"&&self,typeof global=="object"&&global];for(var c=0;c<p.length;++c){var s=p[c];if(s&&s.Math==Math)return s}throw Error("Cannot find global object")};_.global=_.getGlobal(nt);_.defineProperty=_.ASSUME_ES5||typeof Object.defineProperties=="function"?Object.defineProperty:function(p,c,s){return p==Array.prototype||p==Object.prototype||(p[c]=s.value),p};_.IS_SYMBOL_NATIVE=typeof Symbol=="function"&&typeof Symbol("x")=="symbol";_.TRUST_ES6_POLYFILLS=!_.ISOLATE_POLYFILLS||_.IS_SYMBOL_NATIVE;_.polyfills={};_.propertyToPolyfillSymbol={};_.POLYFILL_PREFIX="$jscp$";_.polyfill=function(p,c,s,y){c&&(_.ISOLATE_POLYFILLS?_.polyfillIsolated(p,c,s,y):_.polyfillUnisolated(p,c,s,y))};_.polyfillUnisolated=function(p,c,s,y){for(s=_.global,p=p.split("."),y=0;y<p.length-1;y++){var a=p[y];if(!(a in s))return;s=s[a]}p=p[p.length-1],y=s[p],c=c(y),c!=y&&c!=null&&_.defineProperty(s,p,{configurable:!0,writable:!0,value:c})};_.polyfillIsolated=function(p,c,s,y){var a=p.split(".");p=a.length===1,y=a[0],y=!p&&y in _.polyfills?_.polyfills:_.global;for(var g=0;g<a.length-1;g++){var i=a[g];if(!(i in y))return;y=y[i]}a=a[a.length-1],s=_.IS_SYMBOL_NATIVE&&s==="es6"?y[a]:null,c=c(s),c!=null&&(p?_.defineProperty(_.polyfills,a,{configurable:!0,writable:!0,value:c}):c!==s&&(_.propertyToPolyfillSymbol[a]===void 0&&(s=1e9*Math.random()>>>0,_.propertyToPolyfillSymbol[a]=_.IS_SYMBOL_NATIVE?_.global.Symbol(a):_.POLYFILL_PREFIX+s+"$"+a),_.defineProperty(y,_.propertyToPolyfillSymbol[a],{configurable:!0,writable:!0,value:c})))};_.polyfill("Promise",function(p){function c(){this.batch_=null}function s(i){return i instanceof a?i:new a(function(l,h){l(i)})}if(p&&(!(_.FORCE_POLYFILL_PROMISE||_.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION&&typeof _.global.PromiseRejectionEvent>"u")||!_.global.Promise||_.global.Promise.toString().indexOf("[native code]")===-1))return p;c.prototype.asyncExecute=function(i){if(this.batch_==null){this.batch_=[];var l=this;this.asyncExecuteFunction(function(){l.executeBatch_()})}this.batch_.push(i)};var y=_.global.setTimeout;c.prototype.asyncExecuteFunction=function(i){y(i,0)},c.prototype.executeBatch_=function(){for(;this.batch_&&this.batch_.length;){var i=this.batch_;this.batch_=[];for(var l=0;l<i.length;++l){var h=i[l];i[l]=null;try{h()}catch(I){this.asyncThrow_(I)}}}this.batch_=null},c.prototype.asyncThrow_=function(i){this.asyncExecuteFunction(function(){throw i})};var a=function(i){this.state_=0,this.result_=void 0,this.onSettledCallbacks_=[],this.isRejectionHandled_=!1;var l=this.createResolveAndReject_();try{i(l.resolve,l.reject)}catch(h){l.reject(h)}};a.prototype.createResolveAndReject_=function(){function i(I){return function(C){h||(h=!0,I.call(l,C))}}var l=this,h=!1;return{resolve:i(this.resolveTo_),reject:i(this.reject_)}},a.prototype.resolveTo_=function(i){if(i===this)this.reject_(new TypeError("A Promise cannot resolve to itself"));else if(i instanceof a)this.settleSameAsPromise_(i);else{t:switch(typeof i){case"object":var l=i!=null;break t;case"function":l=!0;break t;default:l=!1}l?this.resolveToNonPromiseObj_(i):this.fulfill_(i)}},a.prototype.resolveToNonPromiseObj_=function(i){var l=void 0;try{l=i.then}catch(h){this.reject_(h);return}typeof l=="function"?this.settleSameAsThenable_(l,i):this.fulfill_(i)},a.prototype.reject_=function(i){this.settle_(2,i)},a.prototype.fulfill_=function(i){this.settle_(1,i)},a.prototype.settle_=function(i,l){if(this.state_!=0)throw Error("Cannot settle("+i+", "+l+"): Promise already settled in state"+this.state_);this.state_=i,this.result_=l,this.state_===2&&this.scheduleUnhandledRejectionCheck_(),this.executeOnSettledCallbacks_()},a.prototype.scheduleUnhandledRejectionCheck_=function(){var i=this;y(function(){if(i.notifyUnhandledRejection_()){var l=_.global.console;typeof l<"u"&&l.error(i.result_)}},1)},a.prototype.notifyUnhandledRejection_=function(){if(this.isRejectionHandled_)return!1;var i=_.global.CustomEvent,l=_.global.Event,h=_.global.dispatchEvent;return typeof h>"u"?!0:(typeof i=="function"?i=new i("unhandledrejection",{cancelable:!0}):typeof l=="function"?i=new l("unhandledrejection",{cancelable:!0}):(i=_.global.document.createEvent("CustomEvent"),i.initCustomEvent("unhandledrejection",!1,!0,i)),i.promise=this,i.reason=this.result_,h(i))},a.prototype.executeOnSettledCallbacks_=function(){if(this.onSettledCallbacks_!=null){for(var i=0;i<this.onSettledCallbacks_.length;++i)g.asyncExecute(this.onSettledCallbacks_[i]);this.onSettledCallbacks_=null}};var g=new c;return a.prototype.settleSameAsPromise_=function(i){var l=this.createResolveAndReject_();i.callWhenSettled_(l.resolve,l.reject)},a.prototype.settleSameAsThenable_=function(i,l){var h=this.createResolveAndReject_();try{i.call(l,h.resolve,h.reject)}catch(I){h.reject(I)}},a.prototype.then=function(i,l){function h(f,T){return typeof f=="function"?function(G){try{I(f(G))}catch(V){C(V)}}:T}var I,C,K=new a(function(f,T){I=f,C=T});return this.callWhenSettled_(h(i,I),h(l,C)),K},a.prototype.catch=function(i){return this.then(void 0,i)},a.prototype.callWhenSettled_=function(i,l){function h(){switch(I.state_){case 1:i(I.result_);break;case 2:l(I.result_);break;default:throw Error("Unexpected state: "+I.state_)}}var I=this;this.onSettledCallbacks_==null?g.asyncExecute(h):this.onSettledCallbacks_.push(h),this.isRejectionHandled_=!0},a.resolve=s,a.reject=function(i){return new a(function(l,h){h(i)})},a.race=function(i){return new a(function(l,h){for(var I=_.makeIterator(i),C=I.next();!C.done;C=I.next())s(C.value).callWhenSettled_(l,h)})},a.all=function(i){var l=_.makeIterator(i),h=l.next();return h.done?s([]):new a(function(I,C){function K(G){return function(V){f[G]=V,T--,T==0&&I(f)}}var f=[],T=0;do f.push(void 0),T++,s(h.value).callWhenSettled_(K(f.length-1),C),h=l.next();while(!h.done)})},a},"es6","es3");_.owns=function(p,c){return Object.prototype.hasOwnProperty.call(p,c)};_.assign=_.TRUST_ES6_POLYFILLS&&typeof Object.assign=="function"?Object.assign:function(p,c){for(var s=1;s<arguments.length;s++){var y=arguments[s];if(y)for(var a in y)_.owns(y,a)&&(p[a]=y[a])}return p};_.polyfill("Object.assign",function(p){return p||_.assign},"es6","es3");_.checkStringArgs=function(p,c,s){if(p==null)throw new TypeError("The 'this' value for String.prototype."+s+" must not be null or undefined");if(c instanceof RegExp)throw new TypeError("First argument to String.prototype."+s+" must not be a regular expression");return p+""};_.polyfill("String.prototype.startsWith",function(p){return p||function(c,s){var y=_.checkStringArgs(this,c,"startsWith");c+="";var a=y.length,g=c.length;s=Math.max(0,Math.min(s|0,y.length));for(var i=0;i<g&&s<a;)if(y[s++]!=c[i++])return!1;return i>=g}},"es6","es3");_.polyfill("Array.prototype.copyWithin",function(p){function c(s){return s=Number(s),s===1/0||s===-1/0?s:s|0}return p||function(s,y,a){var g=this.length;if(s=c(s),y=c(y),a=a===void 0?g:c(a),s=0>s?Math.max(g+s,0):Math.min(s,g),y=0>y?Math.max(g+y,0):Math.min(y,g),a=0>a?Math.max(g+a,0):Math.min(a,g),s<y)for(;y<a;)y in this?this[s++]=this[y++]:(delete this[s++],y++);else for(a=Math.min(a,g+y-s),s+=a-y;a>y;)--a in this?this[--s]=this[a]:delete this[--s];return this}},"es6","es3");_.typedArrayCopyWithin=function(p){return p||Array.prototype.copyWithin};_.polyfill("Int8Array.prototype.copyWithin",_.typedArrayCopyWithin,"es6","es5");_.polyfill("Uint8Array.prototype.copyWithin",_.typedArrayCopyWithin,"es6","es5");_.polyfill("Uint8ClampedArray.prototype.copyWithin",_.typedArrayCopyWithin,"es6","es5");_.polyfill("Int16Array.prototype.copyWithin",_.typedArrayCopyWithin,"es6","es5");_.polyfill("Uint16Array.prototype.copyWithin",_.typedArrayCopyWithin,"es6","es5");_.polyfill("Int32Array.prototype.copyWithin",_.typedArrayCopyWithin,"es6","es5");_.polyfill("Uint32Array.prototype.copyWithin",_.typedArrayCopyWithin,"es6","es5");_.polyfill("Float32Array.prototype.copyWithin",_.typedArrayCopyWithin,"es6","es5");_.polyfill("Float64Array.prototype.copyWithin",_.typedArrayCopyWithin,"es6","es5");var dt=function(){var p=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(p=p||__filename),function(c){function s(e){return t.locateFile?t.locateFile(e,Q):Q+e}function y(e,r,n){var o=r+n;for(n=r;e[n]&&!(n>=o);)++n;if(16<n-r&&e.buffer&&Ot)return Ot.decode(e.subarray(r,n));for(o="";r<n;){var m=e[r++];if(m&128){var b=e[r++]&63;if((m&224)==192)o+=String.fromCharCode((m&31)<<6|b);else{var X=e[r++]&63;m=(m&240)==224?(m&15)<<12|b<<6|X:(m&7)<<18|b<<12|X<<6|e[r++]&63,65536>m?o+=String.fromCharCode(m):(m-=65536,o+=String.fromCharCode(55296|m>>10,56320|m&1023))}}else o+=String.fromCharCode(m)}return o}function a(e,r){return e?y(tt,e,r):""}function g(){var e=_t.buffer;t.HEAP8=q=new Int8Array(e),t.HEAP16=new Int16Array(e),t.HEAP32=et=new Int32Array(e),t.HEAPU8=tt=new Uint8Array(e),t.HEAPU16=new Uint16Array(e),t.HEAPU32=x=new Uint32Array(e),t.HEAPF32=new Float32Array(e),t.HEAPF64=new Float64Array(e)}function i(e){throw t.onAbort&&t.onAbort(e),e="Aborted("+e+")",J(e),Gt=!0,e=new WebAssembly.RuntimeError(e+". Build with -sASSERTIONS for more info."),ot(e),e}function l(e){try{if(e==z&&Z)return new Uint8Array(Z);if(ut)return ut(e);throw"both async and sync fetching of the wasm failed"}catch(r){i(r)}}function h(){if(!Z&&(It||$)){if(typeof fetch=="function"&&!z.startsWith("file://"))return fetch(z,{credentials:"same-origin"}).then(function(e){if(!e.ok)throw"failed to load wasm binary file at '"+z+"'";return e.arrayBuffer()}).catch(function(){return l(z)});if(st)return new Promise(function(e,r){st(z,function(n){e(new Uint8Array(n))},r)})}return Promise.resolve().then(function(){return l(z)})}function I(e){for(;0<e.length;)e.shift()(t)}function C(e){this.excPtr=e,this.ptr=e-24,this.set_type=function(r){x[this.ptr+4>>2]=r},this.get_type=function(){return x[this.ptr+4>>2]},this.set_destructor=function(r){x[this.ptr+8>>2]=r},this.get_destructor=function(){return x[this.ptr+8>>2]},this.set_refcount=function(r){et[this.ptr>>2]=r},this.set_caught=function(r){q[this.ptr+12>>0]=r?1:0},this.get_caught=function(){return q[this.ptr+12>>0]!=0},this.set_rethrown=function(r){q[this.ptr+13>>0]=r?1:0},this.get_rethrown=function(){return q[this.ptr+13>>0]!=0},this.init=function(r,n){this.set_adjusted_ptr(0),this.set_type(r),this.set_destructor(n),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){et[this.ptr>>2]+=1},this.release_ref=function(){var r=et[this.ptr>>2];return et[this.ptr>>2]=r-1,r===1},this.set_adjusted_ptr=function(r){x[this.ptr+16>>2]=r},this.get_adjusted_ptr=function(){return x[this.ptr+16>>2]},this.get_exception_ptr=function(){if(ln(this.get_type()))return x[this.excPtr>>2];var r=this.get_adjusted_ptr();return r!==0?r:this.excPtr}}function K(){function e(){if(!it&&(it=!0,t.calledRun=!0,!Gt)){if(Rt=!0,I(ct),ht(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),t.postRun)for(typeof t.postRun=="function"&&(t.postRun=[t.postRun]);t.postRun.length;)Pt.unshift(t.postRun.shift());I(Pt)}}if(!(0<k)){if(t.preRun)for(typeof t.preRun=="function"&&(t.preRun=[t.preRun]);t.preRun.length;)jt.unshift(t.preRun.shift());I(jt),0<k||(t.setStatus?(t.setStatus("Running..."),setTimeout(function(){setTimeout(function(){t.setStatus("")},1),e()},1)):e())}}function f(){}function T(e){return(e||f).__cache__}function G(e,r){var n=T(r),o=n[e];return o||(o=Object.create((r||f).prototype),o.ptr=e,n[e]=o)}function V(e){if(typeof e=="string"){for(var r=0,n=0;n<e.length;++n){var o=e.charCodeAt(n);127>=o?r++:2047>=o?r+=2:55296<=o&&57343>=o?(r+=4,++n):r+=3}if(r=Array(r+1),n=0,o=r.length,0<o){o=n+o-1;for(var m=0;m<e.length;++m){var b=e.charCodeAt(m);if(55296<=b&&57343>=b){var X=e.charCodeAt(++m);b=65536+((b&1023)<<10)|X&1023}if(127>=b){if(n>=o)break;r[n++]=b}else{if(2047>=b){if(n+1>=o)break;r[n++]=192|b>>6}else{if(65535>=b){if(n+2>=o)break;r[n++]=224|b>>12}else{if(n+3>=o)break;r[n++]=240|b>>18,r[n++]=128|b>>12&63}r[n++]=128|b>>6&63}r[n++]=128|b&63}}r[n]=0}return e=d.alloc(r,q),d.copy(r,q,e),e}return e}function at(e){if(typeof e=="object"){var r=d.alloc(e,q);return d.copy(e,q,r),r}return e}function H(){throw"cannot construct a VoidPtr, no constructor in IDL"}function B(){this.ptr=Mt(),T(B)[this.ptr]=this}function w(){this.ptr=Ft(),T(w)[this.ptr]=this}function Y(){this.ptr=wt(),T(Y)[this.ptr]=this}function A(){this.ptr=Vt(),T(A)[this.ptr]=this}function E(){this.ptr=Jt(),T(E)[this.ptr]=this}function j(){this.ptr=ne(),T(j)[this.ptr]=this}function P(){this.ptr=ae(),T(P)[this.ptr]=this}function O(){this.ptr=ce(),T(O)[this.ptr]=this}function W(){this.ptr=de(),T(W)[this.ptr]=this}function v(){throw"cannot construct a Status, no constructor in IDL"}function R(){this.ptr=Ie(),T(R)[this.ptr]=this}function S(){this.ptr=Ge(),T(S)[this.ptr]=this}function M(){this.ptr=Re(),T(M)[this.ptr]=this}function N(){this.ptr=Ue(),T(N)[this.ptr]=this}function U(){this.ptr=we(),T(U)[this.ptr]=this}function F(){this.ptr=We(),T(F)[this.ptr]=this}function L(){this.ptr=He(),T(L)[this.ptr]=this}function D(){this.ptr=Ke(),T(D)[this.ptr]=this}function u(){this.ptr=_r(),T(u)[this.ptr]=this}c=c===void 0?{}:c;var t=typeof c<"u"?c:{},ht,ot;t.ready=new Promise(function(e,r){ht=e,ot=r});var At=!1,Tt=!1;t.onRuntimeInitialized=function(){At=!0,Tt&&typeof t.onModuleLoaded=="function"&&t.onModuleLoaded(t)},t.onModuleParsed=function(){Tt=!0,At&&typeof t.onModuleLoaded=="function"&&t.onModuleLoaded(t)},t.isVersionSupported=function(e){return typeof e!="string"?!1:(e=e.split("."),2>e.length||3<e.length?!1:e[0]==1&&0<=e[1]&&5>=e[1]?!0:!(e[0]!=0||10<e[1]))};var Dt=Object.assign({},t),It=typeof window=="object",$=typeof importScripts=="function",gt=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",Q="";if(gt){var vt=fn("fs"),pt=fn("path");Q=$?pt.dirname(Q)+"/":__dirname+"/";var Et=function(e,r){return e=e.startsWith("file://")?new URL(e):pt.normalize(e),vt.readFileSync(e,r?void 0:"utf8")},ut=function(e){return e=Et(e,!0),e.buffer||(e=new Uint8Array(e)),e},st=function(e,r,n){e=e.startsWith("file://")?new URL(e):pt.normalize(e),vt.readFile(e,function(o,m){o?n(o):r(m.buffer)})};1<process.argv.length&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),t.inspect=function(){return"[Emscripten Module object]"}}else(It||$)&&($?Q=self.location.href:typeof document<"u"&&document.currentScript&&(Q=document.currentScript.src),p&&(Q=p),Q=Q.indexOf("blob:")!==0?Q.substr(0,Q.replace(/[?#].*/,"").lastIndexOf("/")+1):"",Et=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},$&&(ut=function(e){var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),st=function(e,r,n){var o=new XMLHttpRequest;o.open("GET",e,!0),o.responseType="arraybuffer",o.onload=function(){o.status==200||o.status==0&&o.response?r(o.response):n()},o.onerror=n,o.send(null)});var dn=t.print||console.log.bind(console),J=t.printErr||console.warn.bind(console);Object.assign(t,Dt),Dt=null;var Z;t.wasmBinary&&(Z=t.wasmBinary),typeof WebAssembly!="object"&&i("no native wasm support detected");var _t,Gt=!1,Ot=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,q,tt,et,x,jt=[],ct=[],Pt=[],Rt=!1,k=0,yt=null,rt=null,z="draco_decoder.wasm";z.startsWith("data:application/octet-stream;base64,")||(z=s(z));var bn=0,hn=[null,[],[]],An={b:function(e,r,n){throw new C(e).init(r,n),bn++,e},a:function(){i("")},g:function(e,r,n){tt.copyWithin(e,r,r+n)},e:function(e){var r=tt.length;if(e>>>=0,2147483648<e)return!1;for(var n=1;4>=n;n*=2){var o=r*(1+.2/n);o=Math.min(o,e+100663296);var m=Math;o=Math.max(e,o),m=m.min.call(m,2147483648,o+(65536-o%65536)%65536);t:{o=_t.buffer;try{_t.grow(m-o.byteLength+65535>>>16),g();var b=1;break t}catch{}b=void 0}if(b)return!0}return!1},f:function(e){return 52},d:function(e,r,n,o,m){return 70},c:function(e,r,n,o){for(var m=0,b=0;b<n;b++){var X=x[r>>2],mn=x[r+4>>2];r+=8;for(var lt=0;lt<mn;lt++){var mt=tt[X+lt],ft=hn[e];mt===0||mt===10?((e===1?dn:J)(y(ft,0)),ft.length=0):ft.push(mt)}m+=mn}return x[o>>2]=m,0}};(function(){function e(m,b){t.asm=m.exports,_t=t.asm.h,g(),ct.unshift(t.asm.i),k--,t.monitorRunDependencies&&t.monitorRunDependencies(k),k==0&&(yt!==null&&(clearInterval(yt),yt=null),rt&&(m=rt,rt=null,m()))}function r(m){e(m.instance)}function n(m){return h().then(function(b){return WebAssembly.instantiate(b,o)}).then(function(b){return b}).then(m,function(b){J("failed to asynchronously prepare wasm: "+b),i(b)})}var o={a:An};if(k++,t.monitorRunDependencies&&t.monitorRunDependencies(k),t.instantiateWasm)try{return t.instantiateWasm(o,e)}catch(m){J("Module.instantiateWasm callback failed with error: "+m),ot(m)}return function(){return Z||typeof WebAssembly.instantiateStreaming!="function"||z.startsWith("data:application/octet-stream;base64,")||z.startsWith("file://")||gt||typeof fetch!="function"?n(r):fetch(z,{credentials:"same-origin"}).then(function(m){return WebAssembly.instantiateStreaming(m,o).then(r,function(b){return J("wasm streaming compile failed: "+b),J("falling back to ArrayBuffer instantiation"),n(r)})})}().catch(ot),{}})();var St=t._emscripten_bind_VoidPtr___destroy___0=function(){return(St=t._emscripten_bind_VoidPtr___destroy___0=t.asm.k).apply(null,arguments)},Mt=t._emscripten_bind_DecoderBuffer_DecoderBuffer_0=function(){return(Mt=t._emscripten_bind_DecoderBuffer_DecoderBuffer_0=t.asm.l).apply(null,arguments)},Nt=t._emscripten_bind_DecoderBuffer_Init_2=function(){return(Nt=t._emscripten_bind_DecoderBuffer_Init_2=t.asm.m).apply(null,arguments)},Ut=t._emscripten_bind_DecoderBuffer___destroy___0=function(){return(Ut=t._emscripten_bind_DecoderBuffer___destroy___0=t.asm.n).apply(null,arguments)},Ft=t._emscripten_bind_AttributeTransformData_AttributeTransformData_0=function(){return(Ft=t._emscripten_bind_AttributeTransformData_AttributeTransformData_0=t.asm.o).apply(null,arguments)},Lt=t._emscripten_bind_AttributeTransformData_transform_type_0=function(){return(Lt=t._emscripten_bind_AttributeTransformData_transform_type_0=t.asm.p).apply(null,arguments)},Ct=t._emscripten_bind_AttributeTransformData___destroy___0=function(){return(Ct=t._emscripten_bind_AttributeTransformData___destroy___0=t.asm.q).apply(null,arguments)},wt=t._emscripten_bind_GeometryAttribute_GeometryAttribute_0=function(){return(wt=t._emscripten_bind_GeometryAttribute_GeometryAttribute_0=t.asm.r).apply(null,arguments)},zt=t._emscripten_bind_GeometryAttribute___destroy___0=function(){return(zt=t._emscripten_bind_GeometryAttribute___destroy___0=t.asm.s).apply(null,arguments)},Vt=t._emscripten_bind_PointAttribute_PointAttribute_0=function(){return(Vt=t._emscripten_bind_PointAttribute_PointAttribute_0=t.asm.t).apply(null,arguments)},Bt=t._emscripten_bind_PointAttribute_size_0=function(){return(Bt=t._emscripten_bind_PointAttribute_size_0=t.asm.u).apply(null,arguments)},Wt=t._emscripten_bind_PointAttribute_GetAttributeTransformData_0=function(){return(Wt=t._emscripten_bind_PointAttribute_GetAttributeTransformData_0=t.asm.v).apply(null,arguments)},Qt=t._emscripten_bind_PointAttribute_attribute_type_0=function(){return(Qt=t._emscripten_bind_PointAttribute_attribute_type_0=t.asm.w).apply(null,arguments)},xt=t._emscripten_bind_PointAttribute_data_type_0=function(){return(xt=t._emscripten_bind_PointAttribute_data_type_0=t.asm.x).apply(null,arguments)},Yt=t._emscripten_bind_PointAttribute_num_components_0=function(){return(Yt=t._emscripten_bind_PointAttribute_num_components_0=t.asm.y).apply(null,arguments)},Ht=t._emscripten_bind_PointAttribute_normalized_0=function(){return(Ht=t._emscripten_bind_PointAttribute_normalized_0=t.asm.z).apply(null,arguments)},qt=t._emscripten_bind_PointAttribute_byte_stride_0=function(){return(qt=t._emscripten_bind_PointAttribute_byte_stride_0=t.asm.A).apply(null,arguments)},kt=t._emscripten_bind_PointAttribute_byte_offset_0=function(){return(kt=t._emscripten_bind_PointAttribute_byte_offset_0=t.asm.B).apply(null,arguments)},Xt=t._emscripten_bind_PointAttribute_unique_id_0=function(){return(Xt=t._emscripten_bind_PointAttribute_unique_id_0=t.asm.C).apply(null,arguments)},Kt=t._emscripten_bind_PointAttribute___destroy___0=function(){return(Kt=t._emscripten_bind_PointAttribute___destroy___0=t.asm.D).apply(null,arguments)},Jt=t._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=function(){return(Jt=t._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=t.asm.E).apply(null,arguments)},$t=t._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=function(){return($t=t._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=t.asm.F).apply(null,arguments)},Zt=t._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=function(){return(Zt=t._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=t.asm.G).apply(null,arguments)},te=t._emscripten_bind_AttributeQuantizationTransform_min_value_1=function(){return(te=t._emscripten_bind_AttributeQuantizationTransform_min_value_1=t.asm.H).apply(null,arguments)},ee=t._emscripten_bind_AttributeQuantizationTransform_range_0=function(){return(ee=t._emscripten_bind_AttributeQuantizationTransform_range_0=t.asm.I).apply(null,arguments)},re=t._emscripten_bind_AttributeQuantizationTransform___destroy___0=function(){return(re=t._emscripten_bind_AttributeQuantizationTransform___destroy___0=t.asm.J).apply(null,arguments)},ne=t._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=function(){return(ne=t._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=t.asm.K).apply(null,arguments)},oe=t._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=function(){return(oe=t._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=t.asm.L).apply(null,arguments)},_e=t._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=function(){return(_e=t._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=t.asm.M).apply(null,arguments)},ie=t._emscripten_bind_AttributeOctahedronTransform___destroy___0=function(){return(ie=t._emscripten_bind_AttributeOctahedronTransform___destroy___0=t.asm.N).apply(null,arguments)},ae=t._emscripten_bind_PointCloud_PointCloud_0=function(){return(ae=t._emscripten_bind_PointCloud_PointCloud_0=t.asm.O).apply(null,arguments)},pe=t._emscripten_bind_PointCloud_num_attributes_0=function(){return(pe=t._emscripten_bind_PointCloud_num_attributes_0=t.asm.P).apply(null,arguments)},ue=t._emscripten_bind_PointCloud_num_points_0=function(){return(ue=t._emscripten_bind_PointCloud_num_points_0=t.asm.Q).apply(null,arguments)},se=t._emscripten_bind_PointCloud___destroy___0=function(){return(se=t._emscripten_bind_PointCloud___destroy___0=t.asm.R).apply(null,arguments)},ce=t._emscripten_bind_Mesh_Mesh_0=function(){return(ce=t._emscripten_bind_Mesh_Mesh_0=t.asm.S).apply(null,arguments)},ye=t._emscripten_bind_Mesh_num_faces_0=function(){return(ye=t._emscripten_bind_Mesh_num_faces_0=t.asm.T).apply(null,arguments)},le=t._emscripten_bind_Mesh_num_attributes_0=function(){return(le=t._emscripten_bind_Mesh_num_attributes_0=t.asm.U).apply(null,arguments)},me=t._emscripten_bind_Mesh_num_points_0=function(){return(me=t._emscripten_bind_Mesh_num_points_0=t.asm.V).apply(null,arguments)},fe=t._emscripten_bind_Mesh___destroy___0=function(){return(fe=t._emscripten_bind_Mesh___destroy___0=t.asm.W).apply(null,arguments)},de=t._emscripten_bind_Metadata_Metadata_0=function(){return(de=t._emscripten_bind_Metadata_Metadata_0=t.asm.X).apply(null,arguments)},be=t._emscripten_bind_Metadata___destroy___0=function(){return(be=t._emscripten_bind_Metadata___destroy___0=t.asm.Y).apply(null,arguments)},he=t._emscripten_bind_Status_code_0=function(){return(he=t._emscripten_bind_Status_code_0=t.asm.Z).apply(null,arguments)},Ae=t._emscripten_bind_Status_ok_0=function(){return(Ae=t._emscripten_bind_Status_ok_0=t.asm._).apply(null,arguments)},Te=t._emscripten_bind_Status_error_msg_0=function(){return(Te=t._emscripten_bind_Status_error_msg_0=t.asm.$).apply(null,arguments)},De=t._emscripten_bind_Status___destroy___0=function(){return(De=t._emscripten_bind_Status___destroy___0=t.asm.aa).apply(null,arguments)},Ie=t._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=function(){return(Ie=t._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=t.asm.ba).apply(null,arguments)},ge=t._emscripten_bind_DracoFloat32Array_GetValue_1=function(){return(ge=t._emscripten_bind_DracoFloat32Array_GetValue_1=t.asm.ca).apply(null,arguments)},ve=t._emscripten_bind_DracoFloat32Array_size_0=function(){return(ve=t._emscripten_bind_DracoFloat32Array_size_0=t.asm.da).apply(null,arguments)},Ee=t._emscripten_bind_DracoFloat32Array___destroy___0=function(){return(Ee=t._emscripten_bind_DracoFloat32Array___destroy___0=t.asm.ea).apply(null,arguments)},Ge=t._emscripten_bind_DracoInt8Array_DracoInt8Array_0=function(){return(Ge=t._emscripten_bind_DracoInt8Array_DracoInt8Array_0=t.asm.fa).apply(null,arguments)},Oe=t._emscripten_bind_DracoInt8Array_GetValue_1=function(){return(Oe=t._emscripten_bind_DracoInt8Array_GetValue_1=t.asm.ga).apply(null,arguments)},je=t._emscripten_bind_DracoInt8Array_size_0=function(){return(je=t._emscripten_bind_DracoInt8Array_size_0=t.asm.ha).apply(null,arguments)},Pe=t._emscripten_bind_DracoInt8Array___destroy___0=function(){return(Pe=t._emscripten_bind_DracoInt8Array___destroy___0=t.asm.ia).apply(null,arguments)},Re=t._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=function(){return(Re=t._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=t.asm.ja).apply(null,arguments)},Se=t._emscripten_bind_DracoUInt8Array_GetValue_1=function(){return(Se=t._emscripten_bind_DracoUInt8Array_GetValue_1=t.asm.ka).apply(null,arguments)},Me=t._emscripten_bind_DracoUInt8Array_size_0=function(){return(Me=t._emscripten_bind_DracoUInt8Array_size_0=t.asm.la).apply(null,arguments)},Ne=t._emscripten_bind_DracoUInt8Array___destroy___0=function(){return(Ne=t._emscripten_bind_DracoUInt8Array___destroy___0=t.asm.ma).apply(null,arguments)},Ue=t._emscripten_bind_DracoInt16Array_DracoInt16Array_0=function(){return(Ue=t._emscripten_bind_DracoInt16Array_DracoInt16Array_0=t.asm.na).apply(null,arguments)},Fe=t._emscripten_bind_DracoInt16Array_GetValue_1=function(){return(Fe=t._emscripten_bind_DracoInt16Array_GetValue_1=t.asm.oa).apply(null,arguments)},Le=t._emscripten_bind_DracoInt16Array_size_0=function(){return(Le=t._emscripten_bind_DracoInt16Array_size_0=t.asm.pa).apply(null,arguments)},Ce=t._emscripten_bind_DracoInt16Array___destroy___0=function(){return(Ce=t._emscripten_bind_DracoInt16Array___destroy___0=t.asm.qa).apply(null,arguments)},we=t._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=function(){return(we=t._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=t.asm.ra).apply(null,arguments)},ze=t._emscripten_bind_DracoUInt16Array_GetValue_1=function(){return(ze=t._emscripten_bind_DracoUInt16Array_GetValue_1=t.asm.sa).apply(null,arguments)},Ve=t._emscripten_bind_DracoUInt16Array_size_0=function(){return(Ve=t._emscripten_bind_DracoUInt16Array_size_0=t.asm.ta).apply(null,arguments)},Be=t._emscripten_bind_DracoUInt16Array___destroy___0=function(){return(Be=t._emscripten_bind_DracoUInt16Array___destroy___0=t.asm.ua).apply(null,arguments)},We=t._emscripten_bind_DracoInt32Array_DracoInt32Array_0=function(){return(We=t._emscripten_bind_DracoInt32Array_DracoInt32Array_0=t.asm.va).apply(null,arguments)},Qe=t._emscripten_bind_DracoInt32Array_GetValue_1=function(){return(Qe=t._emscripten_bind_DracoInt32Array_GetValue_1=t.asm.wa).apply(null,arguments)},xe=t._emscripten_bind_DracoInt32Array_size_0=function(){return(xe=t._emscripten_bind_DracoInt32Array_size_0=t.asm.xa).apply(null,arguments)},Ye=t._emscripten_bind_DracoInt32Array___destroy___0=function(){return(Ye=t._emscripten_bind_DracoInt32Array___destroy___0=t.asm.ya).apply(null,arguments)},He=t._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=function(){return(He=t._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=t.asm.za).apply(null,arguments)},qe=t._emscripten_bind_DracoUInt32Array_GetValue_1=function(){return(qe=t._emscripten_bind_DracoUInt32Array_GetValue_1=t.asm.Aa).apply(null,arguments)},ke=t._emscripten_bind_DracoUInt32Array_size_0=function(){return(ke=t._emscripten_bind_DracoUInt32Array_size_0=t.asm.Ba).apply(null,arguments)},Xe=t._emscripten_bind_DracoUInt32Array___destroy___0=function(){return(Xe=t._emscripten_bind_DracoUInt32Array___destroy___0=t.asm.Ca).apply(null,arguments)},Ke=t._emscripten_bind_MetadataQuerier_MetadataQuerier_0=function(){return(Ke=t._emscripten_bind_MetadataQuerier_MetadataQuerier_0=t.asm.Da).apply(null,arguments)},Je=t._emscripten_bind_MetadataQuerier_HasEntry_2=function(){return(Je=t._emscripten_bind_MetadataQuerier_HasEntry_2=t.asm.Ea).apply(null,arguments)},$e=t._emscripten_bind_MetadataQuerier_GetIntEntry_2=function(){return($e=t._emscripten_bind_MetadataQuerier_GetIntEntry_2=t.asm.Fa).apply(null,arguments)},Ze=t._emscripten_bind_MetadataQuerier_GetIntEntryArray_3=function(){return(Ze=t._emscripten_bind_MetadataQuerier_GetIntEntryArray_3=t.asm.Ga).apply(null,arguments)},tr=t._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=function(){return(tr=t._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=t.asm.Ha).apply(null,arguments)},er=t._emscripten_bind_MetadataQuerier_GetStringEntry_2=function(){return(er=t._emscripten_bind_MetadataQuerier_GetStringEntry_2=t.asm.Ia).apply(null,arguments)},rr=t._emscripten_bind_MetadataQuerier_NumEntries_1=function(){return(rr=t._emscripten_bind_MetadataQuerier_NumEntries_1=t.asm.Ja).apply(null,arguments)},nr=t._emscripten_bind_MetadataQuerier_GetEntryName_2=function(){return(nr=t._emscripten_bind_MetadataQuerier_GetEntryName_2=t.asm.Ka).apply(null,arguments)},or=t._emscripten_bind_MetadataQuerier___destroy___0=function(){return(or=t._emscripten_bind_MetadataQuerier___destroy___0=t.asm.La).apply(null,arguments)},_r=t._emscripten_bind_Decoder_Decoder_0=function(){return(_r=t._emscripten_bind_Decoder_Decoder_0=t.asm.Ma).apply(null,arguments)},ir=t._emscripten_bind_Decoder_DecodeArrayToPointCloud_3=function(){return(ir=t._emscripten_bind_Decoder_DecodeArrayToPointCloud_3=t.asm.Na).apply(null,arguments)},ar=t._emscripten_bind_Decoder_DecodeArrayToMesh_3=function(){return(ar=t._emscripten_bind_Decoder_DecodeArrayToMesh_3=t.asm.Oa).apply(null,arguments)},pr=t._emscripten_bind_Decoder_GetAttributeId_2=function(){return(pr=t._emscripten_bind_Decoder_GetAttributeId_2=t.asm.Pa).apply(null,arguments)},ur=t._emscripten_bind_Decoder_GetAttributeIdByName_2=function(){return(ur=t._emscripten_bind_Decoder_GetAttributeIdByName_2=t.asm.Qa).apply(null,arguments)},sr=t._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=function(){return(sr=t._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=t.asm.Ra).apply(null,arguments)},cr=t._emscripten_bind_Decoder_GetAttribute_2=function(){return(cr=t._emscripten_bind_Decoder_GetAttribute_2=t.asm.Sa).apply(null,arguments)},yr=t._emscripten_bind_Decoder_GetAttributeByUniqueId_2=function(){return(yr=t._emscripten_bind_Decoder_GetAttributeByUniqueId_2=t.asm.Ta).apply(null,arguments)},lr=t._emscripten_bind_Decoder_GetMetadata_1=function(){return(lr=t._emscripten_bind_Decoder_GetMetadata_1=t.asm.Ua).apply(null,arguments)},mr=t._emscripten_bind_Decoder_GetAttributeMetadata_2=function(){return(mr=t._emscripten_bind_Decoder_GetAttributeMetadata_2=t.asm.Va).apply(null,arguments)},fr=t._emscripten_bind_Decoder_GetFaceFromMesh_3=function(){return(fr=t._emscripten_bind_Decoder_GetFaceFromMesh_3=t.asm.Wa).apply(null,arguments)},dr=t._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=function(){return(dr=t._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=t.asm.Xa).apply(null,arguments)},br=t._emscripten_bind_Decoder_GetTrianglesUInt16Array_3=function(){return(br=t._emscripten_bind_Decoder_GetTrianglesUInt16Array_3=t.asm.Ya).apply(null,arguments)},hr=t._emscripten_bind_Decoder_GetTrianglesUInt32Array_3=function(){return(hr=t._emscripten_bind_Decoder_GetTrianglesUInt32Array_3=t.asm.Za).apply(null,arguments)},Ar=t._emscripten_bind_Decoder_GetAttributeFloat_3=function(){return(Ar=t._emscripten_bind_Decoder_GetAttributeFloat_3=t.asm._a).apply(null,arguments)},Tr=t._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=function(){return(Tr=t._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=t.asm.$a).apply(null,arguments)},Dr=t._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=function(){return(Dr=t._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=t.asm.ab).apply(null,arguments)},Ir=t._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=function(){return(Ir=t._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=t.asm.bb).apply(null,arguments)},gr=t._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=function(){return(gr=t._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=t.asm.cb).apply(null,arguments)},vr=t._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=function(){return(vr=t._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=t.asm.db).apply(null,arguments)},Er=t._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=function(){return(Er=t._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=t.asm.eb).apply(null,arguments)},Gr=t._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=function(){return(Gr=t._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=t.asm.fb).apply(null,arguments)},Or=t._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=function(){return(Or=t._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=t.asm.gb).apply(null,arguments)},jr=t._emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5=function(){return(jr=t._emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5=t.asm.hb).apply(null,arguments)},Pr=t._emscripten_bind_Decoder_SkipAttributeTransform_1=function(){return(Pr=t._emscripten_bind_Decoder_SkipAttributeTransform_1=t.asm.ib).apply(null,arguments)},Rr=t._emscripten_bind_Decoder_GetEncodedGeometryType_Deprecated_1=function(){return(Rr=t._emscripten_bind_Decoder_GetEncodedGeometryType_Deprecated_1=t.asm.jb).apply(null,arguments)},Sr=t._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=function(){return(Sr=t._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=t.asm.kb).apply(null,arguments)},Mr=t._emscripten_bind_Decoder_DecodeBufferToMesh_2=function(){return(Mr=t._emscripten_bind_Decoder_DecodeBufferToMesh_2=t.asm.lb).apply(null,arguments)},Nr=t._emscripten_bind_Decoder___destroy___0=function(){return(Nr=t._emscripten_bind_Decoder___destroy___0=t.asm.mb).apply(null,arguments)},Ur=t._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=function(){return(Ur=t._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=t.asm.nb).apply(null,arguments)},Fr=t._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=function(){return(Fr=t._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=t.asm.ob).apply(null,arguments)},Lr=t._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=function(){return(Lr=t._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=t.asm.pb).apply(null,arguments)},Cr=t._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=function(){return(Cr=t._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=t.asm.qb).apply(null,arguments)},wr=t._emscripten_enum_draco_GeometryAttribute_Type_INVALID=function(){return(wr=t._emscripten_enum_draco_GeometryAttribute_Type_INVALID=t.asm.rb).apply(null,arguments)},zr=t._emscripten_enum_draco_GeometryAttribute_Type_POSITION=function(){return(zr=t._emscripten_enum_draco_GeometryAttribute_Type_POSITION=t.asm.sb).apply(null,arguments)},Vr=t._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=function(){return(Vr=t._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=t.asm.tb).apply(null,arguments)},Br=t._emscripten_enum_draco_GeometryAttribute_Type_COLOR=function(){return(Br=t._emscripten_enum_draco_GeometryAttribute_Type_COLOR=t.asm.ub).apply(null,arguments)},Wr=t._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=function(){return(Wr=t._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=t.asm.vb).apply(null,arguments)},Qr=t._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=function(){return(Qr=t._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=t.asm.wb).apply(null,arguments)},xr=t._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=function(){return(xr=t._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=t.asm.xb).apply(null,arguments)},Yr=t._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=function(){return(Yr=t._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=t.asm.yb).apply(null,arguments)},Hr=t._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=function(){return(Hr=t._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=t.asm.zb).apply(null,arguments)},qr=t._emscripten_enum_draco_DataType_DT_INVALID=function(){return(qr=t._emscripten_enum_draco_DataType_DT_INVALID=t.asm.Ab).apply(null,arguments)},kr=t._emscripten_enum_draco_DataType_DT_INT8=function(){return(kr=t._emscripten_enum_draco_DataType_DT_INT8=t.asm.Bb).apply(null,arguments)},Xr=t._emscripten_enum_draco_DataType_DT_UINT8=function(){return(Xr=t._emscripten_enum_draco_DataType_DT_UINT8=t.asm.Cb).apply(null,arguments)},Kr=t._emscripten_enum_draco_DataType_DT_INT16=function(){return(Kr=t._emscripten_enum_draco_DataType_DT_INT16=t.asm.Db).apply(null,arguments)},Jr=t._emscripten_enum_draco_DataType_DT_UINT16=function(){return(Jr=t._emscripten_enum_draco_DataType_DT_UINT16=t.asm.Eb).apply(null,arguments)},$r=t._emscripten_enum_draco_DataType_DT_INT32=function(){return($r=t._emscripten_enum_draco_DataType_DT_INT32=t.asm.Fb).apply(null,arguments)},Zr=t._emscripten_enum_draco_DataType_DT_UINT32=function(){return(Zr=t._emscripten_enum_draco_DataType_DT_UINT32=t.asm.Gb).apply(null,arguments)},tn=t._emscripten_enum_draco_DataType_DT_INT64=function(){return(tn=t._emscripten_enum_draco_DataType_DT_INT64=t.asm.Hb).apply(null,arguments)},en=t._emscripten_enum_draco_DataType_DT_UINT64=function(){return(en=t._emscripten_enum_draco_DataType_DT_UINT64=t.asm.Ib).apply(null,arguments)},rn=t._emscripten_enum_draco_DataType_DT_FLOAT32=function(){return(rn=t._emscripten_enum_draco_DataType_DT_FLOAT32=t.asm.Jb).apply(null,arguments)},nn=t._emscripten_enum_draco_DataType_DT_FLOAT64=function(){return(nn=t._emscripten_enum_draco_DataType_DT_FLOAT64=t.asm.Kb).apply(null,arguments)},on=t._emscripten_enum_draco_DataType_DT_BOOL=function(){return(on=t._emscripten_enum_draco_DataType_DT_BOOL=t.asm.Lb).apply(null,arguments)},_n=t._emscripten_enum_draco_DataType_DT_TYPES_COUNT=function(){return(_n=t._emscripten_enum_draco_DataType_DT_TYPES_COUNT=t.asm.Mb).apply(null,arguments)},an=t._emscripten_enum_draco_StatusCode_OK=function(){return(an=t._emscripten_enum_draco_StatusCode_OK=t.asm.Nb).apply(null,arguments)},pn=t._emscripten_enum_draco_StatusCode_DRACO_ERROR=function(){return(pn=t._emscripten_enum_draco_StatusCode_DRACO_ERROR=t.asm.Ob).apply(null,arguments)},un=t._emscripten_enum_draco_StatusCode_IO_ERROR=function(){return(un=t._emscripten_enum_draco_StatusCode_IO_ERROR=t.asm.Pb).apply(null,arguments)},sn=t._emscripten_enum_draco_StatusCode_INVALID_PARAMETER=function(){return(sn=t._emscripten_enum_draco_StatusCode_INVALID_PARAMETER=t.asm.Qb).apply(null,arguments)},cn=t._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=function(){return(cn=t._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=t.asm.Rb).apply(null,arguments)},yn=t._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=function(){return(yn=t._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=t.asm.Sb).apply(null,arguments)};t._malloc=function(){return(t._malloc=t.asm.Tb).apply(null,arguments)},t._free=function(){return(t._free=t.asm.Ub).apply(null,arguments)};var ln=function(){return(ln=t.asm.Vb).apply(null,arguments)};t.___start_em_js=15856,t.___stop_em_js=15954;var it;if(rt=function e(){it||K(),it||(rt=e)},t.preInit)for(typeof t.preInit=="function"&&(t.preInit=[t.preInit]);0<t.preInit.length;)t.preInit.pop()();K(),f.prototype=Object.create(f.prototype),f.prototype.constructor=f,f.prototype.__class__=f,f.__cache__={},t.WrapperObject=f,t.getCache=T,t.wrapPointer=G,t.castObject=function(e,r){return G(e.ptr,r)},t.NULL=G(0),t.destroy=function(e){if(!e.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";e.__destroy__(),delete T(e.__class__)[e.ptr]},t.compare=function(e,r){return e.ptr===r.ptr},t.getPointer=function(e){return e.ptr},t.getClass=function(e){return e.__class__};var d={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(d.needed){for(var e=0;e<d.temps.length;e++)t._free(d.temps[e]);d.temps.length=0,t._free(d.buffer),d.buffer=0,d.size+=d.needed,d.needed=0}d.buffer||(d.size+=128,d.buffer=t._malloc(d.size),d.buffer||i(void 0)),d.pos=0},alloc:function(e,r){return d.buffer||i(void 0),e=e.length*r.BYTES_PER_ELEMENT,e=e+7&-8,d.pos+e>=d.size?(0<e||i(void 0),d.needed+=e,r=t._malloc(e),d.temps.push(r)):(r=d.buffer+d.pos,d.pos+=e),r},copy:function(e,r,n){switch(n>>>=0,r.BYTES_PER_ELEMENT){case 2:n>>>=1;break;case 4:n>>>=2;break;case 8:n>>>=3}for(var o=0;o<e.length;o++)r[n+o]=e[o]}};return H.prototype=Object.create(f.prototype),H.prototype.constructor=H,H.prototype.__class__=H,H.__cache__={},t.VoidPtr=H,H.prototype.__destroy__=H.prototype.__destroy__=function(){St(this.ptr)},B.prototype=Object.create(f.prototype),B.prototype.constructor=B,B.prototype.__class__=B,B.__cache__={},t.DecoderBuffer=B,B.prototype.Init=B.prototype.Init=function(e,r){var n=this.ptr;d.prepare(),typeof e=="object"&&(e=at(e)),r&&typeof r=="object"&&(r=r.ptr),Nt(n,e,r)},B.prototype.__destroy__=B.prototype.__destroy__=function(){Ut(this.ptr)},w.prototype=Object.create(f.prototype),w.prototype.constructor=w,w.prototype.__class__=w,w.__cache__={},t.AttributeTransformData=w,w.prototype.transform_type=w.prototype.transform_type=function(){return Lt(this.ptr)},w.prototype.__destroy__=w.prototype.__destroy__=function(){Ct(this.ptr)},Y.prototype=Object.create(f.prototype),Y.prototype.constructor=Y,Y.prototype.__class__=Y,Y.__cache__={},t.GeometryAttribute=Y,Y.prototype.__destroy__=Y.prototype.__destroy__=function(){zt(this.ptr)},A.prototype=Object.create(f.prototype),A.prototype.constructor=A,A.prototype.__class__=A,A.__cache__={},t.PointAttribute=A,A.prototype.size=A.prototype.size=function(){return Bt(this.ptr)},A.prototype.GetAttributeTransformData=A.prototype.GetAttributeTransformData=function(){return G(Wt(this.ptr),w)},A.prototype.attribute_type=A.prototype.attribute_type=function(){return Qt(this.ptr)},A.prototype.data_type=A.prototype.data_type=function(){return xt(this.ptr)},A.prototype.num_components=A.prototype.num_components=function(){return Yt(this.ptr)},A.prototype.normalized=A.prototype.normalized=function(){return!!Ht(this.ptr)},A.prototype.byte_stride=A.prototype.byte_stride=function(){return qt(this.ptr)},A.prototype.byte_offset=A.prototype.byte_offset=function(){return kt(this.ptr)},A.prototype.unique_id=A.prototype.unique_id=function(){return Xt(this.ptr)},A.prototype.__destroy__=A.prototype.__destroy__=function(){Kt(this.ptr)},E.prototype=Object.create(f.prototype),E.prototype.constructor=E,E.prototype.__class__=E,E.__cache__={},t.AttributeQuantizationTransform=E,E.prototype.InitFromAttribute=E.prototype.InitFromAttribute=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),!!$t(r,e)},E.prototype.quantization_bits=E.prototype.quantization_bits=function(){return Zt(this.ptr)},E.prototype.min_value=E.prototype.min_value=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),te(r,e)},E.prototype.range=E.prototype.range=function(){return ee(this.ptr)},E.prototype.__destroy__=E.prototype.__destroy__=function(){re(this.ptr)},j.prototype=Object.create(f.prototype),j.prototype.constructor=j,j.prototype.__class__=j,j.__cache__={},t.AttributeOctahedronTransform=j,j.prototype.InitFromAttribute=j.prototype.InitFromAttribute=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),!!oe(r,e)},j.prototype.quantization_bits=j.prototype.quantization_bits=function(){return _e(this.ptr)},j.prototype.__destroy__=j.prototype.__destroy__=function(){ie(this.ptr)},P.prototype=Object.create(f.prototype),P.prototype.constructor=P,P.prototype.__class__=P,P.__cache__={},t.PointCloud=P,P.prototype.num_attributes=P.prototype.num_attributes=function(){return pe(this.ptr)},P.prototype.num_points=P.prototype.num_points=function(){return ue(this.ptr)},P.prototype.__destroy__=P.prototype.__destroy__=function(){se(this.ptr)},O.prototype=Object.create(f.prototype),O.prototype.constructor=O,O.prototype.__class__=O,O.__cache__={},t.Mesh=O,O.prototype.num_faces=O.prototype.num_faces=function(){return ye(this.ptr)},O.prototype.num_attributes=O.prototype.num_attributes=function(){return le(this.ptr)},O.prototype.num_points=O.prototype.num_points=function(){return me(this.ptr)},O.prototype.__destroy__=O.prototype.__destroy__=function(){fe(this.ptr)},W.prototype=Object.create(f.prototype),W.prototype.constructor=W,W.prototype.__class__=W,W.__cache__={},t.Metadata=W,W.prototype.__destroy__=W.prototype.__destroy__=function(){be(this.ptr)},v.prototype=Object.create(f.prototype),v.prototype.constructor=v,v.prototype.__class__=v,v.__cache__={},t.Status=v,v.prototype.code=v.prototype.code=function(){return he(this.ptr)},v.prototype.ok=v.prototype.ok=function(){return!!Ae(this.ptr)},v.prototype.error_msg=v.prototype.error_msg=function(){return a(Te(this.ptr))},v.prototype.__destroy__=v.prototype.__destroy__=function(){De(this.ptr)},R.prototype=Object.create(f.prototype),R.prototype.constructor=R,R.prototype.__class__=R,R.__cache__={},t.DracoFloat32Array=R,R.prototype.GetValue=R.prototype.GetValue=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),ge(r,e)},R.prototype.size=R.prototype.size=function(){return ve(this.ptr)},R.prototype.__destroy__=R.prototype.__destroy__=function(){Ee(this.ptr)},S.prototype=Object.create(f.prototype),S.prototype.constructor=S,S.prototype.__class__=S,S.__cache__={},t.DracoInt8Array=S,S.prototype.GetValue=S.prototype.GetValue=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),Oe(r,e)},S.prototype.size=S.prototype.size=function(){return je(this.ptr)},S.prototype.__destroy__=S.prototype.__destroy__=function(){Pe(this.ptr)},M.prototype=Object.create(f.prototype),M.prototype.constructor=M,M.prototype.__class__=M,M.__cache__={},t.DracoUInt8Array=M,M.prototype.GetValue=M.prototype.GetValue=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),Se(r,e)},M.prototype.size=M.prototype.size=function(){return Me(this.ptr)},M.prototype.__destroy__=M.prototype.__destroy__=function(){Ne(this.ptr)},N.prototype=Object.create(f.prototype),N.prototype.constructor=N,N.prototype.__class__=N,N.__cache__={},t.DracoInt16Array=N,N.prototype.GetValue=N.prototype.GetValue=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),Fe(r,e)},N.prototype.size=N.prototype.size=function(){return Le(this.ptr)},N.prototype.__destroy__=N.prototype.__destroy__=function(){Ce(this.ptr)},U.prototype=Object.create(f.prototype),U.prototype.constructor=U,U.prototype.__class__=U,U.__cache__={},t.DracoUInt16Array=U,U.prototype.GetValue=U.prototype.GetValue=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),ze(r,e)},U.prototype.size=U.prototype.size=function(){return Ve(this.ptr)},U.prototype.__destroy__=U.prototype.__destroy__=function(){Be(this.ptr)},F.prototype=Object.create(f.prototype),F.prototype.constructor=F,F.prototype.__class__=F,F.__cache__={},t.DracoInt32Array=F,F.prototype.GetValue=F.prototype.GetValue=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),Qe(r,e)},F.prototype.size=F.prototype.size=function(){return xe(this.ptr)},F.prototype.__destroy__=F.prototype.__destroy__=function(){Ye(this.ptr)},L.prototype=Object.create(f.prototype),L.prototype.constructor=L,L.prototype.__class__=L,L.__cache__={},t.DracoUInt32Array=L,L.prototype.GetValue=L.prototype.GetValue=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),qe(r,e)},L.prototype.size=L.prototype.size=function(){return ke(this.ptr)},L.prototype.__destroy__=L.prototype.__destroy__=function(){Xe(this.ptr)},D.prototype=Object.create(f.prototype),D.prototype.constructor=D,D.prototype.__class__=D,D.__cache__={},t.MetadataQuerier=D,D.prototype.HasEntry=D.prototype.HasEntry=function(e,r){var n=this.ptr;return d.prepare(),e&&typeof e=="object"&&(e=e.ptr),r=r&&typeof r=="object"?r.ptr:V(r),!!Je(n,e,r)},D.prototype.GetIntEntry=D.prototype.GetIntEntry=function(e,r){var n=this.ptr;return d.prepare(),e&&typeof e=="object"&&(e=e.ptr),r=r&&typeof r=="object"?r.ptr:V(r),$e(n,e,r)},D.prototype.GetIntEntryArray=D.prototype.GetIntEntryArray=function(e,r,n){var o=this.ptr;d.prepare(),e&&typeof e=="object"&&(e=e.ptr),r=r&&typeof r=="object"?r.ptr:V(r),n&&typeof n=="object"&&(n=n.ptr),Ze(o,e,r,n)},D.prototype.GetDoubleEntry=D.prototype.GetDoubleEntry=function(e,r){var n=this.ptr;return d.prepare(),e&&typeof e=="object"&&(e=e.ptr),r=r&&typeof r=="object"?r.ptr:V(r),tr(n,e,r)},D.prototype.GetStringEntry=D.prototype.GetStringEntry=function(e,r){var n=this.ptr;return d.prepare(),e&&typeof e=="object"&&(e=e.ptr),r=r&&typeof r=="object"?r.ptr:V(r),a(er(n,e,r))},D.prototype.NumEntries=D.prototype.NumEntries=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),rr(r,e)},D.prototype.GetEntryName=D.prototype.GetEntryName=function(e,r){var n=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),a(nr(n,e,r))},D.prototype.__destroy__=D.prototype.__destroy__=function(){or(this.ptr)},u.prototype=Object.create(f.prototype),u.prototype.constructor=u,u.prototype.__class__=u,u.__cache__={},t.Decoder=u,u.prototype.DecodeArrayToPointCloud=u.prototype.DecodeArrayToPointCloud=function(e,r,n){var o=this.ptr;return d.prepare(),typeof e=="object"&&(e=at(e)),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),G(ir(o,e,r,n),v)},u.prototype.DecodeArrayToMesh=u.prototype.DecodeArrayToMesh=function(e,r,n){var o=this.ptr;return d.prepare(),typeof e=="object"&&(e=at(e)),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),G(ar(o,e,r,n),v)},u.prototype.GetAttributeId=u.prototype.GetAttributeId=function(e,r){var n=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),pr(n,e,r)},u.prototype.GetAttributeIdByName=u.prototype.GetAttributeIdByName=function(e,r){var n=this.ptr;return d.prepare(),e&&typeof e=="object"&&(e=e.ptr),r=r&&typeof r=="object"?r.ptr:V(r),ur(n,e,r)},u.prototype.GetAttributeIdByMetadataEntry=u.prototype.GetAttributeIdByMetadataEntry=function(e,r,n){var o=this.ptr;return d.prepare(),e&&typeof e=="object"&&(e=e.ptr),r=r&&typeof r=="object"?r.ptr:V(r),n=n&&typeof n=="object"?n.ptr:V(n),sr(o,e,r,n)},u.prototype.GetAttribute=u.prototype.GetAttribute=function(e,r){var n=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),G(cr(n,e,r),A)},u.prototype.GetAttributeByUniqueId=u.prototype.GetAttributeByUniqueId=function(e,r){var n=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),G(yr(n,e,r),A)},u.prototype.GetMetadata=u.prototype.GetMetadata=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),G(lr(r,e),W)},u.prototype.GetAttributeMetadata=u.prototype.GetAttributeMetadata=function(e,r){var n=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),G(mr(n,e,r),W)},u.prototype.GetFaceFromMesh=u.prototype.GetFaceFromMesh=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!fr(o,e,r,n)},u.prototype.GetTriangleStripsFromMesh=u.prototype.GetTriangleStripsFromMesh=function(e,r){var n=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),dr(n,e,r)},u.prototype.GetTrianglesUInt16Array=u.prototype.GetTrianglesUInt16Array=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!br(o,e,r,n)},u.prototype.GetTrianglesUInt32Array=u.prototype.GetTrianglesUInt32Array=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!hr(o,e,r,n)},u.prototype.GetAttributeFloat=u.prototype.GetAttributeFloat=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!Ar(o,e,r,n)},u.prototype.GetAttributeFloatForAllPoints=u.prototype.GetAttributeFloatForAllPoints=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!Tr(o,e,r,n)},u.prototype.GetAttributeIntForAllPoints=u.prototype.GetAttributeIntForAllPoints=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!Dr(o,e,r,n)},u.prototype.GetAttributeInt8ForAllPoints=u.prototype.GetAttributeInt8ForAllPoints=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!Ir(o,e,r,n)},u.prototype.GetAttributeUInt8ForAllPoints=u.prototype.GetAttributeUInt8ForAllPoints=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!gr(o,e,r,n)},u.prototype.GetAttributeInt16ForAllPoints=u.prototype.GetAttributeInt16ForAllPoints=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!vr(o,e,r,n)},u.prototype.GetAttributeUInt16ForAllPoints=u.prototype.GetAttributeUInt16ForAllPoints=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!Er(o,e,r,n)},u.prototype.GetAttributeInt32ForAllPoints=u.prototype.GetAttributeInt32ForAllPoints=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!Gr(o,e,r,n)},u.prototype.GetAttributeUInt32ForAllPoints=u.prototype.GetAttributeUInt32ForAllPoints=function(e,r,n){var o=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),!!Or(o,e,r,n)},u.prototype.GetAttributeDataArrayForAllPoints=u.prototype.GetAttributeDataArrayForAllPoints=function(e,r,n,o,m){var b=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),n&&typeof n=="object"&&(n=n.ptr),o&&typeof o=="object"&&(o=o.ptr),m&&typeof m=="object"&&(m=m.ptr),!!jr(b,e,r,n,o,m)},u.prototype.SkipAttributeTransform=u.prototype.SkipAttributeTransform=function(e){var r=this.ptr;e&&typeof e=="object"&&(e=e.ptr),Pr(r,e)},u.prototype.GetEncodedGeometryType_Deprecated=u.prototype.GetEncodedGeometryType_Deprecated=function(e){var r=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),Rr(r,e)},u.prototype.DecodeBufferToPointCloud=u.prototype.DecodeBufferToPointCloud=function(e,r){var n=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),G(Sr(n,e,r),v)},u.prototype.DecodeBufferToMesh=u.prototype.DecodeBufferToMesh=function(e,r){var n=this.ptr;return e&&typeof e=="object"&&(e=e.ptr),r&&typeof r=="object"&&(r=r.ptr),G(Mr(n,e,r),v)},u.prototype.__destroy__=u.prototype.__destroy__=function(){Nr(this.ptr)},function(){function e(){t.ATTRIBUTE_INVALID_TRANSFORM=Ur(),t.ATTRIBUTE_NO_TRANSFORM=Fr(),t.ATTRIBUTE_QUANTIZATION_TRANSFORM=Lr(),t.ATTRIBUTE_OCTAHEDRON_TRANSFORM=Cr(),t.INVALID=wr(),t.POSITION=zr(),t.NORMAL=Vr(),t.COLOR=Br(),t.TEX_COORD=Wr(),t.GENERIC=Qr(),t.INVALID_GEOMETRY_TYPE=xr(),t.POINT_CLOUD=Yr(),t.TRIANGULAR_MESH=Hr(),t.DT_INVALID=qr(),t.DT_INT8=kr(),t.DT_UINT8=Xr(),t.DT_INT16=Kr(),t.DT_UINT16=Jr(),t.DT_INT32=$r(),t.DT_UINT32=Zr(),t.DT_INT64=tn(),t.DT_UINT64=en(),t.DT_FLOAT32=rn(),t.DT_FLOAT64=nn(),t.DT_BOOL=on(),t.DT_TYPES_COUNT=_n(),t.OK=an(),t.DRACO_ERROR=pn(),t.IO_ERROR=un(),t.INVALID_PARAMETER=sn(),t.UNSUPPORTED_VERSION=cn(),t.UNKNOWN_VERSION=yn()}Rt?e():ct.unshift(e)}(),typeof t.onModuleParsed=="function"&&t.onModuleParsed(),t.Decoder.prototype.GetEncodedGeometryType=function(e){if(e.__class__&&e.__class__===t.DecoderBuffer)return t.Decoder.prototype.GetEncodedGeometryType_Deprecated(e);if(8>e.byteLength)return t.INVALID_GEOMETRY_TYPE;switch(e[7]){case 0:return t.POINT_CLOUD;case 1:return t.TRIANGULAR_MESH;default:return t.INVALID_GEOMETRY_TYPE}},c.ready}}();typeof nt=="object"&&typeof bt=="object"?bt.exports=dt:typeof define=="function"&&define.amd?define([],function(){return dt}):typeof nt=="object"&&(nt.DracoDecoderModule=dt)});export{Dn as a}; diff --git a/public/Cesium/Workers/chunk-37F5JSTI.js b/public/Cesium/Workers/chunk-37F5JSTI.js new file mode 100644 index 000000000..71f80b03c --- /dev/null +++ b/public/Cesium/Workers/chunk-37F5JSTI.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as wt}from"./chunk-GBYLG25F.js";import{a as C}from"./chunk-CYCB63OH.js";import{a as kt}from"./chunk-OFUUQVMR.js";import{a as Ct}from"./chunk-A56XVLQR.js";import{b as dt,c as _t,d as N}from"./chunk-RCV6KWXS.js";import{d as ht}from"./chunk-4IW2T6GF.js";import{a as M}from"./chunk-AU7IKHOH.js";import{a as s,c as lt,d as it,f as pt}from"./chunk-64RSHJUE.js";import{a as E}from"./chunk-3SSKC3VN.js";import{a as g}from"./chunk-LEYMRMBK.js";import{e as v}from"./chunk-VTAIKJXX.js";var yt=new s,vt=new s,Et=new s,Mt=new s,Nt=new s,Rt=new s(1,1,1),Pt=Math.cos,At=Math.sin;function x(n){n=n??pt.EMPTY_OBJECT;let m=n.radii??Rt,i=n.innerRadii??m,w=n.minimumClock??0,O=n.maximumClock??E.TWO_PI,P=n.minimumCone??0,A=n.maximumCone??E.PI,a=Math.round(n.stackPartitions??64),u=Math.round(n.slicePartitions??64),p=n.vertexFormat??C.DEFAULT;if(u<3)throw new g("options.slicePartitions cannot be less than three.");if(a<3)throw new g("options.stackPartitions cannot be less than three.");this._radii=s.clone(m),this._innerRadii=s.clone(i),this._minimumClock=w,this._maximumClock=O,this._minimumCone=P,this._maximumCone=A,this._stackPartitions=a,this._slicePartitions=u,this._vertexFormat=C.clone(p),this._offsetAttribute=n.offsetAttribute,this._workerName="createEllipsoidGeometry"}x.packedLength=2*s.packedLength+C.packedLength+7;x.pack=function(n,m,i){if(!v(n))throw new g("value is required");if(!v(m))throw new g("array is required");return i=i??0,s.pack(n._radii,m,i),i+=s.packedLength,s.pack(n._innerRadii,m,i),i+=s.packedLength,C.pack(n._vertexFormat,m,i),i+=C.packedLength,m[i++]=n._minimumClock,m[i++]=n._maximumClock,m[i++]=n._minimumCone,m[i++]=n._maximumCone,m[i++]=n._stackPartitions,m[i++]=n._slicePartitions,m[i]=n._offsetAttribute??-1,m};var bt=new s,xt=new s,Ot=new C,L={radii:bt,innerRadii:xt,vertexFormat:Ot,minimumClock:void 0,maximumClock:void 0,minimumCone:void 0,maximumCone:void 0,stackPartitions:void 0,slicePartitions:void 0,offsetAttribute:void 0};x.unpack=function(n,m,i){if(!v(n))throw new g("array is required");m=m??0;let w=s.unpack(n,m,bt);m+=s.packedLength;let O=s.unpack(n,m,xt);m+=s.packedLength;let P=C.unpack(n,m,Ot);m+=C.packedLength;let A=n[m++],a=n[m++],u=n[m++],p=n[m++],t=n[m++],o=n[m++],e=n[m];return v(i)?(i._radii=s.clone(w,i._radii),i._innerRadii=s.clone(O,i._innerRadii),i._vertexFormat=C.clone(P,i._vertexFormat),i._minimumClock=A,i._maximumClock=a,i._minimumCone=u,i._maximumCone=p,i._stackPartitions=t,i._slicePartitions=o,i._offsetAttribute=e===-1?void 0:e,i):(L.minimumClock=A,L.maximumClock=a,L.minimumCone=u,L.maximumCone=p,L.stackPartitions=t,L.slicePartitions=o,L.offsetAttribute=e===-1?void 0:e,new x(L))};x.createGeometry=function(n){let m=n._radii;if(m.x<=0||m.y<=0||m.z<=0)return;let i=n._innerRadii;if(i.x<=0||i.y<=0||i.z<=0)return;let w=n._minimumClock,O=n._maximumClock,P=n._minimumCone,A=n._maximumCone,a=n._vertexFormat,u=n._slicePartitions+1,p=n._stackPartitions+1;u=Math.round(u*Math.abs(O-w)/E.TWO_PI),p=Math.round(p*Math.abs(A-P)/E.PI),u<2&&(u=2),p<2&&(p=2);let t,o,e=0,z=[P],D=[w];for(t=0;t<p;t++)z.push(P+t*(A-P)/(p-1));for(z.push(A),o=0;o<u;o++)D.push(w+o*(O-w)/(u-1));D.push(O);let f=z.length,c=D.length,S=0,U=1,q=i.x!==m.x||i.y!==m.y||i.z!==m.z,H=!1,mt=!1,rt=!1;q&&(U=2,P>0&&(H=!0,S+=u-1),A<Math.PI&&(mt=!0,S+=u-1),(O-w)%E.TWO_PI?(rt=!0,S+=(p-1)*2+1):S+=1);let k=c*f*U,b=new Float64Array(k*3),J=new Array(k).fill(!1),ct=new Array(k).fill(!1),st=u*p*U,Tt=6*(st+S+1-(u+p)*U),r=kt.createTypedArray(st,Tt),V=a.normal?new Float32Array(k*3):void 0,Y=a.tangent?new Float32Array(k*3):void 0,j=a.bitangent?new Float32Array(k*3):void 0,X=a.st?new Float32Array(k*2):void 0,B=new Array(f),Z=new Array(f);for(t=0;t<f;t++)B[t]=At(z[t]),Z[t]=Pt(z[t]);let G=new Array(c),K=new Array(c);for(o=0;o<c;o++)K[o]=Pt(D[o]),G[o]=At(D[o]);for(t=0;t<f;t++)for(o=0;o<c;o++)b[e++]=m.x*B[t]*K[o],b[e++]=m.y*B[t]*G[o],b[e++]=m.z*Z[t];let Q=k/2;if(q)for(t=0;t<f;t++)for(o=0;o<c;o++)b[e++]=i.x*B[t]*K[o],b[e++]=i.y*B[t]*G[o],b[e++]=i.z*Z[t],J[Q]=!0,t>0&&t!==f-1&&o!==0&&o!==c-1&&(ct[Q]=!0),Q++;e=0;let T,F;for(t=1;t<f-2;t++)for(T=t*c,F=(t+1)*c,o=1;o<c-2;o++)r[e++]=F+o,r[e++]=F+o+1,r[e++]=T+o+1,r[e++]=F+o,r[e++]=T+o+1,r[e++]=T+o;if(q){let R=f*c;for(t=1;t<f-2;t++)for(T=R+t*c,F=R+(t+1)*c,o=1;o<c-2;o++)r[e++]=F+o,r[e++]=T+o,r[e++]=T+o+1,r[e++]=F+o,r[e++]=T+o+1,r[e++]=F+o+1}let h,l;if(q){if(H)for(l=f*c,t=1;t<c-2;t++)r[e++]=t,r[e++]=t+1,r[e++]=l+t+1,r[e++]=t,r[e++]=l+t+1,r[e++]=l+t;if(mt)for(h=f*c-c,l=f*c*U-c,t=1;t<c-2;t++)r[e++]=h+t+1,r[e++]=h+t,r[e++]=l+t,r[e++]=h+t+1,r[e++]=l+t,r[e++]=l+t+1}if(rt){for(t=1;t<f-2;t++)l=c*f+c*t,h=c*t,r[e++]=l,r[e++]=h+c,r[e++]=h,r[e++]=l,r[e++]=l+c,r[e++]=h+c;for(t=1;t<f-2;t++)l=c*f+c*(t+1)-1,h=c*(t+1)-1,r[e++]=h+c,r[e++]=l,r[e++]=h,r[e++]=h+c,r[e++]=l+c,r[e++]=l}let y=new Ct;a.position&&(y.position=new N({componentDatatype:M.DOUBLE,componentsPerAttribute:3,values:b}));let at=0,$=0,I=0,tt=0,Ft=k/2,ft,ut=it.fromCartesian3(m),Lt=it.fromCartesian3(i);if(a.st||a.normal||a.tangent||a.bitangent){for(t=0;t<k;t++){ft=J[t]?Lt:ut;let R=s.fromArray(b,t*3,yt),_=ft.geodeticSurfaceNormal(R,vt);if(ct[t]&&s.negate(_,_),a.st){let d=lt.negate(_,Nt);X[at++]=Math.atan2(d.y,d.x)/E.TWO_PI+.5,X[at++]=Math.asin(_.z)/Math.PI+.5}if(a.normal&&(V[$++]=_.x,V[$++]=_.y,V[$++]=_.z),a.tangent||a.bitangent){let d=Et,nt=0,et;if(J[t]&&(nt=Ft),!H&&t>=nt&&t<nt+c*2?et=s.UNIT_X:et=s.UNIT_Z,s.cross(et,_,d),s.normalize(d,d),a.tangent&&(Y[I++]=d.x,Y[I++]=d.y,Y[I++]=d.z),a.bitangent){let W=s.cross(_,d,Mt);s.normalize(W,W),j[tt++]=W.x,j[tt++]=W.y,j[tt++]=W.z}}}a.st&&(y.st=new N({componentDatatype:M.FLOAT,componentsPerAttribute:2,values:X})),a.normal&&(y.normal=new N({componentDatatype:M.FLOAT,componentsPerAttribute:3,values:V})),a.tangent&&(y.tangent=new N({componentDatatype:M.FLOAT,componentsPerAttribute:3,values:Y})),a.bitangent&&(y.bitangent=new N({componentDatatype:M.FLOAT,componentsPerAttribute:3,values:j}))}if(v(n._offsetAttribute)){let R=b.length,_=n._offsetAttribute===wt.NONE?0:1,d=new Uint8Array(R/3).fill(_);y.applyOffset=new N({componentDatatype:M.UNSIGNED_BYTE,componentsPerAttribute:1,values:d})}return new _t({attributes:y,indices:r,primitiveType:dt.TRIANGLES,boundingSphere:ht.fromEllipsoid(ut),offsetAttribute:n._offsetAttribute})};var ot;x.getUnitEllipsoid=function(){return v(ot)||(ot=x.createGeometry(new x({radii:new s(1,1,1),vertexFormat:C.POSITION_ONLY}))),ot};var Kt=x;export{Kt as a}; diff --git a/public/Cesium/Workers/chunk-3SSKC3VN.js b/public/Cesium/Workers/chunk-3SSKC3VN.js new file mode 100644 index 000000000..b4780c541 --- /dev/null +++ b/public/Cesium/Workers/chunk-3SSKC3VN.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as n,b as a}from"./chunk-LEYMRMBK.js";import{c as E,d as I,e as o}from"./chunk-VTAIKJXX.js";var d=E((_,m)=>{var f=function(t){t==null&&(t=new Date().getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,t.constructor==Array?this.init_by_array(t,t.length):this.init_seed(t)};f.prototype.init_seed=function(t){for(this.mt[0]=t>>>0,this.mti=1;this.mti<this.N;this.mti++){var t=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(((t&4294901760)>>>16)*1812433253<<16)+(t&65535)*1812433253+this.mti,this.mt[this.mti]>>>=0}};f.prototype.init_by_array=function(t,i){var e,s,h;for(this.init_seed(19650218),e=1,s=0,h=this.N>i?this.N:i;h;h--){var u=this.mt[e-1]^this.mt[e-1]>>>30;this.mt[e]=(this.mt[e]^(((u&4294901760)>>>16)*1664525<<16)+(u&65535)*1664525)+t[s]+s,this.mt[e]>>>=0,e++,s++,e>=this.N&&(this.mt[0]=this.mt[this.N-1],e=1),s>=i&&(s=0)}for(h=this.N-1;h;h--){var u=this.mt[e-1]^this.mt[e-1]>>>30;this.mt[e]=(this.mt[e]^(((u&4294901760)>>>16)*1566083941<<16)+(u&65535)*1566083941)-e,this.mt[e]>>>=0,e++,e>=this.N&&(this.mt[0]=this.mt[this.N-1],e=1)}this.mt[0]=2147483648};f.prototype.random_int=function(){var t,i=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var e;for(this.mti==this.N+1&&this.init_seed(5489),e=0;e<this.N-this.M;e++)t=this.mt[e]&this.UPPER_MASK|this.mt[e+1]&this.LOWER_MASK,this.mt[e]=this.mt[e+this.M]^t>>>1^i[t&1];for(;e<this.N-1;e++)t=this.mt[e]&this.UPPER_MASK|this.mt[e+1]&this.LOWER_MASK,this.mt[e]=this.mt[e+(this.M-this.N)]^t>>>1^i[t&1];t=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^t>>>1^i[t&1],this.mti=0}return t=this.mt[this.mti++],t^=t>>>11,t^=t<<7&2636928640,t^=t<<15&4022730752,t^=t>>>18,t>>>0};f.prototype.random_int31=function(){return this.random_int()>>>1};f.prototype.random_incl=function(){return this.random_int()*(1/4294967295)};f.prototype.random=function(){return this.random_int()*(1/4294967296)};f.prototype.random_excl=function(){return(this.random_int()+.5)*(1/4294967296)};f.prototype.random_long=function(){var t=this.random_int()>>>5,i=this.random_int()>>>6;return(t*67108864+i)*(1/9007199254740992)};m.exports=f});var w=I(d(),1);var r={};r.EPSILON1=.1;r.EPSILON2=.01;r.EPSILON3=.001;r.EPSILON4=1e-4;r.EPSILON5=1e-5;r.EPSILON6=1e-6;r.EPSILON7=1e-7;r.EPSILON8=1e-8;r.EPSILON9=1e-9;r.EPSILON10=1e-10;r.EPSILON11=1e-11;r.EPSILON12=1e-12;r.EPSILON13=1e-13;r.EPSILON14=1e-14;r.EPSILON15=1e-15;r.EPSILON16=1e-16;r.EPSILON17=1e-17;r.EPSILON18=1e-18;r.EPSILON19=1e-19;r.EPSILON20=1e-20;r.EPSILON21=1e-21;r.GRAVITATIONALPARAMETER=3986004418e5;r.SOLAR_RADIUS=6955e5;r.LUNAR_RADIUS=1737400;r.SIXTY_FOUR_KILOBYTES=64*1024;r.FOUR_GIGABYTES=4*1024*1024*1024;r.sign=Math.sign??function(i){return i=+i,i===0||i!==i?i:i>0?1:-1};r.signNotZero=function(t){return t<0?-1:1};r.toSNorm=function(t,i){return i=i??255,Math.round((r.clamp(t,-1,1)*.5+.5)*i)};r.fromSNorm=function(t,i){return i=i??255,r.clamp(t,0,i)/i*2-1};r.normalize=function(t,i,e){return e=Math.max(e-i,0),e===0?0:r.clamp((t-i)/e,0,1)};r.sinh=Math.sinh??function(i){return(Math.exp(i)-Math.exp(-i))/2};r.cosh=Math.cosh??function(i){return(Math.exp(i)+Math.exp(-i))/2};r.lerp=function(t,i,e){return(1-e)*t+e*i};r.PI=Math.PI;r.ONE_OVER_PI=1/Math.PI;r.PI_OVER_TWO=Math.PI/2;r.PI_OVER_THREE=Math.PI/3;r.PI_OVER_FOUR=Math.PI/4;r.PI_OVER_SIX=Math.PI/6;r.THREE_PI_OVER_TWO=3*Math.PI/2;r.TWO_PI=2*Math.PI;r.ONE_OVER_TWO_PI=1/(2*Math.PI);r.RADIANS_PER_DEGREE=Math.PI/180;r.DEGREES_PER_RADIAN=180/Math.PI;r.RADIANS_PER_ARCSECOND=r.RADIANS_PER_DEGREE/3600;r.toRadians=function(t){if(!o(t))throw new n("degrees is required.");return t*r.RADIANS_PER_DEGREE};r.toDegrees=function(t){if(!o(t))throw new n("radians is required.");return t*r.DEGREES_PER_RADIAN};r.convertLongitudeRange=function(t){if(!o(t))throw new n("angle is required.");let i=r.TWO_PI,e=t-Math.floor(t/i)*i;return e<-Math.PI?e+i:e>=Math.PI?e-i:e};r.clampToLatitudeRange=function(t){if(!o(t))throw new n("angle is required.");return r.clamp(t,-1*r.PI_OVER_TWO,r.PI_OVER_TWO)};r.negativePiToPi=function(t){if(!o(t))throw new n("angle is required.");return t>=-r.PI&&t<=r.PI?t:r.zeroToTwoPi(t+r.PI)-r.PI};r.zeroToTwoPi=function(t){if(!o(t))throw new n("angle is required.");if(t>=0&&t<=r.TWO_PI)return t;let i=r.mod(t,r.TWO_PI);return Math.abs(i)<r.EPSILON14&&Math.abs(t)>r.EPSILON14?r.TWO_PI:i};r.mod=function(t,i){if(!o(t))throw new n("m is required.");if(!o(i))throw new n("n is required.");if(i===0)throw new n("divisor cannot be 0.");return r.sign(t)===r.sign(i)&&Math.abs(t)<Math.abs(i)?t:(t%i+i)%i};r.equalsEpsilon=function(t,i,e,s){if(!o(t))throw new n("left is required.");if(!o(i))throw new n("right is required.");e=e??0,s=s??e;let h=Math.abs(t-i);return h<=s||h<=e*Math.max(Math.abs(t),Math.abs(i))};r.lessThan=function(t,i,e){if(!o(t))throw new n("first is required.");if(!o(i))throw new n("second is required.");if(!o(e))throw new n("absoluteEpsilon is required.");return t-i<-e};r.lessThanOrEquals=function(t,i,e){if(!o(t))throw new n("first is required.");if(!o(i))throw new n("second is required.");if(!o(e))throw new n("absoluteEpsilon is required.");return t-i<e};r.greaterThan=function(t,i,e){if(!o(t))throw new n("first is required.");if(!o(i))throw new n("second is required.");if(!o(e))throw new n("absoluteEpsilon is required.");return t-i>e};r.greaterThanOrEquals=function(t,i,e){if(!o(t))throw new n("first is required.");if(!o(i))throw new n("second is required.");if(!o(e))throw new n("absoluteEpsilon is required.");return t-i>-e};var c=[1];r.factorial=function(t){if(typeof t!="number"||t<0)throw new n("A number greater than or equal to 0 is required.");let i=c.length;if(t>=i){let e=c[i-1];for(let s=i;s<=t;s++){let h=e*s;c.push(h),e=h}}return c[t]};r.incrementWrap=function(t,i,e){if(e=e??0,!o(t))throw new n("n is required.");if(i<=e)throw new n("maximumValue must be greater than minimumValue.");return++t,t>i&&(t=e),t};r.isPowerOfTwo=function(t){if(typeof t!="number"||t<0||t>4294967295)throw new n("A number between 0 and (2^32)-1 is required.");return t!==0&&(t&t-1)===0};r.nextPowerOfTwo=function(t){if(typeof t!="number"||t<0||t>2147483648)throw new n("A number between 0 and 2^31 is required.");return--t,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,++t,t};r.previousPowerOfTwo=function(t){if(typeof t!="number"||t<0||t>4294967295)throw new n("A number between 0 and (2^32)-1 is required.");return t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,t|=t>>32,t=(t>>>0)-(t>>>1),t};r.clamp=function(t,i,e){return a.typeOf.number("value",t),a.typeOf.number("min",i),a.typeOf.number("max",e),t<i?i:t>e?e:t};var P=new w.default;r.setRandomNumberSeed=function(t){if(!o(t))throw new n("seed is required.");P=new w.default(t)};r.nextRandomNumber=function(){return P.random()};r.randomBetween=function(t,i){return r.nextRandomNumber()*(i-t)+t};r.acosClamped=function(t){if(!o(t))throw new n("value is required.");return Math.acos(r.clamp(t,-1,1))};r.asinClamped=function(t){if(!o(t))throw new n("value is required.");return Math.asin(r.clamp(t,-1,1))};r.chordLength=function(t,i){if(!o(t))throw new n("angle is required.");if(!o(i))throw new n("radius is required.");return 2*i*Math.sin(t*.5)};r.logBase=function(t,i){if(!o(t))throw new n("number is required.");if(!o(i))throw new n("base is required.");return Math.log(t)/Math.log(i)};r.cbrt=Math.cbrt??function(i){let e=Math.pow(Math.abs(i),.3333333333333333);return i<0?-e:e};r.log2=Math.log2??function(i){return Math.log(i)*Math.LOG2E};r.fog=function(t,i){let e=t*i;return 1-Math.exp(-(e*e))};r.fastApproximateAtan=function(t){return a.typeOf.number("x",t),t*(-.1784*Math.abs(t)-.0663*t*t+1.0301)};r.fastApproximateAtan2=function(t,i){a.typeOf.number("x",t),a.typeOf.number("y",i);let e,s=Math.abs(t);e=Math.abs(i);let h=Math.max(s,e);e=Math.min(s,e);let u=e/h;if(isNaN(u))throw new n("either x or y must be nonzero");return s=r.fastApproximateAtan(u),s=Math.abs(i)>Math.abs(t)?r.PI_OVER_TWO-s:s,s=t<0?r.PI-s:s,s=i<0?-s:s,s};var M=r;export{M as a}; diff --git a/public/Cesium/Workers/chunk-3W4GT7KQ.js b/public/Cesium/Workers/chunk-3W4GT7KQ.js new file mode 100644 index 000000000..213d7ec6b --- /dev/null +++ b/public/Cesium/Workers/chunk-3W4GT7KQ.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as C}from"./chunk-3SSKC3VN.js";import{b as g}from"./chunk-LEYMRMBK.js";import{e as f}from"./chunk-VTAIKJXX.js";var d=C.EPSILON10;function x(e,r,h,n){if(g.defined("equalsEpsilon",r),!f(e))return;h=h??!1;let c=f(n),l=e.length;if(l<2)return e;let i,s=e[0],o,t,p=0,m=-1;for(i=1;i<l;++i)o=e[i],r(s,o,d)?(f(t)||(t=e.slice(0,i),p=i-1,m=0),c&&n.push(i)):(f(t)&&(t.push(o),p=i,c&&(m=n.length)),s=o);return h&&r(e[0],e[l-1],d)&&(c&&(f(t)?n.splice(m,0,p):n.push(l-1)),f(t)?t.length-=1:t=e.slice(0,-1)),f(t)?t:e}var k=x;export{k as a}; diff --git a/public/Cesium/Workers/chunk-4IW2T6GF.js b/public/Cesium/Workers/chunk-4IW2T6GF.js new file mode 100644 index 000000000..a3dd35a1e --- /dev/null +++ b/public/Cesium/Workers/chunk-4IW2T6GF.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{b as Z,h as A}from"./chunk-PSPPBZWI.js";import{a as n,b as v,d as N,e as _}from"./chunk-64RSHJUE.js";import{a as on}from"./chunk-3SSKC3VN.js";import{a as en,b as h}from"./chunk-LEYMRMBK.js";import{e as x}from"./chunk-VTAIKJXX.js";function I(e){this._ellipsoid=e??N.default,this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis}Object.defineProperties(I.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});I.prototype.project=function(e,t){let o=this._semimajorAxis,c=e.longitude*o,r=e.latitude*o,d=e.height;return x(t)?(t.x=c,t.y=r,t.z=d,t):new n(c,r,d)};I.prototype.unproject=function(e,t){if(!x(e))throw new en("cartesian is required");let o=this._oneOverSemimajorAxis,c=e.x*o,r=e.y*o,d=e.z;return x(t)?(t.longitude=c,t.latitude=r,t.height=d,t):new v(c,r,d)};var k=I;var sn={OUTSIDE:-1,INTERSECTING:0,INSIDE:1},U=Object.freeze(sn);function mn(e,t){this.start=e??0,this.stop=t??0}var cn=mn;function a(e,t){this.center=n.clone(e??n.ZERO),this.radius=t??0}var X=new n,F=new n,Y=new n,J=new n,K=new n,Q=new n,$=new n,b=new n,L=new n,H=new n,nn=new n,tn=new n,un=4/3*on.PI;a.fromPoints=function(e,t){if(x(t)||(t=new a),!x(e)||e.length===0)return t.center=n.clone(n.ZERO,t.center),t.radius=0,t;let o=n.clone(e[0],$),c=n.clone(o,X),r=n.clone(o,F),d=n.clone(o,Y),f=n.clone(o,J),s=n.clone(o,K),m=n.clone(o,Q),z=e.length,y;for(y=1;y<z;y++){n.clone(e[y],o);let C=o.x,M=o.y,w=o.z;C<c.x&&n.clone(o,c),C>f.x&&n.clone(o,f),M<r.y&&n.clone(o,r),M>s.y&&n.clone(o,s),w<d.z&&n.clone(o,d),w>m.z&&n.clone(o,m)}let u=n.magnitudeSquared(n.subtract(f,c,b)),i=n.magnitudeSquared(n.subtract(s,r,b)),B=n.magnitudeSquared(n.subtract(m,d,b)),T=c,q=f,O=u;i>O&&(O=i,T=r,q=s),B>O&&(O=B,T=d,q=m);let p=L;p.x=(T.x+q.x)*.5,p.y=(T.y+q.y)*.5,p.z=(T.z+q.z)*.5;let S=n.magnitudeSquared(n.subtract(q,p,b)),l=Math.sqrt(S),j=H;j.x=c.x,j.y=r.y,j.z=d.z;let P=nn;P.x=f.x,P.y=s.y,P.z=m.z;let E=n.midpoint(j,P,tn),D=0;for(y=0;y<z;y++){n.clone(e[y],o);let C=n.magnitude(n.subtract(o,E,b));C>D&&(D=C);let M=n.magnitudeSquared(n.subtract(o,p,b));if(M>S){let w=Math.sqrt(M);l=(l+w)*.5,S=l*l;let g=w-l;p.x=(l*p.x+g*o.x)/w,p.y=(l*p.y+g*o.y)/w,p.z=(l*p.z+g*o.z)/w}}return l<D?(n.clone(p,t.center),t.radius=l):(n.clone(E,t.center),t.radius=D),t};var rn=new k,xn=new n,yn=new n,G=new v,V=new v;a.fromRectangle2D=function(e,t,o){return a.fromRectangleWithHeights2D(e,t,0,0,o)};a.fromRectangleWithHeights2D=function(e,t,o,c,r){if(x(r)||(r=new a),!x(e))return r.center=n.clone(n.ZERO,r.center),r.radius=0,r;rn._ellipsoid=N.default,t=t??rn,A.southwest(e,G),G.height=o,A.northeast(e,V),V.height=c;let d=t.project(G,xn),f=t.project(V,yn),s=f.x-d.x,m=f.y-d.y,z=f.z-d.z;r.radius=Math.sqrt(s*s+m*m+z*z)*.5;let y=r.center;return y.x=d.x+s*.5,y.y=d.y+m*.5,y.z=d.z+z*.5,r};var ln=[];a.fromRectangle3D=function(e,t,o,c){if(t=t??N.default,o=o??0,x(c)||(c=new a),!x(e))return c.center=n.clone(n.ZERO,c.center),c.radius=0,c;let r=A.subsample(e,t,o,ln);return a.fromPoints(r,c)};a.fromVertices=function(e,t,o,c){if(x(c)||(c=new a),!x(e)||e.length===0)return c.center=n.clone(n.ZERO,c.center),c.radius=0,c;t=t??n.ZERO,o=o??3,h.typeOf.number.greaterThanOrEquals("stride",o,3);let r=$;r.x=e[0]+t.x,r.y=e[1]+t.y,r.z=e[2]+t.z;let d=n.clone(r,X),f=n.clone(r,F),s=n.clone(r,Y),m=n.clone(r,J),z=n.clone(r,K),y=n.clone(r,Q),u=e.length,i;for(i=0;i<u;i+=o){let w=e[i]+t.x,g=e[i+1]+t.y,R=e[i+2]+t.z;r.x=w,r.y=g,r.z=R,w<d.x&&n.clone(r,d),w>m.x&&n.clone(r,m),g<f.y&&n.clone(r,f),g>z.y&&n.clone(r,z),R<s.z&&n.clone(r,s),R>y.z&&n.clone(r,y)}let B=n.magnitudeSquared(n.subtract(m,d,b)),T=n.magnitudeSquared(n.subtract(z,f,b)),q=n.magnitudeSquared(n.subtract(y,s,b)),O=d,p=m,S=B;T>S&&(S=T,O=f,p=z),q>S&&(S=q,O=s,p=y);let l=L;l.x=(O.x+p.x)*.5,l.y=(O.y+p.y)*.5,l.z=(O.z+p.z)*.5;let j=n.magnitudeSquared(n.subtract(p,l,b)),P=Math.sqrt(j),E=H;E.x=d.x,E.y=f.y,E.z=s.z;let D=nn;D.x=m.x,D.y=z.y,D.z=y.z;let C=n.midpoint(E,D,tn),M=0;for(i=0;i<u;i+=o){r.x=e[i]+t.x,r.y=e[i+1]+t.y,r.z=e[i+2]+t.z;let w=n.magnitude(n.subtract(r,C,b));w>M&&(M=w);let g=n.magnitudeSquared(n.subtract(r,l,b));if(g>j){let R=Math.sqrt(g);P=(P+R)*.5,j=P*P;let W=R-P;l.x=(P*l.x+W*r.x)/R,l.y=(P*l.y+W*r.y)/R,l.z=(P*l.z+W*r.z)/R}}return P<M?(n.clone(l,c.center),c.radius=P):(n.clone(C,c.center),c.radius=M),c};a.fromEncodedCartesianVertices=function(e,t,o){if(x(o)||(o=new a),!x(e)||!x(t)||e.length!==t.length||e.length===0)return o.center=n.clone(n.ZERO,o.center),o.radius=0,o;let c=$;c.x=e[0]+t[0],c.y=e[1]+t[1],c.z=e[2]+t[2];let r=n.clone(c,X),d=n.clone(c,F),f=n.clone(c,Y),s=n.clone(c,J),m=n.clone(c,K),z=n.clone(c,Q),y=e.length,u;for(u=0;u<y;u+=3){let M=e[u]+t[u],w=e[u+1]+t[u+1],g=e[u+2]+t[u+2];c.x=M,c.y=w,c.z=g,M<r.x&&n.clone(c,r),M>s.x&&n.clone(c,s),w<d.y&&n.clone(c,d),w>m.y&&n.clone(c,m),g<f.z&&n.clone(c,f),g>z.z&&n.clone(c,z)}let i=n.magnitudeSquared(n.subtract(s,r,b)),B=n.magnitudeSquared(n.subtract(m,d,b)),T=n.magnitudeSquared(n.subtract(z,f,b)),q=r,O=s,p=i;B>p&&(p=B,q=d,O=m),T>p&&(p=T,q=f,O=z);let S=L;S.x=(q.x+O.x)*.5,S.y=(q.y+O.y)*.5,S.z=(q.z+O.z)*.5;let l=n.magnitudeSquared(n.subtract(O,S,b)),j=Math.sqrt(l),P=H;P.x=r.x,P.y=d.y,P.z=f.z;let E=nn;E.x=s.x,E.y=m.y,E.z=z.z;let D=n.midpoint(P,E,tn),C=0;for(u=0;u<y;u+=3){c.x=e[u]+t[u],c.y=e[u+1]+t[u+1],c.z=e[u+2]+t[u+2];let M=n.magnitude(n.subtract(c,D,b));M>C&&(C=M);let w=n.magnitudeSquared(n.subtract(c,S,b));if(w>l){let g=Math.sqrt(w);j=(j+g)*.5,l=j*j;let R=g-j;S.x=(j*S.x+R*c.x)/g,S.y=(j*S.y+R*c.y)/g,S.z=(j*S.z+R*c.z)/g}}return j<C?(n.clone(S,o.center),o.radius=j):(n.clone(D,o.center),o.radius=C),o};a.fromCornerPoints=function(e,t,o){h.typeOf.object("corner",e),h.typeOf.object("oppositeCorner",t),x(o)||(o=new a);let c=n.midpoint(e,t,o.center);return o.radius=n.distance(c,t),o};a.fromEllipsoid=function(e,t){return h.typeOf.object("ellipsoid",e),x(t)||(t=new a),n.clone(n.ZERO,t.center),t.radius=e.maximumRadius,t};var pn=new n;a.fromBoundingSpheres=function(e,t){if(x(t)||(t=new a),!x(e)||e.length===0)return t.center=n.clone(n.ZERO,t.center),t.radius=0,t;let o=e.length;if(o===1)return a.clone(e[0],t);if(o===2)return a.union(e[0],e[1],t);let c=[],r;for(r=0;r<o;r++)c.push(e[r].center);t=a.fromPoints(c,t);let d=t.center,f=t.radius;for(r=0;r<o;r++){let s=e[r];f=Math.max(f,n.distance(d,s.center,pn)+s.radius)}return t.radius=f,t};var hn=new n,zn=new n,Sn=new n;a.fromOrientedBoundingBox=function(e,t){h.defined("orientedBoundingBox",e),x(t)||(t=new a);let o=e.halfAxes,c=_.getColumn(o,0,hn),r=_.getColumn(o,1,zn),d=_.getColumn(o,2,Sn);return n.add(c,r,c),n.add(c,d,c),t.center=n.clone(e.center,t.center),t.radius=n.magnitude(c),t};var wn=new n,Pn=new n;a.fromTransformation=function(e,t){h.typeOf.object("transformation",e),x(t)||(t=new a);let o=Z.getTranslation(e,wn),c=Z.getScale(e,Pn),r=.5*n.magnitude(c);return t.center=n.clone(o,t.center),t.radius=r,t};a.clone=function(e,t){if(x(e))return x(t)?(t.center=n.clone(e.center,t.center),t.radius=e.radius,t):new a(e.center,e.radius)};a.packedLength=4;a.pack=function(e,t,o){h.typeOf.object("value",e),h.defined("array",t),o=o??0;let c=e.center;return t[o++]=c.x,t[o++]=c.y,t[o++]=c.z,t[o]=e.radius,t};a.unpack=function(e,t,o){h.defined("array",e),t=t??0,x(o)||(o=new a);let c=o.center;return c.x=e[t++],c.y=e[t++],c.z=e[t++],o.radius=e[t],o};var gn=new n,On=new n;a.union=function(e,t,o){h.typeOf.object("left",e),h.typeOf.object("right",t),x(o)||(o=new a);let c=e.center,r=e.radius,d=t.center,f=t.radius,s=n.subtract(d,c,gn),m=n.magnitude(s);if(r>=m+f)return e.clone(o),o;if(f>=m+r)return t.clone(o),o;let z=(r+m+f)*.5,y=n.multiplyByScalar(s,(-r+z)/m,On);return n.add(y,c,y),n.clone(y,o.center),o.radius=z,o};var jn=new n;a.expand=function(e,t,o){h.typeOf.object("sphere",e),h.typeOf.object("point",t),o=a.clone(e,o);let c=n.magnitude(n.subtract(t,o.center,jn));return c>o.radius&&(o.radius=c),o};a.intersectPlane=function(e,t){h.typeOf.object("sphere",e),h.typeOf.object("plane",t);let o=e.center,c=e.radius,r=t.normal,d=n.dot(r,o)+t.distance;return d<-c?U.OUTSIDE:d<c?U.INTERSECTING:U.INSIDE};a.transform=function(e,t,o){return h.typeOf.object("sphere",e),h.typeOf.object("transform",t),x(o)||(o=new a),o.center=Z.multiplyByPoint(t,e.center,o.center),o.radius=Z.getMaximumScale(t)*e.radius,o};var bn=new n;a.distanceSquaredTo=function(e,t){h.typeOf.object("sphere",e),h.typeOf.object("cartesian",t);let o=n.subtract(e.center,t,bn),c=n.magnitude(o)-e.radius;return c<=0?0:c*c};a.transformWithoutScale=function(e,t,o){return h.typeOf.object("sphere",e),h.typeOf.object("transform",t),x(o)||(o=new a),o.center=Z.multiplyByPoint(t,e.center,o.center),o.radius=e.radius,o};var qn=new n;a.computePlaneDistances=function(e,t,o,c){h.typeOf.object("sphere",e),h.typeOf.object("position",t),h.typeOf.object("direction",o),x(c)||(c=new cn);let r=n.subtract(e.center,t,qn),d=n.dot(o,r);return c.start=d-e.radius,c.stop=d+e.radius,c};var an=new n,Mn=new n,Tn=new n,Cn=new n,Rn=new n,En=new v,fn=new Array(8);for(let e=0;e<8;++e)fn[e]=new n;var dn=new k;a.projectTo2D=function(e,t,o){h.typeOf.object("sphere",e),dn._ellipsoid=N.default,t=t??dn;let c=t.ellipsoid,r=e.center,d=e.radius,f;n.equals(r,n.ZERO)?f=n.clone(n.UNIT_X,an):f=c.geodeticSurfaceNormal(r,an);let s=n.cross(n.UNIT_Z,f,Mn);n.normalize(s,s);let m=n.cross(f,s,Tn);n.normalize(m,m),n.multiplyByScalar(f,d,f),n.multiplyByScalar(m,d,m),n.multiplyByScalar(s,d,s);let z=n.negate(m,Rn),y=n.negate(s,Cn),u=fn,i=u[0];n.add(f,m,i),n.add(i,s,i),i=u[1],n.add(f,m,i),n.add(i,y,i),i=u[2],n.add(f,z,i),n.add(i,y,i),i=u[3],n.add(f,z,i),n.add(i,s,i),n.negate(f,f),i=u[4],n.add(f,m,i),n.add(i,s,i),i=u[5],n.add(f,m,i),n.add(i,y,i),i=u[6],n.add(f,z,i),n.add(i,y,i),i=u[7],n.add(f,z,i),n.add(i,s,i);let B=u.length;for(let p=0;p<B;++p){let S=u[p];n.add(r,S,S);let l=c.cartesianToCartographic(S,En);t.project(l,S)}o=a.fromPoints(u,o),r=o.center;let T=r.x,q=r.y,O=r.z;return r.x=O,r.y=T,r.z=q,o};a.isOccluded=function(e,t){return h.typeOf.object("sphere",e),h.typeOf.object("occluder",t),!t.isBoundingSphereVisible(e)};a.equals=function(e,t){return e===t||x(e)&&x(t)&&n.equals(e.center,t.center)&&e.radius===t.radius};a.prototype.intersectPlane=function(e){return a.intersectPlane(this,e)};a.prototype.distanceSquaredTo=function(e){return a.distanceSquaredTo(this,e)};a.prototype.computePlaneDistances=function(e,t,o){return a.computePlaneDistances(this,e,t,o)};a.prototype.isOccluded=function(e){return a.isOccluded(this,e)};a.prototype.equals=function(e){return a.equals(this,e)};a.prototype.clone=function(e){return a.clone(this,e)};a.prototype.volume=function(){let e=this.radius;return un*e*e*e};var Ln=a;export{k as a,U as b,cn as c,Ln as d}; diff --git a/public/Cesium/Workers/chunk-5YEWO3HT.js b/public/Cesium/Workers/chunk-5YEWO3HT.js new file mode 100644 index 000000000..94f5fcec1 --- /dev/null +++ b/public/Cesium/Workers/chunk-5YEWO3HT.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as z}from"./chunk-4IW2T6GF.js";import{h as I,i as b}from"./chunk-PSPPBZWI.js";import{a as W,b as O,d as L}from"./chunk-64RSHJUE.js";import{a as m}from"./chunk-3SSKC3VN.js";import{a as v}from"./chunk-LEYMRMBK.js";import{e as k}from"./chunk-VTAIKJXX.js";var Z=Math.cos,B=Math.sin,p=Math.sqrt,N={};N.computePosition=function(t,M,g,u,G,h,a){let e=M.radiiSquared,i=t.nwCorner,r=t.boundingRectangle,n=i.latitude-t.granYCos*u+G*t.granXSin,d=Z(n),X=B(n),Y=e.z*X,s=i.longitude+u*t.granYSin+G*t.granXCos,S=d*Z(s),f=d*B(s),w=e.x*S,R=e.y*f,_=p(w*S+R*f+Y*X);if(h.x=w/_,h.y=R/_,h.z=Y/_,g){let o=t.stNwCorner;k(o)?(n=o.latitude-t.stGranYCos*u+G*t.stGranXSin,s=o.longitude+u*t.stGranYSin+G*t.stGranXCos,a.x=(s-t.stWest)*t.lonScalar,a.y=(n-t.stSouth)*t.latScalar):(a.x=(s-r.west)*t.lonScalar,a.y=(n-r.south)*t.latScalar)}};var A=new b,l=new W,F=new O,j=new W,y=new z;function D(t,M,g,u,G,h,a){let e=Math.cos(M),i=u*e,r=g*e,n=Math.sin(M),d=u*n,X=g*n;y._ellipsoid=L.default,l=y.project(t,l),l=W.subtract(l,j,l);let Y=b.fromRotation(M,A);l=b.multiplyByVector(Y,l,l),l=W.add(l,j,l),t=y.unproject(l,t),h-=1,a-=1;let s=t.latitude,S=s+h*X,f=s-i*a,w=s-i*a+h*X,R=Math.max(s,S,f,w),_=Math.min(s,S,f,w),o=t.longitude,E=o+h*r,T=o+a*d,V=o+a*d+h*r,q=Math.max(o,E,T,V),x=Math.min(o,E,T,V);return{north:R,south:_,east:q,west:x,granYCos:i,granYSin:d,granXCos:r,granXSin:X,nwCorner:t}}N.computeOptions=function(t,M,g,u,G,h,a){let e=t.east,i=t.west,r=t.north,n=t.south,d=!1,X=!1;r===m.PI_OVER_TWO&&(d=!0),n===-m.PI_OVER_TWO&&(X=!0);let Y,s=r-n;i>e?Y=m.TWO_PI-i+e:Y=e-i;let S=Math.ceil(Y/M)+1,f=Math.ceil(s/M)+1,w=Y/(S-1),R=s/(f-1),_=I.northwest(t,h),o=I.center(t,F);(g!==0||u!==0)&&(o.longitude<_.longitude&&(o.longitude+=m.TWO_PI),y._ellipsoid=L.default,j=y.project(o,j));let E=R,T=w,V=0,q=0,x=I.clone(t,G),c={granYCos:E,granYSin:V,granXCos:T,granXSin:q,nwCorner:_,boundingRectangle:x,width:S,height:f,northCap:d,southCap:X};if(g!==0){let C=D(_,g,w,R,o,S,f);if(r=C.north,n=C.south,e=C.east,i=C.west,r<-m.PI_OVER_TWO||r>m.PI_OVER_TWO||n<-m.PI_OVER_TWO||n>m.PI_OVER_TWO)throw new v("Rotated rectangle is invalid. It crosses over either the north or south pole.");c.granYCos=C.granYCos,c.granYSin=C.granYSin,c.granXCos=C.granXCos,c.granXSin=C.granXSin,x.north=r,x.south=n,x.east=e,x.west=i}if(u!==0){g=g-u;let C=I.northwest(x,a),P=D(C,g,w,R,o,S,f);c.stGranYCos=P.granYCos,c.stGranXCos=P.granXCos,c.stGranYSin=P.granYSin,c.stGranXSin=P.granXSin,c.stNwCorner=C,c.stWest=P.west,c.stSouth=P.south}return c};var st=N;export{st as a}; diff --git a/public/Cesium/Workers/chunk-64RSHJUE.js b/public/Cesium/Workers/chunk-64RSHJUE.js new file mode 100644 index 000000000..65732a7ee --- /dev/null +++ b/public/Cesium/Workers/chunk-64RSHJUE.js @@ -0,0 +1,28 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as h}from"./chunk-3SSKC3VN.js";import{a as g,b as c}from"./chunk-LEYMRMBK.js";import{e as u}from"./chunk-VTAIKJXX.js";function f(n,e,o){this.x=n??0,this.y=e??0,this.z=o??0}f.fromSpherical=function(n,e){c.typeOf.object("spherical",n),u(e)||(e=new f);let o=n.clock,t=n.cone,i=n.magnitude??1,p=i*Math.sin(t);return e.x=p*Math.cos(o),e.y=p*Math.sin(o),e.z=i*Math.cos(t),e};f.fromElements=function(n,e,o,t){return u(t)?(t.x=n,t.y=e,t.z=o,t):new f(n,e,o)};f.clone=function(n,e){if(u(n))return u(e)?(e.x=n.x,e.y=n.y,e.z=n.z,e):new f(n.x,n.y,n.z)};f.fromCartesian4=f.clone;f.packedLength=3;f.pack=function(n,e,o){return c.typeOf.object("value",n),c.defined("array",e),o=o??0,e[o++]=n.x,e[o++]=n.y,e[o]=n.z,e};f.unpack=function(n,e,o){return c.defined("array",n),e=e??0,u(o)||(o=new f),o.x=n[e++],o.y=n[e++],o.z=n[e],o};f.packArray=function(n,e){c.defined("array",n);let o=n.length,t=o*3;if(!u(e))e=new Array(t);else{if(!Array.isArray(e)&&e.length!==t)throw new g("If result is a typed array, it must have exactly array.length * 3 elements");e.length!==t&&(e.length=t)}for(let i=0;i<o;++i)f.pack(n[i],e,i*3);return e};f.unpackArray=function(n,e){if(c.defined("array",n),c.typeOf.number.greaterThanOrEquals("array.length",n.length,3),n.length%3!==0)throw new g("array length must be a multiple of 3.");let o=n.length;u(e)?e.length=o/3:e=new Array(o/3);for(let t=0;t<o;t+=3){let i=t/3;e[i]=f.unpack(n,t,e[i])}return e};f.fromArray=f.unpack;f.maximumComponent=function(n){return c.typeOf.object("cartesian",n),Math.max(n.x,n.y,n.z)};f.minimumComponent=function(n){return c.typeOf.object("cartesian",n),Math.min(n.x,n.y,n.z)};f.minimumByComponent=function(n,e,o){return c.typeOf.object("first",n),c.typeOf.object("second",e),c.typeOf.object("result",o),o.x=Math.min(n.x,e.x),o.y=Math.min(n.y,e.y),o.z=Math.min(n.z,e.z),o};f.maximumByComponent=function(n,e,o){return c.typeOf.object("first",n),c.typeOf.object("second",e),c.typeOf.object("result",o),o.x=Math.max(n.x,e.x),o.y=Math.max(n.y,e.y),o.z=Math.max(n.z,e.z),o};f.clamp=function(n,e,o,t){c.typeOf.object("value",n),c.typeOf.object("min",e),c.typeOf.object("max",o),c.typeOf.object("result",t);let i=h.clamp(n.x,e.x,o.x),p=h.clamp(n.y,e.y,o.y),d=h.clamp(n.z,e.z,o.z);return t.x=i,t.y=p,t.z=d,t};f.magnitudeSquared=function(n){return c.typeOf.object("cartesian",n),n.x*n.x+n.y*n.y+n.z*n.z};f.magnitude=function(n){return Math.sqrt(f.magnitudeSquared(n))};var X=new f;f.distance=function(n,e){return c.typeOf.object("left",n),c.typeOf.object("right",e),f.subtract(n,e,X),f.magnitude(X)};f.distanceSquared=function(n,e){return c.typeOf.object("left",n),c.typeOf.object("right",e),f.subtract(n,e,X),f.magnitudeSquared(X)};f.normalize=function(n,e){c.typeOf.object("cartesian",n),c.typeOf.object("result",e);let o=f.magnitude(n);if(e.x=n.x/o,e.y=n.y/o,e.z=n.z/o,isNaN(e.x)||isNaN(e.y)||isNaN(e.z))throw new g("normalized result is not a number");return e};f.dot=function(n,e){return c.typeOf.object("left",n),c.typeOf.object("right",e),n.x*e.x+n.y*e.y+n.z*e.z};f.multiplyComponents=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o.x=n.x*e.x,o.y=n.y*e.y,o.z=n.z*e.z,o};f.divideComponents=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o.x=n.x/e.x,o.y=n.y/e.y,o.z=n.z/e.z,o};f.add=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o.x=n.x+e.x,o.y=n.y+e.y,o.z=n.z+e.z,o};f.subtract=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o.x=n.x-e.x,o.y=n.y-e.y,o.z=n.z-e.z,o};f.multiplyByScalar=function(n,e,o){return c.typeOf.object("cartesian",n),c.typeOf.number("scalar",e),c.typeOf.object("result",o),o.x=n.x*e,o.y=n.y*e,o.z=n.z*e,o};f.divideByScalar=function(n,e,o){return c.typeOf.object("cartesian",n),c.typeOf.number("scalar",e),c.typeOf.object("result",o),o.x=n.x/e,o.y=n.y/e,o.z=n.z/e,o};f.negate=function(n,e){return c.typeOf.object("cartesian",n),c.typeOf.object("result",e),e.x=-n.x,e.y=-n.y,e.z=-n.z,e};f.abs=function(n,e){return c.typeOf.object("cartesian",n),c.typeOf.object("result",e),e.x=Math.abs(n.x),e.y=Math.abs(n.y),e.z=Math.abs(n.z),e};var Tn=new f;f.lerp=function(n,e,o,t){return c.typeOf.object("start",n),c.typeOf.object("end",e),c.typeOf.number("t",o),c.typeOf.object("result",t),f.multiplyByScalar(e,o,Tn),t=f.multiplyByScalar(n,1-o,t),f.add(Tn,t,t)};var Y=new f,dn=new f;f.angleBetween=function(n,e){c.typeOf.object("left",n),c.typeOf.object("right",e),f.normalize(n,Y),f.normalize(e,dn);let o=f.dot(Y,dn),t=f.magnitude(f.cross(Y,dn,Y));return Math.atan2(t,o)};var Yn=new f;f.mostOrthogonalAxis=function(n,e){c.typeOf.object("cartesian",n),c.typeOf.object("result",e);let o=f.normalize(n,Yn);return f.abs(o,o),o.x<=o.y?o.x<=o.z?e=f.clone(f.UNIT_X,e):e=f.clone(f.UNIT_Z,e):o.y<=o.z?e=f.clone(f.UNIT_Y,e):e=f.clone(f.UNIT_Z,e),e};f.projectVector=function(n,e,o){c.defined("a",n),c.defined("b",e),c.defined("result",o);let t=f.dot(n,e)/f.dot(e,e);return f.multiplyByScalar(e,t,o)};f.equals=function(n,e){return n===e||u(n)&&u(e)&&n.x===e.x&&n.y===e.y&&n.z===e.z};f.equalsArray=function(n,e,o){return n.x===e[o]&&n.y===e[o+1]&&n.z===e[o+2]};f.equalsEpsilon=function(n,e,o,t){return n===e||u(n)&&u(e)&&h.equalsEpsilon(n.x,e.x,o,t)&&h.equalsEpsilon(n.y,e.y,o,t)&&h.equalsEpsilon(n.z,e.z,o,t)};f.cross=function(n,e,o){c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o);let t=n.x,i=n.y,p=n.z,d=e.x,m=e.y,s=e.z,b=i*s-p*m,w=p*d-t*s,S=t*m-i*d;return o.x=b,o.y=w,o.z=S,o};f.midpoint=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o.x=(n.x+e.x)*.5,o.y=(n.y+e.y)*.5,o.z=(n.z+e.z)*.5,o};f.fromDegrees=function(n,e,o,t,i){return c.typeOf.number("longitude",n),c.typeOf.number("latitude",e),n=h.toRadians(n),e=h.toRadians(e),f.fromRadians(n,e,o,t,i)};var T=new f,V=new f;f._ellipsoidRadiiSquared=new f(6378137*6378137,6378137*6378137,6356752314245179e-9*6356752314245179e-9);f.fromRadians=function(n,e,o,t,i){c.typeOf.number("longitude",n),c.typeOf.number("latitude",e),o=o??0;let p=u(t)?t.radiiSquared:f._ellipsoidRadiiSquared,d=Math.cos(e);T.x=d*Math.cos(n),T.y=d*Math.sin(n),T.z=Math.sin(e),T=f.normalize(T,T),f.multiplyComponents(p,T,V);let m=Math.sqrt(f.dot(T,V));return V=f.divideByScalar(V,m,V),T=f.multiplyByScalar(T,o,T),u(i)||(i=new f),f.add(V,T,i)};f.fromDegreesArray=function(n,e,o){if(c.defined("coordinates",n),n.length<2||n.length%2!==0)throw new g("the number of coordinates must be a multiple of 2 and at least 2");let t=n.length;u(o)?o.length=t/2:o=new Array(t/2);for(let i=0;i<t;i+=2){let p=n[i],d=n[i+1],m=i/2;o[m]=f.fromDegrees(p,d,0,e,o[m])}return o};f.fromRadiansArray=function(n,e,o){if(c.defined("coordinates",n),n.length<2||n.length%2!==0)throw new g("the number of coordinates must be a multiple of 2 and at least 2");let t=n.length;u(o)?o.length=t/2:o=new Array(t/2);for(let i=0;i<t;i+=2){let p=n[i],d=n[i+1],m=i/2;o[m]=f.fromRadians(p,d,0,e,o[m])}return o};f.fromDegreesArrayHeights=function(n,e,o){if(c.defined("coordinates",n),n.length<3||n.length%3!==0)throw new g("the number of coordinates must be a multiple of 3 and at least 3");let t=n.length;u(o)?o.length=t/3:o=new Array(t/3);for(let i=0;i<t;i+=3){let p=n[i],d=n[i+1],m=n[i+2],s=i/3;o[s]=f.fromDegrees(p,d,m,e,o[s])}return o};f.fromRadiansArrayHeights=function(n,e,o){if(c.defined("coordinates",n),n.length<3||n.length%3!==0)throw new g("the number of coordinates must be a multiple of 3 and at least 3");let t=n.length;u(o)?o.length=t/3:o=new Array(t/3);for(let i=0;i<t;i+=3){let p=n[i],d=n[i+1],m=n[i+2],s=i/3;o[s]=f.fromRadians(p,d,m,e,o[s])}return o};f.ZERO=Object.freeze(new f(0,0,0));f.ONE=Object.freeze(new f(1,1,1));f.UNIT_X=Object.freeze(new f(1,0,0));f.UNIT_Y=Object.freeze(new f(0,1,0));f.UNIT_Z=Object.freeze(new f(0,0,1));f.prototype.clone=function(n){return f.clone(this,n)};f.prototype.equals=function(n){return f.equals(this,n)};f.prototype.equalsEpsilon=function(n,e,o){return f.equalsEpsilon(this,n,e,o)};f.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z})`};var y=f;var Xn=new y,Gn=new y;function Hn(n,e,o,t,i){if(!u(n))throw new g("cartesian is required.");if(!u(e))throw new g("oneOverRadii is required.");if(!u(o))throw new g("oneOverRadiiSquared is required.");if(!u(t))throw new g("centerToleranceSquared is required.");let p=n.x,d=n.y,m=n.z,s=e.x,b=e.y,w=e.z,S=p*p*s*s,R=d*d*b*b,M=m*m*w*w,C=S+R+M,_=Math.sqrt(1/C),N=y.multiplyByScalar(n,_,Xn);if(C<t)return isFinite(_)?y.clone(N,i):void 0;let B=o.x,U=o.y,P=o.z,F=Gn;F.x=N.x*B*2,F.y=N.y*U*2,F.z=N.z*P*2;let Z=(1-_)*y.magnitude(n)/(.5*y.magnitude(F)),Mn=0,rn,qn,I,L,W,pn,un,an,En,An,_n;do{Z-=Mn,I=1/(1+Z*B),L=1/(1+Z*U),W=1/(1+Z*P),pn=I*I,un=L*L,an=W*W,En=pn*I,An=un*L,_n=an*W,rn=S*pn+R*un+M*an-1,qn=S*En*B+R*An*U+M*_n*P;let Zn=-2*qn;Mn=rn/Zn}while(Math.abs(rn)>h.EPSILON12);return u(i)?(i.x=p*I,i.y=d*L,i.z=m*W,i):new y(p*I,d*L,m*W)}var G=Hn;function j(n,e,o){this.longitude=n??0,this.latitude=e??0,this.height=o??0}j.fromRadians=function(n,e,o,t){return c.typeOf.number("longitude",n),c.typeOf.number("latitude",e),o=o??0,u(t)?(t.longitude=n,t.latitude=e,t.height=o,t):new j(n,e,o)};j.fromDegrees=function(n,e,o,t){return c.typeOf.number("longitude",n),c.typeOf.number("latitude",e),n=h.toRadians(n),e=h.toRadians(e),j.fromRadians(n,e,o,t)};var Qn=new y,Jn=new y,Kn=new y;j._ellipsoidOneOverRadii=new y(1/6378137,1/6378137,1/6356752314245179e-9);j._ellipsoidOneOverRadiiSquared=new y(1/(6378137*6378137),1/(6378137*6378137),1/(6356752314245179e-9*6356752314245179e-9));j._ellipsoidCenterToleranceSquared=h.EPSILON1;j.fromCartesian=function(n,e,o){let t=u(e)?e.oneOverRadii:j._ellipsoidOneOverRadii,i=u(e)?e.oneOverRadiiSquared:j._ellipsoidOneOverRadiiSquared,p=u(e)?e._centerToleranceSquared:j._ellipsoidCenterToleranceSquared,d=G(n,t,i,p,Jn);if(!u(d))return;let m=y.multiplyComponents(d,i,Qn);m=y.normalize(m,m);let s=y.subtract(n,d,Kn),b=Math.atan2(m.y,m.x),w=Math.asin(m.z),S=h.sign(y.dot(s,n))*y.magnitude(s);return u(o)?(o.longitude=b,o.latitude=w,o.height=S,o):new j(b,w,S)};j.toCartesian=function(n,e,o){return c.defined("cartographic",n),y.fromRadians(n.longitude,n.latitude,n.height,e,o)};j.clone=function(n,e){if(u(n))return u(e)?(e.longitude=n.longitude,e.latitude=n.latitude,e.height=n.height,e):new j(n.longitude,n.latitude,n.height)};j.equals=function(n,e){return n===e||u(n)&&u(e)&&n.longitude===e.longitude&&n.latitude===e.latitude&&n.height===e.height};j.equalsEpsilon=function(n,e,o){return o=o??0,n===e||u(n)&&u(e)&&Math.abs(n.longitude-e.longitude)<=o&&Math.abs(n.latitude-e.latitude)<=o&&Math.abs(n.height-e.height)<=o};j.ZERO=Object.freeze(new j(0,0,0));j.prototype.clone=function(n){return j.clone(this,n)};j.prototype.equals=function(n){return j.equals(this,n)};j.prototype.equalsEpsilon=function(n,e){return j.equalsEpsilon(this,n,e)};j.prototype.toString=function(){return`(${this.longitude}, ${this.latitude}, ${this.height})`};var $=j;function a(n,e){this.x=n??0,this.y=e??0}a.fromElements=function(n,e,o){return u(o)?(o.x=n,o.y=e,o):new a(n,e)};a.clone=function(n,e){if(u(n))return u(e)?(e.x=n.x,e.y=n.y,e):new a(n.x,n.y)};a.fromCartesian3=a.clone;a.fromCartesian4=a.clone;a.packedLength=2;a.pack=function(n,e,o){return c.typeOf.object("value",n),c.defined("array",e),o=o??0,e[o++]=n.x,e[o]=n.y,e};a.unpack=function(n,e,o){return c.defined("array",n),e=e??0,u(o)||(o=new a),o.x=n[e++],o.y=n[e],o};a.packArray=function(n,e){c.defined("array",n);let o=n.length,t=o*2;if(!u(e))e=new Array(t);else{if(!Array.isArray(e)&&e.length!==t)throw new g("If result is a typed array, it must have exactly array.length * 2 elements");e.length!==t&&(e.length=t)}for(let i=0;i<o;++i)a.pack(n[i],e,i*2);return e};a.unpackArray=function(n,e){if(c.defined("array",n),c.typeOf.number.greaterThanOrEquals("array.length",n.length,2),n.length%2!==0)throw new g("array length must be a multiple of 2.");let o=n.length;u(e)?e.length=o/2:e=new Array(o/2);for(let t=0;t<o;t+=2){let i=t/2;e[i]=a.unpack(n,t,e[i])}return e};a.fromArray=a.unpack;a.maximumComponent=function(n){return c.typeOf.object("cartesian",n),Math.max(n.x,n.y)};a.minimumComponent=function(n){return c.typeOf.object("cartesian",n),Math.min(n.x,n.y)};a.minimumByComponent=function(n,e,o){return c.typeOf.object("first",n),c.typeOf.object("second",e),c.typeOf.object("result",o),o.x=Math.min(n.x,e.x),o.y=Math.min(n.y,e.y),o};a.maximumByComponent=function(n,e,o){return c.typeOf.object("first",n),c.typeOf.object("second",e),c.typeOf.object("result",o),o.x=Math.max(n.x,e.x),o.y=Math.max(n.y,e.y),o};a.clamp=function(n,e,o,t){c.typeOf.object("value",n),c.typeOf.object("min",e),c.typeOf.object("max",o),c.typeOf.object("result",t);let i=h.clamp(n.x,e.x,o.x),p=h.clamp(n.y,e.y,o.y);return t.x=i,t.y=p,t};a.magnitudeSquared=function(n){return c.typeOf.object("cartesian",n),n.x*n.x+n.y*n.y};a.magnitude=function(n){return Math.sqrt(a.magnitudeSquared(n))};var H=new a;a.distance=function(n,e){return c.typeOf.object("left",n),c.typeOf.object("right",e),a.subtract(n,e,H),a.magnitude(H)};a.distanceSquared=function(n,e){return c.typeOf.object("left",n),c.typeOf.object("right",e),a.subtract(n,e,H),a.magnitudeSquared(H)};a.normalize=function(n,e){c.typeOf.object("cartesian",n),c.typeOf.object("result",e);let o=a.magnitude(n);if(e.x=n.x/o,e.y=n.y/o,isNaN(e.x)||isNaN(e.y))throw new g("normalized result is not a number");return e};a.dot=function(n,e){return c.typeOf.object("left",n),c.typeOf.object("right",e),n.x*e.x+n.y*e.y};a.cross=function(n,e){return c.typeOf.object("left",n),c.typeOf.object("right",e),n.x*e.y-n.y*e.x};a.multiplyComponents=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o.x=n.x*e.x,o.y=n.y*e.y,o};a.divideComponents=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o.x=n.x/e.x,o.y=n.y/e.y,o};a.add=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o.x=n.x+e.x,o.y=n.y+e.y,o};a.subtract=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o.x=n.x-e.x,o.y=n.y-e.y,o};a.multiplyByScalar=function(n,e,o){return c.typeOf.object("cartesian",n),c.typeOf.number("scalar",e),c.typeOf.object("result",o),o.x=n.x*e,o.y=n.y*e,o};a.divideByScalar=function(n,e,o){return c.typeOf.object("cartesian",n),c.typeOf.number("scalar",e),c.typeOf.object("result",o),o.x=n.x/e,o.y=n.y/e,o};a.negate=function(n,e){return c.typeOf.object("cartesian",n),c.typeOf.object("result",e),e.x=-n.x,e.y=-n.y,e};a.abs=function(n,e){return c.typeOf.object("cartesian",n),c.typeOf.object("result",e),e.x=Math.abs(n.x),e.y=Math.abs(n.y),e};var ln=new a;a.lerp=function(n,e,o,t){return c.typeOf.object("start",n),c.typeOf.object("end",e),c.typeOf.number("t",o),c.typeOf.object("result",t),a.multiplyByScalar(e,o,ln),t=a.multiplyByScalar(n,1-o,t),a.add(ln,t,t)};var Cn=new a,Nn=new a;a.angleBetween=function(n,e){return c.typeOf.object("left",n),c.typeOf.object("right",e),a.normalize(n,Cn),a.normalize(e,Nn),h.acosClamped(a.dot(Cn,Nn))};var ne=new a;a.mostOrthogonalAxis=function(n,e){c.typeOf.object("cartesian",n),c.typeOf.object("result",e);let o=a.normalize(n,ne);return a.abs(o,o),o.x<=o.y?e=a.clone(a.UNIT_X,e):e=a.clone(a.UNIT_Y,e),e};a.equals=function(n,e){return n===e||u(n)&&u(e)&&n.x===e.x&&n.y===e.y};a.equalsArray=function(n,e,o){return n.x===e[o]&&n.y===e[o+1]};a.equalsEpsilon=function(n,e,o,t){return n===e||u(n)&&u(e)&&h.equalsEpsilon(n.x,e.x,o,t)&&h.equalsEpsilon(n.y,e.y,o,t)};a.ZERO=Object.freeze(new a(0,0));a.ONE=Object.freeze(new a(1,1));a.UNIT_X=Object.freeze(new a(1,0));a.UNIT_Y=Object.freeze(new a(0,1));a.prototype.clone=function(n){return a.clone(this,n)};a.prototype.equals=function(n){return a.equals(this,n)};a.prototype.equalsEpsilon=function(n,e,o){return a.equalsEpsilon(this,n,e,o)};a.prototype.toString=function(){return`(${this.x}, ${this.y})`};var yn=a;function Fn(n,e,o,t){e=e??0,o=o??0,t=t??0,c.typeOf.number.greaterThanOrEquals("x",e,0),c.typeOf.number.greaterThanOrEquals("y",o,0),c.typeOf.number.greaterThanOrEquals("z",t,0),n._radii=new y(e,o,t),n._radiiSquared=new y(e*e,o*o,t*t),n._radiiToTheFourth=new y(e*e*e*e,o*o*o*o,t*t*t*t),n._oneOverRadii=new y(e===0?0:1/e,o===0?0:1/o,t===0?0:1/t),n._oneOverRadiiSquared=new y(e===0?0:1/(e*e),o===0?0:1/(o*o),t===0?0:1/(t*t)),n._minimumRadius=Math.min(e,o,t),n._maximumRadius=Math.max(e,o,t),n._centerToleranceSquared=h.EPSILON1,n._radiiSquared.z!==0&&(n._squaredXOverSquaredZ=n._radiiSquared.x/n._radiiSquared.z)}function O(n,e,o){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,this._squaredXOverSquaredZ=void 0,Fn(this,n,e,o)}Object.defineProperties(O.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}});O.clone=function(n,e){if(!u(n))return;let o=n._radii;return u(e)?(y.clone(o,e._radii),y.clone(n._radiiSquared,e._radiiSquared),y.clone(n._radiiToTheFourth,e._radiiToTheFourth),y.clone(n._oneOverRadii,e._oneOverRadii),y.clone(n._oneOverRadiiSquared,e._oneOverRadiiSquared),e._minimumRadius=n._minimumRadius,e._maximumRadius=n._maximumRadius,e._centerToleranceSquared=n._centerToleranceSquared,e):new O(o.x,o.y,o.z)};O.fromCartesian3=function(n,e){return u(e)||(e=new O),u(n)&&Fn(e,n.x,n.y,n.z),e};O.WGS84=Object.freeze(new O(6378137,6378137,6356752314245179e-9));O.UNIT_SPHERE=Object.freeze(new O(1,1,1));O.MOON=Object.freeze(new O(h.LUNAR_RADIUS,h.LUNAR_RADIUS,h.LUNAR_RADIUS));O._default=O.WGS84;Object.defineProperties(O,{default:{get:function(){return O._default},set:function(n){c.typeOf.object("value",n),O._default=n,y._ellipsoidRadiiSquared=n.radiiSquared,$._ellipsoidOneOverRadii=n.oneOverRadii,$._ellipsoidOneOverRadiiSquared=n.oneOverRadiiSquared,$._ellipsoidCenterToleranceSquared=n._centerToleranceSquared}}});O.prototype.clone=function(n){return O.clone(this,n)};O.packedLength=y.packedLength;O.pack=function(n,e,o){return c.typeOf.object("value",n),c.defined("array",e),o=o??0,y.pack(n._radii,e,o),e};O.unpack=function(n,e,o){c.defined("array",n),e=e??0;let t=y.unpack(n,e);return O.fromCartesian3(t,o)};O.prototype.geocentricSurfaceNormal=y.normalize;O.prototype.geodeticSurfaceNormalCartographic=function(n,e){c.typeOf.object("cartographic",n);let o=n.longitude,t=n.latitude,i=Math.cos(t),p=i*Math.cos(o),d=i*Math.sin(o),m=Math.sin(t);return u(e)||(e=new y),e.x=p,e.y=d,e.z=m,y.normalize(e,e)};O.prototype.geodeticSurfaceNormal=function(n,e){if(c.typeOf.object("cartesian",n),isNaN(n.x)||isNaN(n.y)||isNaN(n.z))throw new g("cartesian has a NaN component");if(!y.equalsEpsilon(n,y.ZERO,h.EPSILON14))return u(e)||(e=new y),e=y.multiplyComponents(n,this._oneOverRadiiSquared,e),y.normalize(e,e)};var ee=new y,oe=new y;O.prototype.cartographicToCartesian=function(n,e){let o=ee,t=oe;this.geodeticSurfaceNormalCartographic(n,o),y.multiplyComponents(this._radiiSquared,o,t);let i=Math.sqrt(y.dot(o,t));return y.divideByScalar(t,i,t),y.multiplyByScalar(o,n.height,o),u(e)||(e=new y),y.add(t,o,e)};O.prototype.cartographicArrayToCartesianArray=function(n,e){c.defined("cartographics",n);let o=n.length;u(e)?e.length=o:e=new Array(o);for(let t=0;t<o;t++)e[t]=this.cartographicToCartesian(n[t],e[t]);return e};var te=new y,ce=new y,ie=new y;O.prototype.cartesianToCartographic=function(n,e){let o=this.scaleToGeodeticSurface(n,ce);if(!u(o))return;let t=this.geodeticSurfaceNormal(o,te),i=y.subtract(n,o,ie),p=Math.atan2(t.y,t.x),d=Math.asin(t.z),m=h.sign(y.dot(i,n))*y.magnitude(i);return u(e)?(e.longitude=p,e.latitude=d,e.height=m,e):new $(p,d,m)};O.prototype.cartesianArrayToCartographicArray=function(n,e){c.defined("cartesians",n);let o=n.length;u(e)?e.length=o:e=new Array(o);for(let t=0;t<o;++t)e[t]=this.cartesianToCartographic(n[t],e[t]);return e};O.prototype.scaleToGeodeticSurface=function(n,e){return G(n,this._oneOverRadii,this._oneOverRadiiSquared,this._centerToleranceSquared,e)};O.prototype.scaleToGeocentricSurface=function(n,e){c.typeOf.object("cartesian",n),u(e)||(e=new y);let o=n.x,t=n.y,i=n.z,p=this._oneOverRadiiSquared,d=1/Math.sqrt(o*o*p.x+t*t*p.y+i*i*p.z);return y.multiplyByScalar(n,d,e)};O.prototype.transformPositionToScaledSpace=function(n,e){return u(e)||(e=new y),y.multiplyComponents(n,this._oneOverRadii,e)};O.prototype.transformPositionFromScaledSpace=function(n,e){return u(e)||(e=new y),y.multiplyComponents(n,this._radii,e)};O.prototype.equals=function(n){return this===n||u(n)&&y.equals(this._radii,n._radii)};O.prototype.toString=function(){return this._radii.toString()};O.prototype.getSurfaceNormalIntersectionWithZAxis=function(n,e,o){if(c.typeOf.object("position",n),!h.equalsEpsilon(this._radii.x,this._radii.y,h.EPSILON15))throw new g("Ellipsoid must be an ellipsoid of revolution (radii.x == radii.y)");c.typeOf.number.greaterThan("Ellipsoid.radii.z",this._radii.z,0),e=e??0;let t=this._squaredXOverSquaredZ;if(u(o)||(o=new y),o.x=0,o.y=0,o.z=n.z*(1-t),!(Math.abs(o.z)>=this._radii.z-e))return o};var fe=new y;O.prototype.getLocalCurvature=function(n,e){c.typeOf.object("surfacePosition",n),u(e)||(e=new yn);let o=this.getSurfaceNormalIntersectionWithZAxis(n,0,fe),t=y.distance(n,o),i=this.minimumRadius*t/this.maximumRadius**2,p=t*i**2;return yn.fromElements(1/t,1/p,e)};var re=[.14887433898163,.43339539412925,.67940956829902,.86506336668898,.97390652851717,0],pe=[.29552422471475,.26926671930999,.21908636251598,.14945134915058,.066671344308684,0];function xn(n,e,o){c.typeOf.number("a",n),c.typeOf.number("b",e),c.typeOf.func("func",o);let t=.5*(e+n),i=.5*(e-n),p=0;for(let d=0;d<5;d++){let m=i*re[d];p+=pe[d]*(o(t+m)+o(t-m))}return p*=i,p}O.prototype.surfaceArea=function(n){c.typeOf.object("rectangle",n);let e=n.west,o=n.east,t=n.south,i=n.north;for(;o<e;)o+=h.TWO_PI;let p=this._radiiSquared,d=p.x,m=p.y,s=p.z,b=d*m;return xn(t,i,function(w){let S=Math.cos(w),R=Math.sin(w);return Math.cos(w)*xn(e,o,function(M){let C=Math.cos(M),_=Math.sin(M);return Math.sqrt(b*R*R+s*(m*C*C+d*_*_)*S*S)})})};var oo=O;function r(n,e,o,t,i,p,d,m,s){this[0]=n??0,this[1]=t??0,this[2]=d??0,this[3]=e??0,this[4]=i??0,this[5]=m??0,this[6]=o??0,this[7]=p??0,this[8]=s??0}r.packedLength=9;r.pack=function(n,e,o){return c.typeOf.object("value",n),c.defined("array",e),o=o??0,e[o++]=n[0],e[o++]=n[1],e[o++]=n[2],e[o++]=n[3],e[o++]=n[4],e[o++]=n[5],e[o++]=n[6],e[o++]=n[7],e[o++]=n[8],e};r.unpack=function(n,e,o){return c.defined("array",n),e=e??0,u(o)||(o=new r),o[0]=n[e++],o[1]=n[e++],o[2]=n[e++],o[3]=n[e++],o[4]=n[e++],o[5]=n[e++],o[6]=n[e++],o[7]=n[e++],o[8]=n[e++],o};r.packArray=function(n,e){c.defined("array",n);let o=n.length,t=o*9;if(!u(e))e=new Array(t);else{if(!Array.isArray(e)&&e.length!==t)throw new g("If result is a typed array, it must have exactly array.length * 9 elements");e.length!==t&&(e.length=t)}for(let i=0;i<o;++i)r.pack(n[i],e,i*9);return e};r.unpackArray=function(n,e){if(c.defined("array",n),c.typeOf.number.greaterThanOrEquals("array.length",n.length,9),n.length%9!==0)throw new g("array length must be a multiple of 9.");let o=n.length;u(e)?e.length=o/9:e=new Array(o/9);for(let t=0;t<o;t+=9){let i=t/9;e[i]=r.unpack(n,t,e[i])}return e};r.clone=function(n,e){if(u(n))return u(e)?(e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e):new r(n[0],n[3],n[6],n[1],n[4],n[7],n[2],n[5],n[8])};r.fromArray=r.unpack;r.fromColumnMajorArray=function(n,e){return c.defined("values",n),r.clone(n,e)};r.fromRowMajorArray=function(n,e){return c.defined("values",n),u(e)?(e[0]=n[0],e[1]=n[3],e[2]=n[6],e[3]=n[1],e[4]=n[4],e[5]=n[7],e[6]=n[2],e[7]=n[5],e[8]=n[8],e):new r(n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7],n[8])};r.fromQuaternion=function(n,e){c.typeOf.object("quaternion",n);let o=n.x*n.x,t=n.x*n.y,i=n.x*n.z,p=n.x*n.w,d=n.y*n.y,m=n.y*n.z,s=n.y*n.w,b=n.z*n.z,w=n.z*n.w,S=n.w*n.w,R=o-d-b+S,M=2*(t-w),C=2*(i+s),_=2*(t+w),N=-o+d-b+S,B=2*(m-p),U=2*(i-s),P=2*(m+p),F=-o-d+b+S;return u(e)?(e[0]=R,e[1]=_,e[2]=U,e[3]=M,e[4]=N,e[5]=P,e[6]=C,e[7]=B,e[8]=F,e):new r(R,M,C,_,N,B,U,P,F)};r.fromHeadingPitchRoll=function(n,e){c.typeOf.object("headingPitchRoll",n);let o=Math.cos(-n.pitch),t=Math.cos(-n.heading),i=Math.cos(n.roll),p=Math.sin(-n.pitch),d=Math.sin(-n.heading),m=Math.sin(n.roll),s=o*t,b=-i*d+m*p*t,w=m*d+i*p*t,S=o*d,R=i*t+m*p*d,M=-m*t+i*p*d,C=-p,_=m*o,N=i*o;return u(e)?(e[0]=s,e[1]=S,e[2]=C,e[3]=b,e[4]=R,e[5]=_,e[6]=w,e[7]=M,e[8]=N,e):new r(s,b,w,S,R,M,C,_,N)};r.fromScale=function(n,e){return c.typeOf.object("scale",n),u(e)?(e[0]=n.x,e[1]=0,e[2]=0,e[3]=0,e[4]=n.y,e[5]=0,e[6]=0,e[7]=0,e[8]=n.z,e):new r(n.x,0,0,0,n.y,0,0,0,n.z)};r.fromUniformScale=function(n,e){return c.typeOf.number("scale",n),u(e)?(e[0]=n,e[1]=0,e[2]=0,e[3]=0,e[4]=n,e[5]=0,e[6]=0,e[7]=0,e[8]=n,e):new r(n,0,0,0,n,0,0,0,n)};r.fromCrossProduct=function(n,e){return c.typeOf.object("vector",n),u(e)?(e[0]=0,e[1]=n.z,e[2]=-n.y,e[3]=-n.z,e[4]=0,e[5]=n.x,e[6]=n.y,e[7]=-n.x,e[8]=0,e):new r(0,-n.z,n.y,n.z,0,-n.x,-n.y,n.x,0)};r.fromRotationX=function(n,e){c.typeOf.number("angle",n);let o=Math.cos(n),t=Math.sin(n);return u(e)?(e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=o,e[5]=t,e[6]=0,e[7]=-t,e[8]=o,e):new r(1,0,0,0,o,-t,0,t,o)};r.fromRotationY=function(n,e){c.typeOf.number("angle",n);let o=Math.cos(n),t=Math.sin(n);return u(e)?(e[0]=o,e[1]=0,e[2]=-t,e[3]=0,e[4]=1,e[5]=0,e[6]=t,e[7]=0,e[8]=o,e):new r(o,0,t,0,1,0,-t,0,o)};r.fromRotationZ=function(n,e){c.typeOf.number("angle",n);let o=Math.cos(n),t=Math.sin(n);return u(e)?(e[0]=o,e[1]=t,e[2]=0,e[3]=-t,e[4]=o,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e):new r(o,-t,0,t,o,0,0,0,1)};r.toArray=function(n,e){return c.typeOf.object("matrix",n),u(e)?(e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e):[n[0],n[1],n[2],n[3],n[4],n[5],n[6],n[7],n[8]]};r.getElementIndex=function(n,e){return c.typeOf.number.greaterThanOrEquals("row",e,0),c.typeOf.number.lessThanOrEquals("row",e,2),c.typeOf.number.greaterThanOrEquals("column",n,0),c.typeOf.number.lessThanOrEquals("column",n,2),n*3+e};r.getColumn=function(n,e,o){c.typeOf.object("matrix",n),c.typeOf.number.greaterThanOrEquals("index",e,0),c.typeOf.number.lessThanOrEquals("index",e,2),c.typeOf.object("result",o);let t=e*3,i=n[t],p=n[t+1],d=n[t+2];return o.x=i,o.y=p,o.z=d,o};r.setColumn=function(n,e,o,t){c.typeOf.object("matrix",n),c.typeOf.number.greaterThanOrEquals("index",e,0),c.typeOf.number.lessThanOrEquals("index",e,2),c.typeOf.object("cartesian",o),c.typeOf.object("result",t),t=r.clone(n,t);let i=e*3;return t[i]=o.x,t[i+1]=o.y,t[i+2]=o.z,t};r.getRow=function(n,e,o){c.typeOf.object("matrix",n),c.typeOf.number.greaterThanOrEquals("index",e,0),c.typeOf.number.lessThanOrEquals("index",e,2),c.typeOf.object("result",o);let t=n[e],i=n[e+3],p=n[e+6];return o.x=t,o.y=i,o.z=p,o};r.setRow=function(n,e,o,t){return c.typeOf.object("matrix",n),c.typeOf.number.greaterThanOrEquals("index",e,0),c.typeOf.number.lessThanOrEquals("index",e,2),c.typeOf.object("cartesian",o),c.typeOf.object("result",t),t=r.clone(n,t),t[e]=o.x,t[e+3]=o.y,t[e+6]=o.z,t};var ue=new y;r.setScale=function(n,e,o){c.typeOf.object("matrix",n),c.typeOf.object("scale",e),c.typeOf.object("result",o);let t=r.getScale(n,ue),i=e.x/t.x,p=e.y/t.y,d=e.z/t.z;return o[0]=n[0]*i,o[1]=n[1]*i,o[2]=n[2]*i,o[3]=n[3]*p,o[4]=n[4]*p,o[5]=n[5]*p,o[6]=n[6]*d,o[7]=n[7]*d,o[8]=n[8]*d,o};var ae=new y;r.setUniformScale=function(n,e,o){c.typeOf.object("matrix",n),c.typeOf.number("scale",e),c.typeOf.object("result",o);let t=r.getScale(n,ae),i=e/t.x,p=e/t.y,d=e/t.z;return o[0]=n[0]*i,o[1]=n[1]*i,o[2]=n[2]*i,o[3]=n[3]*p,o[4]=n[4]*p,o[5]=n[5]*p,o[6]=n[6]*d,o[7]=n[7]*d,o[8]=n[8]*d,o};var mn=new y;r.getScale=function(n,e){return c.typeOf.object("matrix",n),c.typeOf.object("result",e),e.x=y.magnitude(y.fromElements(n[0],n[1],n[2],mn)),e.y=y.magnitude(y.fromElements(n[3],n[4],n[5],mn)),e.z=y.magnitude(y.fromElements(n[6],n[7],n[8],mn)),e};var kn=new y;r.getMaximumScale=function(n){return r.getScale(n,kn),y.maximumComponent(kn)};var de=new y;r.setRotation=function(n,e,o){c.typeOf.object("matrix",n),c.typeOf.object("result",o);let t=r.getScale(n,de);return o[0]=e[0]*t.x,o[1]=e[1]*t.x,o[2]=e[2]*t.x,o[3]=e[3]*t.y,o[4]=e[4]*t.y,o[5]=e[5]*t.y,o[6]=e[6]*t.z,o[7]=e[7]*t.z,o[8]=e[8]*t.z,o};var ye=new y;r.getRotation=function(n,e){c.typeOf.object("matrix",n),c.typeOf.object("result",e);let o=r.getScale(n,ye);return e[0]=n[0]/o.x,e[1]=n[1]/o.x,e[2]=n[2]/o.x,e[3]=n[3]/o.y,e[4]=n[4]/o.y,e[5]=n[5]/o.y,e[6]=n[6]/o.z,e[7]=n[7]/o.z,e[8]=n[8]/o.z,e};r.multiply=function(n,e,o){c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o);let t=n[0]*e[0]+n[3]*e[1]+n[6]*e[2],i=n[1]*e[0]+n[4]*e[1]+n[7]*e[2],p=n[2]*e[0]+n[5]*e[1]+n[8]*e[2],d=n[0]*e[3]+n[3]*e[4]+n[6]*e[5],m=n[1]*e[3]+n[4]*e[4]+n[7]*e[5],s=n[2]*e[3]+n[5]*e[4]+n[8]*e[5],b=n[0]*e[6]+n[3]*e[7]+n[6]*e[8],w=n[1]*e[6]+n[4]*e[7]+n[7]*e[8],S=n[2]*e[6]+n[5]*e[7]+n[8]*e[8];return o[0]=t,o[1]=i,o[2]=p,o[3]=d,o[4]=m,o[5]=s,o[6]=b,o[7]=w,o[8]=S,o};r.add=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o[0]=n[0]+e[0],o[1]=n[1]+e[1],o[2]=n[2]+e[2],o[3]=n[3]+e[3],o[4]=n[4]+e[4],o[5]=n[5]+e[5],o[6]=n[6]+e[6],o[7]=n[7]+e[7],o[8]=n[8]+e[8],o};r.subtract=function(n,e,o){return c.typeOf.object("left",n),c.typeOf.object("right",e),c.typeOf.object("result",o),o[0]=n[0]-e[0],o[1]=n[1]-e[1],o[2]=n[2]-e[2],o[3]=n[3]-e[3],o[4]=n[4]-e[4],o[5]=n[5]-e[5],o[6]=n[6]-e[6],o[7]=n[7]-e[7],o[8]=n[8]-e[8],o};r.multiplyByVector=function(n,e,o){c.typeOf.object("matrix",n),c.typeOf.object("cartesian",e),c.typeOf.object("result",o);let t=e.x,i=e.y,p=e.z,d=n[0]*t+n[3]*i+n[6]*p,m=n[1]*t+n[4]*i+n[7]*p,s=n[2]*t+n[5]*i+n[8]*p;return o.x=d,o.y=m,o.z=s,o};r.multiplyByScalar=function(n,e,o){return c.typeOf.object("matrix",n),c.typeOf.number("scalar",e),c.typeOf.object("result",o),o[0]=n[0]*e,o[1]=n[1]*e,o[2]=n[2]*e,o[3]=n[3]*e,o[4]=n[4]*e,o[5]=n[5]*e,o[6]=n[6]*e,o[7]=n[7]*e,o[8]=n[8]*e,o};r.multiplyByScale=function(n,e,o){return c.typeOf.object("matrix",n),c.typeOf.object("scale",e),c.typeOf.object("result",o),o[0]=n[0]*e.x,o[1]=n[1]*e.x,o[2]=n[2]*e.x,o[3]=n[3]*e.y,o[4]=n[4]*e.y,o[5]=n[5]*e.y,o[6]=n[6]*e.z,o[7]=n[7]*e.z,o[8]=n[8]*e.z,o};r.multiplyByUniformScale=function(n,e,o){return c.typeOf.object("matrix",n),c.typeOf.number("scale",e),c.typeOf.object("result",o),o[0]=n[0]*e,o[1]=n[1]*e,o[2]=n[2]*e,o[3]=n[3]*e,o[4]=n[4]*e,o[5]=n[5]*e,o[6]=n[6]*e,o[7]=n[7]*e,o[8]=n[8]*e,o};r.negate=function(n,e){return c.typeOf.object("matrix",n),c.typeOf.object("result",e),e[0]=-n[0],e[1]=-n[1],e[2]=-n[2],e[3]=-n[3],e[4]=-n[4],e[5]=-n[5],e[6]=-n[6],e[7]=-n[7],e[8]=-n[8],e};r.transpose=function(n,e){c.typeOf.object("matrix",n),c.typeOf.object("result",e);let o=n[0],t=n[3],i=n[6],p=n[1],d=n[4],m=n[7],s=n[2],b=n[5],w=n[8];return e[0]=o,e[1]=t,e[2]=i,e[3]=p,e[4]=d,e[5]=m,e[6]=s,e[7]=b,e[8]=w,e};function me(n){let e=0;for(let o=0;o<9;++o){let t=n[o];e+=t*t}return Math.sqrt(e)}var sn=[1,0,0],On=[2,2,1];function se(n){let e=0;for(let o=0;o<3;++o){let t=n[r.getElementIndex(On[o],sn[o])];e+=2*t*t}return Math.sqrt(e)}function Oe(n,e){let o=h.EPSILON15,t=0,i=1;for(let b=0;b<3;++b){let w=Math.abs(n[r.getElementIndex(On[b],sn[b])]);w>t&&(i=b,t=w)}let p=1,d=0,m=sn[i],s=On[i];if(Math.abs(n[r.getElementIndex(s,m)])>o){let b=n[r.getElementIndex(s,s)],w=n[r.getElementIndex(m,m)],S=n[r.getElementIndex(s,m)],R=(b-w)/2/S,M;R<0?M=-1/(-R+Math.sqrt(1+R*R)):M=1/(R+Math.sqrt(1+R*R)),p=1/Math.sqrt(1+M*M),d=M*p}return e=r.clone(r.IDENTITY,e),e[r.getElementIndex(m,m)]=e[r.getElementIndex(s,s)]=p,e[r.getElementIndex(s,m)]=d,e[r.getElementIndex(m,s)]=-d,e}var Q=new r,Bn=new r;r.computeEigenDecomposition=function(n,e){c.typeOf.object("matrix",n);let o=h.EPSILON20,t=10,i=0,p=0;u(e)||(e={});let d=e.unitary=r.clone(r.IDENTITY,e.unitary),m=e.diagonal=r.clone(n,e.diagonal),s=o*me(m);for(;p<t&&se(m)>s;)Oe(m,Q),r.transpose(Q,Bn),r.multiply(m,Q,m),r.multiply(Bn,m,m),r.multiply(d,Q,d),++i>2&&(++p,i=0);return e};r.abs=function(n,e){return c.typeOf.object("matrix",n),c.typeOf.object("result",e),e[0]=Math.abs(n[0]),e[1]=Math.abs(n[1]),e[2]=Math.abs(n[2]),e[3]=Math.abs(n[3]),e[4]=Math.abs(n[4]),e[5]=Math.abs(n[5]),e[6]=Math.abs(n[6]),e[7]=Math.abs(n[7]),e[8]=Math.abs(n[8]),e};r.determinant=function(n){c.typeOf.object("matrix",n);let e=n[0],o=n[3],t=n[6],i=n[1],p=n[4],d=n[7],m=n[2],s=n[5],b=n[8];return e*(p*b-s*d)+i*(s*t-o*b)+m*(o*d-p*t)};r.inverse=function(n,e){c.typeOf.object("matrix",n),c.typeOf.object("result",e);let o=n[0],t=n[1],i=n[2],p=n[3],d=n[4],m=n[5],s=n[6],b=n[7],w=n[8],S=r.determinant(n);if(Math.abs(S)<=h.EPSILON15)throw new g("matrix is not invertible");e[0]=d*w-b*m,e[1]=b*i-t*w,e[2]=t*m-d*i,e[3]=s*m-p*w,e[4]=o*w-s*i,e[5]=p*i-o*m,e[6]=p*b-s*d,e[7]=s*t-o*b,e[8]=o*d-p*t;let R=1/S;return r.multiplyByScalar(e,R,e)};var be=new r;r.inverseTranspose=function(n,e){return c.typeOf.object("matrix",n),c.typeOf.object("result",e),r.inverse(r.transpose(n,be),e)};r.equals=function(n,e){return n===e||u(n)&&u(e)&&n[0]===e[0]&&n[1]===e[1]&&n[2]===e[2]&&n[3]===e[3]&&n[4]===e[4]&&n[5]===e[5]&&n[6]===e[6]&&n[7]===e[7]&&n[8]===e[8]};r.equalsEpsilon=function(n,e,o){return o=o??0,n===e||u(n)&&u(e)&&Math.abs(n[0]-e[0])<=o&&Math.abs(n[1]-e[1])<=o&&Math.abs(n[2]-e[2])<=o&&Math.abs(n[3]-e[3])<=o&&Math.abs(n[4]-e[4])<=o&&Math.abs(n[5]-e[5])<=o&&Math.abs(n[6]-e[6])<=o&&Math.abs(n[7]-e[7])<=o&&Math.abs(n[8]-e[8])<=o};r.IDENTITY=Object.freeze(new r(1,0,0,0,1,0,0,0,1));r.ZERO=Object.freeze(new r(0,0,0,0,0,0,0,0,0));r.COLUMN0ROW0=0;r.COLUMN0ROW1=1;r.COLUMN0ROW2=2;r.COLUMN1ROW0=3;r.COLUMN1ROW1=4;r.COLUMN1ROW2=5;r.COLUMN2ROW0=6;r.COLUMN2ROW1=7;r.COLUMN2ROW2=8;Object.defineProperties(r.prototype,{length:{get:function(){return r.packedLength}}});r.prototype.clone=function(n){return r.clone(this,n)};r.prototype.equals=function(n){return r.equals(this,n)};r.equalsArray=function(n,e,o){return n[0]===e[o]&&n[1]===e[o+1]&&n[2]===e[o+2]&&n[3]===e[o+3]&&n[4]===e[o+4]&&n[5]===e[o+5]&&n[6]===e[o+6]&&n[7]===e[o+7]&&n[8]===e[o+8]};r.prototype.equalsEpsilon=function(n,e){return r.equalsEpsilon(this,n,e)};r.prototype.toString=function(){return`(${this[0]}, ${this[3]}, ${this[6]}) +(${this[1]}, ${this[4]}, ${this[7]}) +(${this[2]}, ${this[5]}, ${this[8]})`};var uo=r;var bn={};bn.EMPTY_OBJECT=Object.freeze({});bn.EMPTY_ARRAY=Object.freeze([]);var yo=bn;var x,z={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},A={};Object.defineProperties(A,{element:{get:function(){if(A.supportsFullscreen())return document[z.fullscreenElement]}},changeEventName:{get:function(){if(A.supportsFullscreen())return z.fullscreenchange}},errorEventName:{get:function(){if(A.supportsFullscreen())return z.fullscreenerror}},enabled:{get:function(){if(A.supportsFullscreen())return document[z.fullscreenEnabled]}},fullscreen:{get:function(){if(A.supportsFullscreen())return A.element!==null}}});A.supportsFullscreen=function(){if(u(x))return x;x=!1;let n=document.body;if(typeof n.requestFullscreen=="function")return z.requestFullscreen="requestFullscreen",z.exitFullscreen="exitFullscreen",z.fullscreenEnabled="fullscreenEnabled",z.fullscreenElement="fullscreenElement",z.fullscreenchange="fullscreenchange",z.fullscreenerror="fullscreenerror",x=!0,x;let e=["webkit","moz","o","ms","khtml"],o;for(let t=0,i=e.length;t<i;++t){let p=e[t];o=`${p}RequestFullscreen`,typeof n[o]=="function"?(z.requestFullscreen=o,x=!0):(o=`${p}RequestFullScreen`,typeof n[o]=="function"&&(z.requestFullscreen=o,x=!0)),o=`${p}ExitFullscreen`,typeof document[o]=="function"?z.exitFullscreen=o:(o=`${p}CancelFullScreen`,typeof document[o]=="function"&&(z.exitFullscreen=o)),o=`${p}FullscreenEnabled`,document[o]!==void 0?z.fullscreenEnabled=o:(o=`${p}FullScreenEnabled`,document[o]!==void 0&&(z.fullscreenEnabled=o)),o=`${p}FullscreenElement`,document[o]!==void 0?z.fullscreenElement=o:(o=`${p}FullScreenElement`,document[o]!==void 0&&(z.fullscreenElement=o)),o=`${p}fullscreenchange`,document[`on${o}`]!==void 0&&(p==="ms"&&(o="MSFullscreenChange"),z.fullscreenchange=o),o=`${p}fullscreenerror`,document[`on${o}`]!==void 0&&(p==="ms"&&(o="MSFullscreenError"),z.fullscreenerror=o)}return x};A.requestFullscreen=function(n,e){A.supportsFullscreen()&&n[z.requestFullscreen]({vrDisplay:e})};A.exitFullscreen=function(){A.supportsFullscreen()&&document[z.exitFullscreen]()};A._names=z;var Un=A;var E;typeof navigator<"u"?E=navigator:E={};function k(n){let e=n.split(".");for(let o=0,t=e.length;o<t;++o)e[o]=parseInt(e[o],10);return e}var J,Pn;function zn(){if(!u(J)&&(J=!1,!cn())){let n=/ Chrome\/([\.0-9]+)/.exec(E.userAgent);n!==null&&(J=!0,Pn=k(n[1]))}return J}function he(){return zn()&&Pn}var K,In;function Ln(){if(!u(K)&&(K=!1,!zn()&&!cn()&&/ Safari\/[\.0-9]+/.test(E.userAgent))){let n=/ Version\/([\.0-9]+)/.exec(E.userAgent);n!==null&&(K=!0,In=k(n[1]))}return K}function we(){return Ln()&&In}var nn,gn;function Wn(){if(!u(nn)){nn=!1;let n=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(E.userAgent);n!==null&&(nn=!0,gn=k(n[1]),gn.isNightly=!!n[2])}return nn}function je(){return Wn()&&gn}var D,Sn;function Vn(){if(!u(D)){D=!1;let n;E.appName==="Microsoft Internet Explorer"?(n=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(E.userAgent),n!==null&&(D=!0,Sn=k(n[1]))):E.appName==="Netscape"&&(n=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(E.userAgent),n!==null&&(D=!0,Sn=k(n[1])))}return D}function ge(){return Vn()&&Sn}var en,vn;function cn(){if(!u(en)){en=!1;let n=/ Edg\/([\.0-9]+)/.exec(E.userAgent);n!==null&&(en=!0,vn=k(n[1]))}return en}function Se(){return cn()&&vn}var on,Rn;function fn(){if(!u(on)){on=!1;let n=/Firefox\/([\.0-9]+)/.exec(E.userAgent);n!==null&&(on=!0,Rn=k(n[1]))}return on}var hn;function ze(){return u(hn)||(hn=/Windows/i.test(E.appVersion)),hn}var wn;function Re(){return u(wn)||(wn=navigator.platform==="iPhone"||navigator.platform==="iPod"||navigator.platform==="iPad"),wn}function Me(){return fn()&&Rn}var jn;function qe(){return u(jn)||(jn=!fn()&&typeof PointerEvent<"u"&&(!u(E.pointerEnabled)||E.pointerEnabled)),jn}var $n,tn;function Dn(){if(!u(tn)){let n=document.createElement("canvas");n.setAttribute("style","image-rendering: -moz-crisp-edges;image-rendering: pixelated;");let e=n.style.imageRendering;tn=u(e)&&e!=="",tn&&($n=e)}return tn}function Ee(){return Dn()?$n:void 0}function q(){if(!q.initialized)throw new g("You must call FeatureDetection.supportsWebP.initialize and wait for the promise to resolve before calling FeatureDetection.supportsWebP");return q._result}q._promise=void 0;q._result=void 0;q.initialize=function(){return u(q._promise)||(q._promise=new Promise(n=>{let e=new Image;e.onload=function(){q._result=e.width>0&&e.height>0,n(q._result)},e.onerror=function(){q._result=!1,n(q._result)},e.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA"})),q._promise};Object.defineProperties(q,{initialized:{get:function(){return u(q._result)}}});var v=[];typeof ArrayBuffer<"u"&&(v.push(Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array),typeof Uint8ClampedArray<"u"&&v.push(Uint8ClampedArray),typeof Uint8ClampedArray<"u"&&v.push(Uint8ClampedArray),typeof BigInt64Array<"u"&&v.push(BigInt64Array),typeof BigUint64Array<"u"&&v.push(BigUint64Array));var l={isChrome:zn,chromeVersion:he,isSafari:Ln,safariVersion:we,isWebkit:Wn,webkitVersion:je,isInternetExplorer:Vn,internetExplorerVersion:ge,isEdge:cn,edgeVersion:Se,isFirefox:fn,firefoxVersion:Me,isWindows:ze,isIPadOrIOS:Re,hardwareConcurrency:E.hardwareConcurrency??3,supportsPointerEvents:qe,supportsImageRenderingPixelated:Dn,supportsWebP:q,imageRenderingValue:Ee,typedArrayTypes:v};l.supportsBasis=function(n){return l.supportsWebAssembly()&&n.context.supportsBasis};l.supportsFullscreen=function(){return Un.supportsFullscreen()};l.supportsTypedArrays=function(){return typeof ArrayBuffer<"u"};l.supportsBigInt64Array=function(){return typeof BigInt64Array<"u"};l.supportsBigUint64Array=function(){return typeof BigUint64Array<"u"};l.supportsBigInt=function(){return typeof BigInt<"u"};l.supportsWebWorkers=function(){return typeof Worker<"u"};l.supportsWebAssembly=function(){return typeof WebAssembly<"u"};l.supportsWebgl2=function(n){return c.defined("scene",n),n.context.webgl2};l.supportsEsmWebWorkers=function(){return!fn()||parseInt(Rn)>=114};var go=l;export{y as a,$ as b,yn as c,oo as d,uo as e,yo as f,go as g}; diff --git a/public/Cesium/Workers/chunk-77IHZJJ3.js b/public/Cesium/Workers/chunk-77IHZJJ3.js new file mode 100644 index 000000000..e910069d8 --- /dev/null +++ b/public/Cesium/Workers/chunk-77IHZJJ3.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as st}from"./chunk-G5AGHVVC.js";import{b as xt,c as ht,d as et}from"./chunk-RCV6KWXS.js";import{a as tt}from"./chunk-AU7IKHOH.js";import{a as h,b as Y,c as g,d as gt}from"./chunk-64RSHJUE.js";import{a as X}from"./chunk-3SSKC3VN.js";import{a as ft}from"./chunk-OSW76XDF.js";import{b as A}from"./chunk-LEYMRMBK.js";import{e as F}from"./chunk-VTAIKJXX.js";var ct={CLOCKWISE:ft.CW,COUNTER_CLOCKWISE:ft.CCW};ct.validate=function(t){return t===ct.CLOCKWISE||t===ct.COUNTER_CLOCKWISE};var at=Object.freeze(ct);function mt(t,n,e=2){let o=n&&n.length,r=o?n[0]*e:t.length,s=wt(t,0,r,e,!0),i=[];if(!s||s.next===s.prev)return i;let c,x,u;if(o&&(s=It(t,n,s,e)),t.length>80*e){c=t[0],x=t[1];let p=c,y=x;for(let b=e;b<r;b+=e){let S=t[b],a=t[b+1];S<c&&(c=S),a<x&&(x=a),S>p&&(p=S),a>y&&(y=a)}u=Math.max(p-c,y-x),u=u!==0?32767/u:0}return rt(s,i,e,c,x,u,0),i}function wt(t,n,e,o,r){let s;if(r===Vt(t,n,e,o)>0)for(let i=n;i<e;i+=o)s=vt(i/o|0,t[i],t[i+1],s);else for(let i=e-o;i>=n;i-=o)s=vt(i/o|0,t[i],t[i+1],s);return s&&K(s,s.next)&&(ot(s),s=s.next),s}function N(t,n){if(!t)return t;n||(n=t);let e=t,o;do if(o=!1,!e.steiner&&(K(e,e.next)||w(e.prev,e,e.next)===0)){if(ot(e),e=n=e.prev,e===e.next)break;o=!0}else e=e.next;while(o||e!==n);return n}function rt(t,n,e,o,r,s,i){if(!t)return;!i&&s&&Nt(t,o,r,s);let c=t;for(;t.prev!==t.next;){let x=t.prev,u=t.next;if(s?Rt(t,o,r,s):Pt(t)){n.push(x.i,t.i,u.i),ot(t),t=u.next,c=u.next;continue}if(t=u,t===c){i?i===1?(t=zt(N(t),n),rt(t,n,e,o,r,s,2)):i===2&&Bt(t,n,e,o,r,s):rt(N(t),n,e,o,r,s,1);break}}}function Pt(t){let n=t.prev,e=t,o=t.next;if(w(n,e,o)>=0)return!1;let r=n.x,s=e.x,i=o.x,c=n.y,x=e.y,u=o.y,p=Math.min(r,s,i),y=Math.min(c,x,u),b=Math.max(r,s,i),S=Math.max(c,x,u),a=o.next;for(;a!==n;){if(a.x>=p&&a.x<=b&&a.y>=y&&a.y<=S&&nt(r,c,s,x,i,u,a.x,a.y)&&w(a.prev,a,a.next)>=0)return!1;a=a.next}return!0}function Rt(t,n,e,o){let r=t.prev,s=t,i=t.next;if(w(r,s,i)>=0)return!1;let c=r.x,x=s.x,u=i.x,p=r.y,y=s.y,b=i.y,S=Math.min(c,x,u),a=Math.min(p,y,b),T=Math.max(c,x,u),L=Math.max(p,y,b),z=pt(S,a,n,e,o),D=pt(T,L,n,e,o),l=t.prevZ,f=t.nextZ;for(;l&&l.z>=z&&f&&f.z<=D;){if(l.x>=S&&l.x<=T&&l.y>=a&&l.y<=L&&l!==r&&l!==i&&nt(c,p,x,y,u,b,l.x,l.y)&&w(l.prev,l,l.next)>=0||(l=l.prevZ,f.x>=S&&f.x<=T&&f.y>=a&&f.y<=L&&f!==r&&f!==i&&nt(c,p,x,y,u,b,f.x,f.y)&&w(f.prev,f,f.next)>=0))return!1;f=f.nextZ}for(;l&&l.z>=z;){if(l.x>=S&&l.x<=T&&l.y>=a&&l.y<=L&&l!==r&&l!==i&&nt(c,p,x,y,u,b,l.x,l.y)&&w(l.prev,l,l.next)>=0)return!1;l=l.prevZ}for(;f&&f.z<=D;){if(f.x>=S&&f.x<=T&&f.y>=a&&f.y<=L&&f!==r&&f!==i&&nt(c,p,x,y,u,b,f.x,f.y)&&w(f.prev,f,f.next)>=0)return!1;f=f.nextZ}return!0}function zt(t,n){let e=t;do{let o=e.prev,r=e.next.next;!K(o,r)&&bt(o,e,e.next,r)&&it(o,r)&&it(r,o)&&(n.push(o.i,e.i,r.i),ot(e),ot(e.next),e=t=r),e=e.next}while(e!==t);return N(e)}function Bt(t,n,e,o,r,s){let i=t;do{let c=i.next.next;for(;c!==i.prev;){if(i.i!==c.i&&_t(i,c)){let x=Mt(i,c);i=N(i,i.next),x=N(x,x.next),rt(i,n,e,o,r,s,0),rt(x,n,e,o,r,s,0);return}c=c.next}i=i.next}while(i!==t)}function It(t,n,e,o){let r=[];for(let s=0,i=n.length;s<i;s++){let c=n[s]*o,x=s<i-1?n[s+1]*o:t.length,u=wt(t,c,x,o,!1);u===u.next&&(u.steiner=!0),r.push(Ut(u))}r.sort(Wt);for(let s=0;s<r.length;s++)e=$t(r[s],e);return e}function Wt(t,n){let e=t.x-n.x;if(e===0&&(e=t.y-n.y,e===0)){let o=(t.next.y-t.y)/(t.next.x-t.x),r=(n.next.y-n.y)/(n.next.x-n.x);e=o-r}return e}function $t(t,n){let e=Gt(t,n);if(!e)return n;let o=Mt(e,t);return N(o,o.next),N(e,e.next)}function Gt(t,n){let e=n,o=t.x,r=t.y,s=-1/0,i;if(K(t,e))return e;do{if(K(t,e.next))return e.next;if(r<=e.y&&r>=e.next.y&&e.next.y!==e.y){let y=e.x+(r-e.y)*(e.next.x-e.x)/(e.next.y-e.y);if(y<=o&&y>s&&(s=y,i=e.x<e.next.x?e:e.next,y===o))return i}e=e.next}while(e!==n);if(!i)return null;let c=i,x=i.x,u=i.y,p=1/0;e=i;do{if(o>=e.x&&e.x>=x&&o!==e.x&&St(r<u?o:s,r,x,u,r<u?s:o,r,e.x,e.y)){let y=Math.abs(r-e.y)/(o-e.x);it(e,t)&&(y<p||y===p&&(e.x>i.x||e.x===i.x&&Ht(i,e)))&&(i=e,p=y)}e=e.next}while(e!==c);return i}function Ht(t,n){return w(t.prev,t,n.prev)<0&&w(n.next,t,t.next)<0}function Nt(t,n,e,o){let r=t;do r.z===0&&(r.z=pt(r.x,r.y,n,e,o)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next;while(r!==t);r.prevZ.nextZ=null,r.prevZ=null,kt(r)}function kt(t){let n,e=1;do{let o=t,r;t=null;let s=null;for(n=0;o;){n++;let i=o,c=0;for(let u=0;u<e&&(c++,i=i.nextZ,!!i);u++);let x=e;for(;c>0||x>0&&i;)c!==0&&(x===0||!i||o.z<=i.z)?(r=o,o=o.nextZ,c--):(r=i,i=i.nextZ,x--),s?s.nextZ=r:t=r,r.prevZ=s,s=r;o=i}s.nextZ=null,e*=2}while(n>1);return t}function pt(t,n,e,o,r){return t=(t-e)*r|0,n=(n-o)*r|0,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,n=(n|n<<8)&16711935,n=(n|n<<4)&252645135,n=(n|n<<2)&858993459,n=(n|n<<1)&1431655765,t|n<<1}function Ut(t){let n=t,e=t;do(n.x<e.x||n.x===e.x&&n.y<e.y)&&(e=n),n=n.next;while(n!==t);return e}function St(t,n,e,o,r,s,i,c){return(r-i)*(n-c)>=(t-i)*(s-c)&&(t-i)*(o-c)>=(e-i)*(n-c)&&(e-i)*(s-c)>=(r-i)*(o-c)}function nt(t,n,e,o,r,s,i,c){return!(t===i&&n===c)&&St(t,n,e,o,r,s,i,c)}function _t(t,n){return t.next.i!==n.i&&t.prev.i!==n.i&&!Kt(t,n)&&(it(t,n)&&it(n,t)&&jt(t,n)&&(w(t.prev,t,n.prev)||w(t,n.prev,n))||K(t,n)&&w(t.prev,t,t.next)>0&&w(n.prev,n,n.next)>0)}function w(t,n,e){return(n.y-t.y)*(e.x-n.x)-(n.x-t.x)*(e.y-n.y)}function K(t,n){return t.x===n.x&&t.y===n.y}function bt(t,n,e,o){let r=lt(w(t,n,e)),s=lt(w(t,n,o)),i=lt(w(e,o,t)),c=lt(w(e,o,n));return!!(r!==s&&i!==c||r===0&&ut(t,e,n)||s===0&&ut(t,o,n)||i===0&&ut(e,t,o)||c===0&&ut(e,n,o))}function ut(t,n,e){return n.x<=Math.max(t.x,e.x)&&n.x>=Math.min(t.x,e.x)&&n.y<=Math.max(t.y,e.y)&&n.y>=Math.min(t.y,e.y)}function lt(t){return t>0?1:t<0?-1:0}function Kt(t,n){let e=t;do{if(e.i!==t.i&&e.next.i!==t.i&&e.i!==n.i&&e.next.i!==n.i&&bt(e,e.next,t,n))return!0;e=e.next}while(e!==t);return!1}function it(t,n){return w(t.prev,t,t.next)<0?w(t,n,t.next)>=0&&w(t,t.prev,n)>=0:w(t,n,t.prev)<0||w(t,t.next,n)<0}function jt(t,n){let e=t,o=!1,r=(t.x+n.x)/2,s=(t.y+n.y)/2;do e.y>s!=e.next.y>s&&e.next.y!==e.y&&r<(e.next.x-e.x)*(s-e.y)/(e.next.y-e.y)+e.x&&(o=!o),e=e.next;while(e!==t);return o}function Mt(t,n){let e=yt(t.i,t.x,t.y),o=yt(n.i,n.x,n.y),r=t.next,s=n.prev;return t.next=n,n.prev=t,e.next=r,r.prev=e,o.next=e,e.prev=o,s.next=o,o.prev=s,o}function vt(t,n,e,o){let r=yt(t,n,e);return o?(r.next=o.next,r.prev=o,o.next.prev=r,o.next=r):(r.prev=r,r.next=r),r}function ot(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function yt(t,n,e){return{i:t,x:n,y:e,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function Vt(t,n,e,o){let r=0;for(let s=n,i=e-o;s<e;s+=o)r+=(t[i]-t[s])*(t[s+1]+t[i+1]),i=s;return r}var qt=new h,Jt=new h,B={};B.computeArea2D=function(t){A.defined("positions",t),A.typeOf.number.greaterThanOrEquals("positions.length",t.length,3);let n=t.length,e=0;for(let o=n-1,r=0;r<n;o=r++){let s=t[o],i=t[r];e+=s.x*i.y-i.x*s.y}return e*.5};B.computeWindingOrder2D=function(t){return B.computeArea2D(t)>0?at.COUNTER_CLOCKWISE:at.CLOCKWISE};B.triangulate=function(t,n){A.defined("positions",t);let e=g.packArray(t);return mt(e,n,2)};var Tt=new h,Ot=new h,Zt=new h,At=new h,Ct=new h,Et=new h,R=new h,Lt=new g,Ft=new g,Dt=new g,j=new g;B.computeSubdivision=function(t,n,e,o,r){r=r??X.RADIANS_PER_DEGREE;let s=F(o);A.typeOf.object("ellipsoid",t),A.defined("positions",n),A.defined("indices",e),A.typeOf.number.greaterThanOrEquals("indices.length",e.length,3),A.typeOf.number.equals("indices.length % 3","0",e.length%3,0),A.typeOf.number.greaterThan("granularity",r,0);let i=e.slice(0),c,x=n.length,u=new Array(x*3),p=new Array(x*2),y=0,b=0;for(c=0;c<x;c++){let l=n[c];if(u[y++]=l.x,u[y++]=l.y,u[y++]=l.z,s){let f=o[c];p[b++]=f.x,p[b++]=f.y}}let S=[],a={},T=t.maximumRadius,L=X.chordLength(r,T),z=L*L;for(;i.length>0;){let l=i.pop(),f=i.pop(),m=i.pop(),M=h.fromArray(u,m*3,Tt),C=h.fromArray(u,f*3,Ot),V=h.fromArray(u,l*3,Zt),q,J,I;s&&(q=g.fromArray(p,m*2,Lt),J=g.fromArray(p,f*2,Ft),I=g.fromArray(p,l*2,Dt));let k=h.multiplyByScalar(h.normalize(M,At),T,At),U=h.multiplyByScalar(h.normalize(C,Ct),T,Ct),W=h.multiplyByScalar(h.normalize(V,Et),T,Et),$=h.magnitudeSquared(h.subtract(k,U,R)),G=h.magnitudeSquared(h.subtract(U,W,R)),Q=h.magnitudeSquared(h.subtract(W,k,R)),H=Math.max($,G,Q),O,v,d;H>z?$===H?(O=`${Math.min(m,f)} ${Math.max(m,f)}`,c=a[O],F(c)||(v=h.add(M,C,R),h.multiplyByScalar(v,.5,v),u.push(v.x,v.y,v.z),c=u.length/3-1,a[O]=c,s&&(d=g.add(q,J,j),g.multiplyByScalar(d,.5,d),p.push(d.x,d.y))),i.push(m,c,l),i.push(c,f,l)):G===H?(O=`${Math.min(f,l)} ${Math.max(f,l)}`,c=a[O],F(c)||(v=h.add(C,V,R),h.multiplyByScalar(v,.5,v),u.push(v.x,v.y,v.z),c=u.length/3-1,a[O]=c,s&&(d=g.add(J,I,j),g.multiplyByScalar(d,.5,d),p.push(d.x,d.y))),i.push(f,c,m),i.push(c,l,m)):Q===H&&(O=`${Math.min(l,m)} ${Math.max(l,m)}`,c=a[O],F(c)||(v=h.add(V,M,R),h.multiplyByScalar(v,.5,v),u.push(v.x,v.y,v.z),c=u.length/3-1,a[O]=c,s&&(d=g.add(I,q,j),g.multiplyByScalar(d,.5,d),p.push(d.x,d.y))),i.push(l,c,f),i.push(c,m,f)):(S.push(m),S.push(f),S.push(l))}let D={attributes:{position:new et({componentDatatype:tt.DOUBLE,componentsPerAttribute:3,values:u})},indices:S,primitiveType:xt.TRIANGLES};return s&&(D.attributes.st=new et({componentDatatype:tt.FLOAT,componentsPerAttribute:2,values:p})),new ht(D)};var Qt=new Y,Xt=new Y,Yt=new Y,dt=new Y;B.computeRhumbLineSubdivision=function(t,n,e,o,r){r=r??X.RADIANS_PER_DEGREE;let s=F(o);A.typeOf.object("ellipsoid",t),A.defined("positions",n),A.defined("indices",e),A.typeOf.number.greaterThanOrEquals("indices.length",e.length,3),A.typeOf.number.equals("indices.length % 3","0",e.length%3,0),A.typeOf.number.greaterThan("granularity",r,0);let i=e.slice(0),c,x=n.length,u=new Array(x*3),p=new Array(x*2),y=0,b=0;for(c=0;c<x;c++){let m=n[c];if(u[y++]=m.x,u[y++]=m.y,u[y++]=m.z,s){let M=o[c];p[b++]=M.x,p[b++]=M.y}}let S=[],a={},T=t.maximumRadius,L=X.chordLength(r,T),z=new st(void 0,void 0,t),D=new st(void 0,void 0,t),l=new st(void 0,void 0,t);for(;i.length>0;){let m=i.pop(),M=i.pop(),C=i.pop(),V=h.fromArray(u,C*3,Tt),q=h.fromArray(u,M*3,Ot),J=h.fromArray(u,m*3,Zt),I,k,U;s&&(I=g.fromArray(p,C*2,Lt),k=g.fromArray(p,M*2,Ft),U=g.fromArray(p,m*2,Dt));let W=t.cartesianToCartographic(V,Qt),$=t.cartesianToCartographic(q,Xt),G=t.cartesianToCartographic(J,Yt);z.setEndPoints(W,$);let Q=z.surfaceDistance;D.setEndPoints($,G);let H=D.surfaceDistance;l.setEndPoints(G,W);let O=l.surfaceDistance,v=Math.max(Q,H,O),d,P,_,Z,E;v>L?Q===v?(d=`${Math.min(C,M)} ${Math.max(C,M)}`,c=a[d],F(c)||(P=z.interpolateUsingFraction(.5,dt),_=(W.height+$.height)*.5,Z=h.fromRadians(P.longitude,P.latitude,_,t,R),u.push(Z.x,Z.y,Z.z),c=u.length/3-1,a[d]=c,s&&(E=g.add(I,k,j),g.multiplyByScalar(E,.5,E),p.push(E.x,E.y))),i.push(C,c,m),i.push(c,M,m)):H===v?(d=`${Math.min(M,m)} ${Math.max(M,m)}`,c=a[d],F(c)||(P=D.interpolateUsingFraction(.5,dt),_=($.height+G.height)*.5,Z=h.fromRadians(P.longitude,P.latitude,_,t,R),u.push(Z.x,Z.y,Z.z),c=u.length/3-1,a[d]=c,s&&(E=g.add(k,U,j),g.multiplyByScalar(E,.5,E),p.push(E.x,E.y))),i.push(M,c,C),i.push(c,m,C)):O===v&&(d=`${Math.min(m,C)} ${Math.max(m,C)}`,c=a[d],F(c)||(P=l.interpolateUsingFraction(.5,dt),_=(G.height+W.height)*.5,Z=h.fromRadians(P.longitude,P.latitude,_,t,R),u.push(Z.x,Z.y,Z.z),c=u.length/3-1,a[d]=c,s&&(E=g.add(U,I,j),g.multiplyByScalar(E,.5,E),p.push(E.x,E.y))),i.push(m,c,M),i.push(c,C,M)):(S.push(C),S.push(M),S.push(m))}let f={attributes:{position:new et({componentDatatype:tt.DOUBLE,componentsPerAttribute:3,values:u})},indices:S,primitiveType:xt.TRIANGLES};return s&&(f.attributes.st=new et({componentDatatype:tt.FLOAT,componentsPerAttribute:2,values:p})),new ht(f)};B.scaleToGeodeticHeight=function(t,n,e,o){e=e??gt.default;let r=qt,s=Jt;if(n=n??0,o=o??!0,F(t)){let i=t.length;for(let c=0;c<i;c+=3)h.fromArray(t,c,s),o&&(s=e.scaleToGeodeticSurface(s,s)),n!==0&&(r=e.geodeticSurfaceNormal(s,r),h.multiplyByScalar(r,n,r),h.add(s,r,s)),t[c]=s.x,t[c+1]=s.y,t[c+2]=s.z}return t};var de=B;export{at as a,de as b}; diff --git a/public/Cesium/Workers/chunk-7HTKERZY.js b/public/Cesium/Workers/chunk-7HTKERZY.js new file mode 100644 index 000000000..2565101b6 --- /dev/null +++ b/public/Cesium/Workers/chunk-7HTKERZY.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as y}from"./chunk-DEPHB2WM.js";import{d as L}from"./chunk-4IW2T6GF.js";import{b as d,h as W}from"./chunk-PSPPBZWI.js";import{a as A}from"./chunk-AU7IKHOH.js";import{a as s,b as k,c as T,d as b}from"./chunk-64RSHJUE.js";import{a as E}from"./chunk-3SSKC3VN.js";import{a as I,b as z}from"./chunk-LEYMRMBK.js";import{e as h}from"./chunk-VTAIKJXX.js";function x(o,t){z.typeOf.object("ellipsoid",o),this._ellipsoid=o,this._cameraPosition=new s,this._cameraPositionInScaledSpace=new s,this._distanceToLimbInScaledSpaceSquared=0,h(t)&&(this.cameraPosition=t)}Object.defineProperties(x.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},cameraPosition:{get:function(){return this._cameraPosition},set:function(o){let e=this._ellipsoid.transformPositionToScaledSpace(o,this._cameraPositionInScaledSpace),n=s.magnitudeSquared(e)-1;s.clone(o,this._cameraPosition),this._cameraPositionInScaledSpace=e,this._distanceToLimbInScaledSpaceSquared=n}}});var j=new s;x.prototype.isPointVisible=function(o){let e=this._ellipsoid.transformPositionToScaledSpace(o,j);return D(e,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};x.prototype.isScaledSpacePointVisible=function(o){return D(o,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};var it=new s;x.prototype.isScaledSpacePointVisiblePossiblyUnderEllipsoid=function(o,t){let e=this._ellipsoid,n,i;return h(t)&&t<0&&e.minimumRadius>-t?(i=it,i.x=this._cameraPosition.x/(e.radii.x+t),i.y=this._cameraPosition.y/(e.radii.y+t),i.z=this._cameraPosition.z/(e.radii.z+t),n=i.x*i.x+i.y*i.y+i.z*i.z-1):(i=this._cameraPositionInScaledSpace,n=this._distanceToLimbInScaledSpaceSquared),D(o,i,n)};x.prototype.computeHorizonCullingPoint=function(o,t,e){return Z(this._ellipsoid,o,t,e)};var U=b.clone(b.UNIT_SPHERE);x.prototype.computeHorizonCullingPointPossiblyUnderEllipsoid=function(o,t,e,n){let i=v(this._ellipsoid,e,U);return Z(i,o,t,n)};x.prototype.computeHorizonCullingPointFromVertices=function(o,t,e,n,i){return Q(this._ellipsoid,o,t,e,n,i)};x.prototype.computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid=function(o,t,e,n,i,c){let a=v(this._ellipsoid,i,U);return Q(a,o,t,e,n,c)};var nt=[];x.prototype.computeHorizonCullingPointFromRectangle=function(o,t,e){z.typeOf.object("rectangle",o);let n=W.subsample(o,t,0,nt),i=L.fromPoints(n);if(!(s.magnitude(i.center)<.1*t.minimumRadius))return this.computeHorizonCullingPoint(i.center,n,e)};var at=new s;function v(o,t,e){if(h(t)&&t<0&&o.minimumRadius>-t){let n=s.fromElements(o.radii.x+t,o.radii.y+t,o.radii.z+t,at);o=b.fromCartesian3(n,e)}return o}function Z(o,t,e,n){z.typeOf.object("directionToPoint",t),z.defined("positions",e),h(n)||(n=new s);let i=X(o,t),c=0;for(let a=0,r=e.length;a<r;++a){let m=e[a],l=J(o,m,i);if(l<0)return;c=Math.max(c,l)}return K(i,c,n)}var q=new s;function Q(o,t,e,n,i,c){z.typeOf.object("directionToPoint",t),z.defined("vertices",e),z.typeOf.number("stride",n),h(c)||(c=new s),n=n??3,i=i??s.ZERO;let a=X(o,t),r=0;for(let m=0,l=e.length;m<l;m+=n){q.x=e[m]+i.x,q.y=e[m+1]+i.y,q.z=e[m+2]+i.z;let u=J(o,q,a);if(u<0)return;r=Math.max(r,u)}return K(a,r,c)}function D(o,t,e){let n=t,i=e,c=s.subtract(o,n,j),a=-s.dot(c,n);return!(i<0?a>0:a>i&&a*a/s.magnitudeSquared(c)>i)}var st=new s,ct=new s;function J(o,t,e){let n=o.transformPositionToScaledSpace(t,st),i=s.magnitudeSquared(n),c=Math.sqrt(i),a=s.divideByScalar(n,c,ct);i=Math.max(1,i),c=Math.max(1,c);let r=s.dot(a,e),m=s.magnitude(s.cross(a,e,a)),l=1/c,u=Math.sqrt(i-1)*l;return 1/(r*l-m*u)}function K(o,t,e){if(!(t<=0||t===1/0||t!==t))return s.multiplyByScalar(o,t,e)}var R=new s;function X(o,t){return s.equals(t,s.ZERO)?t:(o.transformPositionToScaledSpace(t,R),s.normalize(R,R))}var Tt=x;var M={};M.getHeight=function(o,t,e){if(!Number.isFinite(t))throw new I("scale must be a finite number.");if(!Number.isFinite(e))throw new I("relativeHeight must be a finite number.");return(o-e)*t+e};var rt=new k;M.getPosition=function(o,t,e,n,i){let c=t.cartesianToCartographic(o,rt);if(!h(c))return s.clone(o,i);let a=M.getHeight(c.height,e,n);return s.fromRadians(c.longitude,c.latitude,a,t,i)};var Y=M;var mt={NONE:0,BITS12:1},S=Object.freeze(mt);var _=new s,dt=new s,f=new T,O=new d,ht=new d,lt=Math.pow(2,12);function p(o,t,e,n,i,c,a,r,m,l){let u=S.NONE,g,N;if(h(t)&&h(e)&&h(n)&&h(i)){let C=t.minimum,V=t.maximum,P=s.subtract(V,C,dt),B=n-e;Math.max(s.maximumComponent(P),B)<lt-1?u=S.BITS12:u=S.NONE,g=d.inverseTransformation(i,new d);let tt=s.negate(C,_);d.multiply(d.fromTranslation(tt,O),g,g);let w=_;w.x=1/P.x,w.y=1/P.y,w.z=1/P.z,d.multiply(d.fromScale(w,O),g,g),N=d.clone(i),d.setTranslation(N,s.ZERO,N),i=d.clone(i,new d);let ot=d.fromTranslation(C,O),et=d.fromScale(P,ht),F=d.multiply(ot,et,O);d.multiply(i,F,i),d.multiply(N,F,N)}this.quantization=u,this.minimumHeight=e,this.maximumHeight=n,this.center=s.clone(o),this.toScaledENU=g,this.fromScaledENU=i,this.matrix=N,this.hasVertexNormals=c,this.hasWebMercatorT=a??!1,this.hasGeodeticSurfaceNormals=r??!1,this.exaggeration=m??1,this.exaggerationRelativeHeight=l??0,this.stride=0,this._offsetGeodeticSurfaceNormal=0,this._offsetVertexNormal=0,this._calculateStrideAndOffsets()}p.prototype.encode=function(o,t,e,n,i,c,a,r){let m=n.x,l=n.y;if(this.quantization===S.BITS12){e=d.multiplyByPoint(this.toScaledENU,e,_),e.x=E.clamp(e.x,0,1),e.y=E.clamp(e.y,0,1),e.z=E.clamp(e.z,0,1);let u=this.maximumHeight-this.minimumHeight,g=E.clamp((i-this.minimumHeight)/u,0,1);T.fromElements(e.x,e.y,f);let N=y.compressTextureCoordinates(f);T.fromElements(e.z,g,f);let C=y.compressTextureCoordinates(f);T.fromElements(m,l,f);let V=y.compressTextureCoordinates(f);if(o[t++]=N,o[t++]=C,o[t++]=V,this.hasWebMercatorT){T.fromElements(a,0,f);let P=y.compressTextureCoordinates(f);o[t++]=P}}else s.subtract(e,this.center,_),o[t++]=_.x,o[t++]=_.y,o[t++]=_.z,o[t++]=i,o[t++]=m,o[t++]=l,this.hasWebMercatorT&&(o[t++]=a);return this.hasVertexNormals&&(o[t++]=y.octPackFloat(c)),this.hasGeodeticSurfaceNormals&&(o[t++]=r.x,o[t++]=r.y,o[t++]=r.z),t};var pt=new s,$=new s;p.prototype.addGeodeticSurfaceNormals=function(o,t,e){if(this.hasGeodeticSurfaceNormals)return;let n=this.stride,i=o.length/n;this.hasGeodeticSurfaceNormals=!0,this._calculateStrideAndOffsets();let c=this.stride;for(let a=0;a<i;a++){for(let u=0;u<n;u++){let g=a*n+u,N=a*c+u;t[N]=o[g]}let r=this.decodePosition(t,a,pt),m=e.geodeticSurfaceNormal(r,$),l=a*c+this._offsetGeodeticSurfaceNormal;t[l]=m.x,t[l+1]=m.y,t[l+2]=m.z}};p.prototype.removeGeodeticSurfaceNormals=function(o,t){if(!this.hasGeodeticSurfaceNormals)return;let e=this.stride,n=o.length/e;this.hasGeodeticSurfaceNormals=!1,this._calculateStrideAndOffsets();let i=this.stride;for(let c=0;c<n;c++)for(let a=0;a<i;a++){let r=c*e+a,m=c*i+a;t[m]=o[r]}};p.prototype.decodePosition=function(o,t,e){if(h(e)||(e=new s),t*=this.stride,this.quantization===S.BITS12){let n=y.decompressTextureCoordinates(o[t],f);e.x=n.x,e.y=n.y;let i=y.decompressTextureCoordinates(o[t+1],f);return e.z=i.x,d.multiplyByPoint(this.fromScaledENU,e,e)}return e.x=o[t],e.y=o[t+1],e.z=o[t+2],s.add(e,this.center,e)};p.prototype.getExaggeratedPosition=function(o,t,e){e=this.decodePosition(o,t,e);let n=this.exaggeration,i=this.exaggerationRelativeHeight;if(n!==1&&this.hasGeodeticSurfaceNormals){let a=this.decodeGeodeticSurfaceNormal(o,t,$),r=this.decodeHeight(o,t),m=Y.getHeight(r,n,i)-r;e.x+=a.x*m,e.y+=a.y*m,e.z+=a.z*m}return e};p.prototype.decodeTextureCoordinates=function(o,t,e){return h(e)||(e=new T),t*=this.stride,this.quantization===S.BITS12?y.decompressTextureCoordinates(o[t+2],e):T.fromElements(o[t+4],o[t+5],e)};p.prototype.decodeHeight=function(o,t){return t*=this.stride,this.quantization===S.BITS12?y.decompressTextureCoordinates(o[t+1],f).y*(this.maximumHeight-this.minimumHeight)+this.minimumHeight:o[t+3]};p.prototype.decodeWebMercatorT=function(o,t){return t*=this.stride,this.quantization===S.BITS12?y.decompressTextureCoordinates(o[t+3],f).x:o[t+6]};p.prototype.getOctEncodedNormal=function(o,t,e){t=t*this.stride+this._offsetVertexNormal;let n=o[t]/256,i=Math.floor(n),c=(n-i)*256;return T.fromElements(i,c,e)};p.prototype.decodeGeodeticSurfaceNormal=function(o,t,e){return t=t*this.stride+this._offsetGeodeticSurfaceNormal,e.x=o[t],e.y=o[t+1],e.z=o[t+2],e};p.prototype._calculateStrideAndOffsets=function(){let o=0;switch(this.quantization){case S.BITS12:o+=3;break;default:o+=6}this.hasWebMercatorT&&(o+=1),this.hasVertexNormals&&(this._offsetVertexNormal=o,o+=1),this.hasGeodeticSurfaceNormals&&(this._offsetGeodeticSurfaceNormal=o,o+=3),this.stride=o};var G={position3DAndHeight:0,textureCoordAndEncodedNormals:1,geodeticSurfaceNormal:2},H={compressed0:0,compressed1:1,geodeticSurfaceNormal:2};p.prototype.getAttributes=function(o){let t=A.FLOAT,e=A.getSizeInBytes(t),n=this.stride*e,i=0,c=[];function a(r,m){c.push({index:r,vertexBuffer:o,componentDatatype:t,componentsPerAttribute:m,offsetInBytes:i,strideInBytes:n}),i+=m*e}if(this.quantization===S.NONE){a(G.position3DAndHeight,4);let r=2;r+=this.hasWebMercatorT?1:0,r+=this.hasVertexNormals?1:0,a(G.textureCoordAndEncodedNormals,r),this.hasGeodeticSurfaceNormals&&a(G.geodeticSurfaceNormal,3)}else{let r=this.hasWebMercatorT||this.hasVertexNormals,m=this.hasWebMercatorT&&this.hasVertexNormals;a(H.compressed0,r?4:3),m&&a(H.compressed1,1),this.hasGeodeticSurfaceNormals&&a(H.geodeticSurfaceNormal,3)}return c};p.prototype.getAttributeLocations=function(){return this.quantization===S.NONE?G:H};p.clone=function(o,t){if(h(o))return h(t)||(t=new p),t.quantization=o.quantization,t.minimumHeight=o.minimumHeight,t.maximumHeight=o.maximumHeight,t.center=s.clone(o.center),t.toScaledENU=d.clone(o.toScaledENU),t.fromScaledENU=d.clone(o.fromScaledENU),t.matrix=d.clone(o.matrix),t.hasVertexNormals=o.hasVertexNormals,t.hasWebMercatorT=o.hasWebMercatorT,t.hasGeodeticSurfaceNormals=o.hasGeodeticSurfaceNormals,t.exaggeration=o.exaggeration,t.exaggerationRelativeHeight=o.exaggerationRelativeHeight,t._calculateStrideAndOffsets(),t};var Dt=p;export{Tt as a,Dt as b}; diff --git a/public/Cesium/Workers/chunk-A56XVLQR.js b/public/Cesium/Workers/chunk-A56XVLQR.js new file mode 100644 index 000000000..cf81e0eda --- /dev/null +++ b/public/Cesium/Workers/chunk-A56XVLQR.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{f as e}from"./chunk-64RSHJUE.js";function r(t){t=t??e.EMPTY_OBJECT,this.position=t.position,this.normal=t.normal,this.st=t.st,this.bitangent=t.bitangent,this.tangent=t.tangent,this.color=t.color}var n=r;export{n as a}; diff --git a/public/Cesium/Workers/chunk-AJYK4IVJ.js b/public/Cesium/Workers/chunk-AJYK4IVJ.js new file mode 100644 index 000000000..85952b791 --- /dev/null +++ b/public/Cesium/Workers/chunk-AJYK4IVJ.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as R}from"./chunk-J6UP6FLE.js";import{a as ct}from"./chunk-VW6VD53G.js";import{a as Z,b as H}from"./chunk-77IHZJJ3.js";import{a as V}from"./chunk-3W4GT7KQ.js";import{a as U}from"./chunk-G5AGHVVC.js";import{b as ot}from"./chunk-DMEY62ID.js";import{a as it}from"./chunk-HTFSEEMT.js";import{a as nt}from"./chunk-OFUUQVMR.js";import{a as et}from"./chunk-A56XVLQR.js";import{b as J,c as X,d as z}from"./chunk-RCV6KWXS.js";import{f as K}from"./chunk-PSPPBZWI.js";import{a as k}from"./chunk-AU7IKHOH.js";import{a as w,b as q,c as M,d as tt,e as F}from"./chunk-64RSHJUE.js";import{a as I}from"./chunk-3SSKC3VN.js";import{e as x}from"./chunk-VTAIKJXX.js";function ft(n,i){this.positions=x(n)?n:[],this.holes=x(i)?i:[]}var st=ft;function S(){this._array=[],this._offset=0,this._length=0}Object.defineProperties(S.prototype,{length:{get:function(){return this._length}}});S.prototype.enqueue=function(n){this._array.push(n),this._length++};S.prototype.dequeue=function(){if(this._length===0)return;let n=this._array,i=this._offset,u=n[i];return n[i]=void 0,i++,i>10&&i*2>n.length&&(this._array=n.slice(i),i=0),this._offset=i,this._length--,u};S.prototype.peek=function(){if(this._length!==0)return this._array[this._offset]};S.prototype.contains=function(n){return this._array.indexOf(n)!==-1};S.prototype.clear=function(){this._array.length=this._offset=this._length=0};S.prototype.sort=function(n){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(n)};var $=S;var b={};b.computeHierarchyPackedLength=function(n,i){let u=0,s=[n];for(;s.length>0;){let c=s.pop();if(!x(c))continue;u+=2;let a=c.positions,t=c.holes;if(x(a)&&a.length>0&&(u+=a.length*i.packedLength),x(t)){let o=t.length;for(let e=0;e<o;++e)s.push(t[e])}}return u};b.packPolygonHierarchy=function(n,i,u,s){let c=[n];for(;c.length>0;){let a=c.pop();if(!x(a))continue;let t=a.positions,o=a.holes;if(i[u++]=x(t)?t.length:0,i[u++]=x(o)?o.length:0,x(t)){let e=t.length;for(let r=0;r<e;++r,u+=s.packedLength)s.pack(t[r],i,u)}if(x(o)){let e=o.length;for(let r=0;r<e;++r)c.push(o[r])}}return u};b.unpackPolygonHierarchy=function(n,i,u){let s=n[i++],c=n[i++],a=new Array(s),t=c>0?new Array(c):void 0;for(let o=0;o<s;++o,i+=u.packedLength)a[o]=u.unpack(n,i);for(let o=0;o<c;++o)t[o]=b.unpackPolygonHierarchy(n,i,u),i=t[o].startingIndex,delete t[o].startingIndex;return{positions:a,holes:t,startingIndex:i}};var O=new M;function at(n,i,u,s){return M.subtract(i,n,O),M.multiplyByScalar(O,u/s,O),M.add(n,O,O),[O.x,O.y]}var G=new w;function gt(n,i,u,s){return w.subtract(i,n,G),w.multiplyByScalar(G,u/s,G),w.add(n,G,G),[G.x,G.y,G.z]}b.subdivideLineCount=function(n,i,u){let c=w.distance(n,i)/u,a=Math.max(0,Math.ceil(I.log2(c)));return Math.pow(2,a)};var j=new q,Q=new q,dt=new q,pt=new w,Y=new U;b.subdivideRhumbLineCount=function(n,i,u,s){let c=n.cartesianToCartographic(i,j),a=n.cartesianToCartographic(u,Q),o=new U(c,a,n).surfaceDistance/s,e=Math.max(0,Math.ceil(I.log2(o)));return Math.pow(2,e)};b.subdivideTexcoordLine=function(n,i,u,s,c,a){let t=b.subdivideLineCount(u,s,c),o=M.distance(n,i),e=o/t,r=a;r.length=t*2;let l=0;for(let h=0;h<t;h++){let f=at(n,i,h*e,o);r[l++]=f[0],r[l++]=f[1]}return r};b.subdivideLine=function(n,i,u,s){let c=b.subdivideLineCount(n,i,u),a=w.distance(n,i),t=a/c;x(s)||(s=[]);let o=s;o.length=c*3;let e=0;for(let r=0;r<c;r++){let l=gt(n,i,r*t,a);o[e++]=l[0],o[e++]=l[1],o[e++]=l[2]}return o};b.subdivideTexcoordRhumbLine=function(n,i,u,s,c,a,t){let o=u.cartesianToCartographic(s,j),e=u.cartesianToCartographic(c,Q);Y.setEndPoints(o,e);let r=Y.surfaceDistance/a,l=Math.max(0,Math.ceil(I.log2(r))),h=Math.pow(2,l),f=M.distance(n,i),d=f/h,m=t;m.length=h*2;let p=0;for(let g=0;g<h;g++){let y=at(n,i,g*d,f);m[p++]=y[0],m[p++]=y[1]}return m};b.subdivideRhumbLine=function(n,i,u,s,c){let a=n.cartesianToCartographic(i,j),t=n.cartesianToCartographic(u,Q),o=new U(a,t,n);if(x(c)||(c=[]),o.surfaceDistance<=s)return c.length=3,c[0]=i.x,c[1]=i.y,c[2]=i.z,c;let e=o.surfaceDistance/s,r=Math.max(0,Math.ceil(I.log2(e))),l=Math.pow(2,r),h=o.surfaceDistance/l,f=c;f.length=l*3;let d=0;for(let m=0;m<l;m++){let p=o.interpolateUsingSurfaceDistance(m*h,dt),g=n.cartographicToCartesian(p,pt);f[d++]=g.x,f[d++]=g.y,f[d++]=g.z}return f};var mt=new w,yt=new w,xt=new w,wt=new w;b.scaleToGeodeticHeightExtruded=function(n,i,u,s,c){s=s??tt.default;let a=mt,t=yt,o=xt,e=wt;if(x(n)&&x(n.attributes)&&x(n.attributes.position)){let r=n.attributes.position.values,l=r.length/2;for(let h=0;h<l;h+=3)w.fromArray(r,h,o),s.geodeticSurfaceNormal(o,a),e=s.scaleToGeodeticSurface(o,e),t=w.multiplyByScalar(a,u,t),t=w.add(e,t,t),r[h+l]=t.x,r[h+1+l]=t.y,r[h+2+l]=t.z,c&&(e=w.clone(o,e)),t=w.multiplyByScalar(a,i,t),t=w.add(e,t,t),r[h]=t.x,r[h+1]=t.y,r[h+2]=t.z}return n};b.polygonOutlinesFromHierarchy=function(n,i,u){let s=[],c=new $;c.enqueue(n);let a,t,o;for(;c.length!==0;){let e=c.dequeue(),r=e.positions;if(i)for(o=r.length,a=0;a<o;a++)u.scaleToGeodeticSurface(r[a],r[a]);if(r=V(r,w.equalsEpsilon,!0),r.length<3)continue;let l=e.holes?e.holes.length:0;for(a=0;a<l;a++){let h=e.holes[a],f=h.positions;if(i)for(o=f.length,t=0;t<o;++t)u.scaleToGeodeticSurface(f[t],f[t]);if(f=V(f,w.equalsEpsilon,!0),f.length<3)continue;s.push(f);let d=0;for(x(h.holes)&&(d=h.holes.length),t=0;t<d;t++)c.enqueue(h.holes[t])}s.push(r)}return s};var bt=new q;function Lt(n,i,u){let s=u.cartesianToCartographic(n,j),c=u.cartesianToCartographic(i,Q);if(Math.sign(s.latitude)===Math.sign(c.latitude))return;Y.setEndPoints(s,c);let a=Y.findIntersectionWithLatitude(0,bt);if(!x(a))return;let t=Math.min(s.longitude,c.longitude),o=Math.max(s.longitude,c.longitude);if(Math.abs(o-t)>I.PI){let e=t;t=o,o=e}if(!(a.longitude<t||a.longitude>o))return u.cartographicToCartesian(a)}function Tt(n,i,u,s){if(s===R.RHUMB)return Lt(n,i,u);let c=ot.lineSegmentPlane(n,i,it.ORIGIN_XY_PLANE);if(x(c))return u.scaleToGeodeticSurface(c,c)}var Et=new q;function vt(n,i,u){let s=[],c,a,t,o,e,r=0;for(;r<n.length;){c=n[r],a=n[(r+1)%n.length],t=I.sign(c.z),o=I.sign(a.z);let l=h=>i.cartesianToCartographic(h,Et).longitude;if(t===0)s.push({position:r,type:t,visited:!1,next:o,theta:l(c)});else if(o!==0){if(e=Tt(c,a,i,u),++r,!x(e))continue;n.splice(r,0,e),s.push({position:r,type:t,visited:!1,next:o,theta:l(e)})}++r}return s}function ht(n,i,u,s,c,a,t){let o=[],e=a,r=h=>f=>f.position===h,l=[];do{let h=u[e];o.push(h);let f=s.findIndex(r(e)),d=s[f];if(!x(d)){++e;continue}let{visited:m,type:p,next:g}=d;if(d.visited=!0,p===0){if(g===0){let C=s[f-(t?1:-1)];if(C?.position===e+1)C.visited=!0;else{++e;continue}}if(!m&&t&&g>0||a===e&&!t&&g<0){++e;continue}}if(!(t?p>=0:p<=0)){++e;continue}m||l.push(e);let L=f+(t?1:-1),_=s[L];if(!x(_)){++e;continue}e=_.position}while(e<u.length&&e>=0&&e!==a&&o.length<u.length);n.splice(i,c,o);for(let h of l)i=ht(n,++i,u,s,0,h,!t);return i}b.splitPolygonsOnEquator=function(n,i,u,s){x(s)||(s=[]),s.splice(0,0,...n),s.length=n.length;let c=0;for(;c<s.length;){let a=s[c],t=a.slice();if(a.length<3){s[c]=t,++c;continue}let o=vt(t,i,u);if(t.length===a.length||o.length<=1){s[c]=t,++c;continue}o.sort((r,l)=>r.theta-l.theta);let e=t[0].z>=0;c=ht(s,c,t,o,1,0,e)}return s};b.polygonsFromHierarchy=function(n,i,u,s,c,a){let t=[],o=[],e=new $;e.enqueue(n);let r=x(a);for(;e.length!==0;){let l=e.dequeue(),h=l.positions,f=l.holes,d,m;if(s)for(m=h.length,d=0;d<m;d++)c.scaleToGeodeticSurface(h[d],h[d]);if(i||(h=V(h,w.equalsEpsilon,!0)),h.length<3)continue;let p=u(h);if(!x(p))continue;let g=[],y=H.computeWindingOrder2D(p);if(y===Z.CLOCKWISE&&(p.reverse(),h=h.slice().reverse()),r){r=!1;let P=[h];if(P=a(P,P),P.length>1){for(let v of P)e.enqueue(new st(v,f));continue}}let L=h.slice(),_=x(f)?f.length:0,C=[],T;for(d=0;d<_;d++){let P=f[d],v=P.positions;if(s)for(m=v.length,T=0;T<m;++T)c.scaleToGeodeticSurface(v[T],v[T]);if(i||(v=V(v,w.equalsEpsilon,!0)),v.length<3)continue;let E=u(v);if(!x(E))continue;y=H.computeWindingOrder2D(E),y===Z.CLOCKWISE&&(E.reverse(),v=v.slice().reverse()),C.push(v),g.push(L.length),L=L.concat(v),p=p.concat(E);let D=0;for(x(P.holes)&&(D=P.holes.length),T=0;T<D;T++)e.enqueue(P.holes[T])}t.push({outerRing:h,holes:C}),o.push({positions:L,positions2D:p,holes:g})}return{hierarchy:t,polygons:o}};var Ct=new M,Pt=new w,Dt=new K,It=new F;b.computeBoundingRectangle=function(n,i,u,s,c){let a=K.fromAxisAngle(n,s,Dt),t=F.fromQuaternion(a,It),o=Number.POSITIVE_INFINITY,e=Number.NEGATIVE_INFINITY,r=Number.POSITIVE_INFINITY,l=Number.NEGATIVE_INFINITY,h=u.length;for(let f=0;f<h;++f){let d=w.clone(u[f],Pt);F.multiplyByVector(t,d,d);let m=i(d,Ct);x(m)&&(o=Math.min(o,m.x),e=Math.max(e,m.x),r=Math.min(r,m.y),l=Math.max(l,m.y))}return c.x=o,c.y=r,c.width=e-o,c.height=l-r,c};b.createGeometryFromPositions=function(n,i,u,s,c,a,t){let o=H.triangulate(i.positions2D,i.holes);o.length<3&&(o=[0,1,2]);let e=i.positions,r=x(u),l=r?u.positions:void 0;if(c){let h=e.length,f=new Array(h*3),d=0;for(let g=0;g<h;g++){let y=e[g];f[d++]=y.x,f[d++]=y.y,f[d++]=y.z}let m={attributes:{position:new z({componentDatatype:k.DOUBLE,componentsPerAttribute:3,values:f})},indices:o,primitiveType:J.TRIANGLES};r&&(m.attributes.st=new z({componentDatatype:k.FLOAT,componentsPerAttribute:2,values:M.packArray(l)}));let p=new X(m);return a.normal?ct.computeNormal(p):p}if(t===R.GEODESIC)return H.computeSubdivision(n,e,o,l,s);if(t===R.RHUMB)return H.computeRhumbLineSubdivision(n,e,o,l,s)};var rt=[],ut=[],_t=new w,At=new w;b.computeWallGeometry=function(n,i,u,s,c,a){let t,o,e,r,l,h,f,d,m,p=n.length,g=0,y=0,L=x(i),_=L?i.positions:void 0;if(c)for(o=p*3*2,t=new Array(o*2),L&&(m=p*2*2,d=new Array(m*2)),e=0;e<p;e++)r=n[e],l=n[(e+1)%p],t[g]=t[g+o]=r.x,++g,t[g]=t[g+o]=r.y,++g,t[g]=t[g+o]=r.z,++g,t[g]=t[g+o]=l.x,++g,t[g]=t[g+o]=l.y,++g,t[g]=t[g+o]=l.z,++g,L&&(h=_[e],f=_[(e+1)%p],d[y]=d[y+m]=h.x,++y,d[y]=d[y+m]=h.y,++y,d[y]=d[y+m]=f.x,++y,d[y]=d[y+m]=f.y,++y);else{let E=I.chordLength(s,u.maximumRadius),D=0;if(a===R.GEODESIC)for(e=0;e<p;e++)D+=b.subdivideLineCount(n[e],n[(e+1)%p],E);else if(a===R.RHUMB)for(e=0;e<p;e++)D+=b.subdivideRhumbLineCount(u,n[e],n[(e+1)%p],E);for(o=(D+p)*3,t=new Array(o*2),L&&(m=(D+p)*2,d=new Array(m*2)),e=0;e<p;e++){r=n[e],l=n[(e+1)%p];let A,N;L&&(h=_[e],f=_[(e+1)%p]),a===R.GEODESIC?(A=b.subdivideLine(r,l,E,ut),L&&(N=b.subdivideTexcoordLine(h,f,r,l,E,rt))):a===R.RHUMB&&(A=b.subdivideRhumbLine(u,r,l,E,ut),L&&(N=b.subdivideTexcoordRhumbLine(h,f,u,r,l,E,rt)));let lt=A.length;for(let B=0;B<lt;++B,++g)t[g]=A[B],t[g+o]=A[B];if(t[g]=l.x,t[g+o]=l.x,++g,t[g]=l.y,t[g+o]=l.y,++g,t[g]=l.z,t[g+o]=l.z,++g,L){let B=N.length;for(let W=0;W<B;++W,++y)d[y]=N[W],d[y+m]=N[W];d[y]=f.x,d[y+m]=f.x,++y,d[y]=f.y,d[y+m]=f.y,++y}}}p=t.length;let C=nt.createTypedArray(p/3,p-n.length*6),T=0;for(p/=6,e=0;e<p;e++){let E=e,D=E+1,A=E+p,N=A+1;r=w.fromArray(t,E*3,_t),l=w.fromArray(t,D*3,At),!w.equalsEpsilon(r,l,I.EPSILON10,I.EPSILON10)&&(C[T++]=E,C[T++]=A,C[T++]=D,C[T++]=D,C[T++]=A,C[T++]=N)}let P={attributes:new et({position:new z({componentDatatype:k.DOUBLE,componentsPerAttribute:3,values:t})}),indices:C,primitiveType:J.TRIANGLES};return L&&(P.attributes.st=new z({componentDatatype:k.FLOAT,componentsPerAttribute:2,values:d})),new X(P)};var ie=b;export{ie as a}; diff --git a/public/Cesium/Workers/chunk-ARG42DC4.js b/public/Cesium/Workers/chunk-ARG42DC4.js new file mode 100644 index 000000000..e9121f966 --- /dev/null +++ b/public/Cesium/Workers/chunk-ARG42DC4.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as w}from"./chunk-3SSKC3VN.js";var C={};C.computePositions=function(I,f,b,n,e){let m=I*.5,i=-m,s=n+n,P=e?2*s:s,t=new Float64Array(P*3),r,c=0,o=0,p=e?s*3:0,a=e?(s+n)*3:n*3;for(r=0;r<n;r++){let y=r/n*w.TWO_PI,x=Math.cos(y),h=Math.sin(y),u=x*b,M=h*b,O=x*f,d=h*f;t[o+p]=u,t[o+p+1]=M,t[o+p+2]=i,t[o+a]=O,t[o+a+1]=d,t[o+a+2]=m,o+=3,e&&(t[c++]=u,t[c++]=M,t[c++]=i,t[c++]=O,t[c++]=d,t[c++]=m)}return t};var Y=C;export{Y as a}; diff --git a/public/Cesium/Workers/chunk-AU7IKHOH.js b/public/Cesium/Workers/chunk-AU7IKHOH.js new file mode 100644 index 000000000..d7d2446af --- /dev/null +++ b/public/Cesium/Workers/chunk-AU7IKHOH.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as N}from"./chunk-OSW76XDF.js";import{a}from"./chunk-LEYMRMBK.js";import{e as T}from"./chunk-VTAIKJXX.js";var r={BYTE:N.BYTE,UNSIGNED_BYTE:N.UNSIGNED_BYTE,SHORT:N.SHORT,UNSIGNED_SHORT:N.UNSIGNED_SHORT,INT:N.INT,UNSIGNED_INT:N.UNSIGNED_INT,FLOAT:N.FLOAT,DOUBLE:N.DOUBLE};r.getSizeInBytes=function(n){if(!T(n))throw new a("value is required.");switch(n){case r.BYTE:return Int8Array.BYTES_PER_ELEMENT;case r.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case r.SHORT:return Int16Array.BYTES_PER_ELEMENT;case r.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case r.INT:return Int32Array.BYTES_PER_ELEMENT;case r.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT;case r.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case r.DOUBLE:return Float64Array.BYTES_PER_ELEMENT;default:throw new a("componentDatatype is not a valid value.")}};r.fromTypedArray=function(n){if(n instanceof Int8Array)return r.BYTE;if(n instanceof Uint8Array)return r.UNSIGNED_BYTE;if(n instanceof Int16Array)return r.SHORT;if(n instanceof Uint16Array)return r.UNSIGNED_SHORT;if(n instanceof Int32Array)return r.INT;if(n instanceof Uint32Array)return r.UNSIGNED_INT;if(n instanceof Float32Array)return r.FLOAT;if(n instanceof Float64Array)return r.DOUBLE;throw new a("array must be an Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, or Float64Array.")};r.validate=function(n){return T(n)&&(n===r.BYTE||n===r.UNSIGNED_BYTE||n===r.SHORT||n===r.UNSIGNED_SHORT||n===r.INT||n===r.UNSIGNED_INT||n===r.FLOAT||n===r.DOUBLE)};r.createTypedArray=function(n,e){if(!T(n))throw new a("componentDatatype is required.");if(!T(e))throw new a("valuesOrLength is required.");switch(n){case r.BYTE:return new Int8Array(e);case r.UNSIGNED_BYTE:return new Uint8Array(e);case r.SHORT:return new Int16Array(e);case r.UNSIGNED_SHORT:return new Uint16Array(e);case r.INT:return new Int32Array(e);case r.UNSIGNED_INT:return new Uint32Array(e);case r.FLOAT:return new Float32Array(e);case r.DOUBLE:return new Float64Array(e);default:throw new a("componentDatatype is not a valid value.")}};r.createArrayBufferView=function(n,e,E,t){if(!T(n))throw new a("componentDatatype is required.");if(!T(e))throw new a("buffer is required.");switch(E=E??0,t=t??(e.byteLength-E)/r.getSizeInBytes(n),n){case r.BYTE:return new Int8Array(e,E,t);case r.UNSIGNED_BYTE:return new Uint8Array(e,E,t);case r.SHORT:return new Int16Array(e,E,t);case r.UNSIGNED_SHORT:return new Uint16Array(e,E,t);case r.INT:return new Int32Array(e,E,t);case r.UNSIGNED_INT:return new Uint32Array(e,E,t);case r.FLOAT:return new Float32Array(e,E,t);case r.DOUBLE:return new Float64Array(e,E,t);default:throw new a("componentDatatype is not a valid value.")}};r.fromName=function(n){switch(n){case"BYTE":return r.BYTE;case"UNSIGNED_BYTE":return r.UNSIGNED_BYTE;case"SHORT":return r.SHORT;case"UNSIGNED_SHORT":return r.UNSIGNED_SHORT;case"INT":return r.INT;case"UNSIGNED_INT":return r.UNSIGNED_INT;case"FLOAT":return r.FLOAT;case"DOUBLE":return r.DOUBLE;default:throw new a("name is not a valid value.")}};var A=Object.freeze(r);export{A as a}; diff --git a/public/Cesium/Workers/chunk-B4AA3ARO.js b/public/Cesium/Workers/chunk-B4AA3ARO.js new file mode 100644 index 000000000..1cb659c9a --- /dev/null +++ b/public/Cesium/Workers/chunk-B4AA3ARO.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as _}from"./chunk-XRL4AVS5.js";import{a as te}from"./chunk-TCGIRNHN.js";import{a as ie,b as j,f as Z,g as fe}from"./chunk-PSPPBZWI.js";import{a as e,b as se,c as ee,e as O}from"./chunk-64RSHJUE.js";import{a as Q}from"./chunk-3SSKC3VN.js";import{a as le}from"./chunk-LEYMRMBK.js";import{e as $}from"./chunk-VTAIKJXX.js";var Ee={ROUNDED:0,MITERED:1,BEVELED:2},G=Object.freeze(Ee);var me={};function P(r,n){if(!$(r))throw new le("identifier is required.");$(me[r])||(me[r]=!0,console.warn(n??r))}P.geometryOutlines="Entity geometry outlines are unsupported on terrain. Outlines will be disabled. To enable outlines, disable geometry terrain clamping by explicitly setting height to 0.";P.geometryZIndex="Entity geometry with zIndex are unsupported when height or extrudedHeight are defined. zIndex will be ignored";P.geometryHeightReference="Entity corridor, ellipse, polygon or rectangle with heightReference must also have a defined height. heightReference will be ignored";P.geometryExtrudedHeightReference="Entity corridor, ellipse, polygon or rectangle with extrudedHeightReference must also have a defined extrudedHeight. extrudedHeightReference will be ignored";var ue=P;var w=[new e,new e],Se=new e,Te=new e,Be=new e,Ce=new e,ze=new e,Ae=new e,be=new e,Oe=new e,ve=new e,I=new e,W=new e,R={},re=new se;function De(r,n){let a=new Array(r.length);for(let o=0;o<r.length;o++){let t=r[o];re=n.cartesianToCartographic(t,re),a[o]=re.height,r[o]=n.scaleToGeodeticSurface(t,t)}return a}function ne(r,n,a,o){let t=r[0],c=r[1],f=e.angleBetween(t,c),l=Math.ceil(f/o),m=new Array(l),s;if(n===a){for(s=0;s<l;s++)m[s]=n;return m.push(a),m}let d=(a-n)/l;for(s=1;s<l;s++){let x=n+s*d;m[s]=x}return m[0]=n,m.push(a),m}var X=new e,Y=new e;function je(r,n,a,o){let t=new te(a,o),c=t.projectPointOntoPlane(e.add(a,r,X),X),f=t.projectPointOntoPlane(e.add(a,n,Y),Y),l=ee.angleBetween(c,f);return f.x*c.y-f.y*c.x>=0?-l:l}var He=new e(-1,0,0),H=new j,Me=new j,oe=new O,Ne=O.IDENTITY.clone(),Ve=new e,Fe=new ie,he=new e;function v(r,n,a,o,t,c,f,l){let m=Ve,s=Fe;H=fe.eastNorthUpToFixedFrame(r,t,H),m=j.multiplyByPointAsVector(H,He,m),m=e.normalize(m,m);let S=je(m,n,r,t);oe=O.fromRotationZ(S,oe),he.z=c,H=j.multiplyTransformation(H,j.fromRotationTranslation(oe,he,Me),H);let d=Ne;d[0]=f;for(let x=0;x<l;x++)for(let i=0;i<a.length;i+=3)s=e.fromArray(a,i,s),s=O.multiplyByVector(d,s,s),s=j.multiplyByPoint(H,s,s),o.push(s.x,s.y,s.z);return o}var Ge=new e;function ce(r,n,a,o,t,c,f){for(let l=0;l<r.length;l+=3){let m=e.fromArray(r,l,Ge);o=v(m,n,a,o,t,c[l/3],f,1)}return o}function Ie(r,n){let a=r.length,o=new Array(a*6),t=0,c=n.x+n.width/2,f=n.y+n.height/2,l=r[0];o[t++]=l.x-c,o[t++]=0,o[t++]=l.y-f;for(let m=1;m<a;m++){l=r[m];let s=l.x-c,S=l.y-f;o[t++]=s,o[t++]=0,o[t++]=S,o[t++]=s,o[t++]=0,o[t++]=S}return l=r[0],o[t++]=l.x-c,o[t++]=0,o[t++]=l.y-f,o}function de(r,n){let a=r.length,o=new Array(a*3),t=0,c=n.x+n.width/2,f=n.y+n.height/2;for(let l=0;l<a;l++)o[t++]=r[l].x-c,o[t++]=0,o[t++]=r[l].y-f;return o}var ge=new Z,ye=new e,we=new O;function pe(r,n,a,o,t,c,f,l,m,s){let S=e.angleBetween(e.subtract(n,r,I),e.subtract(a,r,W)),d=o===G.BEVELED?0:Math.ceil(S/Q.toRadians(5)),x;t?x=O.fromQuaternion(Z.fromAxisAngle(e.negate(r,I),S/(d+1),ge),we):x=O.fromQuaternion(Z.fromAxisAngle(r,S/(d+1),ge),we);let i,g;if(n=e.clone(n,ye),d>0){let D=s?2:1;for(let y=0;y<d;y++)n=O.multiplyByVector(x,n,n),i=e.subtract(n,r,I),i=e.normalize(i,i),t||(i=e.negate(i,i)),g=c.scaleToGeodeticSurface(n,W),f=v(g,i,l,f,c,m,1,D)}else i=e.subtract(n,r,I),i=e.normalize(i,i),t||(i=e.negate(i,i)),g=c.scaleToGeodeticSurface(n,W),f=v(g,i,l,f,c,m,1,1),a=e.clone(a,ye),i=e.subtract(a,r,I),i=e.normalize(i,i),t||(i=e.negate(i,i)),g=c.scaleToGeodeticSurface(a,W),f=v(g,i,l,f,c,m,1,1);return f}R.removeDuplicatesFromShape=function(r){let n=r.length,a=[];for(let o=n-1,t=0;t<n;o=t++){let c=r[o],f=r[t];ee.equals(c,f)||a.push(f)}return a};R.angleIsGreaterThanPi=function(r,n,a,o){let t=new te(a,o),c=t.projectPointOntoPlane(e.add(a,r,X),X),f=t.projectPointOntoPlane(e.add(a,n,Y),Y);return f.x*c.y-f.y*c.x>=0};var Le=new e,qe=new e;R.computePositions=function(r,n,a,o,t){let c=o._ellipsoid,f=De(r,c),l=o._granularity,m=o._cornerType,s=t?Ie(n,a):de(n,a),S=t?de(n,a):void 0,d=a.height/2,x=a.width/2,i=r.length,g=[],D=t?[]:void 0,y=Se,b=Te,h=Be,E=Ce,B=ze,C=Ae,z=be,u=Oe,T=ve,p=r[0],M=r[1];E=c.geodeticSurfaceNormal(p,E),y=e.subtract(M,p,y),y=e.normalize(y,y),u=e.cross(E,y,u),u=e.normalize(u,u);let N=f[0],A=f[1];t&&(D=v(p,u,S,D,c,N+d,1,1)),T=e.clone(p,T),p=M,b=e.negate(y,b);let V,F;for(let U=1;U<i-1;U++){let ae=t?2:1;if(M=r[U+1],p.equals(M)){ue("Positions are too close and are considered equivalent with rounding error.");continue}y=e.subtract(M,p,y),y=e.normalize(y,y),E=c.geodeticSurfaceNormal(p,E);let L=e.multiplyByScalar(E,e.dot(y,E),Le);e.subtract(y,L,L),e.normalize(L,L);let q=e.multiplyByScalar(E,e.dot(b,E),qe);if(e.subtract(b,q,q),e.normalize(q,q),!Q.equalsEpsilon(Math.abs(e.dot(L,q)),1,Q.EPSILON7)){h=e.add(y,b,h),h=e.normalize(h,h),h=e.cross(h,E,h),h=e.cross(E,h,h),h=e.normalize(h,h);let k=1/Math.max(.25,e.magnitude(e.cross(h,b,I))),K=R.angleIsGreaterThanPi(y,b,p,c);K?(B=e.add(p,e.multiplyByScalar(h,k*x,h),B),C=e.add(B,e.multiplyByScalar(u,x,C),C),w[0]=e.clone(T,w[0]),w[1]=e.clone(C,w[1]),V=ne(w,N+d,A+d,l),F=_.generateArc({positions:w,granularity:l,ellipsoid:c}),g=ce(F,u,s,g,c,V,1),u=e.cross(E,y,u),u=e.normalize(u,u),z=e.add(B,e.multiplyByScalar(u,x,z),z),m===G.ROUNDED||m===G.BEVELED?pe(B,C,z,m,K,c,g,s,A+d,t):(h=e.negate(h,h),g=v(p,h,s,g,c,A+d,k,ae)),T=e.clone(z,T)):(B=e.add(p,e.multiplyByScalar(h,k*x,h),B),C=e.add(B,e.multiplyByScalar(u,-x,C),C),w[0]=e.clone(T,w[0]),w[1]=e.clone(C,w[1]),V=ne(w,N+d,A+d,l),F=_.generateArc({positions:w,granularity:l,ellipsoid:c}),g=ce(F,u,s,g,c,V,1),u=e.cross(E,y,u),u=e.normalize(u,u),z=e.add(B,e.multiplyByScalar(u,-x,z),z),m===G.ROUNDED||m===G.BEVELED?pe(B,C,z,m,K,c,g,s,A+d,t):g=v(p,h,s,g,c,A+d,k,ae),T=e.clone(z,T)),b=e.negate(y,b)}else g=v(T,u,s,g,c,N+d,1,1),T=p;N=A,A=f[U+1],p=M}w[0]=e.clone(T,w[0]),w[1]=e.clone(p,w[1]),V=ne(w,N+d,A+d,l),F=_.generateArc({positions:w,granularity:l,ellipsoid:c}),g=ce(F,u,s,g,c,V,1),t&&(D=v(p,u,S,D,c,A+d,1,1)),i=g.length;let xe=t?i+D.length:i,J=new Float64Array(xe);return J.set(g),t&&J.set(D,i),J};var ct=R;export{G as a,ue as b,ct as c}; diff --git a/public/Cesium/Workers/chunk-CNCV5UL7.js b/public/Cesium/Workers/chunk-CNCV5UL7.js new file mode 100644 index 000000000..da701c811 --- /dev/null +++ b/public/Cesium/Workers/chunk-CNCV5UL7.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as J}from"./chunk-TCGIRNHN.js";import{a as I}from"./chunk-HTFSEEMT.js";import{b as B,c as G,d as k}from"./chunk-4IW2T6GF.js";import{b as j,h as X}from"./chunk-PSPPBZWI.js";import{a as t,b as S,c as z,d as F,e as d}from"./chunk-64RSHJUE.js";import{a as g}from"./chunk-3SSKC3VN.js";import{a as b,b as W}from"./chunk-LEYMRMBK.js";import{e as p}from"./chunk-VTAIKJXX.js";function w(n,e){this.center=t.clone(n??t.ZERO),this.halfAxes=d.clone(e??d.ZERO)}w.packedLength=t.packedLength+d.packedLength;w.pack=function(n,e,c){return W.typeOf.object("value",n),W.defined("array",e),c=c??0,t.pack(n.center,e,c),d.pack(n.halfAxes,e,c+t.packedLength),e};w.unpack=function(n,e,c){return W.defined("array",n),e=e??0,p(c)||(c=new w),t.unpack(n,e,c.center),d.unpack(n,e+t.packedLength,c.halfAxes),c};var pt=new t,Ct=new t,ut=new t,Pt=new t,xt=new t,yt=new t,At=new d,Nt={unitary:new d,diagonal:new d};w.fromPoints=function(n,e){if(p(e)||(e=new w),!p(n)||n.length===0)return e.halfAxes=d.ZERO,e.center=t.ZERO,e;let c,h=n.length,r=t.clone(n[0],pt);for(c=1;c<h;c++)t.add(r,n[c],r);let o=1/h;t.multiplyByScalar(r,o,r);let i=0,C=0,m=0,l=0,u=0,a=0,s;for(c=0;c<h;c++)s=t.subtract(n[c],r,Ct),i+=s.x*s.x,C+=s.x*s.y,m+=s.x*s.z,l+=s.y*s.y,u+=s.y*s.z,a+=s.z*s.z;i*=o,C*=o,m*=o,l*=o,u*=o,a*=o;let f=At;f[0]=i,f[1]=C,f[2]=m,f[3]=C,f[4]=l,f[5]=u,f[6]=m,f[7]=u,f[8]=a;let A=d.computeEigenDecomposition(f,Nt),M=d.clone(A.unitary,e.halfAxes),x=d.getColumn(M,0,Pt),y=d.getColumn(M,1,xt),N=d.getColumn(M,2,yt),P=-Number.MAX_VALUE,O=-Number.MAX_VALUE,L=-Number.MAX_VALUE,U=Number.MAX_VALUE,R=Number.MAX_VALUE,q=Number.MAX_VALUE;for(c=0;c<h;c++)s=n[c],P=Math.max(t.dot(x,s),P),O=Math.max(t.dot(y,s),O),L=Math.max(t.dot(N,s),L),U=Math.min(t.dot(x,s),U),R=Math.min(t.dot(y,s),R),q=Math.min(t.dot(N,s),q);x=t.multiplyByScalar(x,.5*(U+P),x),y=t.multiplyByScalar(y,.5*(R+O),y),N=t.multiplyByScalar(N,.5*(q+L),N);let T=t.add(x,y,e.center);t.add(T,N,T);let E=ut;return E.x=P-U,E.y=O-R,E.z=L-q,t.multiplyByScalar(E,.5,E),d.multiplyByScale(e.halfAxes,E,e.halfAxes),e};var et=new t,Mt=new t;function K(n,e,c,h,r,o,i,C,m,l,u){if(!p(r)||!p(o)||!p(i)||!p(C)||!p(m)||!p(l))throw new b("all extents (minimum/maximum X/Y/Z) are required.");p(u)||(u=new w);let a=u.halfAxes;d.setColumn(a,0,e,a),d.setColumn(a,1,c,a),d.setColumn(a,2,h,a);let s=et;s.x=(r+o)/2,s.y=(i+C)/2,s.z=(m+l)/2;let f=Mt;f.x=(o-r)/2,f.y=(C-i)/2,f.z=(l-m)/2;let A=u.center;return s=d.multiplyByVector(a,s,s),t.add(n,s,A),d.multiplyByScale(a,f,a),u}var Q=new S,Ot=new t,bt=new S,Tt=new S,St=new S,gt=new S,Et=new S,Rt=new t,$=new t,Wt=new t,H=new t,zt=new t,It=new z,Lt=new z,Ut=new z,qt=new z,jt=new z,Bt=new t,vt=new t,_t=new t,Vt=new t,Dt=new z,Xt=new t,kt=new t,Zt=new t,Yt=new I(t.UNIT_X,0);w.fromRectangle=function(n,e,c,h,r){if(!p(n))throw new b("rectangle is required");if(n.width<0||n.width>g.TWO_PI)throw new b("Rectangle width must be between 0 and 2 * pi");if(n.height<0||n.height>g.PI)throw new b("Rectangle height must be between 0 and pi");if(p(h)&&!g.equalsEpsilon(h.radii.x,h.radii.y,g.EPSILON15))throw new b("Ellipsoid must be an ellipsoid of revolution (radii.x == radii.y)");e=e??0,c=c??0,h=h??F.default;let o,i,C,m,l,u,a;if(n.width<=g.PI){let R=X.center(n,Q),q=h.cartographicToCartesian(R,Ot),T=new J(q,h);a=T.plane;let E=R.longitude,rt=n.south<0&&n.north>0?0:R.latitude,ot=S.fromRadians(E,n.north,c,bt),v=S.fromRadians(n.west,n.north,c,Tt),st=S.fromRadians(n.west,rt,c,St),_=S.fromRadians(n.west,n.south,c,gt),it=S.fromRadians(E,n.south,c,Et),ht=h.cartographicToCartesian(ot,Rt),V=h.cartographicToCartesian(v,$),ft=h.cartographicToCartesian(st,Wt),D=h.cartographicToCartesian(_,H),dt=h.cartographicToCartesian(it,zt),wt=T.projectPointToNearestOnPlane(ht,It),Z=T.projectPointToNearestOnPlane(V,Lt),mt=T.projectPointToNearestOnPlane(ft,Ut),Y=T.projectPointToNearestOnPlane(D,qt),lt=T.projectPointToNearestOnPlane(dt,jt);return o=Math.min(Z.x,mt.x,Y.x),i=-o,m=Math.max(Z.y,wt.y),C=Math.min(Y.y,lt.y),v.height=_.height=e,V=h.cartographicToCartesian(v,$),D=h.cartographicToCartesian(_,H),l=Math.min(I.getPointDistance(a,V),I.getPointDistance(a,D)),u=c,K(T.origin,T.xAxis,T.yAxis,T.zAxis,o,i,C,m,l,u,r)}let s=n.south>0,f=n.north<0,A=s?n.south:f?n.north:0,M=X.center(n,Q).longitude,x=t.fromRadians(M,A,c,h,Bt);x.z=0;let N=Math.abs(x.x)<g.EPSILON10&&Math.abs(x.y)<g.EPSILON10?t.UNIT_X:t.normalize(x,vt),P=t.UNIT_Z,O=t.cross(N,P,_t);a=I.fromPointNormal(x,N,Yt);let L=t.fromRadians(M+g.PI_OVER_TWO,A,c,h,Vt);i=t.dot(I.projectPointOntoPlane(a,L,Dt),O),o=-i,m=t.fromRadians(0,n.north,f?e:c,h,Xt).z,C=t.fromRadians(0,n.south,s?e:c,h,kt).z;let U=t.fromRadians(n.east,A,c,h,Zt);return l=I.getPointDistance(a,U),u=0,K(x,O,P,N,o,i,C,m,l,u,r)};w.fromTransformation=function(n,e){return W.typeOf.object("transformation",n),p(e)||(e=new w),e.center=j.getTranslation(n,e.center),e.halfAxes=j.getMatrix3(n,e.halfAxes),e.halfAxes=d.multiplyByScalar(e.halfAxes,.5,e.halfAxes),e};w.clone=function(n,e){if(p(n))return p(e)?(t.clone(n.center,e.center),d.clone(n.halfAxes,e.halfAxes),e):new w(n.center,n.halfAxes)};w.intersectPlane=function(n,e){if(!p(n))throw new b("box is required.");if(!p(e))throw new b("plane is required.");let c=n.center,h=e.normal,r=n.halfAxes,o=h.x,i=h.y,C=h.z,m=Math.abs(o*r[d.COLUMN0ROW0]+i*r[d.COLUMN0ROW1]+C*r[d.COLUMN0ROW2])+Math.abs(o*r[d.COLUMN1ROW0]+i*r[d.COLUMN1ROW1]+C*r[d.COLUMN1ROW2])+Math.abs(o*r[d.COLUMN2ROW0]+i*r[d.COLUMN2ROW1]+C*r[d.COLUMN2ROW2]),l=t.dot(h,c)+e.distance;return l<=-m?B.OUTSIDE:l>=m?B.INSIDE:B.INTERSECTING};var nt=new t,at=new t,ct=new t,Ft=new t,tt=new t,Gt=new t;w.distanceSquaredTo=function(n,e){if(!p(n))throw new b("box is required.");if(!p(e))throw new b("cartesian is required.");let c=t.subtract(e,n.center,et),h=n.halfAxes,r=d.getColumn(h,0,nt),o=d.getColumn(h,1,at),i=d.getColumn(h,2,ct),C=t.magnitude(r),m=t.magnitude(o),l=t.magnitude(i),u=!0,a=!0,s=!0;C>0?t.divideByScalar(r,C,r):u=!1,m>0?t.divideByScalar(o,m,o):a=!1,l>0?t.divideByScalar(i,l,i):s=!1;let f=!u+!a+!s,A,M,x;if(f===1){let O=r;A=o,M=i,a?s||(O=i,M=r):(O=o,A=r),x=t.cross(A,M,tt),O===r?r=x:O===o?o=x:O===i&&(i=x)}else if(f===2){A=r,a?A=o:s&&(A=i);let O=t.UNIT_Y;O.equalsEpsilon(A,g.EPSILON3)&&(O=t.UNIT_X),M=t.cross(A,O,Ft),t.normalize(M,M),x=t.cross(A,M,tt),t.normalize(x,x),A===r?(o=M,i=x):A===o?(i=M,r=x):A===i&&(r=M,o=x)}else f===3&&(r=t.UNIT_X,o=t.UNIT_Y,i=t.UNIT_Z);let y=Gt;y.x=t.dot(c,r),y.y=t.dot(c,o),y.z=t.dot(c,i);let N=0,P;return y.x<-C?(P=y.x+C,N+=P*P):y.x>C&&(P=y.x-C,N+=P*P),y.y<-m?(P=y.y+m,N+=P*P):y.y>m&&(P=y.y-m,N+=P*P),y.z<-l?(P=y.z+l,N+=P*P):y.z>l&&(P=y.z-l,N+=P*P),N};var Jt=new t,Kt=new t;w.computePlaneDistances=function(n,e,c,h){if(!p(n))throw new b("box is required.");if(!p(e))throw new b("position is required.");if(!p(c))throw new b("direction is required.");p(h)||(h=new G);let r=Number.POSITIVE_INFINITY,o=Number.NEGATIVE_INFINITY,i=n.center,C=n.halfAxes,m=d.getColumn(C,0,nt),l=d.getColumn(C,1,at),u=d.getColumn(C,2,ct),a=t.add(m,l,Jt);t.add(a,u,a),t.add(a,i,a);let s=t.subtract(a,e,Kt),f=t.dot(c,s);return r=Math.min(f,r),o=Math.max(f,o),t.add(i,m,a),t.add(a,l,a),t.subtract(a,u,a),t.subtract(a,e,s),f=t.dot(c,s),r=Math.min(f,r),o=Math.max(f,o),t.add(i,m,a),t.subtract(a,l,a),t.add(a,u,a),t.subtract(a,e,s),f=t.dot(c,s),r=Math.min(f,r),o=Math.max(f,o),t.add(i,m,a),t.subtract(a,l,a),t.subtract(a,u,a),t.subtract(a,e,s),f=t.dot(c,s),r=Math.min(f,r),o=Math.max(f,o),t.subtract(i,m,a),t.add(a,l,a),t.add(a,u,a),t.subtract(a,e,s),f=t.dot(c,s),r=Math.min(f,r),o=Math.max(f,o),t.subtract(i,m,a),t.add(a,l,a),t.subtract(a,u,a),t.subtract(a,e,s),f=t.dot(c,s),r=Math.min(f,r),o=Math.max(f,o),t.subtract(i,m,a),t.subtract(a,l,a),t.add(a,u,a),t.subtract(a,e,s),f=t.dot(c,s),r=Math.min(f,r),o=Math.max(f,o),t.subtract(i,m,a),t.subtract(a,l,a),t.subtract(a,u,a),t.subtract(a,e,s),f=t.dot(c,s),r=Math.min(f,r),o=Math.max(f,o),h.start=r,h.stop=o,h};var Qt=new t,$t=new t,Ht=new t;w.computeCorners=function(n,e){W.typeOf.object("box",n),p(e)||(e=[new t,new t,new t,new t,new t,new t,new t,new t]);let c=n.center,h=n.halfAxes,r=d.getColumn(h,0,Qt),o=d.getColumn(h,1,$t),i=d.getColumn(h,2,Ht);return t.clone(c,e[0]),t.subtract(e[0],r,e[0]),t.subtract(e[0],o,e[0]),t.subtract(e[0],i,e[0]),t.clone(c,e[1]),t.subtract(e[1],r,e[1]),t.subtract(e[1],o,e[1]),t.add(e[1],i,e[1]),t.clone(c,e[2]),t.subtract(e[2],r,e[2]),t.add(e[2],o,e[2]),t.subtract(e[2],i,e[2]),t.clone(c,e[3]),t.subtract(e[3],r,e[3]),t.add(e[3],o,e[3]),t.add(e[3],i,e[3]),t.clone(c,e[4]),t.add(e[4],r,e[4]),t.subtract(e[4],o,e[4]),t.subtract(e[4],i,e[4]),t.clone(c,e[5]),t.add(e[5],r,e[5]),t.subtract(e[5],o,e[5]),t.add(e[5],i,e[5]),t.clone(c,e[6]),t.add(e[6],r,e[6]),t.add(e[6],o,e[6]),t.subtract(e[6],i,e[6]),t.clone(c,e[7]),t.add(e[7],r,e[7]),t.add(e[7],o,e[7]),t.add(e[7],i,e[7]),e};var te=new d;w.computeTransformation=function(n,e){W.typeOf.object("box",n),p(e)||(e=new j);let c=n.center,h=d.multiplyByUniformScale(n.halfAxes,2,te);return j.fromRotationTranslation(h,c,e)};var ee=new k;w.isOccluded=function(n,e){if(!p(n))throw new b("box is required.");if(!p(e))throw new b("occluder is required.");let c=k.fromOrientedBoundingBox(n,ee);return!e.isBoundingSphereVisible(c)};w.prototype.intersectPlane=function(n){return w.intersectPlane(this,n)};w.prototype.distanceSquaredTo=function(n){return w.distanceSquaredTo(this,n)};w.prototype.computePlaneDistances=function(n,e,c){return w.computePlaneDistances(this,n,e,c)};w.prototype.computeCorners=function(n){return w.computeCorners(this,n)};w.prototype.computeTransformation=function(n){return w.computeTransformation(this,n)};w.prototype.isOccluded=function(n){return w.isOccluded(this,n)};w.equals=function(n,e){return n===e||p(n)&&p(e)&&t.equals(n.center,e.center)&&d.equals(n.halfAxes,e.halfAxes)};w.prototype.clone=function(n){return w.clone(this,n)};w.prototype.equals=function(n){return w.equals(this,n)};var Pe=w;export{Pe as a}; diff --git a/public/Cesium/Workers/chunk-CYCB63OH.js b/public/Cesium/Workers/chunk-CYCB63OH.js new file mode 100644 index 000000000..55c2ddff8 --- /dev/null +++ b/public/Cesium/Workers/chunk-CYCB63OH.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{f as O}from"./chunk-64RSHJUE.js";import{a as f}from"./chunk-LEYMRMBK.js";import{e as t}from"./chunk-VTAIKJXX.js";function n(e){e=e??O.EMPTY_OBJECT,this.position=e.position??!1,this.normal=e.normal??!1,this.st=e.st??!1,this.bitangent=e.bitangent??!1,this.tangent=e.tangent??!1,this.color=e.color??!1}n.POSITION_ONLY=Object.freeze(new n({position:!0}));n.POSITION_AND_NORMAL=Object.freeze(new n({position:!0,normal:!0}));n.POSITION_NORMAL_AND_ST=Object.freeze(new n({position:!0,normal:!0,st:!0}));n.POSITION_AND_ST=Object.freeze(new n({position:!0,st:!0}));n.POSITION_AND_COLOR=Object.freeze(new n({position:!0,color:!0}));n.ALL=Object.freeze(new n({position:!0,normal:!0,st:!0,tangent:!0,bitangent:!0}));n.DEFAULT=n.POSITION_NORMAL_AND_ST;n.packedLength=6;n.pack=function(e,o,i){if(!t(e))throw new f("value is required");if(!t(o))throw new f("array is required");return i=i??0,o[i++]=e.position?1:0,o[i++]=e.normal?1:0,o[i++]=e.st?1:0,o[i++]=e.tangent?1:0,o[i++]=e.bitangent?1:0,o[i]=e.color?1:0,o};n.unpack=function(e,o,i){if(!t(e))throw new f("array is required");return o=o??0,t(i)||(i=new n),i.position=e[o++]===1,i.normal=e[o++]===1,i.st=e[o++]===1,i.tangent=e[o++]===1,i.bitangent=e[o++]===1,i.color=e[o]===1,i};n.clone=function(e,o){if(t(e))return t(o)||(o=new n),o.position=e.position,o.normal=e.normal,o.st=e.st,o.tangent=e.tangent,o.bitangent=e.bitangent,o.color=e.color,o};var _=n;export{_ as a}; diff --git a/public/Cesium/Workers/chunk-D6AA5QVT.js b/public/Cesium/Workers/chunk-D6AA5QVT.js new file mode 100644 index 000000000..acaa25bed --- /dev/null +++ b/public/Cesium/Workers/chunk-D6AA5QVT.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{b as r}from"./chunk-PSPPBZWI.js";import{f as m}from"./chunk-64RSHJUE.js";import{a as i}from"./chunk-LEYMRMBK.js";import{e as t}from"./chunk-VTAIKJXX.js";function d(e){if(e=e??m.EMPTY_OBJECT,!t(e.geometry))throw new i("options.geometry is required.");this.geometry=e.geometry,this.modelMatrix=r.clone(e.modelMatrix??r.IDENTITY),this.id=e.id,this.pickPrimitive=e.pickPrimitive,this.attributes=e.attributes??{},this.westHemisphereGeometry=void 0,this.eastHemisphereGeometry=void 0}var a=d;export{a}; diff --git a/public/Cesium/Workers/chunk-D6C66QON.js b/public/Cesium/Workers/chunk-D6C66QON.js new file mode 100644 index 000000000..a43eaf42c --- /dev/null +++ b/public/Cesium/Workers/chunk-D6C66QON.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as F}from"./chunk-GBYLG25F.js";import{a as Z}from"./chunk-OFUUQVMR.js";import{a as X}from"./chunk-A56XVLQR.js";import{b as K,c as Q,d as U}from"./chunk-RCV6KWXS.js";import{d as H}from"./chunk-4IW2T6GF.js";import{a as y}from"./chunk-AU7IKHOH.js";import{a as r,d as J,f as V}from"./chunk-64RSHJUE.js";import{a as N}from"./chunk-3SSKC3VN.js";import{a as b}from"./chunk-LEYMRMBK.js";import{e as R}from"./chunk-VTAIKJXX.js";var ii=new r(1,1,1),B=Math.cos,S=Math.sin;function v(t){t=t??V.EMPTY_OBJECT;let o=t.radii??ii,n=t.innerRadii??o,C=t.minimumClock??0,P=t.maximumClock??N.TWO_PI,h=t.minimumCone??0,k=t.maximumCone??N.PI,s=Math.round(t.stackPartitions??10),w=Math.round(t.slicePartitions??8),m=Math.round(t.subdivisions??128);if(s<1)throw new b("options.stackPartitions cannot be less than 1");if(w<0)throw new b("options.slicePartitions cannot be less than 0");if(m<0)throw new b("options.subdivisions must be greater than or equal to zero.");if(R(t.offsetAttribute)&&t.offsetAttribute===F.TOP)throw new b("GeometryOffsetAttribute.TOP is not a supported options.offsetAttribute for this geometry.");this._radii=r.clone(o),this._innerRadii=r.clone(n),this._minimumClock=C,this._maximumClock=P,this._minimumCone=h,this._maximumCone=k,this._stackPartitions=s,this._slicePartitions=w,this._subdivisions=m,this._offsetAttribute=t.offsetAttribute,this._workerName="createEllipsoidOutlineGeometry"}v.packedLength=2*r.packedLength+8;v.pack=function(t,o,n){if(!R(t))throw new b("value is required");if(!R(o))throw new b("array is required");return n=n??0,r.pack(t._radii,o,n),n+=r.packedLength,r.pack(t._innerRadii,o,n),n+=r.packedLength,o[n++]=t._minimumClock,o[n++]=t._maximumClock,o[n++]=t._minimumCone,o[n++]=t._maximumCone,o[n++]=t._stackPartitions,o[n++]=t._slicePartitions,o[n++]=t._subdivisions,o[n]=t._offsetAttribute??-1,o};var $=new r,G=new r,l={radii:$,innerRadii:G,minimumClock:void 0,maximumClock:void 0,minimumCone:void 0,maximumCone:void 0,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0,offsetAttribute:void 0};v.unpack=function(t,o,n){if(!R(t))throw new b("array is required");o=o??0;let C=r.unpack(t,o,$);o+=r.packedLength;let P=r.unpack(t,o,G);o+=r.packedLength;let h=t[o++],k=t[o++],s=t[o++],w=t[o++],m=t[o++],f=t[o++],T=t[o++],a=t[o];return R(n)?(n._radii=r.clone(C,n._radii),n._innerRadii=r.clone(P,n._innerRadii),n._minimumClock=h,n._maximumClock=k,n._minimumCone=s,n._maximumCone=w,n._stackPartitions=m,n._slicePartitions=f,n._subdivisions=T,n._offsetAttribute=a===-1?void 0:a,n):(l.minimumClock=h,l.maximumClock=k,l.minimumCone=s,l.maximumCone=w,l.stackPartitions=m,l.slicePartitions=f,l.subdivisions=T,l.offsetAttribute=a===-1?void 0:a,new v(l))};v.createGeometry=function(t){let o=t._radii;if(o.x<=0||o.y<=0||o.z<=0)return;let n=t._innerRadii;if(n.x<=0||n.y<=0||n.z<=0)return;let C=t._minimumClock,P=t._maximumClock,h=t._minimumCone,k=t._maximumCone,s=t._subdivisions,w=J.fromCartesian3(o),m=t._slicePartitions+1,f=t._stackPartitions+1;m=Math.round(m*Math.abs(P-C)/N.TWO_PI),f=Math.round(f*Math.abs(k-h)/N.PI),m<2&&(m=2),f<2&&(f=2);let T=0,a=1,x=n.x!==o.x||n.y!==o.y||n.z!==o.z,W=!1,Y=!1;x&&(a=2,h>0&&(W=!0,T+=m),k<Math.PI&&(Y=!0,T+=m));let q=s*a*(f+m),u=new Float64Array(q*3),g=2*(q+T-(m+f)*a),d=Z.createTypedArray(q,g),i,e,E,z,c=0,_=new Array(f),A=new Array(f);for(i=0;i<f;i++)z=h+i*(k-h)/(f-1),_[i]=S(z),A[i]=B(z);let O=new Array(s),M=new Array(s);for(i=0;i<s;i++)E=C+i*(P-C)/(s-1),O[i]=S(E),M[i]=B(E);for(i=0;i<f;i++)for(e=0;e<s;e++)u[c++]=o.x*_[i]*M[e],u[c++]=o.y*_[i]*O[e],u[c++]=o.z*A[i];if(x)for(i=0;i<f;i++)for(e=0;e<s;e++)u[c++]=n.x*_[i]*M[e],u[c++]=n.y*_[i]*O[e],u[c++]=n.z*A[i];for(_.length=s,A.length=s,i=0;i<s;i++)z=h+i*(k-h)/(s-1),_[i]=S(z),A[i]=B(z);for(O.length=m,M.length=m,i=0;i<m;i++)E=C+i*(P-C)/(m-1),O[i]=S(E),M[i]=B(E);for(i=0;i<s;i++)for(e=0;e<m;e++)u[c++]=o.x*_[i]*M[e],u[c++]=o.y*_[i]*O[e],u[c++]=o.z*A[i];if(x)for(i=0;i<s;i++)for(e=0;e<m;e++)u[c++]=n.x*_[i]*M[e],u[c++]=n.y*_[i]*O[e],u[c++]=n.z*A[i];for(c=0,i=0;i<f*a;i++){let p=i*s;for(e=0;e<s-1;e++)d[c++]=p+e,d[c++]=p+e+1}let L=f*s*a;for(i=0;i<m;i++)for(e=0;e<s-1;e++)d[c++]=L+i+e*m,d[c++]=L+i+(e+1)*m;if(x)for(L=f*s*a+m*s,i=0;i<m;i++)for(e=0;e<s-1;e++)d[c++]=L+i+e*m,d[c++]=L+i+(e+1)*m;if(x){let p=f*s*a,D=p+s*m;if(W)for(i=0;i<m;i++)d[c++]=p+i,d[c++]=D+i;if(Y)for(p+=s*m-m,D+=s*m-m,i=0;i<m;i++)d[c++]=p+i,d[c++]=D+i}let j=new X({position:new U({componentDatatype:y.DOUBLE,componentsPerAttribute:3,values:u})});if(R(t._offsetAttribute)){let p=u.length,D=t._offsetAttribute===F.NONE?0:1,I=new Uint8Array(p/3).fill(D);j.applyOffset=new U({componentDatatype:y.UNSIGNED_BYTE,componentsPerAttribute:1,values:I})}return new Q({attributes:j,indices:d,primitiveType:K.LINES,boundingSphere:H.fromEllipsoid(w),offsetAttribute:t._offsetAttribute})};var Ci=v;export{Ci as a}; diff --git a/public/Cesium/Workers/chunk-DEPHB2WM.js b/public/Cesium/Workers/chunk-DEPHB2WM.js new file mode 100644 index 000000000..f152d50cd --- /dev/null +++ b/public/Cesium/Workers/chunk-DEPHB2WM.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as w,b as z,i as S}from"./chunk-PSPPBZWI.js";import{a as y}from"./chunk-AU7IKHOH.js";import{a as C,c as T,e as x}from"./chunk-64RSHJUE.js";import{a as h}from"./chunk-3SSKC3VN.js";import{a as u,b as a}from"./chunk-LEYMRMBK.js";import{e as b}from"./chunk-VTAIKJXX.js";var c={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT2:"MAT2",MAT3:"MAT3",MAT4:"MAT4"};c.getMathType=function(e){switch(e){case c.SCALAR:return Number;case c.VEC2:return T;case c.VEC3:return C;case c.VEC4:return w;case c.MAT2:return S;case c.MAT3:return x;case c.MAT4:return z;default:throw new u("attributeType is not a valid value.")}};c.getNumberOfComponents=function(e){switch(e){case c.SCALAR:return 1;case c.VEC2:return 2;case c.VEC3:return 3;case c.VEC4:case c.MAT2:return 4;case c.MAT3:return 9;case c.MAT4:return 16;default:throw new u("attributeType is not a valid value.")}};c.getAttributeLocationCount=function(e){switch(e){case c.SCALAR:case c.VEC2:case c.VEC3:case c.VEC4:return 1;case c.MAT2:return 2;case c.MAT3:return 3;case c.MAT4:return 4;default:throw new u("attributeType is not a valid value.")}};c.getGlslType=function(e){switch(a.typeOf.string("attributeType",e),e){case c.SCALAR:return"float";case c.VEC2:return"vec2";case c.VEC3:return"vec3";case c.VEC4:return"vec4";case c.MAT2:return"mat2";case c.MAT3:return"mat3";case c.MAT4:return"mat4";default:throw new u("attributeType is not a valid value.")}};var N=Object.freeze(c);var V=1/256,D=256,r={};r.octEncodeInRange=function(e,t,n){a.defined("vector",e),a.defined("result",n);let o=C.magnitudeSquared(e);if(Math.abs(o-1)>h.EPSILON6)throw new u("vector must be normalized.");if(n.x=e.x/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),n.y=e.y/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),e.z<0){let i=n.x,d=n.y;n.x=(1-Math.abs(d))*h.signNotZero(i),n.y=(1-Math.abs(i))*h.signNotZero(d)}return n.x=h.toSNorm(n.x,t),n.y=h.toSNorm(n.y,t),n};r.octEncode=function(e,t){return r.octEncodeInRange(e,255,t)};var A=new T,F=new Uint8Array(1);function E(e){return F[0]=e,F[0]}r.octEncodeToCartesian4=function(e,t){return r.octEncodeInRange(e,65535,A),t.x=E(A.x*V),t.y=E(A.x),t.z=E(A.y*V),t.w=E(A.y),t};r.octDecodeInRange=function(e,t,n,o){if(a.defined("result",o),e<0||e>n||t<0||t>n)throw new u(`x and y must be unsigned normalized integers between 0 and ${n}`);if(o.x=h.fromSNorm(e,n),o.y=h.fromSNorm(t,n),o.z=1-(Math.abs(o.x)+Math.abs(o.y)),o.z<0){let i=o.x;o.x=(1-Math.abs(o.y))*h.signNotZero(i),o.y=(1-Math.abs(i))*h.signNotZero(o.y)}return C.normalize(o,o)};r.octDecode=function(e,t,n){return r.octDecodeInRange(e,t,255,n)};r.octDecodeFromCartesian4=function(e,t){a.typeOf.object("encoded",e),a.typeOf.object("result",t);let n=e.x,o=e.y,i=e.z,d=e.w;if(n<0||n>255||o<0||o>255||i<0||i>255||d<0||d>255)throw new u("x, y, z, and w must be unsigned normalized integers between 0 and 255");let f=n*D+o,s=i*D+d;return r.octDecodeInRange(f,s,65535,t)};r.octPackFloat=function(e){return a.defined("encoded",e),256*e.x+e.y};var l=new T;r.octEncodeFloat=function(e){return r.octEncode(e,l),r.octPackFloat(l)};r.octDecodeFloat=function(e,t){a.defined("value",e);let n=e/256,o=Math.floor(n),i=(n-o)*256;return r.octDecode(o,i,t)};r.octPack=function(e,t,n,o){a.defined("v1",e),a.defined("v2",t),a.defined("v3",n),a.defined("result",o);let i=r.octEncodeFloat(e),d=r.octEncodeFloat(t),f=r.octEncode(n,l);return o.x=65536*f.x+i,o.y=65536*f.y+d,o};r.octUnpack=function(e,t,n,o){a.defined("packed",e),a.defined("v1",t),a.defined("v2",n),a.defined("v3",o);let i=e.x/65536,d=Math.floor(i),f=(i-d)*65536;i=e.y/65536;let s=Math.floor(i),m=(i-s)*65536;r.octDecodeFloat(f,t),r.octDecodeFloat(m,n),r.octDecode(d,s,o)};r.compressTextureCoordinates=function(e){a.defined("textureCoordinates",e);let t=e.x*4095|0,n=e.y*4095|0;return 4096*t+n};r.decompressTextureCoordinates=function(e,t){a.defined("compressed",e),a.defined("result",t);let n=e/4096,o=Math.floor(n);return t.x=o/4095,t.y=(e-o*4096)/4095,t};function g(e){return e>>1^-(e&1)}r.zigZagDeltaDecode=function(e,t,n){a.defined("uBuffer",e),a.defined("vBuffer",t),a.typeOf.number.equals("uBuffer.length","vBuffer.length",e.length,t.length),b(n)&&a.typeOf.number.equals("uBuffer.length","heightBuffer.length",e.length,n.length);let o=e.length,i=0,d=0,f=0;for(let s=0;s<o;++s)i+=g(e[s]),d+=g(t[s]),e[s]=i,t[s]=d,b(n)&&(f+=g(n[s]),n[s]=f)};r.dequantize=function(e,t,n,o){a.defined("typedArray",e),a.defined("componentDatatype",t),a.defined("type",n),a.defined("count",o);let i=N.getNumberOfComponents(n),d;switch(t){case y.BYTE:d=127;break;case y.UNSIGNED_BYTE:d=255;break;case y.SHORT:d=32767;break;case y.UNSIGNED_SHORT:d=65535;break;case y.INT:d=2147483647;break;case y.UNSIGNED_INT:d=4294967295;break;default:throw new u(`Cannot dequantize component datatype: ${t}`)}let f=new Float32Array(o*i);for(let s=0;s<o;s++)for(let m=0;m<i;m++){let p=s*i+m;f[p]=Math.max(e[p]/d,-1)}return f};r.decodeRGB565=function(e,t){a.defined("typedArray",e);let n=e.length*3;b(t)&&a.typeOf.number.equals("result.length","typedArray.length * 3",t.length,n);let o=e.length;b(t)||(t=new Float32Array(o*3));let i=31,d=63,f=1/31,s=1/63;for(let m=0;m<o;m++){let p=e[m],R=p>>11,I=p>>5&d,O=p&i,M=3*m;t[M]=R*f,t[M+1]=I*s,t[M+2]=O*f}return t};var W=r;export{W as a}; diff --git a/public/Cesium/Workers/chunk-DMEY62ID.js b/public/Cesium/Workers/chunk-DMEY62ID.js new file mode 100644 index 000000000..3b689c5b3 --- /dev/null +++ b/public/Cesium/Workers/chunk-DMEY62ID.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{c as Z}from"./chunk-4IW2T6GF.js";import{a as o,b as at,e as b}from"./chunk-64RSHJUE.js";import{a as R}from"./chunk-3SSKC3VN.js";import{a as w,b as tt}from"./chunk-LEYMRMBK.js";import{e as g}from"./chunk-VTAIKJXX.js";var et={};et.computeDiscriminant=function(t,e,r){if(typeof t!="number")throw new w("a is a required number.");if(typeof e!="number")throw new w("b is a required number.");if(typeof r!="number")throw new w("c is a required number.");return e*e-4*t*r};function ft(t,e,r){let n=t+e;return R.sign(t)!==R.sign(e)&&Math.abs(n/Math.max(Math.abs(t),Math.abs(e)))<r?0:n}et.computeRealRoots=function(t,e,r){if(typeof t!="number")throw new w("a is a required number.");if(typeof e!="number")throw new w("b is a required number.");if(typeof r!="number")throw new w("c is a required number.");let n;if(t===0)return e===0?[]:[-r/e];if(e===0){if(r===0)return[0,0];let a=Math.abs(r),f=Math.abs(t);if(a<f&&a/f<R.EPSILON14)return[0,0];if(a>f&&f/a<R.EPSILON14)return[];if(n=-r/t,n<0)return[];let l=Math.sqrt(n);return[-l,l]}else if(r===0)return n=-e/t,n<0?[n,0]:[0,n];let i=e*e,c=4*t*r,s=ft(i,-c,R.EPSILON14);if(s<0)return[];let u=-.5*ft(e,R.sign(e)*Math.sqrt(s),R.EPSILON14);return e>0?[u/t,r/u]:[r/u,u/t]};var T=et;var rt={};rt.computeDiscriminant=function(t,e,r,n){if(typeof t!="number")throw new w("a is a required number.");if(typeof e!="number")throw new w("b is a required number.");if(typeof r!="number")throw new w("c is a required number.");if(typeof n!="number")throw new w("d is a required number.");let i=t*t,c=e*e,s=r*r,u=n*n;return 18*t*e*r*n+c*s-27*i*u-4*(t*s*r+c*e*n)};function nt(t,e,r,n){let i=t,c=e/3,s=r/3,u=n,a=i*s,f=c*u,l=c*c,m=s*s,p=i*s-l,q=i*u-c*s,d=c*u-m,h=4*p*d-q*q,E,D;if(h<0){let K,k,G;l*f>=a*m?(K=i,k=p,G=-2*c*p+i*q):(K=u,k=d,G=-u*q+2*s*d);let ut=-(G<0?-1:1)*Math.abs(K)*Math.sqrt(-h);D=-G+ut;let X=D/2,j=X<0?-Math.pow(-X,1/3):Math.pow(X,1/3),$=D===ut?-j:-k/j;return E=k<=0?j+$:-G/(j*j+$*$+k),l*f>=a*m?[(E-c)/i]:[-u/(E+s)]}let W=p,v=-2*c*p+i*q,L=d,B=-u*q+2*s*d,I=Math.sqrt(h),C=Math.sqrt(3)/2,P=Math.abs(Math.atan2(i*I,-v)/3);E=2*Math.sqrt(-W);let y=Math.cos(P);D=E*y;let S=E*(-y/2-C*Math.sin(P)),M=D+S>2*c?D-c:S-c,N=i,x=M/N;P=Math.abs(Math.atan2(u*I,-B)/3),E=2*Math.sqrt(-L),y=Math.cos(P),D=E*y,S=E*(-y/2-C*Math.sin(P));let _=-u,A=D+S<2*s?D+s:S+s,U=_/A,Rt=N*A,ct=-M*A-N*_,yt=M*_,V=(s*ct-c*yt)/(-c*ct+s*Rt);return x<=V?x<=U?V<=U?[x,V,U]:[x,U,V]:[U,x,V]:x<=U?[V,x,U]:V<=U?[V,U,x]:[U,V,x]}rt.computeRealRoots=function(t,e,r,n){if(typeof t!="number")throw new w("a is a required number.");if(typeof e!="number")throw new w("b is a required number.");if(typeof r!="number")throw new w("c is a required number.");if(typeof n!="number")throw new w("d is a required number.");let i,c;if(t===0)return T.computeRealRoots(e,r,n);if(e===0){if(r===0){if(n===0)return[0,0,0];c=-n/t;let s=c<0?-Math.pow(-c,1/3):Math.pow(c,1/3);return[s,s,s]}else if(n===0)return i=T.computeRealRoots(t,0,r),i.Length===0?[0]:[i[0],0,i[1]];return nt(t,0,r,n)}else{if(r===0)return n===0?(c=-e/t,c<0?[c,0,0]:[0,0,c]):nt(t,e,0,n);if(n===0)return i=T.computeRealRoots(t,e,r),i.length===0?[0]:i[1]<=0?[i[0],i[1],0]:i[0]>=0?[0,i[0],i[1]]:[i[0],0,i[1]]}return nt(t,e,r,n)};var Y=rt;var ot={};ot.computeDiscriminant=function(t,e,r,n,i){if(typeof t!="number")throw new w("a is a required number.");if(typeof e!="number")throw new w("b is a required number.");if(typeof r!="number")throw new w("c is a required number.");if(typeof n!="number")throw new w("d is a required number.");if(typeof i!="number")throw new w("e is a required number.");let c=t*t,s=c*t,u=e*e,a=u*e,f=r*r,l=f*r,m=n*n,p=m*n,q=i*i,d=q*i;return u*f*m-4*a*p-4*t*l*m+18*t*e*r*p-27*c*m*m+256*s*d+i*(18*a*r*n-4*u*l+16*t*f*f-80*t*e*f*n-6*t*u*m+144*c*r*m)+q*(144*t*u*r-27*u*u-128*c*f-192*c*e*n)};function z(t,e,r,n){let i=t*t,c=e-3*i/8,s=r-e*t/2+i*t/8,u=n-r*t/4+e*i/16-3*i*i/256,a=Y.computeRealRoots(1,2*c,c*c-4*u,-s*s);if(a.length>0){let f=-t/4,l=a[a.length-1];if(Math.abs(l)<R.EPSILON14){let m=T.computeRealRoots(1,c,u);if(m.length===2){let p=m[0],q=m[1],d;if(p>=0&&q>=0){let h=Math.sqrt(p),E=Math.sqrt(q);return[f-E,f-h,f+h,f+E]}else{if(p>=0&&q<0)return d=Math.sqrt(p),[f-d,f+d];if(p<0&&q>=0)return d=Math.sqrt(q),[f-d,f+d]}}return[]}else if(l>0){let m=Math.sqrt(l),p=(c+l-s/m)/2,q=(c+l+s/m)/2,d=T.computeRealRoots(1,m,p),h=T.computeRealRoots(1,-m,q);return d.length!==0?(d[0]+=f,d[1]+=f,h.length!==0?(h[0]+=f,h[1]+=f,d[1]<=h[0]?[d[0],d[1],h[0],h[1]]:h[1]<=d[0]?[h[0],h[1],d[0],d[1]]:d[0]>=h[0]&&d[1]<=h[1]?[h[0],d[0],d[1],h[1]]:h[0]>=d[0]&&h[1]<=d[1]?[d[0],h[0],h[1],d[1]]:d[0]>h[0]&&d[0]<h[1]?[h[0],d[0],h[1],d[1]]:[d[0],h[0],d[1],h[1]]):d):h.length!==0?(h[0]+=f,h[1]+=f,h):[]}}return[]}function H(t,e,r,n){let i=r*r,c=e*e,s=t*t,u=-2*e,a=r*t+c-4*n,f=s*n-r*e*t+i,l=Y.computeRealRoots(1,u,a,f);if(l.length>0){let m=l[0],p=e-m,q=p*p,d=t/2,h=p/2,E=q-4*n,D=q+4*Math.abs(n),W=s-4*m,v=s+4*Math.abs(m),L,B;if(m<0||E*v<W*D){let N=Math.sqrt(W);L=N/2,B=N===0?0:(t*h-r)/N}else{let N=Math.sqrt(E);L=N===0?0:(t*h-r)/N,B=N/2}let I,C;d===0&&L===0?(I=0,C=0):R.sign(d)===R.sign(L)?(I=d+L,C=m/I):(C=d-L,I=m/C);let P,y;h===0&&B===0?(P=0,y=0):R.sign(h)===R.sign(B)?(P=h+B,y=n/P):(y=h-B,P=n/y);let S=T.computeRealRoots(1,I,P),M=T.computeRealRoots(1,C,y);if(S.length!==0)return M.length!==0?S[1]<=M[0]?[S[0],S[1],M[0],M[1]]:M[1]<=S[0]?[M[0],M[1],S[0],S[1]]:S[0]>=M[0]&&S[1]<=M[1]?[M[0],S[0],S[1],M[1]]:M[0]>=S[0]&&M[1]<=S[1]?[S[0],M[0],M[1],S[1]]:S[0]>M[0]&&S[0]<M[1]?[M[0],S[0],M[1],S[1]]:[S[0],M[0],S[1],M[1]]:S;if(M.length!==0)return M}return[]}ot.computeRealRoots=function(t,e,r,n,i){if(typeof t!="number")throw new w("a is a required number.");if(typeof e!="number")throw new w("b is a required number.");if(typeof r!="number")throw new w("c is a required number.");if(typeof n!="number")throw new w("d is a required number.");if(typeof i!="number")throw new w("e is a required number.");if(Math.abs(t)<R.EPSILON15)return Y.computeRealRoots(e,r,n,i);let c=e/t,s=r/t,u=n/t,a=i/t,f=c<0?1:0;switch(f+=s<0?f+1:f,f+=u<0?f+1:f,f+=a<0?f+1:f,f){case 0:return z(c,s,u,a);case 1:return H(c,s,u,a);case 2:return H(c,s,u,a);case 3:return z(c,s,u,a);case 4:return z(c,s,u,a);case 5:return H(c,s,u,a);case 6:return z(c,s,u,a);case 7:return z(c,s,u,a);case 8:return H(c,s,u,a);case 9:return z(c,s,u,a);case 10:return z(c,s,u,a);case 11:return H(c,s,u,a);case 12:return z(c,s,u,a);case 13:return z(c,s,u,a);case 14:return z(c,s,u,a);case 15:return z(c,s,u,a);default:return}};var dt=ot;function F(t,e){e=o.clone(e??o.ZERO),o.equals(e,o.ZERO)||o.normalize(e,e),this.origin=o.clone(t??o.ZERO),this.direction=e}F.clone=function(t,e){if(g(t))return g(e)?(e.origin=o.clone(t.origin),e.direction=o.clone(t.direction),e):new F(t.origin,t.direction)};F.getPoint=function(t,e,r){return tt.typeOf.object("ray",t),tt.typeOf.number("t",e),g(r)||(r=new o),r=o.multiplyByScalar(t.direction,e,r),o.add(t.origin,r,r)};var it=F;var O={};O.rayPlane=function(t,e,r){if(!g(t))throw new w("ray is required.");if(!g(e))throw new w("plane is required.");g(r)||(r=new o);let n=t.origin,i=t.direction,c=e.normal,s=o.dot(c,i);if(Math.abs(s)<R.EPSILON15)return;let u=(-e.distance-o.dot(c,n))/s;if(!(u<0))return r=o.multiplyByScalar(i,u,r),o.add(n,r,r)};var bt=new o,Ot=new o,St=new o,mt=new o,lt=new o;O.rayTriangleParametric=function(t,e,r,n,i){if(!g(t))throw new w("ray is required.");if(!g(e))throw new w("p0 is required.");if(!g(r))throw new w("p1 is required.");if(!g(n))throw new w("p2 is required.");i=i??!1;let c=t.origin,s=t.direction,u=o.subtract(r,e,bt),a=o.subtract(n,e,Ot),f=o.cross(s,a,St),l=o.dot(u,f),m,p,q,d,h;if(i){if(l<R.EPSILON6||(m=o.subtract(c,e,mt),q=o.dot(m,f),q<0||q>l)||(p=o.cross(m,u,lt),d=o.dot(s,p),d<0||q+d>l))return;h=o.dot(a,p)/l}else{if(Math.abs(l)<R.EPSILON6)return;let E=1/l;if(m=o.subtract(c,e,mt),q=o.dot(m,f)*E,q<0||q>1||(p=o.cross(m,u,lt),d=o.dot(s,p)*E,d<0||q+d>1))return;h=o.dot(a,p)*E}return h};O.rayTriangle=function(t,e,r,n,i,c){let s=O.rayTriangleParametric(t,e,r,n,i);if(!(!g(s)||s<0))return g(c)||(c=new o),o.multiplyByScalar(t.direction,s,c),o.add(t.origin,c,c)};var Pt=new it;O.lineSegmentTriangle=function(t,e,r,n,i,c,s){if(!g(t))throw new w("v0 is required.");if(!g(e))throw new w("v1 is required.");if(!g(r))throw new w("p0 is required.");if(!g(n))throw new w("p1 is required.");if(!g(i))throw new w("p2 is required.");let u=Pt;o.clone(t,u.origin),o.subtract(e,t,u.direction),o.normalize(u.direction,u.direction);let a=O.rayTriangleParametric(u,r,n,i,c);if(!(!g(a)||a<0||a>o.distance(t,e)))return g(s)||(s=new o),o.multiplyByScalar(u.direction,a,s),o.add(u.origin,s,s)};function Et(t,e,r,n){let i=e*e-4*t*r;if(i<0)return;if(i>0){let s=1/(2*t),u=Math.sqrt(i),a=(-e+u)*s,f=(-e-u)*s;return a<f?(n.root0=a,n.root1=f):(n.root0=f,n.root1=a),n}let c=-e/(2*t);if(c!==0)return n.root0=n.root1=c,n}var Ct={root0:0,root1:0};function Mt(t,e,r){g(r)||(r=new Z);let n=t.origin,i=t.direction,c=e.center,s=e.radius*e.radius,u=o.subtract(n,c,St),a=o.dot(i,i),f=2*o.dot(i,u),l=o.magnitudeSquared(u)-s,m=Et(a,f,l,Ct);if(g(m))return r.start=m.root0,r.stop=m.root1,r}O.raySphere=function(t,e,r){if(!g(t))throw new w("ray is required.");if(!g(e))throw new w("sphere is required.");if(r=Mt(t,e,r),!(!g(r)||r.stop<0))return r.start=Math.max(r.start,0),r};var Nt=new it;O.lineSegmentSphere=function(t,e,r,n){if(!g(t))throw new w("p0 is required.");if(!g(e))throw new w("p1 is required.");if(!g(r))throw new w("sphere is required.");let i=Nt;o.clone(t,i.origin);let c=o.subtract(e,t,i.direction),s=o.magnitude(c);if(o.normalize(c,c),n=Mt(i,r,n),!(!g(n)||n.stop<0||n.start>s))return n.start=Math.max(n.start,0),n.stop=Math.min(n.stop,s),n};var Lt=new o,It=new o;O.rayEllipsoid=function(t,e){if(!g(t))throw new w("ray is required.");if(!g(e))throw new w("ellipsoid is required.");let r=e.oneOverRadii,n=o.multiplyComponents(r,t.origin,Lt),i=o.multiplyComponents(r,t.direction,It),c=o.magnitudeSquared(n),s=o.dot(n,i),u,a,f,l,m;if(c>1){if(s>=0)return;let p=s*s;if(u=c-1,a=o.magnitudeSquared(i),f=a*u,p<f)return;if(p>f){l=s*s-f,m=-s+Math.sqrt(l);let d=m/a,h=u/m;return d<h?new Z(d,h):{start:h,stop:d}}let q=Math.sqrt(u/a);return new Z(q,q)}else if(c<1)return u=c-1,a=o.magnitudeSquared(i),f=a*u,l=s*s-f,m=-s+Math.sqrt(l),new Z(0,m/a);if(s<0)return a=o.magnitudeSquared(i),new Z(0,-s/a)};function Q(t,e,r){let n=t+e;return R.sign(t)!==R.sign(e)&&Math.abs(n/Math.max(Math.abs(t),Math.abs(e)))<r?0:n}O.quadraticVectorExpression=function(t,e,r,n,i){let c=n*n,s=i*i,u=(t[b.COLUMN1ROW1]-t[b.COLUMN2ROW2])*s,a=i*(n*Q(t[b.COLUMN1ROW0],t[b.COLUMN0ROW1],R.EPSILON15)+e.y),f=t[b.COLUMN0ROW0]*c+t[b.COLUMN2ROW2]*s+n*e.x+r,l=s*Q(t[b.COLUMN2ROW1],t[b.COLUMN1ROW2],R.EPSILON15),m=i*(n*Q(t[b.COLUMN2ROW0],t[b.COLUMN0ROW2])+e.z),p,q=[];if(m===0&&l===0){if(p=T.computeRealRoots(u,a,f),p.length===0)return q;let P=p[0],y=Math.sqrt(Math.max(1-P*P,0));if(q.push(new o(n,i*P,i*-y)),q.push(new o(n,i*P,i*y)),p.length===2){let S=p[1],M=Math.sqrt(Math.max(1-S*S,0));q.push(new o(n,i*S,i*-M)),q.push(new o(n,i*S,i*M))}return q}let d=m*m,h=l*l,E=u*u,D=m*l,W=E+h,v=2*(a*u+D),L=2*f*u+a*a-h+d,B=2*(f*a-D),I=f*f-d;if(W===0&&v===0&&L===0&&B===0)return q;p=dt.computeRealRoots(W,v,L,B,I);let C=p.length;if(C===0)return q;for(let P=0;P<C;++P){let y=p[P],S=y*y,M=Math.max(1-S,0),N=Math.sqrt(M),x;R.sign(u)===R.sign(f)?x=Q(u*S+f,a*y,R.EPSILON12):R.sign(f)===R.sign(a*y)?x=Q(u*S,a*y+f,R.EPSILON12):x=Q(u*S+a*y,f,R.EPSILON12);let _=Q(l*y,m,R.EPSILON15),A=x*_;A<0?q.push(new o(n,i*y,i*N)):A>0?q.push(new o(n,i*y,i*-N)):N!==0?(q.push(new o(n,i*y,i*-N)),q.push(new o(n,i*y,i*N)),++P):q.push(new o(n,i*y,i*N))}return q};var st=new o,ht=new o,wt=new o,J=new o,Dt=new o,Bt=new b,xt=new b,Tt=new b,zt=new b,Wt=new b,qt=new b,gt=new b,pt=new o,vt=new o,Ut=new at;O.grazingAltitudeLocation=function(t,e){if(!g(t))throw new w("ray is required.");if(!g(e))throw new w("ellipsoid is required.");let r=t.origin,n=t.direction;if(!o.equals(r,o.ZERO)){let I=e.geodeticSurfaceNormal(r,st);if(o.dot(n,I)>=0)return r}let i=g(this.rayEllipsoid(t,e)),c=e.transformPositionToScaledSpace(n,st),s=o.normalize(c,c),u=o.mostOrthogonalAxis(c,J),a=o.normalize(o.cross(u,s,ht),ht),f=o.normalize(o.cross(s,a,wt),wt),l=Bt;l[0]=s.x,l[1]=s.y,l[2]=s.z,l[3]=a.x,l[4]=a.y,l[5]=a.z,l[6]=f.x,l[7]=f.y,l[8]=f.z;let m=b.transpose(l,xt),p=b.fromScale(e.radii,Tt),q=b.fromScale(e.oneOverRadii,zt),d=Wt;d[0]=0,d[1]=-n.z,d[2]=n.y,d[3]=n.z,d[4]=0,d[5]=-n.x,d[6]=-n.y,d[7]=n.x,d[8]=0;let h=b.multiply(b.multiply(m,q,qt),d,qt),E=b.multiply(b.multiply(h,p,gt),l,gt),D=b.multiplyByVector(h,r,Dt),W=O.quadraticVectorExpression(E,o.negate(D,st),0,0,1),v,L,B=W.length;if(B>0){let I=o.clone(o.ZERO,vt),C=Number.NEGATIVE_INFINITY;for(let y=0;y<B;++y){v=b.multiplyByVector(p,b.multiplyByVector(l,W[y],pt),pt);let S=o.normalize(o.subtract(v,r,J),J),M=o.dot(S,n);M>C&&(C=M,I=o.clone(v,I))}let P=e.cartesianToCartographic(I,Ut);return C=R.clamp(C,0,1),L=o.magnitude(o.subtract(I,r,J))*Math.sqrt(1-C*C),L=i?-L:L,P.height=L,e.cartographicToCartesian(P,new o)}};var Vt=new o;O.lineSegmentPlane=function(t,e,r,n){if(!g(t))throw new w("endPoint0 is required.");if(!g(e))throw new w("endPoint1 is required.");if(!g(r))throw new w("plane is required.");g(n)||(n=new o);let i=o.subtract(e,t,Vt),c=r.normal,s=o.dot(c,i);if(Math.abs(s)<R.EPSILON6)return;let u=o.dot(c,t),a=-(r.distance+u)/s;if(!(a<0||a>1))return o.multiplyByScalar(i,a,n),o.add(t,n,n),n};O.trianglePlaneIntersection=function(t,e,r,n){if(!g(t)||!g(e)||!g(r)||!g(n))throw new w("p0, p1, p2, and plane are required.");let i=n.normal,c=n.distance,s=o.dot(i,t)+c<0,u=o.dot(i,e)+c<0,a=o.dot(i,r)+c<0,f=0;f+=s?1:0,f+=u?1:0,f+=a?1:0;let l,m;if((f===1||f===2)&&(l=new o,m=new o),f===1){if(s)return O.lineSegmentPlane(t,e,n,l),O.lineSegmentPlane(t,r,n,m),{positions:[t,e,r,l,m],indices:[0,3,4,1,2,4,1,4,3]};if(u)return O.lineSegmentPlane(e,r,n,l),O.lineSegmentPlane(e,t,n,m),{positions:[t,e,r,l,m],indices:[1,3,4,2,0,4,2,4,3]};if(a)return O.lineSegmentPlane(r,t,n,l),O.lineSegmentPlane(r,e,n,m),{positions:[t,e,r,l,m],indices:[2,3,4,0,1,4,0,4,3]}}else if(f===2)if(s)if(u){if(!a)return O.lineSegmentPlane(t,r,n,l),O.lineSegmentPlane(e,r,n,m),{positions:[t,e,r,l,m],indices:[0,1,4,0,4,3,2,3,4]}}else return O.lineSegmentPlane(r,e,n,l),O.lineSegmentPlane(t,e,n,m),{positions:[t,e,r,l,m],indices:[2,0,4,2,4,3,1,3,4]};else return O.lineSegmentPlane(e,t,n,l),O.lineSegmentPlane(r,t,n,m),{positions:[t,e,r,l,m],indices:[1,2,4,1,4,3,0,3,4]}};var me=O;export{it as a,me as b}; diff --git a/public/Cesium/Workers/chunk-DQQ63PYM.js b/public/Cesium/Workers/chunk-DQQ63PYM.js new file mode 100644 index 000000000..423e10edb --- /dev/null +++ b/public/Cesium/Workers/chunk-DQQ63PYM.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as u,b as c,d as p}from"./chunk-64RSHJUE.js";import{a as d}from"./chunk-3SSKC3VN.js";import{a as s}from"./chunk-LEYMRMBK.js";import{e as a}from"./chunk-VTAIKJXX.js";function e(t){this._ellipsoid=t??p.WGS84,this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis}Object.defineProperties(e.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});e.mercatorAngleToGeodeticLatitude=function(t){return d.PI_OVER_TWO-2*Math.atan(Math.exp(-t))};e.geodeticLatitudeToMercatorAngle=function(t){t>e.MaximumLatitude?t=e.MaximumLatitude:t<-e.MaximumLatitude&&(t=-e.MaximumLatitude);let i=Math.sin(t);return .5*Math.log((1+i)/(1-i))};e.MaximumLatitude=e.mercatorAngleToGeodeticLatitude(Math.PI);e.prototype.project=function(t,i){let o=this._semimajorAxis,r=t.longitude*o,n=e.geodeticLatitudeToMercatorAngle(t.latitude)*o,m=t.height;return a(i)?(i.x=r,i.y=n,i.z=m,i):new u(r,n,m)};e.prototype.unproject=function(t,i){if(!a(t))throw new s("cartesian is required");let o=this._oneOverSemimajorAxis,r=t.x*o,n=e.mercatorAngleToGeodeticLatitude(t.y*o),m=t.z;return a(i)?(i.longitude=r,i.latitude=n,i.height=m,i):new c(r,n,m)};var A=e;export{A as a}; diff --git a/public/Cesium/Workers/chunk-ED5JPB3S.js b/public/Cesium/Workers/chunk-ED5JPB3S.js new file mode 100644 index 000000000..85f1d79af --- /dev/null +++ b/public/Cesium/Workers/chunk-ED5JPB3S.js @@ -0,0 +1,27 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{e}from"./chunk-VTAIKJXX.js";function t(r){this.name="RuntimeError",this.message=r;let o;try{throw new Error}catch(s){o=s.stack}this.stack=o}e(Object.create)&&(t.prototype=Object.create(Error.prototype),t.prototype.constructor=t);t.prototype.toString=function(){let r=`${this.name}: ${this.message}`;return e(this.stack)&&(r+=` +${this.stack.toString()}`),r};var c=t;export{c as a}; diff --git a/public/Cesium/Workers/chunk-EZUYS2JF.js b/public/Cesium/Workers/chunk-EZUYS2JF.js new file mode 100644 index 000000000..a854ce101 --- /dev/null +++ b/public/Cesium/Workers/chunk-EZUYS2JF.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as h}from"./chunk-CNCV5UL7.js";import{a as n,c as y,e as a}from"./chunk-64RSHJUE.js";import{b as f}from"./chunk-LEYMRMBK.js";var x={},b=new n,P=new n,B=new n,M=new n,w=new h;x.validOutline=function(i){f.defined("positions",i);let o=h.fromPoints(i,w).halfAxes,e=a.getColumn(o,0,P),r=a.getColumn(o,1,B),t=a.getColumn(o,2,M),u=n.magnitude(e),s=n.magnitude(r),l=n.magnitude(t);return!(u===0&&(s===0||l===0)||s===0&&l===0)};x.computeProjectTo2DArguments=function(i,c,o,e){f.defined("positions",i),f.defined("centerResult",c),f.defined("planeAxis1Result",o),f.defined("planeAxis2Result",e);let r=h.fromPoints(i,w),t=r.halfAxes,u=a.getColumn(t,0,P),s=a.getColumn(t,1,B),l=a.getColumn(t,2,M),A=n.magnitude(u),d=n.magnitude(s),g=n.magnitude(l),m=Math.min(A,d,g);if(A===0&&(d===0||g===0)||d===0&&g===0)return!1;let p,C;return(m===d||m===g)&&(p=u),m===A?p=s:m===g&&(C=s),(m===A||m===d)&&(C=l),n.normalize(p,o),n.normalize(C,e),n.clone(r.center,c),!0};function z(i,c,o,e,r){let t=n.subtract(i,c,b),u=n.dot(o,t),s=n.dot(e,t);return y.fromElements(u,s,r)}x.createProjectPointsTo2DFunction=function(i,c,o){return function(e){let r=new Array(e.length);for(let t=0;t<e.length;t++)r[t]=z(e[t],i,c,o);return r}};x.createProjectPointTo2DFunction=function(i,c,o){return function(e,r){return z(e,i,c,o,r)}};var O=x;export{O as a}; diff --git a/public/Cesium/Workers/chunk-FEVXJ54I.js b/public/Cesium/Workers/chunk-FEVXJ54I.js new file mode 100644 index 000000000..e10deabea --- /dev/null +++ b/public/Cesium/Workers/chunk-FEVXJ54I.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as G}from"./chunk-UP6I5URU.js";import{a as At}from"./chunk-D6AA5QVT.js";import{a as yt}from"./chunk-VW6VD53G.js";import{a as $}from"./chunk-GBYLG25F.js";import{a as v}from"./chunk-CYCB63OH.js";import{a as st}from"./chunk-OFUUQVMR.js";import{a as ht}from"./chunk-A56XVLQR.js";import{b as ct,c as rt,d as F}from"./chunk-RCV6KWXS.js";import{a as lt,d as it}from"./chunk-4IW2T6GF.js";import{f as nt,h as bt}from"./chunk-PSPPBZWI.js";import{a as P}from"./chunk-AU7IKHOH.js";import{a,b as _t,c as Q,d as D,e as C,f as dt}from"./chunk-64RSHJUE.js";import{a as R}from"./chunk-3SSKC3VN.js";import{a as ot,b as k}from"./chunk-LEYMRMBK.js";import{e as Z}from"./chunk-VTAIKJXX.js";var tt=new a,pt=new a,xt=new a,wt=new a,w=new Q,Mt=new C,Vt=new C,gt=new nt,Tt=new a,Nt=new a,Et=new a,ft=new _t,Pt=new a,Ft=new Q,St=new Q;function Ot(o,e,t){let n=e.vertexFormat,s=e.center,i=e.semiMajorAxis,r=e.semiMinorAxis,f=e.ellipsoid,h=e.stRotation,N=t?o.length/3*2:o.length/3,g=e.shadowVolume,c=n.st?new Float32Array(N*2):void 0,l=n.normal?new Float32Array(N*3):void 0,A=n.tangent?new Float32Array(N*3):void 0,x=n.bitangent?new Float32Array(N*3):void 0,S=g?new Float32Array(N*3):void 0,z=0,b=Tt,M=Nt,d=Et,_=new lt(f),I=_.project(f.cartesianToCartographic(s,ft),Pt),W=f.scaleToGeodeticSurface(s,tt);f.geodeticSurfaceNormal(W,W);let J=Mt,U=Vt;if(h!==0){let m=nt.fromAxisAngle(W,h,gt);J=C.fromQuaternion(m,J),m=nt.fromAxisAngle(W,-h,gt),U=C.fromQuaternion(m,U)}else J=C.clone(C.IDENTITY,J),U=C.clone(C.IDENTITY,U);let B=Q.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Ft),q=Q.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,St),O=o.length,y=t?O:0,p=y/3*2;for(let m=0;m<O;m+=3){let u=m+1,T=m+2,V=a.fromArray(o,m,tt);if(n.st){let E=C.multiplyByVector(J,V,pt),j=_.project(f.cartesianToCartographic(E,ft),xt);a.subtract(j,I,j),w.x=(j.x+i)/(2*i),w.y=(j.y+r)/(2*r),B.x=Math.min(w.x,B.x),B.y=Math.min(w.y,B.y),q.x=Math.max(w.x,q.x),q.y=Math.max(w.y,q.y),t&&(c[z+p]=w.x,c[z+1+p]=w.y),c[z++]=w.x,c[z++]=w.y}(n.normal||n.tangent||n.bitangent||g)&&(b=f.geodeticSurfaceNormal(V,b),g&&(S[m+y]=-b.x,S[u+y]=-b.y,S[T+y]=-b.z),(n.normal||n.tangent||n.bitangent)&&((n.tangent||n.bitangent)&&(M=a.normalize(a.cross(a.UNIT_Z,b,M),M),C.multiplyByVector(U,M,M)),n.normal&&(l[m]=b.x,l[u]=b.y,l[T]=b.z,t&&(l[m+y]=-b.x,l[u+y]=-b.y,l[T+y]=-b.z)),n.tangent&&(A[m]=M.x,A[u]=M.y,A[T]=M.z,t&&(A[m+y]=-M.x,A[u+y]=-M.y,A[T+y]=-M.z)),n.bitangent&&(d=a.normalize(a.cross(b,M,d),d),x[m]=d.x,x[u]=d.y,x[T]=d.z,t&&(x[m+y]=d.x,x[u+y]=d.y,x[T+y]=d.z))))}if(n.st){O=c.length;for(let m=0;m<O;m+=2)c[m]=(c[m]-B.x)/(q.x-B.x),c[m+1]=(c[m+1]-B.y)/(q.y-B.y)}let L=new ht;if(n.position){let m=G.raisePositionsToHeight(o,e,t);L.position=new F({componentDatatype:P.DOUBLE,componentsPerAttribute:3,values:m})}if(n.st&&(L.st=new F({componentDatatype:P.FLOAT,componentsPerAttribute:2,values:c})),n.normal&&(L.normal=new F({componentDatatype:P.FLOAT,componentsPerAttribute:3,values:l})),n.tangent&&(L.tangent=new F({componentDatatype:P.FLOAT,componentsPerAttribute:3,values:A})),n.bitangent&&(L.bitangent=new F({componentDatatype:P.FLOAT,componentsPerAttribute:3,values:x})),g&&(L.extrudeDirection=new F({componentDatatype:P.FLOAT,componentsPerAttribute:3,values:S})),t&&Z(e.offsetAttribute)){let m=new Uint8Array(N);if(e.offsetAttribute===$.TOP)m=m.fill(1,0,N/2);else{let u=e.offsetAttribute===$.NONE?0:1;m=m.fill(u)}L.applyOffset=new F({componentDatatype:P.UNSIGNED_BYTE,componentsPerAttribute:1,values:m})}return L}function jt(o){let e=new Array(12*(o*(o+1))-6),t=0,n,s,i,r,f;for(n=0,i=1,r=0;r<3;r++)e[t++]=i++,e[t++]=n,e[t++]=i;for(r=2;r<o+1;++r){for(i=r*(r+1)-1,n=(r-1)*r-1,e[t++]=i++,e[t++]=n,e[t++]=i,s=2*r,f=0;f<s-1;++f)e[t++]=i,e[t++]=n++,e[t++]=n,e[t++]=i++,e[t++]=n,e[t++]=i;e[t++]=i++,e[t++]=n,e[t++]=i}for(s=o*2,++i,++n,r=0;r<s-1;++r)e[t++]=i,e[t++]=n++,e[t++]=n,e[t++]=i++,e[t++]=n,e[t++]=i;for(e[t++]=i,e[t++]=n++,e[t++]=n,e[t++]=i++,e[t++]=n++,e[t++]=n,++n,r=o-1;r>1;--r){for(e[t++]=n++,e[t++]=n,e[t++]=i,s=2*r,f=0;f<s-1;++f)e[t++]=i,e[t++]=n++,e[t++]=n,e[t++]=i++,e[t++]=n,e[t++]=i;e[t++]=n++,e[t++]=n++,e[t++]=i++}for(r=0;r<3;r++)e[t++]=n++,e[t++]=n,e[t++]=i;return e}var K=new a;function Dt(o){let e=o.center;K=a.multiplyByScalar(o.ellipsoid.geodeticSurfaceNormal(e,K),o.height,K),K=a.add(e,K,K);let t=new it(K,o.semiMajorAxis),n=G.computeEllipsePositions(o,!0,!1),s=n.positions,i=n.numPts,r=Ot(s,o,!1),f=jt(i);return f=st.createTypedArray(s.length/3,f),{boundingSphere:t,attributes:r,indices:f}}function vt(o,e){let t=e.vertexFormat,n=e.center,s=e.semiMajorAxis,i=e.semiMinorAxis,r=e.ellipsoid,f=e.height,h=e.extrudedHeight,N=e.stRotation,g=o.length/3*2,c=new Float64Array(g*3),l=t.st?new Float32Array(g*2):void 0,A=t.normal?new Float32Array(g*3):void 0,x=t.tangent?new Float32Array(g*3):void 0,S=t.bitangent?new Float32Array(g*3):void 0,z=e.shadowVolume,b=z?new Float32Array(g*3):void 0,M=0,d=Tt,_=Nt,I=Et,W=new lt(r),J=W.project(r.cartesianToCartographic(n,ft),Pt),U=r.scaleToGeodeticSurface(n,tt);r.geodeticSurfaceNormal(U,U);let B=nt.fromAxisAngle(U,N,gt),q=C.fromQuaternion(B,Mt),O=Q.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Ft),y=Q.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,St),p=o.length,L=p/3*2;for(let u=0;u<p;u+=3){let T=u+1,V=u+2,E=a.fromArray(o,u,tt),j;if(t.st){let et=C.multiplyByVector(q,E,pt),X=W.project(r.cartesianToCartographic(et,ft),xt);a.subtract(X,J,X),w.x=(X.x+s)/(2*s),w.y=(X.y+i)/(2*i),O.x=Math.min(w.x,O.x),O.y=Math.min(w.y,O.y),y.x=Math.max(w.x,y.x),y.y=Math.max(w.y,y.y),l[M+L]=w.x,l[M+1+L]=w.y,l[M++]=w.x,l[M++]=w.y}E=r.scaleToGeodeticSurface(E,E),j=a.clone(E,pt),d=r.geodeticSurfaceNormal(E,d),z&&(b[u+p]=-d.x,b[T+p]=-d.y,b[V+p]=-d.z);let at=a.multiplyByScalar(d,f,wt);if(E=a.add(E,at,E),at=a.multiplyByScalar(d,h,at),j=a.add(j,at,j),t.position&&(c[u+p]=j.x,c[T+p]=j.y,c[V+p]=j.z,c[u]=E.x,c[T]=E.y,c[V]=E.z),t.normal||t.tangent||t.bitangent){I=a.clone(d,I);let et=a.fromArray(o,(u+3)%p,wt);a.subtract(et,E,et);let X=a.subtract(j,E,xt);d=a.normalize(a.cross(X,et,d),d),t.normal&&(A[u]=d.x,A[T]=d.y,A[V]=d.z,A[u+p]=d.x,A[T+p]=d.y,A[V+p]=d.z),t.tangent&&(_=a.normalize(a.cross(I,d,_),_),x[u]=_.x,x[T]=_.y,x[V]=_.z,x[u+p]=_.x,x[u+1+p]=_.y,x[u+2+p]=_.z),t.bitangent&&(S[u]=I.x,S[T]=I.y,S[V]=I.z,S[u+p]=I.x,S[T+p]=I.y,S[V+p]=I.z)}}if(t.st){p=l.length;for(let u=0;u<p;u+=2)l[u]=(l[u]-O.x)/(y.x-O.x),l[u+1]=(l[u+1]-O.y)/(y.y-O.y)}let m=new ht;if(t.position&&(m.position=new F({componentDatatype:P.DOUBLE,componentsPerAttribute:3,values:c})),t.st&&(m.st=new F({componentDatatype:P.FLOAT,componentsPerAttribute:2,values:l})),t.normal&&(m.normal=new F({componentDatatype:P.FLOAT,componentsPerAttribute:3,values:A})),t.tangent&&(m.tangent=new F({componentDatatype:P.FLOAT,componentsPerAttribute:3,values:x})),t.bitangent&&(m.bitangent=new F({componentDatatype:P.FLOAT,componentsPerAttribute:3,values:S})),z&&(m.extrudeDirection=new F({componentDatatype:P.FLOAT,componentsPerAttribute:3,values:b})),Z(e.offsetAttribute)){let u=new Uint8Array(g);if(e.offsetAttribute===$.TOP)u=u.fill(1,0,g/2);else{let T=e.offsetAttribute===$.NONE?0:1;u=u.fill(T)}m.applyOffset=new F({componentDatatype:P.UNSIGNED_BYTE,componentsPerAttribute:1,values:u})}return m}function zt(o){let e=o.length/3,t=st.createTypedArray(e,e*6),n=0;for(let s=0;s<e;s++){let i=s,r=s+e,f=(i+1)%e,h=f+e;t[n++]=i,t[n++]=r,t[n++]=f,t[n++]=f,t[n++]=r,t[n++]=h}return t}var mt=new it,ut=new it;function Bt(o){let e=o.center,t=o.ellipsoid,n=o.semiMajorAxis,s=a.multiplyByScalar(t.geodeticSurfaceNormal(e,tt),o.height,tt);mt.center=a.add(e,s,mt.center),mt.radius=n,s=a.multiplyByScalar(t.geodeticSurfaceNormal(e,s),o.extrudedHeight,s),ut.center=a.add(e,s,ut.center),ut.radius=n;let i=G.computeEllipsePositions(o,!0,!0),r=i.positions,f=i.numPts,h=i.outerPositions,N=it.union(mt,ut),g=Ot(r,o,!0),c=jt(f),l=c.length;c.length=l*2;let A=r.length/3;for(let _=0;_<l;_+=3)c[_+l]=c[_+2]+A,c[_+1+l]=c[_+1]+A,c[_+2+l]=c[_]+A;let x=st.createTypedArray(A*2/3,c),S=new rt({attributes:g,indices:x,primitiveType:ct.TRIANGLES}),z=vt(h,o);c=zt(h);let b=st.createTypedArray(h.length*2/3,c),M=new rt({attributes:z,indices:b,primitiveType:ct.TRIANGLES}),d=yt.combineInstances([new At({geometry:S}),new At({geometry:M})]);return{boundingSphere:N,attributes:d[0].attributes,indices:d[0].indices}}function Ct(o,e,t,n,s,i,r){let h=G.computeEllipsePositions({center:o,semiMajorAxis:e,semiMinorAxis:t,rotation:n,granularity:s},!1,!0).outerPositions,N=h.length/3,g=new Array(N);for(let l=0;l<N;++l)g[l]=a.fromArray(h,l*3);let c=bt.fromCartesianArray(g,i,r);return c.width>R.PI&&(c.north=c.north>0?R.PI_OVER_TWO-R.EPSILON7:c.north,c.south=c.south<0?R.EPSILON7-R.PI_OVER_TWO:c.south,c.east=R.PI,c.west=-R.PI),c}function Y(o){o=o??dt.EMPTY_OBJECT;let e=o.center,t=o.ellipsoid??D.default,n=o.semiMajorAxis,s=o.semiMinorAxis,i=o.granularity??R.RADIANS_PER_DEGREE,r=o.vertexFormat??v.DEFAULT;if(k.defined("options.center",e),k.typeOf.number("options.semiMajorAxis",n),k.typeOf.number("options.semiMinorAxis",s),n<s)throw new ot("semiMajorAxis must be greater than or equal to the semiMinorAxis.");if(i<=0)throw new ot("granularity must be greater than zero.");let f=o.height??0,h=o.extrudedHeight??f;this._center=a.clone(e),this._semiMajorAxis=n,this._semiMinorAxis=s,this._ellipsoid=D.clone(t),this._rotation=o.rotation??0,this._stRotation=o.stRotation??0,this._height=Math.max(h,f),this._granularity=i,this._vertexFormat=v.clone(r),this._extrudedHeight=Math.min(h,f),this._shadowVolume=o.shadowVolume??!1,this._workerName="createEllipseGeometry",this._offsetAttribute=o.offsetAttribute,this._rectangle=void 0,this._textureCoordinateRotationPoints=void 0}Y.packedLength=a.packedLength+D.packedLength+v.packedLength+9;Y.pack=function(o,e,t){return k.defined("value",o),k.defined("array",e),t=t??0,a.pack(o._center,e,t),t+=a.packedLength,D.pack(o._ellipsoid,e,t),t+=D.packedLength,v.pack(o._vertexFormat,e,t),t+=v.packedLength,e[t++]=o._semiMajorAxis,e[t++]=o._semiMinorAxis,e[t++]=o._rotation,e[t++]=o._stRotation,e[t++]=o._height,e[t++]=o._granularity,e[t++]=o._extrudedHeight,e[t++]=o._shadowVolume?1:0,e[t]=o._offsetAttribute??-1,e};var Rt=new a,It=new D,Lt=new v,H={center:Rt,ellipsoid:It,vertexFormat:Lt,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,stRotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};Y.unpack=function(o,e,t){k.defined("array",o),e=e??0;let n=a.unpack(o,e,Rt);e+=a.packedLength;let s=D.unpack(o,e,It);e+=D.packedLength;let i=v.unpack(o,e,Lt);e+=v.packedLength;let r=o[e++],f=o[e++],h=o[e++],N=o[e++],g=o[e++],c=o[e++],l=o[e++],A=o[e++]===1,x=o[e];return Z(t)?(t._center=a.clone(n,t._center),t._ellipsoid=D.clone(s,t._ellipsoid),t._vertexFormat=v.clone(i,t._vertexFormat),t._semiMajorAxis=r,t._semiMinorAxis=f,t._rotation=h,t._stRotation=N,t._height=g,t._granularity=c,t._extrudedHeight=l,t._shadowVolume=A,t._offsetAttribute=x===-1?void 0:x,t):(H.height=g,H.extrudedHeight=l,H.granularity=c,H.stRotation=N,H.rotation=h,H.semiMajorAxis=r,H.semiMinorAxis=f,H.shadowVolume=A,H.offsetAttribute=x===-1?void 0:x,new Y(H))};Y.computeRectangle=function(o,e){o=o??dt.EMPTY_OBJECT;let t=o.center,n=o.ellipsoid??D.default,s=o.semiMajorAxis,i=o.semiMinorAxis,r=o.granularity??R.RADIANS_PER_DEGREE,f=o.rotation??0;if(k.defined("options.center",t),k.typeOf.number("options.semiMajorAxis",s),k.typeOf.number("options.semiMinorAxis",i),s<i)throw new ot("semiMajorAxis must be greater than or equal to the semiMinorAxis.");if(r<=0)throw new ot("granularity must be greater than zero.");return Ct(t,s,i,f,r,n,e)};Y.createGeometry=function(o){if(o._semiMajorAxis<=0||o._semiMinorAxis<=0)return;let e=o._height,t=o._extrudedHeight,n=!R.equalsEpsilon(e,t,0,R.EPSILON2);o._center=o._ellipsoid.scaleToGeodeticSurface(o._center,o._center);let s={center:o._center,semiMajorAxis:o._semiMajorAxis,semiMinorAxis:o._semiMinorAxis,ellipsoid:o._ellipsoid,rotation:o._rotation,height:e,granularity:o._granularity,vertexFormat:o._vertexFormat,stRotation:o._stRotation},i;if(n)s.extrudedHeight=t,s.shadowVolume=o._shadowVolume,s.offsetAttribute=o._offsetAttribute,i=Bt(s);else if(i=Dt(s),Z(o._offsetAttribute)){let r=i.attributes.position.values.length,f=o._offsetAttribute===$.NONE?0:1,h=new Uint8Array(r/3).fill(f);i.attributes.applyOffset=new F({componentDatatype:P.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}return new rt({attributes:i.attributes,indices:i.indices,primitiveType:ct.TRIANGLES,boundingSphere:i.boundingSphere,offsetAttribute:o._offsetAttribute})};Y.createShadowVolume=function(o,e,t){let n=o._granularity,s=o._ellipsoid,i=e(n,s),r=t(n,s);return new Y({center:o._center,semiMajorAxis:o._semiMajorAxis,semiMinorAxis:o._semiMinorAxis,ellipsoid:s,rotation:o._rotation,stRotation:o._stRotation,granularity:n,extrudedHeight:i,height:r,vertexFormat:v.POSITION_ONLY,shadowVolume:!0})};function kt(o){let e=-o._stRotation;if(e===0)return[0,0,0,1,1,0];let n=G.computeEllipsePositions({center:o._center,semiMajorAxis:o._semiMajorAxis,semiMinorAxis:o._semiMinorAxis,rotation:o._rotation,granularity:o._granularity},!1,!0).outerPositions,s=n.length/3,i=new Array(s);for(let h=0;h<s;++h)i[h]=a.fromArray(n,h*3);let r=o._ellipsoid,f=o.rectangle;return rt._textureCoordinateRotationPoints(i,e,r,f)}Object.defineProperties(Y.prototype,{rectangle:{get:function(){return Z(this._rectangle)||(this._rectangle=Ct(this._center,this._semiMajorAxis,this._semiMinorAxis,this._rotation,this._granularity,this._ellipsoid)),this._rectangle}},textureCoordinateRotationPoints:{get:function(){return Z(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=kt(this)),this._textureCoordinateRotationPoints}}});var de=Y;export{de as a}; diff --git a/public/Cesium/Workers/chunk-G5AGHVVC.js b/public/Cesium/Workers/chunk-G5AGHVVC.js new file mode 100644 index 000000000..2f61bfffb --- /dev/null +++ b/public/Cesium/Workers/chunk-G5AGHVVC.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as p,b as P,d as T}from"./chunk-64RSHJUE.js";import{a}from"./chunk-3SSKC3VN.js";import{a as I,b as g}from"./chunk-LEYMRMBK.js";import{e as l}from"./chunk-VTAIKJXX.js";function w(n,i,o){if(n===0)return i*o;let t=n*n,e=t*t,c=e*t,r=c*t,h=r*t,s=h*t,d=o,u=Math.sin(2*d),f=Math.sin(4*d),M=Math.sin(6*d),_=Math.sin(8*d),E=Math.sin(10*d),S=Math.sin(12*d);return i*((1-t/4-3*e/64-5*c/256-175*r/16384-441*h/65536-4851*s/1048576)*d-(3*t/8+3*e/32+45*c/1024+105*r/4096+2205*h/131072+6237*s/524288)*u+(15*e/256+45*c/1024+525*r/16384+1575*h/65536+155925*s/8388608)*f-(35*c/3072+175*r/12288+3675*h/262144+13475*s/1048576)*M+(315*r/131072+2205*h/524288+43659*s/8388608)*_-(693*h/1310720+6237*s/5242880)*E+1001*s/8388608*S)}function H(n,i,o){let t=n/o;if(i===0)return t;let e=t*t,c=e*t,r=c*t,h=i,s=h*h,d=s*s,u=d*s,f=u*s,M=f*s,_=M*s,E=Math.sin(2*t),S=Math.cos(2*t),v=Math.sin(4*t),W=Math.cos(4*t),V=Math.sin(6*t),C=Math.cos(6*t),N=Math.sin(8*t),R=Math.cos(8*t),b=Math.sin(10*t),x=Math.cos(10*t),U=Math.sin(12*t);return t+t*s/4+7*t*d/64+15*t*u/256+579*t*f/16384+1515*t*M/65536+16837*t*_/1048576+(3*t*d/16+45*t*u/256-t*(32*e-561)*f/4096-t*(232*e-1677)*M/16384+t*(399985-90560*e+512*r)*_/5242880)*S+(21*t*u/256+483*t*f/4096-t*(224*e-1969)*M/16384-t*(33152*e-112599)*_/1048576)*W+(151*t*f/4096+4681*t*M/65536+1479*t*_/16384-453*c*_/32768)*C+(1097*t*M/65536+42783*t*_/1048576)*R+8011*t*_/1048576*x+(3*s/8+3*d/16+213*u/2048-3*e*u/64+255*f/4096-33*e*f/512+20861*M/524288-33*e*M/512+r*M/1024+28273*_/1048576-471*e*_/8192+9*r*_/4096)*E+(21*d/256+21*u/256+533*f/8192-21*e*f/512+197*M/4096-315*e*M/4096+584039*_/16777216-12517*e*_/131072+7*r*_/2048)*v+(151*u/6144+151*f/4096+5019*M/131072-453*e*M/16384+26965*_/786432-8607*e*_/131072)*V+(1097*f/131072+1097*M/65536+225797*_/10485760-1097*e*_/65536)*N+(8011*M/2621440+8011*_/1048576)*b+293393*_/251658240*U}function O(n,i){if(n===0)return Math.log(Math.tan(.5*(a.PI_OVER_TWO+i)));let o=n*Math.sin(i);return Math.log(Math.tan(.5*(a.PI_OVER_TWO+i)))-n/2*Math.log((1+o)/(1-o))}function z(n,i,o,t,e){let c=O(n._ellipticity,o),r=O(n._ellipticity,e);return Math.atan2(a.negativePiToPi(t-i),r-c)}function k(n,i,o,t,e,c,r){let h=n._heading,s=c-t,d=0;if(a.equalsEpsilon(Math.abs(h),a.PI_OVER_TWO,a.EPSILON8))if(i===o)d=i*Math.cos(e)*a.negativePiToPi(s);else{let u=Math.sin(e);d=i*Math.cos(e)*a.negativePiToPi(s)/Math.sqrt(1-n._ellipticitySquared*u*u)}else{let u=w(n._ellipticity,i,e);d=(w(n._ellipticity,i,r)-u)/Math.cos(h)}return Math.abs(d)}var A=new p,q=new p;function y(n,i,o,t){let e=p.normalize(t.cartographicToCartesian(i,q),A),c=p.normalize(t.cartographicToCartesian(o,q),q);g.typeOf.number.greaterThanOrEquals("value",Math.abs(Math.abs(p.angleBetween(e,c))-Math.PI),.0125);let r=t.maximumRadius,h=t.minimumRadius,s=r*r,d=h*h;n._ellipticitySquared=(s-d)/s,n._ellipticity=Math.sqrt(n._ellipticitySquared),n._start=P.clone(i,n._start),n._start.height=0,n._end=P.clone(o,n._end),n._end.height=0,n._heading=z(n,i.longitude,i.latitude,o.longitude,o.latitude),n._distance=k(n,t.maximumRadius,t.minimumRadius,i.longitude,i.latitude,o.longitude,o.latitude)}function D(n,i,o,t,e,c){if(o===0)return P.clone(n,c);let r=e*e,h,s,d;if(Math.abs(a.PI_OVER_TWO-Math.abs(i))>a.EPSILON8){let u=w(e,t,n.latitude),f=o*Math.cos(i),M=u+f;if(s=H(M,e,t),Math.abs(i)<a.EPSILON10)h=a.negativePiToPi(n.longitude);else{let _=O(e,n.latitude),E=O(e,s);d=Math.tan(i)*(E-_),h=a.negativePiToPi(n.longitude+d)}}else{s=n.latitude;let u;if(e===0)u=t*Math.cos(n.latitude);else{let f=Math.sin(n.latitude);u=t*Math.cos(n.latitude)/Math.sqrt(1-r*f*f)}d=o/u,i>0?h=a.negativePiToPi(n.longitude+d):h=a.negativePiToPi(n.longitude-d)}return l(c)?(c.longitude=h,c.latitude=s,c.height=0,c):new P(h,s,0)}function m(n,i,o){let t=o??T.default;this._ellipsoid=t,this._start=new P,this._end=new P,this._heading=void 0,this._distance=void 0,this._ellipticity=void 0,this._ellipticitySquared=void 0,l(n)&&l(i)&&y(this,n,i,t)}Object.defineProperties(m.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return g.defined("distance",this._distance),this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},heading:{get:function(){return g.defined("distance",this._distance),this._heading}}});m.fromStartHeadingDistance=function(n,i,o,t,e){g.defined("start",n),g.defined("heading",i),g.defined("distance",o),g.typeOf.number.greaterThan("distance",o,0);let c=t??T.default,r=c.maximumRadius,h=c.minimumRadius,s=r*r,d=h*h,u=Math.sqrt((s-d)/s);i=a.negativePiToPi(i);let f=D(n,i,o,c.maximumRadius,u);return!l(e)||l(t)&&!t.equals(e.ellipsoid)?new m(n,f,c):(e.setEndPoints(n,f),e)};m.prototype.setEndPoints=function(n,i){g.defined("start",n),g.defined("end",i),y(this,n,i,this._ellipsoid)};m.prototype.interpolateUsingFraction=function(n,i){return this.interpolateUsingSurfaceDistance(n*this._distance,i)};m.prototype.interpolateUsingSurfaceDistance=function(n,i){if(g.typeOf.number("distance",n),!l(this._distance)||this._distance===0)throw new I("EllipsoidRhumbLine must have distinct start and end set.");return D(this._start,this._heading,n,this._ellipsoid.maximumRadius,this._ellipticity,i)};m.prototype.findIntersectionWithLongitude=function(n,i){if(g.typeOf.number("intersectionLongitude",n),!l(this._distance)||this._distance===0)throw new I("EllipsoidRhumbLine must have distinct start and end set.");let o=this._ellipticity,t=this._heading,e=Math.abs(t),c=this._start;if(n=a.negativePiToPi(n),a.equalsEpsilon(Math.abs(n),Math.PI,a.EPSILON14)&&(n=a.sign(c.longitude)*Math.PI),l(i)||(i=new P),Math.abs(a.PI_OVER_TWO-e)<=a.EPSILON8)return i.longitude=n,i.latitude=c.latitude,i.height=0,i;if(a.equalsEpsilon(Math.abs(a.PI_OVER_TWO-e),a.PI_OVER_TWO,a.EPSILON8))return a.equalsEpsilon(n,c.longitude,a.EPSILON12)?void 0:(i.longitude=n,i.latitude=a.PI_OVER_TWO*a.sign(a.PI_OVER_TWO-t),i.height=0,i);let r=c.latitude,h=o*Math.sin(r),s=Math.tan(.5*(a.PI_OVER_TWO+r))*Math.exp((n-c.longitude)/Math.tan(t)),d=(1+h)/(1-h),u=c.latitude,f;do{f=u;let M=o*Math.sin(f),_=(1+M)/(1-M);u=2*Math.atan(s*Math.pow(_/d,o/2))-a.PI_OVER_TWO}while(!a.equalsEpsilon(u,f,a.EPSILON12));return i.longitude=n,i.latitude=u,i.height=0,i};m.prototype.findIntersectionWithLatitude=function(n,i){if(g.typeOf.number("intersectionLatitude",n),!l(this._distance)||this._distance===0)throw new I("EllipsoidRhumbLine must have distinct start and end set.");let o=this._ellipticity,t=this._heading,e=this._start;if(a.equalsEpsilon(Math.abs(t),a.PI_OVER_TWO,a.EPSILON8))return;let c=O(o,e.latitude),r=O(o,n),h=Math.tan(t)*(r-c),s=a.negativePiToPi(e.longitude+h);return l(i)?(i.longitude=s,i.latitude=n,i.height=0,i):new P(s,n,0)};var Y=m;export{Y as a}; diff --git a/public/Cesium/Workers/chunk-GBYLG25F.js b/public/Cesium/Workers/chunk-GBYLG25F.js new file mode 100644 index 000000000..83c7a065d --- /dev/null +++ b/public/Cesium/Workers/chunk-GBYLG25F.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +var e={NONE:0,TOP:1,ALL:2},t=Object.freeze(e);export{t as a}; diff --git a/public/Cesium/Workers/chunk-GILIDQNQ.js b/public/Cesium/Workers/chunk-GILIDQNQ.js new file mode 100644 index 000000000..6e14ec7b3 --- /dev/null +++ b/public/Cesium/Workers/chunk-GILIDQNQ.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as Q}from"./chunk-ARG42DC4.js";import{a as N}from"./chunk-GBYLG25F.js";import{a as _}from"./chunk-CYCB63OH.js";import{a as K}from"./chunk-OFUUQVMR.js";import{a as H}from"./chunk-A56XVLQR.js";import{b as J,c as W,d as L}from"./chunk-RCV6KWXS.js";import{d as j}from"./chunk-4IW2T6GF.js";import{a as S}from"./chunk-AU7IKHOH.js";import{a as b,c as E,f as Z}from"./chunk-64RSHJUE.js";import{a as Y}from"./chunk-3SSKC3VN.js";import{a as F}from"./chunk-LEYMRMBK.js";import{e as g}from"./chunk-VTAIKJXX.js";var k=new E,ot=new b,nt=new b,it=new b,rt=new b;function O(t){t=t??Z.EMPTY_OBJECT;let n=t.length,e=t.topRadius,h=t.bottomRadius,o=t.vertexFormat??_.DEFAULT,s=t.slices??128;if(!g(n))throw new F("options.length must be defined.");if(!g(e))throw new F("options.topRadius must be defined.");if(!g(h))throw new F("options.bottomRadius must be defined.");if(s<3)throw new F("options.slices must be greater than or equal to 3.");if(g(t.offsetAttribute)&&t.offsetAttribute===N.TOP)throw new F("GeometryOffsetAttribute.TOP is not a supported options.offsetAttribute for this geometry.");this._length=n,this._topRadius=e,this._bottomRadius=h,this._vertexFormat=_.clone(o),this._slices=s,this._offsetAttribute=t.offsetAttribute,this._workerName="createCylinderGeometry"}O.packedLength=_.packedLength+5;O.pack=function(t,n,e){if(!g(t))throw new F("value is required");if(!g(n))throw new F("array is required");return e=e??0,_.pack(t._vertexFormat,n,e),e+=_.packedLength,n[e++]=t._length,n[e++]=t._topRadius,n[e++]=t._bottomRadius,n[e++]=t._slices,n[e]=t._offsetAttribute??-1,n};var X=new _,D={vertexFormat:X,length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,offsetAttribute:void 0};O.unpack=function(t,n,e){if(!g(t))throw new F("array is required");n=n??0;let h=_.unpack(t,n,X);n+=_.packedLength;let o=t[n++],s=t[n++],p=t[n++],P=t[n++],w=t[n];return g(e)?(e._vertexFormat=_.clone(h,e._vertexFormat),e._length=o,e._topRadius=s,e._bottomRadius=p,e._slices=P,e._offsetAttribute=w===-1?void 0:w,e):(D.length=o,D.topRadius=s,D.bottomRadius=p,D.slices=P,D.offsetAttribute=w===-1?void 0:w,new O(D))};O.createGeometry=function(t){let n=t._length,e=t._topRadius,h=t._bottomRadius,o=t._vertexFormat,s=t._slices;if(n<=0||e<0||h<0||e===0&&h===0)return;let p=s+s,P=s+p,w=p+p,C=Q.computePositions(n,e,h,s,!0),z=o.st?new Float32Array(w*2):void 0,c=o.normal?new Float32Array(w*3):void 0,m=o.tangent?new Float32Array(w*3):void 0,u=o.bitangent?new Float32Array(w*3):void 0,i,G=o.normal||o.tangent||o.bitangent;if(G){let T=o.tangent||o.bitangent,f=0,d=0,l=0,q=Math.atan2(h-e,n),A=ot;A.z=Math.sin(q);let B=Math.cos(q),R=it,y=nt;for(i=0;i<s;i++){let V=i/s*Y.TWO_PI,tt=B*Math.cos(V),et=B*Math.sin(V);G&&(A.x=tt,A.y=et,T&&(R=b.normalize(b.cross(b.UNIT_Z,A,R),R)),o.normal&&(c[f++]=A.x,c[f++]=A.y,c[f++]=A.z,c[f++]=A.x,c[f++]=A.y,c[f++]=A.z),o.tangent&&(m[d++]=R.x,m[d++]=R.y,m[d++]=R.z,m[d++]=R.x,m[d++]=R.y,m[d++]=R.z),o.bitangent&&(y=b.normalize(b.cross(A,R,y),y),u[l++]=y.x,u[l++]=y.y,u[l++]=y.z,u[l++]=y.x,u[l++]=y.y,u[l++]=y.z))}for(i=0;i<s;i++)o.normal&&(c[f++]=0,c[f++]=0,c[f++]=-1),o.tangent&&(m[d++]=1,m[d++]=0,m[d++]=0),o.bitangent&&(u[l++]=0,u[l++]=-1,u[l++]=0);for(i=0;i<s;i++)o.normal&&(c[f++]=0,c[f++]=0,c[f++]=1),o.tangent&&(m[d++]=1,m[d++]=0,m[d++]=0),o.bitangent&&(u[l++]=0,u[l++]=1,u[l++]=0)}let $=12*s-12,r=K.createTypedArray(w,$),a=0,x=0;for(i=0;i<s-1;i++)r[a++]=x,r[a++]=x+2,r[a++]=x+3,r[a++]=x,r[a++]=x+3,r[a++]=x+1,x+=2;for(r[a++]=p-2,r[a++]=0,r[a++]=1,r[a++]=p-2,r[a++]=1,r[a++]=p-1,i=1;i<s-1;i++)r[a++]=p+i+1,r[a++]=p+i,r[a++]=p;for(i=1;i<s-1;i++)r[a++]=P,r[a++]=P+i,r[a++]=P+i+1;let U=0;if(o.st){let T=Math.max(e,h);for(i=0;i<w;i++){let f=b.fromArray(C,i*3,rt);z[U++]=(f.x+T)/(2*T),z[U++]=(f.y+T)/(2*T)}}let v=new H;o.position&&(v.position=new L({componentDatatype:S.DOUBLE,componentsPerAttribute:3,values:C})),o.normal&&(v.normal=new L({componentDatatype:S.FLOAT,componentsPerAttribute:3,values:c})),o.tangent&&(v.tangent=new L({componentDatatype:S.FLOAT,componentsPerAttribute:3,values:m})),o.bitangent&&(v.bitangent=new L({componentDatatype:S.FLOAT,componentsPerAttribute:3,values:u})),o.st&&(v.st=new L({componentDatatype:S.FLOAT,componentsPerAttribute:2,values:z})),k.x=n*.5,k.y=Math.max(h,e);let I=new j(b.ZERO,E.magnitude(k));if(g(t._offsetAttribute)){n=C.length;let T=t._offsetAttribute===N.NONE?0:1,f=new Uint8Array(n/3).fill(T);v.applyOffset=new L({componentDatatype:S.UNSIGNED_BYTE,componentsPerAttribute:1,values:f})}return new W({attributes:v,indices:r,primitiveType:J.TRIANGLES,boundingSphere:I,offsetAttribute:t._offsetAttribute})};var M;O.getUnitCylinder=function(){return g(M)||(M=O.createGeometry(new O({topRadius:1,bottomRadius:1,length:1,vertexFormat:_.POSITION_ONLY}))),M};var yt=O;export{yt as a}; diff --git a/public/Cesium/Workers/chunk-HMIYSTF6.js b/public/Cesium/Workers/chunk-HMIYSTF6.js new file mode 100644 index 000000000..708062df7 --- /dev/null +++ b/public/Cesium/Workers/chunk-HMIYSTF6.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{f as g,g as j}from"./chunk-64RSHJUE.js";import{a as i}from"./chunk-3SSKC3VN.js";import{b as n}from"./chunk-LEYMRMBK.js";import{e as b}from"./chunk-VTAIKJXX.js";function F(r,o,t){return t<0&&(t+=1),t>1&&(t-=1),t*6<1?r+(o-r)*6*t:t*2<1?o:t*3<2?r+(o-r)*(2/3-t)*6:r}function e(r,o,t,f){this.red=r??1,this.green=o??1,this.blue=t??1,this.alpha=f??1}e.fromCartesian4=function(r,o){return n.typeOf.object("cartesian",r),b(o)?(o.red=r.x,o.green=r.y,o.blue=r.z,o.alpha=r.w,o):new e(r.x,r.y,r.z,r.w)};e.fromBytes=function(r,o,t,f,C){return r=e.byteToFloat(r??255),o=e.byteToFloat(o??255),t=e.byteToFloat(t??255),f=e.byteToFloat(f??255),b(C)?(C.red=r,C.green=o,C.blue=t,C.alpha=f,C):new e(r,o,t,f)};e.fromAlpha=function(r,o,t){return n.typeOf.object("color",r),n.typeOf.number("alpha",o),b(t)?(t.red=r.red,t.green=r.green,t.blue=r.blue,t.alpha=o,t):new e(r.red,r.green,r.blue,o)};var l,A,E;j.supportsTypedArrays()&&(l=new ArrayBuffer(4),A=new Uint32Array(l),E=new Uint8Array(l));e.fromRgba=function(r,o){return A[0]=r,e.fromBytes(E[0],E[1],E[2],E[3],o)};e.fromHsl=function(r,o,t,f,C){r=(r??0)%1,o=o??0,t=t??0,f=f??1;let m=t,s=t,O=t;if(o!==0){let c;t<.5?c=t*(1+o):c=t+o-t*o;let S=2*t-c;m=F(S,c,r+1/3),s=F(S,c,r),O=F(S,c,r-1/3)}return b(C)?(C.red=m,C.green=s,C.blue=O,C.alpha=f,C):new e(m,s,O,f)};e.fromRandom=function(r,o){r=r??g.EMPTY_OBJECT;let t=r.red;if(!b(t)){let s=r.minimumRed??0,O=r.maximumRed??1;n.typeOf.number.lessThanOrEquals("minimumRed",s,O),t=s+i.nextRandomNumber()*(O-s)}let f=r.green;if(!b(f)){let s=r.minimumGreen??0,O=r.maximumGreen??1;n.typeOf.number.lessThanOrEquals("minimumGreen",s,O),f=s+i.nextRandomNumber()*(O-s)}let C=r.blue;if(!b(C)){let s=r.minimumBlue??0,O=r.maximumBlue??1;n.typeOf.number.lessThanOrEquals("minimumBlue",s,O),C=s+i.nextRandomNumber()*(O-s)}let m=r.alpha;if(!b(m)){let s=r.minimumAlpha??0,O=r.maximumAlpha??1;n.typeOf.number.lessThanOrEquals("minimumAlpha",s,O),m=s+i.nextRandomNumber()*(O-s)}return b(o)?(o.red=t,o.green=f,o.blue=C,o.alpha=m,o):new e(t,f,C,m)};var a=/^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i,z=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i,p=/^rgba?\s*\(\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i,R=/^hsla?\s*\(\s*([0-9.]+)\s*[,\s]+\s*([0-9.]+%)\s*[,\s]+\s*([0-9.]+%)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i;e.fromCssColorString=function(r,o){n.typeOf.string("color",r),b(o)||(o=new e),r=r.trim();let t=e[r.toUpperCase()];if(b(t))return e.clone(t,o),o;let f=a.exec(r);return f!==null?(o.red=parseInt(f[1],16)/15,o.green=parseInt(f[2],16)/15,o.blue=parseInt(f[3],16)/15,o.alpha=parseInt(f[4]??"f",16)/15,o):(f=z.exec(r),f!==null?(o.red=parseInt(f[1],16)/255,o.green=parseInt(f[2],16)/255,o.blue=parseInt(f[3],16)/255,o.alpha=parseInt(f[4]??"ff",16)/255,o):(f=p.exec(r),f!==null?(o.red=parseFloat(f[1])/(f[1].substr(-1)==="%"?100:255),o.green=parseFloat(f[2])/(f[2].substr(-1)==="%"?100:255),o.blue=parseFloat(f[3])/(f[3].substr(-1)==="%"?100:255),o.alpha=parseFloat(f[4]??"1.0"),o):(f=R.exec(r),f!==null?e.fromHsl(parseFloat(f[1])/360,parseFloat(f[2])/100,parseFloat(f[3])/100,parseFloat(f[4]??"1.0"),o):(o=void 0,o))))};e.packedLength=4;e.pack=function(r,o,t){return n.typeOf.object("value",r),n.defined("array",o),t=t??0,o[t++]=r.red,o[t++]=r.green,o[t++]=r.blue,o[t]=r.alpha,o};e.unpack=function(r,o,t){return n.defined("array",r),o=o??0,b(t)||(t=new e),t.red=r[o++],t.green=r[o++],t.blue=r[o++],t.alpha=r[o],t};e.byteToFloat=function(r){return r/255};e.floatToByte=function(r){return r===1?255:r*256|0};e.clone=function(r,o){if(b(r))return b(o)?(o.red=r.red,o.green=r.green,o.blue=r.blue,o.alpha=r.alpha,o):new e(r.red,r.green,r.blue,r.alpha)};e.equals=function(r,o){return r===o||b(r)&&b(o)&&r.red===o.red&&r.green===o.green&&r.blue===o.blue&&r.alpha===o.alpha};e.equalsArray=function(r,o,t){return r.red===o[t]&&r.green===o[t+1]&&r.blue===o[t+2]&&r.alpha===o[t+3]};e.prototype.clone=function(r){return e.clone(this,r)};e.prototype.equals=function(r){return e.equals(this,r)};e.prototype.equalsEpsilon=function(r,o){return this===r||b(r)&&Math.abs(this.red-r.red)<=o&&Math.abs(this.green-r.green)<=o&&Math.abs(this.blue-r.blue)<=o&&Math.abs(this.alpha-r.alpha)<=o};e.prototype.toString=function(){return`(${this.red}, ${this.green}, ${this.blue}, ${this.alpha})`};e.prototype.toCssColorString=function(){let r=e.floatToByte(this.red),o=e.floatToByte(this.green),t=e.floatToByte(this.blue);return this.alpha===1?`rgb(${r},${o},${t})`:`rgba(${r},${o},${t},${this.alpha})`};e.prototype.toCssHexString=function(){let r=e.floatToByte(this.red).toString(16);r.length<2&&(r=`0${r}`);let o=e.floatToByte(this.green).toString(16);o.length<2&&(o=`0${o}`);let t=e.floatToByte(this.blue).toString(16);if(t.length<2&&(t=`0${t}`),this.alpha<1){let f=e.floatToByte(this.alpha).toString(16);return f.length<2&&(f=`0${f}`),`#${r}${o}${t}${f}`}return`#${r}${o}${t}`};e.prototype.toBytes=function(r){let o=e.floatToByte(this.red),t=e.floatToByte(this.green),f=e.floatToByte(this.blue),C=e.floatToByte(this.alpha);return b(r)?(r[0]=o,r[1]=t,r[2]=f,r[3]=C,r):[o,t,f,C]};e.prototype.toRgba=function(){return E[0]=e.floatToByte(this.red),E[1]=e.floatToByte(this.green),E[2]=e.floatToByte(this.blue),E[3]=e.floatToByte(this.alpha),A[0]};e.prototype.brighten=function(r,o){return n.typeOf.number("magnitude",r),n.typeOf.number.greaterThanOrEquals("magnitude",r,0),n.typeOf.object("result",o),r=1-r,o.red=1-(1-this.red)*r,o.green=1-(1-this.green)*r,o.blue=1-(1-this.blue)*r,o.alpha=this.alpha,o};e.prototype.darken=function(r,o){return n.typeOf.number("magnitude",r),n.typeOf.number.greaterThanOrEquals("magnitude",r,0),n.typeOf.object("result",o),r=1-r,o.red=this.red*r,o.green=this.green*r,o.blue=this.blue*r,o.alpha=this.alpha,o};e.prototype.withAlpha=function(r,o){return e.fromAlpha(this,r,o)};e.add=function(r,o,t){return n.typeOf.object("left",r),n.typeOf.object("right",o),n.typeOf.object("result",t),t.red=r.red+o.red,t.green=r.green+o.green,t.blue=r.blue+o.blue,t.alpha=r.alpha+o.alpha,t};e.subtract=function(r,o,t){return n.typeOf.object("left",r),n.typeOf.object("right",o),n.typeOf.object("result",t),t.red=r.red-o.red,t.green=r.green-o.green,t.blue=r.blue-o.blue,t.alpha=r.alpha-o.alpha,t};e.multiply=function(r,o,t){return n.typeOf.object("left",r),n.typeOf.object("right",o),n.typeOf.object("result",t),t.red=r.red*o.red,t.green=r.green*o.green,t.blue=r.blue*o.blue,t.alpha=r.alpha*o.alpha,t};e.divide=function(r,o,t){return n.typeOf.object("left",r),n.typeOf.object("right",o),n.typeOf.object("result",t),t.red=r.red/o.red,t.green=r.green/o.green,t.blue=r.blue/o.blue,t.alpha=r.alpha/o.alpha,t};e.mod=function(r,o,t){return n.typeOf.object("left",r),n.typeOf.object("right",o),n.typeOf.object("result",t),t.red=r.red%o.red,t.green=r.green%o.green,t.blue=r.blue%o.blue,t.alpha=r.alpha%o.alpha,t};e.lerp=function(r,o,t,f){return n.typeOf.object("start",r),n.typeOf.object("end",o),n.typeOf.number("t",t),n.typeOf.object("result",f),f.red=i.lerp(r.red,o.red,t),f.green=i.lerp(r.green,o.green,t),f.blue=i.lerp(r.blue,o.blue,t),f.alpha=i.lerp(r.alpha,o.alpha,t),f};e.multiplyByScalar=function(r,o,t){return n.typeOf.object("color",r),n.typeOf.number("scalar",o),n.typeOf.object("result",t),t.red=r.red*o,t.green=r.green*o,t.blue=r.blue*o,t.alpha=r.alpha*o,t};e.divideByScalar=function(r,o,t){return n.typeOf.object("color",r),n.typeOf.number("scalar",o),n.typeOf.object("result",t),t.red=r.red/o,t.green=r.green/o,t.blue=r.blue/o,t.alpha=r.alpha/o,t};e.ALICEBLUE=Object.freeze(e.fromCssColorString("#F0F8FF"));e.ANTIQUEWHITE=Object.freeze(e.fromCssColorString("#FAEBD7"));e.AQUA=Object.freeze(e.fromCssColorString("#00FFFF"));e.AQUAMARINE=Object.freeze(e.fromCssColorString("#7FFFD4"));e.AZURE=Object.freeze(e.fromCssColorString("#F0FFFF"));e.BEIGE=Object.freeze(e.fromCssColorString("#F5F5DC"));e.BISQUE=Object.freeze(e.fromCssColorString("#FFE4C4"));e.BLACK=Object.freeze(e.fromCssColorString("#000000"));e.BLANCHEDALMOND=Object.freeze(e.fromCssColorString("#FFEBCD"));e.BLUE=Object.freeze(e.fromCssColorString("#0000FF"));e.BLUEVIOLET=Object.freeze(e.fromCssColorString("#8A2BE2"));e.BROWN=Object.freeze(e.fromCssColorString("#A52A2A"));e.BURLYWOOD=Object.freeze(e.fromCssColorString("#DEB887"));e.CADETBLUE=Object.freeze(e.fromCssColorString("#5F9EA0"));e.CHARTREUSE=Object.freeze(e.fromCssColorString("#7FFF00"));e.CHOCOLATE=Object.freeze(e.fromCssColorString("#D2691E"));e.CORAL=Object.freeze(e.fromCssColorString("#FF7F50"));e.CORNFLOWERBLUE=Object.freeze(e.fromCssColorString("#6495ED"));e.CORNSILK=Object.freeze(e.fromCssColorString("#FFF8DC"));e.CRIMSON=Object.freeze(e.fromCssColorString("#DC143C"));e.CYAN=Object.freeze(e.fromCssColorString("#00FFFF"));e.DARKBLUE=Object.freeze(e.fromCssColorString("#00008B"));e.DARKCYAN=Object.freeze(e.fromCssColorString("#008B8B"));e.DARKGOLDENROD=Object.freeze(e.fromCssColorString("#B8860B"));e.DARKGRAY=Object.freeze(e.fromCssColorString("#A9A9A9"));e.DARKGREEN=Object.freeze(e.fromCssColorString("#006400"));e.DARKGREY=e.DARKGRAY;e.DARKKHAKI=Object.freeze(e.fromCssColorString("#BDB76B"));e.DARKMAGENTA=Object.freeze(e.fromCssColorString("#8B008B"));e.DARKOLIVEGREEN=Object.freeze(e.fromCssColorString("#556B2F"));e.DARKORANGE=Object.freeze(e.fromCssColorString("#FF8C00"));e.DARKORCHID=Object.freeze(e.fromCssColorString("#9932CC"));e.DARKRED=Object.freeze(e.fromCssColorString("#8B0000"));e.DARKSALMON=Object.freeze(e.fromCssColorString("#E9967A"));e.DARKSEAGREEN=Object.freeze(e.fromCssColorString("#8FBC8F"));e.DARKSLATEBLUE=Object.freeze(e.fromCssColorString("#483D8B"));e.DARKSLATEGRAY=Object.freeze(e.fromCssColorString("#2F4F4F"));e.DARKSLATEGREY=e.DARKSLATEGRAY;e.DARKTURQUOISE=Object.freeze(e.fromCssColorString("#00CED1"));e.DARKVIOLET=Object.freeze(e.fromCssColorString("#9400D3"));e.DEEPPINK=Object.freeze(e.fromCssColorString("#FF1493"));e.DEEPSKYBLUE=Object.freeze(e.fromCssColorString("#00BFFF"));e.DIMGRAY=Object.freeze(e.fromCssColorString("#696969"));e.DIMGREY=e.DIMGRAY;e.DODGERBLUE=Object.freeze(e.fromCssColorString("#1E90FF"));e.FIREBRICK=Object.freeze(e.fromCssColorString("#B22222"));e.FLORALWHITE=Object.freeze(e.fromCssColorString("#FFFAF0"));e.FORESTGREEN=Object.freeze(e.fromCssColorString("#228B22"));e.FUCHSIA=Object.freeze(e.fromCssColorString("#FF00FF"));e.GAINSBORO=Object.freeze(e.fromCssColorString("#DCDCDC"));e.GHOSTWHITE=Object.freeze(e.fromCssColorString("#F8F8FF"));e.GOLD=Object.freeze(e.fromCssColorString("#FFD700"));e.GOLDENROD=Object.freeze(e.fromCssColorString("#DAA520"));e.GRAY=Object.freeze(e.fromCssColorString("#808080"));e.GREEN=Object.freeze(e.fromCssColorString("#008000"));e.GREENYELLOW=Object.freeze(e.fromCssColorString("#ADFF2F"));e.GREY=e.GRAY;e.HONEYDEW=Object.freeze(e.fromCssColorString("#F0FFF0"));e.HOTPINK=Object.freeze(e.fromCssColorString("#FF69B4"));e.INDIANRED=Object.freeze(e.fromCssColorString("#CD5C5C"));e.INDIGO=Object.freeze(e.fromCssColorString("#4B0082"));e.IVORY=Object.freeze(e.fromCssColorString("#FFFFF0"));e.KHAKI=Object.freeze(e.fromCssColorString("#F0E68C"));e.LAVENDER=Object.freeze(e.fromCssColorString("#E6E6FA"));e.LAVENDAR_BLUSH=Object.freeze(e.fromCssColorString("#FFF0F5"));e.LAWNGREEN=Object.freeze(e.fromCssColorString("#7CFC00"));e.LEMONCHIFFON=Object.freeze(e.fromCssColorString("#FFFACD"));e.LIGHTBLUE=Object.freeze(e.fromCssColorString("#ADD8E6"));e.LIGHTCORAL=Object.freeze(e.fromCssColorString("#F08080"));e.LIGHTCYAN=Object.freeze(e.fromCssColorString("#E0FFFF"));e.LIGHTGOLDENRODYELLOW=Object.freeze(e.fromCssColorString("#FAFAD2"));e.LIGHTGRAY=Object.freeze(e.fromCssColorString("#D3D3D3"));e.LIGHTGREEN=Object.freeze(e.fromCssColorString("#90EE90"));e.LIGHTGREY=e.LIGHTGRAY;e.LIGHTPINK=Object.freeze(e.fromCssColorString("#FFB6C1"));e.LIGHTSEAGREEN=Object.freeze(e.fromCssColorString("#20B2AA"));e.LIGHTSKYBLUE=Object.freeze(e.fromCssColorString("#87CEFA"));e.LIGHTSLATEGRAY=Object.freeze(e.fromCssColorString("#778899"));e.LIGHTSLATEGREY=e.LIGHTSLATEGRAY;e.LIGHTSTEELBLUE=Object.freeze(e.fromCssColorString("#B0C4DE"));e.LIGHTYELLOW=Object.freeze(e.fromCssColorString("#FFFFE0"));e.LIME=Object.freeze(e.fromCssColorString("#00FF00"));e.LIMEGREEN=Object.freeze(e.fromCssColorString("#32CD32"));e.LINEN=Object.freeze(e.fromCssColorString("#FAF0E6"));e.MAGENTA=Object.freeze(e.fromCssColorString("#FF00FF"));e.MAROON=Object.freeze(e.fromCssColorString("#800000"));e.MEDIUMAQUAMARINE=Object.freeze(e.fromCssColorString("#66CDAA"));e.MEDIUMBLUE=Object.freeze(e.fromCssColorString("#0000CD"));e.MEDIUMORCHID=Object.freeze(e.fromCssColorString("#BA55D3"));e.MEDIUMPURPLE=Object.freeze(e.fromCssColorString("#9370DB"));e.MEDIUMSEAGREEN=Object.freeze(e.fromCssColorString("#3CB371"));e.MEDIUMSLATEBLUE=Object.freeze(e.fromCssColorString("#7B68EE"));e.MEDIUMSPRINGGREEN=Object.freeze(e.fromCssColorString("#00FA9A"));e.MEDIUMTURQUOISE=Object.freeze(e.fromCssColorString("#48D1CC"));e.MEDIUMVIOLETRED=Object.freeze(e.fromCssColorString("#C71585"));e.MIDNIGHTBLUE=Object.freeze(e.fromCssColorString("#191970"));e.MINTCREAM=Object.freeze(e.fromCssColorString("#F5FFFA"));e.MISTYROSE=Object.freeze(e.fromCssColorString("#FFE4E1"));e.MOCCASIN=Object.freeze(e.fromCssColorString("#FFE4B5"));e.NAVAJOWHITE=Object.freeze(e.fromCssColorString("#FFDEAD"));e.NAVY=Object.freeze(e.fromCssColorString("#000080"));e.OLDLACE=Object.freeze(e.fromCssColorString("#FDF5E6"));e.OLIVE=Object.freeze(e.fromCssColorString("#808000"));e.OLIVEDRAB=Object.freeze(e.fromCssColorString("#6B8E23"));e.ORANGE=Object.freeze(e.fromCssColorString("#FFA500"));e.ORANGERED=Object.freeze(e.fromCssColorString("#FF4500"));e.ORCHID=Object.freeze(e.fromCssColorString("#DA70D6"));e.PALEGOLDENROD=Object.freeze(e.fromCssColorString("#EEE8AA"));e.PALEGREEN=Object.freeze(e.fromCssColorString("#98FB98"));e.PALETURQUOISE=Object.freeze(e.fromCssColorString("#AFEEEE"));e.PALEVIOLETRED=Object.freeze(e.fromCssColorString("#DB7093"));e.PAPAYAWHIP=Object.freeze(e.fromCssColorString("#FFEFD5"));e.PEACHPUFF=Object.freeze(e.fromCssColorString("#FFDAB9"));e.PERU=Object.freeze(e.fromCssColorString("#CD853F"));e.PINK=Object.freeze(e.fromCssColorString("#FFC0CB"));e.PLUM=Object.freeze(e.fromCssColorString("#DDA0DD"));e.POWDERBLUE=Object.freeze(e.fromCssColorString("#B0E0E6"));e.PURPLE=Object.freeze(e.fromCssColorString("#800080"));e.RED=Object.freeze(e.fromCssColorString("#FF0000"));e.ROSYBROWN=Object.freeze(e.fromCssColorString("#BC8F8F"));e.ROYALBLUE=Object.freeze(e.fromCssColorString("#4169E1"));e.SADDLEBROWN=Object.freeze(e.fromCssColorString("#8B4513"));e.SALMON=Object.freeze(e.fromCssColorString("#FA8072"));e.SANDYBROWN=Object.freeze(e.fromCssColorString("#F4A460"));e.SEAGREEN=Object.freeze(e.fromCssColorString("#2E8B57"));e.SEASHELL=Object.freeze(e.fromCssColorString("#FFF5EE"));e.SIENNA=Object.freeze(e.fromCssColorString("#A0522D"));e.SILVER=Object.freeze(e.fromCssColorString("#C0C0C0"));e.SKYBLUE=Object.freeze(e.fromCssColorString("#87CEEB"));e.SLATEBLUE=Object.freeze(e.fromCssColorString("#6A5ACD"));e.SLATEGRAY=Object.freeze(e.fromCssColorString("#708090"));e.SLATEGREY=e.SLATEGRAY;e.SNOW=Object.freeze(e.fromCssColorString("#FFFAFA"));e.SPRINGGREEN=Object.freeze(e.fromCssColorString("#00FF7F"));e.STEELBLUE=Object.freeze(e.fromCssColorString("#4682B4"));e.TAN=Object.freeze(e.fromCssColorString("#D2B48C"));e.TEAL=Object.freeze(e.fromCssColorString("#008080"));e.THISTLE=Object.freeze(e.fromCssColorString("#D8BFD8"));e.TOMATO=Object.freeze(e.fromCssColorString("#FF6347"));e.TURQUOISE=Object.freeze(e.fromCssColorString("#40E0D0"));e.VIOLET=Object.freeze(e.fromCssColorString("#EE82EE"));e.WHEAT=Object.freeze(e.fromCssColorString("#F5DEB3"));e.WHITE=Object.freeze(e.fromCssColorString("#FFFFFF"));e.WHITESMOKE=Object.freeze(e.fromCssColorString("#F5F5F5"));e.YELLOW=Object.freeze(e.fromCssColorString("#FFFF00"));e.YELLOWGREEN=Object.freeze(e.fromCssColorString("#9ACD32"));e.TRANSPARENT=Object.freeze(new e(0,0,0,0));var h=e;export{h as a}; diff --git a/public/Cesium/Workers/chunk-HTFSEEMT.js b/public/Cesium/Workers/chunk-HTFSEEMT.js new file mode 100644 index 000000000..dae287b9c --- /dev/null +++ b/public/Cesium/Workers/chunk-HTFSEEMT.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as l,b as d}from"./chunk-PSPPBZWI.js";import{a as t}from"./chunk-64RSHJUE.js";import{a as s}from"./chunk-3SSKC3VN.js";import{a as f,b as r}from"./chunk-LEYMRMBK.js";import{e as m}from"./chunk-VTAIKJXX.js";function o(e,n){if(r.typeOf.object("normal",e),!s.equalsEpsilon(t.magnitude(e),1,s.EPSILON6))throw new f("normal must be normalized.");r.typeOf.number("distance",n),this.normal=t.clone(e),this.distance=n}o.fromPointNormal=function(e,n,a){if(r.typeOf.object("point",e),r.typeOf.object("normal",n),!s.equalsEpsilon(t.magnitude(n),1,s.EPSILON6))throw new f("normal must be normalized.");let c=-t.dot(n,e);return m(a)?(t.clone(n,a.normal),a.distance=c,a):new o(n,c)};var b=new t;o.fromCartesian4=function(e,n){r.typeOf.object("coefficients",e);let a=t.fromCartesian4(e,b),c=e.w;if(!s.equalsEpsilon(t.magnitude(a),1,s.EPSILON6))throw new f("normal must be normalized.");return m(n)?(t.clone(a,n.normal),n.distance=c,n):new o(a,c)};o.getPointDistance=function(e,n){return r.typeOf.object("plane",e),r.typeOf.object("point",n),t.dot(e.normal,n)+e.distance};var y=new t;o.projectPointOntoPlane=function(e,n,a){r.typeOf.object("plane",e),r.typeOf.object("point",n),m(a)||(a=new t);let c=o.getPointDistance(e,n),p=t.multiplyByScalar(e.normal,c,y);return t.subtract(n,p,a)};var w=new d,j=new l,N=new t;o.transform=function(e,n,a){r.typeOf.object("plane",e),r.typeOf.object("transform",n);let c=e.normal,p=e.distance,u=d.inverseTranspose(n,w),i=l.fromElements(c.x,c.y,c.z,p,j);i=d.multiplyByVector(u,i,i);let O=t.fromCartesian4(i,N);return i=l.divideByScalar(i,t.magnitude(O),i),o.fromCartesian4(i,a)};o.clone=function(e,n){return r.typeOf.object("plane",e),m(n)?(t.clone(e.normal,n.normal),n.distance=e.distance,n):new o(e.normal,e.distance)};o.equals=function(e,n){return r.typeOf.object("left",e),r.typeOf.object("right",n),e.distance===n.distance&&t.equals(e.normal,n.normal)};o.ORIGIN_XY_PLANE=Object.freeze(new o(t.UNIT_Z,0));o.ORIGIN_YZ_PLANE=Object.freeze(new o(t.UNIT_X,0));o.ORIGIN_ZX_PLANE=Object.freeze(new o(t.UNIT_Y,0));var T=o;export{T as a}; diff --git a/public/Cesium/Workers/chunk-HWXX4CWK.js b/public/Cesium/Workers/chunk-HWXX4CWK.js new file mode 100644 index 000000000..b0477b626 --- /dev/null +++ b/public/Cesium/Workers/chunk-HWXX4CWK.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as L}from"./chunk-UP6I5URU.js";import{a as S}from"./chunk-GBYLG25F.js";import{a as D}from"./chunk-OFUUQVMR.js";import{a as H}from"./chunk-A56XVLQR.js";import{b as T,c as B,d as x}from"./chunk-RCV6KWXS.js";import{d as E}from"./chunk-4IW2T6GF.js";import{a as O}from"./chunk-AU7IKHOH.js";import{a as c,d,f as V}from"./chunk-64RSHJUE.js";import{a as w}from"./chunk-3SSKC3VN.js";import{a as A}from"./chunk-LEYMRMBK.js";import{e as a}from"./chunk-VTAIKJXX.js";var q=new c,g=new c;function U(e){let t=e.center;g=c.multiplyByScalar(e.ellipsoid.geodeticSurfaceNormal(t,g),e.height,g),g=c.add(t,g,g);let i=new E(g,e.semiMajorAxis),f=L.computeEllipsePositions(e,!1,!0).outerPositions,o=new H({position:new x({componentDatatype:O.DOUBLE,componentsPerAttribute:3,values:L.raisePositionsToHeight(f,e,!1)})}),r=f.length/3,u=D.createTypedArray(r,r*2),m=0;for(let n=0;n<r;++n)u[m++]=n,u[m++]=(n+1)%r;return{boundingSphere:i,attributes:o,indices:u}}var j=new E,N=new E;function R(e){let t=e.center,i=e.ellipsoid,f=e.semiMajorAxis,o=c.multiplyByScalar(i.geodeticSurfaceNormal(t,q),e.height,q);j.center=c.add(t,o,j.center),j.radius=f,o=c.multiplyByScalar(i.geodeticSurfaceNormal(t,o),e.extrudedHeight,o),N.center=c.add(t,o,N.center),N.radius=f;let r=L.computeEllipsePositions(e,!1,!0).outerPositions,u=new H({position:new x({componentDatatype:O.DOUBLE,componentsPerAttribute:3,values:L.raisePositionsToHeight(r,e,!0)})});r=u.position.values;let m=E.union(j,N),n=r.length/3;if(a(e.offsetAttribute)){let b=new Uint8Array(n);if(e.offsetAttribute===S.TOP)b=b.fill(1,0,n/2);else{let k=e.offsetAttribute===S.NONE?0:1;b=b.fill(k)}u.applyOffset=new x({componentDatatype:O.UNSIGNED_BYTE,componentsPerAttribute:1,values:b})}let l=e.numberOfVerticalLines??16;l=w.clamp(l,0,n/2);let h=D.createTypedArray(n,n*2+l*2);n/=2;let p=0,s;for(s=0;s<n;++s)h[p++]=s,h[p++]=(s+1)%n,h[p++]=s+n,h[p++]=(s+1)%n+n;let P;if(l>0){let b=Math.min(l,n);P=Math.round(n/b);let k=Math.min(P*l,n);for(s=0;s<k;s+=P)h[p++]=s,h[p++]=s+n}return{boundingSphere:m,attributes:u,indices:h}}function M(e){e=e??V.EMPTY_OBJECT;let t=e.center,i=e.ellipsoid??d.default,f=e.semiMajorAxis,o=e.semiMinorAxis,r=e.granularity??w.RADIANS_PER_DEGREE;if(!a(t))throw new A("center is required.");if(!a(f))throw new A("semiMajorAxis is required.");if(!a(o))throw new A("semiMinorAxis is required.");if(f<o)throw new A("semiMajorAxis must be greater than or equal to the semiMinorAxis.");if(r<=0)throw new A("granularity must be greater than zero.");let u=e.height??0,m=e.extrudedHeight??u;this._center=c.clone(t),this._semiMajorAxis=f,this._semiMinorAxis=o,this._ellipsoid=d.clone(i),this._rotation=e.rotation??0,this._height=Math.max(m,u),this._granularity=r,this._extrudedHeight=Math.min(m,u),this._numberOfVerticalLines=Math.max(e.numberOfVerticalLines??16,0),this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipseOutlineGeometry"}M.packedLength=c.packedLength+d.packedLength+8;M.pack=function(e,t,i){if(!a(e))throw new A("value is required");if(!a(t))throw new A("array is required");return i=i??0,c.pack(e._center,t,i),i+=c.packedLength,d.pack(e._ellipsoid,t,i),i+=d.packedLength,t[i++]=e._semiMajorAxis,t[i++]=e._semiMinorAxis,t[i++]=e._rotation,t[i++]=e._height,t[i++]=e._granularity,t[i++]=e._extrudedHeight,t[i++]=e._numberOfVerticalLines,t[i]=e._offsetAttribute??-1,t};var y=new c,C=new d,_={center:y,ellipsoid:C,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,numberOfVerticalLines:void 0,offsetAttribute:void 0};M.unpack=function(e,t,i){if(!a(e))throw new A("array is required");t=t??0;let f=c.unpack(e,t,y);t+=c.packedLength;let o=d.unpack(e,t,C);t+=d.packedLength;let r=e[t++],u=e[t++],m=e[t++],n=e[t++],l=e[t++],h=e[t++],p=e[t++],s=e[t];return a(i)?(i._center=c.clone(f,i._center),i._ellipsoid=d.clone(o,i._ellipsoid),i._semiMajorAxis=r,i._semiMinorAxis=u,i._rotation=m,i._height=n,i._granularity=l,i._extrudedHeight=h,i._numberOfVerticalLines=p,i._offsetAttribute=s===-1?void 0:s,i):(_.height=n,_.extrudedHeight=h,_.granularity=l,_.rotation=m,_.semiMajorAxis=r,_.semiMinorAxis=u,_.numberOfVerticalLines=p,_.offsetAttribute=s===-1?void 0:s,new M(_))};M.createGeometry=function(e){if(e._semiMajorAxis<=0||e._semiMinorAxis<=0)return;let t=e._height,i=e._extrudedHeight,f=!w.equalsEpsilon(t,i,0,w.EPSILON2);e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);let o={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:t,granularity:e._granularity,numberOfVerticalLines:e._numberOfVerticalLines},r;if(f)o.extrudedHeight=i,o.offsetAttribute=e._offsetAttribute,r=R(o);else if(r=U(o),a(e._offsetAttribute)){let u=r.attributes.position.values.length,m=e._offsetAttribute===S.NONE?0:1,n=new Uint8Array(u/3).fill(m);r.attributes.applyOffset=new x({componentDatatype:O.UNSIGNED_BYTE,componentsPerAttribute:1,values:n})}return new B({attributes:r.attributes,indices:r.indices,primitiveType:T.LINES,boundingSphere:r.boundingSphere,offsetAttribute:e._offsetAttribute})};var ie=M;export{ie as a}; diff --git a/public/Cesium/Workers/chunk-IYTZ52EY.js b/public/Cesium/Workers/chunk-IYTZ52EY.js new file mode 100644 index 000000000..482fdf5f9 --- /dev/null +++ b/public/Cesium/Workers/chunk-IYTZ52EY.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as N}from"./chunk-CYCB63OH.js";import{a as Q}from"./chunk-HTFSEEMT.js";import{a as ae}from"./chunk-A56XVLQR.js";import{b as oe,c as re,d as J}from"./chunk-RCV6KWXS.js";import{b as E,d as ie}from"./chunk-4IW2T6GF.js";import{a as C,b as F,f as D}from"./chunk-PSPPBZWI.js";import{a as H}from"./chunk-AU7IKHOH.js";import{a as r,e as G,f as A}from"./chunk-64RSHJUE.js";import{a as O}from"./chunk-3SSKC3VN.js";import{a as w,b}from"./chunk-LEYMRMBK.js";import{e as a}from"./chunk-VTAIKJXX.js";function R(e){this.planes=e??[]}var X=[new r,new r,new r];r.clone(r.UNIT_X,X[0]);r.clone(r.UNIT_Y,X[1]);r.clone(r.UNIT_Z,X[2]);var j=new r,de=new r,fe=new Q(new r(1,0,0),0);R.fromBoundingSphere=function(e,t){if(!a(e))throw new w("boundingSphere is required.");a(t)||(t=new R);let n=X.length,f=t.planes;f.length=2*n;let s=e.center,_=e.radius,p=0;for(let m=0;m<n;++m){let i=X[m],c=f[p],d=f[p+1];a(c)||(c=f[p]=new C),a(d)||(d=f[p+1]=new C),r.multiplyByScalar(i,-_,j),r.add(s,j,j),c.x=i.x,c.y=i.y,c.z=i.z,c.w=-r.dot(i,j),r.multiplyByScalar(i,_,j),r.add(s,j,j),d.x=-i.x,d.y=-i.y,d.z=-i.z,d.w=-r.dot(r.negate(i,de),j),p+=2}return t};R.prototype.computeVisibility=function(e){if(!a(e))throw new w("boundingVolume is required.");let t=this.planes,n=!1;for(let f=0,s=t.length;f<s;++f){let _=e.intersectPlane(Q.fromCartesian4(t[f],fe));if(_===E.OUTSIDE)return E.OUTSIDE;_===E.INTERSECTING&&(n=!0)}return n?E.INTERSECTING:E.INSIDE};R.prototype.computeVisibilityWithPlaneMask=function(e,t){if(!a(e))throw new w("boundingVolume is required.");if(!a(t))throw new w("parentPlaneMask is required.");if(t===R.MASK_OUTSIDE||t===R.MASK_INSIDE)return t;let n=R.MASK_INSIDE,f=this.planes;for(let s=0,_=f.length;s<_;++s){let p=s<31?1<<s:0;if(s<31&&(t&p)===0)continue;let m=e.intersectPlane(Q.fromCartesian4(f[s],fe));if(m===E.OUTSIDE)return R.MASK_OUTSIDE;m===E.INTERSECTING&&(n|=p)}return n};R.MASK_OUTSIDE=4294967295;R.MASK_INSIDE=0;R.MASK_INDETERMINATE=2147483647;var $=R;function M(e){e=e??A.EMPTY_OBJECT,this.left=e.left,this._left=void 0,this.right=e.right,this._right=void 0,this.top=e.top,this._top=void 0,this.bottom=e.bottom,this._bottom=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this._cullingVolume=new $,this._orthographicMatrix=new F}function ce(e){if(!a(e.right)||!a(e.left)||!a(e.top)||!a(e.bottom)||!a(e.near)||!a(e.far))throw new w("right, left, top, bottom, near, or far parameters are not set.");if(e.top!==e._top||e.bottom!==e._bottom||e.left!==e._left||e.right!==e._right||e.near!==e._near||e.far!==e._far){if(e.left>e.right)throw new w("right must be greater than left.");if(e.bottom>e.top)throw new w("top must be greater than bottom.");if(e.near<=0||e.near>e.far)throw new w("near must be greater than zero and less than far.");e._left=e.left,e._right=e.right,e._top=e.top,e._bottom=e.bottom,e._near=e.near,e._far=e.far,e._orthographicMatrix=F.computeOrthographicOffCenter(e.left,e.right,e.bottom,e.top,e.near,e.far,e._orthographicMatrix)}}Object.defineProperties(M.prototype,{projectionMatrix:{get:function(){return ce(this),this._orthographicMatrix}}});var me=new r,ye=new r,ge=new r,ee=new r;M.prototype.computeCullingVolume=function(e,t,n){if(!a(e))throw new w("position is required.");if(!a(t))throw new w("direction is required.");if(!a(n))throw new w("up is required.");let f=this._cullingVolume.planes,s=this.top,_=this.bottom,p=this.right,m=this.left,i=this.near,c=this.far,d=r.cross(t,n,me);r.normalize(d,d);let y=ye;r.multiplyByScalar(t,i,y),r.add(e,y,y);let l=ge;r.multiplyByScalar(d,m,l),r.add(y,l,l);let o=f[0];return a(o)||(o=f[0]=new C),o.x=d.x,o.y=d.y,o.z=d.z,o.w=-r.dot(d,l),r.multiplyByScalar(d,p,l),r.add(y,l,l),o=f[1],a(o)||(o=f[1]=new C),o.x=-d.x,o.y=-d.y,o.z=-d.z,o.w=-r.dot(r.negate(d,ee),l),r.multiplyByScalar(n,_,l),r.add(y,l,l),o=f[2],a(o)||(o=f[2]=new C),o.x=n.x,o.y=n.y,o.z=n.z,o.w=-r.dot(n,l),r.multiplyByScalar(n,s,l),r.add(y,l,l),o=f[3],a(o)||(o=f[3]=new C),o.x=-n.x,o.y=-n.y,o.z=-n.z,o.w=-r.dot(r.negate(n,ee),l),o=f[4],a(o)||(o=f[4]=new C),o.x=t.x,o.y=t.y,o.z=t.z,o.w=-r.dot(t,y),r.multiplyByScalar(t,c,l),r.add(e,l,l),o=f[5],a(o)||(o=f[5]=new C),o.x=-t.x,o.y=-t.y,o.z=-t.z,o.w=-r.dot(r.negate(t,ee),l),this._cullingVolume};M.prototype.getPixelDimensions=function(e,t,n,f,s){if(ce(this),!a(e)||!a(t))throw new w("Both drawingBufferWidth and drawingBufferHeight are required.");if(e<=0)throw new w("drawingBufferWidth must be greater than zero.");if(t<=0)throw new w("drawingBufferHeight must be greater than zero.");if(!a(n))throw new w("distance is required.");if(!a(f))throw new w("pixelRatio is required.");if(f<=0)throw new w("pixelRatio must be greater than zero.");if(!a(s))throw new w("A result object is required.");let _=this.right-this.left,p=this.top-this.bottom,m=f*_/e,i=f*p/t;return s.x=m,s.y=i,s};M.prototype.clone=function(e){return a(e)||(e=new M),e.left=this.left,e.right=this.right,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e._left=void 0,e._right=void 0,e._top=void 0,e._bottom=void 0,e._near=void 0,e._far=void 0,e};M.prototype.equals=function(e){return a(e)&&e instanceof M&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far};M.prototype.equalsEpsilon=function(e,t,n){return e===this||a(e)&&e instanceof M&&O.equalsEpsilon(this.right,e.right,t,n)&&O.equalsEpsilon(this.left,e.left,t,n)&&O.equalsEpsilon(this.top,e.top,t,n)&&O.equalsEpsilon(this.bottom,e.bottom,t,n)&&O.equalsEpsilon(this.near,e.near,t,n)&&O.equalsEpsilon(this.far,e.far,t,n)};var he=M;function x(e){e=e??A.EMPTY_OBJECT,this._offCenterFrustum=new he,this.width=e.width,this._width=void 0,this.aspectRatio=e.aspectRatio,this._aspectRatio=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far}x.packedLength=4;x.pack=function(e,t,n){return b.typeOf.object("value",e),b.defined("array",t),n=n??0,t[n++]=e.width,t[n++]=e.aspectRatio,t[n++]=e.near,t[n]=e.far,t};x.unpack=function(e,t,n){return b.defined("array",e),t=t??0,a(n)||(n=new x),n.width=e[t++],n.aspectRatio=e[t++],n.near=e[t++],n.far=e[t],n};function B(e){if(!a(e.width)||!a(e.aspectRatio)||!a(e.near)||!a(e.far))throw new w("width, aspectRatio, near, or far parameters are not set.");let t=e._offCenterFrustum;if(e.width!==e._width||e.aspectRatio!==e._aspectRatio||e.near!==e._near||e.far!==e._far){if(e.aspectRatio<0)throw new w("aspectRatio must be positive.");if(e.near<0||e.near>e.far)throw new w("near must be greater than zero and less than far.");e._aspectRatio=e.aspectRatio,e._width=e.width,e._near=e.near,e._far=e.far;let n=1/e.aspectRatio;t.right=e.width*.5,t.left=-t.right,t.top=n*t.right,t.bottom=-t.top,t.near=e.near,t.far=e.far}}Object.defineProperties(x.prototype,{projectionMatrix:{get:function(){return B(this),this._offCenterFrustum.projectionMatrix}},offCenterFrustum:{get:function(){return B(this),this._offCenterFrustum}}});x.prototype.computeCullingVolume=function(e,t,n){return B(this),this._offCenterFrustum.computeCullingVolume(e,t,n)};x.prototype.getPixelDimensions=function(e,t,n,f,s){return B(this),this._offCenterFrustum.getPixelDimensions(e,t,n,f,s)};x.prototype.clone=function(e){return a(e)||(e=new x),e.aspectRatio=this.aspectRatio,e.width=this.width,e.near=this.near,e.far=this.far,e._aspectRatio=void 0,e._width=void 0,e._near=void 0,e._far=void 0,this._offCenterFrustum.clone(e._offCenterFrustum),e};x.prototype.equals=function(e){return!a(e)||!(e instanceof x)?!1:(B(this),B(e),this.width===e.width&&this.aspectRatio===e.aspectRatio&&this._offCenterFrustum.equals(e._offCenterFrustum))};x.prototype.equalsEpsilon=function(e,t,n){return!a(e)||!(e instanceof x)?!1:(B(this),B(e),O.equalsEpsilon(this.width,e.width,t,n)&&O.equalsEpsilon(this.aspectRatio,e.aspectRatio,t,n)&&this._offCenterFrustum.equalsEpsilon(e._offCenterFrustum,t,n))};var V=x;function k(e){e=e??A.EMPTY_OBJECT,this.left=e.left,this._left=void 0,this.right=e.right,this._right=void 0,this.top=e.top,this._top=void 0,this.bottom=e.bottom,this._bottom=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this._cullingVolume=new $,this._perspectiveMatrix=new F,this._infinitePerspective=new F}function te(e){if(!a(e.right)||!a(e.left)||!a(e.top)||!a(e.bottom)||!a(e.near)||!a(e.far))throw new w("right, left, top, bottom, near, or far parameters are not set.");let{top:t,bottom:n,right:f,left:s,near:_,far:p}=e;if(t!==e._top||n!==e._bottom||s!==e._left||f!==e._right||_!==e._near||p!==e._far){if(e.near<=0||e.near>e.far)throw new w("near must be greater than zero and less than far.");e._left=s,e._right=f,e._top=t,e._bottom=n,e._near=_,e._far=p,e._perspectiveMatrix=F.computePerspectiveOffCenter(s,f,n,t,_,p,e._perspectiveMatrix),e._infinitePerspective=F.computeInfinitePerspectiveOffCenter(s,f,n,t,_,e._infinitePerspective)}}Object.defineProperties(k.prototype,{projectionMatrix:{get:function(){return te(this),this._perspectiveMatrix}},infiniteProjectionMatrix:{get:function(){return te(this),this._infinitePerspective}}});var Ce=new r,be=new r,Oe=new r,Fe=new r;k.prototype.computeCullingVolume=function(e,t,n){if(!a(e))throw new w("position is required.");if(!a(t))throw new w("direction is required.");if(!a(n))throw new w("up is required.");let f=this._cullingVolume.planes,s=this.top,_=this.bottom,p=this.right,m=this.left,i=this.near,c=this.far,d=r.cross(t,n,Ce),y=be;r.multiplyByScalar(t,i,y),r.add(e,y,y);let l=Oe;r.multiplyByScalar(t,c,l),r.add(e,l,l);let o=Fe;r.multiplyByScalar(d,m,o),r.add(y,o,o),r.subtract(o,e,o),r.normalize(o,o),r.cross(o,n,o),r.normalize(o,o);let h=f[0];return a(h)||(h=f[0]=new C),h.x=o.x,h.y=o.y,h.z=o.z,h.w=-r.dot(o,e),r.multiplyByScalar(d,p,o),r.add(y,o,o),r.subtract(o,e,o),r.cross(n,o,o),r.normalize(o,o),h=f[1],a(h)||(h=f[1]=new C),h.x=o.x,h.y=o.y,h.z=o.z,h.w=-r.dot(o,e),r.multiplyByScalar(n,_,o),r.add(y,o,o),r.subtract(o,e,o),r.cross(d,o,o),r.normalize(o,o),h=f[2],a(h)||(h=f[2]=new C),h.x=o.x,h.y=o.y,h.z=o.z,h.w=-r.dot(o,e),r.multiplyByScalar(n,s,o),r.add(y,o,o),r.subtract(o,e,o),r.cross(o,d,o),r.normalize(o,o),h=f[3],a(h)||(h=f[3]=new C),h.x=o.x,h.y=o.y,h.z=o.z,h.w=-r.dot(o,e),h=f[4],a(h)||(h=f[4]=new C),h.x=t.x,h.y=t.y,h.z=t.z,h.w=-r.dot(t,y),r.negate(t,o),h=f[5],a(h)||(h=f[5]=new C),h.x=o.x,h.y=o.y,h.z=o.z,h.w=-r.dot(o,l),this._cullingVolume};k.prototype.getPixelDimensions=function(e,t,n,f,s){if(te(this),!a(e)||!a(t))throw new w("Both drawingBufferWidth and drawingBufferHeight are required.");if(e<=0)throw new w("drawingBufferWidth must be greater than zero.");if(t<=0)throw new w("drawingBufferHeight must be greater than zero.");if(!a(n))throw new w("distance is required.");if(!a(f))throw new w("pixelRatio is required");if(f<=0)throw new w("pixelRatio must be greater than zero.");if(!a(s))throw new w("A result object is required.");let _=1/this.near,p=this.top*_,m=2*f*n*p/t;p=this.right*_;let i=2*f*n*p/e;return s.x=i,s.y=m,s};k.prototype.clone=function(e){return a(e)||(e=new k),e.right=this.right,e.left=this.left,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e._left=void 0,e._right=void 0,e._top=void 0,e._bottom=void 0,e._near=void 0,e._far=void 0,e};k.prototype.equals=function(e){return a(e)&&e instanceof k&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far};k.prototype.equalsEpsilon=function(e,t,n){return e===this||a(e)&&e instanceof k&&O.equalsEpsilon(this.right,e.right,t,n)&&O.equalsEpsilon(this.left,e.left,t,n)&&O.equalsEpsilon(this.top,e.top,t,n)&&O.equalsEpsilon(this.bottom,e.bottom,t,n)&&O.equalsEpsilon(this.near,e.near,t,n)&&O.equalsEpsilon(this.far,e.far,t,n)};var se=k;function v(e){e=e??A.EMPTY_OBJECT,this._offCenterFrustum=new se,this.fov=e.fov,this._fov=void 0,this._fovy=void 0,this._sseDenominator=void 0,this.aspectRatio=e.aspectRatio,this._aspectRatio=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this.xOffset=e.xOffset??0,this._xOffset=this.xOffset,this.yOffset=e.yOffset??0,this._yOffset=this.yOffset}v.packedLength=6;v.pack=function(e,t,n){return b.typeOf.object("value",e),b.defined("array",t),n=n??0,t[n++]=e.fov,t[n++]=e.aspectRatio,t[n++]=e.near,t[n++]=e.far,t[n++]=e.xOffset,t[n]=e.yOffset,t};v.unpack=function(e,t,n){return b.defined("array",e),t=t??0,a(n)||(n=new v),n.fov=e[t++],n.aspectRatio=e[t++],n.near=e[t++],n.far=e[t++],n.xOffset=e[t++],n.yOffset=e[t],n};function T(e){if(!a(e.fov)||!a(e.aspectRatio)||!a(e.near)||!a(e.far))throw new w("fov, aspectRatio, near, or far parameters are not set.");if(!(e.fov!==e._fov||e.aspectRatio!==e._aspectRatio||e.near!==e._near||e.far!==e._far||e.xOffset!==e._xOffset||e.yOffset!==e._yOffset))return;if(b.typeOf.number.greaterThanOrEquals("fov",e.fov,0),b.typeOf.number.lessThan("fov",e.fov,Math.PI),b.typeOf.number.greaterThanOrEquals("aspectRatio",e.aspectRatio,0),b.typeOf.number.greaterThanOrEquals("near",e.near,0),e.near>e.far)throw new w("near must be less than far.");e._aspectRatio=e.aspectRatio,e._fov=e.fov,e._fovy=e.aspectRatio<=1?e.fov:Math.atan(Math.tan(e.fov*.5)/e.aspectRatio)*2,e._near=e.near,e._far=e.far,e._sseDenominator=2*Math.tan(.5*e._fovy),e._xOffset=e.xOffset,e._yOffset=e.yOffset;let n=e._offCenterFrustum;n.top=e.near*Math.tan(.5*e._fovy),n.bottom=-n.top,n.right=e.aspectRatio*n.top,n.left=-n.right,n.near=e.near,n.far=e.far,n.right+=e.xOffset,n.left+=e.xOffset,n.top+=e.yOffset,n.bottom+=e.yOffset}Object.defineProperties(v.prototype,{projectionMatrix:{get:function(){return T(this),this._offCenterFrustum.projectionMatrix}},infiniteProjectionMatrix:{get:function(){return T(this),this._offCenterFrustum.infiniteProjectionMatrix}},fovy:{get:function(){return T(this),this._fovy}},sseDenominator:{get:function(){return T(this),this._sseDenominator}},offCenterFrustum:{get:function(){return T(this),this._offCenterFrustum}}});v.prototype.computeCullingVolume=function(e,t,n){return T(this),this._offCenterFrustum.computeCullingVolume(e,t,n)};v.prototype.getPixelDimensions=function(e,t,n,f,s){return T(this),this._offCenterFrustum.getPixelDimensions(e,t,n,f,s)};v.prototype.clone=function(e){return a(e)||(e=new v),e.aspectRatio=this.aspectRatio,e.fov=this.fov,e.near=this.near,e.far=this.far,e._aspectRatio=void 0,e._fov=void 0,e._near=void 0,e._far=void 0,this._offCenterFrustum.clone(e._offCenterFrustum),e};v.prototype.equals=function(e){return!a(e)||!(e instanceof v)?!1:(T(this),T(e),this.fov===e.fov&&this.aspectRatio===e.aspectRatio&&this._offCenterFrustum.equals(e._offCenterFrustum))};v.prototype.equalsEpsilon=function(e,t,n){return!a(e)||!(e instanceof v)?!1:(T(this),T(e),O.equalsEpsilon(this.fov,e.fov,t,n)&&O.equalsEpsilon(this.aspectRatio,e.aspectRatio,t,n)&&this._offCenterFrustum.equalsEpsilon(e._offCenterFrustum,t,n))};var L=v;var I=0,Pe=1;function u(e){b.typeOf.object("options",e),b.typeOf.object("options.frustum",e.frustum),b.typeOf.object("options.origin",e.origin),b.typeOf.object("options.orientation",e.orientation);let t=e.frustum,n=e.orientation,f=e.origin,s=e.vertexFormat??N.DEFAULT,_=e._drawNearPlane??!0,p,m;t instanceof L?(p=I,m=L.packedLength):t instanceof V&&(p=Pe,m=V.packedLength),this._frustumType=p,this._frustum=t.clone(),this._origin=r.clone(f),this._orientation=D.clone(n),this._drawNearPlane=_,this._vertexFormat=s,this._workerName="createFrustumGeometry",this.packedLength=2+m+r.packedLength+D.packedLength+N.packedLength}u.pack=function(e,t,n){b.typeOf.object("value",e),b.defined("array",t),n=n??0;let f=e._frustumType,s=e._frustum;return t[n++]=f,f===I?(L.pack(s,t,n),n+=L.packedLength):(V.pack(s,t,n),n+=V.packedLength),r.pack(e._origin,t,n),n+=r.packedLength,D.pack(e._orientation,t,n),n+=D.packedLength,N.pack(e._vertexFormat,t,n),n+=N.packedLength,t[n]=e._drawNearPlane?1:0,t};var ze=new L,xe=new V,ve=new D,Re=new r,Te=new N;u.unpack=function(e,t,n){b.defined("array",e),t=t??0;let f=e[t++],s;f===I?(s=L.unpack(e,t,ze),t+=L.packedLength):(s=V.unpack(e,t,xe),t+=V.packedLength);let _=r.unpack(e,t,Re);t+=r.packedLength;let p=D.unpack(e,t,ve);t+=D.packedLength;let m=N.unpack(e,t,Te);t+=N.packedLength;let i=e[t]===1;if(!a(n))return new u({frustum:s,origin:_,orientation:p,vertexFormat:m,_drawNearPlane:i});let c=f===n._frustumType?n._frustum:void 0;return n._frustum=s.clone(c),n._frustumType=f,n._origin=r.clone(_,n._origin),n._orientation=D.clone(p,n._orientation),n._vertexFormat=N.clone(m,n._vertexFormat),n._drawNearPlane=i,n};function W(e,t,n,f,s,_,p,m){let i=e/3*2;for(let c=0;c<4;++c)a(t)&&(t[e]=_.x,t[e+1]=_.y,t[e+2]=_.z),a(n)&&(n[e]=p.x,n[e+1]=p.y,n[e+2]=p.z),a(f)&&(f[e]=m.x,f[e+1]=m.y,f[e+2]=m.z),e+=3;s[i]=0,s[i+1]=0,s[i+2]=1,s[i+3]=0,s[i+4]=1,s[i+5]=1,s[i+6]=0,s[i+7]=1}var qe=new G,Me=new F,ne=new F,pe=new r,le=new r,we=new r,ke=new r,Se=new r,De=new r,U=new Array(3),Z=new Array(4);Z[0]=new C(-1,-1,1,1);Z[1]=new C(1,-1,1,1);Z[2]=new C(1,1,1,1);Z[3]=new C(-1,1,1,1);var _e=new Array(4);for(let e=0;e<4;++e)_e[e]=new C;u._computeNearFarPlanes=function(e,t,n,f,s,_,p,m){let i=G.fromQuaternion(t,qe),c=_??pe,d=p??le,y=m??we;c=G.getColumn(i,0,c),d=G.getColumn(i,1,d),y=G.getColumn(i,2,y),r.normalize(c,c),r.normalize(d,d),r.normalize(y,y),r.negate(c,c);let l=F.computeView(e,y,d,c,Me),o,h,q=f.projectionMatrix;if(n===I){let P=F.multiply(q,l,ne);h=F.inverse(P,ne)}else o=F.inverseTransformation(l,ne);a(h)?(U[0]=f.near,U[1]=f.far):(U[0]=0,U[1]=f.near,U[2]=f.far);for(let P=0;P<2;++P)for(let z=0;z<4;++z){let g=C.clone(Z[z],_e[z]);if(a(h)){g=F.multiplyByVector(h,g,g);let S=1/g.w;r.multiplyByScalar(g,S,g),r.subtract(g,e,g),r.normalize(g,g);let Y=r.dot(y,g);r.multiplyByScalar(g,U[P]/Y,g),r.add(g,e,g)}else{let S=f.offCenterFrustum;a(S)&&(f=S);let Y=U[P],K=U[P+1];g.x=(g.x*(f.right-f.left)+f.left+f.right)*.5,g.y=(g.y*(f.top-f.bottom)+f.bottom+f.top)*.5,g.z=(g.z*(Y-K)-Y-K)*.5,g.w=1,F.multiplyByVector(o,g,g)}s[12*P+z*3]=g.x,s[12*P+z*3+1]=g.y,s[12*P+z*3+2]=g.z}};u.createGeometry=function(e){let t=e._frustumType,n=e._frustum,f=e._origin,s=e._orientation,_=e._drawNearPlane,p=e._vertexFormat,m=_?6:5,i=new Float64Array(72);u._computeNearFarPlanes(f,s,t,n,i);let c=24;i[c]=i[12],i[c+1]=i[13],i[c+2]=i[14],i[c+3]=i[0],i[c+4]=i[1],i[c+5]=i[2],i[c+6]=i[9],i[c+7]=i[10],i[c+8]=i[11],i[c+9]=i[21],i[c+10]=i[22],i[c+11]=i[23],c+=12,i[c]=i[15],i[c+1]=i[16],i[c+2]=i[17],i[c+3]=i[3],i[c+4]=i[4],i[c+5]=i[5],i[c+6]=i[0],i[c+7]=i[1],i[c+8]=i[2],i[c+9]=i[12],i[c+10]=i[13],i[c+11]=i[14],c+=12,i[c]=i[3],i[c+1]=i[4],i[c+2]=i[5],i[c+3]=i[15],i[c+4]=i[16],i[c+5]=i[17],i[c+6]=i[18],i[c+7]=i[19],i[c+8]=i[20],i[c+9]=i[6],i[c+10]=i[7],i[c+11]=i[8],c+=12,i[c]=i[6],i[c+1]=i[7],i[c+2]=i[8],i[c+3]=i[18],i[c+4]=i[19],i[c+5]=i[20],i[c+6]=i[21],i[c+7]=i[22],i[c+8]=i[23],i[c+9]=i[9],i[c+10]=i[10],i[c+11]=i[11],_||(i=i.subarray(12));let d=new ae({position:new J({componentDatatype:H.DOUBLE,componentsPerAttribute:3,values:i})});if(a(p.normal)||a(p.tangent)||a(p.bitangent)||a(p.st)){let l=a(p.normal)?new Float32Array(12*m):void 0,o=a(p.tangent)?new Float32Array(12*m):void 0,h=a(p.bitangent)?new Float32Array(12*m):void 0,q=a(p.st)?new Float32Array(8*m):void 0,P=pe,z=le,g=we,S=r.negate(P,ke),Y=r.negate(z,Se),K=r.negate(g,De);c=0,_&&(W(c,l,o,h,q,K,P,z),c+=12),W(c,l,o,h,q,g,S,z),c+=12,W(c,l,o,h,q,S,K,z),c+=12,W(c,l,o,h,q,Y,K,S),c+=12,W(c,l,o,h,q,P,g,z),c+=12,W(c,l,o,h,q,z,g,S),a(l)&&(d.normal=new J({componentDatatype:H.FLOAT,componentsPerAttribute:3,values:l})),a(o)&&(d.tangent=new J({componentDatatype:H.FLOAT,componentsPerAttribute:3,values:o})),a(h)&&(d.bitangent=new J({componentDatatype:H.FLOAT,componentsPerAttribute:3,values:h})),a(q)&&(d.st=new J({componentDatatype:H.FLOAT,componentsPerAttribute:2,values:q}))}let y=new Uint16Array(6*m);for(let l=0;l<m;++l){let o=l*6,h=l*4;y[o]=h,y[o+1]=h+1,y[o+2]=h+2,y[o+3]=h,y[o+4]=h+2,y[o+5]=h+3}return new re({attributes:d,indices:y,primitiveType:oe.TRIANGLES,boundingSphere:ie.fromVertices(i)})};var Et=u;export{V as a,L as b,Et as c}; diff --git a/public/Cesium/Workers/chunk-J6UP6FLE.js b/public/Cesium/Workers/chunk-J6UP6FLE.js new file mode 100644 index 000000000..ef7393eea --- /dev/null +++ b/public/Cesium/Workers/chunk-J6UP6FLE.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +var e={NONE:0,GEODESIC:1,RHUMB:2},t=Object.freeze(e);export{t as a}; diff --git a/public/Cesium/Workers/chunk-LEYMRMBK.js b/public/Cesium/Workers/chunk-LEYMRMBK.js new file mode 100644 index 000000000..9701ddb10 --- /dev/null +++ b/public/Cesium/Workers/chunk-LEYMRMBK.js @@ -0,0 +1,27 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{e as u}from"./chunk-VTAIKJXX.js";function f(t){this.name="DeveloperError",this.message=t;let e;try{throw new Error}catch(o){e=o.stack}this.stack=e}u(Object.create)&&(f.prototype=Object.create(Error.prototype),f.prototype.constructor=f);f.prototype.toString=function(){let t=`${this.name}: ${this.message}`;return u(this.stack)&&(t+=` +${this.stack.toString()}`),t};f.throwInstantiationError=function(){throw new f("This function defines an interface and should not be called directly.")};var r=f;var n={};n.typeOf={};function c(t){return`${t} is required, actual value was undefined`}function a(t,e,o){return`Expected ${o} to be typeof ${e}, actual typeof was ${t}`}n.defined=function(t,e){if(!u(e))throw new r(c(t))};n.typeOf.func=function(t,e){if(typeof e!="function")throw new r(a(typeof e,"function",t))};n.typeOf.string=function(t,e){if(typeof e!="string")throw new r(a(typeof e,"string",t))};n.typeOf.number=function(t,e){if(typeof e!="number")throw new r(a(typeof e,"number",t))};n.typeOf.number.lessThan=function(t,e,o){if(n.typeOf.number(t,e),e>=o)throw new r(`Expected ${t} to be less than ${o}, actual value was ${e}`)};n.typeOf.number.lessThanOrEquals=function(t,e,o){if(n.typeOf.number(t,e),e>o)throw new r(`Expected ${t} to be less than or equal to ${o}, actual value was ${e}`)};n.typeOf.number.greaterThan=function(t,e,o){if(n.typeOf.number(t,e),e<=o)throw new r(`Expected ${t} to be greater than ${o}, actual value was ${e}`)};n.typeOf.number.greaterThanOrEquals=function(t,e,o){if(n.typeOf.number(t,e),e<o)throw new r(`Expected ${t} to be greater than or equal to ${o}, actual value was ${e}`)};n.typeOf.object=function(t,e){if(typeof e!="object")throw new r(a(typeof e,"object",t))};n.typeOf.bool=function(t,e){if(typeof e!="boolean")throw new r(a(typeof e,"boolean",t))};n.typeOf.bigint=function(t,e){if(typeof e!="bigint")throw new r(a(typeof e,"bigint",t))};n.typeOf.number.equals=function(t,e,o,i){if(n.typeOf.number(t,o),n.typeOf.number(e,i),o!==i)throw new r(`${t} must be equal to ${e}, the actual values are ${o} and ${i}`)};var l=n;export{r as a,l as b}; diff --git a/public/Cesium/Workers/chunk-M3MGYQSL.js b/public/Cesium/Workers/chunk-M3MGYQSL.js new file mode 100644 index 000000000..f15c09de2 --- /dev/null +++ b/public/Cesium/Workers/chunk-M3MGYQSL.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +var r,u=typeof TextDecoder<"u"?new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}):{decode:()=>{throw Error("TextDecoder not available")}};typeof TextDecoder<"u"&&u.decode();var a=null;function h(){return(a===null||a.byteLength===0)&&(a=new Uint8Array(r.memory.buffer)),a}function b(e,t){return e=e>>>0,u.decode(h().subarray(e,e+t))}var o=null;function g(){return(o===null||o.byteLength===0)&&(o=new Uint32Array(r.memory.buffer)),o}function m(e,t){return e=e>>>0,g().subarray(e/4,e/4+t)}var y=0;function x(e,t){let n=t(e.length*4,4)>>>0;return g().set(e,n/4),y=e.length,n}function c(e){let t=r.__wbindgen_export_0.get(e);return r.__externref_table_dealloc(e),t}function U(e,t,n,i,_){let s=r.generate_splat_texture(e,t,n,i,_);if(s[2])throw c(s[1]);return f.__wrap(s[0])}function M(e,t,n){let i=r.radix_sort_gaussians_indexes(e,t,n);if(i[2])throw c(i[1]);return c(i[0])}var w=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(e=>r.__wbg_texturedata_free(e>>>0,1)),f=class e{static __wrap(t){t=t>>>0;let n=Object.create(e.prototype);return n.__wbg_ptr=t,w.register(n,n.__wbg_ptr,n),n}__destroy_into_raw(){let t=this.__wbg_ptr;return this.__wbg_ptr=0,w.unregister(this),t}free(){let t=this.__destroy_into_raw();r.__wbg_texturedata_free(t,0)}get data(){let t=r.texturedata_data(this.__wbg_ptr);var n=m(t[0],t[1]).slice();return r.__wbindgen_free(t[0],t[1]*4,4),n}get width(){return r.texturedata_width(this.__wbg_ptr)>>>0}get height(){return r.texturedata_height(this.__wbg_ptr)>>>0}static new(t,n,i){let _=x(t,r.__wbindgen_malloc),s=y,p=r.texturedata_new(_,s,n,i);return e.__wrap(p)}};async function A(e,t){if(typeof Response=="function"&&e instanceof Response){if(typeof WebAssembly.instantiateStreaming=="function")try{return await WebAssembly.instantiateStreaming(e,t)}catch(i){if(e.headers.get("Content-Type")!="application/wasm")console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",i);else throw i}let n=await e.arrayBuffer();return await WebAssembly.instantiate(n,t)}else{let n=await WebAssembly.instantiate(e,t);return n instanceof WebAssembly.Instance?{instance:n,module:e}:n}}function d(){let e={};return e.wbg={},e.wbg.__wbg_buffer_609cc3eee51ed158=function(t){return t.buffer},e.wbg.__wbg_length_3b4f022188ae8db6=function(t){return t.length},e.wbg.__wbg_length_a446193dc22c12f8=function(t){return t.length},e.wbg.__wbg_new_780abee5c1739fd7=function(t){return new Float32Array(t)},e.wbg.__wbg_new_a12002a7f91c75be=function(t){return new Uint8Array(t)},e.wbg.__wbg_new_e3b321dcfef89fc7=function(t){return new Uint32Array(t)},e.wbg.__wbg_newwithbyteoffsetandlength_f1dead44d1fc7212=function(t,n,i){return new Uint32Array(t,n>>>0,i>>>0)},e.wbg.__wbg_set_10bad9bee0e9c58b=function(t,n,i){t.set(n,i>>>0)},e.wbg.__wbg_set_65595bdd868b3009=function(t,n,i){t.set(n,i>>>0)},e.wbg.__wbindgen_init_externref_table=function(){let t=r.__wbindgen_export_0,n=t.grow(4);t.set(0,void 0),t.set(n+0,void 0),t.set(n+1,null),t.set(n+2,!0),t.set(n+3,!1)},e.wbg.__wbindgen_memory=function(){return r.memory},e.wbg.__wbindgen_string_new=function(t,n){return b(t,n)},e.wbg.__wbindgen_throw=function(t,n){throw new Error(b(t,n))},e}function l(e,t){return r=e.exports,W.__wbindgen_wasm_module=t,o=null,a=null,r.__wbindgen_start(),r}function O(e){if(r!==void 0)return r;typeof e<"u"&&(Object.getPrototypeOf(e)===Object.prototype?{module:e}=e:console.warn("using deprecated parameters for `initSync()`; pass a single object instead"));let t=d();e instanceof WebAssembly.Module||(e=new WebAssembly.Module(e));let n=new WebAssembly.Instance(e,t);return l(n,e)}async function W(e){if(r!==void 0)return r;typeof e<"u"&&(Object.getPrototypeOf(e)===Object.prototype?{module_or_path:e}=e:console.warn("using deprecated parameters for the initialization function; pass a single object instead")),typeof e>"u"&&(e=new URL("wasm_splats_bg.wasm",import.meta.url));let t=d();(typeof e=="string"||typeof Request=="function"&&e instanceof Request||typeof URL=="function"&&e instanceof URL)&&(e=fetch(e));let{instance:n,module:i}=await A(await e,t);return l(n,i)}export{U as a,M as b,O as c}; diff --git a/public/Cesium/Workers/chunk-N4VJKXZS.js b/public/Cesium/Workers/chunk-N4VJKXZS.js new file mode 100644 index 000000000..875930a12 --- /dev/null +++ b/public/Cesium/Workers/chunk-N4VJKXZS.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{b as d}from"./chunk-4IW2T6GF.js";import{a as i}from"./chunk-64RSHJUE.js";import{b as r}from"./chunk-LEYMRMBK.js";import{e as c}from"./chunk-VTAIKJXX.js";function t(m,n,e){this.minimum=i.clone(m??i.ZERO),this.maximum=i.clone(n??i.ZERO),c(e)?e=i.clone(e):e=i.midpoint(this.minimum,this.maximum,new i),this.center=e}t.fromCorners=function(m,n,e){return r.defined("minimum",m),r.defined("maximum",n),c(e)||(e=new t),e.minimum=i.clone(m,e.minimum),e.maximum=i.clone(n,e.maximum),e.center=i.midpoint(m,n,e.center),e};t.fromPoints=function(m,n){if(c(n)||(n=new t),!c(m)||m.length===0)return n.minimum=i.clone(i.ZERO,n.minimum),n.maximum=i.clone(i.ZERO,n.maximum),n.center=i.clone(i.ZERO,n.center),n;let e=m[0].x,a=m[0].y,u=m[0].z,o=m[0].x,y=m[0].y,l=m[0].z,q=m.length;for(let E=1;E<q;E++){let M=m[E],z=M.x,Z=M.y,p=M.z;e=Math.min(z,e),o=Math.max(z,o),a=Math.min(Z,a),y=Math.max(Z,y),u=Math.min(p,u),l=Math.max(p,l)}let f=n.minimum;f.x=e,f.y=a,f.z=u;let x=n.maximum;return x.x=o,x.y=y,x.z=l,n.center=i.midpoint(f,x,n.center),n};t.clone=function(m,n){if(c(m))return c(n)?(n.minimum=i.clone(m.minimum,n.minimum),n.maximum=i.clone(m.maximum,n.maximum),n.center=i.clone(m.center,n.center),n):new t(m.minimum,m.maximum,m.center)};t.equals=function(m,n){return m===n||c(m)&&c(n)&&i.equals(m.center,n.center)&&i.equals(m.minimum,n.minimum)&&i.equals(m.maximum,n.maximum)};var h=new i;t.intersectPlane=function(m,n){r.defined("box",m),r.defined("plane",n),h=i.subtract(m.maximum,m.minimum,h);let e=i.multiplyByScalar(h,.5,h),a=n.normal,u=e.x*Math.abs(a.x)+e.y*Math.abs(a.y)+e.z*Math.abs(a.z),o=i.dot(m.center,a)+n.distance;return o-u>0?d.INSIDE:o+u<0?d.OUTSIDE:d.INTERSECTING};t.prototype.clone=function(m){return t.clone(this,m)};t.prototype.intersectPlane=function(m){return t.intersectPlane(this,m)};t.prototype.equals=function(m){return t.equals(this,m)};var S=t;export{S as a}; diff --git a/public/Cesium/Workers/chunk-NB3ML6JO.js b/public/Cesium/Workers/chunk-NB3ML6JO.js new file mode 100644 index 000000000..550a03086 --- /dev/null +++ b/public/Cesium/Workers/chunk-NB3ML6JO.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as C}from"./chunk-XRL4AVS5.js";import{a as P}from"./chunk-3W4GT7KQ.js";import{a as O,b as L}from"./chunk-64RSHJUE.js";import{a as y}from"./chunk-3SSKC3VN.js";import{e as S}from"./chunk-VTAIKJXX.js";var T={};function b(a,e){return y.equalsEpsilon(a.latitude,e.latitude,y.EPSILON10)&&y.equalsEpsilon(a.longitude,e.longitude,y.EPSILON10)}var q=new L,v=new L;function w(a,e,i,h){e=P(e,O.equalsEpsilon);let p=e.length;if(p<2)return;let E=S(h),u=S(i),l=new Array(p),g=new Array(p),r=new Array(p),d=e[0];l[0]=d;let f=a.cartesianToCartographic(d,q);u&&(f.height=i[0]),g[0]=f.height,E?r[0]=h[0]:r[0]=0;let o=g[0],m=r[0],t=o===m,n=1;for(let c=1;c<p;++c){let A=e[c],s=a.cartesianToCartographic(A,v);u&&(s.height=i[c]),t=t&&s.height===0,b(f,s)?f.height<s.height&&(g[n-1]=s.height):(l[n]=A,g[n]=s.height,E?r[n]=h[c]:r[n]=0,t=t&&g[n]===r[n],L.clone(s,f),++n)}if(!(t||n<2))return l.length=n,g.length=n,r.length=n,{positions:l,topHeights:g,bottomHeights:r}}var D=new Array(2),F=new Array(2),B={positions:void 0,height:void 0,granularity:void 0,ellipsoid:void 0};T.computePositions=function(a,e,i,h,p,E){let u=w(a,e,i,h);if(!S(u))return;e=u.positions,i=u.topHeights,h=u.bottomHeights;let l=e.length,g=l-2,r,d,f=y.chordLength(p,a.maximumRadius),o=B;if(o.minDistance=f,o.ellipsoid=a,E){let m=0,t;for(t=0;t<l-1;t++)m+=C.numberOfPoints(e[t],e[t+1],f)+1;r=new Float64Array(m*3),d=new Float64Array(m*3);let n=D,c=F;o.positions=n,o.height=c;let A=0;for(t=0;t<l-1;t++){n[0]=e[t],n[1]=e[t+1],c[0]=i[t],c[1]=i[t+1];let s=C.generateArc(o);r.set(s,A),c[0]=h[t],c[1]=h[t+1],d.set(C.generateArc(o),A),A+=s.length}}else o.positions=e,o.height=i,r=new Float64Array(C.generateArc(o)),o.height=h,d=new Float64Array(C.generateArc(o));return{bottomPositions:d,topPositions:r,numCorners:g}};var j=T;export{j as a}; diff --git a/public/Cesium/Workers/chunk-OFUUQVMR.js b/public/Cesium/Workers/chunk-OFUUQVMR.js new file mode 100644 index 000000000..d88b7e276 --- /dev/null +++ b/public/Cesium/Workers/chunk-OFUUQVMR.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a}from"./chunk-3SSKC3VN.js";import{a as N}from"./chunk-OSW76XDF.js";import{a as t}from"./chunk-LEYMRMBK.js";import{e as i}from"./chunk-VTAIKJXX.js";var r={UNSIGNED_BYTE:N.UNSIGNED_BYTE,UNSIGNED_SHORT:N.UNSIGNED_SHORT,UNSIGNED_INT:N.UNSIGNED_INT};r.getSizeInBytes=function(e){switch(e){case r.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case r.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case r.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}throw new t("indexDatatype is required and must be a valid IndexDatatype constant.")};r.fromSizeInBytes=function(e){switch(e){case 2:return r.UNSIGNED_SHORT;case 4:return r.UNSIGNED_INT;case 1:return r.UNSIGNED_BYTE;default:throw new t("Size in bytes cannot be mapped to an IndexDatatype")}};r.validate=function(e){return i(e)&&(e===r.UNSIGNED_BYTE||e===r.UNSIGNED_SHORT||e===r.UNSIGNED_INT)};r.createTypedArray=function(e,n){if(!i(e))throw new t("numberOfVertices is required.");return e>=a.SIXTY_FOUR_KILOBYTES?new Uint32Array(n):new Uint16Array(n)};r.createTypedArrayFromArrayBuffer=function(e,n,E,o){if(!i(e))throw new t("numberOfVertices is required.");if(!i(n))throw new t("sourceArray is required.");if(!i(E))throw new t("byteOffset is required.");return e>=a.SIXTY_FOUR_KILOBYTES?new Uint32Array(n,E,o):new Uint16Array(n,E,o)};r.fromTypedArray=function(e){if(e instanceof Uint8Array)return r.UNSIGNED_BYTE;if(e instanceof Uint16Array)return r.UNSIGNED_SHORT;if(e instanceof Uint32Array)return r.UNSIGNED_INT;throw new t("array must be a Uint8Array, Uint16Array, or Uint32Array.")};var u=Object.freeze(r);export{u as a}; diff --git a/public/Cesium/Workers/chunk-OSW76XDF.js b/public/Cesium/Workers/chunk-OSW76XDF.js new file mode 100644 index 000000000..547bf3e76 --- /dev/null +++ b/public/Cesium/Workers/chunk-OSW76XDF.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +var E={DEPTH_BUFFER_BIT:256,STENCIL_BUFFER_BIT:1024,COLOR_BUFFER_BIT:16384,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,ZERO:0,ONE:1,SRC_COLOR:768,ONE_MINUS_SRC_COLOR:769,SRC_ALPHA:770,ONE_MINUS_SRC_ALPHA:771,DST_ALPHA:772,ONE_MINUS_DST_ALPHA:773,DST_COLOR:774,ONE_MINUS_DST_COLOR:775,SRC_ALPHA_SATURATE:776,FUNC_ADD:32774,BLEND_EQUATION:32777,BLEND_EQUATION_RGB:32777,BLEND_EQUATION_ALPHA:34877,FUNC_SUBTRACT:32778,FUNC_REVERSE_SUBTRACT:32779,BLEND_DST_RGB:32968,BLEND_SRC_RGB:32969,BLEND_DST_ALPHA:32970,BLEND_SRC_ALPHA:32971,CONSTANT_COLOR:32769,ONE_MINUS_CONSTANT_COLOR:32770,CONSTANT_ALPHA:32771,ONE_MINUS_CONSTANT_ALPHA:32772,BLEND_COLOR:32773,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,ARRAY_BUFFER_BINDING:34964,ELEMENT_ARRAY_BUFFER_BINDING:34965,STREAM_DRAW:35040,STATIC_DRAW:35044,DYNAMIC_DRAW:35048,BUFFER_SIZE:34660,BUFFER_USAGE:34661,CURRENT_VERTEX_ATTRIB:34342,FRONT:1028,BACK:1029,FRONT_AND_BACK:1032,CULL_FACE:2884,BLEND:3042,DITHER:3024,STENCIL_TEST:2960,DEPTH_TEST:2929,SCISSOR_TEST:3089,POLYGON_OFFSET_FILL:32823,SAMPLE_ALPHA_TO_COVERAGE:32926,SAMPLE_COVERAGE:32928,NO_ERROR:0,INVALID_ENUM:1280,INVALID_VALUE:1281,INVALID_OPERATION:1282,OUT_OF_MEMORY:1285,CW:2304,CCW:2305,LINE_WIDTH:2849,ALIASED_POINT_SIZE_RANGE:33901,ALIASED_LINE_WIDTH_RANGE:33902,CULL_FACE_MODE:2885,FRONT_FACE:2886,DEPTH_RANGE:2928,DEPTH_WRITEMASK:2930,DEPTH_CLEAR_VALUE:2931,DEPTH_FUNC:2932,STENCIL_CLEAR_VALUE:2961,STENCIL_FUNC:2962,STENCIL_FAIL:2964,STENCIL_PASS_DEPTH_FAIL:2965,STENCIL_PASS_DEPTH_PASS:2966,STENCIL_REF:2967,STENCIL_VALUE_MASK:2963,STENCIL_WRITEMASK:2968,STENCIL_BACK_FUNC:34816,STENCIL_BACK_FAIL:34817,STENCIL_BACK_PASS_DEPTH_FAIL:34818,STENCIL_BACK_PASS_DEPTH_PASS:34819,STENCIL_BACK_REF:36003,STENCIL_BACK_VALUE_MASK:36004,STENCIL_BACK_WRITEMASK:36005,VIEWPORT:2978,SCISSOR_BOX:3088,COLOR_CLEAR_VALUE:3106,COLOR_WRITEMASK:3107,UNPACK_ALIGNMENT:3317,PACK_ALIGNMENT:3333,MAX_TEXTURE_SIZE:3379,MAX_VIEWPORT_DIMS:3386,SUBPIXEL_BITS:3408,RED_BITS:3410,GREEN_BITS:3411,BLUE_BITS:3412,ALPHA_BITS:3413,DEPTH_BITS:3414,STENCIL_BITS:3415,POLYGON_OFFSET_UNITS:10752,POLYGON_OFFSET_FACTOR:32824,TEXTURE_BINDING_2D:32873,SAMPLE_BUFFERS:32936,SAMPLES:32937,SAMPLE_COVERAGE_VALUE:32938,SAMPLE_COVERAGE_INVERT:32939,COMPRESSED_TEXTURE_FORMATS:34467,DONT_CARE:4352,FASTEST:4353,NICEST:4354,GENERATE_MIPMAP_HINT:33170,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DEPTH_COMPONENT:6402,ALPHA:6406,RGB:6407,RGBA:6408,LUMINANCE:6409,LUMINANCE_ALPHA:6410,UNSIGNED_SHORT_4_4_4_4:32819,UNSIGNED_SHORT_5_5_5_1:32820,UNSIGNED_SHORT_5_6_5:33635,FRAGMENT_SHADER:35632,VERTEX_SHADER:35633,MAX_VERTEX_ATTRIBS:34921,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VARYING_VECTORS:36348,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_FRAGMENT_UNIFORM_VECTORS:36349,SHADER_TYPE:35663,DELETE_STATUS:35712,LINK_STATUS:35714,VALIDATE_STATUS:35715,ATTACHED_SHADERS:35717,ACTIVE_UNIFORMS:35718,ACTIVE_ATTRIBUTES:35721,SHADING_LANGUAGE_VERSION:35724,CURRENT_PROGRAM:35725,NEVER:512,LESS:513,EQUAL:514,LEQUAL:515,GREATER:516,NOTEQUAL:517,GEQUAL:518,ALWAYS:519,KEEP:7680,REPLACE:7681,INCR:7682,DECR:7683,INVERT:5386,INCR_WRAP:34055,DECR_WRAP:34056,VENDOR:7936,RENDERER:7937,VERSION:7938,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,TEXTURE_2D:3553,TEXTURE:5890,TEXTURE_CUBE_MAP:34067,TEXTURE_BINDING_CUBE_MAP:34068,TEXTURE_CUBE_MAP_POSITIVE_X:34069,TEXTURE_CUBE_MAP_NEGATIVE_X:34070,TEXTURE_CUBE_MAP_POSITIVE_Y:34071,TEXTURE_CUBE_MAP_NEGATIVE_Y:34072,TEXTURE_CUBE_MAP_POSITIVE_Z:34073,TEXTURE_CUBE_MAP_NEGATIVE_Z:34074,MAX_CUBE_MAP_TEXTURE_SIZE:34076,TEXTURE0:33984,TEXTURE1:33985,TEXTURE2:33986,TEXTURE3:33987,TEXTURE4:33988,TEXTURE5:33989,TEXTURE6:33990,TEXTURE7:33991,TEXTURE8:33992,TEXTURE9:33993,TEXTURE10:33994,TEXTURE11:33995,TEXTURE12:33996,TEXTURE13:33997,TEXTURE14:33998,TEXTURE15:33999,TEXTURE16:34e3,TEXTURE17:34001,TEXTURE18:34002,TEXTURE19:34003,TEXTURE20:34004,TEXTURE21:34005,TEXTURE22:34006,TEXTURE23:34007,TEXTURE24:34008,TEXTURE25:34009,TEXTURE26:34010,TEXTURE27:34011,TEXTURE28:34012,TEXTURE29:34013,TEXTURE30:34014,TEXTURE31:34015,ACTIVE_TEXTURE:34016,REPEAT:10497,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,INT_VEC2:35667,INT_VEC3:35668,INT_VEC4:35669,BOOL:35670,BOOL_VEC2:35671,BOOL_VEC3:35672,BOOL_VEC4:35673,FLOAT_MAT2:35674,FLOAT_MAT3:35675,FLOAT_MAT4:35676,SAMPLER_2D:35678,SAMPLER_CUBE:35680,VERTEX_ATTRIB_ARRAY_ENABLED:34338,VERTEX_ATTRIB_ARRAY_SIZE:34339,VERTEX_ATTRIB_ARRAY_STRIDE:34340,VERTEX_ATTRIB_ARRAY_TYPE:34341,VERTEX_ATTRIB_ARRAY_NORMALIZED:34922,VERTEX_ATTRIB_ARRAY_POINTER:34373,VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:34975,IMPLEMENTATION_COLOR_READ_TYPE:35738,IMPLEMENTATION_COLOR_READ_FORMAT:35739,COMPILE_STATUS:35713,LOW_FLOAT:36336,MEDIUM_FLOAT:36337,HIGH_FLOAT:36338,LOW_INT:36339,MEDIUM_INT:36340,HIGH_INT:36341,FRAMEBUFFER:36160,RENDERBUFFER:36161,RGBA4:32854,RGB5_A1:32855,RGB565:36194,DEPTH_COMPONENT16:33189,STENCIL_INDEX:6401,STENCIL_INDEX8:36168,DEPTH_STENCIL:34041,RENDERBUFFER_WIDTH:36162,RENDERBUFFER_HEIGHT:36163,RENDERBUFFER_INTERNAL_FORMAT:36164,RENDERBUFFER_RED_SIZE:36176,RENDERBUFFER_GREEN_SIZE:36177,RENDERBUFFER_BLUE_SIZE:36178,RENDERBUFFER_ALPHA_SIZE:36179,RENDERBUFFER_DEPTH_SIZE:36180,RENDERBUFFER_STENCIL_SIZE:36181,FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:36048,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:36049,FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:36050,FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:36051,COLOR_ATTACHMENT0:36064,DEPTH_ATTACHMENT:36096,STENCIL_ATTACHMENT:36128,DEPTH_STENCIL_ATTACHMENT:33306,NONE:0,FRAMEBUFFER_COMPLETE:36053,FRAMEBUFFER_INCOMPLETE_ATTACHMENT:36054,FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:36055,FRAMEBUFFER_INCOMPLETE_DIMENSIONS:36057,FRAMEBUFFER_UNSUPPORTED:36061,FRAMEBUFFER_BINDING:36006,RENDERBUFFER_BINDING:36007,MAX_RENDERBUFFER_SIZE:34024,INVALID_FRAMEBUFFER_OPERATION:1286,UNPACK_FLIP_Y_WEBGL:37440,UNPACK_PREMULTIPLY_ALPHA_WEBGL:37441,CONTEXT_LOST_WEBGL:37442,UNPACK_COLORSPACE_CONVERSION_WEBGL:37443,BROWSER_DEFAULT_WEBGL:37444,COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGBA_ASTC_4x4_WEBGL:37808,COMPRESSED_RGB_ETC1_WEBGL:36196,COMPRESSED_RGBA_BPTC_UNORM:36492,HALF_FLOAT_OES:36193,DOUBLE:5130,READ_BUFFER:3074,UNPACK_ROW_LENGTH:3314,UNPACK_SKIP_ROWS:3315,UNPACK_SKIP_PIXELS:3316,PACK_ROW_LENGTH:3330,PACK_SKIP_ROWS:3331,PACK_SKIP_PIXELS:3332,COLOR:6144,DEPTH:6145,STENCIL:6146,RED:6403,RGB8:32849,RGBA8:32856,RGB10_A2:32857,TEXTURE_BINDING_3D:32874,UNPACK_SKIP_IMAGES:32877,UNPACK_IMAGE_HEIGHT:32878,TEXTURE_3D:32879,TEXTURE_WRAP_R:32882,MAX_3D_TEXTURE_SIZE:32883,UNSIGNED_INT_2_10_10_10_REV:33640,MAX_ELEMENTS_VERTICES:33e3,MAX_ELEMENTS_INDICES:33001,TEXTURE_MIN_LOD:33082,TEXTURE_MAX_LOD:33083,TEXTURE_BASE_LEVEL:33084,TEXTURE_MAX_LEVEL:33085,MIN:32775,MAX:32776,DEPTH_COMPONENT24:33190,MAX_TEXTURE_LOD_BIAS:34045,TEXTURE_COMPARE_MODE:34892,TEXTURE_COMPARE_FUNC:34893,CURRENT_QUERY:34917,QUERY_RESULT:34918,QUERY_RESULT_AVAILABLE:34919,STREAM_READ:35041,STREAM_COPY:35042,STATIC_READ:35045,STATIC_COPY:35046,DYNAMIC_READ:35049,DYNAMIC_COPY:35050,MAX_DRAW_BUFFERS:34852,DRAW_BUFFER0:34853,DRAW_BUFFER1:34854,DRAW_BUFFER2:34855,DRAW_BUFFER3:34856,DRAW_BUFFER4:34857,DRAW_BUFFER5:34858,DRAW_BUFFER6:34859,DRAW_BUFFER7:34860,DRAW_BUFFER8:34861,DRAW_BUFFER9:34862,DRAW_BUFFER10:34863,DRAW_BUFFER11:34864,DRAW_BUFFER12:34865,DRAW_BUFFER13:34866,DRAW_BUFFER14:34867,DRAW_BUFFER15:34868,MAX_FRAGMENT_UNIFORM_COMPONENTS:35657,MAX_VERTEX_UNIFORM_COMPONENTS:35658,SAMPLER_3D:35679,SAMPLER_2D_SHADOW:35682,FRAGMENT_SHADER_DERIVATIVE_HINT:35723,PIXEL_PACK_BUFFER:35051,PIXEL_UNPACK_BUFFER:35052,PIXEL_PACK_BUFFER_BINDING:35053,PIXEL_UNPACK_BUFFER_BINDING:35055,FLOAT_MAT2x3:35685,FLOAT_MAT2x4:35686,FLOAT_MAT3x2:35687,FLOAT_MAT3x4:35688,FLOAT_MAT4x2:35689,FLOAT_MAT4x3:35690,SRGB:35904,SRGB8:35905,SRGB8_ALPHA8:35907,COMPARE_REF_TO_TEXTURE:34894,RGBA32F:34836,RGB32F:34837,RGBA16F:34842,RGB16F:34843,VERTEX_ATTRIB_ARRAY_INTEGER:35069,MAX_ARRAY_TEXTURE_LAYERS:35071,MIN_PROGRAM_TEXEL_OFFSET:35076,MAX_PROGRAM_TEXEL_OFFSET:35077,MAX_VARYING_COMPONENTS:35659,TEXTURE_2D_ARRAY:35866,TEXTURE_BINDING_2D_ARRAY:35869,R11F_G11F_B10F:35898,UNSIGNED_INT_10F_11F_11F_REV:35899,RGB9_E5:35901,UNSIGNED_INT_5_9_9_9_REV:35902,TRANSFORM_FEEDBACK_BUFFER_MODE:35967,MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:35968,TRANSFORM_FEEDBACK_VARYINGS:35971,TRANSFORM_FEEDBACK_BUFFER_START:35972,TRANSFORM_FEEDBACK_BUFFER_SIZE:35973,TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:35976,RASTERIZER_DISCARD:35977,MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:35978,MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:35979,INTERLEAVED_ATTRIBS:35980,SEPARATE_ATTRIBS:35981,TRANSFORM_FEEDBACK_BUFFER:35982,TRANSFORM_FEEDBACK_BUFFER_BINDING:35983,RGBA32UI:36208,RGB32UI:36209,RGBA16UI:36214,RGB16UI:36215,RGBA8UI:36220,RGB8UI:36221,RGBA32I:36226,RGB32I:36227,RGBA16I:36232,RGB16I:36233,RGBA8I:36238,RGB8I:36239,RED_INTEGER:36244,RGB_INTEGER:36248,RGBA_INTEGER:36249,SAMPLER_2D_ARRAY:36289,SAMPLER_2D_ARRAY_SHADOW:36292,SAMPLER_CUBE_SHADOW:36293,UNSIGNED_INT_VEC2:36294,UNSIGNED_INT_VEC3:36295,UNSIGNED_INT_VEC4:36296,INT_SAMPLER_2D:36298,INT_SAMPLER_3D:36299,INT_SAMPLER_CUBE:36300,INT_SAMPLER_2D_ARRAY:36303,UNSIGNED_INT_SAMPLER_2D:36306,UNSIGNED_INT_SAMPLER_3D:36307,UNSIGNED_INT_SAMPLER_CUBE:36308,UNSIGNED_INT_SAMPLER_2D_ARRAY:36311,DEPTH_COMPONENT32F:36012,DEPTH32F_STENCIL8:36013,FLOAT_32_UNSIGNED_INT_24_8_REV:36269,FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:33296,FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:33297,FRAMEBUFFER_ATTACHMENT_RED_SIZE:33298,FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:33299,FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:33300,FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:33301,FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:33302,FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:33303,FRAMEBUFFER_DEFAULT:33304,UNSIGNED_INT_24_8:34042,DEPTH24_STENCIL8:35056,UNSIGNED_NORMALIZED:35863,DRAW_FRAMEBUFFER_BINDING:36006,READ_FRAMEBUFFER:36008,DRAW_FRAMEBUFFER:36009,READ_FRAMEBUFFER_BINDING:36010,RENDERBUFFER_SAMPLES:36011,FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:36052,MAX_COLOR_ATTACHMENTS:36063,COLOR_ATTACHMENT1:36065,COLOR_ATTACHMENT2:36066,COLOR_ATTACHMENT3:36067,COLOR_ATTACHMENT4:36068,COLOR_ATTACHMENT5:36069,COLOR_ATTACHMENT6:36070,COLOR_ATTACHMENT7:36071,COLOR_ATTACHMENT8:36072,COLOR_ATTACHMENT9:36073,COLOR_ATTACHMENT10:36074,COLOR_ATTACHMENT11:36075,COLOR_ATTACHMENT12:36076,COLOR_ATTACHMENT13:36077,COLOR_ATTACHMENT14:36078,COLOR_ATTACHMENT15:36079,FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:36182,MAX_SAMPLES:36183,HALF_FLOAT:5131,RG:33319,RG_INTEGER:33320,R8:33321,RG8:33323,R16F:33325,R32F:33326,RG16F:33327,RG32F:33328,R8I:33329,R8UI:33330,R16I:33331,R16UI:33332,R32I:33333,R32UI:33334,RG8I:33335,RG8UI:33336,RG16I:33337,RG16UI:33338,RG32I:33339,RG32UI:33340,VERTEX_ARRAY_BINDING:34229,R8_SNORM:36756,RG8_SNORM:36757,RGB8_SNORM:36758,RGBA8_SNORM:36759,SIGNED_NORMALIZED:36764,COPY_READ_BUFFER:36662,COPY_WRITE_BUFFER:36663,COPY_READ_BUFFER_BINDING:36662,COPY_WRITE_BUFFER_BINDING:36663,UNIFORM_BUFFER:35345,UNIFORM_BUFFER_BINDING:35368,UNIFORM_BUFFER_START:35369,UNIFORM_BUFFER_SIZE:35370,MAX_VERTEX_UNIFORM_BLOCKS:35371,MAX_FRAGMENT_UNIFORM_BLOCKS:35373,MAX_COMBINED_UNIFORM_BLOCKS:35374,MAX_UNIFORM_BUFFER_BINDINGS:35375,MAX_UNIFORM_BLOCK_SIZE:35376,MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:35377,MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:35379,UNIFORM_BUFFER_OFFSET_ALIGNMENT:35380,ACTIVE_UNIFORM_BLOCKS:35382,UNIFORM_TYPE:35383,UNIFORM_SIZE:35384,UNIFORM_BLOCK_INDEX:35386,UNIFORM_OFFSET:35387,UNIFORM_ARRAY_STRIDE:35388,UNIFORM_MATRIX_STRIDE:35389,UNIFORM_IS_ROW_MAJOR:35390,UNIFORM_BLOCK_BINDING:35391,UNIFORM_BLOCK_DATA_SIZE:35392,UNIFORM_BLOCK_ACTIVE_UNIFORMS:35394,UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:35395,UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:35396,UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:35398,INVALID_INDEX:4294967295,MAX_VERTEX_OUTPUT_COMPONENTS:37154,MAX_FRAGMENT_INPUT_COMPONENTS:37157,MAX_SERVER_WAIT_TIMEOUT:37137,OBJECT_TYPE:37138,SYNC_CONDITION:37139,SYNC_STATUS:37140,SYNC_FLAGS:37141,SYNC_FENCE:37142,SYNC_GPU_COMMANDS_COMPLETE:37143,UNSIGNALED:37144,SIGNALED:37145,ALREADY_SIGNALED:37146,TIMEOUT_EXPIRED:37147,CONDITION_SATISFIED:37148,WAIT_FAILED:37149,SYNC_FLUSH_COMMANDS_BIT:1,VERTEX_ATTRIB_ARRAY_DIVISOR:35070,ANY_SAMPLES_PASSED:35887,ANY_SAMPLES_PASSED_CONSERVATIVE:36202,SAMPLER_BINDING:35097,RGB10_A2UI:36975,INT_2_10_10_10_REV:36255,TRANSFORM_FEEDBACK:36386,TRANSFORM_FEEDBACK_PAUSED:36387,TRANSFORM_FEEDBACK_ACTIVE:36388,TRANSFORM_FEEDBACK_BINDING:36389,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_SRGB8_ETC2:37493,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37494,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37495,COMPRESSED_RGBA8_ETC2_EAC:37496,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37497,TEXTURE_IMMUTABLE_FORMAT:37167,MAX_ELEMENT_INDEX:36203,TEXTURE_IMMUTABLE_LEVELS:33503,MAX_TEXTURE_MAX_ANISOTROPY_EXT:34047},_=Object.freeze(E);export{_ as a}; diff --git a/public/Cesium/Workers/chunk-PSPPBZWI.js b/public/Cesium/Workers/chunk-PSPPBZWI.js new file mode 100644 index 000000000..c4002f625 --- /dev/null +++ b/public/Cesium/Workers/chunk-PSPPBZWI.js @@ -0,0 +1,66 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as g,b as Me,c as be,d as Ie,e as B,f as _e,g as un}from"./chunk-64RSHJUE.js";import{a as R}from"./chunk-3SSKC3VN.js";import{a as Se}from"./chunk-ED5JPB3S.js";import{a as A,b as s}from"./chunk-LEYMRMBK.js";import{a as Sn,c as Rn,d as Ze,e as p}from"./chunk-VTAIKJXX.js";var Pt=Rn((en,nn)=>{/*! https://mths.be/punycode v1.4.0 by @mathias */(function(e){var n=typeof en=="object"&&en&&!en.nodeType&&en,t=typeof nn=="object"&&nn&&!nn.nodeType&&nn,o=typeof global=="object"&&global;(o.global===o||o.window===o||o.self===o)&&(e=o);var i,r=2147483647,a=36,u=1,d=26,m=38,l=700,w=72,E=128,T="-",M=/^xn--/,v=/[^\x20-\x7E]/,I=/[\x2E\u3002\uFF0E\uFF61]/g,N={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},F=a-u,k=Math.floor,x=String.fromCharCode,Q;function W(b){throw new RangeError(N[b])}function K(b,z){for(var D=b.length,Y=[];D--;)Y[D]=z(b[D]);return Y}function oe(b,z){var D=b.split("@"),Y="";D.length>1&&(Y=D[0]+"@",b=D[1]),b=b.replace(I,".");var re=b.split("."),se=K(re,z).join(".");return Y+se}function X(b){for(var z=[],D=0,Y=b.length,re,se;D<Y;)re=b.charCodeAt(D++),re>=55296&&re<=56319&&D<Y?(se=b.charCodeAt(D++),(se&64512)==56320?z.push(((re&1023)<<10)+(se&1023)+65536):(z.push(re),D--)):z.push(re);return z}function te(b){return K(b,function(z){var D="";return z>65535&&(z-=65536,D+=x(z>>>10&1023|55296),z=56320|z&1023),D+=x(z),D}).join("")}function Z(b){return b-48<10?b-22:b-65<26?b-65:b-97<26?b-97:a}function c(b,z){return b+22+75*(b<26)-((z!=0)<<5)}function f(b,z,D){var Y=0;for(b=D?k(b/l):b>>1,b+=k(b/z);b>F*d>>1;Y+=a)b=k(b/F);return k(Y+(F+1)*b/(b+m))}function h(b){var z=[],D=b.length,Y,re=0,se=E,ee=w,fe,he,me,de,pe,V,ge,Te,je;for(fe=b.lastIndexOf(T),fe<0&&(fe=0),he=0;he<fe;++he)b.charCodeAt(he)>=128&&W("not-basic"),z.push(b.charCodeAt(he));for(me=fe>0?fe+1:0;me<D;){for(de=re,pe=1,V=a;me>=D&&W("invalid-input"),ge=Z(b.charCodeAt(me++)),(ge>=a||ge>k((r-re)/pe))&&W("overflow"),re+=ge*pe,Te=V<=ee?u:V>=ee+d?d:V-ee,!(ge<Te);V+=a)je=a-Te,pe>k(r/je)&&W("overflow"),pe*=je;Y=z.length+1,ee=f(re-de,Y,de==0),k(re/Y)>r-se&&W("overflow"),se+=k(re/Y),re%=Y,z.splice(re++,0,se)}return te(z)}function y(b){var z,D,Y,re,se,ee,fe,he,me,de,pe,V=[],ge,Te,je,fn;for(b=X(b),ge=b.length,z=E,D=0,se=w,ee=0;ee<ge;++ee)pe=b[ee],pe<128&&V.push(x(pe));for(Y=re=V.length,re&&V.push(T);Y<ge;){for(fe=r,ee=0;ee<ge;++ee)pe=b[ee],pe>=z&&pe<fe&&(fe=pe);for(Te=Y+1,fe-z>k((r-D)/Te)&&W("overflow"),D+=(fe-z)*Te,z=fe,ee=0;ee<ge;++ee)if(pe=b[ee],pe<z&&++D>r&&W("overflow"),pe==z){for(he=D,me=a;de=me<=se?u:me>=se+d?d:me-se,!(he<de);me+=a)fn=he-de,je=a-de,V.push(x(c(de+fn%je,0))),he=k(fn/je);V.push(x(c(he,0))),se=f(D,Te,Y==re),D=0,++Y}++D,++z}return V.join("")}function O(b){return oe(b,function(z){return M.test(z)?h(z.slice(4).toLowerCase()):z})}function C(b){return oe(b,function(z){return v.test(z)?"xn--"+y(z):z})}if(i={version:"1.3.2",ucs2:{decode:X,encode:te},decode:h,encode:y,toASCII:C,toUnicode:O},typeof define=="function"&&typeof define.amd=="object"&&define.amd)define("punycode",function(){return i});else if(n&&t)if(nn.exports==n)t.exports=i;else for(Q in i)i.hasOwnProperty(Q)&&(n[Q]=i[Q]);else e.punycode=i})(en)});var zt=Rn((Ut,Mn)=>{/*! + * URI.js - Mutating URLs + * IPv6 Support + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,n){"use strict";typeof Mn=="object"&&Mn.exports?Mn.exports=n():typeof define=="function"&&define.amd?define(n):e.IPv6=n(e)})(Ut,function(e){"use strict";var n=e&&e.IPv6;function t(i){var r=i.toLowerCase(),a=r.split(":"),u=a.length,d=8;a[0]===""&&a[1]===""&&a[2]===""?(a.shift(),a.shift()):a[0]===""&&a[1]===""?a.shift():a[u-1]===""&&a[u-2]===""&&a.pop(),u=a.length,a[u-1].indexOf(".")!==-1&&(d=7);var m;for(m=0;m<u&&a[m]!=="";m++);if(m<d)for(a.splice(m,1,"0000");a.length<d;)a.splice(m,0,"0000");for(var l,w=0;w<d;w++){l=a[w].split("");for(var E=0;E<3&&(l[0]==="0"&&l.length>1);E++)l.splice(0,1);a[w]=l.join("")}var T=-1,M=0,v=0,I=-1,N=!1;for(w=0;w<d;w++)N?a[w]==="0"?v+=1:(N=!1,v>M&&(T=I,M=v)):a[w]==="0"&&(N=!0,I=w,v=1);v>M&&(T=I,M=v),M>1&&a.splice(T,M,""),u=a.length;var F="";for(a[0]===""&&(F=":"),w=0;w<u&&(F+=a[w],w!==u-1);w++)F+=":";return a[u-1]===""&&(F+=":"),F}function o(){return e.IPv6===this&&(e.IPv6=n),this}return{best:t,noConflict:o}})});var qt=Rn((It,Pn)=>{/*! + * URI.js - Mutating URLs + * Second Level Domain (SLD) Support + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,n){"use strict";typeof Pn=="object"&&Pn.exports?Pn.exports=n():typeof define=="function"&&define.amd?define(n):e.SecondLevelDomains=n(e)})(It,function(e){"use strict";var n=e&&e.SecondLevelDomains,t={list:{ac:" com gov mil net org ",ae:" ac co gov mil name net org pro sch ",af:" com edu gov net org ",al:" com edu gov mil net org ",ao:" co ed gv it og pb ",ar:" com edu gob gov int mil net org tur ",at:" ac co gv or ",au:" asn com csiro edu gov id net org ",ba:" co com edu gov mil net org rs unbi unmo unsa untz unze ",bb:" biz co com edu gov info net org store tv ",bh:" biz cc com edu gov info net org ",bn:" com edu gov net org ",bo:" com edu gob gov int mil net org tv ",br:" adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ",bs:" com edu gov net org ",bz:" du et om ov rg ",ca:" ab bc mb nb nf nl ns nt nu on pe qc sk yk ",ck:" biz co edu gen gov info net org ",cn:" ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ",co:" com edu gov mil net nom org ",cr:" ac c co ed fi go or sa ",cy:" ac biz com ekloges gov ltd name net org parliament press pro tm ",do:" art com edu gob gov mil net org sld web ",dz:" art asso com edu gov net org pol ",ec:" com edu fin gov info med mil net org pro ",eg:" com edu eun gov mil name net org sci ",er:" com edu gov ind mil net org rochest w ",es:" com edu gob nom org ",et:" biz com edu gov info name net org ",fj:" ac biz com info mil name net org pro ",fk:" ac co gov net nom org ",fr:" asso com f gouv nom prd presse tm ",gg:" co net org ",gh:" com edu gov mil org ",gn:" ac com gov net org ",gr:" com edu gov mil net org ",gt:" com edu gob ind mil net org ",gu:" com edu gov net org ",hk:" com edu gov idv net org ",hu:" 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ",id:" ac co go mil net or sch web ",il:" ac co gov idf k12 muni net org ",in:" ac co edu ernet firm gen gov i ind mil net nic org res ",iq:" com edu gov i mil net org ",ir:" ac co dnssec gov i id net org sch ",it:" edu gov ",je:" co net org ",jo:" com edu gov mil name net org sch ",jp:" ac ad co ed go gr lg ne or ",ke:" ac co go info me mobi ne or sc ",kh:" com edu gov mil net org per ",ki:" biz com de edu gov info mob net org tel ",km:" asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ",kn:" edu gov net org ",kr:" ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ",kw:" com edu gov net org ",ky:" com edu gov net org ",kz:" com edu gov mil net org ",lb:" com edu gov net org ",lk:" assn com edu gov grp hotel int ltd net ngo org sch soc web ",lr:" com edu gov net org ",lv:" asn com conf edu gov id mil net org ",ly:" com edu gov id med net org plc sch ",ma:" ac co gov m net org press ",mc:" asso tm ",me:" ac co edu gov its net org priv ",mg:" com edu gov mil nom org prd tm ",mk:" com edu gov inf name net org pro ",ml:" com edu gov net org presse ",mn:" edu gov org ",mo:" com edu gov net org ",mt:" com edu gov net org ",mv:" aero biz com coop edu gov info int mil museum name net org pro ",mw:" ac co com coop edu gov int museum net org ",mx:" com edu gob net org ",my:" com edu gov mil name net org sch ",nf:" arts com firm info net other per rec store web ",ng:" biz com edu gov mil mobi name net org sch ",ni:" ac co com edu gob mil net nom org ",np:" com edu gov mil net org ",nr:" biz com edu gov info net org ",om:" ac biz co com edu gov med mil museum net org pro sch ",pe:" com edu gob mil net nom org sld ",ph:" com edu gov i mil net ngo org ",pk:" biz com edu fam gob gok gon gop gos gov net org web ",pl:" art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ",pr:" ac biz com edu est gov info isla name net org pro prof ",ps:" com edu gov net org plo sec ",pw:" belau co ed go ne or ",ro:" arts com firm info nom nt org rec store tm www ",rs:" ac co edu gov in org ",sb:" com edu gov net org ",sc:" com edu gov net org ",sh:" co com edu gov net nom org ",sl:" com edu gov net org ",st:" co com consulado edu embaixada gov mil net org principe saotome store ",sv:" com edu gob org red ",sz:" ac co org ",tr:" av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ",tt:" aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ",tw:" club com ebiz edu game gov idv mil net org ",mu:" ac co com gov net or org ",mz:" ac co edu gov org ",na:" co com ",nz:" ac co cri geek gen govt health iwi maori mil net org parliament school ",pa:" abo ac com edu gob ing med net nom org sld ",pt:" com edu gov int net nome org publ ",py:" com edu gov mil net org ",qa:" com edu gov mil net org ",re:" asso com nom ",ru:" ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ",rw:" ac co com edu gouv gov int mil net ",sa:" com edu gov med net org pub sch ",sd:" com edu gov info med net org tv ",se:" a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ",sg:" com edu gov idn net org per ",sn:" art com edu gouv org perso univ ",sy:" com edu gov mil net news org ",th:" ac co go in mi net or ",tj:" ac biz co com edu go gov info int mil name net nic org test web ",tn:" agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ",tz:" ac co go ne or ",ua:" biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ",ug:" ac co go ne or org sc ",uk:" ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ",us:" dni fed isa kids nsn ",uy:" com edu gub mil net org ",ve:" co com edu gob info mil net org web ",vi:" co com k12 net org ",vn:" ac biz com edu gov health info int name net org pro ",ye:" co com gov ltd me net org plc ",yu:" ac co edu gov org ",za:" ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ",zm:" ac co com edu gov net org sch ",com:"ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ",net:"gb jp se uk ",org:"ae",de:"com "},has:function(o){var i=o.lastIndexOf(".");if(i<=0||i>=o.length-1)return!1;var r=o.lastIndexOf(".",i-1);if(r<=0||r>=i-1)return!1;var a=t.list[o.slice(i+1)];return a?a.indexOf(" "+o.slice(r+1,i)+" ")>=0:!1},is:function(o){var i=o.lastIndexOf(".");if(i<=0||i>=o.length-1)return!1;var r=o.lastIndexOf(".",i-1);if(r>=0)return!1;var a=t.list[o.slice(i+1)];return a?a.indexOf(" "+o.slice(0,i)+" ")>=0:!1},get:function(o){var i=o.lastIndexOf(".");if(i<=0||i>=o.length-1)return null;var r=o.lastIndexOf(".",i-1);if(r<=0||r>=i-1)return null;var a=t.list[o.slice(i+1)];return!a||a.indexOf(" "+o.slice(r+1,i)+" ")<0?null:o.slice(r+1)},noConflict:function(){return e.SecondLevelDomains===this&&(e.SecondLevelDomains=n),this}};return t})});var Qe=Rn((Dt,Un)=>{/*! + * URI.js - Mutating URLs + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,n){"use strict";typeof Un=="object"&&Un.exports?Un.exports=n(Pt(),zt(),qt()):typeof define=="function"&&define.amd?define(["./punycode","./IPv6","./SecondLevelDomains"],n):e.URI=n(e.punycode,e.IPv6,e.SecondLevelDomains,e)})(Dt,function(e,n,t,o){"use strict";var i=o&&o.URI;function r(c,f){var h=arguments.length>=1,y=arguments.length>=2;if(!(this instanceof r))return h?y?new r(c,f):new r(c):new r;if(c===void 0){if(h)throw new TypeError("undefined is not a valid argument for URI");typeof location<"u"?c=location.href+"":c=""}if(c===null&&h)throw new TypeError("null is not a valid argument for URI");return this.href(c),f!==void 0?this.absoluteTo(f):this}function a(c){return/^[0-9]+$/.test(c)}r.version="1.19.11";var u=r.prototype,d=Object.prototype.hasOwnProperty;function m(c){return c.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function l(c){return c===void 0?"Undefined":String(Object.prototype.toString.call(c)).slice(8,-1)}function w(c){return l(c)==="Array"}function E(c,f){var h={},y,O;if(l(f)==="RegExp")h=null;else if(w(f))for(y=0,O=f.length;y<O;y++)h[f[y]]=!0;else h[f]=!0;for(y=0,O=c.length;y<O;y++){var C=h&&h[c[y]]!==void 0||!h&&f.test(c[y]);C&&(c.splice(y,1),O--,y--)}return c}function T(c,f){var h,y;if(w(f)){for(h=0,y=f.length;h<y;h++)if(!T(c,f[h]))return!1;return!0}var O=l(f);for(h=0,y=c.length;h<y;h++)if(O==="RegExp"){if(typeof c[h]=="string"&&c[h].match(f))return!0}else if(c[h]===f)return!0;return!1}function M(c,f){if(!w(c)||!w(f)||c.length!==f.length)return!1;c.sort(),f.sort();for(var h=0,y=c.length;h<y;h++)if(c[h]!==f[h])return!1;return!0}function v(c){var f=/^\/+|\/+$/g;return c.replace(f,"")}r._parts=function(){return{protocol:null,username:null,password:null,hostname:null,urn:null,port:null,path:null,query:null,fragment:null,preventInvalidHostname:r.preventInvalidHostname,duplicateQueryParameters:r.duplicateQueryParameters,escapeQuerySpace:r.escapeQuerySpace}},r.preventInvalidHostname=!1,r.duplicateQueryParameters=!1,r.escapeQuerySpace=!0,r.protocol_expression=/^[a-z][a-z0-9.+-]*$/i,r.idn_expression=/[^a-z0-9\._-]/i,r.punycode_expression=/(xn--)/i,r.ip4_expression=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,r.ip6_expression=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,r.find_uri_expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/ig,r.findUri={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|www\.)/gi,end:/[\s\r\n]|$/,trim:/[`!()\[\]{};:'".,<>?«»“”„‘’]+$/,parens:/(\([^\)]*\)|\[[^\]]*\]|\{[^}]*\}|<[^>]*>)/g},r.leading_whitespace_expression=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,r.ascii_tab_whitespace=/[\u0009\u000A\u000D]+/g,r.defaultPorts={http:"80",https:"443",ftp:"21",gopher:"70",ws:"80",wss:"443"},r.hostProtocols=["http","https"],r.invalid_hostname_characters=/[^a-zA-Z0-9\.\-:_]/,r.domAttributes={a:"href",blockquote:"cite",link:"href",base:"href",script:"src",form:"action",img:"src",area:"href",iframe:"src",embed:"src",source:"src",track:"src",input:"src",audio:"src",video:"src"},r.getDomAttribute=function(c){if(!(!c||!c.nodeName)){var f=c.nodeName.toLowerCase();if(!(f==="input"&&c.type!=="image"))return r.domAttributes[f]}};function I(c){return escape(c)}function N(c){return encodeURIComponent(c).replace(/[!'()*]/g,I).replace(/\*/g,"%2A")}r.encode=N,r.decode=decodeURIComponent,r.iso8859=function(){r.encode=escape,r.decode=unescape},r.unicode=function(){r.encode=N,r.decode=decodeURIComponent},r.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/ig,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}},urnpath:{encode:{expression:/%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/ig,map:{"%21":"!","%24":"$","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"=","%40":"@"}},decode:{expression:/[\/\?#:]/g,map:{"/":"%2F","?":"%3F","#":"%23",":":"%3A"}}}},r.encodeQuery=function(c,f){var h=r.encode(c+"");return f===void 0&&(f=r.escapeQuerySpace),f?h.replace(/%20/g,"+"):h},r.decodeQuery=function(c,f){c+="",f===void 0&&(f=r.escapeQuerySpace);try{return r.decode(f?c.replace(/\+/g,"%20"):c)}catch{return c}};var F={encode:"encode",decode:"decode"},k,x=function(c,f){return function(h){try{return r[f](h+"").replace(r.characters[c][f].expression,function(y){return r.characters[c][f].map[y]})}catch{return h}}};for(k in F)r[k+"PathSegment"]=x("pathname",F[k]),r[k+"UrnPathSegment"]=x("urnpath",F[k]);var Q=function(c,f,h){return function(y){var O;h?O=function(D){return r[f](r[h](D))}:O=r[f];for(var C=(y+"").split(c),b=0,z=C.length;b<z;b++)C[b]=O(C[b]);return C.join(c)}};r.decodePath=Q("/","decodePathSegment"),r.decodeUrnPath=Q(":","decodeUrnPathSegment"),r.recodePath=Q("/","encodePathSegment","decode"),r.recodeUrnPath=Q(":","encodeUrnPathSegment","decode"),r.encodeReserved=x("reserved","encode"),r.parse=function(c,f){var h;return f||(f={preventInvalidHostname:r.preventInvalidHostname}),c=c.replace(r.leading_whitespace_expression,""),c=c.replace(r.ascii_tab_whitespace,""),h=c.indexOf("#"),h>-1&&(f.fragment=c.substring(h+1)||null,c=c.substring(0,h)),h=c.indexOf("?"),h>-1&&(f.query=c.substring(h+1)||null,c=c.substring(0,h)),c=c.replace(/^(https?|ftp|wss?)?:+[/\\]*/i,"$1://"),c=c.replace(/^[/\\]{2,}/i,"//"),c.substring(0,2)==="//"?(f.protocol=null,c=c.substring(2),c=r.parseAuthority(c,f)):(h=c.indexOf(":"),h>-1&&(f.protocol=c.substring(0,h)||null,f.protocol&&!f.protocol.match(r.protocol_expression)?f.protocol=void 0:c.substring(h+1,h+3).replace(/\\/g,"/")==="//"?(c=c.substring(h+3),c=r.parseAuthority(c,f)):(c=c.substring(h+1),f.urn=!0))),f.path=c,f},r.parseHost=function(c,f){c||(c=""),c=c.replace(/\\/g,"/");var h=c.indexOf("/"),y,O;if(h===-1&&(h=c.length),c.charAt(0)==="[")y=c.indexOf("]"),f.hostname=c.substring(1,y)||null,f.port=c.substring(y+2,h)||null,f.port==="/"&&(f.port=null);else{var C=c.indexOf(":"),b=c.indexOf("/"),z=c.indexOf(":",C+1);z!==-1&&(b===-1||z<b)?(f.hostname=c.substring(0,h)||null,f.port=null):(O=c.substring(0,h).split(":"),f.hostname=O[0]||null,f.port=O[1]||null)}return f.hostname&&c.substring(h).charAt(0)!=="/"&&(h++,c="/"+c),f.preventInvalidHostname&&r.ensureValidHostname(f.hostname,f.protocol),f.port&&r.ensureValidPort(f.port),c.substring(h)||"/"},r.parseAuthority=function(c,f){return c=r.parseUserinfo(c,f),r.parseHost(c,f)},r.parseUserinfo=function(c,f){var h=c,y=c.indexOf("\\");y!==-1&&(c=c.replace(/\\/g,"/"));var O=c.indexOf("/"),C=c.lastIndexOf("@",O>-1?O:c.length-1),b;return C>-1&&(O===-1||C<O)?(b=c.substring(0,C).split(":"),f.username=b[0]?r.decode(b[0]):null,b.shift(),f.password=b[0]?r.decode(b.join(":")):null,c=h.substring(C+1)):(f.username=null,f.password=null),c},r.parseQuery=function(c,f){if(!c)return{};if(c=c.replace(/&+/g,"&").replace(/^\?*&*|&+$/g,""),!c)return{};for(var h={},y=c.split("&"),O=y.length,C,b,z,D=0;D<O;D++)C=y[D].split("="),b=r.decodeQuery(C.shift(),f),z=C.length?r.decodeQuery(C.join("="),f):null,b!=="__proto__"&&(d.call(h,b)?((typeof h[b]=="string"||h[b]===null)&&(h[b]=[h[b]]),h[b].push(z)):h[b]=z);return h},r.build=function(c){var f="",h=!1;return c.protocol&&(f+=c.protocol+":"),!c.urn&&(f||c.hostname)&&(f+="//",h=!0),f+=r.buildAuthority(c)||"",typeof c.path=="string"&&(c.path.charAt(0)!=="/"&&h&&(f+="/"),f+=c.path),typeof c.query=="string"&&c.query&&(f+="?"+c.query),typeof c.fragment=="string"&&c.fragment&&(f+="#"+c.fragment),f},r.buildHost=function(c){var f="";if(c.hostname)r.ip6_expression.test(c.hostname)?f+="["+c.hostname+"]":f+=c.hostname;else return"";return c.port&&(f+=":"+c.port),f},r.buildAuthority=function(c){return r.buildUserinfo(c)+r.buildHost(c)},r.buildUserinfo=function(c){var f="";return c.username&&(f+=r.encode(c.username)),c.password&&(f+=":"+r.encode(c.password)),f&&(f+="@"),f},r.buildQuery=function(c,f,h){var y="",O,C,b,z;for(C in c)if(C!=="__proto__"&&d.call(c,C))if(w(c[C]))for(O={},b=0,z=c[C].length;b<z;b++)c[C][b]!==void 0&&O[c[C][b]+""]===void 0&&(y+="&"+r.buildQueryParameter(C,c[C][b],h),f!==!0&&(O[c[C][b]+""]=!0));else c[C]!==void 0&&(y+="&"+r.buildQueryParameter(C,c[C],h));return y.substring(1)},r.buildQueryParameter=function(c,f,h){return r.encodeQuery(c,h)+(f!==null?"="+r.encodeQuery(f,h):"")},r.addQuery=function(c,f,h){if(typeof f=="object")for(var y in f)d.call(f,y)&&r.addQuery(c,y,f[y]);else if(typeof f=="string"){if(c[f]===void 0){c[f]=h;return}else typeof c[f]=="string"&&(c[f]=[c[f]]);w(h)||(h=[h]),c[f]=(c[f]||[]).concat(h)}else throw new TypeError("URI.addQuery() accepts an object, string as the name parameter")},r.setQuery=function(c,f,h){if(typeof f=="object")for(var y in f)d.call(f,y)&&r.setQuery(c,y,f[y]);else if(typeof f=="string")c[f]=h===void 0?null:h;else throw new TypeError("URI.setQuery() accepts an object, string as the name parameter")},r.removeQuery=function(c,f,h){var y,O,C;if(w(f))for(y=0,O=f.length;y<O;y++)c[f[y]]=void 0;else if(l(f)==="RegExp")for(C in c)f.test(C)&&(c[C]=void 0);else if(typeof f=="object")for(C in f)d.call(f,C)&&r.removeQuery(c,C,f[C]);else if(typeof f=="string")h!==void 0?l(h)==="RegExp"?!w(c[f])&&h.test(c[f])?c[f]=void 0:c[f]=E(c[f],h):c[f]===String(h)&&(!w(h)||h.length===1)?c[f]=void 0:w(c[f])&&(c[f]=E(c[f],h)):c[f]=void 0;else throw new TypeError("URI.removeQuery() accepts an object, string, RegExp as the first parameter")},r.hasQuery=function(c,f,h,y){switch(l(f)){case"String":break;case"RegExp":for(var O in c)if(d.call(c,O)&&f.test(O)&&(h===void 0||r.hasQuery(c,O,h)))return!0;return!1;case"Object":for(var C in f)if(d.call(f,C)&&!r.hasQuery(c,C,f[C]))return!1;return!0;default:throw new TypeError("URI.hasQuery() accepts a string, regular expression or object as the name parameter")}switch(l(h)){case"Undefined":return f in c;case"Boolean":var b=!!(w(c[f])?c[f].length:c[f]);return h===b;case"Function":return!!h(c[f],f,c);case"Array":if(!w(c[f]))return!1;var z=y?T:M;return z(c[f],h);case"RegExp":return w(c[f])?y?T(c[f],h):!1:!!(c[f]&&c[f].match(h));case"Number":h=String(h);case"String":return w(c[f])?y?T(c[f],h):!1:c[f]===h;default:throw new TypeError("URI.hasQuery() accepts undefined, boolean, string, number, RegExp, Function as the value parameter")}},r.joinPaths=function(){for(var c=[],f=[],h=0,y=0;y<arguments.length;y++){var O=new r(arguments[y]);c.push(O);for(var C=O.segment(),b=0;b<C.length;b++)typeof C[b]=="string"&&f.push(C[b]),C[b]&&h++}if(!f.length||!h)return new r("");var z=new r("").segment(f);return(c[0].path()===""||c[0].path().slice(0,1)==="/")&&z.path("/"+z.path()),z.normalize()},r.commonPath=function(c,f){var h=Math.min(c.length,f.length),y;for(y=0;y<h;y++)if(c.charAt(y)!==f.charAt(y)){y--;break}return y<1?c.charAt(0)===f.charAt(0)&&c.charAt(0)==="/"?"/":"":((c.charAt(y)!=="/"||f.charAt(y)!=="/")&&(y=c.substring(0,y).lastIndexOf("/")),c.substring(0,y+1))},r.withinString=function(c,f,h){h||(h={});var y=h.start||r.findUri.start,O=h.end||r.findUri.end,C=h.trim||r.findUri.trim,b=h.parens||r.findUri.parens,z=/[a-z0-9-]=["']?$/i;for(y.lastIndex=0;;){var D=y.exec(c);if(!D)break;var Y=D.index;if(h.ignoreHtml){var re=c.slice(Math.max(Y-3,0),Y);if(re&&z.test(re))continue}for(var se=Y+c.slice(Y).search(O),ee=c.slice(Y,se),fe=-1;;){var he=b.exec(ee);if(!he)break;var me=he.index+he[0].length;fe=Math.max(fe,me)}if(fe>-1?ee=ee.slice(0,fe)+ee.slice(fe).replace(C,""):ee=ee.replace(C,""),!(ee.length<=D[0].length)&&!(h.ignore&&h.ignore.test(ee))){se=Y+ee.length;var de=f(ee,Y,se,c);if(de===void 0){y.lastIndex=se;continue}de=String(de),c=c.slice(0,Y)+de+c.slice(se),y.lastIndex=Y+de.length}}return y.lastIndex=0,c},r.ensureValidHostname=function(c,f){var h=!!c,y=!!f,O=!1;if(y&&(O=T(r.hostProtocols,f)),O&&!h)throw new TypeError("Hostname cannot be empty, if protocol is "+f);if(c&&c.match(r.invalid_hostname_characters)){if(!e)throw new TypeError('Hostname "'+c+'" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available');if(e.toASCII(c).match(r.invalid_hostname_characters))throw new TypeError('Hostname "'+c+'" contains characters other than [A-Z0-9.-:_]')}},r.ensureValidPort=function(c){if(c){var f=Number(c);if(!(a(f)&&f>0&&f<65536))throw new TypeError('Port "'+c+'" is not a valid port')}},r.noConflict=function(c){if(c){var f={URI:this.noConflict()};return o.URITemplate&&typeof o.URITemplate.noConflict=="function"&&(f.URITemplate=o.URITemplate.noConflict()),o.IPv6&&typeof o.IPv6.noConflict=="function"&&(f.IPv6=o.IPv6.noConflict()),o.SecondLevelDomains&&typeof o.SecondLevelDomains.noConflict=="function"&&(f.SecondLevelDomains=o.SecondLevelDomains.noConflict()),f}else o.URI===this&&(o.URI=i);return this},u.build=function(c){return c===!0?this._deferred_build=!0:(c===void 0||this._deferred_build)&&(this._string=r.build(this._parts),this._deferred_build=!1),this},u.clone=function(){return new r(this)},u.valueOf=u.toString=function(){return this.build(!1)._string};function W(c){return function(f,h){return f===void 0?this._parts[c]||"":(this._parts[c]=f||null,this.build(!h),this)}}function K(c,f){return function(h,y){return h===void 0?this._parts[c]||"":(h!==null&&(h=h+"",h.charAt(0)===f&&(h=h.substring(1))),this._parts[c]=h,this.build(!y),this)}}u.protocol=W("protocol"),u.username=W("username"),u.password=W("password"),u.hostname=W("hostname"),u.port=W("port"),u.query=K("query","?"),u.fragment=K("fragment","#"),u.search=function(c,f){var h=this.query(c,f);return typeof h=="string"&&h.length?"?"+h:h},u.hash=function(c,f){var h=this.fragment(c,f);return typeof h=="string"&&h.length?"#"+h:h},u.pathname=function(c,f){if(c===void 0||c===!0){var h=this._parts.path||(this._parts.hostname?"/":"");return c?(this._parts.urn?r.decodeUrnPath:r.decodePath)(h):h}else return this._parts.urn?this._parts.path=c?r.recodeUrnPath(c):"":this._parts.path=c?r.recodePath(c):"/",this.build(!f),this},u.path=u.pathname,u.href=function(c,f){var h;if(c===void 0)return this.toString();this._string="",this._parts=r._parts();var y=c instanceof r,O=typeof c=="object"&&(c.hostname||c.path||c.pathname);if(c.nodeName){var C=r.getDomAttribute(c);c=c[C]||"",O=!1}if(!y&&O&&c.pathname!==void 0&&(c=c.toString()),typeof c=="string"||c instanceof String)this._parts=r.parse(String(c),this._parts);else if(y||O){var b=y?c._parts:c;for(h in b)h!=="query"&&d.call(this._parts,h)&&(this._parts[h]=b[h]);b.query&&this.query(b.query,!1)}else throw new TypeError("invalid input");return this.build(!f),this},u.is=function(c){var f=!1,h=!1,y=!1,O=!1,C=!1,b=!1,z=!1,D=!this._parts.urn;switch(this._parts.hostname&&(D=!1,h=r.ip4_expression.test(this._parts.hostname),y=r.ip6_expression.test(this._parts.hostname),f=h||y,O=!f,C=O&&t&&t.has(this._parts.hostname),b=O&&r.idn_expression.test(this._parts.hostname),z=O&&r.punycode_expression.test(this._parts.hostname)),c.toLowerCase()){case"relative":return D;case"absolute":return!D;case"domain":case"name":return O;case"sld":return C;case"ip":return f;case"ip4":case"ipv4":case"inet4":return h;case"ip6":case"ipv6":case"inet6":return y;case"idn":return b;case"url":return!this._parts.urn;case"urn":return!!this._parts.urn;case"punycode":return z}return null};var oe=u.protocol,X=u.port,te=u.hostname;u.protocol=function(c,f){if(c&&(c=c.replace(/:(\/\/)?$/,""),!c.match(r.protocol_expression)))throw new TypeError('Protocol "'+c+`" contains characters other than [A-Z0-9.+-] or doesn't start with [A-Z]`);return oe.call(this,c,f)},u.scheme=u.protocol,u.port=function(c,f){return this._parts.urn?c===void 0?"":this:(c!==void 0&&(c===0&&(c=null),c&&(c+="",c.charAt(0)===":"&&(c=c.substring(1)),r.ensureValidPort(c))),X.call(this,c,f))},u.hostname=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(c!==void 0){var h={preventInvalidHostname:this._parts.preventInvalidHostname},y=r.parseHost(c,h);if(y!=="/")throw new TypeError('Hostname "'+c+'" contains characters other than [A-Z0-9.-]');c=h.hostname,this._parts.preventInvalidHostname&&r.ensureValidHostname(c,this._parts.protocol)}return te.call(this,c,f)},u.origin=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(c===void 0){var h=this.protocol(),y=this.authority();return y?(h?h+"://":"")+this.authority():""}else{var O=r(c);return this.protocol(O.protocol()).authority(O.authority()).build(!f),this}},u.host=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(c===void 0)return this._parts.hostname?r.buildHost(this._parts):"";var h=r.parseHost(c,this._parts);if(h!=="/")throw new TypeError('Hostname "'+c+'" contains characters other than [A-Z0-9.-]');return this.build(!f),this},u.authority=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(c===void 0)return this._parts.hostname?r.buildAuthority(this._parts):"";var h=r.parseAuthority(c,this._parts);if(h!=="/")throw new TypeError('Hostname "'+c+'" contains characters other than [A-Z0-9.-]');return this.build(!f),this},u.userinfo=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(c===void 0){var h=r.buildUserinfo(this._parts);return h&&h.substring(0,h.length-1)}else return c[c.length-1]!=="@"&&(c+="@"),r.parseUserinfo(c,this._parts),this.build(!f),this},u.resource=function(c,f){var h;return c===void 0?this.path()+this.search()+this.hash():(h=r.parse(c),this._parts.path=h.path,this._parts.query=h.query,this._parts.fragment=h.fragment,this.build(!f),this)},u.subdomain=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(c===void 0){if(!this._parts.hostname||this.is("IP"))return"";var h=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0,h)||""}else{var y=this._parts.hostname.length-this.domain().length,O=this._parts.hostname.substring(0,y),C=new RegExp("^"+m(O));if(c&&c.charAt(c.length-1)!=="."&&(c+="."),c.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");return c&&r.ensureValidHostname(c,this._parts.protocol),this._parts.hostname=this._parts.hostname.replace(C,c),this.build(!f),this}},u.domain=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(typeof c=="boolean"&&(f=c,c=void 0),c===void 0){if(!this._parts.hostname||this.is("IP"))return"";var h=this._parts.hostname.match(/\./g);if(h&&h.length<2)return this._parts.hostname;var y=this._parts.hostname.length-this.tld(f).length-1;return y=this._parts.hostname.lastIndexOf(".",y-1)+1,this._parts.hostname.substring(y)||""}else{if(!c)throw new TypeError("cannot set domain empty");if(c.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");if(r.ensureValidHostname(c,this._parts.protocol),!this._parts.hostname||this.is("IP"))this._parts.hostname=c;else{var O=new RegExp(m(this.domain())+"$");this._parts.hostname=this._parts.hostname.replace(O,c)}return this.build(!f),this}},u.tld=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(typeof c=="boolean"&&(f=c,c=void 0),c===void 0){if(!this._parts.hostname||this.is("IP"))return"";var h=this._parts.hostname.lastIndexOf("."),y=this._parts.hostname.substring(h+1);return f!==!0&&t&&t.list[y.toLowerCase()]&&t.get(this._parts.hostname)||y}else{var O;if(c)if(c.match(/[^a-zA-Z0-9-]/))if(t&&t.is(c))O=new RegExp(m(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(O,c);else throw new TypeError('TLD "'+c+'" contains characters other than [A-Z0-9]');else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");O=new RegExp(m(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(O,c)}else throw new TypeError("cannot set TLD empty");return this.build(!f),this}},u.directory=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(c===void 0||c===!0){if(!this._parts.path&&!this._parts.hostname)return"";if(this._parts.path==="/")return"/";var h=this._parts.path.length-this.filename().length-1,y=this._parts.path.substring(0,h)||(this._parts.hostname?"/":"");return c?r.decodePath(y):y}else{var O=this._parts.path.length-this.filename().length,C=this._parts.path.substring(0,O),b=new RegExp("^"+m(C));return this.is("relative")||(c||(c="/"),c.charAt(0)!=="/"&&(c="/"+c)),c&&c.charAt(c.length-1)!=="/"&&(c+="/"),c=r.recodePath(c),this._parts.path=this._parts.path.replace(b,c),this.build(!f),this}},u.filename=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(typeof c!="string"){if(!this._parts.path||this._parts.path==="/")return"";var h=this._parts.path.lastIndexOf("/"),y=this._parts.path.substring(h+1);return c?r.decodePathSegment(y):y}else{var O=!1;c.charAt(0)==="/"&&(c=c.substring(1)),c.match(/\.?\//)&&(O=!0);var C=new RegExp(m(this.filename())+"$");return c=r.recodePath(c),this._parts.path=this._parts.path.replace(C,c),O?this.normalizePath(f):this.build(!f),this}},u.suffix=function(c,f){if(this._parts.urn)return c===void 0?"":this;if(c===void 0||c===!0){if(!this._parts.path||this._parts.path==="/")return"";var h=this.filename(),y=h.lastIndexOf("."),O,C;return y===-1?"":(O=h.substring(y+1),C=/^[a-z0-9%]+$/i.test(O)?O:"",c?r.decodePathSegment(C):C)}else{c.charAt(0)==="."&&(c=c.substring(1));var b=this.suffix(),z;if(b)c?z=new RegExp(m(b)+"$"):z=new RegExp(m("."+b)+"$");else{if(!c)return this;this._parts.path+="."+r.recodePath(c)}return z&&(c=r.recodePath(c),this._parts.path=this._parts.path.replace(z,c)),this.build(!f),this}},u.segment=function(c,f,h){var y=this._parts.urn?":":"/",O=this.path(),C=O.substring(0,1)==="/",b=O.split(y);if(c!==void 0&&typeof c!="number"&&(h=f,f=c,c=void 0),c!==void 0&&typeof c!="number")throw new Error('Bad segment "'+c+'", must be 0-based integer');if(C&&b.shift(),c<0&&(c=Math.max(b.length+c,0)),f===void 0)return c===void 0?b:b[c];if(c===null||b[c]===void 0)if(w(f)){b=[];for(var z=0,D=f.length;z<D;z++)!f[z].length&&(!b.length||!b[b.length-1].length)||(b.length&&!b[b.length-1].length&&b.pop(),b.push(v(f[z])))}else(f||typeof f=="string")&&(f=v(f),b[b.length-1]===""?b[b.length-1]=f:b.push(f));else f?b[c]=v(f):b.splice(c,1);return C&&b.unshift(""),this.path(b.join(y),h)},u.segmentCoded=function(c,f,h){var y,O,C;if(typeof c!="number"&&(h=f,f=c,c=void 0),f===void 0){if(y=this.segment(c,f,h),!w(y))y=y!==void 0?r.decode(y):void 0;else for(O=0,C=y.length;O<C;O++)y[O]=r.decode(y[O]);return y}if(!w(f))f=typeof f=="string"||f instanceof String?r.encode(f):f;else for(O=0,C=f.length;O<C;O++)f[O]=r.encode(f[O]);return this.segment(c,f,h)};var Z=u.query;return u.query=function(c,f){if(c===!0)return r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if(typeof c=="function"){var h=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace),y=c.call(this,h);return this._parts.query=r.buildQuery(y||h,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!f),this}else return c!==void 0&&typeof c!="string"?(this._parts.query=r.buildQuery(c,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!f),this):Z.call(this,c,f)},u.setQuery=function(c,f,h){var y=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if(typeof c=="string"||c instanceof String)y[c]=f!==void 0?f:null;else if(typeof c=="object")for(var O in c)d.call(c,O)&&(y[O]=c[O]);else throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");return this._parts.query=r.buildQuery(y,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof c!="string"&&(h=f),this.build(!h),this},u.addQuery=function(c,f,h){var y=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.addQuery(y,c,f===void 0?null:f),this._parts.query=r.buildQuery(y,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof c!="string"&&(h=f),this.build(!h),this},u.removeQuery=function(c,f,h){var y=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.removeQuery(y,c,f),this._parts.query=r.buildQuery(y,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof c!="string"&&(h=f),this.build(!h),this},u.hasQuery=function(c,f,h){var y=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.hasQuery(y,c,f,h)},u.setSearch=u.setQuery,u.addSearch=u.addQuery,u.removeSearch=u.removeQuery,u.hasSearch=u.hasQuery,u.normalize=function(){return this._parts.urn?this.normalizeProtocol(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build():this.normalizeProtocol(!1).normalizeHostname(!1).normalizePort(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build()},u.normalizeProtocol=function(c){return typeof this._parts.protocol=="string"&&(this._parts.protocol=this._parts.protocol.toLowerCase(),this.build(!c)),this},u.normalizeHostname=function(c){return this._parts.hostname&&(this.is("IDN")&&e?this._parts.hostname=e.toASCII(this._parts.hostname):this.is("IPv6")&&n&&(this._parts.hostname=n.best(this._parts.hostname)),this._parts.hostname=this._parts.hostname.toLowerCase(),this.build(!c)),this},u.normalizePort=function(c){return typeof this._parts.protocol=="string"&&this._parts.port===r.defaultPorts[this._parts.protocol]&&(this._parts.port=null,this.build(!c)),this},u.normalizePath=function(c){var f=this._parts.path;if(!f)return this;if(this._parts.urn)return this._parts.path=r.recodeUrnPath(this._parts.path),this.build(!c),this;if(this._parts.path==="/")return this;f=r.recodePath(f);var h,y="",O,C;for(f.charAt(0)!=="/"&&(h=!0,f="/"+f),(f.slice(-3)==="/.."||f.slice(-2)==="/.")&&(f+="/"),f=f.replace(/(\/(\.\/)+)|(\/\.$)/g,"/").replace(/\/{2,}/g,"/"),h&&(y=f.substring(1).match(/^(\.\.\/)+/)||"",y&&(y=y[0]));O=f.search(/\/\.\.(\/|$)/),O!==-1;){if(O===0){f=f.substring(3);continue}C=f.substring(0,O).lastIndexOf("/"),C===-1&&(C=O),f=f.substring(0,C)+f.substring(O+3)}return h&&this.is("relative")&&(f=y+f.substring(1)),this._parts.path=f,this.build(!c),this},u.normalizePathname=u.normalizePath,u.normalizeQuery=function(c){return typeof this._parts.query=="string"&&(this._parts.query.length?this.query(r.parseQuery(this._parts.query,this._parts.escapeQuerySpace)):this._parts.query=null,this.build(!c)),this},u.normalizeFragment=function(c){return this._parts.fragment||(this._parts.fragment=null,this.build(!c)),this},u.normalizeSearch=u.normalizeQuery,u.normalizeHash=u.normalizeFragment,u.iso8859=function(){var c=r.encode,f=r.decode;r.encode=escape,r.decode=decodeURIComponent;try{this.normalize()}finally{r.encode=c,r.decode=f}return this},u.unicode=function(){var c=r.encode,f=r.decode;r.encode=N,r.decode=unescape;try{this.normalize()}finally{r.encode=c,r.decode=f}return this},u.readable=function(){var c=this.clone();c.username("").password("").normalize();var f="";if(c._parts.protocol&&(f+=c._parts.protocol+"://"),c._parts.hostname&&(c.is("punycode")&&e?(f+=e.toUnicode(c._parts.hostname),c._parts.port&&(f+=":"+c._parts.port)):f+=c.host()),c._parts.hostname&&c._parts.path&&c._parts.path.charAt(0)!=="/"&&(f+="/"),f+=c.path(!0),c._parts.query){for(var h="",y=0,O=c._parts.query.split("&"),C=O.length;y<C;y++){var b=(O[y]||"").split("=");h+="&"+r.decodeQuery(b[0],this._parts.escapeQuerySpace).replace(/&/g,"%26"),b[1]!==void 0&&(h+="="+r.decodeQuery(b[1],this._parts.escapeQuerySpace).replace(/&/g,"%26"))}f+="?"+h.substring(1)}return f+=r.decodeQuery(c.hash(),!0),f},u.absoluteTo=function(c){var f=this.clone(),h=["protocol","username","password","hostname","port"],y,O,C;if(this._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(c instanceof r||(c=new r(c)),f._parts.protocol||(f._parts.protocol=c._parts.protocol,this._parts.hostname))return f;for(O=0;C=h[O];O++)f._parts[C]=c._parts[C];return f._parts.path?(f._parts.path.substring(-2)===".."&&(f._parts.path+="/"),f.path().charAt(0)!=="/"&&(y=c.directory(),y=y||(c.path().indexOf("/")===0?"/":""),f._parts.path=(y?y+"/":"")+f._parts.path,f.normalizePath())):(f._parts.path=c._parts.path,f._parts.query||(f._parts.query=c._parts.query)),f.build(),f},u.relativeTo=function(c){var f=this.clone().normalize(),h,y,O,C,b;if(f._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(c=new r(c).normalize(),h=f._parts,y=c._parts,C=f.path(),b=c.path(),C.charAt(0)!=="/")throw new Error("URI is already relative");if(b.charAt(0)!=="/")throw new Error("Cannot calculate a URI relative to another relative URI");if(h.protocol===y.protocol&&(h.protocol=null),h.username!==y.username||h.password!==y.password||h.protocol!==null||h.username!==null||h.password!==null)return f.build();if(h.hostname===y.hostname&&h.port===y.port)h.hostname=null,h.port=null;else return f.build();if(C===b)return h.path="",f.build();if(O=r.commonPath(C,b),!O)return f.build();var z=y.path.substring(O.length).replace(/[^\/]*$/,"").replace(/.*?\//g,"../");return h.path=z+h.path.substring(O.length)||"./",f.build()},u.equals=function(c){var f=this.clone(),h=new r(c),y={},O={},C={},b,z,D;if(f.normalize(),h.normalize(),f.toString()===h.toString())return!0;if(b=f.query(),z=h.query(),f.query(""),h.query(""),f.toString()!==h.toString()||b.length!==z.length)return!1;y=r.parseQuery(b,this._parts.escapeQuerySpace),O=r.parseQuery(z,this._parts.escapeQuerySpace);for(D in y)if(d.call(y,D)){if(w(y[D])){if(!M(y[D],O[D]))return!1}else if(y[D]!==O[D])return!1;C[D]=!0}for(D in O)if(d.call(O,D)&&!C[D])return!1;return!0},u.preventInvalidHostname=function(c){return this._parts.preventInvalidHostname=!!c,this},u.duplicateQueryParameters=function(c){return this._parts.duplicateQueryParameters=!!c,this},u.escapeQuerySpace=function(c){return this._parts.escapeQuerySpace=!!c,this},r})});function j(e,n,t,o){this.x=e??0,this.y=n??0,this.z=t??0,this.w=o??0}j.fromElements=function(e,n,t,o,i){return p(i)?(i.x=e,i.y=n,i.z=t,i.w=o,i):new j(e,n,t,o)};j.fromColor=function(e,n){return s.typeOf.object("color",e),p(n)?(n.x=e.red,n.y=e.green,n.z=e.blue,n.w=e.alpha,n):new j(e.red,e.green,e.blue,e.alpha)};j.clone=function(e,n){if(p(e))return p(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n.w=e.w,n):new j(e.x,e.y,e.z,e.w)};j.packedLength=4;j.pack=function(e,n,t){return s.typeOf.object("value",e),s.defined("array",n),t=t??0,n[t++]=e.x,n[t++]=e.y,n[t++]=e.z,n[t]=e.w,n};j.unpack=function(e,n,t){return s.defined("array",e),n=n??0,p(t)||(t=new j),t.x=e[n++],t.y=e[n++],t.z=e[n++],t.w=e[n],t};j.packArray=function(e,n){s.defined("array",e);let t=e.length,o=t*4;if(!p(n))n=new Array(o);else{if(!Array.isArray(n)&&n.length!==o)throw new A("If result is a typed array, it must have exactly array.length * 4 elements");n.length!==o&&(n.length=o)}for(let i=0;i<t;++i)j.pack(e[i],n,i*4);return n};j.unpackArray=function(e,n){if(s.defined("array",e),s.typeOf.number.greaterThanOrEquals("array.length",e.length,4),e.length%4!==0)throw new A("array length must be a multiple of 4.");let t=e.length;p(n)?n.length=t/4:n=new Array(t/4);for(let o=0;o<t;o+=4){let i=o/4;n[i]=j.unpack(e,o,n[i])}return n};j.fromArray=j.unpack;j.maximumComponent=function(e){return s.typeOf.object("cartesian",e),Math.max(e.x,e.y,e.z,e.w)};j.minimumComponent=function(e){return s.typeOf.object("cartesian",e),Math.min(e.x,e.y,e.z,e.w)};j.minimumByComponent=function(e,n,t){return s.typeOf.object("first",e),s.typeOf.object("second",n),s.typeOf.object("result",t),t.x=Math.min(e.x,n.x),t.y=Math.min(e.y,n.y),t.z=Math.min(e.z,n.z),t.w=Math.min(e.w,n.w),t};j.maximumByComponent=function(e,n,t){return s.typeOf.object("first",e),s.typeOf.object("second",n),s.typeOf.object("result",t),t.x=Math.max(e.x,n.x),t.y=Math.max(e.y,n.y),t.z=Math.max(e.z,n.z),t.w=Math.max(e.w,n.w),t};j.clamp=function(e,n,t,o){s.typeOf.object("value",e),s.typeOf.object("min",n),s.typeOf.object("max",t),s.typeOf.object("result",o);let i=R.clamp(e.x,n.x,t.x),r=R.clamp(e.y,n.y,t.y),a=R.clamp(e.z,n.z,t.z),u=R.clamp(e.w,n.w,t.w);return o.x=i,o.y=r,o.z=a,o.w=u,o};j.magnitudeSquared=function(e){return s.typeOf.object("cartesian",e),e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w};j.magnitude=function(e){return Math.sqrt(j.magnitudeSquared(e))};var En=new j;j.distance=function(e,n){return s.typeOf.object("left",e),s.typeOf.object("right",n),j.subtract(e,n,En),j.magnitude(En)};j.distanceSquared=function(e,n){return s.typeOf.object("left",e),s.typeOf.object("right",n),j.subtract(e,n,En),j.magnitudeSquared(En)};j.normalize=function(e,n){s.typeOf.object("cartesian",e),s.typeOf.object("result",n);let t=j.magnitude(e);if(n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,isNaN(n.x)||isNaN(n.y)||isNaN(n.z)||isNaN(n.w))throw new A("normalized result is not a number");return n};j.dot=function(e,n){return s.typeOf.object("left",e),s.typeOf.object("right",n),e.x*n.x+e.y*n.y+e.z*n.z+e.w*n.w};j.multiplyComponents=function(e,n,t){return s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t),t.x=e.x*n.x,t.y=e.y*n.y,t.z=e.z*n.z,t.w=e.w*n.w,t};j.divideComponents=function(e,n,t){return s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t),t.x=e.x/n.x,t.y=e.y/n.y,t.z=e.z/n.z,t.w=e.w/n.w,t};j.add=function(e,n,t){return s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t),t.x=e.x+n.x,t.y=e.y+n.y,t.z=e.z+n.z,t.w=e.w+n.w,t};j.subtract=function(e,n,t){return s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t),t.x=e.x-n.x,t.y=e.y-n.y,t.z=e.z-n.z,t.w=e.w-n.w,t};j.multiplyByScalar=function(e,n,t){return s.typeOf.object("cartesian",e),s.typeOf.number("scalar",n),s.typeOf.object("result",t),t.x=e.x*n,t.y=e.y*n,t.z=e.z*n,t.w=e.w*n,t};j.divideByScalar=function(e,n,t){return s.typeOf.object("cartesian",e),s.typeOf.number("scalar",n),s.typeOf.object("result",t),t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t};j.negate=function(e,n){return s.typeOf.object("cartesian",e),s.typeOf.object("result",n),n.x=-e.x,n.y=-e.y,n.z=-e.z,n.w=-e.w,n};j.abs=function(e,n){return s.typeOf.object("cartesian",e),s.typeOf.object("result",n),n.x=Math.abs(e.x),n.y=Math.abs(e.y),n.z=Math.abs(e.z),n.w=Math.abs(e.w),n};var Et=new j;j.lerp=function(e,n,t,o){return s.typeOf.object("start",e),s.typeOf.object("end",n),s.typeOf.number("t",t),s.typeOf.object("result",o),j.multiplyByScalar(n,t,Et),o=j.multiplyByScalar(e,1-t,o),j.add(Et,o,o)};var zo=new j;j.mostOrthogonalAxis=function(e,n){s.typeOf.object("cartesian",e),s.typeOf.object("result",n);let t=j.normalize(e,zo);return j.abs(t,t),t.x<=t.y?t.x<=t.z?t.x<=t.w?n=j.clone(j.UNIT_X,n):n=j.clone(j.UNIT_W,n):t.z<=t.w?n=j.clone(j.UNIT_Z,n):n=j.clone(j.UNIT_W,n):t.y<=t.z?t.y<=t.w?n=j.clone(j.UNIT_Y,n):n=j.clone(j.UNIT_W,n):t.z<=t.w?n=j.clone(j.UNIT_Z,n):n=j.clone(j.UNIT_W,n),n};j.equals=function(e,n){return e===n||p(e)&&p(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z&&e.w===n.w};j.equalsArray=function(e,n,t){return e.x===n[t]&&e.y===n[t+1]&&e.z===n[t+2]&&e.w===n[t+3]};j.equalsEpsilon=function(e,n,t,o){return e===n||p(e)&&p(n)&&R.equalsEpsilon(e.x,n.x,t,o)&&R.equalsEpsilon(e.y,n.y,t,o)&&R.equalsEpsilon(e.z,n.z,t,o)&&R.equalsEpsilon(e.w,n.w,t,o)};j.ZERO=Object.freeze(new j(0,0,0,0));j.ONE=Object.freeze(new j(1,1,1,1));j.UNIT_X=Object.freeze(new j(1,0,0,0));j.UNIT_Y=Object.freeze(new j(0,1,0,0));j.UNIT_Z=Object.freeze(new j(0,0,1,0));j.UNIT_W=Object.freeze(new j(0,0,0,1));j.prototype.clone=function(e){return j.clone(this,e)};j.prototype.equals=function(e){return j.equals(this,e)};j.prototype.equalsEpsilon=function(e,n,t){return j.equalsEpsilon(this,e,n,t)};j.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z}, ${this.w})`};var Jn=new Float32Array(1),ye=new Uint8Array(Jn.buffer),Io=new Uint32Array([287454020]),qo=new Uint8Array(Io.buffer),Tt=qo[0]===68;j.packFloat=function(e,n){return s.typeOf.number("value",e),p(n)||(n=new j),Jn[0]=e,Tt?(n.x=ye[0],n.y=ye[1],n.z=ye[2],n.w=ye[3]):(n.x=ye[3],n.y=ye[2],n.z=ye[1],n.w=ye[0]),n};j.unpackFloat=function(e){return s.typeOf.object("packedFloat",e),Tt?(ye[0]=e.x,ye[1]=e.y,ye[2]=e.z,ye[3]=e.w):(ye[0]=e.w,ye[1]=e.z,ye[2]=e.y,ye[3]=e.x),Jn[0]};var qe=j;function _(e,n,t,o,i,r,a,u,d,m,l,w,E,T,M,v){this[0]=e??0,this[1]=i??0,this[2]=d??0,this[3]=E??0,this[4]=n??0,this[5]=r??0,this[6]=m??0,this[7]=T??0,this[8]=t??0,this[9]=a??0,this[10]=l??0,this[11]=M??0,this[12]=o??0,this[13]=u??0,this[14]=w??0,this[15]=v??0}_.packedLength=16;_.pack=function(e,n,t){return s.typeOf.object("value",e),s.defined("array",n),t=t??0,n[t++]=e[0],n[t++]=e[1],n[t++]=e[2],n[t++]=e[3],n[t++]=e[4],n[t++]=e[5],n[t++]=e[6],n[t++]=e[7],n[t++]=e[8],n[t++]=e[9],n[t++]=e[10],n[t++]=e[11],n[t++]=e[12],n[t++]=e[13],n[t++]=e[14],n[t]=e[15],n};_.unpack=function(e,n,t){return s.defined("array",e),n=n??0,p(t)||(t=new _),t[0]=e[n++],t[1]=e[n++],t[2]=e[n++],t[3]=e[n++],t[4]=e[n++],t[5]=e[n++],t[6]=e[n++],t[7]=e[n++],t[8]=e[n++],t[9]=e[n++],t[10]=e[n++],t[11]=e[n++],t[12]=e[n++],t[13]=e[n++],t[14]=e[n++],t[15]=e[n],t};_.packArray=function(e,n){s.defined("array",e);let t=e.length,o=t*16;if(!p(n))n=new Array(o);else{if(!Array.isArray(n)&&n.length!==o)throw new A("If result is a typed array, it must have exactly array.length * 16 elements");n.length!==o&&(n.length=o)}for(let i=0;i<t;++i)_.pack(e[i],n,i*16);return n};_.unpackArray=function(e,n){if(s.defined("array",e),s.typeOf.number.greaterThanOrEquals("array.length",e.length,16),e.length%16!==0)throw new A("array length must be a multiple of 16.");let t=e.length;p(n)?n.length=t/16:n=new Array(t/16);for(let o=0;o<t;o+=16){let i=o/16;n[i]=_.unpack(e,o,n[i])}return n};_.clone=function(e,n){if(p(e))return p(n)?(n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n):new _(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15])};_.fromArray=_.unpack;_.fromColumnMajorArray=function(e,n){return s.defined("values",e),_.clone(e,n)};_.fromRowMajorArray=function(e,n){return s.defined("values",e),p(n)?(n[0]=e[0],n[1]=e[4],n[2]=e[8],n[3]=e[12],n[4]=e[1],n[5]=e[5],n[6]=e[9],n[7]=e[13],n[8]=e[2],n[9]=e[6],n[10]=e[10],n[11]=e[14],n[12]=e[3],n[13]=e[7],n[14]=e[11],n[15]=e[15],n):new _(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])};_.fromRotationTranslation=function(e,n,t){return s.typeOf.object("rotation",e),n=n??g.ZERO,p(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=0,t[4]=e[3],t[5]=e[4],t[6]=e[5],t[7]=0,t[8]=e[6],t[9]=e[7],t[10]=e[8],t[11]=0,t[12]=n.x,t[13]=n.y,t[14]=n.z,t[15]=1,t):new _(e[0],e[3],e[6],n.x,e[1],e[4],e[7],n.y,e[2],e[5],e[8],n.z,0,0,0,1)};_.fromTranslationQuaternionRotationScale=function(e,n,t,o){s.typeOf.object("translation",e),s.typeOf.object("rotation",n),s.typeOf.object("scale",t),p(o)||(o=new _);let i=t.x,r=t.y,a=t.z,u=n.x*n.x,d=n.x*n.y,m=n.x*n.z,l=n.x*n.w,w=n.y*n.y,E=n.y*n.z,T=n.y*n.w,M=n.z*n.z,v=n.z*n.w,I=n.w*n.w,N=u-w-M+I,F=2*(d-v),k=2*(m+T),x=2*(d+v),Q=-u+w-M+I,W=2*(E-l),K=2*(m-T),oe=2*(E+l),X=-u-w+M+I;return o[0]=N*i,o[1]=x*i,o[2]=K*i,o[3]=0,o[4]=F*r,o[5]=Q*r,o[6]=oe*r,o[7]=0,o[8]=k*a,o[9]=W*a,o[10]=X*a,o[11]=0,o[12]=e.x,o[13]=e.y,o[14]=e.z,o[15]=1,o};_.fromTranslationRotationScale=function(e,n){return s.typeOf.object("translationRotationScale",e),_.fromTranslationQuaternionRotationScale(e.translation,e.rotation,e.scale,n)};_.fromTranslation=function(e,n){return s.typeOf.object("translation",e),_.fromRotationTranslation(B.IDENTITY,e,n)};_.fromScale=function(e,n){return s.typeOf.object("scale",e),p(n)?(n[0]=e.x,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=e.y,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=e.z,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n):new _(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)};_.fromUniformScale=function(e,n){return s.typeOf.number("scale",e),p(n)?(n[0]=e,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=e,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=e,n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n):new _(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};_.fromRotation=function(e,n){return s.typeOf.object("rotation",e),p(n)||(n=new _),n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=0,n[4]=e[3],n[5]=e[4],n[6]=e[5],n[7]=0,n[8]=e[6],n[9]=e[7],n[10]=e[8],n[11]=0,n[12]=0,n[13]=0,n[14]=0,n[15]=1,n};var Je=new g,Ge=new g,pn=new g;_.fromCamera=function(e,n){s.typeOf.object("camera",e);let t=e.position,o=e.direction,i=e.up;s.typeOf.object("camera.position",t),s.typeOf.object("camera.direction",o),s.typeOf.object("camera.up",i),g.normalize(o,Je),g.normalize(g.cross(Je,i,Ge),Ge),g.normalize(g.cross(Ge,Je,pn),pn);let r=Ge.x,a=Ge.y,u=Ge.z,d=Je.x,m=Je.y,l=Je.z,w=pn.x,E=pn.y,T=pn.z,M=t.x,v=t.y,I=t.z,N=r*-M+a*-v+u*-I,F=w*-M+E*-v+T*-I,k=d*M+m*v+l*I;return p(n)?(n[0]=r,n[1]=w,n[2]=-d,n[3]=0,n[4]=a,n[5]=E,n[6]=-m,n[7]=0,n[8]=u,n[9]=T,n[10]=-l,n[11]=0,n[12]=N,n[13]=F,n[14]=k,n[15]=1,n):new _(r,a,u,N,w,E,T,F,-d,-m,-l,k,0,0,0,1)};_.computePerspectiveFieldOfView=function(e,n,t,o,i){s.typeOf.number.greaterThan("fovY",e,0),s.typeOf.number.lessThan("fovY",e,Math.PI),s.typeOf.number.greaterThan("near",t,0),s.typeOf.number.greaterThan("far",o,0),s.typeOf.object("result",i);let a=1/Math.tan(e*.5),u=a/n,d=(o+t)/(t-o),m=2*o*t/(t-o);return i[0]=u,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=a,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=d,i[11]=-1,i[12]=0,i[13]=0,i[14]=m,i[15]=0,i};_.computeOrthographicOffCenter=function(e,n,t,o,i,r,a){s.typeOf.number("left",e),s.typeOf.number("right",n),s.typeOf.number("bottom",t),s.typeOf.number("top",o),s.typeOf.number("near",i),s.typeOf.number("far",r),s.typeOf.object("result",a);let u=1/(n-e),d=1/(o-t),m=1/(r-i),l=-(n+e)*u,w=-(o+t)*d,E=-(r+i)*m;return u*=2,d*=2,m*=-2,a[0]=u,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=d,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=m,a[11]=0,a[12]=l,a[13]=w,a[14]=E,a[15]=1,a};_.computePerspectiveOffCenter=function(e,n,t,o,i,r,a){s.typeOf.number("left",e),s.typeOf.number("right",n),s.typeOf.number("bottom",t),s.typeOf.number("top",o),s.typeOf.number("near",i),s.typeOf.number("far",r),s.typeOf.object("result",a);let u=2*i/(n-e),d=2*i/(o-t),m=(n+e)/(n-e),l=(o+t)/(o-t),w=-(r+i)/(r-i),E=-1,T=-2*r*i/(r-i);return a[0]=u,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=d,a[6]=0,a[7]=0,a[8]=m,a[9]=l,a[10]=w,a[11]=E,a[12]=0,a[13]=0,a[14]=T,a[15]=0,a};_.computeInfinitePerspectiveOffCenter=function(e,n,t,o,i,r){s.typeOf.number("left",e),s.typeOf.number("right",n),s.typeOf.number("bottom",t),s.typeOf.number("top",o),s.typeOf.number("near",i),s.typeOf.object("result",r);let a=2*i/(n-e),u=2*i/(o-t),d=(n+e)/(n-e),m=(o+t)/(o-t),l=-1,w=-1,E=-2*i;return r[0]=a,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=u,r[6]=0,r[7]=0,r[8]=d,r[9]=m,r[10]=l,r[11]=w,r[12]=0,r[13]=0,r[14]=E,r[15]=0,r};_.computeViewportTransformation=function(e,n,t,o){p(o)||(o=new _),e=e??_e.EMPTY_OBJECT;let i=e.x??0,r=e.y??0,a=e.width??0,u=e.height??0;n=n??0,t=t??1;let d=a*.5,m=u*.5,l=(t-n)*.5,w=d,E=m,T=l,M=i+d,v=r+m,I=n+l,N=1;return o[0]=w,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=E,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=T,o[11]=0,o[12]=M,o[13]=v,o[14]=I,o[15]=N,o};_.computeView=function(e,n,t,o,i){return s.typeOf.object("position",e),s.typeOf.object("direction",n),s.typeOf.object("up",t),s.typeOf.object("right",o),s.typeOf.object("result",i),i[0]=o.x,i[1]=t.x,i[2]=-n.x,i[3]=0,i[4]=o.y,i[5]=t.y,i[6]=-n.y,i[7]=0,i[8]=o.z,i[9]=t.z,i[10]=-n.z,i[11]=0,i[12]=-g.dot(o,e),i[13]=-g.dot(t,e),i[14]=g.dot(n,e),i[15]=1,i};_.toArray=function(e,n){return s.typeOf.object("matrix",e),p(n)?(n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]};_.getElementIndex=function(e,n){return s.typeOf.number.greaterThanOrEquals("row",n,0),s.typeOf.number.lessThanOrEquals("row",n,3),s.typeOf.number.greaterThanOrEquals("column",e,0),s.typeOf.number.lessThanOrEquals("column",e,3),e*4+n};_.getColumn=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.number.greaterThanOrEquals("index",n,0),s.typeOf.number.lessThanOrEquals("index",n,3),s.typeOf.object("result",t);let o=n*4,i=e[o],r=e[o+1],a=e[o+2],u=e[o+3];return t.x=i,t.y=r,t.z=a,t.w=u,t};_.setColumn=function(e,n,t,o){s.typeOf.object("matrix",e),s.typeOf.number.greaterThanOrEquals("index",n,0),s.typeOf.number.lessThanOrEquals("index",n,3),s.typeOf.object("cartesian",t),s.typeOf.object("result",o),o=_.clone(e,o);let i=n*4;return o[i]=t.x,o[i+1]=t.y,o[i+2]=t.z,o[i+3]=t.w,o};_.getRow=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.number.greaterThanOrEquals("index",n,0),s.typeOf.number.lessThanOrEquals("index",n,3),s.typeOf.object("result",t);let o=e[n],i=e[n+4],r=e[n+8],a=e[n+12];return t.x=o,t.y=i,t.z=r,t.w=a,t};_.setRow=function(e,n,t,o){return s.typeOf.object("matrix",e),s.typeOf.number.greaterThanOrEquals("index",n,0),s.typeOf.number.lessThanOrEquals("index",n,3),s.typeOf.object("cartesian",t),s.typeOf.object("result",o),o=_.clone(e,o),o[n]=t.x,o[n+4]=t.y,o[n+8]=t.z,o[n+12]=t.w,o};_.setTranslation=function(e,n,t){return s.typeOf.object("matrix",e),s.typeOf.object("translation",n),s.typeOf.object("result",t),t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=n.x,t[13]=n.y,t[14]=n.z,t[15]=e[15],t};var Do=new g;_.setScale=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("scale",n),s.typeOf.object("result",t);let o=_.getScale(e,Do),i=n.x/o.x,r=n.y/o.y,a=n.z/o.z;return t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i,t[3]=e[3],t[4]=e[4]*r,t[5]=e[5]*r,t[6]=e[6]*r,t[7]=e[7],t[8]=e[8]*a,t[9]=e[9]*a,t[10]=e[10]*a,t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t};var No=new g;_.setUniformScale=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.number("scale",n),s.typeOf.object("result",t);let o=_.getScale(e,No),i=n/o.x,r=n/o.y,a=n/o.z;return t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*i,t[3]=e[3],t[4]=e[4]*r,t[5]=e[5]*r,t[6]=e[6]*r,t[7]=e[7],t[8]=e[8]*a,t[9]=e[9]*a,t[10]=e[10]*a,t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t};var Gn=new g;_.getScale=function(e,n){return s.typeOf.object("matrix",e),s.typeOf.object("result",n),n.x=g.magnitude(g.fromElements(e[0],e[1],e[2],Gn)),n.y=g.magnitude(g.fromElements(e[4],e[5],e[6],Gn)),n.z=g.magnitude(g.fromElements(e[8],e[9],e[10],Gn)),n};var Ct=new g;_.getMaximumScale=function(e){return _.getScale(e,Ct),g.maximumComponent(Ct)};var ko=new g;_.setRotation=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("result",t);let o=_.getScale(e,ko);return t[0]=n[0]*o.x,t[1]=n[1]*o.x,t[2]=n[2]*o.x,t[3]=e[3],t[4]=n[3]*o.y,t[5]=n[4]*o.y,t[6]=n[5]*o.y,t[7]=e[7],t[8]=n[6]*o.z,t[9]=n[7]*o.z,t[10]=n[8]*o.z,t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t};var Fo=new g;_.getRotation=function(e,n){s.typeOf.object("matrix",e),s.typeOf.object("result",n);let t=_.getScale(e,Fo);return n[0]=e[0]/t.x,n[1]=e[1]/t.x,n[2]=e[2]/t.x,n[3]=e[4]/t.y,n[4]=e[5]/t.y,n[5]=e[6]/t.y,n[6]=e[8]/t.z,n[7]=e[9]/t.z,n[8]=e[10]/t.z,n};_.multiply=function(e,n,t){s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t);let o=e[0],i=e[1],r=e[2],a=e[3],u=e[4],d=e[5],m=e[6],l=e[7],w=e[8],E=e[9],T=e[10],M=e[11],v=e[12],I=e[13],N=e[14],F=e[15],k=n[0],x=n[1],Q=n[2],W=n[3],K=n[4],oe=n[5],X=n[6],te=n[7],Z=n[8],c=n[9],f=n[10],h=n[11],y=n[12],O=n[13],C=n[14],b=n[15],z=o*k+u*x+w*Q+v*W,D=i*k+d*x+E*Q+I*W,Y=r*k+m*x+T*Q+N*W,re=a*k+l*x+M*Q+F*W,se=o*K+u*oe+w*X+v*te,ee=i*K+d*oe+E*X+I*te,fe=r*K+m*oe+T*X+N*te,he=a*K+l*oe+M*X+F*te,me=o*Z+u*c+w*f+v*h,de=i*Z+d*c+E*f+I*h,pe=r*Z+m*c+T*f+N*h,V=a*Z+l*c+M*f+F*h,ge=o*y+u*O+w*C+v*b,Te=i*y+d*O+E*C+I*b,je=r*y+m*O+T*C+N*b,fn=a*y+l*O+M*C+F*b;return t[0]=z,t[1]=D,t[2]=Y,t[3]=re,t[4]=se,t[5]=ee,t[6]=fe,t[7]=he,t[8]=me,t[9]=de,t[10]=pe,t[11]=V,t[12]=ge,t[13]=Te,t[14]=je,t[15]=fn,t};_.add=function(e,n,t){return s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t),t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t[3]=e[3]+n[3],t[4]=e[4]+n[4],t[5]=e[5]+n[5],t[6]=e[6]+n[6],t[7]=e[7]+n[7],t[8]=e[8]+n[8],t[9]=e[9]+n[9],t[10]=e[10]+n[10],t[11]=e[11]+n[11],t[12]=e[12]+n[12],t[13]=e[13]+n[13],t[14]=e[14]+n[14],t[15]=e[15]+n[15],t};_.subtract=function(e,n,t){return s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t),t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t[3]=e[3]-n[3],t[4]=e[4]-n[4],t[5]=e[5]-n[5],t[6]=e[6]-n[6],t[7]=e[7]-n[7],t[8]=e[8]-n[8],t[9]=e[9]-n[9],t[10]=e[10]-n[10],t[11]=e[11]-n[11],t[12]=e[12]-n[12],t[13]=e[13]-n[13],t[14]=e[14]-n[14],t[15]=e[15]-n[15],t};_.multiplyTransformation=function(e,n,t){s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t);let o=e[0],i=e[1],r=e[2],a=e[4],u=e[5],d=e[6],m=e[8],l=e[9],w=e[10],E=e[12],T=e[13],M=e[14],v=n[0],I=n[1],N=n[2],F=n[4],k=n[5],x=n[6],Q=n[8],W=n[9],K=n[10],oe=n[12],X=n[13],te=n[14],Z=o*v+a*I+m*N,c=i*v+u*I+l*N,f=r*v+d*I+w*N,h=o*F+a*k+m*x,y=i*F+u*k+l*x,O=r*F+d*k+w*x,C=o*Q+a*W+m*K,b=i*Q+u*W+l*K,z=r*Q+d*W+w*K,D=o*oe+a*X+m*te+E,Y=i*oe+u*X+l*te+T,re=r*oe+d*X+w*te+M;return t[0]=Z,t[1]=c,t[2]=f,t[3]=0,t[4]=h,t[5]=y,t[6]=O,t[7]=0,t[8]=C,t[9]=b,t[10]=z,t[11]=0,t[12]=D,t[13]=Y,t[14]=re,t[15]=1,t};_.multiplyByMatrix3=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("rotation",n),s.typeOf.object("result",t);let o=e[0],i=e[1],r=e[2],a=e[4],u=e[5],d=e[6],m=e[8],l=e[9],w=e[10],E=n[0],T=n[1],M=n[2],v=n[3],I=n[4],N=n[5],F=n[6],k=n[7],x=n[8],Q=o*E+a*T+m*M,W=i*E+u*T+l*M,K=r*E+d*T+w*M,oe=o*v+a*I+m*N,X=i*v+u*I+l*N,te=r*v+d*I+w*N,Z=o*F+a*k+m*x,c=i*F+u*k+l*x,f=r*F+d*k+w*x;return t[0]=Q,t[1]=W,t[2]=K,t[3]=0,t[4]=oe,t[5]=X,t[6]=te,t[7]=0,t[8]=Z,t[9]=c,t[10]=f,t[11]=0,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t};_.multiplyByTranslation=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("translation",n),s.typeOf.object("result",t);let o=n.x,i=n.y,r=n.z,a=o*e[0]+i*e[4]+r*e[8]+e[12],u=o*e[1]+i*e[5]+r*e[9]+e[13],d=o*e[2]+i*e[6]+r*e[10]+e[14];return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=a,t[13]=u,t[14]=d,t[15]=e[15],t};_.multiplyByScale=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("scale",n),s.typeOf.object("result",t);let o=n.x,i=n.y,r=n.z;return o===1&&i===1&&r===1?_.clone(e,t):(t[0]=o*e[0],t[1]=o*e[1],t[2]=o*e[2],t[3]=e[3],t[4]=i*e[4],t[5]=i*e[5],t[6]=i*e[6],t[7]=e[7],t[8]=r*e[8],t[9]=r*e[9],t[10]=r*e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t)};_.multiplyByUniformScale=function(e,n,t){return s.typeOf.object("matrix",e),s.typeOf.number("scale",n),s.typeOf.object("result",t),t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3],t[4]=e[4]*n,t[5]=e[5]*n,t[6]=e[6]*n,t[7]=e[7],t[8]=e[8]*n,t[9]=e[9]*n,t[10]=e[10]*n,t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t};_.multiplyByVector=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("cartesian",n),s.typeOf.object("result",t);let o=n.x,i=n.y,r=n.z,a=n.w,u=e[0]*o+e[4]*i+e[8]*r+e[12]*a,d=e[1]*o+e[5]*i+e[9]*r+e[13]*a,m=e[2]*o+e[6]*i+e[10]*r+e[14]*a,l=e[3]*o+e[7]*i+e[11]*r+e[15]*a;return t.x=u,t.y=d,t.z=m,t.w=l,t};_.multiplyByPointAsVector=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("cartesian",n),s.typeOf.object("result",t);let o=n.x,i=n.y,r=n.z,a=e[0]*o+e[4]*i+e[8]*r,u=e[1]*o+e[5]*i+e[9]*r,d=e[2]*o+e[6]*i+e[10]*r;return t.x=a,t.y=u,t.z=d,t};_.multiplyByPoint=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("cartesian",n),s.typeOf.object("result",t);let o=n.x,i=n.y,r=n.z,a=e[0]*o+e[4]*i+e[8]*r+e[12],u=e[1]*o+e[5]*i+e[9]*r+e[13],d=e[2]*o+e[6]*i+e[10]*r+e[14];return t.x=a,t.y=u,t.z=d,t};_.multiplyByScalar=function(e,n,t){return s.typeOf.object("matrix",e),s.typeOf.number("scalar",n),s.typeOf.object("result",t),t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*n,t[5]=e[5]*n,t[6]=e[6]*n,t[7]=e[7]*n,t[8]=e[8]*n,t[9]=e[9]*n,t[10]=e[10]*n,t[11]=e[11]*n,t[12]=e[12]*n,t[13]=e[13]*n,t[14]=e[14]*n,t[15]=e[15]*n,t};_.negate=function(e,n){return s.typeOf.object("matrix",e),s.typeOf.object("result",n),n[0]=-e[0],n[1]=-e[1],n[2]=-e[2],n[3]=-e[3],n[4]=-e[4],n[5]=-e[5],n[6]=-e[6],n[7]=-e[7],n[8]=-e[8],n[9]=-e[9],n[10]=-e[10],n[11]=-e[11],n[12]=-e[12],n[13]=-e[13],n[14]=-e[14],n[15]=-e[15],n};_.transpose=function(e,n){s.typeOf.object("matrix",e),s.typeOf.object("result",n);let t=e[1],o=e[2],i=e[3],r=e[6],a=e[7],u=e[11];return n[0]=e[0],n[1]=e[4],n[2]=e[8],n[3]=e[12],n[4]=t,n[5]=e[5],n[6]=e[9],n[7]=e[13],n[8]=o,n[9]=r,n[10]=e[10],n[11]=e[14],n[12]=i,n[13]=a,n[14]=u,n[15]=e[15],n};_.abs=function(e,n){return s.typeOf.object("matrix",e),s.typeOf.object("result",n),n[0]=Math.abs(e[0]),n[1]=Math.abs(e[1]),n[2]=Math.abs(e[2]),n[3]=Math.abs(e[3]),n[4]=Math.abs(e[4]),n[5]=Math.abs(e[5]),n[6]=Math.abs(e[6]),n[7]=Math.abs(e[7]),n[8]=Math.abs(e[8]),n[9]=Math.abs(e[9]),n[10]=Math.abs(e[10]),n[11]=Math.abs(e[11]),n[12]=Math.abs(e[12]),n[13]=Math.abs(e[13]),n[14]=Math.abs(e[14]),n[15]=Math.abs(e[15]),n};_.equals=function(e,n){return e===n||p(e)&&p(n)&&e[12]===n[12]&&e[13]===n[13]&&e[14]===n[14]&&e[0]===n[0]&&e[1]===n[1]&&e[2]===n[2]&&e[4]===n[4]&&e[5]===n[5]&&e[6]===n[6]&&e[8]===n[8]&&e[9]===n[9]&&e[10]===n[10]&&e[3]===n[3]&&e[7]===n[7]&&e[11]===n[11]&&e[15]===n[15]};_.equalsEpsilon=function(e,n,t){return t=t??0,e===n||p(e)&&p(n)&&Math.abs(e[0]-n[0])<=t&&Math.abs(e[1]-n[1])<=t&&Math.abs(e[2]-n[2])<=t&&Math.abs(e[3]-n[3])<=t&&Math.abs(e[4]-n[4])<=t&&Math.abs(e[5]-n[5])<=t&&Math.abs(e[6]-n[6])<=t&&Math.abs(e[7]-n[7])<=t&&Math.abs(e[8]-n[8])<=t&&Math.abs(e[9]-n[9])<=t&&Math.abs(e[10]-n[10])<=t&&Math.abs(e[11]-n[11])<=t&&Math.abs(e[12]-n[12])<=t&&Math.abs(e[13]-n[13])<=t&&Math.abs(e[14]-n[14])<=t&&Math.abs(e[15]-n[15])<=t};_.getTranslation=function(e,n){return s.typeOf.object("matrix",e),s.typeOf.object("result",n),n.x=e[12],n.y=e[13],n.z=e[14],n};_.getMatrix3=function(e,n){return s.typeOf.object("matrix",e),s.typeOf.object("result",n),n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[4],n[4]=e[5],n[5]=e[6],n[6]=e[8],n[7]=e[9],n[8]=e[10],n};var Lo=new B,xo=new B,Bo=new qe,Qo=new qe(0,0,0,1);_.inverse=function(e,n){s.typeOf.object("matrix",e),s.typeOf.object("result",n);let t=e[0],o=e[4],i=e[8],r=e[12],a=e[1],u=e[5],d=e[9],m=e[13],l=e[2],w=e[6],E=e[10],T=e[14],M=e[3],v=e[7],I=e[11],N=e[15],F=E*N,k=T*I,x=w*N,Q=T*v,W=w*I,K=E*v,oe=l*N,X=T*M,te=l*I,Z=E*M,c=l*v,f=w*M,h=F*u+Q*d+W*m-(k*u+x*d+K*m),y=k*a+oe*d+Z*m-(F*a+X*d+te*m),O=x*a+X*u+c*m-(Q*a+oe*u+f*m),C=K*a+te*u+f*d-(W*a+Z*u+c*d),b=k*o+x*i+K*r-(F*o+Q*i+W*r),z=F*t+X*i+te*r-(k*t+oe*i+Z*r),D=Q*t+oe*o+f*r-(x*t+X*o+c*r),Y=W*t+Z*o+c*i-(K*t+te*o+f*i);F=i*m,k=r*d,x=o*m,Q=r*u,W=o*d,K=i*u,oe=t*m,X=r*a,te=t*d,Z=i*a,c=t*u,f=o*a;let re=F*v+Q*I+W*N-(k*v+x*I+K*N),se=k*M+oe*I+Z*N-(F*M+X*I+te*N),ee=x*M+X*v+c*N-(Q*M+oe*v+f*N),fe=K*M+te*v+f*I-(W*M+Z*v+c*I),he=x*E+K*T+k*w-(W*T+F*w+Q*E),me=te*T+F*l+X*E-(oe*E+Z*T+k*l),de=oe*w+f*T+Q*l-(c*T+x*l+X*w),pe=c*E+W*l+Z*w-(te*w+f*E+K*l),V=t*h+o*y+i*O+r*C;if(Math.abs(V)<R.EPSILON21){if(B.equalsEpsilon(_.getMatrix3(e,Lo),xo,R.EPSILON7)&&qe.equals(_.getRow(e,3,Bo),Qo))return n[0]=0,n[1]=0,n[2]=0,n[3]=0,n[4]=0,n[5]=0,n[6]=0,n[7]=0,n[8]=0,n[9]=0,n[10]=0,n[11]=0,n[12]=-e[12],n[13]=-e[13],n[14]=-e[14],n[15]=1,n;throw new Se("matrix is not invertible because its determinate is zero.")}return V=1/V,n[0]=h*V,n[1]=y*V,n[2]=O*V,n[3]=C*V,n[4]=b*V,n[5]=z*V,n[6]=D*V,n[7]=Y*V,n[8]=re*V,n[9]=se*V,n[10]=ee*V,n[11]=fe*V,n[12]=he*V,n[13]=me*V,n[14]=de*V,n[15]=pe*V,n};_.inverseTransformation=function(e,n){s.typeOf.object("matrix",e),s.typeOf.object("result",n);let t=e[0],o=e[1],i=e[2],r=e[4],a=e[5],u=e[6],d=e[8],m=e[9],l=e[10],w=e[12],E=e[13],T=e[14],M=-t*w-o*E-i*T,v=-r*w-a*E-u*T,I=-d*w-m*E-l*T;return n[0]=t,n[1]=r,n[2]=d,n[3]=0,n[4]=o,n[5]=a,n[6]=m,n[7]=0,n[8]=i,n[9]=u,n[10]=l,n[11]=0,n[12]=M,n[13]=v,n[14]=I,n[15]=1,n};var Wo=new _;_.inverseTranspose=function(e,n){return s.typeOf.object("matrix",e),s.typeOf.object("result",n),_.inverse(_.transpose(e,Wo),n)};_.IDENTITY=Object.freeze(new _(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1));_.ZERO=Object.freeze(new _(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0));_.COLUMN0ROW0=0;_.COLUMN0ROW1=1;_.COLUMN0ROW2=2;_.COLUMN0ROW3=3;_.COLUMN1ROW0=4;_.COLUMN1ROW1=5;_.COLUMN1ROW2=6;_.COLUMN1ROW3=7;_.COLUMN2ROW0=8;_.COLUMN2ROW1=9;_.COLUMN2ROW2=10;_.COLUMN2ROW3=11;_.COLUMN3ROW0=12;_.COLUMN3ROW1=13;_.COLUMN3ROW2=14;_.COLUMN3ROW3=15;Object.defineProperties(_.prototype,{length:{get:function(){return _.packedLength}}});_.prototype.clone=function(e){return _.clone(this,e)};_.prototype.equals=function(e){return _.equals(this,e)};_.equalsArray=function(e,n,t){return e[0]===n[t]&&e[1]===n[t+1]&&e[2]===n[t+2]&&e[3]===n[t+3]&&e[4]===n[t+4]&&e[5]===n[t+5]&&e[6]===n[t+6]&&e[7]===n[t+7]&&e[8]===n[t+8]&&e[9]===n[t+9]&&e[10]===n[t+10]&&e[11]===n[t+11]&&e[12]===n[t+12]&&e[13]===n[t+13]&&e[14]===n[t+14]&&e[15]===n[t+15]};_.prototype.equalsEpsilon=function(e,n){return _.equalsEpsilon(this,e,n)};_.prototype.toString=function(){return`(${this[0]}, ${this[4]}, ${this[8]}, ${this[12]}) +(${this[1]}, ${this[5]}, ${this[9]}, ${this[13]}) +(${this[2]}, ${this[6]}, ${this[10]}, ${this[14]}) +(${this[3]}, ${this[7]}, ${this[11]}, ${this[15]})`};var J=_;function vt(e,n,t){t=t??!1;let o={},i=p(e),r=p(n),a,u,d;if(i)for(a in e)e.hasOwnProperty(a)&&(u=e[a],r&&t&&typeof u=="object"&&n.hasOwnProperty(a)?(d=n[a],typeof d=="object"?o[a]=vt(u,d,t):o[a]=u):o[a]=u);if(r)for(a in n)n.hasOwnProperty(a)&&!o.hasOwnProperty(a)&&(d=n[a],o[a]=d);return o}var De=vt;function Ho(e,n,t){s.defined("array",e),s.defined("itemToFind",n),s.defined("comparator",t);let o=0,i=e.length-1,r,a;for(;o<=i;){if(r=~~((o+i)/2),a=t(e[r],n),a<0){o=r+1;continue}if(a>0){i=r-1;continue}return r}return~(i+1)}var Be=Ho;function $o(e,n,t,o,i){this.xPoleWander=e,this.yPoleWander=n,this.xPoleOffset=t,this.yPoleOffset=o,this.ut1MinusUtc=i}var hn=$o;function Yo(e){if(e===null||isNaN(e))throw new A("year is required and must be a number.");return e%4===0&&e%100!==0||e%400===0}var dn=Yo;var At=[31,28,31,30,31,30,31,31,30,31,30,31];function Vo(e,n,t,o,i,r,a,u){e=e??1,n=n??1,t=t??1,o=o??0,i=i??0,r=r??0,a=a??0,u=u??!1,v(),I(),this.year=e,this.month=n,this.day=t,this.hour=o,this.minute=i,this.second=r,this.millisecond=a,this.isLeapSecond=u;function v(){s.typeOf.number.greaterThanOrEquals("Year",e,1),s.typeOf.number.lessThanOrEquals("Year",e,9999),s.typeOf.number.greaterThanOrEquals("Month",n,1),s.typeOf.number.lessThanOrEquals("Month",n,12),s.typeOf.number.greaterThanOrEquals("Day",t,1),s.typeOf.number.lessThanOrEquals("Day",t,31),s.typeOf.number.greaterThanOrEquals("Hour",o,0),s.typeOf.number.lessThanOrEquals("Hour",o,23),s.typeOf.number.greaterThanOrEquals("Minute",i,0),s.typeOf.number.lessThanOrEquals("Minute",i,59),s.typeOf.bool("IsLeapSecond",u),s.typeOf.number.greaterThanOrEquals("Second",r,0),s.typeOf.number.lessThanOrEquals("Second",r,u?60:59),s.typeOf.number.greaterThanOrEquals("Millisecond",a,0),s.typeOf.number.lessThan("Millisecond",a,1e3)}function I(){let N=n===2&&dn(e)?At[n-1]+1:At[n-1];if(t>N)throw new A("Month and Day represents invalid date")}}var Tn=Vo;function Xo(e,n){this.julianDate=e,this.offset=n}var ne=Xo;var Zo={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:24000005e-1},ie=Object.freeze(Zo);var Jo={UTC:0,TAI:1},H=Object.freeze(Jo);var Mt=new Tn,Cn=[31,28,31,30,31,30,31,31,30,31,30,31],vn=29;function Kn(e,n){return U.compare(e.julianDate,n.julianDate)}var Ke=new ne;function jn(e){Ke.julianDate=e;let n=U.leapSeconds,t=Be(n,Ke,Kn);t<0&&(t=~t),t>=n.length&&(t=n.length-1);let o=n[t].offset;t>0&&U.secondsDifference(n[t].julianDate,e)>o&&(t--,o=n[t].offset),U.addSeconds(e,o,e)}function jt(e,n){Ke.julianDate=e;let t=U.leapSeconds,o=Be(t,Ke,Kn);if(o<0&&(o=~o),o===0)return U.addSeconds(e,-t[0].offset,n);if(o>=t.length)return U.addSeconds(e,-t[o-1].offset,n);let i=U.secondsDifference(t[o].julianDate,e);if(i===0)return U.addSeconds(e,-t[o].offset,n);if(!(i<=1))return U.addSeconds(e,-t[--o].offset,n)}function Ne(e,n,t){let o=n/ie.SECONDS_PER_DAY|0;return e+=o,n-=ie.SECONDS_PER_DAY*o,n<0&&(e--,n+=ie.SECONDS_PER_DAY),t.dayNumber=e,t.secondsOfDay=n,t}function et(e,n,t,o,i,r,a){let u=(n-14)/12|0,d=e+4800+u,m=(1461*d/4|0)+(367*(n-2-12*u)/12|0)-(3*((d+100)/100|0)/4|0)+t-32075;o=o-12,o<0&&(o+=24);let l=r+(o*ie.SECONDS_PER_HOUR+i*ie.SECONDS_PER_MINUTE+a*ie.SECONDS_PER_MILLISECOND);return l>=43200&&(m-=1),[m,l]}var Go=/^(\d{4})$/,Ko=/^(\d{4})-(\d{2})$/,er=/^(\d{4})-?(\d{3})$/,nr=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,tr=/^(\d{4})-?(\d{2})-?(\d{2})$/,nt=/([Z+\-])?(\d{2})?:?(\d{2})?$/,or=/^(\d{2})(\.\d+)?/.source+nt.source,rr=/^(\d{2}):?(\d{2})(\.\d+)?/.source+nt.source,ir=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+nt.source,Re="Invalid ISO 8601 date.";function U(e,n,t){this.dayNumber=void 0,this.secondsOfDay=void 0,e=e??0,n=n??0,t=t??H.UTC;let o=e|0;n=n+(e-o)*ie.SECONDS_PER_DAY,Ne(o,n,this),t===H.UTC&&jn(this)}U.fromGregorianDate=function(e,n){if(!(e instanceof Tn))throw new A("date must be a valid GregorianDate.");let t=et(e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond);return p(n)?(Ne(t[0],t[1],n),jn(n),n):new U(t[0],t[1],H.UTC)};U.fromDate=function(e,n){if(!(e instanceof Date)||isNaN(e.getTime()))throw new A("date must be a valid JavaScript Date.");let t=et(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return p(n)?(Ne(t[0],t[1],n),jn(n),n):new U(t[0],t[1],H.UTC)};U.fromIso8601=function(e,n){if(typeof e!="string")throw new A(Re);e=e.replace(",",".");let t=e.split("T"),o,i=1,r=1,a=0,u=0,d=0,m=0,l=t[0],w=t[1],E,T;if(!p(l))throw new A(Re);let M;if(t=l.match(tr),t!==null){if(M=l.split("-").length-1,M>0&&M!==2)throw new A(Re);o=+t[1],i=+t[2],r=+t[3]}else if(t=l.match(Ko),t!==null)o=+t[1],i=+t[2];else if(t=l.match(Go),t!==null)o=+t[1];else{let F;if(t=l.match(er),t!==null){if(o=+t[1],F=+t[2],T=dn(o),F<1||T&&F>366||!T&&F>365)throw new A(Re)}else if(t=l.match(nr),t!==null){o=+t[1];let k=+t[2],x=+t[3]||0;if(M=l.split("-").length-1,M>0&&(!p(t[3])&&M!==1||p(t[3])&&M!==2))throw new A(Re);let Q=new Date(Date.UTC(o,0,4));F=k*7+x-Q.getUTCDay()-3}else throw new A(Re);E=new Date(Date.UTC(o,0,1)),E.setUTCDate(F),i=E.getUTCMonth()+1,r=E.getUTCDate()}if(T=dn(o),i<1||i>12||r<1||(i!==2||!T)&&r>Cn[i-1]||T&&i===2&&r>vn)throw new A(Re);let v;if(p(w)){if(t=w.match(ir),t!==null){if(M=w.split(":").length-1,M>0&&M!==2&&M!==3)throw new A(Re);a=+t[1],u=+t[2],d=+t[3],m=+(t[4]||0)*1e3,v=5}else if(t=w.match(rr),t!==null){if(M=w.split(":").length-1,M>2)throw new A(Re);a=+t[1],u=+t[2],d=+(t[3]||0)*60,v=4}else if(t=w.match(or),t!==null)a=+t[1],u=+(t[2]||0)*60,v=3;else throw new A(Re);if(u>=60||d>=61||a>24||a===24&&(u>0||d>0||m>0))throw new A(Re);let F=t[v],k=+t[v+1],x=+(t[v+2]||0);switch(F){case"+":a=a-k,u=u-x;break;case"-":a=a+k,u=u+x;break;case"Z":break;default:u=u+new Date(Date.UTC(o,i-1,r,a,u)).getTimezoneOffset();break}}let I=d===60;for(I&&d--;u>=60;)u-=60,a++;for(;a>=24;)a-=24,r++;for(E=T&&i===2?vn:Cn[i-1];r>E;)r-=E,i++,i>12&&(i-=12,o++),E=T&&i===2?vn:Cn[i-1];for(;u<0;)u+=60,a--;for(;a<0;)a+=24,r--;for(;r<1;)i--,i<1&&(i+=12,o--),E=T&&i===2?vn:Cn[i-1],r+=E;let N=et(o,i,r,a,u,d,m);return p(n)?(Ne(N[0],N[1],n),jn(n)):n=new U(N[0],N[1],H.UTC),I&&U.addSeconds(n,1,n),n};U.now=function(e){return U.fromDate(new Date,e)};var An=new U(0,0,H.TAI);U.toGregorianDate=function(e,n){if(!p(e))throw new A("julianDate is required.");let t=!1,o=jt(e,An);p(o)||(U.addSeconds(e,-1,An),o=jt(An,An),t=!0);let i=o.dayNumber,r=o.secondsOfDay;r>=43200&&(i+=1);let a=i+68569|0,u=4*a/146097|0;a=a-((146097*u+3)/4|0)|0;let d=4e3*(a+1)/1461001|0;a=a-(1461*d/4|0)+31|0;let m=80*a/2447|0,l=a-(2447*m/80|0)|0;a=m/11|0;let w=m+2-12*a|0,E=100*(u-49)+d+a|0,T=r/ie.SECONDS_PER_HOUR|0,M=r-T*ie.SECONDS_PER_HOUR,v=M/ie.SECONDS_PER_MINUTE|0;M=M-v*ie.SECONDS_PER_MINUTE;let I=M|0,N=(M-I)/ie.SECONDS_PER_MILLISECOND;return T+=12,T>23&&(T-=24),t&&(I+=1),p(n)?(n.year=E,n.month=w,n.day=l,n.hour=T,n.minute=v,n.second=I,n.millisecond=N,n.isLeapSecond=t,n):new Tn(E,w,l,T,v,I,N,t)};U.toDate=function(e){if(!p(e))throw new A("julianDate is required.");let n=U.toGregorianDate(e,Mt),t=n.second;return n.isLeapSecond&&(t-=1),new Date(Date.UTC(n.year,n.month-1,n.day,n.hour,n.minute,t,n.millisecond))};U.toIso8601=function(e,n){if(!p(e))throw new A("julianDate is required.");let t=U.toGregorianDate(e,Mt),o=t.year,i=t.month,r=t.day,a=t.hour,u=t.minute,d=t.second,m=t.millisecond;o===1e4&&i===1&&r===1&&a===0&&u===0&&d===0&&m===0&&(o=9999,i=12,r=31,a=24);let l;if(!p(n)&&m!==0){let w=m*.01;return l=w<1e-6?w.toFixed(20).replace(".","").replace(/0+$/,""):w.toString().replace(".",""),`${o.toString().padStart(4,"0")}-${i.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${a.toString().padStart(2,"0")}:${u.toString().padStart(2,"0")}:${d.toString().padStart(2,"0")}.${l}Z`}return!p(n)||n===0?`${o.toString().padStart(4,"0")}-${i.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${a.toString().padStart(2,"0")}:${u.toString().padStart(2,"0")}:${d.toString().padStart(2,"0")}Z`:(l=(m*.01).toFixed(n).replace(".","").slice(0,n),`${o.toString().padStart(4,"0")}-${i.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${a.toString().padStart(2,"0")}:${u.toString().padStart(2,"0")}:${d.toString().padStart(2,"0")}.${l}Z`)};U.clone=function(e,n){if(p(e))return p(n)?(n.dayNumber=e.dayNumber,n.secondsOfDay=e.secondsOfDay,n):new U(e.dayNumber,e.secondsOfDay,H.TAI)};U.compare=function(e,n){if(!p(e))throw new A("left is required.");if(!p(n))throw new A("right is required.");let t=e.dayNumber-n.dayNumber;return t!==0?t:e.secondsOfDay-n.secondsOfDay};U.equals=function(e,n){return e===n||p(e)&&p(n)&&e.dayNumber===n.dayNumber&&e.secondsOfDay===n.secondsOfDay};U.equalsEpsilon=function(e,n,t){return t=t??0,e===n||p(e)&&p(n)&&Math.abs(U.secondsDifference(e,n))<=t};U.totalDays=function(e){if(!p(e))throw new A("julianDate is required.");return e.dayNumber+e.secondsOfDay/ie.SECONDS_PER_DAY};U.secondsDifference=function(e,n){if(!p(e))throw new A("left is required.");if(!p(n))throw new A("right is required.");return(e.dayNumber-n.dayNumber)*ie.SECONDS_PER_DAY+(e.secondsOfDay-n.secondsOfDay)};U.daysDifference=function(e,n){if(!p(e))throw new A("left is required.");if(!p(n))throw new A("right is required.");let t=e.dayNumber-n.dayNumber,o=(e.secondsOfDay-n.secondsOfDay)/ie.SECONDS_PER_DAY;return t+o};U.computeTaiMinusUtc=function(e){Ke.julianDate=e;let n=U.leapSeconds,t=Be(n,Ke,Kn);return t<0&&(t=~t,--t,t<0&&(t=0)),n[t].offset};U.addSeconds=function(e,n,t){if(!p(e))throw new A("julianDate is required.");if(!p(n))throw new A("seconds is required.");if(!p(t))throw new A("result is required.");return Ne(e.dayNumber,e.secondsOfDay+n,t)};U.addMinutes=function(e,n,t){if(!p(e))throw new A("julianDate is required.");if(!p(n))throw new A("minutes is required.");if(!p(t))throw new A("result is required.");let o=e.secondsOfDay+n*ie.SECONDS_PER_MINUTE;return Ne(e.dayNumber,o,t)};U.addHours=function(e,n,t){if(!p(e))throw new A("julianDate is required.");if(!p(n))throw new A("hours is required.");if(!p(t))throw new A("result is required.");let o=e.secondsOfDay+n*ie.SECONDS_PER_HOUR;return Ne(e.dayNumber,o,t)};U.addDays=function(e,n,t){if(!p(e))throw new A("julianDate is required.");if(!p(n))throw new A("days is required.");if(!p(t))throw new A("result is required.");let o=e.dayNumber+n;return Ne(o,e.secondsOfDay,t)};U.lessThan=function(e,n){return U.compare(e,n)<0};U.lessThanOrEquals=function(e,n){return U.compare(e,n)<=0};U.greaterThan=function(e,n){return U.compare(e,n)>0};U.greaterThanOrEquals=function(e,n){return U.compare(e,n)>=0};U.prototype.clone=function(e){return U.clone(this,e)};U.prototype.equals=function(e){return U.equals(this,e)};U.prototype.equalsEpsilon=function(e,n){return U.equalsEpsilon(this,e,n)};U.prototype.toString=function(){return U.toIso8601(this)};U.leapSeconds=[new ne(new U(2441317,43210,H.TAI),10),new ne(new U(2441499,43211,H.TAI),11),new ne(new U(2441683,43212,H.TAI),12),new ne(new U(2442048,43213,H.TAI),13),new ne(new U(2442413,43214,H.TAI),14),new ne(new U(2442778,43215,H.TAI),15),new ne(new U(2443144,43216,H.TAI),16),new ne(new U(2443509,43217,H.TAI),17),new ne(new U(2443874,43218,H.TAI),18),new ne(new U(2444239,43219,H.TAI),19),new ne(new U(2444786,43220,H.TAI),20),new ne(new U(2445151,43221,H.TAI),21),new ne(new U(2445516,43222,H.TAI),22),new ne(new U(2446247,43223,H.TAI),23),new ne(new U(2447161,43224,H.TAI),24),new ne(new U(2447892,43225,H.TAI),25),new ne(new U(2448257,43226,H.TAI),26),new ne(new U(2448804,43227,H.TAI),27),new ne(new U(2449169,43228,H.TAI),28),new ne(new U(2449534,43229,H.TAI),29),new ne(new U(2450083,43230,H.TAI),30),new ne(new U(2450630,43231,H.TAI),31),new ne(new U(2451179,43232,H.TAI),32),new ne(new U(2453736,43233,H.TAI),33),new ne(new U(2454832,43234,H.TAI),34),new ne(new U(2456109,43235,H.TAI),35),new ne(new U(2457204,43236,H.TAI),36),new ne(new U(2457754,43237,H.TAI),37)];var ue=U;var co=Ze(Qe(),1);function cr(e){return(e.length===0||e[e.length-1]!=="/")&&(e=`${e}/`),e}var Nt=cr;function kt(e,n){if(e===null||typeof e!="object")return e;n=n??!1;let t=new e.constructor;for(let o in e)if(e.hasOwnProperty(o)){let i=e[o];n&&(i=kt(i,n)),t[o]=i}return t}var tn=kt;function sr(){let e,n,t=new Promise(function(o,i){e=o,n=i});return{resolve:e,reject:n,promise:t}}var We=sr;var Ft=Ze(Qe(),1);function tt(e,n){let t;return typeof document<"u"&&(t=document),tt._implementation(e,n,t)}tt._implementation=function(e,n,t){if(!p(e))throw new A("relative uri is required.");if(!p(n)){if(typeof t>"u")return e;n=t.baseURI??t.location.href}let o=new Ft.default(e);return o.scheme()!==""?o.toString():o.absoluteTo(n).toString()};var mn=tt;var Lt=Ze(Qe(),1);function ar(e,n){if(!p(e))throw new A("uri is required.");let t="",o=e.lastIndexOf("/");return o!==-1&&(t=e.substring(0,o+1)),n&&(e=new Lt.default(e),e.query().length!==0&&(t+=`?${e.query()}`),e.fragment().length!==0&&(t+=`#${e.fragment()}`)),t}var xt=ar;var Bt=Ze(Qe(),1);function fr(e){if(!p(e))throw new A("uri is required.");let n=new Bt.default(e);n.normalize();let t=n.path(),o=t.lastIndexOf("/");return o!==-1&&(t=t.substr(o+1)),o=t.lastIndexOf("."),o===-1?t="":t=t.substr(o+1),t}var Qt=fr;var Wt={};function ur(e,n,t){p(n)||(n=e.width),p(t)||(t=e.height);let o=Wt[n];p(o)||(o={},Wt[n]=o);let i=o[t];if(!p(i)){let r=document.createElement("canvas");r.width=n,r.height=t,i=r.getContext("2d",{willReadFrequently:!0}),i.globalCompositeOperation="copy",o[t]=i}return i.drawImage(e,0,0,n,t),i.getImageData(0,0,n,t).data}var ot=ur;var pr=/^blob:/i;function hr(e){return s.typeOf.string("uri",e),pr.test(e)}var zn=hr;var Ce;function dr(e){p(Ce)||(Ce=document.createElement("a")),Ce.href=window.location.href;let n=Ce.host,t=Ce.protocol;return Ce.href=e,Ce.href=Ce.href,t!==Ce.protocol||n!==Ce.host}var Ht=dr;var mr=/^data:/i;function yr(e){return s.typeOf.string("uri",e),mr.test(e)}var In=yr;function lr(e){let n=document.createElement("script");return n.async=!0,n.src=e,new Promise((t,o)=>{window.crossOriginIsolated&&n.setAttribute("crossorigin","anonymous");let i=document.getElementsByTagName("head")[0];n.onload=function(){n.onload=void 0,i.removeChild(n),t()},n.onerror=function(r){o(r)},i.appendChild(n)})}var $t=lr;function wr(e){if(!p(e))throw new A("obj is required.");let n="";for(let t in e)if(e.hasOwnProperty(t)){let o=e[t],i=`${encodeURIComponent(t)}=`;if(Array.isArray(o))for(let r=0,a=o.length;r<a;++r)n+=`${i+encodeURIComponent(o[r])}&`;else n+=`${i+encodeURIComponent(o)}&`}return n=n.slice(0,-1),n}var Yt=wr;function br(e){if(!p(e))throw new A("queryString is required.");let n={};if(e==="")return n;let t=e.replace(/\+/g,"%20").split(/[&;]/);for(let o=0,i=t.length;o<i;++o){let r=t[o].split("="),a=decodeURIComponent(r[0]),u=r[1];p(u)?u=decodeURIComponent(u):u="";let d=n[a];typeof d=="string"?n[a]=[d,u]:Array.isArray(d)?d.push(u):n[a]=u}return n}var Vt=br;var Or={UNISSUED:0,ISSUED:1,ACTIVE:2,RECEIVED:3,CANCELLED:4,FAILED:5},ae=Object.freeze(Or);var gr={TERRAIN:0,IMAGERY:1,TILES3D:2,OTHER:3},Xt=Object.freeze(gr);function qn(e){e=e??_e.EMPTY_OBJECT;let n=e.throttleByServer??!1,t=e.throttle??!1;this.url=e.url,this.requestFunction=e.requestFunction,this.cancelFunction=e.cancelFunction,this.priorityFunction=e.priorityFunction,this.priority=e.priority??0,this.throttle=t,this.throttleByServer=n,this.type=e.type??Xt.OTHER,this.serverKey=e.serverKey,this.state=ae.UNISSUED,this.deferred=void 0,this.cancelled=!1}qn.prototype.cancel=function(){this.cancelled=!0};qn.prototype.clone=function(e){return p(e)?(e.url=this.url,e.requestFunction=this.requestFunction,e.cancelFunction=this.cancelFunction,e.priorityFunction=this.priorityFunction,e.priority=this.priority,e.throttle=this.throttle,e.throttleByServer=this.throttleByServer,e.type=this.type,e.serverKey=this.serverKey,e.state=ae.UNISSUED,e.deferred=void 0,e.cancelled=!1,e):new qn(this)};var Zt=qn;function _r(e){let n={};if(!e)return n;let t=e.split(`\r +`);for(let o=0;o<t.length;++o){let i=t[o],r=i.indexOf(": ");if(r>0){let a=i.substring(0,r),u=i.substring(r+2);n[a]=u}}return n}var Jt=_r;function Gt(e,n,t){this.statusCode=e,this.response=n,this.responseHeaders=t,typeof this.responseHeaders=="string"&&(this.responseHeaders=Jt(this.responseHeaders))}Gt.prototype.toString=function(){let e="Request has failed.";return p(this.statusCode)&&(e+=` Status Code: ${this.statusCode}`),e};var yn=Gt;var Dn=Ze(Qe(),1);function ln(){this._listeners=[],this._scopes=[],this._toRemove=[],this._insideRaiseEvent=!1}Object.defineProperties(ln.prototype,{numberOfListeners:{get:function(){return this._listeners.length-this._toRemove.length}}});ln.prototype.addEventListener=function(e,n){s.typeOf.func("listener",e),this._listeners.push(e),this._scopes.push(n);let t=this;return function(){t.removeEventListener(e,n)}};ln.prototype.removeEventListener=function(e,n){s.typeOf.func("listener",e);let t=this._listeners,o=this._scopes,i=-1;for(let r=0;r<t.length;r++)if(t[r]===e&&o[r]===n){i=r;break}return i!==-1?(this._insideRaiseEvent?(this._toRemove.push(i),t[i]=void 0,o[i]=void 0):(t.splice(i,1),o.splice(i,1)),!0):!1};function Sr(e,n){return n-e}ln.prototype.raiseEvent=function(){this._insideRaiseEvent=!0;let e,n=this._listeners,t=this._scopes,o=n.length;for(e=0;e<o;e++){let r=n[e];p(r)&&n[e].apply(t[e],arguments)}let i=this._toRemove;if(o=i.length,o>0){for(i.sort(Sr),e=0;e<o;e++){let r=i[e];n.splice(r,1),t.splice(r,1)}i.length=0}this._insideRaiseEvent=!1};var Kt=ln;function He(e){s.typeOf.object("options",e),s.defined("options.comparator",e.comparator),this._comparator=e.comparator,this._array=[],this._length=0,this._maximumLength=void 0}Object.defineProperties(He.prototype,{length:{get:function(){return this._length}},internalArray:{get:function(){return this._array}},maximumLength:{get:function(){return this._maximumLength},set:function(e){s.typeOf.number.greaterThanOrEquals("maximumLength",e,0);let n=this._length;if(e<n){let t=this._array;for(let o=e;o<n;++o)t[o]=void 0;this._length=e,t.length=e}this._maximumLength=e}},comparator:{get:function(){return this._comparator}}});function rt(e,n,t){let o=e[n];e[n]=e[t],e[t]=o}He.prototype.reserve=function(e){e=e??this._length,this._array.length=e};He.prototype.heapify=function(e){e=e??0;let n=this._length,t=this._comparator,o=this._array,i=-1,r=!0;for(;r;){let a=2*(e+1),u=a-1;u<n&&t(o[u],o[e])<0?i=u:i=e,a<n&&t(o[a],o[i])<0&&(i=a),i!==e?(rt(o,i,e),e=i):r=!1}};He.prototype.resort=function(){let e=this._length;for(let n=Math.ceil(e/2);n>=0;--n)this.heapify(n)};He.prototype.insert=function(e){s.defined("element",e);let n=this._array,t=this._comparator,o=this._maximumLength,i=this._length++;for(i<n.length?n[i]=e:n.push(e);i!==0;){let a=Math.floor((i-1)/2);if(t(n[i],n[a])<0)rt(n,i,a),i=a;else break}let r;return p(o)&&this._length>o&&(r=n[o],this._length=o),r};He.prototype.pop=function(e){if(e=e??0,this._length===0)return;s.typeOf.number.lessThan("index",e,this._length);let n=this._array,t=n[e];return rt(n,e,--this._length),this.heapify(e),n[this._length]=void 0,t};var eo=He;function Rr(e,n){return e.priority-n.priority}var G={numberOfAttemptedRequests:0,numberOfActiveRequests:0,numberOfCancelledRequests:0,numberOfCancelledActiveRequests:0,numberOfFailedRequests:0,numberOfActiveRequestsEver:0,lastNumberOfActiveRequests:0},on=20,le=new eo({comparator:Rr});le.maximumLength=on;le.reserve(on);var ve=[],Pe={},Er=typeof document<"u"?new Dn.default(document.location.href):new Dn.default,Nn=new Kt;function ce(){}ce.maximumRequests=50;ce.maximumRequestsPerServer=18;ce.requestsByServer={};ce.throttleRequests=!0;ce.debugShowStatistics=!1;ce.requestCompletedEvent=Nn;Object.defineProperties(ce,{statistics:{get:function(){return G}},priorityHeapLength:{get:function(){return on},set:function(e){if(e<on)for(;le.length>e;){let n=le.pop();$e(n)}on=e,le.maximumLength=e,le.reserve(e)}}});function no(e){p(e.priorityFunction)&&(e.priority=e.priorityFunction())}ce.serverHasOpenSlots=function(e,n){n=n??1;let t=ce.requestsByServer[e]??ce.maximumRequestsPerServer;return Pe[e]+n<=t};ce.heapHasOpenSlots=function(e){return le.length+e<=on};function to(e){return e.state===ae.UNISSUED&&(e.state=ae.ISSUED,e.deferred=We()),e.deferred.promise}function Tr(e){return function(n){if(e.state===ae.CANCELLED)return;let t=e.deferred;--G.numberOfActiveRequests,--Pe[e.serverKey],Nn.raiseEvent(),e.state=ae.RECEIVED,e.deferred=void 0,t.resolve(n)}}function Cr(e){return function(n){e.state!==ae.CANCELLED&&(++G.numberOfFailedRequests,--G.numberOfActiveRequests,--Pe[e.serverKey],Nn.raiseEvent(n),e.state=ae.FAILED,e.deferred.reject(n))}}function oo(e){let n=to(e);return e.state=ae.ACTIVE,ve.push(e),++G.numberOfActiveRequests,++G.numberOfActiveRequestsEver,++Pe[e.serverKey],e.requestFunction().then(Tr(e)).catch(Cr(e)),n}function $e(e){let n=e.state===ae.ACTIVE;if(e.state=ae.CANCELLED,++G.numberOfCancelledRequests,p(e.deferred)){let t=e.deferred;e.deferred=void 0,t.reject()}n&&(--G.numberOfActiveRequests,--Pe[e.serverKey],++G.numberOfCancelledActiveRequests),p(e.cancelFunction)&&e.cancelFunction()}ce.update=function(){let e,n,t=0,o=ve.length;for(e=0;e<o;++e){if(n=ve[e],n.cancelled&&$e(n),n.state!==ae.ACTIVE){++t;continue}t>0&&(ve[e-t]=n)}ve.length-=t;let i=le.internalArray,r=le.length;for(e=0;e<r;++e)no(i[e]);le.resort();let a=Math.max(ce.maximumRequests-ve.length,0),u=0;for(;u<a&&le.length>0;){if(n=le.pop(),n.cancelled){$e(n);continue}if(n.throttleByServer&&!ce.serverHasOpenSlots(n.serverKey)){$e(n);continue}oo(n),++u}vr()};ce.getServerKey=function(e){s.typeOf.string("url",e);let n=new Dn.default(e);n.scheme()===""&&(n=n.absoluteTo(Er),n.normalize());let t=n.authority();/:/.test(t)||(t=`${t}:${n.scheme()==="https"?"443":"80"}`);let o=Pe[t];return p(o)||(Pe[t]=0),t};ce.request=function(e){if(s.typeOf.object("request",e),s.typeOf.string("request.url",e.url),s.typeOf.func("request.requestFunction",e.requestFunction),In(e.url)||zn(e.url))return Nn.raiseEvent(),e.state=ae.RECEIVED,e.requestFunction();if(++G.numberOfAttemptedRequests,p(e.serverKey)||(e.serverKey=ce.getServerKey(e.url)),ce.throttleRequests&&e.throttleByServer&&!ce.serverHasOpenSlots(e.serverKey))return;if(!ce.throttleRequests||!e.throttle)return oo(e);if(ve.length>=ce.maximumRequests)return;no(e);let n=le.insert(e);if(p(n)){if(n===e)return;$e(n)}return to(e)};function vr(){ce.debugShowStatistics&&(G.numberOfActiveRequests===0&&G.lastNumberOfActiveRequests>0&&(G.numberOfAttemptedRequests>0&&(console.log(`Number of attempted requests: ${G.numberOfAttemptedRequests}`),G.numberOfAttemptedRequests=0),G.numberOfCancelledRequests>0&&(console.log(`Number of cancelled requests: ${G.numberOfCancelledRequests}`),G.numberOfCancelledRequests=0),G.numberOfCancelledActiveRequests>0&&(console.log(`Number of cancelled active requests: ${G.numberOfCancelledActiveRequests}`),G.numberOfCancelledActiveRequests=0),G.numberOfFailedRequests>0&&(console.log(`Number of failed requests: ${G.numberOfFailedRequests}`),G.numberOfFailedRequests=0)),G.lastNumberOfActiveRequests=G.numberOfActiveRequests)}ce.clearForSpecs=function(){for(;le.length>0;){let n=le.pop();$e(n)}let e=ve.length;for(let n=0;n<e;++n)$e(ve[n]);ve.length=0,Pe={},G.numberOfAttemptedRequests=0,G.numberOfActiveRequests=0,G.numberOfCancelledRequests=0,G.numberOfCancelledActiveRequests=0,G.numberOfFailedRequests=0,G.numberOfActiveRequestsEver=0,G.lastNumberOfActiveRequests=0};ce.numberOfActiveRequestsByServer=function(e){return Pe[e]};ce.requestHeap=le;var kn=ce;var ro=Ze(Qe(),1);var wn={},rn={};wn.add=function(e,n){if(!p(e))throw new A("host is required.");if(!p(n)||n<=0)throw new A("port is required to be greater than 0.");let t=`${e.toLowerCase()}:${n}`;p(rn[t])||(rn[t]=!0)};wn.remove=function(e,n){if(!p(e))throw new A("host is required.");if(!p(n)||n<=0)throw new A("port is required to be greater than 0.");let t=`${e.toLowerCase()}:${n}`;p(rn[t])&&delete rn[t]};function Ar(e){let n=new ro.default(e);n.normalize();let t=n.authority();if(t.length!==0){if(n.authority(t),t.indexOf("@")!==-1&&(t=t.split("@")[1]),t.indexOf(":")===-1){let o=n.scheme();if(o.length===0&&(o=window.location.protocol,o=o.substring(0,o.length-1)),o==="http")t+=":80";else if(o==="https")t+=":443";else return}return t}}wn.contains=function(e){if(!p(e))throw new A("url is required.");let n=Ar(e);return!!(p(n)&&p(rn[n]))};wn.clear=function(){rn={}};var it=wn;var so=function(){try{let e=new XMLHttpRequest;return e.open("GET","#",!0),e.responseType="blob",e.responseType==="blob"}catch{return!1}}();function P(e){e=e??_e.EMPTY_OBJECT,typeof e=="string"&&(e={url:e}),s.typeOf.string("options.url",e.url),this._url=void 0,this._templateValues=Ae(e.templateValues,{}),this._queryParameters=Ae(e.queryParameters,{}),this.headers=Ae(e.headers,{}),this.request=e.request??new Zt,this.proxy=e.proxy,this.retryCallback=e.retryCallback,this.retryAttempts=e.retryAttempts??0,this._retryCount=0,e.parseUrl??!0?this.parseUrl(e.url,!0,!0):this._url=e.url,this._credits=e.credits}function Ae(e,n){return p(e)?tn(e):n}P.createIfNeeded=function(e){return e instanceof P?e.getDerivedResource({request:e.request}):typeof e!="string"?e:new P({url:e})};var cn;P.supportsImageBitmapOptions=function(){return p(cn)?cn:typeof createImageBitmap!="function"?(cn=Promise.resolve(!1),cn):(cn=P.fetchBlob({url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAABGdBTUEAAE4g3rEiDgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADElEQVQI12Ng6GAAAAEUAIngE3ZiAAAAAElFTkSuQmCC"}).then(function(n){let t={imageOrientation:"flipY",premultiplyAlpha:"none",colorSpaceConversion:"none"};return Promise.all([createImageBitmap(n,t),createImageBitmap(n)])}).then(function(n){let t=ot(n[0]),o=ot(n[1]);return t[1]!==o[1]}).catch(function(){return!1}),cn)};Object.defineProperties(P,{isBlobSupported:{get:function(){return so}}});Object.defineProperties(P.prototype,{queryParameters:{get:function(){return this._queryParameters}},templateValues:{get:function(){return this._templateValues}},url:{get:function(){return this.getUrlComponent(!0,!0)},set:function(e){this.parseUrl(e,!1,!1)}},extension:{get:function(){return Qt(this._url)}},isDataUri:{get:function(){return In(this._url)}},isBlobUri:{get:function(){return zn(this._url)}},isCrossOriginUrl:{get:function(){return Ht(this._url)}},hasHeaders:{get:function(){return Object.keys(this.headers).length>0}},credits:{get:function(){return this._credits}}});P.prototype.toString=function(){return this.getUrlComponent(!0,!0)};P.prototype.parseUrl=function(e,n,t,o){let i=new co.default(e),r=jr(i.query());this._queryParameters=n?Ln(r,this.queryParameters,t):r,i.search(""),i.fragment(""),p(o)&&i.scheme()===""&&(i=i.absoluteTo(mn(o))),this._url=i.toString()};function jr(e){return e.length===0?{}:e.indexOf("=")===-1?{[e]:void 0}:Vt(e)}function Ln(e,n,t){if(!t)return De(e,n);let o=tn(e,!0);for(let i in n)if(n.hasOwnProperty(i)){let r=o[i],a=n[i];p(r)?(Array.isArray(r)||(r=o[i]=[r]),o[i]=r.concat(a)):o[i]=Array.isArray(a)?a.slice():a}return o}P.prototype.getUrlComponent=function(e,n){if(this.isDataUri)return this._url;let t=this._url;e&&(t=`${t}${Mr(this.queryParameters)}`),t=t.replace(/%7B/g,"{").replace(/%7D/g,"}");let o=this._templateValues;return Object.keys(o).length>0&&(t=t.replace(/{(.*?)}/g,function(i,r){let a=o[r];return p(a)?encodeURIComponent(a):i})),n&&p(this.proxy)&&(t=this.proxy.getURL(t)),t};function Mr(e){let n=Object.keys(e);return n.length===0?"":n.length===1&&!p(e[n[0]])?`?${n[0]}`:`?${Yt(e)}`}P.prototype.setQueryParameters=function(e,n){n?this._queryParameters=Ln(this._queryParameters,e,!1):this._queryParameters=Ln(e,this._queryParameters,!1)};P.prototype.appendQueryParameters=function(e){this._queryParameters=Ln(e,this._queryParameters,!0)};P.prototype.setTemplateValues=function(e,n){n?this._templateValues=De(this._templateValues,e):this._templateValues=De(e,this._templateValues)};P.prototype.getDerivedResource=function(e){let n=this.clone();if(n._retryCount=0,p(e.url)){let t=e.preserveQueryParameters??!1;n.parseUrl(e.url,!0,t,this._url)}return p(e.queryParameters)&&(n._queryParameters=De(e.queryParameters,n.queryParameters)),p(e.templateValues)&&(n._templateValues=De(e.templateValues,n.templateValues)),p(e.headers)&&(n.headers=De(e.headers,n.headers)),p(e.proxy)&&(n.proxy=e.proxy),p(e.request)&&(n.request=e.request),p(e.retryCallback)&&(n.retryCallback=e.retryCallback),p(e.retryAttempts)&&(n.retryAttempts=e.retryAttempts),n};P.prototype.retryOnError=function(e){let n=this.retryCallback;if(typeof n!="function"||this._retryCount>=this.retryAttempts)return Promise.resolve(!1);let t=this;return Promise.resolve(n(this,e)).then(function(o){return++t._retryCount,o})};P.prototype.clone=function(e){return p(e)?(e._url=this._url,e._queryParameters=tn(this._queryParameters),e._templateValues=tn(this._templateValues),e.headers=tn(this.headers),e.proxy=this.proxy,e.retryCallback=this.retryCallback,e.retryAttempts=this.retryAttempts,e._retryCount=0,e.request=this.request.clone(),e):new P({url:this._url,queryParameters:this.queryParameters,templateValues:this.templateValues,headers:this.headers,proxy:this.proxy,retryCallback:this.retryCallback,retryAttempts:this.retryAttempts,request:this.request.clone(),parseUrl:!1,credits:p(this.credits)?this.credits.slice():void 0})};P.prototype.getBaseUri=function(e){return xt(this.getUrlComponent(e),e)};P.prototype.appendForwardSlash=function(){this._url=Nt(this._url)};P.prototype.fetchArrayBuffer=function(){return this.fetch({responseType:"arraybuffer"})};P.fetchArrayBuffer=function(e){return new P(e).fetchArrayBuffer()};P.prototype.fetchBlob=function(){return this.fetch({responseType:"blob"})};P.fetchBlob=function(e){return new P(e).fetchBlob()};P.prototype.fetchImage=function(e){e=e??_e.EMPTY_OBJECT;let n=e.preferImageBitmap??!1,t=e.preferBlob??!1,o=e.flipY??!1,i=e.skipColorSpaceConversion??!1;if(st(this.request),!so||this.isDataUri||this.isBlobUri||!this.hasHeaders&&!t)return ct({resource:this,flipY:o,skipColorSpaceConversion:i,preferImageBitmap:n});let r=this.fetchBlob();if(!p(r))return;let a,u,d,m;return P.supportsImageBitmapOptions().then(function(l){return a=l,u=a&&n,r}).then(function(l){if(!p(l))return;if(m=l,u)return P.createImageBitmapFromBlob(l,{flipY:o,premultiplyAlpha:!1,skipColorSpaceConversion:i});let w=window.URL.createObjectURL(l);return d=new P({url:w}),ct({resource:d,flipY:o,skipColorSpaceConversion:i,preferImageBitmap:!1})}).then(function(l){if(p(l))return l.blob=m,u||window.URL.revokeObjectURL(d.url),l}).catch(function(l){return p(d)&&window.URL.revokeObjectURL(d.url),l.blob=m,Promise.reject(l)})};function ct(e){let n=e.resource,t=e.flipY,o=e.skipColorSpaceConversion,i=e.preferImageBitmap,r=n.request;r.url=n.url,r.requestFunction=function(){let u=!1;!n.isDataUri&&!n.isBlobUri&&(u=n.isCrossOriginUrl);let d=We();return P._Implementations.createImage(r,u,d,t,o,i),d.promise};let a=kn.request(r);if(p(a))return a.catch(function(u){return r.state!==ae.FAILED?Promise.reject(u):n.retryOnError(u).then(function(d){return d?(r.state=ae.UNISSUED,r.deferred=void 0,ct({resource:n,flipY:t,skipColorSpaceConversion:o,preferImageBitmap:i})):Promise.reject(u)})})}P.fetchImage=function(e){return new P(e).fetchImage({flipY:e.flipY,skipColorSpaceConversion:e.skipColorSpaceConversion,preferBlob:e.preferBlob,preferImageBitmap:e.preferImageBitmap})};P.prototype.fetchText=function(){return this.fetch({responseType:"text"})};P.fetchText=function(e){return new P(e).fetchText()};P.prototype.fetchJson=function(){let e=this.fetch({responseType:"text",headers:{Accept:"application/json,*/*;q=0.01"}});if(p(e))return e.then(function(n){if(p(n))return JSON.parse(n)})};P.fetchJson=function(e){return new P(e).fetchJson()};P.prototype.fetchXML=function(){return this.fetch({responseType:"document",overrideMimeType:"text/xml"})};P.fetchXML=function(e){return new P(e).fetchXML()};P.prototype.fetchJsonp=function(e){e=e??"callback",st(this.request);let n;do n=`loadJsonp${R.nextRandomNumber().toString().substring(2,8)}`;while(p(window[n]));return ao(this,e,n)};function ao(e,n,t){let o={};o[n]=t,e.setQueryParameters(o);let i=e.request,r=e.url;i.url=r,i.requestFunction=function(){let u=We();return window[t]=function(d){u.resolve(d);try{delete window[t]}catch{window[t]=void 0}},P._Implementations.loadAndExecuteScript(r,t,u),u.promise};let a=kn.request(i);if(p(a))return a.catch(function(u){return i.state!==ae.FAILED?Promise.reject(u):e.retryOnError(u).then(function(d){return d?(i.state=ae.UNISSUED,i.deferred=void 0,ao(e,n,t)):Promise.reject(u)})})}P.fetchJsonp=function(e){return new P(e).fetchJsonp(e.callbackParameterName)};P.prototype._makeRequest=function(e){let n=this;st(n.request);let t=n.request,o=n.url;t.url=o,t.requestFunction=function(){let r=e.responseType,a=De(e.headers,n.headers),u=e.overrideMimeType,d=e.method,m=e.data,l=We(),w=P._Implementations.loadWithXhr(o,r,d,m,a,l,u);return p(w)&&p(w.abort)&&(t.cancelFunction=function(){w.abort()}),l.promise};let i=kn.request(t);if(p(i))return i.then(function(r){return t.cancelFunction=void 0,r}).catch(function(r){return t.cancelFunction=void 0,t.state!==ae.FAILED?Promise.reject(r):n.retryOnError(r).then(function(a){return a?(t.state=ae.UNISSUED,t.deferred=void 0,n.fetch(e)):Promise.reject(r)})})};function st(e){if(e.state===ae.ISSUED||e.state===ae.ACTIVE)throw new Se("The Resource is already being fetched.");e.state=ae.UNISSUED,e.deferred=void 0}var Pr=/^data:(.*?)(;base64)?,(.*)$/;function Fn(e,n){let t=decodeURIComponent(n);return e?atob(t):t}function io(e,n){let t=Fn(e,n),o=new ArrayBuffer(t.length),i=new Uint8Array(o);for(let r=0;r<t.length;r++)i[r]=t.charCodeAt(r);return o}function Ur(e,n){n=n??"";let t=e[1],o=!!e[2],i=e[3],r,a;switch(n){case"":case"text":return Fn(o,i);case"arraybuffer":return io(o,i);case"blob":return r=io(o,i),new Blob([r],{type:t});case"document":return a=new DOMParser,a.parseFromString(Fn(o,i),t);case"json":return JSON.parse(Fn(o,i));default:throw new A(`Unhandled responseType: ${n}`)}}P.prototype.fetch=function(e){return e=Ae(e,{}),e.method="GET",this._makeRequest(e)};P.fetch=function(e){return new P(e).fetch({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};P.prototype.delete=function(e){return e=Ae(e,{}),e.method="DELETE",this._makeRequest(e)};P.delete=function(e){return new P(e).delete({responseType:e.responseType,overrideMimeType:e.overrideMimeType,data:e.data})};P.prototype.head=function(e){return e=Ae(e,{}),e.method="HEAD",this._makeRequest(e)};P.head=function(e){return new P(e).head({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};P.prototype.options=function(e){return e=Ae(e,{}),e.method="OPTIONS",this._makeRequest(e)};P.options=function(e){return new P(e).options({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};P.prototype.post=function(e,n){return s.defined("data",e),n=Ae(n,{}),n.method="POST",n.data=e,this._makeRequest(n)};P.post=function(e){return new P(e).post(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};P.prototype.put=function(e,n){return s.defined("data",e),n=Ae(n,{}),n.method="PUT",n.data=e,this._makeRequest(n)};P.put=function(e){return new P(e).put(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};P.prototype.patch=function(e,n){return s.defined("data",e),n=Ae(n,{}),n.method="PATCH",n.data=e,this._makeRequest(n)};P.patch=function(e){return new P(e).patch(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};P._Implementations={};P._Implementations.loadImageElement=function(e,n,t){let o=new Image;o.onload=function(){o.naturalWidth===0&&o.naturalHeight===0&&o.width===0&&o.height===0&&(o.width=300,o.height=150),t.resolve(o)},o.onerror=function(i){t.reject(i)},n&&(it.contains(e)?o.crossOrigin="use-credentials":o.crossOrigin=""),o.src=e};P._Implementations.createImage=function(e,n,t,o,i,r){let a=e.url;P.supportsImageBitmapOptions().then(function(u){if(!(u&&r)){P._Implementations.loadImageElement(a,n,t);return}let d="blob",m="GET",l=We(),w=P._Implementations.loadWithXhr(a,d,m,void 0,void 0,l,void 0,void 0,void 0);return p(w)&&p(w.abort)&&(e.cancelFunction=function(){w.abort()}),l.promise.then(function(E){if(!p(E)){t.reject(new Se(`Successfully retrieved ${a} but it contained no content.`));return}return P.createImageBitmapFromBlob(E,{flipY:o,premultiplyAlpha:!1,skipColorSpaceConversion:i})}).then(function(E){t.resolve(E)})}).catch(function(u){t.reject(u)})};P.createImageBitmapFromBlob=function(e,n){return s.defined("options",n),s.typeOf.bool("options.flipY",n.flipY),s.typeOf.bool("options.premultiplyAlpha",n.premultiplyAlpha),s.typeOf.bool("options.skipColorSpaceConversion",n.skipColorSpaceConversion),createImageBitmap(e,{imageOrientation:n.flipY?"flipY":"from-image",premultiplyAlpha:n.premultiplyAlpha?"premultiply":"none",colorSpaceConversion:n.skipColorSpaceConversion?"none":"default"})};function zr(e,n,t,o,i,r,a){fetch(e,{method:t,headers:i}).then(async u=>{if(!u.ok){let d={};u.headers.forEach((m,l)=>{d[l]=m}),r.reject(new yn(u.status,u,d));return}switch(n){case"text":r.resolve(u.text());break;case"json":r.resolve(u.json());break;default:r.resolve(new Uint8Array(await u.arrayBuffer()).buffer);break}}).catch(()=>{r.reject(new yn)})}var Ir=typeof XMLHttpRequest>"u";P._Implementations.loadWithXhr=function(e,n,t,o,i,r,a){let u=Pr.exec(e);if(u!==null){r.resolve(Ur(u,n));return}if(Ir){zr(e,n,t,o,i,r,a);return}let d=new XMLHttpRequest;if(it.contains(e)&&(d.withCredentials=!0),d.open(t,e,!0),p(a)&&p(d.overrideMimeType)&&d.overrideMimeType(a),p(i))for(let l in i)i.hasOwnProperty(l)&&d.setRequestHeader(l,i[l]);p(n)&&(d.responseType=n);let m=!1;return typeof e=="string"&&(m=e.indexOf("file://")===0||typeof window<"u"&&window.location.origin==="file://"),d.onload=function(){if((d.status<200||d.status>=300)&&!(m&&d.status===0)){r.reject(new yn(d.status,d.response,d.getAllResponseHeaders()));return}let l=d.response,w=d.responseType;if(t==="HEAD"||t==="OPTIONS"){let T=d.getAllResponseHeaders().trim().split(/[\r\n]+/),M={};T.forEach(function(v){let I=v.split(": "),N=I.shift();M[N]=I.join(": ")}),r.resolve(M);return}if(d.status===204)r.resolve(void 0);else if(p(l)&&(!p(n)||w===n))r.resolve(l);else if(n==="json"&&typeof l=="string")try{r.resolve(JSON.parse(l))}catch(E){r.reject(E)}else(w===""||w==="document")&&p(d.responseXML)&&d.responseXML.hasChildNodes()?r.resolve(d.responseXML):(w===""||w==="text")&&p(d.responseText)?r.resolve(d.responseText):r.reject(new Se("Invalid XMLHttpRequest response type."))},d.onerror=function(l){r.reject(new yn)},d.send(o),d};P._Implementations.loadAndExecuteScript=function(e,n,t){return $t(e,n).catch(function(o){t.reject(o)})};P._DefaultImplementations={};P._DefaultImplementations.createImage=P._Implementations.createImage;P._DefaultImplementations.loadWithXhr=P._Implementations.loadWithXhr;P._DefaultImplementations.loadAndExecuteScript=P._Implementations.loadAndExecuteScript;P.DEFAULT=Object.freeze(new P({url:typeof document>"u"?"":document.location.href.split("?")[0]}));var ke=P;function On(e){e=e??_e.EMPTY_OBJECT,this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._addNewLeapSeconds=e.addNewLeapSeconds??!0,p(e.data)?fo(this,e.data):fo(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})}On.fromUrl=async function(e,n){s.defined("url",e),n=n??_e.EMPTY_OBJECT;let t=ke.createIfNeeded(e),o;try{o=await t.fetchJson()}catch{throw new Se(`An error occurred while retrieving the EOP data from the URL ${t.url}.`)}return new On({addNewLeapSeconds:n.addNewLeapSeconds,data:o})};On.NONE=Object.freeze({compute:function(e,n){return p(n)?(n.xPoleWander=0,n.yPoleWander=0,n.xPoleOffset=0,n.yPoleOffset=0,n.ut1MinusUtc=0):n=new hn(0,0,0,0,0),n}});On.prototype.compute=function(e,n){if(!p(this._samples))return;if(p(n)||(n=new hn(0,0,0,0,0)),this._samples.length===0)return n.xPoleWander=0,n.yPoleWander=0,n.xPoleOffset=0,n.yPoleOffset=0,n.ut1MinusUtc=0,n;let t=this._dates,o=this._lastIndex,i=0,r=0;if(p(o)){let u=t[o],d=t[o+1],m=ue.lessThanOrEquals(u,e),l=!p(d),w=l||ue.greaterThanOrEquals(d,e);if(m&&w)return i=o,!l&&d.equals(e)&&++i,r=i+1,po(this,t,this._samples,e,i,r,n),n}let a=Be(t,e,ue.compare,this._dateColumn);return a>=0?(a<t.length-1&&t[a+1].equals(e)&&++a,i=a,r=a):(r=~a,i=r-1,i<0&&(i=0)),this._lastIndex=i,po(this,t,this._samples,e,i,r,n),n};function qr(e,n){return ue.compare(e.julianDate,n)}function fo(e,n){if(!p(n.columnNames))throw new Se("Error in loaded EOP data: The columnNames property is required.");if(!p(n.samples))throw new Se("Error in loaded EOP data: The samples property is required.");let t=n.columnNames.indexOf("modifiedJulianDateUtc"),o=n.columnNames.indexOf("xPoleWanderRadians"),i=n.columnNames.indexOf("yPoleWanderRadians"),r=n.columnNames.indexOf("ut1MinusUtcSeconds"),a=n.columnNames.indexOf("xCelestialPoleOffsetRadians"),u=n.columnNames.indexOf("yCelestialPoleOffsetRadians"),d=n.columnNames.indexOf("taiMinusUtcSeconds");if(t<0||o<0||i<0||r<0||a<0||u<0||d<0)throw new Se("Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns");let m=e._samples=n.samples,l=e._dates=[];e._dateColumn=t,e._xPoleWanderRadiansColumn=o,e._yPoleWanderRadiansColumn=i,e._ut1MinusUtcSecondsColumn=r,e._xCelestialPoleOffsetRadiansColumn=a,e._yCelestialPoleOffsetRadiansColumn=u,e._taiMinusUtcSecondsColumn=d,e._columnCount=n.columnNames.length,e._lastIndex=void 0;let w,E=e._addNewLeapSeconds;for(let T=0,M=m.length;T<M;T+=e._columnCount){let v=m[T+t],I=m[T+d],N=v+ie.MODIFIED_JULIAN_DATE_DIFFERENCE,F=new ue(N,I,H.TAI);if(l.push(F),E){if(I!==w&&p(w)){let k=ue.leapSeconds,x=Be(k,F,qr);if(x<0){let Q=new ne(F,I);k.splice(~x,0,Q)}}w=I}}}function uo(e,n,t,o,i){let r=t*o;i.xPoleWander=n[r+e._xPoleWanderRadiansColumn],i.yPoleWander=n[r+e._yPoleWanderRadiansColumn],i.xPoleOffset=n[r+e._xCelestialPoleOffsetRadiansColumn],i.yPoleOffset=n[r+e._yCelestialPoleOffsetRadiansColumn],i.ut1MinusUtc=n[r+e._ut1MinusUtcSecondsColumn]}function bn(e,n,t){return n+e*(t-n)}function po(e,n,t,o,i,r,a){let u=e._columnCount;if(r>n.length-1)return a.xPoleWander=0,a.yPoleWander=0,a.xPoleOffset=0,a.yPoleOffset=0,a.ut1MinusUtc=0,a;let d=n[i],m=n[r];if(d.equals(m)||o.equals(d))return uo(e,t,i,u,a),a;if(o.equals(m))return uo(e,t,r,u,a),a;let l=ue.secondsDifference(o,d)/ue.secondsDifference(m,d),w=i*u,E=r*u,T=t[w+e._ut1MinusUtcSecondsColumn],M=t[E+e._ut1MinusUtcSecondsColumn],v=M-T;if(v>.5||v<-.5){let I=t[w+e._taiMinusUtcSecondsColumn],N=t[E+e._taiMinusUtcSecondsColumn];I!==N&&(m.equals(o)?T=M:M-=N-I)}return a.xPoleWander=bn(l,t[w+e._xPoleWanderRadiansColumn],t[E+e._xPoleWanderRadiansColumn]),a.yPoleWander=bn(l,t[w+e._yPoleWanderRadiansColumn],t[E+e._yPoleWanderRadiansColumn]),a.xPoleOffset=bn(l,t[w+e._xCelestialPoleOffsetRadiansColumn],t[E+e._xCelestialPoleOffsetRadiansColumn]),a.yPoleOffset=bn(l,t[w+e._yCelestialPoleOffsetRadiansColumn],t[E+e._yCelestialPoleOffsetRadiansColumn]),a.ut1MinusUtc=bn(l,T,M),a}var ho=On;function we(e,n,t){this.heading=e??0,this.pitch=n??0,this.roll=t??0}we.fromQuaternion=function(e,n){if(!p(e))throw new A("quaternion is required");p(n)||(n=new we);let t=2*(e.w*e.y-e.z*e.x),o=1-2*(e.x*e.x+e.y*e.y),i=2*(e.w*e.x+e.y*e.z),r=1-2*(e.y*e.y+e.z*e.z),a=2*(e.w*e.z+e.x*e.y);return n.heading=-Math.atan2(a,r),n.roll=Math.atan2(i,o),n.pitch=-R.asinClamped(t),n};we.fromDegrees=function(e,n,t,o){if(!p(e))throw new A("heading is required");if(!p(n))throw new A("pitch is required");if(!p(t))throw new A("roll is required");return p(o)||(o=new we),o.heading=e*R.RADIANS_PER_DEGREE,o.pitch=n*R.RADIANS_PER_DEGREE,o.roll=t*R.RADIANS_PER_DEGREE,o};we.clone=function(e,n){if(p(e))return p(n)?(n.heading=e.heading,n.pitch=e.pitch,n.roll=e.roll,n):new we(e.heading,e.pitch,e.roll)};we.equals=function(e,n){return e===n||p(e)&&p(n)&&e.heading===n.heading&&e.pitch===n.pitch&&e.roll===n.roll};we.equalsEpsilon=function(e,n,t,o){return e===n||p(e)&&p(n)&&R.equalsEpsilon(e.heading,n.heading,t,o)&&R.equalsEpsilon(e.pitch,n.pitch,t,o)&&R.equalsEpsilon(e.roll,n.roll,t,o)};we.prototype.clone=function(e){return we.clone(this,e)};we.prototype.equals=function(e){return we.equals(this,e)};we.prototype.equalsEpsilon=function(e,n,t){return we.equalsEpsilon(this,e,n,t)};we.prototype.toString=function(){return`(${this.heading}, ${this.pitch}, ${this.roll})`};var xn=we;var mo=/((?:.*\/)|^)Cesium\.js(?:\?|\#|$)/;function Dr(){let e=document.getElementsByTagName("script");for(let n=0,t=e.length;n<t;++n){let o=e[n].getAttribute("src"),i=mo.exec(o);if(i!==null)return i[1]}}var Bn;function yo(e){return typeof document>"u"?e:(p(Bn)||(Bn=document.createElement("a")),Bn.href=e,Bn.href)}var Ye;function lo(){if(p(Ye))return Ye;let e;if(typeof CESIUM_BASE_URL<"u"?e=CESIUM_BASE_URL:p(import.meta?.url)?e=mn(".",import.meta.url):typeof define=="object"&&p(define.amd)&&!define.amd.toUrlUndefined&&p(Sn.toUrl)?e=mn("..",Ve("Core/buildModuleUrl.js")):e=Dr(),!p(e))throw new A("Unable to determine Cesium base URL automatically, try defining a global variable called CESIUM_BASE_URL.");return Ye=new ke({url:yo(e)}),Ye.appendForwardSlash(),Ye}function Nr(e){return yo(Sn.toUrl(`../${e}`))}function wo(e){return lo().getDerivedResource({url:e}).url}var Qn;function Ve(e){return p(Qn)||(typeof define=="object"&&p(define.amd)&&!define.amd.toUrlUndefined&&p(Sn.toUrl)?Qn=Nr:Qn=wo),Qn(e)}Ve._cesiumScriptRegex=mo;Ve._buildModuleUrlFromBaseUrl=wo;Ve._clearBaseResource=function(){Ye=void 0};Ve.setBaseUrl=function(e){Ye=ke.DEFAULT.getDerivedResource({url:e})};Ve.getCesiumBaseUrl=lo;var bo=Ve;function kr(e,n,t){this.x=e,this.y=n,this.s=t}var Wn=kr;function ut(e){e=e??_e.EMPTY_OBJECT,this._xysFileUrlTemplate=ke.createIfNeeded(e.xysFileUrlTemplate),this._interpolationOrder=e.interpolationOrder??9,this._sampleZeroJulianEphemerisDate=e.sampleZeroJulianEphemerisDate??24423965e-1,this._sampleZeroDateTT=new ue(this._sampleZeroJulianEphemerisDate,0,H.TAI),this._stepSizeDays=e.stepSizeDays??1,this._samplesPerXysFile=e.samplesPerXysFile??1e3,this._totalSamples=e.totalSamples??27426,this._samples=new Array(this._totalSamples*3),this._chunkDownloadsInProgress=[];let n=this._interpolationOrder,t=this._denominators=new Array(n+1),o=this._xTable=new Array(n+1),i=Math.pow(this._stepSizeDays,n);for(let r=0;r<=n;++r){t[r]=i,o[r]=r*this._stepSizeDays;for(let a=0;a<=n;++a)a!==r&&(t[r]*=r-a);t[r]=1/t[r]}this._work=new Array(n+1),this._coef=new Array(n+1)}var Fr=new ue(0,0,H.TAI);function at(e,n,t){let o=Fr;return o.dayNumber=n,o.secondsOfDay=t,ue.daysDifference(o,e._sampleZeroDateTT)}ut.prototype.preload=function(e,n,t,o){let i=at(this,e,n),r=at(this,t,o),a=i/this._stepSizeDays-this._interpolationOrder/2|0;a<0&&(a=0);let u=r/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;u>=this._totalSamples&&(u=this._totalSamples-1);let d=a/this._samplesPerXysFile|0,m=u/this._samplesPerXysFile|0,l=[];for(let w=d;w<=m;++w)l.push(ft(this,w));return Promise.all(l)};ut.prototype.computeXysRadians=function(e,n,t){let o=at(this,e,n);if(o<0)return;let i=o/this._stepSizeDays|0;if(i>=this._totalSamples)return;let r=this._interpolationOrder,a=i-(r/2|0);a<0&&(a=0);let u=a+r;u>=this._totalSamples&&(u=this._totalSamples-1,a=u-r,a<0&&(a=0));let d=!1,m=this._samples;if(p(m[a*3])||(ft(this,a/this._samplesPerXysFile|0),d=!0),p(m[u*3])||(ft(this,u/this._samplesPerXysFile|0),d=!0),d)return;p(t)?(t.x=0,t.y=0,t.s=0):t=new Wn(0,0,0);let l=o-a*this._stepSizeDays,w=this._work,E=this._denominators,T=this._coef,M=this._xTable,v,I;for(v=0;v<=r;++v)w[v]=l-M[v];for(v=0;v<=r;++v){for(T[v]=1,I=0;I<=r;++I)I!==v&&(T[v]*=w[I]);T[v]*=E[v];let N=(a+v)*3;t.x+=T[v]*m[N++],t.y+=T[v]*m[N++],t.s+=T[v]*m[N]}return t};function ft(e,n){if(e._chunkDownloadsInProgress[n])return e._chunkDownloadsInProgress[n];let t,o=e._xysFileUrlTemplate;p(o)?t=o.getDerivedResource({templateValues:{0:n}}):t=new ke({url:bo(`Assets/IAU2006_XYS/IAU2006_XYS_${n}.json`)});let i=t.fetchJson().then(function(r){e._chunkDownloadsInProgress[n]=!1;let a=e._samples,u=r.samples,d=n*e._samplesPerXysFile*3;for(let m=0,l=u.length;m<l;++m)a[d+m]=u[m]});return e._chunkDownloadsInProgress[n]=i,i}var Oo=ut;function S(e,n,t,o){this.x=e??0,this.y=n??0,this.z=t??0,this.w=o??0}var gn=new g;S.fromAxisAngle=function(e,n,t){s.typeOf.object("axis",e),s.typeOf.number("angle",n);let o=n/2,i=Math.sin(o);gn=g.normalize(e,gn);let r=gn.x*i,a=gn.y*i,u=gn.z*i,d=Math.cos(o);return p(t)?(t.x=r,t.y=a,t.z=u,t.w=d,t):new S(r,a,u,d)};var Lr=[1,2,0],xr=new Array(3);S.fromRotationMatrix=function(e,n){s.typeOf.object("matrix",e);let t,o,i,r,a,u=e[B.COLUMN0ROW0],d=e[B.COLUMN1ROW1],m=e[B.COLUMN2ROW2],l=u+d+m;if(l>0)t=Math.sqrt(l+1),a=.5*t,t=.5/t,o=(e[B.COLUMN1ROW2]-e[B.COLUMN2ROW1])*t,i=(e[B.COLUMN2ROW0]-e[B.COLUMN0ROW2])*t,r=(e[B.COLUMN0ROW1]-e[B.COLUMN1ROW0])*t;else{let w=Lr,E=0;d>u&&(E=1),m>u&&m>d&&(E=2);let T=w[E],M=w[T];t=Math.sqrt(e[B.getElementIndex(E,E)]-e[B.getElementIndex(T,T)]-e[B.getElementIndex(M,M)]+1);let v=xr;v[E]=.5*t,t=.5/t,a=(e[B.getElementIndex(M,T)]-e[B.getElementIndex(T,M)])*t,v[T]=(e[B.getElementIndex(T,E)]+e[B.getElementIndex(E,T)])*t,v[M]=(e[B.getElementIndex(M,E)]+e[B.getElementIndex(E,M)])*t,o=-v[0],i=-v[1],r=-v[2]}return p(n)?(n.x=o,n.y=i,n.z=r,n.w=a,n):new S(o,i,r,a)};var go=new S,_o=new S,pt=new S,So=new S;S.fromHeadingPitchRoll=function(e,n){return s.typeOf.object("headingPitchRoll",e),So=S.fromAxisAngle(g.UNIT_X,e.roll,go),pt=S.fromAxisAngle(g.UNIT_Y,-e.pitch,n),n=S.multiply(pt,So,pt),_o=S.fromAxisAngle(g.UNIT_Z,-e.heading,go),S.multiply(_o,n,n)};var Hn=new g,ht=new g,Ee=new S,Ro=new S,$n=new S;S.packedLength=4;S.pack=function(e,n,t){return s.typeOf.object("value",e),s.defined("array",n),t=t??0,n[t++]=e.x,n[t++]=e.y,n[t++]=e.z,n[t]=e.w,n};S.unpack=function(e,n,t){return s.defined("array",e),n=n??0,p(t)||(t=new S),t.x=e[n],t.y=e[n+1],t.z=e[n+2],t.w=e[n+3],t};S.packedInterpolationLength=3;S.convertPackedArrayForInterpolation=function(e,n,t,o){S.unpack(e,t*4,$n),S.conjugate($n,$n);for(let i=0,r=t-n+1;i<r;i++){let a=i*3;S.unpack(e,(n+i)*4,Ee),S.multiply(Ee,$n,Ee),Ee.w<0&&S.negate(Ee,Ee),S.computeAxis(Ee,Hn);let u=S.computeAngle(Ee);p(o)||(o=[]),o[a]=Hn.x*u,o[a+1]=Hn.y*u,o[a+2]=Hn.z*u}};S.unpackInterpolationResult=function(e,n,t,o,i){p(i)||(i=new S),g.fromArray(e,0,ht);let r=g.magnitude(ht);return S.unpack(n,o*4,Ro),r===0?S.clone(S.IDENTITY,Ee):S.fromAxisAngle(ht,r,Ee),S.multiply(Ee,Ro,i)};S.clone=function(e,n){if(p(e))return p(n)?(n.x=e.x,n.y=e.y,n.z=e.z,n.w=e.w,n):new S(e.x,e.y,e.z,e.w)};S.conjugate=function(e,n){return s.typeOf.object("quaternion",e),s.typeOf.object("result",n),n.x=-e.x,n.y=-e.y,n.z=-e.z,n.w=e.w,n};S.magnitudeSquared=function(e){return s.typeOf.object("quaternion",e),e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w};S.magnitude=function(e){return Math.sqrt(S.magnitudeSquared(e))};S.normalize=function(e,n){s.typeOf.object("result",n);let t=1/S.magnitude(e),o=e.x*t,i=e.y*t,r=e.z*t,a=e.w*t;return n.x=o,n.y=i,n.z=r,n.w=a,n};S.inverse=function(e,n){s.typeOf.object("result",n);let t=S.magnitudeSquared(e);return n=S.conjugate(e,n),S.multiplyByScalar(n,1/t,n)};S.add=function(e,n,t){return s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t),t.x=e.x+n.x,t.y=e.y+n.y,t.z=e.z+n.z,t.w=e.w+n.w,t};S.subtract=function(e,n,t){return s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t),t.x=e.x-n.x,t.y=e.y-n.y,t.z=e.z-n.z,t.w=e.w-n.w,t};S.negate=function(e,n){return s.typeOf.object("quaternion",e),s.typeOf.object("result",n),n.x=-e.x,n.y=-e.y,n.z=-e.z,n.w=-e.w,n};S.dot=function(e,n){return s.typeOf.object("left",e),s.typeOf.object("right",n),e.x*n.x+e.y*n.y+e.z*n.z+e.w*n.w};S.multiply=function(e,n,t){s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t);let o=e.x,i=e.y,r=e.z,a=e.w,u=n.x,d=n.y,m=n.z,l=n.w,w=a*u+o*l+i*m-r*d,E=a*d-o*m+i*l+r*u,T=a*m+o*d-i*u+r*l,M=a*l-o*u-i*d-r*m;return t.x=w,t.y=E,t.z=T,t.w=M,t};S.multiplyByScalar=function(e,n,t){return s.typeOf.object("quaternion",e),s.typeOf.number("scalar",n),s.typeOf.object("result",t),t.x=e.x*n,t.y=e.y*n,t.z=e.z*n,t.w=e.w*n,t};S.divideByScalar=function(e,n,t){return s.typeOf.object("quaternion",e),s.typeOf.number("scalar",n),s.typeOf.object("result",t),t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t};S.computeAxis=function(e,n){s.typeOf.object("quaternion",e),s.typeOf.object("result",n);let t=e.w;if(Math.abs(t-1)<R.EPSILON6||Math.abs(t+1)<R.EPSILON6)return n.x=1,n.y=n.z=0,n;let o=1/Math.sqrt(1-t*t);return n.x=e.x*o,n.y=e.y*o,n.z=e.z*o,n};S.computeAngle=function(e){return s.typeOf.object("quaternion",e),Math.abs(e.w-1)<R.EPSILON6?0:2*Math.acos(e.w)};var dt=new S;S.lerp=function(e,n,t,o){return s.typeOf.object("start",e),s.typeOf.object("end",n),s.typeOf.number("t",t),s.typeOf.object("result",o),dt=S.multiplyByScalar(n,t,dt),o=S.multiplyByScalar(e,1-t,o),S.add(dt,o,o)};var Eo=new S,mt=new S,yt=new S;S.slerp=function(e,n,t,o){s.typeOf.object("start",e),s.typeOf.object("end",n),s.typeOf.number("t",t),s.typeOf.object("result",o);let i=S.dot(e,n),r=n;if(i<0&&(i=-i,r=Eo=S.negate(n,Eo)),1-i<R.EPSILON6)return S.lerp(e,r,t,o);let a=Math.acos(i);return mt=S.multiplyByScalar(e,Math.sin((1-t)*a),mt),yt=S.multiplyByScalar(r,Math.sin(t*a),yt),o=S.add(mt,yt,o),S.multiplyByScalar(o,1/Math.sin(a),o)};S.log=function(e,n){s.typeOf.object("quaternion",e),s.typeOf.object("result",n);let t=R.acosClamped(e.w),o=0;return t!==0&&(o=t/Math.sin(t)),g.multiplyByScalar(e,o,n)};S.exp=function(e,n){s.typeOf.object("cartesian",e),s.typeOf.object("result",n);let t=g.magnitude(e),o=0;return t!==0&&(o=Math.sin(t)/t),n.x=e.x*o,n.y=e.y*o,n.z=e.z*o,n.w=Math.cos(t),n};var Br=new g,Qr=new g,_n=new S,sn=new S;S.computeInnerQuadrangle=function(e,n,t,o){s.typeOf.object("q0",e),s.typeOf.object("q1",n),s.typeOf.object("q2",t),s.typeOf.object("result",o);let i=S.conjugate(n,_n);S.multiply(i,t,sn);let r=S.log(sn,Br);S.multiply(i,e,sn);let a=S.log(sn,Qr);return g.add(r,a,r),g.multiplyByScalar(r,.25,r),g.negate(r,r),S.exp(r,_n),S.multiply(n,_n,o)};S.squad=function(e,n,t,o,i,r){s.typeOf.object("q0",e),s.typeOf.object("q1",n),s.typeOf.object("s0",t),s.typeOf.object("s1",o),s.typeOf.number("t",i),s.typeOf.object("result",r);let a=S.slerp(e,n,i,_n),u=S.slerp(t,o,i,sn);return S.slerp(a,u,2*i*(1-i),r)};var Wr=new S,To=1.9011074535173003,Yn=un.supportsTypedArrays()?new Float32Array(8):[],Vn=un.supportsTypedArrays()?new Float32Array(8):[],Ue=un.supportsTypedArrays()?new Float32Array(8):[],ze=un.supportsTypedArrays()?new Float32Array(8):[];for(let e=0;e<7;++e){let n=e+1,t=2*n+1;Yn[e]=1/(n*t),Vn[e]=n/t}Yn[7]=To/136;Vn[7]=To*8/17;S.fastSlerp=function(e,n,t,o){s.typeOf.object("start",e),s.typeOf.object("end",n),s.typeOf.number("t",t),s.typeOf.object("result",o);let i=S.dot(e,n),r;i>=0?r=1:(r=-1,i=-i);let a=i-1,u=1-t,d=t*t,m=u*u;for(let T=7;T>=0;--T)Ue[T]=(Yn[T]*d-Vn[T])*a,ze[T]=(Yn[T]*m-Vn[T])*a;let l=r*t*(1+Ue[0]*(1+Ue[1]*(1+Ue[2]*(1+Ue[3]*(1+Ue[4]*(1+Ue[5]*(1+Ue[6]*(1+Ue[7])))))))),w=u*(1+ze[0]*(1+ze[1]*(1+ze[2]*(1+ze[3]*(1+ze[4]*(1+ze[5]*(1+ze[6]*(1+ze[7])))))))),E=S.multiplyByScalar(e,w,Wr);return S.multiplyByScalar(n,l,o),S.add(E,o,o)};S.fastSquad=function(e,n,t,o,i,r){s.typeOf.object("q0",e),s.typeOf.object("q1",n),s.typeOf.object("s0",t),s.typeOf.object("s1",o),s.typeOf.number("t",i),s.typeOf.object("result",r);let a=S.fastSlerp(e,n,i,_n),u=S.fastSlerp(t,o,i,sn);return S.fastSlerp(a,u,2*i*(1-i),r)};S.equals=function(e,n){return e===n||p(e)&&p(n)&&e.x===n.x&&e.y===n.y&&e.z===n.z&&e.w===n.w};S.equalsEpsilon=function(e,n,t){return t=t??0,e===n||p(e)&&p(n)&&Math.abs(e.x-n.x)<=t&&Math.abs(e.y-n.y)<=t&&Math.abs(e.z-n.z)<=t&&Math.abs(e.w-n.w)<=t};S.ZERO=Object.freeze(new S(0,0,0,0));S.IDENTITY=Object.freeze(new S(0,0,0,1));S.prototype.clone=function(e){return S.clone(this,e)};S.prototype.equals=function(e){return S.equals(this,e)};S.prototype.equalsEpsilon=function(e,n){return S.equalsEpsilon(this,e,n)};S.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z}, ${this.w})`};var Xe=S;var $={},lt={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"}},an={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},wt={},Oe={east:new g,north:new g,up:new g,west:new g,south:new g,down:new g},Fe=new g,Le=new g,xe=new g;$.localFrameToFixedFrameGenerator=function(e,n){if(!lt.hasOwnProperty(e)||!lt[e].hasOwnProperty(n))throw new A("firstAxis and secondAxis must be east, north, up, west, south or down.");let t=lt[e][n],o,i=e+n;return p(wt[i])?o=wt[i]:(o=function(r,a,u){if(!p(r))throw new A("origin is required.");if(isNaN(r.x)||isNaN(r.y)||isNaN(r.z))throw new A("origin has a NaN component");if(p(u)||(u=new J),g.equalsEpsilon(r,g.ZERO,R.EPSILON14))g.unpack(an[e],0,Fe),g.unpack(an[n],0,Le),g.unpack(an[t],0,xe);else if(R.equalsEpsilon(r.x,0,R.EPSILON14)&&R.equalsEpsilon(r.y,0,R.EPSILON14)){let d=R.sign(r.z);g.unpack(an[e],0,Fe),e!=="east"&&e!=="west"&&g.multiplyByScalar(Fe,d,Fe),g.unpack(an[n],0,Le),n!=="east"&&n!=="west"&&g.multiplyByScalar(Le,d,Le),g.unpack(an[t],0,xe),t!=="east"&&t!=="west"&&g.multiplyByScalar(xe,d,xe)}else{a=a??Ie.default,a.geodeticSurfaceNormal(r,Oe.up);let d=Oe.up,m=Oe.east;m.x=-r.y,m.y=r.x,m.z=0,g.normalize(m,Oe.east),g.cross(d,m,Oe.north),g.multiplyByScalar(Oe.up,-1,Oe.down),g.multiplyByScalar(Oe.east,-1,Oe.west),g.multiplyByScalar(Oe.north,-1,Oe.south),Fe=Oe[e],Le=Oe[n],xe=Oe[t]}return u[0]=Fe.x,u[1]=Fe.y,u[2]=Fe.z,u[3]=0,u[4]=Le.x,u[5]=Le.y,u[6]=Le.z,u[7]=0,u[8]=xe.x,u[9]=xe.y,u[10]=xe.z,u[11]=0,u[12]=r.x,u[13]=r.y,u[14]=r.z,u[15]=1,u},wt[i]=o),o};$.eastNorthUpToFixedFrame=$.localFrameToFixedFrameGenerator("east","north");$.northEastDownToFixedFrame=$.localFrameToFixedFrameGenerator("north","east");$.northUpEastToFixedFrame=$.localFrameToFixedFrameGenerator("north","up");$.northWestUpToFixedFrame=$.localFrameToFixedFrameGenerator("north","west");var Hr=new Xe,$r=new g(1,1,1),Yr=new J;$.headingPitchRollToFixedFrame=function(e,n,t,o,i){s.typeOf.object("HeadingPitchRoll",n),o=o??$.eastNorthUpToFixedFrame;let r=Xe.fromHeadingPitchRoll(n,Hr),a=J.fromTranslationQuaternionRotationScale(g.ZERO,r,$r,Yr);return i=o(e,t,i),J.multiply(i,a,i)};var Vr=new J,Xr=new B;$.headingPitchRollQuaternion=function(e,n,t,o,i){s.typeOf.object("HeadingPitchRoll",n);let r=$.headingPitchRollToFixedFrame(e,n,t,o,Vr),a=J.getMatrix3(r,Xr);return Xe.fromRotationMatrix(a,i)};var Zr=new g(1,1,1),Jr=new g,Co=new J,Gr=new J,Kr=new B,ei=new Xe;$.fixedFrameToHeadingPitchRoll=function(e,n,t,o){s.defined("transform",e),n=n??Ie.default,t=t??$.eastNorthUpToFixedFrame,p(o)||(o=new xn);let i=J.getTranslation(e,Jr);if(g.equals(i,g.ZERO))return o.heading=0,o.pitch=0,o.roll=0,o;let r=J.inverseTransformation(t(i,n,Co),Co),a=J.setScale(e,Zr,Gr);a=J.setTranslation(a,g.ZERO,a),r=J.multiply(r,a,r);let u=Xe.fromRotationMatrix(J.getMatrix3(r,Kr),ei);return u=Xe.normalize(u,u),xn.fromQuaternion(u,o)};var ni=6*3600+2460+50.54841,ti=8640184812866e-6,oi=.093104,ri=-62e-7,ii=11772758384668e-32,ci=72921158553e-15,si=R.TWO_PI/86400,Xn=new ue;$.computeIcrfToCentralBodyFixedMatrix=function(e,n){let t=$.computeIcrfToFixedMatrix(e,n);return p(t)||(t=$.computeTemeToPseudoFixedMatrix(e,n)),t};$.computeTemeToPseudoFixedMatrix=function(e,n){if(!p(e))throw new A("date is required.");Xn=ue.addSeconds(e,-ue.computeTaiMinusUtc(e),Xn);let t=Xn.dayNumber,o=Xn.secondsOfDay,i,r=t-2451545;o>=43200?i=(r+.5)/ie.DAYS_PER_JULIAN_CENTURY:i=(r-.5)/ie.DAYS_PER_JULIAN_CENTURY;let u=(ni+i*(ti+i*(oi+i*ri)))*si%R.TWO_PI,d=ci+ii*(t-24515455e-1),m=(o+ie.SECONDS_PER_DAY*.5)%ie.SECONDS_PER_DAY,l=u+d*m,w=Math.cos(l),E=Math.sin(l);return p(n)?(n[0]=w,n[1]=-E,n[2]=0,n[3]=E,n[4]=w,n[5]=0,n[6]=0,n[7]=0,n[8]=1,n):new B(w,E,0,-E,w,0,0,0,1)};$.iau2006XysData=new Oo;$.earthOrientationParameters=ho.NONE;var gt=32.184,ai=2451545;$.preloadIcrfFixed=function(e){let n=e.start.dayNumber,t=e.start.secondsOfDay+gt,o=e.stop.dayNumber,i=e.stop.secondsOfDay+gt;return $.iau2006XysData.preload(n,t,o,i)};$.computeIcrfToFixedMatrix=function(e,n){if(!p(e))throw new A("date is required.");p(n)||(n=new B);let t=$.computeFixedToIcrfMatrix(e,n);if(p(t))return B.transpose(t,n)};var fi=32.184,ui=2451545,Zn=new xn,pi=new B,hi=new ue;$.computeMoonFixedToIcrfMatrix=function(e,n){if(!p(e))throw new A("date is required.");p(n)||(n=new B);let t=ue.addSeconds(e,fi,hi),o=ue.totalDays(t)-ui,i=R.toRadians(12.112)-R.toRadians(.052992)*o,r=R.toRadians(24.224)-R.toRadians(.105984)*o,a=R.toRadians(227.645)+R.toRadians(13.012)*o,u=R.toRadians(261.105)+R.toRadians(13.340716)*o,d=R.toRadians(358)+R.toRadians(.9856)*o;return Zn.pitch=R.toRadians(180)-R.toRadians(3.878)*Math.sin(i)-R.toRadians(.12)*Math.sin(r)+R.toRadians(.07)*Math.sin(a)-R.toRadians(.017)*Math.sin(u),Zn.roll=R.toRadians(66.53-90)+R.toRadians(1.543)*Math.cos(i)+R.toRadians(.24)*Math.cos(r)-R.toRadians(.028)*Math.cos(a)+R.toRadians(.007)*Math.cos(u),Zn.heading=R.toRadians(244.375-90)+R.toRadians(13.17635831)*o+R.toRadians(3.558)*Math.sin(i)+R.toRadians(.121)*Math.sin(r)-R.toRadians(.064)*Math.sin(a)+R.toRadians(.016)*Math.sin(u)+R.toRadians(.025)*Math.sin(d),B.fromHeadingPitchRoll(Zn,pi)};$.computeIcrfToMoonFixedMatrix=function(e,n){if(!p(e))throw new A("date is required.");p(n)||(n=new B);let t=$.computeMoonFixedToIcrfMatrix(e,n);if(p(t))return B.transpose(t,n)};var di=new Wn(0,0,0),mi=new hn(0,0,0,0,0,0),bt=new B,Ot=new B;$.computeFixedToIcrfMatrix=function(e,n){if(!p(e))throw new A("date is required.");p(n)||(n=new B);let t=$.earthOrientationParameters.compute(e,mi);if(!p(t))return;let o=e.dayNumber,i=e.secondsOfDay+gt,r=$.iau2006XysData.computeXysRadians(o,i,di);if(!p(r))return;let a=r.x+t.xPoleOffset,u=r.y+t.yPoleOffset,d=1/(1+Math.sqrt(1-a*a-u*u)),m=bt;m[0]=1-d*a*a,m[3]=-d*a*u,m[6]=a,m[1]=-d*a*u,m[4]=1-d*u*u,m[7]=u,m[2]=-a,m[5]=-u,m[8]=1-d*(a*a+u*u);let l=B.fromRotationZ(-r.s,Ot),w=B.multiply(m,l,bt),E=e.dayNumber,T=e.secondsOfDay-ue.computeTaiMinusUtc(e)+t.ut1MinusUtc,M=E-2451545,v=T/ie.SECONDS_PER_DAY,I=.779057273264+v+.00273781191135448*(M+v);I=I%1*R.TWO_PI;let N=B.fromRotationZ(I,Ot),F=B.multiply(w,N,bt),k=Math.cos(t.xPoleWander),x=Math.cos(t.yPoleWander),Q=Math.sin(t.xPoleWander),W=Math.sin(t.yPoleWander),K=o-ai+i/ie.SECONDS_PER_DAY;K/=36525;let oe=-47e-6*K*R.RADIANS_PER_DEGREE/3600,X=Math.cos(oe),te=Math.sin(oe),Z=Ot;return Z[0]=k*X,Z[1]=k*te,Z[2]=Q,Z[3]=-x*te+W*Q*X,Z[4]=x*X+W*Q*te,Z[5]=-W*k,Z[6]=-W*te-x*Q*X,Z[7]=W*X-x*Q*te,Z[8]=x*k,B.multiply(F,Z,n)};var yi=new qe;$.pointToWindowCoordinates=function(e,n,t,o){return o=$.pointToGLWindowCoordinates(e,n,t,o),o.y=2*n[5]-o.y,o};$.pointToGLWindowCoordinates=function(e,n,t,o){if(!p(e))throw new A("modelViewProjectionMatrix is required.");if(!p(n))throw new A("viewportTransformation is required.");if(!p(t))throw new A("point is required.");p(o)||(o=new be);let i=yi;return J.multiplyByVector(e,qe.fromElements(t.x,t.y,t.z,1,i),i),qe.multiplyByScalar(i,1/i.w,i),J.multiplyByVector(n,i,i),be.fromCartesian4(i,o)};var li=new g,wi=new g,bi=new g;$.rotationMatrixFromPositionVelocity=function(e,n,t,o){if(!p(e))throw new A("position is required.");if(!p(n))throw new A("velocity is required.");let i=(t??Ie.default).geodeticSurfaceNormal(e,li),r=g.cross(n,i,wi);g.equalsEpsilon(r,g.ZERO,R.EPSILON6)&&(r=g.clone(g.UNIT_X,r));let a=g.cross(r,n,bi);return g.normalize(a,a),g.cross(n,a,r),g.negate(r,r),g.normalize(r,r),p(o)||(o=new B),o[0]=n.x,o[1]=n.y,o[2]=n.z,o[3]=r.x,o[4]=r.y,o[5]=r.z,o[6]=a.x,o[7]=a.y,o[8]=a.z,o};var vo=new J(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1),Ao=new Me,_t=new g,Oi=new g,gi=new B,St=new J,jo=new J;$.basisTo2D=function(e,n,t){if(!p(e))throw new A("projection is required.");if(!p(n))throw new A("matrix is required.");if(!p(t))throw new A("result is required.");let o=J.getTranslation(n,Oi),i=e.ellipsoid,r;if(g.equals(o,g.ZERO))r=g.clone(g.ZERO,_t);else{let l=i.cartesianToCartographic(o,Ao);r=e.project(l,_t),g.fromElements(r.z,r.x,r.y,r)}let a=$.eastNorthUpToFixedFrame(o,i,St),u=J.inverseTransformation(a,jo),d=J.getMatrix3(n,gi),m=J.multiplyByMatrix3(u,d,t);return J.multiply(vo,m,t),J.setTranslation(t,r,t),t};$.ellipsoidTo2DModelMatrix=function(e,n,t){if(!p(e))throw new A("projection is required.");if(!p(n))throw new A("center is required.");if(!p(t))throw new A("result is required.");let o=e.ellipsoid,i=$.eastNorthUpToFixedFrame(n,o,St),r=J.inverseTransformation(i,jo),a=o.cartesianToCartographic(n,Ao),u=e.project(a,_t);g.fromElements(u.z,u.x,u.y,u);let d=J.fromTranslation(u,St);return J.multiply(vo,r,t),J.multiply(d,t,t),t};var Mo=$;function L(e,n,t,o){this.west=e??0,this.south=n??0,this.east=t??0,this.north=o??0}Object.defineProperties(L.prototype,{width:{get:function(){return L.computeWidth(this)}},height:{get:function(){return L.computeHeight(this)}}});L.packedLength=4;L.pack=function(e,n,t){return s.typeOf.object("value",e),s.defined("array",n),t=t??0,n[t++]=e.west,n[t++]=e.south,n[t++]=e.east,n[t]=e.north,n};L.unpack=function(e,n,t){return s.defined("array",e),n=n??0,p(t)||(t=new L),t.west=e[n++],t.south=e[n++],t.east=e[n++],t.north=e[n],t};L.computeWidth=function(e){s.typeOf.object("rectangle",e);let n=e.east,t=e.west;return n<t&&(n+=R.TWO_PI),n-t};L.computeHeight=function(e){return s.typeOf.object("rectangle",e),e.north-e.south};L.fromDegrees=function(e,n,t,o,i){return e=R.toRadians(e??0),n=R.toRadians(n??0),t=R.toRadians(t??0),o=R.toRadians(o??0),p(i)?(i.west=e,i.south=n,i.east=t,i.north=o,i):new L(e,n,t,o)};L.fromRadians=function(e,n,t,o,i){return p(i)?(i.west=e??0,i.south=n??0,i.east=t??0,i.north=o??0,i):new L(e,n,t,o)};L.fromCartographicArray=function(e,n){s.defined("cartographics",e);let t=Number.MAX_VALUE,o=-Number.MAX_VALUE,i=Number.MAX_VALUE,r=-Number.MAX_VALUE,a=Number.MAX_VALUE,u=-Number.MAX_VALUE;for(let d=0,m=e.length;d<m;d++){let l=e[d];t=Math.min(t,l.longitude),o=Math.max(o,l.longitude),a=Math.min(a,l.latitude),u=Math.max(u,l.latitude);let w=l.longitude>=0?l.longitude:l.longitude+R.TWO_PI;i=Math.min(i,w),r=Math.max(r,w)}return o-t>r-i&&(t=i,o=r,o>R.PI&&(o=o-R.TWO_PI),t>R.PI&&(t=t-R.TWO_PI)),p(n)?(n.west=t,n.south=a,n.east=o,n.north=u,n):new L(t,a,o,u)};L.fromCartesianArray=function(e,n,t){s.defined("cartesians",e),n=n??Ie.default;let o=Number.MAX_VALUE,i=-Number.MAX_VALUE,r=Number.MAX_VALUE,a=-Number.MAX_VALUE,u=Number.MAX_VALUE,d=-Number.MAX_VALUE;for(let m=0,l=e.length;m<l;m++){let w=n.cartesianToCartographic(e[m]);o=Math.min(o,w.longitude),i=Math.max(i,w.longitude),u=Math.min(u,w.latitude),d=Math.max(d,w.latitude);let E=w.longitude>=0?w.longitude:w.longitude+R.TWO_PI;r=Math.min(r,E),a=Math.max(a,E)}return i-o>a-r&&(o=r,i=a,i>R.PI&&(i=i-R.TWO_PI),o>R.PI&&(o=o-R.TWO_PI)),p(t)?(t.west=o,t.south=u,t.east=i,t.north=d,t):new L(o,u,i,d)};var _i=new g,Si=new g,Ri=new g,Ei=new g,Ti=new g,Rt=new Array(5);for(let e=0;e<Rt.length;++e)Rt[e]=new g;L.fromBoundingSphere=function(e,n,t){s.typeOf.object("boundingSphere",e);let o=e.center,i=e.radius;if(p(n)||(n=Ie.default),p(t)||(t=new L),g.equals(o,g.ZERO))return L.clone(L.MAX_VALUE,t),t;let r=Mo.eastNorthUpToFixedFrame(o,n,_i),a=J.multiplyByPointAsVector(r,g.UNIT_X,Si);g.normalize(a,a);let u=J.multiplyByPointAsVector(r,g.UNIT_Y,Ri);g.normalize(u,u),g.multiplyByScalar(u,i,u),g.multiplyByScalar(a,i,a);let d=g.negate(u,Ti),m=g.negate(a,Ei),l=Rt,w=l[0];return g.add(o,u,w),w=l[1],g.add(o,m,w),w=l[2],g.add(o,d,w),w=l[3],g.add(o,a,w),l[4]=o,L.fromCartesianArray(l,n,t)};L.clone=function(e,n){if(p(e))return p(n)?(n.west=e.west,n.south=e.south,n.east=e.east,n.north=e.north,n):new L(e.west,e.south,e.east,e.north)};L.equalsEpsilon=function(e,n,t){return t=t??0,e===n||p(e)&&p(n)&&Math.abs(e.west-n.west)<=t&&Math.abs(e.south-n.south)<=t&&Math.abs(e.east-n.east)<=t&&Math.abs(e.north-n.north)<=t};L.prototype.clone=function(e){return L.clone(this,e)};L.prototype.equals=function(e){return L.equals(this,e)};L.equals=function(e,n){return e===n||p(e)&&p(n)&&e.west===n.west&&e.south===n.south&&e.east===n.east&&e.north===n.north};L.prototype.equalsEpsilon=function(e,n){return L.equalsEpsilon(this,e,n)};L._validate=function(e){s.typeOf.object("rectangle",e);let n=e.north;s.typeOf.number.greaterThanOrEquals("north",n,-R.PI_OVER_TWO),s.typeOf.number.lessThanOrEquals("north",n,R.PI_OVER_TWO);let t=e.south;s.typeOf.number.greaterThanOrEquals("south",t,-R.PI_OVER_TWO),s.typeOf.number.lessThanOrEquals("south",t,R.PI_OVER_TWO);let o=e.west;s.typeOf.number.greaterThanOrEquals("west",o,-Math.PI),s.typeOf.number.lessThanOrEquals("west",o,Math.PI);let i=e.east;s.typeOf.number.greaterThanOrEquals("east",i,-Math.PI),s.typeOf.number.lessThanOrEquals("east",i,Math.PI)};L.southwest=function(e,n){return s.typeOf.object("rectangle",e),p(n)?(n.longitude=e.west,n.latitude=e.south,n.height=0,n):new Me(e.west,e.south)};L.northwest=function(e,n){return s.typeOf.object("rectangle",e),p(n)?(n.longitude=e.west,n.latitude=e.north,n.height=0,n):new Me(e.west,e.north)};L.northeast=function(e,n){return s.typeOf.object("rectangle",e),p(n)?(n.longitude=e.east,n.latitude=e.north,n.height=0,n):new Me(e.east,e.north)};L.southeast=function(e,n){return s.typeOf.object("rectangle",e),p(n)?(n.longitude=e.east,n.latitude=e.south,n.height=0,n):new Me(e.east,e.south)};L.center=function(e,n){s.typeOf.object("rectangle",e);let t=e.east,o=e.west;t<o&&(t+=R.TWO_PI);let i=R.negativePiToPi((o+t)*.5),r=(e.south+e.north)*.5;return p(n)?(n.longitude=i,n.latitude=r,n.height=0,n):new Me(i,r)};L.intersection=function(e,n,t){s.typeOf.object("rectangle",e),s.typeOf.object("otherRectangle",n);let o=e.east,i=e.west,r=n.east,a=n.west;o<i&&r>0?o+=R.TWO_PI:r<a&&o>0&&(r+=R.TWO_PI),o<i&&a<0?a+=R.TWO_PI:r<a&&i<0&&(i+=R.TWO_PI);let u=R.negativePiToPi(Math.max(i,a)),d=R.negativePiToPi(Math.min(o,r));if((e.west<e.east||n.west<n.east)&&d<=u)return;let m=Math.max(e.south,n.south),l=Math.min(e.north,n.north);if(!(m>=l))return p(t)?(t.west=u,t.south=m,t.east=d,t.north=l,t):new L(u,m,d,l)};L.simpleIntersection=function(e,n,t){s.typeOf.object("rectangle",e),s.typeOf.object("otherRectangle",n);let o=Math.max(e.west,n.west),i=Math.max(e.south,n.south),r=Math.min(e.east,n.east),a=Math.min(e.north,n.north);if(!(i>=a||o>=r))return p(t)?(t.west=o,t.south=i,t.east=r,t.north=a,t):new L(o,i,r,a)};L.union=function(e,n,t){s.typeOf.object("rectangle",e),s.typeOf.object("otherRectangle",n),p(t)||(t=new L);let o=e.east,i=e.west,r=n.east,a=n.west;o<i&&r>0?o+=R.TWO_PI:r<a&&o>0&&(r+=R.TWO_PI),o<i&&a<0?a+=R.TWO_PI:r<a&&i<0&&(i+=R.TWO_PI);let u=R.negativePiToPi(Math.min(i,a)),d=R.negativePiToPi(Math.max(o,r));return t.west=u,t.south=Math.min(e.south,n.south),t.east=d,t.north=Math.max(e.north,n.north),t};L.expand=function(e,n,t){return s.typeOf.object("rectangle",e),s.typeOf.object("cartographic",n),p(t)||(t=new L),t.west=Math.min(e.west,n.longitude),t.south=Math.min(e.south,n.latitude),t.east=Math.max(e.east,n.longitude),t.north=Math.max(e.north,n.latitude),t};L.contains=function(e,n){s.typeOf.object("rectangle",e),s.typeOf.object("cartographic",n);let t=n.longitude,o=n.latitude,i=e.west,r=e.east;return r<i&&(r+=R.TWO_PI,t<0&&(t+=R.TWO_PI)),(t>i||R.equalsEpsilon(t,i,R.EPSILON14))&&(t<r||R.equalsEpsilon(t,r,R.EPSILON14))&&o>=e.south&&o<=e.north};var Ci=new Me;L.subsample=function(e,n,t,o){s.typeOf.object("rectangle",e),n=n??Ie.default,t=t??0,p(o)||(o=[]);let i=0,r=e.north,a=e.south,u=e.east,d=e.west,m=Ci;m.height=t,m.longitude=d,m.latitude=r,o[i]=n.cartographicToCartesian(m,o[i]),i++,m.longitude=u,o[i]=n.cartographicToCartesian(m,o[i]),i++,m.latitude=a,o[i]=n.cartographicToCartesian(m,o[i]),i++,m.longitude=d,o[i]=n.cartographicToCartesian(m,o[i]),i++,r<0?m.latitude=r:a>0?m.latitude=a:m.latitude=0;for(let l=1;l<8;++l)m.longitude=-Math.PI+l*R.PI_OVER_TWO,L.contains(e,m)&&(o[i]=n.cartographicToCartesian(m,o[i]),i++);return m.latitude===0&&(m.longitude=d,o[i]=n.cartographicToCartesian(m,o[i]),i++,m.longitude=u,o[i]=n.cartographicToCartesian(m,o[i]),i++),o.length=i,o};L.subsection=function(e,n,t,o,i,r){if(s.typeOf.object("rectangle",e),s.typeOf.number.greaterThanOrEquals("westLerp",n,0),s.typeOf.number.lessThanOrEquals("westLerp",n,1),s.typeOf.number.greaterThanOrEquals("southLerp",t,0),s.typeOf.number.lessThanOrEquals("southLerp",t,1),s.typeOf.number.greaterThanOrEquals("eastLerp",o,0),s.typeOf.number.lessThanOrEquals("eastLerp",o,1),s.typeOf.number.greaterThanOrEquals("northLerp",i,0),s.typeOf.number.lessThanOrEquals("northLerp",i,1),s.typeOf.number.lessThanOrEquals("westLerp",n,o),s.typeOf.number.lessThanOrEquals("southLerp",t,i),p(r)||(r=new L),e.west<=e.east){let u=e.east-e.west;r.west=e.west+n*u,r.east=e.west+o*u}else{let u=R.TWO_PI+e.east-e.west;r.west=R.negativePiToPi(e.west+n*u),r.east=R.negativePiToPi(e.west+o*u)}let a=e.north-e.south;return r.south=e.south+t*a,r.north=e.south+i*a,n===1&&(r.west=e.east),o===1&&(r.east=e.east),t===1&&(r.south=e.north),i===1&&(r.north=e.north),r};L.MAX_VALUE=Object.freeze(new L(-Math.PI,-R.PI_OVER_TWO,Math.PI,R.PI_OVER_TWO));var nf=L;function q(e,n,t,o){this[0]=e??0,this[1]=t??0,this[2]=n??0,this[3]=o??0}q.packedLength=4;q.pack=function(e,n,t){return s.typeOf.object("value",e),s.defined("array",n),t=t??0,n[t++]=e[0],n[t++]=e[1],n[t++]=e[2],n[t++]=e[3],n};q.unpack=function(e,n,t){return s.defined("array",e),n=n??0,p(t)||(t=new q),t[0]=e[n++],t[1]=e[n++],t[2]=e[n++],t[3]=e[n++],t};q.packArray=function(e,n){s.defined("array",e);let t=e.length,o=t*4;if(!p(n))n=new Array(o);else{if(!Array.isArray(n)&&n.length!==o)throw new A("If result is a typed array, it must have exactly array.length * 4 elements");n.length!==o&&(n.length=o)}for(let i=0;i<t;++i)q.pack(e[i],n,i*4);return n};q.unpackArray=function(e,n){if(s.defined("array",e),s.typeOf.number.greaterThanOrEquals("array.length",e.length,4),e.length%4!==0)throw new A("array length must be a multiple of 4.");let t=e.length;p(n)?n.length=t/4:n=new Array(t/4);for(let o=0;o<t;o+=4){let i=o/4;n[i]=q.unpack(e,o,n[i])}return n};q.clone=function(e,n){if(p(e))return p(n)?(n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n):new q(e[0],e[2],e[1],e[3])};q.fromArray=q.unpack;q.fromColumnMajorArray=function(e,n){return s.defined("values",e),q.clone(e,n)};q.fromRowMajorArray=function(e,n){return s.defined("values",e),p(n)?(n[0]=e[0],n[1]=e[2],n[2]=e[1],n[3]=e[3],n):new q(e[0],e[1],e[2],e[3])};q.fromScale=function(e,n){return s.typeOf.object("scale",e),p(n)?(n[0]=e.x,n[1]=0,n[2]=0,n[3]=e.y,n):new q(e.x,0,0,e.y)};q.fromUniformScale=function(e,n){return s.typeOf.number("scale",e),p(n)?(n[0]=e,n[1]=0,n[2]=0,n[3]=e,n):new q(e,0,0,e)};q.fromRotation=function(e,n){s.typeOf.number("angle",e);let t=Math.cos(e),o=Math.sin(e);return p(n)?(n[0]=t,n[1]=o,n[2]=-o,n[3]=t,n):new q(t,-o,o,t)};q.toArray=function(e,n){return s.typeOf.object("matrix",e),p(n)?(n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n):[e[0],e[1],e[2],e[3]]};q.getElementIndex=function(e,n){return s.typeOf.number.greaterThanOrEquals("row",n,0),s.typeOf.number.lessThanOrEquals("row",n,1),s.typeOf.number.greaterThanOrEquals("column",e,0),s.typeOf.number.lessThanOrEquals("column",e,1),e*2+n};q.getColumn=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.number.greaterThanOrEquals("index",n,0),s.typeOf.number.lessThanOrEquals("index",n,1),s.typeOf.object("result",t);let o=n*2,i=e[o],r=e[o+1];return t.x=i,t.y=r,t};q.setColumn=function(e,n,t,o){s.typeOf.object("matrix",e),s.typeOf.number.greaterThanOrEquals("index",n,0),s.typeOf.number.lessThanOrEquals("index",n,1),s.typeOf.object("cartesian",t),s.typeOf.object("result",o),o=q.clone(e,o);let i=n*2;return o[i]=t.x,o[i+1]=t.y,o};q.getRow=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.number.greaterThanOrEquals("index",n,0),s.typeOf.number.lessThanOrEquals("index",n,1),s.typeOf.object("result",t);let o=e[n],i=e[n+2];return t.x=o,t.y=i,t};q.setRow=function(e,n,t,o){return s.typeOf.object("matrix",e),s.typeOf.number.greaterThanOrEquals("index",n,0),s.typeOf.number.lessThanOrEquals("index",n,1),s.typeOf.object("cartesian",t),s.typeOf.object("result",o),o=q.clone(e,o),o[n]=t.x,o[n+2]=t.y,o};var vi=new be;q.setScale=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("scale",n),s.typeOf.object("result",t);let o=q.getScale(e,vi),i=n.x/o.x,r=n.y/o.y;return t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*r,t[3]=e[3]*r,t};var Ai=new be;q.setUniformScale=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.number("scale",n),s.typeOf.object("result",t);let o=q.getScale(e,Ai),i=n/o.x,r=n/o.y;return t[0]=e[0]*i,t[1]=e[1]*i,t[2]=e[2]*r,t[3]=e[3]*r,t};var Po=new be;q.getScale=function(e,n){return s.typeOf.object("matrix",e),s.typeOf.object("result",n),n.x=be.magnitude(be.fromElements(e[0],e[1],Po)),n.y=be.magnitude(be.fromElements(e[2],e[3],Po)),n};var Uo=new be;q.getMaximumScale=function(e){return q.getScale(e,Uo),be.maximumComponent(Uo)};var ji=new be;q.setRotation=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("result",t);let o=q.getScale(e,ji);return t[0]=n[0]*o.x,t[1]=n[1]*o.x,t[2]=n[2]*o.y,t[3]=n[3]*o.y,t};var Mi=new be;q.getRotation=function(e,n){s.typeOf.object("matrix",e),s.typeOf.object("result",n);let t=q.getScale(e,Mi);return n[0]=e[0]/t.x,n[1]=e[1]/t.x,n[2]=e[2]/t.y,n[3]=e[3]/t.y,n};q.multiply=function(e,n,t){s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t);let o=e[0]*n[0]+e[2]*n[1],i=e[0]*n[2]+e[2]*n[3],r=e[1]*n[0]+e[3]*n[1],a=e[1]*n[2]+e[3]*n[3];return t[0]=o,t[1]=r,t[2]=i,t[3]=a,t};q.add=function(e,n,t){return s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t),t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t[3]=e[3]+n[3],t};q.subtract=function(e,n,t){return s.typeOf.object("left",e),s.typeOf.object("right",n),s.typeOf.object("result",t),t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t[3]=e[3]-n[3],t};q.multiplyByVector=function(e,n,t){s.typeOf.object("matrix",e),s.typeOf.object("cartesian",n),s.typeOf.object("result",t);let o=e[0]*n.x+e[2]*n.y,i=e[1]*n.x+e[3]*n.y;return t.x=o,t.y=i,t};q.multiplyByScalar=function(e,n,t){return s.typeOf.object("matrix",e),s.typeOf.number("scalar",n),s.typeOf.object("result",t),t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t};q.multiplyByScale=function(e,n,t){return s.typeOf.object("matrix",e),s.typeOf.object("scale",n),s.typeOf.object("result",t),t[0]=e[0]*n.x,t[1]=e[1]*n.x,t[2]=e[2]*n.y,t[3]=e[3]*n.y,t};q.multiplyByUniformScale=function(e,n,t){return s.typeOf.object("matrix",e),s.typeOf.number("scale",n),s.typeOf.object("result",t),t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t};q.negate=function(e,n){return s.typeOf.object("matrix",e),s.typeOf.object("result",n),n[0]=-e[0],n[1]=-e[1],n[2]=-e[2],n[3]=-e[3],n};q.transpose=function(e,n){s.typeOf.object("matrix",e),s.typeOf.object("result",n);let t=e[0],o=e[2],i=e[1],r=e[3];return n[0]=t,n[1]=o,n[2]=i,n[3]=r,n};q.abs=function(e,n){return s.typeOf.object("matrix",e),s.typeOf.object("result",n),n[0]=Math.abs(e[0]),n[1]=Math.abs(e[1]),n[2]=Math.abs(e[2]),n[3]=Math.abs(e[3]),n};q.equals=function(e,n){return e===n||p(e)&&p(n)&&e[0]===n[0]&&e[1]===n[1]&&e[2]===n[2]&&e[3]===n[3]};q.equalsArray=function(e,n,t){return e[0]===n[t]&&e[1]===n[t+1]&&e[2]===n[t+2]&&e[3]===n[t+3]};q.equalsEpsilon=function(e,n,t){return t=t??0,e===n||p(e)&&p(n)&&Math.abs(e[0]-n[0])<=t&&Math.abs(e[1]-n[1])<=t&&Math.abs(e[2]-n[2])<=t&&Math.abs(e[3]-n[3])<=t};q.IDENTITY=Object.freeze(new q(1,0,0,1));q.ZERO=Object.freeze(new q(0,0,0,0));q.COLUMN0ROW0=0;q.COLUMN0ROW1=1;q.COLUMN1ROW0=2;q.COLUMN1ROW1=3;Object.defineProperties(q.prototype,{length:{get:function(){return q.packedLength}}});q.prototype.clone=function(e){return q.clone(this,e)};q.prototype.equals=function(e){return q.equals(this,e)};q.prototype.equalsEpsilon=function(e,n){return q.equalsEpsilon(this,e,n)};q.prototype.toString=function(){return`(${this[0]}, ${this[2]}) +(${this[1]}, ${this[3]})`};var af=q;export{qe as a,J as b,De as c,ke as d,bo as e,Xe as f,Mo as g,nf as h,af as i}; diff --git a/public/Cesium/Workers/chunk-QN3VOORQ.js b/public/Cesium/Workers/chunk-QN3VOORQ.js new file mode 100644 index 000000000..16f2a96e9 --- /dev/null +++ b/public/Cesium/Workers/chunk-QN3VOORQ.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as b}from"./chunk-GBYLG25F.js";import{a as u}from"./chunk-CYCB63OH.js";import{a as O}from"./chunk-A56XVLQR.js";import{b as w,c as h,d as y}from"./chunk-RCV6KWXS.js";import{d as l}from"./chunk-4IW2T6GF.js";import{a as p}from"./chunk-AU7IKHOH.js";import{a as i,f as A}from"./chunk-64RSHJUE.js";import{a as d,b as c}from"./chunk-LEYMRMBK.js";import{e as x}from"./chunk-VTAIKJXX.js";var D=new i;function f(r){r=r??A.EMPTY_OBJECT;let o=r.minimum,m=r.maximum;if(c.typeOf.object("min",o),c.typeOf.object("max",m),x(r.offsetAttribute)&&r.offsetAttribute===b.TOP)throw new d("GeometryOffsetAttribute.TOP is not a supported options.offsetAttribute for this geometry.");let a=r.vertexFormat??u.DEFAULT;this._minimum=i.clone(o),this._maximum=i.clone(m),this._vertexFormat=a,this._offsetAttribute=r.offsetAttribute,this._workerName="createBoxGeometry"}f.fromDimensions=function(r){r=r??A.EMPTY_OBJECT;let o=r.dimensions;c.typeOf.object("dimensions",o),c.typeOf.number.greaterThanOrEquals("dimensions.x",o.x,0),c.typeOf.number.greaterThanOrEquals("dimensions.y",o.y,0),c.typeOf.number.greaterThanOrEquals("dimensions.z",o.z,0);let m=i.multiplyByScalar(o,.5,new i);return new f({minimum:i.negate(m,new i),maximum:m,vertexFormat:r.vertexFormat,offsetAttribute:r.offsetAttribute})};f.fromAxisAlignedBoundingBox=function(r){return c.typeOf.object("boundingBox",r),new f({minimum:r.minimum,maximum:r.maximum})};f.packedLength=2*i.packedLength+u.packedLength+1;f.pack=function(r,o,m){return c.typeOf.object("value",r),c.defined("array",o),m=m??0,i.pack(r._minimum,o,m),i.pack(r._maximum,o,m+i.packedLength),u.pack(r._vertexFormat,o,m+2*i.packedLength),o[m+2*i.packedLength+u.packedLength]=r._offsetAttribute??-1,o};var _=new i,g=new i,k=new u,F={minimum:_,maximum:g,vertexFormat:k,offsetAttribute:void 0};f.unpack=function(r,o,m){c.defined("array",r),o=o??0;let a=i.unpack(r,o,_),s=i.unpack(r,o+i.packedLength,g),n=u.unpack(r,o+2*i.packedLength,k),e=r[o+2*i.packedLength+u.packedLength];return x(m)?(m._minimum=i.clone(a,m._minimum),m._maximum=i.clone(s,m._maximum),m._vertexFormat=u.clone(n,m._vertexFormat),m._offsetAttribute=e===-1?void 0:e,m):(F.offsetAttribute=e===-1?void 0:e,new f(F))};f.createGeometry=function(r){let o=r._minimum,m=r._maximum,a=r._vertexFormat;if(i.equals(o,m))return;let s=new O,n,e;if(a.position&&(a.st||a.normal||a.tangent||a.bitangent)){if(a.position&&(e=new Float64Array(72),e[0]=o.x,e[1]=o.y,e[2]=m.z,e[3]=m.x,e[4]=o.y,e[5]=m.z,e[6]=m.x,e[7]=m.y,e[8]=m.z,e[9]=o.x,e[10]=m.y,e[11]=m.z,e[12]=o.x,e[13]=o.y,e[14]=o.z,e[15]=m.x,e[16]=o.y,e[17]=o.z,e[18]=m.x,e[19]=m.y,e[20]=o.z,e[21]=o.x,e[22]=m.y,e[23]=o.z,e[24]=m.x,e[25]=o.y,e[26]=o.z,e[27]=m.x,e[28]=m.y,e[29]=o.z,e[30]=m.x,e[31]=m.y,e[32]=m.z,e[33]=m.x,e[34]=o.y,e[35]=m.z,e[36]=o.x,e[37]=o.y,e[38]=o.z,e[39]=o.x,e[40]=m.y,e[41]=o.z,e[42]=o.x,e[43]=m.y,e[44]=m.z,e[45]=o.x,e[46]=o.y,e[47]=m.z,e[48]=o.x,e[49]=m.y,e[50]=o.z,e[51]=m.x,e[52]=m.y,e[53]=o.z,e[54]=m.x,e[55]=m.y,e[56]=m.z,e[57]=o.x,e[58]=m.y,e[59]=m.z,e[60]=o.x,e[61]=o.y,e[62]=o.z,e[63]=m.x,e[64]=o.y,e[65]=o.z,e[66]=m.x,e[67]=o.y,e[68]=m.z,e[69]=o.x,e[70]=o.y,e[71]=m.z,s.position=new y({componentDatatype:p.DOUBLE,componentsPerAttribute:3,values:e})),a.normal){let t=new Float32Array(72);t[0]=0,t[1]=0,t[2]=1,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=1,t[9]=0,t[10]=0,t[11]=1,t[12]=0,t[13]=0,t[14]=-1,t[15]=0,t[16]=0,t[17]=-1,t[18]=0,t[19]=0,t[20]=-1,t[21]=0,t[22]=0,t[23]=-1,t[24]=1,t[25]=0,t[26]=0,t[27]=1,t[28]=0,t[29]=0,t[30]=1,t[31]=0,t[32]=0,t[33]=1,t[34]=0,t[35]=0,t[36]=-1,t[37]=0,t[38]=0,t[39]=-1,t[40]=0,t[41]=0,t[42]=-1,t[43]=0,t[44]=0,t[45]=-1,t[46]=0,t[47]=0,t[48]=0,t[49]=1,t[50]=0,t[51]=0,t[52]=1,t[53]=0,t[54]=0,t[55]=1,t[56]=0,t[57]=0,t[58]=1,t[59]=0,t[60]=0,t[61]=-1,t[62]=0,t[63]=0,t[64]=-1,t[65]=0,t[66]=0,t[67]=-1,t[68]=0,t[69]=0,t[70]=-1,t[71]=0,s.normal=new y({componentDatatype:p.FLOAT,componentsPerAttribute:3,values:t})}if(a.st){let t=new Float32Array(48);t[0]=0,t[1]=0,t[2]=1,t[3]=0,t[4]=1,t[5]=1,t[6]=0,t[7]=1,t[8]=1,t[9]=0,t[10]=0,t[11]=0,t[12]=0,t[13]=1,t[14]=1,t[15]=1,t[16]=0,t[17]=0,t[18]=1,t[19]=0,t[20]=1,t[21]=1,t[22]=0,t[23]=1,t[24]=1,t[25]=0,t[26]=0,t[27]=0,t[28]=0,t[29]=1,t[30]=1,t[31]=1,t[32]=1,t[33]=0,t[34]=0,t[35]=0,t[36]=0,t[37]=1,t[38]=1,t[39]=1,t[40]=0,t[41]=0,t[42]=1,t[43]=0,t[44]=1,t[45]=1,t[46]=0,t[47]=1,s.st=new y({componentDatatype:p.FLOAT,componentsPerAttribute:2,values:t})}if(a.tangent){let t=new Float32Array(72);t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t[6]=1,t[7]=0,t[8]=0,t[9]=1,t[10]=0,t[11]=0,t[12]=-1,t[13]=0,t[14]=0,t[15]=-1,t[16]=0,t[17]=0,t[18]=-1,t[19]=0,t[20]=0,t[21]=-1,t[22]=0,t[23]=0,t[24]=0,t[25]=1,t[26]=0,t[27]=0,t[28]=1,t[29]=0,t[30]=0,t[31]=1,t[32]=0,t[33]=0,t[34]=1,t[35]=0,t[36]=0,t[37]=-1,t[38]=0,t[39]=0,t[40]=-1,t[41]=0,t[42]=0,t[43]=-1,t[44]=0,t[45]=0,t[46]=-1,t[47]=0,t[48]=-1,t[49]=0,t[50]=0,t[51]=-1,t[52]=0,t[53]=0,t[54]=-1,t[55]=0,t[56]=0,t[57]=-1,t[58]=0,t[59]=0,t[60]=1,t[61]=0,t[62]=0,t[63]=1,t[64]=0,t[65]=0,t[66]=1,t[67]=0,t[68]=0,t[69]=1,t[70]=0,t[71]=0,s.tangent=new y({componentDatatype:p.FLOAT,componentsPerAttribute:3,values:t})}if(a.bitangent){let t=new Float32Array(72);t[0]=0,t[1]=1,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=1,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=1,t[14]=0,t[15]=0,t[16]=1,t[17]=0,t[18]=0,t[19]=1,t[20]=0,t[21]=0,t[22]=1,t[23]=0,t[24]=0,t[25]=0,t[26]=1,t[27]=0,t[28]=0,t[29]=1,t[30]=0,t[31]=0,t[32]=1,t[33]=0,t[34]=0,t[35]=1,t[36]=0,t[37]=0,t[38]=1,t[39]=0,t[40]=0,t[41]=1,t[42]=0,t[43]=0,t[44]=1,t[45]=0,t[46]=0,t[47]=1,t[48]=0,t[49]=0,t[50]=1,t[51]=0,t[52]=0,t[53]=1,t[54]=0,t[55]=0,t[56]=1,t[57]=0,t[58]=0,t[59]=1,t[60]=0,t[61]=0,t[62]=1,t[63]=0,t[64]=0,t[65]=1,t[66]=0,t[67]=0,t[68]=1,t[69]=0,t[70]=0,t[71]=1,s.bitangent=new y({componentDatatype:p.FLOAT,componentsPerAttribute:3,values:t})}n=new Uint16Array(36),n[0]=0,n[1]=1,n[2]=2,n[3]=0,n[4]=2,n[5]=3,n[6]=6,n[7]=5,n[8]=4,n[9]=7,n[10]=6,n[11]=4,n[12]=8,n[13]=9,n[14]=10,n[15]=8,n[16]=10,n[17]=11,n[18]=14,n[19]=13,n[20]=12,n[21]=15,n[22]=14,n[23]=12,n[24]=18,n[25]=17,n[26]=16,n[27]=19,n[28]=18,n[29]=16,n[30]=20,n[31]=21,n[32]=22,n[33]=20,n[34]=22,n[35]=23}else e=new Float64Array(24),e[0]=o.x,e[1]=o.y,e[2]=o.z,e[3]=m.x,e[4]=o.y,e[5]=o.z,e[6]=m.x,e[7]=m.y,e[8]=o.z,e[9]=o.x,e[10]=m.y,e[11]=o.z,e[12]=o.x,e[13]=o.y,e[14]=m.z,e[15]=m.x,e[16]=o.y,e[17]=m.z,e[18]=m.x,e[19]=m.y,e[20]=m.z,e[21]=o.x,e[22]=m.y,e[23]=m.z,s.position=new y({componentDatatype:p.DOUBLE,componentsPerAttribute:3,values:e}),n=new Uint16Array(36),n[0]=4,n[1]=5,n[2]=6,n[3]=4,n[4]=6,n[5]=7,n[6]=1,n[7]=0,n[8]=3,n[9]=1,n[10]=3,n[11]=2,n[12]=1,n[13]=6,n[14]=5,n[15]=1,n[16]=2,n[17]=6,n[18]=2,n[19]=3,n[20]=7,n[21]=2,n[22]=7,n[23]=6,n[24]=3,n[25]=0,n[26]=4,n[27]=3,n[28]=4,n[29]=7,n[30]=0,n[31]=1,n[32]=5,n[33]=0,n[34]=5,n[35]=4;let v=i.subtract(m,o,D),L=i.magnitude(v)*.5;if(x(r._offsetAttribute)){let t=e.length,T=r._offsetAttribute===b.NONE?0:1,E=new Uint8Array(t/3).fill(T);s.applyOffset=new y({componentDatatype:p.UNSIGNED_BYTE,componentsPerAttribute:1,values:E})}return new h({attributes:s,indices:n,primitiveType:w.TRIANGLES,boundingSphere:new l(i.ZERO,L),offsetAttribute:r._offsetAttribute})};var z;f.getUnitBox=function(){return x(z)||(z=f.createGeometry(f.fromDimensions({dimensions:new i(1,1,1),vertexFormat:u.POSITION_ONLY}))),z};var R=f;export{R as a}; diff --git a/public/Cesium/Workers/chunk-QOUAJ6TL.js b/public/Cesium/Workers/chunk-QOUAJ6TL.js new file mode 100644 index 000000000..e66d67fcb --- /dev/null +++ b/public/Cesium/Workers/chunk-QOUAJ6TL.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as c}from"./chunk-64RSHJUE.js";import{b as t}from"./chunk-LEYMRMBK.js";import{e as g}from"./chunk-VTAIKJXX.js";function f(){this.high=c.clone(c.ZERO),this.low=c.clone(c.ZERO)}f.encode=function(n,o){t.typeOf.number("value",n),g(o)||(o={high:0,low:0});let h;return n>=0?(h=Math.floor(n/65536)*65536,o.high=h,o.low=n-h):(h=Math.floor(-n/65536)*65536,o.high=-h,o.low=n+h),o};var e={high:0,low:0};f.fromCartesian=function(n,o){t.typeOf.object("cartesian",n),g(o)||(o=new f);let h=o.high,i=o.low;return f.encode(n.x,e),h.x=e.high,i.x=e.low,f.encode(n.y,e),h.y=e.high,i.y=e.low,f.encode(n.z,e),h.z=e.high,i.z=e.low,o};var m=new f;f.writeElements=function(n,o,h){t.defined("cartesianArray",o),t.typeOf.number("index",h),t.typeOf.number.greaterThanOrEquals("index",h,0),f.fromCartesian(n,m);let i=m.high,w=m.low;o[h]=i.x,o[h+1]=i.y,o[h+2]=i.z,o[h+3]=w.x,o[h+4]=w.y,o[h+5]=w.z};var O=f;export{O as a}; diff --git a/public/Cesium/Workers/chunk-RCV6KWXS.js b/public/Cesium/Workers/chunk-RCV6KWXS.js new file mode 100644 index 000000000..588dc2fc5 --- /dev/null +++ b/public/Cesium/Workers/chunk-RCV6KWXS.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{b as E,f as O,g as R,h as G,i as L}from"./chunk-PSPPBZWI.js";import{a as S,b as N,c as s,e as y,f as A}from"./chunk-64RSHJUE.js";import{a as u}from"./chunk-OSW76XDF.js";import{a as I,b as w}from"./chunk-LEYMRMBK.js";import{e as f}from"./chunk-VTAIKJXX.js";var U={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3},F=Object.freeze(U);var r={POINTS:u.POINTS,LINES:u.LINES,LINE_LOOP:u.LINE_LOOP,LINE_STRIP:u.LINE_STRIP,TRIANGLES:u.TRIANGLES,TRIANGLE_STRIP:u.TRIANGLE_STRIP,TRIANGLE_FAN:u.TRIANGLE_FAN};r.isLines=function(t){return t===r.LINES||t===r.LINE_LOOP||t===r.LINE_STRIP};r.isTriangles=function(t){return t===r.TRIANGLES||t===r.TRIANGLE_STRIP||t===r.TRIANGLE_FAN};r.validate=function(t){return t===r.POINTS||t===r.LINES||t===r.LINE_LOOP||t===r.LINE_STRIP||t===r.TRIANGLES||t===r.TRIANGLE_STRIP||t===r.TRIANGLE_FAN};var M=Object.freeze(r);function _(t){t=t??A.EMPTY_OBJECT,w.typeOf.object("options.attributes",t.attributes),this.attributes=t.attributes,this.indices=t.indices,this.primitiveType=t.primitiveType??M.TRIANGLES,this.boundingSphere=t.boundingSphere,this.geometryType=t.geometryType??F.NONE,this.boundingSphereCV=t.boundingSphereCV,this.offsetAttribute=t.offsetAttribute}_.computeNumberOfVertices=function(t){w.typeOf.object("geometry",t);let c=-1;for(let a in t.attributes)if(t.attributes.hasOwnProperty(a)&&f(t.attributes[a])&&f(t.attributes[a].values)){let o=t.attributes[a],e=o.values.length/o.componentsPerAttribute;if(c!==e&&c!==-1)throw new I("All attribute lists must have the same number of attributes.");c=e}return c};var W=new N,H=new S,g=new E,Z=[new N,new N,new N],K=[new s,new s,new s],$=[new s,new s,new s],tt=new S,et=new O,rt=new E,nt=new L;_._textureCoordinateRotationPoints=function(t,c,a,o){let e,V=G.center(o,W),D=N.toCartesian(V,a,H),Y=R.eastNorthUpToFixedFrame(D,a,g),C=E.inverse(Y,g),b=K,m=Z;m[0].longitude=o.west,m[0].latitude=o.south,m[1].longitude=o.west,m[1].latitude=o.north,m[2].longitude=o.east,m[2].latitude=o.south;let n=tt;for(e=0;e<3;e++)N.toCartesian(m[e],a,n),n=E.multiplyByPointAsVector(C,n,n),b[e].x=n.x,b[e].y=n.y;let z=O.fromAxisAngle(S.UNIT_Z,-c,et),B=y.fromQuaternion(z,rt),v=t.length,T=Number.POSITIVE_INFINITY,p=Number.POSITIVE_INFINITY,x=Number.NEGATIVE_INFINITY,d=Number.NEGATIVE_INFINITY;for(e=0;e<v;e++)n=E.multiplyByPointAsVector(C,t[e],n),n=y.multiplyByVector(B,n,n),T=Math.min(T,n.x),p=Math.min(p,n.y),x=Math.max(x,n.x),d=Math.max(d,n.y);let j=L.fromRotation(c,nt),i=$;i[0].x=T,i[0].y=p,i[1].x=T,i[1].y=d,i[2].x=x,i[2].y=p;let l=b[0],k=b[2].x-l.x,X=b[1].y-l.y;for(e=0;e<3;e++){let h=i[e];L.multiplyByVector(j,h,h),h.x=(h.x-l.x)/k,h.y=(h.y-l.y)/X}let q=i[0],J=i[1],Q=i[2],P=new Array(6);return s.pack(q,P),s.pack(J,P,2),s.pack(Q,P,4),P};var Lt=_;function ot(t){if(t=t??A.EMPTY_OBJECT,!f(t.componentDatatype))throw new I("options.componentDatatype is required.");if(!f(t.componentsPerAttribute))throw new I("options.componentsPerAttribute is required.");if(t.componentsPerAttribute<1||t.componentsPerAttribute>4)throw new I("options.componentsPerAttribute must be between 1 and 4.");if(!f(t.values))throw new I("options.values is required.");this.componentDatatype=t.componentDatatype,this.componentsPerAttribute=t.componentsPerAttribute,this.normalize=t.normalize??!1,this.values=t.values}var Ot=ot;export{F as a,M as b,Lt as c,Ot as d}; diff --git a/public/Cesium/Workers/chunk-TCGIRNHN.js b/public/Cesium/Workers/chunk-TCGIRNHN.js new file mode 100644 index 000000000..f10ec5f52 --- /dev/null +++ b/public/Cesium/Workers/chunk-TCGIRNHN.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as P}from"./chunk-N4VJKXZS.js";import{a as u,b as d}from"./chunk-DMEY62ID.js";import{a as j}from"./chunk-HTFSEEMT.js";import{a as _,b as h,g as A}from"./chunk-PSPPBZWI.js";import{a as e,c as l,d as g}from"./chunk-64RSHJUE.js";import{a as y,b as p}from"./chunk-LEYMRMBK.js";import{e as r}from"./chunk-VTAIKJXX.js";var x=new _;function s(n,t){if(p.defined("origin",n),t=t??g.default,n=t.scaleToGeodeticSurface(n),!r(n))throw new y("origin must not be at the center of the ellipsoid.");let o=A.eastNorthUpToFixedFrame(n,t);this._ellipsoid=t,this._origin=n,this._xAxis=e.fromCartesian4(h.getColumn(o,0,x)),this._yAxis=e.fromCartesian4(h.getColumn(o,1,x));let i=e.fromCartesian4(h.getColumn(o,2,x));this._plane=j.fromPointNormal(n,i)}Object.defineProperties(s.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var w=new P;s.fromPoints=function(n,t){p.defined("cartesians",n);let o=P.fromPoints(n,w);return new s(o.center,t)};var O=new u,m=new e;s.prototype.projectPointOntoPlane=function(n,t){p.defined("cartesian",n);let o=O;o.origin=n,e.normalize(n,o.direction);let i=d.rayPlane(o,this._plane,m);if(r(i)||(e.negate(o.direction,o.direction),i=d.rayPlane(o,this._plane,m)),r(i)){let c=e.subtract(i,this._origin,i),a=e.dot(this._xAxis,c),f=e.dot(this._yAxis,c);return r(t)?(t.x=a,t.y=f,t):new l(a,f)}};s.prototype.projectPointsOntoPlane=function(n,t){p.defined("cartesians",n),r(t)||(t=[]);let o=0,i=n.length;for(let c=0;c<i;c++){let a=this.projectPointOntoPlane(n[c],t[o]);r(a)&&(t[o]=a,o++)}return t.length=o,t};s.prototype.projectPointToNearestOnPlane=function(n,t){p.defined("cartesian",n),r(t)||(t=new l);let o=O;o.origin=n,e.clone(this._plane.normal,o.direction);let i=d.rayPlane(o,this._plane,m);r(i)||(e.negate(o.direction,o.direction),i=d.rayPlane(o,this._plane,m));let c=e.subtract(i,this._origin,i),a=e.dot(this._xAxis,c),f=e.dot(this._yAxis,c);return t.x=a,t.y=f,t};s.prototype.projectPointsToNearestOnPlane=function(n,t){p.defined("cartesians",n),r(t)||(t=[]);let o=n.length;t.length=o;for(let i=0;i<o;i++)t[i]=this.projectPointToNearestOnPlane(n[i],t[i]);return t};var C=new e;s.prototype.projectPointOntoEllipsoid=function(n,t){p.defined("cartesian",n),r(t)||(t=new e);let o=this._ellipsoid,i=this._origin,c=this._xAxis,a=this._yAxis,f=C;return e.multiplyByScalar(c,n.x,f),t=e.add(i,f,t),e.multiplyByScalar(a,n.y,f),e.add(t,f,t),o.scaleToGeocentricSurface(t,t),t};s.prototype.projectPointsOntoEllipsoid=function(n,t){p.defined("cartesians",n);let o=n.length;r(t)?t.length=o:t=new Array(o);for(let i=0;i<o;++i)t[i]=this.projectPointOntoEllipsoid(n[i],t[i]);return t};var D=s;export{D as a}; diff --git a/public/Cesium/Workers/chunk-U4IEOH5K.js b/public/Cesium/Workers/chunk-U4IEOH5K.js new file mode 100644 index 000000000..61c5d9eba --- /dev/null +++ b/public/Cesium/Workers/chunk-U4IEOH5K.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as y,b as P,d as B}from"./chunk-64RSHJUE.js";import{a as L}from"./chunk-3SSKC3VN.js";import{b as q}from"./chunk-LEYMRMBK.js";import{e as T}from"./chunk-VTAIKJXX.js";function X(n){let a=n._uSquared,t=n._ellipsoid.maximumRadius,e=n._ellipsoid.minimumRadius,f=(t-e)/t,m=Math.cos(n._startHeading),_=Math.sin(n._startHeading),r=(1-f)*Math.tan(n._start.latitude),p=1/Math.sqrt(1+r*r),R=p*r,M=Math.atan2(r,m),l=p*_,U=l*l,i=1-U,A=Math.sqrt(i),c=a/4,o=c*c,h=o*c,S=o*o,u=1+c-3*o/4+5*h/4-175*S/64,C=1-c+15*o/8-35*h/8,d=1-3*c+35*o/4,g=1-5*c,w=u*M-C*Math.sin(2*M)*c/2-d*Math.sin(4*M)*o/16-g*Math.sin(6*M)*h/48-Math.sin(8*M)*5*S/512,s=n._constants;s.a=t,s.b=e,s.f=f,s.cosineHeading=m,s.sineHeading=_,s.tanU=r,s.cosineU=p,s.sineU=R,s.sigma=M,s.sineAlpha=l,s.sineSquaredAlpha=U,s.cosineSquaredAlpha=i,s.cosineAlpha=A,s.u2Over4=c,s.u4Over16=o,s.u6Over64=h,s.u8Over256=S,s.a0=u,s.a1=C,s.a2=d,s.a3=g,s.distanceRatio=w}function Y(n,a){return n*a*(4+n*(4-3*a))/16}function k(n,a,t,e,f,m,_){let r=Y(n,t);return(1-r)*n*a*(e+r*f*(_+r*m*(2*_*_-1)))}function Z(n,a,t,e,f,m,_){let r=(a-t)/a,p=m-e,R=Math.atan((1-r)*Math.tan(f)),M=Math.atan((1-r)*Math.tan(_)),l=Math.cos(R),U=Math.sin(R),i=Math.cos(M),A=Math.sin(M),c=l*i,o=l*A,h=U*A,S=U*i,u=p,C=L.TWO_PI,d=Math.cos(u),g=Math.sin(u),w,s,O,H,b;do{d=Math.cos(u),g=Math.sin(u);let z=o-S*d;O=Math.sqrt(i*i*g*g+z*z),s=h+c*d,w=Math.atan2(O,s);let D;O===0?(D=0,H=1):(D=c*g/O,H=1-D*D),C=u,b=s-2*h/H,isFinite(b)||(b=0),u=p+k(r,D,H,w,O,s,b)}while(Math.abs(u-C)>L.EPSILON12);let v=H*(a*a-t*t)/(t*t),W=1+v*(4096+v*(v*(320-175*v)-768))/16384,I=v*(256+v*(v*(74-47*v)-128))/1024,F=b*b,J=I*O*(b+I*(s*(2*F-1)-I*b*(4*O*O-3)*(4*F-3)/6)/4),K=t*W*(w-J),Q=Math.atan2(i*g,o-S*d),V=Math.atan2(l*g,o*d-S);n._distance=K,n._startHeading=Q,n._endHeading=V,n._uSquared=v}var $=new y,x=new y;function N(n,a,t,e){let f=y.normalize(e.cartographicToCartesian(a,x),$),m=y.normalize(e.cartographicToCartesian(t,x),x);q.typeOf.number.greaterThanOrEquals("value",Math.abs(Math.abs(y.angleBetween(f,m))-Math.PI),.0125),Z(n,e.maximumRadius,e.minimumRadius,a.longitude,a.latitude,t.longitude,t.latitude),n._start=P.clone(a,n._start),n._end=P.clone(t,n._end),n._start.height=0,n._end.height=0,X(n)}function E(n,a,t){let e=t??B.default;this._ellipsoid=e,this._start=new P,this._end=new P,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,T(n)&&T(a)&&N(this,n,a,e)}Object.defineProperties(E.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return q.defined("distance",this._distance),this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return q.defined("distance",this._distance),this._startHeading}},endHeading:{get:function(){return q.defined("distance",this._distance),this._endHeading}}});E.prototype.setEndPoints=function(n,a){q.defined("start",n),q.defined("end",a),N(this,n,a,this._ellipsoid)};E.prototype.interpolateUsingFraction=function(n,a){return this.interpolateUsingSurfaceDistance(this._distance*n,a)};E.prototype.interpolateUsingSurfaceDistance=function(n,a){q.defined("distance",this._distance);let t=this._constants,e=t.distanceRatio+n/t.b,f=Math.cos(2*e),m=Math.cos(4*e),_=Math.cos(6*e),r=Math.sin(2*e),p=Math.sin(4*e),R=Math.sin(6*e),M=Math.sin(8*e),l=e*e,U=e*l,i=t.u8Over256,A=t.u2Over4,c=t.u6Over64,o=t.u4Over16,h=2*U*i*f/3+e*(1-A+7*o/4-15*c/4+579*i/64-(o-15*c/4+187*i/16)*f-(5*c/4-115*i/16)*m-29*i*_/16)+(A/2-o+71*c/32-85*i/16)*r+(5*o/16-5*c/4+383*i/96)*p-l*((c-11*i/2)*r+5*i*p/2)+(29*c/96-29*i/16)*R+539*i*M/1536,S=Math.asin(Math.sin(h)*t.cosineAlpha),u=Math.atan(t.a/t.b*Math.tan(S));h=h-t.sigma;let C=Math.cos(2*t.sigma+h),d=Math.sin(h),g=Math.cos(h),w=t.cosineU*g,s=t.sineU*d,H=Math.atan2(d*t.sineHeading,w-s*t.cosineHeading)-k(t.f,t.sineAlpha,t.cosineSquaredAlpha,h,d,g,C);return T(a)?(a.longitude=this._start.longitude+H,a.latitude=u,a.height=0,a):new P(this._start.longitude+H,u,0)};var et=E;export{et as a}; diff --git a/public/Cesium/Workers/chunk-UP6I5URU.js b/public/Cesium/Workers/chunk-UP6I5URU.js new file mode 100644 index 000000000..1b33e590b --- /dev/null +++ b/public/Cesium/Workers/chunk-UP6I5URU.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{f as C}from"./chunk-PSPPBZWI.js";import{a as n,e as b}from"./chunk-64RSHJUE.js";import{a as w}from"./chunk-3SSKC3VN.js";var j={},q=new n,L=new n,Q=new C,G=new b;function W(m,O,p,S,g,_,d,f,M,s){let a=m+O;n.multiplyByScalar(S,Math.cos(a),q),n.multiplyByScalar(p,Math.sin(a),L),n.add(q,L,q);let u=Math.cos(m);u=u*u;let l=Math.sin(m);l=l*l;let h=_/Math.sqrt(d*u+g*l)/f;return C.fromAxisAngle(q,h,Q),b.fromQuaternion(Q,G),b.multiplyByVector(G,M,s),n.normalize(s,s),n.multiplyByScalar(s,f,s),s}var U=new n,Z=new n,N=new n,v=new n;j.raisePositionsToHeight=function(m,O,p){let S=O.ellipsoid,g=O.height,_=O.extrudedHeight,d=p?m.length/3*2:m.length/3,f=new Float64Array(d*3),M=m.length,s=p?M:0;for(let a=0;a<M;a+=3){let u=a+1,l=a+2,r=n.fromArray(m,a,U);S.scaleToGeodeticSurface(r,r);let h=n.clone(r,Z),x=S.geodeticSurfaceNormal(r,v),P=n.multiplyByScalar(x,g,N);n.add(r,P,r),p&&(n.multiplyByScalar(x,_,P),n.add(h,P,h),f[a+s]=h.x,f[u+s]=h.y,f[l+s]=h.z),f[a]=r.x,f[u]=r.y,f[l]=r.z}return f};var D=new n,J=new n,K=new n;j.computeEllipsePositions=function(m,O,p){let S=m.semiMinorAxis,g=m.semiMajorAxis,_=m.rotation,d=m.center,f=m.granularity*8,M=S*S,s=g*g,a=g*S,u=n.magnitude(d),l=n.normalize(d,D),r=n.cross(n.UNIT_Z,d,J);r=n.normalize(r,r);let h=n.cross(l,r,K),x=1+Math.ceil(w.PI_OVER_TWO/f),P=w.PI_OVER_TWO/(x-1),y=w.PI_OVER_TWO-x*P;y<0&&(x-=Math.ceil(Math.abs(y)/P));let k=2*(x*(x+2)),e=O?new Array(k*3):void 0,o=0,t=U,i=Z,H=x*4*3,z=H-1,A=0,c=p?new Array(H):void 0,I,T,R,E,V;for(y=w.PI_OVER_TWO,t=W(y,_,h,r,M,a,s,u,l,t),O&&(e[o++]=t.x,e[o++]=t.y,e[o++]=t.z),p&&(c[z--]=t.z,c[z--]=t.y,c[z--]=t.x),y=w.PI_OVER_TWO-P,I=1;I<x+1;++I){if(t=W(y,_,h,r,M,a,s,u,l,t),i=W(Math.PI-y,_,h,r,M,a,s,u,l,i),O){for(e[o++]=t.x,e[o++]=t.y,e[o++]=t.z,R=2*I+2,T=1;T<R-1;++T)E=T/(R-1),V=n.lerp(t,i,E,N),e[o++]=V.x,e[o++]=V.y,e[o++]=V.z;e[o++]=i.x,e[o++]=i.y,e[o++]=i.z}p&&(c[z--]=t.z,c[z--]=t.y,c[z--]=t.x,c[A++]=i.x,c[A++]=i.y,c[A++]=i.z),y=w.PI_OVER_TWO-(I+1)*P}for(I=x;I>1;--I){if(y=w.PI_OVER_TWO-(I-1)*P,t=W(-y,_,h,r,M,a,s,u,l,t),i=W(y+Math.PI,_,h,r,M,a,s,u,l,i),O){for(e[o++]=t.x,e[o++]=t.y,e[o++]=t.z,R=2*(I-1)+2,T=1;T<R-1;++T)E=T/(R-1),V=n.lerp(t,i,E,N),e[o++]=V.x,e[o++]=V.y,e[o++]=V.z;e[o++]=i.x,e[o++]=i.y,e[o++]=i.z}p&&(c[z--]=t.z,c[z--]=t.y,c[z--]=t.x,c[A++]=i.x,c[A++]=i.y,c[A++]=i.z)}y=w.PI_OVER_TWO,t=W(-y,_,h,r,M,a,s,u,l,t);let B={};return O&&(e[o++]=t.x,e[o++]=t.y,e[o++]=t.z,B.positions=e,B.numPts=x),p&&(c[z--]=t.z,c[z--]=t.y,c[z--]=t.x,B.outerPositions=c),B};var tt=j;export{tt as a}; diff --git a/public/Cesium/Workers/chunk-VTAIKJXX.js b/public/Cesium/Workers/chunk-VTAIKJXX.js new file mode 100644 index 000000000..b367d206c --- /dev/null +++ b/public/Cesium/Workers/chunk-VTAIKJXX.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +var i=Object.create;var u=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var o=Object.getPrototypeOf,c=Object.prototype.hasOwnProperty;var a=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,d)=>(typeof require<"u"?require:e)[d]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')}),b=n=>e=>{var d=n[e];if(d)return d();throw new Error("Module not found in bundle: "+e)};var g=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports);var p=(n,e,d,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let f of l(e))!c.call(n,f)&&f!==d&&u(n,f,{get:()=>e[f],enumerable:!(t=r(e,f))||t.enumerable});return n};var h=(n,e,d)=>(d=n!=null?i(o(n)):{},p(e||!n||!n.__esModule?u(d,"default",{value:n,enumerable:!0}):d,n));function x(n){return n!=null}var k=x;export{a,b,g as c,h as d,k as e}; diff --git a/public/Cesium/Workers/chunk-VTBDSFTG.js b/public/Cesium/Workers/chunk-VTBDSFTG.js new file mode 100644 index 000000000..547880dd5 --- /dev/null +++ b/public/Cesium/Workers/chunk-VTBDSFTG.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as U}from"./chunk-DQQ63PYM.js";import{a as b}from"./chunk-VW6VD53G.js";import{a as E}from"./chunk-OFUUQVMR.js";import{a as z}from"./chunk-A56XVLQR.js";import{c as B,d as D}from"./chunk-RCV6KWXS.js";import{a as V,d as y}from"./chunk-4IW2T6GF.js";import{b as G}from"./chunk-PSPPBZWI.js";import{a as k}from"./chunk-AU7IKHOH.js";import{d as F}from"./chunk-64RSHJUE.js";import{a as M,b as I}from"./chunk-LEYMRMBK.js";import{e as a}from"./chunk-VTAIKJXX.js";function v(e,n,t){e=e??0,n=n??0,t=t??0,this.value=new Float32Array([e,n,t])}Object.defineProperties(v.prototype,{componentDatatype:{get:function(){return k.FLOAT}},componentsPerAttribute:{get:function(){return 3}},normalize:{get:function(){return!1}}});v.fromCartesian3=function(e){return I.defined("offset",e),new v(e.x,e.y,e.z)};v.toValue=function(e,n){return I.defined("offset",e),a(n)||(n=new Float32Array([e.x,e.y,e.z])),n[0]=e.x,n[1]=e.y,n[2]=e.z,n};var $=v;function J(e,n,t){let i=!t,r=e.length,c;if(!i&&r>1){let o=e[0].modelMatrix;for(c=1;c<r;++c)if(!G.equals(o,e[c].modelMatrix)){i=!0;break}}if(i)for(c=0;c<r;++c)a(e[c].geometry)&&b.transformToWorldCoordinates(e[c]);else G.multiplyTransformation(n,e[0].modelMatrix,n)}function L(e,n){let t=e.attributes,i=t.position,r=i.values.length/i.componentsPerAttribute;t.batchId=new D({componentDatatype:k.FLOAT,componentsPerAttribute:1,values:new Float32Array(r)});let c=t.batchId.values;for(let o=0;o<r;++o)c[o]=n}function K(e){let n=e.length;for(let t=0;t<n;++t){let i=e[t];a(i.geometry)?L(i.geometry,t):a(i.westHemisphereGeometry)&&a(i.eastHemisphereGeometry)&&(L(i.westHemisphereGeometry,t),L(i.eastHemisphereGeometry,t))}}function N(e){let n=e.instances,t=e.projection,i=e.elementIndexUintSupported,r=e.scene3DOnly,c=e.vertexCacheOptimize,o=e.compressVertices,g=e.modelMatrix,s,u,m,p=n.length;for(s=0;s<p;++s)if(a(n[s].geometry)){m=n[s].geometry.primitiveType;break}for(s=1;s<p;++s)if(a(n[s].geometry)&&n[s].geometry.primitiveType!==m)throw new M("All instance geometries must have the same primitiveType.");if(J(n,g,r),!r)for(s=0;s<p;++s)a(n[s].geometry)&&b.splitLongitude(n[s]);if(K(n),c)for(s=0;s<p;++s){let f=n[s];a(f.geometry)?(b.reorderForPostVertexCache(f.geometry),b.reorderForPreVertexCache(f.geometry)):a(f.westHemisphereGeometry)&&a(f.eastHemisphereGeometry)&&(b.reorderForPostVertexCache(f.westHemisphereGeometry),b.reorderForPreVertexCache(f.westHemisphereGeometry),b.reorderForPostVertexCache(f.eastHemisphereGeometry),b.reorderForPreVertexCache(f.eastHemisphereGeometry))}let l=b.combineInstances(n);for(p=l.length,s=0;s<p;++s){u=l[s];let f=u.attributes;if(r)for(let d in f)f.hasOwnProperty(d)&&f[d].componentDatatype===k.DOUBLE&&b.encodeAttribute(u,d,`${d}3DHigh`,`${d}3DLow`);else for(let d in f)if(f.hasOwnProperty(d)&&f[d].componentDatatype===k.DOUBLE){let h=`${d}3D`,x=`${d}2D`;b.projectTo2D(u,d,h,x,t),a(u.boundingSphere)&&d==="position"&&(u.boundingSphereCV=y.fromVertices(u.attributes.position2D.values)),b.encodeAttribute(u,h,`${h}High`,`${h}Low`),b.encodeAttribute(u,x,`${x}High`,`${x}Low`)}o&&b.compressVertices(u)}if(!i){let f=[];for(p=l.length,s=0;s<p;++s)u=l[s],f=f.concat(b.fitToUnsignedShortIndices(u));l=f}return l}function P(e,n,t,i){let r,c,o,g=i.length-1;if(g>=0){let u=i[g];r=u.offset+u.count,o=u.index,c=t[o].indices.length}else r=0,o=0,c=t[o].indices.length;let s=e.length;for(let u=0;u<s;++u){let p=e[u][n];if(!a(p))continue;let l=p.indices.length;r+l>c&&(r=0,c=t[++o].indices.length),i.push({index:o,offset:r,count:l}),r+=l}}function Q(e,n){let t=[];return P(e,"geometry",n,t),P(e,"westHemisphereGeometry",n,t),P(e,"eastHemisphereGeometry",n,t),t}var S={};S.combineGeometry=function(e){let n,t,i=e.instances,r=i.length,c,o,g=!1;r>0&&(n=N(e),n.length>0&&(t=b.createAttributeLocations(n[0]),e.createPickOffsets&&(c=Q(i,n))),a(i[0].attributes)&&a(i[0].attributes.offset)&&(o=new Array(r),g=!0));let s=new Array(r),u=new Array(r);for(let m=0;m<r;++m){let p=i[m],l=p.geometry;a(l)&&(s[m]=l.boundingSphere,u[m]=l.boundingSphereCV,g&&(o[m]=p.geometry.offsetAttribute));let f=p.eastHemisphereGeometry,d=p.westHemisphereGeometry;a(f)&&a(d)&&(a(f.boundingSphere)&&a(d.boundingSphere)&&(s[m]=y.union(f.boundingSphere,d.boundingSphere)),a(f.boundingSphereCV)&&a(d.boundingSphereCV)&&(u[m]=y.union(f.boundingSphereCV,d.boundingSphereCV)))}return{geometries:n,modelMatrix:e.modelMatrix,attributeLocations:t,pickOffsets:c,offsetInstanceExtend:o,boundingSpheres:s,boundingSpheresCV:u}};function X(e,n){let t=e.attributes;for(let i in t)if(t.hasOwnProperty(i)){let r=t[i];a(r)&&a(r.values)&&n.push(r.values.buffer)}a(e.indices)&&n.push(e.indices.buffer)}function Y(e,n){let t=e.length;for(let i=0;i<t;++i)X(e[i],n)}function Z(e){let n=1,t=e.length;for(let i=0;i<t;i++){let r=e[i];if(++n,!a(r))continue;let c=r.attributes;n+=7+2*y.packedLength+(a(r.indices)?r.indices.length:0);for(let o in c)if(c.hasOwnProperty(o)&&a(c[o])){let g=c[o];n+=5+g.values.length}}return n}S.packCreateGeometryResults=function(e,n){let t=new Float64Array(Z(e)),i=[],r={},c=e.length,o=0;t[o++]=c;for(let g=0;g<c;g++){let s=e[g],u=a(s);if(t[o++]=u?1:0,!u)continue;t[o++]=s.primitiveType,t[o++]=s.geometryType,t[o++]=s.offsetAttribute??-1;let m=a(s.boundingSphere)?1:0;t[o++]=m,m&&y.pack(s.boundingSphere,t,o),o+=y.packedLength;let p=a(s.boundingSphereCV)?1:0;t[o++]=p,p&&y.pack(s.boundingSphereCV,t,o),o+=y.packedLength;let l=s.attributes,f=[];for(let h in l)l.hasOwnProperty(h)&&a(l[h])&&(f.push(h),a(r[h])||(r[h]=i.length,i.push(h)));t[o++]=f.length;for(let h=0;h<f.length;h++){let x=f[h],C=l[x];t[o++]=r[x],t[o++]=C.componentDatatype,t[o++]=C.componentsPerAttribute,t[o++]=C.normalize?1:0,t[o++]=C.values.length,t.set(C.values,o),o+=C.values.length}let d=a(s.indices)?s.indices.length:0;t[o++]=d,d>0&&(t.set(s.indices,o),o+=d)}return n.push(t.buffer),{stringTable:i,packedData:t}};S.unpackCreateGeometryResults=function(e){let n=e.stringTable,t=e.packedData,i,r=new Array(t[0]),c=0,o=1;for(;o<t.length;){if(!(t[o++]===1)){r[c++]=void 0;continue}let s=t[o++],u=t[o++],m=t[o++];m===-1&&(m=void 0);let p,l;t[o++]===1&&(p=y.unpack(t,o)),o+=y.packedLength,t[o++]===1&&(l=y.unpack(t,o)),o+=y.packedLength;let h,x,C,T=new z,W=t[o++];for(i=0;i<W;i++){let A=n[t[o++]],H=t[o++];C=t[o++];let q=t[o++]!==0;h=t[o++],x=k.createTypedArray(H,h);for(let O=0;O<h;O++)x[O]=t[o++];T[A]=new D({componentDatatype:H,componentsPerAttribute:C,normalize:q,values:x})}let w;if(h=t[o++],h>0){let A=x.length/C;for(w=E.createTypedArray(A,h),i=0;i<h;i++)w[i]=t[o++]}r[c++]=new B({primitiveType:s,geometryType:u,boundingSphere:p,boundingSphereCV:l,indices:w,attributes:T,offsetAttribute:m})}return r};function _(e,n){let t=e.length,i=new Float64Array(1+t*19),r=0;i[r++]=t;for(let c=0;c<t;c++){let o=e[c];if(G.pack(o.modelMatrix,i,r),r+=G.packedLength,a(o.attributes)&&a(o.attributes.offset)){let g=o.attributes.offset.value;i[r]=g[0],i[r+1]=g[1],i[r+2]=g[2]}r+=3}return n.push(i.buffer),i}function ee(e){let n=e,t=new Array(n[0]),i=0,r=1;for(;r<n.length;){let c=G.unpack(n,r),o;r+=G.packedLength,a(n[r])&&(o={offset:new $(n[r],n[r+1],n[r+2])}),r+=3,t[i++]={modelMatrix:c,attributes:o}}return t}S.packCombineGeometryParameters=function(e,n){let t=e.createGeometryResults,i=t.length;for(let r=0;r<i;r++)n.push(t[r].packedData.buffer);return{createGeometryResults:e.createGeometryResults,packedInstances:_(e.instances,n),ellipsoid:e.ellipsoid,isGeographic:e.projection instanceof V,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix,createPickOffsets:e.createPickOffsets}};S.unpackCombineGeometryParameters=function(e){let n=ee(e.packedInstances),t=e.createGeometryResults,i=t.length,r=0;for(let g=0;g<i;g++){let s=S.unpackCreateGeometryResults(t[g]),u=s.length;for(let m=0;m<u;m++){let p=s[m],l=n[r];l.geometry=p,++r}}let c=F.clone(e.ellipsoid),o=e.isGeographic?new V(c):new U(c);return{instances:n,ellipsoid:c,projection:o,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:G.clone(e.modelMatrix),createPickOffsets:e.createPickOffsets}};function j(e){let n=e.length,t=1+(y.packedLength+1)*n,i=new Float32Array(t),r=0;i[r++]=n;for(let c=0;c<n;++c){let o=e[c];a(o)?(i[r++]=1,y.pack(e[c],i,r)):i[r++]=0,r+=y.packedLength}return i}function R(e){let n=new Array(e[0]),t=0,i=1;for(;i<e.length;)e[i++]===1&&(n[t]=y.unpack(e,i)),++t,i+=y.packedLength;return n}S.packCombineGeometryResults=function(e,n){a(e.geometries)&&Y(e.geometries,n);let t=j(e.boundingSpheres),i=j(e.boundingSpheresCV);return n.push(t.buffer,i.buffer),{geometries:e.geometries,attributeLocations:e.attributeLocations,modelMatrix:e.modelMatrix,pickOffsets:e.pickOffsets,offsetInstanceExtend:e.offsetInstanceExtend,boundingSpheres:t,boundingSpheresCV:i}};S.unpackCombineGeometryResults=function(e){return{geometries:e.geometries,attributeLocations:e.attributeLocations,modelMatrix:e.modelMatrix,pickOffsets:e.pickOffsets,offsetInstanceExtend:e.offsetInstanceExtend,boundingSpheres:R(e.boundingSpheres),boundingSpheresCV:R(e.boundingSpheresCV)}};var xe=S;export{xe as a}; diff --git a/public/Cesium/Workers/chunk-VW6VD53G.js b/public/Cesium/Workers/chunk-VW6VD53G.js new file mode 100644 index 000000000..02aa87248 --- /dev/null +++ b/public/Cesium/Workers/chunk-VW6VD53G.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as tt}from"./chunk-DEPHB2WM.js";import{a as jt}from"./chunk-QOUAJ6TL.js";import{b as Lt}from"./chunk-DMEY62ID.js";import{a as Et}from"./chunk-HTFSEEMT.js";import{a as j}from"./chunk-OFUUQVMR.js";import{a as dt,b as D,c as B,d as U}from"./chunk-RCV6KWXS.js";import{a as _t,b as Ut,d as ot}from"./chunk-4IW2T6GF.js";import{a as pt,b as H}from"./chunk-PSPPBZWI.js";import{a as F}from"./chunk-AU7IKHOH.js";import{a as r,b as Mt,c as V,e as gt,f as Ot}from"./chunk-64RSHJUE.js";import{a as N}from"./chunk-3SSKC3VN.js";import{a as I,b as ft}from"./chunk-LEYMRMBK.js";import{e as f}from"./chunk-VTAIKJXX.js";var Yt=new r,Zt=new r,Xt=new r;function pe(t,e,n,s,i){ft.defined("point",t),ft.defined("p0",e),ft.defined("p1",n),ft.defined("p2",s),f(i)||(i=new r);let c,o,a,p,u,d,m,l;if(f(e.z)){if(r.equalsEpsilon(t,e,N.EPSILON14))return r.clone(r.UNIT_X,i);if(r.equalsEpsilon(t,n,N.EPSILON14))return r.clone(r.UNIT_Y,i);if(r.equalsEpsilon(t,s,N.EPSILON14))return r.clone(r.UNIT_Z,i);c=r.subtract(n,e,Yt),o=r.subtract(s,e,Zt),a=r.subtract(t,e,Xt),p=r.dot(c,c),u=r.dot(c,o),d=r.dot(c,a),m=r.dot(o,o),l=r.dot(o,a)}else{if(V.equalsEpsilon(t,e,N.EPSILON14))return r.clone(r.UNIT_X,i);if(V.equalsEpsilon(t,n,N.EPSILON14))return r.clone(r.UNIT_Y,i);if(V.equalsEpsilon(t,s,N.EPSILON14))return r.clone(r.UNIT_Z,i);c=V.subtract(n,e,Yt),o=V.subtract(s,e,Zt),a=V.subtract(t,e,Xt),p=V.dot(c,c),u=V.dot(c,o),d=V.dot(c,a),m=V.dot(o,o),l=V.dot(o,a)}i.y=m*d-u*l,i.z=p*l-u*d;let h=p*m-u*u;if(h!==0)return i.y/=h,i.z/=h,i.x=1-i.y-i.z,i}var Ht=pe;var Nt={};Nt.calculateACMR=function(t){t=t??Ot.EMPTY_OBJECT;let e=t.indices,n=t.maximumIndex,s=t.cacheSize??24;if(!f(e))throw new I("indices is required.");let i=e.length;if(i<3||i%3!==0)throw new I("indices length must be a multiple of three.");if(n<=0)throw new I("maximumIndex must be greater than zero.");if(s<3)throw new I("cacheSize must be greater than two.");if(!f(n)){n=0;let a=0,p=e[a];for(;a<i;)p>n&&(n=p),++a,p=e[a]}let c=[];for(let a=0;a<n+1;a++)c[a]=0;let o=s+1;for(let a=0;a<i;++a)o-c[e[a]]>s&&(c[e[a]]=o,++o);return(o-s+1)/(i/3)};Nt.tipsify=function(t){t=t??Ot.EMPTY_OBJECT;let e=t.indices,n=t.maximumIndex,s=t.cacheSize??24,i;function c(C,z,q,R){for(;z.length>=1;){let G=z[z.length-1];if(z.splice(z.length-1,1),C[G].numLiveTriangles>0)return G}for(;i<R;){if(C[i].numLiveTriangles>0)return++i,i-1;++i}return-1}function o(C,z,q,R,G,M,J){let Y=-1,_,St=-1,Pt=0;for(;Pt<q.length;){let lt=q[Pt];R[lt].numLiveTriangles&&(_=0,G-R[lt].timeStamp+2*R[lt].numLiveTriangles<=z&&(_=G-R[lt].timeStamp),(_>St||St===-1)&&(St=_,Y=lt)),++Pt}return Y===-1?c(R,M,C,J):Y}if(!f(e))throw new I("indices is required.");let a=e.length;if(a<3||a%3!==0)throw new I("indices length must be a multiple of three.");if(n<=0)throw new I("maximumIndex must be greater than zero.");if(s<3)throw new I("cacheSize must be greater than two.");let p=0,u=0,d=e[u],m=a;if(f(n))p=n+1;else{for(;u<m;)d>p&&(p=d),++u,d=e[u];if(p===-1)return 0;++p}let l=[],h;for(h=0;h<p;h++)l[h]={numLiveTriangles:0,timeStamp:0,vertexTriangles:[]};u=0;let y=0;for(;u<m;)l[e[u]].vertexTriangles.push(y),++l[e[u]].numLiveTriangles,l[e[u+1]].vertexTriangles.push(y),++l[e[u+1]].numLiveTriangles,l[e[u+2]].vertexTriangles.push(y),++l[e[u+2]].numLiveTriangles,++y,u+=3;let v=0,b=s+1;i=1;let S=[],x=[],w,A,E=0,P=[],O=a/3,L=[];for(h=0;h<O;h++)L[h]=!1;let g,T;for(;v!==-1;){S=[],A=l[v],T=A.vertexTriangles.length;for(let C=0;C<T;++C)if(y=A.vertexTriangles[C],!L[y]){L[y]=!0,u=y+y+y;for(let z=0;z<3;++z)g=e[u],S.push(g),x.push(g),P[E]=g,++E,w=l[g],--w.numLiveTriangles,b-w.timeStamp>s&&(w.timeStamp=b,++b),++u}v=o(e,s,S,l,b,x,p)}return P};var Wt=Nt;var k={};function It(t,e,n,s,i){t[e++]=n,t[e++]=s,t[e++]=s,t[e++]=i,t[e++]=i,t[e]=n}function de(t){let e=t.length,n=e/3*6,s=j.createTypedArray(e,n),i=0;for(let c=0;c<e;c+=3,i+=6)It(s,i,t[c],t[c+1],t[c+2]);return s}function me(t){let e=t.length;if(e>=3){let n=(e-2)*6,s=j.createTypedArray(e,n);It(s,0,t[0],t[1],t[2]);let i=6;for(let c=3;c<e;++c,i+=6)It(s,i,t[c-1],t[c],t[c-2]);return s}return new Uint16Array}function he(t){if(t.length>0){let e=t.length-1,n=(e-1)*6,s=j.createTypedArray(e,n),i=t[0],c=0;for(let o=1;o<e;++o,c+=6)It(s,c,i,t[o],t[o+1]);return s}return new Uint16Array}k.toWireframe=function(t){if(!f(t))throw new I("geometry is required.");let e=t.indices;if(f(e)){switch(t.primitiveType){case D.TRIANGLES:t.indices=de(e);break;case D.TRIANGLE_STRIP:t.indices=me(e);break;case D.TRIANGLE_FAN:t.indices=he(e);break;default:throw new I("geometry.primitiveType must be TRIANGLES, TRIANGLE_STRIP, or TRIANGLE_FAN.")}t.primitiveType=D.LINES}return t};k.createLineSegmentsForVectors=function(t,e,n){if(e=e??"normal",!f(t))throw new I("geometry is required.");if(!f(t.attributes.position))throw new I("geometry.attributes.position is required.");if(!f(t.attributes[e]))throw new I(`geometry.attributes must have an attribute with the same name as the attributeName parameter, ${e}.`);n=n??1e4;let s=t.attributes.position.values,i=t.attributes[e].values,c=s.length,o=new Float64Array(2*c),a=0;for(let d=0;d<c;d+=3)o[a++]=s[d],o[a++]=s[d+1],o[a++]=s[d+2],o[a++]=s[d]+i[d]*n,o[a++]=s[d+1]+i[d+1]*n,o[a++]=s[d+2]+i[d+2]*n;let p,u=t.boundingSphere;return f(u)&&(p=new ot(u.center,u.radius+n)),new B({attributes:{position:new U({componentDatatype:F.DOUBLE,componentsPerAttribute:3,values:o})},primitiveType:D.LINES,boundingSphere:p})};k.createAttributeLocations=function(t){if(!f(t))throw new I("geometry is required.");let e=["position","positionHigh","positionLow","position3DHigh","position3DLow","position2DHigh","position2DLow","pickColor","normal","st","tangent","bitangent","extrudeDirection","compressedAttributes"],n=t.attributes,s={},i=0,c,o=e.length;for(c=0;c<o;++c){let a=e[c];f(n[a])&&(s[a]=i++)}for(let a in n)n.hasOwnProperty(a)&&!f(s[a])&&(s[a]=i++);return s};k.reorderForPreVertexCache=function(t){if(!f(t))throw new I("geometry is required.");let e=B.computeNumberOfVertices(t),n=t.indices;if(f(n)){let s=new Int32Array(e);for(let l=0;l<e;l++)s[l]=-1;let i=n,c=i.length,o=j.createTypedArray(e,c),a=0,p=0,u=0,d;for(;a<c;)d=s[i[a]],d!==-1?o[p]=d:(d=i[a],s[d]=u,o[p]=u,++u),++a,++p;t.indices=o;let m=t.attributes;for(let l in m)if(m.hasOwnProperty(l)&&f(m[l])&&f(m[l].values)){let h=m[l],y=h.values,v=0,b=h.componentsPerAttribute,S=F.createTypedArray(h.componentDatatype,u*b);for(;v<e;){let x=s[v];if(x!==-1)for(let w=0;w<b;w++)S[b*x+w]=y[b*v+w];++v}h.values=S}}return t};k.reorderForPostVertexCache=function(t,e){if(!f(t))throw new I("geometry is required.");let n=t.indices;if(t.primitiveType===D.TRIANGLES&&f(n)){let s=n.length,i=0;for(let c=0;c<s;c++)n[c]>i&&(i=n[c]);t.indices=Wt.tipsify({indices:n,maximumIndex:i,cacheSize:e})}return t};function $t(t){let e={};for(let n in t)if(t.hasOwnProperty(n)&&f(t[n])&&f(t[n].values)){let s=t[n];e[n]=new U({componentDatatype:s.componentDatatype,componentsPerAttribute:s.componentsPerAttribute,normalize:s.normalize,values:[]})}return e}function be(t,e,n){for(let s in e)if(e.hasOwnProperty(s)&&f(e[s])&&f(e[s].values)){let i=e[s];for(let c=0;c<i.componentsPerAttribute;++c)t[s].values.push(i.values[n*i.componentsPerAttribute+c])}}k.fitToUnsignedShortIndices=function(t){if(!f(t))throw new I("geometry is required.");if(f(t.indices)&&t.primitiveType!==D.TRIANGLES&&t.primitiveType!==D.LINES&&t.primitiveType!==D.POINTS)throw new I("geometry.primitiveType must equal to PrimitiveType.TRIANGLES, PrimitiveType.LINES, or PrimitiveType.POINTS.");let e=[],n=B.computeNumberOfVertices(t);if(f(t.indices)&&n>=N.SIXTY_FOUR_KILOBYTES){let s=[],i=[],c=0,o=$t(t.attributes),a=t.indices,p=a.length,u;t.primitiveType===D.TRIANGLES?u=3:t.primitiveType===D.LINES?u=2:t.primitiveType===D.POINTS&&(u=1);for(let d=0;d<p;d+=u){for(let m=0;m<u;++m){let l=a[d+m],h=s[l];f(h)||(h=c++,s[l]=h,be(o,t.attributes,l)),i.push(h)}c+u>=N.SIXTY_FOUR_KILOBYTES&&(e.push(new B({attributes:o,indices:i,primitiveType:t.primitiveType,boundingSphere:t.boundingSphere,boundingSphereCV:t.boundingSphereCV})),s=[],i=[],c=0,o=$t(t.attributes))}i.length!==0&&e.push(new B({attributes:o,indices:i,primitiveType:t.primitiveType,boundingSphere:t.boundingSphere,boundingSphereCV:t.boundingSphereCV}))}else e.push(t);return e};var Jt=new r,we=new Mt;k.projectTo2D=function(t,e,n,s,i){if(!f(t))throw new I("geometry is required.");if(!f(e))throw new I("attributeName is required.");if(!f(n))throw new I("attributeName3D is required.");if(!f(s))throw new I("attributeName2D is required.");if(!f(t.attributes[e]))throw new I(`geometry must have attribute matching the attributeName argument: ${e}.`);if(t.attributes[e].componentDatatype!==F.DOUBLE)throw new I("The attribute componentDatatype must be ComponentDatatype.DOUBLE.");let c=t.attributes[e];i=f(i)?i:new _t;let o=i.ellipsoid,a=c.values,p=new Float64Array(a.length),u=0;for(let d=0;d<a.length;d+=3){let m=r.fromArray(a,d,Jt),l=o.cartesianToCartographic(m,we);if(!f(l))throw new I(`Could not project point (${m.x}, ${m.y}, ${m.z}) to 2D.`);let h=i.project(l,Jt);p[u++]=h.x,p[u++]=h.y,p[u++]=h.z}return t.attributes[n]=c,t.attributes[s]=new U({componentDatatype:F.DOUBLE,componentsPerAttribute:3,values:p}),delete t.attributes[e],t};var zt={high:0,low:0};k.encodeAttribute=function(t,e,n,s){if(!f(t))throw new I("geometry is required.");if(!f(e))throw new I("attributeName is required.");if(!f(n))throw new I("attributeHighName is required.");if(!f(s))throw new I("attributeLowName is required.");if(!f(t.attributes[e]))throw new I(`geometry must have attribute matching the attributeName argument: ${e}.`);if(t.attributes[e].componentDatatype!==F.DOUBLE)throw new I("The attribute componentDatatype must be ComponentDatatype.DOUBLE.");let i=t.attributes[e],c=i.values,o=c.length,a=new Float32Array(o),p=new Float32Array(o);for(let d=0;d<o;++d)jt.encode(c[d],zt),a[d]=zt.high,p[d]=zt.low;let u=i.componentsPerAttribute;return t.attributes[n]=new U({componentDatatype:F.FLOAT,componentsPerAttribute:u,values:a}),t.attributes[s]=new U({componentDatatype:F.FLOAT,componentsPerAttribute:u,values:p}),delete t.attributes[e],t};var $=new r;function Dt(t,e){if(f(e)){let n=e.values,s=n.length;for(let i=0;i<s;i+=3)r.unpack(n,i,$),H.multiplyByPoint(t,$,$),r.pack($,n,i)}}function qt(t,e){if(f(e)){let n=e.values,s=n.length;for(let i=0;i<s;i+=3)r.unpack(n,i,$),gt.multiplyByVector(t,$,$),$=r.normalize($,$),r.pack($,n,i)}}var wt=new H,vt=new gt;k.transformToWorldCoordinates=function(t){if(!f(t))throw new I("instance is required.");let e=t.modelMatrix;if(H.equals(e,H.IDENTITY))return t;let n=t.geometry.attributes;Dt(e,n.position),Dt(e,n.prevPosition),Dt(e,n.nextPosition),(f(n.normal)||f(n.tangent)||f(n.bitangent))&&(H.inverse(e,wt),H.transpose(wt,wt),H.getMatrix3(wt,vt),qt(vt,n.normal),qt(vt,n.tangent),qt(vt,n.bitangent));let s=t.geometry.boundingSphere;return f(s)&&(t.geometry.boundingSphere=ot.transform(s,e,s)),t.modelMatrix=H.clone(H.IDENTITY),t};function ve(t,e){let n=t.length,s={},i=t[0][e].attributes,c;for(c in i)if(i.hasOwnProperty(c)&&f(i[c])&&f(i[c].values)){let o=i[c],a=o.values.length,p=!0;for(let u=1;u<n;++u){let d=t[u][e].attributes[c];if(!f(d)||o.componentDatatype!==d.componentDatatype||o.componentsPerAttribute!==d.componentsPerAttribute||o.normalize!==d.normalize){p=!1;break}a+=d.values.length}p&&(s[c]=new U({componentDatatype:o.componentDatatype,componentsPerAttribute:o.componentsPerAttribute,normalize:o.normalize,values:F.createTypedArray(o.componentDatatype,a)}))}return s}var ye=new r;function Rt(t,e){let n=t.length,s,i,c,o,a=t[0].modelMatrix,p=f(t[0][e].indices),u=t[0][e].primitiveType;for(i=1;i<n;++i){if(!H.equals(t[i].modelMatrix,a))throw new I("All instances must have the same modelMatrix.");if(f(t[i][e].indices)!==p)throw new I("All instance geometries must have an indices or not have one.");if(t[i][e].primitiveType!==u)throw new I("All instance geometries must have the same primitiveType.")}let d=ve(t,e),m,l,h;for(s in d)if(d.hasOwnProperty(s))for(m=d[s].values,o=0,i=0;i<n;++i)for(l=t[i][e].attributes[s].values,h=l.length,c=0;c<h;++c)m[o++]=l[c];let y;if(p){let x=0;for(i=0;i<n;++i)x+=t[i][e].indices.length;let w=B.computeNumberOfVertices(new B({attributes:d,primitiveType:D.POINTS})),A=j.createTypedArray(w,x),E=0,P=0;for(i=0;i<n;++i){let O=t[i][e].indices,L=O.length;for(o=0;o<L;++o)A[E++]=P+O[o];P+=B.computeNumberOfVertices(t[i][e])}y=A}let v=new r,b=0,S;for(i=0;i<n;++i){if(S=t[i][e].boundingSphere,!f(S)){v=void 0;break}r.add(S.center,v,v)}if(f(v))for(r.divideByScalar(v,n,v),i=0;i<n;++i){S=t[i][e].boundingSphere;let x=r.magnitude(r.subtract(S.center,v,ye))+S.radius;x>b&&(b=x)}return new B({attributes:d,indices:y,primitiveType:u,boundingSphere:f(v)?new ot(v,b):void 0})}k.combineInstances=function(t){if(!f(t)||t.length<1)throw new I("instances is required and must have length greater than zero.");let e=[],n=[],s=t.length;for(let c=0;c<s;++c){let o=t[c];f(o.geometry)?e.push(o):f(o.westHemisphereGeometry)&&f(o.eastHemisphereGeometry)&&n.push(o)}let i=[];return e.length>0&&i.push(Rt(e,"geometry")),n.length>0&&(i.push(Rt(n,"westHemisphereGeometry")),i.push(Rt(n,"eastHemisphereGeometry"))),i};var Z=new r,mt=new r,rt=new r,ct=new r;k.computeNormal=function(t){if(!f(t))throw new I("geometry is required.");if(!f(t.attributes.position)||!f(t.attributes.position.values))throw new I("geometry.attributes.position.values is required.");if(!f(t.indices))throw new I("geometry.indices is required.");if(t.indices.length<2||t.indices.length%3!==0)throw new I("geometry.indices length must be greater than 0 and be a multiple of 3.");if(t.primitiveType!==D.TRIANGLES)throw new I("geometry.primitiveType must be PrimitiveType.TRIANGLES.");let e=t.indices,n=t.attributes,s=n.position.values,i=n.position.values.length/3,c=e.length,o=new Array(i),a=new Array(c/3),p=new Array(c),u;for(u=0;u<i;u++)o[u]={indexOffset:0,count:0,currentCount:0};let d=0;for(u=0;u<c;u+=3){let y=e[u],v=e[u+1],b=e[u+2],S=y*3,x=v*3,w=b*3;mt.x=s[S],mt.y=s[S+1],mt.z=s[S+2],rt.x=s[x],rt.y=s[x+1],rt.z=s[x+2],ct.x=s[w],ct.y=s[w+1],ct.z=s[w+2],o[y].count++,o[v].count++,o[b].count++,r.subtract(rt,mt,rt),r.subtract(ct,mt,ct),a[d]=r.cross(rt,ct,new r),d++}let m=0;for(u=0;u<i;u++)o[u].indexOffset+=m,m+=o[u].count;d=0;let l;for(u=0;u<c;u+=3){l=o[e[u]];let y=l.indexOffset+l.currentCount;p[y]=d,l.currentCount++,l=o[e[u+1]],y=l.indexOffset+l.currentCount,p[y]=d,l.currentCount++,l=o[e[u+2]],y=l.indexOffset+l.currentCount,p[y]=d,l.currentCount++,d++}let h=new Float32Array(i*3);for(u=0;u<i;u++){let y=u*3;if(l=o[u],r.clone(r.ZERO,Z),l.count>0){for(d=0;d<l.count;d++)r.add(Z,a[p[l.indexOffset+d]],Z);r.equalsEpsilon(r.ZERO,Z,N.EPSILON10)&&r.clone(a[p[l.indexOffset]],Z)}r.equalsEpsilon(r.ZERO,Z,N.EPSILON10)&&(Z.z=1),r.normalize(Z,Z),h[y]=Z.x,h[y+1]=Z.y,h[y+2]=Z.z}return t.attributes.normal=new U({componentDatatype:F.FLOAT,componentsPerAttribute:3,values:h}),t};var xe=new r,Kt=new r,Te=new r;k.computeTangentAndBitangent=function(t){if(!f(t))throw new I("geometry is required.");let e=t.attributes,n=t.indices;if(!f(e.position)||!f(e.position.values))throw new I("geometry.attributes.position.values is required.");if(!f(e.normal)||!f(e.normal.values))throw new I("geometry.attributes.normal.values is required.");if(!f(e.st)||!f(e.st.values))throw new I("geometry.attributes.st.values is required.");if(!f(n))throw new I("geometry.indices is required.");if(n.length<2||n.length%3!==0)throw new I("geometry.indices length must be greater than 0 and be a multiple of 3.");if(t.primitiveType!==D.TRIANGLES)throw new I("geometry.primitiveType must be PrimitiveType.TRIANGLES.");let s=t.attributes.position.values,i=t.attributes.normal.values,c=t.attributes.st.values,o=t.attributes.position.values.length/3,a=n.length,p=new Array(o*3),u;for(u=0;u<p.length;u++)p[u]=0;let d,m,l;for(u=0;u<a;u+=3){let v=n[u],b=n[u+1],S=n[u+2];d=v*3,m=b*3,l=S*3;let x=v*2,w=b*2,A=S*2,E=s[d],P=s[d+1],O=s[d+2],L=c[x],g=c[x+1],T=c[w+1]-g,C=c[A+1]-g,z=1/((c[w]-L)*C-(c[A]-L)*T),q=(C*(s[m]-E)-T*(s[l]-E))*z,R=(C*(s[m+1]-P)-T*(s[l+1]-P))*z,G=(C*(s[m+2]-O)-T*(s[l+2]-O))*z;p[d]+=q,p[d+1]+=R,p[d+2]+=G,p[m]+=q,p[m+1]+=R,p[m+2]+=G,p[l]+=q,p[l+1]+=R,p[l+2]+=G}let h=new Float32Array(o*3),y=new Float32Array(o*3);for(u=0;u<o;u++){d=u*3,m=d+1,l=d+2;let v=r.fromArray(i,d,xe),b=r.fromArray(p,d,Te),S=r.dot(v,b);r.multiplyByScalar(v,S,Kt),r.normalize(r.subtract(b,Kt,b),b),h[d]=b.x,h[m]=b.y,h[l]=b.z,r.normalize(r.cross(v,b,b),b),y[d]=b.x,y[m]=b.y,y[l]=b.z}return t.attributes.tangent=new U({componentDatatype:F.FLOAT,componentsPerAttribute:3,values:h}),t.attributes.bitangent=new U({componentDatatype:F.FLOAT,componentsPerAttribute:3,values:y}),t};var ht=new V,W=new r,Qt=new r,te=new r,yt=new V;k.compressVertices=function(t){if(!f(t))throw new I("geometry is required.");let e=t.attributes.extrudeDirection,n,s;if(f(e)){let P=e.values;s=P.length/3;let O=new Float32Array(s*2),L=0;for(n=0;n<s;++n){if(r.fromArray(P,n*3,W),r.equals(W,r.ZERO)){L+=2;continue}yt=tt.octEncodeInRange(W,65535,yt),O[L++]=yt.x,O[L++]=yt.y}return t.attributes.compressedAttributes=new U({componentDatatype:F.FLOAT,componentsPerAttribute:2,values:O}),delete t.attributes.extrudeDirection,t}let i=t.attributes.normal,c=t.attributes.st,o=f(i),a=f(c);if(!o&&!a)return t;let p=t.attributes.tangent,u=t.attributes.bitangent,d=f(p),m=f(u),l,h,y,v;o&&(l=i.values),a&&(h=c.values),d&&(y=p.values),m&&(v=u.values),s=(o?l.length:h.length)/(o?3:2);let x=s,w=a&&o?2:1;w+=d||m?1:0,x*=w;let A=new Float32Array(x),E=0;for(n=0;n<s;++n){a&&(V.fromArray(h,n*2,ht),A[E++]=tt.compressTextureCoordinates(ht));let P=n*3;o&&f(y)&&f(v)?(r.fromArray(l,P,W),r.fromArray(y,P,Qt),r.fromArray(v,P,te),tt.octPack(W,Qt,te,ht),A[E++]=ht.x,A[E++]=ht.y):(o&&(r.fromArray(l,P,W),A[E++]=tt.octEncodeFloat(W)),d&&(r.fromArray(y,P,W),A[E++]=tt.octEncodeFloat(W)),m&&(r.fromArray(v,P,W),A[E++]=tt.octEncodeFloat(W)))}return t.attributes.compressedAttributes=new U({componentDatatype:F.FLOAT,componentsPerAttribute:w,values:A}),o&&delete t.attributes.normal,a&&delete t.attributes.st,m&&delete t.attributes.bitangent,d&&delete t.attributes.tangent,t};function Ae(t){if(f(t.indices))return t;let e=B.computeNumberOfVertices(t);if(e<3)throw new I("The number of vertices must be at least three.");if(e%3!==0)throw new I("The number of vertices must be a multiple of three.");let n=j.createTypedArray(e,e);for(let s=0;s<e;++s)n[s]=s;return t.indices=n,t}function Ie(t){let e=B.computeNumberOfVertices(t);if(e<3)throw new I("The number of vertices must be at least three.");let n=j.createTypedArray(e,(e-2)*3);n[0]=1,n[1]=0,n[2]=2;let s=3;for(let i=3;i<e;++i)n[s++]=i-1,n[s++]=0,n[s++]=i;return t.indices=n,t.primitiveType=D.TRIANGLES,t}function Se(t){let e=B.computeNumberOfVertices(t);if(e<3)throw new I("The number of vertices must be at least 3.");let n=j.createTypedArray(e,(e-2)*3);n[0]=0,n[1]=1,n[2]=2,e>3&&(n[3]=0,n[4]=2,n[5]=3);let s=6;for(let i=3;i<e-1;i+=2)n[s++]=i,n[s++]=i-1,n[s++]=i+1,i+2<e&&(n[s++]=i,n[s++]=i+1,n[s++]=i+2);return t.indices=n,t.primitiveType=D.TRIANGLES,t}function Pe(t){if(f(t.indices))return t;let e=B.computeNumberOfVertices(t);if(e<2)throw new I("The number of vertices must be at least two.");if(e%2!==0)throw new I("The number of vertices must be a multiple of 2.");let n=j.createTypedArray(e,e);for(let s=0;s<e;++s)n[s]=s;return t.indices=n,t}function ge(t){let e=B.computeNumberOfVertices(t);if(e<2)throw new I("The number of vertices must be at least two.");let n=j.createTypedArray(e,(e-1)*2);n[0]=0,n[1]=1;let s=2;for(let i=2;i<e;++i)n[s++]=i-1,n[s++]=i;return t.indices=n,t.primitiveType=D.LINES,t}function Oe(t){let e=B.computeNumberOfVertices(t);if(e<2)throw new I("The number of vertices must be at least two.");let n=j.createTypedArray(e,e*2);n[0]=0,n[1]=1;let s=2;for(let i=2;i<e;++i)n[s++]=i-1,n[s++]=i;return n[s++]=e-1,n[s]=0,t.indices=n,t.primitiveType=D.LINES,t}function Le(t){switch(t.primitiveType){case D.TRIANGLE_FAN:return Ie(t);case D.TRIANGLE_STRIP:return Se(t);case D.TRIANGLES:return Ae(t);case D.LINE_STRIP:return ge(t);case D.LINE_LOOP:return Oe(t);case D.LINES:return Pe(t)}return t}function Q(t,e){Math.abs(t.y)<N.EPSILON6&&(e?t.y=-N.EPSILON6:t.y=N.EPSILON6)}function Ee(t,e,n){if(t.y!==0&&e.y!==0&&n.y!==0){Q(t,t.y<0),Q(e,e.y<0),Q(n,n.y<0);return}let s=Math.abs(t.y),i=Math.abs(e.y),c=Math.abs(n.y),o;s>i?s>c?o=N.sign(t.y):o=N.sign(n.y):i>c?o=N.sign(e.y):o=N.sign(n.y);let a=o<0;Q(t,a),Q(e,a),Q(n,a)}var ee=new r;function X(t,e,n,s){r.add(t,r.multiplyByScalar(r.subtract(e,t,ee),t.y/(t.y-e.y),ee),n),r.clone(n,s),Q(n,!0),Q(s,!1)}var et=new r,nt=new r,it=new r,st=new r,Vt={positions:new Array(7),indices:new Array(9)};function Ne(t,e,n){if(t.x>=0||e.x>=0||n.x>=0)return;Ee(t,e,n);let s=t.y<0,i=e.y<0,c=n.y<0,o=0;o+=s?1:0,o+=i?1:0,o+=c?1:0;let a=Vt.indices;o===1?(a[1]=3,a[2]=4,a[5]=6,a[7]=6,a[8]=5,s?(X(t,e,et,it),X(t,n,nt,st),a[0]=0,a[3]=1,a[4]=2,a[6]=1):i?(X(e,n,et,it),X(e,t,nt,st),a[0]=1,a[3]=2,a[4]=0,a[6]=2):c&&(X(n,t,et,it),X(n,e,nt,st),a[0]=2,a[3]=0,a[4]=1,a[6]=0)):o===2&&(a[2]=4,a[4]=4,a[5]=3,a[7]=5,a[8]=6,s?i?c||(X(n,t,et,it),X(n,e,nt,st),a[0]=0,a[1]=1,a[3]=0,a[6]=2):(X(e,n,et,it),X(e,t,nt,st),a[0]=2,a[1]=0,a[3]=2,a[6]=1):(X(t,e,et,it),X(t,n,nt,st),a[0]=1,a[1]=2,a[3]=1,a[6]=0));let p=Vt.positions;return p[0]=t,p[1]=e,p[2]=n,p.length=3,(o===1||o===2)&&(p[3]=et,p[4]=nt,p[5]=it,p[6]=st,p.length=7),Vt}function ne(t,e){let n=t.attributes;if(n.position.values.length===0)return;for(let i in n)if(n.hasOwnProperty(i)&&f(n[i])&&f(n[i].values)){let c=n[i];c.values=F.createTypedArray(c.componentDatatype,c.values)}let s=B.computeNumberOfVertices(t);return t.indices=j.createTypedArray(s,t.indices),e&&(t.boundingSphere=ot.fromVertices(n.position.values)),t}function ut(t){let e=t.attributes,n={};for(let s in e)if(e.hasOwnProperty(s)&&f(e[s])&&f(e[s].values)){let i=e[s];n[s]=new U({componentDatatype:i.componentDatatype,componentsPerAttribute:i.componentsPerAttribute,normalize:i.normalize,values:[]})}return new B({attributes:n,indices:[],primitiveType:t.primitiveType})}function Ft(t,e,n){let s=f(t.geometry.boundingSphere);e=ne(e,s),n=ne(n,s),f(n)&&!f(e)?t.geometry=n:!f(n)&&f(e)?t.geometry=e:(t.westHemisphereGeometry=e,t.eastHemisphereGeometry=n,t.geometry=void 0)}function kt(t,e){let n=new t,s=new t,i=new t;return function(c,o,a,p,u,d,m,l){let h=t.fromArray(u,c*e,n),y=t.fromArray(u,o*e,s),v=t.fromArray(u,a*e,i);t.multiplyByScalar(h,p.x,h),t.multiplyByScalar(y,p.y,y),t.multiplyByScalar(v,p.z,v);let b=t.add(h,y,h);t.add(b,v,b),l&&t.normalize(b,b),t.pack(b,d,m*e)}}var ze=kt(pt,4),At=kt(r,3),ae=kt(V,2),De=function(t,e,n,s,i,c,o){let a=i[t]*s.x,p=i[e]*s.y,u=i[n]*s.z;c[o]=a+p+u>N.EPSILON6?1:0},bt=new r,Gt=new r,Ct=new r,qe=new r;function xt(t,e,n,s,i,c,o,a,p,u,d,m,l,h,y,v){if(!f(c)&&!f(o)&&!f(a)&&!f(p)&&!f(u)&&h===0)return;let b=r.fromArray(i,t*3,bt),S=r.fromArray(i,e*3,Gt),x=r.fromArray(i,n*3,Ct),w=Ht(s,b,S,x,qe);if(f(w)){if(f(c)&&At(t,e,n,w,c,m.normal.values,v,!0),f(u)){let A=r.fromArray(u,t*3,bt),E=r.fromArray(u,e*3,Gt),P=r.fromArray(u,n*3,Ct);r.multiplyByScalar(A,w.x,A),r.multiplyByScalar(E,w.y,E),r.multiplyByScalar(P,w.z,P);let O;!r.equals(A,r.ZERO)||!r.equals(E,r.ZERO)||!r.equals(P,r.ZERO)?(O=r.add(A,E,A),r.add(O,P,O),r.normalize(O,O)):(O=bt,O.x=0,O.y=0,O.z=0),r.pack(O,m.extrudeDirection.values,v*3)}if(f(d)&&De(t,e,n,w,d,m.applyOffset.values,v),f(o)&&At(t,e,n,w,o,m.tangent.values,v,!0),f(a)&&At(t,e,n,w,a,m.bitangent.values,v,!0),f(p)&&ae(t,e,n,w,p,m.st.values,v),h>0)for(let A=0;A<h;A++){let E=l[A];Re(t,e,n,w,v,y[E],m[E])}}}function Re(t,e,n,s,i,c,o){let a=c.componentsPerAttribute,p=c.values,u=o.values;switch(a){case 4:ze(t,e,n,s,p,u,i,!1);break;case 3:At(t,e,n,s,p,u,i,!1);break;case 2:ae(t,e,n,s,p,u,i,!1);break;default:u[i]=p[t]*s.x+p[e]*s.y+p[n]*s.z}}function K(t,e,n,s,i,c){let o=t.position.values.length/3;if(i!==-1){let a=s[i],p=n[a];return p===-1?(n[a]=o,t.position.values.push(c.x,c.y,c.z),e.push(o),o):(e.push(p),p)}return t.position.values.push(c.x,c.y,c.z),e.push(o),o}var Ve={position:!0,normal:!0,bitangent:!0,tangent:!0,st:!0,extrudeDirection:!0,applyOffset:!0};function ie(t){let e=t.geometry,n=e.attributes,s=n.position.values,i=f(n.normal)?n.normal.values:void 0,c=f(n.bitangent)?n.bitangent.values:void 0,o=f(n.tangent)?n.tangent.values:void 0,a=f(n.st)?n.st.values:void 0,p=f(n.extrudeDirection)?n.extrudeDirection.values:void 0,u=f(n.applyOffset)?n.applyOffset.values:void 0,d=e.indices,m=[];for(let O in n)n.hasOwnProperty(O)&&!Ve[O]&&f(n[O])&&m.push(O);let l=m.length,h=ut(e),y=ut(e),v,b,S,x,w,A=[];A.length=s.length/3;let E=[];for(E.length=s.length/3,w=0;w<A.length;++w)A[w]=-1,E[w]=-1;let P=d.length;for(w=0;w<P;w+=3){let O=d[w],L=d[w+1],g=d[w+2],T=r.fromArray(s,O*3),C=r.fromArray(s,L*3),z=r.fromArray(s,g*3),q=Ne(T,C,z);if(f(q)&&q.positions.length>3){let R=q.positions,G=q.indices,M=G.length;for(let J=0;J<M;++J){let Y=G[J],_=R[Y];_.y<0?(v=y.attributes,b=y.indices,S=A):(v=h.attributes,b=h.indices,S=E),x=K(v,b,S,d,Y<3?w+Y:-1,_),xt(O,L,g,_,s,i,o,c,a,p,u,v,m,l,n,x)}}else f(q)&&(T=q.positions[0],C=q.positions[1],z=q.positions[2]),T.y<0?(v=y.attributes,b=y.indices,S=A):(v=h.attributes,b=h.indices,S=E),x=K(v,b,S,d,w,T),xt(O,L,g,T,s,i,o,c,a,p,u,v,m,l,n,x),x=K(v,b,S,d,w+1,C),xt(O,L,g,C,s,i,o,c,a,p,u,v,m,l,n,x),x=K(v,b,S,d,w+2,z),xt(O,L,g,z,s,i,o,c,a,p,u,v,m,l,n,x)}Ft(t,y,h)}var ue=Et.fromPointNormal(r.ZERO,r.UNIT_Y),Ge=new r,Ce=new r;function at(t,e,n,s,i,c,o){if(!f(o))return;let a=r.fromArray(s,t*3,bt);r.equalsEpsilon(a,n,N.EPSILON10)?c.applyOffset.values[i]=o[t]:c.applyOffset.values[i]=o[e]}function se(t){let e=t.geometry,n=e.attributes,s=n.position.values,i=f(n.applyOffset)?n.applyOffset.values:void 0,c=e.indices,o=ut(e),a=ut(e),p,u=c.length,d=[];d.length=s.length/3;let m=[];for(m.length=s.length/3,p=0;p<d.length;++p)d[p]=-1,m[p]=-1;for(p=0;p<u;p+=2){let l=c[p],h=c[p+1],y=r.fromArray(s,l*3,bt),v=r.fromArray(s,h*3,Gt),b;Math.abs(y.y)<N.EPSILON6&&(y.y<0?y.y=-N.EPSILON6:y.y=N.EPSILON6),Math.abs(v.y)<N.EPSILON6&&(v.y<0?v.y=-N.EPSILON6:v.y=N.EPSILON6);let S=o.attributes,x=o.indices,w=m,A=a.attributes,E=a.indices,P=d,O=Lt.lineSegmentPlane(y,v,ue,Ct);if(f(O)){let L=r.multiplyByScalar(r.UNIT_Y,5*N.EPSILON9,Ge);y.y<0&&(r.negate(L,L),S=a.attributes,x=a.indices,w=d,A=o.attributes,E=o.indices,P=m);let g=r.add(O,L,Ce);b=K(S,x,w,c,p,y),at(l,h,y,s,b,S,i),b=K(S,x,w,c,-1,g),at(l,h,g,s,b,S,i),r.negate(L,L),r.add(O,L,g),b=K(A,E,P,c,-1,g),at(l,h,g,s,b,A,i),b=K(A,E,P,c,p+1,v),at(l,h,v,s,b,A,i)}else{let L,g,T;y.y<0?(L=a.attributes,g=a.indices,T=d):(L=o.attributes,g=o.indices,T=m),b=K(L,g,T,c,p,y),at(l,h,y,s,b,L,i),b=K(L,g,T,c,p+1,v),at(l,h,v,s,b,L,i)}}Ft(t,a,o)}var oe=new V,Be=new V,le=new r,fe=new r,Bt=new r,Fe=new r,ke=new r,Me=new r,re=new pt;function ce(t){let e=t.attributes,n=e.position.values,s=e.prevPosition.values,i=e.nextPosition.values,c=n.length;for(let o=0;o<c;o+=3){let a=r.unpack(n,o,le);if(a.x>0)continue;let p=r.unpack(s,o,fe);(a.y<0&&p.y>0||a.y>0&&p.y<0)&&(o-3>0?(s[o]=n[o-3],s[o+1]=n[o-2],s[o+2]=n[o-1]):r.pack(a,s,o));let u=r.unpack(i,o,Bt);(a.y<0&&u.y>0||a.y>0&&u.y<0)&&(o+3<c?(i[o]=n[o+3],i[o+1]=n[o+4],i[o+2]=n[o+5]):r.pack(a,i,o))}}var _e=5*N.EPSILON9,Tt=N.EPSILON6;function Ue(t){let e=t.geometry,n=e.attributes,s=n.position.values,i=n.prevPosition.values,c=n.nextPosition.values,o=n.expandAndWidth.values,a=f(n.st)?n.st.values:void 0,p=f(n.color)?n.color.values:void 0,u=ut(e),d=ut(e),m,l,h,y=!1,v=s.length/3;for(m=0;m<v;m+=4){let b=m,S=m+2,x=r.fromArray(s,b*3,le),w=r.fromArray(s,S*3,fe);if(Math.abs(x.y)<Tt)for(x.y=Tt*(w.y<0?-1:1),s[m*3+1]=x.y,s[(m+1)*3+1]=x.y,l=b*3;l<b*3+12;l+=3)i[l]=s[m*3],i[l+1]=s[m*3+1],i[l+2]=s[m*3+2];if(Math.abs(w.y)<Tt)for(w.y=Tt*(x.y<0?-1:1),s[(m+2)*3+1]=w.y,s[(m+3)*3+1]=w.y,l=b*3;l<b*3+12;l+=3)c[l]=s[(m+2)*3],c[l+1]=s[(m+2)*3+1],c[l+2]=s[(m+2)*3+2];let A=u.attributes,E=u.indices,P=d.attributes,O=d.indices,L=Lt.lineSegmentPlane(x,w,ue,Fe);if(f(L)){y=!0;let g=r.multiplyByScalar(r.UNIT_Y,_e,ke);x.y<0&&(r.negate(g,g),A=d.attributes,E=d.indices,P=u.attributes,O=u.indices);let T=r.add(L,g,Me);A.position.values.push(x.x,x.y,x.z,x.x,x.y,x.z),A.position.values.push(T.x,T.y,T.z),A.position.values.push(T.x,T.y,T.z),A.prevPosition.values.push(i[b*3],i[b*3+1],i[b*3+2]),A.prevPosition.values.push(i[b*3+3],i[b*3+4],i[b*3+5]),A.prevPosition.values.push(x.x,x.y,x.z,x.x,x.y,x.z),A.nextPosition.values.push(T.x,T.y,T.z),A.nextPosition.values.push(T.x,T.y,T.z),A.nextPosition.values.push(T.x,T.y,T.z),A.nextPosition.values.push(T.x,T.y,T.z),r.negate(g,g),r.add(L,g,T),P.position.values.push(T.x,T.y,T.z),P.position.values.push(T.x,T.y,T.z),P.position.values.push(w.x,w.y,w.z,w.x,w.y,w.z),P.prevPosition.values.push(T.x,T.y,T.z),P.prevPosition.values.push(T.x,T.y,T.z),P.prevPosition.values.push(T.x,T.y,T.z),P.prevPosition.values.push(T.x,T.y,T.z),P.nextPosition.values.push(w.x,w.y,w.z,w.x,w.y,w.z),P.nextPosition.values.push(c[S*3],c[S*3+1],c[S*3+2]),P.nextPosition.values.push(c[S*3+3],c[S*3+4],c[S*3+5]);let C=V.fromArray(o,b*2,oe),z=Math.abs(C.y);A.expandAndWidth.values.push(-1,z,1,z),A.expandAndWidth.values.push(-1,-z,1,-z),P.expandAndWidth.values.push(-1,z,1,z),P.expandAndWidth.values.push(-1,-z,1,-z);let q=r.magnitudeSquared(r.subtract(L,x,Bt));if(q/=r.magnitudeSquared(r.subtract(w,x,Bt)),f(p)){let R=pt.fromArray(p,b*4,re),G=pt.fromArray(p,S*4,re),M=N.lerp(R.x,G.x,q),J=N.lerp(R.y,G.y,q),Y=N.lerp(R.z,G.z,q),_=N.lerp(R.w,G.w,q);for(l=b*4;l<b*4+8;++l)A.color.values.push(p[l]);for(A.color.values.push(M,J,Y,_),A.color.values.push(M,J,Y,_),P.color.values.push(M,J,Y,_),P.color.values.push(M,J,Y,_),l=S*4;l<S*4+8;++l)P.color.values.push(p[l])}if(f(a)){let R=V.fromArray(a,b*2,oe),G=V.fromArray(a,(m+3)*2,Be),M=N.lerp(R.x,G.x,q);for(l=b*2;l<b*2+4;++l)A.st.values.push(a[l]);for(A.st.values.push(M,R.y),A.st.values.push(M,G.y),P.st.values.push(M,R.y),P.st.values.push(M,G.y),l=S*2;l<S*2+4;++l)P.st.values.push(a[l])}h=A.position.values.length/3-4,E.push(h,h+2,h+1),E.push(h+1,h+2,h+3),h=P.position.values.length/3-4,O.push(h,h+2,h+1),O.push(h+1,h+2,h+3)}else{let g,T;for(x.y<0?(g=d.attributes,T=d.indices):(g=u.attributes,T=u.indices),g.position.values.push(x.x,x.y,x.z),g.position.values.push(x.x,x.y,x.z),g.position.values.push(w.x,w.y,w.z),g.position.values.push(w.x,w.y,w.z),l=m*3;l<m*3+12;++l)g.prevPosition.values.push(i[l]),g.nextPosition.values.push(c[l]);for(l=m*2;l<m*2+8;++l)g.expandAndWidth.values.push(o[l]),f(a)&&g.st.values.push(a[l]);if(f(p))for(l=m*4;l<m*4+16;++l)g.color.values.push(p[l]);h=g.position.values.length/3-4,T.push(h,h+2,h+1),T.push(h+1,h+2,h+3)}}y&&(ce(d),ce(u)),Ft(t,d,u)}k.splitLongitude=function(t){if(!f(t))throw new I("instance is required.");let e=t.geometry,n=e.boundingSphere;if(f(n)&&(n.center.x-n.radius>0||ot.intersectPlane(n,Et.ORIGIN_ZX_PLANE)!==Ut.INTERSECTING))return t;if(e.geometryType!==dt.NONE)switch(e.geometryType){case dt.POLYLINES:Ue(t);break;case dt.TRIANGLES:ie(t);break;case dt.LINES:se(t);break}else Le(e),e.primitiveType===D.TRIANGLES?ie(t):e.primitiveType===D.LINES&&se(t);return t};var Pn=k;export{Pn as a}; diff --git a/public/Cesium/Workers/chunk-WGGIH7QW.js b/public/Cesium/Workers/chunk-WGGIH7QW.js new file mode 100644 index 000000000..e4fea680c --- /dev/null +++ b/public/Cesium/Workers/chunk-WGGIH7QW.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as g,b as d}from"./chunk-4IW2T6GF.js";import{h as x}from"./chunk-PSPPBZWI.js";import{b as p,c as M,d as O}from"./chunk-64RSHJUE.js";import{b as m}from"./chunk-LEYMRMBK.js";import{e as f}from"./chunk-VTAIKJXX.js";function n(i,h,o,t){this.x=i??0,this.y=h??0,this.width=o??0,this.height=t??0}n.packedLength=4;n.pack=function(i,h,o){return m.typeOf.object("value",i),m.defined("array",h),o=o??0,h[o++]=i.x,h[o++]=i.y,h[o++]=i.width,h[o]=i.height,h};n.unpack=function(i,h,o){return m.defined("array",i),h=h??0,f(o)||(o=new n),o.x=i[h++],o.y=i[h++],o.width=i[h++],o.height=i[h],o};n.fromPoints=function(i,h){if(f(h)||(h=new n),!f(i)||i.length===0)return h.x=0,h.y=0,h.width=0,h.height=0,h;let o=i.length,t=i[0].x,c=i[0].y,e=i[0].x,w=i[0].y;for(let y=1;y<o;y++){let R=i[y],b=R.x,j=R.y;t=Math.min(b,t),e=Math.max(b,e),c=Math.min(j,c),w=Math.max(j,w)}return h.x=t,h.y=c,h.width=e-t,h.height=w-c,h};var L=new g,X=new p,Y=new p;n.fromRectangle=function(i,h,o){if(f(o)||(o=new n),!f(i))return o.x=0,o.y=0,o.width=0,o.height=0,o;L._ellipsoid=O.default,h=h??L;let t=h.project(x.southwest(i,X)),c=h.project(x.northeast(i,Y));return M.subtract(c,t,c),o.x=t.x,o.y=t.y,o.width=c.x,o.height=c.y,o};n.clone=function(i,h){if(f(i))return f(h)?(h.x=i.x,h.y=i.y,h.width=i.width,h.height=i.height,h):new n(i.x,i.y,i.width,i.height)};n.union=function(i,h,o){m.typeOf.object("left",i),m.typeOf.object("right",h),f(o)||(o=new n);let t=Math.min(i.x,h.x),c=Math.min(i.y,h.y),e=Math.max(i.x+i.width,h.x+h.width),w=Math.max(i.y+i.height,h.y+h.height);return o.x=t,o.y=c,o.width=e-t,o.height=w-c,o};n.expand=function(i,h,o){m.typeOf.object("rectangle",i),m.typeOf.object("point",h),o=n.clone(i,o);let t=h.x-o.x,c=h.y-o.y;return t>o.width?o.width=t:t<0&&(o.width-=t,o.x=h.x),c>o.height?o.height=c:c<0&&(o.height-=c,o.y=h.y),o};n.intersect=function(i,h){m.typeOf.object("left",i),m.typeOf.object("right",h);let o=i.x,t=i.y,c=h.x,e=h.y;return o>c+h.width||o+i.width<c||t+i.height<e||t>e+h.height?d.OUTSIDE:d.INTERSECTING};n.equals=function(i,h){return i===h||f(i)&&f(h)&&i.x===h.x&&i.y===h.y&&i.width===h.width&&i.height===h.height};n.prototype.clone=function(i){return n.clone(this,i)};n.prototype.intersect=function(i){return n.intersect(this,i)};n.prototype.equals=function(i){return n.equals(this,i)};var S=n;export{S as a}; diff --git a/public/Cesium/Workers/chunk-WWA5PL4H.js b/public/Cesium/Workers/chunk-WWA5PL4H.js new file mode 100644 index 000000000..9abaaf197 --- /dev/null +++ b/public/Cesium/Workers/chunk-WWA5PL4H.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as z,c as q}from"./chunk-B4AA3ARO.js";import{a as U}from"./chunk-XRL4AVS5.js";import{f as I}from"./chunk-PSPPBZWI.js";import{a as e,e as C}from"./chunk-64RSHJUE.js";import{a as O}from"./chunk-3SSKC3VN.js";import{e as j}from"./chunk-VTAIKJXX.js";var G={},B=new e,J=new e,_=new e,v=new e,g=[new e,new e],K=new e,W=new e,X=new e,$=new e,ee=new e,te=new e,ne=new e,oe=new e,re=new e,se=new e,F=new I,k=new C;function V(o,s,a,c,r){let d=e.angleBetween(e.subtract(s,o,B),e.subtract(a,o,J)),y=c===z.BEVELED?1:Math.ceil(d/O.toRadians(5))+1,n=y*3,l=new Array(n);l[n-3]=a.x,l[n-2]=a.y,l[n-1]=a.z;let m;r?m=C.fromQuaternion(I.fromAxisAngle(e.negate(o,B),d/y,F),k):m=C.fromQuaternion(I.fromAxisAngle(o,d/y,F),k);let t=0;s=e.clone(s,B);for(let i=0;i<y;i++)s=C.multiplyByVector(m,s,s),l[t++]=s.x,l[t++]=s.y,l[t++]=s.z;return l}function ae(o){let s=K,a=W,c=X,r=o[1];a=e.fromArray(o[1],r.length-3,a),c=e.fromArray(o[0],0,c),s=e.midpoint(a,c,s);let d=V(s,a,c,z.ROUNDED,!1),y=o.length-1,n=o[y-1];r=o[y],a=e.fromArray(n,n.length-3,a),c=e.fromArray(r,0,c),s=e.midpoint(a,c,s);let l=V(s,a,c,z.ROUNDED,!1);return[d,l]}function H(o,s,a,c){let r=B;return c?r=e.add(o,s,r):(s=e.negate(s,s),r=e.add(o,s,r)),[r.x,r.y,r.z,a.x,a.y,a.z]}function T(o,s,a,c){let r=new Array(o.length),d=new Array(o.length),y=e.multiplyByScalar(s,a,B),n=e.negate(y,J),l=0,m=o.length-1;for(let t=0;t<o.length;t+=3){let i=e.fromArray(o,t,_),w=e.add(i,n,v);r[l++]=w.x,r[l++]=w.y,r[l++]=w.z;let f=e.add(i,y,v);d[m--]=f.z,d[m--]=f.y,d[m--]=f.x}return c.push(r,d),c}G.addAttribute=function(o,s,a,c){let r=s.x,d=s.y,y=s.z;j(a)&&(o[a]=r,o[a+1]=d,o[a+2]=y),j(c)&&(o[c]=y,o[c-1]=d,o[c-2]=r)};var le=new e,ce=new e;G.computePositions=function(o){let s=o.granularity,a=o.positions,c=o.ellipsoid,r=o.width/2,d=o.cornerType,y=o.saveAttributes,n=K,l=W,m=X,t=$,i=ee,w=te,f=ne,u=oe,p=re,x=se,E=[],S=y?[]:void 0,D=y?[]:void 0,h=a[0],N=a[1];l=e.normalize(e.subtract(N,h,l),l),n=c.geodeticSurfaceNormal(h,n),t=e.normalize(e.cross(n,l,t),t),y&&(S.push(t.x,t.y,t.z),D.push(n.x,n.y,n.z)),f=e.clone(h,f),h=N,m=e.negate(l,m);let A,P=[],M,Y=a.length;for(M=1;M<Y-1;M++){n=c.geodeticSurfaceNormal(h,n),N=a[M+1],l=e.normalize(e.subtract(N,h,l),l);let L=e.multiplyByScalar(n,e.dot(l,n),le);e.subtract(l,L,L),e.normalize(L,L);let R=e.multiplyByScalar(n,e.dot(m,n),ce);if(e.subtract(m,R,R),e.normalize(R,R),!O.equalsEpsilon(Math.abs(e.dot(L,R)),1,O.EPSILON7)){i=e.normalize(e.add(l,m,i),i),i=e.cross(i,n,i),i=e.cross(n,i,i),i=e.normalize(i,i);let Z=r/Math.max(.25,e.magnitude(e.cross(i,m,B))),b=q.angleIsGreaterThanPi(l,m,h,c);i=e.multiplyByScalar(i,Z,i),b?(u=e.add(h,i,u),x=e.add(u,e.multiplyByScalar(t,r,x),x),p=e.add(u,e.multiplyByScalar(t,r*2,p),p),g[0]=e.clone(f,g[0]),g[1]=e.clone(x,g[1]),A=U.generateArc({positions:g,granularity:s,ellipsoid:c}),E=T(A,t,r,E),y&&(S.push(t.x,t.y,t.z),D.push(n.x,n.y,n.z)),w=e.clone(p,w),t=e.normalize(e.cross(n,l,t),t),p=e.add(u,e.multiplyByScalar(t,r*2,p),p),f=e.add(u,e.multiplyByScalar(t,r,f),f),d===z.ROUNDED||d===z.BEVELED?P.push({leftPositions:V(u,w,p,d,b)}):P.push({leftPositions:H(h,e.negate(i,i),p,b)})):(p=e.add(h,i,p),x=e.add(p,e.negate(e.multiplyByScalar(t,r,x),x),x),u=e.add(p,e.negate(e.multiplyByScalar(t,r*2,u),u),u),g[0]=e.clone(f,g[0]),g[1]=e.clone(x,g[1]),A=U.generateArc({positions:g,granularity:s,ellipsoid:c}),E=T(A,t,r,E),y&&(S.push(t.x,t.y,t.z),D.push(n.x,n.y,n.z)),w=e.clone(u,w),t=e.normalize(e.cross(n,l,t),t),u=e.add(p,e.negate(e.multiplyByScalar(t,r*2,u),u),u),f=e.add(p,e.negate(e.multiplyByScalar(t,r,f),f),f),d===z.ROUNDED||d===z.BEVELED?P.push({rightPositions:V(p,w,u,d,b)}):P.push({rightPositions:H(h,i,u,b)})),m=e.negate(l,m)}h=N}n=c.geodeticSurfaceNormal(h,n),g[0]=e.clone(f,g[0]),g[1]=e.clone(h,g[1]),A=U.generateArc({positions:g,granularity:s,ellipsoid:c}),E=T(A,t,r,E),y&&(S.push(t.x,t.y,t.z),D.push(n.x,n.y,n.z));let Q;return d===z.ROUNDED&&(Q=ae(E)),{positions:E,corners:P,lefts:S,normals:D,endPositions:Q}};var we=G;export{we as a}; diff --git a/public/Cesium/Workers/chunk-WZDE3RYP.js b/public/Cesium/Workers/chunk-WZDE3RYP.js new file mode 100644 index 000000000..7acee6cff --- /dev/null +++ b/public/Cesium/Workers/chunk-WZDE3RYP.js @@ -0,0 +1,28 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{e as f}from"./chunk-VTAIKJXX.js";function c(t){let n,a=t.name,e=t.message;f(a)&&f(e)?n=`${a}: ${e}`:n=t.toString();let o=t.stack;return f(o)&&(n+=` +${o}`),n}var i=c;function l(t){async function n({data:e}){let o=[],s={id:e.id,result:void 0,error:void 0};self.CESIUM_BASE_URL=e.baseUrl;try{let r=await t(e.parameters,o);s.result=r}catch(r){r instanceof Error?s.error={name:r.name,message:r.message,stack:r.stack}:s.error=r}e.canTransferArrayBuffer||(o.length=0);try{postMessage(s,o)}catch(r){s.result=void 0,s.error=`postMessage failed with error: ${i(r)} + with responseMessage: ${JSON.stringify(s)}`,postMessage(s)}}function a(e){postMessage({id:e.data?.id,error:`postMessage failed with error: ${JSON.stringify(e)}`})}return self.onmessage=n,self.onmessageerror=a,self}var d=l;export{d as a}; diff --git a/public/Cesium/Workers/chunk-XRL4AVS5.js b/public/Cesium/Workers/chunk-XRL4AVS5.js new file mode 100644 index 000000000..7233314ab --- /dev/null +++ b/public/Cesium/Workers/chunk-XRL4AVS5.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as G}from"./chunk-U4IEOH5K.js";import{a as z}from"./chunk-G5AGHVVC.js";import{b as B}from"./chunk-DMEY62ID.js";import{a as C}from"./chunk-HTFSEEMT.js";import{b as L}from"./chunk-PSPPBZWI.js";import{a,b as D,d as I}from"./chunk-64RSHJUE.js";import{a as S}from"./chunk-3SSKC3VN.js";import{a as x}from"./chunk-LEYMRMBK.js";import{e as T}from"./chunk-VTAIKJXX.js";var p={};p.numberOfPoints=function(r,n,o){let e=a.distance(r,n);return Math.ceil(e/o)};p.numberOfPointsRhumbLine=function(r,n,o){let e=Math.pow(r.longitude-n.longitude,2)+Math.pow(r.latitude-n.latitude,2);return Math.max(1,Math.ceil(Math.sqrt(e/(o*o))))};var Z=new D;p.extractHeights=function(r,n){let o=r.length,e=new Array(o);for(let t=0;t<o;t++){let l=r[t];e[t]=n.cartesianToCartographic(l,Z).height}return e};var Y=new L,V=new a,_=new a,F=new C(a.UNIT_X,0),v=new a,j=new C(a.UNIT_X,0),J=new a,K=new a,O=[];function U(r,n,o){let e=O;e.length=r;let t;if(n===o){for(t=0;t<r;t++)e[t]=n;return e}let u=(o-n)/r;for(t=0;t<r;t++){let d=n+t*u;e[t]=d}return e}var N=new D,E=new D,b=new a,k=new a,Q=new a,M=new G,R=new z;function W(r,n,o,e,t,l,u,d){let c=e.scaleToGeodeticSurface(r,k),w=e.scaleToGeodeticSurface(n,Q),h=p.numberOfPoints(r,n,o),f=e.cartesianToCartographic(c,N),y=e.cartesianToCartographic(w,E),g=U(h,t,l);M.setEndPoints(f,y);let P=M.surfaceDistance/h,i=d;f.height=t;let s=e.cartographicToCartesian(f,b);a.pack(s,u,i),i+=3;for(let m=1;m<h;m++){let A=M.interpolateUsingSurfaceDistance(m*P,E);A.height=g[m],s=e.cartographicToCartesian(A,b),a.pack(s,u,i),i+=3}return i}function $(r,n,o,e,t,l,u,d){let c=e.cartesianToCartographic(r,N),w=e.cartesianToCartographic(n,E),h=p.numberOfPointsRhumbLine(c,w,o);c.height=0,w.height=0;let f=U(h,t,l);R.ellipsoid.equals(e)||(R=new z(void 0,void 0,e)),R.setEndPoints(c,w);let y=R.surfaceDistance/h,g=d;c.height=t;let P=e.cartographicToCartesian(c,b);a.pack(P,u,g),g+=3;for(let i=1;i<h;i++){let s=R.interpolateUsingSurfaceDistance(i*y,E);s.height=f[i],P=e.cartographicToCartesian(s,b),a.pack(P,u,g),g+=3}return g}p.wrapLongitude=function(r,n){let o=[],e=[];if(T(r)&&r.length>0){n=n??L.IDENTITY;let t=L.inverseTransformation(n,Y),l=L.multiplyByPoint(t,a.ZERO,V),u=a.normalize(L.multiplyByPointAsVector(t,a.UNIT_Y,_),_),d=C.fromPointNormal(l,u,F),c=a.normalize(L.multiplyByPointAsVector(t,a.UNIT_X,v),v),w=C.fromPointNormal(l,c,j),h=1;o.push(a.clone(r[0]));let f=o[0],y=r.length;for(let g=1;g<y;++g){let P=r[g];if(C.getPointDistance(w,f)<0||C.getPointDistance(w,P)<0){let i=B.lineSegmentPlane(f,P,d,J);if(T(i)){let s=a.multiplyByScalar(u,5e-9,K);C.getPointDistance(d,f)<0&&a.negate(s,s),o.push(a.add(i,s,new a)),e.push(h+1),a.negate(s,s),o.push(a.add(i,s,new a)),h=1}}o.push(a.clone(r[g])),h++,f=P}e.push(h)}return{positions:o,lengths:e}};p.generateArc=function(r){T(r)||(r={});let n=r.positions;if(!T(n))throw new x("options.positions is required.");let o=n.length,e=r.ellipsoid??I.default,t=r.height??0,l=Array.isArray(t);if(o<1)return[];if(o===1){let i=e.scaleToGeodeticSurface(n[0],k);if(t=l?t[0]:t,t!==0){let s=e.geodeticSurfaceNormal(i,b);a.multiplyByScalar(s,t,s),a.add(i,s,i)}return[i.x,i.y,i.z]}let u=r.minDistance;if(!T(u)){let i=r.granularity??S.RADIANS_PER_DEGREE;u=S.chordLength(i,e.maximumRadius)}let d=0,c;for(c=0;c<o-1;c++)d+=p.numberOfPoints(n[c],n[c+1],u);let w=(d+1)*3,h=new Array(w),f=0;for(c=0;c<o-1;c++){let i=n[c],s=n[c+1],m=l?t[c]:t,A=l?t[c+1]:t;f=W(i,s,u,e,m,A,h,f)}O.length=0;let y=n[o-1],g=e.cartesianToCartographic(y,N);g.height=l?t[o-1]:t;let P=e.cartographicToCartesian(g,b);return a.pack(P,h,w-3),h};var H=new D,tt=new D;p.generateRhumbArc=function(r){T(r)||(r={});let n=r.positions;if(!T(n))throw new x("options.positions is required.");let o=n.length,e=r.ellipsoid??I.default,t=r.height??0,l=Array.isArray(t);if(o<1)return[];if(o===1){let m=e.scaleToGeodeticSurface(n[0],k);if(t=l?t[0]:t,t!==0){let A=e.geodeticSurfaceNormal(m,b);a.multiplyByScalar(A,t,A),a.add(m,A,m)}return[m.x,m.y,m.z]}let u=r.granularity??S.RADIANS_PER_DEGREE,d=0,c,w=e.cartesianToCartographic(n[0],H),h;for(c=0;c<o-1;c++)h=e.cartesianToCartographic(n[c+1],tt),d+=p.numberOfPointsRhumbLine(w,h,u),w=D.clone(h,H);let f=(d+1)*3,y=new Array(f),g=0;for(c=0;c<o-1;c++){let m=n[c],A=n[c+1],q=l?t[c]:t,X=l?t[c+1]:t;g=$(m,A,u,e,q,X,y,g)}O.length=0;let P=n[o-1],i=e.cartesianToCartographic(P,N);i.height=l?t[o-1]:t;let s=e.cartographicToCartesian(i,b);return a.pack(s,y,f-3),y};p.generateCartesianArc=function(r){let n=p.generateArc(r),o=n.length/3,e=new Array(o);for(let t=0;t<o;t++)e[t]=a.unpack(n,t*3);return e};p.generateCartesianRhumbArc=function(r){let n=p.generateRhumbArc(r),o=n.length/3,e=new Array(o);for(let t=0;t<o;t++)e[t]=a.unpack(n,t*3);return e};var gt=p;export{gt as a}; diff --git a/public/Cesium/Workers/combineGeometry.js b/public/Cesium/Workers/combineGeometry.js new file mode 100644 index 000000000..717fc7436 --- /dev/null +++ b/public/Cesium/Workers/combineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as e}from"./chunk-VTBDSFTG.js";import{a as r}from"./chunk-WZDE3RYP.js";import"./chunk-DQQ63PYM.js";import"./chunk-VW6VD53G.js";import"./chunk-DEPHB2WM.js";import"./chunk-QOUAJ6TL.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import"./chunk-VTAIKJXX.js";function n(o,t){let m=e.unpackCombineGeometryParameters(o),i=e.combineGeometry(m);return e.packCombineGeometryResults(i,t)}var c=r(n);export{c as default}; diff --git a/public/Cesium/Workers/createBoxGeometry.js b/public/Cesium/Workers/createBoxGeometry.js new file mode 100644 index 000000000..628916e77 --- /dev/null +++ b/public/Cesium/Workers/createBoxGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as r}from"./chunk-QN3VOORQ.js";import"./chunk-GBYLG25F.js";import"./chunk-CYCB63OH.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{e as o}from"./chunk-VTAIKJXX.js";function i(e,t){return o(t)&&(e=r.unpack(e,t)),r.createGeometry(e)}var a=i;export{a as default}; diff --git a/public/Cesium/Workers/createBoxOutlineGeometry.js b/public/Cesium/Workers/createBoxOutlineGeometry.js new file mode 100644 index 000000000..0e22cc18b --- /dev/null +++ b/public/Cesium/Workers/createBoxOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as d}from"./chunk-GBYLG25F.js";import{a as l}from"./chunk-A56XVLQR.js";import{b as O,c as h,d as p}from"./chunk-RCV6KWXS.js";import{d as A}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a}from"./chunk-AU7IKHOH.js";import{a as m,f as s}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as b,b as r}from"./chunk-LEYMRMBK.js";import{e as c}from"./chunk-VTAIKJXX.js";var g=new m;function f(e){e=e??s.EMPTY_OBJECT;let t=e.minimum,n=e.maximum;if(r.typeOf.object("min",t),r.typeOf.object("max",n),c(e.offsetAttribute)&&e.offsetAttribute===d.TOP)throw new b("GeometryOffsetAttribute.TOP is not a supported options.offsetAttribute for this geometry.");this._min=m.clone(t),this._max=m.clone(n),this._offsetAttribute=e.offsetAttribute,this._workerName="createBoxOutlineGeometry"}f.fromDimensions=function(e){e=e??s.EMPTY_OBJECT;let t=e.dimensions;r.typeOf.object("dimensions",t),r.typeOf.number.greaterThanOrEquals("dimensions.x",t.x,0),r.typeOf.number.greaterThanOrEquals("dimensions.y",t.y,0),r.typeOf.number.greaterThanOrEquals("dimensions.z",t.z,0);let n=m.multiplyByScalar(t,.5,new m);return new f({minimum:m.negate(n,new m),maximum:n,offsetAttribute:e.offsetAttribute})};f.fromAxisAlignedBoundingBox=function(e){return r.typeOf.object("boundindBox",e),new f({minimum:e.minimum,maximum:e.maximum})};f.packedLength=2*m.packedLength+1;f.pack=function(e,t,n){return r.typeOf.object("value",e),r.defined("array",t),n=n??0,m.pack(e._min,t,n),m.pack(e._max,t,n+m.packedLength),t[n+m.packedLength*2]=e._offsetAttribute??-1,t};var w=new m,x=new m,_={minimum:w,maximum:x,offsetAttribute:void 0};f.unpack=function(e,t,n){r.defined("array",e),t=t??0;let u=m.unpack(e,t,w),o=m.unpack(e,t+m.packedLength,x),i=e[t+m.packedLength*2];return c(n)?(n._min=m.clone(u,n._min),n._max=m.clone(o,n._max),n._offsetAttribute=i===-1?void 0:i,n):(_.offsetAttribute=i===-1?void 0:i,new f(_))};f.createGeometry=function(e){let t=e._min,n=e._max;if(m.equals(t,n))return;let u=new l,o=new Uint16Array(24),i=new Float64Array(24);i[0]=t.x,i[1]=t.y,i[2]=t.z,i[3]=n.x,i[4]=t.y,i[5]=t.z,i[6]=n.x,i[7]=n.y,i[8]=t.z,i[9]=t.x,i[10]=n.y,i[11]=t.z,i[12]=t.x,i[13]=t.y,i[14]=n.z,i[15]=n.x,i[16]=t.y,i[17]=n.z,i[18]=n.x,i[19]=n.y,i[20]=n.z,i[21]=t.x,i[22]=n.y,i[23]=n.z,u.position=new p({componentDatatype:a.DOUBLE,componentsPerAttribute:3,values:i}),o[0]=4,o[1]=5,o[2]=5,o[3]=6,o[4]=6,o[5]=7,o[6]=7,o[7]=4,o[8]=0,o[9]=1,o[10]=1,o[11]=2,o[12]=2,o[13]=3,o[14]=3,o[15]=0,o[16]=0,o[17]=4,o[18]=1,o[19]=5,o[20]=2,o[21]=6,o[22]=3,o[23]=7;let k=m.subtract(n,t,g),E=m.magnitude(k)*.5;if(c(e._offsetAttribute)){let T=i.length,z=e._offsetAttribute===d.NONE?0:1,B=new Uint8Array(T/3).fill(z);u.applyOffset=new p({componentDatatype:a.UNSIGNED_BYTE,componentsPerAttribute:1,values:B})}return new h({attributes:u,indices:o,primitiveType:O.LINES,boundingSphere:new A(m.ZERO,E),offsetAttribute:e._offsetAttribute})};var y=f;function L(e,t){return c(t)&&(e=y.unpack(e,t)),y.createGeometry(e)}var V=L;export{V as default}; diff --git a/public/Cesium/Workers/createCircleGeometry.js b/public/Cesium/Workers/createCircleGeometry.js new file mode 100644 index 000000000..26bc1e060 --- /dev/null +++ b/public/Cesium/Workers/createCircleGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as l}from"./chunk-FEVXJ54I.js";import"./chunk-UP6I5URU.js";import"./chunk-D6AA5QVT.js";import"./chunk-VW6VD53G.js";import"./chunk-DEPHB2WM.js";import"./chunk-QOUAJ6TL.js";import"./chunk-GBYLG25F.js";import{a as m}from"./chunk-CYCB63OH.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a,d as s,f as _}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as p}from"./chunk-LEYMRMBK.js";import{e as d}from"./chunk-VTAIKJXX.js";function n(e){e=e??_.EMPTY_OBJECT;let r=e.radius;p.typeOf.number("radius",r);let o={center:e.center,semiMajorAxis:r,semiMinorAxis:r,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,vertexFormat:e.vertexFormat,stRotation:e.stRotation,shadowVolume:e.shadowVolume};this._ellipseGeometry=new l(o),this._workerName="createCircleGeometry"}n.packedLength=l.packedLength;n.pack=function(e,r,o){return p.typeOf.object("value",e),l.pack(e._ellipseGeometry,r,o)};var h=new l({center:new a,semiMajorAxis:1,semiMinorAxis:1}),t={center:new a,radius:void 0,ellipsoid:s.clone(s.default),height:void 0,extrudedHeight:void 0,granularity:void 0,vertexFormat:new m,stRotation:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0,shadowVolume:void 0};n.unpack=function(e,r,o){let i=l.unpack(e,r,h);return t.center=a.clone(i._center,t.center),t.ellipsoid=s.clone(i._ellipsoid,t.ellipsoid),t.ellipsoid=s.clone(i._ellipsoid,h._ellipsoid),t.height=i._height,t.extrudedHeight=i._extrudedHeight,t.granularity=i._granularity,t.vertexFormat=m.clone(i._vertexFormat,t.vertexFormat),t.stRotation=i._stRotation,t.shadowVolume=i._shadowVolume,d(o)?(t.semiMajorAxis=i._semiMajorAxis,t.semiMinorAxis=i._semiMinorAxis,o._ellipseGeometry=new l(t),o):(t.radius=i._semiMajorAxis,new n(t))};n.createGeometry=function(e){return l.createGeometry(e._ellipseGeometry)};n.createShadowVolume=function(e,r,o){let i=e._ellipseGeometry._granularity,u=e._ellipseGeometry._ellipsoid,f=r(i,u),x=o(i,u);return new n({center:e._ellipseGeometry._center,radius:e._ellipseGeometry._semiMajorAxis,ellipsoid:u,stRotation:e._ellipseGeometry._stRotation,granularity:i,extrudedHeight:f,height:x,vertexFormat:m.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(n.prototype,{rectangle:{get:function(){return this._ellipseGeometry.rectangle}},textureCoordinateRotationPoints:{get:function(){return this._ellipseGeometry.textureCoordinateRotationPoints}}});var c=n;function g(e,r){return d(r)&&(e=c.unpack(e,r)),e._ellipseGeometry._center=a.clone(e._ellipseGeometry._center),e._ellipseGeometry._ellipsoid=s.clone(e._ellipseGeometry._ellipsoid),c.createGeometry(e)}var V=g;export{V as default}; diff --git a/public/Cesium/Workers/createCircleOutlineGeometry.js b/public/Cesium/Workers/createCircleOutlineGeometry.js new file mode 100644 index 000000000..bcffcbc16 --- /dev/null +++ b/public/Cesium/Workers/createCircleOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as n}from"./chunk-HWXX4CWK.js";import"./chunk-UP6I5URU.js";import"./chunk-GBYLG25F.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as o,d as s,f as c}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as d}from"./chunk-LEYMRMBK.js";import{e as a}from"./chunk-VTAIKJXX.js";function m(e){e=e??c.EMPTY_OBJECT;let r=e.radius;d.typeOf.number("radius",r);let l={center:e.center,semiMajorAxis:r,semiMinorAxis:r,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,numberOfVerticalLines:e.numberOfVerticalLines};this._ellipseGeometry=new n(l),this._workerName="createCircleOutlineGeometry"}m.packedLength=n.packedLength;m.pack=function(e,r,l){return d.typeOf.object("value",e),n.pack(e._ellipseGeometry,r,l)};var p=new n({center:new o,semiMajorAxis:1,semiMinorAxis:1}),i={center:new o,radius:void 0,ellipsoid:s.clone(s.UNIT_SPHERE),height:void 0,extrudedHeight:void 0,granularity:void 0,numberOfVerticalLines:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0};m.unpack=function(e,r,l){let t=n.unpack(e,r,p);return i.center=o.clone(t._center,i.center),i.ellipsoid=s.clone(t._ellipsoid,i.ellipsoid),i.height=t._height,i.extrudedHeight=t._extrudedHeight,i.granularity=t._granularity,i.numberOfVerticalLines=t._numberOfVerticalLines,a(l)?(i.semiMajorAxis=t._semiMajorAxis,i.semiMinorAxis=t._semiMinorAxis,l._ellipseGeometry=new n(i),l):(i.radius=t._semiMajorAxis,new m(i))};m.createGeometry=function(e){return n.createGeometry(e._ellipseGeometry)};var u=m;function f(e,r){return a(r)&&(e=u.unpack(e,r)),e._ellipseGeometry._center=o.clone(e._ellipseGeometry._center),e._ellipseGeometry._ellipsoid=s.clone(e._ellipseGeometry._ellipsoid),u.createGeometry(e)}var E=f;export{E as default}; diff --git a/public/Cesium/Workers/createCoplanarPolygonGeometry.js b/public/Cesium/Workers/createCoplanarPolygonGeometry.js new file mode 100644 index 000000000..c9d8f5274 --- /dev/null +++ b/public/Cesium/Workers/createCoplanarPolygonGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as et}from"./chunk-WGGIH7QW.js";import{a as Q}from"./chunk-EZUYS2JF.js";import"./chunk-CNCV5UL7.js";import{a as u}from"./chunk-AJYK4IVJ.js";import"./chunk-J6UP6FLE.js";import{a as I}from"./chunk-D6AA5QVT.js";import{a as $}from"./chunk-VW6VD53G.js";import"./chunk-DEPHB2WM.js";import"./chunk-QOUAJ6TL.js";import{a as f}from"./chunk-CYCB63OH.js";import"./chunk-TCGIRNHN.js";import"./chunk-N4VJKXZS.js";import{b as ot}from"./chunk-77IHZJJ3.js";import{a as tt}from"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as J}from"./chunk-OFUUQVMR.js";import{a as X}from"./chunk-A56XVLQR.js";import{b as W,c as Y,d as z}from"./chunk-RCV6KWXS.js";import{d as K}from"./chunk-4IW2T6GF.js";import{f as q}from"./chunk-PSPPBZWI.js";import{a as B}from"./chunk-AU7IKHOH.js";import{a as i,c as H,d as m,e as g,f as U}from"./chunk-64RSHJUE.js";import{a as V}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as G}from"./chunk-LEYMRMBK.js";import{e as d}from"./chunk-VTAIKJXX.js";var st=new i,at=new et,pt=new H,lt=new H,mt=new i,ft=new i,ut=new i,M=new i,yt=new i,ht=new i,nt=new q,dt=new g,gt=new g,Pt=new i;function wt(e,t,o,a,y,_,r,n,p){let A=e.positions,c=ot.triangulate(e.positions2D,e.holes);c.length<3&&(c=[0,1,2]);let P=J.createTypedArray(A.length,c.length);P.set(c);let E=dt;if(a!==0){let h=q.fromAxisAngle(r,a,nt);if(E=g.fromQuaternion(h,E),t.tangent||t.bitangent){h=q.fromAxisAngle(r,-a,nt);let O=g.fromQuaternion(h,gt);n=i.normalize(g.multiplyByVector(O,n,n),n),t.bitangent&&(p=i.normalize(i.cross(r,n,p),p))}}else E=g.clone(g.IDENTITY,E);let N=lt;t.st&&(N.x=o.x,N.y=o.y);let b=A.length,k=b*3,C=new Float64Array(k),L=t.normal?new Float32Array(k):void 0,D=t.tangent?new Float32Array(k):void 0,F=t.bitangent?new Float32Array(k):void 0,T=t.st?new Float32Array(b*2):void 0,j=0,R=0,l=0,S=0,s=0;for(let h=0;h<b;h++){let O=A[h];if(C[j++]=O.x,C[j++]=O.y,C[j++]=O.z,t.st)if(d(y)&&y.positions.length===b)T[s++]=y.positions[h].x,T[s++]=y.positions[h].y;else{let it=g.multiplyByVector(E,O,st),v=_(it,pt);H.subtract(v,N,v);let rt=V.clamp(v.x/o.width,0,1),ct=V.clamp(v.y/o.height,0,1);T[s++]=rt,T[s++]=ct}t.normal&&(L[R++]=r.x,L[R++]=r.y,L[R++]=r.z),t.tangent&&(D[S++]=n.x,D[S++]=n.y,D[S++]=n.z),t.bitangent&&(F[l++]=p.x,F[l++]=p.y,F[l++]=p.z)}let w=new X;return t.position&&(w.position=new z({componentDatatype:B.DOUBLE,componentsPerAttribute:3,values:C})),t.normal&&(w.normal=new z({componentDatatype:B.FLOAT,componentsPerAttribute:3,values:L})),t.tangent&&(w.tangent=new z({componentDatatype:B.FLOAT,componentsPerAttribute:3,values:D})),t.bitangent&&(w.bitangent=new z({componentDatatype:B.FLOAT,componentsPerAttribute:3,values:F})),t.st&&(w.st=new z({componentDatatype:B.FLOAT,componentsPerAttribute:2,values:T})),new Y({attributes:w,indices:P,primitiveType:W.TRIANGLES})}function x(e){e=e??U.EMPTY_OBJECT;let t=e.polygonHierarchy,o=e.textureCoordinates;G.defined("options.polygonHierarchy",t);let a=e.vertexFormat??f.DEFAULT;this._vertexFormat=f.clone(a),this._polygonHierarchy=t,this._stRotation=e.stRotation??0,this._ellipsoid=m.clone(e.ellipsoid??m.default),this._workerName="createCoplanarPolygonGeometry",this._textureCoordinates=o,this.packedLength=u.computeHierarchyPackedLength(t,i)+f.packedLength+m.packedLength+(d(o)?u.computeHierarchyPackedLength(o,H):1)+2}x.fromPositions=function(e){e=e??U.EMPTY_OBJECT,G.defined("options.positions",e.positions);let t={polygonHierarchy:{positions:e.positions},vertexFormat:e.vertexFormat,stRotation:e.stRotation,ellipsoid:e.ellipsoid,textureCoordinates:e.textureCoordinates};return new x(t)};x.pack=function(e,t,o){return G.typeOf.object("value",e),G.defined("array",t),o=o??0,o=u.packPolygonHierarchy(e._polygonHierarchy,t,o,i),m.pack(e._ellipsoid,t,o),o+=m.packedLength,f.pack(e._vertexFormat,t,o),o+=f.packedLength,t[o++]=e._stRotation,d(e._textureCoordinates)?o=u.packPolygonHierarchy(e._textureCoordinates,t,o,H):t[o++]=-1,t[o++]=e.packedLength,t};var _t=m.clone(m.UNIT_SPHERE),At=new f,bt={polygonHierarchy:{}};x.unpack=function(e,t,o){G.defined("array",e),t=t??0;let a=u.unpackPolygonHierarchy(e,t,i);t=a.startingIndex,delete a.startingIndex;let y=m.unpack(e,t,_t);t+=m.packedLength;let _=f.unpack(e,t,At);t+=f.packedLength;let r=e[t++],n=e[t]===-1?void 0:u.unpackPolygonHierarchy(e,t,H);d(n)?(t=n.startingIndex,delete n.startingIndex):t++;let p=e[t++];return d(o)||(o=new x(bt)),o._polygonHierarchy=a,o._ellipsoid=m.clone(y,o._ellipsoid),o._vertexFormat=f.clone(_,o._vertexFormat),o._stRotation=r,o._textureCoordinates=n,o.packedLength=p,o};x.createGeometry=function(e){let t=e._vertexFormat,o=e._polygonHierarchy,a=e._stRotation,y=e._textureCoordinates,_=d(y),r=o.positions;if(r=tt(r,i.equalsEpsilon,!0),r.length<3)return;let n=mt,p=ft,A=ut,c=yt,P=ht;if(!Q.computeProjectTo2DArguments(r,M,c,P))return;if(n=i.cross(c,P,n),n=i.normalize(n,n),!i.equalsEpsilon(M,i.ZERO,V.EPSILON6)){let s=e._ellipsoid.geodeticSurfaceNormal(M,Pt);i.dot(n,s)<0&&(n=i.negate(n,n),c=i.negate(c,c))}let N=Q.createProjectPointsTo2DFunction(M,c,P),b=Q.createProjectPointTo2DFunction(M,c,P);t.tangent&&(p=i.clone(c,p)),t.bitangent&&(A=i.clone(P,A));let k=u.polygonsFromHierarchy(o,_,N,!1),C=k.hierarchy,L=k.polygons,D=function(s){return s},F=_?u.polygonsFromHierarchy(y,!0,D,!1).polygons:void 0;if(C.length===0)return;r=C[0].outerRing;let T=K.fromPoints(r),j=u.computeBoundingRectangle(n,b,r,a,at),R=[];for(let s=0;s<L.length;s++){let w=new I({geometry:wt(L[s],t,j,a,_?F[s]:void 0,b,n,p,A)});R.push(w)}let l=$.combineInstances(R)[0];l.attributes.position.values=new Float64Array(l.attributes.position.values),l.indices=J.createTypedArray(l.attributes.position.values.length/3,l.indices);let S=l.attributes;return t.position||delete S.position,new Y({attributes:S,indices:l.indices,primitiveType:l.primitiveType,boundingSphere:T})};var Z=x;function kt(e,t){return d(t)&&(e=Z.unpack(e,t)),Z.createGeometry(e)}var Xt=kt;export{Xt as default}; diff --git a/public/Cesium/Workers/createCoplanarPolygonOutlineGeometry.js b/public/Cesium/Workers/createCoplanarPolygonOutlineGeometry.js new file mode 100644 index 000000000..4aca4adfa --- /dev/null +++ b/public/Cesium/Workers/createCoplanarPolygonOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as T}from"./chunk-EZUYS2JF.js";import"./chunk-CNCV5UL7.js";import{a as l}from"./chunk-AJYK4IVJ.js";import"./chunk-J6UP6FLE.js";import{a as G}from"./chunk-D6AA5QVT.js";import{a as C}from"./chunk-VW6VD53G.js";import"./chunk-DEPHB2WM.js";import"./chunk-QOUAJ6TL.js";import"./chunk-TCGIRNHN.js";import"./chunk-N4VJKXZS.js";import"./chunk-77IHZJJ3.js";import{a as L}from"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as w}from"./chunk-OFUUQVMR.js";import{a as O}from"./chunk-A56XVLQR.js";import{b,c as d,d as k}from"./chunk-RCV6KWXS.js";import{d as P}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as H}from"./chunk-AU7IKHOH.js";import{a as y,d as g,f as u}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as m}from"./chunk-LEYMRMBK.js";import{e as f}from"./chunk-VTAIKJXX.js";function E(o){let e=o.length,t=new Float64Array(e*3),i=w.createTypedArray(e,e*2),r=0,a=0;for(let n=0;n<e;n++){let p=o[n];t[r++]=p.x,t[r++]=p.y,t[r++]=p.z,i[a++]=n,i[a++]=(n+1)%e}let s=new O({position:new k({componentDatatype:H.DOUBLE,componentsPerAttribute:3,values:t})});return new d({attributes:s,indices:i,primitiveType:b.LINES})}function c(o){o=o??u.EMPTY_OBJECT;let e=o.polygonHierarchy;m.defined("options.polygonHierarchy",e),this._polygonHierarchy=e,this._workerName="createCoplanarPolygonOutlineGeometry",this.packedLength=l.computeHierarchyPackedLength(e,y)+1}c.fromPositions=function(o){o=o??u.EMPTY_OBJECT,m.defined("options.positions",o.positions);let e={polygonHierarchy:{positions:o.positions}};return new c(e)};c.pack=function(o,e,t){return m.typeOf.object("value",o),m.defined("array",e),t=t??0,t=l.packPolygonHierarchy(o._polygonHierarchy,e,t,y),e[t]=o.packedLength,e};var v={polygonHierarchy:{}};c.unpack=function(o,e,t){m.defined("array",o),e=e??0;let i=l.unpackPolygonHierarchy(o,e,y);e=i.startingIndex,delete i.startingIndex;let r=o[e];return f(t)||(t=new c(v)),t._polygonHierarchy=i,t.packedLength=r,t};c.createGeometry=function(o){let e=o._polygonHierarchy,t=e.positions;if(t=L(t,y.equalsEpsilon,!0),t.length<3||!T.validOutline(t))return;let r=l.polygonOutlinesFromHierarchy(e,!1);if(r.length===0)return;let a=[];for(let p=0;p<r.length;p++){let _=new G({geometry:E(r[p])});a.push(_)}let s=C.combineInstances(a)[0],n=P.fromPoints(e.positions);return new d({attributes:s.attributes,indices:s.indices,primitiveType:s.primitiveType,boundingSphere:n})};var h=c;function A(o,e){return f(e)&&(o=h.unpack(o,e)),o._ellipsoid=g.clone(o._ellipsoid),h.createGeometry(o)}var Z=A;export{Z as default}; diff --git a/public/Cesium/Workers/createCorridorGeometry.js b/public/Cesium/Workers/createCorridorGeometry.js new file mode 100644 index 000000000..625a5858b --- /dev/null +++ b/public/Cesium/Workers/createCorridorGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as M}from"./chunk-WWA5PL4H.js";import{a as ut}from"./chunk-B4AA3ARO.js";import"./chunk-XRL4AVS5.js";import"./chunk-U4IEOH5K.js";import{a as bt}from"./chunk-GBYLG25F.js";import{a as J}from"./chunk-CYCB63OH.js";import"./chunk-TCGIRNHN.js";import"./chunk-N4VJKXZS.js";import{b as _t}from"./chunk-77IHZJJ3.js";import{a as Pt}from"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as Nt}from"./chunk-OFUUQVMR.js";import{a as Dt}from"./chunk-A56XVLQR.js";import{b as Mt,c as Ct,d as F}from"./chunk-RCV6KWXS.js";import{d as St}from"./chunk-4IW2T6GF.js";import{h as Et}from"./chunk-PSPPBZWI.js";import{a as v}from"./chunk-AU7IKHOH.js";import{a as o,b as At,d as Y,f as Tt}from"./chunk-64RSHJUE.js";import{a as it}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as ot}from"./chunk-LEYMRMBK.js";import{e as Q}from"./chunk-VTAIKJXX.js";var Rt=new o,kt=new o,yt=new o,wt=new o,jt=new o,Ht=new o,st=new o,dt=new o;function Ut(t,e){for(let i=0;i<t.length;i++)t[i]=e.scaleToGeodeticSurface(t[i],t[i]);return t}function X(t,e,i,l,d,f){let h=t.normals,O=t.tangents,g=t.bitangents,r=o.normalize(o.cross(i,e,st),st);f.normal&&M.addAttribute(h,e,l,d),f.tangent&&M.addAttribute(O,r,l,d),f.bitangent&&M.addAttribute(g,i,l,d)}function Bt(t,e,i){let l=t.positions,d=t.corners,f=t.endPositions,h=t.lefts,O=t.normals,g=new Dt,r,a=0,s=0,n,A=0,u;for(n=0;n<l.length;n+=2)u=l[n].length-3,a+=u,A+=u*2,s+=l[n+1].length-3;for(a+=3,s+=3,n=0;n<d.length;n++){r=d[n];let c=d[n].leftPositions;Q(c)?(u=c.length,a+=u,A+=u):(u=d[n].rightPositions.length,s+=u,A+=u)}let b=Q(f),p;b&&(p=f[0].length-3,a+=p,s+=p,p/=3,A+=p*6);let z=a+s,m=new Float64Array(z),D=e.normal?new Float32Array(z):void 0,V=e.tangent?new Float32Array(z):void 0,rt=e.bitangent?new Float32Array(z):void 0,R={normals:D,tangents:V,bitangents:rt},y=0,E=z-1,S,C,H,q,P=Rt,w=kt,et,nt,pt=p/2,_=Nt.createTypedArray(z/3,A),T=0;if(b){nt=yt,et=wt;let c=f[0];for(P=o.fromArray(O,0,P),w=o.fromArray(h,0,w),n=0;n<pt;n++)nt=o.fromArray(c,(pt-1-n)*3,nt),et=o.fromArray(c,(pt+n)*3,et),M.addAttribute(m,et,y),M.addAttribute(m,nt,void 0,E),X(R,P,w,y,E,e),C=y/3,q=C+1,S=(E-2)/3,H=S-1,_[T++]=S,_[T++]=C,_[T++]=H,_[T++]=H,_[T++]=C,_[T++]=q,y+=3,E-=3}let mt=0,ft=0,at=l[mt++],j=l[mt++];m.set(at,y),m.set(j,E-j.length+1),w=o.fromArray(h,ft,w);let lt,ct;for(u=j.length-3,n=0;n<u;n+=3)lt=i.geodeticSurfaceNormal(o.fromArray(at,n,st),st),ct=i.geodeticSurfaceNormal(o.fromArray(j,u-n,dt),dt),P=o.normalize(o.add(lt,ct,P),P),X(R,P,w,y,E,e),C=y/3,q=C+1,S=(E-2)/3,H=S-1,_[T++]=S,_[T++]=C,_[T++]=H,_[T++]=H,_[T++]=C,_[T++]=q,y+=3,E-=3;for(lt=i.geodeticSurfaceNormal(o.fromArray(at,u,st),st),ct=i.geodeticSurfaceNormal(o.fromArray(j,u,dt),dt),P=o.normalize(o.add(lt,ct,P),P),ft+=3,n=0;n<d.length;n++){let c;r=d[n];let Z=r.leftPositions,$=r.rightPositions,L,U,N=Ht,k=yt,B=wt;if(P=o.fromArray(O,ft,P),Q(Z)){for(X(R,P,w,void 0,E,e),E-=3,L=q,U=H,c=0;c<Z.length/3;c++)N=o.fromArray(Z,c*3,N),_[T++]=L,_[T++]=U-c-1,_[T++]=U-c,M.addAttribute(m,N,void 0,E),k=o.fromArray(m,(U-c-1)*3,k),B=o.fromArray(m,L*3,B),w=o.normalize(o.subtract(k,B,w),w),X(R,P,w,void 0,E,e),E-=3;N=o.fromArray(m,L*3,N),k=o.subtract(o.fromArray(m,U*3,k),N,k),B=o.subtract(o.fromArray(m,(U-c)*3,B),N,B),w=o.normalize(o.add(k,B,w),w),X(R,P,w,y,void 0,e),y+=3}else{for(X(R,P,w,y,void 0,e),y+=3,L=H,U=q,c=0;c<$.length/3;c++)N=o.fromArray($,c*3,N),_[T++]=L,_[T++]=U+c,_[T++]=U+c+1,M.addAttribute(m,N,y),k=o.fromArray(m,L*3,k),B=o.fromArray(m,(U+c)*3,B),w=o.normalize(o.subtract(k,B,w),w),X(R,P,w,y,void 0,e),y+=3;N=o.fromArray(m,L*3,N),k=o.subtract(o.fromArray(m,(U+c)*3,k),N,k),B=o.subtract(o.fromArray(m,U*3,B),N,B),w=o.normalize(o.negate(o.add(B,k,w),w),w),X(R,P,w,void 0,E,e),E-=3}for(at=l[mt++],j=l[mt++],at.splice(0,3),j.splice(j.length-3,3),m.set(at,y),m.set(j,E-j.length+1),u=j.length-3,ft+=3,w=o.fromArray(h,ft,w),c=0;c<j.length;c+=3)lt=i.geodeticSurfaceNormal(o.fromArray(at,c,st),st),ct=i.geodeticSurfaceNormal(o.fromArray(j,u-c,dt),dt),P=o.normalize(o.add(lt,ct,P),P),X(R,P,w,y,E,e),q=y/3,C=q-1,H=(E-2)/3,S=H+1,_[T++]=S,_[T++]=C,_[T++]=H,_[T++]=H,_[T++]=C,_[T++]=q,y+=3,E-=3;y-=3,E+=3}if(P=o.fromArray(O,O.length-3,P),X(R,P,w,y,E,e),b){y+=3,E-=3,nt=yt,et=wt;let c=f[1];for(n=0;n<pt;n++)nt=o.fromArray(c,(p-n-1)*3,nt),et=o.fromArray(c,n*3,et),M.addAttribute(m,nt,void 0,E),M.addAttribute(m,et,y),X(R,P,w,y,E,e),q=y/3,C=q-1,H=(E-2)/3,S=H+1,_[T++]=S,_[T++]=C,_[T++]=H,_[T++]=H,_[T++]=C,_[T++]=q,y+=3,E-=3}if(g.position=new F({componentDatatype:v.DOUBLE,componentsPerAttribute:3,values:m}),e.st){let c=new Float32Array(z/3*2),Z,$,L=0;if(b){a/=3,s/=3;let U=Math.PI/(p+1);$=1/(a-p+1),Z=1/(s-p+1);let N,k=p/2;for(n=k+1;n<p+1;n++)N=it.PI_OVER_TWO+U*n,c[L++]=Z*(1+Math.cos(N)),c[L++]=.5*(1+Math.sin(N));for(n=1;n<s-p+1;n++)c[L++]=n*Z,c[L++]=0;for(n=p;n>k;n--)N=it.PI_OVER_TWO-n*U,c[L++]=1-Z*(1+Math.cos(N)),c[L++]=.5*(1+Math.sin(N));for(n=k;n>0;n--)N=it.PI_OVER_TWO-U*n,c[L++]=1-$*(1+Math.cos(N)),c[L++]=.5*(1+Math.sin(N));for(n=a-p;n>0;n--)c[L++]=n*$,c[L++]=1;for(n=1;n<k+1;n++)N=it.PI_OVER_TWO+U*n,c[L++]=$*(1+Math.cos(N)),c[L++]=.5*(1+Math.sin(N))}else{for(a/=3,s/=3,$=1/(a-1),Z=1/(s-1),n=0;n<s;n++)c[L++]=n*Z,c[L++]=0;for(n=a;n>0;n--)c[L++]=(n-1)*$,c[L++]=1}g.st=new F({componentDatatype:v.FLOAT,componentsPerAttribute:2,values:c})}return e.normal&&(g.normal=new F({componentDatatype:v.FLOAT,componentsPerAttribute:3,values:R.normals})),e.tangent&&(g.tangent=new F({componentDatatype:v.FLOAT,componentsPerAttribute:3,values:R.tangents})),e.bitangent&&(g.bitangent=new F({componentDatatype:v.FLOAT,componentsPerAttribute:3,values:R.bitangents})),{attributes:g,indices:_}}function qt(t,e){if(!e.normal&&!e.tangent&&!e.bitangent&&!e.st)return t;let i=t.position.values,l,d;(e.normal||e.bitangent)&&(l=t.normal.values,d=t.bitangent.values);let f=t.position.values.length/18,h=f*3,O=f*2,g=h*2,r;if(e.normal||e.bitangent||e.tangent){let a=e.normal?new Float32Array(h*6):void 0,s=e.tangent?new Float32Array(h*6):void 0,n=e.bitangent?new Float32Array(h*6):void 0,A=Rt,u=kt,b=yt,p=wt,z=jt,m=Ht,D=g;for(r=0;r<h;r+=3){let V=D+g;A=o.fromArray(i,r,A),u=o.fromArray(i,r+h,u),b=o.fromArray(i,(r+3)%h,b),u=o.subtract(u,A,u),b=o.subtract(b,A,b),p=o.normalize(o.cross(u,b,p),p),e.normal&&(M.addAttribute(a,p,V),M.addAttribute(a,p,V+3),M.addAttribute(a,p,D),M.addAttribute(a,p,D+3)),(e.tangent||e.bitangent)&&(m=o.fromArray(l,r,m),e.bitangent&&(M.addAttribute(n,m,V),M.addAttribute(n,m,V+3),M.addAttribute(n,m,D),M.addAttribute(n,m,D+3)),e.tangent&&(z=o.normalize(o.cross(m,p,z),z),M.addAttribute(s,z,V),M.addAttribute(s,z,V+3),M.addAttribute(s,z,D),M.addAttribute(s,z,D+3))),D+=6}if(e.normal){for(a.set(l),r=0;r<h;r+=3)a[r+h]=-l[r],a[r+h+1]=-l[r+1],a[r+h+2]=-l[r+2];t.normal.values=a}else t.normal=void 0;if(e.bitangent?(n.set(d),n.set(d,h),t.bitangent.values=n):t.bitangent=void 0,e.tangent){let V=t.tangent.values;s.set(V),s.set(V,h),t.tangent.values=s}}if(e.st){let a=t.st.values,s=new Float32Array(O*6);s.set(a),s.set(a,O);let n=O*2;for(let A=0;A<2;A++){for(s[n++]=a[0],s[n++]=a[1],r=2;r<O;r+=2){let u=a[r],b=a[r+1];s[n++]=u,s[n++]=b,s[n++]=u,s[n++]=b}s[n++]=a[0],s[n++]=a[1]}t.st.values=s}return t}function Ot(t,e,i){i[e++]=t[0],i[e++]=t[1],i[e++]=t[2];for(let l=3;l<t.length;l+=3){let d=t[l],f=t[l+1],h=t[l+2];i[e++]=d,i[e++]=f,i[e++]=h,i[e++]=d,i[e++]=f,i[e++]=h}return i[e++]=t[0],i[e++]=t[1],i[e++]=t[2],i}function Jt(t,e){let i=new J({position:e.position,normal:e.normal||e.bitangent||t.shadowVolume,tangent:e.tangent,bitangent:e.normal||e.bitangent,st:e.st}),l=t.ellipsoid,d=M.computePositions(t),f=Bt(d,i,l),h=t.height,O=t.extrudedHeight,g=f.attributes,r=f.indices,a=g.position.values,s=a.length,n=new Float64Array(s*6),A=new Float64Array(s);A.set(a);let u=new Float64Array(s*4);a=_t.scaleToGeodeticHeight(a,h,l),u=Ot(a,0,u),A=_t.scaleToGeodeticHeight(A,O,l),u=Ot(A,s*2,u),n.set(a),n.set(A,s),n.set(u,s*2),g.position.values=n,g=qt(g,e);let b,p=s/3;if(t.shadowVolume){let S=g.normal.values;s=S.length;let C=new Float32Array(s*6);for(b=0;b<s;b++)S[b]=-S[b];C.set(S,s),C=Ot(S,s*4,C),g.extrudeDirection=new F({componentDatatype:v.FLOAT,componentsPerAttribute:3,values:C}),e.normal||(g.normal=void 0)}if(Q(t.offsetAttribute)){let S=new Uint8Array(p*6);if(t.offsetAttribute===bt.TOP)S=S.fill(1,0,p).fill(1,p*2,p*4);else{let C=t.offsetAttribute===bt.NONE?0:1;S=S.fill(C)}g.applyOffset=new F({componentDatatype:v.UNSIGNED_BYTE,componentsPerAttribute:1,values:S})}let z=r.length,m=p+p,D=Nt.createTypedArray(n.length/3,z*2+m*3);D.set(r);let V=z;for(b=0;b<z;b+=3){let S=r[b],C=r[b+1],H=r[b+2];D[V++]=H+p,D[V++]=C+p,D[V++]=S+p}let rt,R,y,E;for(b=0;b<m;b+=2)rt=b+m,R=rt+m,y=rt+1,E=R+1,D[V++]=rt,D[V++]=R,D[V++]=y,D[V++]=y,D[V++]=R,D[V++]=E;return{attributes:g,indices:D}}var Vt=new o,ht=new o,K=new At;function zt(t,e,i,l,d,f){let h=o.subtract(e,t,Vt);o.normalize(h,h);let O=i.geodeticSurfaceNormal(t,ht),g=o.cross(h,O,Vt);o.multiplyByScalar(g,l,g);let r=d.latitude,a=d.longitude,s=f.latitude,n=f.longitude;o.add(t,g,ht),i.cartesianToCartographic(ht,K);let A=K.latitude,u=K.longitude;r=Math.min(r,A),a=Math.min(a,u),s=Math.max(s,A),n=Math.max(n,u),o.subtract(t,g,ht),i.cartesianToCartographic(ht,K),A=K.latitude,u=K.longitude,r=Math.min(r,A),a=Math.min(a,u),s=Math.max(s,A),n=Math.max(n,u),d.latitude=r,d.longitude=a,f.latitude=s,f.longitude=n}var G=new o,gt=new o,I=new At,W=new At;function Yt(t,e,i,l,d){t=Ut(t,e);let f=Pt(t,o.equalsEpsilon),h=f.length;if(h<2||i<=0)return new Et;let O=i*.5;I.latitude=Number.POSITIVE_INFINITY,I.longitude=Number.POSITIVE_INFINITY,W.latitude=Number.NEGATIVE_INFINITY,W.longitude=Number.NEGATIVE_INFINITY;let g,r;if(l===ut.ROUNDED){let n=f[0];o.subtract(n,f[1],G),o.normalize(G,G),o.multiplyByScalar(G,O,G),o.add(n,G,gt),e.cartesianToCartographic(gt,K),g=K.latitude,r=K.longitude,I.latitude=Math.min(I.latitude,g),I.longitude=Math.min(I.longitude,r),W.latitude=Math.max(W.latitude,g),W.longitude=Math.max(W.longitude,r)}for(let n=0;n<h-1;++n)zt(f[n],f[n+1],e,O,I,W);let a=f[h-1];o.subtract(a,f[h-2],G),o.normalize(G,G),o.multiplyByScalar(G,O,G),o.add(a,G,gt),zt(a,gt,e,O,I,W),l===ut.ROUNDED&&(e.cartesianToCartographic(gt,K),g=K.latitude,r=K.longitude,I.latitude=Math.min(I.latitude,g),I.longitude=Math.min(I.longitude,r),W.latitude=Math.max(W.latitude,g),W.longitude=Math.max(W.longitude,r));let s=Q(d)?d:new Et;return s.north=W.latitude,s.south=I.latitude,s.east=W.longitude,s.west=I.longitude,s}function tt(t){t=t??Tt.EMPTY_OBJECT;let e=t.positions,i=t.width;ot.defined("options.positions",e),ot.defined("options.width",i);let l=t.height??0,d=t.extrudedHeight??l;this._positions=e,this._ellipsoid=Y.clone(t.ellipsoid??Y.default),this._vertexFormat=J.clone(t.vertexFormat??J.DEFAULT),this._width=i,this._height=Math.max(l,d),this._extrudedHeight=Math.min(l,d),this._cornerType=t.cornerType??ut.ROUNDED,this._granularity=t.granularity??it.RADIANS_PER_DEGREE,this._shadowVolume=t.shadowVolume??!1,this._workerName="createCorridorGeometry",this._offsetAttribute=t.offsetAttribute,this._rectangle=void 0,this.packedLength=1+e.length*o.packedLength+Y.packedLength+J.packedLength+7}tt.pack=function(t,e,i){ot.defined("value",t),ot.defined("array",e),i=i??0;let l=t._positions,d=l.length;e[i++]=d;for(let f=0;f<d;++f,i+=o.packedLength)o.pack(l[f],e,i);return Y.pack(t._ellipsoid,e,i),i+=Y.packedLength,J.pack(t._vertexFormat,e,i),i+=J.packedLength,e[i++]=t._width,e[i++]=t._height,e[i++]=t._extrudedHeight,e[i++]=t._cornerType,e[i++]=t._granularity,e[i++]=t._shadowVolume?1:0,e[i]=t._offsetAttribute??-1,e};var It=Y.clone(Y.UNIT_SPHERE),Wt=new J,x={positions:void 0,ellipsoid:It,vertexFormat:Wt,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0,shadowVolume:void 0,offsetAttribute:void 0};tt.unpack=function(t,e,i){ot.defined("array",t),e=e??0;let l=t[e++],d=new Array(l);for(let u=0;u<l;++u,e+=o.packedLength)d[u]=o.unpack(t,e);let f=Y.unpack(t,e,It);e+=Y.packedLength;let h=J.unpack(t,e,Wt);e+=J.packedLength;let O=t[e++],g=t[e++],r=t[e++],a=t[e++],s=t[e++],n=t[e++]===1,A=t[e];return Q(i)?(i._positions=d,i._ellipsoid=Y.clone(f,i._ellipsoid),i._vertexFormat=J.clone(h,i._vertexFormat),i._width=O,i._height=g,i._extrudedHeight=r,i._cornerType=a,i._granularity=s,i._shadowVolume=n,i._offsetAttribute=A===-1?void 0:A,i):(x.positions=d,x.width=O,x.height=g,x.extrudedHeight=r,x.cornerType=a,x.granularity=s,x.shadowVolume=n,x.offsetAttribute=A===-1?void 0:A,new tt(x))};tt.computeRectangle=function(t,e){t=t??Tt.EMPTY_OBJECT;let i=t.positions,l=t.width;ot.defined("options.positions",i),ot.defined("options.width",l);let d=t.ellipsoid??Y.default,f=t.cornerType??ut.ROUNDED;return Yt(i,d,l,f,e)};tt.createGeometry=function(t){let e=t._positions,i=t._width,l=t._ellipsoid;e=Ut(e,l);let d=Pt(e,o.equalsEpsilon);if(d.length<2||i<=0)return;let f=t._height,h=t._extrudedHeight,O=!it.equalsEpsilon(f,h,0,it.EPSILON2),g=t._vertexFormat,r={ellipsoid:l,positions:d,width:i,cornerType:t._cornerType,granularity:t._granularity,saveAttributes:!0},a;if(O)r.height=f,r.extrudedHeight=h,r.shadowVolume=t._shadowVolume,r.offsetAttribute=t._offsetAttribute,a=Jt(r,g);else{let A=M.computePositions(r);if(a=Bt(A,g,l),a.attributes.position.values=_t.scaleToGeodeticHeight(a.attributes.position.values,f,l),Q(t._offsetAttribute)){let u=t._offsetAttribute===bt.NONE?0:1,b=a.attributes.position.values.length,p=new Uint8Array(b/3).fill(u);a.attributes.applyOffset=new F({componentDatatype:v.UNSIGNED_BYTE,componentsPerAttribute:1,values:p})}}let s=a.attributes,n=St.fromVertices(s.position.values,void 0,3);return g.position||(a.attributes.position.values=void 0),new Ct({attributes:s,indices:a.indices,primitiveType:Mt.TRIANGLES,boundingSphere:n,offsetAttribute:t._offsetAttribute})};tt.createShadowVolume=function(t,e,i){let l=t._granularity,d=t._ellipsoid,f=e(l,d),h=i(l,d);return new tt({positions:t._positions,width:t._width,cornerType:t._cornerType,ellipsoid:d,granularity:l,extrudedHeight:f,height:h,vertexFormat:J.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(tt.prototype,{rectangle:{get:function(){return Q(this._rectangle)||(this._rectangle=Yt(this._positions,this._ellipsoid,this._width,this._cornerType)),this._rectangle}},textureCoordinateRotationPoints:{get:function(){return[0,0,0,1,1,0]}}});var Lt=tt;function Gt(t,e){return Q(e)&&(t=Lt.unpack(t,e)),t._ellipsoid=Y.clone(t._ellipsoid),Lt.createGeometry(t)}var Ae=Gt;export{Ae as default}; diff --git a/public/Cesium/Workers/createCorridorOutlineGeometry.js b/public/Cesium/Workers/createCorridorOutlineGeometry.js new file mode 100644 index 000000000..0212fce1d --- /dev/null +++ b/public/Cesium/Workers/createCorridorOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as C}from"./chunk-WWA5PL4H.js";import{a as Q}from"./chunk-B4AA3ARO.js";import"./chunk-XRL4AVS5.js";import"./chunk-U4IEOH5K.js";import{a as J}from"./chunk-GBYLG25F.js";import"./chunk-TCGIRNHN.js";import"./chunk-N4VJKXZS.js";import{b as K}from"./chunk-77IHZJJ3.js";import{a as it}from"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as X}from"./chunk-OFUUQVMR.js";import{a as et}from"./chunk-A56XVLQR.js";import{b as I,c as tt,d as z}from"./chunk-RCV6KWXS.js";import{d as x}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as q}from"./chunk-AU7IKHOH.js";import{a as A,d as P,f as $}from"./chunk-64RSHJUE.js";import{a as Y}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as B}from"./chunk-LEYMRMBK.js";import{e as N}from"./chunk-VTAIKJXX.js";var ot=new A,nt=new A,lt=new A;function ft(t,i){for(let e=0;e<t.length;e++)t[e]=i.scaleToGeodeticSurface(t[e],t[e]);return t}function st(t,i){let e=[],r=t.positions,h=t.corners,m=t.endPositions,H=new et,y,u=0,p=0,o,g=0,d;for(o=0;o<r.length;o+=2)d=r[o].length-3,u+=d,g+=d/3*4,p+=r[o+1].length-3;for(u+=3,p+=3,o=0;o<h.length;o++){y=h[o];let c=h[o].leftPositions;N(c)?(d=c.length,u+=d,g+=d/3*2):(d=h[o].rightPositions.length,p+=d,g+=d/3*2)}let _=N(m),w;_&&(w=m[0].length-3,u+=w,p+=w,w/=3,g+=w*4);let T=u+p,b=new Float64Array(T),n=0,s=T-1,a,E,L,k,S,U,j=w/2,l=X.createTypedArray(T/3,g+4),f=0;if(l[f++]=n/3,l[f++]=(s-2)/3,_){e.push(n/3),U=ot,S=nt;let c=m[0];for(o=0;o<j;o++)U=A.fromArray(c,(j-1-o)*3,U),S=A.fromArray(c,(j+o)*3,S),C.addAttribute(b,S,n),C.addAttribute(b,U,void 0,s),E=n/3,k=E+1,a=(s-2)/3,L=a-1,l[f++]=a,l[f++]=L,l[f++]=E,l[f++]=k,n+=3,s-=3}let V=0,F=r[V++],D=r[V++];for(b.set(F,n),b.set(D,s-D.length+1),d=D.length-3,e.push(n/3,(s-2)/3),o=0;o<d;o+=3)E=n/3,k=E+1,a=(s-2)/3,L=a-1,l[f++]=a,l[f++]=L,l[f++]=E,l[f++]=k,n+=3,s-=3;for(o=0;o<h.length;o++){let c;y=h[o];let G=y.leftPositions,W=y.rightPositions,O,R=lt;if(N(G)){for(s-=3,O=L,e.push(k),c=0;c<G.length/3;c++)R=A.fromArray(G,c*3,R),l[f++]=O-c-1,l[f++]=O-c,C.addAttribute(b,R,void 0,s),s-=3;e.push(O-Math.floor(G.length/6)),i===Q.BEVELED&&e.push((s-2)/3+1),n+=3}else{for(n+=3,O=k,e.push(L),c=0;c<W.length/3;c++)R=A.fromArray(W,c*3,R),l[f++]=O+c,l[f++]=O+c+1,C.addAttribute(b,R,n),n+=3;e.push(O+Math.floor(W.length/6)),i===Q.BEVELED&&e.push(n/3-1),s-=3}for(F=r[V++],D=r[V++],F.splice(0,3),D.splice(D.length-3,3),b.set(F,n),b.set(D,s-D.length+1),d=D.length-3,c=0;c<D.length;c+=3)k=n/3,E=k-1,L=(s-2)/3,a=L+1,l[f++]=a,l[f++]=L,l[f++]=E,l[f++]=k,n+=3,s-=3;n-=3,s+=3,e.push(n/3,(s-2)/3)}if(_){n+=3,s-=3,U=ot,S=nt;let c=m[1];for(o=0;o<j;o++)U=A.fromArray(c,(w-o-1)*3,U),S=A.fromArray(c,o*3,S),C.addAttribute(b,U,void 0,s),C.addAttribute(b,S,n),k=n/3,E=k-1,L=(s-2)/3,a=L+1,l[f++]=a,l[f++]=L,l[f++]=E,l[f++]=k,n+=3,s-=3;e.push(n/3)}else e.push(n/3,(s-2)/3);return l[f++]=n/3,l[f++]=(s-2)/3,H.position=new z({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:b}),{attributes:H,indices:l,wallIndices:e}}function ct(t){let i=t.ellipsoid,e=C.computePositions(t),r=st(e,t.cornerType),h=r.wallIndices,m=t.height,H=t.extrudedHeight,y=r.attributes,u=r.indices,p=y.position.values,o=p.length,g=new Float64Array(o);g.set(p);let d=new Float64Array(o*2);if(p=K.scaleToGeodeticHeight(p,m,i),g=K.scaleToGeodeticHeight(g,H,i),d.set(p),d.set(g,o),y.position.values=d,o/=3,N(t.offsetAttribute)){let a=new Uint8Array(o*2);if(t.offsetAttribute===J.TOP)a=a.fill(1,0,o);else{let E=t.offsetAttribute===J.NONE?0:1;a=a.fill(E)}y.applyOffset=new z({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:a})}let _,w=u.length,T=X.createTypedArray(d.length/3,(w+h.length)*2);T.set(u);let b=w;for(_=0;_<w;_+=2){let a=u[_],E=u[_+1];T[b++]=a+o,T[b++]=E+o}let n,s;for(_=0;_<h.length;_++)n=h[_],s=n+o,T[b++]=n,T[b++]=s;return{attributes:y,indices:T}}function M(t){t=t??$.EMPTY_OBJECT;let i=t.positions,e=t.width;B.typeOf.object("options.positions",i),B.typeOf.number("options.width",e);let r=t.height??0,h=t.extrudedHeight??r;this._positions=i,this._ellipsoid=P.clone(t.ellipsoid??P.default),this._width=e,this._height=Math.max(r,h),this._extrudedHeight=Math.min(r,h),this._cornerType=t.cornerType??Q.ROUNDED,this._granularity=t.granularity??Y.RADIANS_PER_DEGREE,this._offsetAttribute=t.offsetAttribute,this._workerName="createCorridorOutlineGeometry",this.packedLength=1+i.length*A.packedLength+P.packedLength+6}M.pack=function(t,i,e){B.typeOf.object("value",t),B.typeOf.object("array",i),e=e??0;let r=t._positions,h=r.length;i[e++]=h;for(let m=0;m<h;++m,e+=A.packedLength)A.pack(r[m],i,e);return P.pack(t._ellipsoid,i,e),e+=P.packedLength,i[e++]=t._width,i[e++]=t._height,i[e++]=t._extrudedHeight,i[e++]=t._cornerType,i[e++]=t._granularity,i[e]=t._offsetAttribute??-1,i};var rt=P.clone(P.UNIT_SPHERE),v={positions:void 0,ellipsoid:rt,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0,offsetAttribute:void 0};M.unpack=function(t,i,e){B.typeOf.object("array",t),i=i??0;let r=t[i++],h=new Array(r);for(let d=0;d<r;++d,i+=A.packedLength)h[d]=A.unpack(t,i);let m=P.unpack(t,i,rt);i+=P.packedLength;let H=t[i++],y=t[i++],u=t[i++],p=t[i++],o=t[i++],g=t[i];return N(e)?(e._positions=h,e._ellipsoid=P.clone(m,e._ellipsoid),e._width=H,e._height=y,e._extrudedHeight=u,e._cornerType=p,e._granularity=o,e._offsetAttribute=g===-1?void 0:g,e):(v.positions=h,v.width=H,v.height=y,v.extrudedHeight=u,v.cornerType=p,v.granularity=o,v.offsetAttribute=g===-1?void 0:g,new M(v))};M.createGeometry=function(t){let i=t._positions,e=t._width,r=t._ellipsoid;i=ft(i,r);let h=it(i,A.equalsEpsilon);if(h.length<2||e<=0)return;let m=t._height,H=t._extrudedHeight,y=!Y.equalsEpsilon(m,H,0,Y.EPSILON2),u={ellipsoid:r,positions:h,width:e,cornerType:t._cornerType,granularity:t._granularity,saveAttributes:!1},p;if(y)u.height=m,u.extrudedHeight=H,u.offsetAttribute=t._offsetAttribute,p=ct(u);else{let d=C.computePositions(u);if(p=st(d,u.cornerType),p.attributes.position.values=K.scaleToGeodeticHeight(p.attributes.position.values,m,r),N(t._offsetAttribute)){let _=p.attributes.position.values.length,w=t._offsetAttribute===J.NONE?0:1,T=new Uint8Array(_/3).fill(w);p.attributes.applyOffset=new z({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:T})}}let o=p.attributes,g=x.fromVertices(o.position.values,void 0,3);return new tt({attributes:o,indices:p.indices,primitiveType:I.LINES,boundingSphere:g,offsetAttribute:t._offsetAttribute})};var Z=M;function ht(t,i){return N(i)&&(t=Z.unpack(t,i)),t._ellipsoid=P.clone(t._ellipsoid),Z.createGeometry(t)}var Ot=ht;export{Ot as default}; diff --git a/public/Cesium/Workers/createCylinderGeometry.js b/public/Cesium/Workers/createCylinderGeometry.js new file mode 100644 index 000000000..3a7689456 --- /dev/null +++ b/public/Cesium/Workers/createCylinderGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as r}from"./chunk-GILIDQNQ.js";import"./chunk-ARG42DC4.js";import"./chunk-GBYLG25F.js";import"./chunk-CYCB63OH.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{e as o}from"./chunk-VTAIKJXX.js";function i(e,t){return o(t)&&(e=r.unpack(e,t)),r.createGeometry(e)}var a=i;export{a as default}; diff --git a/public/Cesium/Workers/createCylinderOutlineGeometry.js b/public/Cesium/Workers/createCylinderOutlineGeometry.js new file mode 100644 index 000000000..bded74c7b --- /dev/null +++ b/public/Cesium/Workers/createCylinderOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as M}from"./chunk-ARG42DC4.js";import{a as L}from"./chunk-GBYLG25F.js";import{a as N}from"./chunk-OFUUQVMR.js";import{a as k}from"./chunk-A56XVLQR.js";import{b as D,c as P,d as A}from"./chunk-RCV6KWXS.js";import{d as y}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as R}from"./chunk-AU7IKHOH.js";import{a as T,c as _,f as S}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as E,b as m}from"./chunk-LEYMRMBK.js";import{e as b}from"./chunk-VTAIKJXX.js";var V=new _;function d(t){t=t??S.EMPTY_OBJECT;let e=t.length,i=t.topRadius,f=t.bottomRadius,o=t.slices??128,u=Math.max(t.numberOfVerticalLines??16,0);if(m.typeOf.number("options.positions",e),m.typeOf.number("options.topRadius",i),m.typeOf.number("options.bottomRadius",f),m.typeOf.number.greaterThanOrEquals("options.slices",o,3),b(t.offsetAttribute)&&t.offsetAttribute===L.TOP)throw new E("GeometryOffsetAttribute.TOP is not a supported options.offsetAttribute for this geometry.");this._length=e,this._topRadius=i,this._bottomRadius=f,this._slices=o,this._numberOfVerticalLines=u,this._offsetAttribute=t.offsetAttribute,this._workerName="createCylinderOutlineGeometry"}d.packedLength=6;d.pack=function(t,e,i){return m.typeOf.object("value",t),m.defined("array",e),i=i??0,e[i++]=t._length,e[i++]=t._topRadius,e[i++]=t._bottomRadius,e[i++]=t._slices,e[i++]=t._numberOfVerticalLines,e[i]=t._offsetAttribute??-1,e};var p={length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,numberOfVerticalLines:void 0,offsetAttribute:void 0};d.unpack=function(t,e,i){m.defined("array",t),e=e??0;let f=t[e++],o=t[e++],u=t[e++],l=t[e++],a=t[e++],c=t[e];return b(i)?(i._length=f,i._topRadius=o,i._bottomRadius=u,i._slices=l,i._numberOfVerticalLines=a,i._offsetAttribute=c===-1?void 0:c,i):(p.length=f,p.topRadius=o,p.bottomRadius=u,p.slices=l,p.numberOfVerticalLines=a,p.offsetAttribute=c===-1?void 0:c,new d(p))};d.createGeometry=function(t){let e=t._length,i=t._topRadius,f=t._bottomRadius,o=t._slices,u=t._numberOfVerticalLines;if(e<=0||i<0||f<0||i===0&&f===0)return;let l=o*2,a=M.computePositions(e,i,f,o,!1),c=o*2,C;if(u>0){let h=Math.min(u,o);C=Math.round(o/h),c+=h}let s=N.createTypedArray(l,c*2),r=0,n;for(n=0;n<o-1;n++)s[r++]=n,s[r++]=n+1,s[r++]=n+o,s[r++]=n+1+o;if(s[r++]=o-1,s[r++]=0,s[r++]=o+o-1,s[r++]=o,u>0)for(n=0;n<o;n+=C)s[r++]=n,s[r++]=n+o;let O=new k;O.position=new A({componentDatatype:R.DOUBLE,componentsPerAttribute:3,values:a}),V.x=e*.5,V.y=Math.max(f,i);let g=new y(T.ZERO,_.magnitude(V));if(b(t._offsetAttribute)){e=a.length;let h=t._offsetAttribute===L.NONE?0:1,B=new Uint8Array(e/3).fill(h);O.applyOffset=new A({componentDatatype:R.UNSIGNED_BYTE,componentsPerAttribute:1,values:B})}return new P({attributes:O,indices:s,primitiveType:D.LINES,boundingSphere:g,offsetAttribute:t._offsetAttribute})};var w=d;function G(t,e){return b(e)&&(t=w.unpack(t,e)),w.createGeometry(t)}var et=G;export{et as default}; diff --git a/public/Cesium/Workers/createEllipseGeometry.js b/public/Cesium/Workers/createEllipseGeometry.js new file mode 100644 index 000000000..beb79bfa1 --- /dev/null +++ b/public/Cesium/Workers/createEllipseGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as o}from"./chunk-FEVXJ54I.js";import"./chunk-UP6I5URU.js";import"./chunk-D6AA5QVT.js";import"./chunk-VW6VD53G.js";import"./chunk-DEPHB2WM.js";import"./chunk-QOUAJ6TL.js";import"./chunk-GBYLG25F.js";import"./chunk-CYCB63OH.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as t,d as c}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{e as n}from"./chunk-VTAIKJXX.js";function a(r,i){return n(i)&&(r=o.unpack(r,i)),r._center=t.clone(r._center),r._ellipsoid=c.clone(r._ellipsoid),o.createGeometry(r)}var u=a;export{u as default}; diff --git a/public/Cesium/Workers/createEllipseOutlineGeometry.js b/public/Cesium/Workers/createEllipseOutlineGeometry.js new file mode 100644 index 000000000..29403a1b9 --- /dev/null +++ b/public/Cesium/Workers/createEllipseOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as i}from"./chunk-HWXX4CWK.js";import"./chunk-UP6I5URU.js";import"./chunk-GBYLG25F.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as t,d as c}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{e as o}from"./chunk-VTAIKJXX.js";function a(r,n){return o(n)&&(r=i.unpack(r,n)),r._center=t.clone(r._center),r._ellipsoid=c.clone(r._ellipsoid),i.createGeometry(r)}var p=a;export{p as default}; diff --git a/public/Cesium/Workers/createEllipsoidGeometry.js b/public/Cesium/Workers/createEllipsoidGeometry.js new file mode 100644 index 000000000..d6a0805d9 --- /dev/null +++ b/public/Cesium/Workers/createEllipsoidGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as e}from"./chunk-37F5JSTI.js";import"./chunk-GBYLG25F.js";import"./chunk-CYCB63OH.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{e as o}from"./chunk-VTAIKJXX.js";function i(r,t){return o(t)&&(r=e.unpack(r,t)),e.createGeometry(r)}var a=i;export{a as default}; diff --git a/public/Cesium/Workers/createEllipsoidOutlineGeometry.js b/public/Cesium/Workers/createEllipsoidOutlineGeometry.js new file mode 100644 index 000000000..a2b8ccb05 --- /dev/null +++ b/public/Cesium/Workers/createEllipsoidOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as t}from"./chunk-D6C66QON.js";import"./chunk-GBYLG25F.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{e as n}from"./chunk-VTAIKJXX.js";function u(r,e){return n(r.buffer,e)&&(r=t.unpack(r,e)),t.createGeometry(r)}var a=u;export{a as default}; diff --git a/public/Cesium/Workers/createFrustumGeometry.js b/public/Cesium/Workers/createFrustumGeometry.js new file mode 100644 index 000000000..0d38696c0 --- /dev/null +++ b/public/Cesium/Workers/createFrustumGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{c as r}from"./chunk-IYTZ52EY.js";import"./chunk-CYCB63OH.js";import"./chunk-HTFSEEMT.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{e as o}from"./chunk-VTAIKJXX.js";function i(e,t){return o(t)&&(e=r.unpack(e,t)),r.createGeometry(e)}var a=i;export{a as default}; diff --git a/public/Cesium/Workers/createFrustumOutlineGeometry.js b/public/Cesium/Workers/createFrustumOutlineGeometry.js new file mode 100644 index 000000000..bd3e96f07 --- /dev/null +++ b/public/Cesium/Workers/createFrustumOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as k,b as _,c as A}from"./chunk-IYTZ52EY.js";import"./chunk-CYCB63OH.js";import"./chunk-HTFSEEMT.js";import{a as F}from"./chunk-A56XVLQR.js";import{b,c as N,d as g}from"./chunk-RCV6KWXS.js";import{d as y}from"./chunk-4IW2T6GF.js";import{f as s}from"./chunk-PSPPBZWI.js";import{a as T}from"./chunk-AU7IKHOH.js";import{a}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as h}from"./chunk-LEYMRMBK.js";import{e as w}from"./chunk-VTAIKJXX.js";var d=0,j=1;function P(e){h.typeOf.object("options",e),h.typeOf.object("options.frustum",e.frustum),h.typeOf.object("options.origin",e.origin),h.typeOf.object("options.orientation",e.orientation);let t=e.frustum,o=e.orientation,u=e.origin,c=e._drawNearPlane??!0,p,m;t instanceof _?(p=d,m=_.packedLength):t instanceof k&&(p=j,m=k.packedLength),this._frustumType=p,this._frustum=t.clone(),this._origin=a.clone(u),this._orientation=s.clone(o),this._drawNearPlane=c,this._workerName="createFrustumOutlineGeometry",this.packedLength=2+m+a.packedLength+s.packedLength}P.pack=function(e,t,o){h.typeOf.object("value",e),h.defined("array",t),o=o??0;let u=e._frustumType,c=e._frustum;return t[o++]=u,u===d?(_.pack(c,t,o),o+=_.packedLength):(k.pack(c,t,o),o+=k.packedLength),a.pack(e._origin,t,o),o+=a.packedLength,s.pack(e._orientation,t,o),o+=s.packedLength,t[o]=e._drawNearPlane?1:0,t};var C=new _,E=new k,G=new s,R=new a;P.unpack=function(e,t,o){h.defined("array",e),t=t??0;let u=e[t++],c;u===d?(c=_.unpack(e,t,C),t+=_.packedLength):(c=k.unpack(e,t,E),t+=k.packedLength);let p=a.unpack(e,t,R);t+=a.packedLength;let m=s.unpack(e,t,G);t+=s.packedLength;let l=e[t]===1;if(!w(o))return new P({frustum:c,origin:p,orientation:m,_drawNearPlane:l});let n=u===o._frustumType?o._frustum:void 0;return o._frustum=c.clone(n),o._frustumType=u,o._origin=a.clone(p,o._origin),o._orientation=s.clone(m,o._orientation),o._drawNearPlane=l,o};P.createGeometry=function(e){let t=e._frustumType,o=e._frustum,u=e._origin,c=e._orientation,p=e._drawNearPlane,m=new Float64Array(24);A._computeNearFarPlanes(u,c,t,o,m);let l=new F({position:new g({componentDatatype:T.DOUBLE,componentsPerAttribute:3,values:m})}),n,i,O=p?2:1,r=new Uint16Array(8*(O+1)),f=p?0:1;for(;f<2;++f)n=p?f*8:0,i=f*4,r[n]=i,r[n+1]=i+1,r[n+2]=i+1,r[n+3]=i+2,r[n+4]=i+2,r[n+5]=i+3,r[n+6]=i+3,r[n+7]=i;for(f=0;f<2;++f)n=(O+f)*8,i=f*4,r[n]=i,r[n+1]=i+4,r[n+2]=i+1,r[n+3]=i+5,r[n+4]=i+2,r[n+5]=i+6,r[n+6]=i+3,r[n+7]=i+7;return new N({attributes:l,indices:r,primitiveType:b.LINES,boundingSphere:y.fromVertices(m)})};var L=P;function S(e,t){return w(t)&&(e=L.unpack(e,t)),L.createGeometry(e)}var $=S;export{$ as default}; diff --git a/public/Cesium/Workers/createGeometry.js b/public/Cesium/Workers/createGeometry.js new file mode 100644 index 000000000..adb924241 --- /dev/null +++ b/public/Cesium/Workers/createGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as k}from"./chunk-VTBDSFTG.js";import{a as w}from"./chunk-WZDE3RYP.js";import"./chunk-DQQ63PYM.js";import"./chunk-VW6VD53G.js";import"./chunk-DEPHB2WM.js";import"./chunk-QOUAJ6TL.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as y}from"./chunk-LEYMRMBK.js";import{a,b as p,e as r}from"./chunk-VTAIKJXX.js";var g=p({"./combineGeometry.js":()=>import("./combineGeometry.js"),"./createBoxGeometry.js":()=>import("./createBoxGeometry.js"),"./createBoxOutlineGeometry.js":()=>import("./createBoxOutlineGeometry.js"),"./createCircleGeometry.js":()=>import("./createCircleGeometry.js"),"./createCircleOutlineGeometry.js":()=>import("./createCircleOutlineGeometry.js"),"./createCoplanarPolygonGeometry.js":()=>import("./createCoplanarPolygonGeometry.js"),"./createCoplanarPolygonOutlineGeometry.js":()=>import("./createCoplanarPolygonOutlineGeometry.js"),"./createCorridorGeometry.js":()=>import("./createCorridorGeometry.js"),"./createCorridorOutlineGeometry.js":()=>import("./createCorridorOutlineGeometry.js"),"./createCylinderGeometry.js":()=>import("./createCylinderGeometry.js"),"./createCylinderOutlineGeometry.js":()=>import("./createCylinderOutlineGeometry.js"),"./createEllipseGeometry.js":()=>import("./createEllipseGeometry.js"),"./createEllipseOutlineGeometry.js":()=>import("./createEllipseOutlineGeometry.js"),"./createEllipsoidGeometry.js":()=>import("./createEllipsoidGeometry.js"),"./createEllipsoidOutlineGeometry.js":()=>import("./createEllipsoidOutlineGeometry.js"),"./createFrustumGeometry.js":()=>import("./createFrustumGeometry.js"),"./createFrustumOutlineGeometry.js":()=>import("./createFrustumOutlineGeometry.js"),"./createGeometry.js":()=>import("./createGeometry.js"),"./createGroundPolylineGeometry.js":()=>import("./createGroundPolylineGeometry.js"),"./createPlaneGeometry.js":()=>import("./createPlaneGeometry.js"),"./createPlaneOutlineGeometry.js":()=>import("./createPlaneOutlineGeometry.js"),"./createPolygonGeometry.js":()=>import("./createPolygonGeometry.js"),"./createPolygonOutlineGeometry.js":()=>import("./createPolygonOutlineGeometry.js"),"./createPolylineGeometry.js":()=>import("./createPolylineGeometry.js"),"./createPolylineVolumeGeometry.js":()=>import("./createPolylineVolumeGeometry.js"),"./createPolylineVolumeOutlineGeometry.js":()=>import("./createPolylineVolumeOutlineGeometry.js"),"./createRectangleGeometry.js":()=>import("./createRectangleGeometry.js"),"./createRectangleOutlineGeometry.js":()=>import("./createRectangleOutlineGeometry.js"),"./createSimplePolylineGeometry.js":()=>import("./createSimplePolylineGeometry.js"),"./createSphereGeometry.js":()=>import("./createSphereGeometry.js"),"./createSphereOutlineGeometry.js":()=>import("./createSphereOutlineGeometry.js"),"./createTaskProcessorWorker.js":()=>import("./createTaskProcessorWorker.js"),"./createVectorTileClampedPolylines.js":()=>import("./createVectorTileClampedPolylines.js"),"./createVectorTileGeometries.js":()=>import("./createVectorTileGeometries.js"),"./createVectorTilePoints.js":()=>import("./createVectorTilePoints.js"),"./createVectorTilePolygons.js":()=>import("./createVectorTilePolygons.js"),"./createVectorTilePolylines.js":()=>import("./createVectorTilePolylines.js"),"./createVerticesFromGoogleEarthEnterpriseBuffer.js":()=>import("./createVerticesFromGoogleEarthEnterpriseBuffer.js"),"./createVerticesFromHeightmap.js":()=>import("./createVerticesFromHeightmap.js"),"./createVerticesFromQuantizedTerrainMesh.js":()=>import("./createVerticesFromQuantizedTerrainMesh.js"),"./createWallGeometry.js":()=>import("./createWallGeometry.js"),"./createWallOutlineGeometry.js":()=>import("./createWallOutlineGeometry.js"),"./decodeDraco.js":()=>import("./decodeDraco.js"),"./decodeGoogleEarthEnterprisePacket.js":()=>import("./decodeGoogleEarthEnterprisePacket.js"),"./decodeI3S.js":()=>import("./decodeI3S.js"),"./gaussianSplatSorter.js":()=>import("./gaussianSplatSorter.js"),"./gaussianSplatTextureGenerator.js":()=>import("./gaussianSplatTextureGenerator.js"),"./transcodeKTX2.js":()=>import("./transcodeKTX2.js"),"./transferTypedArrayTest.js":()=>import("./transferTypedArrayTest.js"),"./upsampleQuantizedTerrainMesh.js":()=>import("./upsampleQuantizedTerrainMesh.js")});var c={};async function b(s,t){let e=c[t]??c[s];return r(e)?e:r(t)?(typeof exports=="object"?e=a(t):e=(await import(t)).default,c[t]=e,e):(typeof exports=="object"?e=a(`Workers/${s}`):e=(r(t)?await import(t):await g(`./${s}.js`)).default,c[s]=e,e)}async function h(s,t){let e=s.subTasks,n=e.length,f=new Array(n);for(let o=0;o<n;o++){let i=e[o],m=i.geometry,u=i.moduleName,l=i.modulePath;if(r(u)&&r(l))throw new y("Must only set moduleName or modulePath");r(u)||r(l)?f[o]=b(u,l).then(d=>d(m,i.offset)):f[o]=m}return Promise.all(f).then(function(o){return k.packCreateGeometryResults(o,t)})}var G=w(h);export{G as default}; diff --git a/public/Cesium/Workers/createGroundPolylineGeometry.js b/public/Cesium/Workers/createGroundPolylineGeometry.js new file mode 100644 index 000000000..2b5a17556 --- /dev/null +++ b/public/Cesium/Workers/createGroundPolylineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as _e}from"./chunk-DQQ63PYM.js";import{a as W}from"./chunk-J6UP6FLE.js";import{a as Ct}from"./chunk-QOUAJ6TL.js";import{a as Oe}from"./chunk-U4IEOH5K.js";import{a as Le}from"./chunk-3W4GT7KQ.js";import{a as te}from"./chunk-G5AGHVVC.js";import{b as Qt}from"./chunk-DMEY62ID.js";import{a as jt}from"./chunk-HTFSEEMT.js";import{c as Ce,d as zt}from"./chunk-RCV6KWXS.js";import{a as Pt,d as U}from"./chunk-4IW2T6GF.js";import{d as xe,e as Ne,f as Kt,h as Y}from"./chunk-PSPPBZWI.js";import{a as Bt}from"./chunk-AU7IKHOH.js";import{a as t,b as u,c as Rt,d as B,e as bt,f as vt}from"./chunk-64RSHJUE.js";import{a as p}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as wt,b as tt}from"./chunk-LEYMRMBK.js";import{e as g}from"./chunk-VTAIKJXX.js";function it(e){e=e??vt.EMPTY_OBJECT,this._ellipsoid=e.ellipsoid??B.default,this._rectangle=e.rectangle??Y.MAX_VALUE,this._projection=new Pt(this._ellipsoid),this._numberOfLevelZeroTilesX=e.numberOfLevelZeroTilesX??2,this._numberOfLevelZeroTilesY=e.numberOfLevelZeroTilesY??1}Object.defineProperties(it.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}});it.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<<e};it.prototype.getNumberOfYTilesAtLevel=function(e){return this._numberOfLevelZeroTilesY<<e};it.prototype.rectangleToNativeRectangle=function(e,i){tt.defined("rectangle",e);let r=p.toDegrees(e.west),n=p.toDegrees(e.south),o=p.toDegrees(e.east),a=p.toDegrees(e.north);return g(i)?(i.west=r,i.south=n,i.east=o,i.north=a,i):new Y(r,n,o,a)};it.prototype.tileXYToNativeRectangle=function(e,i,r,n){let o=this.tileXYToRectangle(e,i,r,n);return o.west=p.toDegrees(o.west),o.south=p.toDegrees(o.south),o.east=p.toDegrees(o.east),o.north=p.toDegrees(o.north),o};it.prototype.tileXYToRectangle=function(e,i,r,n){let o=this._rectangle,a=this.getNumberOfXTilesAtLevel(r),c=this.getNumberOfYTilesAtLevel(r),l=o.width/a,s=e*l+o.west,d=(e+1)*l+o.west,h=o.height/c,N=o.north-i*h,S=o.north-(i+1)*h;return g(n)||(n=new Y(s,S,d,N)),n.west=s,n.south=S,n.east=d,n.north=N,n};it.prototype.positionToTileXY=function(e,i,r){let n=this._rectangle;if(!Y.contains(n,e))return;let o=this.getNumberOfXTilesAtLevel(i),a=this.getNumberOfYTilesAtLevel(i),c=n.width/o,l=n.height/a,s=e.longitude;n.east<n.west&&(s+=p.TWO_PI);let d=(s-n.west)/c|0;d>=o&&(d=o-1);let h=(n.north-e.latitude)/l|0;return h>=a&&(h=a-1),g(r)?(r.x=d,r.y=h,r):new Rt(d,h)};var De=it;var Ie=new t,He=new t,ke=new u,ee=new t,hn=new t,ye=new U,pn=new De,_t=[new u,new u,new u,new u],Lt=new Rt,w={};w.initialize=function(){let e=w._initPromise;return g(e)||(e=xe.fetchJson(Ne("Assets/approximateTerrainHeights.json")).then(function(i){w._terrainHeights=i}),w._initPromise=e),e};w.getMinimumMaximumHeights=function(e,i){if(tt.defined("rectangle",e),!g(w._terrainHeights))throw new wt("You must call ApproximateTerrainHeights.initialize and wait for the promise to resolve before using this function");i=i??B.default;let r=Ae(e),n=w._defaultMinTerrainHeight,o=w._defaultMaxTerrainHeight;if(g(r)){let a=`${r.level}-${r.x}-${r.y}`,c=w._terrainHeights[a];g(c)&&(n=c[0],o=c[1]),i.cartographicToCartesian(Y.northeast(e,ke),Ie),i.cartographicToCartesian(Y.southwest(e,ke),He),t.midpoint(He,Ie,ee);let l=i.scaleToGeodeticSurface(ee,hn);if(g(l)){let s=t.distance(ee,l);n=Math.min(n,-s)}else n=w._defaultMinTerrainHeight}return n=Math.max(w._defaultMinTerrainHeight,n),{minimumTerrainHeight:n,maximumTerrainHeight:o}};w.getBoundingSphere=function(e,i){if(tt.defined("rectangle",e),!g(w._terrainHeights))throw new wt("You must call ApproximateTerrainHeights.initialize and wait for the promise to resolve before using this function");i=i??B.default;let r=Ae(e),n=w._defaultMaxTerrainHeight;if(g(r)){let a=`${r.level}-${r.x}-${r.y}`,c=w._terrainHeights[a];g(c)&&(n=c[1])}let o=U.fromRectangle3D(e,i,0);return U.fromRectangle3D(e,i,n,ye),U.union(o,ye,o)};function Ae(e){u.fromRadians(e.east,e.north,0,_t[0]),u.fromRadians(e.west,e.north,0,_t[1]),u.fromRadians(e.east,e.south,0,_t[2]),u.fromRadians(e.west,e.south,0,_t[3]);let i=0,r=0,n=0,o=0,a=w._terrainHeightsMaxLevel,c;for(c=0;c<=a;++c){let l=!1;for(let s=0;s<4;++s){let d=_t[s];if(pn.positionToTileXY(d,c,Lt),s===0)n=Lt.x,o=Lt.y;else if(n!==Lt.x||o!==Lt.y){l=!0;break}}if(l)break;i=n,r=o}if(c!==0)return{x:i,y:r,level:c>a?a:c-1}}w._terrainHeightsMaxLevel=6;w._defaultMaxTerrainHeight=9e3;w._defaultMinTerrainHeight=-1e5;w._terrainHeights=void 0;w._initPromise=void 0;Object.defineProperties(w,{initialized:{get:function(){return g(w._terrainHeights)}}});var Ft=w;var le=[Pt,_e],dn=le.length,Ke=Math.cos(p.toRadians(30)),Me=Math.cos(p.toRadians(150)),Qe=0,tn=1e3;function at(e){e=e??vt.EMPTY_OBJECT;let i=e.positions;if(!g(i)||i.length<2)throw new wt("At least two positions are required.");if(g(e.arcType)&&e.arcType!==W.GEODESIC&&e.arcType!==W.RHUMB)throw new wt("Valid options for arcType are ArcType.GEODESIC and ArcType.RHUMB.");this.width=e.width??1,this._positions=i,this.granularity=e.granularity??9999,this.loop=e.loop??!1,this.arcType=e.arcType??W.GEODESIC,this._ellipsoid=B.default,this._projectionIndex=0,this._workerName="createGroundPolylineGeometry",this._scene3DOnly=!1}Object.defineProperties(at.prototype,{packedLength:{get:function(){return 1+this._positions.length*3+1+1+1+B.packedLength+1+1}}});at.setProjectionAndEllipsoid=function(e,i){let r=0;for(let n=0;n<dn;n++)if(i instanceof le[n]){r=n;break}e._projectionIndex=r,e._ellipsoid=i.ellipsoid};var fn=new t,Re=new t,Pe=new t;function se(e,i,r,n,o){let a=R(n,e,0,fn),c=R(n,e,r,Re),l=R(n,i,0,Pe),s=et(c,a,Re),d=et(l,a,Pe);return t.cross(d,s,o),t.normalize(o,o)}var mn=new u,gn=new t,un=new t,wn=new t;function ne(e,i,r,n,o,a,c,l,s,d,h){if(o===0)return;let N;a===W.GEODESIC?N=new Oe(e,i,c):a===W.RHUMB&&(N=new te(e,i,c));let S=N.surfaceDistance;if(S<o)return;let M=se(e,i,n,c,wn),O=Math.ceil(S/o),D=S/O,z=D,G=O-1,f=l.length;for(let j=0;j<G;j++){let b=N.interpolateUsingSurfaceDistance(z,mn),k=R(c,b,r,gn),I=R(c,b,n,un);t.pack(M,l,f),t.pack(k,s,f),t.pack(I,d,f),h.push(b.latitude),h.push(b.longitude),f+=3,z+=D}}var oe=new u;function R(e,i,r,n){return u.clone(i,oe),oe.height=r,u.toCartesian(oe,e,n)}at.pack=function(e,i,r){tt.typeOf.object("value",e),tt.defined("array",i);let n=r??0,o=e._positions,a=o.length;i[n++]=a;for(let c=0;c<a;++c){let l=o[c];t.pack(l,i,n),n+=3}return i[n++]=e.granularity,i[n++]=e.loop?1:0,i[n++]=e.arcType,B.pack(e._ellipsoid,i,n),n+=B.packedLength,i[n++]=e._projectionIndex,i[n++]=e._scene3DOnly?1:0,i};at.unpack=function(e,i,r){tt.defined("array",e);let n=i??0,o=e[n++],a=new Array(o);for(let S=0;S<o;S++)a[S]=t.unpack(e,n),n+=3;let c=e[n++],l=e[n++]===1,s=e[n++],d=B.unpack(e,n);n+=B.packedLength;let h=e[n++],N=e[n++]===1;return g(r)||(r=new at({positions:a})),r._positions=a,r.granularity=c,r.loop=l,r.arcType=s,r._ellipsoid=d,r._projectionIndex=h,r._scene3DOnly=N,r};function et(e,i,r){return t.subtract(e,i,r),t.normalize(r,r),r}function be(e,i,r,n){return n=et(e,i,n),n=t.cross(n,r,n),n=t.normalize(n,n),n=t.cross(r,n,n),n}var Sn=new t,Tn=new t,En=new t,en=new t,xn=0,Nn=-1;function ie(e,i,r,n,o){let a=et(r,i,en),c=be(e,i,a,Sn),l=be(n,i,a,Tn);if(p.equalsEpsilon(t.dot(c,l),Nn,p.EPSILON5))return o=t.cross(a,c,o),o=t.normalize(o,o),o;o=t.add(l,c,o),o=t.normalize(o,o);let s=t.cross(a,o,En);return t.dot(l,s)<xn&&(o=t.negate(o,o)),o}var Gt=jt.fromPointNormal(t.ZERO,t.UNIT_Y),Cn=new t,_n=new t,Ln=new t,On=new t,Dn=new t,Xt=new t,Yt=new u,ve=new u,Be=new u;at.createGeometry=function(e){let i=!e._scene3DOnly,r=e.loop,n=e._ellipsoid,o=e.granularity,a=e.arcType,c=new le[e._projectionIndex](n),l=Qe,s=tn,d,h,N=e._positions,S=N.length;S===2&&(r=!1);let M,O,D,z,G=new te(void 0,void 0,n),f,j,b,k=[N[0]];for(h=0;h<S-1;h++)M=N[h],O=N[h+1],f=Qt.lineSegmentPlane(M,O,Gt,Xt),g(f)&&!t.equalsEpsilon(f,M,p.EPSILON7)&&!t.equalsEpsilon(f,O,p.EPSILON7)&&(e.arcType===W.GEODESIC?k.push(t.clone(f)):e.arcType===W.RHUMB&&(b=n.cartesianToCartographic(f,Yt).longitude,D=n.cartesianToCartographic(M,Yt),z=n.cartesianToCartographic(O,ve),G.setEndPoints(D,z),j=G.findIntersectionWithLongitude(b,Be),f=n.cartographicToCartesian(j,Xt),g(f)&&!t.equalsEpsilon(f,M,p.EPSILON7)&&!t.equalsEpsilon(f,O,p.EPSILON7)&&k.push(t.clone(f)))),k.push(O);r&&(M=N[S-1],O=N[0],f=Qt.lineSegmentPlane(M,O,Gt,Xt),g(f)&&!t.equalsEpsilon(f,M,p.EPSILON7)&&!t.equalsEpsilon(f,O,p.EPSILON7)&&(e.arcType===W.GEODESIC?k.push(t.clone(f)):e.arcType===W.RHUMB&&(b=n.cartesianToCartographic(f,Yt).longitude,D=n.cartesianToCartographic(M,Yt),z=n.cartesianToCartographic(O,ve),G.setEndPoints(D,z),j=G.findIntersectionWithLongitude(b,Be),f=n.cartographicToCartesian(j,Xt),g(f)&&!t.equalsEpsilon(f,M,p.EPSILON7)&&!t.equalsEpsilon(f,O,p.EPSILON7)&&k.push(t.clone(f)))));let I=k.length,C=new Array(I);for(h=0;h<I;h++){let X=u.fromCartesian(k[h],n);X.height=0,C[h]=X}if(C=Le(C,u.equalsEpsilon),I=C.length,I<2)return;let H=[],P=[],v=[],E=[],x=Cn,L=_n,_=Ln,F=On,y=Dn,m=C[0],Z=C[1],Dt=C[I-1];for(x=R(n,Dt,l,x),F=R(n,Z,l,F),L=R(n,m,l,L),_=R(n,m,s,_),r?y=ie(x,L,_,F,y):y=se(m,Z,s,n,y),t.pack(y,P,0),t.pack(L,v,0),t.pack(_,E,0),H.push(m.latitude),H.push(m.longitude),ne(m,Z,l,s,o,a,n,P,v,E,H),h=1;h<I-1;++h){x=t.clone(L,x),L=t.clone(F,L);let X=C[h];R(n,X,s,_),R(n,C[h+1],l,F),ie(x,L,_,F,y),d=P.length,t.pack(y,P,d),t.pack(L,v,d),t.pack(_,E,d),H.push(X.latitude),H.push(X.longitude),ne(C[h],C[h+1],l,s,o,a,n,P,v,E,H)}let A=C[I-1],St=C[I-2];if(L=R(n,A,l,L),_=R(n,A,s,_),r){let X=C[0];x=R(n,St,l,x),F=R(n,X,l,F),y=ie(x,L,_,F,y)}else y=se(St,A,s,n,y);if(d=P.length,t.pack(y,P,d),t.pack(L,v,d),t.pack(_,E,d),H.push(A.latitude),H.push(A.longitude),r){for(ne(A,m,l,s,o,a,n,P,v,E,H),d=P.length,h=0;h<3;++h)P[d+h]=P[h],v[d+h]=v[h],E[d+h]=E[h];H.push(m.latitude),H.push(m.longitude)}return Qn(r,c,v,E,P,H,i)};var In=new t,Hn=new bt,kn=new Kt;function ze(e,i,r,n){let o=et(r,i,In),a=t.dot(o,e);if(a>Ke||a<Me){let c=et(n,r,en),l=a<Me?p.PI_OVER_TWO:-p.PI_OVER_TWO,s=Kt.fromAxisAngle(c,l,kn),d=bt.fromQuaternion(s,Hn);return bt.multiplyByVector(d,e,e),!0}return!1}var je=new u,yn=new t,Fe=new t;function Ot(e,i,r,n,o){let a=u.toCartesian(i,e._ellipsoid,yn),c=t.add(a,r,Fe),l=!1,s=e._ellipsoid,d=s.cartesianToCartographic(c,je);Math.abs(i.longitude-d.longitude)>p.PI_OVER_TWO&&(l=!0,c=t.subtract(a,r,Fe),d=s.cartesianToCartographic(c,je)),d.height=0;let h=e.project(d,o);return o=t.subtract(h,n,o),o.z=0,o=t.normalize(o,o),l&&t.negate(o,o),o}var An=new t,Xe=new t;function Ye(e,i,r,n,o,a){let c=t.subtract(i,e,An);t.normalize(c,c);let l=r-Qe,s=t.multiplyByScalar(c,l,Xe);t.add(e,s,o);let d=n-tn;s=t.multiplyByScalar(c,d,Xe),t.add(i,s,a)}var Mn=new t;function Ut(e,i){let r=jt.getPointDistance(Gt,e),n=jt.getPointDistance(Gt,i),o=Mn;p.equalsEpsilon(r,0,p.EPSILON2)?(o=et(i,e,o),t.multiplyByScalar(o,p.EPSILON2,o),t.add(e,o,e)):p.equalsEpsilon(n,0,p.EPSILON2)&&(o=et(e,i,o),t.multiplyByScalar(o,p.EPSILON2,o),t.add(i,o,i))}function Rn(e,i){let r=Math.abs(e.longitude),n=Math.abs(i.longitude);if(p.equalsEpsilon(r,p.PI,p.EPSILON11)){let o=p.sign(i.longitude);return e.longitude=o*(r-p.EPSILON11),1}else if(p.equalsEpsilon(n,p.PI,p.EPSILON11)){let o=p.sign(e.longitude);return i.longitude=o*(n-p.EPSILON11),2}return 0}var nn=new u,on=new u,Ue=new t,re=new t,Ge=new t,qe=new t,Pn=new t,We=new t,bn=[nn,on],vn=new Y,Bn=new t,zn=new t,jn=new t,Fn=new t,Xn=new t,Yn=new t,ae=new t,ce=new t,Un=new t,Gn=new t,qn=new t,Ze=new t,Wn=new t,Zn=new t,Vn=new Ct,$n=new Ct,Ve=new t,Jn=new t,$e=new t,Kn=[new U,new U],rn=[0,2,1,0,3,2,0,7,3,0,4,7,0,5,4,0,1,5,5,7,4,5,6,7,5,2,6,5,1,2,3,6,2,3,7,6],Je=rn.length;function Qn(e,i,r,n,o,a,c){let l,s,d=i._ellipsoid,h=r.length/3-1,N=h*8,S=N*4,M=h*36,O=N>65535?new Uint32Array(M):new Uint16Array(M),D=new Float64Array(N*3),z=new Float32Array(S),G=new Float32Array(S),f=new Float32Array(S),j=new Float32Array(S),b=new Float32Array(S),k,I,C,H;c&&(k=new Float32Array(S),I=new Float32Array(S),C=new Float32Array(S),H=new Float32Array(N*2));let P=a.length/2,v=0,E=nn;E.height=0;let x=on;x.height=0;let L=Ue,_=re;if(c)for(s=0,l=1;l<P;l++)E.latitude=a[s],E.longitude=a[s+1],x.latitude=a[s+2],x.longitude=a[s+3],L=i.project(E,L),_=i.project(x,_),v+=t.distance(L,_),s+=2;let F=n.length/3;_=t.unpack(n,0,_);let y=0;for(s=3,l=1;l<F;l++)L=t.clone(_,L),_=t.unpack(n,s,_),y+=t.distance(L,_),s+=3;let m;s=3;let Z=0,Dt=0,A=0,St=0,X=!1,ct=t.unpack(r,0,qe),st=t.unpack(n,0,re),q=t.unpack(o,0,We);if(e){let lt=t.unpack(r,r.length-6,Ge);ze(q,lt,ct,st)&&(q=t.negate(q,q))}let pe=0,de=0,qt=0;for(l=0;l<h;l++){let lt=t.clone(ct,Ge),Zt=t.clone(st,Ue),ft=t.clone(q,Pn);X&&(ft=t.negate(ft,ft)),ct=t.unpack(r,s,qe),st=t.unpack(n,s,re),q=t.unpack(o,s,We),X=ze(q,lt,ct,st),E.latitude=a[Z],E.longitude=a[Z+1],x.latitude=a[Z+2],x.longitude=a[Z+3];let ht,mt,nt,ot;if(c){let T=Rn(E,x);ht=i.project(E,Xn),mt=i.project(x,Yn);let ut=et(mt,ht,Ve);ut.y=Math.abs(ut.y),nt=ae,ot=ce,T===0||t.dot(ut,t.UNIT_Y)>Ke?(nt=Ot(i,E,ft,ht,ae),ot=Ot(i,x,q,mt,ce)):T===1?(ot=Ot(i,x,q,mt,ce),nt.x=0,nt.y=p.sign(E.longitude-Math.abs(x.longitude)),nt.z=0):(nt=Ot(i,E,ft,ht,ae),ot.x=0,ot.y=p.sign(E.longitude-x.longitude),ot.z=0)}let ge=t.distance(Zt,st),ue=Ct.fromCartesian(lt,Vn),It=t.subtract(ct,lt,Un),an=t.normalize(It,Ze),Et=t.subtract(Zt,lt,Gn);Et=t.normalize(Et,Et);let gt=t.cross(an,Et,Ze);gt=t.normalize(gt,gt);let Ht=t.cross(Et,ft,Wn);Ht=t.normalize(Ht,Ht);let kt=t.subtract(st,ct,qn);kt=t.normalize(kt,kt);let yt=t.cross(q,kt,Zn);yt=t.normalize(yt,yt);let cn=ge/y,sn=pe/y,Vt=0,xt,At,pt,we=0,Se=0;if(c){Vt=t.distance(ht,mt),xt=Ct.fromCartesian(ht,$n),At=t.subtract(mt,ht,Ve),pt=t.normalize(At,Jn);let T=pt.x;pt.x=pt.y,pt.y=-T,we=Vt/v,Se=de/v}for(m=0;m<8;m++){let T=St+m*4,ut=Dt+m*2,Nt=T+3,Ee=m<4?1:-1,Mt=m===2||m===3||m===6||m===7?1:-1;t.pack(ue.high,z,T),z[Nt]=It.x,t.pack(ue.low,G,T),G[Nt]=It.y,t.pack(Ht,f,T),f[Nt]=It.z,t.pack(yt,j,T),j[Nt]=cn*Ee,t.pack(gt,b,T);let dt=sn*Mt;dt===0&&Mt<0&&(dt=9),b[Nt]=dt,c&&(k[T]=xt.high.x,k[T+1]=xt.high.y,k[T+2]=xt.low.x,k[T+3]=xt.low.y,C[T]=-nt.y,C[T+1]=nt.x,C[T+2]=ot.y,C[T+3]=-ot.x,I[T]=At.x,I[T+1]=At.y,I[T+2]=pt.x,I[T+3]=pt.y,H[ut]=we*Ee,dt=Se*Mt,dt===0&&Mt<0&&(dt=9),H[ut+1]=dt)}let V=jn,$=Fn,J=Bn,K=zn,ln=Y.fromCartographicArray(bn,vn),Te=Ft.getMinimumMaximumHeights(ln,d),$t=Te.minimumTerrainHeight,Jt=Te.maximumTerrainHeight;qt+=Math.abs($t),qt+=Math.abs(Jt),Ye(lt,Zt,$t,Jt,V,J),Ye(ct,st,$t,Jt,$,K);let Q=t.multiplyByScalar(gt,p.EPSILON5,$e);t.add(V,Q,V),t.add($,Q,$),t.add(J,Q,J),t.add(K,Q,K),Ut(V,$),Ut(J,K),t.pack(V,D,A),t.pack($,D,A+3),t.pack(K,D,A+6),t.pack(J,D,A+9),Q=t.multiplyByScalar(gt,-2*p.EPSILON5,$e),t.add(V,Q,V),t.add($,Q,$),t.add(J,Q,J),t.add(K,Q,K),Ut(V,$),Ut(J,K),t.pack(V,D,A+12),t.pack($,D,A+15),t.pack(K,D,A+18),t.pack(J,D,A+21),Z+=2,s+=3,Dt+=16,A+=24,St+=32,pe+=ge,de+=Vt}s=0;let fe=0;for(l=0;l<h;l++){for(m=0;m<Je;m++)O[s+m]=rn[m]+fe;fe+=8,s+=Je}let Wt=Kn;U.fromVertices(r,t.ZERO,3,Wt[0]),U.fromVertices(n,t.ZERO,3,Wt[1]);let me=U.fromBoundingSpheres(Wt);me.radius+=qt/(h*2);let Tt={position:new zt({componentDatatype:Bt.DOUBLE,componentsPerAttribute:3,normalize:!1,values:D}),startHiAndForwardOffsetX:rt(z),startLoAndForwardOffsetY:rt(G),startNormalAndForwardOffsetZ:rt(f),endNormalAndTextureCoordinateNormalizationX:rt(j),rightNormalAndTextureCoordinateNormalizationY:rt(b)};return c&&(Tt.startHiLo2D=rt(k),Tt.offsetAndRight2D=rt(I),Tt.startEndNormals2D=rt(C),Tt.texcoordNormalization2D=new zt({componentDatatype:Bt.FLOAT,componentsPerAttribute:2,normalize:!1,values:H})),new Ce({attributes:Tt,indices:O,boundingSphere:me})}function rt(e){return new zt({componentDatatype:Bt.FLOAT,componentsPerAttribute:4,normalize:!1,values:e})}at._projectNormal=Ot;var he=at;function to(e,i){return Ft.initialize().then(function(){return g(i)&&(e=he.unpack(e,i)),he.createGeometry(e)})}var Qo=to;export{Qo as default}; diff --git a/public/Cesium/Workers/createPlaneGeometry.js b/public/Cesium/Workers/createPlaneGeometry.js new file mode 100644 index 000000000..637ddf011 --- /dev/null +++ b/public/Cesium/Workers/createPlaneGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as m}from"./chunk-CYCB63OH.js";import{a as b}from"./chunk-A56XVLQR.js";import{b as v,c as x,d as c}from"./chunk-RCV6KWXS.js";import{d as l}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as i}from"./chunk-AU7IKHOH.js";import{a as u,f as A}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as f}from"./chunk-LEYMRMBK.js";import{e as s}from"./chunk-VTAIKJXX.js";function p(r){r=r??A.EMPTY_OBJECT;let e=r.vertexFormat??m.DEFAULT;this._vertexFormat=e,this._workerName="createPlaneGeometry"}p.packedLength=m.packedLength;p.pack=function(r,e,o){return f.typeOf.object("value",r),f.defined("array",e),o=o??0,m.pack(r._vertexFormat,e,o),e};var d=new m,P={vertexFormat:d};p.unpack=function(r,e,o){f.defined("array",r),e=e??0;let a=m.unpack(r,e,d);return s(o)?(o._vertexFormat=m.clone(a,o._vertexFormat),o):new p(P)};var y=new u(-.5,-.5,0),F=new u(.5,.5,0);p.createGeometry=function(r){let e=r._vertexFormat,o=new b,a,n;if(e.position){if(n=new Float64Array(12),n[0]=y.x,n[1]=y.y,n[2]=0,n[3]=F.x,n[4]=y.y,n[5]=0,n[6]=F.x,n[7]=F.y,n[8]=0,n[9]=y.x,n[10]=F.y,n[11]=0,o.position=new c({componentDatatype:i.DOUBLE,componentsPerAttribute:3,values:n}),e.normal){let t=new Float32Array(12);t[0]=0,t[1]=0,t[2]=1,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=1,t[9]=0,t[10]=0,t[11]=1,o.normal=new c({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:t})}if(e.st){let t=new Float32Array(8);t[0]=0,t[1]=0,t[2]=1,t[3]=0,t[4]=1,t[5]=1,t[6]=0,t[7]=1,o.st=new c({componentDatatype:i.FLOAT,componentsPerAttribute:2,values:t})}if(e.tangent){let t=new Float32Array(12);t[0]=1,t[1]=0,t[2]=0,t[3]=1,t[4]=0,t[5]=0,t[6]=1,t[7]=0,t[8]=0,t[9]=1,t[10]=0,t[11]=0,o.tangent=new c({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:t})}if(e.bitangent){let t=new Float32Array(12);t[0]=0,t[1]=1,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=1,t[8]=0,t[9]=0,t[10]=1,t[11]=0,o.bitangent=new c({componentDatatype:i.FLOAT,componentsPerAttribute:3,values:t})}a=new Uint16Array(6),a[0]=0,a[1]=1,a[2]=2,a[3]=0,a[4]=2,a[5]=3}return new x({attributes:o,indices:a,primitiveType:v.TRIANGLES,boundingSphere:new l(u.ZERO,Math.sqrt(2))})};var w=p;function h(r,e){return s(e)&&(r=w.unpack(r,e)),w.createGeometry(r)}var N=h;export{N as default}; diff --git a/public/Cesium/Workers/createPlaneOutlineGeometry.js b/public/Cesium/Workers/createPlaneOutlineGeometry.js new file mode 100644 index 000000000..0ef8789a3 --- /dev/null +++ b/public/Cesium/Workers/createPlaneOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as l}from"./chunk-A56XVLQR.js";import{b as d,c as y,d as s}from"./chunk-RCV6KWXS.js";import{d as c}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as f}from"./chunk-AU7IKHOH.js";import{a}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as m}from"./chunk-LEYMRMBK.js";import{e as i}from"./chunk-VTAIKJXX.js";function o(){this._workerName="createPlaneOutlineGeometry"}o.packedLength=0;o.pack=function(r,e){return m.defined("value",r),m.defined("array",e),e};o.unpack=function(r,e,t){return m.defined("array",r),i(t)?t:new o};var n=new a(-.5,-.5,0),p=new a(.5,.5,0);o.createGeometry=function(){let r=new l,e=new Uint16Array(8),t=new Float64Array(12);return t[0]=n.x,t[1]=n.y,t[2]=n.z,t[3]=p.x,t[4]=n.y,t[5]=n.z,t[6]=p.x,t[7]=p.y,t[8]=n.z,t[9]=n.x,t[10]=p.y,t[11]=n.z,r.position=new s({componentDatatype:f.DOUBLE,componentsPerAttribute:3,values:t}),e[0]=0,e[1]=1,e[2]=1,e[3]=2,e[4]=2,e[5]=3,e[6]=3,e[7]=0,new y({attributes:r,indices:e,primitiveType:d.LINES,boundingSphere:new c(a.ZERO,Math.sqrt(2))})};var u=o;function w(r,e){return i(e)&&(r=u.unpack(r,e)),u.createGeometry(r)}var D=w;export{D as default}; diff --git a/public/Cesium/Workers/createPolygonGeometry.js b/public/Cesium/Workers/createPolygonGeometry.js new file mode 100644 index 000000000..d9ce2f006 --- /dev/null +++ b/public/Cesium/Workers/createPolygonGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as mt}from"./chunk-WGGIH7QW.js";import{a as L}from"./chunk-AJYK4IVJ.js";import{a as st}from"./chunk-J6UP6FLE.js";import{a as rt}from"./chunk-D6AA5QVT.js";import{a as bt}from"./chunk-VW6VD53G.js";import"./chunk-DEPHB2WM.js";import"./chunk-QOUAJ6TL.js";import{a as lt}from"./chunk-GBYLG25F.js";import{a as q}from"./chunk-CYCB63OH.js";import{a as Z}from"./chunk-TCGIRNHN.js";import"./chunk-N4VJKXZS.js";import{a as dt,b as ot}from"./chunk-77IHZJJ3.js";import"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import{a as wt,b as yt}from"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as ct}from"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import{c as ut,d as $}from"./chunk-RCV6KWXS.js";import{d as Tt}from"./chunk-4IW2T6GF.js";import{f as at,h as _t}from"./chunk-PSPPBZWI.js";import{a as X}from"./chunk-AU7IKHOH.js";import{a as c,b as et,c as O,d as S,e as D,f as Pt}from"./chunk-64RSHJUE.js";import{a as l}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as ft,b as Y}from"./chunk-LEYMRMBK.js";import{e as P}from"./chunk-VTAIKJXX.js";function b(t,e){this.position=t,P(this.position)||(this.position=new O),this.tangentPlane=e,P(this.tangentPlane)||(this.tangentPlane=b.NORTH_POLE_TANGENT_PLANE)}Object.defineProperties(b.prototype,{ellipsoid:{get:function(){return this.tangentPlane.ellipsoid}},x:{get:function(){return this.position.x}},y:{get:function(){return this.position.y}},conformalLatitude:{get:function(){let t=O.magnitude(this.position),e=2*this.ellipsoid.maximumRadius;return this.tangentPlane.plane.normal.z*(l.PI_OVER_TWO-2*Math.atan2(t,e))}},longitude:{get:function(){let t=l.PI_OVER_TWO+Math.atan2(this.y,this.x);return t>Math.PI&&(t-=l.TWO_PI),t}}});var nt=new et,Rt=new c;b.prototype.getLatitude=function(t){P(t)||(t=S.default),nt.latitude=this.conformalLatitude,nt.longitude=this.longitude,nt.height=0;let e=this.ellipsoid.cartographicToCartesian(nt,Rt);return t.cartesianToCartographic(e,nt),nt.latitude};var It=new wt,Lt=new c,Ft=new c;b.fromCartesian=function(t,e){Y.defined("cartesian",t);let o=l.signNotZero(t.z),n=b.NORTH_POLE_TANGENT_PLANE,s=b.SOUTH_POLE;o<0&&(n=b.SOUTH_POLE_TANGENT_PLANE,s=b.NORTH_POLE);let i=It;i.origin=n.ellipsoid.scaleToGeocentricSurface(t,i.origin),i.direction=c.subtract(i.origin,s,Lt),c.normalize(i.direction,i.direction);let r=yt.rayPlane(i,n.plane,Ft),f=c.subtract(r,s,r),d=c.dot(n.xAxis,f),p=o*c.dot(n.yAxis,f);return P(e)?(e.position=new O(d,p),e.tangentPlane=n,e):new b(new O(d,p),n)};b.fromCartesianArray=function(t,e){Y.defined("cartesians",t);let o=t.length;P(e)?e.length=o:e=new Array(o);for(let n=0;n<o;n++)e[n]=b.fromCartesian(t[n],e[n]);return e};b.clone=function(t,e){if(P(t))return P(e)?(e.position=t.position,e.tangentPlane=t.tangentPlane,e):new b(t.position,t.tangentPlane)};b.HALF_UNIT_SPHERE=Object.freeze(new S(.5,.5,.5));b.NORTH_POLE=Object.freeze(new c(0,0,.5));b.SOUTH_POLE=Object.freeze(new c(0,0,-.5));b.NORTH_POLE_TANGENT_PLANE=Object.freeze(new Z(b.NORTH_POLE,b.HALF_UNIT_SPHERE));b.SOUTH_POLE_TANGENT_PLANE=Object.freeze(new Z(b.SOUTH_POLE,b.HALF_UNIT_SPHERE));var z=b;var vt=new et,Ot=new et;function St(t,e,o,n){let i=n.cartesianToCartographic(t,vt).height,r=n.cartesianToCartographic(e,Ot);r.height=i,n.cartographicToCartesian(r,e);let f=n.cartesianToCartographic(o,Ot);f.height=i-100,n.cartographicToCartesian(f,o)}var Et=new mt,Vt=new c,Bt=new c,Mt=new c,jt=new c,kt=new c,zt=new c,ht=new c,Q=new c,it=new c,Dt=new O,Ut=new O,Wt=new c,At=new at,Gt=new D,Yt=new D;function gt(t){let e=t.vertexFormat,o=t.geometry,n=t.shadowVolume,s=o.attributes.position.values,i=P(o.attributes.st)?o.attributes.st.values:void 0,r=s.length,f=t.wall,d=t.top||f,p=t.bottom||f;if(e.st||e.normal||e.tangent||e.bitangent||n){let w=t.boundingRectangle,a=t.rotationAxis,H=t.projectTo2d,x=t.ellipsoid,M=t.stRotation,C=t.perPositionHeight,R=Dt;R.x=w.x,R.y=w.y;let V=e.st?new Float32Array(2*(r/3)):void 0,u;e.normal&&(C&&d&&!f?u=o.attributes.normal.values:u=new Float32Array(r));let E=e.tangent?new Float32Array(r):void 0,A=e.bitangent?new Float32Array(r):void 0,F=n?new Float32Array(r):void 0,T=0,y=0,_=Bt,h=Mt,g=jt,j=!0,G=Gt,K=Yt;if(M!==0){let B=at.fromAxisAngle(a,M,At);G=D.fromQuaternion(B,G),B=at.fromAxisAngle(a,-M,At),K=D.fromQuaternion(B,K)}else G=D.clone(D.IDENTITY,G),K=D.clone(D.IDENTITY,K);let m=0,I=0;d&&p&&(m=r/2,I=r/3,r/=2);for(let B=0;B<r;B+=3){let k=c.fromArray(s,B,Wt);if(e.st&&!P(i)){let N=D.multiplyByVector(G,k,Vt);N=x.scaleToGeodeticSurface(N,N);let v=H([N],Ut)[0];O.subtract(v,R,v);let J=l.clamp(v.x/w.width,0,1),tt=l.clamp(v.y/w.height,0,1);p&&(V[T+I]=J,V[T+1+I]=tt),d&&(V[T]=J,V[T+1]=tt),T+=2}if(e.normal||e.tangent||e.bitangent||n){let N=y+1,v=y+2;if(f){if(B+3<r){let J=c.fromArray(s,B+3,kt);if(j){let tt=c.fromArray(s,B+r,zt);C&&St(k,J,tt,x),c.subtract(J,k,J),c.subtract(tt,k,tt),_=c.normalize(c.cross(tt,J,_),_),j=!1}c.equalsEpsilon(J,k,l.EPSILON10)&&(j=!0)}(e.tangent||e.bitangent)&&(g=x.geodeticSurfaceNormal(k,g),e.tangent&&(h=c.normalize(c.cross(g,_,h),h)))}else _=x.geodeticSurfaceNormal(k,_),(e.tangent||e.bitangent)&&(C&&(ht=c.fromArray(u,y,ht),Q=c.cross(c.UNIT_Z,ht,Q),Q=c.normalize(D.multiplyByVector(K,Q,Q),Q),e.bitangent&&(it=c.normalize(c.cross(ht,Q,it),it))),h=c.cross(c.UNIT_Z,_,h),h=c.normalize(D.multiplyByVector(K,h,h),h),e.bitangent&&(g=c.normalize(c.cross(_,h,g),g)));e.normal&&(t.wall?(u[y+m]=_.x,u[N+m]=_.y,u[v+m]=_.z):p&&(u[y+m]=-_.x,u[N+m]=-_.y,u[v+m]=-_.z),(d&&!C||f)&&(u[y]=_.x,u[N]=_.y,u[v]=_.z)),n&&(f&&(_=x.geodeticSurfaceNormal(k,_)),F[y+m]=-_.x,F[N+m]=-_.y,F[v+m]=-_.z),e.tangent&&(t.wall?(E[y+m]=h.x,E[N+m]=h.y,E[v+m]=h.z):p&&(E[y+m]=-h.x,E[N+m]=-h.y,E[v+m]=-h.z),d&&(C?(E[y]=Q.x,E[N]=Q.y,E[v]=Q.z):(E[y]=h.x,E[N]=h.y,E[v]=h.z))),e.bitangent&&(p&&(A[y+m]=g.x,A[N+m]=g.y,A[v+m]=g.z),d&&(C?(A[y]=it.x,A[N]=it.y,A[v]=it.z):(A[y]=g.x,A[N]=g.y,A[v]=g.z))),y+=3}}e.st&&!P(i)&&(o.attributes.st=new $({componentDatatype:X.FLOAT,componentsPerAttribute:2,values:V})),e.normal&&(o.attributes.normal=new $({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:u})),e.tangent&&(o.attributes.tangent=new $({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:E})),e.bitangent&&(o.attributes.bitangent=new $({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:A})),n&&(o.attributes.extrudeDirection=new $({componentDatatype:X.FLOAT,componentsPerAttribute:3,values:F}))}if(t.extrude&&P(t.offsetAttribute)){let w=s.length/3,a=new Uint8Array(w);if(t.offsetAttribute===lt.TOP)d&&p||f?a=a.fill(1,0,w/2):d&&(a=a.fill(1));else{let H=t.offsetAttribute===lt.NONE?0:1;a=a.fill(H)}o.attributes.applyOffset=new $({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:a})}return o}var Ht=[];function qt(t,e,o,n,s,i,r,f,d,p){let w={walls:[]},a;if(r||f){let u=L.createGeometryFromPositions(t,e,o,n,i,d,p),E=u.attributes.position.values,A=u.indices,F,T;if(r&&f){let y=E.concat(E);F=y.length/3,T=ct.createTypedArray(F,A.length*2),T.set(A);let _=A.length,h=F/2;for(a=0;a<_;a+=3){let g=T[a]+h,j=T[a+1]+h,G=T[a+2]+h;T[a+_]=G,T[a+1+_]=j,T[a+2+_]=g}if(u.attributes.position.values=y,i&&d.normal){let g=u.attributes.normal.values;u.attributes.normal.values=new Float32Array(y.length),u.attributes.normal.values.set(g)}if(d.st&&P(o)){let g=u.attributes.st.values;u.attributes.st.values=new Float32Array(F*2),u.attributes.st.values=g.concat(g)}u.indices=T}else if(f){for(F=E.length/3,T=ct.createTypedArray(F,A.length),a=0;a<A.length;a+=3)T[a]=A[a+2],T[a+1]=A[a+1],T[a+2]=A[a];u.indices=T}w.topAndBottom=new rt({geometry:u})}let H=s.outerRing,x=Z.fromPoints(H,t),M=x.projectPointsOntoPlane(H,Ht),C=ot.computeWindingOrder2D(M);C===dt.CLOCKWISE&&(H=H.slice().reverse());let R=L.computeWallGeometry(H,o,t,n,i,p);w.walls.push(new rt({geometry:R}));let V=s.holes;for(a=0;a<V.length;a++){let u=V[a];M=x.projectPointsOntoPlane(u,Ht),C=ot.computeWindingOrder2D(M),C===dt.COUNTER_CLOCKWISE&&(u=u.slice().reverse()),R=L.computeWallGeometry(u,o,t,n,i,p),w.walls.push(new rt({geometry:R}))}return w}function W(t){if(Y.typeOf.object("options",t),Y.typeOf.object("options.polygonHierarchy",t.polygonHierarchy),P(t.perPositionHeight)&&t.perPositionHeight&&P(t.height))throw new ft("Cannot use both options.perPositionHeight and options.height");if(P(t.arcType)&&t.arcType!==st.GEODESIC&&t.arcType!==st.RHUMB)throw new ft("Invalid arcType. Valid options are ArcType.GEODESIC and ArcType.RHUMB.");let e=t.polygonHierarchy,o=t.vertexFormat??q.DEFAULT,n=t.ellipsoid??S.default,s=t.granularity??l.RADIANS_PER_DEGREE,i=t.stRotation??0,r=t.textureCoordinates,f=t.perPositionHeight??!1,d=f&&P(t.extrudedHeight),p=t.height??0,w=t.extrudedHeight??p;if(!d){let a=Math.max(p,w);w=Math.min(p,w),p=a}this._vertexFormat=q.clone(o),this._ellipsoid=S.clone(n),this._granularity=s,this._stRotation=i,this._height=p,this._extrudedHeight=w,this._closeTop=t.closeTop??!0,this._closeBottom=t.closeBottom??!0,this._polygonHierarchy=e,this._perPositionHeight=f,this._perPositionHeightExtrude=d,this._shadowVolume=t.shadowVolume??!1,this._workerName="createPolygonGeometry",this._offsetAttribute=t.offsetAttribute,this._arcType=t.arcType??st.GEODESIC,this._rectangle=void 0,this._textureCoordinateRotationPoints=void 0,this._textureCoordinates=r,this.packedLength=L.computeHierarchyPackedLength(e,c)+S.packedLength+q.packedLength+(r?L.computeHierarchyPackedLength(r,O):1)+12}W.fromPositions=function(t){t=t??Pt.EMPTY_OBJECT,Y.defined("options.positions",t.positions);let e={polygonHierarchy:{positions:t.positions},height:t.height,extrudedHeight:t.extrudedHeight,vertexFormat:t.vertexFormat,stRotation:t.stRotation,ellipsoid:t.ellipsoid,granularity:t.granularity,perPositionHeight:t.perPositionHeight,closeTop:t.closeTop,closeBottom:t.closeBottom,offsetAttribute:t.offsetAttribute,arcType:t.arcType,textureCoordinates:t.textureCoordinates};return new W(e)};W.pack=function(t,e,o){return Y.typeOf.object("value",t),Y.defined("array",e),o=o??0,o=L.packPolygonHierarchy(t._polygonHierarchy,e,o,c),S.pack(t._ellipsoid,e,o),o+=S.packedLength,q.pack(t._vertexFormat,e,o),o+=q.packedLength,e[o++]=t._height,e[o++]=t._extrudedHeight,e[o++]=t._granularity,e[o++]=t._stRotation,e[o++]=t._perPositionHeightExtrude?1:0,e[o++]=t._perPositionHeight?1:0,e[o++]=t._closeTop?1:0,e[o++]=t._closeBottom?1:0,e[o++]=t._shadowVolume?1:0,e[o++]=t._offsetAttribute??-1,e[o++]=t._arcType,P(t._textureCoordinates)?o=L.packPolygonHierarchy(t._textureCoordinates,e,o,O):e[o++]=-1,e[o++]=t.packedLength,e};var Qt=S.clone(S.UNIT_SPHERE),Zt=new q,Kt={polygonHierarchy:{}};W.unpack=function(t,e,o){Y.defined("array",t),e=e??0;let n=L.unpackPolygonHierarchy(t,e,c);e=n.startingIndex,delete n.startingIndex;let s=S.unpack(t,e,Qt);e+=S.packedLength;let i=q.unpack(t,e,Zt);e+=q.packedLength;let r=t[e++],f=t[e++],d=t[e++],p=t[e++],w=t[e++]===1,a=t[e++]===1,H=t[e++]===1,x=t[e++]===1,M=t[e++]===1,C=t[e++],R=t[e++],V=t[e]===-1?void 0:L.unpackPolygonHierarchy(t,e,O);P(V)?(e=V.startingIndex,delete V.startingIndex):e++;let u=t[e++];return P(o)||(o=new W(Kt)),o._polygonHierarchy=n,o._ellipsoid=S.clone(s,o._ellipsoid),o._vertexFormat=q.clone(i,o._vertexFormat),o._height=r,o._extrudedHeight=f,o._granularity=d,o._stRotation=p,o._perPositionHeightExtrude=w,o._perPositionHeight=a,o._closeTop=H,o._closeBottom=x,o._shadowVolume=M,o._offsetAttribute=C===-1?void 0:C,o._arcType=R,o._textureCoordinates=V,o.packedLength=u,o};var Jt=new O,Xt=new O,$t=new z;function xt(t,e,o,n,s,i){let r=t.longitude,f=r>=0?r:r+l.TWO_PI;s.westOverIdl=Math.min(s.westOverIdl,f),s.eastOverIdl=Math.max(s.eastOverIdl,f),i.west=Math.min(i.west,r),i.east=Math.max(i.east,r);let d=t.getLatitude(o),p=d;if(i.south=Math.min(i.south,d),i.north=Math.max(i.north,d),n!==st.RHUMB){let H=O.subtract(e.position,t.position,Jt),x=O.dot(e.position,H)/O.dot(H,H);if(x>0&&x<1){let M=O.add(e.position,O.multiplyByScalar(H,-x,H),Xt),C=z.clone(e,$t);C.position=M;let R=C.getLatitude(o);i.south=Math.min(i.south,R),i.north=Math.max(i.north,R),Math.abs(d)>Math.abs(R)&&(p=R)}}let w=e.x*t.y-t.x*e.y,a=Math.sign(w);a!==0&&(a*=O.angleBetween(e.position,t.position)),p>=0&&(s.northAngle+=a),p<=0&&(s.southAngle+=a)}var Ct=new z,te=new z,U={northAngle:0,southAngle:0,westOverIdl:0,eastOverIdl:0};W.computeRectangleFromPositions=function(t,e,o,n){if(Y.defined("positions",t),P(n)||(n=new _t),t.length<3)return n;n.west=Number.POSITIVE_INFINITY,n.east=Number.NEGATIVE_INFINITY,n.south=Number.POSITIVE_INFINITY,n.north=Number.NEGATIVE_INFINITY,U.northAngle=0,U.southAngle=0,U.westOverIdl=Number.POSITIVE_INFINITY,U.eastOverIdl=Number.NEGATIVE_INFINITY;let s=t.length,i=z.fromCartesian(t[0],te);for(let r=1;r<s;r++){let f=z.fromCartesian(t[r],Ct);xt(f,i,e,o,U,n),i=z.clone(f,i)}return xt(z.fromCartesian(t[0],Ct),i,e,o,U,n),n.east-n.west>U.eastOverIdl-U.westOverIdl&&(n.west=U.westOverIdl,n.east=U.eastOverIdl,n.east>l.PI&&(n.east=n.east-l.TWO_PI),n.west>l.PI&&(n.west=n.west-l.TWO_PI)),l.equalsEpsilon(Math.abs(U.northAngle),l.TWO_PI,l.EPSILON10)&&(n.north=l.PI_OVER_TWO,n.east=l.PI,n.west=-l.PI),l.equalsEpsilon(Math.abs(U.southAngle),l.TWO_PI,l.EPSILON10)&&(n.south=-l.PI_OVER_TWO,n.east=l.PI,n.west=-l.PI),n};var ee=new z;function oe(t,e,o){return t.height>=l.PI||t.width>=l.PI?z.fromCartesian(e[0],ee).tangentPlane:Z.fromPoints(e,o)}var Nt=new et;function ne(t,e,o){return(n,s)=>{if(t.height>=l.PI||t.width>=l.PI){if(t.south<0&&t.north>0){P(s)||(s=[]);for(let r=0;r<n.length;++r){let f=o.cartesianToCartographic(n[r],Nt);s[r]=new O(f.longitude/l.PI,f.latitude/l.PI_OVER_TWO)}return s.length=n.length,s}return z.fromCartesianArray(n,s)}return Z.fromPoints(e,o).projectPointsOntoPlane(n,s)}}function ie(t,e,o){if(t.height>=l.PI||t.width>=l.PI)return(s,i)=>{if(t.south<0&&t.north>0){let r=o.cartesianToCartographic(s,Nt);return P(i)||(i=new O),i.x=r.longitude/l.PI,i.y=r.latitude/l.PI_OVER_TWO,i}return z.fromCartesian(s,i)};let n=Z.fromPoints(e,o);return(s,i)=>n.projectPointsOntoPlane(s,i)}function re(t,e,o,n){return(s,i)=>!n&&(t.height>=l.PI_OVER_TWO||t.width>=2*l.PI_OVER_THREE)?L.splitPolygonsOnEquator(s,e,o,i):s}function se(t,e,o,n){if(e.height>=l.PI||e.width>=l.PI)return mt.fromRectangle(e,void 0,Et);let s=t,i=Z.fromPoints(s,o);return L.computeBoundingRectangle(i.plane.normal,i.projectPointOntoPlane.bind(i),s,n,Et)}W.createGeometry=function(t){let e=t._vertexFormat,o=t._ellipsoid,n=t._granularity,s=t._stRotation,i=t._polygonHierarchy,r=t._perPositionHeight,f=t._closeTop,d=t._closeBottom,p=t._arcType,w=t._textureCoordinates,a=P(w),H=i.positions;if(H.length<3)return;let x=t.rectangle,M=L.polygonsFromHierarchy(i,a,ne(x,H,o),!r,o,re(x,o,p,r)),C=M.hierarchy,R=M.polygons,V=function(m){return m},u=a?L.polygonsFromHierarchy(w,!0,V,!1,o).polygons:void 0;if(C.length===0)return;let E=C[0].outerRing,A=se(E,x,o,s),F=[],T=t._height,y=t._extrudedHeight,_=t._perPositionHeightExtrude||!l.equalsEpsilon(T,y,0,l.EPSILON2),h={perPositionHeight:r,vertexFormat:e,geometry:void 0,rotationAxis:oe(x,E,o).plane.normal,projectTo2d:ie(x,E,o),boundingRectangle:A,ellipsoid:o,stRotation:s,textureCoordinates:void 0,bottom:!1,top:!0,wall:!1,extrude:!1,arcType:p},g;if(_)for(h.extrude=!0,h.top=f,h.bottom=d,h.shadowVolume=t._shadowVolume,h.offsetAttribute=t._offsetAttribute,g=0;g<R.length;g++){let m=qt(o,R[g],a?u[g]:void 0,n,C[g],r,f,d,e,p),I;f&&d?(I=m.topAndBottom,h.geometry=L.scaleToGeodeticHeightExtruded(I.geometry,T,y,o,r)):f?(I=m.topAndBottom,I.geometry.attributes.position.values=ot.scaleToGeodeticHeight(I.geometry.attributes.position.values,T,o,!r),h.geometry=I.geometry):d&&(I=m.topAndBottom,I.geometry.attributes.position.values=ot.scaleToGeodeticHeight(I.geometry.attributes.position.values,y,o,!0),h.geometry=I.geometry),(f||d)&&(h.wall=!1,I.geometry=gt(h),F.push(I));let B=m.walls;h.wall=!0;for(let k=0;k<B.length;k++){let N=B[k];h.geometry=L.scaleToGeodeticHeightExtruded(N.geometry,T,y,o,r),N.geometry=gt(h),F.push(N)}}else for(g=0;g<R.length;g++){let m=new rt({geometry:L.createGeometryFromPositions(o,R[g],a?u[g]:void 0,n,r,e,p)});if(m.geometry.attributes.position.values=ot.scaleToGeodeticHeight(m.geometry.attributes.position.values,T,o,!r),h.geometry=m.geometry,m.geometry=gt(h),P(t._offsetAttribute)){let I=m.geometry.attributes.position.values.length,B=t._offsetAttribute===lt.NONE?0:1,k=new Uint8Array(I/3).fill(B);m.geometry.attributes.applyOffset=new $({componentDatatype:X.UNSIGNED_BYTE,componentsPerAttribute:1,values:k})}F.push(m)}let j=bt.combineInstances(F)[0];j.attributes.position.values=new Float64Array(j.attributes.position.values),j.indices=ct.createTypedArray(j.attributes.position.values.length/3,j.indices);let G=j.attributes,K=Tt.fromVertices(G.position.values);return e.position||delete G.position,new ut({attributes:G,indices:j.indices,primitiveType:j.primitiveType,boundingSphere:K,offsetAttribute:t._offsetAttribute})};W.createShadowVolume=function(t,e,o){let n=t._granularity,s=t._ellipsoid,i=e(n,s),r=o(n,s);return new W({polygonHierarchy:t._polygonHierarchy,ellipsoid:s,stRotation:t._stRotation,granularity:n,perPositionHeight:!1,extrudedHeight:i,height:r,vertexFormat:q.POSITION_ONLY,shadowVolume:!0,arcType:t._arcType})};function ae(t){let e=-t._stRotation;if(e===0)return[0,0,0,1,1,0];let o=t._ellipsoid,n=t._polygonHierarchy.positions,s=t.rectangle;return ut._textureCoordinateRotationPoints(n,e,o,s)}Object.defineProperties(W.prototype,{rectangle:{get:function(){if(!P(this._rectangle)){let t=this._polygonHierarchy.positions;this._rectangle=W.computeRectangleFromPositions(t,this._ellipsoid,this._arcType)}return this._rectangle}},textureCoordinateRotationPoints:{get:function(){return P(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=ae(this)),this._textureCoordinateRotationPoints}}});var pt=W;function ce(t,e){return P(e)&&(t=pt.unpack(t,e)),t._ellipsoid=S.clone(t._ellipsoid),pt.createGeometry(t)}var Xe=ce;export{Xe as default}; diff --git a/public/Cesium/Workers/createPolygonOutlineGeometry.js b/public/Cesium/Workers/createPolygonOutlineGeometry.js new file mode 100644 index 000000000..1a41d0181 --- /dev/null +++ b/public/Cesium/Workers/createPolygonOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a}from"./chunk-AJYK4IVJ.js";import{a as P}from"./chunk-J6UP6FLE.js";import{a as F}from"./chunk-D6AA5QVT.js";import{a as V}from"./chunk-VW6VD53G.js";import"./chunk-DEPHB2WM.js";import"./chunk-QOUAJ6TL.js";import{a as C}from"./chunk-GBYLG25F.js";import{a as M}from"./chunk-TCGIRNHN.js";import"./chunk-N4VJKXZS.js";import{a as W,b as D}from"./chunk-77IHZJJ3.js";import"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as G}from"./chunk-OFUUQVMR.js";import{a as B}from"./chunk-A56XVLQR.js";import{b as U,c as S,d as w}from"./chunk-RCV6KWXS.js";import{d as x}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as T}from"./chunk-AU7IKHOH.js";import{a as v,d as y,f as j}from"./chunk-64RSHJUE.js";import{a as L}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as N,b as O}from"./chunk-LEYMRMBK.js";import{e as E}from"./chunk-VTAIKJXX.js";var Y=[],k=[];function K(e,t,r,b,l){let p=M.fromPoints(t,e).projectPointsOntoPlane(t,Y);D.computeWindingOrder2D(p)===W.CLOCKWISE&&(p.reverse(),t=t.slice().reverse());let n,i,o=t.length,c=0;if(b)for(n=new Float64Array(o*2*3),i=0;i<o;i++){let u=t[i],h=t[(i+1)%o];n[c++]=u.x,n[c++]=u.y,n[c++]=u.z,n[c++]=h.x,n[c++]=h.y,n[c++]=h.z}else{let u=0;if(l===P.GEODESIC)for(i=0;i<o;i++)u+=a.subdivideLineCount(t[i],t[(i+1)%o],r);else if(l===P.RHUMB)for(i=0;i<o;i++)u+=a.subdivideRhumbLineCount(e,t[i],t[(i+1)%o],r);for(n=new Float64Array(u*3),i=0;i<o;i++){let h;l===P.GEODESIC?h=a.subdivideLine(t[i],t[(i+1)%o],r,k):l===P.RHUMB&&(h=a.subdivideRhumbLine(e,t[i],t[(i+1)%o],r,k));let g=h.length;for(let d=0;d<g;++d)n[c++]=h[d]}}o=n.length/3;let f=o*2,m=G.createTypedArray(o,f);for(c=0,i=0;i<o-1;i++)m[c++]=i,m[c++]=i+1;return m[c++]=o-1,m[c++]=0,new F({geometry:new S({attributes:new B({position:new w({componentDatatype:T.DOUBLE,componentsPerAttribute:3,values:n})}),indices:m,primitiveType:U.LINES})})}function q(e,t,r,b,l){let p=M.fromPoints(t,e).projectPointsOntoPlane(t,Y);D.computeWindingOrder2D(p)===W.CLOCKWISE&&(p.reverse(),t=t.slice().reverse());let n,i,o=t.length,c=new Array(o),f=0;if(b)for(n=new Float64Array(o*2*3*2),i=0;i<o;++i){c[i]=f/3;let g=t[i],d=t[(i+1)%o];n[f++]=g.x,n[f++]=g.y,n[f++]=g.z,n[f++]=d.x,n[f++]=d.y,n[f++]=d.z}else{let g=0;if(l===P.GEODESIC)for(i=0;i<o;i++)g+=a.subdivideLineCount(t[i],t[(i+1)%o],r);else if(l===P.RHUMB)for(i=0;i<o;i++)g+=a.subdivideRhumbLineCount(e,t[i],t[(i+1)%o],r);for(n=new Float64Array(g*3*2),i=0;i<o;++i){c[i]=f/3;let d;l===P.GEODESIC?d=a.subdivideLine(t[i],t[(i+1)%o],r,k):l===P.RHUMB&&(d=a.subdivideRhumbLine(e,t[i],t[(i+1)%o],r,k));let _=d.length;for(let R=0;R<_;++R)n[f++]=d[R]}}o=n.length/6;let m=c.length,u=(o*2+m)*2,h=G.createTypedArray(o+m,u);for(f=0,i=0;i<o;++i)h[f++]=i,h[f++]=(i+1)%o,h[f++]=i+o,h[f++]=(i+1)%o+o;for(i=0;i<m;i++){let g=c[i];h[f++]=g,h[f++]=g+o}return new F({geometry:new S({attributes:new B({position:new w({componentDatatype:T.DOUBLE,componentsPerAttribute:3,values:n})}),indices:h,primitiveType:U.LINES})})}function A(e){if(O.typeOf.object("options",e),O.typeOf.object("options.polygonHierarchy",e.polygonHierarchy),e.perPositionHeight&&E(e.height))throw new N("Cannot use both options.perPositionHeight and options.height");if(E(e.arcType)&&e.arcType!==P.GEODESIC&&e.arcType!==P.RHUMB)throw new N("Invalid arcType. Valid options are ArcType.GEODESIC and ArcType.RHUMB.");let t=e.polygonHierarchy,r=e.ellipsoid??y.default,b=e.granularity??L.RADIANS_PER_DEGREE,l=e.perPositionHeight??!1,H=l&&E(e.extrudedHeight),p=e.arcType??P.GEODESIC,s=e.height??0,n=e.extrudedHeight??s;if(!H){let i=Math.max(s,n);n=Math.min(s,n),s=i}this._ellipsoid=y.clone(r),this._granularity=b,this._height=s,this._extrudedHeight=n,this._arcType=p,this._polygonHierarchy=t,this._perPositionHeight=l,this._perPositionHeightExtrude=H,this._offsetAttribute=e.offsetAttribute,this._workerName="createPolygonOutlineGeometry",this.packedLength=a.computeHierarchyPackedLength(t,v)+y.packedLength+8}A.pack=function(e,t,r){return O.typeOf.object("value",e),O.defined("array",t),r=r??0,r=a.packPolygonHierarchy(e._polygonHierarchy,t,r,v),y.pack(e._ellipsoid,t,r),r+=y.packedLength,t[r++]=e._height,t[r++]=e._extrudedHeight,t[r++]=e._granularity,t[r++]=e._perPositionHeightExtrude?1:0,t[r++]=e._perPositionHeight?1:0,t[r++]=e._arcType,t[r++]=e._offsetAttribute??-1,t[r]=e.packedLength,t};var J=y.clone(y.UNIT_SPHERE),Q={polygonHierarchy:{}};A.unpack=function(e,t,r){O.defined("array",e),t=t??0;let b=a.unpackPolygonHierarchy(e,t,v);t=b.startingIndex,delete b.startingIndex;let l=y.unpack(e,t,J);t+=y.packedLength;let H=e[t++],p=e[t++],s=e[t++],n=e[t++]===1,i=e[t++]===1,o=e[t++],c=e[t++],f=e[t];return E(r)||(r=new A(Q)),r._polygonHierarchy=b,r._ellipsoid=y.clone(l,r._ellipsoid),r._height=H,r._extrudedHeight=p,r._granularity=s,r._perPositionHeight=i,r._perPositionHeightExtrude=n,r._arcType=o,r._offsetAttribute=c===-1?void 0:c,r.packedLength=f,r};A.fromPositions=function(e){e=e??j.EMPTY_OBJECT,O.defined("options.positions",e.positions);let t={polygonHierarchy:{positions:e.positions},height:e.height,extrudedHeight:e.extrudedHeight,ellipsoid:e.ellipsoid,granularity:e.granularity,perPositionHeight:e.perPositionHeight,arcType:e.arcType,offsetAttribute:e.offsetAttribute};return new A(t)};A.createGeometry=function(e){let t=e._ellipsoid,r=e._granularity,b=e._polygonHierarchy,l=e._perPositionHeight,H=e._arcType,p=a.polygonOutlinesFromHierarchy(b,!l,t);if(p.length===0)return;let s,n=[],i=L.chordLength(r,t.maximumRadius),o=e._height,c=e._extrudedHeight,f=e._perPositionHeightExtrude||!L.equalsEpsilon(o,c,0,L.EPSILON2),m,u;if(f)for(u=0;u<p.length;u++){if(s=q(t,p[u],i,l,H),s.geometry=a.scaleToGeodeticHeightExtruded(s.geometry,o,c,t,l),E(e._offsetAttribute)){let d=s.geometry.attributes.position.values.length/3,_=new Uint8Array(d);e._offsetAttribute===C.TOP?_=_.fill(1,0,d/2):(m=e._offsetAttribute===C.NONE?0:1,_=_.fill(m)),s.geometry.attributes.applyOffset=new w({componentDatatype:T.UNSIGNED_BYTE,componentsPerAttribute:1,values:_})}n.push(s)}else for(u=0;u<p.length;u++){if(s=K(t,p[u],i,l,H),s.geometry.attributes.position.values=D.scaleToGeodeticHeight(s.geometry.attributes.position.values,o,t,!l),E(e._offsetAttribute)){let d=s.geometry.attributes.position.values.length;m=e._offsetAttribute===C.NONE?0:1;let _=new Uint8Array(d/3).fill(m);s.geometry.attributes.applyOffset=new w({componentDatatype:T.UNSIGNED_BYTE,componentsPerAttribute:1,values:_})}n.push(s)}let h=V.combineInstances(n)[0],g=x.fromVertices(h.attributes.position.values);return new S({attributes:h.attributes,indices:h.indices,primitiveType:h.primitiveType,boundingSphere:g,offsetAttribute:e._offsetAttribute})};var z=A;function X(e,t){return E(t)&&(e=z.unpack(e,t)),e._ellipsoid=y.clone(e._ellipsoid),z.createGeometry(e)}var Oe=X;export{Oe as default}; diff --git a/public/Cesium/Workers/createPolylineGeometry.js b/public/Cesium/Workers/createPolylineGeometry.js new file mode 100644 index 000000000..8b4724bb2 --- /dev/null +++ b/public/Cesium/Workers/createPolylineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as m}from"./chunk-HMIYSTF6.js";import{a as R}from"./chunk-J6UP6FLE.js";import{a as N}from"./chunk-XRL4AVS5.js";import"./chunk-U4IEOH5K.js";import{a as g}from"./chunk-CYCB63OH.js";import{a as le}from"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as se}from"./chunk-OFUUQVMR.js";import{a as ce}from"./chunk-A56XVLQR.js";import{a as ne,b as re,c as ie,d as x}from"./chunk-RCV6KWXS.js";import{d as oe}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as V}from"./chunk-AU7IKHOH.js";import{a as p,d as u,f as te}from"./chunk-64RSHJUE.js";import{a as j}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as F}from"./chunk-LEYMRMBK.js";import{e as h}from"./chunk-VTAIKJXX.js";var me=[];function Ae(e,o,t,n,c){let s=me;s.length=c;let l,k=t.red,a=t.green,r=t.blue,w=t.alpha,E=n.red,i=n.green,f=n.blue,b=n.alpha;if(m.equals(t,n)){for(l=0;l<c;l++)s[l]=m.clone(t);return s}let G=(E-k)/c,z=(i-a)/c,M=(f-r)/c,S=(b-w)/c;for(l=0;l<c;l++)s[l]=new m(k+l*G,a+l*z,r+l*M,w+l*S);return s}function q(e){e=e??te.EMPTY_OBJECT;let o=e.positions,t=e.colors,n=e.width??1,c=e.colorsPerVertex??!1;if(!h(o)||o.length<2)throw new F("At least two positions are required.");if(typeof n!="number")throw new F("width must be a number");if(h(t)&&(c&&t.length<o.length||!c&&t.length<o.length-1))throw new F("colors has an invalid length.");this._positions=o,this._colors=t,this._width=n,this._colorsPerVertex=c,this._vertexFormat=g.clone(e.vertexFormat??g.DEFAULT),this._arcType=e.arcType??R.GEODESIC,this._granularity=e.granularity??j.RADIANS_PER_DEGREE,this._ellipsoid=u.clone(e.ellipsoid??u.default),this._workerName="createPolylineGeometry";let s=1+o.length*p.packedLength;s+=h(t)?1+t.length*m.packedLength:1,this.packedLength=s+u.packedLength+g.packedLength+4}q.pack=function(e,o,t){if(!h(e))throw new F("value is required");if(!h(o))throw new F("array is required");t=t??0;let n,c=e._positions,s=c.length;for(o[t++]=s,n=0;n<s;++n,t+=p.packedLength)p.pack(c[n],o,t);let l=e._colors;for(s=h(l)?l.length:0,o[t++]=s,n=0;n<s;++n,t+=m.packedLength)m.pack(l[n],o,t);return u.pack(e._ellipsoid,o,t),t+=u.packedLength,g.pack(e._vertexFormat,o,t),t+=g.packedLength,o[t++]=e._width,o[t++]=e._colorsPerVertex?1:0,o[t++]=e._arcType,o[t]=e._granularity,o};var de=u.clone(u.UNIT_SPHERE),ue=new g,O={positions:void 0,colors:void 0,ellipsoid:de,vertexFormat:ue,width:void 0,colorsPerVertex:void 0,arcType:void 0,granularity:void 0};q.unpack=function(e,o,t){if(!h(e))throw new F("array is required");o=o??0;let n,c=e[o++],s=new Array(c);for(n=0;n<c;++n,o+=p.packedLength)s[n]=p.unpack(e,o);c=e[o++];let l=c>0?new Array(c):void 0;for(n=0;n<c;++n,o+=m.packedLength)l[n]=m.unpack(e,o);let k=u.unpack(e,o,de);o+=u.packedLength;let a=g.unpack(e,o,ue);o+=g.packedLength;let r=e[o++],w=e[o++]===1,E=e[o++],i=e[o];return h(t)?(t._positions=s,t._colors=l,t._ellipsoid=u.clone(k,t._ellipsoid),t._vertexFormat=g.clone(a,t._vertexFormat),t._width=r,t._colorsPerVertex=w,t._arcType=E,t._granularity=i,t):(O.positions=s,O.colors=l,O.width=r,O.colorsPerVertex=w,O.arcType=E,O.granularity=i,new q(O))};var pe=new p,ae=new p,fe=new p,he=new p;q.createGeometry=function(e){let o=e._width,t=e._vertexFormat,n=e._colors,c=e._colorsPerVertex,s=e._arcType,l=e._granularity,k=e._ellipsoid,a,r,w,E=[],i=le(e._positions,p.equalsEpsilon,!1,E);if(h(n)&&E.length>0){let d=0,P=E[0];n=n.filter(function(U,L){let A=!1;return c?A=L===P||L===0&&P===1:A=L+1===P,A?(d++,P=E[d],!1):!0})}let f=i.length;if(f<2||o<=0)return;if(s===R.GEODESIC||s===R.RHUMB){let d,P;s===R.GEODESIC?(d=j.chordLength(l,k.maximumRadius),P=N.numberOfPoints):(d=l,P=N.numberOfPointsRhumbLine);let U=N.extractHeights(i,k);if(h(n)){let L=1;for(a=0;a<f-1;++a)L+=P(i[a],i[a+1],d);let A=new Array(L),y=0;for(a=0;a<f-1;++a){let X=i[a],Z=i[a+1],$=n[a],I=P(X,Z,d);if(c&&a<L){let _e=n[a+1],ee=Ae(X,Z,$,_e,I),Pe=ee.length;for(r=0;r<Pe;++r)A[y++]=ee[r]}else for(r=0;r<I;++r)A[y++]=m.clone($)}A[y]=m.clone(n[n.length-1]),n=A,me.length=0}s===R.GEODESIC?i=N.generateCartesianArc({positions:i,minDistance:d,ellipsoid:k,height:U}):i=N.generateCartesianRhumbArc({positions:i,granularity:d,ellipsoid:k,height:U})}f=i.length;let b=f*4-4,G=new Float64Array(b*3),z=new Float64Array(b*3),M=new Float64Array(b*3),S=new Float32Array(b*2),Y=t.st?new Float32Array(b*2):void 0,T=h(n)?new Uint8Array(b*4):void 0,H=0,K=0,Q=0,W=0,_;for(r=0;r<f;++r){r===0?(_=pe,p.subtract(i[0],i[1],_),p.add(i[0],_,_)):_=i[r-1],p.clone(_,fe),p.clone(i[r],ae),r===f-1?(_=pe,p.subtract(i[f-1],i[f-2],_),p.add(i[f-1],_,_)):_=i[r+1],p.clone(_,he);let d,P;h(T)&&(r!==0&&!c?d=n[r-1]:d=n[r],r!==f-1&&(P=n[r]));let U=r===0?2:0,L=r===f-1?2:4;for(w=U;w<L;++w){p.pack(ae,G,H),p.pack(fe,z,H),p.pack(he,M,H),H+=3;let A=w-2<0?-1:1;if(S[K++]=2*(w%2)-1,S[K++]=A*o,t.st&&(Y[Q++]=r/(f-1),Y[Q++]=Math.max(S[K-2],0)),h(T)){let y=w<2?d:P;T[W++]=m.floatToByte(y.red),T[W++]=m.floatToByte(y.green),T[W++]=m.floatToByte(y.blue),T[W++]=m.floatToByte(y.alpha)}}}let D=new ce;D.position=new x({componentDatatype:V.DOUBLE,componentsPerAttribute:3,values:G}),D.prevPosition=new x({componentDatatype:V.DOUBLE,componentsPerAttribute:3,values:z}),D.nextPosition=new x({componentDatatype:V.DOUBLE,componentsPerAttribute:3,values:M}),D.expandAndWidth=new x({componentDatatype:V.FLOAT,componentsPerAttribute:2,values:S}),t.st&&(D.st=new x({componentDatatype:V.FLOAT,componentsPerAttribute:2,values:Y})),h(T)&&(D.color=new x({componentDatatype:V.UNSIGNED_BYTE,componentsPerAttribute:4,values:T,normalize:!0}));let v=se.createTypedArray(b,f*6-6),C=0,B=0,we=f-1;for(r=0;r<we;++r)v[B++]=C,v[B++]=C+2,v[B++]=C+1,v[B++]=C+1,v[B++]=C+2,v[B++]=C+3,C+=4;return new ie({attributes:D,indices:v,primitiveType:re.TRIANGLES,boundingSphere:oe.fromPoints(i),geometryType:ne.POLYLINES})};var J=q;function ge(e,o){return h(o)&&(e=J.unpack(e,o)),e._ellipsoid=u.clone(e._ellipsoid),J.createGeometry(e)}var We=ge;export{We as default}; diff --git a/public/Cesium/Workers/createPolylineVolumeGeometry.js b/public/Cesium/Workers/createPolylineVolumeGeometry.js new file mode 100644 index 000000000..2c304a025 --- /dev/null +++ b/public/Cesium/Workers/createPolylineVolumeGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as W}from"./chunk-WGGIH7QW.js";import{a as U}from"./chunk-VW6VD53G.js";import"./chunk-DEPHB2WM.js";import"./chunk-QOUAJ6TL.js";import{a as x,b as I,c as j}from"./chunk-B4AA3ARO.js";import"./chunk-XRL4AVS5.js";import"./chunk-U4IEOH5K.js";import{a as g}from"./chunk-CYCB63OH.js";import"./chunk-TCGIRNHN.js";import"./chunk-N4VJKXZS.js";import{a as $,b as M}from"./chunk-77IHZJJ3.js";import{a as Z}from"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as X}from"./chunk-OFUUQVMR.js";import{a as Q}from"./chunk-A56XVLQR.js";import{b as V,c as Y,d as B}from"./chunk-RCV6KWXS.js";import{d as K}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as N}from"./chunk-AU7IKHOH.js";import{a as E,c as D,d as f,f as J}from"./chunk-64RSHJUE.js";import{a as H}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as A}from"./chunk-LEYMRMBK.js";import{e as _}from"./chunk-VTAIKJXX.js";function oe(t,e,n,o){let m=new Q;o.position&&(m.position=new B({componentDatatype:N.DOUBLE,componentsPerAttribute:3,values:t}));let i=e.length,u=t.length/3,w=(u-i*2)/(i*2),L=M.triangulate(e),R=(w-1)*i*6+L.length*2,r=X.createTypedArray(u,R),l,s,d,T,b,F,q=i*2,p=0;for(l=0;l<w-1;l++){for(s=0;s<i-1;s++)d=s*2+l*i*2,F=d+q,T=d+1,b=T+q,r[p++]=T,r[p++]=d,r[p++]=b,r[p++]=b,r[p++]=d,r[p++]=F;d=i*2-2+l*i*2,T=d+1,b=T+q,F=d+q,r[p++]=T,r[p++]=d,r[p++]=b,r[p++]=b,r[p++]=d,r[p++]=F}if(o.st||o.tangent||o.bitangent){let c=new Float32Array(u*2),C=1/(w-1),P=1/n.height,O=n.height/2,y,a,h=0;for(l=0;l<w;l++){for(y=l*C,a=P*(e[0].y+O),c[h++]=y,c[h++]=a,s=1;s<i;s++)a=P*(e[s].y+O),c[h++]=y,c[h++]=a,c[h++]=y,c[h++]=a;a=P*(e[0].y+O),c[h++]=y,c[h++]=a}for(s=0;s<i;s++)y=0,a=P*(e[s].y+O),c[h++]=y,c[h++]=a;for(s=0;s<i;s++)y=(w-1)*C,a=P*(e[s].y+O),c[h++]=y,c[h++]=a;m.st=new B({componentDatatype:N.FLOAT,componentsPerAttribute:2,values:new Float32Array(c)})}let G=u-i*2;for(l=0;l<L.length;l+=3){let c=L[l]+G,C=L[l+1]+G,P=L[l+2]+G;r[p++]=c,r[p++]=C,r[p++]=P,r[p++]=P+i,r[p++]=C+i,r[p++]=c+i}let k=new Y({attributes:m,indices:r,boundingSphere:K.fromVertices(t),primitiveType:V.TRIANGLES});if(o.normal&&(k=U.computeNormal(k)),o.tangent||o.bitangent){try{k=U.computeTangentAndBitangent(k)}catch{I("polyline-volume-tangent-bitangent","Unable to compute tangents and bitangents for polyline volume geometry")}o.tangent||(k.attributes.tangent=void 0),o.bitangent||(k.attributes.bitangent=void 0),o.st||(k.attributes.st=void 0)}return k}function v(t){t=t??J.EMPTY_OBJECT;let e=t.polylinePositions,n=t.shapePositions;if(!_(e))throw new A("options.polylinePositions is required.");if(!_(n))throw new A("options.shapePositions is required.");this._positions=e,this._shape=n,this._ellipsoid=f.clone(t.ellipsoid??f.default),this._cornerType=t.cornerType??x.ROUNDED,this._vertexFormat=g.clone(t.vertexFormat??g.DEFAULT),this._granularity=t.granularity??H.RADIANS_PER_DEGREE,this._workerName="createPolylineVolumeGeometry";let o=1+e.length*E.packedLength;o+=1+n.length*D.packedLength,this.packedLength=o+f.packedLength+g.packedLength+2}v.pack=function(t,e,n){if(!_(t))throw new A("value is required");if(!_(e))throw new A("array is required");n=n??0;let o,m=t._positions,i=m.length;for(e[n++]=i,o=0;o<i;++o,n+=E.packedLength)E.pack(m[o],e,n);let u=t._shape;for(i=u.length,e[n++]=i,o=0;o<i;++o,n+=D.packedLength)D.pack(u[o],e,n);return f.pack(t._ellipsoid,e,n),n+=f.packedLength,g.pack(t._vertexFormat,e,n),n+=g.packedLength,e[n++]=t._cornerType,e[n]=t._granularity,e};var ee=f.clone(f.UNIT_SPHERE),te=new g,S={polylinePositions:void 0,shapePositions:void 0,ellipsoid:ee,vertexFormat:te,cornerType:void 0,granularity:void 0};v.unpack=function(t,e,n){if(!_(t))throw new A("array is required");e=e??0;let o,m=t[e++],i=new Array(m);for(o=0;o<m;++o,e+=E.packedLength)i[o]=E.unpack(t,e);m=t[e++];let u=new Array(m);for(o=0;o<m;++o,e+=D.packedLength)u[o]=D.unpack(t,e);let w=f.unpack(t,e,ee);e+=f.packedLength;let L=g.unpack(t,e,te);e+=g.packedLength;let R=t[e++],r=t[e];return _(n)?(n._positions=i,n._shape=u,n._ellipsoid=f.clone(w,n._ellipsoid),n._vertexFormat=g.clone(L,n._vertexFormat),n._cornerType=R,n._granularity=r,n):(S.polylinePositions=i,S.shapePositions=u,S.cornerType=R,S.granularity=r,new v(S))};var ne=new W;v.createGeometry=function(t){let e=t._positions,n=Z(e,E.equalsEpsilon),o=t._shape;if(o=j.removeDuplicatesFromShape(o),n.length<2||o.length<3)return;M.computeWindingOrder2D(o)===$.CLOCKWISE&&o.reverse();let m=W.fromPoints(o,ne),i=j.computePositions(n,o,m,t,!0);return oe(i,o,m,t._vertexFormat)};var z=v;function ie(t,e){return _(e)&&(t=z.unpack(t,e)),t._ellipsoid=f.clone(t._ellipsoid),z.createGeometry(t)}var Re=ie;export{Re as default}; diff --git a/public/Cesium/Workers/createPolylineVolumeOutlineGeometry.js b/public/Cesium/Workers/createPolylineVolumeOutlineGeometry.js new file mode 100644 index 000000000..fffa4c75b --- /dev/null +++ b/public/Cesium/Workers/createPolylineVolumeOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as k}from"./chunk-WGGIH7QW.js";import{a as N,c as w}from"./chunk-B4AA3ARO.js";import"./chunk-XRL4AVS5.js";import"./chunk-U4IEOH5K.js";import"./chunk-TCGIRNHN.js";import"./chunk-N4VJKXZS.js";import{a as v,b as G}from"./chunk-77IHZJJ3.js";import{a as q}from"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as g}from"./chunk-OFUUQVMR.js";import{a as O}from"./chunk-A56XVLQR.js";import{b as A,c as R,d as S}from"./chunk-RCV6KWXS.js";import{d as C}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as b}from"./chunk-AU7IKHOH.js";import{a as d,c as y,d as s,f as D}from"./chunk-64RSHJUE.js";import{a as T}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a}from"./chunk-LEYMRMBK.js";import{e as u}from"./chunk-VTAIKJXX.js";function W(o,i){let t=new O;t.position=new S({componentDatatype:b.DOUBLE,componentsPerAttribute:3,values:o});let e=i.length,r=t.position.values.length/3,f=o.length/3/e,p=g.createTypedArray(r,2*e*(f+1)),m,n,l=0;m=0;let h=m*e;for(n=0;n<e-1;n++)p[l++]=n+h,p[l++]=n+h+1;for(p[l++]=e-1+h,p[l++]=h,m=f-1,h=m*e,n=0;n<e-1;n++)p[l++]=n+h,p[l++]=n+h+1;for(p[l++]=e-1+h,p[l++]=h,m=0;m<f-1;m++){let L=e*m,U=L+e;for(n=0;n<e;n++)p[l++]=n+L,p[l++]=n+U}return new R({attributes:t,indices:g.createTypedArray(r,p),boundingSphere:C.fromVertices(o),primitiveType:A.LINES})}function P(o){o=o??D.EMPTY_OBJECT;let i=o.polylinePositions,t=o.shapePositions;if(!u(i))throw new a("options.polylinePositions is required.");if(!u(t))throw new a("options.shapePositions is required.");this._positions=i,this._shape=t,this._ellipsoid=s.clone(o.ellipsoid??s.default),this._cornerType=o.cornerType??N.ROUNDED,this._granularity=o.granularity??T.RADIANS_PER_DEGREE,this._workerName="createPolylineVolumeOutlineGeometry";let e=1+i.length*d.packedLength;e+=1+t.length*y.packedLength,this.packedLength=e+s.packedLength+2}P.pack=function(o,i,t){if(!u(o))throw new a("value is required");if(!u(i))throw new a("array is required");t=t??0;let e,r=o._positions,c=r.length;for(i[t++]=c,e=0;e<c;++e,t+=d.packedLength)d.pack(r[e],i,t);let f=o._shape;for(c=f.length,i[t++]=c,e=0;e<c;++e,t+=y.packedLength)y.pack(f[e],i,t);return s.pack(o._ellipsoid,i,t),t+=s.packedLength,i[t++]=o._cornerType,i[t]=o._granularity,i};var B=s.clone(s.UNIT_SPHERE),_={polylinePositions:void 0,shapePositions:void 0,ellipsoid:B,height:void 0,cornerType:void 0,granularity:void 0};P.unpack=function(o,i,t){if(!u(o))throw new a("array is required");i=i??0;let e,r=o[i++],c=new Array(r);for(e=0;e<r;++e,i+=d.packedLength)c[e]=d.unpack(o,i);r=o[i++];let f=new Array(r);for(e=0;e<r;++e,i+=y.packedLength)f[e]=y.unpack(o,i);let p=s.unpack(o,i,B);i+=s.packedLength;let m=o[i++],n=o[i];return u(t)?(t._positions=c,t._shape=f,t._ellipsoid=s.clone(p,t._ellipsoid),t._cornerType=m,t._granularity=n,t):(_.polylinePositions=c,_.shapePositions=f,_.cornerType=m,_.granularity=n,new P(_))};var F=new k;P.createGeometry=function(o){let i=o._positions,t=q(i,d.equalsEpsilon),e=o._shape;if(e=w.removeDuplicatesFromShape(e),t.length<2||e.length<3)return;G.computeWindingOrder2D(e)===v.CLOCKWISE&&e.reverse();let r=k.fromPoints(e,F),c=w.computePositions(t,e,r,o,!1);return W(c,e)};var E=P;function M(o,i){return u(i)&&(o=E.unpack(o,i)),o._ellipsoid=s.clone(o._ellipsoid),E.createGeometry(o)}var he=M;export{he as default}; diff --git a/public/Cesium/Workers/createRectangleGeometry.js b/public/Cesium/Workers/createRectangleGeometry.js new file mode 100644 index 000000000..ff39d2095 --- /dev/null +++ b/public/Cesium/Workers/createRectangleGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as W}from"./chunk-5YEWO3HT.js";import{a as Nt}from"./chunk-D6AA5QVT.js";import{a as zt}from"./chunk-VW6VD53G.js";import"./chunk-DEPHB2WM.js";import"./chunk-QOUAJ6TL.js";import{a as ft}from"./chunk-GBYLG25F.js";import{a as q}from"./chunk-CYCB63OH.js";import{b as yt}from"./chunk-77IHZJJ3.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as At}from"./chunk-OFUUQVMR.js";import{a as Vt}from"./chunk-A56XVLQR.js";import{b as Mt,c as Pt,d as Y}from"./chunk-RCV6KWXS.js";import{d as at}from"./chunk-4IW2T6GF.js";import{f as Lt,h as E,i as bt}from"./chunk-PSPPBZWI.js";import{a as U}from"./chunk-AU7IKHOH.js";import{a as w,b as mt,c as $,d as D,e as lt,f as St}from"./chunk-64RSHJUE.js";import{a as I}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as Et,b as ct}from"./chunk-LEYMRMBK.js";import{e as K}from"./chunk-VTAIKJXX.js";var Tt=new w,Bt=new w,Ut=new w,Yt=new w,qt=new E,Zt=new $,Kt=new at,$t=new at;function Xt(t,e){let n=new Pt({attributes:new Vt,primitiveType:Mt.TRIANGLES});return n.attributes.position=new Y({componentDatatype:U.DOUBLE,componentsPerAttribute:3,values:e.positions}),t.normal&&(n.attributes.normal=new Y({componentDatatype:U.FLOAT,componentsPerAttribute:3,values:e.normals})),t.tangent&&(n.attributes.tangent=new Y({componentDatatype:U.FLOAT,componentsPerAttribute:3,values:e.tangents})),t.bitangent&&(n.attributes.bitangent=new Y({componentDatatype:U.FLOAT,componentsPerAttribute:3,values:e.bitangents})),n}function Gt(t,e,n,r){let a=t.length,c=e.normal?new Float32Array(a):void 0,l=e.tangent?new Float32Array(a):void 0,u=e.bitangent?new Float32Array(a):void 0,p=0,d=Yt,o=Ut,i=Bt;if(e.normal||e.tangent||e.bitangent)for(let f=0;f<a;f+=3){let s=w.fromArray(t,f,Tt),h=p+1,g=p+2;i=n.geodeticSurfaceNormal(s,i),(e.tangent||e.bitangent)&&(w.cross(w.UNIT_Z,i,o),lt.multiplyByVector(r,o,o),w.normalize(o,o),e.bitangent&&w.normalize(w.cross(i,o,d),d)),e.normal&&(c[p]=i.x,c[h]=i.y,c[g]=i.z),e.tangent&&(l[p]=o.x,l[h]=o.y,l[g]=o.z),e.bitangent&&(u[p]=d.x,u[h]=d.y,u[g]=d.z),p+=3}return Xt(e,{positions:t,normals:c,tangents:l,bitangents:u})}var Ct=new w,jt=new w;function te(t,e,n){let r=t.length,a=e.normal?new Float32Array(r):void 0,c=e.tangent?new Float32Array(r):void 0,l=e.bitangent?new Float32Array(r):void 0,u=0,p=0,d=0,o=!0,i=Yt,f=Ut,s=Bt;if(e.normal||e.tangent||e.bitangent)for(let h=0;h<r;h+=6){let g=w.fromArray(t,h,Tt),A=w.fromArray(t,(h+6)%r,Ct);if(o){let b=w.fromArray(t,(h+3)%r,jt);w.subtract(A,g,A),w.subtract(b,g,b),s=w.normalize(w.cross(b,A,s),s),o=!1}w.equalsEpsilon(A,g,I.EPSILON10)&&(o=!0),(e.tangent||e.bitangent)&&(i=n.geodeticSurfaceNormal(g,i),e.tangent&&(f=w.normalize(w.cross(i,s,f),f))),e.normal&&(a[u++]=s.x,a[u++]=s.y,a[u++]=s.z,a[u++]=s.x,a[u++]=s.y,a[u++]=s.z),e.tangent&&(c[p++]=f.x,c[p++]=f.y,c[p++]=f.z,c[p++]=f.x,c[p++]=f.y,c[p++]=f.z),e.bitangent&&(l[d++]=i.x,l[d++]=i.y,l[d++]=i.z,l[d++]=i.x,l[d++]=i.y,l[d++]=i.z)}return Xt(e,{positions:t,normals:a,tangents:c,bitangents:l})}function It(t,e){let n=t._vertexFormat,r=t._ellipsoid,a=e.height,c=e.width,l=e.northCap,u=e.southCap,p=0,d=a,o=a,i=0;l&&(p=1,o-=1,i+=1),u&&(d-=1,o-=1,i+=1),i+=c*o;let f=n.position?new Float64Array(i*3):void 0,s=n.st?new Float32Array(i*2):void 0,h=0,g=0,A=Tt,b=Zt,V=Number.MAX_VALUE,z=Number.MAX_VALUE,X=-Number.MAX_VALUE,N=-Number.MAX_VALUE;for(let x=p;x<d;++x)for(let O=0;O<c;++O)W.computePosition(e,r,n.st,x,O,A,b),f[h++]=A.x,f[h++]=A.y,f[h++]=A.z,n.st&&(s[g++]=b.x,s[g++]=b.y,V=Math.min(V,b.x),z=Math.min(z,b.y),X=Math.max(X,b.x),N=Math.max(N,b.y));if(l&&(W.computePosition(e,r,n.st,0,0,A,b),f[h++]=A.x,f[h++]=A.y,f[h++]=A.z,n.st&&(s[g++]=b.x,s[g++]=b.y,V=b.x,z=b.y,X=b.x,N=b.y)),u&&(W.computePosition(e,r,n.st,a-1,0,A,b),f[h++]=A.x,f[h++]=A.y,f[h]=A.z,n.st&&(s[g++]=b.x,s[g]=b.y,V=Math.min(V,b.x),z=Math.min(z,b.y),X=Math.max(X,b.x),N=Math.max(N,b.y))),n.st&&(V<0||z<0||X>1||N>1))for(let x=0;x<s.length;x+=2)s[x]=(s[x]-V)/(X-V),s[x+1]=(s[x+1]-z)/(N-z);let m=Gt(f,n,r,e.tangentRotationMatrix),Z=6*(c-1)*(o-1);l&&(Z+=3*(c-1)),u&&(Z+=3*(c-1));let L=At.createTypedArray(i,Z),C=0,P=0,H;for(H=0;H<o-1;++H){for(let x=0;x<c-1;++x){let O=C,k=O+c,j=k+1,st=O+1;L[P++]=O,L[P++]=k,L[P++]=st,L[P++]=st,L[P++]=k,L[P++]=j,++C}++C}if(l||u){let x=i-1,O=i-1;l&&u&&(x=i-2);let k,j;if(C=0,l)for(H=0;H<c-1;H++)k=C,j=k+1,L[P++]=x,L[P++]=k,L[P++]=j,++C;if(u)for(C=(o-1)*c,H=0;H<c-1;H++)k=C,j=k+1,L[P++]=k,L[P++]=O,L[P++]=j,++C}return m.indices=L,n.st&&(m.attributes.st=new Y({componentDatatype:U.FLOAT,componentsPerAttribute:2,values:s})),m}function ut(t,e,n,r,a){return t[e++]=r[n],t[e++]=r[n+1],t[e++]=r[n+2],t[e++]=a[n],t[e++]=a[n+1],t[e]=a[n+2],t}function ht(t,e,n,r){return t[e++]=r[n],t[e++]=r[n+1],t[e++]=r[n],t[e]=r[n+1],t}var Dt=new q;function ee(t,e){let n=t._shadowVolume,r=t._offsetAttribute,a=t._vertexFormat,c=t._extrudedHeight,l=t._surfaceHeight,u=t._ellipsoid,p=e.height,d=e.width,o;if(n){let R=q.clone(a,Dt);R.normal=!0,t._vertexFormat=R}let i=It(t,e);n&&(t._vertexFormat=a);let f=yt.scaleToGeodeticHeight(i.attributes.position.values,l,u,!1);f=new Float64Array(f);let s=f.length,h=s*2,g=new Float64Array(h);g.set(f);let A=yt.scaleToGeodeticHeight(i.attributes.position.values,c,u);g.set(A,s),i.attributes.position.values=g;let b=a.normal?new Float32Array(h):void 0,V=a.tangent?new Float32Array(h):void 0,z=a.bitangent?new Float32Array(h):void 0,X=a.st?new Float32Array(h/3*2):void 0,N,m;if(a.normal){for(m=i.attributes.normal.values,b.set(m),o=0;o<s;o++)m[o]=-m[o];b.set(m,s),i.attributes.normal.values=b}if(n){m=i.attributes.normal.values,a.normal||(i.attributes.normal=void 0);let R=new Float32Array(h);for(o=0;o<s;o++)m[o]=-m[o];R.set(m,s),i.attributes.extrudeDirection=new Y({componentDatatype:U.FLOAT,componentsPerAttribute:3,values:R})}let Z,L=K(r);if(L){let R=s/3*2,it=new Uint8Array(R);r===ft.TOP?it=it.fill(1,0,R/2):(Z=r===ft.NONE?0:1,it=it.fill(Z)),i.attributes.applyOffset=new Y({componentDatatype:U.UNSIGNED_BYTE,componentsPerAttribute:1,values:it})}if(a.tangent){let R=i.attributes.tangent.values;for(V.set(R),o=0;o<s;o++)R[o]=-R[o];V.set(R,s),i.attributes.tangent.values=V}if(a.bitangent){let R=i.attributes.bitangent.values;z.set(R),z.set(R,s),i.attributes.bitangent.values=z}a.st&&(N=i.attributes.st.values,X.set(N),X.set(N,s/3*2),i.attributes.st.values=X);let C=i.indices,P=C.length,H=s/3,x=At.createTypedArray(h/3,P*2);for(x.set(C),o=0;o<P;o+=3)x[o+P]=C[o+2]+H,x[o+1+P]=C[o+1]+H,x[o+2+P]=C[o]+H;i.indices=x;let O=e.northCap,k=e.southCap,j=p,st=2,pt=0,Rt=4,xt=4;O&&(st-=1,j-=1,pt+=1,Rt-=2,xt-=1),k&&(st-=1,j-=1,pt+=1,Rt-=2,xt-=1),pt+=st*d+2*j-Rt;let dt=(pt+xt)*2,T=new Float64Array(dt*3),S=n?new Float32Array(dt*3):void 0,Q=L?new Uint8Array(dt):void 0,M=a.st?new Float32Array(dt*2):void 0,tt=r===ft.TOP;L&&!tt&&(Z=r===ft.ALL?1:0,Q=Q.fill(Z));let F=0,v=0,y=0,B=0,et=d*j,_;for(o=0;o<et;o+=d)_=o*3,T=ut(T,F,_,f,A),F+=6,a.st&&(M=ht(M,v,o*2,N),v+=4),n&&(y+=3,S[y++]=m[_],S[y++]=m[_+1],S[y++]=m[_+2]),tt&&(Q[B++]=1,B+=1);if(k){let R=O?et+1:et;for(_=R*3,o=0;o<2;o++)T=ut(T,F,_,f,A),F+=6,a.st&&(M=ht(M,v,R*2,N),v+=4),n&&(y+=3,S[y++]=m[_],S[y++]=m[_+1],S[y++]=m[_+2]),tt&&(Q[B++]=1,B+=1)}else for(o=et-d;o<et;o++)_=o*3,T=ut(T,F,_,f,A),F+=6,a.st&&(M=ht(M,v,o*2,N),v+=4),n&&(y+=3,S[y++]=m[_],S[y++]=m[_+1],S[y++]=m[_+2]),tt&&(Q[B++]=1,B+=1);for(o=et-1;o>0;o-=d)_=o*3,T=ut(T,F,_,f,A),F+=6,a.st&&(M=ht(M,v,o*2,N),v+=4),n&&(y+=3,S[y++]=m[_],S[y++]=m[_+1],S[y++]=m[_+2]),tt&&(Q[B++]=1,B+=1);if(O){let R=et;for(_=R*3,o=0;o<2;o++)T=ut(T,F,_,f,A),F+=6,a.st&&(M=ht(M,v,R*2,N),v+=4),n&&(y+=3,S[y++]=m[_],S[y++]=m[_+1],S[y++]=m[_+2]),tt&&(Q[B++]=1,B+=1)}else for(o=d-1;o>=0;o--)_=o*3,T=ut(T,F,_,f,A),F+=6,a.st&&(M=ht(M,v,o*2,N),v+=4),n&&(y+=3,S[y++]=m[_],S[y++]=m[_+1],S[y++]=m[_+2]),tt&&(Q[B++]=1,B+=1);let nt=te(T,a,u);a.st&&(nt.attributes.st=new Y({componentDatatype:U.FLOAT,componentsPerAttribute:2,values:M})),n&&(nt.attributes.extrudeDirection=new Y({componentDatatype:U.FLOAT,componentsPerAttribute:3,values:S})),L&&(nt.attributes.applyOffset=new Y({componentDatatype:U.UNSIGNED_BYTE,componentsPerAttribute:1,values:Q}));let ot=At.createTypedArray(dt,pt*6),gt,_t,kt,wt;s=T.length/3;let rt=0;for(o=0;o<s-1;o+=2){gt=o,wt=(gt+2)%s;let R=w.fromArray(T,gt*3,Ct),it=w.fromArray(T,wt*3,jt);w.equalsEpsilon(R,it,I.EPSILON10)||(_t=(gt+1)%s,kt=(_t+2)%s,ot[rt++]=gt,ot[rt++]=_t,ot[rt++]=wt,ot[rt++]=wt,ot[rt++]=_t,ot[rt++]=kt)}return nt.indices=ot,nt=zt.combineInstances([new Nt({geometry:i}),new Nt({geometry:nt})]),nt[0]}var ne=[new w,new w,new w,new w],Wt=new mt,oe=new mt;function Ht(t,e,n,r,a){if(n===0)return E.clone(t,a);let c=W.computeOptions(t,e,n,0,qt,Wt),l=c.height,u=c.width,p=ne;return W.computePosition(c,r,!1,0,0,p[0]),W.computePosition(c,r,!1,0,u-1,p[1]),W.computePosition(c,r,!1,l-1,0,p[2]),W.computePosition(c,r,!1,l-1,u-1,p[3]),E.fromCartesianArray(p,r,a)}function J(t){t=t??St.EMPTY_OBJECT;let e=t.rectangle;if(ct.typeOf.object("rectangle",e),E._validate(e),e.north<e.south)throw new Et("options.rectangle.north must be greater than or equal to options.rectangle.south");let n=t.height??0,r=t.extrudedHeight??n;this._rectangle=E.clone(e),this._granularity=t.granularity??I.RADIANS_PER_DEGREE,this._ellipsoid=D.clone(t.ellipsoid??D.default),this._surfaceHeight=Math.max(n,r),this._rotation=t.rotation??0,this._stRotation=t.stRotation??0,this._vertexFormat=q.clone(t.vertexFormat??q.DEFAULT),this._extrudedHeight=Math.min(n,r),this._shadowVolume=t.shadowVolume??!1,this._workerName="createRectangleGeometry",this._offsetAttribute=t.offsetAttribute,this._rotatedRectangle=void 0,this._textureCoordinateRotationPoints=void 0}J.packedLength=E.packedLength+D.packedLength+q.packedLength+7;J.pack=function(t,e,n){return ct.typeOf.object("value",t),ct.defined("array",e),n=n??0,E.pack(t._rectangle,e,n),n+=E.packedLength,D.pack(t._ellipsoid,e,n),n+=D.packedLength,q.pack(t._vertexFormat,e,n),n+=q.packedLength,e[n++]=t._granularity,e[n++]=t._surfaceHeight,e[n++]=t._rotation,e[n++]=t._stRotation,e[n++]=t._extrudedHeight,e[n++]=t._shadowVolume?1:0,e[n]=t._offsetAttribute??-1,e};var Jt=new E,Qt=D.clone(D.UNIT_SPHERE),G={rectangle:Jt,ellipsoid:Qt,vertexFormat:Dt,granularity:void 0,height:void 0,rotation:void 0,stRotation:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};J.unpack=function(t,e,n){ct.defined("array",t),e=e??0;let r=E.unpack(t,e,Jt);e+=E.packedLength;let a=D.unpack(t,e,Qt);e+=D.packedLength;let c=q.unpack(t,e,Dt);e+=q.packedLength;let l=t[e++],u=t[e++],p=t[e++],d=t[e++],o=t[e++],i=t[e++]===1,f=t[e];return K(n)?(n._rectangle=E.clone(r,n._rectangle),n._ellipsoid=D.clone(a,n._ellipsoid),n._vertexFormat=q.clone(c,n._vertexFormat),n._granularity=l,n._surfaceHeight=u,n._rotation=p,n._stRotation=d,n._extrudedHeight=o,n._shadowVolume=i,n._offsetAttribute=f===-1?void 0:f,n):(G.granularity=l,G.height=u,G.rotation=p,G.stRotation=d,G.extrudedHeight=o,G.shadowVolume=i,G.offsetAttribute=f===-1?void 0:f,new J(G))};J.computeRectangle=function(t,e){t=t??St.EMPTY_OBJECT;let n=t.rectangle;if(ct.typeOf.object("rectangle",n),E._validate(n),n.north<n.south)throw new Et("options.rectangle.north must be greater than or equal to options.rectangle.south");let r=t.granularity??I.RADIANS_PER_DEGREE,a=t.ellipsoid??D.default,c=t.rotation??0;return Ht(n,r,c,a,e)};var ie=new lt,Ft=new Lt,ae=new mt;J.createGeometry=function(t){if(I.equalsEpsilon(t._rectangle.north,t._rectangle.south,I.EPSILON10)||I.equalsEpsilon(t._rectangle.east,t._rectangle.west,I.EPSILON10))return;let e=t._rectangle,n=t._ellipsoid,r=t._rotation,a=t._stRotation,c=t._vertexFormat,l=W.computeOptions(e,t._granularity,r,a,qt,Wt,oe),u=ie;if(a!==0||r!==0){let s=E.center(e,ae),h=n.geodeticSurfaceNormalCartographic(s,Ct);Lt.fromAxisAngle(h,-a,Ft),lt.fromQuaternion(Ft,u)}else lt.clone(lt.IDENTITY,u);let p=t._surfaceHeight,d=t._extrudedHeight,o=!I.equalsEpsilon(p,d,0,I.EPSILON2);l.lonScalar=1/t._rectangle.width,l.latScalar=1/t._rectangle.height,l.tangentRotationMatrix=u;let i,f;if(e=t._rectangle,o){i=ee(t,l);let s=at.fromRectangle3D(e,n,p,$t),h=at.fromRectangle3D(e,n,d,Kt);f=at.union(s,h)}else{if(i=It(t,l),i.attributes.position.values=yt.scaleToGeodeticHeight(i.attributes.position.values,p,n,!1),K(t._offsetAttribute)){let s=i.attributes.position.values.length,h=t._offsetAttribute===ft.NONE?0:1,g=new Uint8Array(s/3).fill(h);i.attributes.applyOffset=new Y({componentDatatype:U.UNSIGNED_BYTE,componentsPerAttribute:1,values:g})}f=at.fromRectangle3D(e,n,p)}return c.position||delete i.attributes.position,new Pt({attributes:i.attributes,indices:i.indices,primitiveType:i.primitiveType,boundingSphere:f,offsetAttribute:t._offsetAttribute})};J.createShadowVolume=function(t,e,n){let r=t._granularity,a=t._ellipsoid,c=e(r,a),l=n(r,a);return new J({rectangle:t._rectangle,rotation:t._rotation,ellipsoid:a,stRotation:t._stRotation,granularity:r,extrudedHeight:l,height:c,vertexFormat:q.POSITION_ONLY,shadowVolume:!0})};var vt=new E,se=[new $,new $,new $],re=new bt,ce=new mt;function le(t){if(t._stRotation===0)return[0,0,0,1,1,0];let e=E.clone(t._rectangle,vt),n=t._granularity,r=t._ellipsoid,a=t._rotation-t._stRotation,c=Ht(e,n,a,r,vt),l=se;l[0].x=c.west,l[0].y=c.south,l[1].x=c.west,l[1].y=c.north,l[2].x=c.east,l[2].y=c.south;let u=t.rectangle,p=bt.fromRotation(t._stRotation,re),d=E.center(u,ce);for(let h=0;h<3;++h){let g=l[h];g.x-=d.longitude,g.y-=d.latitude,bt.multiplyByVector(p,g,g),g.x+=d.longitude,g.y+=d.latitude,g.x=(g.x-u.west)/u.width,g.y=(g.y-u.south)/u.height}let o=l[0],i=l[1],f=l[2],s=new Array(6);return $.pack(o,s),$.pack(i,s,2),$.pack(f,s,4),s}Object.defineProperties(J.prototype,{rectangle:{get:function(){return K(this._rotatedRectangle)||(this._rotatedRectangle=Ht(this._rectangle,this._granularity,this._rotation,this._ellipsoid)),this._rotatedRectangle}},textureCoordinateRotationPoints:{get:function(){return K(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=le(this)),this._textureCoordinateRotationPoints}}});var Ot=J;function fe(t,e){return K(e)&&(t=Ot.unpack(t,e)),t._ellipsoid=D.clone(t._ellipsoid),t._rectangle=E.clone(t._rectangle),Ot.createGeometry(t)}var Ye=fe;export{Ye as default}; diff --git a/public/Cesium/Workers/createRectangleOutlineGeometry.js b/public/Cesium/Workers/createRectangleOutlineGeometry.js new file mode 100644 index 000000000..e7a06a230 --- /dev/null +++ b/public/Cesium/Workers/createRectangleOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as R}from"./chunk-5YEWO3HT.js";import{a as y}from"./chunk-GBYLG25F.js";import{b as z}from"./chunk-77IHZJJ3.js";import"./chunk-G5AGHVVC.js";import{a as q}from"./chunk-OFUUQVMR.js";import{a as F}from"./chunk-A56XVLQR.js";import{b as v,c as B,d as T}from"./chunk-RCV6KWXS.js";import{d as P}from"./chunk-4IW2T6GF.js";import{h as b}from"./chunk-PSPPBZWI.js";import{a as D}from"./chunk-AU7IKHOH.js";import{a as x,b as U,d as w,f as M}from"./chunk-64RSHJUE.js";import{a as S}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as C}from"./chunk-LEYMRMBK.js";import{e as H}from"./chunk-VTAIKJXX.js";var j=new P,K=new P,Q=new x,W=new b;function Y(t,e){let i=t._ellipsoid,m=e.height,s=e.width,h=e.northCap,p=e.southCap,_=m,A=2,o=0,g=4;h&&(A-=1,_-=1,o+=1,g-=2),p&&(A-=1,_-=1,o+=1,g-=2),o+=A*s+2*_-g;let n=new Float64Array(o*3),l=0,f=0,a,r=Q;if(h)R.computePosition(e,i,!1,f,0,r),n[l++]=r.x,n[l++]=r.y,n[l++]=r.z;else for(a=0;a<s;a++)R.computePosition(e,i,!1,f,a,r),n[l++]=r.x,n[l++]=r.y,n[l++]=r.z;for(a=s-1,f=1;f<m;f++)R.computePosition(e,i,!1,f,a,r),n[l++]=r.x,n[l++]=r.y,n[l++]=r.z;if(f=m-1,!p)for(a=s-2;a>=0;a--)R.computePosition(e,i,!1,f,a,r),n[l++]=r.x,n[l++]=r.y,n[l++]=r.z;for(a=0,f=m-2;f>0;f--)R.computePosition(e,i,!1,f,a,r),n[l++]=r.x,n[l++]=r.y,n[l++]=r.z;let u=n.length/3*2,c=q.createTypedArray(n.length/3,u),E=0;for(let L=0;L<n.length/3-1;L++)c[E++]=L,c[E++]=L+1;c[E++]=n.length/3-1,c[E++]=0;let d=new B({attributes:new F,primitiveType:v.LINES});return d.attributes.position=new T({componentDatatype:D.DOUBLE,componentsPerAttribute:3,values:n}),d.indices=c,d}function X(t,e){let i=t._surfaceHeight,m=t._extrudedHeight,s=t._ellipsoid,h=Y(t,e),p=e.height,_=e.width,A=z.scaleToGeodeticHeight(h.attributes.position.values,i,s,!1),o=A.length,g=new Float64Array(o*2);g.set(A);let n=z.scaleToGeodeticHeight(h.attributes.position.values,m,s);g.set(n,o),h.attributes.position.values=g;let l=e.northCap,f=e.southCap,a=4;l&&(a-=1),f&&(a-=1);let r=(g.length/3+a)*2,u=q.createTypedArray(g.length/3,r);o=g.length/6;let c=0;for(let d=0;d<o-1;d++)u[c++]=d,u[c++]=d+1,u[c++]=d+o,u[c++]=d+o+1;u[c++]=o-1,u[c++]=0,u[c++]=o+o-1,u[c++]=o,u[c++]=0,u[c++]=o;let E;if(l)E=p-1;else{let d=_-1;u[c++]=d,u[c++]=d+o,E=_+p-2}if(u[c++]=E,u[c++]=E+o,!f){let d=_+E-1;u[c++]=d,u[c]=d+o}return h.indices=u,h}function k(t){t=t??M.EMPTY_OBJECT;let e=t.rectangle,i=t.granularity??S.RADIANS_PER_DEGREE,m=t.ellipsoid??w.default,s=t.rotation??0;if(!H(e))throw new C("rectangle is required.");if(b._validate(e),e.north<e.south)throw new C("options.rectangle.north must be greater than options.rectangle.south");let h=t.height??0,p=t.extrudedHeight??h;this._rectangle=b.clone(e),this._granularity=i,this._ellipsoid=m,this._surfaceHeight=Math.max(h,p),this._rotation=s,this._extrudedHeight=Math.min(h,p),this._offsetAttribute=t.offsetAttribute,this._workerName="createRectangleOutlineGeometry"}k.packedLength=b.packedLength+w.packedLength+5;k.pack=function(t,e,i){if(!H(t))throw new C("value is required");if(!H(e))throw new C("array is required");return i=i??0,b.pack(t._rectangle,e,i),i+=b.packedLength,w.pack(t._ellipsoid,e,i),i+=w.packedLength,e[i++]=t._granularity,e[i++]=t._surfaceHeight,e[i++]=t._rotation,e[i++]=t._extrudedHeight,e[i]=t._offsetAttribute??-1,e};var J=new b,V=w.clone(w.UNIT_SPHERE),N={rectangle:J,ellipsoid:V,granularity:void 0,height:void 0,rotation:void 0,extrudedHeight:void 0,offsetAttribute:void 0};k.unpack=function(t,e,i){if(!H(t))throw new C("array is required");e=e??0;let m=b.unpack(t,e,J);e+=b.packedLength;let s=w.unpack(t,e,V);e+=w.packedLength;let h=t[e++],p=t[e++],_=t[e++],A=t[e++],o=t[e];return H(i)?(i._rectangle=b.clone(m,i._rectangle),i._ellipsoid=w.clone(s,i._ellipsoid),i._surfaceHeight=p,i._rotation=_,i._extrudedHeight=A,i._offsetAttribute=o===-1?void 0:o,i):(N.granularity=h,N.height=p,N.rotation=_,N.extrudedHeight=A,N.offsetAttribute=o===-1?void 0:o,new k(N))};var Z=new U;k.createGeometry=function(t){let e=t._rectangle,i=t._ellipsoid,m=R.computeOptions(e,t._granularity,t._rotation,0,W,Z),s,h;if(S.equalsEpsilon(e.north,e.south,S.EPSILON10)||S.equalsEpsilon(e.east,e.west,S.EPSILON10))return;let p=t._surfaceHeight,_=t._extrudedHeight,A=!S.equalsEpsilon(p,_,0,S.EPSILON2),o;if(A){if(s=X(t,m),H(t._offsetAttribute)){let l=s.attributes.position.values.length/3,f=new Uint8Array(l);t._offsetAttribute===y.TOP?f=f.fill(1,0,l/2):(o=t._offsetAttribute===y.NONE?0:1,f=f.fill(o)),s.attributes.applyOffset=new T({componentDatatype:D.UNSIGNED_BYTE,componentsPerAttribute:1,values:f})}let g=P.fromRectangle3D(e,i,p,K),n=P.fromRectangle3D(e,i,_,j);h=P.union(g,n)}else{if(s=Y(t,m),s.attributes.position.values=z.scaleToGeodeticHeight(s.attributes.position.values,p,i,!1),H(t._offsetAttribute)){let g=s.attributes.position.values.length;o=t._offsetAttribute===y.NONE?0:1;let n=new Uint8Array(g/3).fill(o);s.attributes.applyOffset=new T({componentDatatype:D.UNSIGNED_BYTE,componentsPerAttribute:1,values:n})}h=P.fromRectangle3D(e,i,p)}return new B({attributes:s.attributes,indices:s.indices,primitiveType:v.LINES,boundingSphere:h,offsetAttribute:t._offsetAttribute})};var O=k;function $(t,e){return H(e)&&(t=O.unpack(t,e)),t._ellipsoid=w.clone(t._ellipsoid),t._rectangle=b.clone(t._rectangle),O.createGeometry(t)}var Et=$;export{Et as default}; diff --git a/public/Cesium/Workers/createSimplePolylineGeometry.js b/public/Cesium/Workers/createSimplePolylineGeometry.js new file mode 100644 index 000000000..22b908b35 --- /dev/null +++ b/public/Cesium/Workers/createSimplePolylineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as r}from"./chunk-HMIYSTF6.js";import{a as L}from"./chunk-J6UP6FLE.js";import{a as P}from"./chunk-XRL4AVS5.js";import"./chunk-U4IEOH5K.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as X}from"./chunk-OFUUQVMR.js";import{a as W}from"./chunk-A56XVLQR.js";import{b as K,c as Q,d as H}from"./chunk-RCV6KWXS.js";import{d as j}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as v}from"./chunk-AU7IKHOH.js";import{a as A,d as w,f as J}from"./chunk-64RSHJUE.js";import{a as G}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as D}from"./chunk-LEYMRMBK.js";import{e as u}from"./chunk-VTAIKJXX.js";function Z(t,e,o,i,s,c,p){let g=P.numberOfPoints(t,e,s),f,n=o.red,m=o.green,d=o.blue,T=o.alpha,l=i.red,h=i.green,y=i.blue,S=i.alpha;if(r.equals(o,i)){for(f=0;f<g;f++)c[p++]=r.floatToByte(n),c[p++]=r.floatToByte(m),c[p++]=r.floatToByte(d),c[p++]=r.floatToByte(T);return p}let N=(l-n)/g,V=(h-m)/g,R=(y-d)/g,_=(S-T)/g,a=p;for(f=0;f<g;f++)c[a++]=r.floatToByte(n+f*N),c[a++]=r.floatToByte(m+f*V),c[a++]=r.floatToByte(d+f*R),c[a++]=r.floatToByte(T+f*_);return a}function O(t){t=t??J.EMPTY_OBJECT;let e=t.positions,o=t.colors,i=t.colorsPerVertex??!1;if(!u(e)||e.length<2)throw new D("At least two positions are required.");if(u(o)&&(i&&o.length<e.length||!i&&o.length<e.length-1))throw new D("colors has an invalid length.");this._positions=e,this._colors=o,this._colorsPerVertex=i,this._arcType=t.arcType??L.GEODESIC,this._granularity=t.granularity??G.RADIANS_PER_DEGREE,this._ellipsoid=t.ellipsoid??w.default,this._workerName="createSimplePolylineGeometry";let s=1+e.length*A.packedLength;s+=u(o)?1+o.length*r.packedLength:1,this.packedLength=s+w.packedLength+3}O.pack=function(t,e,o){if(!u(t))throw new D("value is required");if(!u(e))throw new D("array is required");o=o??0;let i,s=t._positions,c=s.length;for(e[o++]=c,i=0;i<c;++i,o+=A.packedLength)A.pack(s[i],e,o);let p=t._colors;for(c=u(p)?p.length:0,e[o++]=c,i=0;i<c;++i,o+=r.packedLength)r.pack(p[i],e,o);return w.pack(t._ellipsoid,e,o),o+=w.packedLength,e[o++]=t._colorsPerVertex?1:0,e[o++]=t._arcType,e[o]=t._granularity,e};O.unpack=function(t,e,o){if(!u(t))throw new D("array is required");e=e??0;let i,s=t[e++],c=new Array(s);for(i=0;i<s;++i,e+=A.packedLength)c[i]=A.unpack(t,e);s=t[e++];let p=s>0?new Array(s):void 0;for(i=0;i<s;++i,e+=r.packedLength)p[i]=r.unpack(t,e);let g=w.unpack(t,e);e+=w.packedLength;let f=t[e++]===1,n=t[e++],m=t[e];return u(o)?(o._positions=c,o._colors=p,o._ellipsoid=g,o._colorsPerVertex=f,o._arcType=n,o._granularity=m,o):new O({positions:c,colors:p,ellipsoid:g,colorsPerVertex:f,arcType:n,granularity:m})};var U=new Array(2),q=new Array(2),$={positions:U,height:q,ellipsoid:void 0,minDistance:void 0,granularity:void 0};O.createGeometry=function(t){let e=t._positions,o=t._colors,i=t._colorsPerVertex,s=t._arcType,c=t._granularity,p=t._ellipsoid,g=G.chordLength(c,p.maximumRadius),f=u(o)&&!i,n,m=e.length,d,T,l,h,y=0;if(s===L.GEODESIC||s===L.RHUMB){let _,a,k;s===L.GEODESIC?(_=G.chordLength(c,p.maximumRadius),a=P.numberOfPoints,k=P.generateArc):(_=c,a=P.numberOfPointsRhumbLine,k=P.generateRhumbArc);let z=P.extractHeights(e,p),B=$;if(s===L.GEODESIC?B.minDistance=g:B.granularity=c,B.ellipsoid=p,f){let b=0;for(n=0;n<m-1;n++)b+=a(e[n],e[n+1],_)+1;d=new Float64Array(b*3),l=new Uint8Array(b*4),B.positions=U,B.height=q;let E=0;for(n=0;n<m-1;++n){U[0]=e[n],U[1]=e[n+1],q[0]=z[n],q[1]=z[n+1];let C=k(B);if(u(o)){let M=C.length/3;h=o[n];for(let F=0;F<M;++F)l[E++]=r.floatToByte(h.red),l[E++]=r.floatToByte(h.green),l[E++]=r.floatToByte(h.blue),l[E++]=r.floatToByte(h.alpha)}d.set(C,y),y+=C.length}}else if(B.positions=e,B.height=z,d=new Float64Array(k(B)),u(o)){for(l=new Uint8Array(d.length/3*4),n=0;n<m-1;++n){let E=e[n],C=e[n+1],M=o[n],F=o[n+1];y=Z(E,C,M,F,g,l,y)}let b=o[m-1];l[y++]=r.floatToByte(b.red),l[y++]=r.floatToByte(b.green),l[y++]=r.floatToByte(b.blue),l[y++]=r.floatToByte(b.alpha)}}else{T=f?m*2-2:m,d=new Float64Array(T*3),l=u(o)?new Uint8Array(T*4):void 0;let _=0,a=0;for(n=0;n<m;++n){let k=e[n];if(f&&n>0&&(A.pack(k,d,_),_+=3,h=o[n-1],l[a++]=r.floatToByte(h.red),l[a++]=r.floatToByte(h.green),l[a++]=r.floatToByte(h.blue),l[a++]=r.floatToByte(h.alpha)),f&&n===m-1)break;A.pack(k,d,_),_+=3,u(o)&&(h=o[n],l[a++]=r.floatToByte(h.red),l[a++]=r.floatToByte(h.green),l[a++]=r.floatToByte(h.blue),l[a++]=r.floatToByte(h.alpha))}}let S=new W;S.position=new H({componentDatatype:v.DOUBLE,componentsPerAttribute:3,values:d}),u(o)&&(S.color=new H({componentDatatype:v.UNSIGNED_BYTE,componentsPerAttribute:4,values:l,normalize:!0})),T=d.length/3;let N=(T-1)*2,V=X.createTypedArray(T,N),R=0;for(n=0;n<T-1;++n)V[R++]=n,V[R++]=n+1;return new Q({attributes:S,indices:V,primitiveType:K.LINES,boundingSphere:j.fromPoints(e)})};var Y=O;function x(t,e){return u(e)&&(t=Y.unpack(t,e)),t._ellipsoid=w.clone(t._ellipsoid),Y.createGeometry(t)}var _e=x;export{_e as default}; diff --git a/public/Cesium/Workers/createSphereGeometry.js b/public/Cesium/Workers/createSphereGeometry.js new file mode 100644 index 000000000..b4e4ee564 --- /dev/null +++ b/public/Cesium/Workers/createSphereGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as r}from"./chunk-37F5JSTI.js";import"./chunk-GBYLG25F.js";import{a as m}from"./chunk-CYCB63OH.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as s}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as p}from"./chunk-LEYMRMBK.js";import{e as c}from"./chunk-VTAIKJXX.js";function a(e){let t=e.radius??1,o={radii:new s(t,t,t),stackPartitions:e.stackPartitions,slicePartitions:e.slicePartitions,vertexFormat:e.vertexFormat};this._ellipsoidGeometry=new r(o),this._workerName="createSphereGeometry"}a.packedLength=r.packedLength;a.pack=function(e,t,n){return p.typeOf.object("value",e),r.pack(e._ellipsoidGeometry,t,n)};var l=new r,i={radius:void 0,radii:new s,vertexFormat:new m,stackPartitions:void 0,slicePartitions:void 0};a.unpack=function(e,t,n){let o=r.unpack(e,t,l);return i.vertexFormat=m.clone(o._vertexFormat,i.vertexFormat),i.stackPartitions=o._stackPartitions,i.slicePartitions=o._slicePartitions,c(n)?(s.clone(o._radii,i.radii),n._ellipsoidGeometry=new r(i),n):(i.radius=o._radii.x,new a(i))};a.createGeometry=function(e){return r.createGeometry(e._ellipsoidGeometry)};var d=a;function f(e,t){return c(t)&&(e=d.unpack(e,t)),d.createGeometry(e)}var w=f;export{w as default}; diff --git a/public/Cesium/Workers/createSphereOutlineGeometry.js b/public/Cesium/Workers/createSphereOutlineGeometry.js new file mode 100644 index 000000000..560e7b037 --- /dev/null +++ b/public/Cesium/Workers/createSphereOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as t}from"./chunk-D6C66QON.js";import"./chunk-GBYLG25F.js";import"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as c}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{b as u}from"./chunk-LEYMRMBK.js";import{e as a}from"./chunk-VTAIKJXX.js";function s(i){let e=i.radius??1,r={radii:new c(e,e,e),stackPartitions:i.stackPartitions,slicePartitions:i.slicePartitions,subdivisions:i.subdivisions};this._ellipsoidGeometry=new t(r),this._workerName="createSphereOutlineGeometry"}s.packedLength=t.packedLength;s.pack=function(i,e,o){return u.typeOf.object("value",i),t.pack(i._ellipsoidGeometry,e,o)};var l=new t,n={radius:void 0,radii:new c,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0};s.unpack=function(i,e,o){let r=t.unpack(i,e,l);return n.stackPartitions=r._stackPartitions,n.slicePartitions=r._slicePartitions,n.subdivisions=r._subdivisions,a(o)?(c.clone(r._radii,n.radii),o._ellipsoidGeometry=new t(n),o):(n.radius=r._radii.x,new s(n))};s.createGeometry=function(i){return t.createGeometry(i._ellipsoidGeometry)};var d=s;function m(i,e){return a(e)&&(i=d.unpack(i,e)),d.createGeometry(i)}var h=m;export{h as default}; diff --git a/public/Cesium/Workers/createTaskProcessorWorker.js b/public/Cesium/Workers/createTaskProcessorWorker.js new file mode 100644 index 000000000..320eaab93 --- /dev/null +++ b/public/Cesium/Workers/createTaskProcessorWorker.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a}from"./chunk-WZDE3RYP.js";import"./chunk-VTAIKJXX.js";export{a as default}; diff --git a/public/Cesium/Workers/createVectorTileClampedPolylines.js b/public/Cesium/Workers/createVectorTileClampedPolylines.js new file mode 100644 index 000000000..87dcafc2f --- /dev/null +++ b/public/Cesium/Workers/createVectorTileClampedPolylines.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as J}from"./chunk-WZDE3RYP.js";import{a as Y}from"./chunk-DEPHB2WM.js";import{a as B}from"./chunk-OFUUQVMR.js";import{c as X,h as W}from"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as t,b as k,d as _}from"./chunk-64RSHJUE.js";import{a as v}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import"./chunk-VTAIKJXX.js";var V=32767,it=Math.cos(v.toRadians(150)),ct=new k,rt=new t;function at(e,o,c,i,s,A,h){let g=e.length,f=new Float64Array(g*3);for(let d=0;d<g;++d){let l=e[d],r=o[d],E=c[d],n=v.lerp(i.west,i.east,l/V),p=v.lerp(i.south,i.north,r/V),w=v.lerp(s,A,E/V),x=k.fromRadians(n,p,w,ct),P=h.cartographicToCartesian(x,rt);t.pack(P,f,d*3)}return f}function dt(e){let o=e.length,c=new Uint32Array(o+1),i=0;for(let s=0;s<o;++s)c[s]=i,i+=e[s];return c[o]=i,c}var lt=new k,ht=new k;function ft(e,o,c,i){let s=i.length,A=e.length,h=new Uint8Array(A),g=lt,f=ht,d=0;for(let r=0;r<s;r++){let E=i[r],n=E;for(let p=1;p<E;p++){let w=d+p,x=w-1;f.longitude=e[w],f.latitude=o[w],g.longitude=e[x],g.latitude=o[x],k.equals(f,g)&&(n--,h[x]=1)}i[r]=n,d+=E}let l=0;for(let r=0;r<A;r++)h[r]!==1&&(e[l]=e[r],o[l]=o[r],c[l]=c[r],l++)}function ot(e){let o=e*8,c=o*3,i=o*4;this.startEllipsoidNormals=new Float32Array(c),this.endEllipsoidNormals=new Float32Array(c),this.startPositionAndHeights=new Float32Array(i),this.startFaceNormalAndVertexCornerIds=new Float32Array(i),this.endPositionAndHeights=new Float32Array(i),this.endFaceNormalAndHalfWidths=new Float32Array(i),this.vertexBatchIds=new Uint16Array(o),this.indices=B.createTypedArray(o,36*e),this.vec3Offset=0,this.vec4Offset=0,this.batchIdOffset=0,this.indexOffset=0,this.volumeStartIndex=0}var Q=new t,pt=new t;function $(e,o,c,i,s){let A=t.subtract(c,o,pt),h=t.subtract(o,e,Q);return t.normalize(A,A),t.normalize(h,h),t.dot(A,h)<it&&(h=t.multiplyByScalar(h,-1,Q)),t.add(A,h,s),t.equals(s,t.ZERO)&&(s=t.subtract(e,o)),t.cross(s,i,s),t.cross(i,s,s),t.normalize(s,s),s}var st=[0,2,6,0,6,4,0,1,3,0,3,2,0,4,5,0,5,1,5,3,1,5,7,3,7,5,4,7,4,6,7,6,2,7,2,3],j=st.length,tt=new t,ut=new t,mt=new t,At=new t,Nt=new t;ot.prototype.addVolume=function(e,o,c,i,s,A,h,g,f,d){let l=t.add(o,f,tt),r=d.geodeticSurfaceNormal(l,ut);l=t.add(c,f,tt);let E=d.geodeticSurfaceNormal(l,At),n=$(e,o,c,r,mt),p=$(i,c,o,E,Nt),w=this.startEllipsoidNormals,x=this.endEllipsoidNormals,P=this.startPositionAndHeights,H=this.startFaceNormalAndVertexCornerIds,b=this.endPositionAndHeights,a=this.endFaceNormalAndHalfWidths,F=this.vertexBatchIds,m=this.batchIdOffset,I=this.vec3Offset,u=this.vec4Offset,N;for(N=0;N<8;N++)t.pack(r,w,I),t.pack(E,x,I),t.pack(o,P,u),P[u+3]=s,t.pack(c,b,u),b[u+3]=A,t.pack(n,H,u),H[u+3]=N,t.pack(p,a,u),a[u+3]=h,F[m++]=g,I+=3,u+=4;this.batchIdOffset=m,this.vec3Offset=I,this.vec4Offset=u;let C=this.indices,y=this.volumeStartIndex,z=this.indexOffset;for(N=0;N<j;N++)C[z+N]=st[N]+y;this.volumeStartIndex+=8,this.indexOffset+=j};var gt=new W,Et=new _,wt=new t,M=new t,It=new t,xt=new t,T=new t;function Pt(e,o){let c=new Uint16Array(e.positions),i=new Uint16Array(e.widths),s=new Uint32Array(e.counts),A=new Uint16Array(e.batchIds),h=gt,g=Et,f=wt,d=new Float64Array(e.packedBuffer),l=0,r=d[l++],E=d[l++];W.unpack(d,l,h),l+=W.packedLength,_.unpack(d,l,g),l+=_.packedLength,t.unpack(d,l,f);let n,p=c.length/3,w=c.subarray(0,p),x=c.subarray(p,2*p),P=c.subarray(2*p,3*p);Y.zigZagDeltaDecode(w,x,P),ft(w,x,P,s);let H=s.length,b=0;for(n=0;n<H;n++){let y=s[n];b+=y-1}let a=new ot(b),F=at(w,x,P,h,r,E,g,f);p=w.length;let m=new Float32Array(p*3);for(n=0;n<p;++n)m[n*3]=F[n*3]-f.x,m[n*3+1]=F[n*3+1]-f.y,m[n*3+2]=F[n*3+2]-f.z;let I=0,u=0;for(n=0;n<H;n++){let y=s[n]-1,z=i[n]*.5,et=A[n],q=I;for(let D=0;D<y;D++){let S=t.unpack(m,I,It),O=t.unpack(m,I+3,xt),G=P[u],Z=P[u+1];G=v.lerp(r,E,G/V),Z=v.lerp(r,E,Z/V),u++;let L=M,R=T;if(D===0){let U=q+y*3,K=t.unpack(m,U,M);if(t.equals(K,S))t.unpack(m,U-3,L);else{let nt=t.subtract(S,O,M);L=t.add(nt,S,M)}}else t.unpack(m,I-3,L);if(D===y-1){let U=t.unpack(m,q,T);if(t.equals(U,O))t.unpack(m,q+3,R);else{let K=t.subtract(O,S,T);R=t.add(K,O,T)}}else t.unpack(m,I+6,R);a.addVolume(L,S,O,R,G,Z,z,et,f,g),I+=3}I+=3,u++}let N=a.indices;o.push(a.startEllipsoidNormals.buffer),o.push(a.endEllipsoidNormals.buffer),o.push(a.startPositionAndHeights.buffer),o.push(a.startFaceNormalAndVertexCornerIds.buffer),o.push(a.endPositionAndHeights.buffer),o.push(a.endFaceNormalAndHalfWidths.buffer),o.push(a.vertexBatchIds.buffer),o.push(N.buffer);let C={indexDatatype:N.BYTES_PER_ELEMENT===2?B.UNSIGNED_SHORT:B.UNSIGNED_INT,startEllipsoidNormals:a.startEllipsoidNormals.buffer,endEllipsoidNormals:a.endEllipsoidNormals.buffer,startPositionAndHeights:a.startPositionAndHeights.buffer,startFaceNormalAndVertexCornerIds:a.startFaceNormalAndVertexCornerIds.buffer,endPositionAndHeights:a.endPositionAndHeights.buffer,endFaceNormalAndHalfWidths:a.endFaceNormalAndHalfWidths.buffer,vertexBatchIds:a.vertexBatchIds.buffer,indices:N.buffer};if(e.keepDecodedPositions){let y=dt(s);o.push(F.buffer,y.buffer),C=X(C,{decodedPositions:F.buffer,decodedPositionOffsets:y.buffer})}return C}var Vt=J(Pt);export{Vt as default}; diff --git a/public/Cesium/Workers/createVectorTileGeometries.js b/public/Cesium/Workers/createVectorTileGeometries.js new file mode 100644 index 000000000..24f33d00d --- /dev/null +++ b/public/Cesium/Workers/createVectorTileGeometries.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as P}from"./chunk-HMIYSTF6.js";import{a as z}from"./chunk-GILIDQNQ.js";import"./chunk-ARG42DC4.js";import{a as H}from"./chunk-37F5JSTI.js";import{a as Y}from"./chunk-WZDE3RYP.js";import{a as j}from"./chunk-QN3VOORQ.js";import"./chunk-GBYLG25F.js";import"./chunk-CYCB63OH.js";import{a as W}from"./chunk-OFUUQVMR.js";import"./chunk-A56XVLQR.js";import"./chunk-RCV6KWXS.js";import{d as E}from"./chunk-4IW2T6GF.js";import{b as d}from"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as o}from"./chunk-64RSHJUE.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{e as l}from"./chunk-VTAIKJXX.js";function X(e){this.offset=e.offset,this.count=e.count,this.color=e.color,this.batchIds=e.batchIds}var J=X;var S=new o,$=d.packedLength+o.packedLength,ee=d.packedLength+2,ne=d.packedLength+o.packedLength,te=o.packedLength+1,u={modelMatrix:new d,boundingVolume:new E};function oe(e,c){let n=c*$,i=o.unpack(e,n,S);n+=o.packedLength;let r=d.unpack(e,n,u.modelMatrix);d.multiplyByScale(r,i,r);let t=u.boundingVolume;return o.clone(o.ZERO,t.center),t.radius=Math.sqrt(3),u}function ce(e,c){let n=c*ee,i=e[n++],r=e[n++],t=o.fromElements(i,i,r,S),s=d.unpack(e,n,u.modelMatrix);d.multiplyByScale(s,t,s);let h=u.boundingVolume;return o.clone(o.ZERO,h.center),h.radius=Math.sqrt(2),u}function se(e,c){let n=c*ne,i=o.unpack(e,n,S);n+=o.packedLength;let r=d.unpack(e,n,u.modelMatrix);d.multiplyByScale(r,i,r);let t=u.boundingVolume;return o.clone(o.ZERO,t.center),t.radius=1,u}function ie(e,c){let n=c*te,i=e[n++],r=o.unpack(e,n,S),t=d.fromTranslation(r,u.modelMatrix);d.multiplyByUniformScale(t,i,t);let s=u.boundingVolume;return o.clone(o.ZERO,s.center),s.radius=1,u}var de=new o;function R(e,c,n,i,r){if(!l(c))return;let t=n.length,s=i.attributes.position.values,h=i.indices,a=e.positions,x=e.vertexBatchIds,y=e.indices,I=e.batchIds,p=e.batchTableColors,T=e.batchedIndices,U=e.indexOffsets,v=e.indexCounts,L=e.boundingVolumes,F=e.modelMatrix,Z=e.center,V=e.positionOffset,B=e.batchIdIndex,O=e.indexOffset,D=e.batchedIndicesOffset;for(let w=0;w<t;++w){let C=r(c,w),k=C.modelMatrix;d.multiply(F,k,k);let M=n[w],A=s.length;for(let f=0;f<A;f+=3){let m=o.unpack(s,f,de);d.multiplyByPoint(k,m,m),o.subtract(m,Z,m),o.pack(m,a,V*3+f),x[B++]=M}let b=h.length;for(let f=0;f<b;++f)y[O+f]=h[f]+V;let g=w+D;T[g]=new J({offset:O,count:b,color:P.fromRgba(p[M]),batchIds:[M]}),I[g]=M,U[g]=O,v[g]=b,L[g]=E.transform(C.boundingVolume,k),V+=A/3,O+=b}e.positionOffset=V,e.batchIdIndex=B,e.indexOffset=O,e.batchedIndicesOffset+=t}var K=new o,Q=new d;function re(e){let c=new Float64Array(e),n=0;o.unpack(c,n,K),n+=o.packedLength,d.unpack(c,n,Q)}function le(e){let c=e.length,n=0;for(let i=0;i<c;++i)n+=P.packedLength+3+e[i].batchIds.length;return n}function ae(e,c,n){let i=n.length,r=2+i*E.packedLength+1+le(c),t=new Float64Array(r),s=0;t[s++]=e,t[s++]=i;for(let a=0;a<i;++a)E.pack(n[a],t,s),s+=E.packedLength;let h=c.length;t[s++]=h;for(let a=0;a<h;++a){let x=c[a];P.pack(x.color,t,s),s+=P.packedLength,t[s++]=x.offset,t[s++]=x.count;let y=x.batchIds,I=y.length;t[s++]=I;for(let p=0;p<I;++p)t[s++]=y[p]}return t}function fe(e,c){let n=l(e.boxes)?new Float32Array(e.boxes):void 0,i=l(e.boxBatchIds)?new Uint16Array(e.boxBatchIds):void 0,r=l(e.cylinders)?new Float32Array(e.cylinders):void 0,t=l(e.cylinderBatchIds)?new Uint16Array(e.cylinderBatchIds):void 0,s=l(e.ellipsoids)?new Float32Array(e.ellipsoids):void 0,h=l(e.ellipsoidBatchIds)?new Uint16Array(e.ellipsoidBatchIds):void 0,a=l(e.spheres)?new Float32Array(e.spheres):void 0,x=l(e.sphereBatchIds)?new Uint16Array(e.sphereBatchIds):void 0,y=l(n)?i.length:0,I=l(r)?t.length:0,p=l(s)?h.length:0,T=l(a)?x.length:0,U=j.getUnitBox(),v=z.getUnitCylinder(),L=H.getUnitEllipsoid(),F=U.attributes.position.values,Z=v.attributes.position.values,V=L.attributes.position.values,B=F.length*y;B+=Z.length*I,B+=V.length*(p+T);let O=U.indices,D=v.indices,w=L.indices,C=O.length*y;C+=D.length*I,C+=w.length*(p+T);let k=new Float32Array(B),M=new Uint16Array(B/3),A=W.createTypedArray(B/3,C),b=y+I+p+T,g=new Uint16Array(b),f=new Array(b),m=new Uint32Array(b),q=new Uint32Array(b),_=new Array(b);re(e.packedBuffer);let G={batchTableColors:new Uint32Array(e.batchTableColors),positions:k,vertexBatchIds:M,indices:A,batchIds:g,batchedIndices:f,indexOffsets:m,indexCounts:q,boundingVolumes:_,positionOffset:0,batchIdIndex:0,indexOffset:0,batchedIndicesOffset:0,modelMatrix:Q,center:K};R(G,n,i,U,oe),R(G,r,t,v,ce),R(G,s,h,L,se),R(G,a,x,L,ie);let N=ae(A.BYTES_PER_ELEMENT,f,_);return c.push(k.buffer,M.buffer,A.buffer),c.push(g.buffer,m.buffer,q.buffer),c.push(N.buffer),{positions:k.buffer,vertexBatchIds:M.buffer,indices:A.buffer,indexOffsets:m.buffer,indexCounts:q.buffer,batchIds:g.buffer,packedBuffer:N.buffer}}var Oe=Y(fe);export{Oe as default}; diff --git a/public/Cesium/Workers/createVectorTilePoints.js b/public/Cesium/Workers/createVectorTilePoints.js new file mode 100644 index 000000000..1247523ab --- /dev/null +++ b/public/Cesium/Workers/createVectorTilePoints.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as x}from"./chunk-WZDE3RYP.js";import{a as w}from"./chunk-DEPHB2WM.js";import{h as c}from"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as h,b as l,d as p}from"./chunk-64RSHJUE.js";import{a as i}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import"./chunk-VTAIKJXX.js";var u=32767,F=new l,L=new h,b=new c,y=new p,a={min:void 0,max:void 0};function V(t){t=new Float64Array(t);let o=0;a.min=t[o++],a.max=t[o++],c.unpack(t,o,b),o+=c.packedLength,p.unpack(t,o,y)}function z(t,o){let s=new Uint16Array(t.positions);V(t.packedBuffer);let e=b,C=y,A=a.min,P=a.max,n=s.length/3,f=s.subarray(0,n),g=s.subarray(n,2*n),d=s.subarray(2*n,3*n);w.zigZagDeltaDecode(f,g,d);let m=new Float64Array(s.length);for(let r=0;r<n;++r){let k=f[r],E=g[r],H=d[r],M=i.lerp(e.west,e.east,k/u),R=i.lerp(e.south,e.north,E/u),T=i.lerp(A,P,H/u),v=l.fromRadians(M,R,T,F),D=C.cartographicToCartesian(v,L);h.pack(D,m,r*3)}return o.push(m.buffer),{positions:m.buffer}}var G=x(z);export{G as default}; diff --git a/public/Cesium/Workers/createVectorTilePolygons.js b/public/Cesium/Workers/createVectorTilePolygons.js new file mode 100644 index 000000000..8f51c666d --- /dev/null +++ b/public/Cesium/Workers/createVectorTilePolygons.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as R}from"./chunk-HMIYSTF6.js";import{a as It}from"./chunk-WZDE3RYP.js";import{a as M}from"./chunk-CNCV5UL7.js";import{a as bt}from"./chunk-DEPHB2WM.js";import"./chunk-TCGIRNHN.js";import"./chunk-N4VJKXZS.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as W}from"./chunk-OFUUQVMR.js";import"./chunk-4IW2T6GF.js";import{h as z}from"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as o,b as nt,d as j}from"./chunk-64RSHJUE.js";import{a as et}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{e as A}from"./chunk-VTAIKJXX.js";var kt=new o,Bt=new j,Nt=new z,E={min:void 0,max:void 0,indexBytesPerElement:void 0};function Pt(s){let u=new Float64Array(s),n=0;E.indexBytesPerElement=u[n++],E.min=u[n++],E.max=u[n++],o.unpack(u,n,kt),n+=o.packedLength,j.unpack(u,n,Bt),n+=j.packedLength,z.unpack(u,n,Nt)}function Tt(s){let u=s.length,n=0;for(let y=0;y<u;++y)n+=R.packedLength+3+s[y].batchIds.length;return n}function Ct(s,u,n){let y=u.length,O=2+y*M.packedLength+1+Tt(n),c=new Float64Array(O),i=0;c[i++]=s,c[i++]=y;for(let x=0;x<y;++x)M.pack(u[x],c,i),i+=M.packedLength;let V=n.length;c[i++]=V;for(let x=0;x<V;++x){let B=n[x];R.pack(B.color,c,i),i+=R.packedLength,c[i++]=B.offset,c[i++]=B.count;let P=B.batchIds,w=P.length;c[i++]=w;for(let h=0;h<w;++h)c[i++]=P[h]}return c}var yt=32767,wt=new o,Ht=new o,St=new o,Ut=new o,Ft=new o,Lt=new nt,Mt=new z;function Rt(s,u){Pt(s.packedBuffer);let n;E.indexBytesPerElement===2?n=new Uint16Array(s.indices):n=new Uint32Array(s.indices);let O=new Uint16Array(s.positions),c=new Uint32Array(s.counts),i=new Uint32Array(s.indexCounts),V=new Uint32Array(s.batchIds),x=new Uint32Array(s.batchTableColors),B=new Array(c.length),P=kt,w=Bt,h=Nt,ot=E.min,st=E.max,T=s.minimumHeights,C=s.maximumHeights;A(T)&&A(C)&&(T=new Float32Array(T),C=new Float32Array(C));let t,f,l,N=O.length/2,ct=O.subarray(0,N),it=O.subarray(N,2*N);bt.zigZagDeltaDecode(ct,it);let rt=new Float64Array(N*3);for(t=0;t<N;++t){let e=ct[t],p=it[t],L=et.lerp(h.west,h.east,e/yt),k=et.lerp(h.south,h.north,p/yt),b=nt.fromRadians(L,k,0,Lt),Y=w.cartographicToCartesian(b,wt);o.pack(Y,rt,t*3)}let H=c.length,at=new Array(H),Z=new Array(H),ft=0,lt=0;for(t=0;t<H;++t)at[t]=ft,Z[t]=lt,ft+=c[t],lt+=i[t];let S=new Float32Array(N*3*2),_=new Uint16Array(N*2),D=new Uint32Array(Z.length),G=new Uint32Array(i.length),r=[],g={};for(t=0;t<H;++t)l=x[t],A(g[l])?(g[l].positionLength+=c[t],g[l].indexLength+=i[t],g[l].batchIds.push(t)):g[l]={positionLength:c[t],indexLength:i[t],offset:0,indexOffset:0,batchIds:[t]};let a,dt=0,ht=0;for(l in g)if(g.hasOwnProperty(l)){a=g[l],a.offset=dt,a.indexOffset=ht;let e=a.positionLength*2,p=a.indexLength*2+a.positionLength*6;dt+=e,ht+=p,a.indexLength=p}let U=[];for(l in g)g.hasOwnProperty(l)&&(a=g[l],U.push({color:R.fromRgba(parseInt(l)),offset:a.indexOffset,count:a.indexLength,batchIds:a.batchIds}));for(t=0;t<H;++t){l=x[t],a=g[l];let e=a.offset,p=e*3,L=e,k=at[t],b=c[t],Y=V[t],mt=ot,gt=st;A(T)&&A(C)&&(mt=T[t],gt=C[t]);let q=Number.POSITIVE_INFINITY,J=Number.NEGATIVE_INFINITY,K=Number.POSITIVE_INFINITY,Q=Number.NEGATIVE_INFINITY;for(f=0;f<b;++f){let m=o.unpack(rt,k*3+f*3,wt);w.scaleToGeodeticSurface(m,m);let I=w.cartesianToCartographic(m,Lt),F=I.latitude,pt=I.longitude;q=Math.min(F,q),J=Math.max(F,J),K=Math.min(pt,K),Q=Math.max(pt,Q);let xt=w.geodeticSurfaceNormal(m,Ht),v=o.multiplyByScalar(xt,mt,St),$=o.add(m,v,Ut);v=o.multiplyByScalar(xt,gt,v);let tt=o.add(m,v,Ft);o.subtract(tt,P,tt),o.subtract($,P,$),o.pack(tt,S,p),o.pack($,S,p+3),_[L]=Y,_[L+1]=Y,p+=6,L+=2}h=Mt,h.west=K,h.east=Q,h.south=q,h.north=J,B[t]=M.fromRectangle(h,ot,st,w);let d=a.indexOffset,X=Z[t],Ot=i[t];for(D[t]=d,f=0;f<Ot;f+=3){let m=n[X+f]-k,I=n[X+f+1]-k,F=n[X+f+2]-k;r[d++]=m*2+e,r[d++]=I*2+e,r[d++]=F*2+e,r[d++]=F*2+1+e,r[d++]=I*2+1+e,r[d++]=m*2+1+e}for(f=0;f<b;++f){let m=f,I=(f+1)%b;r[d++]=m*2+1+e,r[d++]=I*2+e,r[d++]=m*2+e,r[d++]=m*2+1+e,r[d++]=I*2+1+e,r[d++]=I*2+e}a.offset+=b*2,a.indexOffset=d,G[t]=d-D[t]}r=W.createTypedArray(S.length/3,r);let At=U.length;for(let e=0;e<At;++e){let p=U[e].batchIds,L=0,k=p.length;for(let b=0;b<k;++b)L+=G[p[b]];U[e].count=L}let Et=r.BYTES_PER_ELEMENT===2?W.UNSIGNED_SHORT:W.UNSIGNED_INT,ut=Ct(Et,B,U);return u.push(S.buffer,r.buffer,D.buffer,G.buffer,_.buffer,ut.buffer),{positions:S.buffer,indices:r.buffer,indexOffsets:D.buffer,indexCounts:G.buffer,batchIds:_.buffer,packedBuffer:ut.buffer}}var Jt=It(Rt);export{Jt as default}; diff --git a/public/Cesium/Workers/createVectorTilePolylines.js b/public/Cesium/Workers/createVectorTilePolylines.js new file mode 100644 index 000000000..544267710 --- /dev/null +++ b/public/Cesium/Workers/createVectorTilePolylines.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as K}from"./chunk-WZDE3RYP.js";import{a as G}from"./chunk-DEPHB2WM.js";import{a as S}from"./chunk-OFUUQVMR.js";import{c as B,h as R}from"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as t,b as _,d as L}from"./chunk-64RSHJUE.js";import{a as F}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import"./chunk-VTAIKJXX.js";var O=32767,ct=new _,rt=new t;function it(n,o,p,m,s){let d=n.length/3,U=n.subarray(0,d),v=n.subarray(d,2*d),P=n.subarray(2*d,3*d);G.zigZagDeltaDecode(U,v,P);let D=new Float64Array(n.length);for(let u=0;u<d;++u){let e=U[u],A=v[u],l=P[u],k=F.lerp(o.west,o.east,e/O),I=F.lerp(o.south,o.north,A/O),E=F.lerp(p,m,l/O),g=_.fromRadians(k,I,E,ct),C=s.cartographicToCartesian(g,rt);t.pack(C,D,u*3)}return D}var Y=it;var X=new R,$=new L,j=new t,H={min:void 0,max:void 0};function at(n){n=new Float64Array(n);let o=0;H.min=n[o++],H.max=n[o++],R.unpack(n,o,X),o+=R.packedLength,L.unpack(n,o,$),o+=L.packedLength,t.unpack(n,o,j)}function ft(n){let o=n.length,p=new Uint32Array(o+1),m=0;for(let s=0;s<o;++s)p[s]=m,m+=n[s];return p[o]=m,p}var Z=new t,q=new t,J=new t,dt=new t,Q=new t;function ut(n,o){let p=new Uint16Array(n.positions),m=new Uint16Array(n.widths),s=new Uint32Array(n.counts),d=new Uint16Array(n.batchIds);at(n.packedBuffer);let U=X,v=$,P=j,D=H.min,u=H.max,e=Y(p,U,D,u,v),A=e.length/3,l=A*4-4,k=new Float32Array(l*3),I=new Float32Array(l*3),E=new Float32Array(l*3),g=new Float32Array(l*2),C=new Uint16Array(l),N=0,z=0,tt=0,r,h=0,M=s.length;for(r=0;r<M;++r){let a=s[r],nt=m[r],ot=d[r];for(let f=0;f<a;++f){let w;if(f===0){let c=t.unpack(e,h*3,Z),T=t.unpack(e,(h+1)*3,q);w=t.subtract(c,T,J),t.add(c,w,w)}else w=t.unpack(e,(h+f-1)*3,J);let W=t.unpack(e,(h+f)*3,dt),x;if(f===a-1){let c=t.unpack(e,(h+a-1)*3,Z),T=t.unpack(e,(h+a-2)*3,q);x=t.subtract(c,T,Q),t.add(c,x,x)}else x=t.unpack(e,(h+f+1)*3,Q);t.subtract(w,P,w),t.subtract(W,P,W),t.subtract(x,P,x);let et=f===0?2:0,st=f===a-1?2:4;for(let c=et;c<st;++c){t.pack(W,k,N),t.pack(w,I,N),t.pack(x,E,N),N+=3;let T=c-2<0?-1:1;g[z++]=2*(c%2)-1,g[z++]=T*nt,C[tt++]=ot}}h+=a}let i=S.createTypedArray(l,A*6-6),b=0,y=0;for(M=A-1,r=0;r<M;++r)i[y++]=b,i[y++]=b+2,i[y++]=b+1,i[y++]=b+1,i[y++]=b+2,i[y++]=b+3,b+=4;o.push(k.buffer,I.buffer,E.buffer),o.push(g.buffer,C.buffer,i.buffer);let V={indexDatatype:i.BYTES_PER_ELEMENT===2?S.UNSIGNED_SHORT:S.UNSIGNED_INT,currentPositions:k.buffer,previousPositions:I.buffer,nextPositions:E.buffer,expandAndWidth:g.buffer,batchIds:C.buffer,indices:i.buffer};if(n.keepDecodedPositions){let a=ft(s);o.push(e.buffer,a.buffer),V=B(V,{decodedPositions:e.buffer,decodedPositionOffsets:a.buffer})}return V}var It=K(ut);export{It as default}; diff --git a/public/Cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js b/public/Cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js new file mode 100644 index 000000000..5321817f8 --- /dev/null +++ b/public/Cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as Dt,b as Gt}from"./chunk-7HTKERZY.js";import{a as Lt}from"./chunk-WZDE3RYP.js";import{a as lt}from"./chunk-DQQ63PYM.js";import{a as qt}from"./chunk-CNCV5UL7.js";import"./chunk-DEPHB2WM.js";import"./chunk-TCGIRNHN.js";import{a as kt}from"./chunk-N4VJKXZS.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{d as zt}from"./chunk-4IW2T6GF.js";import{b as $,g as Ot,h as Vt}from"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as P,b as N,c as wt,d as Ut}from"./chunk-64RSHJUE.js";import{a as r}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import{a as Ht}from"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{e as ht}from"./chunk-VTAIKJXX.js";var $t=Uint16Array.BYTES_PER_ELEMENT,mt=Int32Array.BYTES_PER_ELEMENT,Pt=Uint32Array.BYTES_PER_ELEMENT,te=Float32Array.BYTES_PER_ELEMENT,H=Float64Array.BYTES_PER_ELEMENT;function tt(n,l,e){e=e??r;let i=n.length;for(let c=0;c<i;++c)if(e.equalsEpsilon(n[c],l,r.EPSILON12))return c;return-1}function ee(n,l){n.ellipsoid=Ut.clone(n.ellipsoid),n.rectangle=Vt.clone(n.rectangle);let e=re(n.buffer,n.relativeToCenter,n.ellipsoid,n.rectangle,n.nativeRectangle,n.exaggeration,n.exaggerationRelativeHeight,n.skirtHeight,n.includeWebMercatorT,n.negativeAltitudeExponentBias,n.negativeElevationThreshold),i=e.vertices;l.push(i.buffer);let c=e.indices;return l.push(c.buffer),{vertices:i.buffer,indices:c.buffer,numberOfAttributes:e.encoding.stride,minimumHeight:e.minimumHeight,maximumHeight:e.maximumHeight,boundingSphere3D:e.boundingSphere3D,orientedBoundingBox:e.orientedBoundingBox,occludeePointInScaledSpace:e.occludeePointInScaledSpace,encoding:e.encoding,vertexCountWithoutSkirts:e.vertexCountWithoutSkirts,indexCountWithoutSkirts:e.indexCountWithoutSkirts,westIndicesSouthToNorth:e.westIndicesSouthToNorth,southIndicesEastToWest:e.southIndicesEastToWest,eastIndicesNorthToSouth:e.eastIndicesNorthToSouth,northIndicesWestToEast:e.northIndicesWestToEast}}var u=new N,G=new P,oe=new P,ne=new P,ie=new $;function re(n,l,e,i,c,et,m,ot,T,nt,it){let I,h,E,f,x,p;ht(i)?(I=i.west,h=i.south,E=i.east,f=i.north,x=i.width,p=i.height):(I=r.toRadians(c.west),h=r.toRadians(c.south),E=r.toRadians(c.east),f=r.toRadians(c.north),x=r.toRadians(i.width),p=r.toRadians(i.height));let X=[h,f],A=[I,E],O=Ot.eastNorthUpToFixedFrame(l,e),j=$.inverseTransformation(O,ie),V,Q;T&&(V=lt.geodeticLatitudeToMercatorAngle(h),Q=1/(lt.geodeticLatitudeToMercatorAngle(f)-V));let y=et!==1,a=new DataView(n),z=Number.POSITIVE_INFINITY,J=Number.NEGATIVE_INFINITY,b=oe;b.x=Number.POSITIVE_INFINITY,b.y=Number.POSITIVE_INFINITY,b.z=Number.POSITIVE_INFINITY;let M=ne;M.x=Number.NEGATIVE_INFINITY,M.y=Number.NEGATIVE_INFINITY,M.z=Number.NEGATIVE_INFINITY;let o=0,S=0,At=0,rt,L;for(L=0;L<4;++L){let t=o;rt=a.getUint32(t,!0),t+=Pt;let d=r.toRadians(a.getFloat64(t,!0)*180);t+=H,tt(A,d)===-1&&A.push(d);let Y=r.toRadians(a.getFloat64(t,!0)*180);t+=H,tt(X,Y)===-1&&X.push(Y),t+=2*H;let B=a.getInt32(t,!0);t+=mt,S+=B,B=a.getInt32(t,!0),At+=B*3,o+=rt+Pt}let yt=[],bt=[],g=new Array(S),R=new Array(S),_=new Array(S),C=T?new Array(S):[],F=y?new Array(S):[],v=new Array(At),k=[],st=[],ct=[],W=[],s=0,pt=0;for(o=0,L=0;L<4;++L){rt=a.getUint32(o,!0),o+=Pt;let t=o,d=r.toRadians(a.getFloat64(o,!0)*180);o+=H;let Y=r.toRadians(a.getFloat64(o,!0)*180);o+=H;let B=r.toRadians(a.getFloat64(o,!0)*180),Ft=B*.5;o+=H;let vt=r.toRadians(a.getFloat64(o,!0)*180),Wt=vt*.5;o+=H;let Yt=a.getInt32(o,!0);o+=mt;let Kt=a.getInt32(o,!0);o+=mt,o+=mt;let St=new Array(Yt);for(let U=0;U<Yt;++U){let Z=d+a.getUint8(o++)*B;u.longitude=Z;let D=Y+a.getUint8(o++)*vt;u.latitude=D;let w=a.getFloat32(o,!0);if(o+=te,w!==0&&w<it&&(w*=-Math.pow(2,nt)),w*=6371010,u.height=w,tt(A,Z)!==-1||tt(X,D)!==-1){let dt=tt(yt,u,N);if(dt===-1)yt.push(N.clone(u)),bt.push(s);else{St[U]=bt[dt];continue}}St[U]=s,Math.abs(Z-I)<Ft?k.push({index:s,cartographic:N.clone(u)}):Math.abs(Z-E)<Ft?ct.push({index:s,cartographic:N.clone(u)}):Math.abs(D-h)<Wt?st.push({index:s,cartographic:N.clone(u)}):Math.abs(D-f)<Wt&&W.push({index:s,cartographic:N.clone(u)}),z=Math.min(w,z),J=Math.max(w,J),_[s]=w;let Nt=e.cartographicToCartesian(u);if(g[s]=Nt,T&&(C[s]=(lt.geodeticLatitudeToMercatorAngle(D)-V)*Q),y){let dt=e.geodeticSurfaceNormal(Nt);F[s]=dt}$.multiplyByPoint(j,Nt,G),P.minimumByComponent(G,b,b),P.maximumByComponent(G,M,M);let Tt=(Z-I)/(E-I);Tt=r.clamp(Tt,0,1);let Bt=(D-h)/(f-h);Bt=r.clamp(Bt,0,1),R[s]=new wt(Tt,Bt),++s}let Zt=Kt*3;for(let U=0;U<Zt;++U,++pt)v[pt]=St[a.getUint16(o,!0)],o+=$t;if(rt!==o-t)throw new Ht("Invalid terrain tile.")}g.length=s,R.length=s,_.length=s,T&&(C.length=s),y&&(F.length=s);let Mt=s,Xt=pt,K={hMin:z,lastBorderPoint:void 0,skirtHeight:ot,toENU:j,ellipsoid:e,minimum:b,maximum:M};k.sort(function(t,d){return d.cartographic.latitude-t.cartographic.latitude}),st.sort(function(t,d){return t.cartographic.longitude-d.cartographic.longitude}),ct.sort(function(t,d){return t.cartographic.latitude-d.cartographic.latitude}),W.sort(function(t,d){return d.cartographic.longitude-t.cartographic.longitude});let q=1e-5;if(gt(g,_,R,C,F,v,K,k,-q*x,!0,-q*p),gt(g,_,R,C,F,v,K,st,-q*p,!1),gt(g,_,R,C,F,v,K,ct,q*x,!0,q*p),gt(g,_,R,C,F,v,K,W,q*p,!1),k.length>0&&W.length>0){let t=k[0].index,d=Mt,Y=W[W.length-1].index,B=g.length-1;v.push(Y,B,d,d,t,Y)}S=g.length;let jt=zt.fromPoints(g),Rt;ht(i)&&(Rt=qt.fromRectangle(i,z,J,e));let Qt=new Dt(e).computeHorizonCullingPointPossiblyUnderEllipsoid(l,g,z),Jt=new kt(b,M,l),It=new Gt(l,Jt,K.hMin,J,O,!1,T,y,et,m),_t=new Float32Array(S*It.stride),Ct=0;for(let t=0;t<S;++t)Ct=It.encode(_t,Ct,g[t],R[t],_[t],void 0,C[t],F[t]);let at=k.map(function(t){return t.index}).reverse(),Et=st.map(function(t){return t.index}).reverse(),ut=ct.map(function(t){return t.index}).reverse(),xt=W.map(function(t){return t.index}).reverse();return Et.unshift(ut[ut.length-1]),Et.push(at[0]),xt.unshift(at[at.length-1]),xt.push(ut[0]),{vertices:_t,indices:new Uint16Array(v),maximumHeight:J,minimumHeight:z,encoding:It,boundingSphere3D:jt,orientedBoundingBox:Rt,occludeePointInScaledSpace:Qt,vertexCountWithoutSkirts:Mt,indexCountWithoutSkirts:Xt,westIndicesSouthToNorth:at,southIndicesEastToWest:Et,eastIndicesNorthToSouth:ut,northIndicesWestToEast:xt}}function gt(n,l,e,i,c,et,m,ot,T,nt,it){let I=ot.length;for(let h=0;h<I;++h){let E=ot[h],f=E.cartographic,x=E.index,p=n.length,X=f.longitude,A=f.latitude;A=r.clamp(A,-r.PI_OVER_TWO,r.PI_OVER_TWO);let O=f.height-m.skirtHeight;m.hMin=Math.min(m.hMin,O),N.fromRadians(X,A,O,u),nt&&(u.longitude+=T),nt?h===I-1?u.latitude+=it:h===0&&(u.latitude-=it):u.latitude+=T;let j=m.ellipsoid.cartographicToCartesian(u);n.push(j),l.push(O),e.push(wt.clone(e[x])),i.length>0&&i.push(i[x]),c.length>0&&c.push(c[x]),$.multiplyByPoint(m.toENU,j,G);let V=m.minimum,Q=m.maximum;P.minimumByComponent(G,V,V),P.maximumByComponent(G,Q,Q);let ft=m.lastBorderPoint;if(ht(ft)){let y=ft.index;et.push(y,p-1,p,p,x,y)}m.lastBorderPoint=E}}var we=Lt(ee);export{we as default}; diff --git a/public/Cesium/Workers/createVerticesFromHeightmap.js b/public/Cesium/Workers/createVerticesFromHeightmap.js new file mode 100644 index 000000000..0a57dcec7 --- /dev/null +++ b/public/Cesium/Workers/createVerticesFromHeightmap.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as ar,b as sr}from"./chunk-7HTKERZY.js";import{a as ir}from"./chunk-WZDE3RYP.js";import{a as xe}from"./chunk-DQQ63PYM.js";import{a as nr}from"./chunk-CNCV5UL7.js";import"./chunk-DEPHB2WM.js";import"./chunk-TCGIRNHN.js";import{a as tr}from"./chunk-N4VJKXZS.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{d as rr}from"./chunk-4IW2T6GF.js";import{b as Ie,g as er,h as ne}from"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as re,c as Pe,d as pe}from"./chunk-64RSHJUE.js";import{a as he}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import{a as Re}from"./chunk-ED5JPB3S.js";import{a as me}from"./chunk-LEYMRMBK.js";import{c as pr,d as Ir,e as W}from"./chunk-VTAIKJXX.js";var lr=pr((Zr,Ue)=>{/* Copyright 2015-2018 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */(function(){var D=function(){var A={};A.defaultNoDataValue=-34027999387901484e22,A.decode=function(r,a){a=a||{};var t=a.encodedMaskData||a.encodedMaskData===null,i=n(r,a.inputOffset||0,t),o=a.noDataValue!==null?a.noDataValue:A.defaultNoDataValue,s=V(i,a.pixelType||Float32Array,a.encodedMaskData,o,a.returnMask),u={width:i.width,height:i.height,pixelData:s.resultPixels,minValue:s.minValue,maxValue:i.pixels.maxValue,noDataValue:o};return s.resultMask&&(u.maskData=s.resultMask),a.returnEncodedMask&&i.mask&&(u.encodedMaskData=i.mask.bitset?i.mask.bitset:null),a.returnFileInfo&&(u.fileInfo=b(i),a.computeUsedBitDepths&&(u.fileInfo.bitDepths=Y(i))),u};var V=function(r,a,t,i,o){var s=0,u=r.pixels.numBlocksX,m=r.pixels.numBlocksY,l=Math.floor(r.width/u),f=Math.floor(r.height/m),h=2*r.maxZError,c=Number.MAX_VALUE,g;t=t||(r.mask?r.mask.bitset:null);var v,U;v=new a(r.width*r.height),o&&t&&(U=new Uint8Array(r.width*r.height));for(var M=new Float32Array(l*f),S,I,k=0;k<=m;k++){var w=k!==m?f:r.height%m;if(w!==0)for(var d=0;d<=u;d++){var x=d!==u?l:r.width%u;if(x!==0){var T=k*r.width*f+d*l,y=r.width-x,p=r.pixels.blocks[s],L,B,E;p.encoding<2?(p.encoding===0?L=p.rawData:(e(p.stuffedData,p.bitsPerPixel,p.numValidPixels,p.offset,h,M,r.pixels.maxValue),L=M),B=0):p.encoding===2?E=0:E=p.offset;var O;if(t)for(I=0;I<w;I++){for(T&7&&(O=t[T>>3],O<<=T&7),S=0;S<x;S++)T&7||(O=t[T>>3]),O&128?(U&&(U[T]=1),g=p.encoding<2?L[B++]:E,c=c>g?g:c,v[T++]=g):(U&&(U[T]=0),v[T++]=i),O<<=1;T+=y}else if(p.encoding<2)for(I=0;I<w;I++){for(S=0;S<x;S++)g=L[B++],c=c>g?g:c,v[T++]=g;T+=y}else for(c=c>E?E:c,I=0;I<w;I++){for(S=0;S<x;S++)v[T++]=E;T+=y}if(p.encoding===1&&B!==p.numValidPixels)throw"Block and Mask do not match";s++}}}return{resultPixels:v,resultMask:U,minValue:c}},b=function(r){return{fileIdentifierString:r.fileIdentifierString,fileVersion:r.fileVersion,imageType:r.imageType,height:r.height,width:r.width,maxZError:r.maxZError,eofOffset:r.eofOffset,mask:r.mask?{numBlocksX:r.mask.numBlocksX,numBlocksY:r.mask.numBlocksY,numBytes:r.mask.numBytes,maxValue:r.mask.maxValue}:null,pixels:{numBlocksX:r.pixels.numBlocksX,numBlocksY:r.pixels.numBlocksY,numBytes:r.pixels.numBytes,maxValue:r.pixels.maxValue,noDataValue:r.noDataValue}}},Y=function(r){for(var a=r.pixels.numBlocksX*r.pixels.numBlocksY,t={},i=0;i<a;i++){var o=r.pixels.blocks[i];o.encoding===0?t.float32=!0:o.encoding===1?t[o.bitsPerPixel]=!0:t[0]=!0}return Object.keys(t)},n=function(r,a,t){var i={},o=new Uint8Array(r,a,10);if(i.fileIdentifierString=String.fromCharCode.apply(null,o),i.fileIdentifierString.trim()!=="CntZImage")throw"Unexpected file identifier string: "+i.fileIdentifierString;a+=10;var s=new DataView(r,a,24);if(i.fileVersion=s.getInt32(0,!0),i.imageType=s.getInt32(4,!0),i.height=s.getUint32(8,!0),i.width=s.getUint32(12,!0),i.maxZError=s.getFloat64(16,!0),a+=24,!t)if(s=new DataView(r,a,16),i.mask={},i.mask.numBlocksY=s.getUint32(0,!0),i.mask.numBlocksX=s.getUint32(4,!0),i.mask.numBytes=s.getUint32(8,!0),i.mask.maxValue=s.getFloat32(12,!0),a+=16,i.mask.numBytes>0){var u=new Uint8Array(Math.ceil(i.width*i.height/8));s=new DataView(r,a,i.mask.numBytes);var m=s.getInt16(0,!0),l=2,f=0;do{if(m>0)for(;m--;)u[f++]=s.getUint8(l++);else{var h=s.getUint8(l++);for(m=-m;m--;)u[f++]=h}m=s.getInt16(l,!0),l+=2}while(l<i.mask.numBytes);if(m!==-32768||f<u.length)throw"Unexpected end of mask RLE encoding";i.mask.bitset=u,a+=i.mask.numBytes}else(i.mask.numBytes|i.mask.numBlocksY|i.mask.maxValue)===0&&(i.mask.bitset=new Uint8Array(Math.ceil(i.width*i.height/8)));s=new DataView(r,a,16),i.pixels={},i.pixels.numBlocksY=s.getUint32(0,!0),i.pixels.numBlocksX=s.getUint32(4,!0),i.pixels.numBytes=s.getUint32(8,!0),i.pixels.maxValue=s.getFloat32(12,!0),a+=16;var c=i.pixels.numBlocksX,g=i.pixels.numBlocksY,v=c+(i.width%c>0?1:0),U=g+(i.height%g>0?1:0);i.pixels.blocks=new Array(v*U);for(var M=0,S=0;S<U;S++)for(var I=0;I<v;I++){var k=0,w=r.byteLength-a;s=new DataView(r,a,Math.min(10,w));var d={};i.pixels.blocks[M++]=d;var x=s.getUint8(0);if(k++,d.encoding=x&63,d.encoding>3)throw"Invalid block encoding ("+d.encoding+")";if(d.encoding===2){a++;continue}if(x!==0&&x!==2){if(x>>=6,d.offsetType=x,x===2)d.offset=s.getInt8(1),k++;else if(x===1)d.offset=s.getInt16(1,!0),k+=2;else if(x===0)d.offset=s.getFloat32(1,!0),k+=4;else throw"Invalid block offset type";if(d.encoding===1)if(x=s.getUint8(k),k++,d.bitsPerPixel=x&63,x>>=6,d.numValidPixelsType=x,x===2)d.numValidPixels=s.getUint8(k),k++;else if(x===1)d.numValidPixels=s.getUint16(k,!0),k+=2;else if(x===0)d.numValidPixels=s.getUint32(k,!0),k+=4;else throw"Invalid valid pixel count type"}if(a+=k,d.encoding!==3){var T,y;if(d.encoding===0){var p=(i.pixels.numBytes-1)/4;if(p!==Math.floor(p))throw"uncompressed block has invalid length";T=new ArrayBuffer(p*4),y=new Uint8Array(T),y.set(new Uint8Array(r,a,p*4));var L=new Float32Array(T);d.rawData=L,a+=p*4}else if(d.encoding===1){var B=Math.ceil(d.numValidPixels*d.bitsPerPixel/8),E=Math.ceil(B/4);T=new ArrayBuffer(E*4),y=new Uint8Array(T),y.set(new Uint8Array(r,a,B)),d.stuffedData=new Uint32Array(T),a+=B}}}return i.eofOffset=a,i},e=function(r,a,t,i,o,s,u){var m=(1<<a)-1,l=0,f,h=0,c,g,v=Math.ceil((u-i)/o),U=r.length*4-Math.ceil(a*t/8);for(r[r.length-1]<<=8*U,f=0;f<t;f++){if(h===0&&(g=r[l++],h=32),h>=a)c=g>>>h-a&m,h-=a;else{var M=a-h;c=(g&m)<<M&m,g=r[l++],h=32-M,c+=g>>>h}s[f]=c<v?i+c*o:u}return s};return A}(),ae=function(){"use strict";var A={unstuff:function(n,e,r,a,t,i,o,s){var u=(1<<r)-1,m=0,l,f=0,h,c,g,v,U=n.length*4-Math.ceil(r*a/8);if(n[n.length-1]<<=8*U,t)for(l=0;l<a;l++)f===0&&(c=n[m++],f=32),f>=r?(h=c>>>f-r&u,f-=r):(g=r-f,h=(c&u)<<g&u,c=n[m++],f=32-g,h+=c>>>f),e[l]=t[h];else for(v=Math.ceil((s-i)/o),l=0;l<a;l++)f===0&&(c=n[m++],f=32),f>=r?(h=c>>>f-r&u,f-=r):(g=r-f,h=(c&u)<<g&u,c=n[m++],f=32-g,h+=c>>>f),e[l]=h<v?i+h*o:s},unstuffLUT:function(n,e,r,a,t,i){var o=(1<<e)-1,s=0,u=0,m=0,l=0,f=0,h,c=[],g=n.length*4-Math.ceil(e*r/8);n[n.length-1]<<=8*g;var v=Math.ceil((i-a)/t);for(u=0;u<r;u++)l===0&&(h=n[s++],l=32),l>=e?(f=h>>>l-e&o,l-=e):(m=e-l,f=(h&o)<<m&o,h=n[s++],l=32-m,f+=h>>>l),c[u]=f<v?a+f*t:i;return c.unshift(a),c},unstuff2:function(n,e,r,a,t,i,o,s){var u=(1<<r)-1,m=0,l,f=0,h=0,c,g,v;if(t)for(l=0;l<a;l++)f===0&&(g=n[m++],f=32,h=0),f>=r?(c=g>>>h&u,f-=r,h+=r):(v=r-f,c=g>>>h&u,g=n[m++],f=32-v,c|=(g&(1<<v)-1)<<r-v,h=v),e[l]=t[c];else{var U=Math.ceil((s-i)/o);for(l=0;l<a;l++)f===0&&(g=n[m++],f=32,h=0),f>=r?(c=g>>>h&u,f-=r,h+=r):(v=r-f,c=g>>>h&u,g=n[m++],f=32-v,c|=(g&(1<<v)-1)<<r-v,h=v),e[l]=c<U?i+c*o:s}return e},unstuffLUT2:function(n,e,r,a,t,i){var o=(1<<e)-1,s=0,u=0,m=0,l=0,f=0,h=0,c,g=[],v=Math.ceil((i-a)/t);for(u=0;u<r;u++)l===0&&(c=n[s++],l=32,h=0),l>=e?(f=c>>>h&o,l-=e,h+=e):(m=e-l,f=c>>>h&o,c=n[s++],l=32-m,f|=(c&(1<<m)-1)<<e-m,h=m),g[u]=f<v?a+f*t:i;return g.unshift(a),g},originalUnstuff:function(n,e,r,a){var t=(1<<r)-1,i=0,o,s=0,u,m,l,f=n.length*4-Math.ceil(r*a/8);for(n[n.length-1]<<=8*f,o=0;o<a;o++)s===0&&(m=n[i++],s=32),s>=r?(u=m>>>s-r&t,s-=r):(l=r-s,u=(m&t)<<l&t,m=n[i++],s=32-l,u+=m>>>s),e[o]=u;return e},originalUnstuff2:function(n,e,r,a){var t=(1<<r)-1,i=0,o,s=0,u=0,m,l,f;for(o=0;o<a;o++)s===0&&(l=n[i++],s=32,u=0),s>=r?(m=l>>>u&t,s-=r,u+=r):(f=r-s,m=l>>>u&t,l=n[i++],s=32-f,m|=(l&(1<<f)-1)<<r-f,u=f),e[o]=m;return e}},V={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(n){for(var e=65535,r=65535,a=n.length,t=Math.floor(a/2),i=0;t;){var o=t>=359?359:t;t-=o;do e+=n[i++]<<8,r+=e+=n[i++];while(--o);e=(e&65535)+(e>>>16),r=(r&65535)+(r>>>16)}return a&1&&(r+=e+=n[i]<<8),e=(e&65535)+(e>>>16),r=(r&65535)+(r>>>16),(r<<16|e)>>>0},readHeaderInfo:function(n,e){var r=e.ptr,a=new Uint8Array(n,r,6),t={};if(t.fileIdentifierString=String.fromCharCode.apply(null,a),t.fileIdentifierString.lastIndexOf("Lerc2",0)!==0)throw"Unexpected file identifier string (expect Lerc2 ): "+t.fileIdentifierString;r+=6;var i=new DataView(n,r,8),o=i.getInt32(0,!0);t.fileVersion=o,r+=4,o>=3&&(t.checksum=i.getUint32(4,!0),r+=4),i=new DataView(n,r,12),t.height=i.getUint32(0,!0),t.width=i.getUint32(4,!0),r+=8,o>=4?(t.numDims=i.getUint32(8,!0),r+=4):t.numDims=1,i=new DataView(n,r,40),t.numValidPixel=i.getUint32(0,!0),t.microBlockSize=i.getInt32(4,!0),t.blobSize=i.getInt32(8,!0),t.imageType=i.getInt32(12,!0),t.maxZError=i.getFloat64(16,!0),t.zMin=i.getFloat64(24,!0),t.zMax=i.getFloat64(32,!0),r+=40,e.headerInfo=t,e.ptr=r;var s,u;if(o>=3&&(u=o>=4?52:48,s=this.computeChecksumFletcher32(new Uint8Array(n,r-u,t.blobSize-14)),s!==t.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(n,e){var r=e.headerInfo,a=this.getDataTypeArray(r.imageType),t=r.numDims*this.getDataTypeSize(r.imageType),i=this.readSubArray(n,e.ptr,a,t),o=this.readSubArray(n,e.ptr+t,a,t);e.ptr+=2*t;var s,u=!0;for(s=0;s<r.numDims;s++)if(i[s]!==o[s]){u=!1;break}return r.minValues=i,r.maxValues=o,u},readSubArray:function(n,e,r,a){var t;if(r===Uint8Array)t=new Uint8Array(n,e,a);else{var i=new ArrayBuffer(a),o=new Uint8Array(i);o.set(new Uint8Array(n,e,a)),t=new r(i)}return t},readMask:function(n,e){var r=e.ptr,a=e.headerInfo,t=a.width*a.height,i=a.numValidPixel,o=new DataView(n,r,4),s={};if(s.numBytes=o.getUint32(0,!0),r+=4,(i===0||t===i)&&s.numBytes!==0)throw"invalid mask";var u,m;if(i===0)u=new Uint8Array(Math.ceil(t/8)),s.bitset=u,m=new Uint8Array(t),e.pixels.resultMask=m,r+=s.numBytes;else if(s.numBytes>0){u=new Uint8Array(Math.ceil(t/8)),o=new DataView(n,r,s.numBytes);var l=o.getInt16(0,!0),f=2,h=0,c=0;do{if(l>0)for(;l--;)u[h++]=o.getUint8(f++);else for(c=o.getUint8(f++),l=-l;l--;)u[h++]=c;l=o.getInt16(f,!0),f+=2}while(f<s.numBytes);if(l!==-32768||h<u.length)throw"Unexpected end of mask RLE encoding";m=new Uint8Array(t);var g=0,v=0;for(v=0;v<t;v++)v&7?(g=u[v>>3],g<<=v&7):g=u[v>>3],g&128&&(m[v]=1);e.pixels.resultMask=m,s.bitset=u,r+=s.numBytes}return e.ptr=r,e.mask=s,!0},readDataOneSweep:function(n,e,r){var a=e.ptr,t=e.headerInfo,i=t.numDims,o=t.width*t.height,s=t.imageType,u=t.numValidPixel*V.getDataTypeSize(s)*i,m,l=e.pixels.resultMask;if(r===Uint8Array)m=new Uint8Array(n,a,u);else{var f=new ArrayBuffer(u),h=new Uint8Array(f);h.set(new Uint8Array(n,a,u)),m=new r(f)}if(m.length===o*i)e.pixels.resultPixels=m;else{e.pixels.resultPixels=new r(o*i);var c=0,g=0,v=0,U=0;if(i>1)for(v=0;v<i;v++)for(U=v*o,g=0;g<o;g++)l[g]&&(e.pixels.resultPixels[U+g]=m[c++]);else for(g=0;g<o;g++)l[g]&&(e.pixels.resultPixels[g]=m[c++])}return a+=u,e.ptr=a,!0},readHuffmanTree:function(n,e){var r=this.HUFFMAN_LUT_BITS_MAX,a=new DataView(n,e.ptr,16);e.ptr+=16;var t=a.getInt32(0,!0);if(t<2)throw"unsupported Huffman version";var i=a.getInt32(4,!0),o=a.getInt32(8,!0),s=a.getInt32(12,!0);if(o>=s)return!1;var u=new Uint32Array(s-o);V.decodeBits(n,e,u);var m=[],l,f,h,c;for(l=o;l<s;l++)f=l-(l<i?0:i),m[f]={first:u[l-o],second:null};var g=n.byteLength-e.ptr,v=Math.ceil(g/4),U=new ArrayBuffer(v*4),M=new Uint8Array(U);M.set(new Uint8Array(n,e.ptr,g));var S=new Uint32Array(U),I=0,k,w=0;for(k=S[0],l=o;l<s;l++)f=l-(l<i?0:i),c=m[f].first,c>0&&(m[f].second=k<<I>>>32-c,32-I>=c?(I+=c,I===32&&(I=0,w++,k=S[w])):(I+=c-32,w++,k=S[w],m[f].second|=k>>>32-I));var d=0,x=0,T=new b;for(l=0;l<m.length;l++)m[l]!==void 0&&(d=Math.max(d,m[l].first));d>=r?x=r:x=d,d>=30&&console.log("WARning, large NUM LUT BITS IS "+d);var y=[],p,L,B,E,O,F;for(l=o;l<s;l++)if(f=l-(l<i?0:i),c=m[f].first,c>0)if(p=[c,f],c<=x)for(L=m[f].second<<x-c,B=1<<x-c,h=0;h<B;h++)y[L|h]=p;else for(L=m[f].second,F=T,E=c-1;E>=0;E--)O=L>>>E&1,O?(F.right||(F.right=new b),F=F.right):(F.left||(F.left=new b),F=F.left),E===0&&!F.val&&(F.val=p[1]);return{decodeLut:y,numBitsLUTQick:x,numBitsLUT:d,tree:T,stuffedData:S,srcPtr:w,bitPos:I}},readHuffman:function(n,e,r){var a=e.headerInfo,t=a.numDims,i=e.headerInfo.height,o=e.headerInfo.width,s=o*i,u=this.readHuffmanTree(n,e),m=u.decodeLut,l=u.tree,f=u.stuffedData,h=u.srcPtr,c=u.bitPos,g=u.numBitsLUTQick,v=u.numBitsLUT,U=e.headerInfo.imageType===0?128:0,M,S,I,k=e.pixels.resultMask,w,d,x,T,y,p,L,B=0;c>0&&(h++,c=0);var E=f[h],O=e.encodeMode===1,F=new r(s*t),N=F,_;for(_=0;_<a.numDims;_++){if(t>1&&(N=new r(F.buffer,s*_,s),B=0),e.headerInfo.numValidPixel===o*i)for(p=0,T=0;T<i;T++)for(y=0;y<o;y++,p++){if(S=0,w=E<<c>>>32-g,d=w,32-c<g&&(w|=f[h+1]>>>64-c-g,d=w),m[d])S=m[d][1],c+=m[d][0];else for(w=E<<c>>>32-v,d=w,32-c<v&&(w|=f[h+1]>>>64-c-v,d=w),M=l,L=0;L<v;L++)if(x=w>>>v-L-1&1,M=x?M.right:M.left,!(M.left||M.right)){S=M.val,c=c+L+1;break}c>=32&&(c-=32,h++,E=f[h]),I=S-U,O?(y>0?I+=B:T>0?I+=N[p-o]:I+=B,I&=255,N[p]=I,B=I):N[p]=I}else for(p=0,T=0;T<i;T++)for(y=0;y<o;y++,p++)if(k[p]){if(S=0,w=E<<c>>>32-g,d=w,32-c<g&&(w|=f[h+1]>>>64-c-g,d=w),m[d])S=m[d][1],c+=m[d][0];else for(w=E<<c>>>32-v,d=w,32-c<v&&(w|=f[h+1]>>>64-c-v,d=w),M=l,L=0;L<v;L++)if(x=w>>>v-L-1&1,M=x?M.right:M.left,!(M.left||M.right)){S=M.val,c=c+L+1;break}c>=32&&(c-=32,h++,E=f[h]),I=S-U,O?(y>0&&k[p-1]?I+=B:T>0&&k[p-o]?I+=N[p-o]:I+=B,I&=255,N[p]=I,B=I):N[p]=I}e.ptr=e.ptr+(h+1)*4+(c>0?4:0)}e.pixels.resultPixels=F},decodeBits:function(n,e,r,a,t){{var i=e.headerInfo,o=i.fileVersion,s=0,u=new DataView(n,e.ptr,5),m=u.getUint8(0);s++;var l=m>>6,f=l===0?4:3-l,h=(m&32)>0,c=m&31,g=0;if(f===1)g=u.getUint8(s),s++;else if(f===2)g=u.getUint16(s,!0),s+=2;else if(f===4)g=u.getUint32(s,!0),s+=4;else throw"Invalid valid pixel count type";var v=2*i.maxZError,U,M,S,I,k,w,d,x,T,y,p=i.numDims>1?i.maxValues[t]:i.zMax;if(h){for(e.counter.lut++,x=u.getUint8(s),T=c,s++,I=Math.ceil((x-1)*c/8),k=Math.ceil(I/4),M=new ArrayBuffer(k*4),S=new Uint8Array(M),e.ptr+=s,S.set(new Uint8Array(n,e.ptr,I)),d=new Uint32Array(M),e.ptr+=I,y=0;x-1>>>y;)y++;I=Math.ceil(g*y/8),k=Math.ceil(I/4),M=new ArrayBuffer(k*4),S=new Uint8Array(M),S.set(new Uint8Array(n,e.ptr,I)),U=new Uint32Array(M),e.ptr+=I,o>=3?w=A.unstuffLUT2(d,c,x-1,a,v,p):w=A.unstuffLUT(d,c,x-1,a,v,p),o>=3?A.unstuff2(U,r,y,g,w):A.unstuff(U,r,y,g,w)}else e.counter.bitstuffer++,y=c,e.ptr+=s,y>0&&(I=Math.ceil(g*y/8),k=Math.ceil(I/4),M=new ArrayBuffer(k*4),S=new Uint8Array(M),S.set(new Uint8Array(n,e.ptr,I)),U=new Uint32Array(M),e.ptr+=I,o>=3?a==null?A.originalUnstuff2(U,r,y,g):A.unstuff2(U,r,y,g,!1,a,v,p):a==null?A.originalUnstuff(U,r,y,g):A.unstuff(U,r,y,g,!1,a,v,p))}},readTiles:function(n,e,r){var a=e.headerInfo,t=a.width,i=a.height,o=a.microBlockSize,s=a.imageType,u=V.getDataTypeSize(s),m=Math.ceil(t/o),l=Math.ceil(i/o);e.pixels.numBlocksY=l,e.pixels.numBlocksX=m,e.pixels.ptr=0;var f=0,h=0,c=0,g=0,v=0,U=0,M=0,S=0,I=0,k=0,w=0,d=0,x=0,T=0,y=0,p=0,L,B,E,O,F,N,_=new r(o*o),Te=i%o||o,ke=t%o||o,Q,z,le=a.numDims,ie,Z=e.pixels.resultMask,j=e.pixels.resultPixels;for(c=0;c<l;c++)for(v=c!==l-1?o:Te,g=0;g<m;g++)for(U=g!==m-1?o:ke,w=c*t*o+g*o,d=t-U,ie=0;ie<le;ie++){if(le>1&&(j=new r(e.pixels.resultPixels.buffer,t*i*ie*u,t*i)),M=n.byteLength-e.ptr,L=new DataView(n,e.ptr,Math.min(10,M)),B={},p=0,S=L.getUint8(0),p++,I=S>>6&255,k=S>>2&15,k!==(g*o>>3&15))throw"integrity issue";if(N=S&3,N>3)throw e.ptr+=p,"Invalid block encoding ("+N+")";if(N===2){e.counter.constant++,e.ptr+=p;continue}else if(N===0){if(e.counter.uncompressed++,e.ptr+=p,x=v*U*u,T=n.byteLength-e.ptr,x=x<T?x:T,E=new ArrayBuffer(x%u===0?x:x+u-x%u),O=new Uint8Array(E),O.set(new Uint8Array(n,e.ptr,x)),F=new r(E),y=0,Z)for(f=0;f<v;f++){for(h=0;h<U;h++)Z[w]&&(j[w]=F[y++]),w++;w+=d}else for(f=0;f<v;f++){for(h=0;h<U;h++)j[w++]=F[y++];w+=d}e.ptr+=y*u}else if(Q=V.getDataTypeUsed(s,I),z=V.getOnePixel(B,p,Q,L),p+=V.getDataTypeSize(Q),N===3)if(e.ptr+=p,e.counter.constantoffset++,Z)for(f=0;f<v;f++){for(h=0;h<U;h++)Z[w]&&(j[w]=z),w++;w+=d}else for(f=0;f<v;f++){for(h=0;h<U;h++)j[w++]=z;w+=d}else if(e.ptr+=p,V.decodeBits(n,e,_,z,ie),p=0,Z)for(f=0;f<v;f++){for(h=0;h<U;h++)Z[w]&&(j[w]=_[p++]),w++;w+=d}else for(f=0;f<v;f++){for(h=0;h<U;h++)j[w++]=_[p++];w+=d}}},formatFileInfo:function(n){return{fileIdentifierString:n.headerInfo.fileIdentifierString,fileVersion:n.headerInfo.fileVersion,imageType:n.headerInfo.imageType,height:n.headerInfo.height,width:n.headerInfo.width,numValidPixel:n.headerInfo.numValidPixel,microBlockSize:n.headerInfo.microBlockSize,blobSize:n.headerInfo.blobSize,maxZError:n.headerInfo.maxZError,pixelType:V.getPixelType(n.headerInfo.imageType),eofOffset:n.eofOffset,mask:n.mask?{numBytes:n.mask.numBytes}:null,pixels:{numBlocksX:n.pixels.numBlocksX,numBlocksY:n.pixels.numBlocksY,maxValue:n.headerInfo.zMax,minValue:n.headerInfo.zMin,noDataValue:n.noDataValue}}},constructConstantSurface:function(n){var e=n.headerInfo.zMax,r=n.headerInfo.numDims,a=n.headerInfo.height*n.headerInfo.width,t=a*r,i=0,o=0,s=0,u=n.pixels.resultMask;if(u)if(r>1)for(i=0;i<r;i++)for(s=i*a,o=0;o<a;o++)u[o]&&(n.pixels.resultPixels[s+o]=e);else for(o=0;o<a;o++)u[o]&&(n.pixels.resultPixels[o]=e);else if(n.pixels.resultPixels.fill)n.pixels.resultPixels.fill(e);else for(o=0;o<t;o++)n.pixels.resultPixels[o]=e},getDataTypeArray:function(n){var e;switch(n){case 0:e=Int8Array;break;case 1:e=Uint8Array;break;case 2:e=Int16Array;break;case 3:e=Uint16Array;break;case 4:e=Int32Array;break;case 5:e=Uint32Array;break;case 6:e=Float32Array;break;case 7:e=Float64Array;break;default:e=Float32Array}return e},getPixelType:function(n){var e;switch(n){case 0:e="S8";break;case 1:e="U8";break;case 2:e="S16";break;case 3:e="U16";break;case 4:e="S32";break;case 5:e="U32";break;case 6:e="F32";break;case 7:e="F64";break;default:e="F32"}return e},isValidPixelValue:function(n,e){if(e==null)return!1;var r;switch(n){case 0:r=e>=-128&&e<=127;break;case 1:r=e>=0&&e<=255;break;case 2:r=e>=-32768&&e<=32767;break;case 3:r=e>=0&&e<=65536;break;case 4:r=e>=-2147483648&&e<=2147483647;break;case 5:r=e>=0&&e<=4294967296;break;case 6:r=e>=-34027999387901484e22&&e<=34027999387901484e22;break;case 7:r=e>=5e-324&&e<=17976931348623157e292;break;default:r=!1}return r},getDataTypeSize:function(n){var e=0;switch(n){case 0:case 1:e=1;break;case 2:case 3:e=2;break;case 4:case 5:case 6:e=4;break;case 7:e=8;break;default:e=n}return e},getDataTypeUsed:function(n,e){var r=n;switch(n){case 2:case 4:r=n-e;break;case 3:case 5:r=n-2*e;break;case 6:e===0?r=n:e===1?r=2:r=1;break;case 7:e===0?r=n:r=n-2*e+1;break;default:r=n;break}return r},getOnePixel:function(n,e,r,a){var t=0;switch(r){case 0:t=a.getInt8(e);break;case 1:t=a.getUint8(e);break;case 2:t=a.getInt16(e,!0);break;case 3:t=a.getUint16(e,!0);break;case 4:t=a.getInt32(e,!0);break;case 5:t=a.getUInt32(e,!0);break;case 6:t=a.getFloat32(e,!0);break;case 7:t=a.getFloat64(e,!0);break;default:throw"the decoder does not understand this pixel type"}return t}},b=function(n,e,r){this.val=n,this.left=e,this.right=r},Y={decode:function(n,e){e=e||{};var r=e.noDataValue,a=0,t={};if(t.ptr=e.inputOffset||0,t.pixels={},!!V.readHeaderInfo(n,t)){var i=t.headerInfo,o=i.fileVersion,s=V.getDataTypeArray(i.imageType);V.readMask(n,t),i.numValidPixel!==i.width*i.height&&!t.pixels.resultMask&&(t.pixels.resultMask=e.maskData);var u=i.width*i.height;if(t.pixels.resultPixels=new s(u*i.numDims),t.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0},i.numValidPixel!==0)if(i.zMax===i.zMin)V.constructConstantSurface(t);else if(o>=4&&V.checkMinMaxRanges(n,t))V.constructConstantSurface(t);else{var m=new DataView(n,t.ptr,2),l=m.getUint8(0);if(t.ptr++,l)V.readDataOneSweep(n,t,s);else if(o>1&&i.imageType<=1&&Math.abs(i.maxZError-.5)<1e-5){var f=m.getUint8(1);if(t.ptr++,t.encodeMode=f,f>2||o<4&&f>1)throw"Invalid Huffman flag "+f;f?V.readHuffman(n,t,s):V.readTiles(n,t,s)}else V.readTiles(n,t,s)}t.eofOffset=t.ptr;var h;e.inputOffset?(h=t.headerInfo.blobSize+e.inputOffset-t.ptr,Math.abs(h)>=1&&(t.eofOffset=e.inputOffset+t.headerInfo.blobSize)):(h=t.headerInfo.blobSize-t.ptr,Math.abs(h)>=1&&(t.eofOffset=t.headerInfo.blobSize));var c={width:i.width,height:i.height,pixelData:t.pixels.resultPixels,minValue:i.zMin,maxValue:i.zMax,validPixelCount:i.numValidPixel,dimCount:i.numDims,dimStats:{minValues:i.minValues,maxValues:i.maxValues},maskData:t.pixels.resultMask};if(t.pixels.resultMask&&V.isValidPixelValue(i.imageType,r)){var g=t.pixels.resultMask;for(a=0;a<u;a++)g[a]||(c.pixelData[a]=r);c.noDataValue=r}return t.noDataValue=r,e.returnFileInfo&&(c.fileInfo=V.formatFileInfo(t)),c}},getBandCount:function(n){var e=0,r=0,a={};for(a.ptr=0,a.pixels={};r<n.byteLength-58;)V.readHeaderInfo(n,a),r+=a.headerInfo.blobSize,e++,a.ptr=r;return e}};return Y}(),C=function(){var A=new ArrayBuffer(4),V=new Uint8Array(A),b=new Uint32Array(A);return b[0]=1,V[0]===1}(),ee={decode:function(A,V){if(!C)throw"Big endian system is not supported.";V=V||{};var b=V.inputOffset||0,Y=new Uint8Array(A,b,10),n=String.fromCharCode.apply(null,Y),e,r;if(n.trim()==="CntZImage")e=D,r=1;else if(n.substring(0,5)==="Lerc2")e=ae,r=2;else throw"Unexpected file identifier string: "+n;for(var a=0,t=A.byteLength-10,i,o=[],s,u,m={width:0,height:0,pixels:[],pixelType:V.pixelType,mask:null,statistics:[]};b<t;){var l=e.decode(A,{inputOffset:b,encodedMaskData:i,maskData:u,returnMask:a===0,returnEncodedMask:a===0,returnFileInfo:!0,pixelType:V.pixelType||null,noDataValue:V.noDataValue||null});b=l.fileInfo.eofOffset,a===0&&(i=l.encodedMaskData,u=l.maskData,m.width=l.width,m.height=l.height,m.dimCount=l.dimCount||1,m.pixelType=l.pixelType||l.fileInfo.pixelType,m.mask=l.maskData),r>1&&l.fileInfo.mask&&l.fileInfo.mask.numBytes>0&&o.push(l.maskData),a++,m.pixels.push(l.pixelData),m.statistics.push({minValue:l.minValue,maxValue:l.maxValue,noDataValue:l.noDataValue,dimStats:l.dimStats})}var f,h,c;if(r>1&&o.length>1){for(c=m.width*m.height,m.bandMasks=o,u=new Uint8Array(c),u.set(o[0]),f=1;f<o.length;f++)for(s=o[f],h=0;h<c;h++)u[h]=u[h]&s[h];m.maskData=u}return m}};typeof define=="function"&&define.amd?define([],function(){return ee}):typeof Ue<"u"&&Ue.exports?Ue.exports=ee:this.Lerc=ee})()});var xr={NONE:0,LERC:1},fr=Object.freeze(xr);var G={};G.DEFAULT_STRUCTURE=Object.freeze({heightScale:1,heightOffset:0,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1});var He=new re,Ur=new Ie,Tr=new re,kr=new re;G.computeVertices=function(D){if(!W(D)||!W(D.heightmap))throw new me("options.heightmap is required.");if(!W(D.width)||!W(D.height))throw new me("options.width and options.height are required.");if(!W(D.nativeRectangle))throw new me("options.nativeRectangle is required.");if(!W(D.skirtHeight))throw new me("options.skirtHeight is required.");let ae=Math.cos,C=Math.sin,ee=Math.sqrt,A=Math.atan,V=Math.exp,b=he.PI_OVER_TWO,Y=he.toRadians,n=D.heightmap,e=D.width,r=D.height,a=D.skirtHeight,t=a>0,i=D.isGeographic??!0,o=D.ellipsoid??pe.default,s=1/o.maximumRadius,u=ne.clone(D.nativeRectangle),m=ne.clone(D.rectangle),l,f,h,c;W(m)?(l=m.west,f=m.south,h=m.east,c=m.north):i?(l=Y(u.west),f=Y(u.south),h=Y(u.east),c=Y(u.north)):(l=u.west*s,f=b-2*A(V(-u.south*s)),h=u.east*s,c=b-2*A(V(-u.north*s)));let g=D.relativeToCenter,v=W(g);g=v?g:re.ZERO;let U=D.includeWebMercatorT??!1,M=D.exaggeration??1,S=D.exaggerationRelativeHeight??0,k=M!==1,w=D.structure??G.DEFAULT_STRUCTURE,d=w.heightScale??G.DEFAULT_STRUCTURE.heightScale,x=w.heightOffset??G.DEFAULT_STRUCTURE.heightOffset,T=w.elementsPerHeight??G.DEFAULT_STRUCTURE.elementsPerHeight,y=w.stride??G.DEFAULT_STRUCTURE.stride,p=w.elementMultiplier??G.DEFAULT_STRUCTURE.elementMultiplier,L=w.isBigEndian??G.DEFAULT_STRUCTURE.isBigEndian,B=ne.computeWidth(u),E=ne.computeHeight(u),O=B/(e-1),F=E/(r-1);i||(B*=s,E*=s);let N=o.radiiSquared,_=N.x,Te=N.y,ke=N.z,Q=65536,z=-65536,le=er.eastNorthUpToFixedFrame(g,o),ie=Ie.inverseTransformation(le,Ur),Z,j;U&&(Z=xe.geodeticLatitudeToMercatorAngle(f),j=1/(xe.geodeticLatitudeToMercatorAngle(c)-Z));let se=Tr;se.x=Number.POSITIVE_INFINITY,se.y=Number.POSITIVE_INFINITY,se.z=Number.POSITIVE_INFINITY;let fe=kr;fe.x=Number.NEGATIVE_INFINITY,fe.y=Number.NEGATIVE_INFINITY,fe.z=Number.NEGATIVE_INFINITY;let ye=Number.POSITIVE_INFINITY,ue=e*r,cr=a>0?e*2+r*2:0,te=ue+cr,ge=new Array(te),Ye=new Array(te),Xe=new Array(te),_e=U?new Array(te):[],ze=k?new Array(te):[],Me=0,Se=r,Ve=0,De=e;t&&(--Me,++Se,--Ve,++De);let ve=1e-5;for(let H=Me;H<Se;++H){let J=H;J<0&&(J=0),J>=r&&(J=r-1);let q=u.north-F*J;i?q=Y(q):q=b-2*A(V(-q*s));let Ee=(q-f)/(c-f);Ee=he.clamp(Ee,0,1);let de=H===Me,we=H===Se-1;a>0&&(de?q+=ve*E:we&&(q-=ve*E));let Ge=ae(q),Le=C(q),Qe=ke*Le,Je;U&&(Je=(xe.geodeticLatitudeToMercatorAngle(q)-Z)*j);for(let ce=Ve;ce<De;++ce){let K=ce;K<0&&(K=0),K>=e&&(K=e-1);let Be=J*(e*y)+K*y,R;if(T===1)R=n[Be];else{R=0;let X;if(L)for(X=0;X<T;++X)R=R*p+n[Be+X];else for(X=T-1;X>=0;--X)R=R*p+n[Be+X]}R=R*d+x,z=Math.max(z,R),Q=Math.min(Q,R);let $=u.west+O*K;i?$=Y($):$=$*s;let Fe=($-l)/(h-l);Fe=he.clamp(Fe,0,1);let P=J*e+K;if(a>0){let X=ce===Ve,Oe=ce===De-1,wr=de||we||X||Oe;if((de||we)&&(X||Oe))continue;wr&&(R-=a,X?(P=ue+(r-J-1),$-=ve*B):we?P=ue+r+(e-K-1):Oe?(P=ue+r+e+J,$+=ve*B):de&&(P=ue+r+e+r+K))}let be=Ge*ae($),Ne=Ge*C($),Ke=_*be,$e=Te*Ne,Ce=1/ee(Ke*be+$e*Ne+Qe*Le),gr=Ke*Ce,vr=$e*Ce,dr=Qe*Ce,oe=new re;oe.x=gr+be*R,oe.y=vr+Ne*R,oe.z=dr+Le*R,Ie.multiplyByPoint(ie,oe,He),re.minimumByComponent(He,se,se),re.maximumByComponent(He,fe,fe),ye=Math.min(ye,R),ge[P]=oe,Xe[P]=new Pe(Fe,Ee),Ye[P]=R,U&&(_e[P]=Je),k&&(ze[P]=o.geodeticSurfaceNormal(oe))}}let mr=rr.fromPoints(ge),Ze;W(m)&&(Ze=nr.fromRectangle(m,Q,z,o));let je;v&&(je=new ar(o).computeHorizonCullingPointPossiblyUnderEllipsoid(g,ge,Q));let hr=new tr(se,fe,g),Ae=new sr(g,hr,ye,z,le,!1,U,k,M,S),qe=new Float32Array(te*Ae.stride),We=0;for(let H=0;H<te;++H)We=Ae.encode(qe,We,ge[H],Xe[H],Ye[H],void 0,_e[H],ze[H]);return{vertices:qe,maximumHeight:z,minimumHeight:Q,encoding:Ae,boundingSphere3D:mr,orientedBoundingBox:Ze,occludeePointInScaledSpace:je}};var or=G;var ur=Ir(lr(),1);function yr(D,ae){if(D.encoding===fr.LERC){let A;try{A=ur.default.decode(D.heightmap)}catch(b){throw new Re(b)}if(A.statistics[0].minValue===Number.MAX_VALUE)throw new Re("Invalid tile data");D.heightmap=A.pixels[0],D.width=A.width,D.height=A.height}D.ellipsoid=pe.clone(D.ellipsoid),D.rectangle=ne.clone(D.rectangle);let C=or.computeVertices(D),ee=C.vertices;return ae.push(ee.buffer),{vertices:ee.buffer,numberOfAttributes:C.encoding.stride,minimumHeight:C.minimumHeight,maximumHeight:C.maximumHeight,gridWidth:D.width,gridHeight:D.height,boundingSphere3D:C.boundingSphere3D,orientedBoundingBox:C.orientedBoundingBox,occludeePointInScaledSpace:C.occludeePointInScaledSpace,encoding:C.encoding,westIndicesSouthToNorth:C.westIndicesSouthToNorth,southIndicesEastToWest:C.southIndicesEastToWest,eastIndicesNorthToSouth:C.eastIndicesNorthToSouth,northIndicesWestToEast:C.northIndicesWestToEast}}var Kr=ir(yr);export{Kr as default}; diff --git a/public/Cesium/Workers/createVerticesFromQuantizedTerrainMesh.js b/public/Cesium/Workers/createVerticesFromQuantizedTerrainMesh.js new file mode 100644 index 000000000..a3ce7f174 --- /dev/null +++ b/public/Cesium/Workers/createVerticesFromQuantizedTerrainMesh.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as Ct,b as vt}from"./chunk-7HTKERZY.js";import{a as Mt}from"./chunk-WZDE3RYP.js";import{a as z}from"./chunk-DQQ63PYM.js";import"./chunk-DEPHB2WM.js";import{a as Wt}from"./chunk-N4VJKXZS.js";import{a as X}from"./chunk-OFUUQVMR.js";import"./chunk-4IW2T6GF.js";import{b as U,g as bt,h as At}from"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as P,b as wt,c as lt,d as pt}from"./chunk-64RSHJUE.js";import{a as f}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as m}from"./chunk-LEYMRMBK.js";import{e as w}from"./chunk-VTAIKJXX.js";function T(){m.throwInstantiationError()}Object.defineProperties(T.prototype,{errorEvent:{get:m.throwInstantiationError},credit:{get:m.throwInstantiationError},tilingScheme:{get:m.throwInstantiationError},hasWaterMask:{get:m.throwInstantiationError},hasVertexNormals:{get:m.throwInstantiationError},availability:{get:m.throwInstantiationError}});var Ot=[];T.getRegularGridIndices=function(t,n){if(t*n>=f.FOUR_GIGABYTES)throw new m("The total number of vertices (width * height) must be less than 4,294,967,296.");let o=Ot[t];w(o)||(Ot[t]=o=[]);let e=o[n];return w(e)||(t*n<f.SIXTY_FOUR_KILOBYTES?e=o[n]=new Uint16Array((t-1)*(n-1)*6):e=o[n]=new Uint32Array((t-1)*(n-1)*6),Pt(t,n,e,0)),e};var Gt=[];T.getRegularGridIndicesAndEdgeIndices=function(t,n){if(t*n>=f.FOUR_GIGABYTES)throw new m("The total number of vertices (width * height) must be less than 4,294,967,296.");let o=Gt[t];w(o)||(Gt[t]=o=[]);let e=o[n];if(!w(e)){let r=T.getRegularGridIndices(t,n),s=Lt(t,n),i=s.westIndicesSouthToNorth,c=s.southIndicesEastToWest,h=s.eastIndicesNorthToSouth,E=s.northIndicesWestToEast;e=o[n]={indices:r,westIndicesSouthToNorth:i,southIndicesEastToWest:c,eastIndicesNorthToSouth:h,northIndicesWestToEast:E}}return e};var kt=[];T.getRegularGridAndSkirtIndicesAndEdgeIndices=function(t,n){if(t*n>=f.FOUR_GIGABYTES)throw new m("The total number of vertices (width * height) must be less than 4,294,967,296.");let o=kt[t];w(o)||(kt[t]=o=[]);let e=o[n];if(!w(e)){let r=t*n,s=(t-1)*(n-1)*6,i=t*2+n*2,c=Math.max(0,i-4)*6,h=r+i,E=s+c,g=Lt(t,n),d=g.westIndicesSouthToNorth,p=g.southIndicesEastToWest,b=g.eastIndicesNorthToSouth,L=g.northIndicesWestToEast,N=X.createTypedArray(h,E);Pt(t,n,N,0),T.addSkirtIndices(d,p,b,L,r,N,s),e=o[n]={indices:N,westIndicesSouthToNorth:d,southIndicesEastToWest:p,eastIndicesNorthToSouth:b,northIndicesWestToEast:L,indexCountWithoutSkirts:s}}return e};T.addSkirtIndices=function(t,n,o,e,r,s,i){let c=r;i=Z(t,c,s,i),c+=t.length,i=Z(n,c,s,i),c+=n.length,i=Z(o,c,s,i),c+=o.length,Z(e,c,s,i)};function Lt(t,n){let o=new Array(n),e=new Array(t),r=new Array(n),s=new Array(t),i;for(i=0;i<t;++i)s[i]=i,e[i]=t*n-1-i;for(i=0;i<n;++i)r[i]=(i+1)*t-1,o[i]=(n-i-1)*t;return{westIndicesSouthToNorth:o,southIndicesEastToWest:e,eastIndicesNorthToSouth:r,northIndicesWestToEast:s}}function Pt(t,n,o,e){let r=0;for(let s=0;s<n-1;++s){for(let i=0;i<t-1;++i){let c=r,h=c+t,E=h+1,g=c+1;o[e++]=c,o[e++]=h,o[e++]=g,o[e++]=g,o[e++]=h,o[e++]=E,++r}++r}}function Z(t,n,o,e){let r=t[0],s=t.length;for(let i=1;i<s;++i){let c=t[i];o[e++]=r,o[e++]=c,o[e++]=n,o[e++]=n,o[e++]=c,o[e++]=n+1,r=c,++n}return e}T.heightmapTerrainQuality=.25;T.getEstimatedLevelZeroGeometricErrorForAHeightmap=function(t,n,o){return t.maximumRadius*2*Math.PI*T.heightmapTerrainQuality/(n*o)};T.prototype.requestTileGeometry=m.throwInstantiationError;T.prototype.getLevelMaximumGeometricError=m.throwInstantiationError;T.prototype.getTileDataAvailable=m.throwInstantiationError;T.prototype.loadTileDataAvailability=m.throwInstantiationError;var Vt=T;var ht=32767,D=new P,Xt=new P,Zt=new P,u=new wt,Y=new lt;function Jt(t,n){let o=t.quantizedVertices,e=o.length/3,r=t.octEncodedNormals,s=t.westIndices.length+t.eastIndices.length+t.southIndices.length+t.northIndices.length,i=t.includeWebMercatorT,c=t.exaggeration,h=t.exaggerationRelativeHeight,g=c!==1,d=At.clone(t.rectangle),p=d.west,b=d.south,L=d.east,N=d.north,I=pt.clone(t.ellipsoid),y=t.minimumHeight,v=t.maximumHeight,S=t.relativeToCenter,_=bt.eastNorthUpToFixedFrame(S,I),O=U.inverseTransformation(_,new U),G,A;i&&(G=z.geodeticLatitudeToMercatorAngle(b),A=1/(z.geodeticLatitudeToMercatorAngle(N)-G));let j=o.subarray(0,e),q=o.subarray(e,2*e),Q=o.subarray(e*2,3*e),R=w(r),l=new Array(e),M=new Array(e),et=new Array(e),It=i?new Array(e):[],gt=g?new Array(e):[],W=Xt;W.x=Number.POSITIVE_INFINITY,W.y=Number.POSITIVE_INFINITY,W.z=Number.POSITIVE_INFINITY;let C=Zt;C.x=Number.NEGATIVE_INFINITY,C.y=Number.NEGATIVE_INFINITY,C.z=Number.NEGATIVE_INFINITY;let ot=Number.POSITIVE_INFINITY,nt=Number.NEGATIVE_INFINITY,it=Number.POSITIVE_INFINITY,rt=Number.NEGATIVE_INFINITY;for(let a=0;a<e;++a){let x=j[a],Kt=q[a],St=x/ht,xt=Kt/ht,yt=f.lerp(y,v,Q[a]/ht);u.longitude=f.lerp(p,L,St),u.latitude=f.lerp(b,N,xt),u.height=yt,ot=Math.min(u.longitude,ot),nt=Math.max(u.longitude,nt),it=Math.min(u.latitude,it),rt=Math.max(u.latitude,rt);let dt=I.cartographicToCartesian(u);l[a]=new lt(St,xt),M[a]=yt,et[a]=dt,i&&(It[a]=(z.geodeticLatitudeToMercatorAngle(u.latitude)-G)*A),g&&(gt[a]=I.geodeticSurfaceNormal(dt)),U.multiplyByPoint(O,dt,D),P.minimumByComponent(D,W,W),P.maximumByComponent(D,C,C)}let st=tt(t.westIndices,function(a,x){return l[a].y-l[x].y}),ct=tt(t.eastIndices,function(a,x){return l[x].y-l[a].y}),at=tt(t.southIndices,function(a,x){return l[x].x-l[a].x}),ut=tt(t.northIndices,function(a,x){return l[a].x-l[x].x}),mt;y<0&&(mt=new Ct(I).computeHorizonCullingPointPossiblyUnderEllipsoid(S,et,y));let k=y;k=Math.min(k,J(t.westIndices,t.westSkirtHeight,M,l,d,I,O,W,C)),k=Math.min(k,J(t.southIndices,t.southSkirtHeight,M,l,d,I,O,W,C)),k=Math.min(k,J(t.eastIndices,t.eastSkirtHeight,M,l,d,I,O,W,C)),k=Math.min(k,J(t.northIndices,t.northSkirtHeight,M,l,d,I,O,W,C));let Ft=new Wt(W,C,S),V=new vt(S,Ft,k,v,_,R,i,g,c,h),F=V.stride,Bt=e*F+s*F,B=new Float32Array(Bt),ft=0;for(let a=0;a<e;++a){if(R){let x=a*2;Y.x=r[x],Y.y=r[x+1]}ft=V.encode(B,ft,et[a],l[a],M[a],Y,It[a],gt[a])}let Ht=Math.max(0,(s-4)*2),_t=t.indices.length+Ht*3,K=X.createTypedArray(e+s,_t);K.set(t.indices,0);let Tt=1e-4,Et=(nt-ot)*Tt,Nt=(rt-it)*Tt,Yt=-Et,Rt=0,Ut=Et,zt=0,Dt=0,jt=Nt,qt=0,Qt=-Nt,H=e*F;return $(B,H,st,V,M,l,r,I,d,t.westSkirtHeight,G,A,Yt,Rt),H+=t.westIndices.length*F,$(B,H,at,V,M,l,r,I,d,t.southSkirtHeight,G,A,qt,Qt),H+=t.southIndices.length*F,$(B,H,ct,V,M,l,r,I,d,t.eastSkirtHeight,G,A,Ut,zt),H+=t.eastIndices.length*F,$(B,H,ut,V,M,l,r,I,d,t.northSkirtHeight,G,A,Dt,jt),Vt.addSkirtIndices(st,at,ct,ut,e,K,t.indices.length),n.push(B.buffer,K.buffer),{vertices:B.buffer,indices:K.buffer,westIndicesSouthToNorth:st,southIndicesEastToWest:at,eastIndicesNorthToSouth:ct,northIndicesWestToEast:ut,vertexStride:F,center:S,minimumHeight:y,maximumHeight:v,occludeePointInScaledSpace:mt,encoding:V,indexCountWithoutSkirts:t.indices.length}}function J(t,n,o,e,r,s,i,c,h){let E=Number.POSITIVE_INFINITY,g=r.north,d=r.south,p=r.east,b=r.west;p<b&&(p+=f.TWO_PI);let L=t.length;for(let N=0;N<L;++N){let I=t[N],y=o[I],v=e[I];u.longitude=f.lerp(b,p,v.x),u.latitude=f.lerp(d,g,v.y),u.height=y-n;let S=s.cartographicToCartesian(u,D);U.multiplyByPoint(i,S,S),P.minimumByComponent(S,c,c),P.maximumByComponent(S,h,h),E=Math.min(E,u.height)}return E}function $(t,n,o,e,r,s,i,c,h,E,g,d,p,b){let L=w(i),N=h.north,I=h.south,y=h.east,v=h.west;y<v&&(y+=f.TWO_PI);let S=o.length;for(let _=0;_<S;++_){let O=o[_],G=r[O],A=s[O];u.longitude=f.lerp(v,y,A.x)+p,u.latitude=f.lerp(I,N,A.y)+b,u.height=G-E;let j=c.cartographicToCartesian(u,D);if(L){let R=O*2;Y.x=i[R],Y.y=i[R+1]}let q;e.hasWebMercatorT&&(q=(z.geodeticLatitudeToMercatorAngle(u.latitude)-g)*d);let Q;e.hasGeodeticSurfaceNormals&&(Q=c.geodeticSurfaceNormal(j)),n=e.encode(t,n,j,A,u.height,Y,q,Q)}}function tt(t,n){let o;return typeof t.slice=="function"&&(o=t.slice(),typeof o.sort!="function"&&(o=void 0)),w(o)||(o=Array.prototype.slice.call(t)),o.sort(n),o}var Se=Mt(Jt);export{Se as default}; diff --git a/public/Cesium/Workers/createWallGeometry.js b/public/Cesium/Workers/createWallGeometry.js new file mode 100644 index 000000000..2673d2537 --- /dev/null +++ b/public/Cesium/Workers/createWallGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as nt}from"./chunk-NB3ML6JO.js";import"./chunk-XRL4AVS5.js";import"./chunk-U4IEOH5K.js";import{a as w}from"./chunk-CYCB63OH.js";import"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as ot}from"./chunk-OFUUQVMR.js";import{a as it}from"./chunk-A56XVLQR.js";import{b as tt,c as et,d as R}from"./chunk-RCV6KWXS.js";import{d as I}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as N}from"./chunk-AU7IKHOH.js";import{a as s,d as l,f as K}from"./chunk-64RSHJUE.js";import{a as V}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as y}from"./chunk-LEYMRMBK.js";import{e as r}from"./chunk-VTAIKJXX.js";var Q=new s,J=new s,lt=new s,st=new s,pt=new s,ut=new s,ft=new s;function E(t){t=t??K.EMPTY_OBJECT;let e=t.positions,o=t.maximumHeights,n=t.minimumHeights;if(!r(e))throw new y("options.positions is required.");if(r(o)&&o.length!==e.length)throw new y("options.positions and options.maximumHeights must have the same length.");if(r(n)&&n.length!==e.length)throw new y("options.positions and options.minimumHeights must have the same length.");let i=t.vertexFormat??w.DEFAULT,c=t.granularity??V.RADIANS_PER_DEGREE,a=t.ellipsoid??l.default;this._positions=e,this._minimumHeights=n,this._maximumHeights=o,this._vertexFormat=w.clone(i),this._granularity=c,this._ellipsoid=l.clone(a),this._workerName="createWallGeometry";let m=1+e.length*s.packedLength+2;r(n)&&(m+=n.length),r(o)&&(m+=o.length),this.packedLength=m+l.packedLength+w.packedLength+1}E.pack=function(t,e,o){if(!r(t))throw new y("value is required");if(!r(e))throw new y("array is required");o=o??0;let n,i=t._positions,c=i.length;for(e[o++]=c,n=0;n<c;++n,o+=s.packedLength)s.pack(i[n],e,o);let a=t._minimumHeights;if(c=r(a)?a.length:0,e[o++]=c,r(a))for(n=0;n<c;++n)e[o++]=a[n];let m=t._maximumHeights;if(c=r(m)?m.length:0,e[o++]=c,r(m))for(n=0;n<c;++n)e[o++]=m[n];return l.pack(t._ellipsoid,e,o),o+=l.packedLength,w.pack(t._vertexFormat,e,o),o+=w.packedLength,e[o]=t._granularity,e};var mt=l.clone(l.UNIT_SPHERE),rt=new w,U={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:mt,vertexFormat:rt,granularity:void 0};E.unpack=function(t,e,o){if(!r(t))throw new y("array is required");e=e??0;let n,i=t[e++],c=new Array(i);for(n=0;n<i;++n,e+=s.packedLength)c[n]=s.unpack(t,e);i=t[e++];let a;if(i>0)for(a=new Array(i),n=0;n<i;++n)a[n]=t[e++];i=t[e++];let m;if(i>0)for(m=new Array(i),n=0;n<i;++n)m[n]=t[e++];let S=l.unpack(t,e,mt);e+=l.packedLength;let _=w.unpack(t,e,rt);e+=w.packedLength;let f=t[e];return r(o)?(o._positions=c,o._minimumHeights=a,o._maximumHeights=m,o._ellipsoid=l.clone(S,o._ellipsoid),o._vertexFormat=w.clone(_,o._vertexFormat),o._granularity=f,o):(U.positions=c,U.minimumHeights=a,U.maximumHeights=m,U.granularity=f,new E(U))};E.fromConstantHeights=function(t){t=t??K.EMPTY_OBJECT;let e=t.positions;if(!r(e))throw new y("options.positions is required.");let o,n,i=t.minimumHeight,c=t.maximumHeight,a=r(i),m=r(c);if(a||m){let _=e.length;o=a?new Array(_):void 0,n=m?new Array(_):void 0;for(let f=0;f<_;++f)a&&(o[f]=i),m&&(n[f]=c)}let S={positions:e,maximumHeights:n,minimumHeights:o,ellipsoid:t.ellipsoid,vertexFormat:t.vertexFormat};return new E(S)};E.createGeometry=function(t){let e=t._positions,o=t._minimumHeights,n=t._maximumHeights,i=t._vertexFormat,c=t._granularity,a=t._ellipsoid,m=nt.computePositions(a,e,n,o,c,!0);if(!r(m))return;let S=m.bottomPositions,_=m.topPositions,f=m.numCorners,q=_.length,A=q*2,h=i.position?new Float64Array(A):void 0,P=i.normal?new Float32Array(A):void 0,b=i.tangent?new Float32Array(A):void 0,x=i.bitangent?new Float32Array(A):void 0,B=i.st?new Float32Array(A/3*2):void 0,k=0,v=0,T=0,C=0,W=0,g=ft,d=ut,H=pt,Y=!0;q/=3;let p,Z=0,ct=1/(q-f-1);for(p=0;p<q;++p){let L=p*3,u=s.fromArray(_,L,Q),M=s.fromArray(S,L,J);if(i.position&&(h[k++]=M.x,h[k++]=M.y,h[k++]=M.z,h[k++]=u.x,h[k++]=u.y,h[k++]=u.z),i.st&&(B[W++]=Z,B[W++]=0,B[W++]=Z,B[W++]=1),i.normal||i.tangent||i.bitangent){let O=s.clone(s.ZERO,st),j=s.subtract(u,a.geodeticSurfaceNormal(u,J),J);if(p+1<q&&(O=s.fromArray(_,L+3,st)),Y){let G=s.subtract(O,u,lt),at=s.subtract(j,u,Q);g=s.normalize(s.cross(at,G,g),g),Y=!1}s.equalsEpsilon(u,O,V.EPSILON10)?Y=!0:(Z+=ct,i.tangent&&(d=s.normalize(s.subtract(O,u,d),d)),i.bitangent&&(H=s.normalize(s.cross(g,d,H),H))),i.normal&&(P[v++]=g.x,P[v++]=g.y,P[v++]=g.z,P[v++]=g.x,P[v++]=g.y,P[v++]=g.z),i.tangent&&(b[C++]=d.x,b[C++]=d.y,b[C++]=d.z,b[C++]=d.x,b[C++]=d.y,b[C++]=d.z),i.bitangent&&(x[T++]=H.x,x[T++]=H.y,x[T++]=H.z,x[T++]=H.x,x[T++]=H.y,x[T++]=H.z)}}let z=new it;i.position&&(z.position=new R({componentDatatype:N.DOUBLE,componentsPerAttribute:3,values:h})),i.normal&&(z.normal=new R({componentDatatype:N.FLOAT,componentsPerAttribute:3,values:P})),i.tangent&&(z.tangent=new R({componentDatatype:N.FLOAT,componentsPerAttribute:3,values:b})),i.bitangent&&(z.bitangent=new R({componentDatatype:N.FLOAT,componentsPerAttribute:3,values:x})),i.st&&(z.st=new R({componentDatatype:N.FLOAT,componentsPerAttribute:2,values:B}));let $=A/3;A-=6*(f+1);let F=ot.createTypedArray($,A),D=0;for(p=0;p<$-2;p+=2){let L=p,u=p+2,M=s.fromArray(h,L*3,Q),O=s.fromArray(h,u*3,J);if(s.equalsEpsilon(M,O,V.EPSILON10))continue;let j=p+1,G=p+3;F[D++]=j,F[D++]=L,F[D++]=G,F[D++]=G,F[D++]=L,F[D++]=u}return new et({attributes:z,indices:F,primitiveType:tt.TRIANGLES,boundingSphere:new I.fromVertices(h)})};var X=E;function ht(t,e){return r(e)&&(t=X.unpack(t,e)),t._ellipsoid=l.clone(t._ellipsoid),X.createGeometry(t)}var Ot=ht;export{Ot as default}; diff --git a/public/Cesium/Workers/createWallOutlineGeometry.js b/public/Cesium/Workers/createWallOutlineGeometry.js new file mode 100644 index 000000000..09872e1f8 --- /dev/null +++ b/public/Cesium/Workers/createWallOutlineGeometry.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as z}from"./chunk-NB3ML6JO.js";import"./chunk-XRL4AVS5.js";import"./chunk-U4IEOH5K.js";import"./chunk-3W4GT7KQ.js";import"./chunk-G5AGHVVC.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as W}from"./chunk-OFUUQVMR.js";import{a as N}from"./chunk-A56XVLQR.js";import{b as R,c as S,d as M}from"./chunk-RCV6KWXS.js";import{d as D}from"./chunk-4IW2T6GF.js";import"./chunk-PSPPBZWI.js";import{a as q}from"./chunk-AU7IKHOH.js";import{a as p,d as l,f as O}from"./chunk-64RSHJUE.js";import{a as b}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as H}from"./chunk-LEYMRMBK.js";import{e as m}from"./chunk-VTAIKJXX.js";var B=new p,U=new p;function _(i){i=i??O.EMPTY_OBJECT;let t=i.positions,e=i.maximumHeights,o=i.minimumHeights;if(!m(t))throw new H("options.positions is required.");if(m(e)&&e.length!==t.length)throw new H("options.positions and options.maximumHeights must have the same length.");if(m(o)&&o.length!==t.length)throw new H("options.positions and options.minimumHeights must have the same length.");let s=i.granularity??b.RADIANS_PER_DEGREE,r=i.ellipsoid??l.default;this._positions=t,this._minimumHeights=o,this._maximumHeights=e,this._granularity=s,this._ellipsoid=l.clone(r),this._workerName="createWallOutlineGeometry";let n=1+t.length*p.packedLength+2;m(o)&&(n+=o.length),m(e)&&(n+=e.length),this.packedLength=n+l.packedLength+1}_.pack=function(i,t,e){if(!m(i))throw new H("value is required");if(!m(t))throw new H("array is required");e=e??0;let o,s=i._positions,r=s.length;for(t[e++]=r,o=0;o<r;++o,e+=p.packedLength)p.pack(s[o],t,e);let n=i._minimumHeights;if(r=m(n)?n.length:0,t[e++]=r,m(n))for(o=0;o<r;++o)t[e++]=n[o];let c=i._maximumHeights;if(r=m(c)?c.length:0,t[e++]=r,m(c))for(o=0;o<r;++o)t[e++]=c[o];return l.pack(i._ellipsoid,t,e),e+=l.packedLength,t[e]=i._granularity,t};var G=l.clone(l.UNIT_SPHERE),L={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:G,granularity:void 0};_.unpack=function(i,t,e){if(!m(i))throw new H("array is required");t=t??0;let o,s=i[t++],r=new Array(s);for(o=0;o<s;++o,t+=p.packedLength)r[o]=p.unpack(i,t);s=i[t++];let n;if(s>0)for(n=new Array(s),o=0;o<s;++o)n[o]=i[t++];s=i[t++];let c;if(s>0)for(c=new Array(s),o=0;o<s;++o)c[o]=i[t++];let w=l.unpack(i,t,G);t+=l.packedLength;let u=i[t];return m(e)?(e._positions=r,e._minimumHeights=n,e._maximumHeights=c,e._ellipsoid=l.clone(w,e._ellipsoid),e._granularity=u,e):(L.positions=r,L.minimumHeights=n,L.maximumHeights=c,L.granularity=u,new _(L))};_.fromConstantHeights=function(i){i=i??O.EMPTY_OBJECT;let t=i.positions;if(!m(t))throw new H("options.positions is required.");let e,o,s=i.minimumHeight,r=i.maximumHeight,n=m(s),c=m(r);if(n||c){let u=t.length;e=n?new Array(u):void 0,o=c?new Array(u):void 0;for(let g=0;g<u;++g)n&&(e[g]=s),c&&(o[g]=r)}let w={positions:t,maximumHeights:o,minimumHeights:e,ellipsoid:i.ellipsoid};return new _(w)};_.createGeometry=function(i){let t=i._positions,e=i._minimumHeights,o=i._maximumHeights,s=i._granularity,r=i._ellipsoid,n=z.computePositions(r,t,o,e,s,!1);if(!m(n))return;let c=n.bottomPositions,w=n.topPositions,u=w.length,g=u*2,f=new Float64Array(g),E=0;u/=3;let h;for(h=0;h<u;++h){let y=h*3,A=p.fromArray(w,y,B),k=p.fromArray(c,y,U);f[E++]=k.x,f[E++]=k.y,f[E++]=k.z,f[E++]=A.x,f[E++]=A.y,f[E++]=A.z}let v=new N({position:new M({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:f})}),P=g/3;g=2*P-4+P;let a=W.createTypedArray(P,g),d=0;for(h=0;h<P-2;h+=2){let y=h,A=h+2,k=p.fromArray(f,y*3,B),x=p.fromArray(f,A*3,U);if(p.equalsEpsilon(k,x,b.EPSILON10))continue;let T=h+1,F=h+3;a[d++]=T,a[d++]=y,a[d++]=T,a[d++]=F,a[d++]=y,a[d++]=A}return a[d++]=P-2,a[d++]=P-1,new S({attributes:v,indices:a,primitiveType:R.LINES,boundingSphere:new D.fromVertices(f)})};var C=_;function J(i,t){return m(t)&&(i=C.unpack(i,t)),i._ellipsoid=l.clone(i._ellipsoid),C.createGeometry(i)}var pi=J;export{pi as default}; diff --git a/public/Cesium/Workers/decodeDraco.js b/public/Cesium/Workers/decodeDraco.js new file mode 100644 index 000000000..d8dd26808 --- /dev/null +++ b/public/Cesium/Workers/decodeDraco.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as D}from"./chunk-35SHYARM.js";import{a as I}from"./chunk-WZDE3RYP.js";import{a as m}from"./chunk-OFUUQVMR.js";import{a as w}from"./chunk-AU7IKHOH.js";import"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import{a as A}from"./chunk-ED5JPB3S.js";import"./chunk-LEYMRMBK.js";import{d as P,e as d}from"./chunk-VTAIKJXX.js";var b=P(D(),1),r;function F(t,n){let o=t.num_points(),a=t.num_faces(),i=new r.DracoInt32Array,e=a*3,s=m.createTypedArray(o,e),u=0;for(let f=0;f<a;++f)n.GetFaceFromMesh(t,f,i),s[u+0]=i.GetValue(0),s[u+1]=i.GetValue(1),s[u+2]=i.GetValue(2),u+=3;return r.destroy(i),{typedArray:s,numberOfIndices:e}}function U(t,n,o,a,i){let e,s;a.quantizationBits<=8?(s=new r.DracoUInt8Array,e=new Uint8Array(i),n.GetAttributeUInt8ForAllPoints(t,o,s)):a.quantizationBits<=16?(s=new r.DracoUInt16Array,e=new Uint16Array(i),n.GetAttributeUInt16ForAllPoints(t,o,s)):(s=new r.DracoFloat32Array,e=new Float32Array(i),n.GetAttributeFloatForAllPoints(t,o,s));for(let u=0;u<i;++u)e[u]=s.GetValue(u);return r.destroy(s),e}function k(t,n,o,a){let i,e;switch(o.data_type()){case 1:case 11:e=new r.DracoInt8Array,i=new Int8Array(a),n.GetAttributeInt8ForAllPoints(t,o,e);break;case 2:e=new r.DracoUInt8Array,i=new Uint8Array(a),n.GetAttributeUInt8ForAllPoints(t,o,e);break;case 3:e=new r.DracoInt16Array,i=new Int16Array(a),n.GetAttributeInt16ForAllPoints(t,o,e);break;case 4:e=new r.DracoUInt16Array,i=new Uint16Array(a),n.GetAttributeUInt16ForAllPoints(t,o,e);break;case 5:case 7:e=new r.DracoInt32Array,i=new Int32Array(a),n.GetAttributeInt32ForAllPoints(t,o,e);break;case 6:case 8:e=new r.DracoUInt32Array,i=new Uint32Array(a),n.GetAttributeUInt32ForAllPoints(t,o,e);break;case 9:case 10:e=new r.DracoFloat32Array,i=new Float32Array(a),n.GetAttributeFloatForAllPoints(t,o,e);break}for(let s=0;s<a;++s)i[s]=e.GetValue(s);return r.destroy(e),i}function p(t,n,o){let a=t.num_points(),i=o.num_components(),e,s=new r.AttributeQuantizationTransform;if(s.InitFromAttribute(o)){let c=new Array(i);for(let y=0;y<i;++y)c[y]=s.min_value(y);e={quantizationBits:s.quantization_bits(),minValues:c,range:s.range(),octEncoded:!1}}r.destroy(s),s=new r.AttributeOctahedronTransform,s.InitFromAttribute(o)&&(e={quantizationBits:s.quantization_bits(),octEncoded:!0}),r.destroy(s);let u=a*i,f;d(e)?f=U(t,n,o,e,u):f=k(t,n,o,u);let l=w.fromTypedArray(f);return{array:f,data:{componentsPerAttribute:i,componentDatatype:l,byteOffset:o.byte_offset(),byteStride:w.getSizeInBytes(l)*i,normalized:o.normalized(),quantization:e}}}function O(t){let n=new r.Decoder;t.dequantizeInShader&&(n.SkipAttributeTransform(r.POSITION),n.SkipAttributeTransform(r.NORMAL));let o=new r.DecoderBuffer;if(o.Init(t.buffer,t.buffer.length),n.GetEncodedGeometryType(o)!==r.POINT_CLOUD)throw new A("Draco geometry type must be POINT_CLOUD.");let i=new r.PointCloud,e=n.DecodeBufferToPointCloud(o,i);if(!e.ok()||i.ptr===0)throw new A(`Error decoding draco point cloud: ${e.error_msg()}`);r.destroy(o);let s={},u=t.properties;for(let f in u)if(u.hasOwnProperty(f)){let l;if(f==="POSITION"||f==="NORMAL"){let c=n.GetAttributeId(i,r[f]);l=n.GetAttribute(i,c)}else{let c=u[f];l=n.GetAttributeByUniqueId(i,c)}s[f]=p(i,n,l)}return r.destroy(i),r.destroy(n),s}function g(t){let n=new r.Decoder;if(t.dequantizeInShader)for(let c=0;c<t.attributesToSkipTransform.length;++c)n.SkipAttributeTransform(r[t.attributesToSkipTransform[c]]);let o=t.bufferView,a=new r.DecoderBuffer;if(a.Init(t.array,o.byteLength),n.GetEncodedGeometryType(a)!==r.TRIANGULAR_MESH)throw new A("Unsupported draco mesh geometry type.");let e=new r.Mesh,s=n.DecodeBufferToMesh(a,e);if(!s.ok()||e.ptr===0)throw new A(`Error decoding draco mesh geometry: ${s.error_msg()}`);r.destroy(a);let u={},f=t.compressedAttributes;for(let c in f)if(f.hasOwnProperty(c)){let y=f[c],T=n.GetAttributeByUniqueId(e,y);u[c]=p(e,n,T)}let l={indexArray:F(e,n),attributeData:u};return r.destroy(e),r.destroy(n),l}async function z(t,n){return d(t.bufferView)?g(t):O(t)}async function G(t,n){let o=t.webAssemblyConfig;return d(o)&&d(o.wasmBinaryFile)?r=await(0,b.default)(o):r=await(0,b.default)(),!0}async function S(t,n){let o=t.webAssemblyConfig;return d(o)?G(t,n):z(t,n)}var h=I(S);export{h as default}; diff --git a/public/Cesium/Workers/decodeGoogleEarthEnterprisePacket.js b/public/Cesium/Workers/decodeGoogleEarthEnterprisePacket.js new file mode 100644 index 000000000..dfdcee4f7 --- /dev/null +++ b/public/Cesium/Workers/decodeGoogleEarthEnterprisePacket.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as Se}from"./chunk-WZDE3RYP.js";import{a as D}from"./chunk-ED5JPB3S.js";import{b as ae}from"./chunk-LEYMRMBK.js";import{c as R,d as Ot,e as me}from"./chunk-VTAIKJXX.js";var Ie=R((Li,Ae)=>{"use strict";var zt=(t,i,e,r)=>{let s=t&65535|0,n=t>>>16&65535|0,c=0;for(;e!==0;){c=e>2e3?2e3:e,e-=c;do s=s+i[r++]|0,n=n+s|0;while(--c);s%=65521,n%=65521}return s|n<<16|0};Ae.exports=zt});var De=R((Pi,Re)=>{"use strict";var Ht=()=>{let t,i=[];for(var e=0;e<256;e++){t=e;for(var r=0;r<8;r++)t=t&1?3988292384^t>>>1:t>>>1;i[e]=t}return i},Ft=new Uint32Array(Ht()),Vt=(t,i,e,r)=>{let s=Ft,n=r+e;t^=-1;for(let c=r;c<n;c++)t=t>>>8^s[(t^i[c])&255];return t^-1};Re.exports=Vt});var Oe=R((zi,Ue)=>{"use strict";Ue.exports=function(i,e){let r,s,n,c,f,_,a,o,v,w,l,u,I,p,x,T,g,d,E,A,h,S,k,b,m=i.state;r=i.next_in,k=i.input,s=r+(i.avail_in-5),n=i.next_out,b=i.output,c=n-(e-i.avail_out),f=n+(i.avail_out-257),_=m.dmax,a=m.wsize,o=m.whave,v=m.wnext,w=m.window,l=m.hold,u=m.bits,I=m.lencode,p=m.distcode,x=(1<<m.lenbits)-1,T=(1<<m.distbits)-1;e:do{u<15&&(l+=k[r++]<<u,u+=8,l+=k[r++]<<u,u+=8),g=I[l&x];t:for(;;){if(d=g>>>24,l>>>=d,u-=d,d=g>>>16&255,d===0)b[n++]=g&65535;else if(d&16){E=g&65535,d&=15,d&&(u<d&&(l+=k[r++]<<u,u+=8),E+=l&(1<<d)-1,l>>>=d,u-=d),u<15&&(l+=k[r++]<<u,u+=8,l+=k[r++]<<u,u+=8),g=p[l&T];i:for(;;){if(d=g>>>24,l>>>=d,u-=d,d=g>>>16&255,d&16){if(A=g&65535,d&=15,u<d&&(l+=k[r++]<<u,u+=8,u<d&&(l+=k[r++]<<u,u+=8)),A+=l&(1<<d)-1,A>_){i.msg="invalid distance too far back",m.mode=16209;break e}if(l>>>=d,u-=d,d=n-c,A>d){if(d=A-d,d>o&&m.sane){i.msg="invalid distance too far back",m.mode=16209;break e}if(h=0,S=w,v===0){if(h+=a-d,d<E){E-=d;do b[n++]=w[h++];while(--d);h=n-A,S=b}}else if(v<d){if(h+=a+v-d,d-=v,d<E){E-=d;do b[n++]=w[h++];while(--d);if(h=0,v<E){d=v,E-=d;do b[n++]=w[h++];while(--d);h=n-A,S=b}}}else if(h+=v-d,d<E){E-=d;do b[n++]=w[h++];while(--d);h=n-A,S=b}for(;E>2;)b[n++]=S[h++],b[n++]=S[h++],b[n++]=S[h++],E-=3;E&&(b[n++]=S[h++],E>1&&(b[n++]=S[h++]))}else{h=n-A;do b[n++]=b[h++],b[n++]=b[h++],b[n++]=b[h++],E-=3;while(E>2);E&&(b[n++]=b[h++],E>1&&(b[n++]=b[h++]))}}else if((d&64)===0){g=p[(g&65535)+(l&(1<<d)-1)];continue i}else{i.msg="invalid distance code",m.mode=16209;break e}break}}else if((d&64)===0){g=I[(g&65535)+(l&(1<<d)-1)];continue t}else if(d&32){m.mode=16191;break e}else{i.msg="invalid literal/length code",m.mode=16209;break e}break}}while(r<s&&n<f);E=u>>3,r-=E,u-=E<<3,l&=(1<<u)-1,i.next_in=r,i.next_out=n,i.avail_in=r<s?5+(s-r):5-(r-s),i.avail_out=n<f?257+(f-n):257-(n-f),m.hold=l,m.bits=u}});var Me=R((Hi,Ne)=>{"use strict";var Gt=new Uint16Array([3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0]),Yt=new Uint8Array([16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78]),Xt=new Uint16Array([1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0]),qt=new Uint8Array([16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64]),Kt=(t,i,e,r,s,n,c,f)=>{let _=f.bits,a=0,o=0,v=0,w=0,l=0,u=0,I=0,p=0,x=0,T=0,g,d,E,A,h,S=null,k,b=new Uint16Array(16),m=new Uint16Array(16),L=null,Ee,W,Q;for(a=0;a<=15;a++)b[a]=0;for(o=0;o<r;o++)b[i[e+o]]++;for(l=_,w=15;w>=1&&b[w]===0;w--);if(l>w&&(l=w),w===0)return s[n++]=1<<24|64<<16|0,s[n++]=1<<24|64<<16|0,f.bits=1,0;for(v=1;v<w&&b[v]===0;v++);for(l<v&&(l=v),p=1,a=1;a<=15;a++)if(p<<=1,p-=b[a],p<0)return-1;if(p>0&&(t===0||w!==1))return-1;for(m[1]=0,a=1;a<15;a++)m[a+1]=m[a]+b[a];for(o=0;o<r;o++)i[e+o]!==0&&(c[m[i[e+o]]++]=o);if(t===0?(S=L=c,k=20):t===1?(S=Gt,L=Yt,k=257):(S=Xt,L=qt,k=0),T=0,o=0,a=v,h=n,u=l,I=0,E=-1,x=1<<l,A=x-1,t===1&&x>852||t===2&&x>592)return 1;for(;;){Ee=a-I,c[o]+1<k?(W=0,Q=c[o]):c[o]>=k?(W=L[c[o]-k],Q=S[c[o]-k]):(W=96,Q=0),g=1<<a-I,d=1<<u,v=d;do d-=g,s[h+(T>>I)+d]=Ee<<24|W<<16|Q|0;while(d!==0);for(g=1<<a-1;T&g;)g>>=1;if(g!==0?(T&=g-1,T+=g):T=0,o++,--b[a]===0){if(a===w)break;a=i[e+c[o]]}if(a>l&&(T&A)!==E){for(I===0&&(I=l),h+=v,u=a-I,p=1<<u;u+I<w&&(p-=b[u+I],!(p<=0));)u++,p<<=1;if(x+=1<<u,t===1&&x>852||t===2&&x>592)return 1;E=T&A,s[E]=l<<24|u<<16|h-n|0}}return T!==0&&(s[h+T]=a-I<<24|64<<16|0),f.bits=l,0};Ne.exports=Kt});var J=R((Fi,Ze)=>{"use strict";Ze.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}});var bt=R((Vi,O)=>{"use strict";var he=Ie(),M=De(),jt=Oe(),X=Me(),Wt=0,st=1,ft=2,{Z_FINISH:Be,Z_BLOCK:Qt,Z_TREES:$,Z_OK:P,Z_STREAM_END:Jt,Z_NEED_DICT:$t,Z_STREAM_ERROR:U,Z_DATA_ERROR:lt,Z_MEM_ERROR:ue,Z_BUF_ERROR:ei,Z_DEFLATED:Ce}=J(),ne=16180,Le=16181,Pe=16182,ze=16183,He=16184,Fe=16185,Ve=16186,Ge=16187,Ye=16188,Xe=16189,ie=16190,Z=16191,se=16192,qe=16193,fe=16194,Ke=16195,je=16196,We=16197,Qe=16198,ee=16199,te=16200,Je=16201,$e=16202,et=16203,tt=16204,it=16205,le=16206,nt=16207,rt=16208,y=16209,we=16210,ct=16211,ti=852,ii=592,ni=15,ri=ni,at=t=>(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24);function ai(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}var z=t=>{if(!t)return 1;let i=t.state;return!i||i.strm!==t||i.mode<ne||i.mode>ct?1:0},dt=t=>{if(z(t))return U;let i=t.state;return t.total_in=t.total_out=i.total=0,t.msg="",i.wrap&&(t.adler=i.wrap&1),i.mode=ne,i.last=0,i.havedict=0,i.flags=-1,i.dmax=32768,i.head=null,i.hold=0,i.bits=0,i.lencode=i.lendyn=new Int32Array(ti),i.distcode=i.distdyn=new Int32Array(ii),i.sane=1,i.back=-1,P},ht=t=>{if(z(t))return U;let i=t.state;return i.wsize=0,i.whave=0,i.wnext=0,dt(t)},ut=(t,i)=>{let e;if(z(t))return U;let r=t.state;return i<0?(e=0,i=-i):(e=(i>>4)+5,i<48&&(i&=15)),i&&(i<8||i>15)?U:(r.window!==null&&r.wbits!==i&&(r.window=null),r.wrap=e,r.wbits=i,ht(t))},wt=(t,i)=>{if(!t)return U;let e=new ai;t.state=e,e.strm=t,e.window=null,e.mode=ne;let r=ut(t,i);return r!==P&&(t.state=null),r},oi=t=>wt(t,ri),ot=!0,ce,de,si=t=>{if(ot){ce=new Int32Array(512),de=new Int32Array(32);let i=0;for(;i<144;)t.lens[i++]=8;for(;i<256;)t.lens[i++]=9;for(;i<280;)t.lens[i++]=7;for(;i<288;)t.lens[i++]=8;for(X(st,t.lens,0,288,ce,0,t.work,{bits:9}),i=0;i<32;)t.lens[i++]=5;X(ft,t.lens,0,32,de,0,t.work,{bits:5}),ot=!1}t.lencode=ce,t.lenbits=9,t.distcode=de,t.distbits=5},xt=(t,i,e,r)=>{let s,n=t.state;return n.window===null&&(n.wsize=1<<n.wbits,n.wnext=0,n.whave=0,n.window=new Uint8Array(n.wsize)),r>=n.wsize?(n.window.set(i.subarray(e-n.wsize,e),0),n.wnext=0,n.whave=n.wsize):(s=n.wsize-n.wnext,s>r&&(s=r),n.window.set(i.subarray(e-r,e-r+s),n.wnext),r-=s,r?(n.window.set(i.subarray(e-r,e),0),n.wnext=r,n.whave=n.wsize):(n.wnext+=s,n.wnext===n.wsize&&(n.wnext=0),n.whave<n.wsize&&(n.whave+=s))),0},fi=(t,i)=>{let e,r,s,n,c,f,_,a,o,v,w,l,u,I,p=0,x,T,g,d,E,A,h,S,k=new Uint8Array(4),b,m,L=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(z(t)||!t.output||!t.input&&t.avail_in!==0)return U;e=t.state,e.mode===Z&&(e.mode=se),c=t.next_out,s=t.output,_=t.avail_out,n=t.next_in,r=t.input,f=t.avail_in,a=e.hold,o=e.bits,v=f,w=_,S=P;e:for(;;)switch(e.mode){case ne:if(e.wrap===0){e.mode=se;break}for(;o<16;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}if(e.wrap&2&&a===35615){e.wbits===0&&(e.wbits=15),e.check=0,k[0]=a&255,k[1]=a>>>8&255,e.check=M(e.check,k,2,0),a=0,o=0,e.mode=Le;break}if(e.head&&(e.head.done=!1),!(e.wrap&1)||(((a&255)<<8)+(a>>8))%31){t.msg="incorrect header check",e.mode=y;break}if((a&15)!==Ce){t.msg="unknown compression method",e.mode=y;break}if(a>>>=4,o-=4,h=(a&15)+8,e.wbits===0&&(e.wbits=h),h>15||h>e.wbits){t.msg="invalid window size",e.mode=y;break}e.dmax=1<<e.wbits,e.flags=0,t.adler=e.check=1,e.mode=a&512?Xe:Z,a=0,o=0;break;case Le:for(;o<16;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}if(e.flags=a,(e.flags&255)!==Ce){t.msg="unknown compression method",e.mode=y;break}if(e.flags&57344){t.msg="unknown header flags set",e.mode=y;break}e.head&&(e.head.text=a>>8&1),e.flags&512&&e.wrap&4&&(k[0]=a&255,k[1]=a>>>8&255,e.check=M(e.check,k,2,0)),a=0,o=0,e.mode=Pe;case Pe:for(;o<32;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}e.head&&(e.head.time=a),e.flags&512&&e.wrap&4&&(k[0]=a&255,k[1]=a>>>8&255,k[2]=a>>>16&255,k[3]=a>>>24&255,e.check=M(e.check,k,4,0)),a=0,o=0,e.mode=ze;case ze:for(;o<16;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}e.head&&(e.head.xflags=a&255,e.head.os=a>>8),e.flags&512&&e.wrap&4&&(k[0]=a&255,k[1]=a>>>8&255,e.check=M(e.check,k,2,0)),a=0,o=0,e.mode=He;case He:if(e.flags&1024){for(;o<16;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}e.length=a,e.head&&(e.head.extra_len=a),e.flags&512&&e.wrap&4&&(k[0]=a&255,k[1]=a>>>8&255,e.check=M(e.check,k,2,0)),a=0,o=0}else e.head&&(e.head.extra=null);e.mode=Fe;case Fe:if(e.flags&1024&&(l=e.length,l>f&&(l=f),l&&(e.head&&(h=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Uint8Array(e.head.extra_len)),e.head.extra.set(r.subarray(n,n+l),h)),e.flags&512&&e.wrap&4&&(e.check=M(e.check,r,l,n)),f-=l,n+=l,e.length-=l),e.length))break e;e.length=0,e.mode=Ve;case Ve:if(e.flags&2048){if(f===0)break e;l=0;do h=r[n+l++],e.head&&h&&e.length<65536&&(e.head.name+=String.fromCharCode(h));while(h&&l<f);if(e.flags&512&&e.wrap&4&&(e.check=M(e.check,r,l,n)),f-=l,n+=l,h)break e}else e.head&&(e.head.name=null);e.length=0,e.mode=Ge;case Ge:if(e.flags&4096){if(f===0)break e;l=0;do h=r[n+l++],e.head&&h&&e.length<65536&&(e.head.comment+=String.fromCharCode(h));while(h&&l<f);if(e.flags&512&&e.wrap&4&&(e.check=M(e.check,r,l,n)),f-=l,n+=l,h)break e}else e.head&&(e.head.comment=null);e.mode=Ye;case Ye:if(e.flags&512){for(;o<16;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}if(e.wrap&4&&a!==(e.check&65535)){t.msg="header crc mismatch",e.mode=y;break}a=0,o=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),t.adler=e.check=0,e.mode=Z;break;case Xe:for(;o<32;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}t.adler=e.check=at(a),a=0,o=0,e.mode=ie;case ie:if(e.havedict===0)return t.next_out=c,t.avail_out=_,t.next_in=n,t.avail_in=f,e.hold=a,e.bits=o,$t;t.adler=e.check=1,e.mode=Z;case Z:if(i===Qt||i===$)break e;case se:if(e.last){a>>>=o&7,o-=o&7,e.mode=le;break}for(;o<3;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}switch(e.last=a&1,a>>>=1,o-=1,a&3){case 0:e.mode=qe;break;case 1:if(si(e),e.mode=ee,i===$){a>>>=2,o-=2;break e}break;case 2:e.mode=je;break;case 3:t.msg="invalid block type",e.mode=y}a>>>=2,o-=2;break;case qe:for(a>>>=o&7,o-=o&7;o<32;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}if((a&65535)!==(a>>>16^65535)){t.msg="invalid stored block lengths",e.mode=y;break}if(e.length=a&65535,a=0,o=0,e.mode=fe,i===$)break e;case fe:e.mode=Ke;case Ke:if(l=e.length,l){if(l>f&&(l=f),l>_&&(l=_),l===0)break e;s.set(r.subarray(n,n+l),c),f-=l,n+=l,_-=l,c+=l,e.length-=l;break}e.mode=Z;break;case je:for(;o<14;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}if(e.nlen=(a&31)+257,a>>>=5,o-=5,e.ndist=(a&31)+1,a>>>=5,o-=5,e.ncode=(a&15)+4,a>>>=4,o-=4,e.nlen>286||e.ndist>30){t.msg="too many length or distance symbols",e.mode=y;break}e.have=0,e.mode=We;case We:for(;e.have<e.ncode;){for(;o<3;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}e.lens[L[e.have++]]=a&7,a>>>=3,o-=3}for(;e.have<19;)e.lens[L[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,b={bits:e.lenbits},S=X(Wt,e.lens,0,19,e.lencode,0,e.work,b),e.lenbits=b.bits,S){t.msg="invalid code lengths set",e.mode=y;break}e.have=0,e.mode=Qe;case Qe:for(;e.have<e.nlen+e.ndist;){for(;p=e.lencode[a&(1<<e.lenbits)-1],x=p>>>24,T=p>>>16&255,g=p&65535,!(x<=o);){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}if(g<16)a>>>=x,o-=x,e.lens[e.have++]=g;else{if(g===16){for(m=x+2;o<m;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}if(a>>>=x,o-=x,e.have===0){t.msg="invalid bit length repeat",e.mode=y;break}h=e.lens[e.have-1],l=3+(a&3),a>>>=2,o-=2}else if(g===17){for(m=x+3;o<m;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}a>>>=x,o-=x,h=0,l=3+(a&7),a>>>=3,o-=3}else{for(m=x+7;o<m;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}a>>>=x,o-=x,h=0,l=11+(a&127),a>>>=7,o-=7}if(e.have+l>e.nlen+e.ndist){t.msg="invalid bit length repeat",e.mode=y;break}for(;l--;)e.lens[e.have++]=h}}if(e.mode===y)break;if(e.lens[256]===0){t.msg="invalid code -- missing end-of-block",e.mode=y;break}if(e.lenbits=9,b={bits:e.lenbits},S=X(st,e.lens,0,e.nlen,e.lencode,0,e.work,b),e.lenbits=b.bits,S){t.msg="invalid literal/lengths set",e.mode=y;break}if(e.distbits=6,e.distcode=e.distdyn,b={bits:e.distbits},S=X(ft,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,b),e.distbits=b.bits,S){t.msg="invalid distances set",e.mode=y;break}if(e.mode=ee,i===$)break e;case ee:e.mode=te;case te:if(f>=6&&_>=258){t.next_out=c,t.avail_out=_,t.next_in=n,t.avail_in=f,e.hold=a,e.bits=o,jt(t,w),c=t.next_out,s=t.output,_=t.avail_out,n=t.next_in,r=t.input,f=t.avail_in,a=e.hold,o=e.bits,e.mode===Z&&(e.back=-1);break}for(e.back=0;p=e.lencode[a&(1<<e.lenbits)-1],x=p>>>24,T=p>>>16&255,g=p&65535,!(x<=o);){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}if(T&&(T&240)===0){for(d=x,E=T,A=g;p=e.lencode[A+((a&(1<<d+E)-1)>>d)],x=p>>>24,T=p>>>16&255,g=p&65535,!(d+x<=o);){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}a>>>=d,o-=d,e.back+=d}if(a>>>=x,o-=x,e.back+=x,e.length=g,T===0){e.mode=it;break}if(T&32){e.back=-1,e.mode=Z;break}if(T&64){t.msg="invalid literal/length code",e.mode=y;break}e.extra=T&15,e.mode=Je;case Je:if(e.extra){for(m=e.extra;o<m;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}e.length+=a&(1<<e.extra)-1,a>>>=e.extra,o-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=$e;case $e:for(;p=e.distcode[a&(1<<e.distbits)-1],x=p>>>24,T=p>>>16&255,g=p&65535,!(x<=o);){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}if((T&240)===0){for(d=x,E=T,A=g;p=e.distcode[A+((a&(1<<d+E)-1)>>d)],x=p>>>24,T=p>>>16&255,g=p&65535,!(d+x<=o);){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}a>>>=d,o-=d,e.back+=d}if(a>>>=x,o-=x,e.back+=x,T&64){t.msg="invalid distance code",e.mode=y;break}e.offset=g,e.extra=T&15,e.mode=et;case et:if(e.extra){for(m=e.extra;o<m;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}e.offset+=a&(1<<e.extra)-1,a>>>=e.extra,o-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){t.msg="invalid distance too far back",e.mode=y;break}e.mode=tt;case tt:if(_===0)break e;if(l=w-_,e.offset>l){if(l=e.offset-l,l>e.whave&&e.sane){t.msg="invalid distance too far back",e.mode=y;break}l>e.wnext?(l-=e.wnext,u=e.wsize-l):u=e.wnext-l,l>e.length&&(l=e.length),I=e.window}else I=s,u=c-e.offset,l=e.length;l>_&&(l=_),_-=l,e.length-=l;do s[c++]=I[u++];while(--l);e.length===0&&(e.mode=te);break;case it:if(_===0)break e;s[c++]=e.length,_--,e.mode=te;break;case le:if(e.wrap){for(;o<32;){if(f===0)break e;f--,a|=r[n++]<<o,o+=8}if(w-=_,t.total_out+=w,e.total+=w,e.wrap&4&&w&&(t.adler=e.check=e.flags?M(e.check,s,w,c-w):he(e.check,s,w,c-w)),w=_,e.wrap&4&&(e.flags?a:at(a))!==e.check){t.msg="incorrect data check",e.mode=y;break}a=0,o=0}e.mode=nt;case nt:if(e.wrap&&e.flags){for(;o<32;){if(f===0)break e;f--,a+=r[n++]<<o,o+=8}if(e.wrap&4&&a!==(e.total&4294967295)){t.msg="incorrect length check",e.mode=y;break}a=0,o=0}e.mode=rt;case rt:S=Jt;break e;case y:S=lt;break e;case we:return ue;case ct:default:return U}return t.next_out=c,t.avail_out=_,t.next_in=n,t.avail_in=f,e.hold=a,e.bits=o,(e.wsize||w!==t.avail_out&&e.mode<y&&(e.mode<le||i!==Be))&&xt(t,t.output,t.next_out,w-t.avail_out)?(e.mode=we,ue):(v-=t.avail_in,w-=t.avail_out,t.total_in+=v,t.total_out+=w,e.total+=w,e.wrap&4&&w&&(t.adler=e.check=e.flags?M(e.check,s,w,t.next_out-w):he(e.check,s,w,t.next_out-w)),t.data_type=e.bits+(e.last?64:0)+(e.mode===Z?128:0)+(e.mode===ee||e.mode===fe?256:0),(v===0&&w===0||i===Be)&&S===P&&(S=ei),S)},li=t=>{if(z(t))return U;let i=t.state;return i.window&&(i.window=null),t.state=null,P},ci=(t,i)=>{if(z(t))return U;let e=t.state;return(e.wrap&2)===0?U:(e.head=i,i.done=!1,P)},di=(t,i)=>{let e=i.length,r,s,n;return z(t)||(r=t.state,r.wrap!==0&&r.mode!==ie)?U:r.mode===ie&&(s=1,s=he(s,i,e,0),s!==r.check)?lt:(n=xt(t,i,e,e),n?(r.mode=we,ue):(r.havedict=1,P))};O.exports.inflateReset=ht;O.exports.inflateReset2=ut;O.exports.inflateResetKeep=dt;O.exports.inflateInit=oi;O.exports.inflateInit2=wt;O.exports.inflate=fi;O.exports.inflateEnd=li;O.exports.inflateGetHeader=ci;O.exports.inflateSetDictionary=di;O.exports.inflateInfo="pako inflate (from Nodeca project)"});var _t=R((Gi,xe)=>{"use strict";var hi=(t,i)=>Object.prototype.hasOwnProperty.call(t,i);xe.exports.assign=function(t){let i=Array.prototype.slice.call(arguments,1);for(;i.length;){let e=i.shift();if(e){if(typeof e!="object")throw new TypeError(e+"must be non-object");for(let r in e)hi(e,r)&&(t[r]=e[r])}}return t};xe.exports.flattenChunks=t=>{let i=0;for(let r=0,s=t.length;r<s;r++)i+=t[r].length;let e=new Uint8Array(i);for(let r=0,s=0,n=t.length;r<n;r++){let c=t[r];e.set(c,s),s+=c.length}return e}});var kt=R((Yi,re)=>{"use strict";var gt=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{gt=!1}var q=new Uint8Array(256);for(let t=0;t<256;t++)q[t]=t>=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;q[254]=q[254]=1;re.exports.string2buf=t=>{if(typeof TextEncoder=="function"&&TextEncoder.prototype.encode)return new TextEncoder().encode(t);let i,e,r,s,n,c=t.length,f=0;for(s=0;s<c;s++)e=t.charCodeAt(s),(e&64512)===55296&&s+1<c&&(r=t.charCodeAt(s+1),(r&64512)===56320&&(e=65536+(e-55296<<10)+(r-56320),s++)),f+=e<128?1:e<2048?2:e<65536?3:4;for(i=new Uint8Array(f),n=0,s=0;n<f;s++)e=t.charCodeAt(s),(e&64512)===55296&&s+1<c&&(r=t.charCodeAt(s+1),(r&64512)===56320&&(e=65536+(e-55296<<10)+(r-56320),s++)),e<128?i[n++]=e:e<2048?(i[n++]=192|e>>>6,i[n++]=128|e&63):e<65536?(i[n++]=224|e>>>12,i[n++]=128|e>>>6&63,i[n++]=128|e&63):(i[n++]=240|e>>>18,i[n++]=128|e>>>12&63,i[n++]=128|e>>>6&63,i[n++]=128|e&63);return i};var ui=(t,i)=>{if(i<65534&&t.subarray&>)return String.fromCharCode.apply(null,t.length===i?t:t.subarray(0,i));let e="";for(let r=0;r<i;r++)e+=String.fromCharCode(t[r]);return e};re.exports.buf2string=(t,i)=>{let e=i||t.length;if(typeof TextDecoder=="function"&&TextDecoder.prototype.decode)return new TextDecoder().decode(t.subarray(0,i));let r,s,n=new Array(e*2);for(s=0,r=0;r<e;){let c=t[r++];if(c<128){n[s++]=c;continue}let f=q[c];if(f>4){n[s++]=65533,r+=f-1;continue}for(c&=f===2?31:f===3?15:7;f>1&&r<e;)c=c<<6|t[r++]&63,f--;if(f>1){n[s++]=65533;continue}c<65536?n[s++]=c:(c-=65536,n[s++]=55296|c>>10&1023,n[s++]=56320|c&1023)}return ui(n,s)};re.exports.utf8border=(t,i)=>{i=i||t.length,i>t.length&&(i=t.length);let e=i-1;for(;e>=0&&(t[e]&192)===128;)e--;return e<0||e===0?i:e+q[t[e]]>i?e:i}});var Et=R((Xi,pt)=>{"use strict";pt.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}});var St=R((qi,mt)=>{"use strict";function wi(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}mt.exports=wi});var vt=R((Ki,Tt)=>{"use strict";function xi(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}Tt.exports=xi});var Rt=R((ji,V)=>{"use strict";var B=bt(),At=_t(),ge=kt(),ke=Et(),bi=St(),_i=vt(),It=Object.prototype.toString,{Z_NO_FLUSH:gi,Z_FINISH:ki,Z_OK:K,Z_STREAM_END:be,Z_NEED_DICT:_e,Z_STREAM_ERROR:pi,Z_DATA_ERROR:yt,Z_MEM_ERROR:Ei}=J();function j(t){this.options=At.assign({chunkSize:1024*64,windowBits:15,to:""},t||{});let i=this.options;i.raw&&i.windowBits>=0&&i.windowBits<16&&(i.windowBits=-i.windowBits,i.windowBits===0&&(i.windowBits=-15)),i.windowBits>=0&&i.windowBits<16&&!(t&&t.windowBits)&&(i.windowBits+=32),i.windowBits>15&&i.windowBits<48&&(i.windowBits&15)===0&&(i.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new bi,this.strm.avail_out=0;let e=B.inflateInit2(this.strm,i.windowBits);if(e!==K)throw new Error(ke[e]);if(this.header=new _i,B.inflateGetHeader(this.strm,this.header),i.dictionary&&(typeof i.dictionary=="string"?i.dictionary=ge.string2buf(i.dictionary):It.call(i.dictionary)==="[object ArrayBuffer]"&&(i.dictionary=new Uint8Array(i.dictionary)),i.raw&&(e=B.inflateSetDictionary(this.strm,i.dictionary),e!==K)))throw new Error(ke[e])}j.prototype.push=function(t,i){let e=this.strm,r=this.options.chunkSize,s=this.options.dictionary,n,c,f;if(this.ended)return!1;for(i===~~i?c=i:c=i===!0?ki:gi,It.call(t)==="[object ArrayBuffer]"?e.input=new Uint8Array(t):e.input=t,e.next_in=0,e.avail_in=e.input.length;;){for(e.avail_out===0&&(e.output=new Uint8Array(r),e.next_out=0,e.avail_out=r),n=B.inflate(e,c),n===_e&&s&&(n=B.inflateSetDictionary(e,s),n===K?n=B.inflate(e,c):n===yt&&(n=_e));e.avail_in>0&&n===be&&e.state.wrap>0&&t[e.next_in]!==0;)B.inflateReset(e),n=B.inflate(e,c);switch(n){case pi:case yt:case _e:case Ei:return this.onEnd(n),this.ended=!0,!1}if(f=e.avail_out,e.next_out&&(e.avail_out===0||n===be))if(this.options.to==="string"){let _=ge.utf8border(e.output,e.next_out),a=e.next_out-_,o=ge.buf2string(e.output,_);e.next_out=a,e.avail_out=r-a,a&&e.output.set(e.output.subarray(_,_+a),0),this.onData(o)}else this.onData(e.output.length===e.next_out?e.output:e.output.subarray(0,e.next_out));if(!(n===K&&f===0)){if(n===be)return n=B.inflateEnd(this.strm),this.onEnd(n),this.ended=!0,!0;if(e.avail_in===0)break}}return!0};j.prototype.onData=function(t){this.chunks.push(t)};j.prototype.onEnd=function(t){t===K&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=At.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function pe(t,i){let e=new j(i);if(e.push(t),e.err)throw e.msg||ke[e.err];return e.result}function mi(t,i){return i=i||{},i.raw=!0,pe(t,i)}V.exports.Inflate=j;V.exports.inflate=pe;V.exports.inflateRaw=mi;V.exports.ungzip=pe;V.exports.constants=J()});var Nt=1953029805,Mt=2917034100;function oe(t,i){if(oe.passThroughDataForTesting)return i;ae.typeOf.object("key",t),ae.typeOf.object("data",i);let e=t.byteLength;if(e===0||e%4!==0)throw new D("The length of key must be greater than 0 and a multiple of 4.");let r=new DataView(i),s=r.getUint32(0,!0);if(s===Nt||s===Mt)return i;let n=new DataView(t),c=0,f=i.byteLength,_=f-f%8,a=e,o,v=8;for(;c<_;)for(v=(v+8)%24,o=v;c<_&&o<a;)r.setUint32(c,r.getUint32(c,!0)^n.getUint32(o,!0),!0),r.setUint32(c+4,r.getUint32(c+4,!0)^n.getUint32(o+4,!0),!0),c+=8,o+=24;if(c<f)for(o>=a&&(v=(v+8)%24,o=v);c<f;)r.setUint8(c,r.getUint8(c)^n.getUint8(o)),c++,o++}oe.passThroughDataForTesting=!1;var Te=oe;function Zt(t,i){return(t&i)!==0}var F=Zt;var Bt=[1,2,4,8],ve=15,Ct=16,Lt=64,Pt=128;function N(t,i,e,r,s,n){this._bits=t,this.cnodeVersion=i,this.imageryVersion=e,this.terrainVersion=r,this.imageryProvider=s,this.terrainProvider=n,this.ancestorHasTerrain=!1,this.terrainState=void 0}N.clone=function(t,i){return me(i)?(i._bits=t._bits,i.cnodeVersion=t.cnodeVersion,i.imageryVersion=t.imageryVersion,i.terrainVersion=t.terrainVersion,i.imageryProvider=t.imageryProvider,i.terrainProvider=t.terrainProvider):i=new N(t._bits,t.cnodeVersion,t.imageryVersion,t.terrainVersion,t.imageryProvider,t.terrainProvider),i.ancestorHasTerrain=t.ancestorHasTerrain,i.terrainState=t.terrainState,i};N.prototype.setParent=function(t){this.ancestorHasTerrain=t.ancestorHasTerrain||this.hasTerrain()};N.prototype.hasSubtree=function(){return F(this._bits,Ct)};N.prototype.hasImagery=function(){return F(this._bits,Lt)};N.prototype.hasTerrain=function(){return F(this._bits,Pt)};N.prototype.hasChildren=function(){return F(this._bits,ve)};N.prototype.hasChild=function(t){return F(this._bits,Bt[t])};N.prototype.getChildBitmask=function(){return this._bits&ve};var ye=N;var Ut=Ot(Rt(),1);var G=Uint16Array.BYTES_PER_ELEMENT,H=Int32Array.BYTES_PER_ELEMENT,Y=Uint32Array.BYTES_PER_ELEMENT,C={METADATA:0,TERRAIN:1,DBROOT:2};C.fromString=function(t){if(t==="Metadata")return C.METADATA;if(t==="Terrain")return C.TERRAIN;if(t==="DbRoot")return C.DBROOT};function Si(t,i){let e=C.fromString(t.type),r=t.buffer;Te(t.key,r);let s=Di(r);r=s.buffer;let n=s.length;switch(e){case C.METADATA:return vi(r,n,t.quadKey);case C.TERRAIN:return Ii(r,n,i);case C.DBROOT:return i.push(r),{buffer:r}}}var Ti=32301;function vi(t,i,e){let r=new DataView(t),s=0,n=r.getUint32(s,!0);if(s+=Y,n!==Ti)throw new D("Invalid magic");let c=r.getUint32(s,!0);if(s+=Y,c!==1)throw new D("Invalid data type. Must be 1 for QuadTreePacket");let f=r.getUint32(s,!0);if(s+=Y,f!==2)throw new D("Invalid QuadTreePacket version. Only version 2 is supported.");let _=r.getInt32(s,!0);s+=H;let a=r.getInt32(s,!0);if(s+=H,a!==32)throw new D("Invalid instance size.");let o=r.getInt32(s,!0);s+=H;let v=r.getInt32(s,!0);s+=H;let w=r.getInt32(s,!0);if(s+=H,o!==_*a+s)throw new D("Invalid dataBufferOffset");if(o+v+w!==i)throw new D("Invalid packet offsets");let l=[];for(let g=0;g<_;++g){let d=r.getUint8(s);++s,++s;let E=r.getUint16(s,!0);s+=G;let A=r.getUint16(s,!0);s+=G;let h=r.getUint16(s,!0);s+=G,s+=G,s+=G,s+=H,s+=H,s+=8;let S=r.getUint8(s++),k=r.getUint8(s++);s+=G,l.push(new ye(d,E,A,h,S,k))}let u=[],I=0;function p(g,d,E){let A=!1;if(E===4){if(d.hasSubtree())return;A=!0}for(let h=0;h<4;++h){let S=g+h.toString();if(A)u[S]=null;else if(E<4)if(!d.hasChild(h))u[S]=null;else{if(I===_){console.log("Incorrect number of instances");return}let k=l[I++];u[S]=k,p(S,k,E+1)}}}let x=0,T=l[I++];return e===""?++x:u[e]=T,p(e,T,x),u}var yi=5,Ai=4;function Ii(t,i,e){let r=new DataView(t),s=function(f){for(let _=0;_<Ai;++_){let a=r.getUint32(f,!0);if(f+=Y,f+=a,f>i)throw new D("Malformed terrain packet found.")}return f},n=0,c=[];for(;c.length<yi;){let f=n;n=s(n);let _=t.slice(f,n);e.push(_),c.push(_)}return c}var Dt=1953029805,Ri=2917034100;function Di(t){let i=new DataView(t),e=0,r=i.getUint32(e,!0);if(e+=Y,r!==Dt&&r!==Ri)throw new D("Invalid magic");let s=i.getUint32(e,r===Dt);e+=Y;let n=new Uint8Array(t,e),c=Ut.default.inflate(n);if(c.length!==s)throw new D("Size of packet doesn't match header");return c}var en=Se(Si);export{en as default}; diff --git a/public/Cesium/Workers/decodeI3S.js b/public/Cesium/Workers/decodeI3S.js new file mode 100644 index 000000000..0b86368ba --- /dev/null +++ b/public/Cesium/Workers/decodeI3S.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as mt}from"./chunk-35SHYARM.js";import{a as P}from"./chunk-HMIYSTF6.js";import{a as ht}from"./chunk-WZDE3RYP.js";import{a as ft}from"./chunk-DQQ63PYM.js";import{a as g,b as ot,d as st,e as it}from"./chunk-64RSHJUE.js";import{a as M}from"./chunk-3SSKC3VN.js";import{b as lt}from"./chunk-LEYMRMBK.js";import{d as pt,e as h}from"./chunk-VTAIKJXX.js";var at=pt(mt(),1);function xt(n){return lt.defined("value",n),n<=.04045?n*.07739938080495357:Math.pow((n+.055)*.9478672985781991,2.4)}var k=xt;var ut;function wt(n,t,e,o,a,i){let r=e*(1-n)+o*n,s=a*(1-n)+i*n;return r*(1-t)+s*t}function H(n,t,e,o){let a=n+t*e;return o[a]}function It(n,t,e){let o=e.nativeExtent,a=(n-o.west)/(o.east-o.west)*(e.width-1),i=(t-o.south)/(o.north-o.south)*(e.height-1),r=Math.floor(a),s=Math.floor(i);a-=r,i-=s;let c=r<e.width?r+1:r,u=s<e.height?s+1:s;s=e.height-1-s,u=e.height-1-u;let l=H(r,s,e.width,e.buffer),f=H(c,s,e.width,e.buffer),p=H(r,u,e.width,e.buffer),m=H(c,u,e.width,e.buffer),d=wt(a,i,l,f,p,m);return d=d*e.scale+e.offset,d}function yt(n,t,e){for(let o=0;o<e.length;o++){let a=e[o].nativeExtent,i=new g;if(e[o].projectionType==="WebMercator"){let r=e[o].projection._ellipsoid._radii;i=new ft(new st(r.x,r.y,r.z)).project(new ot(n,t,0))}else i.x=n,i.y=t;if(i.x>a.west&&i.x<a.east&&i.y>a.south&&i.y<a.north)return It(i.x,i.y,e[o])}return 0}function At(n,t,e,o,a,i,r){if(r)return;let s=yt(a.longitude,a.latitude,i);for(let c=0;c<n;++c){let u=yt(a.longitude+M.toRadians(e*t[c*3]),a.latitude+M.toRadians(o*t[c*3+1]),i);t[c*3+2]+=u-s}}function Lt(n,t,e,o,a,i,r,s,c){if(n===0||!h(t)||t.length===0)return;let u=new st(Math.sqrt(r.x),Math.sqrt(r.y),Math.sqrt(r.z));for(let l=0;l<n;++l){let f=l*3,p=f+1,m=f+2,d=new ot;d.longitude=o.longitude+M.toRadians(s*t[f]),d.latitude=o.latitude+M.toRadians(c*t[p]),d.height=o.height+t[m];let b={};u.cartographicToCartesian(d,b),b.x-=a.x,b.y-=a.y,b.z-=a.z;let x={};if(it.multiplyByVector(i,b,x),t[f]=x.x,t[p]=x.y,t[m]=x.z,h(e)){let T=new g(e[f],e[p],e[m]),I={};it.multiplyByVector(i,T,I),e[f]=I.x,e[p]=I.y,e[m]=I.z}}}function Ot(n,t,e){for(let o=0;o<n;++o){let a=e[o*4]/65535,i=e[o*4+1]/65535,r=(e[o*4+2]-e[o*4])/65535,s=(e[o*4+3]-e[o*4+1])/65535;t[o*2]*=r,t[o*2]+=a,t[o*2+1]*=s,t[o*2+1]+=i}}function Tt(n,t,e,o){let a=new Uint32Array(n),i=h(t)?s=>t[s]:s=>s,r=0;if(o&&h(e)){let s=c=>e[i(c)*4+3]<255;for(let c=0;c<n;c+=3)!s(c)&&!s(c+1)&&!s(c+2)&&(a[r++]=i(c),a[r++]=i(c+1),a[r++]=i(c+2));if(r>0){let c=r;for(let u=0;u<n;u+=3)(s(u)||s(u+1)||s(u+2))&&(a[c++]=i(u),a[c++]=i(u+1),a[c++]=i(u+2))}else for(let c=0;c<n;++c)a[c]=i(c)}else{r=n;for(let s=0;s<n;++s)a[s]=i(s)}return{indexArray:a,transparentVertexOffset:r}}function Ct(n,t,e){let o=t[e];if(h(o))return o;let a=t[e]={positions:{},indices:{},edges:{}},i=n[e]??n.default;return a.hasOutline=h(i?.edges),a}function Ft(n,t,e,o){if(!h(n[e])){let a=e*3,i=t;for(let r=0;r<3;r++){let s=o[a+r];h(i[s])||(i[s]={}),i=i[s]}h(i.index)||(i.index=e),n[e]=i.index}}function Ut(n,t,e,o,a,i){let r,s;o<a?(r=o,s=a):(r=a,s=o);let c=n[r];h(c)||(c=n[r]={});let u=c[s];h(u)||(u=c[s]={normalsIndex:[],outlines:[]}),u.normalsIndex.push(i),(u.outlines.length===0||t!==o||e!==a)&&u.outlines.push(t,e)}function Vt(n,t,e,o){let a=[];for(let i=0;i<e.length;i+=3){let r=h(t)?t[e[i]]:"default",s=Ct(n,a,r);if(!s.hasOutline)continue;let c=s.indices,u=s.positions;for(let f=0;f<3;f++){let p=e[i+f];Ft(c,u,p,o)}let l=s.edges;for(let f=0;f<3;f++){let p=e[i+f],m=e[i+(f+1)%3],d=c[p],b=c[m];Ut(l,p,m,d,b,i)}}return a}var O=new g,X=new g,Y=new g;function bt(n,t,e,o){let a=e[t]*3,i=e[t+1]*3,r=e[t+2]*3;g.fromArray(o,a,O),g.fromArray(o,i,X),g.fromArray(o,r,Y),g.subtract(X,O,X),g.subtract(Y,O,Y),g.cross(X,Y,O);let s=g.magnitude(O);s!==0&&g.divideByScalar(O,s,O);let c=t*3,u=(t+1)*3,l=(t+2)*3;g.pack(O,n,c),g.pack(O,n,u),g.pack(O,n,l)}var z=new g,ct=new g;function Et(n,t,e){g.fromArray(n,t,z),g.fromArray(n,e,ct);let o=g.dot(z,ct),a=g.magnitude(g.cross(z,ct,z));return Math.atan2(a,o)<.25}function _t(n,t,e,o,a){if(t.normalsIndex.length>1){let i=o.length===a.length;for(let r=0;r<t.normalsIndex.length;r++){let s=t.normalsIndex[r];if(h(a[s*3])||bt(a,s,e,o),r!==0)for(let c=0;c<r;c++){let u=t.normalsIndex[c],l=i?e[s]*3:s*3,f=i?e[u]*3:u*3;if(Et(a,l,f))return}}}n.push(...t.outlines)}function Rt(n,t,e,o,a){let i=Object.keys(t);for(let r=0;r<i.length;r++){let s=t[i[r]],c=Object.keys(s);for(let u=0;u<c.length;u++){let l=s[c[u]];_t(n,l,e,o,a)}}}function Nt(n,t,e,o){let a=[],i=Object.keys(n);for(let r=0;r<i.length;r++){let s=n[i[r]].edges;Rt(a,s,t,e,o)}return a}function Bt(n,t,e,o,a){if(!h(n)||Object.keys(n).length===0)return;let i=Vt(n,t,e,o);(!h(a)||e.length*3!==a.length)&&(a=[]);let r=Nt(i,e,o,a);return r.length>0?new Uint32Array(r):void 0}function Gt(n){let t=new Float32Array(n.length);for(let e=0;e<n.length;e+=4)t[e]=k(P.byteToFloat(n[e])),t[e+1]=k(P.byteToFloat(n[e+1])),t[e+2]=k(P.byteToFloat(n[e+2])),t[e+3]=P.byteToFloat(n[e+3]);return t}function St(n,t,e,o,a,i,r){let s={normals:void 0,positions:void 0,uv0s:void 0,colors:void 0,featureIndex:void 0,vertexCount:void 0};if(n===0||!h(e)||e.length===0||h(o))return s;if(h(t)){s.vertexCount=t.length,s.positions=new Float32Array(t.length*3),s.uv0s=h(a)?new Float32Array(t.length*2):void 0,s.colors=h(i)?new Uint8Array(t.length*4):void 0,s.featureIndex=h(r)?new Array(t.length):void 0;for(let c=0;c<t.length;c++){let u=t[c];s.positions[c*3]=e[u*3],s.positions[c*3+1]=e[u*3+1],s.positions[c*3+2]=e[u*3+2],h(s.uv0s)&&(s.uv0s[c*2]=a[u*2],s.uv0s[c*2+1]=a[u*2+1]),h(s.colors)&&(s.colors[c*4]=i[u*4],s.colors[c*4+1]=i[u*4+1],s.colors[c*4+2]=i[u*4+2],s.colors[c*4+3]=i[u*4+3]),h(s.featureIndex)&&(s.featureIndex[c]=r[u])}n=t.length,e=s.positions}t=new Array(n);for(let c=0;c<n;c++)t[c]=c;s.normals=new Float32Array(t.length*3);for(let c=0;c<t.length;c+=3)bt(s.normals,c,t,e);return s}function vt(n,t,e,o,a,i,r,s){if(n===0||!h(e)||e.length===0)return{buffers:[],bufferViews:[],accessors:[],meshes:[],nodes:[],nodesInScene:[]};let c=[],u=[],l=[],f=[],p=[],m=[],d={},b=[];h(t)&&(n=t.length);let{indexArray:x,transparentVertexOffset:T}=Tt(n,t,i,s.splitGeometryByColorTransparency),I=new Blob([x],{type:"application/binary"}),A=URL.createObjectURL(I),w=n,F=s.enableFeatures&&h(r)?new Float32Array(r.length):void 0,C=0;if(h(F))for(let y=0;y<r.length;++y){F[y]=r[y];let E=r[y]+1;C<E&&(C=E)}let U,R=Bt(s.symbologyData,r,x,e,o);if(h(R)){let y=new Blob([R],{type:"application/binary"});U=URL.createObjectURL(y)}let L=e.subarray(0,w*3),gt=new Blob([L],{type:"application/binary"}),dt=URL.createObjectURL(gt),D=Number.POSITIVE_INFINITY,K=Number.NEGATIVE_INFINITY,Q=Number.POSITIVE_INFINITY,Z=Number.NEGATIVE_INFINITY,J=Number.POSITIVE_INFINITY,$=Number.NEGATIVE_INFINITY;for(let y=0;y<L.length/3;y++)D=Math.min(D,L[y*3+0]),K=Math.max(K,L[y*3+0]),Q=Math.min(Q,L[y*3+1]),Z=Math.max(Z,L[y*3+1]),J=Math.min(J,L[y*3+2]),$=Math.max($,L[y*3+2]);let N=o?o.subarray(0,w*3):void 0,q;if(h(N)){let y=new Blob([N],{type:"application/binary"});q=URL.createObjectURL(y)}let B=a?a.subarray(0,w*2):void 0,tt;if(h(B)){let y=new Blob([B],{type:"application/binary"});tt=URL.createObjectURL(y)}let G=h(i)?Gt(i.subarray(0,w*4)):void 0,et;if(h(G)){let y=new Blob([G],{type:"application/binary"});et=URL.createObjectURL(y)}let S=h(F)?F.subarray(0,w):void 0,nt;if(h(S)){let y=new Blob([S],{type:"application/binary"});nt=URL.createObjectURL(y)}let _=h(F)?new Float32Array(C):void 0,rt;if(h(_)){for(let E=0;E<_.length;++E)_[E]=E;let y=new Blob([_],{type:"application/binary"});rt=URL.createObjectURL(y)}let V={},j={};V.POSITION=l.length,c.push({uri:dt,byteLength:L.byteLength}),u.push({buffer:c.length-1,byteOffset:0,byteLength:L.byteLength,target:34962}),l.push({bufferView:u.length-1,byteOffset:0,componentType:5126,count:L.length/3,type:"VEC3",max:[D,Q,J],min:[K,Z,$]}),h(q)&&(V.NORMAL=l.length,c.push({uri:q,byteLength:N.byteLength}),u.push({buffer:c.length-1,byteOffset:0,byteLength:N.byteLength,target:34962}),l.push({bufferView:u.length-1,byteOffset:0,componentType:5126,count:N.length/3,type:"VEC3"})),h(tt)&&(V.TEXCOORD_0=l.length,c.push({uri:tt,byteLength:B.byteLength}),u.push({buffer:c.length-1,byteOffset:0,byteLength:B.byteLength,target:34962}),l.push({bufferView:u.length-1,byteOffset:0,componentType:5126,count:B.length/2,type:"VEC2"})),h(et)&&(V.COLOR_0=l.length,c.push({uri:et,byteLength:G.byteLength}),u.push({buffer:c.length-1,byteOffset:0,byteLength:G.byteLength,target:34962}),l.push({bufferView:u.length-1,byteOffset:0,componentType:5126,count:G.length/4,type:"VEC4"})),h(nt)&&(V._FEATURE_ID_0=l.length,c.push({uri:nt,byteLength:S.byteLength}),u.push({buffer:c.length-1,byteOffset:0,byteLength:S.byteLength,target:34963}),l.push({bufferView:u.length-1,byteOffset:0,componentType:5126,count:S.length,type:"SCALAR"}),j.EXT_mesh_features={featureIds:[{attribute:0,propertyTable:0,featureCount:C}]},b.push("EXT_mesh_features")),h(rt)&&(c.push({uri:rt,byteLength:_.byteLength}),u.push({buffer:c.length-1,byteOffset:0,byteLength:_.byteLength,target:34963}),d.EXT_structural_metadata={schema:{id:"i3s-metadata-schema-001",name:"I3S metadata schema 001",description:"The schema for I3S metadata",version:"1.0",classes:{feature:{name:"feature",description:"Feature metadata",properties:{index:{description:"The feature index",type:"SCALAR",componentType:"FLOAT32",required:!0}}}}},propertyTables:[{name:"feature-indices-mapping",class:"feature",count:C,properties:{index:{values:u.length-1}}}]},b.push("EXT_structural_metadata")),h(U)&&(c.push({uri:U,byteLength:R.byteLength}),u.push({buffer:c.length-1,byteOffset:0,byteLength:R.byteLength,target:34963}),l.push({bufferView:u.length-1,byteOffset:0,componentType:5125,count:R.length,type:"SCALAR"}),j.CESIUM_primitive_outline={indices:l.length-1},b.push("CESIUM_primitive_outline")),c.push({uri:A,byteLength:x.byteLength}),u.push({buffer:c.length-1,byteOffset:0,byteLength:x.byteLength,target:34963});let v=[];return T>0&&(l.push({bufferView:u.length-1,byteOffset:0,componentType:5125,count:T,type:"SCALAR"}),v.push({attributes:V,indices:l.length-1,material:v.length,extensions:j})),T<n&&(l.push({bufferView:u.length-1,byteOffset:4*T,componentType:5125,count:n-T,type:"SCALAR"}),v.push({attributes:V,indices:l.length-1,material:v.length,extensions:j,extra:{isTransparent:!0}})),f.push({primitives:v}),m.push(0),p.push({mesh:0}),{buffers:c,bufferViews:u,accessors:l,meshes:f,nodes:p,nodesInScene:m,rootExtensions:d,extensionsUsed:b}}function Mt(n,t,e,o){let a=new Uint8Array(n,0,5);return a[0]===68&&a[1]===82&&a[2]===65&&a[3]===67&&a[4]===79?Pt(n,e):kt(n,t,e,o)}function Pt(n){let t=ut,e=new t.DecoderBuffer,o=new Uint8Array(n);e.Init(o,o.length);let a=new t.Decoder,i=a.GetEncodedGeometryType(e),r=new t.MetadataQuerier,s,c;i===t.TRIANGULAR_MESH&&(s=new t.Mesh,c=a.DecodeBufferToMesh(e,s));let u={vertexCount:[0],featureCount:0};if(h(c)&&c.ok()&&s.ptr!==0){let l=s.num_faces(),f=s.num_attributes(),p=s.num_points();u.indices=new Uint32Array(l*3);let m=u.indices;u.vertexCount[0]=p,u.scale_x=1,u.scale_y=1;let d=new t.DracoInt32Array(3);for(let b=0;b<l;++b)a.GetFaceFromMesh(s,b,d),m[b*3]=d.GetValue(0),m[b*3+1]=d.GetValue(1),m[b*3+2]=d.GetValue(2);t.destroy(d);for(let b=0;b<f;++b){let x=a.GetAttribute(s,b),T=jt(t,a,s,x,p),I=x.attribute_type(),A="unknown";I===t.POSITION?A="positions":I===t.NORMAL?A="normals":I===t.COLOR?A="colors":I===t.TEX_COORD&&(A="uv0s");let w=a.GetAttributeMetadata(s,b);if(w.ptr!==0){let F=r.NumEntries(w);for(let C=0;C<F;++C){let U=r.GetEntryName(w,C);U==="i3s-scale_x"?u.scale_x=r.GetDoubleEntry(w,"i3s-scale_x"):U==="i3s-scale_y"?u.scale_y=r.GetDoubleEntry(w,"i3s-scale_y"):U==="i3s-attribute-type"&&(A=r.GetStringEntry(w,"i3s-attribute-type"))}}h(u[A])&&console.log("Attribute already exists",A),u[A]=T,A==="feature-index"&&u.featureCount++}t.destroy(s)}return t.destroy(r),t.destroy(a),u}function jt(n,t,e,o,a){let i=o.num_components()*a,r,c=[function(){},function(){r=new n.DracoInt8Array(i),t.GetAttributeInt8ForAllPoints(e,o,r)||console.error("Bad stream");let l=new Int8Array(i);for(let f=0;f<i;++f)l[f]=r.GetValue(f);return l},function(){r=new n.DracoInt8Array(i),t.GetAttributeUInt8ForAllPoints(e,o,r)||console.error("Bad stream");let l=new Uint8Array(i);for(let f=0;f<i;++f)l[f]=r.GetValue(f);return l},function(){r=new n.DracoInt16Array(i),t.GetAttributeInt16ForAllPoints(e,o,r)||console.error("Bad stream");let l=new Int16Array(i);for(let f=0;f<i;++f)l[f]=r.GetValue(f);return l},function(){r=new n.DracoInt16Array(i),t.GetAttributeUInt16ForAllPoints(e,o,r)||console.error("Bad stream");let l=new Uint16Array(i);for(let f=0;f<i;++f)l[f]=r.GetValue(f);return l},function(){r=new n.DracoInt32Array(i),t.GetAttributeInt32ForAllPoints(e,o,r)||console.error("Bad stream");let l=new Int32Array(i);for(let f=0;f<i;++f)l[f]=r.GetValue(f);return l},function(){r=new n.DracoInt32Array(i),t.GetAttributeUInt32ForAllPoints(e,o,r)||console.error("Bad stream");let l=new Uint32Array(i);for(let f=0;f<i;++f)l[f]=r.GetValue(f);return l},function(){},function(){},function(){r=new n.DracoFloat32Array(i),t.GetAttributeFloatForAllPoints(e,o,r)||console.error("Bad stream");let l=new Float32Array(i);for(let f=0;f<i;++f)l[f]=r.GetValue(f);return l},function(){},function(){r=new n.DracoUInt8Array(i),t.GetAttributeUInt8ForAllPoints(e,o,r)||console.error("Bad stream");let l=new Uint8Array(i);for(let f=0;f<i;++f)l[f]=r.GetValue(f);return l}][o.data_type()]();return h(r)&&n.destroy(r),c}var W={position:function(n,t,e){let o=n.vertexCount*3;return n.positions=new Float32Array(t,e,o),e+=o*4,e},normal:function(n,t,e){let o=n.vertexCount*3;return n.normals=new Float32Array(t,e,o),e+=o*4,e},uv0:function(n,t,e){let o=n.vertexCount*2;return n.uv0s=new Float32Array(t,e,o),e+=o*4,e},color:function(n,t,e){let o=n.vertexCount*4;return n.colors=new Uint8Array(t,e,o),e+=o,e},featureId:function(n,t,e){let o=n.featureCount;return e+=o*8,e},id:function(n,t,e){let o=n.featureCount;return e+=o*8,e},faceRange:function(n,t,e){let o=n.featureCount*2;return n.faceRange=new Uint32Array(t,e,o),e+=o*4,e},uvRegion:function(n,t,e){let o=n.vertexCount*4;return n["uv-region"]=new Uint16Array(t,e,o),e+=o*2,e},region:function(n,t,e){let o=n.vertexCount*4;return n["uv-region"]=new Uint16Array(t,e,o),e+=o*2,e}};function kt(n,t,e,o){let a={vertexCount:0},i=new DataView(n);try{let r=0;if(a.vertexCount=i.getUint32(r,1),r+=4,a.featureCount=i.getUint32(r,1),r+=4,h(e))for(let s=0;s<e.attributes.length;s++)h(W[e.attributes[s]])?r=W[e.attributes[s]](a,n,r):console.error("Unknown decoder for",e.attributes[s]);else{let s=t.ordering,c=t.featureAttributeOrder;h(o)&&h(o.geometryData)&&h(o.geometryData[0])&&h(o.geometryData[0].params)&&(s=Object.keys(o.geometryData[0].params.vertexAttributes),c=Object.keys(o.geometryData[0].params.featureAttributes));for(let u=0;u<s.length;u++){let l=W[s[u]];r=l(a,n,r)}for(let u=0;u<c.length;u++){let l=W[c[u]];r=l(a,n,r)}}}catch(r){console.error(r)}return a.scale_x=1,a.scale_y=1,a}function Ht(n){let t=Mt(n.binaryData,n.schema,n.bufferInfo,n.featureData);h(n.geoidDataList)&&n.geoidDataList.length>0&&At(t.vertexCount,t.positions,t.scale_x,t.scale_y,n.cartographicCenter,n.geoidDataList,!1),Lt(t.vertexCount,t.positions,t.normals,n.cartographicCenter,n.cartesianCenter,n.parentRotation,n.ellipsoidRadiiSquare,t.scale_x,t.scale_y),h(t.uv0s)&&h(t["uv-region"])&&Ot(t.vertexCount,t.uv0s,t["uv-region"]);let e;if(h(t["feature-index"]))e=t["feature-index"];else if(h(t.faceRange)){e=new Array(t.vertexCount);for(let r=0;r<t.faceRange.length-1;r+=2){let s=r/2,c=t.faceRange[r],u=t.faceRange[r+1];for(let l=c;l<=u;l++)e[l*3]=s,e[l*3+1]=s,e[l*3+2]=s}}if(n.calculateNormals){let r=St(t.vertexCount,t.indices,t.positions,t.normals,t.uv0s,t.colors,e);h(r.normals)&&(t.normals=r.normals,h(r.vertexCount)&&(t.vertexCount=r.vertexCount,t.indices=r.indices,t.positions=r.positions,t.uv0s=r.uv0s,t.colors=r.colors,e=r.featureIndex))}let o=vt(t.vertexCount,t.indices,t.positions,t.normals,t.uv0s,t.colors,e,n),a={positions:t.positions,indices:t.indices,featureIndex:e,sourceURL:n.url,cartesianCenter:n.cartesianCenter,parentRotation:n.parentRotation};return o._customAttributes=a,{meshData:o}}async function Xt(n,t){let e=n.webAssemblyConfig;return h(e)&&h(e.wasmBinaryFile)?ut=await(0,at.default)(e):ut=await(0,at.default)(),!0}function Yt(n,t){let e=n.webAssemblyConfig;return h(e)?Xt(n,t):Ht(n,t)}var re=ht(Yt);export{re as default}; diff --git a/public/Cesium/Workers/gaussianSplatSorter.js b/public/Cesium/Workers/gaussianSplatSorter.js new file mode 100644 index 000000000..34fe2afda --- /dev/null +++ b/public/Cesium/Workers/gaussianSplatSorter.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{b as t,c as f}from"./chunk-M3MGYQSL.js";import{a as s}from"./chunk-WZDE3RYP.js";import{e as o}from"./chunk-VTAIKJXX.js";async function m(i,e){let n=i.webAssemblyConfig;if(o(n)&&o(n.wasmBinary))return f({module:n.wasmBinary}),!0}function c(i,e){let n=i.webAssemblyConfig;if(o(n))return m(i,e);let{primitive:r,sortType:a}=i;if(a==="Index")return t(r.positions,r.modelView,r.count)}var y=s(c);export{y as default}; diff --git a/public/Cesium/Workers/gaussianSplatTextureGenerator.js b/public/Cesium/Workers/gaussianSplatTextureGenerator.js new file mode 100644 index 000000000..9eaec6c5b --- /dev/null +++ b/public/Cesium/Workers/gaussianSplatTextureGenerator.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a,c}from"./chunk-M3MGYQSL.js";import{a as i}from"./chunk-WZDE3RYP.js";import{e as n}from"./chunk-VTAIKJXX.js";async function u(t,s){let e=t.webAssemblyConfig;return n(e)&&n(e.wasmBinary)?(c({module:e.wasmBinary}),!0):!1}async function l(t,s){let e=t.webAssemblyConfig;if(n(e))return u(t,s);let{attributes:r,count:f}=t,o=a(r.positions,r.scales,r.rotations,r.colors,f);return{data:o.data,width:o.width,height:o.height}}var w=i(l);export{w as default}; diff --git a/public/Cesium/Workers/transcodeKTX2.js b/public/Cesium/Workers/transcodeKTX2.js new file mode 100644 index 000000000..53715365f --- /dev/null +++ b/public/Cesium/Workers/transcodeKTX2.js @@ -0,0 +1,56 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as on}from"./chunk-WZDE3RYP.js";import{a as f}from"./chunk-OSW76XDF.js";import{a as re}from"./chunk-ED5JPB3S.js";import{b as sn}from"./chunk-LEYMRMBK.js";import{a as Vt,c as rr,d as sr,e as Le}from"./chunk-VTAIKJXX.js";var cn=rr((ot,pt)=>{var Pt=function(){var s=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(s=s||__filename),function(T){T=T||{};var r=typeof T<"u"?T:{},M,B;r.ready=new Promise(function(e,t){M=e,B=t});var E={},F;for(F in r)r.hasOwnProperty(F)&&(E[F]=r[F]);var L=[],D="./this.program",b=function(e,t){throw t},N=!1,d=!1,P=!1,Q=!1;N=typeof window=="object",d=typeof importScripts=="function",P=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",Q=!N&&!P&&!d;var O="";function W(e){return r.locateFile?r.locateFile(e,O):O+e}var J,ae,j,Ke,Ce,Fe;P?(d?O=Vt("path").dirname(O)+"/":O=__dirname+"/",J=function(t,n){return Ce||(Ce=Vt("fs")),Fe||(Fe=Vt("path")),t=Fe.normalize(t),Ce.readFileSync(t,n?null:"utf8")},j=function(t){var n=J(t,!0);return n.buffer||(n=new Uint8Array(n)),I(n.buffer),n},process.argv.length>1&&(D=process.argv[1].replace(/\\/g,"/")),L=process.argv.slice(2),process.on("uncaughtException",function(e){if(!(e instanceof nr))throw e}),process.on("unhandledRejection",Oe),b=function(e){process.exit(e)},r.inspect=function(){return"[Emscripten Module object]"}):Q?(typeof read<"u"&&(J=function(t){return read(t)}),j=function(t){var n;return typeof readbuffer=="function"?new Uint8Array(readbuffer(t)):(n=read(t,"binary"),I(typeof n=="object"),n)},typeof scriptArgs<"u"?L=scriptArgs:typeof arguments<"u"&&(L=arguments),typeof quit=="function"&&(b=function(e){quit(e)}),typeof print<"u"&&(typeof console>"u"&&(console={}),console.log=print,console.warn=console.error=typeof printErr<"u"?printErr:print)):(N||d)&&(d?O=self.location.href:typeof document<"u"&&document.currentScript&&(O=document.currentScript.src),s&&(O=s),O.indexOf("blob:")!==0?O=O.substr(0,O.lastIndexOf("/")+1):O="",J=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},d&&(j=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),ae=function(e,t,n){var _=new XMLHttpRequest;_.open("GET",e,!0),_.responseType="arraybuffer",_.onload=function(){if(_.status==200||_.status==0&&_.response){t(_.response);return}n()},_.onerror=n,_.send(null)},Ke=function(e){document.title=e});var it=r.print||console.log.bind(console),se=r.printErr||console.warn.bind(console);for(F in E)E.hasOwnProperty(F)&&(r[F]=E[F]);E=null,r.arguments&&(L=r.arguments),r.thisProgram&&(D=r.thisProgram),r.quit&&(b=r.quit);var Rt=0,Ut=function(e){Rt=e},oe;r.wasmBinary&&(oe=r.wasmBinary);var On=r.noExitRuntime||!0;typeof WebAssembly!="object"&&Oe("no native wasm support detected");var de,Ie=!1,ce;function I(e,t){e||Oe("Assertion failed: "+t)}var be=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function we(e,t,n){for(var _=t+n,o=t;e[o]&&!(o>=_);)++o;if(o-t>16&&e.subarray&&be)return be.decode(e.subarray(t,o));for(var c="";t<o;){var A=e[t++];if(!(A&128)){c+=String.fromCharCode(A);continue}var R=e[t++]&63;if((A&224)==192){c+=String.fromCharCode((A&31)<<6|R);continue}var a=e[t++]&63;if((A&240)==224?A=(A&15)<<12|R<<6|a:A=(A&7)<<18|R<<12|a<<6|e[t++]&63,A<65536)c+=String.fromCharCode(A);else{var u=A-65536;c+=String.fromCharCode(55296|u>>10,56320|u&1023)}}return c}function Ge(e,t){return e?we(p,e,t):""}function He(e,t,n,_){if(!(_>0))return 0;for(var o=n,c=n+_-1,A=0;A<e.length;++A){var R=e.charCodeAt(A);if(R>=55296&&R<=57343){var a=e.charCodeAt(++A);R=65536+((R&1023)<<10)|a&1023}if(R<=127){if(n>=c)break;t[n++]=R}else if(R<=2047){if(n+1>=c)break;t[n++]=192|R>>6,t[n++]=128|R&63}else if(R<=65535){if(n+2>=c)break;t[n++]=224|R>>12,t[n++]=128|R>>6&63,t[n++]=128|R&63}else{if(n+3>=c)break;t[n++]=240|R>>18,t[n++]=128|R>>12&63,t[n++]=128|R>>6&63,t[n++]=128|R&63}}return t[n]=0,n-o}function Xe(e,t,n){return He(e,p,t,n)}function at(e){for(var t=0,n=0;n<e.length;++n){var _=e.charCodeAt(n);_>=55296&&_<=57343&&(_=65536+((_&1023)<<10)|e.charCodeAt(++n)&1023),_<=127?++t:_<=2047?t+=2:_<=65535?t+=3:t+=4}return t}var Se=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function xe(e,t){for(var n=e,_=n>>1,o=_+t/2;!(_>=o)&&Ae[_];)++_;if(n=_<<1,n-e>32&&Se)return Se.decode(p.subarray(e,n));for(var c="",A=0;!(A>=t/2);++A){var R=k[e+A*2>>1];if(R==0)break;c+=String.fromCharCode(R)}return c}function ke(e,t,n){if(n===void 0&&(n=2147483647),n<2)return 0;n-=2;for(var _=t,o=n<e.length*2?n/2:e.length,c=0;c<o;++c){var A=e.charCodeAt(c);k[t>>1]=A,t+=2}return k[t>>1]=0,t-_}function $e(e){return e.length*2}function ct(e,t){for(var n=0,_="";!(n>=t/4);){var o=m[e+n*4>>2];if(o==0)break;if(++n,o>=65536){var c=o-65536;_+=String.fromCharCode(55296|c>>10,56320|c&1023)}else _+=String.fromCharCode(o)}return _}function At(e,t,n){if(n===void 0&&(n=2147483647),n<4)return 0;for(var _=t,o=_+n-4,c=0;c<e.length;++c){var A=e.charCodeAt(c);if(A>=55296&&A<=57343){var R=e.charCodeAt(++c);A=65536+((A&1023)<<10)|R&1023}if(m[t>>2]=A,t+=4,t+4>o)break}return m[t>>2]=0,t-_}function Tt(e){for(var t=0,n=0;n<e.length;++n){var _=e.charCodeAt(n);_>=55296&&_<=57343&&++n,t+=4}return t}function ut(e,t){return e%t>0&&(e+=t-e%t),e}var Ne,v,p,k,Ae,m,z,vt,ht;function yt(e){Ne=e,r.HEAP8=v=new Int8Array(e),r.HEAP16=k=new Int16Array(e),r.HEAP32=m=new Int32Array(e),r.HEAPU8=p=new Uint8Array(e),r.HEAPU16=Ae=new Uint16Array(e),r.HEAPU32=z=new Uint32Array(e),r.HEAPF32=vt=new Float32Array(e),r.HEAPF64=ht=new Float64Array(e)}var ur=r.INITIAL_MEMORY||16777216,Ee,gt=[],Lt=[],ln=[],mt=[],Bn=!1;function Mn(){if(r.preRun)for(typeof r.preRun=="function"&&(r.preRun=[r.preRun]);r.preRun.length;)dn(r.preRun.shift());We(gt)}function Kn(){Bn=!0,We(Lt)}function Cn(){We(ln)}function Fn(){if(r.postRun)for(typeof r.postRun=="function"&&(r.postRun=[r.postRun]);r.postRun.length;)Sn(r.postRun.shift());We(mt)}function dn(e){gt.unshift(e)}function Gn(e){Lt.unshift(e)}function Sn(e){mt.unshift(e)}var Te=0,ft=null,Ve=null;function Nn(e){Te++,r.monitorRunDependencies&&r.monitorRunDependencies(Te)}function En(e){if(Te--,r.monitorRunDependencies&&r.monitorRunDependencies(Te),Te==0&&(ft!==null&&(clearInterval(ft),ft=null),Ve)){var t=Ve;Ve=null,t()}}r.preloadedImages={},r.preloadedAudios={};function Oe(e){r.onAbort&&r.onAbort(e),e+="",se(e),Ie=!0,ce=1,e="abort("+e+"). Build with -s ASSERTIONS=1 for more info.";var t=new WebAssembly.RuntimeError(e);throw B(t),t}function Dt(e,t){return String.prototype.startsWith?e.startsWith(t):e.indexOf(t)===0}var Vn="data:application/octet-stream;base64,";function It(e){return Dt(e,Vn)}var Pn="file://";function bt(e){return Dt(e,Pn)}var X="basis_transcoder.wasm";It(X)||(X=W(X));function wt(e){try{if(e==X&&oe)return new Uint8Array(oe);if(j)return j(e);throw"both async and sync fetching of the wasm failed"}catch(t){Oe(t)}}function pn(){if(!oe&&(N||d)){if(typeof fetch=="function"&&!bt(X))return fetch(X,{credentials:"same-origin"}).then(function(e){if(!e.ok)throw"failed to load wasm binary file at '"+X+"'";return e.arrayBuffer()}).catch(function(){return wt(X)});if(ae)return new Promise(function(e,t){ae(X,function(n){e(new Uint8Array(n))},t)})}return Promise.resolve().then(function(){return wt(X)})}function Un(){var e={a:Q_};function t(A,R){var a=A.exports;r.asm=a,de=r.asm.K,yt(de.buffer),Ee=r.asm.O,Gn(r.asm.L),En("wasm-instantiate")}Nn("wasm-instantiate");function n(A){t(A.instance)}function _(A){return pn().then(function(R){var a=WebAssembly.instantiate(R,e);return a}).then(A,function(R){se("failed to asynchronously prepare wasm: "+R),Oe(R)})}function o(){return!oe&&typeof WebAssembly.instantiateStreaming=="function"&&!It(X)&&!bt(X)&&typeof fetch=="function"?fetch(X,{credentials:"same-origin"}).then(function(A){var R=WebAssembly.instantiateStreaming(A,e);return R.then(n,function(a){return se("wasm streaming compile failed: "+a),se("falling back to ArrayBuffer instantiation"),_(n)})}):_(n)}if(r.instantiateWasm)try{var c=r.instantiateWasm(e,t);return c}catch(A){return se("Module.instantiateWasm callback failed with error: "+A),!1}return o().catch(B),{}}function We(e){for(;e.length>0;){var t=e.shift();if(typeof t=="function"){t(r);continue}var n=t.func;typeof n=="number"?t.arg===void 0?Ee.get(n)():Ee.get(n)(t.arg):n(t.arg===void 0?null:t.arg)}}var je={};function Ye(e){for(;e.length;){var t=e.pop(),n=e.pop();n(t)}}function Pe(e){return this.fromWireType(z[e>>2])}var le={},ue={},ze={},vn=48,hn=57;function qe(e){if(e===void 0)return"_unknown";e=e.replace(/[^a-zA-Z0-9_]/g,"$");var t=e.charCodeAt(0);return t>=vn&&t<=hn?"_"+e:e}function Ze(e,t){return e=qe(e),new Function("body","return function "+e+`() { + "use strict"; return body.apply(this, arguments); +}; +`)(t)}function Ot(e,t){var n=Ze(t,function(_){this.name=t,this.message=_;var o=new Error(_).stack;o!==void 0&&(this.stack=this.toString()+` +`+o.replace(/^Error(:[^\n]*)?\n/,""))});return n.prototype=Object.create(e.prototype),n.prototype.constructor=n,n.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},n}var Ht=void 0;function Qe(e){throw new Ht(e)}function ie(e,t,n){e.forEach(function(R){ze[R]=t});function _(R){var a=n(R);a.length!==e.length&&Qe("Mismatched type converter count");for(var u=0;u<e.length;++u)q(e[u],a[u])}var o=new Array(t.length),c=[],A=0;t.forEach(function(R,a){ue.hasOwnProperty(R)?o[a]=ue[R]:(c.push(R),le.hasOwnProperty(R)||(le[R]=[]),le[R].push(function(){o[a]=ue[R],++A,A===c.length&&_(o)}))}),c.length===0&&_(o)}function yn(e){var t=je[e];delete je[e];var n=t.rawConstructor,_=t.rawDestructor,o=t.fields,c=o.map(function(A){return A.getterReturnType}).concat(o.map(function(A){return A.setterArgumentType}));ie([e],c,function(A){var R={};return o.forEach(function(a,u){var l=a.fieldName,K=A[u],S=a.getter,V=a.getterContext,g=A[u+o.length],w=a.setter,$=a.setterContext;R[l]={read:function(Z){return K.fromWireType(S(V,Z))},write:function(Z,ge){var _e=[];w($,Z,g.toWireType(_e,ge)),Ye(_e)}}}),[{name:t.name,fromWireType:function(a){var u={};for(var l in R)u[l]=R[l].read(a);return _(a),u},toWireType:function(a,u){for(var l in R)if(!(l in u))throw new TypeError('Missing field: "'+l+'"');var K=n();for(l in R)R[l].write(K,u[l]);return a!==null&&a.push(_,K),K},argPackAdvance:8,readValueFromPointer:Pe,destructorFunction:_}]})}function Je(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}function gn(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Xt=e}var Xt=void 0;function h(e){for(var t="",n=e;p[n];)t+=Xt[p[n++]];return t}var Be=void 0;function G(e){throw new Be(e)}function q(e,t,n){if(n=n||{},!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var _=t.name;if(e||G('type "'+_+'" must have a positive integer typeid pointer'),ue.hasOwnProperty(e)){if(n.ignoreDuplicateRegistrations)return;G("Cannot register type '"+_+"' twice")}if(ue[e]=t,delete ze[e],le.hasOwnProperty(e)){var o=le[e];delete le[e],o.forEach(function(c){c()})}}function Ln(e,t,n,_,o){var c=Je(n);t=h(t),q(e,{name:t,fromWireType:function(A){return!!A},toWireType:function(A,R){return R?_:o},argPackAdvance:8,readValueFromPointer:function(A){var R;if(n===1)R=v;else if(n===2)R=k;else if(n===4)R=m;else throw new TypeError("Unknown boolean type size: "+t);return this.fromWireType(R[A>>c])},destructorFunction:null})}function mn(e){if(!(this instanceof Re)||!(e instanceof Re))return!1;for(var t=this.$$.ptrType.registeredClass,n=this.$$.ptr,_=e.$$.ptrType.registeredClass,o=e.$$.ptr;t.baseClass;)n=t.upcast(n),t=t.baseClass;for(;_.baseClass;)o=_.upcast(o),_=_.baseClass;return t===_&&n===o}function Dn(e){return{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}}function lt(e){function t(n){return n.$$.ptrType.registeredClass.name}G(t(e)+" instance already deleted")}var Bt=!1;function xt(e){}function In(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}function kt(e){e.count.value-=1;var t=e.count.value===0;t&&In(e)}function pe(e){return typeof FinalizationGroup>"u"?(pe=function(t){return t},e):(Bt=new FinalizationGroup(function(t){for(var n=t.next();!n.done;n=t.next()){var _=n.value;_.ptr?kt(_):console.warn("object already deleted: "+_.ptr)}}),pe=function(t){return Bt.register(t,t.$$,t.$$),t},xt=function(t){Bt.unregister(t.$$)},pe(e))}function bn(){if(this.$$.ptr||lt(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=pe(Object.create(Object.getPrototypeOf(this),{$$:{value:Dn(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e}function wn(){this.$$.ptr||lt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&G("Object already scheduled for deletion"),xt(this),kt(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Hn(){return!this.$$.ptr}var Ue=void 0,ve=[];function Mt(){for(;ve.length;){var e=ve.pop();e.$$.deleteScheduled=!1,e.delete()}}function Xn(){return this.$$.ptr||lt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&G("Object already scheduled for deletion"),ve.push(this),ve.length===1&&Ue&&Ue(Mt),this.$$.deleteScheduled=!0,this}function xn(){Re.prototype.isAliasOf=mn,Re.prototype.clone=bn,Re.prototype.delete=wn,Re.prototype.isDeleted=Hn,Re.prototype.deleteLater=Xn}function Re(){}var $t={};function Wt(e,t,n){if(e[t].overloadTable===void 0){var _=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||G("Function '"+n+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[_.argCount]=_}}function Kt(e,t,n){r.hasOwnProperty(e)?((n===void 0||r[e].overloadTable!==void 0&&r[e].overloadTable[n]!==void 0)&&G("Cannot register public name '"+e+"' twice"),Wt(r,e,e),r.hasOwnProperty(n)&&G("Cannot register multiple overloads of a function with the same number of arguments ("+n+")!"),r[e].overloadTable[n]=t):(r[e]=t,n!==void 0&&(r[e].numArguments=n))}function kn(e,t,n,_,o,c,A,R){this.name=e,this.constructor=t,this.instancePrototype=n,this.rawDestructor=_,this.baseClass=o,this.getActualType=c,this.upcast=A,this.downcast=R,this.pureVirtualFunctions=[]}function Ct(e,t,n){for(;t!==n;)t.upcast||G("Expected null or instance of "+n.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function $n(e,t){if(t===null)return this.isReference&&G("null is not a valid "+this.name),0;t.$$||G('Cannot pass "'+Me(t)+'" as a '+this.name),t.$$.ptr||G("Cannot pass deleted object as a pointer of type "+this.name);var n=t.$$.ptrType.registeredClass,_=Ct(t.$$.ptr,n,this.registeredClass);return _}function Wn(e,t){var n;if(t===null)return this.isReference&&G("null is not a valid "+this.name),this.isSmartPointer?(n=this.rawConstructor(),e!==null&&e.push(this.rawDestructor,n),n):0;t.$$||G('Cannot pass "'+Me(t)+'" as a '+this.name),t.$$.ptr||G("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&G("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var _=t.$$.ptrType.registeredClass;if(n=Ct(t.$$.ptr,_,this.registeredClass),this.isSmartPointer)switch(t.$$.smartPtr===void 0&&G("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?n=t.$$.smartPtr:G("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:n=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)n=t.$$.smartPtr;else{var o=t.clone();n=this.rawShare(n,te(function(){o.delete()})),e!==null&&e.push(this.rawDestructor,n)}break;default:G("Unsupporting sharing policy")}return n}function jn(e,t){if(t===null)return this.isReference&&G("null is not a valid "+this.name),0;t.$$||G('Cannot pass "'+Me(t)+'" as a '+this.name),t.$$.ptr||G("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&G("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var n=t.$$.ptrType.registeredClass,_=Ct(t.$$.ptr,n,this.registeredClass);return _}function Yn(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function zn(e){this.rawDestructor&&this.rawDestructor(e)}function qn(e){e!==null&&e.delete()}function jt(e,t,n){if(t===n)return e;if(n.baseClass===void 0)return null;var _=jt(e,t,n.baseClass);return _===null?null:n.downcast(_)}function Zn(){return Object.keys(he).length}function Qn(){var e=[];for(var t in he)he.hasOwnProperty(t)&&e.push(he[t]);return e}function Jn(e){Ue=e,ve.length&&Ue&&Ue(Mt)}function e_(){r.getInheritedInstanceCount=Zn,r.getLiveInheritedInstances=Qn,r.flushPendingDeletes=Mt,r.setDelayFunction=Jn}var he={};function t_(e,t){for(t===void 0&&G("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}function n_(e,t){return t=t_(e,t),he[t]}function et(e,t){(!t.ptrType||!t.ptr)&&Qe("makeClassHandle requires ptr and ptrType");var n=!!t.smartPtrType,_=!!t.smartPtr;return n!==_&&Qe("Both smartPtrType and smartPtr must be specified"),t.count={value:1},pe(Object.create(e,{$$:{value:t}}))}function __(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var n=n_(this.registeredClass,t);if(n!==void 0){if(n.$$.count.value===0)return n.$$.ptr=t,n.$$.smartPtr=e,n.clone();var _=n.clone();return this.destructor(e),_}function o(){return this.isSmartPointer?et(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):et(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var c=this.registeredClass.getActualType(t),A=$t[c];if(!A)return o.call(this);var R;this.isConst?R=A.constPointerType:R=A.pointerType;var a=jt(t,this.registeredClass,R.registeredClass);return a===null?o.call(this):this.isSmartPointer?et(R.registeredClass.instancePrototype,{ptrType:R,ptr:a,smartPtrType:this,smartPtr:e}):et(R.registeredClass.instancePrototype,{ptrType:R,ptr:a})}function r_(){ee.prototype.getPointee=Yn,ee.prototype.destructor=zn,ee.prototype.argPackAdvance=8,ee.prototype.readValueFromPointer=Pe,ee.prototype.deleteObject=qn,ee.prototype.fromWireType=__}function ee(e,t,n,_,o,c,A,R,a,u,l){this.name=e,this.registeredClass=t,this.isReference=n,this.isConst=_,this.isSmartPointer=o,this.pointeeType=c,this.sharingPolicy=A,this.rawGetPointee=R,this.rawConstructor=a,this.rawShare=u,this.rawDestructor=l,!o&&t.baseClass===void 0?_?(this.toWireType=$n,this.destructorFunction=null):(this.toWireType=jn,this.destructorFunction=null):this.toWireType=Wn}function Yt(e,t,n){r.hasOwnProperty(e)||Qe("Replacing nonexistant public symbol"),r[e].overloadTable!==void 0&&n!==void 0?r[e].overloadTable[n]=t:(r[e]=t,r[e].argCount=n)}function s_(e,t,n){var _=r["dynCall_"+e];return n&&n.length?_.apply(null,[t].concat(n)):_.call(null,t)}function o_(e,t,n){return e.indexOf("j")!=-1?s_(e,t,n):Ee.get(t).apply(null,n)}function i_(e,t){var n=[];return function(){n.length=arguments.length;for(var _=0;_<arguments.length;_++)n[_]=arguments[_];return o_(e,t,n)}}function Y(e,t){e=h(e);function n(){return e.indexOf("j")!=-1?i_(e,t):Ee.get(t)}var _=n();return typeof _!="function"&&G("unknown function pointer with signature "+e+": "+t),_}var zt=void 0;function qt(e){var t=tn(e),n=h(t);return ne(t),n}function tt(e,t){var n=[],_={};function o(c){if(!_[c]&&!ue[c]){if(ze[c]){ze[c].forEach(o);return}n.push(c),_[c]=!0}}throw t.forEach(o),new zt(e+": "+n.map(qt).join([", "]))}function R_(e,t,n,_,o,c,A,R,a,u,l,K,S){l=h(l),c=Y(o,c),R&&(R=Y(A,R)),u&&(u=Y(a,u)),S=Y(K,S);var V=qe(l);Kt(V,function(){tt("Cannot construct "+l+" due to unbound types",[_])}),ie([e,t,n],_?[_]:[],function(g){g=g[0];var w,$;_?(w=g.registeredClass,$=w.instancePrototype):$=Re.prototype;var Z=Ze(V,function(){if(Object.getPrototypeOf(this)!==ge)throw new Be("Use 'new' to construct "+l);if(_e.constructor_body===void 0)throw new Be(l+" has no accessible constructor");var rn=_e.constructor_body[arguments.length];if(rn===void 0)throw new Be("Tried to invoke ctor of "+l+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(_e.constructor_body).toString()+") parameters instead!");return rn.apply(this,arguments)}),ge=Object.create($,{constructor:{value:Z}});Z.prototype=ge;var _e=new kn(l,Z,ge,S,w,c,R,u),_r=new ee(l,_e,!0,!1,!1),nn=new ee(l+"*",_e,!1,!1,!1),_n=new ee(l+" const*",_e,!1,!0,!1);return $t[e]={pointerType:nn,constPointerType:_n},Yt(V,Z),[_r,nn,_n]})}function Ft(e,t){for(var n=[],_=0;_<e;_++)n.push(m[(t>>2)+_]);return n}function a_(e,t,n,_,o,c){I(t>0);var A=Ft(t,n);o=Y(_,o);var R=[c],a=[];ie([],[e],function(u){u=u[0];var l="constructor "+u.name;if(u.registeredClass.constructor_body===void 0&&(u.registeredClass.constructor_body=[]),u.registeredClass.constructor_body[t-1]!==void 0)throw new Be("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+u.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return u.registeredClass.constructor_body[t-1]=function(){tt("Cannot construct "+u.name+" due to unbound types",A)},ie([],A,function(K){return u.registeredClass.constructor_body[t-1]=function(){arguments.length!==t-1&&G(l+" called with "+arguments.length+" arguments, expected "+(t-1)),a.length=0,R.length=t;for(var V=1;V<t;++V)R[V]=K[V].toWireType(a,arguments[V-1]);var g=o.apply(null,R);return Ye(a),K[0].fromWireType(g)},[]}),[]})}function Zt(e,t){if(!(e instanceof Function))throw new TypeError("new_ called with constructor type "+typeof e+" which is not a function");var n=Ze(e.name||"unknownFunctionName",function(){});n.prototype=e.prototype;var _=new n,o=e.apply(_,t);return o instanceof Object?o:_}function Qt(e,t,n,_,o){var c=t.length;c<2&&G("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var A=t[1]!==null&&n!==null,R=!1,a=1;a<t.length;++a)if(t[a]!==null&&t[a].destructorFunction===void 0){R=!0;break}for(var u=t[0].name!=="void",l="",K="",a=0;a<c-2;++a)l+=(a!==0?", ":"")+"arg"+a,K+=(a!==0?", ":"")+"arg"+a+"Wired";var S="return function "+qe(e)+"("+l+`) { +if (arguments.length !== `+(c-2)+`) { +throwBindingError('function `+e+" called with ' + arguments.length + ' arguments, expected "+(c-2)+` args!'); +} +`;R&&(S+=`var destructors = []; +`);var V=R?"destructors":"null",g=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],w=[G,_,o,Ye,t[0],t[1]];A&&(S+="var thisWired = classParam.toWireType("+V+`, this); +`);for(var a=0;a<c-2;++a)S+="var arg"+a+"Wired = argType"+a+".toWireType("+V+", arg"+a+"); // "+t[a+2].name+` +`,g.push("argType"+a),w.push(t[a+2]);if(A&&(K="thisWired"+(K.length>0?", ":"")+K),S+=(u?"var rv = ":"")+"invoker(fn"+(K.length>0?", ":"")+K+`); +`,R)S+=`runDestructors(destructors); +`;else for(var a=A?1:2;a<t.length;++a){var $=a===1?"thisWired":"arg"+(a-2)+"Wired";t[a].destructorFunction!==null&&(S+=$+"_dtor("+$+"); // "+t[a].name+` +`,g.push($+"_dtor"),w.push(t[a].destructorFunction))}u&&(S+=`var ret = retType.fromWireType(rv); +return ret; +`),S+=`} +`,g.push(S);var Z=Zt(Function,g).apply(null,w);return Z}function c_(e,t,n,_,o,c,A,R){var a=Ft(n,_);t=h(t),c=Y(o,c),ie([],[e],function(u){u=u[0];var l=u.name+"."+t;R&&u.registeredClass.pureVirtualFunctions.push(t);function K(){tt("Cannot call "+l+" due to unbound types",a)}var S=u.registeredClass.instancePrototype,V=S[t];return V===void 0||V.overloadTable===void 0&&V.className!==u.name&&V.argCount===n-2?(K.argCount=n-2,K.className=u.name,S[t]=K):(Wt(S,t,l),S[t].overloadTable[n-2]=K),ie([],a,function(g){var w=Qt(l,g,u,c,A);return S[t].overloadTable===void 0?(w.argCount=n-2,S[t]=w):S[t].overloadTable[n-2]=w,[]}),[]})}function A_(e,t,n){e=h(e),ie([],[t],function(_){return _=_[0],r[e]=_.fromWireType(n),[]})}var dt=[],x=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function Gt(e){e>4&&--x[e].refcount===0&&(x[e]=void 0,dt.push(e))}function T_(){for(var e=0,t=5;t<x.length;++t)x[t]!==void 0&&++e;return e}function u_(){for(var e=5;e<x.length;++e)if(x[e]!==void 0)return x[e];return null}function f_(){r.count_emval_handles=T_,r.get_first_emval=u_}function te(e){switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:{var t=dt.length?dt.pop():x.length;return x[t]={refcount:1,value:e},t}}}function O_(e,t){t=h(t),q(e,{name:t,fromWireType:function(n){var _=x[n].value;return Gt(n),_},toWireType:function(n,_){return te(_)},argPackAdvance:8,readValueFromPointer:Pe,destructorFunction:null})}function l_(e,t,n){switch(t){case 0:return function(_){var o=n?v:p;return this.fromWireType(o[_])};case 1:return function(_){var o=n?k:Ae;return this.fromWireType(o[_>>1])};case 2:return function(_){var o=n?m:z;return this.fromWireType(o[_>>2])};default:throw new TypeError("Unknown integer type: "+e)}}function B_(e,t,n,_){var o=Je(n);t=h(t);function c(){}c.values={},q(e,{name:t,constructor:c,fromWireType:function(A){return this.constructor.values[A]},toWireType:function(A,R){return R.value},argPackAdvance:8,readValueFromPointer:l_(t,o,_),destructorFunction:null}),Kt(t,c)}function nt(e,t){var n=ue[e];return n===void 0&&G(t+" has unknown type "+qt(e)),n}function M_(e,t,n){var _=nt(e,"enum");t=h(t);var o=_.constructor,c=Object.create(_.constructor.prototype,{value:{value:n},constructor:{value:Ze(_.name+"_"+t,function(){})}});o.values[n]=c,o[t]=c}function Me(e){if(e===null)return"null";var t=typeof e;return t==="object"||t==="array"||t==="function"?e.toString():""+e}function K_(e,t){switch(t){case 2:return function(n){return this.fromWireType(vt[n>>2])};case 3:return function(n){return this.fromWireType(ht[n>>3])};default:throw new TypeError("Unknown float type: "+e)}}function C_(e,t,n){var _=Je(n);t=h(t),q(e,{name:t,fromWireType:function(o){return o},toWireType:function(o,c){if(typeof c!="number"&&typeof c!="boolean")throw new TypeError('Cannot convert "'+Me(c)+'" to '+this.name);return c},argPackAdvance:8,readValueFromPointer:K_(t,_),destructorFunction:null})}function F_(e,t,n,_,o,c){var A=Ft(t,n);e=h(e),o=Y(_,o),Kt(e,function(){tt("Cannot call "+e+" due to unbound types",A)},t-1),ie([],A,function(R){var a=[R[0],null].concat(R.slice(1));return Yt(e,Qt(e,a,null,o,c),t-1),[]})}function d_(e,t,n){switch(t){case 0:return n?function(o){return v[o]}:function(o){return p[o]};case 1:return n?function(o){return k[o>>1]}:function(o){return Ae[o>>1]};case 2:return n?function(o){return m[o>>2]}:function(o){return z[o>>2]};default:throw new TypeError("Unknown integer type: "+e)}}function G_(e,t,n,_,o){t=h(t),o===-1&&(o=4294967295);var c=Je(n),A=function(u){return u};if(_===0){var R=32-8*n;A=function(u){return u<<R>>>R}}var a=t.indexOf("unsigned")!=-1;q(e,{name:t,fromWireType:A,toWireType:function(u,l){if(typeof l!="number"&&typeof l!="boolean")throw new TypeError('Cannot convert "'+Me(l)+'" to '+this.name);if(l<_||l>o)throw new TypeError('Passing a number "'+Me(l)+'" from JS side to C/C++ side to an argument of type "'+t+'", which is outside the valid range ['+_+", "+o+"]!");return a?l>>>0:l|0},argPackAdvance:8,readValueFromPointer:d_(t,c,_!==0),destructorFunction:null})}function S_(e,t,n){var _=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],o=_[t];function c(A){A=A>>2;var R=z,a=R[A],u=R[A+1];return new o(Ne,u,a)}n=h(n),q(e,{name:n,fromWireType:c,argPackAdvance:8,readValueFromPointer:c},{ignoreDuplicateRegistrations:!0})}function N_(e,t){t=h(t);var n=t==="std::string";q(e,{name:t,fromWireType:function(_){var o=z[_>>2],c;if(n)for(var A=_+4,R=0;R<=o;++R){var a=_+4+R;if(R==o||p[a]==0){var u=a-A,l=Ge(A,u);c===void 0?c=l:(c+="\0",c+=l),A=a+1}}else{for(var K=new Array(o),R=0;R<o;++R)K[R]=String.fromCharCode(p[_+4+R]);c=K.join("")}return ne(_),c},toWireType:function(_,o){o instanceof ArrayBuffer&&(o=new Uint8Array(o));var c,A=typeof o=="string";A||o instanceof Uint8Array||o instanceof Uint8ClampedArray||o instanceof Int8Array||G("Cannot pass non-string to std::string"),n&&A?c=function(){return at(o)}:c=function(){return o.length};var R=c(),a=Nt(4+R+1);if(z[a>>2]=R,n&&A)Xe(o,a+4,R+1);else if(A)for(var u=0;u<R;++u){var l=o.charCodeAt(u);l>255&&(ne(a),G("String has UTF-16 code units that do not fit in 8 bits")),p[a+4+u]=l}else for(var u=0;u<R;++u)p[a+4+u]=o[u];return _!==null&&_.push(ne,a),a},argPackAdvance:8,readValueFromPointer:Pe,destructorFunction:function(_){ne(_)}})}function E_(e,t,n){n=h(n);var _,o,c,A,R;t===2?(_=xe,o=ke,A=$e,c=function(){return Ae},R=1):t===4&&(_=ct,o=At,A=Tt,c=function(){return z},R=2),q(e,{name:n,fromWireType:function(a){for(var u=z[a>>2],l=c(),K,S=a+4,V=0;V<=u;++V){var g=a+4+V*t;if(V==u||l[g>>R]==0){var w=g-S,$=_(S,w);K===void 0?K=$:(K+="\0",K+=$),S=g+t}}return ne(a),K},toWireType:function(a,u){typeof u!="string"&&G("Cannot pass non-string to C++ string type "+n);var l=A(u),K=Nt(4+l+t);return z[K>>2]=l>>R,o(u,K+4,l+t),a!==null&&a.push(ne,K),K},argPackAdvance:8,readValueFromPointer:Pe,destructorFunction:function(a){ne(a)}})}function V_(e,t,n,_,o,c){je[e]={name:h(t),rawConstructor:Y(n,_),rawDestructor:Y(o,c),fields:[]}}function P_(e,t,n,_,o,c,A,R,a,u){je[e].fields.push({fieldName:h(t),getterReturnType:n,getter:Y(_,o),getterContext:c,setterArgumentType:A,setter:Y(R,a),setterContext:u})}function p_(e,t){t=h(t),q(e,{isVoid:!0,name:t,argPackAdvance:0,fromWireType:function(){},toWireType:function(n,_){}})}function ye(e){return e||G("Cannot use deleted val. handle = "+e),x[e].value}function U_(e,t,n){e=ye(e),t=nt(t,"emval::as");var _=[],o=te(_);return m[n>>2]=o,t.toWireType(_,e)}var v_={};function _t(e){var t=v_[e];return t===void 0?h(e):t}var St=[];function h_(e,t,n,_){e=St[e],t=ye(t),n=_t(n),e(t,n,null,_)}function Jt(){return typeof globalThis=="object"?globalThis:function(){return Function}()("return this")()}function y_(e){return e===0?te(Jt()):(e=_t(e),te(Jt()[e]))}function g_(e){var t=St.length;return St.push(e),t}function L_(e,t){for(var n=new Array(e),_=0;_<e;++_)n[_]=nt(m[(t>>2)+_],"parameter "+_);return n}function m_(e,t){for(var n=L_(e,t),_=n[0],o=_.name+"_$"+n.slice(1).map(function(V){return V.name}).join("_")+"$",c=["retType"],A=[_],R="",a=0;a<e-1;++a)R+=(a!==0?", ":"")+"arg"+a,c.push("argType"+a),A.push(n[1+a]);for(var u=qe("methodCaller_"+o),l="return function "+u+`(handle, name, destructors, args) { +`,K=0,a=0;a<e-1;++a)l+=" var arg"+a+" = argType"+a+".readValueFromPointer(args"+(K?"+"+K:"")+`); +`,K+=n[a+1].argPackAdvance;l+=" var rv = handle[name]("+R+`); +`;for(var a=0;a<e-1;++a)n[a+1].deleteObject&&(l+=" argType"+a+".deleteObject(arg"+a+`); +`);_.isVoid||(l+=` return retType.toWireType(destructors, rv); +`),l+=`}; +`,c.push(l);var S=Zt(Function,c).apply(null,A);return g_(S)}function D_(e){return e=_t(e),te(r[e])}function I_(e,t){return e=ye(e),t=ye(t),te(e[t])}function b_(e){e>4&&(x[e].refcount+=1)}function w_(e){for(var t="",n=0;n<e;++n)t+=(n!==0?", ":"")+"arg"+n;for(var _="return function emval_allocator_"+e+`(constructor, argTypes, args) { +`,n=0;n<e;++n)_+="var argType"+n+" = requireRegisteredType(Module['HEAP32'][(argTypes >>> 2) + "+n+'], "parameter '+n+`"); +var arg`+n+" = argType"+n+`.readValueFromPointer(args); +args += argType`+n+`['argPackAdvance']; +`;return _+="var obj = new constructor("+t+`); +return __emval_register(obj); +} +`,new Function("requireRegisteredType","Module","__emval_register",_)(nt,r,te)}var en={};function H_(e,t,n,_){e=ye(e);var o=en[t];return o||(o=w_(t),en[t]=o),o(e,n,_)}function X_(e){return te(_t(e))}function x_(e){var t=x[e].value;Ye(t),Gt(e)}function k_(){Oe()}function $_(e,t,n){p.copyWithin(e,t,t+n)}function W_(e){try{return de.grow(e-Ne.byteLength+65535>>>16),yt(de.buffer),1}catch{}}function j_(e){var t=p.length;e=e>>>0;var n=2147483648;if(e>n)return!1;for(var _=1;_<=4;_*=2){var o=t*(1+.2/_);o=Math.min(o,e+100663296);var c=Math.min(n,ut(Math.max(e,o),65536)),A=W_(c);if(A)return!0}return!1}var rt={mappings:{},buffers:[null,[],[]],printChar:function(e,t){var n=rt.buffers[e];t===0||t===10?((e===1?it:se)(we(n,0)),n.length=0):n.push(t)},varargs:void 0,get:function(){rt.varargs+=4;var e=m[rt.varargs-4>>2];return e},getStr:function(e){var t=Ge(e);return t},get64:function(e,t){return e}};function Y_(e){return 0}function z_(e,t,n,_,o){}function q_(e,t,n,_){for(var o=0,c=0;c<n;c++){for(var A=m[t+c*8>>2],R=m[t+(c*8+4)>>2],a=0;a<R;a++)rt.printChar(e,p[A+a]);o+=R}return m[_>>2]=o,0}function Z_(e){Ut(e|0)}Ht=r.InternalError=Ot(Error,"InternalError"),gn(),Be=r.BindingError=Ot(Error,"BindingError"),xn(),r_(),e_(),zt=r.UnboundTypeError=Ot(Error,"UnboundTypeError"),f_();var Q_={t:yn,I:Ln,x:R_,w:a_,d:c_,k:A_,H:O_,n:B_,a:M_,A:C_,i:F_,j:G_,h:S_,B:N_,v:E_,u:V_,c:P_,J:p_,m:U_,s:h_,b:Gt,y:y_,p:m_,r:D_,e:I_,g:b_,q:H_,f:X_,l:x_,o:k_,E:$_,F:j_,G:Y_,C:z_,z:q_,D:Z_},fr=Un(),J_=r.___wasm_call_ctors=function(){return(J_=r.___wasm_call_ctors=r.asm.L).apply(null,arguments)},Nt=r._malloc=function(){return(Nt=r._malloc=r.asm.M).apply(null,arguments)},ne=r._free=function(){return(ne=r._free=r.asm.N).apply(null,arguments)},tn=r.___getTypeName=function(){return(tn=r.___getTypeName=r.asm.P).apply(null,arguments)},er=r.___embind_register_native_and_builtin_types=function(){return(er=r.___embind_register_native_and_builtin_types=r.asm.Q).apply(null,arguments)},tr=r.dynCall_jiji=function(){return(tr=r.dynCall_jiji=r.asm.R).apply(null,arguments)},st;function nr(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}Ve=function e(){st||Et(),st||(Ve=e)};function Et(e){if(e=e||L,Te>0||(Mn(),Te>0))return;function t(){st||(st=!0,r.calledRun=!0,!Ie&&(Kn(),Cn(),M(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),Fn()))}r.setStatus?(r.setStatus("Running..."),setTimeout(function(){setTimeout(function(){r.setStatus("")},1),t()},1)):t()}if(r.run=Et,r.preInit)for(typeof r.preInit=="function"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return Et(),T.ready}}();typeof ot=="object"&&typeof pt=="object"?pt.exports=Pt:typeof define=="function"&&define.amd?define([],function(){return Pt}):typeof ot=="object"&&(ot.BASIS=Pt)});var C={UNSIGNED_BYTE:f.UNSIGNED_BYTE,UNSIGNED_SHORT:f.UNSIGNED_SHORT,UNSIGNED_INT:f.UNSIGNED_INT,FLOAT:f.FLOAT,HALF_FLOAT:f.HALF_FLOAT_OES,UNSIGNED_INT_24_8:f.UNSIGNED_INT_24_8,UNSIGNED_SHORT_4_4_4_4:f.UNSIGNED_SHORT_4_4_4_4,UNSIGNED_SHORT_5_5_5_1:f.UNSIGNED_SHORT_5_5_5_1,UNSIGNED_SHORT_5_6_5:f.UNSIGNED_SHORT_5_6_5};C.toWebGLConstant=function(s,T){switch(s){case C.UNSIGNED_BYTE:return f.UNSIGNED_BYTE;case C.UNSIGNED_SHORT:return f.UNSIGNED_SHORT;case C.UNSIGNED_INT:return f.UNSIGNED_INT;case C.FLOAT:return f.FLOAT;case C.HALF_FLOAT:return T.webgl2?f.HALF_FLOAT:f.HALF_FLOAT_OES;case C.UNSIGNED_INT_24_8:return f.UNSIGNED_INT_24_8;case C.UNSIGNED_SHORT_4_4_4_4:return f.UNSIGNED_SHORT_4_4_4_4;case C.UNSIGNED_SHORT_5_5_5_1:return f.UNSIGNED_SHORT_5_5_5_1;case C.UNSIGNED_SHORT_5_6_5:return C.UNSIGNED_SHORT_5_6_5}};C.isPacked=function(s){return s===C.UNSIGNED_INT_24_8||s===C.UNSIGNED_SHORT_4_4_4_4||s===C.UNSIGNED_SHORT_5_5_5_1||s===C.UNSIGNED_SHORT_5_6_5};C.sizeInBytes=function(s){switch(s){case C.UNSIGNED_BYTE:return 1;case C.UNSIGNED_SHORT:case C.UNSIGNED_SHORT_4_4_4_4:case C.UNSIGNED_SHORT_5_5_5_1:case C.UNSIGNED_SHORT_5_6_5:case C.HALF_FLOAT:return 2;case C.UNSIGNED_INT:case C.FLOAT:case C.UNSIGNED_INT_24_8:return 4}};C.validate=function(s){return s===C.UNSIGNED_BYTE||s===C.UNSIGNED_SHORT||s===C.UNSIGNED_INT||s===C.FLOAT||s===C.HALF_FLOAT||s===C.UNSIGNED_INT_24_8||s===C.UNSIGNED_SHORT_4_4_4_4||s===C.UNSIGNED_SHORT_5_5_5_1||s===C.UNSIGNED_SHORT_5_6_5};C.getTypedArrayConstructor=function(s){let T=C.sizeInBytes(s);return T===Uint8Array.BYTES_PER_ELEMENT?Uint8Array:T===Uint16Array.BYTES_PER_ELEMENT?Uint16Array:T===Float32Array.BYTES_PER_ELEMENT&&s===C.FLOAT?Float32Array:Uint32Array};var y=Object.freeze(C);var i={DEPTH_COMPONENT:f.DEPTH_COMPONENT,DEPTH_STENCIL:f.DEPTH_STENCIL,ALPHA:f.ALPHA,RED:f.RED,RG:f.RG,RGB:f.RGB,RGBA:f.RGBA,RED_INTEGER:f.RED_INTEGER,RG_INTEGER:f.RG_INTEGER,RGB_INTEGER:f.RGB_INTEGER,RGBA_INTEGER:f.RGBA_INTEGER,LUMINANCE:f.LUMINANCE,LUMINANCE_ALPHA:f.LUMINANCE_ALPHA,RGB_DXT1:f.COMPRESSED_RGB_S3TC_DXT1_EXT,RGBA_DXT1:f.COMPRESSED_RGBA_S3TC_DXT1_EXT,RGBA_DXT3:f.COMPRESSED_RGBA_S3TC_DXT3_EXT,RGBA_DXT5:f.COMPRESSED_RGBA_S3TC_DXT5_EXT,RGB_PVRTC_4BPPV1:f.COMPRESSED_RGB_PVRTC_4BPPV1_IMG,RGB_PVRTC_2BPPV1:f.COMPRESSED_RGB_PVRTC_2BPPV1_IMG,RGBA_PVRTC_4BPPV1:f.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,RGBA_PVRTC_2BPPV1:f.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,RGBA_ASTC:f.COMPRESSED_RGBA_ASTC_4x4_WEBGL,RGB_ETC1:f.COMPRESSED_RGB_ETC1_WEBGL,RGB8_ETC2:f.COMPRESSED_RGB8_ETC2,RGBA8_ETC2_EAC:f.COMPRESSED_RGBA8_ETC2_EAC,RGBA_BC7:f.COMPRESSED_RGBA_BPTC_UNORM};i.componentsLength=function(s){switch(s){case i.RGB:case i.RGB_INTEGER:return 3;case i.RGBA:case i.RGBA_INTEGER:return 4;case i.LUMINANCE_ALPHA:case i.RG:case i.RG_INTEGER:return 2;case i.ALPHA:case i.RED:case i.RED_INTEGER:case i.LUMINANCE:return 1;default:return 1}};i.validate=function(s){return s===i.DEPTH_COMPONENT||s===i.DEPTH_STENCIL||s===i.ALPHA||s===i.RED||s===i.RG||s===i.RGB||s===i.RGBA||s===i.RED_INTEGER||s===i.RG_INTEGER||s===i.RGB_INTEGER||s===i.RGBA_INTEGER||s===i.LUMINANCE||s===i.LUMINANCE_ALPHA||s===i.RGB_DXT1||s===i.RGBA_DXT1||s===i.RGBA_DXT3||s===i.RGBA_DXT5||s===i.RGB_PVRTC_4BPPV1||s===i.RGB_PVRTC_2BPPV1||s===i.RGBA_PVRTC_4BPPV1||s===i.RGBA_PVRTC_2BPPV1||s===i.RGBA_ASTC||s===i.RGB_ETC1||s===i.RGB8_ETC2||s===i.RGBA8_ETC2_EAC||s===i.RGBA_BC7};i.isColorFormat=function(s){return s===i.RED||s===i.ALPHA||s===i.RGB||s===i.RGBA||s===i.LUMINANCE||s===i.LUMINANCE_ALPHA};i.isDepthFormat=function(s){return s===i.DEPTH_COMPONENT||s===i.DEPTH_STENCIL};i.isCompressedFormat=function(s){return s===i.RGB_DXT1||s===i.RGBA_DXT1||s===i.RGBA_DXT3||s===i.RGBA_DXT5||s===i.RGB_PVRTC_4BPPV1||s===i.RGB_PVRTC_2BPPV1||s===i.RGBA_PVRTC_4BPPV1||s===i.RGBA_PVRTC_2BPPV1||s===i.RGBA_ASTC||s===i.RGB_ETC1||s===i.RGB8_ETC2||s===i.RGBA8_ETC2_EAC||s===i.RGBA_BC7};i.isDXTFormat=function(s){return s===i.RGB_DXT1||s===i.RGBA_DXT1||s===i.RGBA_DXT3||s===i.RGBA_DXT5};i.isPVRTCFormat=function(s){return s===i.RGB_PVRTC_4BPPV1||s===i.RGB_PVRTC_2BPPV1||s===i.RGBA_PVRTC_4BPPV1||s===i.RGBA_PVRTC_2BPPV1};i.isASTCFormat=function(s){return s===i.RGBA_ASTC};i.isETC1Format=function(s){return s===i.RGB_ETC1};i.isETC2Format=function(s){return s===i.RGB8_ETC2||s===i.RGBA8_ETC2_EAC};i.isBC7Format=function(s){return s===i.RGBA_BC7};i.compressedTextureSizeInBytes=function(s,T,r){switch(s){case i.RGB_DXT1:case i.RGBA_DXT1:case i.RGB_ETC1:case i.RGB8_ETC2:return Math.floor((T+3)/4)*Math.floor((r+3)/4)*8;case i.RGBA_DXT3:case i.RGBA_DXT5:case i.RGBA_ASTC:case i.RGBA8_ETC2_EAC:return Math.floor((T+3)/4)*Math.floor((r+3)/4)*16;case i.RGB_PVRTC_4BPPV1:case i.RGBA_PVRTC_4BPPV1:return Math.floor((Math.max(T,8)*Math.max(r,8)*4+7)/8);case i.RGB_PVRTC_2BPPV1:case i.RGBA_PVRTC_2BPPV1:return Math.floor((Math.max(T,16)*Math.max(r,8)*2+7)/8);case i.RGBA_BC7:return Math.ceil(T/4)*Math.ceil(r/4)*16;default:return 0}};i.textureSizeInBytes=function(s,T,r,M){let B=i.componentsLength(s);return y.isPacked(T)&&(B=1),B*y.sizeInBytes(T)*r*M};i.texture3DSizeInBytes=function(s,T,r,M,B){let E=i.componentsLength(s);return y.isPacked(T)&&(E=1),E*y.sizeInBytes(T)*r*M*B};i.alignmentInBytes=function(s,T,r){let M=i.textureSizeInBytes(s,T,r,1)%4;return M===0?4:M===2?2:1};i.createTypedArray=function(s,T,r,M){let B=y.getTypedArrayConstructor(T),E=i.componentsLength(s)*r*M;return new B(E)};i.flipY=function(s,T,r,M,B){if(B===1)return s;let E=i.createTypedArray(T,r,M,B),F=i.componentsLength(T),L=M*F;for(let D=0;D<B;++D){let b=D*M*F,N=(B-D-1)*M*F;for(let d=0;d<L;++d)E[N+d]=s[b+d]}return E};i.toInternalFormat=function(s,T,r){if(!r.webgl2)return s;if(s===i.DEPTH_STENCIL)return f.DEPTH24_STENCIL8;if(s===i.DEPTH_COMPONENT){if(T===y.UNSIGNED_SHORT)return f.DEPTH_COMPONENT16;if(T===y.UNSIGNED_INT)return f.DEPTH_COMPONENT24}if(T===y.FLOAT)switch(s){case i.RGBA:return f.RGBA32F;case i.RGB:return f.RGB32F;case i.RG:return f.RG32F;case i.RED:return f.R32F}if(T===y.HALF_FLOAT)switch(s){case i.RGBA:return f.RGBA16F;case i.RGB:return f.RGB16F;case i.RG:return f.RG16F;case i.RED:return f.R16F}if(T===y.UNSIGNED_BYTE)switch(s){case i.RGBA:return f.RGBA8;case i.RGB:return f.RGB8;case i.RG:return f.RG8;case i.RED:return f.R8}if(T===y.INT)switch(s){case i.RGBA_INTEGER:return f.RGBA32I;case i.RGB_INTEGER:return f.RGB32I;case i.RG_INTEGER:return f.RG32I;case i.RED_INTEGER:return f.R32I}if(T===y.UNSIGNED_INT)switch(s){case i.RGBA_INTEGER:return f.RGBA32UI;case i.RGB_INTEGER:return f.RGB32UI;case i.RG_INTEGER:return f.RG32UI;case i.RED_INTEGER:return f.R32UI}return s};var U=Object.freeze(i);var or={VK_FORMAT_UNDEFINED:0,VK_FORMAT_R4G4_UNORM_PACK8:1,VK_FORMAT_R4G4B4A4_UNORM_PACK16:2,VK_FORMAT_B4G4R4A4_UNORM_PACK16:3,VK_FORMAT_R5G6B5_UNORM_PACK16:4,VK_FORMAT_B5G6R5_UNORM_PACK16:5,VK_FORMAT_R5G5B5A1_UNORM_PACK16:6,VK_FORMAT_B5G5R5A1_UNORM_PACK16:7,VK_FORMAT_A1R5G5B5_UNORM_PACK16:8,VK_FORMAT_R8_UNORM:9,VK_FORMAT_R8_SNORM:10,VK_FORMAT_R8_USCALED:11,VK_FORMAT_R8_SSCALED:12,VK_FORMAT_R8_UINT:13,VK_FORMAT_R8_SINT:14,VK_FORMAT_R8_SRGB:15,VK_FORMAT_R8G8_UNORM:16,VK_FORMAT_R8G8_SNORM:17,VK_FORMAT_R8G8_USCALED:18,VK_FORMAT_R8G8_SSCALED:19,VK_FORMAT_R8G8_UINT:20,VK_FORMAT_R8G8_SINT:21,VK_FORMAT_R8G8_SRGB:22,VK_FORMAT_R8G8B8_UNORM:23,VK_FORMAT_R8G8B8_SNORM:24,VK_FORMAT_R8G8B8_USCALED:25,VK_FORMAT_R8G8B8_SSCALED:26,VK_FORMAT_R8G8B8_UINT:27,VK_FORMAT_R8G8B8_SINT:28,VK_FORMAT_R8G8B8_SRGB:29,VK_FORMAT_B8G8R8_UNORM:30,VK_FORMAT_B8G8R8_SNORM:31,VK_FORMAT_B8G8R8_USCALED:32,VK_FORMAT_B8G8R8_SSCALED:33,VK_FORMAT_B8G8R8_UINT:34,VK_FORMAT_B8G8R8_SINT:35,VK_FORMAT_B8G8R8_SRGB:36,VK_FORMAT_R8G8B8A8_UNORM:37,VK_FORMAT_R8G8B8A8_SNORM:38,VK_FORMAT_R8G8B8A8_USCALED:39,VK_FORMAT_R8G8B8A8_SSCALED:40,VK_FORMAT_R8G8B8A8_UINT:41,VK_FORMAT_R8G8B8A8_SINT:42,VK_FORMAT_R8G8B8A8_SRGB:43,VK_FORMAT_B8G8R8A8_UNORM:44,VK_FORMAT_B8G8R8A8_SNORM:45,VK_FORMAT_B8G8R8A8_USCALED:46,VK_FORMAT_B8G8R8A8_SSCALED:47,VK_FORMAT_B8G8R8A8_UINT:48,VK_FORMAT_B8G8R8A8_SINT:49,VK_FORMAT_B8G8R8A8_SRGB:50,VK_FORMAT_A8B8G8R8_UNORM_PACK32:51,VK_FORMAT_A8B8G8R8_SNORM_PACK32:52,VK_FORMAT_A8B8G8R8_USCALED_PACK32:53,VK_FORMAT_A8B8G8R8_SSCALED_PACK32:54,VK_FORMAT_A8B8G8R8_UINT_PACK32:55,VK_FORMAT_A8B8G8R8_SINT_PACK32:56,VK_FORMAT_A8B8G8R8_SRGB_PACK32:57,VK_FORMAT_A2R10G10B10_UNORM_PACK32:58,VK_FORMAT_A2R10G10B10_SNORM_PACK32:59,VK_FORMAT_A2R10G10B10_USCALED_PACK32:60,VK_FORMAT_A2R10G10B10_SSCALED_PACK32:61,VK_FORMAT_A2R10G10B10_UINT_PACK32:62,VK_FORMAT_A2R10G10B10_SINT_PACK32:63,VK_FORMAT_A2B10G10R10_UNORM_PACK32:64,VK_FORMAT_A2B10G10R10_SNORM_PACK32:65,VK_FORMAT_A2B10G10R10_USCALED_PACK32:66,VK_FORMAT_A2B10G10R10_SSCALED_PACK32:67,VK_FORMAT_A2B10G10R10_UINT_PACK32:68,VK_FORMAT_A2B10G10R10_SINT_PACK32:69,VK_FORMAT_R16_UNORM:70,VK_FORMAT_R16_SNORM:71,VK_FORMAT_R16_USCALED:72,VK_FORMAT_R16_SSCALED:73,VK_FORMAT_R16_UINT:74,VK_FORMAT_R16_SINT:75,VK_FORMAT_R16_SFLOAT:76,VK_FORMAT_R16G16_UNORM:77,VK_FORMAT_R16G16_SNORM:78,VK_FORMAT_R16G16_USCALED:79,VK_FORMAT_R16G16_SSCALED:80,VK_FORMAT_R16G16_UINT:81,VK_FORMAT_R16G16_SINT:82,VK_FORMAT_R16G16_SFLOAT:83,VK_FORMAT_R16G16B16_UNORM:84,VK_FORMAT_R16G16B16_SNORM:85,VK_FORMAT_R16G16B16_USCALED:86,VK_FORMAT_R16G16B16_SSCALED:87,VK_FORMAT_R16G16B16_UINT:88,VK_FORMAT_R16G16B16_SINT:89,VK_FORMAT_R16G16B16_SFLOAT:90,VK_FORMAT_R16G16B16A16_UNORM:91,VK_FORMAT_R16G16B16A16_SNORM:92,VK_FORMAT_R16G16B16A16_USCALED:93,VK_FORMAT_R16G16B16A16_SSCALED:94,VK_FORMAT_R16G16B16A16_UINT:95,VK_FORMAT_R16G16B16A16_SINT:96,VK_FORMAT_R16G16B16A16_SFLOAT:97,VK_FORMAT_R32_UINT:98,VK_FORMAT_R32_SINT:99,VK_FORMAT_R32_SFLOAT:100,VK_FORMAT_R32G32_UINT:101,VK_FORMAT_R32G32_SINT:102,VK_FORMAT_R32G32_SFLOAT:103,VK_FORMAT_R32G32B32_UINT:104,VK_FORMAT_R32G32B32_SINT:105,VK_FORMAT_R32G32B32_SFLOAT:106,VK_FORMAT_R32G32B32A32_UINT:107,VK_FORMAT_R32G32B32A32_SINT:108,VK_FORMAT_R32G32B32A32_SFLOAT:109,VK_FORMAT_R64_UINT:110,VK_FORMAT_R64_SINT:111,VK_FORMAT_R64_SFLOAT:112,VK_FORMAT_R64G64_UINT:113,VK_FORMAT_R64G64_SINT:114,VK_FORMAT_R64G64_SFLOAT:115,VK_FORMAT_R64G64B64_UINT:116,VK_FORMAT_R64G64B64_SINT:117,VK_FORMAT_R64G64B64_SFLOAT:118,VK_FORMAT_R64G64B64A64_UINT:119,VK_FORMAT_R64G64B64A64_SINT:120,VK_FORMAT_R64G64B64A64_SFLOAT:121,VK_FORMAT_B10G11R11_UFLOAT_PACK32:122,VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:123,VK_FORMAT_D16_UNORM:124,VK_FORMAT_X8_D24_UNORM_PACK32:125,VK_FORMAT_D32_SFLOAT:126,VK_FORMAT_S8_UINT:127,VK_FORMAT_D16_UNORM_S8_UINT:128,VK_FORMAT_D24_UNORM_S8_UINT:129,VK_FORMAT_D32_SFLOAT_S8_UINT:130,VK_FORMAT_BC1_RGB_UNORM_BLOCK:131,VK_FORMAT_BC1_RGB_SRGB_BLOCK:132,VK_FORMAT_BC1_RGBA_UNORM_BLOCK:133,VK_FORMAT_BC1_RGBA_SRGB_BLOCK:134,VK_FORMAT_BC2_UNORM_BLOCK:135,VK_FORMAT_BC2_SRGB_BLOCK:136,VK_FORMAT_BC3_UNORM_BLOCK:137,VK_FORMAT_BC3_SRGB_BLOCK:138,VK_FORMAT_BC4_UNORM_BLOCK:139,VK_FORMAT_BC4_SNORM_BLOCK:140,VK_FORMAT_BC5_UNORM_BLOCK:141,VK_FORMAT_BC5_SNORM_BLOCK:142,VK_FORMAT_BC6H_UFLOAT_BLOCK:143,VK_FORMAT_BC6H_SFLOAT_BLOCK:144,VK_FORMAT_BC7_UNORM_BLOCK:145,VK_FORMAT_BC7_SRGB_BLOCK:146,VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:147,VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:148,VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:149,VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:150,VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:151,VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:152,VK_FORMAT_EAC_R11_UNORM_BLOCK:153,VK_FORMAT_EAC_R11_SNORM_BLOCK:154,VK_FORMAT_EAC_R11G11_UNORM_BLOCK:155,VK_FORMAT_EAC_R11G11_SNORM_BLOCK:156,VK_FORMAT_ASTC_4x4_UNORM_BLOCK:157,VK_FORMAT_ASTC_4x4_SRGB_BLOCK:158,VK_FORMAT_ASTC_5x4_UNORM_BLOCK:159,VK_FORMAT_ASTC_5x4_SRGB_BLOCK:160,VK_FORMAT_ASTC_5x5_UNORM_BLOCK:161,VK_FORMAT_ASTC_5x5_SRGB_BLOCK:162,VK_FORMAT_ASTC_6x5_UNORM_BLOCK:163,VK_FORMAT_ASTC_6x5_SRGB_BLOCK:164,VK_FORMAT_ASTC_6x6_UNORM_BLOCK:165,VK_FORMAT_ASTC_6x6_SRGB_BLOCK:166,VK_FORMAT_ASTC_8x5_UNORM_BLOCK:167,VK_FORMAT_ASTC_8x5_SRGB_BLOCK:168,VK_FORMAT_ASTC_8x6_UNORM_BLOCK:169,VK_FORMAT_ASTC_8x6_SRGB_BLOCK:170,VK_FORMAT_ASTC_8x8_UNORM_BLOCK:171,VK_FORMAT_ASTC_8x8_SRGB_BLOCK:172,VK_FORMAT_ASTC_10x5_UNORM_BLOCK:173,VK_FORMAT_ASTC_10x5_SRGB_BLOCK:174,VK_FORMAT_ASTC_10x6_UNORM_BLOCK:175,VK_FORMAT_ASTC_10x6_SRGB_BLOCK:176,VK_FORMAT_ASTC_10x8_UNORM_BLOCK:177,VK_FORMAT_ASTC_10x8_SRGB_BLOCK:178,VK_FORMAT_ASTC_10x10_UNORM_BLOCK:179,VK_FORMAT_ASTC_10x10_SRGB_BLOCK:180,VK_FORMAT_ASTC_12x10_UNORM_BLOCK:181,VK_FORMAT_ASTC_12x10_SRGB_BLOCK:182,VK_FORMAT_ASTC_12x12_UNORM_BLOCK:183,VK_FORMAT_ASTC_12x12_SRGB_BLOCK:184,VK_FORMAT_G8B8G8R8_422_UNORM:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:1000156006,VK_FORMAT_R10X6_UNORM_PACK16:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:1000156016,VK_FORMAT_R12X4_UNORM_PACK16:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:1000156033,VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:1000054e3,VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:1000054001,VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:1000054002,VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:1000054003,VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:1000054004,VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:1000054005,VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:1000054006,VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:1000054007,VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT:1000066e3,VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT:1000066001,VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT:1000066002,VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT:1000066003,VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT:1000066004,VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT:1000066005,VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT:1000066006,VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT:1000066007,VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT:1000066008,VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT:1000066009,VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT:1000066010,VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT:1000066011,VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT:1000066012,VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT:1000066013,VK_FORMAT_G8B8G8R8_422_UNORM_KHR:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM_KHR:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR:1000156006,VK_FORMAT_R10X6_UNORM_PACK16_KHR:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR:1000156016,VK_FORMAT_R12X4_UNORM_PACK16_KHR:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM_KHR:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM_KHR:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR:1000156033},me=Object.freeze(or);function ir(){return{vkFormat:0,typeSize:1,pixelWidth:0,pixelHeight:0,pixelDepth:0,layerCount:0,faceCount:1,supercompressionScheme:0,levels:[],dataFormatDescriptor:[{vendorId:0,descriptorType:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],keyValue:{},globalData:null}}var fe=class{constructor(T,r,M,B){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(T.buffer,T.byteOffset+r,M),this._littleEndian=B,this._offset=0}_nextUint8(){let T=this._dataView.getUint8(this._offset);return this._offset+=1,T}_nextUint16(){let T=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,T}_nextUint32(){let T=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,T}_nextUint64(){let T=this._dataView.getUint32(this._offset,this._littleEndian),r=this._dataView.getUint32(this._offset+4,this._littleEndian),M=T+2**32*r;return this._offset+=8,M}_nextInt32(){let T=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,T}_nextUint8Array(T){let r=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,T);return this._offset+=T,r}_skip(T){return this._offset+=T,this}_scan(T,r=0){let M=this._offset,B=0;for(;this._dataView.getUint8(this._offset)!==r&&B<T;)B++,this._offset++;return B<T&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+M,B)}};var Fr=new Uint8Array([0]),H=[171,75,84,88,32,50,48,187,13,10,26,10];function Rn(s){return new TextDecoder().decode(s)}function an(s){let T=new Uint8Array(s.buffer,s.byteOffset,H.length);if(T[0]!==H[0]||T[1]!==H[1]||T[2]!==H[2]||T[3]!==H[3]||T[4]!==H[4]||T[5]!==H[5]||T[6]!==H[6]||T[7]!==H[7]||T[8]!==H[8]||T[9]!==H[9]||T[10]!==H[10]||T[11]!==H[11])throw new Error("Missing KTX 2.0 identifier.");let r=ir(),M=17*Uint32Array.BYTES_PER_ELEMENT,B=new fe(s,H.length,M,!0);r.vkFormat=B._nextUint32(),r.typeSize=B._nextUint32(),r.pixelWidth=B._nextUint32(),r.pixelHeight=B._nextUint32(),r.pixelDepth=B._nextUint32(),r.layerCount=B._nextUint32(),r.faceCount=B._nextUint32();let E=B._nextUint32();r.supercompressionScheme=B._nextUint32();let F=B._nextUint32(),L=B._nextUint32(),D=B._nextUint32(),b=B._nextUint32(),N=B._nextUint64(),d=B._nextUint64(),P=E*3*8,Q=new fe(s,H.length+M,P,!0);for(let v=0;v<E;v++)r.levels.push({levelData:new Uint8Array(s.buffer,s.byteOffset+Q._nextUint64(),Q._nextUint64()),uncompressedByteLength:Q._nextUint64()});let O=new fe(s,F,L,!0);O._skip(4);let W=O._nextUint16(),J=O._nextUint16(),ae=O._nextUint16(),j=O._nextUint16(),Ke=O._nextUint8(),Ce=O._nextUint8(),Fe=O._nextUint8(),it=O._nextUint8(),se=[O._nextUint8(),O._nextUint8(),O._nextUint8(),O._nextUint8()],Rt=[O._nextUint8(),O._nextUint8(),O._nextUint8(),O._nextUint8(),O._nextUint8(),O._nextUint8(),O._nextUint8(),O._nextUint8()],oe={vendorId:W,descriptorType:J,versionNumber:ae,colorModel:Ke,colorPrimaries:Ce,transferFunction:Fe,flags:it,texelBlockDimension:se,bytesPlane:Rt,samples:[]},Ie=(j/4-6)/4;for(let v=0;v<Ie;v++){let p={bitOffset:O._nextUint16(),bitLength:O._nextUint8(),channelType:O._nextUint8(),samplePosition:[O._nextUint8(),O._nextUint8(),O._nextUint8(),O._nextUint8()],sampleLower:Number.NEGATIVE_INFINITY,sampleUpper:Number.POSITIVE_INFINITY};p.channelType&64?(p.sampleLower=O._nextInt32(),p.sampleUpper=O._nextInt32()):(p.sampleLower=O._nextUint32(),p.sampleUpper=O._nextUint32()),oe.samples[v]=p}r.dataFormatDescriptor.length=0,r.dataFormatDescriptor.push(oe);let ce=new fe(s,D,b,!0);for(;ce._offset<b;){let v=ce._nextUint32(),p=ce._scan(v),k=Rn(p);if(r.keyValue[k]=ce._nextUint8Array(v-p.byteLength-1),k.match(/^ktx/i)){let m=Rn(r.keyValue[k]);r.keyValue[k]=m.substring(0,m.lastIndexOf("\0"))}let Ae=v%4?4-v%4:0;ce._skip(Ae)}if(d<=0)return r;let I=new fe(s,N,d,!0),be=I._nextUint16(),we=I._nextUint16(),Ge=I._nextUint32(),He=I._nextUint32(),Xe=I._nextUint32(),at=I._nextUint32(),Se=[];for(let v=0;v<E;v++)Se.push({imageFlags:I._nextUint32(),rgbSliceByteOffset:I._nextUint32(),rgbSliceByteLength:I._nextUint32(),alphaSliceByteOffset:I._nextUint32(),alphaSliceByteLength:I._nextUint32()});let xe=N+I._offset,ke=xe+Ge,$e=ke+He,ct=$e+Xe,At=new Uint8Array(s.buffer,s.byteOffset+xe,Ge),Tt=new Uint8Array(s.buffer,s.byteOffset+ke,He),ut=new Uint8Array(s.buffer,s.byteOffset+$e,Xe),Ne=new Uint8Array(s.buffer,s.byteOffset+ct,at);return r.globalData={endpointCount:be,selectorCount:we,imageDescs:Se,endpointsData:At,selectorsData:Tt,tablesData:ut,extendedData:Ne},r}var An=sr(cn(),1),Tn=["positiveX","negativeX","positiveY","negativeY","positiveZ","negativeZ"],un=163,fn=166,De;function Rr(s,T){sn.typeOf.object("transcoderModule",De);let r=s.ktx2Buffer,M=s.supportedTargetFormats,B;try{B=an(r)}catch{throw new re("Invalid KTX2 file.")}if(B.layerCount!==0)throw new re("KTX2 texture arrays are not supported.");if(B.pixelDepth!==0)throw new re("KTX2 3D textures are unsupported.");let E=B.dataFormatDescriptor[0],F=new Array(B.levelCount);return B.vkFormat===0&&(E.colorModel===un||E.colorModel===fn)?cr(r,B,M,De,T,F):(T.push(r.buffer),ar(B,F)),F}function ar(s,T){let r=s.vkFormat===me.VK_FORMAT_R8G8B8_SRGB?U.RGB:U.RGBA,M;s.vkFormat===me.VK_FORMAT_R8G8B8A8_UNORM?M=y.UNSIGNED_BYTE:s.vkFormat===me.VK_FORMAT_R16G16B16A16_SFLOAT?M=y.HALF_FLOAT:s.vkFormat===me.VK_FORMAT_R32G32B32A32_SFLOAT&&(M=y.FLOAT);for(let B=0;B<s.levels.length;++B){let E={};T[B]=E;let F=s.levels[B].levelData,L=s.pixelWidth>>B,D=s.pixelHeight>>B,b=L*D*U.componentsLength(r);for(let N=0;N<s.faceCount;++N){let d=F.byteOffset+b*s.typeSize*N,P;!Le(M)||y.sizeInBytes(M)===1?P=new Uint8Array(F.buffer,d,b):y.sizeInBytes(M)===2?P=new Uint16Array(F.buffer,d,b):P=new Float32Array(F.buffer,d,b),E[Tn[N]]={internalFormat:r,datatype:M,width:L,height:D,levelBuffer:P}}}}function cr(s,T,r,M,B,E){let F=new M.KTX2File(s),L=F.getWidth(),D=F.getHeight(),b=F.getLevels(),N=F.getHasAlpha();if(!(L>0)||!(D>0)||!(b>0))throw F.close(),F.delete(),new re("Invalid KTX2 file");let d,P,Q=T.dataFormatDescriptor[0],O=M.transcoder_texture_format;if(Q.colorModel===un)if(r.etc)d=N?U.RGBA8_ETC2_EAC:U.RGB8_ETC2,P=N?O.cTFETC2_RGBA:O.cTFETC1_RGB;else if(r.etc1&&!N)d=U.RGB_ETC1,P=O.cTFETC1_RGB;else if(r.s3tc)d=N?U.RGBA_DXT5:U.RGB_DXT1,P=N?O.cTFBC3_RGBA:O.cTFBC1_RGB;else if(r.pvrtc)d=N?U.RGBA_PVRTC_4BPPV1:U.RGB_PVRTC_4BPPV1,P=N?O.cTFPVRTC1_4_RGBA:O.cTFPVRTC1_4_RGB;else if(r.astc)d=U.RGBA_ASTC,P=O.cTFASTC_4x4_RGBA;else if(r.bc7)d=U.RGBA_BC7,P=O.cTFBC7_RGBA;else throw new re("No transcoding format target available for ETC1S compressed ktx2.");else if(Q.colorModel===fn)if(r.astc)d=U.RGBA_ASTC,P=O.cTFASTC_4x4_RGBA;else if(r.bc7)d=U.RGBA_BC7,P=O.cTFBC7_RGBA;else if(r.s3tc)d=N?U.RGBA_DXT5:U.RGB_DXT1,P=N?O.cTFBC3_RGBA:O.cTFBC1_RGB;else if(r.etc)d=N?U.RGBA8_ETC2_EAC:U.RGB8_ETC2,P=N?O.cTFETC2_RGBA:O.cTFETC1_RGB;else if(r.etc1&&!N)d=U.RGB_ETC1,P=O.cTFETC1_RGB;else if(r.pvrtc)d=N?U.RGBA_PVRTC_4BPPV1:U.RGB_PVRTC_4BPPV1,P=N?O.cTFPVRTC1_4_RGBA:O.cTFPVRTC1_4_RGB;else throw new re("No transcoding format target available for UASTC compressed ktx2.");if(!F.startTranscoding())throw F.close(),F.delete(),new re("startTranscoding() failed");for(let W=0;W<T.levels.length;++W){let J={};E[W]=J,L=T.pixelWidth>>W,D=T.pixelHeight>>W;let ae=F.getImageTranscodedSizeInBytes(W,0,0,P.value),j=new Uint8Array(ae),Ke=F.transcodeImage(j,W,0,0,P.value,0,-1,-1);if(!Le(Ke))throw new re("transcodeImage() failed.");B.push(j.buffer),J[Tn[0]]={internalFormat:d,width:L,height:D,levelBuffer:j}}return F.close(),F.delete(),E}async function Ar(s,T){let r=s.webAssemblyConfig,M=An.default??self.BASIS;return Le(r.wasmBinaryFile)?De=await M(r):De=await M(),De.initializeBasis(),!0}function Tr(s,T){let r=s.webAssemblyConfig;return Le(r)?Ar(s,T):Rr(s,T)}var vr=on(Tr);export{vr as default}; diff --git a/public/Cesium/Workers/transferTypedArrayTest.js b/public/Cesium/Workers/transferTypedArrayTest.js new file mode 100644 index 000000000..72e4101ff --- /dev/null +++ b/public/Cesium/Workers/transferTypedArrayTest.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +self.onmessage=function(a){let s=a.data.array,e=self.webkitPostMessage||self.postMessage;try{e({array:s},[s.buffer])}catch{e({})}}; diff --git a/public/Cesium/Workers/upsampleQuantizedTerrainMesh.js b/public/Cesium/Workers/upsampleQuantizedTerrainMesh.js new file mode 100644 index 000000000..a723eadda --- /dev/null +++ b/public/Cesium/Workers/upsampleQuantizedTerrainMesh.js @@ -0,0 +1,26 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +import{a as be,b as Ne}from"./chunk-7HTKERZY.js";import{a as Ae}from"./chunk-WZDE3RYP.js";import{a as ue}from"./chunk-CNCV5UL7.js";import{a as ee}from"./chunk-DEPHB2WM.js";import"./chunk-TCGIRNHN.js";import"./chunk-N4VJKXZS.js";import"./chunk-DMEY62ID.js";import"./chunk-HTFSEEMT.js";import{a as Ve}from"./chunk-OFUUQVMR.js";import{d as de}from"./chunk-4IW2T6GF.js";import{h as Se}from"./chunk-PSPPBZWI.js";import"./chunk-AU7IKHOH.js";import{a as A,b as Ie,c as Z,d as Ce}from"./chunk-64RSHJUE.js";import{a as N}from"./chunk-3SSKC3VN.js";import"./chunk-OSW76XDF.js";import"./chunk-ED5JPB3S.js";import{a as V,b as q}from"./chunk-LEYMRMBK.js";import{e as f}from"./chunk-VTAIKJXX.js";var ne={};ne.clipTriangleAtAxisAlignedThreshold=function(n,h,o,i,s,e){if(!f(n))throw new V("threshold is required.");if(!f(h))throw new V("keepAbove is required.");if(!f(o))throw new V("u0 is required.");if(!f(i))throw new V("u1 is required.");if(!f(s))throw new V("u2 is required.");f(e)?e.length=0:e=[];let g,w,c;h?(g=o<n,w=i<n,c=s<n):(g=o>n,w=i>n,c=s>n);let p=g+w+c,d,u,r,l,I,C;return p===1?g?(d=(n-o)/(i-o),u=(n-o)/(s-o),e.push(1),e.push(2),u!==1&&(e.push(-1),e.push(0),e.push(2),e.push(u)),d!==1&&(e.push(-1),e.push(0),e.push(1),e.push(d))):w?(r=(n-i)/(s-i),l=(n-i)/(o-i),e.push(2),e.push(0),l!==1&&(e.push(-1),e.push(1),e.push(0),e.push(l)),r!==1&&(e.push(-1),e.push(1),e.push(2),e.push(r))):c&&(I=(n-s)/(o-s),C=(n-s)/(i-s),e.push(0),e.push(1),C!==1&&(e.push(-1),e.push(2),e.push(1),e.push(C)),I!==1&&(e.push(-1),e.push(2),e.push(0),e.push(I))):p===2?!g&&o!==n?(l=(n-i)/(o-i),I=(n-s)/(o-s),e.push(0),e.push(-1),e.push(1),e.push(0),e.push(l),e.push(-1),e.push(2),e.push(0),e.push(I)):!w&&i!==n?(C=(n-s)/(i-s),d=(n-o)/(i-o),e.push(1),e.push(-1),e.push(2),e.push(1),e.push(C),e.push(-1),e.push(0),e.push(1),e.push(d)):!c&&s!==n&&(u=(n-o)/(s-o),r=(n-i)/(s-i),e.push(2),e.push(-1),e.push(0),e.push(2),e.push(u),e.push(-1),e.push(1),e.push(2),e.push(r)):p!==3&&(e.push(0),e.push(1),e.push(2)),e};ne.computeBarycentricCoordinates=function(n,h,o,i,s,e,g,w,c){if(!f(n))throw new V("x is required.");if(!f(h))throw new V("y is required.");if(!f(o))throw new V("x1 is required.");if(!f(i))throw new V("y1 is required.");if(!f(s))throw new V("x2 is required.");if(!f(e))throw new V("y2 is required.");if(!f(g))throw new V("x3 is required.");if(!f(w))throw new V("y3 is required.");let p=o-g,d=g-s,u=e-w,r=i-w,l=1/(u*p+d*r),I=h-w,C=n-g,R=(u*C+d*I)*l,O=(-r*C+p*I)*l,W=1-R-O;return f(c)?(c.x=R,c.y=O,c.z=W,c):new A(R,O,W)};ne.computeLineSegmentLineSegmentIntersection=function(n,h,o,i,s,e,g,w,c){q.typeOf.number("x00",n),q.typeOf.number("y00",h),q.typeOf.number("x01",o),q.typeOf.number("y01",i),q.typeOf.number("x10",s),q.typeOf.number("y10",e),q.typeOf.number("x11",g),q.typeOf.number("y11",w);let p=(g-s)*(h-e)-(w-e)*(n-s),d=(o-n)*(h-e)-(i-h)*(n-s),u=(w-e)*(o-n)-(g-s)*(i-h);if(u===0)return;let r=p/u,l=d/u;if(r>=0&&r<=1&&l>=0&&l<=1)return f(c)||(c=new Z),c.x=n+r*(o-n),c.y=h+r*(i-h),c};var ie=ne;var a=32767,z=a/2|0,Me=[],ze=[],Xe=[],te=new Ie,E=new A,Ke=[],We=[],Ye=[],Le=[],_e=[],Je=new A,Qe=new de,Ze=new ue,Ge=new Z,$e=new A;function je(n,h){let o=n.isEastChild,i=n.isNorthChild,s=o?z:0,e=o?a:z,g=i?z:0,w=i?a:z,c=Ke,p=We,d=Ye,u=_e;c.length=0,p.length=0,d.length=0,u.length=0;let r=Le;r.length=0;let l={},I=n.vertices,C=n.indices;C=C.subarray(0,n.indexCountWithoutSkirts);let R=Ne.clone(n.encoding),O=R.hasVertexNormals,W=0,Y=n.vertexCountWithoutSkirts,se=n.minimumHeight,ae=n.maximumHeight,D=new Array(Y),G=new Array(Y),L=new Array(Y),F=O?new Array(Y*2):void 0,$=20,H,t,k,x,y;for(t=0,k=0;t<Y;++t,k+=2){let v=R.decodeTextureCoordinates(I,t,Ge);if(H=R.decodeHeight(I,t),x=N.clamp(v.x*a|0,0,a),y=N.clamp(v.y*a|0,0,a),L[t]=N.clamp((H-se)/(ae-se)*a|0,0,a),x<$&&(x=0),y<$&&(y=0),a-x<$&&(x=a),a-y<$&&(y=a),D[t]=x,G[t]=y,O){let Q=R.getOctEncodedNormal(I,t,$e);F[k]=Q.x,F[k+1]=Q.y}(o&&x>=z||!o&&x<=z)&&(i&&y>=z||!i&&y<=z)&&(l[t]=W,c.push(x),p.push(y),d.push(L[t]),O&&(u.push(F[k]),u.push(F[k+1])),++W)}let T=[];T.push(new m),T.push(new m),T.push(new m);let B=[];B.push(new m),B.push(new m),B.push(new m);let b,j;for(t=0;t<C.length;t+=3){let v=C[t],Q=C[t+1],Be=C[t+2],De=D[v],Fe=D[Q],ke=D[Be];T[0].initializeIndexed(D,G,L,F,v),T[1].initializeIndexed(D,G,L,F,Q),T[2].initializeIndexed(D,G,L,F,Be);let P=ie.clipTriangleAtAxisAlignedThreshold(z,o,De,Fe,ke,Me);b=0,!(b>=P.length)&&(b=B[0].initializeFromClipResult(P,b,T),!(b>=P.length)&&(b=B[1].initializeFromClipResult(P,b,T),!(b>=P.length)&&(b=B[2].initializeFromClipResult(P,b,T),j=ie.clipTriangleAtAxisAlignedThreshold(z,i,B[0].getV(),B[1].getV(),B[2].getV(),ze),Oe(c,p,d,u,r,l,j,B,O),b<P.length&&(B[2].clone(B[1]),B[2].initializeFromClipResult(P,b,T),j=ie.clipTriangleAtAxisAlignedThreshold(z,i,B[0].getV(),B[1].getV(),B[2].getV(),ze),Oe(c,p,d,u,r,l,j,B,O)))))}let He=o?-a:0,qe=i?-a:0,me=[],ge=[],le=[],we=[],U=Number.MAX_VALUE,_=-U,M=Xe;M.length=0;let re=Ce.clone(n.ellipsoid),J=Se.clone(n.childRectangle),Ee=J.north,Re=J.south,ce=J.east,xe=J.west;for(ce<xe&&(ce+=N.TWO_PI),t=0;t<c.length;++t)x=Math.round(c[t]),x<=s?(me.push(t),x=0):x>=e?(le.push(t),x=a):x=x*2+He,c[t]=x,y=Math.round(p[t]),y<=g?(ge.push(t),y=0):y>=w?(we.push(t),y=a):y=y*2+qe,p[t]=y,H=N.lerp(se,ae,d[t]/a),H<U&&(U=H),H>_&&(_=H),d[t]=H,te.longitude=N.lerp(xe,ce,x/a),te.latitude=N.lerp(Re,Ee,y/a),te.height=H,re.cartographicToCartesian(te,E),M.push(E.x),M.push(E.y),M.push(E.z);let he=de.fromVertices(M,A.ZERO,3,Qe),Ue=ue.fromRectangle(J,U,_,re,Ze),ve=new be(re).computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid(he.center,M,3,he.center,U,Je),Pe=_-U,X=new Uint16Array(c.length+p.length+d.length);for(t=0;t<c.length;++t)X[t]=c[t];let fe=c.length;for(t=0;t<p.length;++t)X[fe+t]=p[t];for(fe+=p.length,t=0;t<d.length;++t)X[fe+t]=a*(d[t]-U)/Pe;let pe=Ve.createTypedArray(c.length,r),ye;if(O){let v=new Uint8Array(u);h.push(X.buffer,pe.buffer,v.buffer),ye=v.buffer}else h.push(X.buffer,pe.buffer);return{vertices:X.buffer,encodedNormals:ye,indices:pe.buffer,minimumHeight:U,maximumHeight:_,westIndices:me,southIndices:ge,eastIndices:le,northIndices:we,boundingSphere:he,orientedBoundingBox:Ue,horizonOcclusionPoint:ve}}function m(){this.vertexBuffer=void 0,this.index=void 0,this.first=void 0,this.second=void 0,this.ratio=void 0}m.prototype.clone=function(n){return f(n)||(n=new m),n.uBuffer=this.uBuffer,n.vBuffer=this.vBuffer,n.heightBuffer=this.heightBuffer,n.normalBuffer=this.normalBuffer,n.index=this.index,n.first=this.first,n.second=this.second,n.ratio=this.ratio,n};m.prototype.initializeIndexed=function(n,h,o,i,s){this.uBuffer=n,this.vBuffer=h,this.heightBuffer=o,this.normalBuffer=i,this.index=s,this.first=void 0,this.second=void 0,this.ratio=void 0};m.prototype.initializeFromClipResult=function(n,h,o){let i=h+1;return n[h]!==-1?o[n[h]].clone(this):(this.vertexBuffer=void 0,this.index=void 0,this.first=o[n[i]],++i,this.second=o[n[i]],++i,this.ratio=n[i],++i),i};m.prototype.getKey=function(){return this.isIndexed()?this.index:JSON.stringify({first:this.first.getKey(),second:this.second.getKey(),ratio:this.ratio})};m.prototype.isIndexed=function(){return f(this.index)};m.prototype.getH=function(){return f(this.index)?this.heightBuffer[this.index]:N.lerp(this.first.getH(),this.second.getH(),this.ratio)};m.prototype.getU=function(){return f(this.index)?this.uBuffer[this.index]:N.lerp(this.first.getU(),this.second.getU(),this.ratio)};m.prototype.getV=function(){return f(this.index)?this.vBuffer[this.index]:N.lerp(this.first.getV(),this.second.getV(),this.ratio)};var K=new Z,oe=-1,en=[new A,new A],nn=[new A,new A];function Te(n,h){++oe;let o=en[oe],i=nn[oe];return o=ee.octDecode(n.first.getNormalX(),n.first.getNormalY(),o),i=ee.octDecode(n.second.getNormalX(),n.second.getNormalY(),i),E=A.lerp(o,i,n.ratio,E),A.normalize(E,E),ee.octEncode(E,h),--oe,h}m.prototype.getNormalX=function(){return f(this.index)?this.normalBuffer[this.index*2]:(K=Te(this,K),K.x)};m.prototype.getNormalY=function(){return f(this.index)?this.normalBuffer[this.index*2+1]:(K=Te(this,K),K.y)};var S=[];S.push(new m);S.push(new m);S.push(new m);S.push(new m);function Oe(n,h,o,i,s,e,g,w,c){if(g.length===0)return;let p=0,d=0;for(;d<g.length;)d=S[p++].initializeFromClipResult(g,d,w);for(let u=0;u<p;++u){let r=S[u];if(r.isIndexed())r.newIndex=e[r.index],r.uBuffer=n,r.vBuffer=h,r.heightBuffer=o,c&&(r.normalBuffer=i);else{let l=r.getKey();if(f(e[l]))r.newIndex=e[l];else{let I=n.length;n.push(r.getU()),h.push(r.getV()),o.push(r.getH()),c&&(i.push(r.getNormalX()),i.push(r.getNormalY())),r.newIndex=I,e[l]=I}}}p===3?(s.push(S[0].newIndex),s.push(S[1].newIndex),s.push(S[2].newIndex)):p===4&&(s.push(S[0].newIndex),s.push(S[1].newIndex),s.push(S[2].newIndex),s.push(S[0].newIndex),s.push(S[2].newIndex),s.push(S[3].newIndex))}var An=Ae(je);export{An as default}; diff --git a/public/Cesium/index.cjs b/public/Cesium/index.cjs new file mode 100644 index 000000000..e8809abc1 --- /dev/null +++ b/public/Cesium/index.cjs @@ -0,0 +1,16264 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +var $we=Object.create;var zU=Object.defineProperty;var eBe=Object.getOwnPropertyDescriptor;var tBe=Object.getOwnPropertyNames;var nBe=Object.getPrototypeOf,iBe=Object.prototype.hasOwnProperty;var oBe=(e,t)=>()=>(e&&(t=e(e=0)),t);var ui=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Cte=(e,t)=>{for(var n in t)zU(e,n,{get:t[n],enumerable:!0})},Ete=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of tBe(t))!iBe.call(e,o)&&o!==n&&zU(e,o,{get:()=>t[o],enumerable:!(i=eBe(t,o))||i.enumerable});return e};var xr=(e,t,n)=>(n=e!=null?$we(nBe(e)):{},Ete(t||!e||!e.__esModule?zU(n,"default",{value:e,enumerable:!0}):n,e)),nh=e=>Ete(zU({},"__esModule",{value:!0}),e);var VU=ui((cMt,Ite)=>{var qA=function(e){e==null&&(e=new Date().getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,e.constructor==Array?this.init_by_array(e,e.length):this.init_seed(e)};qA.prototype.init_seed=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(((e&4294901760)>>>16)*1812433253<<16)+(e&65535)*1812433253+this.mti,this.mt[this.mti]>>>=0}};qA.prototype.init_by_array=function(e,t){var n,i,o;for(this.init_seed(19650218),n=1,i=0,o=this.N>t?this.N:t;o;o--){var r=this.mt[n-1]^this.mt[n-1]>>>30;this.mt[n]=(this.mt[n]^(((r&4294901760)>>>16)*1664525<<16)+(r&65535)*1664525)+e[i]+i,this.mt[n]>>>=0,n++,i++,n>=this.N&&(this.mt[0]=this.mt[this.N-1],n=1),i>=t&&(i=0)}for(o=this.N-1;o;o--){var r=this.mt[n-1]^this.mt[n-1]>>>30;this.mt[n]=(this.mt[n]^(((r&4294901760)>>>16)*1566083941<<16)+(r&65535)*1566083941)-n,this.mt[n]>>>=0,n++,n>=this.N&&(this.mt[0]=this.mt[this.N-1],n=1)}this.mt[0]=2147483648};qA.prototype.random_int=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_seed(5489),n=0;n<this.N-this.M;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^e>>>1^t[e&1];for(;n<this.N-1;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^e>>>1^t[e&1];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[e&1],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0};qA.prototype.random_int31=function(){return this.random_int()>>>1};qA.prototype.random_incl=function(){return this.random_int()*(1/4294967295)};qA.prototype.random=function(){return this.random_int()*(1/4294967296)};qA.prototype.random_excl=function(){return(this.random_int()+.5)*(1/4294967296)};qA.prototype.random_long=function(){var e=this.random_int()>>>5,t=this.random_int()>>>6;return(e*67108864+t)*(1/9007199254740992)};Ite.exports=qA});var Lte=ui((Qx,kx)=>{/*! https://mths.be/punycode v1.4.0 by @mathias */(function(e){var t=typeof Qx=="object"&&Qx&&!Qx.nodeType&&Qx,n=typeof kx=="object"&&kx&&!kx.nodeType&&kx,i=typeof global=="object"&&global;(i.global===i||i.window===i||i.self===i)&&(e=i);var o,r=2147483647,s=36,a=1,c=26,u=38,f=700,h=72,A=128,g="-",m=/^xn--/,_=/[^\x20-\x7E]/,y=/[\x2E\u3002\uFF0E\uFF61]/g,C={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},E=s-a,I=Math.floor,b=String.fromCharCode,S;function B(Q){throw new RangeError(C[Q])}function v(Q,z){for(var F=Q.length,H=[];F--;)H[F]=z(Q[F]);return H}function P(Q,z){var F=Q.split("@"),H="";F.length>1&&(H=F[0]+"@",Q=F[1]),Q=Q.replace(y,".");var W=Q.split("."),Z=v(W,z).join(".");return H+Z}function M(Q){for(var z=[],F=0,H=Q.length,W,Z;F<H;)W=Q.charCodeAt(F++),W>=55296&&W<=56319&&F<H?(Z=Q.charCodeAt(F++),(Z&64512)==56320?z.push(((W&1023)<<10)+(Z&1023)+65536):(z.push(W),F--)):z.push(W);return z}function L(Q){return v(Q,function(z){var F="";return z>65535&&(z-=65536,F+=b(z>>>10&1023|55296),z=56320|z&1023),F+=b(z),F}).join("")}function p(Q){return Q-48<10?Q-22:Q-65<26?Q-65:Q-97<26?Q-97:s}function x(Q,z){return Q+22+75*(Q<26)-((z!=0)<<5)}function T(Q,z,F){var H=0;for(Q=F?I(Q/f):Q>>1,Q+=I(Q/z);Q>E*c>>1;H+=s)Q=I(Q/E);return I(H+(E+1)*Q/(Q+u))}function w(Q){var z=[],F=Q.length,H,W=0,Z=A,Y=h,$,X,he,ge,fe,ye,xe,ve,Te;for($=Q.lastIndexOf(g),$<0&&($=0),X=0;X<$;++X)Q.charCodeAt(X)>=128&&B("not-basic"),z.push(Q.charCodeAt(X));for(he=$>0?$+1:0;he<F;){for(ge=W,fe=1,ye=s;he>=F&&B("invalid-input"),xe=p(Q.charCodeAt(he++)),(xe>=s||xe>I((r-W)/fe))&&B("overflow"),W+=xe*fe,ve=ye<=Y?a:ye>=Y+c?c:ye-Y,!(xe<ve);ye+=s)Te=s-ve,fe>I(r/Te)&&B("overflow"),fe*=Te;H=z.length+1,Y=T(W-ge,H,ge==0),I(W/H)>r-Z&&B("overflow"),Z+=I(W/H),W%=H,z.splice(W++,0,Z)}return L(z)}function R(Q){var z,F,H,W,Z,Y,$,X,he,ge,fe,ye=[],xe,ve,Te,ke;for(Q=M(Q),xe=Q.length,z=A,F=0,Z=h,Y=0;Y<xe;++Y)fe=Q[Y],fe<128&&ye.push(b(fe));for(H=W=ye.length,W&&ye.push(g);H<xe;){for($=r,Y=0;Y<xe;++Y)fe=Q[Y],fe>=z&&fe<$&&($=fe);for(ve=H+1,$-z>I((r-F)/ve)&&B("overflow"),F+=($-z)*ve,z=$,Y=0;Y<xe;++Y)if(fe=Q[Y],fe<z&&++F>r&&B("overflow"),fe==z){for(X=F,he=s;ge=he<=Z?a:he>=Z+c?c:he-Z,!(X<ge);he+=s)ke=X-ge,Te=s-ge,ye.push(b(x(ge+ke%Te,0))),X=I(ke/Te);ye.push(b(x(X,0))),Z=T(F,ve,H==W),F=0,++H}++F,++z}return ye.join("")}function O(Q){return P(Q,function(z){return m.test(z)?w(z.slice(4).toLowerCase()):z})}function k(Q){return P(Q,function(z){return _.test(z)?"xn--"+R(z):z})}if(o={version:"1.3.2",ucs2:{decode:M,encode:L},decode:w,encode:R,toASCII:k,toUnicode:O},typeof define=="function"&&typeof define.amd=="object"&&define.amd)define("punycode",function(){return o});else if(t&&n)if(kx.exports==t)n.exports=o;else for(S in o)o.hasOwnProperty(S)&&(t[S]=o[S]);else e.punycode=o})(Qx)});var Fte=ui((Ote,ZU)=>{/*! + * URI.js - Mutating URLs + * IPv6 Support + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,t){"use strict";typeof ZU=="object"&&ZU.exports?ZU.exports=t():typeof define=="function"&&define.amd?define(t):e.IPv6=t(e)})(Ote,function(e){"use strict";var t=e&&e.IPv6;function n(o){var r=o.toLowerCase(),s=r.split(":"),a=s.length,c=8;s[0]===""&&s[1]===""&&s[2]===""?(s.shift(),s.shift()):s[0]===""&&s[1]===""?s.shift():s[a-1]===""&&s[a-2]===""&&s.pop(),a=s.length,s[a-1].indexOf(".")!==-1&&(c=7);var u;for(u=0;u<a&&s[u]!=="";u++);if(u<c)for(s.splice(u,1,"0000");s.length<c;)s.splice(u,0,"0000");for(var f,h=0;h<c;h++){f=s[h].split("");for(var A=0;A<3&&(f[0]==="0"&&f.length>1);A++)f.splice(0,1);s[h]=f.join("")}var g=-1,m=0,_=0,y=-1,C=!1;for(h=0;h<c;h++)C?s[h]==="0"?_+=1:(C=!1,_>m&&(g=y,m=_)):s[h]==="0"&&(C=!0,y=h,_=1);_>m&&(g=y,m=_),m>1&&s.splice(g,m,""),a=s.length;var E="";for(s[0]===""&&(E=":"),h=0;h<a&&(E+=s[h],h!==a-1);h++)E+=":";return s[a-1]===""&&(E+=":"),E}function i(){return e.IPv6===this&&(e.IPv6=t),this}return{best:n,noConflict:i}})});var kte=ui((Qte,$U)=>{/*! + * URI.js - Mutating URLs + * Second Level Domain (SLD) Support + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,t){"use strict";typeof $U=="object"&&$U.exports?$U.exports=t():typeof define=="function"&&define.amd?define(t):e.SecondLevelDomains=t(e)})(Qte,function(e){"use strict";var t=e&&e.SecondLevelDomains,n={list:{ac:" com gov mil net org ",ae:" ac co gov mil name net org pro sch ",af:" com edu gov net org ",al:" com edu gov mil net org ",ao:" co ed gv it og pb ",ar:" com edu gob gov int mil net org tur ",at:" ac co gv or ",au:" asn com csiro edu gov id net org ",ba:" co com edu gov mil net org rs unbi unmo unsa untz unze ",bb:" biz co com edu gov info net org store tv ",bh:" biz cc com edu gov info net org ",bn:" com edu gov net org ",bo:" com edu gob gov int mil net org tv ",br:" adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ",bs:" com edu gov net org ",bz:" du et om ov rg ",ca:" ab bc mb nb nf nl ns nt nu on pe qc sk yk ",ck:" biz co edu gen gov info net org ",cn:" ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ",co:" com edu gov mil net nom org ",cr:" ac c co ed fi go or sa ",cy:" ac biz com ekloges gov ltd name net org parliament press pro tm ",do:" art com edu gob gov mil net org sld web ",dz:" art asso com edu gov net org pol ",ec:" com edu fin gov info med mil net org pro ",eg:" com edu eun gov mil name net org sci ",er:" com edu gov ind mil net org rochest w ",es:" com edu gob nom org ",et:" biz com edu gov info name net org ",fj:" ac biz com info mil name net org pro ",fk:" ac co gov net nom org ",fr:" asso com f gouv nom prd presse tm ",gg:" co net org ",gh:" com edu gov mil org ",gn:" ac com gov net org ",gr:" com edu gov mil net org ",gt:" com edu gob ind mil net org ",gu:" com edu gov net org ",hk:" com edu gov idv net org ",hu:" 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ",id:" ac co go mil net or sch web ",il:" ac co gov idf k12 muni net org ",in:" ac co edu ernet firm gen gov i ind mil net nic org res ",iq:" com edu gov i mil net org ",ir:" ac co dnssec gov i id net org sch ",it:" edu gov ",je:" co net org ",jo:" com edu gov mil name net org sch ",jp:" ac ad co ed go gr lg ne or ",ke:" ac co go info me mobi ne or sc ",kh:" com edu gov mil net org per ",ki:" biz com de edu gov info mob net org tel ",km:" asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ",kn:" edu gov net org ",kr:" ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ",kw:" com edu gov net org ",ky:" com edu gov net org ",kz:" com edu gov mil net org ",lb:" com edu gov net org ",lk:" assn com edu gov grp hotel int ltd net ngo org sch soc web ",lr:" com edu gov net org ",lv:" asn com conf edu gov id mil net org ",ly:" com edu gov id med net org plc sch ",ma:" ac co gov m net org press ",mc:" asso tm ",me:" ac co edu gov its net org priv ",mg:" com edu gov mil nom org prd tm ",mk:" com edu gov inf name net org pro ",ml:" com edu gov net org presse ",mn:" edu gov org ",mo:" com edu gov net org ",mt:" com edu gov net org ",mv:" aero biz com coop edu gov info int mil museum name net org pro ",mw:" ac co com coop edu gov int museum net org ",mx:" com edu gob net org ",my:" com edu gov mil name net org sch ",nf:" arts com firm info net other per rec store web ",ng:" biz com edu gov mil mobi name net org sch ",ni:" ac co com edu gob mil net nom org ",np:" com edu gov mil net org ",nr:" biz com edu gov info net org ",om:" ac biz co com edu gov med mil museum net org pro sch ",pe:" com edu gob mil net nom org sld ",ph:" com edu gov i mil net ngo org ",pk:" biz com edu fam gob gok gon gop gos gov net org web ",pl:" art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ",pr:" ac biz com edu est gov info isla name net org pro prof ",ps:" com edu gov net org plo sec ",pw:" belau co ed go ne or ",ro:" arts com firm info nom nt org rec store tm www ",rs:" ac co edu gov in org ",sb:" com edu gov net org ",sc:" com edu gov net org ",sh:" co com edu gov net nom org ",sl:" com edu gov net org ",st:" co com consulado edu embaixada gov mil net org principe saotome store ",sv:" com edu gob org red ",sz:" ac co org ",tr:" av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ",tt:" aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ",tw:" club com ebiz edu game gov idv mil net org ",mu:" ac co com gov net or org ",mz:" ac co edu gov org ",na:" co com ",nz:" ac co cri geek gen govt health iwi maori mil net org parliament school ",pa:" abo ac com edu gob ing med net nom org sld ",pt:" com edu gov int net nome org publ ",py:" com edu gov mil net org ",qa:" com edu gov mil net org ",re:" asso com nom ",ru:" ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ",rw:" ac co com edu gouv gov int mil net ",sa:" com edu gov med net org pub sch ",sd:" com edu gov info med net org tv ",se:" a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ",sg:" com edu gov idn net org per ",sn:" art com edu gouv org perso univ ",sy:" com edu gov mil net news org ",th:" ac co go in mi net or ",tj:" ac biz co com edu go gov info int mil name net nic org test web ",tn:" agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ",tz:" ac co go ne or ",ua:" biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ",ug:" ac co go ne or org sc ",uk:" ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ",us:" dni fed isa kids nsn ",uy:" com edu gub mil net org ",ve:" co com edu gob info mil net org web ",vi:" co com k12 net org ",vn:" ac biz com edu gov health info int name net org pro ",ye:" co com gov ltd me net org plc ",yu:" ac co edu gov org ",za:" ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ",zm:" ac co com edu gov net org sch ",com:"ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ",net:"gb jp se uk ",org:"ae",de:"com "},has:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return!1;var r=i.lastIndexOf(".",o-1);if(r<=0||r>=o-1)return!1;var s=n.list[i.slice(o+1)];return s?s.indexOf(" "+i.slice(r+1,o)+" ")>=0:!1},is:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return!1;var r=i.lastIndexOf(".",o-1);if(r>=0)return!1;var s=n.list[i.slice(o+1)];return s?s.indexOf(" "+i.slice(0,o)+" ")>=0:!1},get:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return null;var r=i.lastIndexOf(".",o-1);if(r<=0||r>=o-1)return null;var s=n.list[i.slice(o+1)];return!s||s.indexOf(" "+i.slice(r+1,o)+" ")<0?null:i.slice(r+1)},noConflict:function(){return e.SecondLevelDomains===this&&(e.SecondLevelDomains=t),this}};return n})});var Ou=ui((Ute,eG)=>{/*! + * URI.js - Mutating URLs + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,t){"use strict";typeof eG=="object"&&eG.exports?eG.exports=t(Lte(),Fte(),kte()):typeof define=="function"&&define.amd?define(["./punycode","./IPv6","./SecondLevelDomains"],t):e.URI=t(e.punycode,e.IPv6,e.SecondLevelDomains,e)})(Ute,function(e,t,n,i){"use strict";var o=i&&i.URI;function r(x,T){var w=arguments.length>=1,R=arguments.length>=2;if(!(this instanceof r))return w?R?new r(x,T):new r(x):new r;if(x===void 0){if(w)throw new TypeError("undefined is not a valid argument for URI");typeof location<"u"?x=location.href+"":x=""}if(x===null&&w)throw new TypeError("null is not a valid argument for URI");return this.href(x),T!==void 0?this.absoluteTo(T):this}function s(x){return/^[0-9]+$/.test(x)}r.version="1.19.11";var a=r.prototype,c=Object.prototype.hasOwnProperty;function u(x){return x.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function f(x){return x===void 0?"Undefined":String(Object.prototype.toString.call(x)).slice(8,-1)}function h(x){return f(x)==="Array"}function A(x,T){var w={},R,O;if(f(T)==="RegExp")w=null;else if(h(T))for(R=0,O=T.length;R<O;R++)w[T[R]]=!0;else w[T]=!0;for(R=0,O=x.length;R<O;R++){var k=w&&w[x[R]]!==void 0||!w&&T.test(x[R]);k&&(x.splice(R,1),O--,R--)}return x}function g(x,T){var w,R;if(h(T)){for(w=0,R=T.length;w<R;w++)if(!g(x,T[w]))return!1;return!0}var O=f(T);for(w=0,R=x.length;w<R;w++)if(O==="RegExp"){if(typeof x[w]=="string"&&x[w].match(T))return!0}else if(x[w]===T)return!0;return!1}function m(x,T){if(!h(x)||!h(T)||x.length!==T.length)return!1;x.sort(),T.sort();for(var w=0,R=x.length;w<R;w++)if(x[w]!==T[w])return!1;return!0}function _(x){var T=/^\/+|\/+$/g;return x.replace(T,"")}r._parts=function(){return{protocol:null,username:null,password:null,hostname:null,urn:null,port:null,path:null,query:null,fragment:null,preventInvalidHostname:r.preventInvalidHostname,duplicateQueryParameters:r.duplicateQueryParameters,escapeQuerySpace:r.escapeQuerySpace}},r.preventInvalidHostname=!1,r.duplicateQueryParameters=!1,r.escapeQuerySpace=!0,r.protocol_expression=/^[a-z][a-z0-9.+-]*$/i,r.idn_expression=/[^a-z0-9\._-]/i,r.punycode_expression=/(xn--)/i,r.ip4_expression=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,r.ip6_expression=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,r.find_uri_expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/ig,r.findUri={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|www\.)/gi,end:/[\s\r\n]|$/,trim:/[`!()\[\]{};:'".,<>?«»“”„‘’]+$/,parens:/(\([^\)]*\)|\[[^\]]*\]|\{[^}]*\}|<[^>]*>)/g},r.leading_whitespace_expression=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,r.ascii_tab_whitespace=/[\u0009\u000A\u000D]+/g,r.defaultPorts={http:"80",https:"443",ftp:"21",gopher:"70",ws:"80",wss:"443"},r.hostProtocols=["http","https"],r.invalid_hostname_characters=/[^a-zA-Z0-9\.\-:_]/,r.domAttributes={a:"href",blockquote:"cite",link:"href",base:"href",script:"src",form:"action",img:"src",area:"href",iframe:"src",embed:"src",source:"src",track:"src",input:"src",audio:"src",video:"src"},r.getDomAttribute=function(x){if(!(!x||!x.nodeName)){var T=x.nodeName.toLowerCase();if(!(T==="input"&&x.type!=="image"))return r.domAttributes[T]}};function y(x){return escape(x)}function C(x){return encodeURIComponent(x).replace(/[!'()*]/g,y).replace(/\*/g,"%2A")}r.encode=C,r.decode=decodeURIComponent,r.iso8859=function(){r.encode=escape,r.decode=unescape},r.unicode=function(){r.encode=C,r.decode=decodeURIComponent},r.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/ig,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}},urnpath:{encode:{expression:/%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/ig,map:{"%21":"!","%24":"$","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"=","%40":"@"}},decode:{expression:/[\/\?#:]/g,map:{"/":"%2F","?":"%3F","#":"%23",":":"%3A"}}}},r.encodeQuery=function(x,T){var w=r.encode(x+"");return T===void 0&&(T=r.escapeQuerySpace),T?w.replace(/%20/g,"+"):w},r.decodeQuery=function(x,T){x+="",T===void 0&&(T=r.escapeQuerySpace);try{return r.decode(T?x.replace(/\+/g,"%20"):x)}catch{return x}};var E={encode:"encode",decode:"decode"},I,b=function(x,T){return function(w){try{return r[T](w+"").replace(r.characters[x][T].expression,function(R){return r.characters[x][T].map[R]})}catch{return w}}};for(I in E)r[I+"PathSegment"]=b("pathname",E[I]),r[I+"UrnPathSegment"]=b("urnpath",E[I]);var S=function(x,T,w){return function(R){var O;w?O=function(F){return r[T](r[w](F))}:O=r[T];for(var k=(R+"").split(x),Q=0,z=k.length;Q<z;Q++)k[Q]=O(k[Q]);return k.join(x)}};r.decodePath=S("/","decodePathSegment"),r.decodeUrnPath=S(":","decodeUrnPathSegment"),r.recodePath=S("/","encodePathSegment","decode"),r.recodeUrnPath=S(":","encodeUrnPathSegment","decode"),r.encodeReserved=b("reserved","encode"),r.parse=function(x,T){var w;return T||(T={preventInvalidHostname:r.preventInvalidHostname}),x=x.replace(r.leading_whitespace_expression,""),x=x.replace(r.ascii_tab_whitespace,""),w=x.indexOf("#"),w>-1&&(T.fragment=x.substring(w+1)||null,x=x.substring(0,w)),w=x.indexOf("?"),w>-1&&(T.query=x.substring(w+1)||null,x=x.substring(0,w)),x=x.replace(/^(https?|ftp|wss?)?:+[/\\]*/i,"$1://"),x=x.replace(/^[/\\]{2,}/i,"//"),x.substring(0,2)==="//"?(T.protocol=null,x=x.substring(2),x=r.parseAuthority(x,T)):(w=x.indexOf(":"),w>-1&&(T.protocol=x.substring(0,w)||null,T.protocol&&!T.protocol.match(r.protocol_expression)?T.protocol=void 0:x.substring(w+1,w+3).replace(/\\/g,"/")==="//"?(x=x.substring(w+3),x=r.parseAuthority(x,T)):(x=x.substring(w+1),T.urn=!0))),T.path=x,T},r.parseHost=function(x,T){x||(x=""),x=x.replace(/\\/g,"/");var w=x.indexOf("/"),R,O;if(w===-1&&(w=x.length),x.charAt(0)==="[")R=x.indexOf("]"),T.hostname=x.substring(1,R)||null,T.port=x.substring(R+2,w)||null,T.port==="/"&&(T.port=null);else{var k=x.indexOf(":"),Q=x.indexOf("/"),z=x.indexOf(":",k+1);z!==-1&&(Q===-1||z<Q)?(T.hostname=x.substring(0,w)||null,T.port=null):(O=x.substring(0,w).split(":"),T.hostname=O[0]||null,T.port=O[1]||null)}return T.hostname&&x.substring(w).charAt(0)!=="/"&&(w++,x="/"+x),T.preventInvalidHostname&&r.ensureValidHostname(T.hostname,T.protocol),T.port&&r.ensureValidPort(T.port),x.substring(w)||"/"},r.parseAuthority=function(x,T){return x=r.parseUserinfo(x,T),r.parseHost(x,T)},r.parseUserinfo=function(x,T){var w=x,R=x.indexOf("\\");R!==-1&&(x=x.replace(/\\/g,"/"));var O=x.indexOf("/"),k=x.lastIndexOf("@",O>-1?O:x.length-1),Q;return k>-1&&(O===-1||k<O)?(Q=x.substring(0,k).split(":"),T.username=Q[0]?r.decode(Q[0]):null,Q.shift(),T.password=Q[0]?r.decode(Q.join(":")):null,x=w.substring(k+1)):(T.username=null,T.password=null),x},r.parseQuery=function(x,T){if(!x)return{};if(x=x.replace(/&+/g,"&").replace(/^\?*&*|&+$/g,""),!x)return{};for(var w={},R=x.split("&"),O=R.length,k,Q,z,F=0;F<O;F++)k=R[F].split("="),Q=r.decodeQuery(k.shift(),T),z=k.length?r.decodeQuery(k.join("="),T):null,Q!=="__proto__"&&(c.call(w,Q)?((typeof w[Q]=="string"||w[Q]===null)&&(w[Q]=[w[Q]]),w[Q].push(z)):w[Q]=z);return w},r.build=function(x){var T="",w=!1;return x.protocol&&(T+=x.protocol+":"),!x.urn&&(T||x.hostname)&&(T+="//",w=!0),T+=r.buildAuthority(x)||"",typeof x.path=="string"&&(x.path.charAt(0)!=="/"&&w&&(T+="/"),T+=x.path),typeof x.query=="string"&&x.query&&(T+="?"+x.query),typeof x.fragment=="string"&&x.fragment&&(T+="#"+x.fragment),T},r.buildHost=function(x){var T="";if(x.hostname)r.ip6_expression.test(x.hostname)?T+="["+x.hostname+"]":T+=x.hostname;else return"";return x.port&&(T+=":"+x.port),T},r.buildAuthority=function(x){return r.buildUserinfo(x)+r.buildHost(x)},r.buildUserinfo=function(x){var T="";return x.username&&(T+=r.encode(x.username)),x.password&&(T+=":"+r.encode(x.password)),T&&(T+="@"),T},r.buildQuery=function(x,T,w){var R="",O,k,Q,z;for(k in x)if(k!=="__proto__"&&c.call(x,k))if(h(x[k]))for(O={},Q=0,z=x[k].length;Q<z;Q++)x[k][Q]!==void 0&&O[x[k][Q]+""]===void 0&&(R+="&"+r.buildQueryParameter(k,x[k][Q],w),T!==!0&&(O[x[k][Q]+""]=!0));else x[k]!==void 0&&(R+="&"+r.buildQueryParameter(k,x[k],w));return R.substring(1)},r.buildQueryParameter=function(x,T,w){return r.encodeQuery(x,w)+(T!==null?"="+r.encodeQuery(T,w):"")},r.addQuery=function(x,T,w){if(typeof T=="object")for(var R in T)c.call(T,R)&&r.addQuery(x,R,T[R]);else if(typeof T=="string"){if(x[T]===void 0){x[T]=w;return}else typeof x[T]=="string"&&(x[T]=[x[T]]);h(w)||(w=[w]),x[T]=(x[T]||[]).concat(w)}else throw new TypeError("URI.addQuery() accepts an object, string as the name parameter")},r.setQuery=function(x,T,w){if(typeof T=="object")for(var R in T)c.call(T,R)&&r.setQuery(x,R,T[R]);else if(typeof T=="string")x[T]=w===void 0?null:w;else throw new TypeError("URI.setQuery() accepts an object, string as the name parameter")},r.removeQuery=function(x,T,w){var R,O,k;if(h(T))for(R=0,O=T.length;R<O;R++)x[T[R]]=void 0;else if(f(T)==="RegExp")for(k in x)T.test(k)&&(x[k]=void 0);else if(typeof T=="object")for(k in T)c.call(T,k)&&r.removeQuery(x,k,T[k]);else if(typeof T=="string")w!==void 0?f(w)==="RegExp"?!h(x[T])&&w.test(x[T])?x[T]=void 0:x[T]=A(x[T],w):x[T]===String(w)&&(!h(w)||w.length===1)?x[T]=void 0:h(x[T])&&(x[T]=A(x[T],w)):x[T]=void 0;else throw new TypeError("URI.removeQuery() accepts an object, string, RegExp as the first parameter")},r.hasQuery=function(x,T,w,R){switch(f(T)){case"String":break;case"RegExp":for(var O in x)if(c.call(x,O)&&T.test(O)&&(w===void 0||r.hasQuery(x,O,w)))return!0;return!1;case"Object":for(var k in T)if(c.call(T,k)&&!r.hasQuery(x,k,T[k]))return!1;return!0;default:throw new TypeError("URI.hasQuery() accepts a string, regular expression or object as the name parameter")}switch(f(w)){case"Undefined":return T in x;case"Boolean":var Q=!!(h(x[T])?x[T].length:x[T]);return w===Q;case"Function":return!!w(x[T],T,x);case"Array":if(!h(x[T]))return!1;var z=R?g:m;return z(x[T],w);case"RegExp":return h(x[T])?R?g(x[T],w):!1:!!(x[T]&&x[T].match(w));case"Number":w=String(w);case"String":return h(x[T])?R?g(x[T],w):!1:x[T]===w;default:throw new TypeError("URI.hasQuery() accepts undefined, boolean, string, number, RegExp, Function as the value parameter")}},r.joinPaths=function(){for(var x=[],T=[],w=0,R=0;R<arguments.length;R++){var O=new r(arguments[R]);x.push(O);for(var k=O.segment(),Q=0;Q<k.length;Q++)typeof k[Q]=="string"&&T.push(k[Q]),k[Q]&&w++}if(!T.length||!w)return new r("");var z=new r("").segment(T);return(x[0].path()===""||x[0].path().slice(0,1)==="/")&&z.path("/"+z.path()),z.normalize()},r.commonPath=function(x,T){var w=Math.min(x.length,T.length),R;for(R=0;R<w;R++)if(x.charAt(R)!==T.charAt(R)){R--;break}return R<1?x.charAt(0)===T.charAt(0)&&x.charAt(0)==="/"?"/":"":((x.charAt(R)!=="/"||T.charAt(R)!=="/")&&(R=x.substring(0,R).lastIndexOf("/")),x.substring(0,R+1))},r.withinString=function(x,T,w){w||(w={});var R=w.start||r.findUri.start,O=w.end||r.findUri.end,k=w.trim||r.findUri.trim,Q=w.parens||r.findUri.parens,z=/[a-z0-9-]=["']?$/i;for(R.lastIndex=0;;){var F=R.exec(x);if(!F)break;var H=F.index;if(w.ignoreHtml){var W=x.slice(Math.max(H-3,0),H);if(W&&z.test(W))continue}for(var Z=H+x.slice(H).search(O),Y=x.slice(H,Z),$=-1;;){var X=Q.exec(Y);if(!X)break;var he=X.index+X[0].length;$=Math.max($,he)}if($>-1?Y=Y.slice(0,$)+Y.slice($).replace(k,""):Y=Y.replace(k,""),!(Y.length<=F[0].length)&&!(w.ignore&&w.ignore.test(Y))){Z=H+Y.length;var ge=T(Y,H,Z,x);if(ge===void 0){R.lastIndex=Z;continue}ge=String(ge),x=x.slice(0,H)+ge+x.slice(Z),R.lastIndex=H+ge.length}}return R.lastIndex=0,x},r.ensureValidHostname=function(x,T){var w=!!x,R=!!T,O=!1;if(R&&(O=g(r.hostProtocols,T)),O&&!w)throw new TypeError("Hostname cannot be empty, if protocol is "+T);if(x&&x.match(r.invalid_hostname_characters)){if(!e)throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available');if(e.toASCII(x).match(r.invalid_hostname_characters))throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-:_]')}},r.ensureValidPort=function(x){if(x){var T=Number(x);if(!(s(T)&&T>0&&T<65536))throw new TypeError('Port "'+x+'" is not a valid port')}},r.noConflict=function(x){if(x){var T={URI:this.noConflict()};return i.URITemplate&&typeof i.URITemplate.noConflict=="function"&&(T.URITemplate=i.URITemplate.noConflict()),i.IPv6&&typeof i.IPv6.noConflict=="function"&&(T.IPv6=i.IPv6.noConflict()),i.SecondLevelDomains&&typeof i.SecondLevelDomains.noConflict=="function"&&(T.SecondLevelDomains=i.SecondLevelDomains.noConflict()),T}else i.URI===this&&(i.URI=o);return this},a.build=function(x){return x===!0?this._deferred_build=!0:(x===void 0||this._deferred_build)&&(this._string=r.build(this._parts),this._deferred_build=!1),this},a.clone=function(){return new r(this)},a.valueOf=a.toString=function(){return this.build(!1)._string};function B(x){return function(T,w){return T===void 0?this._parts[x]||"":(this._parts[x]=T||null,this.build(!w),this)}}function v(x,T){return function(w,R){return w===void 0?this._parts[x]||"":(w!==null&&(w=w+"",w.charAt(0)===T&&(w=w.substring(1))),this._parts[x]=w,this.build(!R),this)}}a.protocol=B("protocol"),a.username=B("username"),a.password=B("password"),a.hostname=B("hostname"),a.port=B("port"),a.query=v("query","?"),a.fragment=v("fragment","#"),a.search=function(x,T){var w=this.query(x,T);return typeof w=="string"&&w.length?"?"+w:w},a.hash=function(x,T){var w=this.fragment(x,T);return typeof w=="string"&&w.length?"#"+w:w},a.pathname=function(x,T){if(x===void 0||x===!0){var w=this._parts.path||(this._parts.hostname?"/":"");return x?(this._parts.urn?r.decodeUrnPath:r.decodePath)(w):w}else return this._parts.urn?this._parts.path=x?r.recodeUrnPath(x):"":this._parts.path=x?r.recodePath(x):"/",this.build(!T),this},a.path=a.pathname,a.href=function(x,T){var w;if(x===void 0)return this.toString();this._string="",this._parts=r._parts();var R=x instanceof r,O=typeof x=="object"&&(x.hostname||x.path||x.pathname);if(x.nodeName){var k=r.getDomAttribute(x);x=x[k]||"",O=!1}if(!R&&O&&x.pathname!==void 0&&(x=x.toString()),typeof x=="string"||x instanceof String)this._parts=r.parse(String(x),this._parts);else if(R||O){var Q=R?x._parts:x;for(w in Q)w!=="query"&&c.call(this._parts,w)&&(this._parts[w]=Q[w]);Q.query&&this.query(Q.query,!1)}else throw new TypeError("invalid input");return this.build(!T),this},a.is=function(x){var T=!1,w=!1,R=!1,O=!1,k=!1,Q=!1,z=!1,F=!this._parts.urn;switch(this._parts.hostname&&(F=!1,w=r.ip4_expression.test(this._parts.hostname),R=r.ip6_expression.test(this._parts.hostname),T=w||R,O=!T,k=O&&n&&n.has(this._parts.hostname),Q=O&&r.idn_expression.test(this._parts.hostname),z=O&&r.punycode_expression.test(this._parts.hostname)),x.toLowerCase()){case"relative":return F;case"absolute":return!F;case"domain":case"name":return O;case"sld":return k;case"ip":return T;case"ip4":case"ipv4":case"inet4":return w;case"ip6":case"ipv6":case"inet6":return R;case"idn":return Q;case"url":return!this._parts.urn;case"urn":return!!this._parts.urn;case"punycode":return z}return null};var P=a.protocol,M=a.port,L=a.hostname;a.protocol=function(x,T){if(x&&(x=x.replace(/:(\/\/)?$/,""),!x.match(r.protocol_expression)))throw new TypeError('Protocol "'+x+`" contains characters other than [A-Z0-9.+-] or doesn't start with [A-Z]`);return P.call(this,x,T)},a.scheme=a.protocol,a.port=function(x,T){return this._parts.urn?x===void 0?"":this:(x!==void 0&&(x===0&&(x=null),x&&(x+="",x.charAt(0)===":"&&(x=x.substring(1)),r.ensureValidPort(x))),M.call(this,x,T))},a.hostname=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x!==void 0){var w={preventInvalidHostname:this._parts.preventInvalidHostname},R=r.parseHost(x,w);if(R!=="/")throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-]');x=w.hostname,this._parts.preventInvalidHostname&&r.ensureValidHostname(x,this._parts.protocol)}return L.call(this,x,T)},a.origin=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0){var w=this.protocol(),R=this.authority();return R?(w?w+"://":"")+this.authority():""}else{var O=r(x);return this.protocol(O.protocol()).authority(O.authority()).build(!T),this}},a.host=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0)return this._parts.hostname?r.buildHost(this._parts):"";var w=r.parseHost(x,this._parts);if(w!=="/")throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-]');return this.build(!T),this},a.authority=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0)return this._parts.hostname?r.buildAuthority(this._parts):"";var w=r.parseAuthority(x,this._parts);if(w!=="/")throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-]');return this.build(!T),this},a.userinfo=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0){var w=r.buildUserinfo(this._parts);return w&&w.substring(0,w.length-1)}else return x[x.length-1]!=="@"&&(x+="@"),r.parseUserinfo(x,this._parts),this.build(!T),this},a.resource=function(x,T){var w;return x===void 0?this.path()+this.search()+this.hash():(w=r.parse(x),this._parts.path=w.path,this._parts.query=w.query,this._parts.fragment=w.fragment,this.build(!T),this)},a.subdomain=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0){if(!this._parts.hostname||this.is("IP"))return"";var w=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0,w)||""}else{var R=this._parts.hostname.length-this.domain().length,O=this._parts.hostname.substring(0,R),k=new RegExp("^"+u(O));if(x&&x.charAt(x.length-1)!=="."&&(x+="."),x.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");return x&&r.ensureValidHostname(x,this._parts.protocol),this._parts.hostname=this._parts.hostname.replace(k,x),this.build(!T),this}},a.domain=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(typeof x=="boolean"&&(T=x,x=void 0),x===void 0){if(!this._parts.hostname||this.is("IP"))return"";var w=this._parts.hostname.match(/\./g);if(w&&w.length<2)return this._parts.hostname;var R=this._parts.hostname.length-this.tld(T).length-1;return R=this._parts.hostname.lastIndexOf(".",R-1)+1,this._parts.hostname.substring(R)||""}else{if(!x)throw new TypeError("cannot set domain empty");if(x.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");if(r.ensureValidHostname(x,this._parts.protocol),!this._parts.hostname||this.is("IP"))this._parts.hostname=x;else{var O=new RegExp(u(this.domain())+"$");this._parts.hostname=this._parts.hostname.replace(O,x)}return this.build(!T),this}},a.tld=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(typeof x=="boolean"&&(T=x,x=void 0),x===void 0){if(!this._parts.hostname||this.is("IP"))return"";var w=this._parts.hostname.lastIndexOf("."),R=this._parts.hostname.substring(w+1);return T!==!0&&n&&n.list[R.toLowerCase()]&&n.get(this._parts.hostname)||R}else{var O;if(x)if(x.match(/[^a-zA-Z0-9-]/))if(n&&n.is(x))O=new RegExp(u(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(O,x);else throw new TypeError('TLD "'+x+'" contains characters other than [A-Z0-9]');else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");O=new RegExp(u(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(O,x)}else throw new TypeError("cannot set TLD empty");return this.build(!T),this}},a.directory=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0||x===!0){if(!this._parts.path&&!this._parts.hostname)return"";if(this._parts.path==="/")return"/";var w=this._parts.path.length-this.filename().length-1,R=this._parts.path.substring(0,w)||(this._parts.hostname?"/":"");return x?r.decodePath(R):R}else{var O=this._parts.path.length-this.filename().length,k=this._parts.path.substring(0,O),Q=new RegExp("^"+u(k));return this.is("relative")||(x||(x="/"),x.charAt(0)!=="/"&&(x="/"+x)),x&&x.charAt(x.length-1)!=="/"&&(x+="/"),x=r.recodePath(x),this._parts.path=this._parts.path.replace(Q,x),this.build(!T),this}},a.filename=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(typeof x!="string"){if(!this._parts.path||this._parts.path==="/")return"";var w=this._parts.path.lastIndexOf("/"),R=this._parts.path.substring(w+1);return x?r.decodePathSegment(R):R}else{var O=!1;x.charAt(0)==="/"&&(x=x.substring(1)),x.match(/\.?\//)&&(O=!0);var k=new RegExp(u(this.filename())+"$");return x=r.recodePath(x),this._parts.path=this._parts.path.replace(k,x),O?this.normalizePath(T):this.build(!T),this}},a.suffix=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0||x===!0){if(!this._parts.path||this._parts.path==="/")return"";var w=this.filename(),R=w.lastIndexOf("."),O,k;return R===-1?"":(O=w.substring(R+1),k=/^[a-z0-9%]+$/i.test(O)?O:"",x?r.decodePathSegment(k):k)}else{x.charAt(0)==="."&&(x=x.substring(1));var Q=this.suffix(),z;if(Q)x?z=new RegExp(u(Q)+"$"):z=new RegExp(u("."+Q)+"$");else{if(!x)return this;this._parts.path+="."+r.recodePath(x)}return z&&(x=r.recodePath(x),this._parts.path=this._parts.path.replace(z,x)),this.build(!T),this}},a.segment=function(x,T,w){var R=this._parts.urn?":":"/",O=this.path(),k=O.substring(0,1)==="/",Q=O.split(R);if(x!==void 0&&typeof x!="number"&&(w=T,T=x,x=void 0),x!==void 0&&typeof x!="number")throw new Error('Bad segment "'+x+'", must be 0-based integer');if(k&&Q.shift(),x<0&&(x=Math.max(Q.length+x,0)),T===void 0)return x===void 0?Q:Q[x];if(x===null||Q[x]===void 0)if(h(T)){Q=[];for(var z=0,F=T.length;z<F;z++)!T[z].length&&(!Q.length||!Q[Q.length-1].length)||(Q.length&&!Q[Q.length-1].length&&Q.pop(),Q.push(_(T[z])))}else(T||typeof T=="string")&&(T=_(T),Q[Q.length-1]===""?Q[Q.length-1]=T:Q.push(T));else T?Q[x]=_(T):Q.splice(x,1);return k&&Q.unshift(""),this.path(Q.join(R),w)},a.segmentCoded=function(x,T,w){var R,O,k;if(typeof x!="number"&&(w=T,T=x,x=void 0),T===void 0){if(R=this.segment(x,T,w),!h(R))R=R!==void 0?r.decode(R):void 0;else for(O=0,k=R.length;O<k;O++)R[O]=r.decode(R[O]);return R}if(!h(T))T=typeof T=="string"||T instanceof String?r.encode(T):T;else for(O=0,k=T.length;O<k;O++)T[O]=r.encode(T[O]);return this.segment(x,T,w)};var p=a.query;return a.query=function(x,T){if(x===!0)return r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if(typeof x=="function"){var w=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace),R=x.call(this,w);return this._parts.query=r.buildQuery(R||w,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!T),this}else return x!==void 0&&typeof x!="string"?(this._parts.query=r.buildQuery(x,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!T),this):p.call(this,x,T)},a.setQuery=function(x,T,w){var R=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if(typeof x=="string"||x instanceof String)R[x]=T!==void 0?T:null;else if(typeof x=="object")for(var O in x)c.call(x,O)&&(R[O]=x[O]);else throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");return this._parts.query=r.buildQuery(R,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof x!="string"&&(w=T),this.build(!w),this},a.addQuery=function(x,T,w){var R=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.addQuery(R,x,T===void 0?null:T),this._parts.query=r.buildQuery(R,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof x!="string"&&(w=T),this.build(!w),this},a.removeQuery=function(x,T,w){var R=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.removeQuery(R,x,T),this._parts.query=r.buildQuery(R,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof x!="string"&&(w=T),this.build(!w),this},a.hasQuery=function(x,T,w){var R=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.hasQuery(R,x,T,w)},a.setSearch=a.setQuery,a.addSearch=a.addQuery,a.removeSearch=a.removeQuery,a.hasSearch=a.hasQuery,a.normalize=function(){return this._parts.urn?this.normalizeProtocol(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build():this.normalizeProtocol(!1).normalizeHostname(!1).normalizePort(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build()},a.normalizeProtocol=function(x){return typeof this._parts.protocol=="string"&&(this._parts.protocol=this._parts.protocol.toLowerCase(),this.build(!x)),this},a.normalizeHostname=function(x){return this._parts.hostname&&(this.is("IDN")&&e?this._parts.hostname=e.toASCII(this._parts.hostname):this.is("IPv6")&&t&&(this._parts.hostname=t.best(this._parts.hostname)),this._parts.hostname=this._parts.hostname.toLowerCase(),this.build(!x)),this},a.normalizePort=function(x){return typeof this._parts.protocol=="string"&&this._parts.port===r.defaultPorts[this._parts.protocol]&&(this._parts.port=null,this.build(!x)),this},a.normalizePath=function(x){var T=this._parts.path;if(!T)return this;if(this._parts.urn)return this._parts.path=r.recodeUrnPath(this._parts.path),this.build(!x),this;if(this._parts.path==="/")return this;T=r.recodePath(T);var w,R="",O,k;for(T.charAt(0)!=="/"&&(w=!0,T="/"+T),(T.slice(-3)==="/.."||T.slice(-2)==="/.")&&(T+="/"),T=T.replace(/(\/(\.\/)+)|(\/\.$)/g,"/").replace(/\/{2,}/g,"/"),w&&(R=T.substring(1).match(/^(\.\.\/)+/)||"",R&&(R=R[0]));O=T.search(/\/\.\.(\/|$)/),O!==-1;){if(O===0){T=T.substring(3);continue}k=T.substring(0,O).lastIndexOf("/"),k===-1&&(k=O),T=T.substring(0,k)+T.substring(O+3)}return w&&this.is("relative")&&(T=R+T.substring(1)),this._parts.path=T,this.build(!x),this},a.normalizePathname=a.normalizePath,a.normalizeQuery=function(x){return typeof this._parts.query=="string"&&(this._parts.query.length?this.query(r.parseQuery(this._parts.query,this._parts.escapeQuerySpace)):this._parts.query=null,this.build(!x)),this},a.normalizeFragment=function(x){return this._parts.fragment||(this._parts.fragment=null,this.build(!x)),this},a.normalizeSearch=a.normalizeQuery,a.normalizeHash=a.normalizeFragment,a.iso8859=function(){var x=r.encode,T=r.decode;r.encode=escape,r.decode=decodeURIComponent;try{this.normalize()}finally{r.encode=x,r.decode=T}return this},a.unicode=function(){var x=r.encode,T=r.decode;r.encode=C,r.decode=unescape;try{this.normalize()}finally{r.encode=x,r.decode=T}return this},a.readable=function(){var x=this.clone();x.username("").password("").normalize();var T="";if(x._parts.protocol&&(T+=x._parts.protocol+"://"),x._parts.hostname&&(x.is("punycode")&&e?(T+=e.toUnicode(x._parts.hostname),x._parts.port&&(T+=":"+x._parts.port)):T+=x.host()),x._parts.hostname&&x._parts.path&&x._parts.path.charAt(0)!=="/"&&(T+="/"),T+=x.path(!0),x._parts.query){for(var w="",R=0,O=x._parts.query.split("&"),k=O.length;R<k;R++){var Q=(O[R]||"").split("=");w+="&"+r.decodeQuery(Q[0],this._parts.escapeQuerySpace).replace(/&/g,"%26"),Q[1]!==void 0&&(w+="="+r.decodeQuery(Q[1],this._parts.escapeQuerySpace).replace(/&/g,"%26"))}T+="?"+w.substring(1)}return T+=r.decodeQuery(x.hash(),!0),T},a.absoluteTo=function(x){var T=this.clone(),w=["protocol","username","password","hostname","port"],R,O,k;if(this._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(x instanceof r||(x=new r(x)),T._parts.protocol||(T._parts.protocol=x._parts.protocol,this._parts.hostname))return T;for(O=0;k=w[O];O++)T._parts[k]=x._parts[k];return T._parts.path?(T._parts.path.substring(-2)===".."&&(T._parts.path+="/"),T.path().charAt(0)!=="/"&&(R=x.directory(),R=R||(x.path().indexOf("/")===0?"/":""),T._parts.path=(R?R+"/":"")+T._parts.path,T.normalizePath())):(T._parts.path=x._parts.path,T._parts.query||(T._parts.query=x._parts.query)),T.build(),T},a.relativeTo=function(x){var T=this.clone().normalize(),w,R,O,k,Q;if(T._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(x=new r(x).normalize(),w=T._parts,R=x._parts,k=T.path(),Q=x.path(),k.charAt(0)!=="/")throw new Error("URI is already relative");if(Q.charAt(0)!=="/")throw new Error("Cannot calculate a URI relative to another relative URI");if(w.protocol===R.protocol&&(w.protocol=null),w.username!==R.username||w.password!==R.password||w.protocol!==null||w.username!==null||w.password!==null)return T.build();if(w.hostname===R.hostname&&w.port===R.port)w.hostname=null,w.port=null;else return T.build();if(k===Q)return w.path="",T.build();if(O=r.commonPath(k,Q),!O)return T.build();var z=R.path.substring(O.length).replace(/[^\/]*$/,"").replace(/.*?\//g,"../");return w.path=z+w.path.substring(O.length)||"./",T.build()},a.equals=function(x){var T=this.clone(),w=new r(x),R={},O={},k={},Q,z,F;if(T.normalize(),w.normalize(),T.toString()===w.toString())return!0;if(Q=T.query(),z=w.query(),T.query(""),w.query(""),T.toString()!==w.toString()||Q.length!==z.length)return!1;R=r.parseQuery(Q,this._parts.escapeQuerySpace),O=r.parseQuery(z,this._parts.escapeQuerySpace);for(F in R)if(c.call(R,F)){if(h(R[F])){if(!m(R[F],O[F]))return!1}else if(R[F]!==O[F])return!1;k[F]=!0}for(F in O)if(c.call(O,F)&&!k[F])return!1;return!0},a.preventInvalidHostname=function(x){return this._parts.preventInvalidHostname=!!x,this},a.duplicateQueryParameters=function(x){return this._parts.duplicateQueryParameters=!!x,this},a.escapeQuerySpace=function(x){return this._parts.escapeQuerySpace=!!x,this},r})});var _ae=ui((YR,QW)=>{var pz=function(){"use strict";var e="b9H79Tebbbe9ok9Geueu9Geub9Gbb9Gruuuuuuueu9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9Giuuueui8AYdilveoveovrrwrrDDoDrbqqbelve9Weiiviebeoweuec;G:Qdkr:nlAo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9mW4W2be8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbd8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbiE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UblY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbv8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbo8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UbrE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbwa9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbDL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbqK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbkL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbxE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbza9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbHK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbOl79IV9RbCDwebcekdKLqN9OYdbk:Bhdhud9:8Jjjjjbc;qw9Rgr8KjjjjbcbhwdnaeTmbabcbyd;C:kjjbaoaocb9iEgDc:GeV86bbarc;adfcbcjdz:wjjjb8AdnaiTmbarc;adfadalz:vjjjb8Akarc;abfalfcbcbcjdal9RalcFe0Ez:wjjjb8Aarc;abfarc;adfalz:vjjjb8AarcUf9cb83ibarc8Wf9cb83ibarcyf9cb83ibarcaf9cb83ibarcKf9cb83ibarczf9cb83ibar9cb83iwar9cb83ibcj;abal9Uc;WFbGcjdalca0Ehqdnaicd6mbavcd9imbaDTmbadcefhkaqci2gxal2hmarc;alfclfhParc;qlfceVhsarc;qofclVhzarc;qofcKfhHarc;qofczfhOcbhAincdhCcbhodnavci6mbaH9cb83ibaO9cb83ibar9cb83i;yoar9cb83i;qoadaAfgoybbhXcbhQincbhwcbhLdninaoalfhKaoybbgYaX7aLVhLawcP0meaKhoaYhXawcefgwaQfai6mbkkcbhXarc;qofhwincwh8AcwhEdnaLaX93gocFeGg3cs0mbclhEa3ci0mba3cb9hcethEkdnaocw4cFeGg3cs0mbclh8Aa3ci0mba3cb9hceth8Aka8AaEfh3awydbh5cwh8AcwhEdnaocz4cFeGg8Ecs0mbclhEa8Eci0mba8Ecb9hcethEka3a5fh3dnaocFFFFb0mbclh8AaocFFF8F0mbaocFFFr0ceth8Akawa3aEfa8AfBdbawclfhwaXcefgXcw9hmbkaKhoaYhXaQczfgQai6mbkcbhocehwazhLinawaoaLydbarc;qofaocdtfydb6EhoaLclfhLawcefgwcw9hmbkcihCkcbh3arc;qlfcbcjdz:wjjjb8Aarc;alfcwfcbBdbar9cb83i;alaoclth8Fadhaaqhhakh5inarc;qlfadcba3cufgoaoa30Eal2falz:vjjjb8Aaiahaiah6Ehgdnaqaia39Ra3aqfai6EgYcsfc9WGgoaY9nmbarc;qofaYfcbaoaY9Rz:wjjjb8Akada3al2fh8Jcbh8Kina8Ka8FVcl4hQarc;alfa8Kcdtfh8LaAh8Mcbh8Nina8NaAfhwdndndndndndna8KPldebidkasa8Mc98GgLfhoa5aLfh8Aarc;qlfawc98GgLfRbbhXcwhwinaoRbbawtaXVhXaocefhoawcwfgwca9hmbkaYTmla8Ncith8Ea8JaLfhEcbhKinaERbbhLcwhoa8AhwinawRbbaotaLVhLawcefhwaocwfgoca9hmbkarc;qofaKfaLaX7aQ93a8E486bba8Aalfh8AaEalfhEaLhXaKcefgKaY9hmbxlkkaYTmia8Mc9:Ghoa8NcitcwGhEarc;qlfawceVfRbbcwtarc;qlfawc9:GfRbbVhLarc;qofhwaghXinawa5aofRbbcwtaaaofRbbVg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbaoalfhoawcefhwa8AhLa3aXcufgX9hmbxikkaYTmda8Jawfhoarc;qlfawfRbbhLarc;qofhwaghXinawaoRbbg8AaL9RgLcetaLcKtcK91cr4786bbawcefhwaoalfhoa8AhLa3aXcufgX9hmbxdkkaYTmeka8LydbhEcbhKarc;qofhoincdhLcbhwinaLaoawfRbbcb9hfhLawcefgwcz9hmbkclhXcbhwinaXaoawfRbbcd0fhXawcefgwcz9hmbkcwh8Acbhwina8AaoawfRbbcP0fh8Aawcefgwcz9hmbkaLaXaLaX6Egwa8Aawa8A6Egwczawcz6EaEfhEaoczfhoaKczfgKaY6mbka8LaEBdbka8Mcefh8Ma8Ncefg8Ncl9hmbka8Kcefg8KaC9hmbkaaamfhaahaxfhha5amfh5a3axfg3ai6mbkcbhocehwaPhLinawaoaLydbarc;alfaocdtfydb6EhoaLclfhLawcefgXhwaCaX9hmbkaraAcd4fa8FcdVaoaocdSE86bbaAclfgAal6mbkkabaefh8Kabcefhoalcd4gecbaDEhkadcefhOarc;abfceVhHcbhmdndninaiam9nmearc;qofcbcjdz:wjjjb8Aa8Kao9Rak6mdadamal2gwfhxcbh8JaOawfhzaocbakz:wjjjbghakfh5aqaiam9Ramaqfai6Egscsfgocl4cifcd4hCaoc9WGg8LThPindndndndndndndndndndnaDTmbara8Jcd4fRbbgLciGPlbedlbkasTmdaxa8Jfhoarc;abfa8JfRbbhLarc;qofhwashXinawaoRbbg8AaL9RgLcetaLcKtcK91cr4786bbawcefhwaoalfhoa8AhLaXcufgXmbxikkasTmia8JcitcwGhEarc;abfa8JceVfRbbcwtarc;abfa8Jc9:GgofRbbVhLaxaofhoarc;qofhwashXinawao8Vbbg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbawcefhwaoalfhoa8AhLaXcufgXmbxdkkaHa8Jc98GgEfhoazaEfh8Aarc;abfaEfRbbhXcwhwinaoRbbawtaXVhXaocefhoawcwfgwca9hmbkasTmbaLcl4hYa8JcitcKGh3axaEfhEcbhKinaERbbhLcwhoa8AhwinawRbbaotaLVhLawcefhwaocwfgoca9hmbkarc;qofaKfaLaX7aY93a3486bba8Aalfh8AaEalfhEaLhXaKcefgKas9hmbkkaDmbcbhoxlka8LTmbcbhodninarc;qofaofgwcwf8Pibaw8Pib:e9qTmeaoczfgoa8L9pmdxbkkdnavmbcehoxikcbhEaChKaChYinarc;qofaEfgocwf8Pibhyao8Pibh8PcdhLcbhwinaLaoawfRbbcb9hfhLawcefgwcz9hmbkclhXcbhwinaXaoawfRbbcd0fhXawcefgwcz9hmbkcwh8Acbhwina8AaoawfRbbcP0fh8Aawcefgwcz9hmbkaLaXaLaX6Egoa8Aaoa8A6Egoczaocz6EaYfhYaocucbaya8P:e9cb9sEgwaoaw6EaKfhKaEczfgEa8L9pmdxbkkaha8Jcd4fgoaoRbbcda8JcetcoGtV86bbxikdnaKas6mbaYas6mbaha8Jcd4fgoaoRbbcia8JcetcoGtV86bba8Ka59Ras6mra5arc;qofasz:vjjjbasfh5xikaKaY9phokaha8Jcd4fgwawRbbaoa8JcetcoGtV86bbka8Ka59RaC6mla5cbaCz:wjjjbgAaCfhYdndna8LmbaPhoxekdna8KaY9RcK9pmbaPhoxekaocdtc:q1jjbfcj1jjbaDEg5ydxggcetc;:FFFeGh8Fcuh3cuagtcu7cFeGhacbh8Marc;qofhLinarc;qofa8MfhQczhEdndndnagPDbeeeeeeedekcucbaQcwf8PibaQ8Pib:e9cb9sEhExekcbhoa8FhEinaEaaaLaofRbb9nfhEaocefgocz9hmbkkcih8Ecbh8Ainczhwdndndna5a8AcdtfydbgKPDbeeeeeeedekcucbaQcwf8PibaQ8Pib:e9cb9sEhwxekaKcetc;:FFFeGhwcuaKtcu7cFeGhXcbhoinawaXaLaofRbb9nfhwaocefgocz9hmbkkdndnawaE6mbaKa39hmeawaE9hmea5a8EcdtfydbcwSmeka8Ah8EawhEka8Acefg8Aci9hmbkaAa8Mco4fgoaoRbba8Ea8Mci4coGtV86bbdndndna5a8Ecdtfydbg3PDdbbbbbbbebkdncwa39Tg8ETmbcua3tcu7hwdndna3ceSmbcbh8NaLhQinaQhoa8Eh8AcbhXinaoRbbgEawcFeGgKaEaK6EaXa3tVhXaocefhoa8Acufg8AmbkaYaX86bbaQa8EfhQaYcefhYa8Na8Efg8Ncz6mbxdkkcbh8NaLhQinaQhoa8Eh8AcbhXinaoRbbgEawcFeGgKaEaK6EaXcetVhXaocefhoa8Acufg8AmbkaYaX:T9cFe:d9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:9ca188bbaQa8EfhQaYcefhYa8Na8Efg8Ncz6mbkkcbhoinaYaLaofRbbgX86bbaYaXawcFeG9pfhYaocefgocz9hmbxikkdna3ceSmbinaYcb86bbaYcefhYxbkkinaYcb86bbaYcefhYxbkkaYaQ8Pbb83bbaYcwfaQcwf8Pbb83bbaYczfhYka8Mczfg8Ma8L9pgomeaLczfhLa8KaY9RcK9pmbkkaoTmlaYh5aYTmlka8Jcefg8Jal9hmbkarc;abfaxascufal2falz:vjjjb8Aasamfhma5hoa5mbkcbhwxdkdna8Kao9RakalfgwcKcaaDEgLawaL0EgX9pmbcbhwxdkdnawaL9pmbaocbaXaw9Rgwz:wjjjbawfhokaoarc;adfalz:vjjjbalfhodnaDTmbaoaraez:vjjjbaefhokaoab9Rhwxekcbhwkarc;qwf8Kjjjjbawk5babaeadaialcdcbyd;C:kjjbz:bjjjbk9reduaecd4gdaefgicaaica0Eabcj;abae9Uc;WFbGcjdaeca0Egifcufai9Uae2aiadfaicl4cifcd4f2fcefkmbcbabBd;C:kjjbk:Ese5u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd;m:kjjbgrc;GeV86bbalc;abfcFecjez:wjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgLydbhKaLcwfydbhYaLclfydbh8AcbhEdndndninalc;abfavcsGcitfgoydlh3dndndnaoydbgoaK9hmba3a8ASmekdnaoa8A9hmba3aY9hmbaEcefhExekaoaY9hmea3aK9hmeaEcdfhEkaEc870mdaXcufhvaLaEciGcx2goc;i1jjbfydbcdtfydbh3aLaoc;e1jjbfydbcdtfydbh8AaLaoc;a1jjbfydbcdtfydbhKcbhodnindnalavcsGcdtfydba39hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaOa3aOSgvaYce9iaYaH9oVgoGfhOdndndncbcsavEaYaoEgvcs9hmbarce9imba3a3aAa3cefaASgvEgAcefSmecmcsavEhvkasavaEcdtc;WeGV86bbavcs9hmea3aA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbka3hAxvkcPhvasaEcdtcPV86bba3hAkavTmiavaH9omicdhocehEaQhYxlkavcufhvaEclfgEc;ab9hmbkkdnaLceaYaOSceta8AaOSEcx2gvc;a1jjbfydbcdtfydbgKTaLavc;e1jjbfydbcdtfydbg8AceSGaLavc;i1jjbfydbcdtfydbg3cdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhYxdkcuhYaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydba39hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaKaOSg8EfhLdndnaYcm0mbaYcefhYxekcbcsa8AaLSgvEhYaLavfhLkdndnaEcm0mbaEcefhExekcbcsa3aLSgvEhEaLavfhLkc9:cua8EEh8FcbhvaEaYcltVgacFeGhodndndninavc:W1jjbfRbbaoSmeavcefgvcz9hmbxdkka5aKaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeaa86bbaecefhekdna8EmbaKaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaKhAkdnaYcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmba3aA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka3hAkalaXcdtfaKBdbaXcefcsGhvdndnaYPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfa3BdbavcefcsGhvkcihoalc;abfaQcitfgEaKBdlaEa8ABdbaQcefcsGhYcdhEavhXaLhOxekcdhoalaXcdtfa3BdbcehEaXcefcsGhXaQhYkalc;abfaYcitfgva8ABdlava3Bdbalc;abfaQaEfcsGcitfgva3BdlavaKBdbascefhsaQaofcsGhQaCcifgCai6mbkkdnaeaP9nmbcbhvxekcbhvinaeavfavc:W1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd;m:kjjbk:Adewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb;m:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkdnaoar9nmbcbskaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:bvli99dui99ludnaeTmbcuadcetcuftcu7:Zhvdndncuaicuftcu7:ZgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhrdndnakJbbbb9GTmbaxhqxekJbbjZar:l:tgqaq:maxJbbbb9GEhqJbbjZax:l:tgxax:marJbbbb9GEhrkdndnalcxfIdbgxJbbj:;axJbbj:;9GEgkJbbjZakJbbjZ9FEavNJbbbZJbbb:;axJbbbb9GEMgx:lJbbb9p9DTmbax:Ohmxekcjjjj94hmkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEaoNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;hlld99eud99eudnaeTmbdndncuaicuftcu7:ZgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoalaicd7cdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNaoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk;3viDue99eu8Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6meaohwarhDinawc:CuBdbawclfhwaDcufgDmbkaeTmiadcl6mdarcdthqalhkcbhxinaohwakhDarhminawawydbgPcbaDIdbgs:8cL4cFeGc:cufasJbbbb9BEgzaPaz9kEBdbaDclfhDawclfhwamcufgmmbkakaqfhkaxcefgxaeSmixbkkaeTmdxekaeTmekarcdthkavce9hhqadcl6hdcbhxindndndnaqmbadmdc:CuhDalhwarhminaDcbawIdbgs:8cL4cFeGc:cufasJbbbb9BEgPaDaP9kEhDawclfhwamcufgmmbxdkkc:CuhDdndnavPleddbdkadmdaohwalhmarhPinawcbamIdbgs:8cL4cFeGgzc;:bazc;:b0Ec:cufasJbbbb9BEBdbamclfhmawclfhwaPcufgPmbxdkkadmecbhwarhminaoawfcbalawfIdbgs:8cL4cFeGgPc8AaPc8A0Ec:cufasJbbbb9BEBdbawclfhwamcufgmmbkkadmbcbhwarhPinaDhmdnavceSmbaoawfydbhmkdndnalawfIdbgscjjj;8iamai9RcefgmcLt9R::NJbbbZJbbb:;asJbbbb9GEMgs:lJbbb9p9DTmbas:Ohzxekcjjjj94hzkabawfazcFFFrGamcKtVBdbawclfhwaPcufgPmbkkabakfhbalakfhlaxcefgxae9hmbkkaocjdf8Kjjjjbk;YqdXui998Jjjjjbc:qd9Rgv8Kjjjjbavc:Sefcbc;Kbz:wjjjb8AcbhodnadTmbcbhoaiTmbdndnabaeSmbaehrxekavcuadcdtgwadcFFFFi0Ecbyd;u:kjjbHjjjjbbgrBd:SeavceBd:mdaraeawz:vjjjb8Akavc:GefcwfcbBdbav9cb83i:Geavc:Gefaradaiavc:Sefz:ojjjbavyd:GehDadci9Ugqcbyd;u:kjjbHjjjjbbheavc:Sefavyd:mdgkcdtfaeBdbavakcefgwBd:mdaecbaqz:wjjjbhxavc:SefawcdtfcuaicdtaicFFFFi0Ecbyd;u:kjjbHjjjjbbgmBdbavakcdfgPBd:mdalc;ebfhsaDheamhwinawalIdbasaeydbgzcwazcw6EcdtfIdbMUdbaeclfheawclfhwaicufgimbkavc:SefaPcdtfcuaqcdtadcFFFF970Ecbyd;u:kjjbHjjjjbbgPBdbdnadci6mbarheaPhwaqhiinawamaeydbcdtfIdbamaeclfydbcdtfIdbMamaecwfydbcdtfIdbMUdbaecxfheawclfhwaicufgimbkkakcifhoalc;ebfhHavc;qbfhOavheavyd:KehAavyd:OehCcbhzcbhwcbhXcehQinaehLcihkarawci2gKcdtfgeydbhsaeclfydbhdabaXcx2fgicwfaecwfydbgYBdbaiclfadBdbaiasBdbaxawfce86bbaOaYBdwaOadBdlaOasBdbaPawcdtfcbBdbdnazTmbcihkaLhiinaOakcdtfaiydbgeBdbakaeaY9haeas9haead9hGGfhkaiclfhiazcufgzmbkkaXcefhXcbhzinaCaAarazaKfcdtfydbcdtgifydbcdtfgYheaDaifgdydbgshidnasTmbdninaeydbawSmeaeclfheaicufgiTmdxbkkaeaYascdtfc98fydbBdbadadydbcufBdbkazcefgzci9hmbkdndnakTmbcuhwJbbbbh8Acbhdavyd:KehYavyd:OehKindndnaDaOadcdtfydbcdtgzfydbgembadcefhdxekadcs0hiamazfgsIdbhEasalcbadcefgdaiEcdtfIdbaHaecwaecw6EcdtfIdbMg3Udba3aE:th3aecdthiaKaYazfydbcdtfheinaPaeydbgzcdtfgsa3asIdbMgEUdbaEa8Aa8AaE9DgsEh8AazawasEhwaeclfheaic98fgimbkkadak9hmbkawcu9hmekaQaq9pmdindnaxaQfRbbmbaQhwxdkaqaQcefgQ9hmbxikkakczakcz6EhzaOheaLhOawcu9hmbkkaocdtavc:Seffc98fhedninaoTmeaeydbcbyd;q:kjjbH:bjjjbbaec98fheaocufhoxbkkavc:qdf8Kjjjjbk;IlevucuaicdtgvaicFFFFi0Egocbyd;u:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd;u:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd;u:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavz:wjjjb8Aadci9UhDdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic;K1jjbz:njjjbkQbabaeadaic;m:jjjbz:njjjbk9DeeuabcFeaicdtz:wjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk:Vvioud9:du8Jjjjjbc;Wa9Rgl8Kjjjjbcbhvalcxfcbc;Kbz:wjjjb8AalcuadcitgoadcFFFFe0Ecbyd;u:kjjbHjjjjbbgrBdxalceBd2araeadaicez:tjjjbalcuaoadcjjjjoGEcbyd;u:kjjbHjjjjbbgwBdzadcdthednadTmbabhiinaiavBdbaiclfhiadavcefgv9hmbkkawaefhDalabBdwalawBdl9cbhqindnadTmbaq9cq9:hkarhvaDhiadheinaiav8Pibak1:NcFrG87ebavcwfhvaicdfhiaecufgembkkalclfaq:NceGcdtfydbhxalclfaq9ce98gq:NceGcdtfydbhmalc;Wbfcbcjaz:wjjjb8AaDhvadhidnadTmbinalc;Wbfav8VebcdtfgeaeydbcefBdbavcdfhvaicufgimbkkcbhvcbhiinalc;WbfavfgeydbhoaeaiBdbaoaifhiavclfgvcja9hmbkadhvdndnadTmbinalc;WbfaDamydbgicetf8VebcdtfgeaeydbgecefBdbaxaecdtfaiBdbamclfhmavcufgvmbkaq9cv9smdcbhvinabawydbcdtfavBdbawclfhwadavcefgv9hmbxdkkaq9cv9smekkclhvdninavc98Smealcxfavfydbcbyd;q:kjjbH:bjjjbbavc98fhvxbkkalc;Waf8Kjjjjbk:Jwliuo99iud9:cbhv8Jjjjjbca9Rgoczfcwfcbyd:8:kjjbBdbaocb8Pd:0:kjjb83izaocwfcbyd;i:kjjbBdbaocb8Pd;a:kjjb83ibaicd4hrdndnadmbJFFuFhwJFFuuhDJFFuuhqJFFuFhkJFFuuhxJFFuFhmxekarcdthPaehsincbhiinaoczfaifgzasaifIdbgwazIdbgDaDaw9EEUdbaoaifgzawazIdbgDaDaw9DEUdbaiclfgicx9hmbkasaPfhsavcefgvad9hmbkaoIdKhDaoIdwhwaoIdChqaoIdlhkaoIdzhxaoIdbhmkdnadTmbJbbbbJbFu9hJbbbbamax:tgmamJbbbb9DEgmakaq:tgkakam9DEgkawaD:tgwawak9DEgw:vawJbbbb9BEhwdnalmbarcdthoindndnaeclfIdbaq:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:S9cC:ghHdndnaeIdbax:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikaHai:S:ehHdndnaecwfIdbaD:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabaHai:T9cy:g:e83ibaeaofheabcwfhbadcufgdmbxdkkarcdthoindndnaeIdbax:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cv9:9c;j:KM;j:KM;j:Kd:dhOdndnaeclfIdbaq:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cq9:9cM;j:KM;j:KM;jl:daO:ehOdndnaecwfIdbaD:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabaOai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cC9:9c:KM;j:KM;j:KMD:d:e83ibaeaofheabcwfhbadcufgdmbkkk9teiucbcbyd;y:kjjbgeabcifc98GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;y:kjjbgeabcrfc94GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;y:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;y:kjjbfgdBd;y:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk;Qddbcjwk;mdbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbbbbbbbbbbbbb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc;mqkzebbbebbbdbbb9G:vbb",t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(e),{}).then(function(g){n=g.instance,n.exports.__wasm_call_ctors(),n.exports.meshopt_encodeVertexVersion(0),n.exports.meshopt_encodeIndexVersion(1)});function o(g){for(var m=new Uint8Array(g.length),_=0;_<g.length;++_){var y=g.charCodeAt(_);m[_]=y>96?y-97:y>64?y-39:y+4}for(var C=0,_=0;_<g.length;++_)m[C++]=m[_]<60?t[m[_]]:(m[_]-60)*64+m[++_];return m.buffer.slice(0,C)}function r(g){if(!g)throw new Error("Assertion failed")}function s(g){return new Uint8Array(g.buffer,g.byteOffset,g.byteLength)}function a(g,m,_,y){var C=n.exports.sbrk,E=C(m.length*4),I=C(_*4),b=new Uint8Array(n.exports.memory.buffer),S=s(m);b.set(S,E),y&&y(E,E,m.length,_);var B=g(I,E,m.length,_);b=new Uint8Array(n.exports.memory.buffer);var v=new Uint32Array(_);new Uint8Array(v.buffer).set(b.subarray(I,I+_*4)),S.set(b.subarray(E,E+m.length*4)),C(E-C(0));for(var P=0;P<m.length;++P)m[P]=v[m[P]];return[v,B]}function c(g,m,_,y){var C=n.exports.sbrk,E=C(_*4),I=C(_*y),b=new Uint8Array(n.exports.memory.buffer);b.set(s(m),I),g(E,I,_,y),b=new Uint8Array(n.exports.memory.buffer);var S=new Uint32Array(_);return new Uint8Array(S.buffer).set(b.subarray(E,E+_*4)),C(E-C(0)),S}function u(g,m,_,y,C){var E=n.exports.sbrk,I=E(m),b=E(y*C),S=new Uint8Array(n.exports.memory.buffer);S.set(s(_),b);var B=g(I,m,b,y,C),v=new Uint8Array(B);return v.set(S.subarray(I,I+B)),E(I-E(0)),v}function f(g){for(var m=0,_=0;_<g.length;++_){var y=g[_];m=m<y?y:m}return m}function h(g,m){if(r(m==2||m==4),m==4)return new Uint32Array(g.buffer,g.byteOffset,g.byteLength/4);var _=new Uint16Array(g.buffer,g.byteOffset,g.byteLength/2);return new Uint32Array(_)}function A(g,m,_,y,C,E,I){var b=n.exports.sbrk,S=b(_*y),B=b(_*E),v=new Uint8Array(n.exports.memory.buffer);v.set(s(m),B),g(S,_,y,C,B,I);var P=new Uint8Array(_*y);return P.set(v.subarray(S,S+_*y)),b(S-b(0)),P}return{ready:i,supported:!0,reorderMesh:function(g,m,_){var y=m?_?n.exports.meshopt_optimizeVertexCacheStrip:n.exports.meshopt_optimizeVertexCache:void 0;return a(n.exports.meshopt_optimizeVertexFetchRemap,g,f(g)+1,y)},reorderPoints:function(g,m){return r(g instanceof Float32Array),r(g.length%m==0),r(m>=3),c(n.exports.meshopt_spatialSortRemap,g,g.length/m,m*4)},encodeVertexBuffer:function(g,m,_){r(_>0&&_<=256),r(_%4==0);var y=n.exports.meshopt_encodeVertexBufferBound(m,_);return u(n.exports.meshopt_encodeVertexBuffer,y,g,m,_)},encodeIndexBuffer:function(g,m,_){r(_==2||_==4),r(m%3==0);var y=h(g,_),C=n.exports.meshopt_encodeIndexBufferBound(m,f(y)+1);return u(n.exports.meshopt_encodeIndexBuffer,C,y,m,4)},encodeIndexSequence:function(g,m,_){r(_==2||_==4);var y=h(g,_),C=n.exports.meshopt_encodeIndexSequenceBound(m,f(y)+1);return u(n.exports.meshopt_encodeIndexSequence,C,y,m,4)},encodeGltfBuffer:function(g,m,_,y){var C={ATTRIBUTES:this.encodeVertexBuffer,TRIANGLES:this.encodeIndexBuffer,INDICES:this.encodeIndexSequence};return r(C[y]),C[y](g,m,_)},encodeFilterOct:function(g,m,_,y){return r(_==4||_==8),r(y>=1&&y<=16),A(n.exports.meshopt_encodeFilterOct,g,m,_,y,16)},encodeFilterQuat:function(g,m,_,y){return r(_==8),r(y>=4&&y<=16),A(n.exports.meshopt_encodeFilterQuat,g,m,_,y,16)},encodeFilterExp:function(g,m,_,y,C){r(_>0&&_%4==0),r(y>=1&&y<=24);var E={Separate:0,SharedVector:1,SharedComponent:2,Clamped:3};return A(n.exports.meshopt_encodeFilterExp,g,m,_,y,_,C?E[C]:1)}}}();typeof YR=="object"&&typeof QW=="object"?QW.exports=pz:typeof define=="function"&&define.amd?define([],function(){return pz}):typeof YR=="object"?YR.MeshoptEncoder=pz:(typeof self<"u"?self:YR).MeshoptEncoder=pz});var yae=ui((qR,kW)=>{var gz=function(){"use strict";var e="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:W:Odkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:S86qdbk;jYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz1jjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbhodnawTmbaxa8Acd4fRbbhokaocFeGh5cbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz1jjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:jjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q1jjbfcj1jjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bbarcwf9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfag9c8F1:NghcKtc8F91aicdfa8J9c8N1:Nfg8KRbbG86bbarcVfcba8KahcjeGcr4fghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fag9c8F1:NgicKtc8F91aha8J9c8N1:NfghRbbG86bbarc96fcbahaicjeGcr4fgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbb83bbarcwfaicwf8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbcbaocl49Rh8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E93aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z1jjjb8AazazcjdfaAcufad2fadz1jjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok:XseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;oiliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavciGfgkcd7cetfaD87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavcufciGfcetfaD87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohvxekcjjjj94hvkabakcetfav87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbyd:K1jjbgeabcifc98GfgbBd:K1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk81dbcjwk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:Kwkl8WNbb",t="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q:6dkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;G9Mqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:183lYud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxavaialfgmar9Rgoad;8qbbcj;abad9Uc;WFbGcjdadca0EhPdndndnadTmbaoadfhscbhzinaeaz9nmdamax9RaD6miabazad2fhHaxaDfhOaPaeaz9RazaPfae6EgAcsfgocl4cifcd4hCavcj;cbfaoc9WGgXcetfhQavcj;cbfaXci2fhLavcj;cbfaXfhKcbhYaoc;ab6h8AincbhodnawTmbaxaYcd4fRbbhokaocFeGhEcbh3avcj;cbfh5indndndndnaEa3cet4ciGgoc9:fPdebdkamaO9RaX6mwavcj;cbfa3aX2faOaX;8qbbaOaAfhOxdkavcj;cbfa3aX2fcbaX;8kbxekamaO9RaC6moaoclVcbawEhraOaCfhocbhidna8Ambamao9Rc;Gb6mbcbhlina5alfhidndndndndndnaOalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiczfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaicafaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaoclffaqc:q:yjjbfRbbfhoxikaic8Wfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaocwffaqc:q:yjjbfRbbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitc:q1jjbfpbibaic:q:yjjbfRbbgipsaoRbegqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqc:q:yjjbfRbbfhokalc;abfhialcjefaX0meaihlamao9Rc;Fb0mbkkdnaiaX9pmbaici4hlinamao9RcK6mwa5aifhqdndndndndndnaOaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaoclffahc:q:yjjbfRbbfhoxikaqaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaocwffahc:q:yjjbfRbbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpkbbaaaocdffahc:q:yjjbfRbbfhokalcdfhlaiczfgiaX6mbkkaohOaoTmoka5aXfh5a3cefg3cl9hmbkdndndndnawTmbasaYcd4fRbbglciGPlbedwbkaXTmdavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep9Ta8Epxeeeeeeeeeeeeeeeeg8Fp9op9Hp9rg8Eagp9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Ug8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9AbbbaladfhlaoczfgoaX6mbxikkaXTmeavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep:nea8Epxebebebebebebebebg8Fp9op:bep9rg8Eagp:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeg8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9AbbbaladfhlaoczfgoaX6mbxdkkaXTmbcbhocbalcl4gl9Rc8FGhiavcjdfaYfhravaYfpbdbh8Finaravcj;cbfaofpblbggaKaofpblbg8JpmbzeHdOiAlCvXoQrLg8KaQaofpblbg8LaLaofpblbg8MpmbzeHdOiAlCvXoQrLg8NpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ea8Fp9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Fa8Ka8NpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwKDYq8AkEx3m5P8Es8Fgga8La8MpmwKDYq8AkEx3m5P8Es8Fg8JpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9AbbbaradfhraoczfgoaX6mbkkaYclfgYad6mbkaHavcjdfaAad2;8qbbavavcjdfaAcufad2fad;8qbbaAazfhzc9:hoaOhxaOmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdaPaeao9RaoaPfae6Eaofgoae6mbkaial9Rhxkcbc99amax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbk:TseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:SPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiczfpxbbbbbbbbbbbbbbbbgopklbaiaopklbaiabalcitfgdaeciGglcitgv;8qbbdnalTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkadaiav;8qbbkk:oDllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiczfpxbbbbbbbbbbbbbbbbgkpklbaiakpklbaiabalcitfgoaeciGgvcitgw;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkaoaiaw;8qbbkk;uddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaic8WfpxbbbbbbbbbbbbbbbbgopklbaicafaopklbaiczfaopklbaiaopklbaiabavcdtfgdalciGgecdtgv;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkadaiav;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb",n=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),i=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var o=WebAssembly.validate(n)?a(t):a(e),r,s=WebAssembly.instantiate(o,{}).then(function(C){r=C.instance,r.exports.__wasm_call_ctors()});function a(C){for(var E=new Uint8Array(C.length),I=0;I<C.length;++I){var b=C.charCodeAt(I);E[I]=b>96?b-97:b>64?b-39:b+4}for(var S=0,I=0;I<C.length;++I)E[S++]=E[I]<60?i[E[I]]:(E[I]-60)*64+E[++I];return E.buffer.slice(0,S)}function c(C,E,I,b,S,B,v){var P=C.exports.sbrk,M=b+3&-4,L=P(M*S),p=P(B.length),x=new Uint8Array(C.exports.memory.buffer);x.set(B,p);var T=E(L,b,S,p,B.length);if(T==0&&v&&v(L,M,S),I.set(x.subarray(L,L+b*S)),P(L-P(0)),T!=0)throw new Error("Malformed buffer data: "+T)}var u={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},f={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},h=[],A=0;function g(C){var E={object:new Worker(C),pending:0,requests:{}};return E.object.onmessage=function(I){var b=I.data;E.pending-=b.count,E.requests[b.id][b.action](b.value),delete E.requests[b.id]},E}function m(C){for(var E="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(o)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+y.name+";"+c.toString()+y.toString(),I=new Blob([E],{type:"text/javascript"}),b=URL.createObjectURL(I),S=h.length;S<C;++S)h[S]=g(b);for(var S=C;S<h.length;++S)h[S].object.postMessage({});h.length=C,URL.revokeObjectURL(b)}function _(C,E,I,b,S){for(var B=h[0],v=1;v<h.length;++v)h[v].pending<B.pending&&(B=h[v]);return new Promise(function(P,M){var L=new Uint8Array(I),p=++A;B.pending+=C,B.requests[p]={resolve:P,reject:M},B.object.postMessage({id:p,count:C,size:E,source:L,mode:b,filter:S},[L.buffer])})}function y(C){var E=C.data;if(!E.id)return self.close();self.ready.then(function(I){try{var b=new Uint8Array(E.count*E.size);c(I,I.exports[E.mode],b,E.count,E.size,E.source,I.exports[E.filter]),self.postMessage({id:E.id,count:E.count,action:"resolve",value:b},[b.buffer])}catch(S){self.postMessage({id:E.id,count:E.count,action:"reject",value:S})}})}return{ready:s,supported:!0,useWorkers:function(C){m(C)},decodeVertexBuffer:function(C,E,I,b,S){c(r,r.exports.meshopt_decodeVertexBuffer,C,E,I,b,r.exports[u[S]])},decodeIndexBuffer:function(C,E,I,b){c(r,r.exports.meshopt_decodeIndexBuffer,C,E,I,b)},decodeIndexSequence:function(C,E,I,b){c(r,r.exports.meshopt_decodeIndexSequence,C,E,I,b)},decodeGltfBuffer:function(C,E,I,b,S,B){c(r,r.exports[f[S]],C,E,I,b,r.exports[u[B]])},decodeGltfBufferAsync:function(C,E,I,b,S){return h.length>0?_(C,E,I,f[b],u[S]):s.then(function(){var B=new Uint8Array(C*E);return c(r,r.exports[f[b]],B,C,E,I,r.exports[u[S]]),B})}}}();typeof qR=="object"&&typeof kW=="object"?kW.exports=gz:typeof define=="function"&&define.amd?define([],function(){return gz}):typeof qR=="object"?qR.MeshoptDecoder=gz:(typeof self<"u"?self:qR).MeshoptDecoder=gz});var Cae=ui((KR,UW)=>{var _z=function(){"use strict";var e="b9H79Tebbbetm9Geueu9Geub9Gbb9Gsuuuuuuuuuuuu99uueu9Gvuuuuub9Gruuuuuuub9Gvuuuuue999Gvuuuuueu9Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuiOHdilvorlwiDqkbxxbelve9Weiiviebeoweuec:G:Pdkr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95br8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bwQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7bDX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbqa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbkl79IV9RbxDwebcekdzsq;B:xeHdbkM9Hi8Au8A99Au8Jjjjjbc;W;qb9Rgs8Kjjjjbcbhzascxfcbc;Kbz:ojjjb8AdnabaeSmbabaeadcdtz:njjjb8AkdndnamcdGmbascxfhHcbhOxekasalcrfci4gecbyd:m:jjjbHjjjjbbgABdxasceBd2aAcbaez:ojjjbhCcbhlcbhednadTmbcbhlabheadhAinaCaeydbgXci4fgQaQRbbgQceaXcrGgXtV86bbaQcu7aX4ceGalfhlaeclfheaAcufgAmbkcualcdtalcFFFFi0EhekascCfhHasaecbyd:m:jjjbHjjjjbbgOBdzascdBd2alcd4alfhXcehAinaAgecethAaeaX6mbkcdhzcbhLascuaecdtgAaecFFFFi0Ecbyd:m:jjjbHjjjjbbgXBdCasciBd2aXcFeaAz:ojjjbhKdnadTmbaecufhYcbh8AindndnaKabaLcdtfgEydbgQc:v;t;h;Ev2aYGgXcdtfgCydbgAcuSmbceheinaOaAcdtfydbaQSmdaXaefhAaecefheaKaAaYGgXcdtfgCydbgAcu9hmbkkaOa8AcdtfaQBdbaCa8ABdba8AhAa8Acefh8AkaEaABdbaLcefgLad9hmbkkaKcbyd1:jjjbH:bjjjbbascdBd2kcbh3aHcualcefgecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbg5Bdbasa5BdlasazceVgeBd2ascxfaecdtfcuadcitadcFFFFe0Ecbyd:m:jjjbHjjjjbbg8EBdbasa8EBdwasazcdfgeBd2asclfabadalcbz:cjjjbascxfaecdtfcualcdtgealcFFFFi0Eg8Fcbyd:m:jjjbHjjjjbbgABdbasazcifgXBd2ascxfaXcdtfa8Fcbyd:m:jjjbHjjjjbbgaBdbasazclVBd2aAaaaialavaOascxfz:djjjbalcbyd:m:jjjbHjjjjbbhCascxfasyd2ghcdtfaCBdbasahcefgXBd2ascxfaXcdtfa8Fcbyd:m:jjjbHjjjjbbgXBdbasahcdfgQBd2ascxfaQcdtfa8Fcbyd:m:jjjbHjjjjbbgQBdbasahcifggBd2aXcFeaez:ojjjbh8JaQcFeaez:ojjjbh8KdnalTmba8Ecwfh8Lindna5a3gQcefg3cdtfydbgKa5aQcdtgefydbgXSmbaKaX9Rhza8EaXcitfhHa8Kaefh8Ma8JaefhEcbhYindndnaHaYcitfydbg8AaQ9hmbaEaQBdba8MaQBdbxekdna5a8Acdtg8NfgeclfydbgXaeydbgeSmba8EaecitgKfydbaQSmeaXae9Rhyaecu7aXfhLa8LaKfhXcbheinaLaeSmeaecefheaXydbhKaXcwfhXaKaQ9hmbkaeay6meka8Ka8NfgeaQa8AaeydbcuSEBdbaEa8AaQaEydbcuSEBdbkaYcefgYaz9hmbkka3al9hmbkaAhXaahQa8KhKa8JhYcbheindndnaeaXydbg8A9hmbdnaeaQydbg8A9hmbaYydbh8AdnaKydbgLcu9hmba8Acu9hmbaCaefcb86bbxikaCaefhEdnaeaLSmbaea8ASmbaEce86bbxikaEcl86bbxdkdnaeaaa8AcdtgLfydb9hmbdnaKydbgEcuSmbaeaESmbaYydbgzcuSmbaeazSmba8KaLfydbgHcuSmbaHa8ASmba8JaLfydbgLcuSmbaLa8ASmbdnaAaEcdtfydbg8AaAaLcdtfydb9hmba8AaAazcdtfydbgLSmbaLaAaHcdtfydb9hmbaCaefcd86bbxlkaCaefcl86bbxikaCaefcl86bbxdkaCaefcl86bbxekaCaefaCa8AfRbb86bbkaXclfhXaQclfhQaKclfhKaYclfhYalaecefge9hmbkdnaqTmbdndnaOTmbaOheaAhXalhQindnaqaeydbfRbbTmbaCaXydbfcl86bbkaeclfheaXclfhXaQcufgQmbxdkkaAhealhXindnaqRbbTmbaCaeydbfcl86bbkaqcefhqaeclfheaXcufgXmbkkaAhealhQaChXindnaCaeydbfRbbcl9hmbaXcl86bbkaeclfheaXcefhXaQcufgQmbkkamceGTmbaChealhXindnaeRbbce9hmbaecl86bbkaecefheaXcufgXmbkkascxfagcdtfcualcx2alc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbg3BdbasahclfgHBd2a3aialavaOz:ejjjbh8PdndnaDmbcbhgcbh8Lxekcbh8LawhecbhXindnaeIdbJbbbb9ETmbasc;Wbfa8LcdtfaXBdba8Lcefh8LkaeclfheaDaXcefgX9hmbkascxfaHcdtfcua8Lal2gecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbggBdbasahcvfgHBd2alTmba8LTmbarcd4hEdnaOTmba8Lcdthzcbh8AaghLinaoaOa8AcdtfydbaE2cdtfhYasc;WbfheaLhXa8LhQinaXaYaeydbcdtgKfIdbawaKfIdbNUdbaeclfheaXclfhXaQcufgQmbkaLazfhLa8Acefg8Aal9hmbxdkka8Lcdthzcbh8AaghLinaoa8AaE2cdtfhYasc;WbfheaLhXa8LhQinaXaYaeydbcdtgKfIdbawaKfIdbNUdbaeclfheaXclfhXaQcufgQmbkaLazfhLa8Acefg8Aal9hmbkkascxfaHcdtfcualc8S2gealc;D;O;f8U0EgQcbyd:m:jjjbHjjjjbbgXBdbasaHcefgKBd2aXcbaez:ojjjbhqdndndna8LTmbascxfaKcdtfaQcbyd:m:jjjbHjjjjbbgvBdbasaHcdfgXBd2avcbaez:ojjjb8AascxfaXcdtfcua8Lal2gecltgXaecFFFFb0Ecbyd:m:jjjbHjjjjbbgiBdbasaHcifBd2aicbaXz:ojjjb8AadmexdkcbhvcbhiadTmekcbhYabhXindna3aXclfydbg8Acx2fgeIdba3aXydbgLcx2fgQIdbgI:tg8Ra3aXcwfydbgEcx2fgKIdlaQIdlg8S:tgRNaKIdbaI:tg8UaeIdla8S:tg8VN:tg8Wa8WNa8VaKIdwaQIdwg8X:tg8YNaRaeIdwa8X:tg8VN:tgRaRNa8Va8UNa8Ya8RN:tg8Ra8RNMM:rg8UJbbbb9ETmba8Wa8U:vh8Wa8Ra8U:vh8RaRa8U:vhRkaqaAaLcdtfydbc8S2fgeaRa8U:rg8UaRNNg8VaeIdbMUdbaea8Ra8Ua8RNg8ZNg8YaeIdlMUdlaea8Wa8Ua8WNg80Ng81aeIdwMUdwaea8ZaRNg8ZaeIdxMUdxaea80aRNgBaeIdzMUdzaea80a8RNg80aeIdCMUdCaeaRa8Ua8Wa8XNaRaINa8Sa8RNMM:mg8SNgINgRaeIdKMUdKaea8RaINg8RaeId3MUd3aea8WaINg8WaeIdaMUdaaeaIa8SNgIaeId8KMUd8Kaea8UaeIdyMUdyaqaAa8Acdtfydbc8S2fgea8VaeIdbMUdbaea8YaeIdlMUdlaea81aeIdwMUdwaea8ZaeIdxMUdxaeaBaeIdzMUdzaea80aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdyaqaAaEcdtfydbc8S2fgea8VaeIdbMUdbaea8YaeIdlMUdlaea81aeIdwMUdwaea8ZaeIdxMUdxaeaBaeIdzMUdzaea80aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdyaXcxfhXaYcifgYad6mbkcbhzabhLinabazcdtfh8AcbhXinaCa8AaXc;a1jjbfydbcdtfydbgQfRbbhedndnaCaLaXfydbgKfRbbgYc99fcFeGcpe0mbaec99fcFeGc;:e6mekdnaYcufcFeGce0mba8JaKcdtfydbaQ9hmekdnaecufcFeGce0mba8KaQcdtfydbaK9hmekdnaYcv2aefc:G1jjbfRbbTmbaAaQcdtfydbaAaKcdtfydb0mekJbbacJbbacJbbjZaecFeGceSEaYceSEh80dna3a8AaXc;e1jjbfydbcdtfydbcx2fgeIdwa3aKcx2fgYIdwg8S:tg8Wa3aQcx2fgEIdwa8S:tgRaRNaEIdbaYIdbg8X:tg8Ra8RNaEIdlaYIdlg8V:tg8Ua8UNMMgINa8WaRNaeIdba8X:tg81a8RNa8UaeIdla8V:tg8ZNMMg8YaRN:tg8Wa8WNa81aINa8Ya8RN:tgRaRNa8ZaINa8Ya8UN:tg8Ra8RNMM:rg8UJbbbb9ETmba8Wa8U:vh8Wa8Ra8U:vh8RaRa8U:vhRkaqaAaKcdtfydbc8S2fgeaRa80aI:rNg8UaRNNg8YaeIdbMUdbaea8Ra8Ua8RNg80Ng81aeIdlMUdlaea8Wa8Ua8WNgINg8ZaeIdwMUdwaea80aRNg80aeIdxMUdxaeaIaRNgBaeIdzMUdzaeaIa8RNg83aeIdCMUdCaeaRa8Ua8Wa8SNaRa8XNa8Va8RNMM:mg8SNgINgRaeIdKMUdKaea8RaINg8RaeId3MUd3aea8WaINg8WaeIdaMUdaaeaIa8SNgIaeId8KMUd8Kaea8UaeIdyMUdyaqaAaQcdtfydbc8S2fgea8YaeIdbMUdbaea81aeIdlMUdlaea8ZaeIdwMUdwaea80aeIdxMUdxaeaBaeIdzMUdzaea83aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdykaXclfgXcx9hmbkaLcxfhLazcifgzad6mbka8LTmbcbhLinJbbbbh8Xa3abaLcdtfgeclfydbgEcx2fgXIdwa3aeydbgzcx2fgQIdwg8Z:tg8Ra8RNaXIdbaQIdbgB:tg8Wa8WNaXIdlaQIdlg83:tg8Ua8UNMMg80a3aecwfydbgHcx2fgeIdwa8Z:tgINa8Ra8RaINa8WaeIdbaB:tg8SNa8UaeIdla83:tg8VNMMgRN:tJbbbbJbbjZa80aIaINa8Sa8SNa8Va8VNMMg81NaRaRN:tg8Y:va8YJbbbb9BEg8YNhUa81a8RNaIaRN:ta8YNh85a80a8VNa8UaRN:ta8YNh86a81a8UNa8VaRN:ta8YNh87a80a8SNa8WaRN:ta8YNh88a81a8WNa8SaRN:ta8YNh89a8Wa8VNa8Sa8UN:tgRaRNa8UaINa8Va8RN:tgRaRNa8Ra8SNaIa8WN:tgRaRNMM:rJbbbZNhRagaza8L2gwcdtfhXagaHa8L2g8NcdtfhQagaEa8L2g5cdtfhKa8Z:mh8:a83:mhZaB:mhncbhYa8Lh8AJbbbbh8VJbbbbh8YJbbbbh80Jbbbbh81Jbbbbh8ZJbbbbhBJbbbbh83JbbbbhcJbbbbh9cinasc;WbfaYfgecwfaRa85aKIdbaXIdbgI:tg8UNaUaQIdbaI:tg8SNMg8RNUdbaeclfaRa87a8UNa86a8SNMg8WNUdbaeaRa89a8UNa88a8SNMg8UNUdbaecxfaRa8:a8RNaZa8WNaIana8UNMMMgINUdbaRa8Ra8WNNa81Mh81aRa8Ra8UNNa8ZMh8ZaRa8Wa8UNNaBMhBaRaIaINNa8XMh8XaRa8RaINNa8VMh8VaRa8WaINNa8YMh8YaRa8UaINNa80Mh80aRa8Ra8RNNa83Mh83aRa8Wa8WNNacMhcaRa8Ua8UNNa9cMh9caXclfhXaKclfhKaQclfhQaYczfhYa8Acufg8Ambkavazc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyavaEc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyavaHc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyaiawcltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaia5cltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaia8Ncltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaLcifgLad6mbkkcbhQdndnamcwGgJmbJbbbbh8Vcbh9ecbhocbhhxekcbh9ea8Fcbyd:m:jjjbHjjjjbbhhascxfasyd2gecdtfahBdbasaecefgXBd2ascxfaXcdtfcuahalabadaAz:fjjjbgKcltaKcjjjjiGEcbyd:m:jjjbHjjjjbbgoBdbasaecdfBd2aoaKaha3alz:gjjjbJFFuuh8VaKTmbaoheaKhXinaeIdbgRa8Va8VaR9EEh8VaeclfheaXcufgXmbkaKh9ekasydlhTdnalTmbaTclfheaTydbhKaChXalhYcbhQincbaeydbg8AaK9RaXRbbcpeGEaQfhQaXcefhXaeclfhea8AhKaYcufgYmbkaQce4hQkcuadaQ9RcifgScx2aSc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbhDascxfasyd2g9hcdtfaDBdbasa9hcefgeBd2ascxfaecdtfcuaScdtaScFFFFi0Ecbyd:m:jjjbHjjjjbbgrBdbasa9hcdfgeBd2ascxfaecdtfa8Fcbyd:m:jjjbHjjjjbbgyBdbasa9hcifgeBd2ascxfaecdtfalcbyd:m:jjjbHjjjjbbg9iBdbasa9hclfg6Bd2axaxNa8PJbbjZamclGEgUaUN:vh9cJbbbbhcdnadak9nmbdnaSci6mba8Lclth9kaDcwfh0Jbbbbh83JbbbbhcinasclfabadalaAz:cjjjbabhzcbh8Ecbh8Finaba8FcdtfhHcbheindnaAazaefydbgQcdtgEfydbgYaAaHaec;q1jjbfydbcdtfydbgXcdtgwfydbg8ASmbaCaXfRbbgLcv2aCaQfRbbgKfc;G1jjbfRbbg5aKcv2aLfg8Nc;G1jjbfRbbg8MVcFeGTmbdna8AaY9nmba8Nc:G1jjbfRbbcFeGmekaKcufhYdnaKaL9hmbaYcFeGce0mba8JaEfydbaX9hmekdndnaKclSmbaLcl9hmekdnaYcFeGce0mba8JaEfydbaX9hmdkaLcufcFeGce0mba8KawfydbaQ9hmekaDa8Ecx2fgKaXaQa8McFeGgYEBdlaKaQaXaYEBdbaKaYa5Gcb9hBdwa8Ecefh8Ekaeclfgecx9hmbkdna8Fcifg8Fad9pmbazcxfhza8EcifaS9nmekka8ETmdcbhLinaqaAaDaLcx2fgKydbgYcdtgzfydbc8S2fgeIdwa3aKydlg8Acx2fgXIdwg8WNaeIdzaXIdbg8UNaeIdaMgRaRMMa8WNaeIdlaXIdlgINaeIdCa8WNaeId3MgRaRMMaINaeIdba8UNaeIdxaINaeIdKMgRaRMMa8UNaeId8KMMM:lhRJbbbbJbbjZaeIdyg8R:va8RJbbbb9BEh8RdndnaKydwgEmbJFFuuh8YxekJbbbbJbbjZaqaAa8Acdtfydbc8S2fgeIdyg8S:va8SJbbbb9BEaeIdwa3aYcx2fgXIdwg8SNaeIdzaXIdbg8XNaeIdaMg8Ya8YMMa8SNaeIdlaXIdlg8YNaeIdCa8SNaeId3Mg8Sa8SMMa8YNaeIdba8XNaeIdxa8YNaeIdKMg8Sa8SMMa8XNaeId8KMMM:lNh8Yka8RaRNh80dna8LTmbavaYc8S2fgQIdwa8WNaQIdza8UNaQIdaMgRaRMMa8WNaQIdlaINaQIdCa8WNaQId3MgRaRMMaINaQIdba8UNaQIdxaINaQIdKMgRaRMMa8UNaQId8KMMMhRaga8Aa8L2gHcdtfhXaiaYa8L2gwcltfheaQIdyh8Sa8LhQinaXIdbg8Ra8Ra8SNaecxfIdba8WaecwfIdbNa8UaeIdbNaIaeclfIdbNMMMg8Ra8RM:tNaRMhRaXclfhXaeczfheaQcufgQmbkdndnaEmbJbbbbh8Rxekava8Ac8S2fgQIdwa3aYcx2fgeIdwg8UNaQIdzaeIdbgINaQIdaMg8Ra8RMMa8UNaQIdlaeIdlg8SNaQIdCa8UNaQId3Mg8Ra8RMMa8SNaQIdbaINaQIdxa8SNaQIdKMg8Ra8RMMaINaQId8KMMMh8RagawcdtfhXaiaHcltfheaQIdyh8Xa8LhQinaXIdbg8Wa8Wa8XNaecxfIdba8UaecwfIdbNaIaeIdbNa8SaeclfIdbNMMMg8Wa8WM:tNa8RMh8RaXclfhXaeczfheaQcufgQmbka8R:lh8Rka80aR:lMh80a8Ya8RMh8YaCaYfRbbcd9hmbdna8Ka8Ja8Jazfydba8ASEaaazfydbgHcdtfydbgzcu9hmbaaa8AcdtfydbhzkavaHc8S2fgQIdwa3azcx2fgeIdwg8WNaQIdzaeIdbg8UNaQIdaMgRaRMMa8WNaQIdlaeIdlgINaQIdCa8WNaQId3MgRaRMMaINaQIdba8UNaQIdxaINaQIdKMgRaRMMa8UNaQId8KMMMhRagaza8L2gwcdtfhXaiaHa8L2g8NcltfheaQIdyh8Sa8LhQinaXIdbg8Ra8Ra8SNaecxfIdba8WaecwfIdbNa8UaeIdbNaIaeclfIdbNMMMg8Ra8RM:tNaRMhRaXclfhXaeczfheaQcufgQmbkdndnaEmbJbbbbh8Rxekavazc8S2fgQIdwa3aHcx2fgeIdwg8UNaQIdzaeIdbgINaQIdaMg8Ra8RMMa8UNaQIdlaeIdlg8SNaQIdCa8UNaQId3Mg8Ra8RMMa8SNaQIdbaINaQIdxa8SNaQIdKMg8Ra8RMMaINaQId8KMMMh8Raga8NcdtfhXaiawcltfheaQIdyh8Xa8LhQinaXIdbg8Wa8Wa8XNaecxfIdba8UaecwfIdbNaIaeIdbNa8SaeclfIdbNMMMg8Wa8WM:tNa8RMh8RaXclfhXaeczfheaQcufgQmbka8R:lh8Rka80aR:lMh80a8Ya8RMh8YkaKa80a8Ya80a8Y9FgeEUdwaKa8AaYaeaETVgeEBdlaKaYa8AaeEBdbaLcefgLa8E9hmbkasc;Wbfcbcj;qbz:ojjjb8Aa0hea8EhXinasc;WbfaeydbcA4cF8FGgQcFAaQcFA6EcdtfgQaQydbcefBdbaecxfheaXcufgXmbkcbhecbhXinasc;WbfaefgQydbhKaQaXBdbaKaXfhXaeclfgecj;qb9hmbkcbhea0hXinasc;WbfaXydbcA4cF8FGgQcFAaQcFA6EcdtfgQaQydbgQcefBdbaraQcdtfaeBdbaXcxfhXa8Eaecefge9hmbkadak9RgQci9Uh9mdnalTmbcbheayhXinaXaeBdbaXclfhXalaecefge9hmbkkcbh9na9icbalz:ojjjbh8FaQcO9Uh9oa9mce4h9pasydwh9qcbh8Mcbh5dninaDara5cdtfydbcx2fg8NIdwgRa9c9Emea8Ma9m9pmeJFFuuh8Rdna9pa8E9pmbaDara9pcdtfydbcx2fIdwJbb;aZNh8RkdnaRa8R9ETmbaRac9ETmba8Ma9o0mdkdna8FaAa8NydlgHcdtg9rfydbgKfg9sRbba8FaAa8Nydbgzcdtg9tfydbgefg9uRbbVmbaCazfRbbh9vdnaTaecdtfgXclfydbgQaXydbgXSmbaQaX9RhYa3aKcx2fhLa3aecx2fhEa9qaXcitfhecbhXcehwdnindnayaeydbcdtfydbgQaKSmbayaeclfydbcdtfydbg8AaKSmbaQa8ASmba3a8Acx2fg8AIdba3aQcx2fgQIdbg8W:tgRaEIdlaQIdlg8U:tg8XNaEIdba8W:tg8Ya8AIdla8U:tg8RN:tgIaRaLIdla8U:tg80NaLIdba8W:tg81a8RN:tg8UNa8RaEIdwaQIdwg8S:tg8ZNa8Xa8AIdwa8S:tg8WN:tg8Xa8RaLIdwa8S:tgBNa80a8WN:tg8RNa8Wa8YNa8ZaRN:tg8Sa8Wa81NaBaRN:tgRNMMaIaINa8Xa8XNa8Sa8SNMMa8Ua8UNa8Ra8RNaRaRNMMN:rJbbj8:N9FmdkaecwfheaXcefgXaY6hwaYaX9hmbkkawceGTmba9pcefh9pxekdndndndna9vc9:fPdebdkazheinayaecdtgefaHBdbaaaefydbgeaz9hmbxikkdna8Ka8Ja8Ja9tfydbaHSEaaa9tfydbgzcdtfydbgecu9hmbaaa9rfydbhekaya9tfaHBdbaehHkayazcdtfaHBdbka9uce86bba9sce86bba8NIdwgRacacaR9DEhca9ncefh9ncecda9vceSEa8Mfh8Mka5cefg5a8E9hmbkka9nTmddnalTmbcbh8AcbhEindnayaEcdtgefydbgQaESmbaAaQcdtfydbhzdnaEaAaefydb9hgHmbaqazc8S2fgeaqaEc8S2fgXIdbaeIdbMUdbaeaXIdlaeIdlMUdlaeaXIdwaeIdwMUdwaeaXIdxaeIdxMUdxaeaXIdzaeIdzMUdzaeaXIdCaeIdCMUdCaeaXIdKaeIdKMUdKaeaXId3aeId3MUd3aeaXIdaaeIdaMUdaaeaXId8KaeId8KMUd8KaeaXIdyaeIdyMUdyka8LTmbavaQc8S2fgeavaEc8S2gwfgXIdbaeIdbMUdbaeaXIdlaeIdlMUdlaeaXIdwaeIdwMUdwaeaXIdxaeIdxMUdxaeaXIdzaeIdzMUdzaeaXIdCaeIdCMUdCaeaXIdKaeIdKMUdKaeaXId3aeId3MUd3aeaXIdaaeIdaMUdaaeaXId8KaeId8KMUd8KaeaXIdyaeIdyMUdya9kaQ2hLaihXa8LhKinaXaLfgeaXa8AfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaHmbJbbbbJbbjZaqawfgeIdygR:vaRJbbbb9BEaeIdwa3azcx2fgXIdwgRNaeIdzaXIdbg8RNaeIdaMg8Wa8WMMaRNaeIdlaXIdlg8WNaeIdCaRNaeId3MgRaRMMa8WNaeIdba8RNaeIdxa8WNaeIdKMgRaRMMa8RNaeId8KMMM:lNgRa83a83aR9DEh83ka8Aa9kfh8AaEcefgEal9hmbkcbhXa8JheindnaeydbgQcuSmbdnaXayaQcdtgKfydbgQ9hmbcuhQa8JaKfydbgKcuSmbayaKcdtfydbhQkaeaQBdbkaeclfhealaXcefgX9hmbkcbhXa8KheindnaeydbgQcuSmbdnaXayaQcdtgKfydbgQ9hmbcuhQa8KaKfydbgKcuSmbayaKcdtfydbhQkaeaQBdbkaeclfhealaXcefgX9hmbkka83aca8LEh83cbhKabhecbhYindnayaeydbcdtfydbgXayaeclfydbcdtfydbgQSmbaXayaecwfydbcdtfydbg8ASmbaQa8ASmbabaKcdtfgLaXBdbaLcwfa8ABdbaLclfaQBdbaKcifhKkaecxfheaYcifgYad6mbkdndnaJTmbaKak9nmba8Va839FTmbcbhdabhecbhXindnaoahaeydbgQcdtfydbcdtfIdba839ETmbabadcdtfgYaQBdbaYclfaeclfydbBdbaYcwfaecwfydbBdbadcifhdkaecxfheaXcifgXaK6mbkJFFuuh8Va9eTmeaohea9ehXJFFuuhRinaeIdbg8RaRaRa8R9EEg8WaRa8Ra839EgQEhRa8Wa8VaQEh8VaeclfheaXcufgXmbxdkkaKhdkadak0mbxdkkasclfabadalaAz:cjjjbkdndnadak0mbadhXxekdnaJmbadhXxekdna8Va9c9FmbadhXxekina8VJbb;aZNgRa9caRa9c9DEh8WJbbbbhRdna9eTmbaohea9ehAinaeIdbg8RaRa8Ra8W9FEaRa8RaR9EEhRaeclfheaAcufgAmbkkcbhXabhecbhAindnaoahaeydbgQcdtfydbcdtfIdba8W9ETmbabaXcdtfgKaQBdbaKclfaeclfydbBdbaKcwfaecwfydbBdbaXcifhXkaecxfheaAcifgAad6mbkJFFuuh8Vdna9eTmbaohea9ehAJFFuuh8RinaeIdbg8Ua8Ra8Ra8U9EEgIa8Ra8Ua8W9EgQEh8RaIa8VaQEh8VaeclfheaAcufgAmbkkdnaXad9hmbadhXxdkaRacacaR9DEhcaXak9nmeaXhda8Va9c9FmbkkdnamcjjjjlGTmbaOmbaXTmbcbh8AabheinaCaeydbgKfRbbc3thLaecwfgEydbhAdndna8JaKcdtgHfydbaeclfgzydbgQSmbcbhYa8KaQcdtfydbaK9hmekcjjjj94hYkaeaLaYVaKVBdbaCaQfRbbc3thLdndna8JaQcdtfydbaASmbcbhYa8KaAcdtfydbaQ9hmekcjjjj94hYkazaLaYVaQVBdbaCaAfRbbc3thYdndna8JaAcdtfydbaKSmbcbhQa8KaHfydbaA9hmekcjjjj94hQkaEaYaQVaAVBdbaecxfhea8Acifg8AaX6mbkkdnaOTmbaXTmbaXheinabaOabydbcdtfydbBdbabclfhbaecufgembkkdnaPTmbaPaUac:rNUdbka9hcdtascxffcxfhednina6Tmeaeydbcbyd1:jjjbH:bjjjbbaec98fhea6cufh6xbkkasc;W;qbf8KjjjjbaXk;Yieouabydlhvabydbclfcbaicdtz:ojjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfhearcufgrmbkkabydbcbBdbk:todDue99aicd4aifhrcehwinawgDcethwaDar6mbkcuaDcdtgraDcFFFFi0Ecbyd:m:jjjbHjjjjbbhwaoaoyd9GgqcefBd9GaoaqcdtfawBdbawcFearz:ojjjbhkdnaiTmbalcd4hlaDcufhxcbhminamhDdnavTmbavamcdtfydbhDkcbadaDal2cdtfgDydlgwawcjjjj94SEgwcH4aw7c:F:b:DD2cbaDydbgwawcjjjj94SEgwcH4aw7c;D;O:B8J27cbaDydwgDaDcjjjj94SEgDcH4aD7c:3F;N8N27axGhwamcdthPdndndnavTmbakawcdtfgrydbgDcuSmeadavaPfydbal2cdtfgsIdbhzcehqinaqhrdnadavaDcdtfydbal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmlkarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbxdkkakawcdtfgrydbgDcuSmbadamal2cdtfgsIdbhzcehqinaqhrdnadaDal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmikarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbkkaramBdbamhDkabaPfaDBdbamcefgmai9hmbkkakcbyd1:jjjbH:bjjjbbaoaoyd9GcufBd9GdnaeTmbaiTmbcbhDaehwinawaDBdbawclfhwaiaDcefgD9hmbkcbhDaehwindnaDabydbgrSmbawaearcdtfgrydbBdbaraDBdbkawclfhwabclfhbaiaDcefgD9hmbkkk;Qodvuv998Jjjjjbca9Rgvczfcwfcbyd11jjbBdbavcb8Pdj1jjb83izavcwfcbydN1jjbBdbavcb8Pd:m1jjb83ibdnadTmbaicd4hodnabmbdnalTmbcbhrinaealarcdtfydbao2cdtfhwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxikkaocdthrcbhwincbhiinavczfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbxdkkdnalTmbcbhrinabarcx2fgiaealarcdtfydbao2cdtfgwIdbUdbaiawIdlUdlaiawIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxdkkaocdthlcbhraehwinabarcx2fgiaearao2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawalfhwarcefgrad9hmbkkJbbbbavIdbavIdzgk:tgqaqJbbbb9DEgqavIdlavIdCgx:tgmamaq9DEgqavIdwavIdKgm:tgPaPaq9DEhPdnabTmbadTmbJbbbbJbbjZaP:vaPJbbbb9BEhqinabaqabIdbak:tNUdbabclfgvaqavIdbax:tNUdbabcwfgvaqavIdbam:tNUdbabcxfhbadcufgdmbkkaPk:ZlewudnaeTmbcbhvabhoinaoavBdbaoclfhoaeavcefgv9hmbkkdnaiTmbcbhrinadarcdtfhwcbhDinalawaDcdtgvc;a1jjbfydbcdtfydbcdtfydbhodnabalawavfydbcdtfydbgqcdtfgkydbgvaqSmbinakabavgqcdtfgxydbgvBdbaxhkaqav9hmbkkdnabaocdtfgkydbgvaoSmbinakabavgocdtfgxydbgvBdbaxhkaoav9hmbkkdnaqaoSmbabaqaoaqao0Ecdtfaqaoaqao6EBdbkaDcefgDci9hmbkarcifgrai6mbkkdnaembcbskcbhxindnalaxcdtgvfydbax9hmbaxhodnabavfgDydbgvaxSmbaDhqinaqabavgocdtfgkydbgvBdbakhqaoav9hmbkkaDaoBdbkaxcefgxae9hmbkcbhvabhocbhkindndnavalydbgq9hmbdnavaoydbgq9hmbaoakBdbakcefhkxdkaoabaqcdtfydbBdbxekaoabaqcdtfydbBdbkaoclfhoalclfhlaeavcefgv9hmbkakk;Jiilud99duabcbaecltz:ojjjbhvdnalTmbadhoaihralhwinarcwfIdbhDarclfIdbhqavaoydbcltfgkarIdbakIdbMUdbakclfgxaqaxIdbMUdbakcwfgxaDaxIdbMUdbakcxfgkakIdbJbbjZMUdbaoclfhoarcxfhrawcufgwmbkkdnaeTmbavhraehkinarcxfgoIdbhDaocbBdbararIdbJbbbbJbbjZaD:vaDJbbbb9BEgDNUdbarclfgoaDaoIdbNUdbarcwfgoaDaoIdbNUdbarczfhrakcufgkmbkkdnalTmbinavadydbcltfgrcxfgkaicwfIdbarcwfIdb:tgDaDNaiIdbarIdb:tgDaDNaiclfIdbarclfIdb:tgDaDNMMgDakIdbgqaqaD9DEUdbadclfhdaicxfhialcufglmbkkdnaeTmbavcxfhrinabarIdbUdbarczfhrabclfhbaecufgembkkk8MbabaeadaialavcbcbcbcbcbaoarawaDz:bjjjbk8MbabaeadaialavaoarawaDaqakaxamaPz:bjjjbk:DCoDud99rue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcxfcbc;Kbz:ojjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbgqBdxawceBd2aqaeadaicbz:ejjjb8AawcuadcdtadcFFFFi0Egkcbyd:m:jjjbHjjjjbbgxBdzawcdBd2adcd4adfhmceheinaegicetheaiam6mbkcbhPawcuaicdtgsaicFFFFi0Ecbyd:m:jjjbHjjjjbbgzBdCawciBd2dndnar:ZgH:rJbbbZMgO:lJbbb9p9DTmbaO:Ohexekcjjjj94hekaicufhAc:bwhmcbhCadhXcbhQinaChLaeamgKcufaeaK9iEaPgDcefaeaD9kEhYdndnadTmbaYcuf:YhOaqhiaxheadhmindndnaiIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ojjjbh3cbh5cbhPindna3axaPcdtfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbaeaCSmbcehiina3amaifaAGgmcdtfgEydbgecuSmeaicefhiaeaC9hmbkkaEaCBdba5aecuSfh5aPcefgPad9hmbxdkkazcFeasz:ojjjb8Acbh5kaDaYa5ar0giEhPaLa5aiEhCdna5arSmbaYaKaiEgmaP9Rcd9imbdndnaQcl0mbdnaX:ZgOaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa5:ZghaH:tNNNaOaH:taaNa8Aah:tNa8AaH:ta8FNahaO:tNM:va8EMJbbbZMgO:lJbbb9p9DTmbaO:Ohexdkcjjjj94hexekaPamfcd9Theka5aXaiEhXaQcefgQcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd:m:jjjbHjjjjbbg5BdKawclBd2aPcuf:Yh8AdndnadTmbaqhiaxheadhmindndnaiIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ojjjbh3cbhDcbhYindndndna3axaYcdtgKfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbcehiinaxaecdtgefydbaCSmdamaifheaicefhia3aeaAGgmcdtfgEydbgecu9hmbkkaEaYBdbaDhiaDcefhDxeka5aefydbhika5aKfaiBdbaYcefgYad9hmbkcuaDc32giaDc;j:KM;jb0EhexekazcFeasz:ojjjb8AcbhDcbhekawaecbyd:m:jjjbHjjjjbbgeBd3awcvBd2aecbaiz:ojjjbhEavcd4hKdnadTmbdnalTmbaKcdth3a5hCaqhealhmadhAinaEaCydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiamIdbaiIdxMUdxaiamclfIdbaiIdzMUdzaiamcwfIdbaiIdCMUdCaiaiIdKJbbjZMUdKaCclfhCaecxfheama3fhmaAcufgAmbxdkka5hmaqheadhCinaEamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaiIdxJbbbbMUdxaiaiIdzJbbbbMUdzaiaiIdCJbbbbMUdCaiaiIdKJbbjZMUdKamclfhmaecxfheaCcufgCmbkkdnaDTmbaEhiaDheinaiaiIdbJbbbbJbbjZaicKfIdbgO:vaOJbbbb9BEgONUdbaiclfgmaOamIdbNUdbaicwfgmaOamIdbNUdbaicxfgmaOamIdbNUdbaiczfgmaOamIdbNUdbaicCfgmaOamIdbNUdbaic3fhiaecufgembkkcbhCawcuaDcdtgYaDcFFFFi0Egicbyd:m:jjjbHjjjjbbgeBdaawcoBd2awaicbyd:m:jjjbHjjjjbbg3Bd8KaecFeaYz:ojjjbhxdnadTmbJbbjZJbbjZa8A:vaPceSEaoNgOaONh8AaKcdthPalheina8Aaec;81jjbalEgmIdwaEa5ydbgAc32fgiIdC:tgOaONamIdbaiIdx:tgOaONamIdlaiIdz:tgOaONMMNaqcwfIdbaiIdw:tgOaONaqIdbaiIdb:tgOaONaqclfIdbaiIdl:tgOaONMMMhOdndnaxaAcdtgifgmydbcuSmba3aifIdbaO9ETmekamaCBdba3aifaOUdbka5clfh5aqcxfhqaeaPfheadaCcefgC9hmbkkabaxaYz:njjjb8AcrhikaicdthiinaiTmeaic98fgiawcxffydbcbyd1:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Ydidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgvaDIdbgoaoav9EEUdbaladfgDavaDIdbgoaoav9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkJbbbbavavJbbbb9DEgvaoaoav9DEgvararav9DEk9DeeuabcFeaicdtz:ojjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbeeebeebebbeeebebbbbbebebbbbbbbbbebbbdbbbbbbbebbbebbbdbbbbbbbbbbbeeeeebebbebbebebbbeebbbbbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:GNbb",t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(e),{}).then(function(m){n=m.instance,n.exports.__wasm_call_ctors()});function o(m){for(var _=new Uint8Array(m.length),y=0;y<m.length;++y){var C=m.charCodeAt(y);_[y]=C>96?C-97:C>64?C-39:C+4}for(var E=0,y=0;y<m.length;++y)_[E++]=_[y]<60?t[_[y]]:(_[y]-60)*64+_[++y];return _.buffer.slice(0,E)}function r(m){if(!m)throw new Error("Assertion failed")}function s(m){return new Uint8Array(m.buffer,m.byteOffset,m.byteLength)}function a(m,_,y){var C=n.exports.sbrk,E=C(_.length*4),I=C(y*4),b=new Uint8Array(n.exports.memory.buffer),S=s(_);b.set(S,E);var B=m(I,E,_.length,y);b=new Uint8Array(n.exports.memory.buffer);var v=new Uint32Array(y);new Uint8Array(v.buffer).set(b.subarray(I,I+y*4)),S.set(b.subarray(E,E+_.length*4)),C(E-C(0));for(var P=0;P<_.length;++P)_[P]=v[_[P]];return[v,B]}function c(m){for(var _=0,y=0;y<m.length;++y){var C=m[y];_=_<C?C:_}return _}function u(m,_,y,C,E,I,b,S,B){var v=n.exports.sbrk,P=v(4),M=v(y*4),L=v(E*I),p=v(y*4),x=new Uint8Array(n.exports.memory.buffer);x.set(s(C),L),x.set(s(_),p);var T=m(M,p,y,L,E,I,b,S,B,P);x=new Uint8Array(n.exports.memory.buffer);var w=new Uint32Array(T);s(w).set(x.subarray(M,M+T*4));var R=new Float32Array(1);return s(R).set(x.subarray(P,P+4)),v(P-v(0)),[w,R[0]]}function f(m,_,y,C,E,I,b,S,B,v,P,M,L){var p=n.exports.sbrk,x=p(4),T=p(y*4),w=p(E*I),R=p(E*S),O=p(B.length*4),k=p(y*4),Q=v?p(E):0,z=new Uint8Array(n.exports.memory.buffer);z.set(s(C),w),z.set(s(b),R),z.set(s(B),O),z.set(s(_),k),v&&z.set(s(v),Q);var F=m(T,k,y,w,E,I,R,S,O,B.length,Q,P,M,L,x);z=new Uint8Array(n.exports.memory.buffer);var H=new Uint32Array(F);s(H).set(z.subarray(T,T+F*4));var W=new Float32Array(1);return s(W).set(z.subarray(x,x+4)),p(x-p(0)),[H,W[0]]}function h(m,_,y,C){var E=n.exports.sbrk,I=E(y*C),b=new Uint8Array(n.exports.memory.buffer);b.set(s(_),I);var S=m(I,y,C);return E(I-E(0)),S}function A(m,_,y,C,E,I,b,S){var B=n.exports.sbrk,v=B(S*4),P=B(y*C),M=B(y*I),L=new Uint8Array(n.exports.memory.buffer);L.set(s(_),P),E&&L.set(s(E),M);var p=m(v,P,y,C,M,I,b,S);L=new Uint8Array(n.exports.memory.buffer);var x=new Uint32Array(p);return s(x).set(L.subarray(v,v+p*4)),B(v-B(0)),x}var g={LockBorder:1,Sparse:2,ErrorAbsolute:4,Prune:8,_InternalDebug:1<<30};return{ready:i,supported:!0,compactMesh:function(m){r(m instanceof Uint32Array||m instanceof Int32Array||m instanceof Uint16Array||m instanceof Int16Array),r(m.length%3==0);var _=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m);return a(n.exports.meshopt_optimizeVertexFetchRemap,_,c(m)+1)},simplify:function(m,_,y,C,E,I){r(m instanceof Uint32Array||m instanceof Int32Array||m instanceof Uint16Array||m instanceof Int16Array),r(m.length%3==0),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3),r(C>=0&&C<=m.length),r(C%3==0),r(E>=0);for(var b=0,S=0;S<(I?I.length:0);++S)r(I[S]in g),b|=g[I[S]];var B=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m),v=u(n.exports.meshopt_simplify,B,m.length,_,_.length/y,y*4,C,E,b);return v[0]=m instanceof Uint32Array?v[0]:new m.constructor(v[0]),v},simplifyWithAttributes:function(m,_,y,C,E,I,b,S,B,v){r(m instanceof Uint32Array||m instanceof Int32Array||m instanceof Uint16Array||m instanceof Int16Array),r(m.length%3==0),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3),r(C instanceof Float32Array),r(C.length%E==0),r(E>=0),r(b==null||b instanceof Uint8Array),r(b==null||b.length==_.length/y),r(S>=0&&S<=m.length),r(S%3==0),r(B>=0),r(Array.isArray(I)),r(E>=I.length),r(I.length<=32);for(var P=0;P<I.length;++P)r(I[P]>=0);for(var M=0,P=0;P<(v?v.length:0);++P)r(v[P]in g),M|=g[v[P]];var L=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m),p=f(n.exports.meshopt_simplifyWithAttributes,L,m.length,_,_.length/y,y*4,C,E*4,new Float32Array(I),b?new Uint8Array(b):null,S,B,M);return p[0]=m instanceof Uint32Array?p[0]:new m.constructor(p[0]),p},getScale:function(m,_){return r(m instanceof Float32Array),r(m.length%_==0),r(_>=3),h(n.exports.meshopt_simplifyScale,m,m.length/_,_*4)},simplifyPoints:function(m,_,y,C,E,I){return r(m instanceof Float32Array),r(m.length%_==0),r(_>=3),r(y>=0&&y<=m.length/_),C?(r(C instanceof Float32Array),r(C.length%E==0),r(E>=3),r(m.length/_==C.length/E),A(n.exports.meshopt_simplifyPoints,m,m.length/_,_*4,C,E*4,I,y)):A(n.exports.meshopt_simplifyPoints,m,m.length/_,_*4,void 0,0,0,y)}}}();typeof KR=="object"&&typeof UW=="object"?UW.exports=_z:typeof define=="function"&&define.amd?define([],function(){return _z}):typeof KR=="object"?KR.MeshoptSimplifier=_z:(typeof self<"u"?self:KR).MeshoptSimplifier=_z});var Eae=ui((XR,GW)=>{var yz=function(){var e="b9H79TebbbeVx9Geueu9Geub9Gbb9Giuuueu9Gmuuuuuuuuuuu9999eu9Gvuuuuueu9Gwuuuuuuuub9Gxuuuuuuuuuuuueu9Gkuuuuuuuuuu99eu9Gouuuuuub9Gruuuuuuub9GluuuubiOHdilvorwDqqkbiibeilve9Weiiviebeoweuec;G:Odkr:Yewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9I919P29K9nW79O2Wt79c9V919U9KbeX9TW79O9V9Wt9F9I919P29K9nW79O2Wt7bo39TW79O9V9Wt9F9J9V9T9W91tWJ2917tWV9c9V919U9K7br39TW79O9V9Wt9F9J9V9T9W91tW9nW79O2Wt9c9V919U9K7bDL9TW79O9V9Wt9F9V9Wt9P9T9P96W9nW79O2Wtbql79IV9RbkDwebcekdsPq;Q9BHdbkIbabaec9:fgefcufae9Ugeabci9Uadfcufad9Ugbaeab0Ek:w8KDPue99eux99dui99euo99iu8Jjjjjbc:WD9Rgm8KjjjjbdndnalmbcbhPxekamc:Cwfcbc;Kbz:njjjb8Adndnalcb9imbaoal9nmbamcuaocdtaocFFFFi0Egscbyd;y1jjbHjjjjbbgzBd:CwamceBd;8wamascbyd;y1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;y1jjbHjjjjbbgOBd:KwamciBd;8waihsalhAinazasydbcdtfcbBdbasclfhsaAcufgAmbkaihsalhAinazasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkaihsalhCcbhXindnazasydbcdtgQfgAydbcb9imbaHaQfaXBdbaAaAydbgQcjjjj94VBdbaQaXfhXkasclfhsaCcufgCmbkalci9UhLdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhXaHaAydbcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaXcdtfgXaXydbgXcefBdbaOaXcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaihsalhAindnazasydbcdtgCfgXydbgQcu9kmbaXaQcFFFFrGgQBdbaHaCfgCaCydbaQ9RBdbkasclfhsaAcufgAmbxdkkamcuaocdtgsaocFFFFi0EgAcbyd;y1jjbHjjjjbbgzBd:CwamceBd;8wamaAcbyd;y1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;y1jjbHjjjjbbgOBd:KwamciBd;8wazcbasz:njjjbhXalci9UhLaihsalhAinaXasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkdnaoTmbcbhsaHhAaXhCaohQinaAasBdbaAclfhAaCydbasfhsaCclfhCaQcufgQmbkkdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhQaHaAydbcdtfgKaKydbgKcefBdbaOaKcdtfasBdbaHaQcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaoTmbcbhsaohAinaHasfgCaCydbaXasfydb9RBdbasclfhsaAcufgAmbkkamaLcbyd;y1jjbHjjjjbbgsBd:OwamclBd;8wascbaLz:njjjbhYamcuaLcK2alcjjjjd0Ecbyd;y1jjbHjjjjbbg8ABd:SwamcvBd;8wJbbbbhEdnalci6g3mbarcd4hKaihAa8AhsaLhrJbbbbh5inavaAclfydbaK2cdtfgCIdlh8EavaAydbaK2cdtfgXIdlhEavaAcwfydbaK2cdtfgQIdlh8FaCIdwhaaXIdwhhaQIdwhgasaCIdbg8JaXIdbg8KMaQIdbg8LMJbbnn:vUdbasclfaXIdlaCIdlMaQIdlMJbbnn:vUdbaQIdwh8MaCIdwh8NaXIdwhyascxfa8EaE:tg8Eagah:tggNa8FaE:tg8Faaah:tgaN:tgEJbbbbJbbjZa8Ja8K:tg8Ja8FNa8La8K:tg8Ka8EN:tghahNaEaENaaa8KNaga8JN:tgEaENMM:rg8K:va8KJbbbb9BEg8ENUdbasczfaEa8ENUdbascCfaha8ENUdbascwfa8Maya8NMMJbbnn:vUdba5a8KMh5aAcxfhAascKfhsarcufgrmbka5aL:Z:vJbbbZNhEkamcuaLcdtalcFFFF970Ecbyd;y1jjbHjjjjbbgCBd:WwamcoBd;8waEaq:ZNhEdna3mbcbhsaChAinaAasBdbaAclfhAaLascefgs9hmbkkaE:rhhcuh8PamcuaLcltalcFFFFd0Ecbyd;y1jjbHjjjjbbgIBd:0wamcrBd;8wcbaIa8AaCaLz:djjjb8AJFFuuhyJFFuuh8RJFFuuh8Sdnalci6gXmbJFFuuh8Sa8AhsaLhAJFFuuh8RJFFuuhyinascwfIdbgEayayaE9EEhyasclfIdbgEa8Ra8RaE9EEh8RasIdbgEa8Sa8SaE9EEh8SascKfhsaAcufgAmbkkahJbbbZNhgamaocetgscuaocu9kEcbyd;y1jjbHjjjjbbgABd:4waAcFeasz:njjjbhCdnaXmbcbhAJFFuuhEa8Ahscuh8PinascwfIdbay:tghahNasIdba8S:tghahNasclfIdba8R:tghahNMM:rghaEa8PcuSahaE9DVgXEhEaAa8PaXEh8PascKfhsaLaAcefgA9hmbkkamczfcbcjwz:njjjb8Aamcwf9cb83ibam9cb83ibagaxNhRJbbjZak:th8Ncbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80cbh81cbhPinJbbbbhEdna8UTmbJbbjZa8U:Z:vhEkJbbbbhhdna80a80Na8Ya8YNa8Za8ZNMMg8KJbbbb9BmbJbbjZa8K:r:vhhka8XaENh5a8WaENh8Fa8VaENhaa8PhQdndndndndna8UaPVTmbamydwgBTmea80ahNh8Ja8ZahNh8La8YahNh8Maeamydbcdtfh83cbh3JFFuuhEcvhXcuhQindnaza83a3cdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAindndnaCaiaAydbgKcx2fgsclfydbgrcetf8Vebcs4aCasydbgLcetf8Vebcs4faCascwfydbglcetf8Vebcs4fgombcbhsxekcehsazaLcdtfydbgLceSmbcehsazarcdtfydbgrceSmbcehsazalcdtfydbglceSmbdnarcdSaLcdSfalcdSfcd6mbaocefhsxekaocdfhskdnasaX9kmba8AaKcK2fgLIdwa5:thhaLIdla8F:th8KaLIdbaa:th8EdndnakJbbbb9DTmba8E:lg8Ea8K:lg8Ka8Ea8K9EEg8Kah:lgha8Kah9EEag:vJbbjZMhhxekahahNa8Ea8ENa8Ka8KNMM:rag:va8NNJbbjZMJ9VO:d86JbbjZaLIdCa8JNaLIdxa8MNa8LaLIdzNMMakN:tghahJ9VO:d869DENhhkaKaQasaX6ahaE9DVgLEhQasaXaLEhXahaEaLEhEkaAclfhAavcufgvmbkka3cefg3aB9hmbkkaQcu9hmekama5Ud:ODama8FUd:KDamaaUd:GDamcuBd:qDamcFFF;7rBdjDaIcba8AaYamc:GDfakJbbbb9Damc:qDfamcjDfz:ejjjbamyd:qDhQdndnaxJbbbb9ETmba8UaD6mbaQcuSmeceh3amIdjDaR9EmixdkaQcu9hmekdna8UTmbdnamydlgza8Uci2fgsciGTmbadasfcba8Uazcu7fciGcefz:njjjb8AkabaPcltfgzam8Pib83dbazcwfamcwf8Pib83dbaPcefhPkc3hzinazc98Smvamc:Cwfazfydbcbyd;u1jjbH:bjjjbbazc98fhzxbkkcbh3a8Uaq9pmbamydwaCaiaQcx2fgsydbcetf8Vebcs4aCascwfydbcetf8Vebcs4faCasclfydbcetf8Vebcs4ffaw9nmekcbhscbhAdna81TmbcbhAamczfhXinamczfaAcdtfaXydbgLBdbaXclfhXaAaYaLfRbbTfhAa81cufg81mbkkamydwhlamydbhXam9cu83i:GDam9cu83i:ODam9cu83i:qDam9cu83i:yDaAc;8eaAclfc:bd6Eh81inamcjDfasfcFFF;7rBdbasclfgscz9hmbka81cdthBdnalTmbaeaXcdtfhocbhrindnazaoarcdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAcuhLcuhsinazaiaAydbgKcx2fgXclfydbcdtfydbazaXydbcdtfydbfazaXcwfydbcdtfydbfgXasaXas6gXEhsaKaLaXEhLaAclfhAavcufgvmbkaLcuSmba8AaLcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEcbhAindndnasamc:qDfaAfgvydbgX6mbasaX9hmeaEamcjDfaAfIdb9FTmekavasBdbamc:GDfaAfaLBdbamcjDfaAfaEUdbxdkaAclfgAcz9hmbkkarcefgral9hmbkkamczfaBfhLcbhscbhAindnamc:GDfasfydbgXcuSmbaLaAcdtfaXBdbaAcefhAkasclfgscz9hmbkaAa81fg81TmbJFFuuhhcuhKamczfhsa81hvcuhLina8AasydbgXcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEdndnazaiaXcx2fgAclfydbcdtfydbazaAydbcdtfydbfazaAcwfydbcdtfydbfgAaL6mbaAaL9hmeaEah9DTmekaEhhaAhLaXhKkasclfhsavcufgvmbkaKcuSmbaKhQkdnamaiaQcx2fgrydbarclfydbarcwfydbaCabaeadaPawaqa3z:fjjjbTmbaPcefhPJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80kcbhXinaOaHaraXcdtfydbcdtgAfydbcdtfgKhsazaAfgvydbgLhAdnaLTmbdninasydbaQSmeasclfhsaAcufgATmdxbkkasaKaLcdtfc98fydbBdbavavydbcufBdbkaXcefgXci9hmbka8AaQcK2fgsIdbhEasIdlhhasIdwh8KasIdxh8EasIdzh5asIdCh8FaYaQfce86bba80a8FMh80a8Za5Mh8Za8Ya8EMh8Ya8Xa8KMh8Xa8WahMh8Wa8VaEMh8Vamydxh8Uxbkkamc:WDf8KjjjjbaPk;Vvivuv99lu8Jjjjjbca9Rgv8Kjjjjbdndnalcw0mbaiydbhoaeabcitfgralcdtcufBdlaraoBdbdnalcd6mbaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkkalabfhrxekcbhDavczfcwfcbBdbav9cb83izavcwfcbBdbav9cb83ibJbbjZhqJbbjZhkinadaiaDcdtfydbcK2fhwcbhrinavczfarfgoawarfIdbgxaoIdbgm:tgPakNamMgmUdbavarfgoaPaxam:tNaoIdbMUdbarclfgrcx9hmbkJbbjZaqJbbjZMgq:vhkaDcefgDal9hmbkcbhoadcbcecdavIdlgxavIdwgm9GEgravIdbgPam9GEaraPax9GEgscdtgrfhzavczfarfIdbhxaihralhwinaiaocdtfgDydbhHaDarydbgOBdbaraHBdbarclfhraoazaOcK2fIdbax9Dfhoawcufgwmbkaeabcitfhrdndnaocv6mbaoalc98f6mekaraiydbBdbaralcdtcufBdlaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkalabfhrxekaraxUdbararydlc98GasVBdlabcefaeadaiaoz:djjjbhwararydlciGawabcu7fcdtVBdlawaeadaiaocdtfalao9Rz:djjjbhrkavcaf8Kjjjjbark:;idiud99dndnabaecitfgwydlgDciGgqciSmbinabcbaDcd4gDalaqcdtfIdbawIdb:tgkJbbbb9FEgwaecefgefadaialavaoarz:ejjjbak:larIdb9FTmdabawaD7aefgecitfgwydlgDciGgqci9hmbkkabaecitfgeclfhbdnavmbcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdwalIdw:tgkakNaqIdbalIdb:tgkakNaqIdlalIdl:tgkakNMM:rgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbxdkkcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdbalIdb:t:lgkaqIdlalIdl:t:lgxakax9EEgkaqIdwalIdw:t:lgxakax9EEgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbkkk;llevudnabydwgxaladcetfgm8Vebcs4alaecetfgP8Vebgscs4falaicetfgz8Vebcs4ffaD0abydxaq9pVakVgDce9hmbavawcltfgxab8Pdb83dbaxcwfabcwfgx8Pdb83dbdnaxydbgqTmbaoabydbcdtfhxaqhsinalaxydbcetfcFFi87ebaxclfhxascufgsmbkkdnabydxglci2gsabydlgxfgkciGTmbarakfcbalaxcu7fciGcefz:njjjb8Aabydxci2hsabydlhxabydwhqkab9cb83dwababydbaqfBdbabascifc98GaxfBdlaP8Vebhscbhxkdnascztcz91cu9kmbabaxcefBdwaPax87ebaoabydbcdtfaxcdtfaeBdbkdnam8Uebcu9kmbababydwgxcefBdwamax87ebaoabydbcdtfaxcdtfadBdbkdnaz8Uebcu9kmbababydwgxcefBdwazax87ebaoabydbcdtfaxcdtfaiBdbkarabydlfabydxci2faPRbb86bbarabydlfabydxci2fcefamRbb86bbarabydlfabydxci2fcdfazRbb86bbababydxcefBdxaDk8LbabaeadaialavaoarawaDaDaqJbbbbz:cjjjbk;Nkovud99euv99eul998Jjjjjbc:W;ae9Rgo8KjjjjbdndnadTmbavcd4hrcbhwcbhDindnaiaeclfydbar2cdtfgvIdbaiaeydbar2cdtfgqIdbgk:tgxaiaecwfydbar2cdtfgmIdlaqIdlgP:tgsNamIdbak:tgzavIdlaP:tgPN:tgkakNaPamIdwaqIdwgH:tgONasavIdwaH:tgHN:tgPaPNaHazNaOaxN:tgxaxNMM:rgsJbbbb9Bmbaoc:W:qefawcx2fgAakas:vUdwaAaxas:vUdlaAaPas:vUdbaoc8Wfawc8K2fgAaq8Pdb83dbaAav8Pdb83dxaAam8Pdb83dKaAcwfaqcwfydbBdbaAcCfavcwfydbBdbaAcafamcwfydbBdbawcefhwkaecxfheaDcifgDad6mbkab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbawTmeaocbBd8Sao9cb83iKao9cb83izaoczfaoc8Wfawci2cxaoc8Sfcbcrz1jjjbaoIdKhCaoIdChXaoIdzhQao9cb83iwao9cb83ibaoaoc:W:qefawcxaoc8Sfcbciz1jjjbJbbjZhkaoIdwgPJbbbbJbbjZaPaPNaoIdbgPaPNaoIdlgsasNMM:rgx:vaxJbbbb9BEgzNhxasazNhsaPazNhzaoc:W:qefheawhvinaecwfIdbaxNaeIdbazNasaeclfIdbNMMgPakaPak9DEhkaecxfheavcufgvmbkabaCUdwabaXUdlabaQUdbabaoId3UdxdndnakJ;n;m;m899FmbJbbbbhPaoc:W:qefheaoc8WfhvinaCavcwfIdb:taecwfIdbgHNaQavIdb:taeIdbgONaXavclfIdb:taeclfIdbgLNMMaxaHNazaONasaLNMM:vgHaPaHaP9EEhPavc8KfhvaecxfheawcufgwmbkabaxUd8KabasUdaabazUd3abaCaxaPN:tUdKabaXasaPN:tUdCabaQazaPN:tUdzabJbbjZakakN:t:rgkUdydndnaxJbbj:;axJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;axJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohexekcjjjj94hekabae86b8UdndnasJbbj:;asJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;asJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabav86bRdndnazJbbj:;azJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;azJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohqxekcjjjj94hqkabaq86b8SdndnaecKtcK91:YJbb;:9c:vax:t:lavcKtcK91:YJbb;:9c:vas:t:laqcKtcK91:YJbb;:9c:vaz:t:lakMMMJbb;:9cNJbbjZMgk:lJbbb9p9DTmbak:Ohexekcjjjj94hekaecFbaecFb9iEhexekabcjjj;8iBdycFbhekabae86b8Vxekab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbkaoc:W;aef8Kjjjjbk;Iwwvul99iud99eue99eul998Jjjjjbcje9Rgr8Kjjjjbavcd4hwaicd4hDdndnaoTmbarc;abfcbaocdtgvz:njjjb8Aarc;Gbfcbavz:njjjb8AarhvarcafhiaohqinavcFFF97BdbaicFFF;7rBdbaiclfhiavclfhvaqcufgqmbkdnadTmbcbhkinaeakaD2cdtfgvIdwhxavIdlhmavIdbhPalakaw2cdtfIdbhsarc;abfhzarhiarc;GbfhHarcafhqcj1jjbhvaohOinasavcwfIdbaxNavIdbaPNavclfIdbamNMMgAMhCakhXdnaAas:tgAaqIdbgQ9DgLmbaHydbhXkaHaXBdbakhXdnaCaiIdbgK9EmbazydbhXaKhCkazaXBdbaiaCUdbaqaAaQaLEUdbavcxfhvaqclfhqaHclfhHaiclfhiazclfhzaOcufgOmbkakcefgkad9hmbkkadThkJbbbbhCcbhXarc;abfhvarc;Gbfhicbhqinalavydbgzaw2cdtfIdbalaiydbgHaw2cdtfIdbaeazaD2cdtfgzIdwaeaHaD2cdtfgHIdw:tgsasNazIdbaHIdb:tgsasNazIdlaHIdl:tgsasNMM:rMMgsaCasaC9EgzEhCaqaXazEhXaiclfhiavclfhvaoaqcefgq9hmbkaCJbbbZNhKxekadThkcbhXJbbbbhKkJbbbbhCdnaearc;abfaXcdtgifydbgqaD2cdtfgvIdwaearc;GbfaifydbgzaD2cdtfgiIdwgm:tgsasNavIdbaiIdbgY:tgAaANavIdlaiIdlgP:tgQaQNMM:rgxJbbbb9ETmbaxalaqaw2cdtfIdbMalazaw2cdtfIdb:taxaxM:vhCkasaCNamMhmaQaCNaPMhPaAaCNaYMhYdnakmbaDcdthvawcdthiindnalIdbg8AaecwfIdbam:tgCaCNaeIdbaY:tgsasNaeclfIdbaP:tgAaANMM:rgQMgEaK9ETmbJbbbbhxdnaQJbbbb9ETmbaEaK:taQaQM:vhxkaxaCNamMhmaxaANaPMhPaxasNaYMhYa8AaKaQMMJbbbZNhKkaeavfhealaifhladcufgdmbkkabaKUdxabamUdwabaPUdlabaYUdbarcjef8Kjjjjbkjeeiu8Jjjjjbcj8W9Rgr8Kjjjjbaici2hwdnaiTmbawceawce0EhDarhiinaiaeadRbbcdtfydbBdbadcefhdaiclfhiaDcufgDmbkkabarawaladaoz:hjjjbarcj8Wf8Kjjjjbk:3lequ8JjjjjbcjP9Rgl8Kjjjjbcbhvalcjxfcbaiz:njjjb8AdndnadTmbcjehoaehrincuhwarhDcuhqavhkdninawakaoalcjxfaDcefRbbfRbb9RcFeGci6aoalcjxfaDRbbfRbb9RcFeGci6faoalcjxfaDcdfRbbfRbb9RcFeGci6fgxaq9mgmEhwdnammbaxce0mdkaxaqaxaq9kEhqaDcifhDadakcefgk9hmbkkaeawci2fgDcdfRbbhqaDcefRbbhxaDRbbhkaeavci2fgDcifaDawav9Rci2z:qjjjb8Aakalcjxffaocefgo86bbaxalcjxffao86bbaDcdfaq86bbaDcefax86bbaDak86bbaqalcjxffao86bbarcifhravcefgvad9hmbkalcFeaicetz:njjjbhoadci2gDceaDce0EhqcbhxindnaoaeRbbgkcetfgw8UebgDcu9kmbawax87ebaocjlfaxcdtfabakcdtfydbBdbaxhDaxcefhxkaeaD86bbaecefheaqcufgqmbkaxcdthDxekcbhDkabalcjlfaDz:mjjjb8AalcjPf8Kjjjjbk9teiucbcbyd;C1jjbgeabcifc98GfgbBd;C1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;C1jjbgeabcrfc94GfgbBd;C1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;C1jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;C1jjbfgdBd;C1jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk:;Deludndndnadch9pmbabaeSmdaeabadfgi9Rcbadcet9R0mekabaead;8qbbxekaeab7ciGhldndndnabae9pmbdnalTmbadhvabhixikdnabciGmbadhvabhixdkadTmiabaeRbb86bbadcufhvdnabcefgiciGmbaecefhexdkavTmiabaeRbe86beadc9:fhvdnabcdfgiciGmbaecdfhexdkavTmiabaeRbd86bdadc99fhvdnabcifgiciGmbaecifhexdkavTmiabaeRbi86biabclfhiaeclfheadc98fhvxekdnalmbdnaiciGTmbadTmlabadcufgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc9:fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc99fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc98fgdfaeadfRbb86bbkadcl6mbdnadc98fgocd4cefciGgiTmbaec98fhlabc98fhvinavadfaladfydbBdbadc98fhdaicufgimbkkaocx6mbaec9Wfhvabc9WfhoinaoadfgicxfavadfglcxfydbBdbaicwfalcwfydbBdbaiclfalclfydbBdbaialydbBdbadc9Wfgdci0mbkkadTmdadhidnadciGglTmbaecufhvabcufhoadhiinaoaifavaifRbb86bbaicufhialcufglmbkkadcl6mdaec98fhlabc98fhvinavaifgecifalaifgdcifRbb86bbaecdfadcdfRbb86bbaecefadcefRbb86bbaeadRbb86bbaic98fgimbxikkavcl6mbdnavc98fglcd4cefcrGgdTmbavadcdt9RhvinaiaeydbBdbaeclfheaiclfhiadcufgdmbkkalc36mbinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaiaeydzBdzaiaeydCBdCaiaeydKBdKaiaeyd3Bd3aecafheaicafhiavc9Gfgvci0mbkkavTmbdndnavcrGgdmbavhlxekavc94GhlinaiaeRbb86bbaicefhiaecefheadcufgdmbkkavcw6mbinaiaeRbb86bbaiaeRbe86beaiaeRbd86bdaiaeRbi86biaiaeRbl86blaiaeRbv86bvaiaeRbo86boaiaeRbr86braicwfhiaecwfhealc94fglmbkkabkk9Tdbcjwk9ubbjZbbbbbbbbbbbbbbjZbbbbbbbbbbbbbbjZ86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;bc;uwkxebbbdbbb9GNbb",t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(e),{}).then(function(m){n=m.instance,n.exports.__wasm_call_ctors()});function o(m){for(var _=new Uint8Array(m.length),y=0;y<m.length;++y){var C=m.charCodeAt(y);_[y]=C>96?C-97:C>64?C-39:C+4}for(var E=0,y=0;y<m.length;++y)_[E++]=_[y]<60?t[_[y]]:(_[y]-60)*64+_[++y];return _.buffer.slice(0,E)}function r(m){if(!m)throw new Error("Assertion failed")}function s(m){return new Uint8Array(m.buffer,m.byteOffset,m.byteLength)}var a=48,c=16;function u(m,_){var y=m.meshlets[_*4+0],C=m.meshlets[_*4+1],E=m.meshlets[_*4+2],I=m.meshlets[_*4+3];return{vertices:m.vertices.subarray(y,y+E),triangles:m.triangles.subarray(C,C+I*3)}}function f(m,_,y,C,E,I,b){var S=n.exports.sbrk,B=n.exports.meshopt_buildMeshletsBound(m.length,E,I),v=S(B*c),P=S(B*E*4),M=S(B*I*3),L=S(m.byteLength),p=S(_.byteLength),x=new Uint8Array(n.exports.memory.buffer);x.set(s(m),L),x.set(s(_),p);var T=n.exports.meshopt_buildMeshlets(v,P,M,L,m.length,p,y,C,E,I,b);x=new Uint8Array(n.exports.memory.buffer);for(var w=x.subarray(v,v+T*c),R=new Uint32Array(w.buffer,w.byteOffset,w.byteLength/4).slice(),O=0;O<T;++O){var k=R[O*4+0],Q=R[O*4+1],y=R[O*4+2],z=R[O*4+3];n.exports.meshopt_optimizeMeshlet(P+k*4,M+Q,z,y)}var F=R[(T-1)*4+0],H=R[(T-1)*4+1],W=R[(T-1)*4+2],Z=R[(T-1)*4+3],Y=F+W,$=H+(Z*3+3&-4),X={meshlets:R,vertices:new Uint32Array(x.buffer,P,Y).slice(),triangles:new Uint8Array(x.buffer,M,$*3).slice(),meshletCount:T};return S(v-S(0)),X}function h(m){var _=new Float32Array(n.exports.memory.buffer,m,a/4);return{centerX:_[0],centerY:_[1],centerZ:_[2],radius:_[3],coneApexX:_[4],coneApexY:_[5],coneApexZ:_[6],coneAxisX:_[7],coneAxisY:_[8],coneAxisZ:_[9],coneCutoff:_[10]}}function A(m,_,y,C){var E=n.exports.sbrk,I=[],b=E(_.byteLength),S=E(m.vertices.byteLength),B=E(m.triangles.byteLength),v=E(a),P=new Uint8Array(n.exports.memory.buffer);P.set(s(_),b),P.set(s(m.vertices),S),P.set(s(m.triangles),B);for(var M=0;M<m.meshletCount;++M){var L=m.meshlets[M*4+0],p=m.meshlets[M*4+0+1],x=m.meshlets[M*4+0+3];n.exports.meshopt_computeMeshletBounds(v,S+L*4,B+p,x,b,y,C),I.push(h(v))}return E(b-E(0)),I}function g(m,_,y,C){var E=n.exports.sbrk,I=E(a),b=E(m.byteLength),S=E(_.byteLength),B=new Uint8Array(n.exports.memory.buffer);B.set(s(m),b),B.set(s(_),S),n.exports.meshopt_computeClusterBounds(I,b,m.length,S,y,C);var v=h(I);return E(I-E(0)),v}return{ready:i,supported:!0,buildMeshlets:function(m,_,y,C,E,I){r(m.length%3==0),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3),r(C<=256||C>0),r(E<=512),r(E%4==0),I=I||0;var b=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m);return f(b,_,_.length/y,y*4,C,E,I)},computeClusterBounds:function(m,_,y){r(m.length%3==0),r(m.length/3<=512),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3);var C=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m);return g(C,_,_.length/y,y*4)},computeMeshletBounds:function(m,_,y){return r(m.meshletCount!=0),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3),A(m,_,_.length/y,y*4)},extractMeshlet:function(m,_){return r(_>=0&&_<m.meshletCount),u(m,_)}}}();typeof XR=="object"&&typeof GW=="object"?GW.exports=yz:typeof define=="function"&&define.amd?define([],function(){return yz}):typeof XR=="object"?XR.MeshoptClusterizer=yz:(typeof self<"u"?self:XR).MeshoptClusterizer=yz});var xae=ui((_in,Iae)=>{var Vke=_ae(),Hke=yae(),Wke=Cae(),jke=Eae();Iae.exports={MeshoptEncoder:Vke,MeshoptDecoder:Hke,MeshoptSimplifier:Wke,MeshoptClusterizer:jke}});var pde=ui((sLn,Ade)=>{"use strict";Ade.exports=Jqe;var _L=1e20;function Jqe(e,t){t||(t={});var n=t.cutoff==null?.25:t.cutoff,i=t.radius==null?8:t.radius,o=t.channel||0,r,s,a,c,u,f,h,A,g,m,_;if(ArrayBuffer.isView(e)||Array.isArray(e)){if(!t.width||!t.height)throw Error("For raw data width and height should be provided by options");r=t.width,s=t.height,c=e,t.stride?f=t.stride:f=Math.floor(e.length/r/s)}else window.HTMLCanvasElement&&e instanceof window.HTMLCanvasElement?(A=e,h=A.getContext("2d"),r=A.width,s=A.height,g=h.getImageData(0,0,r,s),c=g.data,f=4):window.CanvasRenderingContext2D&&e instanceof window.CanvasRenderingContext2D?(A=e.canvas,h=e,r=A.width,s=A.height,g=h.getImageData(0,0,r,s),c=g.data,f=4):window.ImageData&&e instanceof window.ImageData&&(g=e,r=e.width,s=e.height,c=g.data,f=4);if(a=Math.max(r,s),window.Uint8ClampedArray&&c instanceof window.Uint8ClampedArray||window.Uint8Array&&c instanceof window.Uint8Array)for(u=c,c=Array(r*s),m=0,_=Math.floor(u.length/f);m<_;m++)c[m]=u[m*f+o]/255;else if(f!==1)throw Error("Raw data can have only 1 value per pixel");var y=Array(r*s),C=Array(r*s),E=Array(a),I=Array(a),b=Array(a+1),S=Array(a);for(m=0,_=r*s;m<_;m++){var B=c[m];y[m]=B===1?0:B===0?_L:Math.pow(Math.max(0,.5-B),2),C[m]=B===1?_L:B===0?0:Math.pow(Math.max(0,B-.5),2)}hde(y,r,s,E,I,S,b),hde(C,r,s,E,I,S,b);var v=window.Float32Array?new Float32Array(r*s):new Array(r*s);for(m=0,_=r*s;m<_;m++)v[m]=Math.min(Math.max(1-((y[m]-C[m])/i+n),0),1);return v}function hde(e,t,n,i,o,r,s){for(var a=0;a<t;a++){for(var c=0;c<n;c++)i[c]=e[c*t+a];for(mde(i,o,r,s,n),c=0;c<n;c++)e[c*t+a]=o[c]}for(c=0;c<n;c++){for(a=0;a<t;a++)i[a]=e[c*t+a];for(mde(i,o,r,s,t),a=0;a<t;a++)e[c*t+a]=Math.sqrt(o[a])}}function mde(e,t,n,i,o){n[0]=0,i[0]=-_L,i[1]=+_L;for(var r=1,s=0;r<o;r++){for(var a=(e[r]+r*r-(e[n[s]]+n[s]*n[s]))/(2*r-2*n[s]);a<=i[s];)s--,a=(e[r]+r*r-(e[n[s]]+n[s]*n[s]))/(2*r-2*n[s]);s++,n[s]=r,i[s]=a,i[s+1]=+_L}for(r=0,s=0;r<o;r++){for(;i[s+1]<r;)s++;t[r]=(r-n[s])*(r-n[s])+e[n[s]]}}});var Ede=ui((xLn,dV)=>{function cKe(){var e=0,t=1,n=2,i=3,o=4,r=5,s=6,a=7,c=8,u=9,f=10,h=11,A=12,g=13,m=14,_=15,y=16,C=17,E=0,I=1,b=2,S=3,B=4;function v(p,x){return 55296<=p.charCodeAt(x)&&p.charCodeAt(x)<=56319&&56320<=p.charCodeAt(x+1)&&p.charCodeAt(x+1)<=57343}function P(p,x){x===void 0&&(x=0);var T=p.charCodeAt(x);if(55296<=T&&T<=56319&&x<p.length-1){var w=T,R=p.charCodeAt(x+1);return 56320<=R&&R<=57343?(w-55296)*1024+(R-56320)+65536:w}if(56320<=T&&T<=57343&&x>=1){var w=p.charCodeAt(x-1),R=T;return 55296<=w&&w<=56319?(w-55296)*1024+(R-56320)+65536:R}return T}function M(p,x,T){var w=[p].concat(x).concat([T]),R=w[w.length-2],O=T,k=w.lastIndexOf(m);if(k>1&&w.slice(1,k).every(function(F){return F==i})&&[i,g,C].indexOf(p)==-1)return b;var Q=w.lastIndexOf(o);if(Q>0&&w.slice(1,Q).every(function(F){return F==o})&&[A,o].indexOf(R)==-1)return w.filter(function(F){return F==o}).length%2==1?S:B;if(R==e&&O==t)return E;if(R==n||R==e||R==t)return O==m&&x.every(function(F){return F==i})?b:I;if(O==n||O==e||O==t)return I;if(R==s&&(O==s||O==a||O==u||O==f))return E;if((R==u||R==a)&&(O==a||O==c))return E;if((R==f||R==c)&&O==c)return E;if(O==i||O==_)return E;if(O==r)return E;if(R==A)return E;var z=w.indexOf(i)!=-1?w.lastIndexOf(i)-1:w.length-2;return[g,C].indexOf(w[z])!=-1&&w.slice(z+1,-1).every(function(F){return F==i})&&O==m||R==_&&[y,C].indexOf(O)!=-1?E:x.indexOf(o)!=-1?b:R==o&&O==o?E:I}this.nextBreak=function(p,x){if(x===void 0&&(x=0),x<0)return 0;if(x>=p.length-1)return p.length;for(var T=L(P(p,x)),w=[],R=x+1;R<p.length;R++)if(!v(p,R-1)){var O=L(P(p,R));if(M(T,w,O))return R;w.push(O)}return p.length},this.splitGraphemes=function(p){for(var x=[],T=0,w;(w=this.nextBreak(p,T))<p.length;)x.push(p.slice(T,w)),T=w;return T<p.length&&x.push(p.slice(T)),x},this.iterateGraphemes=function(p){var x=0,T={next:function(){var w,R;return(R=this.nextBreak(p,x))<p.length?(w=p.slice(x,R),x=R,{value:w,done:!1}):x<p.length?(w=p.slice(x),x=p.length,{value:w,done:!1}):{value:void 0,done:!0}}.bind(this)};return typeof Symbol<"u"&&Symbol.iterator&&(T[Symbol.iterator]=function(){return T}),T},this.countGraphemes=function(p){for(var x=0,T=0,w;(w=this.nextBreak(p,T))<p.length;)T=w,x++;return T<p.length&&x++,x};function L(p){return 1536<=p&&p<=1541||p==1757||p==1807||p==2274||p==3406||p==69821||70082<=p&&p<=70083||p==72250||72326<=p&&p<=72329||p==73030?A:p==13?e:p==10?t:0<=p&&p<=9||11<=p&&p<=12||14<=p&&p<=31||127<=p&&p<=159||p==173||p==1564||p==6158||p==8203||8206<=p&&p<=8207||p==8232||p==8233||8234<=p&&p<=8238||8288<=p&&p<=8292||p==8293||8294<=p&&p<=8303||55296<=p&&p<=57343||p==65279||65520<=p&&p<=65528||65529<=p&&p<=65531||113824<=p&&p<=113827||119155<=p&&p<=119162||p==917504||p==917505||917506<=p&&p<=917535||917632<=p&&p<=917759||918e3<=p&&p<=921599?n:768<=p&&p<=879||1155<=p&&p<=1159||1160<=p&&p<=1161||1425<=p&&p<=1469||p==1471||1473<=p&&p<=1474||1476<=p&&p<=1477||p==1479||1552<=p&&p<=1562||1611<=p&&p<=1631||p==1648||1750<=p&&p<=1756||1759<=p&&p<=1764||1767<=p&&p<=1768||1770<=p&&p<=1773||p==1809||1840<=p&&p<=1866||1958<=p&&p<=1968||2027<=p&&p<=2035||2070<=p&&p<=2073||2075<=p&&p<=2083||2085<=p&&p<=2087||2089<=p&&p<=2093||2137<=p&&p<=2139||2260<=p&&p<=2273||2275<=p&&p<=2306||p==2362||p==2364||2369<=p&&p<=2376||p==2381||2385<=p&&p<=2391||2402<=p&&p<=2403||p==2433||p==2492||p==2494||2497<=p&&p<=2500||p==2509||p==2519||2530<=p&&p<=2531||2561<=p&&p<=2562||p==2620||2625<=p&&p<=2626||2631<=p&&p<=2632||2635<=p&&p<=2637||p==2641||2672<=p&&p<=2673||p==2677||2689<=p&&p<=2690||p==2748||2753<=p&&p<=2757||2759<=p&&p<=2760||p==2765||2786<=p&&p<=2787||2810<=p&&p<=2815||p==2817||p==2876||p==2878||p==2879||2881<=p&&p<=2884||p==2893||p==2902||p==2903||2914<=p&&p<=2915||p==2946||p==3006||p==3008||p==3021||p==3031||p==3072||3134<=p&&p<=3136||3142<=p&&p<=3144||3146<=p&&p<=3149||3157<=p&&p<=3158||3170<=p&&p<=3171||p==3201||p==3260||p==3263||p==3266||p==3270||3276<=p&&p<=3277||3285<=p&&p<=3286||3298<=p&&p<=3299||3328<=p&&p<=3329||3387<=p&&p<=3388||p==3390||3393<=p&&p<=3396||p==3405||p==3415||3426<=p&&p<=3427||p==3530||p==3535||3538<=p&&p<=3540||p==3542||p==3551||p==3633||3636<=p&&p<=3642||3655<=p&&p<=3662||p==3761||3764<=p&&p<=3769||3771<=p&&p<=3772||3784<=p&&p<=3789||3864<=p&&p<=3865||p==3893||p==3895||p==3897||3953<=p&&p<=3966||3968<=p&&p<=3972||3974<=p&&p<=3975||3981<=p&&p<=3991||3993<=p&&p<=4028||p==4038||4141<=p&&p<=4144||4146<=p&&p<=4151||4153<=p&&p<=4154||4157<=p&&p<=4158||4184<=p&&p<=4185||4190<=p&&p<=4192||4209<=p&&p<=4212||p==4226||4229<=p&&p<=4230||p==4237||p==4253||4957<=p&&p<=4959||5906<=p&&p<=5908||5938<=p&&p<=5940||5970<=p&&p<=5971||6002<=p&&p<=6003||6068<=p&&p<=6069||6071<=p&&p<=6077||p==6086||6089<=p&&p<=6099||p==6109||6155<=p&&p<=6157||6277<=p&&p<=6278||p==6313||6432<=p&&p<=6434||6439<=p&&p<=6440||p==6450||6457<=p&&p<=6459||6679<=p&&p<=6680||p==6683||p==6742||6744<=p&&p<=6750||p==6752||p==6754||6757<=p&&p<=6764||6771<=p&&p<=6780||p==6783||6832<=p&&p<=6845||p==6846||6912<=p&&p<=6915||p==6964||6966<=p&&p<=6970||p==6972||p==6978||7019<=p&&p<=7027||7040<=p&&p<=7041||7074<=p&&p<=7077||7080<=p&&p<=7081||7083<=p&&p<=7085||p==7142||7144<=p&&p<=7145||p==7149||7151<=p&&p<=7153||7212<=p&&p<=7219||7222<=p&&p<=7223||7376<=p&&p<=7378||7380<=p&&p<=7392||7394<=p&&p<=7400||p==7405||p==7412||7416<=p&&p<=7417||7616<=p&&p<=7673||7675<=p&&p<=7679||p==8204||8400<=p&&p<=8412||8413<=p&&p<=8416||p==8417||8418<=p&&p<=8420||8421<=p&&p<=8432||11503<=p&&p<=11505||p==11647||11744<=p&&p<=11775||12330<=p&&p<=12333||12334<=p&&p<=12335||12441<=p&&p<=12442||p==42607||42608<=p&&p<=42610||42612<=p&&p<=42621||42654<=p&&p<=42655||42736<=p&&p<=42737||p==43010||p==43014||p==43019||43045<=p&&p<=43046||43204<=p&&p<=43205||43232<=p&&p<=43249||43302<=p&&p<=43309||43335<=p&&p<=43345||43392<=p&&p<=43394||p==43443||43446<=p&&p<=43449||p==43452||p==43493||43561<=p&&p<=43566||43569<=p&&p<=43570||43573<=p&&p<=43574||p==43587||p==43596||p==43644||p==43696||43698<=p&&p<=43700||43703<=p&&p<=43704||43710<=p&&p<=43711||p==43713||43756<=p&&p<=43757||p==43766||p==44005||p==44008||p==44013||p==64286||65024<=p&&p<=65039||65056<=p&&p<=65071||65438<=p&&p<=65439||p==66045||p==66272||66422<=p&&p<=66426||68097<=p&&p<=68099||68101<=p&&p<=68102||68108<=p&&p<=68111||68152<=p&&p<=68154||p==68159||68325<=p&&p<=68326||p==69633||69688<=p&&p<=69702||69759<=p&&p<=69761||69811<=p&&p<=69814||69817<=p&&p<=69818||69888<=p&&p<=69890||69927<=p&&p<=69931||69933<=p&&p<=69940||p==70003||70016<=p&&p<=70017||70070<=p&&p<=70078||70090<=p&&p<=70092||70191<=p&&p<=70193||p==70196||70198<=p&&p<=70199||p==70206||p==70367||70371<=p&&p<=70378||70400<=p&&p<=70401||p==70460||p==70462||p==70464||p==70487||70502<=p&&p<=70508||70512<=p&&p<=70516||70712<=p&&p<=70719||70722<=p&&p<=70724||p==70726||p==70832||70835<=p&&p<=70840||p==70842||p==70845||70847<=p&&p<=70848||70850<=p&&p<=70851||p==71087||71090<=p&&p<=71093||71100<=p&&p<=71101||71103<=p&&p<=71104||71132<=p&&p<=71133||71219<=p&&p<=71226||p==71229||71231<=p&&p<=71232||p==71339||p==71341||71344<=p&&p<=71349||p==71351||71453<=p&&p<=71455||71458<=p&&p<=71461||71463<=p&&p<=71467||72193<=p&&p<=72198||72201<=p&&p<=72202||72243<=p&&p<=72248||72251<=p&&p<=72254||p==72263||72273<=p&&p<=72278||72281<=p&&p<=72283||72330<=p&&p<=72342||72344<=p&&p<=72345||72752<=p&&p<=72758||72760<=p&&p<=72765||p==72767||72850<=p&&p<=72871||72874<=p&&p<=72880||72882<=p&&p<=72883||72885<=p&&p<=72886||73009<=p&&p<=73014||p==73018||73020<=p&&p<=73021||73023<=p&&p<=73029||p==73031||92912<=p&&p<=92916||92976<=p&&p<=92982||94095<=p&&p<=94098||113821<=p&&p<=113822||p==119141||119143<=p&&p<=119145||119150<=p&&p<=119154||119163<=p&&p<=119170||119173<=p&&p<=119179||119210<=p&&p<=119213||119362<=p&&p<=119364||121344<=p&&p<=121398||121403<=p&&p<=121452||p==121461||p==121476||121499<=p&&p<=121503||121505<=p&&p<=121519||122880<=p&&p<=122886||122888<=p&&p<=122904||122907<=p&&p<=122913||122915<=p&&p<=122916||122918<=p&&p<=122922||125136<=p&&p<=125142||125252<=p&&p<=125258||917536<=p&&p<=917631||917760<=p&&p<=917999?i:127462<=p&&p<=127487?o:p==2307||p==2363||2366<=p&&p<=2368||2377<=p&&p<=2380||2382<=p&&p<=2383||2434<=p&&p<=2435||2495<=p&&p<=2496||2503<=p&&p<=2504||2507<=p&&p<=2508||p==2563||2622<=p&&p<=2624||p==2691||2750<=p&&p<=2752||p==2761||2763<=p&&p<=2764||2818<=p&&p<=2819||p==2880||2887<=p&&p<=2888||2891<=p&&p<=2892||p==3007||3009<=p&&p<=3010||3014<=p&&p<=3016||3018<=p&&p<=3020||3073<=p&&p<=3075||3137<=p&&p<=3140||3202<=p&&p<=3203||p==3262||3264<=p&&p<=3265||3267<=p&&p<=3268||3271<=p&&p<=3272||3274<=p&&p<=3275||3330<=p&&p<=3331||3391<=p&&p<=3392||3398<=p&&p<=3400||3402<=p&&p<=3404||3458<=p&&p<=3459||3536<=p&&p<=3537||3544<=p&&p<=3550||3570<=p&&p<=3571||p==3635||p==3763||3902<=p&&p<=3903||p==3967||p==4145||4155<=p&&p<=4156||4182<=p&&p<=4183||p==4228||p==6070||6078<=p&&p<=6085||6087<=p&&p<=6088||6435<=p&&p<=6438||6441<=p&&p<=6443||6448<=p&&p<=6449||6451<=p&&p<=6456||6681<=p&&p<=6682||p==6741||p==6743||6765<=p&&p<=6770||p==6916||p==6965||p==6971||6973<=p&&p<=6977||6979<=p&&p<=6980||p==7042||p==7073||7078<=p&&p<=7079||p==7082||p==7143||7146<=p&&p<=7148||p==7150||7154<=p&&p<=7155||7204<=p&&p<=7211||7220<=p&&p<=7221||p==7393||7410<=p&&p<=7411||p==7415||43043<=p&&p<=43044||p==43047||43136<=p&&p<=43137||43188<=p&&p<=43203||43346<=p&&p<=43347||p==43395||43444<=p&&p<=43445||43450<=p&&p<=43451||43453<=p&&p<=43456||43567<=p&&p<=43568||43571<=p&&p<=43572||p==43597||p==43755||43758<=p&&p<=43759||p==43765||44003<=p&&p<=44004||44006<=p&&p<=44007||44009<=p&&p<=44010||p==44012||p==69632||p==69634||p==69762||69808<=p&&p<=69810||69815<=p&&p<=69816||p==69932||p==70018||70067<=p&&p<=70069||70079<=p&&p<=70080||70188<=p&&p<=70190||70194<=p&&p<=70195||p==70197||70368<=p&&p<=70370||70402<=p&&p<=70403||p==70463||70465<=p&&p<=70468||70471<=p&&p<=70472||70475<=p&&p<=70477||70498<=p&&p<=70499||70709<=p&&p<=70711||70720<=p&&p<=70721||p==70725||70833<=p&&p<=70834||p==70841||70843<=p&&p<=70844||p==70846||p==70849||71088<=p&&p<=71089||71096<=p&&p<=71099||p==71102||71216<=p&&p<=71218||71227<=p&&p<=71228||p==71230||p==71340||71342<=p&&p<=71343||p==71350||71456<=p&&p<=71457||p==71462||72199<=p&&p<=72200||p==72249||72279<=p&&p<=72280||p==72343||p==72751||p==72766||p==72873||p==72881||p==72884||94033<=p&&p<=94078||p==119142||p==119149?r:4352<=p&&p<=4447||43360<=p&&p<=43388?s:4448<=p&&p<=4519||55216<=p&&p<=55238?a:4520<=p&&p<=4607||55243<=p&&p<=55291?c:p==44032||p==44060||p==44088||p==44116||p==44144||p==44172||p==44200||p==44228||p==44256||p==44284||p==44312||p==44340||p==44368||p==44396||p==44424||p==44452||p==44480||p==44508||p==44536||p==44564||p==44592||p==44620||p==44648||p==44676||p==44704||p==44732||p==44760||p==44788||p==44816||p==44844||p==44872||p==44900||p==44928||p==44956||p==44984||p==45012||p==45040||p==45068||p==45096||p==45124||p==45152||p==45180||p==45208||p==45236||p==45264||p==45292||p==45320||p==45348||p==45376||p==45404||p==45432||p==45460||p==45488||p==45516||p==45544||p==45572||p==45600||p==45628||p==45656||p==45684||p==45712||p==45740||p==45768||p==45796||p==45824||p==45852||p==45880||p==45908||p==45936||p==45964||p==45992||p==46020||p==46048||p==46076||p==46104||p==46132||p==46160||p==46188||p==46216||p==46244||p==46272||p==46300||p==46328||p==46356||p==46384||p==46412||p==46440||p==46468||p==46496||p==46524||p==46552||p==46580||p==46608||p==46636||p==46664||p==46692||p==46720||p==46748||p==46776||p==46804||p==46832||p==46860||p==46888||p==46916||p==46944||p==46972||p==47e3||p==47028||p==47056||p==47084||p==47112||p==47140||p==47168||p==47196||p==47224||p==47252||p==47280||p==47308||p==47336||p==47364||p==47392||p==47420||p==47448||p==47476||p==47504||p==47532||p==47560||p==47588||p==47616||p==47644||p==47672||p==47700||p==47728||p==47756||p==47784||p==47812||p==47840||p==47868||p==47896||p==47924||p==47952||p==47980||p==48008||p==48036||p==48064||p==48092||p==48120||p==48148||p==48176||p==48204||p==48232||p==48260||p==48288||p==48316||p==48344||p==48372||p==48400||p==48428||p==48456||p==48484||p==48512||p==48540||p==48568||p==48596||p==48624||p==48652||p==48680||p==48708||p==48736||p==48764||p==48792||p==48820||p==48848||p==48876||p==48904||p==48932||p==48960||p==48988||p==49016||p==49044||p==49072||p==49100||p==49128||p==49156||p==49184||p==49212||p==49240||p==49268||p==49296||p==49324||p==49352||p==49380||p==49408||p==49436||p==49464||p==49492||p==49520||p==49548||p==49576||p==49604||p==49632||p==49660||p==49688||p==49716||p==49744||p==49772||p==49800||p==49828||p==49856||p==49884||p==49912||p==49940||p==49968||p==49996||p==50024||p==50052||p==50080||p==50108||p==50136||p==50164||p==50192||p==50220||p==50248||p==50276||p==50304||p==50332||p==50360||p==50388||p==50416||p==50444||p==50472||p==50500||p==50528||p==50556||p==50584||p==50612||p==50640||p==50668||p==50696||p==50724||p==50752||p==50780||p==50808||p==50836||p==50864||p==50892||p==50920||p==50948||p==50976||p==51004||p==51032||p==51060||p==51088||p==51116||p==51144||p==51172||p==51200||p==51228||p==51256||p==51284||p==51312||p==51340||p==51368||p==51396||p==51424||p==51452||p==51480||p==51508||p==51536||p==51564||p==51592||p==51620||p==51648||p==51676||p==51704||p==51732||p==51760||p==51788||p==51816||p==51844||p==51872||p==51900||p==51928||p==51956||p==51984||p==52012||p==52040||p==52068||p==52096||p==52124||p==52152||p==52180||p==52208||p==52236||p==52264||p==52292||p==52320||p==52348||p==52376||p==52404||p==52432||p==52460||p==52488||p==52516||p==52544||p==52572||p==52600||p==52628||p==52656||p==52684||p==52712||p==52740||p==52768||p==52796||p==52824||p==52852||p==52880||p==52908||p==52936||p==52964||p==52992||p==53020||p==53048||p==53076||p==53104||p==53132||p==53160||p==53188||p==53216||p==53244||p==53272||p==53300||p==53328||p==53356||p==53384||p==53412||p==53440||p==53468||p==53496||p==53524||p==53552||p==53580||p==53608||p==53636||p==53664||p==53692||p==53720||p==53748||p==53776||p==53804||p==53832||p==53860||p==53888||p==53916||p==53944||p==53972||p==54e3||p==54028||p==54056||p==54084||p==54112||p==54140||p==54168||p==54196||p==54224||p==54252||p==54280||p==54308||p==54336||p==54364||p==54392||p==54420||p==54448||p==54476||p==54504||p==54532||p==54560||p==54588||p==54616||p==54644||p==54672||p==54700||p==54728||p==54756||p==54784||p==54812||p==54840||p==54868||p==54896||p==54924||p==54952||p==54980||p==55008||p==55036||p==55064||p==55092||p==55120||p==55148||p==55176?u:44033<=p&&p<=44059||44061<=p&&p<=44087||44089<=p&&p<=44115||44117<=p&&p<=44143||44145<=p&&p<=44171||44173<=p&&p<=44199||44201<=p&&p<=44227||44229<=p&&p<=44255||44257<=p&&p<=44283||44285<=p&&p<=44311||44313<=p&&p<=44339||44341<=p&&p<=44367||44369<=p&&p<=44395||44397<=p&&p<=44423||44425<=p&&p<=44451||44453<=p&&p<=44479||44481<=p&&p<=44507||44509<=p&&p<=44535||44537<=p&&p<=44563||44565<=p&&p<=44591||44593<=p&&p<=44619||44621<=p&&p<=44647||44649<=p&&p<=44675||44677<=p&&p<=44703||44705<=p&&p<=44731||44733<=p&&p<=44759||44761<=p&&p<=44787||44789<=p&&p<=44815||44817<=p&&p<=44843||44845<=p&&p<=44871||44873<=p&&p<=44899||44901<=p&&p<=44927||44929<=p&&p<=44955||44957<=p&&p<=44983||44985<=p&&p<=45011||45013<=p&&p<=45039||45041<=p&&p<=45067||45069<=p&&p<=45095||45097<=p&&p<=45123||45125<=p&&p<=45151||45153<=p&&p<=45179||45181<=p&&p<=45207||45209<=p&&p<=45235||45237<=p&&p<=45263||45265<=p&&p<=45291||45293<=p&&p<=45319||45321<=p&&p<=45347||45349<=p&&p<=45375||45377<=p&&p<=45403||45405<=p&&p<=45431||45433<=p&&p<=45459||45461<=p&&p<=45487||45489<=p&&p<=45515||45517<=p&&p<=45543||45545<=p&&p<=45571||45573<=p&&p<=45599||45601<=p&&p<=45627||45629<=p&&p<=45655||45657<=p&&p<=45683||45685<=p&&p<=45711||45713<=p&&p<=45739||45741<=p&&p<=45767||45769<=p&&p<=45795||45797<=p&&p<=45823||45825<=p&&p<=45851||45853<=p&&p<=45879||45881<=p&&p<=45907||45909<=p&&p<=45935||45937<=p&&p<=45963||45965<=p&&p<=45991||45993<=p&&p<=46019||46021<=p&&p<=46047||46049<=p&&p<=46075||46077<=p&&p<=46103||46105<=p&&p<=46131||46133<=p&&p<=46159||46161<=p&&p<=46187||46189<=p&&p<=46215||46217<=p&&p<=46243||46245<=p&&p<=46271||46273<=p&&p<=46299||46301<=p&&p<=46327||46329<=p&&p<=46355||46357<=p&&p<=46383||46385<=p&&p<=46411||46413<=p&&p<=46439||46441<=p&&p<=46467||46469<=p&&p<=46495||46497<=p&&p<=46523||46525<=p&&p<=46551||46553<=p&&p<=46579||46581<=p&&p<=46607||46609<=p&&p<=46635||46637<=p&&p<=46663||46665<=p&&p<=46691||46693<=p&&p<=46719||46721<=p&&p<=46747||46749<=p&&p<=46775||46777<=p&&p<=46803||46805<=p&&p<=46831||46833<=p&&p<=46859||46861<=p&&p<=46887||46889<=p&&p<=46915||46917<=p&&p<=46943||46945<=p&&p<=46971||46973<=p&&p<=46999||47001<=p&&p<=47027||47029<=p&&p<=47055||47057<=p&&p<=47083||47085<=p&&p<=47111||47113<=p&&p<=47139||47141<=p&&p<=47167||47169<=p&&p<=47195||47197<=p&&p<=47223||47225<=p&&p<=47251||47253<=p&&p<=47279||47281<=p&&p<=47307||47309<=p&&p<=47335||47337<=p&&p<=47363||47365<=p&&p<=47391||47393<=p&&p<=47419||47421<=p&&p<=47447||47449<=p&&p<=47475||47477<=p&&p<=47503||47505<=p&&p<=47531||47533<=p&&p<=47559||47561<=p&&p<=47587||47589<=p&&p<=47615||47617<=p&&p<=47643||47645<=p&&p<=47671||47673<=p&&p<=47699||47701<=p&&p<=47727||47729<=p&&p<=47755||47757<=p&&p<=47783||47785<=p&&p<=47811||47813<=p&&p<=47839||47841<=p&&p<=47867||47869<=p&&p<=47895||47897<=p&&p<=47923||47925<=p&&p<=47951||47953<=p&&p<=47979||47981<=p&&p<=48007||48009<=p&&p<=48035||48037<=p&&p<=48063||48065<=p&&p<=48091||48093<=p&&p<=48119||48121<=p&&p<=48147||48149<=p&&p<=48175||48177<=p&&p<=48203||48205<=p&&p<=48231||48233<=p&&p<=48259||48261<=p&&p<=48287||48289<=p&&p<=48315||48317<=p&&p<=48343||48345<=p&&p<=48371||48373<=p&&p<=48399||48401<=p&&p<=48427||48429<=p&&p<=48455||48457<=p&&p<=48483||48485<=p&&p<=48511||48513<=p&&p<=48539||48541<=p&&p<=48567||48569<=p&&p<=48595||48597<=p&&p<=48623||48625<=p&&p<=48651||48653<=p&&p<=48679||48681<=p&&p<=48707||48709<=p&&p<=48735||48737<=p&&p<=48763||48765<=p&&p<=48791||48793<=p&&p<=48819||48821<=p&&p<=48847||48849<=p&&p<=48875||48877<=p&&p<=48903||48905<=p&&p<=48931||48933<=p&&p<=48959||48961<=p&&p<=48987||48989<=p&&p<=49015||49017<=p&&p<=49043||49045<=p&&p<=49071||49073<=p&&p<=49099||49101<=p&&p<=49127||49129<=p&&p<=49155||49157<=p&&p<=49183||49185<=p&&p<=49211||49213<=p&&p<=49239||49241<=p&&p<=49267||49269<=p&&p<=49295||49297<=p&&p<=49323||49325<=p&&p<=49351||49353<=p&&p<=49379||49381<=p&&p<=49407||49409<=p&&p<=49435||49437<=p&&p<=49463||49465<=p&&p<=49491||49493<=p&&p<=49519||49521<=p&&p<=49547||49549<=p&&p<=49575||49577<=p&&p<=49603||49605<=p&&p<=49631||49633<=p&&p<=49659||49661<=p&&p<=49687||49689<=p&&p<=49715||49717<=p&&p<=49743||49745<=p&&p<=49771||49773<=p&&p<=49799||49801<=p&&p<=49827||49829<=p&&p<=49855||49857<=p&&p<=49883||49885<=p&&p<=49911||49913<=p&&p<=49939||49941<=p&&p<=49967||49969<=p&&p<=49995||49997<=p&&p<=50023||50025<=p&&p<=50051||50053<=p&&p<=50079||50081<=p&&p<=50107||50109<=p&&p<=50135||50137<=p&&p<=50163||50165<=p&&p<=50191||50193<=p&&p<=50219||50221<=p&&p<=50247||50249<=p&&p<=50275||50277<=p&&p<=50303||50305<=p&&p<=50331||50333<=p&&p<=50359||50361<=p&&p<=50387||50389<=p&&p<=50415||50417<=p&&p<=50443||50445<=p&&p<=50471||50473<=p&&p<=50499||50501<=p&&p<=50527||50529<=p&&p<=50555||50557<=p&&p<=50583||50585<=p&&p<=50611||50613<=p&&p<=50639||50641<=p&&p<=50667||50669<=p&&p<=50695||50697<=p&&p<=50723||50725<=p&&p<=50751||50753<=p&&p<=50779||50781<=p&&p<=50807||50809<=p&&p<=50835||50837<=p&&p<=50863||50865<=p&&p<=50891||50893<=p&&p<=50919||50921<=p&&p<=50947||50949<=p&&p<=50975||50977<=p&&p<=51003||51005<=p&&p<=51031||51033<=p&&p<=51059||51061<=p&&p<=51087||51089<=p&&p<=51115||51117<=p&&p<=51143||51145<=p&&p<=51171||51173<=p&&p<=51199||51201<=p&&p<=51227||51229<=p&&p<=51255||51257<=p&&p<=51283||51285<=p&&p<=51311||51313<=p&&p<=51339||51341<=p&&p<=51367||51369<=p&&p<=51395||51397<=p&&p<=51423||51425<=p&&p<=51451||51453<=p&&p<=51479||51481<=p&&p<=51507||51509<=p&&p<=51535||51537<=p&&p<=51563||51565<=p&&p<=51591||51593<=p&&p<=51619||51621<=p&&p<=51647||51649<=p&&p<=51675||51677<=p&&p<=51703||51705<=p&&p<=51731||51733<=p&&p<=51759||51761<=p&&p<=51787||51789<=p&&p<=51815||51817<=p&&p<=51843||51845<=p&&p<=51871||51873<=p&&p<=51899||51901<=p&&p<=51927||51929<=p&&p<=51955||51957<=p&&p<=51983||51985<=p&&p<=52011||52013<=p&&p<=52039||52041<=p&&p<=52067||52069<=p&&p<=52095||52097<=p&&p<=52123||52125<=p&&p<=52151||52153<=p&&p<=52179||52181<=p&&p<=52207||52209<=p&&p<=52235||52237<=p&&p<=52263||52265<=p&&p<=52291||52293<=p&&p<=52319||52321<=p&&p<=52347||52349<=p&&p<=52375||52377<=p&&p<=52403||52405<=p&&p<=52431||52433<=p&&p<=52459||52461<=p&&p<=52487||52489<=p&&p<=52515||52517<=p&&p<=52543||52545<=p&&p<=52571||52573<=p&&p<=52599||52601<=p&&p<=52627||52629<=p&&p<=52655||52657<=p&&p<=52683||52685<=p&&p<=52711||52713<=p&&p<=52739||52741<=p&&p<=52767||52769<=p&&p<=52795||52797<=p&&p<=52823||52825<=p&&p<=52851||52853<=p&&p<=52879||52881<=p&&p<=52907||52909<=p&&p<=52935||52937<=p&&p<=52963||52965<=p&&p<=52991||52993<=p&&p<=53019||53021<=p&&p<=53047||53049<=p&&p<=53075||53077<=p&&p<=53103||53105<=p&&p<=53131||53133<=p&&p<=53159||53161<=p&&p<=53187||53189<=p&&p<=53215||53217<=p&&p<=53243||53245<=p&&p<=53271||53273<=p&&p<=53299||53301<=p&&p<=53327||53329<=p&&p<=53355||53357<=p&&p<=53383||53385<=p&&p<=53411||53413<=p&&p<=53439||53441<=p&&p<=53467||53469<=p&&p<=53495||53497<=p&&p<=53523||53525<=p&&p<=53551||53553<=p&&p<=53579||53581<=p&&p<=53607||53609<=p&&p<=53635||53637<=p&&p<=53663||53665<=p&&p<=53691||53693<=p&&p<=53719||53721<=p&&p<=53747||53749<=p&&p<=53775||53777<=p&&p<=53803||53805<=p&&p<=53831||53833<=p&&p<=53859||53861<=p&&p<=53887||53889<=p&&p<=53915||53917<=p&&p<=53943||53945<=p&&p<=53971||53973<=p&&p<=53999||54001<=p&&p<=54027||54029<=p&&p<=54055||54057<=p&&p<=54083||54085<=p&&p<=54111||54113<=p&&p<=54139||54141<=p&&p<=54167||54169<=p&&p<=54195||54197<=p&&p<=54223||54225<=p&&p<=54251||54253<=p&&p<=54279||54281<=p&&p<=54307||54309<=p&&p<=54335||54337<=p&&p<=54363||54365<=p&&p<=54391||54393<=p&&p<=54419||54421<=p&&p<=54447||54449<=p&&p<=54475||54477<=p&&p<=54503||54505<=p&&p<=54531||54533<=p&&p<=54559||54561<=p&&p<=54587||54589<=p&&p<=54615||54617<=p&&p<=54643||54645<=p&&p<=54671||54673<=p&&p<=54699||54701<=p&&p<=54727||54729<=p&&p<=54755||54757<=p&&p<=54783||54785<=p&&p<=54811||54813<=p&&p<=54839||54841<=p&&p<=54867||54869<=p&&p<=54895||54897<=p&&p<=54923||54925<=p&&p<=54951||54953<=p&&p<=54979||54981<=p&&p<=55007||55009<=p&&p<=55035||55037<=p&&p<=55063||55065<=p&&p<=55091||55093<=p&&p<=55119||55121<=p&&p<=55147||55149<=p&&p<=55175||55177<=p&&p<=55203?f:p==9757||p==9977||9994<=p&&p<=9997||p==127877||127938<=p&&p<=127940||p==127943||127946<=p&&p<=127948||128066<=p&&p<=128067||128070<=p&&p<=128080||p==128110||128112<=p&&p<=128120||p==128124||128129<=p&&p<=128131||128133<=p&&p<=128135||p==128170||128372<=p&&p<=128373||p==128378||p==128400||128405<=p&&p<=128406||128581<=p&&p<=128583||128587<=p&&p<=128591||p==128675||128692<=p&&p<=128694||p==128704||p==128716||129304<=p&&p<=129308||129310<=p&&p<=129311||p==129318||129328<=p&&p<=129337||129341<=p&&p<=129342||129489<=p&&p<=129501?g:127995<=p&&p<=127999?m:p==8205?_:p==9792||p==9794||9877<=p&&p<=9878||p==9992||p==10084||p==127752||p==127806||p==127859||p==127891||p==127908||p==127912||p==127979||p==127981||p==128139||128187<=p&&p<=128188||p==128295||p==128300||p==128488||p==128640||p==128658?y:128102<=p&&p<=128105?C:h}return this}typeof dV<"u"&&dV.exports&&(dV.exports=cKe)});var $ge=ui((h8,Zge)=>{(function(e,t){typeof h8=="object"&&typeof Zge<"u"?t(h8):typeof define=="function"&&define.amd?define(["exports"],t):(e=e||self,t(e.topojson=e.topojson||{}))})(h8,function(e){"use strict";function t(I){return I}function n(I){if(I==null)return t;var b,S,B=I.scale[0],v=I.scale[1],P=I.translate[0],M=I.translate[1];return function(L,p){p||(b=S=0);var x=2,T=L.length,w=new Array(T);for(w[0]=(b+=L[0])*B+P,w[1]=(S+=L[1])*v+M;x<T;)w[x]=L[x],++x;return w}}function i(I){var b=n(I.transform),S,B=1/0,v=B,P=-B,M=-B;function L(x){x=b(x),x[0]<B&&(B=x[0]),x[0]>P&&(P=x[0]),x[1]<v&&(v=x[1]),x[1]>M&&(M=x[1])}function p(x){switch(x.type){case"GeometryCollection":x.geometries.forEach(p);break;case"Point":L(x.coordinates);break;case"MultiPoint":x.coordinates.forEach(L);break}}I.arcs.forEach(function(x){for(var T=-1,w=x.length,R;++T<w;)R=b(x[T],T),R[0]<B&&(B=R[0]),R[0]>P&&(P=R[0]),R[1]<v&&(v=R[1]),R[1]>M&&(M=R[1])});for(S in I.objects)p(I.objects[S]);return[B,v,P,M]}function o(I,b){for(var S,B=I.length,v=B-b;v<--B;)S=I[v],I[v++]=I[B],I[B]=S}function r(I,b){return typeof b=="string"&&(b=I.objects[b]),b.type==="GeometryCollection"?{type:"FeatureCollection",features:b.geometries.map(function(S){return s(I,S)})}:s(I,b)}function s(I,b){var S=b.id,B=b.bbox,v=b.properties==null?{}:b.properties,P=a(I,b);return S==null&&B==null?{type:"Feature",properties:v,geometry:P}:B==null?{type:"Feature",id:S,properties:v,geometry:P}:{type:"Feature",id:S,bbox:B,properties:v,geometry:P}}function a(I,b){var S=n(I.transform),B=I.arcs;function v(T,w){w.length&&w.pop();for(var R=B[T<0?~T:T],O=0,k=R.length;O<k;++O)w.push(S(R[O],O));T<0&&o(w,k)}function P(T){return S(T)}function M(T){for(var w=[],R=0,O=T.length;R<O;++R)v(T[R],w);return w.length<2&&w.push(w[0]),w}function L(T){for(var w=M(T);w.length<4;)w.push(w[0]);return w}function p(T){return T.map(L)}function x(T){var w=T.type,R;switch(w){case"GeometryCollection":return{type:w,geometries:T.geometries.map(x)};case"Point":R=P(T.coordinates);break;case"MultiPoint":R=T.coordinates.map(P);break;case"LineString":R=M(T.arcs);break;case"MultiLineString":R=T.arcs.map(M);break;case"Polygon":R=p(T.arcs);break;case"MultiPolygon":R=T.arcs.map(p);break;default:return null}return{type:w,coordinates:R}}return x(b)}function c(I,b){var S={},B={},v={},P=[],M=-1;b.forEach(function(x,T){var w=I.arcs[x<0?~x:x],R;w.length<3&&!w[1][0]&&!w[1][1]&&(R=b[++M],b[M]=x,b[T]=R)}),b.forEach(function(x){var T=L(x),w=T[0],R=T[1],O,k;if(O=v[w])if(delete v[O.end],O.push(x),O.end=R,k=B[R]){delete B[k.start];var Q=k===O?O:O.concat(k);B[Q.start=O.start]=v[Q.end=k.end]=Q}else B[O.start]=v[O.end]=O;else if(O=B[R])if(delete B[O.start],O.unshift(x),O.start=w,k=v[w]){delete v[k.end];var z=k===O?O:k.concat(O);B[z.start=k.start]=v[z.end=O.end]=z}else B[O.start]=v[O.end]=O;else O=[x],B[O.start=w]=v[O.end=R]=O});function L(x){var T=I.arcs[x<0?~x:x],w=T[0],R;return I.transform?(R=[0,0],T.forEach(function(O){R[0]+=O[0],R[1]+=O[1]})):R=T[T.length-1],x<0?[R,w]:[w,R]}function p(x,T){for(var w in x){var R=x[w];delete T[R.start],delete R.start,delete R.end,R.forEach(function(O){S[O<0?~O:O]=1}),P.push(R)}}return p(v,B),p(B,v),b.forEach(function(x){S[x<0?~x:x]||P.push([x])}),P}function u(I){return a(I,f.apply(this,arguments))}function f(I,b,S){var B,v,P;if(arguments.length>1)B=h(I,b,S);else for(v=0,B=new Array(P=I.arcs.length);v<P;++v)B[v]=v;return{type:"MultiLineString",arcs:c(I,B)}}function h(I,b,S){var B=[],v=[],P;function M(w){var R=w<0?~w:w;(v[R]||(v[R]=[])).push({i:w,g:P})}function L(w){w.forEach(M)}function p(w){w.forEach(L)}function x(w){w.forEach(p)}function T(w){switch(P=w,w.type){case"GeometryCollection":w.geometries.forEach(T);break;case"LineString":L(w.arcs);break;case"MultiLineString":case"Polygon":p(w.arcs);break;case"MultiPolygon":x(w.arcs);break}}return T(b),v.forEach(S==null?function(w){B.push(w[0].i)}:function(w){S(w[0].g,w[w.length-1].g)&&B.push(w[0].i)}),B}function A(I){for(var b=-1,S=I.length,B,v=I[S-1],P=0;++b<S;)B=v,v=I[b],P+=B[0]*v[1]-B[1]*v[0];return Math.abs(P)}function g(I){return a(I,m.apply(this,arguments))}function m(I,b){var S={},B=[],v=[];b.forEach(P);function P(p){switch(p.type){case"GeometryCollection":p.geometries.forEach(P);break;case"Polygon":M(p.arcs);break;case"MultiPolygon":p.arcs.forEach(M);break}}function M(p){p.forEach(function(x){x.forEach(function(T){(S[T=T<0?~T:T]||(S[T]=[])).push(p)})}),B.push(p)}function L(p){return A(a(I,{type:"Polygon",arcs:[p]}).coordinates[0])}return B.forEach(function(p){if(!p._){var x=[],T=[p];for(p._=1,v.push(x);p=T.pop();)x.push(p),p.forEach(function(w){w.forEach(function(R){S[R<0?~R:R].forEach(function(O){O._||(O._=1,T.push(O))})})})}}),B.forEach(function(p){delete p._}),{type:"MultiPolygon",arcs:v.map(function(p){var x=[],T;if(p.forEach(function(Q){Q.forEach(function(z){z.forEach(function(F){S[F<0?~F:F].length<2&&x.push(F)})})}),x=c(I,x),(T=x.length)>1)for(var w=1,R=L(x[0]),O,k;w<T;++w)(O=L(x[w]))>R&&(k=x[0],x[0]=x[w],x[w]=k,R=O);return x}).filter(function(p){return p.length>0})}}function _(I,b){for(var S=0,B=I.length;S<B;){var v=S+B>>>1;I[v]<b?S=v+1:B=v}return S}function y(I){var b={},S=I.map(function(){return[]});function B(Q,z){Q.forEach(function(F){F<0&&(F=~F);var H=b[F];H?H.push(z):b[F]=[z]})}function v(Q,z){Q.forEach(function(F){B(F,z)})}function P(Q,z){Q.type==="GeometryCollection"?Q.geometries.forEach(function(F){P(F,z)}):Q.type in M&&M[Q.type](Q.arcs,z)}var M={LineString:B,MultiLineString:v,Polygon:v,MultiPolygon:function(Q,z){Q.forEach(function(F){v(F,z)})}};I.forEach(P);for(var L in b)for(var p=b[L],x=p.length,T=0;T<x;++T)for(var w=T+1;w<x;++w){var R=p[T],O=p[w],k;(k=S[R])[L=_(k,O)]!==O&&k.splice(L,0,O),(k=S[O])[L=_(k,R)]!==R&&k.splice(L,0,R)}return S}function C(I){if(I==null)return t;var b,S,B=I.scale[0],v=I.scale[1],P=I.translate[0],M=I.translate[1];return function(L,p){p||(b=S=0);var x=2,T=L.length,w=new Array(T),R=Math.round((L[0]-P)/B),O=Math.round((L[1]-M)/v);for(w[0]=R-b,b=R,w[1]=O-S,S=O;x<T;)w[x]=L[x],++x;return w}}function E(I,b){if(I.transform)throw new Error("already quantized");if(!b||!b.scale){if(!((M=Math.floor(b))>=2))throw new Error("n must be \u22652");p=I.bbox||i(I);var S=p[0],B=p[1],v=p[2],P=p[3],M;b={scale:[v-S?(v-S)/(M-1):1,P-B?(P-B)/(M-1):1],translate:[S,B]}}else p=I.bbox;var L=C(b),p,x,T=I.objects,w={};function R(Q){return L(Q)}function O(Q){var z;switch(Q.type){case"GeometryCollection":z={type:"GeometryCollection",geometries:Q.geometries.map(O)};break;case"Point":z={type:"Point",coordinates:R(Q.coordinates)};break;case"MultiPoint":z={type:"MultiPoint",coordinates:Q.coordinates.map(R)};break;default:return Q}return Q.id!=null&&(z.id=Q.id),Q.bbox!=null&&(z.bbox=Q.bbox),Q.properties!=null&&(z.properties=Q.properties),z}function k(Q){var z=0,F=1,H=Q.length,W,Z=new Array(H);for(Z[0]=L(Q[0],0);++z<H;)((W=L(Q[z],z))[0]||W[1])&&(Z[F++]=W);return F===1&&(Z[F++]=[0,0]),Z.length=F,Z}for(x in T)w[x]=O(T[x]);return{type:"Topology",bbox:p,transform:b,objects:w,arcs:I.arcs.map(k)}}e.bbox=i,e.feature=r,e.merge=g,e.mergeArcs=m,e.mesh=u,e.meshArcs=f,e.neighbors=y,e.quantize=E,e.transform=n,e.untransform=C,Object.defineProperty(e,"__esModule",{value:!0})})});var sm={};Cte(sm,{__addDisposableResource:()=>V_e,__assign:()=>p8,__asyncDelegator:()=>L_e,__asyncGenerator:()=>N_e,__asyncValues:()=>O_e,__await:()=>QS,__awaiter:()=>B_e,__classPrivateFieldGet:()=>U_e,__classPrivateFieldIn:()=>z_e,__classPrivateFieldSet:()=>G_e,__createBinding:()=>_8,__decorate:()=>E_e,__disposeResources:()=>H_e,__esDecorate:()=>x_e,__exportStar:()=>v_e,__extends:()=>y_e,__generator:()=>D_e,__importDefault:()=>k_e,__importStar:()=>Q_e,__makeTemplateObject:()=>F_e,__metadata:()=>w_e,__param:()=>I_e,__propKey:()=>T_e,__read:()=>LK,__rest:()=>C_e,__rewriteRelativeImportExtension:()=>W_e,__runInitializers:()=>b_e,__setFunctionName:()=>S_e,__spread:()=>P_e,__spreadArray:()=>M_e,__spreadArrays:()=>R_e,__values:()=>g8,default:()=>Qrt});function y_e(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");MK(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}function C_e(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var o=0,i=Object.getOwnPropertySymbols(e);o<i.length;o++)t.indexOf(i[o])<0&&Object.prototype.propertyIsEnumerable.call(e,i[o])&&(n[i[o]]=e[i[o]]);return n}function E_e(e,t,n,i){var o=arguments.length,r=o<3?t:i===null?i=Object.getOwnPropertyDescriptor(t,n):i,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(e,t,n,i);else for(var a=e.length-1;a>=0;a--)(s=e[a])&&(r=(o<3?s(r):o>3?s(t,n,r):s(t,n))||r);return o>3&&r&&Object.defineProperty(t,n,r),r}function I_e(e,t){return function(n,i){t(n,i,e)}}function x_e(e,t,n,i,o,r){function s(C){if(C!==void 0&&typeof C!="function")throw new TypeError("Function expected");return C}for(var a=i.kind,c=a==="getter"?"get":a==="setter"?"set":"value",u=!t&&e?i.static?e:e.prototype:null,f=t||(u?Object.getOwnPropertyDescriptor(u,i.name):{}),h,A=!1,g=n.length-1;g>=0;g--){var m={};for(var _ in i)m[_]=_==="access"?{}:i[_];for(var _ in i.access)m.access[_]=i.access[_];m.addInitializer=function(C){if(A)throw new TypeError("Cannot add initializers after decoration has completed");r.push(s(C||null))};var y=(0,n[g])(a==="accessor"?{get:f.get,set:f.set}:f[c],m);if(a==="accessor"){if(y===void 0)continue;if(y===null||typeof y!="object")throw new TypeError("Object expected");(h=s(y.get))&&(f.get=h),(h=s(y.set))&&(f.set=h),(h=s(y.init))&&o.unshift(h)}else(h=s(y))&&(a==="field"?o.unshift(h):f[c]=h)}u&&Object.defineProperty(u,i.name,f),A=!0}function b_e(e,t,n){for(var i=arguments.length>2,o=0;o<t.length;o++)n=i?t[o].call(e,n):t[o].call(e);return i?n:void 0}function T_e(e){return typeof e=="symbol"?e:"".concat(e)}function S_e(e,t,n){return typeof t=="symbol"&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:n?"".concat(n," ",t):t})}function w_e(e,t){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(e,t)}function B_e(e,t,n,i){function o(r){return r instanceof n?r:new n(function(s){s(r)})}return new(n||(n=Promise))(function(r,s){function a(f){try{u(i.next(f))}catch(h){s(h)}}function c(f){try{u(i.throw(f))}catch(h){s(h)}}function u(f){f.done?r(f.value):o(f.value).then(a,c)}u((i=i.apply(e,t||[])).next())})}function D_e(e,t){var n={label:0,sent:function(){if(r[0]&1)throw r[1];return r[1]},trys:[],ops:[]},i,o,r,s=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return s.next=a(0),s.throw=a(1),s.return=a(2),typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function a(u){return function(f){return c([u,f])}}function c(u){if(i)throw new TypeError("Generator is already executing.");for(;s&&(s=0,u[0]&&(n=0)),n;)try{if(i=1,o&&(r=u[0]&2?o.return:u[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,u[1])).done)return r;switch(o=0,r&&(u=[u[0]&2,r.value]),u[0]){case 0:case 1:r=u;break;case 4:return n.label++,{value:u[1],done:!1};case 5:n.label++,o=u[1],u=[0];continue;case 7:u=n.ops.pop(),n.trys.pop();continue;default:if(r=n.trys,!(r=r.length>0&&r[r.length-1])&&(u[0]===6||u[0]===2)){n=0;continue}if(u[0]===3&&(!r||u[1]>r[0]&&u[1]<r[3])){n.label=u[1];break}if(u[0]===6&&n.label<r[1]){n.label=r[1],r=u;break}if(r&&n.label<r[2]){n.label=r[2],n.ops.push(u);break}r[2]&&n.ops.pop(),n.trys.pop();continue}u=t.call(e,n)}catch(f){u=[6,f],o=0}finally{i=r=0}if(u[0]&5)throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}function v_e(e,t){for(var n in e)n!=="default"&&!Object.prototype.hasOwnProperty.call(t,n)&&_8(t,e,n)}function g8(e){var t=typeof Symbol=="function"&&Symbol.iterator,n=t&&e[t],i=0;if(n)return n.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function LK(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var i=n.call(e),o,r=[],s;try{for(;(t===void 0||t-- >0)&&!(o=i.next()).done;)r.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(s)throw s.error}}return r}function P_e(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(LK(arguments[t]));return e}function R_e(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;for(var i=Array(e),o=0,t=0;t<n;t++)for(var r=arguments[t],s=0,a=r.length;s<a;s++,o++)i[o]=r[s];return i}function M_e(e,t,n){if(n||arguments.length===2)for(var i=0,o=t.length,r;i<o;i++)(r||!(i in t))&&(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))}function QS(e){return this instanceof QS?(this.v=e,this):new QS(e)}function N_e(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=n.apply(e,t||[]),o,r=[];return o=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",s),o[Symbol.asyncIterator]=function(){return this},o;function s(g){return function(m){return Promise.resolve(m).then(g,h)}}function a(g,m){i[g]&&(o[g]=function(_){return new Promise(function(y,C){r.push([g,_,y,C])>1||c(g,_)})},m&&(o[g]=m(o[g])))}function c(g,m){try{u(i[g](m))}catch(_){A(r[0][3],_)}}function u(g){g.value instanceof QS?Promise.resolve(g.value.v).then(f,h):A(r[0][2],g)}function f(g){c("next",g)}function h(g){c("throw",g)}function A(g,m){g(m),r.shift(),r.length&&c(r[0][0],r[0][1])}}function L_e(e){var t,n;return t={},i("next"),i("throw",function(o){throw o}),i("return"),t[Symbol.iterator]=function(){return this},t;function i(o,r){t[o]=e[o]?function(s){return(n=!n)?{value:QS(e[o](s)),done:!1}:r?r(s):s}:r}}function O_e(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],n;return t?t.call(e):(e=typeof g8=="function"?g8(e):e[Symbol.iterator](),n={},i("next"),i("throw"),i("return"),n[Symbol.asyncIterator]=function(){return this},n);function i(r){n[r]=e[r]&&function(s){return new Promise(function(a,c){s=e[r](s),o(a,c,s.done,s.value)})}}function o(r,s,a,c){Promise.resolve(c).then(function(u){r({value:u,done:a})},s)}}function F_e(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}function Q_e(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n=NK(e),i=0;i<n.length;i++)n[i]!=="default"&&_8(t,e,n[i]);return Ort(t,e),t}function k_e(e){return e&&e.__esModule?e:{default:e}}function U_e(e,t,n,i){if(n==="a"&&!i)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return n==="m"?i:n==="a"?i.call(e):i?i.value:t.get(e)}function G_e(e,t,n,i,o){if(i==="m")throw new TypeError("Private method is not writable");if(i==="a"&&!o)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?e!==t||!o:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return i==="a"?o.call(e,n):o?o.value=n:t.set(e,n),n}function z_e(e,t){if(t===null||typeof t!="object"&&typeof t!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof e=="function"?t===e:e.has(t)}function V_e(e,t,n){if(t!=null){if(typeof t!="object"&&typeof t!="function")throw new TypeError("Object expected.");var i,o;if(n){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");i=t[Symbol.asyncDispose]}if(i===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");i=t[Symbol.dispose],n&&(o=i)}if(typeof i!="function")throw new TypeError("Object not disposable.");o&&(i=function(){try{o.call(this)}catch(r){return Promise.reject(r)}}),e.stack.push({value:t,dispose:i,async:n})}else n&&e.stack.push({async:!0});return t}function H_e(e){function t(r){e.error=e.hasError?new Frt(r,e.error,"An error was suppressed during disposal."):r,e.hasError=!0}var n,i=0;function o(){for(;n=e.stack.pop();)try{if(!n.async&&i===1)return i=0,e.stack.push(n),Promise.resolve().then(o);if(n.dispose){var r=n.dispose.call(n.value);if(n.async)return i|=2,Promise.resolve(r).then(o,function(s){return t(s),o()})}else i|=1}catch(s){t(s)}if(i===1)return e.hasError?Promise.reject(e.error):Promise.resolve();if(e.hasError)throw e.error}return o()}function W_e(e,t){return typeof e=="string"&&/^\.\.?\//.test(e)?e.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(n,i,o,r,s){return i?t?".jsx":".js":o&&(!r||!s)?n:o+r+"."+s.toLowerCase()+"js"}):e}var MK,p8,_8,Ort,NK,Frt,Qrt,am=oBe(()=>{MK=function(e,t){return MK=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},MK(e,t)};p8=function(){return p8=Object.assign||function(t){for(var n,i=1,o=arguments.length;i<o;i++){n=arguments[i];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},p8.apply(this,arguments)};_8=Object.create?function(e,t,n,i){i===void 0&&(i=n);var o=Object.getOwnPropertyDescriptor(t,n);(!o||("get"in o?!t.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,o)}:function(e,t,n,i){i===void 0&&(i=n),e[i]=t[n]};Ort=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t},NK=function(e){return NK=Object.getOwnPropertyNames||function(t){var n=[];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(n[n.length]=i);return n},NK(e)};Frt=typeof SuppressedError=="function"?SuppressedError:function(e,t,n){var i=new Error(n);return i.name="SuppressedError",i.error=e,i.suppressed=t,i};Qrt={__extends:y_e,__assign:p8,__rest:C_e,__decorate:E_e,__param:I_e,__esDecorate:x_e,__runInitializers:b_e,__propKey:T_e,__setFunctionName:S_e,__metadata:w_e,__awaiter:B_e,__generator:D_e,__createBinding:_8,__exportStar:v_e,__values:g8,__read:LK,__spread:P_e,__spreadArrays:R_e,__spreadArray:M_e,__await:QS,__asyncGenerator:N_e,__asyncDelegator:L_e,__asyncValues:O_e,__makeTemplateObject:F_e,__importStar:Q_e,__importDefault:k_e,__classPrivateFieldGet:U_e,__classPrivateFieldSet:G_e,__classPrivateFieldIn:z_e,__addDisposableResource:V_e,__disposeResources:H_e,__rewriteRelativeImportExtension:W_e}});var j_e=ui(y8=>{"use strict";Object.defineProperty(y8,"__esModule",{value:!0});y8.version=void 0;y8.version="4.1.5"});var qy=ui(Yy=>{"use strict";Object.defineProperty(Yy,"__esModule",{value:!0});Yy.hasOwnProperty=void 0;Yy.isBoolean=krt;Yy.ellipsis=Urt;Yy.removeWithPredicate=Grt;Yy.assertNever=zrt;Yy.hasOwnProperty=Object.prototype.hasOwnProperty;function krt(e){return typeof e=="boolean"}function Urt(e,t,n){var i;return e.length>t&&(n==null?(n="…",i=3):i=n.length,e=e.substring(0,t-i)+n),e}function Grt(e,t){for(var n=e.length-1;n>=0;n--)t(e[n])===!0&&e.splice(n,1)}function zrt(e){throw new Error("Unhandled case for value: '".concat(e,"'"))}});var C8=ui(_A=>{"use strict";Object.defineProperty(_A,"__esModule",{value:!0});_A.HtmlTag=_A.whitespaceRe=void 0;var Vrt=qy();_A.whitespaceRe=/\s+/;var Hrt=function(){function e(t){t===void 0&&(t={}),this.tagName="",this.attrs={},this.innerHTML="",this.tagName=t.tagName||"",this.attrs=t.attrs||{},this.innerHTML=t.innerHtml||t.innerHTML||""}return e.prototype.setTagName=function(t){return this.tagName=t,this},e.prototype.getTagName=function(){return this.tagName},e.prototype.setAttr=function(t,n){var i=this.getAttrs();return i[t]=n,this},e.prototype.getAttr=function(t){return this.getAttrs()[t]},e.prototype.setAttrs=function(t){return Object.assign(this.getAttrs(),t),this},e.prototype.getAttrs=function(){return this.attrs},e.prototype.setClass=function(t){return this.setAttr("class",t)},e.prototype.addClass=function(t){for(var n=this.getClass(),i=n?n.split(_A.whitespaceRe):[],o=t.split(_A.whitespaceRe),r;r=o.shift();)i.indexOf(r)===-1&&i.push(r);return this.getAttrs().class=i.join(" "),this},e.prototype.removeClass=function(t){for(var n=this.getClass(),i=n?n.split(_A.whitespaceRe):[],o=t.split(_A.whitespaceRe),r;i.length&&(r=o.shift());){var s=i.indexOf(r);s!==-1&&i.splice(s,1)}return this.getAttrs().class=i.join(" "),this},e.prototype.getClass=function(){return this.getAttrs().class||""},e.prototype.hasClass=function(t){return(" "+this.getClass()+" ").indexOf(" "+t+" ")!==-1},e.prototype.setInnerHTML=function(t){return this.innerHTML=t,this},e.prototype.setInnerHtml=function(t){return this.setInnerHTML(t)},e.prototype.getInnerHTML=function(){return this.innerHTML||""},e.prototype.getInnerHtml=function(){return this.getInnerHTML()},e.prototype.toAnchorString=function(){var t=this.getTagName(),n=this.buildAttrsStr();return n=n?" "+n:"",["<",t,n,">",this.getInnerHtml(),"</",t,">"].join("")},e.prototype.buildAttrsStr=function(){var t=this.getAttrs(),n=[];for(var i in t)Vrt.hasOwnProperty.call(t,i)&&n.push(i+'="'+t[i]+'"');return n.join(" ")},e}();_A.HtmlTag=Hrt});var q_e=ui(FK=>{"use strict";Object.defineProperty(FK,"__esModule",{value:!0});FK.truncateSmart=Wrt;function Wrt(e,t,n){var i,o;if(n==null?(n="…",o=3,i=8):(o=n.length,i=n.length),e.length<=t)return e;var r=t-o,s=jrt(e);if(s.query){var a=s.query.match(/^(.*?)(?=(\?|#))(.*?)$/i);a&&(s.query=s.query.substr(0,a[1].length),e=Y_e(s))}if(e.length<=t||(s.host&&(s.host=s.host.replace(/^www\./,""),e=Y_e(s)),e.length<=t))return e;var c="";if(s.host&&(c+=s.host),c.length>=r)return s.host.length===t?(s.host.substr(0,t-o)+n).substr(0,r+i):OK(c,r,n).substr(0,r+i);var u="";if(s.path&&(u+="/"+s.path),s.query&&(u+="?"+s.query),u)if((c+u).length>=r){if((c+u).length==t)return(c+u).substr(0,t);var f=r-c.length;return(c+OK(u,f,n)).substr(0,r+i)}else c+=u;if(s.fragment){var h="#"+s.fragment;if((c+h).length>=r){if((c+h).length==t)return(c+h).substr(0,t);var A=r-c.length;return(c+OK(h,A,n)).substr(0,r+i)}else c+=h}if(s.scheme&&s.host){var g=s.scheme+"://";if((c+g).length<r)return(g+c).substr(0,t)}if(c.length<=t)return c;var m="";return r>0&&(m=c.substr(-1*Math.floor(r/2))),(c.substr(0,Math.ceil(r/2))+n+m).substr(0,r+i)}function jrt(e){var t={},n=e,i=n.match(/^([a-z]+):\/\//i);return i&&(t.scheme=i[1],n=n.slice(i[0].length)),i=n.match(/^(.*?)(?=(\?|#|\/|$))/i),i&&(t.host=i[1],n=n.slice(i[0].length)),i=n.match(/^\/(.*?)(?=(\?|#|$))/i),i&&(t.path=i[1],n=n.slice(i[0].length)),i=n.match(/^\?(.*?)(?=(#|$))/i),i&&(t.query=i[1],n=n.slice(i[0].length)),i=n.match(/^#(.*?)$/i),i&&(t.fragment=i[1]),t}function Y_e(e){var t="";return e.scheme&&e.host&&(t+=e.scheme+"://"),e.host&&(t+=e.host),e.path&&(t+="/"+e.path),e.query&&(t+="?"+e.query),e.fragment&&(t+="#"+e.fragment),t}function OK(e,t,n){var i=t/2,o=Math.ceil(i),r=-1*Math.floor(i),s="";return r<0&&(s=e.substr(r)),e.substr(0,o)+n+s}});var K_e=ui(QK=>{"use strict";Object.defineProperty(QK,"__esModule",{value:!0});QK.truncateMiddle=Yrt;function Yrt(e,t,n){if(e.length<=t)return e;var i,o;n==null?(n="…",i=8,o=3):(i=n.length,o=n.length);var r=t-o,s="";return r>0&&(s=e.substr(-1*Math.floor(r/2))),(e.substr(0,Math.ceil(r/2))+n+s).substr(0,r+i)}});var X_e=ui(kK=>{"use strict";Object.defineProperty(kK,"__esModule",{value:!0});kK.truncateEnd=Krt;var qrt=qy();function Krt(e,t,n){return(0,qrt.ellipsis)(e,t,n)}});var UK=ui(E8=>{"use strict";Object.defineProperty(E8,"__esModule",{value:!0});E8.AnchorTagBuilder=void 0;var Xrt=C8(),Jrt=q_e(),Zrt=K_e(),$rt=X_e(),est=function(){function e(t){t===void 0&&(t={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=t.newWindow||!1,this.truncate=t.truncate||{},this.className=t.className||""}return e.prototype.build=function(t){return new Xrt.HtmlTag({tagName:"a",attrs:this.createAttrs(t),innerHtml:this.processAnchorText(t.getAnchorText())})},e.prototype.createAttrs=function(t){var n={href:t.getAnchorHref()},i=this.createCssClass(t);return i&&(n.class=i),this.newWindow&&(n.target="_blank",n.rel="noopener noreferrer"),this.truncate.length&&this.truncate.length<t.getAnchorText().length&&(n.title=t.getAnchorHref()),n},e.prototype.createCssClass=function(t){var n=this.className;if(n){for(var i=[n],o=t.getCssClassSuffixes(),r=0,s=o.length;r<s;r++)i.push(n+"-"+o[r]);return i.join(" ")}else return""},e.prototype.processAnchorText=function(t){return t=this.doTruncate(t),t},e.prototype.doTruncate=function(t){var n=this.truncate;if(!n.length)return t;var i=n.length,o=n.location;return o==="smart"?(0,Jrt.truncateSmart)(t,i):o==="middle"?(0,Zrt.truncateMiddle)(t,i):(0,$rt.truncateEnd)(t,i)},e}();E8.AnchorTagBuilder=est});var uI=ui(I8=>{"use strict";Object.defineProperty(I8,"__esModule",{value:!0});I8.AbstractMatch=void 0;var tst=function(){function e(t){this._=null,this.matchedText="",this.offset=0,this.tagBuilder=t.tagBuilder,this.matchedText=t.matchedText,this.offset=t.offset}return e.prototype.getMatchedText=function(){return this.matchedText},e.prototype.setOffset=function(t){this.offset=t},e.prototype.getOffset=function(){return this.offset},e.prototype.getCssClassSuffixes=function(){return[this.type]},e.prototype.buildTag=function(){return this.tagBuilder.build(this)},e}();I8.AbstractMatch=tst});var fI=ui(_f=>{"use strict";Object.defineProperty(_f,"__esModule",{value:!0});_f.isControlChar=nst;_f.isAsciiLetterChar=ist;_f.isDigitChar=ost;_f.isQuoteChar=rst;_f.isWhitespaceChar=sst;_f.isAlphaNumericOrMarkChar=ast;_f.isValidEmailLocalPartSpecialChar=cst;_f.isUrlSuffixAllowedSpecialChar=lst;_f.isUrlSuffixNotAllowedAsFinalChar=ust;_f.isOpenBraceChar=fst;_f.isCloseBraceChar=dst;function nst(e){return e>=0&&e<=31||e==127}function ist(e){return e>=65&&e<=90||e>=97&&e<=122}function ost(e){return e>=48&&e<=57}function rst(e){return e==34||e==39}function sst(e){return e<8232?e<160?e>=9&&e<=13||e==32:e<5760?e==160:e==5760||e>=8192&&e<=8202:e<8287?e>=8232&&e<=8233||e==8239:e<12288?e==8287:e==12288||e==65279}function ast(e){return e<4800?e<2949?e<2451?e<1425?e<768?e<192?e<169?e<65?e>=48&&e<=57:e>=65&&e<=90||e>=97&&e<=122:e<181?e>=169&&e<=170||e==174:e==181||e==186:e<710?e<216?e>=192&&e<=214:e>=216&&e<=246||e>=248&&e<=705:e<748?e>=710&&e<=721||e>=736&&e<=740:e==748||e==750:e<910?e<895?e<886?e>=768&&e<=884:e>=886&&e<=887||e>=890&&e<=893:e<904?e==895||e==902:e>=904&&e<=906||e==908:e<1155?e<931?e>=910&&e<=929:e>=931&&e<=1013||e>=1015&&e<=1153:e<1369?e>=1155&&e<=1327||e>=1329&&e<=1366:e==1369||e>=1377&&e<=1415:e<1808?e<1552?e<1476?e<1471?e>=1425&&e<=1469:e==1471||e>=1473&&e<=1474:e<1488?e>=1476&&e<=1477||e==1479:e>=1488&&e<=1514||e>=1520&&e<=1522:e<1749?e<1568?e>=1552&&e<=1562:e>=1568&&e<=1641||e>=1646&&e<=1747:e<1770?e>=1749&&e<=1756||e>=1759&&e<=1768:e>=1770&&e<=1788||e==1791:e<2230?e<2042?e<1869?e>=1808&&e<=1866:e>=1869&&e<=1969||e>=1984&&e<=2037:e<2112?e==2042||e>=2048&&e<=2093:e>=2112&&e<=2139||e>=2208&&e<=2228:e<2406?e<2260?e>=2230&&e<=2237:e>=2260&&e<=2273||e>=2275&&e<=2403:e<2437?e>=2406&&e<=2415||e>=2417&&e<=2435:e>=2437&&e<=2444||e>=2447&&e<=2448:e<2693?e<2579?e<2519?e<2486?e<2474?e>=2451&&e<=2472:e>=2474&&e<=2480||e==2482:e<2503?e>=2486&&e<=2489||e>=2492&&e<=2500:e>=2503&&e<=2504||e>=2507&&e<=2510:e<2534?e<2524?e==2519:e>=2524&&e<=2525||e>=2527&&e<=2531:e<2565?e>=2534&&e<=2545||e>=2561&&e<=2563:e>=2565&&e<=2570||e>=2575&&e<=2576:e<2631?e<2613?e<2602?e>=2579&&e<=2600:e>=2602&&e<=2608||e>=2610&&e<=2611:e<2620?e>=2613&&e<=2614||e>=2616&&e<=2617:e==2620||e>=2622&&e<=2626:e<2649?e<2635?e>=2631&&e<=2632:e>=2635&&e<=2637||e==2641:e<2662?e>=2649&&e<=2652||e==2654:e>=2662&&e<=2677||e>=2689&&e<=2691:e<2821?e<2759?e<2730?e<2703?e>=2693&&e<=2701:e>=2703&&e<=2705||e>=2707&&e<=2728:e<2741?e>=2730&&e<=2736||e>=2738&&e<=2739:e>=2741&&e<=2745||e>=2748&&e<=2757:e<2784?e<2763?e>=2759&&e<=2761:e>=2763&&e<=2765||e==2768:e<2809?e>=2784&&e<=2787||e>=2790&&e<=2799:e==2809||e>=2817&&e<=2819:e<2887?e<2858?e<2831?e>=2821&&e<=2828:e>=2831&&e<=2832||e>=2835&&e<=2856:e<2869?e>=2858&&e<=2864||e>=2866&&e<=2867:e>=2869&&e<=2873||e>=2876&&e<=2884:e<2911?e<2902?e>=2887&&e<=2888||e>=2891&&e<=2893:e>=2902&&e<=2903||e>=2908&&e<=2909:e<2929?e>=2911&&e<=2915||e>=2918&&e<=2927:e==2929||e>=2946&&e<=2947:e<3517?e<3205?e<3046?e<2984?e<2969?e<2958?e>=2949&&e<=2954:e>=2958&&e<=2960||e>=2962&&e<=2965:e<2974?e>=2969&&e<=2970||e==2972:e>=2974&&e<=2975||e>=2979&&e<=2980:e<3014?e<2990?e>=2984&&e<=2986:e>=2990&&e<=3001||e>=3006&&e<=3010:e<3024?e>=3014&&e<=3016||e>=3018&&e<=3021:e==3024||e==3031:e<3142?e<3086?e<3072?e>=3046&&e<=3055:e>=3072&&e<=3075||e>=3077&&e<=3084:e<3114?e>=3086&&e<=3088||e>=3090&&e<=3112:e>=3114&&e<=3129||e>=3133&&e<=3140:e<3160?e<3146?e>=3142&&e<=3144:e>=3146&&e<=3149||e>=3157&&e<=3158:e<3174?e>=3160&&e<=3162||e>=3168&&e<=3171:e>=3174&&e<=3183||e>=3200&&e<=3203:e<3333?e<3274?e<3242?e<3214?e>=3205&&e<=3212:e>=3214&&e<=3216||e>=3218&&e<=3240:e<3260?e>=3242&&e<=3251||e>=3253&&e<=3257:e>=3260&&e<=3268||e>=3270&&e<=3272:e<3296?e<3285?e>=3274&&e<=3277:e>=3285&&e<=3286||e==3294:e<3313?e>=3296&&e<=3299||e>=3302&&e<=3311:e>=3313&&e<=3314||e>=3329&&e<=3331:e<3423?e<3389?e<3342?e>=3333&&e<=3340:e>=3342&&e<=3344||e>=3346&&e<=3386:e<3402?e>=3389&&e<=3396||e>=3398&&e<=3400:e>=3402&&e<=3406||e>=3412&&e<=3415:e<3458?e<3430?e>=3423&&e<=3427:e>=3430&&e<=3439||e>=3450&&e<=3455:e<3482?e>=3458&&e<=3459||e>=3461&&e<=3478:e>=3482&&e<=3505||e>=3507&&e<=3515:e<3804?e<3722?e<3570?e<3535?e<3520?e==3517:e>=3520&&e<=3526||e==3530:e<3544?e>=3535&&e<=3540||e==3542:e>=3544&&e<=3551||e>=3558&&e<=3567:e<3664?e<3585?e>=3570&&e<=3571:e>=3585&&e<=3642||e>=3648&&e<=3662:e<3716?e>=3664&&e<=3673||e>=3713&&e<=3714:e==3716||e>=3719&&e<=3720:e<3754?e<3737?e<3725?e==3722:e==3725||e>=3732&&e<=3735:e<3749?e>=3737&&e<=3743||e>=3745&&e<=3747:e==3749||e==3751:e<3776?e<3757?e>=3754&&e<=3755:e>=3757&&e<=3769||e>=3771&&e<=3773:e<3784?e>=3776&&e<=3780||e==3782:e>=3784&&e<=3789||e>=3792&&e<=3801:e<4176?e<3902?e<3872?e<3840?e>=3804&&e<=3807:e==3840||e>=3864&&e<=3865:e<3895?e>=3872&&e<=3881||e==3893:e==3895||e==3897:e<3974?e<3913?e>=3902&&e<=3911:e>=3913&&e<=3948||e>=3953&&e<=3972:e<4038?e>=3974&&e<=3991||e>=3993&&e<=4028:e==4038||e>=4096&&e<=4169:e<4688?e<4301?e<4256?e>=4176&&e<=4253:e>=4256&&e<=4293||e==4295:e<4348?e==4301||e>=4304&&e<=4346:e>=4348&&e<=4680||e>=4682&&e<=4685:e<4746?e<4698?e>=4688&&e<=4694||e==4696:e>=4698&&e<=4701||e>=4704&&e<=4744:e<4786?e>=4746&&e<=4749||e>=4752&&e<=4784:e>=4786&&e<=4789||e>=4792&&e<=4798:e<11035?e<7416?e<6176?e<5873?e<4992?e<4824?e<4802?e==4800:e>=4802&&e<=4805||e>=4808&&e<=4822:e<4888?e>=4824&&e<=4880||e>=4882&&e<=4885:e>=4888&&e<=4954||e>=4957&&e<=4959:e<5121?e<5024?e>=4992&&e<=5007:e>=5024&&e<=5109||e>=5112&&e<=5117:e<5761?e>=5121&&e<=5740||e>=5743&&e<=5759:e>=5761&&e<=5786||e>=5792&&e<=5866:e<6002?e<5920?e<5888?e>=5873&&e<=5880:e>=5888&&e<=5900||e>=5902&&e<=5908:e<5984?e>=5920&&e<=5940||e>=5952&&e<=5971:e>=5984&&e<=5996||e>=5998&&e<=6e3:e<6108?e<6016?e>=6002&&e<=6003:e>=6016&&e<=6099||e==6103:e<6155?e>=6108&&e<=6109||e>=6112&&e<=6121:e>=6155&&e<=6157||e>=6160&&e<=6169:e<6783?e<6512?e<6400?e<6272?e>=6176&&e<=6263:e>=6272&&e<=6314||e>=6320&&e<=6389:e<6448?e>=6400&&e<=6430||e>=6432&&e<=6443:e>=6448&&e<=6459||e>=6470&&e<=6509:e<6608?e<6528?e>=6512&&e<=6516:e>=6528&&e<=6571||e>=6576&&e<=6601:e<6688?e>=6608&&e<=6617||e>=6656&&e<=6683:e>=6688&&e<=6750||e>=6752&&e<=6780:e<7040?e<6832?e<6800?e>=6783&&e<=6793:e>=6800&&e<=6809||e==6823:e<6992?e>=6832&&e<=6846||e>=6912&&e<=6987:e>=6992&&e<=7001||e>=7019&&e<=7027:e<7245?e<7168?e>=7040&&e<=7155:e>=7168&&e<=7223||e>=7232&&e<=7241:e<7376?e>=7245&&e<=7293||e>=7296&&e<=7304:e>=7376&&e<=7378||e>=7380&&e<=7414:e<8450?e<8130?e<8025?e<7960?e<7424?e>=7416&&e<=7417:e>=7424&&e<=7669||e>=7675&&e<=7957:e<8008?e>=7960&&e<=7965||e>=7968&&e<=8005:e>=8008&&e<=8013||e>=8016&&e<=8023:e<8031?e<8027?e==8025:e==8027||e==8029:e<8118?e>=8031&&e<=8061||e>=8064&&e<=8116:e>=8118&&e<=8124||e==8126:e<8205?e<8150?e<8134?e>=8130&&e<=8132:e>=8134&&e<=8140||e>=8144&&e<=8147:e<8178?e>=8150&&e<=8155||e>=8160&&e<=8172:e>=8178&&e<=8180||e>=8182&&e<=8188:e<8305?e<8252?e==8205:e==8252||e==8265:e<8336?e==8305||e==8319:e>=8336&&e<=8348||e>=8400&&e<=8432:e<8579?e<8486?e<8469?e<8455?e==8450:e==8455||e>=8458&&e<=8467:e<8482?e==8469||e>=8473&&e<=8477:e==8482||e==8484:e<8495?e<8488?e==8486:e==8488||e>=8490&&e<=8493:e<8517?e>=8495&&e<=8505||e>=8508&&e<=8511:e>=8517&&e<=8521||e==8526:e<9410?e<9e3?e<8592?e>=8579&&e<=8580:e>=8592&&e<=8703||e>=8986&&e<=8987:e<9193?e==9e3||e==9167:e>=9193&&e<=9203||e>=9208&&e<=9210:e<9723?e<9654?e==9410||e>=9642&&e<=9643:e==9654||e==9664:e<10548?e>=9723&&e<=9726||e>=9728&&e<=10175:e>=10548&&e<=10549||e>=11013&&e<=11015:e<43259?e<12445?e<11688?e<11520?e<11264?e<11088?e>=11035&&e<=11036:e==11088||e==11093:e<11360?e>=11264&&e<=11310||e>=11312&&e<=11358:e>=11360&&e<=11492||e>=11499&&e<=11507:e<11568?e<11559?e>=11520&&e<=11557:e==11559||e==11565:e<11647?e>=11568&&e<=11623||e==11631:e>=11647&&e<=11670||e>=11680&&e<=11686:e<11744?e<11712?e<11696?e>=11688&&e<=11694:e>=11696&&e<=11702||e>=11704&&e<=11710:e<11728?e>=11712&&e<=11718||e>=11720&&e<=11726:e>=11728&&e<=11734||e>=11736&&e<=11742:e<12330?e<11823?e>=11744&&e<=11775:e==11823||e>=12293&&e<=12294:e<12353?e>=12330&&e<=12341||e>=12347&&e<=12349:e>=12353&&e<=12438||e>=12441&&e<=12442:e<42512?e<12951?e<12549?e<12449?e>=12445&&e<=12447:e>=12449&&e<=12538||e>=12540&&e<=12543:e<12704?e>=12549&&e<=12589||e>=12593&&e<=12686:e>=12704&&e<=12730||e>=12784&&e<=12799:e<19968?e<12953?e==12951:e==12953||e>=13312&&e<=19893:e<42192?e>=19968&&e<=40917||e>=40960&&e<=42124:e>=42192&&e<=42237||e>=42240&&e<=42508:e<42891?e<42623?e<42560?e>=42512&&e<=42539:e>=42560&&e<=42610||e>=42612&&e<=42621:e<42775?e>=42623&&e<=42725||e>=42736&&e<=42737:e>=42775&&e<=42783||e>=42786&&e<=42888:e<43072?e<42928?e>=42891&&e<=42926:e>=42928&&e<=42935||e>=42999&&e<=43047:e<43216?e>=43072&&e<=43123||e>=43136&&e<=43205:e>=43216&&e<=43225||e>=43232&&e<=43255:e<55243?e<43744?e<43488?e<43312?e<43261?e==43259:e==43261||e>=43264&&e<=43309:e<43392?e>=43312&&e<=43347||e>=43360&&e<=43388:e>=43392&&e<=43456||e>=43471&&e<=43481:e<43600?e<43520?e>=43488&&e<=43518:e>=43520&&e<=43574||e>=43584&&e<=43597:e<43642?e>=43600&&e<=43609||e>=43616&&e<=43638:e>=43642&&e<=43714||e>=43739&&e<=43741:e<43824?e<43785?e<43762?e>=43744&&e<=43759:e>=43762&&e<=43766||e>=43777&&e<=43782:e<43808?e>=43785&&e<=43790||e>=43793&&e<=43798:e>=43808&&e<=43814||e>=43816&&e<=43822:e<44012?e<43868?e>=43824&&e<=43866:e>=43868&&e<=43877||e>=43888&&e<=44010:e<44032?e>=44012&&e<=44013||e>=44016&&e<=44025:e>=44032&&e<=55203||e>=55216&&e<=55238:e<64848?e<64298?e<64112?e<55296?e>=55243&&e<=55291:e>=55296&&e<=57343||e>=63744&&e<=64109:e<64275?e>=64112&&e<=64217||e>=64256&&e<=64262:e>=64275&&e<=64279||e>=64285&&e<=64296:e<64320?e<64312?e>=64298&&e<=64310:e>=64312&&e<=64316||e==64318:e<64326?e>=64320&&e<=64321||e>=64323&&e<=64324:e>=64326&&e<=64433||e>=64467&&e<=64829:e<65296?e<65024?e<64914?e>=64848&&e<=64911:e>=64914&&e<=64967||e>=65008&&e<=65019:e<65136?e>=65024&&e<=65039||e>=65056&&e<=65071:e>=65136&&e<=65140||e>=65142&&e<=65276:e<65474?e<65345?e>=65296&&e<=65305||e>=65313&&e<=65338:e>=65345&&e<=65370||e>=65382&&e<=65470:e<65490?e>=65474&&e<=65479||e>=65482&&e<=65487:e>=65490&&e<=65495||e>=65498&&e<=65500}function cst(e){return e<47?e<42?e==33||e>=35&&e<=39:e>=42&&e<=43||e==45:e<63?e==47||e==61:e<94?e==63:e>=94&&e<=96||e>=123&&e<=126}function lst(e){return e<91?e<47?e>=35&&e<=43||e==45:e<61?e==47:e==61||e==64:e<95?e==91||e==93:e<123?e==95:e>=123&&e<=126||e==10003}function ust(e){return e<58?e<44?e==33:e==44||e==46:e<63?e>=58&&e<=59:e==63||e==94}function fst(e){return e<91?e==40:e==91||e==123}function dst(e){return e<93?e==41:e==93||e==125}});var J_e=ui(x8=>{"use strict";Object.defineProperty(x8,"__esModule",{value:!0});x8.tldRegex=void 0;x8.tldRegex=/^(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|travelersinsurance|vermögensberatung|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbah1a3hjkrd|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--mgbcpq6gpa1a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbc0a9azcg|xn--nqv7fs00ema|americanfamily|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq480n2rg|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|wolterskluwer|xn--cckwcxetd|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--4dbrk0ce|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nextdirect|properties|protection|prudential|realestate|republican|restaurant|schaeffler|tatamotors|technology|university|vlaanderen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--q7ce6a|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|institute|insurance|kuokgroup|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|pramerica|richardli|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--qxa6a|xn--tckwe|xn--vhquv|yodobashi|موريتانيا|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|builders|business|capetown|catering|catholic|cipriani|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|mckinsey|memorial|merckmsd|mortgage|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|softbank|software|stcgroup|supplies|training|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|banamex|bauhaus|bestbuy|booking|brother|capital|caravan|careers|channel|charity|chintai|citadel|clubmed|college|cologne|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hotmail|hyundai|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lanxess|lasalle|latrobe|leclerc|limited|lincoln|markets|monster|netbank|netflix|network|neustar|okinawa|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|singles|staples|storage|support|surgery|systems|temasek|theater|theatre|tickets|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|yamaxun|youtube|zuerich|католик|البحرين|الجزائر|العليان|پاکستان|كاثوليك|இந்தியா|abbott|abbvie|africa|agency|airbus|airtel|alipay|alsace|alstom|amazon|anquan|aramco|author|bayern|beauty|berlin|bharti|bostik|boston|broker|camera|career|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kindle|kosher|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|monash|mormon|moscow|museum|nagoya|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|pictet|quebec|racing|realty|reisen|repair|report|review|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|walter|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dance|deals|delta|drive|dubai|earth|edeka|email|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|irish|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|loans|locus|lotte|lotto|mango|media|miami|money|movie|music|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|ישראל|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|aero|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|dvag|erni|fage|fail|fans|farm|fast|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kids|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|read|reit|rent|rest|rich|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scot|seat|seek|sexy|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|アマゾン|グーグル|クラウド|ポイント|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|ceo|cfa|cfd|com|cpa|crs|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gay|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|llp|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|scb|sew|sex|sfr|ski|sky|soy|spa|srl|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ລາວ|ストア|セール|みんな|中文网|亚马逊|天主教|我爱你|新加坡|淡马锡|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|ευ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|广东|微博|慈善|手机|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)$/});var b8=ui(Go=>{"use strict";Object.defineProperty(Go,"__esModule",{value:!0});Go.isDomainLabelStartChar=Go.isSchemeStartChar=Go.tldUrlHostRe=Go.schemeUrlRe=Go.invalidSchemeRe=Go.httpSchemePrefixRe=Go.httpSchemeRe=void 0;Go.isSchemeChar=mst;Go.isDomainLabelChar=Ast;Go.isPathChar=pst;Go.isUrlSuffixStartChar=gst;Go.isKnownTld=Z_e;Go.isValidSchemeUrl=_st;Go.isValidTldMatch=yst;Go.isValidIpV4Address=Ist;var dI=fI(),hst=J_e();Go.httpSchemeRe=/https?:\/\//i;Go.httpSchemePrefixRe=new RegExp("^"+Go.httpSchemeRe.source,"i");Go.invalidSchemeRe=/^(javascript|vbscript):/i;Go.schemeUrlRe=/^[A-Za-z][-.+A-Za-z0-9]*:(\/\/)?([^:/]*)/;Go.tldUrlHostRe=/^(?:\/\/)?([^/#?:]+)/;Go.isSchemeStartChar=dI.isAsciiLetterChar;function mst(e){return(0,dI.isAsciiLetterChar)(e)||(0,dI.isDigitChar)(e)||e===43||e===45||e===46}Go.isDomainLabelStartChar=dI.isAlphaNumericOrMarkChar;function Ast(e){return e===95||(0,Go.isDomainLabelStartChar)(e)}function pst(e){return(0,dI.isAlphaNumericOrMarkChar)(e)||(0,dI.isUrlSuffixAllowedSpecialChar)(e)||(0,dI.isUrlSuffixNotAllowedAsFinalChar)(e)}function gst(e){return e===47||e===63||e===35}function Z_e(e){return hst.tldRegex.test(e.toLowerCase())}function _st(e){if(Go.invalidSchemeRe.test(e))return!1;var t=e.match(Go.schemeUrlRe);if(!t)return!1;var n=!!t[1],i=t[2];return n?!0:!(i.indexOf(".")===-1||!/[A-Za-z]/.test(i))}function yst(e){var t=e.match(Go.tldUrlHostRe);if(!t)return!1;var n=t[0],i=n.split(".");if(i.length<2)return!1;var o=i[i.length-1];return!!Z_e(o)}var Cst=/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,Est=/[:/?#]/;function Ist(e){var t=e.split(Est,1)[0];return Cst.test(t)}});var GK=ui(T8=>{"use strict";Object.defineProperty(T8,"__esModule",{value:!0});T8.UrlMatch=void 0;var xst=(am(),nh(sm)),bst=uI(),Tst=b8(),Sst=/^(https?:\/\/)?(?:www\.)?/i,wst=/^\/\//,Bst=function(e){xst.__extends(t,e);function t(n){var i=e.call(this,n)||this;return i.type="url",i.url="",i.urlMatchType="scheme",i.protocolRelativeMatch=!1,i.stripPrefix={scheme:!0,www:!0},i.stripTrailingSlash=!0,i.decodePercentEncoding=!0,i.protocolPrepended=!1,i.urlMatchType=n.urlMatchType,i.url=n.url,i.protocolRelativeMatch=n.protocolRelativeMatch,i.stripPrefix=n.stripPrefix,i.stripTrailingSlash=n.stripTrailingSlash,i.decodePercentEncoding=n.decodePercentEncoding,i}return t.prototype.getType=function(){return"url"},t.prototype.getUrlMatchType=function(){return this.urlMatchType},t.prototype.getUrl=function(){var n=this.url;return!this.protocolRelativeMatch&&this.urlMatchType!=="scheme"&&!this.protocolPrepended&&(n=this.url="http://"+n,this.protocolPrepended=!0),n},t.prototype.getAnchorHref=function(){var n=this.getUrl();return n.replace(/&/g,"&")},t.prototype.getAnchorText=function(){var n=this.getMatchedText();return this.protocolRelativeMatch&&(n=Pst(n)),this.stripPrefix.scheme&&(n=Dst(n)),this.stripPrefix.www&&(n=vst(n)),this.stripTrailingSlash&&(n=Rst(n)),this.decodePercentEncoding&&(n=Mst(n)),n},t}(bst.AbstractMatch);T8.UrlMatch=Bst;function Dst(e){return e.replace(Tst.httpSchemePrefixRe,"")}function vst(e){return e.includes("www.")?e.replace(Sst,"$1"):e}function Pst(e){return e.replace(wst,"")}function Rst(e){return e.charAt(e.length-1)==="/"&&(e=e.slice(0,-1)),e}function Mst(e){var t=e.replace(/%(?:22|26|27|3C|3E)/gi,function(n){return n==="%22"?""":n==="%26"?"&":n==="%27"?"'":n==="%3C"||n==="%3c"?"<":">"});if(t.includes("%"))try{return decodeURIComponent(t)}catch{}return t}});var eye=ui(Fg=>{"use strict";Object.defineProperty(Fg,"__esModule",{value:!0});Fg.isEmailLocalPartStartChar=Fg.mailtoSchemePrefixRe=void 0;Fg.isEmailLocalPartChar=Lst;Fg.isValidEmail=Ost;var $_e=fI(),Nst=b8();Fg.mailtoSchemePrefixRe=/^mailto:/i;Fg.isEmailLocalPartStartChar=$_e.isAlphaNumericOrMarkChar;function Lst(e){return(0,Fg.isEmailLocalPartStartChar)(e)||(0,$_e.isValidEmailLocalPartSpecialChar)(e)}function Ost(e){var t=e.split(".").pop();return(0,Nst.isKnownTld)(t)}});var zK=ui(S8=>{"use strict";Object.defineProperty(S8,"__esModule",{value:!0});S8.EmailMatch=void 0;var Fst=(am(),nh(sm)),Qst=uI(),kst=function(e){Fst.__extends(t,e);function t(n){var i=e.call(this,n)||this;return i.type="email",i.email="",i.email=n.email,i}return t.prototype.getType=function(){return"email"},t.prototype.getEmail=function(){return this.email},t.prototype.getAnchorHref=function(){return"mailto:"+this.email},t.prototype.getAnchorText=function(){return this.email},t}(Qst.AbstractMatch);S8.EmailMatch=kst});var VK=ui(kS=>{"use strict";Object.defineProperty(kS,"__esModule",{value:!0});kS.hashtagServices=void 0;kS.isHashtagTextChar=Gst;kS.isValidHashtag=zst;var Ust=fI();function Gst(e){return e===95||(0,Ust.isAlphaNumericOrMarkChar)(e)}function zst(e){return e.length<=140}kS.hashtagServices=["twitter","facebook","instagram","tiktok","youtube"]});var HK=ui(w8=>{"use strict";Object.defineProperty(w8,"__esModule",{value:!0});w8.HashtagMatch=void 0;var Vst=(am(),nh(sm)),Hst=qy(),Wst=uI(),jst=function(e){Vst.__extends(t,e);function t(n){var i=e.call(this,n)||this;return i.type="hashtag",i.serviceName="twitter",i.hashtag="",i.serviceName=n.serviceName,i.hashtag=n.hashtag,i}return t.prototype.getType=function(){return"hashtag"},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getHashtag=function(){return this.hashtag},t.prototype.getAnchorHref=function(){var n=this.serviceName,i=this.hashtag;switch(n){case"twitter":return"https://twitter.com/hashtag/"+i;case"facebook":return"https://www.facebook.com/hashtag/"+i;case"instagram":return"https://instagram.com/explore/tags/"+i;case"tiktok":return"https://www.tiktok.com/tag/"+i;case"youtube":return"https://youtube.com/hashtag/"+i;default:(0,Hst.assertNever)(n)}},t.prototype.getAnchorText=function(){return"#"+this.hashtag},t.prototype.getCssClassSuffixes=function(){var n=e.prototype.getCssClassSuffixes.call(this),i=this.getServiceName();return i&&n.push(i),n},t}(Wst.AbstractMatch);w8.HashtagMatch=jst});var WK=ui(US=>{"use strict";Object.defineProperty(US,"__esModule",{value:!0});US.mentionServices=void 0;US.isMentionTextChar=qst;US.isValidMention=Kst;var tye=fI(),Yst={twitter:/^@\w{1,15}$/,instagram:/^@[_\w]{1,30}$/,soundcloud:/^@[-a-z0-9_]{3,25}$/,tiktok:/^@[.\w]{1,23}[\w]$/,youtube:/^@[-.·\w]{3,30}$/};function qst(e){return e===45||e===46||e===95||(0,tye.isAsciiLetterChar)(e)||(0,tye.isDigitChar)(e)}function Kst(e,t){var n=Yst[t];return n.test(e)}US.mentionServices=["twitter","instagram","soundcloud","tiktok","youtube"]});var jK=ui(B8=>{"use strict";Object.defineProperty(B8,"__esModule",{value:!0});B8.MentionMatch=void 0;var Xst=(am(),nh(sm)),Jst=qy(),Zst=uI(),$st=function(e){Xst.__extends(t,e);function t(n){var i=e.call(this,n)||this;return i.type="mention",i.serviceName="twitter",i.mention="",i.mention=n.mention,i.serviceName=n.serviceName,i}return t.prototype.getType=function(){return"mention"},t.prototype.getMention=function(){return this.mention},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getAnchorHref=function(){switch(this.serviceName){case"twitter":return"https://twitter.com/"+this.mention;case"instagram":return"https://instagram.com/"+this.mention;case"soundcloud":return"https://soundcloud.com/"+this.mention;case"tiktok":return"https://www.tiktok.com/@"+this.mention;case"youtube":return"https://youtube.com/@"+this.mention;default:(0,Jst.assertNever)(this.serviceName)}},t.prototype.getAnchorText=function(){return"@"+this.mention},t.prototype.getCssClassSuffixes=function(){var n=e.prototype.getCssClassSuffixes.call(this),i=this.getServiceName();return i&&n.push(i),n},t}(Zst.AbstractMatch);B8.MentionMatch=$st});var nye=ui(OF=>{"use strict";Object.defineProperty(OF,"__esModule",{value:!0});OF.isPhoneNumberSeparatorChar=oat;OF.isPhoneNumberControlChar=rat;OF.isValidPhoneNumber=sat;var eat=/[-. ()]/,tat=/(?:(?:(?:(\+)?\d{1,3}[-. ]?)?\(?\d{3}\)?[-. ]?\d{3}[-. ]?\d{4})|(?:(\+)(?:9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-. ]?(?:\d[-. ]?){6,12}\d+))([,;]+[0-9]+#?)*/,nat=/(0([1-9]-?[1-9]\d{3}|[1-9]{2}-?\d{3}|[1-9]{2}\d{1}-?\d{2}|[1-9]{2}\d{2}-?\d{1})-?\d{4}|0[789]0-?\d{4}-?\d{4}|050-?\d{4}-?\d{4})/,iat=new RegExp("^".concat(tat.source,"|").concat(nat.source,"$"));function oat(e){return e===45||e===46||e===32}function rat(e){return e===44||e===59}function sat(e){var t=e.charAt(0)==="+"||eat.test(e);return t&&iat.test(e)}});var YK=ui(D8=>{"use strict";Object.defineProperty(D8,"__esModule",{value:!0});D8.PhoneMatch=void 0;var aat=(am(),nh(sm)),cat=uI(),lat=function(e){aat.__extends(t,e);function t(n){var i=e.call(this,n)||this;return i.type="phone",i.number="",i.plusSign=!1,i.number=n.number,i.plusSign=n.plusSign,i}return t.prototype.getType=function(){return"phone"},t.prototype.getPhoneNumber=function(){return this.number},t.prototype.getNumber=function(){return this.getPhoneNumber()},t.prototype.getAnchorHref=function(){return"tel:"+(this.plusSign?"+":"")+this.number},t.prototype.getAnchorText=function(){return this.matchedText},t}(cat.AbstractMatch);D8.PhoneMatch=lat});var ZK=ui(M8=>{"use strict";Object.defineProperty(M8,"__esModule",{value:!0});M8.parseMatches=pat;M8.excludeUnbalancedTrailingBracesAndPunctuation=rye;var uat=GK(),v8=qy(),pr=b8(),GS=eye(),fat=zK(),XK=VK(),dat=HK(),JK=WK(),hat=jK(),zS=nye(),mat=YK(),Gs=fI(),Aat=function(){function e(t,n){this.charIdx=0,this.matches=[],this._stateMachines=[],this.schemeUrlMachinesCount=0,this.text=t,this.tagBuilder=n.tagBuilder,this.stripPrefix=n.stripPrefix,this.stripTrailingSlash=n.stripTrailingSlash,this.decodePercentEncoding=n.decodePercentEncoding,this.hashtagServiceName=n.hashtagServiceName,this.mentionServiceName=n.mentionServiceName}return Object.defineProperty(e.prototype,"stateMachines",{get:function(){return this._stateMachines},enumerable:!1,configurable:!0}),e.prototype.addMachine=function(t){this._stateMachines.push(t),oye(t)&&this.schemeUrlMachinesCount++},e.prototype.removeMachine=function(t){this._stateMachines=this._stateMachines.filter(function(n){return n!==t}),oye(t)&&this.schemeUrlMachinesCount--},e.prototype.hasSchemeUrlMachine=function(){return this.schemeUrlMachinesCount>0},e}();function pat(e,t){for(var n=new Aat(e,t);n.charIdx<n.text.length;n.charIdx++){var i=e.charAt(n.charIdx),o=e.charCodeAt(n.charIdx);if(n.stateMachines.length===0)P8(n,i,o);else{for(var r=n.stateMachines.length-1;r>=0;r--){var s=n.stateMachines[r];switch(s.state){case 11:Iat(n,s,o);break;case 12:xat(n,s,o);break;case 0:gat(n,s,o);break;case 1:_at(n,s,o);break;case 2:yat(n,s,o);break;case 3:Cat(n,s,o);break;case 4:Eat(n,s,i,o);break;case 5:bat(n,s,o);break;case 6:Tat(n,s,i,o);break;case 7:Sat(n,s,i,o);break;case 13:wat(n,s,o);break;case 14:Bat(n,s,o);break;case 8:Dat(n,s,o);break;case 9:vat(n,s,o);break;case 10:Pat(n,s,o);break;case 15:Rat(n,s,i,o);break;case 16:Mat(n,s,i,o);break;case 17:Nat(n,s,i,o);break;case 18:Lat(n,s,i,o);break;case 19:Oat(n,s,i,o);break;case 20:Fat(n,s,o);break;case 21:Qat(n,s,o);break;case 22:hI(n,s,o);break;case 23:kat(n,s,o);break;case 24:Uat(n,s,o);break;case 25:Gat(n,s,o);break;case 26:zat(n,s,o);break;case 27:Vat(n,s,o);break;case 28:Hat(n,s,o);break;case 29:Wat(n,s,o);break;case 30:jat(n,s,o);break;case 31:Yat(n,s,o);break;case 32:Kat(n,s,i,o);break;case 33:Xat(n,s,o);break;case 34:Jat(n,s,o);break;case 35:Zat(n,s,o);break;case 36:$at(n,s,i,o);break;case 37:qat(n,s,i,o);break;case 38:ect(n,s,i,o);break;case 39:tct(n,s,i,o);break;case 40:nct(n,s,o);break;case 41:ict(n,s,o);break;default:(0,v8.assertNever)(s.state)}}if(!n.hasSchemeUrlMachine()&&n.charIdx>0&&(0,pr.isSchemeStartChar)(o)){var a=n.text.charCodeAt(n.charIdx-1);(0,pr.isSchemeStartChar)(a)||n.addMachine(R8(n.charIdx,0))}}}for(var c=n.stateMachines.length-1;c>=0;c--)n.stateMachines.forEach(function(u){return ds(n,u)});return n.matches}function P8(e,t,n){var i=e.charIdx;if(n===35)e.addMachine(act(i,28));else if(n===64)e.addMachine(cct(i,30));else if(n===47)e.addMachine(KK(i,11));else if(n===43)e.addMachine(qK(i,37));else if(n===40)e.addMachine(qK(i,32));else{if((0,Gs.isDigitChar)(n)&&(e.addMachine(qK(i,38)),e.addMachine(rct(i,13))),(0,GS.isEmailLocalPartStartChar)(n)){var o=t.toLowerCase()==="m"?15:22;e.addMachine(sct(i,o))}(0,pr.isSchemeStartChar)(n)&&e.addMachine(R8(i,0)),(0,Gs.isAlphaNumericOrMarkChar)(n)&&e.addMachine(KK(i,5))}}function gat(e,t,n){n===58?t.state=2:n===45?t.state=1:(0,pr.isSchemeChar)(n)||e.removeMachine(t)}function _at(e,t,n){var i=e.charIdx;n===45||(n===47?(e.removeMachine(t),e.addMachine(KK(i,11))):(0,pr.isSchemeChar)(n)?t.state=0:e.removeMachine(t))}function yat(e,t,n){var i=e.charIdx;n===47?t.state=3:n===46?e.removeMachine(t):(0,pr.isDomainLabelStartChar)(n)?(t.state=5,(0,pr.isSchemeStartChar)(n)&&e.addMachine(R8(i,0))):e.removeMachine(t)}function Cat(e,t,n){n===47?t.state=4:(0,pr.isPathChar)(n)?(t.state=10,t.acceptStateReached=!0):ds(e,t)}function Eat(e,t,n,i){i===47?(t.state=10,t.acceptStateReached=!0):(0,pr.isDomainLabelStartChar)(i)?(t.state=5,t.acceptStateReached=!0):e.removeMachine(t)}function Iat(e,t,n){n===47?t.state=12:e.removeMachine(t)}function xat(e,t,n){(0,pr.isDomainLabelStartChar)(n)?t.state=5:e.removeMachine(t)}function bat(e,t,n){n===46?t.state=7:n===45?t.state=6:n===58?t.state=8:(0,pr.isUrlSuffixStartChar)(n)?t.state=10:(0,pr.isDomainLabelChar)(n)||ds(e,t)}function Tat(e,t,n,i){i===45||(i===46?ds(e,t):(0,pr.isDomainLabelStartChar)(i)?t.state=5:ds(e,t))}function Sat(e,t,n,i){i===46?ds(e,t):(0,pr.isDomainLabelStartChar)(i)?(t.state=5,t.acceptStateReached=!0):ds(e,t)}function wat(e,t,n){n===46?t.state=14:n===58?t.state=8:(0,Gs.isDigitChar)(n)||((0,pr.isUrlSuffixStartChar)(n)?t.state=10:(0,Gs.isAlphaNumericOrMarkChar)(n)?e.removeMachine(t):ds(e,t))}function Bat(e,t,n){(0,Gs.isDigitChar)(n)?(t.octetsEncountered++,t.octetsEncountered===4&&(t.acceptStateReached=!0),t.state=13):ds(e,t)}function Dat(e,t,n){(0,Gs.isDigitChar)(n)?t.state=9:ds(e,t)}function vat(e,t,n){(0,Gs.isDigitChar)(n)||((0,pr.isUrlSuffixStartChar)(n)?t.state=10:ds(e,t))}function Pat(e,t,n){(0,pr.isPathChar)(n)||ds(e,t)}function Rat(e,t,n,i){n.toLowerCase()==="a"?t.state=16:hI(e,t,i)}function Mat(e,t,n,i){n.toLowerCase()==="i"?t.state=17:hI(e,t,i)}function Nat(e,t,n,i){n.toLowerCase()==="l"?t.state=18:hI(e,t,i)}function Lat(e,t,n,i){n.toLowerCase()==="t"?t.state=19:hI(e,t,i)}function Oat(e,t,n,i){n.toLowerCase()==="o"?t.state=20:hI(e,t,i)}function Fat(e,t,n){n===58?t.state=21:hI(e,t,n)}function Qat(e,t,n){(0,GS.isEmailLocalPartChar)(n)?t.state=22:e.removeMachine(t)}function hI(e,t,n){n===46?t.state=23:n===64?t.state=24:(0,GS.isEmailLocalPartChar)(n)?t.state=22:e.removeMachine(t)}function kat(e,t,n){n===46||n===64?e.removeMachine(t):(0,GS.isEmailLocalPartChar)(n)?t.state=22:e.removeMachine(t)}function Uat(e,t,n){(0,pr.isDomainLabelStartChar)(n)?t.state=25:e.removeMachine(t)}function Gat(e,t,n){n===46?t.state=27:n===45?t.state=26:(0,pr.isDomainLabelChar)(n)||ds(e,t)}function zat(e,t,n){n===45||n===46?ds(e,t):(0,pr.isDomainLabelChar)(n)?t.state=25:ds(e,t)}function Vat(e,t,n){n===46||n===45?ds(e,t):(0,pr.isDomainLabelStartChar)(n)?(t.state=25,t.acceptStateReached=!0):ds(e,t)}function Hat(e,t,n){(0,XK.isHashtagTextChar)(n)?(t.state=29,t.acceptStateReached=!0):e.removeMachine(t)}function Wat(e,t,n){(0,XK.isHashtagTextChar)(n)||ds(e,t)}function jat(e,t,n){(0,JK.isMentionTextChar)(n)?(t.state=31,t.acceptStateReached=!0):e.removeMachine(t)}function Yat(e,t,n){(0,JK.isMentionTextChar)(n)||((0,Gs.isAlphaNumericOrMarkChar)(n)?e.removeMachine(t):ds(e,t))}function qat(e,t,n,i){(0,Gs.isDigitChar)(i)?t.state=38:(e.removeMachine(t),P8(e,n,i))}function Kat(e,t,n,i){(0,Gs.isDigitChar)(i)?t.state=33:e.removeMachine(t),P8(e,n,i)}function Xat(e,t,n){(0,Gs.isDigitChar)(n)?t.state=34:e.removeMachine(t)}function Jat(e,t,n){(0,Gs.isDigitChar)(n)?t.state=35:e.removeMachine(t)}function Zat(e,t,n){n===41?t.state=36:e.removeMachine(t)}function $at(e,t,n,i){(0,Gs.isDigitChar)(i)?t.state=38:(0,zS.isPhoneNumberSeparatorChar)(i)?t.state=39:e.removeMachine(t)}function ect(e,t,n,i){var o=e.charIdx;t.acceptStateReached=!0,(0,zS.isPhoneNumberControlChar)(i)?t.state=40:i===35?t.state=41:(0,Gs.isDigitChar)(i)||(i===40?t.state=32:(0,zS.isPhoneNumberSeparatorChar)(i)?t.state=39:(ds(e,t),(0,pr.isSchemeStartChar)(i)&&e.addMachine(R8(o,0))))}function tct(e,t,n,i){(0,Gs.isDigitChar)(i)?t.state=38:i===40?t.state=32:(ds(e,t),P8(e,n,i))}function nct(e,t,n){(0,zS.isPhoneNumberControlChar)(n)||(n===35?t.state=41:(0,Gs.isDigitChar)(n)?t.state=38:ds(e,t))}function ict(e,t,n){(0,zS.isPhoneNumberControlChar)(n)?t.state=40:(0,Gs.isDigitChar)(n)?e.removeMachine(t):ds(e,t)}function ds(e,t){var n=e.matches,i=e.text,o=e.charIdx,r=e.tagBuilder,s=e.stripPrefix,a=e.stripTrailingSlash,c=e.decodePercentEncoding,u=e.hashtagServiceName,f=e.mentionServiceName;if(e.removeMachine(t),!!t.acceptStateReached){var h=t.startIdx,A=i.slice(t.startIdx,o);switch(A=rye(A),t.type){case 0:{var g=i.charCodeAt(t.startIdx-1);if(g===64)return;switch(t.matchType){case 0:{var m=pr.httpSchemeRe.exec(A);if(m&&(h=h+m.index,A=A.slice(m.index)),!(0,pr.isValidSchemeUrl)(A))return;break}case 1:{if(!(0,pr.isValidTldMatch)(A))return;break}case 2:{if(!(0,pr.isValidIpV4Address)(A))return;break}default:(0,v8.assertNever)(t)}n.push(new uat.UrlMatch({tagBuilder:r,matchedText:A,offset:h,urlMatchType:oct(t.matchType),url:A,protocolRelativeMatch:A.slice(0,2)==="//",stripPrefix:s,stripTrailingSlash:a,decodePercentEncoding:c}));break}case 1:{(0,GS.isValidEmail)(A)&&n.push(new fat.EmailMatch({tagBuilder:r,matchedText:A,offset:h,email:A.replace(GS.mailtoSchemePrefixRe,"")}));break}case 2:{(0,XK.isValidHashtag)(A)&&n.push(new dat.HashtagMatch({tagBuilder:r,matchedText:A,offset:h,serviceName:u,hashtag:A.slice(1)}));break}case 3:{(0,JK.isValidMention)(A,f)&&n.push(new hat.MentionMatch({tagBuilder:r,matchedText:A,offset:h,serviceName:f,mention:A.slice(1)}));break}case 4:{if(A=A.replace(/ +$/g,""),(0,zS.isValidPhoneNumber)(A)){var _=A.replace(/[^0-9,;#]/g,"");n.push(new mat.PhoneMatch({tagBuilder:r,matchedText:A,offset:h,number:_,plusSign:A.charAt(0)==="+"}))}break}default:(0,v8.assertNever)(t)}}}function oct(e){switch(e){case 0:return"scheme";case 1:return"tld";case 2:return"ipV4";default:(0,v8.assertNever)(e)}}var iye={")":"(","}":"{","]":"["};function rye(e){for(var t={"(":0,"{":0,"[":0},n=0;n<e.length;n++){var i=e.charAt(n),o=e.charCodeAt(n);(0,Gs.isOpenBraceChar)(o)?t[i]++:(0,Gs.isCloseBraceChar)(o)&&t[iye[i]]--}for(var r=e.length-1;r>=0;){var i=e.charAt(r),o=e.charCodeAt(r);if((0,Gs.isCloseBraceChar)(o)){var s=iye[i];if(t[s]<0)t[s]++,r--;else break}else if((0,Gs.isUrlSuffixNotAllowedAsFinalChar)(o))r--;else break}return e.slice(0,r+1)}function R8(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:0}}function KK(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:1}}function rct(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:2,octetsEncountered:1}}function sct(e,t){return{type:1,startIdx:e,state:t,acceptStateReached:!1}}function act(e,t){return{type:2,startIdx:e,state:t,acceptStateReached:!1}}function cct(e,t){return{type:3,startIdx:e,state:t,acceptStateReached:!1}}function qK(e,t){return{type:4,startIdx:e,state:t,acceptStateReached:!1}}function oye(e){return e.type===0&&e.matchType===0}});var sye=ui(t7=>{"use strict";Object.defineProperty(t7,"__esModule",{value:!0});t7.parseHtml=fct;var Kc=(am(),nh(sm)),Ul=fI(),lct=qy(),yA=function(){function e(t){t===void 0&&(t={}),this.idx=t.idx!==void 0?t.idx:-1,this.type=t.type||"tag",this.name=t.name||"",this.isOpening=!!t.isOpening,this.isClosing=!!t.isClosing}return e}(),e7=new yA,uct=function(){function e(t,n){this.charIdx=0,this.state=0,this.currentDataIdx=0,this.currentTag=e7,this.html=t,this.callbacks=n}return e}();function fct(e,t){for(var n=new uct(e,t),i=e.length;n.charIdx<i;){var o=e.charAt(n.charIdx),r=e.charCodeAt(n.charIdx);switch(n.state){case 0:dct(n,o);break;case 1:hct(n,o,r);break;case 2:Act(n,o,r);break;case 3:mct(n,o,r);break;case 4:pct(n,o,r);break;case 5:gct(n,o,r);break;case 6:_ct(n,o,r);break;case 7:yct(n,o,r);break;case 8:Cct(n,o);break;case 9:Ect(n,o);break;case 10:Ict(n,o,r);break;case 11:xct(n,o,r);break;case 12:bct(n,o);break;case 13:Tct(n);break;case 14:Sct(n,o);break;case 15:wct(n,o);break;case 16:Bct(n,o);break;case 17:Dct(n,o);break;case 18:vct(n,o);break;case 19:Pct(n,o);break;case 20:Rct(n,o);break;default:(0,lct.assertNever)(n.state)}n.charIdx++}n.currentDataIdx<n.charIdx&&Mct(n)}function dct(e,t){t==="<"&&CA(e)}function hct(e,t,n){t==="!"?e.state=13:t==="/"?(e.state=2,e.currentTag=new yA(Kc.__assign(Kc.__assign({},e.currentTag),{isClosing:!0}))):t==="<"?CA(e):(0,Ul.isAsciiLetterChar)(n)?(e.state=3,e.currentTag=new yA(Kc.__assign(Kc.__assign({},e.currentTag),{isOpening:!0}))):(e.state=0,e.currentTag=e7)}function mct(e,t,n){(0,Ul.isWhitespaceChar)(n)?(e.currentTag=new yA(Kc.__assign(Kc.__assign({},e.currentTag),{name:$K(e)})),e.state=4):t==="<"?CA(e):t==="/"?(e.currentTag=new yA(Kc.__assign(Kc.__assign({},e.currentTag),{name:$K(e)})),e.state=12):t===">"?(e.currentTag=new yA(Kc.__assign(Kc.__assign({},e.currentTag),{name:$K(e)})),EA(e)):!(0,Ul.isAsciiLetterChar)(n)&&!(0,Ul.isDigitChar)(n)&&t!==":"&&Nd(e)}function Act(e,t,n){t===">"?Nd(e):(0,Ul.isAsciiLetterChar)(n)?e.state=3:Nd(e)}function pct(e,t,n){(0,Ul.isWhitespaceChar)(n)||(t==="/"?e.state=12:t===">"?EA(e):t==="<"?CA(e):t==="="||(0,Ul.isQuoteChar)(n)||(0,Ul.isControlChar)(n)?Nd(e):e.state=5)}function gct(e,t,n){(0,Ul.isWhitespaceChar)(n)?e.state=6:t==="/"?e.state=12:t==="="?e.state=7:t===">"?EA(e):t==="<"?CA(e):(0,Ul.isQuoteChar)(n)&&Nd(e)}function _ct(e,t,n){(0,Ul.isWhitespaceChar)(n)||(t==="/"?e.state=12:t==="="?e.state=7:t===">"?EA(e):t==="<"?CA(e):(0,Ul.isQuoteChar)(n)?Nd(e):e.state=5)}function yct(e,t,n){(0,Ul.isWhitespaceChar)(n)||(t==='"'?e.state=8:t==="'"?e.state=9:/[>=`]/.test(t)?Nd(e):t==="<"?CA(e):e.state=10)}function Cct(e,t){t==='"'&&(e.state=11)}function Ect(e,t){t==="'"&&(e.state=11)}function Ict(e,t,n){(0,Ul.isWhitespaceChar)(n)?e.state=4:t===">"?EA(e):t==="<"&&CA(e)}function xct(e,t,n){(0,Ul.isWhitespaceChar)(n)?e.state=4:t==="/"?e.state=12:t===">"?EA(e):t==="<"?CA(e):(e.state=4,Nct(e))}function bct(e,t){t===">"?(e.currentTag=new yA(Kc.__assign(Kc.__assign({},e.currentTag),{isClosing:!0})),EA(e)):Nd(e)}function Tct(e){var t=e.html,n=e.charIdx;t.slice(n,n+2)==="--"?(e.charIdx++,e.currentTag=new yA(Kc.__assign(Kc.__assign({},e.currentTag),{type:"comment"})),e.state=14):t.slice(n,n+7).toUpperCase()==="DOCTYPE"?(e.charIdx+=6,e.currentTag=new yA(Kc.__assign(Kc.__assign({},e.currentTag),{type:"doctype"})),e.state=20):Nd(e)}function Sct(e,t){t==="-"?e.state=15:t===">"?Nd(e):e.state=16}function wct(e,t){t==="-"?e.state=18:t===">"?Nd(e):e.state=16}function Bct(e,t){t==="-"&&(e.state=17)}function Dct(e,t){t==="-"?e.state=18:e.state=16}function vct(e,t){t===">"?EA(e):t==="!"?e.state=19:t==="-"||(e.state=16)}function Pct(e,t){t==="-"?e.state=17:t===">"?EA(e):e.state=16}function Rct(e,t){t===">"?EA(e):t==="<"&&CA(e)}function Nd(e){e.state=0,e.currentTag=e7}function CA(e){e.state=1,e.currentTag=new yA({idx:e.charIdx})}function EA(e){var t=e.html.slice(e.currentDataIdx,e.currentTag.idx);t&&e.callbacks.onText(t,e.currentDataIdx);var n=e.currentTag;n.type==="comment"?e.callbacks.onComment(n.idx):n.type==="doctype"?e.callbacks.onDoctype(n.idx):(n.isOpening&&e.callbacks.onOpenTag(n.name,n.idx),n.isClosing&&e.callbacks.onCloseTag(n.name,n.idx)),Nd(e),e.currentDataIdx=e.charIdx+1}function Mct(e){var t=e.html.slice(e.currentDataIdx,e.charIdx);e.callbacks.onText(t,e.currentDataIdx),e.currentDataIdx=e.charIdx+1}function $K(e){var t=e.currentTag.idx+(e.currentTag.isClosing?2:1);return e.html.slice(t,e.charIdx).toLowerCase()}function Nct(e){e.charIdx--}});var N8=ui(i7=>{"use strict";Object.defineProperty(i7,"__esModule",{value:!0});var n7=(am(),nh(sm)),Lct=j_e(),xa=qy(),Oct=UK(),Fct=C8(),Qct=ZK(),kct=sye(),Uct=WK(),Gct=VK(),zct=function(){function e(t){t===void 0&&(t={}),this.version=e.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:"end"},this.className="",this.replaceFn=null,this.context=void 0,this.sanitizeHtml=!1,this.tagBuilder=null,this.urls=Vct(t.urls),this.email=(0,xa.isBoolean)(t.email)?t.email:this.email,this.phone=(0,xa.isBoolean)(t.phone)?t.phone:this.phone,this.hashtag=t.hashtag||this.hashtag,this.mention=t.mention||this.mention,this.newWindow=(0,xa.isBoolean)(t.newWindow)?t.newWindow:this.newWindow,this.stripPrefix=Hct(t.stripPrefix),this.stripTrailingSlash=(0,xa.isBoolean)(t.stripTrailingSlash)?t.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding=(0,xa.isBoolean)(t.decodePercentEncoding)?t.decodePercentEncoding:this.decodePercentEncoding,this.sanitizeHtml=t.sanitizeHtml||!1;var n=this.mention;if(n!==!1&&Uct.mentionServices.indexOf(n)===-1)throw new Error("invalid `mention` cfg '".concat(n,"' - see docs"));var i=this.hashtag;if(i!==!1&&Gct.hashtagServices.indexOf(i)===-1)throw new Error("invalid `hashtag` cfg '".concat(i,"' - see docs"));this.truncate=Wct(t.truncate),this.className=t.className||this.className,this.replaceFn=t.replaceFn||this.replaceFn,this.context=t.context||this}return e.link=function(t,n){var i=new e(n);return i.link(t)},e.parse=function(t,n){var i=new e(n);return i.parse(t)},e.prototype.parse=function(t){var n=this,i=["a","style","script"],o=0,r=[];return(0,kct.parseHtml)(t,{onOpenTag:function(s){i.indexOf(s)>=0&&o++},onText:function(s,a){if(o===0){var c=/( | |<|<|>|>|"|"|')/gi,u=s.split(c),f=a;u.forEach(function(h,A){if(A%2===0){var g=n.parseText(h,f);r.push.apply(r,n7.__spreadArray([],n7.__read(g),!1))}f+=h.length})}},onCloseTag:function(s){i.indexOf(s)>=0&&(o=Math.max(o-1,0))},onComment:function(){},onDoctype:function(){}}),r=this.compactMatches(r),r=this.removeUnwantedMatches(r),r},e.prototype.compactMatches=function(t){t.sort(jct);for(var n=0;n<t.length-1;){var i=t[n],o=i.getOffset(),r=i.getMatchedText().length;if(n+1<t.length&&t[n+1].getOffset()===o){var s=t[n+1].getMatchedText().length>r?n:n+1;t.splice(s,1);continue}n++}return t},e.prototype.removeUnwantedMatches=function(t){return this.hashtag||(0,xa.removeWithPredicate)(t,function(n){return n.getType()==="hashtag"}),this.email||(0,xa.removeWithPredicate)(t,function(n){return n.getType()==="email"}),this.phone||(0,xa.removeWithPredicate)(t,function(n){return n.getType()==="phone"}),this.mention||(0,xa.removeWithPredicate)(t,function(n){return n.getType()==="mention"}),this.urls.schemeMatches||(0,xa.removeWithPredicate)(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="scheme"}),this.urls.tldMatches||(0,xa.removeWithPredicate)(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="tld"}),this.urls.ipV4Matches||(0,xa.removeWithPredicate)(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="ipV4"}),t},e.prototype.parseText=function(t,n){n=n||0;for(var i=(0,Qct.parseMatches)(t,{tagBuilder:this.getTagBuilder(),stripPrefix:this.stripPrefix,stripTrailingSlash:this.stripTrailingSlash,decodePercentEncoding:this.decodePercentEncoding,hashtagServiceName:this.hashtag,mentionServiceName:this.mention||"twitter"}),o=0,r=i.length;o<r;o++)i[o].setOffset(n+i[o].getOffset());return i},e.prototype.link=function(t){if(!t)return"";this.sanitizeHtml&&(t=t.replace(/</g,"<").replace(/>/g,">"));for(var n=this.parse(t),i=new Array(n.length*2+1),o=0,r=0,s=n.length;r<s;r++){var a=n[r];i.push(t.substring(o,a.getOffset())),i.push(this.createMatchReturnVal(a)),o=a.getOffset()+a.getMatchedText().length}return i.push(t.substring(o)),i.join("")},e.prototype.createMatchReturnVal=function(t){var n;if(this.replaceFn&&(n=this.replaceFn.call(this.context,t)),typeof n=="string")return n;if(n===!1)return t.getMatchedText();if(n instanceof Fct.HtmlTag)return n.toAnchorString();var i=t.buildTag();return i.toAnchorString()},e.prototype.getTagBuilder=function(){var t=this.tagBuilder;return t||(t=this.tagBuilder=new Oct.AnchorTagBuilder({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),t},e.version=Lct.version,e}();i7.default=zct;function Vct(e){return e==null&&(e=!0),(0,xa.isBoolean)(e)?{schemeMatches:e,tldMatches:e,ipV4Matches:e}:{schemeMatches:(0,xa.isBoolean)(e.schemeMatches)?e.schemeMatches:!0,tldMatches:(0,xa.isBoolean)(e.tldMatches)?e.tldMatches:!0,ipV4Matches:(0,xa.isBoolean)(e.ipV4Matches)?e.ipV4Matches:!0}}function Hct(e){return e==null&&(e=!0),(0,xa.isBoolean)(e)?{scheme:e,www:e}:{scheme:(0,xa.isBoolean)(e.scheme)?e.scheme:!0,www:(0,xa.isBoolean)(e.www)?e.www:!0}}function Wct(e){return typeof e=="number"?{length:e,location:"end"}:n7.__assign({length:Number.POSITIVE_INFINITY,location:"end"},e)}function jct(e,t){return e.getOffset()-t.getOffset()}});var cye=ui(aye=>{"use strict";Object.defineProperty(aye,"__esModule",{value:!0})});var lye=ui(Qg=>{"use strict";Object.defineProperty(Qg,"__esModule",{value:!0});var mI=(am(),nh(sm));mI.__exportStar(cye(),Qg);mI.__exportStar(zK(),Qg);mI.__exportStar(HK(),Qg);mI.__exportStar(uI(),Qg);mI.__exportStar(jK(),Qg);mI.__exportStar(YK(),Qg);mI.__exportStar(GK(),Qg)});var uye=ui(o7=>{"use strict";Object.defineProperty(o7,"__esModule",{value:!0});var Yct=(am(),nh(sm));Yct.__exportStar(ZK(),o7)});var r7=ui((cm,dye)=>{"use strict";cm=dye.exports=N8().default;Object.defineProperty(cm,"__esModule",{value:!0});cm.Autolinker=void 0;var VS=(am(),nh(sm)),fye=VS.__importDefault(N8());cm.Autolinker=fye.default;cm.default=fye.default;VS.__exportStar(N8(),cm);VS.__exportStar(UK(),cm);VS.__exportStar(C8(),cm);VS.__exportStar(lye(),cm);VS.__exportStar(uye(),cm)});var _$=ui((exports,module)=>{/*! + * protobuf.js v7.5.3 (c) 2016, daniel wirtz + * compiled wed, 28 may 2025 22:23:47 utc + * licensed under the bsd-3-clause license + * see: https://github.com/dcodeio/protobuf.js for details + */(function(undefined){"use strict";(function(t,n,i){function o(s){var a=n[s];return a||t[s][0].call(a=n[s]={exports:{}},o,a,a.exports),a.exports}var r=o(i[0]);r.util.global.protobuf=r,typeof define=="function"&&define.amd&&define(["long"],function(s){return s&&s.isLong&&(r.util.Long=s,r.configure()),r}),typeof module=="object"&&module&&module.exports&&(module.exports=r)})({1:[function(e,t,n){"use strict";t.exports=i;function i(o,r){for(var s=new Array(arguments.length-1),a=0,c=2,u=!0;c<arguments.length;)s[a++]=arguments[c++];return new Promise(function(h,A){s[a]=function(m){if(u)if(u=!1,m)A(m);else{for(var _=new Array(arguments.length-1),y=0;y<_.length;)_[y++]=arguments[y];h.apply(null,_)}};try{o.apply(r||null,s)}catch(g){u&&(u=!1,A(g))}})}},{}],2:[function(e,t,n){"use strict";var i=n;i.length=function(u){var f=u.length;if(!f)return 0;for(var h=0;--f%4>1&&u.charAt(f)==="=";)++h;return Math.ceil(u.length*3)/4-h};for(var o=new Array(64),r=new Array(123),s=0;s<64;)r[o[s]=s<26?s+65:s<52?s+71:s<62?s-4:s-59|43]=s++;i.encode=function(u,f,h){for(var A=null,g=[],m=0,_=0,y;f<h;){var C=u[f++];switch(_){case 0:g[m++]=o[C>>2],y=(C&3)<<4,_=1;break;case 1:g[m++]=o[y|C>>4],y=(C&15)<<2,_=2;break;case 2:g[m++]=o[y|C>>6],g[m++]=o[C&63],_=0;break}m>8191&&((A||(A=[])).push(String.fromCharCode.apply(String,g)),m=0)}return _&&(g[m++]=o[y],g[m++]=61,_===1&&(g[m++]=61)),A?(m&&A.push(String.fromCharCode.apply(String,g.slice(0,m))),A.join("")):String.fromCharCode.apply(String,g.slice(0,m))};var a="invalid encoding";i.decode=function(u,f,h){for(var A=h,g=0,m,_=0;_<u.length;){var y=u.charCodeAt(_++);if(y===61&&g>1)break;if((y=r[y])===undefined)throw Error(a);switch(g){case 0:m=y,g=1;break;case 1:f[h++]=m<<2|(y&48)>>4,m=y,g=2;break;case 2:f[h++]=(m&15)<<4|(y&60)>>2,m=y,g=3;break;case 3:f[h++]=(m&3)<<6|y,g=0;break}}if(g===1)throw Error(a);return h-A},i.test=function(u){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(u)}},{}],3:[function(e,t,n){"use strict";t.exports=i;function i(){this._listeners={}}i.prototype.on=function(r,s,a){return(this._listeners[r]||(this._listeners[r]=[])).push({fn:s,ctx:a||this}),this},i.prototype.off=function(r,s){if(r===undefined)this._listeners={};else if(s===undefined)this._listeners[r]=[];else for(var a=this._listeners[r],c=0;c<a.length;)a[c].fn===s?a.splice(c,1):++c;return this},i.prototype.emit=function(r){var s=this._listeners[r];if(s){for(var a=[],c=1;c<arguments.length;)a.push(arguments[c++]);for(c=0;c<s.length;)s[c].fn.apply(s[c++].ctx,a)}return this}},{}],4:[function(e,t,n){"use strict";t.exports=i(i);function i(c){return typeof Float32Array<"u"?function(){var u=new Float32Array([-0]),f=new Uint8Array(u.buffer),h=f[3]===128;function A(y,C,E){u[0]=y,C[E]=f[0],C[E+1]=f[1],C[E+2]=f[2],C[E+3]=f[3]}function g(y,C,E){u[0]=y,C[E]=f[3],C[E+1]=f[2],C[E+2]=f[1],C[E+3]=f[0]}c.writeFloatLE=h?A:g,c.writeFloatBE=h?g:A;function m(y,C){return f[0]=y[C],f[1]=y[C+1],f[2]=y[C+2],f[3]=y[C+3],u[0]}function _(y,C){return f[3]=y[C],f[2]=y[C+1],f[1]=y[C+2],f[0]=y[C+3],u[0]}c.readFloatLE=h?m:_,c.readFloatBE=h?_:m}():function(){function u(h,A,g,m){var _=A<0?1:0;if(_&&(A=-A),A===0)h(1/A>0?0:2147483648,g,m);else if(isNaN(A))h(2143289344,g,m);else if(A>34028234663852886e22)h((_<<31|2139095040)>>>0,g,m);else if(A<11754943508222875e-54)h((_<<31|Math.round(A/1401298464324817e-60))>>>0,g,m);else{var y=Math.floor(Math.log(A)/Math.LN2),C=Math.round(A*Math.pow(2,-y)*8388608)&8388607;h((_<<31|y+127<<23|C)>>>0,g,m)}}c.writeFloatLE=u.bind(null,o),c.writeFloatBE=u.bind(null,r);function f(h,A,g){var m=h(A,g),_=(m>>31)*2+1,y=m>>>23&255,C=m&8388607;return y===255?C?NaN:_*(1/0):y===0?_*1401298464324817e-60*C:_*Math.pow(2,y-150)*(C+8388608)}c.readFloatLE=f.bind(null,s),c.readFloatBE=f.bind(null,a)}(),typeof Float64Array<"u"?function(){var u=new Float64Array([-0]),f=new Uint8Array(u.buffer),h=f[7]===128;function A(y,C,E){u[0]=y,C[E]=f[0],C[E+1]=f[1],C[E+2]=f[2],C[E+3]=f[3],C[E+4]=f[4],C[E+5]=f[5],C[E+6]=f[6],C[E+7]=f[7]}function g(y,C,E){u[0]=y,C[E]=f[7],C[E+1]=f[6],C[E+2]=f[5],C[E+3]=f[4],C[E+4]=f[3],C[E+5]=f[2],C[E+6]=f[1],C[E+7]=f[0]}c.writeDoubleLE=h?A:g,c.writeDoubleBE=h?g:A;function m(y,C){return f[0]=y[C],f[1]=y[C+1],f[2]=y[C+2],f[3]=y[C+3],f[4]=y[C+4],f[5]=y[C+5],f[6]=y[C+6],f[7]=y[C+7],u[0]}function _(y,C){return f[7]=y[C],f[6]=y[C+1],f[5]=y[C+2],f[4]=y[C+3],f[3]=y[C+4],f[2]=y[C+5],f[1]=y[C+6],f[0]=y[C+7],u[0]}c.readDoubleLE=h?m:_,c.readDoubleBE=h?_:m}():function(){function u(h,A,g,m,_,y){var C=m<0?1:0;if(C&&(m=-m),m===0)h(0,_,y+A),h(1/m>0?0:2147483648,_,y+g);else if(isNaN(m))h(0,_,y+A),h(2146959360,_,y+g);else if(m>17976931348623157e292)h(0,_,y+A),h((C<<31|2146435072)>>>0,_,y+g);else{var E;if(m<22250738585072014e-324)E=m/5e-324,h(E>>>0,_,y+A),h((C<<31|E/4294967296)>>>0,_,y+g);else{var I=Math.floor(Math.log(m)/Math.LN2);I===1024&&(I=1023),E=m*Math.pow(2,-I),h(E*4503599627370496>>>0,_,y+A),h((C<<31|I+1023<<20|E*1048576&1048575)>>>0,_,y+g)}}}c.writeDoubleLE=u.bind(null,o,0,4),c.writeDoubleBE=u.bind(null,r,4,0);function f(h,A,g,m,_){var y=h(m,_+A),C=h(m,_+g),E=(C>>31)*2+1,I=C>>>20&2047,b=4294967296*(C&1048575)+y;return I===2047?b?NaN:E*(1/0):I===0?E*5e-324*b:E*Math.pow(2,I-1075)*(b+4503599627370496)}c.readDoubleLE=f.bind(null,s,0,4),c.readDoubleBE=f.bind(null,a,4,0)}(),c}function o(c,u,f){u[f]=c&255,u[f+1]=c>>>8&255,u[f+2]=c>>>16&255,u[f+3]=c>>>24}function r(c,u,f){u[f]=c>>>24,u[f+1]=c>>>16&255,u[f+2]=c>>>8&255,u[f+3]=c&255}function s(c,u){return(c[u]|c[u+1]<<8|c[u+2]<<16|c[u+3]<<24)>>>0}function a(c,u){return(c[u]<<24|c[u+1]<<16|c[u+2]<<8|c[u+3])>>>0}},{}],5:[function(require,module,exports){"use strict";module.exports=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(e){}return null}},{}],6:[function(e,t,n){"use strict";t.exports=i;function i(o,r,s){var a=s||8192,c=a>>>1,u=null,f=a;return function(A){if(A<1||A>c)return o(A);f+A>a&&(u=o(a),f=0);var g=r.call(u,f,f+=A);return f&7&&(f=(f|7)+1),g}}},{}],7:[function(e,t,n){"use strict";var i=n;i.length=function(r){for(var s=0,a=0,c=0;c<r.length;++c)a=r.charCodeAt(c),a<128?s+=1:a<2048?s+=2:(a&64512)===55296&&(r.charCodeAt(c+1)&64512)===56320?(++c,s+=4):s+=3;return s},i.read=function(r,s,a){var c=a-s;if(c<1)return"";for(var u=null,f=[],h=0,A;s<a;)A=r[s++],A<128?f[h++]=A:A>191&&A<224?f[h++]=(A&31)<<6|r[s++]&63:A>239&&A<365?(A=((A&7)<<18|(r[s++]&63)<<12|(r[s++]&63)<<6|r[s++]&63)-65536,f[h++]=55296+(A>>10),f[h++]=56320+(A&1023)):f[h++]=(A&15)<<12|(r[s++]&63)<<6|r[s++]&63,h>8191&&((u||(u=[])).push(String.fromCharCode.apply(String,f)),h=0);return u?(h&&u.push(String.fromCharCode.apply(String,f.slice(0,h))),u.join("")):String.fromCharCode.apply(String,f.slice(0,h))},i.write=function(r,s,a){for(var c=a,u,f,h=0;h<r.length;++h)u=r.charCodeAt(h),u<128?s[a++]=u:u<2048?(s[a++]=u>>6|192,s[a++]=u&63|128):(u&64512)===55296&&((f=r.charCodeAt(h+1))&64512)===56320?(u=65536+((u&1023)<<10)+(f&1023),++h,s[a++]=u>>18|240,s[a++]=u>>12&63|128,s[a++]=u>>6&63|128,s[a++]=u&63|128):(s[a++]=u>>12|224,s[a++]=u>>6&63|128,s[a++]=u&63|128);return a-c}},{}],8:[function(e,t,n){"use strict";var i=n;i.build="minimal",i.Writer=e(16),i.BufferWriter=e(17),i.Reader=e(9),i.BufferReader=e(10),i.util=e(15),i.rpc=e(12),i.roots=e(11),i.configure=o;function o(){i.util._configure(),i.Writer._configure(i.BufferWriter),i.Reader._configure(i.BufferReader)}o()},{10:10,11:11,12:12,15:15,16:16,17:17,9:9}],9:[function(e,t,n){"use strict";t.exports=c;var i=e(15),o,r=i.LongBits,s=i.utf8;function a(m,_){return RangeError("index out of range: "+m.pos+" + "+(_||1)+" > "+m.len)}function c(m){this.buf=m,this.pos=0,this.len=m.length}var u=typeof Uint8Array<"u"?function(_){if(_ instanceof Uint8Array||Array.isArray(_))return new c(_);throw Error("illegal buffer")}:function(_){if(Array.isArray(_))return new c(_);throw Error("illegal buffer")},f=function(){return i.Buffer?function(y){return(c.create=function(E){return i.Buffer.isBuffer(E)?new o(E):u(E)})(y)}:u};c.create=f(),c.prototype._slice=i.Array.prototype.subarray||i.Array.prototype.slice,c.prototype.uint32=function(){var _=4294967295;return function(){if(_=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(_=(_|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(_=(_|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(_=(_|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(_=(_|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return _;if((this.pos+=5)>this.len)throw this.pos=this.len,a(this,10);return _}}(),c.prototype.int32=function(){return this.uint32()|0},c.prototype.sint32=function(){var _=this.uint32();return _>>>1^-(_&1)|0};function h(){var m=new r(0,0),_=0;if(this.len-this.pos>4){for(;_<4;++_)if(m.lo=(m.lo|(this.buf[this.pos]&127)<<_*7)>>>0,this.buf[this.pos++]<128)return m;if(m.lo=(m.lo|(this.buf[this.pos]&127)<<28)>>>0,m.hi=(m.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return m;_=0}else{for(;_<3;++_){if(this.pos>=this.len)throw a(this);if(m.lo=(m.lo|(this.buf[this.pos]&127)<<_*7)>>>0,this.buf[this.pos++]<128)return m}return m.lo=(m.lo|(this.buf[this.pos++]&127)<<_*7)>>>0,m}if(this.len-this.pos>4){for(;_<5;++_)if(m.hi=(m.hi|(this.buf[this.pos]&127)<<_*7+3)>>>0,this.buf[this.pos++]<128)return m}else for(;_<5;++_){if(this.pos>=this.len)throw a(this);if(m.hi=(m.hi|(this.buf[this.pos]&127)<<_*7+3)>>>0,this.buf[this.pos++]<128)return m}throw Error("invalid varint encoding")}c.prototype.bool=function(){return this.uint32()!==0};function A(m,_){return(m[_-4]|m[_-3]<<8|m[_-2]<<16|m[_-1]<<24)>>>0}c.prototype.fixed32=function(){if(this.pos+4>this.len)throw a(this,4);return A(this.buf,this.pos+=4)},c.prototype.sfixed32=function(){if(this.pos+4>this.len)throw a(this,4);return A(this.buf,this.pos+=4)|0};function g(){if(this.pos+8>this.len)throw a(this,8);return new r(A(this.buf,this.pos+=4),A(this.buf,this.pos+=4))}c.prototype.float=function(){if(this.pos+4>this.len)throw a(this,4);var _=i.float.readFloatLE(this.buf,this.pos);return this.pos+=4,_},c.prototype.double=function(){if(this.pos+8>this.len)throw a(this,4);var _=i.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,_},c.prototype.bytes=function(){var _=this.uint32(),y=this.pos,C=this.pos+_;if(C>this.len)throw a(this,_);if(this.pos+=_,Array.isArray(this.buf))return this.buf.slice(y,C);if(y===C){var E=i.Buffer;return E?E.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,y,C)},c.prototype.string=function(){var _=this.bytes();return s.read(_,0,_.length)},c.prototype.skip=function(_){if(typeof _=="number"){if(this.pos+_>this.len)throw a(this,_);this.pos+=_}else do if(this.pos>=this.len)throw a(this);while(this.buf[this.pos++]&128);return this},c.prototype.skipType=function(m){switch(m){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(m=this.uint32()&7)!==4;)this.skipType(m);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+m+" at offset "+this.pos)}return this},c._configure=function(m){o=m,c.create=f(),o._configure();var _=i.Long?"toLong":"toNumber";i.merge(c.prototype,{int64:function(){return h.call(this)[_](!1)},uint64:function(){return h.call(this)[_](!0)},sint64:function(){return h.call(this).zzDecode()[_](!1)},fixed64:function(){return g.call(this)[_](!0)},sfixed64:function(){return g.call(this)[_](!1)}})}},{15:15}],10:[function(e,t,n){"use strict";t.exports=r;var i=e(9);(r.prototype=Object.create(i.prototype)).constructor=r;var o=e(15);function r(s){i.call(this,s)}r._configure=function(){o.Buffer&&(r.prototype._slice=o.Buffer.prototype.slice)},r.prototype.string=function(){var a=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+a,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+a,this.len))},r._configure()},{15:15,9:9}],11:[function(e,t,n){"use strict";t.exports={}},{}],12:[function(e,t,n){"use strict";var i=n;i.Service=e(13)},{13:13}],13:[function(e,t,n){"use strict";t.exports=o;var i=e(15);(o.prototype=Object.create(i.EventEmitter.prototype)).constructor=o;function o(r,s,a){if(typeof r!="function")throw TypeError("rpcImpl must be a function");i.EventEmitter.call(this),this.rpcImpl=r,this.requestDelimited=!!s,this.responseDelimited=!!a}o.prototype.rpcCall=function r(s,a,c,u,f){if(!u)throw TypeError("request must be specified");var h=this;if(!f)return i.asPromise(r,h,s,a,c,u);if(!h.rpcImpl)return setTimeout(function(){f(Error("already ended"))},0),undefined;try{return h.rpcImpl(s,a[h.requestDelimited?"encodeDelimited":"encode"](u).finish(),function(g,m){if(g)return h.emit("error",g,s),f(g);if(m===null)return h.end(!0),undefined;if(!(m instanceof c))try{m=c[h.responseDelimited?"decodeDelimited":"decode"](m)}catch(_){return h.emit("error",_,s),f(_)}return h.emit("data",m,s),f(null,m)})}catch(A){return h.emit("error",A,s),setTimeout(function(){f(A)},0),undefined}},o.prototype.end=function(s){return this.rpcImpl&&(s||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}},{15:15}],14:[function(e,t,n){"use strict";t.exports=o;var i=e(15);function o(c,u){this.lo=c>>>0,this.hi=u>>>0}var r=o.zero=new o(0,0);r.toNumber=function(){return 0},r.zzEncode=r.zzDecode=function(){return this},r.length=function(){return 1};var s=o.zeroHash="\0\0\0\0\0\0\0\0";o.fromNumber=function(u){if(u===0)return r;var f=u<0;f&&(u=-u);var h=u>>>0,A=(u-h)/4294967296>>>0;return f&&(A=~A>>>0,h=~h>>>0,++h>4294967295&&(h=0,++A>4294967295&&(A=0))),new o(h,A)},o.from=function(u){if(typeof u=="number")return o.fromNumber(u);if(i.isString(u))if(i.Long)u=i.Long.fromString(u);else return o.fromNumber(parseInt(u,10));return u.low||u.high?new o(u.low>>>0,u.high>>>0):r},o.prototype.toNumber=function(u){if(!u&&this.hi>>>31){var f=~this.lo+1>>>0,h=~this.hi>>>0;return f||(h=h+1>>>0),-(f+h*4294967296)}return this.lo+this.hi*4294967296},o.prototype.toLong=function(u){return i.Long?new i.Long(this.lo|0,this.hi|0,!!u):{low:this.lo|0,high:this.hi|0,unsigned:!!u}};var a=String.prototype.charCodeAt;o.fromHash=function(u){return u===s?r:new o((a.call(u,0)|a.call(u,1)<<8|a.call(u,2)<<16|a.call(u,3)<<24)>>>0,(a.call(u,4)|a.call(u,5)<<8|a.call(u,6)<<16|a.call(u,7)<<24)>>>0)},o.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},o.prototype.zzEncode=function(){var u=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^u)>>>0,this.lo=(this.lo<<1^u)>>>0,this},o.prototype.zzDecode=function(){var u=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^u)>>>0,this.hi=(this.hi>>>1^u)>>>0,this},o.prototype.length=function(){var u=this.lo,f=(this.lo>>>28|this.hi<<4)>>>0,h=this.hi>>>24;return h===0?f===0?u<16384?u<128?1:2:u<2097152?3:4:f<16384?f<128?5:6:f<2097152?7:8:h<128?9:10}},{15:15}],15:[function(e,t,n){"use strict";var i=n;i.asPromise=e(1),i.base64=e(2),i.EventEmitter=e(3),i.float=e(4),i.inquire=e(5),i.utf8=e(7),i.pool=e(6),i.LongBits=e(14),i.isNode=!!(typeof global<"u"&&global&&global.process&&global.process.versions&&global.process.versions.node),i.global=i.isNode&&global||typeof window<"u"&&window||typeof self<"u"&&self||this,i.emptyArray=Object.freeze?Object.freeze([]):[],i.emptyObject=Object.freeze?Object.freeze({}):{},i.isInteger=Number.isInteger||function(a){return typeof a=="number"&&isFinite(a)&&Math.floor(a)===a},i.isString=function(a){return typeof a=="string"||a instanceof String},i.isObject=function(a){return a&&typeof a=="object"},i.isset=i.isSet=function(a,c){var u=a[c];return u!=null&&a.hasOwnProperty(c)?typeof u!="object"||(Array.isArray(u)?u.length:Object.keys(u).length)>0:!1},i.Buffer=function(){try{var s=i.inquire("buffer").Buffer;return s.prototype.utf8Write?s:null}catch{return null}}(),i._Buffer_from=null,i._Buffer_allocUnsafe=null,i.newBuffer=function(a){return typeof a=="number"?i.Buffer?i._Buffer_allocUnsafe(a):new i.Array(a):i.Buffer?i._Buffer_from(a):typeof Uint8Array>"u"?a:new Uint8Array(a)},i.Array=typeof Uint8Array<"u"?Uint8Array:Array,i.Long=i.global.dcodeIO&&i.global.dcodeIO.Long||i.global.Long||i.inquire("long"),i.key2Re=/^true|false|0|1$/,i.key32Re=/^-?(?:0|[1-9][0-9]*)$/,i.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,i.longToHash=function(a){return a?i.LongBits.from(a).toHash():i.LongBits.zeroHash},i.longFromHash=function(a,c){var u=i.LongBits.fromHash(a);return i.Long?i.Long.fromBits(u.lo,u.hi,c):u.toNumber(!!c)};function o(s,a,c){for(var u=Object.keys(a),f=0;f<u.length;++f)(s[u[f]]===undefined||!c)&&(s[u[f]]=a[u[f]]);return s}i.merge=o,i.lcFirst=function(a){return a.charAt(0).toLowerCase()+a.substring(1)};function r(s){function a(c,u){if(!(this instanceof a))return new a(c,u);Object.defineProperty(this,"message",{get:function(){return c}}),Error.captureStackTrace?Error.captureStackTrace(this,a):Object.defineProperty(this,"stack",{value:new Error().stack||""}),u&&o(this,u)}return a.prototype=Object.create(Error.prototype,{constructor:{value:a,writable:!0,enumerable:!1,configurable:!0},name:{get:function(){return s},set:undefined,enumerable:!1,configurable:!0},toString:{value:function(){return this.name+": "+this.message},writable:!0,enumerable:!1,configurable:!0}}),a}i.newError=r,i.ProtocolError=r("ProtocolError"),i.oneOfGetter=function(a){for(var c={},u=0;u<a.length;++u)c[a[u]]=1;return function(){for(var f=Object.keys(this),h=f.length-1;h>-1;--h)if(c[f[h]]===1&&this[f[h]]!==undefined&&this[f[h]]!==null)return f[h]}},i.oneOfSetter=function(a){return function(c){for(var u=0;u<a.length;++u)a[u]!==c&&delete this[a[u]]}},i.toJSONOptions={longs:String,enums:String,bytes:String,json:!0},i._configure=function(){var s=i.Buffer;if(!s){i._Buffer_from=i._Buffer_allocUnsafe=null;return}i._Buffer_from=s.from!==Uint8Array.from&&s.from||function(c,u){return new s(c,u)},i._Buffer_allocUnsafe=s.allocUnsafe||function(c){return new s(c)}}},{1:1,14:14,2:2,3:3,4:4,5:5,6:6,7:7}],16:[function(e,t,n){"use strict";t.exports=h;var i=e(15),o,r=i.LongBits,s=i.base64,a=i.utf8;function c(I,b,S){this.fn=I,this.len=b,this.next=undefined,this.val=S}function u(){}function f(I){this.head=I.head,this.tail=I.tail,this.len=I.len,this.next=I.states}function h(){this.len=0,this.head=new c(u,0,0),this.tail=this.head,this.states=null}var A=function(){return i.Buffer?function(){return(h.create=function(){return new o})()}:function(){return new h}};h.create=A(),h.alloc=function(b){return new i.Array(b)},i.Array!==Array&&(h.alloc=i.pool(h.alloc,i.Array.prototype.subarray)),h.prototype._push=function(b,S,B){return this.tail=this.tail.next=new c(b,S,B),this.len+=S,this};function g(I,b,S){b[S]=I&255}function m(I,b,S){for(;I>127;)b[S++]=I&127|128,I>>>=7;b[S]=I}function _(I,b){this.len=I,this.next=undefined,this.val=b}_.prototype=Object.create(c.prototype),_.prototype.fn=m,h.prototype.uint32=function(b){return this.len+=(this.tail=this.tail.next=new _((b=b>>>0)<128?1:b<16384?2:b<2097152?3:b<268435456?4:5,b)).len,this},h.prototype.int32=function(b){return b<0?this._push(y,10,r.fromNumber(b)):this.uint32(b)},h.prototype.sint32=function(b){return this.uint32((b<<1^b>>31)>>>0)};function y(I,b,S){for(;I.hi;)b[S++]=I.lo&127|128,I.lo=(I.lo>>>7|I.hi<<25)>>>0,I.hi>>>=7;for(;I.lo>127;)b[S++]=I.lo&127|128,I.lo=I.lo>>>7;b[S++]=I.lo}h.prototype.uint64=function(b){var S=r.from(b);return this._push(y,S.length(),S)},h.prototype.int64=h.prototype.uint64,h.prototype.sint64=function(b){var S=r.from(b).zzEncode();return this._push(y,S.length(),S)},h.prototype.bool=function(b){return this._push(g,1,b?1:0)};function C(I,b,S){b[S]=I&255,b[S+1]=I>>>8&255,b[S+2]=I>>>16&255,b[S+3]=I>>>24}h.prototype.fixed32=function(b){return this._push(C,4,b>>>0)},h.prototype.sfixed32=h.prototype.fixed32,h.prototype.fixed64=function(b){var S=r.from(b);return this._push(C,4,S.lo)._push(C,4,S.hi)},h.prototype.sfixed64=h.prototype.fixed64,h.prototype.float=function(b){return this._push(i.float.writeFloatLE,4,b)},h.prototype.double=function(b){return this._push(i.float.writeDoubleLE,8,b)};var E=i.Array.prototype.set?function(b,S,B){S.set(b,B)}:function(b,S,B){for(var v=0;v<b.length;++v)S[B+v]=b[v]};h.prototype.bytes=function(b){var S=b.length>>>0;if(!S)return this._push(g,1,0);if(i.isString(b)){var B=h.alloc(S=s.length(b));s.decode(b,B,0),b=B}return this.uint32(S)._push(E,S,b)},h.prototype.string=function(b){var S=a.length(b);return S?this.uint32(S)._push(a.write,S,b):this._push(g,1,0)},h.prototype.fork=function(){return this.states=new f(this),this.head=this.tail=new c(u,0,0),this.len=0,this},h.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new c(u,0,0),this.len=0),this},h.prototype.ldelim=function(){var b=this.head,S=this.tail,B=this.len;return this.reset().uint32(B),B&&(this.tail.next=b.next,this.tail=S,this.len+=B),this},h.prototype.finish=function(){for(var b=this.head.next,S=this.constructor.alloc(this.len),B=0;b;)b.fn(b.val,S,B),B+=b.len,b=b.next;return S},h._configure=function(I){o=I,h.create=A(),o._configure()}},{15:15}],17:[function(e,t,n){"use strict";t.exports=r;var i=e(16);(r.prototype=Object.create(i.prototype)).constructor=r;var o=e(15);function r(){i.call(this)}r._configure=function(){r.alloc=o._Buffer_allocUnsafe,r.writeBytesBuffer=o.Buffer&&o.Buffer.prototype instanceof Uint8Array&&o.Buffer.prototype.set.name==="set"?function(c,u,f){u.set(c,f)}:function(c,u,f){if(c.copy)c.copy(u,f,0,c.length);else for(var h=0;h<c.length;)u[f++]=c[h++]}},r.prototype.bytes=function(c){o.isString(c)&&(c=o._Buffer_from(c,"base64"));var u=c.length>>>0;return this.uint32(u),u&&this._push(r.writeBytesBuffer,u,c),this};function s(a,c,u){a.length<40?o.utf8.write(a,c,u):c.utf8Write?c.utf8Write(a,u):c.write(a,u)}r.prototype.string=function(c){var u=o.Buffer.byteLength(c);return this.uint32(u),u&&this._push(s,u,c),this},r._configure()},{15:15,16:16}]},{},[8])})()});var $Se=ui((w4i,S5)=>{/* Copyright 2015-2018 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */(function(){var e=function(){var o={};o.defaultNoDataValue=-34027999387901484e22,o.decode=function(f,h){h=h||{};var A=h.encodedMaskData||h.encodedMaskData===null,g=c(f,h.inputOffset||0,A),m=h.noDataValue!==null?h.noDataValue:o.defaultNoDataValue,_=r(g,h.pixelType||Float32Array,h.encodedMaskData,m,h.returnMask),y={width:g.width,height:g.height,pixelData:_.resultPixels,minValue:_.minValue,maxValue:g.pixels.maxValue,noDataValue:m};return _.resultMask&&(y.maskData=_.resultMask),h.returnEncodedMask&&g.mask&&(y.encodedMaskData=g.mask.bitset?g.mask.bitset:null),h.returnFileInfo&&(y.fileInfo=s(g),h.computeUsedBitDepths&&(y.fileInfo.bitDepths=a(g))),y};var r=function(f,h,A,g,m){var _=0,y=f.pixels.numBlocksX,C=f.pixels.numBlocksY,E=Math.floor(f.width/y),I=Math.floor(f.height/C),b=2*f.maxZError,S=Number.MAX_VALUE,B;A=A||(f.mask?f.mask.bitset:null);var v,P;v=new h(f.width*f.height),m&&A&&(P=new Uint8Array(f.width*f.height));for(var M=new Float32Array(E*I),L,p,x=0;x<=C;x++){var T=x!==C?I:f.height%C;if(T!==0)for(var w=0;w<=y;w++){var R=w!==y?E:f.width%y;if(R!==0){var O=x*f.width*I+w*E,k=f.width-R,Q=f.pixels.blocks[_],z,F,H;Q.encoding<2?(Q.encoding===0?z=Q.rawData:(u(Q.stuffedData,Q.bitsPerPixel,Q.numValidPixels,Q.offset,b,M,f.pixels.maxValue),z=M),F=0):Q.encoding===2?H=0:H=Q.offset;var W;if(A)for(p=0;p<T;p++){for(O&7&&(W=A[O>>3],W<<=O&7),L=0;L<R;L++)O&7||(W=A[O>>3]),W&128?(P&&(P[O]=1),B=Q.encoding<2?z[F++]:H,S=S>B?B:S,v[O++]=B):(P&&(P[O]=0),v[O++]=g),W<<=1;O+=k}else if(Q.encoding<2)for(p=0;p<T;p++){for(L=0;L<R;L++)B=z[F++],S=S>B?B:S,v[O++]=B;O+=k}else for(S=S>H?H:S,p=0;p<T;p++){for(L=0;L<R;L++)v[O++]=H;O+=k}if(Q.encoding===1&&F!==Q.numValidPixels)throw"Block and Mask do not match";_++}}}return{resultPixels:v,resultMask:P,minValue:S}},s=function(f){return{fileIdentifierString:f.fileIdentifierString,fileVersion:f.fileVersion,imageType:f.imageType,height:f.height,width:f.width,maxZError:f.maxZError,eofOffset:f.eofOffset,mask:f.mask?{numBlocksX:f.mask.numBlocksX,numBlocksY:f.mask.numBlocksY,numBytes:f.mask.numBytes,maxValue:f.mask.maxValue}:null,pixels:{numBlocksX:f.pixels.numBlocksX,numBlocksY:f.pixels.numBlocksY,numBytes:f.pixels.numBytes,maxValue:f.pixels.maxValue,noDataValue:f.noDataValue}}},a=function(f){for(var h=f.pixels.numBlocksX*f.pixels.numBlocksY,A={},g=0;g<h;g++){var m=f.pixels.blocks[g];m.encoding===0?A.float32=!0:m.encoding===1?A[m.bitsPerPixel]=!0:A[0]=!0}return Object.keys(A)},c=function(f,h,A){var g={},m=new Uint8Array(f,h,10);if(g.fileIdentifierString=String.fromCharCode.apply(null,m),g.fileIdentifierString.trim()!=="CntZImage")throw"Unexpected file identifier string: "+g.fileIdentifierString;h+=10;var _=new DataView(f,h,24);if(g.fileVersion=_.getInt32(0,!0),g.imageType=_.getInt32(4,!0),g.height=_.getUint32(8,!0),g.width=_.getUint32(12,!0),g.maxZError=_.getFloat64(16,!0),h+=24,!A)if(_=new DataView(f,h,16),g.mask={},g.mask.numBlocksY=_.getUint32(0,!0),g.mask.numBlocksX=_.getUint32(4,!0),g.mask.numBytes=_.getUint32(8,!0),g.mask.maxValue=_.getFloat32(12,!0),h+=16,g.mask.numBytes>0){var y=new Uint8Array(Math.ceil(g.width*g.height/8));_=new DataView(f,h,g.mask.numBytes);var C=_.getInt16(0,!0),E=2,I=0;do{if(C>0)for(;C--;)y[I++]=_.getUint8(E++);else{var b=_.getUint8(E++);for(C=-C;C--;)y[I++]=b}C=_.getInt16(E,!0),E+=2}while(E<g.mask.numBytes);if(C!==-32768||I<y.length)throw"Unexpected end of mask RLE encoding";g.mask.bitset=y,h+=g.mask.numBytes}else(g.mask.numBytes|g.mask.numBlocksY|g.mask.maxValue)===0&&(g.mask.bitset=new Uint8Array(Math.ceil(g.width*g.height/8)));_=new DataView(f,h,16),g.pixels={},g.pixels.numBlocksY=_.getUint32(0,!0),g.pixels.numBlocksX=_.getUint32(4,!0),g.pixels.numBytes=_.getUint32(8,!0),g.pixels.maxValue=_.getFloat32(12,!0),h+=16;var S=g.pixels.numBlocksX,B=g.pixels.numBlocksY,v=S+(g.width%S>0?1:0),P=B+(g.height%B>0?1:0);g.pixels.blocks=new Array(v*P);for(var M=0,L=0;L<P;L++)for(var p=0;p<v;p++){var x=0,T=f.byteLength-h;_=new DataView(f,h,Math.min(10,T));var w={};g.pixels.blocks[M++]=w;var R=_.getUint8(0);if(x++,w.encoding=R&63,w.encoding>3)throw"Invalid block encoding ("+w.encoding+")";if(w.encoding===2){h++;continue}if(R!==0&&R!==2){if(R>>=6,w.offsetType=R,R===2)w.offset=_.getInt8(1),x++;else if(R===1)w.offset=_.getInt16(1,!0),x+=2;else if(R===0)w.offset=_.getFloat32(1,!0),x+=4;else throw"Invalid block offset type";if(w.encoding===1)if(R=_.getUint8(x),x++,w.bitsPerPixel=R&63,R>>=6,w.numValidPixelsType=R,R===2)w.numValidPixels=_.getUint8(x),x++;else if(R===1)w.numValidPixels=_.getUint16(x,!0),x+=2;else if(R===0)w.numValidPixels=_.getUint32(x,!0),x+=4;else throw"Invalid valid pixel count type"}if(h+=x,w.encoding!==3){var O,k;if(w.encoding===0){var Q=(g.pixels.numBytes-1)/4;if(Q!==Math.floor(Q))throw"uncompressed block has invalid length";O=new ArrayBuffer(Q*4),k=new Uint8Array(O),k.set(new Uint8Array(f,h,Q*4));var z=new Float32Array(O);w.rawData=z,h+=Q*4}else if(w.encoding===1){var F=Math.ceil(w.numValidPixels*w.bitsPerPixel/8),H=Math.ceil(F/4);O=new ArrayBuffer(H*4),k=new Uint8Array(O),k.set(new Uint8Array(f,h,F)),w.stuffedData=new Uint32Array(O),h+=F}}}return g.eofOffset=h,g},u=function(f,h,A,g,m,_,y){var C=(1<<h)-1,E=0,I,b=0,S,B,v=Math.ceil((y-g)/m),P=f.length*4-Math.ceil(h*A/8);for(f[f.length-1]<<=8*P,I=0;I<A;I++){if(b===0&&(B=f[E++],b=32),b>=h)S=B>>>b-h&C,b-=h;else{var M=h-b;S=(B&C)<<M&C,B=f[E++],b=32-M,S+=B>>>b}_[I]=S<v?g+S*m:y}return _};return o}(),t=function(){"use strict";var o={unstuff:function(c,u,f,h,A,g,m,_){var y=(1<<f)-1,C=0,E,I=0,b,S,B,v,P=c.length*4-Math.ceil(f*h/8);if(c[c.length-1]<<=8*P,A)for(E=0;E<h;E++)I===0&&(S=c[C++],I=32),I>=f?(b=S>>>I-f&y,I-=f):(B=f-I,b=(S&y)<<B&y,S=c[C++],I=32-B,b+=S>>>I),u[E]=A[b];else for(v=Math.ceil((_-g)/m),E=0;E<h;E++)I===0&&(S=c[C++],I=32),I>=f?(b=S>>>I-f&y,I-=f):(B=f-I,b=(S&y)<<B&y,S=c[C++],I=32-B,b+=S>>>I),u[E]=b<v?g+b*m:_},unstuffLUT:function(c,u,f,h,A,g){var m=(1<<u)-1,_=0,y=0,C=0,E=0,I=0,b,S=[],B=c.length*4-Math.ceil(u*f/8);c[c.length-1]<<=8*B;var v=Math.ceil((g-h)/A);for(y=0;y<f;y++)E===0&&(b=c[_++],E=32),E>=u?(I=b>>>E-u&m,E-=u):(C=u-E,I=(b&m)<<C&m,b=c[_++],E=32-C,I+=b>>>E),S[y]=I<v?h+I*A:g;return S.unshift(h),S},unstuff2:function(c,u,f,h,A,g,m,_){var y=(1<<f)-1,C=0,E,I=0,b=0,S,B,v;if(A)for(E=0;E<h;E++)I===0&&(B=c[C++],I=32,b=0),I>=f?(S=B>>>b&y,I-=f,b+=f):(v=f-I,S=B>>>b&y,B=c[C++],I=32-v,S|=(B&(1<<v)-1)<<f-v,b=v),u[E]=A[S];else{var P=Math.ceil((_-g)/m);for(E=0;E<h;E++)I===0&&(B=c[C++],I=32,b=0),I>=f?(S=B>>>b&y,I-=f,b+=f):(v=f-I,S=B>>>b&y,B=c[C++],I=32-v,S|=(B&(1<<v)-1)<<f-v,b=v),u[E]=S<P?g+S*m:_}return u},unstuffLUT2:function(c,u,f,h,A,g){var m=(1<<u)-1,_=0,y=0,C=0,E=0,I=0,b=0,S,B=[],v=Math.ceil((g-h)/A);for(y=0;y<f;y++)E===0&&(S=c[_++],E=32,b=0),E>=u?(I=S>>>b&m,E-=u,b+=u):(C=u-E,I=S>>>b&m,S=c[_++],E=32-C,I|=(S&(1<<C)-1)<<u-C,b=C),B[y]=I<v?h+I*A:g;return B.unshift(h),B},originalUnstuff:function(c,u,f,h){var A=(1<<f)-1,g=0,m,_=0,y,C,E,I=c.length*4-Math.ceil(f*h/8);for(c[c.length-1]<<=8*I,m=0;m<h;m++)_===0&&(C=c[g++],_=32),_>=f?(y=C>>>_-f&A,_-=f):(E=f-_,y=(C&A)<<E&A,C=c[g++],_=32-E,y+=C>>>_),u[m]=y;return u},originalUnstuff2:function(c,u,f,h){var A=(1<<f)-1,g=0,m,_=0,y=0,C,E,I;for(m=0;m<h;m++)_===0&&(E=c[g++],_=32,y=0),_>=f?(C=E>>>y&A,_-=f,y+=f):(I=f-_,C=E>>>y&A,E=c[g++],_=32-I,C|=(E&(1<<I)-1)<<f-I,y=I),u[m]=C;return u}},r={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(c){for(var u=65535,f=65535,h=c.length,A=Math.floor(h/2),g=0;A;){var m=A>=359?359:A;A-=m;do u+=c[g++]<<8,f+=u+=c[g++];while(--m);u=(u&65535)+(u>>>16),f=(f&65535)+(f>>>16)}return h&1&&(f+=u+=c[g]<<8),u=(u&65535)+(u>>>16),f=(f&65535)+(f>>>16),(f<<16|u)>>>0},readHeaderInfo:function(c,u){var f=u.ptr,h=new Uint8Array(c,f,6),A={};if(A.fileIdentifierString=String.fromCharCode.apply(null,h),A.fileIdentifierString.lastIndexOf("Lerc2",0)!==0)throw"Unexpected file identifier string (expect Lerc2 ): "+A.fileIdentifierString;f+=6;var g=new DataView(c,f,8),m=g.getInt32(0,!0);A.fileVersion=m,f+=4,m>=3&&(A.checksum=g.getUint32(4,!0),f+=4),g=new DataView(c,f,12),A.height=g.getUint32(0,!0),A.width=g.getUint32(4,!0),f+=8,m>=4?(A.numDims=g.getUint32(8,!0),f+=4):A.numDims=1,g=new DataView(c,f,40),A.numValidPixel=g.getUint32(0,!0),A.microBlockSize=g.getInt32(4,!0),A.blobSize=g.getInt32(8,!0),A.imageType=g.getInt32(12,!0),A.maxZError=g.getFloat64(16,!0),A.zMin=g.getFloat64(24,!0),A.zMax=g.getFloat64(32,!0),f+=40,u.headerInfo=A,u.ptr=f;var _,y;if(m>=3&&(y=m>=4?52:48,_=this.computeChecksumFletcher32(new Uint8Array(c,f-y,A.blobSize-14)),_!==A.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(c,u){var f=u.headerInfo,h=this.getDataTypeArray(f.imageType),A=f.numDims*this.getDataTypeSize(f.imageType),g=this.readSubArray(c,u.ptr,h,A),m=this.readSubArray(c,u.ptr+A,h,A);u.ptr+=2*A;var _,y=!0;for(_=0;_<f.numDims;_++)if(g[_]!==m[_]){y=!1;break}return f.minValues=g,f.maxValues=m,y},readSubArray:function(c,u,f,h){var A;if(f===Uint8Array)A=new Uint8Array(c,u,h);else{var g=new ArrayBuffer(h),m=new Uint8Array(g);m.set(new Uint8Array(c,u,h)),A=new f(g)}return A},readMask:function(c,u){var f=u.ptr,h=u.headerInfo,A=h.width*h.height,g=h.numValidPixel,m=new DataView(c,f,4),_={};if(_.numBytes=m.getUint32(0,!0),f+=4,(g===0||A===g)&&_.numBytes!==0)throw"invalid mask";var y,C;if(g===0)y=new Uint8Array(Math.ceil(A/8)),_.bitset=y,C=new Uint8Array(A),u.pixels.resultMask=C,f+=_.numBytes;else if(_.numBytes>0){y=new Uint8Array(Math.ceil(A/8)),m=new DataView(c,f,_.numBytes);var E=m.getInt16(0,!0),I=2,b=0,S=0;do{if(E>0)for(;E--;)y[b++]=m.getUint8(I++);else for(S=m.getUint8(I++),E=-E;E--;)y[b++]=S;E=m.getInt16(I,!0),I+=2}while(I<_.numBytes);if(E!==-32768||b<y.length)throw"Unexpected end of mask RLE encoding";C=new Uint8Array(A);var B=0,v=0;for(v=0;v<A;v++)v&7?(B=y[v>>3],B<<=v&7):B=y[v>>3],B&128&&(C[v]=1);u.pixels.resultMask=C,_.bitset=y,f+=_.numBytes}return u.ptr=f,u.mask=_,!0},readDataOneSweep:function(c,u,f){var h=u.ptr,A=u.headerInfo,g=A.numDims,m=A.width*A.height,_=A.imageType,y=A.numValidPixel*r.getDataTypeSize(_)*g,C,E=u.pixels.resultMask;if(f===Uint8Array)C=new Uint8Array(c,h,y);else{var I=new ArrayBuffer(y),b=new Uint8Array(I);b.set(new Uint8Array(c,h,y)),C=new f(I)}if(C.length===m*g)u.pixels.resultPixels=C;else{u.pixels.resultPixels=new f(m*g);var S=0,B=0,v=0,P=0;if(g>1)for(v=0;v<g;v++)for(P=v*m,B=0;B<m;B++)E[B]&&(u.pixels.resultPixels[P+B]=C[S++]);else for(B=0;B<m;B++)E[B]&&(u.pixels.resultPixels[B]=C[S++])}return h+=y,u.ptr=h,!0},readHuffmanTree:function(c,u){var f=this.HUFFMAN_LUT_BITS_MAX,h=new DataView(c,u.ptr,16);u.ptr+=16;var A=h.getInt32(0,!0);if(A<2)throw"unsupported Huffman version";var g=h.getInt32(4,!0),m=h.getInt32(8,!0),_=h.getInt32(12,!0);if(m>=_)return!1;var y=new Uint32Array(_-m);r.decodeBits(c,u,y);var C=[],E,I,b,S;for(E=m;E<_;E++)I=E-(E<g?0:g),C[I]={first:y[E-m],second:null};var B=c.byteLength-u.ptr,v=Math.ceil(B/4),P=new ArrayBuffer(v*4),M=new Uint8Array(P);M.set(new Uint8Array(c,u.ptr,B));var L=new Uint32Array(P),p=0,x,T=0;for(x=L[0],E=m;E<_;E++)I=E-(E<g?0:g),S=C[I].first,S>0&&(C[I].second=x<<p>>>32-S,32-p>=S?(p+=S,p===32&&(p=0,T++,x=L[T])):(p+=S-32,T++,x=L[T],C[I].second|=x>>>32-p));var w=0,R=0,O=new s;for(E=0;E<C.length;E++)C[E]!==void 0&&(w=Math.max(w,C[E].first));w>=f?R=f:R=w,w>=30&&console.log("WARning, large NUM LUT BITS IS "+w);var k=[],Q,z,F,H,W,Z;for(E=m;E<_;E++)if(I=E-(E<g?0:g),S=C[I].first,S>0)if(Q=[S,I],S<=R)for(z=C[I].second<<R-S,F=1<<R-S,b=0;b<F;b++)k[z|b]=Q;else for(z=C[I].second,Z=O,H=S-1;H>=0;H--)W=z>>>H&1,W?(Z.right||(Z.right=new s),Z=Z.right):(Z.left||(Z.left=new s),Z=Z.left),H===0&&!Z.val&&(Z.val=Q[1]);return{decodeLut:k,numBitsLUTQick:R,numBitsLUT:w,tree:O,stuffedData:L,srcPtr:T,bitPos:p}},readHuffman:function(c,u,f){var h=u.headerInfo,A=h.numDims,g=u.headerInfo.height,m=u.headerInfo.width,_=m*g,y=this.readHuffmanTree(c,u),C=y.decodeLut,E=y.tree,I=y.stuffedData,b=y.srcPtr,S=y.bitPos,B=y.numBitsLUTQick,v=y.numBitsLUT,P=u.headerInfo.imageType===0?128:0,M,L,p,x=u.pixels.resultMask,T,w,R,O,k,Q,z,F=0;S>0&&(b++,S=0);var H=I[b],W=u.encodeMode===1,Z=new f(_*A),Y=Z,$;for($=0;$<h.numDims;$++){if(A>1&&(Y=new f(Z.buffer,_*$,_),F=0),u.headerInfo.numValidPixel===m*g)for(Q=0,O=0;O<g;O++)for(k=0;k<m;k++,Q++){if(L=0,T=H<<S>>>32-B,w=T,32-S<B&&(T|=I[b+1]>>>64-S-B,w=T),C[w])L=C[w][1],S+=C[w][0];else for(T=H<<S>>>32-v,w=T,32-S<v&&(T|=I[b+1]>>>64-S-v,w=T),M=E,z=0;z<v;z++)if(R=T>>>v-z-1&1,M=R?M.right:M.left,!(M.left||M.right)){L=M.val,S=S+z+1;break}S>=32&&(S-=32,b++,H=I[b]),p=L-P,W?(k>0?p+=F:O>0?p+=Y[Q-m]:p+=F,p&=255,Y[Q]=p,F=p):Y[Q]=p}else for(Q=0,O=0;O<g;O++)for(k=0;k<m;k++,Q++)if(x[Q]){if(L=0,T=H<<S>>>32-B,w=T,32-S<B&&(T|=I[b+1]>>>64-S-B,w=T),C[w])L=C[w][1],S+=C[w][0];else for(T=H<<S>>>32-v,w=T,32-S<v&&(T|=I[b+1]>>>64-S-v,w=T),M=E,z=0;z<v;z++)if(R=T>>>v-z-1&1,M=R?M.right:M.left,!(M.left||M.right)){L=M.val,S=S+z+1;break}S>=32&&(S-=32,b++,H=I[b]),p=L-P,W?(k>0&&x[Q-1]?p+=F:O>0&&x[Q-m]?p+=Y[Q-m]:p+=F,p&=255,Y[Q]=p,F=p):Y[Q]=p}u.ptr=u.ptr+(b+1)*4+(S>0?4:0)}u.pixels.resultPixels=Z},decodeBits:function(c,u,f,h,A){{var g=u.headerInfo,m=g.fileVersion,_=0,y=new DataView(c,u.ptr,5),C=y.getUint8(0);_++;var E=C>>6,I=E===0?4:3-E,b=(C&32)>0,S=C&31,B=0;if(I===1)B=y.getUint8(_),_++;else if(I===2)B=y.getUint16(_,!0),_+=2;else if(I===4)B=y.getUint32(_,!0),_+=4;else throw"Invalid valid pixel count type";var v=2*g.maxZError,P,M,L,p,x,T,w,R,O,k,Q=g.numDims>1?g.maxValues[A]:g.zMax;if(b){for(u.counter.lut++,R=y.getUint8(_),O=S,_++,p=Math.ceil((R-1)*S/8),x=Math.ceil(p/4),M=new ArrayBuffer(x*4),L=new Uint8Array(M),u.ptr+=_,L.set(new Uint8Array(c,u.ptr,p)),w=new Uint32Array(M),u.ptr+=p,k=0;R-1>>>k;)k++;p=Math.ceil(B*k/8),x=Math.ceil(p/4),M=new ArrayBuffer(x*4),L=new Uint8Array(M),L.set(new Uint8Array(c,u.ptr,p)),P=new Uint32Array(M),u.ptr+=p,m>=3?T=o.unstuffLUT2(w,S,R-1,h,v,Q):T=o.unstuffLUT(w,S,R-1,h,v,Q),m>=3?o.unstuff2(P,f,k,B,T):o.unstuff(P,f,k,B,T)}else u.counter.bitstuffer++,k=S,u.ptr+=_,k>0&&(p=Math.ceil(B*k/8),x=Math.ceil(p/4),M=new ArrayBuffer(x*4),L=new Uint8Array(M),L.set(new Uint8Array(c,u.ptr,p)),P=new Uint32Array(M),u.ptr+=p,m>=3?h==null?o.originalUnstuff2(P,f,k,B):o.unstuff2(P,f,k,B,!1,h,v,Q):h==null?o.originalUnstuff(P,f,k,B):o.unstuff(P,f,k,B,!1,h,v,Q))}},readTiles:function(c,u,f){var h=u.headerInfo,A=h.width,g=h.height,m=h.microBlockSize,_=h.imageType,y=r.getDataTypeSize(_),C=Math.ceil(A/m),E=Math.ceil(g/m);u.pixels.numBlocksY=E,u.pixels.numBlocksX=C,u.pixels.ptr=0;var I=0,b=0,S=0,B=0,v=0,P=0,M=0,L=0,p=0,x=0,T=0,w=0,R=0,O=0,k=0,Q=0,z,F,H,W,Z,Y,$=new f(m*m),X=g%m||m,he=A%m||m,ge,fe,ye=h.numDims,xe,ve=u.pixels.resultMask,Te=u.pixels.resultPixels;for(S=0;S<E;S++)for(v=S!==E-1?m:X,B=0;B<C;B++)for(P=B!==C-1?m:he,T=S*A*m+B*m,w=A-P,xe=0;xe<ye;xe++){if(ye>1&&(Te=new f(u.pixels.resultPixels.buffer,A*g*xe*y,A*g)),M=c.byteLength-u.ptr,z=new DataView(c,u.ptr,Math.min(10,M)),F={},Q=0,L=z.getUint8(0),Q++,p=L>>6&255,x=L>>2&15,x!==(B*m>>3&15))throw"integrity issue";if(Y=L&3,Y>3)throw u.ptr+=Q,"Invalid block encoding ("+Y+")";if(Y===2){u.counter.constant++,u.ptr+=Q;continue}else if(Y===0){if(u.counter.uncompressed++,u.ptr+=Q,R=v*P*y,O=c.byteLength-u.ptr,R=R<O?R:O,H=new ArrayBuffer(R%y===0?R:R+y-R%y),W=new Uint8Array(H),W.set(new Uint8Array(c,u.ptr,R)),Z=new f(H),k=0,ve)for(I=0;I<v;I++){for(b=0;b<P;b++)ve[T]&&(Te[T]=Z[k++]),T++;T+=w}else for(I=0;I<v;I++){for(b=0;b<P;b++)Te[T++]=Z[k++];T+=w}u.ptr+=k*y}else if(ge=r.getDataTypeUsed(_,p),fe=r.getOnePixel(F,Q,ge,z),Q+=r.getDataTypeSize(ge),Y===3)if(u.ptr+=Q,u.counter.constantoffset++,ve)for(I=0;I<v;I++){for(b=0;b<P;b++)ve[T]&&(Te[T]=fe),T++;T+=w}else for(I=0;I<v;I++){for(b=0;b<P;b++)Te[T++]=fe;T+=w}else if(u.ptr+=Q,r.decodeBits(c,u,$,fe,xe),Q=0,ve)for(I=0;I<v;I++){for(b=0;b<P;b++)ve[T]&&(Te[T]=$[Q++]),T++;T+=w}else for(I=0;I<v;I++){for(b=0;b<P;b++)Te[T++]=$[Q++];T+=w}}},formatFileInfo:function(c){return{fileIdentifierString:c.headerInfo.fileIdentifierString,fileVersion:c.headerInfo.fileVersion,imageType:c.headerInfo.imageType,height:c.headerInfo.height,width:c.headerInfo.width,numValidPixel:c.headerInfo.numValidPixel,microBlockSize:c.headerInfo.microBlockSize,blobSize:c.headerInfo.blobSize,maxZError:c.headerInfo.maxZError,pixelType:r.getPixelType(c.headerInfo.imageType),eofOffset:c.eofOffset,mask:c.mask?{numBytes:c.mask.numBytes}:null,pixels:{numBlocksX:c.pixels.numBlocksX,numBlocksY:c.pixels.numBlocksY,maxValue:c.headerInfo.zMax,minValue:c.headerInfo.zMin,noDataValue:c.noDataValue}}},constructConstantSurface:function(c){var u=c.headerInfo.zMax,f=c.headerInfo.numDims,h=c.headerInfo.height*c.headerInfo.width,A=h*f,g=0,m=0,_=0,y=c.pixels.resultMask;if(y)if(f>1)for(g=0;g<f;g++)for(_=g*h,m=0;m<h;m++)y[m]&&(c.pixels.resultPixels[_+m]=u);else for(m=0;m<h;m++)y[m]&&(c.pixels.resultPixels[m]=u);else if(c.pixels.resultPixels.fill)c.pixels.resultPixels.fill(u);else for(m=0;m<A;m++)c.pixels.resultPixels[m]=u},getDataTypeArray:function(c){var u;switch(c){case 0:u=Int8Array;break;case 1:u=Uint8Array;break;case 2:u=Int16Array;break;case 3:u=Uint16Array;break;case 4:u=Int32Array;break;case 5:u=Uint32Array;break;case 6:u=Float32Array;break;case 7:u=Float64Array;break;default:u=Float32Array}return u},getPixelType:function(c){var u;switch(c){case 0:u="S8";break;case 1:u="U8";break;case 2:u="S16";break;case 3:u="U16";break;case 4:u="S32";break;case 5:u="U32";break;case 6:u="F32";break;case 7:u="F64";break;default:u="F32"}return u},isValidPixelValue:function(c,u){if(u==null)return!1;var f;switch(c){case 0:f=u>=-128&&u<=127;break;case 1:f=u>=0&&u<=255;break;case 2:f=u>=-32768&&u<=32767;break;case 3:f=u>=0&&u<=65536;break;case 4:f=u>=-2147483648&&u<=2147483647;break;case 5:f=u>=0&&u<=4294967296;break;case 6:f=u>=-34027999387901484e22&&u<=34027999387901484e22;break;case 7:f=u>=5e-324&&u<=17976931348623157e292;break;default:f=!1}return f},getDataTypeSize:function(c){var u=0;switch(c){case 0:case 1:u=1;break;case 2:case 3:u=2;break;case 4:case 5:case 6:u=4;break;case 7:u=8;break;default:u=c}return u},getDataTypeUsed:function(c,u){var f=c;switch(c){case 2:case 4:f=c-u;break;case 3:case 5:f=c-2*u;break;case 6:u===0?f=c:u===1?f=2:f=1;break;case 7:u===0?f=c:f=c-2*u+1;break;default:f=c;break}return f},getOnePixel:function(c,u,f,h){var A=0;switch(f){case 0:A=h.getInt8(u);break;case 1:A=h.getUint8(u);break;case 2:A=h.getInt16(u,!0);break;case 3:A=h.getUint16(u,!0);break;case 4:A=h.getInt32(u,!0);break;case 5:A=h.getUInt32(u,!0);break;case 6:A=h.getFloat32(u,!0);break;case 7:A=h.getFloat64(u,!0);break;default:throw"the decoder does not understand this pixel type"}return A}},s=function(c,u,f){this.val=c,this.left=u,this.right=f},a={decode:function(c,u){u=u||{};var f=u.noDataValue,h=0,A={};if(A.ptr=u.inputOffset||0,A.pixels={},!!r.readHeaderInfo(c,A)){var g=A.headerInfo,m=g.fileVersion,_=r.getDataTypeArray(g.imageType);r.readMask(c,A),g.numValidPixel!==g.width*g.height&&!A.pixels.resultMask&&(A.pixels.resultMask=u.maskData);var y=g.width*g.height;if(A.pixels.resultPixels=new _(y*g.numDims),A.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0},g.numValidPixel!==0)if(g.zMax===g.zMin)r.constructConstantSurface(A);else if(m>=4&&r.checkMinMaxRanges(c,A))r.constructConstantSurface(A);else{var C=new DataView(c,A.ptr,2),E=C.getUint8(0);if(A.ptr++,E)r.readDataOneSweep(c,A,_);else if(m>1&&g.imageType<=1&&Math.abs(g.maxZError-.5)<1e-5){var I=C.getUint8(1);if(A.ptr++,A.encodeMode=I,I>2||m<4&&I>1)throw"Invalid Huffman flag "+I;I?r.readHuffman(c,A,_):r.readTiles(c,A,_)}else r.readTiles(c,A,_)}A.eofOffset=A.ptr;var b;u.inputOffset?(b=A.headerInfo.blobSize+u.inputOffset-A.ptr,Math.abs(b)>=1&&(A.eofOffset=u.inputOffset+A.headerInfo.blobSize)):(b=A.headerInfo.blobSize-A.ptr,Math.abs(b)>=1&&(A.eofOffset=A.headerInfo.blobSize));var S={width:g.width,height:g.height,pixelData:A.pixels.resultPixels,minValue:g.zMin,maxValue:g.zMax,validPixelCount:g.numValidPixel,dimCount:g.numDims,dimStats:{minValues:g.minValues,maxValues:g.maxValues},maskData:A.pixels.resultMask};if(A.pixels.resultMask&&r.isValidPixelValue(g.imageType,f)){var B=A.pixels.resultMask;for(h=0;h<y;h++)B[h]||(S.pixelData[h]=f);S.noDataValue=f}return A.noDataValue=f,u.returnFileInfo&&(S.fileInfo=r.formatFileInfo(A)),S}},getBandCount:function(c){var u=0,f=0,h={};for(h.ptr=0,h.pixels={};f<c.byteLength-58;)r.readHeaderInfo(c,h),f+=h.headerInfo.blobSize,u++,h.ptr=f;return u}};return a}(),n=function(){var o=new ArrayBuffer(4),r=new Uint8Array(o),s=new Uint32Array(o);return s[0]=1,r[0]===1}(),i={decode:function(o,r){if(!n)throw"Big endian system is not supported.";r=r||{};var s=r.inputOffset||0,a=new Uint8Array(o,s,10),c=String.fromCharCode.apply(null,a),u,f;if(c.trim()==="CntZImage")u=e,f=1;else if(c.substring(0,5)==="Lerc2")u=t,f=2;else throw"Unexpected file identifier string: "+c;for(var h=0,A=o.byteLength-10,g,m=[],_,y,C={width:0,height:0,pixels:[],pixelType:r.pixelType,mask:null,statistics:[]};s<A;){var E=u.decode(o,{inputOffset:s,encodedMaskData:g,maskData:y,returnMask:h===0,returnEncodedMask:h===0,returnFileInfo:!0,pixelType:r.pixelType||null,noDataValue:r.noDataValue||null});s=E.fileInfo.eofOffset,h===0&&(g=E.encodedMaskData,y=E.maskData,C.width=E.width,C.height=E.height,C.dimCount=E.dimCount||1,C.pixelType=E.pixelType||E.fileInfo.pixelType,C.mask=E.maskData),f>1&&E.fileInfo.mask&&E.fileInfo.mask.numBytes>0&&m.push(E.maskData),h++,C.pixels.push(E.pixelData),C.statistics.push({minValue:E.minValue,maxValue:E.maxValue,noDataValue:E.noDataValue,dimStats:E.dimStats})}var I,b,S;if(f>1&&m.length>1){for(S=C.width*C.height,C.bandMasks=m,y=new Uint8Array(S),y.set(m[0]),I=1;I<m.length;I++)for(_=m[I],b=0;b<S;b++)y[b]=y[b]&_[b];C.maskData=y}return C}};typeof define=="function"&&define.amd?define([],function(){return i}):typeof S5<"u"&&S5.exports?S5.exports=i:this.Lerc=i})()});var Gwe=ui((LU,ate)=>{/*! NoSleep.min.js v0.12.0 - git.io/vfn01 - Rich Tibbett - MIT license */(function(e,t){typeof LU=="object"&&typeof ate=="object"?ate.exports=t():typeof define=="function"&&define.amd?define([],t):typeof LU=="object"?LU.NoSleep=t():e.NoSleep=t()})(LU,function(){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(i,o,r){n.o(i,o)||Object.defineProperty(i,o,{enumerable:!0,get:r})},n.r=function(i){typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(i,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(i,"__esModule",{value:!0})},n.t=function(i,o){if(1&o&&(i=n(i)),8&o||4&o&&typeof i=="object"&&i&&i.__esModule)return i;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:i}),2&o&&typeof i!="string")for(var s in i)n.d(r,s,function(a){return i[a]}.bind(null,s));return r},n.n=function(i){var o=i&&i.__esModule?function(){return i.default}:function(){return i};return n.d(o,"a",o),o},n.o=function(i,o){return Object.prototype.hasOwnProperty.call(i,o)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";var i=function(){function f(h,A){for(var g=0;g<A.length;g++){var m=A[g];m.enumerable=m.enumerable||!1,m.configurable=!0,"value"in m&&(m.writable=!0),Object.defineProperty(h,m.key,m)}}return function(h,A,g){return A&&f(h.prototype,A),g&&f(h,g),h}}(),o=n(1),r=o.webm,s=o.mp4,a=function(){return typeof navigator<"u"&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream},c=function(){return"wakeLock"in navigator},u=function(){function f(){var h=this;if(function(g,m){if(!(g instanceof m))throw new TypeError("Cannot call a class as a function")}(this,f),this.enabled=!1,c()){this._wakeLock=null;var A=function(){h._wakeLock!==null&&document.visibilityState==="visible"&&h.enable()};document.addEventListener("visibilitychange",A),document.addEventListener("fullscreenchange",A)}else a()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm",r),this._addSourceToVideo(this.noSleepVideo,"mp4",s),this.noSleepVideo.addEventListener("loadedmetadata",function(){h.noSleepVideo.duration<=1?h.noSleepVideo.setAttribute("loop",""):h.noSleepVideo.addEventListener("timeupdate",function(){h.noSleepVideo.currentTime>.5&&(h.noSleepVideo.currentTime=Math.random())})}))}return i(f,[{key:"_addSourceToVideo",value:function(h,A,g){var m=document.createElement("source");m.src=g,m.type="video/"+A,h.appendChild(m)}},{key:"enable",value:function(){var h=this;return c()?navigator.wakeLock.request("screen").then(function(A){h._wakeLock=A,h.enabled=!0,console.log("Wake Lock active."),h._wakeLock.addEventListener("release",function(){console.log("Wake Lock released.")})}).catch(function(A){throw h.enabled=!1,console.error(A.name+", "+A.message),A}):a()?(this.disable(),console.warn(` + NoSleep enabled for older iOS devices. This can interrupt + active or long-running network requests from completing successfully. + See https://github.com/richtr/NoSleep.js/issues/15 for more details. + `),this.noSleepTimer=window.setInterval(function(){document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))},15e3),this.enabled=!0,Promise.resolve()):this.noSleepVideo.play().then(function(A){return h.enabled=!0,A}).catch(function(A){throw h.enabled=!1,A})}},{key:"disable",value:function(){c()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):a()?this.noSleepTimer&&(console.warn(` + NoSleep now disabled for older iOS devices. + `),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}},{key:"isEnabled",get:function(){return this.enabled}}]),f}();e.exports=u},function(e,t,n){"use strict";e.exports={webm:"data:video/webm;base64,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",mp4:"data:video/mp4;base64,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"}}])})});var QRt={};Cte(QRt,{AlphaMode:()=>Xm,AlphaPipelineStage:()=>F1,AnchorPointDirect:()=>kM,AnchorPointIndirect:()=>UM,Animation:()=>$3,AnimationViewModel:()=>eU,Appearance:()=>po,ApproximateTerrainHeights:()=>Ti,ArcGISTiledElevationTerrainProvider:()=>n$,ArcGisBaseMapType:()=>Lh,ArcGisMapServerImageryProvider:()=>jp,ArcGisMapService:()=>Zu,ArcType:()=>cn,ArticulationStageType:()=>kc,AssociativeArray:()=>vt,Atmosphere:()=>e0,AtmospherePipelineStage:()=>g1,AttributeCompression:()=>On,AttributeType:()=>zt,AutoExposure:()=>uk,AutomaticUniforms:()=>rp,Axis:()=>fo,AxisAlignedBoundingBox:()=>S_,B3dmLoader:()=>t1,B3dmParser:()=>ZM,BaseLayerPicker:()=>nU,BaseLayerPickerViewModel:()=>tU,BatchTable:()=>cE,BatchTableHierarchy:()=>PE,BatchTexture:()=>Il,BatchTexturePipelineStage:()=>Q1,Billboard:()=>xo,BillboardCollection:()=>nf,BillboardGraphics:()=>Tc,BillboardLoadState:()=>ws,BillboardTexture:()=>eg,BillboardVisualizer:()=>SB,BingMapsGeocoderService:()=>o$,BingMapsImageryProvider:()=>oN,BingMapsStyle:()=>oT,BlendEquation:()=>lc,BlendFunction:()=>Oo,BlendOption:()=>Uo,BlendingState:()=>pn,BoundingRectangle:()=>Ye,BoundingSphere:()=>le,BoundingSphereState:()=>mt,BoundingVolumeSemantics:()=>KE,BoxEmitter:()=>K$,BoxGeometry:()=>cc,BoxGeometryUpdater:()=>DR,BoxGraphics:()=>pE,BoxOutlineGeometry:()=>ah,BrdfLutGenerator:()=>mQ,Buffer:()=>Ct,BufferLoader:()=>FE,BufferUsage:()=>Qe,CPUStylingPipelineStage:()=>z1,CallbackPositionProperty:()=>vR,CallbackProperty:()=>_h,Camera:()=>Co,CameraEventAggregator:()=>gk,CameraEventType:()=>Ji,CameraFlightPath:()=>pQ,Cartesian2:()=>U,Cartesian3:()=>d,Cartesian4:()=>se,CartesianRectangle:()=>hT,Cartographic:()=>Ae,CartographicGeocoderService:()=>s$,CatmullRomSpline:()=>a$,Cesium3DContentGroup:()=>vE,Cesium3DTile:()=>xd,Cesium3DTileBatchTable:()=>Ip,Cesium3DTileColorBlendMode:()=>ou,Cesium3DTileContent:()=>X$,Cesium3DTileContentFactory:()=>b0,Cesium3DTileContentState:()=>ir,Cesium3DTileContentType:()=>Js,Cesium3DTileFeature:()=>ha,Cesium3DTileFeatureTable:()=>Ph,Cesium3DTileOptimizationHint:()=>_d,Cesium3DTileOptimizations:()=>ZL,Cesium3DTilePass:()=>qo,Cesium3DTilePassState:()=>Vd,Cesium3DTilePointFeature:()=>tg,Cesium3DTileRefine:()=>tr,Cesium3DTileStyle:()=>xx,Cesium3DTileStyleEngine:()=>oO,Cesium3DTilesInspector:()=>cU,Cesium3DTilesInspectorViewModel:()=>aU,Cesium3DTilesVoxelProvider:()=>J$,Cesium3DTileset:()=>ks,Cesium3DTilesetBaseTraversal:()=>uO,Cesium3DTilesetCache:()=>tO,Cesium3DTilesetGraphics:()=>xE,Cesium3DTilesetHeatmap:()=>nO,Cesium3DTilesetMetadata:()=>N0,Cesium3DTilesetMostDetailedTraversal:()=>aO,Cesium3DTilesetSkipTraversal:()=>hO,Cesium3DTilesetStatistics:()=>Wh,Cesium3DTilesetTraversal:()=>Ca,Cesium3DTilesetVisualizer:()=>mO,CesiumInspector:()=>fU,CesiumInspectorViewModel:()=>uU,CesiumTerrainProvider:()=>px,CesiumWidget:()=>f3,Check:()=>Po,CheckerboardMaterialProperty:()=>UT,CircleEmitter:()=>T3,CircleGeometry:()=>h$,CircleOutlineGeometry:()=>m$,ClassificationModelDrawCommand:()=>eL,ClassificationPipelineStage:()=>k1,ClassificationPrimitive:()=>ab,ClassificationType:()=>Jn,ClearCommand:()=>Ci,ClippingPlane:()=>XE,ClippingPlaneCollection:()=>Fs,ClippingPolygon:()=>Qb,ClippingPolygonCollection:()=>wh,Clock:()=>Xh,ClockRange:()=>fs,ClockStep:()=>wo,ClockViewModel:()=>X3,CloudCollection:()=>iee,CloudType:()=>Xw,Color:()=>G,ColorBlendMode:()=>Qc,ColorGeometryInstanceAttribute:()=>$t,ColorMaterialProperty:()=>Xt,Command:()=>Yee,ComponentDatatype:()=>q,Composite3DTileContent:()=>UR,CompositeEntityCollection:()=>hq,CompositeMaterialProperty:()=>zT,CompositePositionProperty:()=>ja,CompositeProperty:()=>Wc,CompressedTextureBuffer:()=>LB,ComputeCommand:()=>Tl,ComputeEngine:()=>C2,ConditionsExpression:()=>E3,ConeEmitter:()=>ree,ConstantPositionProperty:()=>hl,ConstantProperty:()=>ci,ConstantSpline:()=>r1,ContentMetadata:()=>VL,Context:()=>DI,ContextLimits:()=>Yt,CoplanarPolygonGeometry:()=>ZO,CoplanarPolygonGeometryLibrary:()=>ug,CoplanarPolygonOutlineGeometry:()=>Id,CornerType:()=>ji,CorrelationGroup:()=>GM,CorridorGeometry:()=>G0,CorridorGeometryLibrary:()=>no,CorridorGeometryUpdater:()=>xO,CorridorGraphics:()=>_E,CorridorOutlineGeometry:()=>IO,Credit:()=>Bt,CreditDisplay:()=>CQ,CubeMap:()=>kr,CubeMapFace:()=>WB,CubicRealPolynomial:()=>ZC,CullFace:()=>Mi,CullingVolume:()=>Os,CumulusCloud:()=>Ff,CustomDataSource:()=>DO,CustomHeightmapTerrainProvider:()=>A$,CustomShader:()=>ix,CustomShaderMode:()=>Wp,CustomShaderPipelineStage:()=>K1,CustomShaderTranslucencyMode:()=>dy,CylinderGeometry:()=>vO,CylinderGeometryLibrary:()=>z0,CylinderGeometryUpdater:()=>RO,CylinderGraphics:()=>yE,CylinderOutlineGeometry:()=>PO,CzmlDataSource:()=>zO,DataSource:()=>us,DataSourceClock:()=>Jh,DataSourceCollection:()=>VO,DataSourceDisplay:()=>PF,DebugAppearance:()=>see,DebugCameraPrimitive:()=>RA,DebugInspector:()=>Tk,DebugModelMatrixPrimitive:()=>w3,DefaultProxy:()=>p$,DepthFunction:()=>Qa,DepthPlane:()=>SQ,DequantizationPipelineStage:()=>J1,DerivedCommand:()=>MA,DeveloperError:()=>me,DeviceOrientationCameraController:()=>wQ,DirectionalLight:()=>aee,DiscardEmptyTileImagePolicy:()=>rT,DiscardMissingTileImagePolicy:()=>nN,DistanceDisplayCondition:()=>Ut,DistanceDisplayConditionGeometryInstanceAttribute:()=>Kn,DoubleEndedPriorityQueue:()=>cx,DoublyLinkedList:()=>eO,DracoLoader:()=>Dp,DrawCommand:()=>nt,DynamicAtmosphereLightingType:()=>Np,DynamicEnvironmentMapManager:()=>Lp,DynamicGeometryBatch:()=>K0,DynamicGeometryUpdater:()=>_i,EarthOrientationParameters:()=>CB,EarthOrientationParametersSample:()=>A_,EasingFunction:()=>ms,EllipseGeometry:()=>kl,EllipseGeometryLibrary:()=>Cu,EllipseGeometryUpdater:()=>WO,EllipseGraphics:()=>CE,EllipseOutlineGeometry:()=>Af,Ellipsoid:()=>te,EllipsoidGeodesic:()=>up,EllipsoidGeometry:()=>Ia,EllipsoidGeometryUpdater:()=>YO,EllipsoidGraphics:()=>EE,EllipsoidOutlineGeometry:()=>af,EllipsoidPrimitive:()=>lQ,EllipsoidRhumbLine:()=>uc,EllipsoidSurfaceAppearance:()=>cee,EllipsoidTangentPlane:()=>ys,EllipsoidTerrainProvider:()=>DA,EllipsoidalOccluder:()=>Eg,Empty3DTileContent:()=>wT,EncodedCartesian3:()=>ei,Entity:()=>fr,EntityCluster:()=>lf,EntityCollection:()=>Ea,EntityView:()=>MF,Event:()=>_e,EventHelper:()=>Dr,Expression:()=>id,ExpressionNodeType:()=>It,ExtrapolationType:()=>ff,FeatureDetection:()=>Wt,FeatureIdPipelineStage:()=>fy,Fog:()=>BQ,ForEach:()=>Re,FrameRateMonitor:()=>v3,FrameState:()=>DQ,Framebuffer:()=>$r,FramebufferManager:()=>Di,Frozen:()=>V,FrustumCommands:()=>NQ,FrustumGeometry:()=>OI,FrustumOutlineGeometry:()=>xQ,Fullscreen:()=>Fr,FullscreenButton:()=>hU,FullscreenButtonViewModel:()=>dU,GaussianSplat3DTileContent:()=>ST,GaussianSplatPrimitive:()=>TT,GaussianSplatRenderResources:()=>kL,GaussianSplatSorter:()=>bT,GaussianSplatTextureGenerator:()=>QL,GeoJsonDataSource:()=>jy,GeoJsonLoader:()=>n1,GeocodeType:()=>wC,Geocoder:()=>AU,GeocoderService:()=>Ww,GeocoderViewModel:()=>mU,GeographicProjection:()=>Ui,GeographicTilingScheme:()=>so,Geometry:()=>ht,Geometry3DTileContent:()=>VR,GeometryAttribute:()=>De,GeometryAttributes:()=>yn,GeometryFactory:()=>g$,GeometryInstance:()=>Pt,GeometryInstanceAttribute:()=>Rc,GeometryOffsetAttribute:()=>hn,GeometryPipeline:()=>Vn,GeometryPipelineStage:()=>tN,GeometryType:()=>jf,GeometryUpdater:()=>yi,GeometryUpdaterSet:()=>sI,GeometryVisualizer:()=>yF,GetFeatureInfoFormat:()=>c0,Globe:()=>rQ,GlobeDepth:()=>LQ,GlobeSurfaceShaderSet:()=>q2,GlobeSurfaceTile:()=>Gd,GlobeSurfaceTileProvider:()=>X2,GlobeTranslucency:()=>J2,GlobeTranslucencyFramebuffer:()=>OQ,GlobeTranslucencyState:()=>vQ,GltfBufferViewLoader:()=>Cb,GltfDracoLoader:()=>Eb,GltfGpmLoader:()=>VM,GltfGpmLocal:()=>Ub,GltfImageLoader:()=>Ib,GltfIndexBufferLoader:()=>xb,GltfJsonLoader:()=>Tb,GltfLoader:()=>Xu,GltfLoaderUtil:()=>au,GltfMeshPrimitiveGpmLoader:()=>YM,GltfSpzLoader:()=>dM,GltfStructuralMetadataLoader:()=>FM,GltfTextureLoader:()=>Sb,GltfVertexBufferLoader:()=>wb,GoogleEarthEnterpriseImageryProvider:()=>uee,GoogleEarthEnterpriseMapsProvider:()=>aN,GoogleEarthEnterpriseMetadata:()=>a_,GoogleEarthEnterpriseTerrainData:()=>jw,GoogleEarthEnterpriseTerrainProvider:()=>T$,GoogleEarthEnterpriseTileInformation:()=>m3,GoogleGeocoderService:()=>w$,GoogleMaps:()=>_x,GpxDataSource:()=>UF,GregorianDate:()=>KA,GridImageryProvider:()=>fee,GridMaterialProperty:()=>ZT,GroundGeometryUpdater:()=>ti,GroundPolylineGeometry:()=>dE,GroundPolylinePrimitive:()=>hh,GroundPrimitive:()=>fl,GroupMetadata:()=>FT,HeadingPitchRange:()=>Md,HeadingPitchRoll:()=>rc,Heap:()=>AB,HeightReference:()=>Ze,HeightmapEncoding:()=>Qd,HeightmapTerrainData:()=>Ec,HeightmapTessellator:()=>hw,HermitePolynomialApproximation:()=>MO,HermiteSpline:()=>cy,HilbertOrder:()=>pb,HomeButton:()=>gU,HomeButtonViewModel:()=>pU,HorizontalOrigin:()=>Ri,I3SBuildingSceneLayerExplorer:()=>nte,I3SBuildingSceneLayerExplorerViewModel:()=>_U,I3SDataProvider:()=>Bm,I3SDecoder:()=>P3,I3SFeature:()=>R3,I3SField:()=>M3,I3SGeometry:()=>Jw,I3SLayer:()=>Bx,I3SNode:()=>Zw,I3SStatistics:()=>O3,I3SSublayer:()=>Q3,I3SSymbology:()=>L3,I3dmLoader:()=>o1,I3dmParser:()=>i1,ITwinData:()=>Aee,ITwinPlatform:()=>ra,Iau2000Orientation:()=>aQ,Iau2006XysData:()=>EB,Iau2006XysSample:()=>qC,IauOrientationAxes:()=>cQ,IauOrientationParameters:()=>sQ,ImageBasedLighting:()=>DE,ImageBasedLightingPipelineStage:()=>y1,ImageMaterialProperty:()=>P_,Imagery:()=>fT,ImageryConfiguration:()=>lL,ImageryCoverage:()=>mT,ImageryFlags:()=>pN,ImageryInput:()=>yN,ImageryLayer:()=>rs,ImageryLayerCollection:()=>Q0,ImageryLayerFeatureInfo:()=>Nh,ImageryPipelineStage:()=>CN,ImageryProvider:()=>Dl,ImageryState:()=>qn,Implicit3DTileContent:()=>Rb,ImplicitAvailabilityBitstream:()=>_b,ImplicitMetadataView:()=>yb,ImplicitSubdivisionScheme:()=>Is,ImplicitSubtree:()=>YE,ImplicitSubtreeCache:()=>x3,ImplicitSubtreeMetadata:()=>HR,ImplicitTileCoordinates:()=>F0,ImplicitTileset:()=>O0,IndexDatatype:()=>Oe,InfoBox:()=>CU,InfoBoxViewModel:()=>yU,InspectorShared:()=>Mu,InstanceAttributeSemantic:()=>bs,InstancingPipelineStage:()=>M1,InterpolationAlgorithm:()=>B$,InterpolationType:()=>Dh,Intersect:()=>tn,IntersectionTests:()=>hi,Intersections2D:()=>r_,Interval:()=>sc,InvertClassification:()=>bw,Ion:()=>Eh,IonGeocodeProviderType:()=>c_,IonGeocoderService:()=>yx,IonImageryProvider:()=>Yp,IonResource:()=>Hu,IonWorldImageryStyle:()=>qp,Iso8601:()=>je,JobScheduler:()=>PQ,JobType:()=>hc,JsonMetadataTable:()=>Op,JulianDate:()=>K,KTX2Transcoder:()=>OB,KeyboardEventModifier:()=>Da,KeyframeNode:()=>Do,KmlCamera:()=>GF,KmlDataSource:()=>xI,KmlLookAt:()=>f2,KmlTour:()=>d2,KmlTourFlyTo:()=>m2,KmlTourWait:()=>A2,Label:()=>yy,LabelCollection:()=>rA,LabelGraphics:()=>Ah,LabelStyle:()=>nr,LabelVisualizer:()=>CF,LagrangePolynomialApproximation:()=>NO,LeapSecond:()=>oo,Light:()=>pee,LightingModel:()=>nA,LightingPipelineStage:()=>IN,LinearApproximation:()=>H0,LinearSpline:()=>ay,ManagedArray:()=>El,MapMode2D:()=>wu,MapProjection:()=>P$,MapboxImageryProvider:()=>cN,MapboxStyleImageryProvider:()=>gee,MappedPositions:()=>_N,Material:()=>ro,MaterialAppearance:()=>Eo,MaterialPipelineStage:()=>bN,MaterialProperty:()=>ur,Math:()=>D,Matrix2:()=>Gi,Matrix3:()=>J,Matrix4:()=>N,Megatexture:()=>Rw,MeshPrimitiveGpmLocal:()=>jM,MetadataClass:()=>Th,MetadataClassProperty:()=>Ym,MetadataComponentType:()=>Gt,MetadataEntity:()=>Yn,MetadataEnum:()=>AM,MetadataEnumValue:()=>mM,MetadataPicking:()=>RQ,MetadataPickingPipelineStage:()=>ef,MetadataPipelineStage:()=>ld,MetadataSchema:()=>qu,MetadataSchemaLoader:()=>Db,MetadataSemantic:()=>qE,MetadataTable:()=>od,MetadataTableProperty:()=>jR,MetadataType:()=>pt,MipmapHint:()=>Kf,Model:()=>Fh,Model3DTileContent:()=>tf,ModelAlphaOptions:()=>h0,ModelAnimation:()=>l1,ModelAnimationChannel:()=>c1,ModelAnimationCollection:()=>u1,ModelAnimationLoop:()=>cu,ModelAnimationState:()=>Rh,ModelArticulation:()=>E1,ModelArticulationStage:()=>C1,ModelClippingPlanesPipelineStage:()=>b1,ModelClippingPolygonsPipelineStage:()=>w1,ModelColorPipelineStage:()=>uy,ModelComponents:()=>xn,ModelDrawCommand:()=>tL,ModelDrawCommands:()=>oL,ModelFeature:()=>f1,ModelFeatureTable:()=>h1,ModelGraphics:()=>Ap,ModelImagery:()=>uL,ModelImageryMapping:()=>u0,ModelLightingOptions:()=>JN,ModelMatrixUpdateStage:()=>N1,ModelNode:()=>B1,ModelPrimitiveImagery:()=>f0,ModelReader:()=>gN,ModelRenderResources:()=>HN,ModelRuntimeNode:()=>O1,ModelRuntimePrimitive:()=>UN,ModelSceneGraph:()=>rL,ModelSilhouettePipelineStage:()=>YN,ModelSkin:()=>GN,ModelSplitterPipelineStage:()=>KN,ModelStatistics:()=>sL,ModelType:()=>wr,ModelUtility:()=>Ot,ModelVisualizer:()=>EF,Moon:()=>fQ,MorphTargetsPipelineStage:()=>SN,MorphWeightSpline:()=>R$,MortonOrder:()=>Ty,Multiple3DTileContent:()=>jL,MultisampleFramebuffer:()=>qM,NavigationHelpButton:()=>IU,NavigationHelpButtonViewModel:()=>EU,NearFarScalar:()=>jt,NeverTileDiscardPolicy:()=>yee,NodeRenderResources:()=>XN,NodeStatisticsPipelineStage:()=>L1,NodeTransformationProperty:()=>IE,OIT:()=>FQ,Occluder:()=>dQ,OffsetGeometryInstanceAttribute:()=>uo,OpenCageGeocoderService:()=>N$,OpenStreetMapImageryProvider:()=>u_,OrderedGroundPrimitiveCollection:()=>HO,OrientedBoundingBox:()=>Fn,OrthographicFrustum:()=>An,OrthographicOffCenterFrustum:()=>es,Packable:()=>L$,PackableForInterpolation:()=>O$,Particle:()=>tB,ParticleBurst:()=>Eee,ParticleEmitter:()=>Iee,ParticleSystem:()=>xee,Pass:()=>Be,PassState:()=>Xc,PathGraphics:()=>pp,PathVisualizer:()=>xF,PeliasGeocoderService:()=>p3,PerInstanceColorAppearance:()=>gn,PerformanceDisplay:()=>qg,PerformanceWatchdog:()=>bU,PerformanceWatchdogViewModel:()=>xU,PerspectiveFrustum:()=>ki,PerspectiveOffCenterFrustum:()=>Vl,PickDepth:()=>MQ,PickDepthFramebuffer:()=>kQ,PickFramebuffer:()=>GQ,PickedMetadataInfo:()=>$k,Picking:()=>WQ,PickingPipelineStage:()=>wN,PinBuilder:()=>Og,PixelDatatype:()=>Ve,PixelFormat:()=>$e,Plane:()=>mn,PlaneGeometry:()=>qO,PlaneGeometryUpdater:()=>XO,PlaneGraphics:()=>IR,PlaneOutlineGeometry:()=>KO,PntsLoader:()=>cL,PntsParser:()=>A0,PointCloud:()=>l3,PointCloudEyeDomeLighting:()=>Qp,PointCloudShading:()=>Zm,PointCloudStylingPipelineStage:()=>DN,PointGraphics:()=>bE,PointPrimitive:()=>ea,PointPrimitiveCollection:()=>YT,PointVisualizer:()=>TF,PolygonGeometry:()=>Mp,PolygonGeometryLibrary:()=>$n,PolygonGeometryUpdater:()=>eF,PolygonGraphics:()=>ph,PolygonHierarchy:()=>fc,PolygonOutlineGeometry:()=>$O,PolygonPipeline:()=>Ii,Polyline:()=>md,PolylineArrowMaterialProperty:()=>eS,PolylineCollection:()=>Uh,PolylineColorAppearance:()=>Cs,PolylineDashMaterialProperty:()=>nS,PolylineGeometry:()=>Lg,PolylineGeometryUpdater:()=>BF,PolylineGlowMaterialProperty:()=>oS,PolylineGraphics:()=>Mc,PolylineMaterialAppearance:()=>ka,PolylineOutlineMaterialProperty:()=>My,PolylinePipeline:()=>Wi,PolylineVisualizer:()=>vF,PolylineVolumeGeometry:()=>iF,PolylineVolumeGeometryLibrary:()=>jh,PolylineVolumeGeometryUpdater:()=>aF,PolylineVolumeGraphics:()=>TE,PolylineVolumeOutlineGeometry:()=>sF,PositionProperty:()=>mh,PositionPropertyArray:()=>Tg,PostProcessStage:()=>So,PostProcessStageCollection:()=>hk,PostProcessStageComposite:()=>Du,PostProcessStageLibrary:()=>Df,PostProcessStageSampleMode:()=>Bf,PostProcessStageTextureCache:()=>qI,PpeMetadata:()=>WM,PpeSource:()=>Vee,PpeTexture:()=>HM,Primitive:()=>Qn,PrimitiveCollection:()=>Ql,PrimitiveLoadPlan:()=>i0,PrimitiveOutlineGenerator:()=>n0,PrimitiveOutlinePipelineStage:()=>RN,PrimitivePipeline:()=>lE,PrimitiveRenderResources:()=>ZN,PrimitiveState:()=>zr,PrimitiveStatisticsPipelineStage:()=>MN,PrimitiveType:()=>Me,ProjectionPicker:()=>SU,ProjectionPickerViewModel:()=>TU,Property:()=>j,PropertyArray:()=>sS,PropertyAttribute:()=>t0,PropertyAttributeProperty:()=>MM,PropertyBag:()=>Al,PropertyTable:()=>Sl,PropertyTexture:()=>Fp,PropertyTextureProperty:()=>RM,ProviderViewModel:()=>Ds,Proxy:()=>F$,QuadraticRealPolynomial:()=>cl,QuadtreeOccluders:()=>Z2,QuadtreePrimitive:()=>oQ,QuadtreeTile:()=>$2,QuadtreeTileLoadState:()=>Ta,QuadtreeTileProvider:()=>bee,QuantizedMeshTerrainData:()=>Ax,QuarticRealPolynomial:()=>kB,Quaternion:()=>Le,QuaternionSpline:()=>a1,Queue:()=>ey,Ray:()=>In,Rectangle:()=>ae,RectangleCollisionChecker:()=>cI,RectangleGeometry:()=>eI,RectangleGeometryLibrary:()=>Zs,RectangleGeometryUpdater:()=>cF,RectangleGraphics:()=>gh,RectangleOutlineGeometry:()=>w0,ReferenceFrame:()=>$i,ReferenceProperty:()=>Sg,RenderState:()=>Ue,Renderbuffer:()=>Ju,RenderbufferFormat:()=>Bl,Request:()=>sr,RequestErrorEvent:()=>Rm,RequestScheduler:()=>Bc,RequestState:()=>fi,RequestType:()=>Ms,Resource:()=>we,ResourceCache:()=>Fi,ResourceCacheKey:()=>xl,ResourceCacheStatistics:()=>_M,ResourceLoader:()=>Hi,ResourceLoaderState:()=>dt,Rotation:()=>wd,RuntimeError:()=>ce,S2Cell:()=>Tp,SDFSettings:()=>_a,SampledPositionProperty:()=>qa,SampledProperty:()=>hf,Sampler:()=>on,ScaledPositionProperty:()=>pA,Scene:()=>t3,SceneFramebuffer:()=>GI,SceneMode:()=>ie,SceneMode2DPipelineStage:()=>NN,SceneModePicker:()=>BU,SceneModePickerViewModel:()=>wU,SceneTransforms:()=>eo,SceneTransitioner:()=>pk,ScreenSpaceCameraController:()=>Ck,ScreenSpaceEventHandler:()=>Pf,ScreenSpaceEventType:()=>Dn,SelectedFeatureIdPipelineStage:()=>hy,SelectionIndicator:()=>PU,SelectionIndicatorViewModel:()=>vU,SensorVolumePortionToDisplay:()=>uS,ShaderBuilder:()=>Xp,ShaderCache:()=>E2,ShaderDestination:()=>pe,ShaderFunction:()=>VN,ShaderProgram:()=>an,ShaderSource:()=>He,ShaderStruct:()=>zN,ShadowMap:()=>Jg,ShadowMapShader:()=>OA,ShadowMode:()=>Bn,ShadowVolumeAppearance:()=>Gu,SharedContext:()=>T2,ShowGeometryInstanceAttribute:()=>wn,Simon1994PlanetaryPositions:()=>lC,SimplePolylineGeometry:()=>Q$,SingleTileImageryProvider:()=>lN,SkinningPipelineStage:()=>ON,SkyAtmosphere:()=>n3,SkyBox:()=>i3,SpatialNode:()=>Xk,Spdcf:()=>zM,SpecularEnvironmentCubeMap:()=>Ch,SphereEmitter:()=>See,SphereGeometry:()=>k$,SphereOutlineGeometry:()=>dg,Spherical:()=>LO,Spline:()=>_o,SplitDirection:()=>br,Splitter:()=>Ow,StaticGeometryColorBatch:()=>Pd,StaticGeometryPerMaterialBatch:()=>Rd,StaticGroundGeometryColorBatch:()=>vS,StaticGroundGeometryPerMaterialBatch:()=>_F,StaticGroundPolylinePerMaterialBatch:()=>DF,StaticOutlineGeometryBatch:()=>MS,StencilConstants:()=>Kt,StencilFunction:()=>Zn,StencilOperation:()=>_t,SteppedSpline:()=>s1,Stereographic:()=>Fc,StorageType:()=>iy,StripeMaterialProperty:()=>cS,StripeOrientation:()=>Zh,StructuralMetadata:()=>Aa,StyleCommandsNeeded:()=>Mh,StyleExpression:()=>wee,Sun:()=>s3,SunLight:()=>Hg,SunPostProcess:()=>xk,SupportedImageFormats:()=>QM,SvgPathBindingHandler:()=>q3,TaskProcessor:()=>di,Terrain:()=>z3,TerrainData:()=>Am,TerrainEncoding:()=>Zc,TerrainFillMesh:()=>gw,TerrainMesh:()=>Ud,TerrainOffsetProperty:()=>SE,TerrainProvider:()=>Ss,TerrainQuantization:()=>ba,TerrainState:()=>To,Texture:()=>Mt,Texture3D:()=>$X,TextureAtlas:()=>p0,TextureCache:()=>I2,TextureMagnificationFilter:()=>mi,TextureManager:()=>Wk,TextureMinificationFilter:()=>Zt,TexturePacker:()=>yT,TextureUniform:()=>Gee,TextureWrap:()=>Tn,TileAvailability:()=>xm,TileBoundingRegion:()=>sf,TileBoundingS2Cell:()=>XL,TileBoundingSphere:()=>hg,TileBoundingVolume:()=>Bee,TileCoordinatesImageryProvider:()=>H3,TileDiscardPolicy:()=>vee,TileEdge:()=>Sn,TileImagery:()=>dT,TileMapServiceImageryProvider:()=>Ay,TileMetadata:()=>HL,TileOrientedBoundingBox:()=>gu,TileProviderError:()=>Qo,TileReplacementQueue:()=>eQ,TileSelectionResult:()=>ai,TileState:()=>Pee,Tileset3DTileContent:()=>hL,TilesetMetadata:()=>JL,TilesetPipelineStage:()=>m1,TilingScheme:()=>U$,TimeConstants:()=>ri,TimeDynamicImagery:()=>l0,TimeDynamicPointCloud:()=>Qw,TimeInterval:()=>Pn,TimeIntervalCollection:()=>ls,TimeIntervalCollectionPositionProperty:()=>wg,TimeIntervalCollectionProperty:()=>Bg,TimeStandard:()=>ni,Timeline:()=>NU,TimelineHighlightRange:()=>RU,TimelineTrack:()=>MU,Tipsify:()=>UB,ToggleButtonViewModel:()=>MC,Tonemapper:()=>$g,TrackingReferenceFrame:()=>lp,Transforms:()=>kt,TranslationRotationScale:()=>R_,TranslucentTileClassification:()=>zQ,TridiagonalSystemSolver:()=>qb,TrustedServers:()=>zx,TweenCollection:()=>ZI,UniformState:()=>b2,UniformType:()=>vw,UrlTemplateImageryProvider:()=>Ac,VERSION:()=>FRt,VRButton:()=>FU,VRButtonViewModel:()=>OU,VRTheWorldTerrainProvider:()=>G$,VaryingType:()=>zee,Vector3DTileBatch:()=>Wm,Vector3DTileClampedPolylines:()=>LL,Vector3DTileContent:()=>FL,Vector3DTileGeometry:()=>bp,Vector3DTilePoints:()=>BL,Vector3DTilePolygons:()=>DL,Vector3DTilePolylines:()=>I0,Vector3DTilePrimitive:()=>NE,VelocityOrientationProperty:()=>FO,VelocityVectorProperty:()=>Dg,VertexArray:()=>li,VertexArrayFacade:()=>Zp,VertexAttributeSemantic:()=>at,VertexFormat:()=>Pe,VerticalExaggeration:()=>Ur,VerticalExaggerationPipelineStage:()=>QN,VerticalOrigin:()=>zn,VideoSynchronizer:()=>z$,View:()=>HI,Viewer:()=>lte,ViewportQuad:()=>Ree,Visibility:()=>Mr,Visualizer:()=>kX,VoxelBoxShape:()=>rx,VoxelCell:()=>Sk,VoxelContent:()=>ox,VoxelCylinderShape:()=>sx,VoxelEllipsoidShape:()=>ax,VoxelInspector:()=>kU,VoxelInspectorViewModel:()=>QU,VoxelMetadataOrder:()=>Yd,VoxelPrimitive:()=>IC,VoxelProvider:()=>Nee,VoxelRenderResources:()=>Gk,VoxelShape:()=>Lee,VoxelShapeType:()=>ec,VoxelTraversal:()=>Jk,VulkanConstants:()=>V$,WallGeometry:()=>uF,WallGeometryLibrary:()=>tI,WallGeometryUpdater:()=>hF,WallGraphics:()=>gp,WallOutlineGeometry:()=>dF,WebGLConstants:()=>ee,WebMapServiceImageryProvider:()=>fN,WebMapTileServiceImageryProvider:()=>hN,WebMercatorProjection:()=>zi,WebMercatorTilingScheme:()=>Ts,WindingOrder:()=>Ls,WireframeIndexGenerator:()=>AT,WireframePipelineStage:()=>kN,_shadersAcesTonemappingStage:()=>jQ,_shadersAdditiveBlend:()=>Ek,_shadersAdjustTranslucentFS:()=>cw,_shadersAllMaterialAppearanceFS:()=>DB,_shadersAllMaterialAppearanceVS:()=>vB,_shadersAmbientOcclusionGenerate:()=>YQ,_shadersAmbientOcclusionModulate:()=>qQ,_shadersAspectRampMaterial:()=>YB,_shadersAtmosphereCommon:()=>Bh,_shadersAtmosphereStageFS:()=>A1,_shadersAtmosphereStageVS:()=>p1,_shadersBasicMaterialAppearanceFS:()=>PB,_shadersBasicMaterialAppearanceVS:()=>RB,_shadersBillboardCollectionFS:()=>mL,_shadersBillboardCollectionVS:()=>AL,_shadersBlackAndWhite:()=>KQ,_shadersBloomComposite:()=>XQ,_shadersBrdfLutGeneratorFS:()=>w2,_shadersBrightPass:()=>Ik,_shadersBrightness:()=>JQ,_shadersBumpMapMaterial:()=>qB,_shadersCPUStylingStageFS:()=>G1,_shadersCPUStylingStageVS:()=>U1,_shadersCheckerboardMaterial:()=>KB,_shadersCloudCollectionFS:()=>B2,_shadersCloudCollectionVS:()=>D2,_shadersCloudNoiseFS:()=>v2,_shadersCloudNoiseVS:()=>P2,_shadersCompareAndPackTranslucentDepth:()=>R2,_shadersCompositeOITFS:()=>M2,_shadersCompositeTranslucentClassification:()=>VI,_shadersComputeIrradianceFS:()=>TM,_shadersComputeRadianceMapFS:()=>SM,_shadersContrastBias:()=>ZQ,_shadersConvolveSpecularMapFS:()=>wM,_shadersConvolveSpecularMapVS:()=>BM,_shadersCustomShaderStageFS:()=>H1,_shadersCustomShaderStageVS:()=>V1,_shadersCzmBuiltins:()=>aE,_shadersDepthOfField:()=>$Q,_shadersDepthPlaneFS:()=>N2,_shadersDepthPlaneVS:()=>L2,_shadersDepthView:()=>ek,_shadersDepthViewPacked:()=>Uee,_shadersDotMaterial:()=>XB,_shadersEdgeDetection:()=>tk,_shadersElevationBandMaterial:()=>JB,_shadersElevationContourMaterial:()=>ZB,_shadersElevationRampMaterial:()=>$B,_shadersEllipsoidFS:()=>lw,_shadersEllipsoidSurfaceAppearanceFS:()=>B3,_shadersEllipsoidSurfaceAppearanceVS:()=>D3,_shadersEllipsoidVS:()=>uw,_shadersFXAA:()=>ok,_shadersFXAA3_11:()=>O2,_shadersFadeMaterial:()=>eD,_shadersFeatureIdStageFS:()=>W1,_shadersFeatureIdStageVS:()=>j1,_shadersFilmicTonemapping:()=>nk,_shadersGaussianBlur1D:()=>_C,_shadersGeometryStageFS:()=>Z1,_shadersGeometryStageVS:()=>$1,_shadersGlobeFS:()=>F2,_shadersGlobeVS:()=>Q2,_shadersGridMaterial:()=>tD,_shadersGroundAtmosphere:()=>fw,_shadersHSBToRGB:()=>mv,_shadersHSLToRGB:()=>Av,_shadersImageBasedLightingStageFS:()=>_1,_shadersInstancingStageCommon:()=>D1,_shadersInstancingStageVS:()=>v1,_shadersIntersectBox:()=>Mk,_shadersIntersectClippingPlanes:()=>Rk,_shadersIntersectCylinder:()=>Nk,_shadersIntersectDepth:()=>Pk,_shadersIntersectEllipsoid:()=>Lk,_shadersIntersectLongitude:()=>Dw,_shadersIntersection:()=>tx,_shadersIntersectionUtils:()=>vk,_shadersLegacyInstancingStageVS:()=>P1,_shadersLensFlare:()=>rk,_shadersLightingStageFS:()=>EN,_shadersMaterialStageFS:()=>xN,_shadersMegatexture:()=>Uk,_shadersMetadataStageFS:()=>Y1,_shadersMetadataStageVS:()=>q1,_shadersModelClippingPlanesStageFS:()=>x1,_shadersModelClippingPolygonsStageFS:()=>S1,_shadersModelClippingPolygonsStageVS:()=>T1,_shadersModelColorStageFS:()=>I1,_shadersModelFS:()=>iL,_shadersModelSilhouetteStageFS:()=>WN,_shadersModelSilhouetteStageVS:()=>jN,_shadersModelSplitterStageFS:()=>qN,_shadersModelVS:()=>nL,_shadersModifiedReinhardTonemapping:()=>sk,_shadersMorphTargetsStageVS:()=>TN,_shadersNightVision:()=>ak,_shadersNormalMapMaterial:()=>nD,_shadersOctree:()=>kk,_shadersPassThrough:()=>Bu,_shadersPassThroughDepth:()=>AC,_shadersPbrNeutralTonemapping:()=>ik,_shadersPerInstanceColorAppearanceFS:()=>hD,_shadersPerInstanceColorAppearanceVS:()=>mD,_shadersPerInstanceFlatColorAppearanceFS:()=>rE,_shadersPerInstanceFlatColorAppearanceVS:()=>AD,_shadersPointCloudEyeDomeLighting:()=>XM,_shadersPointCloudStylingStageVS:()=>BN,_shadersPointPrimitiveCollectionFS:()=>Ry,_shadersPointPrimitiveCollectionVS:()=>bO,_shadersPolygonSignedDistanceFS:()=>xM,_shadersPolylineArrowMaterial:()=>iD,_shadersPolylineColorAppearanceVS:()=>lR,_shadersPolylineCommon:()=>zu,_shadersPolylineDashMaterial:()=>oD,_shadersPolylineFS:()=>mE,_shadersPolylineGlowMaterial:()=>rD,_shadersPolylineMaterialAppearanceVS:()=>uR,_shadersPolylineOutlineMaterial:()=>sD,_shadersPolylineShadowVolumeFS:()=>rR,_shadersPolylineShadowVolumeMorphFS:()=>sR,_shadersPolylineShadowVolumeMorphVS:()=>aR,_shadersPolylineShadowVolumeVS:()=>cR,_shadersPolylineVS:()=>IL,_shadersPrimitiveGaussianSplatFS:()=>GL,_shadersPrimitiveGaussianSplatVS:()=>UL,_shadersPrimitiveOutlineStageFS:()=>PN,_shadersPrimitiveOutlineStageVS:()=>vN,_shadersRGBToHSB:()=>pv,_shadersRGBToHSL:()=>gv,_shadersRGBToXYZ:()=>_v,_shadersReinhardTonemapping:()=>ck,_shadersReprojectWebMercatorFS:()=>mN,_shadersReprojectWebMercatorVS:()=>AN,_shadersRimLightingMaterial:()=>aD,_shadersSelectedFeatureIdStageCommon:()=>tT,_shadersShadowVolumeAppearanceFS:()=>rb,_shadersShadowVolumeAppearanceVS:()=>JP,_shadersShadowVolumeFS:()=>B_,_shadersSilhouette:()=>lk,_shadersSkinningStageVS:()=>LN,_shadersSkyAtmosphereCommon:()=>dw,_shadersSkyAtmosphereFS:()=>k2,_shadersSkyAtmosphereVS:()=>U2,_shadersSkyBoxFS:()=>G2,_shadersSkyBoxVS:()=>z2,_shadersSlopeRampMaterial:()=>cD,_shadersStripeMaterial:()=>lD,_shadersSunFS:()=>V2,_shadersSunTextureFS:()=>H2,_shadersSunVS:()=>W2,_shadersTexturedMaterialAppearanceFS:()=>MB,_shadersTexturedMaterialAppearanceVS:()=>NB,_shadersVector3DTileClampedPolylinesFS:()=>ML,_shadersVector3DTileClampedPolylinesVS:()=>RL,_shadersVector3DTilePolylinesVS:()=>vL,_shadersVectorTileVS:()=>Ab,_shadersVerticalExaggerationStageVS:()=>FN,_shadersViewportQuadFS:()=>j2,_shadersViewportQuadVS:()=>wI,_shadersVoxelFS:()=>Bk,_shadersVoxelUtils:()=>wk,_shadersVoxelVS:()=>Dk,_shadersWater:()=>fD,_shadersWaterMaskMaterial:()=>uD,_shadersXYZToRGB:()=>yv,_shadersacesTonemapping:()=>Cv,_shadersalphaWeight:()=>Ev,_shadersantialias:()=>Iv,_shadersapplyHSBShift:()=>xv,_shadersapproximateSphericalCoordinates:()=>bv,_shadersapproximateTanh:()=>Tv,_shadersbackFacing:()=>Sv,_shadersbranchFreeTernary:()=>wv,_shaderscascadeColor:()=>Bv,_shaderscascadeDistance:()=>Dv,_shaderscascadeMatrix:()=>vv,_shaderscascadeWeights:()=>Pv,_shadersclipPolygons:()=>Rv,_shaderscolumbusViewMorph:()=>Mv,_shaderscomputeAtmosphereColor:()=>Nv,_shaderscomputeGroundAtmosphereScattering:()=>Lv,_shaderscomputePosition:()=>Ov,_shaderscomputeScattering:()=>Fv,_shadersconvertUvToBox:()=>Ok,_shadersconvertUvToCylinder:()=>Fk,_shadersconvertUvToEllipsoid:()=>Qk,_shaderscosineAndSine:()=>Qv,_shadersdecompressTextureCoordinates:()=>kv,_shadersdegreesPerRadian:()=>ED,_shadersdepthClamp:()=>Uv,_shadersdepthRange:()=>ID,_shadersdepthRangeStruct:()=>sv,_shaderseastNorthUpToEyeCoordinates:()=>Gv,_shadersellipsoidContainsPoint:()=>zv,_shadersellipsoidTextureCoordinates:()=>Vv,_shadersepsilon1:()=>xD,_shadersepsilon2:()=>bD,_shadersepsilon3:()=>TD,_shadersepsilon4:()=>SD,_shadersepsilon5:()=>wD,_shadersepsilon6:()=>BD,_shadersepsilon7:()=>DD,_shadersequalsEpsilon:()=>Hv,_shaderseyeOffset:()=>Wv,_shaderseyeToWindowCoordinates:()=>jv,_shadersfastApproximateAtan:()=>Yv,_shadersfog:()=>qv,_shadersgammaCorrect:()=>Kv,_shadersgeodeticSurfaceNormal:()=>Xv,_shadersgetDefaultMaterial:()=>Jv,_shadersgetDynamicAtmosphereLightDirection:()=>Zv,_shadersgetLambertDiffuse:()=>$v,_shadersgetSpecular:()=>eP,_shadersgetWaterNoise:()=>tP,_shadershue:()=>nP,_shadersinfinity:()=>vD,_shadersinverseGamma:()=>iP,_shadersisEmpty:()=>oP,_shadersisFull:()=>rP,_shaderslatitudeToWebMercatorFraction:()=>sP,_shaderslineDistance:()=>aP,_shaderslinearToSrgb:()=>cP,_shadersluminance:()=>lP,_shadersmaterial:()=>av,_shadersmaterialInput:()=>cv,_shadersmaximumComponent:()=>uP,_shadersmetersPerPixel:()=>fP,_shadersmodelMaterial:()=>lv,_shadersmodelToWindowCoordinates:()=>dP,_shadersmodelVertexOutput:()=>uv,_shadersmultiplyWithColorBalance:()=>hP,_shadersnearFarScalar:()=>mP,_shadersoctDecode:()=>AP,_shadersoneOverPi:()=>PD,_shadersoneOverTwoPi:()=>RD,_shaderspackDepth:()=>pP,_shaderspassCesium3DTile:()=>MD,_shaderspassCesium3DTileClassification:()=>ND,_shaderspassCesium3DTileClassificationIgnoreShow:()=>LD,_shaderspassClassification:()=>OD,_shaderspassCompute:()=>FD,_shaderspassEnvironment:()=>QD,_shaderspassGaussianSplats:()=>kD,_shaderspassGlobe:()=>UD,_shaderspassOpaque:()=>GD,_shaderspassOverlay:()=>zD,_shaderspassTerrainClassification:()=>VD,_shaderspassTranslucent:()=>HD,_shaderspassVoxels:()=>WD,_shaderspbrLighting:()=>gP,_shaderspbrNeutralTonemapping:()=>_P,_shadersphong:()=>yP,_shaderspi:()=>jD,_shaderspiOverFour:()=>YD,_shaderspiOverSix:()=>qD,_shaderspiOverThree:()=>KD,_shaderspiOverTwo:()=>XD,_shadersplaneDistance:()=>CP,_shaderspointAlongRay:()=>EP,_shadersradiansPerDegree:()=>JD,_shadersray:()=>fv,_shadersrayEllipsoidIntersectionInterval:()=>IP,_shadersraySegment:()=>dv,_shadersraySphereIntersectionInterval:()=>xP,_shadersreadDepth:()=>bP,_shadersreadNonPerspective:()=>TP,_shadersreverseLogDepth:()=>SP,_shadersround:()=>wP,_shaderssaturation:()=>BP,_shaderssceneMode2D:()=>ZD,_shaderssceneMode3D:()=>$D,_shaderssceneModeColumbusView:()=>ev,_shaderssceneModeMorphing:()=>tv,_shadersshadowDepthCompare:()=>DP,_shadersshadowParameters:()=>hv,_shadersshadowVisibility:()=>vP,_shaderssignNotZero:()=>PP,_shaderssolarRadius:()=>nv,_shaderssphericalHarmonics:()=>RP,_shaderssrgbToLinear:()=>MP,_shaderstangentToEyeSpaceMatrix:()=>NP,_shaderstextureCube:()=>LP,_shadersthreePiOver2:()=>iv,_shaderstransformPlane:()=>OP,_shaderstranslateRelativeToEye:()=>FP,_shaderstranslucentPhong:()=>QP,_shaderstranspose:()=>kP,_shaderstwoPi:()=>ov,_shadersunpackClippingExtents:()=>UP,_shadersunpackDepth:()=>GP,_shadersunpackFloat:()=>zP,_shadersunpackUint:()=>VP,_shadersvalueTransform:()=>HP,_shadersvertexLogDepth:()=>WP,_shaderswebMercatorMaxLatitude:()=>rv,_shaderswindowToEyeCoordinates:()=>jP,_shaderswriteDepthClamp:()=>YP,_shaderswriteLogDepth:()=>qP,_shaderswriteNonPerspective:()=>KP,addAllToArray:()=>si,addBuffer:()=>rM,addDefaults:()=>JR,addExtensionsRequired:()=>nM,addExtensionsUsed:()=>rd,addPipelineExtras:()=>W_,addToArray:()=>Ys,appendForwardSlash:()=>dB,arrayRemoveDuplicates:()=>Mo,barycentricCoordinates:()=>JC,binarySearch:()=>Wo,buildModuleUrl:()=>fn,buildVoxelDrawCommands:()=>Vk,clone:()=>ze,combine:()=>Tt,computeFlyToLocationForRectangle:()=>RI,createBillboardPointCallback:()=>_0,createCommand:()=>Rn,createDefaultImageryProviderViewModels:()=>iU,createDefaultTerrainProviderViewModels:()=>oU,createElevationBandMaterial:()=>Oee,createGooglePhotorealistic3DTileset:()=>Fee,createGuid:()=>Xn,createMaterialPropertyDescriptor:()=>jo,createOsmBuildingsAsync:()=>Qee,createPropertyDescriptor:()=>de,createRawPropertyDescriptor:()=>ml,createTangentSpaceDebugPrimitive:()=>kee,createTaskProcessorWorker:()=>Hee,createUniform:()=>yD,createUniformArray:()=>CD,createWorldBathymetryAsync:()=>_3,createWorldImageryAsync:()=>Kp,createWorldTerrainAsync:()=>Ex,decodeGoogleEarthEnterpriseData:()=>y3,decodeVectorPolylinePositions:()=>OL,defaultValue:()=>W$,defer:()=>Xl,defined:()=>l,demodernizeShader:()=>XP,deprecationWarning:()=>Tr,destroyObject:()=>ue,exportKml:()=>HX,findAccessorMinMax:()=>VE,findContentMetadata:()=>T0,findGroupMetadata:()=>S0,findTileMetadata:()=>WL,forEachTextureInMaterial:()=>bb,formatError:()=>eA,freezeRenderState:()=>k6,getAbsoluteUri:()=>vm,getAccessorByteStride:()=>su,getBaseUri:()=>hB,getBinaryAccessor:()=>Wu,getClipAndStyleCode:()=>a3,getClippingFunction:()=>jg,getComponentReader:()=>Pp,getElement:()=>kn,getExtensionFromUri:()=>UC,getFilenameFromUri:()=>xg,getImageFromTypedArray:()=>Hk,getImagePixels:()=>oh,getJsonFromTypedArray:()=>dr,getMagic:()=>Ih,getMetadataClassProperty:()=>Zk,getMetadataProperty:()=>e3,getStringFromTypedArray:()=>iu,getTimestamp:()=>Li,hasExtension:()=>Ei,heightReferenceOnEntityPropertyChanged:()=>_p,isBitSet:()=>il,isBlobUri:()=>GC,isCrossOriginUrl:()=>g_,isDataUri:()=>XA,isLeapYear:()=>ih,knockout:()=>Ie,knockout_3_5_1:()=>vx,knockout_es5:()=>Y3,loadAndExecuteScript:()=>zC,loadCubeMap:()=>S2,loadImageFromTypedArray:()=>UE,loadKTX2:()=>$l,mergeSort:()=>vA,moveTechniqueRenderStates:()=>tM,moveTechniquesToExtension:()=>iM,numberOfComponentsForType:()=>Yu,objectToQuery:()=>VC,oneTimeWarning:()=>yt,parseBatchTable:()=>Gp,parseFeatureMetadataLegacy:()=>OM,parseGlb:()=>$R,parseResponseHeaders:()=>mB,parseStructuralMetadata:()=>LM,pickModel:()=>_T,pointInsideTriangle:()=>j$,preprocess3DTileContent:()=>lg,processVoxelProperties:()=>zk,queryToObject:()=>Fu,readAccessorPacked:()=>sM,removeExtension:()=>HE,removeExtensionsRequired:()=>ZR,removeExtensionsUsed:()=>zE,removePipelineExtras:()=>eM,removeUnusedElements:()=>oM,resizeImageToNextPowerOfTwo:()=>q_,sampleTerrain:()=>Y2,sampleTerrainMostDetailed:()=>PI,scaleToGeodeticSurface:()=>kC,srgbToLinear:()=>Ix,subdivideArray:()=>ZP,subscribeAndEvaluate:()=>tc,updateAccessorComponentTypes:()=>aM,updateVersion:()=>cM,usesExtension:()=>Sr,viewerCesium3DTilesInspectorMixin:()=>ute,viewerCesiumInspectorMixin:()=>fte,viewerDragDropMixin:()=>hte,viewerPerformanceWatchdogMixin:()=>mte,viewerVoxelInspectorMixin:()=>pte,webGLConstantToGlslType:()=>Y$,wrapFunction:()=>C3,writeTextToCanvas:()=>C0});module.exports=nh(QRt);var a9={};a9.EMPTY_OBJECT=Object.freeze({});a9.EMPTY_ARRAY=Object.freeze([]);var V=a9;function rBe(e){return e!=null}var l=rBe;function FC(e){this.name="DeveloperError",this.message=e;let t;try{throw new Error}catch(n){t=n.stack}this.stack=t}l(Object.create)&&(FC.prototype=Object.create(Error.prototype),FC.prototype.constructor=FC);FC.prototype.toString=function(){let e=`${this.name}: ${this.message}`;return l(this.stack)&&(e+=` +${this.stack.toString()}`),e};FC.throwInstantiationError=function(){throw new FC("This function defines an interface and should not be called directly.")};var me=FC;var js={};js.typeOf={};function sBe(e){return`${e} is required, actual value was undefined`}function Lx(e,t,n){return`Expected ${n} to be typeof ${t}, actual typeof was ${e}`}js.defined=function(e,t){if(!l(t))throw new me(sBe(e))};js.typeOf.func=function(e,t){if(typeof t!="function")throw new me(Lx(typeof t,"function",e))};js.typeOf.string=function(e,t){if(typeof t!="string")throw new me(Lx(typeof t,"string",e))};js.typeOf.number=function(e,t){if(typeof t!="number")throw new me(Lx(typeof t,"number",e))};js.typeOf.number.lessThan=function(e,t,n){if(js.typeOf.number(e,t),t>=n)throw new me(`Expected ${e} to be less than ${n}, actual value was ${t}`)};js.typeOf.number.lessThanOrEquals=function(e,t,n){if(js.typeOf.number(e,t),t>n)throw new me(`Expected ${e} to be less than or equal to ${n}, actual value was ${t}`)};js.typeOf.number.greaterThan=function(e,t,n){if(js.typeOf.number(e,t),t<=n)throw new me(`Expected ${e} to be greater than ${n}, actual value was ${t}`)};js.typeOf.number.greaterThanOrEquals=function(e,t,n){if(js.typeOf.number(e,t),t<n)throw new me(`Expected ${e} to be greater than or equal to ${n}, actual value was ${t}`)};js.typeOf.object=function(e,t){if(typeof t!="object")throw new me(Lx(typeof t,"object",e))};js.typeOf.bool=function(e,t){if(typeof t!="boolean")throw new me(Lx(typeof t,"boolean",e))};js.typeOf.bigint=function(e,t){if(typeof t!="bigint")throw new me(Lx(typeof t,"bigint",e))};js.typeOf.number.equals=function(e,t,n,i){if(js.typeOf.number(e,n),js.typeOf.number(t,i),n!==i)throw new me(`${e} must be equal to ${t}, the actual values are ${n} and ${i}`)};var Po=js;function uB(){this._listeners=[],this._scopes=[],this._toRemove=[],this._insideRaiseEvent=!1}Object.defineProperties(uB.prototype,{numberOfListeners:{get:function(){return this._listeners.length-this._toRemove.length}}});uB.prototype.addEventListener=function(e,t){this._listeners.push(e),this._scopes.push(t);let n=this;return function(){n.removeEventListener(e,t)}};uB.prototype.removeEventListener=function(e,t){let n=this._listeners,i=this._scopes,o=-1;for(let r=0;r<n.length;r++)if(n[r]===e&&i[r]===t){o=r;break}return o!==-1?(this._insideRaiseEvent?(this._toRemove.push(o),n[o]=void 0,i[o]=void 0):(n.splice(o,1),i.splice(o,1)),!0):!1};function aBe(e,t){return t-e}uB.prototype.raiseEvent=function(){this._insideRaiseEvent=!0;let e,t=this._listeners,n=this._scopes,i=t.length;for(e=0;e<i;e++){let r=t[e];l(r)&&t[e].apply(n[e],arguments)}let o=this._toRemove;if(i=o.length,i>0){for(o.sort(aBe),e=0;e<i;e++){let r=o[e];t.splice(r,1),n.splice(r,1)}o.length=0}this._insideRaiseEvent=!1};var _e=uB;function m_(e){this._value=void 0,this._hasClone=!1,this._hasEquals=!1,this._definitionChanged=new _e,this.setValue(e)}Object.defineProperties(m_.prototype,{isConstant:{value:!0},definitionChanged:{get:function(){return this._definitionChanged}}});m_.prototype.getValue=function(e,t){return this._hasClone?this._value.clone(t):this._value};m_.prototype.setValue=function(e){let t=this._value;if(t!==e){let n=l(e),i=n&&typeof e.clone=="function",o=n&&typeof e.equals=="function";(!o||!e.equals(t))&&(this._hasClone=i,this._hasEquals=o,this._value=i?e.clone(this._value):e,this._definitionChanged.raiseEvent(this))}};m_.prototype.equals=function(e){return this===e||e instanceof m_&&(!this._hasEquals&&this._value===e._value||this._hasEquals&&this._value.equals(e._value))};m_.prototype.valueOf=function(){return this._value};m_.prototype.toString=function(){return String(this._value)};var ci=m_;function cBe(e,t,n,i,o){return{configurable:i,get:function(){return this[t]},set:function(r){let s=this[t],a=this[n];l(a)&&(a(),this[n]=void 0),r!==void 0&&(!l(r)||!l(r.getValue))&&l(o)&&(r=o(r)),s!==r&&(this[t]=r,this._definitionChanged.raiseEvent(this,e,r,s)),l(r)&&l(r.definitionChanged)&&(this[n]=r.definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this,e,r,r)},this))}}}function lBe(e){return new ci(e)}function uBe(e,t,n){return cBe(e,`_${e.toString()}`,`_${e.toString()}Subscription`,t??!1,n??lBe)}var de=uBe;function fB(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._image=void 0,this._imageSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._pixelOffset=void 0,this._pixelOffsetSubscription=void 0,this._eyeOffset=void 0,this._eyeOffsetSubscription=void 0,this._horizontalOrigin=void 0,this._horizontalOriginSubscription=void 0,this._verticalOrigin=void 0,this._verticalOriginSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._alignedAxis=void 0,this._alignedAxisSubscription=void 0,this._sizeInMeters=void 0,this._sizeInMetersSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._pixelOffsetScaleByDistance=void 0,this._pixelOffsetScaleByDistanceSubscription=void 0,this._imageSubRegion=void 0,this._imageSubRegionSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this._splitDirection=void 0,this._splitDirectionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(fB.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),image:de("image"),scale:de("scale"),pixelOffset:de("pixelOffset"),eyeOffset:de("eyeOffset"),horizontalOrigin:de("horizontalOrigin"),verticalOrigin:de("verticalOrigin"),heightReference:de("heightReference"),color:de("color"),rotation:de("rotation"),alignedAxis:de("alignedAxis"),sizeInMeters:de("sizeInMeters"),width:de("width"),height:de("height"),scaleByDistance:de("scaleByDistance"),translucencyByDistance:de("translucencyByDistance"),pixelOffsetScaleByDistance:de("pixelOffsetScaleByDistance"),imageSubRegion:de("imageSubRegion"),distanceDisplayCondition:de("distanceDisplayCondition"),disableDepthTestDistance:de("disableDepthTestDistance"),splitDirection:de("splitDirection")});fB.prototype.clone=function(e){return l(e)?(e.show=this._show,e.image=this._image,e.scale=this._scale,e.pixelOffset=this._pixelOffset,e.eyeOffset=this._eyeOffset,e.horizontalOrigin=this._horizontalOrigin,e.verticalOrigin=this._verticalOrigin,e.heightReference=this._heightReference,e.color=this._color,e.rotation=this._rotation,e.alignedAxis=this._alignedAxis,e.sizeInMeters=this._sizeInMeters,e.width=this._width,e.height=this._height,e.scaleByDistance=this._scaleByDistance,e.translucencyByDistance=this._translucencyByDistance,e.pixelOffsetScaleByDistance=this._pixelOffsetScaleByDistance,e.imageSubRegion=this._imageSubRegion,e.distanceDisplayCondition=this._distanceDisplayCondition,e.disableDepthTestDistance=this._disableDepthTestDistance,e.splitDirection=this._splitDirection,e):new fB(this)};fB.prototype.merge=function(e){this.show=this._show??e.show,this.image=this._image??e.image,this.scale=this._scale??e.scale,this.pixelOffset=this._pixelOffset??e.pixelOffset,this.eyeOffset=this._eyeOffset??e.eyeOffset,this.horizontalOrigin=this._horizontalOrigin??e.horizontalOrigin,this.verticalOrigin=this._verticalOrigin??e.verticalOrigin,this.heightReference=this._heightReference??e.heightReference,this.color=this._color??e.color,this.rotation=this._rotation??e.rotation,this.alignedAxis=this._alignedAxis??e.alignedAxis,this.sizeInMeters=this._sizeInMeters??e.sizeInMeters,this.width=this._width??e.width,this.height=this._height??e.height,this.scaleByDistance=this._scaleByDistance??e.scaleByDistance,this.translucencyByDistance=this._translucencyByDistance??e.translucencyByDistance,this.pixelOffsetScaleByDistance=this._pixelOffsetScaleByDistance??e.pixelOffsetScaleByDistance,this.imageSubRegion=this._imageSubRegion??e.imageSubRegion,this.distanceDisplayCondition=this._distanceDisplayCondition??e.distanceDisplayCondition,this.disableDepthTestDistance=this._disableDepthTestDistance??e.disableDepthTestDistance,this.splitDirection=this.splitDirection??e.splitDirection};var Tc=fB;function QC(){this._array=[],this._hash={}}Object.defineProperties(QC.prototype,{length:{get:function(){return this._array.length}},values:{get:function(){return this._array}}});QC.prototype.contains=function(e){return l(this._hash[e])};QC.prototype.set=function(e,t){let n=this._hash[e];t!==n&&(this.remove(e),this._hash[e]=t,this._array.push(t))};QC.prototype.get=function(e){return this._hash[e]};QC.prototype.remove=function(e){let t=this._hash[e],n=l(t);if(n){let i=this._array;i.splice(i.indexOf(t),1),delete this._hash[e]}return n};QC.prototype.removeAll=function(){let e=this._array;e.length>0&&(this._hash={},e.length=0)};var vt=QC;var c9=xr(VU(),1);var ft={};ft.EPSILON1=.1;ft.EPSILON2=.01;ft.EPSILON3=.001;ft.EPSILON4=1e-4;ft.EPSILON5=1e-5;ft.EPSILON6=1e-6;ft.EPSILON7=1e-7;ft.EPSILON8=1e-8;ft.EPSILON9=1e-9;ft.EPSILON10=1e-10;ft.EPSILON11=1e-11;ft.EPSILON12=1e-12;ft.EPSILON13=1e-13;ft.EPSILON14=1e-14;ft.EPSILON15=1e-15;ft.EPSILON16=1e-16;ft.EPSILON17=1e-17;ft.EPSILON18=1e-18;ft.EPSILON19=1e-19;ft.EPSILON20=1e-20;ft.EPSILON21=1e-21;ft.GRAVITATIONALPARAMETER=3986004418e5;ft.SOLAR_RADIUS=6955e5;ft.LUNAR_RADIUS=1737400;ft.SIXTY_FOUR_KILOBYTES=64*1024;ft.FOUR_GIGABYTES=4*1024*1024*1024;ft.sign=Math.sign??function(t){return t=+t,t===0||t!==t?t:t>0?1:-1};ft.signNotZero=function(e){return e<0?-1:1};ft.toSNorm=function(e,t){return t=t??255,Math.round((ft.clamp(e,-1,1)*.5+.5)*t)};ft.fromSNorm=function(e,t){return t=t??255,ft.clamp(e,0,t)/t*2-1};ft.normalize=function(e,t,n){return n=Math.max(n-t,0),n===0?0:ft.clamp((e-t)/n,0,1)};ft.sinh=Math.sinh??function(t){return(Math.exp(t)-Math.exp(-t))/2};ft.cosh=Math.cosh??function(t){return(Math.exp(t)+Math.exp(-t))/2};ft.lerp=function(e,t,n){return(1-n)*e+n*t};ft.PI=Math.PI;ft.ONE_OVER_PI=1/Math.PI;ft.PI_OVER_TWO=Math.PI/2;ft.PI_OVER_THREE=Math.PI/3;ft.PI_OVER_FOUR=Math.PI/4;ft.PI_OVER_SIX=Math.PI/6;ft.THREE_PI_OVER_TWO=3*Math.PI/2;ft.TWO_PI=2*Math.PI;ft.ONE_OVER_TWO_PI=1/(2*Math.PI);ft.RADIANS_PER_DEGREE=Math.PI/180;ft.DEGREES_PER_RADIAN=180/Math.PI;ft.RADIANS_PER_ARCSECOND=ft.RADIANS_PER_DEGREE/3600;ft.toRadians=function(e){return e*ft.RADIANS_PER_DEGREE};ft.toDegrees=function(e){return e*ft.DEGREES_PER_RADIAN};ft.convertLongitudeRange=function(e){let t=ft.TWO_PI,n=e-Math.floor(e/t)*t;return n<-Math.PI?n+t:n>=Math.PI?n-t:n};ft.clampToLatitudeRange=function(e){return ft.clamp(e,-1*ft.PI_OVER_TWO,ft.PI_OVER_TWO)};ft.negativePiToPi=function(e){return e>=-ft.PI&&e<=ft.PI?e:ft.zeroToTwoPi(e+ft.PI)-ft.PI};ft.zeroToTwoPi=function(e){if(e>=0&&e<=ft.TWO_PI)return e;let t=ft.mod(e,ft.TWO_PI);return Math.abs(t)<ft.EPSILON14&&Math.abs(e)>ft.EPSILON14?ft.TWO_PI:t};ft.mod=function(e,t){return ft.sign(e)===ft.sign(t)&&Math.abs(e)<Math.abs(t)?e:(e%t+t)%t};ft.equalsEpsilon=function(e,t,n,i){n=n??0,i=i??n;let o=Math.abs(e-t);return o<=i||o<=n*Math.max(Math.abs(e),Math.abs(t))};ft.lessThan=function(e,t,n){return e-t<-n};ft.lessThanOrEquals=function(e,t,n){return e-t<n};ft.greaterThan=function(e,t,n){return e-t>n};ft.greaterThanOrEquals=function(e,t,n){return e-t>-n};var HU=[1];ft.factorial=function(e){let t=HU.length;if(e>=t){let n=HU[t-1];for(let i=t;i<=e;i++){let o=n*i;HU.push(o),n=o}}return HU[e]};ft.incrementWrap=function(e,t,n){return n=n??0,++e,e>t&&(e=n),e};ft.isPowerOfTwo=function(e){return e!==0&&(e&e-1)===0};ft.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e};ft.previousPowerOfTwo=function(e){return e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e|=e>>32,e=(e>>>0)-(e>>>1),e};ft.clamp=function(e,t,n){return e<t?t:e>n?n:e};var xte=new c9.default;ft.setRandomNumberSeed=function(e){xte=new c9.default(e)};ft.nextRandomNumber=function(){return xte.random()};ft.randomBetween=function(e,t){return ft.nextRandomNumber()*(t-e)+e};ft.acosClamped=function(e){return Math.acos(ft.clamp(e,-1,1))};ft.asinClamped=function(e){return Math.asin(ft.clamp(e,-1,1))};ft.chordLength=function(e,t){return 2*t*Math.sin(e*.5)};ft.logBase=function(e,t){return Math.log(e)/Math.log(t)};ft.cbrt=Math.cbrt??function(t){let n=Math.pow(Math.abs(t),.3333333333333333);return t<0?-n:n};ft.log2=Math.log2??function(t){return Math.log(t)*Math.LOG2E};ft.fog=function(e,t){let n=e*t;return 1-Math.exp(-(n*n))};ft.fastApproximateAtan=function(e){return e*(-.1784*Math.abs(e)-.0663*e*e+1.0301)};ft.fastApproximateAtan2=function(e,t){let n,i=Math.abs(e);n=Math.abs(t);let o=Math.max(i,n);n=Math.min(i,n);let r=n/o;return i=ft.fastApproximateAtan(r),i=Math.abs(t)>Math.abs(e)?ft.PI_OVER_TWO-i:i,i=e<0?ft.PI-i:i,i=t<0?-i:i,i};var D=ft;function Ht(e,t){this.x=e??0,this.y=t??0}Ht.fromElements=function(e,t,n){return l(n)?(n.x=e,n.y=t,n):new Ht(e,t)};Ht.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t):new Ht(e.x,e.y)};Ht.fromCartesian3=Ht.clone;Ht.fromCartesian4=Ht.clone;Ht.packedLength=2;Ht.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n]=e.y,t};Ht.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Ht),n.x=e[t++],n.y=e[t],n};Ht.packArray=function(e,t){let n=e.length,i=n*2;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)Ht.pack(e[o],t,o*2);return t};Ht.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/2:t=new Array(n/2);for(let i=0;i<n;i+=2){let o=i/2;t[o]=Ht.unpack(e,i,t[o])}return t};Ht.fromArray=Ht.unpack;Ht.maximumComponent=function(e){return Math.max(e.x,e.y)};Ht.minimumComponent=function(e){return Math.min(e.x,e.y)};Ht.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n};Ht.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n};Ht.clamp=function(e,t,n,i){let o=D.clamp(e.x,t.x,n.x),r=D.clamp(e.y,t.y,n.y);return i.x=o,i.y=r,i};Ht.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y};Ht.magnitude=function(e){return Math.sqrt(Ht.magnitudeSquared(e))};var WU=new Ht;Ht.distance=function(e,t){return Ht.subtract(e,t,WU),Ht.magnitude(WU)};Ht.distanceSquared=function(e,t){return Ht.subtract(e,t,WU),Ht.magnitudeSquared(WU)};Ht.normalize=function(e,t){let n=Ht.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t};Ht.dot=function(e,t){return e.x*t.x+e.y*t.y};Ht.cross=function(e,t){return e.x*t.y-e.y*t.x};Ht.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n};Ht.divideComponents=function(e,t,n){return n.x=e.x/t.x,n.y=e.y/t.y,n};Ht.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n};Ht.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n};Ht.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n};Ht.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n};Ht.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t};Ht.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var bte=new Ht;Ht.lerp=function(e,t,n,i){return Ht.multiplyByScalar(t,n,bte),i=Ht.multiplyByScalar(e,1-n,i),Ht.add(bte,i,i)};var Tte=new Ht,Ste=new Ht;Ht.angleBetween=function(e,t){return Ht.normalize(e,Tte),Ht.normalize(t,Ste),D.acosClamped(Ht.dot(Tte,Ste))};var fBe=new Ht;Ht.mostOrthogonalAxis=function(e,t){let n=Ht.normalize(e,fBe);return Ht.abs(n,n),n.x<=n.y?t=Ht.clone(Ht.UNIT_X,t):t=Ht.clone(Ht.UNIT_Y,t),t};Ht.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y};Ht.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]};Ht.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&D.equalsEpsilon(e.x,t.x,n,i)&&D.equalsEpsilon(e.y,t.y,n,i)};Ht.ZERO=Object.freeze(new Ht(0,0));Ht.ONE=Object.freeze(new Ht(1,1));Ht.UNIT_X=Object.freeze(new Ht(1,0));Ht.UNIT_Y=Object.freeze(new Ht(0,1));Ht.prototype.clone=function(e){return Ht.clone(this,e)};Ht.prototype.equals=function(e){return Ht.equals(this,e)};Ht.prototype.equalsEpsilon=function(e,t,n){return Ht.equalsEpsilon(this,e,t,n)};Ht.prototype.toString=function(){return`(${this.x}, ${this.y})`};var U=Ht;function ot(e,t,n){this.x=e??0,this.y=t??0,this.z=n??0}ot.fromSpherical=function(e,t){l(t)||(t=new ot);let n=e.clock,i=e.cone,o=e.magnitude??1,r=o*Math.sin(i);return t.x=r*Math.cos(n),t.y=r*Math.sin(n),t.z=o*Math.cos(i),t};ot.fromElements=function(e,t,n,i){return l(i)?(i.x=e,i.y=t,i.z=n,i):new ot(e,t,n)};ot.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t):new ot(e.x,e.y,e.z)};ot.fromCartesian4=ot.clone;ot.packedLength=3;ot.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n]=e.z,t};ot.unpack=function(e,t,n){return t=t??0,l(n)||(n=new ot),n.x=e[t++],n.y=e[t++],n.z=e[t],n};ot.packArray=function(e,t){let n=e.length,i=n*3;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)ot.pack(e[o],t,o*3);return t};ot.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/3:t=new Array(n/3);for(let i=0;i<n;i+=3){let o=i/3;t[o]=ot.unpack(e,i,t[o])}return t};ot.fromArray=ot.unpack;ot.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)};ot.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)};ot.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n};ot.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n};ot.clamp=function(e,t,n,i){let o=D.clamp(e.x,t.x,n.x),r=D.clamp(e.y,t.y,n.y),s=D.clamp(e.z,t.z,n.z);return i.x=o,i.y=r,i.z=s,i};ot.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z};ot.magnitude=function(e){return Math.sqrt(ot.magnitudeSquared(e))};var YU=new ot;ot.distance=function(e,t){return ot.subtract(e,t,YU),ot.magnitude(YU)};ot.distanceSquared=function(e,t){return ot.subtract(e,t,YU),ot.magnitudeSquared(YU)};ot.normalize=function(e,t){let n=ot.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t};ot.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z};ot.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n};ot.divideComponents=function(e,t,n){return n.x=e.x/t.x,n.y=e.y/t.y,n.z=e.z/t.z,n};ot.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n};ot.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n};ot.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n};ot.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n};ot.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t};ot.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var wte=new ot;ot.lerp=function(e,t,n,i){return ot.multiplyByScalar(t,n,wte),i=ot.multiplyByScalar(e,1-n,i),ot.add(wte,i,i)};var jU=new ot,l9=new ot;ot.angleBetween=function(e,t){ot.normalize(e,jU),ot.normalize(t,l9);let n=ot.dot(jU,l9),i=ot.magnitude(ot.cross(jU,l9,jU));return Math.atan2(i,n)};var dBe=new ot;ot.mostOrthogonalAxis=function(e,t){let n=ot.normalize(e,dBe);return ot.abs(n,n),n.x<=n.y?n.x<=n.z?t=ot.clone(ot.UNIT_X,t):t=ot.clone(ot.UNIT_Z,t):n.y<=n.z?t=ot.clone(ot.UNIT_Y,t):t=ot.clone(ot.UNIT_Z,t),t};ot.projectVector=function(e,t,n){let i=ot.dot(e,t)/ot.dot(t,t);return ot.multiplyByScalar(t,i,n)};ot.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z};ot.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]};ot.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&D.equalsEpsilon(e.x,t.x,n,i)&&D.equalsEpsilon(e.y,t.y,n,i)&&D.equalsEpsilon(e.z,t.z,n,i)};ot.cross=function(e,t,n){let i=e.x,o=e.y,r=e.z,s=t.x,a=t.y,c=t.z,u=o*c-r*a,f=r*s-i*c,h=i*a-o*s;return n.x=u,n.y=f,n.z=h,n};ot.midpoint=function(e,t,n){return n.x=(e.x+t.x)*.5,n.y=(e.y+t.y)*.5,n.z=(e.z+t.z)*.5,n};ot.fromDegrees=function(e,t,n,i,o){return e=D.toRadians(e),t=D.toRadians(t),ot.fromRadians(e,t,n,i,o)};var zf=new ot,Ox=new ot;ot._ellipsoidRadiiSquared=new ot(6378137*6378137,6378137*6378137,6356752314245179e-9*6356752314245179e-9);ot.fromRadians=function(e,t,n,i,o){n=n??0;let r=l(i)?i.radiiSquared:ot._ellipsoidRadiiSquared,s=Math.cos(t);zf.x=s*Math.cos(e),zf.y=s*Math.sin(e),zf.z=Math.sin(t),zf=ot.normalize(zf,zf),ot.multiplyComponents(r,zf,Ox);let a=Math.sqrt(ot.dot(zf,Ox));return Ox=ot.divideByScalar(Ox,a,Ox),zf=ot.multiplyByScalar(zf,n,zf),l(o)||(o=new ot),ot.add(Ox,zf,o)};ot.fromDegreesArray=function(e,t,n){let i=e.length;l(n)?n.length=i/2:n=new Array(i/2);for(let o=0;o<i;o+=2){let r=e[o],s=e[o+1],a=o/2;n[a]=ot.fromDegrees(r,s,0,t,n[a])}return n};ot.fromRadiansArray=function(e,t,n){let i=e.length;l(n)?n.length=i/2:n=new Array(i/2);for(let o=0;o<i;o+=2){let r=e[o],s=e[o+1],a=o/2;n[a]=ot.fromRadians(r,s,0,t,n[a])}return n};ot.fromDegreesArrayHeights=function(e,t,n){let i=e.length;l(n)?n.length=i/3:n=new Array(i/3);for(let o=0;o<i;o+=3){let r=e[o],s=e[o+1],a=e[o+2],c=o/3;n[c]=ot.fromDegrees(r,s,a,t,n[c])}return n};ot.fromRadiansArrayHeights=function(e,t,n){let i=e.length;l(n)?n.length=i/3:n=new Array(i/3);for(let o=0;o<i;o+=3){let r=e[o],s=e[o+1],a=e[o+2],c=o/3;n[c]=ot.fromRadians(r,s,a,t,n[c])}return n};ot.ZERO=Object.freeze(new ot(0,0,0));ot.ONE=Object.freeze(new ot(1,1,1));ot.UNIT_X=Object.freeze(new ot(1,0,0));ot.UNIT_Y=Object.freeze(new ot(0,1,0));ot.UNIT_Z=Object.freeze(new ot(0,0,1));ot.prototype.clone=function(e){return ot.clone(this,e)};ot.prototype.equals=function(e){return ot.equals(this,e)};ot.prototype.equalsEpsilon=function(e,t,n){return ot.equalsEpsilon(this,e,t,n)};ot.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z})`};var d=ot;var hBe=new d,mBe=new d;function ABe(e,t,n,i,o){let r=e.x,s=e.y,a=e.z,c=t.x,u=t.y,f=t.z,h=r*r*c*c,A=s*s*u*u,g=a*a*f*f,m=h+A+g,_=Math.sqrt(1/m),y=d.multiplyByScalar(e,_,hBe);if(m<i)return isFinite(_)?d.clone(y,o):void 0;let C=n.x,E=n.y,I=n.z,b=mBe;b.x=y.x*C*2,b.y=y.y*E*2,b.z=y.z*I*2;let S=(1-_)*d.magnitude(e)/(.5*d.magnitude(b)),B=0,v,P,M,L,p,x,T,w,R,O,k;do{S-=B,M=1/(1+S*C),L=1/(1+S*E),p=1/(1+S*I),x=M*M,T=L*L,w=p*p,R=x*M,O=T*L,k=w*p,v=h*x+A*T+g*w-1,P=h*R*C+A*O*E+g*k*I;let Q=-2*P;B=v/Q}while(Math.abs(v)>D.EPSILON12);return l(o)?(o.x=r*M,o.y=s*L,o.z=a*p,o):new d(r*M,s*L,a*p)}var kC=ABe;function Zo(e,t,n){this.longitude=e??0,this.latitude=t??0,this.height=n??0}Zo.fromRadians=function(e,t,n,i){return n=n??0,l(i)?(i.longitude=e,i.latitude=t,i.height=n,i):new Zo(e,t,n)};Zo.fromDegrees=function(e,t,n,i){return e=D.toRadians(e),t=D.toRadians(t),Zo.fromRadians(e,t,n,i)};var pBe=new d,gBe=new d,_Be=new d;Zo._ellipsoidOneOverRadii=new d(1/6378137,1/6378137,1/6356752314245179e-9);Zo._ellipsoidOneOverRadiiSquared=new d(1/(6378137*6378137),1/(6378137*6378137),1/(6356752314245179e-9*6356752314245179e-9));Zo._ellipsoidCenterToleranceSquared=D.EPSILON1;Zo.fromCartesian=function(e,t,n){let i=l(t)?t.oneOverRadii:Zo._ellipsoidOneOverRadii,o=l(t)?t.oneOverRadiiSquared:Zo._ellipsoidOneOverRadiiSquared,r=l(t)?t._centerToleranceSquared:Zo._ellipsoidCenterToleranceSquared,s=kC(e,i,o,r,gBe);if(!l(s))return;let a=d.multiplyComponents(s,o,pBe);a=d.normalize(a,a);let c=d.subtract(e,s,_Be),u=Math.atan2(a.y,a.x),f=Math.asin(a.z),h=D.sign(d.dot(c,e))*d.magnitude(c);return l(n)?(n.longitude=u,n.latitude=f,n.height=h,n):new Zo(u,f,h)};Zo.toCartesian=function(e,t,n){return d.fromRadians(e.longitude,e.latitude,e.height,t,n)};Zo.clone=function(e,t){if(l(e))return l(t)?(t.longitude=e.longitude,t.latitude=e.latitude,t.height=e.height,t):new Zo(e.longitude,e.latitude,e.height)};Zo.equals=function(e,t){return e===t||l(e)&&l(t)&&e.longitude===t.longitude&&e.latitude===t.latitude&&e.height===t.height};Zo.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.longitude-t.longitude)<=n&&Math.abs(e.latitude-t.latitude)<=n&&Math.abs(e.height-t.height)<=n};Zo.ZERO=Object.freeze(new Zo(0,0,0));Zo.prototype.clone=function(e){return Zo.clone(this,e)};Zo.prototype.equals=function(e){return Zo.equals(this,e)};Zo.prototype.equalsEpsilon=function(e,t){return Zo.equalsEpsilon(this,e,t)};Zo.prototype.toString=function(){return`(${this.longitude}, ${this.latitude}, ${this.height})`};var Ae=Zo;function Dte(e,t,n,i){t=t??0,n=n??0,i=i??0,e._radii=new d(t,n,i),e._radiiSquared=new d(t*t,n*n,i*i),e._radiiToTheFourth=new d(t*t*t*t,n*n*n*n,i*i*i*i),e._oneOverRadii=new d(t===0?0:1/t,n===0?0:1/n,i===0?0:1/i),e._oneOverRadiiSquared=new d(t===0?0:1/(t*t),n===0?0:1/(n*n),i===0?0:1/(i*i)),e._minimumRadius=Math.min(t,n,i),e._maximumRadius=Math.max(t,n,i),e._centerToleranceSquared=D.EPSILON1,e._radiiSquared.z!==0&&(e._squaredXOverSquaredZ=e._radiiSquared.x/e._radiiSquared.z)}function Pi(e,t,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,this._squaredXOverSquaredZ=void 0,Dte(this,e,t,n)}Object.defineProperties(Pi.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}});Pi.clone=function(e,t){if(!l(e))return;let n=e._radii;return l(t)?(d.clone(n,t._radii),d.clone(e._radiiSquared,t._radiiSquared),d.clone(e._radiiToTheFourth,t._radiiToTheFourth),d.clone(e._oneOverRadii,t._oneOverRadii),d.clone(e._oneOverRadiiSquared,t._oneOverRadiiSquared),t._minimumRadius=e._minimumRadius,t._maximumRadius=e._maximumRadius,t._centerToleranceSquared=e._centerToleranceSquared,t):new Pi(n.x,n.y,n.z)};Pi.fromCartesian3=function(e,t){return l(t)||(t=new Pi),l(e)&&Dte(t,e.x,e.y,e.z),t};Pi.WGS84=Object.freeze(new Pi(6378137,6378137,6356752314245179e-9));Pi.UNIT_SPHERE=Object.freeze(new Pi(1,1,1));Pi.MOON=Object.freeze(new Pi(D.LUNAR_RADIUS,D.LUNAR_RADIUS,D.LUNAR_RADIUS));Pi._default=Pi.WGS84;Object.defineProperties(Pi,{default:{get:function(){return Pi._default},set:function(e){Pi._default=e,d._ellipsoidRadiiSquared=e.radiiSquared,Ae._ellipsoidOneOverRadii=e.oneOverRadii,Ae._ellipsoidOneOverRadiiSquared=e.oneOverRadiiSquared,Ae._ellipsoidCenterToleranceSquared=e._centerToleranceSquared}}});Pi.prototype.clone=function(e){return Pi.clone(this,e)};Pi.packedLength=d.packedLength;Pi.pack=function(e,t,n){return n=n??0,d.pack(e._radii,t,n),t};Pi.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t);return Pi.fromCartesian3(i,n)};Pi.prototype.geocentricSurfaceNormal=d.normalize;Pi.prototype.geodeticSurfaceNormalCartographic=function(e,t){let n=e.longitude,i=e.latitude,o=Math.cos(i),r=o*Math.cos(n),s=o*Math.sin(n),a=Math.sin(i);return l(t)||(t=new d),t.x=r,t.y=s,t.z=a,d.normalize(t,t)};Pi.prototype.geodeticSurfaceNormal=function(e,t){if(!d.equalsEpsilon(e,d.ZERO,D.EPSILON14))return l(t)||(t=new d),t=d.multiplyComponents(e,this._oneOverRadiiSquared,t),d.normalize(t,t)};var yBe=new d,CBe=new d;Pi.prototype.cartographicToCartesian=function(e,t){let n=yBe,i=CBe;this.geodeticSurfaceNormalCartographic(e,n),d.multiplyComponents(this._radiiSquared,n,i);let o=Math.sqrt(d.dot(n,i));return d.divideByScalar(i,o,i),d.multiplyByScalar(n,e.height,n),l(t)||(t=new d),d.add(i,n,t)};Pi.prototype.cartographicArrayToCartesianArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;i++)t[i]=this.cartographicToCartesian(e[i],t[i]);return t};var EBe=new d,IBe=new d,xBe=new d;Pi.prototype.cartesianToCartographic=function(e,t){let n=this.scaleToGeodeticSurface(e,IBe);if(!l(n))return;let i=this.geodeticSurfaceNormal(n,EBe),o=d.subtract(e,n,xBe),r=Math.atan2(i.y,i.x),s=Math.asin(i.z),a=D.sign(d.dot(o,e))*d.magnitude(o);return l(t)?(t.longitude=r,t.latitude=s,t.height=a,t):new Ae(r,s,a)};Pi.prototype.cartesianArrayToCartographicArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;++i)t[i]=this.cartesianToCartographic(e[i],t[i]);return t};Pi.prototype.scaleToGeodeticSurface=function(e,t){return kC(e,this._oneOverRadii,this._oneOverRadiiSquared,this._centerToleranceSquared,t)};Pi.prototype.scaleToGeocentricSurface=function(e,t){l(t)||(t=new d);let n=e.x,i=e.y,o=e.z,r=this._oneOverRadiiSquared,s=1/Math.sqrt(n*n*r.x+i*i*r.y+o*o*r.z);return d.multiplyByScalar(e,s,t)};Pi.prototype.transformPositionToScaledSpace=function(e,t){return l(t)||(t=new d),d.multiplyComponents(e,this._oneOverRadii,t)};Pi.prototype.transformPositionFromScaledSpace=function(e,t){return l(t)||(t=new d),d.multiplyComponents(e,this._radii,t)};Pi.prototype.equals=function(e){return this===e||l(e)&&d.equals(this._radii,e._radii)};Pi.prototype.toString=function(){return this._radii.toString()};Pi.prototype.getSurfaceNormalIntersectionWithZAxis=function(e,t,n){t=t??0;let i=this._squaredXOverSquaredZ;if(l(n)||(n=new d),n.x=0,n.y=0,n.z=e.z*(1-i),!(Math.abs(n.z)>=this._radii.z-t))return n};var bBe=new d;Pi.prototype.getLocalCurvature=function(e,t){l(t)||(t=new U);let n=this.getSurfaceNormalIntersectionWithZAxis(e,0,bBe),i=d.distance(e,n),o=this.minimumRadius*i/this.maximumRadius**2,r=i*o**2;return U.fromElements(1/i,1/r,t)};var TBe=[.14887433898163,.43339539412925,.67940956829902,.86506336668898,.97390652851717,0],SBe=[.29552422471475,.26926671930999,.21908636251598,.14945134915058,.066671344308684,0];function Bte(e,t,n){let i=.5*(t+e),o=.5*(t-e),r=0;for(let s=0;s<5;s++){let a=o*TBe[s];r+=SBe[s]*(n(i+a)+n(i-a))}return r*=o,r}Pi.prototype.surfaceArea=function(e){let t=e.west,n=e.east,i=e.south,o=e.north;for(;n<t;)n+=D.TWO_PI;let r=this._radiiSquared,s=r.x,a=r.y,c=r.z,u=s*a;return Bte(i,o,function(f){let h=Math.cos(f),A=Math.sin(f);return Math.cos(f)*Bte(t,n,function(g){let m=Math.cos(g),_=Math.sin(g);return Math.sqrt(u*A*A+c*(a*m*m+s*_*_)*h*h)})})};var te=Pi;function qU(e){this._ellipsoid=e??te.default,this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis}Object.defineProperties(qU.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});qU.prototype.project=function(e,t){let n=this._semimajorAxis,i=e.longitude*n,o=e.latitude*n,r=e.height;return l(t)?(t.x=i,t.y=o,t.z=r,t):new d(i,o,r)};qU.prototype.unproject=function(e,t){let n=this._oneOverSemimajorAxis,i=e.x*n,o=e.y*n,r=e.z;return l(t)?(t.longitude=i,t.latitude=o,t.height=r,t):new Ae(i,o,r)};var Ui=qU;var wBe={OUTSIDE:-1,INTERSECTING:0,INSIDE:1},tn=Object.freeze(wBe);function bt(e,t,n,i){this.x=e??0,this.y=t??0,this.z=n??0,this.w=i??0}bt.fromElements=function(e,t,n,i,o){return l(o)?(o.x=e,o.y=t,o.z=n,o.w=i,o):new bt(e,t,n,i)};bt.fromColor=function(e,t){return l(t)?(t.x=e.red,t.y=e.green,t.z=e.blue,t.w=e.alpha,t):new bt(e.red,e.green,e.blue,e.alpha)};bt.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new bt(e.x,e.y,e.z,e.w)};bt.packedLength=4;bt.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n++]=e.z,t[n]=e.w,t};bt.unpack=function(e,t,n){return t=t??0,l(n)||(n=new bt),n.x=e[t++],n.y=e[t++],n.z=e[t++],n.w=e[t],n};bt.packArray=function(e,t){let n=e.length,i=n*4;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)bt.pack(e[o],t,o*4);return t};bt.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/4:t=new Array(n/4);for(let i=0;i<n;i+=4){let o=i/4;t[o]=bt.unpack(e,i,t[o])}return t};bt.fromArray=bt.unpack;bt.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)};bt.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)};bt.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n.w=Math.min(e.w,t.w),n};bt.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n.w=Math.max(e.w,t.w),n};bt.clamp=function(e,t,n,i){let o=D.clamp(e.x,t.x,n.x),r=D.clamp(e.y,t.y,n.y),s=D.clamp(e.z,t.z,n.z),a=D.clamp(e.w,t.w,n.w);return i.x=o,i.y=r,i.z=s,i.w=a,i};bt.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w};bt.magnitude=function(e){return Math.sqrt(bt.magnitudeSquared(e))};var KU=new bt;bt.distance=function(e,t){return bt.subtract(e,t,KU),bt.magnitude(KU)};bt.distanceSquared=function(e,t){return bt.subtract(e,t,KU),bt.magnitudeSquared(KU)};bt.normalize=function(e,t){let n=bt.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t};bt.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w};bt.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n.w=e.w*t.w,n};bt.divideComponents=function(e,t,n){return n.x=e.x/t.x,n.y=e.y/t.y,n.z=e.z/t.z,n.w=e.w/t.w,n};bt.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n};bt.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n};bt.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n};bt.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n};bt.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t};bt.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var vte=new bt;bt.lerp=function(e,t,n,i){return bt.multiplyByScalar(t,n,vte),i=bt.multiplyByScalar(e,1-n,i),bt.add(vte,i,i)};var BBe=new bt;bt.mostOrthogonalAxis=function(e,t){let n=bt.normalize(e,BBe);return bt.abs(n,n),n.x<=n.y?n.x<=n.z?n.x<=n.w?t=bt.clone(bt.UNIT_X,t):t=bt.clone(bt.UNIT_W,t):n.z<=n.w?t=bt.clone(bt.UNIT_Z,t):t=bt.clone(bt.UNIT_W,t):n.y<=n.z?n.y<=n.w?t=bt.clone(bt.UNIT_Y,t):t=bt.clone(bt.UNIT_W,t):n.z<=n.w?t=bt.clone(bt.UNIT_Z,t):t=bt.clone(bt.UNIT_W,t),t};bt.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w};bt.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]&&e.w===t[n+3]};bt.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&D.equalsEpsilon(e.x,t.x,n,i)&&D.equalsEpsilon(e.y,t.y,n,i)&&D.equalsEpsilon(e.z,t.z,n,i)&&D.equalsEpsilon(e.w,t.w,n,i)};bt.ZERO=Object.freeze(new bt(0,0,0,0));bt.ONE=Object.freeze(new bt(1,1,1,1));bt.UNIT_X=Object.freeze(new bt(1,0,0,0));bt.UNIT_Y=Object.freeze(new bt(0,1,0,0));bt.UNIT_Z=Object.freeze(new bt(0,0,1,0));bt.UNIT_W=Object.freeze(new bt(0,0,0,1));bt.prototype.clone=function(e){return bt.clone(this,e)};bt.prototype.equals=function(e){return bt.equals(this,e)};bt.prototype.equalsEpsilon=function(e,t,n){return bt.equalsEpsilon(this,e,t,n)};bt.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z}, ${this.w})`};var u9=new Float32Array(1),Sc=new Uint8Array(u9.buffer),DBe=new Uint32Array([287454020]),vBe=new Uint8Array(DBe.buffer),Pte=vBe[0]===68;bt.packFloat=function(e,t){return l(t)||(t=new bt),u9[0]=e,Pte?(t.x=Sc[0],t.y=Sc[1],t.z=Sc[2],t.w=Sc[3]):(t.x=Sc[3],t.y=Sc[2],t.z=Sc[1],t.w=Sc[0]),t};bt.unpackFloat=function(e){return Pte?(Sc[0]=e.x,Sc[1]=e.y,Sc[2]=e.z,Sc[3]=e.w):(Sc[0]=e.w,Sc[1]=e.z,Sc[2]=e.y,Sc[3]=e.x),u9[0]};var se=bt;function PBe(e,t,n){let i=0,o=e.length-1,r,s;for(;i<=o;){if(r=~~((i+o)/2),s=n(e[r],t),s<0){i=r+1;continue}if(s>0){o=r-1;continue}return r}return~(o+1)}var Wo=PBe;function RBe(e,t,n,i,o){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=n,this.yPoleOffset=i,this.ut1MinusUtc=o}var A_=RBe;function MBe(e){return e%4===0&&e%100!==0||e%400===0}var ih=MBe;var Rte=[31,28,31,30,31,30,31,31,30,31,30,31];function NBe(e,t,n,i,o,r,s,a){e=e??1,t=t??1,n=n??1,i=i??0,o=o??0,r=r??0,s=s??0,a=a??!1,this.year=e,this.month=t,this.day=n,this.hour=i,this.minute=o,this.second=r,this.millisecond=s,this.isLeapSecond=a;function _(){Po.typeOf.number.greaterThanOrEquals("Year",e,1),Po.typeOf.number.lessThanOrEquals("Year",e,9999),Po.typeOf.number.greaterThanOrEquals("Month",t,1),Po.typeOf.number.lessThanOrEquals("Month",t,12),Po.typeOf.number.greaterThanOrEquals("Day",n,1),Po.typeOf.number.lessThanOrEquals("Day",n,31),Po.typeOf.number.greaterThanOrEquals("Hour",i,0),Po.typeOf.number.lessThanOrEquals("Hour",i,23),Po.typeOf.number.greaterThanOrEquals("Minute",o,0),Po.typeOf.number.lessThanOrEquals("Minute",o,59),Po.typeOf.bool("IsLeapSecond",a),Po.typeOf.number.greaterThanOrEquals("Second",r,0),Po.typeOf.number.lessThanOrEquals("Second",r,a?60:59),Po.typeOf.number.greaterThanOrEquals("Millisecond",s,0),Po.typeOf.number.lessThan("Millisecond",s,1e3)}function y(){let C=t===2&&ih(e)?Rte[t-1]+1:Rte[t-1];if(n>C)throw new me("Month and Day represents invalid date")}}var KA=NBe;function LBe(e,t){this.julianDate=e,this.offset=t}var oo=LBe;var OBe={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:24000005e-1},ri=Object.freeze(OBe);var FBe={UTC:0,TAI:1},ni=Object.freeze(FBe);var Nte=new KA,f9=[31,28,31,30,31,30,31,31,30,31,30,31],d9=29;function h9(e,t){return Qt.compare(e.julianDate,t.julianDate)}var Fx=new oo;function JU(e){Fx.julianDate=e;let t=Qt.leapSeconds,n=Wo(t,Fx,h9);n<0&&(n=~n),n>=t.length&&(n=t.length-1);let i=t[n].offset;n>0&&Qt.secondsDifference(t[n].julianDate,e)>i&&(n--,i=t[n].offset),Qt.addSeconds(e,i,e)}function Mte(e,t){Fx.julianDate=e;let n=Qt.leapSeconds,i=Wo(n,Fx,h9);if(i<0&&(i=~i),i===0)return Qt.addSeconds(e,-n[0].offset,t);if(i>=n.length)return Qt.addSeconds(e,-n[i-1].offset,t);let o=Qt.secondsDifference(n[i].julianDate,e);if(o===0)return Qt.addSeconds(e,-n[i].offset,t);if(!(o<=1))return Qt.addSeconds(e,-n[--i].offset,t)}function p_(e,t,n){let i=t/ri.SECONDS_PER_DAY|0;return e+=i,t-=ri.SECONDS_PER_DAY*i,t<0&&(e--,t+=ri.SECONDS_PER_DAY),n.dayNumber=e,n.secondsOfDay=t,n}function m9(e,t,n,i,o,r,s){let a=(t-14)/12|0,c=e+4800+a,u=(1461*c/4|0)+(367*(t-2-12*a)/12|0)-(3*((c+100)/100|0)/4|0)+n-32075;i=i-12,i<0&&(i+=24);let f=r+(i*ri.SECONDS_PER_HOUR+o*ri.SECONDS_PER_MINUTE+s*ri.SECONDS_PER_MILLISECOND);return f>=43200&&(u-=1),[u,f]}var QBe=/^(\d{4})$/,kBe=/^(\d{4})-(\d{2})$/,UBe=/^(\d{4})-?(\d{3})$/,GBe=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,zBe=/^(\d{4})-?(\d{2})-?(\d{2})$/,A9=/([Z+\-])?(\d{2})?:?(\d{2})?$/,VBe=/^(\d{2})(\.\d+)?/.source+A9.source,HBe=/^(\d{2}):?(\d{2})(\.\d+)?/.source+A9.source,WBe=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+A9.source;function Qt(e,t,n){this.dayNumber=void 0,this.secondsOfDay=void 0,e=e??0,t=t??0,n=n??ni.UTC;let i=e|0;t=t+(e-i)*ri.SECONDS_PER_DAY,p_(i,t,this),n===ni.UTC&&JU(this)}Qt.fromGregorianDate=function(e,t){let n=m9(e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond);return l(t)?(p_(n[0],n[1],t),JU(t),t):new Qt(n[0],n[1],ni.UTC)};Qt.fromDate=function(e,t){let n=m9(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return l(t)?(p_(n[0],n[1],t),JU(t),t):new Qt(n[0],n[1],ni.UTC)};Qt.fromIso8601=function(e,t){e=e.replace(",",".");let n=e.split("T"),i,o=1,r=1,s=0,a=0,c=0,u=0,f=n[0],h=n[1],A,g;if(n=f.match(zBe),n!==null)i=+n[1],o=+n[2],r=+n[3];else if(n=f.match(kBe),n!==null)i=+n[1],o=+n[2];else if(n=f.match(QBe),n!==null)i=+n[1];else{let C;if(n=f.match(UBe),n!==null)i=+n[1],C=+n[2],g=ih(i);else if(n=f.match(GBe),n!==null){i=+n[1];let E=+n[2],I=+n[3]||0,b=new Date(Date.UTC(i,0,4));C=E*7+I-b.getUTCDay()-3}A=new Date(Date.UTC(i,0,1)),A.setUTCDate(C),o=A.getUTCMonth()+1,r=A.getUTCDate()}g=ih(i);let m;if(l(h)){n=h.match(WBe),n!==null?(s=+n[1],a=+n[2],c=+n[3],u=+(n[4]||0)*1e3,m=5):(n=h.match(HBe),n!==null?(s=+n[1],a=+n[2],c=+(n[3]||0)*60,m=4):(n=h.match(VBe),n!==null&&(s=+n[1],a=+(n[2]||0)*60,m=3)));let C=n[m],E=+n[m+1],I=+(n[m+2]||0);switch(C){case"+":s=s-E,a=a-I;break;case"-":s=s+E,a=a+I;break;case"Z":break;default:a=a+new Date(Date.UTC(i,o-1,r,s,a)).getTimezoneOffset();break}}let _=c===60;for(_&&c--;a>=60;)a-=60,s++;for(;s>=24;)s-=24,r++;for(A=g&&o===2?d9:f9[o-1];r>A;)r-=A,o++,o>12&&(o-=12,i++),A=g&&o===2?d9:f9[o-1];for(;a<0;)a+=60,s--;for(;s<0;)s+=24,r--;for(;r<1;)o--,o<1&&(o+=12,i--),A=g&&o===2?d9:f9[o-1],r+=A;let y=m9(i,o,r,s,a,c,u);return l(t)?(p_(y[0],y[1],t),JU(t)):t=new Qt(y[0],y[1],ni.UTC),_&&Qt.addSeconds(t,1,t),t};Qt.now=function(e){return Qt.fromDate(new Date,e)};var XU=new Qt(0,0,ni.TAI);Qt.toGregorianDate=function(e,t){let n=!1,i=Mte(e,XU);l(i)||(Qt.addSeconds(e,-1,XU),i=Mte(XU,XU),n=!0);let o=i.dayNumber,r=i.secondsOfDay;r>=43200&&(o+=1);let s=o+68569|0,a=4*s/146097|0;s=s-((146097*a+3)/4|0)|0;let c=4e3*(s+1)/1461001|0;s=s-(1461*c/4|0)+31|0;let u=80*s/2447|0,f=s-(2447*u/80|0)|0;s=u/11|0;let h=u+2-12*s|0,A=100*(a-49)+c+s|0,g=r/ri.SECONDS_PER_HOUR|0,m=r-g*ri.SECONDS_PER_HOUR,_=m/ri.SECONDS_PER_MINUTE|0;m=m-_*ri.SECONDS_PER_MINUTE;let y=m|0,C=(m-y)/ri.SECONDS_PER_MILLISECOND;return g+=12,g>23&&(g-=24),n&&(y+=1),l(t)?(t.year=A,t.month=h,t.day=f,t.hour=g,t.minute=_,t.second=y,t.millisecond=C,t.isLeapSecond=n,t):new KA(A,h,f,g,_,y,C,n)};Qt.toDate=function(e){let t=Qt.toGregorianDate(e,Nte),n=t.second;return t.isLeapSecond&&(n-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,n,t.millisecond))};Qt.toIso8601=function(e,t){let n=Qt.toGregorianDate(e,Nte),i=n.year,o=n.month,r=n.day,s=n.hour,a=n.minute,c=n.second,u=n.millisecond;i===1e4&&o===1&&r===1&&s===0&&a===0&&c===0&&u===0&&(i=9999,o=12,r=31,s=24);let f;if(!l(t)&&u!==0){let h=u*.01;return f=h<1e-6?h.toFixed(20).replace(".","").replace(/0+$/,""):h.toString().replace(".",""),`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}.${f}Z`}return!l(t)||t===0?`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}Z`:(f=(u*.01).toFixed(t).replace(".","").slice(0,t),`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}.${f}Z`)};Qt.clone=function(e,t){if(l(e))return l(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new Qt(e.dayNumber,e.secondsOfDay,ni.TAI)};Qt.compare=function(e,t){let n=e.dayNumber-t.dayNumber;return n!==0?n:e.secondsOfDay-t.secondsOfDay};Qt.equals=function(e,t){return e===t||l(e)&&l(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay};Qt.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(Qt.secondsDifference(e,t))<=n};Qt.totalDays=function(e){return e.dayNumber+e.secondsOfDay/ri.SECONDS_PER_DAY};Qt.secondsDifference=function(e,t){return(e.dayNumber-t.dayNumber)*ri.SECONDS_PER_DAY+(e.secondsOfDay-t.secondsOfDay)};Qt.daysDifference=function(e,t){let n=e.dayNumber-t.dayNumber,i=(e.secondsOfDay-t.secondsOfDay)/ri.SECONDS_PER_DAY;return n+i};Qt.computeTaiMinusUtc=function(e){Fx.julianDate=e;let t=Qt.leapSeconds,n=Wo(t,Fx,h9);return n<0&&(n=~n,--n,n<0&&(n=0)),t[n].offset};Qt.addSeconds=function(e,t,n){return p_(e.dayNumber,e.secondsOfDay+t,n)};Qt.addMinutes=function(e,t,n){let i=e.secondsOfDay+t*ri.SECONDS_PER_MINUTE;return p_(e.dayNumber,i,n)};Qt.addHours=function(e,t,n){let i=e.secondsOfDay+t*ri.SECONDS_PER_HOUR;return p_(e.dayNumber,i,n)};Qt.addDays=function(e,t,n){let i=e.dayNumber+t;return p_(i,e.secondsOfDay,n)};Qt.lessThan=function(e,t){return Qt.compare(e,t)<0};Qt.lessThanOrEquals=function(e,t){return Qt.compare(e,t)<=0};Qt.greaterThan=function(e,t){return Qt.compare(e,t)>0};Qt.greaterThanOrEquals=function(e,t){return Qt.compare(e,t)>=0};Qt.prototype.clone=function(e){return Qt.clone(this,e)};Qt.prototype.equals=function(e){return Qt.equals(this,e)};Qt.prototype.equalsEpsilon=function(e,t){return Qt.equalsEpsilon(this,e,t)};Qt.prototype.toString=function(){return Qt.toIso8601(this)};Qt.leapSeconds=[new oo(new Qt(2441317,43210,ni.TAI),10),new oo(new Qt(2441499,43211,ni.TAI),11),new oo(new Qt(2441683,43212,ni.TAI),12),new oo(new Qt(2442048,43213,ni.TAI),13),new oo(new Qt(2442413,43214,ni.TAI),14),new oo(new Qt(2442778,43215,ni.TAI),15),new oo(new Qt(2443144,43216,ni.TAI),16),new oo(new Qt(2443509,43217,ni.TAI),17),new oo(new Qt(2443874,43218,ni.TAI),18),new oo(new Qt(2444239,43219,ni.TAI),19),new oo(new Qt(2444786,43220,ni.TAI),20),new oo(new Qt(2445151,43221,ni.TAI),21),new oo(new Qt(2445516,43222,ni.TAI),22),new oo(new Qt(2446247,43223,ni.TAI),23),new oo(new Qt(2447161,43224,ni.TAI),24),new oo(new Qt(2447892,43225,ni.TAI),25),new oo(new Qt(2448257,43226,ni.TAI),26),new oo(new Qt(2448804,43227,ni.TAI),27),new oo(new Qt(2449169,43228,ni.TAI),28),new oo(new Qt(2449534,43229,ni.TAI),29),new oo(new Qt(2450083,43230,ni.TAI),30),new oo(new Qt(2450630,43231,ni.TAI),31),new oo(new Qt(2451179,43232,ni.TAI),32),new oo(new Qt(2453736,43233,ni.TAI),33),new oo(new Qt(2454832,43234,ni.TAI),34),new oo(new Qt(2456109,43235,ni.TAI),35),new oo(new Qt(2457204,43236,ni.TAI),36),new oo(new Qt(2457754,43237,ni.TAI),37)];var K=Qt;var $te=xr(Ou(),1);function jBe(e){return(e.length===0||e[e.length-1]!=="/")&&(e=`${e}/`),e}var dB=jBe;function Gte(e,t){if(e===null||typeof e!="object")return e;t=t??!1;let n=new e.constructor;for(let i in e)if(e.hasOwnProperty(i)){let o=e[i];t&&(o=Gte(o,t)),n[i]=o}return n}var ze=Gte;function zte(e,t,n){n=n??!1;let i={},o=l(e),r=l(t),s,a,c;if(o)for(s in e)e.hasOwnProperty(s)&&(a=e[s],r&&n&&typeof a=="object"&&t.hasOwnProperty(s)?(c=t[s],typeof c=="object"?i[s]=zte(a,c,n):i[s]=a):i[s]=a);if(r)for(s in t)t.hasOwnProperty(s)&&!i.hasOwnProperty(s)&&(c=t[s],i[s]=c);return i}var Tt=zte;function YBe(){let e,t,n=new Promise(function(i,o){e=i,t=o});return{resolve:e,reject:t,promise:n}}var Xl=YBe;var Vte=xr(Ou(),1);function p9(e,t){let n;return typeof document<"u"&&(n=document),p9._implementation(e,t,n)}p9._implementation=function(e,t,n){if(!l(t)){if(typeof n>"u")return e;t=n.baseURI??n.location.href}let i=new Vte.default(e);return i.scheme()!==""?i.toString():i.absoluteTo(t).toString()};var vm=p9;var Hte=xr(Ou(),1);function qBe(e,t){let n="",i=e.lastIndexOf("/");return i!==-1&&(n=e.substring(0,i+1)),t&&(e=new Hte.default(e),e.query().length!==0&&(n+=`?${e.query()}`),e.fragment().length!==0&&(n+=`#${e.fragment()}`)),n}var hB=qBe;var Wte=xr(Ou(),1);function KBe(e){let t=new Wte.default(e);t.normalize();let n=t.path(),i=n.lastIndexOf("/");return i!==-1&&(n=n.substr(i+1)),i=n.lastIndexOf("."),i===-1?n="":n=n.substr(i+1),n}var UC=KBe;var jte={};function XBe(e,t,n){l(t)||(t=e.width),l(n)||(n=e.height);let i=jte[t];l(i)||(i={},jte[t]=i);let o=i[n];if(!l(o)){let r=document.createElement("canvas");r.width=t,r.height=n,o=r.getContext("2d",{willReadFrequently:!0}),o.globalCompositeOperation="copy",i[n]=o}return o.drawImage(e,0,0,t,n),o.getImageData(0,0,t,n).data}var oh=XBe;var JBe=/^blob:/i;function ZBe(e){return JBe.test(e)}var GC=ZBe;var Pm;function $Be(e){l(Pm)||(Pm=document.createElement("a")),Pm.href=window.location.href;let t=Pm.host,n=Pm.protocol;return Pm.href=e,Pm.href=Pm.href,n!==Pm.protocol||t!==Pm.host}var g_=$Be;var eDe=/^data:/i;function tDe(e){return eDe.test(e)}var XA=tDe;function nDe(e){let t=document.createElement("script");return t.async=!0,t.src=e,new Promise((n,i)=>{window.crossOriginIsolated&&t.setAttribute("crossorigin","anonymous");let o=document.getElementsByTagName("head")[0];t.onload=function(){t.onload=void 0,o.removeChild(t),n()},t.onerror=function(r){i(r)},o.appendChild(t)})}var zC=nDe;function iDe(e){let t="";for(let n in e)if(e.hasOwnProperty(n)){let i=e[n],o=`${encodeURIComponent(n)}=`;if(Array.isArray(i))for(let r=0,s=i.length;r<s;++r)t+=`${o+encodeURIComponent(i[r])}&`;else t+=`${o+encodeURIComponent(i)}&`}return t=t.slice(0,-1),t}var VC=iDe;function oDe(e){let t={};if(e==="")return t;let n=e.replace(/\+/g,"%20").split(/[&;]/);for(let i=0,o=n.length;i<o;++i){let r=n[i].split("="),s=decodeURIComponent(r[0]),a=r[1];l(a)?a=decodeURIComponent(a):a="";let c=t[s];typeof c=="string"?t[s]=[c,a]:Array.isArray(c)?c.push(a):t[s]=a}return t}var Fu=oDe;var rDe={UNISSUED:0,ISSUED:1,ACTIVE:2,RECEIVED:3,CANCELLED:4,FAILED:5},fi=Object.freeze(rDe);var sDe={TERRAIN:0,IMAGERY:1,TILES3D:2,OTHER:3},Ms=Object.freeze(sDe);function tG(e){e=e??V.EMPTY_OBJECT;let t=e.throttleByServer??!1,n=e.throttle??!1;this.url=e.url,this.requestFunction=e.requestFunction,this.cancelFunction=e.cancelFunction,this.priorityFunction=e.priorityFunction,this.priority=e.priority??0,this.throttle=n,this.throttleByServer=t,this.type=e.type??Ms.OTHER,this.serverKey=e.serverKey,this.state=fi.UNISSUED,this.deferred=void 0,this.cancelled=!1}tG.prototype.cancel=function(){this.cancelled=!0};tG.prototype.clone=function(e){return l(e)?(e.url=this.url,e.requestFunction=this.requestFunction,e.cancelFunction=this.cancelFunction,e.priorityFunction=this.priorityFunction,e.priority=this.priority,e.throttle=this.throttle,e.throttleByServer=this.throttleByServer,e.type=this.type,e.serverKey=this.serverKey,e.state=fi.UNISSUED,e.deferred=void 0,e.cancelled=!1,e):new tG(this)};var sr=tG;function aDe(e){let t={};if(!e)return t;let n=e.split(`\r +`);for(let i=0;i<n.length;++i){let o=n[i],r=o.indexOf(": ");if(r>0){let s=o.substring(0,r),a=o.substring(r+2);t[s]=a}}return t}var mB=aDe;function Yte(e,t,n){this.statusCode=e,this.response=t,this.responseHeaders=n,typeof this.responseHeaders=="string"&&(this.responseHeaders=mB(this.responseHeaders))}Yte.prototype.toString=function(){let e="Request has failed.";return l(this.statusCode)&&(e+=` Status Code: ${this.statusCode}`),e};var Rm=Yte;var nG=xr(Ou(),1);function HC(e){this._comparator=e.comparator,this._array=[],this._length=0,this._maximumLength=void 0}Object.defineProperties(HC.prototype,{length:{get:function(){return this._length}},internalArray:{get:function(){return this._array}},maximumLength:{get:function(){return this._maximumLength},set:function(e){let t=this._length;if(e<t){let n=this._array;for(let i=e;i<t;++i)n[i]=void 0;this._length=e,n.length=e}this._maximumLength=e}},comparator:{get:function(){return this._comparator}}});function g9(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}HC.prototype.reserve=function(e){e=e??this._length,this._array.length=e};HC.prototype.heapify=function(e){e=e??0;let t=this._length,n=this._comparator,i=this._array,o=-1,r=!0;for(;r;){let s=2*(e+1),a=s-1;a<t&&n(i[a],i[e])<0?o=a:o=e,s<t&&n(i[s],i[o])<0&&(o=s),o!==e?(g9(i,o,e),e=o):r=!1}};HC.prototype.resort=function(){let e=this._length;for(let t=Math.ceil(e/2);t>=0;--t)this.heapify(t)};HC.prototype.insert=function(e){let t=this._array,n=this._comparator,i=this._maximumLength,o=this._length++;for(o<t.length?t[o]=e:t.push(e);o!==0;){let s=Math.floor((o-1)/2);if(n(t[o],t[s])<0)g9(t,o,s),o=s;else break}let r;return l(i)&&this._length>i&&(r=t[i],this._length=i),r};HC.prototype.pop=function(e){if(e=e??0,this._length===0)return;let t=this._array,n=t[e];return g9(t,e,--this._length),this.heapify(e),t[this._length]=void 0,n};var AB=HC;function cDe(e,t){return e.priority-t.priority}var Ao={numberOfAttemptedRequests:0,numberOfActiveRequests:0,numberOfCancelledRequests:0,numberOfCancelledActiveRequests:0,numberOfFailedRequests:0,numberOfActiveRequestsEver:0,lastNumberOfActiveRequests:0},Ux=20,wc=new AB({comparator:cDe});wc.maximumLength=Ux;wc.reserve(Ux);var Mm=[],JA={},lDe=typeof document<"u"?new nG.default(document.location.href):new nG.default,iG=new _e;function ar(){}ar.maximumRequests=50;ar.maximumRequestsPerServer=18;ar.requestsByServer={};ar.throttleRequests=!0;ar.debugShowStatistics=!1;ar.requestCompletedEvent=iG;Object.defineProperties(ar,{statistics:{get:function(){return Ao}},priorityHeapLength:{get:function(){return Ux},set:function(e){if(e<Ux)for(;wc.length>e;){let t=wc.pop();WC(t)}Ux=e,wc.maximumLength=e,wc.reserve(e)}}});function qte(e){l(e.priorityFunction)&&(e.priority=e.priorityFunction())}ar.serverHasOpenSlots=function(e,t){t=t??1;let n=ar.requestsByServer[e]??ar.maximumRequestsPerServer;return JA[e]+t<=n};ar.heapHasOpenSlots=function(e){return wc.length+e<=Ux};function Kte(e){return e.state===fi.UNISSUED&&(e.state=fi.ISSUED,e.deferred=Xl()),e.deferred.promise}function uDe(e){return function(t){if(e.state===fi.CANCELLED)return;let n=e.deferred;--Ao.numberOfActiveRequests,--JA[e.serverKey],iG.raiseEvent(),e.state=fi.RECEIVED,e.deferred=void 0,n.resolve(t)}}function fDe(e){return function(t){e.state!==fi.CANCELLED&&(++Ao.numberOfFailedRequests,--Ao.numberOfActiveRequests,--JA[e.serverKey],iG.raiseEvent(t),e.state=fi.FAILED,e.deferred.reject(t))}}function Xte(e){let t=Kte(e);return e.state=fi.ACTIVE,Mm.push(e),++Ao.numberOfActiveRequests,++Ao.numberOfActiveRequestsEver,++JA[e.serverKey],e.requestFunction().then(uDe(e)).catch(fDe(e)),t}function WC(e){let t=e.state===fi.ACTIVE;if(e.state=fi.CANCELLED,++Ao.numberOfCancelledRequests,l(e.deferred)){let n=e.deferred;e.deferred=void 0,n.reject()}t&&(--Ao.numberOfActiveRequests,--JA[e.serverKey],++Ao.numberOfCancelledActiveRequests),l(e.cancelFunction)&&e.cancelFunction()}ar.update=function(){let e,t,n=0,i=Mm.length;for(e=0;e<i;++e){if(t=Mm[e],t.cancelled&&WC(t),t.state!==fi.ACTIVE){++n;continue}n>0&&(Mm[e-n]=t)}Mm.length-=n;let o=wc.internalArray,r=wc.length;for(e=0;e<r;++e)qte(o[e]);wc.resort();let s=Math.max(ar.maximumRequests-Mm.length,0),a=0;for(;a<s&&wc.length>0;){if(t=wc.pop(),t.cancelled){WC(t);continue}if(t.throttleByServer&&!ar.serverHasOpenSlots(t.serverKey)){WC(t);continue}Xte(t),++a}dDe()};ar.getServerKey=function(e){let t=new nG.default(e);t.scheme()===""&&(t=t.absoluteTo(lDe),t.normalize());let n=t.authority();/:/.test(n)||(n=`${n}:${t.scheme()==="https"?"443":"80"}`);let i=JA[n];return l(i)||(JA[n]=0),n};ar.request=function(e){if(XA(e.url)||GC(e.url))return iG.raiseEvent(),e.state=fi.RECEIVED,e.requestFunction();if(++Ao.numberOfAttemptedRequests,l(e.serverKey)||(e.serverKey=ar.getServerKey(e.url)),ar.throttleRequests&&e.throttleByServer&&!ar.serverHasOpenSlots(e.serverKey))return;if(!ar.throttleRequests||!e.throttle)return Xte(e);if(Mm.length>=ar.maximumRequests)return;qte(e);let t=wc.insert(e);if(l(t)){if(t===e)return;WC(t)}return Kte(e)};function dDe(){ar.debugShowStatistics&&(Ao.numberOfActiveRequests===0&&Ao.lastNumberOfActiveRequests>0&&(Ao.numberOfAttemptedRequests>0&&(console.log(`Number of attempted requests: ${Ao.numberOfAttemptedRequests}`),Ao.numberOfAttemptedRequests=0),Ao.numberOfCancelledRequests>0&&(console.log(`Number of cancelled requests: ${Ao.numberOfCancelledRequests}`),Ao.numberOfCancelledRequests=0),Ao.numberOfCancelledActiveRequests>0&&(console.log(`Number of cancelled active requests: ${Ao.numberOfCancelledActiveRequests}`),Ao.numberOfCancelledActiveRequests=0),Ao.numberOfFailedRequests>0&&(console.log(`Number of failed requests: ${Ao.numberOfFailedRequests}`),Ao.numberOfFailedRequests=0)),Ao.lastNumberOfActiveRequests=Ao.numberOfActiveRequests)}ar.clearForSpecs=function(){for(;wc.length>0;){let t=wc.pop();WC(t)}let e=Mm.length;for(let t=0;t<e;++t)WC(Mm[t]);Mm.length=0,JA={},Ao.numberOfAttemptedRequests=0,Ao.numberOfActiveRequests=0,Ao.numberOfCancelledRequests=0,Ao.numberOfCancelledActiveRequests=0,Ao.numberOfFailedRequests=0,Ao.numberOfActiveRequestsEver=0,Ao.lastNumberOfActiveRequests=0};ar.numberOfActiveRequestsByServer=function(e){return JA[e]};ar.requestHeap=wc;var Bc=ar;function pB(e){this.name="RuntimeError",this.message=e;let t;try{throw new Error}catch(n){t=n.stack}this.stack=t}l(Object.create)&&(pB.prototype=Object.create(Error.prototype),pB.prototype.constructor=pB);pB.prototype.toString=function(){let e=`${this.name}: ${this.message}`;return l(this.stack)&&(e+=` +${this.stack.toString()}`),e};var ce=pB;var Jte=xr(Ou(),1);var gB={},Gx={};gB.add=function(e,t){let n=`${e.toLowerCase()}:${t}`;l(Gx[n])||(Gx[n]=!0)};gB.remove=function(e,t){let n=`${e.toLowerCase()}:${t}`;l(Gx[n])&&delete Gx[n]};function hDe(e){let t=new Jte.default(e);t.normalize();let n=t.authority();if(n.length!==0){if(t.authority(n),n.indexOf("@")!==-1&&(n=n.split("@")[1]),n.indexOf(":")===-1){let i=t.scheme();if(i.length===0&&(i=window.location.protocol,i=i.substring(0,i.length-1)),i==="http")n+=":80";else if(i==="https")n+=":443";else return}return n}}gB.contains=function(e){let t=hDe(e);return!!(l(t)&&l(Gx[t]))};gB.clear=function(){Gx={}};var zx=gB;var ene=function(){try{let e=new XMLHttpRequest;return e.open("GET","#",!0),e.responseType="blob",e.responseType==="blob"}catch{return!1}}();function Nt(e){e=e??V.EMPTY_OBJECT,typeof e=="string"&&(e={url:e}),this._url=void 0,this._templateValues=Nm(e.templateValues,{}),this._queryParameters=Nm(e.queryParameters,{}),this.headers=Nm(e.headers,{}),this.request=e.request??new sr,this.proxy=e.proxy,this.retryCallback=e.retryCallback,this.retryAttempts=e.retryAttempts??0,this._retryCount=0,e.parseUrl??!0?this.parseUrl(e.url,!0,!0):this._url=e.url,this._credits=e.credits}function Nm(e,t){return l(e)?ze(e):t}Nt.createIfNeeded=function(e){return e instanceof Nt?e.getDerivedResource({request:e.request}):typeof e!="string"?e:new Nt({url:e})};var Vx;Nt.supportsImageBitmapOptions=function(){return l(Vx)?Vx:typeof createImageBitmap!="function"?(Vx=Promise.resolve(!1),Vx):(Vx=Nt.fetchBlob({url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAABGdBTUEAAE4g3rEiDgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADElEQVQI12Ng6GAAAAEUAIngE3ZiAAAAAElFTkSuQmCC"}).then(function(t){let n={imageOrientation:"flipY",premultiplyAlpha:"none",colorSpaceConversion:"none"};return Promise.all([createImageBitmap(t,n),createImageBitmap(t)])}).then(function(t){let n=oh(t[0]),i=oh(t[1]);return n[1]!==i[1]}).catch(function(){return!1}),Vx)};Object.defineProperties(Nt,{isBlobSupported:{get:function(){return ene}}});Object.defineProperties(Nt.prototype,{queryParameters:{get:function(){return this._queryParameters}},templateValues:{get:function(){return this._templateValues}},url:{get:function(){return this.getUrlComponent(!0,!0)},set:function(e){this.parseUrl(e,!1,!1)}},extension:{get:function(){return UC(this._url)}},isDataUri:{get:function(){return XA(this._url)}},isBlobUri:{get:function(){return GC(this._url)}},isCrossOriginUrl:{get:function(){return g_(this._url)}},hasHeaders:{get:function(){return Object.keys(this.headers).length>0}},credits:{get:function(){return this._credits}}});Nt.prototype.toString=function(){return this.getUrlComponent(!0,!0)};Nt.prototype.parseUrl=function(e,t,n,i){let o=new $te.default(e),r=mDe(o.query());this._queryParameters=t?rG(r,this.queryParameters,n):r,o.search(""),o.fragment(""),l(i)&&o.scheme()===""&&(o=o.absoluteTo(vm(i))),this._url=o.toString()};function mDe(e){return e.length===0?{}:e.indexOf("=")===-1?{[e]:void 0}:Fu(e)}function rG(e,t,n){if(!n)return Tt(e,t);let i=ze(e,!0);for(let o in t)if(t.hasOwnProperty(o)){let r=i[o],s=t[o];l(r)?(Array.isArray(r)||(r=i[o]=[r]),i[o]=r.concat(s)):i[o]=Array.isArray(s)?s.slice():s}return i}Nt.prototype.getUrlComponent=function(e,t){if(this.isDataUri)return this._url;let n=this._url;e&&(n=`${n}${ADe(this.queryParameters)}`),n=n.replace(/%7B/g,"{").replace(/%7D/g,"}");let i=this._templateValues;return Object.keys(i).length>0&&(n=n.replace(/{(.*?)}/g,function(o,r){let s=i[r];return l(s)?encodeURIComponent(s):o})),t&&l(this.proxy)&&(n=this.proxy.getURL(n)),n};function ADe(e){let t=Object.keys(e);return t.length===0?"":t.length===1&&!l(e[t[0]])?`?${t[0]}`:`?${VC(e)}`}Nt.prototype.setQueryParameters=function(e,t){t?this._queryParameters=rG(this._queryParameters,e,!1):this._queryParameters=rG(e,this._queryParameters,!1)};Nt.prototype.appendQueryParameters=function(e){this._queryParameters=rG(e,this._queryParameters,!0)};Nt.prototype.setTemplateValues=function(e,t){t?this._templateValues=Tt(this._templateValues,e):this._templateValues=Tt(e,this._templateValues)};Nt.prototype.getDerivedResource=function(e){let t=this.clone();if(t._retryCount=0,l(e.url)){let n=e.preserveQueryParameters??!1;t.parseUrl(e.url,!0,n,this._url)}return l(e.queryParameters)&&(t._queryParameters=Tt(e.queryParameters,t.queryParameters)),l(e.templateValues)&&(t._templateValues=Tt(e.templateValues,t.templateValues)),l(e.headers)&&(t.headers=Tt(e.headers,t.headers)),l(e.proxy)&&(t.proxy=e.proxy),l(e.request)&&(t.request=e.request),l(e.retryCallback)&&(t.retryCallback=e.retryCallback),l(e.retryAttempts)&&(t.retryAttempts=e.retryAttempts),t};Nt.prototype.retryOnError=function(e){let t=this.retryCallback;if(typeof t!="function"||this._retryCount>=this.retryAttempts)return Promise.resolve(!1);let n=this;return Promise.resolve(t(this,e)).then(function(i){return++n._retryCount,i})};Nt.prototype.clone=function(e){return l(e)?(e._url=this._url,e._queryParameters=ze(this._queryParameters),e._templateValues=ze(this._templateValues),e.headers=ze(this.headers),e.proxy=this.proxy,e.retryCallback=this.retryCallback,e.retryAttempts=this.retryAttempts,e._retryCount=0,e.request=this.request.clone(),e):new Nt({url:this._url,queryParameters:this.queryParameters,templateValues:this.templateValues,headers:this.headers,proxy:this.proxy,retryCallback:this.retryCallback,retryAttempts:this.retryAttempts,request:this.request.clone(),parseUrl:!1,credits:l(this.credits)?this.credits.slice():void 0})};Nt.prototype.getBaseUri=function(e){return hB(this.getUrlComponent(e),e)};Nt.prototype.appendForwardSlash=function(){this._url=dB(this._url)};Nt.prototype.fetchArrayBuffer=function(){return this.fetch({responseType:"arraybuffer"})};Nt.fetchArrayBuffer=function(e){return new Nt(e).fetchArrayBuffer()};Nt.prototype.fetchBlob=function(){return this.fetch({responseType:"blob"})};Nt.fetchBlob=function(e){return new Nt(e).fetchBlob()};Nt.prototype.fetchImage=function(e){e=e??V.EMPTY_OBJECT;let t=e.preferImageBitmap??!1,n=e.preferBlob??!1,i=e.flipY??!1,o=e.skipColorSpaceConversion??!1;if(y9(this.request),!ene||this.isDataUri||this.isBlobUri||!this.hasHeaders&&!n)return _9({resource:this,flipY:i,skipColorSpaceConversion:o,preferImageBitmap:t});let r=this.fetchBlob();if(!l(r))return;let s,a,c,u;return Nt.supportsImageBitmapOptions().then(function(f){return s=f,a=s&&t,r}).then(function(f){if(!l(f))return;if(u=f,a)return Nt.createImageBitmapFromBlob(f,{flipY:i,premultiplyAlpha:!1,skipColorSpaceConversion:o});let h=window.URL.createObjectURL(f);return c=new Nt({url:h}),_9({resource:c,flipY:i,skipColorSpaceConversion:o,preferImageBitmap:!1})}).then(function(f){if(l(f))return f.blob=u,a||window.URL.revokeObjectURL(c.url),f}).catch(function(f){return l(c)&&window.URL.revokeObjectURL(c.url),f.blob=u,Promise.reject(f)})};function _9(e){let t=e.resource,n=e.flipY,i=e.skipColorSpaceConversion,o=e.preferImageBitmap,r=t.request;r.url=t.url,r.requestFunction=function(){let a=!1;!t.isDataUri&&!t.isBlobUri&&(a=t.isCrossOriginUrl);let c=Xl();return Nt._Implementations.createImage(r,a,c,n,i,o),c.promise};let s=Bc.request(r);if(l(s))return s.catch(function(a){return r.state!==fi.FAILED?Promise.reject(a):t.retryOnError(a).then(function(c){return c?(r.state=fi.UNISSUED,r.deferred=void 0,_9({resource:t,flipY:n,skipColorSpaceConversion:i,preferImageBitmap:o})):Promise.reject(a)})})}Nt.fetchImage=function(e){return new Nt(e).fetchImage({flipY:e.flipY,skipColorSpaceConversion:e.skipColorSpaceConversion,preferBlob:e.preferBlob,preferImageBitmap:e.preferImageBitmap})};Nt.prototype.fetchText=function(){return this.fetch({responseType:"text"})};Nt.fetchText=function(e){return new Nt(e).fetchText()};Nt.prototype.fetchJson=function(){let e=this.fetch({responseType:"text",headers:{Accept:"application/json,*/*;q=0.01"}});if(l(e))return e.then(function(t){if(l(t))return JSON.parse(t)})};Nt.fetchJson=function(e){return new Nt(e).fetchJson()};Nt.prototype.fetchXML=function(){return this.fetch({responseType:"document",overrideMimeType:"text/xml"})};Nt.fetchXML=function(e){return new Nt(e).fetchXML()};Nt.prototype.fetchJsonp=function(e){e=e??"callback",y9(this.request);let t;do t=`loadJsonp${D.nextRandomNumber().toString().substring(2,8)}`;while(l(window[t]));return tne(this,e,t)};function tne(e,t,n){let i={};i[t]=n,e.setQueryParameters(i);let o=e.request,r=e.url;o.url=r,o.requestFunction=function(){let a=Xl();return window[n]=function(c){a.resolve(c);try{delete window[n]}catch{window[n]=void 0}},Nt._Implementations.loadAndExecuteScript(r,n,a),a.promise};let s=Bc.request(o);if(l(s))return s.catch(function(a){return o.state!==fi.FAILED?Promise.reject(a):e.retryOnError(a).then(function(c){return c?(o.state=fi.UNISSUED,o.deferred=void 0,tne(e,t,n)):Promise.reject(a)})})}Nt.fetchJsonp=function(e){return new Nt(e).fetchJsonp(e.callbackParameterName)};Nt.prototype._makeRequest=function(e){let t=this;y9(t.request);let n=t.request,i=t.url;n.url=i,n.requestFunction=function(){let r=e.responseType,s=Tt(e.headers,t.headers),a=e.overrideMimeType,c=e.method,u=e.data,f=Xl(),h=Nt._Implementations.loadWithXhr(i,r,c,u,s,f,a);return l(h)&&l(h.abort)&&(n.cancelFunction=function(){h.abort()}),f.promise};let o=Bc.request(n);if(l(o))return o.then(function(r){return n.cancelFunction=void 0,r}).catch(function(r){return n.cancelFunction=void 0,n.state!==fi.FAILED?Promise.reject(r):t.retryOnError(r).then(function(s){return s?(n.state=fi.UNISSUED,n.deferred=void 0,t.fetch(e)):Promise.reject(r)})})};function y9(e){if(e.state===fi.ISSUED||e.state===fi.ACTIVE)throw new ce("The Resource is already being fetched.");e.state=fi.UNISSUED,e.deferred=void 0}var pDe=/^data:(.*?)(;base64)?,(.*)$/;function oG(e,t){let n=decodeURIComponent(t);return e?atob(n):n}function Zte(e,t){let n=oG(e,t),i=new ArrayBuffer(n.length),o=new Uint8Array(i);for(let r=0;r<n.length;r++)o[r]=n.charCodeAt(r);return i}function gDe(e,t){t=t??"";let n=e[1],i=!!e[2],o=e[3],r,s;switch(t){case"":case"text":return oG(i,o);case"arraybuffer":return Zte(i,o);case"blob":return r=Zte(i,o),new Blob([r],{type:n});case"document":return s=new DOMParser,s.parseFromString(oG(i,o),n);case"json":return JSON.parse(oG(i,o));default:}}Nt.prototype.fetch=function(e){return e=Nm(e,{}),e.method="GET",this._makeRequest(e)};Nt.fetch=function(e){return new Nt(e).fetch({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Nt.prototype.delete=function(e){return e=Nm(e,{}),e.method="DELETE",this._makeRequest(e)};Nt.delete=function(e){return new Nt(e).delete({responseType:e.responseType,overrideMimeType:e.overrideMimeType,data:e.data})};Nt.prototype.head=function(e){return e=Nm(e,{}),e.method="HEAD",this._makeRequest(e)};Nt.head=function(e){return new Nt(e).head({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Nt.prototype.options=function(e){return e=Nm(e,{}),e.method="OPTIONS",this._makeRequest(e)};Nt.options=function(e){return new Nt(e).options({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Nt.prototype.post=function(e,t){return Po.defined("data",e),t=Nm(t,{}),t.method="POST",t.data=e,this._makeRequest(t)};Nt.post=function(e){return new Nt(e).post(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Nt.prototype.put=function(e,t){return Po.defined("data",e),t=Nm(t,{}),t.method="PUT",t.data=e,this._makeRequest(t)};Nt.put=function(e){return new Nt(e).put(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Nt.prototype.patch=function(e,t){return Po.defined("data",e),t=Nm(t,{}),t.method="PATCH",t.data=e,this._makeRequest(t)};Nt.patch=function(e){return new Nt(e).patch(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Nt._Implementations={};Nt._Implementations.loadImageElement=function(e,t,n){let i=new Image;i.onload=function(){i.naturalWidth===0&&i.naturalHeight===0&&i.width===0&&i.height===0&&(i.width=300,i.height=150),n.resolve(i)},i.onerror=function(o){n.reject(o)},t&&(zx.contains(e)?i.crossOrigin="use-credentials":i.crossOrigin=""),i.src=e};Nt._Implementations.createImage=function(e,t,n,i,o,r){let s=e.url;Nt.supportsImageBitmapOptions().then(function(a){if(!(a&&r)){Nt._Implementations.loadImageElement(s,t,n);return}let c="blob",u="GET",f=Xl(),h=Nt._Implementations.loadWithXhr(s,c,u,void 0,void 0,f,void 0,void 0,void 0);return l(h)&&l(h.abort)&&(e.cancelFunction=function(){h.abort()}),f.promise.then(function(A){if(!l(A)){n.reject(new ce(`Successfully retrieved ${s} but it contained no content.`));return}return Nt.createImageBitmapFromBlob(A,{flipY:i,premultiplyAlpha:!1,skipColorSpaceConversion:o})}).then(function(A){n.resolve(A)})}).catch(function(a){n.reject(a)})};Nt.createImageBitmapFromBlob=function(e,t){return Po.defined("options",t),Po.typeOf.bool("options.flipY",t.flipY),Po.typeOf.bool("options.premultiplyAlpha",t.premultiplyAlpha),Po.typeOf.bool("options.skipColorSpaceConversion",t.skipColorSpaceConversion),createImageBitmap(e,{imageOrientation:t.flipY?"flipY":"from-image",premultiplyAlpha:t.premultiplyAlpha?"premultiply":"none",colorSpaceConversion:t.skipColorSpaceConversion?"none":"default"})};function _De(e,t,n,i,o,r,s){fetch(e,{method:n,headers:o}).then(async a=>{if(!a.ok){let c={};a.headers.forEach((u,f)=>{c[f]=u}),r.reject(new Rm(a.status,a,c));return}switch(t){case"text":r.resolve(a.text());break;case"json":r.resolve(a.json());break;default:r.resolve(new Uint8Array(await a.arrayBuffer()).buffer);break}}).catch(()=>{r.reject(new Rm)})}var yDe=typeof XMLHttpRequest>"u";Nt._Implementations.loadWithXhr=function(e,t,n,i,o,r,s){let a=pDe.exec(e);if(a!==null){r.resolve(gDe(a,t));return}if(yDe){_De(e,t,n,i,o,r,s);return}let c=new XMLHttpRequest;if(zx.contains(e)&&(c.withCredentials=!0),c.open(n,e,!0),l(s)&&l(c.overrideMimeType)&&c.overrideMimeType(s),l(o))for(let f in o)o.hasOwnProperty(f)&&c.setRequestHeader(f,o[f]);l(t)&&(c.responseType=t);let u=!1;return typeof e=="string"&&(u=e.indexOf("file://")===0||typeof window<"u"&&window.location.origin==="file://"),c.onload=function(){if((c.status<200||c.status>=300)&&!(u&&c.status===0)){r.reject(new Rm(c.status,c.response,c.getAllResponseHeaders()));return}let f=c.response,h=c.responseType;if(n==="HEAD"||n==="OPTIONS"){let g=c.getAllResponseHeaders().trim().split(/[\r\n]+/),m={};g.forEach(function(_){let y=_.split(": "),C=y.shift();m[C]=y.join(": ")}),r.resolve(m);return}if(c.status===204)r.resolve(void 0);else if(l(f)&&(!l(t)||h===t))r.resolve(f);else if(t==="json"&&typeof f=="string")try{r.resolve(JSON.parse(f))}catch(A){r.reject(A)}else(h===""||h==="document")&&l(c.responseXML)&&c.responseXML.hasChildNodes()?r.resolve(c.responseXML):(h===""||h==="text")&&l(c.responseText)?r.resolve(c.responseText):r.reject(new ce("Invalid XMLHttpRequest response type."))},c.onerror=function(f){r.reject(new Rm)},c.send(i),c};Nt._Implementations.loadAndExecuteScript=function(e,t,n){return zC(e,t).catch(function(i){n.reject(i)})};Nt._DefaultImplementations={};Nt._DefaultImplementations.createImage=Nt._Implementations.createImage;Nt._DefaultImplementations.loadWithXhr=Nt._Implementations.loadWithXhr;Nt._DefaultImplementations.loadAndExecuteScript=Nt._Implementations.loadAndExecuteScript;Nt.DEFAULT=Object.freeze(new Nt({url:typeof document>"u"?"":document.location.href.split("?")[0]}));var we=Nt;function yB(e){e=e??V.EMPTY_OBJECT,this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._addNewLeapSeconds=e.addNewLeapSeconds??!0,l(e.data)?nne(this,e.data):nne(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})}yB.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=we.createIfNeeded(e),i;try{i=await n.fetchJson()}catch{throw new ce(`An error occurred while retrieving the EOP data from the URL ${n.url}.`)}return new yB({addNewLeapSeconds:t.addNewLeapSeconds,data:i})};yB.NONE=Object.freeze({compute:function(e,t){return l(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new A_(0,0,0,0,0),t}});yB.prototype.compute=function(e,t){if(!l(this._samples))return;if(l(t)||(t=new A_(0,0,0,0,0)),this._samples.length===0)return t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0,t;let n=this._dates,i=this._lastIndex,o=0,r=0;if(l(i)){let a=n[i],c=n[i+1],u=K.lessThanOrEquals(a,e),f=!l(c),h=f||K.greaterThanOrEquals(c,e);if(u&&h)return o=i,!f&&c.equals(e)&&++o,r=o+1,one(this,n,this._samples,e,o,r,t),t}let s=Wo(n,e,K.compare,this._dateColumn);return s>=0?(s<n.length-1&&n[s+1].equals(e)&&++s,o=s,r=s):(r=~s,o=r-1,o<0&&(o=0)),this._lastIndex=o,one(this,n,this._samples,e,o,r,t),t};function CDe(e,t){return K.compare(e.julianDate,t)}function nne(e,t){if(!l(t.columnNames))throw new ce("Error in loaded EOP data: The columnNames property is required.");if(!l(t.samples))throw new ce("Error in loaded EOP data: The samples property is required.");let n=t.columnNames.indexOf("modifiedJulianDateUtc"),i=t.columnNames.indexOf("xPoleWanderRadians"),o=t.columnNames.indexOf("yPoleWanderRadians"),r=t.columnNames.indexOf("ut1MinusUtcSeconds"),s=t.columnNames.indexOf("xCelestialPoleOffsetRadians"),a=t.columnNames.indexOf("yCelestialPoleOffsetRadians"),c=t.columnNames.indexOf("taiMinusUtcSeconds");if(n<0||i<0||o<0||r<0||s<0||a<0||c<0)throw new ce("Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns");let u=e._samples=t.samples,f=e._dates=[];e._dateColumn=n,e._xPoleWanderRadiansColumn=i,e._yPoleWanderRadiansColumn=o,e._ut1MinusUtcSecondsColumn=r,e._xCelestialPoleOffsetRadiansColumn=s,e._yCelestialPoleOffsetRadiansColumn=a,e._taiMinusUtcSecondsColumn=c,e._columnCount=t.columnNames.length,e._lastIndex=void 0;let h,A=e._addNewLeapSeconds;for(let g=0,m=u.length;g<m;g+=e._columnCount){let _=u[g+n],y=u[g+c],C=_+ri.MODIFIED_JULIAN_DATE_DIFFERENCE,E=new K(C,y,ni.TAI);if(f.push(E),A){if(y!==h&&l(h)){let I=K.leapSeconds,b=Wo(I,E,CDe);if(b<0){let S=new oo(E,y);I.splice(~b,0,S)}}h=y}}}function ine(e,t,n,i,o){let r=n*i;o.xPoleWander=t[r+e._xPoleWanderRadiansColumn],o.yPoleWander=t[r+e._yPoleWanderRadiansColumn],o.xPoleOffset=t[r+e._xCelestialPoleOffsetRadiansColumn],o.yPoleOffset=t[r+e._yCelestialPoleOffsetRadiansColumn],o.ut1MinusUtc=t[r+e._ut1MinusUtcSecondsColumn]}function _B(e,t,n){return t+e*(n-t)}function one(e,t,n,i,o,r,s){let a=e._columnCount;if(r>t.length-1)return s.xPoleWander=0,s.yPoleWander=0,s.xPoleOffset=0,s.yPoleOffset=0,s.ut1MinusUtc=0,s;let c=t[o],u=t[r];if(c.equals(u)||i.equals(c))return ine(e,n,o,a,s),s;if(i.equals(u))return ine(e,n,r,a,s),s;let f=K.secondsDifference(i,c)/K.secondsDifference(u,c),h=o*a,A=r*a,g=n[h+e._ut1MinusUtcSecondsColumn],m=n[A+e._ut1MinusUtcSecondsColumn],_=m-g;if(_>.5||_<-.5){let y=n[h+e._taiMinusUtcSecondsColumn],C=n[A+e._taiMinusUtcSecondsColumn];y!==C&&(u.equals(i)?g=m:m-=C-y)}return s.xPoleWander=_B(f,n[h+e._xPoleWanderRadiansColumn],n[A+e._xPoleWanderRadiansColumn]),s.yPoleWander=_B(f,n[h+e._yPoleWanderRadiansColumn],n[A+e._yPoleWanderRadiansColumn]),s.xPoleOffset=_B(f,n[h+e._xCelestialPoleOffsetRadiansColumn],n[A+e._xCelestialPoleOffsetRadiansColumn]),s.yPoleOffset=_B(f,n[h+e._yCelestialPoleOffsetRadiansColumn],n[A+e._yCelestialPoleOffsetRadiansColumn]),s.ut1MinusUtc=_B(f,g,m),s}var CB=yB;function Dc(e,t,n){this.heading=e??0,this.pitch=t??0,this.roll=n??0}Dc.fromQuaternion=function(e,t){l(t)||(t=new Dc);let n=2*(e.w*e.y-e.z*e.x),i=1-2*(e.x*e.x+e.y*e.y),o=2*(e.w*e.x+e.y*e.z),r=1-2*(e.y*e.y+e.z*e.z),s=2*(e.w*e.z+e.x*e.y);return t.heading=-Math.atan2(s,r),t.roll=Math.atan2(o,i),t.pitch=-D.asinClamped(n),t};Dc.fromDegrees=function(e,t,n,i){return l(i)||(i=new Dc),i.heading=e*D.RADIANS_PER_DEGREE,i.pitch=t*D.RADIANS_PER_DEGREE,i.roll=n*D.RADIANS_PER_DEGREE,i};Dc.clone=function(e,t){if(l(e))return l(t)?(t.heading=e.heading,t.pitch=e.pitch,t.roll=e.roll,t):new Dc(e.heading,e.pitch,e.roll)};Dc.equals=function(e,t){return e===t||l(e)&&l(t)&&e.heading===t.heading&&e.pitch===t.pitch&&e.roll===t.roll};Dc.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&D.equalsEpsilon(e.heading,t.heading,n,i)&&D.equalsEpsilon(e.pitch,t.pitch,n,i)&&D.equalsEpsilon(e.roll,t.roll,n,i)};Dc.prototype.clone=function(e){return Dc.clone(this,e)};Dc.prototype.equals=function(e){return Dc.equals(this,e)};Dc.prototype.equalsEpsilon=function(e,t,n){return Dc.equalsEpsilon(this,e,t,n)};Dc.prototype.toString=function(){return`(${this.heading}, ${this.pitch}, ${this.roll})`};var rc=Dc;var rne={},sne=/((?:.*\/)|^)Cesium\.js(?:\?|\#|$)/;function EDe(){let e=document.getElementsByTagName("script");for(let t=0,n=e.length;t<n;++t){let i=e[t].getAttribute("src"),o=sne.exec(i);if(o!==null)return o[1]}}var sG;function ane(e){return typeof document>"u"?e:(l(sG)||(sG=document.createElement("a")),sG.href=e,sG.href)}var jC;function cne(){if(l(jC))return jC;let e;return typeof CESIUM_BASE_URL<"u"?e=CESIUM_BASE_URL:l(rne?.url)?e=vm(".",rne.url):typeof define=="object"&&l(define.amd)&&!define.amd.toUrlUndefined&&l(require.toUrl)?e=vm("..",YC("Core/buildModuleUrl.js")):e=EDe(),jC=new we({url:ane(e)}),jC.appendForwardSlash(),jC}function IDe(e){return ane(require.toUrl(`../${e}`))}function lne(e){return cne().getDerivedResource({url:e}).url}var aG;function YC(e){return l(aG)||(typeof define=="object"&&l(define.amd)&&!define.amd.toUrlUndefined&&l(require.toUrl)?aG=IDe:aG=lne),aG(e)}YC._cesiumScriptRegex=sne;YC._buildModuleUrlFromBaseUrl=lne;YC._clearBaseResource=function(){jC=void 0};YC.setBaseUrl=function(e){jC=we.DEFAULT.getDerivedResource({url:e})};YC.getCesiumBaseUrl=cne;var fn=YC;function xDe(e,t,n){this.x=e,this.y=t,this.s=n}var qC=xDe;function I9(e){e=e??V.EMPTY_OBJECT,this._xysFileUrlTemplate=we.createIfNeeded(e.xysFileUrlTemplate),this._interpolationOrder=e.interpolationOrder??9,this._sampleZeroJulianEphemerisDate=e.sampleZeroJulianEphemerisDate??24423965e-1,this._sampleZeroDateTT=new K(this._sampleZeroJulianEphemerisDate,0,ni.TAI),this._stepSizeDays=e.stepSizeDays??1,this._samplesPerXysFile=e.samplesPerXysFile??1e3,this._totalSamples=e.totalSamples??27426,this._samples=new Array(this._totalSamples*3),this._chunkDownloadsInProgress=[];let t=this._interpolationOrder,n=this._denominators=new Array(t+1),i=this._xTable=new Array(t+1),o=Math.pow(this._stepSizeDays,t);for(let r=0;r<=t;++r){n[r]=o,i[r]=r*this._stepSizeDays;for(let s=0;s<=t;++s)s!==r&&(n[r]*=r-s);n[r]=1/n[r]}this._work=new Array(t+1),this._coef=new Array(t+1)}var bDe=new K(0,0,ni.TAI);function C9(e,t,n){let i=bDe;return i.dayNumber=t,i.secondsOfDay=n,K.daysDifference(i,e._sampleZeroDateTT)}I9.prototype.preload=function(e,t,n,i){let o=C9(this,e,t),r=C9(this,n,i),s=o/this._stepSizeDays-this._interpolationOrder/2|0;s<0&&(s=0);let a=r/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;a>=this._totalSamples&&(a=this._totalSamples-1);let c=s/this._samplesPerXysFile|0,u=a/this._samplesPerXysFile|0,f=[];for(let h=c;h<=u;++h)f.push(E9(this,h));return Promise.all(f)};I9.prototype.computeXysRadians=function(e,t,n){let i=C9(this,e,t);if(i<0)return;let o=i/this._stepSizeDays|0;if(o>=this._totalSamples)return;let r=this._interpolationOrder,s=o-(r/2|0);s<0&&(s=0);let a=s+r;a>=this._totalSamples&&(a=this._totalSamples-1,s=a-r,s<0&&(s=0));let c=!1,u=this._samples;if(l(u[s*3])||(E9(this,s/this._samplesPerXysFile|0),c=!0),l(u[a*3])||(E9(this,a/this._samplesPerXysFile|0),c=!0),c)return;l(n)?(n.x=0,n.y=0,n.s=0):n=new qC(0,0,0);let f=i-s*this._stepSizeDays,h=this._work,A=this._denominators,g=this._coef,m=this._xTable,_,y;for(_=0;_<=r;++_)h[_]=f-m[_];for(_=0;_<=r;++_){for(g[_]=1,y=0;y<=r;++y)y!==_&&(g[_]*=h[y]);g[_]*=A[_];let C=(s+_)*3;n.x+=g[_]*u[C++],n.y+=g[_]*u[C++],n.s+=g[_]*u[C]}return n};function E9(e,t){if(e._chunkDownloadsInProgress[t])return e._chunkDownloadsInProgress[t];let n,i=e._xysFileUrlTemplate;l(i)?n=i.getDerivedResource({templateValues:{0:t}}):n=new we({url:fn(`Assets/IAU2006_XYS/IAU2006_XYS_${t}.json`)});let o=n.fetchJson().then(function(r){e._chunkDownloadsInProgress[t]=!1;let s=e._samples,a=r.samples,c=t*e._samplesPerXysFile*3;for(let u=0,f=a.length;u<f;++u)s[c+u]=a[u]});return e._chunkDownloadsInProgress[t]=o,o}var EB=I9;function st(e,t,n,i,o,r,s,a,c){this[0]=e??0,this[1]=i??0,this[2]=s??0,this[3]=t??0,this[4]=o??0,this[5]=a??0,this[6]=n??0,this[7]=r??0,this[8]=c??0}st.packedLength=9;st.pack=function(e,t,n){return n=n??0,t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t};st.unpack=function(e,t,n){return t=t??0,l(n)||(n=new st),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n[4]=e[t++],n[5]=e[t++],n[6]=e[t++],n[7]=e[t++],n[8]=e[t++],n};st.packArray=function(e,t){let n=e.length,i=n*9;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)st.pack(e[o],t,o*9);return t};st.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/9:t=new Array(n/9);for(let i=0;i<n;i+=9){let o=i/9;t[o]=st.unpack(e,i,t[o])}return t};st.clone=function(e,t){if(l(e))return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new st(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8])};st.fromArray=st.unpack;st.fromColumnMajorArray=function(e,t){return st.clone(e,t)};st.fromRowMajorArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new st(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])};st.fromQuaternion=function(e,t){let n=e.x*e.x,i=e.x*e.y,o=e.x*e.z,r=e.x*e.w,s=e.y*e.y,a=e.y*e.z,c=e.y*e.w,u=e.z*e.z,f=e.z*e.w,h=e.w*e.w,A=n-s-u+h,g=2*(i-f),m=2*(o+c),_=2*(i+f),y=-n+s-u+h,C=2*(a-r),E=2*(o-c),I=2*(a+r),b=-n-s+u+h;return l(t)?(t[0]=A,t[1]=_,t[2]=E,t[3]=g,t[4]=y,t[5]=I,t[6]=m,t[7]=C,t[8]=b,t):new st(A,g,m,_,y,C,E,I,b)};st.fromHeadingPitchRoll=function(e,t){let n=Math.cos(-e.pitch),i=Math.cos(-e.heading),o=Math.cos(e.roll),r=Math.sin(-e.pitch),s=Math.sin(-e.heading),a=Math.sin(e.roll),c=n*i,u=-o*s+a*r*i,f=a*s+o*r*i,h=n*s,A=o*i+a*r*s,g=-a*i+o*r*s,m=-r,_=a*n,y=o*n;return l(t)?(t[0]=c,t[1]=h,t[2]=m,t[3]=u,t[4]=A,t[5]=_,t[6]=f,t[7]=g,t[8]=y,t):new st(c,u,f,h,A,g,m,_,y)};st.fromScale=function(e,t){return l(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new st(e.x,0,0,0,e.y,0,0,0,e.z)};st.fromUniformScale=function(e,t){return l(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new st(e,0,0,0,e,0,0,0,e)};st.fromCrossProduct=function(e,t){return l(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new st(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)};st.fromRotationX=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=n,t[5]=i,t[6]=0,t[7]=-i,t[8]=n,t):new st(1,0,0,0,n,-i,0,i,n)};st.fromRotationY=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=n,t[1]=0,t[2]=-i,t[3]=0,t[4]=1,t[5]=0,t[6]=i,t[7]=0,t[8]=n,t):new st(n,0,i,0,1,0,-i,0,n)};st.fromRotationZ=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=n,t[1]=i,t[2]=0,t[3]=-i,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new st(n,-i,0,i,n,0,0,0,1)};st.toArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]};st.getElementIndex=function(e,t){return e*3+t};st.getColumn=function(e,t,n){let i=t*3,o=e[i],r=e[i+1],s=e[i+2];return n.x=o,n.y=r,n.z=s,n};st.setColumn=function(e,t,n,i){i=st.clone(e,i);let o=t*3;return i[o]=n.x,i[o+1]=n.y,i[o+2]=n.z,i};st.getRow=function(e,t,n){let i=e[t],o=e[t+3],r=e[t+6];return n.x=i,n.y=o,n.z=r,n};st.setRow=function(e,t,n,i){return i=st.clone(e,i),i[t]=n.x,i[t+3]=n.y,i[t+6]=n.z,i};var TDe=new d;st.setScale=function(e,t,n){let i=st.getScale(e,TDe),o=t.x/i.x,r=t.y/i.y,s=t.z/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3]*r,n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*s,n[7]=e[7]*s,n[8]=e[8]*s,n};var SDe=new d;st.setUniformScale=function(e,t,n){let i=st.getScale(e,SDe),o=t/i.x,r=t/i.y,s=t/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3]*r,n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*s,n[7]=e[7]*s,n[8]=e[8]*s,n};var x9=new d;st.getScale=function(e,t){return t.x=d.magnitude(d.fromElements(e[0],e[1],e[2],x9)),t.y=d.magnitude(d.fromElements(e[3],e[4],e[5],x9)),t.z=d.magnitude(d.fromElements(e[6],e[7],e[8],x9)),t};var une=new d;st.getMaximumScale=function(e){return st.getScale(e,une),d.maximumComponent(une)};var wDe=new d;st.setRotation=function(e,t,n){let i=st.getScale(e,wDe);return n[0]=t[0]*i.x,n[1]=t[1]*i.x,n[2]=t[2]*i.x,n[3]=t[3]*i.y,n[4]=t[4]*i.y,n[5]=t[5]*i.y,n[6]=t[6]*i.z,n[7]=t[7]*i.z,n[8]=t[8]*i.z,n};var BDe=new d;st.getRotation=function(e,t){let n=st.getScale(e,BDe);return t[0]=e[0]/n.x,t[1]=e[1]/n.x,t[2]=e[2]/n.x,t[3]=e[3]/n.y,t[4]=e[4]/n.y,t[5]=e[5]/n.y,t[6]=e[6]/n.z,t[7]=e[7]/n.z,t[8]=e[8]/n.z,t};st.multiply=function(e,t,n){let i=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],o=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],r=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],s=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],a=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],c=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],u=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],f=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],h=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return n[0]=i,n[1]=o,n[2]=r,n[3]=s,n[4]=a,n[5]=c,n[6]=u,n[7]=f,n[8]=h,n};st.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n};st.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n};st.multiplyByVector=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=e[0]*i+e[3]*o+e[6]*r,a=e[1]*i+e[4]*o+e[7]*r,c=e[2]*i+e[5]*o+e[8]*r;return n.x=s,n.y=a,n.z=c,n};st.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n};st.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.x,n[3]=e[3]*t.y,n[4]=e[4]*t.y,n[5]=e[5]*t.y,n[6]=e[6]*t.z,n[7]=e[7]*t.z,n[8]=e[8]*t.z,n};st.multiplyByUniformScale=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n};st.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t};st.transpose=function(e,t){let n=e[0],i=e[3],o=e[6],r=e[1],s=e[4],a=e[7],c=e[2],u=e[5],f=e[8];return t[0]=n,t[1]=i,t[2]=o,t[3]=r,t[4]=s,t[5]=a,t[6]=c,t[7]=u,t[8]=f,t};function DDe(e){let t=0;for(let n=0;n<9;++n){let i=e[n];t+=i*i}return Math.sqrt(t)}var b9=[1,0,0],T9=[2,2,1];function vDe(e){let t=0;for(let n=0;n<3;++n){let i=e[st.getElementIndex(T9[n],b9[n])];t+=2*i*i}return Math.sqrt(t)}function PDe(e,t){let n=D.EPSILON15,i=0,o=1;for(let u=0;u<3;++u){let f=Math.abs(e[st.getElementIndex(T9[u],b9[u])]);f>i&&(o=u,i=f)}let r=1,s=0,a=b9[o],c=T9[o];if(Math.abs(e[st.getElementIndex(c,a)])>n){let u=e[st.getElementIndex(c,c)],f=e[st.getElementIndex(a,a)],h=e[st.getElementIndex(c,a)],A=(u-f)/2/h,g;A<0?g=-1/(-A+Math.sqrt(1+A*A)):g=1/(A+Math.sqrt(1+A*A)),r=1/Math.sqrt(1+g*g),s=g*r}return t=st.clone(st.IDENTITY,t),t[st.getElementIndex(a,a)]=t[st.getElementIndex(c,c)]=r,t[st.getElementIndex(c,a)]=s,t[st.getElementIndex(a,c)]=-s,t}var cG=new st,fne=new st;st.computeEigenDecomposition=function(e,t){let n=D.EPSILON20,i=10,o=0,r=0;l(t)||(t={});let s=t.unitary=st.clone(st.IDENTITY,t.unitary),a=t.diagonal=st.clone(e,t.diagonal),c=n*DDe(a);for(;r<i&&vDe(a)>c;)PDe(a,cG),st.transpose(cG,fne),st.multiply(a,cG,a),st.multiply(fne,a,a),st.multiply(s,cG,s),++o>2&&(++r,o=0);return t};st.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t};st.determinant=function(e){let t=e[0],n=e[3],i=e[6],o=e[1],r=e[4],s=e[7],a=e[2],c=e[5],u=e[8];return t*(r*u-c*s)+o*(c*i-n*u)+a*(n*s-r*i)};st.inverse=function(e,t){let n=e[0],i=e[1],o=e[2],r=e[3],s=e[4],a=e[5],c=e[6],u=e[7],f=e[8],h=st.determinant(e);t[0]=s*f-u*a,t[1]=u*o-i*f,t[2]=i*a-s*o,t[3]=c*a-r*f,t[4]=n*f-c*o,t[5]=r*o-n*a,t[6]=r*u-c*s,t[7]=c*i-n*u,t[8]=n*s-r*i;let A=1/h;return st.multiplyByScalar(t,A,t)};var RDe=new st;st.inverseTranspose=function(e,t){return st.inverse(st.transpose(e,RDe),t)};st.equals=function(e,t){return e===t||l(e)&&l(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]};st.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n};st.IDENTITY=Object.freeze(new st(1,0,0,0,1,0,0,0,1));st.ZERO=Object.freeze(new st(0,0,0,0,0,0,0,0,0));st.COLUMN0ROW0=0;st.COLUMN0ROW1=1;st.COLUMN0ROW2=2;st.COLUMN1ROW0=3;st.COLUMN1ROW1=4;st.COLUMN1ROW2=5;st.COLUMN2ROW0=6;st.COLUMN2ROW1=7;st.COLUMN2ROW2=8;Object.defineProperties(st.prototype,{length:{get:function(){return st.packedLength}}});st.prototype.clone=function(e){return st.clone(this,e)};st.prototype.equals=function(e){return st.equals(this,e)};st.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]};st.prototype.equalsEpsilon=function(e,t){return st.equalsEpsilon(this,e,t)};st.prototype.toString=function(){return`(${this[0]}, ${this[3]}, ${this[6]}) +(${this[1]}, ${this[4]}, ${this[7]}) +(${this[2]}, ${this[5]}, ${this[8]})`};var J=st;function rt(e,t,n,i,o,r,s,a,c,u,f,h,A,g,m,_){this[0]=e??0,this[1]=o??0,this[2]=c??0,this[3]=A??0,this[4]=t??0,this[5]=r??0,this[6]=u??0,this[7]=g??0,this[8]=n??0,this[9]=s??0,this[10]=f??0,this[11]=m??0,this[12]=i??0,this[13]=a??0,this[14]=h??0,this[15]=_??0}rt.packedLength=16;rt.pack=function(e,t,n){return n=n??0,t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t[n++]=e[9],t[n++]=e[10],t[n++]=e[11],t[n++]=e[12],t[n++]=e[13],t[n++]=e[14],t[n]=e[15],t};rt.unpack=function(e,t,n){return t=t??0,l(n)||(n=new rt),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n[4]=e[t++],n[5]=e[t++],n[6]=e[t++],n[7]=e[t++],n[8]=e[t++],n[9]=e[t++],n[10]=e[t++],n[11]=e[t++],n[12]=e[t++],n[13]=e[t++],n[14]=e[t++],n[15]=e[t],n};rt.packArray=function(e,t){let n=e.length,i=n*16;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)rt.pack(e[o],t,o*16);return t};rt.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/16:t=new Array(n/16);for(let i=0;i<n;i+=16){let o=i/16;t[o]=rt.unpack(e,i,t[o])}return t};rt.clone=function(e,t){if(l(e))return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new rt(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15])};rt.fromArray=rt.unpack;rt.fromColumnMajorArray=function(e,t){return rt.clone(e,t)};rt.fromRowMajorArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new rt(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])};rt.fromRotationTranslation=function(e,t,n){return t=t??d.ZERO,l(n)?(n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=0,n[4]=e[3],n[5]=e[4],n[6]=e[5],n[7]=0,n[8]=e[6],n[9]=e[7],n[10]=e[8],n[11]=0,n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=1,n):new rt(e[0],e[3],e[6],t.x,e[1],e[4],e[7],t.y,e[2],e[5],e[8],t.z,0,0,0,1)};rt.fromTranslationQuaternionRotationScale=function(e,t,n,i){l(i)||(i=new rt);let o=n.x,r=n.y,s=n.z,a=t.x*t.x,c=t.x*t.y,u=t.x*t.z,f=t.x*t.w,h=t.y*t.y,A=t.y*t.z,g=t.y*t.w,m=t.z*t.z,_=t.z*t.w,y=t.w*t.w,C=a-h-m+y,E=2*(c-_),I=2*(u+g),b=2*(c+_),S=-a+h-m+y,B=2*(A-f),v=2*(u-g),P=2*(A+f),M=-a-h+m+y;return i[0]=C*o,i[1]=b*o,i[2]=v*o,i[3]=0,i[4]=E*r,i[5]=S*r,i[6]=P*r,i[7]=0,i[8]=I*s,i[9]=B*s,i[10]=M*s,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,i};rt.fromTranslationRotationScale=function(e,t){return rt.fromTranslationQuaternionRotationScale(e.translation,e.rotation,e.scale,t)};rt.fromTranslation=function(e,t){return rt.fromRotationTranslation(J.IDENTITY,e,t)};rt.fromScale=function(e,t){return l(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new rt(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)};rt.fromUniformScale=function(e,t){return l(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new rt(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};rt.fromRotation=function(e,t){return l(t)||(t=new rt),t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=0,t[4]=e[3],t[5]=e[4],t[6]=e[5],t[7]=0,t[8]=e[6],t[9]=e[7],t[10]=e[8],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t};var Hx=new d,Wx=new d,IB=new d;rt.fromCamera=function(e,t){let n=e.position,i=e.direction,o=e.up;d.normalize(i,Hx),d.normalize(d.cross(Hx,o,Wx),Wx),d.normalize(d.cross(Wx,Hx,IB),IB);let r=Wx.x,s=Wx.y,a=Wx.z,c=Hx.x,u=Hx.y,f=Hx.z,h=IB.x,A=IB.y,g=IB.z,m=n.x,_=n.y,y=n.z,C=r*-m+s*-_+a*-y,E=h*-m+A*-_+g*-y,I=c*m+u*_+f*y;return l(t)?(t[0]=r,t[1]=h,t[2]=-c,t[3]=0,t[4]=s,t[5]=A,t[6]=-u,t[7]=0,t[8]=a,t[9]=g,t[10]=-f,t[11]=0,t[12]=C,t[13]=E,t[14]=I,t[15]=1,t):new rt(r,s,a,C,h,A,g,E,-c,-u,-f,I,0,0,0,1)};rt.computePerspectiveFieldOfView=function(e,t,n,i,o){let s=1/Math.tan(e*.5),a=s/t,c=(i+n)/(n-i),u=2*i*n/(n-i);return o[0]=a,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=-1,o[12]=0,o[13]=0,o[14]=u,o[15]=0,o};rt.computeOrthographicOffCenter=function(e,t,n,i,o,r,s){let a=1/(t-e),c=1/(i-n),u=1/(r-o),f=-(t+e)*a,h=-(i+n)*c,A=-(r+o)*u;return a*=2,c*=2,u*=-2,s[0]=a,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=c,s[6]=0,s[7]=0,s[8]=0,s[9]=0,s[10]=u,s[11]=0,s[12]=f,s[13]=h,s[14]=A,s[15]=1,s};rt.computePerspectiveOffCenter=function(e,t,n,i,o,r,s){let a=2*o/(t-e),c=2*o/(i-n),u=(t+e)/(t-e),f=(i+n)/(i-n),h=-(r+o)/(r-o),A=-1,g=-2*r*o/(r-o);return s[0]=a,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=c,s[6]=0,s[7]=0,s[8]=u,s[9]=f,s[10]=h,s[11]=A,s[12]=0,s[13]=0,s[14]=g,s[15]=0,s};rt.computeInfinitePerspectiveOffCenter=function(e,t,n,i,o,r){let s=2*o/(t-e),a=2*o/(i-n),c=(t+e)/(t-e),u=(i+n)/(i-n),f=-1,h=-1,A=-2*o;return r[0]=s,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=a,r[6]=0,r[7]=0,r[8]=c,r[9]=u,r[10]=f,r[11]=h,r[12]=0,r[13]=0,r[14]=A,r[15]=0,r};rt.computeViewportTransformation=function(e,t,n,i){l(i)||(i=new rt),e=e??V.EMPTY_OBJECT;let o=e.x??0,r=e.y??0,s=e.width??0,a=e.height??0;t=t??0,n=n??1;let c=s*.5,u=a*.5,f=(n-t)*.5,h=c,A=u,g=f,m=o+c,_=r+u,y=t+f,C=1;return i[0]=h,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=A,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=g,i[11]=0,i[12]=m,i[13]=_,i[14]=y,i[15]=C,i};rt.computeView=function(e,t,n,i,o){return o[0]=i.x,o[1]=n.x,o[2]=-t.x,o[3]=0,o[4]=i.y,o[5]=n.y,o[6]=-t.y,o[7]=0,o[8]=i.z,o[9]=n.z,o[10]=-t.z,o[11]=0,o[12]=-d.dot(i,e),o[13]=-d.dot(n,e),o[14]=d.dot(t,e),o[15]=1,o};rt.toArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]};rt.getElementIndex=function(e,t){return e*4+t};rt.getColumn=function(e,t,n){let i=t*4,o=e[i],r=e[i+1],s=e[i+2],a=e[i+3];return n.x=o,n.y=r,n.z=s,n.w=a,n};rt.setColumn=function(e,t,n,i){i=rt.clone(e,i);let o=t*4;return i[o]=n.x,i[o+1]=n.y,i[o+2]=n.z,i[o+3]=n.w,i};rt.getRow=function(e,t,n){let i=e[t],o=e[t+4],r=e[t+8],s=e[t+12];return n.x=i,n.y=o,n.z=r,n.w=s,n};rt.setRow=function(e,t,n,i){return i=rt.clone(e,i),i[t]=n.x,i[t+4]=n.y,i[t+8]=n.z,i[t+12]=n.w,i};rt.setTranslation=function(e,t,n){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=e[15],n};var MDe=new d;rt.setScale=function(e,t,n){let i=rt.getScale(e,MDe),o=t.x/i.x,r=t.y/i.y,s=t.z/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3],n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*r,n[7]=e[7],n[8]=e[8]*s,n[9]=e[9]*s,n[10]=e[10]*s,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};var NDe=new d;rt.setUniformScale=function(e,t,n){let i=rt.getScale(e,NDe),o=t/i.x,r=t/i.y,s=t/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3],n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*r,n[7]=e[7],n[8]=e[8]*s,n[9]=e[9]*s,n[10]=e[10]*s,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};var S9=new d;rt.getScale=function(e,t){return t.x=d.magnitude(d.fromElements(e[0],e[1],e[2],S9)),t.y=d.magnitude(d.fromElements(e[4],e[5],e[6],S9)),t.z=d.magnitude(d.fromElements(e[8],e[9],e[10],S9)),t};var dne=new d;rt.getMaximumScale=function(e){return rt.getScale(e,dne),d.maximumComponent(dne)};var LDe=new d;rt.setRotation=function(e,t,n){let i=rt.getScale(e,LDe);return n[0]=t[0]*i.x,n[1]=t[1]*i.x,n[2]=t[2]*i.x,n[3]=e[3],n[4]=t[3]*i.y,n[5]=t[4]*i.y,n[6]=t[5]*i.y,n[7]=e[7],n[8]=t[6]*i.z,n[9]=t[7]*i.z,n[10]=t[8]*i.z,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};var ODe=new d;rt.getRotation=function(e,t){let n=rt.getScale(e,ODe);return t[0]=e[0]/n.x,t[1]=e[1]/n.x,t[2]=e[2]/n.x,t[3]=e[4]/n.y,t[4]=e[5]/n.y,t[5]=e[6]/n.y,t[6]=e[8]/n.z,t[7]=e[9]/n.z,t[8]=e[10]/n.z,t};rt.multiply=function(e,t,n){let i=e[0],o=e[1],r=e[2],s=e[3],a=e[4],c=e[5],u=e[6],f=e[7],h=e[8],A=e[9],g=e[10],m=e[11],_=e[12],y=e[13],C=e[14],E=e[15],I=t[0],b=t[1],S=t[2],B=t[3],v=t[4],P=t[5],M=t[6],L=t[7],p=t[8],x=t[9],T=t[10],w=t[11],R=t[12],O=t[13],k=t[14],Q=t[15],z=i*I+a*b+h*S+_*B,F=o*I+c*b+A*S+y*B,H=r*I+u*b+g*S+C*B,W=s*I+f*b+m*S+E*B,Z=i*v+a*P+h*M+_*L,Y=o*v+c*P+A*M+y*L,$=r*v+u*P+g*M+C*L,X=s*v+f*P+m*M+E*L,he=i*p+a*x+h*T+_*w,ge=o*p+c*x+A*T+y*w,fe=r*p+u*x+g*T+C*w,ye=s*p+f*x+m*T+E*w,xe=i*R+a*O+h*k+_*Q,ve=o*R+c*O+A*k+y*Q,Te=r*R+u*O+g*k+C*Q,ke=s*R+f*O+m*k+E*Q;return n[0]=z,n[1]=F,n[2]=H,n[3]=W,n[4]=Z,n[5]=Y,n[6]=$,n[7]=X,n[8]=he,n[9]=ge,n[10]=fe,n[11]=ye,n[12]=xe,n[13]=ve,n[14]=Te,n[15]=ke,n};rt.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n[9]=e[9]+t[9],n[10]=e[10]+t[10],n[11]=e[11]+t[11],n[12]=e[12]+t[12],n[13]=e[13]+t[13],n[14]=e[14]+t[14],n[15]=e[15]+t[15],n};rt.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n[9]=e[9]-t[9],n[10]=e[10]-t[10],n[11]=e[11]-t[11],n[12]=e[12]-t[12],n[13]=e[13]-t[13],n[14]=e[14]-t[14],n[15]=e[15]-t[15],n};rt.multiplyTransformation=function(e,t,n){let i=e[0],o=e[1],r=e[2],s=e[4],a=e[5],c=e[6],u=e[8],f=e[9],h=e[10],A=e[12],g=e[13],m=e[14],_=t[0],y=t[1],C=t[2],E=t[4],I=t[5],b=t[6],S=t[8],B=t[9],v=t[10],P=t[12],M=t[13],L=t[14],p=i*_+s*y+u*C,x=o*_+a*y+f*C,T=r*_+c*y+h*C,w=i*E+s*I+u*b,R=o*E+a*I+f*b,O=r*E+c*I+h*b,k=i*S+s*B+u*v,Q=o*S+a*B+f*v,z=r*S+c*B+h*v,F=i*P+s*M+u*L+A,H=o*P+a*M+f*L+g,W=r*P+c*M+h*L+m;return n[0]=p,n[1]=x,n[2]=T,n[3]=0,n[4]=w,n[5]=R,n[6]=O,n[7]=0,n[8]=k,n[9]=Q,n[10]=z,n[11]=0,n[12]=F,n[13]=H,n[14]=W,n[15]=1,n};rt.multiplyByMatrix3=function(e,t,n){let i=e[0],o=e[1],r=e[2],s=e[4],a=e[5],c=e[6],u=e[8],f=e[9],h=e[10],A=t[0],g=t[1],m=t[2],_=t[3],y=t[4],C=t[5],E=t[6],I=t[7],b=t[8],S=i*A+s*g+u*m,B=o*A+a*g+f*m,v=r*A+c*g+h*m,P=i*_+s*y+u*C,M=o*_+a*y+f*C,L=r*_+c*y+h*C,p=i*E+s*I+u*b,x=o*E+a*I+f*b,T=r*E+c*I+h*b;return n[0]=S,n[1]=B,n[2]=v,n[3]=0,n[4]=P,n[5]=M,n[6]=L,n[7]=0,n[8]=p,n[9]=x,n[10]=T,n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};rt.multiplyByTranslation=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=i*e[0]+o*e[4]+r*e[8]+e[12],a=i*e[1]+o*e[5]+r*e[9]+e[13],c=i*e[2]+o*e[6]+r*e[10]+e[14];return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=s,n[13]=a,n[14]=c,n[15]=e[15],n};rt.multiplyByScale=function(e,t,n){let i=t.x,o=t.y,r=t.z;return i===1&&o===1&&r===1?rt.clone(e,n):(n[0]=i*e[0],n[1]=i*e[1],n[2]=i*e[2],n[3]=e[3],n[4]=o*e[4],n[5]=o*e[5],n[6]=o*e[6],n[7]=e[7],n[8]=r*e[8],n[9]=r*e[9],n[10]=r*e[10],n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n)};rt.multiplyByUniformScale=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3],n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7],n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};rt.multiplyByVector=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=t.w,a=e[0]*i+e[4]*o+e[8]*r+e[12]*s,c=e[1]*i+e[5]*o+e[9]*r+e[13]*s,u=e[2]*i+e[6]*o+e[10]*r+e[14]*s,f=e[3]*i+e[7]*o+e[11]*r+e[15]*s;return n.x=a,n.y=c,n.z=u,n.w=f,n};rt.multiplyByPointAsVector=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=e[0]*i+e[4]*o+e[8]*r,a=e[1]*i+e[5]*o+e[9]*r,c=e[2]*i+e[6]*o+e[10]*r;return n.x=s,n.y=a,n.z=c,n};rt.multiplyByPoint=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=e[0]*i+e[4]*o+e[8]*r+e[12],a=e[1]*i+e[5]*o+e[9]*r+e[13],c=e[2]*i+e[6]*o+e[10]*r+e[14];return n.x=s,n.y=a,n.z=c,n};rt.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11]*t,n[12]=e[12]*t,n[13]=e[13]*t,n[14]=e[14]*t,n[15]=e[15]*t,n};rt.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t};rt.transpose=function(e,t){let n=e[1],i=e[2],o=e[3],r=e[6],s=e[7],a=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=i,t[9]=r,t[10]=e[10],t[11]=e[14],t[12]=o,t[13]=s,t[14]=a,t[15]=e[15],t};rt.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t};rt.equals=function(e,t){return e===t||l(e)&&l(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]};rt.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n&&Math.abs(e[9]-t[9])<=n&&Math.abs(e[10]-t[10])<=n&&Math.abs(e[11]-t[11])<=n&&Math.abs(e[12]-t[12])<=n&&Math.abs(e[13]-t[13])<=n&&Math.abs(e[14]-t[14])<=n&&Math.abs(e[15]-t[15])<=n};rt.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t};rt.getMatrix3=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var FDe=new J,QDe=new J,kDe=new se,UDe=new se(0,0,0,1);rt.inverse=function(e,t){let n=e[0],i=e[4],o=e[8],r=e[12],s=e[1],a=e[5],c=e[9],u=e[13],f=e[2],h=e[6],A=e[10],g=e[14],m=e[3],_=e[7],y=e[11],C=e[15],E=A*C,I=g*y,b=h*C,S=g*_,B=h*y,v=A*_,P=f*C,M=g*m,L=f*y,p=A*m,x=f*_,T=h*m,w=E*a+S*c+B*u-(I*a+b*c+v*u),R=I*s+P*c+p*u-(E*s+M*c+L*u),O=b*s+M*a+x*u-(S*s+P*a+T*u),k=v*s+L*a+T*c-(B*s+p*a+x*c),Q=I*i+b*o+v*r-(E*i+S*o+B*r),z=E*n+M*o+L*r-(I*n+P*o+p*r),F=S*n+P*i+T*r-(b*n+M*i+x*r),H=B*n+p*i+x*o-(v*n+L*i+T*o);E=o*u,I=r*c,b=i*u,S=r*a,B=i*c,v=o*a,P=n*u,M=r*s,L=n*c,p=o*s,x=n*a,T=i*s;let W=E*_+S*y+B*C-(I*_+b*y+v*C),Z=I*m+P*y+p*C-(E*m+M*y+L*C),Y=b*m+M*_+x*C-(S*m+P*_+T*C),$=v*m+L*_+T*y-(B*m+p*_+x*y),X=b*A+v*g+I*h-(B*g+E*h+S*A),he=L*g+E*f+M*A-(P*A+p*g+I*f),ge=P*h+T*g+S*f-(x*g+b*f+M*h),fe=x*A+B*f+p*h-(L*h+T*A+v*f),ye=n*w+i*R+o*O+r*k;if(Math.abs(ye)<D.EPSILON21){if(J.equalsEpsilon(rt.getMatrix3(e,FDe),QDe,D.EPSILON7)&&se.equals(rt.getRow(e,3,kDe),UDe))return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=0,t[11]=0,t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=1,t;throw new ce("matrix is not invertible because its determinate is zero.")}return ye=1/ye,t[0]=w*ye,t[1]=R*ye,t[2]=O*ye,t[3]=k*ye,t[4]=Q*ye,t[5]=z*ye,t[6]=F*ye,t[7]=H*ye,t[8]=W*ye,t[9]=Z*ye,t[10]=Y*ye,t[11]=$*ye,t[12]=X*ye,t[13]=he*ye,t[14]=ge*ye,t[15]=fe*ye,t};rt.inverseTransformation=function(e,t){let n=e[0],i=e[1],o=e[2],r=e[4],s=e[5],a=e[6],c=e[8],u=e[9],f=e[10],h=e[12],A=e[13],g=e[14],m=-n*h-i*A-o*g,_=-r*h-s*A-a*g,y=-c*h-u*A-f*g;return t[0]=n,t[1]=r,t[2]=c,t[3]=0,t[4]=i,t[5]=s,t[6]=u,t[7]=0,t[8]=o,t[9]=a,t[10]=f,t[11]=0,t[12]=m,t[13]=_,t[14]=y,t[15]=1,t};var GDe=new rt;rt.inverseTranspose=function(e,t){return rt.inverse(rt.transpose(e,GDe),t)};rt.IDENTITY=Object.freeze(new rt(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1));rt.ZERO=Object.freeze(new rt(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0));rt.COLUMN0ROW0=0;rt.COLUMN0ROW1=1;rt.COLUMN0ROW2=2;rt.COLUMN0ROW3=3;rt.COLUMN1ROW0=4;rt.COLUMN1ROW1=5;rt.COLUMN1ROW2=6;rt.COLUMN1ROW3=7;rt.COLUMN2ROW0=8;rt.COLUMN2ROW1=9;rt.COLUMN2ROW2=10;rt.COLUMN2ROW3=11;rt.COLUMN3ROW0=12;rt.COLUMN3ROW1=13;rt.COLUMN3ROW2=14;rt.COLUMN3ROW3=15;Object.defineProperties(rt.prototype,{length:{get:function(){return rt.packedLength}}});rt.prototype.clone=function(e){return rt.clone(this,e)};rt.prototype.equals=function(e){return rt.equals(this,e)};rt.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]&&e[9]===t[n+9]&&e[10]===t[n+10]&&e[11]===t[n+11]&&e[12]===t[n+12]&&e[13]===t[n+13]&&e[14]===t[n+14]&&e[15]===t[n+15]};rt.prototype.equalsEpsilon=function(e,t){return rt.equalsEpsilon(this,e,t)};rt.prototype.toString=function(){return`(${this[0]}, ${this[4]}, ${this[8]}, ${this[12]}) +(${this[1]}, ${this[5]}, ${this[9]}, ${this[13]}) +(${this[2]}, ${this[6]}, ${this[10]}, ${this[14]}) +(${this[3]}, ${this[7]}, ${this[11]}, ${this[15]})`};var N=rt;var __,Jr={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},Jl={};Object.defineProperties(Jl,{element:{get:function(){if(Jl.supportsFullscreen())return document[Jr.fullscreenElement]}},changeEventName:{get:function(){if(Jl.supportsFullscreen())return Jr.fullscreenchange}},errorEventName:{get:function(){if(Jl.supportsFullscreen())return Jr.fullscreenerror}},enabled:{get:function(){if(Jl.supportsFullscreen())return document[Jr.fullscreenEnabled]}},fullscreen:{get:function(){if(Jl.supportsFullscreen())return Jl.element!==null}}});Jl.supportsFullscreen=function(){if(l(__))return __;__=!1;let e=document.body;if(typeof e.requestFullscreen=="function")return Jr.requestFullscreen="requestFullscreen",Jr.exitFullscreen="exitFullscreen",Jr.fullscreenEnabled="fullscreenEnabled",Jr.fullscreenElement="fullscreenElement",Jr.fullscreenchange="fullscreenchange",Jr.fullscreenerror="fullscreenerror",__=!0,__;let t=["webkit","moz","o","ms","khtml"],n;for(let i=0,o=t.length;i<o;++i){let r=t[i];n=`${r}RequestFullscreen`,typeof e[n]=="function"?(Jr.requestFullscreen=n,__=!0):(n=`${r}RequestFullScreen`,typeof e[n]=="function"&&(Jr.requestFullscreen=n,__=!0)),n=`${r}ExitFullscreen`,typeof document[n]=="function"?Jr.exitFullscreen=n:(n=`${r}CancelFullScreen`,typeof document[n]=="function"&&(Jr.exitFullscreen=n)),n=`${r}FullscreenEnabled`,document[n]!==void 0?Jr.fullscreenEnabled=n:(n=`${r}FullScreenEnabled`,document[n]!==void 0&&(Jr.fullscreenEnabled=n)),n=`${r}FullscreenElement`,document[n]!==void 0?Jr.fullscreenElement=n:(n=`${r}FullScreenElement`,document[n]!==void 0&&(Jr.fullscreenElement=n)),n=`${r}fullscreenchange`,document[`on${n}`]!==void 0&&(r==="ms"&&(n="MSFullscreenChange"),Jr.fullscreenchange=n),n=`${r}fullscreenerror`,document[`on${n}`]!==void 0&&(r==="ms"&&(n="MSFullscreenError"),Jr.fullscreenerror=n)}return __};Jl.requestFullscreen=function(e,t){Jl.supportsFullscreen()&&e[Jr.requestFullscreen]({vrDisplay:t})};Jl.exitFullscreen=function(){Jl.supportsFullscreen()&&document[Jr.exitFullscreen]()};Jl._names=Jr;var Fr=Jl;var vc;typeof navigator<"u"?vc=navigator:vc={};function KC(e){let t=e.split(".");for(let n=0,i=t.length;n<i;++n)t[n]=parseInt(t[n],10);return t}var lG,hne;function R9(){if(!l(lG)&&(lG=!1,!AG())){let e=/ Chrome\/([\.0-9]+)/.exec(vc.userAgent);e!==null&&(lG=!0,hne=KC(e[1]))}return lG}function zDe(){return R9()&&hne}var uG,mne;function Ane(){if(!l(uG)&&(uG=!1,!R9()&&!AG()&&/ Safari\/[\.0-9]+/.test(vc.userAgent))){let e=/ Version\/([\.0-9]+)/.exec(vc.userAgent);e!==null&&(uG=!0,mne=KC(e[1]))}return uG}function VDe(){return Ane()&&mne}var fG,v9;function pne(){if(!l(fG)){fG=!1;let e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(vc.userAgent);e!==null&&(fG=!0,v9=KC(e[1]),v9.isNightly=!!e[2])}return fG}function HDe(){return pne()&&v9}var xB,P9;function gne(){if(!l(xB)){xB=!1;let e;vc.appName==="Microsoft Internet Explorer"?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(vc.userAgent),e!==null&&(xB=!0,P9=KC(e[1]))):vc.appName==="Netscape"&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(vc.userAgent),e!==null&&(xB=!0,P9=KC(e[1])))}return xB}function WDe(){return gne()&&P9}var dG,_ne;function AG(){if(!l(dG)){dG=!1;let e=/ Edg\/([\.0-9]+)/.exec(vc.userAgent);e!==null&&(dG=!0,_ne=KC(e[1]))}return dG}function jDe(){return AG()&&_ne}var hG,M9;function pG(){if(!l(hG)){hG=!1;let e=/Firefox\/([\.0-9]+)/.exec(vc.userAgent);e!==null&&(hG=!0,M9=KC(e[1]))}return hG}var w9;function YDe(){return l(w9)||(w9=/Windows/i.test(vc.appVersion)),w9}var B9;function qDe(){return l(B9)||(B9=navigator.platform==="iPhone"||navigator.platform==="iPod"||navigator.platform==="iPad"),B9}function KDe(){return pG()&&M9}var D9;function XDe(){return l(D9)||(D9=!pG()&&typeof PointerEvent<"u"&&(!l(vc.pointerEnabled)||vc.pointerEnabled)),D9}var yne,mG;function Cne(){if(!l(mG)){let e=document.createElement("canvas");e.setAttribute("style","image-rendering: -moz-crisp-edges;image-rendering: pixelated;");let t=e.style.imageRendering;mG=l(t)&&t!=="",mG&&(yne=t)}return mG}function JDe(){return Cne()?yne:void 0}function al(){return al._result}al._promise=void 0;al._result=void 0;al.initialize=function(){return l(al._promise)||(al._promise=new Promise(e=>{let t=new Image;t.onload=function(){al._result=t.width>0&&t.height>0,e(al._result)},t.onerror=function(){al._result=!1,e(al._result)},t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA"})),al._promise};Object.defineProperties(al,{initialized:{get:function(){return l(al._result)}}});var jx=[];typeof ArrayBuffer<"u"&&(jx.push(Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array),typeof Uint8ClampedArray<"u"&&jx.push(Uint8ClampedArray),typeof Uint8ClampedArray<"u"&&jx.push(Uint8ClampedArray),typeof BigInt64Array<"u"&&jx.push(BigInt64Array),typeof BigUint64Array<"u"&&jx.push(BigUint64Array));var Vf={isChrome:R9,chromeVersion:zDe,isSafari:Ane,safariVersion:VDe,isWebkit:pne,webkitVersion:HDe,isInternetExplorer:gne,internetExplorerVersion:WDe,isEdge:AG,edgeVersion:jDe,isFirefox:pG,firefoxVersion:KDe,isWindows:YDe,isIPadOrIOS:qDe,hardwareConcurrency:vc.hardwareConcurrency??3,supportsPointerEvents:XDe,supportsImageRenderingPixelated:Cne,supportsWebP:al,imageRenderingValue:JDe,typedArrayTypes:jx};Vf.supportsBasis=function(e){return Vf.supportsWebAssembly()&&e.context.supportsBasis};Vf.supportsFullscreen=function(){return Fr.supportsFullscreen()};Vf.supportsTypedArrays=function(){return typeof ArrayBuffer<"u"};Vf.supportsBigInt64Array=function(){return typeof BigInt64Array<"u"};Vf.supportsBigUint64Array=function(){return typeof BigUint64Array<"u"};Vf.supportsBigInt=function(){return typeof BigInt<"u"};Vf.supportsWebWorkers=function(){return typeof Worker<"u"};Vf.supportsWebAssembly=function(){return typeof WebAssembly<"u"};Vf.supportsWebgl2=function(e){return e.context.webgl2};Vf.supportsEsmWebWorkers=function(){return!pG()||parseInt(M9)>=114};var Wt=Vf;function ct(e,t,n,i){this.x=e??0,this.y=t??0,this.z=n??0,this.w=i??0}var bB=new d;ct.fromAxisAngle=function(e,t,n){let i=t/2,o=Math.sin(i);bB=d.normalize(e,bB);let r=bB.x*o,s=bB.y*o,a=bB.z*o,c=Math.cos(i);return l(n)?(n.x=r,n.y=s,n.z=a,n.w=c,n):new ct(r,s,a,c)};var ZDe=[1,2,0],$De=new Array(3);ct.fromRotationMatrix=function(e,t){let n,i,o,r,s,a=e[J.COLUMN0ROW0],c=e[J.COLUMN1ROW1],u=e[J.COLUMN2ROW2],f=a+c+u;if(f>0)n=Math.sqrt(f+1),s=.5*n,n=.5/n,i=(e[J.COLUMN1ROW2]-e[J.COLUMN2ROW1])*n,o=(e[J.COLUMN2ROW0]-e[J.COLUMN0ROW2])*n,r=(e[J.COLUMN0ROW1]-e[J.COLUMN1ROW0])*n;else{let h=ZDe,A=0;c>a&&(A=1),u>a&&u>c&&(A=2);let g=h[A],m=h[g];n=Math.sqrt(e[J.getElementIndex(A,A)]-e[J.getElementIndex(g,g)]-e[J.getElementIndex(m,m)]+1);let _=$De;_[A]=.5*n,n=.5/n,s=(e[J.getElementIndex(m,g)]-e[J.getElementIndex(g,m)])*n,_[g]=(e[J.getElementIndex(g,A)]+e[J.getElementIndex(A,g)])*n,_[m]=(e[J.getElementIndex(m,A)]+e[J.getElementIndex(A,m)])*n,i=-_[0],o=-_[1],r=-_[2]}return l(t)?(t.x=i,t.y=o,t.z=r,t.w=s,t):new ct(i,o,r,s)};var Ene=new ct,Ine=new ct,N9=new ct,xne=new ct;ct.fromHeadingPitchRoll=function(e,t){return xne=ct.fromAxisAngle(d.UNIT_X,e.roll,Ene),N9=ct.fromAxisAngle(d.UNIT_Y,-e.pitch,t),t=ct.multiply(N9,xne,N9),Ine=ct.fromAxisAngle(d.UNIT_Z,-e.heading,Ene),ct.multiply(Ine,t,t)};var gG=new d,L9=new d,rh=new ct,bne=new ct,_G=new ct;ct.packedLength=4;ct.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n++]=e.z,t[n]=e.w,t};ct.unpack=function(e,t,n){return t=t??0,l(n)||(n=new ct),n.x=e[t],n.y=e[t+1],n.z=e[t+2],n.w=e[t+3],n};ct.packedInterpolationLength=3;ct.convertPackedArrayForInterpolation=function(e,t,n,i){ct.unpack(e,n*4,_G),ct.conjugate(_G,_G);for(let o=0,r=n-t+1;o<r;o++){let s=o*3;ct.unpack(e,(t+o)*4,rh),ct.multiply(rh,_G,rh),rh.w<0&&ct.negate(rh,rh),ct.computeAxis(rh,gG);let a=ct.computeAngle(rh);l(i)||(i=[]),i[s]=gG.x*a,i[s+1]=gG.y*a,i[s+2]=gG.z*a}};ct.unpackInterpolationResult=function(e,t,n,i,o){l(o)||(o=new ct),d.fromArray(e,0,L9);let r=d.magnitude(L9);return ct.unpack(t,i*4,bne),r===0?ct.clone(ct.IDENTITY,rh):ct.fromAxisAngle(L9,r,rh),ct.multiply(rh,bne,o)};ct.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new ct(e.x,e.y,e.z,e.w)};ct.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t};ct.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w};ct.magnitude=function(e){return Math.sqrt(ct.magnitudeSquared(e))};ct.normalize=function(e,t){let n=1/ct.magnitude(e),i=e.x*n,o=e.y*n,r=e.z*n,s=e.w*n;return t.x=i,t.y=o,t.z=r,t.w=s,t};ct.inverse=function(e,t){let n=ct.magnitudeSquared(e);return t=ct.conjugate(e,t),ct.multiplyByScalar(t,1/n,t)};ct.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n};ct.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n};ct.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t};ct.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w};ct.multiply=function(e,t,n){let i=e.x,o=e.y,r=e.z,s=e.w,a=t.x,c=t.y,u=t.z,f=t.w,h=s*a+i*f+o*u-r*c,A=s*c-i*u+o*f+r*a,g=s*u+i*c-o*a+r*f,m=s*f-i*a-o*c-r*u;return n.x=h,n.y=A,n.z=g,n.w=m,n};ct.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n};ct.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n};ct.computeAxis=function(e,t){let n=e.w;if(Math.abs(n-1)<D.EPSILON6||Math.abs(n+1)<D.EPSILON6)return t.x=1,t.y=t.z=0,t;let i=1/Math.sqrt(1-n*n);return t.x=e.x*i,t.y=e.y*i,t.z=e.z*i,t};ct.computeAngle=function(e){return Math.abs(e.w-1)<D.EPSILON6?0:2*Math.acos(e.w)};var O9=new ct;ct.lerp=function(e,t,n,i){return O9=ct.multiplyByScalar(t,n,O9),i=ct.multiplyByScalar(e,1-n,i),ct.add(O9,i,i)};var Tne=new ct,F9=new ct,Q9=new ct;ct.slerp=function(e,t,n,i){let o=ct.dot(e,t),r=t;if(o<0&&(o=-o,r=Tne=ct.negate(t,Tne)),1-o<D.EPSILON6)return ct.lerp(e,r,n,i);let s=Math.acos(o);return F9=ct.multiplyByScalar(e,Math.sin((1-n)*s),F9),Q9=ct.multiplyByScalar(r,Math.sin(n*s),Q9),i=ct.add(F9,Q9,i),ct.multiplyByScalar(i,1/Math.sin(s),i)};ct.log=function(e,t){let n=D.acosClamped(e.w),i=0;return n!==0&&(i=n/Math.sin(n)),d.multiplyByScalar(e,i,t)};ct.exp=function(e,t){let n=d.magnitude(e),i=0;return n!==0&&(i=Math.sin(n)/n),t.x=e.x*i,t.y=e.y*i,t.z=e.z*i,t.w=Math.cos(n),t};var eve=new d,tve=new d,TB=new ct,Yx=new ct;ct.computeInnerQuadrangle=function(e,t,n,i){let o=ct.conjugate(t,TB);ct.multiply(o,n,Yx);let r=ct.log(Yx,eve);ct.multiply(o,e,Yx);let s=ct.log(Yx,tve);return d.add(r,s,r),d.multiplyByScalar(r,.25,r),d.negate(r,r),ct.exp(r,TB),ct.multiply(t,TB,i)};ct.squad=function(e,t,n,i,o,r){let s=ct.slerp(e,t,o,TB),a=ct.slerp(n,i,o,Yx);return ct.slerp(s,a,2*o*(1-o),r)};var nve=new ct,Sne=1.9011074535173003,yG=Wt.supportsTypedArrays()?new Float32Array(8):[],CG=Wt.supportsTypedArrays()?new Float32Array(8):[],ZA=Wt.supportsTypedArrays()?new Float32Array(8):[],$A=Wt.supportsTypedArrays()?new Float32Array(8):[];for(let e=0;e<7;++e){let t=e+1,n=2*t+1;yG[e]=1/(t*n),CG[e]=t/n}yG[7]=Sne/136;CG[7]=Sne*8/17;ct.fastSlerp=function(e,t,n,i){let o=ct.dot(e,t),r;o>=0?r=1:(r=-1,o=-o);let s=o-1,a=1-n,c=n*n,u=a*a;for(let g=7;g>=0;--g)ZA[g]=(yG[g]*c-CG[g])*s,$A[g]=(yG[g]*u-CG[g])*s;let f=r*n*(1+ZA[0]*(1+ZA[1]*(1+ZA[2]*(1+ZA[3]*(1+ZA[4]*(1+ZA[5]*(1+ZA[6]*(1+ZA[7])))))))),h=a*(1+$A[0]*(1+$A[1]*(1+$A[2]*(1+$A[3]*(1+$A[4]*(1+$A[5]*(1+$A[6]*(1+$A[7])))))))),A=ct.multiplyByScalar(e,h,nve);return ct.multiplyByScalar(t,f,i),ct.add(A,i,i)};ct.fastSquad=function(e,t,n,i,o,r){let s=ct.fastSlerp(e,t,o,TB),a=ct.fastSlerp(n,i,o,Yx);return ct.fastSlerp(s,a,2*o*(1-o),r)};ct.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w};ct.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.x-t.x)<=n&&Math.abs(e.y-t.y)<=n&&Math.abs(e.z-t.z)<=n&&Math.abs(e.w-t.w)<=n};ct.ZERO=Object.freeze(new ct(0,0,0,0));ct.IDENTITY=Object.freeze(new ct(0,0,0,1));ct.prototype.clone=function(e){return ct.clone(this,e)};ct.prototype.equals=function(e){return ct.equals(this,e)};ct.prototype.equalsEpsilon=function(e,t){return ct.equalsEpsilon(this,e,t)};ct.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z}, ${this.w})`};var Le=ct;var wi={},k9={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"}},qx={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},U9={},Zl={east:new d,north:new d,up:new d,west:new d,south:new d,down:new d},y_=new d,C_=new d,E_=new d;wi.localFrameToFixedFrameGenerator=function(e,t){if(!k9.hasOwnProperty(e)||!k9[e].hasOwnProperty(t))throw new me("firstAxis and secondAxis must be east, north, up, west, south or down.");let n=k9[e][t],i,o=e+t;return l(U9[o])?i=U9[o]:(i=function(r,s,a){if(l(a)||(a=new N),d.equalsEpsilon(r,d.ZERO,D.EPSILON14))d.unpack(qx[e],0,y_),d.unpack(qx[t],0,C_),d.unpack(qx[n],0,E_);else if(D.equalsEpsilon(r.x,0,D.EPSILON14)&&D.equalsEpsilon(r.y,0,D.EPSILON14)){let c=D.sign(r.z);d.unpack(qx[e],0,y_),e!=="east"&&e!=="west"&&d.multiplyByScalar(y_,c,y_),d.unpack(qx[t],0,C_),t!=="east"&&t!=="west"&&d.multiplyByScalar(C_,c,C_),d.unpack(qx[n],0,E_),n!=="east"&&n!=="west"&&d.multiplyByScalar(E_,c,E_)}else{s=s??te.default,s.geodeticSurfaceNormal(r,Zl.up);let c=Zl.up,u=Zl.east;u.x=-r.y,u.y=r.x,u.z=0,d.normalize(u,Zl.east),d.cross(c,u,Zl.north),d.multiplyByScalar(Zl.up,-1,Zl.down),d.multiplyByScalar(Zl.east,-1,Zl.west),d.multiplyByScalar(Zl.north,-1,Zl.south),y_=Zl[e],C_=Zl[t],E_=Zl[n]}return a[0]=y_.x,a[1]=y_.y,a[2]=y_.z,a[3]=0,a[4]=C_.x,a[5]=C_.y,a[6]=C_.z,a[7]=0,a[8]=E_.x,a[9]=E_.y,a[10]=E_.z,a[11]=0,a[12]=r.x,a[13]=r.y,a[14]=r.z,a[15]=1,a},U9[o]=i),i};wi.eastNorthUpToFixedFrame=wi.localFrameToFixedFrameGenerator("east","north");wi.northEastDownToFixedFrame=wi.localFrameToFixedFrameGenerator("north","east");wi.northUpEastToFixedFrame=wi.localFrameToFixedFrameGenerator("north","up");wi.northWestUpToFixedFrame=wi.localFrameToFixedFrameGenerator("north","west");var ive=new Le,ove=new d(1,1,1),rve=new N;wi.headingPitchRollToFixedFrame=function(e,t,n,i,o){i=i??wi.eastNorthUpToFixedFrame;let r=Le.fromHeadingPitchRoll(t,ive),s=N.fromTranslationQuaternionRotationScale(d.ZERO,r,ove,rve);return o=i(e,n,o),N.multiply(o,s,o)};var sve=new N,ave=new J;wi.headingPitchRollQuaternion=function(e,t,n,i,o){let r=wi.headingPitchRollToFixedFrame(e,t,n,i,sve),s=N.getMatrix3(r,ave);return Le.fromRotationMatrix(s,o)};var cve=new d(1,1,1),lve=new d,wne=new N,uve=new N,fve=new J,dve=new Le;wi.fixedFrameToHeadingPitchRoll=function(e,t,n,i){t=t??te.default,n=n??wi.eastNorthUpToFixedFrame,l(i)||(i=new rc);let o=N.getTranslation(e,lve);if(d.equals(o,d.ZERO))return i.heading=0,i.pitch=0,i.roll=0,i;let r=N.inverseTransformation(n(o,t,wne),wne),s=N.setScale(e,cve,uve);s=N.setTranslation(s,d.ZERO,s),r=N.multiply(r,s,r);let a=Le.fromRotationMatrix(N.getMatrix3(r,fve),dve);return a=Le.normalize(a,a),rc.fromQuaternion(a,i)};var hve=6*3600+2460+50.54841,mve=8640184812866e-6,Ave=.093104,pve=-62e-7,gve=11772758384668e-32,_ve=72921158553e-15,yve=D.TWO_PI/86400,EG=new K;wi.computeIcrfToCentralBodyFixedMatrix=function(e,t){let n=wi.computeIcrfToFixedMatrix(e,t);return l(n)||(n=wi.computeTemeToPseudoFixedMatrix(e,t)),n};wi.computeTemeToPseudoFixedMatrix=function(e,t){EG=K.addSeconds(e,-K.computeTaiMinusUtc(e),EG);let n=EG.dayNumber,i=EG.secondsOfDay,o,r=n-2451545;i>=43200?o=(r+.5)/ri.DAYS_PER_JULIAN_CENTURY:o=(r-.5)/ri.DAYS_PER_JULIAN_CENTURY;let a=(hve+o*(mve+o*(Ave+o*pve)))*yve%D.TWO_PI,c=_ve+gve*(n-24515455e-1),u=(i+ri.SECONDS_PER_DAY*.5)%ri.SECONDS_PER_DAY,f=a+c*u,h=Math.cos(f),A=Math.sin(f);return l(t)?(t[0]=h,t[1]=-A,t[2]=0,t[3]=A,t[4]=h,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new J(h,A,0,-A,h,0,0,0,1)};wi.iau2006XysData=new EB;wi.earthOrientationParameters=CB.NONE;var V9=32.184,Cve=2451545;wi.preloadIcrfFixed=function(e){let t=e.start.dayNumber,n=e.start.secondsOfDay+V9,i=e.stop.dayNumber,o=e.stop.secondsOfDay+V9;return wi.iau2006XysData.preload(t,n,i,o)};wi.computeIcrfToFixedMatrix=function(e,t){l(t)||(t=new J);let n=wi.computeFixedToIcrfMatrix(e,t);if(l(n))return J.transpose(n,t)};var Eve=32.184,Ive=2451545,IG=new rc,xve=new J,bve=new K;wi.computeMoonFixedToIcrfMatrix=function(e,t){l(t)||(t=new J);let n=K.addSeconds(e,Eve,bve),i=K.totalDays(n)-Ive,o=D.toRadians(12.112)-D.toRadians(.052992)*i,r=D.toRadians(24.224)-D.toRadians(.105984)*i,s=D.toRadians(227.645)+D.toRadians(13.012)*i,a=D.toRadians(261.105)+D.toRadians(13.340716)*i,c=D.toRadians(358)+D.toRadians(.9856)*i;return IG.pitch=D.toRadians(180)-D.toRadians(3.878)*Math.sin(o)-D.toRadians(.12)*Math.sin(r)+D.toRadians(.07)*Math.sin(s)-D.toRadians(.017)*Math.sin(a),IG.roll=D.toRadians(66.53-90)+D.toRadians(1.543)*Math.cos(o)+D.toRadians(.24)*Math.cos(r)-D.toRadians(.028)*Math.cos(s)+D.toRadians(.007)*Math.cos(a),IG.heading=D.toRadians(244.375-90)+D.toRadians(13.17635831)*i+D.toRadians(3.558)*Math.sin(o)+D.toRadians(.121)*Math.sin(r)-D.toRadians(.064)*Math.sin(s)+D.toRadians(.016)*Math.sin(a)+D.toRadians(.025)*Math.sin(c),J.fromHeadingPitchRoll(IG,xve)};wi.computeIcrfToMoonFixedMatrix=function(e,t){l(t)||(t=new J);let n=wi.computeMoonFixedToIcrfMatrix(e,t);if(l(n))return J.transpose(n,t)};var Tve=new qC(0,0,0),Sve=new A_(0,0,0,0,0,0),G9=new J,z9=new J;wi.computeFixedToIcrfMatrix=function(e,t){l(t)||(t=new J);let n=wi.earthOrientationParameters.compute(e,Sve);if(!l(n))return;let i=e.dayNumber,o=e.secondsOfDay+V9,r=wi.iau2006XysData.computeXysRadians(i,o,Tve);if(!l(r))return;let s=r.x+n.xPoleOffset,a=r.y+n.yPoleOffset,c=1/(1+Math.sqrt(1-s*s-a*a)),u=G9;u[0]=1-c*s*s,u[3]=-c*s*a,u[6]=s,u[1]=-c*s*a,u[4]=1-c*a*a,u[7]=a,u[2]=-s,u[5]=-a,u[8]=1-c*(s*s+a*a);let f=J.fromRotationZ(-r.s,z9),h=J.multiply(u,f,G9),A=e.dayNumber,g=e.secondsOfDay-K.computeTaiMinusUtc(e)+n.ut1MinusUtc,m=A-2451545,_=g/ri.SECONDS_PER_DAY,y=.779057273264+_+.00273781191135448*(m+_);y=y%1*D.TWO_PI;let C=J.fromRotationZ(y,z9),E=J.multiply(h,C,G9),I=Math.cos(n.xPoleWander),b=Math.cos(n.yPoleWander),S=Math.sin(n.xPoleWander),B=Math.sin(n.yPoleWander),v=i-Cve+o/ri.SECONDS_PER_DAY;v/=36525;let P=-47e-6*v*D.RADIANS_PER_DEGREE/3600,M=Math.cos(P),L=Math.sin(P),p=z9;return p[0]=I*M,p[1]=I*L,p[2]=S,p[3]=-b*L+B*S*M,p[4]=b*M+B*S*L,p[5]=-B*I,p[6]=-B*L-b*S*M,p[7]=B*M-b*S*L,p[8]=b*I,J.multiply(E,p,t)};var wve=new se;wi.pointToWindowCoordinates=function(e,t,n,i){return i=wi.pointToGLWindowCoordinates(e,t,n,i),i.y=2*t[5]-i.y,i};wi.pointToGLWindowCoordinates=function(e,t,n,i){l(i)||(i=new U);let o=wve;return N.multiplyByVector(e,se.fromElements(n.x,n.y,n.z,1,o),o),se.multiplyByScalar(o,1/o.w,o),N.multiplyByVector(t,o,o),U.fromCartesian4(o,i)};var Bve=new d,Dve=new d,vve=new d;wi.rotationMatrixFromPositionVelocity=function(e,t,n,i){let o=(n??te.default).geodeticSurfaceNormal(e,Bve),r=d.cross(t,o,Dve);d.equalsEpsilon(r,d.ZERO,D.EPSILON6)&&(r=d.clone(d.UNIT_X,r));let s=d.cross(r,t,vve);return d.normalize(s,s),d.cross(t,s,r),d.negate(r,r),d.normalize(r,r),l(i)||(i=new J),i[0]=t.x,i[1]=t.y,i[2]=t.z,i[3]=r.x,i[4]=r.y,i[5]=r.z,i[6]=s.x,i[7]=s.y,i[8]=s.z,i};var Bne=new N(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1),Dne=new Ae,H9=new d,Pve=new d,Rve=new J,W9=new N,vne=new N;wi.basisTo2D=function(e,t,n){let i=N.getTranslation(t,Pve),o=e.ellipsoid,r;if(d.equals(i,d.ZERO))r=d.clone(d.ZERO,H9);else{let f=o.cartesianToCartographic(i,Dne);r=e.project(f,H9),d.fromElements(r.z,r.x,r.y,r)}let s=wi.eastNorthUpToFixedFrame(i,o,W9),a=N.inverseTransformation(s,vne),c=N.getMatrix3(t,Rve),u=N.multiplyByMatrix3(a,c,n);return N.multiply(Bne,u,n),N.setTranslation(n,r,n),n};wi.ellipsoidTo2DModelMatrix=function(e,t,n){let i=e.ellipsoid,o=wi.eastNorthUpToFixedFrame(t,i,W9),r=N.inverseTransformation(o,vne),s=i.cartesianToCartographic(t,Dne),a=e.project(s,H9);d.fromElements(a.z,a.x,a.y,a);let c=N.fromTranslation(a,W9);return N.multiply(Bne,r,n),N.multiply(c,n,n),n};var kt=wi;function Ln(e,t,n,i){this.west=e??0,this.south=t??0,this.east=n??0,this.north=i??0}Object.defineProperties(Ln.prototype,{width:{get:function(){return Ln.computeWidth(this)}},height:{get:function(){return Ln.computeHeight(this)}}});Ln.packedLength=4;Ln.pack=function(e,t,n){return n=n??0,t[n++]=e.west,t[n++]=e.south,t[n++]=e.east,t[n]=e.north,t};Ln.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Ln),n.west=e[t++],n.south=e[t++],n.east=e[t++],n.north=e[t],n};Ln.computeWidth=function(e){let t=e.east,n=e.west;return t<n&&(t+=D.TWO_PI),t-n};Ln.computeHeight=function(e){return e.north-e.south};Ln.fromDegrees=function(e,t,n,i,o){return e=D.toRadians(e??0),t=D.toRadians(t??0),n=D.toRadians(n??0),i=D.toRadians(i??0),l(o)?(o.west=e,o.south=t,o.east=n,o.north=i,o):new Ln(e,t,n,i)};Ln.fromRadians=function(e,t,n,i,o){return l(o)?(o.west=e??0,o.south=t??0,o.east=n??0,o.north=i??0,o):new Ln(e,t,n,i)};Ln.fromCartographicArray=function(e,t){let n=Number.MAX_VALUE,i=-Number.MAX_VALUE,o=Number.MAX_VALUE,r=-Number.MAX_VALUE,s=Number.MAX_VALUE,a=-Number.MAX_VALUE;for(let c=0,u=e.length;c<u;c++){let f=e[c];n=Math.min(n,f.longitude),i=Math.max(i,f.longitude),s=Math.min(s,f.latitude),a=Math.max(a,f.latitude);let h=f.longitude>=0?f.longitude:f.longitude+D.TWO_PI;o=Math.min(o,h),r=Math.max(r,h)}return i-n>r-o&&(n=o,i=r,i>D.PI&&(i=i-D.TWO_PI),n>D.PI&&(n=n-D.TWO_PI)),l(t)?(t.west=n,t.south=s,t.east=i,t.north=a,t):new Ln(n,s,i,a)};Ln.fromCartesianArray=function(e,t,n){t=t??te.default;let i=Number.MAX_VALUE,o=-Number.MAX_VALUE,r=Number.MAX_VALUE,s=-Number.MAX_VALUE,a=Number.MAX_VALUE,c=-Number.MAX_VALUE;for(let u=0,f=e.length;u<f;u++){let h=t.cartesianToCartographic(e[u]);i=Math.min(i,h.longitude),o=Math.max(o,h.longitude),a=Math.min(a,h.latitude),c=Math.max(c,h.latitude);let A=h.longitude>=0?h.longitude:h.longitude+D.TWO_PI;r=Math.min(r,A),s=Math.max(s,A)}return o-i>s-r&&(i=r,o=s,o>D.PI&&(o=o-D.TWO_PI),i>D.PI&&(i=i-D.TWO_PI)),l(n)?(n.west=i,n.south=a,n.east=o,n.north=c,n):new Ln(i,a,o,c)};var Mve=new d,Nve=new d,Lve=new d,Ove=new d,Fve=new d,j9=new Array(5);for(let e=0;e<j9.length;++e)j9[e]=new d;Ln.fromBoundingSphere=function(e,t,n){let i=e.center,o=e.radius;if(l(t)||(t=te.default),l(n)||(n=new Ln),d.equals(i,d.ZERO))return Ln.clone(Ln.MAX_VALUE,n),n;let r=kt.eastNorthUpToFixedFrame(i,t,Mve),s=N.multiplyByPointAsVector(r,d.UNIT_X,Nve);d.normalize(s,s);let a=N.multiplyByPointAsVector(r,d.UNIT_Y,Lve);d.normalize(a,a),d.multiplyByScalar(a,o,a),d.multiplyByScalar(s,o,s);let c=d.negate(a,Fve),u=d.negate(s,Ove),f=j9,h=f[0];return d.add(i,a,h),h=f[1],d.add(i,u,h),h=f[2],d.add(i,c,h),h=f[3],d.add(i,s,h),f[4]=i,Ln.fromCartesianArray(f,t,n)};Ln.clone=function(e,t){if(l(e))return l(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new Ln(e.west,e.south,e.east,e.north)};Ln.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.west-t.west)<=n&&Math.abs(e.south-t.south)<=n&&Math.abs(e.east-t.east)<=n&&Math.abs(e.north-t.north)<=n};Ln.prototype.clone=function(e){return Ln.clone(this,e)};Ln.prototype.equals=function(e){return Ln.equals(this,e)};Ln.equals=function(e,t){return e===t||l(e)&&l(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north};Ln.prototype.equalsEpsilon=function(e,t){return Ln.equalsEpsilon(this,e,t)};Ln._validate=function(e){};Ln.southwest=function(e,t){return l(t)?(t.longitude=e.west,t.latitude=e.south,t.height=0,t):new Ae(e.west,e.south)};Ln.northwest=function(e,t){return l(t)?(t.longitude=e.west,t.latitude=e.north,t.height=0,t):new Ae(e.west,e.north)};Ln.northeast=function(e,t){return l(t)?(t.longitude=e.east,t.latitude=e.north,t.height=0,t):new Ae(e.east,e.north)};Ln.southeast=function(e,t){return l(t)?(t.longitude=e.east,t.latitude=e.south,t.height=0,t):new Ae(e.east,e.south)};Ln.center=function(e,t){let n=e.east,i=e.west;n<i&&(n+=D.TWO_PI);let o=D.negativePiToPi((i+n)*.5),r=(e.south+e.north)*.5;return l(t)?(t.longitude=o,t.latitude=r,t.height=0,t):new Ae(o,r)};Ln.intersection=function(e,t,n){let i=e.east,o=e.west,r=t.east,s=t.west;i<o&&r>0?i+=D.TWO_PI:r<s&&i>0&&(r+=D.TWO_PI),i<o&&s<0?s+=D.TWO_PI:r<s&&o<0&&(o+=D.TWO_PI);let a=D.negativePiToPi(Math.max(o,s)),c=D.negativePiToPi(Math.min(i,r));if((e.west<e.east||t.west<t.east)&&c<=a)return;let u=Math.max(e.south,t.south),f=Math.min(e.north,t.north);if(!(u>=f))return l(n)?(n.west=a,n.south=u,n.east=c,n.north=f,n):new Ln(a,u,c,f)};Ln.simpleIntersection=function(e,t,n){let i=Math.max(e.west,t.west),o=Math.max(e.south,t.south),r=Math.min(e.east,t.east),s=Math.min(e.north,t.north);if(!(o>=s||i>=r))return l(n)?(n.west=i,n.south=o,n.east=r,n.north=s,n):new Ln(i,o,r,s)};Ln.union=function(e,t,n){l(n)||(n=new Ln);let i=e.east,o=e.west,r=t.east,s=t.west;i<o&&r>0?i+=D.TWO_PI:r<s&&i>0&&(r+=D.TWO_PI),i<o&&s<0?s+=D.TWO_PI:r<s&&o<0&&(o+=D.TWO_PI);let a=D.negativePiToPi(Math.min(o,s)),c=D.negativePiToPi(Math.max(i,r));return n.west=a,n.south=Math.min(e.south,t.south),n.east=c,n.north=Math.max(e.north,t.north),n};Ln.expand=function(e,t,n){return l(n)||(n=new Ln),n.west=Math.min(e.west,t.longitude),n.south=Math.min(e.south,t.latitude),n.east=Math.max(e.east,t.longitude),n.north=Math.max(e.north,t.latitude),n};Ln.contains=function(e,t){let n=t.longitude,i=t.latitude,o=e.west,r=e.east;return r<o&&(r+=D.TWO_PI,n<0&&(n+=D.TWO_PI)),(n>o||D.equalsEpsilon(n,o,D.EPSILON14))&&(n<r||D.equalsEpsilon(n,r,D.EPSILON14))&&i>=e.south&&i<=e.north};var Qve=new Ae;Ln.subsample=function(e,t,n,i){t=t??te.default,n=n??0,l(i)||(i=[]);let o=0,r=e.north,s=e.south,a=e.east,c=e.west,u=Qve;u.height=n,u.longitude=c,u.latitude=r,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.longitude=a,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.latitude=s,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.longitude=c,i[o]=t.cartographicToCartesian(u,i[o]),o++,r<0?u.latitude=r:s>0?u.latitude=s:u.latitude=0;for(let f=1;f<8;++f)u.longitude=-Math.PI+f*D.PI_OVER_TWO,Ln.contains(e,u)&&(i[o]=t.cartographicToCartesian(u,i[o]),o++);return u.latitude===0&&(u.longitude=c,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.longitude=a,i[o]=t.cartographicToCartesian(u,i[o]),o++),i.length=o,i};Ln.subsection=function(e,t,n,i,o,r){if(l(r)||(r=new Ln),e.west<=e.east){let a=e.east-e.west;r.west=e.west+t*a,r.east=e.west+i*a}else{let a=D.TWO_PI+e.east-e.west;r.west=D.negativePiToPi(e.west+t*a),r.east=D.negativePiToPi(e.west+i*a)}let s=e.north-e.south;return r.south=e.south+n*s,r.north=e.south+o*s,t===1&&(r.west=e.east),i===1&&(r.east=e.east),n===1&&(r.south=e.north),o===1&&(r.north=e.north),r};Ln.MAX_VALUE=Object.freeze(new Ln(-Math.PI,-D.PI_OVER_TWO,Math.PI,D.PI_OVER_TWO));var ae=Ln;function Zr(e,t,n,i){this.x=e??0,this.y=t??0,this.width=n??0,this.height=i??0}Zr.packedLength=4;Zr.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n++]=e.width,t[n]=e.height,t};Zr.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Zr),n.x=e[t++],n.y=e[t++],n.width=e[t++],n.height=e[t],n};Zr.fromPoints=function(e,t){if(l(t)||(t=new Zr),!l(e)||e.length===0)return t.x=0,t.y=0,t.width=0,t.height=0,t;let n=e.length,i=e[0].x,o=e[0].y,r=e[0].x,s=e[0].y;for(let a=1;a<n;a++){let c=e[a],u=c.x,f=c.y;i=Math.min(u,i),r=Math.max(u,r),o=Math.min(f,o),s=Math.max(f,s)}return t.x=i,t.y=o,t.width=r-i,t.height=s-o,t};var Pne=new Ui,kve=new Ae,Uve=new Ae;Zr.fromRectangle=function(e,t,n){if(l(n)||(n=new Zr),!l(e))return n.x=0,n.y=0,n.width=0,n.height=0,n;Pne._ellipsoid=te.default,t=t??Pne;let i=t.project(ae.southwest(e,kve)),o=t.project(ae.northeast(e,Uve));return U.subtract(o,i,o),n.x=i.x,n.y=i.y,n.width=o.x,n.height=o.y,n};Zr.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.width=e.width,t.height=e.height,t):new Zr(e.x,e.y,e.width,e.height)};Zr.union=function(e,t,n){l(n)||(n=new Zr);let i=Math.min(e.x,t.x),o=Math.min(e.y,t.y),r=Math.max(e.x+e.width,t.x+t.width),s=Math.max(e.y+e.height,t.y+t.height);return n.x=i,n.y=o,n.width=r-i,n.height=s-o,n};Zr.expand=function(e,t,n){n=Zr.clone(e,n);let i=t.x-n.x,o=t.y-n.y;return i>n.width?n.width=i:i<0&&(n.width-=i,n.x=t.x),o>n.height?n.height=o:o<0&&(n.height-=o,n.y=t.y),n};Zr.intersect=function(e,t){let n=e.x,i=e.y,o=t.x,r=t.y;return n>o+t.width||n+e.width<o||i+e.height<r||i>r+t.height?tn.OUTSIDE:tn.INTERSECTING};Zr.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height};Zr.prototype.clone=function(e){return Zr.clone(this,e)};Zr.prototype.intersect=function(e){return Zr.intersect(this,e)};Zr.prototype.equals=function(e){return Zr.equals(this,e)};var Ye=Zr;function Y9(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n*6<1?e+(t-e)*6*n:n*2<1?t:n*3<2?e+(t-e)*(2/3-n)*6:e}function re(e,t,n,i){this.red=e??1,this.green=t??1,this.blue=n??1,this.alpha=i??1}re.fromCartesian4=function(e,t){return l(t)?(t.red=e.x,t.green=e.y,t.blue=e.z,t.alpha=e.w,t):new re(e.x,e.y,e.z,e.w)};re.fromBytes=function(e,t,n,i,o){return e=re.byteToFloat(e??255),t=re.byteToFloat(t??255),n=re.byteToFloat(n??255),i=re.byteToFloat(i??255),l(o)?(o.red=e,o.green=t,o.blue=n,o.alpha=i,o):new re(e,t,n,i)};re.fromAlpha=function(e,t,n){return l(n)?(n.red=e.red,n.green=e.green,n.blue=e.blue,n.alpha=t,n):new re(e.red,e.green,e.blue,t)};var q9,K9,ep;Wt.supportsTypedArrays()&&(q9=new ArrayBuffer(4),K9=new Uint32Array(q9),ep=new Uint8Array(q9));re.fromRgba=function(e,t){return K9[0]=e,re.fromBytes(ep[0],ep[1],ep[2],ep[3],t)};re.fromHsl=function(e,t,n,i,o){e=(e??0)%1,t=t??0,n=n??0,i=i??1;let r=n,s=n,a=n;if(t!==0){let c;n<.5?c=n*(1+t):c=n+t-n*t;let u=2*n-c;r=Y9(u,c,e+1/3),s=Y9(u,c,e),a=Y9(u,c,e-1/3)}return l(o)?(o.red=r,o.green=s,o.blue=a,o.alpha=i,o):new re(r,s,a,i)};re.fromRandom=function(e,t){e=e??V.EMPTY_OBJECT;let n=e.red;if(!l(n)){let s=e.minimumRed??0,a=e.maximumRed??1;n=s+D.nextRandomNumber()*(a-s)}let i=e.green;if(!l(i)){let s=e.minimumGreen??0,a=e.maximumGreen??1;i=s+D.nextRandomNumber()*(a-s)}let o=e.blue;if(!l(o)){let s=e.minimumBlue??0,a=e.maximumBlue??1;o=s+D.nextRandomNumber()*(a-s)}let r=e.alpha;if(!l(r)){let s=e.minimumAlpha??0,a=e.maximumAlpha??1;r=s+D.nextRandomNumber()*(a-s)}return l(t)?(t.red=n,t.green=i,t.blue=o,t.alpha=r,t):new re(n,i,o,r)};var Gve=/^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i,zve=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i,Vve=/^rgba?\s*\(\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i,Hve=/^hsla?\s*\(\s*([0-9.]+)\s*[,\s]+\s*([0-9.]+%)\s*[,\s]+\s*([0-9.]+%)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i;re.fromCssColorString=function(e,t){l(t)||(t=new re),e=e.trim();let n=re[e.toUpperCase()];if(l(n))return re.clone(n,t),t;let i=Gve.exec(e);return i!==null?(t.red=parseInt(i[1],16)/15,t.green=parseInt(i[2],16)/15,t.blue=parseInt(i[3],16)/15,t.alpha=parseInt(i[4]??"f",16)/15,t):(i=zve.exec(e),i!==null?(t.red=parseInt(i[1],16)/255,t.green=parseInt(i[2],16)/255,t.blue=parseInt(i[3],16)/255,t.alpha=parseInt(i[4]??"ff",16)/255,t):(i=Vve.exec(e),i!==null?(t.red=parseFloat(i[1])/(i[1].substr(-1)==="%"?100:255),t.green=parseFloat(i[2])/(i[2].substr(-1)==="%"?100:255),t.blue=parseFloat(i[3])/(i[3].substr(-1)==="%"?100:255),t.alpha=parseFloat(i[4]??"1.0"),t):(i=Hve.exec(e),i!==null?re.fromHsl(parseFloat(i[1])/360,parseFloat(i[2])/100,parseFloat(i[3])/100,parseFloat(i[4]??"1.0"),t):(t=void 0,t))))};re.packedLength=4;re.pack=function(e,t,n){return n=n??0,t[n++]=e.red,t[n++]=e.green,t[n++]=e.blue,t[n]=e.alpha,t};re.unpack=function(e,t,n){return t=t??0,l(n)||(n=new re),n.red=e[t++],n.green=e[t++],n.blue=e[t++],n.alpha=e[t],n};re.byteToFloat=function(e){return e/255};re.floatToByte=function(e){return e===1?255:e*256|0};re.clone=function(e,t){if(l(e))return l(t)?(t.red=e.red,t.green=e.green,t.blue=e.blue,t.alpha=e.alpha,t):new re(e.red,e.green,e.blue,e.alpha)};re.equals=function(e,t){return e===t||l(e)&&l(t)&&e.red===t.red&&e.green===t.green&&e.blue===t.blue&&e.alpha===t.alpha};re.equalsArray=function(e,t,n){return e.red===t[n]&&e.green===t[n+1]&&e.blue===t[n+2]&&e.alpha===t[n+3]};re.prototype.clone=function(e){return re.clone(this,e)};re.prototype.equals=function(e){return re.equals(this,e)};re.prototype.equalsEpsilon=function(e,t){return this===e||l(e)&&Math.abs(this.red-e.red)<=t&&Math.abs(this.green-e.green)<=t&&Math.abs(this.blue-e.blue)<=t&&Math.abs(this.alpha-e.alpha)<=t};re.prototype.toString=function(){return`(${this.red}, ${this.green}, ${this.blue}, ${this.alpha})`};re.prototype.toCssColorString=function(){let e=re.floatToByte(this.red),t=re.floatToByte(this.green),n=re.floatToByte(this.blue);return this.alpha===1?`rgb(${e},${t},${n})`:`rgba(${e},${t},${n},${this.alpha})`};re.prototype.toCssHexString=function(){let e=re.floatToByte(this.red).toString(16);e.length<2&&(e=`0${e}`);let t=re.floatToByte(this.green).toString(16);t.length<2&&(t=`0${t}`);let n=re.floatToByte(this.blue).toString(16);if(n.length<2&&(n=`0${n}`),this.alpha<1){let i=re.floatToByte(this.alpha).toString(16);return i.length<2&&(i=`0${i}`),`#${e}${t}${n}${i}`}return`#${e}${t}${n}`};re.prototype.toBytes=function(e){let t=re.floatToByte(this.red),n=re.floatToByte(this.green),i=re.floatToByte(this.blue),o=re.floatToByte(this.alpha);return l(e)?(e[0]=t,e[1]=n,e[2]=i,e[3]=o,e):[t,n,i,o]};re.prototype.toRgba=function(){return ep[0]=re.floatToByte(this.red),ep[1]=re.floatToByte(this.green),ep[2]=re.floatToByte(this.blue),ep[3]=re.floatToByte(this.alpha),K9[0]};re.prototype.brighten=function(e,t){return e=1-e,t.red=1-(1-this.red)*e,t.green=1-(1-this.green)*e,t.blue=1-(1-this.blue)*e,t.alpha=this.alpha,t};re.prototype.darken=function(e,t){return e=1-e,t.red=this.red*e,t.green=this.green*e,t.blue=this.blue*e,t.alpha=this.alpha,t};re.prototype.withAlpha=function(e,t){return re.fromAlpha(this,e,t)};re.add=function(e,t,n){return n.red=e.red+t.red,n.green=e.green+t.green,n.blue=e.blue+t.blue,n.alpha=e.alpha+t.alpha,n};re.subtract=function(e,t,n){return n.red=e.red-t.red,n.green=e.green-t.green,n.blue=e.blue-t.blue,n.alpha=e.alpha-t.alpha,n};re.multiply=function(e,t,n){return n.red=e.red*t.red,n.green=e.green*t.green,n.blue=e.blue*t.blue,n.alpha=e.alpha*t.alpha,n};re.divide=function(e,t,n){return n.red=e.red/t.red,n.green=e.green/t.green,n.blue=e.blue/t.blue,n.alpha=e.alpha/t.alpha,n};re.mod=function(e,t,n){return n.red=e.red%t.red,n.green=e.green%t.green,n.blue=e.blue%t.blue,n.alpha=e.alpha%t.alpha,n};re.lerp=function(e,t,n,i){return i.red=D.lerp(e.red,t.red,n),i.green=D.lerp(e.green,t.green,n),i.blue=D.lerp(e.blue,t.blue,n),i.alpha=D.lerp(e.alpha,t.alpha,n),i};re.multiplyByScalar=function(e,t,n){return n.red=e.red*t,n.green=e.green*t,n.blue=e.blue*t,n.alpha=e.alpha*t,n};re.divideByScalar=function(e,t,n){return n.red=e.red/t,n.green=e.green/t,n.blue=e.blue/t,n.alpha=e.alpha/t,n};re.ALICEBLUE=Object.freeze(re.fromCssColorString("#F0F8FF"));re.ANTIQUEWHITE=Object.freeze(re.fromCssColorString("#FAEBD7"));re.AQUA=Object.freeze(re.fromCssColorString("#00FFFF"));re.AQUAMARINE=Object.freeze(re.fromCssColorString("#7FFFD4"));re.AZURE=Object.freeze(re.fromCssColorString("#F0FFFF"));re.BEIGE=Object.freeze(re.fromCssColorString("#F5F5DC"));re.BISQUE=Object.freeze(re.fromCssColorString("#FFE4C4"));re.BLACK=Object.freeze(re.fromCssColorString("#000000"));re.BLANCHEDALMOND=Object.freeze(re.fromCssColorString("#FFEBCD"));re.BLUE=Object.freeze(re.fromCssColorString("#0000FF"));re.BLUEVIOLET=Object.freeze(re.fromCssColorString("#8A2BE2"));re.BROWN=Object.freeze(re.fromCssColorString("#A52A2A"));re.BURLYWOOD=Object.freeze(re.fromCssColorString("#DEB887"));re.CADETBLUE=Object.freeze(re.fromCssColorString("#5F9EA0"));re.CHARTREUSE=Object.freeze(re.fromCssColorString("#7FFF00"));re.CHOCOLATE=Object.freeze(re.fromCssColorString("#D2691E"));re.CORAL=Object.freeze(re.fromCssColorString("#FF7F50"));re.CORNFLOWERBLUE=Object.freeze(re.fromCssColorString("#6495ED"));re.CORNSILK=Object.freeze(re.fromCssColorString("#FFF8DC"));re.CRIMSON=Object.freeze(re.fromCssColorString("#DC143C"));re.CYAN=Object.freeze(re.fromCssColorString("#00FFFF"));re.DARKBLUE=Object.freeze(re.fromCssColorString("#00008B"));re.DARKCYAN=Object.freeze(re.fromCssColorString("#008B8B"));re.DARKGOLDENROD=Object.freeze(re.fromCssColorString("#B8860B"));re.DARKGRAY=Object.freeze(re.fromCssColorString("#A9A9A9"));re.DARKGREEN=Object.freeze(re.fromCssColorString("#006400"));re.DARKGREY=re.DARKGRAY;re.DARKKHAKI=Object.freeze(re.fromCssColorString("#BDB76B"));re.DARKMAGENTA=Object.freeze(re.fromCssColorString("#8B008B"));re.DARKOLIVEGREEN=Object.freeze(re.fromCssColorString("#556B2F"));re.DARKORANGE=Object.freeze(re.fromCssColorString("#FF8C00"));re.DARKORCHID=Object.freeze(re.fromCssColorString("#9932CC"));re.DARKRED=Object.freeze(re.fromCssColorString("#8B0000"));re.DARKSALMON=Object.freeze(re.fromCssColorString("#E9967A"));re.DARKSEAGREEN=Object.freeze(re.fromCssColorString("#8FBC8F"));re.DARKSLATEBLUE=Object.freeze(re.fromCssColorString("#483D8B"));re.DARKSLATEGRAY=Object.freeze(re.fromCssColorString("#2F4F4F"));re.DARKSLATEGREY=re.DARKSLATEGRAY;re.DARKTURQUOISE=Object.freeze(re.fromCssColorString("#00CED1"));re.DARKVIOLET=Object.freeze(re.fromCssColorString("#9400D3"));re.DEEPPINK=Object.freeze(re.fromCssColorString("#FF1493"));re.DEEPSKYBLUE=Object.freeze(re.fromCssColorString("#00BFFF"));re.DIMGRAY=Object.freeze(re.fromCssColorString("#696969"));re.DIMGREY=re.DIMGRAY;re.DODGERBLUE=Object.freeze(re.fromCssColorString("#1E90FF"));re.FIREBRICK=Object.freeze(re.fromCssColorString("#B22222"));re.FLORALWHITE=Object.freeze(re.fromCssColorString("#FFFAF0"));re.FORESTGREEN=Object.freeze(re.fromCssColorString("#228B22"));re.FUCHSIA=Object.freeze(re.fromCssColorString("#FF00FF"));re.GAINSBORO=Object.freeze(re.fromCssColorString("#DCDCDC"));re.GHOSTWHITE=Object.freeze(re.fromCssColorString("#F8F8FF"));re.GOLD=Object.freeze(re.fromCssColorString("#FFD700"));re.GOLDENROD=Object.freeze(re.fromCssColorString("#DAA520"));re.GRAY=Object.freeze(re.fromCssColorString("#808080"));re.GREEN=Object.freeze(re.fromCssColorString("#008000"));re.GREENYELLOW=Object.freeze(re.fromCssColorString("#ADFF2F"));re.GREY=re.GRAY;re.HONEYDEW=Object.freeze(re.fromCssColorString("#F0FFF0"));re.HOTPINK=Object.freeze(re.fromCssColorString("#FF69B4"));re.INDIANRED=Object.freeze(re.fromCssColorString("#CD5C5C"));re.INDIGO=Object.freeze(re.fromCssColorString("#4B0082"));re.IVORY=Object.freeze(re.fromCssColorString("#FFFFF0"));re.KHAKI=Object.freeze(re.fromCssColorString("#F0E68C"));re.LAVENDER=Object.freeze(re.fromCssColorString("#E6E6FA"));re.LAVENDAR_BLUSH=Object.freeze(re.fromCssColorString("#FFF0F5"));re.LAWNGREEN=Object.freeze(re.fromCssColorString("#7CFC00"));re.LEMONCHIFFON=Object.freeze(re.fromCssColorString("#FFFACD"));re.LIGHTBLUE=Object.freeze(re.fromCssColorString("#ADD8E6"));re.LIGHTCORAL=Object.freeze(re.fromCssColorString("#F08080"));re.LIGHTCYAN=Object.freeze(re.fromCssColorString("#E0FFFF"));re.LIGHTGOLDENRODYELLOW=Object.freeze(re.fromCssColorString("#FAFAD2"));re.LIGHTGRAY=Object.freeze(re.fromCssColorString("#D3D3D3"));re.LIGHTGREEN=Object.freeze(re.fromCssColorString("#90EE90"));re.LIGHTGREY=re.LIGHTGRAY;re.LIGHTPINK=Object.freeze(re.fromCssColorString("#FFB6C1"));re.LIGHTSEAGREEN=Object.freeze(re.fromCssColorString("#20B2AA"));re.LIGHTSKYBLUE=Object.freeze(re.fromCssColorString("#87CEFA"));re.LIGHTSLATEGRAY=Object.freeze(re.fromCssColorString("#778899"));re.LIGHTSLATEGREY=re.LIGHTSLATEGRAY;re.LIGHTSTEELBLUE=Object.freeze(re.fromCssColorString("#B0C4DE"));re.LIGHTYELLOW=Object.freeze(re.fromCssColorString("#FFFFE0"));re.LIME=Object.freeze(re.fromCssColorString("#00FF00"));re.LIMEGREEN=Object.freeze(re.fromCssColorString("#32CD32"));re.LINEN=Object.freeze(re.fromCssColorString("#FAF0E6"));re.MAGENTA=Object.freeze(re.fromCssColorString("#FF00FF"));re.MAROON=Object.freeze(re.fromCssColorString("#800000"));re.MEDIUMAQUAMARINE=Object.freeze(re.fromCssColorString("#66CDAA"));re.MEDIUMBLUE=Object.freeze(re.fromCssColorString("#0000CD"));re.MEDIUMORCHID=Object.freeze(re.fromCssColorString("#BA55D3"));re.MEDIUMPURPLE=Object.freeze(re.fromCssColorString("#9370DB"));re.MEDIUMSEAGREEN=Object.freeze(re.fromCssColorString("#3CB371"));re.MEDIUMSLATEBLUE=Object.freeze(re.fromCssColorString("#7B68EE"));re.MEDIUMSPRINGGREEN=Object.freeze(re.fromCssColorString("#00FA9A"));re.MEDIUMTURQUOISE=Object.freeze(re.fromCssColorString("#48D1CC"));re.MEDIUMVIOLETRED=Object.freeze(re.fromCssColorString("#C71585"));re.MIDNIGHTBLUE=Object.freeze(re.fromCssColorString("#191970"));re.MINTCREAM=Object.freeze(re.fromCssColorString("#F5FFFA"));re.MISTYROSE=Object.freeze(re.fromCssColorString("#FFE4E1"));re.MOCCASIN=Object.freeze(re.fromCssColorString("#FFE4B5"));re.NAVAJOWHITE=Object.freeze(re.fromCssColorString("#FFDEAD"));re.NAVY=Object.freeze(re.fromCssColorString("#000080"));re.OLDLACE=Object.freeze(re.fromCssColorString("#FDF5E6"));re.OLIVE=Object.freeze(re.fromCssColorString("#808000"));re.OLIVEDRAB=Object.freeze(re.fromCssColorString("#6B8E23"));re.ORANGE=Object.freeze(re.fromCssColorString("#FFA500"));re.ORANGERED=Object.freeze(re.fromCssColorString("#FF4500"));re.ORCHID=Object.freeze(re.fromCssColorString("#DA70D6"));re.PALEGOLDENROD=Object.freeze(re.fromCssColorString("#EEE8AA"));re.PALEGREEN=Object.freeze(re.fromCssColorString("#98FB98"));re.PALETURQUOISE=Object.freeze(re.fromCssColorString("#AFEEEE"));re.PALEVIOLETRED=Object.freeze(re.fromCssColorString("#DB7093"));re.PAPAYAWHIP=Object.freeze(re.fromCssColorString("#FFEFD5"));re.PEACHPUFF=Object.freeze(re.fromCssColorString("#FFDAB9"));re.PERU=Object.freeze(re.fromCssColorString("#CD853F"));re.PINK=Object.freeze(re.fromCssColorString("#FFC0CB"));re.PLUM=Object.freeze(re.fromCssColorString("#DDA0DD"));re.POWDERBLUE=Object.freeze(re.fromCssColorString("#B0E0E6"));re.PURPLE=Object.freeze(re.fromCssColorString("#800080"));re.RED=Object.freeze(re.fromCssColorString("#FF0000"));re.ROSYBROWN=Object.freeze(re.fromCssColorString("#BC8F8F"));re.ROYALBLUE=Object.freeze(re.fromCssColorString("#4169E1"));re.SADDLEBROWN=Object.freeze(re.fromCssColorString("#8B4513"));re.SALMON=Object.freeze(re.fromCssColorString("#FA8072"));re.SANDYBROWN=Object.freeze(re.fromCssColorString("#F4A460"));re.SEAGREEN=Object.freeze(re.fromCssColorString("#2E8B57"));re.SEASHELL=Object.freeze(re.fromCssColorString("#FFF5EE"));re.SIENNA=Object.freeze(re.fromCssColorString("#A0522D"));re.SILVER=Object.freeze(re.fromCssColorString("#C0C0C0"));re.SKYBLUE=Object.freeze(re.fromCssColorString("#87CEEB"));re.SLATEBLUE=Object.freeze(re.fromCssColorString("#6A5ACD"));re.SLATEGRAY=Object.freeze(re.fromCssColorString("#708090"));re.SLATEGREY=re.SLATEGRAY;re.SNOW=Object.freeze(re.fromCssColorString("#FFFAFA"));re.SPRINGGREEN=Object.freeze(re.fromCssColorString("#00FF7F"));re.STEELBLUE=Object.freeze(re.fromCssColorString("#4682B4"));re.TAN=Object.freeze(re.fromCssColorString("#D2B48C"));re.TEAL=Object.freeze(re.fromCssColorString("#008080"));re.THISTLE=Object.freeze(re.fromCssColorString("#D8BFD8"));re.TOMATO=Object.freeze(re.fromCssColorString("#FF6347"));re.TURQUOISE=Object.freeze(re.fromCssColorString("#40E0D0"));re.VIOLET=Object.freeze(re.fromCssColorString("#EE82EE"));re.WHEAT=Object.freeze(re.fromCssColorString("#F5DEB3"));re.WHITE=Object.freeze(re.fromCssColorString("#FFFFFF"));re.WHITESMOKE=Object.freeze(re.fromCssColorString("#F5F5F5"));re.YELLOW=Object.freeze(re.fromCssColorString("#FFFF00"));re.YELLOWGREEN=Object.freeze(re.fromCssColorString("#9ACD32"));re.TRANSPARENT=Object.freeze(new re(0,0,0,0));var G=re;function Wve(){return!0}function jve(e,t){t=t??"This object was destroyed, i.e., destroy() was called.";function n(){}for(let i in e)typeof e[i]=="function"&&(e[i]=n);e.isDestroyed=Wve}var ue=jve;function Qu(e,t){e=e??0,this._near=e,t=t??Number.MAX_VALUE,this._far=t}Object.defineProperties(Qu.prototype,{near:{get:function(){return this._near},set:function(e){this._near=e}},far:{get:function(){return this._far},set:function(e){this._far=e}}});Qu.packedLength=2;Qu.pack=function(e,t,n){return n=n??0,t[n++]=e.near,t[n]=e.far,t};Qu.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Qu),n.near=e[t++],n.far=e[t],n};Qu.equals=function(e,t){return e===t||l(e)&&l(t)&&e.near===t.near&&e.far===t.far};Qu.clone=function(e,t){if(l(e))return l(t)||(t=new Qu),t.near=e.near,t.far=e.far,t};Qu.prototype.clone=function(e){return Qu.clone(this,e)};Qu.prototype.equals=function(e){return Qu.equals(this,e)};var Ut=Qu;function Hf(e,t,n,i){this.near=e??0,this.nearValue=t??0,this.far=n??1,this.farValue=i??0}Hf.clone=function(e,t){if(l(e))return l(t)?(t.near=e.near,t.nearValue=e.nearValue,t.far=e.far,t.farValue=e.farValue,t):new Hf(e.near,e.nearValue,e.far,e.farValue)};Hf.packedLength=4;Hf.pack=function(e,t,n){return n=n??0,t[n++]=e.near,t[n++]=e.nearValue,t[n++]=e.far,t[n]=e.farValue,t};Hf.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Hf),n.near=e[t++],n.nearValue=e[t++],n.far=e[t++],n.farValue=e[t],n};Hf.equals=function(e,t){return e===t||l(e)&&l(t)&&e.near===t.near&&e.nearValue===t.nearValue&&e.far===t.far&&e.farValue===t.farValue};Hf.prototype.clone=function(e){return Hf.clone(this,e)};Hf.prototype.equals=function(e){return Hf.equals(this,e)};var jt=Hf;var XC={NONE:0,CLAMP_TO_GROUND:1,RELATIVE_TO_GROUND:2,CLAMP_TO_TERRAIN:3,RELATIVE_TO_TERRAIN:4,CLAMP_TO_3D_TILE:5,RELATIVE_TO_3D_TILE:6},Ze=Object.freeze(XC);function Wf(e){return e===XC.CLAMP_TO_GROUND||e===XC.CLAMP_TO_3D_TILE||e===XC.CLAMP_TO_TERRAIN}function Kx(e){return e===XC.RELATIVE_TO_GROUND||e===XC.RELATIVE_TO_3D_TILE||e===XC.RELATIVE_TO_TERRAIN}var Yve={CENTER:0,LEFT:1,RIGHT:-1},Ri=Object.freeze(Yve);var qve={CENTER:0,BOTTOM:1,BASELINE:2,TOP:-1},zn=Object.freeze(qve);var Kve=Object.freeze({DONE:0,PENDING:1,FAILED:2}),mt=Kve;function sh(){me.throwInstantiationError()}Object.defineProperties(sh.prototype,{isConstant:{get:me.throwInstantiationError},definitionChanged:{get:me.throwInstantiationError}});sh.prototype.getValue=me.throwInstantiationError;sh.prototype.equals=me.throwInstantiationError;sh.equals=function(e,t){return e===t||l(e)&&e.equals(t)};sh.arrayEquals=function(e,t){if(e===t)return!0;if(!l(e)||!l(t)||e.length!==t.length)return!1;let n=e.length;for(let i=0;i<n;i++)if(!sh.equals(e[i],t[i]))return!1;return!0};sh.isConstant=function(e){return!l(e)||e.isConstant};sh.getValueOrUndefined=function(e,t,n){return l(e)?e.getValue(t,n):void 0};sh.getValueOrDefault=function(e,t,n,i){return l(e)?e.getValue(t,i)??n:n};sh.getValueOrClonedDefault=function(e,t,n,i){let o;return l(e)&&(o=e.getValue(t,i)),l(o)||(o=n.clone(o)),o};var j=sh;var Xve={LEFT:-1,NONE:0,RIGHT:1},br=Object.freeze(Xve);var Jve=G.WHITE,Zve=d.ZERO,$ve=Ze.NONE,ePe=U.ZERO,tPe=1,nPe=0,iPe=d.ZERO,oPe=Ri.CENTER,rPe=zn.CENTER,sPe=!1,aPe=br.NONE,cPe=new d,lPe=new G,uPe=new d,fPe=new U,dPe=new jt,hPe=new jt,mPe=new jt,APe=new Ye,pPe=new Ut;function Rne(e){this.entity=e,this.billboard=void 0,this.textureValue=void 0}function I_(e,t){t.collectionChanged.addEventListener(I_.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new vt,this._onCollectionChanged(t,t.values,[],[])}I_.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._billboard,c,u=r.billboard,f=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),h;if(f&&(h=j.getValueOrUndefined(s._position,e,cPe),c=j.getValueOrUndefined(a._image,e),f=l(h)&&l(c)),!f){X9(r,s,n);continue}j.isConstant(s._position)||(n._clusterDirty=!0),l(u)||(u=n.getBillboard(s),u.id=s,r.billboard=u,r.textureValue=void 0),u.show=f,r.textureValue!==c&&(u.image=c,r.textureValue=c),u.position=h,u.color=j.getValueOrDefault(a._color,e,Jve,lPe),u.eyeOffset=j.getValueOrDefault(a._eyeOffset,e,Zve,uPe),u.heightReference=j.getValueOrDefault(a._heightReference,e,$ve),u.pixelOffset=j.getValueOrDefault(a._pixelOffset,e,ePe,fPe),u.scale=j.getValueOrDefault(a._scale,e,tPe),u.rotation=j.getValueOrDefault(a._rotation,e,nPe),u.alignedAxis=j.getValueOrDefault(a._alignedAxis,e,iPe),u.horizontalOrigin=j.getValueOrDefault(a._horizontalOrigin,e,oPe),u.verticalOrigin=j.getValueOrDefault(a._verticalOrigin,e,rPe),u.width=j.getValueOrUndefined(a._width,e),u.height=j.getValueOrUndefined(a._height,e),u.scaleByDistance=j.getValueOrUndefined(a._scaleByDistance,e,dPe),u.translucencyByDistance=j.getValueOrUndefined(a._translucencyByDistance,e,hPe),u.pixelOffsetScaleByDistance=j.getValueOrUndefined(a._pixelOffsetScaleByDistance,e,mPe),u.sizeInMeters=j.getValueOrDefault(a._sizeInMeters,e,sPe),u.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e,pPe),u.disableDepthTestDistance=j.getValueOrUndefined(a._disableDepthTestDistance,e),u.splitDirection=j.getValueOrDefault(a._splitDirection,e,aPe);let A=j.getValueOrUndefined(a._imageSubRegion,e,APe);l(A)&&u.setImageSubRegion(u.image,A)}return!0};I_.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!l(n.billboard))return mt.FAILED;let i=n.billboard;if(i.heightReference===Ze.NONE)t.center=d.clone(i.position,t.center);else{if(!l(i._clampedPosition))return mt.PENDING;t.center=d.clone(i._clampedPosition,t.center)}return t.radius=0,mt.DONE};I_.prototype.isDestroyed=function(){return!1};I_.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(I_.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removeBillboard(e[t]);return ue(this)};I_.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._billboard)&&l(r._position)&&s.set(r.id,new Rne(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._billboard)&&l(r._position)?s.contains(r.id)||s.set(r.id,new Rne(r)):(X9(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],X9(s.get(r.id),r,a),s.remove(r.id)};function X9(e,t,n){l(e)&&(e.billboard=void 0,n.removeBillboard(t))}var SB=I_;function gPe(e,t){this.start=e??0,this.stop=t??0}var sc=gPe;function En(e,t){this.center=d.clone(e??d.ZERO),this.radius=t??0}var $9=new d,e6=new d,t6=new d,n6=new d,i6=new d,o6=new d,r6=new d,La=new d,s6=new d,a6=new d,c6=new d,l6=new d,_Pe=4/3*D.PI;En.fromPoints=function(e,t){if(l(t)||(t=new En),!l(e)||e.length===0)return t.center=d.clone(d.ZERO,t.center),t.radius=0,t;let n=d.clone(e[0],r6),i=d.clone(n,$9),o=d.clone(n,e6),r=d.clone(n,t6),s=d.clone(n,n6),a=d.clone(n,i6),c=d.clone(n,o6),u=e.length,f;for(f=1;f<u;f++){d.clone(e[f],n);let P=n.x,M=n.y,L=n.z;P<i.x&&d.clone(n,i),P>s.x&&d.clone(n,s),M<o.y&&d.clone(n,o),M>a.y&&d.clone(n,a),L<r.z&&d.clone(n,r),L>c.z&&d.clone(n,c)}let h=d.magnitudeSquared(d.subtract(s,i,La)),A=d.magnitudeSquared(d.subtract(a,o,La)),g=d.magnitudeSquared(d.subtract(c,r,La)),m=i,_=s,y=h;A>y&&(y=A,m=o,_=a),g>y&&(y=g,m=r,_=c);let C=s6;C.x=(m.x+_.x)*.5,C.y=(m.y+_.y)*.5,C.z=(m.z+_.z)*.5;let E=d.magnitudeSquared(d.subtract(_,C,La)),I=Math.sqrt(E),b=a6;b.x=i.x,b.y=o.y,b.z=r.z;let S=c6;S.x=s.x,S.y=a.y,S.z=c.z;let B=d.midpoint(b,S,l6),v=0;for(f=0;f<u;f++){d.clone(e[f],n);let P=d.magnitude(d.subtract(n,B,La));P>v&&(v=P);let M=d.magnitudeSquared(d.subtract(n,C,La));if(M>E){let L=Math.sqrt(M);I=(I+L)*.5,E=I*I;let p=L-I;C.x=(I*C.x+p*n.x)/L,C.y=(I*C.y+p*n.y)/L,C.z=(I*C.z+p*n.z)/L}}return I<v?(d.clone(C,t.center),t.radius=I):(d.clone(B,t.center),t.radius=v),t};var Mne=new Ui,yPe=new d,CPe=new d,J9=new Ae,Z9=new Ae;En.fromRectangle2D=function(e,t,n){return En.fromRectangleWithHeights2D(e,t,0,0,n)};En.fromRectangleWithHeights2D=function(e,t,n,i,o){if(l(o)||(o=new En),!l(e))return o.center=d.clone(d.ZERO,o.center),o.radius=0,o;Mne._ellipsoid=te.default,t=t??Mne,ae.southwest(e,J9),J9.height=n,ae.northeast(e,Z9),Z9.height=i;let r=t.project(J9,yPe),s=t.project(Z9,CPe),a=s.x-r.x,c=s.y-r.y,u=s.z-r.z;o.radius=Math.sqrt(a*a+c*c+u*u)*.5;let f=o.center;return f.x=r.x+a*.5,f.y=r.y+c*.5,f.z=r.z+u*.5,o};var EPe=[];En.fromRectangle3D=function(e,t,n,i){if(t=t??te.default,n=n??0,l(i)||(i=new En),!l(e))return i.center=d.clone(d.ZERO,i.center),i.radius=0,i;let o=ae.subsample(e,t,n,EPe);return En.fromPoints(o,i)};En.fromVertices=function(e,t,n,i){if(l(i)||(i=new En),!l(e)||e.length===0)return i.center=d.clone(d.ZERO,i.center),i.radius=0,i;t=t??d.ZERO,n=n??3;let o=r6;o.x=e[0]+t.x,o.y=e[1]+t.y,o.z=e[2]+t.z;let r=d.clone(o,$9),s=d.clone(o,e6),a=d.clone(o,t6),c=d.clone(o,n6),u=d.clone(o,i6),f=d.clone(o,o6),h=e.length,A;for(A=0;A<h;A+=n){let L=e[A]+t.x,p=e[A+1]+t.y,x=e[A+2]+t.z;o.x=L,o.y=p,o.z=x,L<r.x&&d.clone(o,r),L>c.x&&d.clone(o,c),p<s.y&&d.clone(o,s),p>u.y&&d.clone(o,u),x<a.z&&d.clone(o,a),x>f.z&&d.clone(o,f)}let g=d.magnitudeSquared(d.subtract(c,r,La)),m=d.magnitudeSquared(d.subtract(u,s,La)),_=d.magnitudeSquared(d.subtract(f,a,La)),y=r,C=c,E=g;m>E&&(E=m,y=s,C=u),_>E&&(E=_,y=a,C=f);let I=s6;I.x=(y.x+C.x)*.5,I.y=(y.y+C.y)*.5,I.z=(y.z+C.z)*.5;let b=d.magnitudeSquared(d.subtract(C,I,La)),S=Math.sqrt(b),B=a6;B.x=r.x,B.y=s.y,B.z=a.z;let v=c6;v.x=c.x,v.y=u.y,v.z=f.z;let P=d.midpoint(B,v,l6),M=0;for(A=0;A<h;A+=n){o.x=e[A]+t.x,o.y=e[A+1]+t.y,o.z=e[A+2]+t.z;let L=d.magnitude(d.subtract(o,P,La));L>M&&(M=L);let p=d.magnitudeSquared(d.subtract(o,I,La));if(p>b){let x=Math.sqrt(p);S=(S+x)*.5,b=S*S;let T=x-S;I.x=(S*I.x+T*o.x)/x,I.y=(S*I.y+T*o.y)/x,I.z=(S*I.z+T*o.z)/x}}return S<M?(d.clone(I,i.center),i.radius=S):(d.clone(P,i.center),i.radius=M),i};En.fromEncodedCartesianVertices=function(e,t,n){if(l(n)||(n=new En),!l(e)||!l(t)||e.length!==t.length||e.length===0)return n.center=d.clone(d.ZERO,n.center),n.radius=0,n;let i=r6;i.x=e[0]+t[0],i.y=e[1]+t[1],i.z=e[2]+t[2];let o=d.clone(i,$9),r=d.clone(i,e6),s=d.clone(i,t6),a=d.clone(i,n6),c=d.clone(i,i6),u=d.clone(i,o6),f=e.length,h;for(h=0;h<f;h+=3){let M=e[h]+t[h],L=e[h+1]+t[h+1],p=e[h+2]+t[h+2];i.x=M,i.y=L,i.z=p,M<o.x&&d.clone(i,o),M>a.x&&d.clone(i,a),L<r.y&&d.clone(i,r),L>c.y&&d.clone(i,c),p<s.z&&d.clone(i,s),p>u.z&&d.clone(i,u)}let A=d.magnitudeSquared(d.subtract(a,o,La)),g=d.magnitudeSquared(d.subtract(c,r,La)),m=d.magnitudeSquared(d.subtract(u,s,La)),_=o,y=a,C=A;g>C&&(C=g,_=r,y=c),m>C&&(C=m,_=s,y=u);let E=s6;E.x=(_.x+y.x)*.5,E.y=(_.y+y.y)*.5,E.z=(_.z+y.z)*.5;let I=d.magnitudeSquared(d.subtract(y,E,La)),b=Math.sqrt(I),S=a6;S.x=o.x,S.y=r.y,S.z=s.z;let B=c6;B.x=a.x,B.y=c.y,B.z=u.z;let v=d.midpoint(S,B,l6),P=0;for(h=0;h<f;h+=3){i.x=e[h]+t[h],i.y=e[h+1]+t[h+1],i.z=e[h+2]+t[h+2];let M=d.magnitude(d.subtract(i,v,La));M>P&&(P=M);let L=d.magnitudeSquared(d.subtract(i,E,La));if(L>I){let p=Math.sqrt(L);b=(b+p)*.5,I=b*b;let x=p-b;E.x=(b*E.x+x*i.x)/p,E.y=(b*E.y+x*i.y)/p,E.z=(b*E.z+x*i.z)/p}}return b<P?(d.clone(E,n.center),n.radius=b):(d.clone(v,n.center),n.radius=P),n};En.fromCornerPoints=function(e,t,n){l(n)||(n=new En);let i=d.midpoint(e,t,n.center);return n.radius=d.distance(i,t),n};En.fromEllipsoid=function(e,t){return l(t)||(t=new En),d.clone(d.ZERO,t.center),t.radius=e.maximumRadius,t};var IPe=new d;En.fromBoundingSpheres=function(e,t){if(l(t)||(t=new En),!l(e)||e.length===0)return t.center=d.clone(d.ZERO,t.center),t.radius=0,t;let n=e.length;if(n===1)return En.clone(e[0],t);if(n===2)return En.union(e[0],e[1],t);let i=[],o;for(o=0;o<n;o++)i.push(e[o].center);t=En.fromPoints(i,t);let r=t.center,s=t.radius;for(o=0;o<n;o++){let a=e[o];s=Math.max(s,d.distance(r,a.center,IPe)+a.radius)}return t.radius=s,t};var xPe=new d,bPe=new d,TPe=new d;En.fromOrientedBoundingBox=function(e,t){l(t)||(t=new En);let n=e.halfAxes,i=J.getColumn(n,0,xPe),o=J.getColumn(n,1,bPe),r=J.getColumn(n,2,TPe);return d.add(i,o,i),d.add(i,r,i),t.center=d.clone(e.center,t.center),t.radius=d.magnitude(i),t};var SPe=new d,wPe=new d;En.fromTransformation=function(e,t){l(t)||(t=new En);let n=N.getTranslation(e,SPe),i=N.getScale(e,wPe),o=.5*d.magnitude(i);return t.center=d.clone(n,t.center),t.radius=o,t};En.clone=function(e,t){if(l(e))return l(t)?(t.center=d.clone(e.center,t.center),t.radius=e.radius,t):new En(e.center,e.radius)};En.packedLength=4;En.pack=function(e,t,n){n=n??0;let i=e.center;return t[n++]=i.x,t[n++]=i.y,t[n++]=i.z,t[n]=e.radius,t};En.unpack=function(e,t,n){t=t??0,l(n)||(n=new En);let i=n.center;return i.x=e[t++],i.y=e[t++],i.z=e[t++],n.radius=e[t],n};var BPe=new d,DPe=new d;En.union=function(e,t,n){l(n)||(n=new En);let i=e.center,o=e.radius,r=t.center,s=t.radius,a=d.subtract(r,i,BPe),c=d.magnitude(a);if(o>=c+s)return e.clone(n),n;if(s>=c+o)return t.clone(n),n;let u=(o+c+s)*.5,f=d.multiplyByScalar(a,(-o+u)/c,DPe);return d.add(f,i,f),d.clone(f,n.center),n.radius=u,n};var vPe=new d;En.expand=function(e,t,n){n=En.clone(e,n);let i=d.magnitude(d.subtract(t,n.center,vPe));return i>n.radius&&(n.radius=i),n};En.intersectPlane=function(e,t){let n=e.center,i=e.radius,o=t.normal,r=d.dot(o,n)+t.distance;return r<-i?tn.OUTSIDE:r<i?tn.INTERSECTING:tn.INSIDE};En.transform=function(e,t,n){return l(n)||(n=new En),n.center=N.multiplyByPoint(t,e.center,n.center),n.radius=N.getMaximumScale(t)*e.radius,n};var PPe=new d;En.distanceSquaredTo=function(e,t){let n=d.subtract(e.center,t,PPe),i=d.magnitude(n)-e.radius;return i<=0?0:i*i};En.transformWithoutScale=function(e,t,n){return l(n)||(n=new En),n.center=N.multiplyByPoint(t,e.center,n.center),n.radius=e.radius,n};var RPe=new d;En.computePlaneDistances=function(e,t,n,i){l(i)||(i=new sc);let o=d.subtract(e.center,t,RPe),r=d.dot(n,o);return i.start=r-e.radius,i.stop=r+e.radius,i};var Nne=new d,MPe=new d,NPe=new d,LPe=new d,OPe=new d,FPe=new Ae,One=new Array(8);for(let e=0;e<8;++e)One[e]=new d;var Lne=new Ui;En.projectTo2D=function(e,t,n){Lne._ellipsoid=te.default,t=t??Lne;let i=t.ellipsoid,o=e.center,r=e.radius,s;d.equals(o,d.ZERO)?s=d.clone(d.UNIT_X,Nne):s=i.geodeticSurfaceNormal(o,Nne);let a=d.cross(d.UNIT_Z,s,MPe);d.normalize(a,a);let c=d.cross(s,a,NPe);d.normalize(c,c),d.multiplyByScalar(s,r,s),d.multiplyByScalar(c,r,c),d.multiplyByScalar(a,r,a);let u=d.negate(c,OPe),f=d.negate(a,LPe),h=One,A=h[0];d.add(s,c,A),d.add(A,a,A),A=h[1],d.add(s,c,A),d.add(A,f,A),A=h[2],d.add(s,u,A),d.add(A,f,A),A=h[3],d.add(s,u,A),d.add(A,a,A),d.negate(s,s),A=h[4],d.add(s,c,A),d.add(A,a,A),A=h[5],d.add(s,c,A),d.add(A,f,A),A=h[6],d.add(s,u,A),d.add(A,f,A),A=h[7],d.add(s,u,A),d.add(A,a,A);let g=h.length;for(let C=0;C<g;++C){let E=h[C];d.add(o,E,E);let I=i.cartesianToCartographic(E,FPe);t.project(I,E)}n=En.fromPoints(h,n),o=n.center;let m=o.x,_=o.y,y=o.z;return o.x=y,o.y=m,o.z=_,n};En.isOccluded=function(e,t){return!t.isBoundingSphereVisible(e)};En.equals=function(e,t){return e===t||l(e)&&l(t)&&d.equals(e.center,t.center)&&e.radius===t.radius};En.prototype.intersectPlane=function(e){return En.intersectPlane(this,e)};En.prototype.distanceSquaredTo=function(e){return En.distanceSquaredTo(this,e)};En.prototype.computePlaneDistances=function(e,t,n){return En.computePlaneDistances(this,e,t,n)};En.prototype.isOccluded=function(e){return En.isOccluded(this,e)};En.prototype.equals=function(e){return En.equals(this,e)};En.prototype.clone=function(e){return En.clone(this,e)};En.prototype.volume=function(){let e=this.radius;return _Pe*e*e*e};var le=En;var QPe={DEPTH_BUFFER_BIT:256,STENCIL_BUFFER_BIT:1024,COLOR_BUFFER_BIT:16384,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,ZERO:0,ONE:1,SRC_COLOR:768,ONE_MINUS_SRC_COLOR:769,SRC_ALPHA:770,ONE_MINUS_SRC_ALPHA:771,DST_ALPHA:772,ONE_MINUS_DST_ALPHA:773,DST_COLOR:774,ONE_MINUS_DST_COLOR:775,SRC_ALPHA_SATURATE:776,FUNC_ADD:32774,BLEND_EQUATION:32777,BLEND_EQUATION_RGB:32777,BLEND_EQUATION_ALPHA:34877,FUNC_SUBTRACT:32778,FUNC_REVERSE_SUBTRACT:32779,BLEND_DST_RGB:32968,BLEND_SRC_RGB:32969,BLEND_DST_ALPHA:32970,BLEND_SRC_ALPHA:32971,CONSTANT_COLOR:32769,ONE_MINUS_CONSTANT_COLOR:32770,CONSTANT_ALPHA:32771,ONE_MINUS_CONSTANT_ALPHA:32772,BLEND_COLOR:32773,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,ARRAY_BUFFER_BINDING:34964,ELEMENT_ARRAY_BUFFER_BINDING:34965,STREAM_DRAW:35040,STATIC_DRAW:35044,DYNAMIC_DRAW:35048,BUFFER_SIZE:34660,BUFFER_USAGE:34661,CURRENT_VERTEX_ATTRIB:34342,FRONT:1028,BACK:1029,FRONT_AND_BACK:1032,CULL_FACE:2884,BLEND:3042,DITHER:3024,STENCIL_TEST:2960,DEPTH_TEST:2929,SCISSOR_TEST:3089,POLYGON_OFFSET_FILL:32823,SAMPLE_ALPHA_TO_COVERAGE:32926,SAMPLE_COVERAGE:32928,NO_ERROR:0,INVALID_ENUM:1280,INVALID_VALUE:1281,INVALID_OPERATION:1282,OUT_OF_MEMORY:1285,CW:2304,CCW:2305,LINE_WIDTH:2849,ALIASED_POINT_SIZE_RANGE:33901,ALIASED_LINE_WIDTH_RANGE:33902,CULL_FACE_MODE:2885,FRONT_FACE:2886,DEPTH_RANGE:2928,DEPTH_WRITEMASK:2930,DEPTH_CLEAR_VALUE:2931,DEPTH_FUNC:2932,STENCIL_CLEAR_VALUE:2961,STENCIL_FUNC:2962,STENCIL_FAIL:2964,STENCIL_PASS_DEPTH_FAIL:2965,STENCIL_PASS_DEPTH_PASS:2966,STENCIL_REF:2967,STENCIL_VALUE_MASK:2963,STENCIL_WRITEMASK:2968,STENCIL_BACK_FUNC:34816,STENCIL_BACK_FAIL:34817,STENCIL_BACK_PASS_DEPTH_FAIL:34818,STENCIL_BACK_PASS_DEPTH_PASS:34819,STENCIL_BACK_REF:36003,STENCIL_BACK_VALUE_MASK:36004,STENCIL_BACK_WRITEMASK:36005,VIEWPORT:2978,SCISSOR_BOX:3088,COLOR_CLEAR_VALUE:3106,COLOR_WRITEMASK:3107,UNPACK_ALIGNMENT:3317,PACK_ALIGNMENT:3333,MAX_TEXTURE_SIZE:3379,MAX_VIEWPORT_DIMS:3386,SUBPIXEL_BITS:3408,RED_BITS:3410,GREEN_BITS:3411,BLUE_BITS:3412,ALPHA_BITS:3413,DEPTH_BITS:3414,STENCIL_BITS:3415,POLYGON_OFFSET_UNITS:10752,POLYGON_OFFSET_FACTOR:32824,TEXTURE_BINDING_2D:32873,SAMPLE_BUFFERS:32936,SAMPLES:32937,SAMPLE_COVERAGE_VALUE:32938,SAMPLE_COVERAGE_INVERT:32939,COMPRESSED_TEXTURE_FORMATS:34467,DONT_CARE:4352,FASTEST:4353,NICEST:4354,GENERATE_MIPMAP_HINT:33170,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DEPTH_COMPONENT:6402,ALPHA:6406,RGB:6407,RGBA:6408,LUMINANCE:6409,LUMINANCE_ALPHA:6410,UNSIGNED_SHORT_4_4_4_4:32819,UNSIGNED_SHORT_5_5_5_1:32820,UNSIGNED_SHORT_5_6_5:33635,FRAGMENT_SHADER:35632,VERTEX_SHADER:35633,MAX_VERTEX_ATTRIBS:34921,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VARYING_VECTORS:36348,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_FRAGMENT_UNIFORM_VECTORS:36349,SHADER_TYPE:35663,DELETE_STATUS:35712,LINK_STATUS:35714,VALIDATE_STATUS:35715,ATTACHED_SHADERS:35717,ACTIVE_UNIFORMS:35718,ACTIVE_ATTRIBUTES:35721,SHADING_LANGUAGE_VERSION:35724,CURRENT_PROGRAM:35725,NEVER:512,LESS:513,EQUAL:514,LEQUAL:515,GREATER:516,NOTEQUAL:517,GEQUAL:518,ALWAYS:519,KEEP:7680,REPLACE:7681,INCR:7682,DECR:7683,INVERT:5386,INCR_WRAP:34055,DECR_WRAP:34056,VENDOR:7936,RENDERER:7937,VERSION:7938,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,TEXTURE_2D:3553,TEXTURE:5890,TEXTURE_CUBE_MAP:34067,TEXTURE_BINDING_CUBE_MAP:34068,TEXTURE_CUBE_MAP_POSITIVE_X:34069,TEXTURE_CUBE_MAP_NEGATIVE_X:34070,TEXTURE_CUBE_MAP_POSITIVE_Y:34071,TEXTURE_CUBE_MAP_NEGATIVE_Y:34072,TEXTURE_CUBE_MAP_POSITIVE_Z:34073,TEXTURE_CUBE_MAP_NEGATIVE_Z:34074,MAX_CUBE_MAP_TEXTURE_SIZE:34076,TEXTURE0:33984,TEXTURE1:33985,TEXTURE2:33986,TEXTURE3:33987,TEXTURE4:33988,TEXTURE5:33989,TEXTURE6:33990,TEXTURE7:33991,TEXTURE8:33992,TEXTURE9:33993,TEXTURE10:33994,TEXTURE11:33995,TEXTURE12:33996,TEXTURE13:33997,TEXTURE14:33998,TEXTURE15:33999,TEXTURE16:34e3,TEXTURE17:34001,TEXTURE18:34002,TEXTURE19:34003,TEXTURE20:34004,TEXTURE21:34005,TEXTURE22:34006,TEXTURE23:34007,TEXTURE24:34008,TEXTURE25:34009,TEXTURE26:34010,TEXTURE27:34011,TEXTURE28:34012,TEXTURE29:34013,TEXTURE30:34014,TEXTURE31:34015,ACTIVE_TEXTURE:34016,REPEAT:10497,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,INT_VEC2:35667,INT_VEC3:35668,INT_VEC4:35669,BOOL:35670,BOOL_VEC2:35671,BOOL_VEC3:35672,BOOL_VEC4:35673,FLOAT_MAT2:35674,FLOAT_MAT3:35675,FLOAT_MAT4:35676,SAMPLER_2D:35678,SAMPLER_CUBE:35680,VERTEX_ATTRIB_ARRAY_ENABLED:34338,VERTEX_ATTRIB_ARRAY_SIZE:34339,VERTEX_ATTRIB_ARRAY_STRIDE:34340,VERTEX_ATTRIB_ARRAY_TYPE:34341,VERTEX_ATTRIB_ARRAY_NORMALIZED:34922,VERTEX_ATTRIB_ARRAY_POINTER:34373,VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:34975,IMPLEMENTATION_COLOR_READ_TYPE:35738,IMPLEMENTATION_COLOR_READ_FORMAT:35739,COMPILE_STATUS:35713,LOW_FLOAT:36336,MEDIUM_FLOAT:36337,HIGH_FLOAT:36338,LOW_INT:36339,MEDIUM_INT:36340,HIGH_INT:36341,FRAMEBUFFER:36160,RENDERBUFFER:36161,RGBA4:32854,RGB5_A1:32855,RGB565:36194,DEPTH_COMPONENT16:33189,STENCIL_INDEX:6401,STENCIL_INDEX8:36168,DEPTH_STENCIL:34041,RENDERBUFFER_WIDTH:36162,RENDERBUFFER_HEIGHT:36163,RENDERBUFFER_INTERNAL_FORMAT:36164,RENDERBUFFER_RED_SIZE:36176,RENDERBUFFER_GREEN_SIZE:36177,RENDERBUFFER_BLUE_SIZE:36178,RENDERBUFFER_ALPHA_SIZE:36179,RENDERBUFFER_DEPTH_SIZE:36180,RENDERBUFFER_STENCIL_SIZE:36181,FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:36048,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:36049,FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:36050,FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:36051,COLOR_ATTACHMENT0:36064,DEPTH_ATTACHMENT:36096,STENCIL_ATTACHMENT:36128,DEPTH_STENCIL_ATTACHMENT:33306,NONE:0,FRAMEBUFFER_COMPLETE:36053,FRAMEBUFFER_INCOMPLETE_ATTACHMENT:36054,FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:36055,FRAMEBUFFER_INCOMPLETE_DIMENSIONS:36057,FRAMEBUFFER_UNSUPPORTED:36061,FRAMEBUFFER_BINDING:36006,RENDERBUFFER_BINDING:36007,MAX_RENDERBUFFER_SIZE:34024,INVALID_FRAMEBUFFER_OPERATION:1286,UNPACK_FLIP_Y_WEBGL:37440,UNPACK_PREMULTIPLY_ALPHA_WEBGL:37441,CONTEXT_LOST_WEBGL:37442,UNPACK_COLORSPACE_CONVERSION_WEBGL:37443,BROWSER_DEFAULT_WEBGL:37444,COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGBA_ASTC_4x4_WEBGL:37808,COMPRESSED_RGB_ETC1_WEBGL:36196,COMPRESSED_RGBA_BPTC_UNORM:36492,HALF_FLOAT_OES:36193,DOUBLE:5130,READ_BUFFER:3074,UNPACK_ROW_LENGTH:3314,UNPACK_SKIP_ROWS:3315,UNPACK_SKIP_PIXELS:3316,PACK_ROW_LENGTH:3330,PACK_SKIP_ROWS:3331,PACK_SKIP_PIXELS:3332,COLOR:6144,DEPTH:6145,STENCIL:6146,RED:6403,RGB8:32849,RGBA8:32856,RGB10_A2:32857,TEXTURE_BINDING_3D:32874,UNPACK_SKIP_IMAGES:32877,UNPACK_IMAGE_HEIGHT:32878,TEXTURE_3D:32879,TEXTURE_WRAP_R:32882,MAX_3D_TEXTURE_SIZE:32883,UNSIGNED_INT_2_10_10_10_REV:33640,MAX_ELEMENTS_VERTICES:33e3,MAX_ELEMENTS_INDICES:33001,TEXTURE_MIN_LOD:33082,TEXTURE_MAX_LOD:33083,TEXTURE_BASE_LEVEL:33084,TEXTURE_MAX_LEVEL:33085,MIN:32775,MAX:32776,DEPTH_COMPONENT24:33190,MAX_TEXTURE_LOD_BIAS:34045,TEXTURE_COMPARE_MODE:34892,TEXTURE_COMPARE_FUNC:34893,CURRENT_QUERY:34917,QUERY_RESULT:34918,QUERY_RESULT_AVAILABLE:34919,STREAM_READ:35041,STREAM_COPY:35042,STATIC_READ:35045,STATIC_COPY:35046,DYNAMIC_READ:35049,DYNAMIC_COPY:35050,MAX_DRAW_BUFFERS:34852,DRAW_BUFFER0:34853,DRAW_BUFFER1:34854,DRAW_BUFFER2:34855,DRAW_BUFFER3:34856,DRAW_BUFFER4:34857,DRAW_BUFFER5:34858,DRAW_BUFFER6:34859,DRAW_BUFFER7:34860,DRAW_BUFFER8:34861,DRAW_BUFFER9:34862,DRAW_BUFFER10:34863,DRAW_BUFFER11:34864,DRAW_BUFFER12:34865,DRAW_BUFFER13:34866,DRAW_BUFFER14:34867,DRAW_BUFFER15:34868,MAX_FRAGMENT_UNIFORM_COMPONENTS:35657,MAX_VERTEX_UNIFORM_COMPONENTS:35658,SAMPLER_3D:35679,SAMPLER_2D_SHADOW:35682,FRAGMENT_SHADER_DERIVATIVE_HINT:35723,PIXEL_PACK_BUFFER:35051,PIXEL_UNPACK_BUFFER:35052,PIXEL_PACK_BUFFER_BINDING:35053,PIXEL_UNPACK_BUFFER_BINDING:35055,FLOAT_MAT2x3:35685,FLOAT_MAT2x4:35686,FLOAT_MAT3x2:35687,FLOAT_MAT3x4:35688,FLOAT_MAT4x2:35689,FLOAT_MAT4x3:35690,SRGB:35904,SRGB8:35905,SRGB8_ALPHA8:35907,COMPARE_REF_TO_TEXTURE:34894,RGBA32F:34836,RGB32F:34837,RGBA16F:34842,RGB16F:34843,VERTEX_ATTRIB_ARRAY_INTEGER:35069,MAX_ARRAY_TEXTURE_LAYERS:35071,MIN_PROGRAM_TEXEL_OFFSET:35076,MAX_PROGRAM_TEXEL_OFFSET:35077,MAX_VARYING_COMPONENTS:35659,TEXTURE_2D_ARRAY:35866,TEXTURE_BINDING_2D_ARRAY:35869,R11F_G11F_B10F:35898,UNSIGNED_INT_10F_11F_11F_REV:35899,RGB9_E5:35901,UNSIGNED_INT_5_9_9_9_REV:35902,TRANSFORM_FEEDBACK_BUFFER_MODE:35967,MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:35968,TRANSFORM_FEEDBACK_VARYINGS:35971,TRANSFORM_FEEDBACK_BUFFER_START:35972,TRANSFORM_FEEDBACK_BUFFER_SIZE:35973,TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:35976,RASTERIZER_DISCARD:35977,MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:35978,MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:35979,INTERLEAVED_ATTRIBS:35980,SEPARATE_ATTRIBS:35981,TRANSFORM_FEEDBACK_BUFFER:35982,TRANSFORM_FEEDBACK_BUFFER_BINDING:35983,RGBA32UI:36208,RGB32UI:36209,RGBA16UI:36214,RGB16UI:36215,RGBA8UI:36220,RGB8UI:36221,RGBA32I:36226,RGB32I:36227,RGBA16I:36232,RGB16I:36233,RGBA8I:36238,RGB8I:36239,RED_INTEGER:36244,RGB_INTEGER:36248,RGBA_INTEGER:36249,SAMPLER_2D_ARRAY:36289,SAMPLER_2D_ARRAY_SHADOW:36292,SAMPLER_CUBE_SHADOW:36293,UNSIGNED_INT_VEC2:36294,UNSIGNED_INT_VEC3:36295,UNSIGNED_INT_VEC4:36296,INT_SAMPLER_2D:36298,INT_SAMPLER_3D:36299,INT_SAMPLER_CUBE:36300,INT_SAMPLER_2D_ARRAY:36303,UNSIGNED_INT_SAMPLER_2D:36306,UNSIGNED_INT_SAMPLER_3D:36307,UNSIGNED_INT_SAMPLER_CUBE:36308,UNSIGNED_INT_SAMPLER_2D_ARRAY:36311,DEPTH_COMPONENT32F:36012,DEPTH32F_STENCIL8:36013,FLOAT_32_UNSIGNED_INT_24_8_REV:36269,FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:33296,FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:33297,FRAMEBUFFER_ATTACHMENT_RED_SIZE:33298,FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:33299,FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:33300,FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:33301,FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:33302,FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:33303,FRAMEBUFFER_DEFAULT:33304,UNSIGNED_INT_24_8:34042,DEPTH24_STENCIL8:35056,UNSIGNED_NORMALIZED:35863,DRAW_FRAMEBUFFER_BINDING:36006,READ_FRAMEBUFFER:36008,DRAW_FRAMEBUFFER:36009,READ_FRAMEBUFFER_BINDING:36010,RENDERBUFFER_SAMPLES:36011,FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:36052,MAX_COLOR_ATTACHMENTS:36063,COLOR_ATTACHMENT1:36065,COLOR_ATTACHMENT2:36066,COLOR_ATTACHMENT3:36067,COLOR_ATTACHMENT4:36068,COLOR_ATTACHMENT5:36069,COLOR_ATTACHMENT6:36070,COLOR_ATTACHMENT7:36071,COLOR_ATTACHMENT8:36072,COLOR_ATTACHMENT9:36073,COLOR_ATTACHMENT10:36074,COLOR_ATTACHMENT11:36075,COLOR_ATTACHMENT12:36076,COLOR_ATTACHMENT13:36077,COLOR_ATTACHMENT14:36078,COLOR_ATTACHMENT15:36079,FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:36182,MAX_SAMPLES:36183,HALF_FLOAT:5131,RG:33319,RG_INTEGER:33320,R8:33321,RG8:33323,R16F:33325,R32F:33326,RG16F:33327,RG32F:33328,R8I:33329,R8UI:33330,R16I:33331,R16UI:33332,R32I:33333,R32UI:33334,RG8I:33335,RG8UI:33336,RG16I:33337,RG16UI:33338,RG32I:33339,RG32UI:33340,VERTEX_ARRAY_BINDING:34229,R8_SNORM:36756,RG8_SNORM:36757,RGB8_SNORM:36758,RGBA8_SNORM:36759,SIGNED_NORMALIZED:36764,COPY_READ_BUFFER:36662,COPY_WRITE_BUFFER:36663,COPY_READ_BUFFER_BINDING:36662,COPY_WRITE_BUFFER_BINDING:36663,UNIFORM_BUFFER:35345,UNIFORM_BUFFER_BINDING:35368,UNIFORM_BUFFER_START:35369,UNIFORM_BUFFER_SIZE:35370,MAX_VERTEX_UNIFORM_BLOCKS:35371,MAX_FRAGMENT_UNIFORM_BLOCKS:35373,MAX_COMBINED_UNIFORM_BLOCKS:35374,MAX_UNIFORM_BUFFER_BINDINGS:35375,MAX_UNIFORM_BLOCK_SIZE:35376,MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:35377,MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:35379,UNIFORM_BUFFER_OFFSET_ALIGNMENT:35380,ACTIVE_UNIFORM_BLOCKS:35382,UNIFORM_TYPE:35383,UNIFORM_SIZE:35384,UNIFORM_BLOCK_INDEX:35386,UNIFORM_OFFSET:35387,UNIFORM_ARRAY_STRIDE:35388,UNIFORM_MATRIX_STRIDE:35389,UNIFORM_IS_ROW_MAJOR:35390,UNIFORM_BLOCK_BINDING:35391,UNIFORM_BLOCK_DATA_SIZE:35392,UNIFORM_BLOCK_ACTIVE_UNIFORMS:35394,UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:35395,UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:35396,UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:35398,INVALID_INDEX:4294967295,MAX_VERTEX_OUTPUT_COMPONENTS:37154,MAX_FRAGMENT_INPUT_COMPONENTS:37157,MAX_SERVER_WAIT_TIMEOUT:37137,OBJECT_TYPE:37138,SYNC_CONDITION:37139,SYNC_STATUS:37140,SYNC_FLAGS:37141,SYNC_FENCE:37142,SYNC_GPU_COMMANDS_COMPLETE:37143,UNSIGNALED:37144,SIGNALED:37145,ALREADY_SIGNALED:37146,TIMEOUT_EXPIRED:37147,CONDITION_SATISFIED:37148,WAIT_FAILED:37149,SYNC_FLUSH_COMMANDS_BIT:1,VERTEX_ATTRIB_ARRAY_DIVISOR:35070,ANY_SAMPLES_PASSED:35887,ANY_SAMPLES_PASSED_CONSERVATIVE:36202,SAMPLER_BINDING:35097,RGB10_A2UI:36975,INT_2_10_10_10_REV:36255,TRANSFORM_FEEDBACK:36386,TRANSFORM_FEEDBACK_PAUSED:36387,TRANSFORM_FEEDBACK_ACTIVE:36388,TRANSFORM_FEEDBACK_BINDING:36389,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_SRGB8_ETC2:37493,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37494,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37495,COMPRESSED_RGBA8_ETC2_EAC:37496,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37497,TEXTURE_IMMUTABLE_FORMAT:37167,MAX_ELEMENT_INDEX:36203,TEXTURE_IMMUTABLE_LEVELS:33503,MAX_TEXTURE_MAX_ANISOTROPY_EXT:34047},ee=Object.freeze(QPe);var Mn={BYTE:ee.BYTE,UNSIGNED_BYTE:ee.UNSIGNED_BYTE,SHORT:ee.SHORT,UNSIGNED_SHORT:ee.UNSIGNED_SHORT,INT:ee.INT,UNSIGNED_INT:ee.UNSIGNED_INT,FLOAT:ee.FLOAT,DOUBLE:ee.DOUBLE};Mn.getSizeInBytes=function(e){switch(e){case Mn.BYTE:return Int8Array.BYTES_PER_ELEMENT;case Mn.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case Mn.SHORT:return Int16Array.BYTES_PER_ELEMENT;case Mn.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case Mn.INT:return Int32Array.BYTES_PER_ELEMENT;case Mn.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT;case Mn.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case Mn.DOUBLE:return Float64Array.BYTES_PER_ELEMENT}};Mn.fromTypedArray=function(e){if(e instanceof Int8Array)return Mn.BYTE;if(e instanceof Uint8Array)return Mn.UNSIGNED_BYTE;if(e instanceof Int16Array)return Mn.SHORT;if(e instanceof Uint16Array)return Mn.UNSIGNED_SHORT;if(e instanceof Int32Array)return Mn.INT;if(e instanceof Uint32Array)return Mn.UNSIGNED_INT;if(e instanceof Float32Array)return Mn.FLOAT;if(e instanceof Float64Array)return Mn.DOUBLE};Mn.validate=function(e){return l(e)&&(e===Mn.BYTE||e===Mn.UNSIGNED_BYTE||e===Mn.SHORT||e===Mn.UNSIGNED_SHORT||e===Mn.INT||e===Mn.UNSIGNED_INT||e===Mn.FLOAT||e===Mn.DOUBLE)};Mn.createTypedArray=function(e,t){switch(e){case Mn.BYTE:return new Int8Array(t);case Mn.UNSIGNED_BYTE:return new Uint8Array(t);case Mn.SHORT:return new Int16Array(t);case Mn.UNSIGNED_SHORT:return new Uint16Array(t);case Mn.INT:return new Int32Array(t);case Mn.UNSIGNED_INT:return new Uint32Array(t);case Mn.FLOAT:return new Float32Array(t);case Mn.DOUBLE:return new Float64Array(t)}};Mn.createArrayBufferView=function(e,t,n,i){switch(n=n??0,i=i??(t.byteLength-n)/Mn.getSizeInBytes(e),e){case Mn.BYTE:return new Int8Array(t,n,i);case Mn.UNSIGNED_BYTE:return new Uint8Array(t,n,i);case Mn.SHORT:return new Int16Array(t,n,i);case Mn.UNSIGNED_SHORT:return new Uint16Array(t,n,i);case Mn.INT:return new Int32Array(t,n,i);case Mn.UNSIGNED_INT:return new Uint32Array(t,n,i);case Mn.FLOAT:return new Float32Array(t,n,i);case Mn.DOUBLE:return new Float64Array(t,n,i)}};Mn.fromName=function(e){switch(e){case"BYTE":return Mn.BYTE;case"UNSIGNED_BYTE":return Mn.UNSIGNED_BYTE;case"SHORT":return Mn.SHORT;case"UNSIGNED_SHORT":return Mn.UNSIGNED_SHORT;case"INT":return Mn.INT;case"UNSIGNED_INT":return Mn.UNSIGNED_INT;case"FLOAT":return Mn.FLOAT;case"DOUBLE":return Mn.DOUBLE}};var q=Object.freeze(Mn);var kPe={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3},jf=Object.freeze(kPe);function sn(e,t,n,i){this[0]=e??0,this[1]=n??0,this[2]=t??0,this[3]=i??0}sn.packedLength=4;sn.pack=function(e,t,n){return n=n??0,t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t};sn.unpack=function(e,t,n){return t=t??0,l(n)||(n=new sn),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n};sn.packArray=function(e,t){let n=e.length,i=n*4;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)sn.pack(e[o],t,o*4);return t};sn.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/4:t=new Array(n/4);for(let i=0;i<n;i+=4){let o=i/4;t[o]=sn.unpack(e,i,t[o])}return t};sn.clone=function(e,t){if(l(e))return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t):new sn(e[0],e[2],e[1],e[3])};sn.fromArray=sn.unpack;sn.fromColumnMajorArray=function(e,t){return sn.clone(e,t)};sn.fromRowMajorArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[2],t[2]=e[1],t[3]=e[3],t):new sn(e[0],e[1],e[2],e[3])};sn.fromScale=function(e,t){return l(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=e.y,t):new sn(e.x,0,0,e.y)};sn.fromUniformScale=function(e,t){return l(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=e,t):new sn(e,0,0,e)};sn.fromRotation=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=n,t[1]=i,t[2]=-i,t[3]=n,t):new sn(n,-i,i,n)};sn.toArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t):[e[0],e[1],e[2],e[3]]};sn.getElementIndex=function(e,t){return e*2+t};sn.getColumn=function(e,t,n){let i=t*2,o=e[i],r=e[i+1];return n.x=o,n.y=r,n};sn.setColumn=function(e,t,n,i){i=sn.clone(e,i);let o=t*2;return i[o]=n.x,i[o+1]=n.y,i};sn.getRow=function(e,t,n){let i=e[t],o=e[t+2];return n.x=i,n.y=o,n};sn.setRow=function(e,t,n,i){return i=sn.clone(e,i),i[t]=n.x,i[t+2]=n.y,i};var UPe=new U;sn.setScale=function(e,t,n){let i=sn.getScale(e,UPe),o=t.x/i.x,r=t.y/i.y;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*r,n[3]=e[3]*r,n};var GPe=new U;sn.setUniformScale=function(e,t,n){let i=sn.getScale(e,GPe),o=t/i.x,r=t/i.y;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*r,n[3]=e[3]*r,n};var Fne=new U;sn.getScale=function(e,t){return t.x=U.magnitude(U.fromElements(e[0],e[1],Fne)),t.y=U.magnitude(U.fromElements(e[2],e[3],Fne)),t};var Qne=new U;sn.getMaximumScale=function(e){return sn.getScale(e,Qne),U.maximumComponent(Qne)};var zPe=new U;sn.setRotation=function(e,t,n){let i=sn.getScale(e,zPe);return n[0]=t[0]*i.x,n[1]=t[1]*i.x,n[2]=t[2]*i.y,n[3]=t[3]*i.y,n};var VPe=new U;sn.getRotation=function(e,t){let n=sn.getScale(e,VPe);return t[0]=e[0]/n.x,t[1]=e[1]/n.x,t[2]=e[2]/n.y,t[3]=e[3]/n.y,t};sn.multiply=function(e,t,n){let i=e[0]*t[0]+e[2]*t[1],o=e[0]*t[2]+e[2]*t[3],r=e[1]*t[0]+e[3]*t[1],s=e[1]*t[2]+e[3]*t[3];return n[0]=i,n[1]=r,n[2]=o,n[3]=s,n};sn.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n};sn.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n};sn.multiplyByVector=function(e,t,n){let i=e[0]*t.x+e[2]*t.y,o=e[1]*t.x+e[3]*t.y;return n.x=i,n.y=o,n};sn.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n};sn.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.y,n[3]=e[3]*t.y,n};sn.multiplyByUniformScale=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n};sn.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t};sn.transpose=function(e,t){let n=e[0],i=e[2],o=e[1],r=e[3];return t[0]=n,t[1]=i,t[2]=o,t[3]=r,t};sn.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t};sn.equals=function(e,t){return e===t||l(e)&&l(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]};sn.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]};sn.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n};sn.IDENTITY=Object.freeze(new sn(1,0,0,1));sn.ZERO=Object.freeze(new sn(0,0,0,0));sn.COLUMN0ROW0=0;sn.COLUMN0ROW1=1;sn.COLUMN1ROW0=2;sn.COLUMN1ROW1=3;Object.defineProperties(sn.prototype,{length:{get:function(){return sn.packedLength}}});sn.prototype.clone=function(e){return sn.clone(this,e)};sn.prototype.equals=function(e){return sn.equals(this,e)};sn.prototype.equalsEpsilon=function(e,t){return sn.equalsEpsilon(this,e,t)};sn.prototype.toString=function(){return`(${this[0]}, ${this[2]}) +(${this[1]}, ${this[3]})`};var Gi=sn;var ac={POINTS:ee.POINTS,LINES:ee.LINES,LINE_LOOP:ee.LINE_LOOP,LINE_STRIP:ee.LINE_STRIP,TRIANGLES:ee.TRIANGLES,TRIANGLE_STRIP:ee.TRIANGLE_STRIP,TRIANGLE_FAN:ee.TRIANGLE_FAN};ac.isLines=function(e){return e===ac.LINES||e===ac.LINE_LOOP||e===ac.LINE_STRIP};ac.isTriangles=function(e){return e===ac.TRIANGLES||e===ac.TRIANGLE_STRIP||e===ac.TRIANGLE_FAN};ac.validate=function(e){return e===ac.POINTS||e===ac.LINES||e===ac.LINE_LOOP||e===ac.LINE_STRIP||e===ac.TRIANGLES||e===ac.TRIANGLE_STRIP||e===ac.TRIANGLE_FAN};var Me=Object.freeze(ac);function u6(e){e=e??V.EMPTY_OBJECT,this.attributes=e.attributes,this.indices=e.indices,this.primitiveType=e.primitiveType??Me.TRIANGLES,this.boundingSphere=e.boundingSphere,this.geometryType=e.geometryType??jf.NONE,this.boundingSphereCV=e.boundingSphereCV,this.offsetAttribute=e.offsetAttribute}u6.computeNumberOfVertices=function(e){let t=-1;for(let n in e.attributes)if(e.attributes.hasOwnProperty(n)&&l(e.attributes[n])&&l(e.attributes[n].values)){let i=e.attributes[n];t=i.values.length/i.componentsPerAttribute}return t};var HPe=new Ae,WPe=new d,kne=new N,jPe=[new Ae,new Ae,new Ae],YPe=[new U,new U,new U],qPe=[new U,new U,new U],KPe=new d,XPe=new Le,JPe=new N,ZPe=new Gi;u6._textureCoordinateRotationPoints=function(e,t,n,i){let o,r=ae.center(i,HPe),s=Ae.toCartesian(r,n,WPe),a=kt.eastNorthUpToFixedFrame(s,n,kne),c=N.inverse(a,kne),u=YPe,f=jPe;f[0].longitude=i.west,f[0].latitude=i.south,f[1].longitude=i.west,f[1].latitude=i.north,f[2].longitude=i.east,f[2].latitude=i.south;let h=KPe;for(o=0;o<3;o++)Ae.toCartesian(f[o],n,h),h=N.multiplyByPointAsVector(c,h,h),u[o].x=h.x,u[o].y=h.y;let A=Le.fromAxisAngle(d.UNIT_Z,-t,XPe),g=J.fromQuaternion(A,JPe),m=e.length,_=Number.POSITIVE_INFINITY,y=Number.POSITIVE_INFINITY,C=Number.NEGATIVE_INFINITY,E=Number.NEGATIVE_INFINITY;for(o=0;o<m;o++)h=N.multiplyByPointAsVector(c,e[o],h),h=J.multiplyByVector(g,h,h),_=Math.min(_,h.x),y=Math.min(y,h.y),C=Math.max(C,h.x),E=Math.max(E,h.y);let I=Gi.fromRotation(t,ZPe),b=qPe;b[0].x=_,b[0].y=y,b[1].x=_,b[1].y=E,b[2].x=C,b[2].y=y;let S=u[0],B=u[2].x-S.x,v=u[1].y-S.y;for(o=0;o<3;o++){let x=b[o];Gi.multiplyByVector(I,x,x),x.x=(x.x-S.x)/B,x.y=(x.y-S.y)/v}let P=b[0],M=b[1],L=b[2],p=new Array(6);return U.pack(P,p),U.pack(M,p,2),U.pack(L,p,4),p};var ht=u6;function $Pe(e){e=e??V.EMPTY_OBJECT,this.componentDatatype=e.componentDatatype,this.componentsPerAttribute=e.componentsPerAttribute,this.normalize=e.normalize??!1,this.values=e.values}var De=$Pe;function eRe(e){e=e??V.EMPTY_OBJECT,this.position=e.position,this.normal=e.normal,this.st=e.st,this.bitangent=e.bitangent,this.tangent=e.tangent,this.color=e.color}var yn=eRe;var tRe={NONE:0,TOP:1,ALL:2},hn=Object.freeze(tRe);function Ns(e){e=e??V.EMPTY_OBJECT,this.position=e.position??!1,this.normal=e.normal??!1,this.st=e.st??!1,this.bitangent=e.bitangent??!1,this.tangent=e.tangent??!1,this.color=e.color??!1}Ns.POSITION_ONLY=Object.freeze(new Ns({position:!0}));Ns.POSITION_AND_NORMAL=Object.freeze(new Ns({position:!0,normal:!0}));Ns.POSITION_NORMAL_AND_ST=Object.freeze(new Ns({position:!0,normal:!0,st:!0}));Ns.POSITION_AND_ST=Object.freeze(new Ns({position:!0,st:!0}));Ns.POSITION_AND_COLOR=Object.freeze(new Ns({position:!0,color:!0}));Ns.ALL=Object.freeze(new Ns({position:!0,normal:!0,st:!0,tangent:!0,bitangent:!0}));Ns.DEFAULT=Ns.POSITION_NORMAL_AND_ST;Ns.packedLength=6;Ns.pack=function(e,t,n){return n=n??0,t[n++]=e.position?1:0,t[n++]=e.normal?1:0,t[n++]=e.st?1:0,t[n++]=e.tangent?1:0,t[n++]=e.bitangent?1:0,t[n]=e.color?1:0,t};Ns.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Ns),n.position=e[t++]===1,n.normal=e[t++]===1,n.st=e[t++]===1,n.tangent=e[t++]===1,n.bitangent=e[t++]===1,n.color=e[t]===1,n};Ns.clone=function(e,t){if(l(e))return l(t)||(t=new Ns),t.position=e.position,t.normal=e.normal,t.st=e.st,t.tangent=e.tangent,t.bitangent=e.bitangent,t.color=e.color,t};var Pe=Ns;var nRe=new d;function ku(e){e=e??V.EMPTY_OBJECT;let t=e.minimum,n=e.maximum,i=e.vertexFormat??Pe.DEFAULT;this._minimum=d.clone(t),this._maximum=d.clone(n),this._vertexFormat=i,this._offsetAttribute=e.offsetAttribute,this._workerName="createBoxGeometry"}ku.fromDimensions=function(e){e=e??V.EMPTY_OBJECT;let t=e.dimensions,n=d.multiplyByScalar(t,.5,new d);return new ku({minimum:d.negate(n,new d),maximum:n,vertexFormat:e.vertexFormat,offsetAttribute:e.offsetAttribute})};ku.fromAxisAlignedBoundingBox=function(e){return new ku({minimum:e.minimum,maximum:e.maximum})};ku.packedLength=2*d.packedLength+Pe.packedLength+1;ku.pack=function(e,t,n){return n=n??0,d.pack(e._minimum,t,n),d.pack(e._maximum,t,n+d.packedLength),Pe.pack(e._vertexFormat,t,n+2*d.packedLength),t[n+2*d.packedLength+Pe.packedLength]=e._offsetAttribute??-1,t};var Gne=new d,zne=new d,Vne=new Pe,Une={minimum:Gne,maximum:zne,vertexFormat:Vne,offsetAttribute:void 0};ku.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,Gne),o=d.unpack(e,t+d.packedLength,zne),r=Pe.unpack(e,t+2*d.packedLength,Vne),s=e[t+2*d.packedLength+Pe.packedLength];return l(n)?(n._minimum=d.clone(i,n._minimum),n._maximum=d.clone(o,n._maximum),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._offsetAttribute=s===-1?void 0:s,n):(Une.offsetAttribute=s===-1?void 0:s,new ku(Une))};ku.createGeometry=function(e){let t=e._minimum,n=e._maximum,i=e._vertexFormat;if(d.equals(t,n))return;let o=new yn,r,s;if(i.position&&(i.st||i.normal||i.tangent||i.bitangent)){if(i.position&&(s=new Float64Array(72),s[0]=t.x,s[1]=t.y,s[2]=n.z,s[3]=n.x,s[4]=t.y,s[5]=n.z,s[6]=n.x,s[7]=n.y,s[8]=n.z,s[9]=t.x,s[10]=n.y,s[11]=n.z,s[12]=t.x,s[13]=t.y,s[14]=t.z,s[15]=n.x,s[16]=t.y,s[17]=t.z,s[18]=n.x,s[19]=n.y,s[20]=t.z,s[21]=t.x,s[22]=n.y,s[23]=t.z,s[24]=n.x,s[25]=t.y,s[26]=t.z,s[27]=n.x,s[28]=n.y,s[29]=t.z,s[30]=n.x,s[31]=n.y,s[32]=n.z,s[33]=n.x,s[34]=t.y,s[35]=n.z,s[36]=t.x,s[37]=t.y,s[38]=t.z,s[39]=t.x,s[40]=n.y,s[41]=t.z,s[42]=t.x,s[43]=n.y,s[44]=n.z,s[45]=t.x,s[46]=t.y,s[47]=n.z,s[48]=t.x,s[49]=n.y,s[50]=t.z,s[51]=n.x,s[52]=n.y,s[53]=t.z,s[54]=n.x,s[55]=n.y,s[56]=n.z,s[57]=t.x,s[58]=n.y,s[59]=n.z,s[60]=t.x,s[61]=t.y,s[62]=t.z,s[63]=n.x,s[64]=t.y,s[65]=t.z,s[66]=n.x,s[67]=t.y,s[68]=n.z,s[69]=t.x,s[70]=t.y,s[71]=n.z,o.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s})),i.normal){let u=new Float32Array(72);u[0]=0,u[1]=0,u[2]=1,u[3]=0,u[4]=0,u[5]=1,u[6]=0,u[7]=0,u[8]=1,u[9]=0,u[10]=0,u[11]=1,u[12]=0,u[13]=0,u[14]=-1,u[15]=0,u[16]=0,u[17]=-1,u[18]=0,u[19]=0,u[20]=-1,u[21]=0,u[22]=0,u[23]=-1,u[24]=1,u[25]=0,u[26]=0,u[27]=1,u[28]=0,u[29]=0,u[30]=1,u[31]=0,u[32]=0,u[33]=1,u[34]=0,u[35]=0,u[36]=-1,u[37]=0,u[38]=0,u[39]=-1,u[40]=0,u[41]=0,u[42]=-1,u[43]=0,u[44]=0,u[45]=-1,u[46]=0,u[47]=0,u[48]=0,u[49]=1,u[50]=0,u[51]=0,u[52]=1,u[53]=0,u[54]=0,u[55]=1,u[56]=0,u[57]=0,u[58]=1,u[59]=0,u[60]=0,u[61]=-1,u[62]=0,u[63]=0,u[64]=-1,u[65]=0,u[66]=0,u[67]=-1,u[68]=0,u[69]=0,u[70]=-1,u[71]=0,o.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:u})}if(i.st){let u=new Float32Array(48);u[0]=0,u[1]=0,u[2]=1,u[3]=0,u[4]=1,u[5]=1,u[6]=0,u[7]=1,u[8]=1,u[9]=0,u[10]=0,u[11]=0,u[12]=0,u[13]=1,u[14]=1,u[15]=1,u[16]=0,u[17]=0,u[18]=1,u[19]=0,u[20]=1,u[21]=1,u[22]=0,u[23]=1,u[24]=1,u[25]=0,u[26]=0,u[27]=0,u[28]=0,u[29]=1,u[30]=1,u[31]=1,u[32]=1,u[33]=0,u[34]=0,u[35]=0,u[36]=0,u[37]=1,u[38]=1,u[39]=1,u[40]=0,u[41]=0,u[42]=1,u[43]=0,u[44]=1,u[45]=1,u[46]=0,u[47]=1,o.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:u})}if(i.tangent){let u=new Float32Array(72);u[0]=1,u[1]=0,u[2]=0,u[3]=1,u[4]=0,u[5]=0,u[6]=1,u[7]=0,u[8]=0,u[9]=1,u[10]=0,u[11]=0,u[12]=-1,u[13]=0,u[14]=0,u[15]=-1,u[16]=0,u[17]=0,u[18]=-1,u[19]=0,u[20]=0,u[21]=-1,u[22]=0,u[23]=0,u[24]=0,u[25]=1,u[26]=0,u[27]=0,u[28]=1,u[29]=0,u[30]=0,u[31]=1,u[32]=0,u[33]=0,u[34]=1,u[35]=0,u[36]=0,u[37]=-1,u[38]=0,u[39]=0,u[40]=-1,u[41]=0,u[42]=0,u[43]=-1,u[44]=0,u[45]=0,u[46]=-1,u[47]=0,u[48]=-1,u[49]=0,u[50]=0,u[51]=-1,u[52]=0,u[53]=0,u[54]=-1,u[55]=0,u[56]=0,u[57]=-1,u[58]=0,u[59]=0,u[60]=1,u[61]=0,u[62]=0,u[63]=1,u[64]=0,u[65]=0,u[66]=1,u[67]=0,u[68]=0,u[69]=1,u[70]=0,u[71]=0,o.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:u})}if(i.bitangent){let u=new Float32Array(72);u[0]=0,u[1]=1,u[2]=0,u[3]=0,u[4]=1,u[5]=0,u[6]=0,u[7]=1,u[8]=0,u[9]=0,u[10]=1,u[11]=0,u[12]=0,u[13]=1,u[14]=0,u[15]=0,u[16]=1,u[17]=0,u[18]=0,u[19]=1,u[20]=0,u[21]=0,u[22]=1,u[23]=0,u[24]=0,u[25]=0,u[26]=1,u[27]=0,u[28]=0,u[29]=1,u[30]=0,u[31]=0,u[32]=1,u[33]=0,u[34]=0,u[35]=1,u[36]=0,u[37]=0,u[38]=1,u[39]=0,u[40]=0,u[41]=1,u[42]=0,u[43]=0,u[44]=1,u[45]=0,u[46]=0,u[47]=1,u[48]=0,u[49]=0,u[50]=1,u[51]=0,u[52]=0,u[53]=1,u[54]=0,u[55]=0,u[56]=1,u[57]=0,u[58]=0,u[59]=1,u[60]=0,u[61]=0,u[62]=1,u[63]=0,u[64]=0,u[65]=1,u[66]=0,u[67]=0,u[68]=1,u[69]=0,u[70]=0,u[71]=1,o.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:u})}r=new Uint16Array(36),r[0]=0,r[1]=1,r[2]=2,r[3]=0,r[4]=2,r[5]=3,r[6]=6,r[7]=5,r[8]=4,r[9]=7,r[10]=6,r[11]=4,r[12]=8,r[13]=9,r[14]=10,r[15]=8,r[16]=10,r[17]=11,r[18]=14,r[19]=13,r[20]=12,r[21]=15,r[22]=14,r[23]=12,r[24]=18,r[25]=17,r[26]=16,r[27]=19,r[28]=18,r[29]=16,r[30]=20,r[31]=21,r[32]=22,r[33]=20,r[34]=22,r[35]=23}else s=new Float64Array(24),s[0]=t.x,s[1]=t.y,s[2]=t.z,s[3]=n.x,s[4]=t.y,s[5]=t.z,s[6]=n.x,s[7]=n.y,s[8]=t.z,s[9]=t.x,s[10]=n.y,s[11]=t.z,s[12]=t.x,s[13]=t.y,s[14]=n.z,s[15]=n.x,s[16]=t.y,s[17]=n.z,s[18]=n.x,s[19]=n.y,s[20]=n.z,s[21]=t.x,s[22]=n.y,s[23]=n.z,o.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s}),r=new Uint16Array(36),r[0]=4,r[1]=5,r[2]=6,r[3]=4,r[4]=6,r[5]=7,r[6]=1,r[7]=0,r[8]=3,r[9]=1,r[10]=3,r[11]=2,r[12]=1,r[13]=6,r[14]=5,r[15]=1,r[16]=2,r[17]=6,r[18]=2,r[19]=3,r[20]=7,r[21]=2,r[22]=7,r[23]=6,r[24]=3,r[25]=0,r[26]=4,r[27]=3,r[28]=4,r[29]=7,r[30]=0,r[31]=1,r[32]=5,r[33]=0,r[34]=5,r[35]=4;let a=d.subtract(n,t,nRe),c=d.magnitude(a)*.5;if(l(e._offsetAttribute)){let u=s.length,f=e._offsetAttribute===hn.NONE?0:1,h=new Uint8Array(u/3).fill(f);o.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}return new ht({attributes:o,indices:r,primitiveType:Me.TRIANGLES,boundingSphere:new le(d.ZERO,c),offsetAttribute:e._offsetAttribute})};var f6;ku.getUnitBox=function(){return l(f6)||(f6=ku.createGeometry(ku.fromDimensions({dimensions:new d(1,1,1),vertexFormat:Pe.POSITION_ONLY}))),f6};var cc=ku;var iRe=new d;function Lm(e){e=e??V.EMPTY_OBJECT;let t=e.minimum,n=e.maximum;this._min=d.clone(t),this._max=d.clone(n),this._offsetAttribute=e.offsetAttribute,this._workerName="createBoxOutlineGeometry"}Lm.fromDimensions=function(e){e=e??V.EMPTY_OBJECT;let t=e.dimensions,n=d.multiplyByScalar(t,.5,new d);return new Lm({minimum:d.negate(n,new d),maximum:n,offsetAttribute:e.offsetAttribute})};Lm.fromAxisAlignedBoundingBox=function(e){return new Lm({minimum:e.minimum,maximum:e.maximum})};Lm.packedLength=2*d.packedLength+1;Lm.pack=function(e,t,n){return n=n??0,d.pack(e._min,t,n),d.pack(e._max,t,n+d.packedLength),t[n+d.packedLength*2]=e._offsetAttribute??-1,t};var Wne=new d,jne=new d,Hne={minimum:Wne,maximum:jne,offsetAttribute:void 0};Lm.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,Wne),o=d.unpack(e,t+d.packedLength,jne),r=e[t+d.packedLength*2];return l(n)?(n._min=d.clone(i,n._min),n._max=d.clone(o,n._max),n._offsetAttribute=r===-1?void 0:r,n):(Hne.offsetAttribute=r===-1?void 0:r,new Lm(Hne))};Lm.createGeometry=function(e){let t=e._min,n=e._max;if(d.equals(t,n))return;let i=new yn,o=new Uint16Array(24),r=new Float64Array(24);r[0]=t.x,r[1]=t.y,r[2]=t.z,r[3]=n.x,r[4]=t.y,r[5]=t.z,r[6]=n.x,r[7]=n.y,r[8]=t.z,r[9]=t.x,r[10]=n.y,r[11]=t.z,r[12]=t.x,r[13]=t.y,r[14]=n.z,r[15]=n.x,r[16]=t.y,r[17]=n.z,r[18]=n.x,r[19]=n.y,r[20]=n.z,r[21]=t.x,r[22]=n.y,r[23]=n.z,i.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:r}),o[0]=4,o[1]=5,o[2]=5,o[3]=6,o[4]=6,o[5]=7,o[6]=7,o[7]=4,o[8]=0,o[9]=1,o[10]=1,o[11]=2,o[12]=2,o[13]=3,o[14]=3,o[15]=0,o[16]=0,o[17]=4,o[18]=1,o[19]=5,o[20]=2,o[21]=6,o[22]=3,o[23]=7;let s=d.subtract(n,t,iRe),a=d.magnitude(s)*.5;if(l(e._offsetAttribute)){let c=r.length,u=e._offsetAttribute===hn.NONE?0:1,f=new Uint8Array(c/3).fill(u);i.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:f})}return new ht({attributes:i,indices:o,primitiveType:Me.LINES,boundingSphere:new le(d.ZERO,a),offsetAttribute:e._offsetAttribute})};var ah=Lm;function Xx(e,t,n,i){e=e??1,t=t??1,n=n??1,i=i??1,this.value=new Uint8Array([G.floatToByte(e),G.floatToByte(t),G.floatToByte(n),G.floatToByte(i)])}Object.defineProperties(Xx.prototype,{componentDatatype:{get:function(){return q.UNSIGNED_BYTE}},componentsPerAttribute:{get:function(){return 4}},normalize:{get:function(){return!0}}});Xx.fromColor=function(e){return new Xx(e.red,e.green,e.blue,e.alpha)};Xx.toValue=function(e,t){return l(t)?e.toBytes(t):new Uint8Array(e.toBytes())};Xx.equals=function(e,t){return e===t||l(e)&&l(t)&&e.value[0]===t.value[0]&&e.value[1]===t.value[1]&&e.value[2]===t.value[2]&&e.value[3]===t.value[3]};var $t=Xx;function wB(e,t){e=e??0,t=t??Number.MAX_VALUE,this.value=new Float32Array([e,t])}Object.defineProperties(wB.prototype,{componentDatatype:{get:function(){return q.FLOAT}},componentsPerAttribute:{get:function(){return 2}},normalize:{get:function(){return!1}}});wB.fromDistanceDisplayCondition=function(e){return new wB(e.near,e.far)};wB.toValue=function(e,t){return l(t)?(t[0]=e.near,t[1]=e.far,t):new Float32Array([e.near,e.far])};var Kn=wB;function oRe(e){e=e??V.EMPTY_OBJECT,this.geometry=e.geometry,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this.id=e.id,this.pickPrimitive=e.pickPrimitive,this.attributes=e.attributes??{},this.westHemisphereGeometry=void 0,this.eastHemisphereGeometry=void 0}var Pt=oRe;function cr(e){e=e??V.EMPTY_OBJECT,this.start=l(e.start)?K.clone(e.start):new K,this.stop=l(e.stop)?K.clone(e.stop):new K,this.data=e.data,this.isStartIncluded=e.isStartIncluded??!0,this.isStopIncluded=e.isStopIncluded??!0}Object.defineProperties(cr.prototype,{isEmpty:{get:function(){let e=K.compare(this.stop,this.start);return e<0||e===0&&(!this.isStartIncluded||!this.isStopIncluded)}}});var Jx={start:void 0,stop:void 0,isStartIncluded:void 0,isStopIncluded:void 0,data:void 0};cr.fromIso8601=function(e,t){let n=e.iso8601.split("/");if(n.length!==2)throw new me("options.iso8601 is an invalid ISO 8601 interval.");let i=K.fromIso8601(n[0]),o=K.fromIso8601(n[1]),r=e.isStartIncluded??!0,s=e.isStopIncluded??!0,a=e.data;return l(t)?(t.start=i,t.stop=o,t.isStartIncluded=r,t.isStopIncluded=s,t.data=a,t):(Jx.start=i,Jx.stop=o,Jx.isStartIncluded=r,Jx.isStopIncluded=s,Jx.data=a,new cr(Jx))};cr.toIso8601=function(e,t){return`${K.toIso8601(e.start,t)}/${K.toIso8601(e.stop,t)}`};cr.clone=function(e,t){if(l(e))return l(t)?(t.start=e.start,t.stop=e.stop,t.isStartIncluded=e.isStartIncluded,t.isStopIncluded=e.isStopIncluded,t.data=e.data,t):new cr(e)};cr.equals=function(e,t,n){return e===t||l(e)&&l(t)&&(e.isEmpty&&t.isEmpty||e.isStartIncluded===t.isStartIncluded&&e.isStopIncluded===t.isStopIncluded&&K.equals(e.start,t.start)&&K.equals(e.stop,t.stop)&&(e.data===t.data||l(n)&&n(e.data,t.data)))};cr.equalsEpsilon=function(e,t,n,i){return n=n??0,e===t||l(e)&&l(t)&&(e.isEmpty&&t.isEmpty||e.isStartIncluded===t.isStartIncluded&&e.isStopIncluded===t.isStopIncluded&&K.equalsEpsilon(e.start,t.start,n)&&K.equalsEpsilon(e.stop,t.stop,n)&&(e.data===t.data||l(i)&&i(e.data,t.data)))};cr.intersect=function(e,t,n,i){if(!l(t))return cr.clone(cr.EMPTY,n);let o=e.start,r=e.stop,s=t.start,a=t.stop,c=K.greaterThanOrEquals(s,o)&&K.greaterThanOrEquals(r,s),u=!c&&K.lessThanOrEquals(s,o)&&K.lessThanOrEquals(o,a);if(!c&&!u)return cr.clone(cr.EMPTY,n);let f=e.isStartIncluded,h=e.isStopIncluded,A=t.isStartIncluded,g=t.isStopIncluded,m=K.lessThan(r,a);return l(n)||(n=new cr),n.start=c?s:o,n.isStartIncluded=f&&A||!K.equals(s,o)&&(c&&A||u&&f),n.stop=m?r:a,n.isStopIncluded=m?h:h&&g||!K.equals(a,r)&&g,n.data=l(i)?i(e.data,t.data):e.data,n};cr.contains=function(e,t){if(e.isEmpty)return!1;let n=K.compare(e.start,t);if(n===0)return e.isStartIncluded;let i=K.compare(t,e.stop);return i===0?e.isStopIncluded:n<0&&i<0};cr.prototype.clone=function(e){return cr.clone(this,e)};cr.prototype.equals=function(e,t){return cr.equals(this,e,t)};cr.prototype.equalsEpsilon=function(e,t,n){return cr.equalsEpsilon(this,e,t,n)};cr.prototype.toString=function(){return cr.toIso8601(this)};cr.EMPTY=Object.freeze(new cr({start:new K,stop:new K,isStartIncluded:!1,isStopIncluded:!1}));var Pn=cr;var Yne=Object.freeze(K.fromIso8601("0000-01-01T00:00:00Z")),qne=Object.freeze(K.fromIso8601("9999-12-31T24:00:00Z")),rRe=Object.freeze(new Pn({start:Yne,stop:qne})),sRe={MINIMUM_VALUE:Yne,MAXIMUM_VALUE:qne,MAXIMUM_INTERVAL:rRe},je=sRe;function BB(e,t,n){e=e??0,t=t??0,n=n??0,this.value=new Float32Array([e,t,n])}Object.defineProperties(BB.prototype,{componentDatatype:{get:function(){return q.FLOAT}},componentsPerAttribute:{get:function(){return 3}},normalize:{get:function(){return!1}}});BB.fromCartesian3=function(e){return new BB(e.x,e.y,e.z)};BB.toValue=function(e,t){return l(t)||(t=new Float32Array([e.x,e.y,e.z])),t[0]=e.x,t[1]=e.y,t[2]=e.z,t};var uo=BB;function xG(e){e=e??!0,this.value=xG.toValue(e)}Object.defineProperties(xG.prototype,{componentDatatype:{get:function(){return q.UNSIGNED_BYTE}},componentsPerAttribute:{get:function(){return 1}},normalize:{get:function(){return!1}}});xG.toValue=function(e,t){return l(t)?(t[0]=e,t):new Uint8Array([e])};var wn=xG;var DB=`in vec3 v_positionEC; +in vec3 v_normalEC; +in vec3 v_tangentEC; +in vec3 v_bitangentEC; +in vec2 v_st; + +void main() +{ + vec3 positionToEyeEC = -v_positionEC; + mat3 tangentToEyeMatrix = czm_tangentToEyeSpaceMatrix(v_normalEC, v_tangentEC, v_bitangentEC); + + vec3 normalEC = normalize(v_normalEC); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.tangentToEyeMatrix = tangentToEyeMatrix; + materialInput.positionToEyeEC = positionToEyeEC; + materialInput.st = v_st; + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} +`;var vB=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 normal; +in vec3 tangent; +in vec3 bitangent; +in vec2 st; +in float batchId; + +out vec3 v_positionEC; +out vec3 v_normalEC; +out vec3 v_tangentEC; +out vec3 v_bitangentEC; +out vec2 v_st; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_normalEC = czm_normal * normal; // normal in eye coordinates + v_tangentEC = czm_normal * tangent; // tangent in eye coordinates + v_bitangentEC = czm_normal * bitangent; // bitangent in eye coordinates + v_st = st; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;var PB=`in vec3 v_positionEC; +in vec3 v_normalEC; + +void main() +{ + vec3 positionToEyeEC = -v_positionEC; + + vec3 normalEC = normalize(v_normalEC); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.positionToEyeEC = positionToEyeEC; + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} +`;var RB=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 normal; +in float batchId; + +out vec3 v_positionEC; +out vec3 v_normalEC; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_normalEC = czm_normal * normal; // normal in eye coordinates + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;var MB=`in vec3 v_positionEC; +in vec3 v_normalEC; +in vec2 v_st; + +void main() +{ + vec3 positionToEyeEC = -v_positionEC; + + vec3 normalEC = normalize(v_normalEC); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.positionToEyeEC = positionToEyeEC; + materialInput.st = v_st; + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} +`;var NB=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 normal; +in vec2 st; +in float batchId; + +out vec3 v_positionEC; +out vec3 v_normalEC; +out vec2 v_st; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_normalEC = czm_normal * normal; // normal in eye coordinates + v_st = st; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;var aRe={ADD:ee.FUNC_ADD,SUBTRACT:ee.FUNC_SUBTRACT,REVERSE_SUBTRACT:ee.FUNC_REVERSE_SUBTRACT,MIN:ee.MIN,MAX:ee.MAX},lc=Object.freeze(aRe);var cRe={ZERO:ee.ZERO,ONE:ee.ONE,SOURCE_COLOR:ee.SRC_COLOR,ONE_MINUS_SOURCE_COLOR:ee.ONE_MINUS_SRC_COLOR,DESTINATION_COLOR:ee.DST_COLOR,ONE_MINUS_DESTINATION_COLOR:ee.ONE_MINUS_DST_COLOR,SOURCE_ALPHA:ee.SRC_ALPHA,ONE_MINUS_SOURCE_ALPHA:ee.ONE_MINUS_SRC_ALPHA,DESTINATION_ALPHA:ee.DST_ALPHA,ONE_MINUS_DESTINATION_ALPHA:ee.ONE_MINUS_DST_ALPHA,CONSTANT_COLOR:ee.CONSTANT_COLOR,ONE_MINUS_CONSTANT_COLOR:ee.ONE_MINUS_CONSTANT_COLOR,CONSTANT_ALPHA:ee.CONSTANT_ALPHA,ONE_MINUS_CONSTANT_ALPHA:ee.ONE_MINUS_CONSTANT_ALPHA,SOURCE_ALPHA_SATURATE:ee.SRC_ALPHA_SATURATE},Oo=Object.freeze(cRe);var lRe={DISABLED:Object.freeze({enabled:!1}),ALPHA_BLEND:Object.freeze({enabled:!0,equationRgb:lc.ADD,equationAlpha:lc.ADD,functionSourceRgb:Oo.SOURCE_ALPHA,functionSourceAlpha:Oo.ONE,functionDestinationRgb:Oo.ONE_MINUS_SOURCE_ALPHA,functionDestinationAlpha:Oo.ONE_MINUS_SOURCE_ALPHA}),PRE_MULTIPLIED_ALPHA_BLEND:Object.freeze({enabled:!0,equationRgb:lc.ADD,equationAlpha:lc.ADD,functionSourceRgb:Oo.ONE,functionSourceAlpha:Oo.ONE,functionDestinationRgb:Oo.ONE_MINUS_SOURCE_ALPHA,functionDestinationAlpha:Oo.ONE_MINUS_SOURCE_ALPHA}),ADDITIVE_BLEND:Object.freeze({enabled:!0,equationRgb:lc.ADD,equationAlpha:lc.ADD,functionSourceRgb:Oo.SOURCE_ALPHA,functionSourceAlpha:Oo.ONE,functionDestinationRgb:Oo.ONE,functionDestinationAlpha:Oo.ONE})},pn=Object.freeze(lRe);var uRe={FRONT:ee.FRONT,BACK:ee.BACK,FRONT_AND_BACK:ee.FRONT_AND_BACK},Mi=Object.freeze(uRe);function Zx(e){e=e??V.EMPTY_OBJECT,this.material=e.material,this.translucent=e.translucent??!0,this._vertexShaderSource=e.vertexShaderSource,this._fragmentShaderSource=e.fragmentShaderSource,this._renderState=e.renderState,this._closed=e.closed??!1}Object.defineProperties(Zx.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}}});Zx.prototype.getFragmentShaderSource=function(){let e=[];return this.flat&&e.push("#define FLAT"),this.faceForward&&e.push("#define FACE_FORWARD"),l(this.material)&&e.push(this.material.shaderSource),e.push(this.fragmentShaderSource),e.join(` +`)};Zx.prototype.isTranslucent=function(){return l(this.material)&&this.material.isTranslucent()||!l(this.material)&&this.translucent};Zx.prototype.getRenderState=function(){let e=this.isTranslucent(),t=ze(this.renderState,!1);return e?(t.depthMask=!1,t.blending=pn.ALPHA_BLEND):t.depthMask=!0,t};Zx.getDefaultRenderState=function(e,t,n){let i={depthTest:{enabled:!0}};return e&&(i.depthMask=!1,i.blending=pn.ALPHA_BLEND),t&&(i.cull={enabled:!0,face:Mi.BACK}),l(n)&&(i=Tt(n,i,!0)),i};var po=Zx;function fRe(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var Xn=fRe;function $x(e,t,n,i,o){this._format=e,this._datatype=t,this._width=n,this._height=i,this._buffer=o}Object.defineProperties($x.prototype,{internalFormat:{get:function(){return this._format}},pixelDatatype:{get:function(){return this._datatype}},width:{get:function(){return this._width}},height:{get:function(){return this._height}},bufferView:{get:function(){return this._buffer}},arrayBufferView:{get:function(){return this._buffer}}});$x.clone=function(e){if(l(e))return new $x(e._format,e._datatype,e._width,e._height,e._buffer)};$x.prototype.clone=function(){return $x.clone(this)};var LB=$x;var Kne=xr(Ou(),1);function Xne(){if(!l(Oa._canTransferArrayBuffer)){let e=m6("transferTypedArrayTest");e.postMessage=e.webkitPostMessage??e.postMessage;let t=99,n=new Int8Array([t]);try{e.postMessage({array:n},[n.buffer])}catch{return Oa._canTransferArrayBuffer=!1,Oa._canTransferArrayBuffer}Oa._canTransferArrayBuffer=new Promise(i=>{e.onmessage=function(o){let r=o.data.array,s=l(r)&&r[0]===t;i(s),e.terminate(),Oa._canTransferArrayBuffer=s}})}return Oa._canTransferArrayBuffer}var h6=new _e;function d6(e){let t;try{t=new Blob([e],{type:"application/javascript"})}catch{let o=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,r=new o;r.append(e),t=r.getBlob("application/javascript")}return(window.URL||window.webkitURL).createObjectURL(t)}function m6(e){let t=new Kne.default(e),n=t.scheme().length!==0&&t.fragment().length===0,i=e.replace(/\.js$/,""),o={},r,s;if(g_(e))s=e;else if(!n){let a=fn(`${Oa._workerModulePrefix}/${i}.js`);g_(a)&&(s=a)}if(s){let a=`import "${s}";`;return r=d6(a),o.type="module",new Worker(r,o)}if(!n&&typeof CESIUM_WORKERS<"u"){let a=` + importScripts("${d6(CESIUM_WORKERS)}"); + CesiumWorkers["${i}"](); + `;return r=d6(a),new Worker(r,o)}if(r=e,n||(r=fn(`${Oa._workerModulePrefix+i}.js`)),!Wt.supportsEsmWebWorkers())throw new ce("This browser is not supported. Please update your browser to continue.");return o.type="module",new Worker(r,o)}async function dRe(e,t){let n={modulePath:void 0,wasmBinaryFile:void 0,wasmBinary:void 0};if(!Wt.supportsWebAssembly()){if(!l(t.fallbackModulePath))throw new ce(`This browser does not support Web Assembly, and no backup module was provided for ${e._workerPath}`);return n.modulePath=fn(t.fallbackModulePath),n}n.wasmBinaryFile=fn(t.wasmBinaryFile);let i=await we.fetchArrayBuffer({url:n.wasmBinaryFile});return n.wasmBinary=i,n}function Oa(e,t){this._workerPath=e,this._maximumActiveTasks=t??Number.POSITIVE_INFINITY,this._activeTasks=0,this._nextID=0,this._webAssemblyPromise=void 0}var hRe=(e,t,n,i)=>{let o=({data:r})=>{if(r.id===t){if(l(r.error)){let s=r.error;s.name==="RuntimeError"?(s=new ce(r.error.message),s.stack=r.error.stack):s.name==="DeveloperError"?(s=new me(r.error.message),s.stack=r.error.stack):s.name==="Error"&&(s=new Error(r.error.message),s.stack=r.error.stack),h6.raiseEvent(s),i(s)}else h6.raiseEvent(),n(r.result);e.removeEventListener("message",o)}};return o},mRe=[];async function ARe(e,t,n){let i=await Promise.resolve(Xne());l(n)?i||(n.length=0):n=mRe;let o=e._nextID++,r=new Promise((s,a)=>{e._worker.addEventListener("message",hRe(e._worker,o,s,a))});return e._worker.postMessage({id:o,baseUrl:fn.getCesiumBaseUrl().url,parameters:t,canTransferArrayBuffer:i},n),r}async function pRe(e,t,n){++e._activeTasks;try{let i=await ARe(e,t,n);return--e._activeTasks,i}catch(i){throw--e._activeTasks,i}}Oa.prototype.scheduleTask=function(e,t){if(l(this._worker)||(this._worker=m6(this._workerPath)),!(this._activeTasks>=this._maximumActiveTasks))return pRe(this,e,t)};Oa.prototype.initWebAssemblyModule=async function(e){if(l(this._webAssemblyPromise))return this._webAssemblyPromise;let t=async()=>{let n=this._worker=m6(this._workerPath),i=await dRe(this,e),o=await Promise.resolve(Xne()),r,s=i.wasmBinary;l(s)&&o&&(r=[s]);let a=new Promise((c,u)=>{n.onmessage=function({data:f}){l(f)?c(f.result):u(new ce("Could not configure wasm module"))}});return n.postMessage({canTransferArrayBuffer:o,parameters:{webAssemblyConfig:i}},r),a};return this._webAssemblyPromise=t(),this._webAssemblyPromise};Oa.prototype.isDestroyed=function(){return!1};Oa.prototype.destroy=function(){return l(this._worker)&&this._worker.terminate(),ue(this)};Oa.taskCompletedEvent=h6;Oa._defaultWorkerModulePrefix="Workers/";Oa._workerModulePrefix=Oa._defaultWorkerModulePrefix;Oa._canTransferArrayBuffer=void 0;var di=Oa;function tp(){}tp._transcodeTaskProcessor=new di("transcodeKTX2",Number.POSITIVE_INFINITY);tp._readyPromise=void 0;function gRe(){let e=tp._transcodeTaskProcessor.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/basis_transcoder.wasm"}).then(function(t){if(t)return tp._transcodeTaskProcessor;throw new ce("KTX2 transcoder could not be initialized.")});tp._readyPromise=e}tp.transcode=function(e,t){return l(tp._readyPromise)||gRe(),tp._readyPromise.then(function(n){let i=e;e instanceof ArrayBuffer&&(i=new Uint8Array(e));let o={supportedTargetFormats:t,ktx2Buffer:i};return n.scheduleTask(o,[i.buffer])}).then(function(n){let i=n.length,o=Object.keys(n[0]);for(let r=0;r<i;r++){let s=n[r];for(let a=0;a<o.length;a++){let c=s[o[a]];s[o[a]]=new LB(c.internalFormat,c.datatype,c.width,c.height,c.levelBuffer)}}if(o.length===1){for(let r=0;r<i;++r)n[r]=n[r][o[0]];i===1&&(n=n[0])}return n}).catch(function(n){throw n})};var OB=tp;var Jne;Zne.setKTX2SupportedFormats=function(e,t,n,i,o,r){Jne={s3tc:e,pvrtc:t,astc:n,etc:i,etc1:o,bc7:r}};function Zne(e){let t;return e instanceof ArrayBuffer||ArrayBuffer.isView(e)?t=Promise.resolve(e):t=we.createIfNeeded(e).fetchArrayBuffer(),t.then(function(n){return OB.transcode(n,Jne)})}var $l=Zne;var go={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT2:"MAT2",MAT3:"MAT3",MAT4:"MAT4"};go.getMathType=function(e){switch(e){case go.SCALAR:return Number;case go.VEC2:return U;case go.VEC3:return d;case go.VEC4:return se;case go.MAT2:return Gi;case go.MAT3:return J;case go.MAT4:return N}};go.getNumberOfComponents=function(e){switch(e){case go.SCALAR:return 1;case go.VEC2:return 2;case go.VEC3:return 3;case go.VEC4:case go.MAT2:return 4;case go.MAT3:return 9;case go.MAT4:return 16}};go.getAttributeLocationCount=function(e){switch(e){case go.SCALAR:case go.VEC2:case go.VEC3:case go.VEC4:return 1;case go.MAT2:return 2;case go.MAT3:return 3;case go.MAT4:return 4}};go.getGlslType=function(e){switch(e){case go.SCALAR:return"float";case go.VEC2:return"vec2";case go.VEC3:return"vec3";case go.VEC4:return"vec4";case go.MAT2:return"mat2";case go.MAT3:return"mat3";case go.MAT4:return"mat4"}};var zt=Object.freeze(go);var $ne=1/256,eie=256,Ro={};Ro.octEncodeInRange=function(e,t,n){if(n.x=e.x/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),n.y=e.y/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),e.z<0){let i=n.x,o=n.y;n.x=(1-Math.abs(o))*D.signNotZero(i),n.y=(1-Math.abs(i))*D.signNotZero(o)}return n.x=D.toSNorm(n.x,t),n.y=D.toSNorm(n.y,t),n};Ro.octEncode=function(e,t){return Ro.octEncodeInRange(e,255,t)};var FB=new U,tie=new Uint8Array(1);function bG(e){return tie[0]=e,tie[0]}Ro.octEncodeToCartesian4=function(e,t){return Ro.octEncodeInRange(e,65535,FB),t.x=bG(FB.x*$ne),t.y=bG(FB.x),t.z=bG(FB.y*$ne),t.w=bG(FB.y),t};Ro.octDecodeInRange=function(e,t,n,i){if(i.x=D.fromSNorm(e,n),i.y=D.fromSNorm(t,n),i.z=1-(Math.abs(i.x)+Math.abs(i.y)),i.z<0){let o=i.x;i.x=(1-Math.abs(i.y))*D.signNotZero(o),i.y=(1-Math.abs(o))*D.signNotZero(i.y)}return d.normalize(i,i)};Ro.octDecode=function(e,t,n){return Ro.octDecodeInRange(e,t,255,n)};Ro.octDecodeFromCartesian4=function(e,t){let n=e.x,i=e.y,o=e.z,r=e.w,s=n*eie+i,a=o*eie+r;return Ro.octDecodeInRange(s,a,65535,t)};Ro.octPackFloat=function(e){return 256*e.x+e.y};var p6=new U;Ro.octEncodeFloat=function(e){return Ro.octEncode(e,p6),Ro.octPackFloat(p6)};Ro.octDecodeFloat=function(e,t){let n=e/256,i=Math.floor(n),o=(n-i)*256;return Ro.octDecode(i,o,t)};Ro.octPack=function(e,t,n,i){let o=Ro.octEncodeFloat(e),r=Ro.octEncodeFloat(t),s=Ro.octEncode(n,p6);return i.x=65536*s.x+o,i.y=65536*s.y+r,i};Ro.octUnpack=function(e,t,n,i){let o=e.x/65536,r=Math.floor(o),s=(o-r)*65536;o=e.y/65536;let a=Math.floor(o),c=(o-a)*65536;Ro.octDecodeFloat(s,t),Ro.octDecodeFloat(c,n),Ro.octDecode(r,a,i)};Ro.compressTextureCoordinates=function(e){let t=e.x*4095|0,n=e.y*4095|0;return 4096*t+n};Ro.decompressTextureCoordinates=function(e,t){let n=e/4096,i=Math.floor(n);return t.x=i/4095,t.y=(e-i*4096)/4095,t};function A6(e){return e>>1^-(e&1)}Ro.zigZagDeltaDecode=function(e,t,n){let i=e.length,o=0,r=0,s=0;for(let a=0;a<i;++a)o+=A6(e[a]),r+=A6(t[a]),e[a]=o,t[a]=r,l(n)&&(s+=A6(n[a]),n[a]=s)};Ro.dequantize=function(e,t,n,i){let o=zt.getNumberOfComponents(n),r;switch(t){case q.BYTE:r=127;break;case q.UNSIGNED_BYTE:r=255;break;case q.SHORT:r=32767;break;case q.UNSIGNED_SHORT:r=65535;break;case q.INT:r=2147483647;break;case q.UNSIGNED_INT:r=4294967295;break}let s=new Float32Array(i*o);for(let a=0;a<i;a++)for(let c=0;c<o;c++){let u=a*o+c;s[u]=Math.max(e[u]/r,-1)}return s};Ro.decodeRGB565=function(e,t){let n=e.length;l(t)||(t=new Float32Array(n*3));let i=31,o=63,r=1/31,s=1/63;for(let a=0;a<n;a++){let c=e[a],u=c>>11,f=c>>5&o,h=c&i,A=3*a;t[A]=u*r,t[A+1]=f*s,t[A+2]=h*r}return t};var On=Ro;var nie=new d,iie=new d,oie=new d;function _Re(e,t,n,i,o){l(o)||(o=new d);let r,s,a,c,u,f,h,A;if(l(t.z)){if(d.equalsEpsilon(e,t,D.EPSILON14))return d.clone(d.UNIT_X,o);if(d.equalsEpsilon(e,n,D.EPSILON14))return d.clone(d.UNIT_Y,o);if(d.equalsEpsilon(e,i,D.EPSILON14))return d.clone(d.UNIT_Z,o);r=d.subtract(n,t,nie),s=d.subtract(i,t,iie),a=d.subtract(e,t,oie),c=d.dot(r,r),u=d.dot(r,s),f=d.dot(r,a),h=d.dot(s,s),A=d.dot(s,a)}else{if(U.equalsEpsilon(e,t,D.EPSILON14))return d.clone(d.UNIT_X,o);if(U.equalsEpsilon(e,n,D.EPSILON14))return d.clone(d.UNIT_Y,o);if(U.equalsEpsilon(e,i,D.EPSILON14))return d.clone(d.UNIT_Z,o);r=U.subtract(n,t,nie),s=U.subtract(i,t,iie),a=U.subtract(e,t,oie),c=U.dot(r,r),u=U.dot(r,s),f=U.dot(r,a),h=U.dot(s,s),A=U.dot(s,a)}o.y=h*f-u*A,o.z=c*A-u*f;let g=c*h-u*u;if(g!==0)return o.y/=g,o.z/=g,o.x=1-o.y-o.z,o}var JC=_Re;function Om(){this.high=d.clone(d.ZERO),this.low=d.clone(d.ZERO)}Om.encode=function(e,t){l(t)||(t={high:0,low:0});let n;return e>=0?(n=Math.floor(e/65536)*65536,t.high=n,t.low=e-n):(n=Math.floor(-e/65536)*65536,t.high=-n,t.low=e+n),t};var np={high:0,low:0};Om.fromCartesian=function(e,t){l(t)||(t=new Om);let n=t.high,i=t.low;return Om.encode(e.x,np),n.x=np.high,i.x=np.low,Om.encode(e.y,np),n.y=np.high,i.y=np.low,Om.encode(e.z,np),n.z=np.high,i.z=np.low,t};var g6=new Om;Om.writeElements=function(e,t,n){Om.fromCartesian(e,g6);let i=g6.high,o=g6.low;t[n]=i.x,t[n+1]=i.y,t[n+2]=i.z,t[n+3]=o.x,t[n+4]=o.y,t[n+5]=o.z};var ei=Om;var la={UNSIGNED_BYTE:ee.UNSIGNED_BYTE,UNSIGNED_SHORT:ee.UNSIGNED_SHORT,UNSIGNED_INT:ee.UNSIGNED_INT};la.getSizeInBytes=function(e){switch(e){case la.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case la.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case la.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}};la.fromSizeInBytes=function(e){switch(e){case 2:return la.UNSIGNED_SHORT;case 4:return la.UNSIGNED_INT;case 1:return la.UNSIGNED_BYTE}};la.validate=function(e){return l(e)&&(e===la.UNSIGNED_BYTE||e===la.UNSIGNED_SHORT||e===la.UNSIGNED_INT)};la.createTypedArray=function(e,t){return e>=D.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)};la.createTypedArrayFromArrayBuffer=function(e,t,n,i){return e>=D.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,n,i):new Uint16Array(t,n,i)};la.fromTypedArray=function(e){if(e instanceof Uint8Array)return la.UNSIGNED_BYTE;if(e instanceof Uint16Array)return la.UNSIGNED_SHORT;if(e instanceof Uint32Array)return la.UNSIGNED_INT};var Oe=Object.freeze(la);var _6={};_6.computeDiscriminant=function(e,t,n){return t*t-4*e*n};function rie(e,t,n){let i=e+t;return D.sign(e)!==D.sign(t)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(t)))<n?0:i}_6.computeRealRoots=function(e,t,n){let i;if(e===0)return t===0?[]:[-n/t];if(t===0){if(n===0)return[0,0];let c=Math.abs(n),u=Math.abs(e);if(c<u&&c/u<D.EPSILON14)return[0,0];if(c>u&&u/c<D.EPSILON14)return[];if(i=-n/e,i<0)return[];let f=Math.sqrt(i);return[-f,f]}else if(n===0)return i=-t/e,i<0?[i,0]:[0,i];let o=t*t,r=4*e*n,s=rie(o,-r,D.EPSILON14);if(s<0)return[];let a=-.5*rie(t,D.sign(t)*Math.sqrt(s),D.EPSILON14);return t>0?[a/e,n/a]:[n/a,a/e]};var cl=_6;var C6={};C6.computeDiscriminant=function(e,t,n,i){let o=e*e,r=t*t,s=n*n,a=i*i;return 18*e*t*n*i+r*s-27*o*a-4*(e*s*n+r*t*i)};function y6(e,t,n,i){let o=e,r=t/3,s=n/3,a=i,c=o*s,u=r*a,f=r*r,h=s*s,A=o*s-f,g=o*a-r*s,m=r*a-h,_=4*A*m-g*g,y,C;if(_<0){let H,W,Z;f*u>=c*h?(H=o,W=A,Z=-2*r*A+o*g):(H=a,W=m,Z=-a*g+2*s*m);let $=-(Z<0?-1:1)*Math.abs(H)*Math.sqrt(-_);C=-Z+$;let X=C/2,he=X<0?-Math.pow(-X,1/3):Math.pow(X,1/3),ge=C===$?-he:-W/he;return y=W<=0?he+ge:-Z/(he*he+ge*ge+W),f*u>=c*h?[(y-r)/o]:[-a/(y+s)]}let E=A,I=-2*r*A+o*g,b=m,S=-a*g+2*s*m,B=Math.sqrt(_),v=Math.sqrt(3)/2,P=Math.abs(Math.atan2(o*B,-I)/3);y=2*Math.sqrt(-E);let M=Math.cos(P);C=y*M;let L=y*(-M/2-v*Math.sin(P)),p=C+L>2*r?C-r:L-r,x=o,T=p/x;P=Math.abs(Math.atan2(a*B,-S)/3),y=2*Math.sqrt(-b),M=Math.cos(P),C=y*M,L=y*(-M/2-v*Math.sin(P));let w=-a,R=C+L<2*s?C+s:L+s,O=w/R,k=x*R,Q=-p*R-x*w,z=p*w,F=(s*Q-r*z)/(-r*Q+s*k);return T<=F?T<=O?F<=O?[T,F,O]:[T,O,F]:[O,T,F]:T<=O?[F,T,O]:F<=O?[F,O,T]:[O,F,T]}C6.computeRealRoots=function(e,t,n,i){let o,r;if(e===0)return cl.computeRealRoots(t,n,i);if(t===0){if(n===0){if(i===0)return[0,0,0];r=-i/e;let s=r<0?-Math.pow(-r,1/3):Math.pow(r,1/3);return[s,s,s]}else if(i===0)return o=cl.computeRealRoots(e,0,n),o.Length===0?[0]:[o[0],0,o[1]];return y6(e,0,n,i)}else{if(n===0)return i===0?(r=-t/e,r<0?[r,0,0]:[0,0,r]):y6(e,t,0,i);if(i===0)return o=cl.computeRealRoots(e,t,n),o.length===0?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]}return y6(e,t,n,i)};var ZC=C6;var E6={};E6.computeDiscriminant=function(e,t,n,i,o){let r=e*e,s=r*e,a=t*t,c=a*t,u=n*n,f=u*n,h=i*i,A=h*i,g=o*o,m=g*o;return a*u*h-4*c*A-4*e*f*h+18*e*t*n*A-27*r*h*h+256*s*m+o*(18*c*n*i-4*a*f+16*e*u*u-80*e*t*u*i-6*e*a*h+144*r*n*h)+g*(144*e*a*n-27*a*a-128*r*u-192*r*t*i)};function ch(e,t,n,i){let o=e*e,r=t-3*o/8,s=n-t*e/2+o*e/8,a=i-n*e/4+t*o/16-3*o*o/256,c=ZC.computeRealRoots(1,2*r,r*r-4*a,-s*s);if(c.length>0){let u=-e/4,f=c[c.length-1];if(Math.abs(f)<D.EPSILON14){let h=cl.computeRealRoots(1,r,a);if(h.length===2){let A=h[0],g=h[1],m;if(A>=0&&g>=0){let _=Math.sqrt(A),y=Math.sqrt(g);return[u-y,u-_,u+_,u+y]}else{if(A>=0&&g<0)return m=Math.sqrt(A),[u-m,u+m];if(A<0&&g>=0)return m=Math.sqrt(g),[u-m,u+m]}}return[]}else if(f>0){let h=Math.sqrt(f),A=(r+f-s/h)/2,g=(r+f+s/h)/2,m=cl.computeRealRoots(1,h,A),_=cl.computeRealRoots(1,-h,g);return m.length!==0?(m[0]+=u,m[1]+=u,_.length!==0?(_[0]+=u,_[1]+=u,m[1]<=_[0]?[m[0],m[1],_[0],_[1]]:_[1]<=m[0]?[_[0],_[1],m[0],m[1]]:m[0]>=_[0]&&m[1]<=_[1]?[_[0],m[0],m[1],_[1]]:_[0]>=m[0]&&_[1]<=m[1]?[m[0],_[0],_[1],m[1]]:m[0]>_[0]&&m[0]<_[1]?[_[0],m[0],_[1],m[1]]:[m[0],_[0],m[1],_[1]]):m):_.length!==0?(_[0]+=u,_[1]+=u,_):[]}}return[]}function QB(e,t,n,i){let o=n*n,r=t*t,s=e*e,a=-2*t,c=n*e+r-4*i,u=s*i-n*t*e+o,f=ZC.computeRealRoots(1,a,c,u);if(f.length>0){let h=f[0],A=t-h,g=A*A,m=e/2,_=A/2,y=g-4*i,C=g+4*Math.abs(i),E=s-4*h,I=s+4*Math.abs(h),b,S;if(h<0||y*I<E*C){let x=Math.sqrt(E);b=x/2,S=x===0?0:(e*_-n)/x}else{let x=Math.sqrt(y);b=x===0?0:(e*_-n)/x,S=x/2}let B,v;m===0&&b===0?(B=0,v=0):D.sign(m)===D.sign(b)?(B=m+b,v=h/B):(v=m-b,B=h/v);let P,M;_===0&&S===0?(P=0,M=0):D.sign(_)===D.sign(S)?(P=_+S,M=i/P):(M=_-S,P=i/M);let L=cl.computeRealRoots(1,B,P),p=cl.computeRealRoots(1,v,M);if(L.length!==0)return p.length!==0?L[1]<=p[0]?[L[0],L[1],p[0],p[1]]:p[1]<=L[0]?[p[0],p[1],L[0],L[1]]:L[0]>=p[0]&&L[1]<=p[1]?[p[0],L[0],L[1],p[1]]:p[0]>=L[0]&&p[1]<=L[1]?[L[0],p[0],p[1],L[1]]:L[0]>p[0]&&L[0]<p[1]?[p[0],L[0],p[1],L[1]]:[L[0],p[0],L[1],p[1]]:L;if(p.length!==0)return p}return[]}E6.computeRealRoots=function(e,t,n,i,o){if(Math.abs(e)<D.EPSILON15)return ZC.computeRealRoots(t,n,i,o);let r=t/e,s=n/e,a=i/e,c=o/e,u=r<0?1:0;switch(u+=s<0?u+1:u,u+=a<0?u+1:u,u+=c<0?u+1:u,u){case 0:return ch(r,s,a,c);case 1:return QB(r,s,a,c);case 2:return QB(r,s,a,c);case 3:return ch(r,s,a,c);case 4:return ch(r,s,a,c);case 5:return QB(r,s,a,c);case 6:return ch(r,s,a,c);case 7:return ch(r,s,a,c);case 8:return QB(r,s,a,c);case 9:return ch(r,s,a,c);case 10:return ch(r,s,a,c);case 11:return QB(r,s,a,c);case 12:return ch(r,s,a,c);case 13:return ch(r,s,a,c);case 14:return ch(r,s,a,c);case 15:return ch(r,s,a,c);default:return}};var kB=E6;function TG(e,t){t=d.clone(t??d.ZERO),d.equals(t,d.ZERO)||d.normalize(t,t),this.origin=d.clone(e??d.ZERO),this.direction=t}TG.clone=function(e,t){if(l(e))return l(t)?(t.origin=d.clone(e.origin),t.direction=d.clone(e.direction),t):new TG(e.origin,e.direction)};TG.getPoint=function(e,t,n){return l(n)||(n=new d),n=d.multiplyByScalar(e.direction,t,n),d.add(e.origin,n,n)};var In=TG;var $o={};$o.rayPlane=function(e,t,n){l(n)||(n=new d);let i=e.origin,o=e.direction,r=t.normal,s=d.dot(r,o);if(Math.abs(s)<D.EPSILON15)return;let a=(-t.distance-d.dot(r,i))/s;if(!(a<0))return n=d.multiplyByScalar(o,a,n),d.add(i,n,n)};var yRe=new d,CRe=new d,hie=new d,sie=new d,aie=new d;$o.rayTriangleParametric=function(e,t,n,i,o){o=o??!1;let r=e.origin,s=e.direction,a=d.subtract(n,t,yRe),c=d.subtract(i,t,CRe),u=d.cross(s,c,hie),f=d.dot(a,u),h,A,g,m,_;if(o){if(f<D.EPSILON6||(h=d.subtract(r,t,sie),g=d.dot(h,u),g<0||g>f)||(A=d.cross(h,a,aie),m=d.dot(s,A),m<0||g+m>f))return;_=d.dot(c,A)/f}else{if(Math.abs(f)<D.EPSILON6)return;let y=1/f;if(h=d.subtract(r,t,sie),g=d.dot(h,u)*y,g<0||g>1||(A=d.cross(h,a,aie),m=d.dot(s,A)*y,m<0||g+m>1))return;_=d.dot(c,A)*y}return _};$o.rayTriangle=function(e,t,n,i,o,r){let s=$o.rayTriangleParametric(e,t,n,i,o);if(!(!l(s)||s<0))return l(r)||(r=new d),d.multiplyByScalar(e.direction,s,r),d.add(e.origin,r,r)};var ERe=new In;$o.lineSegmentTriangle=function(e,t,n,i,o,r,s){let a=ERe;d.clone(e,a.origin),d.subtract(t,e,a.direction),d.normalize(a.direction,a.direction);let c=$o.rayTriangleParametric(a,n,i,o,r);if(!(!l(c)||c<0||c>d.distance(e,t)))return l(s)||(s=new d),d.multiplyByScalar(a.direction,c,s),d.add(a.origin,s,s)};function IRe(e,t,n,i){let o=t*t-4*e*n;if(o<0)return;if(o>0){let s=1/(2*e),a=Math.sqrt(o),c=(-t+a)*s,u=(-t-a)*s;return c<u?(i.root0=c,i.root1=u):(i.root0=u,i.root1=c),i}let r=-t/(2*e);if(r!==0)return i.root0=i.root1=r,i}var xRe={root0:0,root1:0};function mie(e,t,n){l(n)||(n=new sc);let i=e.origin,o=e.direction,r=t.center,s=t.radius*t.radius,a=d.subtract(i,r,hie),c=d.dot(o,o),u=2*d.dot(o,a),f=d.magnitudeSquared(a)-s,h=IRe(c,u,f,xRe);if(l(h))return n.start=h.root0,n.stop=h.root1,n}$o.raySphere=function(e,t,n){if(n=mie(e,t,n),!(!l(n)||n.stop<0))return n.start=Math.max(n.start,0),n};var bRe=new In;$o.lineSegmentSphere=function(e,t,n,i){let o=bRe;d.clone(e,o.origin);let r=d.subtract(t,e,o.direction),s=d.magnitude(r);if(d.normalize(r,r),i=mie(o,n,i),!(!l(i)||i.stop<0||i.start>s))return i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,s),i};var TRe=new d,SRe=new d;$o.rayEllipsoid=function(e,t){let n=t.oneOverRadii,i=d.multiplyComponents(n,e.origin,TRe),o=d.multiplyComponents(n,e.direction,SRe),r=d.magnitudeSquared(i),s=d.dot(i,o),a,c,u,f,h;if(r>1){if(s>=0)return;let A=s*s;if(a=r-1,c=d.magnitudeSquared(o),u=c*a,A<u)return;if(A>u){f=s*s-u,h=-s+Math.sqrt(f);let m=h/c,_=a/h;return m<_?new sc(m,_):{start:_,stop:m}}let g=Math.sqrt(a/c);return new sc(g,g)}else if(r<1)return a=r-1,c=d.magnitudeSquared(o),u=c*a,f=s*s-u,h=-s+Math.sqrt(f),new sc(0,h/c);if(s<0)return c=d.magnitudeSquared(o),new sc(0,-s/c)};function $C(e,t,n){let i=e+t;return D.sign(e)!==D.sign(t)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(t)))<n?0:i}$o.quadraticVectorExpression=function(e,t,n,i,o){let r=i*i,s=o*o,a=(e[J.COLUMN1ROW1]-e[J.COLUMN2ROW2])*s,c=o*(i*$C(e[J.COLUMN1ROW0],e[J.COLUMN0ROW1],D.EPSILON15)+t.y),u=e[J.COLUMN0ROW0]*r+e[J.COLUMN2ROW2]*s+i*t.x+n,f=s*$C(e[J.COLUMN2ROW1],e[J.COLUMN1ROW2],D.EPSILON15),h=o*(i*$C(e[J.COLUMN2ROW0],e[J.COLUMN0ROW2])+t.z),A,g=[];if(h===0&&f===0){if(A=cl.computeRealRoots(a,c,u),A.length===0)return g;let P=A[0],M=Math.sqrt(Math.max(1-P*P,0));if(g.push(new d(i,o*P,o*-M)),g.push(new d(i,o*P,o*M)),A.length===2){let L=A[1],p=Math.sqrt(Math.max(1-L*L,0));g.push(new d(i,o*L,o*-p)),g.push(new d(i,o*L,o*p))}return g}let m=h*h,_=f*f,y=a*a,C=h*f,E=y+_,I=2*(c*a+C),b=2*u*a+c*c-_+m,S=2*(u*c-C),B=u*u-m;if(E===0&&I===0&&b===0&&S===0)return g;A=kB.computeRealRoots(E,I,b,S,B);let v=A.length;if(v===0)return g;for(let P=0;P<v;++P){let M=A[P],L=M*M,p=Math.max(1-L,0),x=Math.sqrt(p),T;D.sign(a)===D.sign(u)?T=$C(a*L+u,c*M,D.EPSILON12):D.sign(u)===D.sign(c*M)?T=$C(a*L,c*M+u,D.EPSILON12):T=$C(a*L+c*M,u,D.EPSILON12);let w=$C(f*M,h,D.EPSILON15),R=T*w;R<0?g.push(new d(i,o*M,o*x)):R>0?g.push(new d(i,o*M,o*-x)):x!==0?(g.push(new d(i,o*M,o*-x)),g.push(new d(i,o*M,o*x)),++P):g.push(new d(i,o*M,o*x))}return g};var I6=new d,cie=new d,lie=new d,SG=new d,wRe=new d,BRe=new J,DRe=new J,vRe=new J,PRe=new J,RRe=new J,uie=new J,fie=new J,die=new d,MRe=new d,NRe=new Ae;$o.grazingAltitudeLocation=function(e,t){let n=e.origin,i=e.direction;if(!d.equals(n,d.ZERO)){let B=t.geodeticSurfaceNormal(n,I6);if(d.dot(i,B)>=0)return n}let o=l(this.rayEllipsoid(e,t)),r=t.transformPositionToScaledSpace(i,I6),s=d.normalize(r,r),a=d.mostOrthogonalAxis(r,SG),c=d.normalize(d.cross(a,s,cie),cie),u=d.normalize(d.cross(s,c,lie),lie),f=BRe;f[0]=s.x,f[1]=s.y,f[2]=s.z,f[3]=c.x,f[4]=c.y,f[5]=c.z,f[6]=u.x,f[7]=u.y,f[8]=u.z;let h=J.transpose(f,DRe),A=J.fromScale(t.radii,vRe),g=J.fromScale(t.oneOverRadii,PRe),m=RRe;m[0]=0,m[1]=-i.z,m[2]=i.y,m[3]=i.z,m[4]=0,m[5]=-i.x,m[6]=-i.y,m[7]=i.x,m[8]=0;let _=J.multiply(J.multiply(h,g,uie),m,uie),y=J.multiply(J.multiply(_,A,fie),f,fie),C=J.multiplyByVector(_,n,wRe),E=$o.quadraticVectorExpression(y,d.negate(C,I6),0,0,1),I,b,S=E.length;if(S>0){let B=d.clone(d.ZERO,MRe),v=Number.NEGATIVE_INFINITY;for(let M=0;M<S;++M){I=J.multiplyByVector(A,J.multiplyByVector(f,E[M],die),die);let L=d.normalize(d.subtract(I,n,SG),SG),p=d.dot(L,i);p>v&&(v=p,B=d.clone(I,B))}let P=t.cartesianToCartographic(B,NRe);return v=D.clamp(v,0,1),b=d.magnitude(d.subtract(B,n,SG))*Math.sqrt(1-v*v),b=o?-b:b,P.height=b,t.cartographicToCartesian(P,new d)}};var LRe=new d;$o.lineSegmentPlane=function(e,t,n,i){l(i)||(i=new d);let o=d.subtract(t,e,LRe),r=n.normal,s=d.dot(r,o);if(Math.abs(s)<D.EPSILON6)return;let a=d.dot(r,e),c=-(n.distance+a)/s;if(!(c<0||c>1))return d.multiplyByScalar(o,c,i),d.add(e,i,i),i};$o.trianglePlaneIntersection=function(e,t,n,i){let o=i.normal,r=i.distance,s=d.dot(o,e)+r<0,a=d.dot(o,t)+r<0,c=d.dot(o,n)+r<0,u=0;u+=s?1:0,u+=a?1:0,u+=c?1:0;let f,h;if((u===1||u===2)&&(f=new d,h=new d),u===1){if(s)return $o.lineSegmentPlane(e,t,i,f),$o.lineSegmentPlane(e,n,i,h),{positions:[e,t,n,f,h],indices:[0,3,4,1,2,4,1,4,3]};if(a)return $o.lineSegmentPlane(t,n,i,f),$o.lineSegmentPlane(t,e,i,h),{positions:[e,t,n,f,h],indices:[1,3,4,2,0,4,2,4,3]};if(c)return $o.lineSegmentPlane(n,e,i,f),$o.lineSegmentPlane(n,t,i,h),{positions:[e,t,n,f,h],indices:[2,3,4,0,1,4,0,4,3]}}else if(u===2)if(s)if(a){if(!c)return $o.lineSegmentPlane(e,n,i,f),$o.lineSegmentPlane(t,n,i,h),{positions:[e,t,n,f,h],indices:[0,1,4,0,4,3,2,3,4]}}else return $o.lineSegmentPlane(n,t,i,f),$o.lineSegmentPlane(e,t,i,h),{positions:[e,t,n,f,h],indices:[2,0,4,2,4,3,1,3,4]};else return $o.lineSegmentPlane(t,e,i,f),$o.lineSegmentPlane(n,e,i,h),{positions:[e,t,n,f,h],indices:[1,2,4,1,4,3,0,3,4]}};var hi=$o;function ua(e,t){this.normal=d.clone(e),this.distance=t}ua.fromPointNormal=function(e,t,n){let i=-d.dot(t,e);return l(n)?(d.clone(t,n.normal),n.distance=i,n):new ua(t,i)};var ORe=new d;ua.fromCartesian4=function(e,t){let n=d.fromCartesian4(e,ORe),i=e.w;return l(t)?(d.clone(n,t.normal),t.distance=i,t):new ua(n,i)};ua.getPointDistance=function(e,t){return d.dot(e.normal,t)+e.distance};var FRe=new d;ua.projectPointOntoPlane=function(e,t,n){l(n)||(n=new d);let i=ua.getPointDistance(e,t),o=d.multiplyByScalar(e.normal,i,FRe);return d.subtract(t,o,n)};var QRe=new N,kRe=new se,URe=new d;ua.transform=function(e,t,n){let i=e.normal,o=e.distance,r=N.inverseTranspose(t,QRe),s=se.fromElements(i.x,i.y,i.z,o,kRe);s=N.multiplyByVector(r,s,s);let a=d.fromCartesian4(s,URe);return s=se.divideByScalar(s,d.magnitude(a),s),ua.fromCartesian4(s,n)};ua.clone=function(e,t){return l(t)?(d.clone(e.normal,t.normal),t.distance=e.distance,t):new ua(e.normal,e.distance)};ua.equals=function(e,t){return e.distance===t.distance&&d.equals(e.normal,t.normal)};ua.ORIGIN_XY_PLANE=Object.freeze(new ua(d.UNIT_Z,0));ua.ORIGIN_YZ_PLANE=Object.freeze(new ua(d.UNIT_X,0));ua.ORIGIN_ZX_PLANE=Object.freeze(new ua(d.UNIT_Y,0));var mn=ua;var x6={};x6.calculateACMR=function(e){e=e??V.EMPTY_OBJECT;let t=e.indices,n=e.maximumIndex,i=e.cacheSize??24,o=t.length;if(!l(n)){n=0;let a=0,c=t[a];for(;a<o;)c>n&&(n=c),++a,c=t[a]}let r=[];for(let a=0;a<n+1;a++)r[a]=0;let s=i+1;for(let a=0;a<o;++a)s-r[t[a]]>i&&(r[t[a]]=s,++s);return(s-i+1)/(o/3)};x6.tipsify=function(e){e=e??V.EMPTY_OBJECT;let t=e.indices,n=e.maximumIndex,i=e.cacheSize??24,o;function r(p,x,T,w){for(;x.length>=1;){let R=x[x.length-1];if(x.splice(x.length-1,1),p[R].numLiveTriangles>0)return R}for(;o<w;){if(p[o].numLiveTriangles>0)return++o,o-1;++o}return-1}function s(p,x,T,w,R,O,k){let Q=-1,z,F=-1,H=0;for(;H<T.length;){let W=T[H];w[W].numLiveTriangles&&(z=0,R-w[W].timeStamp+2*w[W].numLiveTriangles<=x&&(z=R-w[W].timeStamp),(z>F||F===-1)&&(F=z,Q=W)),++H}return Q===-1?r(w,O,p,k):Q}let a=t.length,c=0,u=0,f=t[u],h=a;if(l(n))c=n+1;else{for(;u<h;)f>c&&(c=f),++u,f=t[u];if(c===-1)return 0;++c}let A=[],g;for(g=0;g<c;g++)A[g]={numLiveTriangles:0,timeStamp:0,vertexTriangles:[]};u=0;let m=0;for(;u<h;)A[t[u]].vertexTriangles.push(m),++A[t[u]].numLiveTriangles,A[t[u+1]].vertexTriangles.push(m),++A[t[u+1]].numLiveTriangles,A[t[u+2]].vertexTriangles.push(m),++A[t[u+2]].numLiveTriangles,++m,u+=3;let _=0,y=i+1;o=1;let C=[],E=[],I,b,S=0,B=[],v=a/3,P=[];for(g=0;g<v;g++)P[g]=!1;let M,L;for(;_!==-1;){C=[],b=A[_],L=b.vertexTriangles.length;for(let p=0;p<L;++p)if(m=b.vertexTriangles[p],!P[m]){P[m]=!0,u=m+m+m;for(let x=0;x<3;++x)M=t[u],C.push(M),E.push(M),B[S]=M,++S,I=A[M],--I.numLiveTriangles,y-I.timeStamp>i&&(I.timeStamp=y,++y),++u}_=s(t,i,C,A,y,E,c)}return B};var UB=x6;var ll={};function MG(e,t,n,i,o){e[t++]=n,e[t++]=i,e[t++]=i,e[t++]=o,e[t++]=o,e[t]=n}function GRe(e){let t=e.length,n=t/3*6,i=Oe.createTypedArray(t,n),o=0;for(let r=0;r<t;r+=3,o+=6)MG(i,o,e[r],e[r+1],e[r+2]);return i}function zRe(e){let t=e.length;if(t>=3){let n=(t-2)*6,i=Oe.createTypedArray(t,n);MG(i,0,e[0],e[1],e[2]);let o=6;for(let r=3;r<t;++r,o+=6)MG(i,o,e[r-1],e[r],e[r-2]);return i}return new Uint16Array}function VRe(e){if(e.length>0){let t=e.length-1,n=(t-1)*6,i=Oe.createTypedArray(t,n),o=e[0],r=0;for(let s=1;s<t;++s,r+=6)MG(i,r,o,e[s],e[s+1]);return i}return new Uint16Array}ll.toWireframe=function(e){let t=e.indices;if(l(t)){switch(e.primitiveType){case Me.TRIANGLES:e.indices=GRe(t);break;case Me.TRIANGLE_STRIP:e.indices=zRe(t);break;case Me.TRIANGLE_FAN:e.indices=VRe(t);break}e.primitiveType=Me.LINES}return e};ll.createLineSegmentsForVectors=function(e,t,n){t=t??"normal",n=n??1e4;let i=e.attributes.position.values,o=e.attributes[t].values,r=i.length,s=new Float64Array(2*r),a=0;for(let f=0;f<r;f+=3)s[a++]=i[f],s[a++]=i[f+1],s[a++]=i[f+2],s[a++]=i[f]+o[f]*n,s[a++]=i[f+1]+o[f+1]*n,s[a++]=i[f+2]+o[f+2]*n;let c,u=e.boundingSphere;return l(u)&&(c=new le(u.center,u.radius+n)),new ht({attributes:{position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s})},primitiveType:Me.LINES,boundingSphere:c})};ll.createAttributeLocations=function(e){let t=["position","positionHigh","positionLow","position3DHigh","position3DLow","position2DHigh","position2DLow","pickColor","normal","st","tangent","bitangent","extrudeDirection","compressedAttributes"],n=e.attributes,i={},o=0,r,s=t.length;for(r=0;r<s;++r){let a=t[r];l(n[a])&&(i[a]=o++)}for(let a in n)n.hasOwnProperty(a)&&!l(i[a])&&(i[a]=o++);return i};ll.reorderForPreVertexCache=function(e){let t=ht.computeNumberOfVertices(e),n=e.indices;if(l(n)){let i=new Int32Array(t);for(let A=0;A<t;A++)i[A]=-1;let o=n,r=o.length,s=Oe.createTypedArray(t,r),a=0,c=0,u=0,f;for(;a<r;)f=i[o[a]],f!==-1?s[c]=f:(f=o[a],i[f]=u,s[c]=u,++u),++a,++c;e.indices=s;let h=e.attributes;for(let A in h)if(h.hasOwnProperty(A)&&l(h[A])&&l(h[A].values)){let g=h[A],m=g.values,_=0,y=g.componentsPerAttribute,C=q.createTypedArray(g.componentDatatype,u*y);for(;_<t;){let E=i[_];if(E!==-1)for(let I=0;I<y;I++)C[y*E+I]=m[y*_+I];++_}g.values=C}}return e};ll.reorderForPostVertexCache=function(e,t){let n=e.indices;if(e.primitiveType===Me.TRIANGLES&&l(n)){let i=n.length,o=0;for(let r=0;r<i;r++)n[r]>o&&(o=n[r]);e.indices=UB.tipsify({indices:n,maximumIndex:o,cacheSize:t})}return e};function Aie(e){let t={};for(let n in e)if(e.hasOwnProperty(n)&&l(e[n])&&l(e[n].values)){let i=e[n];t[n]=new De({componentDatatype:i.componentDatatype,componentsPerAttribute:i.componentsPerAttribute,normalize:i.normalize,values:[]})}return t}function HRe(e,t,n){for(let i in t)if(t.hasOwnProperty(i)&&l(t[i])&&l(t[i].values)){let o=t[i];for(let r=0;r<o.componentsPerAttribute;++r)e[i].values.push(o.values[n*o.componentsPerAttribute+r])}}ll.fitToUnsignedShortIndices=function(e){let t=[],n=ht.computeNumberOfVertices(e);if(l(e.indices)&&n>=D.SIXTY_FOUR_KILOBYTES){let i=[],o=[],r=0,s=Aie(e.attributes),a=e.indices,c=a.length,u;e.primitiveType===Me.TRIANGLES?u=3:e.primitiveType===Me.LINES?u=2:e.primitiveType===Me.POINTS&&(u=1);for(let f=0;f<c;f+=u){for(let h=0;h<u;++h){let A=a[f+h],g=i[A];l(g)||(g=r++,i[A]=g,HRe(s,e.attributes,A)),o.push(g)}r+u>=D.SIXTY_FOUR_KILOBYTES&&(t.push(new ht({attributes:s,indices:o,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV})),i=[],o=[],r=0,s=Aie(e.attributes))}o.length!==0&&t.push(new ht({attributes:s,indices:o,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV}))}else t.push(e);return t};var pie=new d,WRe=new Ae;ll.projectTo2D=function(e,t,n,i,o){let r=e.attributes[t];o=l(o)?o:new Ui;let s=o.ellipsoid,a=r.values,c=new Float64Array(a.length),u=0;for(let f=0;f<a.length;f+=3){let h=d.fromArray(a,f,pie),A=s.cartesianToCartographic(h,WRe),g=o.project(A,pie);c[u++]=g.x,c[u++]=g.y,c[u++]=g.z}return e.attributes[n]=r,e.attributes[i]=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:c}),delete e.attributes[t],e};var b6={high:0,low:0};ll.encodeAttribute=function(e,t,n,i){let o=e.attributes[t],r=o.values,s=r.length,a=new Float32Array(s),c=new Float32Array(s);for(let f=0;f<s;++f)ei.encode(r[f],b6),a[f]=b6.high,c[f]=b6.low;let u=o.componentsPerAttribute;return e.attributes[n]=new De({componentDatatype:q.FLOAT,componentsPerAttribute:u,values:a}),e.attributes[i]=new De({componentDatatype:q.FLOAT,componentsPerAttribute:u,values:c}),delete e.attributes[t],e};var uh=new d;function T6(e,t){if(l(t)){let n=t.values,i=n.length;for(let o=0;o<i;o+=3)d.unpack(n,o,uh),N.multiplyByPoint(e,uh,uh),d.pack(uh,n,o)}}function S6(e,t){if(l(t)){let n=t.values,i=n.length;for(let o=0;o<i;o+=3)d.unpack(n,o,uh),J.multiplyByVector(e,uh,uh),uh=d.normalize(uh,uh),d.pack(uh,n,o)}}var wG=new N,BG=new J;ll.transformToWorldCoordinates=function(e){let t=e.modelMatrix;if(N.equals(t,N.IDENTITY))return e;let n=e.geometry.attributes;T6(t,n.position),T6(t,n.prevPosition),T6(t,n.nextPosition),(l(n.normal)||l(n.tangent)||l(n.bitangent))&&(N.inverse(t,wG),N.transpose(wG,wG),N.getMatrix3(wG,BG),S6(BG,n.normal),S6(BG,n.tangent),S6(BG,n.bitangent));let i=e.geometry.boundingSphere;return l(i)&&(e.geometry.boundingSphere=le.transform(i,t,i)),e.modelMatrix=N.clone(N.IDENTITY),e};function jRe(e,t){let n=e.length,i={},o=e[0][t].attributes,r;for(r in o)if(o.hasOwnProperty(r)&&l(o[r])&&l(o[r].values)){let s=o[r],a=s.values.length,c=!0;for(let u=1;u<n;++u){let f=e[u][t].attributes[r];if(!l(f)||s.componentDatatype!==f.componentDatatype||s.componentsPerAttribute!==f.componentsPerAttribute||s.normalize!==f.normalize){c=!1;break}a+=f.values.length}c&&(i[r]=new De({componentDatatype:s.componentDatatype,componentsPerAttribute:s.componentsPerAttribute,normalize:s.normalize,values:q.createTypedArray(s.componentDatatype,a)}))}return i}var YRe=new d;function w6(e,t){let n=e.length,i,o,r,s,a=e[0].modelMatrix,c=l(e[0][t].indices),u=e[0][t].primitiveType,f=jRe(e,t),h,A,g;for(i in f)if(f.hasOwnProperty(i))for(h=f[i].values,s=0,o=0;o<n;++o)for(A=e[o][t].attributes[i].values,g=A.length,r=0;r<g;++r)h[s++]=A[r];let m;if(c){let E=0;for(o=0;o<n;++o)E+=e[o][t].indices.length;let I=ht.computeNumberOfVertices(new ht({attributes:f,primitiveType:Me.POINTS})),b=Oe.createTypedArray(I,E),S=0,B=0;for(o=0;o<n;++o){let v=e[o][t].indices,P=v.length;for(s=0;s<P;++s)b[S++]=B+v[s];B+=ht.computeNumberOfVertices(e[o][t])}m=b}let _=new d,y=0,C;for(o=0;o<n;++o){if(C=e[o][t].boundingSphere,!l(C)){_=void 0;break}d.add(C.center,_,_)}if(l(_))for(d.divideByScalar(_,n,_),o=0;o<n;++o){C=e[o][t].boundingSphere;let E=d.magnitude(d.subtract(C.center,_,YRe))+C.radius;E>y&&(y=E)}return new ht({attributes:f,indices:m,primitiveType:u,boundingSphere:l(_)?new le(_,y):void 0})}ll.combineInstances=function(e){let t=[],n=[],i=e.length;for(let r=0;r<i;++r){let s=e[r];l(s.geometry)?t.push(s):l(s.westHemisphereGeometry)&&l(s.eastHemisphereGeometry)&&n.push(s)}let o=[];return t.length>0&&o.push(w6(t,"geometry")),n.length>0&&(o.push(w6(n,"westHemisphereGeometry")),o.push(w6(n,"eastHemisphereGeometry"))),o};var Yf=new d,GB=new d,eb=new d,tb=new d;ll.computeNormal=function(e){let t=e.indices,n=e.attributes,i=n.position.values,o=n.position.values.length/3,r=t.length,s=new Array(o),a=new Array(r/3),c=new Array(r),u;for(u=0;u<o;u++)s[u]={indexOffset:0,count:0,currentCount:0};let f=0;for(u=0;u<r;u+=3){let m=t[u],_=t[u+1],y=t[u+2],C=m*3,E=_*3,I=y*3;GB.x=i[C],GB.y=i[C+1],GB.z=i[C+2],eb.x=i[E],eb.y=i[E+1],eb.z=i[E+2],tb.x=i[I],tb.y=i[I+1],tb.z=i[I+2],s[m].count++,s[_].count++,s[y].count++,d.subtract(eb,GB,eb),d.subtract(tb,GB,tb),a[f]=d.cross(eb,tb,new d),f++}let h=0;for(u=0;u<o;u++)s[u].indexOffset+=h,h+=s[u].count;f=0;let A;for(u=0;u<r;u+=3){A=s[t[u]];let m=A.indexOffset+A.currentCount;c[m]=f,A.currentCount++,A=s[t[u+1]],m=A.indexOffset+A.currentCount,c[m]=f,A.currentCount++,A=s[t[u+2]],m=A.indexOffset+A.currentCount,c[m]=f,A.currentCount++,f++}let g=new Float32Array(o*3);for(u=0;u<o;u++){let m=u*3;if(A=s[u],d.clone(d.ZERO,Yf),A.count>0){for(f=0;f<A.count;f++)d.add(Yf,a[c[A.indexOffset+f]],Yf);d.equalsEpsilon(d.ZERO,Yf,D.EPSILON10)&&d.clone(a[c[A.indexOffset]],Yf)}d.equalsEpsilon(d.ZERO,Yf,D.EPSILON10)&&(Yf.z=1),d.normalize(Yf,Yf),g[m]=Yf.x,g[m+1]=Yf.y,g[m+2]=Yf.z}return e.attributes.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g}),e};var qRe=new d,gie=new d,KRe=new d;ll.computeTangentAndBitangent=function(e){let t=e.attributes,n=e.indices,i=e.attributes.position.values,o=e.attributes.normal.values,r=e.attributes.st.values,s=e.attributes.position.values.length/3,a=n.length,c=new Array(s*3),u;for(u=0;u<c.length;u++)c[u]=0;let f,h,A;for(u=0;u<a;u+=3){let _=n[u],y=n[u+1],C=n[u+2];f=_*3,h=y*3,A=C*3;let E=_*2,I=y*2,b=C*2,S=i[f],B=i[f+1],v=i[f+2],P=r[E],M=r[E+1],L=r[I+1]-M,p=r[b+1]-M,x=1/((r[I]-P)*p-(r[b]-P)*L),T=(p*(i[h]-S)-L*(i[A]-S))*x,w=(p*(i[h+1]-B)-L*(i[A+1]-B))*x,R=(p*(i[h+2]-v)-L*(i[A+2]-v))*x;c[f]+=T,c[f+1]+=w,c[f+2]+=R,c[h]+=T,c[h+1]+=w,c[h+2]+=R,c[A]+=T,c[A+1]+=w,c[A+2]+=R}let g=new Float32Array(s*3),m=new Float32Array(s*3);for(u=0;u<s;u++){f=u*3,h=f+1,A=f+2;let _=d.fromArray(o,f,qRe),y=d.fromArray(c,f,KRe),C=d.dot(_,y);d.multiplyByScalar(_,C,gie),d.normalize(d.subtract(y,gie,y),y),g[f]=y.x,g[h]=y.y,g[A]=y.z,d.normalize(d.cross(_,y,y),y),m[f]=y.x,m[h]=y.y,m[A]=y.z}return e.attributes.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g}),e.attributes.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m}),e};var zB=new U,lh=new d,_ie=new d,yie=new d,DG=new U;ll.compressVertices=function(e){let t=e.attributes.extrudeDirection,n,i;if(l(t)){let B=t.values;i=B.length/3;let v=new Float32Array(i*2),P=0;for(n=0;n<i;++n){if(d.fromArray(B,n*3,lh),d.equals(lh,d.ZERO)){P+=2;continue}DG=On.octEncodeInRange(lh,65535,DG),v[P++]=DG.x,v[P++]=DG.y}return e.attributes.compressedAttributes=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:v}),delete e.attributes.extrudeDirection,e}let o=e.attributes.normal,r=e.attributes.st,s=l(o),a=l(r);if(!s&&!a)return e;let c=e.attributes.tangent,u=e.attributes.bitangent,f=l(c),h=l(u),A,g,m,_;s&&(A=o.values),a&&(g=r.values),f&&(m=c.values),h&&(_=u.values),i=(s?A.length:g.length)/(s?3:2);let E=i,I=a&&s?2:1;I+=f||h?1:0,E*=I;let b=new Float32Array(E),S=0;for(n=0;n<i;++n){a&&(U.fromArray(g,n*2,zB),b[S++]=On.compressTextureCoordinates(zB));let B=n*3;s&&l(m)&&l(_)?(d.fromArray(A,B,lh),d.fromArray(m,B,_ie),d.fromArray(_,B,yie),On.octPack(lh,_ie,yie,zB),b[S++]=zB.x,b[S++]=zB.y):(s&&(d.fromArray(A,B,lh),b[S++]=On.octEncodeFloat(lh)),f&&(d.fromArray(m,B,lh),b[S++]=On.octEncodeFloat(lh)),h&&(d.fromArray(_,B,lh),b[S++]=On.octEncodeFloat(lh)))}return e.attributes.compressedAttributes=new De({componentDatatype:q.FLOAT,componentsPerAttribute:I,values:b}),s&&delete e.attributes.normal,a&&delete e.attributes.st,h&&delete e.attributes.bitangent,f&&delete e.attributes.tangent,e};function XRe(e){if(l(e.indices))return e;let t=ht.computeNumberOfVertices(e),n=Oe.createTypedArray(t,t);for(let i=0;i<t;++i)n[i]=i;return e.indices=n,e}function JRe(e){let t=ht.computeNumberOfVertices(e),n=Oe.createTypedArray(t,(t-2)*3);n[0]=1,n[1]=0,n[2]=2;let i=3;for(let o=3;o<t;++o)n[i++]=o-1,n[i++]=0,n[i++]=o;return e.indices=n,e.primitiveType=Me.TRIANGLES,e}function ZRe(e){let t=ht.computeNumberOfVertices(e),n=Oe.createTypedArray(t,(t-2)*3);n[0]=0,n[1]=1,n[2]=2,t>3&&(n[3]=0,n[4]=2,n[5]=3);let i=6;for(let o=3;o<t-1;o+=2)n[i++]=o,n[i++]=o-1,n[i++]=o+1,o+2<t&&(n[i++]=o,n[i++]=o+1,n[i++]=o+2);return e.indices=n,e.primitiveType=Me.TRIANGLES,e}function $Re(e){if(l(e.indices))return e;let t=ht.computeNumberOfVertices(e),n=Oe.createTypedArray(t,t);for(let i=0;i<t;++i)n[i]=i;return e.indices=n,e}function eMe(e){let t=ht.computeNumberOfVertices(e),n=Oe.createTypedArray(t,(t-1)*2);n[0]=0,n[1]=1;let i=2;for(let o=2;o<t;++o)n[i++]=o-1,n[i++]=o;return e.indices=n,e.primitiveType=Me.LINES,e}function tMe(e){let t=ht.computeNumberOfVertices(e),n=Oe.createTypedArray(t,t*2);n[0]=0,n[1]=1;let i=2;for(let o=2;o<t;++o)n[i++]=o-1,n[i++]=o;return n[i++]=t-1,n[i]=0,e.indices=n,e.primitiveType=Me.LINES,e}function nMe(e){switch(e.primitiveType){case Me.TRIANGLE_FAN:return JRe(e);case Me.TRIANGLE_STRIP:return ZRe(e);case Me.TRIANGLES:return XRe(e);case Me.LINE_STRIP:return eMe(e);case Me.LINE_LOOP:return tMe(e);case Me.LINES:return $Re(e)}return e}function x_(e,t){Math.abs(e.y)<D.EPSILON6&&(t?e.y=-D.EPSILON6:e.y=D.EPSILON6)}function iMe(e,t,n){if(e.y!==0&&t.y!==0&&n.y!==0){x_(e,e.y<0),x_(t,t.y<0),x_(n,n.y<0);return}let i=Math.abs(e.y),o=Math.abs(t.y),r=Math.abs(n.y),s;i>o?i>r?s=D.sign(e.y):s=D.sign(n.y):o>r?s=D.sign(t.y):s=D.sign(n.y);let a=s<0;x_(e,a),x_(t,a),x_(n,a)}var Cie=new d;function qf(e,t,n,i){d.add(e,d.multiplyByScalar(d.subtract(t,e,Cie),e.y/(e.y-t.y),Cie),n),d.clone(n,i),x_(n,!0),x_(i,!1)}var eE=new d,tE=new d,nE=new d,iE=new d,B6={positions:new Array(7),indices:new Array(9)};function oMe(e,t,n){if(e.x>=0||t.x>=0||n.x>=0)return;iMe(e,t,n);let i=e.y<0,o=t.y<0,r=n.y<0,s=0;s+=i?1:0,s+=o?1:0,s+=r?1:0;let a=B6.indices;s===1?(a[1]=3,a[2]=4,a[5]=6,a[7]=6,a[8]=5,i?(qf(e,t,eE,nE),qf(e,n,tE,iE),a[0]=0,a[3]=1,a[4]=2,a[6]=1):o?(qf(t,n,eE,nE),qf(t,e,tE,iE),a[0]=1,a[3]=2,a[4]=0,a[6]=2):r&&(qf(n,e,eE,nE),qf(n,t,tE,iE),a[0]=2,a[3]=0,a[4]=1,a[6]=0)):s===2&&(a[2]=4,a[4]=4,a[5]=3,a[7]=5,a[8]=6,i?o?r||(qf(n,e,eE,nE),qf(n,t,tE,iE),a[0]=0,a[1]=1,a[3]=0,a[6]=2):(qf(t,n,eE,nE),qf(t,e,tE,iE),a[0]=2,a[1]=0,a[3]=2,a[6]=1):(qf(e,t,eE,nE),qf(e,n,tE,iE),a[0]=1,a[1]=2,a[3]=1,a[6]=0));let c=B6.positions;return c[0]=e,c[1]=t,c[2]=n,c.length=3,(s===1||s===2)&&(c[3]=eE,c[4]=tE,c[5]=nE,c[6]=iE,c.length=7),B6}function Eie(e,t){let n=e.attributes;if(n.position.values.length===0)return;for(let o in n)if(n.hasOwnProperty(o)&&l(n[o])&&l(n[o].values)){let r=n[o];r.values=q.createTypedArray(r.componentDatatype,r.values)}let i=ht.computeNumberOfVertices(e);return e.indices=Oe.createTypedArray(i,e.indices),t&&(e.boundingSphere=le.fromVertices(n.position.values)),e}function ib(e){let t=e.attributes,n={};for(let i in t)if(t.hasOwnProperty(i)&&l(t[i])&&l(t[i].values)){let o=t[i];n[i]=new De({componentDatatype:o.componentDatatype,componentsPerAttribute:o.componentsPerAttribute,normalize:o.normalize,values:[]})}return new ht({attributes:n,indices:[],primitiveType:e.primitiveType})}function R6(e,t,n){let i=l(e.geometry.boundingSphere);t=Eie(t,i),n=Eie(n,i),l(n)&&!l(t)?e.geometry=n:!l(n)&&l(t)?e.geometry=t:(e.westHemisphereGeometry=t,e.eastHemisphereGeometry=n,e.geometry=void 0)}function M6(e,t){let n=new e,i=new e,o=new e;return function(r,s,a,c,u,f,h,A){let g=e.fromArray(u,r*t,n),m=e.fromArray(u,s*t,i),_=e.fromArray(u,a*t,o);e.multiplyByScalar(g,c.x,g),e.multiplyByScalar(m,c.y,m),e.multiplyByScalar(_,c.z,_);let y=e.add(g,m,g);e.add(y,_,y),A&&e.normalize(y,y),e.pack(y,f,h*t)}}var rMe=M6(se,4),RG=M6(d,3),wie=M6(U,2),sMe=function(e,t,n,i,o,r,s){let a=o[e]*i.x,c=o[t]*i.y,u=o[n]*i.z;r[s]=a+c+u>D.EPSILON6?1:0},VB=new d,D6=new d,v6=new d,aMe=new d;function vG(e,t,n,i,o,r,s,a,c,u,f,h,A,g,m,_){if(!l(r)&&!l(s)&&!l(a)&&!l(c)&&!l(u)&&g===0)return;let y=d.fromArray(o,e*3,VB),C=d.fromArray(o,t*3,D6),E=d.fromArray(o,n*3,v6),I=JC(i,y,C,E,aMe);if(l(I)){if(l(r)&&RG(e,t,n,I,r,h.normal.values,_,!0),l(u)){let b=d.fromArray(u,e*3,VB),S=d.fromArray(u,t*3,D6),B=d.fromArray(u,n*3,v6);d.multiplyByScalar(b,I.x,b),d.multiplyByScalar(S,I.y,S),d.multiplyByScalar(B,I.z,B);let v;!d.equals(b,d.ZERO)||!d.equals(S,d.ZERO)||!d.equals(B,d.ZERO)?(v=d.add(b,S,b),d.add(v,B,v),d.normalize(v,v)):(v=VB,v.x=0,v.y=0,v.z=0),d.pack(v,h.extrudeDirection.values,_*3)}if(l(f)&&sMe(e,t,n,I,f,h.applyOffset.values,_),l(s)&&RG(e,t,n,I,s,h.tangent.values,_,!0),l(a)&&RG(e,t,n,I,a,h.bitangent.values,_,!0),l(c)&&wie(e,t,n,I,c,h.st.values,_),g>0)for(let b=0;b<g;b++){let S=A[b];cMe(e,t,n,I,_,m[S],h[S])}}}function cMe(e,t,n,i,o,r,s){let a=r.componentsPerAttribute,c=r.values,u=s.values;switch(a){case 4:rMe(e,t,n,i,c,u,o,!1);break;case 3:RG(e,t,n,i,c,u,o,!1);break;case 2:wie(e,t,n,i,c,u,o,!1);break;default:u[o]=c[e]*i.x+c[t]*i.y+c[n]*i.z}}function Fm(e,t,n,i,o,r){let s=e.position.values.length/3;if(o!==-1){let a=i[o],c=n[a];return c===-1?(n[a]=s,e.position.values.push(r.x,r.y,r.z),t.push(s),s):(t.push(c),c)}return e.position.values.push(r.x,r.y,r.z),t.push(s),s}var lMe={position:!0,normal:!0,bitangent:!0,tangent:!0,st:!0,extrudeDirection:!0,applyOffset:!0};function Iie(e){let t=e.geometry,n=t.attributes,i=n.position.values,o=l(n.normal)?n.normal.values:void 0,r=l(n.bitangent)?n.bitangent.values:void 0,s=l(n.tangent)?n.tangent.values:void 0,a=l(n.st)?n.st.values:void 0,c=l(n.extrudeDirection)?n.extrudeDirection.values:void 0,u=l(n.applyOffset)?n.applyOffset.values:void 0,f=t.indices,h=[];for(let v in n)n.hasOwnProperty(v)&&!lMe[v]&&l(n[v])&&h.push(v);let A=h.length,g=ib(t),m=ib(t),_,y,C,E,I,b=[];b.length=i.length/3;let S=[];for(S.length=i.length/3,I=0;I<b.length;++I)b[I]=-1,S[I]=-1;let B=f.length;for(I=0;I<B;I+=3){let v=f[I],P=f[I+1],M=f[I+2],L=d.fromArray(i,v*3),p=d.fromArray(i,P*3),x=d.fromArray(i,M*3),T=oMe(L,p,x);if(l(T)&&T.positions.length>3){let w=T.positions,R=T.indices,O=R.length;for(let k=0;k<O;++k){let Q=R[k],z=w[Q];z.y<0?(_=m.attributes,y=m.indices,C=b):(_=g.attributes,y=g.indices,C=S),E=Fm(_,y,C,f,Q<3?I+Q:-1,z),vG(v,P,M,z,i,o,s,r,a,c,u,_,h,A,n,E)}}else l(T)&&(L=T.positions[0],p=T.positions[1],x=T.positions[2]),L.y<0?(_=m.attributes,y=m.indices,C=b):(_=g.attributes,y=g.indices,C=S),E=Fm(_,y,C,f,I,L),vG(v,P,M,L,i,o,s,r,a,c,u,_,h,A,n,E),E=Fm(_,y,C,f,I+1,p),vG(v,P,M,p,i,o,s,r,a,c,u,_,h,A,n,E),E=Fm(_,y,C,f,I+2,x),vG(v,P,M,x,i,o,s,r,a,c,u,_,h,A,n,E)}R6(e,m,g)}var Bie=mn.fromPointNormal(d.ZERO,d.UNIT_Y),uMe=new d,fMe=new d;function nb(e,t,n,i,o,r,s){if(!l(s))return;let a=d.fromArray(i,e*3,VB);d.equalsEpsilon(a,n,D.EPSILON10)?r.applyOffset.values[o]=s[e]:r.applyOffset.values[o]=s[t]}function xie(e){let t=e.geometry,n=t.attributes,i=n.position.values,o=l(n.applyOffset)?n.applyOffset.values:void 0,r=t.indices,s=ib(t),a=ib(t),c,u=r.length,f=[];f.length=i.length/3;let h=[];for(h.length=i.length/3,c=0;c<f.length;++c)f[c]=-1,h[c]=-1;for(c=0;c<u;c+=2){let A=r[c],g=r[c+1],m=d.fromArray(i,A*3,VB),_=d.fromArray(i,g*3,D6),y;Math.abs(m.y)<D.EPSILON6&&(m.y<0?m.y=-D.EPSILON6:m.y=D.EPSILON6),Math.abs(_.y)<D.EPSILON6&&(_.y<0?_.y=-D.EPSILON6:_.y=D.EPSILON6);let C=s.attributes,E=s.indices,I=h,b=a.attributes,S=a.indices,B=f,v=hi.lineSegmentPlane(m,_,Bie,v6);if(l(v)){let P=d.multiplyByScalar(d.UNIT_Y,5*D.EPSILON9,uMe);m.y<0&&(d.negate(P,P),C=a.attributes,E=a.indices,I=f,b=s.attributes,S=s.indices,B=h);let M=d.add(v,P,fMe);y=Fm(C,E,I,r,c,m),nb(A,g,m,i,y,C,o),y=Fm(C,E,I,r,-1,M),nb(A,g,M,i,y,C,o),d.negate(P,P),d.add(v,P,M),y=Fm(b,S,B,r,-1,M),nb(A,g,M,i,y,b,o),y=Fm(b,S,B,r,c+1,_),nb(A,g,_,i,y,b,o)}else{let P,M,L;m.y<0?(P=a.attributes,M=a.indices,L=f):(P=s.attributes,M=s.indices,L=h),y=Fm(P,M,L,r,c,m),nb(A,g,m,i,y,P,o),y=Fm(P,M,L,r,c+1,_),nb(A,g,_,i,y,P,o)}}R6(e,a,s)}var bie=new U,dMe=new U,Die=new d,vie=new d,P6=new d,hMe=new d,mMe=new d,AMe=new d,Tie=new se;function Sie(e){let t=e.attributes,n=t.position.values,i=t.prevPosition.values,o=t.nextPosition.values,r=n.length;for(let s=0;s<r;s+=3){let a=d.unpack(n,s,Die);if(a.x>0)continue;let c=d.unpack(i,s,vie);(a.y<0&&c.y>0||a.y>0&&c.y<0)&&(s-3>0?(i[s]=n[s-3],i[s+1]=n[s-2],i[s+2]=n[s-1]):d.pack(a,i,s));let u=d.unpack(o,s,P6);(a.y<0&&u.y>0||a.y>0&&u.y<0)&&(s+3<r?(o[s]=n[s+3],o[s+1]=n[s+4],o[s+2]=n[s+5]):d.pack(a,o,s))}}var pMe=5*D.EPSILON9,PG=D.EPSILON6;function gMe(e){let t=e.geometry,n=t.attributes,i=n.position.values,o=n.prevPosition.values,r=n.nextPosition.values,s=n.expandAndWidth.values,a=l(n.st)?n.st.values:void 0,c=l(n.color)?n.color.values:void 0,u=ib(t),f=ib(t),h,A,g,m=!1,_=i.length/3;for(h=0;h<_;h+=4){let y=h,C=h+2,E=d.fromArray(i,y*3,Die),I=d.fromArray(i,C*3,vie);if(Math.abs(E.y)<PG)for(E.y=PG*(I.y<0?-1:1),i[h*3+1]=E.y,i[(h+1)*3+1]=E.y,A=y*3;A<y*3+12;A+=3)o[A]=i[h*3],o[A+1]=i[h*3+1],o[A+2]=i[h*3+2];if(Math.abs(I.y)<PG)for(I.y=PG*(E.y<0?-1:1),i[(h+2)*3+1]=I.y,i[(h+3)*3+1]=I.y,A=y*3;A<y*3+12;A+=3)r[A]=i[(h+2)*3],r[A+1]=i[(h+2)*3+1],r[A+2]=i[(h+2)*3+2];let b=u.attributes,S=u.indices,B=f.attributes,v=f.indices,P=hi.lineSegmentPlane(E,I,Bie,hMe);if(l(P)){m=!0;let M=d.multiplyByScalar(d.UNIT_Y,pMe,mMe);E.y<0&&(d.negate(M,M),b=f.attributes,S=f.indices,B=u.attributes,v=u.indices);let L=d.add(P,M,AMe);b.position.values.push(E.x,E.y,E.z,E.x,E.y,E.z),b.position.values.push(L.x,L.y,L.z),b.position.values.push(L.x,L.y,L.z),b.prevPosition.values.push(o[y*3],o[y*3+1],o[y*3+2]),b.prevPosition.values.push(o[y*3+3],o[y*3+4],o[y*3+5]),b.prevPosition.values.push(E.x,E.y,E.z,E.x,E.y,E.z),b.nextPosition.values.push(L.x,L.y,L.z),b.nextPosition.values.push(L.x,L.y,L.z),b.nextPosition.values.push(L.x,L.y,L.z),b.nextPosition.values.push(L.x,L.y,L.z),d.negate(M,M),d.add(P,M,L),B.position.values.push(L.x,L.y,L.z),B.position.values.push(L.x,L.y,L.z),B.position.values.push(I.x,I.y,I.z,I.x,I.y,I.z),B.prevPosition.values.push(L.x,L.y,L.z),B.prevPosition.values.push(L.x,L.y,L.z),B.prevPosition.values.push(L.x,L.y,L.z),B.prevPosition.values.push(L.x,L.y,L.z),B.nextPosition.values.push(I.x,I.y,I.z,I.x,I.y,I.z),B.nextPosition.values.push(r[C*3],r[C*3+1],r[C*3+2]),B.nextPosition.values.push(r[C*3+3],r[C*3+4],r[C*3+5]);let p=U.fromArray(s,y*2,bie),x=Math.abs(p.y);b.expandAndWidth.values.push(-1,x,1,x),b.expandAndWidth.values.push(-1,-x,1,-x),B.expandAndWidth.values.push(-1,x,1,x),B.expandAndWidth.values.push(-1,-x,1,-x);let T=d.magnitudeSquared(d.subtract(P,E,P6));if(T/=d.magnitudeSquared(d.subtract(I,E,P6)),l(c)){let w=se.fromArray(c,y*4,Tie),R=se.fromArray(c,C*4,Tie),O=D.lerp(w.x,R.x,T),k=D.lerp(w.y,R.y,T),Q=D.lerp(w.z,R.z,T),z=D.lerp(w.w,R.w,T);for(A=y*4;A<y*4+8;++A)b.color.values.push(c[A]);for(b.color.values.push(O,k,Q,z),b.color.values.push(O,k,Q,z),B.color.values.push(O,k,Q,z),B.color.values.push(O,k,Q,z),A=C*4;A<C*4+8;++A)B.color.values.push(c[A])}if(l(a)){let w=U.fromArray(a,y*2,bie),R=U.fromArray(a,(h+3)*2,dMe),O=D.lerp(w.x,R.x,T);for(A=y*2;A<y*2+4;++A)b.st.values.push(a[A]);for(b.st.values.push(O,w.y),b.st.values.push(O,R.y),B.st.values.push(O,w.y),B.st.values.push(O,R.y),A=C*2;A<C*2+4;++A)B.st.values.push(a[A])}g=b.position.values.length/3-4,S.push(g,g+2,g+1),S.push(g+1,g+2,g+3),g=B.position.values.length/3-4,v.push(g,g+2,g+1),v.push(g+1,g+2,g+3)}else{let M,L;for(E.y<0?(M=f.attributes,L=f.indices):(M=u.attributes,L=u.indices),M.position.values.push(E.x,E.y,E.z),M.position.values.push(E.x,E.y,E.z),M.position.values.push(I.x,I.y,I.z),M.position.values.push(I.x,I.y,I.z),A=h*3;A<h*3+12;++A)M.prevPosition.values.push(o[A]),M.nextPosition.values.push(r[A]);for(A=h*2;A<h*2+8;++A)M.expandAndWidth.values.push(s[A]),l(a)&&M.st.values.push(a[A]);if(l(c))for(A=h*4;A<h*4+16;++A)M.color.values.push(c[A]);g=M.position.values.length/3-4,L.push(g,g+2,g+1),L.push(g+1,g+2,g+3)}}m&&(Sie(f),Sie(u)),R6(e,f,u)}ll.splitLongitude=function(e){let t=e.geometry,n=t.boundingSphere;if(l(n)&&(n.center.x-n.radius>0||le.intersectPlane(n,mn.ORIGIN_ZX_PLANE)!==tn.INTERSECTING))return e;if(t.geometryType!==jf.NONE)switch(t.geometryType){case jf.POLYLINES:gMe(e);break;case jf.TRIANGLES:Iie(e);break;case jf.LINES:xie(e);break}else nMe(t),t.primitiveType===Me.TRIANGLES?Iie(e):t.primitiveType===Me.LINES&&xie(e);return e};var Vn=ll;var Bi={UNSIGNED_BYTE:ee.UNSIGNED_BYTE,UNSIGNED_SHORT:ee.UNSIGNED_SHORT,UNSIGNED_INT:ee.UNSIGNED_INT,FLOAT:ee.FLOAT,HALF_FLOAT:ee.HALF_FLOAT_OES,UNSIGNED_INT_24_8:ee.UNSIGNED_INT_24_8,UNSIGNED_SHORT_4_4_4_4:ee.UNSIGNED_SHORT_4_4_4_4,UNSIGNED_SHORT_5_5_5_1:ee.UNSIGNED_SHORT_5_5_5_1,UNSIGNED_SHORT_5_6_5:ee.UNSIGNED_SHORT_5_6_5};Bi.toWebGLConstant=function(e,t){switch(e){case Bi.UNSIGNED_BYTE:return ee.UNSIGNED_BYTE;case Bi.UNSIGNED_SHORT:return ee.UNSIGNED_SHORT;case Bi.UNSIGNED_INT:return ee.UNSIGNED_INT;case Bi.FLOAT:return ee.FLOAT;case Bi.HALF_FLOAT:return t.webgl2?ee.HALF_FLOAT:ee.HALF_FLOAT_OES;case Bi.UNSIGNED_INT_24_8:return ee.UNSIGNED_INT_24_8;case Bi.UNSIGNED_SHORT_4_4_4_4:return ee.UNSIGNED_SHORT_4_4_4_4;case Bi.UNSIGNED_SHORT_5_5_5_1:return ee.UNSIGNED_SHORT_5_5_5_1;case Bi.UNSIGNED_SHORT_5_6_5:return Bi.UNSIGNED_SHORT_5_6_5}};Bi.isPacked=function(e){return e===Bi.UNSIGNED_INT_24_8||e===Bi.UNSIGNED_SHORT_4_4_4_4||e===Bi.UNSIGNED_SHORT_5_5_5_1||e===Bi.UNSIGNED_SHORT_5_6_5};Bi.sizeInBytes=function(e){switch(e){case Bi.UNSIGNED_BYTE:return 1;case Bi.UNSIGNED_SHORT:case Bi.UNSIGNED_SHORT_4_4_4_4:case Bi.UNSIGNED_SHORT_5_5_5_1:case Bi.UNSIGNED_SHORT_5_6_5:case Bi.HALF_FLOAT:return 2;case Bi.UNSIGNED_INT:case Bi.FLOAT:case Bi.UNSIGNED_INT_24_8:return 4}};Bi.validate=function(e){return e===Bi.UNSIGNED_BYTE||e===Bi.UNSIGNED_SHORT||e===Bi.UNSIGNED_INT||e===Bi.FLOAT||e===Bi.HALF_FLOAT||e===Bi.UNSIGNED_INT_24_8||e===Bi.UNSIGNED_SHORT_4_4_4_4||e===Bi.UNSIGNED_SHORT_5_5_5_1||e===Bi.UNSIGNED_SHORT_5_6_5};Bi.getTypedArrayConstructor=function(e){let t=Bi.sizeInBytes(e);return t===Uint8Array.BYTES_PER_ELEMENT?Uint8Array:t===Uint16Array.BYTES_PER_ELEMENT?Uint16Array:t===Float32Array.BYTES_PER_ELEMENT&&e===Bi.FLOAT?Float32Array:Uint32Array};var Ve=Object.freeze(Bi);var Je={DEPTH_COMPONENT:ee.DEPTH_COMPONENT,DEPTH_STENCIL:ee.DEPTH_STENCIL,ALPHA:ee.ALPHA,RED:ee.RED,RG:ee.RG,RGB:ee.RGB,RGBA:ee.RGBA,RED_INTEGER:ee.RED_INTEGER,RG_INTEGER:ee.RG_INTEGER,RGB_INTEGER:ee.RGB_INTEGER,RGBA_INTEGER:ee.RGBA_INTEGER,LUMINANCE:ee.LUMINANCE,LUMINANCE_ALPHA:ee.LUMINANCE_ALPHA,RGB_DXT1:ee.COMPRESSED_RGB_S3TC_DXT1_EXT,RGBA_DXT1:ee.COMPRESSED_RGBA_S3TC_DXT1_EXT,RGBA_DXT3:ee.COMPRESSED_RGBA_S3TC_DXT3_EXT,RGBA_DXT5:ee.COMPRESSED_RGBA_S3TC_DXT5_EXT,RGB_PVRTC_4BPPV1:ee.COMPRESSED_RGB_PVRTC_4BPPV1_IMG,RGB_PVRTC_2BPPV1:ee.COMPRESSED_RGB_PVRTC_2BPPV1_IMG,RGBA_PVRTC_4BPPV1:ee.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,RGBA_PVRTC_2BPPV1:ee.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,RGBA_ASTC:ee.COMPRESSED_RGBA_ASTC_4x4_WEBGL,RGB_ETC1:ee.COMPRESSED_RGB_ETC1_WEBGL,RGB8_ETC2:ee.COMPRESSED_RGB8_ETC2,RGBA8_ETC2_EAC:ee.COMPRESSED_RGBA8_ETC2_EAC,RGBA_BC7:ee.COMPRESSED_RGBA_BPTC_UNORM};Je.componentsLength=function(e){switch(e){case Je.RGB:case Je.RGB_INTEGER:return 3;case Je.RGBA:case Je.RGBA_INTEGER:return 4;case Je.LUMINANCE_ALPHA:case Je.RG:case Je.RG_INTEGER:return 2;case Je.ALPHA:case Je.RED:case Je.RED_INTEGER:case Je.LUMINANCE:return 1;default:return 1}};Je.validate=function(e){return e===Je.DEPTH_COMPONENT||e===Je.DEPTH_STENCIL||e===Je.ALPHA||e===Je.RED||e===Je.RG||e===Je.RGB||e===Je.RGBA||e===Je.RED_INTEGER||e===Je.RG_INTEGER||e===Je.RGB_INTEGER||e===Je.RGBA_INTEGER||e===Je.LUMINANCE||e===Je.LUMINANCE_ALPHA||e===Je.RGB_DXT1||e===Je.RGBA_DXT1||e===Je.RGBA_DXT3||e===Je.RGBA_DXT5||e===Je.RGB_PVRTC_4BPPV1||e===Je.RGB_PVRTC_2BPPV1||e===Je.RGBA_PVRTC_4BPPV1||e===Je.RGBA_PVRTC_2BPPV1||e===Je.RGBA_ASTC||e===Je.RGB_ETC1||e===Je.RGB8_ETC2||e===Je.RGBA8_ETC2_EAC||e===Je.RGBA_BC7};Je.isColorFormat=function(e){return e===Je.RED||e===Je.ALPHA||e===Je.RGB||e===Je.RGBA||e===Je.LUMINANCE||e===Je.LUMINANCE_ALPHA};Je.isDepthFormat=function(e){return e===Je.DEPTH_COMPONENT||e===Je.DEPTH_STENCIL};Je.isCompressedFormat=function(e){return e===Je.RGB_DXT1||e===Je.RGBA_DXT1||e===Je.RGBA_DXT3||e===Je.RGBA_DXT5||e===Je.RGB_PVRTC_4BPPV1||e===Je.RGB_PVRTC_2BPPV1||e===Je.RGBA_PVRTC_4BPPV1||e===Je.RGBA_PVRTC_2BPPV1||e===Je.RGBA_ASTC||e===Je.RGB_ETC1||e===Je.RGB8_ETC2||e===Je.RGBA8_ETC2_EAC||e===Je.RGBA_BC7};Je.isDXTFormat=function(e){return e===Je.RGB_DXT1||e===Je.RGBA_DXT1||e===Je.RGBA_DXT3||e===Je.RGBA_DXT5};Je.isPVRTCFormat=function(e){return e===Je.RGB_PVRTC_4BPPV1||e===Je.RGB_PVRTC_2BPPV1||e===Je.RGBA_PVRTC_4BPPV1||e===Je.RGBA_PVRTC_2BPPV1};Je.isASTCFormat=function(e){return e===Je.RGBA_ASTC};Je.isETC1Format=function(e){return e===Je.RGB_ETC1};Je.isETC2Format=function(e){return e===Je.RGB8_ETC2||e===Je.RGBA8_ETC2_EAC};Je.isBC7Format=function(e){return e===Je.RGBA_BC7};Je.compressedTextureSizeInBytes=function(e,t,n){switch(e){case Je.RGB_DXT1:case Je.RGBA_DXT1:case Je.RGB_ETC1:case Je.RGB8_ETC2:return Math.floor((t+3)/4)*Math.floor((n+3)/4)*8;case Je.RGBA_DXT3:case Je.RGBA_DXT5:case Je.RGBA_ASTC:case Je.RGBA8_ETC2_EAC:return Math.floor((t+3)/4)*Math.floor((n+3)/4)*16;case Je.RGB_PVRTC_4BPPV1:case Je.RGBA_PVRTC_4BPPV1:return Math.floor((Math.max(t,8)*Math.max(n,8)*4+7)/8);case Je.RGB_PVRTC_2BPPV1:case Je.RGBA_PVRTC_2BPPV1:return Math.floor((Math.max(t,16)*Math.max(n,8)*2+7)/8);case Je.RGBA_BC7:return Math.ceil(t/4)*Math.ceil(n/4)*16;default:return 0}};Je.textureSizeInBytes=function(e,t,n,i){let o=Je.componentsLength(e);return Ve.isPacked(t)&&(o=1),o*Ve.sizeInBytes(t)*n*i};Je.texture3DSizeInBytes=function(e,t,n,i,o){let r=Je.componentsLength(e);return Ve.isPacked(t)&&(r=1),r*Ve.sizeInBytes(t)*n*i*o};Je.alignmentInBytes=function(e,t,n){let i=Je.textureSizeInBytes(e,t,n,1)%4;return i===0?4:i===2?2:1};Je.createTypedArray=function(e,t,n,i){let o=Ve.getTypedArrayConstructor(t),r=Je.componentsLength(e)*n*i;return new o(r)};Je.flipY=function(e,t,n,i,o){if(o===1)return e;let r=Je.createTypedArray(t,n,i,o),s=Je.componentsLength(t),a=i*s;for(let c=0;c<o;++c){let u=c*i*s,f=(o-c-1)*i*s;for(let h=0;h<a;++h)r[f+h]=e[u+h]}return r};Je.toInternalFormat=function(e,t,n){if(!n.webgl2)return e;if(e===Je.DEPTH_STENCIL)return ee.DEPTH24_STENCIL8;if(e===Je.DEPTH_COMPONENT){if(t===Ve.UNSIGNED_SHORT)return ee.DEPTH_COMPONENT16;if(t===Ve.UNSIGNED_INT)return ee.DEPTH_COMPONENT24}if(t===Ve.FLOAT)switch(e){case Je.RGBA:return ee.RGBA32F;case Je.RGB:return ee.RGB32F;case Je.RG:return ee.RG32F;case Je.RED:return ee.R32F}if(t===Ve.HALF_FLOAT)switch(e){case Je.RGBA:return ee.RGBA16F;case Je.RGB:return ee.RGB16F;case Je.RG:return ee.RG16F;case Je.RED:return ee.R16F}if(t===Ve.UNSIGNED_BYTE)switch(e){case Je.RGBA:return ee.RGBA8;case Je.RGB:return ee.RGB8;case Je.RG:return ee.RG8;case Je.RED:return ee.R8}if(t===Ve.INT)switch(e){case Je.RGBA_INTEGER:return ee.RGBA32I;case Je.RGB_INTEGER:return ee.RGB32I;case Je.RG_INTEGER:return ee.RG32I;case Je.RED_INTEGER:return ee.R32I}if(t===Ve.UNSIGNED_INT)switch(e){case Je.RGBA_INTEGER:return ee.RGBA32UI;case Je.RGB_INTEGER:return ee.RGB32UI;case Je.RG_INTEGER:return ee.RG32UI;case Je.RED_INTEGER:return ee.R32UI}return e};var $e=Object.freeze(Je);var NG={STREAM_DRAW:ee.STREAM_DRAW,STATIC_DRAW:ee.STATIC_DRAW,DYNAMIC_DRAW:ee.DYNAMIC_DRAW,validate:function(e){return e===NG.STREAM_DRAW||e===NG.STATIC_DRAW||e===NG.DYNAMIC_DRAW}},Qe=Object.freeze(NG);var Qr={_maximumCombinedTextureImageUnits:0,_maximumCubeMapSize:0,_maximumFragmentUniformVectors:0,_maximumTextureImageUnits:0,_maximumRenderbufferSize:0,_maximumTextureSize:0,_maximumVaryingVectors:0,_maximumVertexAttributes:0,_maximumVertexTextureImageUnits:0,_maximumVertexUniformVectors:0,_minimumAliasedLineWidth:0,_maximumAliasedLineWidth:0,_minimumAliasedPointSize:0,_maximumAliasedPointSize:0,_maximumViewportWidth:0,_maximumViewportHeight:0,_maximumTextureFilterAnisotropy:0,_maximumDrawBuffers:0,_maximumColorAttachments:0,_maximumSamples:0,_highpFloatSupported:!1,_highpIntSupported:!1};Object.defineProperties(Qr,{maximumCombinedTextureImageUnits:{get:function(){return Qr._maximumCombinedTextureImageUnits}},maximumCubeMapSize:{get:function(){return Qr._maximumCubeMapSize}},maximumFragmentUniformVectors:{get:function(){return Qr._maximumFragmentUniformVectors}},maximumTextureImageUnits:{get:function(){return Qr._maximumTextureImageUnits}},maximumRenderbufferSize:{get:function(){return Qr._maximumRenderbufferSize}},maximumTextureSize:{get:function(){return Qr._maximumTextureSize}},maximumVaryingVectors:{get:function(){return Qr._maximumVaryingVectors}},maximumVertexAttributes:{get:function(){return Qr._maximumVertexAttributes}},maximumVertexTextureImageUnits:{get:function(){return Qr._maximumVertexTextureImageUnits}},maximumVertexUniformVectors:{get:function(){return Qr._maximumVertexUniformVectors}},minimumAliasedLineWidth:{get:function(){return Qr._minimumAliasedLineWidth}},maximumAliasedLineWidth:{get:function(){return Qr._maximumAliasedLineWidth}},minimumAliasedPointSize:{get:function(){return Qr._minimumAliasedPointSize}},maximumAliasedPointSize:{get:function(){return Qr._maximumAliasedPointSize}},maximumViewportWidth:{get:function(){return Qr._maximumViewportWidth}},maximumViewportHeight:{get:function(){return Qr._maximumViewportHeight}},maximumTextureFilterAnisotropy:{get:function(){return Qr._maximumTextureFilterAnisotropy}},maximumDrawBuffers:{get:function(){return Qr._maximumDrawBuffers}},maximumColorAttachments:{get:function(){return Qr._maximumColorAttachments}},maximumSamples:{get:function(){return Qr._maximumSamples}},highpFloatSupported:{get:function(){return Qr._highpFloatSupported}},highpIntSupported:{get:function(){return Qr._highpIntSupported}}});var Yt=Qr;function HB(e,t,n,i,o,r,s,a,c,u,f){this._context=e,this._texture=t,this._textureTarget=n,this._targetFace=i,this._pixelDatatype=s,this._internalFormat=o,this._pixelFormat=r,this._size=a,this._preMultiplyAlpha=c,this._flipY=u,this._initialized=f}Object.defineProperties(HB.prototype,{pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},_target:{get:function(){return this._targetFace}}});HB.prototype.copyFrom=function(e){let{xOffset:t=0,yOffset:n=0,source:i,skipColorSpaceConversion:o=!1}=e,{width:r,height:s}=i,a=this._context._gl,c=this._textureTarget,u=this._targetFace;a.activeTexture(a.TEXTURE0),a.bindTexture(c,this._texture);let f=i.arrayBufferView,h=this._size,A=this._pixelFormat,g=this._internalFormat,m=this._pixelDatatype,_=this._preMultiplyAlpha,y=this._flipY,C=4;l(f)&&(C=$e.alignmentInBytes(A,m,r)),a.pixelStorei(a.UNPACK_ALIGNMENT,C),o?a.pixelStorei(a.UNPACK_COLORSPACE_CONVERSION_WEBGL,a.NONE):a.pixelStorei(a.UNPACK_COLORSPACE_CONVERSION_WEBGL,a.BROWSER_DEFAULT_WEBGL);let E=!1;if(!this._initialized){let I;t===0&&n===0&&r===h&&s===h?(l(f)?(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),y&&(f=$e.flipY(f,A,m,h,h)),I=f):(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,_),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,y),I=i),E=!0):(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),I=$e.createTypedArray(A,m,h,h)),a.texImage2D(u,0,g,h,h,0,A,Ve.toWebGLConstant(m,this._context),I),this._initialized=!0}E||(l(f)?(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),y&&(f=$e.flipY(f,A,m,r,s)),a.texSubImage2D(u,0,t,n,r,s,A,Ve.toWebGLConstant(m,this._context),f)):(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,_),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,y),a.texSubImage2D(u,0,t,n,A,Ve.toWebGLConstant(m,this._context),i))),a.bindTexture(c,null)};HB.prototype.copyFromFramebuffer=function(e,t,n,i,o,r){e=e??0,t=t??0,n=n??0,i=i??0,o=o??this._size,r=r??this._size;let s=this._context._gl,a=this._textureTarget;s.activeTexture(s.TEXTURE0),s.bindTexture(a,this._texture),s.copyTexSubImage2D(this._targetFace,0,e,t,n,i,o,r),s.bindTexture(a,null),this._initialized=!0};HB.prototype.copyMipmapFromFramebuffer=function(e,t,n,i,o){e=e??0,t=t??0,n=n??this._size,i=i??this._size,o=o??0;let r=this._context._gl,s=this._textureTarget;r.activeTexture(r.TEXTURE0),r.bindTexture(s,this._texture),r.copyTexImage2D(this._targetFace,o,this._internalFormat,e,t,n,i,0),r.bindTexture(s,null),this._initialized=!0};var WB=HB;function N6(e,t,n){let i=e._gl;i.framebufferTexture2D(i.FRAMEBUFFER,t,n._target,n._texture,0)}function LG(e,t,n){let i=e._gl;i.framebufferRenderbuffer(i.FRAMEBUFFER,t,i.RENDERBUFFER,n._getRenderbuffer())}function fh(e){e=e??V.EMPTY_OBJECT;let n=e.context._gl,i=Yt.maximumColorAttachments;if(this._gl=n,this._framebuffer=n.createFramebuffer(),this._colorTextures=[],this._colorRenderbuffers=[],this._activeColorAttachments=[],this._depthTexture=void 0,this._depthRenderbuffer=void 0,this._stencilRenderbuffer=void 0,this._depthStencilTexture=void 0,this._depthStencilRenderbuffer=void 0,this.destroyAttachments=e.destroyAttachments??!0,this._bind(),l(e.colorTextures)){let o=e.colorTextures,r=this._colorTextures.length=this._activeColorAttachments.length=o.length;for(let s=0;s<r;++s){let a=o[s],c=this._gl.COLOR_ATTACHMENT0+s;N6(this,c,a),this._activeColorAttachments[s]=c,this._colorTextures[s]=a}}if(l(e.colorRenderbuffers)){let o=e.colorRenderbuffers,r=this._colorRenderbuffers.length=this._activeColorAttachments.length=o.length;for(let s=0;s<r;++s){let a=o[s],c=this._gl.COLOR_ATTACHMENT0+s;LG(this,c,a),this._activeColorAttachments[s]=c,this._colorRenderbuffers[s]=a}}if(l(e.depthTexture)){let o=e.depthTexture;N6(this,this._gl.DEPTH_ATTACHMENT,o),this._depthTexture=o}if(l(e.depthRenderbuffer)){let o=e.depthRenderbuffer;LG(this,this._gl.DEPTH_ATTACHMENT,o),this._depthRenderbuffer=o}if(l(e.stencilRenderbuffer)){let o=e.stencilRenderbuffer;LG(this,this._gl.STENCIL_ATTACHMENT,o),this._stencilRenderbuffer=o}if(l(e.depthStencilTexture)){let o=e.depthStencilTexture;N6(this,this._gl.DEPTH_STENCIL_ATTACHMENT,o),this._depthStencilTexture=o}if(l(e.depthStencilRenderbuffer)){let o=e.depthStencilRenderbuffer;LG(this,this._gl.DEPTH_STENCIL_ATTACHMENT,o),this._depthStencilRenderbuffer=o}this._unBind()}Object.defineProperties(fh.prototype,{status:{get:function(){this._bind();let e=this._gl.checkFramebufferStatus(this._gl.FRAMEBUFFER);return this._unBind(),e}},numberOfColorAttachments:{get:function(){return this._activeColorAttachments.length}},depthTexture:{get:function(){return this._depthTexture}},depthRenderbuffer:{get:function(){return this._depthRenderbuffer}},stencilRenderbuffer:{get:function(){return this._stencilRenderbuffer}},depthStencilTexture:{get:function(){return this._depthStencilTexture}},depthStencilRenderbuffer:{get:function(){return this._depthStencilRenderbuffer}},hasDepthAttachment:{get:function(){return!!(this.depthTexture||this.depthRenderbuffer||this.depthStencilTexture||this.depthStencilRenderbuffer)}}});fh.prototype._bind=function(){let e=this._gl;e.bindFramebuffer(e.FRAMEBUFFER,this._framebuffer)};fh.prototype._unBind=function(){let e=this._gl;e.bindFramebuffer(e.FRAMEBUFFER,null)};fh.prototype.bindDraw=function(){let e=this._gl;e.bindFramebuffer(e.DRAW_FRAMEBUFFER,this._framebuffer)};fh.prototype.bindRead=function(){let e=this._gl;e.bindFramebuffer(e.READ_FRAMEBUFFER,this._framebuffer)};fh.prototype._getActiveColorAttachments=function(){return this._activeColorAttachments};fh.prototype.getColorTexture=function(e){return this._colorTextures[e]};fh.prototype.getColorRenderbuffer=function(e){return this._colorRenderbuffers[e]};fh.prototype.isDestroyed=function(){return!1};fh.prototype.destroy=function(){if(this.destroyAttachments){let e=this._colorTextures;for(let n=0;n<e.length;++n){let i=e[n];l(i)&&i.destroy()}let t=this._colorRenderbuffers;for(let n=0;n<t.length;++n){let i=t[n];l(i)&&i.destroy()}this._depthTexture=this._depthTexture&&this._depthTexture.destroy(),this._depthRenderbuffer=this._depthRenderbuffer&&this._depthRenderbuffer.destroy(),this._stencilRenderbuffer=this._stencilRenderbuffer&&this._stencilRenderbuffer.destroy(),this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy()}return this._gl.deleteFramebuffer(this._framebuffer),ue(this)};var $r=fh;var OG={DONT_CARE:ee.DONT_CARE,FASTEST:ee.FASTEST,NICEST:ee.NICEST,validate:function(e){return e===OG.DONT_CARE||e===OG.FASTEST||e===OG.NICEST}},Kf=Object.freeze(OG);var FG={NEAREST:ee.NEAREST,LINEAR:ee.LINEAR};FG.validate=function(e){return e===FG.NEAREST||e===FG.LINEAR};var mi=Object.freeze(FG);var b_={NEAREST:ee.NEAREST,LINEAR:ee.LINEAR,NEAREST_MIPMAP_NEAREST:ee.NEAREST_MIPMAP_NEAREST,LINEAR_MIPMAP_NEAREST:ee.LINEAR_MIPMAP_NEAREST,NEAREST_MIPMAP_LINEAR:ee.NEAREST_MIPMAP_LINEAR,LINEAR_MIPMAP_LINEAR:ee.LINEAR_MIPMAP_LINEAR};b_.validate=function(e){return e===b_.NEAREST||e===b_.LINEAR||e===b_.NEAREST_MIPMAP_NEAREST||e===b_.LINEAR_MIPMAP_NEAREST||e===b_.NEAREST_MIPMAP_LINEAR||e===b_.LINEAR_MIPMAP_LINEAR};var Zt=Object.freeze(b_);var QG={CLAMP_TO_EDGE:ee.CLAMP_TO_EDGE,REPEAT:ee.REPEAT,MIRRORED_REPEAT:ee.MIRRORED_REPEAT,validate:function(e){return e===QG.CLAMP_TO_EDGE||e===QG.REPEAT||e===QG.MIRRORED_REPEAT}},Tn=Object.freeze(QG);function jB(e){e=e??V.EMPTY_OBJECT;let{wrapR:t=Tn.CLAMP_TO_EDGE,wrapS:n=Tn.CLAMP_TO_EDGE,wrapT:i=Tn.CLAMP_TO_EDGE,minificationFilter:o=Zt.LINEAR,magnificationFilter:r=mi.LINEAR,maximumAnisotropy:s=1}=e;this._wrapR=t,this._wrapS=n,this._wrapT=i,this._minificationFilter=o,this._magnificationFilter=r,this._maximumAnisotropy=s}Object.defineProperties(jB.prototype,{wrapR:{get:function(){return this._wrapR}},wrapS:{get:function(){return this._wrapS}},wrapT:{get:function(){return this._wrapT}},minificationFilter:{get:function(){return this._minificationFilter}},magnificationFilter:{get:function(){return this._magnificationFilter}},maximumAnisotropy:{get:function(){return this._maximumAnisotropy}}});jB.equals=function(e,t){return e===t||l(e)&&l(t)&&e._wrapR===t._wrapR&&e._wrapS===t._wrapS&&e._wrapT===t._wrapT&&e._minificationFilter===t._minificationFilter&&e._magnificationFilter===t._magnificationFilter&&e._maximumAnisotropy===t._maximumAnisotropy};jB.NEAREST=Object.freeze(new jB({wrapR:Tn.CLAMP_TO_EDGE,wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.NEAREST,magnificationFilter:mi.NEAREST}));var on=jB;function Xf(e){e=e??V.EMPTY_OBJECT;let t=e.context._gl,n=e.bufferTarget,i=e.typedArray,o=e.sizeInBytes,r=e.usage,s=l(i);s&&(o=i.byteLength);let a=t.createBuffer();t.bindBuffer(n,a),t.bufferData(n,s?i:o,r),t.bindBuffer(n,null),this._id=Xn(),this._gl=t,this._webgl2=e.context._webgl2,this._bufferTarget=n,this._sizeInBytes=o,this._usage=r,this._buffer=a,this.vertexArrayDestroyable=!0}Xf.createVertexBuffer=function(e){return new Xf({context:e.context,bufferTarget:ee.ARRAY_BUFFER,typedArray:e.typedArray,sizeInBytes:e.sizeInBytes,usage:e.usage})};Xf.createIndexBuffer=function(e){let t=e.context,n=e.indexDatatype,i=Oe.getSizeInBytes(n),o=new Xf({context:t,bufferTarget:ee.ELEMENT_ARRAY_BUFFER,typedArray:e.typedArray,sizeInBytes:e.sizeInBytes,usage:e.usage}),r=o.sizeInBytes/i;return Object.defineProperties(o,{indexDatatype:{get:function(){return n}},bytesPerIndex:{get:function(){return i}},numberOfIndices:{get:function(){return r}}}),o};Object.defineProperties(Xf.prototype,{sizeInBytes:{get:function(){return this._sizeInBytes}},usage:{get:function(){return this._usage}}});Xf.prototype._getBuffer=function(){return this._buffer};Xf.prototype.copyFromArrayView=function(e,t){t=t??0;let n=this._gl,i=this._bufferTarget;n.bindBuffer(i,this._buffer),n.bufferSubData(i,t,e),n.bindBuffer(i,null)};Xf.prototype.copyFromBuffer=function(e,t,n,i){let o=ee.COPY_READ_BUFFER,r=ee.COPY_WRITE_BUFFER,s=this._gl;s.bindBuffer(r,this._buffer),s.bindBuffer(o,e._buffer),s.copyBufferSubData(o,r,t,n,i),s.bindBuffer(r,null),s.bindBuffer(o,null)};Xf.prototype.getBufferData=function(e,t,n,i){t=t??0,n=n??0;let o=this._gl,r=ee.COPY_READ_BUFFER;o.bindBuffer(r,this._buffer),o.getBufferSubData(r,t,e,n,i),o.bindBuffer(r,null)};Xf.prototype.isDestroyed=function(){return!1};Xf.prototype.destroy=function(){return this._gl.deleteBuffer(this._buffer),ue(this)};var Ct=Xf;function _Me(e,t,n,i){let o=l(t.vertexBuffer),r=l(t.value),s=t.value?t.value.length:t.componentsPerAttribute,a={index:t.index??n,enabled:t.enabled??!0,vertexBuffer:t.vertexBuffer,value:r?t.value.slice(0):void 0,componentsPerAttribute:s,componentDatatype:t.componentDatatype??q.FLOAT,normalize:t.normalize??!1,offsetInBytes:t.offsetInBytes??0,strideInBytes:t.strideInBytes??0,instanceDivisor:t.instanceDivisor??0};if(o)a.vertexAttrib=function(c){let u=this.index;c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer._getBuffer()),c.vertexAttribPointer(u,this.componentsPerAttribute,this.componentDatatype,this.normalize,this.strideInBytes,this.offsetInBytes),c.enableVertexAttribArray(u),this.instanceDivisor>0&&(i.glVertexAttribDivisor(u,this.instanceDivisor),i._vertexAttribDivisors[u]=this.instanceDivisor,i._previousDrawInstanced=!0)},a.disableVertexAttribArray=function(c){c.disableVertexAttribArray(this.index),this.instanceDivisor>0&&i.glVertexAttribDivisor(n,0)};else{switch(a.componentsPerAttribute){case 1:a.vertexAttrib=function(c){c.vertexAttrib1fv(this.index,this.value)};break;case 2:a.vertexAttrib=function(c){c.vertexAttrib2fv(this.index,this.value)};break;case 3:a.vertexAttrib=function(c){c.vertexAttrib3fv(this.index,this.value)};break;case 4:a.vertexAttrib=function(c){c.vertexAttrib4fv(this.index,this.value)};break}a.disableVertexAttribArray=function(c){}}e.push(a)}function Rie(e,t,n){for(let i=0;i<t.length;++i){let o=t[i];o.enabled&&o.vertexAttrib(e)}l(n)&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n._getBuffer())}function ip(e){e=e??V.EMPTY_OBJECT;let t=e.context,n=t._gl,i=e.attributes,o=e.indexBuffer,r,s=[],a=1,c=!1,u=!1,f=i.length;for(r=0;r<f;++r)_Me(s,i[r],r,t);for(f=s.length,r=0;r<f;++r){let A=s[r];if(l(A.vertexBuffer)&&A.instanceDivisor===0){let g=A.strideInBytes||A.componentsPerAttribute*q.getSizeInBytes(A.componentDatatype);a=A.vertexBuffer.sizeInBytes/g;break}}for(r=0;r<f;++r)s[r].instanceDivisor>0&&(c=!0),l(s[r].value)&&(u=!0);let h;t.vertexArrayObject&&(h=t.glCreateVertexArray(),t.glBindVertexArray(h),Rie(n,s,o),t.glBindVertexArray(null)),this._numberOfVertices=a,this._hasInstancedAttributes=c,this._hasConstantAttributes=u,this._context=t,this._gl=n,this._vao=h,this._attributes=s,this._indexBuffer=o}function Pie(e){return e.values.length/e.componentsPerAttribute}function yMe(e){return q.getSizeInBytes(e.componentDatatype)*e.componentsPerAttribute}function CMe(e){let t,n,i,o=[];for(n in e)e.hasOwnProperty(n)&&l(e[n])&&l(e[n].values)&&(o.push(n),e[n].componentDatatype===q.DOUBLE&&(e[n].componentDatatype=q.FLOAT,e[n].values=q.createTypedArray(q.FLOAT,e[n].values)));let r,s=o.length;if(s>0)for(r=Pie(e[o[0]]),t=1;t<s;++t){let u=Pie(e[o[t]]);if(u!==r)throw new ce(`Each attribute list must have the same number of vertices. Attribute ${o[t]} has a different number of vertices (${u.toString()}) than attribute ${o[0]} (${r.toString()}).`)}o.sort(function(u,f){return q.getSizeInBytes(e[f].componentDatatype)-q.getSizeInBytes(e[u].componentDatatype)});let a=0,c={};for(t=0;t<s;++t)n=o[t],i=e[n],c[n]=a,a+=yMe(i);if(a>0){let u=q.getSizeInBytes(e[o[0]].componentDatatype),f=a%u;f!==0&&(a+=u-f);let h=r*a,A=new ArrayBuffer(h),g={};for(t=0;t<s;++t){n=o[t];let m=q.getSizeInBytes(e[n].componentDatatype);g[n]={pointer:q.createTypedArray(e[n].componentDatatype,A),index:c[n]/m,strideInComponentType:a/m}}for(t=0;t<r;++t)for(let m=0;m<s;++m){n=o[m],i=e[n];let _=i.values,y=g[n],C=y.pointer,E=i.componentsPerAttribute;for(let I=0;I<E;++I)C[y.index+I]=_[t*E+I];y.index+=y.strideInComponentType}return{buffer:A,offsetsInBytes:c,vertexSizeInBytes:a}}}ip.fromGeometry=function(e){e=e??V.EMPTY_OBJECT;let t=e.context,n=e.geometry??V.EMPTY_OBJECT,i=e.bufferUsage??Qe.DYNAMIC_DRAW,o=e.attributeLocations??V.EMPTY_OBJECT,r=e.interleave??!1,s=e.vertexArrayAttributes,a,c,u,f=l(s)?s:[],h=n.attributes;if(r){let m=CMe(h);if(l(m)){u=Ct.createVertexBuffer({context:t,typedArray:m.buffer,usage:i});let _=m.offsetsInBytes,y=m.vertexSizeInBytes;for(a in h)h.hasOwnProperty(a)&&l(h[a])&&(c=h[a],l(c.values)?f.push({index:o[a],vertexBuffer:u,componentDatatype:c.componentDatatype,componentsPerAttribute:c.componentsPerAttribute,normalize:c.normalize,offsetInBytes:_[a],strideInBytes:y}):f.push({index:o[a],value:c.value,componentDatatype:c.componentDatatype,normalize:c.normalize}))}}else for(a in h)if(h.hasOwnProperty(a)&&l(h[a])){c=h[a];let m=c.componentDatatype;m===q.DOUBLE&&(m=q.FLOAT);let _={};u=void 0,l(c.values)&&(u=Ct.createVertexBuffer({context:t,typedArray:q.createTypedArray(m,c.values),usage:i}),_={index:o[a],vertexBuffer:u,value:c.value,componentDatatype:m,componentsPerAttribute:c.componentsPerAttribute,normalize:c.normalize}),l(c.typedArray)&&(u=Ct.createVertexBuffer({context:t,typedArray:c.typedArray,usage:i}),_={index:o[a],vertexBuffer:u,value:void 0,componentDatatype:m,componentsPerAttribute:zt.getNumberOfComponents(c.type),normalize:c.normalized,instanceDivisor:c.instanceDivisor}),f.push(_)}let A,g=n.indices;return l(g)&&(ht.computeNumberOfVertices(n)>=D.SIXTY_FOUR_KILOBYTES&&t.elementIndexUint?A=Ct.createIndexBuffer({context:t,typedArray:new Uint32Array(g),usage:i,indexDatatype:Oe.UNSIGNED_INT}):A=Ct.createIndexBuffer({context:t,typedArray:new Uint16Array(g),usage:i,indexDatatype:Oe.UNSIGNED_SHORT})),new ip({context:t,attributes:f,indexBuffer:A})};Object.defineProperties(ip.prototype,{numberOfAttributes:{get:function(){return this._attributes.length}},numberOfVertices:{get:function(){return this._numberOfVertices}},indexBuffer:{get:function(){return this._indexBuffer}}});ip.prototype.getAttribute=function(e){return this._attributes[e]};function EMe(e){let t=e._context,n=e._hasInstancedAttributes;if(!n&&!t._previousDrawInstanced)return;t._previousDrawInstanced=n;let i=t._vertexAttribDivisors,o=e._attributes,r=Yt.maximumVertexAttributes,s;if(n){let a=o.length;for(s=0;s<a;++s){let c=o[s];if(c.enabled){let u=c.instanceDivisor,f=c.index;u!==i[f]&&(t.glVertexAttribDivisor(f,u),i[f]=u)}}}else for(s=0;s<r;++s)i[s]>0&&(t.glVertexAttribDivisor(s,0),i[s]=0)}function IMe(e,t){let n=e._attributes,i=n.length;for(let o=0;o<i;++o){let r=n[o];r.enabled&&l(r.value)&&r.vertexAttrib(t)}}ip.prototype._bind=function(){l(this._vao)?(this._context.glBindVertexArray(this._vao),this._context.instancedArrays&&EMe(this),this._hasConstantAttributes&&IMe(this,this._gl)):Rie(this._gl,this._attributes,this._indexBuffer)};ip.prototype._unBind=function(){if(l(this._vao))this._context.glBindVertexArray(null);else{let e=this._attributes,t=this._gl;for(let n=0;n<e.length;++n){let i=e[n];i.enabled&&i.disableVertexAttribArray(t)}this._indexBuffer&&t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,null)}};ip.prototype.isDestroyed=function(){return!1};ip.prototype.destroy=function(){let e=this._attributes;for(let n=0;n<e.length;++n){let i=e[n].vertexBuffer;l(i)&&!i.isDestroyed()&&i.vertexArrayDestroyable&&i.destroy()}let t=this._indexBuffer;return l(t)&&!t.isDestroyed()&&t.vertexArrayDestroyable&&t.destroy(),l(this._vao)&&this._context.glDeleteVertexArray(this._vao),ue(this)};var li=ip;function lr(e){e=e??V.EMPTY_OBJECT;let{context:t,source:n,pixelFormat:i=$e.RGBA,pixelDatatype:o=Ve.UNSIGNED_BYTE,flipY:r=!0,skipColorSpaceConversion:s=!1,sampler:a=new on}=e,c=e.preMultiplyAlpha||i===$e.RGB||i===$e.LUMINANCE,{width:u,height:f}=e;l(n)&&({width:u,height:f}=n.positiveX);let h=u,A=$e.textureSizeInBytes(i,o,h,h)*6,g=$e.toInternalFormat(i,o,t),m=t._gl,_=m.TEXTURE_CUBE_MAP,y=m.createTexture();this._context=t,this._textureFilterAnisotropic=t._textureFilterAnisotropic,this._textureTarget=_,this._texture=y,this._pixelFormat=i,this._pixelDatatype=o,this._size=h,this._hasMipmap=!1,this._sizeInBytes=A,this._preMultiplyAlpha=c,this._flipY=r;let C=l(n);function E(I){return new WB(t,y,_,I,g,i,o,h,c,r,C)}this._positiveX=E(m.TEXTURE_CUBE_MAP_POSITIVE_X),this._negativeX=E(m.TEXTURE_CUBE_MAP_NEGATIVE_X),this._positiveY=E(m.TEXTURE_CUBE_MAP_POSITIVE_Y),this._negativeY=E(m.TEXTURE_CUBE_MAP_NEGATIVE_Y),this._positiveZ=E(m.TEXTURE_CUBE_MAP_POSITIVE_Z),this._negativeZ=E(m.TEXTURE_CUBE_MAP_NEGATIVE_Z),this._sampler=a,Mie(this,a),m.activeTexture(m.TEXTURE0),m.bindTexture(_,y),s?m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.NONE):m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.BROWSER_DEFAULT_WEBGL);for(let I of lr.faceNames())L6(this[I],n?.[I],0);m.bindTexture(_,null)}lr.prototype.copyFace=function(e,t,n,i){let o=e.context,r=new $r({context:o,colorTextures:[t],destroyAttachments:!1});r._bind(),this[n].copyMipmapFromFramebuffer(0,0,t.width,t.height,i??0),r._unBind(),r.destroy()};lr.FaceName=Object.freeze({POSITIVEX:"positiveX",NEGATIVEX:"negativeX",POSITIVEY:"positiveY",NEGATIVEY:"negativeY",POSITIVEZ:"positiveZ",NEGATIVEZ:"negativeZ"});function*xMe(){yield lr.FaceName.POSITIVEX,yield lr.FaceName.NEGATIVEX,yield lr.FaceName.POSITIVEY,yield lr.FaceName.NEGATIVEY,yield lr.FaceName.POSITIVEZ,yield lr.FaceName.NEGATIVEZ}lr.faceNames=function(){return xMe()};function L6(e,t,n){n=n??0;let i=e._targetFace,o=Math.max(Math.floor(e._size/2**n),1),r=e._pixelFormat,s=e._pixelDatatype,a=e._internalFormat,c=e._flipY,u=e._preMultiplyAlpha,f=e._context,h=f._gl;if(!l(t)){h.texImage2D(i,n,a,o,o,0,r,Ve.toWebGLConstant(s,f),null);return}let{arrayBufferView:A}=t,g=4;l(A)&&(g=$e.alignmentInBytes(r,s,o)),h.pixelStorei(h.UNPACK_ALIGNMENT,g),l(A)?(h.pixelStorei(h.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),h.pixelStorei(h.UNPACK_FLIP_Y_WEBGL,!1),c&&(A=$e.flipY(A,r,s,o,o)),h.texImage2D(i,n,a,o,o,0,r,Ve.toWebGLConstant(s,f),A)):(h.pixelStorei(h.UNPACK_PREMULTIPLY_ALPHA_WEBGL,u),h.pixelStorei(h.UNPACK_FLIP_Y_WEBGL,c),h.texImage2D(i,n,a,r,Ve.toWebGLConstant(s,f),t))}lr.loadFace=L6;Object.defineProperties(lr.prototype,{positiveX:{get:function(){return this._positiveX}},negativeX:{get:function(){return this._negativeX}},positiveY:{get:function(){return this._positiveY}},negativeY:{get:function(){return this._negativeY}},positiveZ:{get:function(){return this._positiveZ}},negativeZ:{get:function(){return this._negativeZ}},sampler:{get:function(){return this._sampler},set:function(e){Mie(this,e),this._sampler=e}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},width:{get:function(){return this._size}},height:{get:function(){return this._size}},sizeInBytes:{get:function(){return this._hasMipmap?Math.floor(this._sizeInBytes*4/3):this._sizeInBytes}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},_target:{get:function(){return this._textureTarget}}});lr.getDirection=function(e,t){switch(e){case lr.FaceName.POSITIVEX:return d.clone(d.UNIT_X,t);case lr.FaceName.NEGATIVEX:return d.negate(d.UNIT_X,t);case lr.FaceName.POSITIVEY:return d.clone(d.UNIT_Y,t);case lr.FaceName.NEGATIVEY:return d.negate(d.UNIT_Y,t);case lr.FaceName.POSITIVEZ:return d.clone(d.UNIT_Z,t);case lr.FaceName.NEGATIVEZ:return d.negate(d.UNIT_Z,t)}};function Mie(e,t){let{minificationFilter:n,magnificationFilter:i}=t,o=[Zt.NEAREST_MIPMAP_NEAREST,Zt.NEAREST_MIPMAP_LINEAR,Zt.LINEAR_MIPMAP_NEAREST,Zt.LINEAR_MIPMAP_LINEAR].includes(n),r=e._context,s=e._pixelDatatype;(s===Ve.FLOAT&&!r.textureFloatLinear||s===Ve.HALF_FLOAT&&!r.textureHalfFloatLinear)&&(n=o?Zt.NEAREST_MIPMAP_NEAREST:Zt.NEAREST,i=mi.NEAREST);let a=r._gl,c=e._textureTarget;a.activeTexture(a.TEXTURE0),a.bindTexture(c,e._texture),a.texParameteri(c,a.TEXTURE_MIN_FILTER,n),a.texParameteri(c,a.TEXTURE_MAG_FILTER,i),a.texParameteri(c,a.TEXTURE_WRAP_S,t.wrapS),a.texParameteri(c,a.TEXTURE_WRAP_T,t.wrapT),l(e._textureFilterAnisotropic)&&a.texParameteri(c,e._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.maximumAnisotropy),a.bindTexture(c,null)}lr.prototype.loadMipmaps=function(e,t){t=t??!1;let n=this._context._gl,i=this._texture,o=this._textureTarget;n.activeTexture(n.TEXTURE0),n.bindTexture(o,i),t?n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,n.NONE):n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,n.BROWSER_DEFAULT_WEBGL);for(let r=0;r<e.length;r++){let s=e[r],a=r+1;for(let c of lr.faceNames())L6(this[c],s[c],a)}n.bindTexture(o,null),this._hasMipmap=!0};lr.prototype.generateMipmap=function(e){e=e??Kf.DONT_CARE,this._hasMipmap=!0;let t=this._context._gl,n=this._textureTarget;t.hint(t.GENERATE_MIPMAP_HINT,e),t.activeTexture(t.TEXTURE0),t.bindTexture(n,this._texture),t.generateMipmap(n),t.bindTexture(n,null)};lr.createVertexArray=function(e){let t=cc.createGeometry(cc.fromDimensions({dimensions:new d(2,2,2),vertexFormat:Pe.POSITION_ONLY})),n=this._attributeLocations=Vn.createAttributeLocations(t);return li.fromGeometry({context:e,geometry:t,attributeLocations:n,bufferUsage:Qe.STATIC_DRAW})};lr.prototype.isDestroyed=function(){return!1};lr.prototype.destroy=function(){return this._context._gl.deleteTexture(this._texture),this._positiveX=ue(this._positiveX),this._negativeX=ue(this._negativeX),this._positiveY=ue(this._positiveY),this._negativeY=ue(this._negativeY),this._positiveZ=ue(this._positiveZ),this._negativeZ=ue(this._negativeZ),ue(this)};var kr=lr;function dh(e){e=e??V.EMPTY_OBJECT;let{context:t,source:n,pixelFormat:i=$e.RGBA,pixelDatatype:o=Ve.UNSIGNED_BYTE,flipY:r=!0,skipColorSpaceConversion:s=!1,sampler:a=new on}=e,{width:c,height:u}=e;l(n)&&(l(c)||(c=n.videoWidth??n.naturalWidth??n.width),l(u)||(u=n.videoHeight??n.naturalHeight??n.height));let f=e.preMultiplyAlpha||i===$e.RGB||i===$e.LUMINANCE,h=$e.toInternalFormat(i,o,t),A=$e.isCompressedFormat(h),g=t._gl,m=A?$e.compressedTextureSizeInBytes(i,c,u):$e.textureSizeInBytes(i,o,c,u);this._id=e.id??Xn(),this._context=t,this._textureFilterAnisotropic=t._textureFilterAnisotropic,this._textureTarget=g.TEXTURE_2D,this._texture=g.createTexture(),this._internalFormat=h,this._pixelFormat=i,this._pixelDatatype=o,this._width=c,this._height=u,this._dimensions=new U(c,u),this._hasMipmap=!1,this._sizeInBytes=m,this._preMultiplyAlpha=f,this._flipY=r,this._initialized=!1,this._sampler=void 0,this._sampler=a,Fie(this,a),g.activeTexture(g.TEXTURE0),g.bindTexture(this._textureTarget,this._texture),l(n)?(s?g.pixelStorei(g.UNPACK_COLORSPACE_CONVERSION_WEBGL,g.NONE):g.pixelStorei(g.UNPACK_COLORSPACE_CONVERSION_WEBGL,g.BROWSER_DEFAULT_WEBGL),l(n.arrayBufferView)?$e.isCompressedFormat(h)?bMe(this,n):Nie(this,n):l(n.framebuffer)?SMe(this,n):Lie(this,n),this._initialized=!0):Oie(this),g.bindTexture(this._textureTarget,null)}function bMe(e,t){let i=e._context._gl,o=e._textureTarget,r=e._internalFormat,{width:s,height:a}=e;if(i.pixelStorei(i.UNPACK_ALIGNMENT,4),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1),i.compressedTexImage2D(o,0,r,s,a,0,t.arrayBufferView),l(t.mipLevels)){let c=s,u=a;for(let f=0;f<t.mipLevels.length;++f)c=kG(c),u=kG(u),i.compressedTexImage2D(o,f+1,r,c,u,0,t.mipLevels[f])}}function Nie(e,t){let n=e._context,i=n._gl,o=e._textureTarget,r=e._internalFormat,{width:s,height:a,pixelFormat:c,pixelDatatype:u,flipY:f}=e,h=$e.alignmentInBytes(c,u,s);i.pixelStorei(i.UNPACK_ALIGNMENT,h),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1);let{arrayBufferView:A}=t;if(f&&(A=$e.flipY(A,c,u,s,a)),i.texImage2D(o,0,r,s,a,0,c,Ve.toWebGLConstant(u,n),A),l(t.mipLevels)){let g=s,m=a;for(let _=0;_<t.mipLevels.length;++_)g=kG(g),m=kG(m),i.texImage2D(o,_+1,r,g,m,0,c,Ve.toWebGLConstant(u,n),t.mipLevels[_])}}function TMe(e,t,n,i,o,r){let s=e._context,a=s._gl,{pixelFormat:c,pixelDatatype:u}=e,f=$e.alignmentInBytes(c,u,o);a.pixelStorei(a.UNPACK_ALIGNMENT,f),a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),e.flipY&&(t=$e.flipY(t,c,u,o,r)),a.texSubImage2D(e._textureTarget,0,n,i,o,r,c,Ve.toWebGLConstant(u,s),t)}function SMe(e,t){let n=e._context,i=n._gl;i.pixelStorei(i.UNPACK_ALIGNMENT,4),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1),t.framebuffer!==n.defaultFramebuffer&&t.framebuffer._bind(),i.copyTexImage2D(e._textureTarget,0,e._internalFormat,t.xOffset,t.yOffset,e.width,e.height,0),t.framebuffer!==n.defaultFramebuffer&&t.framebuffer._unBind()}function Lie(e,t){let n=e._context,i=n._gl;i.pixelStorei(i.UNPACK_ALIGNMENT,4),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.preMultiplyAlpha),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,e.flipY),i.texImage2D(e._textureTarget,0,e._internalFormat,e.pixelFormat,Ve.toWebGLConstant(e.pixelDatatype,n),t)}function wMe(e,t,n,i){let o=e._context,r=o._gl;r.pixelStorei(r.UNPACK_ALIGNMENT,4),r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.preMultiplyAlpha),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,e.flipY),r.texSubImage2D(e._textureTarget,0,n,i,e.pixelFormat,Ve.toWebGLConstant(e.pixelDatatype,o),t)}function kG(e){let t=Math.floor(e/2)|0;return Math.max(t,1)}function Oie(e){let t=e._context;t._gl.texImage2D(e._textureTarget,0,e._internalFormat,e._width,e._height,0,e._pixelFormat,Ve.toWebGLConstant(e._pixelDatatype,t),null)}dh.create=function(e){return new dh(e)};dh.fromFramebuffer=function(e){e=e??V.EMPTY_OBJECT;let t=e.context,{pixelFormat:n=$e.RGB,framebufferXOffset:i=0,framebufferYOffset:o=0,width:r=t.drawingBufferWidth,height:s=t.drawingBufferHeight,framebuffer:a}=e;return new dh({context:t,width:r,height:s,pixelFormat:n,source:{framebuffer:l(a)?a:t.defaultFramebuffer,xOffset:i,yOffset:o,width:r,height:s}})};Object.defineProperties(dh.prototype,{id:{get:function(){return this._id}},sampler:{get:function(){return this._sampler},set:function(e){Fie(this,e),this._sampler=e}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},dimensions:{get:function(){return this._dimensions}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},width:{get:function(){return this._width}},height:{get:function(){return this._height}},sizeInBytes:{get:function(){return this._hasMipmap?Math.floor(this._sizeInBytes*4/3):this._sizeInBytes}},_target:{get:function(){return this._textureTarget}}});function Fie(e,t){let{minificationFilter:n,magnificationFilter:i}=t,o=[Zt.NEAREST_MIPMAP_NEAREST,Zt.NEAREST_MIPMAP_LINEAR,Zt.LINEAR_MIPMAP_NEAREST,Zt.LINEAR_MIPMAP_LINEAR].includes(n),r=e._context,s=e._pixelFormat,a=e._pixelDatatype;(a===Ve.FLOAT&&!r.textureFloatLinear||a===Ve.HALF_FLOAT&&!r.textureHalfFloatLinear)&&(n=o?Zt.NEAREST_MIPMAP_NEAREST:Zt.NEAREST,i=mi.NEAREST),r.webgl2&&$e.isDepthFormat(s)&&(n=Zt.NEAREST,i=mi.NEAREST);let c=r._gl,u=e._textureTarget;c.activeTexture(c.TEXTURE0),c.bindTexture(u,e._texture),c.texParameteri(u,c.TEXTURE_MIN_FILTER,n),c.texParameteri(u,c.TEXTURE_MAG_FILTER,i),c.texParameteri(u,c.TEXTURE_WRAP_S,t.wrapS),c.texParameteri(u,c.TEXTURE_WRAP_T,t.wrapT),l(e._textureFilterAnisotropic)&&c.texParameteri(u,e._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.maximumAnisotropy),c.bindTexture(u,null)}dh.prototype.copyFrom=function(e){let{xOffset:t=0,yOffset:n=0,source:i,skipColorSpaceConversion:o=!1}=e,s=this._context._gl,a=this._textureTarget;s.activeTexture(s.TEXTURE0),s.bindTexture(a,this._texture);let{width:c,height:u}=i;l(i.videoWidth)&&l(i.videoHeight)?(c=i.videoWidth,u=i.videoHeight):l(i.naturalWidth)&&l(i.naturalHeight)&&(c=i.naturalWidth,u=i.naturalHeight),o?s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,s.NONE):s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,s.BROWSER_DEFAULT_WEBGL);let f=!1;this._initialized||(t===0&&n===0&&c===this._width&&u===this._height?(l(i.arrayBufferView)?Nie(this,i):Lie(this,i),f=!0):(s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,!1),Oie(this)),this._initialized=!0),f||(l(i.arrayBufferView)?TMe(this,i.arrayBufferView,t,n,c,u):wMe(this,i,t,n)),s.bindTexture(a,null)};dh.prototype.copyFromFramebuffer=function(e,t,n,i,o,r){e=e??0,t=t??0,n=n??0,i=i??0,o=o??this._width,r=r??this._height;let s=this._context._gl,a=this._textureTarget;s.activeTexture(s.TEXTURE0),s.bindTexture(a,this._texture),s.copyTexSubImage2D(a,0,e,t,n,i,o,r),s.bindTexture(a,null),this._initialized=!0};dh.prototype.generateMipmap=function(e){e=e??Kf.DONT_CARE,this._hasMipmap=!0;let t=this._context._gl,n=this._textureTarget;t.hint(t.GENERATE_MIPMAP_HINT,e),t.activeTexture(t.TEXTURE0),t.bindTexture(n,this._texture),t.generateMipmap(n),t.bindTexture(n,null)};dh.prototype.isDestroyed=function(){return!1};dh.prototype.destroy=function(){return this._context._gl.deleteTexture(this._texture),ue(this)};var Mt=dh;var YB=`uniform sampler2D image; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + vec4 rampColor = texture(image, vec2(materialInput.aspect / (2.0 * czm_pi), 0.5)); + rampColor = czm_gammaCorrect(rampColor); + material.diffuse = rampColor.rgb; + material.alpha = rampColor.a; + return material; +} +`;var qB=`uniform sampler2D image; +uniform float strength; +uniform vec2 repeat; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + + vec2 centerPixel = fract(repeat * st); + float centerBump = texture(image, centerPixel).channel; + + float imageWidth = float(imageDimensions.x); + vec2 rightPixel = fract(repeat * (st + vec2(1.0 / imageWidth, 0.0))); + float rightBump = texture(image, rightPixel).channel; + + float imageHeight = float(imageDimensions.y); + vec2 leftPixel = fract(repeat * (st + vec2(0.0, 1.0 / imageHeight))); + float topBump = texture(image, leftPixel).channel; + + vec3 normalTangentSpace = normalize(vec3(centerBump - rightBump, centerBump - topBump, clamp(1.0 - strength, 0.1, 1.0))); + vec3 normalEC = materialInput.tangentToEyeMatrix * normalTangentSpace; + + material.normal = normalEC; + material.diffuse = vec3(0.01); + + return material; +} +`;var KB=`uniform vec4 lightColor; +uniform vec4 darkColor; +uniform vec2 repeat; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + + // From Stefan Gustavson's Procedural Textures in GLSL in OpenGL Insights + float b = mod(floor(repeat.s * st.s) + floor(repeat.t * st.t), 2.0); // 0.0 or 1.0 + + // Find the distance from the closest separator (region between two colors) + float scaledWidth = fract(repeat.s * st.s); + scaledWidth = abs(scaledWidth - floor(scaledWidth + 0.5)); + float scaledHeight = fract(repeat.t * st.t); + scaledHeight = abs(scaledHeight - floor(scaledHeight + 0.5)); + float value = min(scaledWidth, scaledHeight); + + vec4 currentColor = mix(lightColor, darkColor, b); + vec4 color = czm_antialias(lightColor, darkColor, currentColor, value, 0.03); + + color = czm_gammaCorrect(color); + material.diffuse = color.rgb; + material.alpha = color.a; + + return material; +} +`;var XB=`uniform vec4 lightColor; +uniform vec4 darkColor; +uniform vec2 repeat; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + // From Stefan Gustavson's Procedural Textures in GLSL in OpenGL Insights + float b = smoothstep(0.3, 0.32, length(fract(repeat * materialInput.st) - 0.5)); // 0.0 or 1.0 + + vec4 color = mix(lightColor, darkColor, b); + color = czm_gammaCorrect(color); + material.diffuse = color.rgb; + material.alpha = color.a; + + return material; +} +`;var JB=`uniform sampler2D heights; +uniform sampler2D colors; + +// This material expects heights to be sorted from lowest to highest. + +float getHeight(int idx, float invTexSize) +{ + vec2 uv = vec2((float(idx) + 0.5) * invTexSize, 0.5); +#ifdef OES_texture_float + return texture(heights, uv).x; +#else + return czm_unpackFloat(texture(heights, uv)); +#endif +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + float height = materialInput.height; + float invTexSize = 1.0 / float(heightsDimensions.x); + + float minHeight = getHeight(0, invTexSize); + float maxHeight = getHeight(heightsDimensions.x - 1, invTexSize); + + // early-out when outside the height range + if (height < minHeight || height > maxHeight) { + material.diffuse = vec3(0.0); + material.alpha = 0.0; + return material; + } + + // Binary search to find heights above and below. + int idxBelow = 0; + int idxAbove = heightsDimensions.x; + float heightBelow = minHeight; + float heightAbove = maxHeight; + + // while loop not allowed, so use for loop with max iterations. + // maxIterations of 16 supports a texture size up to 65536 (2^16). + const int maxIterations = 16; + for (int i = 0; i < maxIterations; i++) { + if (idxBelow >= idxAbove - 1) { + break; + } + + int idxMid = (idxBelow + idxAbove) / 2; + float heightTex = getHeight(idxMid, invTexSize); + + if (height > heightTex) { + idxBelow = idxMid; + heightBelow = heightTex; + } else { + idxAbove = idxMid; + heightAbove = heightTex; + } + } + + float lerper = heightBelow == heightAbove ? 1.0 : (height - heightBelow) / (heightAbove - heightBelow); + vec2 colorUv = vec2(invTexSize * (float(idxBelow) + 0.5 + lerper), 0.5); + vec4 color = texture(colors, colorUv); + + // undo preumultiplied alpha + if (color.a > 0.0) + { + color.rgb /= color.a; + } + + color.rgb = czm_gammaCorrect(color.rgb); + + material.diffuse = color.rgb; + material.alpha = color.a; + return material; +} +`;var ZB=`uniform vec4 color; +uniform float spacing; +uniform float width; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + float distanceToContour = mod(materialInput.height, spacing); + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + float dxc = abs(dFdx(materialInput.height)); + float dyc = abs(dFdy(materialInput.height)); + float dF = max(dxc, dyc) * czm_pixelRatio * width; + float alpha = (distanceToContour < dF) ? 1.0 : 0.0; +#else + // If no derivatives available (IE 10?), use pixel ratio + float alpha = (distanceToContour < (czm_pixelRatio * width)) ? 1.0 : 0.0; +#endif + + vec4 outColor = czm_gammaCorrect(vec4(color.rgb, alpha * color.a)); + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + + return material; +} +`;var $B=`uniform sampler2D image; +uniform float minimumHeight; +uniform float maximumHeight; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + float scaledHeight = clamp((materialInput.height - minimumHeight) / (maximumHeight - minimumHeight), 0.0, 1.0); + vec4 rampColor = texture(image, vec2(scaledHeight, 0.5)); + rampColor = czm_gammaCorrect(rampColor); + material.diffuse = rampColor.rgb; + material.alpha = rampColor.a; + return material; +} +`;var eD=`uniform vec4 fadeInColor; +uniform vec4 fadeOutColor; +uniform float maximumDistance; +uniform bool repeat; +uniform vec2 fadeDirection; +uniform vec2 time; + +float getTime(float t, float coord) +{ + float scalar = 1.0 / maximumDistance; + float q = distance(t, coord) * scalar; + if (repeat) + { + float r = distance(t, coord + 1.0) * scalar; + float s = distance(t, coord - 1.0) * scalar; + q = min(min(r, s), q); + } + return clamp(q, 0.0, 1.0); +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + float s = getTime(time.x, st.s) * fadeDirection.s; + float t = getTime(time.y, st.t) * fadeDirection.t; + + float u = length(vec2(s, t)); + vec4 color = mix(fadeInColor, fadeOutColor, u); + + color = czm_gammaCorrect(color); + material.emission = color.rgb; + material.alpha = color.a; + + return material; +} +`;var tD=`uniform vec4 color; +uniform float cellAlpha; +uniform vec2 lineCount; +uniform vec2 lineThickness; +uniform vec2 lineOffset; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + + float scaledWidth = fract(lineCount.s * st.s - lineOffset.s); + scaledWidth = abs(scaledWidth - floor(scaledWidth + 0.5)); + float scaledHeight = fract(lineCount.t * st.t - lineOffset.t); + scaledHeight = abs(scaledHeight - floor(scaledHeight + 0.5)); + + float value; + + // Fuzz Factor - Controls blurriness of lines +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + const float fuzz = 1.2; + vec2 thickness = (lineThickness * czm_pixelRatio) - 1.0; + + // From "3D Engine Design for Virtual Globes" by Cozzi and Ring, Listing 4.13. + vec2 dx = abs(dFdx(st)); + vec2 dy = abs(dFdy(st)); + vec2 dF = vec2(max(dx.s, dy.s), max(dx.t, dy.t)) * lineCount; + value = min( + smoothstep(dF.s * thickness.s, dF.s * (fuzz + thickness.s), scaledWidth), + smoothstep(dF.t * thickness.t, dF.t * (fuzz + thickness.t), scaledHeight)); +#else + // If no derivatives available (IE 10?), revert to view-dependent fuzz + const float fuzz = 0.05; + + vec2 range = 0.5 - (lineThickness * 0.05); + value = min( + 1.0 - smoothstep(range.s, range.s + fuzz, scaledWidth), + 1.0 - smoothstep(range.t, range.t + fuzz, scaledHeight)); +#endif + + // Edges taken from RimLightingMaterial.glsl + // See http://www.fundza.com/rman_shaders/surface/fake_rim/fake_rim1.html + float dRim = 1.0 - abs(dot(materialInput.normalEC, normalize(materialInput.positionToEyeEC))); + float sRim = smoothstep(0.8, 1.0, dRim); + value *= (1.0 - sRim); + + vec4 halfColor; + halfColor.rgb = color.rgb * 0.5; + halfColor.a = color.a * (1.0 - ((1.0 - cellAlpha) * value)); + halfColor = czm_gammaCorrect(halfColor); + material.diffuse = halfColor.rgb; + material.emission = halfColor.rgb; + material.alpha = halfColor.a; + + return material; +} +`;var nD=`uniform sampler2D image; +uniform float strength; +uniform vec2 repeat; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec4 textureValue = texture(image, fract(repeat * materialInput.st)); + vec3 normalTangentSpace = textureValue.channels; + normalTangentSpace.xy = normalTangentSpace.xy * 2.0 - 1.0; + normalTangentSpace.z = clamp(1.0 - strength, 0.1, 1.0); + normalTangentSpace = normalize(normalTangentSpace); + vec3 normalEC = materialInput.tangentToEyeMatrix * normalTangentSpace; + + material.normal = normalEC; + + return material; +} +`;var iD=`uniform vec4 color; + +float getPointOnLine(vec2 p0, vec2 p1, float x) +{ + float slope = (p0.y - p1.y) / (p0.x - p1.x); + return slope * (x - p0.x) + p0.y; +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + float base = 1.0 - abs(fwidth(st.s)) * 10.0 * czm_pixelRatio; +#else + // If no derivatives available (IE 10?), 2.5% of the line will be the arrow head + float base = 0.975; +#endif + + vec2 center = vec2(1.0, 0.5); + float ptOnUpperLine = getPointOnLine(vec2(base, 1.0), center, st.s); + float ptOnLowerLine = getPointOnLine(vec2(base, 0.0), center, st.s); + + float halfWidth = 0.15; + float s = step(0.5 - halfWidth, st.t); + s *= 1.0 - step(0.5 + halfWidth, st.t); + s *= 1.0 - step(base, st.s); + + float t = step(base, materialInput.st.s); + t *= 1.0 - step(ptOnUpperLine, st.t); + t *= step(ptOnLowerLine, st.t); + + // Find the distance from the closest separator (region between two colors) + float dist; + if (st.s < base) + { + float d1 = abs(st.t - (0.5 - halfWidth)); + float d2 = abs(st.t - (0.5 + halfWidth)); + dist = min(d1, d2); + } + else + { + float d1 = czm_infinity; + if (st.t < 0.5 - halfWidth && st.t > 0.5 + halfWidth) + { + d1 = abs(st.s - base); + } + float d2 = abs(st.t - ptOnUpperLine); + float d3 = abs(st.t - ptOnLowerLine); + dist = min(min(d1, d2), d3); + } + + vec4 outsideColor = vec4(0.0); + vec4 currentColor = mix(outsideColor, color, clamp(s + t, 0.0, 1.0)); + vec4 outColor = czm_antialias(outsideColor, color, currentColor, dist); + + outColor = czm_gammaCorrect(outColor); + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + return material; +} +`;var oD=`uniform vec4 color; +uniform vec4 gapColor; +uniform float dashLength; +uniform float dashPattern; +in float v_polylineAngle; + +const float maskLength = 16.0; + +mat2 rotate(float rad) { + float c = cos(rad); + float s = sin(rad); + return mat2( + c, s, + -s, c + ); +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 pos = rotate(v_polylineAngle) * gl_FragCoord.xy; + + // Get the relative position within the dash from 0 to 1 + float dashPosition = fract(pos.x / (dashLength * czm_pixelRatio)); + // Figure out the mask index. + float maskIndex = floor(dashPosition * maskLength); + // Test the bit mask. + float maskTest = floor(dashPattern / pow(2.0, maskIndex)); + vec4 fragColor = (mod(maskTest, 2.0) < 1.0) ? gapColor : color; + if (fragColor.a < 0.005) { // matches 0/255 and 1/255 + discard; + } + + fragColor = czm_gammaCorrect(fragColor); + material.emission = fragColor.rgb; + material.alpha = fragColor.a; + return material; +} +`;var rD=`uniform vec4 color; +uniform float glowPower; +uniform float taperPower; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + float glow = glowPower / abs(st.t - 0.5) - (glowPower / 0.5); + + if (taperPower <= 0.99999) { + glow *= min(1.0, taperPower / (0.5 - st.s * 0.5) - (taperPower / 0.5)); + } + + vec4 fragColor; + fragColor.rgb = max(vec3(glow - 1.0 + color.rgb), color.rgb); + fragColor.a = clamp(0.0, 1.0, glow) * color.a; + fragColor = czm_gammaCorrect(fragColor); + + material.emission = fragColor.rgb; + material.alpha = fragColor.a; + + return material; +} +`;var sD=`uniform vec4 color; +uniform vec4 outlineColor; +uniform float outlineWidth; + +in float v_width; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + float halfInteriorWidth = 0.5 * (v_width - outlineWidth) / v_width; + float b = step(0.5 - halfInteriorWidth, st.t); + b *= 1.0 - step(0.5 + halfInteriorWidth, st.t); + + // Find the distance from the closest separator (region between two colors) + float d1 = abs(st.t - (0.5 - halfInteriorWidth)); + float d2 = abs(st.t - (0.5 + halfInteriorWidth)); + float dist = min(d1, d2); + + vec4 currentColor = mix(outlineColor, color, b); + vec4 outColor = czm_antialias(outlineColor, color, currentColor, dist); + outColor = czm_gammaCorrect(outColor); + + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + + return material; +} +`;var aD=`uniform vec4 color; +uniform vec4 rimColor; +uniform float width; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + // See http://www.fundza.com/rman_shaders/surface/fake_rim/fake_rim1.html + float d = 1.0 - dot(materialInput.normalEC, normalize(materialInput.positionToEyeEC)); + float s = smoothstep(1.0 - width, 1.0, d); + + vec4 outColor = czm_gammaCorrect(color); + vec4 outRimColor = czm_gammaCorrect(rimColor); + + material.diffuse = outColor.rgb; + material.emission = outRimColor.rgb * s; + material.alpha = mix(outColor.a, outRimColor.a, s); + + return material; +} +`;var cD=`uniform sampler2D image; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + vec4 rampColor = texture(image, vec2(materialInput.slope / (czm_pi / 2.0), 0.5)); + rampColor = czm_gammaCorrect(rampColor); + material.diffuse = rampColor.rgb; + material.alpha = rampColor.a; + return material; +} +`;var lD=`uniform vec4 evenColor; +uniform vec4 oddColor; +uniform float offset; +uniform float repeat; +uniform bool horizontal; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + // Based on the Stripes Fragment Shader in the Orange Book (11.1.2) + float coord = mix(materialInput.st.s, materialInput.st.t, float(horizontal)); + float value = fract((coord - offset) * (repeat * 0.5)); + float dist = min(value, min(abs(value - 0.5), 1.0 - value)); + + vec4 currentColor = mix(evenColor, oddColor, step(0.5, value)); + vec4 color = czm_antialias(evenColor, oddColor, currentColor, dist); + color = czm_gammaCorrect(color); + + material.diffuse = color.rgb; + material.alpha = color.a; + + return material; +} +`;var uD=`uniform vec4 waterColor; +uniform vec4 landColor; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec4 outColor = mix(landColor, waterColor, materialInput.waterMask); + outColor = czm_gammaCorrect(outColor); + + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + + return material; +} +`;var fD=`// Thanks for the contribution Jonas +// http://29a.ch/2012/7/19/webgl-terrain-rendering-water-fog + +uniform sampler2D specularMap; +uniform sampler2D normalMap; +uniform vec4 baseWaterColor; +uniform vec4 blendColor; +uniform float frequency; +uniform float animationSpeed; +uniform float amplitude; +uniform float specularIntensity; +uniform float fadeFactor; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + float time = czm_frameNumber * animationSpeed; + + // fade is a function of the distance from the fragment and the frequency of the waves + float fade = max(1.0, (length(materialInput.positionToEyeEC) / 10000000000.0) * frequency * fadeFactor); + + float specularMapValue = texture(specularMap, materialInput.st).r; + + // note: not using directional motion at this time, just set the angle to 0.0; + vec4 noise = czm_getWaterNoise(normalMap, materialInput.st * frequency, time, 0.0); + vec3 normalTangentSpace = noise.xyz * vec3(1.0, 1.0, (1.0 / amplitude)); + + // fade out the normal perturbation as we move further from the water surface + normalTangentSpace.xy /= fade; + + // attempt to fade out the normal perturbation as we approach non water areas (low specular map value) + normalTangentSpace = mix(vec3(0.0, 0.0, 50.0), normalTangentSpace, specularMapValue); + + normalTangentSpace = normalize(normalTangentSpace); + + // get ratios for alignment of the new normal vector with a vector perpendicular to the tangent plane + float tsPerturbationRatio = clamp(dot(normalTangentSpace, vec3(0.0, 0.0, 1.0)), 0.0, 1.0); + + // fade out water effect as specular map value decreases + material.alpha = mix(blendColor.a, baseWaterColor.a, specularMapValue) * specularMapValue; + + // base color is a blend of the water and non-water color based on the value from the specular map + // may need a uniform blend factor to better control this + material.diffuse = mix(blendColor.rgb, baseWaterColor.rgb, specularMapValue); + + // diffuse highlights are based on how perturbed the normal is + material.diffuse += (0.1 * tsPerturbationRatio); + + material.diffuse = material.diffuse; + + material.normal = normalize(materialInput.tangentToEyeMatrix * normalTangentSpace); + + material.specular = specularIntensity; + material.shininess = 10.0; + + return material; +} +`;function qe(e){this.type=void 0,this.shaderSource=void 0,this.materials=void 0,this.uniforms=void 0,this._uniforms=void 0,this.translucent=void 0,this._minificationFilter=e.minificationFilter??Zt.LINEAR,this._magnificationFilter=e.magnificationFilter??mi.LINEAR,this._strict=void 0,this._template=void 0,this._count=void 0,this._texturePaths={},this._loadedImages=[],this._loadedCubeMaps=[],this._textures={},this._updateFunctions=[],this._defaultTexture=void 0,BMe(e,this),Object.defineProperties(this,{type:{value:this.type,writable:!1}}),l(qe._uniformList[this.type])||(qe._uniformList[this.type]=Object.keys(this._uniforms))}qe._uniformList={};qe.fromType=function(e,t){let n=new qe({fabric:{type:e}});if(l(t))for(let i in t)t.hasOwnProperty(i)&&(n.uniforms[i]=t[i]);return n};qe.prototype.isTranslucent=function(){if(l(this.translucent))return typeof this.translucent=="function"?this.translucent():this.translucent;let e=!0,t=this._translucentFunctions,n=t.length;for(let i=0;i<n;++i){let o=t[i];if(typeof o=="function"?e=e&&o():e=e&&o,!e)break}return e};qe.prototype.update=function(e){this._defaultTexture=e.defaultTexture;let t,n,i=this._loadedImages,o=i.length;for(t=0;t<o;++t){let c=i[t];n=c.id;let u=c.image,f;Array.isArray(u)&&(f=u.slice(1,u.length).map(function(_){return _.bufferView}),u=u[0]);let h=new on({minificationFilter:this._minificationFilter,magnificationFilter:this._magnificationFilter}),A;l(u.internalFormat)?A=new Mt({context:e,pixelFormat:u.internalFormat,width:u.width,height:u.height,source:{arrayBufferView:u.bufferView,mipLevels:f},sampler:h}):A=new Mt({context:e,source:u,sampler:h});let g=this._textures[n];l(g)&&g!==this._defaultTexture&&g.destroy(),this._textures[n]=A;let m=`${n}Dimensions`;if(this.uniforms.hasOwnProperty(m)){let _=this.uniforms[m];_.x=A._width,_.y=A._height}}i.length=0;let r=this._loadedCubeMaps;for(o=r.length,t=0;t<o;++t){let c=r[t];n=c.id;let u=c.images,f=new kr({context:e,source:{positiveX:u[0],negativeX:u[1],positiveY:u[2],negativeY:u[3],positiveZ:u[4],negativeZ:u[5]},sampler:new on({minificationFilter:this._minificationFilter,magnificationFilter:this._magnificationFilter})});this._textures[n]=f}r.length=0;let s=this._updateFunctions;for(o=s.length,t=0;t<o;++t)s[t](this,e);let a=this.materials;for(let c in a)a.hasOwnProperty(c)&&a[c].update(e)};qe.prototype.isDestroyed=function(){return!1};qe.prototype.destroy=function(){let e=this._textures;for(let n in e)if(e.hasOwnProperty(n)){let i=e[n];i!==this._defaultTexture&&i.destroy()}let t=this.materials;for(let n in t)t.hasOwnProperty(n)&&t[n].destroy();return ue(this)};function BMe(e,t){e=e??V.EMPTY_OBJECT,t._strict=e.strict??!1,t._count=e.count??0,t._template=ze(e.fabric??V.EMPTY_OBJECT),t._template.uniforms=ze(t._template.uniforms??V.EMPTY_OBJECT),t._template.materials=ze(t._template.materials??V.EMPTY_OBJECT),t.type=l(t._template.type)?t._template.type:Xn(),t.shaderSource="",t.materials={},t.uniforms={},t._uniforms={},t._translucentFunctions=[];let n,i=qe._materialCache.getMaterial(t.type);if(l(i)){let r=ze(i.fabric,!0);t._template=Tt(t._template,r,!0),n=i.translucent}RMe(t),l(i)||qe._materialCache.addMaterial(t.type,t),NMe(t),QMe(t),UMe(t);let o=t._translucentFunctions.length===0?!0:void 0;if(n=n??o,n=e.translucent??n,l(n))if(typeof n=="function"){let r=function(){return n(t)};t._translucentFunctions.push(r)}else t._translucentFunctions.push(n)}function O6(e,t,n,i){if(l(e)){for(let o in e)if(e.hasOwnProperty(o)){let r=t.indexOf(o)!==-1;(i&&!r||!i&&r)&&n(o,t)}}}function Qie(e,t){}function DMe(e,t){}var vMe=["type","materials","uniforms","components","source"],PMe=["diffuse","specular","shininess","normal","emission","alpha"];function RMe(e){let t=e._template,n=t.uniforms,i=t.materials,o=t.components;O6(t,vMe,Qie,!0),O6(o,PMe,Qie,!0);let r=[];for(let s in i)i.hasOwnProperty(s)&&r.push(s);O6(n,r,DMe,!1)}function MMe(e,t){let n=t._template.materials;for(let i in n)if(n.hasOwnProperty(i)&&e.indexOf(i)>-1)return!0;return!1}function NMe(e){let t=e._template.components,n=e._template.source;if(l(n))e.shaderSource+=`${n} +`;else{if(e.shaderSource+=`czm_material czm_getMaterial(czm_materialInput materialInput) +{ +`,e.shaderSource+=`czm_material material = czm_getDefaultMaterial(materialInput); +`,l(t)){let i=Object.keys(e._template.materials).length>0;for(let o in t)if(t.hasOwnProperty(o))if(o==="diffuse"||o==="emission"){let s=i&&MMe(t[o],e)?t[o]:`czm_gammaCorrect(${t[o]})`;e.shaderSource+=`material.${o} = ${s}; +`}else o==="alpha"?e.shaderSource+=`material.alpha = ${t.alpha}; +`:e.shaderSource+=`material.${o} = ${t[o]}; +`}e.shaderSource+=`return material; +} +`}}var kie={mat2:Gi,mat3:J,mat4:N},LMe=/\.ktx2$/i;function OMe(e){let t;return function(n,i){let o=n.uniforms,r=o[e],s=t!==r,a=!l(r)||r===qe.DefaultImageId;t=r;let c=n._textures[e],u,f;if(r instanceof HTMLVideoElement){if(r.readyState>=2){if(s&&l(c)&&(c!==i.defaultTexture&&c.destroy(),c=void 0),!l(c)||c===i.defaultTexture){let A=new on({minificationFilter:n._minificationFilter,magnificationFilter:n._magnificationFilter});c=new Mt({context:i,source:r,sampler:A}),n._textures[e]=c;return}c.copyFrom({source:r})}else l(c)||(n._textures[e]=i.defaultTexture);return}if(r instanceof Mt&&r!==c){n._texturePaths[e]=void 0;let A=n._textures[e];l(A)&&A!==n._defaultTexture&&A.destroy(),n._textures[e]=r,u=`${e}Dimensions`,o.hasOwnProperty(u)&&(f=o[u],f.x=r._width,f.y=r._height);return}if(s&&l(c)&&a&&(c!==n._defaultTexture&&c.destroy(),c=void 0),l(c)||(n._texturePaths[e]=void 0,c=n._textures[e]=n._defaultTexture,u=`${e}Dimensions`,o.hasOwnProperty(u)&&(f=o[u],f.x=c._width,f.y=c._height)),a)return;let h=r instanceof we;if(!l(n._texturePaths[e])||h&&r.url!==n._texturePaths[e].url||!h&&r!==n._texturePaths[e]){if(typeof r=="string"||h){let A=h?r:we.createIfNeeded(r),g;LMe.test(A.url)?g=$l(A.url):g=A.fetchImage(),Promise.resolve(g).then(function(m){n._loadedImages.push({id:e,image:m})}).catch(function(){l(c)&&c!==n._defaultTexture&&c.destroy(),n._textures[e]=n._defaultTexture})}else(r instanceof HTMLCanvasElement||r instanceof HTMLImageElement||r instanceof ImageBitmap||r instanceof OffscreenCanvas)&&n._loadedImages.push({id:e,image:r});n._texturePaths[e]=r}}}function FMe(e){return function(t,n){let i=t.uniforms[e];if(i instanceof kr){let r=t._textures[e];r!==t._defaultTexture&&r.destroy(),t._texturePaths[e]=void 0,t._textures[e]=i;return}if(l(t._textures[e])||(t._texturePaths[e]=void 0,t._textures[e]=n.defaultCubeMap),i===qe.DefaultCubeMapId)return;let o=i.positiveX+i.negativeX+i.positiveY+i.negativeY+i.positiveZ+i.negativeZ;if(o!==t._texturePaths[e]){let r=[we.createIfNeeded(i.positiveX).fetchImage(),we.createIfNeeded(i.negativeX).fetchImage(),we.createIfNeeded(i.positiveY).fetchImage(),we.createIfNeeded(i.negativeY).fetchImage(),we.createIfNeeded(i.positiveZ).fetchImage(),we.createIfNeeded(i.negativeZ).fetchImage()];Promise.all(r).then(function(s){t._loadedCubeMaps.push({id:e,images:s})}),t._texturePaths[e]=o}}}function QMe(e){let t=e._template.uniforms;for(let n in t)t.hasOwnProperty(n)&&Uie(e,n)}function Uie(e,t){let n=e._strict,i=e._template.uniforms,o=i[t],r=kMe(o),s;if(r==="channels")s=dD(e,t,o,!1);else{if(r==="sampler2D"){let u=`${t}Dimensions`;GMe(e,u)>0&&(i[u]={type:"ivec3",x:1,y:1},Uie(e,u))}if(!new RegExp(`uniform\\s+${r}\\s+${t}\\s*;`).test(e.shaderSource)){let u=`uniform ${r} ${t};`;e.shaderSource=u+e.shaderSource}let c=`${t}_${e._count++}`;if(s=dD(e,t,c),e.uniforms[t]=o,r==="sampler2D")e._uniforms[c]=function(){return e._textures[t]},e._updateFunctions.push(OMe(t));else if(r==="samplerCube")e._uniforms[c]=function(){return e._textures[t]},e._updateFunctions.push(FMe(t));else if(r.indexOf("mat")!==-1){let u=new kie[r];e._uniforms[c]=function(){return kie[r].fromColumnMajorArray(e.uniforms[t],u)}}else e._uniforms[c]=function(){return e.uniforms[t]}}}function kMe(e){let t=e.type;if(!l(t)){let n=typeof e;if(n==="number")t="float";else if(n==="boolean")t="bool";else if(n==="string"||e instanceof we||e instanceof HTMLCanvasElement||e instanceof HTMLImageElement||e instanceof ImageBitmap||e instanceof OffscreenCanvas)/^([rgba]){1,4}$/i.test(e)?t="channels":e===qe.DefaultCubeMapId?t="samplerCube":t="sampler2D";else if(n==="object")if(Array.isArray(e))(e.length===4||e.length===9||e.length===16)&&(t=`mat${Math.sqrt(e.length)}`);else{let i=0;for(let o in e)e.hasOwnProperty(o)&&(i+=1);i>=2&&i<=4?t=`vec${i}`:i===6&&(t="samplerCube")}}return t}function UMe(e){let t=e._strict,n=e._template.materials;for(let i in n)if(n.hasOwnProperty(i)){let o=new qe({strict:t,fabric:n[i],count:e._count});e._count=o._count,e._uniforms=Tt(e._uniforms,o._uniforms,!0),e.materials[i]=o,e._translucentFunctions=e._translucentFunctions.concat(o._translucentFunctions);let r="czm_getMaterial",s=`${r}_${e._count++}`;dD(o,r,s),e.shaderSource=o.shaderSource+e.shaderSource;let a=`${s}(materialInput)`,c=dD(e,i,a)}}function dD(e,t,n,i){i=i??!0;let o=0,r="([\\w])?",s=`([\\w${i?".":""}])?`,a=new RegExp(s+t+r,"g");return e.shaderSource=e.shaderSource.replace(a,function(c,u,f){return u||f?c:(o+=1,n)}),o}function GMe(e,t,n){return dD(e,t,t,n)}qe._materialCache={_materials:{},addMaterial:function(e,t){this._materials[e]=t},getMaterial:function(e){return this._materials[e]}};qe.DefaultImageId="czm_defaultImage";qe.DefaultCubeMapId="czm_defaultCubeMap";qe.ColorType="Color";qe._materialCache.addMaterial(qe.ColorType,{fabric:{type:qe.ColorType,uniforms:{color:new G(1,0,0,.5)},components:{diffuse:"color.rgb",alpha:"color.a"}},translucent:function(e){return e.uniforms.color.alpha<1}});qe.ImageType="Image";qe._materialCache.addMaterial(qe.ImageType,{fabric:{type:qe.ImageType,uniforms:{image:qe.DefaultImageId,repeat:new U(1,1),color:new G(1,1,1,1)},components:{diffuse:"texture(image, fract(repeat * materialInput.st)).rgb * color.rgb",alpha:"texture(image, fract(repeat * materialInput.st)).a * color.a"}},translucent:function(e){return e.uniforms.color.alpha<1}});qe.DiffuseMapType="DiffuseMap";qe._materialCache.addMaterial(qe.DiffuseMapType,{fabric:{type:qe.DiffuseMapType,uniforms:{image:qe.DefaultImageId,channels:"rgb",repeat:new U(1,1)},components:{diffuse:"texture(image, fract(repeat * materialInput.st)).channels"}},translucent:!1});qe.AlphaMapType="AlphaMap";qe._materialCache.addMaterial(qe.AlphaMapType,{fabric:{type:qe.AlphaMapType,uniforms:{image:qe.DefaultImageId,channel:"a",repeat:new U(1,1)},components:{alpha:"texture(image, fract(repeat * materialInput.st)).channel"}},translucent:!0});qe.SpecularMapType="SpecularMap";qe._materialCache.addMaterial(qe.SpecularMapType,{fabric:{type:qe.SpecularMapType,uniforms:{image:qe.DefaultImageId,channel:"r",repeat:new U(1,1)},components:{specular:"texture(image, fract(repeat * materialInput.st)).channel"}},translucent:!1});qe.EmissionMapType="EmissionMap";qe._materialCache.addMaterial(qe.EmissionMapType,{fabric:{type:qe.EmissionMapType,uniforms:{image:qe.DefaultImageId,channels:"rgb",repeat:new U(1,1)},components:{emission:"texture(image, fract(repeat * materialInput.st)).channels"}},translucent:!1});qe.BumpMapType="BumpMap";qe._materialCache.addMaterial(qe.BumpMapType,{fabric:{type:qe.BumpMapType,uniforms:{image:qe.DefaultImageId,channel:"r",strength:.8,repeat:new U(1,1)},source:qB},translucent:!1});qe.NormalMapType="NormalMap";qe._materialCache.addMaterial(qe.NormalMapType,{fabric:{type:qe.NormalMapType,uniforms:{image:qe.DefaultImageId,channels:"rgb",strength:.8,repeat:new U(1,1)},source:nD},translucent:!1});qe.GridType="Grid";qe._materialCache.addMaterial(qe.GridType,{fabric:{type:qe.GridType,uniforms:{color:new G(0,1,0,1),cellAlpha:.1,lineCount:new U(8,8),lineThickness:new U(1,1),lineOffset:new U(0,0)},source:tD},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.cellAlpha<1}});qe.StripeType="Stripe";qe._materialCache.addMaterial(qe.StripeType,{fabric:{type:qe.StripeType,uniforms:{horizontal:!0,evenColor:new G(1,1,1,.5),oddColor:new G(0,0,1,.5),offset:0,repeat:5},source:lD},translucent:function(e){let t=e.uniforms;return t.evenColor.alpha<1||t.oddColor.alpha<1}});qe.CheckerboardType="Checkerboard";qe._materialCache.addMaterial(qe.CheckerboardType,{fabric:{type:qe.CheckerboardType,uniforms:{lightColor:new G(1,1,1,.5),darkColor:new G(0,0,0,.5),repeat:new U(5,5)},source:KB},translucent:function(e){let t=e.uniforms;return t.lightColor.alpha<1||t.darkColor.alpha<1}});qe.DotType="Dot";qe._materialCache.addMaterial(qe.DotType,{fabric:{type:qe.DotType,uniforms:{lightColor:new G(1,1,0,.75),darkColor:new G(0,1,1,.75),repeat:new U(5,5)},source:XB},translucent:function(e){let t=e.uniforms;return t.lightColor.alpha<1||t.darkColor.alpha<1}});qe.WaterType="Water";qe._materialCache.addMaterial(qe.WaterType,{fabric:{type:qe.WaterType,uniforms:{baseWaterColor:new G(.2,.3,.6,1),blendColor:new G(0,1,.699,1),specularMap:qe.DefaultImageId,normalMap:qe.DefaultImageId,frequency:10,animationSpeed:.01,amplitude:1,specularIntensity:.5,fadeFactor:1},source:fD},translucent:function(e){let t=e.uniforms;return t.baseWaterColor.alpha<1||t.blendColor.alpha<1}});qe.RimLightingType="RimLighting";qe._materialCache.addMaterial(qe.RimLightingType,{fabric:{type:qe.RimLightingType,uniforms:{color:new G(1,0,0,.7),rimColor:new G(1,1,1,.4),width:.3},source:aD},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.rimColor.alpha<1}});qe.FadeType="Fade";qe._materialCache.addMaterial(qe.FadeType,{fabric:{type:qe.FadeType,uniforms:{fadeInColor:new G(1,0,0,1),fadeOutColor:new G(0,0,0,0),maximumDistance:.5,repeat:!0,fadeDirection:{x:!0,y:!0},time:new U(.5,.5)},source:eD},translucent:function(e){let t=e.uniforms;return t.fadeInColor.alpha<1||t.fadeOutColor.alpha<1}});qe.PolylineArrowType="PolylineArrow";qe._materialCache.addMaterial(qe.PolylineArrowType,{fabric:{type:qe.PolylineArrowType,uniforms:{color:new G(1,1,1,1)},source:iD},translucent:!0});qe.PolylineDashType="PolylineDash";qe._materialCache.addMaterial(qe.PolylineDashType,{fabric:{type:qe.PolylineDashType,uniforms:{color:new G(1,0,1,1),gapColor:new G(0,0,0,0),dashLength:16,dashPattern:255},source:oD},translucent:!0});qe.PolylineGlowType="PolylineGlow";qe._materialCache.addMaterial(qe.PolylineGlowType,{fabric:{type:qe.PolylineGlowType,uniforms:{color:new G(0,.5,1,1),glowPower:.25,taperPower:1},source:rD},translucent:!0});qe.PolylineOutlineType="PolylineOutline";qe._materialCache.addMaterial(qe.PolylineOutlineType,{fabric:{type:qe.PolylineOutlineType,uniforms:{color:new G(1,1,1,1),outlineColor:new G(1,0,0,1),outlineWidth:1},source:sD},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.outlineColor.alpha<1}});qe.ElevationContourType="ElevationContour";qe._materialCache.addMaterial(qe.ElevationContourType,{fabric:{type:qe.ElevationContourType,uniforms:{spacing:100,color:new G(1,0,0,1),width:1},source:ZB},translucent:!1});qe.ElevationRampType="ElevationRamp";qe._materialCache.addMaterial(qe.ElevationRampType,{fabric:{type:qe.ElevationRampType,uniforms:{image:qe.DefaultImageId,minimumHeight:0,maximumHeight:1e4},source:$B},translucent:!1});qe.SlopeRampMaterialType="SlopeRamp";qe._materialCache.addMaterial(qe.SlopeRampMaterialType,{fabric:{type:qe.SlopeRampMaterialType,uniforms:{image:qe.DefaultImageId},source:cD},translucent:!1});qe.AspectRampMaterialType="AspectRamp";qe._materialCache.addMaterial(qe.AspectRampMaterialType,{fabric:{type:qe.AspectRampMaterialType,uniforms:{image:qe.DefaultImageId},source:YB},translucent:!1});qe.ElevationBandType="ElevationBand";qe._materialCache.addMaterial(qe.ElevationBandType,{fabric:{type:qe.ElevationBandType,uniforms:{heights:qe.DefaultImageId,colors:qe.DefaultImageId},source:JB},translucent:!0});qe.WaterMaskType="WaterMask";qe._materialCache.addMaterial(qe.WaterMaskType,{fabric:{type:qe.WaterMaskType,source:uD,uniforms:{waterColor:new G(1,1,1,1),landColor:new G(0,0,0,0)}},translucent:!1});var ro=qe;function oE(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=e.closed??!1,i=e.materialSupport??oE.MaterialSupport.TEXTURED;this.material=l(e.material)?e.material:ro.fromType(ro.ColorType),this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??i.vertexShaderSource,this._fragmentShaderSource=e.fragmentShaderSource??i.fragmentShaderSource,this._renderState=po.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._materialSupport=i,this._vertexFormat=i.vertexFormat,this._flat=e.flat??!1,this._faceForward=e.faceForward??!n}Object.defineProperties(oE.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},materialSupport:{get:function(){return this._materialSupport}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}});oE.prototype.getFragmentShaderSource=po.prototype.getFragmentShaderSource;oE.prototype.isTranslucent=po.prototype.isTranslucent;oE.prototype.getRenderState=po.prototype.getRenderState;oE.MaterialSupport={BASIC:Object.freeze({vertexFormat:Pe.POSITION_AND_NORMAL,vertexShaderSource:RB,fragmentShaderSource:PB}),TEXTURED:Object.freeze({vertexFormat:Pe.POSITION_NORMAL_AND_ST,vertexShaderSource:NB,fragmentShaderSource:MB}),ALL:Object.freeze({vertexFormat:Pe.ALL,vertexShaderSource:vB,fragmentShaderSource:DB})};var Eo=oE;var hD=`in vec3 v_positionEC; +in vec3 v_normalEC; +in vec4 v_color; + +void main() +{ + vec3 positionToEyeEC = -v_positionEC; + + vec3 normalEC = normalize(v_normalEC); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + vec4 color = czm_gammaCorrect(v_color); + + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.positionToEyeEC = positionToEyeEC; + czm_material material = czm_getDefaultMaterial(materialInput); + material.diffuse = color.rgb; + material.alpha = color.a; + + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +} +`;var mD=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 normal; +in vec4 color; +in float batchId; + +out vec3 v_positionEC; +out vec3 v_normalEC; +out vec4 v_color; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_normalEC = czm_normal * normal; // normal in eye coordinates + v_color = color; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;var rE=`in vec4 v_color; + +void main() +{ + out_FragColor = czm_gammaCorrect(v_color); +} +`;var AD=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec4 color; +in float batchId; + +out vec4 v_color; + +void main() +{ + vec4 p = czm_computePosition(); + + v_color = color; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;function op(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=e.closed??!1,i=e.flat??!1,o=i?AD:mD,r=i?rE:hD,s=i?op.FLAT_VERTEX_FORMAT:op.VERTEX_FORMAT;this.material=void 0,this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??o,this._fragmentShaderSource=e.fragmentShaderSource??r,this._renderState=po.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=s,this._flat=i,this._faceForward=e.faceForward??!n}Object.defineProperties(op.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}});op.VERTEX_FORMAT=Pe.POSITION_AND_NORMAL;op.FLAT_VERTEX_FORMAT=Pe.POSITION_ONLY;op.prototype.getFragmentShaderSource=po.prototype.getFragmentShaderSource;op.prototype.isTranslucent=po.prototype.isTranslucent;op.prototype.getRenderState=po.prototype.getRenderState;var gn=op;function ob(e){this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this.color=e}Object.defineProperties(ob.prototype,{isConstant:{get:function(){return j.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color")});ob.prototype.getType=function(e){return"Color"};var zMe=new K;ob.prototype.getValue=function(e,t){return l(e)||(e=K.now(zMe)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,G.WHITE,t.color),t};ob.prototype.equals=function(e){return this===e||e instanceof ob&&j.equals(this._color,e._color)};var Xt=ob;function T_(e){e=e??V.EMPTY_OBJECT,this._ellipsoid=e.ellipsoid??te.default,this._rectangle=e.rectangle??ae.MAX_VALUE,this._projection=new Ui(this._ellipsoid),this._numberOfLevelZeroTilesX=e.numberOfLevelZeroTilesX??2,this._numberOfLevelZeroTilesY=e.numberOfLevelZeroTilesY??1}Object.defineProperties(T_.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}});T_.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<<e};T_.prototype.getNumberOfYTilesAtLevel=function(e){return this._numberOfLevelZeroTilesY<<e};T_.prototype.rectangleToNativeRectangle=function(e,t){let n=D.toDegrees(e.west),i=D.toDegrees(e.south),o=D.toDegrees(e.east),r=D.toDegrees(e.north);return l(t)?(t.west=n,t.south=i,t.east=o,t.north=r,t):new ae(n,i,o,r)};T_.prototype.tileXYToNativeRectangle=function(e,t,n,i){let o=this.tileXYToRectangle(e,t,n,i);return o.west=D.toDegrees(o.west),o.south=D.toDegrees(o.south),o.east=D.toDegrees(o.east),o.north=D.toDegrees(o.north),o};T_.prototype.tileXYToRectangle=function(e,t,n,i){let o=this._rectangle,r=this.getNumberOfXTilesAtLevel(n),s=this.getNumberOfYTilesAtLevel(n),a=o.width/r,c=e*a+o.west,u=(e+1)*a+o.west,f=o.height/s,h=o.north-t*f,A=o.north-(t+1)*f;return l(i)||(i=new ae(c,A,u,h)),i.west=c,i.south=A,i.east=u,i.north=h,i};T_.prototype.positionToTileXY=function(e,t,n){let i=this._rectangle;if(!ae.contains(i,e))return;let o=this.getNumberOfXTilesAtLevel(t),r=this.getNumberOfYTilesAtLevel(t),s=i.width/o,a=i.height/r,c=e.longitude;i.east<i.west&&(c+=D.TWO_PI);let u=(c-i.west)/s|0;u>=o&&(u=o-1);let f=(i.north-e.latitude)/a|0;return f>=r&&(f=r-1),l(n)?(n.x=u,n.y=f,n):new U(u,f)};var so=T_;var Gie=new d,zie=new d,Vie=new Ae,F6=new d,VMe=new d,Hie=new le,HMe=new so,pD=[new Ae,new Ae,new Ae,new Ae],gD=new U,_s={};_s.initialize=function(){let e=_s._initPromise;return l(e)||(e=we.fetchJson(fn("Assets/approximateTerrainHeights.json")).then(function(t){_s._terrainHeights=t}),_s._initPromise=e),e};_s.getMinimumMaximumHeights=function(e,t){t=t??te.default;let n=Wie(e),i=_s._defaultMinTerrainHeight,o=_s._defaultMaxTerrainHeight;if(l(n)){let r=`${n.level}-${n.x}-${n.y}`,s=_s._terrainHeights[r];l(s)&&(i=s[0],o=s[1]),t.cartographicToCartesian(ae.northeast(e,Vie),Gie),t.cartographicToCartesian(ae.southwest(e,Vie),zie),d.midpoint(zie,Gie,F6);let a=t.scaleToGeodeticSurface(F6,VMe);if(l(a)){let c=d.distance(F6,a);i=Math.min(i,-c)}else i=_s._defaultMinTerrainHeight}return i=Math.max(_s._defaultMinTerrainHeight,i),{minimumTerrainHeight:i,maximumTerrainHeight:o}};_s.getBoundingSphere=function(e,t){t=t??te.default;let n=Wie(e),i=_s._defaultMaxTerrainHeight;if(l(n)){let r=`${n.level}-${n.x}-${n.y}`,s=_s._terrainHeights[r];l(s)&&(i=s[1])}let o=le.fromRectangle3D(e,t,0);return le.fromRectangle3D(e,t,i,Hie),le.union(o,Hie,o)};function Wie(e){Ae.fromRadians(e.east,e.north,0,pD[0]),Ae.fromRadians(e.west,e.north,0,pD[1]),Ae.fromRadians(e.east,e.south,0,pD[2]),Ae.fromRadians(e.west,e.south,0,pD[3]);let t=0,n=0,i=0,o=0,r=_s._terrainHeightsMaxLevel,s;for(s=0;s<=r;++s){let a=!1;for(let c=0;c<4;++c){let u=pD[c];if(HMe.positionToTileXY(u,s,gD),c===0)i=gD.x,o=gD.y;else if(i!==gD.x||o!==gD.y){a=!0;break}}if(a)break;t=i,n=o}if(s!==0)return{x:t,y:n,level:s>r?r:s-1}}_s._terrainHeightsMaxLevel=6;_s._defaultMaxTerrainHeight=9e3;_s._defaultMinTerrainHeight=-1e5;_s._terrainHeights=void 0;_s._initPromise=void 0;Object.defineProperties(_s,{initialized:{get:function(){return l(_s._terrainHeights)}}});var Ti=_s;function ul(e,t,n){this.minimum=d.clone(e??d.ZERO),this.maximum=d.clone(t??d.ZERO),l(n)?n=d.clone(n):n=d.midpoint(this.minimum,this.maximum,new d),this.center=n}ul.fromCorners=function(e,t,n){return l(n)||(n=new ul),n.minimum=d.clone(e,n.minimum),n.maximum=d.clone(t,n.maximum),n.center=d.midpoint(e,t,n.center),n};ul.fromPoints=function(e,t){if(l(t)||(t=new ul),!l(e)||e.length===0)return t.minimum=d.clone(d.ZERO,t.minimum),t.maximum=d.clone(d.ZERO,t.maximum),t.center=d.clone(d.ZERO,t.center),t;let n=e[0].x,i=e[0].y,o=e[0].z,r=e[0].x,s=e[0].y,a=e[0].z,c=e.length;for(let h=1;h<c;h++){let A=e[h],g=A.x,m=A.y,_=A.z;n=Math.min(g,n),r=Math.max(g,r),i=Math.min(m,i),s=Math.max(m,s),o=Math.min(_,o),a=Math.max(_,a)}let u=t.minimum;u.x=n,u.y=i,u.z=o;let f=t.maximum;return f.x=r,f.y=s,f.z=a,t.center=d.midpoint(u,f,t.center),t};ul.clone=function(e,t){if(l(e))return l(t)?(t.minimum=d.clone(e.minimum,t.minimum),t.maximum=d.clone(e.maximum,t.maximum),t.center=d.clone(e.center,t.center),t):new ul(e.minimum,e.maximum,e.center)};ul.equals=function(e,t){return e===t||l(e)&&l(t)&&d.equals(e.center,t.center)&&d.equals(e.minimum,t.minimum)&&d.equals(e.maximum,t.maximum)};var UG=new d;ul.intersectPlane=function(e,t){UG=d.subtract(e.maximum,e.minimum,UG);let n=d.multiplyByScalar(UG,.5,UG),i=t.normal,o=n.x*Math.abs(i.x)+n.y*Math.abs(i.y)+n.z*Math.abs(i.z),r=d.dot(e.center,i)+t.distance;return r-o>0?tn.INSIDE:r+o<0?tn.OUTSIDE:tn.INTERSECTING};ul.prototype.clone=function(e){return ul.clone(this,e)};ul.prototype.intersectPlane=function(e){return ul.intersectPlane(this,e)};ul.prototype.equals=function(e){return ul.equals(this,e)};var S_=ul;var Q6=new se;function Qm(e,t){t=t??te.default,e=t.scaleToGeodeticSurface(e);let n=kt.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=d.fromCartesian4(N.getColumn(n,0,Q6)),this._yAxis=d.fromCartesian4(N.getColumn(n,1,Q6));let i=d.fromCartesian4(N.getColumn(n,2,Q6));this._plane=mn.fromPointNormal(e,i)}Object.defineProperties(Qm.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var WMe=new S_;Qm.fromPoints=function(e,t){let n=S_.fromPoints(e,WMe);return new Qm(n.center,t)};var jie=new In,GG=new d;Qm.prototype.projectPointOntoPlane=function(e,t){let n=jie;n.origin=e,d.normalize(e,n.direction);let i=hi.rayPlane(n,this._plane,GG);if(l(i)||(d.negate(n.direction,n.direction),i=hi.rayPlane(n,this._plane,GG)),l(i)){let o=d.subtract(i,this._origin,i),r=d.dot(this._xAxis,o),s=d.dot(this._yAxis,o);return l(t)?(t.x=r,t.y=s,t):new U(r,s)}};Qm.prototype.projectPointsOntoPlane=function(e,t){l(t)||(t=[]);let n=0,i=e.length;for(let o=0;o<i;o++){let r=this.projectPointOntoPlane(e[o],t[n]);l(r)&&(t[n]=r,n++)}return t.length=n,t};Qm.prototype.projectPointToNearestOnPlane=function(e,t){l(t)||(t=new U);let n=jie;n.origin=e,d.clone(this._plane.normal,n.direction);let i=hi.rayPlane(n,this._plane,GG);l(i)||(d.negate(n.direction,n.direction),i=hi.rayPlane(n,this._plane,GG));let o=d.subtract(i,this._origin,i),r=d.dot(this._xAxis,o),s=d.dot(this._yAxis,o);return t.x=r,t.y=s,t};Qm.prototype.projectPointsToNearestOnPlane=function(e,t){l(t)||(t=[]);let n=e.length;t.length=n;for(let i=0;i<n;i++)t[i]=this.projectPointToNearestOnPlane(e[i],t[i]);return t};var jMe=new d;Qm.prototype.projectPointOntoEllipsoid=function(e,t){l(t)||(t=new d);let n=this._ellipsoid,i=this._origin,o=this._xAxis,r=this._yAxis,s=jMe;return d.multiplyByScalar(o,e.x,s),t=d.add(i,s,t),d.multiplyByScalar(r,e.y,s),d.add(t,s,t),n.scaleToGeocentricSurface(t,t),t};Qm.prototype.projectPointsOntoEllipsoid=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;++i)t[i]=this.projectPointOntoEllipsoid(e[i],t[i]);return t};var ys=Qm;function Zi(e,t){this.center=d.clone(e??d.ZERO),this.halfAxes=J.clone(t??J.ZERO)}Zi.packedLength=d.packedLength+J.packedLength;Zi.pack=function(e,t,n){return n=n??0,d.pack(e.center,t,n),J.pack(e.halfAxes,t,n+d.packedLength),t};Zi.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Zi),d.unpack(e,t,n.center),J.unpack(e,t+d.packedLength,n.halfAxes),n};var YMe=new d,qMe=new d,KMe=new d,XMe=new d,JMe=new d,ZMe=new d,$Me=new J,e1e={unitary:new J,diagonal:new J};Zi.fromPoints=function(e,t){if(l(t)||(t=new Zi),!l(e)||e.length===0)return t.halfAxes=J.ZERO,t.center=d.ZERO,t;let n,i=e.length,o=d.clone(e[0],YMe);for(n=1;n<i;n++)d.add(o,e[n],o);let r=1/i;d.multiplyByScalar(o,r,o);let s=0,a=0,c=0,u=0,f=0,h=0,A;for(n=0;n<i;n++)A=d.subtract(e[n],o,qMe),s+=A.x*A.x,a+=A.x*A.y,c+=A.x*A.z,u+=A.y*A.y,f+=A.y*A.z,h+=A.z*A.z;s*=r,a*=r,c*=r,u*=r,f*=r,h*=r;let g=$Me;g[0]=s,g[1]=a,g[2]=c,g[3]=a,g[4]=u,g[5]=f,g[6]=c,g[7]=f,g[8]=h;let m=J.computeEigenDecomposition(g,e1e),_=J.clone(m.unitary,t.halfAxes),y=J.getColumn(_,0,XMe),C=J.getColumn(_,1,JMe),E=J.getColumn(_,2,ZMe),I=-Number.MAX_VALUE,b=-Number.MAX_VALUE,S=-Number.MAX_VALUE,B=Number.MAX_VALUE,v=Number.MAX_VALUE,P=Number.MAX_VALUE;for(n=0;n<i;n++)A=e[n],I=Math.max(d.dot(y,A),I),b=Math.max(d.dot(C,A),b),S=Math.max(d.dot(E,A),S),B=Math.min(d.dot(y,A),B),v=Math.min(d.dot(C,A),v),P=Math.min(d.dot(E,A),P);y=d.multiplyByScalar(y,.5*(B+I),y),C=d.multiplyByScalar(C,.5*(v+b),C),E=d.multiplyByScalar(E,.5*(P+S),E);let M=d.add(y,C,t.center);d.add(M,E,M);let L=KMe;return L.x=I-B,L.y=b-v,L.z=S-P,d.multiplyByScalar(L,.5,L),J.multiplyByScale(t.halfAxes,L,t.halfAxes),t};var Zie=new d,t1e=new d;function Yie(e,t,n,i,o,r,s,a,c,u,f){l(f)||(f=new Zi);let h=f.halfAxes;J.setColumn(h,0,t,h),J.setColumn(h,1,n,h),J.setColumn(h,2,i,h);let A=Zie;A.x=(o+r)/2,A.y=(s+a)/2,A.z=(c+u)/2;let g=t1e;g.x=(r-o)/2,g.y=(a-s)/2,g.z=(u-c)/2;let m=f.center;return A=J.multiplyByVector(h,A,A),d.add(e,A,m),J.multiplyByScale(h,g,h),f}var qie=new Ae,n1e=new d,i1e=new Ae,o1e=new Ae,r1e=new Ae,s1e=new Ae,a1e=new Ae,c1e=new d,Kie=new d,l1e=new d,Xie=new d,u1e=new d,f1e=new U,d1e=new U,h1e=new U,m1e=new U,A1e=new U,p1e=new d,g1e=new d,_1e=new d,y1e=new d,C1e=new U,E1e=new d,I1e=new d,x1e=new d,b1e=new mn(d.UNIT_X,0);Zi.fromRectangle=function(e,t,n,i,o){t=t??0,n=n??0,i=i??te.default;let r,s,a,c,u,f,h;if(e.width<=D.PI){let v=ae.center(e,qie),P=i.cartographicToCartesian(v,n1e),M=new ys(P,i);h=M.plane;let L=v.longitude,p=e.south<0&&e.north>0?0:v.latitude,x=Ae.fromRadians(L,e.north,n,i1e),T=Ae.fromRadians(e.west,e.north,n,o1e),w=Ae.fromRadians(e.west,p,n,r1e),R=Ae.fromRadians(e.west,e.south,n,s1e),O=Ae.fromRadians(L,e.south,n,a1e),k=i.cartographicToCartesian(x,c1e),Q=i.cartographicToCartesian(T,Kie),z=i.cartographicToCartesian(w,l1e),F=i.cartographicToCartesian(R,Xie),H=i.cartographicToCartesian(O,u1e),W=M.projectPointToNearestOnPlane(k,f1e),Z=M.projectPointToNearestOnPlane(Q,d1e),Y=M.projectPointToNearestOnPlane(z,h1e),$=M.projectPointToNearestOnPlane(F,m1e),X=M.projectPointToNearestOnPlane(H,A1e);return r=Math.min(Z.x,Y.x,$.x),s=-r,c=Math.max(Z.y,W.y),a=Math.min($.y,X.y),T.height=R.height=t,Q=i.cartographicToCartesian(T,Kie),F=i.cartographicToCartesian(R,Xie),u=Math.min(mn.getPointDistance(h,Q),mn.getPointDistance(h,F)),f=n,Yie(M.origin,M.xAxis,M.yAxis,M.zAxis,r,s,a,c,u,f,o)}let A=e.south>0,g=e.north<0,m=A?e.south:g?e.north:0,_=ae.center(e,qie).longitude,y=d.fromRadians(_,m,n,i,p1e);y.z=0;let E=Math.abs(y.x)<D.EPSILON10&&Math.abs(y.y)<D.EPSILON10?d.UNIT_X:d.normalize(y,g1e),I=d.UNIT_Z,b=d.cross(E,I,_1e);h=mn.fromPointNormal(y,E,b1e);let S=d.fromRadians(_+D.PI_OVER_TWO,m,n,i,y1e);s=d.dot(mn.projectPointOntoPlane(h,S,C1e),b),r=-s,c=d.fromRadians(0,e.north,g?t:n,i,E1e).z,a=d.fromRadians(0,e.south,A?t:n,i,I1e).z;let B=d.fromRadians(e.east,m,n,i,x1e);return u=mn.getPointDistance(h,B),f=0,Yie(y,b,I,E,r,s,a,c,u,f,o)};Zi.fromTransformation=function(e,t){return l(t)||(t=new Zi),t.center=N.getTranslation(e,t.center),t.halfAxes=N.getMatrix3(e,t.halfAxes),t.halfAxes=J.multiplyByScalar(t.halfAxes,.5,t.halfAxes),t};Zi.clone=function(e,t){if(l(e))return l(t)?(d.clone(e.center,t.center),J.clone(e.halfAxes,t.halfAxes),t):new Zi(e.center,e.halfAxes)};Zi.intersectPlane=function(e,t){let n=e.center,i=t.normal,o=e.halfAxes,r=i.x,s=i.y,a=i.z,c=Math.abs(r*o[J.COLUMN0ROW0]+s*o[J.COLUMN0ROW1]+a*o[J.COLUMN0ROW2])+Math.abs(r*o[J.COLUMN1ROW0]+s*o[J.COLUMN1ROW1]+a*o[J.COLUMN1ROW2])+Math.abs(r*o[J.COLUMN2ROW0]+s*o[J.COLUMN2ROW1]+a*o[J.COLUMN2ROW2]),u=d.dot(i,n)+t.distance;return u<=-c?tn.OUTSIDE:u>=c?tn.INSIDE:tn.INTERSECTING};var $ie=new d,eoe=new d,toe=new d,T1e=new d,Jie=new d,S1e=new d;Zi.distanceSquaredTo=function(e,t){let n=d.subtract(t,e.center,Zie),i=e.halfAxes,o=J.getColumn(i,0,$ie),r=J.getColumn(i,1,eoe),s=J.getColumn(i,2,toe),a=d.magnitude(o),c=d.magnitude(r),u=d.magnitude(s),f=!0,h=!0,A=!0;a>0?d.divideByScalar(o,a,o):f=!1,c>0?d.divideByScalar(r,c,r):h=!1,u>0?d.divideByScalar(s,u,s):A=!1;let g=!f+!h+!A,m,_,y;if(g===1){let b=o;m=r,_=s,h?A||(b=s,_=o):(b=r,m=o),y=d.cross(m,_,Jie),b===o?o=y:b===r?r=y:b===s&&(s=y)}else if(g===2){m=o,h?m=r:A&&(m=s);let b=d.UNIT_Y;b.equalsEpsilon(m,D.EPSILON3)&&(b=d.UNIT_X),_=d.cross(m,b,T1e),d.normalize(_,_),y=d.cross(m,_,Jie),d.normalize(y,y),m===o?(r=_,s=y):m===r?(s=_,o=y):m===s&&(o=_,r=y)}else g===3&&(o=d.UNIT_X,r=d.UNIT_Y,s=d.UNIT_Z);let C=S1e;C.x=d.dot(n,o),C.y=d.dot(n,r),C.z=d.dot(n,s);let E=0,I;return C.x<-a?(I=C.x+a,E+=I*I):C.x>a&&(I=C.x-a,E+=I*I),C.y<-c?(I=C.y+c,E+=I*I):C.y>c&&(I=C.y-c,E+=I*I),C.z<-u?(I=C.z+u,E+=I*I):C.z>u&&(I=C.z-u,E+=I*I),E};var w1e=new d,B1e=new d;Zi.computePlaneDistances=function(e,t,n,i){l(i)||(i=new sc);let o=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,s=e.center,a=e.halfAxes,c=J.getColumn(a,0,$ie),u=J.getColumn(a,1,eoe),f=J.getColumn(a,2,toe),h=d.add(c,u,w1e);d.add(h,f,h),d.add(h,s,h);let A=d.subtract(h,t,B1e),g=d.dot(n,A);return o=Math.min(g,o),r=Math.max(g,r),d.add(s,c,h),d.add(h,u,h),d.subtract(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.add(s,c,h),d.subtract(h,u,h),d.add(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.add(s,c,h),d.subtract(h,u,h),d.subtract(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.add(h,u,h),d.add(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.add(h,u,h),d.subtract(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.subtract(h,u,h),d.add(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.subtract(h,u,h),d.subtract(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),i.start=o,i.stop=r,i};var D1e=new d,v1e=new d,P1e=new d;Zi.computeCorners=function(e,t){l(t)||(t=[new d,new d,new d,new d,new d,new d,new d,new d]);let n=e.center,i=e.halfAxes,o=J.getColumn(i,0,D1e),r=J.getColumn(i,1,v1e),s=J.getColumn(i,2,P1e);return d.clone(n,t[0]),d.subtract(t[0],o,t[0]),d.subtract(t[0],r,t[0]),d.subtract(t[0],s,t[0]),d.clone(n,t[1]),d.subtract(t[1],o,t[1]),d.subtract(t[1],r,t[1]),d.add(t[1],s,t[1]),d.clone(n,t[2]),d.subtract(t[2],o,t[2]),d.add(t[2],r,t[2]),d.subtract(t[2],s,t[2]),d.clone(n,t[3]),d.subtract(t[3],o,t[3]),d.add(t[3],r,t[3]),d.add(t[3],s,t[3]),d.clone(n,t[4]),d.add(t[4],o,t[4]),d.subtract(t[4],r,t[4]),d.subtract(t[4],s,t[4]),d.clone(n,t[5]),d.add(t[5],o,t[5]),d.subtract(t[5],r,t[5]),d.add(t[5],s,t[5]),d.clone(n,t[6]),d.add(t[6],o,t[6]),d.add(t[6],r,t[6]),d.subtract(t[6],s,t[6]),d.clone(n,t[7]),d.add(t[7],o,t[7]),d.add(t[7],r,t[7]),d.add(t[7],s,t[7]),t};var R1e=new J;Zi.computeTransformation=function(e,t){l(t)||(t=new N);let n=e.center,i=J.multiplyByUniformScale(e.halfAxes,2,R1e);return N.fromRotationTranslation(i,n,t)};var M1e=new le;Zi.isOccluded=function(e,t){let n=le.fromOrientedBoundingBox(e,M1e);return!t.isBoundingSphereVisible(n)};Zi.prototype.intersectPlane=function(e){return Zi.intersectPlane(this,e)};Zi.prototype.distanceSquaredTo=function(e){return Zi.distanceSquaredTo(this,e)};Zi.prototype.computePlaneDistances=function(e,t,n){return Zi.computePlaneDistances(this,e,t,n)};Zi.prototype.computeCorners=function(e){return Zi.computeCorners(this,e)};Zi.prototype.computeTransformation=function(e){return Zi.computeTransformation(this,e)};Zi.prototype.isOccluded=function(e){return Zi.isOccluded(this,e)};Zi.equals=function(e,t){return e===t||l(e)&&l(t)&&d.equals(e.center,t.center)&&J.equals(e.halfAxes,t.halfAxes)};Zi.prototype.clone=function(e){return Zi.clone(this,e)};Zi.prototype.equals=function(e){return Zi.equals(this,e)};var Fn=Zi;var zG={};zG.getHeight=function(e,t,n){return(e-n)*t+n};var N1e=new Ae;zG.getPosition=function(e,t,n,i,o){let r=t.cartesianToCartographic(e,N1e);if(!l(r))return d.clone(e,o);let s=zG.getHeight(r.height,n,i);return d.fromRadians(r.longitude,r.latitude,s,t,o)};var Ur=zG;var Gr={CULL:1,OCCLUDE:2,EXECUTE_IN_CLOSEST_FRUSTUM:4,DEBUG_SHOW_BOUNDING_VOLUME:8,CAST_SHADOWS:16,RECEIVE_SHADOWS:32,PICK_ONLY:64,DEPTH_FOR_TRANSLUCENT_CLASSIFICATION:128};function _D(e){e=e??V.EMPTY_OBJECT,this._boundingVolume=e.boundingVolume,this._orientedBoundingBox=e.orientedBoundingBox,this._modelMatrix=e.modelMatrix,this._primitiveType=e.primitiveType??Me.TRIANGLES,this._vertexArray=e.vertexArray,this._count=e.count,this._offset=e.offset??0,this._instanceCount=e.instanceCount??0,this._shaderProgram=e.shaderProgram,this._uniformMap=e.uniformMap,this._renderState=e.renderState,this._framebuffer=e.framebuffer,this._pass=e.pass,this._owner=e.owner,this._debugOverlappingFrustums=0,this._pickId=e.pickId,this._pickMetadataAllowed=e.pickMetadataAllowed===!0,this._pickedMetadataInfo=void 0,this._flags=0,this.cull=e.cull??!0,this.occlude=e.occlude??!0,this.executeInClosestFrustum=e.executeInClosestFrustum??!1,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.castShadows=e.castShadows??!1,this.receiveShadows=e.receiveShadows??!1,this.pickOnly=e.pickOnly??!1,this.depthForTranslucentClassification=e.depthForTranslucentClassification??!1,this.dirty=!0,this.lastDirtyTime=0,this.derivedCommands={}}function Pc(e,t){return(e._flags&t)===t}function w_(e,t,n){n?e._flags|=t:e._flags&=~t}Object.defineProperties(_D.prototype,{boundingVolume:{get:function(){return this._boundingVolume},set:function(e){this._boundingVolume!==e&&(this._boundingVolume=e,this.dirty=!0)}},orientedBoundingBox:{get:function(){return this._orientedBoundingBox},set:function(e){this._orientedBoundingBox!==e&&(this._orientedBoundingBox=e,this.dirty=!0)}},cull:{get:function(){return Pc(this,Gr.CULL)},set:function(e){Pc(this,Gr.CULL)!==e&&(w_(this,Gr.CULL,e),this.dirty=!0)}},occlude:{get:function(){return Pc(this,Gr.OCCLUDE)},set:function(e){Pc(this,Gr.OCCLUDE)!==e&&(w_(this,Gr.OCCLUDE,e),this.dirty=!0)}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix!==e&&(this._modelMatrix=e,this.dirty=!0)}},primitiveType:{get:function(){return this._primitiveType},set:function(e){this._primitiveType!==e&&(this._primitiveType=e,this.dirty=!0)}},vertexArray:{get:function(){return this._vertexArray},set:function(e){this._vertexArray!==e&&(this._vertexArray=e,this.dirty=!0)}},count:{get:function(){return this._count},set:function(e){this._count!==e&&(this._count=e,this.dirty=!0)}},offset:{get:function(){return this._offset},set:function(e){this._offset!==e&&(this._offset=e,this.dirty=!0)}},instanceCount:{get:function(){return this._instanceCount},set:function(e){this._instanceCount!==e&&(this._instanceCount=e,this.dirty=!0)}},shaderProgram:{get:function(){return this._shaderProgram},set:function(e){this._shaderProgram!==e&&(this._shaderProgram=e,this.dirty=!0)}},castShadows:{get:function(){return Pc(this,Gr.CAST_SHADOWS)},set:function(e){Pc(this,Gr.CAST_SHADOWS)!==e&&(w_(this,Gr.CAST_SHADOWS,e),this.dirty=!0)}},receiveShadows:{get:function(){return Pc(this,Gr.RECEIVE_SHADOWS)},set:function(e){Pc(this,Gr.RECEIVE_SHADOWS)!==e&&(w_(this,Gr.RECEIVE_SHADOWS,e),this.dirty=!0)}},uniformMap:{get:function(){return this._uniformMap},set:function(e){this._uniformMap!==e&&(this._uniformMap=e,this.dirty=!0)}},renderState:{get:function(){return this._renderState},set:function(e){this._renderState!==e&&(this._renderState=e,this.dirty=!0)}},framebuffer:{get:function(){return this._framebuffer},set:function(e){this._framebuffer!==e&&(this._framebuffer=e,this.dirty=!0)}},pass:{get:function(){return this._pass},set:function(e){this._pass!==e&&(this._pass=e,this.dirty=!0)}},executeInClosestFrustum:{get:function(){return Pc(this,Gr.EXECUTE_IN_CLOSEST_FRUSTUM)},set:function(e){Pc(this,Gr.EXECUTE_IN_CLOSEST_FRUSTUM)!==e&&(w_(this,Gr.EXECUTE_IN_CLOSEST_FRUSTUM,e),this.dirty=!0)}},owner:{get:function(){return this._owner},set:function(e){this._owner!==e&&(this._owner=e,this.dirty=!0)}},debugShowBoundingVolume:{get:function(){return Pc(this,Gr.DEBUG_SHOW_BOUNDING_VOLUME)},set:function(e){Pc(this,Gr.DEBUG_SHOW_BOUNDING_VOLUME)!==e&&(w_(this,Gr.DEBUG_SHOW_BOUNDING_VOLUME,e),this.dirty=!0)}},debugOverlappingFrustums:{get:function(){return this._debugOverlappingFrustums},set:function(e){this._debugOverlappingFrustums!==e&&(this._debugOverlappingFrustums=e,this.dirty=!0)}},pickId:{get:function(){return this._pickId},set:function(e){this._pickId!==e&&(this._pickId=e,this.dirty=!0)}},pickMetadataAllowed:{get:function(){return this._pickMetadataAllowed}},pickedMetadataInfo:{get:function(){return this._pickedMetadataInfo},set:function(e){this._pickedMetadataInfo!==e&&(this._pickedMetadataInfo=e,this.dirty=!0)}},pickOnly:{get:function(){return Pc(this,Gr.PICK_ONLY)},set:function(e){Pc(this,Gr.PICK_ONLY)!==e&&(w_(this,Gr.PICK_ONLY,e),this.dirty=!0)}},depthForTranslucentClassification:{get:function(){return Pc(this,Gr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION)},set:function(e){Pc(this,Gr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION)!==e&&(w_(this,Gr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION,e),this.dirty=!0)}}});_D.shallowClone=function(e,t){if(l(e))return l(t)||(t=new _D),t._boundingVolume=e._boundingVolume,t._orientedBoundingBox=e._orientedBoundingBox,t._modelMatrix=e._modelMatrix,t._primitiveType=e._primitiveType,t._vertexArray=e._vertexArray,t._count=e._count,t._offset=e._offset,t._instanceCount=e._instanceCount,t._shaderProgram=e._shaderProgram,t._uniformMap=e._uniformMap,t._renderState=e._renderState,t._framebuffer=e._framebuffer,t._pass=e._pass,t._owner=e._owner,t._debugOverlappingFrustums=e._debugOverlappingFrustums,t._pickId=e._pickId,t._pickMetadataAllowed=e._pickMetadataAllowed,t._pickedMetadataInfo=e._pickedMetadataInfo,t._flags=e._flags,t.dirty=!0,t.lastDirtyTime=0,t};_D.prototype.execute=function(e,t){e.draw(this,t)};var nt=_D;var L1e={ENVIRONMENT:0,COMPUTE:1,GLOBE:2,TERRAIN_CLASSIFICATION:3,CESIUM_3D_TILE:4,CESIUM_3D_TILE_CLASSIFICATION:5,CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW:6,OPAQUE:7,TRANSLUCENT:8,VOXELS:9,GAUSSIAN_SPLATS:10,OVERLAY:11,NUMBER_OF_PASSES:12},Be=Object.freeze(L1e);var VG={CLOCKWISE:ee.CW,COUNTER_CLOCKWISE:ee.CCW};VG.validate=function(e){return e===VG.CLOCKWISE||e===VG.COUNTER_CLOCKWISE};var Ls=Object.freeze(VG);function noe(e){if(typeof e!="object"||e===null)return e;let t,n=Object.keys(e);for(let i=0;i<n.length;i++)t=n[i],e.hasOwnProperty(t)&&t!=="_applyFunctions"&&(e[t]=noe(e[t]));return Object.freeze(e)}var k6=noe;function Um(e){let t=e??V.EMPTY_OBJECT,n=t.cull??V.EMPTY_OBJECT,i=t.polygonOffset??V.EMPTY_OBJECT,o=t.scissorTest??V.EMPTY_OBJECT,r=o.rectangle??V.EMPTY_OBJECT,s=t.depthRange??V.EMPTY_OBJECT,a=t.depthTest??V.EMPTY_OBJECT,c=t.colorMask??V.EMPTY_OBJECT,u=t.blending??V.EMPTY_OBJECT,f=u.color??V.EMPTY_OBJECT,h=t.stencilTest??V.EMPTY_OBJECT,A=h.frontOperation??V.EMPTY_OBJECT,g=h.backOperation??V.EMPTY_OBJECT,m=t.sampleCoverage??V.EMPTY_OBJECT,_=t.viewport;this.frontFace=t.frontFace??Ls.COUNTER_CLOCKWISE,this.cull={enabled:n.enabled??!1,face:n.face??ee.BACK},this.lineWidth=t.lineWidth??1,this.polygonOffset={enabled:i.enabled??!1,factor:i.factor??0,units:i.units??0},this.scissorTest={enabled:o.enabled??!1,rectangle:Ye.clone(r)},this.depthRange={near:s.near??0,far:s.far??1},this.depthTest={enabled:a.enabled??!1,func:a.func??ee.LESS},this.colorMask={red:c.red??!0,green:c.green??!0,blue:c.blue??!0,alpha:c.alpha??!0},this.depthMask=t.depthMask??!0,this.stencilMask=t.stencilMask??-1,this.blending={enabled:u.enabled??!1,color:new G(f.red??0,f.green??0,f.blue??0,f.alpha??0),equationRgb:u.equationRgb??ee.FUNC_ADD,equationAlpha:u.equationAlpha??ee.FUNC_ADD,functionSourceRgb:u.functionSourceRgb??ee.ONE,functionSourceAlpha:u.functionSourceAlpha??ee.ONE,functionDestinationRgb:u.functionDestinationRgb??ee.ZERO,functionDestinationAlpha:u.functionDestinationAlpha??ee.ZERO},this.stencilTest={enabled:h.enabled??!1,frontFunction:h.frontFunction??ee.ALWAYS,backFunction:h.backFunction??ee.ALWAYS,reference:h.reference??0,mask:h.mask??-1,frontOperation:{fail:A.fail??ee.KEEP,zFail:A.zFail??ee.KEEP,zPass:A.zPass??ee.KEEP},backOperation:{fail:g.fail??ee.KEEP,zFail:g.zFail??ee.KEEP,zPass:g.zPass??ee.KEEP}},this.sampleCoverage={enabled:m.enabled??!1,value:m.value??1,invert:m.invert??!1},this.viewport=l(_)?new Ye(_.x,_.y,_.width,_.height):void 0,this.id=0,this._applyFunctions=[]}var O1e=0,km={};Um.fromCache=function(e){let t=JSON.stringify(e),n=km[t];if(l(n))return++n.referenceCount,n.state;let i=new Um(e),o=JSON.stringify(i);return n=km[o],l(n)||(i.id=O1e++,n={referenceCount:0,state:i},km[o]=n),++n.referenceCount,km[t]={referenceCount:1,state:n.state},n.state};Um.removeFromCache=function(e){let t=new Um(e),n=JSON.stringify(t),i=km[n],o=JSON.stringify(e),r=km[o];l(r)&&(--r.referenceCount,r.referenceCount===0&&(delete km[o],l(i)&&--i.referenceCount)),l(i)&&i.referenceCount===0&&delete km[n]};Um.getCache=function(){return km};Um.clearCache=function(){km={}};function sE(e,t,n){n?e.enable(t):e.disable(t)}function ioe(e,t){e.frontFace(t.frontFace)}function ooe(e,t){let n=t.cull,i=n.enabled;sE(e,e.CULL_FACE,i),i&&e.cullFace(n.face)}function roe(e,t){e.lineWidth(t.lineWidth)}function soe(e,t){let n=t.polygonOffset,i=n.enabled;sE(e,e.POLYGON_OFFSET_FILL,i),i&&e.polygonOffset(n.factor,n.units)}function aoe(e,t,n){let i=t.scissorTest,o=l(n.scissorTest)?n.scissorTest.enabled:i.enabled;if(sE(e,e.SCISSOR_TEST,o),o){let r=l(n.scissorTest)?n.scissorTest.rectangle:i.rectangle;e.scissor(r.x,r.y,r.width,r.height)}}function coe(e,t){let n=t.depthRange;e.depthRange(n.near,n.far)}function loe(e,t){let n=t.depthTest,i=n.enabled;sE(e,e.DEPTH_TEST,i),i&&e.depthFunc(n.func)}function uoe(e,t){let n=t.colorMask;e.colorMask(n.red,n.green,n.blue,n.alpha)}function foe(e,t){e.depthMask(t.depthMask)}function doe(e,t){e.stencilMask(t.stencilMask)}function F1e(e,t){e.blendColor(t.red,t.green,t.blue,t.alpha)}function hoe(e,t,n){let i=t.blending,o=l(n.blendingEnabled)?n.blendingEnabled:i.enabled;sE(e,e.BLEND,o),o&&(F1e(e,i.color),e.blendEquationSeparate(i.equationRgb,i.equationAlpha),e.blendFuncSeparate(i.functionSourceRgb,i.functionDestinationRgb,i.functionSourceAlpha,i.functionDestinationAlpha))}function moe(e,t){let n=t.stencilTest,i=n.enabled;if(sE(e,e.STENCIL_TEST,i),i){let o=n.frontFunction,r=n.backFunction,s=n.reference,a=n.mask;e.stencilFunc(o,s,a),e.stencilFuncSeparate(e.BACK,r,s,a),e.stencilFuncSeparate(e.FRONT,o,s,a);let c=n.frontOperation,u=c.fail,f=c.zFail,h=c.zPass;e.stencilOpSeparate(e.FRONT,u,f,h);let A=n.backOperation,g=A.fail,m=A.zFail,_=A.zPass;e.stencilOpSeparate(e.BACK,g,m,_)}}function Aoe(e,t){let n=t.sampleCoverage,i=n.enabled;sE(e,e.SAMPLE_COVERAGE,i),i&&e.sampleCoverage(n.value,n.invert)}var Q1e=new Ye;function poe(e,t,n){let i=t.viewport??n.viewport;l(i)||(i=Q1e,i.width=n.context.drawingBufferWidth,i.height=n.context.drawingBufferHeight),n.context.uniformState.viewport=i,e.viewport(i.x,i.y,i.width,i.height)}Um.apply=function(e,t,n){ioe(e,t),ooe(e,t),roe(e,t),soe(e,t),coe(e,t),loe(e,t),uoe(e,t),foe(e,t),doe(e,t),moe(e,t),Aoe(e,t),aoe(e,t,n),hoe(e,t,n),poe(e,t,n)};function k1e(e,t){let n=[];return e.frontFace!==t.frontFace&&n.push(ioe),(e.cull.enabled!==t.cull.enabled||e.cull.face!==t.cull.face)&&n.push(ooe),e.lineWidth!==t.lineWidth&&n.push(roe),(e.polygonOffset.enabled!==t.polygonOffset.enabled||e.polygonOffset.factor!==t.polygonOffset.factor||e.polygonOffset.units!==t.polygonOffset.units)&&n.push(soe),(e.depthRange.near!==t.depthRange.near||e.depthRange.far!==t.depthRange.far)&&n.push(coe),(e.depthTest.enabled!==t.depthTest.enabled||e.depthTest.func!==t.depthTest.func)&&n.push(loe),(e.colorMask.red!==t.colorMask.red||e.colorMask.green!==t.colorMask.green||e.colorMask.blue!==t.colorMask.blue||e.colorMask.alpha!==t.colorMask.alpha)&&n.push(uoe),e.depthMask!==t.depthMask&&n.push(foe),e.stencilMask!==t.stencilMask&&n.push(doe),(e.stencilTest.enabled!==t.stencilTest.enabled||e.stencilTest.frontFunction!==t.stencilTest.frontFunction||e.stencilTest.backFunction!==t.stencilTest.backFunction||e.stencilTest.reference!==t.stencilTest.reference||e.stencilTest.mask!==t.stencilTest.mask||e.stencilTest.frontOperation.fail!==t.stencilTest.frontOperation.fail||e.stencilTest.frontOperation.zFail!==t.stencilTest.frontOperation.zFail||e.stencilTest.backOperation.fail!==t.stencilTest.backOperation.fail||e.stencilTest.backOperation.zFail!==t.stencilTest.backOperation.zFail||e.stencilTest.backOperation.zPass!==t.stencilTest.backOperation.zPass)&&n.push(moe),(e.sampleCoverage.enabled!==t.sampleCoverage.enabled||e.sampleCoverage.value!==t.sampleCoverage.value||e.sampleCoverage.invert!==t.sampleCoverage.invert)&&n.push(Aoe),n}Um.partialApply=function(e,t,n,i,o,r){if(t!==n){let f=n._applyFunctions[t.id];l(f)||(f=k1e(t,n),n._applyFunctions[t.id]=f);let h=f.length;for(let A=0;A<h;++A)f[A](e,n)}let s=l(i.scissorTest)?i.scissorTest:t.scissorTest,a=l(o.scissorTest)?o.scissorTest:n.scissorTest;(s!==a||r)&&aoe(e,n,o);let c=l(i.blendingEnabled)?i.blendingEnabled:t.blending.enabled,u=l(o.blendingEnabled)?o.blendingEnabled:n.blending.enabled;(c!==u||u&&t.blending!==n.blending)&&hoe(e,n,o),(t!==n||i!==o||i.context!==o.context)&&poe(e,n,o)};Um.getState=function(e){return{frontFace:e.frontFace,cull:{enabled:e.cull.enabled,face:e.cull.face},lineWidth:e.lineWidth,polygonOffset:{enabled:e.polygonOffset.enabled,factor:e.polygonOffset.factor,units:e.polygonOffset.units},scissorTest:{enabled:e.scissorTest.enabled,rectangle:Ye.clone(e.scissorTest.rectangle)},depthRange:{near:e.depthRange.near,far:e.depthRange.far},depthTest:{enabled:e.depthTest.enabled,func:e.depthTest.func},colorMask:{red:e.colorMask.red,green:e.colorMask.green,blue:e.colorMask.blue,alpha:e.colorMask.alpha},depthMask:e.depthMask,stencilMask:e.stencilMask,blending:{enabled:e.blending.enabled,color:G.clone(e.blending.color),equationRgb:e.blending.equationRgb,equationAlpha:e.blending.equationAlpha,functionSourceRgb:e.blending.functionSourceRgb,functionSourceAlpha:e.blending.functionSourceAlpha,functionDestinationRgb:e.blending.functionDestinationRgb,functionDestinationAlpha:e.blending.functionDestinationAlpha},stencilTest:{enabled:e.stencilTest.enabled,frontFunction:e.stencilTest.frontFunction,backFunction:e.stencilTest.backFunction,reference:e.stencilTest.reference,mask:e.stencilTest.mask,frontOperation:{fail:e.stencilTest.frontOperation.fail,zFail:e.stencilTest.frontOperation.zFail,zPass:e.stencilTest.frontOperation.zPass},backOperation:{fail:e.stencilTest.backOperation.fail,zFail:e.stencilTest.backOperation.zFail,zPass:e.stencilTest.backOperation.zPass}},sampleCoverage:{enabled:e.sampleCoverage.enabled,value:e.sampleCoverage.value,invert:e.sampleCoverage.invert},viewport:l(e.viewport)?Ye.clone(e.viewport):void 0}};var Ue=Um;var U1e=new d;function Lt(e){this._size=e.size,this._datatype=e.datatype,this.getValue=e.getValue}var Fa={};Fa[ee.FLOAT]="float";Fa[ee.FLOAT_VEC2]="vec2";Fa[ee.FLOAT_VEC3]="vec3";Fa[ee.FLOAT_VEC4]="vec4";Fa[ee.INT]="int";Fa[ee.INT_VEC2]="ivec2";Fa[ee.INT_VEC3]="ivec3";Fa[ee.INT_VEC4]="ivec4";Fa[ee.BOOL]="bool";Fa[ee.BOOL_VEC2]="bvec2";Fa[ee.BOOL_VEC3]="bvec3";Fa[ee.BOOL_VEC4]="bvec4";Fa[ee.FLOAT_MAT2]="mat2";Fa[ee.FLOAT_MAT3]="mat3";Fa[ee.FLOAT_MAT4]="mat4";Fa[ee.SAMPLER_2D]="sampler2D";Fa[ee.SAMPLER_CUBE]="samplerCube";Lt.prototype.getDeclaration=function(e){let t=`uniform ${Fa[this._datatype]} ${e}`,n=this._size;return n===1?t+=";":t+=`[${n.toString()}];`,t};var G1e={czm_viewport:new Lt({size:1,datatype:ee.FLOAT_VEC4,getValue:function(e){return e.viewportCartesian4}}),czm_viewportOrthographic:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.viewportOrthographic}}),czm_viewportTransformation:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.viewportTransformation}}),czm_globeDepthTexture:new Lt({size:1,datatype:ee.SAMPLER_2D,getValue:function(e){return e.globeDepthTexture}}),czm_model:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.model}}),czm_inverseModel:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseModel}}),czm_view:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.view}}),czm_view3D:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.view3D}}),czm_viewRotation:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.viewRotation}}),czm_viewRotation3D:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.viewRotation3D}}),czm_inverseView:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseView}}),czm_inverseView3D:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseView3D}}),czm_inverseViewRotation:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.inverseViewRotation}}),czm_inverseViewRotation3D:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.inverseViewRotation3D}}),czm_projection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.projection}}),czm_inverseProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseProjection}}),czm_infiniteProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.infiniteProjection}}),czm_modelView:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelView}}),czm_modelView3D:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelView3D}}),czm_modelViewRelativeToEye:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelViewRelativeToEye}}),czm_inverseModelView:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseModelView}}),czm_inverseModelView3D:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseModelView3D}}),czm_viewProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.viewProjection}}),czm_inverseViewProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseViewProjection}}),czm_modelViewProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelViewProjection}}),czm_inverseModelViewProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseModelViewProjection}}),czm_modelViewProjectionRelativeToEye:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelViewProjectionRelativeToEye}}),czm_modelViewInfiniteProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelViewInfiniteProjection}}),czm_orthographicIn3D:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.orthographicIn3D?1:0}}),czm_normal:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.normal}}),czm_normal3D:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.normal3D}}),czm_inverseNormal:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.inverseNormal}}),czm_inverseNormal3D:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.inverseNormal3D}}),czm_eyeHeight:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.eyeHeight}}),czm_eyeHeight2D:new Lt({size:1,datatype:ee.FLOAT_VEC2,getValue:function(e){return e.eyeHeight2D}}),czm_eyeEllipsoidNormalEC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.eyeEllipsoidNormalEC}}),czm_eyeEllipsoidCurvature:new Lt({size:1,datatype:ee.FLOAT_VEC2,getValue:function(e){return e.eyeEllipsoidCurvature}}),czm_modelToEnu:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelToEnu}}),czm_enuToModel:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.enuToModel}}),czm_entireFrustum:new Lt({size:1,datatype:ee.FLOAT_VEC2,getValue:function(e){return e.entireFrustum}}),czm_currentFrustum:new Lt({size:1,datatype:ee.FLOAT_VEC2,getValue:function(e){return e.currentFrustum}}),czm_frustumPlanes:new Lt({size:1,datatype:ee.FLOAT_VEC4,getValue:function(e){return e.frustumPlanes}}),czm_farDepthFromNearPlusOne:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.farDepthFromNearPlusOne}}),czm_log2FarDepthFromNearPlusOne:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.log2FarDepthFromNearPlusOne}}),czm_oneOverLog2FarDepthFromNearPlusOne:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.oneOverLog2FarDepthFromNearPlusOne}}),czm_sunPositionWC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sunPositionWC}}),czm_sunPositionColumbusView:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sunPositionColumbusView}}),czm_sunDirectionEC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sunDirectionEC}}),czm_sunDirectionWC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sunDirectionWC}}),czm_moonDirectionEC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.moonDirectionEC}}),czm_lightDirectionEC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.lightDirectionEC}}),czm_lightDirectionWC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.lightDirectionWC}}),czm_lightColor:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.lightColor}}),czm_lightColorHdr:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.lightColorHdr}}),czm_encodedCameraPositionMCHigh:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.encodedCameraPositionMCHigh}}),czm_encodedCameraPositionMCLow:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.encodedCameraPositionMCLow}}),czm_viewerPositionWC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return N.getTranslation(e.inverseView,U1e)}}),czm_frameNumber:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.frameState.frameNumber}}),czm_morphTime:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.frameState.morphTime}}),czm_sceneMode:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.frameState.mode}}),czm_pass:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.pass}}),czm_backgroundColor:new Lt({size:1,datatype:ee.FLOAT_VEC4,getValue:function(e){return e.backgroundColor}}),czm_brdfLut:new Lt({size:1,datatype:ee.SAMPLER_2D,getValue:function(e){return e.brdfLut}}),czm_environmentMap:new Lt({size:1,datatype:ee.SAMPLER_CUBE,getValue:function(e){return e.environmentMap}}),czm_specularEnvironmentMaps:new Lt({size:1,datatype:ee.SAMPLER_CUBE,getValue:function(e){return e.specularEnvironmentMaps}}),czm_specularEnvironmentMapsMaximumLOD:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.specularEnvironmentMapsMaximumLOD}}),czm_sphericalHarmonicCoefficients:new Lt({size:9,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sphericalHarmonicCoefficients}}),czm_temeToPseudoFixed:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.temeToPseudoFixedMatrix}}),czm_pixelRatio:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.pixelRatio}}),czm_fogDensity:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.fogDensity}}),czm_fogVisualDensityScalar:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.fogVisualDensityScalar}}),czm_fogMinimumBrightness:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.fogMinimumBrightness}}),czm_atmosphereHsbShift:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.atmosphereHsbShift}}),czm_atmosphereLightIntensity:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereLightIntensity}}),czm_atmosphereRayleighCoefficient:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.atmosphereRayleighCoefficient}}),czm_atmosphereRayleighScaleHeight:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereRayleighScaleHeight}}),czm_atmosphereMieCoefficient:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.atmosphereMieCoefficient}}),czm_atmosphereMieScaleHeight:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereMieScaleHeight}}),czm_atmosphereMieAnisotropy:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereMieAnisotropy}}),czm_atmosphereDynamicLighting:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereDynamicLighting}}),czm_splitPosition:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.splitPosition}}),czm_geometricToleranceOverMeter:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.geometricToleranceOverMeter}}),czm_minimumDisableDepthTestDistance:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.minimumDisableDepthTestDistance}}),czm_invertClassificationColor:new Lt({size:1,datatype:ee.FLOAT_VEC4,getValue:function(e){return e.invertClassificationColor}}),czm_gamma:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.gamma}}),czm_ellipsoidRadii:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.ellipsoid.radii}}),czm_ellipsoidInverseRadii:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.ellipsoid.oneOverRadii}})},rp=G1e;function z1e(e,t,n,i){switch(t.type){case e.FLOAT:return new goe(e,t,n,i);case e.FLOAT_VEC2:return new _oe(e,t,n,i);case e.FLOAT_VEC3:return new yoe(e,t,n,i);case e.FLOAT_VEC4:return new Coe(e,t,n,i);case e.SAMPLER_2D:case e.SAMPLER_3D:case e.SAMPLER_CUBE:return new HG(e,t,n,i);case e.UNSIGNED_INT_SAMPLER_2D:return new HG(e,t,n,i);case e.INT:case e.BOOL:return new Eoe(e,t,n,i);case e.INT_VEC2:case e.BOOL_VEC2:return new Ioe(e,t,n,i);case e.INT_VEC3:case e.BOOL_VEC3:return new xoe(e,t,n,i);case e.INT_VEC4:case e.BOOL_VEC4:return new boe(e,t,n,i);case e.FLOAT_MAT2:return new Toe(e,t,n,i);case e.FLOAT_MAT3:return new Soe(e,t,n,i);case e.FLOAT_MAT4:return new woe(e,t,n,i);default:throw new ce(`Unrecognized uniform type: ${t.type} for uniform "${n}".`)}}function goe(e,t,n,i){this.name=n,this.value=void 0,this._value=0,this._gl=e,this._location=i}goe.prototype.set=function(){this.value!==this._value&&(this._value=this.value,this._gl.uniform1f(this._location,this.value))};function _oe(e,t,n,i){this.name=n,this.value=void 0,this._value=new U,this._gl=e,this._location=i}_oe.prototype.set=function(){let e=this.value;U.equals(e,this._value)||(U.clone(e,this._value),this._gl.uniform2f(this._location,e.x,e.y))};function yoe(e,t,n,i){this.name=n,this.value=void 0,this._value=void 0,this._gl=e,this._location=i}yoe.prototype.set=function(){let e=this.value;l(e.red)?G.equals(e,this._value)||(this._value=G.clone(e,this._value),this._gl.uniform3f(this._location,e.red,e.green,e.blue)):l(e.x)&&(d.equals(e,this._value)||(this._value=d.clone(e,this._value),this._gl.uniform3f(this._location,e.x,e.y,e.z)))};function Coe(e,t,n,i){this.name=n,this.value=void 0,this._value=void 0,this._gl=e,this._location=i}Coe.prototype.set=function(){let e=this.value;l(e.red)?G.equals(e,this._value)||(this._value=G.clone(e,this._value),this._gl.uniform4f(this._location,e.red,e.green,e.blue,e.alpha)):l(e.x)&&(se.equals(e,this._value)||(this._value=se.clone(e,this._value),this._gl.uniform4f(this._location,e.x,e.y,e.z,e.w)))};function HG(e,t,n,i){this.name=n,this.value=void 0,this._gl=e,this._location=i,this.textureUnitIndex=void 0}HG.prototype.set=function(){let e=this._gl;e.activeTexture(e.TEXTURE0+this.textureUnitIndex);let t=this.value;e.bindTexture(t._target,t._texture)};HG.prototype._setSampler=function(e){return this.textureUnitIndex=e,this._gl.uniform1i(this._location,e),e+1};function Eoe(e,t,n,i){this.name=n,this.value=void 0,this._value=0,this._gl=e,this._location=i}Eoe.prototype.set=function(){this.value!==this._value&&(this._value=this.value,this._gl.uniform1i(this._location,this.value))};function Ioe(e,t,n,i){this.name=n,this.value=void 0,this._value=new U,this._gl=e,this._location=i}Ioe.prototype.set=function(){let e=this.value;U.equals(e,this._value)||(U.clone(e,this._value),this._gl.uniform2i(this._location,e.x,e.y))};function xoe(e,t,n,i){this.name=n,this.value=void 0,this._value=new d,this._gl=e,this._location=i}xoe.prototype.set=function(){let e=this.value;d.equals(e,this._value)||(d.clone(e,this._value),this._gl.uniform3i(this._location,e.x,e.y,e.z))};function boe(e,t,n,i){this.name=n,this.value=void 0,this._value=new se,this._gl=e,this._location=i}boe.prototype.set=function(){let e=this.value;se.equals(e,this._value)||(se.clone(e,this._value),this._gl.uniform4i(this._location,e.x,e.y,e.z,e.w))};var V1e=new Float32Array(4);function Toe(e,t,n,i){this.name=n,this.value=void 0,this._value=new Gi,this._gl=e,this._location=i}Toe.prototype.set=function(){if(!Gi.equalsArray(this.value,this._value,0)){Gi.clone(this.value,this._value);let e=Gi.toArray(this.value,V1e);this._gl.uniformMatrix2fv(this._location,!1,e)}};var H1e=new Float32Array(9);function Soe(e,t,n,i){this.name=n,this.value=void 0,this._value=new J,this._gl=e,this._location=i}Soe.prototype.set=function(){if(!J.equalsArray(this.value,this._value,0)){J.clone(this.value,this._value);let e=J.toArray(this.value,H1e);this._gl.uniformMatrix3fv(this._location,!1,e)}};var W1e=new Float32Array(16);function woe(e,t,n,i){this.name=n,this.value=void 0,this._value=new N,this._gl=e,this._location=i}woe.prototype.set=function(){if(!N.equalsArray(this.value,this._value,0)){N.clone(this.value,this._value);let e=N.toArray(this.value,W1e);this._gl.uniformMatrix4fv(this._location,!1,e)}};var yD=z1e;function j1e(e,t,n,i){switch(t.type){case e.FLOAT:return new Boe(e,t,n,i);case e.FLOAT_VEC2:return new Doe(e,t,n,i);case e.FLOAT_VEC3:return new voe(e,t,n,i);case e.FLOAT_VEC4:return new Poe(e,t,n,i);case e.SAMPLER_2D:case e.SAMPLER_3D:case e.SAMPLER_CUBE:return new U6(e,t,n,i);case e.INT:case e.BOOL:return new Roe(e,t,n,i);case e.INT_VEC2:case e.BOOL_VEC2:return new Moe(e,t,n,i);case e.INT_VEC3:case e.BOOL_VEC3:return new Noe(e,t,n,i);case e.INT_VEC4:case e.BOOL_VEC4:return new Loe(e,t,n,i);case e.FLOAT_MAT2:return new Ooe(e,t,n,i);case e.FLOAT_MAT3:return new Foe(e,t,n,i);case e.FLOAT_MAT4:return new Qoe(e,t,n,i);default:throw new ce(`Unrecognized uniform type: ${t.type} for uniform "${n}".`)}}function Boe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o),this._gl=e,this._location=i[0]}Boe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1;for(let o=0;o<t;++o){let r=e[o];r!==n[o]&&(n[o]=r,i=!0)}i&&this._gl.uniform1fv(this._location,n)};function Doe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*2),this._gl=e,this._location=i[0]}Doe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];U.equalsArray(s,n,o)||(U.pack(s,n,o),i=!0),o+=2}i&&this._gl.uniform2fv(this._location,n)};function voe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*3),this._gl=e,this._location=i[0]}voe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];l(s.red)?(s.red!==n[o]||s.green!==n[o+1]||s.blue!==n[o+2])&&(n[o]=s.red,n[o+1]=s.green,n[o+2]=s.blue,i=!0):l(s.x)&&(d.equalsArray(s,n,o)||(d.pack(s,n,o),i=!0)),o+=3}i&&this._gl.uniform3fv(this._location,n)};function Poe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*4),this._gl=e,this._location=i[0]}Poe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];l(s.red)?G.equalsArray(s,n,o)||(G.pack(s,n,o),i=!0):l(s.x)&&(se.equalsArray(s,n,o)||(se.pack(s,n,o),i=!0)),o+=4}i&&this._gl.uniform4fv(this._location,n)};function U6(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o),this._gl=e,this._locations=i,this.textureUnitIndex=void 0}U6.prototype.set=function(){let e=this._gl,t=e.TEXTURE0+this.textureUnitIndex,n=this.value,i=n.length;for(let o=0;o<i;++o){let r=n[o];e.activeTexture(t+o),e.bindTexture(r._target,r._texture)}};U6.prototype._setSampler=function(e){this.textureUnitIndex=e;let t=this._locations,n=t.length;for(let i=0;i<n;++i){let o=e+i;this._gl.uniform1i(t[i],o)}return e+n};function Roe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o),this._gl=e,this._location=i[0]}Roe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1;for(let o=0;o<t;++o){let r=e[o];r!==n[o]&&(n[o]=r,i=!0)}i&&this._gl.uniform1iv(this._location,n)};function Moe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o*2),this._gl=e,this._location=i[0]}Moe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];U.equalsArray(s,n,o)||(U.pack(s,n,o),i=!0),o+=2}i&&this._gl.uniform2iv(this._location,n)};function Noe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o*3),this._gl=e,this._location=i[0]}Noe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];d.equalsArray(s,n,o)||(d.pack(s,n,o),i=!0),o+=3}i&&this._gl.uniform3iv(this._location,n)};function Loe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o*4),this._gl=e,this._location=i[0]}Loe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];se.equalsArray(s,n,o)||(se.pack(s,n,o),i=!0),o+=4}i&&this._gl.uniform4iv(this._location,n)};function Ooe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*4),this._gl=e,this._location=i[0]}Ooe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];Gi.equalsArray(s,n,o)||(Gi.pack(s,n,o),i=!0),o+=4}i&&this._gl.uniformMatrix2fv(this._location,!1,n)};function Foe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*9),this._gl=e,this._location=i[0]}Foe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];J.equalsArray(s,n,o)||(J.pack(s,n,o),i=!0),o+=9}i&&this._gl.uniformMatrix3fv(this._location,!1,n)};function Qoe(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*16),this._gl=e,this._location=i[0]}Qoe.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];N.equalsArray(s,n,o)||(N.pack(s,n,o),i=!0),o+=16}i&&this._gl.uniformMatrix4fv(this._location,!1,n)};var CD=j1e;var Y1e=0;function sp(e){let t=e.vertexShaderText,n=e.fragmentShaderText;typeof spector<"u"&&(t=t.replace(/^#line/gm,"//#line"),n=n.replace(/^#line/gm,"//#line"));let i=q1e(t,n);this._gl=e.gl,this._logShaderCompilation=e.logShaderCompilation,this._debugShaders=e.debugShaders,this._attributeLocations=e.attributeLocations,this._program=void 0,this._numberOfVertexAttributes=void 0,this._vertexAttributes=void 0,this._uniformsByName=void 0,this._uniforms=void 0,this._automaticUniforms=void 0,this._manualUniforms=void 0,this._duplicateUniformNames=i.duplicateUniformNames,this._cachedShader=void 0,this.maximumTextureUnitIndex=void 0,this._vertexShaderSource=e.vertexShaderSource,this._vertexShaderText=e.vertexShaderText,this._fragmentShaderSource=e.fragmentShaderSource,this._fragmentShaderText=i.fragmentShaderText,this.id=Y1e++}sp.fromCache=function(e){return e=e??V.EMPTY_OBJECT,e.context.shaderCache.getShaderProgram(e)};sp.replaceCache=function(e){return e=e??V.EMPTY_OBJECT,e.context.shaderCache.replaceShaderProgram(e)};Object.defineProperties(sp.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},vertexAttributes:{get:function(){return WG(this),this._vertexAttributes}},numberOfVertexAttributes:{get:function(){return WG(this),this._numberOfVertexAttributes}},allUniforms:{get:function(){return WG(this),this._uniformsByName}}});function koe(e){let t=[],n=e.match(/uniform.*?(?![^{]*})(?=[=\[;])/g);if(l(n)){let i=n.length;for(let o=0;o<i;o++){let r=n[o].trim(),s=r.slice(r.lastIndexOf(" ")+1);t.push(s)}}return t}function q1e(e,t){let n={};if(!Yt.highpFloatSupported||!Yt.highpIntSupported){let i,o,r,s,a=koe(e),c=koe(t),u=a.length,f=c.length;for(i=0;i<u;i++)for(o=0;o<f;o++)if(a[i]===c[o]){r=a[i],s=`czm_mediump_${r}`;let h=new RegExp(`${r}\\b`,"g");t=t.replace(h,s),n[s]=r}}return{fragmentShaderText:t,duplicateUniformNames:n}}var Gm="[Cesium WebGL] ";function K1e(e,t){let n=t._vertexShaderText,i=t._fragmentShaderText,o=e.createShader(e.VERTEX_SHADER);e.shaderSource(o,n),e.compileShader(o);let r=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(r,i),e.compileShader(r);let s=e.createProgram();e.attachShader(s,o),e.attachShader(s,r);let a=t._attributeLocations;if(l(a))for(let A in a)a.hasOwnProperty(A)&&e.bindAttribLocation(s,a[A],A);e.linkProgram(s);let c;if(e.getProgramParameter(s,e.LINK_STATUS))return t._logShaderCompilation&&(c=e.getShaderInfoLog(o),l(c)&&c.length>0&&console.log(`${Gm}Vertex shader compile log: ${c}`),c=e.getShaderInfoLog(r),l(c)&&c.length>0&&console.log(`${Gm}Fragment shader compile log: ${c}`),c=e.getProgramInfoLog(s),l(c)&&c.length>0&&console.log(`${Gm}Shader program link log: ${c}`)),e.deleteShader(o),e.deleteShader(r),s;let u,f=t._debugShaders;throw e.getShaderParameter(r,e.COMPILE_STATUS)?e.getShaderParameter(o,e.COMPILE_STATUS)?(c=e.getProgramInfoLog(s),console.error(`${Gm}Shader program link log: ${c}`),h(o,"vertex"),h(r,"fragment"),u=`Program failed to link. Link log: ${c}`):(c=e.getShaderInfoLog(o),console.error(`${Gm}Vertex shader compile log: ${c}`),console.error(`${Gm} Vertex shader source: +${n}`),u=`Vertex shader failed to compile. Compile log: ${c}`):(c=e.getShaderInfoLog(r),console.error(`${Gm}Fragment shader compile log: ${c}`),console.error(`${Gm} Fragment shader source: +${i}`),u=`Fragment shader failed to compile. Compile log: ${c}`),e.deleteShader(o),e.deleteShader(r),e.deleteProgram(s),new ce(u);function h(A,g){if(!l(f))return;let m=f.getTranslatedShaderSource(A);if(m===""){console.error(`${Gm}${g} shader translation failed.`);return}console.error(`${Gm}Translated ${g} shaderSource: +${m}`)}}function X1e(e,t,n){let i={};for(let o=0;o<n;++o){let r=e.getActiveAttrib(t,o),s=e.getAttribLocation(t,r.name);i[r.name]={name:r.name,type:r.type,index:s}}return i}function J1e(e,t){let n={},i=[],o=[],r=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let s=0;s<r;++s){let a=e.getActiveUniform(t,s),c="[0]",u=a.name.indexOf(c,a.name.length-c.length)!==-1?a.name.slice(0,a.name.length-3):a.name;if(u.indexOf("gl_")!==0)if(a.name.indexOf("[")<0){let f=e.getUniformLocation(t,u);if(f!==null){let h=yD(e,a,u,f);n[u]=h,i.push(h),h._setSampler&&o.push(h)}}else{let f,h,A,g,m=u.indexOf("[");if(m>=0){if(f=n[u.slice(0,m)],!l(f))continue;h=f._locations,h.length<=1&&(A=f.value,g=e.getUniformLocation(t,u),g!==null&&(h.push(g),A.push(e.getUniform(t,g))))}else{h=[];for(let _=0;_<a.size;++_)g=e.getUniformLocation(t,`${u}[${_}]`),g!==null&&h.push(g);f=CD(e,a,u,h),n[u]=f,i.push(f),f._setSampler&&o.push(f)}}}return{uniformsByName:n,uniforms:i,samplerUniforms:o}}function Z1e(e,t){let n=[],i=[];for(let o in t)if(t.hasOwnProperty(o)){let r=t[o],s=o,a=e._duplicateUniformNames[s];l(a)&&(r.name=a,s=a);let c=rp[s];l(c)?n.push({uniform:r,automaticUniform:c}):i.push(r)}return{automaticUniforms:n,manualUniforms:i}}function $1e(e,t,n){e.useProgram(t);let i=0,o=n.length;for(let r=0;r<o;++r)i=n[r]._setSampler(i);return e.useProgram(null),i}function WG(e){l(e._program)||Uoe(e)}function Uoe(e){let t=e._program,n=e._gl,i=K1e(n,e,e._debugShaders),o=n.getProgramParameter(i,n.ACTIVE_ATTRIBUTES),r=J1e(n,i),s=Z1e(e,r.uniformsByName);e._program=i,e._numberOfVertexAttributes=o,e._vertexAttributes=X1e(n,i,o),e._uniformsByName=r.uniformsByName,e._uniforms=r.uniforms,e._automaticUniforms=s.automaticUniforms,e._manualUniforms=s.manualUniforms,e.maximumTextureUnitIndex=$1e(n,i,r.samplerUniforms),t&&e._gl.deleteProgram(t),typeof spector<"u"&&(e._program.__SPECTOR_rebuildProgram=function(a,c,u,f){let h=e._vertexShaderText,A=e._fragmentShaderText,g=/ ! = /g;e._vertexShaderText=a.replace(g," != "),e._fragmentShaderText=c.replace(g," != ");try{Uoe(e),u(e._program)}catch(m){e._vertexShaderText=h,e._fragmentShaderText=A;let y=/(?:Compile|Link) error: ([^]*)/.exec(m.message);f(y?y[1]:m.message)}})}sp.prototype._bind=function(){WG(this),this._gl.useProgram(this._program)};sp.prototype._setUniforms=function(e,t,n){let i,o;if(l(e)){let a=this._manualUniforms;for(i=a.length,o=0;o<i;++o){let c=a[o];c.value=e[c.name]()}}let r=this._automaticUniforms;for(i=r.length,o=0;o<i;++o){let a=r[o];a.uniform.value=a.automaticUniform.getValue(t)}let s=this._uniforms;for(i=s.length,o=0;o<i;++o)s[o].set();if(n){let a=this._gl,c=this._program;a.validateProgram(c)}};sp.prototype.isDestroyed=function(){return!1};sp.prototype.destroy=function(){this._cachedShader.cache.releaseShaderProgram(this)};sp.prototype.finalDestroy=function(){return this._gl.deleteProgram(this._program),ue(this)};var an=sp;var ED=`/** + * A built-in GLSL floating-point constant for converting radians to degrees. + * + * @alias czm_degreesPerRadian + * @glslConstant + * + * @see CesiumMath.DEGREES_PER_RADIAN + * + * @example + * // GLSL declaration + * const float czm_degreesPerRadian = ...; + * + * // Example + * float deg = czm_degreesPerRadian * rad; + */ +const float czm_degreesPerRadian = 57.29577951308232; +`;var ID=`/** + * A built-in GLSL vec2 constant for defining the depth range. + * This is a workaround to a bug where IE11 does not implement gl_DepthRange. + * + * @alias czm_depthRange + * @glslConstant + * + * @example + * // GLSL declaration + * float depthRangeNear = czm_depthRange.near; + * float depthRangeFar = czm_depthRange.far; + * + */ +const czm_depthRangeStruct czm_depthRange = czm_depthRangeStruct(0.0, 1.0); +`;var xD=`/** + * 0.1 + * + * @name czm_epsilon1 + * @glslConstant + */ +const float czm_epsilon1 = 0.1; +`;var bD=`/** + * 0.01 + * + * @name czm_epsilon2 + * @glslConstant + */ +const float czm_epsilon2 = 0.01; +`;var TD=`/** + * 0.001 + * + * @name czm_epsilon3 + * @glslConstant + */ +const float czm_epsilon3 = 0.001; +`;var SD=`/** + * 0.0001 + * + * @name czm_epsilon4 + * @glslConstant + */ +const float czm_epsilon4 = 0.0001; +`;var wD=`/** + * 0.00001 + * + * @name czm_epsilon5 + * @glslConstant + */ +const float czm_epsilon5 = 0.00001; +`;var BD=`/** + * 0.000001 + * + * @name czm_epsilon6 + * @glslConstant + */ +const float czm_epsilon6 = 0.000001; +`;var DD=`/** + * 0.0000001 + * + * @name czm_epsilon7 + * @glslConstant + */ +const float czm_epsilon7 = 0.0000001; +`;var vD=`/** + * DOC_TBA + * + * @name czm_infinity + * @glslConstant + */ +const float czm_infinity = 5906376272000.0; // Distance from the Sun to Pluto in meters. TODO: What is best given lowp, mediump, and highp? +`;var PD=`/** + * A built-in GLSL floating-point constant for <code>1/pi</code>. + * + * @alias czm_oneOverPi + * @glslConstant + * + * @see CesiumMath.ONE_OVER_PI + * + * @example + * // GLSL declaration + * const float czm_oneOverPi = ...; + * + * // Example + * float pi = 1.0 / czm_oneOverPi; + */ +const float czm_oneOverPi = 0.3183098861837907; +`;var RD=`/** + * A built-in GLSL floating-point constant for <code>1/2pi</code>. + * + * @alias czm_oneOverTwoPi + * @glslConstant + * + * @see CesiumMath.ONE_OVER_TWO_PI + * + * @example + * // GLSL declaration + * const float czm_oneOverTwoPi = ...; + * + * // Example + * float pi = 2.0 * czm_oneOverTwoPi; + */ +const float czm_oneOverTwoPi = 0.15915494309189535; +`;var MD=`/** + * The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE} + * + * @name czm_passCesium3DTile + * @glslConstant + * + * @see czm_pass + */ +const float czm_passCesium3DTile = 4.0; +`;var ND=`/** + * The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE_CLASSIFICATION} + * + * @name czm_passCesium3DTileClassification + * @glslConstant + * + * @see czm_pass + */ +const float czm_passCesium3DTileClassification = 5.0; +`;var LD=`/** + * The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW} + * + * @name czm_passCesium3DTileClassificationIgnoreShow + * @glslConstant + * + * @see czm_pass + */ +const float czm_passCesium3DTileClassificationIgnoreShow = 6.0; +`;var OD=`/** + * The automatic GLSL constant for {@link Pass#CLASSIFICATION} + * + * @name czm_passClassification + * @glslConstant + * + * @see czm_pass + */ +const float czm_passClassification = 7.0; +`;var FD=`/** + * The automatic GLSL constant for {@link Pass#COMPUTE} + * + * @name czm_passCompute + * @glslConstant + * + * @see czm_pass + */ +const float czm_passCompute = 1.0; +`;var QD=`/** + * The automatic GLSL constant for {@link Pass#ENVIRONMENT} + * + * @name czm_passEnvironment + * @glslConstant + * + * @see czm_pass + */ +const float czm_passEnvironment = 0.0; +`;var kD=`/** + * The automatic GLSL constant for {@link Pass#GAUSSIAN_SPLATS} + * + * @name czm_passGaussianSplats + * @glslConstant + * + * @see czm_pass + */ +const float czm_passGaussianSplats = 10.0; +`;var UD=`/** + * The automatic GLSL constant for {@link Pass#GLOBE} + * + * @name czm_passGlobe + * @glslConstant + * + * @see czm_pass + */ +const float czm_passGlobe = 2.0; +`;var GD=`/** + * The automatic GLSL constant for {@link Pass#OPAQUE} + * + * @name czm_passOpaque + * @glslConstant + * + * @see czm_pass + */ +const float czm_passOpaque = 7.0; +`;var zD=`/** + * The automatic GLSL constant for {@link Pass#OVERLAY} + * + * @name czm_passOverlay + * @glslConstant + * + * @see czm_pass + */ +const float czm_passOverlay = 11.0; +`;var VD=`/** + * The automatic GLSL constant for {@link Pass#TERRAIN_CLASSIFICATION} + * + * @name czm_passTerrainClassification + * @glslConstant + * + * @see czm_pass + */ +const float czm_passTerrainClassification = 3.0; +`;var HD=`/** + * The automatic GLSL constant for {@link Pass#TRANSLUCENT} + * + * @name czm_passTranslucent + * @glslConstant + * + * @see czm_pass + */ +const float czm_passTranslucent = 8.0; +`;var WD=`/** + * The automatic GLSL constant for {@link Pass#VOXELS} + * + * @name czm_passVoxels + * @glslConstant + * + * @see czm_pass + */ +const float czm_passVoxels = 9.0; +`;var jD=`/** + * A built-in GLSL floating-point constant for <code>Math.PI</code>. + * + * @alias czm_pi + * @glslConstant + * + * @see CesiumMath.PI + * + * @example + * // GLSL declaration + * const float czm_pi = ...; + * + * // Example + * float twoPi = 2.0 * czm_pi; + */ +const float czm_pi = 3.141592653589793; +`;var YD=`/** + * A built-in GLSL floating-point constant for <code>pi/4</code>. + * + * @alias czm_piOverFour + * @glslConstant + * + * @see CesiumMath.PI_OVER_FOUR + * + * @example + * // GLSL declaration + * const float czm_piOverFour = ...; + * + * // Example + * float pi = 4.0 * czm_piOverFour; + */ +const float czm_piOverFour = 0.7853981633974483; +`;var qD=`/** + * A built-in GLSL floating-point constant for <code>pi/6</code>. + * + * @alias czm_piOverSix + * @glslConstant + * + * @see CesiumMath.PI_OVER_SIX + * + * @example + * // GLSL declaration + * const float czm_piOverSix = ...; + * + * // Example + * float pi = 6.0 * czm_piOverSix; + */ +const float czm_piOverSix = 0.5235987755982988; +`;var KD=`/** + * A built-in GLSL floating-point constant for <code>pi/3</code>. + * + * @alias czm_piOverThree + * @glslConstant + * + * @see CesiumMath.PI_OVER_THREE + * + * @example + * // GLSL declaration + * const float czm_piOverThree = ...; + * + * // Example + * float pi = 3.0 * czm_piOverThree; + */ +const float czm_piOverThree = 1.0471975511965976; +`;var XD=`/** + * A built-in GLSL floating-point constant for <code>pi/2</code>. + * + * @alias czm_piOverTwo + * @glslConstant + * + * @see CesiumMath.PI_OVER_TWO + * + * @example + * // GLSL declaration + * const float czm_piOverTwo = ...; + * + * // Example + * float pi = 2.0 * czm_piOverTwo; + */ +const float czm_piOverTwo = 1.5707963267948966; +`;var JD=`/** + * A built-in GLSL floating-point constant for converting degrees to radians. + * + * @alias czm_radiansPerDegree + * @glslConstant + * + * @see CesiumMath.RADIANS_PER_DEGREE + * + * @example + * // GLSL declaration + * const float czm_radiansPerDegree = ...; + * + * // Example + * float rad = czm_radiansPerDegree * deg; + */ +const float czm_radiansPerDegree = 0.017453292519943295; +`;var ZD=`/** + * The constant identifier for the 2D {@link SceneMode} + * + * @name czm_sceneMode2D + * @glslConstant + * @see czm_sceneMode + * @see czm_sceneModeColumbusView + * @see czm_sceneMode3D + * @see czm_sceneModeMorphing + */ +const float czm_sceneMode2D = 2.0; +`;var $D=`/** + * The constant identifier for the 3D {@link SceneMode} + * + * @name czm_sceneMode3D + * @glslConstant + * @see czm_sceneMode + * @see czm_sceneMode2D + * @see czm_sceneModeColumbusView + * @see czm_sceneModeMorphing + */ +const float czm_sceneMode3D = 3.0; +`;var ev=`/** + * The constant identifier for the Columbus View {@link SceneMode} + * + * @name czm_sceneModeColumbusView + * @glslConstant + * @see czm_sceneMode + * @see czm_sceneMode2D + * @see czm_sceneMode3D + * @see czm_sceneModeMorphing + */ +const float czm_sceneModeColumbusView = 1.0; +`;var tv=`/** + * The constant identifier for the Morphing {@link SceneMode} + * + * @name czm_sceneModeMorphing + * @glslConstant + * @see czm_sceneMode + * @see czm_sceneMode2D + * @see czm_sceneModeColumbusView + * @see czm_sceneMode3D + */ +const float czm_sceneModeMorphing = 0.0; +`;var nv=`/** + * A built-in GLSL floating-point constant for one solar radius. + * + * @alias czm_solarRadius + * @glslConstant + * + * @see CesiumMath.SOLAR_RADIUS + * + * @example + * // GLSL declaration + * const float czm_solarRadius = ...; + */ +const float czm_solarRadius = 695500000.0; +`;var iv=`/** + * A built-in GLSL floating-point constant for <code>3pi/2</code>. + * + * @alias czm_threePiOver2 + * @glslConstant + * + * @see CesiumMath.THREE_PI_OVER_TWO + * + * @example + * // GLSL declaration + * const float czm_threePiOver2 = ...; + * + * // Example + * float pi = (2.0 / 3.0) * czm_threePiOver2; + */ +const float czm_threePiOver2 = 4.71238898038469; +`;var ov=`/** + * A built-in GLSL floating-point constant for <code>2pi</code>. + * + * @alias czm_twoPi + * @glslConstant + * + * @see CesiumMath.TWO_PI + * + * @example + * // GLSL declaration + * const float czm_twoPi = ...; + * + * // Example + * float pi = czm_twoPi / 2.0; + */ +const float czm_twoPi = 6.283185307179586; +`;var rv=`/** + * The maximum latitude, in radians, both North and South, supported by a Web Mercator + * (EPSG:3857) projection. Technically, the Mercator projection is defined + * for any latitude up to (but not including) 90 degrees, but it makes sense + * to cut it off sooner because it grows exponentially with increasing latitude. + * The logic behind this particular cutoff value, which is the one used by + * Google Maps, Bing Maps, and Esri, is that it makes the projection + * square. That is, the rectangle is equal in the X and Y directions. + * + * The constant value is computed as follows: + * czm_pi * 0.5 - (2.0 * atan(exp(-czm_pi))) + * + * @name czm_webMercatorMaxLatitude + * @glslConstant + */ +const float czm_webMercatorMaxLatitude = 1.4844222297453324; +`;var sv=`/** + * @name czm_depthRangeStruct + * @glslStruct + */ +struct czm_depthRangeStruct +{ + float near; + float far; +}; +`;var av=`/** + * Holds material information that can be used for lighting. Returned by all czm_getMaterial functions. + * + * @name czm_material + * @glslStruct + * + * @property {vec3} diffuse Incoming light that scatters evenly in all directions. + * @property {float} specular Intensity of incoming light reflecting in a single direction. + * @property {float} shininess The sharpness of the specular reflection. Higher values create a smaller, more focused specular highlight. + * @property {vec3} normal Surface's normal in eye coordinates. It is used for effects such as normal mapping. The default is the surface's unmodified normal. + * @property {vec3} emission Light emitted by the material equally in all directions. The default is vec3(0.0), which emits no light. + * @property {float} alpha Alpha of this material. 0.0 is completely transparent; 1.0 is completely opaque. + */ +struct czm_material +{ + vec3 diffuse; + float specular; + float shininess; + vec3 normal; + vec3 emission; + float alpha; +}; +`;var cv=`/** + * Used as input to every material's czm_getMaterial function. + * + * @name czm_materialInput + * @glslStruct + * + * @property {float} s 1D texture coordinates. + * @property {vec2} st 2D texture coordinates. + * @property {vec3} str 3D texture coordinates. + * @property {vec3} normalEC Unperturbed surface normal in eye coordinates. + * @property {mat3} tangentToEyeMatrix Matrix for converting a tangent space normal to eye space. + * @property {vec3} positionToEyeEC Vector from the fragment to the eye in eye coordinates. The magnitude is the distance in meters from the fragment to the eye. + * @property {float} height The height of the terrain in meters above or below the ellipsoid. Only available for globe materials. + * @property {float} slope The slope of the terrain in radians. 0 is flat; pi/2 is vertical. Only available for globe materials. + * @property {float} aspect The aspect of the terrain in radians. 0 is East, pi/2 is North, pi is West, 3pi/2 is South. Only available for globe materials. +* @property {float} waterMask The value of the water mask. 0 is land, 1 is water. Only available for globe materials. + */ +struct czm_materialInput +{ + float s; + vec2 st; + vec3 str; + vec3 normalEC; + mat3 tangentToEyeMatrix; + vec3 positionToEyeEC; + float height; + float slope; + float aspect; + float waterMask; +}; +`;var lv=`/** + * Struct for representing a material for a {@link Model}. The model + * rendering pipeline will pass this struct between material, custom shaders, + * and lighting stages. This is not to be confused with {@link czm_material} + * which is used by the older Fabric materials system, although they are similar. + * <p> + * All color values (diffuse, specular, emissive) are in linear color space. + * </p> + * + * @name czm_modelMaterial + * @glslStruct + * + * @property {vec4} baseColor The base color of the material. + * @property {vec3} diffuse Incoming light that scatters evenly in all directions. + * @property {float} alpha Alpha of this material. 0.0 is completely transparent; 1.0 is completely opaque. + * @property {vec3} specular Color of reflected light at normal incidence in PBR materials. This is sometimes referred to as f0 in the literature. + * @property {float} roughness A number from 0.0 to 1.0 representing how rough the surface is. Values near 0.0 produce glossy surfaces, while values near 1.0 produce rough surfaces. + * @property {vec3} normalEC Surface's normal in eye coordinates. It is used for effects such as normal mapping. The default is the surface's unmodified normal. + * @property {float} occlusion Ambient occlusion recieved at this point on the material. 1.0 means fully lit, 0.0 means fully occluded. + * @property {vec3} emissive Light emitted by the material equally in all directions. The default is vec3(0.0), which emits no light. + */ +struct czm_modelMaterial { + vec4 baseColor; + vec3 diffuse; + float alpha; + vec3 specular; + float roughness; + vec3 normalEC; + float occlusion; + vec3 emissive; +#ifdef USE_SPECULAR + float specularWeight; +#endif +#ifdef USE_ANISOTROPY + vec3 anisotropicT; + vec3 anisotropicB; + float anisotropyStrength; +#endif +#ifdef USE_CLEARCOAT + float clearcoatFactor; + float clearcoatRoughness; + vec3 clearcoatNormal; + // Add clearcoatF0 when KHR_materials_ior is implemented +#endif +}; +`;var uv=`/** + * Struct for representing the output of a custom vertex shader. + * + * @name czm_modelVertexOutput + * @glslStruct + * + * @see {@link CustomShader} + * @see {@link Model} + * + * @property {vec3} positionMC The position of the vertex in model coordinates + * @property {float} pointSize A custom value for gl_PointSize. This is only used for point primitives. + */ +struct czm_modelVertexOutput { + vec3 positionMC; + float pointSize; +}; +`;var fv=`/** + * DOC_TBA + * + * @name czm_ray + * @glslStruct + */ +struct czm_ray +{ + vec3 origin; + vec3 direction; +}; +`;var dv=`/** + * DOC_TBA + * + * @name czm_raySegment + * @glslStruct + */ +struct czm_raySegment +{ + float start; + float stop; +}; + +/** + * DOC_TBA + * + * @name czm_emptyRaySegment + * @glslConstant + */ +const czm_raySegment czm_emptyRaySegment = czm_raySegment(-czm_infinity, -czm_infinity); + +/** + * DOC_TBA + * + * @name czm_fullRaySegment + * @glslConstant + */ +const czm_raySegment czm_fullRaySegment = czm_raySegment(0.0, czm_infinity); +`;var hv=`struct czm_shadowParameters +{ +#ifdef USE_CUBE_MAP_SHADOW + vec3 texCoords; +#else + vec2 texCoords; +#endif + + float depthBias; + float depth; + float nDotL; + vec2 texelStepSize; + float normalShadingSmooth; + float darkness; +}; +`;var mv=`/** + * Converts an HSB color (hue, saturation, brightness) to RGB + * HSB <-> RGB conversion with minimal branching: {@link http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl} + * + * @name czm_HSBToRGB + * @glslFunction + * + * @param {vec3} hsb The color in HSB. + * + * @returns {vec3} The color in RGB. + * + * @example + * vec3 hsb = czm_RGBToHSB(rgb); + * hsb.z *= 0.1; + * rgb = czm_HSBToRGB(hsb); + */ + +const vec4 K_HSB2RGB = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + +vec3 czm_HSBToRGB(vec3 hsb) +{ + vec3 p = abs(fract(hsb.xxx + K_HSB2RGB.xyz) * 6.0 - K_HSB2RGB.www); + return hsb.z * mix(K_HSB2RGB.xxx, clamp(p - K_HSB2RGB.xxx, 0.0, 1.0), hsb.y); +} +`;var Av=`/** + * Converts an HSL color (hue, saturation, lightness) to RGB + * HSL <-> RGB conversion: {@link http://www.chilliant.com/rgb2hsv.html} + * + * @name czm_HSLToRGB + * @glslFunction + * + * @param {vec3} rgb The color in HSL. + * + * @returns {vec3} The color in RGB. + * + * @example + * vec3 hsl = czm_RGBToHSL(rgb); + * hsl.z *= 0.1; + * rgb = czm_HSLToRGB(hsl); + */ + +vec3 hueToRGB(float hue) +{ + float r = abs(hue * 6.0 - 3.0) - 1.0; + float g = 2.0 - abs(hue * 6.0 - 2.0); + float b = 2.0 - abs(hue * 6.0 - 4.0); + return clamp(vec3(r, g, b), 0.0, 1.0); +} + +vec3 czm_HSLToRGB(vec3 hsl) +{ + vec3 rgb = hueToRGB(hsl.x); + float c = (1.0 - abs(2.0 * hsl.z - 1.0)) * hsl.y; + return (rgb - 0.5) * c + hsl.z; +} +`;var pv=`/** + * Converts an RGB color to HSB (hue, saturation, brightness) + * HSB <-> RGB conversion with minimal branching: {@link http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl} + * + * @name czm_RGBToHSB + * @glslFunction + * + * @param {vec3} rgb The color in RGB. + * + * @returns {vec3} The color in HSB. + * + * @example + * vec3 hsb = czm_RGBToHSB(rgb); + * hsb.z *= 0.1; + * rgb = czm_HSBToRGB(hsb); + */ + +const vec4 K_RGB2HSB = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + +vec3 czm_RGBToHSB(vec3 rgb) +{ + vec4 p = mix(vec4(rgb.bg, K_RGB2HSB.wz), vec4(rgb.gb, K_RGB2HSB.xy), step(rgb.b, rgb.g)); + vec4 q = mix(vec4(p.xyw, rgb.r), vec4(rgb.r, p.yzx), step(p.x, rgb.r)); + + float d = q.x - min(q.w, q.y); + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + czm_epsilon7)), d / (q.x + czm_epsilon7), q.x); +} +`;var gv=`/** + * Converts an RGB color to HSL (hue, saturation, lightness) + * HSL <-> RGB conversion: {@link http://www.chilliant.com/rgb2hsv.html} + * + * @name czm_RGBToHSL + * @glslFunction + * + * @param {vec3} rgb The color in RGB. + * + * @returns {vec3} The color in HSL. + * + * @example + * vec3 hsl = czm_RGBToHSL(rgb); + * hsl.z *= 0.1; + * rgb = czm_HSLToRGB(hsl); + */ + +vec3 RGBtoHCV(vec3 rgb) +{ + // Based on work by Sam Hocevar and Emil Persson + vec4 p = (rgb.g < rgb.b) ? vec4(rgb.bg, -1.0, 2.0 / 3.0) : vec4(rgb.gb, 0.0, -1.0 / 3.0); + vec4 q = (rgb.r < p.x) ? vec4(p.xyw, rgb.r) : vec4(rgb.r, p.yzx); + float c = q.x - min(q.w, q.y); + float h = abs((q.w - q.y) / (6.0 * c + czm_epsilon7) + q.z); + return vec3(h, c, q.x); +} + +vec3 czm_RGBToHSL(vec3 rgb) +{ + vec3 hcv = RGBtoHCV(rgb); + float l = hcv.z - hcv.y * 0.5; + float s = hcv.y / (1.0 - abs(l * 2.0 - 1.0) + czm_epsilon7); + return vec3(hcv.x, s, l); +} +`;var _v=`/** + * Converts an RGB color to CIE Yxy. + * <p>The conversion is described in + * {@link http://content.gpwiki.org/index.php/D3DBook:High-Dynamic_Range_Rendering#Luminance_Transform|Luminance Transform} + * </p> + * + * @name czm_RGBToXYZ + * @glslFunction + * + * @param {vec3} rgb The color in RGB. + * + * @returns {vec3} The color in CIE Yxy. + * + * @example + * vec3 xyz = czm_RGBToXYZ(rgb); + * xyz.x = max(xyz.x - luminanceThreshold, 0.0); + * rgb = czm_XYZToRGB(xyz); + */ +vec3 czm_RGBToXYZ(vec3 rgb) +{ + const mat3 RGB2XYZ = mat3(0.4124, 0.2126, 0.0193, + 0.3576, 0.7152, 0.1192, + 0.1805, 0.0722, 0.9505); + vec3 xyz = RGB2XYZ * rgb; + vec3 Yxy; + Yxy.r = xyz.g; + float temp = dot(vec3(1.0), xyz); + Yxy.gb = xyz.rg / temp; + return Yxy; +} +`;var yv=`/** + * Converts a CIE Yxy color to RGB. + * <p>The conversion is described in + * {@link http://content.gpwiki.org/index.php/D3DBook:High-Dynamic_Range_Rendering#Luminance_Transform|Luminance Transform} + * </p> + * + * @name czm_XYZToRGB + * @glslFunction + * + * @param {vec3} Yxy The color in CIE Yxy. + * + * @returns {vec3} The color in RGB. + * + * @example + * vec3 xyz = czm_RGBToXYZ(rgb); + * xyz.x = max(xyz.x - luminanceThreshold, 0.0); + * rgb = czm_XYZToRGB(xyz); + */ +vec3 czm_XYZToRGB(vec3 Yxy) +{ + const mat3 XYZ2RGB = mat3( 3.2405, -0.9693, 0.0556, + -1.5371, 1.8760, -0.2040, + -0.4985, 0.0416, 1.0572); + vec3 xyz; + xyz.r = Yxy.r * Yxy.g / Yxy.b; + xyz.g = Yxy.r; + xyz.b = Yxy.r * (1.0 - Yxy.g - Yxy.b) / Yxy.b; + + return XYZ2RGB * xyz; +} +`;var Cv=`// See: +// https://knarkowicz.wordpress.com/2016/01/06/aces-filmic-tone-mapping-curve/ + +vec3 czm_acesTonemapping(vec3 color) { + float g = 0.985; + float a = 0.065; + float b = 0.0001; + float c = 0.433; + float d = 0.238; + + color = (color * (color + a) - b) / (color * (g * color + c) + d); + + color = clamp(color, 0.0, 1.0); + + return color; +} +`;var Ev=`/** + * @private + */ +float czm_alphaWeight(float a) +{ + float z = (gl_FragCoord.z - czm_viewportTransformation[3][2]) / czm_viewportTransformation[2][2]; + + // See Weighted Blended Order-Independent Transparency for examples of different weighting functions: + // http://jcgt.org/published/0002/02/09/ + return pow(a + 0.01, 4.0) + max(1e-2, min(3.0 * 1e3, 0.003 / (1e-5 + pow(abs(z) / 200.0, 4.0)))); +} +`;var Iv=`/** + * Procedural anti-aliasing by blurring two colors that meet at a sharp edge. + * + * @name czm_antialias + * @glslFunction + * + * @param {vec4} color1 The color on one side of the edge. + * @param {vec4} color2 The color on the other side of the edge. + * @param {vec4} currentcolor The current color, either <code>color1</code> or <code>color2</code>. + * @param {float} dist The distance to the edge in texture coordinates. + * @param {float} [fuzzFactor=0.1] Controls the blurriness between the two colors. + * @returns {vec4} The anti-aliased color. + * + * @example + * // GLSL declarations + * vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist, float fuzzFactor); + * vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist); + * + * // get the color for a material that has a sharp edge at the line y = 0.5 in texture space + * float dist = abs(textureCoordinates.t - 0.5); + * vec4 currentColor = mix(bottomColor, topColor, step(0.5, textureCoordinates.t)); + * vec4 color = czm_antialias(bottomColor, topColor, currentColor, dist, 0.1); + */ +vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist, float fuzzFactor) +{ + float val1 = clamp(dist / fuzzFactor, 0.0, 1.0); + float val2 = clamp((dist - 0.5) / fuzzFactor, 0.0, 1.0); + val1 = val1 * (1.0 - val2); + val1 = val1 * val1 * (3.0 - (2.0 * val1)); + val1 = pow(val1, 0.5); //makes the transition nicer + + vec4 midColor = (color1 + color2) * 0.5; + return mix(midColor, currentColor, val1); +} + +vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist) +{ + return czm_antialias(color1, color2, currentColor, dist, 0.1); +} +`;var xv=`/** + * Apply a HSB color shift to an RGB color. + * + * @param {vec3} rgb The color in RGB space. + * @param {vec3} hsbShift The amount to shift each component. The xyz components correspond to hue, saturation, and brightness. Shifting the hue by +/- 1.0 corresponds to shifting the hue by a full cycle. Saturation and brightness are clamped between 0 and 1 after the adjustment + * @param {bool} ignoreBlackPixels If true, black pixels will be unchanged. This is necessary in some shaders such as atmosphere-related effects. + * + * @return {vec3} The RGB color after shifting in HSB space and clamping saturation and brightness to a valid range. + */ +vec3 czm_applyHSBShift(vec3 rgb, vec3 hsbShift, bool ignoreBlackPixels) { + // Convert rgb color to hsb + vec3 hsb = czm_RGBToHSB(rgb); + + // Perform hsb shift + // Hue cycles around so no clamp is needed. + hsb.x += hsbShift.x; // hue + hsb.y = clamp(hsb.y + hsbShift.y, 0.0, 1.0); // saturation + + // brightness + // + // Some shaders such as atmosphere-related effects need to leave black + // pixels unchanged + if (ignoreBlackPixels) { + hsb.z = hsb.z > czm_epsilon7 ? hsb.z + hsbShift.z : 0.0; + } else { + hsb.z = hsb.z + hsbShift.z; + } + hsb.z = clamp(hsb.z, 0.0, 1.0); + + // Convert shifted hsb back to rgb + return czm_HSBToRGB(hsb); +} +`;var bv=`/** + * Approximately computes spherical coordinates given a normal. + * Uses approximate inverse trigonometry for speed and consistency, + * since inverse trigonometry can differ from vendor-to-vendor and when compared with the CPU. + * + * @name czm_approximateSphericalCoordinates + * @glslFunction + * + * @param {vec3} normal arbitrary-length normal. + * + * @returns {vec2} Approximate latitude and longitude spherical coordinates. + */ +vec2 czm_approximateSphericalCoordinates(vec3 normal) { + // Project into plane with vertical for latitude + float latitudeApproximation = czm_fastApproximateAtan(sqrt(normal.x * normal.x + normal.y * normal.y), normal.z); + float longitudeApproximation = czm_fastApproximateAtan(normal.x, normal.y); + return vec2(latitudeApproximation, longitudeApproximation); +} +`;var Tv=`/** + * Compute a rational approximation to tanh(x) + * + * @param {float} x A real number input + * @returns {float} An approximation for tanh(x) +*/ +float czm_approximateTanh(float x) { + float x2 = x * x; + return max(-1.0, min(1.0, x * (27.0 + x2) / (27.0 + 9.0 * x2))); +} +`;var Sv=`/** + * Determines if the fragment is back facing + * + * @name czm_backFacing + * @glslFunction + * + * @returns {bool} <code>true</code> if the fragment is back facing; otherwise, <code>false</code>. + */ +bool czm_backFacing() +{ + // !gl_FrontFacing doesn't work as expected on Mac/Intel so use the more verbose form instead. See https://github.com/CesiumGS/cesium/pull/8494. + return gl_FrontFacing == false; +} +`;var wv=`/** + * Branchless ternary operator to be used when it's inexpensive to explicitly + * evaluate both possibilities for a float expression. + * + * @name czm_branchFreeTernary + * @glslFunction + * + * @param {bool} comparison A comparison statement + * @param {float} a Value to return if the comparison is true. + * @param {float} b Value to return if the comparison is false. + * + * @returns {float} equivalent of comparison ? a : b + */ +float czm_branchFreeTernary(bool comparison, float a, float b) { + float useA = float(comparison); + return a * useA + b * (1.0 - useA); +} + +/** + * Branchless ternary operator to be used when it's inexpensive to explicitly + * evaluate both possibilities for a vec2 expression. + * + * @name czm_branchFreeTernary + * @glslFunction + * + * @param {bool} comparison A comparison statement + * @param {vec2} a Value to return if the comparison is true. + * @param {vec2} b Value to return if the comparison is false. + * + * @returns {vec2} equivalent of comparison ? a : b + */ +vec2 czm_branchFreeTernary(bool comparison, vec2 a, vec2 b) { + float useA = float(comparison); + return a * useA + b * (1.0 - useA); +} + +/** + * Branchless ternary operator to be used when it's inexpensive to explicitly + * evaluate both possibilities for a vec3 expression. + * + * @name czm_branchFreeTernary + * @glslFunction + * + * @param {bool} comparison A comparison statement + * @param {vec3} a Value to return if the comparison is true. + * @param {vec3} b Value to return if the comparison is false. + * + * @returns {vec3} equivalent of comparison ? a : b + */ +vec3 czm_branchFreeTernary(bool comparison, vec3 a, vec3 b) { + float useA = float(comparison); + return a * useA + b * (1.0 - useA); +} + +/** + * Branchless ternary operator to be used when it's inexpensive to explicitly + * evaluate both possibilities for a vec4 expression. + * + * @name czm_branchFreeTernary + * @glslFunction + * + * @param {bool} comparison A comparison statement + * @param {vec3} a Value to return if the comparison is true. + * @param {vec3} b Value to return if the comparison is false. + * + * @returns {vec3} equivalent of comparison ? a : b + */ +vec4 czm_branchFreeTernary(bool comparison, vec4 a, vec4 b) { + float useA = float(comparison); + return a * useA + b * (1.0 - useA); +} +`;var Bv=` +vec4 czm_cascadeColor(vec4 weights) +{ + return vec4(1.0, 0.0, 0.0, 1.0) * weights.x + + vec4(0.0, 1.0, 0.0, 1.0) * weights.y + + vec4(0.0, 0.0, 1.0, 1.0) * weights.z + + vec4(1.0, 0.0, 1.0, 1.0) * weights.w; +} +`;var Dv=` +uniform vec4 shadowMap_cascadeDistances; + +float czm_cascadeDistance(vec4 weights) +{ + return dot(shadowMap_cascadeDistances, weights); +} +`;var vv=` +uniform mat4 shadowMap_cascadeMatrices[4]; + +mat4 czm_cascadeMatrix(vec4 weights) +{ + return shadowMap_cascadeMatrices[0] * weights.x + + shadowMap_cascadeMatrices[1] * weights.y + + shadowMap_cascadeMatrices[2] * weights.z + + shadowMap_cascadeMatrices[3] * weights.w; +} +`;var Pv=` +uniform vec4 shadowMap_cascadeSplits[2]; + +vec4 czm_cascadeWeights(float depthEye) +{ + // One component is set to 1.0 and all others set to 0.0. + vec4 near = step(shadowMap_cascadeSplits[0], vec4(depthEye)); + vec4 far = step(depthEye, shadowMap_cascadeSplits[1]); + return near * far; +} +`;var Rv=`float getSignedDistance(vec2 uv, highp sampler2D clippingDistance) { + float signedDistance = texture(clippingDistance, uv).r; + return (signedDistance - 0.5) * 2.0; +} + +void czm_clipPolygons(highp sampler2D clippingDistance, int extentsLength, vec2 clippingPosition, int regionIndex) { + // Position is completely outside of polygons bounds + vec2 rectUv = clippingPosition; + if (regionIndex < 0 || rectUv.x <= 0.0 || rectUv.y <= 0.0 || rectUv.x >= 1.0 || rectUv.y >= 1.0) { + #ifdef CLIPPING_INVERSE + discard; + #endif + return; + } + + vec2 clippingDistanceTextureDimensions = vec2(textureSize(clippingDistance, 0)); + vec2 sampleOffset = max(1.0 / clippingDistanceTextureDimensions, vec2(0.005)); + float dimension = float(extentsLength); + if (extentsLength > 2) { + dimension = ceil(log2(float(extentsLength))); + } + + vec2 textureOffset = vec2(mod(float(regionIndex), dimension), floor(float(regionIndex) / dimension)) / dimension; + vec2 uv = textureOffset + rectUv / dimension; + + float signedDistance = getSignedDistance(uv, clippingDistance); + + #ifdef CLIPPING_INVERSE + if (signedDistance > 0.0) { + discard; + } + #else + if (signedDistance < 0.0) { + discard; + } + #endif +} +`;var Mv=`/** + * DOC_TBA + * + * @name czm_columbusViewMorph + * @glslFunction + */ +vec4 czm_columbusViewMorph(vec4 position2D, vec4 position3D, float time) +{ + // Just linear for now. + vec3 p = mix(position2D.xyz, position3D.xyz, time); + return vec4(p, 1.0); +} +`;var Nv=`/** + * Compute the atmosphere color, applying Rayleigh and Mie scattering. This + * builtin uses automatic uniforms so the atmophere settings are synced with the + * state of the Scene, even in other contexts like Model. + * + * @name czm_computeAtmosphereColor + * @glslFunction + * + * @param {vec3} positionWC Position of the fragment in world coords (low precision) + * @param {vec3} lightDirection Light direction from the sun or other light source. + * @param {vec3} rayleighColor The Rayleigh scattering color computed by a scattering function + * @param {vec3} mieColor The Mie scattering color computed by a scattering function + * @param {float} opacity The opacity computed by a scattering function. + */ +vec4 czm_computeAtmosphereColor( + vec3 positionWC, + vec3 lightDirection, + vec3 rayleighColor, + vec3 mieColor, + float opacity +) { + // Setup the primary ray: from the camera position to the vertex position. + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + + float cosAngle = dot(cameraToPositionWCDirection, lightDirection); + float cosAngleSq = cosAngle * cosAngle; + + float G = czm_atmosphereMieAnisotropy; + float GSq = G * G; + + // The Rayleigh phase function. + float rayleighPhase = 3.0 / (50.2654824574) * (1.0 + cosAngleSq); + // The Mie phase function. + float miePhase = 3.0 / (25.1327412287) * ((1.0 - GSq) * (cosAngleSq + 1.0)) / (pow(1.0 + GSq - 2.0 * cosAngle * G, 1.5) * (2.0 + GSq)); + + // The final color is generated by combining the effects of the Rayleigh and Mie scattering. + vec3 rayleigh = rayleighPhase * rayleighColor; + vec3 mie = miePhase * mieColor; + + vec3 color = (rayleigh + mie) * czm_atmosphereLightIntensity; + + return vec4(color, opacity); +} + +/** + * Compute the atmosphere color, applying Rayleigh and Mie scattering. This + * builtin uses automatic uniforms so the atmophere settings are synced with the + * state of the Scene, even in other contexts like Model. + * + * @name czm_computeAtmosphereColor + * @glslFunction + * + * @param {czm_ray} primaryRay Ray from the origin to sky fragment to in world coords (low precision) + * @param {vec3} lightDirection Light direction from the sun or other light source. + * @param {vec3} rayleighColor The Rayleigh scattering color computed by a scattering function + * @param {vec3} mieColor The Mie scattering color computed by a scattering function + * @param {float} opacity The opacity computed by a scattering function. + */ +vec4 czm_computeAtmosphereColor( + czm_ray primaryRay, + vec3 lightDirection, + vec3 rayleighColor, + vec3 mieColor, + float opacity +) { + vec3 direction = normalize(primaryRay.direction); + + float cosAngle = dot(direction, lightDirection); + float cosAngleSq = cosAngle * cosAngle; + + float G = czm_atmosphereMieAnisotropy; + float GSq = G * G; + + // The Rayleigh phase function. + float rayleighPhase = 3.0 / (50.2654824574) * (1.0 + cosAngleSq); + // The Mie phase function. + float miePhase = 3.0 / (25.1327412287) * ((1.0 - GSq) * (cosAngleSq + 1.0)) / (pow(1.0 + GSq - 2.0 * cosAngle * G, 1.5) * (2.0 + GSq)); + + // The final color is generated by combining the effects of the Rayleigh and Mie scattering. + vec3 rayleigh = rayleighPhase * rayleighColor; + vec3 mie = miePhase * mieColor; + + vec3 color = (rayleigh + mie) * czm_atmosphereLightIntensity; + + return vec4(color, opacity); +} + +`;var Lv=`/** + * Compute atmosphere scattering for the ground atmosphere and fog. This method + * uses automatic uniforms so it is always synced with the scene settings. + * + * @name czm_computeGroundAtmosphereScattering + * @glslfunction + * + * @param {vec3} positionWC The position of the fragment in world coordinates. + * @param {vec3} lightDirection The direction of the light to calculate the scattering from. + * @param {vec3} rayleighColor The variable the Rayleigh scattering will be written to. + * @param {vec3} mieColor The variable the Mie scattering will be written to. + * @param {float} opacity The variable the transmittance will be written to. + */ +void czm_computeGroundAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity) { + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection); + + float atmosphereInnerRadius = length(positionWC); + + czm_computeScattering( + primaryRay, + length(cameraToPositionWC), + lightDirection, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); +} +`;var Ov=`/** + * Returns a position in model coordinates relative to eye taking into + * account the current scene mode: 3D, 2D, or Columbus view. + * <p> + * This uses standard position attributes, <code>position3DHigh</code>, + * <code>position3DLow</code>, <code>position2DHigh</code>, and <code>position2DLow</code>, + * and should be used when writing a vertex shader for an {@link Appearance}. + * </p> + * + * @name czm_computePosition + * @glslFunction + * + * @returns {vec4} The position relative to eye. + * + * @example + * vec4 p = czm_computePosition(); + * v_positionEC = (czm_modelViewRelativeToEye * p).xyz; + * gl_Position = czm_modelViewProjectionRelativeToEye * p; + * + * @see czm_translateRelativeToEye + */ +vec4 czm_computePosition(); +`;var Fv=`/** + * This function computes the colors contributed by Rayliegh and Mie scattering on a given ray, as well as + * the transmittance value for the ray. This function uses automatic uniforms + * so the atmosphere settings are always synced with the current scene. + * + * @name czm_computeScattering + * @glslfunction + * + * @param {czm_ray} primaryRay The ray from the camera to the position. + * @param {float} primaryRayLength The length of the primary ray. + * @param {vec3} lightDirection The direction of the light to calculate the scattering from. + * @param {vec3} rayleighColor The variable the Rayleigh scattering will be written to. + * @param {vec3} mieColor The variable the Mie scattering will be written to. + * @param {float} opacity The variable the transmittance will be written to. + */ +void czm_computeScattering( + czm_ray primaryRay, + float primaryRayLength, + vec3 lightDirection, + float atmosphereInnerRadius, + out vec3 rayleighColor, + out vec3 mieColor, + out float opacity +) { + const float ATMOSPHERE_THICKNESS = 111e3; // The thickness of the atmosphere in meters. + const int PRIMARY_STEPS_MAX = 16; // Maximum number of times the ray from the camera to the world position (primary ray) is sampled. + const int LIGHT_STEPS_MAX = 4; // Maximum number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray. + + // Initialize the default scattering amounts to 0. + rayleighColor = vec3(0.0); + mieColor = vec3(0.0); + opacity = 0.0; + + float atmosphereOuterRadius = atmosphereInnerRadius + ATMOSPHERE_THICKNESS; + + vec3 origin = vec3(0.0); + + // Calculate intersection from the camera to the outer ring of the atmosphere. + czm_raySegment primaryRayAtmosphereIntersect = czm_raySphereIntersectionInterval(primaryRay, origin, atmosphereOuterRadius); + + // Return empty colors if no intersection with the atmosphere geometry. + if (primaryRayAtmosphereIntersect == czm_emptyRaySegment) { + return; + } + + // To deal with smaller values of PRIMARY_STEPS (e.g. 4) + // we implement a split strategy: sky or horizon. + // For performance reasons, instead of a if/else branch + // a soft choice is implemented through a weight 0.0 <= w_stop_gt_lprl <= 1.0 + float x = 1e-7 * primaryRayAtmosphereIntersect.stop / length(primaryRayLength); + // Value close to 0.0: close to the horizon + // Value close to 1.0: above in the sky + float w_stop_gt_lprl = 0.5 * (1.0 + czm_approximateTanh(x)); + + // The ray should start from the first intersection with the outer atmopshere, or from the camera position, if it is inside the atmosphere. + float start_0 = primaryRayAtmosphereIntersect.start; + primaryRayAtmosphereIntersect.start = max(primaryRayAtmosphereIntersect.start, 0.0); + // The ray should end at the exit from the atmosphere or at the distance to the vertex, whichever is smaller. + primaryRayAtmosphereIntersect.stop = min(primaryRayAtmosphereIntersect.stop, length(primaryRayLength)); + + // For the number of ray steps, distinguish inside or outside atmosphere (outer space) + // (1) from outer space we have to use more ray steps to get a realistic rendering + // (2) within atmosphere we need fewer steps for faster rendering + float x_o_a = start_0 - ATMOSPHERE_THICKNESS; // ATMOSPHERE_THICKNESS used as an ad-hoc constant, no precise meaning here, only the order of magnitude matters + float w_inside_atmosphere = 1.0 - 0.5 * (1.0 + czm_approximateTanh(x_o_a)); + int PRIMARY_STEPS = PRIMARY_STEPS_MAX - int(w_inside_atmosphere * 12.0); // Number of times the ray from the camera to the world position (primary ray) is sampled. + int LIGHT_STEPS = LIGHT_STEPS_MAX - int(w_inside_atmosphere * 2.0); // Number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray. + + // Setup for sampling positions along the ray - starting from the intersection with the outer ring of the atmosphere. + float rayPositionLength = primaryRayAtmosphereIntersect.start; + // (1) Outside the atmosphere: constant rayStepLength + // (2) Inside atmosphere: variable rayStepLength to compensate the rough rendering of the smaller number of ray steps + float totalRayLength = primaryRayAtmosphereIntersect.stop - rayPositionLength; + float rayStepLengthIncrease = w_inside_atmosphere * ((1.0 - w_stop_gt_lprl) * totalRayLength / (float(PRIMARY_STEPS * (PRIMARY_STEPS + 1)) / 2.0)); + float rayStepLength = max(1.0 - w_inside_atmosphere, w_stop_gt_lprl) * totalRayLength / max(7.0 * w_inside_atmosphere, float(PRIMARY_STEPS)); + + vec3 rayleighAccumulation = vec3(0.0); + vec3 mieAccumulation = vec3(0.0); + vec2 opticalDepth = vec2(0.0); + vec2 heightScale = vec2(czm_atmosphereRayleighScaleHeight, czm_atmosphereMieScaleHeight); + + // Sample positions on the primary ray. + for (int i = 0; i < PRIMARY_STEPS_MAX; ++i) { + + // The loop should be: for (int i = 0; i < PRIMARY_STEPS; ++i) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (i >= PRIMARY_STEPS) { + break; + } + + // Calculate sample position along viewpoint ray. + vec3 samplePosition = primaryRay.origin + primaryRay.direction * (rayPositionLength + rayStepLength); + + // Calculate height of sample position above ellipsoid. + float sampleHeight = length(samplePosition) - atmosphereInnerRadius; + + // Calculate and accumulate density of particles at the sample position. + vec2 sampleDensity = exp(-sampleHeight / heightScale) * rayStepLength; + opticalDepth += sampleDensity; + + // Generate ray from the sample position segment to the light source, up to the outer ring of the atmosphere. + czm_ray lightRay = czm_ray(samplePosition, lightDirection); + czm_raySegment lightRayAtmosphereIntersect = czm_raySphereIntersectionInterval(lightRay, origin, atmosphereOuterRadius); + + float lightStepLength = lightRayAtmosphereIntersect.stop / float(LIGHT_STEPS); + float lightPositionLength = 0.0; + + vec2 lightOpticalDepth = vec2(0.0); + + // Sample positions along the light ray, to accumulate incidence of light on the latest sample segment. + for (int j = 0; j < LIGHT_STEPS_MAX; ++j) { + + // The loop should be: for (int j = 0; i < LIGHT_STEPS; ++j) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (j >= LIGHT_STEPS) { + break; + } + + // Calculate sample position along light ray. + vec3 lightPosition = samplePosition + lightDirection * (lightPositionLength + lightStepLength * 0.5); + + // Calculate height of the light sample position above ellipsoid. + float lightHeight = length(lightPosition) - atmosphereInnerRadius; + + // Calculate density of photons at the light sample position. + lightOpticalDepth += exp(-lightHeight / heightScale) * lightStepLength; + + // Increment distance on light ray. + lightPositionLength += lightStepLength; + } + + // Compute attenuation via the primary ray and the light ray. + vec3 attenuation = exp(-((czm_atmosphereMieCoefficient * (opticalDepth.y + lightOpticalDepth.y)) + (czm_atmosphereRayleighCoefficient * (opticalDepth.x + lightOpticalDepth.x)))); + + // Accumulate the scattering. + rayleighAccumulation += sampleDensity.x * attenuation; + mieAccumulation += sampleDensity.y * attenuation; + + // Increment distance on primary ray. + rayPositionLength += (rayStepLength += rayStepLengthIncrease); + } + + // Compute the scattering amount. + rayleighColor = czm_atmosphereRayleighCoefficient * rayleighAccumulation; + mieColor = czm_atmosphereMieCoefficient * mieAccumulation; + + // Compute the transmittance i.e. how much light is passing through the atmosphere. + opacity = length(exp(-((czm_atmosphereMieCoefficient * opticalDepth.y) + (czm_atmosphereRayleighCoefficient * opticalDepth.x)))); +} +`;var Qv=`/** + * @private + */ +vec2 cordic(float angle) +{ +// Scale the vector by the appropriate factor for the 24 iterations to follow. + vec2 vector = vec2(6.0725293500888267e-1, 0.0); +// Iteration 1 + float sense = (angle < 0.0) ? -1.0 : 1.0; + // float factor = sense * 1.0; // 2^-0 + mat2 rotation = mat2(1.0, sense, -sense, 1.0); + vector = rotation * vector; + angle -= sense * 7.8539816339744828e-1; // atan(2^-0) +// Iteration 2 + sense = (angle < 0.0) ? -1.0 : 1.0; + float factor = sense * 5.0e-1; // 2^-1 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 4.6364760900080609e-1; // atan(2^-1) +// Iteration 3 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 2.5e-1; // 2^-2 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 2.4497866312686414e-1; // atan(2^-2) +// Iteration 4 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.25e-1; // 2^-3 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.2435499454676144e-1; // atan(2^-3) +// Iteration 5 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 6.25e-2; // 2^-4 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 6.2418809995957350e-2; // atan(2^-4) +// Iteration 6 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 3.125e-2; // 2^-5 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 3.1239833430268277e-2; // atan(2^-5) +// Iteration 7 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.5625e-2; // 2^-6 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.5623728620476831e-2; // atan(2^-6) +// Iteration 8 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 7.8125e-3; // 2^-7 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 7.8123410601011111e-3; // atan(2^-7) +// Iteration 9 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 3.90625e-3; // 2^-8 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 3.9062301319669718e-3; // atan(2^-8) +// Iteration 10 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.953125e-3; // 2^-9 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.9531225164788188e-3; // atan(2^-9) +// Iteration 11 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 9.765625e-4; // 2^-10 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 9.7656218955931946e-4; // atan(2^-10) +// Iteration 12 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 4.8828125e-4; // 2^-11 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 4.8828121119489829e-4; // atan(2^-11) +// Iteration 13 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 2.44140625e-4; // 2^-12 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 2.4414062014936177e-4; // atan(2^-12) +// Iteration 14 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.220703125e-4; // 2^-13 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.2207031189367021e-4; // atan(2^-13) +// Iteration 15 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 6.103515625e-5; // 2^-14 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 6.1035156174208773e-5; // atan(2^-14) +// Iteration 16 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 3.0517578125e-5; // 2^-15 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 3.0517578115526096e-5; // atan(2^-15) +// Iteration 17 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.52587890625e-5; // 2^-16 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.5258789061315762e-5; // atan(2^-16) +// Iteration 18 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 7.62939453125e-6; // 2^-17 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 7.6293945311019700e-6; // atan(2^-17) +// Iteration 19 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 3.814697265625e-6; // 2^-18 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 3.8146972656064961e-6; // atan(2^-18) +// Iteration 20 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.9073486328125e-6; // 2^-19 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.9073486328101870e-6; // atan(2^-19) +// Iteration 21 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 9.5367431640625e-7; // 2^-20 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 9.5367431640596084e-7; // atan(2^-20) +// Iteration 22 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 4.76837158203125e-7; // 2^-21 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 4.7683715820308884e-7; // atan(2^-21) +// Iteration 23 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 2.384185791015625e-7; // 2^-22 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 2.3841857910155797e-7; // atan(2^-22) +// Iteration 24 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.1920928955078125e-7; // 2^-23 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; +// angle -= sense * 1.1920928955078068e-7; // atan(2^-23) + + return vector; +} + +/** + * Computes the cosine and sine of the provided angle using the CORDIC algorithm. + * + * @name czm_cosineAndSine + * @glslFunction + * + * @param {float} angle The angle in radians. + * + * @returns {vec2} The resulting cosine of the angle (as the x coordinate) and sine of the angle (as the y coordinate). + * + * @example + * vec2 v = czm_cosineAndSine(czm_piOverSix); + * float cosine = v.x; + * float sine = v.y; + */ +vec2 czm_cosineAndSine(float angle) +{ + if (angle < -czm_piOverTwo || angle > czm_piOverTwo) + { + if (angle < 0.0) + { + return -cordic(angle + czm_pi); + } + else + { + return -cordic(angle - czm_pi); + } + } + else + { + return cordic(angle); + } +} +`;var kv=`/** + * Decompresses texture coordinates that were packed into a single float. + * + * @name czm_decompressTextureCoordinates + * @glslFunction + * + * @param {float} encoded The compressed texture coordinates. + * @returns {vec2} The decompressed texture coordinates. + */ + vec2 czm_decompressTextureCoordinates(float encoded) + { + float temp = encoded / 4096.0; + float xZeroTo4095 = floor(temp); + float stx = xZeroTo4095 / 4095.0; + float sty = (encoded - xZeroTo4095 * 4096.0) / 4095.0; + return vec2(stx, sty); + } +`;var Uv=`// emulated noperspective +#if (__VERSION__ == 300 || defined(GL_EXT_frag_depth)) && !defined(LOG_DEPTH) +out float v_WindowZ; +#endif + +/** + * Emulates GL_DEPTH_CLAMP, which is not available in WebGL 1 or 2. + * GL_DEPTH_CLAMP clamps geometry that is outside the near and far planes, + * capping the shadow volume. More information here: + * https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_depth_clamp.txt. + * + * When GL_EXT_frag_depth is available we emulate GL_DEPTH_CLAMP by ensuring + * no geometry gets clipped by setting the clip space z value to 0.0 and then + * sending the unaltered screen space z value (using emulated noperspective + * interpolation) to the frag shader where it is clamped to [0,1] and then + * written with gl_FragDepth (see czm_writeDepthClamp). This technique is based on: + * https://stackoverflow.com/questions/5960757/how-to-emulate-gl-depth-clamp-nv. + * + * When GL_EXT_frag_depth is not available, which is the case on some mobile + * devices, we must attempt to fix this only in the vertex shader. + * The approach is to clamp the z value to the far plane, which closes the + * shadow volume but also distorts the geometry, so there can still be artifacts + * on frustum seams. + * + * @name czm_depthClamp + * @glslFunction + * + * @param {vec4} coords The vertex in clip coordinates. + * @returns {vec4} The modified vertex. + * + * @example + * gl_Position = czm_depthClamp(czm_modelViewProjection * vec4(position, 1.0)); + * + * @see czm_writeDepthClamp + */ +vec4 czm_depthClamp(vec4 coords) +{ +#ifndef LOG_DEPTH +#if __VERSION__ == 300 || defined(GL_EXT_frag_depth) + v_WindowZ = (0.5 * (coords.z / coords.w) + 0.5) * coords.w; + coords.z = 0.0; +#else + coords.z = min(coords.z, coords.w); +#endif +#endif + return coords; +} +`;var Gv=`/** + * Computes a 3x3 rotation matrix that transforms vectors from an ellipsoid's east-north-up coordinate system + * to eye coordinates. In east-north-up coordinates, x points east, y points north, and z points along the + * surface normal. East-north-up can be used as an ellipsoid's tangent space for operations such as bump mapping. + * <br /><br /> + * The ellipsoid is assumed to be centered at the model coordinate's origin. + * + * @name czm_eastNorthUpToEyeCoordinates + * @glslFunction + * + * @param {vec3} positionMC The position on the ellipsoid in model coordinates. + * @param {vec3} normalEC The normalized ellipsoid surface normal, at <code>positionMC</code>, in eye coordinates. + * + * @returns {mat3} A 3x3 rotation matrix that transforms vectors from the east-north-up coordinate system to eye coordinates. + * + * @example + * // Transform a vector defined in the east-north-up coordinate + * // system, (0, 0, 1) which is the surface normal, to eye + * // coordinates. + * mat3 m = czm_eastNorthUpToEyeCoordinates(positionMC, normalEC); + * vec3 normalEC = m * vec3(0.0, 0.0, 1.0); + */ +mat3 czm_eastNorthUpToEyeCoordinates(vec3 positionMC, vec3 normalEC) +{ + vec3 tangentMC = normalize(vec3(-positionMC.y, positionMC.x, 0.0)); // normalized surface tangent in model coordinates + vec3 tangentEC = normalize(czm_normal3D * tangentMC); // normalized surface tangent in eye coordinates + vec3 bitangentEC = normalize(cross(normalEC, tangentEC)); // normalized surface bitangent in eye coordinates + + return mat3( + tangentEC.x, tangentEC.y, tangentEC.z, + bitangentEC.x, bitangentEC.y, bitangentEC.z, + normalEC.x, normalEC.y, normalEC.z); +} +`;var zv=`/** + * DOC_TBA + * + * @name czm_ellipsoidContainsPoint + * @glslFunction + * + */ +bool czm_ellipsoidContainsPoint(vec3 ellipsoid_inverseRadii, vec3 point) +{ + vec3 scaled = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(point, 1.0)).xyz; + return (dot(scaled, scaled) <= 1.0); +} +`;var Vv=`/** + * Approximate uv coordinates based on the ellipsoid normal. + * + * @name czm_ellipsoidTextureCoordinates + * @glslFunction + */ +vec2 czm_ellipsoidTextureCoordinates(vec3 normal) +{ + return vec2(atan(normal.y, normal.x) * czm_oneOverTwoPi + 0.5, asin(normal.z) * czm_oneOverPi + 0.5); +} +`;var Hv=`/** + * Compares <code>left</code> and <code>right</code> componentwise. Returns <code>true</code> + * if they are within <code>epsilon</code> and <code>false</code> otherwise. The inputs + * <code>left</code> and <code>right</code> can be <code>float</code>s, <code>vec2</code>s, + * <code>vec3</code>s, or <code>vec4</code>s. + * + * @name czm_equalsEpsilon + * @glslFunction + * + * @param {} left The first vector. + * @param {} right The second vector. + * @param {float} epsilon The epsilon to use for equality testing. + * @returns {bool} <code>true</code> if the components are within <code>epsilon</code> and <code>false</code> otherwise. + * + * @example + * // GLSL declarations + * bool czm_equalsEpsilon(float left, float right, float epsilon); + * bool czm_equalsEpsilon(vec2 left, vec2 right, float epsilon); + * bool czm_equalsEpsilon(vec3 left, vec3 right, float epsilon); + * bool czm_equalsEpsilon(vec4 left, vec4 right, float epsilon); + */ +bool czm_equalsEpsilon(vec4 left, vec4 right, float epsilon) { + return all(lessThanEqual(abs(left - right), vec4(epsilon))); +} + +bool czm_equalsEpsilon(vec3 left, vec3 right, float epsilon) { + return all(lessThanEqual(abs(left - right), vec3(epsilon))); +} + +bool czm_equalsEpsilon(vec2 left, vec2 right, float epsilon) { + return all(lessThanEqual(abs(left - right), vec2(epsilon))); +} + +bool czm_equalsEpsilon(float left, float right, float epsilon) { + return (abs(left - right) <= epsilon); +} +`;var Wv=`/** + * DOC_TBA + * + * @name czm_eyeOffset + * @glslFunction + * + * @param {vec4} positionEC DOC_TBA. + * @param {vec3} eyeOffset DOC_TBA. + * + * @returns {vec4} DOC_TBA. + */ +vec4 czm_eyeOffset(vec4 positionEC, vec3 eyeOffset) +{ + // This equation is approximate in x and y. + vec4 p = positionEC; + vec4 zEyeOffset = normalize(p) * eyeOffset.z; + p.xy += eyeOffset.xy + zEyeOffset.xy; + p.z += zEyeOffset.z; + return p; +} +`;var jv=`/** + * Transforms a position from eye to window coordinates. The transformation + * from eye to clip coordinates is done using {@link czm_projection}. + * The transform from normalized device coordinates to window coordinates is + * done using {@link czm_viewportTransformation}, which assumes a depth range + * of <code>near = 0</code> and <code>far = 1</code>. + * <br /><br /> + * This transform is useful when there is a need to manipulate window coordinates + * in a vertex shader as done by {@link BillboardCollection}. + * + * @name czm_eyeToWindowCoordinates + * @glslFunction + * + * @param {vec4} position The position in eye coordinates to transform. + * + * @returns {vec4} The transformed position in window coordinates. + * + * @see czm_modelToWindowCoordinates + * @see czm_projection + * @see czm_viewportTransformation + * @see BillboardCollection + * + * @example + * vec4 positionWC = czm_eyeToWindowCoordinates(positionEC); + */ +vec4 czm_eyeToWindowCoordinates(vec4 positionEC) +{ + vec4 q = czm_projection * positionEC; // clip coordinates + q.xyz /= q.w; // normalized device coordinates + q.xyz = (czm_viewportTransformation * vec4(q.xyz, 1.0)).xyz; // window coordinates + return q; +} +`;var Yv=`/** + * Approxiamtes atan over the range [0, 1]. Safe to flip output for negative input. + * + * Based on Michal Drobot's approximation from ShaderFastLibs, which in turn is based on + * "Efficient approximations for the arctangent function," Rajan, S. Sichun Wang Inkol, R. Joyal, A., May 2006. + * Adapted from ShaderFastLibs under MIT License. + * + * Chosen for the following characteristics over range [0, 1]: + * - basically no error at 0 and 1, important for getting around range limit (naive atan2 via atan requires infinite range atan) + * - no visible artifacts from first-derivative discontinuities, unlike latitude via range-reduced sqrt asin approximations (at equator) + * + * The original code is x * (-0.1784 * abs(x) - 0.0663 * x * x + 1.0301); + * Removed the abs() in here because it isn't needed, the input range is guaranteed as [0, 1] by how we're approximating atan2. + * + * @name czm_fastApproximateAtan + * @glslFunction + * + * @param {float} x Value between 0 and 1 inclusive. + * + * @returns {float} Approximation of atan(x) + */ +float czm_fastApproximateAtan(float x) { + return x * (-0.1784 * x - 0.0663 * x * x + 1.0301); +} + +/** + * Approximation of atan2. + * + * Range reduction math based on nvidia's cg reference implementation for atan2: http://developer.download.nvidia.com/cg/atan2.html + * However, we replaced their atan curve with Michael Drobot's (see above). + * + * @name czm_fastApproximateAtan + * @glslFunction + * + * @param {float} x Value between -1 and 1 inclusive. + * @param {float} y Value between -1 and 1 inclusive. + * + * @returns {float} Approximation of atan2(x, y) + */ +float czm_fastApproximateAtan(float x, float y) { + // atan approximations are usually only reliable over [-1, 1], or, in our case, [0, 1] due to modifications. + // So range-reduce using abs and by flipping whether x or y is on top. + float t = abs(x); // t used as swap and atan result. + float opposite = abs(y); + float adjacent = max(t, opposite); + opposite = min(t, opposite); + + t = czm_fastApproximateAtan(opposite / adjacent); + + // Undo range reduction + t = czm_branchFreeTernary(abs(y) > abs(x), czm_piOverTwo - t, t); + t = czm_branchFreeTernary(x < 0.0, czm_pi - t, t); + t = czm_branchFreeTernary(y < 0.0, -t, t); + return t; +} +`;var qv=`/** + * Gets the color with fog at a distance from the camera. + * + * @name czm_fog + * @glslFunction + * + * @param {float} distanceToCamera The distance to the camera in meters. + * @param {vec3} color The original color. + * @param {vec3} fogColor The color of the fog. + * + * @returns {vec3} The color adjusted for fog at the distance from the camera. + */ +vec3 czm_fog(float distanceToCamera, vec3 color, vec3 fogColor) +{ + float scalar = distanceToCamera * czm_fogDensity; + float fog = 1.0 - exp(-(scalar * scalar)); + return mix(color, fogColor, fog); +} + +/** + * Gets the color with fog at a distance from the camera. + * + * @name czm_fog + * @glslFunction + * + * @param {float} distanceToCamera The distance to the camera in meters. + * @param {vec3} color The original color. + * @param {vec3} fogColor The color of the fog. + * @param {float} fogModifierConstant A constant to modify the appearance of fog. + * + * @returns {vec3} The color adjusted for fog at the distance from the camera. + */ +vec3 czm_fog(float distanceToCamera, vec3 color, vec3 fogColor, float fogModifierConstant) +{ + float scalar = distanceToCamera * czm_fogDensity; + float fog = 1.0 - exp(-((fogModifierConstant * scalar + fogModifierConstant) * (scalar * (1.0 + fogModifierConstant)))); + return mix(color, fogColor, fog); +} +`;var Kv=`/** + * Converts a color from RGB space to linear space. + * + * @name czm_gammaCorrect + * @glslFunction + * + * @param {vec3} color The color in RGB space. + * @returns {vec3} The color in linear space. + */ +vec3 czm_gammaCorrect(vec3 color) { +#ifdef HDR + color = pow(color, vec3(czm_gamma)); +#endif + return color; +} + +vec4 czm_gammaCorrect(vec4 color) { +#ifdef HDR + color.rgb = pow(color.rgb, vec3(czm_gamma)); +#endif + return color; +} +`;var Xv=`/** + * DOC_TBA + * + * @name czm_geodeticSurfaceNormal + * @glslFunction + * + * @param {vec3} positionOnEllipsoid DOC_TBA + * @param {vec3} ellipsoidCenter DOC_TBA + * @param {vec3} oneOverEllipsoidRadiiSquared DOC_TBA + * + * @returns {vec3} DOC_TBA. + */ +vec3 czm_geodeticSurfaceNormal(vec3 positionOnEllipsoid, vec3 ellipsoidCenter, vec3 oneOverEllipsoidRadiiSquared) +{ + return normalize((positionOnEllipsoid - ellipsoidCenter) * oneOverEllipsoidRadiiSquared); +} +`;var Jv=`/** + * An czm_material with default values. Every material's czm_getMaterial + * should use this default material as a base for the material it returns. + * The default normal value is given by materialInput.normalEC. + * + * @name czm_getDefaultMaterial + * @glslFunction + * + * @param {czm_materialInput} input The input used to construct the default material. + * + * @returns {czm_material} The default material. + * + * @see czm_materialInput + * @see czm_material + * @see czm_getMaterial + */ +czm_material czm_getDefaultMaterial(czm_materialInput materialInput) +{ + czm_material material; + material.diffuse = vec3(0.0); + material.specular = 0.0; + material.shininess = 1.0; + material.normal = materialInput.normalEC; + material.emission = vec3(0.0); + material.alpha = 1.0; + return material; +} +`;var Zv=`/** + * Select which direction vector to use for dynamic atmosphere lighting based on an enum value + * + * @name czm_getDynamicAtmosphereLightDirection + * @glslfunction + * @see DynamicAtmosphereLightingType.js + * + * @param {vec3} positionWC the position of the vertex/fragment in world coordinates. This is normalized and returned when dynamic lighting is turned off. + * @param {float} lightEnum The enum value for selecting between light sources. + * @return {vec3} The normalized light direction vector. Depending on the enum value, it is either positionWC, czm_lightDirectionWC or czm_sunDirectionWC + */ +vec3 czm_getDynamicAtmosphereLightDirection(vec3 positionWC, float lightEnum) { + const float NONE = 0.0; + const float SCENE_LIGHT = 1.0; + const float SUNLIGHT = 2.0; + + vec3 lightDirection = + positionWC * float(lightEnum == NONE) + + czm_lightDirectionWC * float(lightEnum == SCENE_LIGHT) + + czm_sunDirectionWC * float(lightEnum == SUNLIGHT); + return normalize(lightDirection); +} +`;var $v=`/** + * Calculates the intensity of diffusely reflected light. + * + * @name czm_getLambertDiffuse + * @glslFunction + * + * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates. + * @param {vec3} normalEC The surface normal in eye coordinates. + * + * @returns {float} The intensity of the diffuse reflection. + * + * @see czm_phong + * + * @example + * float diffuseIntensity = czm_getLambertDiffuse(lightDirectionEC, normalEC); + * float specularIntensity = czm_getSpecular(lightDirectionEC, toEyeEC, normalEC, 200); + * vec3 color = (diffuseColor * diffuseIntensity) + (specularColor * specularIntensity); + */ +float czm_getLambertDiffuse(vec3 lightDirectionEC, vec3 normalEC) +{ + return max(dot(lightDirectionEC, normalEC), 0.0); +} +`;var eP=`/** + * Calculates the specular intensity of reflected light. + * + * @name czm_getSpecular + * @glslFunction + * + * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates. + * @param {vec3} toEyeEC Unit vector pointing to the eye position in eye coordinates. + * @param {vec3} normalEC The surface normal in eye coordinates. + * @param {float} shininess The sharpness of the specular reflection. Higher values create a smaller, more focused specular highlight. + * + * @returns {float} The intensity of the specular highlight. + * + * @see czm_phong + * + * @example + * float diffuseIntensity = czm_getLambertDiffuse(lightDirectionEC, normalEC); + * float specularIntensity = czm_getSpecular(lightDirectionEC, toEyeEC, normalEC, 200); + * vec3 color = (diffuseColor * diffuseIntensity) + (specularColor * specularIntensity); + */ +float czm_getSpecular(vec3 lightDirectionEC, vec3 toEyeEC, vec3 normalEC, float shininess) +{ + vec3 toReflectedLight = reflect(-lightDirectionEC, normalEC); + float specular = max(dot(toReflectedLight, toEyeEC), 0.0); + + // pow has undefined behavior if both parameters <= 0. + // Prevent this by making sure shininess is at least czm_epsilon2. + return pow(specular, max(shininess, czm_epsilon2)); +} +`;var tP=`/** + * @private + */ +vec4 czm_getWaterNoise(sampler2D normalMap, vec2 uv, float time, float angleInRadians) +{ + float cosAngle = cos(angleInRadians); + float sinAngle = sin(angleInRadians); + + // time dependent sampling directions + vec2 s0 = vec2(1.0/17.0, 0.0); + vec2 s1 = vec2(-1.0/29.0, 0.0); + vec2 s2 = vec2(1.0/101.0, 1.0/59.0); + vec2 s3 = vec2(-1.0/109.0, -1.0/57.0); + + // rotate sampling direction by specified angle + s0 = vec2((cosAngle * s0.x) - (sinAngle * s0.y), (sinAngle * s0.x) + (cosAngle * s0.y)); + s1 = vec2((cosAngle * s1.x) - (sinAngle * s1.y), (sinAngle * s1.x) + (cosAngle * s1.y)); + s2 = vec2((cosAngle * s2.x) - (sinAngle * s2.y), (sinAngle * s2.x) + (cosAngle * s2.y)); + s3 = vec2((cosAngle * s3.x) - (sinAngle * s3.y), (sinAngle * s3.x) + (cosAngle * s3.y)); + + vec2 uv0 = (uv/103.0) + (time * s0); + vec2 uv1 = uv/107.0 + (time * s1) + vec2(0.23); + vec2 uv2 = uv/vec2(897.0, 983.0) + (time * s2) + vec2(0.51); + vec2 uv3 = uv/vec2(991.0, 877.0) + (time * s3) + vec2(0.71); + + uv0 = fract(uv0); + uv1 = fract(uv1); + uv2 = fract(uv2); + uv3 = fract(uv3); + vec4 noise = (texture(normalMap, uv0)) + + (texture(normalMap, uv1)) + + (texture(normalMap, uv2)) + + (texture(normalMap, uv3)); + + // average and scale to between -1 and 1 + return ((noise / 4.0) - 0.5) * 2.0; +} +`;var nP=`/** + * Adjusts the hue of a color. + * + * @name czm_hue + * @glslFunction + * + * @param {vec3} rgb The color. + * @param {float} adjustment The amount to adjust the hue of the color in radians. + * + * @returns {float} The color with the hue adjusted. + * + * @example + * vec3 adjustHue = czm_hue(color, czm_pi); // The same as czm_hue(color, -czm_pi) + */ +vec3 czm_hue(vec3 rgb, float adjustment) +{ + const mat3 toYIQ = mat3(0.299, 0.587, 0.114, + 0.595716, -0.274453, -0.321263, + 0.211456, -0.522591, 0.311135); + const mat3 toRGB = mat3(1.0, 0.9563, 0.6210, + 1.0, -0.2721, -0.6474, + 1.0, -1.107, 1.7046); + + vec3 yiq = toYIQ * rgb; + float hue = atan(yiq.z, yiq.y) + adjustment; + float chroma = sqrt(yiq.z * yiq.z + yiq.y * yiq.y); + + vec3 color = vec3(yiq.x, chroma * cos(hue), chroma * sin(hue)); + return toRGB * color; +} +`;var iP=`/** + * Converts a color in linear space to RGB space. + * + * @name czm_inverseGamma + * @glslFunction + * + * @param {vec3} color The color in linear space. + * @returns {vec3} The color in RGB space. + */ +vec3 czm_inverseGamma(vec3 color) { + return pow(color, vec3(1.0 / czm_gamma)); +} +`;var oP=`/** + * Determines if a time interval is empty. + * + * @name czm_isEmpty + * @glslFunction + * + * @param {czm_raySegment} interval The interval to test. + * + * @returns {bool} <code>true</code> if the time interval is empty; otherwise, <code>false</code>. + * + * @example + * bool b0 = czm_isEmpty(czm_emptyRaySegment); // true + * bool b1 = czm_isEmpty(czm_raySegment(0.0, 1.0)); // false + * bool b2 = czm_isEmpty(czm_raySegment(1.0, 1.0)); // false, contains 1.0. + */ +bool czm_isEmpty(czm_raySegment interval) +{ + return (interval.stop < 0.0); +} +`;var rP=`/** + * Determines if a time interval is empty. + * + * @name czm_isFull + * @glslFunction + * + * @param {czm_raySegment} interval The interval to test. + * + * @returns {bool} <code>true</code> if the time interval is empty; otherwise, <code>false</code>. + * + * @example + * bool b0 = czm_isEmpty(czm_emptyRaySegment); // true + * bool b1 = czm_isEmpty(czm_raySegment(0.0, 1.0)); // false + * bool b2 = czm_isEmpty(czm_raySegment(1.0, 1.0)); // false, contains 1.0. + */ +bool czm_isFull(czm_raySegment interval) +{ + return (interval.start == 0.0 && interval.stop == czm_infinity); +} +`;var sP=`/** + * Computes the fraction of a Web Wercator rectangle at which a given geodetic latitude is located. + * + * @name czm_latitudeToWebMercatorFraction + * @glslFunction + * + * @param {float} latitude The geodetic latitude, in radians. + * @param {float} southMercatorY The Web Mercator coordinate of the southern boundary of the rectangle. + * @param {float} oneOverMercatorHeight The total height of the rectangle in Web Mercator coordinates. + * + * @returns {float} The fraction of the rectangle at which the latitude occurs. If the latitude is the southern + * boundary of the rectangle, the return value will be zero. If it is the northern boundary, the return + * value will be 1.0. Latitudes in between are mapped according to the Web Mercator projection. + */ +float czm_latitudeToWebMercatorFraction(float latitude, float southMercatorY, float oneOverMercatorHeight) +{ + float sinLatitude = sin(latitude); + float mercatorY = 0.5 * log((1.0 + sinLatitude) / (1.0 - sinLatitude)); + + return (mercatorY - southMercatorY) * oneOverMercatorHeight; +} +`;var aP=`/** + * Computes distance from an point in 2D to a line in 2D. + * + * @name czm_lineDistance + * @glslFunction + * + * param {vec2} point1 A point along the line. + * param {vec2} point2 A point along the line. + * param {vec2} point A point that may or may not be on the line. + * returns {float} The distance from the point to the line. + */ +float czm_lineDistance(vec2 point1, vec2 point2, vec2 point) { + return abs((point2.y - point1.y) * point.x - (point2.x - point1.x) * point.y + point2.x * point1.y - point2.y * point1.x) / distance(point2, point1); +} +`;var cP=`/** + * Converts a linear RGB color to an sRGB color. + * + * @param {vec3|vec4} linearIn The color in linear color space. + * @returns {vec3|vec4} The color in sRGB color space. The vector type matches the input. + */ +vec3 czm_linearToSrgb(vec3 linearIn) +{ + return pow(linearIn, vec3(1.0/2.2)); +} + +vec4 czm_linearToSrgb(vec4 linearIn) +{ + vec3 srgbOut = pow(linearIn.rgb, vec3(1.0/2.2)); + return vec4(srgbOut, linearIn.a); +} +`;var lP=`/** + * Computes the luminance of a color. + * + * @name czm_luminance + * @glslFunction + * + * @param {vec3} rgb The color. + * + * @returns {float} The luminance. + * + * @example + * float light = czm_luminance(vec3(0.0)); // 0.0 + * float dark = czm_luminance(vec3(1.0)); // ~1.0 + */ +float czm_luminance(vec3 rgb) +{ + // Algorithm from Chapter 10 of Graphics Shaders. + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + return dot(rgb, W); +} +`;var uP=`/** + * Find the maximum component of a vector. + * + * @name czm_maximumComponent + * @glslFunction + * + * @param {vec2|vec3|vec4} v The input vector. + * @returns {float} The value of the largest component. + */ +float czm_maximumComponent(vec2 v) +{ + return max(v.x, v.y); +} +float czm_maximumComponent(vec3 v) +{ + return max(max(v.x, v.y), v.z); +} +float czm_maximumComponent(vec4 v) +{ + return max(max(max(v.x, v.y), v.z), v.w); +} +`;var fP=`/** + * Computes the size of a pixel in meters at a distance from the eye. + * <p> + * Use this version when passing in a custom pixel ratio. For example, passing in 1.0 will return meters per native device pixel. + * </p> + * @name czm_metersPerPixel + * @glslFunction + * + * @param {vec3} positionEC The position to get the meters per pixel in eye coordinates. + * @param {float} pixelRatio The scaling factor from pixel space to coordinate space + * + * @returns {float} The meters per pixel at positionEC. + */ +float czm_metersPerPixel(vec4 positionEC, float pixelRatio) +{ + float width = czm_viewport.z; + float height = czm_viewport.w; + float pixelWidth; + float pixelHeight; + + float top = czm_frustumPlanes.x; + float bottom = czm_frustumPlanes.y; + float left = czm_frustumPlanes.z; + float right = czm_frustumPlanes.w; + + if (czm_sceneMode == czm_sceneMode2D || czm_orthographicIn3D == 1.0) + { + float frustumWidth = right - left; + float frustumHeight = top - bottom; + pixelWidth = frustumWidth / width; + pixelHeight = frustumHeight / height; + } + else + { + float distanceToPixel = -positionEC.z; + float inverseNear = 1.0 / czm_currentFrustum.x; + float tanTheta = top * inverseNear; + pixelHeight = 2.0 * distanceToPixel * tanTheta / height; + tanTheta = right * inverseNear; + pixelWidth = 2.0 * distanceToPixel * tanTheta / width; + } + + return max(pixelWidth, pixelHeight) * pixelRatio; +} + +/** + * Computes the size of a pixel in meters at a distance from the eye. + * <p> + * Use this version when scaling by pixel ratio. + * </p> + * @name czm_metersPerPixel + * @glslFunction + * + * @param {vec3} positionEC The position to get the meters per pixel in eye coordinates. + * + * @returns {float} The meters per pixel at positionEC. + */ +float czm_metersPerPixel(vec4 positionEC) +{ + return czm_metersPerPixel(positionEC, czm_pixelRatio); +} +`;var dP=`/** + * Transforms a position from model to window coordinates. The transformation + * from model to clip coordinates is done using {@link czm_modelViewProjection}. + * The transform from normalized device coordinates to window coordinates is + * done using {@link czm_viewportTransformation}, which assumes a depth range + * of <code>near = 0</code> and <code>far = 1</code>. + * <br /><br /> + * This transform is useful when there is a need to manipulate window coordinates + * in a vertex shader as done by {@link BillboardCollection}. + * <br /><br /> + * This function should not be confused with {@link czm_viewportOrthographic}, + * which is an orthographic projection matrix that transforms from window + * coordinates to clip coordinates. + * + * @name czm_modelToWindowCoordinates + * @glslFunction + * + * @param {vec4} position The position in model coordinates to transform. + * + * @returns {vec4} The transformed position in window coordinates. + * + * @see czm_eyeToWindowCoordinates + * @see czm_modelViewProjection + * @see czm_viewportTransformation + * @see czm_viewportOrthographic + * @see BillboardCollection + * + * @example + * vec4 positionWC = czm_modelToWindowCoordinates(positionMC); + */ +vec4 czm_modelToWindowCoordinates(vec4 position) +{ + vec4 positionEC = czm_modelView * position; + vec4 q = czm_projection * positionEC; + q.xyz /= q.w; // normalized device coordinates + q.xyz = (czm_viewportTransformation * vec4(q.xyz, 1.0)).xyz; // window coordinates + return q; +} +`;var hP=`/** + * DOC_TBA + * + * @name czm_multiplyWithColorBalance + * @glslFunction + */ +vec3 czm_multiplyWithColorBalance(vec3 left, vec3 right) +{ + // Algorithm from Chapter 10 of Graphics Shaders. + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + + vec3 target = left * right; + float leftLuminance = dot(left, W); + float rightLuminance = dot(right, W); + float targetLuminance = dot(target, W); + + return ((leftLuminance + rightLuminance) / (2.0 * targetLuminance)) * target; +} +`;var mP=`/** + * Computes a value that scales with distance. The scaling is clamped at the near and + * far distances, and does not extrapolate. This function works with the + * {@link NearFarScalar} JavaScript class. + * + * @name czm_nearFarScalar + * @glslFunction + * + * @param {vec4} nearFarScalar A vector with 4 components: Near distance (x), Near value (y), Far distance (z), Far value (w). + * @param {float} cameraDistSq The square of the current distance from the camera. + * + * @returns {float} The value at this distance. + */ +float czm_nearFarScalar(vec4 nearFarScalar, float cameraDistSq) +{ + float valueAtMin = nearFarScalar.y; + float valueAtMax = nearFarScalar.w; + float nearDistanceSq = nearFarScalar.x * nearFarScalar.x; + float farDistanceSq = nearFarScalar.z * nearFarScalar.z; + + float t = (cameraDistSq - nearDistanceSq) / (farDistanceSq - nearDistanceSq); + + t = pow(clamp(t, 0.0, 1.0), 0.2); + + return mix(valueAtMin, valueAtMax, t); +} +`;var AP=` /** + * Decodes a unit-length vector in 'oct' encoding to a normalized 3-component Cartesian vector. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {vec2} encoded The oct-encoded, unit-length vector + * @param {float} range The maximum value of the SNORM range. The encoded vector is stored in log2(rangeMax+1) bits. + * @returns {vec3} The decoded and normalized vector + */ + vec3 czm_octDecode(vec2 encoded, float range) + { + if (encoded.x == 0.0 && encoded.y == 0.0) { + return vec3(0.0, 0.0, 0.0); + } + + encoded = encoded / range * 2.0 - 1.0; + vec3 v = vec3(encoded.x, encoded.y, 1.0 - abs(encoded.x) - abs(encoded.y)); + if (v.z < 0.0) + { + v.xy = (1.0 - abs(v.yx)) * czm_signNotZero(v.xy); + } + + return normalize(v); + } + +/** + * Decodes a unit-length vector in 'oct' encoding to a normalized 3-component Cartesian vector. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {vec2} encoded The oct-encoded, unit-length vector + * @returns {vec3} The decoded and normalized vector + */ + vec3 czm_octDecode(vec2 encoded) + { + return czm_octDecode(encoded, 255.0); + } + + /** + * Decodes a unit-length vector in 'oct' encoding packed into a floating-point number to a normalized 3-component Cartesian vector. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {float} encoded The oct-encoded, unit-length vector + * @returns {vec3} The decoded and normalized vector + */ + vec3 czm_octDecode(float encoded) + { + float temp = encoded / 256.0; + float x = floor(temp); + float y = (temp - x) * 256.0; + return czm_octDecode(vec2(x, y)); + } + +/** + * Decodes three unit-length vectors in 'oct' encoding packed into two floating-point numbers to normalized 3-component Cartesian vectors. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {vec2} encoded The packed oct-encoded, unit-length vectors. + * @param {vec3} vector1 One decoded and normalized vector. + * @param {vec3} vector2 One decoded and normalized vector. + * @param {vec3} vector3 One decoded and normalized vector. + */ + void czm_octDecode(vec2 encoded, out vec3 vector1, out vec3 vector2, out vec3 vector3) + { + float temp = encoded.x / 65536.0; + float x = floor(temp); + float encodedFloat1 = (temp - x) * 65536.0; + + temp = encoded.y / 65536.0; + float y = floor(temp); + float encodedFloat2 = (temp - y) * 65536.0; + + vector1 = czm_octDecode(encodedFloat1); + vector2 = czm_octDecode(encodedFloat2); + vector3 = czm_octDecode(vec2(x, y)); + } + +`;var pP=`/** + * Packs a depth value into a vec4 that can be represented by unsigned bytes. + * + * @name czm_packDepth + * @glslFunction + * + * @param {float} depth The floating-point depth. + * @returns {vec4} The packed depth. + */ +vec4 czm_packDepth(float depth) +{ + // See Aras Pranckevi\u010Dius' post Encoding Floats to RGBA + // http://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/ + vec4 enc = vec4(1.0, 255.0, 65025.0, 16581375.0) * depth; + enc = fract(enc); + enc -= enc.yzww * vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0); + return enc; +} +`;var gP=`vec3 lambertianDiffuse(vec3 diffuseColor) +{ + return diffuseColor / czm_pi; +} + +vec3 fresnelSchlick2(vec3 f0, vec3 f90, float VdotH) +{ + float versine = 1.0 - VdotH; + // pow(versine, 5.0) is slow. See https://stackoverflow.com/a/68793086/10082269 + float versineSquared = versine * versine; + return f0 + (f90 - f0) * versineSquared * versineSquared * versine; +} + +#ifdef USE_ANISOTROPY +/** + * @param {float} bitangentRoughness Material roughness (along the anisotropy bitangent) + * @param {float} tangentialRoughness Anisotropic roughness (along the anisotropy tangent) + * @param {vec3} lightDirection The direction from the fragment to the light source, transformed to tangent-bitangent-normal coordinates + * @param {vec3} viewDirection The direction from the fragment to the camera, transformed to tangent-bitangent-normal coordinates + */ +float smithVisibilityGGX_anisotropic(float bitangentRoughness, float tangentialRoughness, vec3 lightDirection, vec3 viewDirection) +{ + vec3 roughnessScale = vec3(tangentialRoughness, bitangentRoughness, 1.0); + float GGXV = lightDirection.z * length(roughnessScale * viewDirection); + float GGXL = viewDirection.z * length(roughnessScale * lightDirection); + float v = 0.5 / (GGXV + GGXL); + return clamp(v, 0.0, 1.0); +} + +/** + * @param {float} bitangentRoughness Material roughness (along the anisotropy bitangent) + * @param {float} tangentialRoughness Anisotropic roughness (along the anisotropy tangent) + * @param {vec3} halfwayDirection The unit vector halfway between light and view directions, transformed to tangent-bitangent-normal coordinates + */ +float GGX_anisotropic(float bitangentRoughness, float tangentialRoughness, vec3 halfwayDirection) +{ + float roughnessSquared = bitangentRoughness * tangentialRoughness; + vec3 f = halfwayDirection * vec3(bitangentRoughness, tangentialRoughness, roughnessSquared); + float w2 = roughnessSquared / dot(f, f); + return roughnessSquared * w2 * w2 / czm_pi; +} +#endif + +/** + * Estimate the geometric self-shadowing of the microfacets in a surface, + * using the Smith Joint GGX visibility function. + * Note: Vis = G / (4 * NdotL * NdotV) + * see Eric Heitz. 2014. Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs. Journal of Computer Graphics Techniques, 3 + * see Real-Time Rendering. Page 331 to 336. + * see https://google.github.io/filament/Filament.md.html#materialsystem/specularbrdf/geometricshadowing(specularg) + * + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @param {float} NdotL The cosine of the angle between the surface normal and the direction to the light source. + * @param {float} NdotV The cosine of the angle between the surface normal and the direction to the camera. + */ +float smithVisibilityGGX(float alphaRoughness, float NdotL, float NdotV) +{ + float alphaRoughnessSq = alphaRoughness * alphaRoughness; + + float GGXV = NdotL * sqrt(NdotV * NdotV * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + float GGXL = NdotV * sqrt(NdotL * NdotL * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + + float GGX = GGXV + GGXL; + if (GGX > 0.0) + { + return 0.5 / GGX; + } + return 0.0; +} + +/** + * Estimate the fraction of the microfacets in a surface that are aligned with + * the halfway vector, which is aligned halfway between the directions from + * the fragment to the camera and from the fragment to the light source. + * + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @param {float} NdotH The cosine of the angle between the surface normal and the halfway vector. + * @return {float} The fraction of microfacets aligned to the halfway vector. + */ +float GGX(float alphaRoughness, float NdotH) +{ + float alphaRoughnessSquared = alphaRoughness * alphaRoughness; + float f = (NdotH * alphaRoughnessSquared - NdotH) * NdotH + 1.0; + return alphaRoughnessSquared / (czm_pi * f * f); +} + +/** + * Compute the strength of the specular reflection due to direct lighting. + * + * @param {vec3} normal The surface normal. + * @param {vec3} lightDirection The unit vector pointing from the fragment to the light source. + * @param {vec3} viewDirection The unit vector pointing from the fragment to the camera. + * @param {vec3} halfwayDirection The unit vector pointing from the fragment to halfway between the light source and the camera. + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @return {float} The strength of the specular reflection. + */ +float computeDirectSpecularStrength(vec3 normal, vec3 lightDirection, vec3 viewDirection, vec3 halfwayDirection, float alphaRoughness) +{ + float NdotL = clamp(dot(normal, lightDirection), 0.0, 1.0); + float NdotV = clamp(dot(normal, viewDirection), 0.0, 1.0); + float G = smithVisibilityGGX(alphaRoughness, NdotL, NdotV); + float NdotH = clamp(dot(normal, halfwayDirection), 0.0, 1.0); + float D = GGX(alphaRoughness, NdotH); + return G * D; +} + +/** + * Compute the diffuse and specular contributions using physically based + * rendering. This function only handles direct lighting. + * <p> + * This function only handles the lighting calculations. Metallic/roughness + * and specular/glossy must be handled separately. See {@MaterialStageFS} + * </p> + * + * @name czm_pbrLighting + * @glslFunction + * + * @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position + * @param {vec3} normalEC The surface normal in eye coordinates + * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates. + * @param {czm_modelMaterial} The material properties. + * @return {vec3} The computed HDR color + */ +vec3 czm_pbrLighting(vec3 viewDirectionEC, vec3 normalEC, vec3 lightDirectionEC, czm_modelMaterial material) +{ + vec3 halfwayDirectionEC = normalize(viewDirectionEC + lightDirectionEC); + float VdotH = clamp(dot(viewDirectionEC, halfwayDirectionEC), 0.0, 1.0); + float NdotL = clamp(dot(normalEC, lightDirectionEC), 0.001, 1.0); + + vec3 f0 = material.specular; + float reflectance = czm_maximumComponent(f0); + // Typical dielectrics will have reflectance 0.04, so f90 will be 1.0. + // In this case, at grazing angle, all incident energy is reflected. + vec3 f90 = vec3(clamp(reflectance * 25.0, 0.0, 1.0)); + vec3 F = fresnelSchlick2(f0, f90, VdotH); + + #if defined(USE_SPECULAR) + F *= material.specularWeight; + #endif + + float alphaRoughness = material.roughness * material.roughness; + #ifdef USE_ANISOTROPY + mat3 tbn = mat3(material.anisotropicT, material.anisotropicB, normalEC); + vec3 lightDirection = lightDirectionEC * tbn; + vec3 viewDirection = viewDirectionEC * tbn; + vec3 halfwayDirection = halfwayDirectionEC * tbn; + float anisotropyStrength = material.anisotropyStrength; + float tangentialRoughness = mix(alphaRoughness, 1.0, anisotropyStrength * anisotropyStrength); + float bitangentRoughness = clamp(alphaRoughness, 0.001, 1.0); + float G = smithVisibilityGGX_anisotropic(bitangentRoughness, tangentialRoughness, lightDirection, viewDirection); + float D = GGX_anisotropic(bitangentRoughness, tangentialRoughness, halfwayDirection); + vec3 specularContribution = F * G * D; + #else + float specularStrength = computeDirectSpecularStrength(normalEC, lightDirectionEC, viewDirectionEC, halfwayDirectionEC, alphaRoughness); + vec3 specularContribution = F * specularStrength; + #endif + + vec3 diffuseColor = material.diffuse; + // F here represents the specular contribution + vec3 diffuseContribution = (1.0 - F) * lambertianDiffuse(diffuseColor); + + // Lo = (diffuse + specular) * Li * NdotL + return (diffuseContribution + specularContribution) * NdotL; +} +`;var _P=`// KhronosGroup https://github.com/KhronosGroup/ToneMapping/tree/main/PBR_Neutral + +// Input color is non-negative and resides in the Linear Rec. 709 color space. +// Output color is also Linear Rec. 709, but in the [0, 1] range. + +vec3 czm_pbrNeutralTonemapping(vec3 color) { + const float startCompression = 0.8 - 0.04; + const float desaturation = 0.15; + + float x = min(color.r, min(color.g, color.b)); + float offset = czm_branchFreeTernary(x < 0.08, x - 6.25 * x * x, 0.04); + color -= offset; + + float peak = max(color.r, max(color.g, color.b)); + if (peak < startCompression) return color; + + const float d = 1.0 - startCompression; + float newPeak = 1.0 - d * d / (peak + d - startCompression); + color *= newPeak / peak; + + float g = 1.0 - 1.0 / (desaturation * (peak - newPeak) + 1.0); + return mix(color, newPeak * vec3(1.0, 1.0, 1.0), g); +} +`;var yP=`float czm_private_getLambertDiffuseOfMaterial(vec3 lightDirectionEC, czm_material material) +{ + return czm_getLambertDiffuse(lightDirectionEC, material.normal); +} + +float czm_private_getSpecularOfMaterial(vec3 lightDirectionEC, vec3 toEyeEC, czm_material material) +{ + return czm_getSpecular(lightDirectionEC, toEyeEC, material.normal, material.shininess); +} + +/** + * Computes a color using the Phong lighting model. + * + * @name czm_phong + * @glslFunction + * + * @param {vec3} toEye A normalized vector from the fragment to the eye in eye coordinates. + * @param {czm_material} material The fragment's material. + * + * @returns {vec4} The computed color. + * + * @example + * vec3 positionToEyeEC = // ... + * czm_material material = // ... + * vec3 lightDirectionEC = // ... + * out_FragColor = czm_phong(normalize(positionToEyeEC), material, lightDirectionEC); + * + * @see czm_getMaterial + */ +vec4 czm_phong(vec3 toEye, czm_material material, vec3 lightDirectionEC) +{ + // Diffuse from directional light sources at eye (for top-down) + float diffuse = czm_private_getLambertDiffuseOfMaterial(vec3(0.0, 0.0, 1.0), material); + if (czm_sceneMode == czm_sceneMode3D) { + // (and horizon views in 3D) + diffuse += czm_private_getLambertDiffuseOfMaterial(vec3(0.0, 1.0, 0.0), material); + } + + float specular = czm_private_getSpecularOfMaterial(lightDirectionEC, toEye, material); + + // Temporary workaround for adding ambient. + vec3 materialDiffuse = material.diffuse * 0.5; + + vec3 ambient = materialDiffuse; + vec3 color = ambient + material.emission; + color += materialDiffuse * diffuse * czm_lightColor; + color += material.specular * specular * czm_lightColor; + + return vec4(color, material.alpha); +} + +vec4 czm_private_phong(vec3 toEye, czm_material material, vec3 lightDirectionEC) +{ + float diffuse = czm_private_getLambertDiffuseOfMaterial(lightDirectionEC, material); + float specular = czm_private_getSpecularOfMaterial(lightDirectionEC, toEye, material); + + vec3 ambient = vec3(0.0); + vec3 color = ambient + material.emission; + color += material.diffuse * diffuse * czm_lightColor; + color += material.specular * specular * czm_lightColor; + + return vec4(color, material.alpha); +} +`;var CP=`/** + * Computes distance from a point to a plane. + * + * @name czm_planeDistance + * @glslFunction + * + * param {vec4} plane A Plane in Hessian Normal Form. See Plane.js + * param {vec3} point A point in the same space as the plane. + * returns {float} The distance from the point to the plane. + */ +float czm_planeDistance(vec4 plane, vec3 point) { + return (dot(plane.xyz, point) + plane.w); +} + +/** + * Computes distance from a point to a plane. + * + * @name czm_planeDistance + * @glslFunction + * + * param {vec3} planeNormal Normal for a plane in Hessian Normal Form. See Plane.js + * param {float} planeDistance Distance for a plane in Hessian Normal form. See Plane.js + * param {vec3} point A point in the same space as the plane. + * returns {float} The distance from the point to the plane. + */ +float czm_planeDistance(vec3 planeNormal, float planeDistance, vec3 point) { + return (dot(planeNormal, point) + planeDistance); +} +`;var EP=`/** + * Computes the point along a ray at the given time. <code>time</code> can be positive, negative, or zero. + * + * @name czm_pointAlongRay + * @glslFunction + * + * @param {czm_ray} ray The ray to compute the point along. + * @param {float} time The time along the ray. + * + * @returns {vec3} The point along the ray at the given time. + * + * @example + * czm_ray ray = czm_ray(vec3(0.0), vec3(1.0, 0.0, 0.0)); // origin, direction + * vec3 v = czm_pointAlongRay(ray, 2.0); // (2.0, 0.0, 0.0) + */ +vec3 czm_pointAlongRay(czm_ray ray, float time) +{ + return ray.origin + (time * ray.direction); +} +`;var IP=`/** + * DOC_TBA + * + * @name czm_rayEllipsoidIntersectionInterval + * @glslFunction + */ +czm_raySegment czm_rayEllipsoidIntersectionInterval(czm_ray ray, vec3 ellipsoid_center, vec3 ellipsoid_inverseRadii) +{ + // ray and ellipsoid center in eye coordinates. radii in model coordinates. + vec3 q = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ray.origin, 1.0)).xyz; + vec3 w = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ray.direction, 0.0)).xyz; + + q = q - ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ellipsoid_center, 1.0)).xyz; + + float q2 = dot(q, q); + float qw = dot(q, w); + + if (q2 > 1.0) // Outside ellipsoid. + { + if (qw >= 0.0) // Looking outward or tangent (0 intersections). + { + return czm_emptyRaySegment; + } + else // qw < 0.0. + { + float qw2 = qw * qw; + float difference = q2 - 1.0; // Positively valued. + float w2 = dot(w, w); + float product = w2 * difference; + + if (qw2 < product) // Imaginary roots (0 intersections). + { + return czm_emptyRaySegment; + } + else if (qw2 > product) // Distinct roots (2 intersections). + { + float discriminant = qw * qw - product; + float temp = -qw + sqrt(discriminant); // Avoid cancellation. + float root0 = temp / w2; + float root1 = difference / temp; + if (root0 < root1) + { + czm_raySegment i = czm_raySegment(root0, root1); + return i; + } + else + { + czm_raySegment i = czm_raySegment(root1, root0); + return i; + } + } + else // qw2 == product. Repeated roots (2 intersections). + { + float root = sqrt(difference / w2); + czm_raySegment i = czm_raySegment(root, root); + return i; + } + } + } + else if (q2 < 1.0) // Inside ellipsoid (2 intersections). + { + float difference = q2 - 1.0; // Negatively valued. + float w2 = dot(w, w); + float product = w2 * difference; // Negatively valued. + float discriminant = qw * qw - product; + float temp = -qw + sqrt(discriminant); // Positively valued. + czm_raySegment i = czm_raySegment(0.0, temp / w2); + return i; + } + else // q2 == 1.0. On ellipsoid. + { + if (qw < 0.0) // Looking inward. + { + float w2 = dot(w, w); + czm_raySegment i = czm_raySegment(0.0, -qw / w2); + return i; + } + else // qw >= 0.0. Looking outward or tangent. + { + return czm_emptyRaySegment; + } + } +} +`;var xP=`/** + * Compute the intersection interval of a ray with a sphere. + * + * @name czm_raySphereIntersectionInterval + * @glslFunction + * + * @param {czm_ray} ray The ray. + * @param {vec3} center The center of the sphere. + * @param {float} radius The radius of the sphere. + * @return {czm_raySegment} The intersection interval of the ray with the sphere. + */ +czm_raySegment czm_raySphereIntersectionInterval(czm_ray ray, vec3 center, float radius) +{ + vec3 o = ray.origin; + vec3 d = ray.direction; + + vec3 oc = o - center; + + float a = dot(d, d); + float b = 2.0 * dot(d, oc); + float c = dot(oc, oc) - (radius * radius); + + float det = (b * b) - (4.0 * a * c); + + if (det < 0.0) { + return czm_emptyRaySegment; + } + + float sqrtDet = sqrt(det); + + float t0 = (-b - sqrtDet) / (2.0 * a); + float t1 = (-b + sqrtDet) / (2.0 * a); + + czm_raySegment result = czm_raySegment(t0, t1); + return result; +} +`;var bP=`float czm_readDepth(sampler2D depthTexture, vec2 texCoords) +{ + return czm_reverseLogDepth(texture(depthTexture, texCoords).r); +} +`;var TP=`/** + * Reads a value previously transformed with {@link czm_writeNonPerspective} + * by dividing it by \`w\`, the value used in the perspective divide. + * This function is intended to be called in a fragment shader to access a + * \`varying\` that should not be subject to perspective interpolation. + * For example, screen-space texture coordinates. The value should have been + * previously written in the vertex shader with a call to + * {@link czm_writeNonPerspective}. + * + * @name czm_readNonPerspective + * @glslFunction + * + * @param {float|vec2|vec3|vec4} value The non-perspective value to be read. + * @param {float} oneOverW One over the perspective divide value, \`w\`. Usually this is simply \`gl_FragCoord.w\`. + * @returns {float|vec2|vec3|vec4} The usable value. + */ +float czm_readNonPerspective(float value, float oneOverW) { + return value * oneOverW; +} + +vec2 czm_readNonPerspective(vec2 value, float oneOverW) { + return value * oneOverW; +} + +vec3 czm_readNonPerspective(vec3 value, float oneOverW) { + return value * oneOverW; +} + +vec4 czm_readNonPerspective(vec4 value, float oneOverW) { + return value * oneOverW; +} +`;var SP=`float czm_reverseLogDepth(float logZ) +{ +#ifdef LOG_DEPTH + float near = czm_currentFrustum.x; + float far = czm_currentFrustum.y; + float log2Depth = logZ * czm_log2FarDepthFromNearPlusOne; + float depthFromNear = exp2(log2Depth) - 1.0; + return far * (1.0 - near / (depthFromNear + near)) / (far - near); +#endif + return logZ; +} +`;var wP=`/** + * Round a floating point value. This function exists because round() doesn't + * exist in GLSL 1.00. + * + * @param {float|vec2|vec3|vec4} value The value to round + * @param {float|vec2|vec3|vec3} The rounded value. The type matches the input. + */ +float czm_round(float value) { + return floor(value + 0.5); +} + +vec2 czm_round(vec2 value) { + return floor(value + 0.5); +} + +vec3 czm_round(vec3 value) { + return floor(value + 0.5); +} + +vec4 czm_round(vec4 value) { + return floor(value + 0.5); +} +`;var BP=`/** + * Adjusts the saturation of a color. + * + * @name czm_saturation + * @glslFunction + * + * @param {vec3} rgb The color. + * @param {float} adjustment The amount to adjust the saturation of the color. + * + * @returns {float} The color with the saturation adjusted. + * + * @example + * vec3 greyScale = czm_saturation(color, 0.0); + * vec3 doubleSaturation = czm_saturation(color, 2.0); + */ +vec3 czm_saturation(vec3 rgb, float adjustment) +{ + // Algorithm from Chapter 16 of OpenGL Shading Language + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + vec3 intensity = vec3(dot(rgb, W)); + return mix(intensity, rgb, adjustment); +} +`;var DP=` +float czm_sampleShadowMap(highp samplerCube shadowMap, vec3 d) +{ + return czm_unpackDepth(czm_textureCube(shadowMap, d)); +} + +float czm_sampleShadowMap(highp sampler2D shadowMap, vec2 uv) +{ +#ifdef USE_SHADOW_DEPTH_TEXTURE + return texture(shadowMap, uv).r; +#else + return czm_unpackDepth(texture(shadowMap, uv)); +#endif +} + +float czm_shadowDepthCompare(samplerCube shadowMap, vec3 uv, float depth) +{ + return step(depth, czm_sampleShadowMap(shadowMap, uv)); +} + +float czm_shadowDepthCompare(sampler2D shadowMap, vec2 uv, float depth) +{ + return step(depth, czm_sampleShadowMap(shadowMap, uv)); +} +`;var vP=` +float czm_private_shadowVisibility(float visibility, float nDotL, float normalShadingSmooth, float darkness) +{ +#ifdef USE_NORMAL_SHADING +#ifdef USE_NORMAL_SHADING_SMOOTH + float strength = clamp(nDotL / normalShadingSmooth, 0.0, 1.0); +#else + float strength = step(0.0, nDotL); +#endif + visibility *= strength; +#endif + + visibility = max(visibility, darkness); + return visibility; +} + +#ifdef USE_CUBE_MAP_SHADOW +float czm_shadowVisibility(samplerCube shadowMap, czm_shadowParameters shadowParameters) +{ + float depthBias = shadowParameters.depthBias; + float depth = shadowParameters.depth; + float nDotL = shadowParameters.nDotL; + float normalShadingSmooth = shadowParameters.normalShadingSmooth; + float darkness = shadowParameters.darkness; + vec3 uvw = shadowParameters.texCoords; + + depth -= depthBias; + float visibility = czm_shadowDepthCompare(shadowMap, uvw, depth); + return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness); +} +#else +float czm_shadowVisibility(sampler2D shadowMap, czm_shadowParameters shadowParameters) +{ + float depthBias = shadowParameters.depthBias; + float depth = shadowParameters.depth; + float nDotL = shadowParameters.nDotL; + float normalShadingSmooth = shadowParameters.normalShadingSmooth; + float darkness = shadowParameters.darkness; + vec2 uv = shadowParameters.texCoords; + + depth -= depthBias; +#ifdef USE_SOFT_SHADOWS + vec2 texelStepSize = shadowParameters.texelStepSize; + float radius = 1.0; + float dx0 = -texelStepSize.x * radius; + float dy0 = -texelStepSize.y * radius; + float dx1 = texelStepSize.x * radius; + float dy1 = texelStepSize.y * radius; + float visibility = ( + czm_shadowDepthCompare(shadowMap, uv, depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, dy0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(0.0, dy0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, dy0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, 0.0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, 0.0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, dy1), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(0.0, dy1), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, dy1), depth) + ) * (1.0 / 9.0); +#else + float visibility = czm_shadowDepthCompare(shadowMap, uv, depth); +#endif + + return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness); +} +#endif +`;var PP=`/** + * Returns 1.0 if the given value is positive or zero, and -1.0 if it is negative. This is similar to the GLSL + * built-in function <code>sign</code> except that returns 1.0 instead of 0.0 when the input value is 0.0. + * + * @name czm_signNotZero + * @glslFunction + * + * @param {} value The value for which to determine the sign. + * @returns {} 1.0 if the value is positive or zero, -1.0 if the value is negative. + */ +float czm_signNotZero(float value) +{ + return value >= 0.0 ? 1.0 : -1.0; +} + +vec2 czm_signNotZero(vec2 value) +{ + return vec2(czm_signNotZero(value.x), czm_signNotZero(value.y)); +} + +vec3 czm_signNotZero(vec3 value) +{ + return vec3(czm_signNotZero(value.x), czm_signNotZero(value.y), czm_signNotZero(value.z)); +} + +vec4 czm_signNotZero(vec4 value) +{ + return vec4(czm_signNotZero(value.x), czm_signNotZero(value.y), czm_signNotZero(value.z), czm_signNotZero(value.w)); +} +`;var RP=`/** + * Computes a color from the third order spherical harmonic coefficients and a normalized direction vector. + * <p> + * The order of the coefficients is [L00, L1_1, L10, L11, L2_2, L2_1, L20, L21, L22]. + * </p> + * + * @name czm_sphericalHarmonics + * @glslFunction + * + * @param {vec3} normal The normalized direction. + * @param {vec3[9]} coefficients The third order spherical harmonic coefficients. + * @returns {vec3} The color at the direction. + * + * @see https://graphics.stanford.edu/papers/envmap/envmap.pdf + */ +vec3 czm_sphericalHarmonics(vec3 normal, vec3 coefficients[9]) +{ + vec3 L00 = coefficients[0]; + vec3 L1_1 = coefficients[1]; + vec3 L10 = coefficients[2]; + vec3 L11 = coefficients[3]; + vec3 L2_2 = coefficients[4]; + vec3 L2_1 = coefficients[5]; + vec3 L20 = coefficients[6]; + vec3 L21 = coefficients[7]; + vec3 L22 = coefficients[8]; + + float x = normal.x; + float y = normal.y; + float z = normal.z; + + vec3 L = + L00 + + L1_1 * y + + L10 * z + + L11 * x + + L2_2 * (y * x) + + L2_1 * (y * z) + + L20 * (3.0 * z * z - 1.0) + + L21 * (z * x) + + L22 * (x * x - y * y); + + return max(L, vec3(0.0)); +} +`;var MP=`/** + * Converts an sRGB color to a linear RGB color. + * + * @param {vec3|vec4} srgbIn The color in sRGB space + * @returns {vec3|vec4} The color in linear color space. The vector type matches the input. + */ +vec3 czm_srgbToLinear(vec3 srgbIn) +{ + return pow(srgbIn, vec3(2.2)); +} + +vec4 czm_srgbToLinear(vec4 srgbIn) +{ + vec3 linearOut = pow(srgbIn.rgb, vec3(2.2)); + return vec4(linearOut, srgbIn.a); +} +`;var NP=`/** + * Creates a matrix that transforms vectors from tangent space to eye space. + * + * @name czm_tangentToEyeSpaceMatrix + * @glslFunction + * + * @param {vec3} normalEC The normal vector in eye coordinates. + * @param {vec3} tangentEC The tangent vector in eye coordinates. + * @param {vec3} bitangentEC The bitangent vector in eye coordinates. + * + * @returns {mat3} The matrix that transforms from tangent space to eye space. + * + * @example + * mat3 tangentToEye = czm_tangentToEyeSpaceMatrix(normalEC, tangentEC, bitangentEC); + * vec3 normal = tangentToEye * texture(normalMap, st).xyz; + */ +mat3 czm_tangentToEyeSpaceMatrix(vec3 normalEC, vec3 tangentEC, vec3 bitangentEC) +{ + vec3 normal = normalize(normalEC); + vec3 tangent = normalize(tangentEC); + vec3 bitangent = normalize(bitangentEC); + return mat3(tangent.x , tangent.y , tangent.z, + bitangent.x, bitangent.y, bitangent.z, + normal.x , normal.y , normal.z); +} +`;var LP=`/** + * A wrapper around the texture (WebGL2) / textureCube (WebGL1) + * function to allow for WebGL 1 support. + * + * @name czm_textureCube + * @glslFunction + * + * @param {samplerCube} sampler The sampler. + * @param {vec3} p The coordinate at which to sample the texture. + */ +vec4 czm_textureCube(samplerCube sampler, vec3 p) { +#if __VERSION__ == 300 + return texture(sampler, p); +#else + return textureCube(sampler, p); +#endif +} + +/** + * A wrapper around the textureLod (WebGL2) / textureCube (WebGL1) + * function to allow for WebGL 1 support in fragment shaders. + * + * @name czm_textureCubeLod + * @glslFunction + * + * @param {samplerCube} sampler The sampler. + * @param {vec3} p The coordinate at which to sample the texture. + * @param {float} lod The mipmap level from which to sample. + */ +vec4 czm_textureCube(samplerCube sampler, vec3 p, float lod) { +#if __VERSION__ == 300 + return textureLod(sampler, p, lod); +#elif defined(GL_EXT_shader_texture_lod) + return textureCubeLodEXT(sampler, p, lod); +#endif +}`;var OP=`/** + * Transforms a plane. + * + * @name czm_transformPlane + * @glslFunction + * + * @param {vec4} plane The plane in Hessian Normal Form. + * @param {mat4} transform The inverse-transpose of a transformation matrix. + */ +vec4 czm_transformPlane(vec4 plane, mat4 transform) { + vec4 transformedPlane = transform * plane; + // Convert the transformed plane to Hessian Normal Form + float normalMagnitude = length(transformedPlane.xyz); + return transformedPlane / normalMagnitude; +} +`;var FP=`/** + * Translates a position (or any <code>vec3</code>) that was encoded with {@link EncodedCartesian3}, + * and then provided to the shader as separate <code>high</code> and <code>low</code> bits to + * be relative to the eye. As shown in the example, the position can then be transformed in eye + * or clip coordinates using {@link czm_modelViewRelativeToEye} or {@link czm_modelViewProjectionRelativeToEye}, + * respectively. + * <p> + * This technique, called GPU RTE, eliminates jittering artifacts when using large coordinates as + * described in {@link http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm|Precisions, Precisions}. + * </p> + * + * @name czm_translateRelativeToEye + * @glslFunction + * + * @param {vec3} high The position's high bits. + * @param {vec3} low The position's low bits. + * @returns {vec3} The position translated to be relative to the camera's position. + * + * @example + * in vec3 positionHigh; + * in vec3 positionLow; + * + * void main() + * { + * vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + * gl_Position = czm_modelViewProjectionRelativeToEye * p; + * } + * + * @see czm_modelViewRelativeToEye + * @see czm_modelViewProjectionRelativeToEye + * @see czm_computePosition + * @see EncodedCartesian3 + */ +vec4 czm_translateRelativeToEye(vec3 high, vec3 low) +{ + vec3 highDifference = high - czm_encodedCameraPositionMCHigh; + // This check handles the case when NaN values have gotten into \`highDifference\`. + // Such a thing could happen on devices running iOS. + if (length(highDifference) == 0.0) { + highDifference = vec3(0); + } + vec3 lowDifference = low - czm_encodedCameraPositionMCLow; + + return vec4(highDifference + lowDifference, 1.0); +} +`;var QP=`/** + * @private + */ +vec4 czm_translucentPhong(vec3 toEye, czm_material material, vec3 lightDirectionEC) +{ + // Diffuse from directional light sources at eye (for top-down and horizon views) + float diffuse = czm_getLambertDiffuse(vec3(0.0, 0.0, 1.0), material.normal); + + if (czm_sceneMode == czm_sceneMode3D) { + // (and horizon views in 3D) + diffuse += czm_getLambertDiffuse(vec3(0.0, 1.0, 0.0), material.normal); + } + + diffuse = clamp(diffuse, 0.0, 1.0); + + float specular = czm_getSpecular(lightDirectionEC, toEye, material.normal, material.shininess); + + // Temporary workaround for adding ambient. + vec3 materialDiffuse = material.diffuse * 0.5; + + vec3 ambient = materialDiffuse; + vec3 color = ambient + material.emission; + color += materialDiffuse * diffuse * czm_lightColor; + color += material.specular * specular * czm_lightColor; + + return vec4(color, material.alpha); +} +`;var kP=`/** + * Returns the transpose of the matrix. The input <code>matrix</code> can be + * a <code>mat2</code>, <code>mat3</code>, or <code>mat4</code>. + * + * @name czm_transpose + * @glslFunction + * + * @param {} matrix The matrix to transpose. + * + * @returns {} The transposed matrix. + * + * @example + * // GLSL declarations + * mat2 czm_transpose(mat2 matrix); + * mat3 czm_transpose(mat3 matrix); + * mat4 czm_transpose(mat4 matrix); + * + * // Transpose a 3x3 rotation matrix to find its inverse. + * mat3 eastNorthUpToEye = czm_eastNorthUpToEyeCoordinates( + * positionMC, normalEC); + * mat3 eyeToEastNorthUp = czm_transpose(eastNorthUpToEye); + */ +mat2 czm_transpose(mat2 matrix) +{ + return mat2( + matrix[0][0], matrix[1][0], + matrix[0][1], matrix[1][1]); +} + +mat3 czm_transpose(mat3 matrix) +{ + return mat3( + matrix[0][0], matrix[1][0], matrix[2][0], + matrix[0][1], matrix[1][1], matrix[2][1], + matrix[0][2], matrix[1][2], matrix[2][2]); +} + +mat4 czm_transpose(mat4 matrix) +{ + return mat4( + matrix[0][0], matrix[1][0], matrix[2][0], matrix[3][0], + matrix[0][1], matrix[1][1], matrix[2][1], matrix[3][1], + matrix[0][2], matrix[1][2], matrix[2][2], matrix[3][2], + matrix[0][3], matrix[1][3], matrix[2][3], matrix[3][3]); +} +`;var UP=`vec2 getLookupUv(vec2 dimensions, int i) { + int pixY = i / int(dimensions.x); + int pixX = i - (pixY * int(dimensions.x)); + float pixelWidth = 1.0 / dimensions.x; + float pixelHeight = 1.0 / dimensions.y; + float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel + float v = (float(pixY) + 0.5) * pixelHeight; + return vec2(u, v); +} + +vec4 czm_unpackClippingExtents(highp sampler2D extentsTexture, int index) { + vec2 textureDimensions = vec2(textureSize(extentsTexture, 0)); + return texture(extentsTexture, getLookupUv(textureDimensions, index)); +}`;var GP=`/** + * Unpacks a vec4 depth value to a float in [0, 1) range. + * + * @name czm_unpackDepth + * @glslFunction + * + * @param {vec4} packedDepth The packed depth. + * + * @returns {float} The floating-point depth in [0, 1) range. + */ +float czm_unpackDepth(vec4 packedDepth) +{ + // See Aras Pranckevi\u010Dius' post Encoding Floats to RGBA + // http://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/ + return dot(packedDepth, vec4(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 16581375.0)); +} +`;var zP=`/** + * Unpack an IEEE 754 single-precision float that is packed as a little-endian unsigned normalized vec4. + * + * @name czm_unpackFloat + * @glslFunction + * + * @param {vec4} packedFloat The packed float. + * + * @returns {float} The floating-point depth in arbitrary range. + */ +float czm_unpackFloat(vec4 packedFloat) +{ + // Convert to [0.0, 255.0] and round to integer + packedFloat = floor(packedFloat * 255.0 + 0.5); + float sign = 1.0 - step(128.0, packedFloat[3]) * 2.0; + float exponent = 2.0 * mod(packedFloat[3], 128.0) + step(128.0, packedFloat[2]) - 127.0; + if (exponent == -127.0) + { + return 0.0; + } + float mantissa = mod(packedFloat[2], 128.0) * 65536.0 + packedFloat[1] * 256.0 + packedFloat[0] + float(0x800000); + float result = sign * exp2(exponent - 23.0) * mantissa; + return result; +} +`;var VP=`/** + * Unpack unsigned integers of 1-4 bytes. in WebGL 1, there is no uint type, + * so the return value is an int. + * <p> + * There are also precision limitations in WebGL 1. highp int is still limited + * to 24 bits. Above the value of 2^24 = 16777216, precision loss may occur. + * </p> + * + * @param {float|vec2|vec3|vec4} packed The packed value. For vectors, the components are listed in little-endian order. + * + * @return {int} The unpacked value. + */ + int czm_unpackUint(float packedValue) { + float rounded = czm_round(packedValue * 255.0); + return int(rounded); + } + + int czm_unpackUint(vec2 packedValue) { + vec2 rounded = czm_round(packedValue * 255.0); + return int(dot(rounded, vec2(1.0, 256.0))); + } + + int czm_unpackUint(vec3 packedValue) { + vec3 rounded = czm_round(packedValue * 255.0); + return int(dot(rounded, vec3(1.0, 256.0, 65536.0))); + } + + int czm_unpackUint(vec4 packedValue) { + vec4 rounded = czm_round(packedValue * 255.0); + return int(dot(rounded, vec4(1.0, 256.0, 65536.0, 16777216.0))); + } +`;var HP=`/** + * Transform metadata values following the EXT_structural_metadata spec + * by multiplying by scale and adding the offset. Operations are always + * performed component-wise, even for matrices. + * + * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} offset The offset to add + * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} scale The scale factor to multiply + * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} value The original value. + * + * @return {float|vec2|vec3|vec4|mat2|mat3|mat4} The transformed value of the same scalar/vector/matrix type as the input. + */ +float czm_valueTransform(float offset, float scale, float value) { + return scale * value + offset; +} + +vec2 czm_valueTransform(vec2 offset, vec2 scale, vec2 value) { + return scale * value + offset; +} + +vec3 czm_valueTransform(vec3 offset, vec3 scale, vec3 value) { + return scale * value + offset; +} + +vec4 czm_valueTransform(vec4 offset, vec4 scale, vec4 value) { + return scale * value + offset; +} + +mat2 czm_valueTransform(mat2 offset, mat2 scale, mat2 value) { + return matrixCompMult(scale, value) + offset; +} + +mat3 czm_valueTransform(mat3 offset, mat3 scale, mat3 value) { + return matrixCompMult(scale, value) + offset; +} + +mat4 czm_valueTransform(mat4 offset, mat4 scale, mat4 value) { + return matrixCompMult(scale, value) + offset; +} +`;var WP=`#ifdef LOG_DEPTH +// 1.0 at the near plane, increasing linearly from there. +out float v_depthFromNearPlusOne; +#ifdef SHADOW_MAP +out vec3 v_logPositionEC; +#endif +#endif + +vec4 czm_updatePositionDepth(vec4 coords) { +#if defined(LOG_DEPTH) + +#ifdef SHADOW_MAP + vec3 logPositionEC = (czm_inverseProjection * coords).xyz; + v_logPositionEC = logPositionEC; +#endif + + // With the very high far/near ratios used with the logarithmic depth + // buffer, floating point rounding errors can cause linear depth values + // to end up on the wrong side of the far plane, even for vertices that + // are really nowhere near it. Since we always write a correct logarithmic + // depth value in the fragment shader anyway, we just need to make sure + // such errors don't cause the primitive to be clipped entirely before + // we even get to the fragment shader. + coords.z = clamp(coords.z / coords.w, -1.0, 1.0) * coords.w; +#endif + + return coords; +} + +/** + * Writes the logarithmic depth to gl_Position using the already computed gl_Position. + * + * @name czm_vertexLogDepth + * @glslFunction + */ +void czm_vertexLogDepth() +{ +#ifdef LOG_DEPTH + v_depthFromNearPlusOne = (gl_Position.w - czm_currentFrustum.x) + 1.0; + gl_Position = czm_updatePositionDepth(gl_Position); +#endif +} + +/** + * Writes the logarithmic depth to gl_Position using the provided clip coordinates. + * <p> + * An example use case for this function would be moving the vertex in window coordinates + * before converting back to clip coordinates. Use the original vertex clip coordinates. + * </p> + * @name czm_vertexLogDepth + * @glslFunction + * + * @param {vec4} clipCoords The vertex in clip coordinates. + * + * @example + * czm_vertexLogDepth(czm_projection * vec4(positionEyeCoordinates, 1.0)); + */ +void czm_vertexLogDepth(vec4 clipCoords) +{ +#ifdef LOG_DEPTH + v_depthFromNearPlusOne = (clipCoords.w - czm_currentFrustum.x) + 1.0; + czm_updatePositionDepth(clipCoords); +#endif +} +`;var jP=`vec4 czm_screenToEyeCoordinates(vec4 screenCoordinate) +{ + // Reconstruct NDC coordinates + float x = 2.0 * screenCoordinate.x - 1.0; + float y = 2.0 * screenCoordinate.y - 1.0; + float z = (screenCoordinate.z - czm_viewportTransformation[3][2]) / czm_viewportTransformation[2][2]; + vec4 q = vec4(x, y, z, 1.0); + + // Reverse the perspective division to obtain clip coordinates. + q /= screenCoordinate.w; + + // Reverse the projection transformation to obtain eye coordinates. + if (!(czm_inverseProjection == mat4(0.0))) // IE and Edge sometimes do something weird with != between mat4s + { + q = czm_inverseProjection * q; + } + else + { + float top = czm_frustumPlanes.x; + float bottom = czm_frustumPlanes.y; + float left = czm_frustumPlanes.z; + float right = czm_frustumPlanes.w; + + float near = czm_currentFrustum.x; + float far = czm_currentFrustum.y; + + q.x = (q.x * (right - left) + left + right) * 0.5; + q.y = (q.y * (top - bottom) + bottom + top) * 0.5; + q.z = (q.z * (near - far) - near - far) * 0.5; + q.w = 1.0; + } + + return q; +} + +/** + * Transforms a position from window to eye coordinates. + * The transform from window to normalized device coordinates is done using components + * of (@link czm_viewport} and {@link czm_viewportTransformation} instead of calculating + * the inverse of <code>czm_viewportTransformation</code>. The transformation from + * normalized device coordinates to clip coordinates is done using <code>fragmentCoordinate.w</code>, + * which is expected to be the scalar used in the perspective divide. The transformation + * from clip to eye coordinates is done using {@link czm_inverseProjection}. + * + * @name czm_windowToEyeCoordinates + * @glslFunction + * + * @param {vec4} fragmentCoordinate The position in window coordinates to transform. + * + * @returns {vec4} The transformed position in eye coordinates. + * + * @see czm_modelToWindowCoordinates + * @see czm_eyeToWindowCoordinates + * @see czm_inverseProjection + * @see czm_viewport + * @see czm_viewportTransformation + * + * @example + * vec4 positionEC = czm_windowToEyeCoordinates(gl_FragCoord); + */ +vec4 czm_windowToEyeCoordinates(vec4 fragmentCoordinate) +{ + vec2 screenCoordXY = (fragmentCoordinate.xy - czm_viewport.xy) / czm_viewport.zw; + return czm_screenToEyeCoordinates(vec4(screenCoordXY, fragmentCoordinate.zw)); +} + +vec4 czm_screenToEyeCoordinates(vec2 screenCoordinateXY, float depthOrLogDepth) +{ + // See reverseLogDepth.glsl. This is separate to re-use the pow. +#if defined(LOG_DEPTH) || defined(LOG_DEPTH_READ_ONLY) + float near = czm_currentFrustum.x; + float far = czm_currentFrustum.y; + float log2Depth = depthOrLogDepth * czm_log2FarDepthFromNearPlusOne; + float depthFromNear = exp2(log2Depth) - 1.0; + float depthFromCamera = depthFromNear + near; + vec4 screenCoord = vec4(screenCoordinateXY, far * (1.0 - near / depthFromCamera) / (far - near), 1.0); + vec4 eyeCoordinate = czm_screenToEyeCoordinates(screenCoord); + eyeCoordinate.w = 1.0 / depthFromCamera; // Better precision +#else + vec4 screenCoord = vec4(screenCoordinateXY, depthOrLogDepth, 1.0); + vec4 eyeCoordinate = czm_screenToEyeCoordinates(screenCoord); +#endif + return eyeCoordinate; +} + +/** + * Transforms a position given as window x/y and a depth or a log depth from window to eye coordinates. + * This function produces more accurate results for window positions with log depth than + * conventionally unpacking the log depth using czm_reverseLogDepth and using the standard version + * of czm_windowToEyeCoordinates. + * + * @name czm_windowToEyeCoordinates + * @glslFunction + * + * @param {vec2} fragmentCoordinateXY The XY position in window coordinates to transform. + * @param {float} depthOrLogDepth A depth or log depth for the fragment. + * + * @see czm_modelToWindowCoordinates + * @see czm_eyeToWindowCoordinates + * @see czm_inverseProjection + * @see czm_viewport + * @see czm_viewportTransformation + * + * @returns {vec4} The transformed position in eye coordinates. + */ +vec4 czm_windowToEyeCoordinates(vec2 fragmentCoordinateXY, float depthOrLogDepth) +{ + vec2 screenCoordXY = (fragmentCoordinateXY.xy - czm_viewport.xy) / czm_viewport.zw; + return czm_screenToEyeCoordinates(screenCoordXY, depthOrLogDepth); +} +`;var YP=`// emulated noperspective +#if !defined(LOG_DEPTH) +in float v_WindowZ; +#endif + +/** + * Emulates GL_DEPTH_CLAMP. Clamps a fragment to the near and far plane + * by writing the fragment's depth. See czm_depthClamp for more details. + * + * @name czm_writeDepthClamp + * @glslFunction + * + * @example + * out_FragColor = color; + * czm_writeDepthClamp(); + * + * @see czm_depthClamp + */ +void czm_writeDepthClamp() +{ +#if (!defined(LOG_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth))) + gl_FragDepth = clamp(v_WindowZ * gl_FragCoord.w, 0.0, 1.0); +#endif +} +`;var qP=`#ifdef LOG_DEPTH +in float v_depthFromNearPlusOne; + +#ifdef POLYGON_OFFSET +uniform vec2 u_polygonOffset; +#endif + +#endif + +/** + * Writes the fragment depth to the logarithmic depth buffer. + * <p> + * Use this when the vertex shader does not call {@link czm_vertexLogDepth}, for example, when + * ray-casting geometry using a full screen quad. + * </p> + * @name czm_writeLogDepth + * @glslFunction + * + * @param {float} depth The depth coordinate, where 1.0 is on the near plane and + * depth increases in eye-space units from there + * + * @example + * czm_writeLogDepth((czm_projection * v_positionEyeCoordinates).w + 1.0); + */ +void czm_writeLogDepth(float depth) +{ +#if (defined(LOG_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth))) + // Discard the vertex if it's not between the near and far planes. + // We allow a bit of epsilon on the near plane comparison because a 1.0 + // from the vertex shader (indicating the vertex should be _on_ the near + // plane) will not necessarily come here as exactly 1.0. + if (depth <= 0.9999999 || depth > czm_farDepthFromNearPlusOne) { + discard; + } + +#ifdef POLYGON_OFFSET + // Polygon offset: m * factor + r * units + float factor = u_polygonOffset[0]; + float units = u_polygonOffset[1]; + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + // This factor doesn't work in IE 10 + if (factor != 0.0) { + // m = sqrt(dZdX^2 + dZdY^2); + float x = dFdx(depth); + float y = dFdy(depth); + float m = sqrt(x * x + y * y); + + // Apply the factor before computing the log depth. + depth += m * factor; + } +#endif + +#endif + + gl_FragDepth = log2(depth) * czm_oneOverLog2FarDepthFromNearPlusOne; + +#ifdef POLYGON_OFFSET + // Apply the units after the log depth. + gl_FragDepth += czm_epsilon7 * units; +#endif + +#endif +} + +/** + * Writes the fragment depth to the logarithmic depth buffer. + * <p> + * Use this when the vertex shader calls {@link czm_vertexLogDepth}. + * </p> + * + * @name czm_writeLogDepth + * @glslFunction + */ +void czm_writeLogDepth() { +#ifdef LOG_DEPTH + czm_writeLogDepth(v_depthFromNearPlusOne); +#endif +} +`;var KP=`/** + * Transforms a value for non-perspective interpolation by multiplying + * it by w, the value used in the perspective divide. This function is + * intended to be called in a vertex shader to compute the value of a + * \`varying\` that should not be subject to perspective interpolation. + * For example, screen-space texture coordinates. The fragment shader + * must call {@link czm_readNonPerspective} to retrieve the final + * non-perspective value. + * + * @name czm_writeNonPerspective + * @glslFunction + * + * @param {float|vec2|vec3|vec4} value The value to be interpolated without accounting for perspective. + * @param {float} w The perspective divide value. Usually this is the computed \`gl_Position.w\`. + * @returns {float|vec2|vec3|vec4} The transformed value, intended to be stored in a \`varying\` and read in the + * fragment shader with {@link czm_readNonPerspective}. + */ +float czm_writeNonPerspective(float value, float w) { + return value * w; +} + +vec2 czm_writeNonPerspective(vec2 value, float w) { + return value * w; +} + +vec3 czm_writeNonPerspective(vec3 value, float w) { + return value * w; +} + +vec4 czm_writeNonPerspective(vec4 value, float w) { + return value * w; +} +`;var aE={czm_degreesPerRadian:ED,czm_depthRange:ID,czm_epsilon1:xD,czm_epsilon2:bD,czm_epsilon3:TD,czm_epsilon4:SD,czm_epsilon5:wD,czm_epsilon6:BD,czm_epsilon7:DD,czm_infinity:vD,czm_oneOverPi:PD,czm_oneOverTwoPi:RD,czm_passCesium3DTile:MD,czm_passCesium3DTileClassification:ND,czm_passCesium3DTileClassificationIgnoreShow:LD,czm_passClassification:OD,czm_passCompute:FD,czm_passEnvironment:QD,czm_passGaussianSplats:kD,czm_passGlobe:UD,czm_passOpaque:GD,czm_passOverlay:zD,czm_passTerrainClassification:VD,czm_passTranslucent:HD,czm_passVoxels:WD,czm_pi:jD,czm_piOverFour:YD,czm_piOverSix:qD,czm_piOverThree:KD,czm_piOverTwo:XD,czm_radiansPerDegree:JD,czm_sceneMode2D:ZD,czm_sceneMode3D:$D,czm_sceneModeColumbusView:ev,czm_sceneModeMorphing:tv,czm_solarRadius:nv,czm_threePiOver2:iv,czm_twoPi:ov,czm_webMercatorMaxLatitude:rv,czm_depthRangeStruct:sv,czm_material:av,czm_materialInput:cv,czm_modelMaterial:lv,czm_modelVertexOutput:uv,czm_ray:fv,czm_raySegment:dv,czm_shadowParameters:hv,czm_HSBToRGB:mv,czm_HSLToRGB:Av,czm_RGBToHSB:pv,czm_RGBToHSL:gv,czm_RGBToXYZ:_v,czm_XYZToRGB:yv,czm_acesTonemapping:Cv,czm_alphaWeight:Ev,czm_antialias:Iv,czm_applyHSBShift:xv,czm_approximateSphericalCoordinates:bv,czm_approximateTanh:Tv,czm_backFacing:Sv,czm_branchFreeTernary:wv,czm_cascadeColor:Bv,czm_cascadeDistance:Dv,czm_cascadeMatrix:vv,czm_cascadeWeights:Pv,czm_clipPolygons:Rv,czm_columbusViewMorph:Mv,czm_computeAtmosphereColor:Nv,czm_computeGroundAtmosphereScattering:Lv,czm_computePosition:Ov,czm_computeScattering:Fv,czm_cosineAndSine:Qv,czm_decompressTextureCoordinates:kv,czm_depthClamp:Uv,czm_eastNorthUpToEyeCoordinates:Gv,czm_ellipsoidContainsPoint:zv,czm_ellipsoidTextureCoordinates:Vv,czm_equalsEpsilon:Hv,czm_eyeOffset:Wv,czm_eyeToWindowCoordinates:jv,czm_fastApproximateAtan:Yv,czm_fog:qv,czm_gammaCorrect:Kv,czm_geodeticSurfaceNormal:Xv,czm_getDefaultMaterial:Jv,czm_getDynamicAtmosphereLightDirection:Zv,czm_getLambertDiffuse:$v,czm_getSpecular:eP,czm_getWaterNoise:tP,czm_hue:nP,czm_inverseGamma:iP,czm_isEmpty:oP,czm_isFull:rP,czm_latitudeToWebMercatorFraction:sP,czm_lineDistance:aP,czm_linearToSrgb:cP,czm_luminance:lP,czm_maximumComponent:uP,czm_metersPerPixel:fP,czm_modelToWindowCoordinates:dP,czm_multiplyWithColorBalance:hP,czm_nearFarScalar:mP,czm_octDecode:AP,czm_packDepth:pP,czm_pbrLighting:gP,czm_pbrNeutralTonemapping:_P,czm_phong:yP,czm_planeDistance:CP,czm_pointAlongRay:EP,czm_rayEllipsoidIntersectionInterval:IP,czm_raySphereIntersectionInterval:xP,czm_readDepth:bP,czm_readNonPerspective:TP,czm_reverseLogDepth:SP,czm_round:wP,czm_saturation:BP,czm_shadowDepthCompare:DP,czm_shadowVisibility:vP,czm_signNotZero:PP,czm_sphericalHarmonics:RP,czm_srgbToLinear:MP,czm_tangentToEyeSpaceMatrix:NP,czm_textureCube:LP,czm_transformPlane:OP,czm_translateRelativeToEye:FP,czm_translucentPhong:QP,czm_transpose:kP,czm_unpackClippingExtents:UP,czm_unpackDepth:GP,czm_unpackFloat:zP,czm_unpackUint:VP,czm_valueTransform:HP,czm_vertexLogDepth:WP,czm_windowToEyeCoordinates:jP,czm_writeDepthClamp:YP,czm_writeLogDepth:qP,czm_writeNonPerspective:KP};function eNe(e,t){let n=e;return n=n.replaceAll("version 300 es",""),n=n.replaceAll(/(texture\()/g,"texture2D("),t?(n=n.replaceAll(/\n\s*(in)\s+(vec\d|mat\d|float)/g,` +varying $2`),/out_FragData_(\d+)/.test(n)&&(n=`#extension GL_EXT_draw_buffers : enable +${n}`,n=n.replaceAll(/layout\s+\(location\s*=\s*\d+\)\s*out\s+vec4\s+out_FragData_\d+;/g,""),n=n.replaceAll(/out_FragData_(\d+)/g,"gl_FragData[$1]")),n=n.replaceAll(/layout\s+\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g,""),n=n.replaceAll(/out_FragColor/g,"gl_FragColor"),n=n.replaceAll(/out_FragColor\[(\d+)\]/g,"gl_FragColor[$1]"),/gl_FragDepth/.test(n)&&(n=`#extension GL_EXT_frag_depth : enable +${n}`,n=n.replaceAll(/gl_FragDepth/g,"gl_FragDepthEXT")),n=`#ifdef GL_EXT_shader_texture_lod +#extension GL_EXT_shader_texture_lod : enable +#endif +${n}`,n=`#ifdef GL_OES_standard_derivatives +#extension GL_OES_standard_derivatives : enable +#endif +${n}`):(n=n.replaceAll(/(in)\s+(vec\d|mat\d|float)/g,"attribute $2"),n=n.replaceAll(/(out)\s+(vec\d|mat\d|float)\s+([\w]+);/g,"varying $2 $3;")),n=`#version 100 +${n}`,n}var XP=eNe;function Goe(e){return e=e.replace(/\/\/.*/g,""),e.replace(/\/\*\*[\s\S]*?\*\//gm,function(t){let n=t.match(/\n/gm).length,i="";for(let o=0;o<n;++o)i+=` +`;return i})}function zoe(e,t,n){let i;for(let o=0;o<n.length;++o)n[o].name===e&&(i=n[o]);return l(i)||(t=Goe(t),i={name:e,glslSource:t,dependsOn:[],requiredBy:[],evaluated:!1},n.push(i)),i}function Voe(e,t){if(e.evaluated)return;e.evaluated=!0;let n=e.glslSource.match(/\bczm_[a-zA-Z0-9_]*/g);l(n)&&n!==null&&(n=n.filter(function(i,o){return n.indexOf(i)===o}),n.forEach(function(i){if(i!==e.name&&fa._czmBuiltinsAndUniforms.hasOwnProperty(i)){let o=zoe(i,fa._czmBuiltinsAndUniforms[i],t);e.dependsOn.push(o),o.requiredBy.push(e),Voe(o,t)}}))}function tNe(e){let t=[],n=[];for(;e.length>0;){let o=e.pop();n.push(o),o.requiredBy.length===0&&t.push(o)}for(;t.length>0;){let o=t.shift();e.push(o);for(let r=0;r<o.dependsOn.length;++r){let s=o.dependsOn[r],a=s.requiredBy.indexOf(o);s.requiredBy.splice(a,1),s.requiredBy.length===0&&t.push(s)}}let i=[];for(let o=0;o<n.length;++o)n[o].requiredBy.length!==0&&i.push(n[o])}function nNe(e){let t=[],n=zoe("main",e,t);Voe(n,t),tNe(t);let i="";for(let o=t.length-1;o>=0;--o)i=`${i+t[o].glslSource} +`;return i.replace(n.glslSource,"")}function Hoe(e,t,n){let i,o,r="",s=e.sources;if(l(s))for(i=0,o=s.length;i<o;++i)r+=` +#line 0 +${s[i]}`;r=Goe(r);let a;r=r.replace(/#version\s+(.*?)\n/gm,function(_,y){return a=y,` +`});let c=[];r=r.replace(/#extension.*\n/gm,function(_){return c.push(_),` +`}),r=r.replace(/precision\s(lowp|mediump|highp)\s(float|int);/,"");let u=e.pickColorQualifier;l(u)&&(r=fa.createPickFragmentShaderSource(r,u));let f="",h=c.length;for(i=0;i<h;i++)f+=c[i];t&&(f+=`#ifdef GL_FRAGMENT_PRECISION_HIGH + precision highp float; + precision highp int; +#else + precision mediump float; + precision mediump int; + #define highp mediump +#endif + +`);let A=e.defines;if(l(A))for(i=0,o=A.length;i<o;++i){let _=A[i];_.length!==0&&(f+=`#define ${_} +`)}n.textureFloatLinear&&(f+=`#define OES_texture_float_linear + +`),n.floatingPointTexture&&(f+=`#define OES_texture_float + +`);let g="";e.includeBuiltIns&&(g=nNe(r)),f+=` +#line 0 +`;let m=g+r;return n.webgl2&&t&&!/layout\s*\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g.test(m)&&!/czm_out_FragColor/g.test(m)&&/out_FragColor/g.test(m)&&(f+=`layout(location = 0) out vec4 out_FragColor; + +`),f+=g,f+=r,n.webgl2?f=`#version 300 es +${f}`:f=XP(f,t),f}function fa(e){e=e??V.EMPTY_OBJECT;let t=e.pickColorQualifier;this.defines=l(e.defines)?e.defines.slice(0):[],this.sources=l(e.sources)?e.sources.slice(0):[],this.pickColorQualifier=t,this.includeBuiltIns=e.includeBuiltIns??!0}fa.prototype.clone=function(){return new fa({sources:this.sources,defines:this.defines,pickColorQualifier:this.pickColorQualifier,includeBuiltIns:this.includeBuiltIns})};fa.replaceMain=function(e,t){return t=`void ${t}()`,e.replace(/void\s+main\s*\(\s*(?:void)?\s*\)/g,t)};fa.prototype.getCacheKey=function(){let t=this.defines.slice().sort().join(","),n=this.pickColorQualifier,i=this.includeBuiltIns,o=this.sources.join(` +`);return`${t}:${n}:${i}:${o}`};fa.prototype.createCombinedVertexShader=function(e){return Hoe(this,!1,e)};fa.prototype.createCombinedFragmentShader=function(e){return Hoe(this,!0,e)};fa._czmBuiltinsAndUniforms={};for(let e in aE)aE.hasOwnProperty(e)&&(fa._czmBuiltinsAndUniforms[e]=aE[e]);for(let e in rp)if(rp.hasOwnProperty(e)){let t=rp[e];typeof t.getDeclaration=="function"&&(fa._czmBuiltinsAndUniforms[e]=t.getDeclaration(e))}fa.createPickVertexShaderSource=function(e){return`${fa.replaceMain(e,"czm_old_main")} +in vec4 pickColor; +out vec4 czm_pickColor; +void main() +{ + czm_old_main(); + czm_pickColor = pickColor; +}`};fa.createPickFragmentShaderSource=function(e,t){let n=fa.replaceMain(e,"czm_old_main"),i=`${t} vec4 czm_pickColor; +void main() +{ + czm_old_main(); + if (out_FragColor.a == 0.0) { + discard; + } + out_FragColor = czm_pickColor; +}`;return`${n} +${i}`};function iNe(e,t){let n=e.defines,i=n.length;for(let o=0;o<i;++o)if(n[o]===t)return!0;return!1}function Woe(e,t){let n=e.sources,i=n.length;for(let o=0;o<i;++o)if(n[o].indexOf(t)!==-1)return!0;return!1}function joe(e,t){let n=t.length;for(let i=0;i<n;++i){let o=t[i];if(Woe(e,o))return o}}var oNe=["v_normalEC","v_normal"];fa.findNormalVarying=function(e){return Woe(e,"#ifdef HAS_NORMALS")?iNe(e,"HAS_NORMALS")?"v_normalEC":void 0:joe(e,oNe)};var rNe=["v_positionEC"];fa.findPositionVarying=function(e){return joe(e,rNe)};var He=fa;var JP=`in vec3 position3DHigh; +in vec3 position3DLow; +in float batchId; + +#ifdef EXTRUDED_GEOMETRY +in vec3 extrudeDirection; + +uniform float u_globeMinimumAltitude; +#endif // EXTRUDED_GEOMETRY + +#ifdef PER_INSTANCE_COLOR +out vec4 v_color; +#endif // PER_INSTANCE_COLOR + +#ifdef TEXTURE_COORDINATES +#ifdef SPHERICAL +out vec4 v_sphericalExtents; +#else // SPHERICAL +out vec2 v_inversePlaneExtents; +out vec4 v_westPlane; +out vec4 v_southPlane; +#endif // SPHERICAL +out vec3 v_uvMinAndSphericalLongitudeRotation; +out vec3 v_uMaxAndInverseDistance; +out vec3 v_vMaxAndInverseDistance; +#endif // TEXTURE_COORDINATES + +void main() +{ + vec4 position = czm_computePosition(); + +#ifdef EXTRUDED_GEOMETRY + float delta = min(u_globeMinimumAltitude, czm_geometricToleranceOverMeter * length(position.xyz)); + delta *= czm_sceneMode == czm_sceneMode3D ? 1.0 : 0.0; + + //extrudeDirection is zero for the top layer + position = position + vec4(extrudeDirection * delta, 0.0); +#endif + +#ifdef TEXTURE_COORDINATES +#ifdef SPHERICAL + v_sphericalExtents = czm_batchTable_sphericalExtents(batchId); + v_uvMinAndSphericalLongitudeRotation.z = czm_batchTable_longitudeRotation(batchId); +#else // SPHERICAL +#ifdef COLUMBUS_VIEW_2D + vec4 planes2D_high = czm_batchTable_planes2D_HIGH(batchId); + vec4 planes2D_low = czm_batchTable_planes2D_LOW(batchId); + + // If the primitive is split across the IDL (planes2D_high.x > planes2D_high.w): + // - If this vertex is on the east side of the IDL (position3DLow.y > 0.0, comparison with position3DHigh may produce artifacts) + // - existing "east" is on the wrong side of the world, far away (planes2D_high/low.w) + // - so set "east" as beyond the eastmost extent of the projection (idlSplitNewPlaneHiLow) + vec2 idlSplitNewPlaneHiLow = vec2(EAST_MOST_X_HIGH - (WEST_MOST_X_HIGH - planes2D_high.w), EAST_MOST_X_LOW - (WEST_MOST_X_LOW - planes2D_low.w)); + bool idlSplit = planes2D_high.x > planes2D_high.w && position3DLow.y > 0.0; + planes2D_high.w = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.x, planes2D_high.w); + planes2D_low.w = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.y, planes2D_low.w); + + // - else, if this vertex is on the west side of the IDL (position3DLow.y < 0.0) + // - existing "west" is on the wrong side of the world, far away (planes2D_high/low.x) + // - so set "west" as beyond the westmost extent of the projection (idlSplitNewPlaneHiLow) + idlSplit = planes2D_high.x > planes2D_high.w && position3DLow.y < 0.0; + idlSplitNewPlaneHiLow = vec2(WEST_MOST_X_HIGH - (EAST_MOST_X_HIGH - planes2D_high.x), WEST_MOST_X_LOW - (EAST_MOST_X_LOW - planes2D_low.x)); + planes2D_high.x = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.x, planes2D_high.x); + planes2D_low.x = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.y, planes2D_low.x); + + vec3 southWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.xy), vec3(0.0, planes2D_low.xy))).xyz; + vec3 northWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.x, planes2D_high.z), vec3(0.0, planes2D_low.x, planes2D_low.z))).xyz; + vec3 southEastCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.w, planes2D_high.y), vec3(0.0, planes2D_low.w, planes2D_low.y))).xyz; +#else // COLUMBUS_VIEW_2D + // 3D case has smaller "plane extents," so planes encoded as a 64 bit position and 2 vec3s for distances/direction + vec3 southWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(czm_batchTable_southWest_HIGH(batchId), czm_batchTable_southWest_LOW(batchId))).xyz; + vec3 northWestCorner = czm_normal * czm_batchTable_northward(batchId) + southWestCorner; + vec3 southEastCorner = czm_normal * czm_batchTable_eastward(batchId) + southWestCorner; +#endif // COLUMBUS_VIEW_2D + + vec3 eastWard = southEastCorner - southWestCorner; + float eastExtent = length(eastWard); + eastWard /= eastExtent; + + vec3 northWard = northWestCorner - southWestCorner; + float northExtent = length(northWard); + northWard /= northExtent; + + v_westPlane = vec4(eastWard, -dot(eastWard, southWestCorner)); + v_southPlane = vec4(northWard, -dot(northWard, southWestCorner)); + v_inversePlaneExtents = vec2(1.0 / eastExtent, 1.0 / northExtent); +#endif // SPHERICAL + vec4 uvMinAndExtents = czm_batchTable_uvMinAndExtents(batchId); + vec4 uMaxVmax = czm_batchTable_uMaxVmax(batchId); + + v_uMaxAndInverseDistance = vec3(uMaxVmax.xy, uvMinAndExtents.z); + v_vMaxAndInverseDistance = vec3(uMaxVmax.zw, uvMinAndExtents.w); + v_uvMinAndSphericalLongitudeRotation.xy = uvMinAndExtents.xy; +#endif // TEXTURE_COORDINATES + +#ifdef PER_INSTANCE_COLOR + v_color = czm_batchTable_color(batchId); +#endif + + gl_Position = czm_depthClamp(czm_modelViewProjectionRelativeToEye * position); +} +`;var B_=`#ifdef VECTOR_TILE +uniform vec4 u_highlightColor; +#endif + +void main(void) +{ +#ifdef VECTOR_TILE + out_FragColor = czm_gammaCorrect(u_highlightColor); +#else + out_FragColor = vec4(1.0); +#endif + czm_writeDepthClamp(); +} +`;var Yoe={TERRAIN:0,CESIUM_3D_TILE:1,BOTH:2};Yoe.NUMBER_OF_CLASSIFICATION_TYPES=3;var Jn=Object.freeze(Yoe);var sNe={NEVER:ee.NEVER,LESS:ee.LESS,EQUAL:ee.EQUAL,LESS_OR_EQUAL:ee.LEQUAL,GREATER:ee.GREATER,NOT_EQUAL:ee.NOTEQUAL,GREATER_OR_EQUAL:ee.GEQUAL,ALWAYS:ee.ALWAYS},Qa=Object.freeze(sNe);function aNe(e,t){let n=[],i=e.length,o=0;for(;o<i;){let r=Math.ceil((i-o)/t--);n.push(e.slice(o,o+r)),o+=r}return n}var ZP=aNe;function ap(e,t,n){if(this._attributes=t,this._numberOfInstances=n,t.length===0)return;let i=cNe(t),o=e.floatingPointTexture,r=i===Ve.FLOAT&&!o,s=lNe(t,r),a=uNe(s,t,r),c=Math.floor(Yt.maximumTextureSize/a),u=Math.min(n,c),f=a*u,h=Math.ceil(n/u),A=1/f,g=A*.5,m=1/h,_=m*.5;this._textureDimensions=new U(f,h),this._textureStep=new se(A,g,m,_),this._pixelDatatype=r?Ve.UNSIGNED_BYTE:i,this._packFloats=r,this._offsets=s,this._stride=a,this._texture=void 0;let y=4*f*h;this._batchValues=i===Ve.FLOAT&&!r?new Float32Array(y):new Uint8Array(y),this._batchValuesDirty=!1}Object.defineProperties(ap.prototype,{attributes:{get:function(){return this._attributes}},numberOfInstances:{get:function(){return this._numberOfInstances}}});function cNe(e){let t=!1,n=e.length;for(let i=0;i<n;++i)if(e[i].componentDatatype!==q.UNSIGNED_BYTE){t=!0;break}return t?Ve.FLOAT:Ve.UNSIGNED_BYTE}function Koe(e,t){let n=e[t].componentsPerAttribute;return n===2?U:n===3?d:n===4?se:Number}function lNe(e,t){let n=new Array(e.length),i=0,o=e.length;for(let r=0;r<o;++r){let a=e[r].componentDatatype;n[r]=i,a!==q.UNSIGNED_BYTE&&t?i+=4:++i}return n}function uNe(e,t,n){let i=e.length,o=e[i-1];return t[i-1].componentDatatype!==q.UNSIGNED_BYTE&&n?o+4:o+1}var $P=new se;function fNe(e,t,n){let i=se.unpack(e,t,$P),o=se.unpackFloat(i);i=se.unpack(e,t+4,$P);let r=se.unpackFloat(i);i=se.unpack(e,t+8,$P);let s=se.unpackFloat(i);i=se.unpack(e,t+12,$P);let a=se.unpackFloat(i);return se.fromElements(o,r,s,a,n)}function dNe(e,t,n){let i=se.packFloat(e.x,$P);se.pack(i,t,n),i=se.packFloat(e.y,i),se.pack(i,t,n+4),i=se.packFloat(e.z,i),se.pack(i,t,n+8),i=se.packFloat(e.w,i),se.pack(i,t,n+12)}var qoe=new se;ap.prototype.getBatchedAttribute=function(e,t,n){let i=this._attributes,o=this._offsets[t],s=4*this._stride*e+4*o,a;this._packFloats&&i[t].componentDatatype!==Ve.UNSIGNED_BYTE?a=fNe(this._batchValues,s,qoe):a=se.unpack(this._batchValues,s,qoe);let c=Koe(i,t);return l(c.fromCartesian4)?c.fromCartesian4(a,n):l(c.clone)?c.clone(a,n):a.x};var hNe=[void 0,void 0,new U,new d,new se],mNe=new se;ap.prototype.setBatchedAttribute=function(e,t,n){let i=this._attributes,o=hNe[i[t].componentsPerAttribute],r=this.getBatchedAttribute(e,t,o),s=Koe(this._attributes,t);if(l(s.equals)?s.equals(r,n):r===n)return;let c=mNe;c.x=l(n.x)?n.x:n,c.y=l(n.y)?n.y:0,c.z=l(n.z)?n.z:0,c.w=l(n.w)?n.w:0;let u=this._offsets[t],h=4*this._stride*e+4*u;this._packFloats&&i[t].componentDatatype!==Ve.UNSIGNED_BYTE?dNe(c,this._batchValues,h):se.pack(c,this._batchValues,h),this._batchValuesDirty=!0};function ANe(e,t){let n=e._textureDimensions;e._texture=new Mt({context:t,pixelFormat:$e.RGBA,pixelDatatype:e._pixelDatatype,width:n.x,height:n.y,sampler:on.NEAREST,flipY:!1})}function pNe(e){let t=e._textureDimensions;e._texture.copyFrom({source:{width:t.x,height:t.y,arrayBufferView:e._batchValues}})}ap.prototype.update=function(e){l(this._texture)&&!this._batchValuesDirty||this._attributes.length===0||(this._batchValuesDirty=!1,l(this._texture)||ANe(this,e.context),pNe(this))};ap.prototype.getUniformMapCallback=function(){let e=this;return function(t){return e._attributes.length===0?t:Tt(t,{batchTexture:function(){return e._texture},batchTextureDimensions:function(){return e._textureDimensions},batchTextureStep:function(){return e._textureStep}})}};function gNe(e){let t=e._stride;return e._textureDimensions.y===1?`uniform vec4 batchTextureStep; +vec2 computeSt(float batchId) +{ + float stepX = batchTextureStep.x; + float centerX = batchTextureStep.y; + float numberOfAttributes = float(${t}); + return vec2(centerX + (batchId * numberOfAttributes * stepX), 0.5); +} +`:`uniform vec4 batchTextureStep; +uniform vec2 batchTextureDimensions; +vec2 computeSt(float batchId) +{ + float stepX = batchTextureStep.x; + float centerX = batchTextureStep.y; + float stepY = batchTextureStep.z; + float centerY = batchTextureStep.w; + float numberOfAttributes = float(${t}); + float xId = mod(batchId * numberOfAttributes, batchTextureDimensions.x); + float yId = floor(batchId * numberOfAttributes / batchTextureDimensions.x); + return vec2(centerX + (xId * stepX), centerY + (yId * stepY)); +} +`}function _Ne(e){return e===1?"float":`vec${e}`}function yNe(e){return e===1?".x":e===2?".xy":e===3?".xyz":""}function CNe(e,t){let i=e._attributes[t],o=i.componentsPerAttribute,r=i.functionName,s=_Ne(o),a=yNe(o),c=e._offsets[t],u=`${s} ${r}(float batchId) +{ + vec2 st = computeSt(batchId); + st.x += batchTextureStep.x * float(${c}); +`;return e._packFloats&&i.componentDatatype!==Ve.UNSIGNED_BYTE?u+=`vec4 textureValue; +textureValue.x = czm_unpackFloat(texture(batchTexture, st)); +textureValue.y = czm_unpackFloat(texture(batchTexture, st + vec2(batchTextureStep.x, 0.0))); +textureValue.z = czm_unpackFloat(texture(batchTexture, st + vec2(batchTextureStep.x * 2.0, 0.0))); +textureValue.w = czm_unpackFloat(texture(batchTexture, st + vec2(batchTextureStep.x * 3.0, 0.0))); +`:u+=` vec4 textureValue = texture(batchTexture, st); +`,u+=` ${s} value = textureValue${a}; +`,e._pixelDatatype===Ve.UNSIGNED_BYTE&&i.componentDatatype===q.UNSIGNED_BYTE&&!i.normalize?u+=`value *= 255.0; +`:e._pixelDatatype===Ve.FLOAT&&i.componentDatatype===q.UNSIGNED_BYTE&&i.normalize&&(u+=`value /= 255.0; +`),u+=` return value; +} +`,u}ap.prototype.getVertexShaderCallback=function(){let e=this._attributes;if(e.length===0)return function(i){return i};let t=`uniform highp sampler2D batchTexture; +`;t+=`${gNe(this)} +`;let n=e.length;for(let i=0;i<n;++i)t+=CNe(this,i);return function(i){let o=i.indexOf("void main"),r=i.substring(0,o),s=i.substring(o);return`${r} +${t} +${s}`}};ap.prototype.isDestroyed=function(){return!1};ap.prototype.destroy=function(){return this._texture=this._texture&&this._texture.destroy(),ue(this)};var cE=ap;function eu(e){this._ellipsoid=e??te.WGS84,this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis}Object.defineProperties(eu.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});eu.mercatorAngleToGeodeticLatitude=function(e){return D.PI_OVER_TWO-2*Math.atan(Math.exp(-e))};eu.geodeticLatitudeToMercatorAngle=function(e){e>eu.MaximumLatitude?e=eu.MaximumLatitude:e<-eu.MaximumLatitude&&(e=-eu.MaximumLatitude);let t=Math.sin(e);return .5*Math.log((1+t)/(1-t))};eu.MaximumLatitude=eu.mercatorAngleToGeodeticLatitude(Math.PI);eu.prototype.project=function(e,t){let n=this._semimajorAxis,i=e.longitude*n,o=eu.geodeticLatitudeToMercatorAngle(e.latitude)*n,r=e.height;return l(t)?(t.x=i,t.y=o,t.z=r,t):new d(i,o,r)};eu.prototype.unproject=function(e,t){let n=this._oneOverSemimajorAxis,i=e.x*n,o=eu.mercatorAngleToGeodeticLatitude(e.y*n),r=e.z;return l(t)?(t.longitude=i,t.latitude=o,t.height=r,t):new Ae(i,o,r)};var zi=eu;function ENe(e,t,n){let i=!n,o=e.length,r;if(!i&&o>1){let s=e[0].modelMatrix;for(r=1;r<o;++r)if(!N.equals(s,e[r].modelMatrix)){i=!0;break}}if(i)for(r=0;r<o;++r)l(e[r].geometry)&&Vn.transformToWorldCoordinates(e[r]);else N.multiplyTransformation(t,e[0].modelMatrix,t)}function G6(e,t){let n=e.attributes,i=n.position,o=i.values.length/i.componentsPerAttribute;n.batchId=new De({componentDatatype:q.FLOAT,componentsPerAttribute:1,values:new Float32Array(o)});let r=n.batchId.values;for(let s=0;s<o;++s)r[s]=t}function INe(e){let t=e.length;for(let n=0;n<t;++n){let i=e[n];l(i.geometry)?G6(i.geometry,n):l(i.westHemisphereGeometry)&&l(i.eastHemisphereGeometry)&&(G6(i.westHemisphereGeometry,n),G6(i.eastHemisphereGeometry,n))}}function xNe(e){let t=e.instances,n=e.projection,i=e.elementIndexUintSupported,o=e.scene3DOnly,r=e.vertexCacheOptimize,s=e.compressVertices,a=e.modelMatrix,c,u,f,h=t.length;for(c=0;c<h;++c)if(l(t[c].geometry)){f=t[c].geometry.primitiveType;break}if(ENe(t,a,o),!o)for(c=0;c<h;++c)l(t[c].geometry)&&Vn.splitLongitude(t[c]);if(INe(t),r)for(c=0;c<h;++c){let g=t[c];l(g.geometry)?(Vn.reorderForPostVertexCache(g.geometry),Vn.reorderForPreVertexCache(g.geometry)):l(g.westHemisphereGeometry)&&l(g.eastHemisphereGeometry)&&(Vn.reorderForPostVertexCache(g.westHemisphereGeometry),Vn.reorderForPreVertexCache(g.westHemisphereGeometry),Vn.reorderForPostVertexCache(g.eastHemisphereGeometry),Vn.reorderForPreVertexCache(g.eastHemisphereGeometry))}let A=Vn.combineInstances(t);for(h=A.length,c=0;c<h;++c){u=A[c];let g=u.attributes;if(o)for(let m in g)g.hasOwnProperty(m)&&g[m].componentDatatype===q.DOUBLE&&Vn.encodeAttribute(u,m,`${m}3DHigh`,`${m}3DLow`);else for(let m in g)if(g.hasOwnProperty(m)&&g[m].componentDatatype===q.DOUBLE){let _=`${m}3D`,y=`${m}2D`;Vn.projectTo2D(u,m,_,y,n),l(u.boundingSphere)&&m==="position"&&(u.boundingSphereCV=le.fromVertices(u.attributes.position2D.values)),Vn.encodeAttribute(u,_,`${_}High`,`${_}Low`),Vn.encodeAttribute(u,y,`${y}High`,`${y}Low`)}s&&Vn.compressVertices(u)}if(!i){let g=[];for(h=A.length,c=0;c<h;++c)u=A[c],g=g.concat(Vn.fitToUnsignedShortIndices(u));A=g}return A}function z6(e,t,n,i){let o,r,s,a=i.length-1;if(a>=0){let u=i[a];o=u.offset+u.count,s=u.index,r=n[s].indices.length}else o=0,s=0,r=n[s].indices.length;let c=e.length;for(let u=0;u<c;++u){let h=e[u][t];if(!l(h))continue;let A=h.indices.length;o+A>r&&(o=0,r=n[++s].indices.length),i.push({index:s,offset:o,count:A}),o+=A}}function bNe(e,t){let n=[];return z6(e,"geometry",t,n),z6(e,"westHemisphereGeometry",t,n),z6(e,"eastHemisphereGeometry",t,n),n}var cp={};cp.combineGeometry=function(e){let t,n,i=e.instances,o=i.length,r,s,a=!1;o>0&&(t=xNe(e),t.length>0&&(n=Vn.createAttributeLocations(t[0]),e.createPickOffsets&&(r=bNe(i,t))),l(i[0].attributes)&&l(i[0].attributes.offset)&&(s=new Array(o),a=!0));let c=new Array(o),u=new Array(o);for(let f=0;f<o;++f){let h=i[f],A=h.geometry;l(A)&&(c[f]=A.boundingSphere,u[f]=A.boundingSphereCV,a&&(s[f]=h.geometry.offsetAttribute));let g=h.eastHemisphereGeometry,m=h.westHemisphereGeometry;l(g)&&l(m)&&(l(g.boundingSphere)&&l(m.boundingSphere)&&(c[f]=le.union(g.boundingSphere,m.boundingSphere)),l(g.boundingSphereCV)&&l(m.boundingSphereCV)&&(u[f]=le.union(g.boundingSphereCV,m.boundingSphereCV)))}return{geometries:t,modelMatrix:e.modelMatrix,attributeLocations:n,pickOffsets:r,offsetInstanceExtend:s,boundingSpheres:c,boundingSpheresCV:u}};function TNe(e,t){let n=e.attributes;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i];l(o)&&l(o.values)&&t.push(o.values.buffer)}l(e.indices)&&t.push(e.indices.buffer)}function SNe(e,t){let n=e.length;for(let i=0;i<n;++i)TNe(e[i],t)}function wNe(e){let t=1,n=e.length;for(let i=0;i<n;i++){let o=e[i];if(++t,!l(o))continue;let r=o.attributes;t+=7+2*le.packedLength+(l(o.indices)?o.indices.length:0);for(let s in r)if(r.hasOwnProperty(s)&&l(r[s])){let a=r[s];t+=5+a.values.length}}return t}cp.packCreateGeometryResults=function(e,t){let n=new Float64Array(wNe(e)),i=[],o={},r=e.length,s=0;n[s++]=r;for(let a=0;a<r;a++){let c=e[a],u=l(c);if(n[s++]=u?1:0,!u)continue;n[s++]=c.primitiveType,n[s++]=c.geometryType,n[s++]=c.offsetAttribute??-1;let f=l(c.boundingSphere)?1:0;n[s++]=f,f&&le.pack(c.boundingSphere,n,s),s+=le.packedLength;let h=l(c.boundingSphereCV)?1:0;n[s++]=h,h&&le.pack(c.boundingSphereCV,n,s),s+=le.packedLength;let A=c.attributes,g=[];for(let _ in A)A.hasOwnProperty(_)&&l(A[_])&&(g.push(_),l(o[_])||(o[_]=i.length,i.push(_)));n[s++]=g.length;for(let _=0;_<g.length;_++){let y=g[_],C=A[y];n[s++]=o[y],n[s++]=C.componentDatatype,n[s++]=C.componentsPerAttribute,n[s++]=C.normalize?1:0,n[s++]=C.values.length,n.set(C.values,s),s+=C.values.length}let m=l(c.indices)?c.indices.length:0;n[s++]=m,m>0&&(n.set(c.indices,s),s+=m)}return t.push(n.buffer),{stringTable:i,packedData:n}};cp.unpackCreateGeometryResults=function(e){let t=e.stringTable,n=e.packedData,i,o=new Array(n[0]),r=0,s=1;for(;s<n.length;){if(!(n[s++]===1)){o[r++]=void 0;continue}let c=n[s++],u=n[s++],f=n[s++];f===-1&&(f=void 0);let h,A;n[s++]===1&&(h=le.unpack(n,s)),s+=le.packedLength,n[s++]===1&&(A=le.unpack(n,s)),s+=le.packedLength;let _,y,C,E=new yn,I=n[s++];for(i=0;i<I;i++){let S=t[n[s++]],B=n[s++];C=n[s++];let v=n[s++]!==0;_=n[s++],y=q.createTypedArray(B,_);for(let P=0;P<_;P++)y[P]=n[s++];E[S]=new De({componentDatatype:B,componentsPerAttribute:C,normalize:v,values:y})}let b;if(_=n[s++],_>0){let S=y.length/C;for(b=Oe.createTypedArray(S,_),i=0;i<_;i++)b[i]=n[s++]}o[r++]=new ht({primitiveType:c,geometryType:u,boundingSphere:h,boundingSphereCV:A,indices:b,attributes:E,offsetAttribute:f})}return o};function BNe(e,t){let n=e.length,i=new Float64Array(1+n*19),o=0;i[o++]=n;for(let r=0;r<n;r++){let s=e[r];if(N.pack(s.modelMatrix,i,o),o+=N.packedLength,l(s.attributes)&&l(s.attributes.offset)){let a=s.attributes.offset.value;i[o]=a[0],i[o+1]=a[1],i[o+2]=a[2]}o+=3}return t.push(i.buffer),i}function DNe(e){let t=e,n=new Array(t[0]),i=0,o=1;for(;o<t.length;){let r=N.unpack(t,o),s;o+=N.packedLength,l(t[o])&&(s={offset:new uo(t[o],t[o+1],t[o+2])}),o+=3,n[i++]={modelMatrix:r,attributes:s}}return n}cp.packCombineGeometryParameters=function(e,t){let n=e.createGeometryResults,i=n.length;for(let o=0;o<i;o++)t.push(n[o].packedData.buffer);return{createGeometryResults:e.createGeometryResults,packedInstances:BNe(e.instances,t),ellipsoid:e.ellipsoid,isGeographic:e.projection instanceof Ui,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix,createPickOffsets:e.createPickOffsets}};cp.unpackCombineGeometryParameters=function(e){let t=DNe(e.packedInstances),n=e.createGeometryResults,i=n.length,o=0;for(let a=0;a<i;a++){let c=cp.unpackCreateGeometryResults(n[a]),u=c.length;for(let f=0;f<u;f++){let h=c[f],A=t[o];A.geometry=h,++o}}let r=te.clone(e.ellipsoid),s=e.isGeographic?new Ui(r):new zi(r);return{instances:t,ellipsoid:r,projection:s,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:N.clone(e.modelMatrix),createPickOffsets:e.createPickOffsets}};function Xoe(e){let t=e.length,n=1+(le.packedLength+1)*t,i=new Float32Array(n),o=0;i[o++]=t;for(let r=0;r<t;++r){let s=e[r];l(s)?(i[o++]=1,le.pack(e[r],i,o)):i[o++]=0,o+=le.packedLength}return i}function Joe(e){let t=new Array(e[0]),n=0,i=1;for(;i<e.length;)e[i++]===1&&(t[n]=le.unpack(e,i)),++n,i+=le.packedLength;return t}cp.packCombineGeometryResults=function(e,t){l(e.geometries)&&SNe(e.geometries,t);let n=Xoe(e.boundingSpheres),i=Xoe(e.boundingSpheresCV);return t.push(n.buffer,i.buffer),{geometries:e.geometries,attributeLocations:e.attributeLocations,modelMatrix:e.modelMatrix,pickOffsets:e.pickOffsets,offsetInstanceExtend:e.offsetInstanceExtend,boundingSpheres:n,boundingSpheresCV:i}};cp.unpackCombineGeometryResults=function(e){return{geometries:e.geometries,attributeLocations:e.attributeLocations,modelMatrix:e.modelMatrix,pickOffsets:e.pickOffsets,offsetInstanceExtend:e.offsetInstanceExtend,boundingSpheres:Joe(e.boundingSpheres),boundingSpheresCV:Joe(e.boundingSpheresCV)}};var lE=cp;var vNe={READY:0,CREATING:1,CREATED:2,COMBINING:3,COMBINED:4,COMPLETE:5,FAILED:6},zr=Object.freeze(vNe);var jG={MORPHING:0,COLUMBUS_VIEW:1,SCENE2D:2,SCENE3D:3};jG.getMorphTime=function(e){return e===jG.SCENE3D?1:e===jG.MORPHING?void 0:0};var ie=Object.freeze(jG);var Uu={DISABLED:0,ENABLED:1,CAST_ONLY:2,RECEIVE_ONLY:3};Uu.NUMBER_OF_SHADOW_MODES=4;Uu.castShadows=function(e){return e===Uu.ENABLED||e===Uu.CAST_ONLY};Uu.receiveShadows=function(e){return e===Uu.ENABLED||e===Uu.RECEIVE_ONLY};Uu.fromCastReceive=function(e,t){return e&&t?Uu.ENABLED:e?Uu.CAST_ONLY:t?Uu.RECEIVE_ONLY:Uu.DISABLED};var Bn=Object.freeze(Uu);function Vr(e){e=e??V.EMPTY_OBJECT,this.geometryInstances=e.geometryInstances,this.appearance=e.appearance,this._appearance=void 0,this._material=void 0,this.depthFailAppearance=e.depthFailAppearance,this._depthFailAppearance=void 0,this._depthFailMaterial=void 0,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this._modelMatrix=new N,this.show=e.show??!0,this._vertexCacheOptimize=e.vertexCacheOptimize??!1,this._interleave=e.interleave??!1,this._releaseGeometryInstances=e.releaseGeometryInstances??!0,this._allowPicking=e.allowPicking??!0,this._asynchronous=e.asynchronous??!0,this._compressVertices=e.compressVertices??!0,this.cull=e.cull??!0,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.rtcCenter=e.rtcCenter,this.shadows=e.shadows??Bn.DISABLED,this._translucent=void 0,this._state=zr.READY,this._geometries=[],this._error=void 0,this._numberOfInstances=0,this._boundingSpheres=[],this._boundingSphereWC=[],this._boundingSphereCV=[],this._boundingSphere2D=[],this._boundingSphereMorph=[],this._perInstanceAttributeCache=new Map,this._instanceIds=[],this._lastPerInstanceAttributeIndex=0,this._va=[],this._attributeLocations=void 0,this._primitiveType=void 0,this._frontFaceRS=void 0,this._backFaceRS=void 0,this._sp=void 0,this._depthFailAppearance=void 0,this._spDepthFail=void 0,this._frontFaceDepthFailRS=void 0,this._backFaceDepthFailRS=void 0,this._pickIds=[],this._colorCommands=[],this._pickCommands=[],this._createBoundingVolumeFunction=e._createBoundingVolumeFunction,this._createRenderStatesFunction=e._createRenderStatesFunction,this._createShaderProgramFunction=e._createShaderProgramFunction,this._createCommandsFunction=e._createCommandsFunction,this._updateAndQueueCommandsFunction=e._updateAndQueueCommandsFunction,this._createPickOffsets=e._createPickOffsets,this._pickOffsets=void 0,this._createGeometryResults=void 0,this._ready=!1,this._batchTable=void 0,this._batchTableAttributeIndices=void 0,this._offsetInstanceExtend=void 0,this._batchTableOffsetAttribute2DIndex=void 0,this._batchTableOffsetsUpdated=!1,this._instanceBoundingSpheres=void 0,this._instanceBoundingSpheresCV=void 0,this._tempBoundingSpheres=void 0,this._recomputeBoundingSpheres=!1,this._batchTableBoundingSpheresUpdated=!1,this._batchTableBoundingSphereAttributeIndices=void 0}Object.defineProperties(Vr.prototype,{vertexCacheOptimize:{get:function(){return this._vertexCacheOptimize}},interleave:{get:function(){return this._interleave}},releaseGeometryInstances:{get:function(){return this._releaseGeometryInstances}},allowPicking:{get:function(){return this._allowPicking}},asynchronous:{get:function(){return this._asynchronous}},compressVertices:{get:function(){return this._compressVertices}},ready:{get:function(){return this._ready}}});function PNe(e){let t=e.length,n=[],i=e[0].attributes,o;for(o in i)if(i.hasOwnProperty(o)&&l(i[o])){let r=i[o],s=!0;for(let a=1;a<t;++a){let c=e[a].attributes[o];if(!l(c)||r.componentDatatype!==c.componentDatatype||r.componentsPerAttribute!==c.componentsPerAttribute||r.normalize!==c.normalize){s=!1;break}}s&&n.push(o)}return n}var RNe=new U,MNe=new d,sre=new se;function are(e){let t=e.length;if(t===1)return e[0];if(t===2)return U.unpack(e,0,RNe);if(t===3)return d.unpack(e,0,MNe);if(t===4)return se.unpack(e,0,sre)}function NNe(e,t){let n=e.geometryInstances,i=Array.isArray(n)?n:[n],o=i.length;if(o===0)return;let r=PNe(i),s=r.length,a=[],c={},u={},f,A=i[0].attributes,g,m,_;for(g=0;g<s;++g)m=r[g],_=A[m],c[m]=g,a.push({functionName:`czm_batchTable_${m}`,componentDatatype:_.componentDatatype,componentsPerAttribute:_.componentsPerAttribute,normalize:_.normalize});r.indexOf("distanceDisplayCondition")!==-1&&(a.push({functionName:"czm_batchTable_boundingSphereCenter3DHigh",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereCenter3DLow",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereCenter2DHigh",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereCenter2DLow",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereRadius",componentDatatype:q.FLOAT,componentsPerAttribute:1}),u.center3DHigh=a.length-5,u.center3DLow=a.length-4,u.center2DHigh=a.length-3,u.center2DLow=a.length-2,u.radius=a.length-1),r.indexOf("offset")!==-1&&(a.push({functionName:"czm_batchTable_offset2D",componentDatatype:q.FLOAT,componentsPerAttribute:3}),f=a.length-1),a.push({functionName:"czm_batchTable_pickColor",componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:4,normalize:!0});let y=a.length,C=new cE(t,a,o);for(g=0;g<o;++g){let E=i[g];A=E.attributes;for(let v=0;v<s;++v){m=r[v],_=A[m];let P=are(_.value),M=c[m];C.setBatchedAttribute(g,M,P)}let I={primitive:E.pickPrimitive??e};l(E.id)&&(I.id=E.id);let b=t.createPickId(I);e._pickIds.push(b);let S=b.color,B=sre;B.x=G.floatToByte(S.red),B.y=G.floatToByte(S.green),B.z=G.floatToByte(S.blue),B.w=G.floatToByte(S.alpha),C.setBatchedAttribute(g,y-1,B)}e._batchTable=C,e._batchTableAttributeIndices=c,e._batchTableBoundingSphereAttributeIndices=u,e._batchTableOffsetAttribute2DIndex=f}function LNe(e){let t;return Array.isArray(e.values)?t=e.values.slice(0):t=new e.values.constructor(e.values),new De({componentDatatype:e.componentDatatype,componentsPerAttribute:e.componentsPerAttribute,normalize:e.normalize,values:t})}function ONe(e){let t=e.attributes,n=new yn;for(let o in t)t.hasOwnProperty(o)&&l(t[o])&&(n[o]=LNe(t[o]));let i;if(l(e.indices)){let o=e.indices;Array.isArray(o)?i=o.slice(0):i=new o.constructor(o)}return new ht({attributes:n,indices:i,primitiveType:e.primitiveType,boundingSphere:le.clone(e.boundingSphere)})}function FNe(e,t){return{geometry:t,attributes:e.attributes,modelMatrix:N.clone(e.modelMatrix),pickPrimitive:e.pickPrimitive,id:e.id}}var QNe=/in\s+vec(?:3|4)\s+(.*)3DHigh;/g;Vr._modifyShaderPosition=function(e,t,n){let i,o="",r="",s="";for(;(i=QNe.exec(t))!==null;){let a=i[1],c=`vec4 czm_compute${a[0].toUpperCase()}${a.substr(1)}()`;c!=="vec4 czm_computePosition()"&&(o+=`${c}; +`),l(e.rtcCenter)?(t=t.replace(/in\s+vec(?:3|4)\s+position3DHigh;/g,""),t=t.replace(/in\s+vec(?:3|4)\s+position3DLow;/g,""),o+=`uniform mat4 u_modifiedModelView; +`,r+=`in vec4 position; +`,s+=`${c} +{ + return u_modifiedModelView * position; +} + +`,t=t.replace(/czm_modelViewRelativeToEye\s+\*\s+/g,""),t=t.replace(/czm_modelViewProjectionRelativeToEye/g,"czm_projection")):n?s+=`${c} +{ + return czm_translateRelativeToEye(${a}3DHigh, ${a}3DLow); +} + +`:(r+=`in vec3 ${a}2DHigh; +in vec3 ${a}2DLow; +`,s+=`${c} +{ + vec4 p; + if (czm_morphTime == 1.0) + { + p = czm_translateRelativeToEye(${a}3DHigh, ${a}3DLow); + } + else if (czm_morphTime == 0.0) + { + p = czm_translateRelativeToEye(${a}2DHigh.zxy, ${a}2DLow.zxy); + } + else + { + p = czm_columbusViewMorph( + czm_translateRelativeToEye(${a}2DHigh.zxy, ${a}2DLow.zxy), + czm_translateRelativeToEye(${a}3DHigh, ${a}3DLow), + czm_morphTime); + } + return p; +} + +`)}return[o,r,t,s].join(` +`)};Vr._appendShowToShader=function(e,t){return l(e._batchTableAttributeIndices.show)?`${He.replaceMain(t,"czm_non_show_main")} +void main() +{ + czm_non_show_main(); + gl_Position *= czm_batchTable_show(batchId); +}`:t};Vr._updateColorAttribute=function(e,t,n){if(!l(e._batchTableAttributeIndices.color)&&!l(e._batchTableAttributeIndices.depthFailColor)||t.search(/in\s+vec4\s+color;/g)===-1)return t;let i=t;return i=i.replace(/in\s+vec4\s+color;/g,""),n?i=i.replace(/(\b)color(\b)/g,"$1czm_batchTable_depthFailColor(batchId)$2"):i=i.replace(/(\b)color(\b)/g,"$1czm_batchTable_color(batchId)$2"),i};function Zoe(e){return`${He.replaceMain(e,"czm_non_pick_main")} +out vec4 v_pickColor; +void main() +{ + czm_non_pick_main(); + v_pickColor = czm_batchTable_pickColor(batchId); +}`}function $oe(e){return`in vec4 v_pickColor; +${e}`}Vr._updatePickColorAttribute=function(e){let t=e.replace(/in\s+vec4\s+pickColor;/g,"");return t=t.replace(/(\b)pickColor(\b)/g,"$1czm_batchTable_pickColor(batchId)$2"),t};Vr._appendOffsetToShader=function(e,t){if(!l(e._batchTableAttributeIndices.offset))return t;let n=`in float batchId; +`;n+="in float applyOffset;";let i=t.replace(/in\s+float\s+batchId;/g,n),o=`vec4 $1 = czm_computePosition(); +`;return o+=` if (czm_sceneMode == czm_sceneMode3D) +`,o+=` { +`,o+=" $1 = $1 + vec4(czm_batchTable_offset(batchId) * applyOffset, 0.0);",o+=` } +`,o+=` else +`,o+=` { +`,o+=" $1 = $1 + vec4(czm_batchTable_offset2D(batchId) * applyOffset, 0.0);",o+=` } +`,i=i.replace(/vec4\s+([A-Za-z0-9_]+)\s+=\s+czm_computePosition\(\);/g,o),i};Vr._appendDistanceDisplayConditionToShader=function(e,t,n){if(!l(e._batchTableAttributeIndices.distanceDisplayCondition))return t;let i=He.replaceMain(t,"czm_non_distanceDisplayCondition_main"),o=`void main() +{ + czm_non_distanceDisplayCondition_main(); + vec2 distanceDisplayCondition = czm_batchTable_distanceDisplayCondition(batchId); + vec3 boundingSphereCenter3DHigh = czm_batchTable_boundingSphereCenter3DHigh(batchId); + vec3 boundingSphereCenter3DLow = czm_batchTable_boundingSphereCenter3DLow(batchId); + float boundingSphereRadius = czm_batchTable_boundingSphereRadius(batchId); +`;return n?o+=` vec4 centerRTE = czm_translateRelativeToEye(boundingSphereCenter3DHigh, boundingSphereCenter3DLow); +`:o+=` vec3 boundingSphereCenter2DHigh = czm_batchTable_boundingSphereCenter2DHigh(batchId); + vec3 boundingSphereCenter2DLow = czm_batchTable_boundingSphereCenter2DLow(batchId); + vec4 centerRTE; + if (czm_morphTime == 1.0) + { + centerRTE = czm_translateRelativeToEye(boundingSphereCenter3DHigh, boundingSphereCenter3DLow); + } + else if (czm_morphTime == 0.0) + { + centerRTE = czm_translateRelativeToEye(boundingSphereCenter2DHigh.zxy, boundingSphereCenter2DLow.zxy); + } + else + { + centerRTE = czm_columbusViewMorph( + czm_translateRelativeToEye(boundingSphereCenter2DHigh.zxy, boundingSphereCenter2DLow.zxy), + czm_translateRelativeToEye(boundingSphereCenter3DHigh, boundingSphereCenter3DLow), + czm_morphTime); + } +`,o+=` float radiusSq = boundingSphereRadius * boundingSphereRadius; + float distanceSq; + if (czm_sceneMode == czm_sceneMode2D) + { + distanceSq = czm_eyeHeight2D.y - radiusSq; + } + else + { + distanceSq = dot(centerRTE.xyz, centerRTE.xyz) - radiusSq; + } + distanceSq = max(distanceSq, 0.0); + float nearSq = distanceDisplayCondition.x * distanceDisplayCondition.x; + float farSq = distanceDisplayCondition.y * distanceDisplayCondition.y; + float show = (distanceSq >= nearSq && distanceSq <= farSq) ? 1.0 : 0.0; + gl_Position *= show; +}`,`${i} +${o}`};function ere(e,t){if(!e.compressVertices)return t;let n=t.search(/in\s+vec3\s+normal;/g)!==-1,i=t.search(/in\s+vec2\s+st;/g)!==-1;if(!n&&!i)return t;let o=t.search(/in\s+vec3\s+tangent;/g)!==-1,r=t.search(/in\s+vec3\s+bitangent;/g)!==-1,s=i&&n?2:1;s+=o||r?1:0;let a=s>1?`vec${s}`:"float",c="compressedAttributes",u=`in ${a} ${c};`,f="",h="";if(i){f+=`vec2 st; +`;let m=s>1?`${c}.x`:c;h+=` st = czm_decompressTextureCoordinates(${m}); +`}n&&o&&r?(f+=`vec3 normal; +vec3 tangent; +vec3 bitangent; +`,h+=` czm_octDecode(${c}.${i?"yz":"xy"}, normal, tangent, bitangent); +`):(n&&(f+=`vec3 normal; +`,h+=` normal = czm_octDecode(${c}${s>1?`.${i?"y":"x"}`:""}); +`),o&&(f+=`vec3 tangent; +`,h+=` tangent = czm_octDecode(${c}.${i&&n?"z":"y"}); +`),r&&(f+=`vec3 bitangent; +`,h+=` bitangent = czm_octDecode(${c}.${i&&n?"z":"y"}); +`));let A=t;A=A.replace(/in\s+vec3\s+normal;/g,""),A=A.replace(/in\s+vec2\s+st;/g,""),A=A.replace(/in\s+vec3\s+tangent;/g,""),A=A.replace(/in\s+vec3\s+bitangent;/g,""),A=He.replaceMain(A,"czm_non_compressed_main");let g=`void main() +{ +${h} czm_non_compressed_main(); +}`;return[u,f,A,g].join(` +`)}function kNe(e){let t=He.replaceMain(e,"czm_non_depth_clamp_main");return t+=`void main() { + czm_non_depth_clamp_main(); + gl_Position = czm_depthClamp(gl_Position);} +`,t}function UNe(e){let t=He.replaceMain(e,"czm_non_depth_clamp_main");return t+=`void main() { + czm_non_depth_clamp_main(); + #if defined(LOG_DEPTH) + czm_writeLogDepth(); + #else + czm_writeDepthClamp(); + #endif +} +`,t}function tre(e,t){let n=e.vertexAttributes}function GNe(e,t){return function(){return e[t]}}var V6=Math.max(Wt.hardwareConcurrency-1,1),YG,zNe=new di("combineGeometry");function VNe(e,t){let n,i,o,r,s=e._instanceIds;if(e._state===zr.READY){n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances];let a=e._numberOfInstances=n.length,c=[],u=[];for(o=0;o<a;++o)i=n[o].geometry,s.push(n[o].id),u.push({moduleName:i._workerName,modulePath:i._workerPath,geometry:i});if(!l(YG))for(YG=new Array(V6),o=0;o<V6;o++)YG[o]=new di("createGeometry");let f;for(u=ZP(u,V6),o=0;o<u.length;o++){let h=0,A=u[o],g=A.length;for(r=0;r<g;++r)f=A[r],i=f.geometry,l(i.constructor.pack)&&(f.offset=h,h+=i.constructor.packedLength??i.packedLength);let m;if(h>0){let _=new Float64Array(h);for(m=[_.buffer],r=0;r<g;++r)f=A[r],i=f.geometry,l(i.constructor.pack)&&(i.constructor.pack(i,_,f.offset),f.geometry=_)}c.push(YG[o].scheduleTask({subTasks:u[o]},m))}e._state=zr.CREATING,Promise.all(c).then(function(h){e._createGeometryResults=h,e._state=zr.CREATED}).catch(function(h){tR(e,t,zr.FAILED,h)})}else if(e._state===zr.CREATED){let a=[];n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances];let c=t.scene3DOnly,u=t.mapProjection,f=zNe.scheduleTask(lE.packCombineGeometryParameters({createGeometryResults:e._createGeometryResults,instances:n,ellipsoid:u.ellipsoid,projection:u,elementIndexUintSupported:t.context.elementIndexUint,scene3DOnly:c,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix,createPickOffsets:e._createPickOffsets},a),a);e._createGeometryResults=void 0,e._state=zr.COMBINING,Promise.resolve(f).then(function(h){let A=lE.unpackCombineGeometryResults(h);e._geometries=A.geometries,e._attributeLocations=A.attributeLocations,e.modelMatrix=N.clone(A.modelMatrix,e.modelMatrix),e._pickOffsets=A.pickOffsets,e._offsetInstanceExtend=A.offsetInstanceExtend,e._instanceBoundingSpheres=A.boundingSpheres,e._instanceBoundingSpheresCV=A.boundingSpheresCV,l(e._geometries)&&e._geometries.length>0?(e._recomputeBoundingSpheres=!0,e._state=zr.COMBINED):tR(e,t,zr.FAILED,void 0)}).catch(function(h){tR(e,t,zr.FAILED,h)})}}function HNe(e,t){let n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances],i=e._numberOfInstances=n.length,o=new Array(i),r=e._instanceIds,s,a,c=0;for(a=0;a<i;a++){s=n[a];let A=s.geometry,g;l(A.attributes)&&l(A.primitiveType)?g=ONe(A):g=A.constructor.createGeometry(A),o[c++]=FNe(s,g),r.push(s.id)}o.length=c;let u=t.scene3DOnly,f=t.mapProjection,h=lE.combineGeometry({instances:o,ellipsoid:f.ellipsoid,projection:f,elementIndexUintSupported:t.context.elementIndexUint,scene3DOnly:u,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix,createPickOffsets:e._createPickOffsets});e._geometries=h.geometries,e._attributeLocations=h.attributeLocations,e.modelMatrix=N.clone(h.modelMatrix,e.modelMatrix),e._pickOffsets=h.pickOffsets,e._offsetInstanceExtend=h.offsetInstanceExtend,e._instanceBoundingSpheres=h.boundingSpheres,e._instanceBoundingSpheresCV=h.boundingSpheresCV,l(e._geometries)&&e._geometries.length>0?(e._recomputeBoundingSpheres=!0,e._state=zr.COMBINED):tR(e,t,zr.FAILED,void 0)}function WNe(e,t){let n=e._batchTableAttributeIndices.offset;if(!e._recomputeBoundingSpheres||!l(n)){e._recomputeBoundingSpheres=!1;return}let i,o=e._offsetInstanceExtend,r=e._instanceBoundingSpheres,s=r.length,a=e._tempBoundingSpheres;if(!l(a)){for(a=new Array(s),i=0;i<s;i++)a[i]=new le;e._tempBoundingSpheres=a}for(i=0;i<s;++i){let _=a[i],y=e._batchTable.getBatchedAttribute(i,n,new d);_=r[i].clone(_),fre(_,y,o[i])}let c=[],u=[],f=[];for(i=0;i<s;++i){let _=a[i];_.center.x-_.radius>0||le.intersectPlane(_,mn.ORIGIN_ZX_PLANE)!==tn.INTERSECTING?c.push(_):(u.push(_),f.push(_))}let h=c[0],A=f[0],g=u[0];for(i=1;i<c.length;i++)h=le.union(h,c[i]);for(i=1;i<f.length;i++)A=le.union(A,f[i]);for(i=1;i<u.length;i++)g=le.union(g,u[i]);let m=[];for(l(h)&&m.push(h),l(A)&&m.push(A),l(g)&&m.push(g),i=0;i<m.length;i++){let _=m[i].clone(e._boundingSpheres[i]);e._boundingSpheres[i]=_,e._boundingSphereCV[i]=le.projectTo2D(_,t.mapProjection,e._boundingSphereCV[i])}Vr._updateBoundingVolumes(e,t,e.modelMatrix,!0),e._recomputeBoundingSpheres=!1}var nre=new ei,cre=new Ae,lre=new d,ure=new le;function jNe(e,t){if(!l(e._batchTableAttributeIndices.distanceDisplayCondition)||e._batchTableBoundingSpheresUpdated)return;let i=e._batchTableBoundingSphereAttributeIndices,o=i.center3DHigh,r=i.center3DLow,s=i.center2DHigh,a=i.center2DLow,c=i.radius,u=t.mapProjection,f=u.ellipsoid,h=e._batchTable,A=e._instanceBoundingSpheres,g=A.length;for(let m=0;m<g;++m){let _=A[m];if(!l(_))continue;let y=e.modelMatrix;l(y)&&(_=le.transform(_,y,ure));let C=_.center,E=_.radius,I=ei.fromCartesian(C,nre);if(h.setBatchedAttribute(m,o,I.high),h.setBatchedAttribute(m,r,I.low),!t.scene3DOnly){let b=f.cartesianToCartographic(C,cre),S=u.project(b,lre);I=ei.fromCartesian(S,nre),h.setBatchedAttribute(m,s,I.high),h.setBatchedAttribute(m,a,I.low)}h.setBatchedAttribute(m,c,E)}e._batchTableBoundingSpheresUpdated=!0}var H6=new d,YNe=new d;function ire(e,t){if(!l(e._batchTableAttributeIndices.offset)||e._batchTableOffsetsUpdated||t.scene3DOnly)return;let i=e._batchTableOffsetAttribute2DIndex,o=t.mapProjection,r=o.ellipsoid,s=e._batchTable,a=e._instanceBoundingSpheres,c=a.length;for(let u=0;u<c;++u){let f=a[u];if(!l(f))continue;let h=s.getBatchedAttribute(u,e._batchTableAttributeIndices.offset);if(d.equals(h,d.ZERO)){s.setBatchedAttribute(u,i,d.ZERO);continue}let A=e.modelMatrix;l(A)&&(f=le.transform(f,A,ure));let g=f.center;g=r.scaleToGeodeticSurface(g,YNe);let m=r.cartesianToCartographic(g,cre),_=o.project(m,lre),y=d.add(h,g,H6);m=r.cartesianToCartographic(y,m);let C=o.project(m,H6),E=d.subtract(C,_,H6),I=E.x;E.x=E.z,E.z=E.y,E.y=I,s.setBatchedAttribute(u,i,E)}e._batchTableOffsetsUpdated=!0}function qNe(e,t){let n=e._attributeLocations,i=e._geometries,o=t.scene3DOnly,r=t.context,s=[],a=i.length;for(let c=0;c<a;++c){let u=i[c];if(s.push(li.fromGeometry({context:r,geometry:u,attributeLocations:n,bufferUsage:Qe.STATIC_DRAW,interleave:e._interleave})),l(e._createBoundingVolumeFunction))e._createBoundingVolumeFunction(t,u);else if(e._boundingSpheres.push(le.clone(u.boundingSphere)),e._boundingSphereWC.push(new le),!o){let f=u.boundingSphereCV.center,h=f.x,A=f.y,g=f.z;f.x=g,f.y=h,f.z=A,e._boundingSphereCV.push(le.clone(u.boundingSphereCV)),e._boundingSphere2D.push(new le),e._boundingSphereMorph.push(new le)}}e._va=s,e._primitiveType=i[0].primitiveType,e.releaseGeometryInstances&&(e.geometryInstances=void 0),e._geometries=void 0,tR(e,t,zr.COMPLETE,void 0)}function KNe(e,t,n,i){let o=n.getRenderState(),r;i?(r=ze(o,!1),r.cull={enabled:!0,face:Mi.BACK},e._frontFaceRS=Ue.fromCache(r),r.cull.face=Mi.FRONT,e._backFaceRS=Ue.fromCache(r)):(e._frontFaceRS=Ue.fromCache(o),e._backFaceRS=e._frontFaceRS),r=ze(o,!1),l(e._depthFailAppearance)&&(r.depthTest.enabled=!1),l(e._depthFailAppearance)&&(o=e._depthFailAppearance.getRenderState(),r=ze(o,!1),r.depthTest.func=Qa.GREATER,i?(r.cull={enabled:!0,face:Mi.BACK},e._frontFaceDepthFailRS=Ue.fromCache(r),r.cull.face=Mi.FRONT,e._backFaceDepthFailRS=Ue.fromCache(r)):(e._frontFaceDepthFailRS=Ue.fromCache(r),e._backFaceDepthFailRS=e._frontFaceRS))}function XNe(e,t,n){let i=t.context,o=e._attributeLocations,r=e._batchTable.getVertexShaderCallback()(n.vertexShaderSource);r=Vr._appendOffsetToShader(e,r),r=Vr._appendShowToShader(e,r),r=Vr._appendDistanceDisplayConditionToShader(e,r,t.scene3DOnly),r=Zoe(r),r=Vr._updateColorAttribute(e,r,!1),r=ere(e,r),r=Vr._modifyShaderPosition(e,r,t.scene3DOnly);let s=n.getFragmentShaderSource();s=$oe(s),e._sp=an.replaceCache({context:i,shaderProgram:e._sp,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:o}),tre(e._sp,o),l(e._depthFailAppearance)&&(r=e._batchTable.getVertexShaderCallback()(e._depthFailAppearance.vertexShaderSource),r=Vr._appendShowToShader(e,r),r=Vr._appendDistanceDisplayConditionToShader(e,r,t.scene3DOnly),r=Zoe(r),r=Vr._updateColorAttribute(e,r,!0),r=ere(e,r),r=Vr._modifyShaderPosition(e,r,t.scene3DOnly),r=kNe(r),s=e._depthFailAppearance.getFragmentShaderSource(),s=$oe(s),s=UNe(s),e._spDepthFail=an.replaceCache({context:i,shaderProgram:e._spDepthFail,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:o}),tre(e._spDepthFail,o))}var eR=new N,ore=new d;function rre(e,t,n,i){let o=l(n)?n._uniforms:void 0,r={},s=t.uniforms;if(l(s))for(let c in s)s.hasOwnProperty(c)&&(r[c]=GNe(s,c));let a=Tt(r,o);return a=e._batchTable.getUniformMapCallback()(a),l(e.rtcCenter)&&(a.u_modifiedModelView=function(){let c=i.context.uniformState.view;return N.multiply(c,e._modelMatrix,eR),N.multiplyByPoint(eR,e.rtcCenter,ore),N.setTranslation(eR,ore,eR),eR}),a}function JNe(e,t,n,i,o,r,s,a){let c=rre(e,t,n,a),u;l(e._depthFailAppearance)&&(u=rre(e,e._depthFailAppearance,e._depthFailAppearance.material,a));let f=i?Be.TRANSLUCENT:Be.OPAQUE,h=o?2:1;h*=l(e._depthFailAppearance)?2:1,r.length=e._va.length*h;let A=r.length,g=0;for(let m=0;m<A;++m){let _;o&&(_=r[m],l(_)||(_=r[m]=new nt({owner:e,primitiveType:e._primitiveType})),_.vertexArray=e._va[g],_.renderState=e._backFaceRS,_.shaderProgram=e._sp,_.uniformMap=c,_.pass=f,++m),_=r[m],l(_)||(_=r[m]=new nt({owner:e,primitiveType:e._primitiveType})),_.vertexArray=e._va[g],_.renderState=e._frontFaceRS,_.shaderProgram=e._sp,_.uniformMap=c,_.pass=f,l(e._depthFailAppearance)&&(o&&(++m,_=r[m],l(_)||(_=r[m]=new nt({owner:e,primitiveType:e._primitiveType})),_.vertexArray=e._va[g],_.renderState=e._backFaceDepthFailRS,_.shaderProgram=e._spDepthFail,_.uniformMap=u,_.pass=f),++m,_=r[m],l(_)||(_=r[m]=new nt({owner:e,primitiveType:e._primitiveType})),_.vertexArray=e._va[g],_.renderState=e._frontFaceDepthFailRS,_.shaderProgram=e._spDepthFail,_.uniformMap=u,_.pass=f),++g}}Vr._updateBoundingVolumes=function(e,t,n,i){let o,r,s;if(i||!N.equals(n,e._modelMatrix))for(N.clone(n,e._modelMatrix),r=e._boundingSpheres.length,o=0;o<r;++o)s=e._boundingSpheres[o],l(s)&&(e._boundingSphereWC[o]=le.transform(s,n,e._boundingSphereWC[o]),t.scene3DOnly||(e._boundingSphere2D[o]=le.clone(e._boundingSphereCV[o],e._boundingSphere2D[o]),e._boundingSphereMorph[o]=le.union(e._boundingSphereWC[o],e._boundingSphereCV[o])));let a=e.appearance.pixelSize;if(l(a))for(r=e._boundingSpheres.length,o=0;o<r;++o){s=e._boundingSpheres[o];let c=e._boundingSphereWC[o],f=t.camera.getPixelSize(s,t.context.drawingBufferWidth,t.context.drawingBufferHeight)*a;c.radius=s.radius+f}};function ZNe(e,t,n,i,o,r,s,a){Vr._updateBoundingVolumes(e,t,o);let c;t.mode===ie.SCENE3D?c=e._boundingSphereWC:t.mode===ie.COLUMBUS_VIEW?c=e._boundingSphereCV:t.mode===ie.SCENE2D&&l(e._boundingSphere2D)?c=e._boundingSphere2D:l(e._boundingSphereMorph)&&(c=e._boundingSphereMorph);let u=t.commandList,f=t.passes;if(f.render||f.pick){let h=e.allowPicking,A=Bn.castShadows(e.shadows),g=Bn.receiveShadows(e.shadows),m=n.length,_=a?2:1;_*=l(e._depthFailAppearance)?2:1;for(let y=0;y<m;++y){let C=Math.floor(y/_),E=n[y];E.modelMatrix=o,E.boundingVolume=c[C],E.cull=r,E.debugShowBoundingVolume=s,E.castShadows=A,E.receiveShadows=g,h?E.pickId="v_pickColor":E.pickId=void 0,u.push(E)}}}Vr.prototype.update=function(e){if(!l(this.geometryInstances)&&this._va.length===0||l(this.geometryInstances)&&Array.isArray(this.geometryInstances)&&this.geometryInstances.length===0||!l(this.appearance)||e.mode!==ie.SCENE3D&&e.scene3DOnly||!e.passes.render&&!e.passes.pick)return;if(l(this._error))throw this._error;if(this._state===zr.FAILED)return;let t=e.context;if(l(this._batchTable)||NNe(this,t),this._batchTable.attributes.length>0){if(Yt.maximumVertexTextureImageUnits===0)throw new ce("Vertex texture fetch support is required to render primitives with per-instance attributes. The maximum number of vertex texture image units must be greater than zero.");this._batchTable.update(e)}if(this._state!==zr.COMPLETE&&this._state!==zr.COMBINED&&(this.asynchronous?VNe(this,e):HNe(this,e)),this._state===zr.COMBINED&&(jNe(this,e),ire(this,e),qNe(this,e)),!this.show||this._state!==zr.COMPLETE)return;this._batchTableOffsetsUpdated||ire(this,e),this._recomputeBoundingSpheres&&WNe(this,e);let n=this.appearance,i=n.material,o=!1,r=!1;this._appearance!==n?(this._appearance=n,this._material=i,o=!0,r=!0):this._material!==i&&(this._material=i,r=!0);let s=this.depthFailAppearance,a=l(s)?s.material:void 0;this._depthFailAppearance!==s?(this._depthFailAppearance=s,this._depthFailMaterial=a,o=!0,r=!0):this._depthFailMaterial!==a&&(this._depthFailMaterial=a,r=!0);let c=this._appearance.isTranslucent();this._translucent!==c&&(this._translucent=c,o=!0),l(this._material)&&this._material.update(t);let u=n.closed&&c;o&&(this._createRenderStatesFunction??KNe)(this,t,n,u),r&&(this._createShaderProgramFunction??XNe)(this,e,n),(o||r)&&(this._createCommandsFunction??JNe)(this,n,i,c,u,this._colorCommands,this._pickCommands,e),(this._updateAndQueueCommandsFunction??ZNe)(this,e,this._colorCommands,this._pickCommands,this.modelMatrix,this.cull,this.debugShowBoundingVolume,u)};var $Ne=new le,eLe=new le;function fre(e,t,n){if(n===hn.TOP){let i=le.clone(e,$Ne),o=le.clone(e,eLe);o.center=d.add(o.center,t,o.center),e=le.union(i,o,e)}else n===hn.ALL&&(e.center=d.add(e.center,t,e.center));return e}function tLe(e,t,n){return function(){let i=e.getBatchedAttribute(t,n),o=e.attributes[n],r=o.componentsPerAttribute,s=q.createTypedArray(o.componentDatatype,r);return l(i.constructor.pack)?i.constructor.pack(i,s,0):s[0]=i,s}}function nLe(e,t,n,i,o){return function(r){let s=are(r);e.setBatchedAttribute(t,n,s),o==="offset"&&(i._recomputeBoundingSpheres=!0,i._batchTableOffsetsUpdated=!1)}}var iLe=new d;function oLe(e,t,n){t.boundingSphere={get:function(){let i=e._instanceBoundingSpheres[n];if(l(i)){i=i.clone();let o=e.modelMatrix,r=t.offset;l(r)&&fre(i,d.fromArray(r.get(),0,iLe),e._offsetInstanceExtend[n]),l(o)&&(i=le.transform(i,o))}return i}},t.boundingSphereCV={get:function(){return e._instanceBoundingSpheresCV[n]}}}function rLe(e,t,n){t.pickId={get:function(){return e._pickIds[n]}}}Vr.prototype.getGeometryInstanceAttributes=function(e){let t=this._perInstanceAttributeCache.get(e);if(l(t))return t;let n=-1,i=this._lastPerInstanceAttributeIndex,o=this._instanceIds,r=o.length;for(let u=0;u<r;++u){let f=(i+u)%r;if(e===o[f]){n=f;break}}if(n===-1)return;let s=this._batchTable,a=this._batchTableAttributeIndices;t={};let c={};for(let u in a)if(a.hasOwnProperty(u)){let f=a[u];c[u]={get:tLe(s,n,f),set:nLe(s,n,f,this,u)}}return oLe(this,c,n),rLe(this,c,n),Object.defineProperties(t,c),this._lastPerInstanceAttributeIndex=n,this._perInstanceAttributeCache.set(e,t),t};Vr.prototype.isDestroyed=function(){return!1};Vr.prototype.destroy=function(){let e,t;this._sp=this._sp&&this._sp.destroy(),this._spDepthFail=this._spDepthFail&&this._spDepthFail.destroy();let n=this._va;for(e=n.length,t=0;t<e;++t)n[t].destroy();this._va=void 0;let i=this._pickIds;for(e=i.length,t=0;t<e;++t)i[t].destroy();return this._pickIds=void 0,this._batchTable=this._batchTable&&this._batchTable.destroy(),this._instanceIds=void 0,this._perInstanceAttributeCache=void 0,this._attributeLocations=void 0,ue(this)};function tR(e,t,n,i){e._error=i,e._state=n,t.afterRender.push(function(){e._ready=e._state===zr.COMPLETE||e._state===zr.FAILED})}var Qn=Vr;function sLe(e){e=e??V.EMPTY_OBJECT,this.componentDatatype=e.componentDatatype,this.componentsPerAttribute=e.componentsPerAttribute,this.normalize=e.normalize??!1,this.value=e.value}var Rc=sLe;var rb=`#ifdef TEXTURE_COORDINATES +#ifdef SPHERICAL +in vec4 v_sphericalExtents; +#else // SPHERICAL +in vec2 v_inversePlaneExtents; +in vec4 v_westPlane; +in vec4 v_southPlane; +#endif // SPHERICAL +in vec3 v_uvMinAndSphericalLongitudeRotation; +in vec3 v_uMaxAndInverseDistance; +in vec3 v_vMaxAndInverseDistance; +#endif // TEXTURE_COORDINATES + +#ifdef PER_INSTANCE_COLOR +in vec4 v_color; +#endif + +#ifdef NORMAL_EC +vec3 getEyeCoordinate3FromWindowCoordinate(vec2 fragCoord, float logDepthOrDepth) { + vec4 eyeCoordinate = czm_windowToEyeCoordinates(fragCoord, logDepthOrDepth); + return eyeCoordinate.xyz / eyeCoordinate.w; +} + +vec3 vectorFromOffset(vec4 eyeCoordinate, vec2 positiveOffset) { + vec2 glFragCoordXY = gl_FragCoord.xy; + // Sample depths at both offset and negative offset + float upOrRightLogDepth = czm_unpackDepth(texture(czm_globeDepthTexture, (glFragCoordXY + positiveOffset) / czm_viewport.zw)); + float downOrLeftLogDepth = czm_unpackDepth(texture(czm_globeDepthTexture, (glFragCoordXY - positiveOffset) / czm_viewport.zw)); + // Explicitly evaluate both paths + // Necessary for multifrustum and for edges of the screen + bvec2 upOrRightInBounds = lessThan(glFragCoordXY + positiveOffset, czm_viewport.zw); + float useUpOrRight = float(upOrRightLogDepth > 0.0 && upOrRightInBounds.x && upOrRightInBounds.y); + float useDownOrLeft = float(useUpOrRight == 0.0); + vec3 upOrRightEC = getEyeCoordinate3FromWindowCoordinate(glFragCoordXY + positiveOffset, upOrRightLogDepth); + vec3 downOrLeftEC = getEyeCoordinate3FromWindowCoordinate(glFragCoordXY - positiveOffset, downOrLeftLogDepth); + return (upOrRightEC - (eyeCoordinate.xyz / eyeCoordinate.w)) * useUpOrRight + ((eyeCoordinate.xyz / eyeCoordinate.w) - downOrLeftEC) * useDownOrLeft; +} +#endif // NORMAL_EC + +void main(void) +{ +#ifdef REQUIRES_EC + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw)); + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); +#endif + +#ifdef REQUIRES_WC + vec4 worldCoordinate4 = czm_inverseView * eyeCoordinate; + vec3 worldCoordinate = worldCoordinate4.xyz / worldCoordinate4.w; +#endif + +#ifdef TEXTURE_COORDINATES + vec2 uv; +#ifdef SPHERICAL + // Treat world coords as a sphere normal for spherical coordinates + vec2 sphericalLatLong = czm_approximateSphericalCoordinates(worldCoordinate); + sphericalLatLong.y += v_uvMinAndSphericalLongitudeRotation.z; + sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi); + uv.x = (sphericalLatLong.y - v_sphericalExtents.y) * v_sphericalExtents.w; + uv.y = (sphericalLatLong.x - v_sphericalExtents.x) * v_sphericalExtents.z; +#else // SPHERICAL + // Unpack planes and transform to eye space + uv.x = czm_planeDistance(v_westPlane, eyeCoordinate.xyz / eyeCoordinate.w) * v_inversePlaneExtents.x; + uv.y = czm_planeDistance(v_southPlane, eyeCoordinate.xyz / eyeCoordinate.w) * v_inversePlaneExtents.y; +#endif // SPHERICAL +#endif // TEXTURE_COORDINATES + +#ifdef PICK +#ifdef CULL_FRAGMENTS + // When classifying translucent geometry, logDepthOrDepth == 0.0 + // indicates a region that should not be classified, possibly due to there + // being opaque pixels there in another buffer. + // Check for logDepthOrDepth != 0.0 to make sure this should be classified. + if (0.0 <= uv.x && uv.x <= 1.0 && 0.0 <= uv.y && uv.y <= 1.0 || logDepthOrDepth != 0.0) { + out_FragColor.a = 1.0; // 0.0 alpha leads to discard from ShaderSource.createPickFragmentShaderSource + czm_writeDepthClamp(); + } +#else // CULL_FRAGMENTS + out_FragColor.a = 1.0; +#endif // CULL_FRAGMENTS +#else // PICK + +#ifdef CULL_FRAGMENTS + // When classifying translucent geometry, logDepthOrDepth == 0.0 + // indicates a region that should not be classified, possibly due to there + // being opaque pixels there in another buffer. + if (uv.x <= 0.0 || 1.0 <= uv.x || uv.y <= 0.0 || 1.0 <= uv.y || logDepthOrDepth == 0.0) { + discard; + } +#endif + +#ifdef NORMAL_EC + // Compute normal by sampling adjacent pixels in 2x2 block in screen space + vec3 downUp = vectorFromOffset(eyeCoordinate, vec2(0.0, 1.0)); + vec3 leftRight = vectorFromOffset(eyeCoordinate, vec2(1.0, 0.0)); + vec3 normalEC = normalize(cross(leftRight, downUp)); +#endif + + +#ifdef PER_INSTANCE_COLOR + + vec4 color = czm_gammaCorrect(v_color); +#ifdef FLAT + out_FragColor = color; +#else // FLAT + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.positionToEyeEC = -eyeCoordinate.xyz; + czm_material material = czm_getDefaultMaterial(materialInput); + material.diffuse = color.rgb; + material.alpha = color.a; + + out_FragColor = czm_phong(normalize(-eyeCoordinate.xyz), material, czm_lightDirectionEC); +#endif // FLAT + + // Premultiply alpha. Required for classification primitives on translucent globe. + out_FragColor.rgb *= out_FragColor.a; + +#else // PER_INSTANCE_COLOR + + // Material support. + // USES_ is distinct from REQUIRES_, because some things are dependencies of each other or + // dependencies for culling but might not actually be used by the material. + + czm_materialInput materialInput; + +#ifdef USES_NORMAL_EC + materialInput.normalEC = normalEC; +#endif + +#ifdef USES_POSITION_TO_EYE_EC + materialInput.positionToEyeEC = -eyeCoordinate.xyz; +#endif + +#ifdef USES_TANGENT_TO_EYE + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(worldCoordinate, normalEC); +#endif + +#ifdef USES_ST + // Remap texture coordinates from computed (approximately aligned with cartographic space) to the desired + // texture coordinate system, which typically forms a tight oriented bounding box around the geometry. + // Shader is provided a set of reference points for remapping. + materialInput.st.x = czm_lineDistance(v_uvMinAndSphericalLongitudeRotation.xy, v_uMaxAndInverseDistance.xy, uv) * v_uMaxAndInverseDistance.z; + materialInput.st.y = czm_lineDistance(v_uvMinAndSphericalLongitudeRotation.xy, v_vMaxAndInverseDistance.xy, uv) * v_vMaxAndInverseDistance.z; +#endif + + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else // FLAT + out_FragColor = czm_phong(normalize(-eyeCoordinate.xyz), material, czm_lightDirectionEC); +#endif // FLAT + + // Premultiply alpha. Required for classification primitives on translucent globe. + out_FragColor.rgb *= out_FragColor.a; + +#endif // PER_INSTANCE_COLOR + czm_writeDepthClamp(); +#endif // PICK +} +`;function Jf(e,t,n){this._projectionExtentDefines={eastMostYhighDefine:"",eastMostYlowDefine:"",westMostYhighDefine:"",westMostYlowDefine:""};let i=new W6;i.requiresTextureCoordinates=e,i.requiresEC=!n.flat;let o=new W6;if(o.requiresTextureCoordinates=e,n instanceof gn)i.requiresNormalEC=!n.flat;else{let r=`${n.material.shaderSource} +${n.fragmentShaderSource}`;i.normalEC=r.indexOf("materialInput.normalEC")!==-1||r.indexOf("czm_getDefaultMaterial")!==-1,i.positionToEyeEC=r.indexOf("materialInput.positionToEyeEC")!==-1,i.tangentToEyeMatrix=r.indexOf("materialInput.tangentToEyeMatrix")!==-1,i.st=r.indexOf("materialInput.st")!==-1}this._colorShaderDependencies=i,this._pickShaderDependencies=o,this._appearance=n,this._extentsCulling=e,this._planarExtents=t}Jf.prototype.createFragmentShader=function(e){let t=this._appearance,n=this._colorShaderDependencies,i=[];!e&&!this._planarExtents&&i.push("SPHERICAL"),n.requiresEC&&i.push("REQUIRES_EC"),n.requiresWC&&i.push("REQUIRES_WC"),n.requiresTextureCoordinates&&i.push("TEXTURE_COORDINATES"),this._extentsCulling&&i.push("CULL_FRAGMENTS"),n.requiresNormalEC&&i.push("NORMAL_EC"),t instanceof gn&&i.push("PER_INSTANCE_COLOR"),n.normalEC&&i.push("USES_NORMAL_EC"),n.positionToEyeEC&&i.push("USES_POSITION_TO_EYE_EC"),n.tangentToEyeMatrix&&i.push("USES_TANGENT_TO_EYE"),n.st&&i.push("USES_ST"),t.flat&&i.push("FLAT");let o="";return t instanceof gn||(o=t.material.shaderSource),new He({defines:i,sources:[o,rb]})};Jf.prototype.createPickFragmentShader=function(e){let t=this._pickShaderDependencies,n=["PICK"];return!e&&!this._planarExtents&&n.push("SPHERICAL"),t.requiresEC&&n.push("REQUIRES_EC"),t.requiresWC&&n.push("REQUIRES_WC"),t.requiresTextureCoordinates&&n.push("TEXTURE_COORDINATES"),this._extentsCulling&&n.push("CULL_FRAGMENTS"),new He({defines:n,sources:[rb],pickColorQualifier:"in"})};Jf.prototype.createVertexShader=function(e,t,n,i){return yre(this._colorShaderDependencies,this._planarExtents,n,e,t,this._appearance,i,this._projectionExtentDefines)};Jf.prototype.createPickVertexShader=function(e,t,n,i){return yre(this._pickShaderDependencies,this._planarExtents,n,e,t,void 0,i,this._projectionExtentDefines)};var dre=new d,hre=new Ae,mre={high:0,low:0};function yre(e,t,n,i,o,r,s,a){let c=i.slice();if(a.eastMostYhighDefine===""){let u=hre;u.longitude=D.PI,u.latitude=0,u.height=0;let f=s.project(u,dre),h=ei.encode(f.x,mre);a.eastMostYhighDefine=`EAST_MOST_X_HIGH ${h.high.toFixed(`${h.high}`.length+1)}`,a.eastMostYlowDefine=`EAST_MOST_X_LOW ${h.low.toFixed(`${h.low}`.length+1)}`;let A=hre;A.longitude=-D.PI,A.latitude=0,A.height=0;let g=s.project(A,dre);h=ei.encode(g.x,mre),a.westMostYhighDefine=`WEST_MOST_X_HIGH ${h.high.toFixed(`${h.high}`.length+1)}`,a.westMostYlowDefine=`WEST_MOST_X_LOW ${h.low.toFixed(`${h.low}`.length+1)}`}return n&&(c.push(a.eastMostYhighDefine),c.push(a.eastMostYlowDefine),c.push(a.westMostYhighDefine),c.push(a.westMostYlowDefine)),l(r)&&r instanceof gn&&c.push("PER_INSTANCE_COLOR"),e.requiresTextureCoordinates&&(c.push("TEXTURE_COORDINATES"),t||n||c.push("SPHERICAL"),n&&c.push("COLUMBUS_VIEW_2D")),new He({defines:c,sources:[o]})}function W6(){this._requiresEC=!1,this._requiresWC=!1,this._requiresNormalEC=!1,this._requiresTextureCoordinates=!1,this._usesNormalEC=!1,this._usesPositionToEyeEC=!1,this._usesTangentToEyeMat=!1,this._usesSt=!1}Object.defineProperties(W6.prototype,{requiresEC:{get:function(){return this._requiresEC},set:function(e){this._requiresEC=e||this._requiresEC}},requiresWC:{get:function(){return this._requiresWC},set:function(e){this._requiresWC=e||this._requiresWC,this.requiresEC=this._requiresWC}},requiresNormalEC:{get:function(){return this._requiresNormalEC},set:function(e){this._requiresNormalEC=e||this._requiresNormalEC,this.requiresEC=this._requiresNormalEC}},requiresTextureCoordinates:{get:function(){return this._requiresTextureCoordinates},set:function(e){this._requiresTextureCoordinates=e||this._requiresTextureCoordinates,this.requiresWC=this._requiresTextureCoordinates}},normalEC:{set:function(e){this.requiresNormalEC=e,this._usesNormalEC=e},get:function(){return this._usesNormalEC}},tangentToEyeMatrix:{set:function(e){this.requiresWC=e,this.requiresNormalEC=e,this._usesTangentToEyeMat=e},get:function(){return this._usesTangentToEyeMat}},positionToEyeEC:{set:function(e){this.requiresEC=e,this._usesPositionToEyeEC=e},get:function(){return this._usesPositionToEyeEC}},st:{set:function(e){this.requiresTextureCoordinates=e,this._usesSt=e},get:function(){return this._usesSt}}});function Are(e,t,n){return Math.abs((t.y-e.y)*n.x-(t.x-e.x)*n.y+t.x*e.y-t.y*e.x)/U.distance(t,e)}var aLe=[new U,new U,new U,new U];function Cre(e,t){let n=aLe,i=U.unpack(t,0,n[0]),o=U.unpack(t,2,n[1]),r=U.unpack(t,4,n[2]);e.uMaxVmax=new Rc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:[o.x,o.y,r.x,r.y]});let s=1/Are(i,o,r),a=1/Are(i,r,o);e.uvMinAndExtents=new Rc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:[i.x,i.y,s,a]})}var Ere=new Ae,Ire=new d,cLe=new d,lLe=new d,qG={high:0,low:0};function xre(e,t,n){let i=Ere;i.height=0,i.longitude=e.west,i.latitude=e.south;let o=t.project(i,Ire);i.latitude=e.north;let r=t.project(i,cLe);i.longitude=e.east,i.latitude=e.south;let s=t.project(i,lLe),a=[0,0,0,0],c=[0,0,0,0],u=ei.encode(o.x,qG);a[0]=u.high,c[0]=u.low,u=ei.encode(o.y,qG),a[1]=u.high,c[1]=u.low,u=ei.encode(r.y,qG),a[2]=u.high,c[2]=u.low,u=ei.encode(s.x,qG),a[3]=u.high,c[3]=u.low,n.planes2D_HIGH=new Rc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:a}),n.planes2D_LOW=new Rc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:c})}var uLe=new N,fLe=new N,pre=new d,dLe=new Ae,hLe=[new Ae,new Ae,new Ae,new Ae,new Ae,new Ae,new Ae,new Ae];function mLe(e,t,n,i,o,r){let s=ae.center(e,dLe);s.height=n;let a=Ae.toCartesian(s,t,pre),c=kt.eastNorthUpToFixedFrame(a,t,uLe),u=N.inverse(c,fLe),f=e.west,h=e.east,A=e.north,g=e.south,m=hLe;m[0].latitude=g,m[0].longitude=f,m[1].latitude=A,m[1].longitude=f,m[2].latitude=A,m[2].longitude=h,m[3].latitude=g,m[3].longitude=h;let _=(f+h)*.5,y=(A+g)*.5;m[4].latitude=g,m[4].longitude=_,m[5].latitude=A,m[5].longitude=_,m[6].latitude=y,m[6].longitude=f,m[7].latitude=y,m[7].longitude=h;let C=Number.POSITIVE_INFINITY,E=Number.NEGATIVE_INFINITY,I=Number.POSITIVE_INFINITY,b=Number.NEGATIVE_INFINITY;for(let P=0;P<8;P++){m[P].height=n;let M=Ae.toCartesian(m[P],t,pre);N.multiplyByPoint(u,M,M),M.z=0,C=Math.min(C,M.x),E=Math.max(E,M.x),I=Math.min(I,M.y),b=Math.max(b,M.y)}let S=i;S.x=C,S.y=I,S.z=0,N.multiplyByPoint(c,S,S);let B=o;B.x=E,B.y=I,B.z=0,N.multiplyByPoint(c,B,B),d.subtract(B,S,o);let v=r;v.x=C,v.y=b,v.z=0,N.multiplyByPoint(c,v,v),d.subtract(v,S,r)}var ALe=new d,pLe=new d,gLe=new ei;Jf.getPlanarTextureCoordinateAttributes=function(e,t,n,i,o){let r=Ire,s=ALe,a=pLe;mLe(e,n,o??0,r,s,a);let c={};Cre(c,t);let u=ei.fromCartesian(r,gLe);return c.southWest_HIGH=new Rc({componentDatatype:q.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(u.high,[0,0,0])}),c.southWest_LOW=new Rc({componentDatatype:q.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(u.low,[0,0,0])}),c.eastward=new Rc({componentDatatype:q.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(s,[0,0,0])}),c.northward=new Rc({componentDatatype:q.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(a,[0,0,0])}),xre(e,i,c),c};var _Le=new d;function gre(e,t,n,i){let o=Ere;o.latitude=e,o.longitude=t,o.height=0;let r=Ae.toCartesian(o,n,_Le),s=Math.sqrt(r.x*r.x+r.y*r.y),a=D.fastApproximateAtan2(s,r.z),c=D.fastApproximateAtan2(r.x,r.y);return i.x=a,i.y=c,i}var _re=new U;Jf.getSphericalExtentGeometryInstanceAttributes=function(e,t,n,i){let o=gre(e.south,e.west,n,_re),r=o.x,s=o.y,a=gre(e.north,e.east,n,_re),c=a.x,u=a.y,f=0;s>u&&(f=D.PI-s,s=-D.PI,u+=f),r-=D.EPSILON5,s-=D.EPSILON5,c+=D.EPSILON5,u+=D.EPSILON5;let h=1/(u-s),A=1/(c-r),g={sphericalExtents:new Rc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:[r,s,A,h]}),longitudeRotation:new Rc({componentDatatype:q.FLOAT,componentsPerAttribute:1,normalize:!1,value:[f]})};return Cre(g,t),xre(e,i,g),g};Jf.hasAttributesForTextureCoordinatePlanes=function(e){return l(e.southWest_HIGH)&&l(e.southWest_LOW)&&l(e.northward)&&l(e.eastward)&&l(e.planes2D_HIGH)&&l(e.planes2D_LOW)&&l(e.uMaxVmax)&&l(e.uvMinAndExtents)};Jf.hasAttributesForSphericalExtents=function(e){return l(e.sphericalExtents)&&l(e.longitudeRotation)&&l(e.planes2D_HIGH)&&l(e.planes2D_LOW)&&l(e.uMaxVmax)&&l(e.uvMinAndExtents)};function yLe(e){return Math.max(e.width,e.height)>Jf.MAX_WIDTH_FOR_PLANAR_EXTENTS}Jf.shouldUseSphericalCoordinates=function(e){return yLe(e)};Jf.MAX_WIDTH_FOR_PLANAR_EXTENTS=D.toRadians(1);var Gu=Jf;var CLe={NEVER:ee.NEVER,LESS:ee.LESS,EQUAL:ee.EQUAL,LESS_OR_EQUAL:ee.LEQUAL,GREATER:ee.GREATER,NOT_EQUAL:ee.NOTEQUAL,GREATER_OR_EQUAL:ee.GEQUAL,ALWAYS:ee.ALWAYS},Zn=Object.freeze(CLe);var ELe={ZERO:ee.ZERO,KEEP:ee.KEEP,REPLACE:ee.REPLACE,INCREMENT:ee.INCR,DECREMENT:ee.DECR,INVERT:ee.INVERT,INCREMENT_WRAP:ee.INCR_WRAP,DECREMENT_WRAP:ee.DECR_WRAP},_t=Object.freeze(ELe);var KG={CESIUM_3D_TILE_MASK:128,SKIP_LOD_MASK:112,SKIP_LOD_BIT_SHIFT:4,CLASSIFICATION_MASK:15};KG.setCesium3DTileBit=function(){return{enabled:!0,frontFunction:Zn.ALWAYS,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.REPLACE},backFunction:Zn.ALWAYS,backOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.REPLACE},reference:KG.CESIUM_3D_TILE_MASK,mask:KG.CESIUM_3D_TILE_MASK}};var Kt=Object.freeze(KG);function uE(e){e=e??V.EMPTY_OBJECT;let t=e.geometryInstances;this.geometryInstances=t,this.show=e.show??!0,this.classificationType=e.classificationType??Jn.BOTH,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowShadowVolume=e.debugShowShadowVolume??!1,this._debugShowShadowVolume=!1,this._extruded=e._extruded??!1,this._uniformMap=e._uniformMap,this._sp=void 0,this._spStencil=void 0,this._spPick=void 0,this._spColor=void 0,this._spPick2D=void 0,this._spColor2D=void 0,this._rsStencilDepthPass=void 0,this._rsStencilDepthPass3DTiles=void 0,this._rsColorPass=void 0,this._rsPickPass=void 0,this._commandsIgnoreShow=[],this._ready=!1,this._primitive=void 0,this._pickPrimitive=e._pickPrimitive,this._hasSphericalExtentsAttribute=!1,this._hasPlanarExtentsAttributes=!1,this._hasPerColorAttribute=!1,this.appearance=e.appearance,this._createBoundingVolumeFunction=e._createBoundingVolumeFunction,this._updateAndQueueCommandsFunction=e._updateAndQueueCommandsFunction,this._usePickOffsets=!1,this._primitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:e.vertexCacheOptimize??!1,interleave:e.interleave??!1,releaseGeometryInstances:e.releaseGeometryInstances??!0,allowPicking:e.allowPicking??!0,asynchronous:e.asynchronous??!0,compressVertices:e.compressVertices??!0,_createBoundingVolumeFunction:void 0,_createRenderStatesFunction:void 0,_createShaderProgramFunction:void 0,_createCommandsFunction:void 0,_updateAndQueueCommandsFunction:void 0,_createPickOffsets:!0}}Object.defineProperties(uE.prototype,{vertexCacheOptimize:{get:function(){return this._primitiveOptions.vertexCacheOptimize}},interleave:{get:function(){return this._primitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._primitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._primitiveOptions.allowPicking}},asynchronous:{get:function(){return this._primitiveOptions.asynchronous}},compressVertices:{get:function(){return this._primitiveOptions.compressVertices}},ready:{get:function(){return this._ready}},_needs2DShader:{get:function(){return this._hasPlanarExtentsAttributes||this._hasSphericalExtentsAttribute}}});uE.isSupported=function(e){return e.context.stencilBuffer};function sb(e,t){let n=t?Zn.EQUAL:Zn.ALWAYS;return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:e,frontFunction:n,frontOperation:{fail:_t.KEEP,zFail:_t.DECREMENT_WRAP,zPass:_t.KEEP},backFunction:n,backOperation:{fail:_t.KEEP,zFail:_t.INCREMENT_WRAP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Qa.LESS_OR_EQUAL},depthMask:!1}}function Y6(e){return{stencilTest:{enabled:e,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:pn.PRE_MULTIPLIED_ALPHA_BLEND}}var ILe={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1};function xLe(e,t,n,i){if(l(e._rsStencilDepthPass))return;let o=!e.debugShowShadowVolume;e._rsStencilDepthPass=Ue.fromCache(sb(o,!1)),e._rsStencilDepthPass3DTiles=Ue.fromCache(sb(o,!0)),e._rsColorPass=Ue.fromCache(Y6(o,!1)),e._rsPickPass=Ue.fromCache(ILe)}function bLe(e,t){if(!e.compressVertices)return t;if(t.search(/in\s+vec3\s+extrudeDirection;/g)!==-1){let n="compressedAttributes",i=`in vec2 ${n};`,o=`vec3 extrudeDirection; +`,r=` extrudeDirection = czm_octDecode(${n}, 65535.0); +`,s=t;s=s.replace(/in\s+vec3\s+extrudeDirection;/g,""),s=He.replaceMain(s,"czm_non_compressed_main");let a=`void main() +{ +${r} czm_non_compressed_main(); +}`;return[i,o,s,a].join(` +`)}}function TLe(e,t){let n=t.context,i=e._primitive,o=JP;o=e._primitive._batchTable.getVertexShaderCallback()(o),o=Qn._appendDistanceDisplayConditionToShader(i,o),o=Qn._modifyShaderPosition(e,o,t.scene3DOnly),o=Qn._updateColorAttribute(i,o);let r=e._hasPlanarExtentsAttributes,s=r||e._hasSphericalExtentsAttribute;e._extruded&&(o=bLe(i,o));let a=e._extruded?"EXTRUDED_GEOMETRY":"",c=new He({defines:[a],sources:[o]}),u=new He({sources:[B_]}),f=e._primitive._attributeLocations,h=new Gu(s,r,e.appearance);if(e._spStencil=an.replaceCache({context:n,shaderProgram:e._spStencil,vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:f}),e._primitive.allowPicking){let m=He.createPickVertexShaderSource(o);m=Qn._appendShowToShader(i,m),m=Qn._updatePickColorAttribute(m);let _=h.createPickFragmentShader(!1),y=h.createPickVertexShader([a],m,!1,t.mapProjection);if(e._spPick=an.replaceCache({context:n,shaderProgram:e._spPick,vertexShaderSource:y,fragmentShaderSource:_,attributeLocations:f}),s){let C=n.shaderCache.getDerivedShaderProgram(e._spPick,"2dPick");if(!l(C)){let E=h.createPickFragmentShader(!0),I=h.createPickVertexShader([a],m,!0,t.mapProjection);C=n.shaderCache.createDerivedShaderProgram(e._spPick,"2dPick",{vertexShaderSource:I,fragmentShaderSource:E,attributeLocations:f})}e._spPick2D=C}}else e._spPick=an.fromCache({context:n,vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:f});o=Qn._appendShowToShader(i,o),c=new He({defines:[a],sources:[o]}),e._sp=an.replaceCache({context:n,shaderProgram:e._sp,vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:f});let A=h.createFragmentShader(!1),g=h.createVertexShader([a],o,!1,t.mapProjection);if(e._spColor=an.replaceCache({context:n,shaderProgram:e._spColor,vertexShaderSource:g,fragmentShaderSource:A,attributeLocations:f}),s){let m=n.shaderCache.getDerivedShaderProgram(e._spColor,"2dColor");if(!l(m)){let _=h.createFragmentShader(!0),y=h.createVertexShader([a],o,!0,t.mapProjection);m=n.shaderCache.createDerivedShaderProgram(e._spColor,"2dColor",{vertexShaderSource:y,fragmentShaderSource:_,attributeLocations:f})}e._spColor2D=m}}function SLe(e,t){let n=e._primitive,i=n._va.length*2;t.length=i;let o,r,s,a=0,c=n._batchTable.getUniformMapCallback()(e._uniformMap),u=e._needs2DShader;for(o=0;o<i;o+=2){let g=n._va[a++];r=t[o],l(r)||(r=t[o]=new nt({owner:e,primitiveType:n._primitiveType})),r.vertexArray=g,r.renderState=e._rsStencilDepthPass,r.shaderProgram=e._sp,r.uniformMap=c,r.pass=Be.TERRAIN_CLASSIFICATION,s=nt.shallowClone(r,r.derivedCommands.tileset),s.renderState=e._rsStencilDepthPass3DTiles,s.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,r.derivedCommands.tileset=s,r=t[o+1],l(r)||(r=t[o+1]=new nt({owner:e,primitiveType:n._primitiveType})),r.vertexArray=g,r.renderState=e._rsColorPass,r.shaderProgram=e._spColor,r.pass=Be.TERRAIN_CLASSIFICATION;let _=e.appearance.material;if(l(_)&&(c=Tt(c,_._uniforms)),r.uniformMap=c,s=nt.shallowClone(r,r.derivedCommands.tileset),s.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,r.derivedCommands.tileset=s,u){let y=nt.shallowClone(r,r.derivedCommands.appearance2D);y.shaderProgram=e._spColor2D,r.derivedCommands.appearance2D=y,y=nt.shallowClone(s,s.derivedCommands.appearance2D),y.shaderProgram=e._spColor2D,s.derivedCommands.appearance2D=y}}let f=e._commandsIgnoreShow,h=e._spStencil,A=0;i=f.length=i/2;for(let g=0;g<i;++g){let m=f[g]=nt.shallowClone(t[A],f[g]);m.shaderProgram=h,m.pass=Be.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,A+=2}}function wLe(e,t){let n=e._usePickOffsets,i=e._primitive,o=i._va.length*2,r,s=0,a;n&&(r=i._pickOffsets,o=r.length*2),t.length=o;let c,u,f,h=0,A=i._batchTable.getUniformMapCallback()(e._uniformMap),g=e._needs2DShader;for(c=0;c<o;c+=2){let m=i._va[h++];if(n&&(a=r[s++],m=i._va[a.index]),u=t[c],l(u)||(u=t[c]=new nt({owner:e,primitiveType:i._primitiveType,pickOnly:!0})),u.vertexArray=m,u.renderState=e._rsStencilDepthPass,u.shaderProgram=e._sp,u.uniformMap=A,u.pass=Be.TERRAIN_CLASSIFICATION,n&&(u.offset=a.offset,u.count=a.count),f=nt.shallowClone(u,u.derivedCommands.tileset),f.renderState=e._rsStencilDepthPass3DTiles,f.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,u.derivedCommands.tileset=f,u=t[c+1],l(u)||(u=t[c+1]=new nt({owner:e,primitiveType:i._primitiveType,pickOnly:!0})),u.vertexArray=m,u.renderState=e._rsPickPass,u.shaderProgram=e._spPick,u.uniformMap=A,u.pass=Be.TERRAIN_CLASSIFICATION,n&&(u.offset=a.offset,u.count=a.count),f=nt.shallowClone(u,u.derivedCommands.tileset),f.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,u.derivedCommands.tileset=f,g){let _=nt.shallowClone(u,u.derivedCommands.pick2D);_.shaderProgram=e._spPick2D,u.derivedCommands.pick2D=_,_=nt.shallowClone(f,f.derivedCommands.pick2D),_.shaderProgram=e._spPick2D,f.derivedCommands.pick2D=_}}}function BLe(e,t,n,i,o,r,s){SLe(e,r),wLe(e,s)}function bre(e,t){return Math.floor(e%t/2)}function j6(e,t,n,i,o,r){e.modelMatrix=n,e.boundingVolume=o,e.cull=i,e.debugShowBoundingVolume=r,t.commandList.push(e)}function Tre(e,t,n,i,o){e.modelMatrix=n,e.boundingVolume=o,e.cull=i,t.commandList.push(e)}function DLe(e,t,n,i,o,r,s,a){let c=e._primitive;Qn._updateBoundingVolumes(c,t,o);let u;t.mode===ie.SCENE3D?u=c._boundingSphereWC:t.mode===ie.COLUMBUS_VIEW?u=c._boundingSphereCV:t.mode===ie.SCENE2D&&l(c._boundingSphere2D)?u=c._boundingSphere2D:l(c._boundingSphereMorph)&&(u=c._boundingSphereMorph);let f=e.classificationType,h=f!==Jn.CESIUM_3D_TILE,A=f!==Jn.TERRAIN,g=t.passes,m,_,y;if(g.render){let C=n.length;for(m=0;m<C;++m)_=u[bre(m,C)],h&&(y=n[m],j6(y,t,o,r,_,s)),A&&(y=n[m].derivedCommands.tileset,j6(y,t,o,r,_,s));if(t.invertClassification){let E=e._commandsIgnoreShow,I=E.length;for(m=0;m<I;++m)_=u[m],y=E[m],j6(y,t,o,r,_,s)}}if(g.pick){let C=i.length,E=c._pickOffsets;for(m=0;m<C;++m){let I=E[bre(m,C)];_=u[I.index],h&&(y=i[m],Tre(y,t,o,r,_)),A&&(y=i[m].derivedCommands.tileset,Tre(y,t,o,r,_))}}}uE.prototype.update=function(e){if(!l(this._primitive)&&!l(this.geometryInstances))return;let t=this.appearance;l(t)&&l(t.material)&&t.material.update(e.context);let n=this,i=this._primitiveOptions;if(!l(this._primitive)){let o=Array.isArray(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],r=o.length,s,a,c,u=!1,f=!0,h,A=!1,g=!1;for(r>0&&(c=o[0].attributes,A=Gu.hasAttributesForSphericalExtents(c),g=Gu.hasAttributesForTextureCoordinatePlanes(c),h=c.color),s=0;s<r;s++){a=o[s];let _=a.attributes.color;l(_)&&(u=!0),f=f&&l(_)&&$t.equals(h,_)}if(!f&&!A&&!g)throw new me("All GeometryInstances must have the same color attribute except via GroundPrimitives");u&&!l(t)&&(t=new gn({flat:!0}),this.appearance=t),this._usePickOffsets=!A&&!g,this._hasSphericalExtentsAttribute=A,this._hasPlanarExtentsAttributes=g,this._hasPerColorAttribute=u;let m=new Array(r);for(s=0;s<r;++s)a=o[s],m[s]=new Pt({geometry:a.geometry,attributes:a.attributes,modelMatrix:a.modelMatrix,id:a.id,pickPrimitive:this._pickPrimitive??n});i.appearance=t,i.geometryInstances=m,l(this._createBoundingVolumeFunction)&&(i._createBoundingVolumeFunction=function(_,y){n._createBoundingVolumeFunction(_,y)}),i._createRenderStatesFunction=function(_,y,C,E){xLe(n,y)},i._createShaderProgramFunction=function(_,y,C){TLe(n,y)},i._createCommandsFunction=function(_,y,C,E,I,b,S){BLe(n,void 0,void 0,!0,!1,b,S)},l(this._updateAndQueueCommandsFunction)?i._updateAndQueueCommandsFunction=function(_,y,C,E,I,b,S,B){n._updateAndQueueCommandsFunction(_,y,C,E,I,b,S,B)}:i._updateAndQueueCommandsFunction=function(_,y,C,E,I,b,S,B){DLe(n,y,C,E,I,b,S,B)},this._primitive=new Qn(i)}this.debugShowShadowVolume&&!this._debugShowShadowVolume&&this._ready?(this._debugShowShadowVolume=!0,this._rsStencilDepthPass=Ue.fromCache(sb(!1,!1)),this._rsStencilDepthPass3DTiles=Ue.fromCache(sb(!1,!0)),this._rsColorPass=Ue.fromCache(Y6(!1))):!this.debugShowShadowVolume&&this._debugShowShadowVolume&&(this._debugShowShadowVolume=!1,this._rsStencilDepthPass=Ue.fromCache(sb(!0,!1)),this._rsStencilDepthPass3DTiles=Ue.fromCache(sb(!0,!0)),this._rsColorPass=Ue.fromCache(Y6(!0))),this._primitive.appearance!==t&&(this._primitive.appearance=t),this._primitive.show=this.show,this._primitive.debugShowBoundingVolume=this.debugShowBoundingVolume,this._primitive.update(e),e.afterRender.push(()=>{l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};uE.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};uE.prototype.isDestroyed=function(){return!1};uE.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._spColor=this._spColor&&this._spColor.destroy(),this._spPick2D=void 0,this._spColor2D=void 0,ue(this)};var ab=uE;var vLe={u_globeMinimumAltitude:function(){return 55e3}};function tu(e){e=e??V.EMPTY_OBJECT;let t=e.appearance,n=e.geometryInstances;if(!l(t)&&l(n)){let o=Array.isArray(n)?n:[n],r=o.length;for(let s=0;s<r;s++){let a=o[s].attributes;if(l(a)&&l(a.color)){t=new gn({flat:!0});break}}}this.appearance=t,this.geometryInstances=e.geometryInstances,this.show=e.show??!0,this.classificationType=e.classificationType??Jn.BOTH,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowShadowVolume=e.debugShowShadowVolume??!1,this._boundingVolumes=[],this._boundingVolumes2D=[],this._ready=!1,this._primitive=void 0,this._maxHeight=void 0,this._minHeight=void 0,this._maxTerrainHeight=Ti._defaultMaxTerrainHeight,this._minTerrainHeight=Ti._defaultMinTerrainHeight,this._boundingSpheresKeys=[],this._boundingSpheres=[],this._useFragmentCulling=!1,this._zIndex=void 0;let i=this;this._classificationPrimitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:e.vertexCacheOptimize??!1,interleave:e.interleave??!1,releaseGeometryInstances:e.releaseGeometryInstances??!0,allowPicking:e.allowPicking??!0,asynchronous:e.asynchronous??!0,compressVertices:e.compressVertices??!0,_createBoundingVolumeFunction:void 0,_updateAndQueueCommandsFunction:void 0,_pickPrimitive:i,_extruded:!0,_uniformMap:vLe}}Object.defineProperties(tu.prototype,{vertexCacheOptimize:{get:function(){return this._classificationPrimitiveOptions.vertexCacheOptimize}},interleave:{get:function(){return this._classificationPrimitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._classificationPrimitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._classificationPrimitiveOptions.allowPicking}},asynchronous:{get:function(){return this._classificationPrimitiveOptions.asynchronous}},compressVertices:{get:function(){return this._classificationPrimitiveOptions.compressVertices}},ready:{get:function(){return this._ready}}});tu.isSupported=ab.isSupported;function Sre(e){return function(t,n){let i=n.maximumRadius,o=i/Math.cos(t*.5)-i;return e._maxHeight+o}}function wre(e){return function(t,n){return e._minHeight}}var PLe=new d,RLe=new d,MLe=new d,NLe=new Ae,LLe=new ae;function XG(e,t){let n=e.mapProjection.ellipsoid;if(!l(t.attributes)||!l(t.attributes.position3DHigh))return l(t.rectangle)?t.rectangle:void 0;let i=t.attributes.position3DHigh.values,o=t.attributes.position3DLow.values,r=i.length,s=Number.POSITIVE_INFINITY,a=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,u=Number.NEGATIVE_INFINITY;for(let h=0;h<r;h+=3){let A=d.unpack(i,h,PLe),g=d.unpack(o,h,RLe),m=d.add(A,g,MLe),_=n.cartesianToCartographic(m,NLe),y=_.latitude,C=_.longitude;s=Math.min(s,y),a=Math.min(a,C),c=Math.max(c,y),u=Math.max(u,C)}let f=LLe;return f.north=c,f.south=s,f.east=u,f.west=a,f}function OLe(e,t,n){let i=Ti.getMinimumMaximumHeights(t,n);e._minTerrainHeight=i.minimumTerrainHeight,e._maxTerrainHeight=i.maximumTerrainHeight}function FLe(e,t,n){let i=t.mapProjection.ellipsoid,o=XG(t,n),r=Fn.fromRectangle(o,e._minHeight,e._maxHeight,i);if(e._boundingVolumes.push(r),!t.scene3DOnly){let s=t.mapProjection,a=le.fromRectangleWithHeights2D(o,s,e._maxHeight,e._minHeight);d.fromElements(a.center.z,a.center.x,a.center.y,a.center),e._boundingVolumes2D.push(a)}}function q6(e,t){return Math.floor(e%t/2)}function K6(e,t,n,i,o,r,s){let a=e._primitive;n.mode!==ie.SCENE3D&&t.shaderProgram===a._spColor&&a._needs2DShader&&(t=t.derivedCommands.appearance2D),t.owner=e,t.modelMatrix=i,t.boundingVolume=r,t.cull=o,t.debugShowBoundingVolume=s,n.commandList.push(t)}function Bre(e,t,n,i,o,r){let s=e._primitive;n.mode!==ie.SCENE3D&&t.shaderProgram===s._spPick&&s._needs2DShader&&(t=t.derivedCommands.pick2D),t.owner=e,t.modelMatrix=i,t.boundingVolume=r,t.cull=o,n.commandList.push(t)}function QLe(e,t,n,i,o,r,s,a){let c;t.mode===ie.SCENE3D?c=e._boundingVolumes:c=e._boundingVolumes2D;let u=e.classificationType,f=u!==Jn.CESIUM_3D_TILE,h=u!==Jn.TERRAIN,A=t.passes,g=e._primitive,m,_,y;if(A.render){let C=n.length;for(m=0;m<C;++m)_=c[q6(m,C)],f&&(y=n[m],K6(e,y,t,o,r,_,s)),h&&(y=n[m].derivedCommands.tileset,K6(e,y,t,o,r,_,s));if(t.invertClassification){let E=g._commandsIgnoreShow,I=E.length;for(m=0;m<I;++m)_=c[m],y=E[m],K6(e,y,t,o,r,_,s)}}if(A.pick){let C=i.length,E;for(e._useFragmentCulling||(E=g._primitive._pickOffsets),m=0;m<C;++m){if(_=c[q6(m,C)],!e._useFragmentCulling){let I=E[q6(m,C)];_=c[I.index]}f&&(y=i[m],Bre(e,y,t,o,r,_)),h&&(y=i[m].derivedCommands.tileset,Bre(e,y,t,o,r,_))}}}tu.initializeTerrainHeights=function(){return Ti.initialize()};tu.prototype.update=function(e){if(!l(this._primitive)&&!l(this.geometryInstances))return;if(!Ti.initialized){tu.initializeTerrainHeights();return}let t=this,n=this._classificationPrimitiveOptions;if(!l(this._primitive)){let i=e.mapProjection.ellipsoid,o,r,s,a=Array.isArray(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],c=a.length,u=new Array(c),f,h;for(f=0;f<c;++f){o=a[f],r=o.geometry;let _=XG(e,r);l(h)?l(_)&&ae.union(h,_,h):h=ae.clone(_);let y=o.id;if(l(y)&&l(_)){let C=Ti.getBoundingSphere(_,i);this._boundingSpheresKeys.push(y),this._boundingSpheres.push(C)}s=r.constructor,!l(s)||l(s.createShadowVolume)}OLe(this,h,i);let A=e.verticalExaggeration,g=e.verticalExaggerationRelativeHeight;this._minHeight=Ur.getHeight(this._minTerrainHeight,A,g),this._maxHeight=Ur.getHeight(this._maxTerrainHeight,A,g);let m=tu._supportsMaterials(e.context);if(this._useFragmentCulling=m,m){let _,y=!0;for(f=0;f<c;++f)if(o=a[f],r=o.geometry,h=XG(e,r),Gu.shouldUseSphericalCoordinates(h)){y=!1;break}for(f=0;f<c;++f){o=a[f],r=o.geometry,s=r.constructor;let C=XG(e,r),E=r.textureCoordinateRotationPoints;y?_=Gu.getPlanarTextureCoordinateAttributes(C,E,i,e.mapProjection,this._maxHeight):_=Gu.getSphericalExtentGeometryInstanceAttributes(C,E,i,e.mapProjection);let I=o.attributes;for(let b in I)I.hasOwnProperty(b)&&(_[b]=I[b]);u[f]=new Pt({geometry:s.createShadowVolume(r,wre(this),Sre(this)),attributes:_,id:o.id})}}else for(f=0;f<c;++f)o=a[f],r=o.geometry,s=r.constructor,u[f]=new Pt({geometry:s.createShadowVolume(r,wre(this),Sre(this)),attributes:o.attributes,id:o.id});n.geometryInstances=u,n.appearance=this.appearance,n._createBoundingVolumeFunction=function(_,y){FLe(t,_,y)},n._updateAndQueueCommandsFunction=function(_,y,C,E,I,b,S,B){QLe(t,y,C,E,I,b,S,B)},this._primitive=new ab(n)}this._primitive.appearance=this.appearance,this._primitive.show=this.show,this._primitive.debugShowShadowVolume=this.debugShowShadowVolume,this._primitive.debugShowBoundingVolume=this.debugShowBoundingVolume,this._primitive.update(e),e.afterRender.push(()=>{!this._ready&&l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};tu.prototype.getBoundingSphere=function(e){let t=this._boundingSpheresKeys.indexOf(e);if(t!==-1)return this._boundingSpheres[t]};tu.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};tu.prototype.isDestroyed=function(){return!1};tu.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};tu._supportsMaterials=function(e){return e.depthTexture};tu.supportsMaterials=function(e){return tu._supportsMaterials(e.frameState.context)};var fl=tu;function cb(){me.throwInstantiationError()}Object.defineProperties(cb.prototype,{isConstant:{get:me.throwInstantiationError},definitionChanged:{get:me.throwInstantiationError}});cb.prototype.getType=me.throwInstantiationError;cb.prototype.getValue=me.throwInstantiationError;cb.prototype.equals=me.throwInstantiationError;var kLe=new K;cb.getValue=function(e,t,n){let i;return l(e)||(e=K.now(kLe)),l(t)&&(i=t.getType(e),l(i))?((!l(n)||n.type!==i)&&(n=ro.fromType(i)),t.getValue(e,n.uniforms),n):((!l(n)||n.type!==ro.ColorType)&&(n=ro.fromType(ro.ColorType)),G.clone(G.WHITE,n.uniforms.color),n)};var ur=cb;function fE(e,t,n){this._primitives=t,this._orderedGroundPrimitives=n,this._primitive=void 0,this._outlinePrimitive=void 0,this._geometryUpdater=e,this._options=e._options,this._entity=e._entity,this._material=void 0}fE.prototype._isHidden=function(e,t,n){return!e.isShowing||!e.isAvailable(n)||!j.getValueOrDefault(t.show,n,!0)};fE.prototype._setOptions=me.throwInstantiationError;fE.prototype.update=function(e){let t=this._geometryUpdater,n=t._onTerrain,i=this._primitives,o=this._orderedGroundPrimitives;n?o.remove(this._primitive):(i.removeAndDestroy(this._primitive),i.removeAndDestroy(this._outlinePrimitive),this._outlinePrimitive=void 0),this._primitive=void 0;let r=this._entity,s=r[this._geometryUpdater._geometryPropertyName];if(this._setOptions(r,s,e),this._isHidden(r,s,e))return;let a=this._geometryUpdater.shadowsProperty.getValue(e),c=this._options;if(!l(s.fill)||s.fill.getValue(e)){let u=t.fillMaterialProperty,f=u instanceof Xt,h,A=t._getIsClosed(c);if(f)h=new gn({closed:A,flat:n&&!t._supportsMaterialsforEntitiesOnTerrain});else{let g=ur.getValue(e,u,this._material);this._material=g,h=new Eo({material:g,translucent:g.isTranslucent(),closed:A})}if(n)c.vertexFormat=gn.VERTEX_FORMAT,this._primitive=o.add(new fl({geometryInstances:this._geometryUpdater.createFillGeometryInstance(e),appearance:h,asynchronous:!1,shadows:a,classificationType:this._geometryUpdater.classificationTypeProperty.getValue(e)}),j.getValueOrUndefined(this._geometryUpdater.zIndex,e));else{c.vertexFormat=h.vertexFormat;let g=this._geometryUpdater.createFillGeometryInstance(e);f&&(h.translucent=g.attributes.color.value[3]!==255),this._primitive=i.add(new Qn({geometryInstances:g,appearance:h,asynchronous:!1,shadows:a}))}}if(!n&&l(s.outline)&&s.outline.getValue(e)){let u=this._geometryUpdater.createOutlineGeometryInstance(e),f=j.getValueOrDefault(s.outlineWidth,e,1);this._outlinePrimitive=i.add(new Qn({geometryInstances:u,appearance:new gn({flat:!0,translucent:u.attributes.color.value[3]!==255,renderState:{lineWidth:t._scene.clampLineWidth(f)}}),asynchronous:!1,shadows:a}))}};fE.prototype.getBoundingSphere=function(e){let t=this._entity,n=this._primitive,i=this._outlinePrimitive,o;return l(n)&&n.show&&n.ready&&(o=n.getGeometryInstanceAttributes(t),l(o)&&l(o.boundingSphere))?(le.clone(o.boundingSphere,e),mt.DONE):l(i)&&i.show&&i.ready&&(o=i.getGeometryInstanceAttributes(t),l(o)&&l(o.boundingSphere))?(le.clone(o.boundingSphere,e),mt.DONE):l(n)&&!n.ready||l(i)&&!i.ready?mt.PENDING:mt.FAILED};fE.prototype.isDestroyed=function(){return!1};fE.prototype.destroy=function(){let e=this._primitives,t=this._orderedGroundPrimitives;this._geometryUpdater._onTerrain?t.remove(this._primitive):e.removeAndDestroy(this._primitive),e.removeAndDestroy(this._outlinePrimitive),ue(this)};var _i=fE;var Dre={};function nR(e,t){l(Dre[e])||(Dre[e]=!0,console.warn(t??e))}nR.geometryOutlines="Entity geometry outlines are unsupported on terrain. Outlines will be disabled. To enable outlines, disable geometry terrain clamping by explicitly setting height to 0.";nR.geometryZIndex="Entity geometry with zIndex are unsupported when height or extrudedHeight are defined. zIndex will be ignored";nR.geometryHeightReference="Entity corridor, ellipse, polygon or rectangle with heightReference must also have a defined height. heightReference will be ignored";nR.geometryExtrudedHeightReference="Entity corridor, ellipse, polygon or rectangle with extrudedHeightReference must also have a defined extrudedHeight. extrudedHeightReference will be ignored";var yt=nR;var ULe={AUTODETECT:0,ENU:1,INERTIAL:2,VELOCITY:3},lp=Object.freeze(ULe);var GLe={NONE:0,GEODESIC:1,RHUMB:2},cn=Object.freeze(GLe);var vre=D.EPSILON10;function zLe(e,t,n,i){if(!l(e))return;n=n??!1;let o=l(i),r=e.length;if(r<2)return e;let s,a=e[0],c,u,f=0,h=-1;for(s=1;s<r;++s)c=e[s],t(a,c,vre)?(l(u)||(u=e.slice(0,s),f=s-1,h=0),o&&i.push(s)):(l(u)&&(u.push(c),f=s,o&&(h=i.length)),a=c);return n&&t(e[0],e[r-1],vre)&&(o&&(l(u)?i.splice(h,0,f):i.push(r-1)),l(u)?u.length-=1:u=e.slice(0,-1)),l(u)?u:e}var Mo=zLe;function VLe(e){let t=e._uSquared,n=e._ellipsoid.maximumRadius,i=e._ellipsoid.minimumRadius,o=(n-i)/n,r=Math.cos(e._startHeading),s=Math.sin(e._startHeading),a=(1-o)*Math.tan(e._start.latitude),c=1/Math.sqrt(1+a*a),u=c*a,f=Math.atan2(a,r),h=c*s,A=h*h,g=1-A,m=Math.sqrt(g),_=t/4,y=_*_,C=y*_,E=y*y,I=1+_-3*y/4+5*C/4-175*E/64,b=1-_+15*y/8-35*C/8,S=1-3*_+35*y/4,B=1-5*_,v=I*f-b*Math.sin(2*f)*_/2-S*Math.sin(4*f)*y/16-B*Math.sin(6*f)*C/48-Math.sin(8*f)*5*E/512,P=e._constants;P.a=n,P.b=i,P.f=o,P.cosineHeading=r,P.sineHeading=s,P.tanU=a,P.cosineU=c,P.sineU=u,P.sigma=f,P.sineAlpha=h,P.sineSquaredAlpha=A,P.cosineSquaredAlpha=g,P.cosineAlpha=m,P.u2Over4=_,P.u4Over16=y,P.u6Over64=C,P.u8Over256=E,P.a0=I,P.a1=b,P.a2=S,P.a3=B,P.distanceRatio=v}function HLe(e,t){return e*t*(4+e*(4-3*t))/16}function Pre(e,t,n,i,o,r,s){let a=HLe(e,n);return(1-a)*e*t*(i+a*o*(s+a*r*(2*s*s-1)))}function WLe(e,t,n,i,o,r,s){let a=(t-n)/t,c=r-i,u=Math.atan((1-a)*Math.tan(o)),f=Math.atan((1-a)*Math.tan(s)),h=Math.cos(u),A=Math.sin(u),g=Math.cos(f),m=Math.sin(f),_=h*g,y=h*m,C=A*m,E=A*g,I=c,b=D.TWO_PI,S=Math.cos(I),B=Math.sin(I),v,P,M,L,p;do{S=Math.cos(I),B=Math.sin(I);let F=y-E*S;M=Math.sqrt(g*g*B*B+F*F),P=C+_*S,v=Math.atan2(M,P);let H;M===0?(H=0,L=1):(H=_*B/M,L=1-H*H),b=I,p=P-2*C/L,isFinite(p)||(p=0),I=c+Pre(a,H,L,v,M,P,p)}while(Math.abs(I-b)>D.EPSILON12);let x=L*(t*t-n*n)/(n*n),T=1+x*(4096+x*(x*(320-175*x)-768))/16384,w=x*(256+x*(x*(74-47*x)-128))/1024,R=p*p,O=w*M*(p+w*(P*(2*R-1)-w*p*(4*M*M-3)*(4*R-3)/6)/4),k=n*T*(v-O),Q=Math.atan2(g*B,y-E*S),z=Math.atan2(h*B,y*S-E);e._distance=k,e._startHeading=Q,e._endHeading=z,e._uSquared=x}var jLe=new d,X6=new d;function Rre(e,t,n,i){let o=d.normalize(i.cartographicToCartesian(t,X6),jLe),r=d.normalize(i.cartographicToCartesian(n,X6),X6);WLe(e,i.maximumRadius,i.minimumRadius,t.longitude,t.latitude,n.longitude,n.latitude),e._start=Ae.clone(t,e._start),e._end=Ae.clone(n,e._end),e._start.height=0,e._end.height=0,VLe(e)}function iR(e,t,n){let i=n??te.default;this._ellipsoid=i,this._start=new Ae,this._end=new Ae,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,l(e)&&l(t)&&Rre(this,e,t,i)}Object.defineProperties(iR.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}});iR.prototype.setEndPoints=function(e,t){Rre(this,e,t,this._ellipsoid)};iR.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)};iR.prototype.interpolateUsingSurfaceDistance=function(e,t){let n=this._constants,i=n.distanceRatio+e/n.b,o=Math.cos(2*i),r=Math.cos(4*i),s=Math.cos(6*i),a=Math.sin(2*i),c=Math.sin(4*i),u=Math.sin(6*i),f=Math.sin(8*i),h=i*i,A=i*h,g=n.u8Over256,m=n.u2Over4,_=n.u6Over64,y=n.u4Over16,C=2*A*g*o/3+i*(1-m+7*y/4-15*_/4+579*g/64-(y-15*_/4+187*g/16)*o-(5*_/4-115*g/16)*r-29*g*s/16)+(m/2-y+71*_/32-85*g/16)*a+(5*y/16-5*_/4+383*g/96)*c-h*((_-11*g/2)*a+5*g*c/2)+(29*_/96-29*g/16)*u+539*g*f/1536,E=Math.asin(Math.sin(C)*n.cosineAlpha),I=Math.atan(n.a/n.b*Math.tan(E));C=C-n.sigma;let b=Math.cos(2*n.sigma+C),S=Math.sin(C),B=Math.cos(C),v=n.cosineU*B,P=n.sineU*S,L=Math.atan2(S*n.sineHeading,v-P*n.cosineHeading)-Pre(n.f,n.sineAlpha,n.cosineSquaredAlpha,C,S,B,b);return l(t)?(t.longitude=this._start.longitude+L,t.latitude=I,t.height=0,t):new Ae(this._start.longitude+L,I,0)};var up=iR;function Z6(e,t,n){if(e===0)return t*n;let i=e*e,o=i*i,r=o*i,s=r*i,a=s*i,c=a*i,u=n,f=Math.sin(2*u),h=Math.sin(4*u),A=Math.sin(6*u),g=Math.sin(8*u),m=Math.sin(10*u),_=Math.sin(12*u);return t*((1-i/4-3*o/64-5*r/256-175*s/16384-441*a/65536-4851*c/1048576)*u-(3*i/8+3*o/32+45*r/1024+105*s/4096+2205*a/131072+6237*c/524288)*f+(15*o/256+45*r/1024+525*s/16384+1575*a/65536+155925*c/8388608)*h-(35*r/3072+175*s/12288+3675*a/262144+13475*c/1048576)*A+(315*s/131072+2205*a/524288+43659*c/8388608)*g-(693*a/1310720+6237*c/5242880)*m+1001*c/8388608*_)}function YLe(e,t,n){let i=e/n;if(t===0)return i;let o=i*i,r=o*i,s=r*i,a=t,c=a*a,u=c*c,f=u*c,h=f*c,A=h*c,g=A*c,m=Math.sin(2*i),_=Math.cos(2*i),y=Math.sin(4*i),C=Math.cos(4*i),E=Math.sin(6*i),I=Math.cos(6*i),b=Math.sin(8*i),S=Math.cos(8*i),B=Math.sin(10*i),v=Math.cos(10*i),P=Math.sin(12*i);return i+i*c/4+7*i*u/64+15*i*f/256+579*i*h/16384+1515*i*A/65536+16837*i*g/1048576+(3*i*u/16+45*i*f/256-i*(32*o-561)*h/4096-i*(232*o-1677)*A/16384+i*(399985-90560*o+512*s)*g/5242880)*_+(21*i*f/256+483*i*h/4096-i*(224*o-1969)*A/16384-i*(33152*o-112599)*g/1048576)*C+(151*i*h/4096+4681*i*A/65536+1479*i*g/16384-453*r*g/32768)*I+(1097*i*A/65536+42783*i*g/1048576)*S+8011*i*g/1048576*v+(3*c/8+3*u/16+213*f/2048-3*o*f/64+255*h/4096-33*o*h/512+20861*A/524288-33*o*A/512+s*A/1024+28273*g/1048576-471*o*g/8192+9*s*g/4096)*m+(21*u/256+21*f/256+533*h/8192-21*o*h/512+197*A/4096-315*o*A/4096+584039*g/16777216-12517*o*g/131072+7*s*g/2048)*y+(151*f/6144+151*h/4096+5019*A/131072-453*o*A/16384+26965*g/786432-8607*o*g/131072)*E+(1097*h/131072+1097*A/65536+225797*g/10485760-1097*o*g/65536)*b+(8011*A/2621440+8011*g/1048576)*B+293393*g/251658240*P}function lb(e,t){if(e===0)return Math.log(Math.tan(.5*(D.PI_OVER_TWO+t)));let n=e*Math.sin(t);return Math.log(Math.tan(.5*(D.PI_OVER_TWO+t)))-e/2*Math.log((1+n)/(1-n))}function qLe(e,t,n,i,o){let r=lb(e._ellipticity,n),s=lb(e._ellipticity,o);return Math.atan2(D.negativePiToPi(i-t),s-r)}function KLe(e,t,n,i,o,r,s){let a=e._heading,c=r-i,u=0;if(D.equalsEpsilon(Math.abs(a),D.PI_OVER_TWO,D.EPSILON8))if(t===n)u=t*Math.cos(o)*D.negativePiToPi(c);else{let f=Math.sin(o);u=t*Math.cos(o)*D.negativePiToPi(c)/Math.sqrt(1-e._ellipticitySquared*f*f)}else{let f=Z6(e._ellipticity,t,o);u=(Z6(e._ellipticity,t,s)-f)/Math.cos(a)}return Math.abs(u)}var XLe=new d,J6=new d;function Mre(e,t,n,i){let o=d.normalize(i.cartographicToCartesian(t,J6),XLe),r=d.normalize(i.cartographicToCartesian(n,J6),J6),s=i.maximumRadius,a=i.minimumRadius,c=s*s,u=a*a;e._ellipticitySquared=(c-u)/c,e._ellipticity=Math.sqrt(e._ellipticitySquared),e._start=Ae.clone(t,e._start),e._start.height=0,e._end=Ae.clone(n,e._end),e._end.height=0,e._heading=qLe(e,t.longitude,t.latitude,n.longitude,n.latitude),e._distance=KLe(e,i.maximumRadius,i.minimumRadius,t.longitude,t.latitude,n.longitude,n.latitude)}function Nre(e,t,n,i,o,r){if(n===0)return Ae.clone(e,r);let s=o*o,a,c,u;if(Math.abs(D.PI_OVER_TWO-Math.abs(t))>D.EPSILON8){let f=Z6(o,i,e.latitude),h=n*Math.cos(t),A=f+h;if(c=YLe(A,o,i),Math.abs(t)<D.EPSILON10)a=D.negativePiToPi(e.longitude);else{let g=lb(o,e.latitude),m=lb(o,c);u=Math.tan(t)*(m-g),a=D.negativePiToPi(e.longitude+u)}}else{c=e.latitude;let f;if(o===0)f=i*Math.cos(e.latitude);else{let h=Math.sin(e.latitude);f=i*Math.cos(e.latitude)/Math.sqrt(1-s*h*h)}u=n/f,t>0?a=D.negativePiToPi(e.longitude+u):a=D.negativePiToPi(e.longitude-u)}return l(r)?(r.longitude=a,r.latitude=c,r.height=0,r):new Ae(a,c,0)}function fp(e,t,n){let i=n??te.default;this._ellipsoid=i,this._start=new Ae,this._end=new Ae,this._heading=void 0,this._distance=void 0,this._ellipticity=void 0,this._ellipticitySquared=void 0,l(e)&&l(t)&&Mre(this,e,t,i)}Object.defineProperties(fp.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},heading:{get:function(){return this._heading}}});fp.fromStartHeadingDistance=function(e,t,n,i,o){let r=i??te.default,s=r.maximumRadius,a=r.minimumRadius,c=s*s,u=a*a,f=Math.sqrt((c-u)/c);t=D.negativePiToPi(t);let h=Nre(e,t,n,r.maximumRadius,f);return!l(o)||l(i)&&!i.equals(o.ellipsoid)?new fp(e,h,r):(o.setEndPoints(e,h),o)};fp.prototype.setEndPoints=function(e,t){Mre(this,e,t,this._ellipsoid)};fp.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(e*this._distance,t)};fp.prototype.interpolateUsingSurfaceDistance=function(e,t){return Nre(this._start,this._heading,e,this._ellipsoid.maximumRadius,this._ellipticity,t)};fp.prototype.findIntersectionWithLongitude=function(e,t){let n=this._ellipticity,i=this._heading,o=Math.abs(i),r=this._start;if(e=D.negativePiToPi(e),D.equalsEpsilon(Math.abs(e),Math.PI,D.EPSILON14)&&(e=D.sign(r.longitude)*Math.PI),l(t)||(t=new Ae),Math.abs(D.PI_OVER_TWO-o)<=D.EPSILON8)return t.longitude=e,t.latitude=r.latitude,t.height=0,t;if(D.equalsEpsilon(Math.abs(D.PI_OVER_TWO-o),D.PI_OVER_TWO,D.EPSILON8))return D.equalsEpsilon(e,r.longitude,D.EPSILON12)?void 0:(t.longitude=e,t.latitude=D.PI_OVER_TWO*D.sign(D.PI_OVER_TWO-i),t.height=0,t);let s=r.latitude,a=n*Math.sin(s),c=Math.tan(.5*(D.PI_OVER_TWO+s))*Math.exp((e-r.longitude)/Math.tan(i)),u=(1+a)/(1-a),f=r.latitude,h;do{h=f;let A=n*Math.sin(h),g=(1+A)/(1-A);f=2*Math.atan(c*Math.pow(g/u,n/2))-D.PI_OVER_TWO}while(!D.equalsEpsilon(f,h,D.EPSILON12));return t.longitude=e,t.latitude=f,t.height=0,t};fp.prototype.findIntersectionWithLatitude=function(e,t){let n=this._ellipticity,i=this._heading,o=this._start;if(D.equalsEpsilon(Math.abs(i),D.PI_OVER_TWO,D.EPSILON8))return;let r=lb(n,o.latitude),s=lb(n,e),a=Math.tan(i)*(s-r),c=D.negativePiToPi(o.longitude+a);return l(t)?(t.longitude=c,t.latitude=e,t.height=0,t):new Ae(c,e,0)};var uc=fp;var sW=[Ui,zi],JLe=sW.length,ese=Math.cos(D.toRadians(30)),Lre=Math.cos(D.toRadians(150)),tse=0,nse=1e3;function v_(e){e=e??V.EMPTY_OBJECT;let t=e.positions;this.width=e.width??1,this._positions=t,this.granularity=e.granularity??9999,this.loop=e.loop??!1,this.arcType=e.arcType??cn.GEODESIC,this._ellipsoid=te.default,this._projectionIndex=0,this._workerName="createGroundPolylineGeometry",this._scene3DOnly=!1}Object.defineProperties(v_.prototype,{packedLength:{get:function(){return 1+this._positions.length*3+1+1+1+te.packedLength+1+1}}});v_.setProjectionAndEllipsoid=function(e,t){let n=0;for(let i=0;i<JLe;i++)if(t instanceof sW[i]){n=i;break}e._projectionIndex=n,e._ellipsoid=t.ellipsoid};var ZLe=new d,Ore=new d,Fre=new d;function rW(e,t,n,i,o){let r=dl(i,e,0,ZLe),s=dl(i,e,n,Ore),a=dl(i,t,0,Fre),c=dp(s,r,Ore),u=dp(a,r,Fre);return d.cross(u,c,o),d.normalize(o,o)}var $Le=new Ae,eOe=new d,tOe=new d,nOe=new d;function $6(e,t,n,i,o,r,s,a,c,u,f){if(o===0)return;let h;r===cn.GEODESIC?h=new up(e,t,s):r===cn.RHUMB&&(h=new uc(e,t,s));let A=h.surfaceDistance;if(A<o)return;let g=rW(e,t,i,s,nOe),m=Math.ceil(A/o),_=A/m,y=_,C=m-1,E=a.length;for(let I=0;I<C;I++){let b=h.interpolateUsingSurfaceDistance(y,$Le),S=dl(s,b,n,eOe),B=dl(s,b,i,tOe);d.pack(g,a,E),d.pack(S,c,E),d.pack(B,u,E),f.push(b.latitude),f.push(b.longitude),E+=3,y+=_}}var eW=new Ae;function dl(e,t,n,i){return Ae.clone(t,eW),eW.height=n,Ae.toCartesian(eW,e,i)}v_.pack=function(e,t,n){let i=n??0,o=e._positions,r=o.length;t[i++]=r;for(let s=0;s<r;++s){let a=o[s];d.pack(a,t,i),i+=3}return t[i++]=e.granularity,t[i++]=e.loop?1:0,t[i++]=e.arcType,te.pack(e._ellipsoid,t,i),i+=te.packedLength,t[i++]=e._projectionIndex,t[i++]=e._scene3DOnly?1:0,t};v_.unpack=function(e,t,n){let i=t??0,o=e[i++],r=new Array(o);for(let A=0;A<o;A++)r[A]=d.unpack(e,i),i+=3;let s=e[i++],a=e[i++]===1,c=e[i++],u=te.unpack(e,i);i+=te.packedLength;let f=e[i++],h=e[i++]===1;return l(n)||(n=new v_({positions:r})),n._positions=r,n.granularity=s,n.loop=a,n.arcType=c,n._ellipsoid=u,n._projectionIndex=f,n._scene3DOnly=h,n};function dp(e,t,n){return d.subtract(e,t,n),d.normalize(n,n),n}function Qre(e,t,n,i){return i=dp(e,t,i),i=d.cross(i,n,i),i=d.normalize(i,i),i=d.cross(n,i,i),i}var iOe=new d,oOe=new d,rOe=new d,ise=new d,sOe=0,aOe=-1;function tW(e,t,n,i,o){let r=dp(n,t,ise),s=Qre(e,t,r,iOe),a=Qre(i,t,r,oOe);if(D.equalsEpsilon(d.dot(s,a),aOe,D.EPSILON5))return o=d.cross(r,s,o),o=d.normalize(o,o),o;o=d.add(a,s,o),o=d.normalize(o,o);let c=d.cross(r,o,rOe);return d.dot(a,c)<sOe&&(o=d.negate(o,o)),o}var ez=mn.fromPointNormal(d.ZERO,d.UNIT_Y),cOe=new d,lOe=new d,uOe=new d,fOe=new d,dOe=new d,JG=new d,ZG=new Ae,kre=new Ae,Ure=new Ae;v_.createGeometry=function(e){let t=!e._scene3DOnly,n=e.loop,i=e._ellipsoid,o=e.granularity,r=e.arcType,s=new sW[e._projectionIndex](i),a=tse,c=nse,u,f,h=e._positions,A=h.length;A===2&&(n=!1);let g,m,_,y,C=new uc(void 0,void 0,i),E,I,b,S=[h[0]];for(f=0;f<A-1;f++)g=h[f],m=h[f+1],E=hi.lineSegmentPlane(g,m,ez,JG),l(E)&&!d.equalsEpsilon(E,g,D.EPSILON7)&&!d.equalsEpsilon(E,m,D.EPSILON7)&&(e.arcType===cn.GEODESIC?S.push(d.clone(E)):e.arcType===cn.RHUMB&&(b=i.cartesianToCartographic(E,ZG).longitude,_=i.cartesianToCartographic(g,ZG),y=i.cartesianToCartographic(m,kre),C.setEndPoints(_,y),I=C.findIntersectionWithLongitude(b,Ure),E=i.cartographicToCartesian(I,JG),l(E)&&!d.equalsEpsilon(E,g,D.EPSILON7)&&!d.equalsEpsilon(E,m,D.EPSILON7)&&S.push(d.clone(E)))),S.push(m);n&&(g=h[A-1],m=h[0],E=hi.lineSegmentPlane(g,m,ez,JG),l(E)&&!d.equalsEpsilon(E,g,D.EPSILON7)&&!d.equalsEpsilon(E,m,D.EPSILON7)&&(e.arcType===cn.GEODESIC?S.push(d.clone(E)):e.arcType===cn.RHUMB&&(b=i.cartesianToCartographic(E,ZG).longitude,_=i.cartesianToCartographic(g,ZG),y=i.cartesianToCartographic(m,kre),C.setEndPoints(_,y),I=C.findIntersectionWithLongitude(b,Ure),E=i.cartographicToCartesian(I,JG),l(E)&&!d.equalsEpsilon(E,g,D.EPSILON7)&&!d.equalsEpsilon(E,m,D.EPSILON7)&&S.push(d.clone(E)))));let B=S.length,v=new Array(B);for(f=0;f<B;f++){let W=Ae.fromCartesian(S[f],i);W.height=0,v[f]=W}if(v=Mo(v,Ae.equalsEpsilon),B=v.length,B<2)return;let P=[],M=[],L=[],p=[],x=cOe,T=lOe,w=uOe,R=fOe,O=dOe,k=v[0],Q=v[1],z=v[B-1];for(x=dl(i,z,a,x),R=dl(i,Q,a,R),T=dl(i,k,a,T),w=dl(i,k,c,w),n?O=tW(x,T,w,R,O):O=rW(k,Q,c,i,O),d.pack(O,M,0),d.pack(T,L,0),d.pack(w,p,0),P.push(k.latitude),P.push(k.longitude),$6(k,Q,a,c,o,r,i,M,L,p,P),f=1;f<B-1;++f){x=d.clone(T,x),T=d.clone(R,T);let W=v[f];dl(i,W,c,w),dl(i,v[f+1],a,R),tW(x,T,w,R,O),u=M.length,d.pack(O,M,u),d.pack(T,L,u),d.pack(w,p,u),P.push(W.latitude),P.push(W.longitude),$6(v[f],v[f+1],a,c,o,r,i,M,L,p,P)}let F=v[B-1],H=v[B-2];if(T=dl(i,F,a,T),w=dl(i,F,c,w),n){let W=v[0];x=dl(i,H,a,x),R=dl(i,W,a,R),O=tW(x,T,w,R,O)}else O=rW(H,F,c,i,O);if(u=M.length,d.pack(O,M,u),d.pack(T,L,u),d.pack(w,p,u),P.push(F.latitude),P.push(F.longitude),n){for($6(F,k,a,c,o,r,i,M,L,p,P),u=M.length,f=0;f<3;++f)M[u+f]=M[f],L[u+f]=L[f],p[u+f]=p[f];P.push(k.latitude),P.push(k.longitude)}return QOe(n,s,L,p,M,P,t)};var hOe=new d,mOe=new J,AOe=new Le;function Gre(e,t,n,i){let o=dp(n,t,hOe),r=d.dot(o,e);if(r>ese||r<Lre){let s=dp(i,n,ise),a=r<Lre?D.PI_OVER_TWO:-D.PI_OVER_TWO,c=Le.fromAxisAngle(s,a,AOe),u=J.fromQuaternion(c,mOe);return J.multiplyByVector(u,e,e),!0}return!1}var zre=new Ae,pOe=new d,Vre=new d;function oR(e,t,n,i,o){let r=Ae.toCartesian(t,e._ellipsoid,pOe),s=d.add(r,n,Vre),a=!1,c=e._ellipsoid,u=c.cartesianToCartographic(s,zre);Math.abs(t.longitude-u.longitude)>D.PI_OVER_TWO&&(a=!0,s=d.subtract(r,n,Vre),u=c.cartesianToCartographic(s,zre)),u.height=0;let f=e.project(u,o);return o=d.subtract(f,i,o),o.z=0,o=d.normalize(o,o),a&&d.negate(o,o),o}var gOe=new d,Hre=new d;function Wre(e,t,n,i,o,r){let s=d.subtract(t,e,gOe);d.normalize(s,s);let a=n-tse,c=d.multiplyByScalar(s,a,Hre);d.add(e,c,o);let u=i-nse;c=d.multiplyByScalar(s,u,Hre),d.add(t,c,r)}var _Oe=new d;function $G(e,t){let n=mn.getPointDistance(ez,e),i=mn.getPointDistance(ez,t),o=_Oe;D.equalsEpsilon(n,0,D.EPSILON2)?(o=dp(t,e,o),d.multiplyByScalar(o,D.EPSILON2,o),d.add(e,o,e)):D.equalsEpsilon(i,0,D.EPSILON2)&&(o=dp(e,t,o),d.multiplyByScalar(o,D.EPSILON2,o),d.add(t,o,t))}function yOe(e,t){let n=Math.abs(e.longitude),i=Math.abs(t.longitude);if(D.equalsEpsilon(n,D.PI,D.EPSILON11)){let o=D.sign(t.longitude);return e.longitude=o*(n-D.EPSILON11),1}else if(D.equalsEpsilon(i,D.PI,D.EPSILON11)){let o=D.sign(e.longitude);return t.longitude=o*(i-D.EPSILON11),2}return 0}var ose=new Ae,rse=new Ae,jre=new d,nW=new d,Yre=new d,qre=new d,COe=new d,Kre=new d,EOe=[ose,rse],IOe=new ae,xOe=new d,bOe=new d,TOe=new d,SOe=new d,wOe=new d,BOe=new d,iW=new d,oW=new d,DOe=new d,vOe=new d,POe=new d,Xre=new d,ROe=new d,MOe=new d,NOe=new ei,LOe=new ei,Jre=new d,OOe=new d,Zre=new d,FOe=[new le,new le],sse=[0,2,1,0,3,2,0,7,3,0,4,7,0,5,4,0,1,5,5,7,4,5,6,7,5,2,6,5,1,2,3,6,2,3,7,6],$re=sse.length;function QOe(e,t,n,i,o,r,s){let a,c,u=t._ellipsoid,f=n.length/3-1,h=f*8,A=h*4,g=f*36,m=h>65535?new Uint32Array(g):new Uint16Array(g),_=new Float64Array(h*3),y=new Float32Array(A),C=new Float32Array(A),E=new Float32Array(A),I=new Float32Array(A),b=new Float32Array(A),S,B,v,P;s&&(S=new Float32Array(A),B=new Float32Array(A),v=new Float32Array(A),P=new Float32Array(h*2));let M=r.length/2,L=0,p=ose;p.height=0;let x=rse;x.height=0;let T=jre,w=nW;if(s)for(c=0,a=1;a<M;a++)p.latitude=r[c],p.longitude=r[c+1],x.latitude=r[c+2],x.longitude=r[c+3],T=t.project(p,T),w=t.project(x,w),L+=d.distance(T,w),c+=2;let R=i.length/3;w=d.unpack(i,0,w);let O=0;for(c=3,a=1;a<R;a++)T=d.clone(w,T),w=d.unpack(i,c,w),O+=d.distance(T,w),c+=3;let k;c=3;let Q=0,z=0,F=0,H=0,W=!1,Z=d.unpack(n,0,qre),Y=d.unpack(i,0,nW),$=d.unpack(o,0,Kre);if(e){let Te=d.unpack(n,n.length-6,Yre);Gre($,Te,Z,Y)&&($=d.negate($,$))}let X=0,he=0,ge=0;for(a=0;a<f;a++){let Te=d.clone(Z,Yre),ke=d.clone(Y,jre),Ge=d.clone($,COe);W&&(Ge=d.negate(Ge,Ge)),Z=d.unpack(n,c,qre),Y=d.unpack(i,c,nW),$=d.unpack(o,c,Kre),W=Gre($,Te,Z,Y),p.latitude=r[Q],p.longitude=r[Q+1],x.latitude=r[Q+2],x.longitude=r[Q+3];let Ke,tt,en,it;if(s){let bi=yOe(p,x);Ke=t.project(p,wOe),tt=t.project(x,BOe);let vs=dp(tt,Ke,Jre);vs.y=Math.abs(vs.y),en=iW,it=oW,bi===0||d.dot(vs,d.UNIT_Y)>ese?(en=oR(t,p,Ge,Ke,iW),it=oR(t,x,$,tt,oW)):bi===1?(it=oR(t,x,$,tt,oW),en.x=0,en.y=D.sign(p.longitude-Math.abs(x.longitude)),en.z=0):(en=oR(t,p,Ge,Ke,iW),it.x=0,it.y=D.sign(p.longitude-x.longitude),it.z=0)}let nn=d.distance(ke,Y),qt=ei.fromCartesian(Te,NOe),Rt=d.subtract(Z,Te,DOe),Si=d.normalize(Rt,Xre),gi=d.subtract(ke,Te,vOe);gi=d.normalize(gi,gi);let Ft=d.cross(Si,gi,Xre);Ft=d.normalize(Ft,Ft);let St=d.cross(gi,Ge,ROe);St=d.normalize(St,St);let oi=d.subtract(Y,Z,POe);oi=d.normalize(oi,oi);let Et=d.cross($,oi,MOe);Et=d.normalize(Et,Et);let Lo=nn/O,Ho=X/O,Pa=0,Er,Lr,Fe,lt=0,Xe=0;if(s){Pa=d.distance(Ke,tt),Er=ei.fromCartesian(Ke,LOe),Lr=d.subtract(tt,Ke,Jre),Fe=d.normalize(Lr,OOe);let bi=Fe.x;Fe.x=Fe.y,Fe.y=-bi,lt=Pa/L,Xe=he/L}for(k=0;k<8;k++){let bi=H+k*4,vs=z+k*2,Xo=bi+3,Ra=k<4?1:-1,mo=k===2||k===3||k===6||k===7?1:-1;d.pack(qt.high,y,bi),y[Xo]=Rt.x,d.pack(qt.low,C,bi),C[Xo]=Rt.y,d.pack(St,E,bi),E[Xo]=Rt.z,d.pack(Et,I,bi),I[Xo]=Lo*Ra,d.pack(Ft,b,bi);let Jo=Ho*mo;Jo===0&&mo<0&&(Jo=9),b[Xo]=Jo,s&&(S[bi]=Er.high.x,S[bi+1]=Er.high.y,S[bi+2]=Er.low.x,S[bi+3]=Er.low.y,v[bi]=-en.y,v[bi+1]=en.x,v[bi+2]=it.y,v[bi+3]=-it.x,B[bi]=Lr.x,B[bi+1]=Lr.y,B[bi+2]=Fe.x,B[bi+3]=Fe.y,P[vs]=lt*Ra,Jo=Xe*mo,Jo===0&&mo<0&&(Jo=9),P[vs+1]=Jo)}let et=TOe,gt=SOe,Jt=xOe,bn=bOe,ho=ae.fromCartographicArray(EOe,IOe),lo=Ti.getMinimumMaximumHeights(ho,u),sa=lo.minimumTerrainHeight,aa=lo.maximumTerrainHeight;ge+=Math.abs(sa),ge+=Math.abs(aa),Wre(Te,ke,sa,aa,et,Jt),Wre(Z,Y,sa,aa,gt,bn);let Wn=d.multiplyByScalar(Ft,D.EPSILON5,Zre);d.add(et,Wn,et),d.add(gt,Wn,gt),d.add(Jt,Wn,Jt),d.add(bn,Wn,bn),$G(et,gt),$G(Jt,bn),d.pack(et,_,F),d.pack(gt,_,F+3),d.pack(bn,_,F+6),d.pack(Jt,_,F+9),Wn=d.multiplyByScalar(Ft,-2*D.EPSILON5,Zre),d.add(et,Wn,et),d.add(gt,Wn,gt),d.add(Jt,Wn,Jt),d.add(bn,Wn,bn),$G(et,gt),$G(Jt,bn),d.pack(et,_,F+12),d.pack(gt,_,F+15),d.pack(bn,_,F+18),d.pack(Jt,_,F+21),Q+=2,c+=3,z+=16,F+=24,H+=32,X+=nn,he+=Pa}c=0;let fe=0;for(a=0;a<f;a++){for(k=0;k<$re;k++)m[c+k]=sse[k]+fe;fe+=8,c+=$re}let ye=FOe;le.fromVertices(n,d.ZERO,3,ye[0]),le.fromVertices(i,d.ZERO,3,ye[1]);let xe=le.fromBoundingSpheres(ye);xe.radius+=ge/(f*2);let ve={position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,normalize:!1,values:_}),startHiAndForwardOffsetX:D_(y),startLoAndForwardOffsetY:D_(C),startNormalAndForwardOffsetZ:D_(E),endNormalAndTextureCoordinateNormalizationX:D_(I),rightNormalAndTextureCoordinateNormalizationY:D_(b)};return s&&(ve.startHiLo2D=D_(S),ve.offsetAndRight2D=D_(B),ve.startEndNormals2D=D_(v),ve.texcoordNormalization2D=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,normalize:!1,values:P})),new ht({attributes:ve,indices:m,boundingSphere:xe})}function D_(e){return new De({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,values:e})}v_._projectNormal=oR;var dE=v_;var rR=`in vec4 v_startPlaneNormalEcAndHalfWidth; +in vec4 v_endPlaneNormalEcAndBatchId; +in vec4 v_rightPlaneEC; // Technically can compute distance for this here +in vec4 v_endEcAndStartEcX; +in vec4 v_texcoordNormalizationAndStartEcYZ; + +#ifdef PER_INSTANCE_COLOR +in vec4 v_color; +#endif + +void main(void) +{ + float logDepthOrDepth = czm_branchFreeTernary(czm_sceneMode == czm_sceneMode2D, gl_FragCoord.z, czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw))); + vec3 ecStart = vec3(v_endEcAndStartEcX.w, v_texcoordNormalizationAndStartEcYZ.zw); + + // Discard for sky + if (logDepthOrDepth == 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(1.0, 0.0, 0.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + eyeCoordinate /= eyeCoordinate.w; + + float halfMaxWidth = v_startPlaneNormalEcAndHalfWidth.w * czm_metersPerPixel(eyeCoordinate); + // Check distance of the eye coordinate against the right-facing plane + float widthwiseDistance = czm_planeDistance(v_rightPlaneEC, eyeCoordinate.xyz); + + // Check eye coordinate against the mitering planes + float distanceFromStart = czm_planeDistance(v_startPlaneNormalEcAndHalfWidth.xyz, -dot(ecStart, v_startPlaneNormalEcAndHalfWidth.xyz), eyeCoordinate.xyz); + float distanceFromEnd = czm_planeDistance(v_endPlaneNormalEcAndBatchId.xyz, -dot(v_endEcAndStartEcX.xyz, v_endPlaneNormalEcAndBatchId.xyz), eyeCoordinate.xyz); + + if (abs(widthwiseDistance) > halfMaxWidth || distanceFromStart < 0.0 || distanceFromEnd < 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(1.0, 0.0, 0.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + + // Check distance of the eye coordinate against start and end planes with normals in the right plane. + // For computing unskewed lengthwise texture coordinate. + // Can also be used for clipping extremely pointy miters, but in practice unnecessary because of miter breaking. + + // aligned plane: cross the right plane normal with miter plane normal, then cross the result with right again to point it more "forward" + vec3 alignedPlaneNormal; + + // start aligned plane + alignedPlaneNormal = cross(v_rightPlaneEC.xyz, v_startPlaneNormalEcAndHalfWidth.xyz); + alignedPlaneNormal = normalize(cross(alignedPlaneNormal, v_rightPlaneEC.xyz)); + distanceFromStart = czm_planeDistance(alignedPlaneNormal, -dot(alignedPlaneNormal, ecStart), eyeCoordinate.xyz); + + // end aligned plane + alignedPlaneNormal = cross(v_rightPlaneEC.xyz, v_endPlaneNormalEcAndBatchId.xyz); + alignedPlaneNormal = normalize(cross(alignedPlaneNormal, v_rightPlaneEC.xyz)); + distanceFromEnd = czm_planeDistance(alignedPlaneNormal, -dot(alignedPlaneNormal, v_endEcAndStartEcX.xyz), eyeCoordinate.xyz); + +#ifdef PER_INSTANCE_COLOR + out_FragColor = czm_gammaCorrect(v_color); +#else // PER_INSTANCE_COLOR + // Clamp - distance to aligned planes may be negative due to mitering, + // so fragment texture coordinate might be out-of-bounds. + float s = clamp(distanceFromStart / (distanceFromStart + distanceFromEnd), 0.0, 1.0); + s = (s * v_texcoordNormalizationAndStartEcYZ.x) + v_texcoordNormalizationAndStartEcYZ.y; + float t = (widthwiseDistance + halfMaxWidth) / (2.0 * halfMaxWidth); + + czm_materialInput materialInput; + + materialInput.s = s; + materialInput.st = vec2(s, t); + materialInput.str = vec3(s, t, 0.0); + + czm_material material = czm_getMaterial(materialInput); + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#endif // PER_INSTANCE_COLOR + + // Premultiply alpha. Required for classification primitives on translucent globe. + out_FragColor.rgb *= out_FragColor.a; + + czm_writeDepthClamp(); +} +`;var sR=`in vec3 v_forwardDirectionEC; +in vec3 v_texcoordNormalizationAndHalfWidth; +in float v_batchId; + +#ifdef PER_INSTANCE_COLOR +in vec4 v_color; +#else +in vec2 v_alignedPlaneDistances; +in float v_texcoordT; +#endif + +float rayPlaneDistanceUnsafe(vec3 origin, vec3 direction, vec3 planeNormal, float planeDistance) { + // We don't expect the ray to ever be parallel to the plane + return (-planeDistance - dot(planeNormal, origin)) / dot(planeNormal, direction); +} + +void main(void) +{ + vec4 eyeCoordinate = gl_FragCoord; + eyeCoordinate /= eyeCoordinate.w; + +#ifdef PER_INSTANCE_COLOR + out_FragColor = czm_gammaCorrect(v_color); +#else // PER_INSTANCE_COLOR + // Use distances for planes aligned with segment to prevent skew in dashing + float distanceFromStart = rayPlaneDistanceUnsafe(eyeCoordinate.xyz, -v_forwardDirectionEC, v_forwardDirectionEC.xyz, v_alignedPlaneDistances.x); + float distanceFromEnd = rayPlaneDistanceUnsafe(eyeCoordinate.xyz, v_forwardDirectionEC, -v_forwardDirectionEC.xyz, v_alignedPlaneDistances.y); + + // Clamp - distance to aligned planes may be negative due to mitering + distanceFromStart = max(0.0, distanceFromStart); + distanceFromEnd = max(0.0, distanceFromEnd); + + float s = distanceFromStart / (distanceFromStart + distanceFromEnd); + s = (s * v_texcoordNormalizationAndHalfWidth.x) + v_texcoordNormalizationAndHalfWidth.y; + + czm_materialInput materialInput; + + materialInput.s = s; + materialInput.st = vec2(s, v_texcoordT); + materialInput.str = vec3(s, v_texcoordT, 0.0); + + czm_material material = czm_getMaterial(materialInput); + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#endif // PER_INSTANCE_COLOR +} +`;var aR=`in vec3 position3DHigh; +in vec3 position3DLow; + +in vec4 startHiAndForwardOffsetX; +in vec4 startLoAndForwardOffsetY; +in vec4 startNormalAndForwardOffsetZ; +in vec4 endNormalAndTextureCoordinateNormalizationX; +in vec4 rightNormalAndTextureCoordinateNormalizationY; +in vec4 startHiLo2D; +in vec4 offsetAndRight2D; +in vec4 startEndNormals2D; +in vec2 texcoordNormalization2D; + +in float batchId; + +out vec3 v_forwardDirectionEC; +out vec3 v_texcoordNormalizationAndHalfWidth; +out float v_batchId; + +// For materials +#ifdef WIDTH_VARYING +out float v_width; +#endif +#ifdef ANGLE_VARYING +out float v_polylineAngle; +#endif + +#ifdef PER_INSTANCE_COLOR +out vec4 v_color; +#else +out vec2 v_alignedPlaneDistances; +out float v_texcoordT; +#endif + +// Morphing planes using SLERP or NLERP doesn't seem to work, so instead draw the material directly on the shadow volume. +// Morph views are from very far away and aren't meant to be used precisely, so this should be sufficient. +void main() +{ + v_batchId = batchId; + + // Start position + vec4 posRelativeToEye2D = czm_translateRelativeToEye(vec3(0.0, startHiLo2D.xy), vec3(0.0, startHiLo2D.zw)); + vec4 posRelativeToEye3D = czm_translateRelativeToEye(startHiAndForwardOffsetX.xyz, startLoAndForwardOffsetY.xyz); + vec4 posRelativeToEye = czm_columbusViewMorph(posRelativeToEye2D, posRelativeToEye3D, czm_morphTime); + vec3 posEc2D = (czm_modelViewRelativeToEye * posRelativeToEye2D).xyz; + vec3 posEc3D = (czm_modelViewRelativeToEye * posRelativeToEye3D).xyz; + vec3 startEC = (czm_modelViewRelativeToEye * posRelativeToEye).xyz; + + // Start plane + vec4 startPlane2D; + vec4 startPlane3D; + startPlane2D.xyz = czm_normal * vec3(0.0, startEndNormals2D.xy); + startPlane3D.xyz = czm_normal * startNormalAndForwardOffsetZ.xyz; + startPlane2D.w = -dot(startPlane2D.xyz, posEc2D); + startPlane3D.w = -dot(startPlane3D.xyz, posEc3D); + + // Right plane + vec4 rightPlane2D; + vec4 rightPlane3D; + rightPlane2D.xyz = czm_normal * vec3(0.0, offsetAndRight2D.zw); + rightPlane3D.xyz = czm_normal * rightNormalAndTextureCoordinateNormalizationY.xyz; + rightPlane2D.w = -dot(rightPlane2D.xyz, posEc2D); + rightPlane3D.w = -dot(rightPlane3D.xyz, posEc3D); + + // End position + posRelativeToEye2D = posRelativeToEye2D + vec4(0.0, offsetAndRight2D.xy, 0.0); + posRelativeToEye3D = posRelativeToEye3D + vec4(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w, 0.0); + posRelativeToEye = czm_columbusViewMorph(posRelativeToEye2D, posRelativeToEye3D, czm_morphTime); + posEc2D = (czm_modelViewRelativeToEye * posRelativeToEye2D).xyz; + posEc3D = (czm_modelViewRelativeToEye * posRelativeToEye3D).xyz; + vec3 endEC = (czm_modelViewRelativeToEye * posRelativeToEye).xyz; + vec3 forwardEc3D = czm_normal * normalize(vec3(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w)); + vec3 forwardEc2D = czm_normal * normalize(vec3(0.0, offsetAndRight2D.xy)); + + // End plane + vec4 endPlane2D; + vec4 endPlane3D; + endPlane2D.xyz = czm_normal * vec3(0.0, startEndNormals2D.zw); + endPlane3D.xyz = czm_normal * endNormalAndTextureCoordinateNormalizationX.xyz; + endPlane2D.w = -dot(endPlane2D.xyz, posEc2D); + endPlane3D.w = -dot(endPlane3D.xyz, posEc3D); + + // Forward direction + v_forwardDirectionEC = normalize(endEC - startEC); + + vec2 cleanTexcoordNormalization2D; + cleanTexcoordNormalization2D.x = abs(texcoordNormalization2D.x); + cleanTexcoordNormalization2D.y = czm_branchFreeTernary(texcoordNormalization2D.y > 1.0, 0.0, abs(texcoordNormalization2D.y)); + vec2 cleanTexcoordNormalization3D; + cleanTexcoordNormalization3D.x = abs(endNormalAndTextureCoordinateNormalizationX.w); + cleanTexcoordNormalization3D.y = rightNormalAndTextureCoordinateNormalizationY.w; + cleanTexcoordNormalization3D.y = czm_branchFreeTernary(cleanTexcoordNormalization3D.y > 1.0, 0.0, abs(cleanTexcoordNormalization3D.y)); + + v_texcoordNormalizationAndHalfWidth.xy = mix(cleanTexcoordNormalization2D, cleanTexcoordNormalization3D, czm_morphTime); + +#ifdef PER_INSTANCE_COLOR + v_color = czm_batchTable_color(batchId); +#else // PER_INSTANCE_COLOR + // For computing texture coordinates + + v_alignedPlaneDistances.x = -dot(v_forwardDirectionEC, startEC); + v_alignedPlaneDistances.y = -dot(-v_forwardDirectionEC, endEC); +#endif // PER_INSTANCE_COLOR + +#ifdef WIDTH_VARYING + float width = czm_batchTable_width(batchId); + float halfWidth = width * 0.5; + v_width = width; + v_texcoordNormalizationAndHalfWidth.z = halfWidth; +#else + float halfWidth = 0.5 * czm_batchTable_width(batchId); + v_texcoordNormalizationAndHalfWidth.z = halfWidth; +#endif + + // Compute a normal along which to "push" the position out, extending the miter depending on view distance. + // Position has already been "pushed" by unit length along miter normal, and miter normals are encoded in the planes. + // Decode the normal to use at this specific vertex, push the position back, and then push to where it needs to be. + // Since this is morphing, compute both 3D and 2D positions and then blend. + + // ****** 3D ****** + // Check distance to the end plane and start plane, pick the plane that is closer + vec4 positionEc3D = czm_modelViewRelativeToEye * czm_translateRelativeToEye(position3DHigh, position3DLow); // w = 1.0, see czm_computePosition + float absStartPlaneDistance = abs(czm_planeDistance(startPlane3D, positionEc3D.xyz)); + float absEndPlaneDistance = abs(czm_planeDistance(endPlane3D, positionEc3D.xyz)); + vec3 planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlane3D.xyz, endPlane3D.xyz); + vec3 upOrDown = normalize(cross(rightPlane3D.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane. + vec3 normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too. + + // Nudge the top vertex upwards to prevent flickering + vec3 geodeticSurfaceNormal = normalize(cross(normalEC, forwardEc3D)); + geodeticSurfaceNormal *= float(0.0 <= rightNormalAndTextureCoordinateNormalizationY.w && rightNormalAndTextureCoordinateNormalizationY.w <= 1.0); + geodeticSurfaceNormal *= MAX_TERRAIN_HEIGHT; + positionEc3D.xyz += geodeticSurfaceNormal; + + // Determine if this vertex is on the "left" or "right" + normalEC *= sign(endNormalAndTextureCoordinateNormalizationX.w); + + // A "perfect" implementation would push along normals according to the angle against forward. + // In practice, just pushing the normal out by halfWidth is sufficient for morph views. + positionEc3D.xyz += halfWidth * max(0.0, czm_metersPerPixel(positionEc3D)) * normalEC; // prevent artifacts when czm_metersPerPixel is negative (behind camera) + + // ****** 2D ****** + // Check distance to the end plane and start plane, pick the plane that is closer + vec4 positionEc2D = czm_modelViewRelativeToEye * czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy); // w = 1.0, see czm_computePosition + absStartPlaneDistance = abs(czm_planeDistance(startPlane2D, positionEc2D.xyz)); + absEndPlaneDistance = abs(czm_planeDistance(endPlane2D, positionEc2D.xyz)); + planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlane2D.xyz, endPlane2D.xyz); + upOrDown = normalize(cross(rightPlane2D.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane. + normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too. + + // Nudge the top vertex upwards to prevent flickering + geodeticSurfaceNormal = normalize(cross(normalEC, forwardEc2D)); + geodeticSurfaceNormal *= float(0.0 <= texcoordNormalization2D.y && texcoordNormalization2D.y <= 1.0); + geodeticSurfaceNormal *= MAX_TERRAIN_HEIGHT; + positionEc2D.xyz += geodeticSurfaceNormal; + + // Determine if this vertex is on the "left" or "right" + normalEC *= sign(texcoordNormalization2D.x); +#ifndef PER_INSTANCE_COLOR + // Use vertex's sidedness to compute its texture coordinate. + v_texcoordT = clamp(sign(texcoordNormalization2D.x), 0.0, 1.0); +#endif + + // A "perfect" implementation would push along normals according to the angle against forward. + // In practice, just pushing the normal out by halfWidth is sufficient for morph views. + positionEc2D.xyz += halfWidth * max(0.0, czm_metersPerPixel(positionEc2D)) * normalEC; // prevent artifacts when czm_metersPerPixel is negative (behind camera) + + // Blend for actual position + gl_Position = czm_projection * mix(positionEc2D, positionEc3D, czm_morphTime); + +#ifdef ANGLE_VARYING + // Approximate relative screen space direction of the line. + vec2 approxLineDirection = normalize(vec2(v_forwardDirectionEC.x, -v_forwardDirectionEC.y)); + approxLineDirection.y = czm_branchFreeTernary(approxLineDirection.x == 0.0 && approxLineDirection.y == 0.0, -1.0, approxLineDirection.y); + v_polylineAngle = czm_fastApproximateAtan(approxLineDirection.x, approxLineDirection.y); +#endif +} +`;var cR=`in vec3 position3DHigh; +in vec3 position3DLow; + +// In 2D and in 3D, texture coordinate normalization component signs encodes: +// * X sign - sidedness relative to right plane +// * Y sign - is negative OR magnitude is greater than 1.0 if vertex is on bottom of volume +#ifndef COLUMBUS_VIEW_2D +in vec4 startHiAndForwardOffsetX; +in vec4 startLoAndForwardOffsetY; +in vec4 startNormalAndForwardOffsetZ; +in vec4 endNormalAndTextureCoordinateNormalizationX; +in vec4 rightNormalAndTextureCoordinateNormalizationY; +#else +in vec4 startHiLo2D; +in vec4 offsetAndRight2D; +in vec4 startEndNormals2D; +in vec2 texcoordNormalization2D; +#endif + +in float batchId; + +out vec4 v_startPlaneNormalEcAndHalfWidth; +out vec4 v_endPlaneNormalEcAndBatchId; +out vec4 v_rightPlaneEC; +out vec4 v_endEcAndStartEcX; +out vec4 v_texcoordNormalizationAndStartEcYZ; + +// For materials +#ifdef WIDTH_VARYING +out float v_width; +#endif +#ifdef ANGLE_VARYING +out float v_polylineAngle; +#endif + +#ifdef PER_INSTANCE_COLOR +out vec4 v_color; +#endif + +void main() +{ +#ifdef COLUMBUS_VIEW_2D + vec3 ecStart = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, startHiLo2D.xy), vec3(0.0, startHiLo2D.zw))).xyz; + + vec3 forwardDirectionEC = czm_normal * vec3(0.0, offsetAndRight2D.xy); + vec3 ecEnd = forwardDirectionEC + ecStart; + forwardDirectionEC = normalize(forwardDirectionEC); + + // Right plane + v_rightPlaneEC.xyz = czm_normal * vec3(0.0, offsetAndRight2D.zw); + v_rightPlaneEC.w = -dot(v_rightPlaneEC.xyz, ecStart); + + // start plane + vec4 startPlaneEC; + startPlaneEC.xyz = czm_normal * vec3(0.0, startEndNormals2D.xy); + startPlaneEC.w = -dot(startPlaneEC.xyz, ecStart); + + // end plane + vec4 endPlaneEC; + endPlaneEC.xyz = czm_normal * vec3(0.0, startEndNormals2D.zw); + endPlaneEC.w = -dot(endPlaneEC.xyz, ecEnd); + + v_texcoordNormalizationAndStartEcYZ.x = abs(texcoordNormalization2D.x); + v_texcoordNormalizationAndStartEcYZ.y = texcoordNormalization2D.y; + +#else // COLUMBUS_VIEW_2D + vec3 ecStart = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(startHiAndForwardOffsetX.xyz, startLoAndForwardOffsetY.xyz)).xyz; + vec3 offset = czm_normal * vec3(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w); + vec3 ecEnd = ecStart + offset; + + vec3 forwardDirectionEC = normalize(offset); + + // start plane + vec4 startPlaneEC; + startPlaneEC.xyz = czm_normal * startNormalAndForwardOffsetZ.xyz; + startPlaneEC.w = -dot(startPlaneEC.xyz, ecStart); + + // end plane + vec4 endPlaneEC; + endPlaneEC.xyz = czm_normal * endNormalAndTextureCoordinateNormalizationX.xyz; + endPlaneEC.w = -dot(endPlaneEC.xyz, ecEnd); + + // Right plane + v_rightPlaneEC.xyz = czm_normal * rightNormalAndTextureCoordinateNormalizationY.xyz; + v_rightPlaneEC.w = -dot(v_rightPlaneEC.xyz, ecStart); + + v_texcoordNormalizationAndStartEcYZ.x = abs(endNormalAndTextureCoordinateNormalizationX.w); + v_texcoordNormalizationAndStartEcYZ.y = rightNormalAndTextureCoordinateNormalizationY.w; + +#endif // COLUMBUS_VIEW_2D + + v_endEcAndStartEcX.xyz = ecEnd; + v_endEcAndStartEcX.w = ecStart.x; + v_texcoordNormalizationAndStartEcYZ.zw = ecStart.yz; + +#ifdef PER_INSTANCE_COLOR + v_color = czm_batchTable_color(batchId); +#endif // PER_INSTANCE_COLOR + + // Compute a normal along which to "push" the position out, extending the miter depending on view distance. + // Position has already been "pushed" by unit length along miter normal, and miter normals are encoded in the planes. + // Decode the normal to use at this specific vertex, push the position back, and then push to where it needs to be. + vec4 positionRelativeToEye = czm_computePosition(); + + // Check distance to the end plane and start plane, pick the plane that is closer + vec4 positionEC = czm_modelViewRelativeToEye * positionRelativeToEye; // w = 1.0, see czm_computePosition + float absStartPlaneDistance = abs(czm_planeDistance(startPlaneEC, positionEC.xyz)); + float absEndPlaneDistance = abs(czm_planeDistance(endPlaneEC, positionEC.xyz)); + vec3 planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlaneEC.xyz, endPlaneEC.xyz); + vec3 upOrDown = normalize(cross(v_rightPlaneEC.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane. + vec3 normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too. + + // Extrude bottom vertices downward for far view distances, like for GroundPrimitives + upOrDown = cross(forwardDirectionEC, normalEC); + upOrDown = float(czm_sceneMode == czm_sceneMode3D) * upOrDown; + upOrDown = float(v_texcoordNormalizationAndStartEcYZ.y > 1.0 || v_texcoordNormalizationAndStartEcYZ.y < 0.0) * upOrDown; + upOrDown = min(GLOBE_MINIMUM_ALTITUDE, czm_geometricToleranceOverMeter * length(positionRelativeToEye.xyz)) * upOrDown; + positionEC.xyz += upOrDown; + + v_texcoordNormalizationAndStartEcYZ.y = czm_branchFreeTernary(v_texcoordNormalizationAndStartEcYZ.y > 1.0, 0.0, abs(v_texcoordNormalizationAndStartEcYZ.y)); + + // Determine distance along normalEC to push for a volume of appropriate width. + // Make volumes about double pixel width for a conservative fit - in practice the + // extra cost here is minimal compared to the loose volume heights. + // + // N = normalEC (guaranteed "right-facing") + // R = rightEC + // p = angle between N and R + // w = distance to push along R if R == N + // d = distance to push along N + // + // N R + // { p| } * cos(p) = dot(N, R) = w / d + // d | |w * d = w / dot(N, R) + // { | } + // o---------- polyline segment ----> + // + float width = czm_batchTable_width(batchId); +#ifdef WIDTH_VARYING + v_width = width; +#endif + + v_startPlaneNormalEcAndHalfWidth.xyz = startPlaneEC.xyz; + v_startPlaneNormalEcAndHalfWidth.w = width * 0.5; + + v_endPlaneNormalEcAndBatchId.xyz = endPlaneEC.xyz; + v_endPlaneNormalEcAndBatchId.w = batchId; + + width = width * max(0.0, czm_metersPerPixel(positionEC)); // width = distance to push along R + width = width / dot(normalEC, v_rightPlaneEC.xyz); // width = distance to push along N + + // Determine if this vertex is on the "left" or "right" +#ifdef COLUMBUS_VIEW_2D + normalEC *= sign(texcoordNormalization2D.x); +#else + normalEC *= sign(endNormalAndTextureCoordinateNormalizationX.w); +#endif + + positionEC.xyz += width * normalEC; + gl_Position = czm_depthClamp(czm_projection * positionEC); + +#ifdef ANGLE_VARYING + // Approximate relative screen space direction of the line. + vec2 approxLineDirection = normalize(vec2(forwardDirectionEC.x, -forwardDirectionEC.y)); + approxLineDirection.y = czm_branchFreeTernary(approxLineDirection.x == 0.0 && approxLineDirection.y == 0.0, -1.0, approxLineDirection.y); + v_polylineAngle = czm_fastApproximateAtan(approxLineDirection.x, approxLineDirection.y); +#endif +} +`;var lR=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 prevPosition3DHigh; +in vec3 prevPosition3DLow; +in vec3 nextPosition3DHigh; +in vec3 nextPosition3DLow; +in vec2 expandAndWidth; +in vec4 color; +in float batchId; + +out vec4 v_color; + +void main() +{ + float expandDir = expandAndWidth.x; + float width = abs(expandAndWidth.y) + 0.5; + bool usePrev = expandAndWidth.y < 0.0; + + vec4 p = czm_computePosition(); + vec4 prev = czm_computePrevPosition(); + vec4 next = czm_computeNextPosition(); + + float angle; + vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, angle); + gl_Position = czm_viewportOrthographic * positionWC; + + v_color = color; +} +`;var zu=`void clipLineSegmentToNearPlane( + vec3 p0, + vec3 p1, + out vec4 positionWC, + out bool clipped, + out bool culledByNearPlane, + out vec4 clippedPositionEC) +{ + culledByNearPlane = false; + clipped = false; + + vec3 p0ToP1 = p1 - p0; + float magnitude = length(p0ToP1); + vec3 direction = normalize(p0ToP1); + + // Distance that p0 is behind the near plane. Negative means p0 is + // in front of the near plane. + float endPoint0Distance = czm_currentFrustum.x + p0.z; + + // Camera looks down -Z. + // When moving a point along +Z: LESS VISIBLE + // * Points in front of the camera move closer to the camera. + // * Points behind the camrea move farther away from the camera. + // When moving a point along -Z: MORE VISIBLE + // * Points in front of the camera move farther away from the camera. + // * Points behind the camera move closer to the camera. + + // Positive denominator: -Z, becoming more visible + // Negative denominator: +Z, becoming less visible + // Nearly zero: parallel to near plane + float denominator = -direction.z; + + if (endPoint0Distance > 0.0 && abs(denominator) < czm_epsilon7) + { + // p0 is behind the near plane and the line to p1 is nearly parallel to + // the near plane, so cull the segment completely. + culledByNearPlane = true; + } + else if (endPoint0Distance > 0.0) + { + // p0 is behind the near plane, and the line to p1 is moving distinctly + // toward or away from it. + + // t = (-plane distance - dot(plane normal, ray origin)) / dot(plane normal, ray direction) + float t = endPoint0Distance / denominator; + if (t < 0.0 || t > magnitude) + { + // Near plane intersection is not between the two points. + // We already confirmed p0 is behind the naer plane, so now + // we know the entire segment is behind it. + culledByNearPlane = true; + } + else + { + // Segment crosses the near plane, update p0 to lie exactly on it. + p0 = p0 + t * direction; + + // Numerical noise might put us a bit on the wrong side of the near plane. + // Don't let that happen. + p0.z = min(p0.z, -czm_currentFrustum.x); + + clipped = true; + } + } + + clippedPositionEC = vec4(p0, 1.0); + positionWC = czm_eyeToWindowCoordinates(clippedPositionEC); +} + +vec4 getPolylineWindowCoordinatesEC(vec4 positionEC, vec4 prevEC, vec4 nextEC, float expandDirection, float width, bool usePrevious, out float angle) +{ + // expandDirection +1 is to the _left_ when looking from positionEC toward nextEC. + +#ifdef POLYLINE_DASH + // Compute the window coordinates of the points. + vec4 positionWindow = czm_eyeToWindowCoordinates(positionEC); + vec4 previousWindow = czm_eyeToWindowCoordinates(prevEC); + vec4 nextWindow = czm_eyeToWindowCoordinates(nextEC); + + // Determine the relative screen space direction of the line. + vec2 lineDir; + if (usePrevious) { + lineDir = normalize(positionWindow.xy - previousWindow.xy); + } + else { + lineDir = normalize(nextWindow.xy - positionWindow.xy); + } + angle = atan(lineDir.x, lineDir.y) - 1.570796327; // precomputed atan(1,0) + + // Quantize the angle so it doesn't change rapidly between segments. + angle = floor(angle / czm_piOverFour + 0.5) * czm_piOverFour; +#endif + + vec4 clippedPrevWC, clippedPrevEC; + bool prevSegmentClipped, prevSegmentCulled; + clipLineSegmentToNearPlane(prevEC.xyz, positionEC.xyz, clippedPrevWC, prevSegmentClipped, prevSegmentCulled, clippedPrevEC); + + vec4 clippedNextWC, clippedNextEC; + bool nextSegmentClipped, nextSegmentCulled; + clipLineSegmentToNearPlane(nextEC.xyz, positionEC.xyz, clippedNextWC, nextSegmentClipped, nextSegmentCulled, clippedNextEC); + + bool segmentClipped, segmentCulled; + vec4 clippedPositionWC, clippedPositionEC; + clipLineSegmentToNearPlane(positionEC.xyz, usePrevious ? prevEC.xyz : nextEC.xyz, clippedPositionWC, segmentClipped, segmentCulled, clippedPositionEC); + + if (segmentCulled) + { + return vec4(0.0, 0.0, 0.0, 1.0); + } + + vec2 directionToPrevWC = normalize(clippedPrevWC.xy - clippedPositionWC.xy); + vec2 directionToNextWC = normalize(clippedNextWC.xy - clippedPositionWC.xy); + + // If a segment was culled, we can't use the corresponding direction + // computed above. We should never see both of these be true without + // \`segmentCulled\` above also being true. + if (prevSegmentCulled) + { + directionToPrevWC = -directionToNextWC; + } + else if (nextSegmentCulled) + { + directionToNextWC = -directionToPrevWC; + } + + vec2 thisSegmentForwardWC, otherSegmentForwardWC; + if (usePrevious) + { + thisSegmentForwardWC = -directionToPrevWC; + otherSegmentForwardWC = directionToNextWC; + } + else + { + thisSegmentForwardWC = directionToNextWC; + otherSegmentForwardWC = -directionToPrevWC; + } + + vec2 thisSegmentLeftWC = vec2(-thisSegmentForwardWC.y, thisSegmentForwardWC.x); + + vec2 leftWC = thisSegmentLeftWC; + float expandWidth = width * 0.5; + + // When lines are split at the anti-meridian, the position may be at the + // same location as the next or previous position, and we need to handle + // that to avoid producing NaNs. + if (!czm_equalsEpsilon(prevEC.xyz - positionEC.xyz, vec3(0.0), czm_epsilon1) && !czm_equalsEpsilon(nextEC.xyz - positionEC.xyz, vec3(0.0), czm_epsilon1)) + { + vec2 otherSegmentLeftWC = vec2(-otherSegmentForwardWC.y, otherSegmentForwardWC.x); + + vec2 leftSumWC = thisSegmentLeftWC + otherSegmentLeftWC; + float leftSumLength = length(leftSumWC); + leftWC = leftSumLength < czm_epsilon6 ? thisSegmentLeftWC : (leftSumWC / leftSumLength); + + // The sine of the angle between the two vectors is given by the formula + // |a x b| = |a||b|sin(theta) + // which is + // float sinAngle = length(cross(vec3(leftWC, 0.0), vec3(-thisSegmentForwardWC, 0.0))); + // Because the z components of both vectors are zero, the x and y coordinate will be zero. + // Therefore, the sine of the angle is just the z component of the cross product. + vec2 u = -thisSegmentForwardWC; + vec2 v = leftWC; + float sinAngle = abs(u.x * v.y - u.y * v.x); + expandWidth = clamp(expandWidth / sinAngle, 0.0, width * 2.0); + } + + vec2 offset = leftWC * expandDirection * expandWidth * czm_pixelRatio; + return vec4(clippedPositionWC.xy + offset, -clippedPositionWC.z, 1.0) * (czm_projection * clippedPositionEC).w; +} + +vec4 getPolylineWindowCoordinates(vec4 position, vec4 previous, vec4 next, float expandDirection, float width, bool usePrevious, out float angle) +{ + vec4 positionEC = czm_modelViewRelativeToEye * position; + vec4 prevEC = czm_modelViewRelativeToEye * previous; + vec4 nextEC = czm_modelViewRelativeToEye * next; + return getPolylineWindowCoordinatesEC(positionEC, prevEC, nextEC, expandDirection, width, usePrevious, angle); +} +`;var aW=`${zu} +${lR}`,kOe=rE;Wt.isInternetExplorer()||(aW=`#define CLIP_POLYLINE +${aW}`);function hE(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=!1,i=hE.VERTEX_FORMAT;this.material=void 0,this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??aW,this._fragmentShaderSource=e.fragmentShaderSource??kOe,this._renderState=po.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=i}Object.defineProperties(hE.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}}});hE.VERTEX_FORMAT=Pe.POSITION_ONLY;hE.prototype.getFragmentShaderSource=po.prototype.getFragmentShaderSource;hE.prototype.isTranslucent=po.prototype.isTranslucent;hE.prototype.getRenderState=po.prototype.getRenderState;var Cs=hE;var uR=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 prevPosition3DHigh; +in vec3 prevPosition3DLow; +in vec3 nextPosition3DHigh; +in vec3 nextPosition3DLow; +in vec2 expandAndWidth; +in vec2 st; +in float batchId; + +out float v_width; +out vec2 v_st; +out float v_polylineAngle; + +void main() +{ + float expandDir = expandAndWidth.x; + float width = abs(expandAndWidth.y) + 0.5; + bool usePrev = expandAndWidth.y < 0.0; + + vec4 p = czm_computePosition(); + vec4 prev = czm_computePrevPosition(); + vec4 next = czm_computeNextPosition(); + + float angle; + vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, angle); + gl_Position = czm_viewportOrthographic * positionWC; + + v_width = width; + v_st.s = st.s; + v_st.t = czm_writeNonPerspective(st.t, gl_Position.w); + v_polylineAngle = angle; +} +`;var mE=`#ifdef VECTOR_TILE +uniform vec4 u_highlightColor; +#endif + +in vec2 v_st; + +void main() +{ + czm_materialInput materialInput; + + vec2 st = v_st; + st.t = czm_readNonPerspective(st.t, gl_FragCoord.w); + + materialInput.s = st.s; + materialInput.st = st; + materialInput.str = vec3(st, 0.0); + + czm_material material = czm_getMaterial(materialInput); + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#ifdef VECTOR_TILE + out_FragColor *= u_highlightColor; +#endif + + czm_writeLogDepth(); +} +`;var cW=`${zu} +${uR}`,UOe=mE;Wt.isInternetExplorer()||(cW=`#define CLIP_POLYLINE +${cW}`);function AE(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=!1,i=AE.VERTEX_FORMAT;this.material=l(e.material)?e.material:ro.fromType(ro.ColorType),this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??cW,this._fragmentShaderSource=e.fragmentShaderSource??UOe,this._renderState=po.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=i}Object.defineProperties(AE.prototype,{vertexShaderSource:{get:function(){let e=this._vertexShaderSource;return this.material.shaderSource.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&(e=`#define POLYLINE_DASH +${e}`),e}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}}});AE.VERTEX_FORMAT=Pe.POSITION_AND_ST;AE.prototype.getFragmentShaderSource=po.prototype.getFragmentShaderSource;AE.prototype.isTranslucent=po.prototype.isTranslucent;AE.prototype.getRenderState=po.prototype.getRenderState;var ka=AE;function hp(e){e=e??V.EMPTY_OBJECT,this.geometryInstances=e.geometryInstances,this._hasPerInstanceColors=!0;let t=e.appearance;l(t)||(t=new ka),this.appearance=t,this.show=e.show??!0,this.classificationType=e.classificationType??Jn.BOTH,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._debugShowShadowVolume=e.debugShowShadowVolume??!1,this._primitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:!1,interleave:e.interleave??!1,releaseGeometryInstances:e.releaseGeometryInstances??!0,allowPicking:e.allowPicking??!0,asynchronous:e.asynchronous??!0,compressVertices:!1,_createShaderProgramFunction:void 0,_createCommandsFunction:void 0,_updateAndQueueCommandsFunction:void 0},this._zIndex=void 0,this._ready=!1,this._primitive=void 0,this._sp=void 0,this._sp2D=void 0,this._spMorph=void 0,this._renderState=ase(!1),this._renderState3DTiles=ase(!0),this._renderStateMorph=Ue.fromCache({cull:{enabled:!0,face:Mi.FRONT},depthTest:{enabled:!0},blending:pn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1})}Object.defineProperties(hp.prototype,{interleave:{get:function(){return this._primitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._primitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._primitiveOptions.allowPicking}},asynchronous:{get:function(){return this._primitiveOptions.asynchronous}},ready:{get:function(){return this._ready}},debugShowShadowVolume:{get:function(){return this._debugShowShadowVolume}}});hp.initializeTerrainHeights=function(){return Ti.initialize()};function GOe(e,t,n){let i=t.context,o=e._primitive,r=o._attributeLocations,s=o._batchTable.getVertexShaderCallback()(cR);s=Qn._appendShowToShader(o,s),s=Qn._appendDistanceDisplayConditionToShader(o,s),s=Qn._modifyShaderPosition(e,s,t.scene3DOnly);let a=o._batchTable.getVertexShaderCallback()(aR);a=Qn._appendShowToShader(o,a),a=Qn._appendDistanceDisplayConditionToShader(o,a),a=Qn._modifyShaderPosition(e,a,t.scene3DOnly);let c=o._batchTable.getVertexShaderCallback()(rR),u=[`GLOBE_MINIMUM_ALTITUDE ${t.mapProjection.ellipsoid.minimumRadius.toFixed(1)}`],f="",h="";l(n.material)?(h=l(n.material)?n.material.shaderSource:"",h.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&u.push("ANGLE_VARYING"),h.search(/in\s+float\s+v_width;/g)!==-1&&u.push("WIDTH_VARYING")):f="PER_INSTANCE_COLOR",u.push(f);let A=e.debugShowShadowVolume?["DEBUG_SHOW_VOLUME",f]:[f],g=new He({defines:u,sources:[s]}),m=new He({defines:A,sources:[h,c]});e._sp=an.replaceCache({context:i,shaderProgram:o._sp,vertexShaderSource:g,fragmentShaderSource:m,attributeLocations:r});let _=i.shaderCache.getDerivedShaderProgram(e._sp,"2dColor");if(!l(_)){let C=new He({defines:u.concat(["COLUMBUS_VIEW_2D"]),sources:[s]});_=i.shaderCache.createDerivedShaderProgram(e._sp,"2dColor",{context:i,shaderProgram:e._sp2D,vertexShaderSource:C,fragmentShaderSource:m,attributeLocations:r})}e._sp2D=_;let y=i.shaderCache.getDerivedShaderProgram(e._sp,"MorphColor");if(!l(y)){let C=new He({defines:u.concat([`MAX_TERRAIN_HEIGHT ${Ti._defaultMaxTerrainHeight.toFixed(1)}`]),sources:[a]});c=o._batchTable.getVertexShaderCallback()(sR);let E=new He({defines:A,sources:[h,c]});y=i.shaderCache.createDerivedShaderProgram(e._sp,"MorphColor",{context:i,shaderProgram:e._spMorph,vertexShaderSource:C,fragmentShaderSource:E,attributeLocations:r})}e._spMorph=y}function ase(e){return Ue.fromCache({cull:{enabled:!0},blending:pn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1,stencilTest:{enabled:e,frontFunction:Zn.EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.EQUAL,backOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK}})}function zOe(e,t,n,i,o,r){let s=e._primitive,a=s._va.length;o.length=a,r.length=a;let u=t instanceof Cs?{}:n._uniforms,f=s._batchTable.getUniformMapCallback()(u);for(let h=0;h<a;h++){let A=s._va[h],g=o[h];l(g)||(g=o[h]=new nt({owner:e,primitiveType:s._primitiveType})),g.vertexArray=A,g.renderState=e._renderState,g.shaderProgram=e._sp,g.uniformMap=f,g.pass=Be.TERRAIN_CLASSIFICATION,g.pickId="czm_batchTable_pickColor(v_endPlaneNormalEcAndBatchId.w)";let m=nt.shallowClone(g,g.derivedCommands.tileset);m.renderState=e._renderState3DTiles,m.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,g.derivedCommands.tileset=m;let _=nt.shallowClone(g,g.derivedCommands.color2D);_.shaderProgram=e._sp2D,g.derivedCommands.color2D=_;let y=nt.shallowClone(m,m.derivedCommands.color2D);y.shaderProgram=e._sp2D,m.derivedCommands.color2D=y;let C=nt.shallowClone(g,g.derivedCommands.colorMorph);C.renderState=e._renderStateMorph,C.shaderProgram=e._spMorph,C.pickId="czm_batchTable_pickColor(v_batchId)",g.derivedCommands.colorMorph=C}}function cse(e,t,n,i,o,r,s){n.mode===ie.MORPHING?t=t.derivedCommands.colorMorph:n.mode!==ie.SCENE3D&&(t=t.derivedCommands.color2D),t.modelMatrix=i,t.boundingVolume=r,t.cull=o,t.debugShowBoundingVolume=s,n.commandList.push(t)}function VOe(e,t,n,i,o,r,s){let a=e._primitive;Qn._updateBoundingVolumes(a,t,o);let c;t.mode===ie.SCENE3D?c=a._boundingSphereWC:t.mode===ie.COLUMBUS_VIEW?c=a._boundingSphereCV:t.mode===ie.SCENE2D&&l(a._boundingSphere2D)?c=a._boundingSphere2D:l(a._boundingSphereMorph)&&(c=a._boundingSphereMorph);let u=t.mode===ie.MORPHING,f=e.classificationType,h=f!==Jn.CESIUM_3D_TILE,A=f!==Jn.TERRAIN&&!u,g,m=t.passes;if(m.render||m.pick&&a.allowPicking){let _=n.length;for(let y=0;y<_;++y){let C=c[y];h&&(g=n[y],cse(e,g,t,o,r,C,s)),A&&(g=n[y].derivedCommands.tileset,cse(e,g,t,o,r,C,s))}}}hp.prototype.update=function(e){if(!l(this._primitive)&&!l(this.geometryInstances))return;if(!Ti.initialized){hp.initializeTerrainHeights();return}let t,n=this,i=this._primitiveOptions;if(!l(this._primitive)){let o=Array.isArray(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],r=o.length,s=new Array(r),a;for(t=0;t<r;++t)if(a=o[t].attributes,!l(a)||!l(a.color)){this._hasPerInstanceColors=!1;break}for(t=0;t<r;++t){let c=o[t];a={};let u=c.attributes;for(let f in u)u.hasOwnProperty(f)&&(a[f]=u[f]);l(a.width)||(a.width=new Rc({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,value:[c.geometry.width]})),c.geometry._scene3DOnly=e.scene3DOnly,dE.setProjectionAndEllipsoid(c.geometry,e.mapProjection),s[t]=new Pt({geometry:c.geometry,attributes:a,id:c.id,pickPrimitive:n})}i.geometryInstances=s,i.appearance=this.appearance,i._createShaderProgramFunction=function(c,u,f){GOe(n,u,f)},i._createCommandsFunction=function(c,u,f,h,A,g,m){zOe(n,u,f,h,g,m)},i._updateAndQueueCommandsFunction=function(c,u,f,h,A,g,m,_){VOe(n,u,f,h,A,g,m)},this._primitive=new Qn(i)}if(this.appearance instanceof Cs&&!this._hasPerInstanceColors)throw new me("All GeometryInstances must have color attributes to use PolylineColorAppearance with GroundPolylinePrimitive.");this._primitive.appearance=this.appearance,this._primitive.show=this.show,this._primitive.debugShowBoundingVolume=this.debugShowBoundingVolume,this._primitive.update(e),e.afterRender.push(()=>{!this._ready&&l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};hp.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};hp.isSupported=function(e){return e.frameState.context.depthTexture};hp.prototype.isDestroyed=function(){return!1};hp.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),this._sp=this._sp&&this._sp.destroy(),this._sp2D=void 0,this._spMorph=void 0,ue(this)};var hh=hp;var HOe=new U(1,1),WOe=!1,jOe=G.WHITE;function ub(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._image=void 0,this._imageSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._transparent=void 0,this._transparentSubscription=void 0,this.image=e.image,this.repeat=e.repeat,this.color=e.color,this.transparent=e.transparent}Object.defineProperties(ub.prototype,{isConstant:{get:function(){return j.isConstant(this._image)&&j.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},image:de("image"),repeat:de("repeat"),color:de("color"),transparent:de("transparent")});ub.prototype.getType=function(e){return"Image"};var YOe=new K;ub.prototype.getValue=function(e,t){return l(e)||(e=K.now(YOe)),l(t)||(t={}),t.image=j.getValueOrUndefined(this._image,e),t.repeat=j.getValueOrClonedDefault(this._repeat,e,HOe,t.repeat),t.color=j.getValueOrClonedDefault(this._color,e,jOe,t.color),j.getValueOrDefault(this._transparent,e,WOe)&&(t.color.alpha=Math.min(.99,t.color.alpha)),t};ub.prototype.equals=function(e){return this===e||e instanceof ub&&j.equals(this._image,e._image)&&j.equals(this._repeat,e._repeat)&&j.equals(this._color,e._color)&&j.equals(this._transparent,e._transparent)};var P_=ub;function qOe(e){if(e instanceof G)return new Xt(e);if(typeof e=="string"||e instanceof we||e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement){let t=new P_;return t.image=e,t}}function KOe(e,t){return de(e,t,qOe)}var jo=KOe;function fR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._dimensions=void 0,this._dimensionsSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(fR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),dimensions:de("dimensions"),heightReference:de("heightReference"),fill:de("fill"),material:jo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});fR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.dimensions=this.dimensions,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new fR(this)};fR.prototype.merge=function(e){this.show=this.show??e.show,this.dimensions=this.dimensions??e.dimensions,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var pE=fR;var XOe={FIXED:0,INERTIAL:1},$i=Object.freeze(XOe);function fb(){me.throwInstantiationError()}Object.defineProperties(fb.prototype,{isConstant:{get:me.throwInstantiationError},definitionChanged:{get:me.throwInstantiationError},referenceFrame:{get:me.throwInstantiationError}});fb.prototype.getValue=me.throwInstantiationError;fb.prototype.getValueInReferenceFrame=me.throwInstantiationError;fb.prototype.equals=me.throwInstantiationError;var lse=new J;fb.convertToReferenceFrame=function(e,t,n,i,o){if(!l(t))return t;if(l(o)||(o=new d),n===i)return d.clone(t,o);let r=kt.computeIcrfToCentralBodyFixedMatrix(e,lse);if(n===$i.INERTIAL)return J.multiplyByVector(r,t,o);if(n===$i.FIXED)return J.multiplyByVector(J.transpose(r,lse),t,o)};var mh=fb;function gE(e,t){this._definitionChanged=new _e,this._value=d.clone(e),this._referenceFrame=t??$i.FIXED}Object.defineProperties(gE.prototype,{isConstant:{get:function(){return!l(this._value)||this._referenceFrame===$i.FIXED}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var JOe=new K;gE.prototype.getValue=function(e,t){return l(e)||(e=K.now(JOe)),this.getValueInReferenceFrame(e,$i.FIXED,t)};gE.prototype.setValue=function(e,t){let n=!1;d.equals(this._value,e)||(n=!0,this._value=d.clone(e)),l(t)&&this._referenceFrame!==t&&(n=!0,this._referenceFrame=t),n&&this._definitionChanged.raiseEvent(this)};gE.prototype.getValueInReferenceFrame=function(e,t,n){return mh.convertToReferenceFrame(e,this._value,this._referenceFrame,t,n)};gE.prototype.equals=function(e){return this===e||e instanceof gE&&d.equals(this._value,e._value)&&this._referenceFrame===e._referenceFrame};var hl=gE;function dR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._cornerType=void 0,this._cornerTypeSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(dR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),positions:de("positions"),width:de("width"),height:de("height"),heightReference:de("heightReference"),extrudedHeight:de("extrudedHeight"),extrudedHeightReference:de("extrudedHeightReference"),cornerType:de("cornerType"),granularity:de("granularity"),fill:de("fill"),material:jo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex")});dR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.width=this.width,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.cornerType=this.cornerType,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new dR(this)};dR.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.width=this.width??e.width,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.cornerType=this.cornerType??e.cornerType,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var _E=dR;function ZOe(e){return e}function $Oe(e,t){return de(e,t,ZOe)}var ml=$Oe;function hR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._length=void 0,this._lengthSubscription=void 0,this._topRadius=void 0,this._topRadiusSubscription=void 0,this._bottomRadius=void 0,this._bottomRadiusSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._slices=void 0,this._slicesSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(hR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),length:de("length"),topRadius:de("topRadius"),bottomRadius:de("bottomRadius"),heightReference:de("heightReference"),fill:de("fill"),material:jo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),numberOfVerticalLines:de("numberOfVerticalLines"),slices:de("slices"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});hR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.length=this.length,e.topRadius=this.topRadius,e.bottomRadius=this.bottomRadius,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.numberOfVerticalLines=this.numberOfVerticalLines,e.slices=this.slices,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new hR(this)};hR.prototype.merge=function(e){this.show=this.show??e.show,this.length=this.length??e.length,this.topRadius=this.topRadius??e.topRadius,this.bottomRadius=this.bottomRadius??e.bottomRadius,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.numberOfVerticalLines=this.numberOfVerticalLines??e.numberOfVerticalLines,this.slices=this.slices??e.slices,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var yE=hR;function mR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._semiMajorAxis=void 0,this._semiMajorAxisSubscription=void 0,this._semiMinorAxis=void 0,this._semiMinorAxisSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(mR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),semiMajorAxis:de("semiMajorAxis"),semiMinorAxis:de("semiMinorAxis"),height:de("height"),heightReference:de("heightReference"),extrudedHeight:de("extrudedHeight"),extrudedHeightReference:de("extrudedHeightReference"),rotation:de("rotation"),stRotation:de("stRotation"),granularity:de("granularity"),fill:de("fill"),material:jo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),numberOfVerticalLines:de("numberOfVerticalLines"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex")});mR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.semiMajorAxis=this.semiMajorAxis,e.semiMinorAxis=this.semiMinorAxis,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.rotation=this.rotation,e.stRotation=this.stRotation,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.numberOfVerticalLines=this.numberOfVerticalLines,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new mR(this)};mR.prototype.merge=function(e){this.show=this.show??e.show,this.semiMajorAxis=this.semiMajorAxis??e.semiMajorAxis,this.semiMinorAxis=this.semiMinorAxis??e.semiMinorAxis,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.rotation=this.rotation??e.rotation,this.stRotation=this.stRotation??e.stRotation,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.numberOfVerticalLines=this.numberOfVerticalLines??e.numberOfVerticalLines,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var CE=mR;function AR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._radii=void 0,this._radiiSubscription=void 0,this._innerRadii=void 0,this._innerRadiiSubscription=void 0,this._minimumClock=void 0,this._minimumClockSubscription=void 0,this._maximumClock=void 0,this._maximumClockSubscription=void 0,this._minimumCone=void 0,this._minimumConeSubscription=void 0,this._maximumCone=void 0,this._maximumConeSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._stackPartitions=void 0,this._stackPartitionsSubscription=void 0,this._slicePartitions=void 0,this._slicePartitionsSubscription=void 0,this._subdivisions=void 0,this._subdivisionsSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(AR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),radii:de("radii"),innerRadii:de("innerRadii"),minimumClock:de("minimumClock"),maximumClock:de("maximumClock"),minimumCone:de("minimumCone"),maximumCone:de("maximumCone"),heightReference:de("heightReference"),fill:de("fill"),material:jo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),stackPartitions:de("stackPartitions"),slicePartitions:de("slicePartitions"),subdivisions:de("subdivisions"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});AR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.radii=this.radii,e.innerRadii=this.innerRadii,e.minimumClock=this.minimumClock,e.maximumClock=this.maximumClock,e.minimumCone=this.minimumCone,e.maximumCone=this.maximumCone,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.stackPartitions=this.stackPartitions,e.slicePartitions=this.slicePartitions,e.subdivisions=this.subdivisions,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new AR(this)};AR.prototype.merge=function(e){this.show=this.show??e.show,this.radii=this.radii??e.radii,this.innerRadii=this.innerRadii??e.innerRadii,this.minimumClock=this.minimumClock??e.minimumClock,this.maximumClock=this.maximumClock??e.maximumClock,this.minimumCone=this.minimumCone??e.minimumCone,this.maximumCone=this.maximumCone??e.maximumCone,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.stackPartitions=this.stackPartitions??e.stackPartitions,this.slicePartitions=this.slicePartitions??e.slicePartitions,this.subdivisions=this.subdivisions??e.subdivisions,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var EE=AR;function pR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._text=void 0,this._textSubscription=void 0,this._font=void 0,this._fontSubscription=void 0,this._style=void 0,this._styleSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._showBackground=void 0,this._showBackgroundSubscription=void 0,this._backgroundColor=void 0,this._backgroundColorSubscription=void 0,this._backgroundPadding=void 0,this._backgroundPaddingSubscription=void 0,this._pixelOffset=void 0,this._pixelOffsetSubscription=void 0,this._eyeOffset=void 0,this._eyeOffsetSubscription=void 0,this._horizontalOrigin=void 0,this._horizontalOriginSubscription=void 0,this._verticalOrigin=void 0,this._verticalOriginSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fillColor=void 0,this._fillColorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._pixelOffsetScaleByDistance=void 0,this._pixelOffsetScaleByDistanceSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(pR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),text:de("text"),font:de("font"),style:de("style"),scale:de("scale"),showBackground:de("showBackground"),backgroundColor:de("backgroundColor"),backgroundPadding:de("backgroundPadding"),pixelOffset:de("pixelOffset"),eyeOffset:de("eyeOffset"),horizontalOrigin:de("horizontalOrigin"),verticalOrigin:de("verticalOrigin"),heightReference:de("heightReference"),fillColor:de("fillColor"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),translucencyByDistance:de("translucencyByDistance"),pixelOffsetScaleByDistance:de("pixelOffsetScaleByDistance"),scaleByDistance:de("scaleByDistance"),distanceDisplayCondition:de("distanceDisplayCondition"),disableDepthTestDistance:de("disableDepthTestDistance")});pR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.text=this.text,e.font=this.font,e.style=this.style,e.scale=this.scale,e.showBackground=this.showBackground,e.backgroundColor=this.backgroundColor,e.backgroundPadding=this.backgroundPadding,e.pixelOffset=this.pixelOffset,e.eyeOffset=this.eyeOffset,e.horizontalOrigin=this.horizontalOrigin,e.verticalOrigin=this.verticalOrigin,e.heightReference=this.heightReference,e.fillColor=this.fillColor,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.translucencyByDistance=this.translucencyByDistance,e.pixelOffsetScaleByDistance=this.pixelOffsetScaleByDistance,e.scaleByDistance=this.scaleByDistance,e.distanceDisplayCondition=this.distanceDisplayCondition,e.disableDepthTestDistance=this.disableDepthTestDistance,e):new pR(this)};pR.prototype.merge=function(e){this.show=this.show??e.show,this.text=this.text??e.text,this.font=this.font??e.font,this.style=this.style??e.style,this.scale=this.scale??e.scale,this.showBackground=this.showBackground??e.showBackground,this.backgroundColor=this.backgroundColor??e.backgroundColor,this.backgroundPadding=this.backgroundPadding??e.backgroundPadding,this.pixelOffset=this.pixelOffset??e.pixelOffset,this.eyeOffset=this.eyeOffset??e.eyeOffset,this.horizontalOrigin=this.horizontalOrigin??e.horizontalOrigin,this.verticalOrigin=this.verticalOrigin??e.verticalOrigin,this.heightReference=this.heightReference??e.heightReference,this.fillColor=this.fillColor??e.fillColor,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.translucencyByDistance=this.translucencyByDistance??e.translucencyByDistance,this.pixelOffsetScaleByDistance=this.pixelOffsetScaleByDistance??e.pixelOffsetScaleByDistance,this.scaleByDistance=this.scaleByDistance??e.scaleByDistance,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.disableDepthTestDistance=this.disableDepthTestDistance??e.disableDepthTestDistance};var Ah=pR;var eFe=new d(1,1,1),tFe=d.ZERO,nFe=Le.IDENTITY;function use(e,t,n){this.translation=d.clone(e??tFe),this.rotation=Le.clone(t??nFe),this.scale=d.clone(n??eFe)}use.prototype.equals=function(e){return this===e||l(e)&&d.equals(this.translation,e.translation)&&Le.equals(this.rotation,e.rotation)&&d.equals(this.scale,e.scale)};var R_=use;var lW=new R_;function gR(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._translation=void 0,this._translationSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this.translation=e.translation,this.rotation=e.rotation,this.scale=e.scale}Object.defineProperties(gR.prototype,{isConstant:{get:function(){return j.isConstant(this._translation)&&j.isConstant(this._rotation)&&j.isConstant(this._scale)}},definitionChanged:{get:function(){return this._definitionChanged}},translation:de("translation"),rotation:de("rotation"),scale:de("scale")});var iFe=new K;gR.prototype.getValue=function(e,t){return l(e)||(e=K.now(iFe)),l(t)||(t=new R_),t.translation=j.getValueOrClonedDefault(this._translation,e,lW.translation,t.translation),t.rotation=j.getValueOrClonedDefault(this._rotation,e,lW.rotation,t.rotation),t.scale=j.getValueOrClonedDefault(this._scale,e,lW.scale,t.scale),t};gR.prototype.equals=function(e){return this===e||e instanceof gR&&j.equals(this._translation,e._translation)&&j.equals(this._rotation,e._rotation)&&j.equals(this._scale,e._scale)};var IE=gR;function mp(e,t){this._propertyNames=[],this._definitionChanged=new _e,l(e)&&this.merge(e,t)}Object.defineProperties(mp.prototype,{propertyNames:{get:function(){return this._propertyNames}},isConstant:{get:function(){let e=this._propertyNames;for(let t=0,n=e.length;t<n;t++)if(!j.isConstant(this[e[t]]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}}});mp.prototype.hasProperty=function(e){return this._propertyNames.indexOf(e)!==-1};function oFe(e){return new ci(e)}mp.prototype.addProperty=function(e,t,n){this._propertyNames.push(e),Object.defineProperty(this,e,de(e,!0,n??oFe)),l(t)&&(this[e]=t),this._definitionChanged.raiseEvent(this)};mp.prototype.removeProperty=function(e){let n=this._propertyNames.indexOf(e);this._propertyNames.splice(n,1),delete this[e],this._definitionChanged.raiseEvent(this)};var rFe=new K;mp.prototype.getValue=function(e,t){l(e)||(e=K.now(rFe)),l(t)||(t={});let n=this._propertyNames;for(let i=0,o=n.length;i<o;i++){let r=n[i];t[r]=j.getValueOrUndefined(this[r],e,t[r])}return t};mp.prototype.merge=function(e,t){let n=this._propertyNames,i=l(e._propertyNames)?e._propertyNames:Object.keys(e);for(let o=0,r=i.length;o<r;o++){let s=i[o],a=this[s],c=e[s];a===void 0&&n.indexOf(s)===-1&&this.addProperty(s,void 0,t),c!==void 0&&(a!==void 0?l(a)&&l(a.merge)&&a.merge(c):l(c)&&l(c.merge)&&l(c.clone)?this[s]=c.clone():this[s]=c)}};function sFe(e,t){let n=e._propertyNames,i=t._propertyNames,o=n.length;if(o!==i.length)return!1;for(let r=0;r<o;++r){let s=n[r];if(i.indexOf(s)===-1||!j.equals(e[s],t[s]))return!1}return!0}mp.prototype.equals=function(e){return this===e||e instanceof mp&&sFe(this,e)};var Al=mp;function fse(e){return new IE(e)}function aFe(e){return new Al(e,fse)}function cFe(e){return new Al(e)}function lFe(e){return new Al(e)}function _R(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._uri=void 0,this._uriSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._hasVerticalExaggeration=void 0,this._hasVerticalExaggerationSubscription=void 0,this._enableVerticalExaggeration=void 0,this._enableVerticalExaggerationSubscription=void 0,this._minimumPixelSize=void 0,this._minimumPixelSizeSubscription=void 0,this._maximumScale=void 0,this._maximumScaleSubscription=void 0,this._incrementallyLoadTextures=void 0,this._incrementallyLoadTexturesSubscription=void 0,this._runAnimations=void 0,this._runAnimationsSubscription=void 0,this._clampAnimations=void 0,this._clampAnimationsSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._silhouetteColor=void 0,this._silhouetteColorSubscription=void 0,this._silhouetteSize=void 0,this._silhouetteSizeSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._colorBlendMode=void 0,this._colorBlendModeSubscription=void 0,this._colorBlendAmount=void 0,this._colorBlendAmountSubscription=void 0,this._imageBasedLightingFactor=void 0,this._imageBasedLightingFactorSubscription=void 0,this._environmentMapOptions=void 0,this._environmentMapOptionsSubscription=void 0,this._lightColor=void 0,this._lightColorSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._nodeTransformations=void 0,this._nodeTransformationsSubscription=void 0,this._articulations=void 0,this._articulationsSubscription=void 0,this._clippingPlanes=void 0,this._clippingPlanesSubscription=void 0,this._customShader=void 0,this._customShaderSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(_R.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),uri:de("uri"),scale:de("scale"),enableVerticalExaggeration:de("enableVerticalExaggeration"),minimumPixelSize:de("minimumPixelSize"),maximumScale:de("maximumScale"),incrementallyLoadTextures:de("incrementallyLoadTextures"),runAnimations:de("runAnimations"),clampAnimations:de("clampAnimations"),shadows:de("shadows"),heightReference:de("heightReference"),silhouetteColor:de("silhouetteColor"),silhouetteSize:de("silhouetteSize"),color:de("color"),colorBlendMode:de("colorBlendMode"),colorBlendAmount:de("colorBlendAmount"),imageBasedLightingFactor:de("imageBasedLightingFactor"),environmentMapOptions:de("environmentMapOptions",void 0,lFe),lightColor:de("lightColor"),distanceDisplayCondition:de("distanceDisplayCondition"),nodeTransformations:de("nodeTransformations",void 0,aFe),articulations:de("articulations",void 0,cFe),clippingPlanes:de("clippingPlanes"),customShader:de("customShader")});_R.prototype.clone=function(e){return l(e)?(e.show=this.show,e.uri=this.uri,e.scale=this.scale,e.enableVerticalExaggeration=this.enableVerticalExaggeration,e.minimumPixelSize=this.minimumPixelSize,e.maximumScale=this.maximumScale,e.incrementallyLoadTextures=this.incrementallyLoadTextures,e.runAnimations=this.runAnimations,e.clampAnimations=this.clampAnimations,e.heightReference=this._heightReference,e.silhouetteColor=this.silhouetteColor,e.silhouetteSize=this.silhouetteSize,e.color=this.color,e.colorBlendMode=this.colorBlendMode,e.colorBlendAmount=this.colorBlendAmount,e.imageBasedLightingFactor=this.imageBasedLightingFactor,e.environmentMapOptions=this.environmentMapOptions,e.lightColor=this.lightColor,e.distanceDisplayCondition=this.distanceDisplayCondition,e.nodeTransformations=this.nodeTransformations,e.articulations=this.articulations,e.clippingPlanes=this.clippingPlanes,e.customShader=this.customShader,e):new _R(this)};_R.prototype.merge=function(e){this.show=this.show??e.show,this.uri=this.uri??e.uri,this.scale=this.scale??e.scale,this.enableVerticalExaggeration=this.enableVerticalExaggeration??e.enableVerticalExaggeration,this.minimumPixelSize=this.minimumPixelSize??e.minimumPixelSize,this.maximumScale=this.maximumScale??e.maximumScale,this.incrementallyLoadTextures=this.incrementallyLoadTextures??e.incrementallyLoadTextures,this.runAnimations=this.runAnimations??e.runAnimations,this.clampAnimations=this.clampAnimations??e.clampAnimations,this.shadows=this.shadows??e.shadows,this.heightReference=this.heightReference??e.heightReference,this.silhouetteColor=this.silhouetteColor??e.silhouetteColor,this.silhouetteSize=this.silhouetteSize??e.silhouetteSize,this.color=this.color??e.color,this.colorBlendMode=this.colorBlendMode??e.colorBlendMode,this.colorBlendAmount=this.colorBlendAmount??e.colorBlendAmount,this.imageBasedLightingFactor=this.imageBasedLightingFactor??e.imageBasedLightingFactor,this.environmentMapOptions=this.environmentMapOptions??e.environmentMapOptions,this.lightColor=this.lightColor??e.lightColor,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.clippingPlanes=this.clippingPlanes??e.clippingPlanes,this.customShader=this.customShader??e.customShader;let t=e.nodeTransformations;if(l(t)){let i=this.nodeTransformations;l(i)?i.merge(t):this.nodeTransformations=new Al(t,fse)}let n=e.articulations;if(l(n)){let i=this.articulations;l(i)?i.merge(n):this.articulations=new Al(n)}};var Ap=_R;function yR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._uri=void 0,this._uriSubscription=void 0,this._maximumScreenSpaceError=void 0,this._maximumScreenSpaceErrorSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(yR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),uri:de("uri"),maximumScreenSpaceError:de("maximumScreenSpaceError")});yR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.uri=this.uri,e.maximumScreenSpaceError=this.maximumScreenSpaceError,e):new yR(this)};yR.prototype.merge=function(e){this.show=this.show??e.show,this.uri=this.uri??e.uri,this.maximumScreenSpaceError=this.maximumScreenSpaceError??e.maximumScreenSpaceError};var xE=yR;function CR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._leadTime=void 0,this._leadTimeSubscription=void 0,this._trailTime=void 0,this._trailTimeSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._resolution=void 0,this._resolutionSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(CR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),leadTime:de("leadTime"),trailTime:de("trailTime"),width:de("width"),resolution:de("resolution"),material:jo("material"),distanceDisplayCondition:de("distanceDisplayCondition")});CR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.leadTime=this.leadTime,e.trailTime=this.trailTime,e.width=this.width,e.resolution=this.resolution,e.material=this.material,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new CR(this)};CR.prototype.merge=function(e){this.show=this.show??e.show,this.leadTime=this.leadTime??e.leadTime,this.trailTime=this.trailTime??e.trailTime,this.width=this.width??e.width,this.resolution=this.resolution??e.resolution,this.material=this.material??e.material,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var pp=CR;function ER(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._plane=void 0,this._planeSubscription=void 0,this._dimensions=void 0,this._dimensionsSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(ER.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),plane:de("plane"),dimensions:de("dimensions"),fill:de("fill"),material:jo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});ER.prototype.clone=function(e){return l(e)?(e.show=this.show,e.plane=this.plane,e.dimensions=this.dimensions,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new ER(this)};ER.prototype.merge=function(e){this.show=this.show??e.show,this.plane=this.plane??e.plane,this.dimensions=this.dimensions??e.dimensions,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var IR=ER;function xR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._pixelSize=void 0,this._pixelSizeSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this._splitDirection=void 0,this._splitDirectionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(xR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),pixelSize:de("pixelSize"),heightReference:de("heightReference"),color:de("color"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),scaleByDistance:de("scaleByDistance"),translucencyByDistance:de("translucencyByDistance"),distanceDisplayCondition:de("distanceDisplayCondition"),disableDepthTestDistance:de("disableDepthTestDistance"),splitDirection:de("splitDirection")});xR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.pixelSize=this.pixelSize,e.heightReference=this.heightReference,e.color=this.color,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.scaleByDistance=this.scaleByDistance,e.translucencyByDistance=this._translucencyByDistance,e.distanceDisplayCondition=this.distanceDisplayCondition,e.disableDepthTestDistance=this.disableDepthTestDistance,e.splitDirection=this.splitDirection,e):new xR(this)};xR.prototype.merge=function(e){this.show=this.show??e.show,this.pixelSize=this.pixelSize??e.pixelSize,this.heightReference=this.heightReference??e.heightReference,this.color=this.color??e.color,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.scaleByDistance=this.scaleByDistance??e.scaleByDistance,this.translucencyByDistance=this._translucencyByDistance??e.translucencyByDistance,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.disableDepthTestDistance=this.disableDepthTestDistance??e.disableDepthTestDistance,this.splitDirection=this.splitDirection??e.splitDirection};var bE=xR;function uFe(e,t){this.positions=l(e)?e:[],this.holes=l(t)?t:[]}var fc=uFe;function fFe(e){return Array.isArray(e)&&(e=new fc(e)),new ci(e)}function bR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._hierarchy=void 0,this._hierarchySubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._perPositionHeight=void 0,this._perPositionHeightSubscription=void 0,this._closeTop=void 0,this._closeTopSubscription=void 0,this._closeBottom=void 0,this._closeBottomSubscription=void 0,this._arcType=void 0,this._arcTypeSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this._textureCoordinates=void 0,this._textureCoordinatesSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(bR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),hierarchy:de("hierarchy",void 0,fFe),height:de("height"),heightReference:de("heightReference"),extrudedHeight:de("extrudedHeight"),extrudedHeightReference:de("extrudedHeightReference"),stRotation:de("stRotation"),granularity:de("granularity"),fill:de("fill"),material:jo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),perPositionHeight:de("perPositionHeight"),closeTop:de("closeTop"),closeBottom:de("closeBottom"),arcType:de("arcType"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex"),textureCoordinates:de("textureCoordinates")});bR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.hierarchy=this.hierarchy,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.stRotation=this.stRotation,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.perPositionHeight=this.perPositionHeight,e.closeTop=this.closeTop,e.closeBottom=this.closeBottom,e.arcType=this.arcType,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e.textureCoordinates=this.textureCoordinates,e):new bR(this)};bR.prototype.merge=function(e){this.show=this.show??e.show,this.hierarchy=this.hierarchy??e.hierarchy,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.stRotation=this.stRotation??e.stRotation,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.perPositionHeight=this.perPositionHeight??e.perPositionHeight,this.closeTop=this.closeTop??e.closeTop,this.closeBottom=this.closeBottom??e.closeBottom,this.arcType=this.arcType??e.arcType,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex,this.textureCoordinates=this.textureCoordinates??e.textureCoordinates};var ph=bR;function TR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._depthFailMaterial=void 0,this._depthFailMaterialSubscription=void 0,this._arcType=void 0,this._arcTypeSubscription=void 0,this._clampToGround=void 0,this._clampToGroundSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(TR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),positions:de("positions"),width:de("width"),granularity:de("granularity"),material:jo("material"),depthFailMaterial:jo("depthFailMaterial"),arcType:de("arcType"),clampToGround:de("clampToGround"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex")});TR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.width=this.width,e.granularity=this.granularity,e.material=this.material,e.depthFailMaterial=this.depthFailMaterial,e.arcType=this.arcType,e.clampToGround=this.clampToGround,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new TR(this)};TR.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.width=this.width??e.width,this.granularity=this.granularity??e.granularity,this.material=this.material??e.material,this.depthFailMaterial=this.depthFailMaterial??e.depthFailMaterial,this.arcType=this.arcType??e.arcType,this.clampToGround=this.clampToGround??e.clampToGround,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var Mc=TR;function SR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._shape=void 0,this._shapeSubscription=void 0,this._cornerType=void 0,this._cornerTypeSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubsription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(SR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),positions:de("positions"),shape:de("shape"),cornerType:de("cornerType"),granularity:de("granularity"),fill:de("fill"),material:jo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});SR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.shape=this.shape,e.cornerType=this.cornerType,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new SR(this)};SR.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.shape=this.shape??e.shape,this.cornerType=this.cornerType??e.cornerType,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var TE=SR;function wR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._coordinates=void 0,this._coordinatesSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distancedisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(wR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),coordinates:de("coordinates"),height:de("height"),heightReference:de("heightReference"),extrudedHeight:de("extrudedHeight"),extrudedHeightReference:de("extrudedHeightReference"),rotation:de("rotation"),stRotation:de("stRotation"),granularity:de("granularity"),fill:de("fill"),material:jo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex")});wR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.coordinates=this.coordinates,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.rotation=this.rotation,e.stRotation=this.stRotation,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new wR(this)};wR.prototype.merge=function(e){this.show=this.show??e.show,this.coordinates=this.coordinates??e.coordinates,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.rotation=this.rotation??e.rotation,this.stRotation=this.stRotation??e.stRotation,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var gh=wR;function BR(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._minimumHeights=void 0,this._minimumHeightsSubscription=void 0,this._maximumHeights=void 0,this._maximumHeightsSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(BR.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),positions:de("positions"),minimumHeights:de("minimumHeights"),maximumHeights:de("maximumHeights"),granularity:de("granularity"),fill:de("fill"),material:jo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});BR.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.minimumHeights=this.minimumHeights,e.maximumHeights=this.maximumHeights,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new BR(this)};BR.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.minimumHeights=this.minimumHeights??e.minimumHeights,this.maximumHeights=this.maximumHeights??e.maximumHeights,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var gp=BR;var dFe=new Ae,uW=[];function hFe(e){return new hl(e)}function mFe(e){return de(e,void 0,hFe)}function da(e,t){return de(e,void 0,function(n){return n instanceof t?n:new t(n)})}function Zf(e){e=e??V.EMPTY_OBJECT;let t=e.id;l(t)||(t=Xn()),this._availability=void 0,this._id=t,this._definitionChanged=new _e,this._name=e.name,this._show=e.show??!0,this._trackingReferenceFrame=e.trackingReferenceFrame??lp.AUTODETECT,this._parent=void 0,this._propertyNames=["billboard","box","corridor","cylinder","description","ellipse","ellipsoid","label","model","tileset","orientation","path","plane","point","polygon","polyline","polylineVolume","position","properties","rectangle","viewFrom","wall",...uW],this._billboard=void 0,this._billboardSubscription=void 0,this._box=void 0,this._boxSubscription=void 0,this._corridor=void 0,this._corridorSubscription=void 0,this._cylinder=void 0,this._cylinderSubscription=void 0,this._description=void 0,this._descriptionSubscription=void 0,this._ellipse=void 0,this._ellipseSubscription=void 0,this._ellipsoid=void 0,this._ellipsoidSubscription=void 0,this._label=void 0,this._labelSubscription=void 0,this._model=void 0,this._modelSubscription=void 0,this._tileset=void 0,this._tilesetSubscription=void 0,this._orientation=void 0,this._orientationSubscription=void 0,this._path=void 0,this._pathSubscription=void 0,this._plane=void 0,this._planeSubscription=void 0,this._point=void 0,this._pointSubscription=void 0,this._polygon=void 0,this._polygonSubscription=void 0,this._polyline=void 0,this._polylineSubscription=void 0,this._polylineVolume=void 0,this._polylineVolumeSubscription=void 0,this._position=void 0,this._positionSubscription=void 0,this._properties=void 0,this._propertiesSubscription=void 0,this._rectangle=void 0,this._rectangleSubscription=void 0,this._viewFrom=void 0,this._viewFromSubscription=void 0,this._wall=void 0,this._wallSubscription=void 0,this._children=[],this.entityCollection=void 0,this.parent=e.parent,this.merge(e)}function fW(e,t,n){let i=t.length;for(let o=0;o<i;o++){let r=t[o],s=r._show;(!n&&s)!==(n&&s)&&fW(r,r._children,n)}e._definitionChanged.raiseEvent(e,"isShowing",n,!n)}Object.defineProperties(Zf.prototype,{availability:ml("availability"),id:{get:function(){return this._id}},definitionChanged:{get:function(){return this._definitionChanged}},name:ml("name"),show:{get:function(){return this._show},set:function(e){if(e===this._show)return;let t=this.isShowing;this._show=e;let n=this.isShowing;t!==n&&fW(this,this._children,n),this._definitionChanged.raiseEvent(this,"show",e,!e)}},trackingReferenceFrame:ml("trackingReferenceFrame"),isShowing:{get:function(){return this._show&&(!l(this.entityCollection)||this.entityCollection.show)&&(!l(this._parent)||this._parent.isShowing)}},parent:{get:function(){return this._parent},set:function(e){let t=this._parent;if(t===e)return;let n=this.isShowing;if(l(t)){let o=t._children.indexOf(this);t._children.splice(o,1)}this._parent=e,l(e)&&e._children.push(this);let i=this.isShowing;n!==i&&fW(this,this._children,i),this._definitionChanged.raiseEvent(this,"parent",e,t)}},propertyNames:{get:function(){return this._propertyNames}},billboard:da("billboard",Tc),box:da("box",pE),corridor:da("corridor",_E),cylinder:da("cylinder",yE),description:de("description"),ellipse:da("ellipse",CE),ellipsoid:da("ellipsoid",EE),label:da("label",Ah),model:da("model",Ap),tileset:da("tileset",xE),orientation:de("orientation"),path:da("path",pp),plane:da("plane",IR),point:da("point",bE),polygon:da("polygon",ph),polyline:da("polyline",Mc),polylineVolume:da("polylineVolume",TE),properties:da("properties",Al),position:mFe("position"),rectangle:da("rectangle",gh),viewFrom:de("viewFrom"),wall:da("wall",gp)});Zf.registerEntityType=function(e,t){Object.defineProperties(Zf.prototype,{[e]:da(e,t)}),uW.includes(e)||uW.push(e)};Zf.prototype.isAvailable=function(e){let t=this._availability;return!l(t)||t.contains(e)};Zf.prototype.addProperty=function(e){this._propertyNames.push(e),Object.defineProperty(this,e,ml(e,!0))};Zf.prototype.removeProperty=function(e){let n=this._propertyNames.indexOf(e);this._propertyNames.splice(n,1),delete this[e]};Zf.prototype.merge=function(e){this.name=this.name??e.name,this.availability=this.availability??e.availability;let t=this._propertyNames,n=l(e._propertyNames)?e._propertyNames:Object.keys(e),i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r==="parent"||r==="name"||r==="availability"||r==="children")continue;let s=this[r],a=e[r];!l(s)&&t.indexOf(r)===-1&&this.addProperty(r),l(a)&&(l(s)?l(s.merge)&&s.merge(a):l(a.merge)&&l(a.clone)?this[r]=a.clone():this[r]=a)}};var dse=new J,hse=new d,mse=new Le;Zf.prototype.computeModelMatrix=function(e,t){let n=j.getValueOrUndefined(this._position,e,hse);if(!l(n))return;let i=j.getValueOrUndefined(this._orientation,e,mse);return l(i)?t=N.fromRotationTranslation(J.fromQuaternion(i,dse),n,t):t=kt.eastNorthUpToFixedFrame(n,void 0,t),t};Zf.prototype.computeModelMatrixForHeightReference=function(e,t,n,i,o){let r=j.getValueOrDefault(t,e,Ze.NONE),s=j.getValueOrUndefined(this._position,e,hse);if(r===Ze.NONE||!l(s)||d.equalsEpsilon(s,d.ZERO,D.EPSILON8))return this.computeModelMatrix(e,o);let a=i.cartesianToCartographic(s,dFe);Wf(r)?a.height=n:a.height+=n,s=i.cartographicToCartesian(a,s);let c=j.getValueOrUndefined(this._orientation,e,mse);return l(c)?o=N.fromRotationTranslation(J.fromQuaternion(c,dse),s,o):o=kt.eastNorthUpToFixedFrame(s,void 0,o),o};Zf.supportsMaterialsforEntitiesOnTerrain=function(e){return fl.supportsMaterials(e)};Zf.supportsPolylinesOnTerrain=function(e){return hh.isSupported(e)};var fr=Zf;var AFe=new Xt(G.WHITE),pFe=new ci(!0),gFe=new ci(!0),_Fe=new ci(!1),yFe=new ci(G.BLACK),CFe=new ci(Bn.DISABLED),EFe=new ci(new Ut),IFe=new ci(Jn.BOTH);function pl(e){let t=e.entity,n=e.geometryPropertyName;this._entity=t,this._scene=e.scene,this._fillEnabled=!1,this._isClosed=!1,this._onTerrain=!1,this._dynamic=!1,this._outlineEnabled=!1,this._geometryChanged=new _e,this._showProperty=void 0,this._materialProperty=void 0,this._showOutlineProperty=void 0,this._outlineColorProperty=void 0,this._outlineWidth=1,this._shadowsProperty=void 0,this._distanceDisplayConditionProperty=void 0,this._classificationTypeProperty=void 0,this._options=e.geometryOptions,this._geometryPropertyName=n,this._id=`${n}-${t.id}`,this._observedPropertyNames=e.observedPropertyNames,this._supportsMaterialsforEntitiesOnTerrain=fr.supportsMaterialsforEntitiesOnTerrain(e.scene)}Object.defineProperties(pl.prototype,{id:{get:function(){return this._id}},entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!l(this._entity.availability)&&j.isConstant(this._showProperty)&&j.isConstant(this._fillProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},outlineEnabled:{get:function(){return this._outlineEnabled}},hasConstantOutline:{get:function(){return!this._outlineEnabled||!l(this._entity.availability)&&j.isConstant(this._showProperty)&&j.isConstant(this._showOutlineProperty)}},outlineColorProperty:{get:function(){return this._outlineColorProperty}},outlineWidth:{get:function(){return this._outlineWidth}},shadowsProperty:{get:function(){return this._shadowsProperty}},distanceDisplayConditionProperty:{get:function(){return this._distanceDisplayConditionProperty}},classificationTypeProperty:{get:function(){return this._classificationTypeProperty}},isDynamic:{get:function(){return this._dynamic}},isClosed:{get:function(){return this._isClosed}},onTerrain:{get:function(){return this._onTerrain}},geometryChanged:{get:function(){return this._geometryChanged}}});pl.prototype.isOutlineVisible=function(e){let t=this._entity;return(this._outlineEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e))??!1};pl.prototype.isFilled=function(e){let t=this._entity;return(this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e))??!1};pl.prototype.createFillGeometryInstance=me.throwInstantiationError;pl.prototype.createOutlineGeometryInstance=me.throwInstantiationError;pl.prototype.isDestroyed=function(){return!1};pl.prototype.destroy=function(){ue(this)};pl.prototype._isHidden=function(e,t){let n=t.show;return l(n)&&n.isConstant&&!n.getValue(je.MINIMUM_VALUE)};pl.prototype._isOnTerrain=function(e,t){return!1};pl.prototype._getIsClosed=function(e){return!0};pl.prototype._isDynamic=me.throwInstantiationError;pl.prototype._setStaticOptions=me.throwInstantiationError;pl.prototype._onEntityPropertyChanged=function(e,t,n,i){if(this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o)){(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this));return}let r=o.fill,s=l(r)&&r.isConstant?r.getValue(je.MINIMUM_VALUE):!0,a=o.outline,c=l(a);if(c&&a.isConstant&&(c=a.getValue(je.MINIMUM_VALUE)),!s&&!c){(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this));return}let u=o.show;if(this._isHidden(e,o)){(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this));return}this._materialProperty=o.material??AFe,this._fillProperty=r??gFe,this._showProperty=u??pFe,this._showOutlineProperty=o.outline??_Fe,this._outlineColorProperty=c?o.outlineColor??yFe:void 0,this._shadowsProperty=o.shadows??CFe,this._distanceDisplayConditionProperty=o.distanceDisplayCondition??EFe,this._classificationTypeProperty=o.classificationType??IFe,this._fillEnabled=s;let f=this._isOnTerrain(e,o)&&(this._supportsMaterialsforEntitiesOnTerrain||this._materialProperty instanceof Xt);if(c&&f&&(yt(yt.geometryOutlines),c=!1),this._onTerrain=f,this._outlineEnabled=c,this._isDynamic(e,o))this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this));else{this._setStaticOptions(e,o),this._isClosed=this._getIsClosed(this._options);let h=o.outlineWidth;this._outlineWidth=l(h)?h.getValue(je.MINIMUM_VALUE):1,this._dynamic=!1,this._geometryChanged.raiseEvent(this)}};pl.prototype.createDynamicUpdater=function(e,t){return new this.constructor.DynamicGeometryUpdater(this,e,t)};var yi=pl;function db(e,t){this._callback=void 0,this._isConstant=void 0,this._definitionChanged=new _e,this.setCallback(e,t)}Object.defineProperties(db.prototype,{isConstant:{get:function(){return this._isConstant}},definitionChanged:{get:function(){return this._definitionChanged}}});var xFe=new K;db.prototype.getValue=function(e,t){return l(e)||(e=K.now(xFe)),this._callback(e,t)};db.prototype.setCallback=function(e,t){let n=this._callback!==e||this._isConstant!==t;this._callback=e,this._isConstant=t,n&&this._definitionChanged.raiseEvent(this)};db.prototype.equals=function(e){return this===e||e instanceof db&&this._callback===e._callback&&this._isConstant===e._isConstant};var _h=db;var Ase=new d;function hb(e,t,n,i){this._scene=e,this._heightReference=n,this._extrudedHeightReference=i,this._positionProperty=t,this._position=new d,this._cartographicPosition=new Ae,this._normal=new d,this._definitionChanged=new _e,this._terrainHeight=0,this._removeCallbackFunc=void 0,this._removeEventListener=void 0,this._removeModeListener=void 0;let o=this;if(l(e.globe)&&(this._removeEventListener=e.terrainProviderChanged.addEventListener(function(){o._updateClamping()}),this._removeModeListener=e.morphComplete.addEventListener(function(){o._updateClamping()})),t.isConstant){let r=t.getValue(je.MINIMUM_VALUE,Ase);if(!l(r)||d.equals(r,d.ZERO)||!l(e.globe))return;this._position=d.clone(r,this._position),this._updateClamping(),this._normal=e.ellipsoid.geodeticSurfaceNormal(r,this._normal)}}Object.defineProperties(hb.prototype,{isConstant:{get:function(){return!1}},definitionChanged:{get:function(){return this._definitionChanged}}});hb.prototype._updateClamping=function(){l(this._removeCallbackFunc)&&this._removeCallbackFunc();let e=this._scene,t=this._position;if(d.equals(t,d.ZERO)){this._terrainHeight=0;return}let i=e.ellipsoid.cartesianToCartographic(t,this._cartographicPosition),o=e.getHeight(i,this._heightReference);l(o)?this._terrainHeight=o:this._terrainHeight=0;let r=s=>{this._terrainHeight=s.height,this.definitionChanged.raiseEvent()};this._removeCallbackFunc=e.updateHeight(i,r,this._heightReference)};var bFe=new K;hb.prototype.getValue=function(e,t){l(e)||(e=K.now(bFe));let n=j.getValueOrDefault(this._heightReference,e,Ze.NONE),i=j.getValueOrDefault(this._extrudedHeightReference,e,Ze.NONE);if(n===Ze.NONE&&!Kx(i))return this._position=d.clone(d.ZERO,this._position),d.clone(d.ZERO,t);if(this._positionProperty.isConstant)return d.multiplyByScalar(this._normal,this._terrainHeight,t);let o=this._scene,r=this._positionProperty.getValue(e,Ase);if(!l(r)||d.equals(r,d.ZERO)||!l(o.globe))return d.clone(d.ZERO,t);if(d.equalsEpsilon(this._position,r,D.EPSILON10))return d.multiplyByScalar(this._normal,this._terrainHeight,t);this._position=d.clone(r,this._position),this._updateClamping();let s=o.ellipsoid.geodeticSurfaceNormal(r,this._normal);return d.multiplyByScalar(s,this._terrainHeight,t)};hb.prototype.isDestroyed=function(){return!1};hb.prototype.destroy=function(){return l(this._removeEventListener)&&this._removeEventListener(),l(this._removeModeListener)&&this._removeModeListener(),l(this._removeCallbackFunc)&&this._removeCallbackFunc(),ue(this)};var SE=hb;function TFe(e,t,n,i){if(yi.prototype._onEntityPropertyChanged.call(this,e,t,n,i),this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o))return;l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0);let r=o.heightReference;if(l(r)){let s=new _h(this._computeCenter.bind(this),!this._dynamic);this._terrainOffsetProperty=new SE(this._scene,s,r)}}var _p=TFe;var pse=d.ZERO,gse=new d,SFe=new d,_se=new G;function wFe(e){this.id=e,this.vertexFormat=void 0,this.dimensions=void 0,this.offsetAttribute=void 0}function Vu(e,t){yi.call(this,{entity:e,scene:t,geometryOptions:new wFe(e),geometryPropertyName:"box",observedPropertyNames:["availability","position","orientation","box"]}),this._onEntityPropertyChanged(e,"box",e.box,void 0)}l(Object.create)&&(Vu.prototype=Object.create(yi.prototype),Vu.prototype.constructor=Vu);Object.defineProperties(Vu.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});Vu.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=Kn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r,color:void 0,offset:void 0};if(this._materialProperty instanceof Xt){let a;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,_se)),l(a)||(a=G.WHITE),s.color=$t.fromColor(a)}return l(this._options.offsetAttribute)&&(s.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,pse,gse))),new Pt({id:t,geometry:cc.fromDimensions(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.box.heightReference,this._options.dimensions.z*.5,this._scene.ellipsoid),attributes:s})};Vu.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,_se),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:$t.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,pse,gse))),new Pt({id:t,geometry:ah.fromDimensions(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.box.heightReference,this._options.dimensions.z*.5,this._scene.ellipsoid),attributes:r})};Vu.prototype._computeCenter=function(e,t){return j.getValueOrUndefined(this._entity.position,e,t)};Vu.prototype._isHidden=function(e,t){return!l(t.dimensions)||!l(e.position)||yi.prototype._isHidden.call(this,e,t)};Vu.prototype._isDynamic=function(e,t){return!e.position.isConstant||!j.isConstant(e.orientation)||!t.dimensions.isConstant||!j.isConstant(t.outlineWidth)};Vu.prototype._setStaticOptions=function(e,t){let n=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof Xt?gn.VERTEX_FORMAT:Eo.MaterialSupport.TEXTURED.vertexFormat,i.dimensions=t.dimensions.getValue(je.MINIMUM_VALUE,i.dimensions),i.offsetAttribute=n!==Ze.NONE?hn.ALL:void 0};Vu.prototype._onEntityPropertyChanged=_p;Vu.DynamicGeometryUpdater=mb;function mb(e,t,n){_i.call(this,e,t,n)}l(Object.create)&&(mb.prototype=Object.create(_i.prototype),mb.prototype.constructor=mb);mb.prototype._isHidden=function(e,t,n){let i=j.getValueOrUndefined(e.position,n,SFe),o=this._options.dimensions;return!l(i)||!l(o)||_i.prototype._isHidden.call(this,e,t,n)};mb.prototype._setOptions=function(e,t,n){let i=j.getValueOrDefault(t.heightReference,n,Ze.NONE),o=this._options;o.dimensions=j.getValueOrUndefined(t.dimensions,n,o.dimensions),o.offsetAttribute=i!==Ze.NONE?hn.ALL:void 0};var DR=Vu;function wE(e,t,n){this._callback=void 0,this._isConstant=void 0,this._referenceFrame=n??$i.FIXED,this._definitionChanged=new _e,this.setCallback(e,t)}Object.defineProperties(wE.prototype,{isConstant:{get:function(){return this._isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var BFe=new K;wE.prototype.getValue=function(e,t){return l(e)||(e=K.now(BFe)),this.getValueInReferenceFrame(e,$i.FIXED,t)};wE.prototype.setCallback=function(e,t){let n=this._callback!==e||this._isConstant!==t;this._callback=e,this._isConstant=t,n&&this._definitionChanged.raiseEvent(this)};wE.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._callback(e,n);return mh.convertToReferenceFrame(e,i,this._referenceFrame,t,n)};wE.prototype.equals=function(e){return this===e||e instanceof wE&&this._callback===e._callback&&this._isConstant===e._isConstant&&this._referenceFrame===e._referenceFrame};var vR=wE;/*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE */var{entries:Bse,setPrototypeOf:yse,isFrozen:DFe,getPrototypeOf:vFe,getOwnPropertyDescriptor:PFe}=Object,{freeze:_l,seal:$f,create:Dse}=Object,{apply:gW,construct:_W}=typeof Reflect<"u"&&Reflect;_l||(_l=function(t){return t});$f||($f=function(t){return t});gW||(gW=function(t,n,i){return t.apply(n,i)});_W||(_W=function(t,n){return new t(...n)});var tz=yl(Array.prototype.forEach),RFe=yl(Array.prototype.lastIndexOf),Cse=yl(Array.prototype.pop),PR=yl(Array.prototype.push),MFe=yl(Array.prototype.splice),iz=yl(String.prototype.toLowerCase),dW=yl(String.prototype.toString),Ese=yl(String.prototype.match),RR=yl(String.prototype.replace),NFe=yl(String.prototype.indexOf),LFe=yl(String.prototype.trim),yh=yl(Object.prototype.hasOwnProperty),gl=yl(RegExp.prototype.test),MR=OFe(TypeError);function yl(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];return gW(e,t,i)}}function OFe(e){return function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return _W(e,n)}}function Vi(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:iz;yse&&yse(e,null);let i=t.length;for(;i--;){let o=t[i];if(typeof o=="string"){let r=n(o);r!==o&&(DFe(t)||(t[i]=r),o=r)}e[o]=!0}return e}function FFe(e){for(let t=0;t<e.length;t++)yh(e,t)||(e[t]=null);return e}function yp(e){let t=Dse(null);for(let[n,i]of Bse(e))yh(e,n)&&(Array.isArray(i)?t[n]=FFe(i):i&&typeof i=="object"&&i.constructor===Object?t[n]=yp(i):t[n]=i);return t}function NR(e,t){for(;e!==null;){let i=PFe(e,t);if(i){if(i.get)return yl(i.get);if(typeof i.value=="function")return yl(i.value)}e=vFe(e)}function n(){return null}return n}var Ise=_l(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),hW=_l(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),mW=_l(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),QFe=_l(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),AW=_l(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),kFe=_l(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),xse=_l(["#text"]),bse=_l(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),pW=_l(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Tse=_l(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),nz=_l(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),UFe=$f(/\{\{[\w\W]*|[\w\W]*\}\}/gm),GFe=$f(/<%[\w\W]*|[\w\W]*%>/gm),zFe=$f(/\$\{[\w\W]*/gm),VFe=$f(/^data-[\-\w.\u00B7-\uFFFF]+$/),HFe=$f(/^aria-[\-\w]+$/),vse=$f(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),WFe=$f(/^(?:\w+script|data):/i),jFe=$f(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Pse=$f(/^html$/i),YFe=$f(/^[a-z][.\w]*(-[.\w]+)+$/i),Sse=Object.freeze({__proto__:null,ARIA_ATTR:HFe,ATTR_WHITESPACE:jFe,CUSTOM_ELEMENT:YFe,DATA_ATTR:VFe,DOCTYPE_NAME:Pse,ERB_EXPR:GFe,IS_ALLOWED_URI:vse,IS_SCRIPT_OR_DATA:WFe,MUSTACHE_EXPR:UFe,TMPLIT_EXPR:zFe}),LR={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},qFe=function(){return typeof window>"u"?null:window},KFe=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let i=null,o="data-tt-policy-suffix";n&&n.hasAttribute(o)&&(i=n.getAttribute(o));let r="dompurify"+(i?"#"+i:"");try{return t.createPolicy(r,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+r+" could not be created."),null}},wse=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function Rse(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:qFe(),t=un=>Rse(un);if(t.version="3.2.6",t.removed=[],!e||!e.document||e.document.nodeType!==LR.document||!e.Element)return t.isSupported=!1,t;let{document:n}=e,i=n,o=i.currentScript,{DocumentFragment:r,HTMLTemplateElement:s,Node:a,Element:c,NodeFilter:u,NamedNodeMap:f=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:h,DOMParser:A,trustedTypes:g}=e,m=c.prototype,_=NR(m,"cloneNode"),y=NR(m,"remove"),C=NR(m,"nextSibling"),E=NR(m,"childNodes"),I=NR(m,"parentNode");if(typeof s=="function"){let un=n.createElement("template");un.content&&un.content.ownerDocument&&(n=un.content.ownerDocument)}let b,S="",{implementation:B,createNodeIterator:v,createDocumentFragment:P,getElementsByTagName:M}=n,{importNode:L}=i,p=wse();t.isSupported=typeof Bse=="function"&&typeof I=="function"&&B&&B.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:x,ERB_EXPR:T,TMPLIT_EXPR:w,DATA_ATTR:R,ARIA_ATTR:O,IS_SCRIPT_OR_DATA:k,ATTR_WHITESPACE:Q,CUSTOM_ELEMENT:z}=Sse,{IS_ALLOWED_URI:F}=Sse,H=null,W=Vi({},[...Ise,...hW,...mW,...AW,...xse]),Z=null,Y=Vi({},[...bse,...pW,...Tse,...nz]),$=Object.seal(Dse(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),X=null,he=null,ge=!0,fe=!0,ye=!1,xe=!0,ve=!1,Te=!0,ke=!1,Ge=!1,Ke=!1,tt=!1,en=!1,it=!1,nn=!0,qt=!1,Rt="user-content-",Si=!0,gi=!1,Ft={},St=null,oi=Vi({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Et=null,Lo=Vi({},["audio","video","img","source","image","track"]),Ho=null,Pa=Vi({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Er="http://www.w3.org/1998/Math/MathML",Lr="http://www.w3.org/2000/svg",Fe="http://www.w3.org/1999/xhtml",lt=Fe,Xe=!1,et=null,gt=Vi({},[Er,Lr,Fe],dW),Jt=Vi({},["mi","mo","mn","ms","mtext"]),bn=Vi({},["annotation-xml"]),ho=Vi({},["title","style","font","a","script"]),lo=null,sa=["application/xhtml+xml","text/html"],aa="text/html",Wn=null,bi=null,vs=n.createElement("form"),Xo=function(Se){return Se instanceof RegExp||Se instanceof Function},Ra=function(){let Se=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(bi&&bi===Se)){if((!Se||typeof Se!="object")&&(Se={}),Se=yp(Se),lo=sa.indexOf(Se.PARSER_MEDIA_TYPE)===-1?aa:Se.PARSER_MEDIA_TYPE,Wn=lo==="application/xhtml+xml"?dW:iz,H=yh(Se,"ALLOWED_TAGS")?Vi({},Se.ALLOWED_TAGS,Wn):W,Z=yh(Se,"ALLOWED_ATTR")?Vi({},Se.ALLOWED_ATTR,Wn):Y,et=yh(Se,"ALLOWED_NAMESPACES")?Vi({},Se.ALLOWED_NAMESPACES,dW):gt,Ho=yh(Se,"ADD_URI_SAFE_ATTR")?Vi(yp(Pa),Se.ADD_URI_SAFE_ATTR,Wn):Pa,Et=yh(Se,"ADD_DATA_URI_TAGS")?Vi(yp(Lo),Se.ADD_DATA_URI_TAGS,Wn):Lo,St=yh(Se,"FORBID_CONTENTS")?Vi({},Se.FORBID_CONTENTS,Wn):oi,X=yh(Se,"FORBID_TAGS")?Vi({},Se.FORBID_TAGS,Wn):yp({}),he=yh(Se,"FORBID_ATTR")?Vi({},Se.FORBID_ATTR,Wn):yp({}),Ft=yh(Se,"USE_PROFILES")?Se.USE_PROFILES:!1,ge=Se.ALLOW_ARIA_ATTR!==!1,fe=Se.ALLOW_DATA_ATTR!==!1,ye=Se.ALLOW_UNKNOWN_PROTOCOLS||!1,xe=Se.ALLOW_SELF_CLOSE_IN_ATTR!==!1,ve=Se.SAFE_FOR_TEMPLATES||!1,Te=Se.SAFE_FOR_XML!==!1,ke=Se.WHOLE_DOCUMENT||!1,tt=Se.RETURN_DOM||!1,en=Se.RETURN_DOM_FRAGMENT||!1,it=Se.RETURN_TRUSTED_TYPE||!1,Ke=Se.FORCE_BODY||!1,nn=Se.SANITIZE_DOM!==!1,qt=Se.SANITIZE_NAMED_PROPS||!1,Si=Se.KEEP_CONTENT!==!1,gi=Se.IN_PLACE||!1,F=Se.ALLOWED_URI_REGEXP||vse,lt=Se.NAMESPACE||Fe,Jt=Se.MATHML_TEXT_INTEGRATION_POINTS||Jt,bn=Se.HTML_INTEGRATION_POINTS||bn,$=Se.CUSTOM_ELEMENT_HANDLING||{},Se.CUSTOM_ELEMENT_HANDLING&&Xo(Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&($.tagNameCheck=Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Se.CUSTOM_ELEMENT_HANDLING&&Xo(Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&($.attributeNameCheck=Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Se.CUSTOM_ELEMENT_HANDLING&&typeof Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&($.allowCustomizedBuiltInElements=Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),ve&&(fe=!1),en&&(tt=!0),Ft&&(H=Vi({},xse),Z=[],Ft.html===!0&&(Vi(H,Ise),Vi(Z,bse)),Ft.svg===!0&&(Vi(H,hW),Vi(Z,pW),Vi(Z,nz)),Ft.svgFilters===!0&&(Vi(H,mW),Vi(Z,pW),Vi(Z,nz)),Ft.mathMl===!0&&(Vi(H,AW),Vi(Z,Tse),Vi(Z,nz))),Se.ADD_TAGS&&(H===W&&(H=yp(H)),Vi(H,Se.ADD_TAGS,Wn)),Se.ADD_ATTR&&(Z===Y&&(Z=yp(Z)),Vi(Z,Se.ADD_ATTR,Wn)),Se.ADD_URI_SAFE_ATTR&&Vi(Ho,Se.ADD_URI_SAFE_ATTR,Wn),Se.FORBID_CONTENTS&&(St===oi&&(St=yp(St)),Vi(St,Se.FORBID_CONTENTS,Wn)),Si&&(H["#text"]=!0),ke&&Vi(H,["html","head","body"]),H.table&&(Vi(H,["tbody"]),delete X.tbody),Se.TRUSTED_TYPES_POLICY){if(typeof Se.TRUSTED_TYPES_POLICY.createHTML!="function")throw MR('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Se.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw MR('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');b=Se.TRUSTED_TYPES_POLICY,S=b.createHTML("")}else b===void 0&&(b=KFe(g,o)),b!==null&&typeof S=="string"&&(S=b.createHTML(""));_l&&_l(Se),bi=Se}},mo=Vi({},[...hW,...mW,...QFe]),Jo=Vi({},[...AW,...kFe]),Uf=function(Se){let wt=I(Se);(!wt||!wt.tagName)&&(wt={namespaceURI:lt,tagName:"template"});let _n=iz(Se.tagName),rr=iz(wt.tagName);return et[Se.namespaceURI]?Se.namespaceURI===Lr?wt.namespaceURI===Fe?_n==="svg":wt.namespaceURI===Er?_n==="svg"&&(rr==="annotation-xml"||Jt[rr]):!!mo[_n]:Se.namespaceURI===Er?wt.namespaceURI===Fe?_n==="math":wt.namespaceURI===Lr?_n==="math"&&bn[rr]:!!Jo[_n]:Se.namespaceURI===Fe?wt.namespaceURI===Lr&&!bn[rr]||wt.namespaceURI===Er&&!Jt[rr]?!1:!Jo[_n]&&(ho[_n]||!mo[_n]):!!(lo==="application/xhtml+xml"&&et[Se.namespaceURI]):!1},Ir=function(Se){PR(t.removed,{element:Se});try{I(Se).removeChild(Se)}catch{y(Se)}},Ps=function(Se,wt){try{PR(t.removed,{attribute:wt.getAttributeNode(Se),from:wt})}catch{PR(t.removed,{attribute:null,from:wt})}if(wt.removeAttribute(Se),Se==="is")if(tt||en)try{Ir(wt)}catch{}else try{wt.setAttribute(Se,"")}catch{}},Ws=function(Se){let wt=null,_n=null;if(Ke)Se="<remove></remove>"+Se;else{let Rs=Ese(Se,/^[\r\n\t ]+/);_n=Rs&&Rs[0]}lo==="application/xhtml+xml"&<===Fe&&(Se='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+Se+"</body></html>");let rr=b?b.createHTML(Se):Se;if(lt===Fe)try{wt=new A().parseFromString(rr,lo)}catch{}if(!wt||!wt.documentElement){wt=B.createDocument(lt,"template",null);try{wt.documentElement.innerHTML=Xe?S:rr}catch{}}let Ma=wt.body||wt.documentElement;return Se&&_n&&Ma.insertBefore(n.createTextNode(_n),Ma.childNodes[0]||null),lt===Fe?M.call(wt,ke?"html":"body")[0]:ke?wt.documentElement:Ma},eh=function(Se){return v.call(Se.ownerDocument||Se,Se,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT|u.SHOW_PROCESSING_INSTRUCTION|u.SHOW_CDATA_SECTION,null)},ps=function(Se){return Se instanceof h&&(typeof Se.nodeName!="string"||typeof Se.textContent!="string"||typeof Se.removeChild!="function"||!(Se.attributes instanceof f)||typeof Se.removeAttribute!="function"||typeof Se.setAttribute!="function"||typeof Se.namespaceURI!="string"||typeof Se.insertBefore!="function"||typeof Se.hasChildNodes!="function")},ic=function(Se){return typeof a=="function"&&Se instanceof a};function oc(un,Se,wt){tz(un,_n=>{_n.call(t,Se,wt,bi)})}let Or=function(Se){let wt=null;if(oc(p.beforeSanitizeElements,Se,null),ps(Se))return Ir(Se),!0;let _n=Wn(Se.nodeName);if(oc(p.uponSanitizeElement,Se,{tagName:_n,allowedTags:H}),Te&&Se.hasChildNodes()&&!ic(Se.firstElementChild)&&gl(/<[/\w!]/g,Se.innerHTML)&&gl(/<[/\w!]/g,Se.textContent)||Se.nodeType===LR.progressingInstruction||Te&&Se.nodeType===LR.comment&&gl(/<[/\w]/g,Se.data))return Ir(Se),!0;if(!H[_n]||X[_n]){if(!X[_n]&&Kl(_n)&&($.tagNameCheck instanceof RegExp&&gl($.tagNameCheck,_n)||$.tagNameCheck instanceof Function&&$.tagNameCheck(_n)))return!1;if(Si&&!St[_n]){let rr=I(Se)||Se.parentNode,Ma=E(Se)||Se.childNodes;if(Ma&&rr){let Rs=Ma.length;for(let bc=Rs-1;bc>=0;--bc){let th=_(Ma[bc],!0);th.__removalCount=(Se.__removalCount||0)+1,rr.insertBefore(th,C(Se))}}}return Ir(Se),!0}return Se instanceof c&&!Uf(Se)||(_n==="noscript"||_n==="noembed"||_n==="noframes")&&gl(/<\/no(script|embed|frames)/i,Se.innerHTML)?(Ir(Se),!0):(ve&&Se.nodeType===LR.text&&(wt=Se.textContent,tz([x,T,w],rr=>{wt=RR(wt,rr," ")}),Se.textContent!==wt&&(PR(t.removed,{element:Se.cloneNode()}),Se.textContent=wt)),oc(p.afterSanitizeElements,Se,null),!1)},ql=function(Se,wt,_n){if(nn&&(wt==="id"||wt==="name")&&(_n in n||_n in vs))return!1;if(!(fe&&!he[wt]&&gl(R,wt))){if(!(ge&&gl(O,wt))){if(!Z[wt]||he[wt]){if(!(Kl(Se)&&($.tagNameCheck instanceof RegExp&&gl($.tagNameCheck,Se)||$.tagNameCheck instanceof Function&&$.tagNameCheck(Se))&&($.attributeNameCheck instanceof RegExp&&gl($.attributeNameCheck,wt)||$.attributeNameCheck instanceof Function&&$.attributeNameCheck(wt))||wt==="is"&&$.allowCustomizedBuiltInElements&&($.tagNameCheck instanceof RegExp&&gl($.tagNameCheck,_n)||$.tagNameCheck instanceof Function&&$.tagNameCheck(_n))))return!1}else if(!Ho[wt]){if(!gl(F,RR(_n,Q,""))){if(!((wt==="src"||wt==="xlink:href"||wt==="href")&&Se!=="script"&&NFe(_n,"data:")===0&&Et[Se])){if(!(ye&&!gl(k,RR(_n,Q,"")))){if(_n)return!1}}}}}}return!0},Kl=function(Se){return Se!=="annotation-xml"&&Ese(Se,z)},ca=function(Se){oc(p.beforeSanitizeAttributes,Se,null);let{attributes:wt}=Se;if(!wt||ps(Se))return;let _n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Z,forceKeepAttr:void 0},rr=wt.length;for(;rr--;){let Ma=wt[rr],{name:Rs,namespaceURI:bc,value:th}=Ma,WA=Wn(Rs),aB=th,Na=Rs==="value"?aB:LFe(aB);if(_n.attrName=WA,_n.attrValue=Na,_n.keepAttr=!0,_n.forceKeepAttr=void 0,oc(p.uponSanitizeAttribute,Se,_n),Na=_n.attrValue,qt&&(WA==="id"||WA==="name")&&(Ps(Rs,Se),Na=Rt+Na),Te&&gl(/((--!?|])>)|<\/(style|title)/i,Na)){Ps(Rs,Se);continue}if(_n.forceKeepAttr)continue;if(!_n.keepAttr){Ps(Rs,Se);continue}if(!xe&&gl(/\/>/i,Na)){Ps(Rs,Se);continue}ve&&tz([x,T,w],GU=>{Na=RR(Na,GU," ")});let UU=Wn(Se.nodeName);if(!ql(UU,WA,Na)){Ps(Rs,Se);continue}if(b&&typeof g=="object"&&typeof g.getAttributeType=="function"&&!bc)switch(g.getAttributeType(UU,WA)){case"TrustedHTML":{Na=b.createHTML(Na);break}case"TrustedScriptURL":{Na=b.createScriptURL(Na);break}}if(Na!==aB)try{bc?Se.setAttributeNS(bc,Rs,Na):Se.setAttribute(Rs,Na),ps(Se)?Ir(Se):Cse(t.removed)}catch{Ps(Rs,Se)}}oc(p.afterSanitizeAttributes,Se,null)},vo=function un(Se){let wt=null,_n=eh(Se);for(oc(p.beforeSanitizeShadowDOM,Se,null);wt=_n.nextNode();)oc(p.uponSanitizeShadowNode,wt,null),Or(wt),ca(wt),wt.content instanceof r&&un(wt.content);oc(p.afterSanitizeShadowDOM,Se,null)};return t.sanitize=function(un){let Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},wt=null,_n=null,rr=null,Ma=null;if(Xe=!un,Xe&&(un="<!-->"),typeof un!="string"&&!ic(un))if(typeof un.toString=="function"){if(un=un.toString(),typeof un!="string")throw MR("dirty is not a string, aborting")}else throw MR("toString is not a function");if(!t.isSupported)return un;if(Ge||Ra(Se),t.removed=[],typeof un=="string"&&(gi=!1),gi){if(un.nodeName){let th=Wn(un.nodeName);if(!H[th]||X[th])throw MR("root node is forbidden and cannot be sanitized in-place")}}else if(un instanceof a)wt=Ws("<!---->"),_n=wt.ownerDocument.importNode(un,!0),_n.nodeType===LR.element&&_n.nodeName==="BODY"||_n.nodeName==="HTML"?wt=_n:wt.appendChild(_n);else{if(!tt&&!ve&&!ke&&un.indexOf("<")===-1)return b&&it?b.createHTML(un):un;if(wt=Ws(un),!wt)return tt?null:it?S:""}wt&&Ke&&Ir(wt.firstChild);let Rs=eh(gi?un:wt);for(;rr=Rs.nextNode();)Or(rr),ca(rr),rr.content instanceof r&&vo(rr.content);if(gi)return un;if(tt){if(en)for(Ma=P.call(wt.ownerDocument);wt.firstChild;)Ma.appendChild(wt.firstChild);else Ma=wt;return(Z.shadowroot||Z.shadowrootmode)&&(Ma=L.call(i,Ma,!0)),Ma}let bc=ke?wt.outerHTML:wt.innerHTML;return ke&&H["!doctype"]&&wt.ownerDocument&&wt.ownerDocument.doctype&&wt.ownerDocument.doctype.name&&gl(Pse,wt.ownerDocument.doctype.name)&&(bc="<!DOCTYPE "+wt.ownerDocument.doctype.name+`> +`+bc),ve&&tz([x,T,w],th=>{bc=RR(bc,th," ")}),b&&it?b.createHTML(bc):bc},t.setConfig=function(){let un=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ra(un),Ge=!0},t.clearConfig=function(){bi=null,Ge=!1},t.isValidAttribute=function(un,Se,wt){bi||Ra({});let _n=Wn(un),rr=Wn(Se);return ql(_n,rr,wt)},t.addHook=function(un,Se){typeof Se=="function"&&PR(p[un],Se)},t.removeHook=function(un,Se){if(Se!==void 0){let wt=RFe(p[un],Se);return wt===-1?void 0:MFe(p[un],wt,1)[0]}return Cse(p[un])},t.removeHooks=function(un){p[un]=[]},t.removeAllHooks=function(){p=wse()},t}var Mse=Rse();var XFe=0,yW={};function zm(e,t){let n,i=e;l(yW[i])?n=yW[i]:(n=XFe++,yW[i]=n),t=t??!1,this._id=n,this._html=e,this._showOnScreen=t,this._element=void 0}Object.defineProperties(zm.prototype,{html:{get:function(){return this._html}},id:{get:function(){return this._id}},showOnScreen:{get:function(){return this._showOnScreen},set:function(e){this._showOnScreen=e}},element:{get:function(){if(!l(this._element)){let e=Mse.sanitize(this._html),t=document.createElement("div");t.className="cesium-credit-wrapper",t._creditId=this._id,t.style.display="inline",t.innerHTML=e;let n=t.querySelectorAll("a");for(let i=0;i<n.length;i++)n[i].setAttribute("target","_blank");this._element=t}return this._element}}});zm.equals=function(e,t){return e===t||l(e)&&l(t)&&e._id===t._id&&e._showOnScreen===t._showOnScreen};zm.prototype.equals=function(e){return zm.equals(this,e)};zm.prototype.isIon=function(){return this.html.indexOf("ion-credit.png")!==-1};zm.getIonCredit=function(e){let t=l(e.collapsible)&&!e.collapsible;return new zm(e.html,t)};zm.clone=function(e){if(l(e))return new zm(e.html,e.showOnScreen)};var Bt=zm;function JFe(e,t){yt(e,t)}var Tr=JFe;function BE(e){this._url=e,this._cubeMapBuffers=void 0,this._texture=void 0,this._maximumMipmapLevel=void 0,this._loading=!1,this._ready=!1,this._errorEvent=new _e}Object.defineProperties(BE.prototype,{url:{get:function(){return this._url}},errorEvent:{get:function(){return this._errorEvent}},texture:{get:function(){return this._texture}},maximumMipmapLevel:{get:function(){return this._maximumMipmapLevel}},ready:{get:function(){return this._ready}}});BE.isSupported=function(e){return(e.colorBufferHalfFloat&&e.halfFloatingPointTexture||e.floatingPointTexture&&e.colorBufferFloat)&&e.supportsTextureLod};function CW(e){e._cubeMapBuffers=void 0}BE.prototype.update=function(e){let{context:t}=e;if(!BE.isSupported(t))return;if(l(this._texture)){CW(this);return}if(!l(this._texture)&&!this._loading){let f=t.textureCache.getTexture(this._url);l(f)&&(CW(this),this._texture=f,this._maximumMipmapLevel=this._texture.maximumMipmapLevel,this._ready=!0)}let n=this._cubeMapBuffers;if(!l(n)&&!this._loading){let f=this;$l(this._url).then(function(h){f._cubeMapBuffers=h,f._loading=!1}).catch(function(h){f.isDestroyed()||f._errorEvent.raiseEvent(h)}),this._loading=!0}if(!l(this._cubeMapBuffers))return;let{pixelDatatype:i}=n[0].positiveX;l(i)||(i=t.halfFloatingPointTexture?Ve.HALF_FLOAT:Ve.FLOAT);let o=$e.RGBA,r=n.length;this._maximumMipmapLevel=r-1;let s=n[0].positiveX.width,a=Math.log2(s)+1;if(r!==a){let f={};Object.values(kr.FaceName).forEach(h=>{f[h]=void 0});for(let h=r;h<a;h++)n.push(f)}let c=new on({minificationFilter:Zt.LINEAR_MIPMAP_LINEAR}),u=new kr({context:t,source:n[0],flipY:!1,pixelDatatype:i,pixelFormat:o,sampler:c});u.loadMipmaps(n.slice(1)),this._texture=u,this._texture.maximumMipmapLevel=this._maximumMipmapLevel,t.textureCache.addTexture(this._url,this._texture),this._ready=!0};BE.prototype.isDestroyed=function(){return!1};BE.prototype.destroy=function(){return CW(this),this._texture=this._texture&&this._texture.destroy(),ue(this)};var Ch=BE;function OR(e){e=e??V.EMPTY_OBJECT;let t=l(e.imageBasedLightingFactor)?U.clone(e.imageBasedLightingFactor):new U(1,1);this._imageBasedLightingFactor=t;let n=e.sphericalHarmonicCoefficients;this._sphericalHarmonicCoefficients=n,this._specularEnvironmentMaps=e.specularEnvironmentMaps,this._specularEnvironmentCubeMap=void 0,this._specularEnvironmentCubeMapDirty=!0,this._specularEnvironmentMapLoaded=!1,this._previousSpecularEnvironmentMapLoaded=!1,this._useDefaultSpecularMaps=!1,this._useDefaultSphericalHarmonics=!1,this._shouldRegenerateShaders=!1,this._previousFrameNumber=void 0,this._previousFrameContext=void 0,this._previousImageBasedLightingFactor=U.clone(t),this._previousSphericalHarmonicCoefficients=n,this._removeErrorListener=void 0}Object.defineProperties(OR.prototype,{imageBasedLightingFactor:{get:function(){return this._imageBasedLightingFactor},set:function(e){this._previousImageBasedLightingFactor=U.clone(this._imageBasedLightingFactor,this._previousImageBasedLightingFactor),this._imageBasedLightingFactor=U.clone(e,this._imageBasedLightingFactor)}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients},set:function(e){this._previousSphericalHarmonicCoefficients=this._sphericalHarmonicCoefficients,this._sphericalHarmonicCoefficients=e}},specularEnvironmentMaps:{get:function(){return this._specularEnvironmentMaps},set:function(e){e!==this._specularEnvironmentMaps&&(this._specularEnvironmentCubeMapDirty=this._specularEnvironmentCubeMapDirty||e!==this._specularEnvironmentMaps,this._specularEnvironmentMapLoaded=!1),this._specularEnvironmentMaps=e}},enabled:{get:function(){return this._imageBasedLightingFactor.x>0||this._imageBasedLightingFactor.y>0}},shouldRegenerateShaders:{get:function(){return this._shouldRegenerateShaders}},specularEnvironmentCubeMap:{get:function(){return this._specularEnvironmentCubeMap}},useDefaultSphericalHarmonics:{get:function(){return this._useDefaultSphericalHarmonics}},useDefaultSpecularMaps:{get:function(){return this._useDefaultSpecularMaps}},useSpecularEnvironmentMaps:{get:function(){return l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.ready||this._useDefaultSpecularMaps}}});function ZFe(e,t){if(Ch.isSupported(t)){if(e._specularEnvironmentCubeMap=e._specularEnvironmentCubeMap&&e._specularEnvironmentCubeMap.destroy(),l(e._specularEnvironmentMaps)){let n=new Ch(e._specularEnvironmentMaps);e._specularEnvironmentCubeMap=n,e._removeErrorListener=n.errorEvent.addEventListener(i=>{console.error(`Error loading specularEnvironmentMaps: ${i}`)})}e._shouldRegenerateShaders=!0}}OR.prototype.update=function(e){if(e.frameNumber===this._previousFrameNumber&&e.context===this._previousFrameContext)return;this._previousFrameNumber=e.frameNumber;let t=this._previousFrameContext=e.context;e.brdfLutGenerator.update(e),this._shouldRegenerateShaders=!1;let n=this._imageBasedLightingFactor,i=this._previousImageBasedLightingFactor;U.equals(n,i)||(this._shouldRegenerateShaders=n.x>0&&i.x===0||n.x===0&&i.x>0,this._shouldRegenerateShaders=this._shouldRegenerateShaders||n.y>0&&i.y===0||n.y===0&&i.y>0,this._previousImageBasedLightingFactor=U.clone(this._imageBasedLightingFactor,this._previousImageBasedLightingFactor)),this._previousSphericalHarmonicCoefficients!==this._sphericalHarmonicCoefficients&&(this._shouldRegenerateShaders=this._shouldRegenerateShaders||l(this._previousSphericalHarmonicCoefficients)!==l(this._sphericalHarmonicCoefficients),this._previousSphericalHarmonicCoefficients=this._sphericalHarmonicCoefficients),this._shouldRegenerateShaders=this._shouldRegenerateShaders||this._previousSpecularEnvironmentMapLoaded!==this._specularEnvironmentMapLoaded,this._previousSpecularEnvironmentMapLoaded=this._specularEnvironmentMapLoaded,this._specularEnvironmentCubeMapDirty&&(ZFe(this,t),this._specularEnvironmentCubeMapDirty=!1),l(this._specularEnvironmentCubeMap)&&(this._specularEnvironmentCubeMap.update(e),this._specularEnvironmentCubeMap.ready&&(this._specularEnvironmentMapLoaded=!0));let o=!l(this._specularEnvironmentCubeMap)&&l(e.specularEnvironmentMaps)&&!this._useDefaultSpecularMaps,r=!l(e.specularEnvironmentMaps)&&this._useDefaultSpecularMaps,s=!l(this._sphericalHarmonicCoefficients)&&l(e.sphericalHarmonicCoefficients)&&!this._useDefaultSphericalHarmonics,a=!l(e.sphericalHarmonicCoefficients)&&this._useDefaultSphericalHarmonics;this._shouldRegenerateShaders=this._shouldRegenerateShaders||o||r||s||a,this._useDefaultSpecularMaps=!l(this._specularEnvironmentCubeMap)&&l(e.specularEnvironmentMaps),this._useDefaultSphericalHarmonics=!l(this._sphericalHarmonicCoefficients)&&l(e.sphericalHarmonicCoefficients)};OR.prototype.isDestroyed=function(){return!1};OR.prototype.destroy=function(){return this._specularEnvironmentCubeMap=this._specularEnvironmentCubeMap&&this._specularEnvironmentCubeMap.destroy(),this._removeErrorListener=this._removeErrorListener&&this._removeErrorListener(),ue(this)};var DE=OR;var IW=xr(Ou(),1);var EW,Nse="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJhNzg4MTAwYi1kMTg5LTRjNDItYTVlMi0wOTlhNGM0NTc5Y2YiLCJpZCI6MjU5LCJpYXQiOjE3NTQwNjAzNjJ9.5ei_XzXku4PefU_uHUlbhQnPS1sbv-BHo28oU2fj0Ig",oz={};oz.defaultAccessToken=Nse;oz.defaultServer=new we({url:"https://api.cesium.com/"});oz.getDefaultTokenCredit=function(e){if(e===Nse){if(!l(EW)){let t=`<b> This application is using Cesium's default ion access token. Please assign <i>Cesium.Ion.defaultAccessToken</i> with an access token from your ion account before making any Cesium API calls. You can sign up for a free ion account at <a href="https://cesium.com">https://cesium.com</a>.</b>`;EW=new Bt(t,!0)}return EW}};var Eh=oz;function Cl(e,t){let n,i=e.externalType,o=l(i);if(!o)n={url:e.url,retryAttempts:1,retryCallback:$Fe};else if(i==="3DTILES"||i==="STK_TERRAIN_SERVER")n={url:e.options.url};else throw new ce("Ion.createResource does not support external imagery assets; use IonImageryProvider instead.");we.call(this,n),this._ionEndpoint=e,this._ionEndpointDomain=o?void 0:new IW.default(e.url).authority(),this._ionEndpointResource=t,this._ionRoot=void 0,this._pendingPromise=void 0,this._credits=void 0,this._isExternal=o}l(Object.create)&&(Cl.prototype=Object.create(we.prototype),Cl.prototype.constructor=Cl);Cl.fromAssetId=function(e,t){let n=Cl._createEndpointResource(e,t);return n.fetchJson().then(function(i){return new Cl(i,n)})};Object.defineProperties(Cl.prototype,{credits:{get:function(){return l(this._ionRoot)?this._ionRoot.credits:l(this._credits)?this._credits:(this._credits=Cl.getCreditsFromEndpoint(this._ionEndpoint,this._ionEndpointResource),this._credits)}}});Cl.getCreditsFromEndpoint=function(e,t){let n=e.attributions.map(Bt.getIonCredit),i=Eh.getDefaultTokenCredit(t.queryParameters.access_token);return l(i)&&n.push(Bt.clone(i)),n};Cl.prototype.clone=function(e){let t=this._ionRoot??this;return l(e)||(e=new Cl(t._ionEndpoint,t._ionEndpointResource)),e=we.prototype.clone.call(this,e),e._ionRoot=t,e._isExternal=this._isExternal,e};Cl.prototype.fetchImage=function(e){if(!this._isExternal){let t=e;e={preferBlob:!0},l(t)&&(e.flipY=t.flipY,e.preferImageBitmap=t.preferImageBitmap)}return we.prototype.fetchImage.call(this,e)};Cl.prototype._makeRequest=function(e){return this._isExternal||new IW.default(this.url).authority()!==this._ionEndpointDomain?we.prototype._makeRequest.call(this,e):(l(e.headers)||(e.headers={}),e.headers.Authorization=`Bearer ${this._ionEndpoint.accessToken}`,e.headers["X-Cesium-Client"]="CesiumJS",typeof CESIUM_VERSION<"u"&&(e.headers["X-Cesium-Client-Version"]=CESIUM_VERSION),we.prototype._makeRequest.call(this,e))};Cl._createEndpointResource=function(e,t){t=t??V.EMPTY_OBJECT;let n=t.server??Eh.defaultServer,i=t.accessToken??Eh.defaultAccessToken;n=we.createIfNeeded(n);let o={url:`v1/assets/${e}/endpoint`};return l(i)&&(o.queryParameters={access_token:i}),n.getDerivedResource(o)};function $Fe(e,t){let n=e._ionRoot??e,i=n._ionEndpointResource,o=typeof Image<"u";return!l(t)||t.statusCode!==401&&!(o&&t.target instanceof Image)?Promise.resolve(!1):(l(n._pendingPromise)||(n._pendingPromise=i.fetchJson().then(function(r){return n._ionEndpoint=r,r}).finally(function(r){return n._pendingPromise=void 0,r})),n._pendingPromise.then(function(r){return e._ionEndpoint=r,!0}))}var Hu=Cl;function Vm(e){e=e??0,this._array=new Array(e),this._length=e}Object.defineProperties(Vm.prototype,{length:{get:function(){return this._length},set:function(e){let t=this._array,n=this._length;if(e<n)for(let i=e;i<n;++i)t[i]=void 0;else e>t.length&&(t.length=e);this._length=e}},values:{get:function(){return this._array}}});Vm.prototype.get=function(e){return this._array[e]};Vm.prototype.set=function(e,t){e>=this._length&&(this.length=e+1),this._array[e]=t};Vm.prototype.peek=function(){return this._array[this._length-1]};Vm.prototype.push=function(e){let t=this.length++;this._array[t]=e};Vm.prototype.pop=function(){if(this._length===0)return;let e=this._array[this._length-1];return--this.length,e};Vm.prototype.reserve=function(e){e>this._array.length&&(this._array.length=e)};Vm.prototype.resize=function(e){this.length=e};Vm.prototype.trim=function(e){e=e??this._length,this._array.length=e};var El=Vm;function rz(e){e=e??V.EMPTY_OBJECT,this.color=e.color,this.depth=e.depth,this.stencil=e.stencil,this.renderState=e.renderState,this.framebuffer=e.framebuffer,this.owner=e.owner,this.pass=e.pass}rz.ALL=Object.freeze(new rz({color:new G(0,0,0,0),depth:1,stencil:0}));rz.prototype.execute=function(e,t){e.clear(this,t)};var Ci=rz;var Cp={X:0,Y:1,Z:2};Cp.Y_UP_TO_Z_UP=N.fromRotationTranslation(J.fromArray([1,0,0,0,0,1,0,-1,0]));Cp.Z_UP_TO_Y_UP=N.fromRotationTranslation(J.fromArray([1,0,0,0,0,-1,0,1,0]));Cp.X_UP_TO_Z_UP=N.fromRotationTranslation(J.fromArray([0,0,1,0,1,0,-1,0,0]));Cp.Z_UP_TO_X_UP=N.fromRotationTranslation(J.fromArray([0,0,-1,0,1,0,1,0,0]));Cp.X_UP_TO_Y_UP=N.fromRotationTranslation(J.fromArray([0,1,0,-1,0,0,0,0,1]));Cp.Y_UP_TO_X_UP=N.fromRotationTranslation(J.fromArray([0,-1,0,1,0,0,0,0,1]));Cp.fromName=function(e){return Cp[e]};var fo=Object.freeze(Cp);function ed(e){this.planes=e??[]}var FR=[new d,new d,new d];d.clone(d.UNIT_X,FR[0]);d.clone(d.UNIT_Y,FR[1]);d.clone(d.UNIT_Z,FR[2]);var M_=new d,e2e=new d,Lse=new mn(new d(1,0,0),0);ed.fromBoundingSphere=function(e,t){l(t)||(t=new ed);let n=FR.length,i=t.planes;i.length=2*n;let o=e.center,r=e.radius,s=0;for(let a=0;a<n;++a){let c=FR[a],u=i[s],f=i[s+1];l(u)||(u=i[s]=new se),l(f)||(f=i[s+1]=new se),d.multiplyByScalar(c,-r,M_),d.add(o,M_,M_),u.x=c.x,u.y=c.y,u.z=c.z,u.w=-d.dot(c,M_),d.multiplyByScalar(c,r,M_),d.add(o,M_,M_),f.x=-c.x,f.y=-c.y,f.z=-c.z,f.w=-d.dot(d.negate(c,e2e),M_),s+=2}return t};ed.prototype.computeVisibility=function(e){let t=this.planes,n=!1;for(let i=0,o=t.length;i<o;++i){let r=e.intersectPlane(mn.fromCartesian4(t[i],Lse));if(r===tn.OUTSIDE)return tn.OUTSIDE;r===tn.INTERSECTING&&(n=!0)}return n?tn.INTERSECTING:tn.INSIDE};ed.prototype.computeVisibilityWithPlaneMask=function(e,t){if(t===ed.MASK_OUTSIDE||t===ed.MASK_INSIDE)return t;let n=ed.MASK_INSIDE,i=this.planes;for(let o=0,r=i.length;o<r;++o){let s=o<31?1<<o:0;if(o<31&&(t&s)===0)continue;let a=e.intersectPlane(mn.fromCartesian4(i[o],Lse));if(a===tn.OUTSIDE)return ed.MASK_OUTSIDE;a===tn.INTERSECTING&&(n|=s)}return n};ed.MASK_OUTSIDE=4294967295;ed.MASK_INSIDE=0;ed.MASK_INDETERMINATE=2147483647;var Os=ed;function Hm(e){e=e??V.EMPTY_OBJECT,this.left=e.left,this._left=void 0,this.right=e.right,this._right=void 0,this.top=e.top,this._top=void 0,this.bottom=e.bottom,this._bottom=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this._cullingVolume=new Os,this._orthographicMatrix=new N}function Ose(e){(e.top!==e._top||e.bottom!==e._bottom||e.left!==e._left||e.right!==e._right||e.near!==e._near||e.far!==e._far)&&(e._left=e.left,e._right=e.right,e._top=e.top,e._bottom=e.bottom,e._near=e.near,e._far=e.far,e._orthographicMatrix=N.computeOrthographicOffCenter(e.left,e.right,e.bottom,e.top,e.near,e.far,e._orthographicMatrix))}Object.defineProperties(Hm.prototype,{projectionMatrix:{get:function(){return Ose(this),this._orthographicMatrix}}});var t2e=new d,n2e=new d,i2e=new d,xW=new d;Hm.prototype.computeCullingVolume=function(e,t,n){let i=this._cullingVolume.planes,o=this.top,r=this.bottom,s=this.right,a=this.left,c=this.near,u=this.far,f=d.cross(t,n,t2e);d.normalize(f,f);let h=n2e;d.multiplyByScalar(t,c,h),d.add(e,h,h);let A=i2e;d.multiplyByScalar(f,a,A),d.add(h,A,A);let g=i[0];return l(g)||(g=i[0]=new se),g.x=f.x,g.y=f.y,g.z=f.z,g.w=-d.dot(f,A),d.multiplyByScalar(f,s,A),d.add(h,A,A),g=i[1],l(g)||(g=i[1]=new se),g.x=-f.x,g.y=-f.y,g.z=-f.z,g.w=-d.dot(d.negate(f,xW),A),d.multiplyByScalar(n,r,A),d.add(h,A,A),g=i[2],l(g)||(g=i[2]=new se),g.x=n.x,g.y=n.y,g.z=n.z,g.w=-d.dot(n,A),d.multiplyByScalar(n,o,A),d.add(h,A,A),g=i[3],l(g)||(g=i[3]=new se),g.x=-n.x,g.y=-n.y,g.z=-n.z,g.w=-d.dot(d.negate(n,xW),A),g=i[4],l(g)||(g=i[4]=new se),g.x=t.x,g.y=t.y,g.z=t.z,g.w=-d.dot(t,h),d.multiplyByScalar(t,u,A),d.add(e,A,A),g=i[5],l(g)||(g=i[5]=new se),g.x=-t.x,g.y=-t.y,g.z=-t.z,g.w=-d.dot(d.negate(t,xW),A),this._cullingVolume};Hm.prototype.getPixelDimensions=function(e,t,n,i,o){Ose(this);let r=this.right-this.left,s=this.top-this.bottom,a=i*r/e,c=i*s/t;return o.x=a,o.y=c,o};Hm.prototype.clone=function(e){return l(e)||(e=new Hm),e.left=this.left,e.right=this.right,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e._left=void 0,e._right=void 0,e._top=void 0,e._bottom=void 0,e._near=void 0,e._far=void 0,e};Hm.prototype.equals=function(e){return l(e)&&e instanceof Hm&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far};Hm.prototype.equalsEpsilon=function(e,t,n){return e===this||l(e)&&e instanceof Hm&&D.equalsEpsilon(this.right,e.right,t,n)&&D.equalsEpsilon(this.left,e.left,t,n)&&D.equalsEpsilon(this.top,e.top,t,n)&&D.equalsEpsilon(this.bottom,e.bottom,t,n)&&D.equalsEpsilon(this.near,e.near,t,n)&&D.equalsEpsilon(this.far,e.far,t,n)};var es=Hm;function nu(e){e=e??V.EMPTY_OBJECT,this._offCenterFrustum=new es,this.width=e.width,this._width=void 0,this.aspectRatio=e.aspectRatio,this._aspectRatio=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far}nu.packedLength=4;nu.pack=function(e,t,n){return n=n??0,t[n++]=e.width,t[n++]=e.aspectRatio,t[n++]=e.near,t[n]=e.far,t};nu.unpack=function(e,t,n){return t=t??0,l(n)||(n=new nu),n.width=e[t++],n.aspectRatio=e[t++],n.near=e[t++],n.far=e[t],n};function N_(e){let t=e._offCenterFrustum;if(e.width!==e._width||e.aspectRatio!==e._aspectRatio||e.near!==e._near||e.far!==e._far){e._aspectRatio=e.aspectRatio,e._width=e.width,e._near=e.near,e._far=e.far;let n=1/e.aspectRatio;t.right=e.width*.5,t.left=-t.right,t.top=n*t.right,t.bottom=-t.top,t.near=e.near,t.far=e.far}}Object.defineProperties(nu.prototype,{projectionMatrix:{get:function(){return N_(this),this._offCenterFrustum.projectionMatrix}},offCenterFrustum:{get:function(){return N_(this),this._offCenterFrustum}}});nu.prototype.computeCullingVolume=function(e,t,n){return N_(this),this._offCenterFrustum.computeCullingVolume(e,t,n)};nu.prototype.getPixelDimensions=function(e,t,n,i,o){return N_(this),this._offCenterFrustum.getPixelDimensions(e,t,n,i,o)};nu.prototype.clone=function(e){return l(e)||(e=new nu),e.aspectRatio=this.aspectRatio,e.width=this.width,e.near=this.near,e.far=this.far,e._aspectRatio=void 0,e._width=void 0,e._near=void 0,e._far=void 0,this._offCenterFrustum.clone(e._offCenterFrustum),e};nu.prototype.equals=function(e){return!l(e)||!(e instanceof nu)?!1:(N_(this),N_(e),this.width===e.width&&this.aspectRatio===e.aspectRatio&&this._offCenterFrustum.equals(e._offCenterFrustum))};nu.prototype.equalsEpsilon=function(e,t,n){return!l(e)||!(e instanceof nu)?!1:(N_(this),N_(e),D.equalsEpsilon(this.width,e.width,t,n)&&D.equalsEpsilon(this.aspectRatio,e.aspectRatio,t,n)&&this._offCenterFrustum.equalsEpsilon(e._offCenterFrustum,t,n))};var An=nu;function Fse(e){e=e??V.EMPTY_OBJECT,this._metadata=e.metadata}Object.defineProperties(Fse.prototype,{metadata:{get:function(){return this._metadata}}});var vE=Fse;function L_(e,t,n){return t=t??0,n=n??e.byteLength-t,e=e.subarray(t,t+n),L_.decode(e)}L_.decodeWithTextDecoder=function(e){return new TextDecoder("utf-8").decode(e)};L_.decodeWithFromCharCode=function(e){let t="",n=o2e(e),i=n.length;for(let o=0;o<i;++o){let r=n[o];r<=65535?t+=String.fromCharCode(r):(r-=65536,t+=String.fromCharCode((r>>10)+55296,(r&1023)+56320))}return t};function QR(e,t,n){return t<=e&&e<=n}function o2e(e){let t=0,n=0,i=0,o=128,r=191,s=[],a=e.length;for(let c=0;c<a;++c){let u=e[c];if(i===0){if(QR(u,0,127)){s.push(u);continue}if(QR(u,194,223)){i=1,t=u&31;continue}if(QR(u,224,239)){u===224&&(o=160),u===237&&(r=159),i=2,t=u&15;continue}if(QR(u,240,244)){u===240&&(o=144),u===244&&(r=143),i=3,t=u&7;continue}throw new ce("String decoding failed.")}if(!QR(u,o,r)){t=i=n=0,o=128,r=191,--c;continue}o=128,r=191,t=t<<6|u&63,++n,n===i&&(s.push(t),t=i=n=0)}return s}typeof TextDecoder<"u"?L_.decode=L_.decodeWithTextDecoder:L_.decode=L_.decodeWithFromCharCode;var iu=L_;function r2e(e,t){return t=t??0,iu(e,t,Math.min(4,e.length))}var Ih=r2e;function td(e,t,n,i){this._tileset=e,this._tile=t,this._resource=n,l(i)||(i=[]),this._contents=i,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(td.prototype,{featurePropertiesDirty:{get:function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)if(e[n].featurePropertiesDirty)return!0;return!1},set:function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].featurePropertiesDirty=e}},featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){return this._contents}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e;let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].metadata=e}},batchTable:{get:function(){}},group:{get:function(){return this._group},set:function(e){this._group=e;let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].group=e}}});var kR=Uint32Array.BYTES_PER_ELEMENT;td.fromTileType=async function(e,t,n,i,o,r){o=o??0;let s=new Uint8Array(i),a=new DataView(i);o+=kR;let c=a.getUint32(o,!0);if(c!==1)throw new ce(`Only Composite Tile version 1 is supported. Version ${c} is not.`);o+=kR,o+=kR;let u=a.getUint32(o,!0);o+=kR;let f=n.queryParameters.compositeIndex;l(f)?f=`${f}_`:f="";let h=[];h.length=u;for(let m=0;m<u;++m){let _=Ih(s,o),y=a.getUint32(o+kR*2,!0),C=r[_],E=`${f}${m}`,I=n.getDerivedResource({queryParameters:{compositeIndex:E}});if(l(C))h[m]=Promise.resolve(C(e,t,I,i,o));else throw new ce(`Unknown tile content type, ${_}, inside Composite tile`);o+=y}let A=await Promise.all(h);return new td(e,t,n,A)};td.prototype.hasProperty=function(e,t){return!1};td.prototype.getFeature=function(e){};td.prototype.applyDebugSettings=function(e,t){let n=this._contents,i=n.length;for(let o=0;o<i;++o)n[o].applyDebugSettings(e,t)};td.prototype.applyStyle=function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].applyStyle(e)};td.prototype.update=function(e,t){let n=this._contents,i=n.length,o=!0;for(let r=0;r<i;++r)n[r].update(e,t),o=o&&n[r].ready;!this._ready&&o&&(this._ready=!0)};td.prototype.pick=function(e,t,n){if(!this._ready)return;let i,o=Number.POSITIVE_INFINITY,r=this._contents,s=r.length;for(let a=0;a<s;++a){let c=r[a].pick(e,t,n);if(!l(c))continue;let u=d.distance(e.origin,c);u<o&&(i=c,o=u)}if(l(i))return n};td.prototype.isDestroyed=function(){return!1};td.prototype.destroy=function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var UR=td;function s2e(e,t,n){return JSON.parse(iu(e,t,n))}var dr=s2e;function Nc(e){this._id=Xn();let t=e.featuresLength;this._showAlphaProperties=void 0,this._batchValues=void 0,this._batchValuesDirty=!1,this._batchTexture=void 0,this._defaultTexture=void 0,this._pickTexture=void 0,this._pickIds=[];let n,i;if(t>0){let o=Math.min(t,Yt.maximumTextureSize),r=Math.ceil(t/Yt.maximumTextureSize),s=1/o,a=s*.5,c=1/r,u=c*.5;n=new U(o,r),i=new se(s,a,c,u)}this._translucentFeaturesLength=0,this._featuresLength=t,this._textureDimensions=n,this._textureStep=i,this._owner=e.owner,this._statistics=e.statistics,this._colorChangedCallback=e.colorChangedCallback}Object.defineProperties(Nc.prototype,{translucentFeaturesLength:{get:function(){return this._translucentFeaturesLength}},byteLength:{get:function(){let e=0;return l(this._pickTexture)&&(e+=this._pickTexture.sizeInBytes),l(this._batchTexture)&&(e+=this._batchTexture.sizeInBytes),e}},textureDimensions:{get:function(){return this._textureDimensions}},textureStep:{get:function(){return this._textureStep}},batchTexture:{get:function(){return this._batchTexture}},defaultTexture:{get:function(){return this._defaultTexture}},pickTexture:{get:function(){return this._pickTexture}}});Nc.DEFAULT_COLOR_VALUE=G.WHITE;Nc.DEFAULT_SHOW_VALUE=!0;function Qse(e){let t=e._textureDimensions;return t.x*t.y*4}function kse(e){if(!l(e._batchValues)){let t=Qse(e),n=new Uint8Array(t).fill(255);e._batchValues=n}return e._batchValues}function Use(e){if(!l(e._showAlphaProperties)){let t=2*e._featuresLength,n=new Uint8Array(t).fill(255);e._showAlphaProperties=n}return e._showAlphaProperties}Nc.prototype.setShow=function(e,t){if(t&&!l(this._showAlphaProperties))return;let n=Use(this),i=e*2,o=t?255:0;if(n[i]!==o){n[i]=o;let r=kse(this),s=e*4+3;r[s]=t?n[i+1]:0,this._batchValuesDirty=!0}};Nc.prototype.setAllShow=function(e){let t=this._featuresLength;for(let n=0;n<t;++n)this.setShow(n,e)};Nc.prototype.getShow=function(e){if(!l(this._showAlphaProperties))return!0;let t=e*2;return this._showAlphaProperties[t]===255};var a2e=new Array(4);Nc.prototype.setColor=function(e,t){if(G.equals(t,Nc.DEFAULT_COLOR_VALUE)&&!l(this._batchValues))return;let n=t.toBytes(a2e),i=n[3],o=kse(this),r=e*4,s=Use(this),a=e*2;if(o[r]!==n[0]||o[r+1]!==n[1]||o[r+2]!==n[2]||s[a+1]!==i){o[r]=n[0],o[r+1]=n[1],o[r+2]=n[2];let c=s[a+1]!==255,u=s[a]!==0;o[r+3]=u?i:0,s[a+1]=i;let f=i!==255;f&&!c?++this._translucentFeaturesLength:!f&&c&&--this._translucentFeaturesLength,this._batchValuesDirty=!0,l(this._colorChangedCallback)&&this._colorChangedCallback(e,t)}};Nc.prototype.setAllColor=function(e){let t=this._featuresLength;for(let n=0;n<t;++n)this.setColor(n,e)};Nc.prototype.getColor=function(e,t){if(!l(this._batchValues))return G.clone(Nc.DEFAULT_COLOR_VALUE,t);let n=this._batchValues,i=e*4,o=this._showAlphaProperties,r=e*2;return G.fromBytes(n[i],n[i+1],n[i+2],o[r+1],t)};Nc.prototype.getPickColor=function(e){return this._pickIds[e]};function Gse(e,t,n){let i=e._textureDimensions;return new Mt({context:t,pixelFormat:$e.RGBA,pixelDatatype:Ve.UNSIGNED_BYTE,source:{width:i.x,height:i.y,arrayBufferView:n},flipY:!1,sampler:on.NEAREST})}function c2e(e,t){let n=e._featuresLength;if(!l(e._pickTexture)&&n>0){let i=e._pickIds,o=Qse(e),r=new Uint8Array(o),s=e._owner,a=e._statistics;for(let c=0;c<n;++c){let u=t.createPickId(s.getFeature(c));i.push(u);let f=u.color,h=c*4;r[h]=G.floatToByte(f.red),r[h+1]=G.floatToByte(f.green),r[h+2]=G.floatToByte(f.blue),r[h+3]=G.floatToByte(f.alpha)}e._pickTexture=Gse(e,t,r),l(a)&&(a.batchTableByteLength+=e._pickTexture.sizeInBytes)}}function l2e(e){let t=e._textureDimensions;e._batchTexture.copyFrom({source:{width:t.x,height:t.y,arrayBufferView:e._batchValues}})}Nc.prototype.update=function(e,t){let n=t.context;this._defaultTexture=n.defaultTexture;let i=t.passes;(i.pick||i.postProcess)&&c2e(this,n),this._batchValuesDirty&&(this._batchValuesDirty=!1,l(this._batchTexture)||(this._batchTexture=Gse(this,n,this._batchValues),l(this._statistics)&&(this._statistics.batchTableByteLength+=this._batchTexture.sizeInBytes)),l2e(this))};Nc.prototype.isDestroyed=function(){return!1};Nc.prototype.destroy=function(){this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),this._pickTexture=this._pickTexture&&this._pickTexture.destroy();let e=this._pickIds,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var Il=Nc;var u2e={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},f2e={SCALAR:void 0,VEC2:U,VEC3:d,VEC4:se,MAT2:Gi,MAT3:J,MAT4:N};function d2e(e){let t=e.componentType,n;typeof t=="string"?n=q.fromName(t):n=t;let i=u2e[e.type],o=f2e[e.type];return{componentsPerAttribute:i,classType:o,createArrayBufferView:function(r,s,a){return q.createArrayBufferView(n,r,s,i*a)}}}var Wu=d2e;function Ep(e){this._classes=void 0,this._classIds=void 0,this._classIndexes=void 0,this._parentCounts=void 0,this._parentIndexes=void 0,this._parentIds=void 0,this._byteLength=0,h2e(this,e.extension,e.binaryBody)}Object.defineProperties(Ep.prototype,{byteLength:{get:function(){return this._byteLength}}});function h2e(e,t,n){let i,o,r,s=t.instancesLength,a=t.classes,c=t.classIds,u=t.parentCounts,f=t.parentIds,h=s,A=0;l(c.byteOffset)&&(c.componentType=c.componentType??q.UNSIGNED_SHORT,c.type=zt.SCALAR,r=Wu(c),c=r.createArrayBufferView(n.buffer,n.byteOffset+c.byteOffset,s),A+=c.byteLength);let g;if(l(u)){for(l(u.byteOffset)&&(u.componentType=u.componentType??q.UNSIGNED_SHORT,u.type=zt.SCALAR,r=Wu(u),u=r.createArrayBufferView(n.buffer,n.byteOffset+u.byteOffset,s),A+=u.byteLength),g=new Uint16Array(s),h=0,i=0;i<s;++i)g[i]=h,h+=u[i];A+=g.byteLength}l(f)&&l(f.byteOffset)&&(f.componentType=f.componentType??q.UNSIGNED_SHORT,f.type=zt.SCALAR,r=Wu(f),f=r.createArrayBufferView(n.buffer,n.byteOffset+f.byteOffset,h),A+=f.byteLength);let m=a.length;for(i=0;i<m;++i){let C=a[i].length,E=a[i].instances,I=m2e(C,E,n);A+=A2e(I),a[i].instances=Tt(I,E)}let _=new Array(m).fill(0),y=new Uint16Array(s);for(i=0;i<s;++i)o=c[i],y[i]=_[o],++_[o];A+=y.byteLength,e._classes=a,e._classIds=c,e._classIndexes=y,e._parentCounts=u,e._parentIndexes=g,e._parentIds=f,e._byteLength=A}function m2e(e,t,n){let i;for(let o in t)if(t.hasOwnProperty(o)){let r=t[o],s=r.byteOffset;if(l(s)){let a=r.componentType,c=r.type;if(!l(a))throw new ce("componentType is required.");if(!l(c))throw new ce("type is required.");if(!l(n))throw new ce(`Property ${o} requires a batch table binary.`);let u=Wu(r),f=u.componentsPerAttribute,h=u.classType,A=u.createArrayBufferView(n.buffer,n.byteOffset+s,e);l(i)||(i={}),i[o]={typedArray:A,componentCount:f,type:h}}}return i}function A2e(e){let t=0;for(let n in e)e.hasOwnProperty(n)&&(t+=e[n].typedArray.byteLength);return t}var p2e=[],g2e=[],_2e=0;function y2e(e,t,n){let i=e._classIds,o=e._parentCounts,r=e._parentIds,s=e._parentIndexes,a=i.length,c=p2e;c.length=Math.max(c.length,a);let u=++_2e,f=g2e;for(f.length=0,f.push(t);f.length>0;){if(t=f.pop(),c[t]===u)continue;c[t]=u;let h=n(e,t);if(l(h))return h;let A=o[t],g=s[t];for(let m=0;m<A;++m){let _=r[g+m];_!==t&&f.push(_)}}}function C2e(e,t,n){let i=!0;for(;i;){let o=n(e,t);if(l(o))return o;let r=e._parentIds[t];i=r!==t,t=r}}function GR(e,t,n){let i=e._parentCounts,o=e._parentIds;if(l(o)){if(l(i))return y2e(e,t,n)}else return n(e,t);return C2e(e,t,n)}Ep.prototype.hasProperty=function(e,t){let n=GR(this,e,function(i,o){let r=i._classIds[o],s=i._classes[r].instances;if(l(s[t]))return!0});return l(n)};Ep.prototype.propertyExists=function(e){let t=this._classes,n=t.length;for(let i=0;i<n;++i){let o=t[i].instances;if(l(o[e]))return!0}return!1};Ep.prototype.getPropertyIds=function(e,t){return t=l(t)?t:[],t.length=0,GR(this,e,function(n,i){let o=n._classIds[i],r=n._classes[o].instances;for(let s in r)r.hasOwnProperty(s)&&t.indexOf(s)===-1&&t.push(s)}),t};Ep.prototype.getProperty=function(e,t){return GR(this,e,function(n,i){let o=n._classIds[i],r=n._classes[o],s=n._classIndexes[i],a=r.instances[t];if(l(a))return l(a.typedArray)?E2e(a,s):ze(a[s],!0)})};function E2e(e,t){let n=e.typedArray,i=e.componentCount;return i===1?n[t]:e.type.unpack(n,t*i)}Ep.prototype.setProperty=function(e,t,n){let i=GR(this,e,function(o,r){let s=o._classIds[r],a=o._classes[s],c=o._classIndexes[r],u=a.instances[t];if(l(u))return l(u.typedArray)?I2e(u,c,n):u[c]=ze(n,!0),!0});return l(i)};function I2e(e,t,n){let i=e.typedArray,o=e.componentCount;o===1?i[t]=n:e.type.pack(n,i,t*o)}Ep.prototype.isClass=function(e,t){let n=GR(this,e,function(i,o){let r=i._classIds[o];if(i._classes[r].name===t)return!0});return l(n)};Ep.prototype.getClassName=function(e){let t=this._classIds[e];return this._classes[t].name};var PE=Ep;var x2e={HIGHLIGHT:0,REPLACE:1,MIX:2},ou=Object.freeze(x2e);function b2e(e,t){if(!l(t))return;let n=t.length;if(n===0)return;let i=e.length;e.length+=n;for(let o=0;o<n;o++)e[i+o]=t[o]}var si=b2e;var bW=Il.DEFAULT_COLOR_VALUE,TW=Il.DEFAULT_SHOW_VALUE;function No(e,t,n,i,o){this.featuresLength=t;let r;l(n)&&(r=n.extensions),this._extensions=r??{};let s=T2e(n);this._properties=s,this._batchTableHierarchy=S2e(this,n,i);let a=Vse(t,s,i);this._binaryPropertiesByteLength=w2e(a),this._batchTableBinaryProperties=a,this._content=e,this._batchTexture=new Il({featuresLength:t,colorChangedCallback:o,owner:e,statistics:e.tileset.statistics})}No._deprecationWarning=Tr;Object.defineProperties(No.prototype,{batchTableByteLength:{get:function(){let e=this._binaryPropertiesByteLength;return l(this._batchTableHierarchy)&&(e+=this._batchTableHierarchy.byteLength),e+=this._batchTexture.byteLength,e}}});function T2e(e){let t={};if(!l(e))return t;for(let n in e)e.hasOwnProperty(n)&&n!=="HIERARCHY"&&n!=="extensions"&&n!=="extras"&&(t[n]=ze(e[n],!0));return t}function S2e(e,t,n){if(!l(t))return;let i=e._extensions["3DTILES_batch_table_hierarchy"],o=t.HIERARCHY;if(l(o)&&(No._deprecationWarning("batchTableHierarchyExtension","The batch table HIERARCHY property has been moved to an extension. Use extensions.3DTILES_batch_table_hierarchy instead."),e._extensions["3DTILES_batch_table_hierarchy"]=o,i=o),!!l(i))return new PE({extension:i,binaryBody:n})}function Vse(e,t,n){let i;for(let o in t)if(t.hasOwnProperty(o)){let r=t[o],s=r.byteOffset;if(l(s)){let a=r.componentType,c=r.type;if(!l(a))throw new ce("componentType is required.");if(!l(c))throw new ce("type is required.");if(!l(n))throw new ce(`Property ${o} requires a batch table binary.`);let u=Wu(r),f=u.componentsPerAttribute,h=u.classType,A=u.createArrayBufferView(n.buffer,n.byteOffset+s,e);l(i)||(i={}),i[o]={typedArray:A,componentCount:f,type:h}}}return i}function w2e(e){if(!l(e))return 0;let t=0;for(let n in e)e.hasOwnProperty(n)&&(t+=e[n].typedArray.byteLength);return t}No.getBinaryProperties=function(e,t,n){return Vse(e,t,n)};No.prototype.setShow=function(e,t){this._batchTexture.setShow(e,t)};No.prototype.setAllShow=function(e){this._batchTexture.setAllShow(e)};No.prototype.getShow=function(e){return this._batchTexture.getShow(e)};No.prototype.setColor=function(e,t){this._batchTexture.setColor(e,t)};No.prototype.setAllColor=function(e){this._batchTexture.setAllColor(e)};No.prototype.getColor=function(e,t){return this._batchTexture.getColor(e,t)};No.prototype.getPickColor=function(e){return this._batchTexture.getPickColor(e)};var B2e=new G;No.prototype.applyStyle=function(e){if(!l(e)){this.setAllColor(bW),this.setAllShow(TW);return}let t=this._content,n=this.featuresLength;for(let i=0;i<n;++i){let o=t.getFeature(i),r=l(e.color)?e.color.evaluateColor(o,B2e)??bW:bW,s=l(e.show)?e.show.evaluate(o)??TW:TW;this.setColor(i,r),this.setShow(i,s)}};function D2e(e,t){let n=e.typedArray,i=e.componentCount;return i===1?n[t]:e.type.unpack(n,t*i)}function v2e(e,t,n){let i=e.typedArray,o=e.componentCount;o===1?i[t]=n:e.type.pack(n,i,t*o)}No.prototype.isClass=function(e,t){let n=this._batchTableHierarchy;return l(n)?n.isClass(e,t):!1};No.prototype.isExactClass=function(e,t){return this.getExactClassName(e)===t};No.prototype.getExactClassName=function(e){let t=this._batchTableHierarchy;if(l(t))return t.getClassName(e)};No.prototype.hasProperty=function(e,t){return l(this._properties[t])||l(this._batchTableHierarchy)&&this._batchTableHierarchy.hasProperty(e,t)};No.prototype.hasPropertyBySemantic=function(){return!1};No.prototype.getPropertyIds=function(e,t){t=l(t)?t:[],t.length=0;let n=Object.keys(this._properties);if(si(t,n),l(this._batchTableHierarchy)){let i=this._batchTableHierarchy.getPropertyIds(e,n);si(t,i)}return t};No.prototype.getPropertyBySemantic=function(e,t){};No.prototype.getProperty=function(e,t){if(l(this._batchTableBinaryProperties)){let i=this._batchTableBinaryProperties[t];if(l(i))return D2e(i,e)}let n=this._properties[t];if(l(n))return ze(n[e],!0);if(l(this._batchTableHierarchy)){let i=this._batchTableHierarchy.getProperty(e,t);if(l(i))return i}};No.prototype.setProperty=function(e,t,n){let i=this.featuresLength;if(l(this._batchTableBinaryProperties)){let r=this._batchTableBinaryProperties[t];if(l(r)){v2e(r,e,n);return}}if(l(this._batchTableHierarchy)&&this._batchTableHierarchy.setProperty(e,t,n))return;let o=this._properties[t];l(o)||(this._properties[t]=new Array(i),o=this._properties[t]),o[e]=ze(n,!0)};function P2e(e){return e._batchTexture.textureDimensions.y===1?`uniform vec4 tile_textureStep; +vec2 computeSt(float batchId) +{ + float stepX = tile_textureStep.x; + float centerX = tile_textureStep.y; + return vec2(centerX + (batchId * stepX), 0.5); +} +`:`uniform vec4 tile_textureStep; +uniform vec2 tile_textureDimensions; +vec2 computeSt(float batchId) +{ + float stepX = tile_textureStep.x; + float centerX = tile_textureStep.y; + float stepY = tile_textureStep.z; + float centerY = tile_textureStep.w; + float xId = mod(batchId, tile_textureDimensions.x); + float yId = floor(batchId / tile_textureDimensions.x); + return vec2(centerX + (xId * stepX), centerY + (yId * stepY)); +} +`}No.prototype.getVertexShaderCallback=function(e,t,n){if(this.featuresLength===0)return;let i=this;return function(o){let r=Hse(o,n,!1),s;return Yt.maximumVertexTextureImageUnits>0?(s="",e&&(s+=`uniform bool tile_translucentCommand; +`),s+=`uniform sampler2D tile_batchTexture; +out vec4 tile_featureColor; +out vec2 tile_featureSt; +void main() +{ + vec2 st = computeSt(${t}); + vec4 featureProperties = texture(tile_batchTexture, st); + tile_color(featureProperties); + float show = ceil(featureProperties.a); + gl_Position *= show; +`,e&&(s+=` bool isStyleTranslucent = (featureProperties.a != 1.0); + if (czm_pass == czm_passTranslucent) + { + if (!isStyleTranslucent && !tile_translucentCommand) + { + gl_Position *= 0.0; + } + } + else + { + if (isStyleTranslucent) + { + gl_Position *= 0.0; + } + } +`),s+=` tile_featureColor = featureProperties; + tile_featureSt = st; +}`):s=`out vec2 tile_featureSt; +void main() +{ + tile_color(vec4(1.0)); + tile_featureSt = computeSt(${t}); +}`,`${r} +${P2e(i)}${s}`}};function zse(e,t){return e=He.replaceMain(e,"tile_main"),t?`${e}uniform float tile_colorBlend; +void tile_color(vec4 tile_featureColor) +{ + tile_main(); + tile_featureColor = czm_gammaCorrect(tile_featureColor); + out_FragColor.a *= tile_featureColor.a; + float highlight = ceil(tile_colorBlend); + out_FragColor.rgb *= mix(tile_featureColor.rgb, vec3(1.0), highlight); +} +`:`${e}void tile_color(vec4 tile_featureColor) +{ + tile_main(); +} +`}function R2e(e,t){let n=`texture(${t}`,i=0,o=e.indexOf(n,i),r;for(;o>-1;){let s=0;for(let u=o;u<e.length;++u){let f=e.charAt(u);if(f==="(")++s;else if(f===")"&&(--s,s===0)){r=u+1;break}}let c=`tile_diffuse_final(${e.slice(o,r)}, tile_diffuse)`;e=e.slice(0,o)+c+e.slice(r),i=o+c.length,o=e.indexOf(n,i)}return e}function Hse(e,t,n){if(!l(t))return zse(e,n);let i=new RegExp(`(uniform|attribute|in)\\s+(vec[34]|sampler2D)\\s+${t};`),o=e.match(i);if(!l(o))return zse(e,n);let r=o[0],s=o[2];e=He.replaceMain(e,"tile_main"),e=e.replace(r,"");let a=`bool isWhite(vec3 color) +{ + return all(greaterThan(color, vec3(1.0 - czm_epsilon3))); +} +vec4 tile_diffuse_final(vec4 sourceDiffuse, vec4 tileDiffuse) +{ + vec4 blendDiffuse = mix(sourceDiffuse, tileDiffuse, tile_colorBlend); + vec4 diffuse = isWhite(tileDiffuse.rgb) ? sourceDiffuse : blendDiffuse; + return vec4(diffuse.rgb, sourceDiffuse.a); +} +`,c=` tile_featureColor = czm_gammaCorrect(tile_featureColor); + out_FragColor.a *= tile_featureColor.a; + float highlight = ceil(tile_colorBlend); + out_FragColor.rgb *= mix(tile_featureColor.rgb, vec3(1.0), highlight); +`,u;if(s==="vec3"||s==="vec4"){let f=s==="vec3"?`vec4(${t}, 1.0)`:t,h=s==="vec3"?"tile_diffuse.xyz":"tile_diffuse";i=new RegExp(t,"g"),e=e.replace(i,h),u=` vec4 source = ${f}; + tile_diffuse = tile_diffuse_final(source, tile_featureColor); + tile_main(); +`}else s==="sampler2D"&&(e=R2e(e,t),u=` tile_diffuse = tile_featureColor; + tile_main(); +`);return e=`uniform float tile_colorBlend; +vec4 tile_diffuse = vec4(1.0); +${a}${r} +${e} +void tile_color(vec4 tile_featureColor) +{ +${u}`,n&&(e+=c),e+=`} +`,e}No.prototype.getFragmentShaderCallback=function(e,t,n){if(this.featuresLength!==0)return function(i){return i=Hse(i,t,!0),Yt.maximumVertexTextureImageUnits>0?(i+=`uniform sampler2D tile_pickTexture; +in vec2 tile_featureSt; +in vec4 tile_featureColor; +void main() +{ + tile_color(tile_featureColor); +`,n&&(i+=` out_FragColor.rgb *= out_FragColor.a; +`),i+="}"):(e&&(i+=`uniform bool tile_translucentCommand; +`),i+=`uniform sampler2D tile_pickTexture; +uniform sampler2D tile_batchTexture; +in vec2 tile_featureSt; +void main() +{ + vec4 featureProperties = texture(tile_batchTexture, tile_featureSt); + if (featureProperties.a == 0.0) { + discard; + } +`,e&&(i+=` bool isStyleTranslucent = (featureProperties.a != 1.0); + if (czm_pass == czm_passTranslucent) + { + if (!isStyleTranslucent && !tile_translucentCommand) + { + discard; + } + } + else + { + if (isStyleTranslucent) + { + discard; + } + } +`),i+=` tile_color(featureProperties); +`,n&&(i+=` out_FragColor.rgb *= out_FragColor.a; +`),i+=`} +`),i}};function M2e(e){let t=e._content.tileset,n=t.colorBlendMode,i=t.colorBlendAmount;if(n===ou.HIGHLIGHT)return 0;if(n===ou.REPLACE)return 1;if(n===ou.MIX)return D.clamp(i,D.EPSILON4,1)}No.prototype.getUniformMapCallback=function(){if(this.featuresLength===0)return;let e=this;return function(t){return Tt(t,{tile_batchTexture:function(){return e._batchTexture.batchTexture??e._batchTexture.defaultTexture},tile_textureDimensions:function(){return e._batchTexture.textureDimensions},tile_textureStep:function(){return e._batchTexture.textureStep},tile_colorBlend:function(){return M2e(e)},tile_pickTexture:function(){return e._batchTexture.pickTexture}})}};No.prototype.getPickId=function(){return"texture(tile_pickTexture, tile_featureSt)"};var O_={ALL_OPAQUE:0,ALL_TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2};No.prototype.addDerivedCommands=function(e,t){let n=e.commandList,i=n.length,o=this._content._tile,r=o._finalResolution,s=o.tileset,a=s.isSkippingLevelOfDetail&&s.hasMixedContent&&e.context.stencilBuffer,c=N2e(this);for(let u=t;u<i;++u){let f=n[u];if(f.pass===Be.COMPUTE)continue;let h=f.derivedCommands.tileset;(!l(h)||f.dirty)&&(h={},f.derivedCommands.tileset=h,h.originalCommand=L2e(f),f.dirty=!1);let A=h.originalCommand;c!==O_.ALL_OPAQUE&&f.pass!==Be.TRANSLUCENT&&(l(h.translucent)||(h.translucent=O2e(A))),c!==O_.ALL_TRANSLUCENT&&f.pass!==Be.TRANSLUCENT&&(l(h.opaque)||(h.opaque=F2e(A)),a&&(r||(l(h.zback)||(h.zback=k2e(e.context,A)),s._backfaceCommands.push(h.zback)),(!l(h.stencil)||o._selectionDepth!==G2e(h.stencil))&&(f.renderState.depthMask?h.stencil=U2e(A,o._selectionDepth):h.stencil=h.opaque)));let g=a?h.stencil:h.opaque,m=h.translucent;f.pass!==Be.TRANSLUCENT?(c===O_.ALL_OPAQUE&&(n[u]=g),c===O_.ALL_TRANSLUCENT&&(n[u]=m),c===O_.OPAQUE_AND_TRANSLUCENT&&(n[u]=g,n.push(m))):n[u]=A}};function N2e(e){let t=e._batchTexture.translucentFeaturesLength;return t===0?O_.ALL_OPAQUE:t===e.featuresLength?O_.ALL_TRANSLUCENT:O_.OPAQUE_AND_TRANSLUCENT}function L2e(e){let t=nt.shallowClone(e),n=t.pass===Be.TRANSLUCENT;return t.uniformMap=l(t.uniformMap)?t.uniformMap:{},t.uniformMap.tile_translucentCommand=function(){return n},t}function O2e(e){let t=nt.shallowClone(e);return t.pass=Be.TRANSLUCENT,t.renderState=z2e(e.renderState),t}function F2e(e){let t=nt.shallowClone(e);return t.renderState=V2e(e.renderState),t}function Q2e(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"zBackfaceLogDepth");if(!l(n)){let i=t.fragmentShaderSource.clone();i.defines=l(i.defines)?i.defines.slice(0):[],i.defines.push("POLYGON_OFFSET"),n=e.shaderCache.createDerivedShaderProgram(t,"zBackfaceLogDepth",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:i,attributeLocations:t._attributeLocations})}return n}function k2e(e,t){let n=nt.shallowClone(t),i=ze(n.renderState,!0);i.cull.enabled=!0,i.cull.face=Mi.FRONT,i.colorMask={red:!1,green:!1,blue:!1,alpha:!1},i.polygonOffset={enabled:!0,factor:5,units:5},i.stencilTest=Kt.setCesium3DTileBit(),i.stencilMask=Kt.CESIUM_3D_TILE_MASK,n.renderState=Ue.fromCache(i),n.castShadows=!1,n.receiveShadows=!1,n.uniformMap=ze(t.uniformMap);let o=new U(5,5);return n.uniformMap.u_polygonOffset=function(){return o},n.shaderProgram=Q2e(e,t.shaderProgram),n}function U2e(e,t){let n=nt.shallowClone(e),i=ze(n.renderState,!0);return i.stencilTest.enabled=!0,i.stencilTest.mask=Kt.SKIP_LOD_MASK,i.stencilTest.reference=Kt.CESIUM_3D_TILE_MASK|t<<Kt.SKIP_LOD_BIT_SHIFT,i.stencilTest.frontFunction=Zn.GREATER_OR_EQUAL,i.stencilTest.frontOperation.zPass=_t.REPLACE,i.stencilTest.backFunction=Zn.GREATER_OR_EQUAL,i.stencilTest.backOperation.zPass=_t.REPLACE,i.stencilMask=Kt.CESIUM_3D_TILE_MASK|Kt.SKIP_LOD_MASK,n.renderState=Ue.fromCache(i),n}function G2e(e){return(e.renderState.stencilTest.reference&Kt.SKIP_LOD_MASK)>>>Kt.SKIP_LOD_BIT_SHIFT}function z2e(e){let t=ze(e,!0);return t.cull.enabled=!1,t.depthTest.enabled=!0,t.depthMask=!1,t.blending=pn.ALPHA_BLEND,t.stencilTest=Kt.setCesium3DTileBit(),t.stencilMask=Kt.CESIUM_3D_TILE_MASK,Ue.fromCache(t)}function V2e(e){let t=ze(e,!0);return t.stencilTest=Kt.setCesium3DTileBit(),t.stencilMask=Kt.CESIUM_3D_TILE_MASK,Ue.fromCache(t)}No.prototype.update=function(e,t){this._batchTexture.update(e,t)};No.prototype.isDestroyed=function(){return!1};No.prototype.destroy=function(){return this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),ue(this)};var Ip=No;function H2e(e){this.offset=e.offset,this.count=e.count,this.color=e.color,this.batchIds=e.batchIds}var Wm=H2e;var Ab=`in vec3 position; +in float a_batchId; + +uniform mat4 u_modifiedModelViewProjection; + +void main() +{ + gl_Position = czm_depthClamp(u_modifiedModelViewProjection * vec4(position, 1.0)); +} +`;function nd(e,t){this._content=e,this._batchId=t,this._color=void 0}Object.defineProperties(nd.prototype,{show:{get:function(){return this._content.batchTable.getShow(this._batchId)},set:function(e){this._content.batchTable.setShow(this._batchId,e)}},color:{get:function(){return l(this._color)||(this._color=new G),this._content.batchTable.getColor(this._batchId,this._color)},set:function(e){this._content.batchTable.setColor(this._batchId,e)}},polylinePositions:{get:function(){if(l(this._content.getPolylinePositions))return this._content.getPolylinePositions(this._batchId)}},content:{get:function(){return this._content}},tileset:{get:function(){return this._content.tileset}},primitive:{get:function(){return this._content.tileset}},featureId:{get:function(){return this._batchId}},pickId:{get:function(){return this._content.batchTable.getPickColor(this._batchId)}}});nd.prototype.hasProperty=function(e){return this._content.batchTable.hasProperty(this._batchId,e)};nd.prototype.getPropertyIds=function(e){return this._content.batchTable.getPropertyIds(this._batchId,e)};nd.prototype.getProperty=function(e){return this._content.batchTable.getProperty(this._batchId,e)};nd.getPropertyInherited=function(e,t,n){let i=e.batchTable;if(l(i)){if(i.hasPropertyBySemantic(t,n))return i.getPropertyBySemantic(t,n);if(i.hasProperty(t,n))return i.getProperty(t,n)}let o=e.metadata;if(l(o)){if(o.hasPropertyBySemantic(n))return o.getPropertyBySemantic(n);if(o.hasProperty(n))return o.getProperty(n)}let r=e.tile,s=r.metadata;if(l(s)){if(s.hasPropertyBySemantic(n))return s.getPropertyBySemantic(n);if(s.hasProperty(n))return s.getProperty(n)}let a;if(l(r.implicitSubtree)&&(a=r.implicitSubtree.metadata),l(a)){if(a.hasPropertyBySemantic(n))return a.getPropertyBySemantic(n);if(a.hasProperty(n))return a.getProperty(n)}let c=l(e.group)?e.group.metadata:void 0;if(l(c)){if(c.hasPropertyBySemantic(n))return c.getPropertyBySemantic(n);if(c.hasProperty(n))return c.getProperty(n)}let u=e.tileset.metadata;if(l(u)){if(u.hasPropertyBySemantic(n))return u.getPropertyBySemantic(n);if(u.hasProperty(n))return u.getProperty(n)}};nd.prototype.getPropertyInherited=function(e){return nd.getPropertyInherited(this._content,this._batchId,e)};nd.prototype.setProperty=function(e,t){this._content.batchTable.setProperty(this._batchId,e,t),this._content.featurePropertiesDirty=!0};nd.prototype.isExactClass=function(e){return this._content.batchTable.isExactClass(this._batchId,e)};nd.prototype.isClass=function(e){return this._content.batchTable.isClass(this._batchId,e)};nd.prototype.getExactClassName=function(){return this._content.batchTable.getExactClassName(this._batchId)};var ha=nd;var SW=class{add(t,n,i){if(typeof arguments[0]!="string")for(let o in arguments[0])this.add(o,arguments[0][o],arguments[1]);else(Array.isArray(t)?t:[t]).forEach(function(o){this[o]=this[o]||[],n&&this[o][i?"unshift":"push"](n)},this)}run(t,n){this[t]=this[t]||[],this[t].forEach(function(i){i.call(n&&n.context?n.context:n,n)})}},wW=class{constructor(t){this.jsep=t,this.registered={}}register(...t){t.forEach(n=>{if(typeof n!="object"||!n.name||!n.init)throw new Error("Invalid JSEP plugin format");this.registered[n.name]||(n.init(this.jsep),this.registered[n.name]=n)})}},ru=class e{static get version(){return"1.4.0"}static toString(){return"JavaScript Expression Parser (JSEP) v"+e.version}static addUnaryOp(t){return e.max_unop_len=Math.max(t.length,e.max_unop_len),e.unary_ops[t]=1,e}static addBinaryOp(t,n,i){return e.max_binop_len=Math.max(t.length,e.max_binop_len),e.binary_ops[t]=n,i?e.right_associative.add(t):e.right_associative.delete(t),e}static addIdentifierChar(t){return e.additional_identifier_chars.add(t),e}static addLiteral(t,n){return e.literals[t]=n,e}static removeUnaryOp(t){return delete e.unary_ops[t],t.length===e.max_unop_len&&(e.max_unop_len=e.getMaxKeyLen(e.unary_ops)),e}static removeAllUnaryOps(){return e.unary_ops={},e.max_unop_len=0,e}static removeIdentifierChar(t){return e.additional_identifier_chars.delete(t),e}static removeBinaryOp(t){return delete e.binary_ops[t],t.length===e.max_binop_len&&(e.max_binop_len=e.getMaxKeyLen(e.binary_ops)),e.right_associative.delete(t),e}static removeAllBinaryOps(){return e.binary_ops={},e.max_binop_len=0,e}static removeLiteral(t){return delete e.literals[t],e}static removeAllLiterals(){return e.literals={},e}get char(){return this.expr.charAt(this.index)}get code(){return this.expr.charCodeAt(this.index)}constructor(t){this.expr=t,this.index=0}static parse(t){return new e(t).parse()}static getMaxKeyLen(t){return Math.max(0,...Object.keys(t).map(n=>n.length))}static isDecimalDigit(t){return t>=48&&t<=57}static binaryPrecedence(t){return e.binary_ops[t]||0}static isIdentifierStart(t){return t>=65&&t<=90||t>=97&&t<=122||t>=128&&!e.binary_ops[String.fromCharCode(t)]||e.additional_identifier_chars.has(String.fromCharCode(t))}static isIdentifierPart(t){return e.isIdentifierStart(t)||e.isDecimalDigit(t)}throwError(t){let n=new Error(t+" at character "+this.index);throw n.index=this.index,n.description=t,n}runHook(t,n){if(e.hooks[t]){let i={context:this,node:n};return e.hooks.run(t,i),i.node}return n}searchHook(t){if(e.hooks[t]){let n={context:this};return e.hooks[t].find(function(i){return i.call(n.context,n),n.node}),n.node}}gobbleSpaces(){let t=this.code;for(;t===e.SPACE_CODE||t===e.TAB_CODE||t===e.LF_CODE||t===e.CR_CODE;)t=this.expr.charCodeAt(++this.index);this.runHook("gobble-spaces")}parse(){this.runHook("before-all");let t=this.gobbleExpressions(),n=t.length===1?t[0]:{type:e.COMPOUND,body:t};return this.runHook("after-all",n)}gobbleExpressions(t){let n=[],i,o;for(;this.index<this.expr.length;)if(i=this.code,i===e.SEMCOL_CODE||i===e.COMMA_CODE)this.index++;else if(o=this.gobbleExpression())n.push(o);else if(this.index<this.expr.length){if(i===t)break;this.throwError('Unexpected "'+this.char+'"')}return n}gobbleExpression(){let t=this.searchHook("gobble-expression")||this.gobbleBinaryExpression();return this.gobbleSpaces(),this.runHook("after-expression",t)}gobbleBinaryOp(){this.gobbleSpaces();let t=this.expr.substr(this.index,e.max_binop_len),n=t.length;for(;n>0;){if(e.binary_ops.hasOwnProperty(t)&&(!e.isIdentifierStart(this.code)||this.index+t.length<this.expr.length&&!e.isIdentifierPart(this.expr.charCodeAt(this.index+t.length))))return this.index+=n,t;t=t.substr(0,--n)}return!1}gobbleBinaryExpression(){let t,n,i,o,r,s,a,c,u;if(s=this.gobbleToken(),!s||(n=this.gobbleBinaryOp(),!n))return s;for(r={value:n,prec:e.binaryPrecedence(n),right_a:e.right_associative.has(n)},a=this.gobbleToken(),a||this.throwError("Expected expression after "+n),o=[s,r,a];n=this.gobbleBinaryOp();){if(i=e.binaryPrecedence(n),i===0){this.index-=n.length;break}r={value:n,prec:i,right_a:e.right_associative.has(n)},u=n;let f=h=>r.right_a&&h.right_a?i>h.prec:i<=h.prec;for(;o.length>2&&f(o[o.length-2]);)a=o.pop(),n=o.pop().value,s=o.pop(),t={type:e.BINARY_EXP,operator:n,left:s,right:a},o.push(t);t=this.gobbleToken(),t||this.throwError("Expected expression after "+u),o.push(r,t)}for(c=o.length-1,t=o[c];c>1;)t={type:e.BINARY_EXP,operator:o[c-1].value,left:o[c-2],right:t},c-=2;return t}gobbleToken(){let t,n,i,o;if(this.gobbleSpaces(),o=this.searchHook("gobble-token"),o)return this.runHook("after-token",o);if(t=this.code,e.isDecimalDigit(t)||t===e.PERIOD_CODE)return this.gobbleNumericLiteral();if(t===e.SQUOTE_CODE||t===e.DQUOTE_CODE)o=this.gobbleStringLiteral();else if(t===e.OBRACK_CODE)o=this.gobbleArray();else{for(n=this.expr.substr(this.index,e.max_unop_len),i=n.length;i>0;){if(e.unary_ops.hasOwnProperty(n)&&(!e.isIdentifierStart(this.code)||this.index+n.length<this.expr.length&&!e.isIdentifierPart(this.expr.charCodeAt(this.index+n.length)))){this.index+=i;let r=this.gobbleToken();return r||this.throwError("missing unaryOp argument"),this.runHook("after-token",{type:e.UNARY_EXP,operator:n,argument:r,prefix:!0})}n=n.substr(0,--i)}e.isIdentifierStart(t)?(o=this.gobbleIdentifier(),e.literals.hasOwnProperty(o.name)?o={type:e.LITERAL,value:e.literals[o.name],raw:o.name}:o.name===e.this_str&&(o={type:e.THIS_EXP})):t===e.OPAREN_CODE&&(o=this.gobbleGroup())}return o?(o=this.gobbleTokenProperty(o),this.runHook("after-token",o)):this.runHook("after-token",!1)}gobbleTokenProperty(t){this.gobbleSpaces();let n=this.code;for(;n===e.PERIOD_CODE||n===e.OBRACK_CODE||n===e.OPAREN_CODE||n===e.QUMARK_CODE;){let i;if(n===e.QUMARK_CODE){if(this.expr.charCodeAt(this.index+1)!==e.PERIOD_CODE)break;i=!0,this.index+=2,this.gobbleSpaces(),n=this.code}this.index++,n===e.OBRACK_CODE?(t={type:e.MEMBER_EXP,computed:!0,object:t,property:this.gobbleExpression()},t.property||this.throwError('Unexpected "'+this.char+'"'),this.gobbleSpaces(),n=this.code,n!==e.CBRACK_CODE&&this.throwError("Unclosed ["),this.index++):n===e.OPAREN_CODE?t={type:e.CALL_EXP,arguments:this.gobbleArguments(e.CPAREN_CODE),callee:t}:(n===e.PERIOD_CODE||i)&&(i&&this.index--,this.gobbleSpaces(),t={type:e.MEMBER_EXP,computed:!1,object:t,property:this.gobbleIdentifier()}),i&&(t.optional=!0),this.gobbleSpaces(),n=this.code}return t}gobbleNumericLiteral(){let t="",n,i;for(;e.isDecimalDigit(this.code);)t+=this.expr.charAt(this.index++);if(this.code===e.PERIOD_CODE)for(t+=this.expr.charAt(this.index++);e.isDecimalDigit(this.code);)t+=this.expr.charAt(this.index++);if(n=this.char,n==="e"||n==="E"){for(t+=this.expr.charAt(this.index++),n=this.char,(n==="+"||n==="-")&&(t+=this.expr.charAt(this.index++));e.isDecimalDigit(this.code);)t+=this.expr.charAt(this.index++);e.isDecimalDigit(this.expr.charCodeAt(this.index-1))||this.throwError("Expected exponent ("+t+this.char+")")}return i=this.code,e.isIdentifierStart(i)?this.throwError("Variable names cannot start with a number ("+t+this.char+")"):(i===e.PERIOD_CODE||t.length===1&&t.charCodeAt(0)===e.PERIOD_CODE)&&this.throwError("Unexpected period"),{type:e.LITERAL,value:parseFloat(t),raw:t}}gobbleStringLiteral(){let t="",n=this.index,i=this.expr.charAt(this.index++),o=!1;for(;this.index<this.expr.length;){let r=this.expr.charAt(this.index++);if(r===i){o=!0;break}else if(r==="\\")switch(r=this.expr.charAt(this.index++),r){case"n":t+=` +`;break;case"r":t+="\r";break;case"t":t+=" ";break;case"b":t+="\b";break;case"f":t+="\f";break;case"v":t+="\v";break;default:t+=r}else t+=r}return o||this.throwError('Unclosed quote after "'+t+'"'),{type:e.LITERAL,value:t,raw:this.expr.substring(n,this.index)}}gobbleIdentifier(){let t=this.code,n=this.index;for(e.isIdentifierStart(t)?this.index++:this.throwError("Unexpected "+this.char);this.index<this.expr.length&&(t=this.code,e.isIdentifierPart(t));)this.index++;return{type:e.IDENTIFIER,name:this.expr.slice(n,this.index)}}gobbleArguments(t){let n=[],i=!1,o=0;for(;this.index<this.expr.length;){this.gobbleSpaces();let r=this.code;if(r===t){i=!0,this.index++,t===e.CPAREN_CODE&&o&&o>=n.length&&this.throwError("Unexpected token "+String.fromCharCode(t));break}else if(r===e.COMMA_CODE){if(this.index++,o++,o!==n.length){if(t===e.CPAREN_CODE)this.throwError("Unexpected token ,");else if(t===e.CBRACK_CODE)for(let s=n.length;s<o;s++)n.push(null)}}else if(n.length!==o&&o!==0)this.throwError("Expected comma");else{let s=this.gobbleExpression();(!s||s.type===e.COMPOUND)&&this.throwError("Expected comma"),n.push(s)}}return i||this.throwError("Expected "+String.fromCharCode(t)),n}gobbleGroup(){this.index++;let t=this.gobbleExpressions(e.CPAREN_CODE);if(this.code===e.CPAREN_CODE)return this.index++,t.length===1?t[0]:t.length?{type:e.SEQUENCE_EXP,expressions:t}:!1;this.throwError("Unclosed (")}gobbleArray(){return this.index++,{type:e.ARRAY_EXP,elements:this.gobbleArguments(e.CBRACK_CODE)}}},W2e=new SW;Object.assign(ru,{hooks:W2e,plugins:new wW(ru),COMPOUND:"Compound",SEQUENCE_EXP:"SequenceExpression",IDENTIFIER:"Identifier",MEMBER_EXP:"MemberExpression",LITERAL:"Literal",THIS_EXP:"ThisExpression",CALL_EXP:"CallExpression",UNARY_EXP:"UnaryExpression",BINARY_EXP:"BinaryExpression",ARRAY_EXP:"ArrayExpression",TAB_CODE:9,LF_CODE:10,CR_CODE:13,SPACE_CODE:32,PERIOD_CODE:46,COMMA_CODE:44,SQUOTE_CODE:39,DQUOTE_CODE:34,OPAREN_CODE:40,CPAREN_CODE:41,OBRACK_CODE:91,CBRACK_CODE:93,QUMARK_CODE:63,SEMCOL_CODE:59,COLON_CODE:58,unary_ops:{"-":1,"!":1,"~":1,"+":1},binary_ops:{"||":1,"??":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10,"**":11},right_associative:new Set(["**"]),additional_identifier_chars:new Set(["$","_"]),literals:{true:!0,false:!1,null:null},this_str:"this"});ru.max_unop_len=ru.getMaxKeyLen(ru.unary_ops);ru.max_binop_len=ru.getMaxKeyLen(ru.binary_ops);var F_=e=>new ru(e).parse(),j2e=Object.getOwnPropertyNames(class{});Object.getOwnPropertyNames(ru).filter(e=>!j2e.includes(e)&&F_[e]===void 0).forEach(e=>{F_[e]=ru[e]});F_.Jsep=ru;var Y2e="ConditionalExpression",q2e={name:"ternary",init(e){e.hooks.add("after-expression",function(n){if(n.node&&this.code===e.QUMARK_CODE){this.index++;let i=n.node,o=this.gobbleExpression();if(o||this.throwError("Expected expression"),this.gobbleSpaces(),this.code===e.COLON_CODE){this.index++;let r=this.gobbleExpression();if(r||this.throwError("Expected expression"),n.node={type:Y2e,test:i,consequent:o,alternate:r},i.operator&&e.binary_ops[i.operator]<=.9){let s=i;for(;s.right.operator&&e.binary_ops[s.right.operator]<=.9;)s=s.right;n.node.test=s.right,s.right=n.node,n.node=i}}else this.throwError("Expected :")}})}};F_.plugins.register(q2e);var K2e={VARIABLE:0,UNARY:1,BINARY:2,TERNARY:3,CONDITIONAL:4,MEMBER:5,FUNCTION_CALL:6,ARRAY:7,REGEX:8,VARIABLE_IN_STRING:9,LITERAL_NULL:10,LITERAL_BOOLEAN:11,LITERAL_NUMBER:12,LITERAL_STRING:13,LITERAL_COLOR:14,LITERAL_VECTOR:15,LITERAL_REGEX:16,LITERAL_UNDEFINED:17,BUILTIN_VARIABLE:18},It=Object.freeze(K2e);function xh(e,t){this._expression=e,e=cQe(e,t),e=uQe(lQe(e)),F_.addBinaryOp("=~",0),F_.addBinaryOp("!~",0);let n;try{n=F_(e)}catch(i){throw new ce(i)}this._runtimeAst=Oi(this,n)}Object.defineProperties(xh.prototype,{expression:{get:function(){return this._expression}}});var Gn={arrayIndex:0,arrayArray:[[]],cartesian2Index:0,cartesian3Index:0,cartesian4Index:0,cartesian2Array:[new U],cartesian3Array:[new d],cartesian4Array:[new se],reset:function(){this.arrayIndex=0,this.cartesian2Index=0,this.cartesian3Index=0,this.cartesian4Index=0},getArray:function(){this.arrayIndex>=this.arrayArray.length&&this.arrayArray.push([]);let e=this.arrayArray[this.arrayIndex++];return e.length=0,e},getCartesian2:function(){return this.cartesian2Index>=this.cartesian2Array.length&&this.cartesian2Array.push(new U),this.cartesian2Array[this.cartesian2Index++]},getCartesian3:function(){return this.cartesian3Index>=this.cartesian3Array.length&&this.cartesian3Array.push(new d),this.cartesian3Array[this.cartesian3Index++]},getCartesian4:function(){return this.cartesian4Index>=this.cartesian4Array.length&&this.cartesian4Array.push(new se),this.cartesian4Array[this.cartesian4Index++]}};xh.prototype.evaluate=function(e,t){Gn.reset();let n=this._runtimeAst.evaluate(e);return t instanceof G&&n instanceof se?G.fromCartesian4(n,t):n instanceof U||n instanceof d||n instanceof se?n.clone(t):n};xh.prototype.evaluateColor=function(e,t){Gn.reset();let n=this._runtimeAst.evaluate(e);return G.fromCartesian4(n,t)};xh.prototype.getShaderFunction=function(e,t,n,i){let o=this.getShaderExpression(t,n);return o=`${i} ${e} +{ + return ${o}; +} +`,o};xh.prototype.getShaderExpression=function(e,t){return this._runtimeAst.getShaderExpression(e,t)};xh.prototype.getVariables=function(){let e=[];return this._runtimeAst.getVariables(e),e=e.filter(function(t,n,i){return i.indexOf(t)===n}),e};var X2e=["!","-","+"],Wse=["+","-","*","/","%","===","!==",">",">=","<","<=","&&","||","!~","=~"],zR=/\${(.*?)}/g,J2e=/\\/g,Z2e="@#%",$2e=/@#%/g,cz=new G,lz={abs:ma(Math.abs),sqrt:ma(Math.sqrt),cos:ma(Math.cos),sin:ma(Math.sin),tan:ma(Math.tan),acos:ma(Math.acos),asin:ma(Math.asin),atan:ma(Math.atan),radians:ma(D.toRadians),degrees:ma(D.toDegrees),sign:ma(D.sign),floor:ma(Math.floor),ceil:ma(Math.ceil),round:ma(Math.round),exp:ma(Math.exp),exp2:ma(tQe),log:ma(Math.log),log2:ma(nQe),fract:ma(eQe),length:iQe,normalize:oQe},uz={atan2:sz(Math.atan2,!1),pow:sz(Math.pow,!1),min:sz(Math.min,!0),max:sz(Math.max,!0),distance:rQe,dot:sQe,cross:aQe},vW={clamp:jse(D.clamp,!0),mix:jse(D.lerp,!0)};function eQe(e){return e-Math.floor(e)}function tQe(e){return Math.pow(2,e)}function nQe(e){return D.log2(e)}function ma(e){return function(t,n){if(typeof n=="number")return e(n);if(n instanceof U)return U.fromElements(e(n.x),e(n.y),Gn.getCartesian2());if(n instanceof d)return d.fromElements(e(n.x),e(n.y),e(n.z),Gn.getCartesian3());if(n instanceof se)return se.fromElements(e(n.x),e(n.y),e(n.z),e(n.w),Gn.getCartesian4());throw new ce(`Function "${t}" requires a vector or number argument. Argument is ${n}.`)}}function sz(e,t){return function(n,i,o){if(t&&typeof o=="number"){if(typeof i=="number")return e(i,o);if(i instanceof U)return U.fromElements(e(i.x,o),e(i.y,o),Gn.getCartesian2());if(i instanceof d)return d.fromElements(e(i.x,o),e(i.y,o),e(i.z,o),Gn.getCartesian3());if(i instanceof se)return se.fromElements(e(i.x,o),e(i.y,o),e(i.z,o),e(i.w,o),Gn.getCartesian4())}if(typeof i=="number"&&typeof o=="number")return e(i,o);if(i instanceof U&&o instanceof U)return U.fromElements(e(i.x,o.x),e(i.y,o.y),Gn.getCartesian2());if(i instanceof d&&o instanceof d)return d.fromElements(e(i.x,o.x),e(i.y,o.y),e(i.z,o.z),Gn.getCartesian3());if(i instanceof se&&o instanceof se)return se.fromElements(e(i.x,o.x),e(i.y,o.y),e(i.z,o.z),e(i.w,o.w),Gn.getCartesian4());throw new ce(`Function "${n}" requires vector or number arguments of matching types. Arguments are ${i} and ${o}.`)}}function jse(e,t){return function(n,i,o,r){if(t&&typeof r=="number"){if(typeof i=="number"&&typeof o=="number")return e(i,o,r);if(i instanceof U&&o instanceof U)return U.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),Gn.getCartesian2());if(i instanceof d&&o instanceof d)return d.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),e(i.z,o.z,r),Gn.getCartesian3());if(i instanceof se&&o instanceof se)return se.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),e(i.z,o.z,r),e(i.w,o.w,r),Gn.getCartesian4())}if(typeof i=="number"&&typeof o=="number"&&typeof r=="number")return e(i,o,r);if(i instanceof U&&o instanceof U&&r instanceof U)return U.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),Gn.getCartesian2());if(i instanceof d&&o instanceof d&&r instanceof d)return d.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),e(i.z,o.z,r.z),Gn.getCartesian3());if(i instanceof se&&o instanceof se&&r instanceof se)return se.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),e(i.z,o.z,r.z),e(i.w,o.w,r.w),Gn.getCartesian4());throw new ce(`Function "${n}" requires vector or number arguments of matching types. Arguments are ${i}, ${o}, and ${r}.`)}}function iQe(e,t){if(typeof t=="number")return Math.abs(t);if(t instanceof U)return U.magnitude(t);if(t instanceof d)return d.magnitude(t);if(t instanceof se)return se.magnitude(t);throw new ce(`Function "${e}" requires a vector or number argument. Argument is ${t}.`)}function oQe(e,t){if(typeof t=="number")return 1;if(t instanceof U)return U.normalize(t,Gn.getCartesian2());if(t instanceof d)return d.normalize(t,Gn.getCartesian3());if(t instanceof se)return se.normalize(t,Gn.getCartesian4());throw new ce(`Function "${e}" requires a vector or number argument. Argument is ${t}.`)}function rQe(e,t,n){if(typeof t=="number"&&typeof n=="number")return Math.abs(t-n);if(t instanceof U&&n instanceof U)return U.distance(t,n);if(t instanceof d&&n instanceof d)return d.distance(t,n);if(t instanceof se&&n instanceof se)return se.distance(t,n);throw new ce(`Function "${e}" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)}function sQe(e,t,n){if(typeof t=="number"&&typeof n=="number")return t*n;if(t instanceof U&&n instanceof U)return U.dot(t,n);if(t instanceof d&&n instanceof d)return d.dot(t,n);if(t instanceof se&&n instanceof se)return se.dot(t,n);throw new ce(`Function "${e}" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)}function aQe(e,t,n){if(t instanceof d&&n instanceof d)return d.cross(t,n,Gn.getCartesian3());throw new ce(`Function "${e}" requires vec3 arguments. Arguments are ${t} and ${n}.`)}function Dt(e,t,n,i,o){this._type=e,this._value=t,this._left=n,this._right=i,this._test=o,this.evaluate=void 0,CQe(this)}function cQe(e,t){if(!l(t))return e;for(let n in t)if(t.hasOwnProperty(n)){let i=new RegExp(`\\$\\{${n}\\}`,"g"),o=`(${t[n]})`;l(o)&&(e=e.replace(i,o))}return e}function lQe(e){return e.replace(J2e,Z2e)}function DW(e){return e.replace($2e,"\\")}function uQe(e){let t=e,n="",i=t.indexOf("${");for(;i>=0;){let o=t.indexOf("'"),r=t.indexOf('"'),s;if(o>=0&&o<i)s=t.indexOf("'",o+1),n+=t.substr(0,s+1),t=t.substr(s+1),i=t.indexOf("${");else if(r>=0&&r<i)s=t.indexOf('"',r+1),n+=t.substr(0,s+1),t=t.substr(s+1),i=t.indexOf("${");else{n+=t.substr(0,i);let a=t.indexOf("}");if(a<0)throw new ce("Unmatched {.");n+=`czm_${t.substr(i+2,a-(i+2))}`,t=t.substr(a+1),i=t.indexOf("${")}}return n+=t,n}function fQe(e){let t=typeof e.value;if(e.value===null)return new Dt(It.LITERAL_NULL,null);if(t==="boolean")return new Dt(It.LITERAL_BOOLEAN,e.value);if(t==="number")return new Dt(It.LITERAL_NUMBER,e.value);if(t==="string")return e.value.indexOf("${")>=0?new Dt(It.VARIABLE_IN_STRING,e.value):new Dt(It.LITERAL_STRING,DW(e.value))}function dQe(e,t){let n=t.arguments,i=n.length,o,r,s,a;if(t.callee.type==="MemberExpression"){o=t.callee.property.name;let c=t.callee.object;if(o==="test"||o==="exec"){if(!l(c.callee)||c.callee.name!=="regExp")throw new ce(`${o} is not a function.`);return i===0?o==="test"?new Dt(It.LITERAL_BOOLEAN,!1):new Dt(It.LITERAL_NULL,null):(s=Oi(e,c),a=Oi(e,n[0]),new Dt(It.FUNCTION_CALL,o,s,a))}else if(o==="toString")return r=Oi(e,c),new Dt(It.FUNCTION_CALL,o,r);throw new ce(`Unexpected function call "${o}".`)}if(o=t.callee.name,o==="color"){if(i===0)return new Dt(It.LITERAL_COLOR,o);if(r=Oi(e,n[0]),l(n[1])){let c=Oi(e,n[1]);return new Dt(It.LITERAL_COLOR,o,[r,c])}return new Dt(It.LITERAL_COLOR,o,[r])}else if(o==="rgb"||o==="hsl"){if(i<3)throw new ce(`${o} requires three arguments.`);return r=[Oi(e,n[0]),Oi(e,n[1]),Oi(e,n[2])],new Dt(It.LITERAL_COLOR,o,r)}else if(o==="rgba"||o==="hsla"){if(i<4)throw new ce(`${o} requires four arguments.`);return r=[Oi(e,n[0]),Oi(e,n[1]),Oi(e,n[2]),Oi(e,n[3])],new Dt(It.LITERAL_COLOR,o,r)}else if(o==="vec2"||o==="vec3"||o==="vec4"){r=new Array(i);for(let c=0;c<i;++c)r[c]=Oi(e,n[c]);return new Dt(It.LITERAL_VECTOR,o,r)}else{if(o==="isNaN"||o==="isFinite")return i===0?o==="isNaN"?new Dt(It.LITERAL_BOOLEAN,!0):new Dt(It.LITERAL_BOOLEAN,!1):(r=Oi(e,n[0]),new Dt(It.UNARY,o,r));if(o==="isExactClass"||o==="isClass"){if(i<1||i>1)throw new ce(`${o} requires exactly one argument.`);return r=Oi(e,n[0]),new Dt(It.UNARY,o,r)}else if(o==="getExactClassName"){if(i>0)throw new ce(`${o} does not take any argument.`);return new Dt(It.UNARY,o)}else if(l(lz[o])){if(i!==1)throw new ce(`${o} requires exactly one argument.`);return r=Oi(e,n[0]),new Dt(It.UNARY,o,r)}else if(l(uz[o])){if(i!==2)throw new ce(`${o} requires exactly two arguments.`);return s=Oi(e,n[0]),a=Oi(e,n[1]),new Dt(It.BINARY,o,s,a)}else if(l(vW[o])){if(i!==3)throw new ce(`${o} requires exactly three arguments.`);s=Oi(e,n[0]),a=Oi(e,n[1]);let c=Oi(e,n[2]);return new Dt(It.TERNARY,o,s,a,c)}else{if(o==="Boolean")return i===0?new Dt(It.LITERAL_BOOLEAN,!1):(r=Oi(e,n[0]),new Dt(It.UNARY,o,r));if(o==="Number")return i===0?new Dt(It.LITERAL_NUMBER,0):(r=Oi(e,n[0]),new Dt(It.UNARY,o,r));if(o==="String")return i===0?new Dt(It.LITERAL_STRING,""):(r=Oi(e,n[0]),new Dt(It.UNARY,o,r));if(o==="regExp")return hQe(e,t)}}throw new ce(`Unexpected function call "${o}".`)}function hQe(e,t){let n=t.arguments;if(n.length===0)return new Dt(It.LITERAL_REGEX,new RegExp);let i=Oi(e,n[0]),o;if(n.length>1){let r=Oi(e,n[1]);if(BW(i)&&BW(r)){try{o=new RegExp(DW(String(i._value)),r._value)}catch(s){throw new ce(s)}return new Dt(It.LITERAL_REGEX,o)}return new Dt(It.REGEX,i,r)}if(BW(i)){try{o=new RegExp(DW(String(i._value)))}catch(r){throw new ce(r)}return new Dt(It.LITERAL_REGEX,o)}return new Dt(It.REGEX,i)}function mQe(e){if(_Qe(e.name)){let t=yQe(e.name);return t.substr(0,8)==="tiles3d_"?new Dt(It.BUILTIN_VARIABLE,t):new Dt(It.VARIABLE,t)}else{if(e.name==="NaN")return new Dt(It.LITERAL_NUMBER,NaN);if(e.name==="Infinity")return new Dt(It.LITERAL_NUMBER,1/0);if(e.name==="undefined")return new Dt(It.LITERAL_UNDEFINED,void 0)}throw new ce(`${e.name} is not defined.`)}function AQe(e){let t=e.property.name;if(t==="PI")return new Dt(It.LITERAL_NUMBER,Math.PI);if(t==="E")return new Dt(It.LITERAL_NUMBER,Math.E)}function pQe(e){if(e.property.name==="POSITIVE_INFINITY")return new Dt(It.LITERAL_NUMBER,Number.POSITIVE_INFINITY)}function gQe(e,t){if(t.object.name==="Math")return AQe(t);if(t.object.name==="Number")return pQe(t);let n,i=Oi(e,t.object);return t.computed?(n=Oi(e,t.property),new Dt(It.MEMBER,"brackets",i,n)):(n=new Dt(It.LITERAL_STRING,t.property.name),new Dt(It.MEMBER,"dot",i,n))}function BW(e){return e._type>=It.LITERAL_NULL}function _Qe(e){return e.substr(0,4)==="czm_"}function yQe(e){return e.substr(4)}function Oi(e,t){let n,i,o,r;if(t.type==="Literal")n=fQe(t);else if(t.type==="CallExpression")n=dQe(e,t);else if(t.type==="Identifier")n=mQe(t);else if(t.type==="UnaryExpression"){i=t.operator;let s=Oi(e,t.argument);if(X2e.indexOf(i)>-1)n=new Dt(It.UNARY,i,s);else throw new ce(`Unexpected operator "${i}".`)}else if(t.type==="BinaryExpression")if(i=t.operator,o=Oi(e,t.left),r=Oi(e,t.right),Wse.indexOf(i)>-1)n=new Dt(It.BINARY,i,o,r);else throw new ce(`Unexpected operator "${i}".`);else if(t.type==="LogicalExpression")i=t.operator,o=Oi(e,t.left),r=Oi(e,t.right),Wse.indexOf(i)>-1&&(n=new Dt(It.BINARY,i,o,r));else if(t.type==="ConditionalExpression"){let s=Oi(e,t.test);o=Oi(e,t.consequent),r=Oi(e,t.alternate),n=new Dt(It.CONDITIONAL,"?",o,r,s)}else if(t.type==="MemberExpression")n=gQe(e,t);else if(t.type==="ArrayExpression"){let s=[];for(let a=0;a<t.elements.length;a++)s[a]=Oi(e,t.elements[a]);n=new Dt(It.ARRAY,s)}else throw t.type==="Compound"?new ce("Provide exactly one expression."):new ce("Cannot parse expression.");return n}function CQe(e){e._type===It.CONDITIONAL?e.evaluate=e._evaluateConditional:e._type===It.FUNCTION_CALL?e._value==="test"?e.evaluate=e._evaluateRegExpTest:e._value==="exec"?e.evaluate=e._evaluateRegExpExec:e._value==="toString"&&(e.evaluate=e._evaluateToString):e._type===It.UNARY?e._value==="!"?e.evaluate=e._evaluateNot:e._value==="-"?e.evaluate=e._evaluateNegative:e._value==="+"?e.evaluate=e._evaluatePositive:e._value==="isNaN"?e.evaluate=e._evaluateNaN:e._value==="isFinite"?e.evaluate=e._evaluateIsFinite:e._value==="isExactClass"?e.evaluate=e._evaluateIsExactClass:e._value==="isClass"?e.evaluate=e._evaluateIsClass:e._value==="getExactClassName"?e.evaluate=e._evaluateGetExactClassName:e._value==="Boolean"?e.evaluate=e._evaluateBooleanConversion:e._value==="Number"?e.evaluate=e._evaluateNumberConversion:e._value==="String"?e.evaluate=e._evaluateStringConversion:l(lz[e._value])&&(e.evaluate=IQe(e._value)):e._type===It.BINARY?e._value==="+"?e.evaluate=e._evaluatePlus:e._value==="-"?e.evaluate=e._evaluateMinus:e._value==="*"?e.evaluate=e._evaluateTimes:e._value==="/"?e.evaluate=e._evaluateDivide:e._value==="%"?e.evaluate=e._evaluateMod:e._value==="==="?e.evaluate=e._evaluateEqualsStrict:e._value==="!=="?e.evaluate=e._evaluateNotEqualsStrict:e._value==="<"?e.evaluate=e._evaluateLessThan:e._value==="<="?e.evaluate=e._evaluateLessThanOrEquals:e._value===">"?e.evaluate=e._evaluateGreaterThan:e._value===">="?e.evaluate=e._evaluateGreaterThanOrEquals:e._value==="&&"?e.evaluate=e._evaluateAnd:e._value==="||"?e.evaluate=e._evaluateOr:e._value==="=~"?e.evaluate=e._evaluateRegExpMatch:e._value==="!~"?e.evaluate=e._evaluateRegExpNotMatch:l(uz[e._value])&&(e.evaluate=xQe(e._value)):e._type===It.TERNARY?e.evaluate=bQe(e._value):e._type===It.MEMBER?e._value==="brackets"?e.evaluate=e._evaluateMemberBrackets:e.evaluate=e._evaluateMemberDot:e._type===It.ARRAY?e.evaluate=e._evaluateArray:e._type===It.VARIABLE?e.evaluate=e._evaluateVariable:e._type===It.VARIABLE_IN_STRING?e.evaluate=e._evaluateVariableString:e._type===It.LITERAL_COLOR?e.evaluate=e._evaluateLiteralColor:e._type===It.LITERAL_VECTOR?e.evaluate=e._evaluateLiteralVector:e._type===It.LITERAL_STRING?e.evaluate=e._evaluateLiteralString:e._type===It.REGEX?e.evaluate=e._evaluateRegExp:e._type===It.BUILTIN_VARIABLE?e._value==="tiles3d_tileset_time"&&(e.evaluate=EQe):e.evaluate=e._evaluateLiteral}function EQe(e){return l(e)?e.content.tileset.timeSinceLoad:0}function IQe(e){let t=lz[e];return function(n){let i=this._left.evaluate(n);return t(e,i)}}function xQe(e){let t=uz[e];return function(n){let i=this._left.evaluate(n),o=this._right.evaluate(n);return t(e,i,o)}}function bQe(e){let t=vW[e];return function(n){let i=this._left.evaluate(n),o=this._right.evaluate(n),r=this._test.evaluate(n);return t(e,i,o,r)}}function fz(e,t){if(l(e))return e.getPropertyInherited(t)}Dt.prototype._evaluateLiteral=function(){return this._value};Dt.prototype._evaluateLiteralColor=function(e){let t=cz,n=this._left;if(this._value==="color")l(n)?n.length>1?(G.fromCssColorString(n[0].evaluate(e),t),t.alpha=n[1].evaluate(e)):G.fromCssColorString(n[0].evaluate(e),t):G.fromBytes(255,255,255,255,t);else if(this._value==="rgb")G.fromBytes(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),255,t);else if(this._value==="rgba"){let i=n[3].evaluate(e)*255;G.fromBytes(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),i,t)}else this._value==="hsl"?G.fromHsl(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),1,t):this._value==="hsla"&&G.fromHsl(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),n[3].evaluate(e),t);return se.fromColor(t,Gn.getCartesian4())};Dt.prototype._evaluateLiteralVector=function(e){let t=Gn.getArray(),n=this._value,i=this._left,o=i.length;for(let a=0;a<o;++a){let c=i[a].evaluate(e);if(typeof c=="number")t.push(c);else if(c instanceof U)t.push(c.x,c.y);else if(c instanceof d)t.push(c.x,c.y,c.z);else if(c instanceof se)t.push(c.x,c.y,c.z,c.w);else throw new ce(`${n} argument must be a vector or number. Argument is ${c}.`)}let r=t.length,s=parseInt(n.charAt(3));if(r===0)throw new ce(`Invalid ${n} constructor. No valid arguments.`);if(r<s&&r>1)throw new ce(`Invalid ${n} constructor. Not enough arguments.`);if(r>s&&o>1)throw new ce(`Invalid ${n} constructor. Too many arguments.`);if(r===1){let a=t[0];t.push(a,a,a)}if(n==="vec2")return U.fromArray(t,0,Gn.getCartesian2());if(n==="vec3")return d.fromArray(t,0,Gn.getCartesian3());if(n==="vec4")return se.fromArray(t,0,Gn.getCartesian4())};Dt.prototype._evaluateLiteralString=function(){return this._value};Dt.prototype._evaluateVariableString=function(e){let t=this._value,n=zR.exec(t);for(;n!==null;){let i=n[0],o=n[1],r=fz(e,o);l(r)||(r=""),t=t.replace(i,r),zR.lastIndex+=r.length-i.length,n=zR.exec(t)}return t};Dt.prototype._evaluateVariable=function(e){return fz(e,this._value)};function RE(e){return e._value==="feature"}Dt.prototype._evaluateMemberDot=function(e){if(RE(this._left))return fz(e,this._right.evaluate(e));let t=this._left.evaluate(e);if(!l(t))return;let n=this._right.evaluate(e);if(t instanceof U||t instanceof d||t instanceof se){if(n==="r")return t.x;if(n==="g")return t.y;if(n==="b")return t.z;if(n==="a")return t.w}return t[n]};Dt.prototype._evaluateMemberBrackets=function(e){if(RE(this._left))return fz(e,this._right.evaluate(e));let t=this._left.evaluate(e);if(!l(t))return;let n=this._right.evaluate(e);if(t instanceof U||t instanceof d||t instanceof se){if(n===0||n==="r")return t.x;if(n===1||n==="g")return t.y;if(n===2||n==="b")return t.z;if(n===3||n==="a")return t.w}return t[n]};Dt.prototype._evaluateArray=function(e){let t=[];for(let n=0;n<this._value.length;n++)t[n]=this._value[n].evaluate(e);return t};Dt.prototype._evaluateNot=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new ce(`Operator "!" requires a boolean argument. Argument is ${t}.`);return!t};Dt.prototype._evaluateNegative=function(e){let t=this._left.evaluate(e);if(t instanceof U)return U.negate(t,Gn.getCartesian2());if(t instanceof d)return d.negate(t,Gn.getCartesian3());if(t instanceof se)return se.negate(t,Gn.getCartesian4());if(typeof t=="number")return-t;throw new ce(`Operator "-" requires a vector or number argument. Argument is ${t}.`)};Dt.prototype._evaluatePositive=function(e){let t=this._left.evaluate(e);if(!(t instanceof U||t instanceof d||t instanceof se||typeof t=="number"))throw new ce(`Operator "+" requires a vector or number argument. Argument is ${t}.`);return t};Dt.prototype._evaluateLessThan=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new ce(`Operator "<" requires number arguments. Arguments are ${t} and ${n}.`);return t<n};Dt.prototype._evaluateLessThanOrEquals=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new ce(`Operator "<=" requires number arguments. Arguments are ${t} and ${n}.`);return t<=n};Dt.prototype._evaluateGreaterThan=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new ce(`Operator ">" requires number arguments. Arguments are ${t} and ${n}.`);return t>n};Dt.prototype._evaluateGreaterThanOrEquals=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new ce(`Operator ">=" requires number arguments. Arguments are ${t} and ${n}.`);return t>=n};Dt.prototype._evaluateOr=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new ce(`Operator "||" requires boolean arguments. First argument is ${t}.`);if(t)return!0;let n=this._right.evaluate(e);if(typeof n!="boolean")throw new ce(`Operator "||" requires boolean arguments. Second argument is ${n}.`);return t||n};Dt.prototype._evaluateAnd=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new ce(`Operator "&&" requires boolean arguments. First argument is ${t}.`);if(!t)return!1;let n=this._right.evaluate(e);if(typeof n!="boolean")throw new ce(`Operator "&&" requires boolean arguments. Second argument is ${n}.`);return t&&n};Dt.prototype._evaluatePlus=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof U&&t instanceof U)return U.add(t,n,Gn.getCartesian2());if(n instanceof d&&t instanceof d)return d.add(t,n,Gn.getCartesian3());if(n instanceof se&&t instanceof se)return se.add(t,n,Gn.getCartesian4());if(typeof t=="string"||typeof n=="string")return t+n;if(typeof t=="number"&&typeof n=="number")return t+n;throw new ce(`Operator "+" requires vector or number arguments of matching types, or at least one string argument. Arguments are ${t} and ${n}.`)};Dt.prototype._evaluateMinus=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof U&&t instanceof U)return U.subtract(t,n,Gn.getCartesian2());if(n instanceof d&&t instanceof d)return d.subtract(t,n,Gn.getCartesian3());if(n instanceof se&&t instanceof se)return se.subtract(t,n,Gn.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t-n;throw new ce(`Operator "-" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)};Dt.prototype._evaluateTimes=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof U&&t instanceof U)return U.multiplyComponents(t,n,Gn.getCartesian2());if(n instanceof U&&typeof t=="number")return U.multiplyByScalar(n,t,Gn.getCartesian2());if(t instanceof U&&typeof n=="number")return U.multiplyByScalar(t,n,Gn.getCartesian2());if(n instanceof d&&t instanceof d)return d.multiplyComponents(t,n,Gn.getCartesian3());if(n instanceof d&&typeof t=="number")return d.multiplyByScalar(n,t,Gn.getCartesian3());if(t instanceof d&&typeof n=="number")return d.multiplyByScalar(t,n,Gn.getCartesian3());if(n instanceof se&&t instanceof se)return se.multiplyComponents(t,n,Gn.getCartesian4());if(n instanceof se&&typeof t=="number")return se.multiplyByScalar(n,t,Gn.getCartesian4());if(t instanceof se&&typeof n=="number")return se.multiplyByScalar(t,n,Gn.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t*n;throw new ce(`Operator "*" requires vector or number arguments. If both arguments are vectors they must be matching types. Arguments are ${t} and ${n}.`)};Dt.prototype._evaluateDivide=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof U&&t instanceof U)return U.divideComponents(t,n,Gn.getCartesian2());if(t instanceof U&&typeof n=="number")return U.divideByScalar(t,n,Gn.getCartesian2());if(n instanceof d&&t instanceof d)return d.divideComponents(t,n,Gn.getCartesian3());if(t instanceof d&&typeof n=="number")return d.divideByScalar(t,n,Gn.getCartesian3());if(n instanceof se&&t instanceof se)return se.divideComponents(t,n,Gn.getCartesian4());if(t instanceof se&&typeof n=="number")return se.divideByScalar(t,n,Gn.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t/n;throw new ce(`Operator "/" requires vector or number arguments of matching types, or a number as the second argument. Arguments are ${t} and ${n}.`)};Dt.prototype._evaluateMod=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof U&&t instanceof U)return U.fromElements(t.x%n.x,t.y%n.y,Gn.getCartesian2());if(n instanceof d&&t instanceof d)return d.fromElements(t.x%n.x,t.y%n.y,t.z%n.z,Gn.getCartesian3());if(n instanceof se&&t instanceof se)return se.fromElements(t.x%n.x,t.y%n.y,t.z%n.z,t.w%n.w,Gn.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t%n;throw new ce(`Operator "%" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)};Dt.prototype._evaluateEqualsStrict=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);return n instanceof U&&t instanceof U||n instanceof d&&t instanceof d||n instanceof se&&t instanceof se?t.equals(n):t===n};Dt.prototype._evaluateNotEqualsStrict=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);return n instanceof U&&t instanceof U||n instanceof d&&t instanceof d||n instanceof se&&t instanceof se?!t.equals(n):t!==n};Dt.prototype._evaluateConditional=function(e){let t=this._test.evaluate(e);if(typeof t!="boolean")throw new ce(`Conditional argument of conditional expression must be a boolean. Argument is ${t}.`);return t?this._left.evaluate(e):this._right.evaluate(e)};Dt.prototype._evaluateNaN=function(e){return isNaN(this._left.evaluate(e))};Dt.prototype._evaluateIsFinite=function(e){return isFinite(this._left.evaluate(e))};Dt.prototype._evaluateIsExactClass=function(e){return l(e)?e.isExactClass(this._left.evaluate(e)):!1};Dt.prototype._evaluateIsClass=function(e){return l(e)?e.isClass(this._left.evaluate(e)):!1};Dt.prototype._evaluateGetExactClassName=function(e){if(l(e))return e.getExactClassName()};Dt.prototype._evaluateBooleanConversion=function(e){return!!this._left.evaluate(e)};Dt.prototype._evaluateNumberConversion=function(e){return Number(this._left.evaluate(e))};Dt.prototype._evaluateStringConversion=function(e){return String(this._left.evaluate(e))};Dt.prototype._evaluateRegExp=function(e){let t=this._value.evaluate(e),n="";l(this._left)&&(n=this._left.evaluate(e));let i;try{i=new RegExp(t,n)}catch(o){throw new ce(o)}return i};Dt.prototype._evaluateRegExpTest=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(!(t instanceof RegExp&&typeof n=="string"))throw new ce(`RegExp.test requires the first argument to be a RegExp and the second argument to be a string. Arguments are ${t} and ${n}.`);return t.test(n)};Dt.prototype._evaluateRegExpMatch=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(t instanceof RegExp&&typeof n=="string")return t.test(n);if(n instanceof RegExp&&typeof t=="string")return n.test(t);throw new ce(`Operator "=~" requires one RegExp argument and one string argument. Arguments are ${t} and ${n}.`)};Dt.prototype._evaluateRegExpNotMatch=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(t instanceof RegExp&&typeof n=="string")return!t.test(n);if(n instanceof RegExp&&typeof t=="string")return!n.test(t);throw new ce(`Operator "!~" requires one RegExp argument and one string argument. Arguments are ${t} and ${n}.`)};Dt.prototype._evaluateRegExpExec=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(!(t instanceof RegExp&&typeof n=="string"))throw new ce(`RegExp.exec requires the first argument to be a RegExp and the second argument to be a string. Arguments are ${t} and ${n}.`);let i=t.exec(n);return l(i)?i[1]:null};Dt.prototype._evaluateToString=function(e){let t=this._left.evaluate(e);if(t instanceof RegExp||t instanceof U||t instanceof d||t instanceof se)return String(t);throw new ce(`Unexpected function call "${this._value}".`)};function Yse(e){let t=e._left,n=t.length;for(let a=0;a<n;++a)if(t[a]._type!==It.LITERAL_NUMBER)return;let i=t[0]._value,o=t[1]._value,r=t[2]._value,s=n===4?t[3]._value:1;return G.fromHsl(i,o,r,s,cz)}function qse(e){let t=e._left,n=t.length;for(let o=0;o<n;++o)if(t[o]._type!==It.LITERAL_NUMBER)return;let i=cz;return i.red=t[0]._value/255,i.green=t[1]._value/255,i.blue=t[2]._value/255,i.alpha=n===4?t[3]._value:1,i}function Q_(e){return e%1===0?e.toFixed(1):e.toString()}function TQe(e){let t=Q_(e.red),n=Q_(e.green),i=Q_(e.blue);return`vec3(${t}, ${n}, ${i})`}function az(e){let t=Q_(e.red),n=Q_(e.green),i=Q_(e.blue),o=Q_(e.alpha);return`vec4(${t}, ${n}, ${i}, ${o})`}function Kse(e,t,n,i){let o=e.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=e[s].getShaderExpression(t,n,i);return r}function Xse(e,t){return l(t[e])?t[e]:xh.NULL_SENTINEL}xh.NULL_SENTINEL="czm_infinity";Dt.prototype.getShaderExpression=function(e,t,n){let i,o,r,s,a=this._type,c=this._value;l(this._left)&&(Array.isArray(this._left)?o=Kse(this._left,e,t,this):o=this._left.getShaderExpression(e,t,this)),l(this._right)&&(r=this._right.getShaderExpression(e,t,this)),l(this._test)&&(s=this._test.getShaderExpression(e,t,this)),Array.isArray(this._value)&&(c=Kse(this._value,e,t,this));let u,f,h;switch(a){case It.VARIABLE:return RE(this)?void 0:Xse(c,e);case It.UNARY:if(c==="Boolean")return`bool(${o})`;if(c==="Number")return`float(${o})`;if(c==="round")return`floor(${o} + 0.5)`;if(l(lz[c]))return`${c}(${o})`;if(c==="isNaN")return`(${o} != ${o})`;if(c==="isFinite")return`(abs(${o}) < czm_infinity)`;if(c==="String"||c==="isExactClass"||c==="isClass"||c==="getExactClassName")throw new ce(`Error generating style shader: "${c}" is not supported.`);return c+o;case It.BINARY:return c==="%"?`mod(${o}, ${r})`:c==="==="?`(${o} == ${r})`:c==="!=="?`(${o} != ${r})`:c==="atan2"?`atan(${o}, ${r})`:l(uz[c])?`${c}(${o}, ${r})`:`(${o} ${c} ${r})`;case It.TERNARY:if(l(vW[c]))return`${c}(${o}, ${r}, ${s})`;break;case It.CONDITIONAL:return`(${s} ? ${o} : ${r})`;case It.MEMBER:return RE(this._left)?Xse(r,e):r==="r"||r==="x"||r==="0.0"?`${o}[0]`:r==="g"||r==="y"||r==="1.0"?`${o}[1]`:r==="b"||r==="z"||r==="2.0"?`${o}[2]`:r==="a"||r==="w"||r==="3.0"?`${o}[3]`:`${o}[int(${r})]`;case It.FUNCTION_CALL:throw new ce(`Error generating style shader: "${c}" is not supported.`);case It.ARRAY:if(c.length===4)return`vec4(${c[0]}, ${c[1]}, ${c[2]}, ${c[3]})`;if(c.length===3)return`vec3(${c[0]}, ${c[1]}, ${c[2]})`;if(c.length===2)return`vec2(${c[0]}, ${c[1]})`;throw new ce("Error generating style shader: Invalid array length. Array length should be 2, 3, or 4.");case It.REGEX:throw new ce("Error generating style shader: Regular expressions are not supported.");case It.VARIABLE_IN_STRING:throw new ce("Error generating style shader: Converting a variable to a string is not supported.");case It.LITERAL_NULL:return xh.NULL_SENTINEL;case It.LITERAL_BOOLEAN:return c?"true":"false";case It.LITERAL_NUMBER:return Q_(c);case It.LITERAL_STRING:if(l(n)&&n._type===It.MEMBER&&(c==="r"||c==="g"||c==="b"||c==="a"||c==="x"||c==="y"||c==="z"||c==="w"||RE(n._left)))return c;if(i=G.fromCssColorString(c,cz),l(i))return TQe(i);throw new ce("Error generating style shader: String literals are not supported.");case It.LITERAL_COLOR:if(u=o,c==="color"){if(l(u)){if(u.length>1){let A=u[0],g=u[1];return g!=="1.0"&&(t.translucent=!0),`vec4(${A}, ${g})`}}else return"vec4(1.0)";return`vec4(${u[0]}, 1.0)`}else{if(c==="rgb")return i=qse(this),l(i)?az(i):`vec4(${u[0]} / 255.0, ${u[1]} / 255.0, ${u[2]} / 255.0, 1.0)`;if(c==="rgba")return u[3]!=="1.0"&&(t.translucent=!0),i=qse(this),l(i)?az(i):`vec4(${u[0]} / 255.0, ${u[1]} / 255.0, ${u[2]} / 255.0, ${u[3]})`;if(c==="hsl")return i=Yse(this),l(i)?az(i):`vec4(czm_HSLToRGB(vec3(${u[0]}, ${u[1]}, ${u[2]})), 1.0)`;if(c==="hsla")return i=Yse(this),l(i)?(i.alpha!==1&&(t.translucent=!0),az(i)):(u[3]!=="1.0"&&(t.translucent=!0),`vec4(czm_HSLToRGB(vec3(${u[0]}, ${u[1]}, ${u[2]})), ${u[3]})`)}break;case It.LITERAL_VECTOR:f=o.length,h=`${c}(`;for(let A=0;A<f;++A)h+=o[A],A<f-1&&(h+=", ");return h+=")",h;case It.LITERAL_REGEX:throw new ce("Error generating style shader: Regular expressions are not supported.");case It.LITERAL_UNDEFINED:return xh.NULL_SENTINEL;case It.BUILTIN_VARIABLE:if(c==="tiles3d_tileset_time")return c}};Dt.prototype.getVariables=function(e,t){let n,i,o,r=this._type,s=this._value;if(l(this._left))if(Array.isArray(this._left))for(n=this._left,i=n.length,o=0;o<i;++o)n[o].getVariables(e,this);else this._left.getVariables(e,this);if(l(this._right)&&this._right.getVariables(e,this),l(this._test)&&this._test.getVariables(e,this),Array.isArray(this._value))for(n=this._value,i=n.length,o=0;o<i;++o)n[o].getVariables(e,this);let a;switch(r){case It.VARIABLE:RE(this)||e.push(s);break;case It.VARIABLE_IN_STRING:for(a=zR.exec(s);a!==null;)e.push(a[1]),a=zR.exec(s);break;case It.LITERAL_STRING:l(t)&&t._type===It.MEMBER&&RE(t._left)&&e.push(s);break}};var id=xh;function xp(e){e=e??V.EMPTY_OBJECT,this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._positions=e.positions,this._vertexBatchIds=e.vertexBatchIds,this._indices=e.indices,this._indexCounts=e.indexCounts,this._indexOffsets=e.indexOffsets,this._batchedIndices=e.batchedIndices,this._boundingVolume=e.boundingVolume,this._boundingVolumes=e.boundingVolumes,this._center=e.center??d.ZERO,this._va=void 0,this._sp=void 0,this._spStencil=void 0,this._spPick=void 0,this._uniformMap=void 0,this._vaSwap=void 0,this._rsStencilDepthPass=void 0,this._rsStencilDepthPass3DTiles=void 0,this._rsColorPass=void 0,this._rsPickPass=void 0,this._rsWireframe=void 0,this._commands=[],this._commandsIgnoreShow=[],this._pickCommands=[],this._constantColor=G.clone(G.WHITE),this._highlightColor=this._constantColor,this._batchDirty=!0,this._pickCommandsDirty=!0,this._framesSinceLastRebatch=0,this._updatingAllCommands=!1,this._trianglesLength=this._indices.length/3,this._geometryByteLength=this._indices.byteLength+this._positions.byteLength+this._vertexBatchIds.byteLength,this.debugWireframe=!1,this._debugWireframe=this.debugWireframe,this._wireframeDirty=!1,this.forceRebatch=!1,this.classificationType=e.classificationType??Jn.BOTH,this._vertexShaderSource=e._vertexShaderSource,this._fragmentShaderSource=e._fragmentShaderSource,this._attributeLocations=e._attributeLocations,this._uniformMap=e._uniformMap,this._pickId=e._pickId,this._modelMatrix=e._modelMatrix,this._boundingSphere=e._boundingSphere,this._batchIdLookUp={};let t=this._batchIds.length;for(let n=0;n<t;++n){let i=this._batchIds[n];this._batchIdLookUp[i]=n}}Object.defineProperties(xp.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}}});var SQe={position:0,a_batchId:1};function wQe(e,t){if(l(e._va))return;let n=Ct.createVertexBuffer({context:t,typedArray:e._positions,usage:Qe.STATIC_DRAW}),i=Ct.createVertexBuffer({context:t,typedArray:e._vertexBatchIds,usage:Qe.STATIC_DRAW}),o=Ct.createIndexBuffer({context:t,typedArray:e._indices,usage:Qe.DYNAMIC_DRAW,indexDatatype:e._indices.BYTES_PER_ELEMENT===2?Oe.UNSIGNED_SHORT:Oe.UNSIGNED_INT}),r=[{index:0,vertexBuffer:n,componentDatatype:q.fromTypedArray(e._positions),componentsPerAttribute:3},{index:1,vertexBuffer:i,componentDatatype:q.fromTypedArray(e._vertexBatchIds),componentsPerAttribute:1}];e._va=new li({context:t,attributes:r,indexBuffer:o}),t.webgl2&&(e._vaSwap=new li({context:t,attributes:r,indexBuffer:Ct.createIndexBuffer({context:t,sizeInBytes:o.sizeInBytes,usage:Qe.DYNAMIC_DRAW,indexDatatype:o.indexDatatype})})),e._batchedPositions=void 0,e._transferrableBatchIds=void 0,e._vertexBatchIds=void 0}function BQe(e,t){if(l(e._sp))return;let n=e._batchTable,i=e._attributeLocations??SQe,o=e._pickId,r=e._vertexShaderSource,s=e._fragmentShaderSource;if(l(r)){e._sp=an.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:i}),e._spStencil=e._sp,s=He.replaceMain(s,"czm_non_pick_main"),s=`${s}void main() +{ + czm_non_pick_main(); + out_FragColor = ${o}; +} +`,e._spPick=an.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:i});return}let a=n.getVertexShaderCallback(!1,"a_batchId",void 0)(Ab),c=n.getFragmentShaderCallback(!1,void 0,!0)(B_);o=n.getPickId();let u=new He({sources:[a]}),f=new He({defines:["VECTOR_TILE"],sources:[c]});e._sp=an.fromCache({context:t,vertexShaderSource:u,fragmentShaderSource:f,attributeLocations:i}),u=new He({sources:[Ab]}),f=new He({defines:["VECTOR_TILE"],sources:[B_]}),e._spStencil=an.fromCache({context:t,vertexShaderSource:u,fragmentShaderSource:f,attributeLocations:i}),c=He.replaceMain(c,"czm_non_pick_main"),c=`${c} +void main() +{ + czm_non_pick_main(); + out_FragColor = ${o}; +} +`;let h=new He({sources:[a]}),A=new He({defines:["VECTOR_TILE"],sources:[c]});e._spPick=an.fromCache({context:t,vertexShaderSource:h,fragmentShaderSource:A,attributeLocations:i})}function Jse(e){let t=e?Zn.EQUAL:Zn.ALWAYS;return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:!0,frontFunction:t,frontOperation:{fail:_t.KEEP,zFail:_t.DECREMENT_WRAP,zPass:_t.KEEP},backFunction:t,backOperation:{fail:_t.KEEP,zFail:_t.INCREMENT_WRAP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Qa.LESS_OR_EQUAL},depthMask:!1}}var DQe={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:pn.PRE_MULTIPLIED_ALPHA_BLEND},vQe={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1};function PQe(e){l(e._rsStencilDepthPass)||(e._rsStencilDepthPass=Ue.fromCache(Jse(!1)),e._rsStencilDepthPass3DTiles=Ue.fromCache(Jse(!0)),e._rsColorPass=Ue.fromCache(DQe),e._rsPickPass=Ue.fromCache(vQe))}var ME=new N,Zse=new d;function RQe(e,t){if(l(e._uniformMap))return;let n={u_modifiedModelViewProjection:function(){let i=t.uniformState.view,o=t.uniformState.projection;return N.clone(i,ME),N.multiplyByPoint(ME,e._center,Zse),N.setTranslation(ME,Zse,ME),N.multiply(o,ME,ME),ME},u_highlightColor:function(){return e._highlightColor}};e._uniformMap=e._batchTable.getUniformMapCallback()(n)}function PW(e,t,n,i,o,r,s){let a=e.constructor.BYTES_PER_ELEMENT,c=r.length;for(let u=0;u<c;++u){let f=r[u],h=s[f],A=i[h],g=o[h],m=new e.constructor(e.buffer,a*A,g);t.set(m,n),i[h]=n,n+=g}return n}function MQe(e,t){let n=e._indices,i=e._indexOffsets,o=e._indexCounts,r=e._batchIdLookUp,s=new n.constructor(n.length),a=t.pop(),c=[a],u=PW(n,s,0,i,o,a.batchIds,r);for(a.offset=0,a.count=u;t.length>0;){let f=t.pop();if(G.equals(f.color,a.color))u=PW(n,s,u,i,o,f.batchIds,r),a.batchIds=a.batchIds.concat(f.batchIds),a.count=u-a.offset;else{let h=u;u=PW(n,s,u,i,o,f.batchIds,r),f.offset=h,f.count=u-h,c.push(f),a=f}}e._va.indexBuffer.copyFromArrayView(s),e._indices=s,e._batchedIndices=c}function RW(e,t,n,i,o,r,s){let a=e.bytesPerIndex,c=r.length;for(let u=0;u<c;++u){let f=r[u],h=s[f],A=i[h],g=o[h];t.copyFromBuffer(e,A*a,n*a,g*a),i[h]=n,n+=g}return n}function NQe(e,t){let n=e._indexOffsets,i=e._indexCounts,o=e._batchIdLookUp,r=t.pop(),s=[r],a=e._va.indexBuffer,c=e._vaSwap.indexBuffer,u=RW(a,c,0,n,i,r.batchIds,o);for(r.offset=0,r.count=u;t.length>0;){let h=t.pop();if(G.equals(h.color,r.color))u=RW(a,c,u,n,i,h.batchIds,o),r.batchIds=r.batchIds.concat(h.batchIds),r.count=u-r.offset;else{let A=u;u=RW(a,c,u,n,i,h.batchIds,o),h.offset=A,h.count=u-A,s.push(h),r=h}}let f=e._va;e._va=e._vaSwap,e._vaSwap=f,e._batchedIndices=s}function LQe(e,t){return t.color.toRgba()-e.color.toRgba()}function OQe(e,t){if(!e._batchDirty)return!1;let n=e._batchedIndices,i=n.length,o=!1,r={};for(let s=0;s<i;++s){let c=n[s].color.toRgba();if(l(r[c])){o=!0;break}else r[c]=!0}if(!o)return e._batchDirty=!1,!1;if(o&&!e.forceRebatch&&e._framesSinceLastRebatch<120){++e._framesSinceLastRebatch;return}return n.sort(LQe),t.webgl2?NQe(e,n):MQe(e,n),e._framesSinceLastRebatch=0,e._batchDirty=!1,e._pickCommandsDirty=!0,e._wireframeDirty=!0,!0}function FQe(e,t){let n=OQe(e,t),i=e._commands,o=e._batchedIndices,r=o.length,s=r*2;if(l(i)&&!n&&i.length===s)return;i.length=s;let a=e._va,c=e._sp,u=e._modelMatrix??N.IDENTITY,f=e._uniformMap,h=e._boundingVolume;for(let A=0;A<r;++A){let g=o[A].offset,m=o[A].count,_=i[A*2];l(_)||(_=i[A*2]=new nt({owner:e})),_.vertexArray=a,_.modelMatrix=u,_.offset=g,_.count=m,_.renderState=e._rsStencilDepthPass,_.shaderProgram=c,_.uniformMap=f,_.boundingVolume=h,_.cull=!1,_.pass=Be.TERRAIN_CLASSIFICATION;let y=nt.shallowClone(_,_.derivedCommands.tileset);y.renderState=e._rsStencilDepthPass3DTiles,y.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,_.derivedCommands.tileset=y;let C=i[A*2+1];l(C)||(C=i[A*2+1]=new nt({owner:e})),C.vertexArray=a,C.modelMatrix=u,C.offset=g,C.count=m,C.renderState=e._rsColorPass,C.shaderProgram=c,C.uniformMap=f,C.boundingVolume=h,C.cull=!1,C.pass=Be.TERRAIN_CLASSIFICATION;let E=nt.shallowClone(C,C.derivedCommands.tileset);E.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,C.derivedCommands.tileset=E}e._commandsDirty=!0}function QQe(e,t){if(e.classificationType===Jn.TERRAIN||!t.invertClassification||l(e._commandsIgnoreShow)&&!e._commandsDirty)return;let n=e._commands,i=e._commandsIgnoreShow,o=e._spStencil,r=n.length,s=i.length=r/2,a=0;for(let c=0;c<s;++c){let u=i[c]=nt.shallowClone(n[a],i[c]);u.shaderProgram=o,u.pass=Be.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,a+=2}e._commandsDirty=!1}function kQe(e){if(!e._pickCommandsDirty)return;let t=e._indexOffsets.length,n=e._pickCommands;n.length=t*2;let i=e._va,o=e._spStencil,r=e._spPick,s=e._modelMatrix??N.IDENTITY,a=e._uniformMap;for(let c=0;c<t;++c){let u=e._indexOffsets[c],f=e._indexCounts[c],h=l(e._boundingVolumes)?e._boundingVolumes[c]:e.boundingVolume,A=n[c*2];l(A)||(A=n[c*2]=new nt({owner:e,pickOnly:!0})),A.vertexArray=i,A.modelMatrix=s,A.offset=u,A.count=f,A.renderState=e._rsStencilDepthPass,A.shaderProgram=o,A.uniformMap=a,A.boundingVolume=h,A.pass=Be.TERRAIN_CLASSIFICATION;let g=nt.shallowClone(A,A.derivedCommands.tileset);g.renderState=e._rsStencilDepthPass3DTiles,g.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,A.derivedCommands.tileset=g;let m=n[c*2+1];l(m)||(m=n[c*2+1]=new nt({owner:e,pickOnly:!0})),m.vertexArray=i,m.modelMatrix=s,m.offset=u,m.count=f,m.renderState=e._rsPickPass,m.shaderProgram=r,m.uniformMap=a,m.boundingVolume=h,m.pass=Be.TERRAIN_CLASSIFICATION;let _=nt.shallowClone(m,m.derivedCommands.tileset);_.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,m.derivedCommands.tileset=_}e._pickCommandsDirty=!1}xp.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new ha(e,r)}};xp.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function UQe(e,t){e._updatingAllCommands=!0;let n=e._batchIds,i=n.length,o;for(o=0;o<i;++o){let s=n[o],a=t[s];a.show=!0,a.color=G.WHITE}let r=e._batchedIndices;for(i=r.length,o=0;o<i;++o)r[o].color=G.clone(G.WHITE);e._updatingAllCommands=!1,e._batchDirty=!0}var GQe=new G,zQe=G.WHITE,VQe=!0,HQe=/\$/;xp.prototype.applyStyle=function(e,t){if(!l(e)){UQe(this,t);return}let n=e.color,i=n instanceof id&&!HQe.test(n.expression);this._updatingAllCommands=i;let o=this._batchIds,r=o.length,s;for(s=0;s<r;++s){let a=o[s],c=t[a];c.color=l(e.color)?e.color.evaluateColor(c,GQe):zQe,c.show=l(e.show)?e.show.evaluate(c):VQe}if(i){let a=this._batchedIndices;for(r=a.length,s=0;s<r;++s)a[s].color=G.clone(G.WHITE);this._updatingAllCommands=!1,this._batchDirty=!0}};xp.prototype.updateCommands=function(e,t){if(this._updatingAllCommands)return;let n=this._batchIdLookUp,i=n[e];if(!l(i))return;let o=this._indexOffsets,r=this._indexCounts,s=o[i],a=r[i],c=this._batchedIndices,u=c.length,f;for(f=0;f<u;++f){let _=c[f].offset,y=c[f].count;if(s>=_&&s<_+y)break}c.push(new Wm({color:G.clone(t),offset:s,count:a,batchIds:[e]}));let h=[],A=[],g=c[f].batchIds,m=g.length;for(let _=0;_<m;++_){let y=g[_];if(y===e)continue;let C=n[y];o[C]<s?h.push(y):A.push(y)}A.length!==0&&c.push(new Wm({color:G.clone(c[f].color),offset:s+a,count:c[f].offset+c[f].count-(s+a),batchIds:A})),h.length!==0?(c[f].count=s-c[f].offset,c[f].batchIds=h):c.splice(f,1),this._batchDirty=!0};function $se(e,t,n,i){let o=e.classificationType,r=o!==Jn.CESIUM_3D_TILE,s=o!==Jn.TERRAIN,a=t.commandList,c=n.length,u,f;for(f=0;f<c;++f)r&&(u=n[f],u.pass=Be.TERRAIN_CLASSIFICATION,a.push(u)),s&&(u=n[f].derivedCommands.tileset,u.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,a.push(u));if(!(!t.invertClassification||!l(i)))for(c=i.length,f=0;f<c;++f)a.push(i[f])}function WQe(e,t){let n=e.commandList,i=t.length;for(let o=0;o<i;o+=2){let r=t[o+1];r.pass=Be.OPAQUE,n.push(r)}}function jQe(e){let t=e.debugWireframe===e._debugWireframe;if(t=t&&!(e.debugWireframe&&e._wireframeDirty),t)return;l(e._rsWireframe)||(e._rsWireframe=Ue.fromCache({}));let n,i;e.debugWireframe?(n=e._rsWireframe,i=Me.LINES):(n=e._rsColorPass,i=Me.TRIANGLES);let o=e._commands,r=o.length;for(let s=0;s<r;s+=2){let a=o[s+1];a.renderState=n,a.primitiveType=i}e._debugWireframe=e.debugWireframe,e._wireframeDirty=!1}xp.prototype.update=function(e){let t=e.context;wQe(this,t),BQe(this,t),PQe(this),RQe(this,t);let n=e.passes;n.render&&(FQe(this,t),QQe(this,e),jQe(this),this._debugWireframe?WQe(e,this._commands):$se(this,e,this._commands,this._commandsIgnoreShow)),n.pick&&(kQe(this),$se(this,e,this._pickCommands))};xp.prototype.isDestroyed=function(){return!1};xp.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._vaSwap=this._vaSwap&&this._vaSwap.destroy(),ue(this)};var NE=xp;function ju(e){this._boxes=e.boxes,this._boxBatchIds=e.boxBatchIds,this._cylinders=e.cylinders,this._cylinderBatchIds=e.cylinderBatchIds,this._ellipsoids=e.ellipsoids,this._ellipsoidBatchIds=e.ellipsoidBatchIds,this._spheres=e.spheres,this._sphereBatchIds=e.sphereBatchIds,this._modelMatrix=e.modelMatrix,this._batchTable=e.batchTable,this._boundingVolume=e.boundingVolume,this._center=e.center,l(this._center)||(l(this._boundingVolume)?this._center=d.clone(this._boundingVolume.center):this._center=d.clone(d.ZERO)),this._boundingVolumes=void 0,this._batchedIndices=void 0,this._indices=void 0,this._indexOffsets=void 0,this._indexCounts=void 0,this._positions=void 0,this._vertexBatchIds=void 0,this._batchIds=void 0,this._batchTableColors=void 0,this._packedBuffer=void 0,this._ready=!1,this._promise=void 0,this._error=void 0,this._verticesPromise=void 0,this._primitive=void 0,this.debugWireframe=!1,this.forceRebatch=!1,this.classificationType=Jn.BOTH}Object.defineProperties(ju.prototype,{trianglesLength:{get:function(){return l(this._primitive)?this._primitive.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._primitive)?this._primitive.geometryByteLength:0}},ready:{get:function(){return this._ready}}});ju.packedBoxLength=N.packedLength+d.packedLength;ju.packedCylinderLength=N.packedLength+2;ju.packedEllipsoidLength=N.packedLength+d.packedLength;ju.packedSphereLength=d.packedLength+1;function YQe(e){let t=new Float64Array(N.packedLength+d.packedLength),n=0;return d.pack(e._center,t,n),n+=d.packedLength,N.pack(e._modelMatrix,t,n),t}function qQe(e,t){let n=0,i=t[n++],o=t[n++],r=e._boundingVolumes=new Array(o);for(let c=0;c<o;++c)r[c]=le.unpack(t,n),n+=le.packedLength;let s=t[n++],a=e._batchedIndices=new Array(s);for(let c=0;c<s;++c){let u=G.unpack(t,n);n+=G.packedLength;let f=t[n++],h=t[n++],A=t[n++],g=new Array(A);for(let m=0;m<A;++m)g[m]=t[n++];a[c]=new Wm({color:u,offset:f,count:h,batchIds:g})}return i}var KQe=new di("createVectorTileGeometries",5),XQe=new G;function JQe(e){if(!l(e._primitive)&&!l(e._verticesPromise)){let t=e._boxes,n=e._boxBatchIds,i=e._cylinders,o=e._cylinderBatchIds,r=e._ellipsoids,s=e._ellipsoidBatchIds,a=e._spheres,c=e._sphereBatchIds,u=e._batchTableColors,f=e._packedBuffer;if(!l(u)){let m=0;l(e._boxes)&&(t=e._boxes=t.slice(),n=e._boxBatchIds=n.slice(),m+=n.length),l(e._cylinders)&&(i=e._cylinders=i.slice(),o=e._cylinderBatchIds=o.slice(),m+=o.length),l(e._ellipsoids)&&(r=e._ellipsoids=r.slice(),s=e._ellipsoidBatchIds=s.slice(),m+=s.length),l(e._spheres)&&(a=e._sphere=a.slice(),c=e._sphereBatchIds=c.slice(),m+=c.length),u=e._batchTableColors=new Uint32Array(m);let _=e._batchTable;for(let y=0;y<m;++y){let C=_.getColor(y,XQe);u[y]=C.toRgba()}f=e._packedBuffer=YQe(e)}let h=[];l(t)&&h.push(t.buffer,n.buffer),l(i)&&h.push(i.buffer,o.buffer),l(r)&&h.push(r.buffer,s.buffer),l(a)&&h.push(a.buffer,c.buffer),h.push(u.buffer,f.buffer);let A={boxes:l(t)?t.buffer:void 0,boxBatchIds:l(t)?n.buffer:void 0,cylinders:l(i)?i.buffer:void 0,cylinderBatchIds:l(i)?o.buffer:void 0,ellipsoids:l(r)?r.buffer:void 0,ellipsoidBatchIds:l(r)?s.buffer:void 0,spheres:l(a)?a.buffer:void 0,sphereBatchIds:l(a)?c.buffer:void 0,batchTableColors:u.buffer,packedBuffer:f.buffer},g=e._verticesPromise=KQe.scheduleTask(A,h);return l(g)?g.then(function(m){if(e.isDestroyed())return;let _=new Float64Array(m.packedBuffer);qQe(e,_)===2?e._indices=new Uint16Array(m.indices):e._indices=new Uint32Array(m.indices),e._indexOffsets=new Uint32Array(m.indexOffsets),e._indexCounts=new Uint32Array(m.indexCounts),e._positions=new Float32Array(m.positions),e._vertexBatchIds=new Uint16Array(m.vertexBatchIds),e._batchIds=new Uint16Array(m.batchIds),ZQe(e),e._ready=!0}).catch(m=>{e.isDestroyed()||(e._error=m)}):void 0}}function ZQe(e){l(e._primitive)||(e._primitive=new NE({batchTable:e._batchTable,positions:e._positions,batchIds:e._batchIds,vertexBatchIds:e._vertexBatchIds,indices:e._indices,indexOffsets:e._indexOffsets,indexCounts:e._indexCounts,batchedIndices:e._batchedIndices,boundingVolume:e._boundingVolume,boundingVolumes:e._boundingVolumes,center:e._center,pickObject:e._pickObject??e}),e._boxes=void 0,e._boxBatchIds=void 0,e._cylinders=void 0,e._cylinderBatchIds=void 0,e._ellipsoids=void 0,e._ellipsoidBatchIds=void 0,e._spheres=void 0,e._sphereBatchIds=void 0,e._center=void 0,e._modelMatrix=void 0,e._batchTable=void 0,e._boundingVolume=void 0,e._boundingVolumes=void 0,e._batchedIndices=void 0,e._indices=void 0,e._indexOffsets=void 0,e._indexCounts=void 0,e._positions=void 0,e._vertexBatchIds=void 0,e._batchIds=void 0,e._batchTableColors=void 0,e._packedBuffer=void 0,e._verticesPromise=void 0)}ju.prototype.createFeatures=function(e,t){this._primitive.createFeatures(e,t)};ju.prototype.applyDebugSettings=function(e,t){this._primitive.applyDebugSettings(e,t)};ju.prototype.applyStyle=function(e,t){this._primitive.applyStyle(e,t)};ju.prototype.updateCommands=function(e,t){this._primitive.updateCommands(e,t)};ju.prototype.update=function(e){if(!this._ready){if(l(this._promise)||(this._promise=JQe(this)),l(this._error)){let t=this._error;throw this._error=void 0,t}return}this._primitive.debugWireframe=this.debugWireframe,this._primitive.forceRebatch=this.forceRebatch,this._primitive.classificationType=this.classificationType,this._primitive.update(e)};ju.prototype.isDestroyed=function(){return!1};ju.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};var bp=ju;function jm(e,t,n,i,o){this._tileset=e,this._tile=t,this._resource=n,this._geometries=void 0,this._metadata=void 0,this._batchTable=void 0,this._features=void 0,this.featurePropertiesDirty=!1,this._group=void 0,this._ready=!1,tke(this,i,o)}Object.defineProperties(jm.prototype,{featuresLength:{get:function(){return l(this._batchTable)?this._batchTable.featuresLength:0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return l(this._geometries)?this._geometries.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._geometries)?this._geometries.geometryByteLength:0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return l(this._batchTable)?this._batchTable.batchTableByteLength:0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},batchTable:{get:function(){return this._batchTable}},group:{get:function(){return this._group},set:function(e){this._group=e}}});function $Qe(e){return function(t,n){l(e._geometries)&&e._geometries.updateCommands(t,n)}}function eke(e,t){let n,i,o,r,s,a=e.BOXES_LENGTH??0,c=e.CYLINDERS_LENGTH??0,u=e.ELLIPSOIDS_LENGTH??0,f=e.SPHERES_LENGTH??0;if(a>0&&l(e.BOX_BATCH_IDS)){let m=t.byteOffset+e.BOX_BATCH_IDS.byteOffset;n=new Uint16Array(t.buffer,m,a)}if(c>0&&l(e.CYLINDER_BATCH_IDS)){let m=t.byteOffset+e.CYLINDER_BATCH_IDS.byteOffset;i=new Uint16Array(t.buffer,m,c)}if(u>0&&l(e.ELLIPSOID_BATCH_IDS)){let m=t.byteOffset+e.ELLIPSOID_BATCH_IDS.byteOffset;o=new Uint16Array(t.buffer,m,u)}if(f>0&&l(e.SPHERE_BATCH_IDS)){let m=t.byteOffset+e.SPHERE_BATCH_IDS.byteOffset;r=new Uint16Array(t.buffer,m,f)}let h=l(n)||l(i)||l(o)||l(r),A=a>0&&!l(n)||c>0&&!l(i)||u>0&&!l(o)||f>0&&!l(r);if(h&&A)throw new ce("If one group of batch ids is defined, then all batch ids must be defined");if(!l(n)&&!l(i)&&!l(o)&&!l(r)){let m=0;if(!l(n)&&a>0)for(n=new Uint16Array(a),s=0;s<a;++s)n[s]=m++;if(!l(i)&&c>0)for(i=new Uint16Array(c),s=0;s<c;++s)i[s]=m++;if(!l(o)&&u>0)for(o=new Uint16Array(u),s=0;s<u;++s)o[s]=m++;if(!l(r)&&f>0)for(r=new Uint16Array(f),s=0;s<f;++s)r[s]=m++}return{boxes:n,cylinders:i,ellipsoids:o,spheres:r}}var LE=Uint32Array.BYTES_PER_ELEMENT;function tke(e,t,n){n=n??0;let i=new Uint8Array(t),o=new DataView(t);n+=LE;let r=o.getUint32(n,!0);if(r!==1)throw new ce(`Only Geometry tile version 1 is supported. Version ${r} is not.`);n+=LE;let s=o.getUint32(n,!0);if(n+=LE,s===0){e._ready=!0;return}let a=o.getUint32(n,!0);if(n+=LE,a===0)throw new ce("Feature table must have a byte length greater than zero");let c=o.getUint32(n,!0);n+=LE;let u=o.getUint32(n,!0);n+=LE;let f=o.getUint32(n,!0);n+=LE;let h=dr(i,n,a);n+=a;let A=new Uint8Array(t,n,c);n+=c;let g,m;u>0&&(g=dr(i,n,u),n+=u,f>0&&(m=new Uint8Array(t,n,f),m=new Uint8Array(m)));let _=h.BOXES_LENGTH??0,y=h.CYLINDERS_LENGTH??0,C=h.ELLIPSOIDS_LENGTH??0,E=h.SPHERES_LENGTH??0,I=_+y+C+E,b=new Ip(e,I,g,m,$Qe(e));if(e._batchTable=b,I===0)return;let S=e.tile.computedTransform,B;l(h.RTC_CENTER)&&(B=d.unpack(h.RTC_CENTER),N.multiplyByPoint(S,B,B));let v=eke(h,A);if(_>0||y>0||C>0||E>0){let P,M,L,p;if(_>0){let x=A.byteOffset+h.BOXES.byteOffset;P=new Float32Array(A.buffer,x,bp.packedBoxLength*_)}if(y>0){let x=A.byteOffset+h.CYLINDERS.byteOffset;M=new Float32Array(A.buffer,x,bp.packedCylinderLength*y)}if(C>0){let x=A.byteOffset+h.ELLIPSOIDS.byteOffset;L=new Float32Array(A.buffer,x,bp.packedEllipsoidLength*C)}if(E>0){let x=A.byteOffset+h.SPHERES.byteOffset;p=new Float32Array(A.buffer,x,bp.packedSphereLength*E)}return e._geometries=new bp({boxes:P,boxBatchIds:v.boxes,cylinders:M,cylinderBatchIds:v.cylinders,ellipsoids:L,ellipsoidBatchIds:v.ellipsoids,spheres:p,sphereBatchIds:v.spheres,center:B,modelMatrix:S,batchTable:b,boundingVolume:e.tile.boundingVolume.boundingVolume}),e}return Promise.resolve(e)}function eae(e){let t=e.featuresLength;if(!l(e._features)&&t>0){let n=new Array(t);l(e._geometries)&&e._geometries.createFeatures(e,n),e._features=n}}jm.prototype.hasProperty=function(e,t){return this._batchTable.hasProperty(e,t)};jm.prototype.getFeature=function(e){return eae(this),this._features[e]};jm.prototype.applyDebugSettings=function(e,t){l(this._geometries)&&this._geometries.applyDebugSettings(e,t)};jm.prototype.applyStyle=function(e){eae(this),l(this._geometries)&&this._geometries.applyStyle(e,this._features)};jm.prototype.update=function(e,t){l(this._geometries)&&(this._geometries.classificationType=this._tileset.classificationType,this._geometries.debugWireframe=this._tileset.debugWireframe,this._geometries.update(t)),l(this._batchTable)&&this._geometries.ready&&(this._batchTable.update(e,t),this._ready=!0)};jm.prototype.pick=function(e,t,n){};jm.prototype.isDestroyed=function(){return!1};jm.prototype.destroy=function(){return this._geometries=this._geometries&&this._geometries.destroy(),this._batchTable=this._batchTable&&this._batchTable.destroy(),ue(this)};var VR=jm;var MW={};MW.encode2D=function(e,t,n){let i=Math.pow(2,e),o={x:t,y:n},r,s,a,c=BigInt(0);for(a=i/2;a>0;a/=2)r=(o.x&a)>0?1:0,s=(o.y&a)>0?1:0,c+=BigInt((3*r^s)*a*a),tae(i,o,r,s);return c};MW.decode2D=function(e,t){let n=Math.pow(2,e),i={x:0,y:0},o,r,s,a;for(s=1,a=t;s<n;s*=2)o=1&Number(a/BigInt(2)),r=1&Number(a^BigInt(o)),tae(s,i,o,r),i.x+=s*o,i.y+=s*r,a/=BigInt(4);return[i.x,i.y]};function tae(e,t,n,i){if(i!==0)return;n===1&&(t.x=e-1-t.x,t.y=e-1-t.y);let o=t.x;t.x=t.y,t.y=o}var pb=MW;var OE=30,nke=1<<OE,ike=1<<OE+1>>>0,NW=2*OE+1,k_=4,oae=[],rae=[],oke=[[0,1,3,2],[0,2,3,1],[3,2,0,1],[3,1,0,2]],U_=1,gb=2,dz=[U_,0,0,U_|gb];function Es(e){if(!Wt.supportsBigInt())throw new ce("S2 required BigInt support");this._cellId=e,this._level=Es.getLevel(e)}Es.fromToken=function(e){return new Es(Es.getIdFromToken(e))};Es.isValidId=function(e){return!(e<=0||e>>BigInt(NW)>5||!(e&~e+BigInt(1)&BigInt("0x1555555555555555")))};Es.isValidToken=function(e){return/^[0-9a-fA-F]{1,16}$/.test(e)?Es.isValidId(Es.getIdFromToken(e)):!1};Es.getIdFromToken=function(e){return BigInt("0x"+e+"0".repeat(16-e.length))};Es.getTokenFromId=function(e){let t=Math.floor(mke(e)/4),n=e.toString(16).replace(/0*$/,"");return Array(17-t-n.length).join("0")+n};Es.getLevel=function(e){let t=0;for(;e!==BigInt(0)&&!(e&BigInt(1));)t++,e=e>>BigInt(1);return OE-(t>>1)};Es.prototype.getChild=function(e){let t=cae(this._cellId)>>BigInt(2),n=this._cellId+BigInt(2*e+1-4)*t;return new Es(n)};Es.prototype.getParent=function(){let e=cae(this._cellId)<<BigInt(2);return new Es(this._cellId&~e+BigInt(1)|e)};Es.prototype.getParentAtLevel=function(e){let t=dke(e);return new Es(this._cellId&-t|t)};Es.prototype.getCenter=function(e){e=e??te.WGS84;let t=rke(this._cellId,this._level);t=d.normalize(t,t);let n=new Ae.fromCartesian(t,te.UNIT_SPHERE);return Ae.toCartesian(n,e,new d)};Es.prototype.getVertex=function(e,t){t=t??te.WGS84;let n=ske(this._cellId,this._level,e);n=d.normalize(n,n);let i=new Ae.fromCartesian(n,te.UNIT_SPHERE);return Ae.toCartesian(i,t,new d)};Es.fromFacePositionLevel=function(e,t,n){let i=(e<4?"0":"")+(e<2?"0":"")+e.toString(2),o=t.toString(2),r=Array(2*n-o.length+1).join("0"),s=Array(NW-2*n).join("0"),a=BigInt(`0b${i}${r}${o}1${s}`);return new Es(a)};function rke(e,t){let n=ake(e,t);return cke(n[0],n[1],n[2])}function ske(e,t,n){let i=sae(e,t),o=lke([i[1],i[2]],t),r=n>>1&1;return aae(i[0],o[0][r^n&1],o[1][r])}function ake(e,t){let n=sae(e),i=n[0],o=n[1],r=n[2],s=t===30,a=!s&&(BigInt(o)^e>>BigInt(2))&BigInt(1),c=s?1:a?2:0,u=(o<<1)+c,f=(r<<1)+c;return[i,u,f]}function sae(e){oae.length===0&&fke();let t=Number(e>>BigInt(NW)),n=t&U_,i=(1<<k_)-1,o=0,r=0;for(let s=7;s>=0;s--){let c=(1<<2*(s===7?OE-7*k_:k_))-1;n+=Number(e>>BigInt(s*2*k_+1)&BigInt(c))<<2,n=rae[n];let u=s*k_;o+=n>>k_+2<<u,r+=(n>>2&i)<<u,n&=U_|gb}return[t,o,r]}function cke(e,t,n){let i=nae(t),o=nae(n),r=hz(i),s=hz(o);return aae(e,r,s)}function aae(e,t,n){switch(e){case 0:return new d(1,t,n);case 1:return new d(-t,1,n);case 2:return new d(-t,-n,1);case 3:return new d(-1,-n,-t);case 4:return new d(n,-1,-t);default:return new d(n,t,-1)}}function hz(e){return e>=.5?1/3*(4*e*e-1):1/3*(1-4*(1-e)*(1-e))}function nae(e){return 1/ike*e}function lke(e,t){let n=[[],[]],i=uke(t);for(let o=0;o<2;++o){let r=e[o]&-i,s=r+i;n[o][0]=hz(iae(r)),n[o][1]=hz(iae(s))}return n}function uke(e){return 1<<OE-e>>>0}function iae(e){return 1/nke*e}function G_(e,t,n,i,o,r){if(e===k_){let s=(t<<k_)+n;oae[(s<<2)+i]=(o<<2)+r,rae[(o<<2)+i]=(s<<2)+r}else{e++,t<<=1,n<<=1,o<<=2;let s=oke[r];G_(e,t+(s[0]>>1),n+(s[0]&1),i,o,r^dz[0]),G_(e,t+(s[1]>>1),n+(s[1]&1),i,o+1,r^dz[1]),G_(e,t+(s[2]>>1),n+(s[2]&1),i,o+2,r^dz[2]),G_(e,t+(s[3]>>1),n+(s[3]&1),i,o+3,r^dz[3])}}function fke(){G_(0,0,0,0,0,0),G_(0,0,0,U_,0,U_),G_(0,0,0,gb,0,gb),G_(0,0,0,U_|gb,0,U_|gb)}function cae(e){return e&~e+BigInt(1)}function dke(e){return BigInt(1)<<BigInt(2*(OE-e))}var hke=[64,0,1,39,2,15,40,23,3,12,16,59,41,19,24,54,4,64,13,10,17,62,60,28,42,30,20,51,25,44,55,47,5,32,65,38,14,22,11,58,18,53,63,9,61,27,29,50,43,46,31,37,21,57,52,8,26,49,45,36,56,7,48,35,6,34,33,0];function mke(e){return hke[(-e&e)%BigInt(67)]}var Tp=Es;function Ake(e,t){return l(e)&&l(e.extensions)&&l(e.extensions[t])}var Ei=Ake;function LW(e){let t=e.lengthBits,n=e.availableCount,i=e.constant,o=e.bitstream;if(l(i))n=t;else{let r=Math.ceil(t/8);if(o.length!==r)throw new ce(`Availability bitstream must be exactly ${r} bytes long to store ${t} bits. Actual bitstream was ${o.length} bytes long.`);let s=e.computeAvailableCountEnabled??!1;!l(n)&&s&&(n=pke(o,t))}this._lengthBits=t,this._availableCount=n,this._constant=i,this._bitstream=o}function pke(e,t){let n=0;for(let i=0;i<t;i++){let o=i>>3,r=i%8;n+=e[o]>>r&1}return n}Object.defineProperties(LW.prototype,{lengthBits:{get:function(){return this._lengthBits}},availableCount:{get:function(){return this._availableCount}}});LW.prototype.getBit=function(e){if(l(this._constant))return this._constant;let t=e>>3,n=e%8;return(this._bitstream[t]>>n&1)===1};var _b=LW;function Sp(e){e=e??V.EMPTY_OBJECT;let t=e.metadataTable,n=e.class,i=e.entityId,o=e.propertyTableJson;this._class=n,this._metadataTable=t,this._entityId=i,this._extensions=o.extensions,this._extras=o.extras}Object.defineProperties(Sp.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});Sp.prototype.hasProperty=function(e){return this._metadataTable.hasProperty(e)};Sp.prototype.hasPropertyBySemantic=function(e){return this._metadataTable.hasPropertyBySemantic(e)};Sp.prototype.getPropertyIds=function(e){return this._metadataTable.getPropertyIds(e)};Sp.prototype.getProperty=function(e){return this._metadataTable.getProperty(this._entityId,e)};Sp.prototype.setProperty=function(e,t){return this._metadataTable.setProperty(this._entityId,e,t)};Sp.prototype.getPropertyBySemantic=function(e){return this._metadataTable.getPropertyBySemantic(this._entityId,e)};Sp.prototype.setPropertyBySemantic=function(e,t){return this._metadataTable.setPropertyBySemantic(this._entityId,e,t)};var yb=Sp;var mz={QUADTREE:"QUADTREE",OCTREE:"OCTREE"};mz.getBranchingFactor=function(e){switch(e){case mz.OCTREE:return 8;case mz.QUADTREE:return 4}};var Is=Object.freeze(mz);function Ua(){}Object.defineProperties(Ua.prototype,{class:{get:function(){me.throwInstantiationError()}}});Ua.prototype.hasProperty=function(e){me.throwInstantiationError()};Ua.prototype.hasPropertyBySemantic=function(e){me.throwInstantiationError()};Ua.prototype.getPropertyIds=function(e){me.throwInstantiationError()};Ua.prototype.getProperty=function(e){me.throwInstantiationError()};Ua.prototype.setProperty=function(e,t){me.throwInstantiationError()};Ua.prototype.getPropertyBySemantic=function(e){me.throwInstantiationError()};Ua.prototype.setPropertyBySemantic=function(e,t){me.throwInstantiationError()};Ua.hasProperty=function(e,t,n){if(l(t[e]))return!0;let i=n.properties;if(!l(i))return!1;let o=i[e];return!!(l(o)&&l(o.default))};Ua.hasPropertyBySemantic=function(e,t,n){let i=n.propertiesBySemantic;if(!l(i))return!1;let o=i[e];return l(o)};Ua.getPropertyIds=function(e,t,n){n=l(n)?n:[],n.length=0;for(let o in e)e.hasOwnProperty(o)&&l(e[o])&&n.push(o);let i=t.properties;if(l(i))for(let o in i)i.hasOwnProperty(o)&&!l(e[o])&&l(i[o].default)&&n.push(o);return n};Ua.getProperty=function(e,t,n){let i=n.properties[e],o=t[e];Array.isArray(o)&&(o=o.slice());let r=!0;if(o=i.handleNoData(o),!l(o)&&l(i.default))return o=ze(i.default,!0),i.unpackVectorAndMatrixTypes(o,r);if(l(o))return o=i.normalize(o),o=i.applyValueTransform(o),i.unpackVectorAndMatrixTypes(o,r)};Ua.setProperty=function(e,t,n,i){if(!l(n[e]))return!1;Array.isArray(t)&&(t=t.slice());let o,r=i.properties;return l(r)&&(o=r[e]),l(o)&&(t=o.packVectorAndMatrixTypes(t,!0),t=o.unapplyValueTransform(t),t=o.unnormalize(t)),n[e]=t,!0};Ua.getPropertyBySemantic=function(e,t,n){let i=n.propertiesBySemantic;if(!l(i))return;let o=i[e];if(l(o))return Ua.getProperty(o.id,t,n)};Ua.setPropertyBySemantic=function(e,t,n,i){let o=i.propertiesBySemantic;if(!l(o))return!1;let r=i.propertiesBySemantic[e];return l(r)?Ua.setProperty(r.id,t,n,i):!1};var Yn=Ua;function wp(e){e=e??V.EMPTY_OBJECT;let t=e.subtreeMetadata,n=e.class,i=l(t.properties)?t.properties:{};this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(wp.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});wp.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};wp.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};wp.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};wp.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};wp.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};wp.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};wp.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var HR=wp;var Vt={INT8:"INT8",UINT8:"UINT8",INT16:"INT16",UINT16:"UINT16",INT32:"INT32",UINT32:"UINT32",INT64:"INT64",UINT64:"UINT64",FLOAT32:"FLOAT32",FLOAT64:"FLOAT64"};Vt.getMinimum=function(e){switch(e){case Vt.INT8:return-128;case Vt.UINT8:return 0;case Vt.INT16:return-32768;case Vt.UINT16:return 0;case Vt.INT32:return-2147483648;case Vt.UINT32:return 0;case Vt.INT64:return Wt.supportsBigInt()?BigInt("-9223372036854775808"):-Math.pow(2,63);case Vt.UINT64:return Wt.supportsBigInt()?BigInt(0):0;case Vt.FLOAT32:return-34028234663852886e22;case Vt.FLOAT64:return-Number.MAX_VALUE}};Vt.getMaximum=function(e){switch(e){case Vt.INT8:return 127;case Vt.UINT8:return 255;case Vt.INT16:return 32767;case Vt.UINT16:return 65535;case Vt.INT32:return 2147483647;case Vt.UINT32:return 4294967295;case Vt.INT64:return Wt.supportsBigInt()?BigInt("9223372036854775807"):Math.pow(2,63)-1;case Vt.UINT64:return Wt.supportsBigInt()?BigInt("18446744073709551615"):Math.pow(2,64)-1;case Vt.FLOAT32:return 34028234663852886e22;case Vt.FLOAT64:return Number.MAX_VALUE}};Vt.isIntegerType=function(e){switch(e){case Vt.INT8:case Vt.UINT8:case Vt.INT16:case Vt.UINT16:case Vt.INT32:case Vt.UINT32:case Vt.INT64:case Vt.UINT64:return!0;default:return!1}};Vt.isUnsignedIntegerType=function(e){switch(e){case Vt.UINT8:case Vt.UINT16:case Vt.UINT32:case Vt.UINT64:return!0;default:return!1}};Vt.isVectorCompatible=function(e){switch(e){case Vt.INT8:case Vt.UINT8:case Vt.INT16:case Vt.UINT16:case Vt.INT32:case Vt.UINT32:case Vt.FLOAT32:case Vt.FLOAT64:return!0;default:return!1}};Vt.normalize=function(e,t){return Math.max(Number(e)/Number(Vt.getMaximum(t)),-1)};Vt.unnormalize=function(e,t){let n=Vt.getMaximum(t),i=Vt.isUnsignedIntegerType(t)?0:-n;return e=D.sign(e)*Math.round(Math.abs(e)*Number(n)),(t===Vt.INT64||t===Vt.UINT64)&&Wt.supportsBigInt()&&(e=BigInt(e)),e>n?n:e<i?i:e};Vt.applyValueTransform=function(e,t,n){return n*e+t};Vt.unapplyValueTransform=function(e,t,n){return n===0?0:(e-t)/n};Vt.getSizeInBytes=function(e){switch(e){case Vt.INT8:case Vt.UINT8:return 1;case Vt.INT16:case Vt.UINT16:return 2;case Vt.INT32:case Vt.UINT32:return 4;case Vt.INT64:case Vt.UINT64:return 8;case Vt.FLOAT32:return 4;case Vt.FLOAT64:return 8}};Vt.fromComponentDatatype=function(e){switch(e){case q.BYTE:return Vt.INT8;case q.UNSIGNED_BYTE:return Vt.UINT8;case q.SHORT:return Vt.INT16;case q.UNSIGNED_SHORT:return Vt.UINT16;case q.INT:return Vt.INT32;case q.UNSIGNED_INT:return Vt.UINT32;case q.FLOAT:return Vt.FLOAT32;case q.DOUBLE:return Vt.FLOAT64}};Vt.toComponentDatatype=function(e){switch(e){case Vt.INT8:return q.BYTE;case Vt.UINT8:return q.UNSIGNED_BYTE;case Vt.INT16:return q.SHORT;case Vt.UINT16:return q.UNSIGNED_SHORT;case Vt.INT32:return q.INT;case Vt.UINT32:return q.UNSIGNED_INT;case Vt.FLOAT32:return q.FLOAT;case Vt.FLOAT64:return q.DOUBLE}};var Gt=Object.freeze(Vt);var er={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT2:"MAT2",MAT3:"MAT3",MAT4:"MAT4",BOOLEAN:"BOOLEAN",STRING:"STRING",ENUM:"ENUM"};er.isVectorType=function(e){switch(e){case er.VEC2:case er.VEC3:case er.VEC4:return!0;default:return!1}};er.isMatrixType=function(e){switch(e){case er.MAT2:case er.MAT3:case er.MAT4:return!0;default:return!1}};er.getComponentCount=function(e){switch(e){case er.SCALAR:case er.STRING:case er.ENUM:case er.BOOLEAN:return 1;case er.VEC2:return 2;case er.VEC3:return 3;case er.VEC4:return 4;case er.MAT2:return 4;case er.MAT3:return 9;case er.MAT4:return 16}};er.getMathType=function(e){switch(e){case er.VEC2:return U;case er.VEC3:return d;case er.VEC4:return se;case er.MAT2:return Gi;case er.MAT3:return J;case er.MAT4:return N;default:return}};var pt=Object.freeze(er);function dc(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.type,i=e.componentType,o=e.enumType,r=l(i)&&Gt.isIntegerType(i)&&(e.normalized??!1);this._id=t,this._name=e.name,this._description=e.description,this._semantic=e.semantic,this._isLegacyExtension=e.isLegacyExtension,this._type=n,this._componentType=i,this._enumType=o,this._valueType=l(o)?o.valueType:i,this._isArray=e.isArray??!1,this._isVariableLengthArray=e.isVariableLengthArray??!1,this._arrayLength=e.arrayLength,this._min=ze(e.min,!0),this._max=ze(e.max,!0),this._normalized=r;let s=ze(e.offset,!0),a=ze(e.scale,!0),c=l(s)||l(a),u=!0;l(s)||(s=this.expandConstant(0,u)),l(a)||(a=this.expandConstant(1,u)),this._offset=s,this._scale=a,this._hasValueTransform=c,this._noData=ze(e.noData,!0),this._default=ze(e.default,!0),this._required=e.required??!0,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}dc.fromJson=function(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.property,i=gke(n),o=_ke(n,e.enums),r;return l(i)?i?r=l(n.optional)?!n.optional:!0:r=n.required??!1:r=!1,new dc({id:t,type:o.type,componentType:o.componentType,enumType:o.enumType,isArray:o.isArray,isVariableLengthArray:o.isVariableLengthArray,arrayLength:o.arrayLength,normalized:n.normalized,min:n.min,max:n.max,offset:n.offset,scale:n.scale,noData:n.noData,default:n.default,required:r,name:n.name,description:n.description,semantic:n.semantic,extras:n.extras,extensions:n.extensions,isLegacyExtension:i})};Object.defineProperties(dc.prototype,{id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},type:{get:function(){return this._type}},enumType:{get:function(){return this._enumType}},componentType:{get:function(){return this._componentType}},valueType:{get:function(){return this._valueType}},isArray:{get:function(){return this._isArray}},isVariableLengthArray:{get:function(){return this._isVariableLengthArray}},arrayLength:{get:function(){return this._arrayLength}},normalized:{get:function(){return this._normalized}},max:{get:function(){return this._max}},min:{get:function(){return this._min}},noData:{get:function(){return this._noData}},default:{get:function(){return this._default}},required:{get:function(){return this._required}},semantic:{get:function(){return this._semantic}},hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});function gke(e){if(e.type==="ARRAY")return!0;let t=e.type;if(t===pt.SCALAR||pt.isMatrixType(t)||pt.isVectorType(t))return!1;if(l(Gt[t]))return!0;if(l(e.noData)||l(e.scale)||l(e.offset)||l(e.required)||l(e.count)||l(e.array)||l(e.optional))return!1}function _ke(e,t){let n=e.type,i=e.componentType,o=n==="ARRAY",r,s,a;o?(r=!0,s=e.componentCount,a=!l(s)):e.array?(r=!0,s=e.count,a=!l(e.count)):(r=!1,s=void 0,a=!1);let c;if(l(e.enumType)&&(c=t[e.enumType]),n===pt.ENUM)return{type:n,componentType:void 0,enumType:c,valueType:c.valueType,isArray:r,isVariableLengthArray:a,arrayLength:s};if(o&&i===pt.ENUM)return{type:i,componentType:void 0,enumType:c,valueType:c.valueType,isArray:r,isVariableLengthArray:a,arrayLength:s};if(n===pt.SCALAR||pt.isMatrixType(n)||pt.isVectorType(n))return{type:n,componentType:i,enumType:void 0,valueType:i,isArray:r,isVariableLengthArray:a,arrayLength:s};if(n===pt.BOOLEAN||n===pt.STRING)return{type:n,componentType:void 0,enumType:void 0,valueType:void 0,isArray:r,isVariableLengthArray:a,arrayLength:s};if(o&&(i===pt.BOOLEAN||i===pt.STRING))return{type:i,componentType:void 0,enumType:void 0,valueType:void 0,isArray:r,isVariableLengthArray:a,arrayLength:s};if(l(i)&&l(Gt[i]))return{type:pt.SCALAR,componentType:i,enumType:void 0,valueType:i,isArray:r,isVariableLengthArray:a,arrayLength:s};if(l(Gt[n]))return{type:pt.SCALAR,componentType:n,enumType:void 0,valueType:n,isArray:r,isVariableLengthArray:a,arrayLength:s}}dc.prototype.normalize=function(e){return this._normalized?OW(e,this._valueType,Gt.normalize):e};dc.prototype.unnormalize=function(e){return this._normalized?OW(e,this._valueType,Gt.unnormalize):e};dc.prototype.applyValueTransform=function(e){return!this._hasValueTransform||this._isVariableLengthArray?e:dc.valueTransformInPlace(e,this._offset,this._scale,Gt.applyValueTransform)};dc.prototype.unapplyValueTransform=function(e){return!this._hasValueTransform||this._isVariableLengthArray?e:dc.valueTransformInPlace(e,this._offset,this._scale,Gt.unapplyValueTransform)};dc.prototype.expandConstant=function(e,t){t=t??!1;let n=this._isArray,i=this._arrayLength,o=pt.getComponentCount(this._type),r=n&&o>1;if(!n&&o===1)return e;if(!n)return new Array(o).fill(e);if(!r)return new Array(i).fill(e);if(!t)return new Array(this._arrayLength*o).fill(e);let s=new Array(o).fill(e);return new Array(this._arrayLength).fill(s)};dc.prototype.handleNoData=function(e){let t=this._noData;if(!l(t))return e;if(!dae(e,t))return e};function dae(e,t){if(!Array.isArray(e))return e===t;if(!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!dae(e[n],t[n]))return!1;return!0}dc.prototype.unpackVectorAndMatrixTypes=function(e,t){t=t??!1;let n=pt.getMathType(this._type),i=this._isArray,o=pt.getComponentCount(this._type),r=i&&o>1;return l(n)?t&&r?e.map(function(s){return n.unpack(s)}):i?n.unpackArray(e):n.unpack(e):e};dc.prototype.packVectorAndMatrixTypes=function(e,t){t=t??!1;let n=pt.getMathType(this._type),i=this._isArray,o=pt.getComponentCount(this._type),r=i&&o>1;return l(n)?t&&r?e.map(function(s){return n.pack(s,[])}):i?n.packArray(e,[]):n.pack(e,[]):e};dc.prototype.validate=function(e){if(!(!l(e)&&l(this._default)))return this._required&&!l(e)?"required property must have a value":this._isArray?yke(this,e):hae(this,e)};function yke(e,t){if(!Array.isArray(t))return`value ${t} must be an array`;let n=t.length;if(!e._isVariableLengthArray&&n!==e._arrayLength)return"Array length does not match property.arrayLength";for(let i=0;i<n;i++){let o=hae(e,t[i]);if(l(o))return o}}function hae(e,t){let n=e._type,i=e._componentType,o=e._enumType,r=e._normalized;return pt.isVectorType(n)?Cke(t,n,i):pt.isMatrixType(n)?Eke(t,n,i):n===pt.STRING?Ike(t):n===pt.BOOLEAN?xke(t):n===pt.ENUM?bke(t,o):Tke(t,i,r)}function Cke(e,t,n){if(!Gt.isVectorCompatible(n))return`componentType ${n} is incompatible with vector type ${t}`;if(t===pt.VEC2&&!(e instanceof U))return`vector value ${e} must be a Cartesian2`;if(t===pt.VEC3&&!(e instanceof d))return`vector value ${e} must be a Cartesian3`;if(t===pt.VEC4&&!(e instanceof se))return`vector value ${e} must be a Cartesian4`}function Eke(e,t,n){if(!Gt.isVectorCompatible(n))return`componentType ${n} is incompatible with matrix type ${t}`;if(t===pt.MAT2&&!(e instanceof Gi))return`matrix value ${e} must be a Matrix2`;if(t===pt.MAT3&&!(e instanceof J))return`matrix value ${e} must be a Matrix3`;if(t===pt.MAT4&&!(e instanceof N))return`matrix value ${e} must be a Matrix4`}function Ike(e){if(typeof e!="string")return Az(e,pt.STRING)}function xke(e){if(typeof e!="boolean")return Az(e,pt.BOOLEAN)}function bke(e,t){let n=typeof e;if(l(t))return n!=="string"||!l(t.valuesByName[e])?`value ${e} is not a valid enum name for ${t.id}`:void 0}function Tke(e,t,n){let i=typeof e;switch(t){case Gt.INT8:case Gt.UINT8:case Gt.INT16:case Gt.UINT16:case Gt.INT32:case Gt.UINT32:case Gt.FLOAT32:case Gt.FLOAT64:return i!=="number"?Az(e,t):isFinite(e)?uae(e,t,n):fae(e,t);case Gt.INT64:case Gt.UINT64:return i!=="number"&&i!=="bigint"?Az(e,t):i==="number"&&!isFinite(e)?fae(e,t):uae(e,t,n)}}function Az(e,t){return`value ${e} does not match type ${t}`}function lae(e,t,n){let i=`value ${e} is out of range for type ${t}`;return n&&(i+=" (normalized)"),i}function uae(e,t,n){if(n){let i=Gt.isUnsignedIntegerType(t)?0:-1;return e<i||e>1?lae(e,t,n):void 0}if(e<Gt.getMinimum(t)||e>Gt.getMaximum(t))return lae(e,t,n)}function fae(e,t){return`value ${e} of type ${t} must be finite`}function OW(e,t,n){if(!Array.isArray(e))return n(e,t);for(let i=0;i<e.length;i++)e[i]=OW(e[i],t,n);return e}dc.valueTransformInPlace=function(e,t,n,i){if(!Array.isArray(e))return i(e,t,n);for(let o=0;o<e.length;o++)e[o]=dc.valueTransformInPlace(e[o],t[o],n[o],i);return e};var Ym=dc;function WR(e){e=e??V.EMPTY_OBJECT;let t=e.count,n=e.property,i=e.classProperty,o=e.bufferViews,r=i.type,s=i.isArray,a=i.isVariableLengthArray,c=i.valueType,u=i.enumType,f=r===pt.STRING,h=r===pt.BOOLEAN,A=0,g;if(a){let p=n.arrayOffsetType??n.offsetType;p=Gt[p]??Gt.UINT32;let x=n.arrayOffsets??n.arrayOffsetBufferView;g=new FW(o[x],p,t+1),A+=g.typedArray.byteLength}let m=pt.getComponentCount(r),_;a?_=g.get(t)-g.get(0):s?_=t*i.arrayLength:_=t;let y=m*_,C;if(f){let p=n.stringOffsetType??n.offsetType;p=Gt[p]??Gt.UINT32;let x=n.stringOffsets??n.stringOffsetBufferView;C=new FW(o[x],p,y+1),A+=C.typedArray.byteLength}(f||h)&&(c=Gt.UINT8);let E;f?E=C.get(y)-C.get(0):h?E=Math.ceil(y/8):E=y;let I=n.values??n.bufferView,b=new FW(o[I],c,E);A+=b.typedArray.byteLength;let S=n.offset,B=n.scale,v=i.hasValueTransform||l(S)||l(B);S=S??i.offset,B=B??i.scale,S=mae(S),B=mae(B);let P,M,L=this;f?P=function(p){return Bke(p,L._values,L._stringOffsets)}:h?(P=function(p){return Dke(p,L._values)},M=function(p,x){vke(p,L._values,x)}):l(u)?(P=function(p){let x=L._values.get(p);return u.namesByValue[x]},M=function(p,x){let T=u.valuesByName[x];L._values.set(p,T)}):(P=function(p){return L._values.get(p)},M=function(p,x){L._values.set(p,x)}),this._arrayOffsets=g,this._stringOffsets=C,this._values=b,this._classProperty=i,this._count=t,this._vectorComponentCount=m,this._min=n.min,this._max=n.max,this._offset=S,this._scale=B,this._hasValueTransform=v,this._getValue=P,this._setValue=M,this._unpackedValues=void 0,this._extras=n.extras,this._extensions=n.extensions,this._byteLength=A}Object.defineProperties(WR.prototype,{hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}},byteLength:{get:function(){return this._byteLength}}});WR.prototype.get=function(e){let t=Ske(this,e);return t=this._classProperty.handleNoData(t),l(t)?(t=this._classProperty.normalize(t),t=Qke(this,t),this._classProperty.unpackVectorAndMatrixTypes(t)):(t=this._classProperty.default,this._classProperty.unpackVectorAndMatrixTypes(t))};WR.prototype.set=function(e,t){let n=this._classProperty;t=n.packVectorAndMatrixTypes(t),t=kke(this,t),t=n.unnormalize(t),wke(this,e,t)};WR.prototype.getTypedArray=function(){if(l(this._values))return this._values.typedArray};function mae(e){if(!Array.isArray(e))return e;let t=[];for(let n=0;n<e.length;n++){let i=e[n];Array.isArray(i)?si(t,i):t.push(i)}return t}function Ske(e,t){pae(e)&&gae(e);let n=e._classProperty,i=n.isArray,o=n.type,r=pt.getComponentCount(o);if(l(e._unpackedValues)){let s=e._unpackedValues[t];return i?ze(s,!0):s}return!i&&r===1?e._getValue(t):Aae(e,n,t)}function Aae(e,t,n){let i,o;if(t.isVariableLengthArray){i=e._arrayOffsets.get(n),o=e._arrayOffsets.get(n+1)-i;let s=pt.getComponentCount(t.type);i*=s,o*=s}else{let a=(t.arrayLength??1)*e._vectorComponentCount;i=n*a,o=a}let r=new Array(o);for(let s=0;s<o;s++)r[s]=e._getValue(i+s);return r}function wke(e,t,n){Oke(e,t,n)&&gae(e);let i=e._classProperty,o=i.isArray,r=i.type,s=pt.getComponentCount(r);if(l(e._unpackedValues)){i.isArray&&(n=ze(n,!0)),e._unpackedValues[t]=n;return}if(!o&&s===1){e._setValue(t,n);return}let a,c;if(i.isVariableLengthArray)a=e._arrayOffsets.get(t),c=e._arrayOffsets.get(t+1)-a;else{let f=(i.arrayLength??1)*e._vectorComponentCount;a=t*f,c=f}for(let u=0;u<c;++u)e._setValue(a+u,n[u])}function Bke(e,t,n){let i=n.get(e),o=n.get(e+1)-i;return iu(t.typedArray,i,o)}function Dke(e,t){let n=e>>3,i=e%8;return(t.typedArray[n]>>i&1)===1}function vke(e,t,n){let i=e>>3,o=e%8;n?t.typedArray[i]|=1<<o:t.typedArray[i]&=~(1<<o)}function Pke(e,t){let n=t.dataView,i=e*8,o=0,r=(n.getUint8(i+7)&128)>0,s=!0;for(let a=0;a<8;++a){let c=n.getUint8(i+a);r&&(s?c!==0&&(c=~(c-1)&255,s=!1):c=~c&255),o+=c*Math.pow(256,a)}return r&&(o=-o),o}function Rke(e,t){let n=t.dataView,i=e*8,o=BigInt(0),r=(n.getUint8(i+7)&128)>0,s=!0;for(let a=0;a<8;++a){let c=n.getUint8(i+a);r&&(s?c!==0&&(c=~(c-1)&255,s=!1):c=~c&255),o+=BigInt(c)*(BigInt(1)<<BigInt(a*8))}return r&&(o=-o),o}function Mke(e,t){let n=t.dataView,i=e*8,o=n.getUint32(i,!0),r=n.getUint32(i+4,!0);return o+4294967296*r}function Nke(e,t){let n=t.dataView,i=e*8,o=BigInt(n.getUint32(i,!0)),r=BigInt(n.getUint32(i+4,!0));return o+BigInt(4294967296)*r}function Lke(e){switch(e){case Gt.INT8:return q.BYTE;case Gt.UINT8:return q.UNSIGNED_BYTE;case Gt.INT16:return q.SHORT;case Gt.UINT16:return q.UNSIGNED_SHORT;case Gt.INT32:return q.INT;case Gt.UINT32:return q.UNSIGNED_INT;case Gt.FLOAT32:return q.FLOAT;case Gt.FLOAT64:return q.DOUBLE}}function pae(e){if(l(e._unpackedValues))return!1;let t=e._classProperty,n=t.type,i=t.valueType;return n===pt.STRING||i===Gt.INT64&&!Wt.supportsBigInt64Array()||i===Gt.UINT64&&!Wt.supportsBigUint64Array()}function Oke(e,t,n){if(pae(e))return!0;let i=e._arrayOffsets;if(l(i)){let o=i.get(t+1)-i.get(t),r=n.length;if(o!==r)return!0}return!1}function gae(e){e._unpackedValues=Fke(e),e._arrayOffsets=void 0,e._stringOffsets=void 0,e._values=void 0}function Fke(e){let t=e._count,n=new Array(t),i=e._classProperty,o=i.isArray,r=i.type,s=pt.getComponentCount(r);if(!o&&s===1){for(let a=0;a<t;++a)n[a]=e._getValue(a);return n}for(let a=0;a<t;a++)n[a]=Aae(e,i,a);return n}function Qke(e,t){let i=e._classProperty.isVariableLengthArray;return!e._hasValueTransform||i?t:Ym.valueTransformInPlace(t,e._offset,e._scale,Gt.applyValueTransform)}function kke(e,t){let i=e._classProperty.isVariableLengthArray;return!e._hasValueTransform||i?t:Ym.valueTransformInPlace(t,e._offset,e._scale,Gt.unapplyValueTransform)}function FW(e,t,n){let i=this,o,r,s;if(t===Gt.INT64)Wt.supportsBigInt()?Wt.supportsBigInt64Array()?(o=new BigInt64Array(e.buffer,e.byteOffset,n),s=function(a,c){i.typedArray[a]=BigInt(c)}):(o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return Rke(a,i)}):(yt("INT64 type is not fully supported on this platform. Values greater than 2^53 - 1 or less than -(2^53 - 1) may lose precision when read."),o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return Pke(a,i)});else if(t===Gt.UINT64)Wt.supportsBigInt()?Wt.supportsBigUint64Array()?(o=new BigUint64Array(e.buffer,e.byteOffset,n),s=function(a,c){i.typedArray[a]=BigInt(c)}):(o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return Nke(a,i)}):(yt("UINT64 type is not fully supported on this platform. Values greater than 2^53 - 1 may lose precision when read."),o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return Mke(a,i)});else{let a=Lke(t);o=q.createArrayBufferView(a,e.buffer,e.byteOffset,n),s=function(c,u){i.typedArray[c]=u}}l(r)||(r=function(a){return i.typedArray[a]}),this.typedArray=o,this.dataView=new DataView(o.buffer,o.byteOffset),this.get=r,this.set=s,this._componentType=t}var jR=WR;function bh(e){e=e??V.EMPTY_OBJECT;let t=e.count,n=e.class,i=0,o={};if(l(e.properties)){for(let r in e.properties)if(e.properties.hasOwnProperty(r)){let s=new jR({count:t,property:e.properties[r],classProperty:n.properties[r],bufferViews:e.bufferViews});o[r]=s,i+=s.byteLength}}this._count=t,this._class=n,this._properties=o,this._byteLength=i}Object.defineProperties(bh.prototype,{count:{get:function(){return this._count}},class:{get:function(){return this._class}},byteLength:{get:function(){return this._byteLength}}});bh.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};bh.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};bh.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};bh.prototype.getProperty=function(e,t){let n=this._properties[t],i;return l(n)?i=n.get(e):i=Uke(this._class,t),i};bh.prototype.setProperty=function(e,t,n){let i=this._properties[t];return l(i)?(i.set(e,n),!0):!1};bh.prototype.getPropertyBySemantic=function(e,t){let n,i=this._class.propertiesBySemantic;if(l(i)&&(n=i[t]),l(n))return this.getProperty(e,n.id)};bh.prototype.setPropertyBySemantic=function(e,t,n){let i,o=this._class.propertiesBySemantic;return l(o)&&(i=o[t]),l(i)?this.setProperty(e,i.id,n):!1};bh.prototype.getPropertyTypedArray=function(e){let t=this._properties[e];if(l(t))return t.getTypedArray()};bh.prototype.getPropertyTypedArrayBySemantic=function(e){let t,n=this._class.propertiesBySemantic;if(l(n)&&(t=n[e]),l(t))return this.getPropertyTypedArray(t.id)};function Uke(e,t){let n=e.properties;if(!l(n))return;let i=n[t];if(l(i)&&l(i.default)){let o=i.default;return i.isArray&&(o=ze(o,!0)),o=i.normalize(o),i.unpackVectorAndMatrixTypes(o)}}var od=bh;function z_(){}Object.defineProperties(z_.prototype,{cacheKey:{get:function(){me.throwInstantiationError()}}});z_.prototype.load=function(){me.throwInstantiationError()};z_.prototype.unload=function(){};z_.prototype.process=function(e){return!1};z_.prototype.getError=function(e,t){l(t)&&l(t.message)&&(e+=` +${t.message}`);let n=new ce(e);return l(t)&&(n.stack=`Original stack: +${t.stack} +Handler stack: +${n.stack}`),n};z_.prototype.isDestroyed=function(){return!1};z_.prototype.destroy=function(){return this.unload(),ue(this)};var Hi=z_;var Gke={UNLOADED:0,LOADING:1,LOADED:2,PROCESSING:3,READY:4,FAILED:5},dt=Object.freeze(Gke);function Bp(e){e=e??V.EMPTY_OBJECT;let t=e.typedArray,n=e.resource,i=e.cacheKey;this._typedArray=t,this._resource=n,this._cacheKey=i,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(Bp.prototype=Object.create(Hi.prototype),Bp.prototype.constructor=Bp);Object.defineProperties(Bp.prototype,{cacheKey:{get:function(){return this._cacheKey}},typedArray:{get:function(){return this._typedArray}}});Bp.prototype.load=async function(){return l(this._promise)?this._promise:l(this._typedArray)?(this._promise=Promise.resolve(this),this._promise):(this._promise=zke(this),this._promise)};async function zke(e){let t=e._resource;e._state=dt.LOADING;try{let n=await Bp._fetchArrayBuffer(t);return e.isDestroyed()?void 0:(e._typedArray=new Uint8Array(n),e._state=dt.READY,e)}catch(n){if(e.isDestroyed())return;e._state=dt.FAILED;let i=`Failed to load external buffer: ${t.url}`;throw e.getError(i,n)}}Bp._fetchArrayBuffer=function(e){return e.fetchArrayBuffer()};Bp.prototype.unload=function(){this._typedArray=void 0};var FE=Bp;var bae=xr(xae(),1);function QE(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.bufferViewId,o=e.gltfResource,r=e.baseResource,s=e.cacheKey,a=n.bufferViews[i],c=a.buffer,u=a.byteOffset,f=a.byteLength,h=!1,A,g,m,_;if(Ei(a,"EXT_meshopt_compression")){let C=a.extensions.EXT_meshopt_compression;c=C.buffer,u=C.byteOffset??0,f=C.byteLength,h=!0,A=C.byteStride,g=C.count,m=C.mode,_=C.filter??"NONE"}let y=n.buffers[c];this._hasMeshopt=h,this._meshoptByteStride=A,this._meshoptCount=g,this._meshoptMode=m,this._meshoptFilter=_,this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._buffer=y,this._bufferId=c,this._byteOffset=u,this._byteLength=f,this._cacheKey=s,this._bufferLoader=void 0,this._typedArray=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(QE.prototype=Object.create(Hi.prototype),QE.prototype.constructor=QE);Object.defineProperties(QE.prototype,{cacheKey:{get:function(){return this._cacheKey}},typedArray:{get:function(){return this._typedArray}}});async function Yke(e){try{let t=qke(e);if(e._bufferLoader=t,await t.load(),e.isDestroyed())return;let n=t.typedArray,i=new Uint8Array(n.buffer,n.byteOffset+e._byteOffset,e._byteLength);if(e.unload(),e._typedArray=i,e._hasMeshopt){let o=e._meshoptCount,r=e._meshoptByteStride,s=new Uint8Array(o*r);bae.MeshoptDecoder.decodeGltfBuffer(s,o,r,e._typedArray,e._meshoptMode,e._meshoptFilter),e._typedArray=s}return e._state=dt.READY,e}catch(t){if(e.isDestroyed())return;throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load buffer view",t)}}QE.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=Yke(this),this._promise)};function qke(e){let t=e._resourceCache,n=e._buffer;if(l(n.uri)){let o=e._baseResource.getDerivedResource({url:n.uri});return t.getExternalBufferLoader({resource:o})}return t.getEmbeddedBufferLoader({parentResource:e._gltfResource,bufferId:e._bufferId})}QE.prototype.unload=function(){l(this._bufferLoader)&&!this._bufferLoader.isDestroyed()&&this._resourceCache.unload(this._bufferLoader),this._bufferLoader=void 0,this._typedArray=void 0};var Cb=QE;function ts(){}ts._maxDecodingConcurrency=Math.max(Wt.hardwareConcurrency-1,1);ts._decoderTaskProcessor=void 0;ts._taskProcessorReady=!1;ts._error=void 0;ts._getDecoderTaskProcessor=function(){if(!l(ts._decoderTaskProcessor)){let e=new di("decodeDraco",ts._maxDecodingConcurrency);e.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/draco_decoder.wasm"}).then(function(t){t?ts._taskProcessorReady=!0:ts._error=new ce("Draco decoder could not be initialized.")}).catch(t=>{ts._error=t}),ts._decoderTaskProcessor=e}return ts._decoderTaskProcessor};ts.decodePointCloud=function(e){let t=ts._getDecoderTaskProcessor();if(l(ts._error))throw ts._error;if(ts._taskProcessorReady)return t.scheduleTask(e,[e.buffer.buffer])};ts.decodeBufferView=function(e){let t=ts._getDecoderTaskProcessor();if(l(ts._error))throw ts._error;if(ts._taskProcessorReady)return t.scheduleTask(e,[e.array.buffer])};var Dp=ts;var Hn={POSITION:"POSITION",NORMAL:"NORMAL",TANGENT:"TANGENT",TEXCOORD:"TEXCOORD",COLOR:"COLOR",JOINTS:"JOINTS",WEIGHTS:"WEIGHTS",FEATURE_ID:"_FEATURE_ID",SCALE:"_SCALE",ROTATION:"_ROTATION"};function Kke(e){switch(e){case Hn.POSITION:return"positionMC";case Hn.NORMAL:return"normalMC";case Hn.TANGENT:return"tangentMC";case Hn.TEXCOORD:return"texCoord";case Hn.COLOR:return"color";case Hn.JOINTS:return"joints";case Hn.WEIGHTS:return"weights";case Hn.FEATURE_ID:return"featureId";case Hn.SCALE:return"scale";case Hn.ROTATION:return"rotation"}}Hn.hasSetIndex=function(e){switch(e){case Hn.POSITION:case Hn.NORMAL:case Hn.TANGENT:return!1;case Hn.TEXCOORD:case Hn.COLOR:case Hn.JOINTS:case Hn.WEIGHTS:case Hn.FEATURE_ID:case Hn.SCALE:case Hn.ROTATION:return!0}};Hn.fromGltfSemantic=function(e){let t=e,i=/^(\w+)_\d+$/.exec(e);switch(i!==null&&(t=i[1]),t){case"POSITION":return Hn.POSITION;case"NORMAL":return Hn.NORMAL;case"TANGENT":return Hn.TANGENT;case"TEXCOORD":return Hn.TEXCOORD;case"COLOR":return Hn.COLOR;case"JOINTS":return Hn.JOINTS;case"WEIGHTS":return Hn.WEIGHTS;case"_FEATURE_ID":return Hn.FEATURE_ID;case"_SCALE":return Hn.SCALE;case"_ROTATION":return Hn.ROTATION}};Hn.fromPntsSemantic=function(e){switch(e){case"POSITION":case"POSITION_QUANTIZED":return Hn.POSITION;case"RGBA":case"RGB":case"RGB565":return Hn.COLOR;case"NORMAL":case"NORMAL_OCT16P":return Hn.NORMAL;case"BATCH_ID":return Hn.FEATURE_ID}};Hn.getGlslType=function(e){switch(e){case Hn.POSITION:case Hn.NORMAL:case Hn.TANGENT:return"vec3";case Hn.TEXCOORD:return"vec2";case Hn.COLOR:return"vec4";case Hn.JOINTS:return"ivec4";case Hn.WEIGHTS:return"vec4";case Hn.FEATURE_ID:return"int";case Hn.SCALE:return"vec3";case Hn.ROTATION:return"vec4";case Hn.OPACITY:return"float"}};Hn.getVariableName=function(e,t){let n=Kke(e);return l(t)&&(n+=`_${t}`),n};var at=Object.freeze(Hn);function V_(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.primitive,o=e.draco,r=e.gltfResource,s=e.baseResource,a=e.cacheKey;this._resourceCache=t,this._gltfResource=r,this._baseResource=s,this._gltf=n,this._primitive=i,this._draco=o,this._cacheKey=a,this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodePromise=void 0,this._decodedData=void 0,this._state=dt.UNLOADED,this._promise=void 0,this._dracoError=void 0}l(Object.create)&&(V_.prototype=Object.create(Hi.prototype),V_.prototype.constructor=V_);Object.defineProperties(V_.prototype,{cacheKey:{get:function(){return this._cacheKey}},decodedData:{get:function(){return this._decodedData}}});async function Xke(e){let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._draco.bufferView,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._bufferViewTypedArray=n.typedArray,e._state=dt.PROCESSING,e)}catch(n){if(e.isDestroyed())return;Tae(e,n)}}V_.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=Xke(this),this._promise)};function Tae(e,t){throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load Draco",t)}async function Jke(e,t){try{let n=await t;return e.isDestroyed()?void 0:(e.unload(),e._decodedData={indices:n.indexArray,vertexAttributes:n.attributeData},e._state=dt.READY,e._baseResource)}catch(n){if(e.isDestroyed())return;e._dracoError=n}}var kE={};kE[at.POSITION]="POSITION";kE[at.NORMAL]="NORMAL";kE[at.COLOR]="COLOR";kE[at.TEXCOORD]="TEX_COORD";function Zke(e){for(let t in kE)if(kE.hasOwnProperty(t)&&e.startsWith(t))return kE[t]}V_.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.PROCESSING||(l(this._dracoError)&&Tae(this,this._dracoError),!l(this._bufferViewTypedArray))||l(this._decodePromise))return!1;let t=this._draco,n=this._primitive,i=this._gltf,o=i.bufferViews,r=t.bufferView,s=o[r],a=t.attributes,c=[];for(let h in n.attributes)if(n.attributes.hasOwnProperty(h)){let A=Zke(h);l(A)&&i.accessors[n.attributes[h]].componentType===q.FLOAT&&(c.includes(A)||c.push(A))}let u={array:new Uint8Array(this._bufferViewTypedArray),bufferView:s,compressedAttributes:a,dequantizeInShader:!0,attributesToSkipTransform:c},f=Dp.decodeBufferView(u);if(!l(f))return!1;this._decodePromise=Jke(this,f)};V_.prototype.unload=function(){l(this._bufferViewLoader)&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodedData=void 0,this._gltf=void 0,this._primitive=void 0};var Eb=V_;function $ke(e){let t=e.uint8Array,n=e.format,i=e.request,o=e.flipY??!1,r=e.skipColorSpaceConversion??!1,s=new Blob([t],{type:n}),a;return we.supportsImageBitmapOptions().then(function(c){return c?Promise.resolve(we.createImageBitmapFromBlob(s,{flipY:o,premultiplyAlpha:!1,skipColorSpaceConversion:r})):(a=window.URL.createObjectURL(s),new we({url:a,request:i}).fetchImage({flipY:o,skipColorSpaceConversion:r}))}).then(function(c){return l(a)&&window.URL.revokeObjectURL(a),c}).catch(function(c){return l(a)&&window.URL.revokeObjectURL(a),Promise.reject(c)})}var UE=$ke;function vp(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.imageId,o=e.gltfResource,r=e.baseResource,s=e.cacheKey,a=n.images[i],c=a.bufferView,u=a.uri;this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._gltf=n,this._bufferViewId=c,this._uri=u,this._cacheKey=s,this._bufferViewLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(vp.prototype=Object.create(Hi.prototype),vp.prototype.constructor=vp);Object.defineProperties(vp.prototype,{cacheKey:{get:function(){return this._cacheKey}},image:{get:function(){return this._image}},mipLevels:{get:function(){return this._mipLevels}}});vp.prototype.load=function(){return l(this._promise)?this._promise:l(this._bufferViewId)?(this._promise=e3e(this),this._promise):(this._promise=t3e(this),this._promise)};function Sae(e){let t;return Array.isArray(e)&&(t=e.slice(1,e.length).map(function(n){return n.bufferView}),e=e[0]),{image:e,mipLevels:t}}async function e3e(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._bufferViewId,gltfResource:e._gltfResource,baseResource:e._baseResource});if(e._bufferViewLoader=n,await n.load(),e.isDestroyed())return;let i=n.typedArray,o=await i3e(i);if(e.isDestroyed())return;let r=Sae(o);return e.unload(),e._image=r.image,e._mipLevels=r.mipLevels,e._state=dt.READY,e}catch(n){return e.isDestroyed()?void 0:wae(e,n,"Failed to load embedded image")}}async function t3e(e){e._state=dt.LOADING;let t=e._baseResource,n=e._uri,i=t.getDerivedResource({url:n});try{let o=await r3e(i);if(e.isDestroyed())return;let r=Sae(o);return e.unload(),e._image=r.image,e._mipLevels=r.mipLevels,e._state=dt.READY,e}catch(o){return e.isDestroyed()?void 0:wae(e,o,`Failed to load image: ${n}`)}}function wae(e,t,n){return e.unload(),e._state=dt.FAILED,Promise.reject(e.getError(n,t))}function n3e(e){let t=e.subarray(0,2),n=e.subarray(0,4),i=e.subarray(8,12);if(t[0]===255&&t[1]===216)return"image/jpeg";if(t[0]===137&&t[1]===80)return"image/png";if(t[0]===171&&t[1]===75)return"image/ktx2";if(n[0]===82&&n[1]===73&&n[2]===70&&n[3]===70&&i[0]===87&&i[1]===69&&i[2]===66&&i[3]===80)return"image/webp";throw new ce("Image format is not recognized")}async function i3e(e){let t=n3e(e);if(t==="image/ktx2"){let n=new Uint8Array(e);return $l(n)}return vp._loadImageFromTypedArray({uint8Array:e,format:t,flipY:!1,skipColorSpaceConversion:!0})}var o3e=/(^data:image\/ktx2)|(\.ktx2$)/i;function r3e(e){let t=e.getUrlComponent(!1,!0);return o3e.test(t)?$l(e):e.fetchImage({skipColorSpaceConversion:!0,preferImageBitmap:!0})}vp.prototype.unload=function(){l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._uri=void 0,this._image=void 0,this._mipLevels=void 0,this._gltf=void 0};vp._loadImageFromTypedArray=UE;var Ib=vp;var s3e={TEXTURE:0,PROGRAM:1,BUFFER:2,NUMBER_OF_JOB_TYPES:3},hc=Object.freeze(s3e);function H_(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.accessorId,o=e.gltfResource,r=e.baseResource,s=e.primitive,a=e.draco,c=e.cacheKey,u=e.asynchronous??!0,f=e.loadBuffer??!1,h=e.loadTypedArray??!1,A=n.accessors[i].componentType;this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._gltf=n,this._accessorId=i,this._indexDatatype=A,this._primitive=s,this._draco=a,this._cacheKey=c,this._asynchronous=u,this._loadBuffer=f,this._loadTypedArray=h,this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(H_.prototype=Object.create(Hi.prototype),H_.prototype.constructor=H_);Object.defineProperties(H_.prototype,{cacheKey:{get:function(){return this._cacheKey}},buffer:{get:function(){return this._buffer}},typedArray:{get:function(){return this._typedArray}},indexDatatype:{get:function(){return this._indexDatatype}}});var a3e=new VW;H_.prototype.load=async function(){return l(this._promise)?this._promise:l(this._draco)?(this._promise=c3e(this),this._promise):(this._promise=l3e(this),this._promise)};async function c3e(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getDracoLoader({gltf:e._gltf,primitive:e._primitive,draco:e._draco,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._dracoLoader=n,await n.load(),e.isDestroyed()?void 0:(e._state=dt.LOADED,e)}catch(n){if(e.isDestroyed())return;zW(e,n)}}async function l3e(e){let t=e._gltf,n=e._accessorId,o=t.accessors[n].bufferView;e._state=dt.LOADING;let r=e._resourceCache;try{let s=r.getBufferViewLoader({gltf:t,bufferViewId:o,gltfResource:e._gltfResource,baseResource:e._baseResource});if(e._bufferViewLoader=s,await s.load(),e.isDestroyed())return;let a=s.typedArray;return e._typedArray=u3e(e,a),e._state=dt.PROCESSING,e}catch(s){if(e.isDestroyed())return;zW(e,s)}}function u3e(e,t){let n=e._gltf,i=e._accessorId,o=n.accessors[i],r=o.count,s=o.componentType,a=Oe.getSizeInBytes(s),c=t.buffer,u=t.byteOffset+o.byteOffset;if(u%a!==0){let h=r*a,A=new Uint8Array(c,u,h);c=new Uint8Array(A).buffer,u=0,Tr("index-buffer-unaligned",`The index array is not aligned to a ${a}-byte boundary.`)}let f;return s===Oe.UNSIGNED_BYTE?f=new Uint8Array(c,u,r):s===Oe.UNSIGNED_SHORT?f=new Uint16Array(c,u,r):s===Oe.UNSIGNED_INT&&(f=new Uint32Array(c,u,r)),f}function zW(e,t){throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load index buffer",t)}function VW(){this.typedArray=void 0,this.indexDatatype=void 0,this.context=void 0,this.buffer=void 0}VW.prototype.set=function(e,t,n){this.typedArray=e,this.indexDatatype=t,this.context=n};VW.prototype.execute=function(){this.buffer=Bae(this.typedArray,this.indexDatatype,this.context)};function Bae(e,t,n){let i=Ct.createIndexBuffer({typedArray:e,context:n,usage:Qe.STATIC_DRAW,indexDatatype:t});return i.vertexArrayDestroyable=!1,i}H_.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED&&this._state!==dt.PROCESSING)return!1;let t=this._typedArray,n=this._indexDatatype;if(l(this._dracoLoader))try{this._dracoLoader.process(e)&&(t=this._dracoLoader.decodedData.indices.typedArray,this._typedArray=t,n=q.fromTypedArray(t),this._indexDatatype=n)}catch(o){zW(this,o)}if(!l(t))return!1;let i;if(this._loadBuffer&&this._asynchronous){let o=a3e;if(o.set(t,n,e.context),!e.jobScheduler.execute(o,hc.BUFFER))return!1;i=o.buffer}else this._loadBuffer&&(i=Bae(t,n,e.context));return this.unload(),this._buffer=i,this._typedArray=this._loadTypedArray?t:void 0,this._state=dt.READY,this._resourceCache.statistics.addGeometryLoader(this),!0};H_.prototype.unload=function(){l(this._buffer)&&this._buffer.destroy();let e=this._resourceCache;l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&e.unload(this._bufferViewLoader),l(this._dracoLoader)&&e.unload(this._dracoLoader),this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._gltf=void 0,this._primitive=void 0};var xb=H_;function f3e(e,t,n){if(n=n??!1,n){let i=e.indexOf(t);if(i>-1)return i}return e.push(t),e.length-1}var Ys=f3e;function d3e(e,t){return l(e.extensionsUsed)&&e.extensionsUsed.indexOf(t)>=0}var Sr=d3e;function rn(){}rn.objectLegacy=function(e,t){if(l(e)){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let i=e[n],o=t(i,n);if(l(o))return o}}};rn.object=function(e,t){if(l(e)){let n=e.length;for(let i=0;i<n;i++){let o=e[i],r=t(o,i);if(l(r))return r}}};rn.topLevel=function(e,t,n){let i=e[t];return l(i)&&!Array.isArray(i)?rn.objectLegacy(i,n):rn.object(i,n)};rn.accessor=function(e,t){return rn.topLevel(e,"accessors",t)};rn.accessorWithSemantic=function(e,t,n){let i={};return rn.mesh(e,function(o){return rn.meshPrimitive(o,function(r){let s=rn.meshPrimitiveAttribute(r,function(a,c){if(c.indexOf(t)===0&&!l(i[a])){i[a]=!0;let u=n(a);if(l(u))return u}});return l(s)?s:rn.meshPrimitiveTarget(r,function(a){return rn.meshPrimitiveTargetAttribute(a,function(c,u){if(u.indexOf(t)===0&&!l(i[c])){i[c]=!0;let f=n(c);if(l(f))return f}})})})})};rn.accessorContainingVertexAttributeData=function(e,t){let n={};return rn.mesh(e,function(i){return rn.meshPrimitive(i,function(o){let r=rn.meshPrimitiveAttribute(o,function(s){if(!l(n[s])){n[s]=!0;let a=t(s);if(l(a))return a}});return l(r)?r:rn.meshPrimitiveTarget(o,function(s){return rn.meshPrimitiveTargetAttribute(s,function(a){if(!l(n[a])){n[a]=!0;let c=t(a);if(l(c))return c}})})})})};rn.accessorContainingIndexData=function(e,t){let n={};return rn.mesh(e,function(i){return rn.meshPrimitive(i,function(o){let r=o.indices;if(l(r)&&!l(n[r])){n[r]=!0;let s=t(r);if(l(s))return s}})})};rn.animation=function(e,t){return rn.topLevel(e,"animations",t)};rn.animationChannel=function(e,t){let n=e.channels;return rn.object(n,t)};rn.animationSampler=function(e,t){let n=e.samplers;return rn.object(n,t)};rn.buffer=function(e,t){return rn.topLevel(e,"buffers",t)};rn.bufferView=function(e,t){return rn.topLevel(e,"bufferViews",t)};rn.camera=function(e,t){return rn.topLevel(e,"cameras",t)};rn.image=function(e,t){return rn.topLevel(e,"images",t)};rn.material=function(e,t){return rn.topLevel(e,"materials",t)};rn.materialValue=function(e,t){let n=e.values;l(e.extensions)&&l(e.extensions.KHR_techniques_webgl)&&(n=e.extensions.KHR_techniques_webgl.values);for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.mesh=function(e,t){return rn.topLevel(e,"meshes",t)};rn.meshPrimitive=function(e,t){let n=e.primitives;if(l(n)){let i=n.length;for(let o=0;o<i;o++){let r=n[o],s=t(r,o);if(l(s))return s}}};rn.meshPrimitiveAttribute=function(e,t){let n=e.attributes;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.meshPrimitiveTarget=function(e,t){let n=e.targets;if(l(n)){let i=n.length;for(let o=0;o<i;++o){let r=t(n[o],o);if(l(r))return r}}};rn.meshPrimitiveTargetAttribute=function(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let i=e[n],o=t(i,n);if(l(o))return o}};rn.node=function(e,t){return rn.topLevel(e,"nodes",t)};rn.nodeInTree=function(e,t,n){let i=e.nodes;if(l(i)){let o=t.length;for(let r=0;r<o;r++){let s=t[r],a=i[s];if(l(a)){let c=n(a,s);if(l(c))return c;let u=a.children;if(l(u)&&(c=rn.nodeInTree(e,u,n),l(c)))return c}}}};rn.nodeInScene=function(e,t,n){let i=t.nodes;if(l(i))return rn.nodeInTree(e,i,n)};rn.program=function(e,t){return Sr(e,"KHR_techniques_webgl")?rn.object(e.extensions.KHR_techniques_webgl.programs,t):rn.topLevel(e,"programs",t)};rn.sampler=function(e,t){return rn.topLevel(e,"samplers",t)};rn.scene=function(e,t){return rn.topLevel(e,"scenes",t)};rn.shader=function(e,t){return Sr(e,"KHR_techniques_webgl")?rn.object(e.extensions.KHR_techniques_webgl.shaders,t):rn.topLevel(e,"shaders",t)};rn.skin=function(e,t){return rn.topLevel(e,"skins",t)};rn.skinJoint=function(e,t){let n=e.joints;if(l(n)){let i=n.length;for(let o=0;o<i;o++){let r=n[o],s=t(r);if(l(s))return s}}};rn.techniqueAttribute=function(e,t){let n=e.attributes;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.techniqueUniform=function(e,t){let n=e.uniforms;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.techniqueParameter=function(e,t){let n=e.parameters;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.technique=function(e,t){return Sr(e,"KHR_techniques_webgl")?rn.object(e.extensions.KHR_techniques_webgl.techniques,t):rn.topLevel(e,"techniques",t)};rn.texture=function(e,t){return rn.topLevel(e,"textures",t)};var Re=rn;function h3e(e){switch(e){case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16}}var Yu=h3e;function m3e(e,t){let n=t.bufferView;if(l(n)){let i=e.bufferViews[n];if(l(i.byteStride)&&i.byteStride>0)return i.byteStride}return q.getSizeInBytes(t.componentType)*Yu(t.type)}var su=m3e;function A3e(e){Re.accessor(e,function(n){l(n.bufferView)&&(n.byteOffset=n.byteOffset??0)}),Re.bufferView(e,function(n){l(n.buffer)&&(n.byteOffset=n.byteOffset??0)}),Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){if(i.mode=i.mode??ee.TRIANGLES,!l(i.material)){l(e.materials)||(e.materials=[]);let o={name:"default"};i.material=Ys(e.materials,o)}})}),Re.accessorContainingVertexAttributeData(e,function(n){let i=e.accessors[n],o=i.bufferView;if(i.normalized=i.normalized??!1,l(o)){let r=e.bufferViews[o];r.byteStride=su(e,i),r.target=ee.ARRAY_BUFFER}}),Re.accessorContainingIndexData(e,function(n){let o=e.accessors[n].bufferView;if(l(o)){let r=e.bufferViews[o];r.target=ee.ELEMENT_ARRAY_BUFFER}}),Re.material(e,function(n){let i=n.extensions??{},o=i.KHR_materials_common;if(l(o)){let c=o.technique,u=l(o.values)?o.values:{};o.values=u,u.ambient=l(u.ambient)?u.ambient:[0,0,0,1],u.emission=l(u.emission)?u.emission:[0,0,0,1],u.transparency=u.transparency??1,c!=="CONSTANT"&&(u.diffuse=l(u.diffuse)?u.diffuse:[0,0,0,1],c!=="LAMBERT"&&(u.specular=l(u.specular)?u.specular:[0,0,0,1],u.shininess=u.shininess??0)),o.transparent=o.transparent??!1,o.doubleSided=o.doubleSided??!1;return}n.emissiveFactor=n.emissiveFactor??[0,0,0],n.alphaMode=n.alphaMode??"OPAQUE",n.doubleSided=n.doubleSided??!1,n.alphaMode==="MASK"&&(n.alphaCutoff=n.alphaCutoff??.5);let r=i.KHR_techniques_webgl;l(r)&&Re.materialValue(n,function(c){l(c.index)&&GE(c)}),GE(n.emissiveTexture),GE(n.normalTexture),GE(n.occlusionTexture);let s=n.pbrMetallicRoughness;l(s)&&(s.baseColorFactor=s.baseColorFactor??[1,1,1,1],s.metallicFactor=s.metallicFactor??1,s.roughnessFactor=s.roughnessFactor??1,GE(s.baseColorTexture),GE(s.metallicRoughnessTexture));let a=i.KHR_materials_pbrSpecularGlossiness;l(a)&&(a.diffuseFactor=a.diffuseFactor??[1,1,1,1],a.specularFactor=a.specularFactor??[1,1,1],a.glossinessFactor=a.glossinessFactor??1,GE(a.specularGlossinessTexture))}),Re.animation(e,function(n){Re.animationSampler(n,function(i){i.interpolation=i.interpolation??"LINEAR"})});let t=p3e(e);return Re.node(e,function(n,i){l(t[i])||l(n.translation)||l(n.rotation)||l(n.scale)?(n.translation=n.translation??[0,0,0],n.rotation=n.rotation??[0,0,0,1],n.scale=n.scale??[1,1,1]):n.matrix=n.matrix??[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}),Re.sampler(e,function(n){n.wrapS=n.wrapS??ee.REPEAT,n.wrapT=n.wrapT??ee.REPEAT}),l(e.scenes)&&!l(e.scene)&&(e.scene=0),e}function p3e(e){let t={};return Re.animation(e,function(n){Re.animationChannel(n,function(i){let o=i.target,r=o.node,s=o.path;(s==="translation"||s==="rotation"||s==="scale")&&(t[r]=!0)})}),t}function GE(e){l(e)&&(e.texCoord=e.texCoord??0)}var JR=A3e;function g3e(e){return Re.shader(e,function(t){Cz(t)}),Re.buffer(e,function(t){Cz(t)}),Re.image(e,function(t){Cz(t)}),Cz(e),e}function Cz(e){e.extras=l(e.extras)?e.extras:{},e.extras._pipeline=l(e.extras._pipeline)?e.extras._pipeline:{}}var W_=g3e;function _3e(e,t){let n=e.extensionsRequired;if(l(n)){let i=n.indexOf(t);i>=0&&n.splice(i,1),n.length===0&&delete e.extensionsRequired}}var ZR=_3e;function y3e(e,t){let n=e.extensionsUsed;if(l(n)){let i=n.indexOf(t);i>=0&&n.splice(i,1),ZR(e,t),n.length===0&&delete e.extensionsUsed}}var zE=y3e;var C3e=4;function E3e(e){if(Ih(e)!=="glTF")throw new ce("File is not valid binary glTF");let n=Dae(e,0,5),i=n[1];if(i!==1&&i!==2)throw new ce("Binary glTF version is not 1 or 2");return i===1?I3e(e,n):x3e(e,n)}function Dae(e,t,n){let i=new DataView(e.buffer),o=new Array(n);for(let r=0;r<n;++r)o[r]=i.getUint32(e.byteOffset+t+r*C3e,!0);return o}function I3e(e,t){let n=t[2],i=t[3];if(t[4]!==0)throw new ce("Binary glTF scene format is not JSON");let r=20,s=r+i,a=iu(e,r,i),c=JSON.parse(a);W_(c);let u=e.subarray(s,n),f=c.buffers;if(l(f)&&Object.keys(f).length>0){let h=f.binary_glTF??f.KHR_binary_glTF;l(h)&&(h.extras._pipeline.source=u,delete h.uri)}return zE(c,"KHR_binary_glTF"),c}function x3e(e,t){let n=t[2],i=12,o,r;for(;i<n;){let s=Dae(e,i,2),a=s[0],c=s[1];i+=8;let u=e.subarray(i,i+a);if(i+=a,c===1313821514){let f=iu(u);o=JSON.parse(f),W_(o)}else c===5130562&&(r=u)}if(l(o)&&l(r)){let s=o.buffers;if(l(s)&&s.length>0){let a=s[0];a.extras._pipeline.source=r}}return o}var $R=E3e;function b3e(e){return Re.shader(e,function(t){Ez(t)}),Re.buffer(e,function(t){Ez(t)}),Re.image(e,function(t){Ez(t)}),Ez(e),e}function Ez(e){l(e.extras)&&(l(e.extras._pipeline)&&delete e.extras._pipeline,Object.keys(e.extras).length===0&&delete e.extras)}var eM=b3e;function T3e(e,t){let n=e.extensionsUsed;l(n)||(n=[],e.extensionsUsed=n),Ys(n,t,!0)}var rd=T3e;function S3e(e){switch(e){case q.BYTE:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getInt8(n+s*o)};case q.UNSIGNED_BYTE:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getUint8(n+s*o)};case q.SHORT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getInt16(n+s*o,!0)};case q.UNSIGNED_SHORT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getUint16(n+s*o,!0)};case q.INT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getInt32(n+s*o,!0)};case q.UNSIGNED_INT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getUint32(n+s*o,!0)};case q.FLOAT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getFloat32(n+s*o,!0)};case q.DOUBLE:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getFloat64(n+s*o,!0)}}}var Pp=S3e;function w3e(e,t){let n=e.bufferViews,i=e.buffers,o=t.bufferView,r=Yu(t.type);if(!l(t.bufferView))return{min:new Array(r).fill(0),max:new Array(r).fill(0)};let s=new Array(r).fill(Number.POSITIVE_INFINITY),a=new Array(r).fill(Number.NEGATIVE_INFINITY),c=n[o],u=c.buffer,h=i[u].extras._pipeline.source,A=t.count,g=su(e,t),m=t.byteOffset+c.byteOffset+h.byteOffset,_=t.componentType,y=q.getSizeInBytes(_),C=new DataView(h.buffer),E=new Array(r),I=Pp(_);for(let b=0;b<A;b++){I(C,m,r,y,E);for(let S=0;S<r;S++){let B=E[S];s[S]=Math.min(s[S],B),a[S]=Math.max(a[S],B)}m+=g}return{min:s,max:a}}var VE=w3e;var B3e=[ee.FUNC_ADD,ee.FUNC_ADD],D3e=[ee.ONE,ee.ZERO,ee.ONE,ee.ZERO];function vae(e,t){let n=e.enable;return l(n)?n.indexOf(t)>-1:!1}var v3e=[ee.ZERO,ee.ONE,ee.SRC_COLOR,ee.ONE_MINUS_SRC_COLOR,ee.SRC_ALPHA,ee.ONE_MINUS_SRC_ALPHA,ee.DST_ALPHA,ee.ONE_MINUS_DST_ALPHA,ee.DST_COLOR,ee.ONE_MINUS_DST_COLOR];function P3e(e,t){if(!l(e))return t;for(let n=0;n<4;n++)if(v3e.indexOf(e[n])===-1)return t;return e}function R3e(e){let t={},n={},i=e.techniques;return l(i)&&(Re.technique(e,function(o,r){let s=o.states;if(l(s)){let a=n[r]={};if(vae(s,ee.BLEND)){a.alphaMode="BLEND";let c=s.functions;l(c)&&(l(c.blendEquationSeparate)||l(c.blendFuncSeparate))&&(t[r]={blendEquation:c.blendEquationSeparate??B3e,blendFactors:P3e(c.blendFuncSeparate,D3e)})}vae(s,ee.CULL_FACE)||(a.doubleSided=!0),delete o.states}}),Object.keys(t).length>0&&(l(e.extensions)||(e.extensions={}),rd(e,"KHR_blend")),Re.material(e,function(o){if(l(o.technique)){let r=n[o.technique];Re.objectLegacy(r,function(a,c){o[c]=a});let s=t[o.technique];l(s)&&(l(o.extensions)||(o.extensions={}),o.extensions.KHR_blend=s)}})),e}var tM=R3e;function M3e(e,t){let n=e.extensionsRequired;l(n)||(n=[],e.extensionsRequired=n),Ys(n,t,!0),rd(e,t)}var nM=M3e;function N3e(e){let t=e.techniques,n={},i={},o={};if(l(t)){let r={programs:[],shaders:[],techniques:[]},s=e.glExtensionsUsed;delete e.glExtensionsUsed,Re.technique(e,function(a,c){let u={name:a.name,program:void 0,attributes:{},uniforms:{}},f;if(Re.techniqueAttribute(a,function(h,A){f=a.parameters[h],u.attributes[A]={semantic:f.semantic}}),Re.techniqueUniform(a,function(h,A){f=a.parameters[h],u.uniforms[A]={count:f.count,node:f.node,type:f.type,semantic:f.semantic,value:f.value},l(n[c])||(n[c]={}),n[c][h]=A}),l(o[a.program]))u.program=o[a.program];else{let h=e.programs[a.program],A={name:h.name,fragmentShader:void 0,vertexShader:void 0,glExtensions:s},g=e.shaders[h.fragmentShader];A.fragmentShader=Ys(r.shaders,g,!0);let m=e.shaders[h.vertexShader];A.vertexShader=Ys(r.shaders,m,!0),u.program=Ys(r.programs,A),o[a.program]=u.program}i[c]=Ys(r.techniques,u)}),r.techniques.length>0&&(l(e.extensions)||(e.extensions={}),e.extensions.KHR_techniques_webgl=r,rd(e,"KHR_techniques_webgl"),nM(e,"KHR_techniques_webgl"))}return Re.material(e,function(r){if(l(r.technique)){let s={technique:i[r.technique]};Re.objectLegacy(r.values,function(a,c){l(s.values)||(s.values={});let u=n[r.technique][c];l(u)&&(s.values[u]=a)}),l(r.extensions)||(r.extensions={}),r.extensions.KHR_techniques_webgl=s}delete r.technique,delete r.values}),delete e.techniques,delete e.programs,delete e.shaders,e}var iM=N3e;function L3e(e,t){Po.typeOf.object("material",e),Po.defined("handler",t);let n=e.pbrMetallicRoughness;if(l(n)){if(l(n.baseColorTexture)){let r=n.baseColorTexture,s=t(r.index,r);if(l(s))return s}if(l(n.metallicRoughnessTexture)){let r=n.metallicRoughnessTexture,s=t(r.index,r);if(l(s))return s}}let{extensions:i}=e;if(l(i)){let r=i.KHR_materials_pbrSpecularGlossiness;if(l(r)){if(l(r.diffuseTexture)){let c=r.diffuseTexture,u=t(c.index,c);if(l(u))return u}if(l(r.specularGlossinessTexture)){let c=r.specularGlossinessTexture,u=t(c.index,c);if(l(u))return u}}let s=i.KHR_materials_specular;if(l(s)){let{specularTexture:c,specularColorTexture:u}=s;if(l(c)){let f=t(c.index,c);if(l(f))return f}if(l(u)){let f=t(u.index,u);if(l(f))return f}}let a=i.KHR_materials_common;if(l(a)&&l(a.values)){let{diffuse:c,ambient:u,emission:f,specular:h}=a.values;if(l(c)&&l(c.index)){let A=t(c.index,c);if(l(A))return A}if(l(u)&&l(u.index)){let A=t(u.index,u);if(l(A))return A}if(l(f)&&l(f.index)){let A=t(f.index,f);if(l(A))return A}if(l(h)&&l(h.index)){let A=t(h.index,h);if(l(A))return A}}}let o=Re.materialValue(e,function(r){if(l(r.index)){let s=t(r.index,r);if(l(s))return s}});if(l(o))return o;if(l(e.emissiveTexture)){let r=e.emissiveTexture,s=t(r.index,r);if(l(s))return s}if(l(e.normalTexture)){let r=e.normalTexture,s=t(r.index,r);if(l(s))return s}if(l(e.occlusionTexture)){let r=e.occlusionTexture,s=t(r.index,r);if(l(s))return s}}var bb=L3e;var Pae=["mesh","node","material","accessor","bufferView","buffer","texture","sampler","image"];function O3e(e,t){return t=t??Pae,Pae.forEach(function(n){t.indexOf(n)>-1&&Q3e(e,n)}),e}var F3e={accessor:"accessors",buffer:"buffers",bufferView:"bufferViews",image:"images",node:"nodes",material:"materials",mesh:"meshes",sampler:"samplers",texture:"textures"};function Q3e(e,t){let n=F3e[t],i=e[n];if(l(i)){let o=0,r=Km[t](e),s=i.length;for(let a=0;a<s;++a)r[a]||(qm[t](e,a-o),o++)}}function qm(){}qm.accessor=function(e,t){e.accessors.splice(t,1),Re.mesh(e,function(i){Re.meshPrimitive(i,function(o){Re.meshPrimitiveAttribute(o,function(a,c){a>t&&o.attributes[c]--}),Re.meshPrimitiveTarget(o,function(a){Re.meshPrimitiveTargetAttribute(a,function(c,u){c>t&&a[u]--})});let r=o.indices;l(r)&&r>t&&o.indices--;let s=o.extensions;l(s)&&l(s.CESIUM_primitive_outline)&&s.CESIUM_primitive_outline.indices>t&&--s.CESIUM_primitive_outline.indices})}),Re.skin(e,function(i){l(i.inverseBindMatrices)&&i.inverseBindMatrices>t&&i.inverseBindMatrices--}),Re.animation(e,function(i){Re.animationSampler(i,function(o){l(o.input)&&o.input>t&&o.input--,l(o.output)&&o.output>t&&o.output--})})};qm.buffer=function(e,t){e.buffers.splice(t,1),Re.bufferView(e,function(i){l(i.buffer)&&i.buffer>t&&i.buffer--,l(i.extensions)&&l(i.extensions.EXT_meshopt_compression)&&i.extensions.EXT_meshopt_compression.buffer--})};qm.bufferView=function(e,t){if(e.bufferViews.splice(t,1),Re.accessor(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Re.shader(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Re.image(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Sr(e,"KHR_draco_mesh_compression")&&Re.mesh(e,function(i){Re.meshPrimitive(i,function(o){l(o.extensions)&&l(o.extensions.KHR_draco_mesh_compression)&&o.extensions.KHR_draco_mesh_compression.bufferView>t&&o.extensions.KHR_draco_mesh_compression.bufferView--})}),Sr(e,"EXT_feature_metadata")){let o=e.extensions.EXT_feature_metadata.featureTables;for(let r in o)if(o.hasOwnProperty(r)){let a=o[r].properties;if(l(a)){for(let c in a)if(a.hasOwnProperty(c)){let u=a[c];l(u.bufferView)&&u.bufferView>t&&u.bufferView--,l(u.arrayOffsetBufferView)&&u.arrayOffsetBufferView>t&&u.arrayOffsetBufferView--,l(u.stringOffsetBufferView)&&u.stringOffsetBufferView>t&&u.stringOffsetBufferView--}}}}if(Sr(e,"EXT_structural_metadata")){let o=e.extensions.EXT_structural_metadata.propertyTables;if(l(o)){let r=o.length;for(let s=0;s<r;++s){let c=o[s].properties;for(let u in c)if(c.hasOwnProperty(u)){let f=c[u];l(f.values)&&f.values>t&&f.values--,l(f.arrayOffsets)&&f.arrayOffsets>t&&f.arrayOffsets--,l(f.stringOffsets)&&f.stringOffsets>t&&f.stringOffsets--}}}}};qm.image=function(e,t){e.images.splice(t,1),Re.texture(e,function(i){l(i.source)&&i.source>t&&--i.source;let o=i.extensions;l(o)&&l(o.EXT_texture_webp)&&o.EXT_texture_webp.source>t?--i.extensions.EXT_texture_webp.source:l(o)&&l(o.KHR_texture_basisu)&&o.KHR_texture_basisu.source>t&&--i.extensions.KHR_texture_basisu.source})};qm.mesh=function(e,t){e.meshes.splice(t,1),Re.node(e,function(i){l(i.mesh)&&(i.mesh>t?i.mesh--:i.mesh===t&&delete i.mesh)})};qm.node=function(e,t){e.nodes.splice(t,1),Re.skin(e,function(i){l(i.skeleton)&&i.skeleton>t&&i.skeleton--,i.joints=i.joints.map(function(o){return o>t?o-1:o})}),Re.animation(e,function(i){Re.animationChannel(i,function(o){l(o.target)&&l(o.target.node)&&o.target.node>t&&o.target.node--})}),Re.technique(e,function(i){Re.techniqueUniform(i,function(o){l(o.node)&&o.node>t&&o.node--})}),Re.node(e,function(i){l(i.children)&&(i.children=i.children.filter(function(o){return o!==t}).map(function(o){return o>t?o-1:o}))}),Re.scene(e,function(i){i.nodes=i.nodes.filter(function(o){return o!==t}).map(function(o){return o>t?o-1:o})})};qm.material=function(e,t){e.materials.splice(t,1),Re.mesh(e,function(i){Re.meshPrimitive(i,function(o){l(o.material)&&o.material>t&&o.material--})})};qm.sampler=function(e,t){e.samplers.splice(t,1),Re.texture(e,function(i){l(i.sampler)&&i.sampler>t&&--i.sampler})};qm.texture=function(e,t){if(e.textures.splice(t,1),Re.material(e,function(i){bb(i,function(o,r){r.index>t&&--r.index})}),Sr(e,"EXT_feature_metadata")){Re.mesh(e,function(r){Re.meshPrimitive(r,function(s){let a=s.extensions;if(l(a)&&l(a.EXT_feature_metadata)){let u=a.EXT_feature_metadata.featureIdTextures;if(l(u)){let f=u.length;for(let h=0;h<f;++h){let g=u[h].featureIds.texture;g.index>t&&--g.index}}}})});let o=e.extensions.EXT_feature_metadata.featureTextures;for(let r in o)if(o.hasOwnProperty(r)){let a=o[r].properties;if(l(a)){for(let c in a)if(a.hasOwnProperty(c)){let f=a[c].texture;f.index>t&&--f.index}}}}if(Sr(e,"EXT_mesh_features")&&Re.mesh(e,function(i){Re.meshPrimitive(i,function(o){let r=o.extensions;if(l(r)&&l(r.EXT_mesh_features)){let a=r.EXT_mesh_features.featureIds;if(l(a)){let c=a.length;for(let u=0;u<c;++u){let f=a[u];l(f.texture)&&f.texture.index>t&&--f.texture.index}}}})}),Sr(e,"EXT_structural_metadata")){let o=e.extensions.EXT_structural_metadata.propertyTextures;if(l(o)){let r=o.length;for(let s=0;s<r;++s){let c=o[s].properties;for(let u in c)if(c.hasOwnProperty(u)){let f=c[u];f.index>t&&--f.index}}}}};function Km(){}Km.accessor=function(e){let t={};return Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){Re.meshPrimitiveAttribute(i,function(r){t[r]=!0}),Re.meshPrimitiveTarget(i,function(r){Re.meshPrimitiveTargetAttribute(r,function(s){t[s]=!0})});let o=i.indices;l(o)&&(t[o]=!0)})}),Re.skin(e,function(n){l(n.inverseBindMatrices)&&(t[n.inverseBindMatrices]=!0)}),Re.animation(e,function(n){Re.animationSampler(n,function(i){l(i.input)&&(t[i.input]=!0),l(i.output)&&(t[i.output]=!0)})}),Sr(e,"EXT_mesh_gpu_instancing")&&Re.node(e,function(n){l(n.extensions)&&l(n.extensions.EXT_mesh_gpu_instancing)&&Object.keys(n.extensions.EXT_mesh_gpu_instancing.attributes).forEach(function(i){let o=n.extensions.EXT_mesh_gpu_instancing.attributes[i];t[o]=!0})}),Sr(e,"CESIUM_primitive_outline")&&Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){let o=i.extensions;if(l(o)&&l(o.CESIUM_primitive_outline)){let s=o.CESIUM_primitive_outline.indices;l(s)&&(t[s]=!0)}})}),t};Km.buffer=function(e){let t={};return Re.bufferView(e,function(n){l(n.buffer)&&(t[n.buffer]=!0),l(n.extensions)&&l(n.extensions.EXT_meshopt_compression)&&(t[n.extensions.EXT_meshopt_compression.buffer]=!0)}),t};Km.bufferView=function(e){let t={};if(Re.accessor(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Re.shader(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Re.image(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Sr(e,"KHR_draco_mesh_compression")&&Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){l(i.extensions)&&l(i.extensions.KHR_draco_mesh_compression)&&(t[i.extensions.KHR_draco_mesh_compression.bufferView]=!0)})}),Sr(e,"EXT_feature_metadata")){let i=e.extensions.EXT_feature_metadata.featureTables;for(let o in i)if(i.hasOwnProperty(o)){let s=i[o].properties;if(l(s)){for(let a in s)if(s.hasOwnProperty(a)){let c=s[a];l(c.bufferView)&&(t[c.bufferView]=!0),l(c.arrayOffsetBufferView)&&(t[c.arrayOffsetBufferView]=!0),l(c.stringOffsetBufferView)&&(t[c.stringOffsetBufferView]=!0)}}}}if(Sr(e,"EXT_structural_metadata")){let i=e.extensions.EXT_structural_metadata.propertyTables;if(l(i)){let o=i.length;for(let r=0;r<o;++r){let a=i[r].properties;for(let c in a)if(a.hasOwnProperty(c)){let u=a[c];l(u.values)&&(t[u.values]=!0),l(u.arrayOffsets)&&(t[u.arrayOffsets]=!0),l(u.stringOffsets)&&(t[u.stringOffsets]=!0)}}}}return t};Km.image=function(e){let t={};return Re.texture(e,function(n){l(n.source)&&(t[n.source]=!0),l(n.extensions)&&l(n.extensions.EXT_texture_webp)?t[n.extensions.EXT_texture_webp.source]=!0:l(n.extensions)&&l(n.extensions.KHR_texture_basisu)&&(t[n.extensions.KHR_texture_basisu.source]=!0)}),t};Km.mesh=function(e){let t={};return Re.node(e,function(n){if(l(n.mesh&&l(e.meshes))){let i=e.meshes[n.mesh];l(i)&&l(i.primitives)&&i.primitives.length>0&&(t[n.mesh]=!0)}}),t};function Rae(e,t,n){let i=e.nodes[t];return l(i.mesh)||l(i.camera)||l(i.skin)||l(i.weights)||l(i.extras)||l(i.extensions)&&Object.keys(i.extensions).length!==0||l(n[t])?!1:!l(i.children)||i.children.filter(function(o){return!Rae(e,o,n)}).length===0}Km.node=function(e){let t={};return Re.skin(e,function(n){l(n.skeleton)&&(t[n.skeleton]=!0),Re.skinJoint(n,function(i){t[i]=!0})}),Re.animation(e,function(n){Re.animationChannel(n,function(i){l(i.target)&&l(i.target.node)&&(t[i.target.node]=!0)})}),Re.technique(e,function(n){Re.techniqueUniform(n,function(i){l(i.node)&&(t[i.node]=!0)})}),Re.node(e,function(n,i){Rae(e,i,t)||(t[i]=!0)}),t};Km.material=function(e){let t={};return Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){l(i.material)&&(t[i.material]=!0)})}),t};Km.texture=function(e){let t={};if(Re.material(e,function(n){bb(n,function(i){t[i]=!0})}),Sr(e,"EXT_feature_metadata")){Re.mesh(e,function(o){Re.meshPrimitive(o,function(r){let s=r.extensions;if(l(s)&&l(s.EXT_feature_metadata)){let c=s.EXT_feature_metadata.featureIdTextures;if(l(c)){let u=c.length;for(let f=0;f<u;++f){let A=c[f].featureIds.texture;t[A.index]=!0}}}})});let i=e.extensions.EXT_feature_metadata.featureTextures;for(let o in i)if(i.hasOwnProperty(o)){let s=i[o].properties;if(l(s)){for(let a in s)if(s.hasOwnProperty(a)){let u=s[a].texture;t[u.index]=!0}}}}if(Sr(e,"EXT_mesh_features")&&Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){let o=i.extensions;if(l(o)&&l(o.EXT_mesh_features)){let s=o.EXT_mesh_features.featureIds;if(l(s)){let a=s.length;for(let c=0;c<a;++c){let u=s[c];l(u.texture)&&(t[u.texture.index]=!0)}}}})}),Sr(e,"EXT_structural_metadata")){let i=e.extensions.EXT_structural_metadata.propertyTextures;if(l(i)){let o=i.length;for(let r=0;r<o;++r){let a=i[r].properties;for(let c in a)if(a.hasOwnProperty(c)){let u=a[c];t[u.index]=!0}}}}return t};Km.sampler=function(e){let t={};return Re.texture(e,function(n){l(n.sampler)&&(t[n.sampler]=!0)}),t};var oM=O3e;function k3e(e,t){let n={byteLength:t.length,extras:{_pipeline:{source:t}}},o={buffer:Ys(e.buffers,n),byteOffset:0,byteLength:t.length};return Ys(e.bufferViews,o)}var rM=k3e;function U3e(e,t){let n=su(e,t),i=q.getSizeInBytes(t.componentType),o=Yu(t.type),r=t.count,s=new Array(o*r);if(!l(t.bufferView))return s.fill(0);let a=e.bufferViews[t.bufferView],c=e.buffers[a.buffer].extras._pipeline.source,u=t.byteOffset+a.byteOffset+c.byteOffset,f=new DataView(c.buffer),h=new Array(o),A=Pp(t.componentType);for(let g=0;g<r;++g){A(f,u,o,i,h);for(let m=0;m<o;++m)s[g*o+m]=h[m];u+=n}return s}var sM=U3e;function G3e(e){let t;return Re.accessorWithSemantic(e,"JOINTS_0",function(n){let i=e.accessors[n];t=i.componentType,t===ee.BYTE?Iz(e,i,q.UNSIGNED_BYTE):t!==ee.UNSIGNED_BYTE&&t!==ee.UNSIGNED_SHORT&&Iz(e,i,q.UNSIGNED_SHORT)}),Re.accessorWithSemantic(e,"WEIGHTS_0",function(n){let i=e.accessors[n];t=i.componentType,t===ee.BYTE?Iz(e,i,q.UNSIGNED_BYTE):t===ee.SHORT&&Iz(e,i,q.UNSIGNED_SHORT)}),e}function Iz(e,t,n){let i=q.createTypedArray(n,sM(e,t)),o=new Uint8Array(i.buffer);t.bufferView=rM(e,o),t.componentType=n,t.byteOffset=0}var aM=G3e;function z3e(e,t){return zE(e,t),t==="CESIUM_RTC"&&V3e(e),HW(e,t)}function V3e(e){Re.technique(e,function(t){Re.techniqueUniform(t,function(n){n.semantic==="CESIUM_RTC_MODELVIEW"&&(n.semantic="MODELVIEW")})})}function HW(e,t){if(Array.isArray(e)){let n=e.length;for(let i=0;i<n;++i)HW(e[i],t)}else if(e!==null&&typeof e=="object"&&e.constructor===Object){let n=e.extensions,i;l(n)&&(i=n[t],l(i)&&(delete n[t],Object.keys(n).length===0&&delete e.extensions));for(let o in e)Object.prototype.hasOwnProperty.call(e,o)&&HW(e[o],t);return i}}var HE=z3e;var xz={.8:K3e,"1.0":pUe,"2.0":void 0};function H3e(e,t){t=t??{};let n=t.targetVersion,i=e.version;e.asset=e.asset??{version:"1.0"},e.asset.version=e.asset.version??"1.0",i=(i??e.asset.version).toString(),Object.prototype.hasOwnProperty.call(xz,i)||(l(i)&&(i=i.substring(0,3)),Object.prototype.hasOwnProperty.call(xz,i)||(i="1.0"));let o=xz[i];for(;l(o)&&i!==n;)o(e,t),i=e.asset.version,o=xz[i];return t.keepLegacyExtensions||(yUe(e,t),CUe(e)),e}function Lae(e){let t=e.materials;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let i=t[n],o=i.instanceTechnique;l(o)&&(i.technique=o.technique,i.values=o.values,delete i.instanceTechnique)}}function W3e(e){let t=e.meshes;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let o=t[n].primitives;if(l(o)){let r=o.length;for(let s=0;s<r;++s){let a=o[s],c=a.primitive??ee.TRIANGLES;a.mode=a.mode??c,delete a.primitive}}}}function j3e(e){let t=e.nodes,n=new d,i=new Le;for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let r=t[o];if(l(r.rotation)){let a=r.rotation;d.fromArray(a,0,n),Le.fromAxisAngle(n,a[3],i),r.rotation=[i.x,i.y,i.z,i.w]}let s=r.instanceSkin;l(s)&&(r.skeletons=s.skeletons,r.skin=s.skin,r.meshes=s.meshes,delete r.instanceSkin)}}function Y3e(e){let t=e.animations,n=e.accessors,i=e.bufferViews,o=e.buffers,r={},s=new d,a=new Le;for(let c in t)if(Object.prototype.hasOwnProperty.call(t,c)){let u=t[c],f=u.channels,h=u.parameters,A=u.samplers;if(l(f)){let g=f.length;for(let m=0;m<g;++m){let _=f[m];if(_.target.path==="rotation"){let y=h[A[_.sampler].output];if(l(r[y]))continue;r[y]=!0;let C=n[y],E=i[C.bufferView],b=o[E.buffer].extras._pipeline.source,S=b.byteOffset+E.byteOffset+C.byteOffset,B=C.componentType,v=C.count,P=Yu(C.type),M=C.count*P,L=q.createArrayBufferView(B,b.buffer,S,M);for(let p=0;p<v;p++){let x=p*P;d.unpack(L,x,s);let T=L[x+3];Le.fromAxisAngle(s,T,a),Le.pack(a,L,x)}}}}}}function q3e(e){let t=e.techniques;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let i=t[n],o=i.passes;if(l(o)){let r=i.pass??"defaultPass";if(Object.prototype.hasOwnProperty.call(o,r)){let s=o[r],a=s.instanceProgram;i.attributes=i.attributes??a.attributes,i.program=i.program??a.program,i.uniforms=i.uniforms??a.uniforms,i.states=i.states??s.states}delete i.passes,delete i.pass}}}function K3e(e){l(e.asset)||(e.asset={});let t=e.asset;if(t.version="1.0",typeof t.profile=="string"){let n=t.profile.split(" ");t.profile={api:n[0],version:n[1]}}else t.profile={};if(l(e.version)&&delete e.version,Lae(e),W3e(e),j3e(e),Y3e(e),q3e(e),l(e.allExtensions)&&(e.extensionsUsed=e.allExtensions,delete e.allExtensions),l(e.lights)){let n=e.extensions??{};e.extensions=n;let i=n.KHR_materials_common??{};n.KHR_materials_common=i,i.lights=e.lights,delete e.lights,rd(e,"KHR_materials_common")}}function X3e(e){let t=e.animations;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let i=t[n],o=i.parameters;if(l(o)){let r=i.samplers;for(let s in r)if(Object.prototype.hasOwnProperty.call(r,s)){let a=r[s];a.input=o[a.input],a.output=o[a.output]}delete i.parameters}}}function Mae(e,t){let n=[];for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i)){let o=e[i];t[i]=n.length,n.push(o),l(o.name)||(o.name=i)}return n}function J3e(e){let t,n={accessors:{},animations:{},buffers:{},bufferViews:{},cameras:{},images:{},materials:{},meshes:{},nodes:{},programs:{},samplers:{},scenes:{},shaders:{},skins:{},textures:{},techniques:{}},i,o={},r=e.nodes;for(let s in r)Object.prototype.hasOwnProperty.call(r,s)&&(i=r[s].jointName,l(i)&&(o[i]=s));for(let s in e)if(Object.prototype.hasOwnProperty.call(e,s)&&l(n[s])){let a={},c=e[s];e[s]=Mae(c,a),n[s]=a}for(i in o)Object.prototype.hasOwnProperty.call(o,i)&&(o[i]=n.nodes[o[i]]);l(e.scene)&&(e.scene=n.scenes[e.scene]),Re.bufferView(e,function(s){l(s.buffer)&&(s.buffer=n.buffers[s.buffer])}),Re.accessor(e,function(s){l(s.bufferView)&&(s.bufferView=n.bufferViews[s.bufferView])}),Re.shader(e,function(s){let a=s.extensions;if(l(a)){let c=a.KHR_binary_glTF;l(c)&&(s.bufferView=n.bufferViews[c.bufferView],delete a.KHR_binary_glTF),Object.keys(a).length===0&&delete s.extensions}}),Re.program(e,function(s){l(s.vertexShader)&&(s.vertexShader=n.shaders[s.vertexShader]),l(s.fragmentShader)&&(s.fragmentShader=n.shaders[s.fragmentShader])}),Re.technique(e,function(s){l(s.program)&&(s.program=n.programs[s.program]),Re.techniqueParameter(s,function(a){l(a.node)&&(a.node=n.nodes[a.node]);let c=a.value;typeof c=="string"&&(a.value={index:n.textures[c]})})}),Re.mesh(e,function(s){Re.meshPrimitive(s,function(a){l(a.indices)&&(a.indices=n.accessors[a.indices]),Re.meshPrimitiveAttribute(a,function(c,u){a.attributes[u]=n.accessors[c]}),l(a.material)&&(a.material=n.materials[a.material])})}),Re.node(e,function(s){let a=s.children;if(l(a)){let c=a.length;for(t=0;t<c;++t)a[t]=n.nodes[a[t]]}if(l(s.meshes)){let c=s.meshes,u=c.length;if(u>0)for(s.mesh=n.meshes[c[0]],t=1;t<u;++t){let f={mesh:n.meshes[c[t]]},h=Ys(e.nodes,f);l(a)||(a=[],s.children=a),a.push(h)}delete s.meshes}if(l(s.camera)&&(s.camera=n.cameras[s.camera]),l(s.skin)&&(s.skin=n.skins[s.skin]),l(s.skeletons)){let c=s.skeletons;if(c.length>0&&l(s.skin)){let f=e.skins[s.skin];f.skeleton=n.nodes[c[0]]}delete s.skeletons}l(s.jointName)&&delete s.jointName}),Re.skin(e,function(s){l(s.inverseBindMatrices)&&(s.inverseBindMatrices=n.accessors[s.inverseBindMatrices]);let a=s.jointNames;if(l(a)){let c=[],u=a.length;for(t=0;t<u;++t)c[t]=o[a[t]];s.joints=c,delete s.jointNames}}),Re.scene(e,function(s){let a=s.nodes;if(l(a)){let c=a.length;for(t=0;t<c;++t)a[t]=n.nodes[a[t]]}}),Re.animation(e,function(s){let a={};s.samplers=Mae(s.samplers,a),Re.animationSampler(s,function(c){c.input=n.accessors[c.input],c.output=n.accessors[c.output]}),Re.animationChannel(s,function(c){c.sampler=a[c.sampler];let u=c.target;l(u)&&(u.node=n.nodes[u.id],delete u.id)})}),Re.material(e,function(s){l(s.technique)&&(s.technique=n.techniques[s.technique]),Re.materialValue(s,function(c,u){typeof c=="string"&&(s.values[u]={index:n.textures[c]})});let a=s.extensions;if(l(a)){let c=a.KHR_materials_common;l(c)&&l(c.values)&&Re.materialValue(c,function(u,f){typeof u=="string"&&(c.values[f]={index:n.textures[u]})})}}),Re.image(e,function(s){let a=s.extensions;if(l(a)){let c=a.KHR_binary_glTF;l(c)&&(s.bufferView=n.bufferViews[c.bufferView],s.mimeType=c.mimeType,delete a.KHR_binary_glTF),Object.keys(a).length===0&&delete s.extensions}}),Re.texture(e,function(s){l(s.sampler)&&(s.sampler=n.samplers[s.sampler]),l(s.source)&&(s.source=n.images[s.source])})}function Z3e(e){Re.animation(e,function(t){Re.animationSampler(t,function(n){delete n.name})})}function $3e(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let n=e[t];Array.isArray(n)&&n.length===0&&delete e[t]}Re.node(e,function(t){l(t.children)&&t.children.length===0&&delete t.children})}function eUe(e){let t=e.asset;delete t.profile,delete t.premultipliedAlpha}var tUe={CESIUM_RTC:!0,KHR_materials_common:!0,WEB3D_quantized_attributes:!0};function nUe(e){let t=e.extensionsUsed;if(e.extensionsRequired=e.extensionsRequired??[],l(t)){let n=t.length;for(let i=0;i<n;++i){let o=t[i];l(tUe[o])&&e.extensionsRequired.push(o)}}}function iUe(e){Re.buffer(e,function(t){delete t.type})}function oUe(e){Re.texture(e,function(t){delete t.format,delete t.internalFormat,delete t.target,delete t.type})}function rUe(e){Re.mesh(e,function(t){Re.meshPrimitive(t,function(n){Re.meshPrimitiveAttribute(n,function(i,o){o==="TEXCOORD"?n.attributes.TEXCOORD_0=i:o==="COLOR"&&(n.attributes.COLOR_0=i)}),delete n.attributes.TEXCOORD,delete n.attributes.COLOR})}),Re.technique(e,function(t){Re.techniqueParameter(t,function(n){let i=n.semantic;l(i)&&(i==="TEXCOORD"?n.semantic="TEXCOORD_0":i==="COLOR"&&(n.semantic="COLOR_0"))})})}var sUe={POSITION:!0,NORMAL:!0,TANGENT:!0},aUe={COLOR:"COLOR",JOINT:"JOINTS",JOINTS:"JOINTS",TEXCOORD:"TEXCOORD",WEIGHT:"WEIGHTS",WEIGHTS:"WEIGHTS"};function cUe(e){let t={};Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){Re.meshPrimitiveAttribute(i,function(o,r){if(r.charAt(0)!=="_"){let s=r.search(/_[0-9]+/g),a=r,c="_0";s>=0&&(a=r.substring(0,s),c=r.substring(s));let u,f=aUe[a];l(f)?(u=f+c,t[r]=u):l(sUe[a])||(u=`_${r}`,t[r]=u)}});for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let r=t[o],s=i.attributes[o];l(s)&&(delete i.attributes[o],i.attributes[r]=s)}})}),Re.technique(e,function(n){Re.techniqueParameter(n,function(i){let o=t[i.semantic];l(o)&&(i.semantic=o)})})}function lUe(e){Re.camera(e,function(t){let n=t.perspective;if(l(n)){let i=n.aspectRatio;l(i)&&i===0&&delete n.aspectRatio;let o=n.yfov;l(o)&&o===0&&(n.yfov=1)}})}function jW(e,t){return l(t.byteStride)&&t.byteStride!==0?t.byteStride:su(e,t)}function uUe(e){Re.buffer(e,function(t){l(t.byteLength)||(t.byteLength=t.extras._pipeline.source.length)}),Re.accessor(e,function(t){let n=t.bufferView;if(l(n)){let i=e.bufferViews[n],o=jW(e,t),r=t.byteOffset+t.count*o;i.byteLength=Math.max(i.byteLength??0,r)}})}function fUe(e){let t,n,i,o=e.bufferViews,r={};Re.accessorContainingVertexAttributeData(e,function(a){let c=e.accessors[a];l(c.bufferView)&&(r[c.bufferView]=!0)});let s={};Re.accessor(e,function(a){l(a.bufferView)&&(s[a.bufferView]=s[a.bufferView]??[],s[a.bufferView].push(a))});for(let a in s)if(Object.prototype.hasOwnProperty.call(s,a)){i=o[a];let c=s[a];c.sort(function(A,g){return A.byteOffset-g.byteOffset});let u=0,f=0,h=c.length;for(t=0;t<h;++t){let A=c[t],g=jW(e,A),m=A.byteOffset,_=A.count*g;delete A.byteStride;let y=t<h-1,C=y?jW(e,c[t+1]):void 0;if(g!==C){let E=ze(i,!0);r[a]&&(E.byteStride=g),E.byteOffset+=u,E.byteLength=m+_-u;let I=Ys(o,E);for(n=f;n<=t;++n)A=c[n],A.bufferView=I,A.byteOffset=A.byteOffset-u;u=y?c[t+1].byteOffset:void 0,f=t+1}}}oM(e,["accessor","bufferView","buffer"])}function dUe(e){Re.accessorWithSemantic(e,"POSITION",function(t){let n=e.accessors[t];if(!l(n.min)||!l(n.max)){let i=VE(e,n);n.min=i.min,n.max=i.max}})}function Oae(e){return(!l(e.children)||e.children.length===0)&&(!l(e.meshes)||e.meshes.length===0)&&!l(e.camera)&&!l(e.skin)&&!l(e.skeletons)&&!l(e.jointName)&&(!l(e.translation)||d.fromArray(e.translation).equals(d.ZERO))&&(!l(e.scale)||d.fromArray(e.scale).equals(new d(1,1,1)))&&(!l(e.rotation)||se.fromArray(e.rotation).equals(new se(0,0,0,1)))&&(!l(e.matrix)||N.fromColumnMajorArray(e.matrix).equals(N.IDENTITY))&&!l(e.extensions)&&!l(e.extras)}function Fae(e,t){Re.scene(e,function(n){let i=n.nodes;if(l(i)){let o=i.length;for(let r=o;r>=0;--r)if(i[r]===t){i.splice(r,1);return}}}),Re.node(e,function(n,i){if(l(n.children)){let o=n.children.indexOf(t);o>-1&&(n.children.splice(o,1),Oae(n)&&Fae(e,i))}}),delete e.nodes[t]}function hUe(e){return Re.node(e,function(t,n){Oae(t)&&Fae(e,n)}),e}function mUe(e){Re.animation(e,function(t){Re.animationSampler(t,function(n){let i=e.accessors[n.input];if(!l(i.min)||!l(i.max)){let o=VE(e,i);i.min=o.min,i.max=o.max}})})}function AUe(e){Re.accessor(e,function(t){if(l(t.min)||l(t.max)){let n=VE(e,t);l(t.min)&&(t.min=n.min),l(t.max)&&(t.max=n.max)}})}function pUe(e){e.asset=e.asset??{},e.asset.version="2.0",Lae(e),X3e(e),hUe(e),J3e(e),Z3e(e),eUe(e),nUe(e),uUe(e),fUe(e),dUe(e),mUe(e),AUe(e),iUe(e),oUe(e),rUe(e),cUe(e),aM(e),lUe(e),tM(e),iM(e),$3e(e)}var gUe=["u_tex","u_diffuse","u_emission","u_diffuse_tex"],_Ue=["u_diffuse","u_diffuse_mat"];function YW(e){e.pbrMetallicRoughness=l(e.pbrMetallicRoughness)?e.pbrMetallicRoughness:{},e.pbrMetallicRoughness.roughnessFactor=1,e.pbrMetallicRoughness.metallicFactor=0}function qW(e){return l(e.index)}function KW(e){return Array.isArray(e)&&e.length===4}function Qae(e){let t=new Array(4);t[3]=e[3];for(let n=0;n<3;n++){let i=e[n];i<=.04045?t[n]=e[n]*.07739938080495357:t[n]=Math.pow((i+.055)*.9478672985781991,2.4)}return t}function yUe(e,t){t=t??{};let n=t.baseColorTextureNames??gUe,i=t.baseColorFactorNames??_Ue;Re.material(e,function(o){Re.materialValue(o,function(r,s){n.indexOf(s)!==-1&&qW(r)?(YW(o),o.pbrMetallicRoughness.baseColorTexture=r):i.indexOf(s)!==-1&&KW(r)&&(YW(o),o.pbrMetallicRoughness.baseColorFactor=Qae(r))})}),HE(e,"KHR_techniques_webgl"),HE(e,"KHR_blend")}function WW(e,t){l(t)&&(KW(t)?e.pbrMetallicRoughness.baseColorFactor=Qae(t):qW(t)&&(e.pbrMetallicRoughness.baseColorTexture=t))}function Nae(e,t){l(t)&&(KW(t)?e.emissiveFactor=t.slice(0,3):qW(t)&&(e.emissiveTexture=t))}function CUe(e){Re.material(e,function(t){let n=(t.extensions??{}).KHR_materials_common;if(!l(n))return;let i=n.values??{},o=i.ambient,r=i.diffuse,s=i.emission,a=i.transparency,c=n.doubleSided,u=n.transparent;YW(t),n.technique==="CONSTANT"?(rd(e,"KHR_materials_unlit"),t.extensions=l(t.extensions)?t.extensions:{},t.extensions.KHR_materials_unlit={},WW(t,s),WW(t,o)):(WW(t,r),Nae(t,o),Nae(t,s)),l(c)&&(t.doubleSided=c),l(a)&&(l(t.pbrMetallicRoughness.baseColorFactor)?t.pbrMetallicRoughness.baseColorFactor[3]*=a:t.pbrMetallicRoughness.baseColorFactor=[1,1,1,a]),l(u)&&(t.alphaMode=u?"BLEND":"OPAQUE")}),HE(e,"KHR_materials_common")}var cM=H3e;function Lc(){}Lc.getError=function(e,t,n){let i=`Failed to load ${e}: ${t}`;l(n)&&l(n.message)&&(i+=` +${n.message}`);let o=new ce(i);return l(n)&&(o.stack=`Original stack: +${n.stack} +Handler stack: +${o.stack}`),o};Lc.getNodeTransform=function(e){return l(e.matrix)?e.matrix:N.fromTranslationQuaternionRotationScale(l(e.translation)?e.translation:d.ZERO,l(e.rotation)?e.rotation:Le.IDENTITY,l(e.scale)?e.scale:d.ONE)};Lc.getAttributeBySemantic=function(e,t,n){let i=e.attributes,o=i.length;for(let r=0;r<o;++r){let s=i[r],a=l(n)?s.setIndex===n:!0;if(s.semantic===t&&a)return s}};Lc.getAttributeByName=function(e,t){let n=e.attributes,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.name===t)return r}};Lc.getFeatureIdsByLabel=function(e,t){for(let n=0;n<e.length;n++){let i=e[n];if(i.positionalLabel===t||i.label===t)return i}};Lc.hasQuantizedAttributes=function(e){if(!l(e))return!1;for(let t=0;t<e.length;t++){let n=e[t];if(l(n.quantization))return!0}return!1};Lc.getAttributeInfo=function(e){let t=e.semantic,n=e.setIndex,i,o=!1;l(t)?(i=at.getVariableName(t,n),o=!0):(i=e.name,i=i.replace(/^_/,""),i=i.toLowerCase());let r=/^color_\d+$/.test(i),s=e.type,a=zt.getGlslType(s);r&&(a="vec4");let c=l(e.quantization),u;return c&&(u=r?"vec4":zt.getGlslType(e.quantization.type)),{attribute:e,isQuantized:c,variableName:i,hasSemantic:o,glslType:a,quantizedGlslType:u}};var EUe=new d,IUe=new d;Lc.getPositionMinMax=function(e,t,n){let i=Lc.getAttributeBySemantic(e,"POSITION"),o=i.max,r=i.min;return l(n)&&l(t)&&(r=d.add(r,t,IUe),o=d.add(o,n,EUe)),{min:r,max:o}};Lc.getAxisCorrectionMatrix=function(e,t,n){return n=N.clone(N.IDENTITY,n),e===fo.Y?n=N.clone(fo.Y_UP_TO_Z_UP,n):e===fo.X&&(n=N.clone(fo.X_UP_TO_Z_UP,n)),t===fo.Z&&(n=N.multiplyTransformation(n,fo.Z_UP_TO_X_UP,n)),n};var xUe=new J;Lc.getCullFace=function(e,t){if(!Me.isTriangles(t))return Mi.BACK;let n=N.getMatrix3(e,xUe);return J.determinant(n)<0?Mi.FRONT:Mi.BACK};Lc.sanitizeGlslIdentifier=function(e){let t=e.replaceAll(/[^A-Za-z0-9]+/g,"_");return t=t.replace(/^gl_/,""),/^\d/.test(t)&&(t=`_${t}`),t};Lc.supportedExtensions={AGI_articulations:!0,CESIUM_primitive_outline:!0,CESIUM_RTC:!0,EXT_feature_metadata:!0,EXT_implicit_cylinder_region:!0,EXT_implicit_ellipsoid_region:!0,EXT_instance_features:!0,EXT_mesh_features:!0,EXT_mesh_gpu_instancing:!0,EXT_meshopt_compression:!0,EXT_primitive_voxels:!0,EXT_structural_metadata:!0,EXT_texture_webp:!0,KHR_blend:!0,KHR_draco_mesh_compression:!0,KHR_implicit_shapes:!0,KHR_materials_common:!0,KHR_materials_pbrSpecularGlossiness:!0,KHR_materials_specular:!0,KHR_materials_anisotropy:!0,KHR_materials_clearcoat:!0,KHR_materials_unlit:!0,KHR_mesh_quantization:!0,KHR_techniques_webgl:!0,KHR_texture_basisu:!0,KHR_texture_transform:!0,KHR_gaussian_splatting:!0,KHR_spz_gaussian_splats_compression:!0,WEB3D_quantized_attributes:!0};Lc.checkSupportedExtensions=function(e){let t=e.length;for(let n=0;n<t;n++){let i=e[n];if(!Lc.supportedExtensions[i])throw new ce(`Unsupported glTF Extension: ${i}`)}};var Ot=Lc;function j_(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltfResource,i=e.baseResource,o=e.typedArray,r=e.gltfJson,s=e.cacheKey;this._resourceCache=t,this._gltfResource=n,this._baseResource=i,this._typedArray=o,this._gltfJson=r,this._cacheKey=s,this._gltf=void 0,this._bufferLoaders=[],this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(j_.prototype=Object.create(Hi.prototype),j_.prototype.constructor=j_);Object.defineProperties(j_.prototype,{cacheKey:{get:function(){return this._cacheKey}},gltf:{get:function(){return this._gltf}}});j_.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,l(this._gltfJson)?(this._promise=kae(this,this._gltfJson),this._promise):l(this._typedArray)?(this._promise=Uae(this,this._typedArray),this._promise):(this._promise=bUe(this),this._promise))};async function bUe(e){let t;try{let n=await e._fetchGltf();if(e.isDestroyed())return;t=new Uint8Array(n)}catch(n){if(e.isDestroyed())return;XW(e,n)}return Uae(e,t)}function XW(e,t){e.unload(),e._state=dt.FAILED;let n=`Failed to load glTF: ${e._gltfResource.url}`;throw e.getError(n,t)}async function TUe(e,t){if(l(t.asset)&&t.asset.version==="2.0"&&!Sr(t,"KHR_techniques_webgl")&&!Sr(t,"KHR_materials_common"))return Promise.resolve();let n=[];Re.buffer(t,function(i){if(!l(i.extras._pipeline.source)&&l(i.uri)){let o=e._baseResource.getDerivedResource({url:i.uri}),s=e._resourceCache.getExternalBufferLoader({resource:o});e._bufferLoaders.push(s),n.push(s.load().then(function(){s.isDestroyed()||(i.extras._pipeline.source=s.typedArray)}))}}),await Promise.all(n),cM(t)}function SUe(e){let t=[];return Re.buffer(e,function(n){let i=n.uri;!l(n.extras._pipeline.source)&&l(i)&&XA(i)&&(delete n.uri,t.push(we.fetchArrayBuffer(i).then(function(o){n.extras._pipeline.source=new Uint8Array(o)})))}),Promise.all(t)}function wUe(e,t){let n=[];return Re.buffer(t,function(i,o){let r=i.extras._pipeline.source;if(l(r)&&!l(i.uri)){let a=e._resourceCache.getEmbeddedBufferLoader({parentResource:e._gltfResource,bufferId:o,typedArray:r});e._bufferLoaders.push(a),n.push(a.load())}}),Promise.all(n)}async function kae(e,t){try{W_(t),await SUe(t),await TUe(e,t),JR(t),await wUe(e,t),eM(t);let n=t.asset.version;if(n!=="1.0"&&n!=="2.0")throw new ce(`Unsupported glTF version: ${n}`);let i=t.extensionsRequired;return l(i)&&Ot.checkSupportedExtensions(i),e._gltf=t,e._state=dt.READY,e}catch(n){if(e.isDestroyed())return;XW(e,n)}}async function Uae(e,t){let n;try{Ih(t)==="glTF"?n=$R(t):n=dr(t)}catch(i){if(e.isDestroyed())return;XW(e,i)}return kae(e,n)}j_.prototype.unload=function(){let e=this._bufferLoaders,t=e.length;for(let n=0;n<t;++n)e[n]=!e[n].isDestroyed()&&this._resourceCache.unload(e[n]);this._bufferLoaders.length=0,this._gltf=void 0};j_.prototype._fetchGltf=function(){return this._gltfResource.fetchArrayBuffer()};var Tb=j_;var BUe={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"},Xm=Object.freeze(BUe);var Fo={};function DUe(){this.octEncoded=!1,this.octEncodedZXY=!1,this.normalizationRange=void 0,this.quantizedVolumeOffset=void 0,this.quantizedVolumeDimensions=void 0,this.quantizedVolumeStepSize=void 0,this.componentDatatype=void 0,this.type=void 0}function vUe(){this.name=void 0,this.semantic=void 0,this.setIndex=void 0,this.componentDatatype=void 0,this.type=void 0,this.normalized=!1,this.count=void 0,this.min=void 0,this.max=void 0,this.constant=void 0,this.quantization=void 0,this.typedArray=void 0,this.buffer=void 0,this.byteOffset=0,this.byteStride=void 0}function PUe(){this.indexDatatype=void 0,this.count=void 0,this.buffer=void 0,this.typedArray=void 0}function RUe(){this.featureCount=void 0,this.nullFeatureId=void 0,this.propertyTableId=void 0,this.setIndex=void 0,this.label=void 0,this.positionalLabel=void 0}function MUe(){this.featureCount=void 0,this.nullFeatureId=void 0,this.propertyTableId=void 0,this.offset=0,this.repeat=void 0,this.label=void 0,this.positionalLabel=void 0}function NUe(){this.featureCount=void 0,this.nullFeatureId=void 0,this.propertyTableId=void 0,this.textureReader=void 0,this.label=void 0,this.positionalLabel=void 0}function LUe(){this.attributes=[]}function OUe(){this.attributes=[],this.morphTargets=[],this.indices=void 0,this.material=void 0,this.primitiveType=void 0,this.featureIds=[],this.propertyTextureIds=[],this.propertyAttributeIds=[],this.outlineCoordinates=void 0,this.modelPrimitiveImagery=void 0}function FUe(){this.attributes=[],this.featureIds=[],this.transformInWorldSpace=!1}function QUe(){this.index=void 0,this.joints=[],this.inverseBindMatrices=[]}function kUe(){this.name=void 0,this.index=void 0,this.children=[],this.primitives=[],this.instances=void 0,this.skin=void 0,this.matrix=void 0,this.translation=void 0,this.rotation=void 0,this.scale=void 0,this.morphWeights=[],this.articulationName=void 0}function UUe(){this.nodes=[]}var GUe={TRANSLATION:"translation",ROTATION:"rotation",SCALE:"scale",WEIGHTS:"weights"};function zUe(){this.input=[],this.interpolation=void 0,this.output=[]}function VUe(){this.node=void 0,this.path=void 0}function HUe(){this.sampler=void 0,this.target=void 0}function WUe(){this.name=void 0,this.samplers=[],this.channels=[]}function jUe(){this.name=void 0,this.type=void 0,this.minimumValue=void 0,this.maximumValue=void 0,this.initialValue=void 0}function YUe(){this.name=void 0,this.stages=[]}function Gae(){this.credits=[]}function qUe(){this.asset=new Gae,this.scene=void 0,this.nodes=[],this.skins=[],this.animations=[],this.articulations=[],this.structuralMetadata=void 0,this.upAxis=void 0,this.forwardAxis=void 0,this.transform=N.clone(N.IDENTITY),this.extensions={}}function KUe(){this.texture=void 0,this.index=void 0,this.texCoord=0,this.transform=J.clone(J.IDENTITY),this.scale=1,this.channels=void 0}function Y_(){this.baseColorTexture=void 0,this.metallicRoughnessTexture=void 0,this.baseColorFactor=se.clone(Y_.DEFAULT_BASE_COLOR_FACTOR),this.metallicFactor=Y_.DEFAULT_METALLIC_FACTOR,this.roughnessFactor=Y_.DEFAULT_ROUGHNESS_FACTOR}Y_.DEFAULT_BASE_COLOR_FACTOR=se.ONE;Y_.DEFAULT_METALLIC_FACTOR=1;Y_.DEFAULT_ROUGHNESS_FACTOR=1;function WE(){this.diffuseTexture=void 0,this.specularGlossinessTexture=void 0,this.diffuseFactor=se.clone(WE.DEFAULT_DIFFUSE_FACTOR),this.specularFactor=d.clone(WE.DEFAULT_SPECULAR_FACTOR),this.glossinessFactor=WE.DEFAULT_GLOSSINESS_FACTOR}WE.DEFAULT_DIFFUSE_FACTOR=se.ONE;WE.DEFAULT_SPECULAR_FACTOR=d.ONE;WE.DEFAULT_GLOSSINESS_FACTOR=1;function lM(){this.specularFactor=lM.DEFAULT_SPECULAR_FACTOR,this.specularTexture=void 0,this.specularColorFactor=d.clone(lM.DEFAULT_SPECULAR_COLOR_FACTOR),this.specularColorTexture=void 0}lM.DEFAULT_SPECULAR_FACTOR=1;lM.DEFAULT_SPECULAR_COLOR_FACTOR=d.ONE;function uM(){this.anisotropyStrength=uM.DEFAULT_ANISOTROPY_STRENGTH,this.anisotropyRotation=uM.DEFAULT_ANISOTROPY_ROTATION,this.anisotropyTexture=void 0}uM.DEFAULT_ANISOTROPY_STRENGTH=0;uM.DEFAULT_ANISOTROPY_ROTATION=0;function fM(){this.clearcoatFactor=fM.DEFAULT_CLEARCOAT_FACTOR,this.clearcoatTexture=void 0,this.clearcoatRoughnessFactor=fM.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR,this.clearcoatRoughnessTexture=void 0,this.clearcoatNormalTexture=void 0}fM.DEFAULT_CLEARCOAT_FACTOR=0;fM.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR=0;function JW(){this.metallicRoughness=new Y_,this.specularGlossiness=void 0,this.specular=void 0,this.anisotropy=void 0,this.clearcoat=void 0,this.emissiveTexture=void 0,this.normalTexture=void 0,this.occlusionTexture=void 0,this.emissiveFactor=d.clone(JW.DEFAULT_EMISSIVE_FACTOR),this.alphaMode=Xm.OPAQUE,this.alphaCutoff=.5,this.doubleSided=!1,this.unlit=!1}JW.DEFAULT_EMISSIVE_FACTOR=d.ZERO;Fo.Quantization=DUe;Fo.Attribute=vUe;Fo.Indices=PUe;Fo.FeatureIdAttribute=RUe;Fo.FeatureIdTexture=NUe;Fo.FeatureIdImplicitRange=MUe;Fo.MorphTarget=LUe;Fo.Primitive=OUe;Fo.Instances=FUe;Fo.Skin=QUe;Fo.Node=kUe;Fo.Scene=UUe;Fo.AnimatedPropertyType=Object.freeze(GUe);Fo.AnimationSampler=zUe;Fo.AnimationTarget=VUe;Fo.AnimationChannel=HUe;Fo.Animation=WUe;Fo.ArticulationStage=jUe;Fo.Articulation=YUe;Fo.Asset=Gae;Fo.Components=qUe;Fo.TextureReader=KUe;Fo.MetallicRoughness=Y_;Fo.SpecularGlossiness=WE;Fo.Specular=lM;Fo.Anisotropy=uM;Fo.Clearcoat=fM;Fo.Material=JW;var xn=Fo;var bz={};bz.getImageIdFromTexture=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,textureId:n,supportedImageFormats:i}=e,o=t.textures[n],r=o.extensions;if(l(r)){if(i.webp&&l(r.EXT_texture_webp))return r.EXT_texture_webp.source;if(i.basis&&l(r.KHR_texture_basisu))return r.KHR_texture_basisu.source}return o.source};bz.createSampler=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,textureInfo:n,compressedTextureNoMipmap:i=!1}=e,o=Tn.REPEAT,r=Tn.REPEAT,s=Zt.LINEAR,a=mi.LINEAR,c=n.index,f=t.textures[c].sampler;if(l(f)){let h=t.samplers[f];o=h.wrapS??o,r=h.wrapT??r,s=h.minFilter??s,a=h.magFilter??a}return i&&s!==Zt.LINEAR&&s!==Zt.NEAREST&&(s===Zt.NEAREST_MIPMAP_NEAREST||s===Zt.NEAREST_MIPMAP_LINEAR?s=Zt.NEAREST:s=Zt.LINEAR),new on({wrapS:o,wrapT:r,minificationFilter:s,magnificationFilter:a})};var XUe=new U(1,1);bz.createModelTextureReader=function(e){e=e??V.EMPTY_OBJECT;let{textureInfo:t,channels:n,texture:i}=e,o=t.texCoord??0,r,s=t.extensions?.KHR_texture_transform;if(l(s)){o=s.texCoord??o;let c=l(s.offset)?U.unpack(s.offset):U.ZERO,u=s.rotation??0,f=l(s.scale)?U.unpack(s.scale):XUe;u=-u,r=new J(Math.cos(u)*f.x,-Math.sin(u)*f.y,c.x,Math.sin(u)*f.x,Math.cos(u)*f.y,c.y,0,0,1)}let a=new xn.TextureReader;return a.index=t.index,a.texture=i,a.texCoord=o,a.scale=t.scale,a.transform=r,a.channels=n,a};var au=bz;function JUe(e){let t=document.createElement("canvas");return t.width=D.nextPowerOfTwo(e.width),t.height=D.nextPowerOfTwo(e.height),t.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,t.width,t.height),t}var q_=JUe;function K_(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.textureInfo,o=e.gltfResource,r=e.baseResource,s=e.supportedImageFormats,a=e.cacheKey,c=e.asynchronous??!0,u=i.index,f=au.getImageIdFromTexture({gltf:n,textureId:u,supportedImageFormats:s});this._resourceCache=t,this._gltf=n,this._textureInfo=i,this._imageId=f,this._gltfResource=o,this._baseResource=r,this._cacheKey=a,this._asynchronous=c,this._imageLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._texture=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(K_.prototype=Object.create(Hi.prototype),K_.prototype.constructor=K_);Object.defineProperties(K_.prototype,{cacheKey:{get:function(){return this._cacheKey}},texture:{get:function(){return this._texture}}});var ZUe=new ZW;async function $Ue(e){let t=e._resourceCache;try{let n=t.getImageLoader({gltf:e._gltf,imageId:e._imageId,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._imageLoader=n,await n.load(),e.isDestroyed()?void 0:(e._image=n.image,e._mipLevels=n.mipLevels,e._state=dt.LOADED,e)}catch(n){if(e.isDestroyed())return;throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load texture",n)}}K_.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=$Ue(this),this._promise)};function ZW(){this.gltf=void 0,this.textureInfo=void 0,this.textureId=void 0,this.image=void 0,this.context=void 0,this.texture=void 0}ZW.prototype.set=function(e,t,n,i,o,r){this.gltf=e,this.textureInfo=t,this.textureId=n,this.image=i,this.mipLevels=o,this.context=r};ZW.prototype.execute=function(){this.texture=zae(this.gltf,this.textureInfo,this.textureId,this.image,this.mipLevels,this.context)};function zae(e,t,n,i,o,r){let s=i.internalFormat,a=!1;$e.isCompressedFormat(s)&&!l(o)&&(a=!0);let c=au.createSampler({gltf:e,textureInfo:t,compressedTextureNoMipmap:a}),u=c.minificationFilter,f=c.wrapS,h=c.wrapT,A=u===Zt.NEAREST_MIPMAP_NEAREST||u===Zt.NEAREST_MIPMAP_LINEAR||u===Zt.LINEAR_MIPMAP_NEAREST||u===Zt.LINEAR_MIPMAP_LINEAR,g=!l(s)&&A,m=g||f===Tn.REPEAT||f===Tn.MIRRORED_REPEAT||h===Tn.REPEAT||h===Tn.MIRRORED_REPEAT,_=!D.isPowerOfTwo(i.width)||!D.isPowerOfTwo(i.height),y=m&&_,C;return l(s)?(!r.webgl2&&$e.isCompressedFormat(s)&&_&&m&&console.warn("Compressed texture uses REPEAT or MIRRORED_REPEAT texture wrap mode and dimensions are not powers of two. The texture may be rendered incorrectly."),C=Mt.create({id:n,context:r,source:{arrayBufferView:i.bufferView,mipLevels:o},width:i.width,height:i.height,pixelFormat:i.internalFormat,sampler:c})):(y&&(i=q_(i)),C=Mt.create({id:n,context:r,source:i,sampler:c,flipY:!1,skipColorSpaceConversion:!0})),g&&C.generateMipmap(),C}K_.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED&&this._state!==dt.PROCESSING||l(this._texture)||!l(this._image))return!1;this._state=dt.PROCESSING;let t;if(this._asynchronous){let n=ZUe;if(n.set(this._gltf,this._textureInfo,this._cacheKey,this._image,this._mipLevels,e.context),!e.jobScheduler.execute(n,hc.TEXTURE))return;t=n.texture}else t=zae(this._gltf,this._textureInfo,this._cacheKey,this._image,this._mipLevels,e.context);return this.unload(),this._texture=t,this._state=dt.READY,this._resourceCache.statistics.addTextureLoader(this),!0};K_.prototype.unload=function(){l(this._texture)&&this._texture.destroy(),l(this._imageLoader)&&!this._imageLoader.isDestroyed()&&this._resourceCache.unload(this._imageLoader),this._imageLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._texture=void 0,this._gltf=void 0};var Sb=K_;function X_(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.gltfResource,o=e.baseResource,r=e.bufferViewId,s=e.primitive,a=e.draco,c=e.attributeSemantic,u=e.accessorId,f=e.cacheKey,h=e.spz,A=e.asynchronous??!0,g=e.loadBuffer??!1,m=e.loadTypedArray??!1;this._resourceCache=t,this._gltfResource=i,this._baseResource=o,this._gltf=n,this._bufferViewId=r,this._primitive=s,this._draco=a,this._spz=h,this._attributeSemantic=c,this._accessorId=u,this._cacheKey=f,this._asynchronous=A,this._loadBuffer=g,this._loadTypedArray=m,this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._quantization=void 0,this._typedArray=void 0,this._buffer=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(X_.prototype=Object.create(Hi.prototype),X_.prototype.constructor=X_);Object.defineProperties(X_.prototype,{cacheKey:{get:function(){return this._cacheKey}},buffer:{get:function(){return this._buffer}},typedArray:{get:function(){return this._typedArray}},quantization:{get:function(){return this._quantization}}});function eGe(e,t){return l(e)&&l(e.attributes)&&l(e.attributes[t])}X_.prototype.load=async function(){return l(this._promise)?this._promise:l(this._spz)?(this._promise=nGe(this),this._promise):eGe(this._draco,this._attributeSemantic)?(this._promise=oGe(this),this._promise):(this._promise=sGe(this),this._promise)};function tGe(e,t,n,i){let r=(1<<e.quantizationBits)-1,s=1/r,a=new xn.Quantization;if(a.componentDatatype=t,a.octEncoded=e.octEncoded,a.octEncodedZXY=!0,a.type=i,a.octEncoded)a.type=zt.VEC2,a.normalizationRange=r;else{let c=zt.getMathType(i);if(c===Number){let u=e.range;a.quantizedVolumeOffset=e.minValues[0],a.quantizedVolumeDimensions=u,a.normalizationRange=r,a.quantizedVolumeStepSize=u*s}else{a.quantizedVolumeOffset=c.unpack(e.minValues),a.normalizationRange=c.unpack(new Array(n).fill(r));let u=new Array(n).fill(e.range);a.quantizedVolumeDimensions=c.unpack(u);let f=u.map(function(h){return h*s});a.quantizedVolumeStepSize=c.unpack(f)}}return a}async function nGe(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getSpzLoader({gltf:e._gltf,primitive:e._primitive,spz:e._spz,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._spzLoader=n,await n.load(),e.isDestroyed()?void 0:(e._state=dt.LOADED,e)}catch{if(e.isDestroyed())return}}function iGe(e){e._state=dt.PROCESSING;let n=e._spzLoader.decodedData.gcloud;if(e._attributeSemantic==="POSITION")e._typedArray=n.positions;else if(e._attributeSemantic==="_SCALE")e._typedArray=n.scales;else if(e._attributeSemantic==="_ROTATION")e._typedArray=n.rotations;else if(e._attributeSemantic==="COLOR_0"){let i=n.colors,o=n.alphas;e._typedArray=new Uint8Array(i.length/3*4);for(let r=0;r<i.length/3;r++)e._typedArray[r*4]=D.clamp(i[r*3]*255,0,255),e._typedArray[r*4+1]=D.clamp(i[r*3+1]*255,0,255),e._typedArray[r*4+2]=D.clamp(i[r*3+2]*255,0,255),e._typedArray[r*4+3]=D.clamp(o[r]*255,0,255)}}async function oGe(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getDracoLoader({gltf:e._gltf,primitive:e._primitive,draco:e._draco,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._dracoLoader=n,await n.load(),e.isDestroyed()?void 0:(e._state=dt.LOADED,e)}catch{if(e.isDestroyed())return;Tz(e)}}function rGe(e){e._state=dt.PROCESSING;let n=e._dracoLoader.decodedData.vertexAttributes,i=e._attributeSemantic,o=n[i],r=e._accessorId,a=e._gltf.accessors[r].type,c=o.array,u=o.data.quantization;l(u)&&(e._quantization=tGe(u,o.data.componentDatatype,o.data.componentsPerAttribute,a)),e._typedArray=new Uint8Array(c.buffer,c.byteOffset,c.byteLength)}async function sGe(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._bufferViewId,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._typedArray=n.typedArray,e._state=dt.PROCESSING,e)}catch(n){if(e.isDestroyed())return;Tz(e,n)}}function Tz(e,t){throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load vertex buffer",t)}function $W(){this.typedArray=void 0,this.context=void 0,this.buffer=void 0}$W.prototype.set=function(e,t){this.typedArray=e,this.context=t};$W.prototype.execute=function(){this.buffer=Vae(this.typedArray,this.context)};function Vae(e,t){let n=Ct.createVertexBuffer({typedArray:e,context:t,usage:Qe.STATIC_DRAW});return n.vertexArrayDestroyable=!1,n}var aGe=new $W;X_.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED&&this._state!==dt.PROCESSING)return!1;if(l(this._dracoLoader)){try{if(!this._dracoLoader.process(e))return!1}catch(i){Tz(this,i)}rGe(this)}if(l(this._spzLoader)){try{if(!this._spzLoader.process(e))return!1}catch(i){Tz(this,i)}iGe(this)}let t,n=this._typedArray;if(this._loadBuffer&&this._asynchronous){let i=aGe;if(i.set(n,e.context),!e.jobScheduler.execute(i,hc.BUFFER))return!1;t=i.buffer}else this._loadBuffer&&(t=Vae(n,e.context));return this.unload(),this._buffer=t,this._typedArray=this._loadTypedArray?n:void 0,this._state=dt.READY,this._resourceCache.statistics.addGeometryLoader(this),!0};X_.prototype.unload=function(){l(this._buffer)&&this._buffer.destroy();let e=this._resourceCache;l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&e.unload(this._bufferViewLoader),l(this._dracoLoader)&&e.unload(this._dracoLoader),l(this._spzLoader)&&e.unload(this._spzLoader),this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._spzLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._gltf=void 0,this._primitive=void 0};var wb=X_;var Hae={};async function cGe(e={}){var t,n,i=e,o=typeof window=="object",r=typeof WorkerGlobalScope<"u",s=typeof process=="object"&&((t=process.versions)==null?void 0:t.node)&&process.type!="renderer";if(s){let{createRequire:oe}=await Promise.resolve().then(()=>hGe);var a=oe(Hae.url)}var c="./this.program",u=Hae.url,f;if(s){var h=a("fs");u.startsWith("file:")&&a("path").dirname(a("url").fileURLToPath(u)),f=oe=>(oe=y(oe)?new URL(oe):oe,h.readFileSync(oe)),1<process.argv.length&&(c=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2)}else if(o||r){try{new URL(".",u)}catch{}r&&(f=oe=>{var ne=new XMLHttpRequest;return ne.open("GET",oe,!1),ne.responseType="arraybuffer",ne.send(null),new Uint8Array(ne.response)})}var A=console.log.bind(console),g=console.error.bind(console),m,_=!1,y=oe=>oe.startsWith("file://"),C,E,I,b,S,B,v,P,M,L,p,x,T,w=!1;function R(){var oe=I.buffer;b=new Int8Array(oe),B=new Int16Array(oe),i.HEAPU8=S=new Uint8Array(oe),v=new Uint16Array(oe),P=new Int32Array(oe),M=new Uint32Array(oe),i.HEAPF32=L=new Float32Array(oe),p=new Float64Array(oe),x=new BigInt64Array(oe),T=new BigUint64Array(oe)}var O=0,k=null;function Q(oe){var ne;throw(ne=i.onAbort)==null||ne.call(i,oe),oe="Aborted("+oe+")",g(oe),_=!0,oe=new WebAssembly.RuntimeError(oe+". Build with -sASSERTIONS for more info."),E?.(oe),oe}var z;async function F(oe){if(!ArrayBuffer.isView(oe))if(oe==z&&m)oe=new Uint8Array(m);else if(f)oe=f(oe);else throw"both async and sync fetching of the wasm failed";return oe}async function H(oe){var ne=z;try{var Ee=await F(ne);return await WebAssembly.instantiate(Ee,oe)}catch(be){g(`failed to asynchronously prepare wasm: ${be}`),Q(be)}}async function W(oe){return H(oe)}var Z=oe=>{for(;0<oe.length;)oe.shift()(i)},Y=[],$=[],X=()=>{var oe=i.preRun.shift();$.push(oe)},he=oe=>{if(s)return oe=Buffer.from(oe,"base64"),new Uint8Array(oe.buffer,oe.byteOffset,oe.length);for(var ne,Ee,be=0,We=0,At=oe.length,ut=new Uint8Array((3*At>>2)-(oe[At-2]=="=")-(oe[At-1]=="="));be<At;be+=4,We+=3)ne=jA[oe.charCodeAt(be+1)],Ee=jA[oe.charCodeAt(be+2)],ut[We]=jA[oe.charCodeAt(be)]<<2|ne>>4,ut[We+1]=ne<<4|Ee>>2,ut[We+2]=Ee<<6|jA[oe.charCodeAt(be+3)];return ut},ge={},fe=oe=>{for(;oe.length;){var ne=oe.pop();oe.pop()(ne)}};function ye(oe){return this.N(M[oe>>2])}var xe={},ve={},Te={},ke=class extends Error{constructor(oe){super(oe),this.name="InternalError"}},Ge=(oe,ne,Ee)=>{function be(xt){if(xt=Ee(xt),xt.length!==oe.length)throw new ke("Mismatched type converter count");for(var vn=0;vn<oe.length;++vn)nn(oe[vn],xt[vn])}oe.forEach(xt=>Te[xt]=ne);var We=Array(ne.length),At=[],ut=0;ne.forEach((xt,vn)=>{ve.hasOwnProperty(xt)?We[vn]=ve[xt]:(At.push(xt),xe.hasOwnProperty(xt)||(xe[xt]=[]),xe[xt].push(()=>{We[vn]=ve[xt],++ut,ut===At.length&&be(We)}))}),At.length===0&&be(We)},Ke=oe=>{for(var ne="";;){var Ee=S[oe++];if(!Ee)return ne;ne+=String.fromCharCode(Ee)}},tt=class extends Error{constructor(oe){super(oe),this.name="BindingError"}},en=oe=>{throw new tt(oe)};function it(oe,ne,Ee={}){var be=ne.name;if(!oe)throw new tt(`type "${be}" must have a positive integer typeid pointer`);if(ve.hasOwnProperty(oe)){if(Ee.wa)return;throw new tt(`Cannot register type '${be}' twice`)}ve[oe]=ne,delete Te[oe],xe.hasOwnProperty(oe)&&(ne=xe[oe],delete xe[oe],ne.forEach(We=>We()))}function nn(oe,ne,Ee={}){return it(oe,ne,Ee)}var qt=(oe,ne,Ee)=>{switch(ne){case 1:return Ee?be=>b[be]:be=>S[be];case 2:return Ee?be=>B[be>>1]:be=>v[be>>1];case 4:return Ee?be=>P[be>>2]:be=>M[be>>2];case 8:return Ee?be=>x[be>>3]:be=>T[be>>3];default:throw new TypeError(`invalid integer width (${ne}): ${oe}`)}},Rt=oe=>{throw new tt(oe.L.P.M.name+" instance already deleted")},Si=!1,gi=()=>{},Ft=oe=>typeof FinalizationRegistry>"u"?(Ft=ne=>ne,oe):(Si=new FinalizationRegistry(ne=>{ne=ne.L,--ne.count.value,ne.count.value===0&&(ne.S?ne.W.Y(ne.S):ne.P.M.Y(ne.O))}),Ft=ne=>{var Ee=ne.L;return Ee.S&&Si.register(ne,{L:Ee},ne),ne},gi=ne=>{Si.unregister(ne)},Ft(oe));function St(){}var oi=(oe,ne)=>Object.defineProperty(ne,"name",{value:oe}),Et={},Lo=(oe,ne,Ee)=>{if(oe[ne].R===void 0){var be=oe[ne];oe[ne]=function(...We){if(!oe[ne].R.hasOwnProperty(We.length))throw new tt(`Function '${Ee}' called with an invalid number of arguments (${We.length}) - expects one of (${oe[ne].R})!`);return oe[ne].R[We.length].apply(this,We)},oe[ne].R=[],oe[ne].R[be.aa]=be}},Ho=(oe,ne,Ee)=>{if(i.hasOwnProperty(oe)){if(Ee===void 0||i[oe].R!==void 0&&i[oe].R[Ee]!==void 0)throw new tt(`Cannot register public name '${oe}' twice`);if(Lo(i,oe,oe),i[oe].R.hasOwnProperty(Ee))throw new tt(`Cannot register multiple overloads of a function with the same number of arguments (${Ee})!`);i[oe].R[Ee]=ne}else i[oe]=ne,i[oe].aa=Ee},Pa=oe=>{oe=oe.replace(/[^a-zA-Z0-9_]/g,"$");var ne=oe.charCodeAt(0);return 48<=ne&&57>=ne?`_${oe}`:oe};function Er(oe,ne,Ee,be,We,At,ut,xt){this.name=oe,this.constructor=ne,this.$=Ee,this.Y=be,this.U=We,this.ra=At,this.ea=ut,this.pa=xt,this.ya=[]}var Lr=(oe,ne,Ee)=>{for(;ne!==Ee;){if(!ne.ea)throw new tt(`Expected null or instance of ${Ee.name}, got an instance of ${ne.name}`);oe=ne.ea(oe),ne=ne.U}return oe},Fe=oe=>{if(oe===null)return"null";var ne=typeof oe;return ne==="object"||ne==="array"||ne==="function"?oe.toString():""+oe};function lt(oe,ne){if(ne===null){if(this.ha)throw new tt(`null is not a valid ${this.name}`);return 0}if(!ne.L)throw new tt(`Cannot pass "${Fe(ne)}" as a ${this.name}`);if(!ne.L.O)throw new tt(`Cannot pass deleted object as a pointer of type ${this.name}`);return Lr(ne.L.O,ne.L.P.M,this.M)}function Xe(oe,ne){if(ne===null){if(this.ha)throw new tt(`null is not a valid ${this.name}`);if(this.ga){var Ee=this.ia();return oe!==null&&oe.push(this.Y,Ee),Ee}return 0}if(!ne||!ne.L)throw new tt(`Cannot pass "${Fe(ne)}" as a ${this.name}`);if(!ne.L.O)throw new tt(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.fa&&ne.L.P.fa)throw new tt(`Cannot convert argument of type ${ne.L.W?ne.L.W.name:ne.L.P.name} to parameter type ${this.name}`);if(Ee=Lr(ne.L.O,ne.L.P.M,this.M),this.ga){if(ne.L.S===void 0)throw new tt("Passing raw pointer to smart pointer is illegal");switch(this.Da){case 0:if(ne.L.W===this)Ee=ne.L.S;else throw new tt(`Cannot convert argument of type ${ne.L.W?ne.L.W.name:ne.L.P.name} to parameter type ${this.name}`);break;case 1:Ee=ne.L.S;break;case 2:if(ne.L.W===this)Ee=ne.L.S;else{var be=ne.clone();Ee=this.za(Ee,ps(()=>be.delete())),oe!==null&&oe.push(this.Y,Ee)}break;default:throw new tt("Unsupporting sharing policy")}}return Ee}function et(oe,ne){if(ne===null){if(this.ha)throw new tt(`null is not a valid ${this.name}`);return 0}if(!ne.L)throw new tt(`Cannot pass "${Fe(ne)}" as a ${this.name}`);if(!ne.L.O)throw new tt(`Cannot pass deleted object as a pointer of type ${this.name}`);if(ne.L.P.fa)throw new tt(`Cannot convert argument of type ${ne.L.P.name} to parameter type ${this.name}`);return Lr(ne.L.O,ne.L.P.M,this.M)}var gt=(oe,ne,Ee)=>ne===Ee?oe:Ee.U===void 0?null:(oe=gt(oe,ne,Ee.U),oe===null?null:Ee.pa(oe)),Jt={},bn=(oe,ne)=>{if(ne===void 0)throw new tt("ptr should not be undefined");for(;oe.U;)ne=oe.ea(ne),oe=oe.U;return Jt[ne]},ho=(oe,ne)=>{if(!ne.P||!ne.O)throw new ke("makeClassHandle requires ptr and ptrType");if(!!ne.W!=!!ne.S)throw new ke("Both smartPtrType and smartPtr must be specified");return ne.count={value:1},Ft(Object.create(oe,{L:{value:ne,writable:!0}}))};function lo(oe,ne,Ee,be,We,At,ut,xt,vn,jn,dn){this.name=oe,this.M=ne,this.ha=Ee,this.fa=be,this.ga=We,this.xa=At,this.Da=ut,this.na=xt,this.ia=vn,this.za=jn,this.Y=dn,We||ne.U!==void 0?this.T=Xe:(this.T=be?lt:et,this.V=null)}var sa=(oe,ne,Ee)=>{if(!i.hasOwnProperty(oe))throw new ke("Replacing nonexistent public symbol");i[oe].R!==void 0&&Ee!==void 0?i[oe].R[Ee]=ne:(i[oe]=ne,i[oe].aa=Ee)},aa,Wn=(oe,ne)=>{oe=Ke(oe);var Ee=aa.get(ne);if(typeof Ee!="function")throw new tt(`unknown function pointer with signature ${oe}: ${ne}`);return Ee};class bi extends Error{}var vs=oe=>{oe=_te(oe);var ne=Ke(oe);return h_(oe),ne},Xo=(oe,ne)=>{function Ee(At){We[At]||ve[At]||(Te[At]?Te[At].forEach(Ee):(be.push(At),We[At]=!0))}var be=[],We={};throw ne.forEach(Ee),new bi(`${oe}: `+be.map(vs).join([", "]))},Ra=(oe,ne)=>{for(var Ee=[],be=0;be<oe;be++)Ee.push(M[ne+4*be>>2]);return Ee};function mo(oe){for(var ne=1;ne<oe.length;++ne)if(oe[ne]!==null&&oe[ne].V===void 0)return!0;return!1}function Jo(oe,ne,Ee,be,We,At){var ut=ne.length;if(2>ut)throw new tt("argTypes array size mismatch! Must at least get return value and 'this' types!");var xt=ne[1]!==null&&Ee!==null,vn=mo(ne);Ee=!ne[0].ma;var jn=ne[0],dn=ne[1];for(be=[oe,en,be,We,fe,jn.N.bind(jn),dn?.T.bind(dn)],We=2;We<ut;++We)jn=ne[We],be.push(jn.T.bind(jn));if(!vn)for(We=xt?1:2;We<ne.length;++We)ne[We].V!==null&&be.push(ne[We].V);for(vn=mo(ne),We=ne.length-2,dn=[],jn=["fn"],xt&&jn.push("thisWired"),ut=0;ut<We;++ut)dn.push(`arg${ut}`),jn.push(`arg${ut}Wired`);dn=dn.join(","),jn=jn.join(","),dn=`return function (${dn}) { +`,vn&&(dn+=`var destructors = []; +`);var gs=vn?"destructors":"null",Nu="humanName throwBindingError invoker fn runDestructors fromRetWire toClassParamWire".split(" ");for(xt&&(dn+=`var thisWired = toClassParamWire(${gs}, this); +`),ut=0;ut<We;++ut){var rl=`toArg${ut}Wire`;dn+=`var arg${ut}Wired = ${rl}(${gs}, arg${ut}); +`,Nu.push(rl)}if(dn+=(Ee||At?"var rv = ":"")+`invoker(${jn}); +`,vn)dn+=`runDestructors(destructors); +`;else for(ut=xt?1:2;ut<ne.length;++ut)At=ut===1?"thisWired":"arg"+(ut-2)+"Wired",ne[ut].V!==null&&(dn+=`${At}_dtor(${At}); +`,Nu.push(`${At}_dtor`));return Ee&&(dn+=`var ret = fromRetWire(rv); +return ret; +`),ne=new Function(Nu,dn+`} +`)(...be),oi(oe,ne)}for(var Uf=oe=>{oe=oe.trim();let ne=oe.indexOf("(");return ne===-1?oe:oe.slice(0,ne)},Ir=[],Ps=[0,1,,1,null,1,!0,1,!1,1],Ws=oe=>{9<oe&&--Ps[oe+1]===0&&(Ps[oe]=void 0,Ir.push(oe))},eh=oe=>{if(!oe)throw new tt(`Cannot use deleted val. handle = ${oe}`);return Ps[oe]},ps=oe=>{switch(oe){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let ne=Ir.pop()||Ps.length;return Ps[ne]=oe,Ps[ne+1]=1,ne}},ic={name:"emscripten::val",N:oe=>{var ne=eh(oe);return Ws(oe),ne},T:(oe,ne)=>ps(ne),X:ye,V:null},oc=(oe,ne,Ee)=>{switch(ne){case 1:return Ee?function(be){return this.N(b[be])}:function(be){return this.N(S[be])};case 2:return Ee?function(be){return this.N(B[be>>1])}:function(be){return this.N(v[be>>1])};case 4:return Ee?function(be){return this.N(P[be>>2])}:function(be){return this.N(M[be>>2])};default:throw new TypeError(`invalid integer width (${ne}): ${oe}`)}},Or=(oe,ne)=>{var Ee=ve[oe];if(Ee===void 0)throw oe=`${ne} has unknown type ${vs(oe)}`,new tt(oe);return Ee},ql=(oe,ne)=>{switch(ne){case 4:return function(Ee){return this.N(L[Ee>>2])};case 8:return function(Ee){return this.N(p[Ee>>3])};default:throw new TypeError(`invalid float width (${ne}): ${oe}`)}},Kl=Object.assign({optional:!0},ic),ca=(oe,ne,Ee)=>{var be=S;if(!(0<Ee))return 0;var We=ne;Ee=ne+Ee-1;for(var At=0;At<oe.length;++At){var ut=oe.codePointAt(At);if(127>=ut){if(ne>=Ee)break;be[ne++]=ut}else if(2047>=ut){if(ne+1>=Ee)break;be[ne++]=192|ut>>6,be[ne++]=128|ut&63}else if(65535>=ut){if(ne+2>=Ee)break;be[ne++]=224|ut>>12,be[ne++]=128|ut>>6&63,be[ne++]=128|ut&63}else{if(ne+3>=Ee)break;be[ne++]=240|ut>>18,be[ne++]=128|ut>>12&63,be[ne++]=128|ut>>6&63,be[ne++]=128|ut&63,At++}}return be[ne]=0,ne-We},vo=oe=>{for(var ne=0,Ee=0;Ee<oe.length;++Ee){var be=oe.charCodeAt(Ee);127>=be?ne++:2047>=be?ne+=2:55296<=be&&57343>=be?(ne+=4,++Ee):ne+=3}return ne},un=new TextDecoder,Se=(oe,ne,Ee,be)=>{if(Ee=ne+Ee,be)return Ee;for(;oe[ne]&&!(ne>=Ee);)++ne;return ne},wt=new TextDecoder("utf-16le"),_n=(oe,ne,Ee)=>(oe>>=1,wt.decode(v.subarray(oe,Se(v,oe,ne/2,Ee)))),rr=(oe,ne,Ee)=>{if(Ee??(Ee=2147483647),2>Ee)return 0;Ee-=2;var be=ne;Ee=Ee<2*oe.length?Ee/2:oe.length;for(var We=0;We<Ee;++We)B[ne>>1]=oe.charCodeAt(We),ne+=2;return B[ne>>1]=0,ne-be},Ma=oe=>2*oe.length,Rs=(oe,ne,Ee)=>{var be="";oe>>=2;for(var We=0;!(We>=ne/4);We++){var At=M[oe+We];if(!At&&!Ee)break;be+=String.fromCodePoint(At)}return be},bc=(oe,ne,Ee)=>{if(Ee??(Ee=2147483647),4>Ee)return 0;var be=ne;Ee=be+Ee-4;for(var We=0;We<oe.length;++We){var At=oe.codePointAt(We);if(65535<At&&We++,P[ne>>2]=At,ne+=4,ne+4>Ee)break}return P[ne>>2]=0,ne-be},th=oe=>{for(var ne=0,Ee=0;Ee<oe.length;++Ee)65535<oe.codePointAt(Ee)&&Ee++,ne+=4;return ne},WA=[],aB=oe=>{var ne=WA.length;return WA.push(oe),ne},Na=(oe,ne)=>{for(var Ee=Array(oe),be=0;be<oe;++be)Ee[be]=Or(M[ne+4*be>>2],`parameter ${be}`);return Ee},UU=(oe,ne,Ee)=>{var be=[];return oe=oe(be,Ee),be.length&&(M[ne>>2]=ps(be)),oe},GU={},Xwe=oe=>{var ne=GU[oe];return ne===void 0?Ke(oe):ne},n9={},gte=()=>{if(!i9){var oe={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.language||"C").replace("-","_")+".UTF-8",_:c||"./this.program"},ne;for(ne in n9)n9[ne]===void 0?delete oe[ne]:oe[ne]=n9[ne];var Ee=[];for(ne in oe)Ee.push(`${ne}=${oe[ne]}`);i9=Ee}return i9},i9,Jwe=[null,[],[]],jA=new Uint8Array(123),d_=25;0<=d_;--d_)jA[48+d_]=52+d_,jA[65+d_]=d_,jA[97+d_]=26+d_;jA[43]=62,jA[47]=63,(()=>{let oe=St.prototype;Object.assign(oe,{isAliasOf:function(Ee){if(!(this instanceof St&&Ee instanceof St))return!1;var be=this.L.P.M,We=this.L.O;Ee.L=Ee.L;var At=Ee.L.P.M;for(Ee=Ee.L.O;be.U;)We=be.ea(We),be=be.U;for(;At.U;)Ee=At.ea(Ee),At=At.U;return be===At&&We===Ee},clone:function(){if(this.L.O||Rt(this),this.L.da)return this.L.count.value+=1,this;var Ee=Ft,be=Object,We=be.create,At=Object.getPrototypeOf(this),ut=this.L;return Ee=Ee(We.call(be,At,{L:{value:{count:ut.count,ba:ut.ba,da:ut.da,O:ut.O,P:ut.P,S:ut.S,W:ut.W}}})),Ee.L.count.value+=1,Ee.L.ba=!1,Ee},delete(){if(this.L.O||Rt(this),this.L.ba&&!this.L.da)throw new tt("Object already scheduled for deletion");gi(this);var Ee=this.L;--Ee.count.value,Ee.count.value===0&&(Ee.S?Ee.W.Y(Ee.S):Ee.P.M.Y(Ee.O)),this.L.da||(this.L.S=void 0,this.L.O=void 0)},isDeleted:function(){return!this.L.O},deleteLater:function(){if(this.L.O||Rt(this),this.L.ba&&!this.L.da)throw new tt("Object already scheduled for deletion");return this.L.ba=!0,this}});let ne=Symbol.dispose;ne&&(oe[ne]=oe.delete)})(),Object.assign(lo.prototype,{sa(oe){return this.na&&(oe=this.na(oe)),oe},ka(oe){var ne;(ne=this.Y)==null||ne.call(this,oe)},X:ye,N:function(oe){function ne(){return this.ga?ho(this.M.$,{P:this.xa,O:Ee,W:this,S:oe}):ho(this.M.$,{P:this,O:oe})}var Ee=this.sa(oe);if(!Ee)return this.ka(oe),null;var be=bn(this.M,Ee);if(be!==void 0)return be.L.count.value===0?(be.L.O=Ee,be.L.S=oe,be.clone()):(be=be.clone(),this.ka(oe),be);if(be=this.M.ra(Ee),be=Et[be],!be)return ne.call(this);be=this.fa?be.oa:be.pointerType;var We=gt(Ee,this.M,be.M);return We===null?ne.call(this):this.ga?ho(be.M.$,{P:be,O:We,W:this,S:oe}):ho(be.M.$,{P:be,O:We})}}),i.print&&(A=i.print),i.printErr&&(g=i.printErr),i.wasmBinary&&(m=i.wasmBinary),i.thisProgram&&(c=i.thisProgram);var _te,o9,h_,Zwe={x:()=>Q(""),q:oe=>{var ne=ge[oe];delete ge[oe];var Ee=ne.ia,be=ne.Y,We=ne.la,At=We.map(ut=>ut.va).concat(We.map(ut=>ut.Ba));Ge([oe],At,ut=>{var xt={};return We.forEach((vn,jn)=>{var dn=ut[jn],gs=vn.ta,Nu=vn.ua,rl=ut[jn+We.length],sl=vn.Aa,Gf=vn.Ca;xt[vn.qa]={read:YA=>dn.N(gs(Nu,YA)),write:(YA,cB)=>{var Lu=[];sl(Gf,YA,rl.T(Lu,cB)),fe(Lu)},optional:ut[jn].optional}}),[{name:ne.name,N:vn=>{var jn={},dn;for(dn in xt)jn[dn]=xt[dn].read(vn);return be(vn),jn},T:(vn,jn)=>{for(var dn in xt)if(!(dn in jn||xt[dn].optional))throw new TypeError(`Missing field: "${dn}"`);var gs=Ee();for(dn in xt)xt[dn].write(gs,jn[dn]);return vn!==null&&vn.push(be,gs),gs},X:ye,V:be}]})},n:(oe,ne,Ee,be,We)=>{ne=Ke(ne),be=be===0n;let At=ut=>ut;if(be){let ut=8*Ee;At=xt=>BigInt.asUintN(ut,xt),We=At(We)}nn(oe,{name:ne,N:At,T:(ut,xt)=>(typeof xt=="number"&&(xt=BigInt(xt)),xt),X:qt(ne,Ee,!be),V:null})},B:(oe,ne,Ee,be)=>{ne=Ke(ne),nn(oe,{name:ne,N:function(We){return!!We},T:function(We,At){return At?Ee:be},X:function(We){return this.N(S[We])},V:null})},j:(oe,ne,Ee,be,We,At,ut,xt,vn,jn,dn,gs,Nu)=>{dn=Ke(dn),At=Wn(We,At),xt&&(xt=Wn(ut,xt)),jn&&(jn=Wn(vn,jn)),Nu=Wn(gs,Nu);var rl=Pa(dn);Ho(rl,function(){Xo(`Cannot construct ${dn} due to unbound types`,[be])}),Ge([oe,ne,Ee],be?[be]:[],sl=>{if(sl=sl[0],be)var Gf=sl.M,YA=Gf.$;else YA=St.prototype;sl=oi(dn,function(...s9){if(Object.getPrototypeOf(this)!==cB)throw new tt(`Use 'new' to construct ${dn}`);if(Lu.Z===void 0)throw new tt(`${dn} has no accessible constructor`);var yte=Lu.Z[s9.length];if(yte===void 0)throw new tt(`Tried to invoke ctor of ${dn} with invalid number of parameters (${s9.length}) - expected (${Object.keys(Lu.Z).toString()}) parameters instead!`);return yte.apply(this,s9)});var cB=Object.create(YA,{constructor:{value:sl}});sl.prototype=cB;var Lu=new Er(dn,sl,cB,Nu,Gf,At,xt,jn);if(Lu.U){var lB;(lB=Lu.U).ja??(lB.ja=[]),Lu.U.ja.push(Lu)}return Gf=new lo(dn,Lu,!0,!1,!1),lB=new lo(dn+"*",Lu,!1,!1,!1),YA=new lo(dn+" const*",Lu,!1,!0,!1),Et[oe]={pointerType:lB,oa:YA},sa(rl,sl),[Gf,lB,YA]})},g:(oe,ne,Ee,be,We,At)=>{var ut=Ra(ne,Ee);We=Wn(be,We),Ge([],[oe],xt=>{xt=xt[0];var vn=`constructor ${xt.name}`;if(xt.M.Z===void 0&&(xt.M.Z=[]),xt.M.Z[ne-1]!==void 0)throw new tt(`Cannot register multiple constructors with identical number of parameters (${ne-1}) for class '${xt.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return xt.M.Z[ne-1]=()=>{Xo(`Cannot construct ${xt.name} due to unbound types`,ut)},Ge([],ut,jn=>(jn.splice(1,0,null),xt.M.Z[ne-1]=Jo(vn,jn,null,We,At),[])),[]})},b:(oe,ne,Ee,be,We,At,ut,xt,vn)=>{var jn=Ra(Ee,be);ne=Ke(ne),ne=Uf(ne),At=Wn(We,At),Ge([],[oe],dn=>{function gs(){Xo(`Cannot call ${Nu} due to unbound types`,jn)}dn=dn[0];var Nu=`${dn.name}.${ne}`;ne.startsWith("@@")&&(ne=Symbol[ne.substring(2)]),xt&&dn.M.ya.push(ne);var rl=dn.M.$,sl=rl[ne];return sl===void 0||sl.R===void 0&&sl.className!==dn.name&&sl.aa===Ee-2?(gs.aa=Ee-2,gs.className=dn.name,rl[ne]=gs):(Lo(rl,ne,Nu),rl[ne].R[Ee-2]=gs),Ge([],jn,Gf=>(Gf=Jo(Nu,Gf,dn,At,ut,vn),rl[ne].R===void 0?(Gf.aa=Ee-2,rl[ne]=Gf):rl[ne].R[Ee-2]=Gf,[])),[]})},z:oe=>nn(oe,ic),r:(oe,ne,Ee,be)=>{function We(){}ne=Ke(ne),We.values={},nn(oe,{name:ne,constructor:We,N:function(At){return this.constructor.values[At]},T:(At,ut)=>ut.value,X:oc(ne,Ee,be),V:null}),Ho(ne,We)},d:(oe,ne,Ee)=>{var be=Or(oe,"enum");ne=Ke(ne),oe=be.constructor,be=Object.create(be.constructor.prototype,{value:{value:Ee},constructor:{value:oi(`${be.name}_${ne}`,function(){})}}),oe.values[Ee]=be,oe[ne]=be},m:(oe,ne,Ee)=>{ne=Ke(ne),nn(oe,{name:ne,N:be=>be,T:(be,We)=>We,X:ql(ne,Ee),V:null})},l:(oe,ne,Ee,be,We,At,ut)=>{var xt=Ra(ne,Ee);oe=Ke(oe),oe=Uf(oe),We=Wn(be,We),Ho(oe,function(){Xo(`Cannot call ${oe} due to unbound types`,xt)},ne-1),Ge([],xt,vn=>(vn=[vn[0],null].concat(vn.slice(1)),sa(oe,Jo(oe,vn,null,We,At,ut),ne-1),[]))},c:(oe,ne,Ee,be,We)=>{ne=Ke(ne);let At=xt=>xt;if(be===0){var ut=32-8*Ee;At=xt=>xt<<ut>>>ut,We=At(We)}nn(oe,{name:ne,N:At,T:(xt,vn)=>vn,X:qt(ne,Ee,be!==0),V:null})},a:(oe,ne,Ee)=>{function be(At){return new We(b.buffer,M[At+4>>2],M[At>>2])}var We=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][ne];Ee=Ke(Ee),nn(oe,{name:Ee,N:be,X:be},{wa:!0})},h:oe=>{nn(oe,Kl)},A:(oe,ne)=>{ne=Ke(ne),nn(oe,{name:ne,N(Ee){var be=(be=Ee+4)?un.decode(S.subarray(be,Se(S,be,M[Ee>>2],!0))):"";return h_(Ee),be},T(Ee,be){be instanceof ArrayBuffer&&(be=new Uint8Array(be));var We=typeof be=="string";if(!(We||ArrayBuffer.isView(be)&&be.BYTES_PER_ELEMENT==1))throw new tt("Cannot pass non-string to std::string");var At=We?vo(be):be.length,ut=o9(4+At+1),xt=ut+4;return M[ut>>2]=At,We?ca(be,xt,At+1):S.set(be,xt),Ee!==null&&Ee.push(h_,ut),ut},X:ye,V(Ee){h_(Ee)}})},f:(oe,ne,Ee)=>{if(Ee=Ke(Ee),ne===2)var be=_n,We=rr,At=Ma;else be=Rs,We=bc,At=th;nn(oe,{name:Ee,N:ut=>{var xt=be(ut+4,M[ut>>2]*ne,!0);return h_(ut),xt},T:(ut,xt)=>{if(typeof xt!="string")throw new tt(`Cannot pass non-string to C++ string type ${Ee}`);var vn=At(xt),jn=o9(4+vn+ne);return M[jn>>2]=vn/ne,We(xt,jn+4,vn+ne),ut!==null&&ut.push(h_,jn),jn},X:ye,V(ut){h_(ut)}})},i:(oe,ne,Ee,be,We,At)=>{ge[oe]={name:Ke(ne),ia:Wn(Ee,be),Y:Wn(We,At),la:[]}},e:(oe,ne,Ee,be,We,At,ut,xt,vn,jn)=>{ge[oe].la.push({qa:Ke(ne),va:Ee,ta:Wn(be,We),ua:At,Ba:ut,Aa:Wn(xt,vn),Ca:jn})},C:(oe,ne)=>{ne=Ke(ne),nn(oe,{ma:!0,name:ne,N:()=>{},T:()=>{}})},p:(oe,ne,Ee)=>{var[be,...We]=Na(oe,ne);ne=be.T.bind(be);var At=We.map(vn=>vn.X.bind(vn));oe--;var ut={toValue:eh};switch(oe=At.map((vn,jn)=>{var dn=`argFromPtr${jn}`;return ut[dn]=vn,`${dn}(args${jn?"+"+8*jn:""})`}),Ee){case 0:var xt="toValue(handle)";break;case 2:xt="new (toValue(handle))";break;case 3:xt="";break;case 1:ut.getStringOrSymbol=Xwe,xt="toValue(handle)[getStringOrSymbol(methodName)]"}return xt+=`(${oe})`,be.ma||(ut.toReturnWire=ne,ut.emval_returnValue=UU,xt=`return emval_returnValue(toReturnWire, destructorsRef, ${xt})`),xt=`return function (handle, methodName, destructorsRef, args) { + ${xt} + }`,Ee=new Function(Object.keys(ut),xt)(...Object.values(ut)),xt=`methodCaller<(${We.map(vn=>vn.name)}) => ${be.name}>`,aB(oi(xt,Ee))},E:Ws,o:(oe,ne,Ee,be,We)=>WA[oe](ne,Ee,be,We),D:oe=>{var ne=eh(oe);fe(ne),Ws(oe)},s:(oe,ne,Ee,be)=>{var We=new Date().getFullYear(),At=new Date(We,0,1).getTimezoneOffset();We=new Date(We,6,1).getTimezoneOffset(),M[oe>>2]=60*Math.max(At,We),P[ne>>2]=+(At!=We),ne=ut=>{var xt=Math.abs(ut);return`UTC${0<=ut?"-":"+"}${String(Math.floor(xt/60)).padStart(2,"0")}${String(xt%60).padStart(2,"0")}`},oe=ne(At),ne=ne(We),We<At?(ca(oe,Ee,17),ca(ne,be,17)):(ca(oe,be,17),ca(ne,Ee,17))},y:oe=>{var ne=S.length;if(oe>>>=0,2147483648<oe)return!1;for(var Ee=1;4>=Ee;Ee*=2){var be=ne*(1+.2/Ee);be=Math.min(be,oe+100663296);e:{be=(Math.min(2147483648,65536*Math.ceil(Math.max(oe,be)/65536))-I.buffer.byteLength+65535)/65536|0;try{I.grow(be),R();var We=1;break e}catch{}We=void 0}if(We)return!0}return!1},t:(oe,ne)=>{var Ee=0,be=0,We;for(We of gte()){var At=ne+Ee;M[oe+be>>2]=At,Ee+=ca(We,At,1/0)+1,be+=4}return 0},u:(oe,ne)=>{var Ee=gte();M[oe>>2]=Ee.length,oe=0;for(var be of Ee)oe+=vo(be)+1;return M[ne>>2]=oe,0},v:()=>52,w:function(){return 70},k:(oe,ne,Ee,be)=>{for(var We=0,At=0;At<Ee;At++){var ut=M[ne>>2],xt=M[ne+4>>2];ne+=8;for(var vn=0;vn<xt;vn++){var jn=oe,dn=S[ut+vn],gs=Jwe[jn];dn===0||dn===10?(jn=jn===1?A:g,dn=Se(gs,0),dn=un.decode(gs.buffer?gs.subarray(0,dn):new Uint8Array(gs.slice(0,dn))),jn(dn),gs.length=0):gs.push(dn)}We+=xt}return M[be>>2]=We,0}},Nx=await async function(){var oe;function ne(be){var We;return Nx=be.exports,I=Nx.F,R(),aa=Nx.H,be=Nx,_te=be.I,i._malloc=o9=be.J,i._free=h_=be.K,O--,(We=i.monitorRunDependencies)==null||We.call(i,O),O==0&&k&&(be=k,k=null,be()),Nx}O++,(oe=i.monitorRunDependencies)==null||oe.call(i,O);var Ee={a:Zwe};return i.instantiateWasm?new Promise(be=>{i.instantiateWasm(Ee,(We,At)=>{be(ne(We))})}):(z??(z=he("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C0EAEKEDRQRAQZiDASEBIARBmIMBQRgQiwFFDQJBsIMBIQEgBEGwgwFBGBCLAUUNAkEAIQBBvO4BLQAARQRAA0AgAEECdCAAQcYfEKIDNgKM7gEgAEEBaiIAQQZHDQALQbzuAUEBOgAAQaTuAUGM7gEoAgA2AgALQYzuASEBIAJBCGoiAEGM7gFBGBCLAUUNAkGk7gEhASAAQaTuAUEYEIsBRQ0CQRgQNCIBRQ0BCyABIAIpAgg3AgAgASACKQIYNwIQIAEgAikCEDcCCAwBC0EAIQELIAJBIGokAEGc8QFBAToAAEGY8QEgATYCACABC80KAgV/CX4jAEHgAGsiBSQAIARC////////P4MhCiACIASFQoCAgICAgICAgH+DIQsgAkL///////8/gyIMQiCIIQ8gBEIwiKdB//8BcSEHAkACQCACQjCIp0H//wFxIglB//8Ba0GCgH5PBEAgB0H//wFrQYGAfksNAQsgAVAgAkL///////////8AgyINQoCAgICAgMD//wBUIA1CgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhCwwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCELIAMhAQwCCyABIA1CgICAgICAwP//AIWEUARAIAIgA4RQBEBCgICAgICA4P//ACELQgAhAQwDCyALQoCAgICAgMD//wCEIQtCACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEAgASANhEIAIQFQBEBCgICAgICA4P//ACELDAMLIAtCgICAgICAwP//AIQhCwwCCyABIA2EUARAQgAhAQwCCyACIAOEUARAQgAhAQwCCyANQv///////z9YBEAgBUHQAGogASAMIAEgDCAMUCIGG3lCwABCACAGG3ynIgZBD2sQREEQIAZrIQYgBSkDWCIMQiCIIQ8gBSkDUCEBCyACQv///////z9WDQAgBUFAayADIAogAyAKIApQIggbeULAAEIAIAgbfKciCEEPaxBEIAYgCGtBEGohBiAFKQNIIQogBSkDQCEDCyAHIAlqIAZqQf//AGshBgJAIApCD4YiDkIgiEKAgICACIQiAiABQiCIIgR+IhAgA0IPhiIRQiCIIgogD0KAgASEIg1+fCIPIBBUrSAPIANCMYggDoRC/////w+DIgMgDEL/////D4MiDH58Ig4gD1StfCACIA1+fCAOIA4gEUKAgP7/D4MiDyAMfiIRIAQgCn58IhAgEVStIBAgECADIAFC/////w+DIgF+fCIQVq18fCIOVq18IAMgDX4iEiACIAx+fCIRIBJUrUIghiARQiCIhHwgDiAOIBFCIIZ8Ig5WrXwgDiANIA9+Ig0gCiAMfnwiDCABIAJ+fCICIAMgBH58IgNCIIggAiADVq0gDCANVK0gAiAMVK18fEIghoR8IgIgDlStfCACIBAgBCAPfiIMIAEgCn58IgRCIIggBCAMVK1CIIaEfCIKIBBUrSAKIANCIIZ8IgMgClStfHwiCiACVK18IAogAyAEQiCGIgIgASAPfnwiASACVK18IgIgA1StfCIEIApUrXwiA0KAgICAgIDAAINQRQRAIAZBAWohBgwBCyABQj+IIANCAYYgBEI/iIQhAyAEQgGGIAJCP4iEIQQgAUIBhiEBIAJCAYaEIQILIAZB//8BTgRAIAtCgICAgICAwP//AIQhC0IAIQEMAQsCfiAGQQBMBEBBASAGayIHQf8ATQRAIAVBMGogASACIAZB/wBqIgYQRCAFQSBqIAQgAyAGEEQgBUEQaiABIAIgBxCKASAFIAQgAyAHEIoBIAUpAzAgBSkDOIRCAFKtIAUpAyAgBSkDEISEIQEgBSkDKCAFKQMYhCECIAUpAwAhBCAFKQMIDAILQgAhAQwCCyADQv///////z+DIAatQjCGhAsgC4QhCyABUCACQgBZIAJCgICAgICAgICAf1EbRQRAIAsgBEIBfCIBUK18IQsMAQsgASACQoCAgICAgICAgH+FhFBFBEAgBCEBDAELIAsgBCAEQgGDfCIBIARUrXwhCwsgACABNwMAIAAgCzcDCCAFQeAAaiQACwYAIAAQLQt8AQN/IwBBEGsiASQAIAEgADYCDCMAQRBrIgIkACAAKAIAQX9HBEAgAkEIaiACQQxqIAFBDGoQVRBVIQMDQCAAKAIAQQFGDQALIAAoAgBFBEAgAEEBNgIAIAMQ0gIgAEF/NgIACwsgAkEQaiQAIAAoAgQgAUEQaiQAQQFrCyAAIAAgAUEBazYCBCAAQeDVATYCACAAQZCtATYCACAAC/cFAQl/IwBBEGsiCSQAIAEQ1wIgCUEMaiABEFUhCCAAQQhqIgMQayACTQRAAkAgAkEBaiIAIAMQayIBSwRAIwBBIGsiCiQAAkAgACABayIHIAMoAgggAygCBGtBAnVNBEAgAyAHENkCDAELIApBDGohAQJ/IAMQayAHaiEFIwBBEGsiACQAIAAgBTYCDCAFELwCIgRNBEAgAxC5AiIFIARBAXZJBEAgACAFQQF0NgIIIABBCGogAEEMahCgASgCACEECyAAQRBqJAAgBAwBCxCMAQALIQQgAxBrIQUjAEEQayIAJAAgASADQQxqIgs2AhAgAUEANgIMIAQEfyAAQQhqIAsgBBC7AiAAKAIIIQYgACgCDAVBAAshBCABIAY2AgAgASAGIAVBAnRqIgU2AgggASAGIARBAnRqNgIMIAEgBTYCBCAAQRBqJAAjAEEQayIGJAAgASgCCCEEIAZBBGoiACABQQhqNgIIIAAgBDYCACAAIAQgB0ECdGo2AgQgACgCACEEA0AgACgCBCAERwRAIAEoAhAaIAQQugIgACAAKAIAQQRqIgQ2AgAMAQsLIAAoAgggACgCADYCACAGQRBqJAAgASgCBCADKAIAIgAgAygCBGtqIQQgAygCBCAAayIHBEAgBCAAIAf8CgAACyABIAQ2AgQgAyADKAIANgIEIAMgAUEEahDXASADQQRqIAFBCGoQ1wEgA0EIaiABQQxqENcBIAEgASgCBDYCACADEGsaIAEoAgQhAANAIAEoAggiBCAARwRAIAEgBEEEazYCCCABKAIQGgwBCwsgASgCACIABEAgASgCECAAIAEoAgwgASgCAGtBAnUQuAILCyAKQSBqJAAMAQsgACABSQRAIAMoAgAgAEECdGohACADEGsaIAMgABDYAgsLCyADIAIQggEoAgAEQCADIAIQggEoAgAQvwELIAgQrAEhACADIAIQggEgADYCACAIKAIAIQAgCEEANgIAIAAEQCAAEL8BCyAJQRBqJAALySgBC38jAEEQayIKJAACQAJAAkACQAJAAkACQAJAAkACQCAAQfQBTQRAQYzqASgCACIEQRAgAEELakH4A3EgAEELSRsiBkEDdiIAdiIBQQNxBEACQCABQX9zQQFxIABqIgJBA3QiAUG06gFqIgAgASgCvOoBIgEoAggiBUYEQEGM6gEgBEF+IAJ3cTYCAAwBCyAFIAA2AgwgACAFNgIICyABQQhqIQAgASACQQN0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KAIAKAIcEQQAC8EBAQN/IAAtAABBIHFFBEACQCAAKAIQIgMEfyADBSAAEN8BDQEgACgCEAsgACgCFCIEayACSQRAIAAgASACIAAoAiQRAwAaDAELAkACQCACRSAAKAJQQQBIcg0AIAIhAwNAIAEgA2oiBUEBay0AAEEKRwRAIANBAWsiAw0BDAILCyAAIAEgAyAAKAIkEQMAIANJDQIgAiADayECIAAoAhQhBAwBCyABIQULIAQgBSACEHEaIAAgACgCFCACajYCFAsLC6EBAQJ/AkAgABAfRSACIAFrQQVIcg0AIAEgAhDHASACQQRrIQQgABAjIgIgABAfaiEFAkADQAJAIAIsAAAhACABIARPDQAgAEEATCAAQf8ATnJFBEAgASgCACACLAAARw0DCyABQQRqIQEgAiAFIAJrQQFKaiECDAELCyAAQQBMIABB/wBOcg0BIAIsAAAgBCgCAEEBa0sNAQsgA0EENgIACwtQAQF+AkAgA0HAAHEEQCABIANBQGqthiECQgAhAQwBCyADRQ0AIAIgA60iBIYgAUHAACADa62IhCECIAEgBIYhAQsgACABNwMAIAAgAjcDCAtpAQF/IwBBgAJrIgUkACAEQYDABHEgAiADTHJFBEAgBSABIAIgA2siA0GAAiADQYACSSIBGxCYAiABRQRAA0AgACAFQYACEEIgA0GAAmsiA0H/AUsNAAsLIAAgBSADEEILIAVBgAJqJAALBABBAAsKACAALQALQQd2CwoAIABB0PIBEHoLCgAgAEHY8gEQegvPCQIEfwR+IwBB8ABrIgYkACAEQv///////////wCDIQkCQAJAIAFQIgUgAkL///////////8AgyIKQoCAgICAgMD//wB9QoCAgICAgMCAgH9UIApQG0UEQCADQgBSIAlCgICAgICAwP//AH0iC0KAgICAgIDAgIB/ViALQoCAgICAgMCAgH9RGw0BCyAFIApCgICAgICAwP//AFQgCkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEEIAEhAwwCCyADUCAJQoCAgICAgMD//wBUIAlCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhBAwCCyABIApCgICAgICAwP//AIWEUARAQoCAgICAgOD//wAgAiABIAOFIAIgBIVCgICAgICAgICAf4WEUCIFGyEEQgAgASAFGyEDDAILIAMgCUKAgICAgIDA//8AhYRQDQEgASAKhFAEQCADIAmEQgBSDQIgASADgyEDIAIgBIMhBAwCCyADIAmEUEUNACABIQMgAiEEDAELIAMgASABIANUIAkgClYgCSAKURsiCBshCiAEIAIgCBsiDEL///////8/gyEJIAIgBCAIGyILQjCIp0H//wFxIQcgDEIwiKdB//8BcSIFRQRAIAZB4ABqIAogCSAKIAkgCVAiBRt5QsAAQgAgBRt8pyIFQQ9rEEQgBikDaCEJIAYpA2AhCkEQIAVrIQULIAEgAyAIGyEDIAtC////////P4MhASAHBH4gAQUgBkHQAGogAyABIAMgASABUCIHG3lCwABCACAHG3ynIgdBD2sQREEQIAdrIQcgBikDUCEDIAYpA1gLQgOGIANCPYiEQoCAgICAgIAEhCEBIAlCA4YgCkI9iIQgAiAEhSEEAn4gA0IDhiICIAUgB0YNABogBSAHayIHQf8ASwRAQgAhAUIBDAELIAZBQGsgAiABQYABIAdrEEQgBkEwaiACIAEgBxCKASAGKQM4IQEgBikDMCAGKQNAIAYpA0iEQgBSrYQLIQlCgICAgICAgASEIQsgCkIDhiEKAkAgBEIAUwRAQgAhA0IAIQQgCSAKhSABIAuFhFANAiAKIAl9IQIgCyABfSAJIApWrX0iBEL/////////A1YNASAGQSBqIAIgBCACIAQgBFAiBxt5QsAAQgAgBxt8p0EMayIHEEQgBSAHayEFIAYpAyghBCAGKQMgIQIMAQsgCSAKfCICIAlUrSABIAt8fCIEQoCAgICAgIAIg1ANACAJQgGDIARCP4YgAkIBiISEIQIgBUEBaiEFIARCAYghBAsgDEKAgICAgICAgIB/gyEDIAVB//8BTgRAIANCgICAgICAwP//AIQhBEIAIQMMAQtBACEHAkAgBUEASgRAIAUhBwwBCyAGQRBqIAIgBCAFQf8AahBEIAYgAiAEQQEgBWsQigEgBikDACAGKQMQIAYpAxiEQgBSrYQhAiAGKQMIIQQLIARCPYYgAkIDiIQhASAEQgOIQv///////z+DIAetQjCGhCADhCEEAkACQCACp0EHcSIFQQRHBEAgBCABIAEgBUEES618IgNWrXwhBAwBCyAEIAEgASABQgGDfCIDVq18IQQMAQsgBUUN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C14BA38gAEEANgIIIABCADcCACABKAIAIQMgASgCBCIBIANrIgRBAnUiAgRAIAAgAhCuAyAAKAIEIQIgBEUgASADRnJFBEAgAiADIAT8CgAACyAAIAIgBGo2AgQLIAALDQAgACgCACABQQJ0agsXACAAEEcEQCAAIAE2AgQPCyAAIAEQUAthAQF/IwBBEGsiAiQAIAIgADYCDAJAIAAgAUYNAANAIAIgAUEBayIBNgIIIAAgAU8NASACKAIMIAIoAggQ8wIgAiACKAIMQQFqIgA2AgwgAigCCCEBDAALAAsgAkEQaiQAC6wBAQR/IwBBEGsiByQAAkAgAEUNACAEKAIMIQYgAiABa0ECdSIIQQBKBEAgACABIAgQjQIgCEcNAQsgAyABa0ECdSIBIAZIBEAgACAHQQRqIAYgAWsiASAFEP0CIgUQIyABEI0CIQYgBRA5GiABIAZHDQELIAMgAmtBAnUiAUEASgRAIAAgAiABEI0CIAFHDQELIAQoAgwaIARBADYCDCAAIQkLIAdBEGokACAJCycBAX8jAEEQayIDJAAgAyACNgIMIABB5AAgASACENEBIANBEGokAAvbAQIBfwJ+QQEhBAJAIABCAFIgAUL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFEbDQAgAkIAUiADQv///////////wCDIgZCgICAgICAwP//AFYgBkKAgICAgIDA//8AURsNACAAIAKEIAUgBoSEUARAQQAPCyABIAODQgBZBEAgACACVCABIANTIAEgA1EbBEBBfw8LIAAgAoUgASADhYRCAFIPCyAAIAJWIAEgA1UgASADURsEQEF/DwsgACAChSABIAOFhEIAUiEECyAEC+wBAQR/IwBBEGsiBCQAIABBADYCBCMAQRBrIgUkACAEQQA6AA8gACAAKAIAQQxrKAIAahDZASEGIAAgACgCAEEMaygCAGohAwJAIAYEQCADKAJIBEAgACAAKAIAQQxrKAIAaigCSBDFAwsgBCAAIAAoAgBBDGsoAgBqENkBOgAPDAELIANBBBDVAQsgBUEQaiQAQQQhAyAELQAPBEAgACAAIAAoAgBBDGsoAgBqKAIYIgMgASACIAMoAgAoAiARAwAiATYCBEEGQQAgASACRxshAwsgACAAKAIAQQxrKAIAaiADENUBIARB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AxsLPAAgAEEANgIIIABCADcCACAAIAEoAgA2AgAgACABKAIENgIEIAAgASgCCDYCCCABQQA2AgggAUIANwIACywBAX8gAEEANgIIIABCADcCACAAIAEoAgAiAiABKAIEIgEgASACaxDAAyAACwgAIABB/wFxC/wBAQN/IAAoAgQgACgCACIDa0ECdSICIAFJBEAjAEEgayIDJAACQCABIAJrIgIgACgCCCAAKAIEIgFrQQJ1TQRAIAAoAgQiASACQQJ0aiECA0AgASACRgRAIAAgAjYCBAUgAUEANgIAIAFBBGohAQwBCwsMAQsgA0EMaiAAIAEgACgCAGtBAnUgAmoQtgEgACgCBCAAKAIAa0ECdSAAEIcCIgQoAggiASACQQJ0aiECA0AgASACRwRAIAFBADYCACABQQRqIQEMAQsLIAQgAjYCCCAAIAQQhQIgBBCBAgsgA0EgaiQADwsgASACSQRAIAAgAyABQQJ0ajYCBAsLUgECf0HU3gEoAgAiASAAQQdqQXhxIgJqIQACQCACQQAgACABTRtFBEAgAD8AQRB0TQ0BIAAQGA0BC0GI6gFBMDYCAEF/DwtB1N4BIAA2AgAgAQt/AgF+A38CQCAAQoCAgIAQVARAIAAhAgwBCwNAIAFBAWsiASAAIABCCoAiAkIKfn2nQTByOgAAIABC/////58BViACIQANAAsLIAJQRQRAIAKnIQMDQCABQQFrIgEgAyADQQpuIgRBCmxrQTByOgAAIANBCUsgBCEDDQALCyABC78BAQN/IAAoAgQgACgCACIDayICIAFJBEAjAEEgayIDJAACQCABIAJrIgIgACgCCCAAKAIEIgFrTQRAIAAgAhCYAwwBCyACIANBDGogACABIAJqIAAoAgBrELQBIAAoAgQgACgCAGsgABDGASIEKAIIIgFqIQIDQCABIAJHBEAgAUEAOgAAIAFBAWohAQwBCwsgBCACNgIIIAAgBBDvASAEELoBCyADQSBqJAAPCyABIAJJBEAgACABIANqNgIECwt9AQN/AkACQCAAIgFBA3FFDQAgAS0AAEUEQEEADwsDQCABQQFqIgFBA3FFDQEgAS0AAA0ACwwBCwNAIAEiAkEEaiEBQYCChAggAigCACIDayADckGAgYKEeHFBgIGChHhGDQALA0AgAiIBQQFqIQIgAS0AAA0ACwsgASAA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BEBBCiEBIAAQXgwBCyAAEH5BAWshASAAKAIECyIDIAFGBEAgACABQQEgASABEPQBIAAQIxoMAQsgABAjGiAEDQAgACIBIANBAWoQUAwBCyAAKAIAIQEgACADQQFqNgIECyABIANqIgAgAkEPahBdIAJBADoADiAAQQFqIAJBDmoQXSACQRBqJAALoQIBA38jAEEgayIIJABB9////wciCSABQX9zaiACTwRAIAAQIyEKIAFB8////wNJBEAgCCABQQF0NgIcIAggASACajYCECAIQRBqIAhBHGoQoAEoAgAQnwFBAWohCQsgCEEcaiAIQRhqIAAQVSgCABC8ASAIQRBqIAkQngEgCCgCECECIAgoAhQaIAQEQCACIAogBBBNCyAGBEAgAiAEaiAHIAYQTQsgAyAEIAVqIglrIQcgAyAJRwRAIAIgBGogBmogBCAKaiAFaiAHEE0LIAFBCkcEQCAKEIsCCyAAIAI2AgAgACAIKAIUEFwgACAEIAZqIAdqIgA2AgQgCEEAOgAPIAAgAmogCEEPahBdIAhBHGoQuwEgCEEgaiQADwsQWwALCQAgAEEBEKgCCwoAIAAoAgAQHxoLCQAgACABEFUaCwcAIABBAkkLBABBBAsoAQF/IAAgACgCBEEBayIBNgIEIAFBf0YEQCAAIAAoAgAoAggRAgALC5UBAQN/IwBBEGsiBCQAIAQgATYCDCAEIAM2AgggBEEEaiAEQQxqEGMgBCgCCCEDIwBBEGsiASQAIAEgAzYCDCABIAM2AghBfyEFAkBBAEEAIAIgAxDRASIDQQBIDQAgACADQQFqIgMQNCIANgIAIABFDQAgACADIAIgASgCDBDRASEFCyABQRBqJAAQYiAEQRBqJAAgBQsPACAAIAAoAgAoAiQRAAALEQAgACABIAEoAgAoAiARAQALDgAgACABKAIANgIAIAALCABB/////wcLBQBB/wALOwAgACADNgIQIAAgAQR/IAEQUwVBAAsiAzYCACAAIAIgA2oiAjYCCCAAIAEgA2o2AgwgACACNgIEIAALYQEBfyMAQRBrIgIkACACIAA2AgwCQCAAIAFGDQADQCACIAFBBGsiATYCCCAAIAFPDQEgAigCDCACKAIIENcBIAIgAigCDEEEaiIANgIMIAIoAgghAQwACwALIAJBEGokAAs5AgF/AX4jAEEQayIEJAAgAykDACEFIAQgAykDCDcDCCAEIAU3AwAgACABIAIgBBDAASAEQRBqJAAL0AEBAn8gAkGAEHEEQCAAQSs6AAAgAEEBaiEACyACQYAIcQRAIABBIzoAACAAQQFqIQALIAJBhAJxIgNBhAJHBEAgAEGu1AA7AAAgAEECaiEACyACQYCAAXEhAgNAIAEtAAAiBARAIAAgBDoAACAAQQFqIQAgAUEBaiEBDAELCyAAAn8CQCADQYACRwRAIANBBEcNAUHGAEHmACACGwwCC0HFAEHlACACGwwBC0HBAEHhACACGyADQYQCRg0AGkHHAEHnACACGws6AAAgA0GEAkcLKwEBfyMAQRBrIgUkACAFIAQoAgA2AgAgACABIAIgAyAFEJYBIAVBEGokAAuqAQEBfwJAIANBgBBxRSACRXINACADQcoAcSIEQQhGIARBwABGcg0AIABBKzoAACAAQQFqIQALIANBgARxBEAgAEEjOgAAIABBAWohAAsDQCABLQAAIgQEQCAAIAQ6AAAgAEEBaiEAIAFBAWohAQwBCwsgAAJ/Qe8AIANBygBxIgFBwABGDQAaQdgAQfgAIANBgIABcRsgAUEIRg0AGkHkAEH1ACACGws6AAALDAAgABAjIAFBAnRqC5IEAQt/IwBBgAFrIgokACAKIAE2AnwgAiADELUCIQggCkHjADYCECAKQQhqQQAgCkEQaiIJEDYhDwJAAkACQCAIQeUATwRAIAgQNCIJRQ0BIA8gCRA8CyAJIQcgAiEBA0AgASADRgRAA0AgACAKQfwAaiIBECtBASAIGwRAIAAgARArBEAgBSAFKAIAQQJyNgIACwNAIAIgA0YNBiAJLQAAQQJGDQcgCUEBaiEJIAJBDGohAgwACwALIAAQNyEOIAZFBEAgBCAOEEEhDgsgDUEBaiEMQQAhECAJIQcgAiEBA0AgASADRgRAIAwhDSAQRQ0CIAAQPhogCSEHIAIhASAIIAtqQQJJDQIDQCABIANGBEAMBAUCQCAHLQAAQQJHDQAgARAfIA1GDQAgB0EAOgAAIAtBAWshCwsgB0EBaiEHIAFBDGohAQwBCwALAAUCQCAHLQAAQQFHDQAgASANEMwBKAIAIRECQCAGBH8gEQUgBCAREEELIA5GBEBBASEQIAEQHyAMRw0CIAdBAjoAACALQQFqIQsMAQsgB0EAOgAACyAIQQFrIQgLIAdBAWohByABQQxqIQEMAQsACwALAAUgB0ECQQEgARBaIgwbOgAAIAdBAWohByABQQxqIQEgCyAMaiELIAggDGshCAwBCwALAAsQPQALIAUgBSgCAEEEcjYCAAsgDxA1IApBgAFqJAAgAgsRACAAIAEgACgCACgCDBEEAAuTBAELfyMAQYABayIKJAAgCiABNgJ8IAIgAxC1AiEIIApB4wA2AhAgCkEIakEAIApBEGoiCRA2IQ8CQAJAAkAgCEHlAE8EQCAIEDQiCUUNASAPIAkQPAsgCSEHIAIhAQNAIAEgA0YEQANAIAAgCkH8AGoiARAsQQEgCBsEQCAAIAEQLARAIAUgBSgCAEECcjYCAAsDQCACIANGDQYgCS0AAEECRg0HIAlBAWohCSACQQxqIQIMAAsACyAAEDghDiAGRQRAIAQgDhDOASEOCyANQQFqIQxBACEQIAkhByACIQEDQCABIANGBEAgDCENIBBFDQIgABA/GiAJIQcgAiEBIAggC2pBAkkNAgNAIAEgA0YEQAwEBQJAIActAABBAkcNACABEB8gDUYNACAHQQA6AAAgC0EBayELCyAHQQFqIQcgAUEMaiEBDAELAAsABQJAIActAABBAUcNACABIA0QIiwAACERAkAgBgR/IBEFIAQgERDOAQsgDkYEQEEBIRAgARAfIAxHDQIgB0ECOgAAIAtBAWohCwwBCyAHQQA6AAALIAhBAWshCAsgB0EBaiEHIAFBDGohAQwBCwALAAsABSAHQQJBASABEFoiDBs6AAAgB0EBaiEHIAFBDGohASALIAxqIQsgCCAMayEIDAELAAsACxA9AAsgBSAFKAIAQQRyNgIACyAPEDUgCkGAAWokACACC0oBAn8CQCAALQAAIgJFIAIgAS0AACIDR3INAANAIAEtAAEhAyAALQABIgJFDQEgAUEBaiEBIABBAWohACACIANGDQALCyACIANrC4QBAQJ/IwBBoAFrIgQkACAEIAAgBEGeAWogARsiADYClAEgBCABQQFrIgVBACABIAVPGzYCmAEgBEEAQZAB/AsAIARBfzYCTCAEQeIANgIkIARBfzYCUCAEIARBnwFqNgIsIAQgBEGUAWo2AlQgAEEAOgAAIAQgAiADEM0DIARBoAFqJAALuwIBBH8gA0H87QEgAxsiBSgCACEDAkAC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IBAtIAAoAiQQLSAAKAIwEC0gACgCPBAtCyAACwcAIAEgAGsLDABBARDWARogABAtCwkAIAAQsQEQLQsTACAAIAEgAiAAKAIAKAIwEQMACwkAIAAQ2AEQLQsMACAAQQRqENoBIAALDAAgAEEIahDaASAACygBAn8jAEEQayICJAAgASgCACAAKAIASCEDIAJBEGokACABIAAgAxsLEAAgACABNwMIIABCADcDAAsCAAsUACAAQZj1ADYCACAAQQRqECUgAAvyAwICfgV/IwBBIGsiBSQAIAFC////////P4MhAgJ+IAFCMIhC//8BgyIDpyIEQYH4AGtB/Q9NBEAgAkIEhiAAQjyIhCECIARBgPgAa60hAwJAIABC//////////8PgyIAQoGAgICAgICACFoEQCACQgF8IQIMAQsgAEKAgICAgICAgAhSDQAgAkIBgyACfCECC0IAIAIgAkL/////////B1YiBBshACAErSADfAwBCyAAIAKEUCADQv//AVJyRQRAIAJCBIYgAEI8iIRCgICAgICAgASEIQBC/w8MAQsgBEH+hwFLBEBCACEAQv8PDAELQYD4AEGB+AAgA1AiBxsiCCAEayIGQfAASgRAQgAhAEIADAELIAVBEGogACACIAJCgICAgICAwACEIAcbIgJBgAEgBmsQRCAFIAAgAiAGEIoBIAUpAwhCBIYgBSkDACICQjyIhCEAAkAgBCAIRyAFKQMQIAUpAxiEQgBSca0gAkL//////////w+DhCICQoGAgICAgICACFoEQCAAQgF8IQAMAQsgAkKAgICAgICAgAhSDQAgAEIBgyAAfCEACyAAQoCAgICAgIAIhSAAIABC/////////wdWIgQbIQAgBK0LIQIgBUEgaiQAIAFCgICAgICAgICAf4MgAkI0hoQgAIS/C4kCAAJAIAAEfyABQf8ATQ0BAkBB3OEBKAIAKAIARQRAIAFBgH9xQYC/A0YNAwwBCyABQf8PTQRAIAAgAUE/cUGAAXI6AAEgACABQQZ2QcABcjoAAEECDwsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMPCyABQYCABGtB//8/TQRAIAAgAUE/cUGAAXI6AAMgACABQRJ2QfABcjoAACAAIAFBBnZBP3FBgAFyOgACIAAgAUEMdkE/cUGAAXI6AAFBBA8LC0GI6gFBGTYCAEF/BUEBCw8LIAAgAToAAEEBCzABAX8jAEEQayICJAAgAiABKAIANgIAIAAgAhByEH9BoPEAKAIAEGEaIAJBEGokAAsRACACBEAgACABwCAC/AsACwupAQEBfEQAAAAAAADwPyEBAkAgAEGACE4EQEQAAAAAAADgfyEBIABB/w9JBEAgAEH/B2shAAwCC0QAAAAAAADwfyEBQf0XIAAgAEH9F08bQf4PayEADAELIABBgXhKDQBEAAAAAAAAYAMhASAAQbhwSwRAIABByQdqIQAMAQtEAAAAAAAAAAAhAUHwaCAAIABB8GhNG0GSD2ohAAsgASAAQf8Haq1CNIa/ogtEAQF/IwBBEGsiAiQAIAAoAgAhACACIAE2AgggAiAANgIEIAJB/BQ2AgBByAsgAhByEH9BoPEAKAIAEGEaIAJBEGokAAt4AQN/AkAgAEUNACAAKAIgRQ0AIAAoAiQiAkUNACAAKAIcIgFFDQAgASgCACAARw0AIAEoAgRBtP4Aa0EfSw0AIAEoAjgiAwRAIAAoAiggAyACEQEAIAAoAiQhAiAAKAIcIQELIAAoAiggASACEQEAIABBADYCHAsL6QMAQZTZAUGFExAcQazZAUGUDkEBQQAQG0G42QFB8QxBAUGAf0H/ABACQdDZAUHqDEEBQYB/Qf8AEAJBxNkBQegMQQFBAEH/ARACQdzZAUGjCUECQYCAfkH//wEQAkHo2QFBmglBAkEAQf//AxACQfTZAUGyCUEEQYCAgIB4Qf////8HEAJBgNoBQakJQQRBAEF/EAJBjNoBQfMPQQRBgICAgHhB/////wcQAkGY2gFB6g9BBEEAQX8QAkGk2gFB4A9BCEKAgICAgICAgIB/Qv///////////wAQDUGw2gFB1w9BCEIAQn8QDUG82gFBogpBBBAMQcjaAUGMEUEIEAxBmC1BkhAQGkHgLUEEQfgPEAVBqC5BAkGeEBAFQfQuQQRBrRAQBUHMJhAZQcAvQQBB9RkQAEHoL0EAQboaEABBkDBBAUGTGhAAQbgwQQJBwhYQAEHgMEEDQeEWEABBiDFBBEGJFxAAQbAxQQVBphcQAEHYMUEEQd8aEABBgDJBBUH9GhAAQegvQQBBjBgQAEGQMEEBQesXEABBuDBBAkHOGBAAQeAwQQNBrBgQAEGIMUEEQdQZEABBsDFBBUGyGRAAQagyQQhBkRkQAEHQMkEJQe8YEABB+DJBBkHMFxAAQaAzQQdBpBsQAAsxAQF/IAAoAgwiASAAKAIQRgRAIAAgACgCACgCKBEAAA8LIAAgAUEBajYCDCABLQAAC2ABBH8gASAAKAIEIgYgA2siB2ohBCAGIQUDQCACIARNBEAgACAFNgIEIAdFIAMgBkZyRQRAIAYgB2sgASAH/AoAAAsFIAUgBC0AADoAACAFQQFqIQUgBEEBaiEEDAELCwsQACAAKAIAIgAEQCAAEB0LCzUBAX8gASAAKAIEIgJBAXVqIQEgACgCACEAIAEgAkEBcQR/IAEoAgAgAGooAgAFIAALEQAAC6ABAQR/IwBBgAJrIgAkACAAIAQ3A/gBIABCJTcD8AEgAEHwAWoiB0EBckGZDiAFIAIoAgQQywEgAEHQAWoiBiAGEC4gByAAQfgBahCJAyAGaiIIIAIQaSEJIABBBGoiByACECcgBiAJIAggAEEQaiIGIABBDGogAEEIaiAHEIADIAcQJSABIAYgACgCDCAAKAIIIAIgAxCFASAAQYACaiQAC6IBAQN/IwBBkAFrIgAkACAAIAQ2AowBIABCJTcDgAEgAEGAAWoiBkEBckGgDiAFIAIoAgQQywEgAEHzAGoiBCAEQQ0QLiAGIABBjAFqEMoBIARqIgcgAhBpIQggAEEEaiIGIAIQJyAEIAggByAAQRBqIgQgAEEMaiAAQQhqIAYQgAMgBhAlIAEgBCAAKAIMIAAoAgggAiADEIUBIABBkAFqJAALnQEBBH8jAEHwAGsiACQAIAAgBDcDaCAAQiU3A2AgAEHgAGoiB0EBckGZDiAFIAIoAgQQywEgAEFAayIGIAYQLiAHIABB6ABqEIkDIAZqIgggAhBpIQkgAEEEaiIHIAIQJyAGIAkgCCAAQRBqIgYgAEEMaiAAQQhqIAcQigMgBxAlIAEgBiAAKAIMIAAoAgggAiADEIABIABB8ABqJAALngEBA38jAEHQAGsiACQAIAAgBDYCTCAAQiU3A0AgAEFAayIGQQFyQaAOIAUgAigCBBDLASAAQTNqIgQgBEENEC4gBiAAQcwAahDKASAEaiIHIAIQaSEIIABBBGoiBiACECcgBCAIIAcgAEEQaiIEIABBDGogAEEIaiAGEIoDIAYQJSABIAQgACgCDCAAKAIIIAIgAxCAASAAQdAAaiQACwcAIAARDwALQgADQCABIAJHBEAgAQJ/IAEsAAAQTARAIAMoAgAgASwAAEECdGooAgAMAQsgAS0AAAs6AAAgAUEBaiEBDAELCyABCz0AA0AgASACRwRAIAEiACAAKAIAEEwEfyADKAIAIAAoAgBBAnRqBSAACygCADYCACAAQQRqIQEMAQsLIAELPwECfyAAKAIEIQMgACgCCCECA0AgAiADRwRAIAAgAiABayICNgIIDAELCyAAKAIAIgIEQCAAKAIMGiACEC0LC0wBAX8CQCABRQ0AIAFBiNgBEFIiAUUNACABKAIIIAAoAghBf3NxDQAgACgCDCABKAIMQQAQO0UNACAAKAIQIAEoAhBBABA7IQILIAILCwBBnBFBABCtAgALgQEBA38gACgCBCIEQQFxIQUCfyABLQA3QQFGBEAgBEEIdSIGIAVFDQEaIAIoAgAgBhDoAQwBCyAEQQh1IAVFDQAaIAEgACgCACgCBDYCOCAAKAIEIQRBACECQQALIQUgACgCACIAIAEgAiAFaiADQQIgBEECcRsgACgCACgCHBEIAAsKACAAIAFBABA7C/gBAQF/IwBBEGsiAiQAIAIgATYCDEGQ1gEoAgAiAiAAIAEQzQMaIAAQqAEgAGpBAWstAABBCkcEQAJAAkAgAigCTCIAQQBOBEAgAEUNAUGU4QEoAgAgAEH/////A3FHDQELAkAgAigCUEEKRg0AIAIoAhQiACACKAIQRg0AIAIgAEEBajYCFCAAQQo6AAAMAgsgAhDeAQwBCyACQcwAaiIBIgAgACgCACIAQf////8DIAAbNgIAAkACQCACKAJQQQpGDQAgAigCFCIAIAIoAhBGDQAgAiAAQQFqNgIUIABBCjoAAAwBCyACEN4BCyABEKwBGgsLEMoDAAsdAQF/IwBBEGsiASQAIAEgADYCAEG9HiABEK0CAAu5AgEDfyMAQSBrIggkAEH3////AyIJIAFBf3NqIAJPBEAgABAjIQogAUHz////AUkEQCAIIAFBAXQ2AhwgCCABIAJqNgIQIAhBEGogCEEcahCgASgCABCQAUEBaiEJCyAIQRxqIAhBGGogABBVKAIAELwBIAhBEGogCRCPASAIKAIQIQIgCCgCFBogBARAIAIgCiAEEGULIAYEQCAEQQJ0IAJqIAcgBhBlCyADIAQgBWoiCWshByADIAlHBEAgBEECdCIDIAJqIAZBAnRqIAMgCmogBUECdGogBxBlCyABQQFqIgFBAkcEQCAKIAEQqQELIAAgAjYCACAAIAgoAhQQXCAAIAQgBmogB2oiADYCBCAIQQA2AgwgAiAAQQJ0aiAIQQxqEFYgCEEcahC7ASAIQSBqJAAPCxBbAAuJAQECfyMAQRBrIgMkACABQff///8HTQRAAkAgARDUAQRAIAAgARBQIAAhBAwBCyADQQhqIAEQnwFBAWoQngEgAygCDBogACADKAIIIgQ2AgAgACADKAIMEFwgACABNgIECyAEIAEgAhCyAiADQQA6AAcgASAEaiADQQdqEF0gA0EQaiQADwsQWwALRAECfyAAECghAyAAEB8hBCACIANNBEAgABAjIgMgASACEE0gACADIAIQwAIPCyAAIAMgAiADayAEQQAgBCACIAEQuQELPQEBfyMAQRBrIgMkACADIAI6AA8DQCABBEAgACADLQAPOgAAIAFBAWshASAAQQFqIQAMAQsLIANBEGokAAsZACAAQYCAgIAETwRAEKoCAAsgAEECdBBTC5IFAQh/QQQgASABQQRNGyEDQQEgACAAQQFNGyEHA0ACQCAHIAMgB2pBAWtBACADa3EiACAAIAdJGyEEQQAhASMAQRBrIggkAAJAIANBA3ENACAEIANwDQACfwJAQTACfyADQQhGBEAgBBA0DAELQRwhASADQQNxIANBBElyDQEgA0ECdiIAIABBAWtxDQFBMEFAIANrIARJDQIaAn9BECEBAkBBEEEQIAMgA0EQTRsiACAAQRBNGyICIAJBAWtxRQRAIAIhAAwBCwNAIAEiAEEBdCEBIAAgAkkNAAsLQUAgAGsgBE0EQEGI6gFBMDYCAEEADAELQQBBECAEQQtqQXhxIARBC0kbIgUgAGpBDGoQNCICRQ0AGiACQQhrIQECQCAAQQFrIAJxRQRAIAEhAAwBCyACQQRrIgkoAgAiBEF4cSAAIAJqQQFrQQAgAGtxQQhrIgIgAEEAIAIgAWtBD00baiIAIAFrIgZrIQIgBEEDcUUEQCABKAIAIQEgACACNgIEIAAgASAGajYCAAwBCyAAIAIgACgCBEEBcXJBAnI2AgQgACACaiICIAIoAgRBAXI2AgQgCSAGIAkoAgBBAXFyQQJyNgIAIAEgBmoiAiACKAIEQQFyNgIEIAEgBhDbAQsCQCAAKAIEIgJBA3FFDQAgAkF4cSIBIAVBEGpNDQAgACAFIAJBAXFyQQJyNgIEIAAgBWoiBCABIAVrIgJBA3I2AgQgACABaiIBIAEoAgRBAXI2AgQgBCACENsBCyAAQQhqCwsiAEUNARogCCAANgIMQQAhAQsgAQshAEEAIAgoAgwgABshAQsgCEEQaiQAIAENAEHk/gEoAgAiAEUNACAAEQwADAELCyABRQRAEOsBCyABCwoAIAEgAGtBDG0LCQAgABAuNgIACyMBAn8gACEBA0AgASICQQRqIQEgAigCAA0ACyACIABrQQJ1Cy8BAX8jAEEQayIDJAACQCAAIAFGBEAgAEEAOgB4DAELIAEgAhCpAQsgA0EQaiQACxAAIAAoAgggACgCAGtBAnULCQAgAEEANgIAC0kBAX8jAEEQayIDJAACQAJAIAJBHksNACABLQB4QQFxDQAgAUEBOgB4DAELIAIQwQIhAQsgA0EQaiQAIAAgAjYCBCAAIAE2AgALOgECfyMAQRBrIgAkACAAQf////8DNgIMIABB/////wc2AgggAEEMaiAAQQhqELUDKAIAIABBEGokAAs0AQF/IwBBEGsiAyQAIAMgARBzNgIMIAMgAhBzNgIIIAAgA0EMaiADQQhqEGYgA0EQaiQAC04BAX8jAEEQayIDJAAgAyABNgIIIAMgADYCDCADIAI2AgRBACEBIANBBGoiACADQQxqENMBRQRAIAAgA0EIahDTASEBCyADQRBqJAAgAQswAQF/IwBBEGsiAyQAIAMgATYCDCADIAI2AgggACADQQxqIANBCGoQZiADQRBqJAALMwEBfyMAQRBrIgMkACAAEB8aIAAgAhCDASADQQA6AA8gASACaiADQQ9qEF0gA0EQaiQACzEAIABB/////wNLBEAQqgIACwJ/IABBAnQhAEEEENYBBEAgAEEEELQCDAELIAAQUwsLCQAgABDtARAtCxUAIABB8KoBNgIAIABBEGoQIBogAAsVACAAQciqATYCACAAQQxqECAaIAALgAMBBH8gAiEAA0ACQCAEIAdNIAAgA09yDQAgACwAACIBQf8BcSEFAn9BASABQQBODQAaIAFBQkkNASABQV9NBEAgAyAA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ZEYNAEEAIQAgC0EANgIQIBEgDygCACALKAJkIAtBEGoQQyALKAIQBEAgBSAFKAIAQQRyNgIADAELQQEhAAsgEBAgGiANECAaIA4QIBogDBAgGiARECAaIA8QNQwDCyACIQELIANBAWohAwwACwALIAtBkARqJAAgAAsMACAAQQFBLRD9AhoLCwAgAEEBQS0QsAILHAEBfyAALQAAIQIgACABLQAAOgAAIAEgAjoAAAtlAQF/IwBBEGsiBiQAIAZBADoADyAGIAU6AA4gBiAEOgANIAZBJToADCAFBEAgBkENaiAGQQ5qEPMCCyACIAEgASACKAIAEIoCIAZBDGogAyAAKAIAEJ4DIAFqNgIAIAZBEGokAAtBACABIAIgAyAEQQQQZyEBIAMtAABBBHFFBEAgACABQdAPaiABQewOaiABIAFB5ABJGyABQcUASBtB7A5rNgIACwtAACACIAMgAEEIaiAAKAIIKAIEEQAAIgAgAEGgAmogBSAEQQAQzQEgAGsiAEGfAkwEQCABIABBDG1BDG82AgALC0AAIAIgAyAAQQhqIAAoAggoAgARAAAiACAAQagBaiAFIARBABDNASAAayIAQacBTARAIAEgAEEMbUEHbzYCAAsLQQAgASACIAMgBEEEEGghASADLQAAQQRxRQRAIAAgAUHQD2ogAUHsDmogASABQeQASRsgAUHFAEgbQewOazYCAAsLQAAgAiADIABBCGogACgCCCgCBBEAACIAIABBoAJqIAUgBEEAEM8BIABrIgBBnwJMBEAgASAAQQxtQQxvNgIACwtAACACIAMgAEEIaiAAKAIIKAIAEQAAIgAgAEGoAWogBSAEQQAQzwEgAGsiAEGnAUwEQCABIABBDG1BB282AgALCxgBAX9BDBBTIgBBADYCCCAAQgA3AgAgAAsEAEECC8oBAQR/IwBBEGsiAyQAAkAgAUH3////A00EQAJAIAEQvQEEQCAAIAEQUCAAIQQMAQsgA0EIaiABEJABQQFqEI8BIAMoAgwaIAAgAygCCCIENgIAIAAgAygCDBBcIAAgATYCBAsjAEEQayIFJAAgBSACNgIMIAQhBiABIQIDQCACBEAgBiAFKAIMNgIAIAJBAWshAiAGQQRqIQYMAQsLIAVBEGokACADQQA2AgQgBCABQQJ0aiADQQRqEFYgA0EQaiQADAELEFsA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hoRCAEKAgICAgIDAwz8QLyAFKQNIIQIgBSkDQCEEDAELIAlC////////P4MgBiAHcq1CMIaEIQILIAAgBDcDACAAIAI3AwggBUGAAWokAAuIEAIFfw9+IwBB0AJrIgUkACAEQv///////z+DIQsgAkL///////8/gyEKIAIgBIVCgICAgICAgICAf4MhDCAEQjCIp0H//wFxIQcCQAJAIAJCMIinQf//AXEiCEH//wFrQYKAfk8EQCAHQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIg5CgICAgICAwP//AFQgDkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEMDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQwgAyEBDAILIAEgDkKAgICAgIDA//8AhYRQBEAgAyACQoCAgICAgMD//wCFhFAEQEIAIQFCgICAgICA4P//ACEMDAMLIAxCgICAgICAwP//AIQhDEIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQEIAIQEMAgsgASAOhFAEQEKAgICAgIDg//8AIAwgAiADhFAbIQxCACEBDAILIAIgA4RQBEAgDEKAgICAgIDA//8AhCEMQgAhAQwCCyAOQv///////z9YBEAgBUHAAmogASAKIAEgCiAKUCIGG3lCwABCACAGG3ynIgZBD2sQREEQIAZrIQYgBSkDyAIhCiAFKQPAAiEBCyACQv///////z9WDQAgBUGwAmogAyALIAMgCyALUCIJG3lCwABCACAJG3ynIglBD2sQRCAGIAlqQRBrIQYgBSkDuAIhCyAFKQOwAiEDCyAFQaACaiALQoCAgICAgMAAhCISQg+GIANCMYiEIgJCAEKAgICAsOa8gvUAIAJ9IgRCABBAIAVBkAJqQgAgBSkDqAJ9QgAgBEIAEEAgBUGAAmogBSkDmAJCAYYgBSkDkAJCP4iEIgRCACACQgAQQCAFQfABaiAEQgBCACAFKQOIAn1CABBAIAVB4AFqIAUpA/gBQgGGIAUpA/ABQj+IhCIEQgAgAkIAEEAgBUHQAWogBEIAQgAgBSkD6AF9QgAQQCAFQcABaiAFKQPYAUIBhiAFKQPQAUI/iIQiBEIAIAJCABBAIAVBsAFqIARCAEIAIAUpA8gBfUIAEEAgBUGgAWogAkIAIAUpA7gBQgGGIAUpA7ABQj+IhEIBfSICQgAQQCAFQZABaiADQg+GQgAgAkIAEEAgBUHwAGogAkIAQgAgBSkDqAEgBSkDoAEiDiAFKQOYAXwiBCAOVK18IARCAVatfH1CABBAIAVBgAFqQgEgBH1CACACQgAQQCAGIAggB2tqIghB//8AaiEGAn4gBSkDcCITQgGGIg0gBSkDiAEiD0IBhiAFKQOAAUI/iIR8IhBC5+wAfSIUQiCIIgIgCkKAgICAgIDAAIQiFUIBhiIWQiCIIgR+IhEgAUIBhiIOQiCIIgsgECAUVq0gDSAQVq0gBSkDeEIBhiATQj+IhCAPQj+IfHx8QgF9IhNCIIgiEH58Ig0gEVStIA0gDSATQv////8PgyITIAFCP4giFyAKQgGGhEL/////D4MiCn58Ig1WrXwgBCAQfnwgBCATfiIRIAogEH58Ig8gEVStQiCGIA9CIIiEfCANIA9CIIZ8Ig8gDVStfCAPIA8gFEL/////D4MiFCAKfiINIAIgC358IhEgDVStIBEgESATIA5C/v///w+DIg1+fCIRVq18fCIPVq18IA8gBCAUfiIYIA0gEH58IgQgAiAKfnwiCiALIBN+fCIQQiCIIAogEFatIAQgGFStIAQgClatfHxCIIaEfCIEIA9UrXwgBCAEIBEgAiANfiIKIAsgFH58IgJCIIggAiAKVK1CIIaEfCIKIBFUrSAKIAogEEIghnwiClatfHwiBFatfCAEIAQgCiACQiCGIgIgDSAUfnwgAlStQn+FIgJWIAIgClJxrXwiBFatfCICQv////////8AWARAIBYgF4QhFSAFQdAAaiAEIAJCgICAgICAwABUIgetIguGIgogAiALhiAEQgGIIAdBP3OtiIQiBCADIBIQQCAIQf7/AGogBiAHG0EBayEGIAFCMYYgBSkDWH0gBSkDUCIBQgBSrX0hC0IAIAF9DAELIAVB4ABqIAJCP4YgBEIBiIQiCiACQgGIIgQgAyASEEAgAUIwhiAFKQNofSAFKQNgIgJCAFKtfSELIAEhDkIAIAJ9CyECIAZB//8BTgRAIAxCgICAgICAwP//AIQhDEIAIQEMAQsCfiAGQQBKBEAgC0IBhiACQj+IhCEBIARC////////P4MgBq1CMIaEIQsgAkIBhgwBCyAGQY9/TARAQgAhAQwCCyAFQUBrIAogBEEBIAZrEIoBIAVBMGogDiAVIAZB8ABqEEQgBUEgaiADIBIgBSkDQCIKIAUpA0giCxBAIAUpAzggBSkDKEIBhiAFKQMgIgFCP4iEfSAFKQMwIgIgAUIBhiIEVK19IQEgAiAEfQshAiAFQRBqIAMgEkIDQgAQQCAFIAMgEkIFQgAQQCALIAogAyAKQgGDIgMgAnwiAlQgASACIANUrXwiASASViABIBJRG618IgMgClStfCIEIAMgAyAEQoCAgICAgMD//wBUIAIgBSkDEFYgASAFKQMYIgRWIAEgBFEbca18IgNWrXwiBCADIARCgICAgICAwP//AFQgAiAFKQMAViABIAUpAwgiAlYgASACURtxrXwiASADVK18IAyEIQwLIAAgATcDACAAIAw3AwggBUHQAmokAAu/AgEBfyMAQdAAayIEJAACQCADQYCAAU4EQCAEQSBqIAEgAkIAQoCAgICAgID//wAQLyAEKQMoIQIgBCkDICEBIANB//8BSQRAIANB//8AayEDDAILIARBEGogASACQgBCgICAgICAgP//ABAvQf3/AiADIANB/f8CTxtB/v8BayEDIAQpAxghAiAEKQMQIQEMAQsgA0GBgH9KDQAgBEFAayABIAJCAEKAgICAgICAORAvIAQpA0ghAiAEKQNAIQEgA0H0gH5LBEAgA0GN/wBqIQMMAQsgBEEwaiABIAJCAEKAgICAgICAORAvQeiBfSADIANB6IF9TRtBmv4BaiEDIAQpAzghAiAEKQMwIQELIAQgASACQgAgA0H//wBqrUIwhhAvIAAgBCkDCDcDCCAAIAQpAwA3AwAgBEHQAGokAAs8ACAAIAE3AwAgACACQv///////z+DIAJCgICAgICAwP//AINCMIinIANCMIinQYCAAnFyrUIwhoQ3AwgLwAECAX8CfkF/IQMCQCAAQgBSIAFC////////////AIMiBEKAgICAgIDA//8AViAEQoCAgICAgMD//wBRGw0AIAJC////////////AIMiBUKAgICAgIDA//8AViAFQoCAgICAgMD//wBScQ0AIAAgBCAFhIRQBEBBAA8LIAEgAoNCAFkEQCABIAJSIAEgAlNxDQEgACABIAKFhEIAUg8LIABCAFIgASACVSABIAJRGw0AIAAg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EKYCCyEAIAEQTAR/QZiEASgCACABQf8BcUECdGooAgAFIAELwAsJACAAENACEC0LOwADQCABIAJGRQRAIAMhACAEIAEoAgAQTAR/IAEoAgAFIAALOgAAIARBAWohBCABQQRqIQEMAQsLIAELDAAgASACIAEQTBvACyoAA0AgASACRkUEQCADIAEsAAA2AgAgA0EEaiEDIAFBAWohAQwBCwsgAQsPACAAIAEgAkGgkAEQpwILHAAgARBMBH9BoJABKAIAIAFBAnRqKAIABSABCwsPACAAIAEgAkGYhAEQpwILHAAgARBMBH9BmIQBKAIAIAFBAnRqKAIABSABCwsQACAABEAgABDHAwsgABAtCzoAA0ACQCACIANGDQAgAigCABBMRQ0AIAIoAgBBAnRBkKIBaigCACABcUUNACACQQRqIQIMAQsLIAILOQADQAJAIAIgA0YNACACKAIAEEwEQCACKAIAQQJ0QZCiAWooAgAgAXENAQsgAkEEaiECDAELCyACC0YAA0AgASACRkUEQEEAIQAgAyABKAIAEEwEfyABKAIAQQJ0QZCiAWooAgAFQQALNgIAIANBBGohAyABQQRqIQEMAQsLIAELIwBBACEAIAIQTAR/IAJBAnRBkKIBaigCACABcUEARwVBAAsLDwAgACAAKAIAKAIEEQIACwkAIAAQ1gIQLQsVAQF/QdQAEFMiAEEAQdQA/AsAIAALFAAgACgCACABaiACLQAAOgAAQQELrgEAAkAgBRBHRQRAIAAgBSkCADcCACAAIAUoAgg2AgggABBeGgwBCyAFKAIAIQQgBSgCBCECIwBBEGsiAyQAAkACQAJAIAIQvQEEQCAAIgEgAhBQDAELIAJB9////wNLDQEgA0EIaiACEJABQQFqEI8BIAMoAgwaIAAgAygCCCIBNgIAIAAgAygCDBBcIAAgAjYCBAsgASAEIAJBAWoQZSADQRBqJAAMAQsQWwALCwsJACAAIAUQ5AELhAMBCH8jAEHgA2siACQAIABB3ANqIgYgAxAnIAYQSCEKIAUQHwRAIAVBABDMASgCACAKQS0QS0YhCwsgAiALIABB3ANqIABB2ANqIABB1ANqIABB0ANqIABBxANqECQiDCAAQbgDahAkIgYgAEGsA2oQJCIHIABBqANqEN8CIABB4wA2AhAgAEEIakEAIABBEGoiAhA2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KAK8ASAEEI8DOQMAIABBzAFqIABBEGogACgCDCAEEEMgAEHcAmogAEHYAmoQKwRAIAQgBCgCAEECcjYCAAsgACgC3AIgARAgGiAAQcwBahAgGiAAQeACaiQADAMLQQEhAwsgAEHcAmoQPhoMAAsACwvKBAEDfwJ/IwBB4AJrIgAkACAAIAI2AtgCIAAgATYC3AIgAEHMAWogAyAAQeABaiAAQdwBaiAAQdgBahD7ASAAQcABahAkIgEgARAoECEgACABQQAQIiICNgK8ASAAIABBEGo2AgwgAEEANgIIIABBAToAByAAQcUAOgAGQQAhAwNAAkACQAJAIABB3AJqIABB2AJqECsNACAAKAK8ASABEB8gAmpGBEAgARAfIQYgASABEB9BAXQQISABIAEQKBAhIAAgBiABQQAQIiICajYCvAELIABB3AJqEDcgAEEHaiAAQQZqIAIgAEG8AWogACgC3AEgACgC2AEgAEHMAWogAEEQaiAAQQxqIABBCGogAEHgAWoQ+gENACADDQFBACEDIAAoArwBIAJrIgdBAEwNAgJAAkAgAi0AACIGQStrIggOAwEAAQALIAZBLkYNAkEBIQMgBkEwa0H/AXFBCkkNAwwBCyAHQQFGDQICQCAIDgMAAwADCyACLQABIgZBLkYNAUEBIQMgBkEwa0H/AXFBCU0NAgsCQCAAQcwBahAfRQ0AIAAtAAdBAXFFDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK8ASAEEJEDOAIAIABBzAFqIABBEGogACgCDCAEEEMgAEHcAmogAEHYAmoQKwRAIAQgBCgCAEECcjYCAAsgACgC3AIgARAgGiAAQcwBahAgGiAAQeACaiQADAMLQQEhAwsgAEHcAmoQPhoMAAsACwuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCSAzcDACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCVAzsBACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtB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DCECDAYLIANBIHIhAyABQQRqIQIgBEEEayEEIAEtAAMgCHQgB2ohBwsCQCAFQQRxRQ0AIAcgBigCIEYNACAKQd4ONgIYIAZB0f4ANgIEIAIhASAGKAIEIQUMAQsLIAIhAUEAIQdBACEDCyAGQdD+ADYCBAtBASECDAELQQAhBCAMIQILIAogDzYCECAKIBA2AgwgCiAENgIEIAogATYCACAGIAM2AkAgBiAHNgI8AkACQCAGKAIsRQRAIA8gFUYNASAGKAIEQdD+AEsNAQsCfyAVIA9rIQMCQAJAIAooAhwiASgCOCIMRQRAQQEhBSABIAooAihBASABKAIodEEBIAooAiARAwAiDDYCOCAMRQ0BCyABKAIsIgRFBEAgAUIANwIwIAFBASABKAIodCIENgIsCyADIARPBEAgBARAIAwgECAEayAE/AoAAAsgAUEANgI0DAILIAQgASgCNCIIayIFIAMgAyAFSxsiBARAIAggDGogECADayAE/AoAAAsgAyAFSwRAIAMgBGsiAwRAIAEoAjggECADayAD/AoAAAsgASADNgI0DAILQQAhBSABIAEoAjQgBGoiA0EAIAMgASgCLCIMRxs2AjQgDCABKAIwIgNNDQAgASADIARqNgIwCyAFDAELIAEgASgCLDYCMEEACw0BIAooAhAhDyAKKAIEIQQLIAogCigCCCAkIARrajYCCCAKIBUgD2siASAKKAIUajYCFCAGIAYoAiAgAWo2AiAgBi0ADEEEcUUgDyAVRnJFBEAgCigCDCABayEDIAYoAhwhBSAGAn8gBigCFARAIAUgAyABEFEMAQsgBSADIAEQswELIgE2AhwgCiABNgIwCyAKIAYoAkBBwABBACAGKAIIG2pBgAFBACAGKAIEIgFBv/4ARhtqQYACQYACQQAgAUHC/gBGGyABQcf+AEYbajYCLCACQXsgAhsgAiAPIBVGGyACIAQgJEYbIRwMAgsgBkHS/gA2AgQLQXwhHAsgF0EQaiQAIBxBAUsNASATQagBaiEBIBMoAqwBIQMgGigCACEJIBooAgQgEygCFGshDCMAQSBrIggkAAJAIAwgCWsiBUEATA0AIAEoAgggASgCBCICayAFTgRAIAIgA2siBCAFSARAIAwgBCAJaiIHayILRSAHIAxGckUEQCACIAcgC/wKAAALIAEgAiALajYCBCAE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eQAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AE5vdgBUaHUAQXVndXN0AHVuc2lnbmVkIHNob3J0AHVuc2lnbmVkIGludABpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQAaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0AHVua25vd24gaGVhZGVyIGZsYWdzIHNldABpbnZhbGlkIGRpc3RhbmNlcyBzZXQAZ2V0AE9jdABmbG9hdABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AFNhdABudW1Qb2ludHMAY29sb3JzAFVucGFja09wdGlvbnMAcG9zaXRpb25zAHJvdGF0aW9ucwB0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scwBpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzAHNjYWxlcwBhbHBoYXMAW1NQWjogRVJST1JdIENoZWNrIGZhaWxlZDogJXM6JWQ6ICVzAHZmMzJfcHRyAEFwcgB2ZWN0b3IAbW9uZXlfZ2V0IGVycm9yAFtTUFogRVJST1JdIGRlc2VyaWFsaXplUGFja2VkR2F1c3NpYW5zOiByZWFkIGVycm9yAE9jdG9iZXIATm92ZW1iZXIAU2VwdGVtYmVyAERlY2VtYmVyAHVuc2lnbmVkIGNoYXIAaW9zX2Jhc2U6OmNsZWFyAE1hcgAvZW1zZGsvZW1zY3JpcHRlbi9zeXN0ZW0vbGliL2xpYmN4eGFiaS9zcmMvcHJpdmF0ZV90eXBlaW5mby5jcHAAU2VwACVJOiVNOiVTICVwAFN1bgBKdW4ATW9uAG5hbgBKYW4AY29vcmRpbmF0ZVN5c3RlbQBDb29yZGluYXRlU3lzdGVtAEp1bABib29sAGxsAEFwcmlsAGludmFsaWQgY29kZSAtLSBtaXNzaW5nIGVuZC1vZi1ibG9jawBpbmNvcnJlY3QgaGVhZGVyIGNoZWNrAGluY29ycmVjdCBsZW5ndGggY2hlY2sAaW5jb3JyZWN0IGRhdGEgY2hlY2sAcHVzaF9iYWNrAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAEZyaQBzaABoZWFkZXIgY3JjIG1pc21hdGNoAE1hcmNoAEF1ZwB1bnNpZ25lZCBsb25nIGxvbmcAdW5zaWduZWQgbG9uZwBzdGQ6OndzdHJpbmcAYmFzaWNfc3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGluZgAlLjBMZgAlTGYAcmVzaXplAGludmFsaWQgd2luZG93IHNpemUAdHJ1ZQBUdWUAZmFsc2UAaW52YWxpZCBibG9jayB0eXBlAEp1bmUAZG91YmxlAHNoRGVncmVlAGJhZF9hcnJheV9uZXdfbGVuZ3RoIHdhcyB0aHJvd24gaW4gLWZuby1leGNlcHRpb25zIG1vZGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQBSYXdHYXVzc2lhbkNsb3VkAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAFtTUFogRVJST1JdIGRlc2VyaWFsaXplUGFja2VkR2F1c3NpYW5zOiBoZWFkZXIgbm90IGZvdW5kACUwKmxsZAAlKmxsZAArJWxsZAAlKy40bGQAdm9pZABsb2NhbGUgbm90IHN1cHBvcnRlZABhbnRpYWxpYXNlZABXZWQAJVktJW0tJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IFRvbyBtYW55IHBvaW50czogJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IFVuc3VwcG9ydGVkIFNIIGRlZ3JlZTogJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IHZlcnNpb24gbm90IHN1cHBvcnRlZDogJWQARGVjAC4vc3B6L3NyYy9jYy9sb2FkLXNwei5jYwBGZWIAJWEgJWIgJWQgJUg6JU06JVMgJVkAUE9TSVgAVmVjdG9yVUludDhUACVIOiVNOiVTAE5BTgBQTQBBTQAlSDolTQBMQ19BTEwAQVNDSUkATEFORwBSVUYATFVGAElORgBSREYATERGAFVOU1BFQ0lGSUVEAEMAUlVCAExVQgBSREIATERCAGNhdGNoaW5nIGEgY2xhc3Mgd2l0aG91dCBhbiBvYmplY3Q/AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxkb3VibGU+ADAxMjM0NTY3ODkAQy5VVEYtOABWZWN0b3JGbG9hdDMyADEuMy4xAC4ALQAocGFja2VkLmFscGhhcy5zaXplKCkpID09IChudW1Qb2ludHMpAChudWxsKQAocGFja2VkLmNvbG9ycy5zaXplKCkpID09IChudW1Qb2ludHMgKiAzKQAocGFja2VkLnNjYWxlcy5zaXplKCkpID09IChudW1Qb2ludHMgKiAzKQAocGFja2VkLnNoLnNpemUoKSkgPT0gKG51bVBvaW50cyAqIHNoRGltICogMykAKHBhY2tlZC5yb3RhdGlvbnMuc2l6ZSgpKSA9PSAobnVtUG9pbnRzICogKHBhY2tlZC51c2VzUXVhdGVybmlvblNtYWxsZXN0VGhyZWUgPyA0IDogMykpAChwYWNrZWQucG9zaXRpb25zLnNpemUoKSkgPT0gKG51bVBvaW50cyAqIDMgKiAodXNlc0Zsb2F0MTYgPyAyIDogMykpACUAbGVuZ3RoX2Vycm9yIHdhcyB0aHJvd24gaW4gLWZuby1leGNlcHRpb25zIG1vZGUgd2l0aCBtZXNzYWdlICIlcyIAUHVyZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGxlZCEAW1NQWjogRVJST1JdIFVuc3VwcG9ydGVkIFNIIGRlZ3JlZTogJWQKAAkAAAAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwBBkCALthMgEAAA9GwAAPRsAABAEAAAqG0AACgQAABOM3NwejEzR2F1c3NpYW5DbG91ZEUAAACobQAASBAAAE4zc3B6MTNVbnBhY2tPcHRpb25zRQBwcGlpcAD0bAAAbBAAAKhtAAB0EAAATlN0M19fMjZ2ZWN0b3JJZk5TXzlhbGxvY2F0b3JJZkVFRUUAaXBwACxuAADEEAAAAAAAAAMAAADcEAAAAAAAACgSAAAAAAAAWBIAAAAAAABOU3QzX18yOG9wdGlvbmFsSWZFRQAAAADQbQAA6BAAABgRAABOU3QzX18yMjdfX29wdGlvbmFsX21vdmVfYXNzaWduX2Jhc2VJZkxiMUVFRQAAAADQbQAAJBEAAFQRAABOU3QzX18yMjdfX29wdGlvbmFsX2NvcHlfYXNzaWduX2Jhc2VJZkxiMUVFRQAAAADQbQAAYBEAAIgRAABOU3QzX18yMjBfX29wdGlvbmFsX21vdmVfYmFzZUlmTGIxRUVFAAAA0G0AAJQRAAC8EQAATlN0M19fMjIwX19vcHRpb25hbF9jb3B5X2Jhc2VJZkxiMUVFRQAAANBtAADIEQAA9BEAAE5TdDNfXzIyM19fb3B0aW9uYWxfc3RvcmFnZV9iYXNlSWZMYjBFRUUAAAAAqG0AAPwRAABOU3QzX18yMjRfX29wdGlvbmFsX2Rlc3RydWN0X2Jhc2VJZkxiMUVFRQAAAKhtAAAwEgAATlN0M19fMjE4X19zZmluYWVfY3Rvcl9iYXNlSUxiMUVMYjFFRUUAAKhtAABgEgAATlN0M19fMjIwX19zZmluYWVfYXNzaWduX2Jhc2VJTGIxRUxiMUVFRQAAAACIbgAAnBIAAAAAAABsEAAAUE5TdDNfXzI2dmVjdG9ySWZOU185YWxsb2NhdG9ySWZFRUVFAAAAAIhuAADUEgAAAQAAAGwQAABQS05TdDNfXzI2dmVjdG9ySWZOU185YWxsb2NhdG9ySWZFRUVFAHBwAHYAdnAAAACMEgAAcHAAAJRsAACMEgAAPG0AAHZwcGQAAAAAlGwAAIwSAAAYbQAAPG0AAHZwcHBkAAAAGG0AAMQSAABwcHAATBMAADxtAACobQAAVBMAAE4xMGVtc2NyaXB0ZW4zdmFsRQAAnBAAAGwQAAAYbQAAcHBwcAAAAAAAAAAArGwAAGwQAAAYbQAAPG0AAGlwcHBkAAAALG4AAMATAAAAAAAAAwAAANgTAAAAAAAAKBIAAAAAAABYEgAAAAAAAE5TdDNfXzI4b3B0aW9uYWxJaEVFAAAAANBtAADkEwAAFBQAAE5TdDNfXzIyN19fb3B0aW9uYWxfbW92ZV9hc3NpZ25fYmFzZUloTGIxRUVFAAAAANBtAAAgFAAAUBQAAE5TdDNfXzIyN19fb3B0aW9uYWxfY29weV9hc3NpZ25fYmFzZUloTGIxRUVFAAAAANBtAABcFAAAhBQAAE5TdDNfXzIyMF9fb3B0aW9uYWxfbW92ZV9iYXNlSWhMYjFFRUUAAADQbQAAkBQAALgUAABOU3QzX18yMjBfX29wdGlvbmFsX2NvcHlfYmFzZUloTGIxRUVFAAAA0G0AAMQUAADwFAAATlN0M19fMjIzX19vcHRpb25hbF9zdG9yYWdlX2Jhc2VJaExiMEVFRQAAAACobQAA+BQAAE5TdDNfXzIyNF9fb3B0aW9uYWxfZGVzdHJ1Y3RfYmFzZUloTGIxRUVFAAAAqG0AACwVAABOU3QzX18yNnZlY3RvckloTlNfOWFsbG9jYXRvckloRUVFRQCIbgAAYBUAAAAAAAAkFQAAUE5TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAAAAAIhuAACYFQAAAQAAACQVAABQS05TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAHBwAHZwAFAVAABwcAAAlGwAAFAVAADEbAAAdnBwaQAAAACUbAAAUBUAABhtAADEbAAAdnBwcGkAAAAYbQAAiBUAAHBwcABMEwAAxGwAAJgTAAAkFQAAGG0AAHBwcHAAAAAArGwAACQVAAAYbQAAxGwAAGlwcHBpAHAAdnAAaXBwAHZwcGkAaXBwAHZwcGkAcHBwAHZwcHAAAABcbQAAYBYAAE4zc3B6MTZDb29yZGluYXRlU3lzdGVtRQBwAHZwAGlwcAB2cHBpAAAAAAAAAwAAAAgAAAAPAAAAqG0AAKAWAABOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQAAqG0AAOgWAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAAqG0AADAXAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRHNOU18xMWNoYXJfdHJhaXRzSURzRUVOU185YWxsb2NhdG9ySURzRUVFRQAAAKhtAAB8FwAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFjaGFyX3RyYWl0c0lEaUVFTlNfOWFsbG9jYXRvcklEaUVFRUUAAACobQAAyBcAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQAAqG0AAPAXAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lhRUUAAKhtAAAYGAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaEVFAACobQAAQBgAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQAAqG0AAGgYAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUAAKhtAACQGAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaUVFAACobQAAuBgAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQAAqG0AAOAYAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lsRUUAAKhtAAAIGQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbUVFAACobQAAMBkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXhFRQAAqG0AAFgZAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l5RUUAAKhtAACAGQAATjEwZW1zY3Jp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AAAJqAAACAQAAAiEAAAIRAAACegAEAcIAAAIXAAACBwAAAmYABQHUwAACHwAAAg8AAAJ2AASBxcAAAhsAAAILAAACbgAAAgMAAAIjAAACEwAAAn4ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcQAEQcLAAAIYgAACCIAAAmkAAAIAgAACIIAAAhCAAAJ5AAQBwcAAAhaAAAIGgAACZQAFAdDAAAIegAACDoAAAnUABIHEwAACGoAAAgqAAAJtAAACAoAAAiKAAAISgAACfQAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzAARBw8AAAhmAAAIJgAACawAAAgGAAAIhgAACEYAAAnsABAHCQAACF4AAAgeAAAJnAAUB2MAAAh+AAAIPgAACdwAEgcbAAAIbgAACC4AAAm8AAAIDgAACI4AAAhOAAAJ/ABgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnCABAHCgAACGEAAAghAAAJogAACAEAAAiBAAAIQQAACeIAEAcGAAAIWQAACBkAAAmSABMHOwAACHkAAAg5AAAJ0gARBxEAAAhpAAAIKQAACbIAAAgJAAAIiQAACEkAAAnyABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcoAEQcNAAAIZQAACCUAAAmqAAAIBQAACIUAAAhFAAAJ6gAQBwgAAAhdAAAIHQAACZoAFAdTAAAIfQAACD0AAAnaABIHFwAACG0AAAgtAAAJugAACA0AAAiNAAAITQAACfoAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxgARBwsAAAhjAAAIIwAACaYAAAgDAAAIgwAACEMAAAnmABAHBwAACFsAAAgbAAAJlgAUB0MAAAh7AAAIOwAACdYAEgcTAAAIawAACCsAAAm2AAAICwAACIsAAAhLAAAJ9gAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnOABEHDwAACGcAAAgnAAAJrgAACAcAAAiHAAAIRwAACe4AEAcJAAAIXwAACB8AAAmeABQHYwAACH8AAAg/AAAJ3gASBxsAAAhvAAAILwAACb4AAAgPAAAIjwAACE8AAAn+AGAHAAAACFAAAAgQABQIcwASBx8AAAhwAAAIMAAACcEAEAcKAAAIYAAACCAAAAmhAAAIAAAACIAAAAhAAAAJ4QAQBwYAAAhYAAAIGAAACZEAEwc7AAAIeAAACDgAAAnRABEHEQAACGgAAAgoAAAJsQAACAgAAAiIAAAISAAACfEAEAcEAAAIVAAACBQAFQjjABMHKwAACHQAAAg0AAAJyQARBw0AAAhkAAAIJAAACakAAAgEAAAIhAAACEQAAAnpABAHCAAACFwAAAgcAAAJmQAUB1MAAAh8AAAIPAAACdkAEgcXAAAIbAAACCwAAAm5AAAIDAAACIwAAAhMAAAJ+QAQBwMAAAhSAAAIEgAVCKMAEwcjAAAIcgAACDIAAAnFABEHCwAACGIAAAgiAAAJpQAACAIAAAiCAAAIQgAACeUAEAcHAAAIWgAACBoAAAmVABQHQwAACHoAAAg6AAAJ1QASBxMAAAhqAAAIKgAACbUAAAgKAAAIigAACEoAAAn1ABAHBQAACFYAAAgWAEAIAAATBzMAAAh2AAAINgAACc0AEQcPAAAIZgAACCYAAAmtAAAIBgAACIYAAAhGAAAJ7QAQBwkAAAheAAAIHgAACZ0AFAdjAAAIfgAACD4AAAndABIHGwAACG4AAAguAAAJvQAACA4AAAiOAAAITgAACf0AYAcAAAAIUQAACBEAFQiDABIHHwAACHEAAAgxAAAJwwAQBwoAAAhhAAAIIQAACaMAAAgBAAAIgQAACEEAAAnjABAHBgAACFkAAAgZAAAJkwATBzsAAAh5AAAIOQAACdMAEQcRAAAIaQAACCkAAAmzAAAICQAACIkAAAhJAAAJ8wAQBwQAAAhVAAAIFQAQCAIBEwcrAAAIdQAACDUAAAnLABEHDQAACGUAAAglAAAJqwAACAUAAAiFAAAIRQAACesAEAcIAAAIXQAACB0AAAmbABQHUwAACH0AAAg9AAAJ2wASBxcAAAhtAAAILQAACbsAAAgNAAAIjQAACE0AAAn7ABAHAwAACFMAAAgTABUIwwATByMAAAhzAAAIMwAACccAEQcLAAAIYwAACCMAAAmnAAAIAwAACIMAAAhDAAAJ5wAQBwcAAAhbAAAIGwAACZcAFAdDAAAIewAACDsAAAnXABIHEwAACGsAAAgrAAAJtwAACAsAAAiLAAAISwAACfcAEAcFAAAIVwAACBcAQAgAABMHMwAACHcAAAg3AAAJzwARBw8AAAhnAAAIJwAACa8AAAgH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Y05TXzExY2hhcl90cmFpdHNJY0VFRUUA0G0AAHg9AAAAPAAATlN0M19fMjE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAAABAAAAAAAAAAKw+AABZAAAAWgAAADgAAAD4////rD4AAFsAAABcAAAAwP///8D///+sPgAAXQAAAF4AAADIPQAALD4AAGg+AAB8PgAAkD4AAKQ+AABUPgAAQD4AAPA9AADcPQAAQAAAAAAAAAAcPQAATAAAAE0AAAA4AAAA+P///xw9AABOAAAATwAAAMD////A////HD0AAFAAAABRAAAAQAAAAAAAAAA8PAAARAAAAEUAAADA////wP///zw8AABGAAAARwAAADgAAAAAAAAAhDwAAEgAAABJAAAAyP///8j///+EPAAASgAAAEsAAADQbQAAuD4AABw9AABOU3QzX18yMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQAAAAAAAAAAED8AAF8AAABgAAAAqG0AABg/AABOU3QzX18yOGlvc19iYXNlRQAAAAAAAADRdJ4AV529KoBwUg///z4nCgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QUYAAAANQAAAHEAAABr////zvv//5K///8AAAAAAAAAAP////////////////////////////////////////////////////////////////8AAQIDBAUGBwgJ/////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAECBAcDBgUAAAAAAAAAAgAAwAMAAMAEAADABQAAwAYAAMAHAADACAAAwAkAAMAKAADACwAAwAwAAMANAADADgAAwA8AAMAQAADAEQAAwBIAAMATAADA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")),ne((await W(Ee)).instance))}();function r9(){function oe(){var ne;if(i.calledRun=!0,!_){if(w=!0,Nx.G(),C?.(i),(ne=i.onRuntimeInitialized)==null||ne.call(i),i.postRun)for(typeof i.postRun=="function"&&(i.postRun=[i.postRun]);i.postRun.length;){var Ee=i.postRun.shift();Y.push(Ee)}Z(Y)}}if(0<O)k=r9;else{if(i.preRun)for(typeof i.preRun=="function"&&(i.preRun=[i.preRun]);i.preRun.length;)X();Z($),0<O?k=r9:i.setStatus?(i.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>i.setStatus(""),1),oe()},1)):oe()}}if(i.preInit)for(typeof i.preInit=="function"&&(i.preInit=[i.preInit]);0<i.preInit.length;)i.preInit.shift()();return r9(),w?n=i:n=new Promise((oe,ne)=>{C=oe,E=ne}),n}var Bb=(e,t,n=i=>i)=>{let i=e.vf32_ptr(t),o=t.size();return new Float32Array(e.HEAPF32.buffer,i,o).map(n)},lGe=e=>1/(1+Math.exp(-e)),uGe=e=>t=>t*e+.5,fGe=(e,t,n)=>{let i=n?.colorScaleFactor??.282;return{numPoints:t.numPoints,shDegree:t.shDegree,antialiased:t.antialiased,positions:Bb(e,t.positions),scales:Bb(e,t.scales,Math.exp),rotations:Bb(e,t.rotations),alphas:Bb(e,t.alphas,lGe),colors:Bb(e,t.colors,uGe(i)),sh:Bb(e,t.sh)}},dGe=(e,t)=>{e._free(e.vf32_ptr(t.positions)),e._free(e.vf32_ptr(t.scales)),e._free(e.vf32_ptr(t.rotations)),e._free(e.vf32_ptr(t.alphas)),e._free(e.vf32_ptr(t.colors)),e._free(e.vf32_ptr(t.sh))},Wae=async(e,t)=>{var n;let i=await cGe(),o=e instanceof Uint8Array?e:new Uint8Array(e),r=null;try{if(r=i._malloc(Uint8Array.BYTES_PER_ELEMENT*o.length),r===null)throw new Error("couldn't allocate memory");i.HEAPU8.set(o,r/Uint8Array.BYTES_PER_ELEMENT);let s=i.CoordinateSystem[((n=t?.unpackOptions)==null?void 0:n.coordinateSystem)??"UNSPECIFIED"],a=i.load_spz(r,o.length,{coordinateSystem:s}),c=fGe(i,a,t);return dGe(i,a),c}catch(s){throw s}finally{r!==null&&i._free(r)}};var hGe=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));function J_(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.primitive,o=e.spz,r=e.gltfResource,s=e.baseResource,a=e.cacheKey;this._resourceCache=t,this._gltfResource=r,this._baseResource=s,this._gltf=n,this._primitive=i,this._spz=o,this._cacheKey=a,this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodePromise=void 0,this._decodedData=void 0,this._state=dt.UNLOADED,this._promise=void 0,this._spzError=void 0}l(Object.create)&&(J_.prototype=Object.create(Hi.prototype),J_.prototype.constructor=J_);Object.defineProperties(J_.prototype,{cacheKey:{get:function(){return this._cacheKey}},decodedData:{get:function(){return this._decodedData}}});async function mGe(e){let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:0,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._bufferViewTypedArray=n.typedArray,e._state=dt.PROCESSING,e)}catch(n){if(e.isDestroyed())return;jae(e,n)}}J_.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=mGe(this),this._promise)};function jae(e,t){throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load SPZ",t)}async function AGe(e,t){try{let n=await t;return e.isDestroyed()?void 0:(e.unload(),e._decodedData={gcloud:n},e._state=dt.READY,e._baseResource)}catch(n){if(e.isDestroyed())return;e._spzError=n}}J_.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.PROCESSING||(l(this._spzError)&&jae(this,this._spzError),!l(this._bufferViewTypedArray))||l(this._decodePromise))return!1;let t=Wae(this._bufferViewTypedArray,{unpackOptions:{coordinateSystem:"UNSPECIFIED"}});if(!l(t))return!1;this._decodePromise=AGe(this,t)};J_.prototype.unload=function(){l(this._bufferViewLoader)&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodedData=void 0,this._gltf=void 0,this._primitive=void 0};var dM=J_;function hM(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.properties??{},i={};for(let o in n)if(n.hasOwnProperty(o)){let r=n[o];l(r.semantic)&&(i[r.semantic]=r)}this._id=t,this._name=e.name,this._description=e.description,this._properties=n,this._propertiesBySemantic=i,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}hM.fromJson=function(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.class,i={};for(let o in n.properties)if(n.properties.hasOwnProperty(o)){let r=Ym.fromJson({id:o,property:n.properties[o],enums:e.enums});i[o]=r}return new hM({id:t,name:n.name,description:n.description,properties:i,extras:n.extras,extensions:n.extensions})};Object.defineProperties(hM.prototype,{properties:{get:function(){return this._properties}},propertiesBySemantic:{get:function(){return this._propertiesBySemantic}},id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});hM.BATCH_TABLE_CLASS_NAME="_batchTable";var Th=hM;function Sz(e){e=e??V.EMPTY_OBJECT;let t=e.value,n=e.name;this._value=t,this._name=n,this._description=e.description,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}Sz.fromJson=function(e){return new Sz({value:e.value,name:e.name,description:e.description,extras:e.extras,extensions:e.extensions})};Object.defineProperties(Sz.prototype,{value:{get:function(){return this._value}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var mM=Sz;function wz(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.values,i={},o={},r=n.length;for(let a=0;a<r;++a){let c=n[a];i[c.value]=c.name,o[c.name]=c.value}let s=e.valueType??Gt.UINT16;this._values=n,this._namesByValue=i,this._valuesByName=o,this._valueType=s,this._id=t,this._name=e.name,this._description=e.description,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}wz.fromJson=function(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.enum,i=n.values.map(function(o){return mM.fromJson(o)});return new wz({id:t,values:i,valueType:Gt[n.valueType],name:n.name,description:n.description,extras:n.extras,extensions:n.extensions})};Object.defineProperties(wz.prototype,{values:{get:function(){return this._values}},namesByValue:{get:function(){return this._namesByValue}},valuesByName:{get:function(){return this._valuesByName}},valueType:{get:function(){return this._valueType}},id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var AM=wz;function Bz(e){e=e??V.EMPTY_OBJECT;let t=e.classes??{},n=e.enums??{};this._classes=t,this._enums=n,this._id=e.id,this._name=e.name,this._description=e.description,this._version=e.version,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}Bz.fromJson=function(e){let t={};if(l(e.enums))for(let i in e.enums)e.enums.hasOwnProperty(i)&&(t[i]=AM.fromJson({id:i,enum:e.enums[i]}));let n={};if(l(e.classes))for(let i in e.classes)e.classes.hasOwnProperty(i)&&(n[i]=Th.fromJson({id:i,class:e.classes[i],enums:t}));return new Bz({id:e.id,name:e.name,description:e.description,version:e.version,classes:n,enums:t,extras:e.extras,extensions:e.extensions})};Object.defineProperties(Bz.prototype,{classes:{get:function(){return this._classes}},enums:{get:function(){return this._enums}},id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},version:{get:function(){return this._version}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var qu=Bz;function jE(e){e=e??V.EMPTY_OBJECT;let t=e.schema,n=e.resource,i=e.cacheKey;this._schema=l(t)?qu.fromJson(t):void 0,this._resource=n,this._cacheKey=i,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(jE.prototype=Object.create(Hi.prototype),jE.prototype.constructor=jE);Object.defineProperties(jE.prototype,{cacheKey:{get:function(){return this._cacheKey}},schema:{get:function(){return this._schema}}});jE.prototype.load=async function(){return l(this._promise)?this._promise:l(this._schema)?(this._promise=Promise.resolve(this),this._promise):(this._promise=pGe(this),this._promise)};async function pGe(e){let t=e._resource;e._state=dt.LOADING;try{let n=await t.fetchJson();return e.isDestroyed()?void 0:(e._schema=qu.fromJson(n),e._state=dt.READY,e)}catch(n){if(e.isDestroyed())return;e._state=dt.FAILED;let i=`Failed to load schema: ${t.url}`;throw e.getError(i,n)}}jE.prototype.unload=function(){this._schema=void 0};var Db=jE;var sd={};function vb(e){return vm(e.url)}function pM(e){let{byteOffset:t,byteLength:n}=e;if(Ei(e,"EXT_meshopt_compression")){let i=e.extensions.EXT_meshopt_compression;t=i.byteOffset??0,n=i.byteLength}return`${t}-${t+n}`}function gGe(e,t){let n=t.byteOffset+e.byteOffset,{componentType:i,type:o,count:r}=e;return`${n}-${i}-${o}-${r}`}function Yae(e,t){return`${vb(e)}-buffer-id-${t}`}function Pb(e,t,n,i){if(l(e.uri)){let o=i.getDerivedResource({url:e.uri});return vb(o)}return Yae(n,t)}function ej(e,t,n,i){let o=t.bufferView,r=e.bufferViews[o],s=r.buffer,a=e.buffers[s],c=Pb(a,s,n,i),u=pM(r);return`${c}-range-${u}`}function qae(e,t,n,i){let r=e.bufferViews[0],s=r.buffer,a=e.buffers[s],c=Pb(a,s,n,i),u=pM(r);return`${c}-range-${u}`}function Kae(e,t,n,i){let o=e.images[t],r=o.bufferView,s=o.uri;if(l(s)){let A=i.getDerivedResource({url:s});return vb(A)}let a=e.bufferViews[r],c=a.buffer,u=e.buffers[c],f=Pb(u,c,n,i),h=pM(a);return`${f}-range-${h}`}function _Ge(e,t){let n=au.createSampler({gltf:e,textureInfo:t});return`${n.wrapS}-${n.wrapT}-${n.minificationFilter}-${n.magnificationFilter}`}sd.getSchemaCacheKey=function(e){let{schema:t,resource:n}=e;return l(t)?`embedded-schema:${JSON.stringify(t)}`:`external-schema:${vb(n)}`};sd.getExternalBufferCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{resource:t}=e;return`external-buffer:${vb(t)}`};sd.getEmbeddedBufferCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{parentResource:t,bufferId:n}=e;return`embedded-buffer:${Yae(t,n)}`};sd.getGltfCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltfResource:t}=e;return`gltf:${vb(t)}`};sd.getBufferViewCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,bufferViewId:n,gltfResource:i,baseResource:o}=e,r=t.bufferViews[n],s=r.buffer,a=t.buffers[s];Ei(r,"EXT_meshopt_compression")&&(s=r.extensions.EXT_meshopt_compression.buffer);let c=Pb(a,s,i,o),u=pM(r);return`buffer-view:${c}-range-${u}`};sd.getDracoCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,draco:n,gltfResource:i,baseResource:o}=e;return`draco:${ej(t,n,i,o)}`};sd.getSpzCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,primitive:n,gltfResource:i,baseResource:o}=e;return`spz:${qae(t,n,i,o)}`};sd.getVertexBufferCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,gltfResource:n,baseResource:i,frameState:o,bufferViewId:r,draco:s,spz:a,attributeSemantic:c,dequantize:u=!1,loadBuffer:f=!1,loadTypedArray:h=!1}=e,A="";if(u&&(A+="-dequantize"),f&&(A+="-buffer",A+=`-context-${o.context.id}`),h&&(A+="-typed-array"),l(s))return`vertex-buffer:${ej(t,s,n,i)}-draco-${c}${A}`;if(a)return`vertex-buffer:${qae(t,a,n,i)}-spz-${c}${A}`;let g=t.bufferViews[r],m=g.buffer,_=t.buffers[m],y=Pb(_,m,n,i),C=pM(g);return`vertex-buffer:${y}-range-${C}${A}`};sd.getIndexBufferCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,accessorId:n,gltfResource:i,baseResource:o,frameState:r,draco:s,loadBuffer:a=!1,loadTypedArray:c=!1}=e,u="";if(a&&(u+="-buffer",u+=`-context-${r.context.id}`),c&&(u+="-typed-array"),l(s))return`index-buffer:${ej(t,s,i,o)}-draco${u}`;let f=t.accessors[n],h=f.bufferView,A=t.bufferViews[h],g=A.buffer,m=t.buffers[g],_=Pb(m,g,i,o),y=gGe(f,A);return`index-buffer:${_}-accessor-${y}${u}`};sd.getImageCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,imageId:n,gltfResource:i,baseResource:o}=e;return`image:${Kae(t,n,i,o)}`};sd.getTextureCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s}=e,a=n.index,c=au.getImageIdFromTexture({gltf:t,textureId:a,supportedImageFormats:r}),u=Kae(t,c,i,o),f=_Ge(t,n);return`texture:${u}-sampler-${f}-context-${s.context.id}`};var xl=sd;function gM(){this.geometryByteLength=0,this.texturesByteLength=0,this._geometrySizes={},this._textureSizes={}}gM.prototype.clear=function(){this.geometryByteLength=0,this.texturesByteLength=0,this._geometrySizes={},this._textureSizes={}};gM.prototype.addGeometryLoader=function(e){let t=e.cacheKey;if(this._geometrySizes.hasOwnProperty(t))return;this._geometrySizes[t]=0;let n=e.buffer,i=e.typedArray,o=0;l(n)&&(o+=n.sizeInBytes),l(i)&&(o+=i.byteLength),this.geometryByteLength+=o,this._geometrySizes[t]=o};gM.prototype.addTextureLoader=function(e){let t=e.cacheKey;if(this._textureSizes.hasOwnProperty(t))return;this._textureSizes[t]=0;let n=e.texture.sizeInBytes;this.texturesByteLength+=e.texture.sizeInBytes,this._textureSizes[t]=n};gM.prototype.removeLoader=function(e){let t=e.cacheKey,n=this._geometrySizes[t];delete this._geometrySizes[t],l(n)&&(this.geometryByteLength-=n);let i=this._textureSizes[t];delete this._textureSizes[t],l(i)&&(this.texturesByteLength-=i)};var _M=gM;function Nn(){}Nn.cacheEntries={};Nn.statistics=new _M;function yGe(e){this.referenceCount=1,this.resourceLoader=e,this._statisticsPromise=void 0}Nn.get=function(e){let t=Nn.cacheEntries[e];if(l(t))return++t.referenceCount,t.resourceLoader};Nn.add=function(e){let t=e.cacheKey;return Nn.cacheEntries[t]=new yGe(e),e};Nn.unload=function(e){let t=e.cacheKey,n=Nn.cacheEntries[t];--n.referenceCount,n.referenceCount===0&&(Nn.statistics.removeLoader(e),e.destroy(),delete Nn.cacheEntries[t])};Nn.getSchemaLoader=function(e){e=e??V.EMPTY_OBJECT;let{schema:t,resource:n}=e,i=xl.getSchemaCacheKey({schema:t,resource:n}),o=Nn.get(i);return l(o)?o:(o=new Db({schema:t,resource:n,cacheKey:i}),Nn.add(o))};Nn.getEmbeddedBufferLoader=function(e){e=e??V.EMPTY_OBJECT;let{parentResource:t,bufferId:n,typedArray:i}=e,o=xl.getEmbeddedBufferCacheKey({parentResource:t,bufferId:n}),r=Nn.get(o);return l(r)?r:(r=new FE({typedArray:i,cacheKey:o}),Nn.add(r))};Nn.getExternalBufferLoader=function(e){e=e??V.EMPTY_OBJECT;let{resource:t}=e,n=xl.getExternalBufferCacheKey({resource:t}),i=Nn.get(n);return l(i)?i:(i=new FE({resource:t,cacheKey:n}),Nn.add(i))};Nn.getGltfJsonLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltfResource:t,baseResource:n,typedArray:i,gltfJson:o}=e,r=xl.getGltfCacheKey({gltfResource:t}),s=Nn.get(r);return l(s)?s:(s=new Tb({resourceCache:Nn,gltfResource:t,baseResource:n,typedArray:i,gltfJson:o,cacheKey:r}),Nn.add(s))};Nn.getBufferViewLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,bufferViewId:n,gltfResource:i,baseResource:o}=e,r=xl.getBufferViewCacheKey({gltf:t,bufferViewId:n,gltfResource:i,baseResource:o}),s=Nn.get(r);return l(s)?s:(s=new Cb({resourceCache:Nn,gltf:t,bufferViewId:n,gltfResource:i,baseResource:o,cacheKey:r}),Nn.add(s))};Nn.getDracoLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,primitive:n,draco:i,gltfResource:o,baseResource:r}=e,s=xl.getDracoCacheKey({gltf:t,draco:i,gltfResource:o,baseResource:r}),a=Nn.get(s);return l(a)?a:(a=new Eb({resourceCache:Nn,gltf:t,primitive:n,draco:i,gltfResource:o,baseResource:r,cacheKey:s}),Nn.add(a))};Nn.getSpzLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,primitive:n,spz:i,gltfResource:o,baseResource:r}=e,s=xl.getSpzCacheKey({gltf:t,primitive:n,gltfResource:o,baseResource:r}),a=Nn.get(s);return l(a)?a:(a=new dM({resourceCache:Nn,gltf:t,primitive:n,spz:i,gltfResource:o,baseResource:r,cacheKey:s}),Nn.add(a))};Nn.getVertexBufferLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,gltfResource:n,baseResource:i,frameState:o,bufferViewId:r,primitive:s,draco:a,spz:c,attributeSemantic:u,accessorId:f,asynchronous:h=!0,dequantize:A=!1,loadBuffer:g=!1,loadTypedArray:m=!1}=e,_=xl.getVertexBufferCacheKey({gltf:t,gltfResource:n,baseResource:i,frameState:o,bufferViewId:r,draco:a,spz:c,attributeSemantic:u,dequantize:A,loadBuffer:g,loadTypedArray:m}),y=Nn.get(_);return l(y)?y:(y=new wb({resourceCache:Nn,gltf:t,gltfResource:n,baseResource:i,bufferViewId:r,primitive:s,draco:a,spz:c,attributeSemantic:u,accessorId:f,cacheKey:_,asynchronous:h,dequantize:A,loadBuffer:g,loadTypedArray:m}),Nn.add(y))};Nn.getIndexBufferLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,accessorId:n,gltfResource:i,baseResource:o,frameState:r,primitive:s,draco:a,asynchronous:c=!0,loadBuffer:u=!1,loadTypedArray:f=!1}=e,h=xl.getIndexBufferCacheKey({gltf:t,accessorId:n,gltfResource:i,baseResource:o,frameState:r,draco:a,loadBuffer:u,loadTypedArray:f}),A=Nn.get(h);return l(A)?A:(A=new xb({resourceCache:Nn,gltf:t,accessorId:n,gltfResource:i,baseResource:o,primitive:s,draco:a,cacheKey:h,asynchronous:c,loadBuffer:u,loadTypedArray:f}),Nn.add(A))};Nn.getImageLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,imageId:n,gltfResource:i,baseResource:o}=e,r=xl.getImageCacheKey({gltf:t,imageId:n,gltfResource:i,baseResource:o}),s=Nn.get(r);return l(s)?s:(s=new Ib({resourceCache:Nn,gltf:t,imageId:n,gltfResource:i,baseResource:o,cacheKey:r}),Nn.add(s))};Nn.getTextureLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s,asynchronous:a=!0}=e,c=xl.getTextureCacheKey({gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s}),u=Nn.get(c);return l(u)?u:(u=new Sb({resourceCache:Nn,gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,cacheKey:c,asynchronous:a}),Nn.add(u))};Nn.clearForSpecs=function(){let e=[wb,xb,Eb,Sb,Ib,Cb,FE,Db,Tb],t,n=Nn.cacheEntries,i=[];for(t in n)n.hasOwnProperty(t)&&i.push(n[t]);i.sort(function(r,s){let a=e.indexOf(r.resourceLoader.constructor),c=e.indexOf(s.resourceLoader.constructor);return a-c});let o=i.length;for(let r=0;r<o;++r){let s=i[r];t=s.resourceLoader.cacheKey,l(n[t])&&(s.resourceLoader.destroy(),delete n[t])}Nn.statistics.clear()};var Fi=Nn;function Ga(e,t,n){this._resource=e,this._subtreeJson=void 0,this._bufferLoader=void 0,this._tileAvailability=void 0,this._contentAvailabilityBitstreams=[],this._childSubtreeAvailability=void 0,this._implicitCoordinates=n,this._subtreeLevels=t.subtreeLevels,this._subdivisionScheme=t.subdivisionScheme,this._branchingFactor=t.branchingFactor,this._metadata=void 0,this._tileMetadataTable=void 0,this._tilePropertyTableJson=void 0,this._contentMetadataTables=[],this._contentPropertyTableJsons=[],this._tileJumpBuffer=void 0,this._contentJumpBuffers=[],this._ready=!1}Object.defineProperties(Ga.prototype,{ready:{get:function(){return this._ready}},metadata:{get:function(){return this._metadata}},tileMetadataTable:{get:function(){return this._tileMetadataTable}},tilePropertyTableJson:{get:function(){return this._tilePropertyTableJson}},contentMetadataTables:{get:function(){return this._contentMetadataTables}},contentPropertyTableJsons:{get:function(){return this._contentPropertyTableJsons}},implicitCoordinates:{get:function(){return this._implicitCoordinates}}});Ga.prototype.tileIsAvailableAtIndex=function(e){return this._tileAvailability.getBit(e)};Ga.prototype.tileIsAvailableAtCoordinates=function(e){let t=this.getTileIndex(e);return this.tileIsAvailableAtIndex(t)};Ga.prototype.contentIsAvailableAtIndex=function(e,t){return t=t??0,this._contentAvailabilityBitstreams[t].getBit(e)};Ga.prototype.contentIsAvailableAtCoordinates=function(e,t){let n=this.getTileIndex(e);return this.contentIsAvailableAtIndex(n,t)};Ga.prototype.childSubtreeIsAvailableAtIndex=function(e){return this._childSubtreeAvailability.getBit(e)};Ga.prototype.childSubtreeIsAvailableAtCoordinates=function(e){let t=this.getChildSubtreeIndex(e);return this.childSubtreeIsAvailableAtIndex(t)};Ga.prototype.getLevelOffset=function(e){let t=this._branchingFactor;return(Math.pow(t,e)-1)/(t-1)};Ga.prototype.getParentMortonIndex=function(e){let t=2;return this._subdivisionScheme===Is.OCTREE&&(t=3),e>>t};Ga.fromSubtreeJson=async function(e,t,n,i,o){let r=new Ga(e,i,o),s;l(t)?s={json:t,binary:void 0}:s=CGe(n);let a=s.json;r._subtreeJson=a;let c;if(Ei(a,"3DTILES_metadata"))c=a.extensions["3DTILES_metadata"];else if(l(a.tileMetadata)){let E=a.tileMetadata;c=a.propertyTables[E]}let u=[];if(l(a.contentMetadata)){let E=a.contentMetadata.length;for(let I=0;I<E;I++){let b=a.contentMetadata[I];u.push(a.propertyTables[b])}}let f,h=i.metadataSchema,A=a.subtreeMetadata;if(l(A)){let E=A.class,I=h.classes[E];f=new HR({subtreeMetadata:A,class:I})}r._metadata=f,r._tilePropertyTableJson=c,r._contentPropertyTableJsons=u;let g={constant:0};a.contentAvailabilityHeaders=[],Ei(a,"3DTILES_multiple_contents")?a.contentAvailabilityHeaders=a.extensions["3DTILES_multiple_contents"].contentAvailability:Array.isArray(a.contentAvailability)?a.contentAvailabilityHeaders=a.contentAvailability:a.contentAvailabilityHeaders.push(a.contentAvailability??g);let m=EGe(a.buffers),_=IGe(a.bufferViews,m);xGe(a,_),l(c)&&Xae(c,_);for(let E=0;E<u.length;E++){let I=u[E];Xae(I,_)}let y=await bGe(r,m,s.binary),C=SGe(_,y);return wGe(r,a,i,C),l(c)&&(BGe(r,i,C),vGe(r)),DGe(r,i,C),PGe(r),r._ready=!0,r};function CGe(e){let n=new DataView(e.buffer,e.byteOffset),i=8,o=n.getUint32(i,!0);i+=8;let r=n.getUint32(i,!0);i+=8;let s=dr(e,i,o);i+=o;let a=e.subarray(i,i+r);return{json:s,binary:a}}function EGe(e){e=l(e)?e:[];for(let t=0;t<e.length;t++){let n=e[t];n.isExternal=l(n.uri),n.isActive=!1}return e}function IGe(e,t){e=l(e)?e:[];for(let n=0;n<e.length;n++){let i=e[n],o=t[i.buffer];i.bufferHeader=o,i.isActive=!1}return e}function xGe(e,t){let n,i=e.tileAvailability;l(i.bitstream)?n=t[i.bitstream]:l(i.bufferView)&&(n=t[i.bufferView]),l(n)&&(n.isActive=!0,n.bufferHeader.isActive=!0);let o=e.contentAvailabilityHeaders;for(let s=0;s<o.length;s++)n=void 0,l(o[s].bitstream)?n=t[o[s].bitstream]:l(o[s].bufferView)&&(n=t[o[s].bufferView]),l(n)&&(n.isActive=!0,n.bufferHeader.isActive=!0);n=void 0;let r=e.childSubtreeAvailability;l(r.bitstream)?n=t[r.bitstream]:l(r.bufferView)&&(n=t[r.bufferView]),l(n)&&(n.isActive=!0,n.bufferHeader.isActive=!0)}function Xae(e,t){let n=e.properties,i;for(let o in n)if(n.hasOwnProperty(o)){let r=n[o],s=r.values??r.bufferView;i=t[s],i.isActive=!0,i.bufferHeader.isActive=!0;let a=r.stringOffsets??r.stringOffsetBufferView;l(a)&&(i=t[a],i.isActive=!0,i.bufferHeader.isActive=!0);let c=r.arrayOffsets??r.arrayOffsetBufferView;l(c)&&(i=t[c],i.isActive=!0,i.bufferHeader.isActive=!0)}}function bGe(e,t,n){let i=[];for(let o=0;o<t.length;o++){let r=t[o];if(!r.isActive)i.push(Promise.resolve(void 0));else if(r.isExternal){let s=TGe(e,r);i.push(s)}else i.push(Promise.resolve(n))}return Promise.all(i).then(function(o){let r={};for(let s=0;s<o.length;s++){let a=o[s];l(a)&&(r[s]=a)}return r})}async function TGe(e,t){let i=e._resource.getDerivedResource({url:t.uri}),o=Fi.getExternalBufferLoader({resource:i});e._bufferLoader=o;try{await o.load()}catch(r){if(o.isDestroyed())return;throw r}return o.typedArray}function SGe(e,t){let n={};for(let i=0;i<e.length;i++){let o=e[i];if(!o.isActive)continue;let r=o.byteOffset,s=r+o.byteLength,c=t[o.buffer].subarray(r,s);n[i]=c}return n}function wGe(e,t,n,i){let o=n.branchingFactor,r=n.subtreeLevels,s=(Math.pow(o,r)-1)/(o-1),a=Math.pow(o,r),c=Ei(t,"3DTILES_metadata"),u=l(e._tilePropertyTableJson),f=c||u;e._tileAvailability=tj(t.tileAvailability,i,s,f);let h=e._contentPropertyTableJsons.length>0;f=f||h;for(let A=0;A<t.contentAvailabilityHeaders.length;A++){let g=tj(t.contentAvailabilityHeaders[A],i,s,f);e._contentAvailabilityBitstreams.push(g)}e._childSubtreeAvailability=tj(t.childSubtreeAvailability,i,a)}function tj(e,t,n,i){if(l(e.constant))return new _b({constant:!!e.constant,lengthBits:n,availableCount:e.availableCount});let o;return l(e.bitstream)?o=t[e.bitstream]:l(e.bufferView)&&(o=t[e.bufferView]),new _b({bitstream:o,lengthBits:n,availableCount:e.availableCount,computeAvailableCountEnabled:i})}function BGe(e,t,n){let i=e._tilePropertyTableJson,o=e._tileAvailability.availableCount,r=t.metadataSchema,s=i.class,a=r.classes[s];e._tileMetadataTable=new od({class:a,count:o,properties:i.properties,bufferViews:n})}function DGe(e,t,n){let i=e._contentPropertyTableJsons,o=e._contentAvailabilityBitstreams,r=t.metadataSchema,s=e._contentMetadataTables;for(let a=0;a<i.length;a++){let c=i[a],f=o[a].availableCount,h=c.class,A=r.classes[h],g=new od({class:A,count:f,properties:c.properties,bufferViews:n});s.push(g)}}function Jae(e){let t=0,n=e.lengthBits,i=e.availableCount,o;i<256?o=new Uint8Array(n):i<65536?o=new Uint16Array(n):o=new Uint32Array(n);for(let r=0;r<e.lengthBits;r++)e.getBit(r)&&(o[r]=t,t++);return o}function vGe(e){let t=Jae(e._tileAvailability);e._tileJumpBuffer=t}function PGe(e){let t=e._contentJumpBuffers,n=e._contentAvailabilityBitstreams;for(let i=0;i<n.length;i++){let o=n[i],r=Jae(o);t.push(r)}}Ga.prototype.getTileIndex=function(e){let t=e.level-this._implicitCoordinates.level;if(t<0||this._subtreeLevels<=t)throw new ce("level is out of bounds for this subtree");return e.getSubtreeCoordinates().getOffsetCoordinates(e).tileIndex};Ga.prototype.getChildSubtreeIndex=function(e){if(e.level-this._implicitCoordinates.level!==this._implicitCoordinates.subtreeLevels)throw new ce("level is out of bounds for this subtree");return e.getParentSubtreeCoordinates().getOffsetCoordinates(e).mortonIndex};function RGe(e,t){if(!l(e._tileMetadataTable))return;let n=e.getTileIndex(t);if(e._tileAvailability.getBit(n))return e._tileJumpBuffer[n]}function MGe(e,t,n){let i=e._contentMetadataTables;if(!l(i))return;let o=i[n];if(!l(o))return;let r=e._contentAvailabilityBitstreams[n],s=e.getTileIndex(t);if(r.getBit(s))return e._contentJumpBuffers[n][s]}Ga.prototype.getTileMetadataView=function(e){let t=RGe(this,e);if(!l(t))return;let n=this._tileMetadataTable;return new yb({class:n.class,metadataTable:n,entityId:t,propertyTableJson:this._tilePropertyTableJson})};Ga.prototype.getContentMetadataView=function(e,t){let n=MGe(this,e,t);if(!l(n))return;let i=this._contentMetadataTables[t],o=this._contentPropertyTableJsons[t];return new yb({class:i.class,metadataTable:i,entityId:n,contentIndex:t,propertyTableJson:o})};Ga.prototype.isDestroyed=function(){return!1};Ga.prototype.destroy=function(){return l(this._bufferLoader)&&Fi.unload(this._bufferLoader),ue(this)};var YE=Ga;var NGe={ID:"ID",NAME:"NAME",DESCRIPTION:"DESCRIPTION",TILESET_TILE_COUNT:"TILESET_TILE_COUNT",TILE_BOUNDING_BOX:"TILE_BOUNDING_BOX",TILE_BOUNDING_REGION:"TILE_BOUNDING_REGION",TILE_BOUNDING_SPHERE:"TILE_BOUNDING_SPHERE",TILE_MINIMUM_HEIGHT:"TILE_MINIMUM_HEIGHT",TILE_MAXIMUM_HEIGHT:"TILE_MAXIMUM_HEIGHT",TILE_HORIZON_OCCLUSION_POINT:"TILE_HORIZON_OCCLUSION_POINT",TILE_GEOMETRIC_ERROR:"TILE_GEOMETRIC_ERROR",CONTENT_BOUNDING_BOX:"CONTENT_BOUNDING_BOX",CONTENT_BOUNDING_REGION:"CONTENT_BOUNDING_REGION",CONTENT_BOUNDING_SPHERE:"CONTENT_BOUNDING_SPHERE",CONTENT_MINIMUM_HEIGHT:"CONTENT_MINIMUM_HEIGHT",CONTENT_MAXIMUM_HEIGHT:"CONTENT_MAXIMUM_HEIGHT",CONTENT_HORIZON_OCCLUSION_POINT:"CONTENT_HORIZON_OCCLUSION_POINT"},qE=Object.freeze(NGe);var Sh={};Sh.parseAllBoundingVolumeSemantics=function(e){return{tile:{boundingVolume:Sh.parseBoundingVolumeSemantic("TILE",e),minimumHeight:Sh._parseMinimumHeight("TILE",e),maximumHeight:Sh._parseMaximumHeight("TILE",e)},content:{boundingVolume:Sh.parseBoundingVolumeSemantic("CONTENT",e),minimumHeight:Sh._parseMinimumHeight("CONTENT",e),maximumHeight:Sh._parseMaximumHeight("CONTENT",e)}}};Sh.parseBoundingVolumeSemantic=function(e,t){let n=`${e}_BOUNDING_BOX`,i=t.getPropertyBySemantic(n);if(l(i))return{box:i};let o=`${e}_BOUNDING_REGION`,r=t.getPropertyBySemantic(o);if(l(r))return{region:r};let s=`${e}_BOUNDING_SPHERE`,a=t.getPropertyBySemantic(s);if(l(a))return{sphere:a}};Sh._parseMinimumHeight=function(e,t){let n=`${e}_MINIMUM_HEIGHT`;return t.getPropertyBySemantic(n)};Sh._parseMaximumHeight=function(e,t){let n=`${e}_MAXIMUM_HEIGHT`;return t.getPropertyBySemantic(n)};var KE=Sh;function bl(e,t,n){let i=t.implicitTileset,o=t.implicitCoordinates;this._implicitTileset=i,this._implicitCoordinates=o,this._implicitSubtree=void 0,this._tileset=e,this._tile=t,this._resource=n,this._metadata=void 0,this.featurePropertiesDirty=!1,this._group=void 0;let r=o.getTemplateValues(),s=i.subtreeUriTemplate.getDerivedResource({templateValues:r});this._url=s.getUrlComponent(!0),this._ready=!1}Object.defineProperties(bl.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._url}},metadata:{get:function(){},set:function(){}},batchTable:{get:function(){}},group:{get:function(){return this._group},set:function(e){this._group=e}}});bl.fromSubtreeJson=async function(e,t,n,i,o,r){r=r??0;let s;l(o)&&(s=new Uint8Array(o,r));let a=t.implicitTileset,c=t.implicitCoordinates,u=await YE.fromSubtreeJson(n,i,s,a,c),f=new bl(e,t,n);return f._implicitSubtree=u,LGe(f,u),f._ready=!0,f};function LGe(e,t){let n=e._tile,i=e._implicitCoordinates.childIndex,o=FGe(e,t,n,i),r=e._tileset.statistics;n.children.push(o.rootTile),r.numberOfTilesTotal++;let s=OGe(e,t,o.bottomRow);for(let a=0;a<s.length;a++){let c=s[a],u=c.tile,f=jGe(e,u,c.childIndex);u.children.push(f),r.numberOfTilesTotal++}}function OGe(e,t,n){let i=[],o=e._implicitTileset.branchingFactor;for(let r=0;r<n.length;r++){let s=n[r];if(l(s))for(let a=0;a<o;a++){let c=r*o+a;t.childSubtreeIsAvailableAtIndex(c)&&i.push({tile:s,childIndex:a})}}return i}function FGe(e,t,n,i){let s=Zae(e,t,n,i,0,!0),a=e._tileset.statistics,c=[s],u=[],f=e._implicitTileset;for(let h=1;h<f.subtreeLevels;h++){let A=t.getLevelOffset(h),g=f.branchingFactor*c.length;for(let m=0;m<g;m++){let _=A+m;if(!t.tileIsAvailableAtIndex(_)){u.push(void 0);continue}let y=t.getParentMortonIndex(m),C=c[y],E=m%f.branchingFactor,I=Zae(e,t,C,E,_);C.children.push(I),a.numberOfTilesTotal++,u.push(I)}c=u,u=[]}return{rootTile:s,bottomRow:c}}function $ae(e,t,n){let i=qE.TILE_GEOMETRIC_ERROR;return l(e)&&e.hasPropertyBySemantic(i)?e.getPropertyBySemantic(i):t.geometricError/Math.pow(2,n.level)}function Zae(e,t,n,i,o,r){let s=e._implicitTileset,a;r??!1?a=n.implicitCoordinates:a=n.implicitCoordinates.getChildCoordinates(i);let c,u,f;if(l(t.tilePropertyTableJson)){c=t.getTileMetadataView(a);let B=KE.parseAllBoundingVolumeSemantics(c);u=B.tile,f=B.content}let A=t.contentPropertyTableJsons.length,g=!1;for(let B=0;B<A;B++)if(t.contentIsAvailableAtCoordinates(a,B)){g=!0;break}let m=UGe(s,a,i,r,n,u),_=[];for(let B=0;B<s.contentCount;B++){if(!t.contentIsAvailableAtIndex(o,B))continue;let M={uri:s.contentUriTemplates[B].getDerivedResource({templateValues:a.getTemplateValues()}).url},L=GGe(m,f);l(L)&&(M.boundingVolume=L),_.push(Tt(M,s.contentHeaders[B]))}let y=$ae(c,s,a),C={boundingVolume:m,geometricError:y,refine:s.refine,contents:_},E=!0,I=ze(s.tileHeader,E);delete I.boundingVolume,delete I.transform,delete I.metadata;let b=Tt(C,I,E),S=oce(e,s.baseResource,b,n);return S.implicitCoordinates=a,S.implicitSubtree=t,S.metadata=c,S.hasImplicitContentMetadata=g,S}function Dz(e,t){return l(e)&&l(t)&&(l(t.minimumHeight)||l(t.maximumHeight))&&(Ei(e,"3DTILES_bounding_volume_S2")||l(e.region))}function ij(e,t){l(t)&&(Ei(e,"3DTILES_bounding_volume_S2")?kGe(e.extensions["3DTILES_bounding_volume_S2"],t.minimumHeight,t.maximumHeight):l(e.region)&&QGe(e.region,t.minimumHeight,t.maximumHeight))}function QGe(e,t,n){l(t)&&(e[4]=t),l(n)&&(e[5]=n)}function kGe(e,t,n){l(t)&&(e.minimumHeight=t),l(n)&&(e.maximumHeight=n)}function UGe(e,t,n,i,o,r){let s;return!l(r)||!l(r.boundingVolume)||!Dz(r.boundingVolume,r)&&Dz(e.boundingVolume,r)?s=ece(e,t,n,i??!1,o):s=r.boundingVolume,ij(s,r),s}function GGe(e,t){let n;return l(t)&&(n=t.boundingVolume),Dz(n,t)?ij(n,t):Dz(e,t)&&(n=ze(e,!0),ij(n,t)),n}function ece(e,t,n,i,o){let r=e.boundingVolume;return Ei(r,"3DTILES_bounding_volume_S2")?tce(i,o,n,t.level,t.x,t.y,t.z):l(r.region)?{region:ice(r.region,t.level,t.x,t.y,t.z)}:{box:nce(r.box,t.level,t.x,t.y,t.z)}}function tce(e,t,n,i,o,r,s){let a=t._boundingVolume;if(e)return{extensions:{"3DTILES_bounding_volume_S2":{token:Tp.getTokenFromId(a.s2Cell._cellId),minimumHeight:a.minimumHeight,maximumHeight:a.maximumHeight}}};let c=Number(t._boundingVolume.s2Cell._cellId>>BigInt(61)),u=c%2===0?pb.encode2D(i,o,r):pb.encode2D(i,r,o),f=Tp.fromFacePositionLevel(c,BigInt(u),i),h,A;if(l(s)){let g=(a.maximumHeight+a.minimumHeight)/2;h=n<4?a.minimumHeight:g,A=n<4?g:a.maximumHeight}else h=a.minimumHeight,A=a.maximumHeight;return{extensions:{"3DTILES_bounding_volume_S2":{token:Tp.getTokenFromId(f._cellId),minimumHeight:h,maximumHeight:A}}}}var zGe=new d,VGe=new d,nj=new d,HGe=new J;function nce(e,t,n,i,o){if(t===0)return e;let r=d.unpack(e,0,VGe),s=J.unpack(e,3,HGe),a=Math.pow(2,-t),c=-1+(2*n+1)*a,u=-1+(2*i+1)*a,f=0,h=d.fromElements(a,a,1,zGe);l(o)&&(f=-1+(2*o+1)*a,h.z=a);let A=d.fromElements(c,u,f,nj);A=J.multiplyByVector(s,A,nj),A=d.add(A,r,nj);let g=J.clone(s);g=J.multiplyByScale(g,h,g);let m=new Array(12);return d.pack(A,m),J.pack(g,m,3),m}var WGe=new ae;function ice(e,t,n,i,o){if(t===0)return e.slice();let r=ae.unpack(e,0,WGe),s=e[4],a=e[5],c=Math.pow(2,-t),u=c*r.width,f=D.negativePiToPi(r.west+n*u),h=D.negativePiToPi(f+u),A=c*r.height,g=D.negativePiToPi(r.south+i*A),m=D.negativePiToPi(g+A),_=s,y=a;if(l(o)){let C=c*(a-s);_+=o*C,y=_+C}return[f,g,h,m,_,y]}function jGe(e,t,n){let i=e._implicitTileset,o=t.implicitCoordinates.getChildCoordinates(n),r=ece(i,o,n,!1,t),s=$ae(void 0,i,o),a=i.subtreeUriTemplate.getDerivedResource({templateValues:o.getTemplateValues()}).url,c={boundingVolume:r,geometricError:s,refine:i.refine,contents:[{uri:a}]},u=oce(e,i.baseResource,c,t);return u.implicitTileset=i,u.implicitCoordinates=o,u}function oce(e,t,n,i){let o=e._tile.constructor;return new o(e._tileset,t,n,i)}bl.prototype.hasProperty=function(e,t){return!1};bl.prototype.getFeature=function(e){};bl.prototype.applyDebugSettings=function(e,t){};bl.prototype.applyStyle=function(e){};bl.prototype.update=function(e,t){};bl.prototype.pick=function(e,t,n){};bl.prototype.isDestroyed=function(){return!1};bl.prototype.destroy=function(){return this._implicitSubtree=this._implicitSubtree&&this._implicitSubtree.destroy(),ue(this)};bl._deriveBoundingBox=nce;bl._deriveBoundingRegion=ice;bl._deriveBoundingVolumeS2=tce;var Rb=bl;var YGe={NONE:0,REPEAT:1,MIRRORED_REPEAT:2},cu=Object.freeze(YGe);function Mb(e,t){this._distance=t,this._normal=new rce(e,this),this.onChangeCallback=void 0,this.index=-1}Object.defineProperties(Mb.prototype,{distance:{get:function(){return this._distance},set:function(e){l(this.onChangeCallback)&&e!==this._distance&&this.onChangeCallback(this.index),this._distance=e}},normal:{get:function(){return this._normal},set:function(e){l(this.onChangeCallback)&&!d.equals(this._normal._cartesian3,e)&&this.onChangeCallback(this.index),d.clone(e,this._normal._cartesian3)}}});Mb.fromPlane=function(e,t){return l(t)?(t.normal=e.normal,t.distance=e.distance):t=new Mb(e.normal,e.distance),t};Mb.clone=function(e,t){return l(t)?(t.normal=e.normal,t.distance=e.distance,t):new Mb(e.normal,e.distance)};function rce(e,t){this._clippingPlane=t,this._cartesian3=d.clone(e)}Object.defineProperties(rce.prototype,{x:{get:function(){return this._cartesian3.x},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.x&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.x=e}},y:{get:function(){return this._cartesian3.y},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.y&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.y=e}},z:{get:function(){return this._cartesian3.z},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.z&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.z=e}}});var XE=Mb;function Oc(e){e=e??V.EMPTY_OBJECT,this._planes=[],this._dirtyIndex=-1,this._multipleDirtyPlanes=!1,this._enabled=e.enabled??!0,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this.edgeColor=G.clone(e.edgeColor??G.WHITE),this.edgeWidth=e.edgeWidth??0,this.planeAdded=new _e,this.planeRemoved=new _e,this._owner=void 0;let t=e.unionClippingRegions??!1;this._unionClippingRegions=t,this._testIntersection=t?uce:fce,this._uint8View=void 0,this._float32View=void 0,this._clippingPlanesTexture=void 0;let n=e.planes;if(l(n)){let i=n.length;for(let o=0;o<i;++o)this.add(n[o])}}function uce(e){return e===tn.OUTSIDE}function fce(e){return e===tn.INSIDE}Object.defineProperties(Oc.prototype,{length:{get:function(){return this._planes.length}},unionClippingRegions:{get:function(){return this._unionClippingRegions},set:function(e){this._unionClippingRegions!==e&&(this._unionClippingRegions=e,this._testIntersection=e?uce:fce)}},enabled:{get:function(){return this._enabled},set:function(e){this._enabled!==e&&(this._enabled=e)}},texture:{get:function(){return this._clippingPlanesTexture}},owner:{get:function(){return this._owner}},clippingPlanesState:{get:function(){return this._unionClippingRegions?this._planes.length:-this._planes.length}}});function sce(e,t){e._multipleDirtyPlanes=e._multipleDirtyPlanes||e._dirtyIndex!==-1&&e._dirtyIndex!==t,e._dirtyIndex=t}Oc.prototype.add=function(e){let t=this._planes.length,n=this;e.onChangeCallback=function(i){sce(n,i)},e.index=t,sce(this,t),this._planes.push(e),this.planeAdded.raiseEvent(e,t)};Oc.prototype.get=function(e){return this._planes[e]};function dce(e,t){let n=e.length;for(let i=0;i<n;++i)if(mn.equals(e[i],t))return i;return-1}Oc.prototype.contains=function(e){return dce(this._planes,e)!==-1};Oc.prototype.remove=function(e){let t=this._planes,n=dce(t,e);if(n===-1)return!1;e instanceof XE&&(e.onChangeCallback=void 0,e.index=-1);let i=t.length-1;for(let o=n;o<i;++o){let r=t[o+1];t[o]=r,r instanceof XE&&(r.index=o)}return this._multipleDirtyPlanes=!0,t.length=i,this.planeRemoved.raiseEvent(e,n),!0};Oc.prototype.removeAll=function(){let e=this._planes,t=e.length;for(let n=0;n<t;++n){let i=e[n];i instanceof XE&&(i.onChangeCallback=void 0,i.index=-1),this.planeRemoved.raiseEvent(i,n)}this._multipleDirtyPlanes=!0,this._planes=[]};var qGe=new se,KGe=new se;function ace(e,t,n){let i=e._uint8View,o=e._planes,r=0;for(let s=t;s<n;++s){let a=o[s],c=On.octEncodeToCartesian4(a.normal,KGe);i[r]=c.x,i[r+1]=c.y,i[r+2]=c.z,i[r+3]=c.w;let u=se.packFloat(a.distance,qGe);i[r+4]=u.x,i[r+5]=u.y,i[r+6]=u.z,i[r+7]=u.w,r+=8}}function cce(e,t,n){let i=e._float32View,o=e._planes,r=0;for(let s=t;s<n;++s){let a=o[s],c=a.normal;i[r]=c.x,i[r+1]=c.y,i[r+2]=c.z,i[r+3]=a.distance,r+=4}}function hce(e,t){let n=Yt.maximumTextureSize;return t.x=Math.min(e,n),t.y=Math.ceil(e/t.x),t}var XGe=new U;Oc.prototype.update=function(e){let t=this._clippingPlanesTexture,n=e.context,i=Oc.useFloatTexture(n),o=i?this.length:this.length*2;if(l(t)){let s=t.width*t.height;(s<o||o<.25*s)&&(t.destroy(),t=void 0,this._clippingPlanesTexture=void 0)}if(this.length===0)return;if(!l(t)){let s=hce(o,XGe);s.y*=2,i?(t=new Mt({context:n,width:s.x,height:s.y,pixelFormat:$e.RGBA,pixelDatatype:Ve.FLOAT,sampler:on.NEAREST,flipY:!1}),this._float32View=new Float32Array(s.x*s.y*4)):(t=new Mt({context:n,width:s.x,height:s.y,pixelFormat:$e.RGBA,pixelDatatype:Ve.UNSIGNED_BYTE,sampler:on.NEAREST,flipY:!1}),this._uint8View=new Uint8Array(s.x*s.y*4)),this._clippingPlanesTexture=t,this._multipleDirtyPlanes=!0}let r=this._dirtyIndex;if(!(!this._multipleDirtyPlanes&&r===-1)){if(this._multipleDirtyPlanes)i?(cce(this,0,this._planes.length),t.copyFrom({source:{width:t.width,height:t.height,arrayBufferView:this._float32View}})):(ace(this,0,this._planes.length),t.copyFrom({source:{width:t.width,height:t.height,arrayBufferView:this._uint8View}}));else{let s=0,a=0;i?(a=Math.floor(r/t.width),s=Math.floor(r-a*t.width),cce(this,r,r+1),t.copyFrom({source:{width:1,height:1,arrayBufferView:this._float32View},xOffset:s,yOffset:a})):(a=Math.floor(r*2/t.width),s=Math.floor(r*2-a*t.width),ace(this,r,r+1),t.copyFrom({source:{width:2,height:1,arrayBufferView:this._uint8View},xOffset:s,yOffset:a}))}this._multipleDirtyPlanes=!1,this._dirtyIndex=-1}};var JGe=new N,lce=new mn(d.UNIT_X,0);Oc.prototype.computeIntersectionWithBoundingVolume=function(e,t){let n=this._planes,i=n.length,o=this.modelMatrix;l(t)&&(o=N.multiply(t,o,JGe));let r=tn.INSIDE;!this.unionClippingRegions&&i>0&&(r=tn.OUTSIDE);for(let s=0;s<i;++s){let a=n[s];mn.transform(a,o,lce);let c=e.intersectPlane(lce);if(c===tn.INTERSECTING)r=c;else if(this._testIntersection(c))return c}return r};Oc.setOwner=function(e,t,n){e!==t[n]&&(t[n]=t[n]&&t[n].destroy(),l(e)&&(e._owner=t,t[n]=e))};Oc.useFloatTexture=function(e){return e.floatingPointTexture};Oc.getTextureResolution=function(e,t,n){let i=e.texture;if(l(i))return n.x=i.width,n.y=i.height,n;let o=Oc.useFloatTexture(t)?e.length:e.length*2,r=hce(o,n);return r.y*=2,r};Oc.prototype.isDestroyed=function(){return!1};Oc.prototype.destroy=function(){return this._clippingPlanesTexture=this._clippingPlanesTexture&&this._clippingPlanesTexture.destroy(),ue(this)};var Fs=Oc;function sj(e,t,n=2){let i=t&&t.length,o=i?t[0]*n:e.length,r=Ace(e,0,o,n,!0),s=[];if(!r||r.next===r.prev)return s;let a,c,u;if(i&&(r=nze(e,t,r,n)),e.length>80*n){a=e[0],c=e[1];let f=a,h=c;for(let A=n;A<o;A+=n){let g=e[A],m=e[A+1];g<a&&(a=g),m<c&&(c=m),g>f&&(f=g),m>h&&(h=m)}u=Math.max(f-a,h-c),u=u!==0?32767/u:0}return CM(r,s,n,a,c,u,0),s}function Ace(e,t,n,i,o){let r;if(o===hze(e,t,n,i)>0)for(let s=t;s<n;s+=i)r=mce(s/i|0,e[s],e[s+1],r);else for(let s=n-i;s>=t;s-=i)r=mce(s/i|0,e[s],e[s+1],r);return r&&Nb(r,r.next)&&(IM(r),r=r.next),r}function JE(e,t){if(!e)return e;t||(t=e);let n=e,i;do if(i=!1,!n.steiner&&(Nb(n,n.next)||ns(n.prev,n,n.next)===0)){if(IM(n),n=t=n.prev,n===n.next)break;i=!0}else n=n.next;while(i||n!==t);return t}function CM(e,t,n,i,o,r,s){if(!e)return;!s&&r&&aze(e,i,o,r);let a=e;for(;e.prev!==e.next;){let c=e.prev,u=e.next;if(r?$Ge(e,i,o,r):ZGe(e)){t.push(c.i,e.i,u.i),IM(e),e=u.next,a=u.next;continue}if(e=u,e===a){s?s===1?(e=eze(JE(e),t),CM(e,t,n,i,o,r,2)):s===2&&tze(e,t,n,i,o,r):CM(JE(e),t,n,i,o,r,1);break}}}function ZGe(e){let t=e.prev,n=e,i=e.next;if(ns(t,n,i)>=0)return!1;let o=t.x,r=n.x,s=i.x,a=t.y,c=n.y,u=i.y,f=Math.min(o,r,s),h=Math.min(a,c,u),A=Math.max(o,r,s),g=Math.max(a,c,u),m=i.next;for(;m!==t;){if(m.x>=f&&m.x<=A&&m.y>=h&&m.y<=g&&yM(o,a,r,c,s,u,m.x,m.y)&&ns(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function $Ge(e,t,n,i){let o=e.prev,r=e,s=e.next;if(ns(o,r,s)>=0)return!1;let a=o.x,c=r.x,u=s.x,f=o.y,h=r.y,A=s.y,g=Math.min(a,c,u),m=Math.min(f,h,A),_=Math.max(a,c,u),y=Math.max(f,h,A),C=oj(g,m,t,n,i),E=oj(_,y,t,n,i),I=e.prevZ,b=e.nextZ;for(;I&&I.z>=C&&b&&b.z<=E;){if(I.x>=g&&I.x<=_&&I.y>=m&&I.y<=y&&I!==o&&I!==s&&yM(a,f,c,h,u,A,I.x,I.y)&&ns(I.prev,I,I.next)>=0||(I=I.prevZ,b.x>=g&&b.x<=_&&b.y>=m&&b.y<=y&&b!==o&&b!==s&&yM(a,f,c,h,u,A,b.x,b.y)&&ns(b.prev,b,b.next)>=0))return!1;b=b.nextZ}for(;I&&I.z>=C;){if(I.x>=g&&I.x<=_&&I.y>=m&&I.y<=y&&I!==o&&I!==s&&yM(a,f,c,h,u,A,I.x,I.y)&&ns(I.prev,I,I.next)>=0)return!1;I=I.prevZ}for(;b&&b.z<=E;){if(b.x>=g&&b.x<=_&&b.y>=m&&b.y<=y&&b!==o&&b!==s&&yM(a,f,c,h,u,A,b.x,b.y)&&ns(b.prev,b,b.next)>=0)return!1;b=b.nextZ}return!0}function eze(e,t){let n=e;do{let i=n.prev,o=n.next.next;!Nb(i,o)&&gce(i,n,n.next,o)&&EM(i,o)&&EM(o,i)&&(t.push(i.i,n.i,o.i),IM(n),IM(n.next),n=e=o),n=n.next}while(n!==e);return JE(n)}function tze(e,t,n,i,o,r){let s=e;do{let a=s.next.next;for(;a!==s.prev;){if(s.i!==a.i&&uze(s,a)){let c=_ce(s,a);s=JE(s,s.next),c=JE(c,c.next),CM(s,t,n,i,o,r,0),CM(c,t,n,i,o,r,0);return}a=a.next}s=s.next}while(s!==e)}function nze(e,t,n,i){let o=[];for(let r=0,s=t.length;r<s;r++){let a=t[r]*i,c=r<s-1?t[r+1]*i:e.length,u=Ace(e,a,c,i,!1);u===u.next&&(u.steiner=!0),o.push(lze(u))}o.sort(ize);for(let r=0;r<o.length;r++)n=oze(o[r],n);return n}function ize(e,t){let n=e.x-t.x;if(n===0&&(n=e.y-t.y,n===0)){let i=(e.next.y-e.y)/(e.next.x-e.x),o=(t.next.y-t.y)/(t.next.x-t.x);n=i-o}return n}function oze(e,t){let n=rze(e,t);if(!n)return t;let i=_ce(n,e);return JE(i,i.next),JE(n,n.next)}function rze(e,t){let n=t,i=e.x,o=e.y,r=-1/0,s;if(Nb(e,n))return n;do{if(Nb(e,n.next))return n.next;if(o<=n.y&&o>=n.next.y&&n.next.y!==n.y){let h=n.x+(o-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(h<=i&&h>r&&(r=h,s=n.x<n.next.x?n:n.next,h===i))return s}n=n.next}while(n!==t);if(!s)return null;let a=s,c=s.x,u=s.y,f=1/0;n=s;do{if(i>=n.x&&n.x>=c&&i!==n.x&&pce(o<u?i:r,o,c,u,o<u?r:i,o,n.x,n.y)){let h=Math.abs(o-n.y)/(i-n.x);EM(n,e)&&(h<f||h===f&&(n.x>s.x||n.x===s.x&&sze(s,n)))&&(s=n,f=h)}n=n.next}while(n!==a);return s}function sze(e,t){return ns(e.prev,e,t.prev)<0&&ns(t.next,e,e.next)<0}function aze(e,t,n,i){let o=e;do o.z===0&&(o.z=oj(o.x,o.y,t,n,i)),o.prevZ=o.prev,o.nextZ=o.next,o=o.next;while(o!==e);o.prevZ.nextZ=null,o.prevZ=null,cze(o)}function cze(e){let t,n=1;do{let i=e,o;e=null;let r=null;for(t=0;i;){t++;let s=i,a=0;for(let u=0;u<n&&(a++,s=s.nextZ,!!s);u++);let c=n;for(;a>0||c>0&&s;)a!==0&&(c===0||!s||i.z<=s.z)?(o=i,i=i.nextZ,a--):(o=s,s=s.nextZ,c--),r?r.nextZ=o:e=o,o.prevZ=r,r=o;i=s}r.nextZ=null,n*=2}while(t>1);return e}function oj(e,t,n,i,o){return e=(e-n)*o|0,t=(t-i)*o|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function lze(e){let t=e,n=e;do(t.x<n.x||t.x===n.x&&t.y<n.y)&&(n=t),t=t.next;while(t!==e);return n}function pce(e,t,n,i,o,r,s,a){return(o-s)*(t-a)>=(e-s)*(r-a)&&(e-s)*(i-a)>=(n-s)*(t-a)&&(n-s)*(r-a)>=(o-s)*(i-a)}function yM(e,t,n,i,o,r,s,a){return!(e===s&&t===a)&&pce(e,t,n,i,o,r,s,a)}function uze(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!fze(e,t)&&(EM(e,t)&&EM(t,e)&&dze(e,t)&&(ns(e.prev,e,t.prev)||ns(e,t.prev,t))||Nb(e,t)&&ns(e.prev,e,e.next)>0&&ns(t.prev,t,t.next)>0)}function ns(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function Nb(e,t){return e.x===t.x&&e.y===t.y}function gce(e,t,n,i){let o=Pz(ns(e,t,n)),r=Pz(ns(e,t,i)),s=Pz(ns(n,i,e)),a=Pz(ns(n,i,t));return!!(o!==r&&s!==a||o===0&&vz(e,n,t)||r===0&&vz(e,i,t)||s===0&&vz(n,e,i)||a===0&&vz(n,t,i))}function vz(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function Pz(e){return e>0?1:e<0?-1:0}function fze(e,t){let n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&gce(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}function EM(e,t){return ns(e.prev,e,e.next)<0?ns(e,t,e.next)>=0&&ns(e,e.prev,t)>=0:ns(e,t,e.prev)<0||ns(e,e.next,t)<0}function dze(e,t){let n=e,i=!1,o=(e.x+t.x)/2,r=(e.y+t.y)/2;do n.y>r!=n.next.y>r&&n.next.y!==n.y&&o<(n.next.x-n.x)*(r-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next;while(n!==e);return i}function _ce(e,t){let n=rj(e.i,e.x,e.y),i=rj(t.i,t.x,t.y),o=e.next,r=t.prev;return e.next=t,t.prev=e,n.next=o,o.prev=n,i.next=n,n.prev=i,r.next=i,i.prev=r,i}function mce(e,t,n,i){let o=rj(e,t,n);return i?(o.next=i.next,o.prev=i,i.next.prev=o,i.next=o):(o.prev=o,o.next=o),o}function IM(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function rj(e,t,n){return{i:e,x:t,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function hze(e,t,n,i){let o=0;for(let r=t,s=n-i;r<n;r+=i)o+=(e[s]-e[r])*(e[r+1]+e[s+1]),s=r;return o}var mze=new d,Aze=new d,Z_={};Z_.computeArea2D=function(e){let t=e.length,n=0;for(let i=t-1,o=0;o<t;i=o++){let r=e[i],s=e[o];n+=r.x*s.y-s.x*r.y}return n*.5};Z_.computeWindingOrder2D=function(e){return Z_.computeArea2D(e)>0?Ls.COUNTER_CLOCKWISE:Ls.CLOCKWISE};Z_.triangulate=function(e,t){let n=U.packArray(e);return sj(n,t,2)};var Ice=new d,xce=new d,bce=new d,yce=new d,Cce=new d,Ece=new d,Rp=new d,Tce=new U,Sce=new U,wce=new U,Lb=new U;Z_.computeSubdivision=function(e,t,n,i,o){o=o??D.RADIANS_PER_DEGREE;let r=l(i),s=n.slice(0),a,c=t.length,u=new Array(c*3),f=new Array(c*2),h=0,A=0;for(a=0;a<c;a++){let I=t[a];if(u[h++]=I.x,u[h++]=I.y,u[h++]=I.z,r){let b=i[a];f[A++]=b.x,f[A++]=b.y}}let g=[],m={},_=e.maximumRadius,y=D.chordLength(o,_),C=y*y;for(;s.length>0;){let I=s.pop(),b=s.pop(),S=s.pop(),B=d.fromArray(u,S*3,Ice),v=d.fromArray(u,b*3,xce),P=d.fromArray(u,I*3,bce),M,L,p;r&&(M=U.fromArray(f,S*2,Tce),L=U.fromArray(f,b*2,Sce),p=U.fromArray(f,I*2,wce));let x=d.multiplyByScalar(d.normalize(B,yce),_,yce),T=d.multiplyByScalar(d.normalize(v,Cce),_,Cce),w=d.multiplyByScalar(d.normalize(P,Ece),_,Ece),R=d.magnitudeSquared(d.subtract(x,T,Rp)),O=d.magnitudeSquared(d.subtract(T,w,Rp)),k=d.magnitudeSquared(d.subtract(w,x,Rp)),Q=Math.max(R,O,k),z,F,H;Q>C?R===Q?(z=`${Math.min(S,b)} ${Math.max(S,b)}`,a=m[z],l(a)||(F=d.add(B,v,Rp),d.multiplyByScalar(F,.5,F),u.push(F.x,F.y,F.z),a=u.length/3-1,m[z]=a,r&&(H=U.add(M,L,Lb),U.multiplyByScalar(H,.5,H),f.push(H.x,H.y))),s.push(S,a,I),s.push(a,b,I)):O===Q?(z=`${Math.min(b,I)} ${Math.max(b,I)}`,a=m[z],l(a)||(F=d.add(v,P,Rp),d.multiplyByScalar(F,.5,F),u.push(F.x,F.y,F.z),a=u.length/3-1,m[z]=a,r&&(H=U.add(L,p,Lb),U.multiplyByScalar(H,.5,H),f.push(H.x,H.y))),s.push(b,a,S),s.push(a,I,S)):k===Q&&(z=`${Math.min(I,S)} ${Math.max(I,S)}`,a=m[z],l(a)||(F=d.add(P,B,Rp),d.multiplyByScalar(F,.5,F),u.push(F.x,F.y,F.z),a=u.length/3-1,m[z]=a,r&&(H=U.add(p,M,Lb),U.multiplyByScalar(H,.5,H),f.push(H.x,H.y))),s.push(I,a,b),s.push(a,S,b)):(g.push(S),g.push(b),g.push(I))}let E={attributes:{position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:u})},indices:g,primitiveType:Me.TRIANGLES};return r&&(E.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:f})),new ht(E)};var pze=new Ae,gze=new Ae,_ze=new Ae,aj=new Ae;Z_.computeRhumbLineSubdivision=function(e,t,n,i,o){o=o??D.RADIANS_PER_DEGREE;let r=l(i),s=n.slice(0),a,c=t.length,u=new Array(c*3),f=new Array(c*2),h=0,A=0;for(a=0;a<c;a++){let S=t[a];if(u[h++]=S.x,u[h++]=S.y,u[h++]=S.z,r){let B=i[a];f[A++]=B.x,f[A++]=B.y}}let g=[],m={},_=e.maximumRadius,y=D.chordLength(o,_),C=new uc(void 0,void 0,e),E=new uc(void 0,void 0,e),I=new uc(void 0,void 0,e);for(;s.length>0;){let S=s.pop(),B=s.pop(),v=s.pop(),P=d.fromArray(u,v*3,Ice),M=d.fromArray(u,B*3,xce),L=d.fromArray(u,S*3,bce),p,x,T;r&&(p=U.fromArray(f,v*2,Tce),x=U.fromArray(f,B*2,Sce),T=U.fromArray(f,S*2,wce));let w=e.cartesianToCartographic(P,pze),R=e.cartesianToCartographic(M,gze),O=e.cartesianToCartographic(L,_ze);C.setEndPoints(w,R);let k=C.surfaceDistance;E.setEndPoints(R,O);let Q=E.surfaceDistance;I.setEndPoints(O,w);let z=I.surfaceDistance,F=Math.max(k,Q,z),H,W,Z,Y,$;F>y?k===F?(H=`${Math.min(v,B)} ${Math.max(v,B)}`,a=m[H],l(a)||(W=C.interpolateUsingFraction(.5,aj),Z=(w.height+R.height)*.5,Y=d.fromRadians(W.longitude,W.latitude,Z,e,Rp),u.push(Y.x,Y.y,Y.z),a=u.length/3-1,m[H]=a,r&&($=U.add(p,x,Lb),U.multiplyByScalar($,.5,$),f.push($.x,$.y))),s.push(v,a,S),s.push(a,B,S)):Q===F?(H=`${Math.min(B,S)} ${Math.max(B,S)}`,a=m[H],l(a)||(W=E.interpolateUsingFraction(.5,aj),Z=(R.height+O.height)*.5,Y=d.fromRadians(W.longitude,W.latitude,Z,e,Rp),u.push(Y.x,Y.y,Y.z),a=u.length/3-1,m[H]=a,r&&($=U.add(x,T,Lb),U.multiplyByScalar($,.5,$),f.push($.x,$.y))),s.push(B,a,v),s.push(a,S,v)):z===F&&(H=`${Math.min(S,v)} ${Math.max(S,v)}`,a=m[H],l(a)||(W=I.interpolateUsingFraction(.5,aj),Z=(O.height+w.height)*.5,Y=d.fromRadians(W.longitude,W.latitude,Z,e,Rp),u.push(Y.x,Y.y,Y.z),a=u.length/3-1,m[H]=a,r&&($=U.add(T,p,Lb),U.multiplyByScalar($,.5,$),f.push($.x,$.y))),s.push(S,a,B),s.push(a,v,B)):(g.push(v),g.push(B),g.push(S))}let b={attributes:{position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:u})},indices:g,primitiveType:Me.TRIANGLES};return r&&(b.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:f})),new ht(b)};Z_.scaleToGeodeticHeight=function(e,t,n,i){n=n??te.default;let o=mze,r=Aze;if(t=t??0,i=i??!0,l(e)){let s=e.length;for(let a=0;a<s;a+=3)d.fromArray(e,a,r),i&&(r=n.scaleToGeodeticSurface(r,r)),t!==0&&(o=n.geodeticSurfaceNormal(r,o),d.multiplyByScalar(o,t,o),d.add(r,o,r)),e[a]=r.x,e[a+1]=r.y,e[a+2]=r.z}return e};var Ii=Z_;function $_(){this._array=[],this._offset=0,this._length=0}Object.defineProperties($_.prototype,{length:{get:function(){return this._length}}});$_.prototype.enqueue=function(e){this._array.push(e),this._length++};$_.prototype.dequeue=function(){if(this._length===0)return;let e=this._array,t=this._offset,n=e[t];return e[t]=void 0,t++,t>10&&t*2>e.length&&(this._array=e.slice(t),t=0),this._offset=t,this._length--,n};$_.prototype.peek=function(){if(this._length!==0)return this._array[this._offset]};$_.prototype.contains=function(e){return this._array.indexOf(e)!==-1};$_.prototype.clear=function(){this._array.length=this._offset=this._length=0};$_.prototype.sort=function(e){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(e)};var ey=$_;var hr={};hr.computeHierarchyPackedLength=function(e,t){let n=0,i=[e];for(;i.length>0;){let o=i.pop();if(!l(o))continue;n+=2;let r=o.positions,s=o.holes;if(l(r)&&r.length>0&&(n+=r.length*t.packedLength),l(s)){let a=s.length;for(let c=0;c<a;++c)i.push(s[c])}}return n};hr.packPolygonHierarchy=function(e,t,n,i){let o=[e];for(;o.length>0;){let r=o.pop();if(!l(r))continue;let s=r.positions,a=r.holes;if(t[n++]=l(s)?s.length:0,t[n++]=l(a)?a.length:0,l(s)){let c=s.length;for(let u=0;u<c;++u,n+=i.packedLength)i.pack(s[u],t,n)}if(l(a)){let c=a.length;for(let u=0;u<c;++u)o.push(a[u])}}return n};hr.unpackPolygonHierarchy=function(e,t,n){let i=e[t++],o=e[t++],r=new Array(i),s=o>0?new Array(o):void 0;for(let a=0;a<i;++a,t+=n.packedLength)r[a]=n.unpack(e,t);for(let a=0;a<o;++a)s[a]=hr.unpackPolygonHierarchy(e,t,n),t=s[a].startingIndex,delete s[a].startingIndex;return{positions:r,holes:s,startingIndex:t}};var ZE=new U;function vce(e,t,n,i){return U.subtract(t,e,ZE),U.multiplyByScalar(ZE,n/i,ZE),U.add(e,ZE,ZE),[ZE.x,ZE.y]}var ty=new d;function yze(e,t,n,i){return d.subtract(t,e,ty),d.multiplyByScalar(ty,n/i,ty),d.add(e,ty,ty),[ty.x,ty.y,ty.z]}hr.subdivideLineCount=function(e,t,n){let o=d.distance(e,t)/n,r=Math.max(0,Math.ceil(D.log2(o)));return Math.pow(2,r)};var Mz=new Ae,Nz=new Ae,Cze=new Ae,Eze=new d,Rz=new uc;hr.subdivideRhumbLineCount=function(e,t,n,i){let o=e.cartesianToCartographic(t,Mz),r=e.cartesianToCartographic(n,Nz),a=new uc(o,r,e).surfaceDistance/i,c=Math.max(0,Math.ceil(D.log2(a)));return Math.pow(2,c)};hr.subdivideTexcoordLine=function(e,t,n,i,o,r){let s=hr.subdivideLineCount(n,i,o),a=U.distance(e,t),c=a/s,u=r;u.length=s*2;let f=0;for(let h=0;h<s;h++){let A=vce(e,t,h*c,a);u[f++]=A[0],u[f++]=A[1]}return u};hr.subdivideLine=function(e,t,n,i){let o=hr.subdivideLineCount(e,t,n),r=d.distance(e,t),s=r/o;l(i)||(i=[]);let a=i;a.length=o*3;let c=0;for(let u=0;u<o;u++){let f=yze(e,t,u*s,r);a[c++]=f[0],a[c++]=f[1],a[c++]=f[2]}return a};hr.subdivideTexcoordRhumbLine=function(e,t,n,i,o,r,s){let a=n.cartesianToCartographic(i,Mz),c=n.cartesianToCartographic(o,Nz);Rz.setEndPoints(a,c);let u=Rz.surfaceDistance/r,f=Math.max(0,Math.ceil(D.log2(u))),h=Math.pow(2,f),A=U.distance(e,t),g=A/h,m=s;m.length=h*2;let _=0;for(let y=0;y<h;y++){let C=vce(e,t,y*g,A);m[_++]=C[0],m[_++]=C[1]}return m};hr.subdivideRhumbLine=function(e,t,n,i,o){let r=e.cartesianToCartographic(t,Mz),s=e.cartesianToCartographic(n,Nz),a=new uc(r,s,e);if(l(o)||(o=[]),a.surfaceDistance<=i)return o.length=3,o[0]=t.x,o[1]=t.y,o[2]=t.z,o;let c=a.surfaceDistance/i,u=Math.max(0,Math.ceil(D.log2(c))),f=Math.pow(2,u),h=a.surfaceDistance/f,A=o;A.length=f*3;let g=0;for(let m=0;m<f;m++){let _=a.interpolateUsingSurfaceDistance(m*h,Cze),y=e.cartographicToCartesian(_,Eze);A[g++]=y.x,A[g++]=y.y,A[g++]=y.z}return A};var Ize=new d,xze=new d,bze=new d,Tze=new d;hr.scaleToGeodeticHeightExtruded=function(e,t,n,i,o){i=i??te.default;let r=Ize,s=xze,a=bze,c=Tze;if(l(e)&&l(e.attributes)&&l(e.attributes.position)){let u=e.attributes.position.values,f=u.length/2;for(let h=0;h<f;h+=3)d.fromArray(u,h,a),i.geodeticSurfaceNormal(a,r),c=i.scaleToGeodeticSurface(a,c),s=d.multiplyByScalar(r,n,s),s=d.add(c,s,s),u[h+f]=s.x,u[h+1+f]=s.y,u[h+2+f]=s.z,o&&(c=d.clone(a,c)),s=d.multiplyByScalar(r,t,s),s=d.add(c,s,s),u[h]=s.x,u[h+1]=s.y,u[h+2]=s.z}return e};hr.polygonOutlinesFromHierarchy=function(e,t,n){let i=[],o=new ey;o.enqueue(e);let r,s,a;for(;o.length!==0;){let c=o.dequeue(),u=c.positions;if(t)for(a=u.length,r=0;r<a;r++)n.scaleToGeodeticSurface(u[r],u[r]);if(u=Mo(u,d.equalsEpsilon,!0),u.length<3)continue;let f=c.holes?c.holes.length:0;for(r=0;r<f;r++){let h=c.holes[r],A=h.positions;if(t)for(a=A.length,s=0;s<a;++s)n.scaleToGeodeticSurface(A[s],A[s]);if(A=Mo(A,d.equalsEpsilon,!0),A.length<3)continue;i.push(A);let g=0;for(l(h.holes)&&(g=h.holes.length),s=0;s<g;s++)o.enqueue(h.holes[s])}i.push(u)}return i};var Sze=new Ae;function wze(e,t,n){let i=n.cartesianToCartographic(e,Mz),o=n.cartesianToCartographic(t,Nz);if(Math.sign(i.latitude)===Math.sign(o.latitude))return;Rz.setEndPoints(i,o);let r=Rz.findIntersectionWithLatitude(0,Sze);if(!l(r))return;let s=Math.min(i.longitude,o.longitude),a=Math.max(i.longitude,o.longitude);if(Math.abs(a-s)>D.PI){let c=s;s=a,a=c}if(!(r.longitude<s||r.longitude>a))return n.cartographicToCartesian(r)}function Bze(e,t,n,i){if(i===cn.RHUMB)return wze(e,t,n);let o=hi.lineSegmentPlane(e,t,mn.ORIGIN_XY_PLANE);if(l(o))return n.scaleToGeodeticSurface(o,o)}var Dze=new Ae;function vze(e,t,n){let i=[],o,r,s,a,c,u=0;for(;u<e.length;){o=e[u],r=e[(u+1)%e.length],s=D.sign(o.z),a=D.sign(r.z);let f=h=>t.cartesianToCartographic(h,Dze).longitude;if(s===0)i.push({position:u,type:s,visited:!1,next:a,theta:f(o)});else if(a!==0){if(c=Bze(o,r,t,n),++u,!l(c))continue;e.splice(u,0,c),i.push({position:u,type:s,visited:!1,next:a,theta:f(c)})}++u}return i}function Pce(e,t,n,i,o,r,s){let a=[],c=r,u=h=>A=>A.position===h,f=[];do{let h=n[c];a.push(h);let A=i.findIndex(u(c)),g=i[A];if(!l(g)){++c;continue}let{visited:m,type:_,next:y}=g;if(g.visited=!0,_===0){if(y===0){let b=i[A-(s?1:-1)];if(b?.position===c+1)b.visited=!0;else{++c;continue}}if(!m&&s&&y>0||r===c&&!s&&y<0){++c;continue}}if(!(s?_>=0:_<=0)){++c;continue}m||f.push(c);let E=A+(s?1:-1),I=i[E];if(!l(I)){++c;continue}c=I.position}while(c<n.length&&c>=0&&c!==r&&a.length<n.length);e.splice(t,o,a);for(let h of f)t=Pce(e,++t,n,i,0,h,!s);return t}hr.splitPolygonsOnEquator=function(e,t,n,i){l(i)||(i=[]),i.splice(0,0,...e),i.length=e.length;let o=0;for(;o<i.length;){let r=i[o],s=r.slice();if(r.length<3){i[o]=s,++o;continue}let a=vze(s,t,n);if(s.length===r.length||a.length<=1){i[o]=s,++o;continue}a.sort((u,f)=>u.theta-f.theta);let c=s[0].z>=0;o=Pce(i,o,s,a,1,0,c)}return i};hr.polygonsFromHierarchy=function(e,t,n,i,o,r){let s=[],a=[],c=new ey;c.enqueue(e);let u=l(r);for(;c.length!==0;){let f=c.dequeue(),h=f.positions,A=f.holes,g,m;if(i)for(m=h.length,g=0;g<m;g++)o.scaleToGeodeticSurface(h[g],h[g]);if(t||(h=Mo(h,d.equalsEpsilon,!0)),h.length<3)continue;let _=n(h);if(!l(_))continue;let y=[],C=Ii.computeWindingOrder2D(_);if(C===Ls.CLOCKWISE&&(_.reverse(),h=h.slice().reverse()),u){u=!1;let B=[h];if(B=r(B,B),B.length>1){for(let v of B)c.enqueue(new fc(v,A));continue}}let E=h.slice(),I=l(A)?A.length:0,b=[],S;for(g=0;g<I;g++){let B=A[g],v=B.positions;if(i)for(m=v.length,S=0;S<m;++S)o.scaleToGeodeticSurface(v[S],v[S]);if(t||(v=Mo(v,d.equalsEpsilon,!0)),v.length<3)continue;let P=n(v);if(!l(P))continue;C=Ii.computeWindingOrder2D(P),C===Ls.CLOCKWISE&&(P.reverse(),v=v.slice().reverse()),b.push(v),y.push(E.length),E=E.concat(v),_=_.concat(P);let M=0;for(l(B.holes)&&(M=B.holes.length),S=0;S<M;S++)c.enqueue(B.holes[S])}s.push({outerRing:h,holes:b}),a.push({positions:E,positions2D:_,holes:y})}return{hierarchy:s,polygons:a}};var Pze=new U,Rze=new d,Mze=new Le,Nze=new J;hr.computeBoundingRectangle=function(e,t,n,i,o){let r=Le.fromAxisAngle(e,i,Mze),s=J.fromQuaternion(r,Nze),a=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,u=Number.POSITIVE_INFINITY,f=Number.NEGATIVE_INFINITY,h=n.length;for(let A=0;A<h;++A){let g=d.clone(n[A],Rze);J.multiplyByVector(s,g,g);let m=t(g,Pze);l(m)&&(a=Math.min(a,m.x),c=Math.max(c,m.x),u=Math.min(u,m.y),f=Math.max(f,m.y))}return o.x=a,o.y=u,o.width=c-a,o.height=f-u,o};hr.createGeometryFromPositions=function(e,t,n,i,o,r,s){let a=Ii.triangulate(t.positions2D,t.holes);a.length<3&&(a=[0,1,2]);let c=t.positions,u=l(n),f=u?n.positions:void 0;if(o){let h=c.length,A=new Array(h*3),g=0;for(let y=0;y<h;y++){let C=c[y];A[g++]=C.x,A[g++]=C.y,A[g++]=C.z}let m={attributes:{position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:A})},indices:a,primitiveType:Me.TRIANGLES};u&&(m.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:U.packArray(f)}));let _=new ht(m);return r.normal?Vn.computeNormal(_):_}if(s===cn.GEODESIC)return Ii.computeSubdivision(e,c,a,f,i);if(s===cn.RHUMB)return Ii.computeRhumbLineSubdivision(e,c,a,f,i)};var Bce=[],Dce=[],Lze=new d,Oze=new d;hr.computeWallGeometry=function(e,t,n,i,o,r){let s,a,c,u,f,h,A,g,m,_=e.length,y=0,C=0,E=l(t),I=E?t.positions:void 0;if(o)for(a=_*3*2,s=new Array(a*2),E&&(m=_*2*2,g=new Array(m*2)),c=0;c<_;c++)u=e[c],f=e[(c+1)%_],s[y]=s[y+a]=u.x,++y,s[y]=s[y+a]=u.y,++y,s[y]=s[y+a]=u.z,++y,s[y]=s[y+a]=f.x,++y,s[y]=s[y+a]=f.y,++y,s[y]=s[y+a]=f.z,++y,E&&(h=I[c],A=I[(c+1)%_],g[C]=g[C+m]=h.x,++C,g[C]=g[C+m]=h.y,++C,g[C]=g[C+m]=A.x,++C,g[C]=g[C+m]=A.y,++C);else{let P=D.chordLength(i,n.maximumRadius),M=0;if(r===cn.GEODESIC)for(c=0;c<_;c++)M+=hr.subdivideLineCount(e[c],e[(c+1)%_],P);else if(r===cn.RHUMB)for(c=0;c<_;c++)M+=hr.subdivideRhumbLineCount(n,e[c],e[(c+1)%_],P);for(a=(M+_)*3,s=new Array(a*2),E&&(m=(M+_)*2,g=new Array(m*2)),c=0;c<_;c++){u=e[c],f=e[(c+1)%_];let L,p;E&&(h=I[c],A=I[(c+1)%_]),r===cn.GEODESIC?(L=hr.subdivideLine(u,f,P,Dce),E&&(p=hr.subdivideTexcoordLine(h,A,u,f,P,Bce))):r===cn.RHUMB&&(L=hr.subdivideRhumbLine(n,u,f,P,Dce),E&&(p=hr.subdivideTexcoordRhumbLine(h,A,n,u,f,P,Bce)));let x=L.length;for(let T=0;T<x;++T,++y)s[y]=L[T],s[y+a]=L[T];if(s[y]=f.x,s[y+a]=f.x,++y,s[y]=f.y,s[y+a]=f.y,++y,s[y]=f.z,s[y+a]=f.z,++y,E){let T=p.length;for(let w=0;w<T;++w,++C)g[C]=p[w],g[C+m]=p[w];g[C]=A.x,g[C+m]=A.x,++C,g[C]=A.y,g[C+m]=A.y,++C}}}_=s.length;let b=Oe.createTypedArray(_/3,_-e.length*6),S=0;for(_/=6,c=0;c<_;c++){let P=c,M=P+1,L=P+_,p=L+1;u=d.fromArray(s,P*3,Lze),f=d.fromArray(s,M*3,Oze),!d.equalsEpsilon(u,f,D.EPSILON10,D.EPSILON10)&&(b[S++]=P,b[S++]=L,b[S++]=M,b[S++]=M,b[S++]=L,b[S++]=p)}let B={attributes:new yn({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s})}),indices:b,primitiveType:Me.TRIANGLES};return E&&(B.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:g})),new ht(B)};var $n=hr;function is(e,t){this.position=e,l(this.position)||(this.position=new U),this.tangentPlane=t,l(this.tangentPlane)||(this.tangentPlane=is.NORTH_POLE_TANGENT_PLANE)}Object.defineProperties(is.prototype,{ellipsoid:{get:function(){return this.tangentPlane.ellipsoid}},x:{get:function(){return this.position.x}},y:{get:function(){return this.position.y}},conformalLatitude:{get:function(){let e=U.magnitude(this.position),t=2*this.ellipsoid.maximumRadius;return this.tangentPlane.plane.normal.z*(D.PI_OVER_TWO-2*Math.atan2(e,t))}},longitude:{get:function(){let e=D.PI_OVER_TWO+Math.atan2(this.y,this.x);return e>Math.PI&&(e-=D.TWO_PI),e}}});var Ob=new Ae,Fze=new d;is.prototype.getLatitude=function(e){l(e)||(e=te.default),Ob.latitude=this.conformalLatitude,Ob.longitude=this.longitude,Ob.height=0;let t=this.ellipsoid.cartographicToCartesian(Ob,Fze);return e.cartesianToCartographic(t,Ob),Ob.latitude};var Qze=new In,kze=new d,Uze=new d;is.fromCartesian=function(e,t){let n=D.signNotZero(e.z),i=is.NORTH_POLE_TANGENT_PLANE,o=is.SOUTH_POLE;n<0&&(i=is.SOUTH_POLE_TANGENT_PLANE,o=is.NORTH_POLE);let r=Qze;r.origin=i.ellipsoid.scaleToGeocentricSurface(e,r.origin),r.direction=d.subtract(r.origin,o,kze),d.normalize(r.direction,r.direction);let s=hi.rayPlane(r,i.plane,Uze),a=d.subtract(s,o,s),c=d.dot(i.xAxis,a),u=n*d.dot(i.yAxis,a);return l(t)?(t.position=new U(c,u),t.tangentPlane=i,t):new is(new U(c,u),i)};is.fromCartesianArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;i++)t[i]=is.fromCartesian(e[i],t[i]);return t};is.clone=function(e,t){if(l(e))return l(t)?(t.position=e.position,t.tangentPlane=e.tangentPlane,t):new is(e.position,e.tangentPlane)};is.HALF_UNIT_SPHERE=Object.freeze(new te(.5,.5,.5));is.NORTH_POLE=Object.freeze(new d(0,0,.5));is.SOUTH_POLE=Object.freeze(new d(0,0,-.5));is.NORTH_POLE_TANGENT_PLANE=Object.freeze(new ys(is.NORTH_POLE,is.HALF_UNIT_SPHERE));is.SOUTH_POLE_TANGENT_PLANE=Object.freeze(new ys(is.SOUTH_POLE,is.HALF_UNIT_SPHERE));var Fc=is;var Gze=new Ae,Rce=new Ae;function zze(e,t,n,i){let r=i.cartesianToCartographic(e,Gze).height,s=i.cartesianToCartographic(t,Rce);s.height=r,i.cartographicToCartesian(s,t);let a=i.cartesianToCartographic(n,Rce);a.height=r-100,i.cartographicToCartesian(a,n)}var Mce=new Ye,Vze=new d,Hze=new d,Wze=new d,jze=new d,Yze=new d,qze=new d,Lz=new d,Jm=new d,Fb=new d,Kze=new U,Xze=new U,Jze=new d,Nce=new Le,Zze=new J,$ze=new J;function cj(e){let t=e.vertexFormat,n=e.geometry,i=e.shadowVolume,o=n.attributes.position.values,r=l(n.attributes.st)?n.attributes.st.values:void 0,s=o.length,a=e.wall,c=e.top||a,u=e.bottom||a;if(t.st||t.normal||t.tangent||t.bitangent||i){let f=e.boundingRectangle,h=e.rotationAxis,A=e.projectTo2d,g=e.ellipsoid,m=e.stRotation,_=e.perPositionHeight,y=Kze;y.x=f.x,y.y=f.y;let C=t.st?new Float32Array(2*(s/3)):void 0,E;t.normal&&(_&&c&&!a?E=n.attributes.normal.values:E=new Float32Array(s));let I=t.tangent?new Float32Array(s):void 0,b=t.bitangent?new Float32Array(s):void 0,S=i?new Float32Array(s):void 0,B=0,v=0,P=Hze,M=Wze,L=jze,p=!0,x=Zze,T=$ze;if(m!==0){let O=Le.fromAxisAngle(h,m,Nce);x=J.fromQuaternion(O,x),O=Le.fromAxisAngle(h,-m,Nce),T=J.fromQuaternion(O,T)}else x=J.clone(J.IDENTITY,x),T=J.clone(J.IDENTITY,T);let w=0,R=0;c&&u&&(w=s/2,R=s/3,s/=2);for(let O=0;O<s;O+=3){let k=d.fromArray(o,O,Jze);if(t.st&&!l(r)){let Q=J.multiplyByVector(x,k,Vze);Q=g.scaleToGeodeticSurface(Q,Q);let z=A([Q],Xze)[0];U.subtract(z,y,z);let F=D.clamp(z.x/f.width,0,1),H=D.clamp(z.y/f.height,0,1);u&&(C[B+R]=F,C[B+1+R]=H),c&&(C[B]=F,C[B+1]=H),B+=2}if(t.normal||t.tangent||t.bitangent||i){let Q=v+1,z=v+2;if(a){if(O+3<s){let F=d.fromArray(o,O+3,Yze);if(p){let H=d.fromArray(o,O+s,qze);_&&zze(k,F,H,g),d.subtract(F,k,F),d.subtract(H,k,H),P=d.normalize(d.cross(H,F,P),P),p=!1}d.equalsEpsilon(F,k,D.EPSILON10)&&(p=!0)}(t.tangent||t.bitangent)&&(L=g.geodeticSurfaceNormal(k,L),t.tangent&&(M=d.normalize(d.cross(L,P,M),M)))}else P=g.geodeticSurfaceNormal(k,P),(t.tangent||t.bitangent)&&(_&&(Lz=d.fromArray(E,v,Lz),Jm=d.cross(d.UNIT_Z,Lz,Jm),Jm=d.normalize(J.multiplyByVector(T,Jm,Jm),Jm),t.bitangent&&(Fb=d.normalize(d.cross(Lz,Jm,Fb),Fb))),M=d.cross(d.UNIT_Z,P,M),M=d.normalize(J.multiplyByVector(T,M,M),M),t.bitangent&&(L=d.normalize(d.cross(P,M,L),L)));t.normal&&(e.wall?(E[v+w]=P.x,E[Q+w]=P.y,E[z+w]=P.z):u&&(E[v+w]=-P.x,E[Q+w]=-P.y,E[z+w]=-P.z),(c&&!_||a)&&(E[v]=P.x,E[Q]=P.y,E[z]=P.z)),i&&(a&&(P=g.geodeticSurfaceNormal(k,P)),S[v+w]=-P.x,S[Q+w]=-P.y,S[z+w]=-P.z),t.tangent&&(e.wall?(I[v+w]=M.x,I[Q+w]=M.y,I[z+w]=M.z):u&&(I[v+w]=-M.x,I[Q+w]=-M.y,I[z+w]=-M.z),c&&(_?(I[v]=Jm.x,I[Q]=Jm.y,I[z]=Jm.z):(I[v]=M.x,I[Q]=M.y,I[z]=M.z))),t.bitangent&&(u&&(b[v+w]=L.x,b[Q+w]=L.y,b[z+w]=L.z),c&&(_?(b[v]=Fb.x,b[Q]=Fb.y,b[z]=Fb.z):(b[v]=L.x,b[Q]=L.y,b[z]=L.z))),v+=3}}t.st&&!l(r)&&(n.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:C})),t.normal&&(n.attributes.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:E})),t.tangent&&(n.attributes.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:I})),t.bitangent&&(n.attributes.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:b})),i&&(n.attributes.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:S}))}if(e.extrude&&l(e.offsetAttribute)){let f=o.length/3,h=new Uint8Array(f);if(e.offsetAttribute===hn.TOP)c&&u||a?h=h.fill(1,0,f/2):c&&(h=h.fill(1));else{let A=e.offsetAttribute===hn.NONE?0:1;h=h.fill(A)}n.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}return n}var Lce=[];function eVe(e,t,n,i,o,r,s,a,c,u){let f={walls:[]},h;if(s||a){let E=$n.createGeometryFromPositions(e,t,n,i,r,c,u),I=E.attributes.position.values,b=E.indices,S,B;if(s&&a){let v=I.concat(I);S=v.length/3,B=Oe.createTypedArray(S,b.length*2),B.set(b);let P=b.length,M=S/2;for(h=0;h<P;h+=3){let L=B[h]+M,p=B[h+1]+M,x=B[h+2]+M;B[h+P]=x,B[h+1+P]=p,B[h+2+P]=L}if(E.attributes.position.values=v,r&&c.normal){let L=E.attributes.normal.values;E.attributes.normal.values=new Float32Array(v.length),E.attributes.normal.values.set(L)}if(c.st&&l(n)){let L=E.attributes.st.values;E.attributes.st.values=new Float32Array(S*2),E.attributes.st.values=L.concat(L)}E.indices=B}else if(a){for(S=I.length/3,B=Oe.createTypedArray(S,b.length),h=0;h<b.length;h+=3)B[h]=b[h+2],B[h+1]=b[h+1],B[h+2]=b[h];E.indices=B}f.topAndBottom=new Pt({geometry:E})}let A=o.outerRing,g=ys.fromPoints(A,e),m=g.projectPointsOntoPlane(A,Lce),_=Ii.computeWindingOrder2D(m);_===Ls.CLOCKWISE&&(A=A.slice().reverse());let y=$n.computeWallGeometry(A,n,e,i,r,u);f.walls.push(new Pt({geometry:y}));let C=o.holes;for(h=0;h<C.length;h++){let E=C[h];m=g.projectPointsOntoPlane(E,Lce),_=Ii.computeWindingOrder2D(m),_===Ls.COUNTER_CLOCKWISE&&(E=E.slice().reverse()),y=$n.computeWallGeometry(E,n,e,i,r,u),f.walls.push(new Pt({geometry:y}))}return f}function cd(e){let t=e.polygonHierarchy,n=e.vertexFormat??Pe.DEFAULT,i=e.ellipsoid??te.default,o=e.granularity??D.RADIANS_PER_DEGREE,r=e.stRotation??0,s=e.textureCoordinates,a=e.perPositionHeight??!1,c=a&&l(e.extrudedHeight),u=e.height??0,f=e.extrudedHeight??u;if(!c){let h=Math.max(u,f);f=Math.min(u,f),u=h}this._vertexFormat=Pe.clone(n),this._ellipsoid=te.clone(i),this._granularity=o,this._stRotation=r,this._height=u,this._extrudedHeight=f,this._closeTop=e.closeTop??!0,this._closeBottom=e.closeBottom??!0,this._polygonHierarchy=t,this._perPositionHeight=a,this._perPositionHeightExtrude=c,this._shadowVolume=e.shadowVolume??!1,this._workerName="createPolygonGeometry",this._offsetAttribute=e.offsetAttribute,this._arcType=e.arcType??cn.GEODESIC,this._rectangle=void 0,this._textureCoordinateRotationPoints=void 0,this._textureCoordinates=s,this.packedLength=$n.computeHierarchyPackedLength(t,d)+te.packedLength+Pe.packedLength+(s?$n.computeHierarchyPackedLength(s,U):1)+12}cd.fromPositions=function(e){e=e??V.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions},height:e.height,extrudedHeight:e.extrudedHeight,vertexFormat:e.vertexFormat,stRotation:e.stRotation,ellipsoid:e.ellipsoid,granularity:e.granularity,perPositionHeight:e.perPositionHeight,closeTop:e.closeTop,closeBottom:e.closeBottom,offsetAttribute:e.offsetAttribute,arcType:e.arcType,textureCoordinates:e.textureCoordinates};return new cd(t)};cd.pack=function(e,t,n){return n=n??0,n=$n.packPolygonHierarchy(e._polygonHierarchy,t,n,d),te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._granularity,t[n++]=e._stRotation,t[n++]=e._perPositionHeightExtrude?1:0,t[n++]=e._perPositionHeight?1:0,t[n++]=e._closeTop?1:0,t[n++]=e._closeBottom?1:0,t[n++]=e._shadowVolume?1:0,t[n++]=e._offsetAttribute??-1,t[n++]=e._arcType,l(e._textureCoordinates)?n=$n.packPolygonHierarchy(e._textureCoordinates,t,n,U):t[n++]=-1,t[n++]=e.packedLength,t};var tVe=te.clone(te.UNIT_SPHERE),nVe=new Pe,iVe={polygonHierarchy:{}};cd.unpack=function(e,t,n){t=t??0;let i=$n.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=te.unpack(e,t,tVe);t+=te.packedLength;let r=Pe.unpack(e,t,nVe);t+=Pe.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++]===1,h=e[t++]===1,A=e[t++]===1,g=e[t++]===1,m=e[t++]===1,_=e[t++],y=e[t++],C=e[t]===-1?void 0:$n.unpackPolygonHierarchy(e,t,U);l(C)?(t=C.startingIndex,delete C.startingIndex):t++;let E=e[t++];return l(n)||(n=new cd(iVe)),n._polygonHierarchy=i,n._ellipsoid=te.clone(o,n._ellipsoid),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._height=s,n._extrudedHeight=a,n._granularity=c,n._stRotation=u,n._perPositionHeightExtrude=f,n._perPositionHeight=h,n._closeTop=A,n._closeBottom=g,n._shadowVolume=m,n._offsetAttribute=_===-1?void 0:_,n._arcType=y,n._textureCoordinates=C,n.packedLength=E,n};var oVe=new U,rVe=new U,sVe=new Fc;function Oce(e,t,n,i,o,r){let s=e.longitude,a=s>=0?s:s+D.TWO_PI;o.westOverIdl=Math.min(o.westOverIdl,a),o.eastOverIdl=Math.max(o.eastOverIdl,a),r.west=Math.min(r.west,s),r.east=Math.max(r.east,s);let c=e.getLatitude(n),u=c;if(r.south=Math.min(r.south,c),r.north=Math.max(r.north,c),i!==cn.RHUMB){let A=U.subtract(t.position,e.position,oVe),g=U.dot(t.position,A)/U.dot(A,A);if(g>0&&g<1){let m=U.add(t.position,U.multiplyByScalar(A,-g,A),rVe),_=Fc.clone(t,sVe);_.position=m;let y=_.getLatitude(n);r.south=Math.min(r.south,y),r.north=Math.max(r.north,y),Math.abs(c)>Math.abs(y)&&(u=y)}}let f=t.x*e.y-e.x*t.y,h=Math.sign(f);h!==0&&(h*=U.angleBetween(t.position,e.position)),u>=0&&(o.northAngle+=h),u<=0&&(o.southAngle+=h)}var Fce=new Fc,aVe=new Fc,ad={northAngle:0,southAngle:0,westOverIdl:0,eastOverIdl:0};cd.computeRectangleFromPositions=function(e,t,n,i){if(l(i)||(i=new ae),e.length<3)return i;i.west=Number.POSITIVE_INFINITY,i.east=Number.NEGATIVE_INFINITY,i.south=Number.POSITIVE_INFINITY,i.north=Number.NEGATIVE_INFINITY,ad.northAngle=0,ad.southAngle=0,ad.westOverIdl=Number.POSITIVE_INFINITY,ad.eastOverIdl=Number.NEGATIVE_INFINITY;let o=e.length,r=Fc.fromCartesian(e[0],aVe);for(let s=1;s<o;s++){let a=Fc.fromCartesian(e[s],Fce);Oce(a,r,t,n,ad,i),r=Fc.clone(a,r)}return Oce(Fc.fromCartesian(e[0],Fce),r,t,n,ad,i),i.east-i.west>ad.eastOverIdl-ad.westOverIdl&&(i.west=ad.westOverIdl,i.east=ad.eastOverIdl,i.east>D.PI&&(i.east=i.east-D.TWO_PI),i.west>D.PI&&(i.west=i.west-D.TWO_PI)),D.equalsEpsilon(Math.abs(ad.northAngle),D.TWO_PI,D.EPSILON10)&&(i.north=D.PI_OVER_TWO,i.east=D.PI,i.west=-D.PI),D.equalsEpsilon(Math.abs(ad.southAngle),D.TWO_PI,D.EPSILON10)&&(i.south=-D.PI_OVER_TWO,i.east=D.PI,i.west=-D.PI),i};var cVe=new Fc;function lVe(e,t,n){return e.height>=D.PI||e.width>=D.PI?Fc.fromCartesian(t[0],cVe).tangentPlane:ys.fromPoints(t,n)}var Qce=new Ae;function uVe(e,t,n){return(i,o)=>{if(e.height>=D.PI||e.width>=D.PI){if(e.south<0&&e.north>0){l(o)||(o=[]);for(let s=0;s<i.length;++s){let a=n.cartesianToCartographic(i[s],Qce);o[s]=new U(a.longitude/D.PI,a.latitude/D.PI_OVER_TWO)}return o.length=i.length,o}return Fc.fromCartesianArray(i,o)}return ys.fromPoints(t,n).projectPointsOntoPlane(i,o)}}function fVe(e,t,n){if(e.height>=D.PI||e.width>=D.PI)return(o,r)=>{if(e.south<0&&e.north>0){let s=n.cartesianToCartographic(o,Qce);return l(r)||(r=new U),r.x=s.longitude/D.PI,r.y=s.latitude/D.PI_OVER_TWO,r}return Fc.fromCartesian(o,r)};let i=ys.fromPoints(t,n);return(o,r)=>i.projectPointsOntoPlane(o,r)}function dVe(e,t,n,i){return(o,r)=>!i&&(e.height>=D.PI_OVER_TWO||e.width>=2*D.PI_OVER_THREE)?$n.splitPolygonsOnEquator(o,t,n,r):o}function hVe(e,t,n,i){if(t.height>=D.PI||t.width>=D.PI)return Ye.fromRectangle(t,void 0,Mce);let o=e,r=ys.fromPoints(o,n);return $n.computeBoundingRectangle(r.plane.normal,r.projectPointOntoPlane.bind(r),o,i,Mce)}cd.createGeometry=function(e){let t=e._vertexFormat,n=e._ellipsoid,i=e._granularity,o=e._stRotation,r=e._polygonHierarchy,s=e._perPositionHeight,a=e._closeTop,c=e._closeBottom,u=e._arcType,f=e._textureCoordinates,h=l(f),A=r.positions;if(A.length<3)return;let g=e.rectangle,m=$n.polygonsFromHierarchy(r,h,uVe(g,A,n),!s,n,dVe(g,n,u,s)),_=m.hierarchy,y=m.polygons,C=function(w){return w},E=h?$n.polygonsFromHierarchy(f,!0,C,!1,n).polygons:void 0;if(_.length===0)return;let I=_[0].outerRing,b=hVe(I,g,n,o),S=[],B=e._height,v=e._extrudedHeight,P=e._perPositionHeightExtrude||!D.equalsEpsilon(B,v,0,D.EPSILON2),M={perPositionHeight:s,vertexFormat:t,geometry:void 0,rotationAxis:lVe(g,I,n).plane.normal,projectTo2d:fVe(g,I,n),boundingRectangle:b,ellipsoid:n,stRotation:o,textureCoordinates:void 0,bottom:!1,top:!0,wall:!1,extrude:!1,arcType:u},L;if(P)for(M.extrude=!0,M.top=a,M.bottom=c,M.shadowVolume=e._shadowVolume,M.offsetAttribute=e._offsetAttribute,L=0;L<y.length;L++){let w=eVe(n,y[L],h?E[L]:void 0,i,_[L],s,a,c,t,u),R;a&&c?(R=w.topAndBottom,M.geometry=$n.scaleToGeodeticHeightExtruded(R.geometry,B,v,n,s)):a?(R=w.topAndBottom,R.geometry.attributes.position.values=Ii.scaleToGeodeticHeight(R.geometry.attributes.position.values,B,n,!s),M.geometry=R.geometry):c&&(R=w.topAndBottom,R.geometry.attributes.position.values=Ii.scaleToGeodeticHeight(R.geometry.attributes.position.values,v,n,!0),M.geometry=R.geometry),(a||c)&&(M.wall=!1,R.geometry=cj(M),S.push(R));let O=w.walls;M.wall=!0;for(let k=0;k<O.length;k++){let Q=O[k];M.geometry=$n.scaleToGeodeticHeightExtruded(Q.geometry,B,v,n,s),Q.geometry=cj(M),S.push(Q)}}else for(L=0;L<y.length;L++){let w=new Pt({geometry:$n.createGeometryFromPositions(n,y[L],h?E[L]:void 0,i,s,t,u)});if(w.geometry.attributes.position.values=Ii.scaleToGeodeticHeight(w.geometry.attributes.position.values,B,n,!s),M.geometry=w.geometry,w.geometry=cj(M),l(e._offsetAttribute)){let R=w.geometry.attributes.position.values.length,O=e._offsetAttribute===hn.NONE?0:1,k=new Uint8Array(R/3).fill(O);w.geometry.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:k})}S.push(w)}let p=Vn.combineInstances(S)[0];p.attributes.position.values=new Float64Array(p.attributes.position.values),p.indices=Oe.createTypedArray(p.attributes.position.values.length/3,p.indices);let x=p.attributes,T=le.fromVertices(x.position.values);return t.position||delete x.position,new ht({attributes:x,indices:p.indices,primitiveType:p.primitiveType,boundingSphere:T,offsetAttribute:e._offsetAttribute})};cd.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new cd({polygonHierarchy:e._polygonHierarchy,ellipsoid:o,stRotation:e._stRotation,granularity:i,perPositionHeight:!1,extrudedHeight:r,height:s,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0,arcType:e._arcType})};function mVe(e){let t=-e._stRotation;if(t===0)return[0,0,0,1,1,0];let n=e._ellipsoid,i=e._polygonHierarchy.positions,o=e.rectangle;return ht._textureCoordinateRotationPoints(i,t,n,o)}Object.defineProperties(cd.prototype,{rectangle:{get:function(){if(!l(this._rectangle)){let e=this._polygonHierarchy.positions;this._rectangle=cd.computeRectangleFromPositions(e,this._ellipsoid,this._arcType)}return this._rectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=mVe(this)),this._textureCoordinateRotationPoints}}});var Mp=cd;function $E(e){this._ellipsoid=e.ellipsoid??te.default,this._positions=[...e.positions]}Object.defineProperties($E.prototype,{length:{get:function(){return this._positions.length}},positions:{get:function(){return this._positions}},ellipsoid:{get:function(){return this._ellipsoid}}});$E.clone=function(e,t){return l(t)?(t._ellipsoid=e.ellipsoid,t._positions.length=0,t._positions.push(...e.positions),t):new $E({positions:e.positions,ellipsoid:e.ellipsoid})};$E.equals=function(e,t){return e.ellipsoid.equals(t.ellipsoid)&&e.positions===t.positions};$E.prototype.computeRectangle=function(e){return Mp.computeRectangleFromPositions(this.positions,this.ellipsoid,void 0,e)};var AVe=new ae,kce=new d;$E.prototype.computeSphericalExtents=function(e){l(e)||(e=new ae);let t=this.computeRectangle(AVe),n=Ae.toCartesian(ae.southwest(t),this.ellipsoid,kce),i=Math.sqrt(n.x*n.x+n.y*n.y),o=D.fastApproximateAtan2(i,n.z),r=D.fastApproximateAtan2(n.x,n.y);return e.south=o,e.west=r,n=Ae.toCartesian(ae.northeast(t),this.ellipsoid,kce),i=Math.sqrt(n.x*n.x+n.y*n.y),o=D.fastApproximateAtan2(i,n.z),r=D.fastApproximateAtan2(n.x,n.y),e.north=o,e.east=r,e};var Qb=$E;function Uce(e){e=e??V.EMPTY_OBJECT,this.vertexArray=e.vertexArray,this.fragmentShaderSource=e.fragmentShaderSource,this.shaderProgram=e.shaderProgram,this.uniformMap=e.uniformMap,this.outputTexture=e.outputTexture,this.preExecute=e.preExecute,this.postExecute=e.postExecute,this.canceled=e.canceled,this.persists=e.persists??!1,this.pass=Be.COMPUTE,this.owner=e.owner}Uce.prototype.execute=function(e){e.execute(this)};var Tl=Uce;var xM=`in vec2 v_textureCoordinates; + +uniform int u_polygonsLength; +uniform int u_extentsLength; +uniform highp sampler2D u_polygonTexture; +uniform highp sampler2D u_extentsTexture; + +int getPolygonIndex(float dimension, vec2 coord) { + vec2 uv = coord.xy * dimension; + return int(floor(uv.y) * dimension + floor(uv.x)); +} + +vec2 getLookupUv(ivec2 dimensions, int i) { + int pixY = i / dimensions.x; + int pixX = i - (pixY * dimensions.x); + float pixelWidth = 1.0 / float(dimensions.x); + float pixelHeight = 1.0 / float(dimensions.y); + float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel + float v = (float(pixY) + 0.5) * pixelHeight; + return vec2(u, v); +} + +vec4 getExtents(int i) { + return texture(u_extentsTexture, getLookupUv(textureSize(u_extentsTexture, 0), i)); +} + +ivec2 getPositionsLengthAndExtentsIndex(int i) { + vec2 uv = getLookupUv(textureSize(u_polygonTexture, 0), i); + vec4 value = texture(u_polygonTexture, uv); + return ivec2(int(value.x), int(value.y)); +} + +vec2 getPolygonPosition(int i) { + vec2 uv = getLookupUv(textureSize(u_polygonTexture, 0), i); + return texture(u_polygonTexture, uv).xy; +} + +vec2 getCoordinates(vec2 textureCoordinates, vec4 extents) { + float latitude = mix(extents.x, extents.x + 1.0 / extents.z, textureCoordinates.y); + float longitude = mix(extents.y, extents.y + 1.0 / extents.w, textureCoordinates.x); + return vec2(latitude, longitude); +} + +void main() { + int lastPolygonIndex = 0; + out_FragColor = vec4(1.0); + + // Get the relevant region of the texture + float dimension = float(u_extentsLength); + if (u_extentsLength > 2) { + dimension = ceil(log2(float(u_extentsLength))); + } + int regionIndex = getPolygonIndex(dimension, v_textureCoordinates); + + for (int polygonIndex = 0; polygonIndex < u_polygonsLength; polygonIndex++) { + ivec2 positionsLengthAndExtents = getPositionsLengthAndExtentsIndex(lastPolygonIndex); + int positionsLength = positionsLengthAndExtents.x; + int polygonExtentsIndex = positionsLengthAndExtents.y; + lastPolygonIndex += 1; + + // Only compute signed distance for the relevant part of the atlas + if (polygonExtentsIndex == regionIndex) { + float clipAmount = czm_infinity; + vec4 extents = getExtents(polygonExtentsIndex); + vec2 textureOffset = vec2(mod(float(polygonExtentsIndex), dimension), floor(float(polygonExtentsIndex) / dimension)) / dimension; + vec2 p = getCoordinates((v_textureCoordinates - textureOffset) * dimension, extents); + float s = 1.0; + + // Check each edge for absolute distance + for (int i = 0, j = positionsLength - 1; i < positionsLength; j = i, i++) { + vec2 a = getPolygonPosition(lastPolygonIndex + i); + vec2 b = getPolygonPosition(lastPolygonIndex + j); + + vec2 ab = b - a; + vec2 pa = p - a; + float t = dot(pa, ab) / dot(ab, ab); + t = clamp(t, 0.0, 1.0); + + vec2 pq = pa - t * ab; + float d = length(pq); + + // Inside / outside computation to determine sign + bvec3 cond = bvec3(p.y >= a.y, + p.y < b.y, + ab.x * pa.y > ab.y * pa.x); + if (all(cond) || all(not(cond))) s = -s; + if (abs(d) < abs(clipAmount)) { + clipAmount = d; + } + } + + // Normalize the range to [0,1] + vec4 result = (s * vec4(clipAmount * length(extents.zw))) / 2.0 + 0.5; + // In the case where we've iterated through multiple polygons, take the minimum + out_FragColor = min(out_FragColor, result); + } + + lastPolygonIndex += positionsLength; + } +}`;function xs(e){e=e??V.EMPTY_OBJECT,this._polygons=[],this._totalPositions=0,this.enabled=e.enabled??!0,this.inverse=e.inverse??!1,this.polygonAdded=new _e,this.polygonRemoved=new _e,this._owner=void 0,this._float32View=void 0,this._extentsFloat32View=void 0,this._extentsCount=0,this._polygonsTexture=void 0,this._extentsTexture=void 0,this._signedDistanceTexture=void 0,this._signedDistanceComputeCommand=void 0;let t=e.polygons;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this._polygons.push(t[i])}}Object.defineProperties(xs.prototype,{length:{get:function(){return this._polygons.length}},totalPositions:{get:function(){return this._totalPositions}},extentsTexture:{get:function(){return this._extentsTexture}},extentsCount:{get:function(){return this._extentsCount}},pixelsNeededForExtents:{get:function(){return this.length}},pixelsNeededForPolygonPositions:{get:function(){return this.totalPositions+this.length}},clippingTexture:{get:function(){return this._signedDistanceTexture}},owner:{get:function(){return this._owner}},clippingPolygonsState:{get:function(){return this.inverse?-this.extentsCount:this.extentsCount}}});xs.prototype.add=function(e){let t=this._polygons.length;return this._polygons.push(e),this.polygonAdded.raiseEvent(e,t),e};xs.prototype.get=function(e){return this._polygons[e]};xs.prototype.contains=function(e){return this._polygons.some(t=>Qb.equals(t,e))};xs.prototype.remove=function(e){let t=this._polygons,n=t.findIndex(i=>Qb.equals(i,e));return n===-1?!1:(t.splice(n,1),this.polygonRemoved.raiseEvent(e,n),!0)};var pVe=new ae;function gVe(e){let t=[],n=[],i=e.length;for(let r=0;r<i;++r){let a=e[r].computeSphericalExtents(),c=Math.max(a.height*2.5,.001),u=Math.max(a.width*2.5,.001),f=ae.clone(a);f.south-=c,f.west-=u,f.north+=c,f.east+=u,f.south=Math.max(f.south,-Math.PI),f.west=Math.max(f.west,-Math.PI),f.north=Math.min(f.north,Math.PI),f.east=Math.min(f.east,Math.PI);let h=[r];for(let A=0;A<t.length;++A){let g=t[A];if(l(g)&&l(ae.simpleIntersection(g,f))&&!ae.equals(g,f)){let m=n[A];h.push(...m),m.reduce((_,y)=>ae.union(e[y].computeSphericalExtents(pVe),_,_),a),t[A]=void 0,n[A]=void 0,c=Math.max(a.height*2.5,.001),u=Math.max(a.width*2.5,.001),f=ae.clone(a,f),f.south-=c,f.west-=u,f.north+=c,f.east+=u,f.south=Math.max(f.south,-Math.PI),f.west=Math.max(f.west,-Math.PI),f.north=Math.min(f.north,Math.PI),f.east=Math.min(f.east,Math.PI),A=-1}}t.push(f),n.push(h)}let o=new Map;return n.filter(l).forEach((r,s)=>r.forEach(a=>o.set(a,s))),{extentsList:t.filter(l),extentsIndexByPolygon:o}}xs.prototype.removeAll=function(){let e=this._polygons,t=e.length;for(let n=0;n<t;++n){let i=e[n];this.polygonRemoved.raiseEvent(i,n)}this._polygons=[]};function _Ve(e){let t=e._float32View,n=e._extentsFloat32View,i=e._polygons,{extentsList:o,extentsIndexByPolygon:r}=gVe(i),s=0;for(let[c,u]of i.entries()){let f=u.length;t[s++]=f,t[s++]=r.get(c);for(let h=0;h<f;++h){let A=u.positions[h],g=Math.hypot(A.x,A.y),m=D.fastApproximateAtan2(g,A.z),_=D.fastApproximateAtan2(A.x,A.y);t[s++]=m,t[s++]=_}}let a=0;for(let c of o){let u=1/(c.east-c.west),f=1/(c.north-c.south);n[a++]=c.south,n[a++]=c.west,n[a++]=f,n[a++]=u}e._extentsCount=o.length}var lj=new U;xs.prototype.update=function(e){let t=e.context;if(!xs.isSupported(e))throw new ce("ClippingPolygonCollections are only supported for WebGL 2.");let n=this._polygons.reduce((s,a)=>s+a.length,0);if(n===this.totalPositions||(this._totalPositions=n,this.length===0))return;l(this._signedDistanceComputeCommand)&&(this._signedDistanceComputeCommand.canceled=!0,this._signedDistanceComputeCommand=void 0);let i=this._polygonsTexture,o=this._extentsTexture,r=this._signedDistanceTexture;if(l(i)){let s=i.width*i.height;(s<this.pixelsNeededForPolygonPositions||this.pixelsNeededForPolygonPositions<.25*s)&&(i.destroy(),i=void 0,this._polygonsTexture=void 0)}if(!l(i)){let s=xs.getTextureResolution(i,this.pixelsNeededForPolygonPositions,lj);i=new Mt({context:t,width:s.x,height:s.y,pixelFormat:$e.RG,pixelDatatype:Ve.FLOAT,sampler:on.NEAREST,flipY:!1}),this._float32View=new Float32Array(s.x*s.y*2),this._polygonsTexture=i}if(l(o)){let s=o.width*o.height;(s<this.pixelsNeededForExtents||this.pixelsNeededForExtents<.25*s)&&(o.destroy(),o=void 0,this._extentsTexture=void 0)}if(!l(o)){let s=xs.getTextureResolution(o,this.pixelsNeededForExtents,lj);o=new Mt({context:t,width:s.x,height:s.y,pixelFormat:$e.RGBA,pixelDatatype:Ve.FLOAT,sampler:on.NEAREST,flipY:!1}),this._extentsFloat32View=new Float32Array(s.x*s.y*4),this._extentsTexture=o}if(_Ve(this),o.copyFrom({source:{width:o.width,height:o.height,arrayBufferView:this._extentsFloat32View}}),i.copyFrom({source:{width:i.width,height:i.height,arrayBufferView:this._float32View}}),!l(r)){let s=xs.getClippingDistanceTextureResolution(this,lj);r=new Mt({context:t,width:s.x,height:s.y,pixelFormat:t.webgl2?$e.RED:$e.LUMINANCE,pixelDatatype:Ve.FLOAT,sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:mi.LINEAR}),flipY:!1}),this._signedDistanceTexture=r}this._signedDistanceComputeCommand=yVe(this)};xs.prototype.queueCommands=function(e){l(this._signedDistanceComputeCommand)&&e.commandList.push(this._signedDistanceComputeCommand)};function yVe(e){let t=e._polygonsTexture,n=e._extentsTexture;return new Tl({fragmentShaderSource:xM,outputTexture:e._signedDistanceTexture,uniformMap:{u_polygonsLength:function(){return e.length},u_extentsLength:function(){return e.extentsCount},u_extentsTexture:function(){return n},u_polygonTexture:function(){return t}},persists:!1,owner:e,postExecute:()=>{e._signedDistanceComputeCommand=void 0}})}var Gce=new ae,CVe=new ae;xs.prototype.computeIntersectionWithBoundingVolume=function(e,t){let n=this._polygons,i=n.length,o=tn.OUTSIDE;this.inverse&&(o=tn.INSIDE);for(let r=0;r<i;++r){let a=n[r].computeRectangle(),c=e.rectangle;if(!l(c)&&l(e.boundingVolume?.computeCorners)){let f=e.boundingVolume.computeCorners();c=ae.fromCartesianArray(f,t,Gce)}l(c)||(c=ae.fromBoundingSphere(e.boundingSphere,t,Gce));let u=ae.simpleIntersection(c,a,CVe);l(u)&&(o=tn.INTERSECTING)}return o};xs.setOwner=function(e,t,n){e!==t[n]&&(t[n]=t[n]&&t[n].destroy(),l(e)&&(e._owner=t,t[n]=e))};xs.isSupported=function(e){return e?.context.webgl2};xs.getTextureResolution=function(e,t,n){if(l(e))return n.x=e.width,n.y=e.height,n;let i=Yt.maximumTextureSize;return n.x=Math.min(t,i),n.y=Math.ceil(t/n.x),n.y*=2,n};xs.getClippingDistanceTextureResolution=function(e,t){let n=e.signedDistanceTexture;return l(n)?(t.x=n.width,t.y=n.height,t):(t.x=Math.min(Yt.maximumTextureSize,4096),t.y=Math.min(Yt.maximumTextureSize,4096),t)};xs.getClippingExtentsTextureResolution=function(e,t){let n=e.extentsTexture;return l(n)?(t.x=n.width,t.y=n.height,t):xs.getTextureResolution(n,e.pixelsNeededForExtents,t)};xs.prototype.isDestroyed=function(){return!1};xs.prototype.destroy=function(){return l(this._signedDistanceComputeCommand)&&(this._signedDistanceComputeCommand.canceled=!0),this._polygonsTexture=this._polygonsTexture&&this._polygonsTexture.destroy(),this._extentsTexture=this._extentsTexture&&this._extentsTexture.destroy(),this._signedDistanceTexture=this._signedDistanceTexture&&this._signedDistanceTexture.destroy(),ue(this)};var wh=xs;var bM={NONE:0,SCENE_LIGHT:1,SUNLIGHT:2};bM.fromGlobeFlags=function(e){return e.enableLighting&&e.dynamicAtmosphereLighting?e.dynamicAtmosphereLightingFromSun?bM.SUNLIGHT:bM.SCENE_LIGHT:bM.NONE};var Np=Object.freeze(bM);function zce(){this.lightIntensity=10,this.rayleighCoefficient=new d(55e-7,13e-6,284e-7),this.mieCoefficient=new d(21e-6,21e-6,21e-6),this.rayleighScaleHeight=1e4,this.mieScaleHeight=3200,this.mieAnisotropy=.9,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this.dynamicLighting=Np.NONE}zce.requiresColorCorrect=function(e){return!(D.equalsEpsilon(e.hueShift,0,D.EPSILON7)&&D.equalsEpsilon(e.saturationShift,0,D.EPSILON7)&&D.equalsEpsilon(e.brightnessShift,0,D.EPSILON7))};var e0=zce;var Bh=`uniform vec3 u_radiiAndDynamicAtmosphereColor; + +uniform float u_atmosphereLightIntensity; +uniform float u_atmosphereRayleighScaleHeight; +uniform float u_atmosphereMieScaleHeight; +uniform float u_atmosphereMieAnisotropy; +uniform vec3 u_atmosphereRayleighCoefficient; +uniform vec3 u_atmosphereMieCoefficient; + +const float ATMOSPHERE_THICKNESS = 111e3; // The thickness of the atmosphere in meters. +const int PRIMARY_STEPS_MAX = 16; // Maximum number of times the ray from the camera to the world position (primary ray) is sampled. +const int LIGHT_STEPS_MAX = 4; // Maximum number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray. + +/** + * This function computes the colors contributed by Rayliegh and Mie scattering on a given ray, as well as + * the transmittance value for the ray. + * + * @param {czm_ray} primaryRay The ray from the camera to the position. + * @param {float} primaryRayLength The length of the primary ray. + * @param {vec3} lightDirection The direction of the light to calculate the scattering from. + * @param {vec3} rayleighColor The variable the Rayleigh scattering will be written to. + * @param {vec3} mieColor The variable the Mie scattering will be written to. + * @param {float} opacity The variable the transmittance will be written to. + * @glslFunction + */ +void computeScattering( + czm_ray primaryRay, + float primaryRayLength, + vec3 lightDirection, + float atmosphereInnerRadius, + out vec3 rayleighColor, + out vec3 mieColor, + out float opacity +) { + + // Initialize the default scattering amounts to 0. + rayleighColor = vec3(0.0); + mieColor = vec3(0.0); + opacity = 0.0; + + float atmosphereOuterRadius = atmosphereInnerRadius + ATMOSPHERE_THICKNESS; + + vec3 origin = vec3(0.0); + + // Calculate intersection from the camera to the outer ring of the atmosphere. + czm_raySegment primaryRayAtmosphereIntersect = czm_raySphereIntersectionInterval(primaryRay, origin, atmosphereOuterRadius); + + // Return empty colors if no intersection with the atmosphere geometry. + if (primaryRayAtmosphereIntersect == czm_emptyRaySegment) { + return; + } + + // To deal with smaller values of PRIMARY_STEPS (e.g. 4) + // we implement a split strategy: sky or horizon. + // For performance reasons, instead of a if/else branch + // a soft choice is implemented through a weight 0.0 <= w_stop_gt_lprl <= 1.0 + float x = 1e-7 * primaryRayAtmosphereIntersect.stop / length(primaryRayLength); + // Value close to 0.0: close to the horizon + // Value close to 1.0: above in the sky + float w_stop_gt_lprl = 0.5 * (1.0 + czm_approximateTanh(x)); + + // The ray should start from the first intersection with the outer atmopshere, or from the camera position, if it is inside the atmosphere. + float start_0 = primaryRayAtmosphereIntersect.start; + primaryRayAtmosphereIntersect.start = max(primaryRayAtmosphereIntersect.start, 0.0); + // The ray should end at the exit from the atmosphere or at the distance to the vertex, whichever is smaller. + primaryRayAtmosphereIntersect.stop = min(primaryRayAtmosphereIntersect.stop, length(primaryRayLength)); + + // For the number of ray steps, distinguish inside or outside atmosphere (outer space) + // (1) from outer space we have to use more ray steps to get a realistic rendering + // (2) within atmosphere we need fewer steps for faster rendering + float x_o_a = start_0 - ATMOSPHERE_THICKNESS; // ATMOSPHERE_THICKNESS used as an ad-hoc constant, no precise meaning here, only the order of magnitude matters + float w_inside_atmosphere = 1.0 - 0.5 * (1.0 + czm_approximateTanh(x_o_a)); + int PRIMARY_STEPS = PRIMARY_STEPS_MAX - int(w_inside_atmosphere * 12.0); // Number of times the ray from the camera to the world position (primary ray) is sampled. + int LIGHT_STEPS = LIGHT_STEPS_MAX - int(w_inside_atmosphere * 2.0); // Number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray. + + // Setup for sampling positions along the ray - starting from the intersection with the outer ring of the atmosphere. + float rayPositionLength = primaryRayAtmosphereIntersect.start; + // (1) Outside the atmosphere: constant rayStepLength + // (2) Inside atmosphere: variable rayStepLength to compensate the rough rendering of the smaller number of ray steps + float totalRayLength = primaryRayAtmosphereIntersect.stop - rayPositionLength; + float rayStepLengthIncrease = w_inside_atmosphere * ((1.0 - w_stop_gt_lprl) * totalRayLength / (float(PRIMARY_STEPS * (PRIMARY_STEPS + 1)) / 2.0)); + float rayStepLength = max(1.0 - w_inside_atmosphere, w_stop_gt_lprl) * totalRayLength / max(7.0 * w_inside_atmosphere, float(PRIMARY_STEPS)); + + vec3 rayleighAccumulation = vec3(0.0); + vec3 mieAccumulation = vec3(0.0); + vec2 opticalDepth = vec2(0.0); + vec2 heightScale = vec2(u_atmosphereRayleighScaleHeight, u_atmosphereMieScaleHeight); + + // Sample positions on the primary ray. + for (int i = 0; i < PRIMARY_STEPS_MAX; ++i) { + + // The loop should be: for (int i = 0; i < PRIMARY_STEPS; ++i) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (i >= PRIMARY_STEPS) { + break; + } + + // Calculate sample position along viewpoint ray. + vec3 samplePosition = primaryRay.origin + primaryRay.direction * (rayPositionLength + rayStepLength); + + // Calculate height of sample position above ellipsoid. + float sampleHeight = length(samplePosition) - atmosphereInnerRadius; + + // Calculate and accumulate density of particles at the sample position. + vec2 sampleDensity = exp(-sampleHeight / heightScale) * rayStepLength; + opticalDepth += sampleDensity; + + // Generate ray from the sample position segment to the light source, up to the outer ring of the atmosphere. + czm_ray lightRay = czm_ray(samplePosition, lightDirection); + czm_raySegment lightRayAtmosphereIntersect = czm_raySphereIntersectionInterval(lightRay, origin, atmosphereOuterRadius); + + float lightStepLength = lightRayAtmosphereIntersect.stop / float(LIGHT_STEPS); + float lightPositionLength = 0.0; + + vec2 lightOpticalDepth = vec2(0.0); + + // Sample positions along the light ray, to accumulate incidence of light on the latest sample segment. + for (int j = 0; j < LIGHT_STEPS_MAX; ++j) { + + // The loop should be: for (int j = 0; i < LIGHT_STEPS; ++j) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (j >= LIGHT_STEPS) { + break; + } + + // Calculate sample position along light ray. + vec3 lightPosition = samplePosition + lightDirection * (lightPositionLength + lightStepLength * 0.5); + + // Calculate height of the light sample position above ellipsoid. + float lightHeight = length(lightPosition) - atmosphereInnerRadius; + + // Calculate density of photons at the light sample position. + lightOpticalDepth += exp(-lightHeight / heightScale) * lightStepLength; + + // Increment distance on light ray. + lightPositionLength += lightStepLength; + } + + // Compute attenuation via the primary ray and the light ray. + vec3 attenuation = exp(-((u_atmosphereMieCoefficient * (opticalDepth.y + lightOpticalDepth.y)) + (u_atmosphereRayleighCoefficient * (opticalDepth.x + lightOpticalDepth.x)))); + + // Accumulate the scattering. + rayleighAccumulation += sampleDensity.x * attenuation; + mieAccumulation += sampleDensity.y * attenuation; + + // Increment distance on primary ray. + rayPositionLength += (rayStepLength += rayStepLengthIncrease); + } + + // Compute the scattering amount. + rayleighColor = u_atmosphereRayleighCoefficient * rayleighAccumulation; + mieColor = u_atmosphereMieCoefficient * mieAccumulation; + + // Compute the transmittance i.e. how much light is passing through the atmosphere. + opacity = length(exp(-((u_atmosphereMieCoefficient * opticalDepth.y) + (u_atmosphereRayleighCoefficient * opticalDepth.x)))); +} + +vec4 computeAtmosphereColor( + vec3 positionWC, + vec3 lightDirection, + vec3 rayleighColor, + vec3 mieColor, + float opacity +) { + // Setup the primary ray: from the camera position to the vertex position. + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + + float cosAngle = dot(cameraToPositionWCDirection, lightDirection); + float cosAngleSq = cosAngle * cosAngle; + + float G = u_atmosphereMieAnisotropy; + float GSq = G * G; + + // The Rayleigh phase function. + float rayleighPhase = 3.0 / (50.2654824574) * (1.0 + cosAngleSq); + // The Mie phase function. + float miePhase = 3.0 / (25.1327412287) * ((1.0 - GSq) * (cosAngleSq + 1.0)) / (pow(1.0 + GSq - 2.0 * cosAngle * G, 1.5) * (2.0 + GSq)); + + // The final color is generated by combining the effects of the Rayleigh and Mie scattering. + vec3 rayleigh = rayleighPhase * rayleighColor; + vec3 mie = miePhase * mieColor; + + vec3 color = (rayleigh + mie) * u_atmosphereLightIntensity; + + return vec4(color, opacity); +} +`;var TM=`uniform samplerCube u_radianceMap; + +in vec2 v_textureCoordinates; + + +const float twoSqrtPi = 2.0 * sqrt(czm_pi); + +// Coutesy of https://www.ppsloan.org/publications/StupidSH36.pdf +float computeShBasis(int index, vec3 s) { + if (index == 0) { // l = 0, m = 0 + return 1.0 / twoSqrtPi; + } + + if (index == 1) { // l = 1, m = -1 + return -sqrt(3.0) * s.y / twoSqrtPi; + } + + if (index == 2) { // l = 1, m = 0 + return sqrt(3.0) * s.z / twoSqrtPi; + } + + if (index == 3) { // l = 1, m = 1 + return -sqrt(3.0) * s.x / twoSqrtPi; + } + + if (index == 4) { // l = 2, m = -2 + return sqrt(15.0) * s.y * s.x / twoSqrtPi; + } + + if (index == 5) { // l = 2, m = -1 + return -sqrt(15.0) * s.y * s.z / twoSqrtPi; + } + + if (index == 6) { // l = 2, m = 0 + return sqrt(5.0) * (3.0 * s.z * s.z - 1.0) / 2.0 / twoSqrtPi; + } + + if (index == 7) { // l = 2, m = 1 + return -sqrt(15.0) * s.x * s.z / twoSqrtPi; + } + + if (index == 8) { // l = 2, m = 2 + return sqrt(15.0) * (s.x * s.x - s.y * s.y) / 2.0 / twoSqrtPi; + } + + return 0.0; +} + +float vdcRadicalInverse(int i) +{ + float r; + float base = 2.0; + float value = 0.0; + float invBase = 1.0 / base; + float invBi = invBase; + for (int x = 0; x < 100; x++) + { + if (i <= 0) + { + break; + } + r = mod(float(i), base); + value += r * invBi; + invBi *= invBase; + i = int(float(i) * invBase); + } + return value; +} + +vec2 hammersley2D(int i, int N) +{ + return vec2(float(i) / float(N), vdcRadicalInverse(i)); +} + +// Sample count is relatively low for the sake of performance, but should still be enough to capture directionality needed for third-order harmonics +const int samples = 256; +const float solidAngle = 1.0 / float(samples); + +void main() { + // Get the current coefficient based on the uv + vec2 uv = v_textureCoordinates.xy * 3.0; + int coefficientIndex = int(floor(uv.y) * 3.0 + floor(uv.x)); + + for (int i = 0; i < samples; ++i) { + vec2 xi = hammersley2D(i, samples); + float phi = czm_twoPi * xi.x; + float cosTheta = 1.0 - 2.0 * sqrt(1.0 - xi.y * xi.y); + float sinTheta = sqrt(1.0 - cosTheta * cosTheta); + vec3 direction = normalize(vec3(sinTheta * cos(phi), cosTheta, sinTheta * sin(phi))); + + // Generate the spherical harmonics basis from the direction + float Ylm = computeShBasis(coefficientIndex, direction); + + vec3 lookupDirection = -direction.xyz; + lookupDirection.z = -lookupDirection.z; + + vec4 color = czm_textureCube(u_radianceMap, lookupDirection, 0.0); + + // Use the relevant function for this coefficient + out_FragColor += Ylm * color * solidAngle * sinTheta; + } + +} +`;var SM=`precision highp float; + +in vec2 v_textureCoordinates; + +uniform vec3 u_faceDirection; // Current cubemap face +uniform vec3 u_positionWC; +uniform mat4 u_enuToFixedFrame; +uniform vec4 u_brightnessSaturationGammaIntensity; +uniform vec4 u_groundColor; // alpha component represent albedo + +vec4 getCubeMapDirection(vec2 uv, vec3 faceDir) { + vec2 scaledUV = uv * 2.0 - 1.0; + + if (faceDir.x != 0.0) { + return vec4(faceDir.x, scaledUV.x * faceDir.x, -scaledUV.y, 0.0); + } else if (faceDir.y != 0.0) { + return vec4(scaledUV.x, -scaledUV.y * faceDir.y, faceDir.y, 0.0); + } else { + return vec4(scaledUV.x * faceDir.z, -faceDir.z, -scaledUV.y, 0.0); + } +} + +void main() { + float height = length(u_positionWC); + float atmosphereInnerRadius = u_radiiAndDynamicAtmosphereColor.y; + float ellipsoidHeight = max(height - atmosphereInnerRadius, 0.0); + + // Scale the position to ensure the sky color is present, even when underground. + vec3 positionWC = u_positionWC / height * (ellipsoidHeight + atmosphereInnerRadius); + + float atmosphereOuterRadius = u_radiiAndDynamicAtmosphereColor.x; + float atmosphereHeight = atmosphereOuterRadius - atmosphereInnerRadius; + + vec3 direction = (u_enuToFixedFrame * getCubeMapDirection(v_textureCoordinates, u_faceDirection)).xyz; + vec3 normalizedDirection = normalize(direction); + + czm_ray ray = czm_ray(positionWC, normalizedDirection); + czm_raySegment intersection = czm_raySphereIntersectionInterval(ray, vec3(0.0), atmosphereInnerRadius); + if (!czm_isEmpty(intersection)) { + intersection = czm_rayEllipsoidIntersectionInterval(ray, vec3(0.0), czm_ellipsoidInverseRadii); + } + + bool onEllipsoid = intersection.start >= 0.0; + float rayLength = czm_branchFreeTernary(onEllipsoid, intersection.start, atmosphereOuterRadius); + + // Compute sky color for each position on a sphere at radius centered around the provided position's origin + vec3 skyPositionWC = positionWC + normalizedDirection * rayLength; + + float lightEnum = u_radiiAndDynamicAtmosphereColor.z; + vec3 lightDirectionWC = normalize(czm_getDynamicAtmosphereLightDirection(skyPositionWC, lightEnum)); + vec3 mieColor; + vec3 rayleighColor; + float opacity; + czm_computeScattering( + ray, + rayLength, + lightDirectionWC, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); + + vec4 atmopshereColor = czm_computeAtmosphereColor(ray, lightDirectionWC, rayleighColor, mieColor, opacity); + +#ifdef ATMOSPHERE_COLOR_CORRECT + const bool ignoreBlackPixels = true; + atmopshereColor.rgb = czm_applyHSBShift(atmopshereColor.rgb, czm_atmosphereHsbShift, ignoreBlackPixels); +#endif + + vec3 lookupDirection = -normalizedDirection; + // Flipping the X vector is a cheap way to get the inverse of czm_temeToPseudoFixed, since that's a rotation about Z. + lookupDirection.x = -lookupDirection.x; + lookupDirection = -normalize(czm_temeToPseudoFixed * lookupDirection); + lookupDirection.x = -lookupDirection.x; + + // Values outside the atmopshere are rendered as black, when they should be treated as transparent + float skyAlpha = clamp((1.0 - ellipsoidHeight / atmosphereHeight) * atmopshereColor.a, 0.0, 1.0); + skyAlpha = czm_branchFreeTernary(length(atmopshereColor.rgb) <= czm_epsilon7, 0.0, skyAlpha); // Treat black as transparent + + // Blend starmap with atmopshere scattering + float intensity = u_brightnessSaturationGammaIntensity.w; + vec4 sceneSkyBoxColor = czm_textureCube(czm_environmentMap, lookupDirection); + vec3 skyBackgroundColor = mix(czm_backgroundColor.rgb, sceneSkyBoxColor.rgb, sceneSkyBoxColor.a); + vec4 combinedSkyColor = vec4(mix(skyBackgroundColor, atmopshereColor.rgb * intensity, skyAlpha), 1.0); + + // Compute ground color based on amount of reflected light, then blend it with ground atmosphere based on height + vec3 up = normalize(positionWC); + float occlusion = max(dot(lightDirectionWC, up), 0.05); + vec4 groundColor = vec4(u_groundColor.rgb * u_groundColor.a * (vec3(intensity * occlusion) + atmopshereColor.rgb), 1.0); + vec4 blendedGroundColor = mix(groundColor, atmopshereColor, clamp(ellipsoidHeight / atmosphereHeight, 0.0, 1.0)); + + vec4 color = czm_branchFreeTernary(onEllipsoid, blendedGroundColor, combinedSkyColor); + + float brightness = u_brightnessSaturationGammaIntensity.x; + float saturation = u_brightnessSaturationGammaIntensity.y; + float gamma = u_brightnessSaturationGammaIntensity.z; + +#ifdef ENVIRONMENT_COLOR_CORRECT + color.rgb = mix(vec3(0.0), color.rgb, brightness); + color.rgb = czm_saturation(color.rgb, saturation); +#endif + color.rgb = pow(color.rgb, vec3(gamma)); // Normally this would be in the ifdef above, but there is a precision issue with the atmopshere scattering transmittance (alpha). Having this line is a workaround for that issue, even when gamma is 1.0. + color.rgb = czm_gammaCorrect(color.rgb); + + out_FragColor = color; +} +`;var wM=`precision highp float; + +in vec3 v_textureCoordinates; + +uniform float u_roughness; +uniform samplerCube u_radianceTexture; +uniform vec3 u_faceDirection; + +float vdcRadicalInverse(int i) +{ + float r; + float base = 2.0; + float value = 0.0; + float invBase = 1.0 / base; + float invBi = invBase; + for (int x = 0; x < 100; x++) + { + if (i <= 0) + { + break; + } + r = mod(float(i), base); + value += r * invBi; + invBi *= invBase; + i = int(float(i) * invBase); + } + return value; +} + +vec2 hammersley2D(int i, int N) +{ + return vec2(float(i) / float(N), vdcRadicalInverse(i)); +} + +vec3 importanceSampleGGX(vec2 xi, float alphaRoughness, vec3 N) +{ + float alphaRoughnessSquared = alphaRoughness * alphaRoughness; + float phi = czm_twoPi * xi.x; + float cosTheta = sqrt((1.0 - xi.y) / (1.0 + (alphaRoughnessSquared - 1.0) * xi.y)); + float sinTheta = sqrt(1.0 - cosTheta * cosTheta); + vec3 H = vec3(sinTheta * cos(phi), sinTheta * sin(phi), cosTheta); + vec3 upVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 tangentX = normalize(cross(upVector, N)); + vec3 tangentY = cross(N, tangentX); + return tangentX * H.x + tangentY * H.y + N * H.z; +} + +// Sample count is relatively low for the sake of performance, but should still be enough to prevent artifacting in lower roughnesses +const int samples = 128; + +void main() { + vec3 normal = u_faceDirection; + vec3 V = normalize(v_textureCoordinates); + float roughness = u_roughness; + + vec4 color = vec4(0.0); + float weight = 0.0; + for (int i = 0; i < samples; ++i) { + vec2 xi = hammersley2D(i, samples); + vec3 H = importanceSampleGGX(xi, roughness, V); + vec3 L = 2.0 * dot(V, H) * H - V; // reflected vector + + float NdotL = max(dot(V, L), 0.0); + if (NdotL > 0.0) { + color += vec4(czm_textureCube(u_radianceTexture, L).rgb, 1.0) * NdotL; + weight += NdotL; + } + } + out_FragColor = color / weight; +} +`;var BM=`in vec3 position; +out vec3 v_textureCoordinates; + +uniform vec3 u_faceDirection; + +vec3 getCubeMapDirection(vec2 uv, vec3 faceDir) { + vec2 scaledUV = uv; + + if (faceDir.x != 0.0) { + return vec3(faceDir.x, scaledUV.y, scaledUV.x * faceDir.x); + } else if (faceDir.y != 0.0) { + return vec3(scaledUV.x, -faceDir.y, -scaledUV.y * faceDir.y); + } else { + return vec3(scaledUV.x * faceDir.z, scaledUV.y, -faceDir.z); + } +} + +void main() +{ + v_textureCoordinates = getCubeMapDirection(position.xy, u_faceDirection); + v_textureCoordinates.y = -v_textureCoordinates.y; + v_textureCoordinates.z = -v_textureCoordinates.z; + gl_Position = vec4(position, 1.0); +} +`;function Ai(e){this._position=void 0,this._radianceMapDirty=!1,this._radianceCommandsDirty=!1,this._convolutionsCommandsDirty=!1,this._irradianceCommandDirty=!1,this._irradianceTextureDirty=!1,this._sphericalHarmonicCoefficientsDirty=!1,this._shouldRegenerateShaders=!1,this._shouldReset=!1,e=e??V.EMPTY_OBJECT;let t=Math.min(e.mipmapLevels??7,Math.log2(Yt.maximumCubeMapSize));this._mipmapLevels=t,this._radianceMapComputeCommands=new Array(6),this._convolutionComputeCommands=new Array((t-1)*6),this._irradianceComputeCommand=void 0,this._radianceMapFS=void 0,this._irradianceMapFS=void 0,this._convolveSP=void 0,this._va=void 0,this._radianceMapTextures=new Array(6),this._specularMapTextures=new Array((t-1)*6),this._radianceCubeMap=void 0,this._irradianceMapTexture=void 0,this._sphericalHarmonicCoefficients=Ai.DEFAULT_SPHERICAL_HARMONIC_COEFFICIENTS.slice(),this._lastTime=new K;let n=Math.pow(2,t-1);this._textureDimensions=new U(n,n),this._radiiAndDynamicAtmosphereColor=new d,this._sceneEnvironmentMap=void 0,this._backgroundColor=void 0,this._owner=void 0,this.enabled=e.enabled??!0,this.shouldUpdate=!0,this.maximumSecondsDifference=e.maximumSecondsDifference??3600,this.maximumPositionEpsilon=e.maximumPositionEpsilon??1e3,this.atmosphereScatteringIntensity=e.atmosphereScatteringIntensity??2,this.gamma=e.gamma??1,this.brightness=e.brightness??1,this.saturation=e.saturation??1,this.groundColor=e.groundColor??Ai.AVERAGE_EARTH_GROUND_COLOR,this.groundAlbedo=e.groundAlbedo??.31}Object.defineProperties(Ai.prototype,{owner:{get:function(){return this._owner}},shouldRegenerateShaders:{get:function(){return this._shouldRegenerateShaders}},position:{get:function(){return this._position},set:function(e){d.equalsEpsilon(e,this._position,0,this.maximumPositionEpsilon)||(this._position=d.clone(e,this._position),this._shouldReset=!0)}},radianceCubeMap:{get:function(){return this._radianceCubeMap}},maximumMipmapLevel:{get:function(){return this._mipmapLevels}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients}}});Ai._maximumComputeCommandCount=8;Ai._activeComputeCommandCount=0;Ai._nextFrameCommandQueue=[];Ai._queueCommand=(e,t)=>{if(Ai._activeComputeCommandCount>=Ai._maximumComputeCommandCount){Ai._nextFrameCommandQueue.push(e);return}t.commandList.push(e),Ai._activeComputeCommandCount++};Ai._updateCommandQueue=e=>{if(Ai._maximumComputeCommandCount=Math.log2(Yt.maximumCubeMapSize),Ai._nextFrameCommandQueue.length>0&&Ai._activeComputeCommandCount<Ai._maximumComputeCommandCount){let t=Ai._nextFrameCommandQueue.shift();for(;l(t)&&Ai._activeComputeCommandCount<Ai._maximumComputeCommandCount;){if(t.owner.isDestroyed()||t.canceled){t=Ai._nextFrameCommandQueue.shift();continue}e.commandList.push(t),Ai._activeComputeCommandCount++,t=Ai._nextFrameCommandQueue.shift()}l(t)&&Ai._nextFrameCommandQueue.push(t)}};Ai.setOwner=function(e,t,n){e!==t[n]&&(t[n]=t[n]&&t[n].destroy(),l(e)&&(e._owner=t,t[n]=e))};Ai.prototype.reset=function(){let e=this._radianceMapComputeCommands.length;for(let t=0;t<e;++t)l(this._radianceMapComputeCommands[t])&&(this._radianceMapComputeCommands[t].canceled=!0),this._radianceMapComputeCommands[t]=void 0;e=this._convolutionComputeCommands.length;for(let t=0;t<e;++t)l(this._convolutionComputeCommands[t])&&(this._convolutionComputeCommands[t].canceled=!0),this._convolutionComputeCommands[t]=void 0;l(this._irradianceComputeCommand)&&(this._irradianceComputeCommand.canceled=!0,this._irradianceComputeCommand=void 0),this._radianceMapDirty=!0,this._radianceCommandsDirty=!0,this._convolutionsCommandsDirty=!1,this._irradianceCommandDirty=!1};var EVe=new d,IVe=new d;function xVe(e,t){let n=e._position,i=t.atmosphere,o=t.mapProjection.ellipsoid,r=o.scaleToGeodeticSurface(n,IVe),s=1.025,a=EVe,c=l(r)?d.magnitude(r):o.maximumRadius;return a.x=c*s,a.y=c,a.z=i.dynamicLighting,!d.equalsEpsilon(e._radiiAndDynamicAtmosphereColor,a)||t.environmentMap!==e._sceneEnvironmentMap||t.backgroundColor!==e._backgroundColor?(d.clone(a,e._radiiAndDynamicAtmosphereColor),e._sceneEnvironmentMap=t.environmentMap,e._backgroundColor=t.backgroundColor,!0):!1}var Vce=new d,bVe=new N,TVe=new se,SVe=new G;function wVe(e,t){let n=t.context,i=e._textureDimensions;if(l(e._radianceCubeMap)||(e._radianceCubeMap=new kr({context:n,width:i.x,height:i.y,pixelDatatype:Ve.UNSIGNED_BYTE,pixelFormat:$e.RGBA})),e._radianceCommandsDirty){let o=e._radianceMapFS;l(o)||(o=new He({sources:[Bh,SM]}),e._radianceMapFS=o),e0.requiresColorCorrect(t.atmosphere)&&o.defines.push("ATMOSPHERE_COLOR_CORRECT");let r=e._position,s=e._radiiAndDynamicAtmosphereColor,a=t.mapProjection.ellipsoid,c=kt.eastNorthUpToFixedFrame(r,a,bVe),u=TVe;u.x=e.brightness,u.y=e.saturation,u.z=e.gamma,u.w=e.atmosphereScatteringIntensity,(e.brightness!==1||e.saturation!==1||e.gamma!==1)&&o.defines.push("ENVIRONMENT_COLOR_CORRECT");let f=0;for(let h of kr.faceNames()){let A=e._radianceMapTextures[f];l(A)&&!A.isDestroyed()&&A.destroy(),A=new Mt({context:n,width:i.x,height:i.y,pixelDatatype:Ve.UNSIGNED_BYTE,pixelFormat:$e.RGBA}),e._radianceMapTextures[f]=A;let g=f,m=new Tl({fragmentShaderSource:o,outputTexture:A,uniformMap:{u_radiiAndDynamicAtmosphereColor:()=>s,u_enuToFixedFrame:()=>c,u_faceDirection:()=>kr.getDirection(h,Vce),u_positionWC:()=>r,u_brightnessSaturationGammaIntensity:()=>u,u_groundColor:()=>e.groundColor.withAlpha(e.groundAlbedo,SVe)},owner:e});m.postExecute=()=>{if(e.isDestroyed()||m.canceled){Ai._activeComputeCommandCount--;return}let _=e._radianceMapComputeCommands;_[g]=void 0;let y=new $r({context:n,colorTextures:[e._radianceMapTextures[g]]});y._bind(),e._radianceCubeMap[h].copyFromFramebuffer(),y._unBind(),y.destroy(),Ai._activeComputeCommandCount--,_.some(l)||(e._convolutionsCommandsDirty=!0,e._shouldRegenerateShaders=!0)},e._radianceMapComputeCommands[f]=m,Ai._queueCommand(m,t),f++}e._radianceCommandsDirty=!1}}function BVe(e,t){let n=e._radianceCubeMap;n.generateMipmap();let i=e._mipmapLevels,o=e._textureDimensions,r=o.x/2,s=o.y/2,a=t.context,c=0,u=(h,A,g,m,_)=>()=>{if(e.isDestroyed()||h.canceled){Ai._activeComputeCommandCount--;return}let y=e._convolutionComputeCommands;y[A]=void 0,n.copyFace(t,g,m,_),c++,Ai._activeComputeCommandCount--,g.destroy(),e._specularMapTextures[A]=void 0;let C=e._specularMapTextures.length;c>=C&&(e._irradianceCommandDirty=!0,n.sampler=new on({minificationFilter:Zt.LINEAR_MIPMAP_LINEAR}),e._shouldRegenerateShaders=!0,e._va.destroy(),e._va=void 0,e._convolveSP.destroy(),e._convolveSP=void 0)},f=0;for(let h=1;h<i;++h){for(let A of kr.faceNames()){l(e._specularMapTextures[f])&&e._specularMapTextures[f].destroy();let g=e._specularMapTextures[f]=new Mt({context:a,width:r,height:s,pixelDatatype:Ve.UNSIGNED_BYTE,pixelFormat:$e.RGBA}),m=e._va;l(m)||(m=kr.createVertexArray(a,A),e._va=m);let _=e._convolveSP;l(_)||(_=an.fromCache({context:a,vertexShaderSource:BM,fragmentShaderSource:wM,attributeLocations:{positions:0}}),e._convolveSP=_);let y=new Tl({shaderProgram:_,vertexArray:m,outputTexture:g,persists:!0,owner:e,uniformMap:{u_roughness:()=>h/(i-1),u_radianceTexture:()=>n??a.defaultTexture,u_faceDirection:()=>kr.getDirection(A,Vce)}});y.postExecute=u(y,f,g,A,h),e._convolutionComputeCommands[f]=y,Ai._queueCommand(y,t),++f}r/=2,s/=2}}var Hce=new U(3,3);function DVe(e,t){let n=t.context,i=Hce,o=e._irradianceMapTexture;l(o)&&!o.isDestroyed()&&o.destroy(),o=new Mt({context:n,width:i.x,height:i.y,pixelDatatype:Ve.FLOAT,pixelFormat:$e.RGBA}),e._irradianceMapTexture=o;let r=e._irradianceMapFS;l(r)||(r=new He({sources:[TM]}),e._irradianceMapFS=r);let s=new Tl({fragmentShaderSource:r,outputTexture:o,owner:e,uniformMap:{u_radianceMap:()=>e._radianceCubeMap??n.defaultTexture}});s.postExecute=()=>{if(e.isDestroyed()||s.canceled){Ai._activeComputeCommandCount--;return}e._irradianceTextureDirty=!1,e._irradianceComputeCommand=void 0,e._sphericalHarmonicCoefficientsDirty=!0,e._irradianceMapFS=void 0,Ai._activeComputeCommandCount--},e._irradianceComputeCommand=s,Ai._queueCommand(s,t),e._irradianceTextureDirty=!0}function vVe(e,t){let n=t.context;if(!l(e._irradianceMapTexture))return;let i=new $r({context:n,colorTextures:[e._irradianceMapTexture],destroyAttachments:!1}),o=Hce,r=n.readPixels({x:0,y:0,width:o.x,height:o.y,framebuffer:i});for(let s=0;s<9;++s)e._sphericalHarmonicCoefficients[s]=d.unpack(r,s*4),d.multiplyByScalar(e._sphericalHarmonicCoefficients[s],e.atmosphereScatteringIntensity,e._sphericalHarmonicCoefficients[s]);i.destroy(),e._irradianceMapTexture.destroy(),e._irradianceMapTexture=void 0,e._shouldRegenerateShaders=!0}Ai.prototype.update=function(e){let t=e.mode;if(!Ai.isDynamicUpdateSupported(e)||!this.enabled||!this.shouldUpdate||!l(this._position)||t===ie.MORPHING){this._shouldRegenerateShaders=!1;return}Ai._updateCommandQueue(e);let i=e.atmosphere.dynamicLighting,o=xVe(this,e)||i===Np.SUNLIGHT&&!K.equalsEpsilon(e.time,this._lastTime,this.maximumSecondsDifference);if(this._shouldReset||o){this.reset(),this._shouldReset=!1,this._lastTime=K.clone(e.time,this._lastTime);return}if(this._radianceMapDirty&&(wVe(this,e),this._radianceMapDirty=!1),this._convolutionsCommandsDirty&&(BVe(this,e),this._convolutionsCommandsDirty=!1),this._irradianceCommandDirty&&(DVe(this,e),this._irradianceCommandDirty=!1),this._irradianceTextureDirty){this._shouldRegenerateShaders=!1;return}if(this._sphericalHarmonicCoefficientsDirty){vVe(this,e),this._sphericalHarmonicCoefficientsDirty=!1;return}this._shouldRegenerateShaders=!1};Ai.prototype.isDestroyed=function(){return!1};Ai.prototype.destroy=function(){let e=this._radianceMapComputeCommands.length;for(let t=0;t<e;++t)this._radianceMapComputeCommands[t]=void 0;e=this._convolutionComputeCommands.length;for(let t=0;t<e;++t)this._convolutionComputeCommands[t]=void 0;this._irradianceMapComputeCommand=void 0,e=this._radianceMapTextures.length;for(let t=0;t<e;++t)this._radianceMapTextures[t]=this._radianceMapTextures[t]&&!this._radianceMapTextures[t].isDestroyed()&&this._radianceMapTextures[t].destroy();e=this._specularMapTextures.length;for(let t=0;t<e;++t)this._specularMapTextures[t]=this._specularMapTextures[t]&&!this._specularMapTextures[t].isDestroyed()&&this._specularMapTextures[t].destroy();return this._radianceCubeMap=this._radianceCubeMap&&this._radianceCubeMap.destroy(),this._irradianceMapTexture=this._irradianceMapTexture&&!this._irradianceMapTexture.isDestroyed()&&this._irradianceMapTexture.destroy(),l(this._va)&&this._va.destroy(),l(this._convolveSP)&&this._convolveSP.destroy(),ue(this)};Ai.isDynamicUpdateSupported=function(e){let t=e.context;return t.halfFloatingPointTexture||t.colorBufferFloat};Ai.AVERAGE_EARTH_GROUND_COLOR=Object.freeze(G.fromCssColorString("#717145"));Ai.DEFAULT_SPHERICAL_HARMONIC_COEFFICIENTS=Object.freeze([Object.freeze(new d(.35449,.35449,.35449)),d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO]);var Lp=Ai;var DM={HIGHLIGHT:0,REPLACE:1,MIX:2};DM.getColorBlend=function(e,t){if(e===DM.HIGHLIGHT)return 0;if(e===DM.REPLACE)return 1;if(e===DM.MIX)return D.clamp(t,D.EPSILON4,1)};var Qc=Object.freeze(DM);var PVe={XTRANSLATE:"xTranslate",YTRANSLATE:"yTranslate",ZTRANSLATE:"zTranslate",XROTATE:"xRotate",YROTATE:"yRotate",ZROTATE:"zRotate",XSCALE:"xScale",YSCALE:"yScale",ZSCALE:"zScale",UNIFORMSCALE:"uniformScale"},kc=Object.freeze(PVe);var RVe={STEP:0,LINEAR:1,CUBICSPLINE:2},Dh=Object.freeze(RVe);var Wce={};function vM(e){this._count=e.count,this._properties=ze(e.properties,!0)}vM.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,Wce)};vM.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,Wce,e)};vM.prototype.getProperty=function(e,t){let n=this._properties[t];if(l(n))return ze(n[e],!0)};vM.prototype.setProperty=function(e,t,n){let i=this._properties[t];l(i)||(i=new Array(this._count),this._properties[t]=i),i[e]=ze(n,!0)};var Op=vM;function Uc(e){e=e??V.EMPTY_OBJECT,this._name=e.name,this._id=e.id,this._count=e.count,this._extras=e.extras,this._extensions=e.extensions,this._metadataTable=e.metadataTable,this._jsonMetadataTable=e.jsonMetadataTable,this._batchTableHierarchy=e.batchTableHierarchy}Object.defineProperties(Uc.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},count:{get:function(){return this._count}},class:{get:function(){if(l(this._metadataTable))return this._metadataTable.class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}},byteLength:{get:function(){let e=0;return l(this._metadataTable)&&(e+=this._metadataTable.byteLength),l(this._batchTableHierarchy)&&(e+=this._batchTableHierarchy.byteLength),e}}});Uc.prototype.hasProperty=function(e,t){return!!(l(this._metadataTable)&&this._metadataTable.hasProperty(t)||l(this._batchTableHierarchy)&&this._batchTableHierarchy.hasProperty(e,t)||l(this._jsonMetadataTable)&&this._jsonMetadataTable.hasProperty(t))};Uc.prototype.hasPropertyBySemantic=function(e,t){return l(this._metadataTable)?this._metadataTable.hasPropertyBySemantic(t):!1};Uc.prototype.propertyExists=function(e){return!!(l(this._metadataTable)&&this._metadataTable.hasProperty(e)||l(this._batchTableHierarchy)&&this._batchTableHierarchy.propertyExists(e)||l(this._jsonMetadataTable)&&this._jsonMetadataTable.hasProperty(e))};Uc.prototype.propertyExistsBySemantic=function(e){return l(this._metadataTable)?this._metadataTable.hasPropertyBySemantic(e):!1};var uj=[];Uc.prototype.getPropertyIds=function(e,t){if(t=l(t)?t:[],t.length=0,l(this._metadataTable)){let n=this._metadataTable.getPropertyIds(uj);si(t,n)}if(l(this._batchTableHierarchy)){let n=this._batchTableHierarchy.getPropertyIds(e,uj);si(t,n)}if(l(this._jsonMetadataTable)){let n=this._jsonMetadataTable.getPropertyIds(uj);si(t,n)}return t};Uc.prototype.getProperty=function(e,t){let n;if(l(this._metadataTable)&&(n=this._metadataTable.getProperty(e,t),l(n))||l(this._batchTableHierarchy)&&(n=this._batchTableHierarchy.getProperty(e,t),l(n))||l(this._jsonMetadataTable)&&(n=this._jsonMetadataTable.getProperty(e,t),l(n)))return n};Uc.prototype.setProperty=function(e,t,n){l(this._metadataTable)&&this._metadataTable.setProperty(e,t,n)||l(this._batchTableHierarchy)&&this._batchTableHierarchy.setProperty(e,t,n)||(l(this._jsonMetadataTable)||(this._jsonMetadataTable=new Op({count:this._count,properties:{}})),this._jsonMetadataTable.setProperty(e,t,n))};Uc.prototype.getPropertyBySemantic=function(e,t){if(l(this._metadataTable))return this._metadataTable.getPropertyBySemantic(e,t)};Uc.prototype.setPropertyBySemantic=function(e,t,n){return l(this._metadataTable)?this._metadataTable.setPropertyBySemantic(e,t,n):!1};Uc.prototype.getPropertyTypedArray=function(e){if(l(this._metadataTable))return this._metadataTable.getPropertyTypedArray(e)};Uc.prototype.getPropertyTypedArrayBySemantic=function(e){if(l(this._metadataTable))return this._metadataTable.getPropertyTypedArrayBySemantic(e)};Uc.prototype.isClass=function(e,t){let n=this._batchTableHierarchy;return l(n)?n.isClass(e,t):!1};Uc.prototype.isExactClass=function(e,t){return this.getExactClassName(e)===t};Uc.prototype.getExactClassName=function(e){let t=this._batchTableHierarchy;if(l(t))return t.getClassName(e)};var Sl=Uc;function PM(e){e=e??V.EMPTY_OBJECT;let t=e.property,n=e.classProperty,i=e.textures,o=l(t.channels)?t.channels:[0],r=t,s=au.createModelTextureReader({textureInfo:r,channels:LVe(o),texture:i[r.index]});this._min=t.min,this._max=t.max;let a=t.offset,c=t.scale,u=n.hasValueTransform||l(a)||l(c);a=a??n.offset,c=c??n.scale,a=n.unpackVectorAndMatrixTypes(a),c=n.unpackVectorAndMatrixTypes(c),this._offset=a,this._scale=c,this._hasValueTransform=u,this._textureReader=s,this._classProperty=n,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(PM.prototype,{textureReader:{get:function(){return this._textureReader}},hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},classProperty:{get:function(){return this._classProperty}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});PM.prototype.isGpuCompatible=function(){let e=this._classProperty,t=e.type,n=e.componentType;return e.isArray?e.isVariableLengthArray?(yt(`Property texture property ${e.id} is a variable-length array, which is not supported`),!1):e.arrayLength>4?(yt(`Property texture property ${e.id} is an array of length ${e.arrayLength}, but may have at most a length of 4`),!1):t!==pt.SCALAR?(yt(`Property texture property ${e.id} is an array of type ${t}, but only SCALAR is supported`),!1):n!==Gt.UINT8?(yt(`Property texture property ${e.id} is an array with component type ${n}, but only UINT8 is supported`),!1):!0:pt.isVectorType(t)||t===pt.SCALAR?n!==Gt.UINT8?(yt(`Property texture property ${e.id} has component type ${n}, but only UINT8 is supported`),!1):!0:(yt(`Property texture property ${e.id} has an unsupported type`),!1)};var MVe=[void 0,"float","vec2","vec3","vec4"],NVe=[void 0,"int","ivec2","ivec3","ivec4"];PM.prototype.getGlslType=function(){let e=this._classProperty,t=pt.getComponentCount(e.type);return e.isArray&&(t=e.arrayLength),e.normalized?MVe[t]:NVe[t]};PM.prototype.unpackInShader=function(e){return this._classProperty.normalized?e:`${this.getGlslType()}(255.0 * ${e})`};function LVe(e){return e.map(function(t){return"rgba".charAt(t)}).join("")}var RM=PM;function fj(e){e=e??V.EMPTY_OBJECT;let t=e.propertyTexture,n=e.class,i=e.textures,o=t.extensions,r=t.extras,s={};if(l(t.properties))for(let a in t.properties)t.properties.hasOwnProperty(a)&&(s[a]=new RM({property:t.properties[a],classProperty:n.properties[a],textures:i}));this._name=e.name,this._id=e.id,this._class=n,this._properties=s,this._extras=r,this._extensions=o}Object.defineProperties(fj.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},class:{get:function(){return this._class}},properties:{get:function(){return this._properties}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});fj.prototype.getProperty=function(e){return this._properties[e]};var Fp=fj;function jce(e){e=e??V.EMPTY_OBJECT;let t=e.property,n=e.classProperty;this._attribute=t.attribute,this._classProperty=n,this._min=t.min,this._max=t.max;let i=t.offset,o=t.scale,r=n.hasValueTransform||l(i)||l(o);i=i??n.offset,o=o??n.scale,i=n.unpackVectorAndMatrixTypes(i),o=n.unpackVectorAndMatrixTypes(o),this._offset=i,this._scale=o,this._hasValueTransform=r,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(jce.prototype,{attribute:{get:function(){return this._attribute}},hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},classProperty:{get:function(){return this._classProperty}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var MM=jce;function dj(e){e=e??V.EMPTY_OBJECT;let t=e.propertyAttribute,n=e.class,i={};if(l(t.properties))for(let o in t.properties)t.properties.hasOwnProperty(o)&&(i[o]=new MM({property:t.properties[o],classProperty:n.properties[o]}));this._name=e.name,this._id=e.id,this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(dj.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},class:{get:function(){return this._class}},properties:{get:function(){return this._properties}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});dj.prototype.getProperty=function(e){return this._properties[e]};var t0=dj;function NM(e){e=e??V.EMPTY_OBJECT,this._schema=e.schema;let t=e.propertyTables;this._propertyTableCount=l(t)?t.length:0,this._propertyTables=t,this._propertyTextures=e.propertyTextures,this._propertyAttributes=e.propertyAttributes,this._statistics=e.statistics,this._extras=e.extras,this._extensions=e.extensions}Object.defineProperties(NM.prototype,{schema:{get:function(){return this._schema}},statistics:{get:function(){return this._statistics}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}},propertyTableCount:{get:function(){return this._propertyTableCount}},propertyTables:{get:function(){return this._propertyTables}},propertyTextures:{get:function(){return this._propertyTextures}},propertyAttributes:{get:function(){return this._propertyAttributes}},propertyTablesByteLength:{get:function(){if(!l(this._propertyTables))return 0;let e=0,t=this._propertyTables.length;for(let n=0;n<t;n++)e+=this._propertyTables[n].byteLength;return e}}});NM.prototype.getPropertyTable=function(e){return this._propertyTables[e]};NM.prototype.getPropertyTexture=function(e){return this._propertyTextures[e]};NM.prototype.getPropertyAttribute=function(e){return this._propertyAttributes[e]};var Aa=NM;function OVe(e){e=e??V.EMPTY_OBJECT;let t=e.extension,n=e.schema,i=[];if(l(t.propertyTables))for(let s=0;s<t.propertyTables.length;s++){let a=t.propertyTables[s],c=n.classes[a.class],u=new od({count:a.count,properties:a.properties,class:c,bufferViews:e.bufferViews});i.push(new Sl({id:s,name:a.name,count:a.count,metadataTable:u,extras:a.extras,extensions:a.extensions}))}let o=[];if(l(t.propertyTextures))for(let s=0;s<t.propertyTextures.length;s++){let a=t.propertyTextures[s];o.push(new Fp({id:s,name:a.name,propertyTexture:a,class:n.classes[a.class],textures:e.textures}))}let r=[];if(l(t.propertyAttributes))for(let s=0;s<t.propertyAttributes.length;s++){let a=t.propertyAttributes[s];r.push(new t0({id:s,name:a.name,class:n.classes[a.class],propertyAttribute:a}))}return new Aa({schema:n,propertyTables:i,propertyTextures:o,propertyAttributes:r,statistics:t.statistics,extras:t.extras,extensions:t.extensions})}var LM=OVe;function FVe(e){e=e??V.EMPTY_OBJECT;let t=e.extension,n=e.schema,i,o=[],r;if(l(t.featureTables))for(r=Object.keys(t.featureTables).sort(),i=0;i<r.length;i++){let a=r[i],c=t.featureTables[a],u=n.classes[c.class],f=new od({count:c.count,properties:c.properties,class:u,bufferViews:e.bufferViews});o.push(new Sl({id:a,count:c.count,metadataTable:f,extras:c.extras,extensions:c.extensions}))}let s=[];if(l(t.featureTextures))for(r=Object.keys(t.featureTextures).sort(),i=0;i<r.length;i++){let a=r[i],c=t.featureTextures[a];s.push(new Fp({id:a,propertyTexture:QVe(c),class:n.classes[c.class],textures:e.textures}))}return new Aa({schema:n,propertyTables:o,propertyTextures:s,statistics:t.statistics,extras:t.extras,extensions:t.extensions})}function QVe(e){let t={class:e.class,properties:{}},n=e.properties;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i],r={channels:kVe(o.channels),extras:o.extras,extensions:o.extensions};t.properties[i]=Tt(o.texture,r,!0)}return t}function kVe(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]="rgba".indexOf(e[i]);return n}var OM=FVe;function ny(e){e=e??V.EMPTY_OBJECT;let{gltf:t,extension:n,extensionLegacy:i,gltfResource:o,baseResource:r,supportedImageFormats:s,frameState:a,cacheKey:c,asynchronous:u=!0}=e;this._gltfResource=o,this._baseResource=r,this._gltf=t,this._extension=n,this._extensionLegacy=i,this._supportedImageFormats=s,this._frameState=a,this._cacheKey=c,this._asynchronous=u,this._bufferViewLoaders=[],this._bufferViewIds=[],this._textureLoaders=[],this._textureIds=[],this._schemaLoader=void 0,this._structuralMetadata=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(ny.prototype=Object.create(Hi.prototype),ny.prototype.constructor=ny);Object.defineProperties(ny.prototype,{cacheKey:{get:function(){return this._cacheKey}},structuralMetadata:{get:function(){return this._structuralMetadata}}});async function UVe(e){try{let t=WVe(e),n=XVe(e),i=JVe(e);return await Promise.all([t,n,i]),e.isDestroyed()?void 0:(e._gltf=void 0,e._state=dt.LOADED,e)}catch(t){if(e.isDestroyed())return;throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load structural metadata",t)}}ny.prototype.load=function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=UVe(this),this._promise)};function GVe(e,t){for(let n in e)if(e.hasOwnProperty(n)){let i=e[n],o=i.values,r=i.arrayOffsets,s=i.stringOffsets;l(o)&&(t[o]=!0),l(r)&&(t[r]=!0),l(s)&&(t[s]=!0)}}function zVe(e,t){for(let n in e)if(e.hasOwnProperty(n)){let i=e[n],o=i.bufferView,r=i.arrayOffsetBufferView,s=i.stringOffsetBufferView;l(o)&&(t[o]=!0),l(r)&&(t[r]=!0),l(s)&&(t[s]=!0)}}function VVe(e){let t=e.propertyTables,n={};if(l(t))for(let i=0;i<t.length;i++){let o=t[i];GVe(o.properties,n)}return n}function HVe(e){let t=e.featureTables,n={};if(l(t)){for(let i in t)if(t.hasOwnProperty(i)){let r=t[i].properties;l(r)&&zVe(r,n)}}return n}async function WVe(e){let t;l(e._extension)?t=VVe(e._extension):t=HVe(e._extensionLegacy);let n=[];for(let i in t)if(t.hasOwnProperty(i)){let o=Fi.getBufferViewLoader({gltf:e._gltf,bufferViewId:parseInt(i),gltfResource:e._gltfResource,baseResource:e._baseResource});e._bufferViewLoaders.push(o),e._bufferViewIds.push(i),n.push(o.load())}return Promise.all(n)}function jVe(e){let t={},n=e.propertyTextures;if(l(n))for(let i=0;i<n.length;i++){let r=n[i].properties;l(r)&&YVe(r,t)}return t}function YVe(e,t){for(let n in e)if(e.hasOwnProperty(n)){let i=e[n];t[i.index]=i}}function qVe(e){let t={},n=e.featureTextures;if(l(n)){for(let i in n)if(n.hasOwnProperty(i)){let r=n[i].properties;l(r)&&KVe(r,t)}}return t}function KVe(e,t){for(let n in e)if(e.hasOwnProperty(n)){let o=e[n].texture;t[o.index]=o}}function XVe(e){let t;l(e._extension)?t=jVe(e._extension):t=qVe(e._extensionLegacy);let n=e._gltf,i=e._gltfResource,o=e._baseResource,r=e._supportedImageFormats,s=e._frameState,a=e._asynchronous,c=[];for(let u in t)if(t.hasOwnProperty(u)){let f=Fi.getTextureLoader({gltf:n,textureInfo:t[u],gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s,asynchronous:a});e._textureLoaders.push(f),e._textureIds.push(u),c.push(f.load())}return Promise.all(c)}async function JVe(e){let t=e._extension??e._extensionLegacy,n;if(l(t.schemaUri)){let i=e._baseResource.getDerivedResource({url:t.schemaUri});n=Fi.getSchemaLoader({resource:i})}else n=Fi.getSchemaLoader({schema:t.schema});if(e._schemaLoader=n,await n.load(),!n.isDestroyed())return n.schema}ny.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED)return!1;let t=this._textureLoaders,n=t.length,i=!0;for(let a=0;a<n;++a){let u=t[a].process(e);i=i&&u}if(!i)return!1;let o=this._schemaLoader.schema,r={};for(let a=0;a<this._bufferViewIds.length;++a){let c=this._bufferViewIds[a],u=this._bufferViewLoaders[a];if(!u.isDestroyed()){let f=new Uint8Array(u.typedArray);r[c]=f}}let s={};for(let a=0;a<this._textureIds.length;++a){let c=this._textureIds[a],u=t[a];u.isDestroyed()||(s[c]=u.texture)}return l(this._extension)?this._structuralMetadata=LM({extension:this._extension,schema:o,bufferViews:r,textures:s}):this._structuralMetadata=OM({extension:this._extensionLegacy,schema:o,bufferViews:r,textures:s}),Yce(this),this._state=dt.READY,!0};function Yce(e){let t=e._bufferViewLoaders,n=t.length;for(let i=0;i<n;++i)Fi.unload(t[i]);e._bufferViewLoaders.length=0,e._bufferViewIds.length=0}function ZVe(e){let t=e._textureLoaders,n=t.length;for(let i=0;i<n;++i)Fi.unload(t[i]);e._textureLoaders.length=0,e._textureIds.length=0}ny.prototype.unload=function(){Yce(this),ZVe(this),l(this._schemaLoader)&&Fi.unload(this._schemaLoader),this._schemaLoader=void 0,this._structuralMetadata=void 0};var FM=ny;var kb={TRANSLATION:"TRANSLATION",ROTATION:"ROTATION",SCALE:"SCALE",FEATURE_ID:"_FEATURE_ID"};kb.fromGltfSemantic=function(e){let t=e,i=/^(\w+)_\d+$/.exec(e);switch(i!==null&&(t=i[1]),t){case"TRANSLATION":return kb.TRANSLATION;case"ROTATION":return kb.ROTATION;case"SCALE":return kb.SCALE;case"_FEATURE_ID":return kb.FEATURE_ID}};var bs=Object.freeze(kb);var $Ve=65534,e8e=255;function Oz(e){e=e??V.EMPTY_OBJECT;let t=e.triangleIndices,n=e.outlineIndices,i=e.originalVertexCount;this._triangleIndices=t,this._originalVertexCount=i,this._edges=new Xce(n,i),this._outlineCoordinatesTypedArray=void 0,this._extraVertices=[],t8e(this)}Object.defineProperties(Oz.prototype,{updatedTriangleIndices:{get:function(){return this._triangleIndices}},outlineCoordinates:{get:function(){return this._outlineCoordinatesTypedArray}}});function t8e(e){let t=e._triangleIndices,n=e._edges,i=[],o=e._extraVertices,r=e._originalVertexCount,s={};for(let a=0;a<t.length;a+=3){let c=t[a],u=t[a+1],f=t[a+2],h=!1,A=h||n.hasEdge(c,u),g=h||n.hasEdge(u,f),m=h||n.hasEdge(f,c),_=qce(i,c,u,f,A,g,m);for(;l(_);){let y=s[_];if(!l(y)){y=r+o.length;let C=_;for(;C>=r;)C=o[C-r];o.push(C),s[_]=y}y>$Ve&&(t instanceof Uint16Array||t instanceof Uint8Array)?t=new Uint32Array(t):y>e8e&&t instanceof Uint8Array&&(t=new Uint16Array(t)),_===c?(c=y,t[a]=y):_===u?(u=y,t[a+1]=y):(f=y,t[a+2]=y),_=qce(i,c,u,f,A,g,m)}}e._triangleIndices=t,e._outlineCoordinatesTypedArray=new Float32Array(i)}function qce(e,t,n,i,o,r,s){let a=s?1:0,c=o?1:0,u=0,f=hj(e,t,a,c,u);if(f===0)return t;let h=0,A=o?1:0,g=r?1:0,m=hj(e,n,h,A,g);if(m===0)return n;let _=s?1:0,y=0,C=r?1:0,E=hj(e,i,_,y,C);if(E===0)return i;let I=f&m&E,b,S,B;if(I&1)b=0,S=1,B=2;else if(I&2)b=0,B=1,S=2;else if(I&4)S=0,b=1,B=2;else if(I&8)S=0,B=1,b=2;else if(I&16)B=0,b=1,S=2;else if(I&32)B=0,S=1,b=2;else{let L=mj(f),p=mj(m),x=mj(E);return L<p&&L<x?t:p<x?n:i}let v=t*3;e[v+b]=a,e[v+S]=c,e[v+B]=u;let P=n*3;e[P+b]=h,e[P+S]=A,e[P+B]=g;let M=i*3;e[M+b]=_,e[M+S]=y,e[M+B]=C}function hj(e,t,n,i,o){let r=t*3,s=e[r],a=e[r+1],c=e[r+2];return l(s)?(s===n&&a===i&&c===o)<<0|(s===n&&a===o&&c===i)<<1|(s===i&&a===n&&c===o)<<2|(s===i&&a===o&&c===n)<<3|(s===o&&a===n&&c===i)<<4|(s===o&&a===i&&c===n)<<5:63}function mj(e){return(e&1)+(e>>1&1)+(e>>2&1)+(e>>3&1)+(e>>4&1)+(e>>5&1)}Oz.prototype.updateAttribute=function(e){let t=this._extraVertices,n=e.length,i=n/this._originalVertexCount,o=t.length,r=e.constructor,s=new r(e.length+o*i);s.set(e);for(let a=0;a<o;a++){let c=t[a]*i,u=n+a*i;for(let f=0;f<i;f++)s[u+f]=s[c+f]}return s};Oz.createTexture=function(e){let t=e.cache.modelOutliningCache;if(l(t)||(t=e.cache.modelOutliningCache={}),l(t.outlineTexture))return t.outlineTexture;let n=Math.min(4096,Yt.maximumTextureSize),i=n,o=Kce(i),r=[];for(;i>1;)i>>=1,r.push(Kce(i));let s=new Mt({context:e,source:{arrayBufferView:o,mipLevels:r},width:n,height:1,pixelFormat:$e.LUMINANCE,sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR_MIPMAP_LINEAR,magnificationFilter:mi.LINEAR})});return t.outlineTexture=s,s};function Kce(e){let t=new Uint8Array(e);return t[e-1]=192,e===8?t[e-1]=96:e===4?t[e-1]=48:e===2?t[e-1]=24:e===1&&(t[e-1]=12),t}function Xce(e,t){this._originalVertexCount=t,this._edges=new Set;for(let n=0;n<e.length;n+=2){let i=e[n],o=e[n+1],r=Math.min(i,o),s=Math.max(i,o),a=r*this._originalVertexCount+s;this._edges.add(a)}}Xce.prototype.hasEdge=function(e,t){let n=Math.min(e,t),i=Math.max(e,t),o=n*this._originalVertexCount+i;return this._edges.has(o)};var n0=Oz;function Jce(e){this.attribute=e,this.loadBuffer=!1,this.loadTypedArray=!1}function n8e(e){this.indices=e,this.loadBuffer=!1,this.loadTypedArray=!1}function Fz(e){this.primitive=e,this.attributePlans=[],this.indicesPlan=void 0,this.needsOutlines=!1,this.outlineIndices=void 0,this.needsGaussianSplats=!1}Fz.prototype.postProcess=function(e){this.needsOutlines&&(i8e(this),s8e(this,e)),this.needsGaussianSplats&&r8e(this,e)};function i8e(e){let t=e.primitive,n=t.indices,i=t.attributes[0].count,o=new n0({triangleIndices:n.typedArray,outlineIndices:e.outlineIndices,originalVertexCount:i});n.typedArray=o.updatedTriangleIndices,n.indexDatatype=Oe.fromTypedArray(n.typedArray);let r=o8e(o.outlineCoordinates),s=new Jce(r);s.loadBuffer=!0,s.loadTypedArray=!1,e.attributePlans.push(s),t.outlineCoordinates=s.attribute;let a=e.attributePlans,c=e.attributePlans.length;for(let u=0;u<c;u++){let f=a[u].attribute;f.typedArray=o.updateAttribute(f.typedArray)}}function o8e(e){let t=new xn.Attribute;return t.name="_OUTLINE_COORDINATES",t.typedArray=e,t.componentDatatype=q.FLOAT,t.type=zt.VEC3,t.normalized=!1,t.count=e.length/3,t}function r8e(e,t){let n=e.attributePlans,i=n.length;for(let o=0;o<i;o++){let r=n[o];r.loadBuffer=!1,r.loadTypedArray=!0}}function s8e(e,t){a8e(e.attributePlans,t),l(e.indicesPlan)&&c8e(e.indicesPlan,t)}function a8e(e,t){let n=e.length;for(let i=0;i<n;i++){let o=e[i],r=o.attribute,s=r.typedArray;if(o.loadBuffer){let a=Ct.createVertexBuffer({typedArray:s,context:t,usage:Qe.STATIC_DRAW});a.vertexArrayDestroyable=!1,r.buffer=a}o.loadTypedArray||(r.typedArray=void 0)}}function c8e(e,t){let n=e.indices;if(e.loadBuffer){let i=Ct.createIndexBuffer({typedArray:n.typedArray,context:t,usage:Qe.STATIC_DRAW,indexDatatype:n.indexDatatype});n.buffer=i,i.vertexArrayDestroyable=!1}e.loadTypedArray||(n.typedArray=void 0)}Fz.AttributeLoadPlan=Jce;Fz.IndicesLoadPlan=n8e;var i0=Fz;function l8e(e){e=e??V.EMPTY_OBJECT,this.webp=e.webp??!1,this.basis=e.basis??!1}var QM=l8e;function Zce(e){this._position=e.position,this._adjustmentParams=e.adjustmentParams}Object.defineProperties(Zce.prototype,{position:{get:function(){return this._position}},adjustmentParams:{get:function(){return this._adjustmentParams}}});var kM=Zce;function $ce(e){this._position=e.position,this._adjustmentParams=e.adjustmentParams,this._covarianceMatrix=e.covarianceMatrix}Object.defineProperties($ce.prototype,{position:{get:function(){return this._position}},adjustmentParams:{get:function(){return this._adjustmentParams}},covarianceMatrix:{get:function(){return this._covarianceMatrix}}});var UM=$ce;function ele(e){this._groupFlags=e.groupFlags,this._rotationThetas=e.rotationThetas,this._params=e.params}Object.defineProperties(ele.prototype,{groupFlags:{get:function(){return this._groupFlags}},rotationThetas:{get:function(){return this._rotationThetas}},params:{get:function(){return this._params}}});var GM=ele;var u8e={Direct:"Direct",Indirect:"Indirect"},iy=Object.freeze(u8e);function tle(e){this._storageType=e.storageType,this._anchorPointsIndirect=e.anchorPointsIndirect,this._anchorPointsDirect=e.anchorPointsDirect,this._intraTileCorrelationGroups=e.intraTileCorrelationGroups,this._covarianceDirect=e.covarianceDirect}Object.defineProperties(tle.prototype,{storageType:{get:function(){return this._storageType}},anchorPointsIndirect:{get:function(){return this._anchorPointsIndirect}},anchorPointsDirect:{get:function(){return this._anchorPointsDirect}},intraTileCorrelationGroups:{get:function(){return this._intraTileCorrelationGroups}},covarianceDirect:{get:function(){return this._covarianceDirect}}});var Ub=tle;function nle(e){this._A=e.A,this._alpha=e.alpha,this._beta=e.beta,this._T=e.T}Object.defineProperties(nle.prototype,{A:{get:function(){return this._A}},alpha:{get:function(){return this._alpha}},beta:{get:function(){return this._beta}},T:{get:function(){return this._T}}});var zM=nle;function Gb(){}function ile(e){return new J(e[0],e[1],e[3],e[1],e[2],e[4],e[3],e[4],e[5])}function f8e(e){let t=d.fromArray(e.position,0,new d),n=d.fromArray(e.adjustmentParams,0,new d);return new kM({position:t,adjustmentParams:n})}function d8e(e){let t=d.fromArray(e.position,0,new d),n=d.fromArray(e.adjustmentParams,0,new d),i=ile(e.covarianceMatrix);return new UM({position:t,adjustmentParams:n,covarianceMatrix:i})}function h8e(e){let t=e.groupFlags,n=d.fromArray(e.rotationThetas,0,new d),i=[];for(let r of e.params){let s=new zM({A:r.A,alpha:r.alpha,beta:r.beta,T:r.T});i.push(s)}return new GM({groupFlags:t,rotationThetas:n,params:i})}Gb.load=function(e){let t=e.storageType;if(t===iy.Direct)return Gb.loadDirect(e);if(t===iy.Indirect)return Gb.loadIndirect(e);throw new ce(`Invalid storage type in NGA_gpm_local - expected 'Direct' or 'Indirect', but found ${t}`)};Gb.loadDirect=function(e){let t=[],n=e.anchorPointsDirect;for(let r of n){let s=f8e(r);t.push(s)}let i=ile(e.covarianceDirectUpperTriangle);return new Ub({storageType:iy.Direct,anchorPointsDirect:t,covarianceDirect:i})};Gb.loadIndirect=function(e){let t=[],n=e.anchorPointsIndirect;for(let s of n){let a=d8e(s);t.push(a)}let i=e.intraTileCorrelationGroups,o=[];for(let s of i){let a=h8e(s);o.push(a)}return new Ub({storageType:iy.Indirect,anchorPointsIndirect:t,intraTileCorrelationGroups:o})};var VM=Gb;function ole(e){this._traits=e.traits,this._noData=e.noData,this._offset=e.offset,this._scale=e.scale,this._index=e.index,this._texCoord=e.texCoord}Object.defineProperties(ole.prototype,{traits:{get:function(){return this._traits}},noData:{get:function(){return this._noData}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},index:{get:function(){return this._index}},texCoord:{get:function(){return this._texCoord}}});var HM=ole;function rle(e){this._min=e.min,this._max=e.max,this._source=e.source}Object.defineProperties(rle.prototype,{min:{get:function(){return this._min}},max:{get:function(){return this._max}},source:{get:function(){return this._source}}});var WM=rle;function sle(e){this._ppeTextures=e}Object.defineProperties(sle.prototype,{ppeTextures:{get:function(){return this._ppeTextures}}});var jM=sle;function Hr(e){e=e??V.EMPTY_OBJECT;let t=e.gltf,n=e.extension,i=e.gltfResource,o=e.baseResource,r=e.supportedImageFormats,s=e.frameState,a=e.cacheKey,c=e.asynchronous??!0;this._gltfResource=i,this._baseResource=o,this._gltf=t,this._extension=n,this._supportedImageFormats=r,this._frameState=s,this._cacheKey=a,this._asynchronous=c,this._textureLoaders=[],this._textureIds=[],this._meshPrimitiveGpmLocal=void 0,this._structuralMetadata=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(Hr.prototype=Object.create(Hi.prototype),Hr.prototype.constructor=Hr);Object.defineProperties(Hr.prototype,{cacheKey:{get:function(){return this._cacheKey}},meshPrimitiveGpmLocal:{get:function(){return this._meshPrimitiveGpmLocal}},structuralMetadata:{get:function(){return this._structuralMetadata}}});Hr.prototype._loadResources=async function(){try{return await this._loadTextures(),this.isDestroyed()?void 0:(this._gltf=void 0,this._state=dt.LOADED,this)}catch(e){if(this.isDestroyed())return;throw this.unload(),this._state=dt.FAILED,this.getError("Failed to load GPM data",e)}};Hr.prototype.load=function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=this._loadResources(this),this._promise)};function m8e(e){let t={},n=e.ppeTextures;if(l(n))for(let i=0;i<n.length;i++){let o=n[i];t[o.index]=o}return t}Hr.prototype._loadTextures=function(){let e;l(this._extension)&&(e=m8e(this._extension));let t=this._gltf,n=this._gltfResource,i=this._baseResource,o=this._supportedImageFormats,r=this._frameState,s=this._asynchronous,a=[];for(let c in e)if(e.hasOwnProperty(c)){let u=Fi.getTextureLoader({gltf:t,textureInfo:e[c],gltfResource:n,baseResource:i,supportedImageFormats:o,frameState:r,asynchronous:s});this._textureLoaders.push(u),this._textureIds.push(c),a.push(u.load())}return Promise.all(a)};Hr.ppeTexturesMetadataSchemaCache=new Map;Hr._createPpeTextureClassJson=function(e,t){let n=e.traits,i=n.source,o=e.offset??0,r=(e.scale??1)*255;return{name:`PPE texture class ${t}`,properties:{[i]:{name:"PPE",type:"SCALAR",componentType:"UINT8",normalized:!0,offset:o,scale:r,min:n.min,max:n.max}}}};Hr._obtainPpeTexturesMetadataSchema=function(e){let n=Hr._collectPpeTexturePropertyIdentifiers(e).toString(),i=Hr.ppeTexturesMetadataSchemaCache.get(n);if(l(i))return i;let r={id:`PPE_TEXTURE_SCHEMA_${Hr.ppeTexturesMetadataSchemaCache.size}`,classes:{}},s=e.ppeTextures;for(let a=0;a<s.length;a++){let c=s[a],u=`ppeTexture_${a}`,f=Hr._createPpeTextureClassJson(c,a);r.classes[u]=f}return i=qu.fromJson(r),Hr.ppeTexturesMetadataSchemaCache.set(n,i),i};Hr._collectPpeTexturePropertyIdentifiers=function(e){let t=[],n=e.ppeTextures;for(let i=0;i<n.length;i++){let o=n[i],r=Hr._createPpeTextureClassJson(o,i),s=JSON.stringify(r);t.push(s)}return t};Hr._convertToStructuralMetadata=function(e,t){let n=[],i=Hr._obtainPpeTexturesMetadataSchema(e),o=e.ppeTextures;for(let s=0;s<o.length;s++){let a=o[s],c=`ppeTexture_${s}`,f=a.traits.source,h=i.classes[c],A={class:c,properties:{[f]:{index:a.index,texCoord:a.texCoord}}};n.push(new Fp({id:s,name:a.name,propertyTexture:A,class:h,textures:t}))}return new Aa({schema:i,propertyTables:[],propertyTextures:n,propertyAttributes:[]})};Hr.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED)return!1;let t=this._textureLoaders,n=t.length,i=!0;for(let u=0;u<n;++u){let h=t[u].process(e);i=i&&h}if(!i)return!1;let o={};for(let u=0;u<this._textureIds.length;++u){let f=this._textureIds[u],h=t[u];h.isDestroyed()||(o[f]=h.texture)}let r=[],s=this._extension;if(l(s.ppeTextures)){let u=s.ppeTextures;for(let f of u){let h=f.traits,A=new WM({min:h.min,max:h.max,source:h.source}),g=new HM({traits:A,noData:f.noData,offset:f.offset,scale:f.scale,index:f.index,texCoord:f.texCoord});r.push(g)}}let a=new jM(r);this._meshPrimitiveGpmLocal=a;let c=Hr._convertToStructuralMetadata(a,o);return this._structuralMetadata=c,this._state=dt.READY,!0};Hr.prototype._unloadTextures=function(){let e=this._textureLoaders,t=e.length;for(let n=0;n<t;++n)Fi.unload(e[n]);this._textureLoaders.length=0,this._textureIds.length=0};Hr.prototype.unload=function(){this._unloadTextures(),this._gltf=void 0,this._extension=void 0,this._structuralMetadata=void 0};var YM=Hr;var{Attribute:A8e,Indices:p8e,FeatureIdAttribute:ale,FeatureIdTexture:cle,FeatureIdImplicitRange:lle,MorphTarget:g8e,Primitive:_8e,Instances:y8e,Skin:C8e,Node:E8e,AnimatedPropertyType:I8e,AnimationSampler:x8e,AnimationTarget:b8e,AnimationChannel:T8e,Animation:S8e,ArticulationStage:w8e,Articulation:B8e,Asset:D8e,Scene:v8e,Components:P8e,MetallicRoughness:R8e,SpecularGlossiness:M8e,Specular:N8e,Anisotropy:Aj,Clearcoat:pj,Material:L8e}=xn,Yo={NOT_LOADED:0,LOADING:1,LOADED:2,PROCESSING:3,POST_PROCESSING:4,PROCESSED:5,READY:6,FAILED:7,UNLOADED:8};function vh(e){e=e??V.EMPTY_OBJECT;let{gltfResource:t,typedArray:n,releaseGltfJson:i=!1,asynchronous:o=!0,incrementallyLoadTextures:r=!0,upAxis:s=fo.Y,forwardAxis:a=fo.Z,loadAttributesAsTypedArray:c=!1,loadAttributesFor2D:u=!1,enablePick:f=!1,loadIndicesForWireframe:h=!1,loadPrimitiveOutline:A=!0,loadForClassification:g=!1,renameBatchIdSemantic:m=!1}=e,{baseResource:_=t.clone()}=e;this._gltfJson=e.gltfJson,this._gltfResource=t,this._baseResource=_,this._typedArray=n,this._releaseGltfJson=i,this._asynchronous=o,this._incrementallyLoadTextures=r,this._upAxis=s,this._forwardAxis=a,this._loadAttributesAsTypedArray=c,this._loadAttributesFor2D=u,this._enablePick=f,this._loadIndicesForWireframe=h,this._loadPrimitiveOutline=A,this._loadForClassification=g,this._renameBatchIdSemantic=m,this._sortedPropertyTableIds=void 0,this._sortedFeatureTextureIds=void 0,this._gltfJsonLoader=void 0,this._state=Yo.NOT_LOADED,this._textureState=Yo.NOT_LOADED,this._promise=void 0,this._processError=void 0,this._textureErrors=[],this._primitiveLoadPlans=[],this._loaderPromises=[],this._textureLoaders=[],this._texturesPromises=[],this._textureCallbacks=[],this._bufferViewLoaders=[],this._geometryLoaders=[],this._geometryCallbacks=[],this._structuralMetadataLoader=void 0,this._meshPrimitiveGpmLoader=void 0,this._loadResourcesPromise=void 0,this._resourcesLoaded=!1,this._texturesLoaded=!1,this._supportedImageFormats=void 0,this._postProcessBuffers=[],this._components=void 0}l(Object.create)&&(vh.prototype=Object.create(Hi.prototype),vh.prototype.constructor=vh);Object.defineProperties(vh.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}},gltfJson:{get:function(){return l(this._gltfJsonLoader)?this._gltfJsonLoader.gltf:this._gltfJson}},incrementallyLoadTextures:{get:function(){return this._incrementallyLoadTextures}},texturesLoaded:{get:function(){return this._texturesLoaded}}});async function O8e(e){e._state=Yo.LOADING,e._textureState=Yo.LOADING;try{let t=Fi.getGltfJsonLoader({gltfResource:e._gltfResource,baseResource:e._baseResource,typedArray:e._typedArray,gltfJson:e._gltfJson});return e._gltfJsonLoader=t,await t.load(),e.isDestroyed()||e.isUnloaded()||t.isDestroyed()?void 0:(e._state=Yo.LOADED,e._textureState=Yo.LOADED,e)}catch(t){if(e.isDestroyed())return;e._state=Yo.FAILED,e._textureState=Yo.FAILED,Qz(e,t)}}async function F8e(e,t){Wt.supportsWebP.initialized||await Wt.supportsWebP.initialize(),e._supportedImageFormats=new QM({webp:Wt.supportsWebP(),basis:t.context.supportsBasis});let n=G4e(e,t);return e._state=Yo.PROCESSING,e._textureState=Yo.PROCESSING,l(e._gltfJsonLoader)&&e._releaseGltfJson&&(Fi.unload(e._gltfJsonLoader),e._gltfJsonLoader=void 0),n}vh.prototype.load=async function(){return l(this._promise)?this._promise:(this._promise=O8e(this),this._promise)};function Qz(e,t){throw e.unload(),e.getError("Failed to load glTF",t)}function Q8e(e,t){let n=!0,i=e._geometryLoaders;for(let s=0;s<i.length;++s){let a=i[s].process(t);a&&l(e._geometryCallbacks[s])&&(e._geometryCallbacks[s](),e._geometryCallbacks[s]=void 0),n=n&&a}let o=e._structuralMetadataLoader;if(l(o)){let s=o.process(t);s&&(e._components.structuralMetadata=o.structuralMetadata),n=n&&s}let r=e._meshPrimitiveGpmLoader;if(l(r)){let s=r.process(t);s&&(l(e._components.structuralMetadata)&&yt("structural-metadata-gpm","The model defines both the 'EXT_structural_metadata' extension and the 'NGA_gpm_local' extension. The data from the 'EXT_structural_metadata' extension will be replaced with the data from the 'NGA_gpm_local' extension, and will no longer be available for styling and picking."),e._components.structuralMetadata=r.structuralMetadata),n=n&&s}n&&(e._state=Yo.POST_PROCESSING)}function k8e(e,t){let n=e._primitiveLoadPlans;for(let i=0;i<n.length;i++){let o=n[i];o.postProcess(t),(o.needsOutlines||o.needsGaussianSplats)&&U8e(e,o)}}function U8e(e,t){let n=e._postProcessBuffers,i=t.primitive,o=i.outlineCoordinates;l(o)&&n.push(o.buffer);let r=i.attributes;for(let a=0;a<r.length;a++){let c=r[a];l(c.buffer)&&n.push(c.buffer)}let s=i.indices;l(s)&&l(s.buffer)&&n.push(s.buffer)}vh.prototype._process=function(e){return this._state===Yo.READY?!0:(this._state===Yo.PROCESSING&&Q8e(this,e),this._resourcesLoaded&&this._state===Yo.POST_PROCESSING&&(k8e(this,e.context),this._state=Yo.PROCESSED),this._resourcesLoaded&&this._state===Yo.PROCESSED?(_le(this),this._typedArray=void 0,this._state=Yo.READY,!0):!1)};vh.prototype._processTextures=function(e){if(this._textureState===Yo.READY)return!0;if(this._textureState!==Yo.PROCESSING)return!1;let t=!0,n=this._textureLoaders;for(let i=0;i<n.length;++i){let o=n[i].process(e);o&&l(this._textureCallbacks[i])&&(this._textureCallbacks[i](),this._textureCallbacks[i]=void 0),t=t&&o}return t?(this._textureState=Yo.READY,this._texturesLoaded=!0,!0):!1};vh.prototype.process=function(e){if(this._state===Yo.LOADED&&!l(this._loadResourcesPromise)&&(this._loadResourcesPromise=F8e(this,e).then(()=>{this._resourcesLoaded=!0}).catch(o=>{this._processError=o})),l(this._processError)){this._state=Yo.FAILED;let o=this._processError;this._processError=void 0,Qz(this,o)}let t=this._textureErrors.pop();if(l(t)){let o=this.getError("Failed to load glTF texture",t);throw o.name="TextureError",o}if(this._state===Yo.FAILED)return!1;let n=!1;try{n=this._process(e)}catch(o){this._state=Yo.FAILED,Qz(this,o)}let i=!1;try{i=this._processTextures(e)}catch(o){this._textureState=Yo.FAILED,Qz(this,o)}return this._incrementallyLoadTextures?n:n&&i};function G8e(e,t,n,i,o,r,s,a,c){let u=e.gltfJson,h=u.accessors[t].bufferView;return Fi.getVertexBufferLoader({gltf:u,gltfResource:e._gltfResource,baseResource:e._baseResource,frameState:c,bufferViewId:h,primitive:i,draco:o,spz:r,attributeSemantic:n,accessorId:t,asynchronous:e._asynchronous,loadBuffer:s,loadTypedArray:a})}function z8e(e,t,n,i,o,r,s){return Fi.getIndexBufferLoader({gltf:e.gltfJson,accessorId:t,gltfResource:e._gltfResource,baseResource:e._baseResource,frameState:s,primitive:n,draco:i,asynchronous:e._asynchronous,loadBuffer:o,loadTypedArray:r})}function V8e(e,t){let n=Fi.getBufferViewLoader({gltf:e.gltfJson,bufferViewId:t,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoaders.push(n),n}function ule(e,t,n){let i=t.byteOffset,o=su(e,t),r=t.count,s=Yu(t.type),a=t.componentType,c=q.getSizeInBytes(a),u=c*s,f=r*s;if(o===u)return n=new Uint8Array(n),q.createArrayBufferView(a,n.buffer,n.byteOffset+i,f);let h=q.createTypedArray(a,f),A=new DataView(n.buffer),g=new Array(s),m=Pp(t.componentType);i=n.byteOffset+i;for(let _=0;_<r;++_){m(A,i,s,c,g);for(let y=0;y<s;++y)h[_*s+y]=g[y];i+=o}return h}function H8e(e,t){let n=e.type;if(n===zt.SCALAR)return t.fill(0);let i=zt.getMathType(n);return t.fill(i.clone(i.ZERO))}function W8e(e,t,n,i){let o=e.type,r=e.count;if(o===zt.SCALAR)for(let s=0;s<r;s++)n[s]=t[s];else if(o===zt.VEC4&&i)for(let s=0;s<r;s++)n[s]=Le.unpack(t,s*4);else{let s=zt.getMathType(o),a=zt.getNumberOfComponents(o);for(let c=0;c<r;c++)n[c]=s.unpack(t,c*a)}return n}async function j8e(e,t,n,i,o){let{gltfJson:r}=e;if(await t.load(),e.isDestroyed())return;let s=ule(r,n,t.typedArray);i=i??!1,W8e(n,s,o,i)}function kz(e,t,n){let i=new Array(t.count),o=t.bufferView;if(l(o)){let r=V8e(e,o),s=j8e(e,r,t,n,i);return e._loaderPromises.push(s),i}return H8e(t,i)}function Ku(e,t){if(l(t))return e===Number?t[0]:e.unpack(t)}function Y8e(e){return e===Number?0:new e}function q8e(e){switch(e){case q.BYTE:return 127;case q.UNSIGNED_BYTE:return 255;case q.SHORT:return 32767;case q.UNSIGNED_SHORT:return 65535;default:return 1}}var K8e={VEC2:new U(-1,-1),VEC3:new d(-1,-1,-1),VEC4:new se(-1,-1,-1,-1)};function X8e(e,t){let n=q8e(e.componentDatatype),i=K8e[e.type],o=e.min;l(o)&&(o=t.divideByScalar(o,n,o),o=t.maximumByComponent(o,i,o));let r=e.max;l(r)&&(r=t.divideByScalar(r,n,r),r=t.maximumByComponent(r,i,r)),e.min=o,e.max=r}function J8e(e,t,n){let i=e.decodeMatrix,o=Ku(n,e.decodedMin),r=Ku(n,e.decodedMax);l(o)&&l(r)&&(t.min=o,t.max=r);let s=new xn.Quantization;s.componentDatatype=t.componentDatatype,s.type=t.type,i.length===4?(s.quantizedVolumeOffset=i[2],s.quantizedVolumeStepSize=i[0]):i.length===9?(s.quantizedVolumeOffset=new U(i[6],i[7]),s.quantizedVolumeStepSize=new U(i[0],i[4])):i.length===16?(s.quantizedVolumeOffset=new d(i[12],i[13],i[14]),s.quantizedVolumeStepSize=new d(i[0],i[5],i[10])):i.length===25&&(s.quantizedVolumeOffset=new se(i[20],i[21],i[22],i[23]),s.quantizedVolumeStepSize=new se(i[0],i[6],i[12],i[18])),t.quantization=s}function Z8e(e,t,n,i,o){let r=e.accessors[t],s=zt.getMathType(r.type),a=r.normalized??!1,c=new A8e;c.name=n,c.semantic=i,c.setIndex=o,c.constant=Y8e(s),c.componentDatatype=r.componentType,c.normalized=a,c.count=r.count,c.type=r.type,c.min=Ku(s,r.min),c.max=Ku(s,r.max),c.byteOffset=r.byteOffset,c.byteStride=su(e,r),Ei(r,"WEB3D_quantized_attributes")&&J8e(r.extensions.WEB3D_quantized_attributes,c,s);let u=c.semantic===at.POSITION||c.semantic===at.NORMAL||c.semantic===at.TANGENT||c.semantic===at.TEXCOORD||c.semantic===at.FEATURE_ID||c.semantic===at.SCALE||c.semantic===at.ROTATION;return e.extensionsRequired?.includes("KHR_mesh_quantization")&&a&&u&&X8e(c,s),c}function fle(e){let n=/^\w+_(\d+)$/.exec(e);if(n!==null)return parseInt(n[1])}var $8e={gltfSemantic:void 0,renamedSemantic:void 0,modelSemantic:void 0};function gj(e,t,n){let i=n;e._renameBatchIdSemantic&&(n==="_BATCHID"||n==="BATCHID")&&(i="_FEATURE_ID_0");let o=t.fromGltfSemantic(i),r=$8e;return r.gltfSemantic=n,r.renamedSemantic=i,r.modelSemantic=o,r}function e4e(e){let t=e===at.POSITION,n=e===at.FEATURE_ID,i=e===at.TEXCOORD;return t||n||i}function t4e(e,t,n,i){if(e.byteOffset=0,e.byteStride=void 0,e.quantization=t.quantization,n&&(e.buffer=t.buffer),i){let o=l(t.quantization)?t.quantization.componentDatatype:e.componentDatatype;e.typedArray=q.createArrayBufferView(o,t.typedArray.buffer)}}function n4e(e,t,n,i){if(e.byteOffset=0,e.byteStride=void 0,n&&(e.buffer=t.buffer),i&&l(t.typedArray)&&(e.typedArray=q.createArrayBufferView(e.componentDatatype,t.typedArray.buffer)),e.semantic===at.POSITION){let o=s=>{let a=1/0,c=-1/0,u=1/0,f=-1/0,h=1/0,A=-1/0;for(let g=0;g<s.length;g+=3){let m=s[g],_=s[g+1],y=s[g+2];a=Math.min(a,m),c=Math.max(c,m),u=Math.min(u,_),f=Math.max(f,_),h=Math.min(h,y),A=Math.max(A,y)}return[new d(a,u,h),new d(c,f,A)]},r=e.typedArray;[e.min,e.max]=o(r)}}function i4e(e,t,n,i,o,r){if(o&&(n.buffer=i.buffer),r){let s=i.typedArray;n.typedArray=ule(e,t,s),o||(n.byteOffset=0,n.byteStride=void 0)}}function dle(e,t,n,i,o,r,s,a,c){let u=e.gltfJson,f=u.accessors[t],h=f.bufferView,A=n.gltfSemantic,g=n.renamedSemantic,m=n.modelSemantic,_=l(m)?fle(g):void 0,C=Z8e(u,t,A,m,_);if(!l(o)&&!l(h)&&!l(r))return C;let E=G8e(e,t,A,i,o,r,s,a,c),I=e._geometryLoaders.length;e._geometryLoaders.push(E);let b=E.load();return e._loaderPromises.push(b),e._geometryCallbacks[I]=()=>{l(o)&&l(o.attributes)&&l(o.attributes[A])?t4e(C,E,s,a):l(r)?n4e(C,E,s,a):i4e(u,f,C,E,s,a)},C}function hle(e,t,n,i,o,r,s,a,c){let u=n.modelSemantic,f=u===at.POSITION,h=u===at.FEATURE_ID,A=f&&!s&&e._loadAttributesFor2D&&!c.scene3DOnly,g=f&&e._enablePick&&!c.context.webgl2,m=e._loadForClassification&&h,_=e._loadAttributesAsTypedArray,y=!_,C=_||A||g||m,b=dle(e,t,n,i,o,r,a?!1:y,a?!0:C,c),S=new i0.AttributeLoadPlan(b);return S.loadBuffer=y,S.loadTypedArray=C,S}function o4e(e,t,n,i,o){let r=e.gltfJson.accessors,s=l(n.ROTATION),a=l(n.TRANSLATION)&&l(r[n.TRANSLATION].min)&&l(r[n.TRANSLATION].max),c=gj(e,bs,i),u=c.modelSemantic,f=u===bs.TRANSLATION||u===bs.ROTATION||u===bs.SCALE,h=u===bs.TRANSLATION,A=e._loadAttributesAsTypedArray||s&&f||!o.context.instancedArrays,g=e._enablePick&&!o.context.webgl2,m=!A,_=e._loadAttributesFor2D&&!o.scene3DOnly;return dle(e,t,c,void 0,void 0,void 0,m,A||h&&(!a||_||g),o)}function r4e(e,t,n,i,o,r,s){let a=e.gltfJson.accessors[t],c=a.bufferView;if(!l(i)&&!l(c))return;let u=new p8e;u.count=a.count;let f=e._loadAttributesAsTypedArray,h=(e._loadIndicesForWireframe||e._enablePick)&&!s.context.webgl2,A=e._loadForClassification&&o,m=!f,_=f||h||A,E=z8e(e,t,n,i,r?!1:m,r?!0:_,s),I=e._geometryLoaders.length;e._geometryLoaders.push(E);let b=E.load();e._loaderPromises.push(b),e._geometryCallbacks[I]=()=>{u.indexDatatype=E.indexDatatype,u.buffer=E.buffer,u.typedArray=E.typedArray};let S=new i0.IndicesLoadPlan(u);return S.loadBuffer=m,S.loadTypedArray=_,S}function wl(e,t,n,i){let o=e.gltfJson,r=au.getImageIdFromTexture({gltf:o,textureId:t.index,supportedImageFormats:e._supportedImageFormats});if(!l(r))return;let s=Fi.getTextureLoader({gltf:o,textureInfo:t,gltfResource:e._gltfResource,baseResource:e._baseResource,supportedImageFormats:e._supportedImageFormats,frameState:n,asynchronous:e._asynchronous}),a=au.createModelTextureReader({textureInfo:t}),c=e._textureLoaders.length;e._textureLoaders.push(s);let u=s.load().catch(f=>{if(!e.isDestroyed()){if(!e._incrementallyLoadTextures)throw f;e._textureState=Yo.FAILED,e._textureErrors.push(f)}});return e._texturesPromises.push(u),e._textureCallbacks[c]=()=>{a.texture=s.texture,l(i)&&(a.texture.sampler=i)},a}function s4e(e,t,n){let{diffuseTexture:i,specularGlossinessTexture:o,diffuseFactor:r,specularFactor:s,glossinessFactor:a}=t,c=new M8e;return l(i)&&(c.diffuseTexture=wl(e,i,n)),l(o)&&(c.specularGlossinessTexture=wl(e,o,n)),c.diffuseFactor=Ku(se,r),c.specularFactor=Ku(d,s),c.glossinessFactor=a,c}function a4e(e,t,n){let{baseColorTexture:i,metallicRoughnessTexture:o,baseColorFactor:r,metallicFactor:s,roughnessFactor:a}=t,c=new R8e;return l(i)&&(c.baseColorTexture=wl(e,i,n)),l(o)&&(c.metallicRoughnessTexture=wl(e,o,n)),c.baseColorFactor=Ku(se,r),c.metallicFactor=s,c.roughnessFactor=a,c}function c4e(e,t,n){let{specularFactor:i,specularTexture:o,specularColorFactor:r,specularColorTexture:s}=t,a=new N8e;return l(o)&&(a.specularTexture=wl(e,o,n)),l(s)&&(a.specularColorTexture=wl(e,s,n)),a.specularFactor=i,a.specularColorFactor=Ku(d,r),a}function l4e(e,t,n){let{anisotropyStrength:i=Aj.DEFAULT_ANISOTROPY_STRENGTH,anisotropyRotation:o=Aj.DEFAULT_ANISOTROPY_ROTATION,anisotropyTexture:r}=t,s=new Aj;return l(r)&&(s.anisotropyTexture=wl(e,r,n)),s.anisotropyStrength=i,s.anisotropyRotation=o,s}function u4e(e,t,n){let{clearcoatFactor:i=pj.DEFAULT_CLEARCOAT_FACTOR,clearcoatTexture:o,clearcoatRoughnessFactor:r=pj.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR,clearcoatRoughnessTexture:s,clearcoatNormalTexture:a}=t,c=new pj;return l(o)&&(c.clearcoatTexture=wl(e,o,n)),l(s)&&(c.clearcoatRoughnessTexture=wl(e,s,n)),l(a)&&(c.clearcoatNormalTexture=wl(e,a,n)),c.clearcoatFactor=i,c.clearcoatRoughnessFactor=r,c}function f4e(e,t,n){let i=new L8e,o=t.extensions??V.EMPTY_OBJECT,r=o.KHR_materials_pbrSpecularGlossiness,s=o.KHR_materials_specular,a=o.KHR_materials_anisotropy,c=o.KHR_materials_clearcoat,u=t.pbrMetallicRoughness;return i.unlit=l(o.KHR_materials_unlit),l(r)?i.specularGlossiness=s4e(e,r,n):(l(u)&&(i.metallicRoughness=a4e(e,u,n)),l(s)&&!i.unlit&&(i.specular=c4e(e,s,n)),l(a)&&!i.unlit&&(i.anisotropy=l4e(e,a,n)),l(c)&&!i.unlit&&(i.clearcoat=u4e(e,c,n))),l(t.emissiveTexture)&&(i.emissiveTexture=wl(e,t.emissiveTexture,n)),l(t.normalTexture)&&!e._loadForClassification&&(i.normalTexture=wl(e,t.normalTexture,n)),l(t.occlusionTexture)&&(i.occlusionTexture=wl(e,t.occlusionTexture,n)),i.emissiveFactor=Ku(d,t.emissiveFactor),i.alphaMode=t.alphaMode,i.alphaCutoff=t.alphaCutoff,i.doubleSided=t.doubleSided,i}function mle(e,t){let n=new ale;return n.featureCount=e.featureCount,n.nullFeatureId=e.nullFeatureId,n.propertyTableId=e.propertyTable,n.setIndex=e.attribute,n.label=e.label,n.positionalLabel=t,n}function Ale(e,t,n,i){let o=new ale,r=e.featureIds;return o.featureCount=n,o.propertyTableId=t,o.setIndex=fle(r.attribute),o.positionalLabel=i,o}function ple(e,t){let n=new lle;return n.propertyTableId=e.propertyTable,n.featureCount=e.featureCount,n.nullFeatureId=e.nullFeatureId,n.label=e.label,n.positionalLabel=t,n.offset=0,n.repeat=1,n}function gle(e,t,n,i){let o=new lle,r=e.featureIds;o.propertyTableId=t,o.featureCount=n,o.offset=r.constant??0;let s=r.divisor??0;return o.repeat=s===0?void 0:s,o.positionalLabel=i,o}function d4e(e,t,n,i){let o=new cle;o.featureCount=t.featureCount,o.nullFeatureId=t.nullFeatureId,o.propertyTableId=t.propertyTable,o.label=t.label,o.positionalLabel=i;let r=t.texture;o.textureReader=wl(e,r,n,on.NEAREST);let a=(l(r.channels)?r.channels:[0]).map(function(c){return"rgba".charAt(c)}).join("");return o.textureReader.channels=a,o}function h4e(e,t,n,i,o,r){let s=new cle,a=t.featureIds,c=a.texture;return s.featureCount=o,s.propertyTableId=n,s.textureReader=wl(e,c,i,on.NEAREST),s.textureReader.channels=a.channels,s.positionalLabel=r,s}function m4e(e,t,n,i,o){let r=new g8e,s=void 0,a=void 0,c=void 0,u=!1;for(let f in t){if(!t.hasOwnProperty(f))continue;let h=t[f],A=gj(e,at,f),g=hle(e,h,A,s,a,c,u,n,o);r.attributes.push(g.attribute),i.attributePlans.push(g)}return r}function A4e(e,t,n,i){let o=new _8e,r=new i0(o);e._primitiveLoadPlans.push(r);let s=t.material;l(s)&&(o.material=f4e(e,e.gltfJson.materials[s],i));let a=t.extensions??V.EMPTY_OBJECT,c=!1,u=a.CESIUM_primitive_outline;e._loadPrimitiveOutline&&l(u)&&(c=!0,r.needsOutlines=!0,r.outlineIndices=p4e(e,u,r));let f=a.KHR_spz_gaussian_splats_compression;l(f)&&(c=!0,r.needsGaussianSplats=!0);let h=e._loadForClassification,A=a.KHR_draco_mesh_compression,g=!1,m=t.attributes;if(l(m))for(let B in m){if(!m.hasOwnProperty(B))continue;let v=m[B],P=gj(e,at,B),M=P.modelSemantic;if(h&&!e4e(M))continue;M===at.FEATURE_ID&&(g=!0);let L=hle(e,v,P,t,A,f,n,c,i);r.attributePlans.push(L),o.attributes.push(L.attribute)}let _=t.targets;if(l(_)&&!h)for(let B=0;B<_.length;++B)o.morphTargets.push(m4e(e,_[B],c,r,i));let y=t.indices;if(l(y)){let B=r4e(e,y,t,A,g,c,i);l(B)&&(r.indicesPlan=B,o.indices=B.indices)}let C=a.EXT_structural_metadata,E=a.EXT_mesh_features,I=a.EXT_feature_metadata,b=l(I);l(E)?g4e(e,o,E,i):b&&_4e(e,o,I,i),l(C)?y4e(o,C):b&&C4e(e,o,I);let S=t.mode;if(h&&S!==Me.TRIANGLES)throw new ce("Only triangle meshes can be used for classification.");return o.primitiveType=S,o}function p4e(e,t){let n=t.indices,i=e.gltfJson.accessors[n];return kz(e,i,!1)}function g4e(e,t,n,i){let o;l(n)&&l(n.featureIds)?o=n.featureIds:o=[];for(let r=0;r<o.length;r++){let s=o[r],a=`featureId_${r}`,c;l(s.texture)?c=d4e(e,s,i,a):l(s.attribute)?c=mle(s,a):c=ple(s,a),t.featureIds.push(c)}}function _4e(e,t,n,i){let{featureTables:o}=e.gltfJson.extensions.EXT_feature_metadata,r=0,s=n.featureIdAttributes;if(l(s))for(let c=0;c<s.length;++c){let u=s[c],f=u.featureTable,h=e._sortedPropertyTableIds.indexOf(f),A=o[f].count,g=`featureId_${r}`;r++;let m;l(u.featureIds.attribute)?m=Ale(u,h,A,g):m=gle(u,h,A,g),t.featureIds.push(m)}let a=n.featureIdTextures;if(l(a))for(let c=0;c<a.length;++c){let u=a[c],f=u.featureTable,h=e._sortedPropertyTableIds.indexOf(f),A=o[f].count,g=`featureId_${r}`;r++;let m=h4e(e,u,h,i,A,g);t.featureIds.push(m)}}function y4e(e,t){if(!l(t))return;let{propertyTextures:n,propertyAttributes:i}=t;l(n)&&(e.propertyTextureIds=n),l(i)&&(e.propertyAttributeIds=i)}function C4e(e,t,n){l(n.featureTextures)&&(t.propertyTextureIds=n.featureTextures.map(function(i){return e._sortedFeatureTextureIds.indexOf(i)}))}function E4e(e,t,n){let i=t.EXT_mesh_gpu_instancing,o=new y8e,r=i.attributes;if(l(r))for(let u in r){if(!r.hasOwnProperty(u))continue;let f=r[u];o.attributes.push(o4e(e,f,r,u,n))}let s=i.extensions??V.EMPTY_OBJECT,a=t.EXT_instance_features,c=s.EXT_feature_metadata;return l(a)?I4e(o,a):l(c)&&x4e(e.gltfJson,o,c,e._sortedPropertyTableIds),o}function I4e(e,t){let n=t.featureIds;for(let i=0;i<n.length;i++){let o=n[i],r=`instanceFeatureId_${i}`,s;l(o.attribute)?s=mle(o,r):s=ple(o,r),e.featureIds.push(s)}}function x4e(e,t,n,i){let o=e.extensions.EXT_feature_metadata.featureTables,r=n.featureIdAttributes;if(l(r))for(let s=0;s<r.length;++s){let a=r[s],c=a.featureTable,u=i.indexOf(c),f=o[c].count,h=`instanceFeatureId_${s}`,A;l(a.featureIds.attribute)?A=Ale(a,u,f,h):A=gle(a,u,f,h),t.featureIds.push(A)}}function b4e(e,t,n){let i=new E8e;i.name=t.name,i.matrix=Ku(N,t.matrix),i.translation=Ku(d,t.translation),i.rotation=Ku(Le,t.rotation),i.scale=Ku(d,t.scale);let o=t.extensions??V.EMPTY_OBJECT,r=o.EXT_mesh_gpu_instancing,s=o.AGI_articulations;if(l(r)){if(e._loadForClassification)throw new ce("Models with the EXT_mesh_gpu_instancing extension cannot be used for classification.");i.instances=E4e(e,o,n)}l(s)&&(i.articulationName=s.articulationName);let a=t.mesh;if(l(a)){let c=e.gltfJson.meshes[a],u=c.primitives;for(let A=0;A<u.length;++A)i.primitives.push(A4e(e,u[A],l(i.instances),n));let f=t.weights??c.weights,h=i.primitives[0].morphTargets;i.morphWeights=l(f)?f.slice():new Array(h.length).fill(0)}return i}function T4e(e,t){let n=e.gltfJson.nodes;if(!l(n))return[];let i=n.map(function(o,r){let s=b4e(e,o,t);return s.index=r,s});for(let o=0;o<i.length;++o){let r=n[o].children;if(l(r))for(let s=0;s<r.length;++s)i[o].children.push(i[r[s]])}return i}function S4e(e,t,n){let i=new C8e,o=t.joints;i.joints=o.map(s=>n[s]);let r=t.inverseBindMatrices;if(l(r)){let s=e.gltfJson.accessors[r];i.inverseBindMatrices=kz(e,s)}else i.inverseBindMatrices=new Array(o.length).fill(N.IDENTITY);return i}function w4e(e,t){let n=e.gltfJson.skins;if(e._loadForClassification||!l(n))return[];let i=n.map(function(r,s){let a=S4e(e,r,t);return a.index=s,a}),o=e.gltfJson.nodes;for(let r=0;r<t.length;++r){let s=o[r].skin;l(s)&&(t[r].skin=i[s])}return i}async function B4e(e,t,n,i){let o=new FM({gltf:e.gltfJson,extension:t,extensionLegacy:n,gltfResource:e._gltfResource,baseResource:e._baseResource,supportedImageFormats:e._supportedImageFormats,frameState:i,asynchronous:e._asynchronous});return e._structuralMetadataLoader=o,o.load()}async function D4e(e,t,n,i){let o=new YM({gltf:t,extension:n,gltfResource:e._gltfResource,baseResource:e._baseResource,supportedImageFormats:e._supportedImageFormats,frameState:i,asynchronous:e._asynchronous});return e._meshPrimitiveGpmLoader=o,o.load()}function v4e(e,t){let n=new x8e,i=e.gltfJson.accessors,o=i[t.input];n.input=kz(e,o);let r=t.interpolation;n.interpolation=Dh[r]??Dh.LINEAR;let s=i[t.output];return n.output=kz(e,s,!0),n}function P4e(e,t){let n=new b8e,i=e.node;if(!l(i))return;n.node=t[i];let o=e.path.toUpperCase();return n.path=I8e[o],n}function R4e(e,t,n){let i=new T8e,o=e.sampler;return i.sampler=t[o],i.target=P4e(e.target,n),i}function M4e(e,t,n){let i=new S8e;i.name=t.name;let o=t.samplers.map(function(s,a){let c=v4e(e,s);return c.index=a,c}),r=t.channels.map(function(s){return R4e(s,o,n)});return i.samplers=o,i.channels=r,i}function N4e(e,t){let n=e.gltfJson.animations;return e._loadForClassification||!l(n)?[]:n.map(function(o,r){let s=M4e(e,o,t);return s.index=r,s})}function L4e(e){let t=new w8e;t.name=e.name;let n=e.type.toUpperCase();return t.type=kc[n],t.minimumValue=e.minimumValue,t.maximumValue=e.maximumValue,t.initialValue=e.initialValue,t}function O4e(e){let t=new B8e;return t.name=e.name,t.stages=e.stages.map(L4e),t}function F4e(e){let n=(e.extensions??V.EMPTY_OBJECT).AGI_articulations?.articulations;return l(n)?n.map(O4e):[]}function Q4e(e){let t;return l(e.scenes)&&l(e.scene)&&(t=e.scenes[e.scene].nodes),t=t??e.nodes,t=l(t)?t:[],t}function k4e(e,t){let n=new v8e,i=Q4e(e);return n.nodes=i.map(function(o){return t[o]}),n}var U4e=new d;function G4e(e,t){let n=e.gltfJson,i=n.extensions??V.EMPTY_OBJECT,o=i.EXT_structural_metadata,r=i.EXT_feature_metadata,s=i.CESIUM_RTC;if(l(r)){let E=r.featureTables,I=r.featureTextures,b=l(E)?E:[],S=l(I)?I:[];e._sortedPropertyTableIds=Object.keys(b).sort(),e._sortedFeatureTextureIds=Object.keys(S).sort()}let a=T4e(e,t),c=w4e(e,a),u=N4e(e,a),f=F4e(n),h=k4e(n,a),A=new P8e,g=new D8e,m=n.asset.copyright;if(l(m)){let E=m.split(";").map(function(I){return new Bt(I.trim())});g.credits=E}if(A.asset=g,A.scene=h,A.nodes=a,A.skins=c,A.animations=u,A.articulations=f,A.upAxis=e._upAxis,A.forwardAxis=e._forwardAxis,l(s)){let E=d.fromArray(s.center,0,U4e);A.transform=N.fromTranslation(E,A.transform)}if(e._components=A,l(o)||l(r)){let E=B4e(e,o,r,t);e._loaderPromises.push(E)}let _=i.NGA_gpm_local;if(l(_)){let E=VM.load(_);e._components.extensions.NGA_gpm_local=E}let y=n.meshes;if(l(y))for(let E of y){let I=E.primitives;if(l(I))for(let b of I){let S=b.extensions;if(l(S)){let B=S.NGA_gpm_local;if(l(B)){let v=D4e(e,n,B,t);e._loaderPromises.push(v)}}}}let C=[];return si(C,e._loaderPromises),e._incrementallyLoadTextures||si(C,e._texturesPromises),Promise.all(C)}function z4e(e){let t=e._textureLoaders;for(let n=0;n<t.length;++n)t[n]=!t[n].isDestroyed()&&Fi.unload(t[n]);e._textureLoaders.length=0}function _le(e){let t=e._bufferViewLoaders;for(let n=0;n<t.length;++n)t[n]=!t[n].isDestroyed()&&Fi.unload(t[n]);e._bufferViewLoaders.length=0}function V4e(e){let t=e._geometryLoaders;for(let n=0;n<t.length;++n)t[n]=!t[n].isDestroyed()&&Fi.unload(t[n]);e._geometryLoaders.length=0}function H4e(e){let t=e._postProcessBuffers;for(let n=0;n<t.length;n++){let i=t[n];i.isDestroyed()||i.destroy()}t.length=0}function W4e(e){l(e._structuralMetadataLoader)&&!e._structuralMetadataLoader.isDestroyed()&&(e._structuralMetadataLoader.destroy(),e._structuralMetadataLoader=void 0)}function j4e(e){l(e._meshPrimitiveGpmLoader)&&!e._meshPrimitiveGpmLoader.isDestroyed()&&(e._meshPrimitiveGpmLoader.destroy(),e._meshPrimitiveGpmLoader=void 0)}vh.prototype.isUnloaded=function(){return this._state===Yo.UNLOADED};vh.prototype.unload=function(){l(this._gltfJsonLoader)&&!this._gltfJsonLoader.isDestroyed()&&Fi.unload(this._gltfJsonLoader),this._gltfJsonLoader=void 0,z4e(this),_le(this),V4e(this),H4e(this),W4e(this),j4e(this),this._components=void 0,this._typedArray=void 0,this._state=Yo.UNLOADED};var Xu=vh;function zb(e){e=e??V.EMPTY_OBJECT;let{context:t,width:n,height:i,colorRenderbuffers:o,colorTextures:r,depthStencilRenderbuffer:s,depthStencilTexture:a,destroyAttachments:c}=e;if(this._width=n,this._height=i,l(o)!==l(r))throw new me("Both color renderbuffer and texture attachments must be provided.");if(l(s)!==l(a))throw new me("Both depth-stencil renderbuffer and texture attachments must be provided.");this._renderFramebuffer=new $r({context:t,colorRenderbuffers:o,depthStencilRenderbuffer:s,destroyAttachments:c}),this._colorFramebuffer=new $r({context:t,colorTextures:r,depthStencilTexture:a,destroyAttachments:c})}zb.prototype.getRenderFramebuffer=function(){return this._renderFramebuffer};zb.prototype.getColorFramebuffer=function(){return this._colorFramebuffer};zb.prototype.blitFramebuffers=function(e,t){this._renderFramebuffer.bindRead(),this._colorFramebuffer.bindDraw();let n=e._gl,i=0;this._colorFramebuffer._colorTextures.length>0&&(i|=n.COLOR_BUFFER_BIT),l(this._colorFramebuffer.depthStencilTexture)&&(i|=n.DEPTH_BUFFER_BIT|(t?n.STENCIL_BUFFER_BIT:0)),n.blitFramebuffer(0,0,this._width,this._height,0,0,this._width,this._height,i,n.NEAREST),n.bindFramebuffer(n.READ_FRAMEBUFFER,null),n.bindFramebuffer(n.DRAW_FRAMEBUFFER,null)};zb.prototype.isDestroyed=function(){return!1};zb.prototype.destroy=function(){return this._renderFramebuffer.destroy(),this._colorFramebuffer.destroy(),ue(this)};var qM=zb;var lu={RGBA4:ee.RGBA4,RGBA8:ee.RGBA8,RGBA16F:ee.RGBA16F,RGBA32F:ee.RGBA32F,RGB5_A1:ee.RGB5_A1,RGB565:ee.RGB565,DEPTH_COMPONENT16:ee.DEPTH_COMPONENT16,STENCIL_INDEX8:ee.STENCIL_INDEX8,DEPTH_STENCIL:ee.DEPTH_STENCIL,DEPTH24_STENCIL8:ee.DEPTH24_STENCIL8,validate:function(e){return e===lu.RGBA4||e===lu.RGBA8||e===lu.RGBA16F||e===lu.RGBA32F||e===lu.RGB5_A1||e===lu.RGB565||e===lu.DEPTH_COMPONENT16||e===lu.STENCIL_INDEX8||e===lu.DEPTH_STENCIL||e===lu.DEPTH24_STENCIL8},getColorFormat:function(e){return e===ee.FLOAT?lu.RGBA32F:e===ee.HALF_FLOAT_OES?lu.RGBA16F:lu.RGBA8}},Bl=Object.freeze(lu);function KM(e){e=e??V.EMPTY_OBJECT;let t=e.context,n=t._gl,i=Yt.maximumRenderbufferSize,o=e.format??Bl.RGBA4,r=l(e.width)?e.width:t.drawingBufferWidth,s=l(e.height)?e.height:t.drawingBufferHeight,a=e.numSamples??1;this._gl=n,this._format=o,this._width=r,this._height=s,this._renderbuffer=this._gl.createRenderbuffer(),n.bindRenderbuffer(n.RENDERBUFFER,this._renderbuffer),a>1?n.renderbufferStorageMultisample(n.RENDERBUFFER,a,o,r,s):n.renderbufferStorage(n.RENDERBUFFER,o,r,s),n.bindRenderbuffer(n.RENDERBUFFER,null)}Object.defineProperties(KM.prototype,{format:{get:function(){return this._format}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});KM.prototype._getRenderbuffer=function(){return this._renderbuffer};KM.prototype.isDestroyed=function(){return!1};KM.prototype.destroy=function(){return this._gl.deleteRenderbuffer(this._renderbuffer),ue(this)};var Ju=KM;function qs(e){e=e??V.EMPTY_OBJECT,this._numSamples=e.numSamples??1,this._colorAttachmentsLength=e.colorAttachmentsLength??1,this._color=e.color??!0,this._depth=e.depth??!1,this._depthStencil=e.depthStencil??!1,this._supportsDepthTexture=e.supportsDepthTexture??!1,this._createColorAttachments=e.createColorAttachments??!0,this._createDepthAttachments=e.createDepthAttachments??!0,this._pixelDatatype=e.pixelDatatype,this._pixelFormat=e.pixelFormat,this._width=void 0,this._height=void 0,this._framebuffer=void 0,this._multisampleFramebuffer=void 0,this._colorTextures=void 0,this._color&&(this._colorTextures=new Array(this._colorAttachmentsLength),this._colorRenderbuffers=new Array(this._colorAttachmentsLength)),this._colorRenderbuffer=void 0,this._depthStencilRenderbuffer=void 0,this._depthStencilTexture=void 0,this._depthRenderbuffer=void 0,this._depthTexture=void 0,this._attachmentsDirty=!1}Object.defineProperties(qs.prototype,{framebuffer:{get:function(){return this._numSamples>1?this._multisampleFramebuffer.getRenderFramebuffer():this._framebuffer}},numSamples:{get:function(){return this._numSamples}},status:{get:function(){return this.framebuffer.status}}});qs.prototype.isDirty=function(e,t,n,i,o){n=n??1;let r=this._width!==e||this._height!==t,s=this._numSamples!==n,a=l(i)&&this._pixelDatatype!==i||l(o)&&this._pixelFormat!==o,c=n===1?l(this._framebuffer):l(this._multisampleFramebuffer);return this._attachmentsDirty||r||s||a||!c||this._color&&!l(this._colorTextures[0])};qs.prototype.update=function(e,t,n,i,o,r){if(i=e.msaa?i??1:1,o=o??(this._color?this._pixelDatatype??Ve.UNSIGNED_BYTE:void 0),r=r??(this._color?this._pixelFormat??$e.RGBA:void 0),this.isDirty(t,n,i,o,r)){if(this.destroy(),this._width=t,this._height=n,this._numSamples=i,this._pixelDatatype=o,this._pixelFormat=r,this._attachmentsDirty=!1,this._color&&this._createColorAttachments){for(let s=0;s<this._colorAttachmentsLength;++s)if(this._colorTextures[s]=new Mt({context:e,width:t,height:n,pixelFormat:r,pixelDatatype:o,sampler:on.NEAREST}),this._numSamples>1){let a=Bl.getColorFormat(o);this._colorRenderbuffers[s]=new Ju({context:e,width:t,height:n,format:a,numSamples:this._numSamples})}}this._depthStencil&&this._createDepthAttachments&&(this._supportsDepthTexture&&e.depthTexture?(this._depthStencilTexture=new Mt({context:e,width:t,height:n,pixelFormat:$e.DEPTH_STENCIL,pixelDatatype:Ve.UNSIGNED_INT_24_8,sampler:on.NEAREST}),this._numSamples>1&&(this._depthStencilRenderbuffer=new Ju({context:e,width:t,height:n,format:Bl.DEPTH24_STENCIL8,numSamples:this._numSamples}))):this._depthStencilRenderbuffer=new Ju({context:e,width:t,height:n,format:Bl.DEPTH_STENCIL})),this._depth&&this._createDepthAttachments&&(this._supportsDepthTexture&&e.depthTexture?this._depthTexture=new Mt({context:e,width:t,height:n,pixelFormat:$e.DEPTH_COMPONENT,pixelDatatype:Ve.UNSIGNED_INT,sampler:on.NEAREST}):this._depthRenderbuffer=new Ju({context:e,width:t,height:n,format:Bl.DEPTH_COMPONENT16})),this._numSamples>1?this._multisampleFramebuffer=new qM({context:e,width:this._width,height:this._height,colorTextures:this._colorTextures,colorRenderbuffers:this._colorRenderbuffers,depthStencilTexture:this._depthStencilTexture,depthStencilRenderbuffer:this._depthStencilRenderbuffer,destroyAttachments:!1}):this._framebuffer=new $r({context:e,colorTextures:this._colorTextures,depthTexture:this._depthTexture,depthRenderbuffer:this._depthRenderbuffer,depthStencilTexture:this._depthStencilTexture,depthStencilRenderbuffer:this._depthStencilRenderbuffer,destroyAttachments:!1})}};qs.prototype.getColorTexture=function(e){return e=e??0,this._colorTextures[e]};qs.prototype.setColorTexture=function(e,t){t=t??0,this._attachmentsDirty=e!==this._colorTextures[t],this._colorTextures[t]=e};qs.prototype.getColorRenderbuffer=function(e){return e=e??0,this._colorRenderbuffers[e]};qs.prototype.setColorRenderbuffer=function(e,t){t=t??0,this._attachmentsDirty=e!==this._colorRenderbuffers[t],this._colorRenderbuffers[t]=e};qs.prototype.getDepthRenderbuffer=function(){return this._depthRenderbuffer};qs.prototype.setDepthRenderbuffer=function(e){this._attachmentsDirty=e!==this._depthRenderbuffer,this._depthRenderbuffer=e};qs.prototype.getDepthTexture=function(){return this._depthTexture};qs.prototype.setDepthTexture=function(e){this._attachmentsDirty=e!==this._depthTexture,this._depthTexture=e};qs.prototype.getDepthStencilRenderbuffer=function(){return this._depthStencilRenderbuffer};qs.prototype.setDepthStencilRenderbuffer=function(e){this._attachmentsDirty=e!==this._depthStencilRenderbuffer,this._depthStencilRenderbuffer=e};qs.prototype.getDepthStencilTexture=function(){return this._depthStencilTexture};qs.prototype.setDepthStencilTexture=function(e){this._attachmentsDirty=e!==this._depthStencilTexture,this._depthStencilTexture=e};qs.prototype.prepareTextures=function(e,t){this._numSamples>1&&this._multisampleFramebuffer.blitFramebuffers(e,t)};qs.prototype.clear=function(e,t,n){let i=t.framebuffer;t.framebuffer=this.framebuffer,t.execute(e,n),t.framebuffer=i};qs.prototype.destroyFramebuffer=function(){this._framebuffer=this._framebuffer&&this._framebuffer.destroy(),this._multisampleFramebuffer=this._multisampleFramebuffer&&this._multisampleFramebuffer.destroy()};qs.prototype.destroy=function(){if(this._color){let e=this._colorTextures,t=this._colorRenderbuffers;for(let n=0;n<e.length;++n){let i=e[n];this._createColorAttachments&&l(i)&&!i.isDestroyed()&&i.destroy(),l(i)&&i.isDestroyed()&&(e[n]=void 0);let o=t[n];this._createColorAttachments&&l(o)&&!o.isDestroyed()&&o.destroy(),l(o)&&o.isDestroyed()&&(t[n]=void 0)}}this._depthStencil&&(this._createDepthAttachments&&(this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy()),l(this._depthStencilTexture)&&this._depthStencilTexture.isDestroyed()&&(this._depthStencilTexture=void 0),l(this._depthStencilRenderbuffer)&&this._depthStencilRenderbuffer.isDestroyed()&&(this._depthStencilRenderbuffer=void 0)),this._depth&&(this._createDepthAttachments&&(this._depthTexture=this._depthTexture&&this._depthTexture.destroy(),this._depthRenderbuffer=this._depthRenderbuffer&&this._depthRenderbuffer.destroy()),l(this._depthTexture)&&this._depthTexture.isDestroyed()&&(this._depthTexture=void 0),l(this._depthRenderbuffer)&&this._depthRenderbuffer.isDestroyed()&&(this._depthRenderbuffer=void 0)),this.destroyFramebuffer()};var Di=qs;var XM=`uniform sampler2D u_pointCloud_colorGBuffer; +uniform sampler2D u_pointCloud_depthGBuffer; +uniform vec2 u_distanceAndEdlStrength; +in vec2 v_textureCoordinates; + +vec2 neighborContribution(float log2Depth, vec2 offset) +{ + float dist = u_distanceAndEdlStrength.x; + vec2 texCoordOrig = v_textureCoordinates + offset * dist; + vec2 texCoord0 = v_textureCoordinates + offset * floor(dist); + vec2 texCoord1 = v_textureCoordinates + offset * ceil(dist); + + float depthOrLogDepth0 = czm_unpackDepth(texture(u_pointCloud_depthGBuffer, texCoord0)); + float depthOrLogDepth1 = czm_unpackDepth(texture(u_pointCloud_depthGBuffer, texCoord1)); + + // ignore depth values that are the clear depth + if (depthOrLogDepth0 == 0.0 || depthOrLogDepth1 == 0.0) { + return vec2(0.0); + } + + // interpolate the two adjacent depth values + float depthMix = mix(depthOrLogDepth0, depthOrLogDepth1, fract(dist)); + vec4 eyeCoordinate = czm_windowToEyeCoordinates(texCoordOrig, depthMix); + return vec2(max(0.0, log2Depth - log2(-eyeCoordinate.z / eyeCoordinate.w)), 1.0); +} + +void main() +{ + float depthOrLogDepth = czm_unpackDepth(texture(u_pointCloud_depthGBuffer, v_textureCoordinates)); + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, depthOrLogDepth); + eyeCoordinate /= eyeCoordinate.w; + + float log2Depth = log2(-eyeCoordinate.z); + + if (depthOrLogDepth == 0.0) // 0.0 is the clear value for the gbuffer + { + discard; + } + + vec4 color = texture(u_pointCloud_colorGBuffer, v_textureCoordinates); + + // sample from neighbors left, right, down, up + vec2 texelSize = 1.0 / czm_viewport.zw; + + vec2 responseAndCount = vec2(0.0); + + responseAndCount += neighborContribution(log2Depth, vec2(-texelSize.x, 0.0)); + responseAndCount += neighborContribution(log2Depth, vec2(+texelSize.x, 0.0)); + responseAndCount += neighborContribution(log2Depth, vec2(0.0, -texelSize.y)); + responseAndCount += neighborContribution(log2Depth, vec2(0.0, +texelSize.y)); + + float response = responseAndCount.x / responseAndCount.y; + float strength = u_distanceAndEdlStrength.y; + float shade = exp(-response * 300.0 * strength); + color.rgb *= shade; + out_FragColor = vec4(color); + + // Input and output depth are the same. + gl_FragDepth = depthOrLogDepth; +} +`;function Vb(){this._framebuffer=new Di({colorAttachmentsLength:2,depth:!0,supportsDepthTexture:!0}),this._drawCommand=void 0,this._clearCommand=void 0,this._strength=1,this._radius=1}Object.defineProperties(Vb.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}},colorGBuffer:{get:function(){return this._framebuffer.getColorTexture(0)}},depthGBuffer:{get:function(){return this._framebuffer.getColorTexture(1)}}});function Y4e(e){e._framebuffer.destroy(),e._drawCommand=void 0,e._clearCommand=void 0}var _j=new U;function q4e(e,t){let n=new He({defines:["LOG_DEPTH_WRITE"],sources:[XM]}),i={u_pointCloud_colorGBuffer:function(){return e.colorGBuffer},u_pointCloud_depthGBuffer:function(){return e.depthGBuffer},u_distanceAndEdlStrength:function(){return _j.x=e._radius,_j.y=e._strength,_j}},o=Ue.fromCache({blending:pn.ALPHA_BLEND,depthMask:!0,depthTest:{enabled:!0},stencilTest:Kt.setCesium3DTileBit(),stencilMask:Kt.CESIUM_3D_TILE_MASK});e._drawCommand=t.createViewportQuadCommand(n,{uniformMap:i,renderState:o,pass:Be.CESIUM_3D_TILE,owner:e}),e._clearCommand=new Ci({framebuffer:e.framebuffer,color:new G(0,0,0,0),depth:1,renderState:Ue.fromCache(),pass:Be.CESIUM_3D_TILE,owner:e})}function K4e(e,t){let n=t.drawingBufferWidth,i=t.drawingBufferHeight;e._framebuffer.update(t,n,i),q4e(e,t)}function yle(e){return e.drawBuffers&&e.fragmentDepth}Vb.isSupported=yle;function X4e(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"EC");if(!l(n)){let i=t._attributeLocations,o=t.fragmentShaderSource.clone();o.sources.splice(0,0,`layout (location = 0) out vec4 out_FragData_0; +layout (location = 1) out vec4 out_FragData_1;`),o.sources=o.sources.map(function(r){return r=He.replaceMain(r,"czm_point_cloud_post_process_main"),r=r.replaceAll(/out_FragColor/g,"out_FragData_0"),r}),o.sources.push(`void main() +{ + czm_point_cloud_post_process_main(); +#ifdef LOG_DEPTH + czm_writeLogDepth(); + out_FragData_1 = czm_packDepth(gl_FragDepth); +#else + out_FragData_1 = czm_packDepth(gl_FragCoord.z); +#endif +}`),n=e.shaderCache.createDerivedShaderProgram(t,"EC",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:o,attributeLocations:i})}return n}Vb.prototype.update=function(e,t,n,i){if(!yle(e.context))return;this._strength=n.eyeDomeLightingStrength,this._radius=n.eyeDomeLightingRadius*e.pixelRatio,K4e(this,e.context);let o,r=e.commandList,s=r.length;for(o=t;o<s;++o){let u=r[o];if(u.primitiveType!==Me.POINTS||u.pass===Be.TRANSLUCENT)continue;let f,h,A=u.derivedCommands.pointCloudProcessor;l(A)&&(f=A.command,h=A.originalShaderProgram),(!l(f)||u.dirty||h!==u.shaderProgram||f.framebuffer!==this.framebuffer)&&(f=nt.shallowClone(u,f),f.framebuffer=this.framebuffer,f.shaderProgram=X4e(e.context,u.shaderProgram),f.castShadows=!1,f.receiveShadows=!1,l(A)||(A={command:f,originalShaderProgram:u.shaderProgram},u.derivedCommands.pointCloudProcessor=A),A.originalShaderProgram=u.shaderProgram),r[o]=f}let a=this._clearCommand,c=this._drawCommand;c.boundingVolume=i,r.push(c),r.push(a)};Vb.prototype.isDestroyed=function(){return!1};Vb.prototype.destroy=function(){return Y4e(this),ue(this)};var Qp=Vb;function Cle(e){let t=e??{};this.attenuation=t.attenuation??!1,this.geometricErrorScale=t.geometricErrorScale??1,this.maximumAttenuation=t.maximumAttenuation,this.baseResolution=t.baseResolution,this.eyeDomeLighting=t.eyeDomeLighting??!0,this.eyeDomeLightingStrength=t.eyeDomeLightingStrength??1,this.eyeDomeLightingRadius=t.eyeDomeLightingRadius??1,this.backFaceCulling=t.backFaceCulling??!1,this.normalShading=t.normalShading??!0}Cle.isSupported=function(e){return Qp.isSupported(e.context)};var Zm=Cle;var mc={},J4e=new se(0,0,0,1),Gc=new se,Z4e=new Ye,yj=new U,Cj=new U;mc.worldToWindowCoordinates=function(e,t,n){return mc.worldWithEyeOffsetToWindowCoordinates(e,t,d.ZERO,n)};var Ele=new se,Ile=new d;function JM(e,t,n,i){let o=n.viewMatrix,r=N.multiplyByVector(o,se.fromElements(e.x,e.y,e.z,1,Ele),Ele),s=d.multiplyComponents(t,d.normalize(r,Ile),Ile);return r.x+=t.x+s.x,r.y+=t.y+s.y,r.z+=s.z,N.multiplyByVector(n.frustum.projectionMatrix,r,i)}var $4e=new Ae(Math.PI,D.PI_OVER_TWO),eHe=new d,tHe=new d;mc.worldWithEyeOffsetToWindowCoordinates=function(e,t,n,i){let o=e.frameState,r=mc.computeActualEllipsoidPosition(o,t,J4e);if(!l(r))return;let s=e.canvas,a=Z4e;a.x=0,a.y=0,a.width=s.clientWidth,a.height=s.clientHeight;let c=e.camera,u=!1;if(o.mode===ie.SCENE2D){let f=e.mapProjection,h=$4e,A=f.project(h,eHe),g=d.clone(c.position,tHe),m=c.frustum.clone(),_=N.computeViewportTransformation(a,0,1,new N),y=c.frustum.projectionMatrix,C=c.positionWC.y,E=d.fromElements(D.sign(C)*A.x-C,0,-c.positionWC.x),I=kt.pointToGLWindowCoordinates(y,_,E);if(C===0||I.x<=0||I.x>=s.clientWidth)u=!0;else{if(I.x>s.clientWidth*.5){a.width=I.x,c.frustum.right=A.x-C,Gc=JM(r,n,c,Gc),mc.clipToGLWindowCoordinates(a,Gc,yj),a.x+=I.x,c.position.x=-c.position.x;let b=c.frustum.right;c.frustum.right=-c.frustum.left,c.frustum.left=-b,Gc=JM(r,n,c,Gc),mc.clipToGLWindowCoordinates(a,Gc,Cj)}else{a.x+=I.x,a.width-=I.x,c.frustum.left=-A.x-C,Gc=JM(r,n,c,Gc),mc.clipToGLWindowCoordinates(a,Gc,yj),a.x=a.x-a.width,c.position.x=-c.position.x;let b=c.frustum.left;c.frustum.left=-c.frustum.right,c.frustum.right=-b,Gc=JM(r,n,c,Gc),mc.clipToGLWindowCoordinates(a,Gc,Cj)}d.clone(g,c.position),c.frustum=m.clone(),i=U.clone(yj,i),(i.x<0||i.x>s.clientWidth)&&(i.x=Cj.x)}}if(o.mode!==ie.SCENE2D||u){if(Gc=JM(r,n,c,Gc),Gc.z<0&&!(c.frustum instanceof An)&&!(c.frustum instanceof es))return;i=mc.clipToGLWindowCoordinates(a,Gc,i)}return i.y=s.clientHeight-i.y,i};mc.worldToDrawingBufferCoordinates=function(e,t,n){if(n=mc.worldToWindowCoordinates(e,t,n),!!l(n))return mc.transformWindowToDrawingBuffer(e,n,n)};var kp=new d,nHe=new Ae;mc.computeActualEllipsoidPosition=function(e,t,n){let i=e.mode;if(i===ie.SCENE3D)return d.clone(t,n);let o=e.mapProjection,r=o.ellipsoid.cartesianToCartographic(t,nHe);if(!l(r))return;if(o.project(r,kp),i===ie.COLUMBUS_VIEW)return d.fromElements(kp.z,kp.x,kp.y,n);if(i===ie.SCENE2D)return d.fromElements(0,kp.x,kp.y,n);let s=e.morphTime;return d.fromElements(D.lerp(kp.z,t.x,s),D.lerp(kp.x,t.y,s),D.lerp(kp.y,t.z,s),n)};var xle=new d,ble=new d,Tle=new N;mc.clipToGLWindowCoordinates=function(e,t,n){return d.divideByScalar(t,t.w,xle),N.computeViewportTransformation(e,0,1,Tle),N.multiplyByPoint(Tle,xle,ble),U.fromCartesian3(ble,n)};mc.transformWindowToDrawingBuffer=function(e,t,n){let i=e.canvas,o=e.drawingBufferWidth/i.clientWidth,r=e.drawingBufferHeight/i.clientHeight;return U.fromElements(t.x*o,t.y*r,n)};var iHe=new se,Sle=new se;mc.drawingBufferToWorldCoordinates=function(e,t,n,i){let r=e.context.uniformState,s=r.currentFrustum,a=s.x,c=s.y;if(e.frameState.useLogDepth){let g=n*r.log2FarDepthFromNearPlusOne,m=Math.pow(2,g)-1;n=c*(1-a/(m+a))/(c-a)}let u=e.view.passState.viewport,f=se.clone(se.UNIT_W,iHe);f.x=(t.x-u.x)/u.width*2-1,f.y=(t.y-u.y)/u.height*2-1,f.z=n*2-1,f.w=1;let h,A=e.camera.frustum;if(l(A.fovy)){h=N.multiplyByVector(r.inverseViewProjection,f,Sle);let g=1/h.w;d.multiplyByScalar(h,g,h)}else{let g=A.offCenterFrustum;l(g)&&(A=g),h=Sle,h.x=(f.x*(A.right-A.left)+A.left+A.right)*.5,h.y=(f.y*(A.top-A.bottom)+A.bottom+A.top)*.5,h.z=(f.z*(a-c)-a-c)*.5,h.w=1,h=N.multiplyByVector(r.inverseView,h,h)}return d.fromCartesian4(h,i)};var eo=mc;var Hb={};Hb._deprecationWarning=Tr;var Up=Uint32Array.BYTES_PER_ELEMENT;Hb.parse=function(e,t){let n=t??0;t=n;let i=new Uint8Array(e),o=new DataView(e);t+=Up;let r=o.getUint32(t,!0);if(r!==1)throw new ce(`Only Batched 3D Model version 1 is supported. Version ${r} is not.`);t+=Up;let s=o.getUint32(t,!0);t+=Up;let a=o.getUint32(t,!0);t+=Up;let c=o.getUint32(t,!0);t+=Up;let u=o.getUint32(t,!0);t+=Up;let f=o.getUint32(t,!0);t+=Up;let h;u>=570425344?(t-=Up*2,h=a,u=c,f=0,a=0,c=0,Hb._deprecationWarning("b3dm-legacy-header","This b3dm header is using the legacy format [batchLength] [batchTableByteLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel.")):f>=570425344&&(t-=Up,h=u,u=a,f=c,a=0,c=0,Hb._deprecationWarning("b3dm-legacy-header","This b3dm header is using the legacy format [batchTableJsonByteLength] [batchTableBinaryByteLength] [batchLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel."));let A;a===0?A={BATCH_LENGTH:h??0}:(A=dr(i,t,a),t+=a);let g=new Uint8Array(e,t,c);t+=c;let m,_;u>0&&(m=dr(i,t,u),t+=u,f>0&&(_=new Uint8Array(e,t,f),_=new Uint8Array(_),t+=f));let y=n+s-t;if(y===0)throw new ce("glTF byte length must be greater than 0.");let C;return t%4===0?C=new Uint8Array(e,t,y):(Hb._deprecationWarning("b3dm-glb-unaligned","The embedded glb is not aligned to a 4-byte boundary."),C=new Uint8Array(i.subarray(t,t+y))),{batchLength:h,featureTableJson:A,featureTableBinary:g,batchTableJson:m,batchTableBinary:_,gltf:C}};var ZM=Hb;function $M(e,t){this.json=e,this.buffer=t,this._cachedTypedArrays={},this.featuresLength=0}function wle(e,t,n,i,o,r){let s=e._cachedTypedArrays,a=s[t];return l(a)||(a=q.createArrayBufferView(n,e.buffer.buffer,e.buffer.byteOffset+r,o*i),s[t]=a),a}function oHe(e,t,n,i){let o=e._cachedTypedArrays,r=o[t];return l(r)||(r=q.createTypedArray(n,i),o[t]=r),r}$M.prototype.getGlobalProperty=function(e,t,n){let i=this.json[e];if(l(i))return l(i.byteOffset)?(t=t??q.UNSIGNED_INT,n=n??1,wle(this,e,t,n,1,i.byteOffset)):i};$M.prototype.hasProperty=function(e){return l(this.json[e])};$M.prototype.getPropertyArray=function(e,t,n){let i=this.json[e];if(l(i))return l(i.byteOffset)?(l(i.componentType)&&(t=q.fromName(i.componentType)),wle(this,e,t,n,this.featuresLength,i.byteOffset)):oHe(this,e,t,i)};$M.prototype.getProperty=function(e,t,n,i,o){let r=this.json[e];if(!l(r))return;let s=this.getPropertyArray(e,t,n);if(n===1)return s[i];for(let a=0;a<n;++a)o[a]=s[n*i+a];return o};var Ph=$M;function e1(e){let t=e.count,n=e.batchTable,i=e.binaryBody,o=e.parseAsPropertyAttributes??!1,r=e.customAttributeOutput,s=rHe(n),a;l(s.jsonProperties)&&(a=new Op({count:t,properties:s.jsonProperties}));let c;l(s.hierarchy)&&(c=new PE({extension:s.hierarchy,binaryBody:i}));let u=Th.BATCH_TABLE_CLASS_NAME,f=s.binaryProperties,h,A,g;if(o){let y=aHe(t,u,f,i,r);g=y.transcodedSchema,A=[new t0({propertyAttribute:y.propertyAttributeJson,class:y.transcodedClass})]}else{let y=sHe(t,u,f,i);g=y.transcodedSchema;let C=y.featureTableJson;h=new od({count:C.count,properties:C.properties,class:y.transcodedClass,bufferViews:y.bufferViewsTypedArrays}),A=[]}let m=[];if(l(h)||l(a)||l(c)){let y=new Sl({id:0,name:"Batch Table",count:t,metadataTable:h,jsonMetadataTable:a,batchTableHierarchy:c});m.push(y)}let _={schema:g,propertyTables:m,propertyAttributes:A,extensions:s.extensions,extras:s.extras};return new Aa(_)}function rHe(e){let t=e.HIERARCHY,n=e.extras,i=e.extensions,o;l(t)?(e1._deprecationWarning("batchTableHierarchyExtension","The batch table HIERARCHY property has been moved to an extension. Use extensions.3DTILES_batch_table_hierarchy instead."),o=t):l(i)&&(o=i["3DTILES_batch_table_hierarchy"]);let r,s={};for(let a in e){if(!e.hasOwnProperty(a)||a==="HIERARCHY"||a==="extensions"||a==="extras")continue;let c=e[a];Array.isArray(c)?(r=l(r)?r:{},r[a]=c):s[a]=c}return{binaryProperties:s,jsonProperties:r,hierarchy:o,extras:n,extensions:i}}function sHe(e,t,n,i){let o={},r={},s={},a=0;for(let h in n){if(!n.hasOwnProperty(h))continue;if(!l(i))throw new ce(`Property ${h} requires a batch table binary.`);let A=n[h],g=Wu(A);r[h]={bufferView:a},o[h]=Ble(A),s[a]=g.createArrayBufferView(i.buffer,i.byteOffset+A.byteOffset,e),a++}let c={classes:{}};c.classes[t]={properties:o};let u=qu.fromJson(c);return{featureTableJson:{class:t,count:e,properties:r},bufferViewsTypedArrays:s,transcodedSchema:u,transcodedClass:u.classes[t]}}function aHe(e,t,n,i,o){let r={},s={},a=0;for(let h in n){if(!n.hasOwnProperty(h))continue;let A=n[h];if(!l(i)&&!l(A.typedArray))throw new ce(`Property ${h} requires a batch table binary.`);let g=Ot.sanitizeGlslIdentifier(h);(g===""||r.hasOwnProperty(g))&&(g=`property_${a}`,a++);let m=Ble(A);m.name=h,r[g]=m;let _=g.toUpperCase();_.startsWith("_")||(_=`_${_}`);let y=A.typedArray;l(y)||(y=Wu(A).createArrayBufferView(i.buffer,i.byteOffset+A.byteOffset,e));let C=new xn.Attribute;C.name=_,C.count=e,C.type=A.type;let E=q.fromTypedArray(y);(E===q.INT||E===q.UNSIGNED_INT||E===q.DOUBLE)&&(e1._oneTimeWarning("Cast pnts property to floats",`Point cloud property "${_}" will be cast to a float array because INT, UNSIGNED_INT, and DOUBLE are not valid WebGL vertex attribute types. Some precision may be lost.`),y=new Float32Array(y)),C.componentDatatype=q.fromTypedArray(y),C.typedArray=y,o.push(C),s[g]={attribute:_}}let c={classes:{}};c.classes[t]={properties:r};let u=qu.fromJson(c);return{class:t,propertyAttributeJson:{properties:s},transcodedSchema:u,transcodedClass:u.classes[t]}}function Ble(e){let t=cHe(e.componentType);return{type:e.type,componentType:t}}function cHe(e){switch(e){case"BYTE":return"INT8";case"UNSIGNED_BYTE":return"UINT8";case"SHORT":return"INT16";case"UNSIGNED_SHORT":return"UINT16";case"INT":return"INT32";case"UNSIGNED_INT":return"UINT32";case"FLOAT":return"FLOAT32";case"DOUBLE":return"FLOAT64"}}e1._deprecationWarning=Tr;e1._oneTimeWarning=yt;var Gp=e1;var o0={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,FAILED:4},lHe=xn.FeatureIdAttribute;function oy(e){e=e??V.EMPTY_OBJECT;let t=e.b3dmResource,n=e.baseResource,i=e.arrayBuffer,o=e.byteOffset??0,r=e.releaseGltfJson??!1,s=e.asynchronous??!0,a=e.incrementallyLoadTextures??!0,c=e.upAxis??fo.Y,u=e.forwardAxis??fo.X,f=e.loadAttributesAsTypedArray??!1,h=e.loadAttributesFor2D??!1,A=e.enablePick??!1,g=e.loadIndicesForWireframe??!1,m=e.loadPrimitiveOutline??!0,_=e.loadForClassification??!1;n=l(n)?n:t.clone(),this._b3dmResource=t,this._baseResource=n,this._arrayBuffer=i,this._byteOffset=o,this._releaseGltfJson=r,this._asynchronous=s,this._incrementallyLoadTextures=a,this._upAxis=c,this._forwardAxis=u,this._loadAttributesAsTypedArray=f,this._loadAttributesFor2D=h,this._enablePick=A,this._loadIndicesForWireframe=g,this._loadPrimitiveOutline=m,this._loadForClassification=_,this._state=o0.UNLOADED,this._promise=void 0,this._gltfLoader=void 0,this._batchLength=0,this._propertyTable=void 0,this._batchTable=void 0,this._components=void 0,this._transform=N.IDENTITY}l(Object.create)&&(oy.prototype=Object.create(Hi.prototype),oy.prototype.constructor=oy);Object.defineProperties(oy.prototype,{texturesLoaded:{get:function(){return this._gltfLoader?.texturesLoaded}},cacheKey:{get:function(){}},components:{get:function(){return this._components}}});oy.prototype.load=function(){if(l(this._promise))return this._promise;let e=ZM.parse(this._arrayBuffer,this._byteOffset),t=e.batchLength,n=e.featureTableJson,i=e.featureTableBinary,o=e.batchTableJson,r=e.batchTableBinary,s=new Ph(n,i);t=s.getGlobalProperty("BATCH_LENGTH"),this._batchLength=t;let a=s.getGlobalProperty("RTC_CENTER",q.FLOAT,3);l(a)&&(this._transform=N.fromTranslation(d.fromArray(a))),this._batchTable={json:o,binary:r};let c=new Xu({typedArray:e.gltf,upAxis:this._upAxis,forwardAxis:this._forwardAxis,gltfResource:this._b3dmResource,baseResource:this._baseResource,releaseGltfJson:this._releaseGltfJson,incrementallyLoadTextures:this._incrementallyLoadTextures,loadAttributesAsTypedArray:this._loadAttributesAsTypedArray,loadAttributesFor2D:this._loadAttributesFor2D,enablePick:this._enablePick,loadIndicesForWireframe:this._loadIndicesForWireframe,loadPrimitiveOutline:this._loadPrimitiveOutline,loadForClassification:this._loadForClassification,renameBatchIdSemantic:!0});this._gltfLoader=c,this._state=o0.LOADING;let u=this;return this._promise=c.load().then(function(){if(!u.isDestroyed())return u._state=o0.PROCESSING,u}).catch(function(f){if(!u.isDestroyed())return uHe(u,f)}),this._promise};function uHe(e,t){return e.unload(),e._state=o0.FAILED,t=e.getError("Failed to load b3dm",t),Promise.reject(t)}oy.prototype.process=function(e){if(this._state===o0.READY)return!0;if(this._state!==o0.PROCESSING||!this._gltfLoader.process(e))return!1;let n=this._gltfLoader.components;return n.transform=N.multiplyTransformation(this._transform,n.transform,n.transform),fHe(this,n),this._components=n,this._arrayBuffer=void 0,this._state=o0.READY,!0};function fHe(e,t){let n=e._batchTable,i=e._batchLength;if(i===0)return;let o;if(l(n.json))o=Gp({count:i,batchTable:n.json,binaryBody:n.binary});else{let a=new Sl({name:Th.BATCH_TABLE_CLASS_NAME,count:i});o=new Aa({schema:{},propertyTables:[a]})}let r=t.scene.nodes,s=r.length;for(let a=0;a<s;a++)Dle(r[a]);t.structuralMetadata=o}function Dle(e){let t=e.children.length;for(let i=0;i<t;i++)Dle(e.children[i]);let n=e.primitives.length;for(let i=0;i<n;i++){let o=e.primitives[i],r=Ot.getAttributeBySemantic(o,at.FEATURE_ID);if(l(r)){r.setIndex=0;let s=new lHe;s.propertyTableId=0,s.setIndex=0,s.positionalLabel="featureId_0",o.featureIds.push(s)}}}oy.prototype.unload=function(){l(this._gltfLoader)&&!this._gltfLoader.isDestroyed()&&this._gltfLoader.unload(),this._components=void 0,this._arrayBuffer=void 0};var t1=oy;function ry(e){e=e??V.EMPTY_OBJECT,this._geoJson=e.geoJson,this._components=void 0}l(Object.create)&&(ry.prototype=Object.create(Hi.prototype),ry.prototype.constructor=ry);Object.defineProperties(ry.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}}});ry.prototype.load=function(){return Promise.resolve(this)};ry.prototype.process=function(e){return l(this._components)||(this._components=bHe(this._geoJson,e),this._geoJson=void 0),!0};function dHe(){this.lines=void 0,this.points=void 0,this.properties=void 0}function hHe(){this.features=[]}function Ej(e){let t=e[0],n=e[1],i=e[2]??0;return new d(t,n,i)}function Ij(e){let t=e.length,n=new Array(t);for(let o=0;o<t;o++)n[o]=Ej(e[o]);return[n]}function mHe(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]=Ij(e[i])[0];return n}function vle(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]=Ij(e[i])[0];return n}function AHe(e){let t=e.length,n=[];for(let i=0;i<t;i++){let o=vle(e[i]);si(n,o)}return n}function pHe(e){return[Ej(e)]}function gHe(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]=Ej(e[i]);return n}var _He={LineString:Ij,MultiLineString:mHe,MultiPolygon:AHe,Polygon:vle,MultiPoint:gHe,Point:pHe},yHe={LineString:Me.LINES,MultiLineString:Me.LINES,MultiPolygon:Me.LINES,Polygon:Me.LINES,MultiPoint:Me.POINTS,Point:Me.POINTS};function Ple(e,t){if(!l(e.geometry))return;let n=e.geometry.type,i=_He[n],o=yHe[n],r=e.geometry.coordinates;if(!l(i)||!l(r))return;let s=new dHe;o===Me.LINES?s.lines=i(r):o===Me.POINTS&&(s.points=i(r)),s.properties=e.properties,t.features.push(s)}function CHe(e,t){let n=e.features,i=n.length;for(let o=0;o<i;o++)Ple(n[o],t)}var EHe={FeatureCollection:CHe,Feature:Ple},Uz=new d;function IHe(e,t,n){let i=0,o=0,r=e.length;for(let M=0;M<r;M++){let L=e[M];if(l(L.lines)){let p=L.lines.length;for(let x=0;x<p;x++){let T=L.lines[x];i+=T.length,o+=(T.length-1)*2}}}let s=new Float32Array(i*3),a=new Float32Array(i),c=Oe.createTypedArray(i,o),u=Oe.fromTypedArray(c),f=new d(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),h=new d(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),A=0,g=0;for(let M=0;M<r;M++){let L=e[M];if(!l(L.lines))continue;let p=L.lines.length;for(let x=0;x<p;x++){let T=L.lines[x],w=T.length;for(let R=0;R<w;R++){let O=T[R],k=d.fromDegrees(O.x,O.y,O.z,te.WGS84,Uz),Q=N.multiplyByPoint(t,k,Uz);d.minimumByComponent(f,Q,f),d.maximumByComponent(h,Q,h),d.pack(Q,s,A*3),a[A]=M,R<w-1&&(c[g*2]=A,c[g*2+1]=A+1,g++),A++}}}let m=Ct.createVertexBuffer({typedArray:s,context:n.context,usage:Qe.STATIC_DRAW});m.vertexArrayDestroyable=!1;let _=Ct.createVertexBuffer({typedArray:a,context:n.context,usage:Qe.STATIC_DRAW});_.vertexArrayDestroyable=!1;let y=Ct.createIndexBuffer({typedArray:c,context:n.context,usage:Qe.STATIC_DRAW,indexDatatype:u});y.vertexArrayDestroyable=!1;let C=new xn.Attribute;C.semantic=at.POSITION,C.componentDatatype=q.FLOAT,C.type=zt.VEC3,C.count=i,C.min=f,C.max=h,C.buffer=m;let E=new xn.Attribute;E.semantic=at.FEATURE_ID,E.setIndex=0,E.componentDatatype=q.FLOAT,E.type=zt.SCALAR,E.count=i,E.buffer=_;let I=[C,E],b=new xn.Material;b.unlit=!0;let S=new xn.Indices;S.indexDatatype=u,S.count=c.length,S.buffer=y;let B=new xn.FeatureIdAttribute;B.featureCount=r,B.propertyTableId=0,B.setIndex=0,B.positionalLabel="featureId_0";let v=[B],P=new xn.Primitive;return P.attributes=I,P.indices=S,P.featureIds=v,P.primitiveType=Me.LINES,P.material=b,P}function xHe(e,t,n){let i=0,o=e.length;for(let I=0;I<o;I++){let b=e[I];l(b.points)&&(i+=b.points.length)}let r=new Float32Array(i*3),s=new Float32Array(i),a=new d(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),c=new d(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),u=0;for(let I=0;I<o;I++){let b=e[I];if(!l(b.points))continue;let S=b.points.length;for(let B=0;B<S;B++){let v=b.points[B],P=d.fromDegrees(v.x,v.y,v.z,te.WGS84,Uz),M=N.multiplyByPoint(t,P,Uz);d.minimumByComponent(a,M,a),d.maximumByComponent(c,M,c),d.pack(M,r,u*3),s[u]=I,u++}}let f=Ct.createVertexBuffer({typedArray:r,context:n.context,usage:Qe.STATIC_DRAW});f.vertexArrayDestroyable=!1;let h=Ct.createVertexBuffer({typedArray:s,context:n.context,usage:Qe.STATIC_DRAW});h.vertexArrayDestroyable=!1;let A=new xn.Attribute;A.semantic=at.POSITION,A.componentDatatype=q.FLOAT,A.type=zt.VEC3,A.count=i,A.min=a,A.max=c,A.buffer=f;let g=new xn.Attribute;g.semantic=at.FEATURE_ID,g.setIndex=0,g.componentDatatype=q.FLOAT,g.type=zt.SCALAR,g.count=i,g.buffer=h;let m=[A,g],_=new xn.Material;_.unlit=!0;let y=new xn.FeatureIdAttribute;y.featureCount=o,y.propertyTableId=0,y.setIndex=0,y.positionalLabel="featureId_0";let C=[y],E=new xn.Primitive;return E.attributes=m,E.featureIds=C,E.primitiveType=Me.POINTS,E.material=_,E}function bHe(e,t){let n=new hHe,i=EHe[e.type];l(i)&&i(e,n);let o=n.features,r=o.length;if(r===0)throw new ce("GeoJSON must have at least one feature");let s={};for(let M=0;M<r;M++){let p=o[M].properties??V.EMPTY_OBJECT;for(let x in p)p.hasOwnProperty(x)&&(l(s[x])||(s[x]=new Array(r)))}for(let M=0;M<r;M++){let L=o[M];for(let p in s)if(s.hasOwnProperty(p)){let x=L.properties[p]??"";s[p][M]=x}}let a=new Op({count:r,properties:s}),u=[new Sl({id:0,count:r,jsonMetadataTable:a})],f=qu.fromJson({}),h=new Aa({schema:f,propertyTables:u}),A=new d(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),g=new d(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),m=!1,_=!1;for(let M=0;M<r;M++){let L=o[M];if(l(L.lines)){m=!0;let p=L.lines.length;for(let x=0;x<p;x++){let T=L.lines[x],w=T.length;for(let R=0;R<w;R++)d.minimumByComponent(A,T[R],A),d.maximumByComponent(g,T[R],g)}}if(l(L.points)){_=!0;let p=L.points.length;for(let x=0;x<p;x++){let T=L.points[x];d.minimumByComponent(A,T,A),d.maximumByComponent(g,T,g)}}}let y=d.midpoint(A,g,new d),C=d.fromDegrees(y.x,y.y,y.z,te.WGS84,new d),E=kt.eastNorthUpToFixedFrame(C,te.WGS84,new N),I=N.inverseTransformation(E,new N),b=[];m&&b.push(IHe(o,I,t)),_&&b.push(xHe(o,I,t));let S=new xn.Node;S.index=0,S.primitives=b;let B=[S],v=new xn.Scene;v.nodes=B;let P=new xn.Components;return P.scene=v,P.nodes=B,P.transform=E,P.structuralMetadata=h,P}ry.prototype.unload=function(){this._components=void 0};var n1=ry;var Gz={};Gz._deprecationWarning=Tr;var sy=Uint32Array.BYTES_PER_ELEMENT;Gz.parse=function(e,t){let n=t??0;t=n;let i=new Uint8Array(e),o=new DataView(e);t+=sy;let r=o.getUint32(t,!0);if(r!==1)throw new ce(`Only Instanced 3D Model version 1 is supported. Version ${r} is not.`);t+=sy;let s=o.getUint32(t,!0);t+=sy;let a=o.getUint32(t,!0);if(a===0)throw new ce("featureTableJsonByteLength is zero, the feature table must be defined.");t+=sy;let c=o.getUint32(t,!0);t+=sy;let u=o.getUint32(t,!0);t+=sy;let f=o.getUint32(t,!0);t+=sy;let h=o.getUint32(t,!0);if(h!==1&&h!==0)throw new ce(`Only glTF format 0 (uri) or 1 (embedded) are supported. Format ${h} is not.`);t+=sy;let A=dr(i,t,a);t+=a;let g=new Uint8Array(e,t,c);t+=c;let m,_;u>0&&(m=dr(i,t,u),t+=u,f>0&&(_=new Uint8Array(e,t,f),_=new Uint8Array(_),t+=f));let y=n+s-t;if(y===0)throw new ce("glTF byte length must be greater than 0.");let C;return t%4===0?C=new Uint8Array(e,t,y):(Gz._deprecationWarning("i3dm-glb-unaligned","The embedded glb is not aligned to a 4-byte boundary."),C=new Uint8Array(i.subarray(t,t+y))),{gltfFormat:h,featureTableJson:A,featureTableBinary:g,batchTableJson:m,batchTableBinary:_,gltf:C}};var i1=Gz;var zp={NOT_LOADED:0,LOADING:1,PROCESSING:2,POST_PROCESSING:3,READY:4,FAILED:5,UNLOADED:6},zz=xn.Attribute,THe=xn.FeatureIdAttribute,Mle=xn.Instances;function Vp(e){e=e??V.EMPTY_OBJECT;let t=e.i3dmResource,n=e.arrayBuffer,i=e.baseResource,o=e.byteOffset??0,r=e.releaseGltfJson??!1,s=e.asynchronous??!0,a=e.incrementallyLoadTextures??!0,c=e.upAxis??fo.Y,u=e.forwardAxis??fo.X,f=e.loadAttributesAsTypedArray??!1,h=e.loadIndicesForWireframe??!1,A=e.loadPrimitiveOutline??!0,g=e.enablePick??!1;i=l(i)?i:t.clone(),this._i3dmResource=t,this._baseResource=i,this._arrayBuffer=n,this._byteOffset=o,this._releaseGltfJson=r,this._asynchronous=s,this._incrementallyLoadTextures=a,this._upAxis=c,this._forwardAxis=u,this._loadAttributesAsTypedArray=f,this._loadIndicesForWireframe=h,this._loadPrimitiveOutline=A,this._enablePick=g,this._state=zp.NOT_LOADED,this._promise=void 0,this._gltfLoader=void 0,this._buffers=[],this._components=void 0,this._transform=N.IDENTITY,this._batchTable=void 0,this._featureTable=void 0,this._instancesLength=0}l(Object.create)&&(Vp.prototype=Object.create(Hi.prototype),Vp.prototype.constructor=Vp);Object.defineProperties(Vp.prototype,{texturesLoaded:{get:function(){return this._gltfLoader?.texturesLoaded}},cacheKey:{get:function(){}},components:{get:function(){return this._components}}});Vp.prototype.load=function(){if(l(this._promise))return this._promise;let e=i1.parse(this._arrayBuffer,this._byteOffset),t=e.featureTableJson,n=e.featureTableBinary,i=e.batchTableJson,o=e.batchTableBinary,r=e.gltfFormat,s=new Ph(t,n);this._featureTable=s;let a=s.getGlobalProperty("INSTANCES_LENGTH");if(s.featuresLength=a,!l(a))throw new ce("Feature table global property: INSTANCES_LENGTH must be defined");this._instancesLength=a;let c=s.getGlobalProperty("RTC_CENTER",q.FLOAT,3);l(c)&&(this._transform=N.fromTranslation(d.fromArray(c))),this._batchTable={json:i,binary:o};let u={upAxis:this._upAxis,forwardAxis:this._forwardAxis,releaseGltfJson:this._releaseGltfJson,incrementallyLoadTextures:this._incrementallyLoadTextures,loadAttributesAsTypedArray:this._loadAttributesAsTypedArray,enablePick:this._enablePick,loadIndicesForWireframe:this._loadIndicesForWireframe,loadPrimitiveOutline:this._loadPrimitiveOutline};if(r===0){let h=iu(e.gltf);h=h.replace(/[\s\0]+$/,"");let A=this._baseResource.getDerivedResource({url:h});u.gltfResource=A,u.baseResource=A}else u.gltfResource=this._i3dmResource,u.typedArray=e.gltf;let f=new Xu(u);return this._gltfLoader=f,this._state=zp.LOADING,this._promise=f.load().then(()=>{if(!this.isDestroyed())return this._state=zp.PROCESSING,this}).catch(h=>{if(!this.isDestroyed())throw SHe(this,h)}),this._promise};function SHe(e,t){return e.unload(),e._state=zp.FAILED,e.getError("Failed to load i3dm",t)}Vp.prototype.process=function(e){if(this._state===zp.READY)return!0;let t=this._gltfLoader,n=!1;if(this._state===zp.PROCESSING&&(n=t.process(e)),!n)return!1;let i=t.components;return i.transform=N.multiplyTransformation(this._transform,i.transform,i.transform),DHe(this,i,e),wHe(this,i),this._components=i,this._arrayBuffer=void 0,this._state=zp.READY,!0};function wHe(e,t){let n=e._batchTable,i=e._instancesLength;if(i===0)return;let o;if(l(n.json))o=Gp({count:i,batchTable:n.json,binaryBody:n.binary});else{let r=new Sl({name:Th.BATCH_TABLE_CLASS_NAME,count:i});o=new Aa({schema:{},propertyTables:[r]})}t.structuralMetadata=o}var Vz=new d,xj=new Array(4),BHe=new N;function DHe(e,t,n){let i,o=e._featureTable,r=e._instancesLength;if(r===0)return;let s=o.getGlobalProperty("RTC_CENTER",q.FLOAT,3),a=o.getGlobalProperty("EAST_NORTH_UP"),c=o.hasProperty("NORMAL_UP")||o.hasProperty("NORMAL_UP_OCT32P")||a,u=o.hasProperty("SCALE")||o.hasProperty("SCALE_NON_UNIFORM"),f=PHe(o,r),h;c&&(h=new Float32Array(4*r));let A;u&&(A=new Float32Array(3*r));let g=new Float32Array(r),m=d.unpackArray(f),_=new d,y=new d,C=new d,E=new d,I=new J,b=new Le,S=new Array(4),B=new d,v=new Array(3),P=new N;if(!l(s)||d.equals(d.unpack(s),d.ZERO)){let Q=le.fromPoints(m);for(i=0;i<m.length;i++)d.subtract(m[i],Q.center,Vz),f[3*i+0]=Vz.x,f[3*i+1]=Vz.y,f[3*i+2]=Vz.z;let z=N.fromTranslation(Q.center,BHe);t.transform=N.multiplyTransformation(z,t.transform,t.transform)}for(i=0;i<r;i++){_=d.clone(m[i]),l(s)&&d.add(_,d.unpack(s),_),c&&(RHe(o,a,i,b,_,C,y,E,I,P),Le.pack(b,S,0),h[4*i+0]=S[0],h[4*i+1]=S[1],h[4*i+2]=S[2],h[4*i+3]=S[3]),u&&(MHe(o,i,B),d.pack(B,v,0),A[3*i+0]=v[0],A[3*i+1]=v[1],A[3*i+2]=v[2]);let Q=o.getProperty("BATCH_ID",q.UNSIGNED_SHORT,1,i);l(Q)||(Q=i),g[i]=Q}let M=new Mle;M.transformInWorldSpace=!0;let L=e._buffers,p=new zz;if(p.name="Instance Translation",p.semantic=bs.TRANSLATION,p.componentDatatype=q.FLOAT,p.type=zt.VEC3,p.count=r,p.typedArray=f,!c){let Q=Ct.createVertexBuffer({context:n.context,typedArray:f,usage:Qe.STATIC_DRAW});Q.vertexArrayDestroyable=!1,L.push(Q),p.buffer=Q}if(M.attributes.push(p),c){let Q=new zz;Q.name="Instance Rotation",Q.semantic=bs.ROTATION,Q.componentDatatype=q.FLOAT,Q.type=zt.VEC4,Q.count=r,Q.typedArray=h,M.attributes.push(Q)}if(u){let Q=new zz;if(Q.name="Instance Scale",Q.semantic=bs.SCALE,Q.componentDatatype=q.FLOAT,Q.type=zt.VEC3,Q.count=r,c)Q.typedArray=A;else{let z=Ct.createVertexBuffer({context:n.context,typedArray:A,usage:Qe.STATIC_DRAW});z.vertexArrayDestroyable=!1,L.push(z),Q.buffer=z}M.attributes.push(Q)}let x=new zz;x.name="Instance Feature ID",x.setIndex=0,x.semantic=bs.FEATURE_ID,x.componentDatatype=q.FLOAT,x.type=zt.SCALAR,x.count=r;let T=Ct.createVertexBuffer({context:n.context,typedArray:g,usage:Qe.STATIC_DRAW});T.vertexArrayDestroyable=!1,L.push(T),x.buffer=T,M.attributes.push(x);let w=new THe;w.propertyTableId=0,w.setIndex=0,w.positionalLabel="instanceFeatureId_0",M.featureIds.push(w);let R=t.nodes,O=R.length,k=!1;for(i=0;i<O;i++){let Q=R[i];Q.primitives.length>0&&(Q.instances=k?vHe(M):M,k=!0)}}function vHe(e){let t=new Mle;t.transformInWorldSpace=e.transformInWorldSpace;let n=e.attributes,i=n.length;for(let o=0;o<i;o++){let r=ze(n[o],!1);t.attributes.push(r)}return t.featureIds=e.featureIds,t}function PHe(e,t){if(e.hasProperty("POSITION"))return e.getPropertyArray("POSITION",q.FLOAT,3);if(e.hasProperty("POSITION_QUANTIZED")){let n=e.getPropertyArray("POSITION_QUANTIZED",q.UNSIGNED_SHORT,3),i=e.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",q.FLOAT,3);if(!l(i))throw new ce("Global property: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");let o=e.getGlobalProperty("QUANTIZED_VOLUME_SCALE",q.FLOAT,3);if(!l(o))throw new ce("Global property: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");let r=new Float32Array(n.length);for(let s=0;s<n.length/3;s++)for(let a=0;a<3;a++){let c=3*s+a;r[c]=n[c]/65535*o[a]+i[a]}return r}else throw new ce("Either POSITION or POSITION_QUANTIZED must be defined for each instance.")}var Rle=new Array(4);function RHe(e,t,n,i,o,r,s,a,c,u){let f=e.getProperty("NORMAL_UP",q.FLOAT,3,n,xj),h=e.getProperty("NORMAL_RIGHT",q.FLOAT,3,n,Rle),A=!1;if(l(f)){if(!l(h))throw new ce("To define a custom orientation, both NORMAL_UP and NORMAL_RIGHT must be defined.");d.unpack(f,0,r),d.unpack(h,0,s),A=!0}else{let g=e.getProperty("NORMAL_UP_OCT32P",q.UNSIGNED_SHORT,2,n,xj),m=e.getProperty("NORMAL_RIGHT_OCT32P",q.UNSIGNED_SHORT,2,n,Rle);if(l(g)){if(!l(m))throw new ce("To define a custom orientation with oct-encoded vectors, both NORMAL_UP_OCT32P and NORMAL_RIGHT_OCT32P must be defined.");On.octDecodeInRange(g[0],g[1],65535,r),On.octDecodeInRange(m[0],m[1],65535,s),A=!0}else t?(kt.eastNorthUpToFixedFrame(o,te.WGS84,u),N.getMatrix3(u,c)):J.clone(J.IDENTITY,c)}A&&(d.cross(s,r,a),d.normalize(a,a),J.setColumn(c,0,s,c),J.setColumn(c,1,r,c),J.setColumn(c,2,a,c)),Le.fromRotationMatrix(c,i)}function MHe(e,t,n){n=d.fromElements(1,1,1,n);let i=e.getProperty("SCALE",q.FLOAT,1,t);l(i)&&d.multiplyByScalar(n,i,n);let o=e.getProperty("SCALE_NON_UNIFORM",q.FLOAT,3,t,xj);l(o)&&(n.x*=o[0],n.y*=o[1],n.z*=o[2])}function NHe(e){let t=e._buffers,n=t.length;for(let i=0;i<n;i++){let o=t[i];o.isDestroyed()||o.destroy()}t.length=0}Vp.prototype.isUnloaded=function(){return this._state===zp.UNLOADED};Vp.prototype.unload=function(){l(this._gltfLoader)&&!this._gltfLoader.isDestroyed()&&this._gltfLoader.unload(),NHe(this),this._components=void 0,this._arrayBuffer=void 0,this._state=zp.UNLOADED};var o1=Vp;var LHe={STOPPED:0,ANIMATING:1},Rh=Object.freeze(LHe);function Wb(){this.times=void 0,this.points=void 0,me.throwInstantiationError()}Wb.getPointType=function(e){if(typeof e=="number")return Number;if(e instanceof d)return d;if(e instanceof Le)return Le};Wb.prototype.evaluate=me.throwInstantiationError;Wb.prototype.findTimeInterval=function(e,t){let n=this.times,i=n.length;if(t=t??0,e>=n[t]){if(t+1<i&&e<n[t+1])return t;if(t+2<i&&e<n[t+2])return t+1}else if(t-1>=0&&e>=n[t-1])return t-1;let o;if(e>n[t])for(o=t;o<i-1&&!(e>=n[o]&&e<n[o+1]);++o);else for(o=t-1;o>=0&&!(e>=n[o]&&e<n[o+1]);--o);return o===i-1&&(o=i-2),o};Wb.prototype.wrapTime=function(e){let t=this.times,n=t[t.length-1],i=t[0],o=n-i,r;return e<i&&(r=Math.floor((i-e)/o)+1,e+=r*o),e>n&&(r=Math.floor((e-n)/o)+1,e-=r*o),e};Wb.prototype.clampTime=function(e){let t=this.times;return D.clamp(e,t[0],t[t.length-1])};var _o=Wb;function jb(e){this._value=e,this._valueType=_o.getPointType(e)}Object.defineProperties(jb.prototype,{value:{get:function(){return this._value}}});jb.prototype.findTimeInterval=function(e){};jb.prototype.wrapTime=function(e){return 0};jb.prototype.clampTime=function(e){return 0};jb.prototype.evaluate=function(e,t){let n=this._value,i=this._valueType;return i===Number?n:i.clone(n,t)};var r1=jb;function Yb(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times;this._times=n,this._points=t,this._pointType=_o.getPointType(t[0]),this._lastTimeIndex=0}Object.defineProperties(Yb.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});Yb.prototype.findTimeInterval=_o.prototype.findTimeInterval;Yb.prototype.wrapTime=_o.prototype.wrapTime;Yb.prototype.clampTime=_o.prototype.clampTime;Yb.prototype.evaluate=function(e,t){let n=this.points,i=this.times,o=this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex),r=(e-i[o])/(i[o+1]-i[o]);return this._pointType===Number?(1-r)*n[o]+r*n[o+1]:(l(t)||(t=new d),d.lerp(n[o],n[o+1],r,t))};var ay=Yb;var Nle={};Nle.solve=function(e,t,n,i){let o=new Array(n.length),r=new Array(i.length),s=new Array(i.length),a;for(a=0;a<r.length;a++)r[a]=new d,s[a]=new d;o[0]=n[0]/t[0],r[0]=d.multiplyByScalar(i[0],1/t[0],r[0]);let c;for(a=1;a<o.length;++a)c=1/(t[a]-o[a-1]*e[a-1]),o[a]=n[a]*c,r[a]=d.subtract(i[a],d.multiplyByScalar(r[a-1],e[a-1],r[a]),r[a]),r[a]=d.multiplyByScalar(r[a],c,r[a]);for(c=1/(t[a]-o[a-1]*e[a-1]),r[a]=d.subtract(i[a],d.multiplyByScalar(r[a-1],e[a-1],r[a]),r[a]),r[a]=d.multiplyByScalar(r[a],c,r[a]),s[s.length-1]=r[r.length-1],a=s.length-2;a>=0;--a)s[a]=d.subtract(r[a],d.multiplyByScalar(s[a+1],o[a],s[a]),s[a]);return s};var qb=Nle;var Lle=[],Ole=[],Fle=[],Qle=[];function OHe(e,t,n){let i=Lle,o=Fle,r=Ole,s=Qle;i.length=o.length=e.length-1,r.length=s.length=e.length;let a;i[0]=r[0]=1,o[0]=0;let c=s[0];for(l(c)||(c=s[0]=new d),d.clone(t,c),a=1;a<i.length-1;++a)i[a]=o[a]=1,r[a]=4,c=s[a],l(c)||(c=s[a]=new d),d.subtract(e[a+1],e[a-1],c),d.multiplyByScalar(c,3,c);return i[a]=0,o[a]=1,r[a]=4,c=s[a],l(c)||(c=s[a]=new d),d.subtract(e[a+1],e[a-1],c),d.multiplyByScalar(c,3,c),r[a+1]=1,c=s[a+1],l(c)||(c=s[a+1]=new d),d.clone(n,c),qb.solve(i,r,o,s)}function FHe(e){let t=Lle,n=Fle,i=Ole,o=Qle;t.length=n.length=e.length-1,i.length=o.length=e.length;let r;t[0]=n[0]=1,i[0]=2;let s=o[0];for(l(s)||(s=o[0]=new d),d.subtract(e[1],e[0],s),d.multiplyByScalar(s,3,s),r=1;r<t.length;++r)t[r]=n[r]=1,i[r]=4,s=o[r],l(s)||(s=o[r]=new d),d.subtract(e[r+1],e[r-1],s),d.multiplyByScalar(s,3,s);return i[r]=2,s=o[r],l(s)||(s=o[r]=new d),d.subtract(e[r],e[r-1],s),d.multiplyByScalar(s,3,s),qb.solve(t,i,n,o)}function uu(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times,i=e.inTangents,o=e.outTangents;this._times=n,this._points=t,this._pointType=_o.getPointType(t[0]),this._inTangents=i,this._outTangents=o,this._lastTimeIndex=0}Object.defineProperties(uu.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}},inTangents:{get:function(){return this._inTangents}},outTangents:{get:function(){return this._outTangents}}});uu.createC1=function(e){e=e??V.EMPTY_OBJECT;let t=e.times,n=e.points,i=e.tangents,o=i.slice(0,i.length-1),r=i.slice(1,i.length);return new uu({times:t,points:n,inTangents:r,outTangents:o})};uu.createNaturalCubic=function(e){e=e??V.EMPTY_OBJECT;let t=e.times,n=e.points;if(n.length<3)return new ay({points:n,times:t});let i=FHe(n),o=i.slice(0,i.length-1),r=i.slice(1,i.length);return new uu({times:t,points:n,inTangents:r,outTangents:o})};uu.createClampedCubic=function(e){e=e??V.EMPTY_OBJECT;let t=e.times,n=e.points,i=e.firstTangent,o=e.lastTangent,r=_o.getPointType(n[0]);if(n.length<3)return new ay({points:n,times:t});let s=OHe(n,i,o),a=s.slice(0,s.length-1),c=s.slice(1,s.length);return new uu({times:t,points:n,inTangents:c,outTangents:a})};uu.hermiteCoefficientMatrix=new N(2,-3,0,1,-2,3,0,0,1,-2,1,0,1,-1,0,0);uu.prototype.findTimeInterval=_o.prototype.findTimeInterval;var QHe=new se,Kb=new d;uu.prototype.wrapTime=_o.prototype.wrapTime;uu.prototype.clampTime=_o.prototype.clampTime;uu.prototype.evaluate=function(e,t){let n=this.points,i=this.times,o=this.inTangents,r=this.outTangents;this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex);let s=this._lastTimeIndex,a=i[s+1]-i[s],c=(e-i[s])/a,u=QHe;u.z=c,u.y=c*c,u.x=u.y*c,u.w=1;let f=N.multiplyByVector(uu.hermiteCoefficientMatrix,u,u);f.z*=a,f.w*=a;let h=this._pointType;return h===Number?n[s]*f.x+n[s+1]*f.y+r[s]*f.z+o[s]*f.w:(l(t)||(t=new h),t=h.multiplyByScalar(n[s],f.x,t),h.multiplyByScalar(n[s+1],f.y,Kb),h.add(t,Kb,t),h.multiplyByScalar(r[s],f.z,Kb),h.add(t,Kb,t),h.multiplyByScalar(o[s],f.w,Kb),h.add(t,Kb,t))};var cy=uu;function Xb(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times;this._times=n,this._points=t,this._pointType=_o.getPointType(t[0]),this._lastTimeIndex=0}Object.defineProperties(Xb.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});Xb.prototype.findTimeInterval=_o.prototype.findTimeInterval;Xb.prototype.wrapTime=_o.prototype.wrapTime;Xb.prototype.clampTime=_o.prototype.clampTime;Xb.prototype.evaluate=function(e,t){let n=this.points;this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex);let i=this._lastTimeIndex,o=this._pointType;return o===Number?n[i]:(l(t)||(t=new o),o.clone(n[i],t))};var s1=Xb;function kHe(e){let t=e.points,n=e.times;return function(i,o){l(o)||(o=new Le);let r=e._lastTimeIndex=e.findTimeInterval(i,e._lastTimeIndex),s=(i-n[r])/(n[r+1]-n[r]),a=t[r],c=t[r+1];return Le.fastSlerp(a,c,s,o)}}function Jb(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times;this._times=n,this._points=t,this._evaluateFunction=kHe(this),this._lastTimeIndex=0}Object.defineProperties(Jb.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});Jb.prototype.findTimeInterval=_o.prototype.findTimeInterval;Jb.prototype.wrapTime=_o.prototype.wrapTime;Jb.prototype.clampTime=_o.prototype.clampTime;Jb.prototype.evaluate=function(e,t){return this._evaluateFunction(e,t)};var a1=Jb;var Zb=xn.AnimatedPropertyType;function bj(e){e=e??V.EMPTY_OBJECT;let t=e.channel,n=e.runtimeAnimation,i=e.runtimeNode;this._channel=t,this._runtimeAnimation=n,this._runtimeNode=i,this._splines=[],this._path=void 0,HHe(this)}Object.defineProperties(bj.prototype,{channel:{get:function(){return this._channel}},runtimeAnimation:{get:function(){return this._runtimeAnimation}},runtimeNode:{get:function(){return this._runtimeNode}},splines:{get:function(){return this._splines}}});function UHe(e,t){let n=[],i=[],o=[],r=t.length;for(let s=0;s<r;s+=3)i.push(t[s]),n.push(t[s+1]),o.push(t[s+2]);return i.splice(0,1),o.length=o.length-1,new cy({times:e,points:n,inTangents:i,outTangents:o})}function kle(e,t,n,i){if(e.length===1&&t.length===1)return new r1(t[0]);switch(n){case Dh.STEP:return new s1({times:e,points:t});case Dh.CUBICSPLINE:return UHe(e,t);case Dh.LINEAR:return i===Zb.ROTATION?new a1({times:e,points:t}):new ay({times:e,points:t})}}function GHe(e,t,n,i,o){let r=[];if(i===Zb.WEIGHTS){let a=t.length/o,c,u;for(c=0;c<o;c++){let f=new Array(a),h=c;if(n===Dh.CUBICSPLINE)for(u=0;u<a;u+=3)f[u]=t[h],f[u+1]=t[h+o],f[u+2]=t[h+2*o],h+=o*3;else for(u=0;u<a;u++)f[u]=t[h],h+=o;r.push(kle(e,f,n,i))}}else r.push(kle(e,t,n,i));return r}var zHe=new d,VHe=new Le;function HHe(e){let t=e._channel,n=t.sampler,i=n.input,o=n.output,r=n.interpolation,a=t.target.path,c=e._runtimeNode,u=l(c.morphWeights)?c.morphWeights.length:1,f=GHe(i,o,r,a,u);e._splines=f,e._path=a}bj.prototype.animate=function(e){let t=this._splines,n=this._path,i=this._runtimeAnimation.model,o=this._runtimeNode;if(n===Zb.WEIGHTS){let r=o.morphWeights,s=r.length;for(let a=0;a<s;a++){let c=t[a],u=i.clampAnimations?c.clampTime(e):c.wrapTime(e);r[a]=c.evaluate(u)}}else{if(o.userAnimated)return;{let r=t[0],s=i.clampAnimations?r.clampTime(e):r.wrapTime(e);n===Zb.TRANSLATION||n===Zb.SCALE?o[n]=r.evaluate(s,zHe):n===Zb.ROTATION&&(o[n]=r.evaluate(s,VHe))}}};var c1=bj;function Tj(e,t,n){this._animation=t,this._name=t.name,this._runtimeChannels=void 0,this._startTime=K.clone(n.startTime),this._delay=n.delay??0,this._stopTime=K.clone(n.stopTime),this.removeOnStop=n.removeOnStop??!1,this._multiplier=n.multiplier??1,this._reverse=n.reverse??!1,this._loop=n.loop??cu.NONE,this._animationTime=n.animationTime,this._prevAnimationDelta=void 0,this.start=new _e,this.update=new _e,this.stop=new _e,this._state=Rh.STOPPED,this._computedStartTime=void 0,this._duration=void 0;let i=this;this._raiseStartEvent=function(){i.start.raiseEvent(e,i)},this._updateEventTime=0,this._raiseUpdateEvent=function(){i.update.raiseEvent(e,i,i._updateEventTime)},this._raiseStopEvent=function(){i.stop.raiseEvent(e,i)},this._model=e,this._localStartTime=void 0,this._localStopTime=void 0,WHe(this)}Object.defineProperties(Tj.prototype,{animation:{get:function(){return this._animation}},name:{get:function(){return this._name}},runtimeChannels:{get:function(){return this._runtimeChannels}},model:{get:function(){return this._model}},localStartTime:{get:function(){return this._localStartTime}},localStopTime:{get:function(){return this._localStopTime}},startTime:{get:function(){return this._startTime}},delay:{get:function(){return this._delay}},stopTime:{get:function(){return this._stopTime}},multiplier:{get:function(){return this._multiplier}},reverse:{get:function(){return this._reverse}},loop:{get:function(){return this._loop}},animationTime:{get:function(){return this._animationTime}}});function WHe(e){let t=Number.MAX_VALUE,n=-Number.MAX_VALUE,i=e._model.sceneGraph,r=e._animation.channels,s=r.length,a=[];for(let c=0;c<s;c++){let u=r[c],f=u.target;if(!l(f))continue;let h=f.node.index,A=i._runtimeNodes[h],g=new c1({channel:u,runtimeAnimation:e,runtimeNode:A}),m=u.sampler.input;t=Math.min(t,m[0]),n=Math.max(n,m[m.length-1]),a.push(g)}e._runtimeChannels=a,e._localStartTime=t,e._localStopTime=n}Tj.prototype.animate=function(e){let t=this._runtimeChannels,n=t.length;for(let i=0;i<n;i++)t[i].animate(e)};var l1=Tj;function Hp(e){this.animationAdded=new _e,this.animationRemoved=new _e,this.animateWhilePaused=!1,this._model=e,this._runtimeAnimations=[],this._previousTime=void 0}Object.defineProperties(Hp.prototype,{length:{get:function(){return this._runtimeAnimations.length}},model:{get:function(){return this._model}}});function Sj(e,t,n){let i=e._model,o=new l1(i,t,n);return e._runtimeAnimations.push(o),e.animationAdded.raiseEvent(i,o),o}Hp.prototype.add=function(e){e=e??V.EMPTY_OBJECT;let n=this._model.sceneGraph.components.animations,i=e.index;if(l(i))return Sj(this,n[i],e);let o=n.length;for(let r=0;r<o;++r)if(n[r].name===e.name){i=r;break}return Sj(this,n[i],e)};Hp.prototype.addAll=function(e){e=e??V.EMPTY_OBJECT;let n=this._model.sceneGraph.components.animations,i=[],o=n.length;for(let r=0;r<o;++r){let s=Sj(this,n[r],e);i.push(s)}return i};Hp.prototype.remove=function(e){if(!l(e))return!1;let t=this._runtimeAnimations,n=t.indexOf(e);return n!==-1?(t.splice(n,1),this.animationRemoved.raiseEvent(this._model,e),!0):!1};Hp.prototype.removeAll=function(){let e=this._model,t=this._runtimeAnimations,n=t.length;this._runtimeAnimations.length=0;for(let i=0;i<n;++i)this.animationRemoved.raiseEvent(e,t[i])};Hp.prototype.contains=function(e){return l(e)?this._runtimeAnimations.indexOf(e)!==-1:!1};Hp.prototype.get=function(e){return this._runtimeAnimations[e]};var Hz=[];function jHe(e,t,n){return function(){e.animationRemoved.raiseEvent(t,n)}}Hp.prototype.update=function(e){let t=this._runtimeAnimations,n=t.length;if(n===0)return this._previousTime=void 0,!1;if(!this.animateWhilePaused&&K.equals(e.time,this._previousTime))return!1;this._previousTime=K.clone(e.time,this._previousTime);let i=!1,o=e.time,r=this._model;for(let s=0;s<n;++s){let a=t[s];l(a._computedStartTime)||(a._computedStartTime=K.addSeconds(a.startTime??o,a.delay,new K)),l(a._duration)||(a._duration=a.localStopTime*(1/a.multiplier));let c=a._computedStartTime,u=a._duration,f=a.stopTime,h=K.lessThanOrEquals(c,o),A=l(f)&&K.greaterThan(o,f),g=0;if(u!==0){let y=K.secondsDifference(A?f:o,c);g=l(a._animationTime)?a._animationTime(u,y):y/u}let m=a.loop===cu.REPEAT||a.loop===cu.MIRRORED_REPEAT,_=(h||m&&!l(a.startTime))&&(g<=1||m)&&!A;if(g===a._prevAnimationDelta){let y=a._state===Rh.STOPPED;if(_!==y)continue}if(a._prevAnimationDelta=g,_||a._state===Rh.ANIMATING){if(_&&a._state===Rh.STOPPED&&(a._state=Rh.ANIMATING,a.start.numberOfListeners>0&&e.afterRender.push(a._raiseStartEvent)),a.loop===cu.REPEAT)g=g-Math.floor(g);else if(a.loop===cu.MIRRORED_REPEAT){let C=Math.floor(g),E=g-C;g=C%2===1?1-E:E}a.reverse&&(g=1-g);let y=g*u*a.multiplier;y=D.clamp(y,a.localStartTime,a.localStopTime),a.animate(y),a.update.numberOfListeners>0&&(a._updateEventTime=y,e.afterRender.push(a._raiseUpdateEvent)),i=!0,_||(a._state=Rh.STOPPED,a.stop.numberOfListeners>0&&e.afterRender.push(a._raiseStopEvent),a.removeOnStop&&Hz.push(a))}}n=Hz.length;for(let s=0;s<n;++s){let a=Hz[s];t.splice(t.indexOf(a),1),e.afterRender.push(jHe(this,r,a))}return Hz.length=0,i};var u1=Hp;function r0(e){this._model=e.model,this._featureTable=e.featureTable,this._featureId=e.featureId,this._color=void 0}Object.defineProperties(r0.prototype,{show:{get:function(){return this._featureTable.getShow(this._featureId)},set:function(e){this._featureTable.setShow(this._featureId,e)}},color:{get:function(){return l(this._color)||(this._color=new G),this._featureTable.getColor(this._featureId,this._color)},set:function(e){this._featureTable.setColor(this._featureId,e)}},primitive:{get:function(){return this._model}},featureTable:{get:function(){return this._featureTable}},featureId:{get:function(){return this._featureId}}});r0.prototype.hasProperty=function(e){return this._featureTable.hasProperty(this._featureId,e)};r0.prototype.getProperty=function(e){return this._featureTable.getProperty(this._featureId,e)};r0.prototype.getPropertyInherited=function(e){return this._featureTable.hasPropertyBySemantic(this._featureId,e)?this._featureTable.getPropertyBySemantic(this._featureId,e):this._featureTable.getProperty(this._featureId,e)};r0.prototype.getPropertyIds=function(e){return this._featureTable.getPropertyIds(e)};r0.prototype.setProperty=function(e,t){return this._featureTable.setProperty(this._featureId,e,t)};var f1=r0;var d1={ALL_OPAQUE:0,ALL_TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2};d1.getStyleCommandsNeeded=function(e,t){return t===0?d1.ALL_OPAQUE:t===e?d1.ALL_TRANSLUCENT:d1.OPAQUE_AND_TRANSLUCENT};var Mh=Object.freeze(d1);var ly={GLTF:"GLTF",TILE_GLTF:"TILE_GLTF",TILE_B3DM:"B3DM",TILE_I3DM:"I3DM",TILE_PNTS:"PNTS",TILE_GEOJSON:"TILE_GEOJSON"};ly.is3DTiles=function(e){switch(e){case ly.TILE_GLTF:case ly.TILE_B3DM:case ly.TILE_I3DM:case ly.TILE_PNTS:case ly.TILE_GEOJSON:return!0;case ly.GLTF:return!1}};var wr=Object.freeze(ly);function os(e){let t=e.model,n=e.propertyTable;this._propertyTable=n,this._model=t,this._features=void 0,this._featuresLength=0,this._batchTexture=void 0,this._styleCommandsNeededDirty=!1,this._styleCommandsNeeded=Mh.ALL_OPAQUE,YHe(this)}Object.defineProperties(os.prototype,{batchTexture:{get:function(){return this._batchTexture}},featuresLength:{get:function(){return this._featuresLength}},batchTextureByteLength:{get:function(){return l(this._batchTexture)?this._batchTexture.byteLength:0}},styleCommandsNeededDirty:{get:function(){return this._styleCommandsNeededDirty}}});function YHe(e){let t=e._model,n=wr.is3DTiles(t.type),i=e._propertyTable.count;if(i===0)return;let o,r=new Array(i);if(n){let s=t.content;for(o=0;o<i;o++)r[o]=new ha(s,o)}else for(o=0;o<i;o++)r[o]=new f1({model:t,featureId:o,featureTable:e});e._features=r,e._featuresLength=i,e._batchTexture=new Il({featuresLength:i,owner:e,statistics:n?t.content.tileset.statistics:void 0})}os.prototype.update=function(e){this._styleCommandsNeededDirty=!1,this._batchTexture.update(void 0,e);let t=Mh.getStyleCommandsNeeded(this._featuresLength,this._batchTexture.translucentFeaturesLength);this._styleCommandsNeeded!==t&&(this._styleCommandsNeededDirty=!0,this._styleCommandsNeeded=t)};os.prototype.setShow=function(e,t){this._batchTexture.setShow(e,t)};os.prototype.setAllShow=function(e){this._batchTexture.setAllShow(e)};os.prototype.getShow=function(e){return this._batchTexture.getShow(e)};os.prototype.setColor=function(e,t){this._batchTexture.setColor(e,t)};os.prototype.setAllColor=function(e){this._batchTexture.setAllColor(e)};os.prototype.getColor=function(e,t){return this._batchTexture.getColor(e,t)};os.prototype.getPickColor=function(e){return this._batchTexture.getPickColor(e)};os.prototype.getFeature=function(e){return this._features[e]};os.prototype.hasProperty=function(e,t){return this._propertyTable.hasProperty(e,t)};os.prototype.hasPropertyBySemantic=function(e,t){return this._propertyTable.hasPropertyBySemantic(e,t)};os.prototype.getProperty=function(e,t){return this._propertyTable.getProperty(e,t)};os.prototype.getPropertyBySemantic=function(e,t){return this._propertyTable.getPropertyBySemantic(e,t)};os.prototype.getPropertyIds=function(e){return this._propertyTable.getPropertyIds(e)};os.prototype.setProperty=function(e,t,n){return this._propertyTable.setProperty(e,t,n)};os.prototype.isClass=function(e,t){return this._propertyTable.isClass(e,t)};os.prototype.isExactClass=function(e,t){return this._propertyTable.isExactClass(e,t)};os.prototype.getExactClassName=function(e){return this._propertyTable.getExactClassName(e)};var qHe=new G;os.prototype.applyStyle=function(e){if(!l(e)){this.setAllColor(Il.DEFAULT_COLOR_VALUE),this.setAllShow(Il.DEFAULT_SHOW_VALUE);return}for(let t=0;t<this._featuresLength;t++){let n=this.getFeature(t),i=l(e.color)?e.color.evaluateColor(n,qHe)??Il.DEFAULT_COLOR_VALUE:Il.DEFAULT_COLOR_VALUE,o=l(e.show)?e.show.evaluate(n)??Il.DEFAULT_SHOW_VALUE:Il.DEFAULT_SHOW_VALUE;this.setColor(t,i),this.setShow(t,o)}};os.prototype.isDestroyed=function(){return!1};os.prototype.destroy=function(e){this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),ue(this)};var h1=os;var s0={VERTEX:0,FRAGMENT:1,BOTH:2};s0.includesVertexShader=function(e){return e===s0.VERTEX||e===s0.BOTH};s0.includesFragmentShader=function(e){return e===s0.FRAGMENT||e===s0.BOTH};var pe=Object.freeze(s0);var Ule={name:"TilesetPipelineStage"};Ule.process=function(e,t,n){if(t.hasSkipLevelOfDetail(n)){e.shaderBuilder.addDefine("POLYGON_OFFSET",void 0,pe.FRAGMENT);let r={u_polygonOffset:function(){return U.ZERO}};e.uniformMap=Tt(r,e.uniformMap),e.hasSkipLevelOfDetail=!0}let i=e.renderStateOptions;i.stencilTest=Kt.setCesium3DTileBit(),i.stencilMask=Kt.CESIUM_3D_TILE_MASK};var m1=Ule;var A1=`// robust iterative solution without trig functions +// https://github.com/0xfaded/ellipse_demo/issues/1 +// https://stackoverflow.com/questions/22959698/distance-from-given-point-to-given-ellipse +// +// This version uses only a single iteration for best performance. For fog +// rendering, the difference is negligible. +vec2 nearestPointOnEllipseFast(vec2 pos, vec2 radii) { + vec2 p = abs(pos); + vec2 inverseRadii = 1.0 / radii; + vec2 evoluteScale = (radii.x * radii.x - radii.y * radii.y) * vec2(1.0, -1.0) * inverseRadii; + + // We describe the ellipse parametrically: v = radii * vec2(cos(t), sin(t)) + // but store the cos and sin of t in a vec2 for efficiency. + // Initial guess: t = cos(pi/4) + vec2 tTrigs = vec2(0.70710678118); + vec2 v = radii * tTrigs; + + // Find the evolute of the ellipse (center of curvature) at v. + vec2 evolute = evoluteScale * tTrigs * tTrigs * tTrigs; + // Find the (approximate) intersection of p - evolute with the ellipsoid. + vec2 q = normalize(p - evolute) * length(v - evolute); + // Update the estimate of t. + tTrigs = (q + evolute) * inverseRadii; + tTrigs = normalize(clamp(tTrigs, 0.0, 1.0)); + v = radii * tTrigs; + + return v * sign(pos); +} + +vec3 computeEllipsoidPositionWC(vec3 positionMC) { + // Get the world-space position and project onto a meridian plane of + // the ellipsoid + vec3 positionWC = (czm_model * vec4(positionMC, 1.0)).xyz; + + vec2 positionEllipse = vec2(length(positionWC.xy), positionWC.z); + vec2 nearestPoint = nearestPointOnEllipseFast(positionEllipse, czm_ellipsoidRadii.xz); + + // Reconstruct a 3D point in world space + return vec3(nearestPoint.x * normalize(positionWC.xy), nearestPoint.y); +} + +void applyFog(inout vec4 color, vec4 groundAtmosphereColor, vec3 lightDirection, float distanceToCamera) { + + vec3 fogColor = groundAtmosphereColor.rgb; + + // If there is dynamic lighting, apply that to the fog. + const float NONE = 0.0; + if (czm_atmosphereDynamicLighting != NONE) { + float darken = clamp(dot(normalize(czm_viewerPositionWC), lightDirection), czm_fogMinimumBrightness, 1.0); + fogColor *= darken; + } + + // Tonemap if HDR rendering is disabled + #ifndef HDR + fogColor.rgb = czm_pbrNeutralTonemapping(fogColor.rgb); + fogColor.rgb = czm_inverseGamma(fogColor.rgb); + #endif + + vec3 withFog = czm_fog(distanceToCamera, color.rgb, fogColor, czm_fogVisualDensityScalar); + color = vec4(withFog, color.a); +} + +void atmosphereStage(inout vec4 color, in ProcessedAttributes attributes) { + vec3 rayleighColor; + vec3 mieColor; + float opacity; + + vec3 positionWC; + vec3 lightDirection; + + // When the camera is in space, compute the position per-fragment for + // more accurate ground atmosphere. All other cases will use + // + // The if condition will be added in https://github.com/CesiumGS/cesium/issues/11717 + if (false) { + positionWC = computeEllipsoidPositionWC(attributes.positionMC); + lightDirection = czm_getDynamicAtmosphereLightDirection(positionWC, czm_atmosphereDynamicLighting); + + // The fog color is derived from the ground atmosphere color + czm_computeGroundAtmosphereScattering( + positionWC, + lightDirection, + rayleighColor, + mieColor, + opacity + ); + } else { + positionWC = attributes.positionWC; + lightDirection = czm_getDynamicAtmosphereLightDirection(positionWC, czm_atmosphereDynamicLighting); + rayleighColor = v_atmosphereRayleighColor; + mieColor = v_atmosphereMieColor; + opacity = v_atmosphereOpacity; + } + + //color correct rayleigh and mie colors + const bool ignoreBlackPixels = true; + rayleighColor = czm_applyHSBShift(rayleighColor, czm_atmosphereHsbShift, ignoreBlackPixels); + mieColor = czm_applyHSBShift(mieColor, czm_atmosphereHsbShift, ignoreBlackPixels); + + vec4 groundAtmosphereColor = czm_computeAtmosphereColor(positionWC, lightDirection, rayleighColor, mieColor, opacity); + + if (u_isInFog) { + float distanceToCamera = length(attributes.positionEC); + applyFog(color, groundAtmosphereColor, lightDirection, distanceToCamera); + } else { + // Ground atmosphere + } +} +`;var p1=`void atmosphereStage(ProcessedAttributes attributes) { + vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(v_positionWC, czm_atmosphereDynamicLighting); + + czm_computeGroundAtmosphereScattering( + // This assumes the geometry stage came before this. + v_positionWC, + lightDirection, + v_atmosphereRayleighColor, + v_atmosphereMieColor, + v_atmosphereOpacity + ); +} +`;var Gle={name:"AtmospherePipelineStage"};Gle.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine("HAS_ATMOSPHERE",void 0,pe.BOTH),i.addDefine("COMPUTE_POSITION_WC_ATMOSPHERE",void 0,pe.BOTH),i.addVarying("vec3","v_atmosphereRayleighColor"),i.addVarying("vec3","v_atmosphereMieColor"),i.addVarying("float","v_atmosphereOpacity"),i.addVertexLines([p1]),i.addFragmentLines([A1]),i.addUniform("bool","u_isInFog",pe.FRAGMENT),e.uniformMap.u_isInFog=function(){let o=d.distance(n.camera.positionWC,t.boundingSphere.center);return D.fog(o,n.fog.density)>D.EPSILON3}};var g1=Gle;var _1=`#ifdef DIFFUSE_IBL +vec3 sampleDiffuseEnvironment(vec3 cubeDir) +{ + #ifdef CUSTOM_SPHERICAL_HARMONICS + return czm_sphericalHarmonics(cubeDir, model_sphericalHarmonicCoefficients); + #else + return czm_sphericalHarmonics(cubeDir, czm_sphericalHarmonicCoefficients); + #endif +} +#endif + +#ifdef SPECULAR_IBL +vec3 sampleSpecularEnvironment(vec3 cubeDir, float roughness) +{ + #ifdef CUSTOM_SPECULAR_IBL + float lod = roughness * model_specularEnvironmentMapsMaximumLOD; + return czm_textureCube(model_specularEnvironmentMaps, cubeDir, lod).rgb; + #else + float lod = roughness * czm_specularEnvironmentMapsMaximumLOD; + return czm_textureCube(czm_specularEnvironmentMaps, cubeDir, lod).rgb; + #endif +} +vec3 computeSpecularIBL(vec3 cubeDir, float NdotV, vec3 f0, float roughness) +{ + // see https://bruop.github.io/ibl/ at Single Scattering Results + // Roughness dependent fresnel, from Fdez-Aguera + vec3 f90 = max(vec3(1.0 - roughness), f0); + vec3 F = fresnelSchlick2(f0, f90, NdotV); + + vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, roughness)).rg; + vec3 specularSample = sampleSpecularEnvironment(cubeDir, roughness); + + return specularSample * (F * brdfLut.x + brdfLut.y); +} +#endif + +#if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL) +/** + * Compute the light contributions from environment maps and spherical harmonic coefficients. + * See Fdez-Aguera, https://www.jcgt.org/published/0008/01/03/paper.pdf, for explanation + * of the single- and multi-scattering terms. + * + * @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position. + * @param {vec3} normalEC The surface normal in eye coordinates. + * @param {czm_modelMaterial} The material properties. + * @return {vec3} The computed HDR color. + */ +vec3 textureIBL(vec3 viewDirectionEC, vec3 normalEC, czm_modelMaterial material) { + vec3 f0 = material.specular; + float roughness = material.roughness; + float specularWeight = 1.0; + #ifdef USE_SPECULAR + specularWeight = material.specularWeight; + #endif + float NdotV = clamp(dot(normalEC, viewDirectionEC), 0.0, 1.0); + + // see https://bruop.github.io/ibl/ at Single Scattering Results + // Roughness dependent fresnel, from Fdez-Aguera + vec3 f90 = max(vec3(1.0 - roughness), f0); + vec3 singleScatterFresnel = fresnelSchlick2(f0, f90, NdotV); + + vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, roughness)).rg; + vec3 FssEss = specularWeight * (singleScatterFresnel * brdfLut.x + brdfLut.y); + + #ifdef DIFFUSE_IBL + vec3 normalMC = normalize(model_iblReferenceFrameMatrix * normalEC); + vec3 irradiance = sampleDiffuseEnvironment(normalMC); + + vec3 averageFresnel = f0 + (1.0 - f0) / 21.0; + float Ems = specularWeight * (1.0 - brdfLut.x - brdfLut.y); + vec3 FmsEms = FssEss * averageFresnel * Ems / (1.0 - averageFresnel * Ems); + vec3 dielectricScattering = (1.0 - FssEss - FmsEms) * material.diffuse; + vec3 diffuseContribution = irradiance * (FmsEms + dielectricScattering) * model_iblFactor.x; + #else + vec3 diffuseContribution = vec3(0.0); + #endif + + #ifdef USE_ANISOTROPY + // Bend normal to account for anisotropic distortion of specular reflection + vec3 anisotropyDirection = material.anisotropicB; + vec3 anisotropicTangent = cross(anisotropyDirection, viewDirectionEC); + vec3 anisotropicNormal = cross(anisotropicTangent, anisotropyDirection); + float bendFactor = 1.0 - material.anisotropyStrength * (1.0 - roughness); + float bendFactorPow4 = bendFactor * bendFactor * bendFactor * bendFactor; + vec3 bentNormal = normalize(mix(anisotropicNormal, normalEC, bendFactorPow4)); + vec3 reflectEC = reflect(-viewDirectionEC, bentNormal); + #else + vec3 reflectEC = reflect(-viewDirectionEC, normalEC); + #endif + + #ifdef SPECULAR_IBL + vec3 reflectMC = normalize(model_iblReferenceFrameMatrix * reflectEC); + vec3 radiance = sampleSpecularEnvironment(reflectMC, roughness); + vec3 specularContribution = radiance * FssEss * model_iblFactor.y; + #else + vec3 specularContribution = vec3(0.0); + #endif + + return diffuseContribution + specularContribution; +} +#endif +`;var zle={name:"ImageBasedLightingPipelineStage"},KHe=new U;zle.process=function(e,t,n){let i=t.imageBasedLighting,o=t.environmentMapManager,r=e.shaderBuilder,s;l(i.specularEnvironmentMaps)||(s=o.radianceCubeMap);let a=i.sphericalHarmonicCoefficients??o.sphericalHarmonicCoefficients;r.addDefine("USE_IBL_LIGHTING",void 0,pe.FRAGMENT),r.addUniform("vec2","model_iblFactor",pe.FRAGMENT),Ch.isSupported(n.context)&&((i.useSphericalHarmonics||i.useSpecularEnvironmentMaps||i.enabled)&&r.addUniform("mat3","model_iblReferenceFrameMatrix",pe.FRAGMENT),l(s)&&r.addDefine("COMPUTE_POSITION_WC_ATMOSPHERE",void 0,pe.BOTH),l(a)&&l(a[0])?(r.addDefine("DIFFUSE_IBL",void 0,pe.FRAGMENT),r.addDefine("CUSTOM_SPHERICAL_HARMONICS",void 0,pe.FRAGMENT),r.addUniform("vec3","model_sphericalHarmonicCoefficients[9]",pe.FRAGMENT)):i.useDefaultSphericalHarmonics&&r.addDefine("DIFFUSE_IBL",void 0,pe.FRAGMENT),l(i.specularEnvironmentCubeMap)&&i.specularEnvironmentCubeMap.ready||l(s)?(r.addDefine("SPECULAR_IBL",void 0,pe.FRAGMENT),r.addDefine("CUSTOM_SPECULAR_IBL",void 0,pe.FRAGMENT),r.addUniform("samplerCube","model_specularEnvironmentMaps",pe.FRAGMENT),r.addUniform("float","model_specularEnvironmentMapsMaximumLOD",pe.FRAGMENT)):t.useDefaultSpecularMaps&&r.addDefine("SPECULAR_IBL",void 0,pe.FRAGMENT)),r.addFragmentLines(_1);let c={model_iblFactor:function(){return U.multiplyByScalar(i.imageBasedLightingFactor,o?.intensity||1,KHe)},model_iblReferenceFrameMatrix:function(){return t._iblReferenceFrameMatrix},model_sphericalHarmonicCoefficients:function(){return a},model_specularEnvironmentMaps:function(){return i.specularEnvironmentCubeMap.texture},model_specularEnvironmentMapsMaximumLOD:function(){return i.specularEnvironmentCubeMap.maximumMipmapLevel}};l(s)&&(c.model_specularEnvironmentMaps=function(){return s},c.model_specularEnvironmentMapsMaximumLOD=function(){return o.maximumMipmapLevel}),e.uniformMap=Tt(c,e.uniformMap)};var y1=zle;var XHe=D.EPSILON16;function Bj(e){e=e??V.EMPTY_OBJECT;let t=e.stage,n=e.runtimeArticulation;this._stage=t,this._runtimeArticulation=n,this._name=t.name,this._type=t.type,this._minimumValue=t.minimumValue,this._maximumValue=t.maximumValue,this._currentValue=t.initialValue}Object.defineProperties(Bj.prototype,{stage:{get:function(){return this._stage}},runtimeArticulation:{get:function(){return this._runtimeArticulation}},name:{get:function(){return this._name}},type:{get:function(){return this._type}},minimumValue:{get:function(){return this._minimumValue}},maximumValue:{get:function(){return this._maximumValue}},currentValue:{get:function(){return this._currentValue},set:function(e){e=D.clamp(e,this.minimumValue,this.maximumValue),D.equalsEpsilon(this._currentValue,e,XHe)||(this._currentValue=e,this.runtimeArticulation._dirty=!0)}}});var JHe=new d,wj=new J;Bj.prototype.applyStageToMatrix=function(e){let t=this.type,n=this.currentValue,i=JHe,o;switch(t){case kc.XROTATE:o=J.fromRotationX(D.toRadians(n),wj),e=N.multiplyByMatrix3(e,o,e);break;case kc.YROTATE:o=J.fromRotationY(D.toRadians(n),wj),e=N.multiplyByMatrix3(e,o,e);break;case kc.ZROTATE:o=J.fromRotationZ(D.toRadians(n),wj),e=N.multiplyByMatrix3(e,o,e);break;case kc.XTRANSLATE:i.x=n,i.y=0,i.z=0,e=N.multiplyByTranslation(e,i,e);break;case kc.YTRANSLATE:i.x=0,i.y=n,i.z=0,e=N.multiplyByTranslation(e,i,e);break;case kc.ZTRANSLATE:i.x=0,i.y=0,i.z=n,e=N.multiplyByTranslation(e,i,e);break;case kc.XSCALE:i.x=n,i.y=1,i.z=1,e=N.multiplyByScale(e,i,e);break;case kc.YSCALE:i.x=1,i.y=n,i.z=1,e=N.multiplyByScale(e,i,e);break;case kc.ZSCALE:i.x=1,i.y=1,i.z=n,e=N.multiplyByScale(e,i,e);break;case kc.UNIFORMSCALE:e=N.multiplyByUniformScale(e,n,e);break;default:break}return e};var C1=Bj;function Wz(e){e=e??V.EMPTY_OBJECT;let t=e.articulation,n=e.sceneGraph;this._articulation=t,this._sceneGraph=n,this._name=t.name,this._runtimeStages=[],this._runtimeStagesByName={},this._runtimeNodes=[],this._dirty=!0,ZHe(this)}Object.defineProperties(Wz.prototype,{articulation:{get:function(){return this._articulation}},sceneGraph:{get:function(){return this._sceneGraph}},name:{get:function(){return this._name}},runtimeStages:{get:function(){return this._runtimeStages}},runtimeNodes:{get:function(){return this._runtimeNodes}}});function ZHe(e){let n=e.articulation.stages,i=n.length,o=e._runtimeStages,r=e._runtimeStagesByName;for(let s=0;s<i;s++){let a=n[s],c=new C1({stage:a,runtimeArticulation:e});o.push(c);let u=a.name;r[u]=c}}Wz.prototype.setArticulationStage=function(e,t){let n=this._runtimeStagesByName[e];l(n)&&(n.currentValue=t)};var $He=new N,e5e=new N;Wz.prototype.apply=function(){if(!this._dirty)return;this._dirty=!1;let e=N.clone(N.IDENTITY,$He),t,n=this._runtimeStages,i=n.length;for(t=0;t<i;t++)e=n[t].applyStageToMatrix(e);let o=this._runtimeNodes,r=o.length;for(t=0;t<r;t++){let s=o[t],a=N.multiplyTransformation(s.originalTransform,e,e5e);s.transform=a}};var E1=Wz;var I1=`void modelColorStage(inout czm_modelMaterial material) +{ + material.diffuse = mix(material.diffuse, model_color.rgb, model_colorBlend); + float highlight = ceil(model_colorBlend); + material.diffuse *= mix(model_color.rgb, vec3(1.0), highlight); + material.alpha *= model_color.a; +} +`;var $b={name:"ModelColorPipelineStage",COLOR_UNIFORM_NAME:"model_color",COLOR_BLEND_UNIFORM_NAME:"model_colorBlend"};$b.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine("HAS_MODEL_COLOR",void 0,pe.FRAGMENT),i.addFragmentLines(I1);let o={},r=t.color;r.alpha===0&&!t.hasSilhouette(n)&&(e.renderStateOptions.colorMask={red:!1,green:!1,blue:!1,alpha:!1}),r.alpha<1&&(e.alphaOptions.pass=Be.TRANSLUCENT),i.addUniform("vec4",$b.COLOR_UNIFORM_NAME,pe.FRAGMENT),o[$b.COLOR_UNIFORM_NAME]=function(){return t.color},i.addUniform("float",$b.COLOR_BLEND_UNIFORM_NAME,pe.FRAGMENT),o[$b.COLOR_BLEND_UNIFORM_NAME]=function(){return Qc.getColorBlend(t.colorBlendMode,t.colorBlendAmount)},e.uniformMap=Tt(o,e.uniformMap)};var uy=$b;var x1=`#ifdef USE_CLIPPING_PLANES_FLOAT_TEXTURE +vec4 getClippingPlane( + highp sampler2D packedClippingPlanes, + int clippingPlaneNumber, + mat4 transform +) { + int pixY = clippingPlaneNumber / CLIPPING_PLANES_TEXTURE_WIDTH; + int pixX = clippingPlaneNumber - (pixY * CLIPPING_PLANES_TEXTURE_WIDTH); + float pixelWidth = 1.0 / float(CLIPPING_PLANES_TEXTURE_WIDTH); + float pixelHeight = 1.0 / float(CLIPPING_PLANES_TEXTURE_HEIGHT); + float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel + float v = (float(pixY) + 0.5) * pixelHeight; + vec4 plane = texture(packedClippingPlanes, vec2(u, v)); + return czm_transformPlane(plane, transform); +} +#else +// Handle uint8 clipping texture instead +vec4 getClippingPlane( + highp sampler2D packedClippingPlanes, + int clippingPlaneNumber, + mat4 transform +) { + int clippingPlaneStartIndex = clippingPlaneNumber * 2; // clipping planes are two pixels each + int pixY = clippingPlaneStartIndex / CLIPPING_PLANES_TEXTURE_WIDTH; + int pixX = clippingPlaneStartIndex - (pixY * CLIPPING_PLANES_TEXTURE_WIDTH); + float pixelWidth = 1.0 / float(CLIPPING_PLANES_TEXTURE_WIDTH); + float pixelHeight = 1.0 / float(CLIPPING_PLANES_TEXTURE_HEIGHT); + float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel + float v = (float(pixY) + 0.5) * pixelHeight; + vec4 oct32 = texture(packedClippingPlanes, vec2(u, v)) * 255.0; + vec2 oct = vec2(oct32.x * 256.0 + oct32.y, oct32.z * 256.0 + oct32.w); + vec4 plane; + plane.xyz = czm_octDecode(oct, 65535.0); + plane.w = czm_unpackFloat(texture(packedClippingPlanes, vec2(u + pixelWidth, v))); + return czm_transformPlane(plane, transform); +} +#endif + +float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) { + vec4 position = czm_windowToEyeCoordinates(fragCoord); + vec3 clipNormal = vec3(0.0); + vec3 clipPosition = vec3(0.0); + float pixelWidth = czm_metersPerPixel(position); + + #ifdef UNION_CLIPPING_REGIONS + float clipAmount; // For union planes, we want to get the min distance. So we set the initial value to the first plane distance in the loop below. + #else + float clipAmount = 0.0; + bool clipped = true; + #endif + + for (int i = 0; i < CLIPPING_PLANES_LENGTH; ++i) { + vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix); + clipNormal = clippingPlane.xyz; + clipPosition = -clippingPlane.w * clipNormal; + float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth; + + #ifdef UNION_CLIPPING_REGIONS + clipAmount = czm_branchFreeTernary(i == 0, amount, min(amount, clipAmount)); + if (amount <= 0.0) { + discard; + } + #else + clipAmount = max(amount, clipAmount); + clipped = clipped && (amount <= 0.0); + #endif + } + + #ifndef UNION_CLIPPING_REGIONS + if (clipped) { + discard; + } + #endif + + return clipAmount; +} + +void modelClippingPlanesStage(inout vec4 color) +{ + float clipDistance = clip(gl_FragCoord, model_clippingPlanes, model_clippingPlanesMatrix); + vec4 clippingPlanesEdgeColor = vec4(1.0); + clippingPlanesEdgeColor.rgb = model_clippingPlanesEdgeStyle.rgb; + float clippingPlanesEdgeWidth = model_clippingPlanesEdgeStyle.a; + + if (clipDistance > 0.0 && clipDistance < clippingPlanesEdgeWidth) { + color = clippingPlanesEdgeColor; + } +} +`;var Vle={name:"ModelClippingPlanesPipelineStage"},t5e=new U;Vle.process=function(e,t,n){let i=t.clippingPlanes,o=n.context,r=e.shaderBuilder;r.addDefine("HAS_CLIPPING_PLANES",void 0,pe.FRAGMENT),r.addDefine("CLIPPING_PLANES_LENGTH",i.length,pe.FRAGMENT),i.unionClippingRegions&&r.addDefine("UNION_CLIPPING_REGIONS",void 0,pe.FRAGMENT),Fs.useFloatTexture(o)&&r.addDefine("USE_CLIPPING_PLANES_FLOAT_TEXTURE",void 0,pe.FRAGMENT);let s=Fs.getTextureResolution(i,o,t5e);r.addDefine("CLIPPING_PLANES_TEXTURE_WIDTH",s.x,pe.FRAGMENT),r.addDefine("CLIPPING_PLANES_TEXTURE_HEIGHT",s.y,pe.FRAGMENT),r.addUniform("sampler2D","model_clippingPlanes",pe.FRAGMENT),r.addUniform("vec4","model_clippingPlanesEdgeStyle",pe.FRAGMENT),r.addUniform("mat4","model_clippingPlanesMatrix",pe.FRAGMENT),r.addFragmentLines(x1);let a={model_clippingPlanes:function(){return i.texture},model_clippingPlanesEdgeStyle:function(){let c=G.clone(i.edgeColor);return c.alpha=i.edgeWidth,c},model_clippingPlanesMatrix:function(){return t._clippingPlanesMatrix}};e.uniformMap=Tt(a,e.uniformMap)};var b1=Vle;var T1=`void modelClippingPolygonsStage(ProcessedAttributes attributes) +{ + vec2 sphericalLatLong = czm_approximateSphericalCoordinates(v_positionWC); + sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi); + + vec2 minDistance = vec2(czm_infinity); + v_regionIndex = -1; + v_clippingPosition = vec2(czm_infinity); + + for (int regionIndex = 0; regionIndex < CLIPPING_POLYGON_REGIONS_LENGTH; regionIndex++) { + vec4 extents = czm_unpackClippingExtents(model_clippingExtents, regionIndex); + vec2 rectUv = (sphericalLatLong.yx - extents.yx) * extents.wz; + + vec2 clamped = clamp(rectUv, vec2(0.0), vec2(1.0)); + vec2 distance = abs(rectUv - clamped) * extents.wz; + + if (minDistance.x > distance.x || minDistance.y > distance.y) { + minDistance = distance; + v_clippingPosition = rectUv; + } + + float threshold = 0.01; + if (rectUv.x > threshold && rectUv.y > threshold && rectUv.x < 1.0 - threshold && rectUv.y < 1.0 - threshold) { + v_regionIndex = regionIndex; + } + } +} +`;var S1=`void modelClippingPolygonsStage() +{ + vec2 clippingPosition = v_clippingPosition; + int regionIndex = v_regionIndex; + czm_clipPolygons(model_clippingDistance, CLIPPING_POLYGON_REGIONS_LENGTH, clippingPosition, regionIndex); +} +`;var Hle={name:"ModelClippingPolygonsPipelineStage"};Hle.process=function(e,t,n){let i=t.clippingPolygons,o=e.shaderBuilder;o.addDefine("ENABLE_CLIPPING_POLYGONS",void 0,pe.BOTH),i.inverse&&o.addDefine("CLIPPING_INVERSE",void 0,pe.FRAGMENT),o.addDefine("CLIPPING_POLYGON_REGIONS_LENGTH",i.extentsCount,pe.BOTH),o.addUniform("sampler2D","model_clippingDistance",pe.FRAGMENT),o.addUniform("sampler2D","model_clippingExtents",pe.VERTEX),o.addVarying("vec2","v_clippingPosition"),o.addVarying("int","v_regionIndex","flat"),o.addVertexLines(T1),o.addFragmentLines(S1);let r={model_clippingDistance:function(){return i.clippingTexture},model_clippingExtents:function(){return i.extentsTexture}};e.uniformMap=Tt(r,e.uniformMap)};var w1=Hle;function Wle(e,t){this._model=e,this._runtimeNode=t}Object.defineProperties(Wle.prototype,{name:{get:function(){return this._runtimeNode._name}},id:{get:function(){return this._runtimeNode._id}},show:{get:function(){return this._runtimeNode.show},set:function(e){this._runtimeNode.show=e}},matrix:{get:function(){return this._runtimeNode.transform},set:function(e){l(e)?(this._runtimeNode.transform=e,this._runtimeNode.userAnimated=!0,this._model._userAnimationDirty=!0):(this._runtimeNode.transform=this.originalMatrix,this._runtimeNode.userAnimated=!1)}},originalMatrix:{get:function(){return this._runtimeNode.originalTransform}}});var B1=Wle;var D1=`mat4 getInstancingTransform() +{ + mat4 instancingTransform; + + #ifdef HAS_INSTANCE_MATRICES + instancingTransform = mat4( + a_instancingTransformRow0.x, a_instancingTransformRow1.x, a_instancingTransformRow2.x, 0.0, // Column 1 + a_instancingTransformRow0.y, a_instancingTransformRow1.y, a_instancingTransformRow2.y, 0.0, // Column 2 + a_instancingTransformRow0.z, a_instancingTransformRow1.z, a_instancingTransformRow2.z, 0.0, // Column 3 + a_instancingTransformRow0.w, a_instancingTransformRow1.w, a_instancingTransformRow2.w, 1.0 // Column 4 + ); + #else + vec3 translation = vec3(0.0, 0.0, 0.0); + vec3 scale = vec3(1.0, 1.0, 1.0); + + #ifdef HAS_INSTANCE_TRANSLATION + translation = a_instanceTranslation; + #endif + #ifdef HAS_INSTANCE_SCALE + scale = a_instanceScale; + #endif + + instancingTransform = mat4( + scale.x, 0.0, 0.0, 0.0, + 0.0, scale.y, 0.0, 0.0, + 0.0, 0.0, scale.z, 0.0, + translation.x, translation.y, translation.z, 1.0 + ); + #endif + + return instancingTransform; +} + +#ifdef USE_2D_INSTANCING +mat4 getInstancingTransform2D() +{ + mat4 instancingTransform2D; + + #ifdef HAS_INSTANCE_MATRICES + instancingTransform2D = mat4( + a_instancingTransform2DRow0.x, a_instancingTransform2DRow1.x, a_instancingTransform2DRow2.x, 0.0, // Column 1 + a_instancingTransform2DRow0.y, a_instancingTransform2DRow1.y, a_instancingTransform2DRow2.y, 0.0, // Column 2 + a_instancingTransform2DRow0.z, a_instancingTransform2DRow1.z, a_instancingTransform2DRow2.z, 0.0, // Column 3 + a_instancingTransform2DRow0.w, a_instancingTransform2DRow1.w, a_instancingTransform2DRow2.w, 1.0 // Column 4 + ); + #else + vec3 translation2D = vec3(0.0, 0.0, 0.0); + vec3 scale = vec3(1.0, 1.0, 1.0); + + #ifdef HAS_INSTANCE_TRANSLATION + translation2D = a_instanceTranslation2D; + #endif + #ifdef HAS_INSTANCE_SCALE + scale = a_instanceScale; + #endif + + instancingTransform2D = mat4( + scale.x, 0.0, 0.0, 0.0, + 0.0, scale.y, 0.0, 0.0, + 0.0, 0.0, scale.z, 0.0, + translation2D.x, translation2D.y, translation2D.z, 1.0 + ); + #endif + + return instancingTransform2D; +} +#endif +`;var v1=`void instancingStage(inout ProcessedAttributes attributes) +{ + vec3 positionMC = attributes.positionMC; + + mat4 instancingTransform = getInstancingTransform(); + + attributes.positionMC = (instancingTransform * vec4(positionMC, 1.0)).xyz; + + #ifdef HAS_NORMALS + vec3 normalMC = attributes.normalMC; + attributes.normalMC = (instancingTransform * vec4(normalMC, 0.0)).xyz; + #endif + + #ifdef USE_2D_INSTANCING + mat4 instancingTransform2D = getInstancingTransform2D(); + attributes.position2D = (instancingTransform2D * vec4(positionMC, 1.0)).xyz; + #endif +} +`;var P1=`void legacyInstancingStage( + inout ProcessedAttributes attributes, + out mat4 instanceModelView, + out mat3 instanceModelViewInverseTranspose) +{ + vec3 positionMC = attributes.positionMC; + + mat4 instancingTransform = getInstancingTransform(); + + mat4 instanceModel = instancingTransform * u_instance_nodeTransform; + instanceModelView = u_instance_modifiedModelView; + instanceModelViewInverseTranspose = mat3(u_instance_modifiedModelView * instanceModel); + + attributes.positionMC = (instanceModel * vec4(positionMC, 1.0)).xyz; + + #ifdef USE_2D_INSTANCING + mat4 instancingTransform2D = getInstancingTransform2D(); + attributes.position2D = (instancingTransform2D * vec4(positionMC, 1.0)).xyz; + #endif +} +`;var jz=new N,n5e=new N,i5e=new N,Yle={name:"InstancingPipelineStage",_getInstanceTransformsAsMatrices:Zle,_transformsToTypedArray:vj};Yle.process=function(e,t,n){let i=t.instances,o=i.attributes[0].count,r=e.shaderBuilder;r.addDefine("HAS_INSTANCING"),r.addVertexLines(D1);let s=e.model,a=s.sceneGraph,c=e.runtimeNode,u=n.mode!==ie.SCENE3D&&!n.scene3DOnly&&s._projectTo2D,f=s._enablePick&&!n.context.webgl2,h=[];_5e(e,n,i,h,u,f),E5e(e,n,i,h);let A={};if(i.transformInWorldSpace?(r.addDefine("USE_LEGACY_INSTANCING",void 0,pe.VERTEX),r.addUniform("mat4","u_instance_modifiedModelView",pe.VERTEX),r.addUniform("mat4","u_instance_nodeTransform",pe.VERTEX),A.u_instance_modifiedModelView=function(){let g=N.multiplyTransformation(s.modelMatrix,a.components.transform,jz);return u?N.multiplyTransformation(n.context.uniformState.view3D,g,jz):(n.mode!==ie.SCENE3D&&(g=kt.basisTo2D(n.mapProjection,g,jz)),N.multiplyTransformation(n.context.uniformState.view,g,jz))},A.u_instance_nodeTransform=function(){return N.multiplyTransformation(a.axisCorrectionMatrix,c.computedTransform,n5e)},r.addVertexLines(P1)):r.addVertexLines(v1),u){r.addDefine("USE_2D_INSTANCING",void 0,pe.VERTEX),r.addUniform("mat4","u_modelView2D",pe.VERTEX);let g=n.context,m=N.fromTranslation(c.instancingReferencePoint2D,new N);A.u_modelView2D=function(){return N.multiplyTransformation(g.uniformState.view,m,i5e)}}e.uniformMap=Tt(A,e.uniformMap),e.instanceCount=o,si(e.attributes,h)};var R1=new N,o5e=new d;function r5e(e,t,n,i,o){let r=N.multiplyTransformation(t,e,R1);return r=N.multiplyTransformation(r,n,R1),o=kt.basisTo2D(i.mapProjection,r,o),o}function s5e(e,t,n,i,o){let r=N.fromTranslation(e,R1),s=N.multiplyTransformation(t,r,R1);s=N.multiplyTransformation(s,n,R1);let a=N.getTranslation(s,o5e);return o=eo.computeActualEllipsoidPosition(i,a,o),o}function qle(e,t,n){let i=e.model,o=i.sceneGraph;e.runtimeNode.node.instances.transformInWorldSpace?(t=N.multiplyTransformation(i.modelMatrix,o.components.transform,t),n=N.multiplyTransformation(o.axisCorrectionMatrix,e.runtimeNode.computedTransform,n)):(t=N.clone(o.computedModelMatrix,t),t=N.multiplyTransformation(t,e.runtimeNode.computedTransform,t),n=N.clone(N.IDENTITY,n))}var Kle=new N,Xle=new N,a5e=new N,c5e=new d;function l5e(e,t,n,i){let o=Kle,r=Xle;qle(t,o,r);let a=t.runtimeNode.instancingReferencePoint2D,c=e.length;for(let u=0;u<c;u++){let f=e[u],h=r5e(f,o,r,n,a5e),A=N.getTranslation(h,c5e),g=d.subtract(A,a,A);i[u]=N.setTranslation(h,g,i[u])}return i}function u5e(e,t,n,i){let o=Kle,r=Xle;qle(t,o,r);let a=t.runtimeNode.instancingReferencePoint2D,c=e.length;for(let u=0;u<c;u++){let f=e[u],h=s5e(f,o,r,n,f);i[u]=d.subtract(h,a,i[u])}return i}var f5e=new d,d5e=new d;function Jle(e,t){let n=e.runtimeNode,i=e.model.sceneGraph.computedModelMatrix,o=N.multiplyByPoint(i,n.instancingTranslationMin,f5e),r=eo.computeActualEllipsoidPosition(t,o,o),s=N.multiplyByPoint(i,n.instancingTranslationMax,d5e),a=eo.computeActualEllipsoidPosition(t,s,s);n.instancingReferencePoint2D=d.lerp(r,a,.5,new d)}function vj(e){let n=e.length,i=new Float32Array(n*12);for(let o=0;o<n;o++){let r=e[o],s=12*o;i[s+0]=r[0],i[s+1]=r[4],i[s+2]=r[8],i[s+3]=r[12],i[s+4]=r[1],i[s+5]=r[5],i[s+6]=r[9],i[s+7]=r[13],i[s+8]=r[2],i[s+9]=r[6],i[s+10]=r[10],i[s+11]=r[14]}return i}function h5e(e){let n=e.length,i=new Float32Array(n*3);for(let o=0;o<n;o++){let r=e[o],s=3*o;i[s+0]=r[0],i[s+1]=r[4],i[s+2]=r[8]}return i}var m5e=new d,A5e=new Le,p5e=new d;function Zle(e,t,n){let i=new Array(t),o=Ot.getAttributeBySemantic(e,bs.TRANSLATION),r=Ot.getAttributeBySemantic(e,bs.ROTATION),s=Ot.getAttributeBySemantic(e,bs.SCALE),a=new d(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),c=new d(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),u=l(o),f=l(r),h=l(s),A=u?o.typedArray:new Float32Array(t*3),g=f?r.typedArray:new Float32Array(t*4);f&&r.normalized&&(g=On.dequantize(g,r.componentDatatype,r.type,t));let m;h?m=s.typedArray:(m=new Float32Array(t*3),m.fill(1));for(let y=0;y<t;y++){let C=new d(A[y*3],A[y*3+1],A[y*3+2],m5e);d.maximumByComponent(a,C,a),d.minimumByComponent(c,C,c);let E=new Le(g[y*4],g[y*4+1],g[y*4+2],f?g[y*4+3]:1,A5e),I=new d(m[y*3],m[y*3+1],m[y*3+2],p5e),b=N.fromTranslationQuaternionRotationScale(C,E,I,new N);i[y]=b}let _=n.runtimeNode;return _.instancingTranslationMin=c,_.instancingTranslationMax=a,u&&(o.typedArray=void 0),f&&(r.typedArray=void 0),h&&(s.typedArray=void 0),i}function g5e(e,t,n){let i=new Array(t),o=e.typedArray,r=new d(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),s=new d(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);for(let c=0;c<t;c++){let u=new d(o[c*3],o[c*3+1],o[c*3+2]);i[c]=u,d.minimumByComponent(r,u,r),d.maximumByComponent(s,u,s)}let a=n.runtimeNode;return a.instancingTranslationMin=r,a.instancingTranslationMax=s,e.typedArray=void 0,i}function Pj(e,t){let n=Ct.createVertexBuffer({context:t.context,typedArray:e,usage:Qe.STATIC_DRAW});return n.vertexArrayDestroyable=!1,n}function _5e(e,t,n,i,o,r){let s=Ot.getAttributeBySemantic(n,bs.ROTATION);l(s)?y5e(e,n,i,t,o,r):C5e(e,n,i,t,o)}function y5e(e,t,n,i,o,r){let s=e.shaderBuilder,a=t.attributes[0].count,c=e.model,u=e.runtimeNode;s.addDefine("HAS_INSTANCE_MATRICES");let f="Transform",h,A=u.instancingTransformsBuffer;if(!l(A)){h=Zle(t,a,e);let y=vj(h);A=Pj(y,i),c._modelResources.push(A),r&&(u.transformsTypedArray=y),u.instancingTransformsBuffer=A}if(jle(e,A,n,f),!o)return;let g=ze(i);g.mode=ie.COLUMBUS_VIEW,Jle(e,g);let m=u.instancingTransformsBuffer2D;if(!l(m)){let y=l5e(h,e,g,h),C=vj(y);m=Pj(C,i),c._modelResources.push(m),u.instancingTransformsBuffer2D=m}jle(e,m,n,"Transform2D")}function C5e(e,t,n,i,o,r){let s=e.shaderBuilder,a=e.runtimeNode,c=Ot.getAttributeBySemantic(t,bs.TRANSLATION),u=Ot.getAttributeBySemantic(t,bs.SCALE);if(l(u)&&(s.addDefine("HAS_INSTANCE_SCALE"),Dj(e,u.buffer,u.byteOffset,u.byteStride,n,"Scale")),!l(c))return;let f,h=c.typedArray;if(l(h)?f=g5e(c,c.count,e):l(a.instancingTranslationMin)||(a.instancingTranslationMin=c.min,a.instancingTranslationMax=c.max),s.addDefine("HAS_INSTANCE_TRANSLATION"),Dj(e,c.buffer,c.byteOffset,c.byteStride,n,"Translation"),!o&&!r)return;let g=ze(i);g.mode=ie.COLUMBUS_VIEW,Jle(e,g);let m=a.instancingTranslationBuffer2D;if(!l(m)){let E=u5e(f,e,g,f),I=h5e(E);r&&(a.transformsTypedArray=I),m=Pj(I,i),e.model._modelResources.push(m),a.instancingTranslationBuffer2D=m}if(!o)return;Dj(e,m,0,void 0,n,"Translation2D")}function jle(e,t,n,i){let r=q.getSizeInBytes(q.FLOAT),s=r*12,a=[{index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:4,componentDatatype:q.FLOAT,normalize:!1,offsetInBytes:0,strideInBytes:s,instanceDivisor:1},{index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:4,componentDatatype:q.FLOAT,normalize:!1,offsetInBytes:r*4,strideInBytes:s,instanceDivisor:1},{index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:4,componentDatatype:q.FLOAT,normalize:!1,offsetInBytes:r*8,strideInBytes:s,instanceDivisor:1}],c=e.shaderBuilder;c.addAttribute("vec4",`a_instancing${i}Row0`),c.addAttribute("vec4",`a_instancing${i}Row1`),c.addAttribute("vec4",`a_instancing${i}Row2`),si(n,a)}function Dj(e,t,n,i,o,r){o.push({index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:3,componentDatatype:q.FLOAT,normalize:!1,offsetInBytes:n,strideInBytes:i,instanceDivisor:1}),e.shaderBuilder.addAttribute("vec3",`a_instance${r}`)}function E5e(e,t,n,i){let o=n.attributes,r=e.shaderBuilder;for(let s=0;s<o.length;s++){let a=o[s];a.semantic===bs.FEATURE_ID&&(a.setIndex>=e.featureIdVertexAttributeSetIndex&&(e.featureIdVertexAttributeSetIndex=a.setIndex+1),i.push({index:e.attributeIndex++,vertexBuffer:a.buffer,componentsPerAttribute:zt.getNumberOfComponents(a.type),componentDatatype:a.componentDatatype,normalize:!1,offsetInBytes:a.byteOffset,strideInBytes:a.byteStride,instanceDivisor:1}),r.addAttribute("float",`a_instanceFeatureId_${a.setIndex}`))}}var M1=Yle;var Rj={};Rj.name="ModelMatrixUpdateStage";Rj.update=function(e,t,n){let i=n.mode!==ie.SCENE3D;if(!(i&&t._model._projectTo2D)&&e._transformDirty){let o=i?t._computedModelMatrix2D:t._computedModelMatrix;$le(e,t,o,e.transformToRoot),e._transformDirty=!1}};function I5e(e,t,n){e.modelMatrix=N.multiplyTransformation(t,n,e.modelMatrix),e.cullFace=Ot.getCullFace(e.modelMatrix,e.primitiveType)}function $le(e,t,n,i){let o;i=N.multiplyTransformation(i,e.transform,new N),e.updateComputedTransform();let r=e.runtimePrimitives.length;for(o=0;o<r;o++){let a=e.runtimePrimitives[o];I5e(a.drawCommand,n,i)}let s=e.children.length;for(o=0;o<s;o++){let a=t._runtimeNodes[e.children[o]];a._transformToRoot=N.clone(i,a._transformToRoot),$le(a,t,n,i),a._transformDirty=!1}}var N1=Rj;var eue={name:"NodeStatisticsPipelineStage",_countInstancingAttributes:tue,_countGeneratedBuffers:nue};eue.process=function(e,t,n){let i=e.model.statistics,o=t.instances,r=e.runtimeNode;tue(i,o),nue(i,r)};function tue(e,t){if(!l(t))return;let n=t.attributes,i=n.length;for(let o=0;o<i;o++){let r=n[o];l(r.buffer)&&e.addBuffer(r.buffer,!1)}}function nue(e,t){l(t.instancingTransformsBuffer)&&e.addBuffer(t.instancingTransformsBuffer,!1),l(t.instancingTransformsBuffer2D)&&e.addBuffer(t.instancingTransformsBuffer2D,!1),l(t.instancingTranslationBuffer2D)&&e.addBuffer(t.instancingTranslationBuffer2D,!1)}var L1=eue;function eT(e){e=e??V.EMPTY_OBJECT;let t=e.node,n=e.transform,i=e.transformToRoot,o=e.sceneGraph,r=e.children;this._node=t,this._name=t.name,this._id=t.index,this._sceneGraph=o,this._children=r,this._originalTransform=N.clone(n,this._originalTransform),this._transform=N.clone(n,this._transform),this._transformToRoot=N.clone(i,this._transformToRoot),this._computedTransform=new N,this._transformDirty=!1,this._transformParameters=void 0,this._morphWeights=[],this._runtimeSkin=void 0,this._computedJointMatrices=[],this.show=!0,this.userAnimated=!1,this.pipelineStages=[],this.runtimePrimitives=[],this.updateStages=[],this.instancingTranslationMin=void 0,this.instancingTranslationMax=void 0,this.instancingTransformsBuffer=void 0,this.instancingTransformsBuffer2D=void 0,this.instancingTranslationBuffer2D=void 0,this.instancingReferencePoint2D=void 0,x5e(this)}Object.defineProperties(eT.prototype,{node:{get:function(){return this._node}},sceneGraph:{get:function(){return this._sceneGraph}},children:{get:function(){return this._children}},transform:{get:function(){return this._transform},set:function(e){this._transformDirty=!0,this._transform=N.clone(e,this._transform)}},transformToRoot:{get:function(){return this._transformToRoot}},computedTransform:{get:function(){return this._computedTransform}},originalTransform:{get:function(){return this._originalTransform}},translation:{get:function(){return l(this._transformParameters)?this._transformParameters.translation:void 0},set:function(e){let t=this._transformParameters,n=t.translation;d.equals(n,e)||(t.translation=d.clone(e,t.translation),Mj(this,t))}},rotation:{get:function(){return l(this._transformParameters)?this._transformParameters.rotation:void 0},set:function(e){let t=this._transformParameters,n=t.rotation;Le.equals(n,e)||(t.rotation=Le.clone(e,t.rotation),Mj(this,t))}},scale:{get:function(){return l(this._transformParameters)?this._transformParameters.scale:void 0},set:function(e){let t=this._transformParameters,n=t.scale;d.equals(n,e)||(t.scale=d.clone(e,t.scale),Mj(this,t))}},morphWeights:{get:function(){return this._morphWeights},set:function(e){let t=e.length;for(let n=0;n<t;n++)this._morphWeights[n]=e[n]}},runtimeSkin:{get:function(){return this._runtimeSkin}},computedJointMatrices:{get:function(){return this._computedJointMatrices}}});function x5e(e){let t=e.transform,n=e.transformToRoot,i=e._computedTransform;e._computedTransform=N.multiply(n,t,i);let o=e.node;l(o.matrix)||(e._transformParameters=new R_(o.translation,o.rotation,o.scale)),l(o.morphWeights)&&(e._morphWeights=o.morphWeights.slice());let r=o.articulationName;if(l(r)){let c=e.sceneGraph._runtimeArticulations[r];l(c)&&c.runtimeNodes.push(e)}}function Mj(e,t){e._transformDirty=!0,e._transform=N.fromTranslationRotationScale(t,e._transform)}eT.prototype.getChild=function(e){return this.sceneGraph._runtimeNodes[this.children[e]]};eT.prototype.configurePipeline=function(){let e=this.node,t=this.pipelineStages;t.length=0;let n=this.updateStages;n.length=0,l(e.instances)&&t.push(M1),t.push(L1),n.push(N1)};eT.prototype.updateComputedTransform=function(){this._computedTransform=N.multiply(this._transformToRoot,this._transform,this._computedTransform)};eT.prototype.updateJointMatrices=function(){let e=this._runtimeSkin;if(!l(e))return;e.updateJointMatrices();let t=this._computedJointMatrices,n=e.jointMatrices,i=n.length;for(let o=0;o<i;o++){l(t[o])||(t[o]=new N);let r=N.multiplyTransformation(this.transformToRoot,this.transform,t[o]),s=N.inverseTransformation(r,t[o]);t[o]=N.multiplyTransformation(s,n[o],t[o])}};var O1=eT;var iue={name:"AlphaPipelineStage"};iue.process=function(e,t,n){let i=e.alphaOptions,o=e.model;i.pass=i.pass??o.opaquePass;let r=e.renderStateOptions;i.pass===Be.TRANSLUCENT&&(r.cull.enabled=!1,r.depthMask=!1,r.blending=pn.ALPHA_BLEND);let s=e.shaderBuilder,a=e.uniformMap;l(i.alphaCutoff)&&(s.addDefine("ALPHA_MODE_MASK",void 0,pe.FRAGMENT),s.addUniform("float","u_alphaCutoff",pe.FRAGMENT),a.u_alphaCutoff=function(){return i.alphaCutoff})};var F1=iue;var oue={name:"BatchTexturePipelineStage"};oue.process=function(e,t,n){let i=e.shaderBuilder,o={},r=e.model,s=r.featureTables[r.featureTableId],a=s.featuresLength;i.addUniform("int","model_featuresLength"),o.model_featuresLength=function(){return a};let c=s.batchTexture;i.addUniform("sampler2D","model_batchTexture"),o.model_batchTexture=function(){return c.batchTexture??c.defaultTexture},i.addUniform("vec4","model_textureStep"),o.model_textureStep=function(){return c.textureStep},c.textureDimensions.y>1&&(i.addDefine("MULTILINE_BATCH_TEXTURE"),i.addUniform("vec2","model_textureDimensions"),o.model_textureDimensions=function(){return c.textureDimensions}),e.uniformMap=Tt(o,e.uniformMap)};var Q1=oue;var rue={name:"ClassificationPipelineStage"};rue.process=function(e,t,n){e.shaderBuilder.addDefine("HAS_CLASSIFICATION",void 0,pe.BOTH);let o=e.runtimePrimitive;l(o.batchLengths)||b5e(t,o)};function b5e(e,t){let n=Ot.getAttributeBySemantic(e,at.POSITION);if(!l(n))throw new ce("Primitives must have a position attribute to be used for classification.");let i,o=e.indices,r=l(o);r&&(i=o.typedArray,o.typedArray=void 0);let s=r?o.count:n.count,a=Ot.getAttributeBySemantic(e,at.FEATURE_ID,0);if(!l(a)){t.batchLengths=[s],t.batchOffsets=[0];return}let c=a.typedArray;a.typedArray=void 0;let u=[],f=[0],h=r?i[0]:0,A=c[h],g=0;for(let _=1;_<s;_++){let y=r?i[_]:_,C=c[y];if(C!==A){let E=_-g,I=_;u.push(E),f.push(I),g=I,A=C}}let m=s-g;u.push(m),t.batchLengths=u,t.batchOffsets=f}var k1=rue;var U1=`void filterByPassType(inout vec3 positionMC, vec4 featureColor) +{ + bool styleTranslucent = (featureColor.a != 1.0); + // Only render translucent features in the translucent pass (if the style or the original command has translucency). + if (czm_pass == czm_passTranslucent && !styleTranslucent && !model_commandTranslucent) + { + // If the model has a translucent silhouette, it needs to render during the silhouette color command, + // (i.e. the command where model_silhouettePass = true), even if the model isn't translucent. + #ifdef HAS_SILHOUETTE + positionMC *= float(model_silhouettePass); + #else + positionMC *= 0.0; + #endif + } + // If the current pass is not the translucent pass and the style is not translucent, don't render the feature. + else if (czm_pass != czm_passTranslucent && styleTranslucent) + { + positionMC *= 0.0; + } +} + +void cpuStylingStage(inout vec3 positionMC, inout SelectedFeature feature) +{ + float show = ceil(feature.color.a); + positionMC *= show; + + #if defined(HAS_SELECTED_FEATURE_ID_ATTRIBUTE) && !defined(HAS_CLASSIFICATION) + filterByPassType(positionMC, feature.color); + #endif +} +`;var G1=`void filterByPassType(vec4 featureColor) +{ + bool styleTranslucent = (featureColor.a != 1.0); + // Only render translucent features in the translucent pass (if the style or the original command has translucency). + if (czm_pass == czm_passTranslucent && !styleTranslucent && !model_commandTranslucent) + { + // If the model has a translucent silhouette, it needs to render during the silhouette color command, + // (i.e. the command where model_silhouettePass = true), even if the model isn't translucent. + #ifdef HAS_SILHOUETTE + if(!model_silhouettePass) { + discard; + } + #else + discard; + #endif + } + // If the current pass is not the translucent pass and the style is not translucent, don't render the feature. + else if (czm_pass != czm_passTranslucent && styleTranslucent) + { + discard; + } +} + +void cpuStylingStage(inout czm_modelMaterial material, SelectedFeature feature) +{ + vec4 featureColor = feature.color; + if (featureColor.a == 0.0) + { + discard; + } + + // If a feature ID vertex attribute is used, the pass type filter is applied in the vertex shader. + // So, we only apply in in the fragment shader if the feature ID texture is used. + #if defined(HAS_SELECTED_FEATURE_ID_TEXTURE) && !defined(HAS_CLASSIFICATION) + filterByPassType(featureColor); + #endif + + featureColor = czm_gammaCorrect(featureColor); + + // Classification models compute the diffuse differently. + #ifdef HAS_CLASSIFICATION + material.diffuse = featureColor.rgb * featureColor.a; + #else + float highlight = ceil(model_colorBlend); + material.diffuse *= mix(featureColor.rgb, vec3(1.0), highlight); + #endif + + material.alpha *= featureColor.a; +} +`;var sue={name:"CPUStylingPipelineStage"};sue.process=function(e,t,n){let i=e.model,o=e.shaderBuilder;o.addVertexLines(U1),o.addFragmentLines(G1),o.addDefine("USE_CPU_STYLING",void 0,pe.BOTH),l(i.color)||(o.addUniform("float",uy.COLOR_BLEND_UNIFORM_NAME,pe.FRAGMENT),e.uniformMap[uy.COLOR_BLEND_UNIFORM_NAME]=function(){return Qc.getColorBlend(i.colorBlendMode,i.colorBlendAmount)}),o.addUniform("bool","model_commandTranslucent",pe.BOTH),e.uniformMap.model_commandTranslucent=function(){return e.alphaOptions.pass===Be.TRANSLUCENT}};var z1=sue;var aue={MODIFY_MATERIAL:"MODIFY_MATERIAL",REPLACE_MATERIAL:"REPLACE_MATERIAL"};aue.getDefineName=function(e){return`CUSTOM_SHADER_${e}`};var Wp=Object.freeze(aue);var V1=`void customShaderStage( + inout czm_modelVertexOutput vsOutput, + inout ProcessedAttributes attributes, + FeatureIds featureIds, + Metadata metadata, + MetadataClass metadataClass, + MetadataStatistics metadataStatistics +) { + // VertexInput and initializeInputStruct() are dynamically generated in JS, + // see CustomShaderPipelineStage.js + VertexInput vsInput; + initializeInputStruct(vsInput, attributes); + vsInput.featureIds = featureIds; + vsInput.metadata = metadata; + vsInput.metadataClass = metadataClass; + vsInput.metadataStatistics = metadataStatistics; + vertexMain(vsInput, vsOutput); + attributes.positionMC = vsOutput.positionMC; +} +`;var H1=`void customShaderStage( + inout czm_modelMaterial material, + ProcessedAttributes attributes, + FeatureIds featureIds, + Metadata metadata, + MetadataClass metadataClass, + MetadataStatistics metadataStatistics +) { + // FragmentInput and initializeInputStruct() are dynamically generated in JS, + // see CustomShaderPipelineStage.js + FragmentInput fsInput; + initializeInputStruct(fsInput, attributes); + fsInput.featureIds = featureIds; + fsInput.metadata = metadata; + fsInput.metadataClass = metadataClass; + fsInput.metadataStatistics = metadataStatistics; + fragmentMain(fsInput, material); +} +`;var W1=`void featureIdStage(out FeatureIds featureIds, ProcessedAttributes attributes) { + initializeFeatureIds(featureIds, attributes); + initializeFeatureIdAliases(featureIds); +} +`;var j1=`void featureIdStage(out FeatureIds featureIds, ProcessedAttributes attributes) +{ + initializeFeatureIds(featureIds, attributes); + initializeFeatureIdAliases(featureIds); + setFeatureIdVaryings(); +} +`;var to={name:"FeatureIdPipelineStage",STRUCT_ID_FEATURE_IDS_VS:"FeatureIdsVS",STRUCT_ID_FEATURE_IDS_FS:"FeatureIdsFS",STRUCT_NAME_FEATURE_IDS:"FeatureIds",FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS:"initializeFeatureIdsVS",FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS:"initializeFeatureIdsFS",FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_VS:"initializeFeatureIdAliasesVS",FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_FS:"initializeFeatureIdAliasesFS",FUNCTION_SIGNATURE_INITIALIZE_FEATURE_IDS:"void initializeFeatureIds(out FeatureIds featureIds, ProcessedAttributes attributes)",FUNCTION_SIGNATURE_INITIALIZE_FEATURE_ID_ALIASES:"void initializeFeatureIdAliases(inout FeatureIds featureIds)",FUNCTION_ID_SET_FEATURE_ID_VARYINGS:"setFeatureIdVaryings",FUNCTION_SIGNATURE_SET_FEATURE_ID_VARYINGS:"void setFeatureIdVaryings()"};to.process=function(e,t,n){let i=e.shaderBuilder;T5e(i);let o=e.runtimeNode.node.instances;l(o)&&S5e(e,o,n),w5e(e,t,n),i.addVertexLines(j1),i.addFragmentLines(W1)};function T5e(e){e.addStruct(to.STRUCT_ID_FEATURE_IDS_VS,to.STRUCT_NAME_FEATURE_IDS,pe.VERTEX),e.addStruct(to.STRUCT_ID_FEATURE_IDS_FS,to.STRUCT_NAME_FEATURE_IDS,pe.FRAGMENT),e.addFunction(to.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,to.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_IDS,pe.VERTEX),e.addFunction(to.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,to.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_IDS,pe.FRAGMENT),e.addFunction(to.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_VS,to.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_ID_ALIASES,pe.VERTEX),e.addFunction(to.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_FS,to.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_ID_ALIASES,pe.FRAGMENT),e.addFunction(to.FUNCTION_ID_SET_FEATURE_ID_VARYINGS,to.FUNCTION_SIGNATURE_SET_FEATURE_ID_VARYINGS,pe.VERTEX)}function S5e(e,t,n){let i=t.featureIds,o=t.attributes[0].count;for(let r=0;r<i.length;r++){let s=i[r],a=s.positionalLabel;s instanceof xn.FeatureIdAttribute?B5e(e,s,a):cue(e,s,a,o,1,n);let c=s.label;l(c)&&lue(e,a,c,pe.BOTH)}}function w5e(e,t,n){let i=t.featureIds,r=Ot.getAttributeBySemantic(t,at.POSITION).count;for(let s=0;s<i.length;s++){let a=i[s],c=a.positionalLabel,u=pe.BOTH;a instanceof xn.FeatureIdAttribute?D5e(e,a,c):a instanceof xn.FeatureIdImplicitRange?cue(e,a,c,r,void 0,n):(v5e(e,a,c,s,n),u=pe.FRAGMENT);let f=a.label;l(f)&&lue(e,c,f,u)}}function B5e(e,t,n){let i=e.shaderBuilder;i.addStructField(to.STRUCT_ID_FEATURE_IDS_VS,"int",n),i.addStructField(to.STRUCT_ID_FEATURE_IDS_FS,"int",n);let o=t.setIndex,r=n.replace(/_\d+$/,"_"),s=`a_${r}${o}`,a=`v_${r}${o}`,c=`featureIds.${n} = int(czm_round(${s}));`,u=`featureIds.${n} = int(czm_round(${a}));`;i.addFunctionLines(to.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,[c]),i.addFunctionLines(to.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,[u]),i.addVarying("float",a),i.addFunctionLines(to.FUNCTION_ID_SET_FEATURE_ID_VARYINGS,[`${a} = ${s};`])}function D5e(e,t,n){let i=e.shaderBuilder;i.addStructField(to.STRUCT_ID_FEATURE_IDS_VS,"int",n),i.addStructField(to.STRUCT_ID_FEATURE_IDS_FS,"int",n);let o=t.setIndex,r=n.replace(/_\d+$/,"_"),s=[`featureIds.${n} = int(czm_round(attributes.${r}${o}));`];i.addFunctionLines(to.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,s),i.addFunctionLines(to.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,s)}function cue(e,t,n,i,o,r){P5e(e,t,i,o,r);let s=e.shaderBuilder,a=`a_implicit_${n}`;s.addAttribute("float",a);let c=`v_implicit_${n}`;s.addVarying("float",c),s.addStructField(to.STRUCT_ID_FEATURE_IDS_VS,"int",n),s.addStructField(to.STRUCT_ID_FEATURE_IDS_FS,"int",n),s.addFunctionLines(to.FUNCTION_ID_SET_FEATURE_ID_VARYINGS,[`${c} = ${a};`]),s.addFunctionLines(to.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,[`featureIds.${n} = int(czm_round(${a}));`]),s.addFunctionLines(to.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,[`featureIds.${n} = int(czm_round(${c}));`])}function v5e(e,t,n,i,o){let r=`u_featureIdTexture_${i}`,s=e.uniformMap,a=t.textureReader;s[r]=function(){return a.texture??o.context.defaultTexture};let c=a.channels,u=e.shaderBuilder;u.addStructField(to.STRUCT_ID_FEATURE_IDS_FS,"int",n),u.addUniform("sampler2D",r,pe.FRAGMENT);let h=`v_texCoord_${a.texCoord}`,A=h,g=a.transform;if(l(g)&&!J.equals(g,J.IDENTITY)){let y=`${r}Transform`;u.addUniform("mat3",y,pe.FRAGMENT),s[y]=function(){return g},A=`vec2(${y} * vec3(${h}, 1.0))`}let m=`texture(${r}, ${A}).${c}`,_=`featureIds.${n} = czm_unpackUint(${m});`;u.addFunctionLines(to.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,[_])}function lue(e,t,n,i){let o=e.shaderBuilder,r=pe.includesVertexShader(i);r&&o.addStructField(to.STRUCT_ID_FEATURE_IDS_VS,"int",n),o.addStructField(to.STRUCT_ID_FEATURE_IDS_FS,"int",n);let s=[`featureIds.${n} = featureIds.${t};`];r&&o.addFunctionLines(to.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_VS,s),o.addFunctionLines(to.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_FS,s)}function P5e(e,t,n,i,o){let r=e.model,s,a;if(l(t.repeat)){let u=R5e(t,n);s=Ct.createVertexBuffer({context:o.context,typedArray:u,usage:Qe.STATIC_DRAW}),s.vertexArrayDestroyable=!1,r._pipelineResources.push(s),r.statistics.addBuffer(s,!1)}else a=[t.offset];let c={index:e.attributeIndex++,instanceDivisor:i,value:a,vertexBuffer:s,normalize:!1,componentsPerAttribute:1,componentDatatype:q.FLOAT,strideInBytes:q.getSizeInBytes(q.FLOAT),offsetInBytes:0};e.attributes.push(c)}function R5e(e,t){let n=e.offset,i=e.repeat,o=new Float32Array(t);for(let r=0;r<t;r++)o[r]=n+Math.floor(r/i);return o}var fy=to;var Y1=`void metadataStage( + out Metadata metadata, + out MetadataClass metadataClass, + out MetadataStatistics metadataStatistics, + ProcessedAttributes attributes + ) +{ + initializeMetadata(metadata, metadataClass, metadataStatistics, attributes); +} +`;var q1=`void metadataStage( + out Metadata metadata, + out MetadataClass metadataClass, + out MetadataStatistics metadataStatistics, + ProcessedAttributes attributes + ) +{ + initializeMetadata(metadata, metadataClass, metadataStatistics, attributes); + setMetadataVaryings(); +} +`;var Qi={name:"MetadataPipelineStage",STRUCT_ID_METADATA_VS:"MetadataVS",STRUCT_ID_METADATA_FS:"MetadataFS",STRUCT_NAME_METADATA:"Metadata",STRUCT_ID_METADATA_CLASS_VS:"MetadataClassVS",STRUCT_ID_METADATA_CLASS_FS:"MetadataClassFS",STRUCT_NAME_METADATA_CLASS:"MetadataClass",STRUCT_ID_METADATA_STATISTICS_VS:"MetadataStatisticsVS",STRUCT_ID_METADATA_STATISTICS_FS:"MetadataStatisticsFS",STRUCT_NAME_METADATA_STATISTICS:"MetadataStatistics",FUNCTION_ID_INITIALIZE_METADATA_VS:"initializeMetadataVS",FUNCTION_ID_INITIALIZE_METADATA_FS:"initializeMetadataFS",FUNCTION_SIGNATURE_INITIALIZE_METADATA:"void initializeMetadata(out Metadata metadata, out MetadataClass metadataClass, out MetadataStatistics metadataStatistics, ProcessedAttributes attributes)",FUNCTION_ID_SET_METADATA_VARYINGS:"setMetadataVaryings",FUNCTION_SIGNATURE_SET_METADATA_VARYINGS:"void setMetadataVaryings()",METADATA_CLASS_FIELDS:[{specName:"noData",shaderName:"noData"},{specName:"default",shaderName:"defaultValue"},{specName:"min",shaderName:"minValue"},{specName:"max",shaderName:"maxValue"}],METADATA_STATISTICS_FIELDS:[{specName:"min",shaderName:"minValue"},{specName:"max",shaderName:"maxValue"},{specName:"mean",shaderName:"mean",type:"float"},{specName:"median",shaderName:"median"},{specName:"standardDeviation",shaderName:"standardDeviation",type:"float"},{specName:"variance",shaderName:"variance",type:"float"},{specName:"sum",shaderName:"sum"}]};Qi.process=function(e,t,n){let{shaderBuilder:i,model:o}=e,{structuralMetadata:r={},content:s}=o,a=s?.tileset.metadataExtension?.statistics,c=M5e(r.propertyAttributes,t,a),u=L5e(r.propertyTextures,a),f=c.concat(u);F5e(i,f),U5e(i),i.addVertexLines(q1),i.addFragmentLines(Y1);for(let h=0;h<c.length;h++){let A=c[h];G5e(e,A)}for(let h=0;h<u.length;h++){let A=u[h];V5e(e,A)}};function M5e(e,t,n){return l(e)?e.flatMap(i=>N5e(i,t,n)):[]}function N5e(e,t,n){let{getAttributeByName:i,getAttributeInfo:o,sanitizeGlslIdentifier:r}=Ot,s=e.class.id,a=n?.classes[s],c=Object.entries(e.properties),u=new Array(c.length);for(let f=0;f<c.length;f++){let[h,A]=c[f],g=i(t,A.attribute),{glslType:m,variableName:_}=o(g);u[f]={metadataVariable:r(h),property:A,type:A.classProperty.type,glslType:m,variableName:_,propertyStatistics:a?.properties[h],shaderDestination:pe.BOTH}}return u}function L5e(e,t){return l(e)?e.flatMap(n=>O5e(n,t)):[]}function O5e(e,t){let{sanitizeGlslIdentifier:n}=Ot,i=e.class.id,o=t?.classes[i],r=Object.entries(e.properties).filter(([a,c])=>c.isGpuCompatible()),s=new Array(r.length);for(let a=0;a<r.length;a++){let[c,u]=r[a];s[a]={metadataVariable:n(c),property:u,type:u.classProperty.type,glslType:u.getGlslType(),propertyStatistics:o?.properties[c],shaderDestination:pe.FRAGMENT}}return s}function F5e(e,t){let n=new Set,i=new Set;for(let a=0;a<t.length;a++){let{type:c,glslType:u,propertyStatistics:f}=t[a];n.add(u),l(f)&&c!==pt.ENUM&&i.add(u)}let o=Qi.METADATA_CLASS_FIELDS;for(let a of n){let c=`${a}MetadataClass`;s(c,a,o)}let r=Qi.METADATA_STATISTICS_FIELDS;for(let a of i){let c=`${a}MetadataStatistics`;s(c,a,r)}function s(a,c,u){e.addStruct(a,a,pe.BOTH);for(let f=0;f<u.length;f++){let{shaderName:h}=u[f],A=u[f].type==="float"?k5e(c):c;e.addStructField(a,A,h)}}}var Q5e={int:"float",ivec2:"vec2",ivec3:"vec3",ivec4:"vec4"};function k5e(e){let t=Q5e[e];return l(t)?t:e}function U5e(e){e.addStruct(Qi.STRUCT_ID_METADATA_VS,Qi.STRUCT_NAME_METADATA,pe.VERTEX),e.addStruct(Qi.STRUCT_ID_METADATA_FS,Qi.STRUCT_NAME_METADATA,pe.FRAGMENT),e.addStruct(Qi.STRUCT_ID_METADATA_CLASS_VS,Qi.STRUCT_NAME_METADATA_CLASS,pe.VERTEX),e.addStruct(Qi.STRUCT_ID_METADATA_CLASS_FS,Qi.STRUCT_NAME_METADATA_CLASS,pe.FRAGMENT),e.addStruct(Qi.STRUCT_ID_METADATA_STATISTICS_VS,Qi.STRUCT_NAME_METADATA_STATISTICS,pe.VERTEX),e.addStruct(Qi.STRUCT_ID_METADATA_STATISTICS_FS,Qi.STRUCT_NAME_METADATA_STATISTICS,pe.FRAGMENT),e.addFunction(Qi.FUNCTION_ID_INITIALIZE_METADATA_VS,Qi.FUNCTION_SIGNATURE_INITIALIZE_METADATA,pe.VERTEX),e.addFunction(Qi.FUNCTION_ID_INITIALIZE_METADATA_FS,Qi.FUNCTION_SIGNATURE_INITIALIZE_METADATA,pe.FRAGMENT),e.addFunction(Qi.FUNCTION_ID_SET_METADATA_VARYINGS,Qi.FUNCTION_SIGNATURE_SET_METADATA_VARYINGS,pe.VERTEX)}function G5e(e,t){z5e(e,t),uue(e.shaderBuilder,t),fue(e.shaderBuilder,t)}function z5e(e,t){let{shaderBuilder:n}=e,{metadataVariable:i,property:o,glslType:r}=t,s=hue({valueExpression:`attributes.${t.variableName}`,renderResources:e,glslType:r,metadataVariable:i,shaderDestination:pe.BOTH,property:o});n.addStructField(Qi.STRUCT_ID_METADATA_VS,r,i),n.addStructField(Qi.STRUCT_ID_METADATA_FS,r,i);let a=`metadata.${i} = ${s};`;n.addFunctionLines(Qi.FUNCTION_ID_INITIALIZE_METADATA_VS,[a]),n.addFunctionLines(Qi.FUNCTION_ID_INITIALIZE_METADATA_FS,[a])}function V5e(e,t){H5e(e,t),uue(e.shaderBuilder,t),fue(e.shaderBuilder,t)}function H5e(e,t){let{shaderBuilder:n,uniformMap:i}=e,{metadataVariable:o,glslType:r,property:s}=t,{texCoord:a,channels:c,index:u,texture:f,transform:h}=s.textureReader,A=`u_propertyTexture_${u}`;i.hasOwnProperty(A)||(n.addUniform("sampler2D",A,pe.FRAGMENT),i[A]=()=>f),n.addStructField(Qi.STRUCT_ID_METADATA_FS,r,o);let g=`attributes.texCoord_${a}`,m=g;if(l(h)&&!J.equals(h,J.IDENTITY)){let I=`${A}Transform`;n.addUniform("mat3",I,pe.FRAGMENT),i[I]=function(){return h},m=`vec2(${I} * vec3(${g}, 1.0))`}let _=`texture(${A}, ${m}).${c}`,y=s.unpackInShader(_),C=hue({valueExpression:y,renderResources:e,glslType:r,metadataVariable:o,shaderDestination:pe.FRAGMENT,property:s}),E=`metadata.${o} = ${C};`;n.addFunctionLines(Qi.FUNCTION_ID_INITIALIZE_METADATA_FS,[E])}function uue(e,t){let{classProperty:n}=t.property,{metadataVariable:i,glslType:o,shaderDestination:r}=t,s=due(Qi.METADATA_CLASS_FIELDS,n,`metadataClass.${i}`,o),a=`${o}MetadataClass`;e.addStructField(Qi.STRUCT_ID_METADATA_CLASS_FS,a,i),e.addFunctionLines(Qi.FUNCTION_ID_INITIALIZE_METADATA_FS,s),pe.includesVertexShader(r)&&(e.addStructField(Qi.STRUCT_ID_METADATA_CLASS_VS,a,i),e.addFunctionLines(Qi.FUNCTION_ID_INITIALIZE_METADATA_VS,s))}function fue(e,t){let{propertyStatistics:n}=t;if(!l(n))return;let{metadataVariable:i,type:o,glslType:r}=t;if(o===pt.ENUM)return;let s=Qi.METADATA_STATISTICS_FIELDS,a=`metadataStatistics.${i}`,c=due(s,n,a,r),u=`${r}MetadataStatistics`;e.addStructField(Qi.STRUCT_ID_METADATA_STATISTICS_FS,u,i),e.addFunctionLines(Qi.FUNCTION_ID_INITIALIZE_METADATA_FS,c),pe.includesVertexShader(t.shaderDestination)&&(e.addStructField(Qi.STRUCT_ID_METADATA_STATISTICS_VS,u,i),e.addFunctionLines(Qi.FUNCTION_ID_INITIALIZE_METADATA_VS,c))}function due(e,t,n,i){function o(r){let s=t[r.specName];if(l(s))return`${n}.${r.shaderName} = ${i}(${s});`}return l(t)?e.map(o).filter(l):[]}function hue(e){let{valueExpression:t,property:n}=e;if(!n.hasValueTransform)return t;let i=e.metadataVariable,o=`u_${i}_offset`,r=`u_${i}_scale`,{shaderBuilder:s,uniformMap:a}=e.renderResources,{glslType:c,shaderDestination:u}=e;s.addUniform(c,o,u),s.addUniform(c,r,u);let{offset:f,scale:h}=n;return a[o]=()=>f,a[r]=()=>h,`czm_valueTransform(${o}, ${r}, ${t})`}var ld=Qi;var W5e={INHERIT:0,OPAQUE:1,TRANSLUCENT:2},dy=Object.freeze(W5e);var za={name:"CustomShaderPipelineStage",STRUCT_ID_ATTRIBUTES_VS:"AttributesVS",STRUCT_ID_ATTRIBUTES_FS:"AttributesFS",STRUCT_NAME_ATTRIBUTES:"Attributes",STRUCT_ID_VERTEX_INPUT:"VertexInput",STRUCT_NAME_VERTEX_INPUT:"VertexInput",STRUCT_ID_FRAGMENT_INPUT:"FragmentInput",STRUCT_NAME_FRAGMENT_INPUT:"FragmentInput",FUNCTION_ID_INITIALIZE_INPUT_STRUCT_VS:"initializeInputStructVS",FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_VS:"void initializeInputStruct(out VertexInput vsInput, ProcessedAttributes attributes)",FUNCTION_ID_INITIALIZE_INPUT_STRUCT_FS:"initializeInputStructFS",FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_FS:"void initializeInputStruct(out FragmentInput fsInput, ProcessedAttributes attributes)",_oneTimeWarning:yt};za.process=function(e,t,n){let{shaderBuilder:i,model:o,alphaOptions:r}=e,{customShader:s}=o,{lightingModel:a,translucencyMode:c}=s;l(a)&&(e.lightingOptions.lightingModel=a),c===dy.TRANSLUCENT?r.pass=Be.TRANSLUCENT:c===dy.OPAQUE&&(r.pass=void 0);let u=$5e(s,t);if(!u.customShaderEnabled)return;if(i9e(i,s,u),u.shouldComputePositionWC&&i.addDefine("COMPUTE_POSITION_WC_CUSTOM_SHADER",void 0,pe.BOTH),l(s.vertexShaderText)&&i.addDefine("HAS_CUSTOM_VERTEX_SHADER",void 0,pe.VERTEX),l(s.fragmentShaderText)){i.addDefine("HAS_CUSTOM_FRAGMENT_SHADER",void 0,pe.FRAGMENT);let A=Wp.getDefineName(s.mode);i.addDefine(A,void 0,pe.FRAGMENT)}let f=s.uniforms;for(let A in f)if(f.hasOwnProperty(A)){let g=f[A];i.addUniform(g.type,A)}let h=s.varyings;for(let A in h)if(h.hasOwnProperty(A)){let g=h[A];i.addVarying(g,A)}e.uniformMap=Tt(e.uniformMap,s.uniformMap)};function j5e(e){let t={};for(let n=0;n<e.length;n++){let i=Ot.getAttributeInfo(e[n]);t[i.variableName]=i}return t}var Y5e={position:"vec3",normal:"vec3",tangent:"vec3",bitangent:"vec3",texCoord:"vec2",color:"vec4",joints:"ivec4",weights:"vec4"},q5e={position:"vec3(0.0)",normal:"vec3(0.0, 0.0, 1.0)",tangent:"vec3(1.0, 0.0, 0.0)",bitangent:"vec3(0.0, 1.0, 0.0)",texCoord:"vec2(0.0)",color:"vec4(1.0)",joints:"ivec4(0)",weights:"vec4(0.0)"};function mue(e){let t=e.replace(/_[0-9]+$/,"");t=t.replace(/(MC|EC)$/,"");let n=Y5e[t],i=q5e[t];if(l(n))return{attributeField:[n,e],value:i}}function K5e(e,t){if(!l(e.vertexShaderText))return{enabled:!1};let n=e.usedVariablesVertex.attributeSet,i=Aue(t,n,!1),o=pue(t,n,!1),r,s=[],a=[];for(let c in i){if(!i.hasOwnProperty(c))continue;let f=[i[c].glslType,c];s.push(f),r=`vsInput.attributes.${c} = attributes.${c};`,a.push(r)}for(let c=0;c<o.length;c++){let u=o[c],f=mue(u);if(!l(f))return za._oneTimeWarning("CustomShaderPipelineStage.incompatiblePrimitiveVS",`Primitive is missing attribute ${u}, disabling custom vertex shader`),{enabled:!1};s.push(f.attributeField),r=`vsInput.attributes.${u} = ${f.value};`,a.push(r)}return{enabled:!0,attributeFields:s,initializationLines:a}}function X5e(e){let t=[],n=[],i=e.usedVariablesFragment.attributeSet;return i.hasOwnProperty("positionWC")&&(t.push(["vec3","positionWC"]),n.push("fsInput.attributes.positionWC = attributes.positionWC;")),i.hasOwnProperty("positionEC")&&(t.push(["vec3","positionEC"]),n.push("fsInput.attributes.positionEC = attributes.positionEC;")),{attributeFields:t,initializationLines:n}}function J5e(e,t){if(!l(e.fragmentShaderText))return{enabled:!1};let n=e.usedVariablesFragment.attributeSet,i=Aue(t,n,!0),o=pue(t,n,!0),r,s=[],a=[];for(let u in i){if(!i.hasOwnProperty(u))continue;let h=[i[u].glslType,u];s.push(h),r=`fsInput.attributes.${u} = attributes.${u};`,a.push(r)}for(let u=0;u<o.length;u++){let f=o[u],h=mue(f);if(!l(h))return za._oneTimeWarning("CustomShaderPipelineStage.incompatiblePrimitiveFS",`Primitive is missing attribute ${f}, disabling custom fragment shader.`),{enabled:!1};s.push(h.attributeField),r=`fsInput.attributes.${f} = ${h.value};`,a.push(r)}let c=X5e(e);return{enabled:!0,attributeFields:s.concat(c.attributeFields),initializationLines:c.initializationLines.concat(a)}}var Z5e={positionWC:!0,positionEC:!0};function Aue(e,t,n){let i={};for(let o in e){if(!e.hasOwnProperty(o))continue;let r=e[o],s=o;n&&o==="normalMC"?s="normalEC":n&&o==="tangentMC"&&(s="tangentEC",r.glslType="vec3"),t.hasOwnProperty(s)&&(i[s]=r)}return i}function pue(e,t,n){let i=[];for(let o in t){if(!t.hasOwnProperty(o)||Z5e.hasOwnProperty(o))continue;let r=o;n&&o==="normalEC"?r="normalMC":n&&o==="tangentEC"&&(r="tangentMC"),e.hasOwnProperty(r)||i.push(o)}return i}function $5e(e,t){let n=j5e(t.attributes),i=K5e(e,n),o=J5e(e,n),s=e.usedVariablesFragment.attributeSet.hasOwnProperty("positionWC")&&o.enabled;return{vertexLines:i,fragmentLines:o,customShaderEnabled:i.enabled||o.enabled,shouldComputePositionWC:s}}function e9e(e,t){let n=za.STRUCT_ID_ATTRIBUTES_VS;e.addStruct(n,za.STRUCT_NAME_ATTRIBUTES,pe.VERTEX);let{attributeFields:i,initializationLines:o}=t;for(let s=0;s<i.length;s++){let[a,c]=i[s];e.addStructField(n,a,c)}n=za.STRUCT_ID_VERTEX_INPUT,e.addStruct(n,za.STRUCT_NAME_VERTEX_INPUT,pe.VERTEX),e.addStructField(n,za.STRUCT_NAME_ATTRIBUTES,"attributes"),e.addStructField(n,fy.STRUCT_NAME_FEATURE_IDS,"featureIds"),e.addStructField(n,ld.STRUCT_NAME_METADATA,"metadata"),e.addStructField(n,ld.STRUCT_NAME_METADATA_CLASS,"metadataClass"),e.addStructField(n,ld.STRUCT_NAME_METADATA_STATISTICS,"metadataStatistics");let r=za.FUNCTION_ID_INITIALIZE_INPUT_STRUCT_VS;e.addFunction(r,za.FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_VS,pe.VERTEX),e.addFunctionLines(r,o)}function t9e(e,t){let n=za.STRUCT_ID_ATTRIBUTES_FS;e.addStruct(n,za.STRUCT_NAME_ATTRIBUTES,pe.FRAGMENT);let{attributeFields:i,initializationLines:o}=t;for(let s=0;s<i.length;s++){let[a,c]=i[s];e.addStructField(n,a,c)}n=za.STRUCT_ID_FRAGMENT_INPUT,e.addStruct(n,za.STRUCT_NAME_FRAGMENT_INPUT,pe.FRAGMENT),e.addStructField(n,za.STRUCT_NAME_ATTRIBUTES,"attributes"),e.addStructField(n,fy.STRUCT_NAME_FEATURE_IDS,"featureIds"),e.addStructField(n,ld.STRUCT_NAME_METADATA,"metadata"),e.addStructField(n,ld.STRUCT_NAME_METADATA_CLASS,"metadataClass"),e.addStructField(n,ld.STRUCT_NAME_METADATA_STATISTICS,"metadataStatistics");let r=za.FUNCTION_ID_INITIALIZE_INPUT_STRUCT_FS;e.addFunction(r,za.FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_FS,pe.FRAGMENT),e.addFunctionLines(r,o)}var n9e=[];function i9e(e,t,n){let{vertexLines:i,fragmentLines:o}=n,r=n9e;i.enabled&&(e9e(e,i),r.length=0,r.push("#line 0",t.vertexShaderText,V1),e.addVertexLines(r)),o.enabled&&(t9e(e,o),r.length=0,r.push("#line 0",t.fragmentShaderText,H1),e.addFragmentLines(r))}var K1=za;var X1={name:"DequantizationPipelineStage",FUNCTION_ID_DEQUANTIZATION_STAGE_VS:"dequantizationStage",FUNCTION_SIGNATURE_DEQUANTIZATION_STAGE_VS:"void dequantizationStage(inout ProcessedAttributes attributes)"};X1.process=function(e,t,n){let i=e.shaderBuilder,o=e.model,r=l(o.classificationType);i.addDefine("USE_DEQUANTIZATION",void 0,pe.VERTEX),i.addFunction(X1.FUNCTION_ID_DEQUANTIZATION_STAGE_VS,X1.FUNCTION_SIGNATURE_DEQUANTIZATION_STAGE_VS,pe.VERTEX);let s=t.attributes;for(let a=0;a<s.length;a++){let c=s[a],u=c.quantization;if(!l(u))continue;let f=c.semantic===at.POSITION,h=c.semantic===at.TEXCOORD;if(r&&!f&&!h)continue;let A=Ot.getAttributeInfo(c);r9e(i,A),o9e(e,A)}};function o9e(e,t){let n=e.shaderBuilder,i=e.uniformMap,o=t.variableName,r=t.attribute.quantization;if(r.octEncoded){let s=`model_normalizationRange_${o}`;n.addUniform("float",s,pe.VERTEX),i[s]=function(){return r.normalizationRange}}else{let s=`model_quantizedVolumeOffset_${o}`,a=`model_quantizedVolumeStepSize_${o}`,c=t.glslType;n.addUniform(c,s,pe.VERTEX),n.addUniform(c,a,pe.VERTEX);let u=r.quantizedVolumeOffset,f=r.quantizedVolumeStepSize;/^color_\d+$/.test(o)&&(u=gue(u,0),f=gue(f,1)),i[s]=function(){return u},i[a]=function(){return f}}}function gue(e,t){return e instanceof se?e:new se(e.x,e.y,e.z,t)}function r9e(e,t){let n=t.variableName,i=t.attribute.quantization,o;i.octEncoded?o=s9e(n,i):o=a9e(n),e.addFunctionLines(X1.FUNCTION_ID_DEQUANTIZATION_STAGE_VS,[o])}function s9e(e,t){let n=`attributes.${e}`,i=`a_quantized_${e}`,o=`model_normalizationRange_${e}`,r=t.octEncodedZXY?".zxy":".xyz";return`${n} = czm_octDecode(${i}, ${o})${r};`}function a9e(e){let t=`attributes.${e}`,n=`a_quantized_${e}`,i=`model_quantizedVolumeOffset_${e}`,o=`model_quantizedVolumeStepSize_${e}`;return`${t} = ${i} + ${n} * ${o};`}var J1=X1;var Z1=`void geometryStage(out ProcessedAttributes attributes) +{ + attributes.positionMC = v_positionMC; + attributes.positionEC = v_positionEC; + + #if defined(COMPUTE_POSITION_WC_CUSTOM_SHADER) || defined(COMPUTE_POSITION_WC_STYLE) || defined(COMPUTE_POSITION_WC_ATMOSPHERE) + attributes.positionWC = v_positionWC; + #endif + + #ifdef HAS_NORMALS + // renormalize after interpolation + attributes.normalEC = normalize(v_normalEC); + #endif + + #ifdef HAS_TANGENTS + attributes.tangentEC = normalize(v_tangentEC); + #endif + + #ifdef HAS_BITANGENTS + attributes.bitangentEC = normalize(v_bitangentEC); + #endif + + // Everything else is dynamically generated in GeometryPipelineStage + setDynamicVaryings(attributes); +} +`;var $1=`vec4 geometryStage(inout ProcessedAttributes attributes, mat4 modelView, mat3 normal) +{ + vec4 computedPosition; + + // Compute positions in different coordinate systems + vec3 positionMC = attributes.positionMC; + v_positionMC = positionMC; + v_positionEC = (modelView * vec4(positionMC, 1.0)).xyz; + + #if defined(USE_2D_POSITIONS) || defined(USE_2D_INSTANCING) + vec3 position2D = attributes.position2D; + vec3 positionEC = (u_modelView2D * vec4(position2D, 1.0)).xyz; + computedPosition = czm_projection * vec4(positionEC, 1.0); + #else + computedPosition = czm_projection * vec4(v_positionEC, 1.0); + #endif + + // Sometimes the custom shader and/or style needs this + #if defined(COMPUTE_POSITION_WC_CUSTOM_SHADER) || defined(COMPUTE_POSITION_WC_STYLE) || defined(COMPUTE_POSITION_WC_ATMOSPHERE) || defined(ENABLE_CLIPPING_POLYGONS) + // Note that this is a 32-bit position which may result in jitter on small + // scales. + v_positionWC = (czm_model * vec4(positionMC, 1.0)).xyz; + #endif + + #ifdef HAS_NORMALS + v_normalEC = normalize(normal * attributes.normalMC); + #endif + + #ifdef HAS_TANGENTS + v_tangentEC = normalize(normal * attributes.tangentMC); + #endif + + #ifdef HAS_BITANGENTS + v_bitangentEC = normalize(normal * attributes.bitangentMC); + #endif + + // All other varyings need to be dynamically generated in + // GeometryPipelineStage + setDynamicVaryings(attributes); + + return computedPosition; +} +`;var tT=`vec2 computeSt(float featureId) +{ + float stepX = model_textureStep.x; + float centerX = model_textureStep.y; + + #ifdef MULTILINE_BATCH_TEXTURE + float stepY = model_textureStep.z; + float centerY = model_textureStep.w; + + float xId = mod(featureId, model_textureDimensions.x); + float yId = floor(featureId / model_textureDimensions.x); + + return vec2(centerX + (xId * stepX), centerY + (yId * stepY)); + #else + return vec2(centerX + (featureId * stepX), 0.5); + #endif +} + +void selectedFeatureIdStage(out SelectedFeature feature, FeatureIds featureIds) +{ + int featureId = featureIds.SELECTED_FEATURE_ID; + + + if (featureId < model_featuresLength) + { + vec2 featureSt = computeSt(float(featureId)); + + feature.id = featureId; + feature.st = featureSt; + feature.color = texture(model_batchTexture, featureSt); + } + // Floating point comparisons can be unreliable in GLSL, so we + // increment the feature ID to make sure it's always greater + // then the model_featuresLength - a condition we check for in the + // pick ID, to avoid sampling the pick texture if the feature ID is + // greater than the number of features. + else + { + feature.id = model_featuresLength + 1; + feature.st = vec2(0.0); + feature.color = vec4(1.0); + } + + #ifdef HAS_NULL_FEATURE_ID + if (featureId == model_nullFeatureId) { + feature.id = featureId; + feature.st = vec2(0.0); + feature.color = vec4(1.0); + } + #endif +} +`;var eN={name:"SelectedFeatureIdPipelineStage",STRUCT_ID_SELECTED_FEATURE:"SelectedFeature",STRUCT_NAME_SELECTED_FEATURE:"SelectedFeature"};eN.process=function(e,t,n){let i=e.shaderBuilder;e.hasPropertyTable=!0;let o=e.model,r=e.runtimeNode.node,s=c9e(o,r,t),a=s.shaderDestination;i.addDefine("HAS_SELECTED_FEATURE_ID",void 0,a),i.addDefine("SELECTED_FEATURE_ID",s.variableName,a),i.addDefine(s.featureIdDefine,void 0,a),l9e(i);let c=s.featureIds.nullFeatureId,u=e.uniformMap;l(c)&&(i.addDefine("HAS_NULL_FEATURE_ID",void 0,a),i.addUniform("int","model_nullFeatureId",a),u.model_nullFeatureId=function(){return c}),s.shaderDestination===pe.BOTH&&i.addVertexLines(tT),i.addFragmentLines(tT)};function _ue(e){return e instanceof xn.FeatureIdTexture?"HAS_SELECTED_FEATURE_ID_TEXTURE":"HAS_SELECTED_FEATURE_ID_ATTRIBUTE"}function yue(e){return e instanceof xn.FeatureIdTexture?pe.FRAGMENT:pe.BOTH}function c9e(e,t,n){let i,o;return l(t.instances)&&(o=Ot.getFeatureIdsByLabel(t.instances.featureIds,e.instanceFeatureIdLabel),l(o))?(i=o.label??o.positionalLabel,{featureIds:o,variableName:i,shaderDestination:yue(o),featureIdDefine:_ue(o)}):(o=Ot.getFeatureIdsByLabel(n.featureIds,e.featureIdLabel),i=o.label??o.positionalLabel,{featureIds:o,variableName:i,shaderDestination:yue(o),featureIdDefine:_ue(o)})}function l9e(e){e.addStructField(eN.STRUCT_ID_SELECTED_FEATURE,"int","id"),e.addStructField(eN.STRUCT_ID_SELECTED_FEATURE,"vec2","st"),e.addStructField(eN.STRUCT_ID_SELECTED_FEATURE,"vec4","color")}var hy=eN;var pa={name:"GeometryPipelineStage",STRUCT_ID_PROCESSED_ATTRIBUTES_VS:"ProcessedAttributesVS",STRUCT_ID_PROCESSED_ATTRIBUTES_FS:"ProcessedAttributesFS",STRUCT_NAME_PROCESSED_ATTRIBUTES:"ProcessedAttributes",FUNCTION_ID_INITIALIZE_ATTRIBUTES:"initializeAttributes",FUNCTION_SIGNATURE_INITIALIZE_ATTRIBUTES:"void initializeAttributes(out ProcessedAttributes attributes)",FUNCTION_ID_SET_DYNAMIC_VARYINGS_VS:"setDynamicVaryingsVS",FUNCTION_ID_SET_DYNAMIC_VARYINGS_FS:"setDynamicVaryingsFS",FUNCTION_SIGNATURE_SET_DYNAMIC_VARYINGS:"void setDynamicVaryings(inout ProcessedAttributes attributes)"};pa.process=function(e,t,n){let{shaderBuilder:i,model:o}=e;i.addStruct(pa.STRUCT_ID_PROCESSED_ATTRIBUTES_VS,"ProcessedAttributes",pe.VERTEX),i.addStruct(pa.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"ProcessedAttributes",pe.FRAGMENT),i.addStruct(hy.STRUCT_ID_SELECTED_FEATURE,hy.STRUCT_NAME_SELECTED_FEATURE,pe.BOTH),i.addFunction(pa.FUNCTION_ID_INITIALIZE_ATTRIBUTES,pa.FUNCTION_SIGNATURE_INITIALIZE_ATTRIBUTES,pe.VERTEX),i.addVarying("vec3","v_positionWC"),i.addVarying("vec3","v_positionEC"),i.addStructField(pa.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"vec3","positionWC"),i.addStructField(pa.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"vec3","positionEC"),i.addFunction(pa.FUNCTION_ID_SET_DYNAMIC_VARYINGS_VS,pa.FUNCTION_SIGNATURE_SET_DYNAMIC_VARYINGS,pe.VERTEX),i.addFunction(pa.FUNCTION_ID_SET_DYNAMIC_VARYINGS_FS,pa.FUNCTION_SIGNATURE_SET_DYNAMIC_VARYINGS,pe.FRAGMENT),o.type===wr.TILE_PNTS&&i.addDefine("HAS_SRGB_COLOR",void 0,pe.FRAGMENT);let r=n.mode!==ie.SCENE3D&&!n.scene3DOnly&&o._projectTo2D,s=l(e.runtimeNode.node.instances),a=r&&!s,c=t.attributes.length;for(let u=0;u<c;u++){let f=t.attributes[u],h=zt.getAttributeLocationCount(f.type),A=f.semantic===at.POSITION,g;h>1?(g=e.attributeIndex,e.attributeIndex+=h):A&&!a?g=0:g=e.attributeIndex++,u9e(e,f,g,h,r,s)}y9e(i,t.attributes),t.primitiveType===Me.POINTS&&i.addDefine("PRIMITIVE_TYPE_POINTS"),i.addVertexLines($1),i.addFragmentLines(Z1)};function u9e(e,t,n,i,o,r){let s=e.shaderBuilder,a=Ot.getAttributeInfo(t),c=o&&!r;i>1?h9e(e,t,n,i):d9e(e,t,n,c),A9e(s,a,c),m9e(s,a),l(t.semantic)&&f9e(s,t),p9e(s,a,o),g9e(s,a,c),_9e(s,a)}function f9e(e,t){let{semantic:n,setIndex:i}=t;switch(n){case at.NORMAL:e.addDefine("HAS_NORMALS");break;case at.TANGENT:e.addDefine("HAS_TANGENTS");break;case at.FEATURE_ID:e.addDefine(`HAS${n}_${i}`);break;case at.TEXCOORD:case at.COLOR:e.addDefine(`HAS_${n}_${i}`)}}function d9e(e,t,n,i){let{quantization:o,semantic:r,setIndex:s}=t,{type:a,componentDatatype:c}=l(o)?o:t;r===at.FEATURE_ID&&s>=e.featureIdVertexAttributeSetIndex&&(e.featureIdVertexAttributeSetIndex=s+1);let u=r===at.POSITION,f=u?0:n,h=zt.getNumberOfComponents(a),A={index:f,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,count:t.count,componentsPerAttribute:h,componentDatatype:c,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};if(e.attributes.push(A),!u||!i)return;let g=e.runtimePrimitive.positionBuffer2D,m={index:n,vertexBuffer:g,count:t.count,componentsPerAttribute:h,componentDatatype:q.FLOAT,offsetInBytes:0,strideInBytes:void 0,normalize:t.normalized};e.attributes.push(m)}function h9e(e,t,n,i){let{quantization:o,normalized:r}=t,{type:s,componentDatatype:a}=l(o)?o:t,u=zt.getNumberOfComponents(s)/i,f=q.getSizeInBytes(a),h=u*f,A=t.byteStride;for(let g=0;g<i;g++){let m=t.byteOffset+g*h,_={index:n+g,vertexBuffer:t.buffer,componentsPerAttribute:u,componentDatatype:a,offsetInBytes:m,strideInBytes:A,normalize:r};e.attributes.push(_)}}function m9e(e,t){let n=t.variableName,i=`v_${n}`,o;n==="normalMC"?(i="v_normalEC",o=t.glslType):n==="tangentMC"?(o="vec3",i="v_tangentEC"):o=t.glslType,e.addVarying(o,i)}function A9e(e,t,n){let i=t.attribute.semantic,o=t.variableName,r,s;t.isQuantized?(r=`a_quantized_${o}`,s=t.quantizedGlslType):(r=`a_${o}`,s=t.glslType);let a=i===at.POSITION;a?e.setPositionAttribute(s,r):e.addAttribute(s,r),a&&n&&e.addAttribute("vec3","a_position2D")}function p9e(e,t,n){let i=pa.STRUCT_ID_PROCESSED_ATTRIBUTES_VS,o=pa.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,{variableName:r,glslType:s}=t;r==="tangentMC"?(e.addStructField(i,"vec3","tangentMC"),e.addStructField(i,"float","tangentSignMC"),e.addStructField(o,"vec3","tangentEC")):r==="normalMC"?(e.addStructField(i,"vec3","normalMC"),e.addStructField(o,"vec3","normalEC")):(e.addStructField(i,s,r),e.addStructField(o,s,r)),r==="positionMC"&&n&&e.addStructField(i,"vec3","position2D")}function g9e(e,t,n){let i=pa.FUNCTION_ID_INITIALIZE_ATTRIBUTES,o=t.variableName;if(o==="positionMC"&&n&&e.addFunctionLines(i,["attributes.position2D = a_position2D;"]),t.isQuantized)return;let s=[];o==="tangentMC"?(s.push("attributes.tangentMC = a_tangentMC.xyz;"),s.push("attributes.tangentSignMC = a_tangentMC.w;")):s.push(`attributes.${o} = a_${o};`),e.addFunctionLines(i,s)}function _9e(e,t){let{semantic:n,setIndex:i}=t.attribute;if(l(n)&&!l(i))return;let o=pa.FUNCTION_ID_SET_DYNAMIC_VARYINGS_VS,r=t.variableName,s=`v_${r} = attributes.${r};`;e.addFunctionLines(o,[s]),o=pa.FUNCTION_ID_SET_DYNAMIC_VARYINGS_FS,s=`attributes.${r} = v_${r};`,e.addFunctionLines(o,[s])}function y9e(e,t){let n=!1,i=!1;for(let o=0;o<t.length;o++){let r=t[o];r.semantic===at.NORMAL?n=!0:r.semantic===at.TANGENT&&(i=!0)}!n||!i||(e.addDefine("HAS_BITANGENTS"),e.addVarying("vec3","v_bitangentEC"),e.addStructField(pa.STRUCT_ID_PROCESSED_ATTRIBUTES_VS,"vec3","bitangentMC"),e.addStructField(pa.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"vec3","bitangentEC"))}var tN=pa;function my(e){if(e=e??V.EMPTY_OBJECT,this._ellipsoid=e.ellipsoid??te.default,this._numberOfLevelZeroTilesX=e.numberOfLevelZeroTilesX??1,this._numberOfLevelZeroTilesY=e.numberOfLevelZeroTilesY??1,this._projection=new zi(this._ellipsoid),l(e.rectangleSouthwestInMeters)&&l(e.rectangleNortheastInMeters))this._rectangleSouthwestInMeters=e.rectangleSouthwestInMeters,this._rectangleNortheastInMeters=e.rectangleNortheastInMeters;else{let i=this._ellipsoid.maximumRadius*Math.PI;this._rectangleSouthwestInMeters=new U(-i,-i),this._rectangleNortheastInMeters=new U(i,i)}let t=this._projection.unproject(this._rectangleSouthwestInMeters),n=this._projection.unproject(this._rectangleNortheastInMeters);this._rectangle=new ae(t.longitude,t.latitude,n.longitude,n.latitude)}Object.defineProperties(my.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}});my.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<<e};my.prototype.getNumberOfYTilesAtLevel=function(e){return this._numberOfLevelZeroTilesY<<e};my.prototype.rectangleToNativeRectangle=function(e,t){let n=this._projection,i=n.project(ae.southwest(e)),o=n.project(ae.northeast(e));return l(t)?(t.west=i.x,t.south=i.y,t.east=o.x,t.north=o.y,t):new ae(i.x,i.y,o.x,o.y)};my.prototype.tileXYToNativeRectangle=function(e,t,n,i){let o=this.getNumberOfXTilesAtLevel(n),r=this.getNumberOfYTilesAtLevel(n),s=(this._rectangleNortheastInMeters.x-this._rectangleSouthwestInMeters.x)/o,a=this._rectangleSouthwestInMeters.x+e*s,c=this._rectangleSouthwestInMeters.x+(e+1)*s,u=(this._rectangleNortheastInMeters.y-this._rectangleSouthwestInMeters.y)/r,f=this._rectangleNortheastInMeters.y-t*u,h=this._rectangleNortheastInMeters.y-(t+1)*u;return l(i)?(i.west=a,i.south=h,i.east=c,i.north=f,i):new ae(a,h,c,f)};my.prototype.tileXYToRectangle=function(e,t,n,i){let o=this.tileXYToNativeRectangle(e,t,n,i),r=this._projection,s=r.unproject(new U(o.west,o.south)),a=r.unproject(new U(o.east,o.north));return o.west=s.longitude,o.south=s.latitude,o.east=a.longitude,o.north=a.latitude,o};my.prototype.positionToTileXY=function(e,t,n){let i=this._rectangle;if(!ae.contains(i,e))return;let o=this.getNumberOfXTilesAtLevel(t),r=this.getNumberOfYTilesAtLevel(t),a=(this._rectangleNortheastInMeters.x-this._rectangleSouthwestInMeters.x)/o,u=(this._rectangleNortheastInMeters.y-this._rectangleSouthwestInMeters.y)/r,h=this._projection.project(e),A=h.x-this._rectangleSouthwestInMeters.x,g=this._rectangleNortheastInMeters.y-h.y,m=A/a|0;m>=o&&(m=o-1);let _=g/u|0;return _>=r&&(_=r-1),l(n)?(n.x=m,n.y=_,n):new U(m,_)};var Ts=my;var Nj,Cue="AAPTxy8BH1VEsoebNVZXo8HurEOF051kAEKlhkOhBEc9BmRpOZfBt2Ic5blmnx9xwwyG_Mt0EmBxpEa6xCqXn5V_qFEgJ0edE9ixiefKjMiv986NGSn2HB8y6x0GtSOCBkg19K6rBgZ7Upl7ABEnaFh4dD73GW0gUAJ9hHWhqd1qgHkBuctWiFEJUmQjs_52tdx6l5bDGoeXVvmelklmEJOshCRV_s3kLPC19ENRNLc18eA.AT1_EXUMUBsi",nT={};nT.defaultAccessToken=Cue;nT.defaultWorldImageryServer=new we({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/World_Imagery/MapServer"});nT.defaultWorldHillshadeServer=new we({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"});nT.defaultWorldOceanServer=new we({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer"});nT.getDefaultTokenCredit=function(e){if(e===Cue){if(!l(Nj)){let t='<b> This application is using a default ArcGIS access token. Please assign <i>Cesium.ArcGisMapService.defaultAccessToken</i> with an API key from your ArcGIS Developer account before using the ArcGIS tile services. You can sign up for a free ArcGIS Developer account at <a href="https://developers.arcgis.com/">https://developers.arcgis.com/</a>.</b>';Nj=new Bt(t,!0)}return Nj}};var Zu=nT;function Lj(e){e=e??V.EMPTY_OBJECT,this._pixelsToCheck=e.pixelsToCheck,this._missingImagePixels=void 0,this._missingImageByteLength=void 0,this._isReady=!1;let t=we.createIfNeeded(e.missingImageUrl),n=this;function i(r){l(r.blob)&&(n._missingImageByteLength=r.blob.size);let s=oh(r);if(e.disableCheckIfAllPixelsAreTransparent){let a=!0,c=r.width,u=e.pixelsToCheck;for(let f=0,h=u.length;a&&f<h;++f){let A=u[f],g=A.x*4+A.y*c;s[g+3]>0&&(a=!1)}a&&(s=void 0)}n._missingImagePixels=s,n._isReady=!0}function o(){n._missingImagePixels=void 0,n._isReady=!0}t.fetchImage({preferBlob:!0,preferImageBitmap:!0,flipY:!0}).then(i).catch(o)}Lj.prototype.isReady=function(){return this._isReady};Lj.prototype.shouldDiscardImage=function(e){let t=this._pixelsToCheck,n=this._missingImagePixels;if(!l(n)||l(e.blob)&&e.blob.size!==this._missingImageByteLength)return!1;let i=oh(e),o=e.width;for(let r=0,s=t.length;r<s;++r){let a=t[r],c=a.x*4+a.y*o;for(let u=0;u<4;++u){let f=c+u;if(i[f]!==n[f])return!1}}return!0};var nN=Lj;function Oj(){this.name=void 0,this.description=void 0,this.position=void 0,this.data=void 0,this.imageryLayer=void 0}Oj.prototype.configureNameFromProperties=function(e){let t=10,n;for(let i in e)if(e.hasOwnProperty(i)&&e[i]){let o=i.toLowerCase();t>1&&o==="name"?(t=1,n=i):t>2&&o==="title"?(t=2,n=i):t>3&&/name/i.test(i)?(t=3,n=i):t>4&&/title/i.test(i)&&(t=4,n=i)}l(n)&&(this.name=e[n])};Oj.prototype.configureDescriptionFromProperties=function(e){function t(n){let i='<table class="cesium-infoBox-defaultTable">';for(let o in n)if(n.hasOwnProperty(o)){let r=n[o];l(r)&&(typeof r=="object"?i+=`<tr><td>${o}</td><td>${t(r)}</td></tr>`:i+=`<tr><td>${o}</td><td>${r}</td></tr>`)}return i+="</table>",i}this.description=t(e)};var Nh=Oj;function iT(){me.throwInstantiationError()}Object.defineProperties(iT.prototype,{rectangle:{get:me.throwInstantiationError},tileWidth:{get:me.throwInstantiationError},tileHeight:{get:me.throwInstantiationError},maximumLevel:{get:me.throwInstantiationError},minimumLevel:{get:me.throwInstantiationError},tilingScheme:{get:me.throwInstantiationError},tileDiscardPolicy:{get:me.throwInstantiationError},errorEvent:{get:me.throwInstantiationError},credit:{get:me.throwInstantiationError},proxy:{get:me.throwInstantiationError},hasAlphaChannel:{get:me.throwInstantiationError}});iT.prototype.getTileCredits=function(e,t,n){me.throwInstantiationError()};iT.prototype.requestImage=function(e,t,n,i){me.throwInstantiationError()};iT.prototype.pickFeatures=function(e,t,n,i,o){me.throwInstantiationError()};var C9e=/\.ktx2$/i;iT.loadImage=function(e,t){let n=we.createIfNeeded(t);return C9e.test(n.url)?$l(n):l(e)&&l(e.tileDiscardPolicy)?n.fetchImage({preferBlob:!0,preferImageBitmap:!0,flipY:!0}):n.fetchImage({preferImageBitmap:!0,flipY:!0})};var Dl=iT;var E9e={SATELLITE:1,OCEANS:2,HILLSHADE:3},Lh=Object.freeze(E9e);function Eue(e){this.useTiles=e.usePreCachedTilesIfAvailable??!0;let t=e.ellipsoid;this.tilingScheme=e.tilingScheme??new so({ellipsoid:t}),this.rectangle=e.rectangle??this.tilingScheme.rectangle,this.ellipsoid=t;let n=e.credit;typeof n=="string"&&(n=new Bt(n)),this.credit=n,this.tileCredits=void 0,this.tileDiscardPolicy=e.tileDiscardPolicy,this.tileWidth=e.tileWidth??256,this.tileHeight=e.tileHeight??256,this.maximumLevel=e.maximumLevel}Eue.prototype.build=function(e){e._useTiles=this.useTiles,e._tilingScheme=this.tilingScheme,e._rectangle=this.rectangle,e._credit=this.credit,e._tileCredits=this.tileCredits,e._tileDiscardPolicy=this.tileDiscardPolicy,e._tileWidth=this.tileWidth,e._tileHeight=this.tileHeight,e._maximumLevel=this.maximumLevel,this.useTiles&&!l(this.tileDiscardPolicy)&&(e._tileDiscardPolicy=new nN({missingImageUrl:Iue(e,0,0,this.maximumLevel).url,pixelsToCheck:[new U(0,0),new U(200,20),new U(20,200),new U(80,110),new U(160,130)],disableCheckIfAllPixelsAreTransparent:!0}))};function I9e(e,t){let n=e.tileInfo;if(!l(n))t.useTiles=!1;else{if(t.tileWidth=n.rows,t.tileHeight=n.cols,n.spatialReference.wkid===102100||n.spatialReference.wkid===102113)t.tilingScheme=new Ts({ellipsoid:t.ellipsoid});else if(e.tileInfo.spatialReference.wkid===4326)t.tilingScheme=new so({ellipsoid:t.ellipsoid});else{let i=`Tile spatial reference WKID ${e.tileInfo.spatialReference.wkid} is not supported.`;throw new ce(i)}if(t.maximumLevel=e.tileInfo.lods.length-1,l(e.fullExtent)){if(l(e.fullExtent.spatialReference)&&l(e.fullExtent.spatialReference.wkid))if(e.fullExtent.spatialReference.wkid===102100||e.fullExtent.spatialReference.wkid===102113){let i=new zi,o=e.fullExtent,r=i.unproject(new d(Math.max(o.xmin,-t.tilingScheme.ellipsoid.maximumRadius*Math.PI),Math.max(o.ymin,-t.tilingScheme.ellipsoid.maximumRadius*Math.PI),0)),s=i.unproject(new d(Math.min(o.xmax,t.tilingScheme.ellipsoid.maximumRadius*Math.PI),Math.min(o.ymax,t.tilingScheme.ellipsoid.maximumRadius*Math.PI),0));t.rectangle=new ae(r.longitude,r.latitude,s.longitude,s.latitude)}else if(e.fullExtent.spatialReference.wkid===4326)t.rectangle=ae.fromDegrees(e.fullExtent.xmin,e.fullExtent.ymin,e.fullExtent.xmax,e.fullExtent.ymax);else{let i=`fullExtent.spatialReference WKID ${e.fullExtent.spatialReference.wkid} is not supported.`;throw new ce(i)}}else t.rectangle=t.tilingScheme.rectangle;t.useTiles=!0}l(e.copyrightText)&&e.copyrightText.length>0&&(l(t.credit)?t.tileCredits=[new Bt(e.copyrightText)]:t.credit=new Bt(e.copyrightText))}function x9e(e,t){let n=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(n+=`: ${t.message}`),new ce(n)}async function b9e(e,t){let n=e.getDerivedResource({queryParameters:{f:"json"}});try{let i=await n.fetchJson();I9e(i,t)}catch(i){x9e(e,i)}}function $m(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._maximumLevel=e.maximumLevel,this._tilingScheme=e.tilingScheme??new so({ellipsoid:e.ellipsoid}),this._useTiles=e.usePreCachedTilesIfAvailable??!0,this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._layers=e.layers,this._credit=e.credit,this._tileCredits=void 0;let t=e.credit;typeof t=="string"&&(t=new Bt(t)),this.enablePickFeatures=e.enablePickFeatures??!0,this._errorEvent=new _e}$m.fromBasemapType=async function(e,t){t=t??V.EMPTY_OBJECT;let n,i,o;switch(e){case Lh.SATELLITE:{n=t.token??Zu.defaultAccessToken,i=we.createIfNeeded(Zu.defaultWorldImageryServer),i.appendForwardSlash();let r=Zu.getDefaultTokenCredit(n);l(r)&&(o=Bt.clone(r))}break;case Lh.OCEANS:{n=t.token??Zu.defaultAccessToken,i=we.createIfNeeded(Zu.defaultWorldOceanServer),i.appendForwardSlash();let r=Zu.getDefaultTokenCredit(n);l(r)&&(o=Bt.clone(r))}break;case Lh.HILLSHADE:{n=t.token??Zu.defaultAccessToken,i=we.createIfNeeded(Zu.defaultWorldHillshadeServer),i.appendForwardSlash();let r=Zu.getDefaultTokenCredit(n);l(r)&&(o=Bt.clone(r))}break;default:}return $m.fromUrl(i,{...t,token:n,credit:o,usePreCachedTilesIfAvailable:!0})};function Iue(e,t,n,i,o){let r;if(e._useTiles)r=e._resource.getDerivedResource({url:`tile/${i}/${n}/${t}`,request:o});else{let s=e._tilingScheme.tileXYToNativeRectangle(t,n,i),c={bbox:`${s.west},${s.south},${s.east},${s.north}`,size:`${e._tileWidth},${e._tileHeight}`,format:"png32",transparent:!0,f:"image"};e._tilingScheme.projection instanceof Ui?(c.bboxSR=4326,c.imageSR=4326):(c.bboxSR=3857,c.imageSR=3857),e.layers&&(c.layers=`show:${e.layers}`),r=e._resource.getDerivedResource({url:"export",request:o,queryParameters:c})}return r}Object.defineProperties($m.prototype,{url:{get:function(){return this._resource._url}},token:{get:function(){return this._resource.queryParameters.token}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},usingPrecachedTiles:{get:function(){return this._useTiles}},hasAlphaChannel:{get:function(){return!0}},layers:{get:function(){return this._layers}}});$m.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=we.createIfNeeded(e);n.appendForwardSlash(),l(t.token)&&n.setQueryParameters({token:t.token});let i=new $m(t);i._resource=n;let o=new Eue(t);return(t.usePreCachedTilesIfAvailable??!0)&&await b9e(n,o),o.build(i),i};$m.prototype.getTileCredits=function(e,t,n){return this._tileCredits};$m.prototype.requestImage=function(e,t,n,i){return Dl.loadImage(this,Iue(this,e,t,n,i))};$m.prototype.pickFeatures=function(e,t,n,i,o){if(!this.enablePickFeatures)return;let r=this._tilingScheme.tileXYToNativeRectangle(e,t,n),s,a,c;if(this._tilingScheme.projection instanceof Ui)s=D.toDegrees(i),a=D.toDegrees(o),c="4326";else{let A=this._tilingScheme.projection.project(new Ae(i,o,0));s=A.x,a=A.y,c="3857"}let u="visible";l(this._layers)&&(u+=`:${this._layers}`);let f={f:"json",tolerance:2,geometryType:"esriGeometryPoint",geometry:`${s},${a}`,mapExtent:`${r.west},${r.south},${r.east},${r.north}`,imageDisplay:`${this._tileWidth},${this._tileHeight},96`,sr:c,layers:u};return this._resource.getDerivedResource({url:"identify",queryParameters:f}).fetchJson().then(function(A){let g=[],m=A.results;if(!l(m))return g;for(let _=0;_<m.length;++_){let y=m[_],C=new Nh;if(C.data=y,C.name=y.value,C.properties=y.attributes,C.configureDescriptionFromProperties(y.attributes),y.geometryType==="esriGeometryPoint"&&y.geometry){let E=y.geometry.spatialReference&&y.geometry.spatialReference.wkid?y.geometry.spatialReference.wkid:4326;if(E===4326||E===4283)C.position=Ae.fromDegrees(y.geometry.x,y.geometry.y,y.geometry.z);else if(E===102100||E===900913||E===3857){let I=new zi;C.position=I.unproject(new d(y.geometry.x,y.geometry.y,y.geometry.z))}}g.push(C)}return g})};$m._metadataCache={};var jp=$m;function T9e(e){let t,n=e.name,i=e.message;l(n)&&l(i)?t=`${n}: ${i}`:t=e.toString();let o=e.stack;return l(o)&&(t+=` +${o}`),t}var eA=T9e;function Yz(e,t,n,i,o,r,s){this.provider=e,this.message=t,this.x=n,this.y=i,this.level=o,this.timesRetried=r??0,this.retry=!1,this.error=s}Yz.reportError=function(e,t,n,i,o,r,s,a){let c=e;return l(e)?(c.provider=t,c.message=i,c.x=o,c.y=r,c.level=s,c.retry=!1,c.error=a,++c.timesRetried):c=new Yz(t,i,o,r,s,0,a),l(n)&&n.numberOfListeners>0?n.raiseEvent(c):l(t)&&console.log(`An error occurred in "${t.constructor.name}": ${eA(i)}`),c};Yz.reportSuccess=function(e){l(e)&&(e.timesRetried=-1)};var Qo=Yz;var S9e={AERIAL:"Aerial",AERIAL_WITH_LABELS:"AerialWithLabels",AERIAL_WITH_LABELS_ON_DEMAND:"AerialWithLabelsOnDemand",ROAD:"Road",ROAD_ON_DEMAND:"RoadOnDemand",CANVAS_DARK:"CanvasDark",CANVAS_LIGHT:"CanvasLight",CANVAS_GRAY:"CanvasGray",ORDNANCE_SURVEY:"OrdnanceSurvey",COLLINS_BART:"CollinsBart"},oT=Object.freeze(S9e);function iN(e){}iN.prototype.isReady=function(){return!0};iN.prototype.shouldDiscardImage=function(e){return iN.EMPTY_IMAGE===e};var qz;Object.defineProperties(iN,{EMPTY_IMAGE:{get:function(){return l(qz)||(qz=new Image,qz.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),qz}}});var rT=iN;function xue(e){this.tileWidth=void 0,this.tileHeight=void 0,this.maximumLevel=void 0,this.imageUrlSubdomains=void 0,this.imageUrlTemplate=void 0,this.attributionList=void 0}xue.prototype.build=function(e){e._tileWidth=this.tileWidth,e._tileHeight=this.tileHeight,e._maximumLevel=this.maximumLevel,e._imageUrlSubdomains=this.imageUrlSubdomains,e._imageUrlTemplate=this.imageUrlTemplate;let t=e._attributionList=this.attributionList;t||(t=[]),e._attributionList=t;for(let n=0,i=t.length;n<i;++n){let o=t[n];if(o.credit instanceof Bt)break;o.credit=new Bt(o.attribution);let r=o.coverageAreas;for(let s=0,a=o.coverageAreas.length;s<a;++s){let c=r[s],u=c.bbox;c.bbox=new ae(D.toRadians(u[1]),D.toRadians(u[0]),D.toRadians(u[3]),D.toRadians(u[2]))}}};function w9e(e,t){if(e.resourceSets.length!==1)throw new ce("metadata does not specify one resource in resourceSets");let n=e.resourceSets[0].resources[0];t.tileWidth=n.imageWidth,t.tileHeight=n.imageHeight,t.maximumLevel=n.zoomMax-1,t.imageUrlSubdomains=n.imageUrlSubdomains,t.imageUrlTemplate=n.imageUrl;let i=n.imageryProviders;l(n.imageryProviders)&&(i=n.imageryProviders.filter(o=>o.coverageAreas?.some(r=>l(r.bbox)))),t.attributionList=i}function B9e(e,t,n){let i=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(i+=`: ${t.message}`),Qo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i,void 0,void 0,void 0,t),new ce(i)}async function D9e(e,t,n){let i=e.url,o=Ks._metadataCache[i];l(o)||(o=e.fetchJsonp("jsonp"),Ks._metadataCache[i]=o);try{let r=await o;return w9e(r,t)}catch(r){B9e(e,r,n)}}function Ks(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=1,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._mapStyle=e.mapStyle??oT.AERIAL,this._mapLayer=e.mapLayer,this._culture=e.culture??"",this._key=e.key,this._tileDiscardPolicy=e.tileDiscardPolicy,l(this._tileDiscardPolicy)||(this._tileDiscardPolicy=new rT),this._proxy=e.proxy,this._credit=new Bt(`<a href="https://www.microsoft.com/en-us/maps/bing-maps/product"><img src="${Ks.logoUrl}" title="Bing Imagery"/></a>`),this._tilingScheme=new Ts({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,ellipsoid:e.ellipsoid}),this._tileWidth=void 0,this._tileHeight=void 0,this._maximumLevel=void 0,this._imageUrlTemplate=void 0,this._imageUrlSubdomains=void 0,this._attributionList=void 0,this._errorEvent=new _e}Object.defineProperties(Ks.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},key:{get:function(){return this._key}},mapStyle:{get:function(){return this._mapStyle}},mapLayer:{get:function(){return this._mapLayer}},culture:{get:function(){return this._culture}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return l(this.mapLayer)}}});Ks.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=t.tileProtocol;l(n)?n.length>0&&n[n.length-1]===":"&&(n=n.substr(0,n.length-1)):n=document.location.protocol==="http:"?"http":"https";let i=t.mapStyle??oT.AERIAL,o=we.createIfNeeded(e);o.appendForwardSlash();let r={incl:"ImageryProviders",key:t.key,uriScheme:n};l(t.mapLayer)&&(r.mapLayer=t.mapLayer),l(t.culture)&&(r.culture=t.culture);let s=o.getDerivedResource({url:`REST/v1/Imagery/Metadata/${i}`,queryParameters:r}),a=new Ks(t);a._resource=o;let c=new xue(t);return await D9e(s,c),c.build(a),a};var v9e=new ae;Ks.prototype.getTileCredits=function(e,t,n){let i=this._tilingScheme.tileXYToRectangle(e,t,n,v9e);return M9e(this._attributionList,n,i)};Ks.prototype.requestImage=function(e,t,n,i){let o=Dl.loadImage(this,P9e(this,e,t,n,i));if(l(o))return o.catch(function(r){return l(r.blob)&&r.blob.size===0?rT.EMPTY_IMAGE:Promise.reject(r)})};Ks.prototype.pickFeatures=function(e,t,n,i,o){};Ks.tileXYToQuadKey=function(e,t,n){let i="";for(let o=n;o>=0;--o){let r=1<<o,s=0;(e&r)!==0&&(s|=1),(t&r)!==0&&(s|=2),i+=s}return i};Ks.quadKeyToTileXY=function(e){let t=0,n=0,i=e.length-1;for(let o=i;o>=0;--o){let r=1<<o,s=+e[i-o];(s&1)!==0&&(t|=r),(s&2)!==0&&(n|=r)}return{x:t,y:n,level:i}};Ks._logoUrl=void 0;Object.defineProperties(Ks,{logoUrl:{get:function(){return l(Ks._logoUrl)||(Ks._logoUrl=fn("Assets/Images/bing_maps_credit.png")),Ks._logoUrl},set:function(e){Ks._logoUrl=e}}});function P9e(e,t,n,i,o){let r=e._imageUrlTemplate,s=e._imageUrlSubdomains,a=(t+n+i)%s.length;return e._resource.getDerivedResource({url:r,request:o,templateValues:{quadkey:Ks.tileXYToQuadKey(t,n,i),subdomain:s[a],culture:e._culture},queryParameters:{n:"z"}})}var R9e=new ae;function M9e(e,t,n){++t;let i=[];for(let o=0,r=e.length;o<r;++o){let s=e[o],a=s.coverageAreas,c=!1;for(let u=0,f=s.coverageAreas.length;!c&&u<f;++u){let h=a[u];if(t>=h.zoomMin&&t<=h.zoomMax){let A=ae.intersection(n,h.bbox,R9e);l(A)&&(c=!0)}}c&&i.push(s.credit)}return i}Ks._metadataCache={};var oN=Ks;var bue=/{[^}]+}/g,Tue={x:F9e,y:k9e,z:z9e,s:V9e,reverseX:Q9e,reverseY:U9e,reverseZ:G9e,westDegrees:H9e,southDegrees:W9e,eastDegrees:j9e,northDegrees:Y9e,westProjected:q9e,southProjected:K9e,eastProjected:X9e,northProjected:J9e,width:Z9e,height:$9e},N9e=Tt(Tue,{i:e6e,j:t6e,reverseI:n6e,reverseJ:i6e,longitudeDegrees:r6e,latitudeDegrees:s6e,longitudeProjected:a6e,latitudeProjected:c6e,format:u6e});function rN(e){e=e??V.EMPTY_OBJECT,this._errorEvent=new _e;let t=we.createIfNeeded(e.url),n=we.createIfNeeded(e.pickFeaturesUrl);this._resource=t,this._urlSchemeZeroPadding=e.urlSchemeZeroPadding,this._getFeatureInfoFormats=e.getFeatureInfoFormats,this._pickFeaturesResource=n;let i=e.subdomains;Array.isArray(i)?i=i.slice():l(i)&&i.length>0?i=i.split(""):i=["a","b","c"],this._subdomains=i,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._minimumLevel=e.minimumLevel??0,this._maximumLevel=e.maximumLevel,this._tilingScheme=e.tilingScheme??new Ts({ellipsoid:e.ellipsoid}),this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._rectangle=ae.intersection(this._rectangle,this._tilingScheme.rectangle),this._tileDiscardPolicy=e.tileDiscardPolicy;let o=e.credit;typeof o=="string"&&(o=new Bt(o)),this._credit=o,this._hasAlphaChannel=e.hasAlphaChannel??!0;let r=e.customTags,s=Tt(Tue,r),a=Tt(N9e,r);this._tags=s,this._pickFeaturesTags=a,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this.enablePickFeatures=e.enablePickFeatures??!0}Object.defineProperties(rN.prototype,{url:{get:function(){return this._resource.url}},urlSchemeZeroPadding:{get:function(){return this._urlSchemeZeroPadding}},pickFeaturesUrl:{get:function(){return this._pickFeaturesResource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return this._hasAlphaChannel}}});rN.prototype.getTileCredits=function(e,t,n){};rN.prototype.requestImage=function(e,t,n,i){return Dl.loadImage(this,L9e(this,e,t,n,i))};rN.prototype.pickFeatures=function(e,t,n,i,o){if(!this.enablePickFeatures||!l(this._pickFeaturesResource)||this._getFeatureInfoFormats.length===0)return;let r=0,s=this;function a(u,f){return u.callback(f)}function c(){if(r>=s._getFeatureInfoFormats.length)return Promise.resolve([]);let u=s._getFeatureInfoFormats[r],f=O9e(s,e,t,n,i,o,u.format);return++r,u.type==="json"?f.fetchJson().then(u.callback).catch(c):u.type==="xml"?f.fetchXML().then(u.callback).catch(c):u.type==="text"||u.type==="html"?f.fetchText().then(u.callback).catch(c):f.fetch({responseType:u.format}).then(a.bind(void 0,u)).catch(c)}return c()};var Kz=!1,$u=new ae,Xz=!1,sN=new ae;function L9e(e,t,n,i,o){Kz=!1,Xz=!1;let r=e._resource,s=r.getUrlComponent(!0),a=e._tags,c={},u=s.match(bue);return l(u)&&u.forEach(function(f){let h=f.substring(1,f.length-1);l(a[h])&&(c[h]=a[h](e,t,n,i))}),r.getDerivedResource({request:o,templateValues:c})}var Fj=!1,aT=new U,Qj=!1;function O9e(e,t,n,i,o,r,s){Kz=!1,Xz=!1,Fj=!1,Qj=!1;let a=e._pickFeaturesResource,c=a.getUrlComponent(!0),u=e._pickFeaturesTags,f={},h=c.match(bue);return l(h)&&h.forEach(function(A){let g=A.substring(1,A.length-1);l(u[g])&&(f[g]=u[g](e,t,n,i,o,r,s))}),a.getDerivedResource({templateValues:f})}function cT(e,t,n){if(e&&e.urlSchemeZeroPadding&&e.urlSchemeZeroPadding.hasOwnProperty(t)){let i=e.urlSchemeZeroPadding[t];if(typeof i=="string"){let o=i.length;o>1&&(n=n.length>=o?n:new Array(o-n.toString().length+1).join("0")+n)}}return n}function F9e(e,t,n,i){return cT(e,"{x}",t)}function Q9e(e,t,n,i){let o=e.tilingScheme.getNumberOfXTilesAtLevel(i)-t-1;return cT(e,"{reverseX}",o)}function k9e(e,t,n,i){return cT(e,"{y}",n)}function U9e(e,t,n,i){let o=e.tilingScheme.getNumberOfYTilesAtLevel(i)-n-1;return cT(e,"{reverseY}",o)}function G9e(e,t,n,i){let o=e.maximumLevel,r=l(o)&&i<o?o-i-1:i;return cT(e,"{reverseZ}",r)}function z9e(e,t,n,i){return cT(e,"{z}",i)}function V9e(e,t,n,i){let o=(t+n+i)%e._subdomains.length;return e._subdomains[o]}function Jz(e,t,n,i){Kz||(e.tilingScheme.tileXYToRectangle(t,n,i,$u),$u.west=D.toDegrees($u.west),$u.south=D.toDegrees($u.south),$u.east=D.toDegrees($u.east),$u.north=D.toDegrees($u.north),Kz=!0)}function H9e(e,t,n,i){return Jz(e,t,n,i),$u.west}function W9e(e,t,n,i){return Jz(e,t,n,i),$u.south}function j9e(e,t,n,i){return Jz(e,t,n,i),$u.east}function Y9e(e,t,n,i){return Jz(e,t,n,i),$u.north}function Zz(e,t,n,i){Xz||(e.tilingScheme.tileXYToNativeRectangle(t,n,i,sN),Xz=!0)}function q9e(e,t,n,i){return Zz(e,t,n,i),sN.west}function K9e(e,t,n,i){return Zz(e,t,n,i),sN.south}function X9e(e,t,n,i){return Zz(e,t,n,i),sN.east}function J9e(e,t,n,i){return Zz(e,t,n,i),sN.north}function Z9e(e,t,n,i){return e.tileWidth}function $9e(e,t,n,i){return e.tileHeight}function e6e(e,t,n,i,o,r,s){return $z(e,t,n,i,o,r),aT.x}function t6e(e,t,n,i,o,r,s){return $z(e,t,n,i,o,r),aT.y}function n6e(e,t,n,i,o,r,s){return $z(e,t,n,i,o,r),e.tileWidth-aT.x-1}function i6e(e,t,n,i,o,r,s){return $z(e,t,n,i,o,r),e.tileHeight-aT.y-1}var o6e=new ae,sT=new d;function $z(e,t,n,i,o,r,s){if(Fj)return;kj(e,t,n,i,o,r);let a=sT,c=e.tilingScheme.tileXYToNativeRectangle(t,n,i,o6e);aT.x=e.tileWidth*(a.x-c.west)/c.width|0,aT.y=e.tileHeight*(c.north-a.y)/c.height|0,Fj=!0}function r6e(e,t,n,i,o,r,s){return D.toDegrees(o)}function s6e(e,t,n,i,o,r,s){return D.toDegrees(r)}function a6e(e,t,n,i,o,r,s){return kj(e,t,n,i,o,r),sT.x}function c6e(e,t,n,i,o,r,s){return kj(e,t,n,i,o,r),sT.y}var l6e=new Ae;function kj(e,t,n,i,o,r,s){if(!Qj){if(e.tilingScheme.projection instanceof Ui)sT.x=D.toDegrees(o),sT.y=D.toDegrees(r);else{let a=l6e;a.longitude=o,a.latitude=r,e.tilingScheme.projection.project(a,sT)}Qj=!0}}function u6e(e,t,n,i,o,r,s){return s}var Ac=rN;function ud(e){Ac.call(this,e)}ud._requestMetadata=async function(e,t,n,i){try{let o=await n.fetchXML();return ud._metadataSuccess(o,e,t,n,i)}catch(o){if(o instanceof Rm)return ud._metadataFailure(e,t);throw o}};ud.fromUrl=async function(e,t){let n=we.createIfNeeded(e);n.appendForwardSlash();let i=n,o=n.getDerivedResource({url:"tilemapresource.xml"});t=t??V.EMPTY_OBJECT;let r=await ud._requestMetadata(t,i,o);return new ud(r)};l(Object.create)&&(ud.prototype=Object.create(Ac.prototype),ud.prototype.constructor=ud);function Sue(e,t){return e.west<t.rectangle.west&&(e.west=t.rectangle.west),e.east>t.rectangle.east&&(e.east=t.rectangle.east),e.south<t.rectangle.south&&(e.south=t.rectangle.south),e.north>t.rectangle.north&&(e.north=t.rectangle.north),e}function wue(e,t,n){let i=e.positionToTileXY(ae.southwest(t),n),o=e.positionToTileXY(ae.northeast(t),n);return(Math.abs(o.x-i.x)+1)*(Math.abs(o.y-i.y)+1)>4?0:n}ud._metadataSuccess=function(e,t,n,i,o){let r=/tileformat/i,s=/tileset/i,a=/tilesets/i,c=/boundingbox/i,u,f,h,A=[],g=e.childNodes[0].childNodes;for(let P=0;P<g.length;P++)if(r.test(g.item(P).nodeName))u=g.item(P);else if(a.test(g.item(P).nodeName)){h=g.item(P);let M=g.item(P).childNodes;for(let L=0;L<M.length;L++)s.test(M.item(L).nodeName)&&A.push(M.item(L))}else c.test(g.item(P).nodeName)&&(f=g.item(P));let m;if(!l(h)||!l(f))throw m=`Unable to find expected tilesets or bbox attributes in ${i.url}.`,l(o)&&Qo.reportError(void 0,o,o.errorEvent,m),new ce(m);let _=t.fileExtension??u.getAttribute("extension"),y=t.tileWidth??parseInt(u.getAttribute("width"),10),C=t.tileHeight??parseInt(u.getAttribute("height"),10),E=t.minimumLevel??parseInt(A[0].getAttribute("order"),10),I=t.maximumLevel??parseInt(A[A.length-1].getAttribute("order"),10),b=h.getAttribute("profile"),S=t.tilingScheme;if(!l(S))if(b==="geodetic"||b==="global-geodetic")S=new so({ellipsoid:t.ellipsoid});else if(b==="mercator"||b==="global-mercator")S=new Ts({ellipsoid:t.ellipsoid});else throw m=`${i.url} specifies an unsupported profile attribute, ${b}.`,l(o)&&Qo.reportError(void 0,o,o.errorEvent,m),new ce(m);let B=ae.clone(t.rectangle);if(!l(B)){let P,M,L,p;t.flipXY??!1?(L=new U(parseFloat(f.getAttribute("miny")),parseFloat(f.getAttribute("minx"))),p=new U(parseFloat(f.getAttribute("maxy")),parseFloat(f.getAttribute("maxx")))):(L=new U(parseFloat(f.getAttribute("minx")),parseFloat(f.getAttribute("miny"))),p=new U(parseFloat(f.getAttribute("maxx")),parseFloat(f.getAttribute("maxy"))));let T=b==="geodetic"||b==="mercator";if(S.projection instanceof Ui||T)P=Ae.fromDegrees(L.x,L.y),M=Ae.fromDegrees(p.x,p.y);else{let w=S.projection;P=w.unproject(L),M=w.unproject(p)}B=new ae(P.longitude,P.latitude,M.longitude,M.latitude)}return B=Sue(B,S),E=wue(S,B,E),{url:n.getDerivedResource({url:`{z}/{x}/{reverseY}.${_}`}),tilingScheme:S,rectangle:B,tileWidth:y,tileHeight:C,minimumLevel:E,maximumLevel:I,tileDiscardPolicy:t.tileDiscardPolicy,credit:t.credit}};ud._metadataFailure=function(e,t){let n=e.fileExtension??"png",i=e.tileWidth??256,o=e.tileHeight??256,r=e.maximumLevel,s=l(e.tilingScheme)?e.tilingScheme:new Ts({ellipsoid:e.ellipsoid}),a=e.rectangle??s.rectangle;a=Sue(a,s);let c=wue(s,a,e.minimumLevel);return{url:t.getDerivedResource({url:`{z}/{x}/{reverseY}.${n}`}),tilingScheme:s,rectangle:a,tileWidth:i,tileHeight:o,minimumLevel:c,maximumLevel:r,tileDiscardPolicy:e.tileDiscardPolicy,credit:e.credit}};var Ay=ud;function Bue(e){this.channel=e.channel,this.ellipsoid=e.ellipsoid,this.tilingScheme=void 0,this.version=void 0}Bue.prototype.build=function(e){e._channel=this.channel,e._version=this.version,e._tilingScheme=this.tilingScheme};function f6e(e,t){let n;try{n=JSON.parse(e)}catch{n=JSON.parse(e.replace(/([\[\{,])[\n\r ]*([A-Za-z0-9]+)[\n\r ]*:/g,'$1"$2":'))}let i;for(let o=0;o<n.layers.length;o++)if(n.layers[o].id===t.channel){i=n.layers[o];break}if(!l(i)){let o=`Could not find layer with channel (id) of ${t.channel}.`;throw new ce(o)}if(!l(i.version)){let o=`Could not find a version in channel (id) ${t.channel}.`;throw new ce(o)}if(t.version=i.version,l(n.projection)&&n.projection==="flat")t.tilingScheme=new so({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new ae(-Math.PI,-Math.PI,Math.PI,Math.PI),ellipsoid:t.ellipsoid});else if(!l(n.projection)||n.projection==="mercator")t.tilingScheme=new Ts({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,ellipsoid:t.ellipsoid});else{let o=`Unsupported projection ${n.projection}.`;throw new ce(o)}return!0}function d6e(e,t,n){let i=`An error occurred while accessing ${t.url}.`;throw l(e)&&l(e.message)&&(i+=`: ${e.message}`),Qo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i),new ce(i)}async function h6e(e,t,n){try{let i=await e.fetchText();f6e(i,t)}catch(i){d6e(i,e,n)}}function fu(e){e=e??{},this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=1.9,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._channel=e.channel,this._requestType="ImageryMaps",this._credit=new Bt(`<a href="http://www.google.com/enterprise/mapsearth/products/earthenterprise.html"><img src="${fu.logoUrl}" title="Google Imagery"/></a>`),this._tilingScheme=void 0,this._version=void 0,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=e.maximumLevel,this._errorEvent=new _e}Object.defineProperties(fu.prototype,{url:{get:function(){return this._url}},path:{get:function(){return this._path}},proxy:{get:function(){return this._resource.proxy}},channel:{get:function(){return this._channel}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},version:{get:function(){return this._version}},requestType:{get:function(){return this._requestType}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}});fu.fromUrl=async function(e,t,n){n=n??{};let i=n.path??"/default_map",o=we.createIfNeeded(e).getDerivedResource({url:i[0]==="/"?i.substring(1):i});o.appendForwardSlash();let r=o.getDerivedResource({url:"query",queryParameters:{request:"Json",vars:"geeServerDefs",is2d:"t"}}),s=new Bue(n);s.channel=t,await h6e(r,s);let a=new fu(n);return s.build(a),a._resource=o,a._url=e,a._path=i,a};fu.prototype.getTileCredits=function(e,t,n){};fu.prototype.requestImage=function(e,t,n,i){let o=this._resource.getDerivedResource({url:"query",request:i,queryParameters:{request:this._requestType,channel:this._channel,version:this._version,x:e,y:t,z:n+1}});return Dl.loadImage(this,o)};fu.prototype.pickFeatures=function(e,t,n,i,o){};fu._logoUrl=void 0;Object.defineProperties(fu,{logoUrl:{get:function(){return l(fu._logoUrl)||(fu._logoUrl=fn("Assets/Images/google_earth_credit.png")),fu._logoUrl},set:function(e){fu._logoUrl=e}}});var aN=fu;var m6e=/\/$/,Due=new Bt('© <a href="https://www.mapbox.com/about/maps/">Mapbox</a> © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> <strong><a href="https://www.mapbox.com/map-feedback/">Improve this map</a></strong>');function lT(e){e=e??V.EMPTY_OBJECT;let t=e.mapId,n=e.accessToken;this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let i=we.createIfNeeded(e.url??"https://{s}.tiles.mapbox.com/v4/");this._mapId=t,this._accessToken=n;let o=e.format??"png";/\./.test(o)||(o=`.${o}`),this._format=o;let r=i.getUrlComponent();m6e.test(r)||(r+="/"),r+=`${t}/{z}/{x}/{y}${this._format}`,i.url=r,i.setQueryParameters({access_token:n});let s;l(e.credit)?(s=e.credit,typeof s=="string"&&(s=new Bt(s))):s=Due,this._resource=i,this._imageryProvider=new Ac({url:i,credit:s,ellipsoid:e.ellipsoid,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,rectangle:e.rectangle})}Object.defineProperties(lT.prototype,{url:{get:function(){return this._imageryProvider.url}},rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._imageryProvider.errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},proxy:{get:function(){return this._imageryProvider.proxy}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}}});lT.prototype.getTileCredits=function(e,t,n){};lT.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};lT.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};lT._defaultCredit=Due;var cN=lT;function a0(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let t=e.rectangle??ae.MAX_VALUE,n=new so({rectangle:t,numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});this._tilingScheme=n,this._image=void 0,this._texture=void 0,this._hasError=!1,this._errorEvent=new _e;let i=e.credit;typeof i=="string"&&(i=new Bt(i)),this._credit=i;let o=we.createIfNeeded(e.url);this._resource=o,this._tileWidth=e.tileWidth,this._tileHeight=e.tileHeight}Object.defineProperties(a0.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return 0}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}});function A6e(e,t,n,i){let o=`Failed to load image ${e.url}`;l(t)&&l(t.message)&&(o+=`: ${t.message}`);let r=Qo.reportError(i,n,l(n)?n._errorEvent:void 0,o,0,0,0,t);if(r.retry)return Uj(e,n,r);throw l(n)&&(n._hasError=!0),new ce(o)}async function Uj(e,t,n){try{return await Dl.loadImage(null,e)}catch(i){return A6e(e,i,t,n)}}a0.fromUrl=async function(e,t){let n=we.createIfNeeded(e),i=await Uj(n);t=t??V.EMPTY_OBJECT;let o=new a0({...t,url:e,tileWidth:i.width,tileHeight:i.height});return o._image=i,o};a0.prototype.getTileCredits=function(e,t,n){};a0.prototype.requestImage=async function(e,t,n,i){if(!this._hasError&&!l(this._image)){let o=await Uj(this._resource,this);return this._image=o,Qo.reportSuccess(this._errorEvent),o}return this._image};a0.prototype.pickFeatures=function(e,t,n,i,o){};var lN=a0;function p6e(e,t,n){this.type=e,l(t)||(e==="json"?t="application/json":e==="xml"?t="text/xml":e==="html"?t="text/html":e==="text"&&(t="text/plain")),this.format=t,l(n)||(e==="json"?n=g6e:e==="xml"?n=E6e:(e==="html"||e==="text")&&(n=vue)),this.callback=n}function g6e(e){let t=[],n=e.features;for(let i=0;i<n.length;++i){let o=n[i],r=new Nh;if(r.data=o,r.properties=o.properties,r.configureNameFromProperties(o.properties),r.configureDescriptionFromProperties(o.properties),l(o.geometry)&&o.geometry.type==="Point"){let s=o.geometry.coordinates[0],a=o.geometry.coordinates[1];r.position=Ae.fromDegrees(s,a)}t.push(r)}return t}var Gj="http://www.mapinfo.com/mxp",_6e="http://www.esri.com/wms",y6e="http://www.opengis.net/wfs",C6e="http://www.opengis.net/gml";function E6e(e){let t=e.documentElement;if(t.localName==="MultiFeatureCollection"&&t.namespaceURI===Gj)return I6e(e);if(t.localName==="FeatureInfoResponse"&&t.namespaceURI===_6e)return x6e(e);if(t.localName==="FeatureCollection"&&t.namespaceURI===y6e)return b6e(e);if(t.localName==="ServiceExceptionReport")throw new ce(new XMLSerializer().serializeToString(t));return t.localName==="msGMLOutput"?T6e(e):S6e(e)}function I6e(e){let t=[],i=e.documentElement.getElementsByTagNameNS(Gj,"Feature");for(let o=0;o<i.length;++o){let r=i[o],s={},a=r.getElementsByTagNameNS(Gj,"Val");for(let u=0;u<a.length;++u){let f=a[u];if(f.hasAttribute("ref")){let h=f.getAttribute("ref"),A=f.textContent.trim();s[h]=A}}let c=new Nh;c.data=r,c.properties=s,c.configureNameFromProperties(s),c.configureDescriptionFromProperties(s),t.push(c)}return t}function x6e(e){let t=e.documentElement,n=[],i,o=t.getElementsByTagNameNS("*","FIELDS");if(o.length>0)for(let r=0;r<o.length;++r){let s=o[r];i={};let a=s.attributes;for(let c=0;c<a.length;++c){let u=a[c];i[u.name]=u.value}n.push(eV(s,i))}else{let r=t.getElementsByTagNameNS("*","FeatureInfo");for(let s=0;s<r.length;++s){let a=r[s];i={};let c=a.childNodes;for(let u=0;u<c.length;++u){let f=c[u];f.nodeType===Node.ELEMENT_NODE&&(i[f.localName]=f.textContent)}n.push(eV(a,i))}}return n}function b6e(e){let t=[],i=e.documentElement.getElementsByTagNameNS(C6e,"featureMember");for(let o=0;o<i.length;++o){let r=i[o],s={};zj(r,s),t.push(eV(r,s))}return t}function T6e(e){let t=[],n,i=e.documentElement.childNodes;for(let r=0;r<i.length;r++)if(i[r].nodeType===Node.ELEMENT_NODE){n=i[r];break}if(!l(n))throw new ce("Unable to find first child of the feature info xml document");let o=n.childNodes;for(let r=0;r<o.length;++r){let s=o[r];if(s.nodeType===Node.ELEMENT_NODE){let a={};zj(s,a),t.push(eV(s,a))}}return t}function zj(e,t){let n=!0;for(let i=0;i<e.childNodes.length;++i){let o=e.childNodes[i];o.nodeType===Node.ELEMENT_NODE&&(n=!1),!(o.localName==="Point"||o.localName==="LineString"||o.localName==="Polygon"||o.localName==="boundedBy")&&o.hasChildNodes()&&zj(o,t)&&(t[o.localName]=o.textContent)}return n}function eV(e,t){let n=new Nh;return n.data=e,n.properties=t,n.configureNameFromProperties(t),n.configureDescriptionFromProperties(t),n}function S6e(e){let t=new XMLSerializer().serializeToString(e),n=document.createElement("div"),i=document.createElement("pre");i.textContent=t,n.appendChild(i);let o=new Nh;return o.data=e,o.description=n.innerHTML,[o]}var w6e=/<body>\s*<\/body>/im,B6e=/<ServiceExceptionReport([\s\S]*)<\/ServiceExceptionReport>/im,D6e=/<title>([\s\S]*)<\/title>/im;function vue(e){if(w6e.test(e)||B6e.test(e))return;let t,n=D6e.exec(e);n&&n.length>1&&(t=n[1]);let i=new Nh;return i.name=t,i.description=e,i.data=e,[i]}var c0=p6e;function uN(e){e=e??V.EMPTY_OBJECT,this._tileCache={},this._tilesRequestedForInterval=[];let t=this._clock=e.clock;this._times=e.times,this._requestImageFunction=e.requestImageFunction,this._reloadFunction=e.reloadFunction,this._currentIntervalIndex=-1,t.onTick.addEventListener(this._clockOnTick,this),this._clockOnTick(t)}Object.defineProperties(uN.prototype,{clock:{get:function(){return this._clock},set:function(e){this._clock!==e&&(this._clock=e,this._clockOnTick(e),this._reloadFunction())}},times:{get:function(){return this._times},set:function(e){this._times!==e&&(this._times=e,this._clockOnTick(this._clock),this._reloadFunction())}},currentInterval:{get:function(){return this._times.get(this._currentIntervalIndex)}}});uN.prototype.getFromCache=function(e,t,n,i){let o=Pue(e,t,n),r,s=this._tileCache[this._currentIntervalIndex];if(l(s)&&l(s[o])){let a=s[o];r=a.promise.catch(function(c){throw i.state=a.request.state,c}),delete s[o]}return r};uN.prototype.checkApproachingInterval=function(e,t,n,i){let o=Pue(e,t,n),r=this._tilesRequestedForInterval,s=Rue(this),a={key:o,priorityFunction:i.priorityFunction};(!l(s)||!Mue(this,a,s))&&r.push(a),r.length>=512&&r.splice(0,256)};uN.prototype._clockOnTick=function(e){let t=e.currentTime,i=this._times.indexOf(t),o=this._currentIntervalIndex;if(i!==o){let s=this._tileCache[o];for(let a in s)s.hasOwnProperty(a)&&s[a].request.cancel();delete this._tileCache[o],this._tilesRequestedForInterval=[],this._currentIntervalIndex=i,this._reloadFunction();return}let r=Rue(this);if(l(r)){let s=this._tilesRequestedForInterval,a=!0;for(;a&&s.length!==0;){let c=s.pop();a=Mue(this,c,r),a||s.push(c)}}};function Pue(e,t,n){return`${e}-${t}-${n}`}function v6e(e){let t=e.split("-");if(t.length===3)return{x:Number(t[0]),y:Number(t[1]),level:Number(t[2])}}function Rue(e){let t=e._times;if(!l(t))return;let n=e._clock,i=n.currentTime,o=n.canAnimate&&n.shouldAnimate,r=n.multiplier;if(!o&&r!==0)return;let s,a=t.indexOf(i);if(a<0)return;let c=t.get(a);return r>0?(s=K.secondsDifference(c.stop,i),++a):(s=K.secondsDifference(c.start,i),--a),s/=r,a>=0&&s<=5?t.get(a):void 0}function Mue(e,t,n){let i=e._times.indexOf(n.start),o=e._tileCache,r=o[i];l(r)||(r=o[i]={});let s=t.key;if(l(r[s]))return!0;let a=v6e(s),c=new sr({throttle:!1,throttleByServer:!0,type:Ms.IMAGERY,priorityFunction:t.priorityFunction}),u=e._requestImageFunction(a.x,a.y,a.level,c,n);return l(u)?(r[s]={promise:u,request:c},!0):!1}var l0=uN;var P6e=[3034,3035,3042,3043,3044],R6e=[4471,4559];function Oh(e){if(e=e??V.EMPTY_OBJECT,l(e.times)&&!l(e.clock))throw new me("options.times was specified, so options.clock is required.");this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._getFeatureInfoUrl=e.getFeatureInfoUrl??e.url;let t=we.createIfNeeded(e.url),n=we.createIfNeeded(this._getFeatureInfoUrl);t.setQueryParameters(Oh.DefaultParameters,!0),n.setQueryParameters(Oh.GetFeatureInfoDefaultParameters,!0),l(e.parameters)&&t.setQueryParameters(Nue(e.parameters)),l(e.getFeatureInfoParameters)&&n.setQueryParameters(Nue(e.getFeatureInfoParameters));let i=this;this._reload=void 0,l(e.times)&&(this._timeDynamicImagery=new l0({clock:e.clock,times:e.times,requestImageFunction:function(s,a,c,u,f){return Lue(i,s,a,c,u,f)},reloadFunction:function(){l(i._reload)&&i._reload()}}));let o={};if(o.layers=e.layers,o.bbox="{westProjected},{southProjected},{eastProjected},{northProjected}",o.width="{width}",o.height="{height}",parseFloat(t.queryParameters.version)>=1.3){o.crs=e.crs??(e.tilingScheme&&e.tilingScheme.projection instanceof zi?"EPSG:3857":"CRS:84");let s=o.crs.split(":");if(s[0]==="EPSG"&&s.length===2){let a=Number(s[1]);(a>=4e3&&a<5e3&&!R6e.includes(a)||P6e.includes(a))&&(o.bbox="{southProjected},{westProjected},{northProjected},{eastProjected}")}}else o.srs=e.srs??(e.tilingScheme&&e.tilingScheme.projection instanceof zi?"EPSG:3857":"EPSG:4326");t.setQueryParameters(o,!0),n.setQueryParameters(o,!0);let r={query_layers:e.layers,info_format:"{format}"};parseFloat(n.queryParameters.version)>=1.3?(r.i="{i}",r.j="{j}"):(r.x="{i}",r.y="{j}"),n.setQueryParameters(r,!0),this._resource=t,this._pickFeaturesResource=n,this._layers=e.layers,this._tileProvider=new Ac({url:t,pickFeaturesUrl:n,tilingScheme:e.tilingScheme??new so({ellipsoid:e.ellipsoid}),rectangle:e.rectangle,tileWidth:e.tileWidth,tileHeight:e.tileHeight,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,subdomains:e.subdomains,tileDiscardPolicy:e.tileDiscardPolicy,credit:e.credit,getFeatureInfoFormats:e.getFeatureInfoFormats??Oh.DefaultGetFeatureInfoFormats,enablePickFeatures:e.enablePickFeatures})}function Lue(e,t,n,i,o,r){let s=l(r)?r.data:void 0,a=e._tileProvider;return l(s)&&a._resource.setQueryParameters(s),a.requestImage(t,n,i,o)}function M6e(e,t,n,i,o,r,s){let a=l(s)?s.data:void 0,c=e._tileProvider;return l(a)&&c._pickFeaturesResource.setQueryParameters(a),c.pickFeatures(t,n,i,o,r)}Object.defineProperties(Oh.prototype,{url:{get:function(){return this._resource._url}},proxy:{get:function(){return this._resource.proxy}},layers:{get:function(){return this._layers}},tileWidth:{get:function(){return this._tileProvider.tileWidth}},tileHeight:{get:function(){return this._tileProvider.tileHeight}},maximumLevel:{get:function(){return this._tileProvider.maximumLevel}},minimumLevel:{get:function(){return this._tileProvider.minimumLevel}},tilingScheme:{get:function(){return this._tileProvider.tilingScheme}},rectangle:{get:function(){return this._tileProvider.rectangle}},tileDiscardPolicy:{get:function(){return this._tileProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._tileProvider.errorEvent}},credit:{get:function(){return this._tileProvider.credit}},hasAlphaChannel:{get:function(){return this._tileProvider.hasAlphaChannel}},enablePickFeatures:{get:function(){return this._tileProvider.enablePickFeatures},set:function(e){this._tileProvider.enablePickFeatures=e}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(e){this._timeDynamicImagery.clock=e}},times:{get:function(){return this._timeDynamicImagery.times},set:function(e){this._timeDynamicImagery.times=e}},getFeatureInfoUrl:{get:function(){return this._getFeatureInfoUrl}}});Oh.prototype.getTileCredits=function(e,t,n){return this._tileProvider.getTileCredits(e,t,n)};Oh.prototype.requestImage=function(e,t,n,i){let o,r=this._timeDynamicImagery,s;return l(r)&&(s=r.currentInterval,o=r.getFromCache(e,t,n,i)),l(o)||(o=Lue(this,e,t,n,i,s)),l(o)&&l(r)&&r.checkApproachingInterval(e,t,n,i),o};Oh.prototype.pickFeatures=function(e,t,n,i,o){let r=this._timeDynamicImagery,s=l(r)?r.currentInterval:void 0;return M6e(this,e,t,n,i,o,s)};Oh.DefaultParameters=Object.freeze({service:"WMS",version:"1.1.1",request:"GetMap",styles:"",format:"image/jpeg"});Oh.GetFeatureInfoDefaultParameters=Object.freeze({service:"WMS",version:"1.1.1",request:"GetFeatureInfo"});Oh.DefaultGetFeatureInfoFormats=Object.freeze([Object.freeze(new c0("json","application/json")),Object.freeze(new c0("xml","text/xml")),Object.freeze(new c0("text","text/html"))]);function Nue(e){let t={};for(let n in e)e.hasOwnProperty(n)&&(t[n.toLowerCase()]=e[n]);return t}var fN=Oh;var N6e=Object.freeze({service:"WMTS",version:"1.0.0",request:"GetTile"});function dN(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let t=we.createIfNeeded(e.url),n=e.style,i=e.tileMatrixSetID,o=t.url,r=o.match(/{/g);if(!l(r)||r.length===1&&/{s}/.test(o))t.setQueryParameters(N6e),this._useKvp=!0;else{let h={style:n,Style:n,TileMatrixSet:i};t.setTemplateValues(h),this._useKvp=!1}this._resource=t,this._layer=e.layer,this._style=n,this._tileMatrixSetID=i,this._tileMatrixLabels=e.tileMatrixLabels,this._format=e.format??"image/jpeg",this._tileDiscardPolicy=e.tileDiscardPolicy,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new Ts({ellipsoid:e.ellipsoid}),this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._minimumLevel=e.minimumLevel??0,this._maximumLevel=e.maximumLevel,this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._dimensions=e.dimensions;let s=this;this._reload=void 0,l(e.times)&&(this._timeDynamicImagery=new l0({clock:e.clock,times:e.times,requestImageFunction:function(h,A,g,m,_){return Oue(s,h,A,g,m,_)},reloadFunction:function(){l(s._reload)&&s._reload()}}));let a=this._tilingScheme.positionToTileXY(ae.southwest(this._rectangle),this._minimumLevel),c=this._tilingScheme.positionToTileXY(ae.northeast(this._rectangle),this._minimumLevel),u=(Math.abs(c.x-a.x)+1)*(Math.abs(c.y-a.y)+1);this._errorEvent=new _e;let f=e.credit;this._credit=typeof f=="string"?new Bt(f):f,this._subdomains=e.subdomains,Array.isArray(this._subdomains)?this._subdomains=this._subdomains.slice():l(this._subdomains)&&this._subdomains.length>0?this._subdomains=this._subdomains.split(""):this._subdomains=["a","b","c"]}function Oue(e,t,n,i,o,r){let s=e._tileMatrixLabels,a=l(s)?s[i]:i.toString(),c=e._subdomains,u=e._dimensions,f=l(r)?r.data:void 0,h,A;if(!e._useKvp)A={TileMatrix:a,TileRow:n.toString(),TileCol:t.toString(),s:c[(t+n+i)%c.length]},h=e._resource.getDerivedResource({request:o}),h.setTemplateValues(A),l(u)&&h.setTemplateValues(u),l(f)&&h.setTemplateValues(f);else{let g={};g.tilematrix=a,g.layer=e._layer,g.style=e._style,g.tilerow=n,g.tilecol=t,g.tilematrixset=e._tileMatrixSetID,g.format=e._format,l(u)&&(g=Tt(g,u)),l(f)&&(g=Tt(g,f)),A={s:c[(t+n+i)%c.length]},h=e._resource.getDerivedResource({queryParameters:g,request:o}),h.setTemplateValues(A)}return Dl.loadImage(e,h)}Object.defineProperties(dN.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},format:{get:function(){return this._format}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(e){this._timeDynamicImagery.clock=e}},times:{get:function(){return this._timeDynamicImagery.times},set:function(e){this._timeDynamicImagery.times=e}},dimensions:{get:function(){return this._dimensions},set:function(e){this._dimensions!==e&&(this._dimensions=e,l(this._reload)&&this._reload())}}});dN.prototype.getTileCredits=function(e,t,n){};dN.prototype.requestImage=function(e,t,n,i){let o,r=this._timeDynamicImagery,s;return l(r)&&(s=r.currentInterval,o=r.getFromCache(e,t,n,i)),l(o)||(o=Oue(this,e,t,n,i,s)),l(o)&&l(r)&&r.checkApproachingInterval(e,t,n,i),o};dN.prototype.pickFeatures=function(e,t,n,i,o){};var hN=dN;var L6e={ARCGIS_MAPSERVER:jp.fromUrl,BING:async(e,t)=>oN.fromUrl(e,t),GOOGLE_EARTH:async(e,t)=>{let n=t.channel;return delete t.channel,aN.fromUrl(e,n,t)},MAPBOX:(e,t)=>new cN({url:e,...t}),SINGLE_TILE:lN.fromUrl,TMS:Ay.fromUrl,URL_TEMPLATE:(e,t)=>new Ac({url:e,...t}),WMS:(e,t)=>new fN({url:e,...t}),WMTS:(e,t)=>new hN({url:e,...t})};function tA(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileCredits=void 0,this._errorEvent=new _e}Object.defineProperties(tA.prototype,{rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}},proxy:{get:function(){}}});tA.fromAssetId=async function(e,t){t=t??V.EMPTY_OBJECT;let n=Hu._createEndpointResource(e,t),i=e.toString()+t.accessToken+t.server,o=tA._endpointCache[i];l(o)||(o=n.fetchJson(),tA._endpointCache[i]=o);let r=await o;if(r.type!=="IMAGERY")throw new ce(`Cesium ion asset ${e} is not an imagery asset.`);let s,a=r.externalType;if(!l(a))s=await Ay.fromUrl(new Hu(r,n));else{let u=L6e[a];if(!l(u))throw new ce(`Unrecognized Cesium ion imagery type: ${a}`);let f={...r.options},h=f.url;delete f.url,s=await u(h,f)}let c=new tA(t);return s.errorEvent.addEventListener(function(u){u.provider=c,c._errorEvent.raiseEvent(u)}),c._tileCredits=Hu.getCreditsFromEndpoint(r,n),c._imageryProvider=s,c};tA.prototype.getTileCredits=function(e,t,n){let i=this._imageryProvider.getTileCredits(e,t,n);return l(i)?this._tileCredits.concat(i):this._tileCredits};tA.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};tA.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};tA._endpointCache={};var Yp=tA;var O6e={AERIAL:2,AERIAL_WITH_LABELS:3,ROAD:4},qp=Object.freeze(O6e);function F6e(e){e=e??V.EMPTY_OBJECT;let t=e.style??qp.AERIAL;return Yp.fromAssetId(t)}var Kp=F6e;function vl(){me.throwInstantiationError()}Object.defineProperties(vl.prototype,{errorEvent:{get:me.throwInstantiationError},credit:{get:me.throwInstantiationError},tilingScheme:{get:me.throwInstantiationError},hasWaterMask:{get:me.throwInstantiationError},hasVertexNormals:{get:me.throwInstantiationError},availability:{get:me.throwInstantiationError}});var Fue=[];vl.getRegularGridIndices=function(e,t){let n=Fue[e];l(n)||(Fue[e]=n=[]);let i=n[t];return l(i)||(e*t<D.SIXTY_FOUR_KILOBYTES?i=n[t]=new Uint16Array((e-1)*(t-1)*6):i=n[t]=new Uint32Array((e-1)*(t-1)*6),Gue(e,t,i,0)),i};var Que=[];vl.getRegularGridIndicesAndEdgeIndices=function(e,t){let n=Que[e];l(n)||(Que[e]=n=[]);let i=n[t];if(!l(i)){let o=vl.getRegularGridIndices(e,t),r=Uue(e,t),s=r.westIndicesSouthToNorth,a=r.southIndicesEastToWest,c=r.eastIndicesNorthToSouth,u=r.northIndicesWestToEast;i=n[t]={indices:o,westIndicesSouthToNorth:s,southIndicesEastToWest:a,eastIndicesNorthToSouth:c,northIndicesWestToEast:u}}return i};var kue=[];vl.getRegularGridAndSkirtIndicesAndEdgeIndices=function(e,t){let n=kue[e];l(n)||(kue[e]=n=[]);let i=n[t];if(!l(i)){let o=e*t,r=(e-1)*(t-1)*6,s=e*2+t*2,a=Math.max(0,s-4)*6,c=o+s,u=r+a,f=Uue(e,t),h=f.westIndicesSouthToNorth,A=f.southIndicesEastToWest,g=f.eastIndicesNorthToSouth,m=f.northIndicesWestToEast,_=Oe.createTypedArray(c,u);Gue(e,t,_,0),vl.addSkirtIndices(h,A,g,m,o,_,r),i=n[t]={indices:_,westIndicesSouthToNorth:h,southIndicesEastToWest:A,eastIndicesNorthToSouth:g,northIndicesWestToEast:m,indexCountWithoutSkirts:r}}return i};vl.addSkirtIndices=function(e,t,n,i,o,r,s){let a=o;s=tV(e,a,r,s),a+=e.length,s=tV(t,a,r,s),a+=t.length,s=tV(n,a,r,s),a+=n.length,tV(i,a,r,s)};function Uue(e,t){let n=new Array(t),i=new Array(e),o=new Array(t),r=new Array(e),s;for(s=0;s<e;++s)r[s]=s,i[s]=e*t-1-s;for(s=0;s<t;++s)o[s]=(s+1)*e-1,n[s]=(t-s-1)*e;return{westIndicesSouthToNorth:n,southIndicesEastToWest:i,eastIndicesNorthToSouth:o,northIndicesWestToEast:r}}function Gue(e,t,n,i){let o=0;for(let r=0;r<t-1;++r){for(let s=0;s<e-1;++s){let a=o,c=a+e,u=c+1,f=a+1;n[i++]=a,n[i++]=c,n[i++]=f,n[i++]=f,n[i++]=c,n[i++]=u,++o}++o}}function tV(e,t,n,i){let o=e[0],r=e.length;for(let s=1;s<r;++s){let a=e[s];n[i++]=o,n[i++]=a,n[i++]=t,n[i++]=t,n[i++]=a,n[i++]=t+1,o=a,++t}return i}vl.heightmapTerrainQuality=.25;vl.getEstimatedLevelZeroGeometricErrorForAHeightmap=function(e,t,n){return e.maximumRadius*2*Math.PI*vl.heightmapTerrainQuality/(t*n)};vl.prototype.requestTileGeometry=me.throwInstantiationError;vl.prototype.getLevelMaximumGeometricError=me.throwInstantiationError;vl.prototype.getTileDataAvailable=me.throwInstantiationError;vl.prototype.loadTileDataAvailability=me.throwInstantiationError;var Ss=vl;var mN=`uniform sampler2D u_texture; + +in vec2 v_textureCoordinates; + +void main() +{ + out_FragColor = texture(u_texture, v_textureCoordinates); +} +`;var AN=`in vec4 position; +in float webMercatorT; + +uniform vec2 u_textureDimensions; + +out vec2 v_textureCoordinates; + +void main() +{ + v_textureCoordinates = vec2(position.x, webMercatorT); + gl_Position = czm_viewportOrthographic * (position * vec4(u_textureDimensions, 1.0, 1.0)); +} +`;var Q6e={UNLOADED:0,TRANSITIONING:1,RECEIVED:2,TEXTURE_LOADED:3,READY:4,FAILED:5,INVALID:6,PLACEHOLDER:7},qn=Object.freeze(Q6e);function uT(e,t,n,i,o){if(this.imageryLayer=e,this.x=t,this.y=n,this.level=i,this.request=void 0,i!==0){let r=t/2|0,s=n/2|0,a=i-1;this.parent=e.getImageryFromCache(r,s,a)}this.state=qn.UNLOADED,this.imageUrl=void 0,this.image=void 0,this.texture=void 0,this.textureWebMercator=void 0,this.credits=void 0,this.referenceCount=0,!l(o)&&e.ready&&(o=e.imageryProvider.tilingScheme.tileXYToRectangle(t,n,i)),this.rectangle=o}uT.createPlaceholder=function(e){let t=new uT(e,0,0,0);return t.addReference(),t.state=qn.PLACEHOLDER,t};uT.prototype.addReference=function(){++this.referenceCount};uT.prototype.releaseReference=function(){return--this.referenceCount,this.referenceCount===0?(this.imageryLayer.removeImageryFromCache(this),l(this.parent)&&this.parent.releaseReference(),l(this.image)&&l(this.image.destroy)&&this.image.destroy(),l(this.texture)&&this.texture.destroy(),l(this.textureWebMercator)&&this.texture!==this.textureWebMercator&&this.textureWebMercator.destroy(),ue(this),0):this.referenceCount};uT.prototype.processStateMachine=function(e,t,n){this.state===qn.UNLOADED&&!n&&(this.state=qn.TRANSITIONING,this.imageryLayer._requestImagery(this)),this.state===qn.RECEIVED&&(this.state=qn.TRANSITIONING,this.imageryLayer._createTexture(e.context,this));let i=this.state===qn.READY&&t&&!this.texture;(this.state===qn.TEXTURE_LOADED||i)&&(this.state=qn.TRANSITIONING,this.imageryLayer._reprojectTexture(e,this,t))};var fT=uT;function Vj(e,t,n){this.readyImagery=void 0,this.loadingImagery=e,this.textureCoordinateRectangle=t,this.textureTranslationAndScale=void 0,this.useWebMercatorT=n}Vj.prototype.freeResources=function(){l(this.readyImagery)&&this.readyImagery.releaseReference(),l(this.loadingImagery)&&this.loadingImagery.releaseReference()};Vj.prototype.processStateMachine=function(e,t,n){let i=this.loadingImagery,o=i.imageryLayer;if(i.processStateMachine(t,!this.useWebMercatorT,n),i.state===qn.READY)return l(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=this.loadingImagery,this.loadingImagery=void 0,this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(e,this),!0;let r=i.parent,s;for(;l(r)&&(r.state!==qn.READY||!this.useWebMercatorT&&!l(r.texture));)r.state!==qn.FAILED&&r.state!==qn.INVALID&&(s=s||r),r=r.parent;return this.readyImagery!==r&&(l(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=r,l(r)&&(r.addReference(),this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(e,this))),i.state===qn.FAILED||i.state===qn.INVALID?l(s)?(s.processStateMachine(t,!this.useWebMercatorT,n),!1):!0:!1};var dT=Vj;function Ni(e,t){this._imageryProvider=e,this._readyEvent=new _e,this._errorEvent=new _e,t=t??V.EMPTY_OBJECT,e=e??V.EMPTY_OBJECT,this.alpha=t.alpha??e._defaultAlpha??1,this.nightAlpha=t.nightAlpha??e._defaultNightAlpha??1,this.dayAlpha=t.dayAlpha??e._defaultDayAlpha??1,this.brightness=t.brightness??e._defaultBrightness??Ni.DEFAULT_BRIGHTNESS,this.contrast=t.contrast??e._defaultContrast??Ni.DEFAULT_CONTRAST,this.hue=t.hue??e._defaultHue??Ni.DEFAULT_HUE,this.saturation=t.saturation??e._defaultSaturation??Ni.DEFAULT_SATURATION,this.gamma=t.gamma??e._defaultGamma??Ni.DEFAULT_GAMMA,this.splitDirection=t.splitDirection??Ni.DEFAULT_SPLIT,this.minificationFilter=t.minificationFilter??e._defaultMinificationFilter??Ni.DEFAULT_MINIFICATION_FILTER,this.magnificationFilter=t.magnificationFilter??e._defaultMagnificationFilter??Ni.DEFAULT_MAGNIFICATION_FILTER,this.show=t.show??!0,this._minimumTerrainLevel=t.minimumTerrainLevel,this._maximumTerrainLevel=t.maximumTerrainLevel,this._rectangle=t.rectangle??ae.MAX_VALUE,this._maximumAnisotropy=t.maximumAnisotropy,this._imageryCache={},this._skeletonPlaceholder=new dT(fT.createPlaceholder(this)),this._show=!0,this._layerIndex=-1,this._isBaseLayer=!1,this._requestImageError=void 0,this._reprojectComputeCommands=[],this.cutoutRectangle=t.cutoutRectangle,this.colorToAlpha=t.colorToAlpha,this.colorToAlphaThreshold=t.colorToAlphaThreshold??Ni.DEFAULT_APPLY_COLOR_TO_ALPHA_THRESHOLD}Object.defineProperties(Ni.prototype,{imageryProvider:{get:function(){return this._imageryProvider}},ready:{get:function(){return l(this._imageryProvider)}},errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},rectangle:{get:function(){return this._rectangle}}});Ni.DEFAULT_BRIGHTNESS=1;Ni.DEFAULT_CONTRAST=1;Ni.DEFAULT_HUE=0;Ni.DEFAULT_SATURATION=1;Ni.DEFAULT_GAMMA=1;Ni.DEFAULT_SPLIT=br.NONE;Ni.DEFAULT_MINIFICATION_FILTER=Zt.LINEAR;Ni.DEFAULT_MAGNIFICATION_FILTER=mi.LINEAR;Ni.DEFAULT_APPLY_COLOR_TO_ALPHA_THRESHOLD=.004;Ni.fromProviderAsync=function(e,t){let n=new Ni(void 0,t);return V6e(n,Promise.resolve(e)),n};Ni.fromWorldImagery=function(e){return e=e??V.EMPTY_OBJECT,Ni.fromProviderAsync(Kp({style:e.style}),e)};Ni.prototype.isBaseLayer=function(){return this._isBaseLayer};Ni.prototype.isDestroyed=function(){return!1};Ni.prototype.destroy=function(){return ue(this)};var Hue=new ae,zue=new ae,Hj=new ae,Wue=new ae;Ni.prototype.getImageryRectangle=function(){let e=this._imageryProvider,t=this._rectangle;return ae.intersection(e.rectangle,t)};Ni.prototype._createTileImagerySkeletons=function(e,t,n){let i=e.data;if(!l(t)||l(this._minimumTerrainLevel)&&e.level<this._minimumTerrainLevel||l(this._maximumTerrainLevel)&&e.level>this._maximumTerrainLevel)return!1;l(n)||(n=i.imagery.length);let o=this._imageryProvider;if(!this.ready)return this._skeletonPlaceholder.loadingImagery.addReference(),i.imagery.splice(n,0,this._skeletonPlaceholder),!0;let r=o.tilingScheme.projection instanceof zi&&e.rectangle.north<zi.MaximumLatitude&&e.rectangle.south>-zi.MaximumLatitude,s=ae.intersection(o.rectangle,this._rectangle,Hue),a=ae.intersection(e.rectangle,s,zue);if(!l(a)){if(!this.isBaseLayer())return!1;let T=s,w=e.rectangle;a=zue,w.south>=T.north?a.north=a.south=T.north:w.north<=T.south?a.north=a.south=T.south:(a.south=Math.max(w.south,T.south),a.north=Math.min(w.north,T.north)),w.west>=T.east?a.west=a.east=T.east:w.east<=T.west?a.west=a.east=T.west:(a.west=Math.max(w.west,T.west),a.east=Math.min(w.east,T.east))}let c=0;a.south>0?c=a.south:a.north<0&&(c=a.north);let f=1*t.getLevelMaximumGeometricError(e.level),h=G6e(this,f,c);h=Math.max(0,h);let A=o.maximumLevel;if(h>A&&(h=A),l(o.minimumLevel)){let T=o.minimumLevel;h<T&&(h=T)}let g=o.tilingScheme,m=g.positionToTileXY(ae.northwest(a),h),_=g.positionToTileXY(ae.southeast(a),h),y=e.rectangle.width/512,C=e.rectangle.height/512,E=g.tileXYToRectangle(m.x,m.y,h);Math.abs(E.south-e.rectangle.north)<C&&m.y<_.y&&++m.y,Math.abs(E.east-e.rectangle.west)<y&&m.x<_.x&&++m.x;let I=g.tileXYToRectangle(_.x,_.y,h);Math.abs(I.north-e.rectangle.south)<C&&_.y>m.y&&--_.y,Math.abs(I.west-e.rectangle.east)<y&&_.x>m.x&&--_.x;let b=ae.clone(e.rectangle,Wue),S=g.tileXYToRectangle(m.x,m.y,h),B=ae.intersection(S,s,Hj),v;r?(g.rectangleToNativeRectangle(b,b),g.rectangleToNativeRectangle(S,S),g.rectangleToNativeRectangle(B,B),g.rectangleToNativeRectangle(s,s),v=g.tileXYToNativeRectangle.bind(g),y=b.width/512,C=b.height/512):v=g.tileXYToRectangle.bind(g);let P,M=0,L=1,p;!this.isBaseLayer()&&Math.abs(B.west-b.west)>=y&&(M=Math.min(1,(B.west-b.west)/b.width)),!this.isBaseLayer()&&Math.abs(B.north-b.north)>=C&&(L=Math.max(0,(B.north-b.south)/b.height));let x=L;for(let T=m.x;T<=_.x;T++)if(P=M,S=v(T,m.y,h),B=ae.simpleIntersection(S,s,Hj),!!l(B)){M=Math.min(1,(B.east-b.west)/b.width),T===_.x&&(this.isBaseLayer()||Math.abs(B.east-b.east)<y)&&(M=1),L=x;for(let w=m.y;w<=_.y;w++){if(p=L,S=v(T,w,h),B=ae.simpleIntersection(S,s,Hj),!l(B))continue;L=Math.max(0,(B.south-b.south)/b.height),w===_.y&&(this.isBaseLayer()||Math.abs(B.south-b.south)<C)&&(L=0);let R=new se(P,L,M,p),O=this.getImageryFromCache(T,w,h);i.imagery.splice(n,0,new dT(O,R,r)),++n}}return!0};Ni.prototype._calculateTextureTranslationAndScale=function(e,t){let n=t.readyImagery.rectangle,i=e.rectangle;if(t.useWebMercatorT){let c=t.readyImagery.imageryLayer.imageryProvider.tilingScheme;n=c.rectangleToNativeRectangle(n,Hue),i=c.rectangleToNativeRectangle(i,Wue)}let o=i.width,r=i.height,s=o/n.width,a=r/n.height;return new se(s*(i.west-n.west)/o,a*(i.south-n.south)/r,s,a)};Ni.prototype._requestImagery=function(e){let t=this._imageryProvider,n=this;function i(s){if(!l(s))return o();e.image=s,e.state=qn.RECEIVED,e.request=void 0,Qo.reportSuccess(n._requestImageError)}function o(s){if(e.request.state===fi.CANCELLED){e.state=qn.UNLOADED,e.request=void 0;return}e.state=qn.FAILED,e.request=void 0;let a=`Failed to obtain image tile X: ${e.x} Y: ${e.y} Level: ${e.level}.`;n._requestImageError=Qo.reportError(n._requestImageError,t,t.errorEvent,a,e.x,e.y,e.level,s),n._requestImageError.retry&&r()}function r(){let s=new sr({throttle:!1,throttleByServer:!0,type:Ms.IMAGERY});e.request=s,e.state=qn.TRANSITIONING;let a=t.requestImage(e.x,e.y,e.level,s);if(!l(a)){e.state=qn.UNLOADED,e.request=void 0;return}l(t.getTileCredits)&&(e.credits=t.getTileCredits(e.x,e.y,e.level)),a.then(function(c){i(c)}).catch(function(c){o(c)})}r()};Ni.prototype._createTextureWebGL=function(e,t){let n=new on({minificationFilter:this.minificationFilter,magnificationFilter:this.magnificationFilter}),i=t.image;return l(i.internalFormat)?new Mt({context:e,pixelFormat:i.internalFormat,width:i.width,height:i.height,source:{arrayBufferView:i.bufferView},sampler:n}):new Mt({context:e,source:i,pixelFormat:this._imageryProvider.hasAlphaChannel?$e.RGBA:$e.RGB,sampler:n})};Ni.prototype._createTexture=function(e,t){let n=this._imageryProvider,i=t.image;if(l(n.tileDiscardPolicy)){let r=n.tileDiscardPolicy;if(l(r)){if(!r.isReady()){t.state=qn.RECEIVED;return}if(r.shouldDiscardImage(i)){t.state=qn.INVALID;return}}}let o=this._createTextureWebGL(e,t);n.tilingScheme.projection instanceof zi?t.textureWebMercator=o:t.texture=o,t.image=void 0,t.state=qn.TEXTURE_LOADED};function Vue(e,t,n){return`${e}:${t}:${n}`}Ni.prototype._finalizeReprojectTexture=function(e,t){let n=this.minificationFilter,i=this.magnificationFilter;if(n===Zt.LINEAR&&i===mi.LINEAR&&!$e.isCompressedFormat(t.pixelFormat)&&D.isPowerOfTwo(t.width)&&D.isPowerOfTwo(t.height)){n=Zt.LINEAR_MIPMAP_LINEAR;let r=Yt.maximumTextureFilterAnisotropy,s=Math.min(r,this._maximumAnisotropy??r),a=Vue(n,i,s),c=e.cache.imageryLayerMipmapSamplers;l(c)||(c={},e.cache.imageryLayerMipmapSamplers=c);let u=c[a];l(u)||(u=c[a]=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i,maximumAnisotropy:s})),t.generateMipmap(Kf.NICEST),t.sampler=u}else{let r=Vue(n,i,0),s=e.cache.imageryLayerNonMipmapSamplers;l(s)||(s={},e.cache.imageryLayerNonMipmapSamplers=s);let a=s[r];l(a)||(a=s[r]=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i})),t.sampler=a}};Ni.prototype._reprojectTexture=function(e,t,n){let i=t.textureWebMercator||t.texture,o=t.rectangle,r=e.context;if(n=n??!0,n&&!(this._imageryProvider.tilingScheme.projection instanceof Ui)&&o.width/i.width>1e-5){let s=this;t.addReference();let a=new Tl({persists:!0,owner:this,preExecute:function(c){U6e(c,r,i,t.rectangle)},postExecute:function(c){t.texture=c,s._finalizeReprojectTexture(r,c),t.state=qn.READY,t.releaseReference()},canceled:function(){t.state=qn.TEXTURE_LOADED,t.releaseReference()}});this._reprojectComputeCommands.push(a)}else n&&(t.texture=i),this._finalizeReprojectTexture(r,i),t.state=qn.READY};Ni.prototype.queueReprojectionCommands=function(e){let t=this._reprojectComputeCommands,n=t.length;for(let i=0;i<n;++i)e.commandList.push(t[i]);t.length=0};Ni.prototype.cancelReprojections=function(){this._reprojectComputeCommands.forEach(function(e){l(e.canceled)&&e.canceled()}),this._reprojectComputeCommands.length=0};Ni.prototype.getImageryFromCache=function(e,t,n,i){let o=jue(e,t,n),r=this._imageryCache[o];return l(r)||(r=new fT(this,e,t,n,i),this._imageryCache[o]=r),r.addReference(),r};Ni.prototype.removeImageryFromCache=function(e){let t=jue(e.x,e.y,e.level);delete this._imageryCache[t]};function jue(e,t,n){return JSON.stringify([e,t,n])}var nV={u_textureDimensions:function(){return this.textureDimensions},u_texture:function(){return this.texture},textureDimensions:new U,texture:void 0},k6e=Wt.supportsTypedArrays()?new Float32Array(128):void 0;function U6e(e,t,n,i){let o=t.cache.imageryLayer_reproject;if(!l(o)){o=t.cache.imageryLayer_reproject={vertexArray:void 0,shaderProgram:void 0,sampler:void 0,destroy:function(){l(this.framebuffer)&&this.framebuffer.destroy(),l(this.vertexArray)&&this.vertexArray.destroy(),l(this.shaderProgram)&&this.shaderProgram.destroy()}};let y=new Float32Array(256),C=0;for(let B=0;B<64;++B){let v=B/63;y[C++]=0,y[C++]=v,y[C++]=1,y[C++]=v}let E={position:0,webMercatorT:1},I=Ss.getRegularGridIndices(2,64),b=Ct.createIndexBuffer({context:t,typedArray:I,usage:Qe.STATIC_DRAW,indexDatatype:Oe.UNSIGNED_SHORT});o.vertexArray=new li({context:t,attributes:[{index:E.position,vertexBuffer:Ct.createVertexBuffer({context:t,typedArray:y,usage:Qe.STATIC_DRAW}),componentsPerAttribute:2},{index:E.webMercatorT,vertexBuffer:Ct.createVertexBuffer({context:t,sizeInBytes:512,usage:Qe.STREAM_DRAW}),componentsPerAttribute:1}],indexBuffer:b});let S=new He({sources:[AN]});o.shaderProgram=an.fromCache({context:t,vertexShaderSource:S,fragmentShaderSource:mN,attributeLocations:E}),o.sampler=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:mi.LINEAR})}n.sampler=o.sampler;let r=n.width,s=n.height;nV.textureDimensions.x=r,nV.textureDimensions.y=s,nV.texture=n;let a=Math.sin(i.south),c=.5*Math.log((1+a)/(1-a));a=Math.sin(i.north);let f=1/(.5*Math.log((1+a)/(1-a))-c),h=new Mt({context:t,width:r,height:s,pixelFormat:n.pixelFormat,pixelDatatype:n.pixelDatatype,preMultiplyAlpha:n.preMultiplyAlpha});D.isPowerOfTwo(r)&&D.isPowerOfTwo(s)&&h.generateMipmap(Kf.NICEST);let A=i.south,g=i.north,m=k6e,_=0;for(let y=0;y<64;++y){let C=y/63,E=D.lerp(A,g,C);a=Math.sin(E);let b=(.5*Math.log((1+a)/(1-a))-c)*f;m[_++]=b,m[_++]=b}o.vertexArray.getAttribute(1).vertexBuffer.copyFromArrayView(m),e.shaderProgram=o.shaderProgram,e.outputTexture=h,e.uniformMap=nV,e.vertexArray=o.vertexArray}function G6e(e,t,n){let i=e._imageryProvider,o=i.tilingScheme,r=o.ellipsoid,s=e._imageryProvider.tilingScheme.projection instanceof Ui?1:Math.cos(n),a=o.rectangle,u=r.maximumRadius*a.width*s/(i.tileWidth*o.getNumberOfXTilesAtLevel(0))/t,f=Math.log(u)/Math.log(2);return Math.round(f)|0}function z6e(e,t){e.numberOfListeners>0?e.raiseEvent(t):console.error(t)}async function V6e(e,t){let n;try{if(n=await Promise.resolve(t),e.isDestroyed())return;e._imageryProvider=n,e._readyEvent.raiseEvent(n)}catch(i){z6e(e._errorEvent,i)}}var rs=Ni;var Wj=class{constructor(){this.alpha=!1,this.brightness=!1,this.contrast=!1,this.hue=!1,this.saturation=!1,this.gamma=!1,this.colorToAlpha=!1}},pN=Wj;var jj=class{constructor(t,n,i,o){this._minX=t??0,this._minY=n??0,this._maxX=i??0,this._maxY=o??0}get minX(){return this._minX}set minX(t){this._minX=t}get minY(){return this._minY}set minY(t){this._minY=t}get maxX(){return this._maxX}set maxX(t){this._maxX=t}get maxY(){return this._maxY}set maxY(t){this._maxY=t}contains(t,n){return t>=this.minX&&t<this.maxX&&n>=this.minY&&n<this.maxY}containsExclusive(t,n){return t>this.minX&&t<this.maxX&&n>this.minY&&n<this.maxY}containsInclusive(t,n){return t>=this.minX&&t<=this.maxX&&n>=this.minY&&n<=this.maxY}},hT=jj;var H6e=new ae,Yue=new ae,W6e=new ae,j6e=new ae,Y6e=new ae,q6e=new ae,Yj=class e{constructor(t,n,i,o,r){this._x=t,this._y=n,this._level=i,this._textureCoordinateRectangle=o,this._imagery=r}get x(){return this._x}get y(){return this._y}get level(){return this._level}get textureCoordinateRectangle(){return this._textureCoordinateRectangle}get imagery(){return this._imagery}static createImageryCoverages(t,n,i){if(!n.show)return[];let o=n.imageryProvider,r=e._clampImageryLevel(o,i),s=ae.intersection(o.rectangle,n.rectangle,H6e),a=o.tilingScheme,c=e._computeImageryRange(t,s,a,r),u=j6e;a.rectangleToNativeRectangle(t,u);let f=Y6e;a.rectangleToNativeRectangle(s,f);let h=(g,m,_)=>{let y=a.tileXYToRectangle(g,m,_),C=ae.intersection(y,s,W6e);if(!l(C))return;let E=q6e;return a.rectangleToNativeRectangle(C,E),E};return e._computeImageryCoverages(n,c,r,u,h)}static _clampImageryLevel(t,n){let i=t.minimumLevel??0,o=t.maximumLevel??Number.POSITIVE_INFINITY,r=Math.min(o-1,Math.max(i,n));return Math.floor(r)}static _computeImageryRange(t,n,i,o){let r=e._computeOverlappedRectangle(t,n),s=i.positionToTileXY(ae.northwest(r),o),a=i.positionToTileXY(ae.southeast(r),o),c=new hT;c.minX=s.x,c.minY=s.y,c.maxX=a.x,c.maxY=a.y;let u=t.width/512,f=t.height/512,h=i.tileXYToRectangle(c.minX,c.minY,o);Math.abs(h.south-t.north)<f&&c.minY<c.maxY&&++c.minY,Math.abs(h.east-t.west)<u&&c.minX<c.maxX&&++c.minX;let m=i.tileXYToRectangle(c.maxX,c.maxY,o);return Math.abs(m.north-t.south)<f&&c.maxY>c.minY&&--c.maxY,Math.abs(m.west-t.east)<u&&c.maxX>c.minX&&--c.maxX,c}static _clampRectangle(t,n,i){return l(i)||(i=new ae),t.south>=n.north?i.north=i.south=n.north:t.north<=n.south?i.north=i.south=n.south:(i.south=Math.max(t.south,n.south),i.north=Math.min(t.north,n.north)),t.west>=n.east?i.west=i.east=n.east:t.east<=n.west?i.west=i.east=n.west:(i.west=Math.max(t.west,n.west),i.east=Math.min(t.east,n.east)),i}static _computeOverlappedRectangle(t,n){let i=ae.intersection(t,n,Yue);return l(i)?i:e._clampRectangle(t,n,Yue)}static _computeImageryCoverages(t,n,i,o,r){let s=[];for(let a=n.minX;a<=n.maxX;a++){let c=r(a,n.maxY,i);if(l(c))for(let u=n.minY;u<=n.maxY;u++){let f=r(a,u,i);if(!l(f))continue;let h=e._localizeToCartesianRectangle(f,o,void 0),A=t.getImageryFromCache(a,u,i),g=new e(a,u,i,h,A);s.push(g)}}return s}static _localizeToCartesianRectangle(t,n,i){l(i)||(i=new hT);let o=1/n.width,r=1/n.height;return i.minX=(t.west-n.west)*o,i.minY=(t.south-n.south)*r,i.maxX=(t.east-n.west)*o,i.maxY=(t.north-n.south)*r,i}},mT=Yj;var qj=class e{static readAttributeAsTypedArray(t){let n=e.readAttributeAsRawCompactTypedArray(t),i=t.normalized,o=t.quantization;if(!l(o)&&!i)return n;let r=t.type,s=t.count,a=n;return i&&(a=On.dequantize(n,t.componentDatatype,r,s)),l(o)?e.dequantize(a,s,r,o):a}static readAttributeAsRawCompactTypedArray(t){let n=t.type,i=t.count,o=zt.getNumberOfComponents(n),r=i*o,s=t.componentDatatype,a=t.quantization;l(a)&&(s=a.componentDatatype);let c=t.buffer,u=t.byteOffset,f=t.byteStride,h=q.getSizeInBytes(s),A=o*h;if(!l(f)||f===A){let I=q.createTypedArray(s,r);return c.getBufferData(I,u),I}let g=new Uint8Array(c.sizeInBytes);c.getBufferData(g);let m=q.createTypedArray(s,r),_=f??A,y=new DataView(g.buffer,g.byteOffset,g.byteLength),C=new Array(o),E=e.createComponentsReader(s);for(let I=0;I<i;++I){let b=u+I*_;E(y,b,o,C);for(let S=0;S<o;++S)m[I*o+S]=C[S]}return m}static dequantize(t,n,i,o){if(o.octEncoded){let a=e.octDecode(t,n,o.normalizationRange,void 0);return o.octEncodedZXY&&e.convertZxyToXyz(a,a),a}let r=o.quantizedVolumeStepSize,s=o.quantizedVolumeOffset;if(i===zt.SCALAR)return e.dequantize1D(t,n,r,s,void 0);if(i===zt.VEC2)return e.dequantize2D(t,n,r,s,void 0);if(i===zt.VEC3)return e.dequantize3D(t,n,r,s,void 0);if(i===zt.VEC4)return e.dequantize4D(t,n,r,s,void 0);throw new me(`Element type for dequantization must be SCALAR, VEC2, VEC3, or VEC4, but is ${i}`)}static octDecode(t,n,i,o){l(o)||(o=new Float32Array(t.length));let r=new d;for(let s=0;s<n;s++)d.unpack(t,s*3,r),On.octDecodeInRange(r,i,r),d.pack(o,r,s*3);return o}static convertZxyToXyz(t,n,i){l(i)||(i=new Float32Array(t.length));let o=0;for(let r=0;r<n;r++,o+=3){let s=t[o+0],a=t[o+1],c=t[o+2];i[o+0]=a,i[o+1]=c,i[o+2]=s}return i}static dequantize1D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));for(let s=0;s<n;s++){let c=t[s]*i+o;r[s]=c}return r}static dequantize2D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new U;for(let a=0;a<n;a++)U.unpack(t,a*2,s),U.multiplyComponents(s,i,s),U.add(s,o,s),U.pack(s,r,a*2);return r}static dequantize3D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new d;for(let a=0;a<n;a++)d.unpack(t,a*3,s),d.multiplyComponents(s,i,s),d.add(s,o,s),d.pack(s,r,a*3);return r}static dequantize4D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new se;for(let a=0;a<n;a++)se.unpack(t,a*4,s),se.multiplyComponents(s,i,s),se.add(s,o,s),se.pack(s,r,a*4);return r}static createComponentsReader(t){let n=e.createComponentReader(t),i=q.getSizeInBytes(t);return function(o,r,s,a){let c=r;for(let u=0;u<s;++u)a[u]=n(o,c),c+=i}}static createComponentReader(t){switch(t){case q.BYTE:return function(n,i){return n.getInt8(i)};case q.UNSIGNED_BYTE:return function(n,i){return n.getUint8(i)};case q.SHORT:return function(n,i){return n.getInt16(i,!0)};case q.UNSIGNED_SHORT:return function(n,i){return n.getUint16(i,!0)};case q.INT:return function(n,i){return n.getInt32(i,!0)};case q.UNSIGNED_INT:return function(n,i){return n.getUint32(i,!0)};case q.FLOAT:return function(n,i){return n.getFloat32(i,!0)};case q.DOUBLE:return function(n,i){return n.getFloat64(i,!0)}}throw new me(`The componentType must be a valid ComponentDatatype, but is ${t}`)}static transform3D(t,n,i){l(i)||(i=new Float32Array(t.length));let o=new d,r=t.length/3;for(let s=0;s<r;s++)d.unpack(t,s*3,o),N.multiplyByPoint(n,o,o),d.pack(o,i,s*3);return i}static readIndicesAsTypedArray(t){let n=t.typedArray;if(l(n))return n;let i=t.buffer,o=t.count,r=t.indexDatatype,s=e.createIndexTypedArray(r,o);return i.getBufferData(s),s}static readIndicesAsTriangleIndicesTypedArray(t,n){let i=e.readIndicesAsTypedArray(t);if(n===Me.TRIANGLES)return i;if(n===Me.TRIANGLE_STRIP)return e.convertTriangleStripToTriangleIndices(i);if(n===Me.TRIANGLE_FAN)return e.convertTriangleFanToTriangleIndices(i);throw new me(`The primitiveType must be TRIANGLES (${Me.TRIANGLES}, TRIANGLE_STRIP (${Me.TRIANGLE_STRIP}, or TRIANGLE_FAN (${Me.TRIANGLE_FAN}, but is ${n}`)}static convertTriangleStripToTriangleIndices(t){let n=t.constructor((t.length-2)*3);for(let i=0;i<t.length-2;i++)i%2===1?(n[i*3+0]=t[i+0],n[i*3+1]=t[i+2],n[i*3+2]=t[i+1]):(n[i*3+0]=t[i+0],n[i*3+1]=t[i+1],n[i*3+2]=t[i+2]);return n}static convertTriangleFanToTriangleIndices(t){let n=t.constructor((t.length-2)*3);for(let i=0;i<t.length-2;i++)n[i*3+0]=t[i+0],n[i*3+1]=t[i+1],n[i*3+2]=t[i+2];return n}static createIndexTypedArray(t,n){switch(t){case Oe.UNSIGNED_BYTE:return new Uint8Array(n);case Oe.UNSIGNED_SHORT:return new Uint16Array(n);case Oe.UNSIGNED_INT:return new Uint32Array(n)}throw new me(`The indexDatatype must be UNSIGNED_BYTE (${Oe.UNSIGNED_BYTE}, UNSIGNED_SHORT (${Oe.UNSIGNED_SHORT}, or UNSIGNED_INT (${Oe.UNSIGNED_INT}, but is ${t}`)}},gN=qj;var Kj=class e{static createTextureCoordinatesForMappedPositions(t,n){let i=t.cartographicPositions,o=t.cartographicBoundingRectangle,r=t.numPositions;return e._createTextureCoordinates(i,r,o,n)}static _createTextureCoordinates(t,n,i,o){let r=new Ye;Ye.fromRectangle(i,o,r);let s=e.createProjectedPositions(t,o),a=e.computeTexCoords(s,r);return e.createTypedArrayFromCartesians2(n,a)}static createTextureCoordinatesAttributeForMappedPositions(t,n){let i=e.createTextureCoordinatesForMappedPositions(t,n);return e.createTexCoordAttribute(i)}static createCartographicPositions(t,n,i){let o=gN.readAttributeAsTypedArray(t),r=t.type,s=zt.getNumberOfComponents(r),a=e.createIterableCartesian3FromTypedArray(o,s),c=e.transformCartesians3(a,n);return e.transformToCartographic(c,i)}static createIterableCartesian3FromTypedArray(t,n){let i=new d,o=t.length/n;return{[Symbol.iterator]:function*(){for(let s=0;s<o;s++)i.x=t[s*n+0],i.y=t[s*n+1],i.z=t[s*n+2],yield i}}}static map(t,n){return{[Symbol.iterator]:function*(){for(let o of t)yield n(o)}}}static computeCartographicBoundingRectangle(t,n){l(n)||(n=new ae);let i=Number.NEGATIVE_INFINITY,o=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY;for(let a of t)i=Math.max(i,a.latitude),o=Math.min(o,a.latitude),r=Math.max(r,a.longitude),s=Math.min(s,a.longitude);return n.north=i,n.south=o,n.east=r,n.west=s,n}static transformCartesians3(t,n){let i=new d;return e.map(t,r=>(N.multiplyByPoint(n,r,i),i))}static transformToCartographic(t,n){let i=new Ae;return e.map(t,r=>(n.cartesianToCartographic(r,i),i))}static createProjectedPositions(t,n){let i=new d;return e.map(t,r=>(n.project(r,i),i))}static computeTexCoords(t,n){let i=new U,o=1/n.width,r=1/n.height;return e.map(t,a=>{let c=(a.x-n.x)*o,u=(a.y-n.y)*r,f=Math.min(Math.max(c,0),1),h=Math.min(Math.max(u,0),1);return i.x=f,i.y=h,i})}static createTypedArrayFromCartesians2(t,n){let i=new Float32Array(t*2),o=0;for(let r of n)i[o*2+0]=r.x,i[o*2+1]=r.y,o++;return i}static createTexCoordAttribute(t){return{name:"Imagery Texture Coordinates",semantic:at.TEXCOORD,setIndex:0,componentDatatype:q.FLOAT,type:zt.VEC2,normalized:!1,count:t.length/2,min:void 0,max:void 0,constant:new U(0,0),quantization:void 0,typedArray:t,byteOffset:0,byteStride:void 0}}},u0=Kj;var Xj=class{constructor(t,n,i,o){this._cartographicPositions=t,this._numPositions=n,this._cartographicBoundingRectangle=i,this._ellipsoid=o}get cartographicPositions(){return this._cartographicPositions}get numPositions(){return this._numPositions}get cartographicBoundingRectangle(){return this._cartographicBoundingRectangle}get ellipsoid(){return this._ellipsoid}},_N=Xj;var Jj=class e{constructor(t,n,i){this._model=t,this._runtimeNode=n,this._runtimePrimitive=i,this._mappedPositionsPerEllipsoid=void 0,this._mappedPositionsModelMatrix=new N,this._lastImageryLayersModificationCounter=0,this._imageryTexCoordAttributesPerProjection=void 0,this._currentImageryLayers=void 0,this._coveragesPerLayer=void 0,this._allImageriesReady=!1}coveragesForImageryLayer(t){let o=this._model.imageryLayers.indexOf(t);if(o===-1)throw new me("Imagery layer is not part of the model");let r=this._coveragesPerLayer;if(!l(r))throw new me("The coveragesPerLayer have not been computed yet");return r[o]}update(t){let n=this._model,r=n.content.tileset.imageryLayersModificationCounter;this._lastImageryLayersModificationCounter!==r&&(delete this._mappedPositionsPerEllipsoid,this._lastImageryLayersModificationCounter=r),this._mappedPositionsNeedUpdate&&(n.resetDrawCommands(),this._mappedPositionsPerEllipsoid=this._computeMappedPositionsPerEllipsoid(),this._deleteCoveragesPerLayer(),this._destroyImageryTexCoordAttributes()),l(this._imageryTexCoordAttributesPerProjection)||(this._imageryTexCoordAttributesPerProjection=this._computeImageryTexCoordsAttributesPerProjection(),this._uploadImageryTexCoordAttributes(t.context)),l(this._coveragesPerLayer)||(this._computeCoveragesPerLayer(),this._allImageriesReady=!1),this._allImageriesReady||this._updateImageries(t)}_deleteCoveragesPerLayer(){let t=this._coveragesPerLayer;if(!l(t))return;let n=this._currentImageryLayers,i=t.length;for(let o=0;o<i;o++){let r=n[o],s=t[o];this._deleteCoverages(r,s)}delete this._currentImageryLayers,delete this._coveragesPerLayer}_deleteCoverages(t,n){if(t.isDestroyed())return;let i=n.length;for(let o=0;o<i;o++)n[o].imagery.releaseReference()}_uploadImageryTexCoordAttributes(t){let n=this._imageryTexCoordAttributesPerProjection;if(!l(n))return;let i=n.length;for(let o=0;o<i;o++){let r=n[o],s=Ct.createVertexBuffer({context:t,typedArray:r.typedArray,usage:Qe.STATIC_DRAW});s.vertexArrayDestroyable=!1,r.buffer=s}}_destroyImageryTexCoordAttributes(){let t=this._imageryTexCoordAttributesPerProjection;if(!l(t))return;let n=t.length;for(let i=0;i<n;i++){let o=t[i];l(o)&&(l(o.buffer)&&(o.buffer.isDestroyed()||o.buffer.destroy()),t[i]=void 0)}delete this._imageryTexCoordAttributesPerProjection}get _mappedPositionsNeedUpdate(){if(!l(this._mappedPositionsPerEllipsoid))return!0;let t=this._model,n=this._mappedPositionsModelMatrix;return!N.equals(t.modelMatrix,n)}_computeMappedPositionsPerEllipsoid(){let t=this._model,n=this._runtimeNode,i=this._runtimePrimitive,o=e._obtainPrimitivePositionAttribute(i.primitive),r=o.count,s=e._computePrimitivePositionTransform(t,n,void 0),a=[],c=e._computeUniqueEllipsoids(t.imageryLayers),u=c.length;for(let f=0;f<u;f++){let h=c[f],A=u0.createCartographicPositions(o,s,h),g=u0.computeCartographicBoundingRectangle(A),m=new _N(A,r,g,h);a.push(m)}return N.clone(t.modelMatrix,this._mappedPositionsModelMatrix),a}static _computeUniqueEllipsoids(t){let n=new Set,i=t.length;for(let o=0;o<i;o++){let r=t.get(o),s=e._getEllipsoid(r);n.add(s)}return[...n]}_computeImageryTexCoordsAttributesPerProjection(){let n=this._model.imageryLayers,i=e._extractProjections(n),o=[...new Set(i)];return this._createImageryTexCoordAttributes(o)}static _extractProjections(t){let n=[],i=t.length;for(let o=0;o<i;o++){let r=t.get(o),s=e._getProjection(r);n.push(s)}return n}static _getProjection(t){return t.imageryProvider.tilingScheme.projection}_createImageryTexCoordAttributes(t){let n=[],i=t.length;for(let o=0;o<i;o++){let r=t[o],s=r.ellipsoid,a=this.mappedPositionsForEllipsoid(s),c=u0.createTextureCoordinatesAttributeForMappedPositions(a,r);n.push(c)}return n}_computeCoveragesPerLayer(){let t=[],n=[],o=this._model.imageryLayers,r=o.length;for(let s=0;s<r;s++){let a=o.get(s),c=this._computeCoverage(a);t.push(c),n.push(a)}this._coveragesPerLayer=t,this._currentImageryLayers=n}_computeCoverage(t){let i=this.mappedPositionsForImageryLayer(t).cartographicBoundingRectangle,o=this._computeImageryLevel(t,i);return mT.createImageryCoverages(i,t,o)}_computeImageryLevel(t,n){let i=t.imageryProvider,r=i.tilingScheme.rectangle,s=1,a=n.width,c=r.width;n.height>n.width&&(a=n.height,c=r.height);let u=Math.log2(s*c/a);return mT._clampImageryLevel(i,u)}_updateImageries(t){let n=this._model,i=this._coveragesPerLayer,o=i.length,r=!0;for(let s=0;s<o;s++){let a=i[s],c=a.length;for(let u=0;u<c;u++){let h=a[u].imagery;h.state===qn.READY||h.state===qn.FAILED||h.state===qn.INVALID||(r=!1,h.processStateMachine(t,!1,!1))}}r&&n.resetDrawCommands(),this._allImageriesReady=r}mappedPositionsForImageryLayer(t){let n=e._getEllipsoid(t);return this.mappedPositionsForEllipsoid(n)}mappedPositionsForEllipsoid(t){let n=this._mappedPositionsPerEllipsoid;if(!l(n))throw new me("The mappedPositions have not been computed yet");let i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.ellipsoid===t)return r}throw new me(`Could not find mapped positions for ellipsoid ${t}`)}imageryTexCoordAttributesPerProjection(){let t=this._imageryTexCoordAttributesPerProjection;if(!l(t))throw new me("The imagery texture coordinate attributes have not been computed yet");return this._imageryTexCoordAttributesPerProjection}get ready(){let t=this._coveragesPerLayer;return l(t)?this._allImageriesReady:!1}isDestroyed(){return!1}destroy(){if(!this.isDestroyed())return this._deleteCoveragesPerLayer(),this._destroyImageryTexCoordAttributes(),ue(this)}static _computePrimitivePositionTransform(t,n,i){l(i)||(i=new N);let o=t.sceneGraph;return N.clone(N.IDENTITY,i),N.multiply(i,t.modelMatrix,i),N.multiply(i,o.components.transform,i),N.multiply(i,o.axisCorrectionMatrix,i),N.multiply(i,n.computedTransform,i),i}static _obtainPrimitivePositionAttribute(t){let n=Ot.getAttributeBySemantic(t,"POSITION");if(!l(n))throw new me("The primitive does not have a POSITION attribute");return n}static _getEllipsoid(t){return t.imageryProvider.tilingScheme.projection.ellipsoid}},f0=Jj;var Zj=class{constructor(t,n,i,o,r){this.imageryLayer=t,this.texture=n,this.textureTranslationAndScale=i,this.textureCoordinateRectangle=o,this.imageryTexCoordAttributeSetIndex=r}},yN=Zj;var K6e=!1,X6e=new ae,J6e=new ae,$j=class e{static process(t,n,i){let o=t.model,r=n.modelPrimitiveImagery;if(!l(r)||!r.ready)return;let s=o.imageryLayers,a=f0._extractProjections(s),c=[...new Set(a)],u=e._computeIndexMapping(a,c),f=e._createImageryInputs(s,r,u);if(f.length===0)return;f.length>10&&(yt("imagery-texture-units",`Warning: Draped imagery requires ${f.length} texture units, truncating`),f.length=10),e._addImageryTexCoordAttributesToRenderResources(r,t);let h=[];for(let A=0;A<s.length;A++)h.push(s.get(A));e._processImageryInputs(h,t,f,c.length)}static _addImageryTexCoordAttributesToRenderResources(t,n){let i=t.imageryTexCoordAttributesPerProjection();for(let o of i)e._addImageryTexCoordAttributeToRenderResources(o,n)}static _addImageryTexCoordAttributeToRenderResources(t,n){let i=zt.getNumberOfComponents(t.type),o={index:n.attributeIndex++,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,count:t.count,componentsPerAttribute:i,componentDatatype:t.componentDatatype,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};n.attributes.push(o)}static _processImageryInputs(t,n,i,o){let r=n.shaderBuilder,s=e._computeImageryFlags(t),a=i.length;r.addDefine("HAS_IMAGERY"),r.addDefine(`IMAGERY_TEXTURE_UNITS ${a}`),e._addAttributes(r,o),e._defineUniforms(r,s),e._buildSampleAndBlendFunction(r,s),e._createMainImageryShader(r,i,s);let c=n.uniformMap,u=e._createImageryUniforms(i);e._setImageryUniforms(c,u)}static _addAttributes(t,n){for(let r=0;r<n;r++)t.addAttribute("vec2",`a_imagery_texCoord_${r}`),t.addVarying("vec2",`v_imagery_texCoord_${r}`);let i="initializeImageryAttributes",o=`void ${i}()`;t.addFunction(i,o,pe.VERTEX);for(let r=0;r<n;r++)t.addFunctionLines(i,[`v_imagery_texCoord_${r} = a_imagery_texCoord_${r};`])}static _computeImageryFlags(t){let n=new pN;for(let i=0;i<t.length;i++){let o=t[i];n.alpha|=o.alpha!==1,n.brightness|=o.brightness!==rs.DEFAULT_BRIGHTNESS,n.contrast|=o.contrast!==rs.DEFAULT_CONTRAST,n.hue|=o.hue!==rs.DEFAULT_HUE,n.saturation|=o.saturation!==rs.DEFAULT_SATURATION,n.gamma|=o.gamma!==rs.DEFAULT_GAMMA;let r=l(o.colorToAlpha)&&o.colorToAlphaThreshold>0;n.colorToAlpha|=r}return n}static _defineUniforms(t,n){t.addUniform("sampler2D","u_imageryTextures[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),t.addUniform("vec4","u_imageryTextureCoordinateRectangle[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),t.addUniform("vec4","u_imageryTextureTranslationAndScale[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.alpha&&t.addUniform("float","u_imageryTextureAlpha[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.brightness&&t.addUniform("float","u_imageryTextureBrightness[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.contrast&&t.addUniform("float","u_imageryTextureContrast[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.hue&&t.addUniform("float","u_imageryTextureHue[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.saturation&&t.addUniform("float","u_imageryTextureSaturation[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.gamma&&t.addUniform("float","u_imageryTextureOneOverGamma[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.colorToAlpha&&t.addUniform("vec4","u_imageryTextureColorToAlpha[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT)}static _createSampleAndBlendFunctionSignature(t){let n="sampleAndBlend",i=[];i.push("vec4 previousColor"),i.push("sampler2D textureToSample"),i.push("vec2 textureCoordinates"),i.push("vec4 textureCoordinateRectangle"),i.push("vec4 textureCoordinateTranslationAndScale"),t.alpha&&i.push("float textureAlpha"),t.brightness&&i.push("float textureBrightness"),t.contrast&&i.push("float textureContrast"),t.hue&&i.push("float textureHue"),t.saturation&&i.push("float textureSaturation"),t.gamma&&i.push("float textureOneOverGamma"),t.colorToAlpha&&i.push("vec4 colorToAlpha");let o=i.join(", ");return`vec4 ${n}(${o})`}static _buildSampleAndBlendFunction(t,n){let i="sampleAndBlend",o=e._createSampleAndBlendFunctionSignature(n);t.addFunction(i,o,pe.FRAGMENT),t.addFunctionLines(i,["float effectiveAlpha = 1.0;"]),n.alpha&&t.addFunctionLines(i,["effectiveAlpha = textureAlpha;"]),t.addFunctionLines(i,["if (textureCoordinates.x < textureCoordinateRectangle.x) effectiveAlpha = 0.0;","if (textureCoordinates.x > textureCoordinateRectangle.z) effectiveAlpha = 0.0;","if (textureCoordinates.y < textureCoordinateRectangle.y) effectiveAlpha = 0.0;","if (textureCoordinates.y > textureCoordinateRectangle.w) effectiveAlpha = 0.0;","vec2 translation = textureCoordinateTranslationAndScale.xy;","vec2 scale = textureCoordinateTranslationAndScale.zw;","vec2 effectiveTextureCoordinates = textureCoordinates * scale + translation;","vec4 value = texture(textureToSample, effectiveTextureCoordinates);","value = czm_srgbToLinear(value);","vec3 color = value.rgb;","float alpha = value.a;"]),n.colorToAlpha&&t.addFunctionLines(i,["vec3 colorDiff = abs(color.rgb - colorToAlpha.rgb);","colorDiff.r = czm_maximumComponent(colorDiff);","alpha = czm_branchFreeTernary(colorDiff.r < colorToAlpha.a, 0.0, alpha);"]),n.gamma?t.addFunctionLines(i,["color = pow(color, vec3(textureOneOverGamma));"]):t.addFunctionLines(i,["vec4 tempColor = czm_gammaCorrect(vec4(color, alpha));","color = tempColor.rgb;","alpha = tempColor.a;"]),n.brightness&&t.addFunctionLines(i,["color = mix(vec3(0.0), color, textureBrightness);"]),n.contrast&&t.addFunctionLines(i,["color = mix(vec3(0.5), color, textureContrast);"]),n.hue&&t.addFunctionLines(i,["color = czm_hue(color, textureHue);"]),n.saturation&&t.addFunctionLines(i,["color = czm_saturation(color, textureSaturation);"]),t.addFunctionLines(i,["float sourceAlpha = alpha * effectiveAlpha;","float outAlpha = mix(previousColor.a, 1.0, sourceAlpha);","outAlpha += sign(outAlpha) - 1.0;","vec3 outColor = mix(previousColor.rgb * previousColor.a, color, sourceAlpha) / outAlpha;","vec4 result = vec4(outColor, max(outAlpha, 0.0));"]),K6e&&t.addFunctionLines(i,["if (abs(textureCoordinates.x - textureCoordinateRectangle.x) < (1.0/256.0) || "," abs(textureCoordinates.x - textureCoordinateRectangle.z) < (1.0/256.0) || "," abs(textureCoordinates.y - textureCoordinateRectangle.y) < (1.0/256.0) || "," abs(textureCoordinates.y - textureCoordinateRectangle.w) < (1.0/256.0))","{"," result = vec4(1.0, 0.0, 0.0, effectiveAlpha);","}"]),t.addFunctionLines(i,["return result;"])}static _createSampleAndBlendCallArguments(t,n,i){let o=`v_imagery_texCoord_${n}`,r=[];return r.push("blendedBaseColor"),r.push(`u_imageryTextures[${i}]`),r.push(`${o}`),r.push(`u_imageryTextureCoordinateRectangle[${i}]`),r.push(`u_imageryTextureTranslationAndScale[${i}]`),t.alpha&&r.push(`u_imageryTextureAlpha[${i}]`),t.brightness&&r.push(`u_imageryTextureBrightness[${i}]`),t.contrast&&r.push(`u_imageryTextureContrast[${i}]`),t.hue&&r.push(`u_imageryTextureHue[${i}]`),t.saturation&&r.push(`u_imageryTextureSaturation[${i}]`),t.gamma&&r.push(`u_imageryTextureOneOverGamma[${i}]`),t.colorToAlpha&&r.push(`u_imageryTextureColorToAlpha[${i}]`),r.join(", ")}static _createMainImageryShader(t,n,i){let o="blendBaseColorWithImagery";t.addFunction(o,"vec4 blendBaseColorWithImagery(vec4 baseColorWithAlpha)",pe.FRAGMENT),t.addFunctionLines(o,["vec4 blendedBaseColor = baseColorWithAlpha;"]);for(let r=0;r<n.length;r++){let a=n[r].imageryTexCoordAttributeSetIndex,c=e._createSampleAndBlendCallArguments(i,a,r);t.addFunctionLines(o,[`blendedBaseColor = sampleAndBlend(${c});`])}t.addFunctionLines(o,["return blendedBaseColor;"])}static _createImageryUniforms(t){let n=t.length,i={};i.imageryTextures=Array(n),i.imageryTextureCoordinateRectangle=Array(n),i.imageryTextureTranslationAndScale=Array(n),i.imageryTextureAlpha=Array(n),i.imageryTextureBrightness=Array(n),i.imageryTextureContrast=Array(n),i.imageryTextureHue=Array(n),i.imageryTextureSaturation=Array(n),i.imageryTextureOneOverGamma=Array(n),i.imageryTextureColorToAlpha=Array(n);for(let o=0;o<n;o++){let r=t[o],s=r.imageryLayer,a=r.texture,c=r.textureCoordinateRectangle,u=r.textureTranslationAndScale;i.imageryTextures[o]=a,i.imageryTextureTranslationAndScale[o]=u,i.imageryTextureCoordinateRectangle[o]=c,i.imageryTextureAlpha[o]=s.alpha,i.imageryTextureBrightness[o]=s.brightness,i.imageryTextureContrast[o]=s.contrast,i.imageryTextureHue[o]=s.hue,i.imageryTextureSaturation[o]=s.saturation,i.imageryTextureOneOverGamma[o]=1/s.gamma;let f=i.imageryTextureColorToAlpha[o];if(l(f)||(f=new se,i.imageryTextureColorToAlpha[o]=f),l(s.colorToAlpha)&&s.colorToAlphaThreshold>0){let A=s.colorToAlpha;f.x=A.red,f.y=A.green,f.z=A.blue,f.w=s.colorToAlphaThreshold}else f.w=-1}return i}static _setImageryUniforms(t,n){for(let i in n)if(n.hasOwnProperty(i)){let o=`u_${i}`;t[o]=function(){return n[i]}}}static _createImageryInputs(t,n,i){let o=[];for(let r=0;r<t.length;r++){let s=t.get(r);if(!s.show)continue;let a=i[r],u=n.mappedPositionsForImageryLayer(s).cartographicBoundingRectangle,f=n.coveragesForImageryLayer(s);for(let h=0;h<f.length;h++){let A=f[h],g=e._createImageryInput(s,A,u,a);l(g)&&o.push(g)}}return o}static _createImageryInput(t,n,i,o){let r=n.imagery;if(r.state===qn.FAILED||r.state===qn.INVALID)return;let s=r.textureWebMercator;if(!l(s)&&(s=r.texture,!l(s))){r.state===qn.READY&&console.log(`Imagery at ${n.x}, ${n.y} (level ${n.level}) does not have any texture - state ${r.state}`);return}let a=e._computeTextureTranslationAndScale(t,i,r.rectangle),c=n.textureCoordinateRectangle,u=new se(c.minX,c.minY,c.maxX,c.maxY);return new yN(t,s,a,u,o)}static _computeTextureTranslationAndScale(t,n,i){let o=t.imageryProvider.tilingScheme,r=o.rectangleToNativeRectangle(n,X6e),s=o.rectangleToNativeRectangle(i,J6e);return e._computeTextureTranslationAndScaleFromNative(r,s)}static _computeTextureTranslationAndScaleFromNative(t,n){let i=1/n.width,o=1/n.height,r=t.west-n.west,s=t.south-n.south,a=r*i,c=s*o,u=t.width*i,f=t.height*o;return new se(a,c,u,f)}static _computeIndexMapping(t,n){let i=[],o=t.length;for(let r=0;r<o;r++){let s=t[r],a=n.indexOf(s);i.push(a)}return i}},CN=$j;var EN=`#ifdef USE_IBL_LIGHTING +vec3 computeIBL(vec3 position, vec3 normal, vec3 lightDirection, vec3 lightColorHdr, czm_modelMaterial material) +{ + #if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL) + // Environment maps were provided, use them for IBL + vec3 viewDirection = -normalize(position); + vec3 iblColor = textureIBL(viewDirection, normal, material); + return iblColor; + #endif + + return vec3(0.0); +} +#endif + +#ifdef USE_CLEARCOAT +vec3 addClearcoatReflection(vec3 baseLayerColor, vec3 position, vec3 lightDirection, vec3 lightColorHdr, czm_modelMaterial material) +{ + vec3 viewDirection = -normalize(position); + vec3 halfwayDirection = normalize(viewDirection + lightDirection); + vec3 normal = material.clearcoatNormal; + float NdotL = clamp(dot(normal, lightDirection), 0.001, 1.0); + + // clearcoatF0 = vec3(pow((ior - 1.0) / (ior + 1.0), 2.0)), but without KHR_materials_ior, ior is a constant 1.5. + vec3 f0 = vec3(0.04); + vec3 f90 = vec3(1.0); + // Note: clearcoat Fresnel computed with dot(n, v) instead of dot(v, h). + // This is to make it energy conserving with a simple layering function. + float NdotV = clamp(dot(normal, viewDirection), 0.0, 1.0); + vec3 F = fresnelSchlick2(f0, f90, NdotV); + + // compute specular reflection from direct lighting + float roughness = material.clearcoatRoughness; + float alphaRoughness = roughness * roughness; + float directStrength = computeDirectSpecularStrength(normal, lightDirection, viewDirection, halfwayDirection, alphaRoughness); + vec3 directReflection = F * directStrength * NdotL; + vec3 color = lightColorHdr * directReflection; + + #ifdef SPECULAR_IBL + // Find the direction in which to sample the environment map + vec3 reflectMC = normalize(model_iblReferenceFrameMatrix * reflect(-viewDirection, normal)); + vec3 iblColor = computeSpecularIBL(reflectMC, NdotV, f0, roughness); + color += iblColor * material.occlusion; + #endif + + float clearcoatFactor = material.clearcoatFactor; + vec3 clearcoatColor = color * clearcoatFactor; + + // Dim base layer based on transmission loss through clearcoat + return baseLayerColor * (1.0 - clearcoatFactor * F) + clearcoatColor; +} +#endif + +#if defined(LIGHTING_PBR) && defined(HAS_NORMALS) +vec3 computePbrLighting(in czm_modelMaterial material, in vec3 position) +{ + #ifdef USE_CUSTOM_LIGHT_COLOR + vec3 lightColorHdr = model_lightColorHdr; + #else + vec3 lightColorHdr = czm_lightColorHdr; + #endif + + vec3 viewDirection = -normalize(position); + vec3 normal = material.normalEC; + vec3 lightDirection = normalize(czm_lightDirectionEC); + + vec3 directLighting = czm_pbrLighting(viewDirection, normal, lightDirection, material); + vec3 directColor = lightColorHdr * directLighting; + + // Accumulate colors from base layer + vec3 color = directColor + material.emissive; + #ifdef USE_IBL_LIGHTING + color += computeIBL(position, normal, lightDirection, lightColorHdr, material); + #endif + + #ifdef USE_CLEARCOAT + color = addClearcoatReflection(color, position, lightDirection, lightColorHdr, material); + #endif + + return color; +} +#endif + +/** + * Compute the material color under the current lighting conditions. + * All other material properties are passed through so further stages + * have access to them. + * + * @param {czm_modelMaterial} material The material properties from {@MaterialStageFS} + * @param {ProcessedAttributes} attributes + */ +void lightingStage(inout czm_modelMaterial material, ProcessedAttributes attributes) +{ + #ifdef LIGHTING_PBR + #ifdef HAS_NORMALS + vec3 color = computePbrLighting(material, attributes.positionEC); + #else + vec3 color = material.diffuse * material.occlusion + material.emissive; + #endif + // In HDR mode, the frame buffer is in linear color space. The + // post-processing stages (see PostProcessStageCollection) will handle + // tonemapping. However, if HDR is not enabled, we must tonemap else large + // values may be clamped to 1.0 + #ifndef HDR + color = czm_pbrNeutralTonemapping(color); + #endif + #else // unlit + vec3 color = material.diffuse; + #endif + + #ifdef HAS_POINT_CLOUD_COLOR_STYLE + // The colors resulting from point cloud styles are adjusted differently. + color = czm_gammaCorrect(color); + #elif !defined(HDR) + // If HDR is not enabled, the frame buffer stores sRGB colors rather than + // linear colors so the linear value must be converted. + color = czm_linearToSrgb(color); + #endif + + material.diffuse = color; +} +`;var Z6e={UNLIT:0,PBR:1},nA=Object.freeze(Z6e);var que={name:"LightingPipelineStage"};que.process=function(e,t){let{model:n,lightingOptions:i,shaderBuilder:o}=e;if(l(n.lightColor)){o.addDefine("USE_CUSTOM_LIGHT_COLOR",void 0,pe.FRAGMENT),o.addUniform("vec3","model_lightColorHdr",pe.FRAGMENT);let s=e.uniformMap;s.model_lightColorHdr=function(){return n.lightColor}}let{lightingModel:r}=i;r===nA.PBR?o.addDefine("LIGHTING_PBR",void 0,pe.FRAGMENT):o.addDefine("LIGHTING_UNLIT",void 0,pe.FRAGMENT),o.addFragmentLines(EN)};var IN=que;var xN=`// If the style color is white, it implies the feature has not been styled. +bool isDefaultStyleColor(vec3 color) +{ + return all(greaterThan(color, vec3(1.0 - czm_epsilon3))); +} + +vec3 blend(vec3 sourceColor, vec3 styleColor, float styleColorBlend) +{ + vec3 blendColor = mix(sourceColor, styleColor, styleColorBlend); + vec3 color = isDefaultStyleColor(styleColor.rgb) ? sourceColor : blendColor; + return color; +} + +vec2 computeTextureTransform(vec2 texCoord, mat3 textureTransform) +{ + return vec2(textureTransform * vec3(texCoord, 1.0)); +} + +#ifdef HAS_NORMAL_TEXTURE +vec2 getNormalTexCoords() +{ + vec2 texCoord = TEXCOORD_NORMAL; + #ifdef HAS_NORMAL_TEXTURE_TRANSFORM + texCoord = vec2(u_normalTextureTransform * vec3(texCoord, 1.0)); + #endif + return texCoord; +} +#endif + +#if defined(HAS_NORMAL_TEXTURE) || defined(HAS_CLEARCOAT_NORMAL_TEXTURE) +vec3 computeTangent(in vec3 position, in vec2 normalTexCoords) +{ + vec2 tex_dx = dFdx(normalTexCoords); + vec2 tex_dy = dFdy(normalTexCoords); + float determinant = tex_dx.x * tex_dy.y - tex_dy.x * tex_dx.y; + vec3 tangent = tex_dy.t * dFdx(position) - tex_dx.t * dFdy(position); + return tangent / determinant; +} +#endif + +#ifdef USE_ANISOTROPY +struct NormalInfo { + vec3 tangent; + vec3 bitangent; + vec3 normal; + vec3 geometryNormal; +}; + +NormalInfo getNormalInfo(ProcessedAttributes attributes) +{ + vec3 geometryNormal = attributes.normalEC; + #ifdef HAS_NORMAL_TEXTURE + vec2 normalTexCoords = getNormalTexCoords(); + #endif + + #ifdef HAS_BITANGENTS + vec3 tangent = attributes.tangentEC; + vec3 bitangent = attributes.bitangentEC; + #else // Assume HAS_NORMAL_TEXTURE + vec3 tangent = computeTangent(attributes.positionEC, normalTexCoords); + tangent = normalize(tangent - geometryNormal * dot(geometryNormal, tangent)); + vec3 bitangent = normalize(cross(geometryNormal, tangent)); + #endif + + #ifdef HAS_NORMAL_TEXTURE + mat3 tbn = mat3(tangent, bitangent, geometryNormal); + vec3 normalSample = texture(u_normalTexture, normalTexCoords).rgb; + normalSample = 2.0 * normalSample - 1.0; + #ifdef HAS_NORMAL_TEXTURE_SCALE + normalSample.xy *= u_normalTextureScale; + #endif + vec3 normal = normalize(tbn * normalSample); + #else + vec3 normal = geometryNormal; + #endif + + #ifdef HAS_DOUBLE_SIDED_MATERIAL + if (czm_backFacing()) { + tangent *= -1.0; + bitangent *= -1.0; + normal *= -1.0; + geometryNormal *= -1.0; + } + #endif + + NormalInfo normalInfo; + normalInfo.tangent = tangent; + normalInfo.bitangent = bitangent; + normalInfo.normal = normal; + normalInfo.geometryNormal = geometryNormal; + + return normalInfo; +} +#endif + +#if defined(HAS_NORMAL_TEXTURE) && !defined(HAS_WIREFRAME) +vec3 getNormalFromTexture(ProcessedAttributes attributes, vec3 geometryNormal) +{ + vec2 normalTexCoords = getNormalTexCoords(); + + // If HAS_BITANGENTS is set, then HAS_TANGENTS is also set + #ifdef HAS_BITANGENTS + vec3 t = attributes.tangentEC; + vec3 b = attributes.bitangentEC; + #else + vec3 t = computeTangent(attributes.positionEC, normalTexCoords); + t = normalize(t - geometryNormal * dot(geometryNormal, t)); + vec3 b = normalize(cross(geometryNormal, t)); + #endif + + mat3 tbn = mat3(t, b, geometryNormal); + vec3 normalSample = texture(u_normalTexture, normalTexCoords).rgb; + normalSample = 2.0 * normalSample - 1.0; + #ifdef HAS_NORMAL_TEXTURE_SCALE + normalSample.xy *= u_normalTextureScale; + #endif + return normalize(tbn * normalSample); +} +#endif + +#ifdef HAS_CLEARCOAT_NORMAL_TEXTURE +vec3 getClearcoatNormalFromTexture(ProcessedAttributes attributes, vec3 geometryNormal) +{ + vec2 normalTexCoords = TEXCOORD_CLEARCOAT_NORMAL; + #ifdef HAS_CLEARCOAT_NORMAL_TEXTURE_TRANSFORM + normalTexCoords = vec2(u_clearcoatNormalTextureTransform * vec3(normalTexCoords, 1.0)); + #endif + + // If HAS_BITANGENTS is set, then HAS_TANGENTS is also set + #ifdef HAS_BITANGENTS + vec3 t = attributes.tangentEC; + vec3 b = attributes.bitangentEC; + #else + vec3 t = computeTangent(attributes.positionEC, normalTexCoords); + t = normalize(t - geometryNormal * dot(geometryNormal, t)); + vec3 b = normalize(cross(geometryNormal, t)); + #endif + + mat3 tbn = mat3(t, b, geometryNormal); + vec3 normalSample = texture(u_clearcoatNormalTexture, normalTexCoords).rgb; + normalSample = 2.0 * normalSample - 1.0; + #ifdef HAS_CLEARCOAT_NORMAL_TEXTURE_SCALE + normalSample.xy *= u_clearcoatNormalTextureScale; + #endif + return normalize(tbn * normalSample); +} +#endif + +#ifdef HAS_NORMALS +vec3 computeNormal(ProcessedAttributes attributes) +{ + // Geometry normal. This is already normalized + vec3 normal = attributes.normalEC; + + #if defined(HAS_NORMAL_TEXTURE) && !defined(HAS_WIREFRAME) + normal = getNormalFromTexture(attributes, normal); + #endif + + #ifdef HAS_DOUBLE_SIDED_MATERIAL + if (czm_backFacing()) { + normal = -normal; + } + #endif + + return normal; +} +#endif + +#ifdef HAS_BASE_COLOR_TEXTURE +vec4 getBaseColorFromTexture() +{ + vec2 baseColorTexCoords = TEXCOORD_BASE_COLOR; + #ifdef HAS_BASE_COLOR_TEXTURE_TRANSFORM + baseColorTexCoords = computeTextureTransform(baseColorTexCoords, u_baseColorTextureTransform); + #endif + + vec4 baseColorWithAlpha = czm_srgbToLinear(texture(u_baseColorTexture, baseColorTexCoords)); + + #ifdef HAS_BASE_COLOR_FACTOR + baseColorWithAlpha *= u_baseColorFactor; + #endif + + return baseColorWithAlpha; +} +#endif + +#ifdef HAS_EMISSIVE_TEXTURE +vec3 getEmissiveFromTexture() +{ + vec2 emissiveTexCoords = TEXCOORD_EMISSIVE; + #ifdef HAS_EMISSIVE_TEXTURE_TRANSFORM + emissiveTexCoords = computeTextureTransform(emissiveTexCoords, u_emissiveTextureTransform); + #endif + + vec3 emissive = czm_srgbToLinear(texture(u_emissiveTexture, emissiveTexCoords).rgb); + #ifdef HAS_EMISSIVE_FACTOR + emissive *= u_emissiveFactor; + #endif + + return emissive; +} +#endif + +#if defined(LIGHTING_PBR) && defined(USE_SPECULAR_GLOSSINESS) +void setSpecularGlossiness(inout czm_modelMaterial material) +{ + #ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE + vec2 specularGlossinessTexCoords = TEXCOORD_SPECULAR_GLOSSINESS; + #ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE_TRANSFORM + specularGlossinessTexCoords = computeTextureTransform(specularGlossinessTexCoords, u_specularGlossinessTextureTransform); + #endif + + vec4 specularGlossiness = czm_srgbToLinear(texture(u_specularGlossinessTexture, specularGlossinessTexCoords)); + vec3 specular = specularGlossiness.rgb; + float glossiness = specularGlossiness.a; + #ifdef HAS_LEGACY_SPECULAR_FACTOR + specular *= u_legacySpecularFactor; + #endif + + #ifdef HAS_GLOSSINESS_FACTOR + glossiness *= u_glossinessFactor; + #endif + #else + #ifdef HAS_LEGACY_SPECULAR_FACTOR + vec3 specular = clamp(u_legacySpecularFactor, vec3(0.0), vec3(1.0)); + #else + vec3 specular = vec3(1.0); + #endif + + #ifdef HAS_GLOSSINESS_FACTOR + float glossiness = clamp(u_glossinessFactor, 0.0, 1.0); + #else + float glossiness = 1.0; + #endif + #endif + + #ifdef HAS_DIFFUSE_TEXTURE + vec2 diffuseTexCoords = TEXCOORD_DIFFUSE; + #ifdef HAS_DIFFUSE_TEXTURE_TRANSFORM + diffuseTexCoords = computeTextureTransform(diffuseTexCoords, u_diffuseTextureTransform); + #endif + + vec4 diffuse = czm_srgbToLinear(texture(u_diffuseTexture, diffuseTexCoords)); + #ifdef HAS_DIFFUSE_FACTOR + diffuse *= u_diffuseFactor; + #endif + #elif defined(HAS_DIFFUSE_FACTOR) + vec4 diffuse = clamp(u_diffuseFactor, vec4(0.0), vec4(1.0)); + #else + vec4 diffuse = vec4(1.0); + #endif + + material.diffuse = diffuse.rgb * (1.0 - czm_maximumComponent(specular)); + // the specular glossiness extension's alpha overrides anything set + // by the base material. + material.alpha = diffuse.a; + + material.specular = specular; + + // glossiness is the opposite of roughness, but easier for artists to use. + material.roughness = 1.0 - glossiness; +} +#elif defined(LIGHTING_PBR) +float setMetallicRoughness(inout czm_modelMaterial material) +{ + #ifdef HAS_METALLIC_ROUGHNESS_TEXTURE + vec2 metallicRoughnessTexCoords = TEXCOORD_METALLIC_ROUGHNESS; + #ifdef HAS_METALLIC_ROUGHNESS_TEXTURE_TRANSFORM + metallicRoughnessTexCoords = computeTextureTransform(metallicRoughnessTexCoords, u_metallicRoughnessTextureTransform); + #endif + + vec3 metallicRoughness = texture(u_metallicRoughnessTexture, metallicRoughnessTexCoords).rgb; + float metalness = clamp(metallicRoughness.b, 0.0, 1.0); + float roughness = clamp(metallicRoughness.g, 0.0, 1.0); + #ifdef HAS_METALLIC_FACTOR + metalness = clamp(metalness * u_metallicFactor, 0.0, 1.0); + #endif + + #ifdef HAS_ROUGHNESS_FACTOR + roughness = clamp(roughness * u_roughnessFactor, 0.0, 1.0); + #endif + #else + #ifdef HAS_METALLIC_FACTOR + float metalness = clamp(u_metallicFactor, 0.0, 1.0); + #else + float metalness = 1.0; + #endif + + #ifdef HAS_ROUGHNESS_FACTOR + float roughness = clamp(u_roughnessFactor, 0.0, 1.0); + #else + float roughness = 1.0; + #endif + #endif + + // dielectrics use f0 = 0.04, metals use albedo as f0 + const vec3 REFLECTANCE_DIELECTRIC = vec3(0.04); + vec3 f0 = mix(REFLECTANCE_DIELECTRIC, material.baseColor.rgb, metalness); + + material.specular = f0; + + // diffuse only applies to dielectrics. + material.diffuse = mix(material.baseColor.rgb, vec3(0.0), metalness); + + // This is perceptual roughness. The square of this value is used for direct lighting + material.roughness = roughness; + + return metalness; +} +#ifdef USE_SPECULAR +void setSpecular(inout czm_modelMaterial material, in float metalness) +{ + #ifdef HAS_SPECULAR_TEXTURE + vec2 specularTexCoords = TEXCOORD_SPECULAR; + #ifdef HAS_SPECULAR_TEXTURE_TRANSFORM + specularTexCoords = computeTextureTransform(specularTexCoords, u_specularTextureTransform); + #endif + float specularWeight = texture(u_specularTexture, specularTexCoords).a; + #ifdef HAS_SPECULAR_FACTOR + specularWeight *= u_specularFactor; + #endif + #else + #ifdef HAS_SPECULAR_FACTOR + float specularWeight = u_specularFactor; + #else + float specularWeight = 1.0; + #endif + #endif + + #ifdef HAS_SPECULAR_COLOR_TEXTURE + vec2 specularColorTexCoords = TEXCOORD_SPECULAR_COLOR; + #ifdef HAS_SPECULAR_COLOR_TEXTURE_TRANSFORM + specularColorTexCoords = computeTextureTransform(specularColorTexCoords, u_specularColorTextureTransform); + #endif + vec3 specularColorSample = texture(u_specularColorTexture, specularColorTexCoords).rgb; + vec3 specularColorFactor = czm_srgbToLinear(specularColorSample); + #ifdef HAS_SPECULAR_COLOR_FACTOR + specularColorFactor *= u_specularColorFactor; + #endif + #else + #ifdef HAS_SPECULAR_COLOR_FACTOR + vec3 specularColorFactor = u_specularColorFactor; + #else + vec3 specularColorFactor = vec3(1.0); + #endif + #endif + material.specularWeight = specularWeight; + vec3 f0 = material.specular; + vec3 dielectricSpecularF0 = min(f0 * specularColorFactor, vec3(1.0)); + material.specular = mix(dielectricSpecularF0, material.baseColor.rgb, metalness); +} +#endif +#ifdef USE_ANISOTROPY +void setAnisotropy(inout czm_modelMaterial material, in NormalInfo normalInfo) +{ + mat2 rotation = mat2(u_anisotropy.xy, -u_anisotropy.y, u_anisotropy.x); + float anisotropyStrength = u_anisotropy.z; + + vec2 direction = vec2(1.0, 0.0); + #ifdef HAS_ANISOTROPY_TEXTURE + vec2 anisotropyTexCoords = TEXCOORD_ANISOTROPY; + #ifdef HAS_ANISOTROPY_TEXTURE_TRANSFORM + anisotropyTexCoords = computeTextureTransform(anisotropyTexCoords, u_anisotropyTextureTransform); + #endif + vec3 anisotropySample = texture(u_anisotropyTexture, anisotropyTexCoords).rgb; + direction = anisotropySample.rg * 2.0 - vec2(1.0); + anisotropyStrength *= anisotropySample.b; + #endif + + direction = rotation * direction; + mat3 tbn = mat3(normalInfo.tangent, normalInfo.bitangent, normalInfo.normal); + vec3 anisotropicT = tbn * normalize(vec3(direction, 0.0)); + vec3 anisotropicB = cross(normalInfo.geometryNormal, anisotropicT); + + material.anisotropicT = anisotropicT; + material.anisotropicB = anisotropicB; + material.anisotropyStrength = anisotropyStrength; +} +#endif +#ifdef USE_CLEARCOAT +void setClearcoat(inout czm_modelMaterial material, in ProcessedAttributes attributes) +{ + #ifdef HAS_CLEARCOAT_TEXTURE + vec2 clearcoatTexCoords = TEXCOORD_CLEARCOAT; + #ifdef HAS_CLEARCOAT_TEXTURE_TRANSFORM + clearcoatTexCoords = computeTextureTransform(clearcoatTexCoords, u_clearcoatTextureTransform); + #endif + float clearcoatFactor = texture(u_clearcoatTexture, clearcoatTexCoords).r; + #ifdef HAS_CLEARCOAT_FACTOR + clearcoatFactor *= u_clearcoatFactor; + #endif + #else + #ifdef HAS_CLEARCOAT_FACTOR + float clearcoatFactor = u_clearcoatFactor; + #else + // PERFORMANCE_IDEA: this case should turn the whole extension off + float clearcoatFactor = 0.0; + #endif + #endif + + #ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE + vec2 clearcoatRoughnessTexCoords = TEXCOORD_CLEARCOAT_ROUGHNESS; + #ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE_TRANSFORM + clearcoatRoughnessTexCoords = computeTextureTransform(clearcoatRoughnessTexCoords, u_clearcoatRoughnessTextureTransform); + #endif + float clearcoatRoughness = texture(u_clearcoatRoughnessTexture, clearcoatRoughnessTexCoords).g; + #ifdef HAS_CLEARCOAT_ROUGHNESS_FACTOR + clearcoatRoughness *= u_clearcoatRoughnessFactor; + #endif + #else + #ifdef HAS_CLEARCOAT_ROUGHNESS_FACTOR + float clearcoatRoughness = u_clearcoatRoughnessFactor; + #else + float clearcoatRoughness = 0.0; + #endif + #endif + + material.clearcoatFactor = clearcoatFactor; + // This is perceptual roughness. The square of this value is used for direct lighting + material.clearcoatRoughness = clearcoatRoughness; + #ifdef HAS_CLEARCOAT_NORMAL_TEXTURE + material.clearcoatNormal = getClearcoatNormalFromTexture(attributes, attributes.normalEC); + #else + material.clearcoatNormal = attributes.normalEC; + #endif +} +#endif +#endif + +void materialStage(inout czm_modelMaterial material, ProcessedAttributes attributes, SelectedFeature feature) +{ + #ifdef USE_ANISOTROPY + NormalInfo normalInfo = getNormalInfo(attributes); + material.normalEC = normalInfo.normal; + #elif defined(HAS_NORMALS) + material.normalEC = computeNormal(attributes); + #endif + + vec4 baseColorWithAlpha = vec4(1.0); + // Regardless of whether we use PBR, set a base color + #ifdef HAS_BASE_COLOR_TEXTURE + baseColorWithAlpha = getBaseColorFromTexture(); + #elif defined(HAS_BASE_COLOR_FACTOR) + baseColorWithAlpha = u_baseColorFactor; + #endif + + #ifdef HAS_IMAGERY + baseColorWithAlpha = blendBaseColorWithImagery(baseColorWithAlpha); + #endif // HAS_IMAGERY + + #ifdef HAS_POINT_CLOUD_COLOR_STYLE + baseColorWithAlpha = v_pointCloudColor; + #elif defined(HAS_COLOR_0) + vec4 color = attributes.color_0; + // .pnts files store colors in the sRGB color space + #ifdef HAS_SRGB_COLOR + color = czm_srgbToLinear(color); + #endif + baseColorWithAlpha *= color; + #endif + + #ifdef USE_CPU_STYLING + baseColorWithAlpha.rgb = blend(baseColorWithAlpha.rgb, feature.color.rgb, model_colorBlend); + #endif + material.baseColor = baseColorWithAlpha; + material.diffuse = baseColorWithAlpha.rgb; + material.alpha = baseColorWithAlpha.a; + + #ifdef HAS_OCCLUSION_TEXTURE + vec2 occlusionTexCoords = TEXCOORD_OCCLUSION; + #ifdef HAS_OCCLUSION_TEXTURE_TRANSFORM + occlusionTexCoords = computeTextureTransform(occlusionTexCoords, u_occlusionTextureTransform); + #endif + material.occlusion = texture(u_occlusionTexture, occlusionTexCoords).r; + #endif + + #ifdef HAS_EMISSIVE_TEXTURE + material.emissive = getEmissiveFromTexture(); + #elif defined(HAS_EMISSIVE_FACTOR) + material.emissive = u_emissiveFactor; + #endif + + #if defined(LIGHTING_PBR) && defined(USE_SPECULAR_GLOSSINESS) + setSpecularGlossiness(material); + #elif defined(LIGHTING_PBR) + float metalness = setMetallicRoughness(material); + #ifdef USE_SPECULAR + setSpecular(material, metalness); + #endif + #ifdef USE_ANISOTROPY + setAnisotropy(material, normalInfo); + #endif + #ifdef USE_CLEARCOAT + setClearcoat(material, attributes); + #endif + #endif +} +`;var{Material:$6e,MetallicRoughness:eY,SpecularGlossiness:tY,Specular:Kue,Clearcoat:Xue}=xn,Jue={name:"MaterialPipelineStage",_processTexture:du,_processTextureTransform:Zue};Jue.process=function(e,t,n){let i=t.material,{model:o,uniformMap:r,shaderBuilder:s}=e,a=l(o.classificationType),c=a,{defaultTexture:u,defaultNormalTexture:f,defaultEmissiveTexture:h}=n.context;tWe(i,r,s,u,f,h,c),l(i.specularGlossiness)?nWe(i.specularGlossiness,r,s,u,c):(l(i.specular)&&Ot.supportedExtensions.KHR_materials_specular&&iWe(i.specular,r,s,u,c),l(i.anisotropy)&&Ot.supportedExtensions.KHR_materials_anisotropy&&rWe(i.anisotropy,r,s,u,c),l(i.clearcoat)&&Ot.supportedExtensions.KHR_materials_clearcoat&&sWe(i.clearcoat,r,s,u,c),aWe(i.metallicRoughness,r,s,u,c));let A=Ot.getAttributeBySemantic(t,at.NORMAL),g=l(o.pointCloudShading)&&!o.pointCloudShading.normalShading,m=e.lightingOptions;i.unlit||!A||a||g?m.lightingModel=nA.UNLIT:m.lightingModel=nA.PBR;let _=o.backFaceCulling&&!i.doubleSided;e.renderStateOptions.cull.enabled=_;let y=e.alphaOptions;i.alphaMode===Xm.BLEND?y.pass=Be.TRANSLUCENT:i.alphaMode===Xm.MASK&&(y.alphaCutoff=i.alphaCutoff),s.addFragmentLines(xN),i.doubleSided&&s.addDefine("HAS_DOUBLE_SIDED_MATERIAL",void 0,pe.BOTH)};function Zue(e,t,n,i,o){let r=`HAS_${o}_TEXTURE_TRANSFORM`;e.addDefine(r,void 0,pe.FRAGMENT);let s=`${i}Transform`;e.addUniform("mat3",s,pe.FRAGMENT),t[s]=function(){return n.transform}}function eWe(e,t,n,i,o){let r=`HAS_${o}_TEXTURE_SCALE`;e.addDefine(r,void 0,pe.FRAGMENT);let s=`${i}Scale`;e.addUniform("float",s,pe.FRAGMENT),t[s]=function(){return n.scale}}function du(e,t,n,i,o,r){e.addUniform("sampler2D",i,pe.FRAGMENT),t[i]=function(){return n.texture??r};let s=`HAS_${o}_TEXTURE`;e.addDefine(s,void 0,pe.FRAGMENT);let c=`v_texCoord_${n.texCoord}`,u=`TEXCOORD_${o}`;e.addDefine(u,c,pe.FRAGMENT);let f=n.transform;l(f)&&!J.equals(f,J.IDENTITY)&&Zue(e,t,n,i,o);let{scale:h}=n;l(h)&&h!==1&&eWe(e,t,n,i,o)}function tWe(e,t,n,i,o,r,s){let{emissiveFactor:a,emissiveTexture:c,normalTexture:u,occlusionTexture:f}=e;l(a)&&!d.equals(a,$6e.DEFAULT_EMISSIVE_FACTOR)&&(n.addUniform("vec3","u_emissiveFactor",pe.FRAGMENT),t.u_emissiveFactor=function(){return e.emissiveFactor},n.addDefine("HAS_EMISSIVE_FACTOR",void 0,pe.FRAGMENT),l(c)&&!s&&du(n,t,c,"u_emissiveTexture","EMISSIVE",r)),l(u)&&!s&&du(n,t,u,"u_normalTexture","NORMAL",o),l(f)&&!s&&du(n,t,f,"u_occlusionTexture","OCCLUSION",i)}function nWe(e,t,n,i,o){let{diffuseTexture:r,diffuseFactor:s,specularGlossinessTexture:a,specularFactor:c,glossinessFactor:u}=e;n.addDefine("USE_SPECULAR_GLOSSINESS",void 0,pe.FRAGMENT),l(r)&&!o&&du(n,t,r,"u_diffuseTexture","DIFFUSE",i),l(s)&&!se.equals(s,tY.DEFAULT_DIFFUSE_FACTOR)&&(n.addUniform("vec4","u_diffuseFactor",pe.FRAGMENT),t.u_diffuseFactor=function(){return e.diffuseFactor},n.addDefine("HAS_DIFFUSE_FACTOR",void 0,pe.FRAGMENT)),l(a)&&!o&&du(n,t,a,"u_specularGlossinessTexture","SPECULAR_GLOSSINESS",i),l(c)&&!d.equals(c,tY.DEFAULT_SPECULAR_FACTOR)&&(n.addUniform("vec3","u_legacySpecularFactor",pe.FRAGMENT),t.u_legacySpecularFactor=function(){return e.specularFactor},n.addDefine("HAS_LEGACY_SPECULAR_FACTOR",void 0,pe.FRAGMENT)),l(u)&&u!==tY.DEFAULT_GLOSSINESS_FACTOR&&(n.addUniform("float","u_glossinessFactor",pe.FRAGMENT),t.u_glossinessFactor=function(){return e.glossinessFactor},n.addDefine("HAS_GLOSSINESS_FACTOR",void 0,pe.FRAGMENT))}function iWe(e,t,n,i,o){let{specularTexture:r,specularFactor:s,specularColorTexture:a,specularColorFactor:c}=e;n.addDefine("USE_SPECULAR",void 0,pe.FRAGMENT),l(r)&&!o&&du(n,t,r,"u_specularTexture","SPECULAR",i),l(s)&&s!==Kue.DEFAULT_SPECULAR_FACTOR&&(n.addUniform("float","u_specularFactor",pe.FRAGMENT),t.u_specularFactor=function(){return e.specularFactor},n.addDefine("HAS_SPECULAR_FACTOR",void 0,pe.FRAGMENT)),l(a)&&!o&&du(n,t,a,"u_specularColorTexture","SPECULAR_COLOR",i),l(c)&&!d.equals(c,Kue.DEFAULT_SPECULAR_COLOR_FACTOR)&&(n.addUniform("vec3","u_specularColorFactor",pe.FRAGMENT),t.u_specularColorFactor=function(){return e.specularColorFactor},n.addDefine("HAS_SPECULAR_COLOR_FACTOR",void 0,pe.FRAGMENT))}var oWe=new d;function rWe(e,t,n,i,o){let{anisotropyStrength:r,anisotropyRotation:s,anisotropyTexture:a}=e;n.addDefine("USE_ANISOTROPY",void 0,pe.FRAGMENT),l(a)&&!o&&du(n,t,a,"u_anisotropyTexture","ANISOTROPY",i);let c=Math.cos(s),u=Math.sin(s);n.addUniform("vec3","u_anisotropy",pe.FRAGMENT),t.u_anisotropy=function(){return d.fromElements(c,u,r,oWe)}}function sWe(e,t,n,i,o){let{clearcoatFactor:r,clearcoatTexture:s,clearcoatRoughnessFactor:a,clearcoatRoughnessTexture:c,clearcoatNormalTexture:u}=e;n.addDefine("USE_CLEARCOAT",void 0,pe.FRAGMENT),l(r)&&r!==Xue.DEFAULT_CLEARCOAT_FACTOR&&(n.addUniform("float","u_clearcoatFactor",pe.FRAGMENT),t.u_clearcoatFactor=function(){return e.clearcoatFactor},n.addDefine("HAS_CLEARCOAT_FACTOR",void 0,pe.FRAGMENT)),l(s)&&!o&&du(n,t,s,"u_clearcoatTexture","CLEARCOAT",i),l(a)&&r!==Xue.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR&&(n.addUniform("float","u_clearcoatRoughnessFactor",pe.FRAGMENT),t.u_clearcoatRoughnessFactor=function(){return e.clearcoatRoughnessFactor},n.addDefine("HAS_CLEARCOAT_ROUGHNESS_FACTOR",void 0,pe.FRAGMENT)),l(c)&&!o&&du(n,t,c,"u_clearcoatRoughnessTexture","CLEARCOAT_ROUGHNESS",i),l(u)&&!o&&du(n,t,u,"u_clearcoatNormalTexture","CLEARCOAT_NORMAL",i)}function aWe(e,t,n,i,o){n.addDefine("USE_METALLIC_ROUGHNESS",void 0,pe.FRAGMENT);let r=e.baseColorTexture;l(r)&&!o&&du(n,t,r,"u_baseColorTexture","BASE_COLOR",i);let s=e.baseColorFactor;l(s)&&!se.equals(s,eY.DEFAULT_BASE_COLOR_FACTOR)&&(n.addUniform("vec4","u_baseColorFactor",pe.FRAGMENT),t.u_baseColorFactor=function(){return e.baseColorFactor},n.addDefine("HAS_BASE_COLOR_FACTOR",void 0,pe.FRAGMENT));let a=e.metallicRoughnessTexture;l(a)&&!o&&du(n,t,a,"u_metallicRoughnessTexture","METALLIC_ROUGHNESS",i);let c=e.metallicFactor;l(c)&&c!==eY.DEFAULT_METALLIC_FACTOR&&(n.addUniform("float","u_metallicFactor",pe.FRAGMENT),t.u_metallicFactor=function(){return e.metallicFactor},n.addDefine("HAS_METALLIC_FACTOR",void 0,pe.FRAGMENT));let u=e.roughnessFactor;l(u)&&u!==eY.DEFAULT_ROUGHNESS_FACTOR&&(n.addUniform("float","u_roughnessFactor",pe.FRAGMENT),t.u_roughnessFactor=function(){return e.roughnessFactor},n.addDefine("HAS_ROUGHNESS_FACTOR",void 0,pe.FRAGMENT))}var bN=Jue;var Pl={name:"MetadataPickingPipelineStage",METADATA_PICKING_ENABLED:"METADATA_PICKING_ENABLED",METADATA_PICKING_VALUE_TYPE:"METADATA_PICKING_VALUE_TYPE",METADATA_PICKING_VALUE_STRING:"METADATA_PICKING_VALUE_STRING",METADATA_PICKING_VALUE_COMPONENT_X:"METADATA_PICKING_VALUE_COMPONENT_X",METADATA_PICKING_VALUE_COMPONENT_Y:"METADATA_PICKING_VALUE_COMPONENT_Y",METADATA_PICKING_VALUE_COMPONENT_Z:"METADATA_PICKING_VALUE_COMPONENT_Z",METADATA_PICKING_VALUE_COMPONENT_W:"METADATA_PICKING_VALUE_COMPONENT_W"};Pl.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine(Pl.METADATA_PICKING_VALUE_TYPE,"float",pe.FRAGMENT),i.addDefine(Pl.METADATA_PICKING_VALUE_STRING,"0.0",pe.FRAGMENT),i.addDefine(Pl.METADATA_PICKING_VALUE_COMPONENT_X,"0.0",pe.FRAGMENT),i.addDefine(Pl.METADATA_PICKING_VALUE_COMPONENT_Y,"0.0",pe.FRAGMENT),i.addDefine(Pl.METADATA_PICKING_VALUE_COMPONENT_Z,"0.0",pe.FRAGMENT),i.addDefine(Pl.METADATA_PICKING_VALUE_COMPONENT_W,"0.0",pe.FRAGMENT),i.addFunction("metadataPickingStage","void metadataPickingStage(Metadata metadata, MetadataClass metadataClass, inout vec4 metadataValues)",pe.FRAGMENT),i.addFunctionLines("metadataPickingStage",[`${Pl.METADATA_PICKING_VALUE_TYPE} value = ${Pl.METADATA_PICKING_VALUE_TYPE}(${Pl.METADATA_PICKING_VALUE_STRING});`,`metadataValues.x = ${Pl.METADATA_PICKING_VALUE_COMPONENT_X};`,`metadataValues.y = ${Pl.METADATA_PICKING_VALUE_COMPONENT_Y};`,`metadataValues.z = ${Pl.METADATA_PICKING_VALUE_COMPONENT_Z};`,`metadataValues.w = ${Pl.METADATA_PICKING_VALUE_COMPONENT_W};`],pe.FRAGMENT)};var ef=Pl;var TN=`void morphTargetsStage(inout ProcessedAttributes attributes) +{ + vec3 positionMC = attributes.positionMC; + attributes.positionMC = getMorphedPosition(positionMC); + + #ifdef HAS_NORMALS + vec3 normalMC = attributes.normalMC; + attributes.normalMC = getMorphedNormal(normalMC); + #endif + + #ifdef HAS_TANGENTS + vec3 tangentMC = attributes.tangentMC; + attributes.tangentMC = getMorphedTangent(tangentMC); + #endif +}`;var pc={name:"MorphTargetsPipelineStage",FUNCTION_ID_GET_MORPHED_POSITION:"getMorphedPosition",FUNCTION_SIGNATURE_GET_MORPHED_POSITION:"vec3 getMorphedPosition(in vec3 position)",FUNCTION_ID_GET_MORPHED_NORMAL:"getMorphedNormal",FUNCTION_SIGNATURE_GET_MORPHED_NORMAL:"vec3 getMorphedNormal(in vec3 normal)",FUNCTION_ID_GET_MORPHED_TANGENT:"getMorphedTangent",FUNCTION_SIGNATURE_GET_MORPHED_TANGENT:"vec3 getMorphedTangent(in vec3 tangent)"};pc.process=function(e,t){let n=e.shaderBuilder;n.addDefine("HAS_MORPH_TARGETS",void 0,pe.VERTEX),hWe(n);let i=t.morphTargets.length;for(let a=0;a<i;a++){let c=t.morphTargets[a].attributes,u=c.length;for(let f=0;f<u;f++){let h=c[f],A=h.semantic;A!==at.POSITION&&A!==at.NORMAL&&A!==at.TANGENT||(lWe(e,h,e.attributeIndex,a),e.attributeIndex++)}}mWe(n);let r=e.runtimeNode.morphWeights.length;n.addUniform("float",`u_morphWeights[${r}]`,pe.VERTEX),n.addVertexLines(TN);let s={u_morphWeights:function(){return e.runtimeNode.morphWeights}};e.uniformMap=Tt(s,e.uniformMap)};var cWe={attributeString:void 0,functionId:void 0};function lWe(e,t,n,i){let o=e.shaderBuilder;uWe(e,t,n);let r=fWe(t,cWe);dWe(o,r,i)}function uWe(e,t,n){let i={index:n,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,componentsPerAttribute:zt.getNumberOfComponents(t.type),componentDatatype:t.componentDatatype,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};e.attributes.push(i)}function fWe(e,t){switch(e.semantic){case at.POSITION:t.attributeString="Position",t.functionId=pc.FUNCTION_ID_GET_MORPHED_POSITION;break;case at.NORMAL:t.attributeString="Normal",t.functionId=pc.FUNCTION_ID_GET_MORPHED_NORMAL;break;case at.TANGENT:t.attributeString="Tangent",t.functionId=pc.FUNCTION_ID_GET_MORPHED_TANGENT;break;default:break}return t}function dWe(e,t,n){let i=t.attributeString,o=`a_target${i}_${n}`,r=`morphed${i} += u_morphWeights[${n}] * a_target${i}_${n};`;e.addAttribute("vec3",o),e.addFunctionLines(t.functionId,[r])}function hWe(e){e.addFunction(pc.FUNCTION_ID_GET_MORPHED_POSITION,pc.FUNCTION_SIGNATURE_GET_MORPHED_POSITION,pe.VERTEX),e.addFunctionLines(pc.FUNCTION_ID_GET_MORPHED_POSITION,["vec3 morphedPosition = position;"]),e.addFunction(pc.FUNCTION_ID_GET_MORPHED_NORMAL,pc.FUNCTION_SIGNATURE_GET_MORPHED_NORMAL,pe.VERTEX),e.addFunctionLines(pc.FUNCTION_ID_GET_MORPHED_NORMAL,["vec3 morphedNormal = normal;"]),e.addFunction(pc.FUNCTION_ID_GET_MORPHED_TANGENT,pc.FUNCTION_SIGNATURE_GET_MORPHED_TANGENT,pe.VERTEX),e.addFunctionLines(pc.FUNCTION_ID_GET_MORPHED_TANGENT,["vec3 morphedTangent = tangent;"])}function mWe(e){e.addFunctionLines(pc.FUNCTION_ID_GET_MORPHED_POSITION,["return morphedPosition;"]),e.addFunctionLines(pc.FUNCTION_ID_GET_MORPHED_NORMAL,["return morphedNormal;"]),e.addFunctionLines(pc.FUNCTION_ID_GET_MORPHED_TANGENT,["return morphedTangent;"])}var SN=pc;var $ue={name:"PickingPipelineStage"};$ue.process=function(e,t,n){let i=n.context,o=e.runtimeNode,r=e.shaderBuilder,s=e.model,a=o.node.instances;if(e.hasPropertyTable)AWe(e,t,a,i);else if(l(a))pWe(e,i);else{let c=efe(e),u=i.createPickId(c);s._pipelineResources.push(u),s._pickIds.push(u),r.addUniform("vec4","czm_pickColor",pe.FRAGMENT);let f=e.uniformMap;f.czm_pickColor=function(){return u.color},e.pickId="czm_pickColor"}};function efe(e,t){let n=e.model;if(l(n.pickObject))return n.pickObject;let i={model:n,node:e.runtimeNode,primitive:e.runtimePrimitive},o;if(wr.is3DTiles(n.type)){let r=n.content;o={content:r,primitive:r.tileset,detail:i}}else o={primitive:n,detail:i};return o.id=n.id,l(t)&&(o.instanceId=t),o}function AWe(e,t,n){let i=e.model,o,r,s=i.featureIdLabel,a=i.instanceFeatureIdLabel;l(i.featureTableId)?o=i.featureTableId:l(n)?(r=Ot.getFeatureIdsByLabel(n.featureIds,a),o=r.propertyTableId):(r=Ot.getFeatureIdsByLabel(t.featureIds,s),o=r.propertyTableId);let c=i.featureTables[o];e.shaderBuilder.addUniform("sampler2D","model_pickTexture",pe.FRAGMENT);let f=c.batchTexture;e.uniformMap.model_pickTexture=function(){return f.pickTexture??f.defaultTexture},e.pickId="((selectedFeature.id < int(model_featuresLength)) ? texture(model_pickTexture, selectedFeature.st) : vec4(0.0))"}function pWe(e,t){let n=e.instanceCount,i=new Array(n),o=new Uint8Array(n*4),r=e.model,s=r._pipelineResources;for(let h=0;h<n;h++){let A=efe(e,h),g=t.createPickId(A);s.push(g),i[h]=g;let m=g.color;o[h*4+0]=G.floatToByte(m.red),o[h*4+1]=G.floatToByte(m.green),o[h*4+2]=G.floatToByte(m.blue),o[h*4+3]=G.floatToByte(m.alpha)}r._pickIds=i;let a=Ct.createVertexBuffer({context:t,typedArray:o,usage:Qe.STATIC_DRAW});a.vertexArrayDestroyable=!1,r.statistics.addBuffer(a,!1),s.push(a);let u={index:e.attributeIndex++,vertexBuffer:a,componentsPerAttribute:4,componentDatatype:q.UNSIGNED_BYTE,normalize:!0,offsetInBytes:0,strideInBytes:0,instanceDivisor:1};e.attributes.push(u);let f=e.shaderBuilder;f.addDefine("USE_PICKING",void 0,pe.BOTH),f.addAttribute("vec4","a_pickColor"),f.addVarying("vec4","v_pickColor"),e.pickId="v_pickColor"}var wN=$ue;var gWe={ADD:0,REPLACE:1},tr=Object.freeze(gWe);var BN=`float getPointSizeFromAttenuation(vec3 positionEC) { + // Variables are packed into a single vector to minimize gl.uniformXXX() calls + float pointSize = model_pointCloudParameters.x; + float geometricError = model_pointCloudParameters.y; + float depthMultiplier = model_pointCloudParameters.z; + + float depth = -positionEC.z; + return min((geometricError / depth) * depthMultiplier, pointSize); +} + +#ifdef HAS_POINT_CLOUD_SHOW_STYLE +float pointCloudShowStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + float tiles3d_tileset_time = model_pointCloudParameters.w; + return float(getShowFromStyle(attributes, metadata, tiles3d_tileset_time)); +} +#endif + +#ifdef HAS_POINT_CLOUD_COLOR_STYLE +vec4 pointCloudColorStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + float tiles3d_tileset_time = model_pointCloudParameters.w; + return getColorFromStyle(attributes, metadata, tiles3d_tileset_time); +} +#endif + +#ifdef HAS_POINT_CLOUD_POINT_SIZE_STYLE +float pointCloudPointSizeStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + float tiles3d_tileset_time = model_pointCloudParameters.w; + return float(getPointSizeFromStyle(attributes, metadata, tiles3d_tileset_time)); +} +#elif defined(HAS_POINT_CLOUD_ATTENUATION) +float pointCloudPointSizeStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + return getPointSizeFromAttenuation(v_positionEC); +} +#endif + +#ifdef HAS_POINT_CLOUD_BACK_FACE_CULLING +float pointCloudBackFaceCullingStage() { + #if defined(HAS_NORMALS) && !defined(HAS_DOUBLE_SIDED_MATERIAL) + // This needs to be computed in eye coordinates so we can't use attributes.normalMC + return step(-v_normalEC.z, 0.0); + #else + return 1.0; + #endif +} +#endif +`;var _We=new se,nfe={name:"PointCloudStylingPipelineStage"};nfe.process=function(e,t,n){let i=e.shaderBuilder,o=e.model,r=o.style,s=o.structuralMetadata,a=l(s)?s.propertyAttributes:void 0,c=l(o.featureTableId)&&o.featureTables[o.featureTableId].featuresLength>0,u=!l(a)&&c;if(l(r)&&!u){let _=IWe(a),y=xWe(r,_);bWe(i,y);let E=TWe(y).indexOf("normalMC")>=0,I=Ot.getAttributeBySemantic(t,at.NORMAL);if(E&&!I)throw new ce("Style references the NORMAL semantic but the point cloud does not have normals");i.addDefine("COMPUTE_POSITION_WC_STYLE",void 0,pe.VERTEX),y.styleTranslucent&&(e.alphaOptions.pass=Be.TRANSLUCENT)}let f=o.pointCloudShading;f.attenuation&&i.addDefine("HAS_POINT_CLOUD_ATTENUATION",void 0,pe.VERTEX),f.backFaceCulling&&i.addDefine("HAS_POINT_CLOUD_BACK_FACE_CULLING",void 0,pe.VERTEX);let h,A,g;wr.is3DTiles(o.type)&&(A=!0,h=o.content,g=h.tile.refine===tr.ADD),i.addUniform("vec4","model_pointCloudParameters",pe.VERTEX),i.addVertexLines(BN);let m=e.uniformMap;m.model_pointCloudParameters=function(){let _=_We,y=1;A&&(y=g?5:h.tileset.memoryAdjustedScreenSpaceError),_.x=f.maximumAttenuation??y,_.x*=n.pixelRatio;let C=yWe(e,t,f,h);_.y=C*f.geometricErrorScale;let E=n.context,I=n.camera.frustum,b;return n.mode===ie.SCENE2D||I instanceof An?b=Number.POSITIVE_INFINITY:b=E.drawingBufferHeight/n.camera.frustum.sseDenominator,_.z=b,A&&(_.w=h.tileset.timeSinceLoad),_}};var tfe=new d;function yWe(e,t,n,i){if(l(i)){let f=i.tile.geometricError;if(f>0)return f}if(l(n.baseResolution))return n.baseResolution;let o=Ot.getAttributeBySemantic(t,at.POSITION),r=o.count,s=e.runtimeNode.transform,a=d.subtract(o.max,o.min,tfe);a=N.multiplyByPointAsVector(s,a,tfe);let c=a.x*a.y*a.z;return D.cbrt(c/r)}var CWe={colorStyleFunction:void 0,showStyleFunction:void 0,pointSizeStyleFunction:void 0,styleTranslucent:!1},EWe={POSITION:"attributes.positionMC",POSITION_ABSOLUTE:"v_positionWC",COLOR:"attributes.color_0",NORMAL:"attributes.normalMC"};function IWe(e){let t=ze(EWe);if(!l(e))return t;for(let n=0;n<e.length;n++){let o=e[n].properties;for(let r in o)o.hasOwnProperty(r)&&(t[r]=`metadata.${r}`)}return t}var nY="ProcessedAttributes attributes, Metadata metadata, float tiles3d_tileset_time";function xWe(e,t){let n=CWe,i={translucent:!1};return n.colorStyleFunction=e.getColorShaderFunction(`getColorFromStyle(${nY})`,t,i),n.showStyleFunction=e.getShowShaderFunction(`getShowFromStyle(${nY})`,t,i),n.pointSizeStyleFunction=e.getPointSizeShaderFunction(`getPointSizeFromStyle(${nY})`,t,i),n.styleTranslucent=l(n.colorStyleFunction)&&i.translucent,n}function bWe(e,t){let n=t.colorStyleFunction;l(n)&&(e.addDefine("HAS_POINT_CLOUD_COLOR_STYLE",void 0,pe.BOTH),e.addVertexLines(n),e.addVarying("vec4","v_pointCloudColor"));let i=t.showStyleFunction;l(i)&&(e.addDefine("HAS_POINT_CLOUD_SHOW_STYLE",void 0,pe.BOTH),e.addVertexLines(i),e.addVarying("float","v_pointCloudShow"));let o=t.pointSizeStyleFunction;l(o)&&(e.addDefine("HAS_POINT_CLOUD_POINT_SIZE_STYLE",void 0,pe.VERTEX),e.addVertexLines(o))}function iY(e,t){let n=/attributes\.(\w+)/g,i=n.exec(e);for(;i!==null;){let o=i[1];t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function TWe(e){let t=e.colorStyleFunction,n=e.showStyleFunction,i=e.pointSizeStyleFunction,o=[];return l(t)&&iY(t,o),l(n)&&iY(n,o),l(i)&&iY(i,o),o}var DN=nfe;var vN=`void primitiveOutlineStage() { + v_outlineCoordinates = a_outlineCoordinates; +} +`;var PN=`void primitiveOutlineStage(inout czm_modelMaterial material) { + if (!model_showOutline) { + return; + } + + float outlineX = + texture(model_outlineTexture, vec2(v_outlineCoordinates.x, 0.5)).r; + float outlineY = + texture(model_outlineTexture, vec2(v_outlineCoordinates.y, 0.5)).r; + float outlineZ = + texture(model_outlineTexture, vec2(v_outlineCoordinates.z, 0.5)).r; + float outlineness = max(outlineX, max(outlineY, outlineZ)); + + material.diffuse = mix(material.diffuse, model_outlineColor.rgb, model_outlineColor.a * outlineness); +} + +`;var ife={name:"PrimitiveOutlinePipelineStage"};ife.process=function(e,t,n){let i=e.shaderBuilder,o=e.uniformMap;i.addDefine("HAS_PRIMITIVE_OUTLINE",void 0,pe.BOTH),i.addAttribute("vec3","a_outlineCoordinates"),i.addVarying("vec3","v_outlineCoordinates");let r=t.outlineCoordinates,s={index:e.attributeIndex++,vertexBuffer:r.buffer,componentsPerAttribute:zt.getNumberOfComponents(r.type),componentDatatype:r.componentDatatype,offsetInBytes:r.byteOffset,strideInBytes:r.byteStride,normalize:r.normalized};e.attributes.push(s),i.addUniform("sampler2D","model_outlineTexture",pe.FRAGMENT);let a=n0.createTexture(n.context);o.model_outlineTexture=function(){return a};let c=e.model;i.addUniform("vec4","model_outlineColor",pe.FRAGMENT),o.model_outlineColor=function(){return c.outlineColor},i.addUniform("bool","model_showOutline",pe.FRAGMENT),o.model_showOutline=function(){return c.showOutline},i.addVertexLines(vN),i.addFragmentLines(PN)};var RN=ife;var ofe={name:"PrimitiveStatisticsPipelineStage",_countGeometry:rfe,_count2DPositions:sfe,_countMorphTargetAttributes:afe,_countMaterialTextures:cfe,_countFeatureIdTextures:lfe,_countBinaryMetadata:ufe};ofe.process=function(e,t,n){let i=e.model,o=i.statistics;rfe(o,t),sfe(o,e.runtimePrimitive),afe(o,t),cfe(o,t.material),lfe(o,t.featureIds),ufe(o,i)};function rfe(e,t){let n=l(t.indices)?t.indices.count:Ot.getAttributeBySemantic(t,"POSITION").count,i=t.primitiveType;i===Me.POINTS?e.pointsLength+=n:Me.isTriangles(i)&&(e.trianglesLength+=SWe(i,n));let o=t.attributes,r=o.length;for(let c=0;c<r;c++){let u=o[c];if(l(u.buffer)){let f=l(u.typedArray);e.addBuffer(u.buffer,f)}}let s=t.outlineCoordinates;l(s)&&l(s.buffer)&&e.addBuffer(s.buffer,!1);let a=t.indices;if(l(a)&&l(a.buffer)){let c=l(a.typedArray);e.addBuffer(a.buffer,c)}}function SWe(e,t){switch(e){case Me.TRIANGLES:return t/3;case Me.TRIANGLE_STRIP:case Me.TRIANGLE_FAN:return Math.max(t-2,0);default:return 0}}function sfe(e,t){let n=t.positionBuffer2D;l(n)&&e.addBuffer(n,!0)}function afe(e,t){let n=t.morphTargets;if(!l(n))return;let i=!1,o=n.length;for(let r=0;r<o;r++){let s=n[r].attributes,a=s.length;for(let c=0;c<a;c++){let u=s[c];l(u.buffer)&&e.addBuffer(u.buffer,i)}}}function cfe(e,t){let n=wWe(t),i=n.length;for(let o=0;o<i;o++){let r=n[o];l(r)&&l(r.texture)&&e.addTexture(r.texture)}}function wWe(e){let t=e.metallicRoughness,n=[e.emissiveTexture,e.normalTexture,e.occlusionTexture,t.baseColorTexture,t.metallicRoughnessTexture],i=e.specularGlossiness;return l(i)&&(n.push(i.diffuseTexture),n.push(i.specularGlossinessTexture)),n}function lfe(e,t){let n=t.length;for(let i=0;i<n;i++){let o=t[i];if(o instanceof xn.FeatureIdTexture){let r=o.textureReader;l(r.texture)&&e.addTexture(r.texture)}}}function ufe(e,t){let n=t.structuralMetadata;l(n)&&(BWe(e,n),e.propertyTablesByteLength+=n.propertyTablesByteLength);let i=t.featureTables;if(!l(i))return;let o=i.length;for(let r=0;r<o;r++){let s=i[r];e.addBatchTexture(s.batchTexture)}}function BWe(e,t){let n=t.propertyTextures;if(!l(n))return;let i=n.length;for(let o=0;o<i;o++){let s=n[o].properties;for(let a in s)if(s.hasOwnProperty(a)){let u=s[a].textureReader;l(u.texture)&&e.addTexture(u.texture)}}}var MN=ofe;var DWe=new N,vWe=new N,ffe={name:"SceneMode2DPipelineStage"};ffe.process=function(e,t,n){let i=Ot.getAttributeBySemantic(t,at.POSITION),o=e.shaderBuilder,r=e.model,s=r.sceneGraph.computedModelMatrix,a=e.runtimeNode.computedTransform,c=N.multiplyTransformation(s,a,DWe),u=MWe(e,c,n),f=e.runtimePrimitive;f.boundingSphere2D=u;let h=e.runtimeNode.node.instances;if(l(h))return;if(l(i.typedArray)){let _=OWe(i,c,u,n);f.positionBuffer2D=_,r._modelResources.push(_),i.typedArray=void 0}o.addDefine("USE_2D_POSITIONS",void 0,pe.VERTEX),o.addUniform("mat4","u_modelView2D",pe.VERTEX);let A=N.fromTranslation(u.center,new N),g=n.context,m={u_modelView2D:function(){return N.multiplyTransformation(g.uniformState.view,A,vWe)}};e.uniformMap=Tt(m,e.uniformMap)};var PWe=new d,RWe=new d;function MWe(e,t,n){let i=N.multiplyByPoint(t,e.positionMin,PWe),o=eo.computeActualEllipsoidPosition(n,i,i),r=N.multiplyByPoint(t,e.positionMax,RWe),s=eo.computeActualEllipsoidPosition(n,r,r);return le.fromCornerPoints(o,s,new le)}var dfe=new d;function NWe(e,t){let n=e.length,i=new Float32Array(n),o=t.quantizedVolumeOffset,r=t.quantizedVolumeStepSize;for(let s=0;s<n;s+=3){let a=d.fromArray(e,s,dfe),c=d.multiplyComponents(a,r,a),u=d.add(c,o,c);i[s]=u.x,i[s+1]=u.y,i[s+2]=u.z}return i}function LWe(e,t,n,i){let o;l(e.quantization)?o=NWe(e.typedArray,e.quantization):o=e.typedArray.slice();let r=e.byteOffset/Float32Array.BYTES_PER_ELEMENT,s=o.length,a=l(e.byteStride)?e.byteStride/Float32Array.BYTES_PER_ELEMENT:3;for(let c=r;c<s;c+=a){let u=d.fromArray(o,c,dfe);if(isNaN(u.x)||isNaN(u.y)||isNaN(u.z))continue;let f=N.multiplyByPoint(t,u,u),h=eo.computeActualEllipsoidPosition(i,f,f),A=d.subtract(h,n,h);o[c]=A.x,o[c+1]=A.y,o[c+2]=A.z}return o}function OWe(e,t,n,i){let o=ze(i);o.mode=ie.COLUMBUS_VIEW;let r=n.center,s=LWe(e,t,r,o),a=Ct.createVertexBuffer({context:i.context,typedArray:s,usage:Qe.STATIC_DRAW});return a.vertexArrayDestroyable=!1,a}var NN=ffe;var LN=`void skinningStage(inout ProcessedAttributes attributes) +{ + mat4 skinningMatrix = getSkinningMatrix(); + mat3 skinningMatrixMat3 = mat3(skinningMatrix); + + vec4 positionMC = vec4(attributes.positionMC, 1.0); + attributes.positionMC = vec3(skinningMatrix * positionMC); + + #ifdef HAS_NORMALS + vec3 normalMC = attributes.normalMC; + attributes.normalMC = skinningMatrixMat3 * normalMC; + #endif + + #ifdef HAS_TANGENTS + vec3 tangentMC = attributes.tangentMC; + attributes.tangentMC = skinningMatrixMat3 * tangentMC; + #endif +}`;var d0={name:"SkinningPipelineStage",FUNCTION_ID_GET_SKINNING_MATRIX:"getSkinningMatrix",FUNCTION_SIGNATURE_GET_SKINNING_MATRIX:"mat4 getSkinningMatrix()"};d0.process=function(e,t){let n=e.shaderBuilder;n.addDefine("HAS_SKINNING",void 0,pe.VERTEX),QWe(n,t);let i=e.runtimeNode,o=i.computedJointMatrices;n.addUniform("mat4",`u_jointMatrices[${o.length}]`,pe.VERTEX),n.addVertexLines(LN);let r={u_jointMatrices:function(){return i.computedJointMatrices}};e.uniformMap=Tt(r,e.uniformMap)};function FWe(e){let t=-1,n=e.attributes,i=n.length;for(let o=0;o<i;o++){let r=n[o];(r.semantic===at.JOINTS||r.semantic===at.WEIGHTS)&&(t=Math.max(t,r.setIndex))}return t}function QWe(e,t){e.addFunction(d0.FUNCTION_ID_GET_SKINNING_MATRIX,d0.FUNCTION_SIGNATURE_GET_SKINNING_MATRIX,pe.VERTEX),e.addFunctionLines(d0.FUNCTION_ID_GET_SKINNING_MATRIX,["mat4 skinnedMatrix = mat4(0);"]);let i,o,r=["x","y","z","w"],s=FWe(t);for(i=0;i<=s;i++)for(o=0;o<=3;o++){let c=r[o],u=`skinnedMatrix += a_weights_${i}.${c} * u_jointMatrices[int(a_joints_${i}.${c})];`;e.addFunctionLines(d0.FUNCTION_ID_GET_SKINNING_MATRIX,[u])}e.addFunctionLines(d0.FUNCTION_ID_GET_SKINNING_MATRIX,["return skinnedMatrix;"])}var ON=d0;var FN=`void verticalExaggerationStage( + inout ProcessedAttributes attributes +) { + // Compute the distance from the camera to the local center of curvature. + vec4 vertexPositionENU = czm_modelToEnu * vec4(attributes.positionMC, 1.0); + vec2 vertexAzimuth = normalize(vertexPositionENU.xy); + // Curvature = 1 / radius of curvature. + float azimuthalCurvature = dot(vertexAzimuth * vertexAzimuth, czm_eyeEllipsoidCurvature); + float eyeToCenter = 1.0 / azimuthalCurvature + czm_eyeHeight; + + // Compute the approximate ellipsoid normal at the vertex position. + // Uses a circular approximation for the Earth curvature along the geodesic. + vec3 vertexPositionEC = (czm_modelView * vec4(attributes.positionMC, 1.0)).xyz; + vec3 centerToVertex = eyeToCenter * czm_eyeEllipsoidNormalEC + vertexPositionEC; + vec3 vertexNormal = normalize(centerToVertex); + + // Estimate the (sine of the) angle between the camera direction and the vertex normal + float verticalDistance = dot(vertexPositionEC, czm_eyeEllipsoidNormalEC); + float horizontalDistance = length(vertexPositionEC - verticalDistance * czm_eyeEllipsoidNormalEC); + float sinTheta = horizontalDistance / (eyeToCenter + verticalDistance); + bool isSmallAngle = clamp(sinTheta, 0.0, 0.05) == sinTheta; + + // Approximate the change in height above the ellipsoid, from camera to vertex position. + float exactVersine = 1.0 - dot(czm_eyeEllipsoidNormalEC, vertexNormal); + float smallAngleVersine = 0.5 * sinTheta * sinTheta; + float versine = isSmallAngle ? smallAngleVersine : exactVersine; + float dHeight = dot(vertexPositionEC, vertexNormal) - eyeToCenter * versine; + float vertexHeight = czm_eyeHeight + dHeight; + + // Transform the approximate vertex normal to model coordinates. + vec3 vertexNormalMC = (czm_inverseModelView * vec4(vertexNormal, 0.0)).xyz; + vertexNormalMC = normalize(vertexNormalMC); + + // Compute the exaggeration and apply it along the approximate vertex normal. + float stretch = u_verticalExaggerationAndRelativeHeight.x; + float shift = u_verticalExaggerationAndRelativeHeight.y; + float exaggeration = (vertexHeight - shift) * (stretch - 1.0); + attributes.positionMC += exaggeration * vertexNormalMC; +} +`;var hfe={name:"VerticalExaggerationPipelineStage"},kWe=new U;hfe.process=function(e,t,n){let{shaderBuilder:i,uniformMap:o}=e;i.addVertexLines(FN),i.addDefine("HAS_VERTICAL_EXAGGERATION",void 0,pe.VERTEX),i.addUniform("vec2","u_verticalExaggerationAndRelativeHeight",pe.VERTEX),o.u_verticalExaggerationAndRelativeHeight=function(){return U.fromElements(n.verticalExaggeration,n.verticalExaggerationRelativeHeight,kWe)}};var QN=hfe;var oY={};function UWe(e){let t=Oe.createTypedArray(e,e*2),n=e,i=0;for(let o=0;o<n;o+=3)t[i++]=o,t[i++]=o+1,t[i++]=o+1,t[i++]=o+2,t[i++]=o+2,t[i++]=o;return t}function GWe(e,t){let n=t.length,i=Oe.createTypedArray(e,n*2),o=0;for(let r=0;r<n;r+=3){let s=t[r],a=t[r+1],c=t[r+2];i[o++]=s,i[o++]=a,i[o++]=a,i[o++]=c,i[o++]=c,i[o++]=s}return i}function zWe(e){let t=e-2,n=2+t*4,i=Oe.createTypedArray(e,n),o=0;i[o++]=0,i[o++]=1;for(let r=0;r<t;r++)i[o++]=r+1,i[o++]=r+2,i[o++]=r+2,i[o++]=r;return i}function VWe(e,t){let i=t.length-2,o=2+i*4,r=Oe.createTypedArray(e,o),s=0;r[s++]=t[0],r[s++]=t[1];for(let a=0;a<i;a++){let c=t[a],u=t[a+1],f=t[a+2];r[s++]=u,r[s++]=f,r[s++]=f,r[s++]=c}return r}function HWe(e){let t=e-2,n=2+t*4,i=Oe.createTypedArray(e,n),o=0;i[o++]=0,i[o++]=1;for(let r=0;r<t;r++)i[o++]=r+1,i[o++]=r+2,i[o++]=r+2,i[o++]=0;return i}function WWe(e,t){let i=t.length-2,o=2+i*4,r=Oe.createTypedArray(e,o),s=0,a=t[0];r[s++]=a,r[s++]=t[1];for(let c=0;c<i;c++){let u=t[c+1],f=t[c+2];r[s++]=u,r[s++]=f,r[s++]=f,r[s++]=a}return r}oY.createWireframeIndices=function(e,t,n){let i=l(n);if(e===Me.TRIANGLES)return i?GWe(t,n):UWe(t);if(e===Me.TRIANGLE_STRIP)return i?VWe(t,n):zWe(t);if(e===Me.TRIANGLE_FAN)return i?WWe(t,n):HWe(t)};oY.getWireframeIndicesCount=function(e,t){return e===Me.TRIANGLES?t*2:e===Me.TRIANGLE_STRIP||e===Me.TRIANGLE_FAN?2+(t-2)*4:t};var AT=oY;var mfe={name:"WireframePipelineStage"};mfe.process=function(e,t,n){e.shaderBuilder.addDefine("HAS_WIREFRAME",void 0,pe.FRAGMENT);let o=e.model,r=jWe(t,e.indices,n);o._pipelineResources.push(r),e.wireframeIndexBuffer=r,o.statistics.addBuffer(r,!1);let a=e.primitiveType,c=e.count;e.primitiveType=Me.LINES,e.count=AT.getWireframeIndicesCount(a,c)};function jWe(e,t,n){let o=Ot.getAttributeBySemantic(e,at.POSITION).count,r=n.context.webgl2,s;if(l(t)){let f=t.buffer,h=t.count;l(f)&&r?(s=f.sizeInBytes===h?new Uint8Array(h):Oe.createTypedArray(o,h),f.getBufferData(s)):s=t.typedArray}let a=e.primitiveType,c=AT.createWireframeIndices(a,o,s),u=Oe.fromSizeInBytes(c.BYTES_PER_ELEMENT);return Ct.createIndexBuffer({context:n.context,typedArray:c,usage:Qe.STATIC_DRAW,indexDatatype:u})}var kN=mfe;function Afe(e){e=e??V.EMPTY_OBJECT;let t=e.primitive,n=e.node,i=e.model;this.primitive=t,this.node=n,this.model=i,this.pipelineStages=[],this.drawCommand=void 0,this.boundingSphere=void 0,this.boundingSphere2D=void 0,this.positionBuffer2D=void 0,this.batchLengths=void 0,this.batchOffsets=void 0,this.updateStages=[]}Afe.prototype.configurePipeline=function(e){let t=this.pipelineStages;t.length=0;let n=this.primitive,i=this.node,o=this.model,r=o.customShader,s=o.style,a=e.context.webgl2,u=e.mode!==ie.SCENE3D&&!e.scene3DOnly&&o._projectTo2D,f=e.verticalExaggeration!==1&&o.hasVerticalExaggeration,h=l(n.morphTargets)&&n.morphTargets.length>0,A=l(i.skin),g=l(o.imageryLayers),m=l(r),y=!(m&&l(r.fragmentShaderText))||r.mode!==Wp.REPLACE_MATERIAL,C=Ot.hasQuantizedAttributes(n.attributes),E=o.debugWireframe&&Me.isTriangles(n.primitiveType)&&(o._enableDebugWireframe||a),I=o.pointCloudShading,b=l(I)&&I.attenuation,S=l(I)&&I.backFaceCulling,B=n.primitiveType===Me.POINTS&&(l(s)||b||S),v=o._enableShowOutline&&l(n.outlineCoordinates),P=YWe(o,i,n),M=l(o.classificationType);u&&t.push(NN),t.push(tN),E&&t.push(kN),M&&t.push(k1),h&&t.push(SN),A&&t.push(ON),B&&t.push(DN),C&&t.push(J1),g&&(v?yt("outlines-and-draping","Primitive outlines disable imagery draping"):t.push(CN)),y&&t.push(bN),t.push(fy),t.push(ld),t.push(ef),P.hasPropertyTable&&(t.push(hy),t.push(Q1),t.push(z1)),f&&t.push(QN),m&&t.push(K1),t.push(IN),o.allowPicking&&t.push(wN),v&&t.push(RN),t.push(F1),t.push(MN)};function YWe(e,t,n){let i;return l(t.instances)&&(i=Ot.getFeatureIdsByLabel(t.instances.featureIds,e.instanceFeatureIdLabel),l(i))?{hasFeatureIds:!0,hasPropertyTable:l(i.propertyTableId)}:(i=Ot.getFeatureIdsByLabel(n.featureIds,e.featureIdLabel),l(i)?{hasFeatureIds:!0,hasPropertyTable:l(i.propertyTableId)}:{hasFeatureIds:!1,hasPropertyTable:!1})}var UN=Afe;function rY(e){e=e??V.EMPTY_OBJECT,this._sceneGraph=e.sceneGraph;let t=e.skin;this._skin=t,this._inverseBindMatrices=void 0,this._joints=[],this._jointMatrices=[],qWe(this)}Object.defineProperties(rY.prototype,{skin:{get:function(){return this._skin}},sceneGraph:{get:function(){return this._sceneGraph}},inverseBindMatrices:{get:function(){return this._inverseBindMatrices}},joints:{get:function(){return this._joints}},jointMatrices:{get:function(){return this._jointMatrices}}});function qWe(e){let t=e.skin,n=t.inverseBindMatrices;e._inverseBindMatrices=n;let i=t.joints,o=i.length,r=e.sceneGraph._runtimeNodes,s=e.joints,a=e._jointMatrices;for(let c=0;c<o;c++){let u=i[c].index,f=r[u];s.push(f);let h=n[c],A=pfe(f,h,new N);a.push(A)}}function pfe(e,t,n){let i=N.multiplyTransformation(e.transformToRoot,e.transform,n);return n=N.multiplyTransformation(i,t,n),n}rY.prototype.updateJointMatrices=function(){let e=this._jointMatrices,t=e.length;for(let n=0;n<t;n++){let i=this.joints[n],o=this.inverseBindMatrices[n];e[n]=pfe(i,o,e[n])}};var GN=rY;function KWe(){this.pass=void 0,this.alphaCutoff=void 0}var h0=KWe;function sY(e){this.name=e,this.fields=[]}sY.prototype.addField=function(e,t){let n=` ${e} ${t};`;this.fields.push(n)};sY.prototype.generateGlslLines=function(){let e=this.fields;return e.length===0&&(e=[" float _empty;"]),[].concat(`struct ${this.name}`,"{",e,"};")};var zN=sY;function aY(e){this.signature=e,this.body=[]}aY.prototype.addLines=function(e){let t=this.body;if(Array.isArray(e)){let n=e.length;for(let i=0;i<n;i++)t.push(` ${e[i]}`)}else t.push(` ${e}`)};aY.prototype.generateGlslLines=function(){return[].concat(this.signature,"{",this.body,"}")};var VN=aY;function Rl(){this._positionAttributeLine=void 0,this._nextAttributeLocation=1,this._attributeLocations={},this._attributeLines=[],this._structs={},this._functions={},this._vertexShaderParts={defineLines:[],uniformLines:[],shaderLines:[],varyingLines:[],structIds:[],functionIds:[]},this._fragmentShaderParts={defineLines:[],uniformLines:[],shaderLines:[],varyingLines:[],structIds:[],functionIds:[]}}Object.defineProperties(Rl.prototype,{attributeLocations:{get:function(){return this._attributeLocations}}});Rl.prototype.addDefine=function(e,t,n){n=n??pe.BOTH;let i=e;l(t)&&(i+=` ${t.toString()}`),pe.includesVertexShader(n)&&this._vertexShaderParts.defineLines.push(i),pe.includesFragmentShader(n)&&this._fragmentShaderParts.defineLines.push(i)};Rl.prototype.addStruct=function(e,t,n){this._structs[e]=new zN(t),pe.includesVertexShader(n)&&this._vertexShaderParts.structIds.push(e),pe.includesFragmentShader(n)&&this._fragmentShaderParts.structIds.push(e)};Rl.prototype.addStructField=function(e,t,n){this._structs[e].addField(t,n)};Rl.prototype.addFunction=function(e,t,n){this._functions[e]=new VN(t),pe.includesVertexShader(n)&&this._vertexShaderParts.functionIds.push(e),pe.includesFragmentShader(n)&&this._fragmentShaderParts.functionIds.push(e)};Rl.prototype.addFunctionLines=function(e,t){this._functions[e].addLines(t)};Rl.prototype.addUniform=function(e,t,n){n=n??pe.BOTH;let i=`uniform ${e} ${t};`;pe.includesVertexShader(n)&&this._vertexShaderParts.uniformLines.push(i),pe.includesFragmentShader(n)&&this._fragmentShaderParts.uniformLines.push(i)};Rl.prototype.setPositionAttribute=function(e,t){return this._positionAttributeLine=`in ${e} ${t};`,this._attributeLocations[t]=0,0};Rl.prototype.addAttribute=function(e,t){let n=`in ${e} ${t};`;this._attributeLines.push(n);let i=this._nextAttributeLocation;return this._attributeLocations[t]=i,this._nextAttributeLocation+=JWe(e),i};Rl.prototype.addVarying=function(e,t,n){n=l(n)?`${n} `:"";let i=`${e} ${t};`;this._vertexShaderParts.varyingLines.push(`${n}out ${i}`),this._fragmentShaderParts.varyingLines.push(`${n}in ${i}`)};Rl.prototype.addVertexLines=function(e){let t=this._vertexShaderParts.shaderLines;Array.isArray(e)?si(t,e):t.push(e)};Rl.prototype.addFragmentLines=function(e){let t=this._fragmentShaderParts.shaderLines;Array.isArray(e)?si(t,e):t.push(e)};Rl.prototype.buildShaderProgram=function(e){let t=l(this._positionAttributeLine)?[this._positionAttributeLine]:[],n=XWe(this),i=ZWe(this),o=t.concat(this._attributeLines,this._vertexShaderParts.uniformLines,this._vertexShaderParts.varyingLines,n.vertexLines,i.vertexLines,this._vertexShaderParts.shaderLines).join(` +`),r=new He({defines:this._vertexShaderParts.defineLines,sources:[o]}),s=this._fragmentShaderParts.uniformLines.concat(this._fragmentShaderParts.varyingLines,n.fragmentLines,i.fragmentLines,this._fragmentShaderParts.shaderLines).join(` +`),a=new He({defines:this._fragmentShaderParts.defineLines,sources:[s]});return an.fromCache({context:e,vertexShaderSource:r,fragmentShaderSource:a,attributeLocations:this._attributeLocations})};Rl.prototype.clone=function(){return ze(this,!0)};function XWe(e){let t=[],n=[],i,o=e._vertexShaderParts.structIds,r,s,a;for(i=0;i<o.length;i++)r=o[i],s=e._structs[r],a=s.generateGlslLines(),si(t,a);for(o=e._fragmentShaderParts.structIds,i=0;i<o.length;i++)r=o[i],s=e._structs[r],a=s.generateGlslLines(),si(n,a);return{vertexLines:t,fragmentLines:n}}function JWe(e){switch(e){case"mat2":return 2;case"mat3":return 3;case"mat4":return 4;default:return 1}}function ZWe(e){let t=[],n=[],i,o=e._vertexShaderParts.functionIds,r,s,a;for(i=0;i<o.length;i++)r=o[i],s=e._functions[r],a=s.generateGlslLines(),si(t,a);for(o=e._fragmentShaderParts.functionIds,i=0;i<o.length;i++)r=o[i],s=e._functions[r],a=s.generateGlslLines(),si(n,a);return{vertexLines:t,fragmentLines:n}}var Xp=Rl;function $We(e){this.shaderBuilder=new Xp,this.model=e,this.uniformMap={},this.alphaOptions=new h0,this.renderStateOptions=Ue.getState(Ue.fromCache({depthTest:{enabled:!0,func:Qa.LESS_OR_EQUAL}})),this.hasSilhouette=!1,this.hasSkipLevelOfDetail=!1,this.nodeRenderResources=[]}var HN=$We;var WN=`void silhouetteStage(inout vec4 color) { + if(model_silhouettePass) { + color = czm_gammaCorrect(model_silhouetteColor); + } +}`;var jN=`void silhouetteStage(in ProcessedAttributes attributes, inout vec4 positionClip) { + #ifdef HAS_NORMALS + if(model_silhouettePass) { + vec3 normal = normalize(czm_normal3D * attributes.normalMC); + normal.x *= czm_projection[0][0]; + normal.y *= czm_projection[1][1]; + positionClip.xy += normal.xy * positionClip.w * model_silhouetteSize * czm_pixelRatio / czm_viewport.z; + } + #endif +} +`;var iV={name:"ModelSilhouettePipelineStage"};iV.silhouettesLength=0;iV.process=function(e,t,n){l(t._silhouetteId)||(t._silhouetteId=++iV.silhouettesLength);let i=e.shaderBuilder;i.addDefine("HAS_SILHOUETTE",void 0,pe.BOTH),i.addVertexLines(jN),i.addFragmentLines(WN),i.addUniform("vec4","model_silhouetteColor",pe.FRAGMENT),i.addUniform("float","model_silhouetteSize",pe.VERTEX),i.addUniform("bool","model_silhouettePass",pe.BOTH);let o={model_silhouetteColor:function(){return t.silhouetteColor},model_silhouetteSize:function(){return t.silhouetteSize},model_silhouettePass:function(){return!1}};e.uniformMap=Tt(o,e.uniformMap),e.hasSilhouette=!0};var YN=iV;var qN=`void modelSplitterStage() +{ + // Don't split when rendering the shadow map, because it is rendered from + // the perspective of a totally different camera. +#ifndef SHADOW_MAP + if (model_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (model_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; +#endif +} +`;var oV={name:"ModelSplitterPipelineStage",SPLIT_DIRECTION_UNIFORM_NAME:"model_splitDirection"};oV.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine("HAS_MODEL_SPLITTER",void 0,pe.FRAGMENT),i.addFragmentLines(qN);let o={};i.addUniform("float",oV.SPLIT_DIRECTION_UNIFORM_NAME,pe.FRAGMENT),o[oV.SPLIT_DIRECTION_UNIFORM_NAME]=function(){return t.splitDirection},e.uniformMap=Tt(o,e.uniformMap)};var KN=oV;function eje(e,t){this.model=e.model,this.shaderBuilder=e.shaderBuilder.clone(),this.uniformMap=ze(e.uniformMap),this.alphaOptions=ze(e.alphaOptions),this.renderStateOptions=ze(e.renderStateOptions,!0),this.hasSilhouette=e.hasSilhouette,this.hasSkipLevelOfDetail=e.hasSkipLevelOfDetail,this.runtimeNode=t,this.attributes=[],this.attributeIndex=1,this.featureIdVertexAttributeSetIndex=0,this.instanceCount=0,this.primitiveRenderResources=[]}var XN=eje;function tje(e){e=e??V.EMPTY_OBJECT,this.lightingModel=e.lightingModel??nA.UNLIT}var JN=tje;function nje(e,t){this.model=e.model,this.runtimeNode=e.runtimeNode,this.attributes=e.attributes.slice(),this.attributeIndex=e.attributeIndex,this.featureIdVertexAttributeSetIndex=e.featureIdVertexAttributeSetIndex,this.uniformMap=ze(e.uniformMap),this.alphaOptions=ze(e.alphaOptions),this.renderStateOptions=ze(e.renderStateOptions,!0),this.hasSilhouette=e.hasSilhouette,this.hasSkipLevelOfDetail=e.hasSkipLevelOfDetail,this.shaderBuilder=e.shaderBuilder.clone(),this.instanceCount=e.instanceCount,this.runtimePrimitive=t;let n=t.primitive;this.count=l(n.indices)?n.indices.count:Ot.getAttributeBySemantic(n,"POSITION").count,this.hasPropertyTable=!1,this.indices=n.indices,this.wireframeIndexBuffer=void 0,this.primitiveType=n.primitiveType;let i=Ot.getPositionMinMax(n,this.runtimeNode.instancingTranslationMin,this.runtimeNode.instancingTranslationMax);this.positionMin=d.clone(i.min,new d),this.positionMax=d.clone(i.max,new d),this.boundingSphere=le.fromCornerPoints(this.positionMin,this.positionMax,new le),this.lightingOptions=new JN,this.pickId=void 0}var ZN=nje;function lY(e){e=e??V.EMPTY_OBJECT;let t=e.command,n=e.primitiveRenderResources,i=n.model;this._command=t,this._model=i,this._runtimePrimitive=n.runtimePrimitive,this._modelMatrix=t.modelMatrix,this._boundingVolume=t.boundingVolume,this._cullFace=t.renderState.cull.face;let o=i.classificationType;this._classificationType=o,this._classifiesTerrain=o!==Jn.CESIUM_3D_TILE,this._classifies3DTiles=o!==Jn.TERRAIN,this._useDebugWireframe=i._enableDebugWireframe&&i.debugWireframe,this._pickId=n.pickId,this._commandListTerrain=[],this._commandList3DTiles=[],this._commandListIgnoreShow=[],this._commandListDebugWireframe=[],this._commandListTerrainPicking=[],this._commandList3DTilesPicking=[],sje(this)}function ije(e){return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:!0,frontFunction:e,frontOperation:{fail:_t.KEEP,zFail:_t.DECREMENT_WRAP,zPass:_t.KEEP},backFunction:e,backOperation:{fail:_t.KEEP,zFail:_t.INCREMENT_WRAP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Qa.LESS_OR_EQUAL},depthMask:!1}}var oje={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:pn.PRE_MULTIPLIED_ALPHA_BLEND},rje={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1},yfe=[];function sje(e){let t=e._command,n=yfe;if(e._useDebugWireframe){t.pass=Be.OPAQUE,n.length=0,n.push(t),e._commandListDebugWireframe=$N(e,n,e._commandListDebugWireframe);let r=e._commandListDebugWireframe,s=r.length;for(let a=0;a<s;a++){let c=r[a];c.count*=2,c.offset*=2}return}let o=e.model.allowPicking;if(e._classifiesTerrain){let r=Be.TERRAIN_CLASSIFICATION,s=cY(t,r),a=gfe(t,r);n.length=0,n.push(s,a),e._commandListTerrain=$N(e,n,e._commandListTerrain),o&&(e._commandListTerrainPicking=_fe(e,n,e._commandListTerrainPicking))}if(e._classifies3DTiles){let r=Be.CESIUM_3D_TILE_CLASSIFICATION,s=cY(t,r),a=gfe(t,r);n.length=0,n.push(s,a),e._commandList3DTiles=$N(e,n,e._commandList3DTiles),o&&(e._commandList3DTilesPicking=_fe(e,n,e._commandList3DTilesPicking))}}function $N(e,t,n){let i=e._runtimePrimitive,o=i.batchLengths,r=i.batchOffsets,s=o.length,a=t.length;for(let c=0;c<s;c++){let u=o[c],f=r[c];for(let h=0;h<a;h++){let A=t[h],g=nt.shallowClone(A);g.count=u,g.offset=f,n.push(g)}}return n}function cY(e,t){let n=nt.shallowClone(e);n.cull=!1,n.pass=t;let i=t===Be.TERRAIN_CLASSIFICATION?Zn.ALWAYS:Zn.EQUAL,o=ije(i);return n.renderState=Ue.fromCache(o),n}function gfe(e,t){let n=nt.shallowClone(e);return n.cull=!1,n.pass=t,n.renderState=Ue.fromCache(oje),n}var aje=[];function _fe(e,t,n){let i=Ue.fromCache(rje),o=t[0],r=t[1],s=nt.shallowClone(o);s.cull=!0,s.pickOnly=!0;let a=nt.shallowClone(r);a.cull=!0,a.pickOnly=!0,a.renderState=i,a.pickId=e._pickId;let c=aje;return c.length=0,c.push(s,a),$N(e,c,n)}Object.defineProperties(lY.prototype,{command:{get:function(){return this._command}},runtimePrimitive:{get:function(){return this._runtimePrimitive}},batchLengths:{get:function(){return this._runtimePrimitive.batchLengths}},batchOffsets:{get:function(){return this._runtimePrimitive.batchOffsets}},model:{get:function(){return this._model}},classificationType:{get:function(){return this._classificationType}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=N.clone(e,this._modelMatrix);let t=this._runtimePrimitive.boundingSphere;this._boundingVolume=le.transform(t,this._modelMatrix,this._boundingVolume)}},boundingVolume:{get:function(){return this._boundingVolume}},cullFace:{get:function(){return this._cullFace},set:function(e){this._cullFace=e}}});lY.prototype.pushCommands=function(e,t){let n=e.passes;if(n.render){if(this._useDebugWireframe){si(t,this._commandListDebugWireframe);return}if(this._classifiesTerrain&&si(t,this._commandListTerrain),this._classifies3DTiles&&si(t,this._commandList3DTiles),e.invertClassification&&this._classifies3DTiles){if(this._commandListIgnoreShow.length===0){let o=Be.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,r=cY(this._command,o),s=yfe;s.length=0,s.push(r),this._commandListIgnoreShow=$N(this,s,this._commandListIgnoreShow)}si(t,this._commandListIgnoreShow)}}return n.pick&&(this._classifiesTerrain&&si(t,this._commandListTerrainPicking),this._classifies3DTiles&&si(t,this._commandList3DTilesPicking)),t};var eL=lY;function rV(e){e=e??V.EMPTY_OBJECT;let t=e.command,n=e.primitiveRenderResources,i=n.model;this._model=i;let o=n.runtimePrimitive;this._runtimePrimitive=o;let r=t.pass===Be.TRANSLUCENT,a=!o.primitive.material.doubleSided&&!r,c=n.hasSilhouette,u=!r&&!c,f=n.hasSkipLevelOfDetail&&!r,h=c;this._command=t,this._modelMatrix=N.clone(t.modelMatrix),this._boundingVolume=le.clone(t.boundingVolume),this._modelMatrix2D=new N,this._boundingVolume2D=new le,this._modelMatrix2DDirty=!1,this._backFaceCulling=t.renderState.cull.enabled,this._cullFace=t.renderState.cull.face,this._shadows=i.shadows,this._debugShowBoundingVolume=t.debugShowBoundingVolume,this._usesBackFaceCulling=a,this._needsTranslucentCommand=u,this._needsSkipLevelOfDetailCommands=f,this._needsSilhouetteCommands=h,this._originalCommand=void 0,this._translucentCommand=void 0,this._skipLodBackfaceCommand=void 0,this._skipLodStencilCommand=void 0,this._silhouetteModelCommand=void 0,this._silhouetteColorCommand=void 0,this._derivedCommands=[],this._has2DCommands=!1,cje(this)}function Jp(e){this.command=e.command,this.updateShadows=e.updateShadows,this.updateBackFaceCulling=e.updateBackFaceCulling,this.updateCullFace=e.updateCullFace,this.updateDebugShowBoundingVolume=e.updateDebugShowBoundingVolume,this.is2D=e.is2D??!1,this.derivedCommand2D=void 0}Jp.clone=function(e){return new Jp({command:e.command,updateShadows:e.updateShadows,updateBackFaceCulling:e.updateBackFaceCulling,updateCullFace:e.updateCullFace,updateDebugShowBoundingVolume:e.updateDebugShowBoundingVolume,is2D:e.is2D,derivedCommand2D:e.derivedCommand2D})};function cje(e){let t=e._command;t.modelMatrix=e._modelMatrix,t.boundingVolume=e._boundingVolume;let n=e._model,i=e._usesBackFaceCulling,o=e._derivedCommands;e._originalCommand=new Jp({command:t,updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0,is2D:!1}),o.push(e._originalCommand),e._needsTranslucentCommand&&(e._translucentCommand=new Jp({command:Aje(t),updateShadows:!0,updateBackFaceCulling:!1,updateCullFace:!1,updateDebugShowBoundingVolume:!0}),o.push(e._translucentCommand)),e._needsSkipLevelOfDetailCommands&&(e._skipLodBackfaceCommand=new Jp({command:Eje(t),updateShadows:!1,updateBackFaceCulling:!1,updateCullFace:i,updateDebugShowBoundingVolume:!1}),e._skipLodStencilCommand=new Jp({command:Ije(t,n),updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0}),o.push(e._skipLodBackfaceCommand),o.push(e._skipLodStencilCommand)),e._needsSilhouetteCommands&&(e._silhouetteModelCommand=new Jp({command:pje(t,n),updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0}),e._silhouetteColorCommand=new Jp({command:gje(t,n),updateShadows:!1,updateBackFaceCulling:!1,updateCullFace:!1,updateDebugShowBoundingVolume:!1}),o.push(e._silhouetteModelCommand),o.push(e._silhouetteColorCommand))}Object.defineProperties(rV.prototype,{command:{get:function(){return this._command}},runtimePrimitive:{get:function(){return this._runtimePrimitive}},model:{get:function(){return this._model}},primitiveType:{get:function(){return this._command.primitiveType}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=N.clone(e,this._modelMatrix),this._modelMatrix2DDirty=!0,this._boundingVolume=le.transform(this.runtimePrimitive.boundingSphere,this._modelMatrix,this._boundingVolume)}},boundingVolume:{get:function(){return this._boundingVolume}},shadows:{get:function(){return this._shadows},set:function(e){this._shadows=e,uje(this)}},backFaceCulling:{get:function(){return this._backFaceCulling},set:function(e){this._backFaceCulling!==e&&(this._backFaceCulling=e,fje(this))}},cullFace:{get:function(){return this._cullFace},set:function(e){this._cullFace!==e&&(this._cullFace=e,dje(this))}},debugShowBoundingVolume:{get:function(){return this._debugShowBoundingVolume},set:function(e){this._debugShowBoundingVolume!==e&&(this._debugShowBoundingVolume=e,hje(this))}}});function lje(e,t){let n=e._modelMatrix;e._modelMatrix2D=N.clone(n,e._modelMatrix2D),e._modelMatrix2D[13]-=D.sign(n[13])*2*D.PI*t.mapProjection.ellipsoid.maximumRadius,e._boundingVolume2D=le.transform(e.runtimePrimitive.boundingSphere,e._modelMatrix2D,e._boundingVolume2D)}function uje(e){let t=e.shadows,n=Bn.castShadows(t),i=Bn.receiveShadows(t),o=e._derivedCommands;for(let r=0;r<o.length;++r){let s=o[r];if(s.updateShadows){let a=s.command;a.castShadows=n,a.receiveShadows=i}}}function fje(e){let t=e.backFaceCulling,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateBackFaceCulling){let r=o.command,s=ze(r.renderState,!0);s.cull.enabled=t,r.renderState=Ue.fromCache(s)}}}function dje(e){let t=e.cullFace,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateCullFace){let r=o.command,s=ze(r.renderState,!0);s.cull.face=t,r.renderState=Ue.fromCache(s)}}}function hje(e){let t=e.debugShowBoundingVolume,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateDebugShowBoundingVolume){let r=o.command;r.debugShowBoundingVolume=t}}}rV.prototype.pushCommands=function(e,t){let n=Cfe(this,e);n&&!this._has2DCommands&&(mje(this),this._has2DCommands=!0,this._modelMatrix2DDirty=!0),this._modelMatrix2DDirty&&(lje(this,e),this._modelMatrix2DDirty=!1);let i=this.model.styleCommandsNeeded;if(!(this._needsTranslucentCommand&&l(i)&&(i!==Mh.ALL_OPAQUE&&gT(t,this._translucentCommand,n),i===Mh.ALL_TRANSLUCENT))){if(this._needsSkipLevelOfDetailCommands){let{tileset:o,tile:r}=this._model.content;if(o.hasMixedContent){r._finalResolution||gT(o._backfaceCommands,this._skipLodBackfaceCommand,n),_je(this,r,n),gT(t,this._skipLodStencilCommand,n);return}}if(this._needsSilhouetteCommands){gT(t,this._silhouetteModelCommand,n);return}return gT(t,this._originalCommand,n),t}};rV.prototype.pushSilhouetteCommands=function(e,t){let n=Cfe(this,e);return gT(t,this._silhouetteColorCommand,n),t};function gT(e,t,n){e.push(t.command),n&&e.push(t.derivedCommand2D.command)}function Cfe(e,t){if(t.mode!==ie.SCENE2D||e.model._projectTo2D)return!1;let i=e.model.sceneGraph._boundingSphere2D,o=i.center.y-i.radius,r=i.center.y+i.radius,s=t.mapProjection.ellipsoid.maximumRadius*D.PI;return o<s&&r>s||o<-s&&r>-s}function pT(e,t){if(!l(t))return;let n=Jp.clone(t),i=nt.shallowClone(t.command);return i.modelMatrix=e._modelMatrix2D,i.boundingVolume=e._boundingVolume2D,n.command=i,n.updateShadows=!1,n.is2D=!0,t.derivedCommand2D=n,e._derivedCommands.push(n),n}function mje(e){pT(e,e._originalCommand),pT(e,e._translucentCommand),pT(e,e._skipLodBackfaceCommand),pT(e,e._skipLodStencilCommand),pT(e,e._silhouetteModelCommand),pT(e,e._silhouetteColorCommand)}function Aje(e){let t=nt.shallowClone(e);t.pass=Be.TRANSLUCENT;let n=ze(e.renderState,!0);return n.cull.enabled=!1,n.depthMask=!1,n.blending=pn.ALPHA_BLEND,t.renderState=Ue.fromCache(n),t}function pje(e,t){let n=t._silhouetteId%255,i=nt.shallowClone(e),o=ze(e.renderState,!0);return o.stencilTest={enabled:!0,frontFunction:ee.ALWAYS,backFunction:ee.ALWAYS,reference:n,mask:-1,frontOperation:{fail:ee.KEEP,zFail:ee.KEEP,zPass:ee.REPLACE},backOperation:{fail:ee.KEEP,zFail:ee.KEEP,zPass:ee.REPLACE}},t.isInvisible()&&(o.colorMask={red:!1,green:!1,blue:!1,alpha:!1}),i.renderState=Ue.fromCache(o),i}function gje(e,t){let n=t._silhouetteId%255,i=nt.shallowClone(e),o=ze(e.renderState,!0);o.cull.enabled=!1,(e.pass===Be.TRANSLUCENT||t.silhouetteColor.alpha<1)&&(i.pass=Be.TRANSLUCENT,o.depthMask=!1,o.blending=pn.ALPHA_BLEND),o.stencilTest={enabled:!0,frontFunction:ee.NOTEQUAL,backFunction:ee.NOTEQUAL,reference:n,mask:-1,frontOperation:{fail:ee.KEEP,zFail:ee.KEEP,zPass:ee.KEEP},backOperation:{fail:ee.KEEP,zFail:ee.KEEP,zPass:ee.KEEP}};let s=ze(e.uniformMap);return s.model_silhouettePass=function(){return!0},i.renderState=Ue.fromCache(o),i.uniformMap=s,i.castShadows=!1,i.receiveShadows=!1,i}function _je(e,t,n){let i=e._skipLodStencilCommand,o=i.command,r=t._selectionDepth,s=yje(o);if(r!==s){let a=Cje(r),c=ze(o.renderState,!0);c.stencilTest.reference=a,o.renderState=Ue.fromCache(c),n&&(i.derivedCommand2D.renderState=c)}}function yje(e){return(e.renderState.stencilTest.reference&Kt.SKIP_LOD_MASK)>>>Kt.SKIP_LOD_BIT_SHIFT}function Cje(e){return Kt.CESIUM_3D_TILE_MASK|e<<Kt.SKIP_LOD_BIT_SHIFT}function Eje(e){let t=nt.shallowClone(e),n=ze(e.renderState,!0);n.cull.enabled=!0,n.cull.face=Mi.FRONT,n.colorMask={red:!1,green:!1,blue:!1,alpha:!1},n.polygonOffset={enabled:!0,factor:5,units:5};let i=ze(t.uniformMap),o=new U(5,5);return i.u_polygonOffset=function(){return o},t.renderState=Ue.fromCache(n),t.uniformMap=i,t.castShadows=!1,t.receiveShadows=!1,t}function Ije(e){let t=nt.shallowClone(e),n=ze(e.renderState,!0),{stencilTest:i}=n;return i.enabled=!0,i.mask=Kt.SKIP_LOD_MASK,i.reference=Kt.CESIUM_3D_TILE_MASK,i.frontFunction=Zn.GREATER_OR_EQUAL,i.frontOperation.zPass=_t.REPLACE,i.backFunction=Zn.GREATER_OR_EQUAL,i.backOperation.zPass=_t.REPLACE,n.stencilMask=Kt.CESIUM_3D_TILE_MASK|Kt.SKIP_LOD_MASK,t.renderState=Ue.fromCache(n),t}var tL=rV;var nL=`precision highp float; + +czm_modelVertexOutput defaultVertexOutput(vec3 positionMC) { + czm_modelVertexOutput vsOutput; + vsOutput.positionMC = positionMC; + vsOutput.pointSize = 1.0; + return vsOutput; +} + +void main() +{ + // Initialize the attributes struct with all + // attributes except quantized ones. + ProcessedAttributes attributes; + initializeAttributes(attributes); + + #ifdef HAS_IMAGERY + initializeImageryAttributes(); + #endif + + // Dequantize the quantized ones and add them to the + // attributes struct. + #ifdef USE_DEQUANTIZATION + dequantizationStage(attributes); + #endif + + #ifdef HAS_MORPH_TARGETS + morphTargetsStage(attributes); + #endif + + #ifdef HAS_SKINNING + skinningStage(attributes); + #endif + + #ifdef HAS_PRIMITIVE_OUTLINE + primitiveOutlineStage(); + #endif + + // Compute the bitangent according to the formula in the glTF spec. + // Normal and tangents can be affected by morphing and skinning, so + // the bitangent should not be computed until their values are finalized. + #ifdef HAS_BITANGENTS + attributes.bitangentMC = normalize(cross(attributes.normalMC, attributes.tangentMC) * attributes.tangentSignMC); + #endif + + FeatureIds featureIds; + featureIdStage(featureIds, attributes); + + #ifdef HAS_SELECTED_FEATURE_ID + SelectedFeature feature; + selectedFeatureIdStage(feature, featureIds); + // Handle any show properties that come from the style. + cpuStylingStage(attributes.positionMC, feature); + #endif + + #if defined(USE_2D_POSITIONS) || defined(USE_2D_INSTANCING) + // The scene mode 2D pipeline stage and instancing stage add a different + // model view matrix to accurately project the model to 2D. However, the + // output positions and normals should be transformed by the 3D matrices + // to keep the data the same for the fragment shader. + mat4 modelView = czm_modelView3D; + mat3 normal = czm_normal3D; + #else + // These are used for individual model projection because they will + // automatically change based on the scene mode. + mat4 modelView = czm_modelView; + mat3 normal = czm_normal; + #endif + + // Update the position for this instance in place + #ifdef HAS_INSTANCING + + // The legacy instance stage is used when rendering i3dm models that + // encode instances transforms in world space, as opposed to glTF models + // that use EXT_mesh_gpu_instancing, where instance transforms are encoded + // in object space. + #ifdef USE_LEGACY_INSTANCING + mat4 instanceModelView; + mat3 instanceModelViewInverseTranspose; + + legacyInstancingStage(attributes, instanceModelView, instanceModelViewInverseTranspose); + + modelView = instanceModelView; + normal = instanceModelViewInverseTranspose; + #else + instancingStage(attributes); + #endif + + #ifdef USE_PICKING + v_pickColor = a_pickColor; + #endif + + #endif + + Metadata metadata; + MetadataClass metadataClass; + MetadataStatistics metadataStatistics; + metadataStage(metadata, metadataClass, metadataStatistics, attributes); + + #ifdef HAS_VERTICAL_EXAGGERATION + verticalExaggerationStage(attributes); + #endif + + #ifdef HAS_CUSTOM_VERTEX_SHADER + czm_modelVertexOutput vsOutput = defaultVertexOutput(attributes.positionMC); + customShaderStage(vsOutput, attributes, featureIds, metadata, metadataClass, metadataStatistics); + #endif + + // Compute the final position in each coordinate system needed. + // This returns the value that will be assigned to gl_Position. + vec4 positionClip = geometryStage(attributes, modelView, normal); + + // This must go after the geometry stage as it needs v_positionWC + #ifdef HAS_ATMOSPHERE + atmosphereStage(attributes); + #endif + + #ifdef ENABLE_CLIPPING_POLYGONS + modelClippingPolygonsStage(attributes); + #endif + + #ifdef HAS_SILHOUETTE + silhouetteStage(attributes, positionClip); + #endif + + #ifdef HAS_POINT_CLOUD_SHOW_STYLE + float show = pointCloudShowStylingStage(attributes, metadata); + #else + float show = 1.0; + #endif + + #ifdef HAS_POINT_CLOUD_BACK_FACE_CULLING + show *= pointCloudBackFaceCullingStage(); + #endif + + #ifdef HAS_POINT_CLOUD_COLOR_STYLE + v_pointCloudColor = pointCloudColorStylingStage(attributes, metadata); + #endif + + #ifdef PRIMITIVE_TYPE_POINTS + #ifdef HAS_CUSTOM_VERTEX_SHADER + gl_PointSize = vsOutput.pointSize; + #elif defined(HAS_POINT_CLOUD_POINT_SIZE_STYLE) || defined(HAS_POINT_CLOUD_ATTENUATION) + gl_PointSize = pointCloudPointSizeStylingStage(attributes, metadata); + #else + gl_PointSize = 1.0; + #endif + + gl_PointSize *= show; + #endif + + // Important NOT to compute gl_Position = show * positionClip or we hit: + // https://github.com/CesiumGS/cesium/issues/11270 + // + // We will discard points with v_pointCloudShow == 0 in the fragment shader. + gl_Position = positionClip; + + #ifdef HAS_POINT_CLOUD_SHOW_STYLE + v_pointCloudShow = show; + #endif +} +`;var iL=` +precision highp float; + +czm_modelMaterial defaultModelMaterial() +{ + czm_modelMaterial material; + material.diffuse = vec3(0.0); + material.specular = vec3(1.0); + material.roughness = 1.0; + material.occlusion = 1.0; + material.normalEC = vec3(0.0, 0.0, 1.0); + material.emissive = vec3(0.0); + material.alpha = 1.0; + return material; +} + +vec4 handleAlpha(vec3 color, float alpha) +{ + #ifdef ALPHA_MODE_MASK + if (alpha < u_alphaCutoff) { + discard; + } + #endif + + return vec4(color, alpha); +} + +SelectedFeature selectedFeature; + +void main() +{ + #ifdef HAS_POINT_CLOUD_SHOW_STYLE + if (v_pointCloudShow == 0.0) + { + discard; + } + #endif + + #ifdef HAS_MODEL_SPLITTER + modelSplitterStage(); + #endif + + czm_modelMaterial material = defaultModelMaterial(); + + ProcessedAttributes attributes; + geometryStage(attributes); + + FeatureIds featureIds; + featureIdStage(featureIds, attributes); + + Metadata metadata; + MetadataClass metadataClass; + MetadataStatistics metadataStatistics; + metadataStage(metadata, metadataClass, metadataStatistics, attributes); + + //======================================================================== + // When not picking metadata START + #ifndef METADATA_PICKING_ENABLED + + #ifdef HAS_SELECTED_FEATURE_ID + selectedFeatureIdStage(selectedFeature, featureIds); + #endif + + #ifndef CUSTOM_SHADER_REPLACE_MATERIAL + materialStage(material, attributes, selectedFeature); + #endif + + #ifdef HAS_CUSTOM_FRAGMENT_SHADER + customShaderStage(material, attributes, featureIds, metadata, metadataClass, metadataStatistics); + #endif + + lightingStage(material, attributes); + + #ifdef HAS_SELECTED_FEATURE_ID + cpuStylingStage(material, selectedFeature); + #endif + + #ifdef HAS_MODEL_COLOR + modelColorStage(material); + #endif + + #ifdef HAS_PRIMITIVE_OUTLINE + primitiveOutlineStage(material); + #endif + + vec4 color = handleAlpha(material.diffuse, material.alpha); + + // When not picking metadata END + //======================================================================== + #else + //======================================================================== + // When picking metadata START + + vec4 metadataValues = vec4(0.0, 0.0, 0.0, 0.0); + metadataPickingStage(metadata, metadataClass, metadataValues); + vec4 color = metadataValues; + + #endif + // When picking metadata END + //======================================================================== + + #ifdef HAS_CLIPPING_PLANES + modelClippingPlanesStage(color); + #endif + + #ifdef ENABLE_CLIPPING_POLYGONS + modelClippingPolygonsStage(); + #endif + + //======================================================================== + // When not picking metadata START + #ifndef METADATA_PICKING_ENABLED + + #if defined(HAS_SILHOUETTE) && defined(HAS_NORMALS) + silhouetteStage(color); + #endif + + #ifdef HAS_ATMOSPHERE + atmosphereStage(color, attributes); + #endif + + #endif + // When not picking metadata END + //======================================================================== + + out_FragColor = color; +} + +`;function Efe(){}Efe.buildModelDrawCommand=function(e,t){let n=e.shaderBuilder,i=xje(e,n,t),o=bje(e,i,t),r=e.model;return l(r.classificationType)?new eL({primitiveRenderResources:e,command:o}):new tL({primitiveRenderResources:e,command:o})};function xje(e,t,n){t.addVertexLines(nL),t.addFragmentLines(iL);let i=e.model,o=t.buildShaderProgram(n.context);return i._pipelineResources.push(o),o}function bje(e,t,n){let i=Tje(e),o=new li({context:n.context,indexBuffer:i,attributes:e.attributes}),r=e.model;r._pipelineResources.push(o);let s=e.alphaOptions.pass,a=r.sceneGraph,c=n.mode===ie.SCENE3D,u,f;if(!c&&!n.scene3DOnly&&r._projectTo2D)u=N.multiplyTransformation(a._computedModelMatrix,e.runtimeNode.computedTransform,new N),f=e.runtimePrimitive.boundingSphere2D;else{let C=c?a._computedModelMatrix:a._computedModelMatrix2D;u=N.multiplyTransformation(C,e.runtimeNode.computedTransform,new N),f=le.transform(e.boundingSphere,u)}let h=ze(Ue.fromCache(e.renderStateOptions),!0);h.cull.face=Ot.getCullFace(u,e.primitiveType),h=Ue.fromCache(h);let A=l(r.classificationType),g=A?!1:Bn.castShadows(r.shadows),m=A?!1:Bn.receiveShadows(r.shadows),_=A?void 0:e.pickId;return new nt({boundingVolume:f,modelMatrix:u,uniformMap:e.uniformMap,renderState:h,vertexArray:o,shaderProgram:t,cull:r.cull,pass:s,count:e.count,owner:r,pickId:_,pickMetadataAllowed:!0,instanceCount:e.instanceCount,primitiveType:e.primitiveType,debugShowBoundingVolume:r.debugShowBoundingVolume,castShadows:g,receiveShadows:m})}function Tje(e){let t=e.wireframeIndexBuffer;if(l(t))return t;let n=e.indices;if(l(n))return n.buffer}var oL=Efe;function zc(e){e=e??V.EMPTY_OBJECT;let t=e.modelComponents;this._model=e.model,this._components=t,this._pipelineStages=[],this._updateStages=[],this._runtimeNodes=[],this._rootNodes=[],this._skinnedNodes=[],this._runtimeSkins=[],this.modelPipelineStages=[],this._boundingSphere=void 0,this._boundingSphere2D=void 0,this._computedModelMatrix=N.clone(N.IDENTITY),this._computedModelMatrix2D=N.clone(N.IDENTITY),this._axisCorrectionMatrix=Ot.getAxisCorrectionMatrix(t.upAxis,t.forwardAxis,new N),this._runtimeArticulations={},Sje(this)}Object.defineProperties(zc.prototype,{components:{get:function(){return this._components}},computedModelMatrix:{get:function(){return this._computedModelMatrix}},axisCorrectionMatrix:{get:function(){return this._axisCorrectionMatrix}},boundingSphere:{get:function(){return this._boundingSphere}}});function Sje(e){let t=e._components,n=t.scene,o=e._model.modelMatrix;Ife(e,o);let r=t.articulations,s=r.length,a=e._runtimeArticulations;for(let E=0;E<s;E++){let I=r[E],b=new E1({articulation:I,sceneGraph:e}),S=b.name;a[S]=b}let c=t.nodes,u=c.length;e._runtimeNodes=new Array(u);let h=n.nodes.length,A=N.IDENTITY;for(let E=0;E<h;E++){let I=n.nodes[E],b=xfe(e,I,A);e._rootNodes.push(b)}let g=t.skins,m=e._runtimeSkins,_=g.length;for(let E=0;E<_;E++){let I=g[E];m.push(new GN({skin:I,sceneGraph:e}))}let y=e._skinnedNodes,C=y.length;for(let E=0;E<C;E++){let I=y[E],b=e._runtimeNodes[I],B=c[I].skin.index;b._runtimeSkin=m[B],b.updateJointMatrices()}e.applyArticulations()}function Ife(e,t){let n=e._components,i=e._model;e._computedModelMatrix=N.multiplyTransformation(t,n.transform,e._computedModelMatrix),e._computedModelMatrix=N.multiplyTransformation(e._computedModelMatrix,e._axisCorrectionMatrix,e._computedModelMatrix),e._computedModelMatrix=N.multiplyByUniformScale(e._computedModelMatrix,i.computedScale,e._computedModelMatrix)}var wje=new d;function Bje(e,t){let n=e._computedModelMatrix,i=N.getTranslation(n,wje);if(!d.equals(i,d.ZERO))e._computedModelMatrix2D=kt.basisTo2D(t.mapProjection,n,e._computedModelMatrix2D);else{let o=e.boundingSphere.center,r=kt.ellipsoidTo2DModelMatrix(t.mapProjection,o,e._computedModelMatrix2D);e._computedModelMatrix2D=N.multiply(r,n,e._computedModelMatrix2D)}e._boundingSphere2D=le.transform(e._boundingSphere,e._computedModelMatrix2D,e._boundingSphere2D)}function xfe(e,t,n){let i=[],o=Ot.getNodeTransform(t),r=t.children.length;for(let f=0;f<r;f++){let h=t.children[f],A=N.multiplyTransformation(n,o,new N),g=xfe(e,h,A);i.push(g)}let s=new O1({node:t,transform:o,transformToRoot:n,children:i,sceneGraph:e}),a=t.primitives.length;for(let f=0;f<a;f++)s.runtimePrimitives.push(new UN({primitive:t.primitives[f],node:t,model:e._model}));let c=t.index;e._runtimeNodes[c]=s,l(t.skin)&&e._skinnedNodes.push(c);let u=t.name;if(l(u)){let f=e._model,h=new B1(f,s);f._nodesByName[u]=h}return c}var Dje=new d,vje=new d,Pje=new d,Rje=new d;zc.prototype.buildDrawCommands=function(e){let t=this.buildRenderResources(e);this.computeBoundingVolumes(t),this.createDrawCommands(t,e)};zc.prototype.buildRenderResources=function(e){let t=this._model,n=new HN(t);t.statistics.clear(),this.configurePipeline(e);let i=this.modelPipelineStages;for(let o=0;o<i.length;o++)i[o].process(n,t,e);for(let o=0;o<this._runtimeNodes.length;o++){let r=this._runtimeNodes[o];if(!l(r))continue;r.configurePipeline();let s=r.pipelineStages,a=new XN(n,r);n.nodeRenderResources[o]=a;for(let c=0;c<s.length;c++)s[c].process(a,r.node,e);for(let c=0;c<r.runtimePrimitives.length;c++){let u=r.runtimePrimitives[c];u.configurePipeline(e);let f=u.pipelineStages,h=new ZN(a,u);a.primitiveRenderResources[c]=h;for(let A=0;A<f.length;A++)f[A].process(h,u.primitive,e)}}return n};zc.prototype.computeBoundingVolumes=function(e){let t=this._model,n=d.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,Dje),i=d.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,vje);for(let o=0;o<this._runtimeNodes.length;o++){let r=this._runtimeNodes[o];if(!l(r))continue;let s=e.nodeRenderResources[o],a=r.computedTransform;for(let c=0;c<r.runtimePrimitives.length;c++){let u=r.runtimePrimitives[c],f=s.primitiveRenderResources[c];u.boundingSphere=le.clone(f.boundingSphere,new le);let h=N.multiplyByPoint(a,f.positionMin,Pje),A=N.multiplyByPoint(a,f.positionMax,Rje);d.minimumByComponent(n,h,n),d.maximumByComponent(i,A,i)}}this._boundingSphere=le.fromCornerPoints(n,i,new le),this._boundingSphere=le.transformWithoutScale(this._boundingSphere,this._axisCorrectionMatrix,this._boundingSphere),this._boundingSphere=le.transform(this._boundingSphere,this._components.transform,this._boundingSphere),t._boundingSphere=le.transform(this._boundingSphere,t.modelMatrix,t._boundingSphere),t._initialRadius=t._boundingSphere.radius,t._boundingSphere.radius*=t._clampedScale};zc.prototype.createDrawCommands=function(e,t){for(let n=0;n<this._runtimeNodes.length;n++){let i=this._runtimeNodes[n];if(!l(i))continue;let o=e.nodeRenderResources[n];for(let r=0;r<i.runtimePrimitives.length;r++){let s=i.runtimePrimitives[r],a=o.primitiveRenderResources[r],c=oL.buildModelDrawCommand(a,t);s.drawCommand=c}}};zc.prototype.configurePipeline=function(e){let t=this.modelPipelineStages;t.length=0;let n=this._model,i=e.fog.enabled&&e.fog.renderable;l(n.color)&&t.push(uy),!l(n.classificationType)&&(n.imageBasedLighting.enabled&&t.push(y1),n.isClippingEnabled()&&t.push(b1),n.isClippingPolygonsEnabled()&&t.push(w1),n.hasSilhouette(e)&&t.push(YN),l(n.splitDirection)&&n.splitDirection!==br.NONE&&t.push(KN),wr.is3DTiles(n.type)&&t.push(m1),i&&t.push(g1))};zc.prototype.update=function(e,t){let n,i,o;for(n=0;n<this._runtimeNodes.length;n++){let r=this._runtimeNodes[n];if(!l(r))continue;for(i=0;i<r.updateStages.length;i++)r.updateStages[i].update(r,this,e);let s=e.mode!==ie.SCENE3D&&this._model._projectTo2D;for(t&&!s&&this.updateJointMatrices(),i=0;i<r.runtimePrimitives.length;i++){let a=r.runtimePrimitives[i];for(o=0;o<a.updateStages.length;o++)a.updateStages[o].update(a,this)}}};zc.prototype.updateModelMatrix=function(e,t){Ife(this,e),t.mode!==ie.SCENE3D&&Bje(this,t);let n=this._rootNodes;for(let i=0;i<n.length;i++){let o=this._runtimeNodes[n[i]];o._transformDirty=!0}};zc.prototype.updateJointMatrices=function(){let e=this._skinnedNodes,t=e.length;for(let n=0;n<t;n++){let i=e[n];this._runtimeNodes[i].updateJointMatrices()}};function bfe(e,t,n,i,o){if(n&&!t.show)return;let r=t.children.length;for(let c=0;c<r;c++){let u=t.getChild(c);bfe(e,u,n,i,o)}let s=t.runtimePrimitives,a=s.length;for(let c=0;c<a;c++){let u=s[c];i(u,o)}}function sV(e,t,n,i){let o=e._rootNodes,r=o.length;for(let s=0;s<r;s++){let a=o[s],c=e._runtimeNodes[a];bfe(e,c,t,n,i)}}var Mje={backFaceCulling:void 0};zc.prototype.updateBackFaceCulling=function(e){let t=Mje;t.backFaceCulling=e,sV(this,!1,Nje,t)};function Nje(e,t){let n=e.drawCommand;n.backFaceCulling=t.backFaceCulling}var Lje={shadowMode:void 0};zc.prototype.updateShadows=function(e){let t=Lje;t.shadowMode=e,sV(this,!1,Oje,t)};function Oje(e,t){let n=e.drawCommand;n.shadows=t.shadowMode}var Fje={debugShowBoundingVolume:void 0};zc.prototype.updateShowBoundingVolume=function(e){let t=Fje;t.debugShowBoundingVolume=e,sV(this,!1,Qje,t)};function Qje(e,t){let n=e.drawCommand;n.debugShowBoundingVolume=t.debugShowBoundingVolume}var Tfe=[],kje={frameState:void 0,hasSilhouette:void 0};zc.prototype.pushDrawCommands=function(e){let t=Tfe;t.length=0;let n=kje;n.hasSilhouette=this._model.hasSilhouette(e),n.frameState=e,sV(this,!0,Uje,n),si(e.commandList,t)};function Uje(e,t){let n=t.frameState,i=t.hasSilhouette,o=n.passes,r=Tfe,s=e.drawCommand;s.pushCommands(n,n.commandList),i&&!o.pick&&s.pushSilhouetteCommands(n,r)}zc.prototype.setArticulationStage=function(e,t){let n=e.split(" ");if(n.length!==2)return;let i=n[0],o=n[1],r=this._runtimeArticulations[i];l(r)&&r.setArticulationStage(o,t)};zc.prototype.applyArticulations=function(){let e=this._runtimeArticulations;for(let t in e)e.hasOwnProperty(t)&&e[t].apply()};var rL=zc;function py(){this.pointsLength=0,this.trianglesLength=0,this.geometryByteLength=0,this.texturesByteLength=0,this.propertyTablesByteLength=0,this._bufferIdSet={},this._textureIdByteLengths={},this._batchTextureIdMap=new vt}Object.defineProperties(py.prototype,{batchTexturesByteLength:{get:function(){let e=this._batchTextureIdMap.length,t=this._batchTextureIdMap.values,n=0;for(let i=0;i<e;i++)n+=t[i].byteLength;return n}}});py.prototype.clear=function(){this.pointsLength=0,this.trianglesLength=0,this.geometryByteLength=0,this.texturesByteLength=0,this.propertyTablesByteLength=0,this._bufferIdSet={},this._textureIdByteLengths={},this._batchTextureIdMap.removeAll()};py.prototype.addBuffer=function(e,t){if(!this._bufferIdSet.hasOwnProperty(e._id)){let n=t?2:1;this.geometryByteLength+=e.sizeInBytes*n}this._bufferIdSet[e._id]=!0};py.prototype.addTexture=function(e){this._textureIdByteLengths.hasOwnProperty(e._id)||(this.texturesByteLength+=e.sizeInBytes,this._textureIdByteLengths[e._id]=e.sizeInBytes)};py.prototype.getTextureIds=function(){return Object.keys(this._textureIdByteLengths)};py.prototype.getTextureByteLengthById=function(e){return this._textureIdByteLengths[e]};py.prototype.addBatchTexture=function(e){this._batchTextureIdMap.contains(e._id)||this._batchTextureIdMap.set(e._id,e)};var sL=py;var Dfe=xr(VU(),1);var Sfe={},m0=Uint32Array.BYTES_PER_ELEMENT;Sfe.parse=function(e,t){t=t??0;let n=new Uint8Array(e),i=new DataView(e);t+=m0;let o=i.getUint32(t,!0);if(o!==1)throw new ce(`Only Point Cloud tile version 1 is supported. Version ${o} is not.`);t+=m0,t+=m0;let r=i.getUint32(t,!0);if(r===0)throw new ce("Feature table must have a byte length greater than zero");t+=m0;let s=i.getUint32(t,!0);t+=m0;let a=i.getUint32(t,!0);t+=m0;let c=i.getUint32(t,!0);t+=m0;let u=dr(n,t,r);t+=r;let f=new Uint8Array(e,t,s);t+=s;let h,A;a>0&&(h=dr(n,t,a),t+=a,c>0&&(A=new Uint8Array(e,t,c),t+=c));let g=new Ph(u,f),m=g.getGlobalProperty("POINTS_LENGTH");if(g.featuresLength=m,!l(m))throw new ce("Feature table global property: POINTS_LENGTH must be defined");let _=g.getGlobalProperty("RTC_CENTER",q.FLOAT,3);l(_)&&(_=d.unpack(_));let y=Gje(g,h);if(y.rtcCenter=_,y.pointsLength=m,!y.hasPositions){let C=zje(g);y.positions=C,y.hasPositions=y.hasPositions||l(C)}if(!y.hasPositions)throw new ce("Either POSITION or POSITION_QUANTIZED must be defined.");if(!y.hasNormals){let C=Hje(g);y.normals=C,y.hasNormals=y.hasNormals||l(C)}if(!y.hasColors){let C=Vje(g);y.colors=C,y.hasColors=y.hasColors||l(C),y.hasConstantColor=l(y.constantColor),y.isTranslucent=l(C)&&C.isTranslucent}if(!y.hasBatchIds){let C=Wje(g);y.batchIds=C,y.hasBatchIds=y.hasBatchIds||l(C)}if(y.hasBatchIds){let C=g.getGlobalProperty("BATCH_LENGTH");if(!l(C))throw new ce("Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.");y.batchLength=C}return l(A)&&(A=new Uint8Array(A),y.batchTableJson=h,y.batchTableBinary=A),y};function Gje(e,t){let n=e.json,i,o,r,s=l(n.extensions)?n.extensions["3DTILES_draco_point_compression"]:void 0,a=l(t)&&l(t.extensions)?t.extensions["3DTILES_draco_point_compression"]:void 0;l(a)&&(r=a.properties);let c,u,f,h,A;if(l(s)){o=s.properties;let m=s.byteOffset,_=s.byteLength;if(!l(o)||!l(m)||!l(_))throw new ce("Draco properties, byteOffset, and byteLength must be defined");i=e.buffer.slice(m,m+_),c=l(o.POSITION),u=l(o.RGB)||l(o.RGBA),f=l(o.NORMAL),h=l(o.BATCH_ID),A=l(o.RGBA)}let g;return l(i)&&(g={buffer:i,featureTableProperties:o,batchTableProperties:r,properties:Tt(o,r),dequantizeInShader:!0}),{draco:g,hasPositions:c,hasColors:u,isTranslucent:A,hasNormals:f,hasBatchIds:h}}function zje(e){let t=e.json,n;if(l(t.POSITION))return n=e.getPropertyArray("POSITION",q.FLOAT,3),{name:at.POSITION,semantic:at.POSITION,typedArray:n,isQuantized:!1,componentDatatype:q.FLOAT,type:zt.VEC3};if(l(t.POSITION_QUANTIZED)){n=e.getPropertyArray("POSITION_QUANTIZED",q.UNSIGNED_SHORT,3);let i=e.getGlobalProperty("QUANTIZED_VOLUME_SCALE",q.FLOAT,3);if(!l(i))throw new ce("Global property: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");let o=65535,r=e.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",q.FLOAT,3);if(!l(r))throw new ce("Global property: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");return{name:at.POSITION,semantic:at.POSITION,typedArray:n,isQuantized:!0,componentDatatype:q.FLOAT,type:zt.VEC3,quantizedRange:o,quantizedVolumeOffset:d.unpack(r),quantizedVolumeScale:d.unpack(i),quantizedComponentDatatype:q.UNSIGNED_SHORT,quantizedType:zt.VEC3}}}function Vje(e){let t=e.json,n;if(l(t.RGBA))return n=e.getPropertyArray("RGBA",q.UNSIGNED_BYTE,4),{name:at.COLOR,semantic:at.COLOR,setIndex:0,typedArray:n,componentDatatype:q.UNSIGNED_BYTE,type:zt.VEC4,normalized:!0,isRGB565:!1,isTranslucent:!0};if(l(t.RGB))return n=e.getPropertyArray("RGB",q.UNSIGNED_BYTE,3),{name:"COLOR",semantic:at.COLOR,setIndex:0,typedArray:n,componentDatatype:q.UNSIGNED_BYTE,type:zt.VEC3,normalized:!0,isRGB565:!1,isTranslucent:!1};if(l(t.RGB565))return n=e.getPropertyArray("RGB565",q.UNSIGNED_SHORT,1),{name:"COLOR",semantic:at.COLOR,setIndex:0,typedArray:n,componentDatatype:q.FLOAT,type:zt.VEC3,normalized:!1,isRGB565:!0,isTranslucent:!1};if(l(t.CONSTANT_RGBA)){let i=e.getGlobalProperty("CONSTANT_RGBA",q.UNSIGNED_BYTE,4),o=i[3],r=G.fromBytes(i[0],i[1],i[2],o),s=o<255;return{name:at.COLOR,semantic:at.COLOR,setIndex:0,constantColor:r,componentDatatype:q.FLOAT,type:zt.VEC4,isQuantized:!1,isTranslucent:s}}}function Hje(e){let t=e.json,n;if(l(t.NORMAL))return n=e.getPropertyArray("NORMAL",q.FLOAT,3),{name:at.NORMAL,semantic:at.NORMAL,typedArray:n,octEncoded:!1,octEncodedZXY:!1,componentDatatype:q.FLOAT,type:zt.VEC3};if(l(t.NORMAL_OCT16P))return n=e.getPropertyArray("NORMAL_OCT16P",q.UNSIGNED_BYTE,2),{name:at.NORMAL,semantic:at.NORMAL,typedArray:n,octEncoded:!0,octEncodedZXY:!1,quantizedRange:(1<<8)-1,quantizedType:zt.VEC2,quantizedComponentDatatype:q.UNSIGNED_BYTE,componentDatatype:q.FLOAT,type:zt.VEC3}}function Wje(e){let t=e.json;if(l(t.BATCH_ID)){let n=e.getPropertyArray("BATCH_ID",q.UNSIGNED_SHORT,1);return{name:at.FEATURE_ID,semantic:at.FEATURE_ID,setIndex:0,typedArray:n,componentDatatype:q.fromTypedArray(n),type:zt.SCALAR}}}var A0=Sfe;var jje=xn.Components,Yje=xn.Scene,qje=xn.Node,Kje=xn.Primitive,Xje=xn.Attribute,wfe=xn.Quantization,Jje=xn.FeatureIdAttribute,Zje=xn.Material,$je=xn.MetallicRoughness;function gy(e){e=e??V.EMPTY_OBJECT;let t=e.arrayBuffer,n=e.byteOffset??0;this._arrayBuffer=t,this._byteOffset=n,this._loadAttributesFor2D=e.loadAttributesFor2D??!1,this._parsedContent=void 0,this._decodePromise=void 0,this._decodedAttributes=void 0,this._promise=void 0,this._error=void 0,this._state=dt.UNLOADED,this._buffers=[],this._components=void 0,this._transform=N.IDENTITY}l(Object.create)&&(gy.prototype=Object.create(Hi.prototype),gy.prototype.constructor=gy);Object.defineProperties(gy.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}},transform:{get:function(){return this._transform}}});gy.prototype.load=function(){if(l(this._promise))return this._promise;this._parsedContent=A0.parse(this._arrayBuffer,this._byteOffset),this._state=dt.PROCESSING,this._promise=Promise.resolve(this)};gy.prototype.process=function(e){if(l(this._error)){let t=this._error;throw this._error=void 0,t}if(this._state===dt.READY)return!0;if(this._state===dt.PROCESSING){if(l(this._decodePromise))return!1;this._decodePromise=eYe(this,e.context)}return!1};function eYe(e,t){let i=e._parsedContent.draco,o;if(l(i)?o=Dp.decodePointCloud(i,t):o=Promise.resolve(),!!l(o))return e._decodePromise=o,o.then(function(r){if(!e.isDestroyed())return l(r)&&tYe(e,i,r),dYe(e,t),e._state=dt.READY,e}).catch(function(r){e.unload(),e._state=dt.FAILED;let s="Failed to load Draco pnts";e._error=e.getError(s,r)})}function tYe(e,t,n){e._state=dt.READY;let i=e._parsedContent,o;if(l(n.POSITION)){if(o={name:"POSITION",semantic:at.POSITION,typedArray:n.POSITION.array,componentDatatype:q.FLOAT,type:zt.VEC3,isQuantized:!1},l(n.POSITION.data.quantization)){let a=n.POSITION.data.quantization,c=a.range,u=d.fromElements(c,c,c),f=d.unpack(a.minValues),h=(1<<a.quantizationBits)-1;o.isQuantized=!0,o.quantizedRange=h,o.quantizedVolumeOffset=f,o.quantizedVolumeScale=u,o.quantizedComponentDatatype=h<=255?q.UNSIGNED_BYTE:q.UNSIGNED_SHORT,o.quantizedType=zt.VEC3}i.positions=o}if(l(n.NORMAL)){if(o={name:"NORMAL",semantic:at.NORMAL,typedArray:n.NORMAL.array,componentDatatype:q.FLOAT,type:zt.VEC3,isQuantized:!1,octEncoded:!1,octEncodedZXY:!1},l(n.NORMAL.data.quantization)){let a=(1<<n.NORMAL.data.quantization.quantizationBits)-1;o.quantizedRange=a,o.octEncoded=!0,o.octEncodedZXY=!0,o.quantizedComponentDatatype=q.UNSIGNED_BYTE,o.quantizedType=zt.VEC2}i.normals=o}if(l(n.RGBA)?i.colors={name:"COLOR",semantic:at.COLOR,setIndex:0,typedArray:n.RGBA.array,componentDatatype:q.UNSIGNED_BYTE,type:zt.VEC4,normalized:!0,isTranslucent:!0}:l(n.RGB)&&(i.colors={name:"COLOR",semantic:at.COLOR,setIndex:0,typedArray:n.RGB.array,componentDatatype:q.UNSIGNED_BYTE,type:zt.VEC3,normalized:!0,isTranslucent:!1}),l(n.BATCH_ID)){let a=n.BATCH_ID.array;i.batchIds={name:"_FEATURE_ID",semantic:at.FEATURE_ID,setIndex:0,typedArray:a,componentDatatype:q.fromTypedArray(a),type:zt.SCALAR}}let r=i.batchTableJson,s=t.batchTableProperties;for(let a in s)if(s.hasOwnProperty(a)){let c=n[a];l(r)||(r={}),i.hasDracoBatchTable=!0;let u=c.data;r[a]={byteOffset:u.byteOffset,type:nYe(u.componentsPerAttribute),componentType:iYe(u.componentDatatype),typedArray:c.array}}i.batchTableJson=r}function nYe(e){switch(e){case 1:return"SCALAR";case 2:return"VEC2";case 3:return"VEC3";case 4:return"VEC4"}}function iYe(e){switch(e){case ee.BYTE:return"BYTE";case ee.UNSIGNED_BYTE:return"UNSIGNED_BYTE";case ee.SHORT:return"SHORT";case ee.UNSIGNED_SHORT:return"UNSIGNED_SHORT";case ee.INT:return"INT";case ee.UNSIGNED_INT:return"UNSIGNED_INT";case ee.DOUBLE:return"DOUBLE";case ee.FLOAT:return"FLOAT"}}function aL(e,t,n){let i=t.typedArray,o;if(t.octEncoded&&(o=new wfe,o.octEncoded=t.octEncoded,o.octEncodedZXY=t.octEncodedZXY,o.normalizationRange=t.quantizedRange,o.type=t.quantizedType,o.componentDatatype=t.quantizedComponentDatatype),t.isQuantized){o=new wfe;let a=t.quantizedRange;o.normalizationRange=a,o.quantizedVolumeOffset=d.ZERO;let c=t.quantizedVolumeScale;o.quantizedVolumeDimensions=c,o.quantizedVolumeStepSize=d.divideByScalar(c,a,new d),o.componentDatatype=t.quantizedComponentDatatype,o.type=t.quantizedType}let r=new Xje;if(r.name=t.name,r.semantic=t.semantic,r.setIndex=t.setIndex,r.componentDatatype=t.componentDatatype,r.type=t.type,r.normalized=t.normalized??!1,r.min=t.min,r.max=t.max,r.quantization=o,t.isRGB565&&(i=On.decodeRGB565(i)),l(t.constantColor)){let a=new Array(4);r.constant=G.pack(t.constantColor,a)}else{let a=Ct.createVertexBuffer({typedArray:i,context:n,usage:Qe.STATIC_DRAW});a.vertexArrayDestroyable=!1,e._buffers.push(a),r.buffer=a}let s=e._loadAttributesFor2D;return r.semantic===at.POSITION&&s&&(r.typedArray=i),r}var Bfe,aV;function oYe(e){if(!l(aV)){Bfe=new Dfe.default(0),aV=new Array(e);for(let t=0;t<e;++t)aV[t]=Bfe.random()}return aV}var rYe=new d,sYe=new d,aYe=new d;function cYe(e){let t=e.typedArray,n=20,i=t.length/3,o=Math.min(i,n),r=oYe(n),s=Number.MAX_VALUE,a=-Number.MAX_VALUE,c=d.fromElements(s,s,s,rYe),u=d.fromElements(a,a,a,sYe),f,h,A;if(e.isQuantized)c=d.ZERO,u=e.quantizedVolumeScale;else for(f=0;f<o;++f)h=Math.floor(r[f]*i),A=d.unpack(t,h*3,aYe),d.minimumByComponent(c,A,c),d.maximumByComponent(u,A,u);e.min=d.clone(c),e.max=d.clone(u)}var lYe={name:at.COLOR,semantic:at.COLOR,setIndex:0,constantColor:G.DARKGRAY,componentDatatype:q.FLOAT,type:zt.VEC4,isQuantized:!1,isTranslucent:!1};function uYe(e,t,n){let i=[],o,r=t.positions;return l(r)&&(cYe(r),o=aL(e,r,n),o.count=t.pointsLength,i.push(o)),l(t.normals)&&(o=aL(e,t.normals,n),i.push(o)),l(t.colors)?(o=aL(e,t.colors,n),i.push(o)):(o=aL(e,lYe,n),i.push(o)),l(t.batchIds)&&(o=aL(e,t.batchIds,n),i.push(o)),i}function fYe(e,t){let n=e.batchLength,i=e.pointsLength,o=e.batchTableBinary,r=!l(e.batchIds);return l(o)||e.hasDracoBatchTable?Gp({count:n??i,batchTable:e.batchTableJson,binaryBody:o,parseAsPropertyAttributes:r,customAttributeOutput:t}):new Aa({schema:{},propertyTables:[]})}function dYe(e,t){let n=e._parsedContent,i=new $je;i.metallicFactor=0,i.roughnessFactor=.9;let o=new Zje;o.metallicRoughness=i;let r=n.colors;l(r)&&r.isTranslucent&&(o.alphaMode=Xm.BLEND);let s=!l(n.normals);o.unlit=s;let a=new Kje;if(a.attributes=uYe(e,n,t),a.primitiveType=Me.POINTS,a.material=o,l(n.batchIds)){let g=new Jje;g.propertyTableId=0,g.setIndex=0,g.positionalLabel="featureId_0",a.featureIds.push(g)}let c=new qje;c.index=0,c.primitives=[a];let u=new Yje;u.nodes=[c],u.upAxis=fo.Z,u.forwardAxis=fo.X;let f=new jje;f.scene=u,f.nodes=[c];let h=[];f.structuralMetadata=fYe(n,h),h.length>0&&hYe(e,a,h,t),l(n.rtcCenter)&&(f.transform=N.multiplyByTranslation(f.transform,n.rtcCenter,f.transform));let A=n.positions;l(A)&&A.isQuantized&&(f.transform=N.multiplyByTranslation(f.transform,A.quantizedVolumeOffset,f.transform)),e._components=f,e._parsedContent=void 0,e._arrayBuffer=void 0}function hYe(e,t,n,i){let o=t.attributes,r=n.length;for(let s=0;s<r;s++){let a=n[s],c=Ct.createVertexBuffer({typedArray:a.typedArray,context:i,usage:Qe.STATIC_DRAW});c.vertexArrayDestroyable=!1,e._buffers.push(c),a.buffer=c,a.typedArray=void 0,o.push(a)}t.propertyAttributeIds=[0]}gy.prototype.unload=function(){let e=this._buffers;for(let t=0;t<e.length;t++)e[t].destroy();e.length=0,this._components=void 0,this._parsedContent=void 0,this._arrayBuffer=void 0};var cL=gy;var mYe=new d,AYe=new d,pYe=new d,gYe=new N,_Ye=new N,yYe=new N,CYe=new Ae,EYe=new le;function _T(e,t,n,i,o,r,s){if(!e._ready||n.mode===ie.MORPHING)return;let a=Number.MAX_VALUE,c=e.sceneGraph,u=c._runtimeNodes;for(let f=0;f<u.length;f++){let h=u[f],A=h.node,g=N.clone(h.computedTransform,gYe),m=N.clone(c.computedModelMatrix,_Ye),_=A.instances;l(_)&&_.transformInWorldSpace&&(m=N.multiplyTransformation(e.modelMatrix,c.components.transform,m),g=N.multiplyTransformation(c.axisCorrectionMatrix,h.computedTransform,g));let y=N.multiplyTransformation(m,g,yYe);n.mode!==ie.SCENE3D&&(y=kt.basisTo2D(n.mapProjection,y,y));let C=[];if(l(_)){let I=_.attributes[0].count,b=_.attributes[0].componentDatatype,S=12,B=h.transformsTypedArray;if(!l(B)){let v=h.instancingTransformsBuffer;l(v)&&n.context.webgl2&&(B=q.createTypedArray(b,I*S),v.getBufferData(B))}if(l(B))for(let v=0;v<I;v++){let P=v*S,M=new N(B[P],B[P+1],B[P+2],B[P+3],B[P+4],B[P+5],B[P+6],B[P+7],B[P+8],B[P+9],B[P+10],B[P+11],0,0,0,1);_.transformInWorldSpace?(N.multiplyTransformation(M,g,M),N.multiplyTransformation(m,M,M)):N.multiplyTransformation(M,y,M),C.push(M)}}C.length===0&&C.push(y);let E=h.runtimePrimitives.length;for(let I=0;I<E;I++){let b=h.runtimePrimitives[I],S=b.primitive;if(l(b.boundingSphere)&&!l(_)){let W=le.transform(b.boundingSphere,y,EYe),Z=hi.raySphere(t,W);if(!l(Z))continue}let B=Ot.getAttributeBySemantic(S,at.POSITION),v=B.byteOffset,P=B.byteStride,M=B.count;if(!l(S.indices))continue;let L=S.indices.typedArray;if(!l(L)){let W=S.indices.buffer,Z=S.indices.count,Y=S.indices.indexDatatype;l(W)&&n.context.webgl2&&(Y===Oe.UNSIGNED_BYTE?L=new Uint8Array(Z):Y===Oe.UNSIGNED_SHORT?L=new Uint16Array(Z):Y===Oe.UNSIGNED_INT&&(L=new Uint32Array(Z)),W.getBufferData(L))}let p=B.typedArray,x=B.componentDatatype,T=B.type,w=B.quantization;l(w)&&(x=B.quantization.componentDatatype,T=B.quantization.type);let R=zt.getNumberOfComponents(T),O=q.getSizeInBytes(x),k=!l(p)&&l(P)&&P!==R*O,Q=R,z=0;k&&(Q=P/O,z=v/O);let F=M*Q;if(!l(p)){let W=B.buffer;l(W)&&n.context.webgl2&&(p=q.createTypedArray(x,F),W.getBufferData(p,k?0:v,0,F)),w&&B.normalized&&(p=On.dequantize(p,x,T,M))}if(!l(L)||!l(p))return;r=r??te.default,i=i??1,o=o??0;let H=L.length;for(let W=0;W<H;W+=3){let Z=L[W],Y=L[W+1],$=L[W+2];for(let X of C){let he=uY(p,Z,z,Q,w,X,i,o,r,mYe),ge=uY(p,Y,z,Q,w,X,i,o,r,AYe),fe=uY(p,$,z,Q,w,X,i,o,r,pYe),ye=hi.rayTriangleParametric(t,he,ge,fe,e.backFaceCulling??!0);l(ye)&&ye<a&&ye>=0&&(a=ye)}}}}if(a!==Number.MAX_VALUE){if(s=In.getPoint(t,a,s),n.mode!==ie.SCENE3D){d.fromElements(s.y,s.z,s.x,s);let f=n.mapProjection,h=f.ellipsoid,A=f.unproject(s,CYe);h.cartographicToCartesian(A,s)}return s}}function uY(e,t,n,i,o,r,s,a,c,u){let f=n+t*i;if(u.x=e[f],u.y=e[f+1],u.z=e[f+2],l(o))if(o.octEncoded){if(u=On.octDecodeInRange(u,o.normalizationRange,u),o.octEncodedZXY){let h=u.x;u.x=u.z,u.z=u.y,u.y=h}}else u=d.multiplyComponents(u,o.quantizedVolumeStepSize,u),u=d.add(u,o.quantizedVolumeOffset,u);return u=N.multiplyByPoint(r,u,u),s!==1&&Ur.getPosition(u,c,s,a,u),u}var fY=class{constructor(t){this.show=t.show,this.alpha=t.alpha,this.brightness=t.brightness,this.contrast=t.contrast,this.hue=t.hue,this.saturation=t.saturation,this.gamma=t.gamma,this.colorToAlpha=t.colorToAlpha}},lL=fY;var dY=class{constructor(t){this._model=t,this._modelPrimitiveImageries=void 0,this._imageryConfigurations=[]}update(t){this._hasImagery&&this._allImageryLayersReady&&(l(this._modelPrimitiveImageries)||(this._modelPrimitiveImageries=this._createModelPrimitiveImageries()),this._updateModelPrimitiveImageries(t),this._checkForModifiedImageryConfigurations())}_createModelPrimitiveImageries(){let t=this._model,n=this._collectRuntimeNodesAndPrimitives(),i=[],o=n.length;for(let r=0;r<o;r++){let s=n[r],a=s.runtimeNode,c=s.runtimePrimitive,u=new f0(t,a,c);c.primitive.modelPrimitiveImagery=u,i.push(u)}return i}_collectRuntimeNodesAndPrimitives(){let i=this._model.sceneGraph._runtimeNodes,o=[];for(let r=0;r<i.length;r++){let s=i[r];if(l(s))for(let a=0;a<s.runtimePrimitives.length;a++){let c=s.runtimePrimitives[a];o.push({runtimeNode:s,runtimePrimitive:c})}}return o}_updateModelPrimitiveImageries(t){if(!l(this._modelPrimitiveImageries))throw new me("The modelPrimitiveImageries have not been created");let n=this._modelPrimitiveImageries,i=n.length;for(let o=0;o<i;o++)n[o].update(t)}_deleteModelPrimitiveImageries(){let t=this._modelPrimitiveImageries;if(!l(t))return;let n=t.length;for(let i=0;i<n;i++)t[i].destroy();delete this._modelPrimitiveImageries}get ready(){return this._hasImagery?!(!this._allImageryLayersReady||!this._allModelPrimitiveImageriesReady):!0}get _hasImagery(){let n=this._model.imageryLayers;return l(n)&&n.length>0}get _allImageryLayersReady(){if(!this._hasImagery)return!0;let t=this._model.imageryLayers,n=t.length;for(let i=0;i<n;i++)if(!t.get(i).ready)return!1;return!0}get _allModelPrimitiveImageriesReady(){let t=this._modelPrimitiveImageries;if(!l(t))return!1;let n=t.length;for(let i=0;i<n;i++)if(!t[i].ready)return!1;return!0}_checkForModifiedImageryConfigurations(){this._imageryConfigurationsModified()&&(this._updateImageryConfigurations(),this._model.resetDrawCommands())}_imageryConfigurationsModified(){let n=this._model.imageryLayers,i=this._imageryConfigurations;if(n.length!==i.length)return!0;for(let o=0;o<n.length;o++){let r=n.get(o),s=i[o];if(r.show!==s.show||r.alpha!==s.alpha||r.brightness!==s.brightness||r.contrast!==s.contrast||r.hue!==s.hue||r.saturation!==s.saturation||r.gamma!==s.gamma||r.colorToAlpha!==s.colorToAlpha)return!0}return!1}_updateImageryConfigurations(){let n=this._model.imageryLayers,i=this._imageryConfigurations;i.length=n.length;for(let o=0;o<n.length;o++){let r=n.get(o);i[o]=new lL(r)}}isDestroyed(){return!1}destroy(){if(!this.isDestroyed())return this._deleteModelPrimitiveImageries(),ue(this)}},uL=dY;function Io(e){e=e??V.EMPTY_OBJECT,this._loader=e.loader,this._resource=e.resource,this.type=e.type??wr.GLTF,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this._modelMatrix=N.clone(this.modelMatrix),this._scale=e.scale??1,this._minimumPixelSize=e.minimumPixelSize??0,this._maximumScale=e.maximumScale,this._clampedScale=l(this._maximumScale)?Math.min(this._scale,this._maximumScale):this._scale,this._computedScale=this._clampedScale,this._updateModelMatrix=!1,this.referenceMatrix=void 0,this._iblReferenceFrameMatrix=J.clone(J.IDENTITY),this._resourcesLoaded=!1,this._drawCommandsBuilt=!1,this._ready=!1,this._customShader=e.customShader,this._content=e.content,this._texturesLoaded=!1,this._defaultTexture=void 0,this._activeAnimations=new u1(this),this._clampAnimations=e.clampAnimations??!0,this._userAnimationDirty=!1,this._id=e.id,this._idDirty=!1,this._color=G.clone(e.color),this._colorBlendMode=e.colorBlendMode??Qc.HIGHLIGHT,this._colorBlendAmount=e.colorBlendAmount??.5;let t=e.silhouetteColor??G.RED;this._silhouetteColor=G.clone(t),this._silhouetteSize=e.silhouetteSize??0,this._silhouetteDirty=!1,this._silhouetteId=void 0,this._cull=e.cull??!0,this._opaquePass=e.opaquePass??Be.OPAQUE,this._allowPicking=e.allowPicking??!0,this._show=e.show??!0,this._style=void 0,this._styleDirty=!1,this._styleCommandsNeeded=void 0;let n=e.featureIdLabel??"featureId_0";typeof n=="number"&&(n=`featureId_${n}`),this._featureIdLabel=n;let i=e.instanceFeatureIdLabel??"instanceFeatureId_0";typeof i=="number"&&(i=`instanceFeatureId_${i}`),this._instanceFeatureIdLabel=i,this._featureTables=[],this._featureTableId=void 0,this._featureTableIdDirty=!0,this._pipelineResources=[],this._modelResources=[],this._pickIds=[],this._boundingSphere=new le,this._initialRadius=void 0,this._heightReference=e.heightReference??Ze.NONE,this._heightDirty=this._heightReference!==Ze.NONE,this._removeUpdateHeightCallback=void 0,this._enableVerticalExaggeration=e.enableVerticalExaggeration??!0,this._hasVerticalExaggeration=!1,this._clampedModelMatrix=void 0;let o=e.scene;l(o)&&l(o.terrainProviderChanged)&&(this._terrainProviderChangedCallback=o.terrainProviderChanged.addEventListener(()=>{this._heightDirty=!0})),this._scene=o,this._distanceDisplayCondition=e.distanceDisplayCondition;let r=new Zm(e.pointCloudShading);this._pointCloudShading=r,this._attenuation=r.attenuation,this._pointCloudBackFaceCulling=r.backFaceCulling;let s=e.clippingPlanes;l(s)&&s.owner===void 0?Fs.setOwner(s,this,"_clippingPlanes"):this._clippingPlanes=s,this._clippingPlanesState=0,this._clippingPlanesMatrix=N.clone(N.IDENTITY);let a=e.clippingPolygons;l(a)&&a.owner===void 0?wh.setOwner(a,this,"_clippingPolygons"):this._clippingPolygons=a,this._clippingPolygonsState=0,this._modelImagery=new uL(this),this._lightColor=d.clone(e.lightColor),this._imageBasedLighting=l(e.imageBasedLighting)?e.imageBasedLighting:new DE,this._shouldDestroyImageBasedLighting=!l(e.imageBasedLighting),this._environmentMapManager=void 0;let c=new Lp(e.environmentMapOptions);Lp.setOwner(c,this,"_environmentMapManager"),this._backFaceCulling=e.backFaceCulling??!0,this._backFaceCullingDirty=!1,this._shadows=e.shadows??Bn.ENABLED,this._shadowsDirty=!1,this._debugShowBoundingVolumeDirty=!1,this._debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._enableDebugWireframe=e.enableDebugWireframe??!1,this._enableShowOutline=e.enableShowOutline??!0,this._debugWireframe=e.debugWireframe??!1,this._debugWireframe===!0&&this._enableDebugWireframe===!1&&this.type===wr.GLTF&&yt("model-debug-wireframe-ignored","enableDebugWireframe must be set to true in Model.fromGltf, otherwise debugWireframe will be ignored.");let u=e.credit;typeof u=="string"&&(u=new Bt(u)),this._credits=[],this._credit=u,this._resourceCredits=[],this._gltfCredits=[],this._showCreditsOnScreen=e.showCreditsOnScreen??!1,this._showCreditsOnScreenDirty=!0,this._splitDirection=e.splitDirection??br.NONE,this._enableShowOutline=e.enableShowOutline??!0,this.showOutline=e.showOutline??!0,this.outlineColor=e.outlineColor??G.BLACK,this._classificationType=e.classificationType,this._statistics=new sL,this._sceneMode=void 0,this._projectTo2D=e.projectTo2D??!1,this._enablePick=e.enablePick??!1,this._fogRenderable=void 0,this._skipLevelOfDetail=!1,this._ignoreCommands=e.ignoreCommands??!1,this._errorEvent=new _e,this._readyEvent=new _e,this._texturesReadyEvent=new _e,this._sceneGraph=void 0,this._nodesByName={},this.pickObject=e.pickObject}function hY(e,t){if(e._errorEvent.numberOfListeners>0){e._errorEvent.raiseEvent(t);return}console.log(t)}function IYe(e,t){let n=e._featureTables,i=t.propertyTables,o=i.length;for(let r=0;r<o;r++){let s=i[r],a=new h1({model:e,propertyTable:s});n.push(a)}return n}function xYe(e,t){let n=t._featureIdLabel,i=t._instanceFeatureIdLabel,o,r,s,a;for(o=0;o<e.nodes.length;o++)if(a=e.nodes[o],l(a.instances)&&(s=Ot.getFeatureIdsByLabel(a.instances.featureIds,i),l(s)&&l(s.propertyTableId)))return s.propertyTableId;for(o=0;o<e.nodes.length;o++)for(a=e.nodes[o],r=0;r<a.primitives.length;r++){let c=a.primitives[r],u=Ot.getFeatureIdsByLabel(c.featureIds,n);if(l(u))return u.propertyTableId}if(t._featureTables.length===1)return 0}function pY(e,t){if(!l(e)&&!l(t))return!1;if(l(e)!==l(t))return!0;let n=e.alpha,i=t.alpha;return Math.floor(n)!==Math.floor(i)||Math.ceil(n)!==Math.ceil(i)}Object.defineProperties(Io.prototype,{ready:{get:function(){return this._ready}},errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},incrementallyLoadTextures:{get:function(){return this._loader.incrementallyLoadTextures??!1}},texturesReadyEvent:{get:function(){return this._texturesReadyEvent}},loader:{get:function(){return this._loader}},statistics:{get:function(){return this._statistics}},activeAnimations:{get:function(){return this._activeAnimations}},clampAnimations:{get:function(){return this._clampAnimations},set:function(e){this._clampAnimations=e}},cull:{get:function(){return this._cull}},opaquePass:{get:function(){return this._opaquePass}},pointCloudShading:{get:function(){return this._pointCloudShading},set:function(e){e!==this._pointCloudShading&&this.resetDrawCommands(),this._pointCloudShading=e}},customShader:{get:function(){return this._customShader},set:function(e){e!==this._customShader&&this.resetDrawCommands(),this._customShader=e}},sceneGraph:{get:function(){return this._sceneGraph}},content:{get:function(){return this._content}},heightReference:{get:function(){return this._heightReference},set:function(e){e!==this._heightReference&&(this._heightDirty=!0),this._heightReference=e}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition)}},structuralMetadata:{get:function(){return this._sceneGraph.components.structuralMetadata}},featureTableId:{get:function(){return this._featureTableId},set:function(e){this._featureTableId=e}},featureTables:{get:function(){return this._featureTables},set:function(e){this._featureTables=e}},id:{get:function(){return this._id},set:function(e){e!==this._id&&(this._idDirty=!0),this._id=e}},allowPicking:{get:function(){return this._allowPicking}},style:{get:function(){return this._style},set:function(e){this._style=e,this._styleDirty=!0}},color:{get:function(){return this._color},set:function(e){pY(e,this._color)&&this.resetDrawCommands(),this._color=G.clone(e,this._color)}},colorBlendMode:{get:function(){return this._colorBlendMode},set:function(e){this._colorBlendMode=e}},colorBlendAmount:{get:function(){return this._colorBlendAmount},set:function(e){this._colorBlendAmount=e}},silhouetteColor:{get:function(){return this._silhouetteColor},set:function(e){if(!G.equals(e,this._silhouetteColor)){let t=pY(e,this._silhouetteColor);this._silhouetteDirty=this._silhouetteDirty||t}this._silhouetteColor=G.clone(e,this._silhouetteColor)}},silhouetteSize:{get:function(){return this._silhouetteSize},set:function(e){if(e!==this._silhouetteSize){let t=this._silhouetteSize,n=e>0&&t===0||e===0&&t>0;this._silhouetteDirty=this._silhouetteDirty||n,this._backFaceCullingDirty=this._backFaceCullingDirty||n}this._silhouetteSize=e}},boundingSphere:{get:function(){let e=l(this._clampedModelMatrix)?this._clampedModelMatrix:this.modelMatrix;return Rfe(this,e),this._boundingSphere}},debugShowBoundingVolume:{get:function(){return this._debugShowBoundingVolume},set:function(e){this._debugShowBoundingVolume!==e&&(this._debugShowBoundingVolumeDirty=!0),this._debugShowBoundingVolume=e}},debugWireframe:{get:function(){return this._debugWireframe},set:function(e){this._debugWireframe!==e&&this.resetDrawCommands(),this._debugWireframe=e,this._debugWireframe===!0&&this._enableDebugWireframe===!1&&this.type===wr.GLTF&&yt("model-debug-wireframe-ignored","enableDebugWireframe must be set to true in Model.fromGltfAsync, otherwise debugWireframe will be ignored.")}},show:{get:function(){return this._show},set:function(e){this._show=e}},featureIdLabel:{get:function(){return this._featureIdLabel},set:function(e){typeof e=="number"&&(e=`featureId_${e}`),e!==this._featureIdLabel&&(this._featureTableIdDirty=!0),this._featureIdLabel=e}},instanceFeatureIdLabel:{get:function(){return this._instanceFeatureIdLabel},set:function(e){typeof e=="number"&&(e=`instanceFeatureId_${e}`),e!==this._instanceFeatureIdLabel&&(this._featureTableIdDirty=!0),this._instanceFeatureIdLabel=e}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){e!==this._clippingPlanes&&(Fs.setOwner(e,this,"_clippingPlanes"),this.resetDrawCommands())}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){e!==this._clippingPolygons&&(wh.setOwner(e,this,"_clippingPolygons"),this.resetDrawCommands())}},enableVerticalExaggeration:{get:function(){return this._enableVerticalExaggeration},set:function(e){e!==this._enableVerticalExaggeration&&this.resetDrawCommands(),this._enableVerticalExaggeration=e}},hasVerticalExaggeration:{get:function(){return this._hasVerticalExaggeration}},imageryLayers:{get:function(){if(l(this._content)){let e=this._content.tileset;if(l(e))return e.imageryLayers}}},lightColor:{get:function(){return this._lightColor},set:function(e){l(e)!==l(this._lightColor)&&this.resetDrawCommands(),this._lightColor=d.clone(e,this._lightColor)}},imageBasedLighting:{get:function(){return this._imageBasedLighting},set:function(e){e!==this._imageBasedLighting&&(this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=e,this._shouldDestroyImageBasedLighting=!1,this.resetDrawCommands())}},environmentMapManager:{get:function(){return this._environmentMapManager},set:function(e){e!==this.environmentMapManager&&(Lp.setOwner(e,this,"_environmentMapManager"),this.resetDrawCommands())}},backFaceCulling:{get:function(){return this._backFaceCulling},set:function(e){e!==this._backFaceCulling&&(this._backFaceCullingDirty=!0),this._backFaceCulling=e}},scale:{get:function(){return this._scale},set:function(e){e!==this._scale&&(this._updateModelMatrix=!0),this._scale=e}},computedScale:{get:function(){return this._computedScale}},minimumPixelSize:{get:function(){return this._minimumPixelSize},set:function(e){e!==this._minimumPixelSize&&(this._updateModelMatrix=!0),this._minimumPixelSize=e}},maximumScale:{get:function(){return this._maximumScale},set:function(e){e!==this._maximumScale&&(this._updateModelMatrix=!0),this._maximumScale=e}},shadows:{get:function(){return this._shadows},set:function(e){e!==this._shadows&&(this._shadowsDirty=!0),this._shadows=e}},credit:{get:function(){return this._credit}},showCreditsOnScreen:{get:function(){return this._showCreditsOnScreen},set:function(e){this._showCreditsOnScreen!==e&&(this._showCreditsOnScreenDirty=!0),this._showCreditsOnScreen=e}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&this.resetDrawCommands(),this._splitDirection=e}},classificationType:{get:function(){return this._classificationType}},pickIds:{get:function(){return this._pickIds}},styleCommandsNeeded:{get:function(){return this._styleCommandsNeeded}}});Io.prototype.getNode=function(e){return this._nodesByName[e]};Io.prototype.setArticulationStage=function(e,t){this._sceneGraph.setArticulationStage(e,t)};Io.prototype.applyArticulations=function(){this._sceneGraph.applyArticulations()};Io.prototype.getExtension=function(e){return this._loader.components.extensions[e]};Io.prototype.makeStyleDirty=function(){this._styleDirty=!0};Io.prototype.resetDrawCommands=function(){this._drawCommandsBuilt=!1};var bYe=new N,TYe=new J,SYe=new N;Io.prototype.update=function(e){let t=!1;try{t=wYe(this,e)}catch(i){if(!this._loader.incrementallyLoadTextures&&i.name==="TextureError")hY(this,i);else{let o=Ot.getError("model",this._resource,i);hY(this,o)}}if(BYe(this,e),DYe(this,e),vYe(this,e),!this._resourcesLoaded&&t){this._resourcesLoaded=!0;let i=this._loader.components;if(!l(i)){if(this._loader.isUnloaded())return;let s=Ot.getError("model",this._resource,new ce("Failed to load model."));hY(s),this._rejectLoad=this._rejectLoad&&this._rejectLoad(s)}let o=i.structuralMetadata;l(o)&&o.propertyTableCount>0&&IYe(this,o);let r=new rL({model:this,modelComponents:i});this._sceneGraph=r,this._gltfCredits=r.components.asset.credits}if(!this._resourcesLoaded||e.mode===ie.MORPHING)return;let n=this._modelImagery;if(n.update(e),!(!n.ready&&!(this._content?.tileset?._asynchronouslyLoadImagery??!1))){if(PYe(this),RYe(this),MYe(this,e),NYe(this),LYe(this,e),OYe(this,e),FYe(this,e),QYe(this,e),kYe(this,e),UYe(this,e),GYe(this,e),this._defaultTexture=e.context.defaultTexture,zYe(this,e),VYe(this,e),HYe(this),WYe(this,e),KYe(this,e),!this._ready){e.afterRender.push(()=>{this._ready=!0,this._readyEvent.raiseEvent(this)});return}this._loader.incrementallyLoadTextures&&!this._texturesLoaded&&this._loader.texturesLoaded&&(this.resetDrawCommands(),this._texturesLoaded=!0,this._texturesReadyEvent.raiseEvent(this)),YYe(this),XYe(this,e),JYe(this),ZYe(this,e)}};function wYe(e,t){return!e._resourcesLoaded||e._loader.incrementallyLoadTextures&&!e._texturesLoaded?(t.afterRender.push(()=>!0),e._loader.process(t)):!0}function BYe(e,t){l(e._customShader)&&e._customShader.update(t)}function DYe(e,t){let n=e._environmentMapManager,i=t.passes.pick||t.passes.pickVoxel;e._ready&&n.owner===e&&!i&&(n.position=e._boundingSphere.center,n.shouldUpdate=!l(e._imageBasedLighting.sphericalHarmonicCoefficients)||!l(e._imageBasedLighting.specularEnvironmentMaps),n.update(t),n.shouldRegenerateShaders&&e.resetDrawCommands())}function vYe(e,t){e._imageBasedLighting.update(t),e._imageBasedLighting.shouldRegenerateShaders&&e.resetDrawCommands()}function PYe(e){if(!e._featureTableIdDirty)return;e._featureTableIdDirty=!1;let t=e._sceneGraph.components,n=t.structuralMetadata;l(n)&&n.propertyTableCount>0&&(e.featureTableId=xYe(t,e),e._styleDirty=!0,e.resetDrawCommands())}function RYe(e){e._styleDirty&&(e.applyStyle(e._style),e._styleDirty=!1)}function MYe(e,t){let n=e._featureTables,i=n.length,o=!1;for(let r=0;r<i;r++)n[r].update(t),n[r].styleCommandsNeededDirty&&(o=!0);o&&Pfe(e)}function Pfe(e){let t=e.featureTables[e.featureTableId];e._styleCommandsNeeded=Mh.getStyleCommandsNeeded(t.featuresLength,t.batchTexture.translucentFeaturesLength)}function NYe(e){let t=e.pointCloudShading;t.attenuation!==e._attenuation&&(e.resetDrawCommands(),e._attenuation=t.attenuation),t.backFaceCulling!==e._pointCloudBackFaceCulling&&(e.resetDrawCommands(),e._pointCloudBackFaceCulling=t.backFaceCulling)}function LYe(e,t){e._silhouetteDirty&&(Mfe(t)&&e.resetDrawCommands(),e._silhouetteDirty=!1)}function OYe(e,t){let n=e.hasSkipLevelOfDetail(t);n!==e._skipLevelOfDetail&&(e.resetDrawCommands(),e._skipLevelOfDetail=n)}function FYe(e,t){let n=0;e.isClippingEnabled()&&(e._clippingPlanes.owner===e&&e._clippingPlanes.update(t),n=e._clippingPlanes.clippingPlanesState),n!==e._clippingPlanesState&&(e.resetDrawCommands(),e._clippingPlanesState=n)}function QYe(e,t){let n=0;e.isClippingPolygonsEnabled()&&(e._clippingPolygons.owner===e&&(e._clippingPolygons.update(t),e._clippingPolygons.queueCommands(t)),n=e._clippingPolygons.clippingPolygonsState),n!==e._clippingPolygonsState&&(e.resetDrawCommands(),e._clippingPolygonsState=n)}function kYe(e,t){t.mode!==e._sceneMode&&(e._projectTo2D?e.resetDrawCommands():e._updateModelMatrix=!0,e._sceneMode=t.mode)}function UYe(e,t){let n=t.fog.enabled&&t.fog.renderable;n!==e._fogRenderable&&(e.resetDrawCommands(),e._fogRenderable=n)}function GYe(e,t){if(e.enableVerticalExaggeration){let n=t.verticalExaggeration!==1;e.hasVerticalExaggeration!==n&&(e.resetDrawCommands(),e._hasVerticalExaggeration=n)}else e.hasVerticalExaggeration&&(e.resetDrawCommands(),e._hasVerticalExaggeration=!1)}function zYe(e,t){e._drawCommandsBuilt||(e.destroyPipelineResources(),e._sceneGraph.buildDrawCommands(t),e._drawCommandsBuilt=!0)}function VYe(e,t){N.equals(e.modelMatrix,e._modelMatrix)||(e._updateModelMatrix=!0,e._modelMatrix=N.clone(e.modelMatrix,e._modelMatrix))}var _y=new d,mY=new Ae;function HYe(e){if(!e._updateModelMatrix&&!e._heightDirty&&e._minimumPixelSize===0)return;l(e._removeUpdateHeightCallback)&&(e._removeUpdateHeightCallback(),e._removeUpdateHeightCallback=void 0);let t=e._scene;if(!l(t)||e.heightReference===Ze.NONE){e._clampedModelMatrix=void 0;return}let n=t.ellipsoid??te.default,i=e.modelMatrix;_y.x=i[12],_y.y=i[13],_y.z=i[14];let o=n.cartesianToCartographic(_y);l(e._clampedModelMatrix)||(e._clampedModelMatrix=N.clone(i,new N)),e._removeUpdateHeightCallback=t.updateHeight(o,vfe(e,n,o),e.heightReference);let r=t.getHeight(o,e.heightReference);if(l(r)){let s=vfe(e,n,o);Ae.clone(o,mY),mY.height=r,s(mY)}e._heightDirty=!1,e._updateModelMatrix=!0}function WYe(e,t){if(!e._updateModelMatrix&&e._minimumPixelSize===0)return;let n=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix;Rfe(e,n),jYe(e,n,t)}function Rfe(e,t){e._clampedScale=l(e._maximumScale)?Math.min(e._scale,e._maximumScale):e._scale,e._boundingSphere.center=d.multiplyByScalar(e._sceneGraph.boundingSphere.center,e._clampedScale,e._boundingSphere.center),e._boundingSphere.radius=e._initialRadius*e._clampedScale,e._boundingSphere=le.transform(e._boundingSphere,t,e._boundingSphere)}function jYe(e,t,n){let i=e.scale;if(e.minimumPixelSize!==0&&!e._projectTo2D){let o=n.context,r=Math.max(o.drawingBufferWidth,o.drawingBufferHeight);N.getTranslation(t,_y),e._sceneMode!==ie.SCENE3D&&eo.computeActualEllipsoidPosition(n,_y,_y);let s=e._boundingSphere.radius,a=$Ye(_y,s,n),c=1/a;Math.min(c*(2*s),r)<e.minimumPixelSize&&(i=e.minimumPixelSize*a/(2*e._initialRadius))}e._computedScale=l(e.maximumScale)?Math.min(e.maximumScale,i):i}function YYe(e){if(!e._idDirty)return;e._idDirty=!1;let t=e._id,n=e._pickIds,i=n.length;for(let o=0;o<i;++o)n[o].object.id=t}var qYe=new J(1,0,0,0,0,1,0,-1,0);function KYe(e,t){let n=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix,i=e.referenceMatrix??n,o=t.context,r=TYe,s=bYe;if(s=N.multiply(o.uniformState.view3D,i,s),r=N.getRotation(s,r),r=J.transpose(r,r),e._iblReferenceFrameMatrix=J.multiply(qYe,r,e._iblReferenceFrameMatrix),e.isClippingEnabled()){let a=SYe;a=N.multiply(o.uniformState.view3D,i,a),a=N.multiply(a,e._clippingPlanes.modelMatrix,a),e._clippingPlanesMatrix=N.inverseTranspose(a,e._clippingPlanesMatrix)}}function XYe(e,t){let n=e._sceneGraph;if(e._updateModelMatrix||e._minimumPixelSize!==0){let o=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix;n.updateModelMatrix(o,t),e._updateModelMatrix=!1}e._backFaceCullingDirty&&(n.updateBackFaceCulling(e._backFaceCulling),e._backFaceCullingDirty=!1),e._shadowsDirty&&(n.updateShadows(e._shadows),e._shadowsDirty=!1),e._debugShowBoundingVolumeDirty&&(n.updateShowBoundingVolume(e._debugShowBoundingVolume),e._debugShowBoundingVolumeDirty=!1);let i=!1;l(e.classificationType)||(i=e._userAnimationDirty||e._activeAnimations.update(t)),n.update(t,i),e._userAnimationDirty=!1}function JYe(e){if(!e._showCreditsOnScreenDirty)return;e._showCreditsOnScreenDirty=!1,e._credits.length=0;let t=e._showCreditsOnScreen;if(l(e._credit)){let s=Bt.clone(e._credit);s.showOnScreen=s.showOnScreen||t,e._credits.push(s)}let n=e._resourceCredits,i=n.length;for(let s=0;s<i;s++){let a=Bt.clone(n[s]);a.showOnScreen=a.showOnScreen||t,e._credits.push(a)}let o=e._gltfCredits,r=o.length;for(let s=0;s<r;s++){let a=Bt.clone(o[s]);a.showOnScreen=a.showOnScreen||t,e._credits.push(a)}}function ZYe(e,t){let n=tqe(e,t),i=e.isInvisible(),o=e.hasSilhouette(t),r=e._show&&e._computedScale!==0&&n&&(!i||o),s=t.passes,a=s.render||s.pick&&e.allowPicking;r&&!e._ignoreCommands&&a&&(nqe(e,t),e._sceneGraph.pushDrawCommands(t))}var AY=new le;function $Ye(e,t,n){return AY.center=e,AY.radius=t,n.camera.getPixelSize(AY,n.context.drawingBufferWidth,n.context.drawingBufferHeight)}var cV=new d;function vfe(e,t,n){return function(i){Kx(e.heightReference)&&(i.height+=n.height),t.cartographicToCartesian(i,cV);let o=e._clampedModelMatrix;N.clone(e.modelMatrix,o),o[12]=cV.x,o[13]=cV.y,o[14]=cV.z,e._heightDirty=!0}}var eqe=new d;function tqe(e,t){let n=e.distanceDisplayCondition;if(!l(n))return!0;let i=n.near*n.near,o=n.far*n.far,r;if(t.mode===ie.SCENE2D){let a=(t.camera.frustum.right-t.camera.frustum.left)*.5;r=a*a}else{let s=N.getTranslation(e.modelMatrix,eqe);eo.computeActualEllipsoidPosition(t,s,s),r=d.distanceSquared(s,t.camera.positionWC)}return r>=i&&r<=o}function nqe(e,t){let n=t.creditDisplay,i=e._credits,o=i.length;for(let r=0;r<o;r++)n.addCreditToNextFrame(i[r])}Io.prototype.isTranslucent=function(){let e=this.color;return l(e)&&e.alpha>0&&e.alpha<1};Io.prototype.isInvisible=function(){let e=this.color;return l(e)&&e.alpha===0};function Mfe(e){return e.context.stencilBuffer}Io.prototype.hasSilhouette=function(e){return Mfe(e)&&this._silhouetteSize>0&&this._silhouetteColor.alpha>0&&!l(this._classificationType)};Io.prototype.hasSkipLevelOfDetail=function(e){if(!wr.is3DTiles(this.type))return!1;let t=e.context.stencilBuffer,n=this._content.tileset;return t&&n.isSkippingLevelOfDetail};Io.prototype.isClippingEnabled=function(){let e=this._clippingPlanes;return l(e)&&e.enabled&&e.length!==0};Io.prototype.pick=function(e,t,n,i,o){return _T(this,e,t,n,i,o)};Io.prototype.isClippingPolygonsEnabled=function(){let e=this._clippingPolygons;return l(e)&&e.enabled&&e.length!==0};Io.prototype.isDestroyed=function(){return!1};Io.prototype.destroy=function(){let e=this._loader;l(e)&&e.destroy();let t=this._featureTables;if(l(t)){let r=t.length;for(let s=0;s<r;s++)t[s].destroy()}this.destroyPipelineResources(),this.destroyModelResources(),l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),l(this._terrainProviderChangedCallback)&&(this._terrainProviderChangedCallback(),this._terrainProviderChangedCallback=void 0);let n=this._clippingPlanes;l(n)&&!n.isDestroyed()&&n.owner===this&&n.destroy(),this._clippingPlanes=void 0;let i=this._clippingPolygons;l(i)&&!i.isDestroyed()&&i.owner===this&&i.destroy(),this._clippingPolygons=void 0,this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=void 0;let o=this._environmentMapManager;!o.isDestroyed()&&o.owner===this&&o.destroy(),this._environmentMapManager=void 0,ue(this)};Io.prototype.destroyPipelineResources=function(){let e=this._pipelineResources;for(let t=0;t<e.length;t++)e[t].destroy();this._pipelineResources.length=0,this._pickIds.length=0};Io.prototype.destroyModelResources=function(){let e=this._modelResources;for(let t=0;t<e.length;t++)e[t].destroy();this._modelResources.length=0};Io.fromGltfAsync=async function(e){e=e??V.EMPTY_OBJECT;let t=e.url??e.gltf,n={releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline,loadForClassification:l(e.classificationType)},i=e.basePath??"",o=we.createIfNeeded(i);l(t.asset)?(n.gltfJson=t,n.baseResource=o,n.gltfResource=o):t instanceof Uint8Array?(n.typedArray=t,n.baseResource=o,n.gltfResource=o):n.gltfResource=we.createIfNeeded(t);let r=new Xu(n),a=l(e.content)?wr.TILE_GLTF:wr.GLTF,c=n.gltfResource,u=fL(r,a,e);u.resource=c,u.environmentMapOptions=e.environmentMapOptions;try{await r.load()}catch(g){throw r.destroy(),Ot.getError("model",c,g)}let f=e.gltfCallback;l(f)&&f(r.gltfJson);let h=new Io(u),A=h._resource.credits;if(l(A)){let g=A.length;for(let m=0;m<g;m++)h._resourceCredits.push(Bt.clone(A[m]))}return h};Io.fromB3dm=async function(e){let t={b3dmResource:e.resource,arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline,loadForClassification:l(e.classificationType)},n=new t1(t);try{await n.load();let i=fL(n,wr.TILE_B3DM,e);return new Io(i)}catch(i){throw n.destroy(),i}};Io.fromPnts=async function(e){let t={arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,loadAttributesFor2D:e.projectTo2D},n=new cL(t);try{await n.load();let i=fL(n,wr.TILE_PNTS,e);return new Io(i)}catch(i){throw n.destroy(),i}};Io.fromI3dm=async function(e){let t={i3dmResource:e.resource,arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline},n=new o1(t);try{await n.load();let i=fL(n,wr.TILE_I3DM,e);return new Io(i)}catch(i){throw n.destroy(),i}};Io.fromGeoJson=async function(e){let t={geoJson:e.geoJson},n=new n1(t),i=fL(n,wr.TILE_GEOJSON,e);return new Io(i)};var iqe=new G;Io.prototype.applyColorAndShow=function(e){let t=G.clone(this._color,iqe),n=l(e)&&l(e.color),i=l(e)&&l(e.show);this._color=n?e.color.evaluateColor(void 0,this._color):G.clone(G.WHITE,this._color),this._show=i?e.show.evaluate(void 0):!0,pY(t,this._color)&&this.resetDrawCommands()};Io.prototype.applyStyle=function(e){let t=this.type===wr.TILE_PNTS,n=l(this.featureTableId)&&this.featureTables[this.featureTableId].featuresLength>0,i=l(this.structuralMetadata)?this.structuralMetadata.propertyAttributes:void 0,o=l(i)&&l(i[0]);if(t&&(!n||o)){this.resetDrawCommands();return}n?(this.featureTables[this.featureTableId].applyStyle(e),Pfe(this,e)):(this.applyColorAndShow(e),this._styleCommandsNeeded=void 0)};function fL(e,t,n){return{loader:e,type:t,resource:n.resource,show:n.show,modelMatrix:n.modelMatrix,scale:n.scale,enableVerticalExaggeration:n.enableVerticalExaggeration,minimumPixelSize:n.minimumPixelSize,maximumScale:n.maximumScale,id:n.id,allowPicking:n.allowPicking,clampAnimations:n.clampAnimations,shadows:n.shadows,debugShowBoundingVolume:n.debugShowBoundingVolume,enableDebugWireframe:n.enableDebugWireframe,debugWireframe:n.debugWireframe,cull:n.cull,opaquePass:n.opaquePass,customShader:n.customShader,content:n.content,heightReference:n.heightReference,scene:n.scene,distanceDisplayCondition:n.distanceDisplayCondition,color:n.color,colorBlendAmount:n.colorBlendAmount,colorBlendMode:n.colorBlendMode,silhouetteColor:n.silhouetteColor,silhouetteSize:n.silhouetteSize,enableShowOutline:n.enableShowOutline,showOutline:n.showOutline,outlineColor:n.outlineColor,clippingPlanes:n.clippingPlanes,clippingPolygons:n.clippingPolygons,lightColor:n.lightColor,imageBasedLighting:n.imageBasedLighting,backFaceCulling:n.backFaceCulling,credit:n.credit,showCreditsOnScreen:n.showCreditsOnScreen,splitDirection:n.splitDirection,projectTo2D:n.projectTo2D,enablePick:n.enablePick,featureIdLabel:n.featureIdLabel,instanceFeatureIdLabel:n.instanceFeatureIdLabel,pointCloudShading:n.pointCloudShading,classificationType:n.classificationType,pickObject:n.pickObject}}var Fh=Io;function ss(e,t,n){this._tileset=e,this._tile=t,this._resource=n,this._model=void 0,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(ss.prototype,{featuresLength:{get:function(){let e=this._model,t=e.featureTables,n=e.featureTableId;return l(t)&&l(t[n])?t[n].featuresLength:0}},pointsLength:{get:function(){return this._model.statistics.pointsLength}},trianglesLength:{get:function(){return this._model.statistics.trianglesLength}},geometryByteLength:{get:function(){return this._model.statistics.geometryByteLength}},texturesByteLength:{get:function(){return this._model.statistics.texturesByteLength}},batchTableByteLength:{get:function(){let e=this._model.statistics;return e.propertyTablesByteLength+e.batchTexturesByteLength}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){let e=this._model,t=e.featureTables,n=e.featureTableId;if(l(t)&&l(t[n]))return t[n]}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});ss.prototype.getTextureIds=function(){return this._model.statistics.getTextureIds()};ss.prototype.getTextureByteLengthById=function(e){return this._model.statistics.getTextureByteLengthById(e)};ss.prototype.getExtension=function(e){return this._model.getExtension(e)};ss.prototype.getFeature=function(e){let t=this._model,n=t.featureTableId;return t.featureTables[n].getFeature(e)};ss.prototype.hasProperty=function(e,t){let n=this._model,i=n.featureTableId;return l(i)?n.featureTables[i].hasProperty(e,t):!1};ss.prototype.applyDebugSettings=function(e,t){t=e?t:G.WHITE,this.featuresLength===0?this._model.color=t:l(this.batchTable)&&this.batchTable.setAllColor(t)};ss.prototype.applyStyle=function(e){this._model.style=e};ss.prototype.update=function(e,t){let n=this._model,i=this._tile;n.colorBlendAmount=e.colorBlendAmount,n.colorBlendMode=e.colorBlendMode,n.modelMatrix=i.computedTransform,n.customShader=e.customShader,n.featureIdLabel=e.featureIdLabel,n.instanceFeatureIdLabel=e.instanceFeatureIdLabel,n.lightColor=e.lightColor,n.imageBasedLighting=e.imageBasedLighting,n.backFaceCulling=e.backFaceCulling,n.shadows=e.shadows,n.showCreditsOnScreen=e.showCreditsOnScreen,n.splitDirection=e.splitDirection,n.debugWireframe=e.debugWireframe,n.showOutline=e.showOutline,n.outlineColor=e.outlineColor,n.pointCloudShading=e.pointCloudShading;let o=e.clippingPlanes;n.referenceMatrix=e.clippingPlanesOriginMatrix,l(o)&&i.clippingPlanesDirty&&(n._clippingPlanes=o.enabled&&i._isClipped?o:void 0);let r=e.environmentMapManager;n.environmentMapManager!==o&&(n._environmentMapManager=r),l(o)&&l(n._clippingPlanes)&&n._clippingPlanes!==o&&(n._clippingPlanes=o,n._clippingPlanesState=0);let s=e.clippingPolygons;l(s)&&i.clippingPolygonsDirty&&(n._clippingPolygons=s.enabled&&i._isClippedByPolygon?s:void 0),l(s)&&l(n._clippingPolygons)&&n._clippingPolygons!==s&&(n._clippingPolygons=s,n._clippingPolygonsState=0),n.update(t),!this._ready&&n.ready&&(n.activeAnimations.addAll({loop:cu.REPEAT}),this._ready=!0)};ss.prototype.isDestroyed=function(){return!1};ss.prototype.destroy=function(){return this._model=this._model&&this._model.destroy(),ue(this)};ss.fromGltf=async function(e,t,n,i){let o=new ss(e,t,n),s=dL(e,t,o,{gltf:i,basePath:n}),a=e.vectorClassificationOnly?void 0:e.classificationType;s.classificationType=a;let c=await Fh.fromGltfAsync(s);return o._model=c,o};ss.fromB3dm=async function(e,t,n,i,o){let r=new ss(e,t,n),a=dL(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=e.vectorClassificationOnly?void 0:e.classificationType;a.classificationType=c;let u=await Fh.fromB3dm(a);return r._model=u,r};ss.fromI3dm=async function(e,t,n,i,o){let r=new ss(e,t,n),a=dL(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=await Fh.fromI3dm(a);return r._model=c,r};ss.fromPnts=async function(e,t,n,i,o){let r=new ss(e,t,n),a=dL(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=await Fh.fromPnts(a);return r._model=c,r};ss.fromGeoJson=async function(e,t,n,i){let o=new ss(e,t,n),s=dL(e,t,o,{geoJson:i,resource:n}),a=await Fh.fromGeoJson(s);return o._model=a,o};ss.prototype.pick=function(e,t,n){if(!l(this._model)||!this._ready)return;let i=t.verticalExaggeration,o=t.verticalExaggerationRelativeHeight;return this._model.pick(e,t,i,o,te.WGS84,n)};function dL(e,t,n,i){let o={cull:!1,releaseGltfJson:!0,opaquePass:Be.CESIUM_3D_TILE,modelMatrix:t.computedTransform,upAxis:e._modelUpAxis,forwardAxis:e._modelForwardAxis,incrementallyLoadTextures:!1,customShader:e.customShader,content:n,colorBlendMode:e.colorBlendMode,colorBlendAmount:e.colorBlendAmount,lightColor:e.lightColor,imageBasedLighting:e.imageBasedLighting,featureIdLabel:e.featureIdLabel,instanceFeatureIdLabel:e.instanceFeatureIdLabel,pointCloudShading:e.pointCloudShading,clippingPlanes:e.clippingPlanes,backFaceCulling:e.backFaceCulling,shadows:e.shadows,showCreditsOnScreen:e.showCreditsOnScreen,splitDirection:e.splitDirection,enableDebugWireframe:e._enableDebugWireframe,debugWireframe:e.debugWireframe,projectTo2D:e._projectTo2D,enablePick:e._enablePick,enableShowOutline:e._enableShowOutline,showOutline:e.showOutline,outlineColor:e.outlineColor};return Tt(i,o)}var tf=ss;function fd(e,t,n){this._tileset=e,this._tile=t,this._resource=n,this.featurePropertiesDirty=!1,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(fd.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});fd.fromJson=function(e,t,n,i){let o=new fd(e,t,n);return o._tileset.loadTileset(o._resource,i,o._tile),o._ready=!0,o};fd.prototype.hasProperty=function(e,t){return!1};fd.prototype.getFeature=function(e){};fd.prototype.applyDebugSettings=function(e,t){};fd.prototype.applyStyle=function(e){};fd.prototype.update=function(e,t){};fd.prototype.pick=function(e,t,n){};fd.prototype.isDestroyed=function(){return!1};fd.prototype.destroy=function(){return ue(this)};var hL=fd;function ga(e,t,n,i){let o=ga._verifyAttributes(t);n=n??0;let r=[],s={},a,c,u=o.length;for(let h=0;h<u;++h){let A=o[h];if(A.vertexBuffer){r.push(A);continue}c=A.usage,a=s[c],l(a)||(a=s[c]=[]),a.push(A)}function f(h,A){return q.getSizeInBytes(A.componentDatatype)-q.getSizeInBytes(h.componentDatatype)}this._allBuffers=[];for(c in s)if(s.hasOwnProperty(c)){a=s[c],a.sort(f);let h=ga._vertexSizeInBytes(a),A=a[0].usage,g={vertexSizeInBytes:h,vertexBuffer:void 0,usage:A,needsCommit:!1,arrayBuffer:void 0,arrayViews:ga._createArrayViews(a,h)};this._allBuffers.push(g)}this._size=0,this._instanced=i??!1,this._precreated=r,this._context=e,this.writers=void 0,this.va=void 0,this.resize(n)}ga._verifyAttributes=function(e){let t=[];for(let i=0;i<e.length;++i){let o=e[i],r={index:o.index??i,enabled:o.enabled??!0,componentsPerAttribute:o.componentsPerAttribute,componentDatatype:o.componentDatatype??q.FLOAT,normalize:o.normalize??!1,vertexBuffer:o.vertexBuffer,usage:o.usage??Qe.STATIC_DRAW};t.push(r)}let n=new Array(t.length);for(let i=0;i<t.length;++i){let r=t[i].index;n[r]=!0}return t};ga._vertexSizeInBytes=function(e){let t=0,n=e.length;for(let s=0;s<n;++s){let a=e[s];t+=a.componentsPerAttribute*q.getSizeInBytes(a.componentDatatype)}let i=n>0?q.getSizeInBytes(e[0].componentDatatype):0,o=i>0?t%i:0,r=o===0?0:i-o;return t+=r,t};ga._createArrayViews=function(e,t){let n=[],i=0,o=e.length;for(let r=0;r<o;++r){let s=e[r],a=s.componentDatatype;n.push({index:s.index,enabled:s.enabled,componentsPerAttribute:s.componentsPerAttribute,componentDatatype:a,normalize:s.normalize,offsetInBytes:i,vertexSizeInComponentType:t/q.getSizeInBytes(a),view:void 0}),i+=s.componentsPerAttribute*q.getSizeInBytes(a)}return n};ga.prototype.resize=function(e){this._size=e;let t=this._allBuffers;this.writers=[];for(let n=0,i=t.length;n<i;++n){let o=t[n];ga._resize(o,this._size),ga._appendWriters(this.writers,o)}gY(this)};ga._resize=function(e,t){if(e.vertexSizeInBytes>0){let n=new ArrayBuffer(t*e.vertexSizeInBytes);if(l(e.arrayBuffer)){let r=new Uint8Array(n),s=new Uint8Array(e.arrayBuffer),a=s.length;for(let c=0;c<a;++c)r[c]=s[c]}let i=e.arrayViews,o=i.length;for(let r=0;r<o;++r){let s=i[r];s.view=q.createArrayBufferView(s.componentDatatype,n,s.offsetInBytes)}e.arrayBuffer=n}};var oqe=[function(e,t,n){return function(i,o){t[i*n]=o,e.needsCommit=!0}},function(e,t,n){return function(i,o,r){let s=i*n;t[s]=o,t[s+1]=r,e.needsCommit=!0}},function(e,t,n){return function(i,o,r,s){let a=i*n;t[a]=o,t[a+1]=r,t[a+2]=s,e.needsCommit=!0}},function(e,t,n){return function(i,o,r,s,a){let c=i*n;t[c]=o,t[c+1]=r,t[c+2]=s,t[c+3]=a,e.needsCommit=!0}}];ga._appendWriters=function(e,t){let n=t.arrayViews,i=n.length;for(let o=0;o<i;++o){let r=n[o];e[r.index]=oqe[r.componentsPerAttribute-1](t,r.view,r.vertexSizeInComponentType)}};ga.prototype.commit=function(e){let t=!1,n=this._allBuffers,i,o,r;for(o=0,r=n.length;o<r;++o)i=n[o],t=rqe(this,i)||t;if(t||!l(this.va)){gY(this);let s=this.va=[],a=D.SIXTY_FOUR_KILOBYTES-4,c=l(e)&&!this._instanced?Math.ceil(this._size/a):1;for(let u=0;u<c;++u){let f=[];for(o=0,r=n.length;o<r;++o){i=n[o];let h=u*(i.vertexSizeInBytes*a);ga._appendAttributes(f,i,h,this._instanced)}f=f.concat(this._precreated),s.push({va:new li({context:this._context,attributes:f,indexBuffer:e}),indicesCount:1.5*(u!==c-1?a:this._size%a)})}}};function rqe(e,t){if(t.needsCommit&&t.vertexSizeInBytes>0){t.needsCommit=!1;let n=t.vertexBuffer,i=e._size*t.vertexSizeInBytes,o=l(n);if(!o||n.sizeInBytes<i)return o&&n.destroy(),t.vertexBuffer=Ct.createVertexBuffer({context:e._context,typedArray:t.arrayBuffer,usage:t.usage}),t.vertexBuffer.vertexArrayDestroyable=!1,!0;t.vertexBuffer.copyFromArrayView(t.arrayBuffer)}return!1}ga._appendAttributes=function(e,t,n,i){let o=t.arrayViews,r=o.length;for(let s=0;s<r;++s){let a=o[s];e.push({index:a.index,enabled:a.enabled,componentsPerAttribute:a.componentsPerAttribute,componentDatatype:a.componentDatatype,normalize:a.normalize,vertexBuffer:t.vertexBuffer,offsetInBytes:n+a.offsetInBytes,strideInBytes:t.vertexSizeInBytes,instanceDivisor:i?1:0})}};ga.prototype.subCommit=function(e,t){let n=this._allBuffers;for(let i=0,o=n.length;i<o;++i)sqe(n[i],e,t)};function sqe(e,t,n){if(e.needsCommit&&e.vertexSizeInBytes>0){let i=e.vertexSizeInBytes*t,o=e.vertexSizeInBytes*n;e.vertexBuffer.copyFromArrayView(new Uint8Array(e.arrayBuffer,i,o),i)}}ga.prototype.endSubCommits=function(){let e=this._allBuffers;for(let t=0,n=e.length;t<n;++t)e[t].needsCommit=!1};function gY(e){let t=e.va;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].va.destroy();e.va=void 0}ga.prototype.isDestroyed=function(){return!1};ga.prototype.destroy=function(){let e=this._allBuffers;for(let t=0,n=e.length;t<n;++t){let i=e[t];i.vertexBuffer=i.vertexBuffer&&i.vertexBuffer.destroy()}return gY(this),ue(this)};var Zp=ga;var mL=`uniform sampler2D u_atlas; + +#ifdef VECTOR_TILE +uniform vec4 u_highlightColor; +#endif + +in vec2 v_textureCoordinates; +in vec4 v_pickColor; +in vec4 v_color; +in float v_splitDirection; + +#ifdef SDF +in vec4 v_outlineColor; +in float v_outlineWidth; +#endif + +#ifdef FRAGMENT_DEPTH_CHECK +in vec4 v_textureCoordinateBounds; // the min and max x and y values for the texture coordinates +in vec4 v_originTextureCoordinateAndTranslate; // texture coordinate at the origin, billboard translate (used for label glyphs) +in vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize +in mat2 v_rotationMatrix; + +const float SHIFT_LEFT12 = 4096.0; +const float SHIFT_LEFT1 = 2.0; + +const float SHIFT_RIGHT12 = 1.0 / 4096.0; +const float SHIFT_RIGHT1 = 1.0 / 2.0; + +float getGlobeDepth(vec2 adjustedST, vec2 depthLookupST, bool applyTranslate, vec2 dimensions, vec2 imageSize) +{ + vec2 lookupVector = imageSize * (depthLookupST - adjustedST); + lookupVector = v_rotationMatrix * lookupVector; + vec2 labelOffset = (dimensions - imageSize) * (depthLookupST - vec2(0.0, v_originTextureCoordinateAndTranslate.y)); // aligns label glyph with bounding rectangle. Will be zero for billboards because dimensions and imageSize will be equal + + vec2 translation = v_originTextureCoordinateAndTranslate.zw; + + if (applyTranslate) + { + // this is only needed for labels where the horizontal origin is not LEFT + // it moves the label back to where the "origin" should be since all label glyphs are set to HorizontalOrigin.LEFT + translation += (dimensions * v_originTextureCoordinateAndTranslate.xy * vec2(1.0, 0.0)); + } + + vec2 st = ((lookupVector - translation + labelOffset) + gl_FragCoord.xy) / czm_viewport.zw; + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, st)); + + if (logDepthOrDepth == 0.0) + { + return 0.0; // not on the globe + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + return eyeCoordinate.z / eyeCoordinate.w; +} +#endif + + +#ifdef SDF + +// Get the distance from the edge of a glyph at a given position sampling an SDF texture. +float getDistance(vec2 position) +{ + return texture(u_atlas, position).r; +} + +// Samples the sdf texture at the given position and produces a color based on the fill color and the outline. +vec4 getSDFColor(vec2 position, float outlineWidth, vec4 outlineColor, float smoothing) +{ + float distance = getDistance(position); + + if (outlineWidth > 0.0) + { + // Don't get the outline edge exceed the SDF_EDGE + float outlineEdge = clamp(SDF_EDGE - outlineWidth, 0.0, SDF_EDGE); + float outlineFactor = smoothstep(SDF_EDGE - smoothing, SDF_EDGE + smoothing, distance); + vec4 sdfColor = mix(outlineColor, v_color, outlineFactor); + float alpha = smoothstep(outlineEdge - smoothing, outlineEdge + smoothing, distance); + return vec4(sdfColor.rgb, sdfColor.a * alpha); + } + else + { + float alpha = smoothstep(SDF_EDGE - smoothing, SDF_EDGE + smoothing, distance); + return vec4(v_color.rgb, v_color.a * alpha); + } +} +#endif + +void main() +{ + if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; + + vec4 color = texture(u_atlas, v_textureCoordinates); + +#ifdef SDF + float outlineWidth = v_outlineWidth; + vec4 outlineColor = v_outlineColor; + + // Get the current distance + float distance = getDistance(v_textureCoordinates); + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + float smoothing = fwidth(distance); + // Get an offset that is approximately half the distance to the neighbor pixels + // 0.354 is approximately half of 1/sqrt(2) + vec2 sampleOffset = 0.354 * vec2(dFdx(v_textureCoordinates) + dFdy(v_textureCoordinates)); + + // Sample the center point + vec4 center = getSDFColor(v_textureCoordinates, outlineWidth, outlineColor, smoothing); + + // Sample the 4 neighbors + vec4 color1 = getSDFColor(v_textureCoordinates + vec2(sampleOffset.x, sampleOffset.y), outlineWidth, outlineColor, smoothing); + vec4 color2 = getSDFColor(v_textureCoordinates + vec2(-sampleOffset.x, sampleOffset.y), outlineWidth, outlineColor, smoothing); + vec4 color3 = getSDFColor(v_textureCoordinates + vec2(-sampleOffset.x, -sampleOffset.y), outlineWidth, outlineColor, smoothing); + vec4 color4 = getSDFColor(v_textureCoordinates + vec2(sampleOffset.x, -sampleOffset.y), outlineWidth, outlineColor, smoothing); + + // Equally weight the center sample and the 4 neighboring samples + color = (center + color1 + color2 + color3 + color4)/5.0; +#else + // If no derivatives available (IE 10?), just do a single sample + float smoothing = 1.0/32.0; + color = getSDFColor(v_textureCoordinates, outlineWidth, outlineColor, smoothing); +#endif + + color = czm_gammaCorrect(color); +#else + color = czm_gammaCorrect(color); + color *= czm_gammaCorrect(v_color); +#endif + +// Fully transparent parts of the billboard are not pickable. +#if !defined(OPAQUE) && !defined(TRANSLUCENT) + if (color.a < 0.005) // matches 0/255 and 1/255 + { + discard; + } +#else +// The billboard is rendered twice. The opaque pass discards translucent fragments +// and the translucent pass discards opaque fragments. +#ifdef OPAQUE + if (color.a < 0.995) // matches < 254/255 + { + discard; + } +#else + if (color.a >= 0.995) // matches 254/255 and 255/255 + { + discard; + } +#endif +#endif + +#ifdef VECTOR_TILE + color *= u_highlightColor; +#endif + out_FragColor = color; + +#ifdef LOG_DEPTH + czm_writeLogDepth(); +#endif + +#ifdef FRAGMENT_DEPTH_CHECK + float temp = v_compressed.y; + + temp = temp * SHIFT_RIGHT1; + + float temp2 = (temp - floor(temp)) * SHIFT_LEFT1; + bool enableDepthTest = temp2 != 0.0; + bool applyTranslate = floor(temp) != 0.0; + + if (enableDepthTest) { + temp = v_compressed.z; + temp = temp * SHIFT_RIGHT12; + + vec2 dimensions; + dimensions.y = (temp - floor(temp)) * SHIFT_LEFT12; + dimensions.x = floor(temp); + + temp = v_compressed.w; + temp = temp * SHIFT_RIGHT12; + + vec2 imageSize; + imageSize.y = (temp - floor(temp)) * SHIFT_LEFT12; + imageSize.x = floor(temp); + + vec2 adjustedST = v_textureCoordinates - v_textureCoordinateBounds.xy; + adjustedST = adjustedST / vec2(v_textureCoordinateBounds.z - v_textureCoordinateBounds.x, v_textureCoordinateBounds.w - v_textureCoordinateBounds.y); + + float epsilonEyeDepth = v_compressed.x + czm_epsilon1; + float globeDepth1 = getGlobeDepth(adjustedST, v_originTextureCoordinateAndTranslate.xy, applyTranslate, dimensions, imageSize); + + // negative values go into the screen + if (globeDepth1 != 0.0 && globeDepth1 > epsilonEyeDepth) + { + float globeDepth2 = getGlobeDepth(adjustedST, vec2(0.0, 1.0), applyTranslate, dimensions, imageSize); // top left corner + if (globeDepth2 != 0.0 && globeDepth2 > epsilonEyeDepth) + { + float globeDepth3 = getGlobeDepth(adjustedST, vec2(1.0, 1.0), applyTranslate, dimensions, imageSize); // top right corner + if (globeDepth3 != 0.0 && globeDepth3 > epsilonEyeDepth) + { + discard; + } + } + } + } +#endif + +} +`;var AL=`#ifdef INSTANCED +in vec2 direction; +#endif +in vec4 positionHighAndScale; +in vec4 positionLowAndRotation; +in vec4 compressedAttribute0; // pixel offset, translate, horizontal origin, vertical origin, show, direction, texture coordinates (texture offset) +in vec4 compressedAttribute1; // aligned axis, translucency by distance, image width +in vec4 compressedAttribute2; // label horizontal origin, image height, color, pick color, size in meters, valid aligned axis, 13 bits free +in vec4 eyeOffset; // eye offset in meters, 4 bytes free (texture range) +in vec4 scaleByDistance; // near, nearScale, far, farScale +in vec4 pixelOffsetScaleByDistance; // near, nearScale, far, farScale +in vec4 compressedAttribute3; // distance display condition near, far, disableDepthTestDistance, dimensions +in vec2 sdf; // sdf outline color (rgb) and width (w) +in float splitDirection; // splitDirection +#if defined(VERTEX_DEPTH_CHECK) || defined(FRAGMENT_DEPTH_CHECK) +in vec4 textureCoordinateBoundsOrLabelTranslate; // the min and max x and y values for the texture coordinates +#endif +#ifdef VECTOR_TILE +in float a_batchId; +#endif + +out vec2 v_textureCoordinates; +#ifdef FRAGMENT_DEPTH_CHECK +out vec4 v_textureCoordinateBounds; +out vec4 v_originTextureCoordinateAndTranslate; +out vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize +out mat2 v_rotationMatrix; +#endif + +out vec4 v_pickColor; +out vec4 v_color; +out float v_splitDirection; +#ifdef SDF +out vec4 v_outlineColor; +out float v_outlineWidth; +#endif + +const float UPPER_BOUND = 32768.0; + +const float SHIFT_LEFT16 = 65536.0; +const float SHIFT_LEFT12 = 4096.0; +const float SHIFT_LEFT8 = 256.0; +const float SHIFT_LEFT7 = 128.0; +const float SHIFT_LEFT5 = 32.0; +const float SHIFT_LEFT3 = 8.0; +const float SHIFT_LEFT2 = 4.0; +const float SHIFT_LEFT1 = 2.0; + +const float SHIFT_RIGHT12 = 1.0 / 4096.0; +const float SHIFT_RIGHT8 = 1.0 / 256.0; +const float SHIFT_RIGHT7 = 1.0 / 128.0; +const float SHIFT_RIGHT5 = 1.0 / 32.0; +const float SHIFT_RIGHT3 = 1.0 / 8.0; +const float SHIFT_RIGHT2 = 1.0 / 4.0; +const float SHIFT_RIGHT1 = 1.0 / 2.0; + +vec4 addScreenSpaceOffset(vec4 positionEC, vec2 imageSize, float scale, vec2 direction, vec2 origin, vec2 translate, vec2 pixelOffset, vec3 alignedAxis, bool validAlignedAxis, float rotation, bool sizeInMeters, out mat2 rotationMatrix, out float mpp) +{ + // Note the halfSize cannot be computed in JavaScript because it is sent via + // compressed vertex attributes that coerce it to an integer. + vec2 halfSize = imageSize * scale * 0.5; + halfSize *= ((direction * 2.0) - 1.0); + + vec2 originTranslate = origin * abs(halfSize); + +#if defined(ROTATION) || defined(ALIGNED_AXIS) + if (validAlignedAxis || rotation != 0.0) + { + float angle = rotation; + if (validAlignedAxis) + { + vec4 projectedAlignedAxis = czm_modelView3D * vec4(alignedAxis, 0.0); + angle += sign(-projectedAlignedAxis.x) * acos(sign(projectedAlignedAxis.y) * (projectedAlignedAxis.y * projectedAlignedAxis.y) / + (projectedAlignedAxis.x * projectedAlignedAxis.x + projectedAlignedAxis.y * projectedAlignedAxis.y)); + } + + float cosTheta = cos(angle); + float sinTheta = sin(angle); + rotationMatrix = mat2(cosTheta, sinTheta, -sinTheta, cosTheta); + halfSize = rotationMatrix * halfSize; + } + else + { + rotationMatrix = mat2(1.0, 0.0, 0.0, 1.0); + } +#endif + + mpp = czm_metersPerPixel(positionEC); + positionEC.xy += (originTranslate + halfSize) * czm_branchFreeTernary(sizeInMeters, 1.0, mpp); + positionEC.xy += (translate + pixelOffset) * mpp; + + return positionEC; +} + +#ifdef VERTEX_DEPTH_CHECK +float getGlobeDepth(vec4 positionEC) +{ + vec4 posWC = czm_eyeToWindowCoordinates(positionEC); + + float globeDepth = czm_unpackDepth(texture(czm_globeDepthTexture, posWC.xy / czm_viewport.zw)); + + if (globeDepth == 0.0) + { + return 0.0; // not on the globe + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(posWC.xy, globeDepth); + return eyeCoordinate.z / eyeCoordinate.w; +} +#endif +void main() +{ + // Modifying this shader may also require modifications to Billboard._computeScreenSpacePosition + + // unpack attributes + vec3 positionHigh = positionHighAndScale.xyz; + vec3 positionLow = positionLowAndRotation.xyz; + float scale = positionHighAndScale.w; + +#if defined(ROTATION) || defined(ALIGNED_AXIS) + float rotation = positionLowAndRotation.w; +#else + float rotation = 0.0; +#endif + + float compressed = compressedAttribute0.x; + + vec2 pixelOffset; + pixelOffset.x = floor(compressed * SHIFT_RIGHT7); + compressed -= pixelOffset.x * SHIFT_LEFT7; + pixelOffset.x -= UPPER_BOUND; + + vec2 origin; + origin.x = floor(compressed * SHIFT_RIGHT5); + compressed -= origin.x * SHIFT_LEFT5; + + origin.y = floor(compressed * SHIFT_RIGHT3); + compressed -= origin.y * SHIFT_LEFT3; + +#ifdef FRAGMENT_DEPTH_CHECK + vec2 depthOrigin = origin.xy; +#endif + origin -= vec2(1.0); + + float show = floor(compressed * SHIFT_RIGHT2); + compressed -= show * SHIFT_LEFT2; + +#ifdef INSTANCED + vec2 textureCoordinatesBottomLeft = czm_decompressTextureCoordinates(compressedAttribute0.w); + vec2 textureCoordinatesRange = czm_decompressTextureCoordinates(eyeOffset.w); + vec2 textureCoordinates = textureCoordinatesBottomLeft + direction * textureCoordinatesRange; +#else + vec2 direction; + direction.x = floor(compressed * SHIFT_RIGHT1); + direction.y = compressed - direction.x * SHIFT_LEFT1; + + vec2 textureCoordinates = czm_decompressTextureCoordinates(compressedAttribute0.w); +#endif + + float temp = compressedAttribute0.y * SHIFT_RIGHT8; + pixelOffset.y = -(floor(temp) - UPPER_BOUND); + + vec2 translate; + translate.y = (temp - floor(temp)) * SHIFT_LEFT16; + + temp = compressedAttribute0.z * SHIFT_RIGHT8; + translate.x = floor(temp) - UPPER_BOUND; + + translate.y += (temp - floor(temp)) * SHIFT_LEFT8; + translate.y -= UPPER_BOUND; + + temp = compressedAttribute1.x * SHIFT_RIGHT8; + float temp2 = floor(compressedAttribute2.w * SHIFT_RIGHT2); + + vec2 imageSize = vec2(floor(temp), temp2); + +#ifdef FRAGMENT_DEPTH_CHECK + float labelHorizontalOrigin = floor(compressedAttribute2.w - (temp2 * SHIFT_LEFT2)); + float applyTranslate = 0.0; + if (labelHorizontalOrigin != 0.0) // is a billboard, so set apply translate to false + { + applyTranslate = 1.0; + labelHorizontalOrigin -= 2.0; + depthOrigin.x = labelHorizontalOrigin + 1.0; + } + + depthOrigin = vec2(1.0) - (depthOrigin * 0.5); +#endif + +#ifdef EYE_DISTANCE_TRANSLUCENCY + vec4 translucencyByDistance; + translucencyByDistance.x = compressedAttribute1.z; + translucencyByDistance.z = compressedAttribute1.w; + + translucencyByDistance.y = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; + + temp = compressedAttribute1.y * SHIFT_RIGHT8; + translucencyByDistance.w = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; +#endif + +#if defined(VERTEX_DEPTH_CHECK) || defined(FRAGMENT_DEPTH_CHECK) + temp = compressedAttribute3.w; + temp = temp * SHIFT_RIGHT12; + + vec2 dimensions; + dimensions.y = (temp - floor(temp)) * SHIFT_LEFT12; + dimensions.x = floor(temp); +#endif + +#ifdef ALIGNED_AXIS + vec3 alignedAxis = czm_octDecode(floor(compressedAttribute1.y * SHIFT_RIGHT8)); + temp = compressedAttribute2.z * SHIFT_RIGHT5; + bool validAlignedAxis = (temp - floor(temp)) * SHIFT_LEFT1 > 0.0; +#else + vec3 alignedAxis = vec3(0.0); + bool validAlignedAxis = false; +#endif + + vec4 pickColor; + vec4 color; + + temp = compressedAttribute2.y; + temp = temp * SHIFT_RIGHT8; + pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor.r = floor(temp); + + temp = compressedAttribute2.x; + temp = temp * SHIFT_RIGHT8; + color.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + color.g = (temp - floor(temp)) * SHIFT_LEFT8; + color.r = floor(temp); + + temp = compressedAttribute2.z * SHIFT_RIGHT8; + bool sizeInMeters = floor((temp - floor(temp)) * SHIFT_LEFT7) > 0.0; + temp = floor(temp) * SHIFT_RIGHT8; + + pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor /= 255.0; + + color.a = floor(temp); + color /= 255.0; + + /////////////////////////////////////////////////////////////////////////// + + vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + vec4 positionEC = czm_modelViewRelativeToEye * p; + +#if defined(FRAGMENT_DEPTH_CHECK) || defined(VERTEX_DEPTH_CHECK) + float eyeDepth = positionEC.z; +#endif + + positionEC = czm_eyeOffset(positionEC, eyeOffset.xyz); + positionEC.xyz *= show; + + /////////////////////////////////////////////////////////////////////////// + +#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(EYE_DISTANCE_PIXEL_OFFSET) || defined(DISTANCE_DISPLAY_CONDITION) || defined(DISABLE_DEPTH_DISTANCE) + float lengthSq; + if (czm_sceneMode == czm_sceneMode2D) + { + // 2D camera distance is a special case + // treat all billboards as flattened to the z=0.0 plane + lengthSq = czm_eyeHeight2D.y; + } + else + { + lengthSq = dot(positionEC.xyz, positionEC.xyz); + } +#endif + +#ifdef EYE_DISTANCE_SCALING + float distanceScale = czm_nearFarScalar(scaleByDistance, lengthSq); + scale *= distanceScale; + translate *= distanceScale; + // push vertex behind near plane for clipping + if (scale == 0.0) + { + positionEC.xyz = vec3(0.0); + } +#endif + + float translucency = 1.0; +#ifdef EYE_DISTANCE_TRANSLUCENCY + translucency = czm_nearFarScalar(translucencyByDistance, lengthSq); + // push vertex behind near plane for clipping + if (translucency == 0.0) + { + positionEC.xyz = vec3(0.0); + } +#endif + +#ifdef EYE_DISTANCE_PIXEL_OFFSET + float pixelOffsetScale = czm_nearFarScalar(pixelOffsetScaleByDistance, lengthSq); + pixelOffset *= pixelOffsetScale; +#endif + +#ifdef DISTANCE_DISPLAY_CONDITION + float nearSq = compressedAttribute3.x; + float farSq = compressedAttribute3.y; + if (lengthSq < nearSq || lengthSq > farSq) + { + positionEC.xyz = vec3(0.0); + } +#endif + + mat2 rotationMatrix; + float mpp; + +#ifdef DISABLE_DEPTH_DISTANCE + float disableDepthTestDistance = compressedAttribute3.z; +#endif + +#ifdef VERTEX_DEPTH_CHECK +if (lengthSq < disableDepthTestDistance) { + float depthsilon = 10.0; + + vec2 labelTranslate = textureCoordinateBoundsOrLabelTranslate.xy; + vec4 pEC1 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(0.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + float globeDepth1 = getGlobeDepth(pEC1); + + if (globeDepth1 != 0.0 && pEC1.z + depthsilon < globeDepth1) + { + vec4 pEC2 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(0.0, 1.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + float globeDepth2 = getGlobeDepth(pEC2); + + if (globeDepth2 != 0.0 && pEC2.z + depthsilon < globeDepth2) + { + vec4 pEC3 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(1.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + float globeDepth3 = getGlobeDepth(pEC3); + if (globeDepth3 != 0.0 && pEC3.z + depthsilon < globeDepth3) + { + positionEC.xyz = vec3(0.0); + } + } + } +} +#endif + + positionEC = addScreenSpaceOffset(positionEC, imageSize, scale, direction, origin, translate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + gl_Position = czm_projection * positionEC; + v_textureCoordinates = textureCoordinates; + +#ifdef LOG_DEPTH + czm_vertexLogDepth(); +#endif + +#ifdef DISABLE_DEPTH_DISTANCE + if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0) + { + disableDepthTestDistance = czm_minimumDisableDepthTestDistance; + } + + if (disableDepthTestDistance != 0.0) + { + // Don't try to "multiply both sides" by w. Greater/less-than comparisons won't work for negative values of w. + float zclip = gl_Position.z / gl_Position.w; + bool clipped = (zclip < -1.0 || zclip > 1.0); + if (!clipped && (disableDepthTestDistance < 0.0 || (lengthSq > 0.0 && lengthSq < disableDepthTestDistance))) + { + // Position z on the near plane. + gl_Position.z = -gl_Position.w; +#ifdef LOG_DEPTH + v_depthFromNearPlusOne = 1.0; +#endif + } + } +#endif + +#ifdef FRAGMENT_DEPTH_CHECK + if (sizeInMeters) { + translate /= mpp; + dimensions /= mpp; + imageSize /= mpp; + } + +#if defined(ROTATION) || defined(ALIGNED_AXIS) + v_rotationMatrix = rotationMatrix; +#else + v_rotationMatrix = mat2(1.0, 0.0, 0.0, 1.0); +#endif + + float enableDepthCheck = 0.0; + if (lengthSq < disableDepthTestDistance) + { + enableDepthCheck = 1.0; + } + + float dw = floor(clamp(dimensions.x, 0.0, SHIFT_LEFT12)); + float dh = floor(clamp(dimensions.y, 0.0, SHIFT_LEFT12)); + + float iw = floor(clamp(imageSize.x, 0.0, SHIFT_LEFT12)); + float ih = floor(clamp(imageSize.y, 0.0, SHIFT_LEFT12)); + + v_compressed.x = eyeDepth; + v_compressed.y = applyTranslate * SHIFT_LEFT1 + enableDepthCheck; + v_compressed.z = dw * SHIFT_LEFT12 + dh; + v_compressed.w = iw * SHIFT_LEFT12 + ih; + v_originTextureCoordinateAndTranslate.xy = depthOrigin; + v_originTextureCoordinateAndTranslate.zw = translate; + v_textureCoordinateBounds = textureCoordinateBoundsOrLabelTranslate; + +#endif + +#ifdef SDF + vec4 outlineColor; + float outlineWidth; + + temp = sdf.x; + temp = temp * SHIFT_RIGHT8; + outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor.r = floor(temp); + + temp = sdf.y; + temp = temp * SHIFT_RIGHT8; + float temp3 = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + outlineWidth = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor.a = floor(temp); + outlineColor /= 255.0; + + v_outlineWidth = outlineWidth / 255.0; + v_outlineColor = outlineColor; + v_outlineColor.a *= translucency; +#endif + + v_pickColor = pickColor; + + v_color = color; + v_color.a *= translucency; + v_splitDirection = splitDirection; +} +`;var aqe=Object.freeze({NONE:0,LOADING:2,LOADED:3,ERROR:4,FAILED:5}),ws=aqe;function $p(e){this._billboardCollection=e,this._id=void 0,this._loadState=ws.NONE,this._loadError=void 0,this._index=-1,this._width=void 0,this._height=void 0,this._hasSubregion=!1,this.dirty=!1}Object.defineProperties($p.prototype,{loadError:{get:function(){return this._loadError}},loadState:{get:function(){return this._loadState}},ready:{get:function(){return this._loadState===ws.LOADED}},hasImage:{get:function(){return this._loadState!==ws.NONE}},id:{get:function(){return this._id}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});$p.prototype.unload=async function(){this._loadState!==ws.NONE&&(this._id=void 0,this._loadError=void 0,this._loadState=ws.NONE,this._index=-1,this._width=void 0,this._height=void 0,this.dirty=!0)};$p.prototype.loadImage=async function(e,t){if(this._id===e)return;let n=this._billboardCollection,i=n.billboardTextureCache,o=i.get(e);if(l(o)&&t.loadState===ws.LOADING||t.loadState===ws.LOADED){$p.clone(o,this);return}l(o)||(o=new $p(n),i.set(e,o)),o._id=this._id=e,o._loadState=this._loadState=ws.LOADING,o._loadError=this._loadError=void 0;let r,s=this._billboardCollection.textureAtlas;try{r=await s.addImage(e,t)}catch(c){if(o._loadState=ws.ERROR,o._loadError=c,this._id!==e)return;this._loadState=ws.ERROR,this._loadError=c;return}if(!l(r)||r===-1){if(o._loadState=ws.FAILED,o._index=-1,this._id!==e)return;this._loadState=ws.FAILED,this._index=-1;return}o._index=r,o._loadState=ws.LOADED;let a=s.rectangles[r];o._width=a.width,o._height=a.height,this._id===e&&(this._index=r,this._loadState=ws.LOADED,this._width=a.width,this._height=a.height,this.dirty=!0)};$p.prototype.addImageSubRegion=async function(e,t){this._id=e,this._loadState=ws.LOADING,this._loadError=void 0,this._hasSubregion=!0;let n,i=this._billboardCollection.textureAtlas;try{n=await i.addImageSubRegion(e,t)}catch(o){this._loadState=ws.ERROR,this._loadError=o;return}if(!l(n)||n===-1){this._loadState=ws.FAILED,this._index=-1,this._width=void 0,this._height=void 0;return}this._width=t.width,this._height=t.height,this._index=n,this._loadState=ws.LOADED,this.dirty=!0};$p.prototype.computeTextureCoordinates=function(e){return this._billboardCollection.textureAtlas.computeTextureCoordinates(this._index,e)};$p.clone=function(e,t){if(t._id=e._id,t._loadState=e._loadState,t._loadError=void 0,t._index=e._index,t._width=e._width,t._height=e._height,t._hasSubregion=e._hasSubregion,e.ready){t.dirty=!0;return}return(async()=>{let i=e._id;await e._billboardCollection.textureAtlas._indexPromiseById.get(i),t._id===i&&(e._hasSubregion&&await Promise.resolve(),t._id=i,t._loadState=e._loadState,t._loadError=e._loadError,t._index=e._index,t._width=e._width,t._height=e._height,t.dirty=!0)})(),t};var eg=$p;function vi(e,t){e=e??V.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.pixelOffsetScaleByDistance,o=e.scaleByDistance,r=e.distanceDisplayCondition;l(n)&&(n=jt.clone(n)),l(i)&&(i=jt.clone(i)),l(o)&&(o=jt.clone(o)),l(r)&&(r=Ut.clone(r)),this._show=e.show??!0,this._position=d.clone(e.position??d.ZERO),this._actualPosition=d.clone(this._position),this._pixelOffset=U.clone(e.pixelOffset??U.ZERO),this._translate=new U(0,0),this._eyeOffset=d.clone(e.eyeOffset??d.ZERO),this._heightReference=e.heightReference??Ze.NONE,this._verticalOrigin=e.verticalOrigin??zn.CENTER,this._horizontalOrigin=e.horizontalOrigin??Ri.CENTER,this._scale=e.scale??1,this._color=G.clone(e.color??G.WHITE),this._rotation=e.rotation??0,this._alignedAxis=d.clone(e.alignedAxis??d.ZERO),this._width=e.width,this._height=e.height,this._scaleByDistance=o,this._translucencyByDistance=n,this._pixelOffsetScaleByDistance=i,this._sizeInMeters=e.sizeInMeters??!1,this._distanceDisplayCondition=r,this._disableDepthTestDistance=e.disableDepthTestDistance,this._id=e.id,this._collection=e.collection??t,this._pickId=void 0,this._pickPrimitive=e._pickPrimitive??this,this._billboardCollection=t,this._dirty=!1,this._index=-1,this._batchIndex=void 0,this._imageTexture=new eg(t),this._imageWidth=void 0,this._imageHeight=void 0,this._labelDimensions=void 0,this._labelHorizontalOrigin=void 0,this._labelTranslate=void 0;let s=e.image,a=e.imageId;l(s)&&(l(a)||(typeof s=="string"?a=s:l(s.src)?a=s.src:a=Xn()),this._imageTexture.loadImage(a,s)),l(e.imageSubRegion)&&this._imageTexture.addImageSubRegion(a,e.imageSubRegion),this._actualClampedPosition=void 0,this._removeCallbackFunc=void 0,this._mode=ie.SCENE3D,this._clusterShow=!0,this._outlineColor=G.clone(e.outlineColor??G.BLACK),this._outlineWidth=e.outlineWidth??0,this._updateClamping(),this._splitDirection=e.splitDirection??br.NONE}var Nfe=vi.SHOW_INDEX=0,uV=vi.POSITION_INDEX=1,kfe=vi.PIXEL_OFFSET_INDEX=2,cqe=vi.EYE_OFFSET_INDEX=3,lqe=vi.HORIZONTAL_ORIGIN_INDEX=4,uqe=vi.VERTICAL_ORIGIN_INDEX=5,fqe=vi.SCALE_INDEX=6,Lfe=vi.IMAGE_INDEX_INDEX=7,Ofe=vi.COLOR_INDEX=8,dqe=vi.ROTATION_INDEX=9,hqe=vi.ALIGNED_AXIS_INDEX=10,mqe=vi.SCALE_BY_DISTANCE_INDEX=11,Aqe=vi.TRANSLUCENCY_BY_DISTANCE_INDEX=12,pqe=vi.PIXEL_OFFSET_SCALE_BY_DISTANCE_INDEX=13,gqe=vi.DISTANCE_DISPLAY_CONDITION=14,_qe=vi.DISABLE_DEPTH_DISTANCE=15;vi.TEXTURE_COORDINATE_BOUNDS=16;var Ffe=vi.SDF_INDEX=17,yqe=vi.SPLIT_DIRECTION_INDEX=18;vi.NUMBER_OF_PROPERTIES=19;function mr(e,t){let n=e._billboardCollection;l(n)&&(n._updateBillboard(e,t),e._dirty=!0)}Object.defineProperties(vi.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,mr(this,Nfe))}},position:{get:function(){return this._position},set:function(e){let t=this._position;d.equals(t,e)||(d.clone(e,t),d.clone(e,this._actualPosition),this._updateClamping(),mr(this,uV))}},heightReference:{get:function(){return this._heightReference},set:function(e){let t=this._heightReference;e!==t&&(this._heightReference=e,this._updateClamping(),mr(this,uV))}},pixelOffset:{get:function(){return this._pixelOffset},set:function(e){let t=this._pixelOffset;U.equals(t,e)||(U.clone(e,t),mr(this,kfe))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;jt.equals(t,e)||(this._scaleByDistance=jt.clone(e,t),mr(this,mqe))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;jt.equals(t,e)||(this._translucencyByDistance=jt.clone(e,t),mr(this,Aqe))}},pixelOffsetScaleByDistance:{get:function(){return this._pixelOffsetScaleByDistance},set:function(e){let t=this._pixelOffsetScaleByDistance;jt.equals(t,e)||(this._pixelOffsetScaleByDistance=jt.clone(e,t),mr(this,pqe))}},eyeOffset:{get:function(){return this._eyeOffset},set:function(e){let t=this._eyeOffset;d.equals(t,e)||(d.clone(e,t),mr(this,cqe))}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin!==e&&(this._horizontalOrigin=e,mr(this,lqe))}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){this._verticalOrigin!==e&&(this._verticalOrigin=e,mr(this,uqe))}},scale:{get:function(){return this._scale},set:function(e){this._scale!==e&&(this._scale=e,mr(this,fqe))}},color:{get:function(){return this._color},set:function(e){let t=this._color;G.equals(t,e)||(G.clone(e,t),mr(this,Ofe))}},rotation:{get:function(){return this._rotation},set:function(e){this._rotation!==e&&(this._rotation=e,mr(this,dqe))}},alignedAxis:{get:function(){return this._alignedAxis},set:function(e){let t=this._alignedAxis;d.equals(t,e)||(d.clone(e,t),mr(this,hqe))}},width:{get:function(){return this._width??this._imageTexture.width},set:function(e){this._width!==e&&(this._width=e,mr(this,Lfe))}},height:{get:function(){return this._height??this._imageTexture.height},set:function(e){this._height!==e&&(this._height=e,mr(this,Lfe))}},sizeInMeters:{get:function(){return this._sizeInMeters},set:function(e){this._sizeInMeters!==e&&(this._sizeInMeters=e,mr(this,Ofe))}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Ut.equals(e,this._distanceDisplayCondition)||(this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition),mr(this,gqe))}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance!==e&&(this._disableDepthTestDistance=e,mr(this,_qe))}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickPrimitive:{get:function(){return this._pickPrimitive},set:function(e){this._pickPrimitive=e,l(this._pickId)&&(this._pickId.object.primitive=e)}},pickId:{get:function(){return this._pickId}},image:{get:function(){return this._imageTexture.id},set:function(e){if(!l(e)){this._imageTexture.unload();return}let t;typeof e=="string"?t=e:e instanceof we?t=e._url:l(e.src)?t=e.src:t=Xn(),this._imageTexture.loadImage(t,e)}},ready:{get:function(){return this._imageTexture.ready}},loadError:{get:function(){return this._imageTexture.loadError}},textureDirty:{get:function(){return this._imageTexture.dirty},set:function(e){this._imageTexture.dirty=e}},_clampedPosition:{get:function(){return this._actualClampedPosition},set:function(e){this._actualClampedPosition=d.clone(e,this._actualClampedPosition),mr(this,uV)}},clusterShow:{get:function(){return this._clusterShow},set:function(e){this._clusterShow!==e&&(this._clusterShow=e,mr(this,Nfe))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;G.equals(t,e)||(G.clone(e,t),mr(this,Ffe))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,mr(this,Ffe))}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,mr(this,yqe))}}});vi.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this._pickPrimitive,collection:this._collection,id:this._id})),this._pickId};vi.prototype._updateClamping=function(){vi._updateClamping(this._billboardCollection,this)};var fV=new Ae;vi._updateClamping=function(e,t){if(!l(e)||!l(e._scene))return;let n=e._scene,i=n.ellipsoid??te.default,o=n.frameState.mode,r=o!==t._mode;if(t._mode=o,(t._heightReference===Ze.NONE||r)&&l(t._removeCallbackFunc)&&(t._removeCallbackFunc(),t._removeCallbackFunc=void 0,t._clampedPosition=void 0),t._heightReference===Ze.NONE||!l(t._position))return;l(t._removeCallbackFunc)&&t._removeCallbackFunc();let s=i.cartesianToCartographic(t._position);if(!l(s)){t._actualClampedPosition=void 0;return}function a(u){let f=i.cartographicToCartesian(u,t._clampedPosition);Kx(t._heightReference)&&(t._mode===ie.SCENE3D?(u.height+=s.height,i.cartographicToCartesian(u,f)):f.x+=s.height),t._clampedPosition=f}t._removeCallbackFunc=n.updateHeight(s,a,t._heightReference),Ae.clone(s,fV);let c=n.getHeight(s,t._heightReference);l(c)&&(fV.height=c),a(fV)};vi.prototype.computeTextureCoordinates=function(e){return this._imageTexture.computeTextureCoordinates(e)};vi.prototype.setImage=function(e,t){this._imageTexture.loadImage(e,t)};vi.prototype.setImageTexture=function(e){eg.clone(e,this._imageTexture)};vi.prototype.setImageSubRegion=function(e,t){this._imageTexture.addImageSubRegion(e,t)};vi.prototype._setTranslate=function(e){let t=this._translate;U.equals(t,e)||(U.clone(e,t),mr(this,kfe))};vi.prototype._getActualPosition=function(){return l(this._clampedPosition)?this._clampedPosition:this._actualPosition};vi.prototype._setActualPosition=function(e){l(this._clampedPosition)||d.clone(e,this._actualPosition),mr(this,uV)};var Qfe=new se;vi._computeActualPosition=function(e,t,n,i){return l(e._clampedPosition)?(n.mode!==e._mode&&e._updateClamping(),e._clampedPosition):n.mode===ie.SCENE3D?t:(N.multiplyByPoint(i,t,Qfe),eo.computeActualEllipsoidPosition(n,Qfe))};var Ufe=new d;vi._computeScreenSpacePosition=function(e,t,n,i,o,r){let s=N.multiplyByPoint(e,t,Ufe),a=eo.worldWithEyeOffsetToWindowCoordinates(o,s,n,r);if(l(a))return U.add(a,i,a),a};var lV=new U(0,0);vi.prototype.computeScreenSpacePosition=function(e,t){let n=this._billboardCollection;l(t)||(t=new U),U.clone(this._pixelOffset,lV),U.add(lV,this._translate,lV);let i=n.modelMatrix,o=this._position;if(l(this._clampedPosition)&&(o=this._clampedPosition,e.mode!==ie.SCENE3D)){let s=e.mapProjection,a=s.ellipsoid,c=s.unproject(o,fV);o=a.cartographicToCartesian(c,Ufe),i=N.IDENTITY}return vi._computeScreenSpacePosition(i,o,this._eyeOffset,lV,e,t)};vi.getScreenSpaceBoundingBox=function(e,t,n){let i=e.width,o=e.height,r=e.scale;i*=r,o*=r;let s=t.x;e.horizontalOrigin===Ri.RIGHT?s-=i:e.horizontalOrigin===Ri.CENTER&&(s-=i*.5);let a=t.y;return e.verticalOrigin===zn.BOTTOM||e.verticalOrigin===zn.BASELINE?a-=o:e.verticalOrigin===zn.CENTER&&(a-=o*.5),l(n)||(n=new Ye),n.x=s,n.y=a,n.width=i,n.height=o,n};vi.prototype.equals=function(e){return this===e||l(e)&&this._id===e._id&&d.equals(this._position,e._position)&&this.image===e.image&&this._show===e._show&&this._scale===e._scale&&this._verticalOrigin===e._verticalOrigin&&this._horizontalOrigin===e._horizontalOrigin&&this._heightReference===e._heightReference&&G.equals(this._color,e._color)&&U.equals(this._pixelOffset,e._pixelOffset)&&U.equals(this._translate,e._translate)&&d.equals(this._eyeOffset,e._eyeOffset)&&jt.equals(this._scaleByDistance,e._scaleByDistance)&&jt.equals(this._translucencyByDistance,e._translucencyByDistance)&&jt.equals(this._pixelOffsetScaleByDistance,e._pixelOffsetScaleByDistance)&&Ut.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._splitDirection===e._splitDirection};vi.prototype._destroy=function(){l(this._customData)&&(this._billboardCollection._scene.globe._surface.removeTileCustomData(this._customData),this._customData=void 0),l(this._removeCallbackFunc)&&(this._removeCallbackFunc(),this._removeCallbackFunc=void 0),this.image=void 0,this._pickId=this._pickId&&this._pickId.destroy(),this._billboardCollection=void 0};var xo=vi;var Cqe={OPAQUE:0,TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2},Uo=Object.freeze(Cqe);var Eqe={FONT_SIZE:48,PADDING:10,RADIUS:8,CUTOFF:.25},_a=Object.freeze(Eqe);function pL({x:e,y:t,width:n,height:i}){this.rectangle=new Ye(e,t,n,i),this.childNode1=void 0,this.childNode2=void 0,this.index=void 0}function _Y({width:e,height:t,borderPadding:n}){this._width=e,this._height=t,this._borderPadding=n,this._root=new pL({x:n,y:n,width:e-2*n,height:t-2*n})}_Y.prototype.pack=function(e,{width:t,height:n}){let i=this._findNode(this._root,{width:t,height:n});if(l(i))return i.index=e,i};_Y.prototype._findNode=function(e,{width:t,height:n}){if(l(e)){if(!l(e.childNode1)&&!l(e.childNode2)){if(l(e.index))return;let{rectangle:i}=e,o=i.width,r=i.height,s=o-t,a=r-n;return s<0||a<0?void 0:s===0&&a===0?e:s>a?(e.childNode1=new pL({x:i.x,y:i.y,width:t,height:r}),e.childNode2=new pL({x:i.x+t,y:i.y,width:s,height:r}),this._findNode(e.childNode1,{width:t,height:n})):(e.childNode1=new pL({x:i.x,y:i.y,width:o,height:n}),e.childNode2=new pL({x:i.x,y:i.y+n,width:o,height:a}),this._findNode(e.childNode1,{width:t,height:n}))}return this._findNode(e.childNode1,{width:t,height:n})||this._findNode(e.childNode2,{width:t,height:n})}};var yT=_Y;var Gfe=16;function hu(e){e=e??V.EMPTY_OBJECT;let t=e.borderWidthInPixels??1,n=e.initialSize??new U(Gfe,Gfe);this._pixelFormat=e.pixelFormat??$e.RGBA,this._sampler=e.sampler,this._borderWidthInPixels=t,this._initialSize=n,this._texturePacker=void 0,this._rectangles=[],this._subRegions=new Map,this._guid=Xn(),this._imagesToAddQueue=[],this._indexById=new Map,this._indexPromiseById=new Map,this._nextIndex=0}Object.defineProperties(hu.prototype,{borderWidthInPixels:{get:function(){return this._borderWidthInPixels}},rectangles:{get:function(){return this._rectangles}},texture:{get:function(){return this._texture}},pixelFormat:{get:function(){return this._pixelFormat}},sampler:{get:function(){return this._sampler}},numberOfImages:{get:function(){return this._nextIndex}},guid:{get:function(){return this._guid}},sizeInBytes:{get:function(){return l(this._texture)?this._texture.sizeInBytes:0}}});hu.prototype.computeTextureCoordinates=function(e,t){let n=this._texture,i=this._rectangles[e];if(l(t)||(t=new Ye),!l(i))return t.x=0,t.y=0,t.width=0,t.height=0,t;let o=n.width,r=n.height,s=i.width,a=i.height,c=i.x,u=i.y,f=this._subRegions.get(e);if(l(f)){let h=this._rectangles[f];c+=h.x,u+=h.y}return t.x=c/o,t.y=u/r,t.width=s/o,t.height=a/r,t};hu.prototype._copyFromTexture=function(e,t,n,i){let o=this._pixelFormat,r=this._sampler,s=new Mt({context:e,height:n,width:t,pixelFormat:o,sampler:r}),a=e._gl,c=s._textureTarget,u=this._texture,f=new $r({context:e,colorTextures:[u],destroyAttachments:!1});a.activeTexture(a.TEXTURE0),a.bindTexture(c,s._texture),f._bind();let h=this.rectangles,A=this._subRegions;for(let g=0;g<h.length;++g){let m=i[g],_=h[g];if(!l(m)||!l(_)||l(A.get(g)))continue;let{x:y,y:C,width:E,height:I}=m;a.copyTexSubImage2D(c,0,y,C,_.x,_.y,E,I)}return a.bindTexture(c,null),s._initialized=!0,f._unBind(),f.destroy(),s};hu.prototype._resize=function(e,t=0){let n=this._borderWidthInPixels,i=this._rectangles,o=this._imagesToAddQueue,r=this._texture,s=r.width,a=r.height,c=this._subRegions,u=i.map((E,I)=>new zfe({index:I,image:E})).filter((E,I)=>l(E.image)&&!l(c.get(I))),f=0,h=0,A=0;for(let E=t;E<o.length;++E){let{width:I,height:b}=o[E].image;f=Math.max(f,I),h=Math.max(h,b),A+=I*b,u.push(o[E])}s=Math.max(f,s),a=Math.max(h,a),e.webgl2||(s=D.nextPowerOfTwo(s),a=D.nextPowerOfTwo(a));let g=A,m=1;for(;g/s/a>=1;)m*=2,s>a?a*=m:s*=m;u.sort(({image:E},{image:I})=>I.height*I.width-E.height*E.width);let _=new Array(this._nextIndex);for(let E of this._subRegions.keys())l(c.get(E))&&(_[E]=i[E]);let y,C=!1;for(;!C;){y=new yT({height:a,width:s,borderPadding:n});let E;for(E=0;E<u.length;++E){let{index:I,image:b}=u[E];if(!l(b))continue;let S=y.pack(I,b);if(!l(S)){s>a?a*=2:s*=2;break}_[I]=S.rectangle}C=E===u.length}this._texturePacker=y,this._texture=this._copyFromTexture(e,s,a,_),r.destroy(),this._rectangles=_,this._guid=Xn()};hu.prototype.getImageIndex=function(e){return this._indexById.get(e)};hu.prototype._copyImageToTexture=function({index:e,image:t,resolve:n,reject:i}){let o=this._texture,r=this._rectangles[e];try{o.copyFrom({source:t,xOffset:r.x,yOffset:r.y}),l(n)&&n(e)}catch(s){if(l(i)){i(s);return}}};function zfe({index:e,image:t,resolve:n,reject:i}){this.index=e,this.image=t,this.resolve=n,this.reject=i,this.rectangle=void 0}hu.prototype._addImage=function(e,t){return new Promise((n,i)=>{this._imagesToAddQueue.push(new zfe({index:e,image:t,resolve:n,reject:i})),this._imagesToAddQueue.sort(({image:o},{image:r})=>r.height*r.width-o.height*o.width)})};hu.prototype._processImageQueue=function(e){let t=this._imagesToAddQueue;if(t.length===0)return!1;this._rectangles.length=this._nextIndex;let n,i;for(n=0;n<t.length;++n){let o=t[n],{image:r,index:s}=o,a=this._texturePacker.pack(s,r);if(!l(a)){try{this._resize(e,n)}catch(c){i=c,l(o.reject)&&o.reject(i)}break}this._rectangles[s]=a.rectangle}if(l(i)){for(n=n+1;n<t.length;++n){let{resolve:o}=t[n];l(o)&&o(-1)}return t.length=0,!1}for(let o=0;o<t.length;++o)this._copyImageToTexture(t[o]);return t.length=0,!0};hu.prototype.update=function(e){if(!l(this._texture)){let t=this._initialSize.x,n=this._initialSize.y,i=this._pixelFormat,o=this._sampler,r=this._borderWidthInPixels;this._texture=new Mt({context:e,width:t,height:n,pixelFormat:i,sampler:o}),this._texturePacker=new yT({height:n,width:t,borderPadding:r})}return this._processImageQueue(e)};async function Iqe(e,t){return typeof e=="function"&&(e=e(t)),(typeof e=="string"||e instanceof we)&&(e=we.createIfNeeded(e).fetchImage()),e}hu.prototype.addImage=function(e,t){let n=this._indexPromiseById.get(e);if(l(n))return n;let i=this._nextIndex++;return this._indexById.set(e,i),n=(async()=>(t=await Iqe(t,e),this.isDestroyed()||!l(t)?-1:this._addImage(i,t)))(),this._indexPromiseById.set(e,n),n};hu.prototype.addImageSubRegion=function(e,t){let n=this._indexById.get(e);if(!l(n))throw new ce(`image with id "${e}" not found in the atlas.`);let i=this._indexPromiseById.get(e);for(let[r,s]of this._subRegions.entries())if(n===s&&this._rectangles[r].equals(t))return i.then(c=>c===-1?-1:r);let o=this._nextIndex++;return this._subRegions.set(o,n),this._rectangles[o]=t.clone(),i.then(r=>{if(r===-1)return-1;let s=this._rectangles[r];return o})};hu.prototype.isDestroyed=function(){return!1};hu.prototype.destroy=function(){return this._texture=this._texture&&this._texture.destroy(),this._imagesToAddQueue.forEach(({resolve:e})=>{l(e)&&e(-1)}),ue(this)};var p0=hu;var xqe=xo.SHOW_INDEX,gL=xo.POSITION_INDEX,Vfe=xo.PIXEL_OFFSET_INDEX,Hfe=xo.EYE_OFFSET_INDEX,bqe=xo.HORIZONTAL_ORIGIN_INDEX,Tqe=xo.VERTICAL_ORIGIN_INDEX,Sqe=xo.SCALE_INDEX,g0=xo.IMAGE_INDEX_INDEX,Wfe=xo.COLOR_INDEX,wqe=xo.ROTATION_INDEX,Bqe=xo.ALIGNED_AXIS_INDEX,jfe=xo.SCALE_BY_DISTANCE_INDEX,Yfe=xo.TRANSLUCENCY_BY_DISTANCE_INDEX,qfe=xo.PIXEL_OFFSET_SCALE_BY_DISTANCE_INDEX,Kfe=xo.DISTANCE_DISPLAY_CONDITION,Dqe=xo.DISABLE_DEPTH_DISTANCE,vqe=xo.TEXTURE_COORDINATE_BOUNDS,Xfe=xo.SDF_INDEX,Jfe=xo.SPLIT_DIRECTION_INDEX,TY=xo.NUMBER_OF_PROPERTIES,bo,Pqe={positionHighAndScale:0,positionLowAndRotation:1,compressedAttribute0:2,compressedAttribute1:3,compressedAttribute2:4,eyeOffset:5,scaleByDistance:6,pixelOffsetScaleByDistance:7,compressedAttribute3:8,textureCoordinateBoundsOrLabelTranslate:9,a_batchId:10,sdf:11,splitDirection:12},Rqe={direction:0,positionHighAndScale:1,positionLowAndRotation:2,compressedAttribute0:3,compressedAttribute1:4,compressedAttribute2:5,eyeOffset:6,scaleByDistance:7,pixelOffsetScaleByDistance:8,compressedAttribute3:9,textureCoordinateBoundsOrLabelTranslate:10,a_batchId:11,sdf:12,splitDirection:13};function hd(e){e=e??V.EMPTY_OBJECT,this._scene=e.scene,this._batchTable=e.batchTable;let t=e.textureAtlas;l(t)||(t=new p0),this._textureAtlas=t,this._textureAtlasGUID=t.guid,this._destroyTextureAtlas=!0,this._billboardTextureCache=new Map,this._sp=void 0,this._spTranslucent=void 0,this._rsOpaque=void 0,this._rsTranslucent=void 0,this._vaf=void 0,this._billboards=[],this._billboardsToUpdate=[],this._billboardsToUpdateIndex=0,this._billboardsRemoved=!1,this._createVertexArray=!1,this._shaderRotation=!1,this._compiledShaderRotation=!1,this._shaderAlignedAxis=!1,this._compiledShaderAlignedAxis=!1,this._shaderScaleByDistance=!1,this._compiledShaderScaleByDistance=!1,this._shaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistance=!1,this._shaderPixelOffsetScaleByDistance=!1,this._compiledShaderPixelOffsetScaleByDistance=!1,this._shaderDistanceDisplayCondition=!1,this._compiledShaderDistanceDisplayCondition=!1,this._shaderDisableDepthDistance=!1,this._compiledShaderDisableDepthDistance=!1,this._shaderClampToGround=!1,this._compiledShaderClampToGround=!1,this._propertiesChanged=new Uint32Array(TY),this._maxSize=0,this._maxEyeOffset=0,this._maxScale=1,this._maxPixelOffset=0,this._allHorizontalCenter=!0,this._allVerticalCenter=!0,this._allSizedInMeters=!0,this._baseVolume=new le,this._baseVolumeWC=new le,this._baseVolume2D=new le,this._boundingVolume=new le,this._boundingVolumeDirty=!1,this._colorCommands=[],this._allBillboardsReady=!1,this.show=e.show??!0,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this._modelMatrix=N.clone(N.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowTextureAtlas=e.debugShowTextureAtlas??!1,this.blendOption=e.blendOption??Uo.OPAQUE_AND_TRANSLUCENT,this._blendOption=void 0,this._mode=ie.SCENE3D,this._buffersUsage=[Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW],this._highlightColor=G.clone(G.WHITE),this._uniforms={u_atlas:()=>this.textureAtlas.texture,u_highlightColor:()=>this._highlightColor};let n=this._scene;l(n)&&l(n.terrainProviderChanged)&&(this._removeCallbackFunc=n.terrainProviderChanged.addEventListener(function(){let i=this._billboards,o=i.length;for(let r=0;r<o;++r)l(i[r])&&i[r]._updateClamping()},this))}Object.defineProperties(hd.prototype,{length:{get:function(){return SY(this),this._billboards.length}},textureAtlas:{get:function(){return this._textureAtlas},set:function(e){this._textureAtlas!==e&&(this._textureAtlas=this._destroyTextureAtlas&&this._textureAtlas&&this._textureAtlas.destroy(),this._textureAtlas=e)}},destroyTextureAtlas:{get:function(){return this._destroyTextureAtlas},set:function(e){this._destroyTextureAtlas=e}},sizeInBytes:{get:function(){return this._textureAtlas.sizeInBytes}},ready:{get:function(){return this._allBillboardsReady}},billboardTextureCache:{get:function(){return this._billboardTextureCache}}});function Zfe(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}hd.prototype.add=function(e){let t=new xo(e,this);return t._index=this._billboards.length,this._billboards.push(t),this._createVertexArray=!0,t};hd.prototype.remove=function(e){return this.contains(e)?(this._billboards[e._index]=void 0,this._billboardsRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};hd.prototype.removeAll=function(){Zfe(this._billboards),this._billboards=[],this._billboardsToUpdate=[],this._billboardsToUpdateIndex=0,this._billboardsRemoved=!1,this._createVertexArray=!0};function SY(e){if(e._billboardsRemoved){e._billboardsRemoved=!1;let t=[],n=e._billboards,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];l(s)&&(s._index=r++,t.push(s))}e._billboards=t}}hd.prototype._updateBillboard=function(e,t){e._dirty||(this._billboardsToUpdate[this._billboardsToUpdateIndex++]=e),++this._propertiesChanged[t]};hd.prototype.contains=function(e){return l(e)&&e._billboardCollection===this};hd.prototype.get=function(e){return SY(this),this._billboards[e]};var yY;function Mqe(e){let n=e.cache.billboardCollection_indexBufferBatched;if(l(n))return n;let i=16384*6-6,o=new Uint16Array(i);for(let r=0,s=0;r<i;r+=6,s+=4)o[r]=s,o[r+1]=s+1,o[r+2]=s+2,o[r+3]=s+0,o[r+4]=s+2,o[r+5]=s+3;return n=Ct.createIndexBuffer({context:e,typedArray:o,usage:Qe.STATIC_DRAW,indexDatatype:Oe.UNSIGNED_SHORT}),n.vertexArrayDestroyable=!1,e.cache.billboardCollection_indexBufferBatched=n,n}function Nqe(e){let t=e.cache.billboardCollection_indexBufferInstanced;return l(t)||(t=Ct.createIndexBuffer({context:e,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Qe.STATIC_DRAW,indexDatatype:Oe.UNSIGNED_SHORT}),t.vertexArrayDestroyable=!1,e.cache.billboardCollection_indexBufferInstanced=t),t}function Lqe(e){let t=e.cache.billboardCollection_vertexBufferInstanced;return l(t)||(t=Ct.createVertexBuffer({context:e,typedArray:new Float32Array([0,0,1,0,1,1,0,1]),usage:Qe.STATIC_DRAW}),t.vertexArrayDestroyable=!1,e.cache.billboardCollection_vertexBufferInstanced=t),t}hd.prototype.computeNewBuffersUsage=function(){let e=this._buffersUsage,t=!1,n=this._propertiesChanged;for(let i=0;i<TY;++i){let o=n[i]===0?Qe.STATIC_DRAW:Qe.STREAM_DRAW;t=t||e[i]!==o,e[i]=o}return t};function Oqe(e,t,n,i,o,r){let s=[{index:bo.positionHighAndScale,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[gL]},{index:bo.positionLowAndRotation,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[gL]},{index:bo.compressedAttribute0,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Vfe]},{index:bo.compressedAttribute1,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Yfe]},{index:bo.compressedAttribute2,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Wfe]},{index:bo.eyeOffset,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Hfe]},{index:bo.scaleByDistance,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[jfe]},{index:bo.pixelOffsetScaleByDistance,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[qfe]},{index:bo.compressedAttribute3,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Kfe]},{index:bo.textureCoordinateBoundsOrLabelTranslate,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[vqe]},{index:bo.splitDirection,componentsPerAttribute:1,componentDatatype:q.FLOAT,usage:n[Jfe]}];i&&s.push({index:bo.direction,componentsPerAttribute:2,componentDatatype:q.FLOAT,vertexBuffer:Lqe(e)}),l(o)&&s.push({index:bo.a_batchId,componentsPerAttribute:1,componentDatatype:q.FLOAT,bufferUsage:Qe.STATIC_DRAW}),r&&s.push({index:bo.sdf,componentsPerAttribute:2,componentDatatype:q.FLOAT,usage:n[Xfe]});let a=i?t:4*t;return new Zp(e,s,a,i)}var CY=new ei;function $fe(e,t,n,i){let o,r=n[bo.positionHighAndScale],s=n[bo.positionLowAndRotation],a=i._getActualPosition();e._mode===ie.SCENE3D&&(le.expand(e._baseVolume,a,e._baseVolume),e._boundingVolumeDirty=!0),ei.fromCartesian(a,CY);let c=i.scale,u=i.rotation;u!==0&&(e._shaderRotation=!0),e._maxScale=Math.max(e._maxScale,c);let f=CY.high,h=CY.low;e._instanced?(o=i._index,r(o,f.x,f.y,f.z,c),s(o,h.x,h.y,h.z,u)):(o=i._index*4,r(o+0,f.x,f.y,f.z,c),r(o+1,f.x,f.y,f.z,c),r(o+2,f.x,f.y,f.z,c),r(o+3,f.x,f.y,f.z,c),s(o+0,h.x,h.y,h.z,u),s(o+1,h.x,h.y,h.z,u),s(o+2,h.x,h.y,h.z,u),s(o+3,h.x,h.y,h.z,u))}var mu=new U,dd=32768,CT=65536,EY=4096,iA=256,Fqe=128,Qqe=32,kqe=8,ede=4,Uqe=1/256,tde=0,nde=2,ide=3,ode=1,wY=new Ye;function rde(e,t,n,i){let o,r=n[bo.compressedAttribute0],s=i.pixelOffset,a=s.x,c=s.y,u=i._translate,f=u.x,h=u.y;e._maxPixelOffset=Math.max(e._maxPixelOffset,Math.abs(a+f),Math.abs(-c+h));let A=i.horizontalOrigin,g=i._verticalOrigin,m=i.show&&i.clusterShow;i.color.alpha===0&&(m=!1),g===zn.BASELINE&&(g=zn.BOTTOM),e._allHorizontalCenter=e._allHorizontalCenter&&A===Ri.CENTER,e._allVerticalCenter=e._allVerticalCenter&&g===zn.CENTER;let _=0,y=0,C=0,E=0;if(i.ready){let R=i.computeTextureCoordinates(wY);_=R.x,y=R.y,C=R.width,E=R.height}let I=_+C,b=y+E,S=Math.floor(D.clamp(a,-dd,dd)+dd)*Fqe;S+=(A+1)*Qqe,S+=(g+1)*kqe,S+=(m?1:0)*ede;let B=Math.floor(D.clamp(c,-dd,dd)+dd)*iA,v=Math.floor(D.clamp(f,-dd,dd)+dd)*iA,P=(D.clamp(h,-dd,dd)+dd)*Uqe,M=Math.floor(P),L=Math.floor((P-M)*iA);B+=M,v+=L,mu.x=_,mu.y=y;let p=On.compressTextureCoordinates(mu);mu.x=I;let x=On.compressTextureCoordinates(mu);mu.y=b;let T=On.compressTextureCoordinates(mu);mu.x=_;let w=On.compressTextureCoordinates(mu);e._instanced?(o=i._index,r(o,S,B,v,p)):(o=i._index*4,r(o+0,S+tde,B,v,p),r(o+1,S+nde,B,v,x),r(o+2,S+ide,B,v,T),r(o+3,S+ode,B,v,w))}function sde(e,t,n,i){let o,r=n[bo.compressedAttribute1],s=i.alignedAxis;d.equals(s,d.ZERO)||(e._shaderAlignedAxis=!0);let a=0,c=1,u=1,f=1,h=i.translucencyByDistance;l(h)&&(a=h.near,c=h.nearValue,u=h.far,f=h.farValue,(c!==1||f!==1)&&(e._shaderTranslucencyByDistance=!0));let A=Math.round(i.width??0);e._maxSize=Math.max(e._maxSize,A);let g=D.clamp(A,0,CT),m=0;Math.abs(d.magnitudeSquared(s)-1)<D.EPSILON6&&(m=On.octEncodeFloat(s)),c=D.clamp(c,0,1),c=c===1?255:c*255|0,g=g*iA+c,f=D.clamp(f,0,1),f=f===1?255:f*255|0,m=m*iA+f,e._instanced?(o=i._index,r(o,g,m,a,u)):(o=i._index*4,r(o+0,g,m,a,u),r(o+1,g,m,a,u),r(o+2,g,m,a,u),r(o+3,g,m,a,u))}function xY(e,t,n,i){let o,r=n[bo.compressedAttribute2],s=i.color,a=l(e._batchTable)?G.WHITE:i.getPickId(t.context).color,c=i.sizeInMeters?1:0,u=Math.abs(d.magnitudeSquared(i.alignedAxis)-1)<D.EPSILON6?1:0;e._allSizedInMeters=e._allSizedInMeters&&c===1;let f=i.height??0;e._maxSize=Math.max(e._maxSize,f);let h=i._labelHorizontalOrigin??-2;h+=2;let A=f*ede+h,g=G.floatToByte(s.red),m=G.floatToByte(s.green),_=G.floatToByte(s.blue),y=g*CT+m*iA+_;g=G.floatToByte(a.red),m=G.floatToByte(a.green),_=G.floatToByte(a.blue);let C=g*CT+m*iA+_,E=G.floatToByte(s.alpha)*CT+G.floatToByte(a.alpha)*iA;E+=c*2+u,e._instanced?(o=i._index,r(o,y,C,E,A)):(o=i._index*4,r(o+0,y,C,E,A),r(o+1,y,C,E,A),r(o+2,y,C,E,A),r(o+3,y,C,E,A))}function bY(e,t,n,i){let o,r=n[bo.eyeOffset],s=i.eyeOffset,a=s.z;if(i._heightReference!==Ze.NONE&&(a*=1.005),e._maxEyeOffset=Math.max(e._maxEyeOffset,Math.abs(s.x),Math.abs(s.y),Math.abs(a)),e._instanced){if(mu.x=0,mu.y=0,i.ready){let u=i.computeTextureCoordinates(wY);mu.x=u.width,mu.y=u.height}let c=On.compressTextureCoordinates(mu);o=i._index,r(o,s.x,s.y,a,c)}else o=i._index*4,r(o+0,s.x,s.y,a,0),r(o+1,s.x,s.y,a,0),r(o+2,s.x,s.y,a,0),r(o+3,s.x,s.y,a,0)}function ade(e,t,n,i){let o,r=n[bo.scaleByDistance],s=0,a=1,c=1,u=1,f=i.scaleByDistance;l(f)&&(s=f.near,a=f.nearValue,c=f.far,u=f.farValue,(a!==1||u!==1)&&(e._shaderScaleByDistance=!0)),e._instanced?(o=i._index,r(o,s,a,c,u)):(o=i._index*4,r(o+0,s,a,c,u),r(o+1,s,a,c,u),r(o+2,s,a,c,u),r(o+3,s,a,c,u))}function cde(e,t,n,i){let o,r=n[bo.pixelOffsetScaleByDistance],s=0,a=1,c=1,u=1,f=i.pixelOffsetScaleByDistance;l(f)&&(s=f.near,a=f.nearValue,c=f.far,u=f.farValue,(a!==1||u!==1)&&(e._shaderPixelOffsetScaleByDistance=!0)),e._instanced?(o=i._index,r(o,s,a,c,u)):(o=i._index*4,r(o+0,s,a,c,u),r(o+1,s,a,c,u),r(o+2,s,a,c,u),r(o+3,s,a,c,u))}function lde(e,t,n,i){let o,r=n[bo.compressedAttribute3],s=0,a=Number.MAX_VALUE,c=i.distanceDisplayCondition;l(c)&&(s=c.near,a=c.far,s*=s,a*=a,e._shaderDistanceDisplayCondition=!0);let u=i.disableDepthTestDistance,f=Wf(i.heightReference)&&t.context.depthTexture;l(u)||(u=f?5e3:0),u*=u,(f||u>0)&&(e._shaderDisableDepthDistance=!0,u===Number.POSITIVE_INFINITY&&(u=-1));let h,A;l(i._labelDimensions)?(A=i._labelDimensions.x,h=i._labelDimensions.y):(A=i.width??0,h=i.height??0);let g=Math.floor(D.clamp(A,0,EY)),m=Math.floor(D.clamp(h,0,EY)),_=g*EY+m;e._instanced?(o=i._index,r(o,s,a,u,_)):(o=i._index*4,r(o+0,s,a,u,_),r(o+1,s,a,u,_),r(o+2,s,a,u,_),r(o+3,s,a,u,_))}function ude(e,t,n,i){if(Wf(i.heightReference)){let A=e._scene,g=t.context,m=t.globeTranslucencyState.translucent,_=l(A.globe)&&A.globe.depthTestAgainstTerrain;e._shaderClampToGround=g.depthTexture&&!m&&_}let o,r=n[bo.textureCoordinateBoundsOrLabelTranslate];if(Yt.maximumVertexTextureImageUnits>0){let A=0,g=0;l(i._labelTranslate)&&(A=i._labelTranslate.x,g=i._labelTranslate.y),e._instanced?(o=i._index,r(o,A,g,0,0)):(o=i._index*4,r(o+0,A,g,0,0),r(o+1,A,g,0,0),r(o+2,A,g,0,0),r(o+3,A,g,0,0));return}let s=0,a=0,c=0,u=0;if(i.ready){let A=i.computeTextureCoordinates(wY);s=A.x,a=A.y,c=A.width,u=A.height}let f=s+c,h=a+u;e._instanced?(o=i._index,r(o,s,a,f,h)):(o=i._index*4,r(o+0,s,a,f,h),r(o+1,s,a,f,h),r(o+2,s,a,f,h),r(o+3,s,a,f,h))}function Gqe(e,t,n,i){if(!l(e._batchTable))return;let o=n[bo.a_batchId],r=i._batchIndex,s;e._instanced?(s=i._index,o(s,r)):(s=i._index*4,o(s+0,r),o(s+1,r),o(s+2,r),o(s+3,r))}function fde(e,t,n,i){if(!e._sdf)return;let o,r=n[bo.sdf],s=i.outlineColor,a=i.outlineWidth,c=G.floatToByte(s.red),u=G.floatToByte(s.green),f=G.floatToByte(s.blue),h=c*CT+u*iA+f,A=a/_a.RADIUS,g=G.floatToByte(s.alpha)*CT+G.floatToByte(A)*iA;e._instanced?(o=i._index,r(o,h,g)):(o=i._index*4,r(o+0,h+tde,g),r(o+1,h+nde,g),r(o+2,h+ide,g),r(o+3,h+ode,g))}function dde(e,t,n,i){let o=n[bo.splitDirection],r=0,s=i.splitDirection;l(s)&&(r=s);let a;e._instanced?(a=i._index,o(a,r)):(a=i._index*4,o(a+0,r),o(a+1,r),o(a+2,r),o(a+3,r))}function zqe(e,t,n,i){$fe(e,t,n,i),rde(e,t,n,i),sde(e,t,n,i),xY(e,t,n,i),bY(e,t,n,i),ade(e,t,n,i),cde(e,t,n,i),lde(e,t,n,i),ude(e,t,n,i),Gqe(e,t,n,i),fde(e,t,n,i),dde(e,t,n,i)}function IY(e,t,n,i,o,r){let s;i.mode===ie.SCENE3D?(s=e._baseVolume,e._boundingVolumeDirty=!0):s=e._baseVolume2D;let a=[];for(let c=0;c<n;++c){let u=t[c],f=u.position,h=xo._computeActualPosition(u,f,i,o);l(h)&&(u._setActualPosition(h),r?a.push(h):le.expand(s,h,s))}r&&le.fromPoints(a,s)}function Vqe(e,t){let n=t.mode,i=e._billboards,o=e._billboardsToUpdate,r=e._modelMatrix;e._createVertexArray||e._mode!==n||n!==ie.SCENE3D&&!N.equals(r,e.modelMatrix)?(e._mode=n,N.clone(e.modelMatrix,r),e._createVertexArray=!0,(n===ie.SCENE3D||n===ie.SCENE2D||n===ie.COLUMBUS_VIEW)&&IY(e,i,i.length,t,r,!0)):n===ie.MORPHING?IY(e,i,i.length,t,r,!0):(n===ie.SCENE2D||n===ie.COLUMBUS_VIEW)&&IY(e,o,e._billboardsToUpdateIndex,t,r,!1)}function Hqe(e,t,n){let i=1;(!e._allSizedInMeters||e._maxPixelOffset!==0)&&(i=t.camera.getPixelSize(n,t.context.drawingBufferWidth,t.context.drawingBufferHeight));let o=i*e._maxScale*e._maxSize*2;e._allHorizontalCenter&&e._allVerticalCenter&&(o*=.5);let r=i*e._maxPixelOffset+e._maxEyeOffset;n.radius+=o+r}function Wqe(e,t){let i=t.createViewportQuadCommand(`uniform sampler2D billboard_texture; +in vec2 v_textureCoordinates; +void main() +{ + out_FragColor = texture(billboard_texture, v_textureCoordinates); +} +`,{uniformMap:{billboard_texture:function(){return e.textureAtlas.texture}}});return i.pass=Be.OVERLAY,i}var jqe=[];hd.prototype.update=function(e){if(SY(this),!this.show)return;let t=e.context;this._instanced=t.instancedArrays,bo=this._instanced?Rqe:Pqe,yY=this._instanced?Nqe:Mqe;let n=this._billboards,i=n.length,o=!0;for(let P=0;P<i;++P){let M=n[P];l(M.loadError)&&(console.error(`Error loading image for billboard: ${M.loadError}`),M.image=void 0),M.textureDirty&&this._updateBillboard(M,g0),M.show&&(o=o&&M.ready)}let r=this._textureAtlas;if(e.afterRender.push(()=>{if(!this.isDestroyed())return r.update(e.context)}),!l(r.texture))return;Vqe(this,e),n=this._billboards,i=n.length;let s=this._billboardsToUpdate,a=this._billboardsToUpdateIndex,c=this._propertiesChanged,u=r.guid,f=this._createVertexArray||this._textureAtlasGUID!==u;this._textureAtlasGUID=u;let h,A=e.passes,g=A.pick;if(f||!g&&this.computeNewBuffersUsage()){this._createVertexArray=!1;for(let P=0;P<TY;++P)c[P]=0;if(this._vaf=this._vaf&&this._vaf.destroy(),i>0){this._vaf=Oqe(t,i,this._buffersUsage,this._instanced,this._batchTable,this._sdf),h=this._vaf.writers;for(let P=0;P<i;++P){let M=this._billboards[P];M._dirty=!1,M.textureDirty=!1,zqe(this,e,h,M)}this._vaf.commit(yY(t))}this._billboardsToUpdateIndex=0}else if(a>0){let P=jqe;P.length=0,(c[gL]||c[wqe]||c[Sqe])&&P.push($fe),(c[g0]||c[Vfe]||c[bqe]||c[Tqe]||c[xqe])&&(P.push(rde),this._instanced&&P.push(bY)),(c[g0]||c[Bqe]||c[Yfe])&&(P.push(sde),P.push(xY)),(c[g0]||c[Wfe])&&P.push(xY),(c[g0]||c[Hfe])&&P.push(bY),c[jfe]&&P.push(ade),c[qfe]&&P.push(cde),(c[Kfe]||c[Dqe]||c[g0]||c[gL])&&P.push(lde),(c[g0]||c[gL])&&P.push(ude),c[Xfe]&&P.push(fde),c[Jfe]&&P.push(dde);let M=P.length;if(h=this._vaf.writers,a/i>.1){for(let L=0;L<a;++L){let p=s[L];p._dirty=!1,p.textureDirty=!1;for(let x=0;x<M;++x)P[x](this,e,h,p)}this._vaf.commit(yY(t))}else{for(let L=0;L<a;++L){let p=s[L];p._dirty=!1,p.textureDirty=!1;for(let x=0;x<M;++x)P[x](this,e,h,p);this._instanced?this._vaf.subCommit(p._index,1):this._vaf.subCommit(p._index*4,4)}this._vaf.endSubCommits()}this._billboardsToUpdateIndex=0}if(a>i*1.5&&(s.length=i),!l(this._vaf)||!l(this._vaf.va))return;this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,le.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));let m,_=N.IDENTITY;e.mode===ie.SCENE3D?(_=this.modelMatrix,m=le.clone(this._baseVolumeWC,this._boundingVolume)):m=le.clone(this._baseVolume2D,this._boundingVolume),Hqe(this,e,m);let y=this._blendOption!==this.blendOption;if(this._blendOption=this.blendOption,y){this._blendOption===Uo.OPAQUE||this._blendOption===Uo.OPAQUE_AND_TRANSLUCENT?this._rsOpaque=Ue.fromCache({depthTest:{enabled:!0,func:ee.LESS},depthMask:!0}):this._rsOpaque=void 0;let P=this._blendOption===Uo.TRANSLUCENT;this._blendOption===Uo.TRANSLUCENT||this._blendOption===Uo.OPAQUE_AND_TRANSLUCENT?this._rsTranslucent=Ue.fromCache({depthTest:{enabled:!0,func:P?ee.LEQUAL:ee.LESS},depthMask:P,blending:pn.ALPHA_BLEND}):this._rsTranslucent=void 0}this._shaderDisableDepthDistance=this._shaderDisableDepthDistance||e.minimumDisableDepthTestDistance!==0;let C,E,I,b,S,B=Yt.maximumVertexTextureImageUnits>0;if(y||this._shaderRotation!==this._compiledShaderRotation||this._shaderAlignedAxis!==this._compiledShaderAlignedAxis||this._shaderScaleByDistance!==this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance!==this._compiledShaderTranslucencyByDistance||this._shaderPixelOffsetScaleByDistance!==this._compiledShaderPixelOffsetScaleByDistance||this._shaderDistanceDisplayCondition!==this._compiledShaderDistanceDisplayCondition||this._shaderDisableDepthDistance!==this._compiledShaderDisableDepthDistance||this._shaderClampToGround!==this._compiledShaderClampToGround||this._sdf!==this._compiledSDF){C=AL,E=mL,S=[],l(this._batchTable)&&(S.push("VECTOR_TILE"),C=this._batchTable.getVertexShaderCallback(!1,"a_batchId",void 0)(C),E=this._batchTable.getFragmentShaderCallback(!1,void 0)(E)),I=new He({defines:S,sources:[C]}),this._instanced&&I.defines.push("INSTANCED"),this._shaderRotation&&I.defines.push("ROTATION"),this._shaderAlignedAxis&&I.defines.push("ALIGNED_AXIS"),this._shaderScaleByDistance&&I.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&I.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderPixelOffsetScaleByDistance&&I.defines.push("EYE_DISTANCE_PIXEL_OFFSET"),this._shaderDistanceDisplayCondition&&I.defines.push("DISTANCE_DISPLAY_CONDITION"),this._shaderDisableDepthDistance&&I.defines.push("DISABLE_DEPTH_DISTANCE"),this._shaderClampToGround&&(B?I.defines.push("VERTEX_DEPTH_CHECK"):I.defines.push("FRAGMENT_DEPTH_CHECK"));let P=1-_a.CUTOFF;this._sdf&&I.defines.push("SDF");let M=l(this._batchTable)?"VECTOR_TILE":"";this._blendOption===Uo.OPAQUE_AND_TRANSLUCENT&&(b=new He({defines:["OPAQUE",M],sources:[E]}),this._shaderClampToGround&&(B?b.defines.push("VERTEX_DEPTH_CHECK"):b.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(b.defines.push("SDF"),b.defines.push(`SDF_EDGE ${P}`)),this._sp=an.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:I,fragmentShaderSource:b,attributeLocations:bo}),b=new He({defines:["TRANSLUCENT",M],sources:[E]}),this._shaderClampToGround&&(B?b.defines.push("VERTEX_DEPTH_CHECK"):b.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(b.defines.push("SDF"),b.defines.push(`SDF_EDGE ${P}`)),this._spTranslucent=an.replaceCache({context:t,shaderProgram:this._spTranslucent,vertexShaderSource:I,fragmentShaderSource:b,attributeLocations:bo})),this._blendOption===Uo.OPAQUE&&(b=new He({defines:[M],sources:[E]}),this._shaderClampToGround&&(B?b.defines.push("VERTEX_DEPTH_CHECK"):b.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(b.defines.push("SDF"),b.defines.push(`SDF_EDGE ${P}`)),this._sp=an.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:I,fragmentShaderSource:b,attributeLocations:bo})),this._blendOption===Uo.TRANSLUCENT&&(b=new He({defines:[M],sources:[E]}),this._shaderClampToGround&&(B?b.defines.push("VERTEX_DEPTH_CHECK"):b.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(b.defines.push("SDF"),b.defines.push(`SDF_EDGE ${P}`)),this._spTranslucent=an.replaceCache({context:t,shaderProgram:this._spTranslucent,vertexShaderSource:I,fragmentShaderSource:b,attributeLocations:bo})),this._compiledShaderRotation=this._shaderRotation,this._compiledShaderAlignedAxis=this._shaderAlignedAxis,this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderPixelOffsetScaleByDistance=this._shaderPixelOffsetScaleByDistance,this._compiledShaderDistanceDisplayCondition=this._shaderDistanceDisplayCondition,this._compiledShaderDisableDepthDistance=this._shaderDisableDepthDistance,this._compiledShaderClampToGround=this._shaderClampToGround,this._compiledSDF=this._sdf}let v=e.commandList;if(A.render||A.pick){let P=this._colorCommands,M=this._blendOption===Uo.OPAQUE,L=this._blendOption===Uo.OPAQUE_AND_TRANSLUCENT,p=this._vaf.va,x=p.length,T=this._uniforms,w;l(this._batchTable)?(T=this._batchTable.getUniformMapCallback()(T),w=this._batchTable.getPickId()):w="v_pickColor",P.length=x;let R=L?x*2:x;for(let O=0;O<R;++O){let k=P[O];l(k)||(k=P[O]=new nt);let Q=M||L&&O%2===0;k.pass=Q||!L?Be.OPAQUE:Be.TRANSLUCENT,k.owner=this;let z=L?Math.floor(O/2):O;k.boundingVolume=m,k.modelMatrix=_,k.count=p[z].indicesCount,k.shaderProgram=Q?this._sp:this._spTranslucent,k.uniformMap=T,k.vertexArray=p[z].va,k.renderState=Q?this._rsOpaque:this._rsTranslucent,k.debugShowBoundingVolume=this.debugShowBoundingVolume,k.pickId=w,this._instanced&&(k.count=6,k.instanceCount=i),v.push(k)}this.debugShowTextureAtlas&&(l(this.debugCommand)||(this.debugCommand=Wqe(this,e.context)),v.push(this.debugCommand))}this._allBillboardsReady=o};hd.prototype.isDestroyed=function(){return!1};hd.prototype.destroy=function(){return l(this._removeCallbackFunc)&&(this._removeCallbackFunc(),this._removeCallbackFunc=void 0),this._textureAtlas=this._destroyTextureAtlas&&this._textureAtlas&&this._textureAtlas.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spTranslucent=this._spTranslucent&&this._spTranslucent.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),Zfe(this._billboards),ue(this)};var nf=hd;function Yqe(e,t,n,i,o){return function(){let r=document.createElement("canvas"),s=o+2*i;r.height=r.width=s;let a=r.getContext("2d");return a.clearRect(0,0,s,s),i!==0&&(a.beginPath(),a.arc(s/2,s/2,s/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle=n,a.fill(),e<1&&(a.save(),a.globalCompositeOperation="destination-out",a.beginPath(),a.arc(s/2,s/2,o/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle="black",a.fill(),a.restore())),a.beginPath(),a.arc(s/2,s/2,o/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle=t,a.fill(),r}}var _0=Yqe;function Va(e,t,n,i,o){this._content=e,this._billboard=n,this._label=i,this._polyline=o,this._batchId=t,this._billboardImage=void 0,this._billboardColor=void 0,this._billboardOutlineColor=void 0,this._billboardOutlineWidth=void 0,this._billboardSize=void 0,this._pointSize=void 0,this._color=void 0,this._pointSize=void 0,this._pointOutlineColor=void 0,this._pointOutlineWidth=void 0,this._heightOffset=void 0,this._pickIds=new Array(3),ET(this)}var qqe=new Ae;Object.defineProperties(Va.prototype,{show:{get:function(){return this._label.show},set:function(e){this._label.show=e,this._billboard.show=e,this._polyline.show=e}},color:{get:function(){return this._color},set:function(e){this._color=G.clone(e,this._color),ET(this)}},pointSize:{get:function(){return this._pointSize},set:function(e){this._pointSize=e,ET(this)}},pointOutlineColor:{get:function(){return this._pointOutlineColor},set:function(e){this._pointOutlineColor=G.clone(e,this._pointOutlineColor),ET(this)}},pointOutlineWidth:{get:function(){return this._pointOutlineWidth},set:function(e){this._pointOutlineWidth=e,ET(this)}},labelColor:{get:function(){return this._label.fillColor},set:function(e){this._label.fillColor=e,this._polyline.show=this._label.show&&e.alpha>0}},labelOutlineColor:{get:function(){return this._label.outlineColor},set:function(e){this._label.outlineColor=e}},labelOutlineWidth:{get:function(){return this._label.outlineWidth},set:function(e){this._label.outlineWidth=e}},font:{get:function(){return this._label.font},set:function(e){this._label.font=e}},labelStyle:{get:function(){return this._label.style},set:function(e){this._label.style=e}},labelText:{get:function(){return this._label.text},set:function(e){l(e)||(e=""),this._label.text=e}},backgroundColor:{get:function(){return this._label.backgroundColor},set:function(e){this._label.backgroundColor=e}},backgroundPadding:{get:function(){return this._label.backgroundPadding},set:function(e){this._label.backgroundPadding=e}},backgroundEnabled:{get:function(){return this._label.showBackground},set:function(e){this._label.showBackground=e}},scaleByDistance:{get:function(){return this._label.scaleByDistance},set:function(e){this._label.scaleByDistance=e,this._billboard.scaleByDistance=e}},translucencyByDistance:{get:function(){return this._label.translucencyByDistance},set:function(e){this._label.translucencyByDistance=e,this._billboard.translucencyByDistance=e}},distanceDisplayCondition:{get:function(){return this._label.distanceDisplayCondition},set:function(e){this._label.distanceDisplayCondition=e,this._polyline.distanceDisplayCondition=e,this._billboard.distanceDisplayCondition=e}},heightOffset:{get:function(){return this._heightOffset},set:function(e){let t=this._heightOffset??0,n=this._content.tileset.ellipsoid,i=n.cartesianToCartographic(this._billboard.position,qqe);i.height=i.height-t+e;let o=n.cartographicToCartesian(i);this._billboard.position=o,this._label.position=this._billboard.position,this._polyline.positions=[this._polyline.positions[0],o],this._heightOffset=e}},anchorLineEnabled:{get:function(){return this._polyline.show},set:function(e){this._polyline.show=e}},anchorLineColor:{get:function(){return this._polyline.material.uniforms.color},set:function(e){this._polyline.material.uniforms.color=G.clone(e,this._polyline.material.uniforms.color)}},image:{get:function(){return this._billboardImage},set:function(e){let t=this._billboardImage!==e;this._billboardImage=e,t&&ET(this)}},disableDepthTestDistance:{get:function(){return this._label.disableDepthTestDistance},set:function(e){this._label.disableDepthTestDistance=e,this._billboard.disableDepthTestDistance=e}},horizontalOrigin:{get:function(){return this._billboard.horizontalOrigin},set:function(e){this._billboard.horizontalOrigin=e}},verticalOrigin:{get:function(){return this._billboard.verticalOrigin},set:function(e){this._billboard.verticalOrigin=e}},labelHorizontalOrigin:{get:function(){return this._label.horizontalOrigin},set:function(e){this._label.horizontalOrigin=e}},labelVerticalOrigin:{get:function(){return this._label.verticalOrigin},set:function(e){this._label.verticalOrigin=e}},content:{get:function(){return this._content}},tileset:{get:function(){return this._content.tileset}},primitive:{get:function(){return this._content.tileset}},pickIds:{get:function(){let e=this._pickIds;return e[0]=this._billboard.pickId,e[1]=this._label.pickId,e[2]=this._polyline.pickId,e}}});Va.defaultColor=G.WHITE;Va.defaultPointOutlineColor=G.BLACK;Va.defaultPointOutlineWidth=0;Va.defaultPointSize=8;function ET(e){let t=e._billboard;if(l(e._billboardImage)&&e._billboardImage!==t.image){t.image=e._billboardImage;return}if(l(e._billboardImage))return;let n=e._color??Va.defaultColor,i=e._pointOutlineColor??Va.defaultPointOutlineColor,o=e._pointOutlineWidth??Va.defaultPointOutlineWidth,r=e._pointSize??Va.defaultPointSize,s=e._billboardColor,a=e._billboardOutlineColor,c=e._billboardOutlineWidth,u=e._billboardSize;if(G.equals(n,s)&&G.equals(i,a)&&o===c&&r===u)return;e._billboardColor=G.clone(n,e._billboardColor),e._billboardOutlineColor=G.clone(i,e._billboardOutlineColor),e._billboardOutlineWidth=o,e._billboardSize=r;let f=n.alpha,h=n.toCssColorString(),A=i.toCssColorString(),g=JSON.stringify([h,r,A,o]);t.setImage(g,_0(f,h,A,o,r))}Va.prototype.hasProperty=function(e){return this._content.batchTable.hasProperty(this._batchId,e)};Va.prototype.getPropertyIds=function(e){return this._content.batchTable.getPropertyIds(this._batchId,e)};Va.prototype.getProperty=function(e){return this._content.batchTable.getProperty(this._batchId,e)};Va.prototype.getPropertyInherited=function(e){return ha.getPropertyInherited(this._content,this._batchId,e)};Va.prototype.setProperty=function(e,t){this._content.batchTable.setProperty(this._batchId,e,t),this._content.featurePropertiesDirty=!0};Va.prototype.isExactClass=function(e){return this._content.batchTable.isExactClass(this._batchId,e)};Va.prototype.isClass=function(e){return this._content.batchTable.isClass(this._batchId,e)};Va.prototype.getExactClassName=function(){return this._content.batchTable.getExactClassName(this._batchId)};var tg=Va;function Kqe(e,t,n,i,o){let r=e.measureText(t);if(!!/\S/.test(t)){let a=document.defaultView.getComputedStyle(e.canvas).getPropertyValue("font-size").replace("px",""),c=document.createElement("canvas"),u=100,f=r.width+u|0,h=3*a,A=h/2;c.width=f,c.height=h;let g=c.getContext("2d");g.font=n,g.fillStyle="white",g.fillRect(0,0,c.width+1,c.height+1),i&&(g.strokeStyle="black",g.lineWidth=e.lineWidth,g.strokeText(t,u/2,A)),o&&(g.fillStyle="black",g.fillText(t,u/2,A));let m=g.getImageData(0,0,f,h).data,_=m.length,y=f*4,C,E,I,b;for(C=0;C<_;++C)if(m[C]!==255){I=C/y|0;break}for(C=_-1;C>=0;--C)if(m[C]!==255){b=C/y|0;break}let S=-1;for(C=0;C<f&&S===-1;++C)for(E=0;E<h;++E){let B=C*4+E*y;if(m[B]!==255||m[B+1]!==255||m[B+2]!==255||m[B+3]!==255){S=C;break}}return{width:r.width,height:b-I,ascent:A-I,descent:b-A,minx:S-u/2}}return{width:r.width,height:0,ascent:0,descent:0,minx:0}}var y0;function Xqe(e,t){if(e==="")return;t=t??V.EMPTY_OBJECT;let n=t.font??"10px sans-serif",i=t.stroke??!1,o=t.fill??!0,r=t.strokeWidth??1,s=t.backgroundColor??G.TRANSPARENT,a=t.padding??0,c=a*2,u=document.createElement("canvas");u.width=1,u.height=1,u.style.font=n;let f=u.getContext("2d",{willReadFrequently:!0});l(y0)||(l(f.imageSmoothingEnabled)?y0="imageSmoothingEnabled":l(f.mozImageSmoothingEnabled)?y0="mozImageSmoothingEnabled":l(f.webkitImageSmoothingEnabled)?y0="webkitImageSmoothingEnabled":l(f.msImageSmoothingEnabled)&&(y0="msImageSmoothingEnabled")),f.font=n,f.lineJoin="round",f.lineWidth=r,f[y0]=!1,u.style.visibility="hidden",document.body.appendChild(u);let h=Kqe(f,e,n,i,o);u.dimensions=h,document.body.removeChild(u),u.style.visibility="";let A=-h.minx,g=Math.ceil(h.width)+A+c,m=h.height+c,_=m-h.ascent+a,y=m-_+c;if(u.width=g,u.height=m,f.font=n,f.lineJoin="round",f.lineWidth=r,f[y0]=!1,s!==G.TRANSPARENT&&(f.fillStyle=s.toCssColorString(),f.fillRect(0,0,u.width,u.height)),i){let C=t.strokeColor??G.BLACK;f.strokeStyle=C.toCssColorString(),f.strokeText(e,A+a,y)}if(o){let C=t.fillColor??G.WHITE;f.fillStyle=C.toCssColorString(),f.fillText(e,A+a,y)}return u}var C0=Xqe;var bde=xr(pde(),1);var Zqe={FILL:0,OUTLINE:1,FILL_AND_OUTLINE:2},nr=Object.freeze(Zqe);var gde={},_de=0,$qe=256,eKe=new G(.165,.165,.165,.8),tKe=new U(7,5),Qs=Object.freeze({LTR:0,RTL:1,WEAK:2,BRACKETS:3});function E0(e){!e._rebindAllGlyphs&&!e._repositionAllGlyphs&&e._labelCollection._labelsToUpdate.push(e),e._rebindAllGlyphs=!0}function yL(e){!e._rebindAllGlyphs&&!e._repositionAllGlyphs&&e._labelCollection._labelsToUpdate.push(e),e._repositionAllGlyphs=!0}function CL(e,t){return document.defaultView.getComputedStyle(e,null).getPropertyValue(t)}function Cde(e){let t=gde[e._font];if(!l(t)){let n=document.createElement("div");n.style.position="absolute",n.style.opacity=0,n.style.font=e._font,document.body.appendChild(n);let i=parseFloat(CL(n,"line-height"));isNaN(i)&&(i=void 0),t={family:CL(n,"font-family"),size:CL(n,"font-size").replace("px",""),style:CL(n,"font-style"),weight:CL(n,"font-weight"),lineHeight:i},document.body.removeChild(n),_de<$qe&&(gde[e._font]=t,_de++)}e._fontFamily=t.family,e._fontSize=t.size,e._fontStyle=t.style,e._fontWeight=t.weight,e._lineHeight=t.lineHeight}function Qh(e,t){e=e??V.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.pixelOffsetScaleByDistance,o=e.scaleByDistance,r=e.distanceDisplayCondition;l(n)&&(n=jt.clone(n)),l(i)&&(i=jt.clone(i)),l(o)&&(o=jt.clone(o)),l(r)&&(r=Ut.clone(r)),this._renderedText=void 0,this._text=void 0,this._show=e.show??!0,this._font=e.font??"30px sans-serif",this._fillColor=G.clone(e.fillColor??G.WHITE),this._outlineColor=G.clone(e.outlineColor??G.BLACK),this._outlineWidth=e.outlineWidth??1,this._showBackground=e.showBackground??!1,this._backgroundColor=G.clone(e.backgroundColor??eKe),this._backgroundPadding=U.clone(e.backgroundPadding??tKe),this._style=e.style??nr.FILL,this._verticalOrigin=e.verticalOrigin??zn.BASELINE,this._horizontalOrigin=e.horizontalOrigin??Ri.LEFT,this._pixelOffset=U.clone(e.pixelOffset??U.ZERO),this._eyeOffset=d.clone(e.eyeOffset??d.ZERO),this._position=d.clone(e.position??d.ZERO),this._scale=e.scale??1,this._id=e.id,this._translucencyByDistance=n,this._pixelOffsetScaleByDistance=i,this._scaleByDistance=o,this._heightReference=e.heightReference??Ze.NONE,this._distanceDisplayCondition=r,this._disableDepthTestDistance=e.disableDepthTestDistance,this._labelCollection=t,this._glyphs=[],this._backgroundBillboard=void 0,this._batchIndex=void 0,this._rebindAllGlyphs=!0,this._repositionAllGlyphs=!0,this._actualClampedPosition=void 0,this._removeCallbackFunc=void 0,this._mode=void 0,this._clusterShow=!0,this.text=e.text??"",this._relativeSize=1,Cde(this),this._updateClamping()}Object.defineProperties(Qh.prototype,{show:{get:function(){return this._show},set:function(e){if(this._show!==e){this._show=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i].billboard;l(r)&&(r.show=e)}let n=this._backgroundBillboard;l(n)&&(n.show=e)}}},position:{get:function(){return this._position},set:function(e){let t=this._position;if(!d.equals(t,e)){d.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o].billboard;l(s)&&(s.position=e)}let i=this._backgroundBillboard;l(i)&&(i.position=e),this._updateClamping()}}},heightReference:{get:function(){return this._heightReference},set:function(e){if(e!==this._heightReference){this._heightReference=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i].billboard;l(r)&&(r.heightReference=e)}let n=this._backgroundBillboard;l(n)&&(n.heightReference=e),yL(this),this._updateClamping()}}},text:{get:function(){return this._text},set:function(e){if(this._text!==e){this._text=e;let t=Qh.filterUnsupportedCharacters(e);this._renderedText=Qh.enableRightToLeftDetection?aKe(t):t,E0(this)}}},font:{get:function(){return this._font},set:function(e){this._font!==e&&(this._font=e,E0(this),Cde(this))}},fillColor:{get:function(){return this._fillColor},set:function(e){let t=this._fillColor;G.equals(t,e)||(G.clone(e,t),E0(this))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;G.equals(t,e)||(G.clone(e,t),E0(this))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,E0(this))}},showBackground:{get:function(){return this._showBackground},set:function(e){this._showBackground!==e&&(this._showBackground=e,E0(this))}},backgroundColor:{get:function(){return this._backgroundColor},set:function(e){let t=this._backgroundColor;if(!G.equals(t,e)){G.clone(e,t);let n=this._backgroundBillboard;l(n)&&(n.color=t)}}},backgroundPadding:{get:function(){return this._backgroundPadding},set:function(e){let t=this._backgroundPadding;U.equals(t,e)||(U.clone(e,t),yL(this))}},style:{get:function(){return this._style},set:function(e){this._style!==e&&(this._style=e,E0(this))}},pixelOffset:{get:function(){return this._pixelOffset},set:function(e){let t=this._pixelOffset;if(!U.equals(t,e)){U.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.pixelOffset=e)}let i=this._backgroundBillboard;l(i)&&(i.pixelOffset=e)}}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;if(!jt.equals(t,e)){this._translucencyByDistance=jt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.translucencyByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.translucencyByDistance=e)}}},pixelOffsetScaleByDistance:{get:function(){return this._pixelOffsetScaleByDistance},set:function(e){let t=this._pixelOffsetScaleByDistance;if(!jt.equals(t,e)){this._pixelOffsetScaleByDistance=jt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.pixelOffsetScaleByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.pixelOffsetScaleByDistance=e)}}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;if(!jt.equals(t,e)){this._scaleByDistance=jt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.scaleByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.scaleByDistance=e)}}},eyeOffset:{get:function(){return this._eyeOffset},set:function(e){let t=this._eyeOffset;if(!d.equals(t,e)){d.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.eyeOffset=e)}let i=this._backgroundBillboard;l(i)&&(i.eyeOffset=e)}}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin!==e&&(this._horizontalOrigin=e,yL(this))}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){if(this._verticalOrigin!==e){this._verticalOrigin=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.verticalOrigin=e)}let n=this._backgroundBillboard;l(n)&&(n.verticalOrigin=e),yL(this)}}},scale:{get:function(){return this._scale},set:function(e){if(this._scale!==e){this._scale=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.scale=e*this._relativeSize)}let n=this._backgroundBillboard;l(n)&&(n.scale=e*this._relativeSize),yL(this)}}},totalScale:{get:function(){return this._scale*this._relativeSize}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){if(!Ut.equals(e,this._distanceDisplayCondition)){this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition);let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.distanceDisplayCondition=e)}let n=this._backgroundBillboard;l(n)&&(n.distanceDisplayCondition=e)}}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){if(this._disableDepthTestDistance!==e){this._disableDepthTestDistance=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.disableDepthTestDistance=e)}let n=this._backgroundBillboard;l(n)&&(n.disableDepthTestDistance=e)}}},id:{get:function(){return this._id},set:function(e){if(this._id!==e){this._id=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.id=e)}let n=this._backgroundBillboard;l(n)&&(n.id=e)}}},pickId:{get:function(){if(!(this._glyphs.length===0||!l(this._glyphs[0].billboard)))return this._glyphs[0].billboard.pickId}},_clampedPosition:{get:function(){return this._actualClampedPosition},set:function(e){this._actualClampedPosition=d.clone(e,this._actualClampedPosition);let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard._clampedPosition=e)}let n=this._backgroundBillboard;l(n)&&(n._clampedPosition=e)}},clusterShow:{get:function(){return this._clusterShow},set:function(e){if(this._clusterShow!==e){this._clusterShow=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.clusterShow=e)}let n=this._backgroundBillboard;l(n)&&(n.clusterShow=e)}}}});Qh.prototype._updateClamping=function(){xo._updateClamping(this._labelCollection,this)};Qh.prototype.computeScreenSpacePosition=function(e,t){l(t)||(t=new U);let i=this._labelCollection.modelMatrix,o=l(this._actualClampedPosition)?this._actualClampedPosition:this._position;return xo._computeScreenSpacePosition(i,o,this._eyeOffset,this._pixelOffset,e,t)};Qh.getScreenSpaceBoundingBox=function(e,t,n){let i=0,o=0,r=0,s=0,a=e.totalScale,c=e._backgroundBillboard;if(l(c))i=t.x+c._translate.x,o=t.y-c._translate.y,r=c.width*a,s=c.height*a,e.verticalOrigin===zn.BOTTOM||e.verticalOrigin===zn.BASELINE?o-=s:e.verticalOrigin===zn.CENTER&&(o-=s*.5);else{i=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;let u=0,f=0,h=e._glyphs,A=h.length;for(let g=0;g<A;++g){let m=h[g],_=m.billboard;if(!l(_))continue;let y=t.x+_._translate.x,C=t.y-_._translate.y,E=m.dimensions.width*a,I=m.dimensions.height*a;e.verticalOrigin===zn.BOTTOM||e.verticalOrigin===zn.BASELINE?C-=I:e.verticalOrigin===zn.CENTER&&(C-=I*.5),e._verticalOrigin===zn.TOP?C+=_a.PADDING*a:(e._verticalOrigin===zn.BOTTOM||e._verticalOrigin===zn.BASELINE)&&(C-=_a.PADDING*a),i=Math.min(i,y),o=Math.min(o,C),u=Math.max(u,y+E),f=Math.max(f,C+I)}r=u-i,s=f-o}return l(n)||(n=new Ye),n.x=i,n.y=o,n.width=r,n.height=s,n};Qh.filterUnsupportedCharacters=function(e){let t=new RegExp(/[\u0000-\u0008\u000E-\u001F\u00ad\u202a-\u206f\u200b-\u200f]/,"g");return e.replace(t,"")};Qh.prototype.equals=function(e){return this===e||l(e)&&this._show===e._show&&this._scale===e._scale&&this._outlineWidth===e._outlineWidth&&this._showBackground===e._showBackground&&this._style===e._style&&this._verticalOrigin===e._verticalOrigin&&this._horizontalOrigin===e._horizontalOrigin&&this._heightReference===e._heightReference&&this._renderedText===e._renderedText&&this._font===e._font&&d.equals(this._position,e._position)&&G.equals(this._fillColor,e._fillColor)&&G.equals(this._outlineColor,e._outlineColor)&&G.equals(this._backgroundColor,e._backgroundColor)&&U.equals(this._backgroundPadding,e._backgroundPadding)&&U.equals(this._pixelOffset,e._pixelOffset)&&d.equals(this._eyeOffset,e._eyeOffset)&&jt.equals(this._translucencyByDistance,e._translucencyByDistance)&&jt.equals(this._pixelOffsetScaleByDistance,e._pixelOffsetScaleByDistance)&&jt.equals(this._scaleByDistance,e._scaleByDistance)&&Ut.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._id===e._id};Qh.prototype.isDestroyed=function(){return!1};Qh.enableRightToLeftDetection=!1;function nKe(e,t){let n=/[a-zA-Z0-9]/,i=/[()[\]{}<>]/,o=[],r="",s=Qs.LTR,a="",c=e.length;for(let u=0;u<c;++u){let f=e.charAt(u);t.test(f)?a=Qs.RTL:n.test(f)?a=Qs.LTR:i.test(f)?a=Qs.BRACKETS:a=Qs.WEAK,u===0&&(s=a),s===a&&a!==Qs.BRACKETS?r+=f:(r!==""&&o.push({Type:s,Word:r}),s=a,r=f)}return o.push({Type:a,Word:r}),o}function iKe(e){return e.split("").reverse().join("")}function EL(e,t,n){return e.slice(0,t)+n+e.slice(t)}function oKe(e){switch(e){case"(":return")";case")":return"(";case"[":return"]";case"]":return"[";case"{":return"}";case"}":return"{";case"<":return">";case">":return"<"}}var rKe="\u05D0-\u05EA",sKe="\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF",yde=new RegExp(`[${rKe}${sKe}]`);function aKe(e){let t=e.split(` +`),n="";for(let i=0;i<t.length;i++){let o=t[i],r=yde.test(o.charAt(0)),s=nKe(o,yde),a=0,c="";for(let u=0;u<s.length;++u){let f=s[u],h=f.Type===Qs.BRACKETS?oKe(f.Word):iKe(f.Word);r?f.Type===Qs.RTL?(c=h+c,a=0):f.Type===Qs.LTR?(c=EL(c,a,f.Word),a+=f.Word.length):(f.Type===Qs.WEAK||f.Type===Qs.BRACKETS)&&(f.Type===Qs.WEAK&&s[u-1].Type===Qs.BRACKETS?c=h+c:s[u-1].Type===Qs.RTL?(c=h+c,a=0):s.length>u+1?s[u+1].Type===Qs.RTL?(c=h+c,a=0):(c=EL(c,a,f.Word),a+=f.Word.length):c=EL(c,0,h)):f.Type===Qs.RTL?c=EL(c,a,h):f.Type===Qs.LTR?(c+=f.Word,a=c.length):(f.Type===Qs.WEAK||f.Type===Qs.BRACKETS)&&(u>0&&s[u-1].Type===Qs.RTL?s.length>u+1?s[u+1].Type===Qs.RTL?c=EL(c,a,h):(c+=f.Word,a=c.length):c+=f.Word:(c+=f.Word,a=c.length))}n+=c,i<t.length-1&&(n+=` +`)}return n}var yy=Qh;var Tde=xr(Ede(),1);function lKe(){this.dimensions=void 0,this.billboardTexture=void 0,this.billboard=void 0}var uKe=1.2,Ide="ID_WHITE_PIXEL",BY=new U(4,4),fKe=new Ye(1,1,1,1);function dKe(e,t){let n=t._backgroundBillboardTexture;if(!n.hasImage){let o=document.createElement("canvas");o.width=BY.x,o.height=BY.y;let r=o.getContext("2d");r.fillStyle="#fff",r.fillRect(0,0,o.width,o.height),n.loadImage(Ide,o),n.addImageSubRegion(Ide,fKe)}let i=e.add({collection:t});return i.setImageTexture(n),i}var ng={};function hKe(e,t,n,i,o,r){return ng.font=t,ng.fillColor=n,ng.strokeColor=i,ng.strokeWidth=o,ng.padding=_a.PADDING,ng.fill=r===nr.FILL||r===nr.FILL_AND_OUTLINE,ng.stroke=r===nr.OUTLINE||r===nr.FILL_AND_OUTLINE,ng.backgroundColor=G.BLACK,C0(e,ng)}function DY(e,t){let n=t.billboard;l(n)&&(n.show=!1,l(n._removeCallbackFunc)&&(n._removeCallbackFunc(),n._removeCallbackFunc=void 0),e._spareBillboards.push(n),t.billboard=void 0)}var mKe=new Tde.default,AKe=/\s/;function pKe(e,t){let n=t._renderedText,i=mKe.splitGraphemes(n),o=i.length,r=t._glyphs,s=r.length;if(t._relativeSize=t._fontSize/_a.FONT_SIZE,o<s)for(let g=o;g<s;++g)DY(e,r[g]);r.length=o;let a=t.show&&t._showBackground&&n.split(` +`).join("").length>0,c=t._backgroundBillboard,u=e._backgroundBillboardCollection;a?(l(c)||(c=dKe(u,e),t._backgroundBillboard=c),c.color=t._backgroundColor,c.show=t._show,c.position=t._position,c.eyeOffset=t._eyeOffset,c.pixelOffset=t._pixelOffset,c.horizontalOrigin=Ri.LEFT,c.verticalOrigin=t._verticalOrigin,c.heightReference=t._heightReference,c.scale=t.totalScale,c.pickPrimitive=t,c.id=t._id,c.translucencyByDistance=t._translucencyByDistance,c.pixelOffsetScaleByDistance=t._pixelOffsetScaleByDistance,c.scaleByDistance=t._scaleByDistance,c.distanceDisplayCondition=t._distanceDisplayCondition,c.disableDepthTestDistance=t._disableDepthTestDistance,c.clusterShow=t.clusterShow):l(c)&&(u.remove(c),t._backgroundBillboard=c=void 0);let f=e._glyphBillboardCollection,h=f.billboardTextureCache,A=e._textDimensionsCache;for(let g=0;g<o;++g){let m=i[g],_=t._verticalOrigin,y=JSON.stringify([m,t._fontFamily,t._fontStyle,t._fontWeight,+_]),C=A[y],E=h.get(y);if(!l(E)||!l(C)){E=new eg(f),h.set(y,E);let B=`${t._fontStyle} ${t._fontWeight} ${_a.FONT_SIZE}px ${t._fontFamily}`,v=hKe(m,B,G.WHITE,G.WHITE,0,nr.FILL);if(C=v.dimensions,A[y]=C,v.width>0&&v.height>0&&!AKe.test(m)){let P=(0,bde.default)(v,{cutoff:_a.CUTOFF,radius:_a.RADIUS}),M=v.getContext("2d"),L=v.width,p=v.height,x=M.getImageData(0,0,L,p);for(let T=0;T<L;T++)for(let w=0;w<p;w++){let R=w*L+T,O=P[R]*255,k=R*4;x.data[k+0]=O,x.data[k+1]=O,x.data[k+2]=O,x.data[k+3]=O}M.putImageData(x,0,0),E.loadImage(y,v)}}let I=r[g];if(l(I)||(I=new lKe,I.dimensions=C,I.billboardTexture=E,r[g]=I),I.billboardTexture.id!==y&&(I.billboardTexture=E,I.dimensions=C),!E.hasImage){DY(e,I);continue}let b=I.billboard,S=e._spareBillboards;l(b)||(S.length>0?b=S.pop():(b=f.add({collection:e}),b._labelDimensions=new U,b._labelTranslate=new U),I.billboard=b),b.setImageTexture(E),b.show=t._show,b.position=t._position,b.eyeOffset=t._eyeOffset,b.pixelOffset=t._pixelOffset,b.horizontalOrigin=Ri.LEFT,b.verticalOrigin=t._verticalOrigin,b.heightReference=t._heightReference,b.scale=t.totalScale,b.pickPrimitive=t,b.id=t._id,b.translucencyByDistance=t._translucencyByDistance,b.pixelOffsetScaleByDistance=t._pixelOffsetScaleByDistance,b.scaleByDistance=t._scaleByDistance,b.distanceDisplayCondition=t._distanceDisplayCondition,b.disableDepthTestDistance=t._disableDepthTestDistance,b._batchIndex=t._batchIndex,b.outlineColor=t.outlineColor,t.style===nr.FILL_AND_OUTLINE?(b.color=t._fillColor,b.outlineWidth=t.outlineWidth):t.style===nr.FILL?(b.color=t._fillColor,b.outlineWidth=0):t.style===nr.OUTLINE&&(b.color=G.TRANSPARENT,b.outlineWidth=t.outlineWidth)}t._repositionAllGlyphs=!0}function xde(e,t,n){return t===Ri.CENTER?-e/2:t===Ri.RIGHT?-(e+n.x):n.x}var Br=new U,gKe=new U;function _Ke(e){let t=e._glyphs,n=e._renderedText,i=0,o=0,r=[],s=Number.NEGATIVE_INFINITY,a=0,c=1,u=t.length,f=e._backgroundBillboard,h=U.clone(l(f)?e._backgroundPadding:U.ZERO,gKe);h.x/=e._relativeSize,h.y/=e._relativeSize;for(let M=0;M<u;++M){if(n.charAt(M)===` +`){r.push(i),++c,i=0;continue}let p=t[M].dimensions;l(p)&&(a=Math.max(a,p.height-p.descent),s=Math.max(s,p.descent),i+=p.width-p.minx,M<u-1&&(i+=t[M+1].dimensions.minx),o=Math.max(o,i))}r.push(i);let A=a+s,g=e.totalScale,m=e._horizontalOrigin,_=e._verticalOrigin,y=0,C=r[y],E=xde(C,m,h),I=(l(e._lineHeight)?e._lineHeight:uKe*e._fontSize)/e._relativeSize,b=I*(c-1),S=o,B=A+b;l(f)&&(S+=h.x*2,B+=h.y*2,f._labelHorizontalOrigin=m),Br.x=E*g,Br.y=0;let v=!0,P=0;for(let M=0;M<u;++M){if(n.charAt(M)===` +`){++y,P+=I,C=r[y],E=xde(C,m,h),Br.x=E*g,v=!0;continue}let L=t[M],p=L.dimensions;if(l(p)&&(_===zn.TOP?(Br.y=p.height-a-h.y,Br.y+=_a.PADDING):_===zn.CENTER?Br.y=(b+p.height-a)/2:_===zn.BASELINE?(Br.y=b,Br.y-=_a.PADDING):(Br.y=b+s+h.y,Br.y-=_a.PADDING),Br.y=(Br.y-p.descent-P)*g,v&&(Br.x-=_a.PADDING*g,v=!1),l(L.billboard)&&(L.billboard._setTranslate(Br),L.billboard._labelDimensions.x=S,L.billboard._labelDimensions.y=B,L.billboard._labelHorizontalOrigin=m),M<u-1)){let x=t[M+1];Br.x+=(p.width-p.minx+x.dimensions.minx)*g}}if(l(f)&&n.split(` +`).join("").length>0&&(m===Ri.CENTER?E=-o/2-h.x:m===Ri.RIGHT?E=-(o+h.x*2):E=0,Br.x=E*g,_===zn.TOP?Br.y=A-a-s:_===zn.CENTER?Br.y=(A-a)/2-s:_===zn.BASELINE?Br.y=-h.y-s:Br.y=0,Br.y=Br.y*g,f.width=S,f.height=B,f._setTranslate(Br),f._labelTranslate=U.clone(Br,f._labelTranslate)),Wf(e.heightReference))for(let M=0;M<u;++M){let p=t[M].billboard;l(p)&&(p._labelTranslate=U.clone(Br,p._labelTranslate))}}function Sde(e,t){let n=t._glyphs;for(let i=0,o=n.length;i<o;++i)DY(e,n[i]);l(t._backgroundBillboard)&&(e._backgroundBillboardCollection.remove(t._backgroundBillboard),t._backgroundBillboard=void 0),t._labelCollection=void 0,l(t._removeCallbackFunc)&&t._removeCallbackFunc(),ue(t)}function oA(e){e=e??V.EMPTY_OBJECT,this._scene=e.scene,this._batchTable=e.batchTable;let t=new nf({scene:this._scene,textureAtlas:new p0({initialSize:BY})});this._backgroundBillboardCollection=t,this._backgroundBillboardTexture=new eg(t),this._glyphBillboardCollection=new nf({scene:this._scene,batchTable:this._batchTable}),this._glyphBillboardCollection._sdf=!0,this._spareBillboards=[],this._textDimensionsCache={},this._labels=[],this._labelsToUpdate=[],this._totalGlyphCount=0,this._highlightColor=G.clone(G.WHITE),this.show=e.show??!0,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.blendOption=e.blendOption??Uo.OPAQUE_AND_TRANSLUCENT}Object.defineProperties(oA.prototype,{length:{get:function(){return this._labels.length}},sizeInBytes:{get:function(){return this._glyphBillboardCollection.sizeInBytes+this._backgroundBillboardCollection.sizeInBytes}},ready:{get:function(){let e=this._backgroundBillboardCollection.get(0);return l(e)&&!e.ready?!1:this._glyphBillboardCollection.ready}}});oA.prototype.add=function(e){let t=new yy(e,this);return this._labels.push(t),this._labelsToUpdate.push(t),t};oA.prototype.remove=function(e){if(l(e)&&e._labelCollection===this){let t=this._labels.indexOf(e);if(t!==-1)return this._labels.splice(t,1),Sde(this,e),!0}return!1};oA.prototype.removeAll=function(){let e=this._labels;for(let t=0,n=e.length;t<n;++t)Sde(this,e[t]);e.length=0};oA.prototype.contains=function(e){return l(e)&&e._labelCollection===this};oA.prototype.get=function(e){return this._labels[e]};oA.prototype.update=function(e){if(!this.show)return;let t=this._glyphBillboardCollection,n=this._backgroundBillboardCollection;t.modelMatrix=this.modelMatrix,t.debugShowBoundingVolume=this.debugShowBoundingVolume,n.modelMatrix=this.modelMatrix,n.debugShowBoundingVolume=this.debugShowBoundingVolume;let i=this._labelsToUpdate.length;for(let r=0;r<i;++r){let s=this._labelsToUpdate[r];if(s.isDestroyed())continue;let a=s._glyphs.length;s._rebindAllGlyphs&&(pKe(this,s),s._rebindAllGlyphs=!1),s._repositionAllGlyphs&&(_Ke(s),s._repositionAllGlyphs=!1);let c=s._glyphs.length-a;this._totalGlyphCount+=c}let o=n.length>0?Uo.TRANSLUCENT:this.blendOption;t.blendOption=o,n.blendOption=o,t._highlightColor=this._highlightColor,n._highlightColor=this._highlightColor,this._labelsToUpdate.length=0,n.update(e),t.update(e)};oA.prototype.isDestroyed=function(){return!1};oA.prototype.destroy=function(){return this.removeAll(),this._glyphBillboardCollection=this._glyphBillboardCollection.destroy(),this._backgroundBillboardCollection=this._backgroundBillboardCollection.destroy(),ue(this)};var rA=oA;var IL=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 position2DHigh; +in vec3 position2DLow; +in vec3 prevPosition3DHigh; +in vec3 prevPosition3DLow; +in vec3 prevPosition2DHigh; +in vec3 prevPosition2DLow; +in vec3 nextPosition3DHigh; +in vec3 nextPosition3DLow; +in vec3 nextPosition2DHigh; +in vec3 nextPosition2DLow; +in vec4 texCoordExpandAndBatchIndex; + +out vec2 v_st; +out float v_width; +out vec4 v_pickColor; +out float v_polylineAngle; + +void main() +{ + float texCoord = texCoordExpandAndBatchIndex.x; + float expandDir = texCoordExpandAndBatchIndex.y; + bool usePrev = texCoordExpandAndBatchIndex.z < 0.0; + float batchTableIndex = texCoordExpandAndBatchIndex.w; + + vec2 widthAndShow = batchTable_getWidthAndShow(batchTableIndex); + float width = widthAndShow.x + 0.5; + float show = widthAndShow.y; + + if (width < 1.0) + { + show = 0.0; + } + + vec4 pickColor = batchTable_getPickColor(batchTableIndex); + + vec4 p, prev, next; + if (czm_morphTime == 1.0) + { + p = czm_translateRelativeToEye(position3DHigh.xyz, position3DLow.xyz); + prev = czm_translateRelativeToEye(prevPosition3DHigh.xyz, prevPosition3DLow.xyz); + next = czm_translateRelativeToEye(nextPosition3DHigh.xyz, nextPosition3DLow.xyz); + } + else if (czm_morphTime == 0.0) + { + p = czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy); + prev = czm_translateRelativeToEye(prevPosition2DHigh.zxy, prevPosition2DLow.zxy); + next = czm_translateRelativeToEye(nextPosition2DHigh.zxy, nextPosition2DLow.zxy); + } + else + { + p = czm_columbusViewMorph( + czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy), + czm_translateRelativeToEye(position3DHigh.xyz, position3DLow.xyz), + czm_morphTime); + prev = czm_columbusViewMorph( + czm_translateRelativeToEye(prevPosition2DHigh.zxy, prevPosition2DLow.zxy), + czm_translateRelativeToEye(prevPosition3DHigh.xyz, prevPosition3DLow.xyz), + czm_morphTime); + next = czm_columbusViewMorph( + czm_translateRelativeToEye(nextPosition2DHigh.zxy, nextPosition2DLow.zxy), + czm_translateRelativeToEye(nextPosition3DHigh.xyz, nextPosition3DLow.xyz), + czm_morphTime); + } + + #ifdef DISTANCE_DISPLAY_CONDITION + vec3 centerHigh = batchTable_getCenterHigh(batchTableIndex); + vec4 centerLowAndRadius = batchTable_getCenterLowAndRadius(batchTableIndex); + vec3 centerLow = centerLowAndRadius.xyz; + float radius = centerLowAndRadius.w; + vec2 distanceDisplayCondition = batchTable_getDistanceDisplayCondition(batchTableIndex); + + float lengthSq; + if (czm_sceneMode == czm_sceneMode2D) + { + lengthSq = czm_eyeHeight2D.y; + } + else + { + vec4 center = czm_translateRelativeToEye(centerHigh.xyz, centerLow.xyz); + lengthSq = max(0.0, dot(center.xyz, center.xyz) - radius * radius); + } + + float nearSq = distanceDisplayCondition.x * distanceDisplayCondition.x; + float farSq = distanceDisplayCondition.y * distanceDisplayCondition.y; + if (lengthSq < nearSq || lengthSq > farSq) + { + show = 0.0; + } + #endif + + float polylineAngle; + vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, polylineAngle); + gl_Position = czm_viewportOrthographic * positionWC * show; + + v_st.s = texCoord; + v_st.t = czm_writeNonPerspective(clamp(expandDir, 0.0, 1.0), gl_Position.w); + + v_width = width; + v_pickColor = pickColor; + v_polylineAngle = polylineAngle; +} +`;var Ml={};Ml.numberOfPoints=function(e,t,n){let i=d.distance(e,t);return Math.ceil(i/n)};Ml.numberOfPointsRhumbLine=function(e,t,n){let i=Math.pow(e.longitude-t.longitude,2)+Math.pow(e.latitude-t.latitude,2);return Math.max(1,Math.ceil(Math.sqrt(i/(n*n))))};var yKe=new Ae;Ml.extractHeights=function(e,t){let n=e.length,i=new Array(n);for(let o=0;o<n;o++){let r=e[o];i[o]=t.cartesianToCartographic(r,yKe).height}return i};var CKe=new N,EKe=new d,wde=new d,IKe=new mn(d.UNIT_X,0),Bde=new d,xKe=new mn(d.UNIT_X,0),bKe=new d,TKe=new d,PY=[];function vde(e,t,n){let i=PY;i.length=e;let o;if(t===n){for(o=0;o<e;o++)i[o]=t;return i}let s=(n-t)/e;for(o=0;o<e;o++){let a=t+o*s;i[o]=a}return i}var mV=new Ae,hV=new Ae,Cy=new d,RY=new d,SKe=new d,vY=new up,xL=new uc;function wKe(e,t,n,i,o,r,s,a){let c=i.scaleToGeodeticSurface(e,RY),u=i.scaleToGeodeticSurface(t,SKe),f=Ml.numberOfPoints(e,t,n),h=i.cartesianToCartographic(c,mV),A=i.cartesianToCartographic(u,hV),g=vde(f,o,r);vY.setEndPoints(h,A);let m=vY.surfaceDistance/f,_=a;h.height=o;let y=i.cartographicToCartesian(h,Cy);d.pack(y,s,_),_+=3;for(let C=1;C<f;C++){let E=vY.interpolateUsingSurfaceDistance(C*m,hV);E.height=g[C],y=i.cartographicToCartesian(E,Cy),d.pack(y,s,_),_+=3}return _}function BKe(e,t,n,i,o,r,s,a){let c=i.cartesianToCartographic(e,mV),u=i.cartesianToCartographic(t,hV),f=Ml.numberOfPointsRhumbLine(c,u,n);c.height=0,u.height=0;let h=vde(f,o,r);xL.ellipsoid.equals(i)||(xL=new uc(void 0,void 0,i)),xL.setEndPoints(c,u);let A=xL.surfaceDistance/f,g=a;c.height=o;let m=i.cartographicToCartesian(c,Cy);d.pack(m,s,g),g+=3;for(let _=1;_<f;_++){let y=xL.interpolateUsingSurfaceDistance(_*A,hV);y.height=h[_],m=i.cartographicToCartesian(y,Cy),d.pack(m,s,g),g+=3}return g}Ml.wrapLongitude=function(e,t){let n=[],i=[];if(l(e)&&e.length>0){t=t??N.IDENTITY;let o=N.inverseTransformation(t,CKe),r=N.multiplyByPoint(o,d.ZERO,EKe),s=d.normalize(N.multiplyByPointAsVector(o,d.UNIT_Y,wde),wde),a=mn.fromPointNormal(r,s,IKe),c=d.normalize(N.multiplyByPointAsVector(o,d.UNIT_X,Bde),Bde),u=mn.fromPointNormal(r,c,xKe),f=1;n.push(d.clone(e[0]));let h=n[0],A=e.length;for(let g=1;g<A;++g){let m=e[g];if(mn.getPointDistance(u,h)<0||mn.getPointDistance(u,m)<0){let _=hi.lineSegmentPlane(h,m,a,bKe);if(l(_)){let y=d.multiplyByScalar(s,5e-9,TKe);mn.getPointDistance(a,h)<0&&d.negate(y,y),n.push(d.add(_,y,new d)),i.push(f+1),d.negate(y,y),n.push(d.add(_,y,new d)),f=1}}n.push(d.clone(e[g])),f++,h=m}i.push(f)}return{positions:n,lengths:i}};Ml.generateArc=function(e){l(e)||(e={});let t=e.positions,n=t.length,i=e.ellipsoid??te.default,o=e.height??0,r=Array.isArray(o);if(n<1)return[];if(n===1){let _=i.scaleToGeodeticSurface(t[0],RY);if(o=r?o[0]:o,o!==0){let y=i.geodeticSurfaceNormal(_,Cy);d.multiplyByScalar(y,o,y),d.add(_,y,_)}return[_.x,_.y,_.z]}let s=e.minDistance;if(!l(s)){let _=e.granularity??D.RADIANS_PER_DEGREE;s=D.chordLength(_,i.maximumRadius)}let a=0,c;for(c=0;c<n-1;c++)a+=Ml.numberOfPoints(t[c],t[c+1],s);let u=(a+1)*3,f=new Array(u),h=0;for(c=0;c<n-1;c++){let _=t[c],y=t[c+1],C=r?o[c]:o,E=r?o[c+1]:o;h=wKe(_,y,s,i,C,E,f,h)}PY.length=0;let A=t[n-1],g=i.cartesianToCartographic(A,mV);g.height=r?o[n-1]:o;let m=i.cartographicToCartesian(g,Cy);return d.pack(m,f,u-3),f};var Dde=new Ae,DKe=new Ae;Ml.generateRhumbArc=function(e){l(e)||(e={});let t=e.positions,n=t.length,i=e.ellipsoid??te.default,o=e.height??0,r=Array.isArray(o);if(n<1)return[];if(n===1){let C=i.scaleToGeodeticSurface(t[0],RY);if(o=r?o[0]:o,o!==0){let E=i.geodeticSurfaceNormal(C,Cy);d.multiplyByScalar(E,o,E),d.add(C,E,C)}return[C.x,C.y,C.z]}let s=e.granularity??D.RADIANS_PER_DEGREE,a=0,c,u=i.cartesianToCartographic(t[0],Dde),f;for(c=0;c<n-1;c++)f=i.cartesianToCartographic(t[c+1],DKe),a+=Ml.numberOfPointsRhumbLine(u,f,s),u=Ae.clone(f,Dde);let h=(a+1)*3,A=new Array(h),g=0;for(c=0;c<n-1;c++){let C=t[c],E=t[c+1],I=r?o[c]:o,b=r?o[c+1]:o;g=BKe(C,E,s,i,I,b,A,g)}PY.length=0;let m=t[n-1],_=i.cartesianToCartographic(m,mV);_.height=r?o[n-1]:o;let y=i.cartographicToCartesian(_,Cy);return d.pack(y,A,h-3),A};Ml.generateCartesianArc=function(e){let t=Ml.generateArc(e),n=t.length/3,i=new Array(n);for(let o=0;o<n;o++)i[o]=d.unpack(t,o*3);return i};Ml.generateCartesianRhumbArc=function(e){let t=Ml.generateRhumbArc(e),n=t.length/3,i=new Array(n);for(let o=0;o<n;o++)i[o]=d.unpack(t,o*3);return i};var Wi=Ml;function of(e,t){e=e??V.EMPTY_OBJECT,this._show=e.show??!0,this._width=e.width??1,this._loop=e.loop??!1,this._distanceDisplayCondition=e.distanceDisplayCondition,this._material=e.material,l(this._material)||(this._material=ro.fromType(ro.ColorType,{color:new G(1,1,1,1)}));let n=e.positions;l(n)||(n=[]),this._positions=n,this._actualPositions=Mo(n,d.equalsEpsilon),this._loop&&this._actualPositions.length>2&&(this._actualPositions===this._positions&&(this._actualPositions=n.slice()),this._actualPositions.push(d.clone(this._actualPositions[0]))),this._length=this._actualPositions.length,this._id=e.id;let i;l(t)&&(i=N.clone(t.modelMatrix)),this._modelMatrix=i,this._segments=Wi.wrapLongitude(this._actualPositions,i),this._actualLength=void 0,this._propertiesChanged=new Uint32Array(Rde),this._polylineCollection=t,this._dirty=!1,this._pickId=void 0,this._boundingVolume=le.fromPoints(this._actualPositions),this._boundingVolumeWC=le.transform(this._boundingVolume,this._modelMatrix),this._boundingVolume2D=new le}var Pde=of.POSITION_INDEX=0,vKe=of.SHOW_INDEX=1,PKe=of.WIDTH_INDEX=2,RKe=of.MATERIAL_INDEX=3,bL=of.POSITION_SIZE_INDEX=4,MKe=of.DISTANCE_DISPLAY_CONDITION=5,Rde=of.NUMBER_OF_PROPERTIES=6;function ig(e,t){++e._propertiesChanged[t];let n=e._polylineCollection;l(n)&&(n._updatePolyline(e,t),e._dirty=!0)}Object.defineProperties(of.prototype,{show:{get:function(){return this._show},set:function(e){e!==this._show&&(this._show=e,ig(this,vKe))}},positions:{get:function(){return this._positions},set:function(e){let t=Mo(e,d.equalsEpsilon);this._loop&&t.length>2&&(t===e&&(t=e.slice()),t.push(d.clone(t[0]))),(this._actualPositions.length!==t.length||this._actualPositions.length!==this._length)&&ig(this,bL),this._positions=e,this._actualPositions=t,this._length=t.length,this._boundingVolume=le.fromPoints(this._actualPositions,this._boundingVolume),this._boundingVolumeWC=le.transform(this._boundingVolume,this._modelMatrix,this._boundingVolumeWC),ig(this,Pde),this.update()}},material:{get:function(){return this._material},set:function(e){this._material!==e&&(this._material=e,ig(this,RKe))}},width:{get:function(){return this._width},set:function(e){let t=this._width;e!==t&&(this._width=e,ig(this,PKe))}},loop:{get:function(){return this._loop},set:function(e){if(e!==this._loop){let t=this._actualPositions;e?t.length>2&&!d.equals(t[0],t[t.length-1])&&(t.length===this._positions.length&&(this._actualPositions=t=this._positions.slice()),t.push(d.clone(t[0]))):t.length>2&&d.equals(t[0],t[t.length-1])&&(t.length-1===this._positions.length?this._actualPositions=this._positions:t.pop()),this._loop=e,ig(this,bL)}}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickId:{get:function(){return this._pickId}},isDestroyed:{get:function(){return!l(this._polylineCollection)}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Ut.equals(e,this._distanceDisplayCondition)||(this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition),ig(this,MKe))}}});of.prototype.update=function(){let e=N.IDENTITY;l(this._polylineCollection)&&(e=this._polylineCollection.modelMatrix);let t=this._segments.positions.length,n=this._segments.lengths,i=this._propertiesChanged[Pde]>0||this._propertiesChanged[bL]>0;if((!N.equals(e,this._modelMatrix)||i)&&(this._segments=Wi.wrapLongitude(this._actualPositions,e),this._boundingVolumeWC=le.transform(this._boundingVolume,e,this._boundingVolumeWC)),this._modelMatrix=N.clone(e,this._modelMatrix),this._segments.positions.length!==t)ig(this,bL);else{let o=n.length;for(let r=0;r<o;++r)if(n[r]!==this._segments.lengths[r]){ig(this,bL);break}}};of.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this,collection:this._polylineCollection,id:this._id})),this._pickId};of.prototype._clean=function(){this._dirty=!1;let e=this._propertiesChanged;for(let t=0;t<Rde-1;++t)e[t]=0};of.prototype._destroy=function(){this._pickId=this._pickId&&this._pickId.destroy(),this._material=this._material&&this._material.destroy(),this._polylineCollection=void 0};var md=of;var NKe=md.SHOW_INDEX,LKe=md.WIDTH_INDEX,NY=md.POSITION_INDEX,OKe=md.MATERIAL_INDEX,Mde=md.POSITION_SIZE_INDEX,FKe=md.DISTANCE_DISPLAY_CONDITION,Ude=md.NUMBER_OF_PROPERTIES,Au={texCoordExpandAndBatchIndex:0,position3DHigh:1,position3DLow:2,position2DHigh:3,position2DLow:4,prevPosition3DHigh:5,prevPosition3DLow:6,prevPosition2DHigh:7,prevPosition2DLow:8,nextPosition3DHigh:9,nextPosition3DLow:10,nextPosition2DHigh:11,nextPosition2DLow:12};function kh(e){e=e??V.EMPTY_OBJECT,this.show=e.show??!0,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this._modelMatrix=N.clone(N.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._opaqueRS=void 0,this._translucentRS=void 0,this._colorCommands=[],this._polylinesUpdated=!1,this._polylinesRemoved=!1,this._createVertexArray=!1,this._propertiesChanged=new Uint32Array(Ude),this._polylines=[],this._polylineBuckets={},this._positionBufferUsage={bufferUsage:Qe.STATIC_DRAW,frameCount:0},this._mode=void 0,this._polylinesToUpdate=[],this._vertexArrays=[],this._positionBuffer=void 0,this._texCoordExpandAndBatchIndexBuffer=void 0,this._batchTable=void 0,this._createBatchTable=!1,this._useHighlightColor=!1,this._highlightColor=G.clone(G.WHITE);let t=this;this._uniformMap={u_highlightColor:function(){return t._highlightColor}}}Object.defineProperties(kh.prototype,{length:{get:function(){return LY(this),this._polylines.length}}});kh.prototype.add=function(e){let t=new md(e,this);return t._index=this._polylines.length,this._polylines.push(t),this._createVertexArray=!0,this._createBatchTable=!0,t};kh.prototype.remove=function(e){if(this.contains(e)){if(this._polylinesRemoved=!0,this._createVertexArray=!0,this._createBatchTable=!0,l(e._bucket)){let t=e._bucket;t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy()}return e._destroy(),!0}return!1};kh.prototype.removeAll=function(){OY(this),Wde(this),this._polylineBuckets={},this._polylinesRemoved=!1,this._polylines.length=0,this._polylinesToUpdate.length=0,this._createVertexArray=!0};kh.prototype.contains=function(e){return l(e)&&e._polylineCollection===this};kh.prototype.get=function(e){return LY(this),this._polylines[e]};function QKe(e,t){l(e._batchTable)&&e._batchTable.destroy();let n=[{functionName:"batchTable_getWidthAndShow",componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:2},{functionName:"batchTable_getPickColor",componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:4,normalize:!0},{functionName:"batchTable_getCenterHigh",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"batchTable_getCenterLowAndRadius",componentDatatype:q.FLOAT,componentsPerAttribute:4},{functionName:"batchTable_getDistanceDisplayCondition",componentDatatype:q.FLOAT,componentsPerAttribute:2}];e._batchTable=new cE(t,n,e._polylines.length)}var Gde=new ei,zde=new se,Vde=new U;kh.prototype.update=function(e){if(LY(this),this._polylines.length===0||!this.show)return;HKe(this,e);let t=e.context,n=e.mapProjection,i,o=this._propertiesChanged;if(this._createBatchTable){if(Yt.maximumVertexTextureImageUnits===0)throw new ce("Vertex texture fetch support is required to render polylines. The maximum number of vertex texture image units must be greater than zero.");QKe(this,t),this._createBatchTable=!1}if(this._createVertexArray||UKe(this))Ode(this,t,n);else if(this._polylinesUpdated){let c=this._polylinesToUpdate;if(this._mode!==ie.SCENE3D){let u=c.length;for(let f=0;f<u;++f)i=c[f],i.update()}if(o[Mde]||o[OKe])Ode(this,t,n);else{let u=c.length,f=this._polylineBuckets;for(let h=0;h<u;++h){i=c[h],o=i._propertiesChanged;let A=i._bucket,g=0;for(let m in f)if(f.hasOwnProperty(m)){if(f[m]===A){o[NY]&&A.writeUpdate(g,i,this._positionBuffer,n);break}g+=f[m].lengthOfPositions}if((o[NKe]||o[LKe])&&this._batchTable.setBatchedAttribute(i._index,0,new U(i._width,i._show)),this._batchTable.attributes.length>2){if(o[NY]||o[Mde]){let m=e.mode===ie.SCENE2D?i._boundingVolume2D:i._boundingVolumeWC,_=ei.fromCartesian(m.center,Gde),y=se.fromElements(_.low.x,_.low.y,_.low.z,m.radius,zde);this._batchTable.setBatchedAttribute(i._index,2,_.high),this._batchTable.setBatchedAttribute(i._index,3,y)}if(o[FKe]){let m=Vde;m.x=0,m.y=Number.MAX_VALUE;let _=i.distanceDisplayCondition;l(_)&&(m.x=_.near,m.y=_.far),this._batchTable.setBatchedAttribute(i._index,4,m)}}i._clean()}}c.length=0,this._polylinesUpdated=!1}o=this._propertiesChanged;for(let c=0;c<Ude;++c)o[c]=0;let r=N.IDENTITY;e.mode===ie.SCENE3D&&(r=this.modelMatrix);let s=e.passes,a=e.morphTime!==0;if((!l(this._opaqueRS)||this._opaqueRS.depthTest.enabled!==a)&&(this._opaqueRS=Ue.fromCache({depthMask:a,depthTest:{enabled:a}})),(!l(this._translucentRS)||this._translucentRS.depthTest.enabled!==a)&&(this._translucentRS=Ue.fromCache({blending:pn.ALPHA_BLEND,depthMask:!a,depthTest:{enabled:a}})),this._batchTable.update(e),s.render||s.pick){let c=this._colorCommands;kKe(this,e,c,r)}};var TL=new le,Nde=new le;function kKe(e,t,n,i){let o=t.context,r=t.commandList,s=n.length,a=0,c=!0,u=e._vertexArrays,f=e.debugShowBoundingVolume,A=e._batchTable.getUniformMapCallback(),g=u.length;for(let m=0;m<g;++m){let _=u[m],y=_.buckets,C=y.length;for(let E=0;E<C;++E){let I=y[E],b=I.offset,S=I.bucket.shaderProgram,B=I.bucket.polylines,v=B.length,P,M,L=0,p,x;for(let T=0;T<v;++T){let w=B[T],R=zKe(w._material);if(R!==P){if(l(P)&&L>0){let z=M.isTranslucent();a>=s?(p=new nt({owner:e}),n.push(p)):p=n[a],++a,x=Tt(A(M._uniforms),e._uniformMap),p.boundingVolume=le.clone(TL,p.boundingVolume),p.modelMatrix=i,p.shaderProgram=S,p.vertexArray=_.va,p.renderState=z?e._translucentRS:e._opaqueRS,p.pass=z?Be.TRANSLUCENT:Be.OPAQUE,p.debugShowBoundingVolume=f,p.pickId="v_pickColor",p.uniformMap=x,p.count=L,p.offset=b,b+=L,L=0,c=!0,r.push(p)}M=w._material,M.update(o),P=R}let O=w._locatorBuckets,k=O.length;for(let z=0;z<k;++z){let F=O[z];F.locator===I&&(L+=F.count)}let Q;t.mode===ie.SCENE3D?Q=w._boundingVolumeWC:t.mode===ie.COLUMBUS_VIEW?Q=w._boundingVolume2D:t.mode===ie.SCENE2D?l(w._boundingVolume2D)&&(Q=le.clone(w._boundingVolume2D,Nde),Q.center.x=0):l(w._boundingVolumeWC)&&l(w._boundingVolume2D)&&(Q=le.union(w._boundingVolumeWC,w._boundingVolume2D,Nde)),c?(c=!1,le.clone(Q,TL)):le.union(Q,TL,TL)}l(P)&&L>0&&(a>=s?(p=new nt({owner:e}),n.push(p)):p=n[a],++a,x=Tt(A(M._uniforms),e._uniformMap),p.boundingVolume=le.clone(TL,p.boundingVolume),p.modelMatrix=i,p.shaderProgram=S,p.vertexArray=_.va,p.renderState=M.isTranslucent()?e._translucentRS:e._opaqueRS,p.pass=M.isTranslucent()?Be.TRANSLUCENT:Be.OPAQUE,p.debugShowBoundingVolume=f,p.pickId="v_pickColor",p.uniformMap=x,p.count=L,p.offset=b,c=!0,r.push(p)),P=void 0}}n.length=a}kh.prototype.isDestroyed=function(){return!1};kh.prototype.destroy=function(){return Hde(this),OY(this),Wde(this),this._batchTable=this._batchTable&&this._batchTable.destroy(),ue(this)};function UKe(e){let t=!1,n=e._propertiesChanged,i=e._positionBufferUsage;return n[NY]?(i.bufferUsage!==Qe.STREAM_DRAW&&(t=!0,i.bufferUsage=Qe.STREAM_DRAW),i.frameCount=100):i.bufferUsage!==Qe.STATIC_DRAW&&(i.frameCount===0?(t=!0,i.bufferUsage=Qe.STATIC_DRAW):i.frameCount--),t}var Lde=[0,0,0];function Ode(e,t,n){e._createVertexArray=!1,OY(e),Hde(e),VKe(e);let i=[[]],o=i[0],r=e._batchTable,s=e._useHighlightColor,a=[0],c=0,u=[[]],f=0,h=e._polylineBuckets,A,g;for(A in h)h.hasOwnProperty(A)&&(g=h[A],g.updateShader(t,r,s),f+=g.lengthOfPositions);if(f>0){let m=e._mode,_=new Float32Array(6*f*3),y=new Float32Array(f*4),C,E=0,I=0,b=0;for(A in h)if(h.hasOwnProperty(A)){g=h[A],g.write(_,y,E,I,b,r,t,n),m===ie.MORPHING&&(l(C)||(C=new Float32Array(6*f*3)),g.writeForMorph(C,E));let x=g.lengthOfPositions;E+=6*x*3,I+=x*4,b+=x*4,c=g.updateIndices(i,a,u,c)}let S=e._positionBufferUsage.bufferUsage,B=Qe.STATIC_DRAW;e._positionBuffer=Ct.createVertexBuffer({context:t,typedArray:_,usage:S});let v;l(C)&&(v=Ct.createVertexBuffer({context:t,typedArray:C,usage:S})),e._texCoordExpandAndBatchIndexBuffer=Ct.createVertexBuffer({context:t,typedArray:y,usage:B});let P=3*Float32Array.BYTES_PER_ELEMENT,M=4*Float32Array.BYTES_PER_ELEMENT,L=0,p=i.length;for(let x=0;x<p;++x)if(o=i[x],o.length>0){let T=new Uint16Array(o),w=Ct.createIndexBuffer({context:t,typedArray:T,usage:Qe.STATIC_DRAW,indexDatatype:Oe.UNSIGNED_SHORT});L+=a[x];let R=6*(x*(P*D.SIXTY_FOUR_KILOBYTES)-L*P),O=P+R,k=P+O,Q=P+k,z=P+Q,F=P+z,H=x*(M*D.SIXTY_FOUR_KILOBYTES)-L*M,W=[{index:Au.position3DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:R,strideInBytes:6*P},{index:Au.position3DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:O,strideInBytes:6*P},{index:Au.position2DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:R,strideInBytes:6*P},{index:Au.position2DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:O,strideInBytes:6*P},{index:Au.prevPosition3DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:k,strideInBytes:6*P},{index:Au.prevPosition3DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:Q,strideInBytes:6*P},{index:Au.prevPosition2DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:k,strideInBytes:6*P},{index:Au.prevPosition2DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:Q,strideInBytes:6*P},{index:Au.nextPosition3DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:z,strideInBytes:6*P},{index:Au.nextPosition3DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:F,strideInBytes:6*P},{index:Au.nextPosition2DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:z,strideInBytes:6*P},{index:Au.nextPosition2DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:F,strideInBytes:6*P},{index:Au.texCoordExpandAndBatchIndex,componentsPerAttribute:4,componentDatatype:q.FLOAT,vertexBuffer:e._texCoordExpandAndBatchIndexBuffer,offsetInBytes:H}],Z,Y,$,X;m===ie.SCENE3D?(Y=e._positionBuffer,Z="vertexBuffer",$=Lde,X="value"):m===ie.SCENE2D||m===ie.COLUMBUS_VIEW?(Y=Lde,Z="value",$=e._positionBuffer,X="vertexBuffer"):(Y=v,Z="vertexBuffer",$=e._positionBuffer,X="vertexBuffer"),W[0][Z]=Y,W[1][Z]=Y,W[2][X]=$,W[3][X]=$,W[4][Z]=Y,W[5][Z]=Y,W[6][X]=$,W[7][X]=$,W[8][Z]=Y,W[9][Z]=Y,W[10][X]=$,W[11][X]=$;let he=new li({context:t,attributes:W,indexBuffer:w});e._vertexArrays.push({va:he,buckets:u[x]})}}}function GKe(e,t){return t instanceof Mt?t.id:t}var AV=[];function zKe(e){let t=ro._uniformList[e.type],n=t.length;AV.length=2*n;let i=0;for(let o=0;o<n;++o){let r=t[o];AV[i]=r,AV[i+1]=e._uniforms[r](),i+=2}return`${e.type}:${JSON.stringify(AV,GKe)}`}function VKe(e){let t=e._mode,n=e._modelMatrix,i=e._polylineBuckets={},o=e._polylines,r=o.length;for(let s=0;s<r;++s){let a=o[s];if(a._actualPositions.length>1){a.update();let c=a.material,u=i[c.type];l(u)||(u=i[c.type]=new sA(c,t,n)),u.addPolyline(a)}}}function HKe(e,t){let n=t.mode;(e._mode!==n||!N.equals(e._modelMatrix,e.modelMatrix))&&(e._mode=n,e._modelMatrix=N.clone(e.modelMatrix),e._createVertexArray=!0)}function LY(e){if(e._polylinesRemoved){e._polylinesRemoved=!1;let t=[],n=[],i=0,o,r=e._polylines.length;for(let s=0;s<r;++s)o=e._polylines[s],o.isDestroyed||(o._index=i++,n.push(o),t.push(o));e._polylines=t,e._polylinesToUpdate=n}}function OY(e){let t=e._polylines,n=t.length;for(let i=0;i<n;++i)if(!t[i].isDestroyed){let o=t[i]._bucket;l(o)&&(o.shaderProgram=o.shaderProgram&&o.shaderProgram.destroy())}}function Hde(e){let t=e._vertexArrays.length;for(let n=0;n<t;++n)e._vertexArrays[n].va.destroy();e._vertexArrays.length=0}kh.prototype._updatePolyline=function(e,t){this._polylinesUpdated=!0,e._dirty||this._polylinesToUpdate.push(e),++this._propertiesChanged[t]};function Wde(e){let t=e._polylines,n=t.length;for(let i=0;i<n;++i)t[i].isDestroyed||t[i]._destroy()}function MY(e,t,n){this.count=e,this.offset=t,this.bucket=n}function sA(e,t,n){this.polylines=[],this.lengthOfPositions=0,this.material=e,this.shaderProgram=void 0,this.mode=t,this.modelMatrix=n}sA.prototype.addPolyline=function(e){this.polylines.push(e),e._actualLength=this.getPolylinePositionsLength(e),this.lengthOfPositions+=e._actualLength,e._bucket=this};sA.prototype.updateShader=function(e,t,n){if(l(this.shaderProgram))return;let i=["DISTANCE_DISPLAY_CONDITION"];n&&i.push("VECTOR_TILE"),this.material.shaderSource.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&i.push("POLYLINE_DASH"),Wt.isInternetExplorer()||i.push("CLIP_POLYLINE");let o=new He({defines:i,sources:[`in vec4 v_pickColor; +`,this.material.shaderSource,mE]}),r=t.getVertexShaderCallback()(IL),s=new He({defines:i,sources:[zu,r]});this.shaderProgram=an.fromCache({context:e,vertexShaderSource:s,fragmentShaderSource:o,attributeLocations:Au})};function jde(e){return d.dot(d.UNIT_X,e._boundingVolume.center)<0||e._boundingVolume.intersectPlane(mn.ORIGIN_ZX_PLANE)===tn.INTERSECTING}sA.prototype.getPolylinePositionsLength=function(e){let t;if(this.mode===ie.SCENE3D||!jde(e))return t=e._actualPositions.length,t*4-4;let n=0,i=e._segments.lengths;t=i.length;for(let o=0;o<t;++o)n+=i[o]*4-4;return n};var Xs=new d,Ad=new d,pd=new d,pV=new d,WKe=new se,jKe=new U;sA.prototype.write=function(e,t,n,i,o,r,s,a){let c=this.mode,u=a.ellipsoid.maximumRadius*D.PI,f=this.polylines,h=f.length;for(let A=0;A<h;++A){let g=f[A],m=g.width,_=g.show&&m>0,y=g._index,C=this.getSegments(g,a),E=C.positions,I=C.lengths,b=E.length,S=g.getPickId(s).color,B=0,v=0,P;for(let k=0;k<b;++k){k===0?g._loop?P=E[b-2]:(P=pV,d.subtract(E[0],E[1],P),d.add(E[0],P,P)):P=E[k-1],d.clone(P,Ad),d.clone(E[k],Xs),k===b-1?g._loop?P=E[1]:(P=pV,d.subtract(E[b-1],E[b-2],P),d.add(E[b-1],P,P)):P=E[k+1],d.clone(P,pd);let Q=I[B];k===v+Q&&(v+=Q,++B);let z=k-v===0,F=k===v+I[B]-1;c===ie.SCENE2D&&(Ad.z=0,Xs.z=0,pd.z=0),(c===ie.SCENE2D||c===ie.MORPHING)&&(z||F)&&u-Math.abs(Xs.x)<1&&((Xs.x<0&&Ad.x>0||Xs.x>0&&Ad.x<0)&&d.clone(Xs,Ad),(Xs.x<0&&pd.x>0||Xs.x>0&&pd.x<0)&&d.clone(Xs,pd));let H=z?2:0,W=F?2:4;for(let Z=H;Z<W;++Z){ei.writeElements(Xs,e,n),ei.writeElements(Ad,e,n+6),ei.writeElements(pd,e,n+12);let Y=Z-2<0?-1:1;t[o]=k/(b-1),t[o+1]=2*(Z%2)-1,t[o+2]=Y,t[o+3]=y,n+=18,o+=4}}let M=WKe;M.x=G.floatToByte(S.red),M.y=G.floatToByte(S.green),M.z=G.floatToByte(S.blue),M.w=G.floatToByte(S.alpha);let L=jKe;L.x=m,L.y=_?1:0;let p=c===ie.SCENE2D?g._boundingVolume2D:g._boundingVolumeWC,x=ei.fromCartesian(p.center,Gde),T=x.high,w=se.fromElements(x.low.x,x.low.y,x.low.z,p.radius,zde),R=Vde;R.x=0,R.y=Number.MAX_VALUE;let O=g.distanceDisplayCondition;l(O)&&(R.x=O.near,R.y=O.far),r.setBatchedAttribute(y,0,L),r.setBatchedAttribute(y,1,M),r.attributes.length>2&&(r.setBatchedAttribute(y,2,T),r.setBatchedAttribute(y,3,w),r.setBatchedAttribute(y,4,R))}};var YKe=new d,qKe=new d,KKe=new d,Fde=new d;sA.prototype.writeForMorph=function(e,t){let n=this.modelMatrix,i=this.polylines,o=i.length;for(let r=0;r<o;++r){let s=i[r],a=s._segments.positions,c=s._segments.lengths,u=a.length,f=0,h=0;for(let A=0;A<u;++A){let g;A===0?s._loop?g=a[u-2]:(g=Fde,d.subtract(a[0],a[1],g),d.add(a[0],g,g)):g=a[A-1],g=N.multiplyByPoint(n,g,qKe);let m=N.multiplyByPoint(n,a[A],YKe),_;A===u-1?s._loop?_=a[1]:(_=Fde,d.subtract(a[u-1],a[u-2],_),d.add(a[u-1],_,_)):_=a[A+1],_=N.multiplyByPoint(n,_,KKe);let y=c[f];A===h+y&&(h+=y,++f);let C=A-h===0,E=A===h+c[f]-1,I=C?2:0,b=E?2:4;for(let S=I;S<b;++S)ei.writeElements(m,e,t),ei.writeElements(g,e,t+6),ei.writeElements(_,e,t+12),t+=18}}};var XKe=new Array(1);sA.prototype.updateIndices=function(e,t,n,i){let o=n.length-1,r=new MY(0,i,this);n[o].push(r);let s=0,a=e[e.length-1],c=0;a.length>0&&(c=a[a.length-1]+1);let u=this.polylines,f=u.length;for(let h=0;h<f;++h){let A=u[h];A._locatorBuckets=[];let g;if(this.mode===ie.SCENE3D){g=XKe;let _=A._actualPositions.length;if(_>0)g[0]=_;else continue}else g=A._segments.lengths;let m=g.length;if(m>0){let _=0;for(let y=0;y<m;++y){let C=g[y]-1;for(let E=0;E<C;++E)c+4>D.SIXTY_FOUR_KILOBYTES&&(A._locatorBuckets.push({locator:r,count:_}),_=0,t.push(4),a=[],e.push(a),c=0,r.count=s,s=0,i=0,r=new MY(0,0,this),n[++o]=[r]),a.push(c,c+2,c+1),a.push(c+1,c+2,c+3),_+=6,s+=6,i+=6,c+=4}A._locatorBuckets.push({locator:r,count:_}),c+4>D.SIXTY_FOUR_KILOBYTES&&(t.push(0),a=[],e.push(a),c=0,r.count=s,i=0,s=0,r=new MY(0,0,this),n[++o]=[r])}A._clean()}return r.count=s,i};sA.prototype.getPolylineStartIndex=function(e){let t=this.polylines,n=0,i=t.length;for(let o=0;o<i;++o){let r=t[o];if(r===e)break;n+=r._actualLength}return n};var IT={positions:void 0,lengths:void 0},Qde=new Array(1),JKe=new d,ZKe=new Ae;sA.prototype.getSegments=function(e,t){let n=e._actualPositions;if(this.mode===ie.SCENE3D)return Qde[0]=n.length,IT.positions=n,IT.lengths=Qde,IT;jde(e)&&(n=e._segments.positions);let i=t.ellipsoid,o=[],r=this.modelMatrix,s=n.length,a,c=JKe;for(let u=0;u<s;++u)a=n[u],c=N.multiplyByPoint(r,a,c),o.push(t.project(i.cartesianToCartographic(c,ZKe)));if(o.length>0){e._boundingVolume2D=le.fromPoints(o,e._boundingVolume2D);let u=e._boundingVolume2D.center;e._boundingVolume2D.center=new d(u.z,u.x,u.y)}return IT.positions=o,IT.lengths=e._segments.lengths,IT};var kde;sA.prototype.writeUpdate=function(e,t,n,i){let o=this.mode,r=i.ellipsoid.maximumRadius*D.PI,s=t._actualLength;if(s){e+=this.getPolylineStartIndex(t);let a=kde,c=6*s*3;!l(a)||a.length<c?a=kde=new Float32Array(c):a.length>c&&(a=new Float32Array(a.buffer,0,c));let u=this.getSegments(t,i),f=u.positions,h=u.lengths,A=0,g=0,m=0,_;s=f.length;for(let y=0;y<s;++y){y===0?t._loop?_=f[s-2]:(_=pV,d.subtract(f[0],f[1],_),d.add(f[0],_,_)):_=f[y-1],d.clone(_,Ad),d.clone(f[y],Xs),y===s-1?t._loop?_=f[1]:(_=pV,d.subtract(f[s-1],f[s-2],_),d.add(f[s-1],_,_)):_=f[y+1],d.clone(_,pd);let C=h[g];y===m+C&&(m+=C,++g);let E=y-m===0,I=y===m+h[g]-1;o===ie.SCENE2D&&(Ad.z=0,Xs.z=0,pd.z=0),(o===ie.SCENE2D||o===ie.MORPHING)&&(E||I)&&r-Math.abs(Xs.x)<1&&((Xs.x<0&&Ad.x>0||Xs.x>0&&Ad.x<0)&&d.clone(Xs,Ad),(Xs.x<0&&pd.x>0||Xs.x>0&&pd.x<0)&&d.clone(Xs,pd));let b=E?2:0,S=I?2:4;for(let B=b;B<S;++B)ei.writeElements(Xs,a,A),ei.writeElements(Ad,a,A+6),ei.writeElements(pd,a,A+12),A+=18}n.copyFromArrayView(a,18*Float32Array.BYTES_PER_ELEMENT*e)}};var Uh=kh;function Ey(e){this._positions=e.positions,this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._rectangle=e.rectangle,this._minHeight=e.minimumHeight,this._maxHeight=e.maximumHeight,this._heightReference=e.heightReference,this._billboardCollection=new nf({batchTable:e.batchTable,scene:e.scene}),this._labelCollection=new rA({batchTable:e.batchTable,scene:e.scene}),this._polylineCollection=new Uh,this._polylineCollection._useHighlightColor=!0,this._packedBuffer=void 0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(Ey.prototype,{ready:{get:function(){return this._ready}},pointsLength:{get:function(){return this._billboardCollection.length}},texturesByteLength:{get:function(){let e=this._billboardCollection.sizeInBytes,t=this._labelCollection.sizeInBytes;return e+t}}});function $Ke(e,t){let n=e._rectangle,i=e._minHeight,o=e._maxHeight,r=2+ae.packedLength+te.packedLength,s=new Float64Array(r),a=0;return s[a++]=i,s[a++]=o,ae.pack(n,s,a),a+=ae.packedLength,te.pack(t,s,a),s}var e7e=new di("createVectorTilePoints",5),t7e=new d;function n7e(e,t){let n=e._positions,i=e._packedBuffer;l(i)||(n=e._positions=n.slice(),e._batchIds=e._batchIds.slice(),i=e._packedBuffer=$Ke(e,t));let o=[n.buffer,i.buffer],r={positions:n.buffer,packedBuffer:i.buffer},s=e7e.scheduleTask(r,o);if(l(s))return s.then(a=>{if(e.isDestroyed())return;e._positions=new Float64Array(a.positions);let c=e._billboardCollection,u=e._labelCollection,f=e._polylineCollection;n=e._positions;let h=e._batchIds,A=n.length/3,g=e._heightReference??Ze.NONE;for(let m=0;m<A;++m){let _=h[m],y=d.unpack(n,m*3,t7e),C=c.add();C.position=y,C._batchIndex=_,C.heightReference=g;let E=u.add();E.text=" ",E.position=y,E._batchIndex=_,E.heightReference=g;let I=f.add();I.positions=[d.clone(y),d.clone(y)]}e._positions=void 0,e._packedBuffer=void 0,e._ready=!0}).catch(a=>{e.isDestroyed()||(e._error=a)})}Ey.prototype.createFeatures=function(e,t){let n=this._billboardCollection,i=this._labelCollection,o=this._polylineCollection,r=this._batchIds,s=r.length;for(let a=0;a<s;++a){let c=r[a],u=n.get(a),f=i.get(a),h=o.get(a);t[c]=new tg(e,c,u,f,h)}};Ey.prototype.applyDebugSettings=function(e,t){e?(G.clone(t,this._billboardCollection._highlightColor),G.clone(t,this._labelCollection._highlightColor),G.clone(t,this._polylineCollection._highlightColor)):(G.clone(G.WHITE,this._billboardCollection._highlightColor),G.clone(G.WHITE,this._labelCollection._highlightColor),G.clone(G.WHITE,this._polylineCollection._highlightColor))};function i7e(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.pointSize=tg.defaultPointSize,s.color=tg.defaultColor,s.pointOutlineColor=tg.defaultPointOutlineColor,s.pointOutlineWidth=tg.defaultPointOutlineWidth,s.labelColor=G.WHITE,s.labelOutlineColor=G.WHITE,s.labelOutlineWidth=1,s.font="30px sans-serif",s.labelStyle=nr.FILL,s.labelText=void 0,s.backgroundColor=new G(.165,.165,.165,.8),s.backgroundPadding=new U(7,5),s.backgroundEnabled=!1,s.scaleByDistance=void 0,s.translucencyByDistance=void 0,s.distanceDisplayCondition=void 0,s.heightOffset=0,s.anchorLineEnabled=!1,s.anchorLineColor=G.WHITE,s.image=void 0,s.disableDepthTestDistance=0,s.horizontalOrigin=Ri.CENTER,s.verticalOrigin=zn.CENTER,s.labelHorizontalOrigin=Ri.RIGHT,s.labelVerticalOrigin=zn.BASELINE}}var o7e=new G,r7e=new G,s7e=new G,a7e=new G,c7e=new G,l7e=new G,SL=new jt,wL=new jt,FY=new Ut;Ey.prototype.applyStyle=function(e,t){if(!l(e)){i7e(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];if(l(e.show)&&(s.show=e.show.evaluate(s)),l(e.pointSize)&&(s.pointSize=e.pointSize.evaluate(s)),l(e.color)&&(s.color=e.color.evaluateColor(s,o7e)),l(e.pointOutlineColor)&&(s.pointOutlineColor=e.pointOutlineColor.evaluateColor(s,r7e)),l(e.pointOutlineWidth)&&(s.pointOutlineWidth=e.pointOutlineWidth.evaluate(s)),l(e.labelColor)&&(s.labelColor=e.labelColor.evaluateColor(s,s7e)),l(e.labelOutlineColor)&&(s.labelOutlineColor=e.labelOutlineColor.evaluateColor(s,a7e)),l(e.labelOutlineWidth)&&(s.labelOutlineWidth=e.labelOutlineWidth.evaluate(s)),l(e.font)&&(s.font=e.font.evaluate(s)),l(e.labelStyle)&&(s.labelStyle=e.labelStyle.evaluate(s)),l(e.labelText)?s.labelText=e.labelText.evaluate(s):s.labelText=void 0,l(e.backgroundColor)&&(s.backgroundColor=e.backgroundColor.evaluateColor(s,c7e)),l(e.backgroundPadding)&&(s.backgroundPadding=e.backgroundPadding.evaluate(s)),l(e.backgroundEnabled)&&(s.backgroundEnabled=e.backgroundEnabled.evaluate(s)),l(e.scaleByDistance)){let a=e.scaleByDistance.evaluate(s);l(a)?(SL.near=a.x,SL.nearValue=a.y,SL.far=a.z,SL.farValue=a.w,s.scaleByDistance=SL):s.scaleByDistance=void 0}else s.scaleByDistance=void 0;if(l(e.translucencyByDistance)){let a=e.translucencyByDistance.evaluate(s);l(a)?(wL.near=a.x,wL.nearValue=a.y,wL.far=a.z,wL.farValue=a.w,s.translucencyByDistance=wL):s.translucencyByDistance=void 0}else s.translucencyByDistance=void 0;if(l(e.distanceDisplayCondition)){let a=e.distanceDisplayCondition.evaluate(s);l(a)?(FY.near=a.x,FY.far=a.y,s.distanceDisplayCondition=FY):s.distanceDisplayCondition=void 0}else s.distanceDisplayCondition=void 0;l(e.heightOffset)&&(s.heightOffset=e.heightOffset.evaluate(s)),l(e.anchorLineEnabled)&&(s.anchorLineEnabled=e.anchorLineEnabled.evaluate(s)),l(e.anchorLineColor)&&(s.anchorLineColor=e.anchorLineColor.evaluateColor(s,l7e)),l(e.image)?s.image=e.image.evaluate(s):s.image=void 0,l(e.disableDepthTestDistance)&&(s.disableDepthTestDistance=e.disableDepthTestDistance.evaluate(s)),l(e.horizontalOrigin)&&(s.horizontalOrigin=e.horizontalOrigin.evaluate(s)),l(e.verticalOrigin)&&(s.verticalOrigin=e.verticalOrigin.evaluate(s)),l(e.labelHorizontalOrigin)&&(s.labelHorizontalOrigin=e.labelHorizontalOrigin.evaluate(s)),l(e.labelVerticalOrigin)&&(s.labelVerticalOrigin=e.labelVerticalOrigin.evaluate(s))}};Ey.prototype.update=function(e){if(!this._ready&&(l(this._promise)||(this._promise=n7e(this,e.mapProjection.ellipsoid)),l(this._error))){let t=this._error;throw this._error=void 0,t}this._polylineCollection.update(e),this._billboardCollection.update(e),this._labelCollection.update(e)};Ey.prototype.isDestroyed=function(){return!1};Ey.prototype.destroy=function(){return this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),this._labelCollection=this._labelCollection&&this._labelCollection.destroy(),this._polylineCollection=this._polylineCollection&&this._polylineCollection.destroy(),ue(this)};var BL=Ey;function og(e){this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._positions=e.positions,this._counts=e.counts,this._indices=e.indices,this._indexCounts=e.indexCounts,this._indexOffsets=void 0,this._batchTableColors=void 0,this._packedBuffer=void 0,this._batchedPositions=void 0,this._transferrableBatchIds=void 0,this._vertexBatchIds=void 0,this._ellipsoid=e.ellipsoid??te.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._polygonMinimumHeights=e.polygonMinimumHeights,this._polygonMaximumHeights=e.polygonMaximumHeights,this._center=e.center??d.ZERO,this._rectangle=e.rectangle,this._center=void 0,this._boundingVolume=e.boundingVolume,this._boundingVolumes=void 0,this._batchedIndices=void 0,this._ready=!1,this._promise=void 0,this._error=void 0,this._primitive=void 0,this.debugWireframe=!1,this.forceRebatch=!1,this.classificationType=Jn.BOTH}Object.defineProperties(og.prototype,{trianglesLength:{get:function(){return l(this._primitive)?this._primitive.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._primitive)?this._primitive.geometryByteLength:0}},ready:{get:function(){return this._ready}}});function u7e(e){let t=new Float64Array(3+d.packedLength+te.packedLength+ae.packedLength),n=0;return t[n++]=e._indices.BYTES_PER_ELEMENT,t[n++]=e._minimumHeight,t[n++]=e._maximumHeight,d.pack(e._center,t,n),n+=d.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,ae.pack(e._rectangle,t,n),t}function f7e(e,t){let n=1,i=t[n++],o=e._boundingVolumes=new Array(i);for(let a=0;a<i;++a)o[a]=Fn.unpack(t,n),n+=Fn.packedLength;let r=t[n++],s=e._batchedIndices=new Array(r);for(let a=0;a<r;++a){let c=G.unpack(t,n);n+=G.packedLength;let u=t[n++],f=t[n++],h=t[n++],A=new Array(h);for(let g=0;g<h;++g)A[g]=t[n++];s[a]=new Wm({color:c,offset:u,count:f,batchIds:A})}}var d7e=new di("createVectorTilePolygons",5),h7e=new G;function m7e(e){if(l(e._primitive))return;let t=e._positions,n=e._counts,i=e._indexCounts,o=e._indices,r=e._transferrableBatchIds,s=e._batchTableColors,a=e._packedBuffer;if(!l(s)){t=e._positions=e._positions.slice(),n=e._counts=e._counts.slice(),i=e._indexCounts=e._indexCounts.slice(),o=e._indices=e._indices.slice(),e._center=e._ellipsoid.cartographicToCartesian(ae.center(e._rectangle)),r=e._transferrableBatchIds=new Uint32Array(e._batchIds),s=e._batchTableColors=new Uint32Array(r.length);let g=e._batchTable,m=s.length;for(let _=0;_<m;++_){let y=g.getColor(_,h7e);s[_]=y.toRgba()}a=e._packedBuffer=u7e(e)}let c=[t.buffer,n.buffer,i.buffer,o.buffer,r.buffer,s.buffer,a.buffer],u={packedBuffer:a.buffer,positions:t.buffer,counts:n.buffer,indexCounts:i.buffer,indices:o.buffer,batchIds:r.buffer,batchTableColors:s.buffer},f=e._polygonMinimumHeights,h=e._polygonMaximumHeights;l(f)&&l(h)&&(f=f.slice(),h=h.slice(),c.push(f.buffer,h.buffer),u.minimumHeights=f,u.maximumHeights=h);let A=d7e.scheduleTask(u,c);if(l(A))return A.then(g=>{if(e.isDestroyed())return;e._positions=void 0,e._counts=void 0,e._polygonMinimumHeights=void 0,e._polygonMaximumHeights=void 0;let m=new Float64Array(g.packedBuffer),_=m[0];f7e(e,m),e._indices=Oe.getSizeInBytes(_)===2?new Uint16Array(g.indices):new Uint32Array(g.indices),e._indexOffsets=new Uint32Array(g.indexOffsets),e._indexCounts=new Uint32Array(g.indexCounts),e._batchedPositions=new Float32Array(g.positions),e._vertexBatchIds=new Uint16Array(g.batchIds),A7e(e),e._ready=!0}).catch(g=>{e.isDestroyed()||(e._error=g)})}function A7e(e){l(e._primitive)||(e._primitive=new NE({batchTable:e._batchTable,positions:e._batchedPositions,batchIds:e._batchIds,vertexBatchIds:e._vertexBatchIds,indices:e._indices,indexOffsets:e._indexOffsets,indexCounts:e._indexCounts,batchedIndices:e._batchedIndices,boundingVolume:e._boundingVolume,boundingVolumes:e._boundingVolumes,center:e._center}),e._batchTable=void 0,e._batchIds=void 0,e._positions=void 0,e._counts=void 0,e._indices=void 0,e._indexCounts=void 0,e._indexOffsets=void 0,e._batchTableColors=void 0,e._packedBuffer=void 0,e._batchedPositions=void 0,e._transferrableBatchIds=void 0,e._vertexBatchIds=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._polygonMinimumHeights=void 0,e._polygonMaximumHeights=void 0,e._center=void 0,e._rectangle=void 0,e._boundingVolume=void 0,e._boundingVolumes=void 0,e._batchedIndices=void 0)}og.prototype.createFeatures=function(e,t){this._primitive.createFeatures(e,t)};og.prototype.applyDebugSettings=function(e,t){this._primitive.applyDebugSettings(e,t)};og.prototype.applyStyle=function(e,t){this._primitive.applyStyle(e,t)};og.prototype.updateCommands=function(e,t){this._primitive.updateCommands(e,t)};og.prototype.update=function(e){if(!this._ready){if(l(this._promise)||(this._promise=m7e(this)),l(this._error)){let t=this._error;throw this._error=void 0,t}return}this._primitive.debugWireframe=this.debugWireframe,this._primitive.forceRebatch=this.forceRebatch,this._primitive.classificationType=this.classificationType,this._primitive.update(e)};og.prototype.isDestroyed=function(){return!1};og.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};var DL=og;var vL=`in vec4 currentPosition; +in vec4 previousPosition; +in vec4 nextPosition; +in vec2 expandAndWidth; +in float a_batchId; + +uniform mat4 u_modifiedModelView; + +void main() +{ + float expandDir = expandAndWidth.x; + float width = abs(expandAndWidth.y) + 0.5; + bool usePrev = expandAndWidth.y < 0.0; + + vec4 p = u_modifiedModelView * currentPosition; + vec4 prev = u_modifiedModelView * previousPosition; + vec4 next = u_modifiedModelView * nextPosition; + + float angle; + vec4 positionWC = getPolylineWindowCoordinatesEC(p, prev, next, expandDir, width, usePrev, angle); + gl_Position = czm_viewportOrthographic * positionWC; +} +`;function Gh(e){this._positions=e.positions,this._widths=e.widths,this._counts=e.counts,this._batchIds=e.batchIds,this._ellipsoid=e.ellipsoid??te.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._center=e.center,this._rectangle=e.rectangle,this._boundingVolume=e.boundingVolume,this._batchTable=e.batchTable,this._va=void 0,this._sp=void 0,this._rs=void 0,this._uniformMap=void 0,this._command=void 0,this._transferrableBatchIds=void 0,this._packedBuffer=void 0,this._keepDecodedPositions=e.keepDecodedPositions,this._decodedPositions=void 0,this._decodedPositionOffsets=void 0,this._currentPositions=void 0,this._previousPositions=void 0,this._nextPositions=void 0,this._expandAndWidth=void 0,this._vertexBatchIds=void 0,this._indices=void 0,this._constantColor=G.clone(G.WHITE),this._highlightColor=this._constantColor,this._trianglesLength=0,this._geometryByteLength=0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(Gh.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}}});function p7e(e){let t=e._rectangle,n=e._minimumHeight,i=e._maximumHeight,o=e._ellipsoid,r=e._center,s=2+ae.packedLength+te.packedLength+d.packedLength,a=new Float64Array(s),c=0;return a[c++]=n,a[c++]=i,ae.pack(t,a,c),c+=ae.packedLength,te.pack(o,a,c),c+=te.packedLength,d.pack(r,a,c),a}var g7e=new di("createVectorTilePolylines",5),xT={previousPosition:0,currentPosition:1,nextPosition:2,expandAndWidth:3,a_batchId:4};function _7e(e,t){if(l(e._va))return;let n=e._positions,i=e._widths,o=e._counts,r=e._transferrableBatchIds,s=e._packedBuffer;l(s)||(n=e._positions=n.slice(),i=e._widths=i.slice(),o=e._counts=o.slice(),r=e._transferrableBatchIds=e._batchIds.slice(),s=e._packedBuffer=p7e(e));let a=[n.buffer,i.buffer,o.buffer,r.buffer,s.buffer],c={positions:n.buffer,widths:i.buffer,counts:o.buffer,batchIds:r.buffer,packedBuffer:s.buffer,keepDecodedPositions:e._keepDecodedPositions},u=g7e.scheduleTask(c,a);if(l(u))return u.then(function(f){if(e.isDestroyed())return;e._keepDecodedPositions&&(e._decodedPositions=new Float64Array(f.decodedPositions),e._decodedPositionOffsets=new Uint32Array(f.decodedPositionOffsets)),e._currentPositions=new Float32Array(f.currentPositions),e._previousPositions=new Float32Array(f.previousPositions),e._nextPositions=new Float32Array(f.nextPositions),e._expandAndWidth=new Float32Array(f.expandAndWidth),e._vertexBatchIds=new Uint16Array(f.batchIds);let h=f.indexDatatype;e._indices=h===Oe.UNSIGNED_SHORT?new Uint16Array(f.indices):new Uint32Array(f.indices),y7e(e,t),e._ready=!0}).catch(f=>{e.isDestroyed()||(e._error=f)})}function y7e(e,t){if(!l(e._va)){let n=e._currentPositions,i=e._previousPositions,o=e._nextPositions,r=e._expandAndWidth,s=e._vertexBatchIds,a=e._indices,c=i.byteLength+n.byteLength+o.byteLength;c+=r.byteLength+s.byteLength+a.byteLength,e._trianglesLength=a.length/3,e._geometryByteLength=c;let u=Ct.createVertexBuffer({context:t,typedArray:i,usage:Qe.STATIC_DRAW}),f=Ct.createVertexBuffer({context:t,typedArray:n,usage:Qe.STATIC_DRAW}),h=Ct.createVertexBuffer({context:t,typedArray:o,usage:Qe.STATIC_DRAW}),A=Ct.createVertexBuffer({context:t,typedArray:r,usage:Qe.STATIC_DRAW}),g=Ct.createVertexBuffer({context:t,typedArray:s,usage:Qe.STATIC_DRAW}),m=Ct.createIndexBuffer({context:t,typedArray:a,usage:Qe.STATIC_DRAW,indexDatatype:a.BYTES_PER_ELEMENT===2?Oe.UNSIGNED_SHORT:Oe.UNSIGNED_INT}),_=[{index:xT.previousPosition,vertexBuffer:u,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:xT.currentPosition,vertexBuffer:f,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:xT.nextPosition,vertexBuffer:h,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:xT.expandAndWidth,vertexBuffer:A,componentDatatype:q.FLOAT,componentsPerAttribute:2},{index:xT.a_batchId,vertexBuffer:g,componentDatatype:q.UNSIGNED_SHORT,componentsPerAttribute:1}];e._va=new li({context:t,attributes:_,indexBuffer:m}),e._positions=void 0,e._widths=void 0,e._counts=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._rectangle=void 0,e._transferrableBatchIds=void 0,e._packedBuffer=void 0,e._currentPositions=void 0,e._previousPositions=void 0,e._nextPositions=void 0,e._expandAndWidth=void 0,e._vertexBatchIds=void 0,e._indices=void 0}}var PL=new N,Yde=new d;function C7e(e,t){l(e._uniformMap)||(e._uniformMap={u_modifiedModelView:function(){let n=t.uniformState.view;return N.clone(n,PL),N.multiplyByPoint(PL,e._center,Yde),N.setTranslation(PL,Yde,PL),PL},u_highlightColor:function(){return e._highlightColor}})}function E7e(e){if(l(e._rs))return;let t={enabled:!0,factor:-5,units:-5};e._rs=Ue.fromCache({blending:pn.ALPHA_BLEND,depthMask:!1,depthTest:{enabled:!0},polygonOffset:t})}var I7e=`uniform vec4 u_highlightColor; +void main() +{ + out_FragColor = u_highlightColor; +} +`;function x7e(e,t){if(l(e._sp))return;let n=e._batchTable,i=n.getVertexShaderCallback(!1,"a_batchId",void 0)(vL),o=n.getFragmentShaderCallback(!1,void 0,!1)(I7e),r=new He({defines:["VECTOR_TILE",Wt.isInternetExplorer()?"":"CLIP_POLYLINE"],sources:[zu,i]}),s=new He({defines:["VECTOR_TILE"],sources:[o]});e._sp=an.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:xT})}function b7e(e,t){if(!l(e._command)){let n=e._batchTable.getUniformMapCallback()(e._uniformMap);e._command=new nt({owner:e,vertexArray:e._va,renderState:e._rs,shaderProgram:e._sp,uniformMap:n,boundingVolume:e._boundingVolume,pass:Be.TRANSLUCENT,pickId:e._batchTable.getPickId()})}t.commandList.push(e._command)}Gh.getPolylinePositions=function(e,t){let n=e._batchIds,i=e._decodedPositions,o=e._decodedPositionOffsets;if(!l(n)||!l(i))return;let r,s,a=n.length,c=0,u=0;for(r=0;r<a;++r)n[r]===t&&(c+=o[r+1]-o[r]);if(c===0)return;let f=new Float64Array(c*3);for(r=0;r<a;++r)if(n[r]===t){let h=o[r],A=o[r+1]-h;for(s=0;s<A;++s){let g=(h+s)*3;f[u++]=i[g],f[u++]=i[g+1],f[u++]=i[g+2]}}return f};Gh.prototype.getPositions=function(e){return Gh.getPolylinePositions(this,e)};Gh.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new ha(e,r)}};Gh.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function T7e(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.color=G.WHITE}}var S7e=new G,w7e=G.WHITE,B7e=!0;Gh.prototype.applyStyle=function(e,t){if(!l(e)){T7e(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.color=l(e.color)?e.color.evaluateColor(s,S7e):w7e,s.show=l(e.show)?e.show.evaluate(s):B7e}};Gh.prototype.update=function(e){let t=e.context;if(!this._ready){if(l(this._promise)||(this._promise=_7e(this,t)),l(this._error)){let i=this._error;throw this._error=void 0,i}return}C7e(this,t),x7e(this,t),E7e(this);let n=e.passes;(n.render||n.pick)&&b7e(this,e)};Gh.prototype.isDestroyed=function(){return!1};Gh.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),ue(this)};var I0=Gh;var RL=`in vec3 startEllipsoidNormal; +in vec3 endEllipsoidNormal; +in vec4 startPositionAndHeight; +in vec4 endPositionAndHeight; +in vec4 startFaceNormalAndVertexCorner; +in vec4 endFaceNormalAndHalfWidth; +in float a_batchId; + +uniform mat4 u_modifiedModelView; +uniform vec2 u_minimumMaximumVectorHeights; + +out vec4 v_startPlaneEC; +out vec4 v_endPlaneEC; +out vec4 v_rightPlaneEC; +out float v_halfWidth; +out vec3 v_volumeUpEC; + +void main() +{ + // vertex corner IDs + // 3-----------7 + // /| left /| + // / | 1 / | + // 2-----------6 5 end + // | / | / + // start |/ right |/ + // 0-----------4 + // + float isEnd = floor(startFaceNormalAndVertexCorner.w * 0.251); // 0 for front, 1 for end + float isTop = floor(startFaceNormalAndVertexCorner.w * mix(0.51, 0.19, isEnd)); // 0 for bottom, 1 for top + + vec3 forward = endPositionAndHeight.xyz - startPositionAndHeight.xyz; + vec3 right = normalize(cross(forward, startEllipsoidNormal)); + + vec4 position = vec4(startPositionAndHeight.xyz, 1.0); + position.xyz += forward * isEnd; + + v_volumeUpEC = czm_normal * normalize(cross(right, forward)); + + // Push for volume height + float offset; + vec3 ellipsoidNormal = mix(startEllipsoidNormal, endEllipsoidNormal, isEnd); + + // offset height to create volume + offset = mix(startPositionAndHeight.w, endPositionAndHeight.w, isEnd); + offset = mix(u_minimumMaximumVectorHeights.y, u_minimumMaximumVectorHeights.x, isTop) - offset; + position.xyz += offset * ellipsoidNormal; + + // move from RTC to EC + position = u_modifiedModelView * position; + right = czm_normal * right; + + // Push for width in a direction that is in the start or end plane and in a plane with right + // N = normalEC ("right-facing" direction for push) + // R = right + // p = angle between N and R + // w = distance to push along R if R == N + // d = distance to push along N + // + // N R + // { p| } * cos(p) = dot(N, R) = w / d + // d | |w * d = w / dot(N, R) + // { | } + // o---------- polyline segment ----> + // + vec3 scratchNormal = mix(-startFaceNormalAndVertexCorner.xyz, endFaceNormalAndHalfWidth.xyz, isEnd); + scratchNormal = cross(scratchNormal, mix(startEllipsoidNormal, endEllipsoidNormal, isEnd)); + vec3 miterPushNormal = czm_normal * normalize(scratchNormal); + + offset = 2.0 * endFaceNormalAndHalfWidth.w * max(0.0, czm_metersPerPixel(position)); // offset = widthEC + offset = offset / dot(miterPushNormal, right); + position.xyz += miterPushNormal * (offset * sign(0.5 - mod(startFaceNormalAndVertexCorner.w, 2.0))); + + gl_Position = czm_depthClamp(czm_projection * position); + + position = u_modifiedModelView * vec4(startPositionAndHeight.xyz, 1.0); + vec3 startNormalEC = czm_normal * startFaceNormalAndVertexCorner.xyz; + v_startPlaneEC = vec4(startNormalEC, -dot(startNormalEC, position.xyz)); + v_rightPlaneEC = vec4(right, -dot(right, position.xyz)); + + position = u_modifiedModelView * vec4(endPositionAndHeight.xyz, 1.0); + vec3 endNormalEC = czm_normal * endFaceNormalAndHalfWidth.xyz; + v_endPlaneEC = vec4(endNormalEC, -dot(endNormalEC, position.xyz)); + v_halfWidth = endFaceNormalAndHalfWidth.w; +} +`;var ML=`in vec4 v_startPlaneEC; +in vec4 v_endPlaneEC; +in vec4 v_rightPlaneEC; +in float v_halfWidth; +in vec3 v_volumeUpEC; + +uniform vec4 u_highlightColor; +void main() +{ + float logDepthOrDepth = czm_branchFreeTernary(czm_sceneMode == czm_sceneMode2D, gl_FragCoord.z, czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw))); + + // Discard for sky + if (logDepthOrDepth == 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(0.0, 0.0, 1.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + eyeCoordinate /= eyeCoordinate.w; + + float halfMaxWidth = v_halfWidth * czm_metersPerPixel(eyeCoordinate); + + // Expand halfMaxWidth if direction to camera is almost perpendicular with the volume's up direction + halfMaxWidth += halfMaxWidth * (1.0 - dot(-normalize(eyeCoordinate.xyz), v_volumeUpEC)); + + // Check distance of the eye coordinate against the right-facing plane + float widthwiseDistance = czm_planeDistance(v_rightPlaneEC, eyeCoordinate.xyz); + + // Check eye coordinate against the mitering planes + float distanceFromStart = czm_planeDistance(v_startPlaneEC, eyeCoordinate.xyz); + float distanceFromEnd = czm_planeDistance(v_endPlaneEC, eyeCoordinate.xyz); + + if (abs(widthwiseDistance) > halfMaxWidth || distanceFromStart < 0.0 || distanceFromEnd < 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(logDepthOrDepth, 0.0, 0.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + out_FragColor = u_highlightColor; + + czm_writeDepthClamp(); +} +`;function rg(e){this._positions=e.positions,this._widths=e.widths,this._counts=e.counts,this._batchIds=e.batchIds,this._ellipsoid=e.ellipsoid??te.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._center=e.center,this._rectangle=e.rectangle,this._batchTable=e.batchTable,this._va=void 0,this._sp=void 0,this._rs=void 0,this._uniformMap=void 0,this._command=void 0,this._transferrableBatchIds=void 0,this._packedBuffer=void 0,this._minimumMaximumVectorHeights=new U(Ti._defaultMinTerrainHeight,Ti._defaultMaxTerrainHeight),this._boundingVolume=Fn.fromRectangle(e.rectangle,Ti._defaultMinTerrainHeight,Ti._defaultMaxTerrainHeight,this._ellipsoid),this._classificationType=e.classificationType,this._keepDecodedPositions=e.keepDecodedPositions,this._decodedPositions=void 0,this._decodedPositionOffsets=void 0,this._startEllipsoidNormals=void 0,this._endEllipsoidNormals=void 0,this._startPositionAndHeights=void 0,this._startFaceNormalAndVertexCornerIds=void 0,this._endPositionAndHeights=void 0,this._endFaceNormalAndHalfWidths=void 0,this._vertexBatchIds=void 0,this._indices=void 0,this._constantColor=G.clone(G.WHITE),this._highlightColor=this._constantColor,this._trianglesLength=0,this._geometryByteLength=0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(rg.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}}});function D7e(e,t,n){let i=Ti.getMinimumMaximumHeights(t,n),o=i.minimumTerrainHeight,r=i.maximumTerrainHeight,s=e._minimumMaximumVectorHeights;s.x=o,s.y=r;let a=e._boundingVolume,c=e._rectangle;Fn.fromRectangle(c,o,r,n,a)}function v7e(e){let t=e._rectangle,n=e._minimumHeight,i=e._maximumHeight,o=e._ellipsoid,r=e._center,s=2+ae.packedLength+te.packedLength+d.packedLength,a=new Float64Array(s),c=0;return a[c++]=n,a[c++]=i,ae.pack(t,a,c),c+=ae.packedLength,te.pack(o,a,c),c+=te.packedLength,d.pack(r,a,c),a}var P7e=new di("createVectorTileClampedPolylines"),Iy={startEllipsoidNormal:0,endEllipsoidNormal:1,startPositionAndHeight:2,endPositionAndHeight:3,startFaceNormalAndVertexCorner:4,endFaceNormalAndHalfWidth:5,a_batchId:6};function R7e(e,t){if(l(e._va))return;let n=e._positions,i=e._widths,o=e._counts,r=e._transferrableBatchIds,s=e._packedBuffer;l(s)||(n=e._positions=n.slice(),i=e._widths=i.slice(),o=e._counts=o.slice(),r=e._transferrableBatchIds=e._batchIds.slice(),s=e._packedBuffer=v7e(e));let a=[n.buffer,i.buffer,o.buffer,r.buffer,s.buffer],c={positions:n.buffer,widths:i.buffer,counts:o.buffer,batchIds:r.buffer,packedBuffer:s.buffer,keepDecodedPositions:e._keepDecodedPositions},u=P7e.scheduleTask(c,a);if(l(u))return u.then(function(f){if(e.isDestroyed())return;e._keepDecodedPositions&&(e._decodedPositions=new Float64Array(f.decodedPositions),e._decodedPositionOffsets=new Uint32Array(f.decodedPositionOffsets)),e._startEllipsoidNormals=new Float32Array(f.startEllipsoidNormals),e._endEllipsoidNormals=new Float32Array(f.endEllipsoidNormals),e._startPositionAndHeights=new Float32Array(f.startPositionAndHeights),e._startFaceNormalAndVertexCornerIds=new Float32Array(f.startFaceNormalAndVertexCornerIds),e._endPositionAndHeights=new Float32Array(f.endPositionAndHeights),e._endFaceNormalAndHalfWidths=new Float32Array(f.endFaceNormalAndHalfWidths),e._vertexBatchIds=new Uint16Array(f.vertexBatchIds);let h=f.indexDatatype;e._indices=h===Oe.UNSIGNED_SHORT?new Uint16Array(f.indices):new Uint32Array(f.indices),M7e(e,t),e._ready=!0}).catch(f=>{e.isDestroyed()||(e._error=f)})}function M7e(e,t){if(!l(e._va)){let n=e._startEllipsoidNormals,i=e._endEllipsoidNormals,o=e._startPositionAndHeights,r=e._endPositionAndHeights,s=e._startFaceNormalAndVertexCornerIds,a=e._endFaceNormalAndHalfWidths,c=e._vertexBatchIds,u=e._indices,f=n.byteLength+i.byteLength;f+=o.byteLength+r.byteLength,f+=s.byteLength+a.byteLength,f+=c.byteLength+u.byteLength,e._trianglesLength=u.length/3,e._geometryByteLength=f;let h=Ct.createVertexBuffer({context:t,typedArray:n,usage:Qe.STATIC_DRAW}),A=Ct.createVertexBuffer({context:t,typedArray:i,usage:Qe.STATIC_DRAW}),g=Ct.createVertexBuffer({context:t,typedArray:o,usage:Qe.STATIC_DRAW}),m=Ct.createVertexBuffer({context:t,typedArray:r,usage:Qe.STATIC_DRAW}),_=Ct.createVertexBuffer({context:t,typedArray:s,usage:Qe.STATIC_DRAW}),y=Ct.createVertexBuffer({context:t,typedArray:a,usage:Qe.STATIC_DRAW}),C=Ct.createVertexBuffer({context:t,typedArray:c,usage:Qe.STATIC_DRAW}),E=Ct.createIndexBuffer({context:t,typedArray:u,usage:Qe.STATIC_DRAW,indexDatatype:u.BYTES_PER_ELEMENT===2?Oe.UNSIGNED_SHORT:Oe.UNSIGNED_INT}),I=[{index:Iy.startEllipsoidNormal,vertexBuffer:h,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:Iy.endEllipsoidNormal,vertexBuffer:A,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:Iy.startPositionAndHeight,vertexBuffer:g,componentDatatype:q.FLOAT,componentsPerAttribute:4},{index:Iy.endPositionAndHeight,vertexBuffer:m,componentDatatype:q.FLOAT,componentsPerAttribute:4},{index:Iy.startFaceNormalAndVertexCorner,vertexBuffer:_,componentDatatype:q.FLOAT,componentsPerAttribute:4},{index:Iy.endFaceNormalAndHalfWidth,vertexBuffer:y,componentDatatype:q.FLOAT,componentsPerAttribute:4},{index:Iy.a_batchId,vertexBuffer:C,componentDatatype:q.UNSIGNED_SHORT,componentsPerAttribute:1}];e._va=new li({context:t,attributes:I,indexBuffer:E}),e._positions=void 0,e._widths=void 0,e._counts=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._rectangle=void 0,e._transferrableBatchIds=void 0,e._packedBuffer=void 0,e._startEllipsoidNormals=void 0,e._endEllipsoidNormals=void 0,e._startPositionAndHeights=void 0,e._startFaceNormalAndVertexCornerIds=void 0,e._endPositionAndHeights=void 0,e._endFaceNormalAndHalfWidths=void 0,e._vertexBatchIds=void 0,e._indices=void 0}}var NL=new N,qde=new d;function N7e(e,t){l(e._uniformMap)||(e._uniformMap={u_modifiedModelView:function(){let n=t.uniformState.view;return N.clone(n,NL),N.multiplyByPoint(NL,e._center,qde),N.setTranslation(NL,qde,NL),NL},u_highlightColor:function(){return e._highlightColor},u_minimumMaximumVectorHeights:function(){return e._minimumMaximumVectorHeights}})}function Kde(e){return Ue.fromCache({cull:{enabled:!0,face:Mi.FRONT},blending:pn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1,stencilTest:{enabled:e,frontFunction:Zn.EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.EQUAL,backOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK}})}function L7e(e){l(e._rs)||(e._rs=Kde(!1),e._rs3DTiles=Kde(!0))}function O7e(e,t){if(l(e._sp))return;let n=e._batchTable,i=n.getVertexShaderCallback(!1,"a_batchId",void 0)(RL),o=n.getFragmentShaderCallback(!1,void 0,!0)(ML),r=new He({defines:["VECTOR_TILE",Wt.isInternetExplorer()?"":"CLIP_POLYLINE"],sources:[zu,i]}),s=new He({defines:["VECTOR_TILE"],sources:[o]});e._sp=an.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:Iy})}function F7e(e,t){let n=e._command;if(!l(e._command)){let o=e._batchTable.getUniformMapCallback()(e._uniformMap);n=e._command=new nt({owner:e,vertexArray:e._va,renderState:e._rs,shaderProgram:e._sp,uniformMap:o,boundingVolume:e._boundingVolume,pass:Be.TERRAIN_CLASSIFICATION,pickId:e._batchTable.getPickId()});let r=nt.shallowClone(n,n.derivedCommands.tileset);r.renderState=e._rs3DTiles,r.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,n.derivedCommands.tileset=r}let i=e._classificationType;(i===Jn.TERRAIN||i===Jn.BOTH)&&t.commandList.push(n),(i===Jn.CESIUM_3D_TILE||i===Jn.BOTH)&&t.commandList.push(n.derivedCommands.tileset)}rg.prototype.getPositions=function(e){return I0.getPolylinePositions(this,e)};rg.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new ha(e,r)}};rg.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function Q7e(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.color=G.WHITE}}var k7e=new G,U7e=G.WHITE,G7e=!0;rg.prototype.applyStyle=function(e,t){if(!l(e)){Q7e(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.color=l(e.color)?e.color.evaluateColor(s,k7e):U7e,s.show=l(e.show)?e.show.evaluate(s):G7e}};function z7e(e){return Ti.initialize().then(function(){D7e(e,e._rectangle,e._ellipsoid)}).catch(t=>{e.isDestroyed()||(e._error=t)})}rg.prototype.update=function(e){let t=e.context;if(!this._ready){if(l(this._promise)||(this._promise=z7e(this).then(R7e(this,t))),l(this._error)){let i=this._error;throw this._error=void 0,i}return}N7e(this,t),O7e(this,t),L7e(this);let n=e.passes;(n.render||n.pick)&&F7e(this,e)};rg.prototype.isDestroyed=function(){return!1};rg.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),ue(this)};var LL=rg;var QY=32767,V7e=new Ae,H7e=new d;function W7e(e,t,n,i,o){let r=e.length/3,s=e.subarray(0,r),a=e.subarray(r,2*r),c=e.subarray(2*r,3*r);On.zigZagDeltaDecode(s,a,c);let u=new Float64Array(e.length);for(let f=0;f<r;++f){let h=s[f],A=a[f],g=c[f],m=D.lerp(t.west,t.east,h/QY),_=D.lerp(t.south,t.north,A/QY),y=D.lerp(n,i,g/QY),C=Ae.fromRadians(m,_,y,V7e),E=o.cartographicToCartesian(C,H7e);d.pack(E,u,f*3)}return u}var OL=W7e;function Vh(e,t,n,i,o){this._tileset=e,this._tile=t,this._resource=n,this._polygons=void 0,this._polylines=void 0,this._points=void 0,this._metadata=void 0,this._batchTable=void 0,this._features=void 0,this.featurePropertiesDirty=!1,this._group=void 0,this._ready=!1,X7e(this,i,o)}Object.defineProperties(Vh.prototype,{featuresLength:{get:function(){return l(this._batchTable)?this._batchTable.featuresLength:0}},pointsLength:{get:function(){return l(this._points)?this._points.pointsLength:0}},trianglesLength:{get:function(){let e=0;return l(this._polygons)&&(e+=this._polygons.trianglesLength),l(this._polylines)&&(e+=this._polylines.trianglesLength),e}},geometryByteLength:{get:function(){let e=0;return l(this._polygons)&&(e+=this._polygons.geometryByteLength),l(this._polylines)&&(e+=this._polylines.geometryByteLength),e}},texturesByteLength:{get:function(){return l(this._points)?this._points.texturesByteLength:0}},batchTableByteLength:{get:function(){return l(this._batchTable)?this._batchTable.batchTableByteLength:0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},batchTable:{get:function(){return this._batchTable}},group:{get:function(){return this._group},set:function(e){this._group=e}}});function j7e(e){return function(t,n){l(e._polygons)&&e._polygons.updateCommands(t,n)}}function Y7e(e,t){let n,i,o,r,s=e.POLYGONS_LENGTH??0,a=e.POLYLINES_LENGTH??0,c=e.POINTS_LENGTH??0;if(s>0&&l(e.POLYGON_BATCH_IDS)){let A=t.byteOffset+e.POLYGON_BATCH_IDS.byteOffset;n=new Uint16Array(t.buffer,A,s)}if(a>0&&l(e.POLYLINE_BATCH_IDS)){let A=t.byteOffset+e.POLYLINE_BATCH_IDS.byteOffset;i=new Uint16Array(t.buffer,A,a)}if(c>0&&l(e.POINT_BATCH_IDS)){let A=t.byteOffset+e.POINT_BATCH_IDS.byteOffset;o=new Uint16Array(t.buffer,A,c)}let u=l(n)||l(i)||l(o),f=s>0&&!l(n)||a>0&&!l(i)||c>0&&!l(o);if(u&&f)throw new ce("If one group of batch ids is defined, then all batch ids must be defined");if(!l(n)&&!l(i)&&!l(o)){let A=0;if(!l(n)&&s>0)for(n=new Uint16Array(s),r=0;r<s;++r)n[r]=A++;if(!l(i)&&a>0)for(i=new Uint16Array(a),r=0;r<a;++r)i[r]=A++;if(!l(o)&&c>0)for(o=new Uint16Array(c),r=0;r<c;++r)o[r]=A++}return{polygons:n,polylines:i,points:o}}var zh=Uint32Array.BYTES_PER_ELEMENT;function q7e(e){return new I0(e)}function K7e(e){return new LL(e)}function X7e(e,t,n){n=n??0;let i=new Uint8Array(t),o=new DataView(t);n+=zh;let r=o.getUint32(n,!0);if(r!==1)throw new ce(`Only Vector tile version 1 is supported. Version ${r} is not.`);n+=zh;let s=o.getUint32(n,!0);if(n+=zh,s===0){e._ready=!0;return}let a=o.getUint32(n,!0);if(n+=zh,a===0)throw new ce("Feature table must have a byte length greater than zero");let c=o.getUint32(n,!0);n+=zh;let u=o.getUint32(n,!0);n+=zh;let f=o.getUint32(n,!0);n+=zh;let h=o.getUint32(n,!0);n+=zh;let A=o.getUint32(n,!0);n+=zh;let g=o.getUint32(n,!0);n+=zh;let m=o.getUint32(n,!0);n+=zh;let _=dr(i,n,a);n+=a;let y=new Uint8Array(t,n,c);n+=c;let C,E;u>0&&(C=dr(i,n,u),n+=u,f>0&&(E=new Uint8Array(t,n,f),E=new Uint8Array(E),n+=f));let I=_.POLYGONS_LENGTH??0,b=_.POLYLINES_LENGTH??0,S=_.POINTS_LENGTH??0,B=I+b+S,v=new Ip(e,B,C,E,j7e(e));if(e._batchTable=v,B===0)return;let P=new Ph(_,y),M=P.getGlobalProperty("REGION");if(!l(M))throw new ce("Feature table global property: REGION must be defined");let L=ae.unpack(M),p=M[4],x=M[5],T=e._tile.computedTransform,w=P.getGlobalProperty("RTC_CENTER",q.FLOAT,3);l(w)?(w=d.unpack(w),N.multiplyByPoint(T,w,w)):(w=ae.center(L),w.height=D.lerp(p,x,.5),w=te.WGS84.cartographicToCartesian(w));let R=Y7e(_,y);if(n+=(4-n%4)%4,I>0){P.featuresLength=I;let k=P.getPropertyArray("POLYGON_COUNTS",q.UNSIGNED_INT,1)??P.getPropertyArray("POLYGON_COUNT",q.UNSIGNED_INT,1);if(!l(k))throw new ce("Feature table property: POLYGON_COUNTS must be defined when POLYGONS_LENGTH is greater than 0");let Q=P.getPropertyArray("POLYGON_INDEX_COUNTS",q.UNSIGNED_INT,1)??P.getPropertyArray("POLYGON_INDEX_COUNT",q.UNSIGNED_INT,1);if(!l(Q))throw new ce("Feature table property: POLYGON_INDEX_COUNTS must be defined when POLYGONS_LENGTH is greater than 0");let z=k.reduce(function($,X){return $+X*2},0),F=Q.reduce(function($,X){return $+X},0),H=new Uint32Array(t,n,F);n+=h;let W=new Uint16Array(t,n,z);n+=A;let Z,Y;l(_.POLYGON_MINIMUM_HEIGHTS)&&l(_.POLYGON_MAXIMUM_HEIGHTS)&&(Z=P.getPropertyArray("POLYGON_MINIMUM_HEIGHTS",q.FLOAT,1),Y=P.getPropertyArray("POLYGON_MAXIMUM_HEIGHTS",q.FLOAT,1)),e._polygons=new DL({positions:W,counts:k,indexCounts:Q,indices:H,minimumHeight:p,maximumHeight:x,polygonMinimumHeights:Z,polygonMaximumHeights:Y,center:w,rectangle:L,boundingVolume:e.tile.boundingVolume.boundingVolume,batchTable:v,batchIds:R.polygons,modelMatrix:T})}let O=e._tileset;if(b>0){P.featuresLength=b;let k=P.getPropertyArray("POLYLINE_COUNTS",q.UNSIGNED_INT,1)??P.getPropertyArray("POLYLINE_COUNT",q.UNSIGNED_INT,1);if(!l(k))throw new ce("Feature table property: POLYLINE_COUNTS must be defined when POLYLINES_LENGTH is greater than 0");let Q=P.getPropertyArray("POLYLINE_WIDTHS",q.UNSIGNED_SHORT,1);if(!l(Q)){Q=new Uint16Array(b);for(let Z=0;Z<b;++Z)Q[Z]=2}let z=k.reduce(function(Z,Y){return Z+Y*3},0),F=new Uint16Array(t,n,z);n+=g;let H=O.examineVectorLinesFunction;if(l(H)){let Z=OL(new Uint16Array(F),L,p,x,te.WGS84);J7e(Z,k,R.polylines,v,e.url,H)}let W=q7e;l(O.classificationType)&&(W=K7e),e._polylines=W({positions:F,widths:Q,counts:k,batchIds:R.polylines,minimumHeight:p,maximumHeight:x,center:w,rectangle:L,boundingVolume:e.tile.boundingVolume.boundingVolume,batchTable:v,classificationType:O.classificationType,keepDecodedPositions:O.vectorKeepDecodedPositions})}if(S>0){let k=new Uint16Array(t,n,S*3);n+=m,e._points=new BL({positions:k,batchIds:R.points,minimumHeight:p,maximumHeight:x,rectangle:L,batchTable:v,heightReference:O.heightReference,scene:O.scene})}}function kY(e){let t=e.featuresLength;if(!l(e._features)&&t>0){let n=new Array(t);l(e._polygons)&&e._polygons.createFeatures(e,n),l(e._polylines)&&e._polylines.createFeatures(e,n),l(e._points)&&e._points.createFeatures(e,n),e._features=n}}Vh.prototype.hasProperty=function(e,t){return this._batchTable.hasProperty(e,t)};Vh.prototype.getFeature=function(e){return l(this._features)||kY(this),this._features[e]};Vh.prototype.applyDebugSettings=function(e,t){l(this._polygons)&&this._polygons.applyDebugSettings(e,t),l(this._polylines)&&this._polylines.applyDebugSettings(e,t),l(this._points)&&this._points.applyDebugSettings(e,t)};Vh.prototype.applyStyle=function(e){l(this._features)||kY(this),l(this._polygons)&&this._polygons.applyStyle(e,this._features),l(this._polylines)&&this._polylines.applyStyle(e,this._features),l(this._points)&&this._points.applyStyle(e,this._features)};Vh.prototype.update=function(e,t){let n=!0;l(this._polygons)&&(this._polygons.classificationType=this._tileset.classificationType,this._polygons.debugWireframe=this._tileset.debugWireframe,this._polygons.update(t),n=n&&this._polygons.ready),l(this._polylines)&&(this._polylines.update(t),n=n&&this._polylines.ready),l(this._points)&&(this._points.update(t),n=n&&this._points.ready),l(this._batchTable)&&n&&(l(this._features)||kY(this),this._batchTable.update(e,t),this._ready=!0)};Vh.prototype.pick=function(e,t,n){};Vh.prototype.getPolylinePositions=function(e){let t=this._polylines;if(l(t))return t.getPositions(e)};Vh.prototype.isDestroyed=function(){return!1};Vh.prototype.destroy=function(){return this._polygons=this._polygons&&this._polygons.destroy(),this._polylines=this._polylines&&this._polylines.destroy(),this._points=this._points&&this._points.destroy(),this._batchTable=this._batchTable&&this._batchTable.destroy(),ue(this)};function J7e(e,t,n,i,o,r){let s=t.length,a=0;for(let c=0;c<s;c++){let u=t[c]*3,f=e.slice(a,a+u);a+=u,r(f,n[c],o,i)}}var FL=Vh;function Ha(){}Ha._maxSortingConcurrency=Math.max(Wt.hardwareConcurrency-1,1);Ha._sorterTaskProcessor=void 0;Ha._taskProcessorReady=!1;Ha._error=void 0;Ha._getSorterTaskProcessor=function(){if(!l(Ha._sorterTaskProcessor)){let e=new di("gaussianSplatSorter",Ha._maxSortingConcurrency);e.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/wasm_splats_bg.wasm"}).then(function(t){t?Ha._taskProcessorReady=!0:Ha._error=new ce("Gaussian splat sorter could not be initialized.")}).catch(t=>{Ha._error=t}),Ha._sorterTaskProcessor=e}return Ha._sorterTaskProcessor};Ha.radixSortIndexes=function(e){let t=Ha._getSorterTaskProcessor();if(l(Ha._error))throw Ha._error;if(Ha._taskProcessorReady)return t.scheduleTask(e,[e.primitive.positions.buffer])};var bT=Ha;function Wa(){}Wa._maxSortingConcurrency=Math.max(Wt.hardwareConcurrency-1,1);Wa._textureTaskProcessor=void 0;Wa._taskProcessorReady=!1;Wa._error=void 0;Wa._getTextureTaskProcessor=function(){if(!l(Wa._textureTaskProcessor)){let e=new di("gaussianSplatTextureGenerator",Wa._maxSortingConcurrency);e.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/wasm_splats_bg.wasm"}).then(function(t){t?Wa._taskProcessorReady=!0:Wa._error=new ce("Gaussian splat sorter could not be initialized.")}).catch(t=>{Wa._error=t}),Wa._textureTaskProcessor=e}return Wa._textureTaskProcessor};Wa.generateFromAttributes=function(e){let t=Wa._getTextureTaskProcessor();if(l(Wa._error))throw Wa._error;if(!Wa._taskProcessorReady)return;let{attributes:n}=e;return t.scheduleTask(e,[n.positions.buffer,n.scales.buffer,n.rotations.buffer,n.colors.buffer])};var QL=Wa;function Z7e(e){let t=new Xp;this.shaderBuilder=t,this.uniformMap={},this.renderStateOptions=Ue.getState(Ue.fromCache({depthTest:{enabled:!0,func:Qa.LESS_OR_EQUAL}})),this.alphaOptions=new h0,this.hasSkipLevelOfDetail=!1,e._useLogDepth&&t.addDefine("LOG_DEPTH_READ_ONLY",void 0,pe.FRAGMENT)}var kL=Z7e;var UL=`// +// Vertex shader for Gaussian splats. + +// The splats are rendered as quads in view space. Splat attributes are loaded from a texture with precomputed 3D covariance. + +// Passes local quad coordinates and color to the fragment shader for Gaussian evaluation. +// +// Discards splats outside the view frustum or with negligible screen size. +// + +// Transforms and projects splat covariance into screen space and extracts the major and minor axes of the Gaussian ellipsoid +// which is used to calculate the vertex position in clip space. +vec4 calcCovVectors(vec3 viewPos, mat3 Vrk) { + vec4 t = vec4(viewPos, 1.0); + float focal = czm_viewport.z * czm_projection[0][0]; + + float J1 = focal / t.z; + vec2 J2 = -J1 / t.z * t.xy; + mat3 J = mat3( + J1, 0.0, J2.x, + 0.0, J1, J2.y, + 0.0, 0.0, 0.0 + ); + + mat3 R = mat3(czm_modelView); + + //transform our covariance into view space + //ensures orientation is correct + mat3 Vrk_view = R * Vrk * transpose(R); + mat3 cov = transpose(J) * Vrk_view * J; + + float diagonal1 = cov[0][0] + .3; + float offDiagonal = cov[0][1]; + float diagonal2 = cov[1][1] + .3; + + float mid = 0.5 * (diagonal1 + diagonal2); + float radius = length(vec2((diagonal1 - diagonal2) * 0.5, offDiagonal)); + float lambda1 = mid + radius; + float lambda2 = max(mid - radius, 0.1); + + vec2 diagonalVector = normalize(vec2(offDiagonal, lambda1 - diagonal1)); + + return vec4( + min(sqrt(2.0 * lambda1), 1024.0) * diagonalVector, + min(sqrt(2.0 * lambda2), 1024.0) * vec2(diagonalVector.y, -diagonalVector.x) + ); +} + +highp vec4 discardVec = vec4(0.0, 0.0, 2.0, 1.0); + +void main() { + uint texIdx = uint(a_splatIndex); + ivec2 posCoord = ivec2((texIdx & 0x3ffu) << 1, texIdx >> 10); + vec4 splatPosition = vec4( uintBitsToFloat(uvec4(texelFetch(u_splatAttributeTexture, posCoord, 0))) ); + + vec4 splatViewPos = czm_modelView * vec4(splatPosition.xyz, 1.0); + vec4 clipPosition = czm_projection * splatViewPos; + + float clip = 1.2 * clipPosition.w; + if (clipPosition.z < -clip || clipPosition.x < -clip || clipPosition.x > clip || + clipPosition.y < -clip || clipPosition.y > clip) { + gl_Position = vec4(0.0, 0.0, 2.0, 1.0); + return; + } + + ivec2 covCoord = ivec2(((texIdx & 0x3ffu) << 1) | 1u, texIdx >> 10); + uvec4 covariance = uvec4(texelFetch(u_splatAttributeTexture, covCoord, 0)); + + gl_Position = clipPosition; + + vec2 u1 = unpackHalf2x16(covariance.x) ; + vec2 u2 = unpackHalf2x16(covariance.y); + vec2 u3 = unpackHalf2x16(covariance.z); + mat3 Vrk = mat3(u1.x, u1.y, u2.x, u1.y, u2.y, u3.x, u2.x, u3.x, u3.y); + + vec4 covVectors = calcCovVectors(splatViewPos.xyz, Vrk); + + if (dot(covVectors.xy, covVectors.xy) < 4.0 && dot(covVectors.zw, covVectors.zw) < 4.0) { + gl_Position = discardVec; + return; + } + + vec2 corner = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2) - 1.; + + gl_Position += vec4((corner.x * covVectors.xy + corner.y * covVectors.zw) / czm_viewport.zw * gl_Position.w, 0, 0); + gl_Position.z = clamp(gl_Position.z, -abs(gl_Position.w), abs(gl_Position.w)); + + v_vertPos = corner ; + v_splatColor = vec4(covariance.w & 0xffu, (covariance.w >> 8) & 0xffu, (covariance.w >> 16) & 0xffu, (covariance.w >> 24) & 0xffu) / 255.0; + + v_splitDirection = u_splitDirection; +}`;var GL=`// +// Fragment shader for Gaussian splats. +// Renders a Gaussian splat within a quad, discarding fragments outside the unit circle. +// Applies an approximate Gaussian falloff based on distance from the center and outputs +// a color modulated by the alpha and Gaussian weight. +// +void main() { + if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; + + mediump float A = dot(v_vertPos, v_vertPos); + if(A > 1.0) { + discard; + } + mediump float scale = 4.0; + mediump float B = exp(-A * scale) * (v_splatColor.a); + out_FragColor = vec4(v_splatColor.rgb * B, B); +} +`;var zL=new N,Jde=new N,x0=new N,pu={IDLE:0,WAITING:1,SORTING:2,SORTED:3,ERROR:4};function Xde(e,t){return new Mt({context:e,source:{width:t.width,height:t.height,arrayBufferView:t.data},preMultiplyAlpha:!1,skipColorSpaceConversion:!0,pixelFormat:$e.RGBA_INTEGER,pixelDatatype:Ve.UNSIGNED_INT,flipY:!1,sampler:on.NEAREST})}function rf(e){e=e??V.EMPTY_OBJECT,this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,this._numSplats=0,this._needsGaussianSplatTexture=!0,this._prevViewMatrix=new N,this._debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.gaussianSplatTexture=void 0,this._lastTextureWidth=0,this._lastTextureHeight=0,this._vertexArray=void 0,this._vertexArrayLen=-1,this._splitDirection=br.NONE,this._dirty=!1,this._tileset=e.tileset,this._baseTilesetUpdate=this._tileset.update,this._tileset.update=this._wrappedUpdate.bind(this),this._tileset.tileLoad.addEventListener(this.onTileLoad,this),this._tileset.tileVisible.addEventListener(this.onTileVisible,this),this.selectedTileLength=0,this._ready=!1,this._hasGaussianSplatTexture=!1,this._gaussianSplatTexturePending=!1,this._drawCommand=void 0,this._rootTransform=void 0,this._axisCorrectionMatrix=Ot.getAxisCorrectionMatrix(fo.Y,fo.X,new N),this._isDestroyed=!1,this._sorterState=pu.IDLE,this._sorterPromise=void 0,this._sorterError=void 0}Object.defineProperties(rf.prototype,{ready:{get:function(){return this._ready}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,this._dirty=!0)}}});rf.prototype._wrappedUpdate=function(e){this._baseTilesetUpdate.call(this._tileset,e),this.update(e)};rf.prototype.destroy=function(){this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,l(this.gaussianSplatTexture)&&(this.gaussianSplatTexture.destroy(),this.gaussianSplatTexture=void 0);let e=this._drawCommand;return l(e)&&(e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy()),l(this._vertexArray)&&(this._vertexArray.destroy(),this._vertexArray=void 0),this._tileset.update=this._baseTilesetUpdate.bind(this._tileset),ue(this)};rf.prototype.isDestroyed=function(){return this._isDestroyed};rf.prototype.onTileLoad=function(e){this._dirty=!0};rf.prototype.onTileVisible=function(e){};rf.transformTile=function(e){let t=e.computedTransform,n=e.content.splatPrimitive,i=e.tileset.gaussianSplatPrimitive,o=N.multiplyTransformation(t,i._axisCorrectionMatrix,zL);N.multiplyTransformation(o,e.content.worldTransform,o);let r=N.multiply(e.tileset.modelMatrix,N.fromArray(e.tileset.root.transform),Jde),s=N.inverse(r,x0),a=N.multiplyTransformation(s,o,zL),c=e.content._originalPositions,u=e.content._originalRotations,f=e.content._originalScales,h=Ot.getAttributeBySemantic(n,at.POSITION).typedArray,A=Ot.getAttributeBySemantic(n,at.ROTATION).typedArray,g=Ot.getAttributeBySemantic(n,at.SCALE).typedArray,m=new d,_=new Le,y=new d;for(let C=0;C<c.length/3;++C)m.x=c[C*3],m.y=c[C*3+1],m.z=c[C*3+2],_.x=u[C*4],_.y=u[C*4+1],_.z=u[C*4+2],_.w=u[C*4+3],y.x=f[C*3],y.y=f[C*3+1],y.z=f[C*3+2],N.fromTranslationQuaternionRotationScale(m,_,y,x0),N.multiplyTransformation(a,x0,x0),N.getTranslation(x0,m),N.getRotation(x0,_),N.getScale(x0,y),h[C*3]=m.x,h[C*3+1]=m.y,h[C*3+2]=m.z,A[C*4]=_.x,A[C*4+1]=_.y,A[C*4+2]=_.z,A[C*4+3]=_.w,g[C*3]=y.x,g[C*3+1]=y.y,g[C*3+2]=y.z};rf.generateSplatTexture=function(e,t){e._gaussianSplatTexturePending=!0;let n=QL.generateFromAttributes({attributes:{positions:new Float32Array(e._positions),scales:new Float32Array(e._scales),rotations:new Float32Array(e._rotations),colors:new Uint8Array(e._colors)},count:e._numSplats});if(!l(n)){e._gaussianSplatTexturePending=!1;return}n.then(i=>{if(!e._gaussianSplatTexture)e.gaussianSplatTexture=Xde(t.context,i);else if(e._lastTextureHeight!==i.height||e._lastTextureWidth!==i.width){let o=e.gaussianSplatTexture;e._gaussianSplatTexture=Xde(t.context,i),o.destroy()}else e.gaussianSplatTexture.copyFrom({source:{width:i.width,height:i.height,arrayBufferView:i.data}});e._lastTextureHeight=i.height,e._lastTextureWidth=i.width,e._hasGaussianSplatTexture=!0,e._needsGaussianSplatTexture=!1,e._gaussianSplatTexturePending=!1,(!l(e._indexes)||e._indexes.length<e._numSplats)&&(e._indexes=new Uint32Array(e._numSplats));for(let o=0;o<e._numSplats;++o)e._indexes[o]=o}).catch(i=>{console.error("Error generating Gaussian splat texture:",i),e._gaussianSplatTexturePending=!1})};rf.buildGSplatDrawCommand=function(e,t){let n=e._tileset,i=new kL(e),{shaderBuilder:o}=i,r=i.renderStateOptions;r.cull.enabled=!1,r.depthMask=!1,r.depthTest.enabled=!0,r.blending=pn.PRE_MULTIPLIED_ALPHA_BLEND,i.alphaOptions.pass=Be.GAUSSIAN_SPLATS,o.addAttribute("vec2","a_screenQuadPosition"),o.addAttribute("float","a_splatIndex"),o.addVarying("vec4","v_splatColor"),o.addVarying("vec2","v_vertPos"),o.addUniform("float","u_splitDirection",pe.VERTEX),o.addVarying("float","v_splitDirection"),o.addUniform("highp usampler2D","u_splatAttributeTexture",pe.VERTEX);let s=i.uniformMap;s.u_splatAttributeTexture=function(){return e.gaussianSplatTexture},s.u_splitDirection=function(){return e.splitDirection},i.instanceCount=e._numSplats,i.count=4,i.primitiveType=Me.TRIANGLE_STRIP,o.addVertexLines(UL),o.addFragmentLines(GL);let a=o.buildShaderProgram(t.context),c=ze(Ue.fromCache(i.renderStateOptions),!0);c.cull.face=Ot.getCullFace(n.modelMatrix,Me.TRIANGLE_STRIP),c=Ue.fromCache(c);let u={screenQuadPosition:0,splatIndex:2},f=new xn.Attribute;if(f.name="_SPLAT_INDEXES",f.typedArray=e._indexes,f.componentDatatype=q.UNSIGNED_INT,f.type=zt.SCALAR,f.normalized=!1,f.count=i.instanceCount,f.constant=0,f.instanceDivisor=1,!l(e._vertexArray)||e._indexes.length>e._vertexArrayLen){let g=new ht({attributes:{screenQuadPosition:new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:[-1,-1,1,-1,1,1,-1,1],name:"_SCREEN_QUAD_POS",variableName:"screenQuadPosition"}),splatIndex:{...f,variableName:"splatIndex"}},primitiveType:Me.TRIANGLE_STRIP});e._vertexArray=li.fromGeometry({context:t.context,geometry:g,attributeLocations:u,bufferUsage:Qe.DYNAMIC_DRAW,interleave:!1})}else e._vertexArray.getAttribute(1).vertexBuffer.copyFromArrayView(e._indexes);e._vertexArrayLen=e._indexes.length;let h=N.multiply(n.modelMatrix,N.fromArray(n.root.transform),Jde),A=new nt({boundingVolume:n.boundingSphere,modelMatrix:h,uniformMap:s,renderState:c,vertexArray:e._vertexArray,shaderProgram:a,cull:r.cull.enabled,pass:Be.GAUSSIAN_SPLATS,count:i.count,owner:this,instanceCount:i.instanceCount,primitiveType:Me.TRIANGLE_STRIP,debugShowBoundingVolume:n.debugShowBoundingVolume,castShadows:!1,receiveShadows:!1});e._drawCommand=A};rf.prototype.update=function(e){let t=this._tileset;if(l(this._rootTransform)||(this._rootTransform=t.root.computedTransform),this._drawCommand&&t.show&&e.commandList.push(this._drawCommand),t._modelMatrixChanged){this._dirty=!0;return}if(e.passes.pick!==!0){if(this.splitDirection!==t.splitDirection&&(this.splitDirection=t.splitDirection),this._sorterState===pu.IDLE){if(!this._dirty&&N.equals(e.camera.viewMatrix,this._prevViewMatrix))return;if(t._selectedTiles.length!==0&&t._selectedTiles.length!==this.selectedTileLength){this._numSplats=0,this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,this._needsGaussianSplatTexture=!0,this._gaussianSplatTexturePending=!1;let n=t._selectedTiles,i=n.reduce((r,s)=>r+s.content.pointsLength,0),o=(r,s)=>{let a,c=0;for(let u of n){let f=u.content.splatPrimitive,h=s(f);l(a)||(a=q.createTypedArray(r,i*zt.getNumberOfComponents(h.type))),a.set(h.typedArray,c),c+=h.typedArray.length}return a};this._positions=o(q.FLOAT,r=>Ot.getAttributeBySemantic(r,at.POSITION)),this._scales=o(q.FLOAT,r=>Ot.getAttributeBySemantic(r,at.SCALE)),this._rotations=o(q.FLOAT,r=>Ot.getAttributeBySemantic(r,at.ROTATION)),this._colors=o(q.UNSIGNED_BYTE,r=>Ot.getAttributeBySemantic(r,at.COLOR)),this._numSplats=i,this.selectedTileLength=t._selectedTiles.length}if(this._numSplats===0)return;if(this._needsGaussianSplatTexture){this._gaussianSplatTexturePending||rf.generateSplatTexture(this,e);return}if(N.clone(e.camera.viewMatrix,this._prevViewMatrix),N.multiply(e.camera.viewMatrix,this._rootTransform,zL),l(this._sorterPromise)||(this._sorterPromise=bT.radixSortIndexes({primitive:{positions:new Float32Array(this._positions),modelView:Float32Array.from(zL),count:this._numSplats},sortType:"Index"})),!l(this._sorterPromise)){this._sorterState=pu.WAITING;return}this._sorterPromise.catch(n=>{this._sorterState=pu.ERROR,this._sorterError=n}),this._sorterPromise.then(n=>{this._indexes=n,this._sorterState=pu.SORTED})}else if(this._sorterState===pu.WAITING){if(l(this._sorterPromise)||(this._sorterPromise=bT.radixSortIndexes({primitive:{positions:new Float32Array(this._positions),modelView:Float32Array.from(zL),count:this._numSplats},sortType:"Index"})),!l(this._sorterPromise)){this._sorterState=pu.WAITING;return}this._sorterPromise.catch(n=>{this._sorterState=pu.ERROR,this._sorterError=n}),this._sorterPromise.then(n=>{this._indexes=n,this._sorterState=pu.SORTED}),this._sorterState=pu.SORTING}else{if(this._sorterState===pu.SORTING)return;if(this._sorterState===pu.SORTED)rf.buildGSplatDrawCommand(this,e),this._sorterState=pu.IDLE,this._dirty=!1,this._sorterPromise=void 0;else if(this._sorterState===pu.ERROR)throw this._sorterError}this._dirty=!1}};var TT=rf;function gd(e,t,n,i){this._tileset=t,this._tile=n,this._resource=i,this._loader=e,l(this._tileset.gaussianSplatPrimitive)||(this._tileset.gaussianSplatPrimitive=new TT({tileset:this._tileset})),this._originalPositions=void 0,this._originalRotations=void 0,this._originalScales=void 0,this.splatPrimitive=void 0,this.worldTransform=void 0,this.featurePropertiesDirty=!1,this._metadata=void 0,this._group=void 0,this._ready=!1,this._transformed=!1}Object.defineProperties(gd.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return this.splatPrimitive.attributes[0].count}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return this.splatPrimitive.attributes.reduce((e,t)=>e+t.byteLength,0)}},texturesByteLength:{get:function(){let e=this._tileset.gaussianSplatPrimitive.gaussianSplatTexture,t=this._tileset.gaussianSplatPrimitive.selectedTileLength;return!l(e)||t===0?0:e.sizeInBytes/t}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},transformed:{get:function(){return this._transformed}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});gd.fromGltf=async function(e,t,n,i){let o=n,r=we.createIfNeeded(o),s={releaseGltfJson:!1,upAxis:fo.Y,forwardAxis:fo.Z};l(i.asset)?(s.gltfJson=i,s.baseResource=r,s.gltfResource=r):i instanceof Uint8Array?(s.typedArray=i,s.baseResource=r,s.gltfResource=r):s.gltfResource=we.createIfNeeded(i);let a=new Xu(s);try{await a.load()}catch(c){throw a.destroy(),new ce(`Failed to load glTF: ${c.message}`)}return new gd(a,e,t,n)};gd.prototype.update=function(e,t){let n=this._loader;if(this._ready){!this._transformed&&e.root.content.ready&&(TT.transformTile(this._tile),this._transformed=!0);return}if(t.afterRender.push(()=>!0),!l(n)){this._ready=!0;return}if(this._resourcesLoaded){this.splatPrimitive=n.components.scene.nodes[0].primitives[0],this.worldTransform=n.components.scene.nodes[0].matrix,this._ready=!0,this._originalPositions=new Float32Array(Ot.getAttributeBySemantic(this.splatPrimitive,at.POSITION).typedArray),this._originalRotations=new Float32Array(Ot.getAttributeBySemantic(this.splatPrimitive,at.ROTATION).typedArray),this._originalScales=new Float32Array(Ot.getAttributeBySemantic(this.splatPrimitive,at.SCALE).typedArray);return}this._resourcesLoaded=n.process(t)};gd.prototype.hasProperty=function(e,t){return!1};gd.prototype.getFeature=function(e){};gd.prototype.applyDebugSettings=function(e,t){};gd.prototype.applyStyle=function(e){};gd.prototype.pick=function(e,t,n){};gd.prototype.isDestroyed=function(){return this.isDestroyed};gd.prototype.destroy=function(){return this.splatPrimitive=void 0,l(this._tileset.gaussianSplatPrimitive)&&!this._tileset.gaussianSplatPrimitive.isDestroyed()&&this._tileset.gaussianSplatPrimitive.destroy(),this._tileset.gaussianSplatPrimitive=void 0,this._tile=void 0,this._tileset=void 0,this._resource=void 0,this._ready=!1,this._group=void 0,this._metadata=void 0,this._resourcesLoaded=!1,l(this._loader)&&(this._loader.destroy(),this._loader=void 0),ue(this)};var ST=gd;var Zde={b3dm:function(e,t,n,i,o){return tf.fromB3dm(e,t,n,i,o)},pnts:function(e,t,n,i,o){return tf.fromPnts(e,t,n,i,o)},i3dm:function(e,t,n,i,o){return tf.fromI3dm(e,t,n,i,o)},cmpt:function(e,t,n,i,o){return UR.fromTileType(e,t,n,i,o,Zde)},externalTileset:function(e,t,n,i){return hL.fromJson(e,t,n,i)},geom:function(e,t,n,i,o){return new VR(e,t,n,i,o)},vctr:function(e,t,n,i,o){return new FL(e,t,n,i,o)},subt:function(e,t,n,i,o){return Rb.fromSubtreeJson(e,t,n,void 0,i,o)},subtreeJson:function(e,t,n,i){return Rb.fromSubtreeJson(e,t,n,i)},glb:function(e,t,n,i,o){if(i.byteLength<12)throw new ce("Invalid glb content");let a=new DataView(i,o).getUint32(8,!0),c=new Uint8Array(i,o,a),u=!1;return e.isGltfExtensionRequired instanceof Function&&(u=e.isGltfExtensionRequired("KHR_spz_gaussian_splats_compression")),u?ST.fromGltf(e,t,n,c):tf.fromGltf(e,t,n,c)},gltf:function(e,t,n,i){let o=e.debugTreatTilesetAsGaussianSplats??!1,r=!1;return e.isGltfExtensionRequired instanceof Function&&(r=e.isGltfExtensionRequired("KHR_spz_gaussian_splats_compression")),o||r?ST.fromGltf(e,t,n,i):tf.fromGltf(e,t,n,i)},geoJson:function(e,t,n,i){return tf.fromGeoJson(e,t,n,i)}},b0=Zde;var $7e={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,EXPIRED:4,FAILED:5},ir=Object.freeze($7e);var Hh={BATCHED_3D_MODEL:"b3dm",INSTANCED_3D_MODEL:"i3dm",COMPOSITE:"cmpt",POINT_CLOUD:"pnts",VECTOR:"vctr",GEOMETRY:"geom",GLTF:"gltf",GLTF_BINARY:"glb",IMPLICIT_SUBTREE:"subt",IMPLICIT_SUBTREE_JSON:"subtreeJson",EXTERNAL_TILESET:"externalTileset",MULTIPLE_CONTENT:"multipleContent",GEOJSON:"geoJson",VOXEL_BINARY:"voxl",VOXEL_JSON:"voxelJson"};Hh.isBinaryFormat=function(e){switch(e){case Hh.BATCHED_3D_MODEL:case Hh.INSTANCED_3D_MODEL:case Hh.COMPOSITE:case Hh.POINT_CLOUD:case Hh.VECTOR:case Hh.GEOMETRY:case Hh.IMPLICIT_SUBTREE:case Hh.VOXEL_BINARY:case Hh.GLTF_BINARY:return!0;default:return!1}};var Js=Object.freeze(Hh);var eXe={NOT_COMPUTED:-1,USE_OPTIMIZATION:1,SKIP_OPTIMIZATION:0},_d=Object.freeze(eXe);var ya={RENDER:0,PICK:1,SHADOW:2,PRELOAD:3,PRELOAD_FLIGHT:4,REQUEST_RENDER_MODE_DEFER_CHECK:5,MOST_DETAILED_PRELOAD:6,MOST_DETAILED_PICK:7,NUMBER_OF_PASSES:8},sg=new Array(ya.NUMBER_OF_PASSES);sg[ya.RENDER]=Object.freeze({pass:ya.RENDER,isRender:!0,requestTiles:!0,ignoreCommands:!1});sg[ya.PICK]=Object.freeze({pass:ya.PICK,isRender:!1,requestTiles:!1,ignoreCommands:!1});sg[ya.SHADOW]=Object.freeze({pass:ya.SHADOW,isRender:!1,requestTiles:!0,ignoreCommands:!1});sg[ya.PRELOAD]=Object.freeze({pass:ya.PRELOAD,isRender:!1,requestTiles:!0,ignoreCommands:!0});sg[ya.PRELOAD_FLIGHT]=Object.freeze({pass:ya.PRELOAD_FLIGHT,isRender:!1,requestTiles:!0,ignoreCommands:!0});sg[ya.REQUEST_RENDER_MODE_DEFER_CHECK]=Object.freeze({pass:ya.REQUEST_RENDER_MODE_DEFER_CHECK,isRender:!1,requestTiles:!0,ignoreCommands:!0});sg[ya.MOST_DETAILED_PRELOAD]=Object.freeze({pass:ya.MOST_DETAILED_PRELOAD,isRender:!1,requestTiles:!0,ignoreCommands:!0});sg[ya.MOST_DETAILED_PICK]=Object.freeze({pass:ya.MOST_DETAILED_PICK,isRender:!1,requestTiles:!1,ignoreCommands:!1});ya.getPassOptions=function(e){return sg[e]};var qo=Object.freeze(ya);function aA(e,t){this._tileset=e,this._tile=t,this.featurePropertiesDirty=!1}Object.defineProperties(aA.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return!0}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){}},metadata:{get:function(){},set:function(e){}},batchTable:{get:function(){}},group:{get:function(){},set:function(e){}}});aA.prototype.hasProperty=function(e,t){return!1};aA.prototype.getFeature=function(e){};aA.prototype.applyDebugSettings=function(e,t){};aA.prototype.applyStyle=function(e){};aA.prototype.update=function(e,t){};aA.prototype.pick=function(e,t,n){};aA.prototype.isDestroyed=function(){return!1};aA.prototype.destroy=function(){return ue(this)};var wT=aA;function ag(e){e=e??V.EMPTY_OBJECT;let t=e.content,n=e.class;this._class=n,this._properties=t.properties,this._extensions=t.extensions,this._extras=t.extras}Object.defineProperties(ag.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});ag.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};ag.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};ag.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};ag.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};ag.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};ag.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};ag.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var VL=ag;function UY(e,t){let n=Ei(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t.metadata;if(!l(n))return;if(!l(e.schema)){UY._oneTimeWarning("findContentMetadata-missing-root-schema","Could not find a metadata schema for content metadata. For tilesets that contain external tilesets, make sure the schema is added to the root tileset.json.");return}let i=e.schema.classes??V.EMPTY_OBJECT;if(l(n.class)){let o=i[n.class];return new VL({content:n,class:o})}}UY._oneTimeWarning=yt;var T0=UY;function tXe(e,t){let n=e.metadataExtension;if(!l(n))return;let i=n.groups,o=Ei(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"].group:t.group;if(typeof o=="number")return i[o];let r=n.groupIds.findIndex(function(s){return s===o});return r>=0?i[r]:void 0}var S0=tXe;function cg(e){e=e??V.EMPTY_OBJECT;let t=e.tile,n=e.class;this._class=n,this._properties=t.properties,this._extensions=t.extensions,this._extras=t.extras}Object.defineProperties(cg.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});cg.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};cg.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};cg.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};cg.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};cg.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};cg.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};cg.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var HL=cg;function GY(e,t){let n=Ei(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t.metadata;if(!l(n))return;if(!l(e.schema)){GY._oneTimeWarning("findTileMetadata-missing-root-schema","Could not find a metadata schema for tile metadata. For tilesets that contain external tilesets, make sure the schema is added to the root tileset.json.");return}let i=e.schema.classes??V.EMPTY_OBJECT;if(l(n.class)){let o=i[n.class];return new HL({tile:n,class:o})}}GY._oneTimeWarning=yt;var WL=GY;function nXe(e){let t=new Uint8Array(e),n=Ih(t);if(n==="glTF"&&(n="glb"),Js.isBinaryFormat(n))return{contentType:n,binaryPayload:t};let i=iXe(t);if(l(i.root))return{contentType:Js.EXTERNAL_TILESET,jsonPayload:i};if(l(i.asset))return{contentType:Js.GLTF,jsonPayload:i};if(l(i.tileAvailability))return{contentType:Js.IMPLICIT_SUBTREE_JSON,jsonPayload:i};if(l(i.type))return{contentType:Js.GEOJSON,jsonPayload:i};if(l(i.voxelTable))return{contentType:Js.VOXEL_JSON,jsonPayload:i};throw new ce("Invalid tile content.")}function iXe(e){let t;try{t=dr(e)}catch{throw new ce("Invalid tile content.")}return t}var lg=nXe;function yd(e,t,n,i){this._tileset=e,this._tile=t,this._tilesetResource=n,this._contents=[],this._contentsCreated=!1;let o=l(i.contents)?i.contents:i.content;this._innerContentHeaders=o,this._requestsInFlight=0,this._cancelCount=0,this._externalTilesetCount=0;let r=this._innerContentHeaders.length;this._arrayFetchPromises=new Array(r),this._requests=new Array(r),this._ready=!1,this._innerContentResources=new Array(r),this._serverKeys=new Array(r);for(let s=0;s<r;s++){let a=n.getDerivedResource({url:o[s].uri}),c=Bc.getServerKey(a.getUrlComponent());this._innerContentResources[s]=a,this._serverKeys[s]=c}}Object.defineProperties(yd.prototype,{featurePropertiesDirty:{get:function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)if(e[n].featurePropertiesDirty)return!0;return!1},set:function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].featurePropertiesDirty=e}},featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){return this._contents}},ready:{get:function(){return this._contentsCreated?this._ready:!1}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){}},metadata:{get:function(){},set:function(){}},batchTable:{get:function(){}},group:{get:function(){},set:function(){}},innerContentUrls:{get:function(){return this._innerContentHeaders.map(function(e){return e.uri})}}});function zY(e,t){e._requestsInFlight+=t,e.tileset.statistics.numberOfPendingRequests+=t}function $de(e,t){e._cancelCount++,e._tile._contentState=t;let n=e.tileset.statistics;n.numberOfPendingRequests-=e._requestsInFlight,n.numberOfAttemptedRequests+=e._requestsInFlight,e._requestsInFlight=0;let i=e._innerContentHeaders.length;e._arrayFetchPromises=new Array(i)}yd.prototype.requestInnerContents=function(){if(!oXe(this._serverKeys)){this.tileset.statistics.numberOfAttemptedRequests+=this._serverKeys.length;return}let e=this._innerContentHeaders;zY(this,e.length);let t=this._cancelCount;for(let n=0;n<e.length;n++)this._arrayFetchPromises[n]=rXe(this,n,t,this._tile._contentState);return sXe(this)};function oXe(e){let t={};for(let n=0;n<e.length;n++){let i=e[n];l(t[i])?t[i]++:t[i]=1}for(let n in t)if(t.hasOwnProperty(n)&&!Bc.serverHasOpenSlots(n,t[n]))return!1;return Bc.heapHasOpenSlots(e.length)}function rXe(e,t,n,i){let o=e._innerContentResources[t].clone(),r=e.tile,s=function(){return r._priority},a=e._serverKeys[t],c=new sr({throttle:!0,throttleByServer:!0,type:Ms.TILES3D,priorityFunction:s,serverKey:a});o.request=c,e._requests[t]=c;let u=o.fetchArrayBuffer();if(l(u))return u.then(function(f){if(!(n<e._cancelCount)){if(o.request.cancelled||o.request.state===fi.CANCELLED){$de(e,i);return}return zY(e,-1),f}}).catch(function(f){if(!(n<e._cancelCount)){if(o.request.cancelled||o.request.state===fi.CANCELLED){$de(e,i);return}zY(e,-1),ehe(e,t,f)}})}async function sXe(e){let t=e._cancelCount,n=await Promise.all(e._arrayFetchPromises);if(t<e._cancelCount)return;let i=n.map((r,s)=>aXe(e,r,s)),o=await Promise.all(i);if(e._contentsCreated=!0,e._contents=o.filter(l),e._externalTilesetCount===e._contents.length){let r=e._tile;r.hasRenderableContent=!1}return o}async function aXe(e,t,n){if(l(t))try{let i=lg(t),o=e._tileset,r=e._innerContentResources[n],s=e._tile;i.contentType===Js.EXTERNAL_TILESET&&(e._externalTilesetCount++,s.hasTilesetContent=!0),e._disableSkipLevelOfDetail=e._disableSkipLevelOfDetail||i.contentType===Js.GEOMETRY||i.contentType===Js.VECTOR;let a,c=b0[i.contentType];l(i.binaryPayload)?a=await Promise.resolve(c(o,s,r,i.binaryPayload.buffer,0)):a=await Promise.resolve(c(o,s,r,i.jsonPayload));let u=e._innerContentHeaders[n];if(s.hasImplicitContentMetadata){let h=s.implicitSubtree,A=s.implicitCoordinates;a.metadata=h.getContentMetadataView(A,n)}else s.hasImplicitContent||(a.metadata=T0(o,u));let f=S0(o,u);return l(f)&&(a.group=new vE({metadata:f})),a}catch(i){ehe(e,n,i)}}function ehe(e,t,n){let i=e._tileset,o=e._innerContentResources[t].url,r=l(n.message)?n.message:n.toString();i.tileFailed.numberOfListeners>0?i.tileFailed.raiseEvent({url:o,message:r}):(console.log(`A content failed to load: ${o}`),console.log(`Error: ${r}`))}yd.prototype.cancelRequests=function(){for(let e=0;e<this._requests.length;e++){let t=this._requests[e];l(t)&&t.cancel()}};yd.prototype.hasProperty=function(e,t){return!1};yd.prototype.getFeature=function(e){};yd.prototype.applyDebugSettings=function(e,t){let n=this._contents,i=n.length;for(let o=0;o<i;++o)n[o].applyDebugSettings(e,t)};yd.prototype.applyStyle=function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].applyStyle(e)};yd.prototype.update=function(e,t){let n=this._contents,i=n.length,o=!0;for(let r=0;r<i;++r)n[r].update(e,t),o=o&&n[r].ready;!this._ready&&o&&(this._ready=!0)};yd.prototype.pick=function(e,t,n){if(!this._ready)return;let i,o=Number.POSITIVE_INFINITY,r=this._contents,s=r.length;for(let a=0;a<s;++a){let c=r[a].pick(e,t,n);if(!l(c))continue;let u=d.distance(e.origin,c);u<o&&(i=c,o=u)}if(l(i))return n};yd.prototype.isDestroyed=function(){return!1};yd.prototype.destroy=function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var jL=yd;var the=Math.cos,nhe=Math.sin,cXe=Math.sqrt,VY={};VY.computePosition=function(e,t,n,i,o,r,s){let a=t.radiiSquared,c=e.nwCorner,u=e.boundingRectangle,f=c.latitude-e.granYCos*i+o*e.granXSin,h=the(f),A=nhe(f),g=a.z*A,m=c.longitude+i*e.granYSin+o*e.granXCos,_=h*the(m),y=h*nhe(m),C=a.x*_,E=a.y*y,I=cXe(C*_+E*y+g*A);if(r.x=C/I,r.y=E/I,r.z=g/I,n){let b=e.stNwCorner;l(b)?(f=b.latitude-e.stGranYCos*i+o*e.stGranXSin,m=b.longitude+i*e.stGranYSin+o*e.stGranXCos,s.x=(m-e.stWest)*e.lonScalar,s.y=(f-e.stSouth)*e.latScalar):(s.x=(m-u.west)*e.lonScalar,s.y=(f-u.south)*e.latScalar)}};var lXe=new Gi,Cd=new d,uXe=new Ae,gV=new d,YL=new Ui;function ihe(e,t,n,i,o,r,s){let a=Math.cos(t),c=i*a,u=n*a,f=Math.sin(t),h=i*f,A=n*f;YL._ellipsoid=te.default,Cd=YL.project(e,Cd),Cd=d.subtract(Cd,gV,Cd);let g=Gi.fromRotation(t,lXe);Cd=Gi.multiplyByVector(g,Cd,Cd),Cd=d.add(Cd,gV,Cd),e=YL.unproject(Cd,e),r-=1,s-=1;let m=e.latitude,_=m+r*A,y=m-c*s,C=m-c*s+r*A,E=Math.max(m,_,y,C),I=Math.min(m,_,y,C),b=e.longitude,S=b+r*u,B=b+s*h,v=b+s*h+r*u,P=Math.max(b,S,B,v),M=Math.min(b,S,B,v);return{north:E,south:I,east:P,west:M,granYCos:c,granYSin:h,granXCos:u,granXSin:A,nwCorner:e}}VY.computeOptions=function(e,t,n,i,o,r,s){let a=e.east,c=e.west,u=e.north,f=e.south,h=!1,A=!1;u===D.PI_OVER_TWO&&(h=!0),f===-D.PI_OVER_TWO&&(A=!0);let g,m=u-f;c>a?g=D.TWO_PI-c+a:g=a-c;let _=Math.ceil(g/t)+1,y=Math.ceil(m/t)+1,C=g/(_-1),E=m/(y-1),I=ae.northwest(e,r),b=ae.center(e,uXe);(n!==0||i!==0)&&(b.longitude<I.longitude&&(b.longitude+=D.TWO_PI),YL._ellipsoid=te.default,gV=YL.project(b,gV));let S=E,B=C,v=0,P=0,M=ae.clone(e,o),L={granYCos:S,granYSin:v,granXCos:B,granXSin:P,nwCorner:I,boundingRectangle:M,width:_,height:y,northCap:h,southCap:A};if(n!==0){let p=ihe(I,n,C,E,b,_,y);u=p.north,f=p.south,a=p.east,c=p.west,L.granYCos=p.granYCos,L.granYSin=p.granYSin,L.granXCos=p.granXCos,L.granXSin=p.granXSin,M.north=u,M.south=f,M.east=a,M.west=c}if(i!==0){n=n-i;let p=ae.northwest(M,s),x=ihe(p,n,C,E,b,_,y);L.stGranYCos=x.granYCos,L.stGranXCos=x.granXCos,L.stGranYSin=x.granYSin,L.stGranXSin=x.granXSin,L.stNwCorner=p,L.stWest=x.west,L.stSouth=x.south}return L};var Zs=VY;var fXe=new le,dXe=new le,hXe=new d,mXe=new ae;function ohe(e,t){let n=e._ellipsoid,i=t.height,o=t.width,r=t.northCap,s=t.southCap,a=i,c=2,u=0,f=4;r&&(c-=1,a-=1,u+=1,f-=2),s&&(c-=1,a-=1,u+=1,f-=2),u+=c*o+2*a-f;let h=new Float64Array(u*3),A=0,g=0,m,_=hXe;if(r)Zs.computePosition(t,n,!1,g,0,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;else for(m=0;m<o;m++)Zs.computePosition(t,n,!1,g,m,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;for(m=o-1,g=1;g<i;g++)Zs.computePosition(t,n,!1,g,m,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;if(g=i-1,!s)for(m=o-2;m>=0;m--)Zs.computePosition(t,n,!1,g,m,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;for(m=0,g=i-2;g>0;g--)Zs.computePosition(t,n,!1,g,m,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;let y=h.length/3*2,C=Oe.createTypedArray(h.length/3,y),E=0;for(let b=0;b<h.length/3-1;b++)C[E++]=b,C[E++]=b+1;C[E++]=h.length/3-1,C[E++]=0;let I=new ht({attributes:new yn,primitiveType:Me.LINES});return I.attributes.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:h}),I.indices=C,I}function AXe(e,t){let n=e._surfaceHeight,i=e._extrudedHeight,o=e._ellipsoid,r=ohe(e,t),s=t.height,a=t.width,c=Ii.scaleToGeodeticHeight(r.attributes.position.values,n,o,!1),u=c.length,f=new Float64Array(u*2);f.set(c);let h=Ii.scaleToGeodeticHeight(r.attributes.position.values,i,o);f.set(h,u),r.attributes.position.values=f;let A=t.northCap,g=t.southCap,m=4;A&&(m-=1),g&&(m-=1);let _=(f.length/3+m)*2,y=Oe.createTypedArray(f.length/3,_);u=f.length/6;let C=0;for(let I=0;I<u-1;I++)y[C++]=I,y[C++]=I+1,y[C++]=I+u,y[C++]=I+u+1;y[C++]=u-1,y[C++]=0,y[C++]=u+u-1,y[C++]=u,y[C++]=0,y[C++]=u;let E;if(A)E=s-1;else{let I=a-1;y[C++]=I,y[C++]=I+u,E=a+s-2}if(y[C++]=E,y[C++]=E+u,!g){let I=a+E-1;y[C++]=I,y[C]=I+u}return r.indices=y,r}function DT(e){e=e??V.EMPTY_OBJECT;let t=e.rectangle,n=e.granularity??D.RADIANS_PER_DEGREE,i=e.ellipsoid??te.default,o=e.rotation??0,r=e.height??0,s=e.extrudedHeight??r;this._rectangle=ae.clone(t),this._granularity=n,this._ellipsoid=i,this._surfaceHeight=Math.max(r,s),this._rotation=o,this._extrudedHeight=Math.min(r,s),this._offsetAttribute=e.offsetAttribute,this._workerName="createRectangleOutlineGeometry"}DT.packedLength=ae.packedLength+te.packedLength+5;DT.pack=function(e,t,n){return n=n??0,ae.pack(e._rectangle,t,n),n+=ae.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._granularity,t[n++]=e._surfaceHeight,t[n++]=e._rotation,t[n++]=e._extrudedHeight,t[n]=e._offsetAttribute??-1,t};var rhe=new ae,she=te.clone(te.UNIT_SPHERE),BT={rectangle:rhe,ellipsoid:she,granularity:void 0,height:void 0,rotation:void 0,extrudedHeight:void 0,offsetAttribute:void 0};DT.unpack=function(e,t,n){t=t??0;let i=ae.unpack(e,t,rhe);t+=ae.packedLength;let o=te.unpack(e,t,she);t+=te.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],u=e[t];return l(n)?(n._rectangle=ae.clone(i,n._rectangle),n._ellipsoid=te.clone(o,n._ellipsoid),n._surfaceHeight=s,n._rotation=a,n._extrudedHeight=c,n._offsetAttribute=u===-1?void 0:u,n):(BT.granularity=r,BT.height=s,BT.rotation=a,BT.extrudedHeight=c,BT.offsetAttribute=u===-1?void 0:u,new DT(BT))};var pXe=new Ae;DT.createGeometry=function(e){let t=e._rectangle,n=e._ellipsoid,i=Zs.computeOptions(t,e._granularity,e._rotation,0,mXe,pXe),o,r;if(D.equalsEpsilon(t.north,t.south,D.EPSILON10)||D.equalsEpsilon(t.east,t.west,D.EPSILON10))return;let s=e._surfaceHeight,a=e._extrudedHeight,c=!D.equalsEpsilon(s,a,0,D.EPSILON2),u;if(c){if(o=AXe(e,i),l(e._offsetAttribute)){let A=o.attributes.position.values.length/3,g=new Uint8Array(A);e._offsetAttribute===hn.TOP?g=g.fill(1,0,A/2):(u=e._offsetAttribute===hn.NONE?0:1,g=g.fill(u)),o.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:g})}let f=le.fromRectangle3D(t,n,s,dXe),h=le.fromRectangle3D(t,n,a,fXe);r=le.union(f,h)}else{if(o=ohe(e,i),o.attributes.position.values=Ii.scaleToGeodeticHeight(o.attributes.position.values,s,n,!1),l(e._offsetAttribute)){let f=o.attributes.position.values.length;u=e._offsetAttribute===hn.NONE?0:1;let h=new Uint8Array(f/3).fill(u);o.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}r=le.fromRectangle3D(t,n,s)}return new ht({attributes:o.attributes,indices:o.indices,primitiveType:Me.LINES,boundingSphere:r,offsetAttribute:e._offsetAttribute})};var w0=DT;function PT(e){this.rectangle=ae.clone(e.rectangle),this.minimumHeight=e.minimumHeight??0,this.maximumHeight=e.maximumHeight??0,this.southwestCornerCartesian=new d,this.northeastCornerCartesian=new d,this.westNormal=new d,this.southNormal=new d,this.eastNormal=new d,this.northNormal=new d;let t=e.ellipsoid??te.WGS84;EXe(this,e.rectangle,t),this._orientedBoundingBox=void 0,this._boundingSphere=void 0,(e.computeBoundingVolumes??!0)&&this.computeBoundingVolumes(t)}Object.defineProperties(PT.prototype,{boundingVolume:{get:function(){return this._orientedBoundingBox}},boundingSphere:{get:function(){return this._boundingSphere}}});PT.prototype.computeBoundingVolumes=function(e){this._orientedBoundingBox=Fn.fromRectangle(this.rectangle,this.minimumHeight,this.maximumHeight,e),this._boundingSphere=le.fromOrientedBoundingBox(this._orientedBoundingBox)};var ahe=new d,_V=new d,che=new d,gXe=new d,_Xe=new d,yXe=new d,CXe=new d,Ed=new Ae,lhe=new mn(d.UNIT_X,0),vT=new In;function EXe(e,t,n){n.cartographicToCartesian(ae.southwest(t),e.southwestCornerCartesian),n.cartographicToCartesian(ae.northeast(t),e.northeastCornerCartesian),Ed.longitude=t.west,Ed.latitude=(t.south+t.north)*.5,Ed.height=0;let i=n.cartographicToCartesian(Ed,yXe),o=d.cross(i,d.UNIT_Z,gXe);d.normalize(o,e.westNormal),Ed.longitude=t.east;let r=n.cartographicToCartesian(Ed,CXe),s=d.cross(d.UNIT_Z,r,ahe);d.normalize(s,e.eastNormal);let a=d.subtract(i,r,ahe);d.magnitude(a)===0&&(a=d.clone(o,a));let c=d.normalize(a,_Xe),u=t.south,f;if(u>0){Ed.longitude=(t.west+t.east)*.5,Ed.latitude=u;let _=n.cartographicToCartesian(Ed,vT.origin);d.clone(c,vT.direction);let y=mn.fromPointNormal(e.southwestCornerCartesian,e.westNormal,lhe);hi.rayPlane(vT,y,e.southwestCornerCartesian),f=n.geodeticSurfaceNormal(_,_V)}else f=n.geodeticSurfaceNormalCartographic(ae.southeast(t),_V);let h=d.cross(f,a,che);d.normalize(h,e.southNormal);let A=t.north,g;if(A<0){Ed.longitude=(t.west+t.east)*.5,Ed.latitude=A;let _=n.cartographicToCartesian(Ed,vT.origin);d.negate(c,vT.direction);let y=mn.fromPointNormal(e.northeastCornerCartesian,e.eastNormal,lhe);hi.rayPlane(vT,y,e.northeastCornerCartesian),g=n.geodeticSurfaceNormal(_,_V)}else g=n.geodeticSurfaceNormalCartographic(ae.northwest(t),_V);let m=d.cross(a,g,che);d.normalize(m,e.northNormal)}var IXe=new d,xXe=new d,bXe=new d(0,-1,0),TXe=new d(0,0,-1),uhe=new d;function SXe(e,t){let n=t.camera,i=n.positionWC,o=n.positionCartographic,r=0;if(!ae.contains(e.rectangle,o)){let u=e.southwestCornerCartesian,f=e.northeastCornerCartesian,h=e.westNormal,A=e.southNormal,g=e.eastNormal,m=e.northNormal;t.mode!==ie.SCENE3D&&(u=t.mapProjection.project(ae.southwest(e.rectangle),IXe),u.z=u.y,u.y=u.x,u.x=0,f=t.mapProjection.project(ae.northeast(e.rectangle),xXe),f.z=f.y,f.y=f.x,f.x=0,h=bXe,g=d.UNIT_Y,A=TXe,m=d.UNIT_Z);let _=d.subtract(i,u,uhe),y=d.dot(_,h),C=d.dot(_,A),E=d.subtract(i,f,uhe),I=d.dot(E,g),b=d.dot(E,m);y>0?r+=y*y:I>0&&(r+=I*I),C>0?r+=C*C:b>0&&(r+=b*b)}let s,a,c;if(t.mode===ie.SCENE3D?(s=o.height,a=e.minimumHeight,c=e.maximumHeight):(s=i.x,a=0,c=0),s>c){let u=s-c;r+=u*u}else if(s<a){let u=a-s;r+=u*u}return Math.sqrt(r)}PT.prototype.distanceToCamera=function(e){let t=SXe(this,e);if(e.mode===ie.SCENE3D&&l(this._orientedBoundingBox)){let n=Math.sqrt(this._orientedBoundingBox.distanceSquaredTo(e.camera.positionWC));return Math.max(t,n)}return t};PT.prototype.intersectPlane=function(e){return this._orientedBoundingBox.intersectPlane(e)};PT.prototype.createDebugVolume=function(e){let t=new N.clone(N.IDENTITY),n=new w0({rectangle:this.rectangle,height:this.minimumHeight,extrudedHeight:this.maximumHeight}),i=new Pt({geometry:n,id:"outline",modelMatrix:t,attributes:{color:$t.fromColor(e)}});return new Qn({geometryInstances:i,appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})};var sf=PT;var qL={},wXe=new d,fhe=new d,dhe=new d,hhe=new d,mhe=new Fn;qL.validOutline=function(e){let n=Fn.fromPoints(e,mhe).halfAxes,i=J.getColumn(n,0,fhe),o=J.getColumn(n,1,dhe),r=J.getColumn(n,2,hhe),s=d.magnitude(i),a=d.magnitude(o),c=d.magnitude(r);return!(s===0&&(a===0||c===0)||a===0&&c===0)};qL.computeProjectTo2DArguments=function(e,t,n,i){let o=Fn.fromPoints(e,mhe),r=o.halfAxes,s=J.getColumn(r,0,fhe),a=J.getColumn(r,1,dhe),c=J.getColumn(r,2,hhe),u=d.magnitude(s),f=d.magnitude(a),h=d.magnitude(c),A=Math.min(u,f,h);if(u===0&&(f===0||h===0)||f===0&&h===0)return!1;let g,m;return(A===f||A===h)&&(g=s),A===u?g=a:A===h&&(m=a),(A===u||A===f)&&(m=c),d.normalize(g,n),d.normalize(m,i),d.clone(o.center,t),!0};function Ahe(e,t,n,i,o){let r=d.subtract(e,t,wXe),s=d.dot(n,r),a=d.dot(i,r);return U.fromElements(s,a,o)}qL.createProjectPointsTo2DFunction=function(e,t,n){return function(i){let o=new Array(i.length);for(let r=0;r<i.length;r++)o[r]=Ahe(i[r],e,t,n);return o}};qL.createProjectPointTo2DFunction=function(e,t,n){return function(i,o){return Ahe(i,e,t,n,o)}};var ug=qL;function BXe(e){let t=e.length,n=new Float64Array(t*3),i=Oe.createTypedArray(t,t*2),o=0,r=0;for(let a=0;a<t;a++){let c=e[a];n[o++]=c.x,n[o++]=c.y,n[o++]=c.z,i[r++]=a,i[r++]=(a+1)%t}let s=new yn({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:n})});return new ht({attributes:s,indices:i,primitiveType:Me.LINES})}function B0(e){e=e??V.EMPTY_OBJECT;let t=e.polygonHierarchy;this._polygonHierarchy=t,this._workerName="createCoplanarPolygonOutlineGeometry",this.packedLength=$n.computeHierarchyPackedLength(t,d)+1}B0.fromPositions=function(e){e=e??V.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions}};return new B0(t)};B0.pack=function(e,t,n){return n=n??0,n=$n.packPolygonHierarchy(e._polygonHierarchy,t,n,d),t[n]=e.packedLength,t};var DXe={polygonHierarchy:{}};B0.unpack=function(e,t,n){t=t??0;let i=$n.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=e[t];return l(n)||(n=new B0(DXe)),n._polygonHierarchy=i,n.packedLength=o,n};B0.createGeometry=function(e){let t=e._polygonHierarchy,n=t.positions;if(n=Mo(n,d.equalsEpsilon,!0),n.length<3||!ug.validOutline(n))return;let o=$n.polygonOutlinesFromHierarchy(t,!1);if(o.length===0)return;let r=[];for(let c=0;c<o.length;c++){let u=new Pt({geometry:BXe(o[c])});r.push(u)}let s=Vn.combineInstances(r)[0],a=le.fromPoints(t.positions);return new ht({attributes:s.attributes,indices:s.indices,primitiveType:s.primitiveType,boundingSphere:a})};var Id=B0;var yV=new Ae;function KL(e){let t=Tp.fromToken(e.token),n=e.minimumHeight??0,i=e.maximumHeight??0,o=e.ellipsoid??te.WGS84;this.s2Cell=t,this.minimumHeight=n,this.maximumHeight=i,this.ellipsoid=o;let r=QXe(t,n,i,o);this._boundingPlanes=r;let s=zXe(r);this._vertices=s,this._edgeNormals=new Array(6),this._edgeNormals[0]=JY(r[0],s.slice(0,4));let a;for(a=0;a<4;a++)this._edgeNormals[0][a]=d.negate(this._edgeNormals[0][a],this._edgeNormals[0][a]);for(this._edgeNormals[1]=JY(r[1],s.slice(4,8)),a=0;a<4;a++)this._edgeNormals[2+a]=JY(r[2+a],[s[a%4],s[(a+1)%4],s[4+(a+1)%4],s[4+a]]);for(this._planeVertices=[this._vertices.slice(0,4),this._vertices.slice(4,8)],a=0;a<4;a++)this._planeVertices.push([this._vertices[a%4],this._vertices[(a+1)%4],this._vertices[4+(a+1)%4],this._vertices[4+a]]);let c=t.getCenter();yV=o.cartesianToCartographic(c,yV),yV.height=(i+n)/2,this.center=o.cartographicToCartesian(yV,c),this._boundingSphere=le.fromPoints(s)}var vXe=new d,PXe=new Ae,RXe=new d,MXe=new Ae,NXe=new d,LXe=new d,OXe=new d,FXe=new d;function QXe(e,t,n,i){let o=new Array(6),r=e.getCenter(),s=i.geodeticSurfaceNormal(r,vXe),a=i.cartesianToCartographic(r,PXe);a.height=n;let c=i.cartographicToCartesian(a,RXe),u=mn.fromPointNormal(c,s);o[0]=u;let f=0,h,A=[],g,m;for(h=0;h<4;h++){g=e.getVertex(h),A[h]=g,m=i.cartesianToCartographic(g,MXe),m.height=t;let y=mn.getPointDistance(u,i.cartographicToCartesian(m,NXe));y<f&&(f=y)}let _=mn.clone(u);for(_.normal=d.negate(_.normal,_.normal),_.distance=_.distance*-1+f,o[1]=_,h=0;h<4;h++){g=A[h];let y=A[(h+1)%4],C=i.geodeticSurfaceNormal(g,LXe),E=d.subtract(y,g,FXe),I=d.cross(E,C,OXe);I=d.normalize(I,I),o[2+h]=mn.fromPointNormal(g,I)}return o}var D0=new d,v0=new d,P0=new d,HY=new d,WY=new d,jY=new d,kXe=new d,UXe=new d,GXe=new d,YY=new d,qY=new d,KY=new d,xy=new d,cA=new J;function phe(e,t,n){D0=e.normal,v0=t.normal,P0=n.normal,HY=d.multiplyByScalar(e.normal,-e.distance,HY),WY=d.multiplyByScalar(t.normal,-t.distance,WY),jY=d.multiplyByScalar(n.normal,-n.distance,jY),YY=d.multiplyByScalar(d.cross(v0,P0,kXe),d.dot(HY,D0),YY),qY=d.multiplyByScalar(d.cross(P0,D0,UXe),d.dot(WY,v0),qY),KY=d.multiplyByScalar(d.cross(D0,v0,GXe),d.dot(jY,P0),KY),cA[0]=D0.x,cA[1]=v0.x,cA[2]=P0.x,cA[3]=D0.y,cA[4]=v0.y,cA[5]=P0.y,cA[6]=D0.z,cA[7]=v0.z,cA[8]=P0.z;let i=J.determinant(cA);return xy=d.add(YY,qY,xy),xy=d.add(xy,KY,xy),new d(xy.x/i,xy.y/i,xy.z/i)}function zXe(e){let t=new Array(8);for(let n=0;n<4;n++)t[n]=phe(e[0],e[2+(n+3)%4],e[2+n%4]),t[n+4]=phe(e[1],e[2+(n+3)%4],e[2+n%4]);return t}var XY=new d,RT=new d;function JY(e,t){let n=[];for(let i=0;i<4;i++)XY=d.subtract(t[(i+1)%4],t[i],XY),RT=d.cross(e.normal,XY,RT),RT=d.normalize(RT,RT),n[i]=d.clone(RT);return n}Object.defineProperties(KL.prototype,{boundingVolume:{get:function(){return this}},boundingSphere:{get:function(){return this._boundingSphere}}});var ZY=new d;KL.prototype.distanceToCamera=function(e){let t=e.camera.positionWC,n=[],i=[],o;mn.getPointDistance(this._boundingPlanes[0],t)>0?(n.push(0),i.push(this._planeVertices[0]),o=this._edgeNormals[0]):mn.getPointDistance(this._boundingPlanes[1],t)>0&&(n.push(1),i.push(this._planeVertices[1]),o=this._edgeNormals[1]);let r,s;for(r=0;r<4;r++)s=2+r,mn.getPointDistance(this._boundingPlanes[s],t)>0&&(n.push(s),i.push(this._planeVertices[s]),o=this._edgeNormals[s]);if(n.length===0)return 0;let a,c;if(n.length===1)return c=this._boundingPlanes[n[0]],a=$Y(mn.projectPointOntoPlane(c,t,ZY),i[0],c,o),d.distance(a,t);if(n.length===2){if(n[0]===0){let A=[this._vertices[4*n[0]+(n[1]-2)],this._vertices[4*n[0]+(n[1]-2+1)%4]];return a=ghe(t,A[0],A[1]),d.distance(a,t)}let f=Number.MAX_VALUE,h;for(r=0;r<2;r++)c=this._boundingPlanes[n[r]],a=$Y(mn.projectPointOntoPlane(c,t,ZY),i[r],c,this._edgeNormals[n[r]]),h=d.distanceSquared(a,t),h<f&&(f=h);return Math.sqrt(f)}else if(n.length>3)return a=$Y(mn.projectPointOntoPlane(this._boundingPlanes[1],t,ZY),this._planeVertices[1],this._boundingPlanes[1],this._edgeNormals[1]),d.distance(a,t);let u=n[1]===2&&n[2]===5?0:1;return n[0]===0?d.distance(t,this._vertices[(n[1]-2+u)%4]):d.distance(t,this._vertices[4+(n[1]-2+u)%4])};var VXe=new d,HXe=new d;function ghe(e,t,n){let i=d.subtract(n,t,VXe),o=d.subtract(e,t,HXe),r=d.dot(i,o);if(r<=0)return t;let s=d.dot(i,i);return r>=s?n:(r=r/s,new d((1-r)*t.x+r*n.x,(1-r)*t.y+r*n.y,(1-r)*t.z+r*n.z))}var WXe=new mn(d.UNIT_X,0);function $Y(e,t,n,i){let o=Number.MAX_VALUE,r,s,a;for(let c=0;c<t.length;c++){let u=mn.fromPointNormal(t[c],i[c],WXe);mn.getPointDistance(u,e)<0||(a=ghe(e,t[c],t[(c+1)%4]),r=d.distance(e,a),r<o&&(o=r,s=a))}return l(s)?s:e}KL.prototype.intersectPlane=function(e){let t=0,n=0;for(let i=0;i<this._vertices.length;i++)d.dot(e.normal,this._vertices[i])+e.distance<0?n++:t++;return t===this._vertices.length?tn.INSIDE:n===this._vertices.length?tn.OUTSIDE:tn.INTERSECTING};KL.prototype.createDebugVolume=function(e){let t=new N.clone(N.IDENTITY),n=new Id({polygonHierarchy:{positions:this._planeVertices[0]}}),i=Id.createGeometry(n),o=new Pt({geometry:i,id:"outline",modelMatrix:t,attributes:{color:$t.fromColor(e)}}),r=new Id({polygonHierarchy:{positions:this._planeVertices[1]}}),s=Id.createGeometry(r),a=new Pt({geometry:s,id:"outline",modelMatrix:t,attributes:{color:$t.fromColor(e)}}),c=[];for(let u=0;u<4;u++){let f=new Id({polygonHierarchy:{positions:this._planeVertices[2+u]}}),h=Id.createGeometry(f);c[u]=new Pt({geometry:h,id:"outline",modelMatrix:t,attributes:{color:$t.fromColor(e)}})}return new Qn({geometryInstances:[c[0],c[1],c[2],c[3],a,o],appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})};var XL=KL;var jXe=new d(1,1,1),CV=Math.cos,EV=Math.sin;function MT(e){e=e??V.EMPTY_OBJECT;let t=e.radii??jXe,n=e.innerRadii??t,i=e.minimumClock??0,o=e.maximumClock??D.TWO_PI,r=e.minimumCone??0,s=e.maximumCone??D.PI,a=Math.round(e.stackPartitions??10),c=Math.round(e.slicePartitions??8),u=Math.round(e.subdivisions??128);this._radii=d.clone(t),this._innerRadii=d.clone(n),this._minimumClock=i,this._maximumClock=o,this._minimumCone=r,this._maximumCone=s,this._stackPartitions=a,this._slicePartitions=c,this._subdivisions=u,this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipsoidOutlineGeometry"}MT.packedLength=2*d.packedLength+8;MT.pack=function(e,t,n){return n=n??0,d.pack(e._radii,t,n),n+=d.packedLength,d.pack(e._innerRadii,t,n),n+=d.packedLength,t[n++]=e._minimumClock,t[n++]=e._maximumClock,t[n++]=e._minimumCone,t[n++]=e._maximumCone,t[n++]=e._stackPartitions,t[n++]=e._slicePartitions,t[n++]=e._subdivisions,t[n]=e._offsetAttribute??-1,t};var _he=new d,yhe=new d,fg={radii:_he,innerRadii:yhe,minimumClock:void 0,maximumClock:void 0,minimumCone:void 0,maximumCone:void 0,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0,offsetAttribute:void 0};MT.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,_he);t+=d.packedLength;let o=d.unpack(e,t,yhe);t+=d.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t];return l(n)?(n._radii=d.clone(i,n._radii),n._innerRadii=d.clone(o,n._innerRadii),n._minimumClock=r,n._maximumClock=s,n._minimumCone=a,n._maximumCone=c,n._stackPartitions=u,n._slicePartitions=f,n._subdivisions=h,n._offsetAttribute=A===-1?void 0:A,n):(fg.minimumClock=r,fg.maximumClock=s,fg.minimumCone=a,fg.maximumCone=c,fg.stackPartitions=u,fg.slicePartitions=f,fg.subdivisions=h,fg.offsetAttribute=A===-1?void 0:A,new MT(fg))};MT.createGeometry=function(e){let t=e._radii;if(t.x<=0||t.y<=0||t.z<=0)return;let n=e._innerRadii;if(n.x<=0||n.y<=0||n.z<=0)return;let i=e._minimumClock,o=e._maximumClock,r=e._minimumCone,s=e._maximumCone,a=e._subdivisions,c=te.fromCartesian3(t),u=e._slicePartitions+1,f=e._stackPartitions+1;u=Math.round(u*Math.abs(o-i)/D.TWO_PI),f=Math.round(f*Math.abs(s-r)/D.PI),u<2&&(u=2),f<2&&(f=2);let h=0,A=1,g=n.x!==t.x||n.y!==t.y||n.z!==t.z,m=!1,_=!1;g&&(A=2,r>0&&(m=!0,h+=u),s<Math.PI&&(_=!0,h+=u));let y=a*A*(f+u),C=new Float64Array(y*3),E=2*(y+h-(u+f)*A),I=Oe.createTypedArray(y,E),b,S,B,v,P=0,M=new Array(f),L=new Array(f);for(b=0;b<f;b++)v=r+b*(s-r)/(f-1),M[b]=EV(v),L[b]=CV(v);let p=new Array(a),x=new Array(a);for(b=0;b<a;b++)B=i+b*(o-i)/(a-1),p[b]=EV(B),x[b]=CV(B);for(b=0;b<f;b++)for(S=0;S<a;S++)C[P++]=t.x*M[b]*x[S],C[P++]=t.y*M[b]*p[S],C[P++]=t.z*L[b];if(g)for(b=0;b<f;b++)for(S=0;S<a;S++)C[P++]=n.x*M[b]*x[S],C[P++]=n.y*M[b]*p[S],C[P++]=n.z*L[b];for(M.length=a,L.length=a,b=0;b<a;b++)v=r+b*(s-r)/(a-1),M[b]=EV(v),L[b]=CV(v);for(p.length=u,x.length=u,b=0;b<u;b++)B=i+b*(o-i)/(u-1),p[b]=EV(B),x[b]=CV(B);for(b=0;b<a;b++)for(S=0;S<u;S++)C[P++]=t.x*M[b]*x[S],C[P++]=t.y*M[b]*p[S],C[P++]=t.z*L[b];if(g)for(b=0;b<a;b++)for(S=0;S<u;S++)C[P++]=n.x*M[b]*x[S],C[P++]=n.y*M[b]*p[S],C[P++]=n.z*L[b];for(P=0,b=0;b<f*A;b++){let R=b*a;for(S=0;S<a-1;S++)I[P++]=R+S,I[P++]=R+S+1}let T=f*a*A;for(b=0;b<u;b++)for(S=0;S<a-1;S++)I[P++]=T+b+S*u,I[P++]=T+b+(S+1)*u;if(g)for(T=f*a*A+u*a,b=0;b<u;b++)for(S=0;S<a-1;S++)I[P++]=T+b+S*u,I[P++]=T+b+(S+1)*u;if(g){let R=f*a*A,O=R+a*u;if(m)for(b=0;b<u;b++)I[P++]=R+b,I[P++]=O+b;if(_)for(R+=a*u-u,O+=a*u-u,b=0;b<u;b++)I[P++]=R+b,I[P++]=O+b}let w=new yn({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:C})});if(l(e._offsetAttribute)){let R=C.length,O=e._offsetAttribute===hn.NONE?0:1,k=new Uint8Array(R/3).fill(O);w.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:k})}return new ht({attributes:w,indices:I,primitiveType:Me.LINES,boundingSphere:le.fromEllipsoid(c),offsetAttribute:e._offsetAttribute})};var af=MT;function NT(e){let t=e.radius??1,i={radii:new d(t,t,t),stackPartitions:e.stackPartitions,slicePartitions:e.slicePartitions,subdivisions:e.subdivisions};this._ellipsoidGeometry=new af(i),this._workerName="createSphereOutlineGeometry"}NT.packedLength=af.packedLength;NT.pack=function(e,t,n){return af.pack(e._ellipsoidGeometry,t,n)};var YXe=new af,R0={radius:void 0,radii:new d,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0};NT.unpack=function(e,t,n){let i=af.unpack(e,t,YXe);return R0.stackPartitions=i._stackPartitions,R0.slicePartitions=i._slicePartitions,R0.subdivisions=i._subdivisions,l(n)?(d.clone(i._radii,R0.radii),n._ellipsoidGeometry=new af(R0),n):(R0.radius=i._radii.x,new NT(R0))};NT.createGeometry=function(e){return af.createGeometry(e._ellipsoidGeometry)};var dg=NT;function LT(e,t){t===0&&(t=D.EPSILON7),this._boundingSphere=new le(e,t)}Object.defineProperties(LT.prototype,{center:{get:function(){return this._boundingSphere.center}},radius:{get:function(){return this._boundingSphere.radius}},boundingVolume:{get:function(){return this._boundingSphere}},boundingSphere:{get:function(){return this._boundingSphere}}});LT.prototype.distanceToCamera=function(e){let t=this._boundingSphere;return Math.max(0,d.distance(t.center,e.camera.positionWC)-t.radius)};LT.prototype.intersectPlane=function(e){return le.intersectPlane(this._boundingSphere,e)};LT.prototype.update=function(e,t){d.clone(e,this._boundingSphere.center),this._boundingSphere.radius=t};LT.prototype.createDebugVolume=function(e){let t=new dg({radius:this.radius}),n=N.fromTranslation(this.center,new N.clone(N.IDENTITY)),i=new Pt({geometry:t,id:"outline",modelMatrix:n,attributes:{color:$t.fromColor(e)}});return new Qn({geometryInstances:i,appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})};var hg=LT;var qXe=new d,KXe=new d,XXe=new d,JXe=new d;function M0(e,t,n){n=d.cross(e,t,n);let i=d.magnitude(n);return d.multiplyByScalar(n,D.EPSILON7/i,n)}function eq(e,t){let n=d.normalize(e,JXe),i=d.equalsEpsilon(n,d.UNIT_X,D.EPSILON6)?d.UNIT_Y:d.UNIT_X;return M0(e,i,t)}function Che(e){let t=J.getColumn(e,0,qXe),n=J.getColumn(e,1,KXe),i=J.getColumn(e,2,XXe),o=d.equals(t,d.ZERO),r=d.equals(n,d.ZERO),s=d.equals(i,d.ZERO);return!o&&!r&&!s?e:o&&r&&s?(e[0]=D.EPSILON7,e[4]=D.EPSILON7,e[8]=D.EPSILON7,e):(o&&!r&&!s?t=M0(n,i,t):!o&&r&&!s?n=M0(t,i,n):!o&&!r&&s?i=M0(n,t,i):o?r?s||(t=eq(i,t),n=M0(i,t,n)):(t=eq(n,t),i=M0(n,t,i)):(n=eq(t,n),i=M0(n,t,i)),J.setColumn(e,0,t,e),J.setColumn(e,1,n,e),J.setColumn(e,2,i,e),e)}function OT(e,t){t=Che(t),this._orientedBoundingBox=new Fn(e,t),this._boundingSphere=le.fromOrientedBoundingBox(this._orientedBoundingBox)}Object.defineProperties(OT.prototype,{boundingVolume:{get:function(){return this._orientedBoundingBox}},boundingSphere:{get:function(){return this._boundingSphere}}});OT.prototype.distanceToCamera=function(e){return Math.sqrt(this._orientedBoundingBox.distanceSquaredTo(e.camera.positionWC))};OT.prototype.intersectPlane=function(e){return this._orientedBoundingBox.intersectPlane(e)};OT.prototype.update=function(e,t){d.clone(e,this._orientedBoundingBox.center),t=Che(t),J.clone(t,this._orientedBoundingBox.halfAxes),le.fromOrientedBoundingBox(this._orientedBoundingBox,this._boundingSphere)};OT.prototype.createDebugVolume=function(e){let t=new ah({minimum:new d(-1,-1,-1),maximum:new d(1,1,1)}),n=N.fromRotationTranslation(this.boundingVolume.halfAxes,this.boundingVolume.center),i=new Pt({geometry:t,id:"outline",modelMatrix:n,attributes:{color:$t.fromColor(e)}});return new Qn({geometryInstances:i,appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})};var gu=OT;function Ar(e,t,n,i){this._tileset=e,this._header=n;let o=l(n.contents),r=o&&n.contents.length>1||Ei(n,"3DTILES_multiple_contents"),s=o&&!r?n.contents[0]:n.content;this._contentHeader=s,this.transform=l(n.transform)?N.unpack(n.transform):N.clone(N.IDENTITY);let a=l(i)?i.computedTransform:e.modelMatrix,c=N.multiply(a,this.transform,new N),u=l(i)?i._initialTransform:N.IDENTITY;this._initialTransform=N.multiply(u,this.transform,new N),this.computedTransform=c,this.metadata=WL(e,n),this._verticalExaggeration=1,this._verticalExaggerationRelativeHeight=0,this._boundingVolume=this.createBoundingVolume(n.boundingVolume,c),this._boundingVolume2D=void 0;let f;l(s)&&l(s.boundingVolume)&&(f=this.createBoundingVolume(s.boundingVolume,c)),this._contentBoundingVolume=f,this._contentBoundingVolume2D=void 0;let h;l(n.viewerRequestVolume)&&(h=this.createBoundingVolume(n.viewerRequestVolume,c)),this._viewerRequestVolume=h,this.geometricError=n.geometricError,this._geometricError=n.geometricError,l(this._geometricError)||(this._geometricError=l(i)?i._geometricError:e._geometricError,Ar._deprecationWarning("geometricErrorUndefined","Required property geometricError is undefined for this tile. Using parent's geometric error instead.")),this.updateGeometricErrorScale();let A;l(n.refine)?((n.refine==="replace"||n.refine==="add")&&Ar._deprecationWarning("lowercase-refine",`This tile uses a lowercase refine "${n.refine}". Instead use "${n.refine.toUpperCase()}".`),A=n.refine.toUpperCase()==="REPLACE"?tr.REPLACE:tr.ADD):l(i)?A=i.refine:A=tr.REPLACE,this.refine=A,this.children=[],this.parent=i;let g,m=!1,_,y,C;if(t=we.createIfNeeded(t),r)_=ir.UNLOADED,y=t.clone();else if(l(s)){let S=s.uri;l(s.url)&&(Ar._deprecationWarning("contentUrl",'This tileset JSON uses the "content.url" property which has been deprecated. Use "content.uri" instead.'),S=s.url),S===""?(Ar._deprecationWarning("contentUriEmpty","content.uri property is an empty string, which creates a circular dependency, making this tileset invalid. Omit the content property instead"),g=new wT(e,this),m=!0,_=ir.READY):(_=ir.UNLOADED,y=t.getDerivedResource({url:S}),C=Bc.getServerKey(y.getUrlComponent()))}else g=new wT(e,this),m=!0,_=ir.READY;this._content=g,this._contentResource=y,this._contentState=_,this._expiredContent=void 0,this._serverKey=C,this.hasEmptyContent=m,this.hasTilesetContent=!1,this.hasImplicitContent=!1,this.hasRenderableContent=!m,this.hasImplicitContentMetadata=!1,this.hasMultipleContents=r,this.cacheNode=void 0;let E=n.expire,I,b;l(E)&&(I=E.duration,l(E.date)&&(b=K.fromIso8601(E.date))),this.expireDuration=I,this.expireDate=b,this.lastStyleTime=0,this._optimChildrenWithinParent=_d.NOT_COMPUTED,this.clippingPlanesDirty=!1,this.clippingPolygonsDirty=!1,this.priorityDeferred=!1,this.implicitTileset=void 0,this.implicitCoordinates=void 0,this.implicitSubtree=void 0,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._screenSpaceErrorProgressiveResolution=0,this._visibilityPlaneMask=0,this._visible=!1,this._inRequestVolume=!1,this._finalResolution=!0,this._depth=0,this._stackLength=0,this._selectionDepth=0,this._updatedVisibilityFrame=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._wasSelectedLastFrame=!1,this._requestedFrame=0,this._ancestorWithContent=void 0,this._ancestorWithContentAvailable=void 0,this._refines=!1,this._shouldSelect=!1,this._isClipped=!0,this._isClippedByPolygon=!1,this._clippingPlanesState=0,this._clippingPolygonsState=0,this._debugBoundingVolume=void 0,this._debugContentBoundingVolume=void 0,this._debugViewerRequestVolume=void 0,this._debugColor=G.fromRandom({alpha:1}),this._debugColorizeTiles=!1,this._priority=0,this._priorityHolder=this,this._priorityProgressiveResolution=!1,this._priorityProgressiveResolutionScreenSpaceErrorLeaf=!1,this._priorityReverseScreenSpaceError=0,this._foveatedFactor=0,this._wasMinPriorityChild=!1,this._loadTimestamp=new K,this._commandsLength=0,this._color=void 0,this._colorDirty=!1,this._request=void 0}Ar._deprecationWarning=Tr;Object.defineProperties(Ar.prototype,{tileset:{get:function(){return this._tileset}},content:{get:function(){return this._content}},boundingVolume:{get:function(){return this._boundingVolume}},contentBoundingVolume:{get:function(){return this._contentBoundingVolume??this._boundingVolume}},boundingSphere:{get:function(){return this._boundingVolume.boundingSphere}},isVisible:{get:function(){return this._visible&&this._inRequestVolume}},extras:{get:function(){return this._header.extras}},color:{get:function(){return l(this._color)||(this._color=new G),G.clone(this._color)},set:function(e){this._color=G.clone(e,this._color),this._colorDirty=!0}},contentAvailable:{get:function(){return this.contentReady&&this.hasRenderableContent||l(this._expiredContent)&&!this.contentFailed}},contentReady:{get:function(){return this._contentState===ir.READY}},contentUnloaded:{get:function(){return this._contentState===ir.UNLOADED}},hasUnloadedRenderableContent:{get:function(){return this.hasRenderableContent&&this.contentUnloaded}},contentExpired:{get:function(){return this._contentState===ir.EXPIRED}},contentFailed:{get:function(){return this._contentState===ir.FAILED}},commandsLength:{get:function(){return this._commandsLength}}});var by=new d;function ZXe(e,t){let{tileset:n,boundingSphere:i}=e,{radius:o,center:r}=i,{camera:s}=t,a=d.multiplyByScalar(s.directionWC,e._centerZDepth,by),c=d.add(s.positionWC,a,by),u=d.subtract(c,r,by);if(d.magnitude(u)>o){let b=d.normalize(u,by),S=d.multiplyByScalar(b,o,by),B=d.add(r,S,by),v=d.subtract(B,s.positionWC,by),P=d.normalize(v,by);e._foveatedFactor=1-Math.abs(d.dot(s.directionWC,P))}else e._foveatedFactor=0;let A=e.refine===tr.REPLACE,g=n.isSkippingLevelOfDetail;if(A&&!g||!n.foveatedScreenSpaceError||n.foveatedConeSize===1||e._priorityProgressiveResolution&&A&&g||n._pass===qo.PRELOAD_FLIGHT||n._pass===qo.PRELOAD)return!1;let m=1-Math.cos(s.frustum.fov*.5),_=n.foveatedConeSize*m;if(e._foveatedFactor<=_)return!1;let y=m-_,C=D.clamp((e._foveatedFactor-_)/y,0,1),E=n.foveatedInterpolationCallback(n.foveatedMinimumScreenSpaceErrorRelaxation,n.memoryAdjustedScreenSpaceError,C),I=e._screenSpaceError===0&&l(e.parent)?e.parent._screenSpaceError*.5:e._screenSpaceError;return n.memoryAdjustedScreenSpaceError-E<=I}var The=new K;Ar.prototype.getScreenSpaceError=function(e,t,n){let i=this._tileset,o=n??1,r=l(this.parent)?this.parent.geometricError:i._scaledGeometricError,s=t?r:this.geometricError;if(s===0)return 0;let{camera:a,context:c}=e,u=a.frustum,f=c.drawingBufferWidth,h=c.drawingBufferHeight*o,A;if(e.mode===ie.SCENE2D||u instanceof An){let g=u.offCenterFrustum;l(g)&&(u=g);let m=Math.max(u.top-u.bottom,u.right-u.left)/Math.max(f,h);A=s/m}else{let g=Math.max(this._distanceToCamera,D.EPSILON7),m=u.sseDenominator;if(A=s*h/(g*m),i.dynamicScreenSpaceError){let _=i._dynamicScreenSpaceErrorComputedDensity,y=i.dynamicScreenSpaceErrorFactor,C=D.fog(g,_)*y;A-=C}}return A/=e.pixelRatio,A};function $Xe(e,t){if(e.progressiveResolutionHeightFraction<=0||e.progressiveResolutionHeightFraction>.5)return!1;let n=e.memoryAdjustedScreenSpaceError,i=t._screenSpaceErrorProgressiveResolution>n;t._priorityProgressiveResolutionScreenSpaceErrorLeaf=!1;let o=t.parent,r=t._screenSpaceErrorProgressiveResolution<=n,s=l(o)&&o._screenSpaceErrorProgressiveResolution>n;return r&&s&&(t._priorityProgressiveResolutionScreenSpaceErrorLeaf=!0,i=!0),i}function eJe(e,t){let n=t.parent,o=l(n)&&(!e.isSkippingLevelOfDetail||t._screenSpaceError===0||n.hasTilesetContent||n.hasImplicitContent)?n._screenSpaceError:t._screenSpaceError;return e.root._screenSpaceError-o}Ar.prototype.updateVisibility=function(e){let{parent:t,tileset:n}=this;if(this._updatedVisibilityFrame===n._updatedVisibilityFrame)return;let i=l(t)?t.computedTransform:n.modelMatrix,o=l(t)?t._visibilityPlaneMask:Os.MASK_INDETERMINATE;this.updateTransform(i,e),this._distanceToCamera=this.distanceToTile(e),this._centerZDepth=this.distanceToTileCenter(e),this._screenSpaceError=this.getScreenSpaceError(e,!1),this._screenSpaceErrorProgressiveResolution=this.getScreenSpaceError(e,!1,n.progressiveResolutionHeightFraction),this._visibilityPlaneMask=this.visibility(e,o),this._visible=this._visibilityPlaneMask!==Os.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(e),this._priorityReverseScreenSpaceError=eJe(n,this),this._priorityProgressiveResolution=$Xe(n,this),this.priorityDeferred=ZXe(this,e),this._updatedVisibilityFrame=n._updatedVisibilityFrame};Ar.prototype.updateExpiration=function(){if(l(this.expireDate)&&this.contentReady&&!this.hasEmptyContent&&!this.hasMultipleContents){let e=K.now(The);K.lessThan(this.expireDate,e)&&(this._contentState=ir.EXPIRED,this._expiredContent=this._content)}};function tJe(e){if(!l(e.expireDuration))return;let t=K.now(The);K.addSeconds(t,e.expireDuration,t),l(e.expireDate)?K.lessThan(e.expireDate,t)&&K.clone(t,e.expireDate):e.expireDate=K.clone(t)}function nJe(e){return function(){return e._priority}}Ar.prototype.requestContent=function(){if(!this.hasEmptyContent)return this.hasMultipleContents?iJe(this):rJe(this)};function iJe(e){let t=e._content,n=e._tileset;if(!l(t)){let o=Ei(e._header,"3DTILES_multiple_contents")?e._header.extensions["3DTILES_multiple_contents"]:e._header;t=new jL(n,e,e._contentResource.clone(),o),e._content=t}let i=t.requestInnerContents();if(l(i))return e._contentState=ir.LOADING,i.then(o=>{if(!e.isDestroyed()&&l(o))return e._contentState=ir.PROCESSING,t}).catch(o=>{if(!e.isDestroyed())throw e._contentState=ir.FAILED,o})}async function oJe(e,t,n,i,o){let r=e._contentState;e._contentState=ir.LOADING,++t.statistics.numberOfPendingRequests;let s;try{s=await o}catch(a){if(--t.statistics.numberOfPendingRequests,e.isDestroyed())return;if(n.cancelled||n.state===fi.CANCELLED){e._contentState=r,++t.statistics.numberOfAttemptedRequests;return}throw e._contentState=ir.FAILED,a}if(e.isDestroyed()){--t.statistics.numberOfPendingRequests;return}if(n.cancelled||n.state===fi.CANCELLED){e._contentState=r,--t.statistics.numberOfPendingRequests,++t.statistics.numberOfAttemptedRequests;return}try{let a=await sJe(e,s);return--t.statistics.numberOfPendingRequests,e.isDestroyed()?void 0:(i&&(e.expireDate=void 0),e._content=a,e._contentState=ir.PROCESSING,a)}catch(a){if(--t.statistics.numberOfPendingRequests,e.isDestroyed())return;throw e._contentState=ir.FAILED,a}}function rJe(e){let t=e._contentResource.clone(),n=e.contentExpired;n&&t.setQueryParameters({expired:e.expireDate.toString()});let i=new sr({throttle:!0,throttleByServer:!0,type:Ms.TILES3D,priorityFunction:nJe(e),serverKey:e._serverKey});e._request=i,t.request=i;let o=e._tileset,r=t.fetchArrayBuffer();if(!l(r)){++o.statistics.numberOfAttemptedRequests;return}return oJe(e,o,i,n,r)}async function sJe(e,t){let n=lg(t),i=e._tileset;i._disableSkipLevelOfDetail=i._disableSkipLevelOfDetail||n.contentType===Js.GEOMETRY||n.contentType===Js.VECTOR,(n.contentType===Js.IMPLICIT_SUBTREE||n.contentType===Js.IMPLICIT_SUBTREE_JSON)&&(e.hasImplicitContent=!0,e.hasRenderableContent=!1),n.contentType===Js.EXTERNAL_TILESET&&(e.hasTilesetContent=!0,e.hasRenderableContent=!1);let o,r=b0[n.contentType];if(e.isDestroyed())return;l(n.binaryPayload)?o=await Promise.resolve(r(i,e,e._contentResource,n.binaryPayload.buffer,0)):o=await Promise.resolve(r(i,e,e._contentResource,n.jsonPayload));let s=e._contentHeader;if(e.hasImplicitContentMetadata){let c=e.implicitSubtree,u=e.implicitCoordinates;o.metadata=c.getContentMetadataView(u,0)}else e.hasImplicitContent||(o.metadata=T0(i,s));let a=S0(i,s);return l(a)&&(o.group=new vE({metadata:a})),o}Ar.prototype.cancelRequests=function(){this.hasMultipleContents?this._content.cancelRequests():this._request.cancel()};Ar.prototype.unloadContent=function(){this.hasRenderableContent&&(this._content=this._content&&this._content.destroy(),this._contentState=ir.UNLOADED,this.lastStyleTime=0,this.clippingPlanesDirty=this._clippingPlanesState===0,this._clippingPlanesState=0,this.clippingPolygonsDirty=this._clippingPolygonsState===0,this._clippingPolygonsState=0,this._debugColorizeTiles=!1,this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy())};var She=new le;function nq(e,t){if(t.mode!==ie.SCENE3D&&!l(e._boundingVolume2D)){let n=e._boundingVolume.boundingSphere,i=le.projectTo2D(n,t.mapProjection,She);e._boundingVolume2D=new hg(i.center,i.radius)}return t.mode!==ie.SCENE3D?e._boundingVolume2D:e._boundingVolume}function aJe(e,t){if(t.mode!==ie.SCENE3D&&!l(e._contentBoundingVolume2D)){let n=e._contentBoundingVolume.boundingSphere,i=le.projectTo2D(n,t.mapProjection,She);e._contentBoundingVolume2D=new hg(i.center,i.radius)}return t.mode!==ie.SCENE3D?e._contentBoundingVolume2D:e._contentBoundingVolume}Ar.prototype.visibility=function(e,t){let n=e.cullingVolume,i=nq(this,e),o=this._tileset,r=o.clippingPlanes;if(l(r)&&r.enabled){let a=r.computeIntersectionWithBoundingVolume(i,o.clippingPlanesOriginMatrix);if(this._isClipped=a!==tn.INSIDE,a===tn.OUTSIDE)return Os.MASK_OUTSIDE}let s=o.clippingPolygons;if(l(s)&&s.enabled){let a=s.computeIntersectionWithBoundingVolume(i);this._isClippedByPolygon=a!==tn.OUTSIDE}return n.computeVisibilityWithPlaneMask(i,t)};Ar.prototype.contentVisibility=function(e){if(!l(this._contentBoundingVolume))return tn.INSIDE;if(this._visibilityPlaneMask===Os.MASK_INSIDE)return tn.INSIDE;let t=e.cullingVolume,n=aJe(this,e),i=this._tileset,o=i.clippingPlanes;if(l(o)&&o.enabled){let s=o.computeIntersectionWithBoundingVolume(n,i.clippingPlanesOriginMatrix);if(this._isClipped=s!==tn.INSIDE,s===tn.OUTSIDE)return tn.OUTSIDE}let r=i.clippingPolygons;if(l(r)&&r.enabled){let s=r.computeIntersectionWithBoundingVolume(n);if(this._isClippedByPolygon=s!==tn.OUTSIDE,s===tn.INSIDE)return tn.OUTSIDE}return t.computeVisibility(n)};Ar.prototype.distanceToTile=function(e){return nq(this,e).distanceToCamera(e)};var cJe=new d;Ar.prototype.distanceToTileCenter=function(e){let n=nq(this,e).boundingVolume,i=d.subtract(n.center,e.camera.positionWC,cJe);return d.dot(e.camera.directionWC,i)};Ar.prototype.insideViewerRequestVolume=function(e){let t=this._viewerRequestVolume;return!l(t)||t.distanceToCamera(e)===0};var whe=new J,Bhe=new d,lJe=new J,iq=new d,Dhe=new ae,vhe=new Fn,tq=new N;function uJe(e,t,n){let i=d.fromElements(e[0],e[1],e[2],iq),o=J.fromArray(e,3,lJe);i=N.multiplyByPoint(t,i,i);let r=N.getMatrix3(t,whe);return o=J.multiply(r,o,o),l(n)?(n.update(i,o),n):new gu(i,o)}function Ehe(e,t,n,i){let o=ae.unpack(e,0,Dhe),r=e[4],s=e[5],a=Fn.fromRectangle(o,r,s,te.WGS84,vhe),c=a.center,u=a.halfAxes;t=N.multiplyTransformation(t,N.inverseTransformation(n,tq),tq),c=N.multiplyByPoint(t,c,c);let f=N.getMatrix3(t,whe);return u=J.multiply(f,u,u),l(i)&&i instanceof gu?(i.update(c,u),i):new gu(c,u)}function fJe(e,t,n,i){if(!N.equalsEpsilon(t,n,D.EPSILON8))return i instanceof gu?Ehe(e,t,n,i):Ehe(e,t,n,void 0);let o=ae.unpack(e,0,Dhe);return i instanceof sf?(i.rectangle=ae.clone(o,i.rectangle),i.minimumHeight=e[4],i.maximumHeight=e[5],i.computeBoundingVolumes(te.WGS84),i):new sf({rectangle:o,minimumHeight:e[4],maximumHeight:e[5]})}function dJe(e,t,n){let i=d.fromElements(e[0],e[1],e[2],iq),o=e[3];i=N.multiplyByPoint(t,i,i);let r=N.getScale(t,Bhe),s=d.maximumComponent(r);return o*=s,l(n)?(n.update(i,o),n):new hg(i,o)}Ar.prototype.createBoundingVolume=function(e,t,n){let i=this.metadata,o;if(l(i)&&(o=KE.parseBoundingVolumeSemantic("TILE",i)),l(o)&&(e=o),!l(e))throw new ce("boundingVolume must be defined");if(Ei(e,"3DTILES_bounding_volume_S2"))return new XL(e.extensions["3DTILES_bounding_volume_S2"]);let{box:r,region:s,sphere:a}=e;if(l(r)){let c=uJe(r,t,n);return this._verticalExaggeration!==1&&Ihe(c,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c}if(l(s)){let c=fJe(s,t,this._initialTransform,n);return this._verticalExaggeration===1||(c instanceof gu?Ihe(c,this._verticalExaggeration,this._verticalExaggerationRelativeHeight):(c.minimumHeight=Ur.getHeight(c.minimumHeight,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c.maximumHeight=Ur.getHeight(c.maximumHeight,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c.computeBoundingVolumes(te.WGS84))),c}if(l(a)){let c=dJe(a,t,n);if(this._verticalExaggeration!==1){let u=Ur.getPosition(c.center,te.WGS84,this._verticalExaggeration,this._verticalExaggerationRelativeHeight,iq),f=c.radius*this._verticalExaggeration;c.update(u,f)}return c}throw new ce("boundingVolume must contain a sphere, region, or box")};var hJe=d.unpackArray(new Array(24).fill(0));function Ihe(e,t,n){let i=e.boundingVolume.computeCorners(hJe).map(r=>Ur.getPosition(r,te.WGS84,t,n,r)),o=Fn.fromPoints(i,vhe);e.update(o.center,o.halfAxes)}Ar.prototype.updateTransform=function(e,t){e=e??N.IDENTITY;let n=N.multiplyTransformation(e,this.transform,tq),i=!N.equals(n,this.computedTransform),o=l(t)&&(this._verticalExaggeration!==t.verticalExaggeration||this._verticalExaggerationRelativeHeight!==t.verticalExaggerationRelativeHeight);if(!i&&!o)return;i&&N.clone(n,this.computedTransform),o&&(this._verticalExaggeration=t.verticalExaggeration,this._verticalExaggerationRelativeHeight=t.verticalExaggerationRelativeHeight);let r=this._header,s=this._contentHeader;this._boundingVolume=this.createBoundingVolume(r.boundingVolume,this.computedTransform,this._boundingVolume),l(this._contentBoundingVolume)&&(this._contentBoundingVolume=this.createBoundingVolume(s.boundingVolume,this.computedTransform,this._contentBoundingVolume)),l(this._viewerRequestVolume)&&(this._viewerRequestVolume=this.createBoundingVolume(r.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume)),this.updateGeometricErrorScale(),this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy()};Ar.prototype.updateGeometricErrorScale=function(){let e=N.getScale(this.computedTransform,Bhe),t=d.maximumComponent(e);if(this.geometricError=this._geometricError*t,!l(this.parent)){let n=this._tileset;n._scaledGeometricError=n._geometricError*t}};function mJe(e,t,n,i){if(!i.isRender)return;let o=l(e._contentHeader)&&l(e._contentHeader.boundingVolume),r=t.debugShowBoundingVolume||t.debugShowContentBoundingVolume&&!o;if(r){let c;e._finalResolution?e.hasRenderableContent?c=G.WHITE:c=G.DARKGRAY:c=G.YELLOW,l(e._debugBoundingVolume)||(e._debugBoundingVolume=e._boundingVolume.createDebugVolume(c)),e._debugBoundingVolume.update(n);let u=e._debugBoundingVolume.getGeometryInstanceAttributes("outline");u.color=$t.toValue(c,u.color)}else!r&&l(e._debugBoundingVolume)&&(e._debugBoundingVolume=e._debugBoundingVolume.destroy());t.debugShowContentBoundingVolume&&o?(l(e._debugContentBoundingVolume)||(e._debugContentBoundingVolume=e._contentBoundingVolume.createDebugVolume(G.BLUE)),e._debugContentBoundingVolume.update(n)):!t.debugShowContentBoundingVolume&&l(e._debugContentBoundingVolume)&&(e._debugContentBoundingVolume=e._debugContentBoundingVolume.destroy()),t.debugShowViewerRequestVolume&&l(e._viewerRequestVolume)?(l(e._debugViewerRequestVolume)||(e._debugViewerRequestVolume=e._viewerRequestVolume.createDebugVolume(G.YELLOW)),e._debugViewerRequestVolume.update(n)):!t.debugShowViewerRequestVolume&&l(e._debugViewerRequestVolume)&&(e._debugViewerRequestVolume=e._debugViewerRequestVolume.destroy());let s=t.debugColorizeTiles&&!e._debugColorizeTiles||l(t._heatmap.tilePropertyName),a=!t.debugColorizeTiles&&e._debugColorizeTiles;s?(t._heatmap.colorize(e,n),e._debugColorizeTiles=!0,e.color=e._debugColor):a&&(e._debugColorizeTiles=!1,e.color=G.WHITE),e._colorDirty&&(e._colorDirty=!1,e._content.applyDebugSettings(!0,e._color)),a&&t.makeStyleDirty()}function AJe(e,t,n){let i=e._expiredContent;if(!e.hasMultipleContents&&l(i)){if(!e.contentReady){try{i.update(t,n)}catch{}return}e._expiredContent.destroy(),e._expiredContent=void 0}if(l(e.content))try{e.content.update(t,n)}catch(o){throw e._contentState=ir.FAILED,o}}function pJe(e,t){let n=t.clippingPlanes,i=0;l(n)&&e._isClipped&&n.enabled&&(i=n.clippingPlanesState),i!==e._clippingPlanesState&&(e._clippingPlanesState=i,e.clippingPlanesDirty=!0)}function gJe(e,t){let n=t.clippingPolygons,i=0;l(n)&&e._isClippedByPolygon&&n.enabled&&(i=n.clippingPolygonsState),i!==e._clippingPolygonsState&&(e._clippingPolygonsState=i,e.clippingPolygonsDirty=!0)}Ar.prototype.update=function(e,t,n){let{commandList:i}=t,o=i.length;pJe(this,e),gJe(this,e),mJe(this,e,t,n),AJe(this,e,t);let r=i.length;this._commandsLength=r-o;for(let s=o;s<r;++s){let a=i[s],c=a.pass===Be.TRANSLUCENT;a.depthForTranslucentClassification=c}this.clippingPlanesDirty=!1,this.clippingPolygonsDirty=!1};var xhe=[];Ar.prototype.process=function(e,t){!this.contentExpired&&!this.contentReady&&this._content.ready&&(tJe(this),this._selectedFrame=0,this.lastStyleTime=0,K.now(this._loadTimestamp),this._contentState=ir.READY,!this.hasTilesetContent&&!this.hasImplicitContent&&(e._statistics.incrementLoadCounts(this.content),++e._statistics.numberOfTilesWithContentReady,++e._statistics.numberOfLoadedTilesTotal,e._cache.add(this)));let n=t.commandList;t.commandList=xhe;try{this._content.update(e,t)}catch(i){throw this._contentState=ir.FAILED,i}xhe.length=0,t.commandList=n};function bhe(e,t,n){let i=e*Math.pow(10,t);return parseInt(i)*Math.pow(10,n)}function IV(e,t,n){return Math.max(D.normalize(e,t,n)-D.EPSILON7,0)}Ar.prototype.updatePriority=function(){let e=this.tileset,t=e.preferLeaves,n=e._minimumPriority,i=e._maximumPriority,o=4,r=1,s=0,a=o,c=s+a,u=o,f=c+u,h=r,A=Math.pow(10,f),g=f+h,m=r,_=Math.pow(10,g),y=g+m,C=Math.pow(10,y),E=IV(this._depth,n.depth,i.depth);E=t?1-E:E;let b=!e.isSkippingLevelOfDetail&&this.refine===tr.REPLACE?IV(this._priorityHolder._distanceToCamera,n.distance,i.distance):IV(this._priorityReverseScreenSpaceError,n.reverseScreenSpaceError,i.reverseScreenSpaceError),S=bhe(b,a,s),B=this._priorityProgressiveResolution?0:A,v=IV(this._priorityHolder._foveatedFactor,n.foveatedFactor,i.foveatedFactor),P=bhe(v,u,c),M=this.priorityDeferred?_:0,L=e._pass===qo.PRELOAD_FLIGHT?0:C;this._priority=E+S+B+P+M+L};Ar.prototype.isDestroyed=function(){return!1};Ar.prototype.destroy=function(){return this._content=this._content&&this._content.destroy(),this._expiredContent=this._expiredContent&&!this._expiredContent.isDestroyed()&&this._expiredContent.destroy(),this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy(),ue(this)};var xd=Ar;function mg(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.group,i=e.class,o=l(n.properties)?n.properties:{};this._class=i,this._properties=o,this._id=t,this._extras=n.extras,this._extensions=n.extensions}Object.defineProperties(mg.prototype,{class:{get:function(){return this._class}},id:{get:function(){return this._id}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});mg.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};mg.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};mg.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};mg.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};mg.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};mg.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};mg.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var FT=mg;function Ag(e){e=e??V.EMPTY_OBJECT;let t=e.tileset,n=e.class,i=l(t.properties)?t.properties:{};this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(Ag.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});Ag.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};Ag.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};Ag.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};Ag.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};Ag.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};Ag.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};Ag.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var JL=Ag;function Phe(e){e=e??V.EMPTY_OBJECT;let t=e.metadataJson,n=e.schema,i=t.metadata??t.tileset,o;l(i)&&(o=new JL({tileset:i,class:n.classes[i.class]}));let r=[],s=[],a=t.groups;if(Array.isArray(a)){let c=a.length;for(let u=0;u<c;u++){let f=a[u];s.push(new FT({group:f,class:n.classes[f.class]}))}}else if(l(a)){r=Object.keys(a).sort();let c=r.length;for(let u=0;u<c;u++){let f=r[u];if(a.hasOwnProperty(f)){let h=a[f];s.push(new FT({id:f,group:a[f],class:n.classes[h.class]}))}}}this._schema=n,this._groups=s,this._groupIds=r,this._tileset=o,this._statistics=t.statistics,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(Phe.prototype,{schema:{get:function(){return this._schema}},groups:{get:function(){return this._groups}},groupIds:{get:function(){return this._groupIds}},tileset:{get:function(){return this._tileset}},statistics:{get:function(){return this._statistics}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var N0=Phe;var Rhe={},_Je=new d;Rhe.checkChildrenWithinParent=function(e){let t=e.children,n=t.length,i=e.boundingVolume;if(i instanceof gu||i instanceof sf){let o=i._orientedBoundingBox;e._optimChildrenWithinParent=_d.USE_OPTIMIZATION;for(let r=0;r<n;++r){let a=t[r].boundingVolume;if(!(a instanceof gu||a instanceof sf)){e._optimChildrenWithinParent=_d.SKIP_OPTIMIZATION;break}let c=a._orientedBoundingBox,u=d.subtract(c.center,o.center,_Je),f=d.magnitude(u);d.divideByScalar(u,f,u);let h=Math.abs(o.halfAxes[0]*u.x)+Math.abs(o.halfAxes[1]*u.y)+Math.abs(o.halfAxes[2]*u.z)+Math.abs(o.halfAxes[3]*u.x)+Math.abs(o.halfAxes[4]*u.y)+Math.abs(o.halfAxes[5]*u.z)+Math.abs(o.halfAxes[6]*u.x)+Math.abs(o.halfAxes[7]*u.y)+Math.abs(o.halfAxes[8]*u.z),A=Math.abs(c.halfAxes[0]*u.x)+Math.abs(c.halfAxes[1]*u.y)+Math.abs(c.halfAxes[2]*u.z)+Math.abs(c.halfAxes[3]*u.x)+Math.abs(c.halfAxes[4]*u.y)+Math.abs(c.halfAxes[5]*u.z)+Math.abs(c.halfAxes[6]*u.x)+Math.abs(c.halfAxes[7]*u.y)+Math.abs(c.halfAxes[8]*u.z);if(h<=A+f){e._optimChildrenWithinParent=_d.SKIP_OPTIMIZATION;break}}}return e._optimChildrenWithinParent===_d.USE_OPTIMIZATION};var ZL=Rhe;function $L(){this.head=void 0,this.tail=void 0,this._length=0}Object.defineProperties($L.prototype,{length:{get:function(){return this._length}}});function yJe(e,t,n){this.item=e,this.previous=t,this.next=n}$L.prototype.add=function(e){let t=new yJe(e,this.tail,void 0);return l(this.tail)?(this.tail.next=t,this.tail=t):(this.head=t,this.tail=t),++this._length,t};function Mhe(e,t){l(t.previous)&&l(t.next)?(t.previous.next=t.next,t.next.previous=t.previous):l(t.previous)?(t.previous.next=void 0,e.tail=t.previous):l(t.next)?(t.next.previous=void 0,e.head=t.next):(e.head=void 0,e.tail=void 0),t.next=void 0,t.previous=void 0}$L.prototype.remove=function(e){l(e)&&(Mhe(this,e),--this._length)};$L.prototype.splice=function(e,t){if(e===t)return;Mhe(this,t);let n=e.next;e.next=t,this.tail===e?this.tail=t:n.previous=t,t.next=n,t.previous=e};var eO=$L;function L0(){this._list=new eO,this._sentinel=this._list.add(),this._trimTiles=!1}L0.prototype.reset=function(){this._list.splice(this._list.tail,this._sentinel)};L0.prototype.touch=function(e){let t=e.cacheNode;l(t)&&this._list.splice(this._sentinel,t)};L0.prototype.add=function(e){l(e.cacheNode)||(e.cacheNode=this._list.add(e))};L0.prototype.unloadTile=function(e,t,n){let i=t.cacheNode;l(i)&&(this._list.remove(i),t.cacheNode=void 0,n(e,t))};L0.prototype.unloadTiles=function(e,t){let n=this._trimTiles;this._trimTiles=!1;let i=this._list,o=this._sentinel,r=i.head;for(;r!==o&&(e.totalMemoryUsageInBytes>e.cacheBytes||n);){let s=r.item;r=r.next,this.unloadTile(e,s,t)}};L0.prototype.trim=function(){this._trimTiles=!0};var tO=L0;function xV(e){this.tilePropertyName=e,this._minimum=Number.MAX_VALUE,this._maximum=-Number.MAX_VALUE,this._previousMinimum=Number.MAX_VALUE,this._previousMaximum=-Number.MAX_VALUE,this._referenceMinimum={},this._referenceMaximum={}}function rq(e,t){let n;return t==="_loadTimestamp"?n=K.toDate(e).getTime():n=e,n}xV.prototype.setReferenceMinimumMaximum=function(e,t,n){this._referenceMinimum[n]=rq(e,n),this._referenceMaximum[n]=rq(t,n)};function CJe(e,t){let n=e.tilePropertyName;if(l(n)){let i=rq(t[n],n);return l(i)?(e._maximum=Math.max(i,e._maximum),e._minimum=Math.min(i,e._minimum),i):(e.tilePropertyName=void 0,i)}}var oq=[new G(.1,.1,.1,1),new G(.153,.278,.878,1),new G(.827,.231,.49,1),new G(.827,.188,.22,1),new G(1,.592,.259,1),new G(1,.843,0,1)];xV.prototype.colorize=function(e,t){let n=this.tilePropertyName;if(!l(n)||!e.contentAvailable||e._selectedFrame!==t.frameNumber)return;let i=CJe(this,e),o=this._previousMinimum,r=this._previousMaximum;if(o===Number.MAX_VALUE||r===-Number.MAX_VALUE)return;let s=r-o+D.EPSILON7,c=D.clamp(i-o,0,s)/s,u=oq.length-1,f=c*u,h=Math.floor(f),A=Math.ceil(f),g=f-h,m=oq[h],_=oq[A],y=G.clone(G.WHITE);y.red=D.lerp(m.red,_.red,g),y.green=D.lerp(m.green,_.green,g),y.blue=D.lerp(m.blue,_.blue,g),e._debugColor=y};xV.prototype.resetMinimumMaximum=function(){let e=this.tilePropertyName;if(l(e)){let t=this._referenceMinimum[e],n=this._referenceMaximum[e],i=l(t)&&l(n);this._previousMinimum=i?t:this._minimum,this._previousMaximum=i?n:this._maximum,this._minimum=Number.MAX_VALUE,this._maximum=-Number.MAX_VALUE}};var nO=xV;function QT(){this.selected=0,this.visited=0,this.numberOfCommands=0,this.numberOfAttemptedRequests=0,this.numberOfPendingRequests=0,this.numberOfTilesProcessing=0,this.numberOfTilesWithContentReady=0,this.numberOfTilesTotal=0,this.numberOfLoadedTilesTotal=0,this.numberOfFeaturesSelected=0,this.numberOfFeaturesLoaded=0,this.numberOfPointsSelected=0,this.numberOfPointsLoaded=0,this.numberOfTrianglesSelected=0,this.numberOfTilesStyled=0,this.numberOfFeaturesStyled=0,this.numberOfTilesCulledWithChildrenUnion=0,this.geometryByteLength=0,this.texturesByteLength=0,this.texturesReferenceCounterById={},this.batchTableByteLength=0}QT.prototype.clear=function(){this.selected=0,this.visited=0,this.numberOfCommands=0,this.numberOfAttemptedRequests=0,this.numberOfFeaturesSelected=0,this.numberOfPointsSelected=0,this.numberOfTrianglesSelected=0,this.numberOfTilesStyled=0,this.numberOfFeaturesStyled=0,this.numberOfTilesCulledWithChildrenUnion=0};QT.prototype.incrementSelectionCounts=function(e){this.numberOfFeaturesSelected+=e.featuresLength,this.numberOfPointsSelected+=e.pointsLength,this.numberOfTrianglesSelected+=e.trianglesLength;let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.incrementSelectionCounts(t[i])}};QT.prototype.incrementLoadCounts=function(e){if(this.numberOfFeaturesLoaded+=e.featuresLength,this.numberOfPointsLoaded+=e.pointsLength,this.geometryByteLength+=e.geometryByteLength,this.batchTableByteLength+=e.batchTableByteLength,!(e instanceof tf))this.texturesByteLength+=e.texturesByteLength;else{let n=e.getTextureIds();for(let i of n){let o=this.texturesReferenceCounterById[i]??0;if(o===0){let r=e.getTextureByteLengthById(i);this.texturesByteLength+=r}this.texturesReferenceCounterById[i]=o+1}}let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.incrementLoadCounts(t[i])}};QT.prototype.decrementLoadCounts=function(e){if(this.numberOfFeaturesLoaded-=e.featuresLength,this.numberOfPointsLoaded-=e.pointsLength,this.geometryByteLength-=e.geometryByteLength,this.batchTableByteLength-=e.batchTableByteLength,!(e instanceof tf))this.texturesByteLength-=e.texturesByteLength;else{let n=e.getTextureIds();for(let i of n){let o=this.texturesReferenceCounterById[i];if(o===1){delete this.texturesReferenceCounterById[i];let r=e.getTextureByteLengthById(i);this.texturesByteLength-=r}else this.texturesReferenceCounterById[i]=o-1}}let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.decrementLoadCounts(t[i])}};QT.clone=function(e,t){t.selected=e.selected,t.visited=e.visited,t.numberOfCommands=e.numberOfCommands,t.numberOfAttemptedRequests=e.numberOfAttemptedRequests,t.numberOfPendingRequests=e.numberOfPendingRequests,t.numberOfTilesProcessing=e.numberOfTilesProcessing,t.numberOfTilesWithContentReady=e.numberOfTilesWithContentReady,t.numberOfTilesTotal=e.numberOfTilesTotal,t.numberOfFeaturesSelected=e.numberOfFeaturesSelected,t.numberOfFeaturesLoaded=e.numberOfFeaturesLoaded,t.numberOfPointsSelected=e.numberOfPointsSelected,t.numberOfPointsLoaded=e.numberOfPointsLoaded,t.numberOfTrianglesSelected=e.numberOfTrianglesSelected,t.numberOfTilesStyled=e.numberOfTilesStyled,t.numberOfFeaturesStyled=e.numberOfFeaturesStyled,t.numberOfTilesCulledWithChildrenUnion=e.numberOfTilesCulledWithChildrenUnion,t.geometryByteLength=e.geometryByteLength,t.texturesByteLength=e.texturesByteLength,t.texturesReferenceCounterById={...e.texturesReferenceCounterById},t.batchTableByteLength=e.batchTableByteLength};var Wh=QT;function iO(){this._style=void 0,this._styleDirty=!1,this._lastStyleTime=0}Object.defineProperties(iO.prototype,{style:{get:function(){return this._style},set:function(e){e!==this._style&&(this._style=e,this._styleDirty=!0)}}});iO.prototype.makeDirty=function(){this._styleDirty=!0};iO.prototype.resetDirty=function(){this._styleDirty=!1};iO.prototype.applyStyle=function(e){if(!l(e.root)||l(this._style)&&!this._style._ready)return;let t=this._styleDirty;t&&++this._lastStyleTime;let n=this._lastStyleTime,i=e._statistics,o=t?e._selectedTiles:e._selectedTilesToStyle,r=o.length;for(let s=0;s<r;++s){let a=o[s];if(a.lastStyleTime!==n){let c=a.content;a.lastStyleTime=n,c.applyStyle(this._style),i.numberOfFeaturesStyled+=c.featuresLength,++i.numberOfTilesStyled}}};var oO=iO;function EJe(e,t,n){let i=Ei(t,"3DTILES_implicit_tiling")?t.extensions["3DTILES_implicit_tiling"]:t.implicitTiling;this.baseResource=e,this.geometricError=t.geometricError,this.metadataSchema=n;let o=t.boundingVolume;if(!l(o.box)&&!l(o.region)&&!Ei(o,"3DTILES_bounding_volume_S2")&&!Ei(o,"3DTILES_bounding_volume_cylinder"))throw new ce("Only box, region, 3DTILES_bounding_volume_S2, and 3DTILES_bounding_volume_cylinder are supported for implicit tiling");this.boundingVolume=o,this.refine=t.refine,this.subtreeUriTemplate=new we({url:i.subtrees.uri}),this.contentUriTemplates=[],this.contentHeaders=[];let r=IJe(t);for(let s=0;s<r.length;s++){let a=r[s];this.contentHeaders.push(ze(a,!0));let c=new we({url:a.uri});this.contentUriTemplates.push(c)}this.contentCount=this.contentHeaders.length,this.tileHeader=xJe(t),this.subdivisionScheme=Is[i.subdivisionScheme],this.branchingFactor=Is.getBranchingFactor(this.subdivisionScheme),this.subtreeLevels=i.subtreeLevels,l(i.availableLevels)?this.availableLevels=i.availableLevels:this.availableLevels=i.maximumLevel+1}function IJe(e){if(Ei(e,"3DTILES_multiple_contents")){let t=e.extensions["3DTILES_multiple_contents"];return l(t.contents)?t.contents:t.content}return l(e.contents)?e.contents:l(e.content)?[e.content]:[]}function xJe(e){let t=ze(e,!0);return l(t.extensions)&&(delete t.extensions["3DTILES_implicit_tiling"],delete t.extensions["3DTILES_multiple_contents"],Object.keys(t.extensions).length===0&&delete t.extensions),delete t.implicitTiling,delete t.contents,delete t.content,t}var O0=EJe;var rO={};function Nhe(e){return e=(e^e<<8)&16711935,e=(e^e<<4)&252645135,e=(e^e<<2)&858993459,e=(e^e<<1)&1431655765,e}function sq(e){return e=(e^e<<16)&50331903,e=(e^e<<8)&50393103,e=(e^e<<4)&51130563,e=(e^e<<2)&153391689,e}function Lhe(e){return e&=1431655765,e=(e^e>>1)&858993459,e=(e^e>>2)&252645135,e=(e^e>>4)&16711935,e=(e^e>>8)&65535,e}function aq(e){return e&=153391689,e=(e^e>>2)&51130563,e=(e^e>>4)&50393103,e=(e^e>>8)&4278190335,e=(e^e>>16)&1023,e}rO.encode2D=function(e,t){return(Nhe(e)|Nhe(t)<<1)>>>0};rO.decode2D=function(e,t){return l(t)||(t=new Array(2)),t[0]=Lhe(e),t[1]=Lhe(e>>1),t};rO.encode3D=function(e,t,n){return sq(e)|sq(t)<<1|sq(n)<<2};rO.decode3D=function(e,t){return l(t)||(t=new Array(3)),t[0]=aq(e),t[1]=aq(e>>1),t[2]=aq(e>>2),t};var Ty=rO;function or(e){this.subdivisionScheme=e.subdivisionScheme,this.subtreeLevels=e.subtreeLevels,this.level=e.level,this.x=e.x,this.y=e.y,this.z=void 0,e.subdivisionScheme===Is.OCTREE&&(this.z=e.z)}Object.defineProperties(or.prototype,{childIndex:{get:function(){let e=0;return e|=this.x&1,e|=(this.y&1)<<1,this.subdivisionScheme===Is.OCTREE&&(e|=(this.z&1)<<2),e}},mortonIndex:{get:function(){return this.subdivisionScheme===Is.OCTREE?Ty.encode3D(this.x,this.y,this.z):Ty.encode2D(this.x,this.y)}},tileIndex:{get:function(){let e=this.subdivisionScheme===Is.OCTREE?((1<<3*this.level)-1)/7:((1<<2*this.level)-1)/3,t=this.mortonIndex;return e+t}}});or.prototype.getDescendantCoordinates=function(e){let t=this.level+e.level,n=(this.x<<e.level)+e.x,i=(this.y<<e.level)+e.y;if(this.subdivisionScheme===Is.OCTREE){let o=(this.z<<e.level)+e.z;return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i,z:o})}return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i})};or.prototype.getAncestorCoordinates=function(e){let t=1<<e,n=this.level-e,i=Math.floor(this.x/t),o=Math.floor(this.y/t);if(this.subdivisionScheme===Is.OCTREE){let r=Math.floor(this.z/t);return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:n,x:i,y:o,z:r})}return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:n,x:i,y:o})};or.prototype.getOffsetCoordinates=function(e){let t=e.level-this.level,n=1<<t,i=e.x%n,o=e.y%n;if(this.subdivisionScheme===Is.OCTREE){let r=e.z%n;return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:i,y:o,z:r})}return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:i,y:o})};or.prototype.getChildCoordinates=function(e){let t=this.level+1,n=2*this.x+e%2,i=2*this.y+Math.floor(e/2)%2;if(this.subdivisionScheme===Is.OCTREE){let o=2*this.z+Math.floor(e/4)%2;return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i,z:o})}return new or({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i})};or.prototype.getSubtreeCoordinates=function(){return this.getAncestorCoordinates(this.level%this.subtreeLevels)};or.prototype.getParentSubtreeCoordinates=function(){return this.getAncestorCoordinates(this.level%this.subtreeLevels+this.subtreeLevels)};or.prototype.isAncestor=function(e){let t=e.level-this.level;if(t<=0)return!1;let n=e.x>>t,i=e.y>>t,o=this.x===n,r=this.y===i;if(this.subdivisionScheme===Is.OCTREE){let s=e.z>>t,a=this.z===s;return o&&r&&a}return o&&r};or.prototype.isEqual=function(e){return this.subdivisionScheme===e.subdivisionScheme&&this.subtreeLevels===e.subtreeLevels&&this.level===e.level&&this.x===e.x&&this.y===e.y&&(this.subdivisionScheme===Is.OCTREE?this.z===e.z:!0)};or.prototype.isImplicitTilesetRoot=function(){return this.level===0};or.prototype.isSubtreeRoot=function(){return this.level%this.subtreeLevels===0};or.prototype.isBottomOfSubtree=function(){return this.level%this.subtreeLevels===this.subtreeLevels-1};or.prototype.getTemplateValues=function(){let e={level:this.level,x:this.x,y:this.y};return this.subdivisionScheme===Is.OCTREE&&(e.z=this.z),e};var Ohe=[0,0,0];or.fromMortonIndex=function(e,t,n,i){let o;return e===Is.OCTREE?(o=Ty.decode3D(i,Ohe),new or({subdivisionScheme:e,subtreeLevels:t,level:n,x:o[0],y:o[1],z:o[2]})):(o=Ty.decode2D(i,Ohe),new or({subdivisionScheme:e,subtreeLevels:t,level:n,x:o[0],y:o[1]}))};or.fromTileIndex=function(e,t,n){let i,o,r;return e===Is.OCTREE?(i=Math.floor(D.log2(7*n+1)/3),o=((1<<3*i)-1)/7,r=n-o):(i=Math.floor(D.log2(3*n+1)/2),o=((1<<2*i)-1)/3,r=n-o),or.fromMortonIndex(e,t,i,r)};var F0=or;function pg(){}pg.selectTiles=function(e,t){me.throwInstantiationError()};pg.sortChildrenByDistanceToCamera=function(e,t){return t._distanceToCamera===0&&e._distanceToCamera===0?t._centerZDepth-e._centerZDepth:t._distanceToCamera-e._distanceToCamera};pg.canTraverse=function(e){return e.children.length===0?!1:e.hasTilesetContent||e.hasImplicitContent?!e.contentExpired:e._screenSpaceError>e.tileset.memoryAdjustedScreenSpaceError};pg.selectTile=function(e,t){if(e.contentVisibility(t)===tn.OUTSIDE)return;e._wasSelectedLastFrame=!0;let{content:n,tileset:i}=e;n.featurePropertiesDirty?(n.featurePropertiesDirty=!1,e.lastStyleTime=0,i._selectedTilesToStyle.push(e)):e._selectedFrame<t.frameNumber-1&&(i._selectedTilesToStyle.push(e),e._wasSelectedLastFrame=!1),e._selectedFrame=t.frameNumber,i._selectedTiles.push(e)};pg.visitTile=function(e,t){++e.tileset._statistics.visited,e._visitedFrame=t.frameNumber};pg.touchTile=function(e,t){e._touchedFrame!==t.frameNumber&&(e.tileset._cache.touch(e),e._touchedFrame=t.frameNumber)};pg.loadTile=function(e,t){let{tileset:n}=e;if(e._requestedFrame===t.frameNumber||!e.hasUnloadedRenderableContent&&!e.contentExpired||!bJe(e,t))return;let i=t.camera.timeSinceMoved<n.foveatedTimeDelay;e.priorityDeferred&&i||(e._requestedFrame=t.frameNumber,n._requestedTiles.push(e))};function bJe(e,t){let{tileset:n}=e;if(!n._cullRequestsWhileMoving)return!0;let{positionWCDeltaMagnitude:i,positionWCDeltaMagnitudeLastFrame:o}=t.camera,r=i!==0?i:o,s=Math.max(e.boundingSphere.radius*2,1);return n.cullRequestsWhileMovingMultiplier*r/s<1}pg.updateTile=function(e,t){Fhe(e,t),e.updateExpiration(),e._wasMinPriorityChild=!1,e._priorityHolder=e,wJe(e),e._shouldSelect=!1,e._finalResolution=!0};function Fhe(e,t){if(e.updateVisibility(t),!e.isVisible)return;let n=e.children.length>0;if((e.hasTilesetContent||e.hasImplicitContent)&&n){let r=e.children[0];Fhe(r,t),e._visible=r._visible;return}if(TJe(e,t)){e._visible=!1;return}let i=e.refine===tr.REPLACE,o=e._optimChildrenWithinParent===_d.USE_OPTIMIZATION;if(i&&o&&n&&!SJe(e,t)){++e.tileset._statistics.numberOfTilesCulledWithChildrenUnion,e._visible=!1;return}}function TJe(e,t){let{parent:n,tileset:i}=e;return!l(n)||n.hasTilesetContent||n.hasImplicitContent||n.refine!==tr.ADD?!1:e.getScreenSpaceError(t,!0)<=i.memoryAdjustedScreenSpaceError}function SJe(e,t){let n=!1,i=e.children;for(let o=0;o<i.length;++o){let r=i[o];r.updateVisibility(t),n=n||r.isVisible}return n}function wJe(e){let t=e.tileset._minimumPriority,n=e.tileset._maximumPriority,i=e._priorityHolder;n.distance=Math.max(i._distanceToCamera,n.distance),t.distance=Math.min(i._distanceToCamera,t.distance),n.depth=Math.max(e._depth,n.depth),t.depth=Math.min(e._depth,t.depth),n.foveatedFactor=Math.max(i._foveatedFactor,n.foveatedFactor),t.foveatedFactor=Math.min(i._foveatedFactor,t.foveatedFactor),n.reverseScreenSpaceError=Math.max(e._priorityReverseScreenSpaceError,n.reverseScreenSpaceError),t.reverseScreenSpaceError=Math.min(e._priorityReverseScreenSpaceError,t.reverseScreenSpaceError)}var Ca=pg;function Qhe(){}var sO={stack:new El,stackMaximumLength:0};Qhe.selectTiles=function(e,t){e._selectedTiles.length=0,e._requestedTiles.length=0,e.hasMixedContent=!1;let n=!0,i=e.root;if(i.updateVisibility(t),!i.isVisible)return n;let{touchTile:o,visitTile:r}=Ca,s=sO.stack;for(s.push(i);s.length>0;){sO.stackMaximumLength=Math.max(sO.stackMaximumLength,s.length);let a=s.pop(),c=a.refine===tr.ADD,u=a.refine===tr.REPLACE,f=BJe(a);f&&DJe(a,s,t),(c||u&&!f)&&(vJe(e,a),o(a,t),PJe(a,t),a.hasRenderableContent&&!a.contentAvailable&&(n=!1)),r(a,t)}return sO.stack.trim(sO.stackMaximumLength),n};function BJe(e){return e.children.length===0?!1:e.hasTilesetContent||e.hasImplicitContent?!e.contentExpired:(e.hasEmptyContent,!0)}function DJe(e,t,n){let{children:i}=e;for(let o=0;o<i.length;++o){let r=i[o];r.updateVisibility(n),r.isVisible&&t.push(r)}}function vJe(e,t){(t.hasUnloadedRenderableContent||t.contentExpired)&&(t._priority=0,e._requestedTiles.push(t))}function PJe(e,t){e.contentAvailable&&e.contentVisibility(t)!==tn.OUTSIDE&&e.tileset._selectedTiles.push(e)}var aO=Qhe;function khe(){}var cO={stack:new El,stackMaximumLength:0},lO={stack:new El,stackMaximumLength:0};khe.selectTiles=function(e,t){if(e._requestedTiles.length=0,e.debugFreezeFrame)return;e._selectedTiles.length=0,e._selectedTilesToStyle.length=0,e._emptyTiles.length=0,e.hasMixedContent=!1;let n=e.root;if(Ca.updateTile(n,t),!n.isVisible||n.getScreenSpaceError(t,!0)<=e.memoryAdjustedScreenSpaceError)return;MJe(n,t),cO.stack.trim(cO.stackMaximumLength),lO.stack.trim(lO.stackMaximumLength);let i=e._requestedTiles;for(let o=0;o<i.length;++o)i[o].updatePriority()};function cq(e,t){e.contentAvailable&&Ca.selectTile(e,t)}function RJe(e,t,n){let i=e.refine===tr.REPLACE,{tileset:o,children:r}=e,{updateTile:s,loadTile:a,touchTile:c}=Ca;for(let m=0;m<r.length;++m)s(r[m],n);r.sort(Ca.sortChildrenByDistanceToCamera);let u=i&&e.hasRenderableContent,f=!0,h=!1,A=-1,g=Number.MAX_VALUE;for(let m=0;m<r.length;++m){let _=r[m];if(_.isVisible?(t.push(_),_._foveatedFactor<g&&(A=m,g=_._foveatedFactor),h=!0):(u||o.loadSiblings)&&(_._foveatedFactor<g&&(A=m,g=_._foveatedFactor),a(_,n),c(_,n)),u){let y;_._inRequestVolume?_.hasRenderableContent?y=_.contentAvailable:y=NJe(_,n):y=!1,f=f&&y}}if(h||(f=!1),A!==-1&&i){let m=r[A];m._wasMinPriorityChild=!0;let _=(e._wasMinPriorityChild||e===o.root)&&g<=e._priorityHolder._foveatedFactor?e._priorityHolder:e;_._foveatedFactor=Math.min(m._foveatedFactor,_._foveatedFactor),_._distanceToCamera=Math.min(m._distanceToCamera,_._distanceToCamera);for(let y=0;y<r.length;++y)r[y]._priorityHolder=_}return f}function MJe(e,t){let{tileset:n}=e,{canTraverse:i,loadTile:o,visitTile:r,touchTile:s}=Ca,a=cO.stack;for(a.push(e);a.length>0;){cO.stackMaximumLength=Math.max(cO.stackMaximumLength,a.length);let c=a.pop(),u=c.parent,f=!l(u)||u._refines;c._refines=i(c)?RJe(c,a,t)&&f:!1;let h=!c._refines&&f;c.hasRenderableContent?c.refine===tr.ADD?(cq(c,t),o(c,t)):c.refine===tr.REPLACE&&(o(c,t),h&&cq(c,t)):(n._emptyTiles.push(c),o(c,t),h&&cq(c,t)),r(c,t),s(c,t)}}function NJe(e,t){let{canTraverse:n,updateTile:i,loadTile:o,touchTile:r}=Ca,s=!0,a=lO.stack;for(a.push(e);a.length>0;){lO.stackMaximumLength=Math.max(lO.stackMaximumLength,a.length);let c=a.pop(),u=c.children,f=u.length,h=!c.hasRenderableContent&&n(c);if(!h&&!c.contentAvailable&&(s=!1),i(c,t),c.isVisible||(o(c,t),r(c,t)),h)for(let A=0;A<f;++A){let g=u[A];a.push(g)}}return e.hasEmptyContent||s}var uO=khe;function Uhe(){}var fO={stack:new El,stackMaximumLength:0},dO={stack:new El,stackMaximumLength:0},gg={stack:new El,stackMaximumLength:0,ancestorStack:new El,ancestorStackMaximumLength:0},LJe=2;Uhe.selectTiles=function(e,t){if(e._requestedTiles.length=0,e.debugFreezeFrame)return;e._selectedTiles.length=0,e._selectedTilesToStyle.length=0,e._emptyTiles.length=0,e.hasMixedContent=!1;let n=e.root;if(Ca.updateTile(n,t),!n.isVisible||n.getScreenSpaceError(t,!0)<=e.memoryAdjustedScreenSpaceError)return;GJe(n,t),zJe(n,t),fO.stack.trim(fO.stackMaximumLength),dO.stack.trim(dO.stackMaximumLength),gg.stack.trim(gg.stackMaximumLength),gg.ancestorStack.trim(gg.ancestorStackMaximumLength);let i=e._requestedTiles;for(let o=0;o<i.length;++o)i[o].updatePriority()};function OJe(e,t){let{updateTile:n,touchTile:i,selectTile:o}=Ca,r=dO.stack;for(r.push(e);r.length>0;){dO.stackMaximumLength=Math.max(dO.stackMaximumLength,r.length);let a=r.pop().children;for(let c=0;c<a.length;++c){let u=a[c];u.isVisible&&(u.contentAvailable?(n(u,t),i(u,t),o(u,t)):u._depth-e._depth<LJe&&r.push(u))}}}function bV(e,t){let n=e.contentAvailable?e:e._ancestorWithContentAvailable;l(n)?n._shouldSelect=!0:OJe(e,t)}function FJe(e,t){e._ancestorWithContent=void 0,e._ancestorWithContentAvailable=void 0;let{parent:n}=e;if(!l(n))return;let i=!n.hasUnloadedRenderableContent||n._requestedFrame===t.frameNumber;e._ancestorWithContent=i?n:n._ancestorWithContent,e._ancestorWithContentAvailable=n.contentAvailable?n:n._ancestorWithContentAvailable}function QJe(e,t){let n=t._ancestorWithContent;return!e.immediatelyLoadDesiredLevelOfDetail&&(t._priorityProgressiveResolutionScreenSpaceErrorLeaf||l(n)&&t._screenSpaceError<n._screenSpaceError/e.skipScreenSpaceErrorFactor&&t._depth>n._depth+e.skipLevels)}function kJe(e,t,n){let{tileset:i,children:o}=e,{updateTile:r,loadTile:s,touchTile:a}=Ca;for(let u=0;u<o.length;++u)r(o[u],n);o.sort(Ca.sortChildrenByDistanceToCamera);let c=!1;for(let u=0;u<o.length;++u){let f=o[u];f.isVisible?(t.push(f),c=!0):i.loadSiblings&&(s(f,n),a(f,n))}return c}function UJe(e,t){let{tileset:n}=e;return n.immediatelyLoadDesiredLevelOfDetail?!1:l(e._ancestorWithContent)?e._screenSpaceError===0?e.parent._screenSpaceError>t:e._screenSpaceError>t:!0}function GJe(e,t){let{tileset:n}=e,i=n.immediatelyLoadDesiredLevelOfDetail?Number.MAX_VALUE:Math.max(n.baseScreenSpaceError,n.memoryAdjustedScreenSpaceError),{canTraverse:o,loadTile:r,visitTile:s,touchTile:a}=Ca,c=fO.stack;for(c.push(e);c.length>0;){fO.stackMaximumLength=Math.max(fO.stackMaximumLength,c.length);let u=c.pop();FJe(u,t);let f=u.parent,h=!l(f)||f._refines;u._refines=o(u)?kJe(u,c,t)&&h:!1;let A=!u._refines&&h;u.hasRenderableContent?u.refine===tr.ADD?(bV(u,t),r(u,t)):u.refine===tr.REPLACE&&(UJe(u,i)?(r(u,t),A&&bV(u,t)):A?(bV(u,t),r(u,t)):QJe(n,u)&&r(u,t)):(n._emptyTiles.push(u),r(u,t),A&&bV(u,t)),s(u,t),a(u,t)}}function zJe(e,t){let{selectTile:n,canTraverse:i}=Ca,{stack:o,ancestorStack:r}=gg,s;for(o.push(e);o.length>0||r.length>0;){if(gg.stackMaximumLength=Math.max(gg.stackMaximumLength,o.length),gg.ancestorStackMaximumLength=Math.max(gg.ancestorStackMaximumLength,r.length),r.length>0){let u=r.peek();if(u._stackLength===o.length){r.pop(),u!==s&&(u._finalResolution=!1),n(u,t);continue}}let a=o.pop();if(!l(a))continue;let c=i(a);if(a._shouldSelect)if(a.refine===tr.ADD)n(a,t);else{if(a._selectionDepth=r.length,a._selectionDepth>0&&(a.tileset.hasMixedContent=!0),s=a,!c){n(a,t);continue}r.push(a),a._stackLength=o.length}if(c){let u=a.children;for(let f=0;f<u.length;++f){let h=u[f];h.isVisible&&o.push(h)}}}}var hO=Uhe;function $s(){this._layers=[],this.layerAdded=new _e,this.layerRemoved=new _e,this.layerMoved=new _e,this.layerShownOrHidden=new _e}Object.defineProperties($s.prototype,{length:{get:function(){return this._layers.length}}});$s.prototype.add=function(e,t){l(t)?this._layers.splice(t,0,e):(t=this._layers.length,this._layers.push(e)),this._update(),this.layerAdded.raiseEvent(e,t);let i=e.readyEvent.addEventListener(()=>{this.layerShownOrHidden.raiseEvent(e,e._layerIndex,e.show),i()})};$s.prototype.addImageryProvider=function(e,t){let n=new rs(e);return this.add(n,t),n};$s.prototype.remove=function(e,t){t=t??!0;let n=this._layers.indexOf(e);return n!==-1?(this._layers.splice(n,1),this._update(),this.layerRemoved.raiseEvent(e,n),t&&e.destroy(),!0):!1};$s.prototype.removeAll=function(e){e=e??!0;let t=this._layers;for(let n=0,i=t.length;n<i;n++){let o=t[n];this.layerRemoved.raiseEvent(o,n),e&&o.destroy()}this._layers=[]};$s.prototype.contains=function(e){return this.indexOf(e)!==-1};$s.prototype.indexOf=function(e){return this._layers.indexOf(e)};$s.prototype.get=function(e){return this._layers[e]};function TV(e,t){return e.indexOf(t)}function Ghe(e,t,n){let i=e._layers;if(t=D.clamp(t,0,i.length-1),n=D.clamp(n,0,i.length-1),t===n)return;let o=i[t];i[t]=i[n],i[n]=o,e._update(),e.layerMoved.raiseEvent(o,n,t)}$s.prototype.raise=function(e){let t=TV(this._layers,e);Ghe(this,t,t+1)};$s.prototype.lower=function(e){let t=TV(this._layers,e);Ghe(this,t,t-1)};$s.prototype.raiseToTop=function(e){let t=TV(this._layers,e);t!==this._layers.length-1&&(this._layers.splice(t,1),this._layers.push(e),this._update(),this.layerMoved.raiseEvent(e,this._layers.length-1,t))};$s.prototype.lowerToBottom=function(e){let t=TV(this._layers,e);t!==0&&(this._layers.splice(t,1),this._layers.splice(0,0,e),this._update(),this.layerMoved.raiseEvent(e,0,t))};var VJe=new ae;function zhe(e,t,n,i){let o=e.globe._surface._tilesToRender,r;for(let a=0;!l(r)&&a<o.length;++a){let c=o[a];ae.contains(c.rectangle,t)&&(r=c)}if(!l(r))return;let s=r.data.imagery;for(let a=s.length-1;a>=0;--a){let c=s[a],u=c.readyImagery;if(!l(u)||!u.imageryLayer.ready)continue;let f=u.imageryLayer.imageryProvider;if(n&&!l(f.pickFeatures)||!ae.contains(u.rectangle,t))continue;let h=VJe,A=1/1024;h.west=D.lerp(r.rectangle.west,r.rectangle.east,c.textureCoordinateRectangle.x-A),h.east=D.lerp(r.rectangle.west,r.rectangle.east,c.textureCoordinateRectangle.z+A),h.south=D.lerp(r.rectangle.south,r.rectangle.north,c.textureCoordinateRectangle.y-A),h.north=D.lerp(r.rectangle.south,r.rectangle.north,c.textureCoordinateRectangle.w+A),ae.contains(h,t)&&i(u)}}$s.prototype.pickImageryLayers=function(e,t){let n=t.globe.pick(e,t);if(!l(n))return;let i=t.ellipsoid.cartesianToCartographic(n),o=[];if(zhe(t,i,!1,function(r){o.push(r.imageryLayer)}),o.length!==0)return o};$s.prototype.pickImageryLayerFeatures=function(e,t){let n=t.globe.pick(e,t);if(!l(n))return;let i=t.ellipsoid.cartesianToCartographic(n),o=[],r=[];if(zhe(t,i,!0,function(s){if(!s.imageryLayer.ready)return;let c=s.imageryLayer.imageryProvider.pickFeatures(s.x,s.y,s.level,i.longitude,i.latitude);l(c)&&(o.push(c),r.push(s.imageryLayer))}),o.length!==0)return Promise.all(o).then(function(s){let a=[];for(let c=0;c<s.length;++c){let u=s[c],f=r[c];if(l(u)&&u.length>0)for(let h=0;h<u.length;++h){let A=u[h];A.imageryLayer=f,l(A.position)||(A.position=i),a.push(A)}}return a})};$s.prototype.queueReprojectionCommands=function(e){let t=this._layers;for(let n=0,i=t.length;n<i;++n)t[n].queueReprojectionCommands(e)};$s.prototype.cancelReprojections=function(){let e=this._layers;for(let t=0,n=e.length;t<n;++t)e[t].cancelReprojections()};$s.prototype.isDestroyed=function(){return!1};$s.prototype.destroy=function(){return this.removeAll(!0),ue(this)};$s.prototype._update=function(){let e=!0,t=this._layers,n,i,o,r;for(o=0,r=t.length;o<r;++o)i=t[o],i._layerIndex=o,i.show?(i._isBaseLayer=e,e=!1):i._isBaseLayer=!1,i.show!==i._show&&(l(i._show)&&(l(n)||(n=[]),n.push(i)),i._show=i.show);if(l(n))for(o=0,r=n.length;o<r;++o)i=n[o],this.layerShownOrHidden.raiseEvent(i,i._layerIndex,i.show)};var Q0=$s;function Ko(e){e=e??V.EMPTY_OBJECT,this._url=void 0,this._basePath=void 0,this._root=void 0,this._resource=void 0,this._asset=void 0,this._properties=void 0,this._geometricError=void 0,this._scaledGeometricError=void 0,this._extensionsUsed=void 0,this._extensions=void 0,this._modelUpAxis=void 0,this._modelForwardAxis=void 0,this._cache=new tO,this._processingQueue=[],this._selectedTiles=[],this._emptyTiles=[],this._requestedTiles=[],this._selectedTilesToStyle=[],this._loadTimestamp=void 0,this._timeSinceLoad=0,this._updatedVisibilityFrame=0,this._updatedModelMatrixFrame=0,this._modelMatrixChanged=!1,this._previousModelMatrix=void 0,this._extras=void 0,this._credits=void 0,this._showCreditsOnScreen=e.showCreditsOnScreen??!1,this._cullWithChildrenBounds=e.cullWithChildrenBounds??!0,this._allTilesAdditive=!0,this._hasMixedContent=!1,this._stencilClearCommand=void 0,this._backfaceCommands=new El,this._maximumScreenSpaceError=e.maximumScreenSpaceError??16,this._memoryAdjustedScreenSpaceError=this._maximumScreenSpaceError,this._cacheBytes=e.cacheBytes??512*1024*1024;let t=e.maximumCacheOverflowBytes??512*1024*1024;this._maximumCacheOverflowBytes=t,this._styleEngine=new oO,this._styleApplied=!1,this._modelMatrix=l(e.modelMatrix)?N.clone(e.modelMatrix):N.clone(N.IDENTITY),this._addHeightCallbacks=[],this._statistics=new Wh,this._statisticsLast=new Wh,this._statisticsPerPass=new Array(qo.NUMBER_OF_PASSES);for(let o=0;o<qo.NUMBER_OF_PASSES;++o)this._statisticsPerPass[o]=new Wh;this._requestedTilesInFlight=[],this._maximumPriority={foveatedFactor:-Number.MAX_VALUE,depth:-Number.MAX_VALUE,distance:-Number.MAX_VALUE,reverseScreenSpaceError:-Number.MAX_VALUE},this._minimumPriority={foveatedFactor:Number.MAX_VALUE,depth:Number.MAX_VALUE,distance:Number.MAX_VALUE,reverseScreenSpaceError:Number.MAX_VALUE},this._heatmap=new nO(e.debugHeatmapTilePropertyName),this.cullRequestsWhileMoving=e.cullRequestsWhileMoving??!0,this._cullRequestsWhileMoving=!1,this.cullRequestsWhileMovingMultiplier=e.cullRequestsWhileMovingMultiplier??60,this.progressiveResolutionHeightFraction=D.clamp(e.progressiveResolutionHeightFraction??.3,0,.5),this.preferLeaves=e.preferLeaves??!1,this._tilesLoaded=!1,this._initialTilesLoaded=!1,this._tileDebugLabels=void 0,this._classificationType=e.classificationType,this._heightReference=e.heightReference,this._scene=e.scene,this._ellipsoid=e.ellipsoid??te.WGS84,this._initialClippingPlanesOriginMatrix=N.IDENTITY,this._clippingPlanesOriginMatrix=void 0,this._clippingPlanesOriginMatrixDirty=!0,this._vectorClassificationOnly=e.vectorClassificationOnly??!1,this._vectorKeepDecodedPositions=e.vectorKeepDecodedPositions??!1,this._imageryLayers=new Q0(this),this._imageryLayersModificationCounter=0,this._imageryLayersListener=()=>{this._imageryLayersModificationCounter++},this.imageryLayers.layerAdded.addEventListener(this._imageryLayersListener),this.imageryLayers.layerRemoved.addEventListener(this._imageryLayersListener),this.imageryLayers.layerMoved.addEventListener(this._imageryLayersListener),this.imageryLayers.layerShownOrHidden.addEventListener(this._imageryLayersListener),this._asynchronouslyLoadImagery=e.asynchronouslyLoadImagery??!1,this.preloadWhenHidden=e.preloadWhenHidden??!1,this.preloadFlightDestinations=e.preloadFlightDestinations??!0,this._pass=void 0,this.dynamicScreenSpaceError=e.dynamicScreenSpaceError??!0,this.foveatedScreenSpaceError=e.foveatedScreenSpaceError??!0,this._foveatedConeSize=e.foveatedConeSize??.1,this._foveatedMinimumScreenSpaceErrorRelaxation=e.foveatedMinimumScreenSpaceErrorRelaxation??0,this.foveatedInterpolationCallback=e.foveatedInterpolationCallback??D.lerp,this.foveatedTimeDelay=e.foveatedTimeDelay??.2,this.dynamicScreenSpaceErrorDensity=e.dynamicScreenSpaceErrorDensity??2e-4,this.dynamicScreenSpaceErrorFactor=e.dynamicScreenSpaceErrorFactor??24,this.dynamicScreenSpaceErrorHeightFalloff=e.dynamicScreenSpaceErrorHeightFalloff??.25,this._dynamicScreenSpaceErrorComputedDensity=0,this.shadows=e.shadows??Bn.ENABLED,this.show=e.show??!0,this.colorBlendMode=ou.HIGHLIGHT,this.colorBlendAmount=.5,this._pointCloudShading=new Zm(e.pointCloudShading),this._pointCloudEyeDomeLighting=new Qp,this.loadProgress=new _e,this.allTilesLoaded=new _e,this.initialTilesLoaded=new _e,this.tileLoad=new _e,this.tileUnload=new _e,this.tileFailed=new _e,this.tileVisible=new _e,this.skipLevelOfDetail=e.skipLevelOfDetail??!1,this._disableSkipLevelOfDetail=!1,this.baseScreenSpaceError=e.baseScreenSpaceError??1024,this.skipScreenSpaceErrorFactor=e.skipScreenSpaceErrorFactor??16,this.skipLevels=e.skipLevels??1,this.immediatelyLoadDesiredLevelOfDetail=e.immediatelyLoadDesiredLevelOfDetail??!1,this.loadSiblings=e.loadSiblings??!1,this._clippingPlanes=void 0,l(e.clippingPlanes)&&Fs.setOwner(e.clippingPlanes,this,"_clippingPlanes"),this._clippingPolygons=void 0,l(e.clippingPolygons)&&wh.setOwner(e.clippingPolygons,this,"_clippingPolygons"),l(e.imageBasedLighting)?(this._imageBasedLighting=e.imageBasedLighting,this._shouldDestroyImageBasedLighting=!1):(this._imageBasedLighting=new DE,this._shouldDestroyImageBasedLighting=!0),this._environmentMapManager=new Lp(e.environmentMapOptions),this.lightColor=e.lightColor,this.backFaceCulling=e.backFaceCulling??!0,this._enableShowOutline=e.enableShowOutline??!0,this.showOutline=e.showOutline??!0,this.outlineColor=e.outlineColor??G.BLACK,this.splitDirection=e.splitDirection??br.NONE,this.enableCollision=e.enableCollision??!1,this._projectTo2D=e.projectTo2D??!1,this._enablePick=e.enablePick??!1,this.debugFreezeFrame=e.debugFreezeFrame??!1,this.debugColorizeTiles=e.debugColorizeTiles??!1,this._enableDebugWireframe=e.enableDebugWireframe??!1,this.debugWireframe=e.debugWireframe??!1,this.debugWireframe===!0&&this._enableDebugWireframe===!1&&yt("tileset-debug-wireframe-ignored","enableDebugWireframe must be set to true in the Cesium3DTileset constructor, otherwise debugWireframe will be ignored."),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowContentBoundingVolume=e.debugShowContentBoundingVolume??!1,this.debugShowViewerRequestVolume=e.debugShowViewerRequestVolume??!1,this._tileDebugLabels=void 0,this.debugPickedTileLabelOnly=!1,this.debugPickedTile=void 0,this.debugPickPosition=void 0,this.debugShowGeometricError=e.debugShowGeometricError??!1,this.debugShowRenderingStatistics=e.debugShowRenderingStatistics??!1,this.debugShowMemoryUsage=e.debugShowMemoryUsage??!1,this.debugShowUrl=e.debugShowUrl??!1,this.examineVectorLinesFunction=void 0,this._metadataExtension=void 0,this._customShader=e.customShader;let n=e.featureIdLabel??"featureId_0";typeof n=="number"&&(n=`featureId_${n}`),this._featureIdLabel=n;let i=e.instanceFeatureIdLabel??"instanceFeatureId_0";typeof i=="number"&&(i=`instanceFeatureId_${i}`),this._instanceFeatureIdLabel=i}Object.defineProperties(Ko.prototype,{isCesium3DTileset:{get:function(){return!0}},asset:{get:function(){return this._asset}},extensions:{get:function(){return this._extensions}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Fs.setOwner(e,this,"_clippingPlanes")}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){wh.setOwner(e,this,"_clippingPolygons")}},imageryLayers:{get:function(){return this._imageryLayers}},imageryLayersModificationCounter:{get:function(){return this._imageryLayersModificationCounter}},asynchronouslyLoadImagery:{get:function(){return this._asynchronouslyLoadImagery}},properties:{get:function(){return this._properties}},tilesLoaded:{get:function(){return this._tilesLoaded}},resource:{get:function(){return this._resource}},basePath:{get:function(){return Tr("Cesium3DTileset.basePath","Cesium3DTileset.basePath has been deprecated. All tiles are relative to the url of the tileset JSON file that contains them. Use the url property instead."),this._basePath}},style:{get:function(){return this._styleEngine.style},set:function(e){this._styleEngine.style=e}},customShader:{get:function(){return this._customShader},set:function(e){this._customShader=e}},hasMixedContent:{get:function(){return this._hasMixedContent},set:function(e){this._hasMixedContent=e}},isSkippingLevelOfDetail:{get:function(){return this.skipLevelOfDetail&&!l(this._classificationType)&&!this._disableSkipLevelOfDetail&&!this._allTilesAdditive}},metadataExtension:{get:function(){return this._metadataExtension}},metadata:{get:function(){if(l(this._metadataExtension))return this._metadataExtension.tileset}},schema:{get:function(){if(l(this._metadataExtension))return this._metadataExtension.schema}},maximumScreenSpaceError:{get:function(){return this._maximumScreenSpaceError},set:function(e){this._maximumScreenSpaceError=e,this._memoryAdjustedScreenSpaceError=e}},cacheBytes:{get:function(){return this._cacheBytes},set:function(e){this._cacheBytes=e}},maximumCacheOverflowBytes:{get:function(){return this._maximumCacheOverflowBytes},set:function(e){this._maximumCacheOverflowBytes=e}},memoryAdjustedScreenSpaceError:{get:function(){return this._memoryAdjustedScreenSpaceError}},pointCloudShading:{get:function(){return this._pointCloudShading},set:function(e){this._pointCloudShading=e}},root:{get:function(){return this._root}},boundingSphere:{get:function(){return this._root.updateTransform(this._modelMatrix),this._root.boundingSphere}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=N.clone(e,this._modelMatrix)}},timeSinceLoad:{get:function(){return this._timeSinceLoad}},totalMemoryUsageInBytes:{get:function(){let e=this._statistics;return e.texturesByteLength+e.geometryByteLength+e.batchTableByteLength}},clippingPlanesOriginMatrix:{get:function(){return l(this._clippingPlanesOriginMatrix)?(this._clippingPlanesOriginMatrixDirty&&(N.multiply(this.root.computedTransform,this._initialClippingPlanesOriginMatrix,this._clippingPlanesOriginMatrix),this._clippingPlanesOriginMatrixDirty=!1),this._clippingPlanesOriginMatrix):N.IDENTITY}},styleEngine:{get:function(){return this._styleEngine}},statistics:{get:function(){return this._statistics}},classificationType:{get:function(){return this._classificationType}},heightReference:{get:function(){return this._heightReference}},scene:{get:function(){return this._scene}},ellipsoid:{get:function(){return this._ellipsoid}},foveatedConeSize:{get:function(){return this._foveatedConeSize},set:function(e){this._foveatedConeSize=e}},foveatedMinimumScreenSpaceErrorRelaxation:{get:function(){return this._foveatedMinimumScreenSpaceErrorRelaxation},set:function(e){this._foveatedMinimumScreenSpaceErrorRelaxation=e}},extras:{get:function(){return this._extras}},imageBasedLighting:{get:function(){return this._imageBasedLighting},set:function(e){e!==this._imageBasedLighting&&(this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=e,this._shouldDestroyImageBasedLighting=!1)}},environmentMapManager:{get:function(){return this._environmentMapManager}},vectorClassificationOnly:{get:function(){return this._vectorClassificationOnly}},vectorKeepDecodedPositions:{get:function(){return this._vectorKeepDecodedPositions}},showCreditsOnScreen:{get:function(){return this._showCreditsOnScreen},set:function(e){this._showCreditsOnScreen=e,Xhe(this)}},featureIdLabel:{get:function(){return this._featureIdLabel},set:function(e){typeof e=="number"&&(e=`featureId_${e}`),this._featureIdLabel=e}},instanceFeatureIdLabel:{get:function(){return this._instanceFeatureIdLabel},set:function(e){typeof e=="number"&&(e=`instanceFeatureId_${e}`),this._instanceFeatureIdLabel=e}}});Ko.fromIonAssetId=async function(e,t){let n=await Hu.fromAssetId(e);return Ko.fromUrl(n,t)};Ko.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=we.createIfNeeded(e),i;n.extension==="json"?i=n.getBaseUri(!0):n.isDataUri&&(i="");let o=await Ko.loadJson(n),r=await HJe(n,o),s=new Ko(t);s._resource=n,s._url=n.url,s._basePath=i,s._metadataExtension=r,s._geometricError=o.geometricError,s._scaledGeometricError=o.geometricError;let a=o.asset;s._asset=a,s._extras=o.extras,Xhe(s);let c=l(o.asset.gltfUpAxis)?fo.fromName(o.asset.gltfUpAxis):fo.Y,u=t.modelUpAxis??c,f=t.modelForwardAxis??fo.X;s._properties=o.properties,s._extensionsUsed=o.extensionsUsed,s._extensions=o.extensions,s._modelUpAxis=u,s._modelForwardAxis=f,s._root=s.loadTileset(n,o);let A=s._root.createBoundingVolume(o.root.boundingVolume,N.IDENTITY).boundingSphere.center,g=s._ellipsoid.cartesianToCartographic(A);return l(g)&&g.height>Ti._defaultMinTerrainHeight&&(s._initialClippingPlanesOriginMatrix=kt.eastNorthUpToFixedFrame(A)),s._clippingPlanesOriginMatrix=N.clone(s._initialClippingPlanesOriginMatrix),s};Ko.loadJson=function(e){return we.createIfNeeded(e).fetchJson()};Ko.prototype.makeStyleDirty=function(){this._styleEngine.makeDirty()};Ko.prototype.loadTileset=function(e,t,n){let i=t.asset;if(!l(i))throw new ce("Tileset must have an asset property.");if(i.version!=="0.0"&&i.version!=="1.0"&&i.version!=="1.1")throw new ce("The tileset must be 3D Tiles version 0.0, 1.0, or 1.1");l(t.extensionsRequired)&&Ko.checkSupportedExtensions(t.extensionsRequired);let o=this._statistics,r=i.tilesetVersion;l(r)&&(this._basePath+=`?v=${r}`,e=e.clone(),e.setQueryParameters({v:r}));let s=Vhe(this,e,t.root,n);l(n)&&(n.children.push(s),s._depth=n._depth+1);let a=[];for(a.push(s);a.length>0;){let c=a.pop();++o.numberOfTilesTotal,this._allTilesAdditive=this._allTilesAdditive&&c.refine===tr.ADD;let u=c._header.children;if(l(u))for(let f=0;f<u.length;++f){let h=u[f],A=Vhe(this,e,h,c);c.children.push(A),A._depth=c._depth+1,a.push(A)}this._cullWithChildrenBounds&&ZL.checkChildrenWithinParent(c)}return s};function Vhe(e,t,n,i){if(!(l(n.implicitTiling)||Ei(n,"3DTILES_implicit_tiling")))return new xd(e,t,n,i);let r=e.schema,s=new O0(t,n,r),a=new F0({subdivisionScheme:s.subdivisionScheme,subtreeLevels:s.subtreeLevels,level:0,x:0,y:0,z:0}),c=s.subtreeUriTemplate.getDerivedResource({templateValues:a.getTemplateValues()}).url,f=ze(n,!0);f.contents=[{uri:c}],delete f.content,delete f.extensions;let h=new xd(e,t,f,i);return h.implicitTileset=s,h.implicitCoordinates=a,h}async function HJe(e,t){let n=Ei(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t,i;if(l(n.schemaUri))e=e.getDerivedResource({url:n.schemaUri}),i=Fi.getSchemaLoader({resource:e});else if(l(n.schema))i=Fi.getSchemaLoader({schema:n.schema});else return;await i.load();let o=new N0({schema:i.schema,metadataJson:n});return Fi.unload(i),o}var Hhe=new d,WJe=new Ae,jJe=new N,YJe=new d,qJe=new d,KJe=new d,XJe=new d;function JJe(e,t){let n,i,o,r,s,a=t.camera,c=e._root,u=c.contentBoundingVolume;if(u instanceof sf)n=d.normalize(a.positionWC,Hhe),i=a.directionWC,o=a.positionCartographic.height,r=u.minimumHeight,s=u.maximumHeight;else{let _=N.inverseTransformation(c.computedTransform,jJe),y=t.mapProjection.ellipsoid,C=u.boundingVolume,E=N.multiplyByPoint(_,C.center,YJe);if(d.magnitude(E)>y.minimumRadius){let I=Ae.fromCartesian(E,y,WJe);n=d.normalize(a.positionWC,Hhe),i=a.directionWC,o=a.positionCartographic.height,r=0,s=I.height*2}else{let I=N.multiplyByPoint(_,a.positionWC,qJe);if(n=d.UNIT_Z,i=N.multiplyByPointAsVector(_,a.directionWC,KJe),i=d.normalize(i,i),o=I.z,u instanceof gu){let b=J.getColumn(C.halfAxes,2,XJe),S=d.magnitude(b);r=E.z-S,s=E.z+S}else if(u instanceof hg){let b=C.radius;r=E.z-b,s=E.z+b}}}let f=e.dynamicScreenSpaceErrorHeightFalloff,h=r+(s-r)*f,A=s,g=D.clamp((o-h)/(A-h),0,1),m=1-Math.abs(d.dot(i,n));m=m*(1-g),e._dynamicScreenSpaceErrorComputedDensity=e.dynamicScreenSpaceErrorDensity*m}function ZJe(e,t){if(t.hasEmptyContent)return;let{statistics:n}=e,i=t.contentExpired,o=t.requestContent();l(o)&&(o.then(r=>{!l(r)||t.isDestroyed()||e.isDestroyed()||(e._processingQueue.push(t),++n.numberOfTilesProcessing)}).catch(r=>{Yhe(r,e,t)}),i&&(t.hasTilesetContent||t.hasImplicitContent?dZe(e,t):(n.decrementLoadCounts(t.content),--n.numberOfTilesWithContentReady)),e._requestedTilesInFlight.push(t))}function jhe(e,t){return e._priority-t._priority}Ko.prototype.postPassesUpdate=function(e){l(this._root)&&($Je(this,e),mZe(this,e),this._cache.unloadTiles(this,Khe),this._styleApplied&&this._styleEngine.resetDirty(),this._styleApplied=!1)};Ko.prototype.prePassesUpdate=function(e){if(!l(this._root))return;sZe(this,e);let t=this._clippingPlanes;this._clippingPlanesOriginMatrixDirty=!0,l(t)&&t.enabled&&t.update(e);let n=this._clippingPolygons;l(n)&&n.enabled&&n.update(e),l(this._loadTimestamp)||(this._loadTimestamp=K.clone(e.time)),this._timeSinceLoad=Math.max(K.secondsDifference(e.time,this._loadTimestamp)*1e3,0),this.dynamicScreenSpaceError&&JJe(this,e),e.newFrame&&this._cache.reset()};function $Je(e,t){let n=e._requestedTilesInFlight,i=0;for(let o=0;o<n.length;++o){let r=n[o],s=t.frameNumber-r._touchedFrame>=1;if(r._contentState!==ir.LOADING){++i;continue}else if(s){r.cancelRequests(),++i;continue}i>0&&(n[o-i]=r)}n.length-=i}function eZe(e){let t=e._requestedTiles;t.sort(jhe);for(let n=0;n<t.length;++n)ZJe(e,t[n])}function Yhe(e,t,n){if(t.isDestroyed())return;let i;n.isDestroyed()||(i=n._contentResource.url);let o=l(e.message)?e.message:e.toString();t.tileFailed.numberOfListeners>0?t.tileFailed.raiseEvent({url:i,message:o}):(console.log(`A 3D tile failed to load: ${i}`),console.log(`Error: ${o}`),console.log(e.stack))}function tZe(e){let t=e._processingQueue,n=0;for(let i=0;i<t.length;++i){let o=t[i];if(o.isDestroyed()||o._contentState!==ir.PROCESSING){++n;continue}n>0&&(t[i-n]=o)}t.length-=n}var nZe=new Ae,iZe=new Ae,oZe=new d;function rZe(e,t,n){if(!e.enableCollision||!e.show)return;let i=e._addHeightCallbacks,o=t.boundingSphere;for(let r of i){if(r.invoked||t._wasSelectedLastFrame)continue;let s=r.ellipsoid,a=Ae.clone(r.positionCartographic,nZe),c=Ae.fromCartesian(o.center,s,iZe);l(c)&&(a.height=c.height);let u=Ae.toCartesian(a,s,oZe);d.distance(u,o.center)<=o.radius&&(r.invoked=!0,n.afterRender.push(()=>{l(r.callback)&&r.callback(),r.invoked=!1}))}}function sZe(e,t){tZe(e);let n=e._processingQueue,{cacheBytes:i,maximumCacheOverflowBytes:o,statistics:r}=e,s=i+o,a=!1;for(let c=0;c<n.length;++c){if(e.totalMemoryUsageInBytes>s){a=!0;break}let u=n[c];try{u.process(e,t),u.contentReady&&(--r.numberOfTilesProcessing,e.tileLoad.raiseEvent(u))}catch(f){--r.numberOfTilesProcessing,Yhe(f,e,u)}}e.totalMemoryUsageInBytes<i?cZe(e):a&&n.length>0&&aZe(e)}function aZe(e){e._memoryAdjustedScreenSpaceError*=1.02;let t=e._processingQueue;for(let n=0;n<t.length;++n)t[n].updatePriority();t.sort(jhe)}function cZe(e){e._memoryAdjustedScreenSpaceError=Math.max(e.memoryAdjustedScreenSpaceError/1.02,e.maximumScreenSpaceError)}var SV=new d,lZe={maximumFractionDigits:3};function Whe(e){let t=e/1048576;return t<1?t.toLocaleString(void 0,lZe):Math.round(t).toLocaleString()}function lq(e){let{halfAxes:t,radius:n,center:i}=e.boundingVolume.boundingVolume,o=d.clone(i,SV);if(l(t))o.x+=.75*(t[0]+t[3]+t[6]),o.y+=.75*(t[1]+t[4]+t[7]),o.z+=.75*(t[2]+t[5]+t[8]);else if(l(n)){let r=d.normalize(i,SV);r=d.multiplyByScalar(r,.75*n,SV),o=d.add(r,i,SV)}return o}function uq(e,t,n){let i="",o=0;if(t.debugShowGeometricError&&(i+=` +Geometric error: ${e.geometricError}`,o++),t.debugShowRenderingStatistics&&(i+=` +Commands: ${e.commandsLength}`,o++,e.content.pointsLength>0&&(i+=` +Points: ${e.content.pointsLength}`,o++),e.content.trianglesLength>0&&(i+=` +Triangles: ${e.content.trianglesLength}`,o++),i+=` +Features: ${e.content.featuresLength}`,o++),t.debugShowMemoryUsage&&(i+=` +Texture Memory: ${Whe(e.content.texturesByteLength)}`,i+=` +Geometry Memory: ${Whe(e.content.geometryByteLength)}`,o+=2),t.debugShowUrl)if(e.hasMultipleContents){i+=` +Urls:`;let s=e.content.innerContentUrls;for(let a=0;a<s.length;a++)i+=` +- ${s[a]}`;o+=s.length}else i+=` +Url: ${e._contentHeader.uri}`,o++;let r={text:i.substring(1),position:n,font:`${19-o}px sans-serif`,showBackground:!0,disableDepthTestDistance:Number.POSITIVE_INFINITY};return t._tileDebugLabels.add(r)}function uZe(e,t){let n=e._selectedTiles,i=n.length,o=e._emptyTiles,r=o.length;if(e._tileDebugLabels.removeAll(),e.debugPickedTileLabelOnly){if(l(e.debugPickedTile)){let s=l(e.debugPickPosition)?e.debugPickPosition:lq(e.debugPickedTile),a=uq(e.debugPickedTile,e,s);a.pixelOffset=new U(15,-15)}}else{for(let s=0;s<i;++s){let a=n[s];uq(a,e,lq(a))}for(let s=0;s<r;++s){let a=o[s];(a.hasTilesetContent||a.hasImplicitContent)&&uq(a,e,lq(a))}}e._tileDebugLabels.update(t)}function fZe(e,t,n){e._styleEngine.applyStyle(e),e._styleApplied=!0;let{commandList:i,context:o}=t,r=i.length,s=e._selectedTiles,a=e.isSkippingLevelOfDetail&&e._hasMixedContent&&o.stencilBuffer&&s.length>0;e._backfaceCommands.length=0,a&&(l(e._stencilClearCommand)||(e._stencilClearCommand=new Ci({stencil:0,pass:Be.CESIUM_3D_TILE,renderState:Ue.fromCache({stencilMask:Kt.SKIP_LOD_MASK})})),i.push(e._stencilClearCommand));let{statistics:c,tileVisible:u}=e,f=n.isRender,h=i.length;for(let m=0;m<s.length;++m){let _=s[m];f&&u.raiseEvent(_),rZe(e,_,t),_.update(e,t,n),c.incrementSelectionCounts(_.content),++c.selected}let A=e._emptyTiles;for(let m=0;m<A.length;++m)A[m].update(e,t,n);let g=i.length-h;if(e._backfaceCommands.trim(),a){let m=e._backfaceCommands.values,_=m.length;i.length+=_;for(let y=g-1;y>=0;--y)i[h+_+y]=i[h+y];for(let y=0;y<_;++y)i[h+y]=m[y]}g=i.length-r,c.numberOfCommands=g,f&&(e.pointCloudShading.attenuation&&e.pointCloudShading.eyeDomeLighting&&g>0&&e._pointCloudEyeDomeLighting.update(t,r,e.pointCloudShading,e.boundingSphere),e.debugShowGeometricError||e.debugShowRenderingStatistics||e.debugShowMemoryUsage||e.debugShowUrl?(l(e._tileDebugLabels)||(e._tileDebugLabels=new rA),uZe(e,t)):e._tileDebugLabels=e._tileDebugLabels&&e._tileDebugLabels.destroy())}var qhe=[];function dZe(e,t){let n=t,i=qhe;for(i.push(t);i.length>0;){t=i.pop();let o=t.children;for(let r=0;r<o.length;++r)i.push(o[r]);t!==n&&(hZe(e,t),--e._statistics.numberOfTilesTotal)}n.children=[]}function Khe(e,t){e.tileUnload.raiseEvent(t),e._statistics.decrementLoadCounts(t.content),--e._statistics.numberOfTilesWithContentReady,t.unloadContent()}function hZe(e,t){e._cache.unloadTile(e,t,Khe),t.destroy()}Ko.prototype.trimLoadedTiles=function(){this._cache.trim()};function mZe(e,t){let n=e._statistics,i=e._statisticsLast,o=n.numberOfPendingRequests,r=n.numberOfTilesProcessing,s=i.numberOfPendingRequests,a=i.numberOfTilesProcessing;Wh.clone(n,i);let c=o!==s||r!==a;c&&t.afterRender.push(function(){return e.loadProgress.raiseEvent(o,r),!0}),e._tilesLoaded=n.numberOfPendingRequests===0&&n.numberOfTilesProcessing===0&&n.numberOfAttemptedRequests===0,c&&e._tilesLoaded&&(t.afterRender.push(function(){return e.allTilesLoaded.raiseEvent(),!0}),e._initialTilesLoaded||(e._initialTilesLoaded=!0,t.afterRender.push(function(){return e.initialTilesLoaded.raiseEvent(),!0})))}function AZe(e){e._heatmap.resetMinimumMaximum(),e._minimumPriority.depth=Number.MAX_VALUE,e._maximumPriority.depth=-Number.MAX_VALUE,e._minimumPriority.foveatedFactor=Number.MAX_VALUE,e._maximumPriority.foveatedFactor=-Number.MAX_VALUE,e._minimumPriority.distance=Number.MAX_VALUE,e._maximumPriority.distance=-Number.MAX_VALUE,e._minimumPriority.reverseScreenSpaceError=Number.MAX_VALUE,e._maximumPriority.reverseScreenSpaceError=-Number.MAX_VALUE}function pZe(e,t){t.frameNumber===e._updatedModelMatrixFrame&&l(e._previousModelMatrix)||(e._updatedModelMatrixFrame=t.frameNumber,e._modelMatrixChanged=!N.equals(e.modelMatrix,e._previousModelMatrix),e._modelMatrixChanged&&(e._previousModelMatrix=N.clone(e.modelMatrix,e._previousModelMatrix)))}function gZe(e,t,n,i){if(t.mode===ie.MORPHING||!l(e._root))return!1;let o=e._statistics;o.clear(),++e._updatedVisibilityFrame,AZe(e),pZe(e,t),e._cullRequestsWhileMoving=e.cullRequestsWhileMoving&&!e._modelMatrixChanged;let r=e.getTraversal(i).selectTiles(e,t);if(i.requestTiles&&eZe(e),fZe(e,t,i),Wh.clone(o,n),i.isRender){let s=e._credits;if(l(s)&&o.selected!==0)for(let a=0;a<s.length;++a){let c=s[a];t.creditDisplay.addCreditToNextFrame(c)}}return r}function Xhe(e){let t=e._credits;l(t)||(t=[]),t.length=0,l(e.resource.credits)&&e.resource.credits.forEach(i=>{t.push(Bt.clone(i))});let n=e.asset.extras;if(l(n)&&l(n.cesium)&&l(n.cesium.credits)){let i=n.cesium.credits;for(let o=0;o<i.length;++o){let r=i[o];t.push(new Bt(r.html))}}t.forEach(i=>i.showOnScreen=i.showOnScreen||e._showCreditsOnScreen),e._credits=t}Ko.prototype.getTraversal=function(e){let{pass:t}=e;return t===qo.MOST_DETAILED_PRELOAD||t===qo.MOST_DETAILED_PICK?aO:this.isSkippingLevelOfDetail?hO:uO};Ko.prototype.update=function(e){this.updateForPass(e,e.tilesetPassState)};Ko.prototype.updateForPass=function(e,t){this.imageryLayers._update();let n=t.pass;if(n===qo.PRELOAD&&(!this.preloadWhenHidden||this.show)||n===qo.PRELOAD_FLIGHT&&(!this.preloadFlightDestinations||!this.show&&!this.preloadWhenHidden)||n===qo.REQUEST_RENDER_MODE_DEFER_CHECK&&(!this._cullRequestsWhileMoving&&this.foveatedTimeDelay<=0||!this.show))return;let i=e.commandList,o=e.camera,r=e.cullingVolume;t.ready=!1;let s=qo.getPassOptions(n),a=s.ignoreCommands,c=t.commandList??i,u=c.length;if(e.commandList=c,e.camera=t.camera??o,e.cullingVolume=t.cullingVolume??r,s.isRender){let A=this._environmentMapManager;l(this._root)&&(A.position=this.boundingSphere.center),A.update(e)}let f=this._clippingPolygons;l(f)&&f.enabled&&f.queueCommands(e);let h=this._statisticsPerPass[n];(this.show||a)&&(this._pass=n,t.ready=gZe(this,e,h,s)),a&&(c.length=u),e.commandList=i,e.camera=o,e.cullingVolume=r};Ko.prototype.hasExtension=function(e){return l(this._extensionsUsed)?this._extensionsUsed.indexOf(e)>-1:!1};Ko.prototype.isDestroyed=function(){return!1};Ko.prototype.destroy=function(){if(this._tileDebugLabels=this._tileDebugLabels&&this._tileDebugLabels.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._clippingPolygons=this._clippingPolygons&&this._clippingPolygons.destroy(),l(this._root)){let e=qhe;for(e.push(this._root);e.length>0;){let t=e.pop();t.destroy();let n=t.children;for(let i=0;i<n.length;++i)e.push(n[i])}}return this._root=void 0,this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=void 0,this._environmentMapManager.isDestroyed()||this._environmentMapManager.destroy(),this._environmentMapManager=void 0,this._imageryLayers.isDestroyed()||(this.imageryLayers.layerAdded.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerRemoved.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerMoved.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerShownOrHidden.removeEventListener(this._imageryLayersListener),this._imageryLayers.destroy()),this._imageryLayers=void 0,ue(this)};Ko.supportedExtensions={"3DTILES_metadata":!0,"3DTILES_implicit_tiling":!0,"3DTILES_content_gltf":!0,"3DTILES_multiple_contents":!0,"3DTILES_bounding_volume_S2":!0,"3DTILES_batch_table_hierarchy":!0,"3DTILES_draco_point_compression":!0,MAXAR_content_geojson:!0};Ko.checkSupportedExtensions=function(e){for(let t=0;t<e.length;t++)if(!Ko.supportedExtensions[e[t]])throw new ce(`Unsupported 3D Tiles Extension: ${e[t]}`)};var _Ze=new In,yZe=new d,CZe=new Ae;Ko.prototype.getHeight=function(e,t){let n=t.ellipsoid;l(n)||(n=te.WGS84);let i=_Ze,o=n.cartographicToCartesian(e,i.direction);d.normalize(i.direction,i.direction),i.direction=d.normalize(o,i.direction),i.direction=d.negate(o,i.direction),i.origin=d.multiplyByScalar(i.direction,-2*n.maximumRadius,i.origin);let r=this.pick(i,t.frameState,yZe);if(l(r))return n.cartesianToCartographic(r,CZe)?.height};Ko.prototype.updateHeight=function(e,t,n){n=n??te.WGS84;let i={positionCartographic:e,ellipsoid:n,callback:t,invoked:!1},o=()=>{let r=this._addHeightCallbacks,s=r.length;for(let a=0;a<s;++a)if(r[a]===i){r.splice(a,1);break}i.callback&&(i.callback=void 0)};return this._addHeightCallbacks.push(i),o};var EZe=new sc,IZe=new d;Ko.prototype.pick=function(e,t,n){if(!t.context.webgl2&&!this._enablePick)return;let i=this._selectedTiles,o=i.length,r=[];for(let c=0;c<o;++c){let u=i[c],f=hi.raySphere(e,u.contentBoundingVolume.boundingSphere,EZe);!l(f)||!l(u.content)||r.push(u)}let s=r.length;r.sort((c,u)=>{let f=le.distanceSquaredTo(c.contentBoundingVolume.boundingSphere,e.origin),h=le.distanceSquaredTo(u.contentBoundingVolume.boundingSphere,e.origin);return f-h});let a;for(let c=0;c<s;++c){let f=r[c].content.pick(e,t,IZe);if(l(f))return a=d.clone(f,n),a}};Ko.prototype.isGltfExtensionUsed=function(e){if(this.hasExtension("3DTILES_content_gltf")){if(!l(this.extensions))return!1;let t=this.extensions["3DTILES_content_gltf"]?.extensionsUsed;return l(t)?t.indexOf(e)>-1:!1}return!1};Ko.prototype.isGltfExtensionRequired=function(e){if(this.isGltfExtensionUsed(e)){let t=this.extensions["3DTILES_content_gltf"].extensionsRequired;return l(t)?t.indexOf(e)>-1:!1}return!1};var ks=Ko;var xZe=new N;function Sy(e,t){t.collectionChanged.addEventListener(Sy.prototype._onCollectionChanged,this),this._scene=e,this._primitives=e.primitives,this._entityCollection=t,this._tilesetHash={},this._entitiesToVisualize=new vt,this._onCollectionChanged(t,t.values,[],[])}Sy.prototype.update=function(e){let t=this._entitiesToVisualize.values,n=this._tilesetHash,i=this._primitives;for(let o=0,r=t.length;o<r;o++){let s=t[o],a=s._tileset,c,u=n[s.id],f=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),h;f&&(h=s.computeModelMatrix(e,xZe),c=we.createIfNeeded(j.getValueOrUndefined(a._uri,e)));let A=l(u)?u.tilesetPrimitive:void 0;if(!f){l(A)&&(A.show=!1);continue}(!l(u)||c.url!==u.url)&&(l(A)&&i.removeAndDestroy(A),delete n[s.id],bZe(c,n,s,i)),l(A)&&(A.show=!0,l(h)&&(A.modelMatrix=h),A.maximumScreenSpaceError=j.getValueOrDefault(a.maximumScreenSpaceError,e,A.maximumScreenSpaceError))}return!0};Sy.prototype.isDestroyed=function(){return!1};Sy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Sy.prototype._onCollectionChanged,this);let e=this._entitiesToVisualize.values,t=this._tilesetHash,n=this._primitives;for(let i=e.length-1;i>-1;i--)fq(this,e[i],t,n);return ue(this)};Sy.prototype.getBoundingSphere=function(e,t){let n=this._tilesetHash[e.id];if(!l(n)||n.loadFail)return mt.FAILED;let i=n.tilesetPrimitive;return l(i)?i.show?(le.clone(i.boundingSphere,t),mt.DONE):mt.FAILED:mt.PENDING};Sy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._entitiesToVisualize,a=this._tilesetHash,c=this._primitives;for(o=t.length-1;o>-1;o--)r=t[o],l(r._tileset)&&s.set(r.id,r);for(o=i.length-1;o>-1;o--)r=i[o],l(r._tileset)?s.set(r.id,r):(fq(this,r,a,c),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],fq(this,r,a,c),s.remove(r.id)};function fq(e,t,n,i){let o=n[t.id];l(o)&&(l(o.tilesetPrimitive)&&i.removeAndDestroy(o.tilesetPrimitive),delete n[t.id])}async function bZe(e,t,n,i){t[n.id]={url:e.url,loadFail:!1};try{let o=await ks.fromUrl(e);if(o.id=n,i.add(o),!l(t[n.id]))return;t[n.id].tilesetPrimitive=o}catch(o){console.error(o),t[n.id].loadFail=!0}}var mO=Sy;var TZe=G.WHITE,SZe=G.BLACK,wZe=new U(2,2);function kT(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._evenColor=void 0,this._evenColorSubscription=void 0,this._oddColor=void 0,this._oddColorSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.evenColor=e.evenColor,this.oddColor=e.oddColor,this.repeat=e.repeat}Object.defineProperties(kT.prototype,{isConstant:{get:function(){return j.isConstant(this._evenColor)&&j.isConstant(this._oddColor)&&j.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},evenColor:de("evenColor"),oddColor:de("oddColor"),repeat:de("repeat")});kT.prototype.getType=function(e){return"Checkerboard"};var BZe=new K;kT.prototype.getValue=function(e,t){return l(e)||(e=K.now(BZe)),l(t)||(t={}),t.lightColor=j.getValueOrClonedDefault(this._evenColor,e,TZe,t.lightColor),t.darkColor=j.getValueOrClonedDefault(this._oddColor,e,SZe,t.darkColor),t.repeat=j.getValueOrDefault(this._repeat,e,wZe),t};kT.prototype.equals=function(e){return this===e||e instanceof kT&&j.equals(this._evenColor,e._evenColor)&&j.equals(this._oddColor,e._oddColor)&&j.equals(this._repeat,e._repeat)};var UT=kT;var Jhe={id:void 0};function AO(e){if(e._firing){e._refire=!0;return}if(e._suspendCount===0){let t=e._addedEntities,n=e._removedEntities,i=e._changedEntities;if(i.length!==0||t.length!==0||n.length!==0){e._firing=!0;do{e._refire=!1;let o=t.values.slice(0),r=n.values.slice(0),s=i.values.slice(0);t.removeAll(),n.removeAll(),i.removeAll(),e._collectionChanged.raiseEvent(e,o,r,s)}while(e._refire);e._firing=!1}}}function Vc(e){this._owner=e,this._entities=new vt,this._addedEntities=new vt,this._removedEntities=new vt,this._changedEntities=new vt,this._suspendCount=0,this._collectionChanged=new _e,this._id=Xn(),this._show=!0,this._firing=!1,this._refire=!1}Vc.prototype.suspendEvents=function(){this._suspendCount++};Vc.prototype.resumeEvents=function(){this._suspendCount--,AO(this)};Object.defineProperties(Vc.prototype,{collectionChanged:{get:function(){return this._collectionChanged}},id:{get:function(){return this._id}},values:{get:function(){return this._entities.values}},show:{get:function(){return this._show},set:function(e){if(e===this._show)return;this.suspendEvents();let t,n=[],i=this._entities.values,o=i.length;for(t=0;t<o;t++)n.push(i[t].isShowing);for(this._show=e,t=0;t<o;t++){let r=n[t],s=i[t];r!==s.isShowing&&s.definitionChanged.raiseEvent(s,"isShowing",s.isShowing,r)}this.resumeEvents()}},owner:{get:function(){return this._owner}}});Vc.prototype.computeAvailability=function(){let e=je.MAXIMUM_VALUE,t=je.MINIMUM_VALUE,n=this._entities.values;for(let i=0,o=n.length;i<o;i++){let s=n[i].availability;if(l(s)){let a=s.start,c=s.stop;K.lessThan(a,e)&&!a.equals(je.MINIMUM_VALUE)&&(e=a),K.greaterThan(c,t)&&!c.equals(je.MAXIMUM_VALUE)&&(t=c)}}return je.MAXIMUM_VALUE.equals(e)&&(e=je.MINIMUM_VALUE),je.MINIMUM_VALUE.equals(t)&&(t=je.MAXIMUM_VALUE),new Pn({start:e,stop:t})};Vc.prototype.add=function(e){e instanceof fr||(e=new fr(e));let t=e.id,n=this._entities;if(n.contains(t))throw new me(`An entity with id ${t} already exists in this collection.`);return e.entityCollection=this,n.set(t,e),this._removedEntities.remove(t)||this._addedEntities.set(t,e),e.definitionChanged.addEventListener(Vc.prototype._onEntityDefinitionChanged,this),AO(this),e};Vc.prototype.remove=function(e){return l(e)?this.removeById(e.id):!1};Vc.prototype.contains=function(e){return this._entities.get(e.id)===e};Vc.prototype.removeById=function(e){if(!l(e))return!1;let n=this._entities.get(e);return this._entities.remove(e)?(this._addedEntities.remove(e)||(this._removedEntities.set(e,n),this._changedEntities.remove(e)),this._entities.remove(e),n.definitionChanged.removeEventListener(Vc.prototype._onEntityDefinitionChanged,this),AO(this),!0):!1};Vc.prototype.removeAll=function(){let e=this._entities,t=e.length,n=e.values,i=this._addedEntities,o=this._removedEntities;for(let r=0;r<t;r++){let s=n[r],a=s.id,c=i.get(a);l(c)||(s.definitionChanged.removeEventListener(Vc.prototype._onEntityDefinitionChanged,this),o.set(a,s))}e.removeAll(),i.removeAll(),this._changedEntities.removeAll(),AO(this)};Vc.prototype.getById=function(e){return this._entities.get(e)};Vc.prototype.getOrCreateEntity=function(e){let t=this._entities.get(e);return l(t)||(Jhe.id=e,t=new fr(Jhe),this.add(t)),t};Vc.prototype._onEntityDefinitionChanged=function(e){let t=e.id;this._addedEntities.contains(t)||this._changedEntities.set(t,e),AO(this)};var Ea=Vc;var wV={id:void 0},GT=new Array(2);function dq(e){let t=e.propertyNames,n=t.length;for(let i=0;i<n;i++)e[t[i]]=void 0;e._name=void 0,e._availability=void 0}function Zhe(e,t,n,i){GT[0]=n,GT[1]=i.id,t[JSON.stringify(GT)]=i.definitionChanged.addEventListener(as.prototype._onDefinitionChanged,e)}function $he(e,t,n,i){GT[0]=n,GT[1]=i.id;let o=JSON.stringify(GT);t[o](),t[o]=void 0}function wy(e){if(e._shouldRecomposite=!0,e._suspendCount!==0)return;let t=e._collections,n=t.length,i=e._collectionsCopy,o=i.length,r,s,a,c,u,f=e._composite,h=new Ea(e),A=e._eventHash,g;for(r=0;r<o;r++)for(u=i[r],u.collectionChanged.removeEventListener(as.prototype._onCollectionChanged,e),a=u.values,g=u.id,c=a.length-1;c>-1;c--)s=a[c],$he(e,A,g,s);for(r=n-1;r>=0;r--)for(u=t[r],u.collectionChanged.addEventListener(as.prototype._onCollectionChanged,e),a=u.values,g=u.id,c=a.length-1;c>-1;c--){s=a[c],Zhe(e,A,g,s);let _=h.getById(s.id);l(_)||(_=f.getById(s.id),l(_)?dq(_):(wV.id=s.id,_=new fr(wV)),h.add(_)),_.merge(s)}e._collectionsCopy=t.slice(0),f.suspendEvents(),f.removeAll();let m=h.values;for(r=0;r<m.length;r++)f.add(m[r]);f.resumeEvents()}function as(e,t){this._owner=t,this._composite=new Ea(this),this._suspendCount=0,this._collections=l(e)?e.slice():[],this._collectionsCopy=[],this._id=Xn(),this._eventHash={},wy(this),this._shouldRecomposite=!1}Object.defineProperties(as.prototype,{collectionChanged:{get:function(){return this._composite._collectionChanged}},id:{get:function(){return this._id}},values:{get:function(){return this._composite.values}},owner:{get:function(){return this._owner}}});as.prototype.addCollection=function(e,t){l(t)?this._collections.splice(t,0,e):(t=this._collections.length,this._collections.push(e)),wy(this)};as.prototype.removeCollection=function(e){let t=this._collections.indexOf(e);return t!==-1?(this._collections.splice(t,1),wy(this),!0):!1};as.prototype.removeAllCollections=function(){this._collections.length=0,wy(this)};as.prototype.containsCollection=function(e){return this._collections.indexOf(e)!==-1};as.prototype.contains=function(e){return this._composite.contains(e)};as.prototype.indexOfCollection=function(e){return this._collections.indexOf(e)};as.prototype.getCollection=function(e){return this._collections[e]};as.prototype.getCollectionsLength=function(){return this._collections.length};function BV(e,t){return e.indexOf(t)}function eme(e,t,n){let i=e._collections;if(t=D.clamp(t,0,i.length-1),n=D.clamp(n,0,i.length-1),t===n)return;let o=i[t];i[t]=i[n],i[n]=o,wy(e)}as.prototype.raiseCollection=function(e){let t=BV(this._collections,e);eme(this,t,t+1)};as.prototype.lowerCollection=function(e){let t=BV(this._collections,e);eme(this,t,t-1)};as.prototype.raiseCollectionToTop=function(e){let t=BV(this._collections,e);t!==this._collections.length-1&&(this._collections.splice(t,1),this._collections.push(e),wy(this))};as.prototype.lowerCollectionToBottom=function(e){let t=BV(this._collections,e);t!==0&&(this._collections.splice(t,1),this._collections.splice(0,0,e),wy(this))};as.prototype.suspendEvents=function(){this._suspendCount++,this._composite.suspendEvents()};as.prototype.resumeEvents=function(){this._suspendCount--,this._shouldRecomposite&&this._suspendCount===0&&(wy(this),this._shouldRecomposite=!1),this._composite.resumeEvents()};as.prototype.computeAvailability=function(){return this._composite.computeAvailability()};as.prototype.getById=function(e){return this._composite.getById(e)};as.prototype._onCollectionChanged=function(e,t,n){let i=this._collectionsCopy,o=i.length,r=this._composite;r.suspendEvents();let s,a,c,u,f=n.length,h=this._eventHash,A=e.id;for(s=0;s<f;s++){let m=n[s];$he(this,h,A,m);let _=m.id;for(a=o-1;a>=0;a--)c=i[a].getById(_),l(c)&&(l(u)||(u=r.getById(_),dq(u)),u.merge(c));l(u)||r.removeById(_),u=void 0}let g=t.length;for(s=0;s<g;s++){let m=t[s];Zhe(this,h,A,m);let _=m.id;for(a=o-1;a>=0;a--)c=i[a].getById(_),l(c)&&(l(u)||(u=r.getById(_),l(u)?dq(u):(wV.id=_,u=new fr(wV),r.add(u))),u.merge(c));u=void 0}r.resumeEvents()};as.prototype._onDefinitionChanged=function(e,t,n,i){let o=this._collections,r=this._composite,s=o.length,a=e.id,c=r.getById(a),u=c[t],f=!l(u),h=!0;for(let A=s-1;A>=0;A--){let g=o[A].getById(e.id);if(l(g)){let m=g[t];if(l(m)){if(h)if(h=!1,l(m.merge)&&l(m.clone))u=m.clone(u);else{u=m;break}u.merge(m)}}}f&&c.propertyNames.indexOf(t)===-1&&c.addProperty(t),c[t]=u};var hq=as;function mq(){this._removalFunctions=[]}mq.prototype.add=function(e,t,n){let i=e.addEventListener(t,n);this._removalFunctions.push(i);let o=this;return function(){i();let r=o._removalFunctions;r.splice(r.indexOf(i),1)}};mq.prototype.removeAll=function(){let e=this._removalFunctions;for(let t=0,n=e.length;t<n;++t)e[t]();e.length=0};var Dr=mq;function gq(e,t){return K.compare(e.start,t.start)}function cs(e){if(this._intervals=[],this._changedEvent=new _e,l(e)){let t=e.length;for(let n=0;n<t;n++)this.addInterval(e[n])}}Object.defineProperties(cs.prototype,{changedEvent:{get:function(){return this._changedEvent}},start:{get:function(){let e=this._intervals;return e.length===0?void 0:e[0].start}},isStartIncluded:{get:function(){let e=this._intervals;return e.length===0?!1:e[0].isStartIncluded}},stop:{get:function(){let e=this._intervals,t=e.length;return t===0?void 0:e[t-1].stop}},isStopIncluded:{get:function(){let e=this._intervals,t=e.length;return t===0?!1:e[t-1].isStopIncluded}},length:{get:function(){return this._intervals.length}},isEmpty:{get:function(){return this._intervals.length===0}}});cs.prototype.equals=function(e,t){if(this===e)return!0;if(!(e instanceof cs))return!1;let n=this._intervals,i=e._intervals,o=n.length;if(o!==i.length)return!1;for(let r=0;r<o;r++)if(!Pn.equals(n[r],i[r],t))return!1;return!0};cs.prototype.get=function(e){return this._intervals[e]};cs.prototype.removeAll=function(){this._intervals.length>0&&(this._intervals.length=0,this._changedEvent.raiseEvent(this))};cs.prototype.findIntervalContainingDate=function(e){let t=this.indexOf(e);return t>=0?this._intervals[t]:void 0};cs.prototype.findDataForIntervalContainingDate=function(e){let t=this.indexOf(e);return t>=0?this._intervals[t].data:void 0};cs.prototype.contains=function(e){return this.indexOf(e)>=0};var Aq=new Pn;cs.prototype.indexOf=function(e){let t=this._intervals;Aq.start=e,Aq.stop=e;let n=Wo(t,Aq,gq);return n>=0?t[n].isStartIncluded?n:n>0&&t[n-1].stop.equals(e)&&t[n-1].isStopIncluded?n-1:~n:(n=~n,n>0&&n-1<t.length&&Pn.contains(t[n-1],e)?n-1:~n)};cs.prototype.findInterval=function(e){e=e??V.EMPTY_OBJECT;let t=e.start,n=e.stop,i=e.isStartIncluded,o=e.isStopIncluded,r=this._intervals;for(let s=0,a=r.length;s<a;s++){let c=r[s];if((!l(t)||c.start.equals(t))&&(!l(n)||c.stop.equals(n))&&(!l(i)||c.isStartIncluded===i)&&(!l(o)||c.isStopIncluded===o))return r[s]}};cs.prototype.addInterval=function(e,t){if(e.isEmpty)return;let n=this._intervals;if(n.length===0||K.greaterThan(e.start,n[n.length-1].stop)){n.push(e),this._changedEvent.raiseEvent(this);return}let i=Wo(n,e,gq);i<0?i=~i:i>0&&e.isStartIncluded&&n[i-1].isStartIncluded&&n[i-1].start.equals(e.start)?--i:i<n.length&&!e.isStartIncluded&&n[i].isStartIncluded&&n[i].start.equals(e.start)&&++i;let o;for(i>0&&(o=K.compare(n[i-1].stop,e.start),(o>0||o===0&&(n[i-1].isStopIncluded||e.isStartIncluded))&&((l(t)?t(n[i-1].data,e.data):n[i-1].data===e.data)?(K.greaterThan(e.stop,n[i-1].stop)?e=new Pn({start:n[i-1].start,stop:e.stop,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:e.isStopIncluded,data:e.data}):e=new Pn({start:n[i-1].start,stop:n[i-1].stop,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:n[i-1].isStopIncluded||e.stop.equals(n[i-1].stop)&&e.isStopIncluded,data:e.data}),n.splice(i-1,1),--i):(o=K.compare(n[i-1].stop,e.stop),(o>0||o===0&&n[i-1].isStopIncluded&&!e.isStopIncluded)&&n.splice(i,0,new Pn({start:e.stop,stop:n[i-1].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:n[i-1].isStopIncluded,data:n[i-1].data})),n[i-1]=new Pn({start:n[i-1].start,stop:e.start,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:!e.isStartIncluded,data:n[i-1].data}))));i<n.length&&(o=K.compare(e.stop,n[i].start),o>0||o===0&&(e.isStopIncluded||n[i].isStartIncluded));)if(l(t)?t(n[i].data,e.data):n[i].data===e.data)e=new Pn({start:e.start,stop:K.greaterThan(n[i].stop,e.stop)?n[i].stop:e.stop,isStartIncluded:e.isStartIncluded,isStopIncluded:K.greaterThan(n[i].stop,e.stop)?n[i].isStopIncluded:e.isStopIncluded,data:e.data}),n.splice(i,1);else if(n[i]=new Pn({start:e.stop,stop:n[i].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:n[i].isStopIncluded,data:n[i].data}),n[i].isEmpty)n.splice(i,1);else break;n.splice(i,0,e),this._changedEvent.raiseEvent(this)};cs.prototype.removeInterval=function(e){if(e.isEmpty)return!1;let t=this._intervals,n=Wo(t,e,gq);n<0&&(n=~n);let i=!1;for(n>0&&(K.greaterThan(t[n-1].stop,e.start)||t[n-1].stop.equals(e.start)&&t[n-1].isStopIncluded&&e.isStartIncluded)&&(i=!0,(K.greaterThan(t[n-1].stop,e.stop)||t[n-1].isStopIncluded&&!e.isStopIncluded&&t[n-1].stop.equals(e.stop))&&t.splice(n,0,new Pn({start:e.stop,stop:t[n-1].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:t[n-1].isStopIncluded,data:t[n-1].data})),t[n-1]=new Pn({start:t[n-1].start,stop:e.start,isStartIncluded:t[n-1].isStartIncluded,isStopIncluded:!e.isStartIncluded,data:t[n-1].data})),n<t.length&&!e.isStartIncluded&&t[n].isStartIncluded&&e.start.equals(t[n].start)&&(i=!0,t.splice(n,0,new Pn({start:t[n].start,stop:t[n].start,isStartIncluded:!0,isStopIncluded:!0,data:t[n].data})),++n);n<t.length&&K.greaterThan(e.stop,t[n].stop);)i=!0,t.splice(n,1);return n<t.length&&e.stop.equals(t[n].stop)&&(i=!0,!e.isStopIncluded&&t[n].isStopIncluded?n+1<t.length&&t[n+1].start.equals(e.stop)&&t[n].data===t[n+1].data?(t.splice(n,1),t[n]=new Pn({start:t[n].start,stop:t[n].stop,isStartIncluded:!0,isStopIncluded:t[n].isStopIncluded,data:t[n].data})):t[n]=new Pn({start:e.stop,stop:e.stop,isStartIncluded:!0,isStopIncluded:!0,data:t[n].data}):t.splice(n,1)),n<t.length&&(K.greaterThan(e.stop,t[n].start)||e.stop.equals(t[n].start)&&e.isStopIncluded&&t[n].isStartIncluded)&&(i=!0,t[n]=new Pn({start:e.stop,stop:t[n].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:t[n].isStopIncluded,data:t[n].data})),i&&this._changedEvent.raiseEvent(this),i};cs.prototype.intersect=function(e,t,n){let i=new cs,o=0,r=0,s=this._intervals,a=e._intervals;for(;o<s.length&&r<a.length;){let c=s[o],u=a[r];if(K.lessThan(c.stop,u.start))++o;else if(K.lessThan(u.stop,c.start))++r;else{if(l(n)||l(t)&&t(c.data,u.data)||!l(t)&&u.data===c.data){let f=Pn.intersect(c,u,new Pn,n);f.isEmpty||i.addInterval(f,t)}K.lessThan(c.stop,u.stop)||c.stop.equals(u.stop)&&!c.isStopIncluded&&u.isStopIncluded?++o:++r}}return i};cs.fromJulianDateArray=function(e,t){l(t)||(t=new cs);let n=e.julianDates,i=n.length,o=e.dataCallback,r=e.isStartIncluded??!0,s=e.isStopIncluded??!0,a=e.leadingInterval??!1,c=e.trailingInterval??!1,u,f=0;a&&(++f,u=new Pn({start:je.MINIMUM_VALUE,stop:n[0],isStartIncluded:!0,isStopIncluded:!r}),u.data=l(o)?o(u,t.length):t.length,t.addInterval(u));for(let h=0;h<i-1;++h){let A=n[h],g=n[h+1];u=new Pn({start:A,stop:g,isStartIncluded:t.length===f?r:!0,isStopIncluded:h===i-2?s:!1}),u.data=l(o)?o(u,t.length):t.length,t.addInterval(u),A=g}return c&&(u=new Pn({start:n[i-1],stop:je.MAXIMUM_VALUE,isStartIncluded:!s,isStopIncluded:!0}),u.data=l(o)?o(u,t.length):t.length,t.addInterval(u)),t};var Hc=new KA,pO=[0,31,28,31,30,31,30,31,31,30,31,30,31];function pq(e,t,n){l(n)||(n=new K),K.toGregorianDate(e,Hc);let i=Hc.millisecond+t.millisecond,o=Hc.second+t.second,r=Hc.minute+t.minute,s=Hc.hour+t.hour,a=Hc.day+t.day,c=Hc.month+t.month,u=Hc.year+t.year;for(i>=1e3&&(o+=Math.floor(i/1e3),i=i%1e3),o>=60&&(r+=Math.floor(o/60),o=o%60),r>=60&&(s+=Math.floor(r/60),r=r%60),s>=24&&(a+=Math.floor(s/24),s=s%24),pO[2]=ih(u)?29:28;a>pO[c]||c>=13;)a>pO[c]&&(a-=pO[c],++c),c>=13&&(--c,u+=Math.floor(c/12),c=c%12,++c),pO[2]=ih(u)?29:28;return Hc.millisecond=i,Hc.second=o,Hc.minute=r,Hc.hour=s,Hc.day=a,Hc.month=c,Hc.year=u,K.fromGregorianDate(Hc,n)}var DZe=new K,vZe=/P(?:([\d.,]+)Y)?(?:([\d.,]+)M)?(?:([\d.,]+)W)?(?:([\d.,]+)D)?(?:T(?:([\d.,]+)H)?(?:([\d.,]+)M)?(?:([\d.,]+)S)?)?/;function tme(e,t){if(!l(e)||e.length===0)return!1;if(t.year=0,t.month=0,t.day=0,t.hour=0,t.minute=0,t.second=0,t.millisecond=0,e[0]==="P"){let n=e.match(vZe);if(!l(n))return!1;if(l(n[1])&&(t.year=Number(n[1].replace(",","."))),l(n[2])&&(t.month=Number(n[2].replace(",","."))),l(n[3])&&(t.day=Number(n[3].replace(",","."))*7),l(n[4])&&(t.day+=Number(n[4].replace(",","."))),l(n[5])&&(t.hour=Number(n[5].replace(",","."))),l(n[6])&&(t.minute=Number(n[6].replace(",","."))),l(n[7])){let i=Number(n[7].replace(",","."));t.second=Math.floor(i),t.millisecond=i%1*1e3}}else e[e.length-1]!=="Z"&&(e+="Z"),K.toGregorianDate(K.fromIso8601(e,DZe),t);return t.year||t.month||t.day||t.hour||t.minute||t.second||t.millisecond}var gO=new KA;cs.fromIso8601=function(e,t){let n=e.iso8601.split("/"),i=K.fromIso8601(n[0]),o=K.fromIso8601(n[1]),r=[];if(!tme(n[2],gO))r.push(i,o);else{let s=K.clone(i);for(r.push(s);K.compare(s,o)<0;)s=pq(s,gO),K.compare(o,s)<=0&&K.clone(o,s),r.push(s)}return cs.fromJulianDateArray({julianDates:r,isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};cs.fromIso8601DateArray=function(e,t){return cs.fromJulianDateArray({julianDates:e.iso8601Dates.map(function(n){return K.fromIso8601(n)}),isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};cs.fromIso8601DurationArray=function(e,t){let n=e.epoch,i=e.iso8601Durations,o=e.relativeToPrevious??!1,r=[],s,a,c=i.length;for(let u=0;u<c;++u)(tme(i[u],gO)||u===0)&&(o&&l(a)?s=pq(a,gO):s=pq(n,gO),r.push(s),a=s);return cs.fromJulianDateArray({julianDates:r,isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};var ls=cs;function PZe(e,t,n,i){function o(){n.raiseEvent(e)}let r=[];t.removeAll();let s=i.length;for(let a=0;a<s;a++){let c=i.get(a);l(c.data)&&r.indexOf(c.data)===-1&&t.add(c.data.definitionChanged,o)}}function k0(){this._eventHelper=new Dr,this._definitionChanged=new _e,this._intervals=new ls,this._intervals.changedEvent.addEventListener(k0.prototype._intervalsChanged,this)}Object.defineProperties(k0.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}}});var RZe=new K;k0.prototype.getValue=function(e,t){l(e)||(e=K.now(RZe));let n=this._intervals.findDataForIntervalContainingDate(e);if(l(n))return n.getValue(e,t)};k0.prototype.equals=function(e){return this===e||e instanceof k0&&this._intervals.equals(e._intervals,j.equals)};k0.prototype._intervalsChanged=function(){PZe(this,this._eventHelper,this._definitionChanged,this._intervals),this._definitionChanged.raiseEvent(this)};var Wc=k0;function By(){this._definitionChanged=new _e,this._composite=new Wc,this._composite.definitionChanged.addEventListener(By.prototype._raiseDefinitionChanged,this)}Object.defineProperties(By.prototype,{isConstant:{get:function(){return this._composite.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._composite._intervals}}});By.prototype.getType=function(e){let t=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(t))return t.getType(e)};var MZe=new K;By.prototype.getValue=function(e,t){l(e)||(e=K.now(MZe));let n=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(n))return n.getValue(e,t)};By.prototype.equals=function(e){return this===e||e instanceof By&&this._composite.equals(e._composite,j.equals)};By.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var zT=By;function Dy(e){this._referenceFrame=e??$i.FIXED,this._definitionChanged=new _e,this._composite=new Wc,this._composite.definitionChanged.addEventListener(Dy.prototype._raiseDefinitionChanged,this)}Object.defineProperties(Dy.prototype,{isConstant:{get:function(){return this._composite.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._composite.intervals}},referenceFrame:{get:function(){return this._referenceFrame},set:function(e){this._referenceFrame=e}}});var NZe=new K;Dy.prototype.getValue=function(e,t){return l(e)||(e=K.now(NZe)),this.getValueInReferenceFrame(e,$i.FIXED,t)};Dy.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(i))return i.getValueInReferenceFrame(e,t,n)};Dy.prototype.equals=function(e){return this===e||e instanceof Dy&&this._referenceFrame===e._referenceFrame&&this._composite.equals(e._composite,j.equals)};Dy.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var ja=Dy;var LZe={ROUNDED:0,MITERED:1,BEVELED:2},ji=Object.freeze(LZe);var Ya=[new d,new d],OZe=new d,FZe=new d,QZe=new d,kZe=new d,UZe=new d,GZe=new d,zZe=new d,VZe=new d,HZe=new d,VT=new d,DV=new d,_O={},_q=new Ae;function WZe(e,t){let n=new Array(e.length);for(let i=0;i<e.length;i++){let o=e[i];_q=t.cartesianToCartographic(o,_q),n[i]=_q.height,e[i]=t.scaleToGeodeticSurface(o,o)}return n}function yq(e,t,n,i){let o=e[0],r=e[1],s=d.angleBetween(o,r),a=Math.ceil(s/i),c=new Array(a),u;if(t===n){for(u=0;u<a;u++)c[u]=t;return c.push(n),c}let h=(n-t)/a;for(u=1;u<a;u++){let A=t+u*h;c[u]=A}return c[0]=t,c.push(n),c}var vV=new d,PV=new d;function jZe(e,t,n,i){let o=new ys(n,i),r=o.projectPointOntoPlane(d.add(n,e,vV),vV),s=o.projectPointOntoPlane(d.add(n,t,PV),PV),a=U.angleBetween(r,s);return s.x*r.y-s.y*r.x>=0?-a:a}var YZe=new d(-1,0,0),U0=new N,qZe=new N,Cq=new J,KZe=J.IDENTITY.clone(),XZe=new d,JZe=new se,nme=new d;function _g(e,t,n,i,o,r,s,a){let c=XZe,u=JZe;U0=kt.eastNorthUpToFixedFrame(e,o,U0),c=N.multiplyByPointAsVector(U0,YZe,c),c=d.normalize(c,c);let f=jZe(c,t,e,o);Cq=J.fromRotationZ(f,Cq),nme.z=r,U0=N.multiplyTransformation(U0,N.fromRotationTranslation(Cq,nme,qZe),U0);let h=KZe;h[0]=s;for(let A=0;A<a;A++)for(let g=0;g<n.length;g+=3)u=d.fromArray(n,g,u),u=J.multiplyByVector(h,u,u),u=N.multiplyByPoint(U0,u,u),i.push(u.x,u.y,u.z);return i}var ZZe=new d;function Eq(e,t,n,i,o,r,s){for(let a=0;a<e.length;a+=3){let c=d.fromArray(e,a,ZZe);i=_g(c,t,n,i,o,r[a/3],s,1)}return i}function $Ze(e,t){let n=e.length,i=new Array(n*6),o=0,r=t.x+t.width/2,s=t.y+t.height/2,a=e[0];i[o++]=a.x-r,i[o++]=0,i[o++]=a.y-s;for(let c=1;c<n;c++){a=e[c];let u=a.x-r,f=a.y-s;i[o++]=u,i[o++]=0,i[o++]=f,i[o++]=u,i[o++]=0,i[o++]=f}return a=e[0],i[o++]=a.x-r,i[o++]=0,i[o++]=a.y-s,i}function ime(e,t){let n=e.length,i=new Array(n*3),o=0,r=t.x+t.width/2,s=t.y+t.height/2;for(let a=0;a<n;a++)i[o++]=e[a].x-r,i[o++]=0,i[o++]=e[a].y-s;return i}var ome=new Le,rme=new d,sme=new J;function ame(e,t,n,i,o,r,s,a,c,u){let f=d.angleBetween(d.subtract(t,e,VT),d.subtract(n,e,DV)),h=i===ji.BEVELED?0:Math.ceil(f/D.toRadians(5)),A;o?A=J.fromQuaternion(Le.fromAxisAngle(d.negate(e,VT),f/(h+1),ome),sme):A=J.fromQuaternion(Le.fromAxisAngle(e,f/(h+1),ome),sme);let g,m;if(t=d.clone(t,rme),h>0){let _=u?2:1;for(let y=0;y<h;y++)t=J.multiplyByVector(A,t,t),g=d.subtract(t,e,VT),g=d.normalize(g,g),o||(g=d.negate(g,g)),m=r.scaleToGeodeticSurface(t,DV),s=_g(m,g,a,s,r,c,1,_)}else g=d.subtract(t,e,VT),g=d.normalize(g,g),o||(g=d.negate(g,g)),m=r.scaleToGeodeticSurface(t,DV),s=_g(m,g,a,s,r,c,1,1),n=d.clone(n,rme),g=d.subtract(n,e,VT),g=d.normalize(g,g),o||(g=d.negate(g,g)),m=r.scaleToGeodeticSurface(n,DV),s=_g(m,g,a,s,r,c,1,1);return s}_O.removeDuplicatesFromShape=function(e){let t=e.length,n=[];for(let i=t-1,o=0;o<t;i=o++){let r=e[i],s=e[o];U.equals(r,s)||n.push(s)}return n};_O.angleIsGreaterThanPi=function(e,t,n,i){let o=new ys(n,i),r=o.projectPointOntoPlane(d.add(n,e,vV),vV),s=o.projectPointOntoPlane(d.add(n,t,PV),PV);return s.x*r.y-s.y*r.x>=0};var e$e=new d,t$e=new d;_O.computePositions=function(e,t,n,i,o){let r=i._ellipsoid,s=WZe(e,r),a=i._granularity,c=i._cornerType,u=o?$Ze(t,n):ime(t,n),f=o?ime(t,n):void 0,h=n.height/2,A=n.width/2,g=e.length,m=[],_=o?[]:void 0,y=OZe,C=FZe,E=QZe,I=kZe,b=UZe,S=GZe,B=zZe,v=VZe,P=HZe,M=e[0],L=e[1];I=r.geodeticSurfaceNormal(M,I),y=d.subtract(L,M,y),y=d.normalize(y,y),v=d.cross(I,y,v),v=d.normalize(v,v);let p=s[0],x=s[1];o&&(_=_g(M,v,f,_,r,p+h,1,1)),P=d.clone(M,P),M=L,C=d.negate(y,C);let T,w;for(let k=1;k<g-1;k++){let Q=o?2:1;if(L=e[k+1],M.equals(L)){yt("Positions are too close and are considered equivalent with rounding error.");continue}y=d.subtract(L,M,y),y=d.normalize(y,y),I=r.geodeticSurfaceNormal(M,I);let z=d.multiplyByScalar(I,d.dot(y,I),e$e);d.subtract(y,z,z),d.normalize(z,z);let F=d.multiplyByScalar(I,d.dot(C,I),t$e);if(d.subtract(C,F,F),d.normalize(F,F),!D.equalsEpsilon(Math.abs(d.dot(z,F)),1,D.EPSILON7)){E=d.add(y,C,E),E=d.normalize(E,E),E=d.cross(E,I,E),E=d.cross(I,E,E),E=d.normalize(E,E);let W=1/Math.max(.25,d.magnitude(d.cross(E,C,VT))),Z=_O.angleIsGreaterThanPi(y,C,M,r);Z?(b=d.add(M,d.multiplyByScalar(E,W*A,E),b),S=d.add(b,d.multiplyByScalar(v,A,S),S),Ya[0]=d.clone(P,Ya[0]),Ya[1]=d.clone(S,Ya[1]),T=yq(Ya,p+h,x+h,a),w=Wi.generateArc({positions:Ya,granularity:a,ellipsoid:r}),m=Eq(w,v,u,m,r,T,1),v=d.cross(I,y,v),v=d.normalize(v,v),B=d.add(b,d.multiplyByScalar(v,A,B),B),c===ji.ROUNDED||c===ji.BEVELED?ame(b,S,B,c,Z,r,m,u,x+h,o):(E=d.negate(E,E),m=_g(M,E,u,m,r,x+h,W,Q)),P=d.clone(B,P)):(b=d.add(M,d.multiplyByScalar(E,W*A,E),b),S=d.add(b,d.multiplyByScalar(v,-A,S),S),Ya[0]=d.clone(P,Ya[0]),Ya[1]=d.clone(S,Ya[1]),T=yq(Ya,p+h,x+h,a),w=Wi.generateArc({positions:Ya,granularity:a,ellipsoid:r}),m=Eq(w,v,u,m,r,T,1),v=d.cross(I,y,v),v=d.normalize(v,v),B=d.add(b,d.multiplyByScalar(v,-A,B),B),c===ji.ROUNDED||c===ji.BEVELED?ame(b,S,B,c,Z,r,m,u,x+h,o):m=_g(M,E,u,m,r,x+h,W,Q),P=d.clone(B,P)),C=d.negate(y,C)}else m=_g(P,v,u,m,r,p+h,1,1),P=M;p=x,x=s[k+1],M=L}Ya[0]=d.clone(P,Ya[0]),Ya[1]=d.clone(M,Ya[1]),T=yq(Ya,p+h,x+h,a),w=Wi.generateArc({positions:Ya,granularity:a,ellipsoid:r}),m=Eq(w,v,u,m,r,T,1),o&&(_=_g(M,v,f,_,r,x+h,1,1)),g=m.length;let R=o?g+_.length:g,O=new Float64Array(R);return O.set(m),o&&O.set(_,g),O};var jh=_O;var xq={},HT=new d,dme=new d,n$e=new d,cme=new d,Nl=[new d,new d],hme=new d,mme=new d,Ame=new d,i$e=new d,o$e=new d,r$e=new d,s$e=new d,a$e=new d,c$e=new d,l$e=new d,lme=new Le,ume=new J;function RV(e,t,n,i,o){let r=d.angleBetween(d.subtract(t,e,HT),d.subtract(n,e,dme)),s=i===ji.BEVELED?1:Math.ceil(r/D.toRadians(5))+1,a=s*3,c=new Array(a);c[a-3]=n.x,c[a-2]=n.y,c[a-1]=n.z;let u;o?u=J.fromQuaternion(Le.fromAxisAngle(d.negate(e,HT),r/s,lme),ume):u=J.fromQuaternion(Le.fromAxisAngle(e,r/s,lme),ume);let f=0;t=d.clone(t,HT);for(let h=0;h<s;h++)t=J.multiplyByVector(u,t,t),c[f++]=t.x,c[f++]=t.y,c[f++]=t.z;return c}function u$e(e){let t=hme,n=mme,i=Ame,o=e[1];n=d.fromArray(e[1],o.length-3,n),i=d.fromArray(e[0],0,i),t=d.midpoint(n,i,t);let r=RV(t,n,i,ji.ROUNDED,!1),s=e.length-1,a=e[s-1];o=e[s],n=d.fromArray(a,a.length-3,n),i=d.fromArray(o,0,i),t=d.midpoint(n,i,t);let c=RV(t,n,i,ji.ROUNDED,!1);return[r,c]}function fme(e,t,n,i){let o=HT;return i?o=d.add(e,t,o):(t=d.negate(t,t),o=d.add(e,t,o)),[o.x,o.y,o.z,n.x,n.y,n.z]}function Iq(e,t,n,i){let o=new Array(e.length),r=new Array(e.length),s=d.multiplyByScalar(t,n,HT),a=d.negate(s,dme),c=0,u=e.length-1;for(let f=0;f<e.length;f+=3){let h=d.fromArray(e,f,n$e),A=d.add(h,a,cme);o[c++]=A.x,o[c++]=A.y,o[c++]=A.z;let g=d.add(h,s,cme);r[u--]=g.z,r[u--]=g.y,r[u--]=g.x}return i.push(o,r),i}xq.addAttribute=function(e,t,n,i){let o=t.x,r=t.y,s=t.z;l(n)&&(e[n]=o,e[n+1]=r,e[n+2]=s),l(i)&&(e[i]=s,e[i-1]=r,e[i-2]=o)};var f$e=new d,d$e=new d;xq.computePositions=function(e){let t=e.granularity,n=e.positions,i=e.ellipsoid,o=e.width/2,r=e.cornerType,s=e.saveAttributes,a=hme,c=mme,u=Ame,f=i$e,h=o$e,A=r$e,g=s$e,m=a$e,_=c$e,y=l$e,C=[],E=s?[]:void 0,I=s?[]:void 0,b=n[0],S=n[1];c=d.normalize(d.subtract(S,b,c),c),a=i.geodeticSurfaceNormal(b,a),f=d.normalize(d.cross(a,c,f),f),s&&(E.push(f.x,f.y,f.z),I.push(a.x,a.y,a.z)),g=d.clone(b,g),b=S,u=d.negate(c,u);let B,v=[],P,M=n.length;for(P=1;P<M-1;P++){a=i.geodeticSurfaceNormal(b,a),S=n[P+1],c=d.normalize(d.subtract(S,b,c),c);let p=d.multiplyByScalar(a,d.dot(c,a),f$e);d.subtract(c,p,p),d.normalize(p,p);let x=d.multiplyByScalar(a,d.dot(u,a),d$e);if(d.subtract(u,x,x),d.normalize(x,x),!D.equalsEpsilon(Math.abs(d.dot(p,x)),1,D.EPSILON7)){h=d.normalize(d.add(c,u,h),h),h=d.cross(h,a,h),h=d.cross(a,h,h),h=d.normalize(h,h);let w=o/Math.max(.25,d.magnitude(d.cross(h,u,HT))),R=jh.angleIsGreaterThanPi(c,u,b,i);h=d.multiplyByScalar(h,w,h),R?(m=d.add(b,h,m),y=d.add(m,d.multiplyByScalar(f,o,y),y),_=d.add(m,d.multiplyByScalar(f,o*2,_),_),Nl[0]=d.clone(g,Nl[0]),Nl[1]=d.clone(y,Nl[1]),B=Wi.generateArc({positions:Nl,granularity:t,ellipsoid:i}),C=Iq(B,f,o,C),s&&(E.push(f.x,f.y,f.z),I.push(a.x,a.y,a.z)),A=d.clone(_,A),f=d.normalize(d.cross(a,c,f),f),_=d.add(m,d.multiplyByScalar(f,o*2,_),_),g=d.add(m,d.multiplyByScalar(f,o,g),g),r===ji.ROUNDED||r===ji.BEVELED?v.push({leftPositions:RV(m,A,_,r,R)}):v.push({leftPositions:fme(b,d.negate(h,h),_,R)})):(_=d.add(b,h,_),y=d.add(_,d.negate(d.multiplyByScalar(f,o,y),y),y),m=d.add(_,d.negate(d.multiplyByScalar(f,o*2,m),m),m),Nl[0]=d.clone(g,Nl[0]),Nl[1]=d.clone(y,Nl[1]),B=Wi.generateArc({positions:Nl,granularity:t,ellipsoid:i}),C=Iq(B,f,o,C),s&&(E.push(f.x,f.y,f.z),I.push(a.x,a.y,a.z)),A=d.clone(m,A),f=d.normalize(d.cross(a,c,f),f),m=d.add(_,d.negate(d.multiplyByScalar(f,o*2,m),m),m),g=d.add(_,d.negate(d.multiplyByScalar(f,o,g),g),g),r===ji.ROUNDED||r===ji.BEVELED?v.push({rightPositions:RV(_,A,m,r,R)}):v.push({rightPositions:fme(b,h,m,R)})),u=d.negate(c,u)}b=S}a=i.geodeticSurfaceNormal(b,a),Nl[0]=d.clone(g,Nl[0]),Nl[1]=d.clone(b,Nl[1]),B=Wi.generateArc({positions:Nl,granularity:t,ellipsoid:i}),C=Iq(B,f,o,C),s&&(E.push(f.x,f.y,f.z),I.push(a.x,a.y,a.z));let L;return r===ji.ROUNDED&&(L=u$e(C)),{positions:C,corners:v,lefts:E,normals:I,endPositions:L}};var no=xq;var _me=new d,yme=new d,MV=new d,NV=new d,h$e=new d,Cme=new d,vy=new d,WT=new d;function Eme(e,t){for(let n=0;n<e.length;n++)e[n]=t.scaleToGeodeticSurface(e[n],e[n]);return e}function Yh(e,t,n,i,o,r){let s=e.normals,a=e.tangents,c=e.bitangents,u=d.normalize(d.cross(n,t,vy),vy);r.normal&&no.addAttribute(s,t,i,o),r.tangent&&no.addAttribute(a,u,i,o),r.bitangent&&no.addAttribute(c,n,i,o)}function Ime(e,t,n){let i=e.positions,o=e.corners,r=e.endPositions,s=e.lefts,a=e.normals,c=new yn,u,f=0,h=0,A,g=0,m;for(A=0;A<i.length;A+=2)m=i[A].length-3,f+=m,g+=m*2,h+=i[A+1].length-3;for(f+=3,h+=3,A=0;A<o.length;A++){u=o[A];let X=o[A].leftPositions;l(X)?(m=X.length,f+=m,g+=m):(m=o[A].rightPositions.length,h+=m,g+=m)}let _=l(r),y;_&&(y=r[0].length-3,f+=y,h+=y,y/=3,g+=y*6);let C=f+h,E=new Float64Array(C),I=t.normal?new Float32Array(C):void 0,b=t.tangent?new Float32Array(C):void 0,S=t.bitangent?new Float32Array(C):void 0,B={normals:I,tangents:b,bitangents:S},v=0,P=C-1,M,L,p,x,T=_me,w=yme,R,O,k=y/2,Q=Oe.createTypedArray(C/3,g),z=0;if(_){O=MV,R=NV;let X=r[0];for(T=d.fromArray(a,0,T),w=d.fromArray(s,0,w),A=0;A<k;A++)O=d.fromArray(X,(k-1-A)*3,O),R=d.fromArray(X,(k+A)*3,R),no.addAttribute(E,R,v),no.addAttribute(E,O,void 0,P),Yh(B,T,w,v,P,t),L=v/3,x=L+1,M=(P-2)/3,p=M-1,Q[z++]=M,Q[z++]=L,Q[z++]=p,Q[z++]=p,Q[z++]=L,Q[z++]=x,v+=3,P-=3}let F=0,H=0,W=i[F++],Z=i[F++];E.set(W,v),E.set(Z,P-Z.length+1),w=d.fromArray(s,H,w);let Y,$;for(m=Z.length-3,A=0;A<m;A+=3)Y=n.geodeticSurfaceNormal(d.fromArray(W,A,vy),vy),$=n.geodeticSurfaceNormal(d.fromArray(Z,m-A,WT),WT),T=d.normalize(d.add(Y,$,T),T),Yh(B,T,w,v,P,t),L=v/3,x=L+1,M=(P-2)/3,p=M-1,Q[z++]=M,Q[z++]=L,Q[z++]=p,Q[z++]=p,Q[z++]=L,Q[z++]=x,v+=3,P-=3;for(Y=n.geodeticSurfaceNormal(d.fromArray(W,m,vy),vy),$=n.geodeticSurfaceNormal(d.fromArray(Z,m,WT),WT),T=d.normalize(d.add(Y,$,T),T),H+=3,A=0;A<o.length;A++){let X;u=o[A];let he=u.leftPositions,ge=u.rightPositions,fe,ye,xe=Cme,ve=MV,Te=NV;if(T=d.fromArray(a,H,T),l(he)){for(Yh(B,T,w,void 0,P,t),P-=3,fe=x,ye=p,X=0;X<he.length/3;X++)xe=d.fromArray(he,X*3,xe),Q[z++]=fe,Q[z++]=ye-X-1,Q[z++]=ye-X,no.addAttribute(E,xe,void 0,P),ve=d.fromArray(E,(ye-X-1)*3,ve),Te=d.fromArray(E,fe*3,Te),w=d.normalize(d.subtract(ve,Te,w),w),Yh(B,T,w,void 0,P,t),P-=3;xe=d.fromArray(E,fe*3,xe),ve=d.subtract(d.fromArray(E,ye*3,ve),xe,ve),Te=d.subtract(d.fromArray(E,(ye-X)*3,Te),xe,Te),w=d.normalize(d.add(ve,Te,w),w),Yh(B,T,w,v,void 0,t),v+=3}else{for(Yh(B,T,w,v,void 0,t),v+=3,fe=p,ye=x,X=0;X<ge.length/3;X++)xe=d.fromArray(ge,X*3,xe),Q[z++]=fe,Q[z++]=ye+X,Q[z++]=ye+X+1,no.addAttribute(E,xe,v),ve=d.fromArray(E,fe*3,ve),Te=d.fromArray(E,(ye+X)*3,Te),w=d.normalize(d.subtract(ve,Te,w),w),Yh(B,T,w,v,void 0,t),v+=3;xe=d.fromArray(E,fe*3,xe),ve=d.subtract(d.fromArray(E,(ye+X)*3,ve),xe,ve),Te=d.subtract(d.fromArray(E,ye*3,Te),xe,Te),w=d.normalize(d.negate(d.add(Te,ve,w),w),w),Yh(B,T,w,void 0,P,t),P-=3}for(W=i[F++],Z=i[F++],W.splice(0,3),Z.splice(Z.length-3,3),E.set(W,v),E.set(Z,P-Z.length+1),m=Z.length-3,H+=3,w=d.fromArray(s,H,w),X=0;X<Z.length;X+=3)Y=n.geodeticSurfaceNormal(d.fromArray(W,X,vy),vy),$=n.geodeticSurfaceNormal(d.fromArray(Z,m-X,WT),WT),T=d.normalize(d.add(Y,$,T),T),Yh(B,T,w,v,P,t),x=v/3,L=x-1,p=(P-2)/3,M=p+1,Q[z++]=M,Q[z++]=L,Q[z++]=p,Q[z++]=p,Q[z++]=L,Q[z++]=x,v+=3,P-=3;v-=3,P+=3}if(T=d.fromArray(a,a.length-3,T),Yh(B,T,w,v,P,t),_){v+=3,P-=3,O=MV,R=NV;let X=r[1];for(A=0;A<k;A++)O=d.fromArray(X,(y-A-1)*3,O),R=d.fromArray(X,A*3,R),no.addAttribute(E,O,void 0,P),no.addAttribute(E,R,v),Yh(B,T,w,v,P,t),x=v/3,L=x-1,p=(P-2)/3,M=p+1,Q[z++]=M,Q[z++]=L,Q[z++]=p,Q[z++]=p,Q[z++]=L,Q[z++]=x,v+=3,P-=3}if(c.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:E}),t.st){let X=new Float32Array(C/3*2),he,ge,fe=0;if(_){f/=3,h/=3;let ye=Math.PI/(y+1);ge=1/(f-y+1),he=1/(h-y+1);let xe,ve=y/2;for(A=ve+1;A<y+1;A++)xe=D.PI_OVER_TWO+ye*A,X[fe++]=he*(1+Math.cos(xe)),X[fe++]=.5*(1+Math.sin(xe));for(A=1;A<h-y+1;A++)X[fe++]=A*he,X[fe++]=0;for(A=y;A>ve;A--)xe=D.PI_OVER_TWO-A*ye,X[fe++]=1-he*(1+Math.cos(xe)),X[fe++]=.5*(1+Math.sin(xe));for(A=ve;A>0;A--)xe=D.PI_OVER_TWO-ye*A,X[fe++]=1-ge*(1+Math.cos(xe)),X[fe++]=.5*(1+Math.sin(xe));for(A=f-y;A>0;A--)X[fe++]=A*ge,X[fe++]=1;for(A=1;A<ve+1;A++)xe=D.PI_OVER_TWO+ye*A,X[fe++]=ge*(1+Math.cos(xe)),X[fe++]=.5*(1+Math.sin(xe))}else{for(f/=3,h/=3,ge=1/(f-1),he=1/(h-1),A=0;A<h;A++)X[fe++]=A*he,X[fe++]=0;for(A=f;A>0;A--)X[fe++]=(A-1)*ge,X[fe++]=1}c.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:X})}return t.normal&&(c.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:B.normals})),t.tangent&&(c.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:B.tangents})),t.bitangent&&(c.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:B.bitangents})),{attributes:c,indices:Q}}function m$e(e,t){if(!t.normal&&!t.tangent&&!t.bitangent&&!t.st)return e;let n=e.position.values,i,o;(t.normal||t.bitangent)&&(i=e.normal.values,o=e.bitangent.values);let r=e.position.values.length/18,s=r*3,a=r*2,c=s*2,u;if(t.normal||t.bitangent||t.tangent){let f=t.normal?new Float32Array(s*6):void 0,h=t.tangent?new Float32Array(s*6):void 0,A=t.bitangent?new Float32Array(s*6):void 0,g=_me,m=yme,_=MV,y=NV,C=h$e,E=Cme,I=c;for(u=0;u<s;u+=3){let b=I+c;g=d.fromArray(n,u,g),m=d.fromArray(n,u+s,m),_=d.fromArray(n,(u+3)%s,_),m=d.subtract(m,g,m),_=d.subtract(_,g,_),y=d.normalize(d.cross(m,_,y),y),t.normal&&(no.addAttribute(f,y,b),no.addAttribute(f,y,b+3),no.addAttribute(f,y,I),no.addAttribute(f,y,I+3)),(t.tangent||t.bitangent)&&(E=d.fromArray(i,u,E),t.bitangent&&(no.addAttribute(A,E,b),no.addAttribute(A,E,b+3),no.addAttribute(A,E,I),no.addAttribute(A,E,I+3)),t.tangent&&(C=d.normalize(d.cross(E,y,C),C),no.addAttribute(h,C,b),no.addAttribute(h,C,b+3),no.addAttribute(h,C,I),no.addAttribute(h,C,I+3))),I+=6}if(t.normal){for(f.set(i),u=0;u<s;u+=3)f[u+s]=-i[u],f[u+s+1]=-i[u+1],f[u+s+2]=-i[u+2];e.normal.values=f}else e.normal=void 0;if(t.bitangent?(A.set(o),A.set(o,s),e.bitangent.values=A):e.bitangent=void 0,t.tangent){let b=e.tangent.values;h.set(b),h.set(b,s),e.tangent.values=h}}if(t.st){let f=e.st.values,h=new Float32Array(a*6);h.set(f),h.set(f,a);let A=a*2;for(let g=0;g<2;g++){for(h[A++]=f[0],h[A++]=f[1],u=2;u<a;u+=2){let m=f[u],_=f[u+1];h[A++]=m,h[A++]=_,h[A++]=m,h[A++]=_}h[A++]=f[0],h[A++]=f[1]}e.st.values=h}return e}function bq(e,t,n){n[t++]=e[0],n[t++]=e[1],n[t++]=e[2];for(let i=3;i<e.length;i+=3){let o=e[i],r=e[i+1],s=e[i+2];n[t++]=o,n[t++]=r,n[t++]=s,n[t++]=o,n[t++]=r,n[t++]=s}return n[t++]=e[0],n[t++]=e[1],n[t++]=e[2],n}function A$e(e,t){let n=new Pe({position:t.position,normal:t.normal||t.bitangent||e.shadowVolume,tangent:t.tangent,bitangent:t.normal||t.bitangent,st:t.st}),i=e.ellipsoid,o=no.computePositions(e),r=Ime(o,n,i),s=e.height,a=e.extrudedHeight,c=r.attributes,u=r.indices,f=c.position.values,h=f.length,A=new Float64Array(h*6),g=new Float64Array(h);g.set(f);let m=new Float64Array(h*4);f=Ii.scaleToGeodeticHeight(f,s,i),m=bq(f,0,m),g=Ii.scaleToGeodeticHeight(g,a,i),m=bq(g,h*2,m),A.set(f),A.set(g,h),A.set(m,h*2),c.position.values=A,c=m$e(c,t);let _,y=h/3;if(e.shadowVolume){let M=c.normal.values;h=M.length;let L=new Float32Array(h*6);for(_=0;_<h;_++)M[_]=-M[_];L.set(M,h),L=bq(M,h*4,L),c.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:L}),t.normal||(c.normal=void 0)}if(l(e.offsetAttribute)){let M=new Uint8Array(y*6);if(e.offsetAttribute===hn.TOP)M=M.fill(1,0,y).fill(1,y*2,y*4);else{let L=e.offsetAttribute===hn.NONE?0:1;M=M.fill(L)}c.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:M})}let C=u.length,E=y+y,I=Oe.createTypedArray(A.length/3,C*2+E*3);I.set(u);let b=C;for(_=0;_<C;_+=3){let M=u[_],L=u[_+1],p=u[_+2];I[b++]=p+y,I[b++]=L+y,I[b++]=M+y}let S,B,v,P;for(_=0;_<E;_+=2)S=_+E,B=S+E,v=S+1,P=B+1,I[b++]=S,I[b++]=B,I[b++]=v,I[b++]=v,I[b++]=B,I[b++]=P;return{attributes:c,indices:I}}var pme=new d,yO=new d,Td=new Ae;function gme(e,t,n,i,o,r){let s=d.subtract(t,e,pme);d.normalize(s,s);let a=n.geodeticSurfaceNormal(e,yO),c=d.cross(s,a,pme);d.multiplyByScalar(c,i,c);let u=o.latitude,f=o.longitude,h=r.latitude,A=r.longitude;d.add(e,c,yO),n.cartesianToCartographic(yO,Td);let g=Td.latitude,m=Td.longitude;u=Math.min(u,g),f=Math.min(f,m),h=Math.max(h,g),A=Math.max(A,m),d.subtract(e,c,yO),n.cartesianToCartographic(yO,Td),g=Td.latitude,m=Td.longitude,u=Math.min(u,g),f=Math.min(f,m),h=Math.max(h,g),A=Math.max(A,m),o.latitude=u,o.longitude=f,r.latitude=h,r.longitude=A}var bd=new d,CO=new d,_u=new Ae,yu=new Ae;function xme(e,t,n,i,o){e=Eme(e,t);let r=Mo(e,d.equalsEpsilon),s=r.length;if(s<2||n<=0)return new ae;let a=n*.5;_u.latitude=Number.POSITIVE_INFINITY,_u.longitude=Number.POSITIVE_INFINITY,yu.latitude=Number.NEGATIVE_INFINITY,yu.longitude=Number.NEGATIVE_INFINITY;let c,u;if(i===ji.ROUNDED){let A=r[0];d.subtract(A,r[1],bd),d.normalize(bd,bd),d.multiplyByScalar(bd,a,bd),d.add(A,bd,CO),t.cartesianToCartographic(CO,Td),c=Td.latitude,u=Td.longitude,_u.latitude=Math.min(_u.latitude,c),_u.longitude=Math.min(_u.longitude,u),yu.latitude=Math.max(yu.latitude,c),yu.longitude=Math.max(yu.longitude,u)}for(let A=0;A<s-1;++A)gme(r[A],r[A+1],t,a,_u,yu);let f=r[s-1];d.subtract(f,r[s-2],bd),d.normalize(bd,bd),d.multiplyByScalar(bd,a,bd),d.add(f,bd,CO),gme(f,CO,t,a,_u,yu),i===ji.ROUNDED&&(t.cartesianToCartographic(CO,Td),c=Td.latitude,u=Td.longitude,_u.latitude=Math.min(_u.latitude,c),_u.longitude=Math.min(_u.longitude,u),yu.latitude=Math.max(yu.latitude,c),yu.longitude=Math.max(yu.longitude,u));let h=l(o)?o:new ae;return h.north=yu.latitude,h.south=_u.latitude,h.east=yu.longitude,h.west=_u.longitude,h}function Cg(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.width,i=e.height??0,o=e.extrudedHeight??i;this._positions=t,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._vertexFormat=Pe.clone(e.vertexFormat??Pe.DEFAULT),this._width=n,this._height=Math.max(i,o),this._extrudedHeight=Math.min(i,o),this._cornerType=e.cornerType??ji.ROUNDED,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._shadowVolume=e.shadowVolume??!1,this._workerName="createCorridorGeometry",this._offsetAttribute=e.offsetAttribute,this._rectangle=void 0,this.packedLength=1+t.length*d.packedLength+te.packedLength+Pe.packedLength+7}Cg.pack=function(e,t,n){n=n??0;let i=e._positions,o=i.length;t[n++]=o;for(let r=0;r<o;++r,n+=d.packedLength)d.pack(i[r],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._width,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._cornerType,t[n++]=e._granularity,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var bme=te.clone(te.UNIT_SPHERE),Tme=new Pe,yg={positions:void 0,ellipsoid:bme,vertexFormat:Tme,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0,shadowVolume:void 0,offsetAttribute:void 0};Cg.unpack=function(e,t,n){t=t??0;let i=e[t++],o=new Array(i);for(let m=0;m<i;++m,t+=d.packedLength)o[m]=d.unpack(e,t);let r=te.unpack(e,t,bme);t+=te.packedLength;let s=Pe.unpack(e,t,Tme);t+=Pe.packedLength;let a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t++]===1,g=e[t];return l(n)?(n._positions=o,n._ellipsoid=te.clone(r,n._ellipsoid),n._vertexFormat=Pe.clone(s,n._vertexFormat),n._width=a,n._height=c,n._extrudedHeight=u,n._cornerType=f,n._granularity=h,n._shadowVolume=A,n._offsetAttribute=g===-1?void 0:g,n):(yg.positions=o,yg.width=a,yg.height=c,yg.extrudedHeight=u,yg.cornerType=f,yg.granularity=h,yg.shadowVolume=A,yg.offsetAttribute=g===-1?void 0:g,new Cg(yg))};Cg.computeRectangle=function(e,t){e=e??V.EMPTY_OBJECT;let n=e.positions,i=e.width,o=e.ellipsoid??te.default,r=e.cornerType??ji.ROUNDED;return xme(n,o,i,r,t)};Cg.createGeometry=function(e){let t=e._positions,n=e._width,i=e._ellipsoid;t=Eme(t,i);let o=Mo(t,d.equalsEpsilon);if(o.length<2||n<=0)return;let r=e._height,s=e._extrudedHeight,a=!D.equalsEpsilon(r,s,0,D.EPSILON2),c=e._vertexFormat,u={ellipsoid:i,positions:o,width:n,cornerType:e._cornerType,granularity:e._granularity,saveAttributes:!0},f;if(a)u.height=r,u.extrudedHeight=s,u.shadowVolume=e._shadowVolume,u.offsetAttribute=e._offsetAttribute,f=A$e(u,c);else{let g=no.computePositions(u);if(f=Ime(g,c,i),f.attributes.position.values=Ii.scaleToGeodeticHeight(f.attributes.position.values,r,i),l(e._offsetAttribute)){let m=e._offsetAttribute===hn.NONE?0:1,_=f.attributes.position.values.length,y=new Uint8Array(_/3).fill(m);f.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:y})}}let h=f.attributes,A=le.fromVertices(h.position.values,void 0,3);return c.position||(f.attributes.position.values=void 0),new ht({attributes:h,indices:f.indices,primitiveType:Me.TRIANGLES,boundingSphere:A,offsetAttribute:e._offsetAttribute})};Cg.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new Cg({positions:e._positions,width:e._width,cornerType:e._cornerType,ellipsoid:o,granularity:i,extrudedHeight:r,height:s,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(Cg.prototype,{rectangle:{get:function(){return l(this._rectangle)||(this._rectangle=xme(this._positions,this._ellipsoid,this._width,this._cornerType)),this._rectangle}},textureCoordinateRotationPoints:{get:function(){return[0,0,0,1,1,0]}}});var G0=Cg;var Sme=new d,wme=new d,p$e=new d;function g$e(e,t){for(let n=0;n<e.length;n++)e[n]=t.scaleToGeodeticSurface(e[n],e[n]);return e}function Bme(e,t){let n=[],i=e.positions,o=e.corners,r=e.endPositions,s=new yn,a,c=0,u=0,f,h=0,A;for(f=0;f<i.length;f+=2)A=i[f].length-3,c+=A,h+=A/3*4,u+=i[f+1].length-3;for(c+=3,u+=3,f=0;f<o.length;f++){a=o[f];let R=o[f].leftPositions;l(R)?(A=R.length,c+=A,h+=A/3*2):(A=o[f].rightPositions.length,u+=A,h+=A/3*2)}let g=l(r),m;g&&(m=r[0].length-3,c+=m,u+=m,m/=3,h+=m*4);let _=c+u,y=new Float64Array(_),C=0,E=_-1,I,b,S,B,v,P,M=m/2,L=Oe.createTypedArray(_/3,h+4),p=0;if(L[p++]=C/3,L[p++]=(E-2)/3,g){n.push(C/3),P=Sme,v=wme;let R=r[0];for(f=0;f<M;f++)P=d.fromArray(R,(M-1-f)*3,P),v=d.fromArray(R,(M+f)*3,v),no.addAttribute(y,v,C),no.addAttribute(y,P,void 0,E),b=C/3,B=b+1,I=(E-2)/3,S=I-1,L[p++]=I,L[p++]=S,L[p++]=b,L[p++]=B,C+=3,E-=3}let x=0,T=i[x++],w=i[x++];for(y.set(T,C),y.set(w,E-w.length+1),A=w.length-3,n.push(C/3,(E-2)/3),f=0;f<A;f+=3)b=C/3,B=b+1,I=(E-2)/3,S=I-1,L[p++]=I,L[p++]=S,L[p++]=b,L[p++]=B,C+=3,E-=3;for(f=0;f<o.length;f++){let R;a=o[f];let O=a.leftPositions,k=a.rightPositions,Q,z=p$e;if(l(O)){for(E-=3,Q=S,n.push(B),R=0;R<O.length/3;R++)z=d.fromArray(O,R*3,z),L[p++]=Q-R-1,L[p++]=Q-R,no.addAttribute(y,z,void 0,E),E-=3;n.push(Q-Math.floor(O.length/6)),t===ji.BEVELED&&n.push((E-2)/3+1),C+=3}else{for(C+=3,Q=B,n.push(S),R=0;R<k.length/3;R++)z=d.fromArray(k,R*3,z),L[p++]=Q+R,L[p++]=Q+R+1,no.addAttribute(y,z,C),C+=3;n.push(Q+Math.floor(k.length/6)),t===ji.BEVELED&&n.push(C/3-1),E-=3}for(T=i[x++],w=i[x++],T.splice(0,3),w.splice(w.length-3,3),y.set(T,C),y.set(w,E-w.length+1),A=w.length-3,R=0;R<w.length;R+=3)B=C/3,b=B-1,S=(E-2)/3,I=S+1,L[p++]=I,L[p++]=S,L[p++]=b,L[p++]=B,C+=3,E-=3;C-=3,E+=3,n.push(C/3,(E-2)/3)}if(g){C+=3,E-=3,P=Sme,v=wme;let R=r[1];for(f=0;f<M;f++)P=d.fromArray(R,(m-f-1)*3,P),v=d.fromArray(R,f*3,v),no.addAttribute(y,P,void 0,E),no.addAttribute(y,v,C),B=C/3,b=B-1,S=(E-2)/3,I=S+1,L[p++]=I,L[p++]=S,L[p++]=b,L[p++]=B,C+=3,E-=3;n.push(C/3)}else n.push(C/3,(E-2)/3);return L[p++]=C/3,L[p++]=(E-2)/3,s.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:y}),{attributes:s,indices:L,wallIndices:n}}function _$e(e){let t=e.ellipsoid,n=no.computePositions(e),i=Bme(n,e.cornerType),o=i.wallIndices,r=e.height,s=e.extrudedHeight,a=i.attributes,c=i.indices,u=a.position.values,f=u.length,h=new Float64Array(f);h.set(u);let A=new Float64Array(f*2);if(u=Ii.scaleToGeodeticHeight(u,r,t),h=Ii.scaleToGeodeticHeight(h,s,t),A.set(u),A.set(h,f),a.position.values=A,f/=3,l(e.offsetAttribute)){let I=new Uint8Array(f*2);if(e.offsetAttribute===hn.TOP)I=I.fill(1,0,f);else{let b=e.offsetAttribute===hn.NONE?0:1;I=I.fill(b)}a.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:I})}let g,m=c.length,_=Oe.createTypedArray(A.length/3,(m+o.length)*2);_.set(c);let y=m;for(g=0;g<m;g+=2){let I=c[g],b=c[g+1];_[y++]=I+f,_[y++]=b+f}let C,E;for(g=0;g<o.length;g++)C=o[g],E=C+f,_[y++]=C,_[y++]=E;return{attributes:a,indices:_}}function EO(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.width,i=e.height??0,o=e.extrudedHeight??i;this._positions=t,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._width=n,this._height=Math.max(i,o),this._extrudedHeight=Math.min(i,o),this._cornerType=e.cornerType??ji.ROUNDED,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._offsetAttribute=e.offsetAttribute,this._workerName="createCorridorOutlineGeometry",this.packedLength=1+t.length*d.packedLength+te.packedLength+6}EO.pack=function(e,t,n){n=n??0;let i=e._positions,o=i.length;t[n++]=o;for(let r=0;r<o;++r,n+=d.packedLength)d.pack(i[r],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._width,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._cornerType,t[n++]=e._granularity,t[n]=e._offsetAttribute??-1,t};var Dme=te.clone(te.UNIT_SPHERE),Py={positions:void 0,ellipsoid:Dme,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0,offsetAttribute:void 0};EO.unpack=function(e,t,n){t=t??0;let i=e[t++],o=new Array(i);for(let A=0;A<i;++A,t+=d.packedLength)o[A]=d.unpack(e,t);let r=te.unpack(e,t,Dme);t+=te.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t];return l(n)?(n._positions=o,n._ellipsoid=te.clone(r,n._ellipsoid),n._width=s,n._height=a,n._extrudedHeight=c,n._cornerType=u,n._granularity=f,n._offsetAttribute=h===-1?void 0:h,n):(Py.positions=o,Py.width=s,Py.height=a,Py.extrudedHeight=c,Py.cornerType=u,Py.granularity=f,Py.offsetAttribute=h===-1?void 0:h,new EO(Py))};EO.createGeometry=function(e){let t=e._positions,n=e._width,i=e._ellipsoid;t=g$e(t,i);let o=Mo(t,d.equalsEpsilon);if(o.length<2||n<=0)return;let r=e._height,s=e._extrudedHeight,a=!D.equalsEpsilon(r,s,0,D.EPSILON2),c={ellipsoid:i,positions:o,width:n,cornerType:e._cornerType,granularity:e._granularity,saveAttributes:!1},u;if(a)c.height=r,c.extrudedHeight=s,c.offsetAttribute=e._offsetAttribute,u=_$e(c);else{let A=no.computePositions(c);if(u=Bme(A,c.cornerType),u.attributes.position.values=Ii.scaleToGeodeticHeight(u.attributes.position.values,r,i),l(e._offsetAttribute)){let g=u.attributes.position.values.length,m=e._offsetAttribute===hn.NONE?0:1,_=new Uint8Array(g/3).fill(m);u.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:_})}}let f=u.attributes,h=le.fromVertices(f.position.values,void 0,3);return new ht({attributes:f,indices:u.indices,primitiveType:Me.LINES,boundingSphere:h,offsetAttribute:e._offsetAttribute})};var IO=EO;var y$e=new ci(0);function Ll(e){yi.call(this,e),this._zIndex=0,this._terrainOffsetProperty=void 0}l(Object.create)&&(Ll.prototype=Object.create(yi.prototype),Ll.prototype.constructor=Ll);Object.defineProperties(Ll.prototype,{zIndex:{get:function(){return this._zIndex}},terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});Ll.prototype._isOnTerrain=function(e,t){return this._fillEnabled&&!l(t.height)&&!l(t.extrudedHeight)&&fl.isSupported(this._scene)};Ll.prototype._getIsClosed=function(e){let t=e.height,n=e.extrudedHeight;return t===0||l(n)&&n!==t};Ll.prototype._computeCenter=me.throwInstantiationError;Ll.prototype._onEntityPropertyChanged=function(e,t,n,i){if(yi.prototype._onEntityPropertyChanged.call(this,e,t,n,i),this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o))return;l(o.zIndex)&&(l(o.height)||l(o.extrudedHeight))&&yt(yt.geometryZIndex),this._zIndex=o.zIndex??y$e,l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0);let r=o.heightReference,s=o.extrudedHeightReference;if(l(r)||l(s)){let a=new _h(this._computeCenter.bind(this),!this._dynamic);this._terrainOffsetProperty=new SE(this._scene,a,r,s)}};Ll.prototype.destroy=function(){l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0),yi.prototype.destroy.call(this)};Ll.getGeometryHeight=function(e,t){if(!l(e)){t!==Ze.NONE&&yt(yt.geometryHeightReference);return}return Wf(t)?0:e};Ll.getGeometryExtrudedHeight=function(e,t){if(!l(e)){t!==Ze.NONE&&yt(yt.geometryExtrudedHeightReference);return}return Wf(t)?Ll.CLAMP_TO_GROUND:e};Ll.CLAMP_TO_GROUND="clamp";Ll.computeGeometryOffsetAttribute=function(e,t,n,i){(!l(e)||!l(t))&&(t=Ze.NONE),(!l(n)||!l(i))&&(i=Ze.NONE);let o=0;if(t!==Ze.NONE&&o++,i===Ze.RELATIVE_TO_GROUND&&o++,o===2)return hn.ALL;if(o===1)return hn.TOP};var ti=Ll;var vme=new G,Pme=d.ZERO,Rme=new d,Mme=new ae;function C$e(e){this.id=e,this.vertexFormat=void 0,this.positions=void 0,this.width=void 0,this.cornerType=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.offsetAttribute=void 0}function qh(e,t){ti.call(this,{entity:e,scene:t,geometryOptions:new C$e(e),geometryPropertyName:"corridor",observedPropertyNames:["availability","corridor"]}),this._onEntityPropertyChanged(e,"corridor",e.corridor,void 0)}l(Object.create)&&(qh.prototype=Object.create(ti.prototype),qh.prototype.constructor=qh);qh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof Xt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,vme)),l(o)||(o=G.WHITE),i.color=$t.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Pme,Rme))),new Pt({id:t,geometry:new G0(this._options),attributes:i})};qh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,vme),o={show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:$t.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0};return l(this._options.offsetAttribute)&&(o.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Pme,Rme))),new Pt({id:t,geometry:new IO(this._options),attributes:o})};qh.prototype._computeCenter=function(e,t){let n=j.getValueOrUndefined(this._entity.corridor.positions,e);if(!(!l(n)||n.length===0))return d.clone(n[Math.floor(n.length/2)],t)};qh.prototype._isHidden=function(e,t){return!l(t.positions)||!l(t.width)||yi.prototype._isHidden.call(this,e,t)};qh.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!j.isConstant(t.height)||!j.isConstant(t.extrudedHeight)||!j.isConstant(t.granularity)||!j.isConstant(t.width)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.cornerType)||!j.isConstant(t.zIndex)||this._onTerrain&&!j.isConstant(this._materialProperty)&&!(this._materialProperty instanceof Xt)};qh.prototype._setStaticOptions=function(e,t){let n=j.getValueOrUndefined(t.height,je.MINIMUM_VALUE),i=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),o=j.getValueOrUndefined(t.extrudedHeight,je.MINIMUM_VALUE),r=j.getValueOrDefault(t.extrudedHeightReference,je.MINIMUM_VALUE,Ze.NONE);l(o)&&!l(n)&&(n=0);let s=this._options;s.vertexFormat=this._materialProperty instanceof Xt?gn.VERTEX_FORMAT:Eo.MaterialSupport.TEXTURED.vertexFormat,s.positions=t.positions.getValue(je.MINIMUM_VALUE,s.positions),s.width=t.width.getValue(je.MINIMUM_VALUE),s.granularity=j.getValueOrUndefined(t.granularity,je.MINIMUM_VALUE),s.cornerType=j.getValueOrUndefined(t.cornerType,je.MINIMUM_VALUE),s.offsetAttribute=ti.computeGeometryOffsetAttribute(n,i,o,r),s.height=ti.getGeometryHeight(n,i),o=ti.getGeometryExtrudedHeight(o,r),o===ti.CLAMP_TO_GROUND&&(o=Ti.getMinimumMaximumHeights(G0.computeRectangle(s,Mme)).minimumTerrainHeight),s.extrudedHeight=o};qh.DynamicGeometryUpdater=jT;function jT(e,t,n){_i.call(this,e,t,n)}l(Object.create)&&(jT.prototype=Object.create(_i.prototype),jT.prototype.constructor=jT);jT.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.positions)||!l(i.width)||_i.prototype._isHidden.call(this,e,t,n)};jT.prototype._setOptions=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(t.height,n),r=j.getValueOrDefault(t.heightReference,n,Ze.NONE),s=j.getValueOrUndefined(t.extrudedHeight,n),a=j.getValueOrDefault(t.extrudedHeightReference,n,Ze.NONE);l(s)&&!l(o)&&(o=0),i.positions=j.getValueOrUndefined(t.positions,n),i.width=j.getValueOrUndefined(t.width,n),i.granularity=j.getValueOrUndefined(t.granularity,n),i.cornerType=j.getValueOrUndefined(t.cornerType,n),i.offsetAttribute=ti.computeGeometryOffsetAttribute(o,r,s,a),i.height=ti.getGeometryHeight(o,r),s=ti.getGeometryExtrudedHeight(s,a),s===ti.CLAMP_TO_GROUND&&(s=Ti.getMinimumMaximumHeights(G0.computeRectangle(i,Mme)).minimumTerrainHeight),i.extrudedHeight=s};var xO=qh;function LV(){me.throwInstantiationError()}Object.defineProperties(LV.prototype,{name:{get:me.throwInstantiationError},clock:{get:me.throwInstantiationError},entities:{get:me.throwInstantiationError},isLoading:{get:me.throwInstantiationError},changedEvent:{get:me.throwInstantiationError},errorEvent:{get:me.throwInstantiationError},loadingEvent:{get:me.throwInstantiationError},show:{get:me.throwInstantiationError},clustering:{get:me.throwInstantiationError}});LV.prototype.update=function(e){me.throwInstantiationError()};LV.setLoading=function(e,t){e._isLoading!==t&&(t?e._entityCollection.suspendEvents():e._entityCollection.resumeEvents(),e._isLoading=t,e._loading.raiseEvent(e,t))};var us=LV;function lA(e,t){this._ellipsoid=e,this._cameraPosition=new d,this._cameraPositionInScaledSpace=new d,this._distanceToLimbInScaledSpaceSquared=0,l(t)&&(this.cameraPosition=t)}Object.defineProperties(lA.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},cameraPosition:{get:function(){return this._cameraPosition},set:function(e){let n=this._ellipsoid.transformPositionToScaledSpace(e,this._cameraPositionInScaledSpace),i=d.magnitudeSquared(n)-1;d.clone(e,this._cameraPosition),this._cameraPositionInScaledSpace=n,this._distanceToLimbInScaledSpaceSquared=i}}});var Nme=new d;lA.prototype.isPointVisible=function(e){let n=this._ellipsoid.transformPositionToScaledSpace(e,Nme);return Sq(n,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};lA.prototype.isScaledSpacePointVisible=function(e){return Sq(e,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};var E$e=new d;lA.prototype.isScaledSpacePointVisiblePossiblyUnderEllipsoid=function(e,t){let n=this._ellipsoid,i,o;return l(t)&&t<0&&n.minimumRadius>-t?(o=E$e,o.x=this._cameraPosition.x/(n.radii.x+t),o.y=this._cameraPosition.y/(n.radii.y+t),o.z=this._cameraPosition.z/(n.radii.z+t),i=o.x*o.x+o.y*o.y+o.z*o.z-1):(o=this._cameraPositionInScaledSpace,i=this._distanceToLimbInScaledSpaceSquared),Sq(e,o,i)};lA.prototype.computeHorizonCullingPoint=function(e,t,n){return Fme(this._ellipsoid,e,t,n)};var Lme=te.clone(te.UNIT_SPHERE);lA.prototype.computeHorizonCullingPointPossiblyUnderEllipsoid=function(e,t,n,i){let o=Ome(this._ellipsoid,n,Lme);return Fme(o,e,t,i)};lA.prototype.computeHorizonCullingPointFromVertices=function(e,t,n,i,o){return Qme(this._ellipsoid,e,t,n,i,o)};lA.prototype.computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid=function(e,t,n,i,o,r){let s=Ome(this._ellipsoid,o,Lme);return Qme(s,e,t,n,i,r)};var I$e=[];lA.prototype.computeHorizonCullingPointFromRectangle=function(e,t,n){let i=ae.subsample(e,t,0,I$e),o=le.fromPoints(i);if(!(d.magnitude(o.center)<.1*t.minimumRadius))return this.computeHorizonCullingPoint(o.center,i,n)};var x$e=new d;function Ome(e,t,n){if(l(t)&&t<0&&e.minimumRadius>-t){let i=d.fromElements(e.radii.x+t,e.radii.y+t,e.radii.z+t,x$e);e=te.fromCartesian3(i,n)}return e}function Fme(e,t,n,i){l(i)||(i=new d);let o=Gme(e,t),r=0;for(let s=0,a=n.length;s<a;++s){let c=n[s],u=kme(e,c,o);if(u<0)return;r=Math.max(r,u)}return Ume(o,r,i)}var OV=new d;function Qme(e,t,n,i,o,r){l(r)||(r=new d),i=i??3,o=o??d.ZERO;let s=Gme(e,t),a=0;for(let c=0,u=n.length;c<u;c+=i){OV.x=n[c]+o.x,OV.y=n[c+1]+o.y,OV.z=n[c+2]+o.z;let f=kme(e,OV,s);if(f<0)return;a=Math.max(a,f)}return Ume(s,a,r)}function Sq(e,t,n){let i=t,o=n,r=d.subtract(e,i,Nme),s=-d.dot(r,i);return!(o<0?s>0:s>o&&s*s/d.magnitudeSquared(r)>o)}var b$e=new d,T$e=new d;function kme(e,t,n){let i=e.transformPositionToScaledSpace(t,b$e),o=d.magnitudeSquared(i),r=Math.sqrt(o),s=d.divideByScalar(i,r,T$e);o=Math.max(1,o),r=Math.max(1,r);let a=d.dot(s,n),c=d.magnitude(d.cross(s,n,s)),u=1/r,f=Math.sqrt(o-1)*u;return 1/(a*u-c*f)}function Ume(e,t,n){if(!(t<=0||t===1/0||t!==t))return d.multiplyByScalar(e,t,n)}var Tq=new d;function Gme(e,t){return d.equals(t,d.ZERO)?t:(e.transformPositionToScaledSpace(t,Tq),d.normalize(Tq,Tq))}var Eg=lA;function Wr(e,t){e=e??V.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.scaleByDistance,o=e.distanceDisplayCondition;l(n)&&(n=jt.clone(n)),l(i)&&(i=jt.clone(i)),l(o)&&(o=Ut.clone(o)),this._show=e.show??!0,this._position=d.clone(e.position??d.ZERO),this._actualPosition=d.clone(this._position),this._color=G.clone(e.color??G.WHITE),this._outlineColor=G.clone(e.outlineColor??G.TRANSPARENT),this._outlineWidth=e.outlineWidth??0,this._pixelSize=e.pixelSize??10,this._scaleByDistance=i,this._translucencyByDistance=n,this._distanceDisplayCondition=o,this._disableDepthTestDistance=e.disableDepthTestDistance??0,this._id=e.id,this._collection=e.collection??t,this._clusterShow=!0,this._pickId=void 0,this._pointPrimitiveCollection=t,this._dirty=!1,this._index=-1,this._splitDirection=e.splitDirection??br.NONE}var zme=Wr.SHOW_INDEX=0,Wme=Wr.POSITION_INDEX=1,S$e=Wr.COLOR_INDEX=2,w$e=Wr.OUTLINE_COLOR_INDEX=3,B$e=Wr.OUTLINE_WIDTH_INDEX=4,D$e=Wr.PIXEL_SIZE_INDEX=5,v$e=Wr.SCALE_BY_DISTANCE_INDEX=6,P$e=Wr.TRANSLUCENCY_BY_DISTANCE_INDEX=7,R$e=Wr.DISTANCE_DISPLAY_CONDITION_INDEX=8,M$e=Wr.DISABLE_DEPTH_DISTANCE_INDEX=9,N$e=Wr.SPLIT_DIRECTION_INDEX=10;Wr.NUMBER_OF_PROPERTIES=11;function cf(e,t){let n=e._pointPrimitiveCollection;l(n)&&(n._updatePointPrimitive(e,t),e._dirty=!0)}Object.defineProperties(Wr.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,cf(this,zme))}},position:{get:function(){return this._position},set:function(e){let t=this._position;d.equals(t,e)||(d.clone(e,t),d.clone(e,this._actualPosition),cf(this,Wme))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;jt.equals(t,e)||(this._scaleByDistance=jt.clone(e,t),cf(this,v$e))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;jt.equals(t,e)||(this._translucencyByDistance=jt.clone(e,t),cf(this,P$e))}},pixelSize:{get:function(){return this._pixelSize},set:function(e){this._pixelSize!==e&&(this._pixelSize=e,cf(this,D$e))}},color:{get:function(){return this._color},set:function(e){let t=this._color;G.equals(t,e)||(G.clone(e,t),cf(this,S$e))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;G.equals(t,e)||(G.clone(e,t),cf(this,w$e))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,cf(this,B$e))}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Ut.equals(this._distanceDisplayCondition,e)||(this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition),cf(this,R$e))}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance!==e&&(this._disableDepthTestDistance=e,cf(this,M$e))}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickId:{get:function(){return this._pickId}},clusterShow:{get:function(){return this._clusterShow},set:function(e){this._clusterShow!==e&&(this._clusterShow=e,cf(this,zme))}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,cf(this,N$e))}}});Wr.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this,collection:this._collection,id:this._id})),this._pickId};Wr.prototype._getActualPosition=function(){return this._actualPosition};Wr.prototype._setActualPosition=function(e){d.clone(e,this._actualPosition),cf(this,Wme)};var Vme=new se;Wr._computeActualPosition=function(e,t,n){return t.mode===ie.SCENE3D?e:(N.multiplyByPoint(n,e,Vme),eo.computeActualEllipsoidPosition(t,Vme))};var Hme=new se;Wr._computeScreenSpacePosition=function(e,t,n,i){let o=N.multiplyByVector(e,se.fromElements(t.x,t.y,t.z,1,Hme),Hme);return eo.worldToWindowCoordinates(n,o,i)};Wr.prototype.computeScreenSpacePosition=function(e,t){let n=this._pointPrimitiveCollection;l(t)||(t=new U);let i=n.modelMatrix,o=Wr._computeScreenSpacePosition(i,this._actualPosition,e,t);if(l(o))return o.y=e.canvas.clientHeight-o.y,o};Wr.getScreenSpaceBoundingBox=function(e,t,n){let i=e.pixelSize,o=i*.5,r=t.x-o,s=t.y-o,a=i,c=i;return l(n)||(n=new Ye),n.x=r,n.y=s,n.width=a,n.height=c,n};Wr.prototype.equals=function(e){return this===e||l(e)&&this._id===e._id&&d.equals(this._position,e._position)&&G.equals(this._color,e._color)&&this._pixelSize===e._pixelSize&&this._outlineWidth===e._outlineWidth&&this._show===e._show&&G.equals(this._outlineColor,e._outlineColor)&&jt.equals(this._scaleByDistance,e._scaleByDistance)&&jt.equals(this._translucencyByDistance,e._translucencyByDistance)&&Ut.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._splitDirection===e._splitDirection};Wr.prototype._destroy=function(){this._pickId=this._pickId&&this._pickId.destroy(),this._pointPrimitiveCollection=void 0};var ea=Wr;var Ry=`in vec4 v_color; +in vec4 v_outlineColor; +in float v_innerPercent; +in float v_pixelDistance; +in vec4 v_pickColor; +in float v_splitDirection; + +void main() +{ + if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; + + // The distance in UV space from this fragment to the center of the point, at most 0.5. + float distanceToCenter = length(gl_PointCoord - vec2(0.5)); + // The max distance stops one pixel shy of the edge to leave space for anti-aliasing. + float maxDistance = max(0.0, 0.5 - v_pixelDistance); + float wholeAlpha = 1.0 - smoothstep(maxDistance, 0.5, distanceToCenter); + float innerAlpha = 1.0 - smoothstep(maxDistance * v_innerPercent, 0.5 * v_innerPercent, distanceToCenter); + + vec4 color = mix(v_outlineColor, v_color, innerAlpha); + color.a *= wholeAlpha; + +// Fully transparent parts of the billboard are not pickable. +#if !defined(OPAQUE) && !defined(TRANSLUCENT) + if (color.a < 0.005) // matches 0/255 and 1/255 + { + discard; + } +#else +// The billboard is rendered twice. The opaque pass discards translucent fragments +// and the translucent pass discards opaque fragments. +#ifdef OPAQUE + if (color.a < 0.995) // matches < 254/255 + { + discard; + } +#else + if (color.a >= 0.995) // matches 254/255 and 255/255 + { + discard; + } +#endif +#endif + + out_FragColor = czm_gammaCorrect(color); + czm_writeLogDepth(); +} +`;var bO=`uniform float u_maxTotalPointSize; + +in vec4 positionHighAndSize; +in vec4 positionLowAndOutline; +in vec4 compressedAttribute0; // color, outlineColor, pick color +in vec4 compressedAttribute1; // show, translucency by distance, some free space +in vec4 scaleByDistance; // near, nearScale, far, farScale +in vec4 distanceDisplayConditionAndDisableDepthAndSplitDirection; // near, far, disableDepthTestDistance, splitDirection + +out vec4 v_color; +out vec4 v_outlineColor; +out float v_innerPercent; +out float v_pixelDistance; +out vec4 v_pickColor; +out float v_splitDirection; + +const float SHIFT_LEFT8 = 256.0; +const float SHIFT_RIGHT8 = 1.0 / 256.0; + +void main() +{ + // Modifying this shader may also require modifications to PointPrimitive._computeScreenSpacePosition + + // unpack attributes + vec3 positionHigh = positionHighAndSize.xyz; + vec3 positionLow = positionLowAndOutline.xyz; + float outlineWidthBothSides = 2.0 * positionLowAndOutline.w; + float totalSize = positionHighAndSize.w + outlineWidthBothSides; + float outlinePercent = outlineWidthBothSides / totalSize; + // Scale in response to browser-zoom. + totalSize *= czm_pixelRatio; + + float temp = compressedAttribute1.x * SHIFT_RIGHT8; + float show = floor(temp); + +#ifdef EYE_DISTANCE_TRANSLUCENCY + vec4 translucencyByDistance; + translucencyByDistance.x = compressedAttribute1.z; + translucencyByDistance.z = compressedAttribute1.w; + + translucencyByDistance.y = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; + + temp = compressedAttribute1.y * SHIFT_RIGHT8; + translucencyByDistance.w = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; +#endif + + /////////////////////////////////////////////////////////////////////////// + + vec4 color; + vec4 outlineColor; + vec4 pickColor; + + // compressedAttribute0.z => pickColor.rgb + + temp = compressedAttribute0.z * SHIFT_RIGHT8; + pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor.r = floor(temp); + + // compressedAttribute0.x => color.rgb + + temp = compressedAttribute0.x * SHIFT_RIGHT8; + color.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + color.g = (temp - floor(temp)) * SHIFT_LEFT8; + color.r = floor(temp); + + // compressedAttribute0.y => outlineColor.rgb + + temp = compressedAttribute0.y * SHIFT_RIGHT8; + outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor.r = floor(temp); + + // compressedAttribute0.w => color.a, outlineColor.a, pickColor.a + + temp = compressedAttribute0.w * SHIFT_RIGHT8; + pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor = pickColor / 255.0; + + temp = floor(temp) * SHIFT_RIGHT8; + outlineColor.a = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor /= 255.0; + color.a = floor(temp); + color /= 255.0; + + /////////////////////////////////////////////////////////////////////////// + + vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + vec4 positionEC = czm_modelViewRelativeToEye * p; + + /////////////////////////////////////////////////////////////////////////// + +#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(DISTANCE_DISPLAY_CONDITION) || defined(DISABLE_DEPTH_DISTANCE) + float lengthSq; + if (czm_sceneMode == czm_sceneMode2D) + { + // 2D camera distance is a special case + // treat all billboards as flattened to the z=0.0 plane + lengthSq = czm_eyeHeight2D.y; + } + else + { + lengthSq = dot(positionEC.xyz, positionEC.xyz); + } +#endif + +#ifdef EYE_DISTANCE_SCALING + totalSize *= czm_nearFarScalar(scaleByDistance, lengthSq); +#endif + if (totalSize > 0.0) { + // Add padding for anti-aliasing on both sides. + totalSize += 3.0; + } + + // Clamp to max point size. + totalSize = min(totalSize, u_maxTotalPointSize); + // If size is too small, push vertex behind near plane for clipping. + // Note that context.minimumAliasedPointSize "will be at most 1.0". + if (totalSize < 1.0) + { + positionEC.xyz = vec3(0.0); + totalSize = 1.0; + } + + float translucency = 1.0; +#ifdef EYE_DISTANCE_TRANSLUCENCY + translucency = czm_nearFarScalar(translucencyByDistance, lengthSq); + // push vertex behind near plane for clipping + if (translucency < 0.004) + { + positionEC.xyz = vec3(0.0); + } +#endif + +#ifdef DISTANCE_DISPLAY_CONDITION + float nearSq = distanceDisplayConditionAndDisableDepthAndSplitDirection.x; + float farSq = distanceDisplayConditionAndDisableDepthAndSplitDirection.y; + if (lengthSq < nearSq || lengthSq > farSq) { + // push vertex behind camera to force it to be clipped + positionEC.xyz = vec3(0.0, 0.0, 1.0); + } +#endif + + gl_Position = czm_projection * positionEC; + czm_vertexLogDepth(); + +#ifdef DISABLE_DEPTH_DISTANCE + float disableDepthTestDistance = distanceDisplayConditionAndDisableDepthAndSplitDirection.z; + if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0) + { + disableDepthTestDistance = czm_minimumDisableDepthTestDistance; + } + + if (disableDepthTestDistance != 0.0) + { + // Don't try to "multiply both sides" by w. Greater/less-than comparisons won't work for negative values of w. + float zclip = gl_Position.z / gl_Position.w; + bool clipped = (zclip < -1.0 || zclip > 1.0); + if (!clipped && (disableDepthTestDistance < 0.0 || (lengthSq > 0.0 && lengthSq < disableDepthTestDistance))) + { + // Position z on the near plane. + gl_Position.z = -gl_Position.w; +#ifdef LOG_DEPTH + czm_vertexLogDepth(vec4(czm_currentFrustum.x)); +#endif + } + } +#endif + + v_color = color; + v_color.a *= translucency * show; + v_outlineColor = outlineColor; + v_outlineColor.a *= translucency * show; + + v_innerPercent = 1.0 - outlinePercent; + v_pixelDistance = 2.0 / totalSize; + gl_PointSize = totalSize * show; + gl_Position *= show; + + v_pickColor = pickColor; + v_splitDirection = distanceDisplayConditionAndDisableDepthAndSplitDirection.w; +} +`;var L$e=ea.SHOW_INDEX,Dq=ea.POSITION_INDEX,jme=ea.COLOR_INDEX,O$e=ea.OUTLINE_COLOR_INDEX,F$e=ea.OUTLINE_WIDTH_INDEX,Q$e=ea.PIXEL_SIZE_INDEX,Yme=ea.SCALE_BY_DISTANCE_INDEX,qme=ea.TRANSLUCENCY_BY_DISTANCE_INDEX,Kme=ea.DISTANCE_DISPLAY_CONDITION_INDEX,k$e=ea.DISABLE_DEPTH_DISTANCE_INDEX,U$e=ea.SPLIT_DIRECTION_INDEX,vq=ea.NUMBER_OF_PROPERTIES,jc={positionHighAndSize:0,positionLowAndOutline:1,compressedAttribute0:2,compressedAttribute1:3,scaleByDistance:4,distanceDisplayConditionAndDisableDepthAndSplitDirection:5};function Sd(e){e=e??V.EMPTY_OBJECT,this._sp=void 0,this._spTranslucent=void 0,this._rsOpaque=void 0,this._rsTranslucent=void 0,this._vaf=void 0,this._pointPrimitives=[],this._pointPrimitivesToUpdate=[],this._pointPrimitivesToUpdateIndex=0,this._pointPrimitivesRemoved=!1,this._createVertexArray=!1,this._shaderScaleByDistance=!1,this._compiledShaderScaleByDistance=!1,this._shaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistance=!1,this._shaderDistanceDisplayCondition=!1,this._compiledShaderDistanceDisplayCondition=!1,this._shaderDisableDepthDistance=!1,this._compiledShaderDisableDepthDistance=!1,this._propertiesChanged=new Uint32Array(vq),this._maxPixelSize=1,this._baseVolume=new le,this._baseVolumeWC=new le,this._baseVolume2D=new le,this._boundingVolume=new le,this._boundingVolumeDirty=!1,this._colorCommands=[],this.show=e.show??!0,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this._modelMatrix=N.clone(N.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.blendOption=e.blendOption??Uo.OPAQUE_AND_TRANSLUCENT,this._blendOption=void 0,this._mode=ie.SCENE3D,this._maxTotalPointSize=1,this._buffersUsage=[Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW];let t=this;this._uniforms={u_maxTotalPointSize:function(){return t._maxTotalPointSize}}}Object.defineProperties(Sd.prototype,{length:{get:function(){return Pq(this),this._pointPrimitives.length}}});function Xme(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}Sd.prototype.add=function(e){let t=new ea(e,this);return t._index=this._pointPrimitives.length,this._pointPrimitives.push(t),this._createVertexArray=!0,t};Sd.prototype.remove=function(e){return this.contains(e)?(this._pointPrimitives[e._index]=null,this._pointPrimitivesRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};Sd.prototype.removeAll=function(){Xme(this._pointPrimitives),this._pointPrimitives=[],this._pointPrimitivesToUpdate=[],this._pointPrimitivesToUpdateIndex=0,this._pointPrimitivesRemoved=!1,this._createVertexArray=!0};function Pq(e){if(e._pointPrimitivesRemoved){e._pointPrimitivesRemoved=!1;let t=[],n=e._pointPrimitives,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];s&&(s._index=r++,t.push(s))}e._pointPrimitives=t}}Sd.prototype._updatePointPrimitive=function(e,t){e._dirty||(this._pointPrimitivesToUpdate[this._pointPrimitivesToUpdateIndex++]=e),++this._propertiesChanged[t]};Sd.prototype.contains=function(e){return l(e)&&e._pointPrimitiveCollection===this};Sd.prototype.get=function(e){return Pq(this),this._pointPrimitives[e]};Sd.prototype.computeNewBuffersUsage=function(){let e=this._buffersUsage,t=!1,n=this._propertiesChanged;for(let i=0;i<vq;++i){let o=n[i]===0?Qe.STATIC_DRAW:Qe.STREAM_DRAW;t=t||e[i]!==o,e[i]=o}return t};function G$e(e,t,n){return new Zp(e,[{index:jc.positionHighAndSize,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Dq]},{index:jc.positionLowAndShow,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Dq]},{index:jc.compressedAttribute0,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[jme]},{index:jc.compressedAttribute1,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[qme]},{index:jc.scaleByDistance,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Yme]},{index:jc.distanceDisplayConditionAndDisableDepthAndSplitDirection,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Kme]}],t)}var wq=new ei;function Jme(e,t,n,i){let o=i._index,r=i._getActualPosition();e._mode===ie.SCENE3D&&(le.expand(e._baseVolume,r,e._baseVolume),e._boundingVolumeDirty=!0),ei.fromCartesian(r,wq);let s=i.pixelSize,a=i.outlineWidth;e._maxPixelSize=Math.max(e._maxPixelSize,s+a);let c=n[jc.positionHighAndSize],u=wq.high;c(o,u.x,u.y,u.z,s);let f=n[jc.positionLowAndOutline],h=wq.low;f(o,h.x,h.y,h.z,a)}var FV=65536,TO=256;function Zme(e,t,n,i){let o=i._index,r=i.color,s=i.getPickId(t).color,a=i.outlineColor,c=G.floatToByte(r.red),u=G.floatToByte(r.green),f=G.floatToByte(r.blue),h=c*FV+u*TO+f;c=G.floatToByte(a.red),u=G.floatToByte(a.green),f=G.floatToByte(a.blue);let A=c*FV+u*TO+f;c=G.floatToByte(s.red),u=G.floatToByte(s.green),f=G.floatToByte(s.blue);let g=c*FV+u*TO+f,m=G.floatToByte(r.alpha)*FV+G.floatToByte(a.alpha)*TO+G.floatToByte(s.alpha),_=n[jc.compressedAttribute0];_(o,h,A,g,m)}function $me(e,t,n,i){let o=i._index,r=0,s=1,a=1,c=1,u=i.translucencyByDistance;l(u)&&(r=u.near,s=u.nearValue,a=u.far,c=u.farValue,(s!==1||c!==1)&&(e._shaderTranslucencyByDistance=!0));let f=i.show&&i.clusterShow;i.color.alpha===0&&i.outlineColor.alpha===0&&(f=!1),s=D.clamp(s,0,1),s=s===1?255:s*255|0;let h=(f?1:0)*TO+s;c=D.clamp(c,0,1),c=c===1?255:c*255|0;let A=c,g=n[jc.compressedAttribute1];g(o,h,A,r,a)}function eAe(e,t,n,i){let o=i._index,r=n[jc.scaleByDistance],s=0,a=1,c=1,u=1,f=i.scaleByDistance;l(f)&&(s=f.near,a=f.nearValue,c=f.far,u=f.farValue,(a!==1||u!==1)&&(e._shaderScaleByDistance=!0)),r(o,s,a,c,u)}function tAe(e,t,n,i){let o=i._index,r=n[jc.distanceDisplayConditionAndDisableDepthAndSplitDirection],s=0,a=Number.MAX_VALUE,c=i.distanceDisplayCondition;l(c)&&(s=c.near,a=c.far,s*=s,a*=a,e._shaderDistanceDisplayCondition=!0);let u=i.disableDepthTestDistance;u*=u,u>0&&(e._shaderDisableDepthDistance=!0,u===Number.POSITIVE_INFINITY&&(u=-1));let f=0,h=i.splitDirection;l(h)&&(f=h),r(o,s,a,u,f)}function z$e(e,t,n,i){Jme(e,t,n,i),Zme(e,t,n,i),$me(e,t,n,i),eAe(e,t,n,i),tAe(e,t,n,i)}function Bq(e,t,n,i,o,r){let s;i.mode===ie.SCENE3D?(s=e._baseVolume,e._boundingVolumeDirty=!0):s=e._baseVolume2D;let a=[];for(let c=0;c<n;++c){let u=t[c],f=u.position,h=ea._computeActualPosition(f,i,o);l(h)&&(u._setActualPosition(h),r?a.push(h):le.expand(s,h,s))}r&&le.fromPoints(a,s)}function V$e(e,t){let n=t.mode,i=e._pointPrimitives,o=e._pointPrimitivesToUpdate,r=e._modelMatrix;e._createVertexArray||e._mode!==n||n!==ie.SCENE3D&&!N.equals(r,e.modelMatrix)?(e._mode=n,N.clone(e.modelMatrix,r),e._createVertexArray=!0,(n===ie.SCENE3D||n===ie.SCENE2D||n===ie.COLUMBUS_VIEW)&&Bq(e,i,i.length,t,r,!0)):n===ie.MORPHING?Bq(e,i,i.length,t,r,!0):(n===ie.SCENE2D||n===ie.COLUMBUS_VIEW)&&Bq(e,o,e._pointPrimitivesToUpdateIndex,t,r,!1)}function H$e(e,t,n){let o=t.camera.getPixelSize(n,t.context.drawingBufferWidth,t.context.drawingBufferHeight)*e._maxPixelSize;n.radius+=o}var W$e=[];Sd.prototype.update=function(e){if(Pq(this),!this.show)return;this._maxTotalPointSize=Yt.maximumAliasedPointSize,V$e(this,e);let n=this._pointPrimitives.length,i=this._pointPrimitivesToUpdate,o=this._pointPrimitivesToUpdateIndex,r=this._propertiesChanged,s=this._createVertexArray,a,c=e.context,u=e.passes,f=u.pick;if(s||!f&&this.computeNewBuffersUsage()){this._createVertexArray=!1;for(let S=0;S<vq;++S)r[S]=0;if(this._vaf=this._vaf&&this._vaf.destroy(),n>0){this._vaf=G$e(c,n,this._buffersUsage),a=this._vaf.writers;for(let S=0;S<n;++S){let B=this._pointPrimitives[S];B._dirty=!1,z$e(this,c,a,B)}this._vaf.commit()}this._pointPrimitivesToUpdateIndex=0}else if(o>0){let S=W$e;S.length=0,(r[Dq]||r[F$e]||r[Q$e])&&S.push(Jme),(r[jme]||r[O$e])&&S.push(Zme),(r[L$e]||r[qme])&&S.push($me),r[Yme]&&S.push(eAe),(r[Kme]||r[k$e]||r[U$e])&&S.push(tAe);let B=S.length;if(a=this._vaf.writers,o/n>.1){for(let v=0;v<o;++v){let P=i[v];P._dirty=!1;for(let M=0;M<B;++M)S[M](this,c,a,P)}this._vaf.commit()}else{for(let v=0;v<o;++v){let P=i[v];P._dirty=!1;for(let M=0;M<B;++M)S[M](this,c,a,P);this._vaf.subCommit(P._index,1)}this._vaf.endSubCommits()}this._pointPrimitivesToUpdateIndex=0}if(o>n*1.5&&(i.length=n),!l(this._vaf)||!l(this._vaf.va))return;this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,le.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));let h,A=N.IDENTITY;e.mode===ie.SCENE3D?(A=this.modelMatrix,h=le.clone(this._baseVolumeWC,this._boundingVolume)):h=le.clone(this._baseVolume2D,this._boundingVolume),H$e(this,e,h);let g=this._blendOption!==this.blendOption;this._blendOption=this.blendOption,g&&(this._blendOption===Uo.OPAQUE||this._blendOption===Uo.OPAQUE_AND_TRANSLUCENT?this._rsOpaque=Ue.fromCache({depthTest:{enabled:!0,func:ee.LEQUAL},depthMask:!0}):this._rsOpaque=void 0,this._blendOption===Uo.TRANSLUCENT||this._blendOption===Uo.OPAQUE_AND_TRANSLUCENT?this._rsTranslucent=Ue.fromCache({depthTest:{enabled:!0,func:ee.LEQUAL},depthMask:!1,blending:pn.ALPHA_BLEND}):this._rsTranslucent=void 0),this._shaderDisableDepthDistance=this._shaderDisableDepthDistance||e.minimumDisableDepthTestDistance!==0;let m,_;(g||this._shaderScaleByDistance&&!this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance&&!this._compiledShaderTranslucencyByDistance||this._shaderDistanceDisplayCondition&&!this._compiledShaderDistanceDisplayCondition||this._shaderDisableDepthDistance!==this._compiledShaderDisableDepthDistance)&&(m=new He({sources:[bO]}),this._shaderScaleByDistance&&m.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&m.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderDistanceDisplayCondition&&m.defines.push("DISTANCE_DISPLAY_CONDITION"),this._shaderDisableDepthDistance&&m.defines.push("DISABLE_DEPTH_DISTANCE"),this._blendOption===Uo.OPAQUE_AND_TRANSLUCENT&&(_=new He({defines:["OPAQUE"],sources:[Ry]}),this._sp=an.replaceCache({context:c,shaderProgram:this._sp,vertexShaderSource:m,fragmentShaderSource:_,attributeLocations:jc}),_=new He({defines:["TRANSLUCENT"],sources:[Ry]}),this._spTranslucent=an.replaceCache({context:c,shaderProgram:this._spTranslucent,vertexShaderSource:m,fragmentShaderSource:_,attributeLocations:jc})),this._blendOption===Uo.OPAQUE&&(_=new He({sources:[Ry]}),this._sp=an.replaceCache({context:c,shaderProgram:this._sp,vertexShaderSource:m,fragmentShaderSource:_,attributeLocations:jc})),this._blendOption===Uo.TRANSLUCENT&&(_=new He({sources:[Ry]}),this._spTranslucent=an.replaceCache({context:c,shaderProgram:this._spTranslucent,vertexShaderSource:m,fragmentShaderSource:_,attributeLocations:jc})),this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderDistanceDisplayCondition=this._shaderDistanceDisplayCondition,this._compiledShaderDisableDepthDistance=this._shaderDisableDepthDistance);let y,C,E,I,b=e.commandList;if(u.render||f){let S=this._colorCommands,B=this._blendOption===Uo.OPAQUE,v=this._blendOption===Uo.OPAQUE_AND_TRANSLUCENT;y=this._vaf.va,C=y.length,S.length=C;let P=v?C*2:C;for(I=0;I<P;++I){let M=B||v&&I%2===0;E=S[I],l(E)||(E=S[I]=new nt),E.primitiveType=Me.POINTS,E.pass=M||!v?Be.OPAQUE:Be.TRANSLUCENT,E.owner=this;let L=v?Math.floor(I/2):I;E.boundingVolume=h,E.modelMatrix=A,E.shaderProgram=M?this._sp:this._spTranslucent,E.uniformMap=this._uniforms,E.vertexArray=y[L].va,E.renderState=M?this._rsOpaque:this._rsTranslucent,E.debugShowBoundingVolume=this.debugShowBoundingVolume,E.pickId="v_pickColor",b.push(E)}}};Sd.prototype.isDestroyed=function(){return!1};Sd.prototype.destroy=function(){return this._sp=this._sp&&this._sp.destroy(),this._spTranslucent=this._spTranslucent&&this._spTranslucent.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),Xme(this._pointPrimitives),ue(this)};var YT=Sd;var nAe=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],Rq=1,SO=8,BO=class e{static from(t){if(!(t instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");let[n,i]=new Uint8Array(t,0,2);if(n!==219)throw new Error("Data does not appear to be in a KDBush format.");let o=i>>4;if(o!==Rq)throw new Error(`Got v${o} data when expected v${Rq}.`);let r=nAe[i&15];if(!r)throw new Error("Unrecognized array type.");let[s]=new Uint16Array(t,2,1),[a]=new Uint32Array(t,4,1);return new e(a,s,r,t)}constructor(t,n=64,i=Float64Array,o){if(isNaN(t)||t<0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+n,2),65535),this.ArrayType=i,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;let r=nAe.indexOf(this.ArrayType),s=t*2*this.ArrayType.BYTES_PER_ELEMENT,a=t*this.IndexArrayType.BYTES_PER_ELEMENT,c=(8-a%8)%8;if(r<0)throw new Error(`Unexpected typed array class: ${i}.`);o&&o instanceof ArrayBuffer?(this.data=o,this.ids=new this.IndexArrayType(this.data,SO,t),this.coords=new this.ArrayType(this.data,SO+a+c,t*2),this._pos=t*2,this._finished=!0):(this.data=new ArrayBuffer(SO+s+a+c),this.ids=new this.IndexArrayType(this.data,SO,t),this.coords=new this.ArrayType(this.data,SO+a+c,t*2),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,(Rq<<4)+r]),new Uint16Array(this.data,2,1)[0]=n,new Uint32Array(this.data,4,1)[0]=t)}add(t,n){let i=this._pos>>1;return this.ids[i]=i,this.coords[this._pos++]=t,this.coords[this._pos++]=n,i}finish(){let t=this._pos>>1;if(t!==this.numItems)throw new Error(`Added ${t} items when expected ${this.numItems}.`);return Nq(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(t,n,i,o){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:r,coords:s,nodeSize:a}=this,c=[0,r.length-1,0],u=[];for(;c.length;){let f=c.pop()||0,h=c.pop()||0,A=c.pop()||0;if(h-A<=a){for(let y=A;y<=h;y++){let C=s[2*y],E=s[2*y+1];C>=t&&C<=i&&E>=n&&E<=o&&u.push(r[y])}continue}let g=A+h>>1,m=s[2*g],_=s[2*g+1];m>=t&&m<=i&&_>=n&&_<=o&&u.push(r[g]),(f===0?t<=m:n<=_)&&(c.push(A),c.push(g-1),c.push(1-f)),(f===0?i>=m:o>=_)&&(c.push(g+1),c.push(h),c.push(1-f))}return u}within(t,n,i){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:o,coords:r,nodeSize:s}=this,a=[0,o.length-1,0],c=[],u=i*i;for(;a.length;){let f=a.pop()||0,h=a.pop()||0,A=a.pop()||0;if(h-A<=s){for(let y=A;y<=h;y++)iAe(r[2*y],r[2*y+1],t,n)<=u&&c.push(o[y]);continue}let g=A+h>>1,m=r[2*g],_=r[2*g+1];iAe(m,_,t,n)<=u&&c.push(o[g]),(f===0?t-i<=m:n-i<=_)&&(a.push(A),a.push(g-1),a.push(1-f)),(f===0?t+i>=m:n+i>=_)&&(a.push(g+1),a.push(h),a.push(1-f))}return c}};function Nq(e,t,n,i,o,r){if(o-i<=n)return;let s=i+o>>1;oAe(e,t,s,i,o,r),Nq(e,t,n,i,s-1,1-r),Nq(e,t,n,s+1,o,1-r)}function oAe(e,t,n,i,o,r){for(;o>i;){if(o-i>600){let u=o-i+1,f=n-i+1,h=Math.log(u),A=.5*Math.exp(2*h/3),g=.5*Math.sqrt(h*A*(u-A)/u)*(f-u/2<0?-1:1),m=Math.max(i,Math.floor(n-f*A/u+g)),_=Math.min(o,Math.floor(n+(u-f)*A/u+g));oAe(e,t,n,m,_,r)}let s=t[2*n+r],a=i,c=o;for(wO(e,t,i,n),t[2*o+r]>s&&wO(e,t,i,o);a<c;){for(wO(e,t,a,c),a++,c--;t[2*a+r]<s;)a++;for(;t[2*c+r]>s;)c--}t[2*i+r]===s?wO(e,t,i,c):(c++,wO(e,t,c,o)),c<=n&&(i=c+1),n<=c&&(o=c-1)}}function wO(e,t,n,i){Mq(e,n,i),Mq(t,2*n,2*i),Mq(t,2*n+1,2*i+1)}function Mq(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}function iAe(e,t,n,i){let o=e-n,r=t-i;return o*o+r*r}function Kh(e){e=e??V.EMPTY_OBJECT,this._enabled=e.enabled??!1,this._pixelRange=e.pixelRange??80,this._minimumClusterSize=e.minimumClusterSize??2,this._clusterBillboards=e.clusterBillboards??!0,this._clusterLabels=e.clusterLabels??!0,this._clusterPoints=e.clusterPoints??!0,this._labelCollection=void 0,this._billboardCollection=void 0,this._pointCollection=void 0,this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity={},this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1,this._clusterDirty=!1,this._cluster=void 0,this._removeEventListener=void 0,this._clusterEvent=new _e,this.show=e.show??!0}function rAe(e,t){e.x-=t,e.y-=t,e.width+=t*2,e.height+=t*2}var j$e=new Ye;function sAe(e,t,n,i,o){if(l(e._labelCollection)&&i._clusterLabels?o=yy.getScreenSpaceBoundingBox(e,t,o):l(e._billboardCollection)&&i._clusterBillboards?o=xo.getScreenSpaceBoundingBox(e,t,o):l(e._pointPrimitiveCollection)&&i._clusterPoints&&(o=ea.getScreenSpaceBoundingBox(e,t,o)),rAe(o,n),i._clusterLabels&&!l(e._labelCollection)&&l(e.id)&&cAe(i,e.id.id)&&l(e.id._label)){let r=i._collectionIndicesByEntity[e.id.id].labelIndex,s=i._labelCollection.get(r),a=yy.getScreenSpaceBoundingBox(s,t,j$e);rAe(a,n),o=Ye.union(o,a,o)}return o}function Y$e(e,t){if(e.clusterShow=!0,!l(e._labelCollection)&&l(e.id)&&cAe(t,e.id.id)&&l(e.id._label)){let n=t._collectionIndicesByEntity[e.id.id].labelIndex,i=t._labelCollection.get(n);i.clusterShow=!0}}function aAe(e,t,n,i){let o={billboard:i._clusterBillboardCollection.add(),label:i._clusterLabelCollection.add(),point:i._clusterPointCollection.add()};o.billboard.show=!1,o.point.show=!1,o.label.show=!0,o.label.text=t.toLocaleString(),o.label.id=n,o.billboard.position=o.label.position=o.point.position=e,i._clusterEvent.raiseEvent(n,o)}function cAe(e,t){return l(e)&&l(e._collectionIndicesByEntity[t])&&l(e._collectionIndicesByEntity[t].labelIndex)}function Lq(e,t,n,i,o){if(!l(e))return;let r=e.length;for(let s=0;s<r;++s){let a=e.get(s);if(a.clusterShow=!1,!a.show||o._scene.mode===ie.SCENE3D&&!i.isPointVisible(a.position))continue;let c=o._clusterLabels&&l(a._labelCollection),u=o._clusterBillboards&&l(a.id._billboard),f=o._clusterPoints&&l(a.id._point);if(c&&(f||u))continue;let h=a.computeScreenSpacePosition(n);l(h)&&t.push({index:s,collection:e,clustered:!1,coord:h})}}var q$e=new Ye,K$e=new Ye,X$e=new Ye;function J$e(e){return function(t){if(l(t)&&t<.05||!e.enabled)return;let n=e._scene,i=e._labelCollection,o=e._billboardCollection,r=e._pointCollection;if(!l(i)&&!l(o)&&!l(r)||!e._clusterBillboards&&!e._clusterLabels&&!e._clusterPoints)return;let s=e._clusterLabelCollection,a=e._clusterBillboardCollection,c=e._clusterPointCollection;l(s)?s.removeAll():s=e._clusterLabelCollection=new rA({scene:n}),l(a)?a.removeAll():a=e._clusterBillboardCollection=new nf({scene:n}),l(c)?c.removeAll():c=e._clusterPointCollection=new YT;let u=e._pixelRange,f=e._minimumClusterSize,h=e._previousClusters,A=[],g=e._previousHeight,m=n.camera.positionCartographic.height,_=n.ellipsoid,y=n.camera.positionWC,C=new Eg(_,y),E=[];e._clusterLabels&&Lq(i,E,n,C,e),e._clusterBillboards&&Lq(o,E,n,C,e),e._clusterPoints&&Lq(r,E,n,C,e);let I,b,S,B,v,P,M,L,p,x,T,w;if(E.length>0){let R=new BO(E.length,64,Uint32Array);for(let O=0;O<E.length;++O)R.add(E[O].coord.x,E[O].coord.y);if(R.finish(),m<g)for(S=h.length,I=0;I<S;++I){let O=h[I];if(!C.isPointVisible(O.position))continue;let k=xo._computeScreenSpacePosition(N.IDENTITY,O.position,d.ZERO,U.ZERO,n);if(!l(k))continue;let Q=1-m/g,z=O.width=O.width*Q,F=O.height=O.height*Q;z=Math.max(z,O.minimumWidth),F=Math.max(F,O.minimumHeight);let H=k.x-z*.5,W=k.y-F*.5,Z=k.x+z,Y=k.y+F;for(v=R.range(H,W,Z,Y),P=v.length,x=0,p=[],b=0;b<P;++b)M=v[b],L=E[M],L.clustered||(++x,T=L.collection,w=L.index,p.push(T.get(w).id));if(x>=f)for(aAe(O.position,x,p,e),A.push(O),b=0;b<P;++b)E[v[b]].clustered=!0}for(S=E.length,I=0;I<S;++I){let O=E[I];if(O.clustered)continue;O.clustered=!0,T=O.collection,w=O.index;let k=T.get(w);B=sAe(k,O.coord,u,e,q$e);let Q=Ye.clone(B,K$e);v=R.range(B.x,B.y,B.x+B.width,B.y+B.height),P=v.length;let z=d.clone(k.position);for(x=1,p=[k.id],b=0;b<P;++b)if(M=v[b],L=E[M],!L.clustered){let F=L.collection.get(L.index),H=sAe(F,L.coord,u,e,X$e);d.add(F.position,z,z),Ye.union(Q,H,Q),++x,p.push(F.id)}if(x>=f){let F=d.multiplyByScalar(z,1/x,z);for(aAe(F,x,p,e),A.push({position:F,width:Q.width,height:Q.height,minimumWidth:B.width,minimumHeight:B.height}),b=0;b<P;++b)E[v[b]].clustered=!0}else Y$e(k,e)}}s.length===0&&(s.destroy(),e._clusterLabelCollection=void 0),a.length===0&&(a.destroy(),e._clusterBillboardCollection=void 0),c.length===0&&(c.destroy(),e._clusterPointCollection=void 0),e._previousClusters=A,e._previousHeight=m}}Kh.prototype._initialize=function(e){this._scene=e;let t=J$e(this);this._cluster=t,this._removeEventListener=e.camera.changed.addEventListener(t)};Object.defineProperties(Kh.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this._enabledDirty=e!==this._enabled,this._enabled=e}},pixelRange:{get:function(){return this._pixelRange},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._pixelRange,this._pixelRange=e}},minimumClusterSize:{get:function(){return this._minimumClusterSize},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._minimumClusterSize,this._minimumClusterSize=e}},clusterEvent:{get:function(){return this._clusterEvent}},clusterBillboards:{get:function(){return this._clusterBillboards},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterBillboards,this._clusterBillboards=e}},clusterLabels:{get:function(){return this._clusterLabels},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterLabels,this._clusterLabels=e}},clusterPoints:{get:function(){return this._clusterPoints},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterPoints,this._clusterPoints=e}},ready:{get:function(){return!this._enabledDirty&&!this._clusterDirty&&(!l(this._billboardCollection)||this._billboardCollection.ready)&&(!l(this._labelCollection)||this._labelCollection.ready)}}});function Fq(e,t,n,i){return function(o){let r=this[e];l(this._collectionIndicesByEntity)||(this._collectionIndicesByEntity={});let s=this._collectionIndicesByEntity[o.id];if(l(s)||(s=this._collectionIndicesByEntity[o.id]={billboardIndex:void 0,labelIndex:void 0,pointIndex:void 0}),l(r)&&l(s[i]))return r.get(s[i]);l(r)||(r=this[e]=new t({scene:this._scene}));let a,c,u=this[n];u.length>0?(a=u.shift(),c=r.get(a)):(c=r.add(),a=r.length-1),s[i]=a;let f=this;return Promise.resolve().then(function(){f._clusterDirty=!0}),c}}function Qq(e,t){let n=e._collectionIndicesByEntity[t];!l(n.billboardIndex)&&!l(n.labelIndex)&&!l(n.pointIndex)&&delete e._collectionIndicesByEntity[t]}Kh.prototype.getLabel=Fq("_labelCollection",rA,"_unusedLabelIndices","labelIndex");Kh.prototype.removeLabel=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._labelCollection)||!l(t)||!l(t.labelIndex))return;let n=t.labelIndex;t.labelIndex=void 0,Qq(this,e.id);let i=this._labelCollection.get(n);i.show=!1,i.text="",i.id=void 0,this._unusedLabelIndices.push(n),this._clusterDirty=!0};Kh.prototype.getBillboard=Fq("_billboardCollection",nf,"_unusedBillboardIndices","billboardIndex");Kh.prototype.removeBillboard=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._billboardCollection)||!l(t)||!l(t.billboardIndex))return;let n=t.billboardIndex;t.billboardIndex=void 0,Qq(this,e.id);let i=this._billboardCollection.get(n);i.id=void 0,i.show=!1,i.image=void 0,this._unusedBillboardIndices.push(n),this._clusterDirty=!0};Kh.prototype.getPoint=Fq("_pointCollection",YT,"_unusedPointIndices","pointIndex");Kh.prototype.removePoint=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._pointCollection)||!l(t)||!l(t.pointIndex))return;let n=t.pointIndex;t.pointIndex=void 0,Qq(this,e.id);let i=this._pointCollection.get(n);i.show=!1,i.id=void 0,this._unusedPointIndices.push(n),this._clusterDirty=!0};function Oq(e){if(!l(e))return;let t=e.length;for(let n=0;n<t;++n)e.get(n).clusterShow=!0}function Z$e(e){e.enabled||(l(e._clusterLabelCollection)&&e._clusterLabelCollection.destroy(),l(e._clusterBillboardCollection)&&e._clusterBillboardCollection.destroy(),l(e._clusterPointCollection)&&e._clusterPointCollection.destroy(),e._clusterLabelCollection=void 0,e._clusterBillboardCollection=void 0,e._clusterPointCollection=void 0,Oq(e._labelCollection),Oq(e._billboardCollection),Oq(e._pointCollection))}Kh.prototype.update=function(e){if(!this.show)return;let t,n=this._labelCollection;l(n)&&n.length>0&&!n.ready&&(t=e.commandList,e.commandList=[],n.update(e),e.commandList=t);let i=this._billboardCollection;l(i)&&i.length>0&&!i.ready&&(t=e.commandList,e.commandList=[],i.update(e),e.commandList=t),this._enabledDirty&&(this._enabledDirty=!1,Z$e(this),this._clusterDirty=!0),this._clusterDirty&&(this._cluster(),this._clusterDirty=l(n)&&!n.ready||l(i)&&!i.ready),l(this._clusterLabelCollection)&&this._clusterLabelCollection.update(e),l(this._clusterBillboardCollection)&&this._clusterBillboardCollection.update(e),l(this._clusterPointCollection)&&this._clusterPointCollection.update(e),l(n)&&n.update(e),l(i)&&i.update(e),l(this._pointCollection)&&this._pointCollection.update(e)};Kh.prototype.destroy=function(){l(this._removeEventListener)&&(this._removeEventListener(),this._removeEventListener=void 0),this._labelCollection=this._labelCollection&&this._labelCollection.destroy(),this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),this._pointCollection=this._pointCollection&&this._pointCollection.destroy(),this._clusterLabelCollection=this._clusterLabelCollection&&this._clusterLabelCollection.destroy(),this._clusterBillboardCollection=this._clusterBillboardCollection&&this._clusterBillboardCollection.destroy(),this._clusterPointCollection=this._clusterPointCollection&&this._clusterPointCollection.destroy(),this._labelCollection=void 0,this._billboardCollection=void 0,this._pointCollection=void 0,this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity=void 0,this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1,this._pixelRangeDirty=!1,this._minimumClusterSizeDirty=!1};var lf=Kh;function kq(e){this._name=e,this._clock=void 0,this._changed=new _e,this._error=new _e,this._isLoading=!1,this._loading=new _e,this._entityCollection=new Ea(this),this._entityCluster=new lf}Object.defineProperties(kq.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{get:function(){return this._clock},set:function(e){this._clock!==e&&(this._clock=e,this._changed.raiseEvent(this))}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading},set:function(e){us.setLoading(this,e)}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}}});kq.prototype.update=function(e){return!0};var DO=kq;var lAe={};lAe.computePositions=function(e,t,n,i,o){let r=e*.5,s=-r,a=i+i,c=o?2*a:a,u=new Float64Array(c*3),f,h=0,A=0,g=o?a*3:0,m=o?(a+i)*3:i*3;for(f=0;f<i;f++){let _=f/i*D.TWO_PI,y=Math.cos(_),C=Math.sin(_),E=y*n,I=C*n,b=y*t,S=C*t;u[A+g]=E,u[A+g+1]=I,u[A+g+2]=s,u[A+m]=b,u[A+m+1]=S,u[A+m+2]=r,A+=3,o&&(u[h++]=E,u[h++]=I,u[h++]=s,u[h++]=b,u[h++]=S,u[h++]=r)}return u};var z0=lAe;var Uq=new U,$$e=new d,eet=new d,tet=new d,net=new d;function Ig(e){e=e??V.EMPTY_OBJECT;let t=e.length,n=e.topRadius,i=e.bottomRadius,o=e.vertexFormat??Pe.DEFAULT,r=e.slices??128;this._length=t,this._topRadius=n,this._bottomRadius=i,this._vertexFormat=Pe.clone(o),this._slices=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createCylinderGeometry"}Ig.packedLength=Pe.packedLength+5;Ig.pack=function(e,t,n){return n=n??0,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._length,t[n++]=e._topRadius,t[n++]=e._bottomRadius,t[n++]=e._slices,t[n]=e._offsetAttribute??-1,t};var uAe=new Pe,qT={vertexFormat:uAe,length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,offsetAttribute:void 0};Ig.unpack=function(e,t,n){t=t??0;let i=Pe.unpack(e,t,uAe);t+=Pe.packedLength;let o=e[t++],r=e[t++],s=e[t++],a=e[t++],c=e[t];return l(n)?(n._vertexFormat=Pe.clone(i,n._vertexFormat),n._length=o,n._topRadius=r,n._bottomRadius=s,n._slices=a,n._offsetAttribute=c===-1?void 0:c,n):(qT.length=o,qT.topRadius=r,qT.bottomRadius=s,qT.slices=a,qT.offsetAttribute=c===-1?void 0:c,new Ig(qT))};Ig.createGeometry=function(e){let t=e._length,n=e._topRadius,i=e._bottomRadius,o=e._vertexFormat,r=e._slices;if(t<=0||n<0||i<0||n===0&&i===0)return;let s=r+r,a=r+s,c=s+s,u=z0.computePositions(t,n,i,r,!0),f=o.st?new Float32Array(c*2):void 0,h=o.normal?new Float32Array(c*3):void 0,A=o.tangent?new Float32Array(c*3):void 0,g=o.bitangent?new Float32Array(c*3):void 0,m,_=o.normal||o.tangent||o.bitangent;if(_){let v=o.tangent||o.bitangent,P=0,M=0,L=0,p=Math.atan2(i-n,t),x=$$e;x.z=Math.sin(p);let T=Math.cos(p),w=tet,R=eet;for(m=0;m<r;m++){let O=m/r*D.TWO_PI,k=T*Math.cos(O),Q=T*Math.sin(O);_&&(x.x=k,x.y=Q,v&&(w=d.normalize(d.cross(d.UNIT_Z,x,w),w)),o.normal&&(h[P++]=x.x,h[P++]=x.y,h[P++]=x.z,h[P++]=x.x,h[P++]=x.y,h[P++]=x.z),o.tangent&&(A[M++]=w.x,A[M++]=w.y,A[M++]=w.z,A[M++]=w.x,A[M++]=w.y,A[M++]=w.z),o.bitangent&&(R=d.normalize(d.cross(x,w,R),R),g[L++]=R.x,g[L++]=R.y,g[L++]=R.z,g[L++]=R.x,g[L++]=R.y,g[L++]=R.z))}for(m=0;m<r;m++)o.normal&&(h[P++]=0,h[P++]=0,h[P++]=-1),o.tangent&&(A[M++]=1,A[M++]=0,A[M++]=0),o.bitangent&&(g[L++]=0,g[L++]=-1,g[L++]=0);for(m=0;m<r;m++)o.normal&&(h[P++]=0,h[P++]=0,h[P++]=1),o.tangent&&(A[M++]=1,A[M++]=0,A[M++]=0),o.bitangent&&(g[L++]=0,g[L++]=1,g[L++]=0)}let y=12*r-12,C=Oe.createTypedArray(c,y),E=0,I=0;for(m=0;m<r-1;m++)C[E++]=I,C[E++]=I+2,C[E++]=I+3,C[E++]=I,C[E++]=I+3,C[E++]=I+1,I+=2;for(C[E++]=s-2,C[E++]=0,C[E++]=1,C[E++]=s-2,C[E++]=1,C[E++]=s-1,m=1;m<r-1;m++)C[E++]=s+m+1,C[E++]=s+m,C[E++]=s;for(m=1;m<r-1;m++)C[E++]=a,C[E++]=a+m,C[E++]=a+m+1;let b=0;if(o.st){let v=Math.max(n,i);for(m=0;m<c;m++){let P=d.fromArray(u,m*3,net);f[b++]=(P.x+v)/(2*v),f[b++]=(P.y+v)/(2*v)}}let S=new yn;o.position&&(S.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:u})),o.normal&&(S.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:h})),o.tangent&&(S.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:A})),o.bitangent&&(S.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g})),o.st&&(S.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:f})),Uq.x=t*.5,Uq.y=Math.max(i,n);let B=new le(d.ZERO,U.magnitude(Uq));if(l(e._offsetAttribute)){t=u.length;let v=e._offsetAttribute===hn.NONE?0:1,P=new Uint8Array(t/3).fill(v);S.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:P})}return new ht({attributes:S,indices:C,primitiveType:Me.TRIANGLES,boundingSphere:B,offsetAttribute:e._offsetAttribute})};var Gq;Ig.getUnitCylinder=function(){return l(Gq)||(Gq=Ig.createGeometry(new Ig({topRadius:1,bottomRadius:1,length:1,vertexFormat:Pe.POSITION_ONLY}))),Gq};var vO=Ig;var zq=new U;function KT(e){e=e??V.EMPTY_OBJECT;let t=e.length,n=e.topRadius,i=e.bottomRadius,o=e.slices??128,r=Math.max(e.numberOfVerticalLines??16,0);this._length=t,this._topRadius=n,this._bottomRadius=i,this._slices=o,this._numberOfVerticalLines=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createCylinderOutlineGeometry"}KT.packedLength=6;KT.pack=function(e,t,n){return n=n??0,t[n++]=e._length,t[n++]=e._topRadius,t[n++]=e._bottomRadius,t[n++]=e._slices,t[n++]=e._numberOfVerticalLines,t[n]=e._offsetAttribute??-1,t};var V0={length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,numberOfVerticalLines:void 0,offsetAttribute:void 0};KT.unpack=function(e,t,n){t=t??0;let i=e[t++],o=e[t++],r=e[t++],s=e[t++],a=e[t++],c=e[t];return l(n)?(n._length=i,n._topRadius=o,n._bottomRadius=r,n._slices=s,n._numberOfVerticalLines=a,n._offsetAttribute=c===-1?void 0:c,n):(V0.length=i,V0.topRadius=o,V0.bottomRadius=r,V0.slices=s,V0.numberOfVerticalLines=a,V0.offsetAttribute=c===-1?void 0:c,new KT(V0))};KT.createGeometry=function(e){let t=e._length,n=e._topRadius,i=e._bottomRadius,o=e._slices,r=e._numberOfVerticalLines;if(t<=0||n<0||i<0||n===0&&i===0)return;let s=o*2,a=z0.computePositions(t,n,i,o,!1),c=o*2,u;if(r>0){let _=Math.min(r,o);u=Math.round(o/_),c+=_}let f=Oe.createTypedArray(s,c*2),h=0,A;for(A=0;A<o-1;A++)f[h++]=A,f[h++]=A+1,f[h++]=A+o,f[h++]=A+1+o;if(f[h++]=o-1,f[h++]=0,f[h++]=o+o-1,f[h++]=o,r>0)for(A=0;A<o;A+=u)f[h++]=A,f[h++]=A+o;let g=new yn;g.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:a}),zq.x=t*.5,zq.y=Math.max(i,n);let m=new le(d.ZERO,U.magnitude(zq));if(l(e._offsetAttribute)){t=a.length;let _=e._offsetAttribute===hn.NONE?0:1,y=new Uint8Array(t/3).fill(_);g.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:y})}return new ht({attributes:g,indices:f,primitiveType:Me.LINES,boundingSphere:m,offsetAttribute:e._offsetAttribute})};var PO=KT;var fAe=d.ZERO,dAe=new d,iet=new d,hAe=new G;function oet(e){this.id=e,this.vertexFormat=void 0,this.length=void 0,this.topRadius=void 0,this.bottomRadius=void 0,this.slices=void 0,this.numberOfVerticalLines=void 0,this.offsetAttribute=void 0}function uf(e,t){yi.call(this,{entity:e,scene:t,geometryOptions:new oet(e),geometryPropertyName:"cylinder",observedPropertyNames:["availability","position","orientation","cylinder"]}),this._onEntityPropertyChanged(e,"cylinder",e.cylinder,void 0)}l(Object.create)&&(uf.prototype=Object.create(yi.prototype),uf.prototype.constructor=uf);Object.defineProperties(uf.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});uf.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=Kn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r,color:void 0,offset:void 0};if(this._materialProperty instanceof Xt){let a;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,hAe)),l(a)||(a=G.WHITE),s.color=$t.fromColor(a)}return l(this._options.offsetAttribute)&&(s.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,fAe,dAe))),new Pt({id:t,geometry:new vO(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.cylinder.heightReference,this._options.length*.5,this._scene.ellipsoid),attributes:s})};uf.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,hAe),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:$t.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,fAe,dAe))),new Pt({id:t,geometry:new PO(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.cylinder.heightReference,this._options.length*.5,this._scene.ellipsoid),attributes:r})};uf.prototype._computeCenter=function(e,t){return j.getValueOrUndefined(this._entity.position,e,t)};uf.prototype._isHidden=function(e,t){return!l(e.position)||!l(t.length)||!l(t.topRadius)||!l(t.bottomRadius)||yi.prototype._isHidden.call(this,e,t)};uf.prototype._isDynamic=function(e,t){return!e.position.isConstant||!j.isConstant(e.orientation)||!t.length.isConstant||!t.topRadius.isConstant||!t.bottomRadius.isConstant||!j.isConstant(t.slices)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.numberOfVerticalLines)};uf.prototype._setStaticOptions=function(e,t){let n=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof Xt?gn.VERTEX_FORMAT:Eo.MaterialSupport.TEXTURED.vertexFormat,i.length=t.length.getValue(je.MINIMUM_VALUE),i.topRadius=t.topRadius.getValue(je.MINIMUM_VALUE),i.bottomRadius=t.bottomRadius.getValue(je.MINIMUM_VALUE),i.slices=j.getValueOrUndefined(t.slices,je.MINIMUM_VALUE),i.numberOfVerticalLines=j.getValueOrUndefined(t.numberOfVerticalLines,je.MINIMUM_VALUE),i.offsetAttribute=n!==Ze.NONE?hn.ALL:void 0};uf.prototype._onEntityPropertyChanged=_p;uf.DynamicGeometryUpdater=XT;function XT(e,t,n){_i.call(this,e,t,n)}l(Object.create)&&(XT.prototype=Object.create(_i.prototype),XT.prototype.constructor=XT);XT.prototype._isHidden=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(e.position,n,iet);return!l(o)||!l(i.length)||!l(i.topRadius)||!l(i.bottomRadius)||_i.prototype._isHidden.call(this,e,t,n)};XT.prototype._setOptions=function(e,t,n){let i=j.getValueOrDefault(t.heightReference,n,Ze.NONE),o=this._options;o.length=j.getValueOrUndefined(t.length,n),o.topRadius=j.getValueOrUndefined(t.topRadius,n),o.bottomRadius=j.getValueOrUndefined(t.bottomRadius,n),o.slices=j.getValueOrUndefined(t.slices,n),o.numberOfVerticalLines=j.getValueOrUndefined(t.numberOfVerticalLines,n),o.offsetAttribute=i!==Ze.NONE?hn.ALL:void 0};var RO=uf;var ret={UNBOUNDED:0,CLAMPED:1,LOOP_STOP:2},fs=Object.freeze(ret);var set={TICK_DEPENDENT:0,SYSTEM_CLOCK_MULTIPLIER:1,SYSTEM_CLOCK:2},wo=Object.freeze(set);var aet={NONE:0,HOLD:1,EXTRAPOLATE:2},ff=Object.freeze(aet);var mAe=xr(Ou(),1);function cet(e){let t=new mAe.default(e);t.normalize();let n=t.path(),i=n.lastIndexOf("/");return i!==-1&&(n=n.substr(i+1)),n}var xg=cet;var uet=D.factorial;function Vq(e,t,n,i,o,r){let s=0,a,c,u;if(i>0){for(c=0;c<o;c++){for(a=!1,u=0;u<r.length&&!a;u++)c===r[u]&&(a=!0);a||(r.push(c),s+=Vq(e,t,n,i-1,o,r),r.splice(r.length-1,1))}return s}for(s=1,c=0;c<o;c++){for(a=!1,u=0;u<r.length&&!a;u++)c===r[u]&&(a=!0);a||(s*=e-n[t[c]])}return s}var QV={type:"Hermite"};QV.getRequiredDataPoints=function(e,t){return t=t??0,Math.max(Math.floor((e+1)/(t+1)),2)};QV.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a,c,u,f,h=t.length,A=new Array(i);for(r=0;r<i;r++){o[r]=0;let y=new Array(h);for(A[r]=y,s=0;s<h;s++)y[s]=[]}let g=h,m=new Array(g);for(r=0;r<g;r++)m[r]=r;let _=h-1;for(c=0;c<i;c++){for(s=0;s<g;s++)f=m[s]*i+c,A[c][0].push(n[f]);for(r=1;r<g;r++){let y=!1;for(s=0;s<g-r;s++){let C=t[m[s]],E=t[m[s+r]],I;E-C<=0?(f=m[s]*i+i*r+c,I=n[f],A[c][r].push(I/uet(r))):(I=A[c][r-1][s+1]-A[c][r-1][s],A[c][r].push(I/(E-C))),y=y||I!==0}y||(_=r-1)}}for(a=0,u=0;a<=u;a++)for(r=a;r<=_;r++){let y=Vq(e,m,t,a,r,[]);for(c=0;c<i;c++){let C=A[c][r][0];o[c+a*i]+=C*y}}return o};var fet=[];QV.interpolate=function(e,t,n,i,o,r,s){let a=i*(r+1);l(s)||(s=new Array(a));for(let C=0;C<a;C++)s[C]=0;let c=t.length,u=new Array(c*(o+1)),f;for(f=0;f<c;f++)for(let C=0;C<o+1;C++)u[f*(o+1)+C]=f;let h=u.length,A=fet,g=det(A,u,t,n,i,o),m=[],_=h*(h+1)/2,y=Math.min(g,r);for(let C=0;C<=y;C++)for(f=C;f<=g;f++){m.length=0;let E=Vq(e,u,t,C,f,m),I=Math.floor(f*(1-f)/2)+h*f;for(let b=0;b<i;b++){let S=Math.floor(b*_),B=A[S+I];s[b+C*i]+=B*E}}return s};function det(e,t,n,i,o,r){let s,a,c=-1,u=t.length,f=u*(u+1)/2;for(let h=0;h<o;h++){let A=Math.floor(h*f);for(s=0;s<u;s++)a=t[s]*o*(r+1)+h,e[A+s]=i[a];for(let g=1;g<u;g++){let m=0,_=Math.floor(g*(1-g)/2)+u*g,y=!1;for(s=0;s<u-g;s++){let C=n[t[s]],E=n[t[s+g]],I,b;if(E-C<=0)a=t[s]*o*(r+1)+o*g+h,I=i[a],b=I/D.factorial(g),e[A+_+m]=b,m++;else{let S=Math.floor((g-1)*(2-g)/2)+u*(g-1);I=e[A+S+s+1]-e[A+S+s],b=I/(E-C),e[A+_+m]=b,m++}y=y||I!==0}y&&(c=Math.max(c,g))}}return c}var MO=QV;var Hq={type:"Lagrange"};Hq.getRequiredDataPoints=function(e){return Math.max(e+1,2)};Hq.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a=t.length;for(r=0;r<i;r++)o[r]=0;for(r=0;r<a;r++){let c=1;for(s=0;s<a;s++)if(s!==r){let u=t[r]-t[s];c*=(e-t[s])/u}for(s=0;s<i;s++)o[s]+=c*n[r*i+s]}return o};var NO=Hq;var Wq={type:"Linear"};Wq.getRequiredDataPoints=function(e){return 2};Wq.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a,c=t[0],u=t[1];for(r=0;r<i;r++)s=n[r],a=n[r+i],o[r]=((a-s)*e+u*s-c*a)/(u-c);return o};var H0=Wq;function Yc(e,t,n){this.clock=e??0,this.cone=t??0,this.magnitude=n??1}Yc.fromCartesian3=function(e,t){let n=e.x,i=e.y,o=e.z,r=n*n+i*i;return l(t)||(t=new Yc),t.clock=Math.atan2(i,n),t.cone=Math.atan2(Math.sqrt(r),o),t.magnitude=Math.sqrt(r+o*o),t};Yc.clone=function(e,t){if(l(e))return l(t)?(t.clock=e.clock,t.cone=e.cone,t.magnitude=e.magnitude,t):new Yc(e.clock,e.cone,e.magnitude)};Yc.normalize=function(e,t){return l(t)?(t.clock=e.clock,t.cone=e.cone,t.magnitude=1,t):new Yc(e.clock,e.cone,1)};Yc.equals=function(e,t){return e===t||l(e)&&l(t)&&e.clock===t.clock&&e.cone===t.cone&&e.magnitude===t.magnitude};Yc.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.clock-t.clock)<=n&&Math.abs(e.cone-t.cone)<=n&&Math.abs(e.magnitude-t.magnitude)<=n};Yc.prototype.equals=function(e){return Yc.equals(this,e)};Yc.prototype.clone=function(e){return Yc.clone(this,e)};Yc.prototype.equalsEpsilon=function(e,t){return Yc.equalsEpsilon(this,e,t)};Yc.prototype.toString=function(){return`(${this.clock}, ${this.cone}, ${this.magnitude})`};var LO=Yc;var UO=xr(Ou(),1);var jq;typeof performance<"u"&&typeof performance.now=="function"&&isFinite(performance.now())?jq=function(){return performance.now()}:jq=function(){return Date.now()};var Li=jq;function Yq(e){e=e??V.EMPTY_OBJECT;let t=e.currentTime,n=e.startTime,i=e.stopTime;l(t)?t=K.clone(t):l(n)?t=K.clone(n):l(i)?t=K.addDays(i,-1,new K):t=K.now(),l(n)?n=K.clone(n):n=K.clone(t),l(i)?i=K.clone(i):i=K.addDays(n,1,new K),this.startTime=n,this.stopTime=i,this.clockRange=e.clockRange??fs.UNBOUNDED,this.canAnimate=e.canAnimate??!0,this.onTick=new _e,this.onStop=new _e,this._currentTime=void 0,this._multiplier=void 0,this._clockStep=void 0,this._shouldAnimate=void 0,this._lastSystemTime=Li(),this.currentTime=t,this.multiplier=e.multiplier??1,this.shouldAnimate=e.shouldAnimate??!1,this.clockStep=e.clockStep??wo.SYSTEM_CLOCK_MULTIPLIER}Object.defineProperties(Yq.prototype,{currentTime:{get:function(){return this._currentTime},set:function(e){K.equals(this._currentTime,e)||(this._clockStep===wo.SYSTEM_CLOCK&&(this._clockStep=wo.SYSTEM_CLOCK_MULTIPLIER),this._currentTime=e)}},multiplier:{get:function(){return this._multiplier},set:function(e){this._multiplier!==e&&(this._clockStep===wo.SYSTEM_CLOCK&&(this._clockStep=wo.SYSTEM_CLOCK_MULTIPLIER),this._multiplier=e)}},clockStep:{get:function(){return this._clockStep},set:function(e){e===wo.SYSTEM_CLOCK&&(this._multiplier=1,this._shouldAnimate=!0,this._currentTime=K.now()),this._clockStep=e}},shouldAnimate:{get:function(){return this._shouldAnimate},set:function(e){this._shouldAnimate!==e&&(this._clockStep===wo.SYSTEM_CLOCK&&(this._clockStep=wo.SYSTEM_CLOCK_MULTIPLIER),this._shouldAnimate=e)}}});Yq.prototype.tick=function(){let e=Li(),t=K.clone(this._currentTime);if(this.canAnimate&&this._shouldAnimate){let n=this._clockStep;if(n===wo.SYSTEM_CLOCK)t=K.now(t);else{let i=this._multiplier;if(n===wo.TICK_DEPENDENT)t=K.addSeconds(t,i,t);else{let a=e-this._lastSystemTime;t=K.addSeconds(t,i*(a/1e3),t)}let o=this.clockRange,r=this.startTime,s=this.stopTime;if(o===fs.CLAMPED)K.lessThan(t,r)?t=K.clone(r,t):K.greaterThan(t,s)&&(t=K.clone(s,t),this.onStop.raiseEvent(this));else if(o===fs.LOOP_STOP)for(K.lessThan(t,r)&&(t=K.clone(r,t));K.greaterThan(t,s);)t=K.addSeconds(r,K.secondsDifference(t,s),t),this.onStop.raiseEvent(this)}}return this._currentTime=t,this._lastSystemTime=e,this.onTick.raiseEvent(this),t};var Xh=Yq;function W0(){this._definitionChanged=new _e,this._startTime=void 0,this._stopTime=void 0,this._currentTime=void 0,this._clockRange=void 0,this._clockStep=void 0,this._multiplier=void 0}Object.defineProperties(W0.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},startTime:ml("startTime"),stopTime:ml("stopTime"),currentTime:ml("currentTime"),clockRange:ml("clockRange"),clockStep:ml("clockStep"),multiplier:ml("multiplier")});W0.prototype.clone=function(e){return l(e)||(e=new W0),e.startTime=this.startTime,e.stopTime=this.stopTime,e.currentTime=this.currentTime,e.clockRange=this.clockRange,e.clockStep=this.clockStep,e.multiplier=this.multiplier,e};W0.prototype.equals=function(e){return this===e||l(e)&&K.equals(this.startTime,e.startTime)&&K.equals(this.stopTime,e.stopTime)&&K.equals(this.currentTime,e.currentTime)&&this.clockRange===e.clockRange&&this.clockStep===e.clockStep&&this.multiplier===e.multiplier};W0.prototype.merge=function(e){this.startTime=this.startTime??e.startTime,this.stopTime=this.stopTime??e.stopTime,this.currentTime=this.currentTime??e.currentTime,this.clockRange=this.clockRange??e.clockRange,this.clockStep=this.clockStep??e.clockStep,this.multiplier=this.multiplier??e.multiplier};W0.prototype.getValue=function(e){return l(e)||(e=new Xh),e.startTime=this.startTime??e.startTime,e.stopTime=this.stopTime??e.stopTime,e.currentTime=this.currentTime??e.currentTime,e.clockRange=this.clockRange??e.clockRange,e.multiplier=this.multiplier??e.multiplier,e.clockStep=this.clockStep??e.clockStep,e};var Jh=W0;var het=G.WHITE,met=.1,Aet=new U(8,8),pet=new U(0,0),get=new U(1,1);function JT(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this._cellAlpha=void 0,this._cellAlphaSubscription=void 0,this._lineCount=void 0,this._lineCountSubscription=void 0,this._lineThickness=void 0,this._lineThicknessSubscription=void 0,this._lineOffset=void 0,this._lineOffsetSubscription=void 0,this.color=e.color,this.cellAlpha=e.cellAlpha,this.lineCount=e.lineCount,this.lineThickness=e.lineThickness,this.lineOffset=e.lineOffset}Object.defineProperties(JT.prototype,{isConstant:{get:function(){return j.isConstant(this._color)&&j.isConstant(this._cellAlpha)&&j.isConstant(this._lineCount)&&j.isConstant(this._lineThickness)&&j.isConstant(this._lineOffset)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color"),cellAlpha:de("cellAlpha"),lineCount:de("lineCount"),lineThickness:de("lineThickness"),lineOffset:de("lineOffset")});JT.prototype.getType=function(e){return"Grid"};var _et=new K;JT.prototype.getValue=function(e,t){return l(e)||(e=K.now(_et)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,het,t.color),t.cellAlpha=j.getValueOrDefault(this._cellAlpha,e,met),t.lineCount=j.getValueOrClonedDefault(this._lineCount,e,Aet,t.lineCount),t.lineThickness=j.getValueOrClonedDefault(this._lineThickness,e,get,t.lineThickness),t.lineOffset=j.getValueOrClonedDefault(this._lineOffset,e,pet,t.lineOffset),t};JT.prototype.equals=function(e){return this===e||e instanceof JT&&j.equals(this._color,e._color)&&j.equals(this._cellAlpha,e._cellAlpha)&&j.equals(this._lineCount,e._lineCount)&&j.equals(this._lineThickness,e._lineThickness)&&j.equals(this._lineOffset,e._lineOffset)};var ZT=JT;function $T(e){this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this.color=e}Object.defineProperties($T.prototype,{isConstant:{get:function(){return j.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color")});$T.prototype.getType=function(e){return"PolylineArrow"};var yet=new K;$T.prototype.getValue=function(e,t){return l(e)||(e=K.now(yet)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,G.WHITE,t.color),t};$T.prototype.equals=function(e){return this===e||e instanceof $T&&j.equals(this._color,e._color)};var eS=$T;var Cet=G.WHITE,Eet=G.TRANSPARENT,Iet=16,xet=255;function tS(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this._gapColor=void 0,this._gapColorSubscription=void 0,this._dashLength=void 0,this._dashLengthSubscription=void 0,this._dashPattern=void 0,this._dashPatternSubscription=void 0,this.color=e.color,this.gapColor=e.gapColor,this.dashLength=e.dashLength,this.dashPattern=e.dashPattern}Object.defineProperties(tS.prototype,{isConstant:{get:function(){return j.isConstant(this._color)&&j.isConstant(this._gapColor)&&j.isConstant(this._dashLength)&&j.isConstant(this._dashPattern)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color"),gapColor:de("gapColor"),dashLength:de("dashLength"),dashPattern:de("dashPattern")});tS.prototype.getType=function(e){return"PolylineDash"};var bet=new K;tS.prototype.getValue=function(e,t){return l(e)||(e=K.now(bet)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,Cet,t.color),t.gapColor=j.getValueOrClonedDefault(this._gapColor,e,Eet,t.gapColor),t.dashLength=j.getValueOrDefault(this._dashLength,e,Iet,t.dashLength),t.dashPattern=j.getValueOrDefault(this._dashPattern,e,xet,t.dashPattern),t};tS.prototype.equals=function(e){return this===e||e instanceof tS&&j.equals(this._color,e._color)&&j.equals(this._gapColor,e._gapColor)&&j.equals(this._dashLength,e._dashLength)&&j.equals(this._dashPattern,e._dashPattern)};var nS=tS;var Tet=G.WHITE,wet=.25,Bet=1;function iS(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this._glowPower=void 0,this._glowPowerSubscription=void 0,this._taperPower=void 0,this._taperPowerSubscription=void 0,this.color=e.color,this.glowPower=e.glowPower,this.taperPower=e.taperPower}Object.defineProperties(iS.prototype,{isConstant:{get:function(){return j.isConstant(this._color)&&j.isConstant(this._glow)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color"),glowPower:de("glowPower"),taperPower:de("taperPower")});iS.prototype.getType=function(e){return"PolylineGlow"};var Det=new K;iS.prototype.getValue=function(e,t){return l(e)||(e=K.now(Det)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,Tet,t.color),t.glowPower=j.getValueOrDefault(this._glowPower,e,wet,t.glowPower),t.taperPower=j.getValueOrDefault(this._taperPower,e,Bet,t.taperPower),t};iS.prototype.equals=function(e){return this===e||e instanceof iS&&j.equals(this._color,e._color)&&j.equals(this._glowPower,e._glowPower)&&j.equals(this._taperPower,e._taperPower)};var oS=iS;var vet=G.WHITE,Pet=G.BLACK,Ret=1;function rS(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this.color=e.color,this.outlineColor=e.outlineColor,this.outlineWidth=e.outlineWidth}Object.defineProperties(rS.prototype,{isConstant:{get:function(){return j.isConstant(this._color)&&j.isConstant(this._outlineColor)&&j.isConstant(this._outlineWidth)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth")});rS.prototype.getType=function(e){return"PolylineOutline"};var Met=new K;rS.prototype.getValue=function(e,t){return l(e)||(e=K.now(Met)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,vet,t.color),t.outlineColor=j.getValueOrClonedDefault(this._outlineColor,e,Pet,t.outlineColor),t.outlineWidth=j.getValueOrDefault(this._outlineWidth,e,Ret),t};rS.prototype.equals=function(e){return this===e||e instanceof rS&&j.equals(this._color,e._color)&&j.equals(this._outlineColor,e._outlineColor)&&j.equals(this._outlineWidth,e._outlineWidth)};var My=rS;function bg(e,t){this._value=void 0,this._definitionChanged=new _e,this._eventHelper=new Dr,this._referenceFrame=t??$i.FIXED,this.setValue(e)}Object.defineProperties(bg.prototype,{isConstant:{get:function(){let e=this._value;if(!l(e))return!0;let t=e.length;for(let n=0;n<t;n++)if(!j.isConstant(e[n]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var Net=new K;bg.prototype.getValue=function(e,t){return l(e)||(e=K.now(Net)),this.getValueInReferenceFrame(e,$i.FIXED,t)};bg.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._value;if(!l(i))return;let o=i.length;l(n)||(n=new Array(o));let r=0,s=0;for(;r<o;){let c=i[r].getValueInReferenceFrame(e,t,n[r]);l(c)&&(n[s]=c,s++),r++}return n.length=s,n};bg.prototype.setValue=function(e){let t=this._eventHelper;if(t.removeAll(),l(e)){this._value=e.slice();let n=e.length;for(let i=0;i<n;i++){let o=e[i];l(o)&&t.add(o.definitionChanged,bg.prototype._raiseDefinitionChanged,this)}}else this._value=void 0;this._definitionChanged.raiseEvent(this)};bg.prototype.equals=function(e){return this===e||e instanceof bg&&this._referenceFrame===e._referenceFrame&&j.arrayEquals(this._value,e._value)};bg.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var Tg=bg;function Ny(e){this._value=void 0,this._definitionChanged=new _e,this._eventHelper=new Dr,this.setValue(e)}Object.defineProperties(Ny.prototype,{isConstant:{get:function(){let e=this._value;if(!l(e))return!0;let t=e.length;for(let n=0;n<t;n++)if(!j.isConstant(e[n]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}}});var Let=new K;Ny.prototype.getValue=function(e,t){l(e)||(e=K.now(Let));let n=this._value;if(!l(n))return;let i=n.length;l(t)||(t=new Array(i));let o=0,r=0;for(;o<i;){let a=this._value[o].getValue(e,t[o]);l(a)&&(t[r]=a,r++),o++}return t.length=r,t};Ny.prototype.setValue=function(e){let t=this._eventHelper;if(t.removeAll(),l(e)){this._value=e.slice();let n=e.length;for(let i=0;i<n;i++){let o=e[i];l(o)&&t.add(o.definitionChanged,Ny.prototype._raiseDefinitionChanged,this)}}else this._value=void 0;this._definitionChanged.raiseEvent(this)};Ny.prototype.equals=function(e){return this===e||e instanceof Ny&&j.arrayEquals(this._value,e._value)};Ny.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var sS=Ny;function j0(e){let t=e._targetProperty;if(!l(t)){let n=e._targetEntity;if(!l(n)){if(n=e._targetCollection.getById(e._targetId),!l(n)){e._targetEntity=e._targetProperty=void 0;return}n.definitionChanged.addEventListener(df.prototype._onTargetEntityDefinitionChanged,e),e._targetEntity=n}let i=e._targetPropertyNames;t=e._targetEntity;for(let o=0,r=i.length;o<r&&l(t);++o)t=t[i[o]];e._targetProperty=t}return t}function df(e,t,n){this._targetCollection=e,this._targetId=t,this._targetPropertyNames=n,this._targetProperty=void 0,this._targetEntity=void 0,this._definitionChanged=new _e,e.collectionChanged.addEventListener(df.prototype._onCollectionChanged,this)}Object.defineProperties(df.prototype,{isConstant:{get:function(){return j.isConstant(j0(this))}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){let e=j0(this);return l(e)?e.referenceFrame:void 0}},targetId:{get:function(){return this._targetId}},targetCollection:{get:function(){return this._targetCollection}},targetPropertyNames:{get:function(){return this._targetPropertyNames}},resolvedProperty:{get:function(){return j0(this)}}});df.fromString=function(e,t){let n,i=[],o=!0,r=!1,s="";for(let a=0;a<t.length;++a){let c=t.charAt(a);r?(s+=c,r=!1):c==="\\"?r=!0:o&&c==="#"?(n=s,o=!1,s=""):!o&&c==="."?(i.push(s),s=""):s+=c}return i.push(s),new df(e,n,i)};var Oet=new K;df.prototype.getValue=function(e,t){let n=j0(this);return l(e)||(e=K.now(Oet)),l(n)?n.getValue(e,t):void 0};df.prototype.getValueInReferenceFrame=function(e,t,n){let i=j0(this);return l(i)?i.getValueInReferenceFrame(e,t,n):void 0};df.prototype.getType=function(e){let t=j0(this);return l(t)?t.getType(e):void 0};df.prototype.equals=function(e){if(this===e)return!0;let t=this._targetPropertyNames,n=e._targetPropertyNames;if(this._targetCollection!==e._targetCollection||this._targetId!==e._targetId||t.length!==n.length)return!1;let i=this._targetPropertyNames.length;for(let o=0;o<i;o++)if(t[o]!==n[o])return!1;return!0};df.prototype._onTargetEntityDefinitionChanged=function(e,t,n,i){l(this._targetProperty)&&this._targetPropertyNames[0]===t&&(this._targetProperty=void 0,this._definitionChanged.raiseEvent(this))};df.prototype._onCollectionChanged=function(e,t,n){let i=this._targetEntity;l(i)&&n.indexOf(i)!==-1?(i.definitionChanged.removeEventListener(df.prototype._onTargetEntityDefinitionChanged,this),this._targetEntity=this._targetProperty=void 0):l(i)||(i=j0(this),l(i)&&this._definitionChanged.raiseEvent(this))};var Sg=df;var Fet={packedLength:1,pack:function(e,t,n){return n=n??0,t[n]=e,t},unpack:function(e,t,n){return t=t??0,e[t]},convertPackedArrayForInterpolation:function(e,t,n,i){l(i)||(i=[]),t=t??0,n=n??e.length;let o;for(let r=0,s=n-t+1;r<s;r++){let a=e[t+r];r===0||Math.abs(o-a)<Math.PI?i[r]=a:i[r]=a-D.TWO_PI,o=a}},unpackInterpolationResult:function(e,t,n,i,o){return o=e[0],o<0?o+D.TWO_PI:o}},wd=Fet;var AAe={packedLength:1,pack:function(e,t,n){n=n??0,t[n]=e},unpack:function(e,t,n){return t=t??0,e[t]}};function pAe(e,t,n){let i,o=e.length,r=n.length,s=o+r;if(e.length=s,o!==t){let a=o-1;for(i=s-1;i>=t;i--)e[i]=e[a--]}for(i=0;i<r;i++)e[t++]=n[i]}function gAe(e,t){return e instanceof K?e:typeof e=="string"?K.fromIso8601(e):K.addSeconds(t,e,new K)}var qq=[],Kq=[];function kV(e,t,n,i,o){let r=0,s,a,c,u,f,h;for(;r<i.length;){f=gAe(i[r],e),c=Wo(t,f,K.compare);let A=0,g=0;if(c<0){for(c=~c,u=c*o,a=void 0,h=t[c];r<i.length&&(f=gAe(i[r],e),!(l(a)&&K.compare(a,f)>=0||l(h)&&K.compare(f,h)>=0));){for(qq[A++]=f,r=r+1,s=0;s<o;s++)Kq[g++]=i[r],r=r+1;a=f}A>0&&(Kq.length=g,pAe(n,u,Kq),qq.length=A,pAe(t,c,qq))}else{for(s=0;s<o;s++)r++,n[c*o+s]=i[r];r++}}}function Bd(e,t){let n=e;n===Number&&(n=AAe);let i=n.packedLength,o=n.packedInterpolationLength??i,r=0,s;if(l(t)){let a=t.length;s=new Array(a);for(let c=0;c<a;c++){let u=t[c];u===Number&&(u=AAe);let f=u.packedLength;i+=f,o+=u.packedInterpolationLength??f,s[c]=u}r=a}this._type=e,this._innerType=n,this._interpolationDegree=1,this._interpolationAlgorithm=H0,this._numberOfPoints=0,this._times=[],this._values=[],this._xTable=[],this._yTable=[],this._packedLength=i,this._packedInterpolationLength=o,this._updateTableLength=!0,this._interpolationResult=new Array(o),this._definitionChanged=new _e,this._derivativeTypes=t,this._innerDerivativeTypes=s,this._inputOrder=r,this._forwardExtrapolationType=ff.NONE,this._forwardExtrapolationDuration=0,this._backwardExtrapolationType=ff.NONE,this._backwardExtrapolationDuration=0}Object.defineProperties(Bd.prototype,{isConstant:{get:function(){return this._values.length===0}},definitionChanged:{get:function(){return this._definitionChanged}},type:{get:function(){return this._type}},derivativeTypes:{get:function(){return this._derivativeTypes}},interpolationDegree:{get:function(){return this._interpolationDegree}},interpolationAlgorithm:{get:function(){return this._interpolationAlgorithm}},forwardExtrapolationType:{get:function(){return this._forwardExtrapolationType},set:function(e){this._forwardExtrapolationType!==e&&(this._forwardExtrapolationType=e,this._definitionChanged.raiseEvent(this))}},forwardExtrapolationDuration:{get:function(){return this._forwardExtrapolationDuration},set:function(e){this._forwardExtrapolationDuration!==e&&(this._forwardExtrapolationDuration=e,this._definitionChanged.raiseEvent(this))}},backwardExtrapolationType:{get:function(){return this._backwardExtrapolationType},set:function(e){this._backwardExtrapolationType!==e&&(this._backwardExtrapolationType=e,this._definitionChanged.raiseEvent(this))}},backwardExtrapolationDuration:{get:function(){return this._backwardExtrapolationDuration},set:function(e){this._backwardExtrapolationDuration!==e&&(this._backwardExtrapolationDuration=e,this._definitionChanged.raiseEvent(this))}}});var Qet=new K;Bd.prototype.getValue=function(e,t){l(e)||(e=K.now(Qet));let n=this._times,i=n.length;if(i===0)return;let o,r=this._innerType,s=this._values,a=Wo(n,e,K.compare);if(a<0){if(a=~a,a===0){let b=n[a];if(o=this._backwardExtrapolationDuration,this._backwardExtrapolationType===ff.NONE||o!==0&&K.secondsDifference(b,e)>o)return;if(this._backwardExtrapolationType===ff.HOLD)return r.unpack(s,0,t)}if(a>=i){a=i-1;let b=n[a];if(o=this._forwardExtrapolationDuration,this._forwardExtrapolationType===ff.NONE||o!==0&&K.secondsDifference(e,b)>o)return;if(this._forwardExtrapolationType===ff.HOLD)return a=i-1,r.unpack(s,a*r.packedLength,t)}let c=this._xTable,u=this._yTable,f=this._interpolationAlgorithm,h=this._packedInterpolationLength,A=this._inputOrder;if(this._updateTableLength){this._updateTableLength=!1;let b=Math.min(f.getRequiredDataPoints(this._interpolationDegree,A),i);b!==this._numberOfPoints&&(this._numberOfPoints=b,c.length=b,u.length=b*h)}let g=this._numberOfPoints-1;if(g<1)return;let m=0,_=i-1;if(_-m+1>=g+1){let b=a-(g/2|0)-1;b<m&&(b=m);let S=b+g;S>_&&(S=_,b=S-g,b<m&&(b=m)),m=b,_=S}let C=_-m+1;for(let b=0;b<C;++b)c[b]=K.secondsDifference(n[m+b],n[_]);if(l(r.convertPackedArrayForInterpolation))r.convertPackedArrayForInterpolation(s,m,_,u);else{let b=0,S=this._packedLength,B=m*S,v=(_+1)*S;for(;B<v;)u[b]=s[B],B++,b++}let E=K.secondsDifference(e,n[_]),I;if(A===0||!l(f.interpolate))I=f.interpolateOrderZero(E,c,u,h,this._interpolationResult);else{let b=Math.floor(h/(A+1));I=f.interpolate(E,c,u,b,A,A,this._interpolationResult)}return l(r.unpackInterpolationResult)?r.unpackInterpolationResult(I,s,m,_,t):r.unpack(I,0,t)}return r.unpack(s,a*this._packedLength,t)};Bd.prototype.setInterpolationOptions=function(e){if(!l(e))return;let t=!1,n=e.interpolationAlgorithm,i=e.interpolationDegree;l(n)&&this._interpolationAlgorithm!==n&&(this._interpolationAlgorithm=n,t=!0),l(i)&&this._interpolationDegree!==i&&(this._interpolationDegree=i,t=!0),t&&(this._updateTableLength=!0,this._definitionChanged.raiseEvent(this))};Bd.prototype.addSample=function(e,t,n){let i=this._innerDerivativeTypes,o=l(i),r=this._innerType,s=[];if(s.push(e),r.pack(t,s,s.length),o){let a=i.length;for(let c=0;c<a;c++)i[c].pack(n[c],s,s.length)}kV(void 0,this._times,this._values,s,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};Bd.prototype.addSamples=function(e,t,n){let i=this._innerDerivativeTypes,o=l(i),r=this._innerType,s=e.length,a=[];for(let c=0;c<s;c++)if(a.push(e[c]),r.pack(t[c],a,a.length),o){let u=n[c],f=i.length;for(let h=0;h<f;h++)i[h].pack(u[h],a,a.length)}kV(void 0,this._times,this._values,a,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};Bd.prototype.getSample=function(e){let t=this._times,n=t.length;if(l(n))return e<0&&(e+=n),t[e]};Bd.prototype.addSamplesPackedArray=function(e,t){kV(t,this._times,this._values,e,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};Bd.prototype.removeSample=function(e){let t=Wo(this._times,e,K.compare);return t<0?!1:(_Ae(this,t,1),!0)};function _Ae(e,t,n){let i=e._packedLength;e._times.splice(t,n),e._values.splice(t*i,n*i),e._updateTableLength=!0,e._definitionChanged.raiseEvent(e)}Bd.prototype.removeSamples=function(e){let t=this._times,n=Wo(t,e.start,K.compare);n<0?n=~n:e.isStartIncluded||++n;let i=Wo(t,e.stop,K.compare);i<0?i=~i:e.isStopIncluded&&++i,_Ae(this,n,i-n)};Bd.prototype.equals=function(e){if(this===e)return!0;if(!l(e)||this._type!==e._type||this._interpolationDegree!==e._interpolationDegree||this._interpolationAlgorithm!==e._interpolationAlgorithm)return!1;let t=this._derivativeTypes,n=l(t),i=e._derivativeTypes,o=l(i);if(n!==o)return!1;let r,s;if(n){if(s=t.length,s!==i.length)return!1;for(r=0;r<s;r++)if(t[r]!==i[r])return!1}let a=this._times,c=e._times;if(s=a.length,s!==c.length)return!1;for(r=0;r<s;r++)if(!K.equals(a[r],c[r]))return!1;let u=this._values,f=e._values;for(s=u.length,r=0;r<s;r++)if(u[r]!==f[r])return!1;return!0};Bd._mergeNewSamples=kV;var hf=Bd;function Dd(e,t){t=t??0;let n;if(t>0){n=new Array(t);for(let i=0;i<t;i++)n[i]=d}this._numberOfDerivatives=t,this._property=new hf(d,n),this._definitionChanged=new _e,this._referenceFrame=e??$i.FIXED,this._property._definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this)},this)}Object.defineProperties(Dd.prototype,{isConstant:{get:function(){return this._property.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}},interpolationDegree:{get:function(){return this._property.interpolationDegree}},interpolationAlgorithm:{get:function(){return this._property.interpolationAlgorithm}},numberOfDerivatives:{get:function(){return this._numberOfDerivatives}},forwardExtrapolationType:{get:function(){return this._property.forwardExtrapolationType},set:function(e){this._property.forwardExtrapolationType=e}},forwardExtrapolationDuration:{get:function(){return this._property.forwardExtrapolationDuration},set:function(e){this._property.forwardExtrapolationDuration=e}},backwardExtrapolationType:{get:function(){return this._property.backwardExtrapolationType},set:function(e){this._property.backwardExtrapolationType=e}},backwardExtrapolationDuration:{get:function(){return this._property.backwardExtrapolationDuration},set:function(e){this._property.backwardExtrapolationDuration=e}}});var ket=new K;Dd.prototype.getValue=function(e,t){return l(e)||(e=K.now(ket)),this.getValueInReferenceFrame(e,$i.FIXED,t)};Dd.prototype.getValueInReferenceFrame=function(e,t,n){if(n=this._property.getValue(e,n),l(n))return mh.convertToReferenceFrame(e,n,this._referenceFrame,t,n)};Dd.prototype.setInterpolationOptions=function(e){this._property.setInterpolationOptions(e)};Dd.prototype.addSample=function(e,t,n){let i=this._numberOfDerivatives;this._property.addSample(e,t,n)};Dd.prototype.addSamples=function(e,t,n){this._property.addSamples(e,t,n)};Dd.prototype.addSamplesPackedArray=function(e,t){this._property.addSamplesPackedArray(e,t)};Dd.prototype.removeSample=function(e){return this._property.removeSample(e)};Dd.prototype.removeSamples=function(e){this._property.removeSamples(e)};Dd.prototype.equals=function(e){return this===e||e instanceof Dd&&j.equals(this._property,e._property)&&this._referenceFrame===e._referenceFrame};var qa=Dd;var Uet={HORIZONTAL:0,VERTICAL:1},Zh=Object.freeze(Uet);var Get=Zh.HORIZONTAL,zet=G.WHITE,Vet=G.BLACK,Het=0,Wet=1;function aS(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._orientation=void 0,this._orientationSubscription=void 0,this._evenColor=void 0,this._evenColorSubscription=void 0,this._oddColor=void 0,this._oddColorSubscription=void 0,this._offset=void 0,this._offsetSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.orientation=e.orientation,this.evenColor=e.evenColor,this.oddColor=e.oddColor,this.offset=e.offset,this.repeat=e.repeat}Object.defineProperties(aS.prototype,{isConstant:{get:function(){return j.isConstant(this._orientation)&&j.isConstant(this._evenColor)&&j.isConstant(this._oddColor)&&j.isConstant(this._offset)&&j.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},orientation:de("orientation"),evenColor:de("evenColor"),oddColor:de("oddColor"),offset:de("offset"),repeat:de("repeat")});aS.prototype.getType=function(e){return"Stripe"};var jet=new K;aS.prototype.getValue=function(e,t){return l(e)||(e=K.now(jet)),l(t)||(t={}),t.horizontal=j.getValueOrDefault(this._orientation,e,Get)===Zh.HORIZONTAL,t.evenColor=j.getValueOrClonedDefault(this._evenColor,e,zet,t.evenColor),t.oddColor=j.getValueOrClonedDefault(this._oddColor,e,Vet,t.oddColor),t.offset=j.getValueOrDefault(this._offset,e,Het),t.repeat=j.getValueOrDefault(this._repeat,e,Wet),t};aS.prototype.equals=function(e){return this===e||e instanceof aS&&j.equals(this._orientation,e._orientation)&&j.equals(this._evenColor,e._evenColor)&&j.equals(this._oddColor,e._oddColor)&&j.equals(this._offset,e._offset)&&j.equals(this._repeat,e._repeat)};var cS=aS;function Ly(e){this._definitionChanged=new _e,this._intervals=new ls,this._intervals.changedEvent.addEventListener(Ly.prototype._intervalsChanged,this),this._referenceFrame=e??$i.FIXED}Object.defineProperties(Ly.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}},referenceFrame:{get:function(){return this._referenceFrame}}});var Yet=new K;Ly.prototype.getValue=function(e,t){return l(e)||(e=K.now(Yet)),this.getValueInReferenceFrame(e,$i.FIXED,t)};Ly.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._intervals.findDataForIntervalContainingDate(e);if(l(i))return mh.convertToReferenceFrame(e,i,this._referenceFrame,t,n)};Ly.prototype.equals=function(e){return this===e||e instanceof Ly&&this._intervals.equals(e._intervals,j.equals)&&this._referenceFrame===e._referenceFrame};Ly.prototype._intervalsChanged=function(){this._definitionChanged.raiseEvent(this)};var wg=Ly;function Y0(){this._definitionChanged=new _e,this._intervals=new ls,this._intervals.changedEvent.addEventListener(Y0.prototype._intervalsChanged,this)}Object.defineProperties(Y0.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}}});var qet=new K;Y0.prototype.getValue=function(e,t){l(e)||(e=K.now(qet));let n=this._intervals.findDataForIntervalContainingDate(e);return l(n)&&typeof n.clone=="function"?n.clone(t):n};Y0.prototype.equals=function(e){return this===e||e instanceof Y0&&this._intervals.equals(e._intervals,j.equals)};Y0.prototype._intervalsChanged=function(){this._definitionChanged.raiseEvent(this)};var Bg=Y0;function lS(e,t){this._position=void 0,this._subscription=void 0,this._definitionChanged=new _e,this._normalize=t??!0,this.position=e}Object.defineProperties(lS.prototype,{isConstant:{get:function(){return j.isConstant(this._position)}},definitionChanged:{get:function(){return this._definitionChanged}},position:{get:function(){return this._position},set:function(e){let t=this._position;t!==e&&(l(t)&&this._subscription(),this._position=e,l(e)&&(this._subscription=e._definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this)},this)),this._definitionChanged.raiseEvent(this))}},normalize:{get:function(){return this._normalize},set:function(e){this._normalize!==e&&(this._normalize=e,this._definitionChanged.raiseEvent(this))}}});var Ket=new d,yAe=new d,CAe=new K,Xet=new K,Xq=1/60;lS.prototype.getValue=function(e,t){return this._getValue(e,t)};lS.prototype._getValue=function(e,t,n){l(e)||(e=K.now(Xet)),l(t)||(t=new d);let i=this._position;if(j.isConstant(i))return this._normalize?void 0:d.clone(d.ZERO,t);let o=i.getValue(e,Ket),r=i.getValue(K.addSeconds(e,Xq,CAe),yAe);if(!l(o)||!l(r)&&(r=o,o=i.getValue(K.addSeconds(e,-Xq,CAe),yAe),!l(o)))return;if(d.equals(o,r))return this._normalize?void 0:d.clone(d.ZERO,t);l(n)&&o.clone(n);let s=d.subtract(r,o,t);return this._normalize?d.normalize(s,t):d.divideByScalar(s,Xq,t)};lS.prototype.equals=function(e){return this===e||e instanceof lS&&j.equals(this._position,e._position)};var Dg=lS;function OO(e,t){this._velocityVectorProperty=new Dg(e,!0),this._subscription=void 0,this._ellipsoid=void 0,this._definitionChanged=new _e,this.ellipsoid=t??te.default;let n=this;this._velocityVectorProperty.definitionChanged.addEventListener(function(){n._definitionChanged.raiseEvent(n)})}Object.defineProperties(OO.prototype,{isConstant:{get:function(){return j.isConstant(this._velocityVectorProperty)}},definitionChanged:{get:function(){return this._definitionChanged}},position:{get:function(){return this._velocityVectorProperty.position},set:function(e){this._velocityVectorProperty.position=e}},ellipsoid:{get:function(){return this._ellipsoid},set:function(e){this._ellipsoid!==e&&(this._ellipsoid=e,this._definitionChanged.raiseEvent(this))}}});var EAe=new d,Jet=new d,IAe=new J,Zet=new K;OO.prototype.getValue=function(e,t){l(e)||(e=K.now(Zet));let n=this._velocityVectorProperty._getValue(e,Jet,EAe);if(l(n))return kt.rotationMatrixFromPositionVelocity(EAe,n,this._ellipsoid,IAe),Le.fromRotationMatrix(IAe,t)};OO.prototype.equals=function(e){return this===e||e instanceof OO&&j.equals(this._velocityVectorProperty,e._velocityVectorProperty)&&(this._ellipsoid===e._ellipsoid||this._ellipsoid.equals(e._ellipsoid))};var FO=OO;var vg={COMPLETE:0,BELOW_ELLIPSOID_HORIZON:1,ABOVE_ELLIPSOID_HORIZON:2};vg.validate=function(e){return e===vg.COMPLETE||e===vg.BELOW_ELLIPSOID_HORIZON||e===vg.ABOVE_ELLIPSOID_HORIZON};vg.toString=function(e){switch(e){case vg.COMPLETE:return"COMPLETE";case vg.BELOW_ELLIPSOID_HORIZON:return"BELOW_ELLIPSOID_HORIZON";case vg.ABOVE_ELLIPSOID_HORIZON:return"ABOVE_ELLIPSOID_HORIZON";default:throw new me("SensorVolumePortionToDisplay value is not valid and cannot be converted to a String.")}};var uS=vg;function Oy(){}Oy.packedLength=d.packedLength;Oy.unpack=d.unpack;Oy.pack=d.pack;var Jq;function QO(e,t){return t[0]==="#"&&(t=Jq+t),Sg.fromString(e,t)}function xAe(e,t,n){if(l(n.reference))return QO(t,n.reference);if(l(n.velocityReference)){let i=QO(t,n.velocityReference);switch(e){case d:case Oy:return new Dg(i,e===Oy);case Le:return new FO(i)}}throw new ce(`${JSON.stringify(n)} is not valid CZML.`)}function $et(e,t){return new _h(function(n,i){return t(e.getValue(n,i))},e.isConstant)}var io=new d,Ol=new LO,qc=new Ae,q0=new Pn,UV=new Le;function ett(e){let t=e.rgbaf;if(l(t))return t;let n=e.rgba;if(!l(n))return;let i=n.length;if(i===G.packedLength)return[G.byteToFloat(n[0]),G.byteToFloat(n[1]),G.byteToFloat(n[2]),G.byteToFloat(n[3])];t=new Array(i);for(let o=0;o<i;o+=5)t[o]=n[o],t[o+1]=G.byteToFloat(n[o+1]),t[o+2]=G.byteToFloat(n[o+2]),t[o+3]=G.byteToFloat(n[o+3]),t[o+4]=G.byteToFloat(n[o+4]);return t}function bAe(e,t){let n=e.uri??e;return l(t)?t.getDerivedResource({url:n}):we.createIfNeeded(n)}function ttt(e){let t=e.wsen;if(l(t))return t;let n=e.wsenDegrees;if(!l(n))return;let i=n.length;if(i===ae.packedLength)return[D.toRadians(n[0]),D.toRadians(n[1]),D.toRadians(n[2]),D.toRadians(n[3])];t=new Array(i);for(let o=0;o<i;o+=5)t[o]=n[o],t[o+1]=D.toRadians(n[o+1]),t[o+2]=D.toRadians(n[o+2]),t[o+3]=D.toRadians(n[o+3]),t[o+4]=D.toRadians(n[o+4]);return t}function ntt(e){let t=e.length;if(Ol.magnitude=1,t===2)return Ol.clock=e[0],Ol.cone=e[1],d.fromSpherical(Ol,io),[io.x,io.y,io.z];let n=new Array(t/3*4);for(let i=0,o=0;i<t;i+=3,o+=4)n[o]=e[i],Ol.clock=e[i+1],Ol.cone=e[i+2],d.fromSpherical(Ol,io),n[o+1]=io.x,n[o+2]=io.y,n[o+3]=io.z;return n}function itt(e){let t=e.length;if(t===3)return Ol.clock=e[0],Ol.cone=e[1],Ol.magnitude=e[2],d.fromSpherical(Ol,io),[io.x,io.y,io.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],Ol.clock=e[i+1],Ol.cone=e[i+2],Ol.magnitude=e[i+3],d.fromSpherical(Ol,io),n[i+1]=io.x,n[i+2]=io.y,n[i+3]=io.z;return n}function ott(e){let t=e.length;if(t===3)return qc.longitude=e[0],qc.latitude=e[1],qc.height=e[2],te.default.cartographicToCartesian(qc,io),[io.x,io.y,io.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],qc.longitude=e[i+1],qc.latitude=e[i+2],qc.height=e[i+3],te.default.cartographicToCartesian(qc,io),n[i+1]=io.x,n[i+2]=io.y,n[i+3]=io.z;return n}function rtt(e){let t=e.length;if(t===3)return qc.longitude=D.toRadians(e[0]),qc.latitude=D.toRadians(e[1]),qc.height=e[2],te.default.cartographicToCartesian(qc,io),[io.x,io.y,io.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],qc.longitude=D.toRadians(e[i+1]),qc.latitude=D.toRadians(e[i+2]),qc.height=e[i+3],te.default.cartographicToCartesian(qc,io),n[i+1]=io.x,n[i+2]=io.y,n[i+3]=io.z;return n}function Zq(e){let t=e.cartesian;if(l(t))return t;let n=e.cartesianVelocity;if(l(n))return n;let i=e.unitCartesian;if(l(i))return i;let o=e.unitSpherical;if(l(o))return ntt(o);let r=e.spherical;if(l(r))return itt(r);let s=e.cartographicRadians;if(l(s))return ott(s);let a=e.cartographicDegrees;if(l(a))return rtt(a);throw new ce(`${JSON.stringify(e)} is not a valid CZML interval.`)}function TAe(e,t){d.unpack(e,t,io),d.normalize(io,io),d.pack(io,e,t)}function stt(e){let t=Zq(e);if(t.length===3)return TAe(t,0),t;for(let n=1;n<t.length;n+=4)TAe(t,n);return t}function SAe(e,t){Le.unpack(e,t,UV),Le.normalize(UV,UV),Le.pack(UV,e,t)}function att(e){let t=e.unitQuaternion;if(l(t)){if(t.length===4)return SAe(t,0),t;for(let n=1;n<t.length;n+=5)SAe(t,n)}return t}function wAe(e){return typeof e=="boolean"?Boolean:typeof e=="number"?Number:typeof e=="string"?String:e.hasOwnProperty("array")?Array:e.hasOwnProperty("boolean")?Boolean:e.hasOwnProperty("boundingRectangle")?Ye:e.hasOwnProperty("cartesian2")?U:e.hasOwnProperty("cartesian")||e.hasOwnProperty("spherical")||e.hasOwnProperty("cartographicRadians")||e.hasOwnProperty("cartographicDegrees")?d:e.hasOwnProperty("unitCartesian")||e.hasOwnProperty("unitSpherical")?Oy:e.hasOwnProperty("rgba")||e.hasOwnProperty("rgbaf")?G:e.hasOwnProperty("arcType")?cn:e.hasOwnProperty("classificationType")?Jn:e.hasOwnProperty("colorBlendMode")?Qc:e.hasOwnProperty("cornerType")?ji:e.hasOwnProperty("heightReference")?Ze:e.hasOwnProperty("horizontalOrigin")?Ri:e.hasOwnProperty("date")?K:e.hasOwnProperty("labelStyle")?nr:e.hasOwnProperty("number")?Number:e.hasOwnProperty("nearFarScalar")?jt:e.hasOwnProperty("distanceDisplayCondition")?Ut:e.hasOwnProperty("object")||e.hasOwnProperty("value")?Object:e.hasOwnProperty("unitQuaternion")?Le:e.hasOwnProperty("shadowMode")?Bn:e.hasOwnProperty("string")?String:e.hasOwnProperty("stripeOrientation")?Zh:e.hasOwnProperty("wsen")||e.hasOwnProperty("wsenDegrees")?ae:e.hasOwnProperty("uri")?UO.default:e.hasOwnProperty("verticalOrigin")?zn:Object}function ctt(e,t,n){switch(e){case cn:return cn[t.arcType??t];case Array:return t.array;case Boolean:return t.boolean??t;case Ye:return t.boundingRectangle;case U:return t.cartesian2;case d:return Zq(t);case Oy:return stt(t);case G:return ett(t);case Jn:return Jn[t.classificationType??t];case Qc:return Qc[t.colorBlendMode??t];case ji:return ji[t.cornerType??t];case Ze:return Ze[t.heightReference??t];case Ri:return Ri[t.horizontalOrigin??t];case Image:return bAe(t,n);case K:return K.fromIso8601(t.date??t);case nr:return nr[t.labelStyle??t];case Number:return t.number??t;case jt:return t.nearFarScalar;case Ut:return t.distanceDisplayCondition;case Object:return t.object??t.value??t;case Le:return att(t);case wd:return t.number??t;case uS:return uS[t.portionToDisplay??t];case Bn:return Bn[t.shadowMode??t.shadows??t];case String:return t.string??t;case Zh:return Zh[t.stripeOrientation??t];case ae:return ttt(t);case UO.default:return bAe(t,n);case zn:return zn[t.verticalOrigin??t];default:throw new ce(`Unknown CzmlDataSource interval type: ${e}`)}}var ltt={HERMITE:MO,LAGRANGE:NO,LINEAR:H0};function GV(e,t){let n=e.interpolationAlgorithm,i=e.interpolationDegree;(l(n)||l(i))&&t.setInterpolationOptions({interpolationAlgorithm:ltt[n],interpolationDegree:i});let o=e.forwardExtrapolationType;l(o)&&(t.forwardExtrapolationType=ff[o]);let r=e.forwardExtrapolationDuration;l(r)&&(t.forwardExtrapolationDuration=r);let s=e.backwardExtrapolationType;l(s)&&(t.backwardExtrapolationType=ff[s]);let a=e.backwardExtrapolationDuration;l(a)&&(t.backwardExtrapolationDuration=a)}var BAe={iso8601:void 0};function vr(e){if(l(e))return BAe.iso8601=e,Pn.fromIso8601(BAe)}function $q(e){let t=je.MAXIMUM_INTERVAL.clone();return t.data=e,t}function DAe(e){let t=new Wc;return t.intervals.addInterval($q(e)),t}function vAe(e){let t=new ja(e.referenceFrame);return t.intervals.addInterval($q(e)),t}function zV(e,t,n,i,o,r,s){let a=vr(i.interval);l(o)&&(l(a)?a=Pn.intersect(a,o,q0):a=o);let c,u,f,h=!l(i.reference)&&!l(i.velocityReference),A=l(a)&&!a.equals(je.MAXIMUM_INTERVAL);if(i.delete===!0){if(!A){t[n]=void 0;return}return GAe(t[n],a)}let g=!1;if(h){if(u=ctt(e,i,r),!l(u))return;c=e.packedLength??1,f=u.length??1,g=!l(i.array)&&typeof u!="string"&&f>c&&e!==Object}let m=typeof e.unpack=="function"&&e!==wd;if(!g&&!A){h?t[n]=new ci(m?e.unpack(u,0):u):t[n]=xAe(e,s,i);return}let _=t[n],y,C=i.epoch;if(l(C)&&(y=K.fromIso8601(C)),g&&!A){_ instanceof hf||(t[n]=_=new hf(e)),_.addSamplesPackedArray(u,y),GV(i,_);return}let E;if(!g&&A){a=a.clone(),h?a.data=m?e.unpack(u,0):u:a.data=xAe(e,s,i),l(_)||(t[n]=_=h?new Bg:new Wc),h&&_ instanceof Bg?_.intervals.addInterval(a):_ instanceof Wc?(h&&(a.data=new ci(a.data)),_.intervals.addInterval(a)):(t[n]=_=DAe(_),h&&(a.data=new ci(a.data)),_.intervals.addInterval(a));return}l(_)||(t[n]=_=new Wc),_ instanceof Wc||(t[n]=_=DAe(_));let I=_.intervals;E=I.findInterval(a),(!l(E)||!(E.data instanceof hf))&&(E=a.clone(),E.data=new hf(e),I.addInterval(E)),E.data.addSamplesPackedArray(u,y),GV(i,E.data)}function GAe(e,t){if(e instanceof hf){e.removeSamples(t);return}else if(e instanceof Bg){e.intervals.removeInterval(t);return}else if(e instanceof Wc){let n=e.intervals;for(let i=0;i<n.length;++i){let o=Pn.intersect(n.get(i),t,q0);o.isEmpty||GAe(o.data,t)}n.removeInterval(t);return}}function Ce(e,t,n,i,o,r,s){if(l(i))if(Array.isArray(i))for(let a=0,c=i.length;a<c;++a)zV(e,t,n,i[a],o,r,s);else zV(e,t,n,i,o,r,s)}function PAe(e,t,n,i,o,r){let s=vr(n.interval);l(i)&&(l(s)?s=Pn.intersect(s,i,q0):s=i);let a=l(n.cartesianVelocity)?1:0,c=d.packedLength*(a+1),u,f,h=!l(n.reference),A=l(s)&&!s.equals(je.MAXIMUM_INTERVAL);if(n.delete===!0){if(!A){e[t]=void 0;return}return zAe(e[t],s)}let g,m=!1;if(h&&(l(n.referenceFrame)&&(g=$i[n.referenceFrame]),g=g??$i.FIXED,u=Zq(n),f=u.length??1,m=f>c),!m&&!A){h?e[t]=new hl(d.unpack(u),g):e[t]=QO(r,n.reference);return}let _=e[t],y,C=n.epoch;if(l(C)&&(y=K.fromIso8601(C)),m&&!A){(!(_ instanceof qa)||l(g)&&_.referenceFrame!==g)&&(e[t]=_=new qa(g,a)),_.addSamplesPackedArray(u,y),GV(n,_);return}let E;if(!m&&A){s=s.clone(),h?s.data=d.unpack(u):s.data=QO(r,n.reference),l(_)||(h?_=new wg(g):_=new ja(g),e[t]=_),h&&_ instanceof wg&&l(g)&&_.referenceFrame===g?_.intervals.addInterval(s):_ instanceof ja?(h&&(s.data=new hl(s.data,g)),_.intervals.addInterval(s)):(e[t]=_=vAe(_),h&&(s.data=new hl(s.data,g)),_.intervals.addInterval(s));return}l(_)?_ instanceof ja||(e[t]=_=vAe(_)):e[t]=_=new ja(g);let I=_.intervals;E=I.findInterval(s),(!l(E)||!(E.data instanceof qa)||l(g)&&E.data.referenceFrame!==g)&&(E=s.clone(),E.data=new qa(g,a),I.addInterval(E)),E.data.addSamplesPackedArray(u,y),GV(n,E.data)}function zAe(e,t){if(e instanceof qa){e.removeSamples(t);return}else if(e instanceof wg){e.intervals.removeInterval(t);return}else if(e instanceof ja){let n=e.intervals;for(let i=0;i<n.length;++i){let o=Pn.intersect(n.get(i),t,q0);o.isEmpty||zAe(o.data,t)}n.removeInterval(t);return}}function VAe(e,t,n,i,o,r){if(l(n))if(Array.isArray(n))for(let s=0,a=n.length;s<a;++s)PAe(e,t,n[s],i,o,r);else PAe(e,t,n,i,o,r)}function RAe(e,t,n,i){l(n.references)?VV(e,t,n.references,n.interval,i,sS,Wc):(l(n.cartesian2)?n.array=U.unpackArray(n.cartesian2):l(n.cartesian)&&(n.array=U.unpackArray(n.cartesian)),l(n.array)&&Ce(Array,e,t,n,void 0,void 0,i))}function MAe(e,t,n,i,o,r){let s=vr(n.interval);l(i)&&(l(s)?s=Pn.intersect(s,i,q0):s=i);let a=e[t],c,u;if(l(s)){a instanceof zT||(a=new zT,e[t]=a);let h=a.intervals;u=h.findInterval({start:s.start,stop:s.stop}),l(u)?c=u.data:(u=s.clone(),h.addInterval(u))}else c=a;let f;l(n.solidColor)?(c instanceof Xt||(c=new Xt),f=n.solidColor,Ce(G,c,"color",f.color,void 0,void 0,r)):l(n.grid)?(c instanceof ZT||(c=new ZT),f=n.grid,Ce(G,c,"color",f.color,void 0,o,r),Ce(Number,c,"cellAlpha",f.cellAlpha,void 0,o,r),Ce(U,c,"lineCount",f.lineCount,void 0,o,r),Ce(U,c,"lineThickness",f.lineThickness,void 0,o,r),Ce(U,c,"lineOffset",f.lineOffset,void 0,o,r)):l(n.image)?(c instanceof P_||(c=new P_),f=n.image,Ce(Image,c,"image",f.image,void 0,o,r),Ce(U,c,"repeat",f.repeat,void 0,o,r),Ce(G,c,"color",f.color,void 0,o,r),Ce(Boolean,c,"transparent",f.transparent,void 0,o,r)):l(n.stripe)?(c instanceof cS||(c=new cS),f=n.stripe,Ce(Zh,c,"orientation",f.orientation,void 0,o,r),Ce(G,c,"evenColor",f.evenColor,void 0,o,r),Ce(G,c,"oddColor",f.oddColor,void 0,o,r),Ce(Number,c,"offset",f.offset,void 0,o,r),Ce(Number,c,"repeat",f.repeat,void 0,o,r)):l(n.polylineOutline)?(c instanceof My||(c=new My),f=n.polylineOutline,Ce(G,c,"color",f.color,void 0,o,r),Ce(G,c,"outlineColor",f.outlineColor,void 0,o,r),Ce(Number,c,"outlineWidth",f.outlineWidth,void 0,o,r)):l(n.polylineGlow)?(c instanceof oS||(c=new oS),f=n.polylineGlow,Ce(G,c,"color",f.color,void 0,o,r),Ce(Number,c,"glowPower",f.glowPower,void 0,o,r),Ce(Number,c,"taperPower",f.taperPower,void 0,o,r)):l(n.polylineArrow)?(c instanceof eS||(c=new eS),f=n.polylineArrow,Ce(G,c,"color",f.color,void 0,void 0,r)):l(n.polylineDash)?(c instanceof nS||(c=new nS),f=n.polylineDash,Ce(G,c,"color",f.color,void 0,void 0,r),Ce(G,c,"gapColor",f.gapColor,void 0,void 0,r),Ce(Number,c,"dashLength",f.dashLength,void 0,o,r),Ce(Number,c,"dashPattern",f.dashPattern,void 0,o,r)):l(n.checkerboard)&&(c instanceof UT||(c=new UT),f=n.checkerboard,Ce(G,c,"evenColor",f.evenColor,void 0,o,r),Ce(G,c,"oddColor",f.oddColor,void 0,o,r),Ce(U,c,"repeat",f.repeat,void 0,o,r)),l(u)?u.data=c:e[t]=c}function mf(e,t,n,i,o,r){if(l(n))if(Array.isArray(n))for(let s=0,a=n.length;s<a;++s)MAe(e,t,n[s],i,o,r);else MAe(e,t,n,i,o,r)}function utt(e,t,n,i){let o=t.name;l(o)&&(e.name=t.name)}function ftt(e,t,n,i){let o=t.description;l(o)&&Ce(String,e,"description",o,void 0,i,n)}function dtt(e,t,n,i){let o=t.position;l(o)&&VAe(e,"position",o,void 0,i,n)}function htt(e,t,n,i){let o=t.viewFrom;l(o)&&Ce(d,e,"viewFrom",o,void 0,i,n)}function mtt(e,t,n,i){let o=t.orientation;l(o)&&Ce(Le,e,"orientation",o,void 0,i,n)}function Att(e,t,n,i){let o=t.properties;if(l(o)){l(e.properties)||(e.properties=new Al);for(let r in o)if(o.hasOwnProperty(r)){e.properties.hasProperty(r)||e.properties.addProperty(r);let s=o[r];if(Array.isArray(s))for(let a=0,c=s.length;a<c;++a)zV(wAe(s[a]),e.properties,r,s[a],void 0,i,n);else zV(wAe(s),e.properties,r,s,void 0,i,n)}}}function VV(e,t,n,i,o,r,s){let a=n.map(function(c){return QO(o,c)});if(l(i)){i=vr(i);let c=e[t];if(!(c instanceof s)){let u=new s;u.intervals.addInterval($q(c)),e[t]=c=u}i.data=new r(a),c.intervals.addInterval(i)}else e[t]=new r(a)}function NAe(e,t,n,i){let o=n.references;l(o)?VV(e,t,o,n.interval,i,sS,Wc):Ce(Array,e,t,n,void 0,void 0,i)}function LAe(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)NAe(e,t,n[o],i);else NAe(e,t,n,i)}function OAe(e,t,n,i){let o=n.references;l(o)?VV(e,t,o,n.interval,i,Tg,ja):(l(n.cartesian)?n.array=d.unpackArray(n.cartesian):l(n.cartographicRadians)?n.array=d.fromRadiansArrayHeights(n.cartographicRadians,te.default):l(n.cartographicDegrees)&&(n.array=d.fromDegreesArrayHeights(n.cartographicDegrees,te.default)),l(n.array)&&Ce(Array,e,t,n,void 0,void 0,i))}function GO(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)OAe(e,t,n[o],i);else OAe(e,t,n,i)}function ptt(e){return d.unpackArray(e)}function gtt(e){return d.fromRadiansArrayHeights(e,te.default)}function _tt(e){return d.fromDegreesArrayHeights(e,te.default)}function FAe(e,t,n,i){let o=n.references;if(l(o)){let r=o.map(function(s){let a={};return VV(a,"positions",s,n.interval,i,Tg,ja),a.positions});e[t]=new Tg(r)}else l(n.cartesian)?n.array=n.cartesian.map(ptt):l(n.cartographicRadians)?n.array=n.cartographicRadians.map(gtt):l(n.cartographicDegrees)&&(n.array=n.cartographicDegrees.map(_tt)),l(n.array)&&Ce(Array,e,t,n,void 0,void 0,i)}function ytt(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)FAe(e,t,n[o],i);else FAe(e,t,n,i)}function Ctt(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;o++)RAe(e,t,n[o],i);else RAe(e,t,n,i)}function Ett(e,t,n,i){let o=t.availability;if(!l(o))return;let r;if(Array.isArray(o))for(let s=0,a=o.length;s<a;++s)l(r)||(r=new ls),r.addInterval(vr(o[s]));else r=new ls,r.addInterval(vr(o));e.availability=r}function Itt(e,t,n,i,o){l(t)&&Ce(Oy,e,"alignedAxis",t,n,i,o)}function xtt(e,t,n,i){let o=t.billboard;if(!l(o))return;let r=vr(o.interval),s=e.billboard;l(s)||(e.billboard=s=new Tc),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Image,s,"image",o.image,r,i,n),Ce(Number,s,"scale",o.scale,r,i,n),Ce(U,s,"pixelOffset",o.pixelOffset,r,i,n),Ce(d,s,"eyeOffset",o.eyeOffset,r,i,n),Ce(Ri,s,"horizontalOrigin",o.horizontalOrigin,r,i,n),Ce(zn,s,"verticalOrigin",o.verticalOrigin,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(G,s,"color",o.color,r,i,n),Ce(wd,s,"rotation",o.rotation,r,i,n),Itt(s,o.alignedAxis,r,i,n),Ce(Boolean,s,"sizeInMeters",o.sizeInMeters,r,i,n),Ce(Number,s,"width",o.width,r,i,n),Ce(Number,s,"height",o.height,r,i,n),Ce(jt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ce(jt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ce(jt,s,"pixelOffsetScaleByDistance",o.pixelOffsetScaleByDistance,r,i,n),Ce(Ye,s,"imageSubRegion",o.imageSubRegion,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function btt(e,t,n,i){let o=t.box;if(!l(o))return;let r=vr(o.interval),s=e.box;l(s)||(e.box=s=new pE),Ce(Boolean,s,"show",o.show,r,i,n),Ce(d,s,"dimensions",o.dimensions,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),mf(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function Ttt(e,t,n,i){let o=t.corridor;if(!l(o))return;let r=vr(o.interval),s=e.corridor;l(s)||(e.corridor=s=new _E),Ce(Boolean,s,"show",o.show,r,i,n),GO(s,"positions",o.positions,n),Ce(Number,s,"width",o.width,r,i,n),Ce(Number,s,"height",o.height,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ce(Ze,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ce(ji,s,"cornerType",o.cornerType,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),mf(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n)}function Stt(e,t,n,i){let o=t.cylinder;if(!l(o))return;let r=vr(o.interval),s=e.cylinder;l(s)||(e.cylinder=s=new yE),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Number,s,"length",o.length,r,i,n),Ce(Number,s,"topRadius",o.topRadius,r,i,n),Ce(Number,s,"bottomRadius",o.bottomRadius,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),mf(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Number,s,"numberOfVerticalLines",o.numberOfVerticalLines,r,i,n),Ce(Number,s,"slices",o.slices,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function wtt(e,t){let n=e.version;if(l(n)&&typeof n=="string"){let r=n.split(".");if(r.length===2){if(r[0]!=="1")throw new ce("Cesium only supports CZML version 1.");t._version=n}}if(!l(t._version))throw new ce("CZML version information invalid. It is expected to be a property on the document object in the <Major>.<Minor> version format.");let i=t._documentPacket;l(e.name)&&(i.name=e.name);let o=e.clock;if(l(o)){let r=i.clock;l(r)?(r.interval=o.interval??r.interval,r.currentTime=o.currentTime??r.currentTime,r.range=o.range??r.range,r.step=o.step??r.step,r.multiplier=o.multiplier??r.multiplier):i.clock={interval:o.interval,currentTime:o.currentTime,range:o.range,step:o.step,multiplier:o.multiplier}}}function Btt(e,t,n,i){let o=t.ellipse;if(!l(o))return;let r=vr(o.interval),s=e.ellipse;l(s)||(e.ellipse=s=new CE),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Number,s,"semiMajorAxis",o.semiMajorAxis,r,i,n),Ce(Number,s,"semiMinorAxis",o.semiMinorAxis,r,i,n),Ce(Number,s,"height",o.height,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ce(Ze,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ce(wd,s,"rotation",o.rotation,r,i,n),Ce(wd,s,"stRotation",o.stRotation,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),mf(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Number,s,"numberOfVerticalLines",o.numberOfVerticalLines,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n)}function Dtt(e,t,n,i){let o=t.ellipsoid;if(!l(o))return;let r=vr(o.interval),s=e.ellipsoid;l(s)||(e.ellipsoid=s=new EE),Ce(Boolean,s,"show",o.show,r,i,n),Ce(d,s,"radii",o.radii,r,i,n),Ce(d,s,"innerRadii",o.innerRadii,r,i,n),Ce(Number,s,"minimumClock",o.minimumClock,r,i,n),Ce(Number,s,"maximumClock",o.maximumClock,r,i,n),Ce(Number,s,"minimumCone",o.minimumCone,r,i,n),Ce(Number,s,"maximumCone",o.maximumCone,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),mf(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Number,s,"stackPartitions",o.stackPartitions,r,i,n),Ce(Number,s,"slicePartitions",o.slicePartitions,r,i,n),Ce(Number,s,"subdivisions",o.subdivisions,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function vtt(e,t,n,i){let o=t.label;if(!l(o))return;let r=vr(o.interval),s=e.label;l(s)||(e.label=s=new Ah),Ce(Boolean,s,"show",o.show,r,i,n),Ce(String,s,"text",o.text,r,i,n),Ce(String,s,"font",o.font,r,i,n),Ce(nr,s,"style",o.style,r,i,n),Ce(Number,s,"scale",o.scale,r,i,n),Ce(Boolean,s,"showBackground",o.showBackground,r,i,n),Ce(G,s,"backgroundColor",o.backgroundColor,r,i,n),Ce(U,s,"backgroundPadding",o.backgroundPadding,r,i,n),Ce(U,s,"pixelOffset",o.pixelOffset,r,i,n),Ce(d,s,"eyeOffset",o.eyeOffset,r,i,n),Ce(Ri,s,"horizontalOrigin",o.horizontalOrigin,r,i,n),Ce(zn,s,"verticalOrigin",o.verticalOrigin,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(G,s,"fillColor",o.fillColor,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(jt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ce(jt,s,"pixelOffsetScaleByDistance",o.pixelOffsetScaleByDistance,r,i,n),Ce(jt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function Ptt(e,t,n,i){let o=t.model;if(!l(o))return;let r=vr(o.interval),s=e.model;l(s)||(e.model=s=new Ap),Ce(Boolean,s,"show",o.show,r,i,n),Ce(UO.default,s,"uri",o.gltf,r,i,n),Ce(Number,s,"scale",o.scale,r,i,n),Ce(Number,s,"minimumPixelSize",o.minimumPixelSize,r,i,n),Ce(Number,s,"maximumScale",o.maximumScale,r,i,n),Ce(Boolean,s,"incrementallyLoadTextures",o.incrementallyLoadTextures,r,i,n),Ce(Boolean,s,"runAnimations",o.runAnimations,r,i,n),Ce(Boolean,s,"clampAnimations",o.clampAnimations,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(G,s,"silhouetteColor",o.silhouetteColor,r,i,n),Ce(Number,s,"silhouetteSize",o.silhouetteSize,r,i,n),Ce(G,s,"color",o.color,r,i,n),Ce(Qc,s,"colorBlendMode",o.colorBlendMode,r,i,n),Ce(Number,s,"colorBlendAmount",o.colorBlendAmount,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n);let a,c,u=o.nodeTransformations;if(l(u))if(Array.isArray(u))for(a=0,c=u.length;a<c;++a)QAe(s,u[a],r,i,n);else QAe(s,u,r,i,n);let f=o.articulations;if(l(f))if(Array.isArray(f))for(a=0,c=f.length;a<c;++a)kAe(s,f[a],r,i,n);else kAe(s,f,r,i,n)}function QAe(e,t,n,i,o){let r=vr(t.interval);l(n)&&(l(r)?r=Pn.intersect(r,n,q0):r=n);let s=e.nodeTransformations,a=Object.keys(t);for(let c=0,u=a.length;c<u;++c){let f=a[c];if(f==="interval")continue;let h=t[f];if(!l(h))continue;l(s)||(e.nodeTransformations=s=new Al),s.hasProperty(f)||s.addProperty(f);let A=s[f];l(A)||(s[f]=A=new IE),Ce(d,A,"translation",h.translation,r,i,o),Ce(Le,A,"rotation",h.rotation,r,i,o),Ce(d,A,"scale",h.scale,r,i,o)}}function kAe(e,t,n,i,o){let r=vr(t.interval);l(n)&&(l(r)?r=Pn.intersect(r,n,q0):r=n);let s=e.articulations,a=Object.keys(t);for(let c=0,u=a.length;c<u;++c){let f=a[c];if(f==="interval")continue;let h=t[f];l(h)&&(l(s)||(e.articulations=s=new Al),s.hasProperty(f)||s.addProperty(f),Ce(Number,s,f,h,r,i,o))}}function Rtt(e,t,n,i){let o=t.path;if(!l(o))return;let r=vr(o.interval),s=e.path;l(s)||(e.path=s=new pp),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Number,s,"leadTime",o.leadTime,r,i,n),Ce(Number,s,"trailTime",o.trailTime,r,i,n),Ce(Number,s,"width",o.width,r,i,n),Ce(Number,s,"resolution",o.resolution,r,i,n),mf(s,"material",o.material,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function Mtt(e,t,n,i){let o=t.point;if(!l(o))return;let r=vr(o.interval),s=e.point;l(s)||(e.point=s=new bE),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Number,s,"pixelSize",o.pixelSize,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(G,s,"color",o.color,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(jt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ce(jt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function kO(e){this.polygon=e,this._definitionChanged=new _e}Object.defineProperties(kO.prototype,{isConstant:{get:function(){let e=this.polygon._positions,t=this.polygon._holes;return(!l(e)||e.isConstant)&&(!l(t)||t.isConstant)}},definitionChanged:{get:function(){return this._definitionChanged}}});kO.prototype.getValue=function(e,t){let n;l(this.polygon._positions)&&(n=this.polygon._positions.getValue(e));let i;return l(this.polygon._holes)&&(i=this.polygon._holes.getValue(e),l(i)&&(i=i.map(function(o){return new fc(o)}))),l(t)?(t.positions=n,t.holes=i,t):new fc(n,i)};kO.prototype.equals=function(e){return this===e||e instanceof kO&&j.equals(this.polygon._positions,e.polygon._positions)&&j.equals(this.polygon._holes,e.polygon._holes)};function Ntt(e,t,n,i){let o=t.polygon;if(!l(o))return;let r=vr(o.interval),s=e.polygon;l(s)||(e.polygon=s=new ph),Ce(Boolean,s,"show",o.show,r,i,n),GO(s,"_positions",o.positions,n),ytt(s,"_holes",o.holes,n),(l(s._positions)||l(s._holes))&&(s.hierarchy=new kO(s)),Ce(Number,s,"height",o.height,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ce(Ze,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ce(wd,s,"stRotation",o.stRotation,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),mf(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Boolean,s,"perPositionHeight",o.perPositionHeight,r,i,n),Ce(Boolean,s,"closeTop",o.closeTop,r,i,n),Ce(Boolean,s,"closeBottom",o.closeBottom,r,i,n),Ce(cn,s,"arcType",o.arcType,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n)}function Ltt(e){return e?cn.GEODESIC:cn.NONE}function Ott(e,t,n,i){let o=t.polyline;if(!l(o))return;let r=vr(o.interval),s=e.polyline;if(l(s)||(e.polyline=s=new Mc),Ce(Boolean,s,"show",o.show,r,i,n),GO(s,"positions",o.positions,n),Ce(Number,s,"width",o.width,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),mf(s,"material",o.material,r,i,n),mf(s,"depthFailMaterial",o.depthFailMaterial,r,i,n),Ce(cn,s,"arcType",o.arcType,r,i,n),Ce(Boolean,s,"clampToGround",o.clampToGround,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n),l(o.followSurface)&&!l(o.arcType)){let a={};Ce(Boolean,a,"followSurface",o.followSurface,r,i,n),s.arcType=$et(a.followSurface,Ltt)}}function Ftt(e,t,n,i){let o=t.polylineVolume;if(!l(o))return;let r=vr(o.interval),s=e.polylineVolume;l(s)||(e.polylineVolume=s=new TE),GO(s,"positions",o.positions,n),Ctt(s,"shape",o.shape,n),Ce(Boolean,s,"show",o.show,r,i,n),Ce(ji,s,"cornerType",o.cornerType,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),mf(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function Qtt(e,t,n,i){let o=t.rectangle;if(!l(o))return;let r=vr(o.interval),s=e.rectangle;l(s)||(e.rectangle=s=new gh),Ce(Boolean,s,"show",o.show,r,i,n),Ce(ae,s,"coordinates",o.coordinates,r,i,n),Ce(Number,s,"height",o.height,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ce(Ze,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ce(wd,s,"rotation",o.rotation,r,i,n),Ce(wd,s,"stRotation",o.stRotation,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),mf(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n)}function ktt(e,t,n,i){let o=t.tileset;if(!l(o))return;let r=vr(o.interval),s=e.tileset;l(s)||(e.tileset=s=new xE),Ce(Boolean,s,"show",o.show,r,i,n),Ce(UO.default,s,"uri",o.uri,r,i,n),Ce(Number,s,"maximumScreenSpaceError",o.maximumScreenSpaceError,r,i,n)}function Utt(e,t,n,i){let o=t.wall;if(!l(o))return;let r=vr(o.interval),s=e.wall;l(s)||(e.wall=s=new gp),Ce(Boolean,s,"show",o.show,r,i,n),GO(s,"positions",o.positions,n),LAe(s,"minimumHeights",o.minimumHeights,n),LAe(s,"maximumHeights",o.maximumHeights,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),mf(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Bn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function UAe(e,t,n,i,o){let r=e.id;if(l(r)||(r=Xn()),Jq=r,!l(o._version)&&r!=="document")throw new ce("The first CZML packet is required to be the document object.");if(e.delete===!0)t.removeById(r);else if(r==="document")wtt(e,o);else{let s=t.getOrCreateEntity(r),a=e.parent;l(a)&&(s.parent=t.getOrCreateEntity(a));for(let c=n.length-1;c>-1;c--)n[c](s,e,t,i)}Jq=void 0}function Gtt(e){let t,n=e._documentPacket.clock;if(!l(n)){if(!l(e._clock)){let o=e._entityCollection.computeAvailability();if(!o.start.equals(je.MINIMUM_VALUE)){let r=o.start,s=o.stop,a=K.secondsDifference(s,r),c=Math.round(a/120);return t=new Jh,t.startTime=K.clone(r),t.stopTime=K.clone(s),t.clockRange=fs.LOOP_STOP,t.multiplier=c,t.currentTime=K.clone(r),t.clockStep=wo.SYSTEM_CLOCK_MULTIPLIER,e._clock=t,!0}}return!1}l(e._clock)?t=e._clock.clone():(t=new Jh,t.startTime=je.MINIMUM_VALUE.clone(),t.stopTime=je.MAXIMUM_VALUE.clone(),t.currentTime=je.MINIMUM_VALUE.clone(),t.clockRange=fs.LOOP_STOP,t.clockStep=wo.SYSTEM_CLOCK_MULTIPLIER,t.multiplier=1);let i=vr(n.interval);return l(i)&&(t.startTime=i.start,t.stopTime=i.stop),l(n.currentTime)&&(t.currentTime=K.fromIso8601(n.currentTime)),l(n.range)&&(t.clockRange=fs[n.range]??fs.LOOP_STOP),l(n.step)&&(t.clockStep=wo[n.step]??wo.SYSTEM_CLOCK_MULTIPLIER),l(n.multiplier)&&(t.multiplier=n.multiplier),t.equals(e._clock)?!1:(e._clock=t.clone(e._clock),!0)}function HAe(e,t,n,i){n=n??V.EMPTY_OBJECT;let o=t,r=n.sourceUri,s=n.credit;if(typeof s=="string"&&(s=new Bt(s)),e._credit=s,typeof t=="string"||t instanceof we){t=we.createIfNeeded(t),o=t.fetchJson(),r=r??t.clone();let a=e._resourceCredits,c=t.credits;if(l(c)){let u=c.length;for(let f=0;f<u;f++)a.push(c[f])}}return r=we.createIfNeeded(r),us.setLoading(e,!0),Promise.resolve(o).then(function(a){return ztt(e,a,r,i)}).catch(function(a){return us.setLoading(e,!1),e._error.raiseEvent(e,a),console.log(a),Promise.reject(a)})}function ztt(e,t,n,i){us.setLoading(e,!0);let o=e._entityCollection;i&&(e._version=void 0,e._documentPacket=new WAe,o.removeAll()),Us._processCzml(t,o,n,void 0,e);let r=Gtt(e),s=e._documentPacket;return l(s.name)&&e._name!==s.name?(e._name=s.name,r=!0):!l(e._name)&&l(n)&&(e._name=xg(n.getUrlComponent()),r=!0),us.setLoading(e,!1),r&&e._changed.raiseEvent(e),e}function WAe(){this.name=void 0,this.clock=void 0}function Us(e){this._name=e,this._changed=new _e,this._error=new _e,this._isLoading=!1,this._loading=new _e,this._clock=void 0,this._documentPacket=new WAe,this._version=void 0,this._entityCollection=new Ea(this),this._entityCluster=new lf,this._credit=void 0,this._resourceCredits=[]}Us.load=function(e,t){return new Us().load(e,t)};Object.defineProperties(Us.prototype,{name:{get:function(){return this._name}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}}});Us.updaters=[xtt,btt,Ttt,Stt,Btt,Dtt,vtt,Ptt,utt,ftt,Rtt,Mtt,Ntt,Ott,Ftt,Att,Qtt,dtt,ktt,htt,Utt,mtt,Ett];Us.registerUpdater=function(e){Us.updaters.includes(e)||Us.updaters.push(e)};Us.unregisterUpdater=function(e){if(Us.updaters.includes(e)){let t=Us.updaters.indexOf(e);Us.updaters.splice(t,1)}};Us.prototype.process=function(e,t){return HAe(this,e,t,!1)};Us.prototype.load=function(e,t){return HAe(this,e,t,!0)};Us.prototype.update=function(e){return!0};Us.processPacketData=Ce;Us.processPositionPacketData=VAe;Us.processMaterialPacketData=mf;Us._processCzml=function(e,t,n,i,o){if(i=i??Us.updaters,Array.isArray(e))for(let r=0,s=e.length;r<s;++r)UAe(e[r],t,i,n,o);else UAe(e,t,i,n,o)};var zO=Us;function Fl(){this._dataSources=[],this._dataSourceAdded=new _e,this._dataSourceRemoved=new _e,this._dataSourceMoved=new _e}Object.defineProperties(Fl.prototype,{length:{get:function(){return this._dataSources.length}},dataSourceAdded:{get:function(){return this._dataSourceAdded}},dataSourceRemoved:{get:function(){return this._dataSourceRemoved}},dataSourceMoved:{get:function(){return this._dataSourceMoved}}});Fl.prototype.add=function(e){let t=this,n=this._dataSources;return Promise.resolve(e).then(function(i){return n===t._dataSources&&(t._dataSources.push(i),t._dataSourceAdded.raiseEvent(t,i)),i})};Fl.prototype.remove=function(e,t){t=t??!1;let n=this._dataSources.indexOf(e);return n!==-1?(this._dataSources.splice(n,1),this._dataSourceRemoved.raiseEvent(this,e),t&&typeof e.destroy=="function"&&e.destroy(),!0):!1};Fl.prototype.removeAll=function(e){e=e??!1;let t=this._dataSources;for(let n=0,i=t.length;n<i;++n){let o=t[n];this._dataSourceRemoved.raiseEvent(this,o),e&&typeof o.destroy=="function"&&o.destroy()}this._dataSources=[]};Fl.prototype.contains=function(e){return this.indexOf(e)!==-1};Fl.prototype.indexOf=function(e){return this._dataSources.indexOf(e)};Fl.prototype.get=function(e){return this._dataSources[e]};Fl.prototype.getByName=function(e){return this._dataSources.filter(function(t){return t.name===e})};function HV(e,t){return e.indexOf(t)}function jAe(e,t,n){let i=e._dataSources,o=i.length-1;if(t=D.clamp(t,0,o),n=D.clamp(n,0,o),t===n)return;let r=i[t];i[t]=i[n],i[n]=r,e.dataSourceMoved.raiseEvent(r,n,t)}Fl.prototype.raise=function(e){let t=HV(this._dataSources,e);jAe(this,t,t+1)};Fl.prototype.lower=function(e){let t=HV(this._dataSources,e);jAe(this,t,t-1)};Fl.prototype.raiseToTop=function(e){let t=HV(this._dataSources,e);t!==this._dataSources.length-1&&(this._dataSources.splice(t,1),this._dataSources.push(e),this.dataSourceMoved.raiseEvent(e,this._dataSources.length-1,t))};Fl.prototype.lowerToBottom=function(e){let t=HV(this._dataSources,e);t!==0&&(this._dataSources.splice(t,1),this._dataSources.splice(0,0,e),this.dataSourceMoved.raiseEvent(e,0,t))};Fl.prototype.isDestroyed=function(){return!1};Fl.prototype.destroy=function(){return this.removeAll(!0),ue(this)};var VO=Fl;function Ka(e){e=e??V.EMPTY_OBJECT,this._primitives=[],this._guid=Xn(),this._primitiveAdded=new _e,this._primitiveRemoved=new _e,this._zIndex=void 0,this.show=e.show??!0,this.destroyPrimitives=e.destroyPrimitives??!0,this._countReferences=e.countReferences??!1}Object.defineProperties(Ka.prototype,{length:{get:function(){return this._primitives.length}},primitiveAdded:{get:function(){return this._primitiveAdded}},primitiveRemoved:{get:function(){return this._primitiveRemoved}}});Ka.prototype.add=function(e,t){let n=l(t),i=e._external=e._external||{},o=i._composites=i._composites||{};return o[this._guid]={collection:this},n?this._primitives.splice(t,0,e):this._primitives.push(e),this._countReferences&&(l(i._referenceCount)?++i._referenceCount:i._referenceCount=1),this._primitiveAdded.raiseEvent(e),e};Ka.prototype.remove=function(e){if(this.contains(e)){let t=this._primitives.indexOf(e);if(t!==-1)return this._primitives.splice(t,1),delete e._external._composites[this._guid],this._countReferences&&e._external._referenceCount--,this.destroyPrimitives&&(!this._countReferences||e._external._referenceCount<=0)&&e.destroy(),this._primitiveRemoved.raiseEvent(e),!0}return!1};Ka.prototype.removeAndDestroy=function(e){let t=this.remove(e);return t&&!this.destroyPrimitives&&e.destroy(),t};Ka.prototype.removeAll=function(){let e=this._primitives,t=e.length;for(let n=0;n<t;++n){let i=e[n];delete i._external._composites[this._guid],this._countReferences&&i._external._referenceCount--,this.destroyPrimitives&&(!this._countReferences||i._external._referenceCount<=0)&&i.destroy(),this._primitiveRemoved.raiseEvent(i)}this._primitives=[]};Ka.prototype.contains=function(e){return!!(l(e)&&e._external&&e._external._composites&&e._external._composites[this._guid])};function WV(e,t){return e._primitives.indexOf(t)}Ka.prototype.raise=function(e){if(l(e)){let t=WV(this,e),n=this._primitives;if(t!==n.length-1){let i=n[t];n[t]=n[t+1],n[t+1]=i}}};Ka.prototype.raiseToTop=function(e){if(l(e)){let t=WV(this,e),n=this._primitives;t!==n.length-1&&(n.splice(t,1),n.push(e))}};Ka.prototype.lower=function(e){if(l(e)){let t=WV(this,e),n=this._primitives;if(t!==0){let i=n[t];n[t]=n[t-1],n[t-1]=i}}};Ka.prototype.lowerToBottom=function(e){if(l(e)){let t=WV(this,e),n=this._primitives;t!==0&&(n.splice(t,1),n.unshift(e))}};Ka.prototype.get=function(e){return this._primitives[e]};Ka.prototype.update=function(e){if(!this.show)return;let t=this._primitives;for(let n=0;n<t.length;++n)t[n].update(e)};Ka.prototype.prePassesUpdate=function(e){let t=this._primitives;for(let n=0;n<t.length;++n){let i=t[n];l(i.prePassesUpdate)&&i.prePassesUpdate(e)}};Ka.prototype.updateForPass=function(e,t){let n=this._primitives;for(let i=0;i<n.length;++i){let o=n[i];l(o.updateForPass)&&o.updateForPass(e,t)}};Ka.prototype.postPassesUpdate=function(e){let t=this._primitives;for(let n=0;n<t.length;++n){let i=t[n];l(i.postPassesUpdate)&&i.postPassesUpdate(e)}};Ka.prototype.isDestroyed=function(){return!1};Ka.prototype.destroy=function(){return this.removeAll(),ue(this)};var Ql=Ka;function uA(){this._length=0,this._collections={},this._collectionsArray=[],this.show=!0}Object.defineProperties(uA.prototype,{length:{get:function(){return this._length}}});uA.prototype.add=function(e,t){t=t??0;let n=this._collections[t];if(!l(n)){n=new Ql({destroyPrimitives:!1}),n._zIndex=t,this._collections[t]=n;let i=this._collectionsArray,o=0;for(;o<i.length&&i[o]._zIndex<t;)o++;i.splice(o,0,n)}return n.add(e),this._length++,e._zIndex=t,e};uA.prototype.set=function(e,t){return t===e._zIndex||(this.remove(e,!0),this.add(e,t)),e};uA.prototype.remove=function(e,t){if(this.contains(e)){let n=e._zIndex,i=this._collections[n],o;return t?o=i.remove(e):o=i.removeAndDestroy(e),o&&this._length--,i.length===0&&(this._collectionsArray.splice(this._collectionsArray.indexOf(i),1),this._collections[n]=void 0,i.destroy()),o}return!1};uA.prototype.removeAll=function(){let e=this._collectionsArray;for(let t=0;t<e.length;t++){let n=e[t];n.destroyPrimitives=!0,n.destroy()}this._collections={},this._collectionsArray=[],this._length=0};uA.prototype.contains=function(e){if(!l(e))return!1;let t=this._collections[e._zIndex];return l(t)&&t.contains(e)};uA.prototype.update=function(e){if(!this.show)return;let t=this._collectionsArray;for(let n=0;n<t.length;n++)t[n].update(e)};uA.prototype.isDestroyed=function(){return!1};uA.prototype.destroy=function(){return this.removeAll(),ue(this)};var HO=uA;function fS(e,t){this._primitives=e,this._orderedGroundPrimitives=t,this._dynamicUpdaters=new vt}fS.prototype.add=function(e,t){this._dynamicUpdaters.set(t.id,t.createDynamicUpdater(this._primitives,this._orderedGroundPrimitives))};fS.prototype.remove=function(e){let t=e.id,n=this._dynamicUpdaters.get(t);l(n)&&(this._dynamicUpdaters.remove(t),n.destroy())};fS.prototype.update=function(e){let t=this._dynamicUpdaters.values;for(let n=0,i=t.length;n<i;n++)t[n].update(e);return!0};fS.prototype.removeAllPrimitives=function(){let e=this._dynamicUpdaters.values;for(let t=0,n=e.length;t<n;t++)e[t].destroy();this._dynamicUpdaters.removeAll()};fS.prototype.getBoundingSphere=function(e,t){return e=this._dynamicUpdaters.get(e.id),l(e)&&l(e.getBoundingSphere)?e.getBoundingSphere(t):mt.FAILED};var K0=fS;var tK={},jV=new d,YAe=new d,qAe=new Le,KAe=new J;function dS(e,t,n,i,o,r,s,a,c,u){let f=e+t;d.multiplyByScalar(i,Math.cos(f),jV),d.multiplyByScalar(n,Math.sin(f),YAe),d.add(jV,YAe,jV);let h=Math.cos(e);h=h*h;let A=Math.sin(e);A=A*A;let m=r/Math.sqrt(s*h+o*A)/a;return Le.fromAxisAngle(jV,m,qAe),J.fromQuaternion(qAe,KAe),J.multiplyByVector(KAe,c,u),d.normalize(u,u),d.multiplyByScalar(u,a,u),u}var XAe=new d,JAe=new d,eK=new d,Vtt=new d;tK.raisePositionsToHeight=function(e,t,n){let i=t.ellipsoid,o=t.height,r=t.extrudedHeight,s=n?e.length/3*2:e.length/3,a=new Float64Array(s*3),c=e.length,u=n?c:0;for(let f=0;f<c;f+=3){let h=f+1,A=f+2,g=d.fromArray(e,f,XAe);i.scaleToGeodeticSurface(g,g);let m=d.clone(g,JAe),_=i.geodeticSurfaceNormal(g,Vtt),y=d.multiplyByScalar(_,o,eK);d.add(g,y,g),n&&(d.multiplyByScalar(_,r,y),d.add(m,y,m),a[f+u]=m.x,a[h+u]=m.y,a[A+u]=m.z),a[f]=g.x,a[h]=g.y,a[A]=g.z}return a};var Htt=new d,Wtt=new d,jtt=new d;tK.computeEllipsePositions=function(e,t,n){let i=e.semiMinorAxis,o=e.semiMajorAxis,r=e.rotation,s=e.center,a=e.granularity*8,c=i*i,u=o*o,f=o*i,h=d.magnitude(s),A=d.normalize(s,Htt),g=d.cross(d.UNIT_Z,s,Wtt);g=d.normalize(g,g);let m=d.cross(A,g,jtt),_=1+Math.ceil(D.PI_OVER_TWO/a),y=D.PI_OVER_TWO/(_-1),C=D.PI_OVER_TWO-_*y;C<0&&(_-=Math.ceil(Math.abs(C)/y));let E=2*(_*(_+2)),I=t?new Array(E*3):void 0,b=0,S=XAe,B=JAe,v=_*4*3,P=v-1,M=0,L=n?new Array(v):void 0,p,x,T,w,R;for(C=D.PI_OVER_TWO,S=dS(C,r,m,g,c,f,u,h,A,S),t&&(I[b++]=S.x,I[b++]=S.y,I[b++]=S.z),n&&(L[P--]=S.z,L[P--]=S.y,L[P--]=S.x),C=D.PI_OVER_TWO-y,p=1;p<_+1;++p){if(S=dS(C,r,m,g,c,f,u,h,A,S),B=dS(Math.PI-C,r,m,g,c,f,u,h,A,B),t){for(I[b++]=S.x,I[b++]=S.y,I[b++]=S.z,T=2*p+2,x=1;x<T-1;++x)w=x/(T-1),R=d.lerp(S,B,w,eK),I[b++]=R.x,I[b++]=R.y,I[b++]=R.z;I[b++]=B.x,I[b++]=B.y,I[b++]=B.z}n&&(L[P--]=S.z,L[P--]=S.y,L[P--]=S.x,L[M++]=B.x,L[M++]=B.y,L[M++]=B.z),C=D.PI_OVER_TWO-(p+1)*y}for(p=_;p>1;--p){if(C=D.PI_OVER_TWO-(p-1)*y,S=dS(-C,r,m,g,c,f,u,h,A,S),B=dS(C+Math.PI,r,m,g,c,f,u,h,A,B),t){for(I[b++]=S.x,I[b++]=S.y,I[b++]=S.z,T=2*(p-1)+2,x=1;x<T-1;++x)w=x/(T-1),R=d.lerp(S,B,w,eK),I[b++]=R.x,I[b++]=R.y,I[b++]=R.z;I[b++]=B.x,I[b++]=B.y,I[b++]=B.z}n&&(L[P--]=S.z,L[P--]=S.y,L[P--]=S.x,L[M++]=B.x,L[M++]=B.y,L[M++]=B.z)}C=D.PI_OVER_TWO,S=dS(-C,r,m,g,c,f,u,h,A,S);let O={};return t&&(I[b++]=S.x,I[b++]=S.y,I[b++]=S.z,O.positions=I,O.numPts=_),n&&(L[P--]=S.z,L[P--]=S.y,L[P--]=S.x,O.outerPositions=L),O};var Cu=tK;var hS=new d,nK=new d,iK=new d,ZAe=new d,ta=new U,$Ae=new J,Ytt=new J,oK=new Le,epe=new d,tpe=new d,npe=new d,KV=new Ae,ipe=new d,ope=new U,rpe=new U;function spe(e,t,n){let i=t.vertexFormat,o=t.center,r=t.semiMajorAxis,s=t.semiMinorAxis,a=t.ellipsoid,c=t.stRotation,u=n?e.length/3*2:e.length/3,f=t.shadowVolume,h=i.st?new Float32Array(u*2):void 0,A=i.normal?new Float32Array(u*3):void 0,g=i.tangent?new Float32Array(u*3):void 0,m=i.bitangent?new Float32Array(u*3):void 0,_=f?new Float32Array(u*3):void 0,y=0,C=epe,E=tpe,I=npe,b=new Ui(a),S=b.project(a.cartesianToCartographic(o,KV),ipe),B=a.scaleToGeodeticSurface(o,hS);a.geodeticSurfaceNormal(B,B);let v=$Ae,P=Ytt;if(c!==0){let R=Le.fromAxisAngle(B,c,oK);v=J.fromQuaternion(R,v),R=Le.fromAxisAngle(B,-c,oK),P=J.fromQuaternion(R,P)}else v=J.clone(J.IDENTITY,v),P=J.clone(J.IDENTITY,P);let M=U.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,ope),L=U.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,rpe),p=e.length,x=n?p:0,T=x/3*2;for(let R=0;R<p;R+=3){let O=R+1,k=R+2,Q=d.fromArray(e,R,hS);if(i.st){let z=J.multiplyByVector(v,Q,nK),F=b.project(a.cartesianToCartographic(z,KV),iK);d.subtract(F,S,F),ta.x=(F.x+r)/(2*r),ta.y=(F.y+s)/(2*s),M.x=Math.min(ta.x,M.x),M.y=Math.min(ta.y,M.y),L.x=Math.max(ta.x,L.x),L.y=Math.max(ta.y,L.y),n&&(h[y+T]=ta.x,h[y+1+T]=ta.y),h[y++]=ta.x,h[y++]=ta.y}(i.normal||i.tangent||i.bitangent||f)&&(C=a.geodeticSurfaceNormal(Q,C),f&&(_[R+x]=-C.x,_[O+x]=-C.y,_[k+x]=-C.z),(i.normal||i.tangent||i.bitangent)&&((i.tangent||i.bitangent)&&(E=d.normalize(d.cross(d.UNIT_Z,C,E),E),J.multiplyByVector(P,E,E)),i.normal&&(A[R]=C.x,A[O]=C.y,A[k]=C.z,n&&(A[R+x]=-C.x,A[O+x]=-C.y,A[k+x]=-C.z)),i.tangent&&(g[R]=E.x,g[O]=E.y,g[k]=E.z,n&&(g[R+x]=-E.x,g[O+x]=-E.y,g[k+x]=-E.z)),i.bitangent&&(I=d.normalize(d.cross(C,E,I),I),m[R]=I.x,m[O]=I.y,m[k]=I.z,n&&(m[R+x]=I.x,m[O+x]=I.y,m[k+x]=I.z))))}if(i.st){p=h.length;for(let R=0;R<p;R+=2)h[R]=(h[R]-M.x)/(L.x-M.x),h[R+1]=(h[R+1]-M.y)/(L.y-M.y)}let w=new yn;if(i.position){let R=Cu.raisePositionsToHeight(e,t,n);w.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:R})}if(i.st&&(w.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:h})),i.normal&&(w.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:A})),i.tangent&&(w.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g})),i.bitangent&&(w.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m})),f&&(w.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:_})),n&&l(t.offsetAttribute)){let R=new Uint8Array(u);if(t.offsetAttribute===hn.TOP)R=R.fill(1,0,u/2);else{let O=t.offsetAttribute===hn.NONE?0:1;R=R.fill(O)}w.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:R})}return w}function ape(e){let t=new Array(12*(e*(e+1))-6),n=0,i,o,r,s,a;for(i=0,r=1,s=0;s<3;s++)t[n++]=r++,t[n++]=i,t[n++]=r;for(s=2;s<e+1;++s){for(r=s*(s+1)-1,i=(s-1)*s-1,t[n++]=r++,t[n++]=i,t[n++]=r,o=2*s,a=0;a<o-1;++a)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;t[n++]=r++,t[n++]=i,t[n++]=r}for(o=e*2,++r,++i,s=0;s<o-1;++s)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;for(t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i++,t[n++]=i,++i,s=e-1;s>1;--s){for(t[n++]=i++,t[n++]=i,t[n++]=r,o=2*s,a=0;a<o-1;++a)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;t[n++]=i++,t[n++]=i++,t[n++]=r++}for(s=0;s<3;s++)t[n++]=i++,t[n++]=i,t[n++]=r;return t}var X0=new d;function qtt(e){let t=e.center;X0=d.multiplyByScalar(e.ellipsoid.geodeticSurfaceNormal(t,X0),e.height,X0),X0=d.add(t,X0,X0);let n=new le(X0,e.semiMajorAxis),i=Cu.computeEllipsePositions(e,!0,!1),o=i.positions,r=i.numPts,s=spe(o,e,!1),a=ape(r);return a=Oe.createTypedArray(o.length/3,a),{boundingSphere:n,attributes:s,indices:a}}function Ktt(e,t){let n=t.vertexFormat,i=t.center,o=t.semiMajorAxis,r=t.semiMinorAxis,s=t.ellipsoid,a=t.height,c=t.extrudedHeight,u=t.stRotation,f=e.length/3*2,h=new Float64Array(f*3),A=n.st?new Float32Array(f*2):void 0,g=n.normal?new Float32Array(f*3):void 0,m=n.tangent?new Float32Array(f*3):void 0,_=n.bitangent?new Float32Array(f*3):void 0,y=t.shadowVolume,C=y?new Float32Array(f*3):void 0,E=0,I=epe,b=tpe,S=npe,B=new Ui(s),v=B.project(s.cartesianToCartographic(i,KV),ipe),P=s.scaleToGeodeticSurface(i,hS);s.geodeticSurfaceNormal(P,P);let M=Le.fromAxisAngle(P,u,oK),L=J.fromQuaternion(M,$Ae),p=U.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,ope),x=U.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,rpe),T=e.length,w=T/3*2;for(let O=0;O<T;O+=3){let k=O+1,Q=O+2,z=d.fromArray(e,O,hS),F;if(n.st){let W=J.multiplyByVector(L,z,nK),Z=B.project(s.cartesianToCartographic(W,KV),iK);d.subtract(Z,v,Z),ta.x=(Z.x+o)/(2*o),ta.y=(Z.y+r)/(2*r),p.x=Math.min(ta.x,p.x),p.y=Math.min(ta.y,p.y),x.x=Math.max(ta.x,x.x),x.y=Math.max(ta.y,x.y),A[E+w]=ta.x,A[E+1+w]=ta.y,A[E++]=ta.x,A[E++]=ta.y}z=s.scaleToGeodeticSurface(z,z),F=d.clone(z,nK),I=s.geodeticSurfaceNormal(z,I),y&&(C[O+T]=-I.x,C[k+T]=-I.y,C[Q+T]=-I.z);let H=d.multiplyByScalar(I,a,ZAe);if(z=d.add(z,H,z),H=d.multiplyByScalar(I,c,H),F=d.add(F,H,F),n.position&&(h[O+T]=F.x,h[k+T]=F.y,h[Q+T]=F.z,h[O]=z.x,h[k]=z.y,h[Q]=z.z),n.normal||n.tangent||n.bitangent){S=d.clone(I,S);let W=d.fromArray(e,(O+3)%T,ZAe);d.subtract(W,z,W);let Z=d.subtract(F,z,iK);I=d.normalize(d.cross(Z,W,I),I),n.normal&&(g[O]=I.x,g[k]=I.y,g[Q]=I.z,g[O+T]=I.x,g[k+T]=I.y,g[Q+T]=I.z),n.tangent&&(b=d.normalize(d.cross(S,I,b),b),m[O]=b.x,m[k]=b.y,m[Q]=b.z,m[O+T]=b.x,m[O+1+T]=b.y,m[O+2+T]=b.z),n.bitangent&&(_[O]=S.x,_[k]=S.y,_[Q]=S.z,_[O+T]=S.x,_[k+T]=S.y,_[Q+T]=S.z)}}if(n.st){T=A.length;for(let O=0;O<T;O+=2)A[O]=(A[O]-p.x)/(x.x-p.x),A[O+1]=(A[O+1]-p.y)/(x.y-p.y)}let R=new yn;if(n.position&&(R.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:h})),n.st&&(R.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:A})),n.normal&&(R.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g})),n.tangent&&(R.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m})),n.bitangent&&(R.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:_})),y&&(R.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:C})),l(t.offsetAttribute)){let O=new Uint8Array(f);if(t.offsetAttribute===hn.TOP)O=O.fill(1,0,f/2);else{let k=t.offsetAttribute===hn.NONE?0:1;O=O.fill(k)}R.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:O})}return R}function Xtt(e){let t=e.length/3,n=Oe.createTypedArray(t,t*6),i=0;for(let o=0;o<t;o++){let r=o,s=o+t,a=(r+1)%t,c=a+t;n[i++]=r,n[i++]=s,n[i++]=a,n[i++]=a,n[i++]=s,n[i++]=c}return n}var YV=new le,qV=new le;function Jtt(e){let t=e.center,n=e.ellipsoid,i=e.semiMajorAxis,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,hS),e.height,hS);YV.center=d.add(t,o,YV.center),YV.radius=i,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,o),e.extrudedHeight,o),qV.center=d.add(t,o,qV.center),qV.radius=i;let r=Cu.computeEllipsePositions(e,!0,!0),s=r.positions,a=r.numPts,c=r.outerPositions,u=le.union(YV,qV),f=spe(s,e,!0),h=ape(a),A=h.length;h.length=A*2;let g=s.length/3;for(let b=0;b<A;b+=3)h[b+A]=h[b+2]+g,h[b+1+A]=h[b+1]+g,h[b+2+A]=h[b]+g;let m=Oe.createTypedArray(g*2/3,h),_=new ht({attributes:f,indices:m,primitiveType:Me.TRIANGLES}),y=Ktt(c,e);h=Xtt(c);let C=Oe.createTypedArray(c.length*2/3,h),E=new ht({attributes:y,indices:C,primitiveType:Me.TRIANGLES}),I=Vn.combineInstances([new Pt({geometry:_}),new Pt({geometry:E})]);return{boundingSphere:u,attributes:I[0].attributes,indices:I[0].indices}}function cpe(e,t,n,i,o,r,s){let c=Cu.computeEllipsePositions({center:e,semiMajorAxis:t,semiMinorAxis:n,rotation:i,granularity:o},!1,!0).outerPositions,u=c.length/3,f=new Array(u);for(let A=0;A<u;++A)f[A]=d.fromArray(c,A*3);let h=ae.fromCartesianArray(f,r,s);return h.width>D.PI&&(h.north=h.north>0?D.PI_OVER_TWO-D.EPSILON7:h.north,h.south=h.south<0?D.EPSILON7-D.PI_OVER_TWO:h.south,h.east=D.PI,h.west=-D.PI),h}function dA(e){e=e??V.EMPTY_OBJECT;let t=e.center,n=e.ellipsoid??te.default,i=e.semiMajorAxis,o=e.semiMinorAxis,r=e.granularity??D.RADIANS_PER_DEGREE,s=e.vertexFormat??Pe.DEFAULT,a=e.height??0,c=e.extrudedHeight??a;this._center=d.clone(t),this._semiMajorAxis=i,this._semiMinorAxis=o,this._ellipsoid=te.clone(n),this._rotation=e.rotation??0,this._stRotation=e.stRotation??0,this._height=Math.max(c,a),this._granularity=r,this._vertexFormat=Pe.clone(s),this._extrudedHeight=Math.min(c,a),this._shadowVolume=e.shadowVolume??!1,this._workerName="createEllipseGeometry",this._offsetAttribute=e.offsetAttribute,this._rectangle=void 0,this._textureCoordinateRotationPoints=void 0}dA.packedLength=d.packedLength+te.packedLength+Pe.packedLength+9;dA.pack=function(e,t,n){return n=n??0,d.pack(e._center,t,n),n+=d.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._semiMajorAxis,t[n++]=e._semiMinorAxis,t[n++]=e._rotation,t[n++]=e._stRotation,t[n++]=e._height,t[n++]=e._granularity,t[n++]=e._extrudedHeight,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var lpe=new d,upe=new te,fpe=new Pe,fA={center:lpe,ellipsoid:upe,vertexFormat:fpe,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,stRotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};dA.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,lpe);t+=d.packedLength;let o=te.unpack(e,t,upe);t+=te.packedLength;let r=Pe.unpack(e,t,fpe);t+=Pe.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t++],g=e[t++]===1,m=e[t];return l(n)?(n._center=d.clone(i,n._center),n._ellipsoid=te.clone(o,n._ellipsoid),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._semiMajorAxis=s,n._semiMinorAxis=a,n._rotation=c,n._stRotation=u,n._height=f,n._granularity=h,n._extrudedHeight=A,n._shadowVolume=g,n._offsetAttribute=m===-1?void 0:m,n):(fA.height=f,fA.extrudedHeight=A,fA.granularity=h,fA.stRotation=u,fA.rotation=c,fA.semiMajorAxis=s,fA.semiMinorAxis=a,fA.shadowVolume=g,fA.offsetAttribute=m===-1?void 0:m,new dA(fA))};dA.computeRectangle=function(e,t){e=e??V.EMPTY_OBJECT;let n=e.center,i=e.ellipsoid??te.default,o=e.semiMajorAxis,r=e.semiMinorAxis,s=e.granularity??D.RADIANS_PER_DEGREE,a=e.rotation??0;return cpe(n,o,r,a,s,i,t)};dA.createGeometry=function(e){if(e._semiMajorAxis<=0||e._semiMinorAxis<=0)return;let t=e._height,n=e._extrudedHeight,i=!D.equalsEpsilon(t,n,0,D.EPSILON2);e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);let o={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:t,granularity:e._granularity,vertexFormat:e._vertexFormat,stRotation:e._stRotation},r;if(i)o.extrudedHeight=n,o.shadowVolume=e._shadowVolume,o.offsetAttribute=e._offsetAttribute,r=Jtt(o);else if(r=qtt(o),l(e._offsetAttribute)){let s=r.attributes.position.values.length,a=e._offsetAttribute===hn.NONE?0:1,c=new Uint8Array(s/3).fill(a);r.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:c})}return new ht({attributes:r.attributes,indices:r.indices,primitiveType:Me.TRIANGLES,boundingSphere:r.boundingSphere,offsetAttribute:e._offsetAttribute})};dA.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new dA({center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:o,rotation:e._rotation,stRotation:e._stRotation,granularity:i,extrudedHeight:r,height:s,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0})};function Ztt(e){let t=-e._stRotation;if(t===0)return[0,0,0,1,1,0];let i=Cu.computeEllipsePositions({center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,rotation:e._rotation,granularity:e._granularity},!1,!0).outerPositions,o=i.length/3,r=new Array(o);for(let c=0;c<o;++c)r[c]=d.fromArray(i,c*3);let s=e._ellipsoid,a=e.rectangle;return ht._textureCoordinateRotationPoints(r,t,s,a)}Object.defineProperties(dA.prototype,{rectangle:{get:function(){return l(this._rectangle)||(this._rectangle=cpe(this._center,this._semiMajorAxis,this._semiMinorAxis,this._rotation,this._granularity,this._ellipsoid)),this._rectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=Ztt(this)),this._textureCoordinateRotationPoints}}});var kl=dA;var dpe=new d,J0=new d;function $tt(e){let t=e.center;J0=d.multiplyByScalar(e.ellipsoid.geodeticSurfaceNormal(t,J0),e.height,J0),J0=d.add(t,J0,J0);let n=new le(J0,e.semiMajorAxis),i=Cu.computeEllipsePositions(e,!1,!0).outerPositions,o=new yn({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:Cu.raisePositionsToHeight(i,e,!1)})}),r=i.length/3,s=Oe.createTypedArray(r,r*2),a=0;for(let c=0;c<r;++c)s[a++]=c,s[a++]=(c+1)%r;return{boundingSphere:n,attributes:o,indices:s}}var XV=new le,JV=new le;function ent(e){let t=e.center,n=e.ellipsoid,i=e.semiMajorAxis,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,dpe),e.height,dpe);XV.center=d.add(t,o,XV.center),XV.radius=i,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,o),e.extrudedHeight,o),JV.center=d.add(t,o,JV.center),JV.radius=i;let r=Cu.computeEllipsePositions(e,!1,!0).outerPositions,s=new yn({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:Cu.raisePositionsToHeight(r,e,!0)})});r=s.position.values;let a=le.union(XV,JV),c=r.length/3;if(l(e.offsetAttribute)){let m=new Uint8Array(c);if(e.offsetAttribute===hn.TOP)m=m.fill(1,0,c/2);else{let _=e.offsetAttribute===hn.NONE?0:1;m=m.fill(_)}s.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:m})}let u=e.numberOfVerticalLines??16;u=D.clamp(u,0,c/2);let f=Oe.createTypedArray(c,c*2+u*2);c/=2;let h=0,A;for(A=0;A<c;++A)f[h++]=A,f[h++]=(A+1)%c,f[h++]=A+c,f[h++]=(A+1)%c+c;let g;if(u>0){let m=Math.min(u,c);g=Math.round(c/m);let _=Math.min(g*u,c);for(A=0;A<_;A+=g)f[h++]=A,f[h++]=A+c}return{boundingSphere:a,attributes:s,indices:f}}function mS(e){e=e??V.EMPTY_OBJECT;let t=e.center,n=e.ellipsoid??te.default,i=e.semiMajorAxis,o=e.semiMinorAxis,r=e.granularity??D.RADIANS_PER_DEGREE,s=e.height??0,a=e.extrudedHeight??s;this._center=d.clone(t),this._semiMajorAxis=i,this._semiMinorAxis=o,this._ellipsoid=te.clone(n),this._rotation=e.rotation??0,this._height=Math.max(a,s),this._granularity=r,this._extrudedHeight=Math.min(a,s),this._numberOfVerticalLines=Math.max(e.numberOfVerticalLines??16,0),this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipseOutlineGeometry"}mS.packedLength=d.packedLength+te.packedLength+8;mS.pack=function(e,t,n){return n=n??0,d.pack(e._center,t,n),n+=d.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._semiMajorAxis,t[n++]=e._semiMinorAxis,t[n++]=e._rotation,t[n++]=e._height,t[n++]=e._granularity,t[n++]=e._extrudedHeight,t[n++]=e._numberOfVerticalLines,t[n]=e._offsetAttribute??-1,t};var hpe=new d,mpe=new te,Pg={center:hpe,ellipsoid:mpe,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,numberOfVerticalLines:void 0,offsetAttribute:void 0};mS.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,hpe);t+=d.packedLength;let o=te.unpack(e,t,mpe);t+=te.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t];return l(n)?(n._center=d.clone(i,n._center),n._ellipsoid=te.clone(o,n._ellipsoid),n._semiMajorAxis=r,n._semiMinorAxis=s,n._rotation=a,n._height=c,n._granularity=u,n._extrudedHeight=f,n._numberOfVerticalLines=h,n._offsetAttribute=A===-1?void 0:A,n):(Pg.height=c,Pg.extrudedHeight=f,Pg.granularity=u,Pg.rotation=a,Pg.semiMajorAxis=r,Pg.semiMinorAxis=s,Pg.numberOfVerticalLines=h,Pg.offsetAttribute=A===-1?void 0:A,new mS(Pg))};mS.createGeometry=function(e){if(e._semiMajorAxis<=0||e._semiMinorAxis<=0)return;let t=e._height,n=e._extrudedHeight,i=!D.equalsEpsilon(t,n,0,D.EPSILON2);e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);let o={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:t,granularity:e._granularity,numberOfVerticalLines:e._numberOfVerticalLines},r;if(i)o.extrudedHeight=n,o.offsetAttribute=e._offsetAttribute,r=ent(o);else if(r=$tt(o),l(e._offsetAttribute)){let s=r.attributes.position.values.length,a=e._offsetAttribute===hn.NONE?0:1,c=new Uint8Array(s/3).fill(a);r.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:c})}return new ht({attributes:r.attributes,indices:r.indices,primitiveType:Me.LINES,boundingSphere:r.boundingSphere,offsetAttribute:e._offsetAttribute})};var Af=mS;var Ape=new G,ppe=d.ZERO,gpe=new d,_pe=new ae;function tnt(e){this.id=e,this.vertexFormat=void 0,this.center=void 0,this.semiMajorAxis=void 0,this.semiMinorAxis=void 0,this.rotation=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.numberOfVerticalLines=void 0,this.offsetAttribute=void 0}function $h(e,t){ti.call(this,{entity:e,scene:t,geometryOptions:new tnt(e),geometryPropertyName:"ellipse",observedPropertyNames:["availability","position","ellipse"]}),this._onEntityPropertyChanged(e,"ellipse",e.ellipse,void 0)}l(Object.create)&&($h.prototype=Object.create(ti.prototype),$h.prototype.constructor=$h);$h.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof Xt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,Ape)),l(o)||(o=G.WHITE),i.color=$t.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,ppe,gpe))),new Pt({id:t,geometry:new kl(this._options),attributes:i})};$h.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Ape),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:$t.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,ppe,gpe))),new Pt({id:t,geometry:new Af(this._options),attributes:r})};$h.prototype._computeCenter=function(e,t){return j.getValueOrUndefined(this._entity.position,e,t)};$h.prototype._isHidden=function(e,t){let n=e.position;return!l(n)||!l(t.semiMajorAxis)||!l(t.semiMinorAxis)||yi.prototype._isHidden.call(this,e,t)};$h.prototype._isDynamic=function(e,t){return!e.position.isConstant||!t.semiMajorAxis.isConstant||!t.semiMinorAxis.isConstant||!j.isConstant(t.rotation)||!j.isConstant(t.height)||!j.isConstant(t.extrudedHeight)||!j.isConstant(t.granularity)||!j.isConstant(t.stRotation)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.numberOfVerticalLines)||!j.isConstant(t.zIndex)||this._onTerrain&&!j.isConstant(this._materialProperty)&&!(this._materialProperty instanceof Xt)};$h.prototype._setStaticOptions=function(e,t){let n=j.getValueOrUndefined(t.height,je.MINIMUM_VALUE),i=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),o=j.getValueOrUndefined(t.extrudedHeight,je.MINIMUM_VALUE),r=j.getValueOrDefault(t.extrudedHeightReference,je.MINIMUM_VALUE,Ze.NONE);l(o)&&!l(n)&&(n=0);let s=this._options;s.vertexFormat=this._materialProperty instanceof Xt?gn.VERTEX_FORMAT:Eo.MaterialSupport.TEXTURED.vertexFormat,s.center=e.position.getValue(je.MINIMUM_VALUE,s.center),s.semiMajorAxis=t.semiMajorAxis.getValue(je.MINIMUM_VALUE,s.semiMajorAxis),s.semiMinorAxis=t.semiMinorAxis.getValue(je.MINIMUM_VALUE,s.semiMinorAxis),s.rotation=j.getValueOrUndefined(t.rotation,je.MINIMUM_VALUE),s.granularity=j.getValueOrUndefined(t.granularity,je.MINIMUM_VALUE),s.stRotation=j.getValueOrUndefined(t.stRotation,je.MINIMUM_VALUE),s.numberOfVerticalLines=j.getValueOrUndefined(t.numberOfVerticalLines,je.MINIMUM_VALUE),s.offsetAttribute=ti.computeGeometryOffsetAttribute(n,i,o,r),s.height=ti.getGeometryHeight(n,i),o=ti.getGeometryExtrudedHeight(o,r),o===ti.CLAMP_TO_GROUND&&(o=Ti.getMinimumMaximumHeights(kl.computeRectangle(s,_pe)).minimumTerrainHeight),s.extrudedHeight=o};$h.DynamicGeometryUpdater=AS;function AS(e,t,n){_i.call(this,e,t,n)}l(Object.create)&&(AS.prototype=Object.create(_i.prototype),AS.prototype.constructor=AS);AS.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.center)||!l(i.semiMajorAxis)||!l(i.semiMinorAxis)||_i.prototype._isHidden.call(this,e,t,n)};AS.prototype._setOptions=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(t.height,n),r=j.getValueOrDefault(t.heightReference,n,Ze.NONE),s=j.getValueOrUndefined(t.extrudedHeight,n),a=j.getValueOrDefault(t.extrudedHeightReference,n,Ze.NONE);l(s)&&!l(o)&&(o=0),i.center=j.getValueOrUndefined(e.position,n,i.center),i.semiMajorAxis=j.getValueOrUndefined(t.semiMajorAxis,n),i.semiMinorAxis=j.getValueOrUndefined(t.semiMinorAxis,n),i.rotation=j.getValueOrUndefined(t.rotation,n),i.granularity=j.getValueOrUndefined(t.granularity,n),i.stRotation=j.getValueOrUndefined(t.stRotation,n),i.numberOfVerticalLines=j.getValueOrUndefined(t.numberOfVerticalLines,n),i.offsetAttribute=ti.computeGeometryOffsetAttribute(o,r,s,a),i.height=ti.getGeometryHeight(o,r),s=ti.getGeometryExtrudedHeight(s,a),s===ti.CLAMP_TO_GROUND&&(s=Ti.getMinimumMaximumHeights(kl.computeRectangle(i,_pe)).minimumTerrainHeight),i.extrudedHeight=s};var WO=$h;var nnt=new d,int=new d,ont=new d,rnt=new d,snt=new d,ant=new d(1,1,1),ype=Math.cos,Cpe=Math.sin;function Rg(e){e=e??V.EMPTY_OBJECT;let t=e.radii??ant,n=e.innerRadii??t,i=e.minimumClock??0,o=e.maximumClock??D.TWO_PI,r=e.minimumCone??0,s=e.maximumCone??D.PI,a=Math.round(e.stackPartitions??64),c=Math.round(e.slicePartitions??64),u=e.vertexFormat??Pe.DEFAULT;this._radii=d.clone(t),this._innerRadii=d.clone(n),this._minimumClock=i,this._maximumClock=o,this._minimumCone=r,this._maximumCone=s,this._stackPartitions=a,this._slicePartitions=c,this._vertexFormat=Pe.clone(u),this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipsoidGeometry"}Rg.packedLength=2*d.packedLength+Pe.packedLength+7;Rg.pack=function(e,t,n){return n=n??0,d.pack(e._radii,t,n),n+=d.packedLength,d.pack(e._innerRadii,t,n),n+=d.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._minimumClock,t[n++]=e._maximumClock,t[n++]=e._minimumCone,t[n++]=e._maximumCone,t[n++]=e._stackPartitions,t[n++]=e._slicePartitions,t[n]=e._offsetAttribute??-1,t};var Epe=new d,Ipe=new d,xpe=new Pe,Fy={radii:Epe,innerRadii:Ipe,vertexFormat:xpe,minimumClock:void 0,maximumClock:void 0,minimumCone:void 0,maximumCone:void 0,stackPartitions:void 0,slicePartitions:void 0,offsetAttribute:void 0};Rg.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,Epe);t+=d.packedLength;let o=d.unpack(e,t,Ipe);t+=d.packedLength;let r=Pe.unpack(e,t,xpe);t+=Pe.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t];return l(n)?(n._radii=d.clone(i,n._radii),n._innerRadii=d.clone(o,n._innerRadii),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._minimumClock=s,n._maximumClock=a,n._minimumCone=c,n._maximumCone=u,n._stackPartitions=f,n._slicePartitions=h,n._offsetAttribute=A===-1?void 0:A,n):(Fy.minimumClock=s,Fy.maximumClock=a,Fy.minimumCone=c,Fy.maximumCone=u,Fy.stackPartitions=f,Fy.slicePartitions=h,Fy.offsetAttribute=A===-1?void 0:A,new Rg(Fy))};Rg.createGeometry=function(e){let t=e._radii;if(t.x<=0||t.y<=0||t.z<=0)return;let n=e._innerRadii;if(n.x<=0||n.y<=0||n.z<=0)return;let i=e._minimumClock,o=e._maximumClock,r=e._minimumCone,s=e._maximumCone,a=e._vertexFormat,c=e._slicePartitions+1,u=e._stackPartitions+1;c=Math.round(c*Math.abs(o-i)/D.TWO_PI),u=Math.round(u*Math.abs(s-r)/D.PI),c<2&&(c=2),u<2&&(u=2);let f,h,A=0,g=[r],m=[i];for(f=0;f<u;f++)g.push(r+f*(s-r)/(u-1));for(g.push(s),h=0;h<c;h++)m.push(i+h*(o-i)/(c-1));m.push(o);let _=g.length,y=m.length,C=0,E=1,I=n.x!==t.x||n.y!==t.y||n.z!==t.z,b=!1,S=!1,B=!1;I&&(E=2,r>0&&(b=!0,C+=c-1),s<Math.PI&&(S=!0,C+=c-1),(o-i)%D.TWO_PI?(B=!0,C+=(u-1)*2+1):C+=1);let v=y*_*E,P=new Float64Array(v*3),M=new Array(v).fill(!1),L=new Array(v).fill(!1),p=c*u*E,x=6*(p+C+1-(c+u)*E),T=Oe.createTypedArray(p,x),w=a.normal?new Float32Array(v*3):void 0,R=a.tangent?new Float32Array(v*3):void 0,O=a.bitangent?new Float32Array(v*3):void 0,k=a.st?new Float32Array(v*2):void 0,Q=new Array(_),z=new Array(_);for(f=0;f<_;f++)Q[f]=Cpe(g[f]),z[f]=ype(g[f]);let F=new Array(y),H=new Array(y);for(h=0;h<y;h++)H[h]=ype(m[h]),F[h]=Cpe(m[h]);for(f=0;f<_;f++)for(h=0;h<y;h++)P[A++]=t.x*Q[f]*H[h],P[A++]=t.y*Q[f]*F[h],P[A++]=t.z*z[f];let W=v/2;if(I)for(f=0;f<_;f++)for(h=0;h<y;h++)P[A++]=n.x*Q[f]*H[h],P[A++]=n.y*Q[f]*F[h],P[A++]=n.z*z[f],M[W]=!0,f>0&&f!==_-1&&h!==0&&h!==y-1&&(L[W]=!0),W++;A=0;let Z,Y;for(f=1;f<_-2;f++)for(Z=f*y,Y=(f+1)*y,h=1;h<y-2;h++)T[A++]=Y+h,T[A++]=Y+h+1,T[A++]=Z+h+1,T[A++]=Y+h,T[A++]=Z+h+1,T[A++]=Z+h;if(I){let Ke=_*y;for(f=1;f<_-2;f++)for(Z=Ke+f*y,Y=Ke+(f+1)*y,h=1;h<y-2;h++)T[A++]=Y+h,T[A++]=Z+h,T[A++]=Z+h+1,T[A++]=Y+h,T[A++]=Z+h+1,T[A++]=Y+h+1}let $,X;if(I){if(b)for(X=_*y,f=1;f<y-2;f++)T[A++]=f,T[A++]=f+1,T[A++]=X+f+1,T[A++]=f,T[A++]=X+f+1,T[A++]=X+f;if(S)for($=_*y-y,X=_*y*E-y,f=1;f<y-2;f++)T[A++]=$+f+1,T[A++]=$+f,T[A++]=X+f,T[A++]=$+f+1,T[A++]=X+f,T[A++]=X+f+1}if(B){for(f=1;f<_-2;f++)X=y*_+y*f,$=y*f,T[A++]=X,T[A++]=$+y,T[A++]=$,T[A++]=X,T[A++]=X+y,T[A++]=$+y;for(f=1;f<_-2;f++)X=y*_+y*(f+1)-1,$=y*(f+1)-1,T[A++]=$+y,T[A++]=X,T[A++]=$,T[A++]=$+y,T[A++]=X+y,T[A++]=X}let he=new yn;a.position&&(he.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:P}));let ge=0,fe=0,ye=0,xe=0,ve=v/2,Te,ke=te.fromCartesian3(t),Ge=te.fromCartesian3(n);if(a.st||a.normal||a.tangent||a.bitangent){for(f=0;f<v;f++){Te=M[f]?Ge:ke;let Ke=d.fromArray(P,f*3,nnt),tt=Te.geodeticSurfaceNormal(Ke,int);if(L[f]&&d.negate(tt,tt),a.st){let en=U.negate(tt,snt);k[ge++]=Math.atan2(en.y,en.x)/D.TWO_PI+.5,k[ge++]=Math.asin(tt.z)/Math.PI+.5}if(a.normal&&(w[fe++]=tt.x,w[fe++]=tt.y,w[fe++]=tt.z),a.tangent||a.bitangent){let en=ont,it=0,nn;if(M[f]&&(it=ve),!b&&f>=it&&f<it+y*2?nn=d.UNIT_X:nn=d.UNIT_Z,d.cross(nn,tt,en),d.normalize(en,en),a.tangent&&(R[ye++]=en.x,R[ye++]=en.y,R[ye++]=en.z),a.bitangent){let qt=d.cross(tt,en,rnt);d.normalize(qt,qt),O[xe++]=qt.x,O[xe++]=qt.y,O[xe++]=qt.z}}}a.st&&(he.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:k})),a.normal&&(he.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:w})),a.tangent&&(he.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:R})),a.bitangent&&(he.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:O}))}if(l(e._offsetAttribute)){let Ke=P.length,tt=e._offsetAttribute===hn.NONE?0:1,en=new Uint8Array(Ke/3).fill(tt);he.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:en})}return new ht({attributes:he,indices:T,primitiveType:Me.TRIANGLES,boundingSphere:le.fromEllipsoid(ke),offsetAttribute:e._offsetAttribute})};var rK;Rg.getUnitEllipsoid=function(){return l(rK)||(rK=Rg.createGeometry(new Rg({radii:new d(1,1,1),vertexFormat:Pe.POSITION_ONLY}))),rK};var Ia=Rg;var cnt=new Xt(G.WHITE),sK=d.ZERO,aK=new d,lnt=new d,unt=new d,cK=new G,fnt=new d(1,1,1);function dnt(e){this.id=e,this.vertexFormat=void 0,this.radii=void 0,this.innerRadii=void 0,this.minimumClock=void 0,this.maximumClock=void 0,this.minimumCone=void 0,this.maximumCone=void 0,this.stackPartitions=void 0,this.slicePartitions=void 0,this.subdivisions=void 0,this.offsetAttribute=void 0}function pf(e,t){yi.call(this,{entity:e,scene:t,geometryOptions:new dnt(e),geometryPropertyName:"ellipsoid",observedPropertyNames:["availability","position","orientation","ellipsoid"]}),this._onEntityPropertyChanged(e,"ellipsoid",e.ellipsoid,void 0)}l(Object.create)&&(pf.prototype=Object.create(yi.prototype),pf.prototype.constructor=pf);Object.defineProperties(pf.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});pf.prototype.createFillGeometryInstance=function(e,t,n){let i=this._entity,o=i.isAvailable(e),r,s=new wn(o&&i.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),a=this._distanceDisplayConditionProperty.getValue(e),c=Kn.fromDistanceDisplayCondition(a),u={show:s,distanceDisplayCondition:c,color:void 0,offset:void 0};if(this._materialProperty instanceof Xt){let f;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||o)&&(f=this._materialProperty.color.getValue(e,cK)),l(f)||(f=G.WHITE),r=$t.fromColor(f),u.color=r}return l(this._options.offsetAttribute)&&(u.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,sK,aK))),new Pt({id:i,geometry:new Ia(this._options),modelMatrix:t?void 0:i.computeModelMatrixForHeightReference(e,i.ellipsoid.heightReference,this._options.radii.z*.5,this._scene.ellipsoid,n),attributes:u})};pf.prototype.createOutlineGeometryInstance=function(e,t,n){let i=this._entity,o=i.isAvailable(e),r=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,cK),s=this._distanceDisplayConditionProperty.getValue(e),a={show:new wn(o&&i.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:$t.fromColor(r),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(s),offset:void 0};return l(this._options.offsetAttribute)&&(a.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,sK,aK))),new Pt({id:i,geometry:new af(this._options),modelMatrix:t?void 0:i.computeModelMatrixForHeightReference(e,i.ellipsoid.heightReference,this._options.radii.z*.5,this._scene.ellipsoid,n),attributes:a})};pf.prototype._computeCenter=function(e,t){return j.getValueOrUndefined(this._entity.position,e,t)};pf.prototype._isHidden=function(e,t){return!l(e.position)||!l(t.radii)||yi.prototype._isHidden.call(this,e,t)};pf.prototype._isDynamic=function(e,t){return!e.position.isConstant||!j.isConstant(e.orientation)||!t.radii.isConstant||!j.isConstant(t.innerRadii)||!j.isConstant(t.stackPartitions)||!j.isConstant(t.slicePartitions)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.minimumClock)||!j.isConstant(t.maximumClock)||!j.isConstant(t.minimumCone)||!j.isConstant(t.maximumCone)||!j.isConstant(t.subdivisions)};pf.prototype._setStaticOptions=function(e,t){let n=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof Xt?gn.VERTEX_FORMAT:Eo.MaterialSupport.TEXTURED.vertexFormat,i.radii=t.radii.getValue(je.MINIMUM_VALUE,i.radii),i.innerRadii=j.getValueOrUndefined(t.innerRadii,i.radii),i.minimumClock=j.getValueOrUndefined(t.minimumClock,je.MINIMUM_VALUE),i.maximumClock=j.getValueOrUndefined(t.maximumClock,je.MINIMUM_VALUE),i.minimumCone=j.getValueOrUndefined(t.minimumCone,je.MINIMUM_VALUE),i.maximumCone=j.getValueOrUndefined(t.maximumCone,je.MINIMUM_VALUE),i.stackPartitions=j.getValueOrUndefined(t.stackPartitions,je.MINIMUM_VALUE),i.slicePartitions=j.getValueOrUndefined(t.slicePartitions,je.MINIMUM_VALUE),i.subdivisions=j.getValueOrUndefined(t.subdivisions,je.MINIMUM_VALUE),i.offsetAttribute=n!==Ze.NONE?hn.ALL:void 0};pf.prototype._onEntityPropertyChanged=_p;pf.DynamicGeometryUpdater=jO;function jO(e,t,n){_i.call(this,e,t,n),this._scene=e._scene,this._modelMatrix=new N,this._attributes=void 0,this._outlineAttributes=void 0,this._lastSceneMode=void 0,this._lastShow=void 0,this._lastOutlineShow=void 0,this._lastOutlineWidth=void 0,this._lastOutlineColor=void 0,this._lastOffset=new d,this._material={}}l(Object.create)&&(jO.prototype=Object.create(_i.prototype),jO.prototype.constructor=jO);jO.prototype.update=function(e){let t=this._entity,n=t.ellipsoid;if(!t.isShowing||!t.isAvailable(e)||!j.getValueOrDefault(n.show,e,!0)){l(this._primitive)&&(this._primitive.show=!1),l(this._outlinePrimitive)&&(this._outlinePrimitive.show=!1);return}let i=j.getValueOrUndefined(n.radii,e,lnt),o=l(i)?t.computeModelMatrixForHeightReference(e,n.heightReference,i.z*.5,this._scene.ellipsoid,this._modelMatrix):void 0;if(!l(o)||!l(i)){l(this._primitive)&&(this._primitive.show=!1),l(this._outlinePrimitive)&&(this._outlinePrimitive.show=!1);return}let r=j.getValueOrDefault(n.fill,e,!0),s=j.getValueOrDefault(n.outline,e,!1),a=j.getValueOrClonedDefault(n.outlineColor,e,G.BLACK,cK),c=ur.getValue(e,n.material??cnt,this._material),u=j.getValueOrUndefined(n.innerRadii,e,unt),f=j.getValueOrUndefined(n.minimumClock,e),h=j.getValueOrUndefined(n.maximumClock,e),A=j.getValueOrUndefined(n.minimumCone,e),g=j.getValueOrUndefined(n.maximumCone,e),m=j.getValueOrUndefined(n.stackPartitions,e),_=j.getValueOrUndefined(n.slicePartitions,e),y=j.getValueOrUndefined(n.subdivisions,e),C=j.getValueOrDefault(n.outlineWidth,e,1),E=j.getValueOrDefault(n.heightReference,e,Ze.NONE),I=E!==Ze.NONE?hn.ALL:void 0,b=this._scene.mode,S=b===ie.SCENE3D&&E===Ze.NONE,B=this._options,v=this._geometryUpdater.shadowsProperty.getValue(e),M=this._geometryUpdater.distanceDisplayConditionProperty.getValue(e),L=j.getValueOrDefault(this._geometryUpdater.terrainOffsetProperty,e,sK,aK);if(!S||this._lastSceneMode!==b||!l(this._primitive)||B.stackPartitions!==m||B.slicePartitions!==_||l(u)&&!d.equals(B.innerRadii!==u)||B.minimumClock!==f||B.maximumClock!==h||B.minimumCone!==A||B.maximumCone!==g||B.subdivisions!==y||this._lastOutlineWidth!==C||B.offsetAttribute!==I){let x=this._primitives;x.removeAndDestroy(this._primitive),x.removeAndDestroy(this._outlinePrimitive),this._primitive=void 0,this._outlinePrimitive=void 0,this._lastSceneMode=b,this._lastOutlineWidth=C,B.stackPartitions=m,B.slicePartitions=_,B.subdivisions=y,B.offsetAttribute=I,B.radii=d.clone(S?fnt:i,B.radii),l(u)?S?B.innerRadii=d.fromElements(u.x/i.x,u.y/i.y,u.z/i.z,B.innerRadii):B.innerRadii=d.clone(u,B.innerRadii):B.innerRadii=void 0,B.minimumClock=f,B.maximumClock=h,B.minimumCone=A,B.maximumCone=g;let T=new Eo({material:c,translucent:c.isTranslucent(),closed:!0});B.vertexFormat=T.vertexFormat;let w=this._geometryUpdater.createFillGeometryInstance(e,S,this._modelMatrix);this._primitive=x.add(new Qn({geometryInstances:w,appearance:T,asynchronous:!1,shadows:v}));let R=this._geometryUpdater.createOutlineGeometryInstance(e,S,this._modelMatrix);this._outlinePrimitive=x.add(new Qn({geometryInstances:R,appearance:new gn({flat:!0,translucent:R.attributes.color.value[3]!==255,renderState:{lineWidth:this._geometryUpdater._scene.clampLineWidth(C)}}),asynchronous:!1,shadows:v})),this._lastShow=r,this._lastOutlineShow=s,this._lastOutlineColor=G.clone(a,this._lastOutlineColor),this._lastDistanceDisplayCondition=M,this._lastOffset=d.clone(L,this._lastOffset)}else if(this._primitive.ready){let x=this._primitive,T=this._outlinePrimitive;x.show=!0,T.show=!0,x.appearance.material=c;let w=this._attributes;l(w)||(w=x.getGeometryInstanceAttributes(t),this._attributes=w),r!==this._lastShow&&(w.show=wn.toValue(r,w.show),this._lastShow=r);let R=this._outlineAttributes;l(R)||(R=T.getGeometryInstanceAttributes(t),this._outlineAttributes=R),s!==this._lastOutlineShow&&(R.show=wn.toValue(s,R.show),this._lastOutlineShow=s),G.equals(a,this._lastOutlineColor)||(R.color=$t.toValue(a,R.color),G.clone(a,this._lastOutlineColor)),Ut.equals(M,this._lastDistanceDisplayCondition)||(w.distanceDisplayCondition=Kn.toValue(M,w.distanceDisplayCondition),R.distanceDisplayCondition=Kn.toValue(M,R.distanceDisplayCondition),Ut.clone(M,this._lastDistanceDisplayCondition)),d.equals(L,this._lastOffset)||(w.offset=uo.toValue(L,w.offset),R.offset=uo.toValue(L,w.offset),d.clone(L,this._lastOffset))}S&&(i.x=Math.max(i.x,.001),i.y=Math.max(i.y,.001),i.z=Math.max(i.z,.001),o=N.multiplyByScale(o,i,o),this._primitive.modelMatrix=o,this._outlinePrimitive.modelMatrix=o)};var YO=pf;function pS(e){e=e??V.EMPTY_OBJECT;let t=e.vertexFormat??Pe.DEFAULT;this._vertexFormat=t,this._workerName="createPlaneGeometry"}pS.packedLength=Pe.packedLength;pS.pack=function(e,t,n){return n=n??0,Pe.pack(e._vertexFormat,t,n),t};var bpe=new Pe,hnt={vertexFormat:bpe};pS.unpack=function(e,t,n){t=t??0;let i=Pe.unpack(e,t,bpe);return l(n)?(n._vertexFormat=Pe.clone(i,n._vertexFormat),n):new pS(hnt)};var ZV=new d(-.5,-.5,0),$V=new d(.5,.5,0);pS.createGeometry=function(e){let t=e._vertexFormat,n=new yn,i,o;if(t.position){if(o=new Float64Array(12),o[0]=ZV.x,o[1]=ZV.y,o[2]=0,o[3]=$V.x,o[4]=ZV.y,o[5]=0,o[6]=$V.x,o[7]=$V.y,o[8]=0,o[9]=ZV.x,o[10]=$V.y,o[11]=0,n.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:o}),t.normal){let r=new Float32Array(12);r[0]=0,r[1]=0,r[2]=1,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=1,r[9]=0,r[10]=0,r[11]=1,n.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:r})}if(t.st){let r=new Float32Array(8);r[0]=0,r[1]=0,r[2]=1,r[3]=0,r[4]=1,r[5]=1,r[6]=0,r[7]=1,n.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:r})}if(t.tangent){let r=new Float32Array(12);r[0]=1,r[1]=0,r[2]=0,r[3]=1,r[4]=0,r[5]=0,r[6]=1,r[7]=0,r[8]=0,r[9]=1,r[10]=0,r[11]=0,n.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:r})}if(t.bitangent){let r=new Float32Array(12);r[0]=0,r[1]=1,r[2]=0,r[3]=0,r[4]=1,r[5]=0,r[6]=0,r[7]=1,r[8]=0,r[9]=0,r[10]=1,r[11]=0,n.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:r})}i=new Uint16Array(6),i[0]=0,i[1]=1,i[2]=2,i[3]=0,i[4]=2,i[5]=3}return new ht({attributes:n,indices:i,primitiveType:Me.TRIANGLES,boundingSphere:new le(d.ZERO,Math.sqrt(2))})};var qO=pS;function gS(){this._workerName="createPlaneOutlineGeometry"}gS.packedLength=0;gS.pack=function(e,t){return t};gS.unpack=function(e,t,n){return l(n)?n:new gS};var Qy=new d(-.5,-.5,0),e8=new d(.5,.5,0);gS.createGeometry=function(){let e=new yn,t=new Uint16Array(8),n=new Float64Array(12);return n[0]=Qy.x,n[1]=Qy.y,n[2]=Qy.z,n[3]=e8.x,n[4]=Qy.y,n[5]=Qy.z,n[6]=e8.x,n[7]=e8.y,n[8]=Qy.z,n[9]=Qy.x,n[10]=e8.y,n[11]=Qy.z,e.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:n}),t[0]=0,t[1]=1,t[2]=1,t[3]=2,t[4]=2,t[5]=3,t[6]=3,t[7]=0,new ht({attributes:e,indices:t,primitiveType:Me.LINES,boundingSphere:new le(d.ZERO,Math.sqrt(2))})};var KO=gS;var mnt=new d,Tpe=new G;function Ant(e){this.id=e,this.vertexFormat=void 0,this.plane=void 0,this.dimensions=void 0}function vd(e,t){yi.call(this,{entity:e,scene:t,geometryOptions:new Ant(e),geometryPropertyName:"plane",observedPropertyNames:["availability","position","orientation","plane"]}),this._onEntityPropertyChanged(e,"plane",e.plane,void 0)}l(Object.create)&&(vd.prototype=Object.create(yi.prototype),vd.prototype.constructor=vd);vd.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=Kn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof Xt){let g;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(g=this._materialProperty.color.getValue(e,Tpe)),l(g)||(g=G.WHITE),o=$t.fromColor(g),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};let c=t.plane,u=this._options,f=t.computeModelMatrix(e),h=j.getValueOrDefault(c.plane,e,u.plane),A=j.getValueOrUndefined(c.dimensions,e,u.dimensions);return u.plane=h,u.dimensions=A,f=lK(h,A,f,f),new Pt({id:t,geometry:new qO(this._options),modelMatrix:f,attributes:i})};vd.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Tpe),o=this._distanceDisplayConditionProperty.getValue(e),r=t.plane,s=this._options,a=t.computeModelMatrix(e),c=j.getValueOrDefault(r.plane,e,s.plane),u=j.getValueOrUndefined(r.dimensions,e,s.dimensions);return s.plane=c,s.dimensions=u,a=lK(c,u,a,a),new Pt({id:t,geometry:new KO,modelMatrix:a,attributes:{show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:$t.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o)}})};vd.prototype._isHidden=function(e,t){return!l(t.plane)||!l(t.dimensions)||!l(e.position)||yi.prototype._isHidden.call(this,e,t)};vd.prototype._getIsClosed=function(e){return!1};vd.prototype._isDynamic=function(e,t){return!e.position.isConstant||!j.isConstant(e.orientation)||!t.plane.isConstant||!t.dimensions.isConstant||!j.isConstant(t.outlineWidth)};vd.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof Xt,i=this._options;i.vertexFormat=n?gn.VERTEX_FORMAT:Eo.MaterialSupport.TEXTURED.vertexFormat,i.plane=t.plane.getValue(je.MINIMUM_VALUE,i.plane),i.dimensions=t.dimensions.getValue(je.MINIMUM_VALUE,i.dimensions)};vd.DynamicGeometryUpdater=_S;function _S(e,t,n){_i.call(this,e,t,n)}l(Object.create)&&(_S.prototype=Object.create(_i.prototype),_S.prototype.constructor=_S);_S.prototype._isHidden=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(e.position,n,mnt);return!l(o)||!l(i.plane)||!l(i.dimensions)||_i.prototype._isHidden.call(this,e,t,n)};_S.prototype._setOptions=function(e,t,n){let i=this._options;i.plane=j.getValueOrDefault(t.plane,n,i.plane),i.dimensions=j.getValueOrUndefined(t.dimensions,n,i.dimensions)};var pnt=new d,gnt=new d,_nt=new d,ynt=new d,Cnt=new J,Ent=new J,Int=new N;function lK(e,t,n,i){let o=e.normal,r=e.distance,s=d.multiplyByScalar(o,-r,_nt),a=d.clone(d.UNIT_Z,gnt);D.equalsEpsilon(Math.abs(d.dot(a,o)),1,D.EPSILON8)&&(a=d.clone(d.UNIT_Y,a));let c=d.cross(a,o,pnt);a=d.cross(o,c,a),d.normalize(c,c),d.normalize(a,a);let u=Cnt;J.setColumn(u,0,c,u),J.setColumn(u,1,a,u),J.setColumn(u,2,o,u);let f=d.fromElements(t.x,t.y,1,ynt),h=J.multiplyByScale(u,f,Ent),A=N.fromRotationTranslation(h,s,Int);return N.multiplyTransformation(n,A,i)}vd.createPrimitiveMatrix=lK;var XO=vd;var xnt=new d,bnt=new Ye,Tnt=new U,Snt=new U,wnt=new d,Bnt=new d,Dnt=new d,JO=new d,vnt=new d,Pnt=new d,Spe=new Le,Rnt=new J,Mnt=new J,Nnt=new d;function Lnt(e,t,n,i,o,r,s,a,c){let u=e.positions,f=Ii.triangulate(e.positions2D,e.holes);f.length<3&&(f=[0,1,2]);let h=Oe.createTypedArray(u.length,f.length);h.set(f);let A=Rnt;if(i!==0){let p=Le.fromAxisAngle(s,i,Spe);if(A=J.fromQuaternion(p,A),t.tangent||t.bitangent){p=Le.fromAxisAngle(s,-i,Spe);let x=J.fromQuaternion(p,Mnt);a=d.normalize(J.multiplyByVector(x,a,a),a),t.bitangent&&(c=d.normalize(d.cross(s,a,c),c))}}else A=J.clone(J.IDENTITY,A);let g=Snt;t.st&&(g.x=n.x,g.y=n.y);let m=u.length,_=m*3,y=new Float64Array(_),C=t.normal?new Float32Array(_):void 0,E=t.tangent?new Float32Array(_):void 0,I=t.bitangent?new Float32Array(_):void 0,b=t.st?new Float32Array(m*2):void 0,S=0,B=0,v=0,P=0,M=0;for(let p=0;p<m;p++){let x=u[p];if(y[S++]=x.x,y[S++]=x.y,y[S++]=x.z,t.st)if(l(o)&&o.positions.length===m)b[M++]=o.positions[p].x,b[M++]=o.positions[p].y;else{let T=J.multiplyByVector(A,x,xnt),w=r(T,Tnt);U.subtract(w,g,w);let R=D.clamp(w.x/n.width,0,1),O=D.clamp(w.y/n.height,0,1);b[M++]=R,b[M++]=O}t.normal&&(C[B++]=s.x,C[B++]=s.y,C[B++]=s.z),t.tangent&&(E[P++]=a.x,E[P++]=a.y,E[P++]=a.z),t.bitangent&&(I[v++]=c.x,I[v++]=c.y,I[v++]=c.z)}let L=new yn;return t.position&&(L.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:y})),t.normal&&(L.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:C})),t.tangent&&(L.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:E})),t.bitangent&&(L.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:I})),t.st&&(L.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:b})),new ht({attributes:L,indices:h,primitiveType:Me.TRIANGLES})}function Z0(e){e=e??V.EMPTY_OBJECT;let t=e.polygonHierarchy,n=e.textureCoordinates,i=e.vertexFormat??Pe.DEFAULT;this._vertexFormat=Pe.clone(i),this._polygonHierarchy=t,this._stRotation=e.stRotation??0,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._workerName="createCoplanarPolygonGeometry",this._textureCoordinates=n,this.packedLength=$n.computeHierarchyPackedLength(t,d)+Pe.packedLength+te.packedLength+(l(n)?$n.computeHierarchyPackedLength(n,U):1)+2}Z0.fromPositions=function(e){e=e??V.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions},vertexFormat:e.vertexFormat,stRotation:e.stRotation,ellipsoid:e.ellipsoid,textureCoordinates:e.textureCoordinates};return new Z0(t)};Z0.pack=function(e,t,n){return n=n??0,n=$n.packPolygonHierarchy(e._polygonHierarchy,t,n,d),te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._stRotation,l(e._textureCoordinates)?n=$n.packPolygonHierarchy(e._textureCoordinates,t,n,U):t[n++]=-1,t[n++]=e.packedLength,t};var Ont=te.clone(te.UNIT_SPHERE),Fnt=new Pe,Qnt={polygonHierarchy:{}};Z0.unpack=function(e,t,n){t=t??0;let i=$n.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=te.unpack(e,t,Ont);t+=te.packedLength;let r=Pe.unpack(e,t,Fnt);t+=Pe.packedLength;let s=e[t++],a=e[t]===-1?void 0:$n.unpackPolygonHierarchy(e,t,U);l(a)?(t=a.startingIndex,delete a.startingIndex):t++;let c=e[t++];return l(n)||(n=new Z0(Qnt)),n._polygonHierarchy=i,n._ellipsoid=te.clone(o,n._ellipsoid),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._stRotation=s,n._textureCoordinates=a,n.packedLength=c,n};Z0.createGeometry=function(e){let t=e._vertexFormat,n=e._polygonHierarchy,i=e._stRotation,o=e._textureCoordinates,r=l(o),s=n.positions;if(s=Mo(s,d.equalsEpsilon,!0),s.length<3)return;let a=wnt,c=Bnt,u=Dnt,f=vnt,h=Pnt;if(!ug.computeProjectTo2DArguments(s,JO,f,h))return;if(a=d.cross(f,h,a),a=d.normalize(a,a),!d.equalsEpsilon(JO,d.ZERO,D.EPSILON6)){let M=e._ellipsoid.geodeticSurfaceNormal(JO,Nnt);d.dot(a,M)<0&&(a=d.negate(a,a),f=d.negate(f,f))}let g=ug.createProjectPointsTo2DFunction(JO,f,h),m=ug.createProjectPointTo2DFunction(JO,f,h);t.tangent&&(c=d.clone(f,c)),t.bitangent&&(u=d.clone(h,u));let _=$n.polygonsFromHierarchy(n,r,g,!1),y=_.hierarchy,C=_.polygons,E=function(M){return M},I=r?$n.polygonsFromHierarchy(o,!0,E,!1).polygons:void 0;if(y.length===0)return;s=y[0].outerRing;let b=le.fromPoints(s),S=$n.computeBoundingRectangle(a,m,s,i,bnt),B=[];for(let M=0;M<C.length;M++){let L=new Pt({geometry:Lnt(C[M],t,S,i,r?I[M]:void 0,m,a,c,u)});B.push(L)}let v=Vn.combineInstances(B)[0];v.attributes.position.values=new Float64Array(v.attributes.position.values),v.indices=Oe.createTypedArray(v.attributes.position.values.length/3,v.indices);let P=v.attributes;return t.position||delete P.position,new ht({attributes:P,indices:v.indices,primitiveType:v.primitiveType,boundingSphere:b})};var ZO=Z0;var wpe=[],t8=[];function knt(e,t,n,i,o){let s=ys.fromPoints(t,e).projectPointsOntoPlane(t,wpe);Ii.computeWindingOrder2D(s)===Ls.CLOCKWISE&&(s.reverse(),t=t.slice().reverse());let c,u,f=t.length,h=0;if(i)for(c=new Float64Array(f*2*3),u=0;u<f;u++){let m=t[u],_=t[(u+1)%f];c[h++]=m.x,c[h++]=m.y,c[h++]=m.z,c[h++]=_.x,c[h++]=_.y,c[h++]=_.z}else{let m=0;if(o===cn.GEODESIC)for(u=0;u<f;u++)m+=$n.subdivideLineCount(t[u],t[(u+1)%f],n);else if(o===cn.RHUMB)for(u=0;u<f;u++)m+=$n.subdivideRhumbLineCount(e,t[u],t[(u+1)%f],n);for(c=new Float64Array(m*3),u=0;u<f;u++){let _;o===cn.GEODESIC?_=$n.subdivideLine(t[u],t[(u+1)%f],n,t8):o===cn.RHUMB&&(_=$n.subdivideRhumbLine(e,t[u],t[(u+1)%f],n,t8));let y=_.length;for(let C=0;C<y;++C)c[h++]=_[C]}}f=c.length/3;let A=f*2,g=Oe.createTypedArray(f,A);for(h=0,u=0;u<f-1;u++)g[h++]=u,g[h++]=u+1;return g[h++]=f-1,g[h++]=0,new Pt({geometry:new ht({attributes:new yn({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:c})}),indices:g,primitiveType:Me.LINES})})}function Unt(e,t,n,i,o){let s=ys.fromPoints(t,e).projectPointsOntoPlane(t,wpe);Ii.computeWindingOrder2D(s)===Ls.CLOCKWISE&&(s.reverse(),t=t.slice().reverse());let c,u,f=t.length,h=new Array(f),A=0;if(i)for(c=new Float64Array(f*2*3*2),u=0;u<f;++u){h[u]=A/3;let y=t[u],C=t[(u+1)%f];c[A++]=y.x,c[A++]=y.y,c[A++]=y.z,c[A++]=C.x,c[A++]=C.y,c[A++]=C.z}else{let y=0;if(o===cn.GEODESIC)for(u=0;u<f;u++)y+=$n.subdivideLineCount(t[u],t[(u+1)%f],n);else if(o===cn.RHUMB)for(u=0;u<f;u++)y+=$n.subdivideRhumbLineCount(e,t[u],t[(u+1)%f],n);for(c=new Float64Array(y*3*2),u=0;u<f;++u){h[u]=A/3;let C;o===cn.GEODESIC?C=$n.subdivideLine(t[u],t[(u+1)%f],n,t8):o===cn.RHUMB&&(C=$n.subdivideRhumbLine(e,t[u],t[(u+1)%f],n,t8));let E=C.length;for(let I=0;I<E;++I)c[A++]=C[I]}}f=c.length/6;let g=h.length,m=(f*2+g)*2,_=Oe.createTypedArray(f+g,m);for(A=0,u=0;u<f;++u)_[A++]=u,_[A++]=(u+1)%f,_[A++]=u+f,_[A++]=(u+1)%f+f;for(u=0;u<g;u++){let y=h[u];_[A++]=y,_[A++]=y+f}return new Pt({geometry:new ht({attributes:new yn({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:c})}),indices:_,primitiveType:Me.LINES})})}function $0(e){let t=e.polygonHierarchy,n=e.ellipsoid??te.default,i=e.granularity??D.RADIANS_PER_DEGREE,o=e.perPositionHeight??!1,r=o&&l(e.extrudedHeight),s=e.arcType??cn.GEODESIC,a=e.height??0,c=e.extrudedHeight??a;if(!r){let u=Math.max(a,c);c=Math.min(a,c),a=u}this._ellipsoid=te.clone(n),this._granularity=i,this._height=a,this._extrudedHeight=c,this._arcType=s,this._polygonHierarchy=t,this._perPositionHeight=o,this._perPositionHeightExtrude=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createPolygonOutlineGeometry",this.packedLength=$n.computeHierarchyPackedLength(t,d)+te.packedLength+8}$0.pack=function(e,t,n){return n=n??0,n=$n.packPolygonHierarchy(e._polygonHierarchy,t,n,d),te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._granularity,t[n++]=e._perPositionHeightExtrude?1:0,t[n++]=e._perPositionHeight?1:0,t[n++]=e._arcType,t[n++]=e._offsetAttribute??-1,t[n]=e.packedLength,t};var Gnt=te.clone(te.UNIT_SPHERE),znt={polygonHierarchy:{}};$0.unpack=function(e,t,n){t=t??0;let i=$n.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=te.unpack(e,t,Gnt);t+=te.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++]===1,u=e[t++]===1,f=e[t++],h=e[t++],A=e[t];return l(n)||(n=new $0(znt)),n._polygonHierarchy=i,n._ellipsoid=te.clone(o,n._ellipsoid),n._height=r,n._extrudedHeight=s,n._granularity=a,n._perPositionHeight=u,n._perPositionHeightExtrude=c,n._arcType=f,n._offsetAttribute=h===-1?void 0:h,n.packedLength=A,n};$0.fromPositions=function(e){e=e??V.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions},height:e.height,extrudedHeight:e.extrudedHeight,ellipsoid:e.ellipsoid,granularity:e.granularity,perPositionHeight:e.perPositionHeight,arcType:e.arcType,offsetAttribute:e.offsetAttribute};return new $0(t)};$0.createGeometry=function(e){let t=e._ellipsoid,n=e._granularity,i=e._polygonHierarchy,o=e._perPositionHeight,r=e._arcType,s=$n.polygonOutlinesFromHierarchy(i,!o,t);if(s.length===0)return;let a,c=[],u=D.chordLength(n,t.maximumRadius),f=e._height,h=e._extrudedHeight,A=e._perPositionHeightExtrude||!D.equalsEpsilon(f,h,0,D.EPSILON2),g,m;if(A)for(m=0;m<s.length;m++){if(a=Unt(t,s[m],u,o,r),a.geometry=$n.scaleToGeodeticHeightExtruded(a.geometry,f,h,t,o),l(e._offsetAttribute)){let C=a.geometry.attributes.position.values.length/3,E=new Uint8Array(C);e._offsetAttribute===hn.TOP?E=E.fill(1,0,C/2):(g=e._offsetAttribute===hn.NONE?0:1,E=E.fill(g)),a.geometry.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:E})}c.push(a)}else for(m=0;m<s.length;m++){if(a=knt(t,s[m],u,o,r),a.geometry.attributes.position.values=Ii.scaleToGeodeticHeight(a.geometry.attributes.position.values,f,t,!o),l(e._offsetAttribute)){let C=a.geometry.attributes.position.values.length;g=e._offsetAttribute===hn.NONE?0:1;let E=new Uint8Array(C/3).fill(g);a.geometry.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:E})}c.push(a)}let _=Vn.combineInstances(c)[0],y=le.fromVertices(_.attributes.position.values);return new ht({attributes:_.attributes,indices:_.indices,primitiveType:_.primitiveType,boundingSphere:y,offsetAttribute:e._offsetAttribute})};var $O=$0;var Bpe="Entity polygons cannot have both height and perPositionHeight. height will be ignored",Dpe="heightReference is not supported for entity polygons with perPositionHeight. heightReference will be ignored",vpe=new G,Ppe=d.ZERO,Rpe=new d,Mpe=new ae,Vnt=[],Hnt=new U;function Wnt(e){this.id=e,this.vertexFormat=void 0,this.polygonHierarchy=void 0,this.perPositionHeight=void 0,this.closeTop=void 0,this.closeBottom=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.offsetAttribute=void 0,this.arcType=void 0,this.textureCoordinates=void 0}function gf(e,t){ti.call(this,{entity:e,scene:t,geometryOptions:new Wnt(e),geometryPropertyName:"polygon",observedPropertyNames:["availability","polygon"]}),this._onEntityPropertyChanged(e,"polygon",e.polygon,void 0)}l(Object.create)&&(gf.prototype=Object.create(ti.prototype),gf.prototype.constructor=gf);gf.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=this._options,o={show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof Xt){let s;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(s=this._materialProperty.color.getValue(e,vpe)),l(s)||(s=G.WHITE),o.color=$t.fromColor(s)}l(i.offsetAttribute)&&(o.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Ppe,Rpe)));let r;return i.perPositionHeight&&!l(i.extrudedHeight)?r=new ZO(i):r=new Mp(i),new Pt({id:t,geometry:r,attributes:o})};gf.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=this._options,o=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,vpe),r=this._distanceDisplayConditionProperty.getValue(e),s={show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:$t.fromColor(o),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(r),offset:void 0};l(i.offsetAttribute)&&(s.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Ppe,Rpe)));let a;return i.perPositionHeight&&!l(i.extrudedHeight)?a=new Id(i):a=new $O(i),new Pt({id:t,geometry:a,attributes:s})};gf.prototype._computeCenter=function(e,t){let n=j.getValueOrUndefined(this._entity.polygon.hierarchy,e);if(!l(n))return;let i=n.positions;if(i.length===0)return;let o=this._scene.ellipsoid,r=ys.fromPoints(i,o),s=r.projectPointsOntoPlane(i,Vnt),a=s.length,c=0,u=a-1,f=new U;for(let A=0;A<a;u=A++){let g=s[A],m=s[u],_=g.x*m.y-m.x*g.y,y=U.add(g,m,Hnt);y=U.multiplyByScalar(y,_,y),f=U.add(f,y,f),c+=_}let h=1/(c*3);return f=U.multiplyByScalar(f,h,f),r.projectPointOntoEllipsoid(f,t)};gf.prototype._isHidden=function(e,t){return!l(t.hierarchy)||yi.prototype._isHidden.call(this,e,t)};gf.prototype._isOnTerrain=function(e,t){let n=ti.prototype._isOnTerrain.call(this,e,t),i=t.perPositionHeight,o=l(i)&&(i.isConstant?i.getValue(je.MINIMUM_VALUE):!0);return n&&!o};gf.prototype._isDynamic=function(e,t){return!t.hierarchy.isConstant||!j.isConstant(t.height)||!j.isConstant(t.extrudedHeight)||!j.isConstant(t.granularity)||!j.isConstant(t.stRotation)||!j.isConstant(t.textureCoordinates)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.perPositionHeight)||!j.isConstant(t.closeTop)||!j.isConstant(t.closeBottom)||!j.isConstant(t.zIndex)||!j.isConstant(t.arcType)||this._onTerrain&&!j.isConstant(this._materialProperty)&&!(this._materialProperty instanceof Xt)};gf.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof Xt,i=this._options;i.vertexFormat=n?gn.VERTEX_FORMAT:Eo.MaterialSupport.TEXTURED.vertexFormat;let o=t.hierarchy.getValue(je.MINIMUM_VALUE),r=j.getValueOrUndefined(t.height,je.MINIMUM_VALUE),s=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),a=j.getValueOrUndefined(t.extrudedHeight,je.MINIMUM_VALUE),c=j.getValueOrDefault(t.extrudedHeightReference,je.MINIMUM_VALUE,Ze.NONE),u=j.getValueOrDefault(t.perPositionHeight,je.MINIMUM_VALUE,!1);r=ti.getGeometryHeight(r,s);let f;if(u?(l(r)&&(r=void 0,yt(Bpe)),s!==Ze.NONE&&u&&(r=void 0,yt(Dpe))):(l(a)&&!l(r)&&(r=0),f=ti.computeGeometryOffsetAttribute(r,s,a,c)),i.polygonHierarchy=o,i.granularity=j.getValueOrUndefined(t.granularity,je.MINIMUM_VALUE),i.stRotation=j.getValueOrUndefined(t.stRotation,je.MINIMUM_VALUE),i.perPositionHeight=u,i.closeTop=j.getValueOrDefault(t.closeTop,je.MINIMUM_VALUE,!0),i.closeBottom=j.getValueOrDefault(t.closeBottom,je.MINIMUM_VALUE,!0),i.offsetAttribute=f,i.height=r,i.arcType=j.getValueOrDefault(t.arcType,je.MINIMUM_VALUE,cn.GEODESIC),i.textureCoordinates=j.getValueOrUndefined(t.textureCoordinates,je.MINIMUM_VALUE),a=ti.getGeometryExtrudedHeight(a,c),a===ti.CLAMP_TO_GROUND){let h=Mp.computeRectangleFromPositions(i.polygonHierarchy.positions,i.ellipsoid,i.arcType,Mpe);a=Ti.getMinimumMaximumHeights(h).minimumTerrainHeight}i.extrudedHeight=a};gf.prototype._getIsClosed=function(e){let t=e.height,n=e.extrudedHeight,i=l(n)&&n!==t;return!e.perPositionHeight&&(!i&&t===0||i&&e.closeTop&&e.closeBottom)};gf.DynamicGeometryUpdater=yS;function yS(e,t,n){_i.call(this,e,t,n)}l(Object.create)&&(yS.prototype=Object.create(_i.prototype),yS.prototype.constructor=yS);yS.prototype._isHidden=function(e,t,n){return!l(this._options.polygonHierarchy)||_i.prototype._isHidden.call(this,e,t,n)};yS.prototype._setOptions=function(e,t,n){let i=this._options;i.polygonHierarchy=j.getValueOrUndefined(t.hierarchy,n);let o=j.getValueOrUndefined(t.height,n),r=j.getValueOrDefault(t.heightReference,n,Ze.NONE),s=j.getValueOrDefault(t.extrudedHeightReference,n,Ze.NONE),a=j.getValueOrUndefined(t.extrudedHeight,n),c=j.getValueOrUndefined(t.perPositionHeight,n);o=ti.getGeometryHeight(o,s);let u;if(c?(l(o)&&(o=void 0,yt(Bpe)),r!==Ze.NONE&&c&&(o=void 0,yt(Dpe))):(l(a)&&!l(o)&&(o=0),u=ti.computeGeometryOffsetAttribute(o,r,a,s)),i.granularity=j.getValueOrUndefined(t.granularity,n),i.stRotation=j.getValueOrUndefined(t.stRotation,n),i.textureCoordinates=j.getValueOrUndefined(t.textureCoordinates,n),i.perPositionHeight=j.getValueOrUndefined(t.perPositionHeight,n),i.closeTop=j.getValueOrDefault(t.closeTop,n,!0),i.closeBottom=j.getValueOrDefault(t.closeBottom,n,!0),i.offsetAttribute=u,i.height=o,i.arcType=j.getValueOrDefault(t.arcType,n,cn.GEODESIC),a=ti.getGeometryExtrudedHeight(a,s),a===ti.CLAMP_TO_GROUND){let f=Mp.computeRectangleFromPositions(i.polygonHierarchy.positions,i.ellipsoid,i.arcType,Mpe);a=Ti.getMinimumMaximumHeights(f).minimumTerrainHeight}i.extrudedHeight=a};var eF=gf;function jnt(e,t,n,i){let o=new yn;i.position&&(o.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:e}));let r=t.length,s=e.length/3,a=(s-r*2)/(r*2),c=Ii.triangulate(t),u=(a-1)*r*6+c.length*2,f=Oe.createTypedArray(s,u),h,A,g,m,_,y,C=r*2,E=0;for(h=0;h<a-1;h++){for(A=0;A<r-1;A++)g=A*2+h*r*2,y=g+C,m=g+1,_=m+C,f[E++]=m,f[E++]=g,f[E++]=_,f[E++]=_,f[E++]=g,f[E++]=y;g=r*2-2+h*r*2,m=g+1,_=m+C,y=g+C,f[E++]=m,f[E++]=g,f[E++]=_,f[E++]=_,f[E++]=g,f[E++]=y}if(i.st||i.tangent||i.bitangent){let S=new Float32Array(s*2),B=1/(a-1),v=1/n.height,P=n.height/2,M,L,p=0;for(h=0;h<a;h++){for(M=h*B,L=v*(t[0].y+P),S[p++]=M,S[p++]=L,A=1;A<r;A++)L=v*(t[A].y+P),S[p++]=M,S[p++]=L,S[p++]=M,S[p++]=L;L=v*(t[0].y+P),S[p++]=M,S[p++]=L}for(A=0;A<r;A++)M=0,L=v*(t[A].y+P),S[p++]=M,S[p++]=L;for(A=0;A<r;A++)M=(a-1)*B,L=v*(t[A].y+P),S[p++]=M,S[p++]=L;o.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:new Float32Array(S)})}let I=s-r*2;for(h=0;h<c.length;h+=3){let S=c[h]+I,B=c[h+1]+I,v=c[h+2]+I;f[E++]=S,f[E++]=B,f[E++]=v,f[E++]=v+r,f[E++]=B+r,f[E++]=S+r}let b=new ht({attributes:o,indices:f,boundingSphere:le.fromVertices(e),primitiveType:Me.TRIANGLES});if(i.normal&&(b=Vn.computeNormal(b)),i.tangent||i.bitangent){try{b=Vn.computeTangentAndBitangent(b)}catch{yt("polyline-volume-tangent-bitangent","Unable to compute tangents and bitangents for polyline volume geometry")}i.tangent||(b.attributes.tangent=void 0),i.bitangent||(b.attributes.bitangent=void 0),i.st||(b.attributes.st=void 0)}return b}function nF(e){e=e??V.EMPTY_OBJECT;let t=e.polylinePositions,n=e.shapePositions;this._positions=t,this._shape=n,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._cornerType=e.cornerType??ji.ROUNDED,this._vertexFormat=Pe.clone(e.vertexFormat??Pe.DEFAULT),this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._workerName="createPolylineVolumeGeometry";let i=1+t.length*d.packedLength;i+=1+n.length*U.packedLength,this.packedLength=i+te.packedLength+Pe.packedLength+2}nF.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._shape;for(r=s.length,t[n++]=r,i=0;i<r;++i,n+=U.packedLength)U.pack(s[i],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._cornerType,t[n]=e._granularity,t};var Npe=te.clone(te.UNIT_SPHERE),Lpe=new Pe,tF={polylinePositions:void 0,shapePositions:void 0,ellipsoid:Npe,vertexFormat:Lpe,cornerType:void 0,granularity:void 0};nF.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=new Array(o);for(i=0;i<o;++i,t+=U.packedLength)s[i]=U.unpack(e,t);let a=te.unpack(e,t,Npe);t+=te.packedLength;let c=Pe.unpack(e,t,Lpe);t+=Pe.packedLength;let u=e[t++],f=e[t];return l(n)?(n._positions=r,n._shape=s,n._ellipsoid=te.clone(a,n._ellipsoid),n._vertexFormat=Pe.clone(c,n._vertexFormat),n._cornerType=u,n._granularity=f,n):(tF.polylinePositions=r,tF.shapePositions=s,tF.cornerType=u,tF.granularity=f,new nF(tF))};var Ynt=new Ye;nF.createGeometry=function(e){let t=e._positions,n=Mo(t,d.equalsEpsilon),i=e._shape;if(i=jh.removeDuplicatesFromShape(i),n.length<2||i.length<3)return;Ii.computeWindingOrder2D(i)===Ls.CLOCKWISE&&i.reverse();let o=Ye.fromPoints(i,Ynt),r=jh.computePositions(n,i,o,e,!0);return jnt(r,i,o,e._vertexFormat)};var iF=nF;function qnt(e,t){let n=new yn;n.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:e});let i=t.length,o=n.position.values.length/3,s=e.length/3/i,a=Oe.createTypedArray(o,2*i*(s+1)),c,u,f=0;c=0;let h=c*i;for(u=0;u<i-1;u++)a[f++]=u+h,a[f++]=u+h+1;for(a[f++]=i-1+h,a[f++]=h,c=s-1,h=c*i,u=0;u<i-1;u++)a[f++]=u+h,a[f++]=u+h+1;for(a[f++]=i-1+h,a[f++]=h,c=0;c<s-1;c++){let g=i*c,m=g+i;for(u=0;u<i;u++)a[f++]=u+g,a[f++]=u+m}return new ht({attributes:n,indices:Oe.createTypedArray(o,a),boundingSphere:le.fromVertices(e),primitiveType:Me.LINES})}function rF(e){e=e??V.EMPTY_OBJECT;let t=e.polylinePositions,n=e.shapePositions;this._positions=t,this._shape=n,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._cornerType=e.cornerType??ji.ROUNDED,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._workerName="createPolylineVolumeOutlineGeometry";let i=1+t.length*d.packedLength;i+=1+n.length*U.packedLength,this.packedLength=i+te.packedLength+2}rF.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._shape;for(r=s.length,t[n++]=r,i=0;i<r;++i,n+=U.packedLength)U.pack(s[i],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._cornerType,t[n]=e._granularity,t};var Ope=te.clone(te.UNIT_SPHERE),oF={polylinePositions:void 0,shapePositions:void 0,ellipsoid:Ope,height:void 0,cornerType:void 0,granularity:void 0};rF.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=new Array(o);for(i=0;i<o;++i,t+=U.packedLength)s[i]=U.unpack(e,t);let a=te.unpack(e,t,Ope);t+=te.packedLength;let c=e[t++],u=e[t];return l(n)?(n._positions=r,n._shape=s,n._ellipsoid=te.clone(a,n._ellipsoid),n._cornerType=c,n._granularity=u,n):(oF.polylinePositions=r,oF.shapePositions=s,oF.cornerType=c,oF.granularity=u,new rF(oF))};var Knt=new Ye;rF.createGeometry=function(e){let t=e._positions,n=Mo(t,d.equalsEpsilon),i=e._shape;if(i=jh.removeDuplicatesFromShape(i),n.length<2||i.length<3)return;Ii.computeWindingOrder2D(i)===Ls.CLOCKWISE&&i.reverse();let o=Ye.fromPoints(i,Knt),r=jh.computePositions(n,i,o,e,!1);return qnt(r,i)};var sF=rF;var Fpe=new G;function Xnt(e){this.id=e,this.vertexFormat=void 0,this.polylinePositions=void 0,this.shapePositions=void 0,this.cornerType=void 0,this.granularity=void 0}function hA(e,t){yi.call(this,{entity:e,scene:t,geometryOptions:new Xnt(e),geometryPropertyName:"polylineVolume",observedPropertyNames:["availability","polylineVolume"]}),this._onEntityPropertyChanged(e,"polylineVolume",e.polylineVolume,void 0)}l(Object.create)&&(hA.prototype=Object.create(yi.prototype),hA.prototype.constructor=hA);hA.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=Kn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof Xt){let c;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(c=this._materialProperty.color.getValue(e,Fpe)),l(c)||(c=G.WHITE),o=$t.fromColor(c),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};return new Pt({id:t,geometry:new iF(this._options),attributes:i})};hA.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Fpe),o=this._distanceDisplayConditionProperty.getValue(e);return new Pt({id:t,geometry:new sF(this._options),attributes:{show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:$t.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o)}})};hA.prototype._isHidden=function(e,t){return!l(t.positions)||!l(t.shape)||yi.prototype._isHidden.call(this,e,t)};hA.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!t.shape.isConstant||!j.isConstant(t.granularity)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.cornerType)};hA.prototype._setStaticOptions=function(e,t){let n=t.granularity,i=t.cornerType,o=this._options,r=this._materialProperty instanceof Xt;o.vertexFormat=r?gn.VERTEX_FORMAT:Eo.MaterialSupport.TEXTURED.vertexFormat,o.polylinePositions=t.positions.getValue(je.MINIMUM_VALUE,o.polylinePositions),o.shapePositions=t.shape.getValue(je.MINIMUM_VALUE,o.shape),o.granularity=l(n)?n.getValue(je.MINIMUM_VALUE):void 0,o.cornerType=l(i)?i.getValue(je.MINIMUM_VALUE):void 0};hA.DynamicGeometryUpdater=CS;function CS(e,t,n){_i.call(this,e,t,n)}l(Object.create)&&(CS.prototype=Object.create(_i.prototype),CS.prototype.constructor=CS);CS.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.polylinePositions)||!l(i.shapePositions)||_i.prototype._isHidden.call(this,e,t,n)};CS.prototype._setOptions=function(e,t,n){let i=this._options;i.polylinePositions=j.getValueOrUndefined(t.positions,n,i.polylinePositions),i.shapePositions=j.getValueOrUndefined(t.shape,n),i.granularity=j.getValueOrUndefined(t.granularity,n),i.cornerType=j.getValueOrUndefined(t.cornerType,n)};var aF=hA;var uK=new d,Upe=new d,Gpe=new d,zpe=new d,Vpe=new ae,Jnt=new U,Znt=new le,$nt=new le;function Hpe(e,t){let n=new ht({attributes:new yn,primitiveType:Me.TRIANGLES});return n.attributes.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:t.positions}),e.normal&&(n.attributes.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:t.normals})),e.tangent&&(n.attributes.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:t.tangents})),e.bitangent&&(n.attributes.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:t.bitangents})),n}function eit(e,t,n,i){let o=e.length,r=t.normal?new Float32Array(o):void 0,s=t.tangent?new Float32Array(o):void 0,a=t.bitangent?new Float32Array(o):void 0,c=0,u=zpe,f=Gpe,h=Upe;if(t.normal||t.tangent||t.bitangent)for(let A=0;A<o;A+=3){let g=d.fromArray(e,A,uK),m=c+1,_=c+2;h=n.geodeticSurfaceNormal(g,h),(t.tangent||t.bitangent)&&(d.cross(d.UNIT_Z,h,f),J.multiplyByVector(i,f,f),d.normalize(f,f),t.bitangent&&d.normalize(d.cross(h,f,u),u)),t.normal&&(r[c]=h.x,r[m]=h.y,r[_]=h.z),t.tangent&&(s[c]=f.x,s[m]=f.y,s[_]=f.z),t.bitangent&&(a[c]=u.x,a[m]=u.y,a[_]=u.z),c+=3}return Hpe(t,{positions:e,normals:r,tangents:s,bitangents:a})}var fK=new d,Wpe=new d;function tit(e,t,n){let i=e.length,o=t.normal?new Float32Array(i):void 0,r=t.tangent?new Float32Array(i):void 0,s=t.bitangent?new Float32Array(i):void 0,a=0,c=0,u=0,f=!0,h=zpe,A=Gpe,g=Upe;if(t.normal||t.tangent||t.bitangent)for(let m=0;m<i;m+=6){let _=d.fromArray(e,m,uK),y=d.fromArray(e,(m+6)%i,fK);if(f){let C=d.fromArray(e,(m+3)%i,Wpe);d.subtract(y,_,y),d.subtract(C,_,C),g=d.normalize(d.cross(C,y,g),g),f=!1}d.equalsEpsilon(y,_,D.EPSILON10)&&(f=!0),(t.tangent||t.bitangent)&&(h=n.geodeticSurfaceNormal(_,h),t.tangent&&(A=d.normalize(d.cross(h,g,A),A))),t.normal&&(o[a++]=g.x,o[a++]=g.y,o[a++]=g.z,o[a++]=g.x,o[a++]=g.y,o[a++]=g.z),t.tangent&&(r[c++]=A.x,r[c++]=A.y,r[c++]=A.z,r[c++]=A.x,r[c++]=A.y,r[c++]=A.z),t.bitangent&&(s[u++]=h.x,s[u++]=h.y,s[u++]=h.z,s[u++]=h.x,s[u++]=h.y,s[u++]=h.z)}return Hpe(t,{positions:e,normals:o,tangents:r,bitangents:s})}function jpe(e,t){let n=e._vertexFormat,i=e._ellipsoid,o=t.height,r=t.width,s=t.northCap,a=t.southCap,c=0,u=o,f=o,h=0;s&&(c=1,f-=1,h+=1),a&&(u-=1,f-=1,h+=1),h+=r*f;let A=n.position?new Float64Array(h*3):void 0,g=n.st?new Float32Array(h*2):void 0,m=0,_=0,y=uK,C=Jnt,E=Number.MAX_VALUE,I=Number.MAX_VALUE,b=-Number.MAX_VALUE,S=-Number.MAX_VALUE;for(let x=c;x<u;++x)for(let T=0;T<r;++T)Zs.computePosition(t,i,n.st,x,T,y,C),A[m++]=y.x,A[m++]=y.y,A[m++]=y.z,n.st&&(g[_++]=C.x,g[_++]=C.y,E=Math.min(E,C.x),I=Math.min(I,C.y),b=Math.max(b,C.x),S=Math.max(S,C.y));if(s&&(Zs.computePosition(t,i,n.st,0,0,y,C),A[m++]=y.x,A[m++]=y.y,A[m++]=y.z,n.st&&(g[_++]=C.x,g[_++]=C.y,E=C.x,I=C.y,b=C.x,S=C.y)),a&&(Zs.computePosition(t,i,n.st,o-1,0,y,C),A[m++]=y.x,A[m++]=y.y,A[m]=y.z,n.st&&(g[_++]=C.x,g[_]=C.y,E=Math.min(E,C.x),I=Math.min(I,C.y),b=Math.max(b,C.x),S=Math.max(S,C.y))),n.st&&(E<0||I<0||b>1||S>1))for(let x=0;x<g.length;x+=2)g[x]=(g[x]-E)/(b-E),g[x+1]=(g[x+1]-I)/(S-I);let B=eit(A,n,i,t.tangentRotationMatrix),v=6*(r-1)*(f-1);s&&(v+=3*(r-1)),a&&(v+=3*(r-1));let P=Oe.createTypedArray(h,v),M=0,L=0,p;for(p=0;p<f-1;++p){for(let x=0;x<r-1;++x){let T=M,w=T+r,R=w+1,O=T+1;P[L++]=T,P[L++]=w,P[L++]=O,P[L++]=O,P[L++]=w,P[L++]=R,++M}++M}if(s||a){let x=h-1,T=h-1;s&&a&&(x=h-2);let w,R;if(M=0,s)for(p=0;p<r-1;p++)w=M,R=w+1,P[L++]=x,P[L++]=w,P[L++]=R,++M;if(a)for(M=(f-1)*r,p=0;p<r-1;p++)w=M,R=w+1,P[L++]=w,P[L++]=T,P[L++]=R,++M}return B.indices=P,n.st&&(B.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:g})),B}function ES(e,t,n,i,o){return e[t++]=i[n],e[t++]=i[n+1],e[t++]=i[n+2],e[t++]=o[n],e[t++]=o[n+1],e[t]=o[n+2],e}function IS(e,t,n,i){return e[t++]=i[n],e[t++]=i[n+1],e[t++]=i[n],e[t]=i[n+1],e}var dK=new Pe;function nit(e,t){let n=e._shadowVolume,i=e._offsetAttribute,o=e._vertexFormat,r=e._extrudedHeight,s=e._surfaceHeight,a=e._ellipsoid,c=t.height,u=t.width,f;if(n){let it=Pe.clone(o,dK);it.normal=!0,e._vertexFormat=it}let h=jpe(e,t);n&&(e._vertexFormat=o);let A=Ii.scaleToGeodeticHeight(h.attributes.position.values,s,a,!1);A=new Float64Array(A);let g=A.length,m=g*2,_=new Float64Array(m);_.set(A);let y=Ii.scaleToGeodeticHeight(h.attributes.position.values,r,a);_.set(y,g),h.attributes.position.values=_;let C=o.normal?new Float32Array(m):void 0,E=o.tangent?new Float32Array(m):void 0,I=o.bitangent?new Float32Array(m):void 0,b=o.st?new Float32Array(m/3*2):void 0,S,B;if(o.normal){for(B=h.attributes.normal.values,C.set(B),f=0;f<g;f++)B[f]=-B[f];C.set(B,g),h.attributes.normal.values=C}if(n){B=h.attributes.normal.values,o.normal||(h.attributes.normal=void 0);let it=new Float32Array(m);for(f=0;f<g;f++)B[f]=-B[f];it.set(B,g),h.attributes.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:it})}let v,P=l(i);if(P){let it=g/3*2,nn=new Uint8Array(it);i===hn.TOP?nn=nn.fill(1,0,it/2):(v=i===hn.NONE?0:1,nn=nn.fill(v)),h.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:nn})}if(o.tangent){let it=h.attributes.tangent.values;for(E.set(it),f=0;f<g;f++)it[f]=-it[f];E.set(it,g),h.attributes.tangent.values=E}if(o.bitangent){let it=h.attributes.bitangent.values;I.set(it),I.set(it,g),h.attributes.bitangent.values=I}o.st&&(S=h.attributes.st.values,b.set(S),b.set(S,g/3*2),h.attributes.st.values=b);let M=h.indices,L=M.length,p=g/3,x=Oe.createTypedArray(m/3,L*2);for(x.set(M),f=0;f<L;f+=3)x[f+L]=M[f+2]+p,x[f+1+L]=M[f+1]+p,x[f+2+L]=M[f]+p;h.indices=x;let T=t.northCap,w=t.southCap,R=c,O=2,k=0,Q=4,z=4;T&&(O-=1,R-=1,k+=1,Q-=2,z-=1),w&&(O-=1,R-=1,k+=1,Q-=2,z-=1),k+=O*u+2*R-Q;let F=(k+z)*2,H=new Float64Array(F*3),W=n?new Float32Array(F*3):void 0,Z=P?new Uint8Array(F):void 0,Y=o.st?new Float32Array(F*2):void 0,$=i===hn.TOP;P&&!$&&(v=i===hn.ALL?1:0,Z=Z.fill(v));let X=0,he=0,ge=0,fe=0,ye=u*R,xe;for(f=0;f<ye;f+=u)xe=f*3,H=ES(H,X,xe,A,y),X+=6,o.st&&(Y=IS(Y,he,f*2,S),he+=4),n&&(ge+=3,W[ge++]=B[xe],W[ge++]=B[xe+1],W[ge++]=B[xe+2]),$&&(Z[fe++]=1,fe+=1);if(w){let it=T?ye+1:ye;for(xe=it*3,f=0;f<2;f++)H=ES(H,X,xe,A,y),X+=6,o.st&&(Y=IS(Y,he,it*2,S),he+=4),n&&(ge+=3,W[ge++]=B[xe],W[ge++]=B[xe+1],W[ge++]=B[xe+2]),$&&(Z[fe++]=1,fe+=1)}else for(f=ye-u;f<ye;f++)xe=f*3,H=ES(H,X,xe,A,y),X+=6,o.st&&(Y=IS(Y,he,f*2,S),he+=4),n&&(ge+=3,W[ge++]=B[xe],W[ge++]=B[xe+1],W[ge++]=B[xe+2]),$&&(Z[fe++]=1,fe+=1);for(f=ye-1;f>0;f-=u)xe=f*3,H=ES(H,X,xe,A,y),X+=6,o.st&&(Y=IS(Y,he,f*2,S),he+=4),n&&(ge+=3,W[ge++]=B[xe],W[ge++]=B[xe+1],W[ge++]=B[xe+2]),$&&(Z[fe++]=1,fe+=1);if(T){let it=ye;for(xe=it*3,f=0;f<2;f++)H=ES(H,X,xe,A,y),X+=6,o.st&&(Y=IS(Y,he,it*2,S),he+=4),n&&(ge+=3,W[ge++]=B[xe],W[ge++]=B[xe+1],W[ge++]=B[xe+2]),$&&(Z[fe++]=1,fe+=1)}else for(f=u-1;f>=0;f--)xe=f*3,H=ES(H,X,xe,A,y),X+=6,o.st&&(Y=IS(Y,he,f*2,S),he+=4),n&&(ge+=3,W[ge++]=B[xe],W[ge++]=B[xe+1],W[ge++]=B[xe+2]),$&&(Z[fe++]=1,fe+=1);let ve=tit(H,o,a);o.st&&(ve.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:Y})),n&&(ve.attributes.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:W})),P&&(ve.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:Z}));let Te=Oe.createTypedArray(F,k*6),ke,Ge,Ke,tt;g=H.length/3;let en=0;for(f=0;f<g-1;f+=2){ke=f,tt=(ke+2)%g;let it=d.fromArray(H,ke*3,fK),nn=d.fromArray(H,tt*3,Wpe);d.equalsEpsilon(it,nn,D.EPSILON10)||(Ge=(ke+1)%g,Ke=(Ge+2)%g,Te[en++]=ke,Te[en++]=Ge,Te[en++]=tt,Te[en++]=tt,Te[en++]=Ge,Te[en++]=Ke)}return ve.indices=Te,ve=Vn.combineInstances([new Pt({geometry:h}),new Pt({geometry:ve})]),ve[0]}var iit=[new d,new d,new d,new d],Ype=new Ae,oit=new Ae;function hK(e,t,n,i,o){if(n===0)return ae.clone(e,o);let r=Zs.computeOptions(e,t,n,0,Vpe,Ype),s=r.height,a=r.width,c=iit;return Zs.computePosition(r,i,!1,0,0,c[0]),Zs.computePosition(r,i,!1,0,a-1,c[1]),Zs.computePosition(r,i,!1,s-1,0,c[2]),Zs.computePosition(r,i,!1,s-1,a-1,c[3]),ae.fromCartesianArray(c,i,o)}function mA(e){e=e??V.EMPTY_OBJECT;let t=e.rectangle,n=e.height??0,i=e.extrudedHeight??n;this._rectangle=ae.clone(t),this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._surfaceHeight=Math.max(n,i),this._rotation=e.rotation??0,this._stRotation=e.stRotation??0,this._vertexFormat=Pe.clone(e.vertexFormat??Pe.DEFAULT),this._extrudedHeight=Math.min(n,i),this._shadowVolume=e.shadowVolume??!1,this._workerName="createRectangleGeometry",this._offsetAttribute=e.offsetAttribute,this._rotatedRectangle=void 0,this._textureCoordinateRotationPoints=void 0}mA.packedLength=ae.packedLength+te.packedLength+Pe.packedLength+7;mA.pack=function(e,t,n){return n=n??0,ae.pack(e._rectangle,t,n),n+=ae.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._granularity,t[n++]=e._surfaceHeight,t[n++]=e._rotation,t[n++]=e._stRotation,t[n++]=e._extrudedHeight,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var qpe=new ae,Kpe=te.clone(te.UNIT_SPHERE),ky={rectangle:qpe,ellipsoid:Kpe,vertexFormat:dK,granularity:void 0,height:void 0,rotation:void 0,stRotation:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};mA.unpack=function(e,t,n){t=t??0;let i=ae.unpack(e,t,qpe);t+=ae.packedLength;let o=te.unpack(e,t,Kpe);t+=te.packedLength;let r=Pe.unpack(e,t,dK);t+=Pe.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++]===1,A=e[t];return l(n)?(n._rectangle=ae.clone(i,n._rectangle),n._ellipsoid=te.clone(o,n._ellipsoid),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._granularity=s,n._surfaceHeight=a,n._rotation=c,n._stRotation=u,n._extrudedHeight=f,n._shadowVolume=h,n._offsetAttribute=A===-1?void 0:A,n):(ky.granularity=s,ky.height=a,ky.rotation=c,ky.stRotation=u,ky.extrudedHeight=f,ky.shadowVolume=h,ky.offsetAttribute=A===-1?void 0:A,new mA(ky))};mA.computeRectangle=function(e,t){e=e??V.EMPTY_OBJECT;let n=e.rectangle,i=e.granularity??D.RADIANS_PER_DEGREE,o=e.ellipsoid??te.default,r=e.rotation??0;return hK(n,i,r,o,t)};var rit=new J,Qpe=new Le,sit=new Ae;mA.createGeometry=function(e){if(D.equalsEpsilon(e._rectangle.north,e._rectangle.south,D.EPSILON10)||D.equalsEpsilon(e._rectangle.east,e._rectangle.west,D.EPSILON10))return;let t=e._rectangle,n=e._ellipsoid,i=e._rotation,o=e._stRotation,r=e._vertexFormat,s=Zs.computeOptions(t,e._granularity,i,o,Vpe,Ype,oit),a=rit;if(o!==0||i!==0){let g=ae.center(t,sit),m=n.geodeticSurfaceNormalCartographic(g,fK);Le.fromAxisAngle(m,-o,Qpe),J.fromQuaternion(Qpe,a)}else J.clone(J.IDENTITY,a);let c=e._surfaceHeight,u=e._extrudedHeight,f=!D.equalsEpsilon(c,u,0,D.EPSILON2);s.lonScalar=1/e._rectangle.width,s.latScalar=1/e._rectangle.height,s.tangentRotationMatrix=a;let h,A;if(t=e._rectangle,f){h=nit(e,s);let g=le.fromRectangle3D(t,n,c,$nt),m=le.fromRectangle3D(t,n,u,Znt);A=le.union(g,m)}else{if(h=jpe(e,s),h.attributes.position.values=Ii.scaleToGeodeticHeight(h.attributes.position.values,c,n,!1),l(e._offsetAttribute)){let g=h.attributes.position.values.length,m=e._offsetAttribute===hn.NONE?0:1,_=new Uint8Array(g/3).fill(m);h.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:_})}A=le.fromRectangle3D(t,n,c)}return r.position||delete h.attributes.position,new ht({attributes:h.attributes,indices:h.indices,primitiveType:h.primitiveType,boundingSphere:A,offsetAttribute:e._offsetAttribute})};mA.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new mA({rectangle:e._rectangle,rotation:e._rotation,ellipsoid:o,stRotation:e._stRotation,granularity:i,extrudedHeight:s,height:r,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0})};var kpe=new ae,ait=[new U,new U,new U],cit=new Gi,lit=new Ae;function uit(e){if(e._stRotation===0)return[0,0,0,1,1,0];let t=ae.clone(e._rectangle,kpe),n=e._granularity,i=e._ellipsoid,o=e._rotation-e._stRotation,r=hK(t,n,o,i,kpe),s=ait;s[0].x=r.west,s[0].y=r.south,s[1].x=r.west,s[1].y=r.north,s[2].x=r.east,s[2].y=r.south;let a=e.rectangle,c=Gi.fromRotation(e._stRotation,cit),u=ae.center(a,lit);for(let m=0;m<3;++m){let _=s[m];_.x-=u.longitude,_.y-=u.latitude,Gi.multiplyByVector(c,_,_),_.x+=u.longitude,_.y+=u.latitude,_.x=(_.x-a.west)/a.width,_.y=(_.y-a.south)/a.height}let f=s[0],h=s[1],A=s[2],g=new Array(6);return U.pack(f,g),U.pack(h,g,2),U.pack(A,g,4),g}Object.defineProperties(mA.prototype,{rectangle:{get:function(){return l(this._rotatedRectangle)||(this._rotatedRectangle=hK(this._rectangle,this._granularity,this._rotation,this._ellipsoid)),this._rotatedRectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=uit(this)),this._textureCoordinateRotationPoints}}});var eI=mA;var Xpe=new G,Jpe=d.ZERO,Zpe=new d,$pe=new ae,fit=new ae,dit=new Ae;function hit(e){this.id=e,this.vertexFormat=void 0,this.rectangle=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.rotation=void 0,this.offsetAttribute=void 0}function em(e,t){ti.call(this,{entity:e,scene:t,geometryOptions:new hit(e),geometryPropertyName:"rectangle",observedPropertyNames:["availability","rectangle"]}),this._onEntityPropertyChanged(e,"rectangle",e.rectangle,void 0)}l(Object.create)&&(em.prototype=Object.create(ti.prototype),em.prototype.constructor=em);em.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof Xt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,Xpe)),l(o)||(o=G.WHITE),i.color=$t.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Jpe,Zpe))),new Pt({id:t,geometry:new eI(this._options),attributes:i})};em.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Xpe),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:$t.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=uo.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Jpe,Zpe))),new Pt({id:t,geometry:new w0(this._options),attributes:r})};em.prototype._computeCenter=function(e,t){let n=j.getValueOrUndefined(this._entity.rectangle.coordinates,e,fit);if(!l(n))return;let i=ae.center(n,dit);return Ae.toCartesian(i,te.default,t)};em.prototype._isHidden=function(e,t){return!l(t.coordinates)||yi.prototype._isHidden.call(this,e,t)};em.prototype._isDynamic=function(e,t){return!t.coordinates.isConstant||!j.isConstant(t.height)||!j.isConstant(t.extrudedHeight)||!j.isConstant(t.granularity)||!j.isConstant(t.stRotation)||!j.isConstant(t.rotation)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.zIndex)||this._onTerrain&&!j.isConstant(this._materialProperty)&&!(this._materialProperty instanceof Xt)};em.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof Xt,i=j.getValueOrUndefined(t.height,je.MINIMUM_VALUE),o=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),r=j.getValueOrUndefined(t.extrudedHeight,je.MINIMUM_VALUE),s=j.getValueOrDefault(t.extrudedHeightReference,je.MINIMUM_VALUE,Ze.NONE);l(r)&&!l(i)&&(i=0);let a=this._options;a.vertexFormat=n?gn.VERTEX_FORMAT:Eo.MaterialSupport.TEXTURED.vertexFormat,a.rectangle=t.coordinates.getValue(je.MINIMUM_VALUE,a.rectangle),a.granularity=j.getValueOrUndefined(t.granularity,je.MINIMUM_VALUE),a.stRotation=j.getValueOrUndefined(t.stRotation,je.MINIMUM_VALUE),a.rotation=j.getValueOrUndefined(t.rotation,je.MINIMUM_VALUE),a.offsetAttribute=ti.computeGeometryOffsetAttribute(i,o,r,s),a.height=ti.getGeometryHeight(i,o),r=ti.getGeometryExtrudedHeight(r,s),r===ti.CLAMP_TO_GROUND&&(r=Ti.getMinimumMaximumHeights(eI.computeRectangle(a,$pe)).minimumTerrainHeight),a.extrudedHeight=r};em.DynamicGeometryUpdater=xS;function xS(e,t,n){_i.call(this,e,t,n)}l(Object.create)&&(xS.prototype=Object.create(_i.prototype),xS.prototype.constructor=xS);xS.prototype._isHidden=function(e,t,n){return!l(this._options.rectangle)||_i.prototype._isHidden.call(this,e,t,n)};xS.prototype._setOptions=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(t.height,n),r=j.getValueOrDefault(t.heightReference,n,Ze.NONE),s=j.getValueOrUndefined(t.extrudedHeight,n),a=j.getValueOrDefault(t.extrudedHeightReference,n,Ze.NONE);l(s)&&!l(o)&&(o=0),i.rectangle=j.getValueOrUndefined(t.coordinates,n,i.rectangle),i.granularity=j.getValueOrUndefined(t.granularity,n),i.stRotation=j.getValueOrUndefined(t.stRotation,n),i.rotation=j.getValueOrUndefined(t.rotation,n),i.offsetAttribute=ti.computeGeometryOffsetAttribute(o,r,s,a),i.height=ti.getGeometryHeight(o,r),s=ti.getGeometryExtrudedHeight(s,a),s===ti.CLAMP_TO_GROUND&&(s=Ti.getMinimumMaximumHeights(eI.computeRectangle(i,$pe)).minimumTerrainHeight),i.extrudedHeight=s};var cF=em;var ege={};function mit(e,t){return D.equalsEpsilon(e.latitude,t.latitude,D.EPSILON10)&&D.equalsEpsilon(e.longitude,t.longitude,D.EPSILON10)}var Ait=new Ae,pit=new Ae;function git(e,t,n,i){t=Mo(t,d.equalsEpsilon);let o=t.length;if(o<2)return;let r=l(i),s=l(n),a=new Array(o),c=new Array(o),u=new Array(o),f=t[0];a[0]=f;let h=e.cartesianToCartographic(f,Ait);s&&(h.height=n[0]),c[0]=h.height,r?u[0]=i[0]:u[0]=0;let A=c[0],g=u[0],m=A===g,_=1;for(let y=1;y<o;++y){let C=t[y],E=e.cartesianToCartographic(C,pit);s&&(E.height=n[y]),m=m&&E.height===0,mit(h,E)?h.height<E.height&&(c[_-1]=E.height):(a[_]=C,c[_]=E.height,r?u[_]=i[y]:u[_]=0,m=m&&c[_]===u[_],Ae.clone(E,h),++_)}if(!(m||_<2))return a.length=_,c.length=_,u.length=_,{positions:a,topHeights:c,bottomHeights:u}}var _it=new Array(2),yit=new Array(2),Cit={positions:void 0,height:void 0,granularity:void 0,ellipsoid:void 0};ege.computePositions=function(e,t,n,i,o,r){let s=git(e,t,n,i);if(!l(s))return;t=s.positions,n=s.topHeights,i=s.bottomHeights;let a=t.length,c=a-2,u,f,h=D.chordLength(o,e.maximumRadius),A=Cit;if(A.minDistance=h,A.ellipsoid=e,r){let g=0,m;for(m=0;m<a-1;m++)g+=Wi.numberOfPoints(t[m],t[m+1],h)+1;u=new Float64Array(g*3),f=new Float64Array(g*3);let _=_it,y=yit;A.positions=_,A.height=y;let C=0;for(m=0;m<a-1;m++){_[0]=t[m],_[1]=t[m+1],y[0]=n[m],y[1]=n[m+1];let E=Wi.generateArc(A);u.set(E,C),y[0]=i[m],y[1]=i[m+1],f.set(Wi.generateArc(A),C),C+=E.length}}else A.positions=t,A.height=n,u=new Float64Array(Wi.generateArc(A)),A.height=i,f=new Float64Array(Wi.generateArc(A));return{bottomPositions:f,topPositions:u,numCorners:c}};var tI=ege;var mK=new d,n8=new d,Eit=new d,tge=new d,Iit=new d,xit=new d,bit=new d;function nI(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.maximumHeights,i=e.minimumHeights,o=e.vertexFormat??Pe.DEFAULT,r=e.granularity??D.RADIANS_PER_DEGREE,s=e.ellipsoid??te.default;this._positions=t,this._minimumHeights=i,this._maximumHeights=n,this._vertexFormat=Pe.clone(o),this._granularity=r,this._ellipsoid=te.clone(s),this._workerName="createWallGeometry";let a=1+t.length*d.packedLength+2;l(i)&&(a+=i.length),l(n)&&(a+=n.length),this.packedLength=a+te.packedLength+Pe.packedLength+1}nI.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._minimumHeights;if(r=l(s)?s.length:0,t[n++]=r,l(s))for(i=0;i<r;++i)t[n++]=s[i];let a=e._maximumHeights;if(r=l(a)?a.length:0,t[n++]=r,l(a))for(i=0;i<r;++i)t[n++]=a[i];return te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n]=e._granularity,t};var nge=te.clone(te.UNIT_SPHERE),ige=new Pe,lF={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:nge,vertexFormat:ige,granularity:void 0};nI.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s;if(o>0)for(s=new Array(o),i=0;i<o;++i)s[i]=e[t++];o=e[t++];let a;if(o>0)for(a=new Array(o),i=0;i<o;++i)a[i]=e[t++];let c=te.unpack(e,t,nge);t+=te.packedLength;let u=Pe.unpack(e,t,ige);t+=Pe.packedLength;let f=e[t];return l(n)?(n._positions=r,n._minimumHeights=s,n._maximumHeights=a,n._ellipsoid=te.clone(c,n._ellipsoid),n._vertexFormat=Pe.clone(u,n._vertexFormat),n._granularity=f,n):(lF.positions=r,lF.minimumHeights=s,lF.maximumHeights=a,lF.granularity=f,new nI(lF))};nI.fromConstantHeights=function(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n,i,o=e.minimumHeight,r=e.maximumHeight,s=l(o),a=l(r);if(s||a){let u=t.length;n=s?new Array(u):void 0,i=a?new Array(u):void 0;for(let f=0;f<u;++f)s&&(n[f]=o),a&&(i[f]=r)}let c={positions:t,maximumHeights:i,minimumHeights:n,ellipsoid:e.ellipsoid,vertexFormat:e.vertexFormat};return new nI(c)};nI.createGeometry=function(e){let t=e._positions,n=e._minimumHeights,i=e._maximumHeights,o=e._vertexFormat,r=e._granularity,s=e._ellipsoid,a=tI.computePositions(s,t,i,n,r,!0);if(!l(a))return;let c=a.bottomPositions,u=a.topPositions,f=a.numCorners,h=u.length,A=h*2,g=o.position?new Float64Array(A):void 0,m=o.normal?new Float32Array(A):void 0,_=o.tangent?new Float32Array(A):void 0,y=o.bitangent?new Float32Array(A):void 0,C=o.st?new Float32Array(A/3*2):void 0,E=0,I=0,b=0,S=0,B=0,v=bit,P=xit,M=Iit,L=!0;h/=3;let p,x=0,T=1/(h-f-1);for(p=0;p<h;++p){let Q=p*3,z=d.fromArray(u,Q,mK),F=d.fromArray(c,Q,n8);if(o.position&&(g[E++]=F.x,g[E++]=F.y,g[E++]=F.z,g[E++]=z.x,g[E++]=z.y,g[E++]=z.z),o.st&&(C[B++]=x,C[B++]=0,C[B++]=x,C[B++]=1),o.normal||o.tangent||o.bitangent){let H=d.clone(d.ZERO,tge),W=d.subtract(z,s.geodeticSurfaceNormal(z,n8),n8);if(p+1<h&&(H=d.fromArray(u,Q+3,tge)),L){let Z=d.subtract(H,z,Eit),Y=d.subtract(W,z,mK);v=d.normalize(d.cross(Y,Z,v),v),L=!1}d.equalsEpsilon(z,H,D.EPSILON10)?L=!0:(x+=T,o.tangent&&(P=d.normalize(d.subtract(H,z,P),P)),o.bitangent&&(M=d.normalize(d.cross(v,P,M),M))),o.normal&&(m[I++]=v.x,m[I++]=v.y,m[I++]=v.z,m[I++]=v.x,m[I++]=v.y,m[I++]=v.z),o.tangent&&(_[S++]=P.x,_[S++]=P.y,_[S++]=P.z,_[S++]=P.x,_[S++]=P.y,_[S++]=P.z),o.bitangent&&(y[b++]=M.x,y[b++]=M.y,y[b++]=M.z,y[b++]=M.x,y[b++]=M.y,y[b++]=M.z)}}let w=new yn;o.position&&(w.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:g})),o.normal&&(w.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m})),o.tangent&&(w.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:_})),o.bitangent&&(w.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:y})),o.st&&(w.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:C}));let R=A/3;A-=6*(f+1);let O=Oe.createTypedArray(R,A),k=0;for(p=0;p<R-2;p+=2){let Q=p,z=p+2,F=d.fromArray(g,Q*3,mK),H=d.fromArray(g,z*3,n8);if(d.equalsEpsilon(F,H,D.EPSILON10))continue;let W=p+1,Z=p+3;O[k++]=W,O[k++]=Q,O[k++]=Z,O[k++]=Z,O[k++]=Q,O[k++]=z}return new ht({attributes:w,indices:O,primitiveType:Me.TRIANGLES,boundingSphere:new le.fromVertices(g)})};var uF=nI;var oge=new d,rge=new d;function iI(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.maximumHeights,i=e.minimumHeights,o=e.granularity??D.RADIANS_PER_DEGREE,r=e.ellipsoid??te.default;this._positions=t,this._minimumHeights=i,this._maximumHeights=n,this._granularity=o,this._ellipsoid=te.clone(r),this._workerName="createWallOutlineGeometry";let s=1+t.length*d.packedLength+2;l(i)&&(s+=i.length),l(n)&&(s+=n.length),this.packedLength=s+te.packedLength+1}iI.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._minimumHeights;if(r=l(s)?s.length:0,t[n++]=r,l(s))for(i=0;i<r;++i)t[n++]=s[i];let a=e._maximumHeights;if(r=l(a)?a.length:0,t[n++]=r,l(a))for(i=0;i<r;++i)t[n++]=a[i];return te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n]=e._granularity,t};var sge=te.clone(te.UNIT_SPHERE),fF={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:sge,granularity:void 0};iI.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s;if(o>0)for(s=new Array(o),i=0;i<o;++i)s[i]=e[t++];o=e[t++];let a;if(o>0)for(a=new Array(o),i=0;i<o;++i)a[i]=e[t++];let c=te.unpack(e,t,sge);t+=te.packedLength;let u=e[t];return l(n)?(n._positions=r,n._minimumHeights=s,n._maximumHeights=a,n._ellipsoid=te.clone(c,n._ellipsoid),n._granularity=u,n):(fF.positions=r,fF.minimumHeights=s,fF.maximumHeights=a,fF.granularity=u,new iI(fF))};iI.fromConstantHeights=function(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n,i,o=e.minimumHeight,r=e.maximumHeight,s=l(o),a=l(r);if(s||a){let u=t.length;n=s?new Array(u):void 0,i=a?new Array(u):void 0;for(let f=0;f<u;++f)s&&(n[f]=o),a&&(i[f]=r)}let c={positions:t,maximumHeights:i,minimumHeights:n,ellipsoid:e.ellipsoid};return new iI(c)};iI.createGeometry=function(e){let t=e._positions,n=e._minimumHeights,i=e._maximumHeights,o=e._granularity,r=e._ellipsoid,s=tI.computePositions(r,t,i,n,o,!1);if(!l(s))return;let a=s.bottomPositions,c=s.topPositions,u=c.length,f=u*2,h=new Float64Array(f),A=0;u/=3;let g;for(g=0;g<u;++g){let E=g*3,I=d.fromArray(c,E,oge),b=d.fromArray(a,E,rge);h[A++]=b.x,h[A++]=b.y,h[A++]=b.z,h[A++]=I.x,h[A++]=I.y,h[A++]=I.z}let m=new yn({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:h})}),_=f/3;f=2*_-4+_;let y=Oe.createTypedArray(_,f),C=0;for(g=0;g<_-2;g+=2){let E=g,I=g+2,b=d.fromArray(h,E*3,oge),S=d.fromArray(h,I*3,rge);if(d.equalsEpsilon(b,S,D.EPSILON10))continue;let B=g+1,v=g+3;y[C++]=B,y[C++]=E,y[C++]=B,y[C++]=v,y[C++]=E,y[C++]=I}return y[C++]=_-2,y[C++]=_-1,new ht({attributes:m,indices:y,primitiveType:Me.LINES,boundingSphere:new le.fromVertices(h)})};var dF=iI;var age=new G;function Tit(e){this.id=e,this.vertexFormat=void 0,this.positions=void 0,this.minimumHeights=void 0,this.maximumHeights=void 0,this.granularity=void 0}function tm(e,t){yi.call(this,{entity:e,scene:t,geometryOptions:new Tit(e),geometryPropertyName:"wall",observedPropertyNames:["availability","wall"]}),this._onEntityPropertyChanged(e,"wall",e.wall,void 0)}l(Object.create)&&(tm.prototype=Object.create(yi.prototype),tm.prototype.constructor=tm);tm.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=Kn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof Xt){let c;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(c=this._materialProperty.color.getValue(e,age)),l(c)||(c=G.WHITE),o=$t.fromColor(c),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};return new Pt({id:t,geometry:new uF(this._options),attributes:i})};tm.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,age),o=this._distanceDisplayConditionProperty.getValue(e);return new Pt({id:t,geometry:new dF(this._options),attributes:{show:new wn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:$t.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o)}})};tm.prototype._isHidden=function(e,t){return!l(t.positions)||yi.prototype._isHidden.call(this,e,t)};tm.prototype._getIsClosed=function(e){return!1};tm.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!j.isConstant(t.minimumHeights)||!j.isConstant(t.maximumHeights)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.granularity)};tm.prototype._setStaticOptions=function(e,t){let n=t.minimumHeights,i=t.maximumHeights,o=t.granularity,r=this._materialProperty instanceof Xt,s=this._options;s.vertexFormat=r?gn.VERTEX_FORMAT:Eo.MaterialSupport.TEXTURED.vertexFormat,s.positions=t.positions.getValue(je.MINIMUM_VALUE,s.positions),s.minimumHeights=l(n)?n.getValue(je.MINIMUM_VALUE,s.minimumHeights):void 0,s.maximumHeights=l(i)?i.getValue(je.MINIMUM_VALUE,s.maximumHeights):void 0,s.granularity=l(o)?o.getValue(je.MINIMUM_VALUE):void 0};tm.DynamicGeometryUpdater=bS;function bS(e,t,n){_i.call(this,e,t,n)}l(Object.create)&&(bS.prototype=Object.create(_i.prototype),bS.prototype.constructor=bS);bS.prototype._isHidden=function(e,t,n){return!l(this._options.positions)||_i.prototype._isHidden.call(this,e,t,n)};bS.prototype._setOptions=function(e,t,n){let i=this._options;i.positions=j.getValueOrUndefined(t.positions,n,i.positions),i.minimumHeights=j.getValueOrUndefined(t.minimumHeights,n,i.minimumHeights),i.maximumHeights=j.getValueOrUndefined(t.maximumHeights,n,i.maximumHeights),i.granularity=j.getValueOrUndefined(t.granularity,n)};var hF=tm;var oI=[DR,RO,xO,WO,YO,XO,eF,aF,cF,hF];function rI(e,t){this.entity=e,this.scene=t;let n=new Array(oI.length),i=new _e,o=new Dr;for(let r=0;r<n.length;r++){let s=new oI[r](e,t);o.add(s.geometryChanged,a=>{i.raiseEvent(a)}),n[r]=s}this.updaters=n,this.geometryChanged=i,this.eventHelper=o,this._removeEntitySubscription=e.definitionChanged.addEventListener(rI.prototype._onEntityPropertyChanged,this)}rI.prototype._onEntityPropertyChanged=function(e,t,n,i){let o=this.updaters;for(let r=0;r<o.length;r++)o[r]._onEntityPropertyChanged(e,t,n,i)};rI.prototype.forEach=function(e){let t=this.updaters;for(let n=0;n<t.length;n++)e(t[n])};rI.prototype.destroy=function(){this.eventHelper.removeAll();let e=this.updaters;for(let t=0;t<e.length;t++)e[t].destroy();this._removeEntitySubscription(),ue(this)};rI.registerUpdater=function(e){oI.includes(e)||oI.push(e)};rI.unregisterUpdater=function(e){if(oI.includes(e)){let t=oI.indexOf(e);oI.splice(t,1)}};var sI=rI;var cge=new G,Sit=new Ut,wit=new Ut,Bit=d.ZERO,Dit=new d;function nm(e,t,n,i,o,r,s){this.translucent=t,this.appearanceType=n,this.depthFailAppearanceType=i,this.depthFailMaterialProperty=o,this.depthFailMaterial=void 0,this.closed=r,this.shadows=s,this.primitives=e,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new vt,this.updaters=new vt,this.updatersWithAttributes=new vt,this.attributes=new vt,this.subscriptions=new vt,this.showsUpdated=new vt,this.itemsToRemove=[],this.invalidated=!1;let a;l(o)&&(a=o.definitionChanged.addEventListener(nm.prototype.onMaterialChanged,this)),this.removeMaterialSubscription=a}nm.prototype.onMaterialChanged=function(){this.invalidated=!0};nm.prototype.isMaterial=function(e){let t=this.depthFailMaterialProperty,n=e.depthFailMaterialProperty;return n===t?!0:l(t)?t.equals(n):!1};nm.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),!e.hasConstantFill||!e.fillMaterialProperty.isConstant||!j.isConstant(e.distanceDisplayConditionProperty)||!j.isConstant(e.terrainOffsetProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};nm.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};nm.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0){l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i);let c;l(this.depthFailAppearanceType)&&(l(this.depthFailMaterialProperty)&&(this.depthFailMaterial=ur.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial)),c=new this.depthFailAppearanceType({material:this.depthFailMaterial,translucent:this.translucent,closed:this.closed})),i=new Qn({show:!1,asynchronous:!0,geometryInstances:s.slice(),appearance:new this.appearanceType({translucent:this.translucent,closed:this.closed}),depthFailAppearance:c,shadows:this.shadows}),o.add(i),t=!1}else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0),l(this.depthFailAppearanceType)&&!(this.depthFailMaterialProperty instanceof Xt)&&(this.depthFailMaterial=ur.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),this.primitive.depthFailAppearance.material=this.depthFailMaterial);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let u=s[r],f=this.geometry.get(u.id),h=this.attributes.get(f.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!u.fillMaterialProperty.isConstant||c){let y=u.fillMaterialProperty.color,C=j.getValueOrDefault(y,e,G.WHITE,cge);G.equals(h._lastColor,C)||(h._lastColor=G.clone(C,h._lastColor),h.color=$t.toValue(C,h.color),(this.translucent&&h.color[3]===255||!this.translucent&&h.color[3]!==255)&&(this.itemsToRemove[n++]=u))}if(l(this.depthFailAppearanceType)&&u.depthFailMaterialProperty instanceof Xt&&(!u.depthFailMaterialProperty.isConstant||c)){let y=u.depthFailMaterialProperty.color,C=j.getValueOrDefault(y,e,G.WHITE,cge);G.equals(h._lastDepthFailColor,C)||(h._lastDepthFailColor=G.clone(C,h._lastDepthFailColor),h.depthFailColor=$t.toValue(C,h.depthFailColor))}let A=u.entity.isShowing&&(u.hasConstantFill||u.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=wn.toValue(A,h.show));let m=u.distanceDisplayConditionProperty;if(!j.isConstant(m)){let y=j.getValueOrDefault(m,e,wit,Sit);Ut.equals(y,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(y,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(y,h.distanceDisplayCondition))}let _=u.terrainOffsetProperty;if(!j.isConstant(_)){let y=j.getValueOrDefault(_,e,Bit,Dit);d.equals(y,h._lastOffset)||(h._lastOffset=d.clone(y,h._lastOffset),h.offset=uo.toValue(y,h.offset))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};nm.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=wn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};nm.prototype.contains=function(e){return this.updaters.contains(e.id)};nm.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};nm.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),l(this.removeMaterialSubscription)&&this.removeMaterialSubscription()};function TS(e,t,n,i,o){this._solidItems=[],this._translucentItems=[],this._primitives=e,this._appearanceType=t,this._depthFailAppearanceType=n,this._closed=i,this._shadows=o}TS.prototype.add=function(e,t){let n,i,o=t.createFillGeometryInstance(e);o.attributes.color.value[3]===255?(n=this._solidItems,i=!1):(n=this._translucentItems,i=!0);let r=n.length;for(let a=0;a<r;a++){let c=n[a];if(c.isMaterial(t)){c.add(t,o);return}}let s=new nm(this._primitives,i,this._appearanceType,this._depthFailAppearanceType,t.depthFailMaterialProperty,this._closed,this._shadows);s.add(t,o),n.push(s)};function lge(e,t){let n=e.length;for(let i=n-1;i>=0;i--){let o=e[i];if(o.remove(t))return o.updaters.length===0&&(e.splice(i,1),o.destroy()),!0}return!1}TS.prototype.remove=function(e){lge(this._solidItems,e)||lge(this._translucentItems,e)};function uge(e,t,n){let i=!1,o=t.length;for(let r=0;r<o;++r){let s=t[r],a=s.itemsToRemove,c=a.length;if(c>0)for(r=0;r<c;r++){let u=a[r];s.remove(u),e.add(n,u),i=!0}}return i}function i8(e,t,n,i){let o=t.length,r;for(r=o-1;r>=0;r--){let s=t[r];if(s.invalidated){t.splice(r,1);let a=s.updaters.values,c=a.length;for(let u=0;u<c;u++)e.add(n,a[u]);s.destroy()}}for(o=t.length,r=0;r<o;++r)i=t[r].update(n)&&i;return i}TS.prototype.update=function(e){let t=i8(this,this._solidItems,e,!0);t=i8(this,this._translucentItems,e,t)&&t;let n=uge(this,this._solidItems,e),i=uge(this,this._translucentItems,e);return(n||i)&&(t=i8(this,this._solidItems,e,t)&&t,t=i8(this,this._translucentItems,e,t)&&t),t};function fge(e,t,n){let i=e.length;for(let o=0;o<i;o++){let r=e[o];if(r.contains(t))return r.getBoundingSphere(t,n)}return mt.FAILED}TS.prototype.getBoundingSphere=function(e,t){let n=fge(this._solidItems,e,t);return n===mt.FAILED?fge(this._translucentItems,e,t):n};function dge(e){let t=e.length;for(let n=0;n<t;n++)e[n].destroy();e.length=0}TS.prototype.removeAllPrimitives=function(){dge(this._solidItems),dge(this._translucentItems)};var Pd=TS;var vit=new Ut,Pit=new Ut,Rit=d.ZERO,Mit=new d;function im(e,t,n,i,o,r,s){this.primitives=e,this.appearanceType=t,this.materialProperty=n,this.depthFailAppearanceType=i,this.depthFailMaterialProperty=o,this.closed=r,this.shadows=s,this.updaters=new vt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new vt,this.material=void 0,this.depthFailMaterial=void 0,this.updatersWithAttributes=new vt,this.attributes=new vt,this.invalidated=!1,this.removeMaterialSubscription=n.definitionChanged.addEventListener(im.prototype.onMaterialChanged,this),this.subscriptions=new vt,this.showsUpdated=new vt}im.prototype.onMaterialChanged=function(){this.invalidated=!0};im.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty,i=this.depthFailMaterialProperty,o=e.depthFailMaterialProperty;if(n===t&&o===i)return!0;let r=l(t)&&t.equals(n);return r=(!l(i)&&!l(o)||l(i)&&i.equals(o))&&r,r};im.prototype.add=function(e,t){let n=t.id;if(this.updaters.set(n,t),this.geometry.set(n,t.createFillGeometryInstance(e)),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!j.isConstant(t.distanceDisplayConditionProperty)||!j.isConstant(t.terrainOffsetProperty))this.updatersWithAttributes.set(n,t);else{let i=this;this.subscriptions.set(n,t.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};im.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};var Nit=new G;im.prototype.update=function(e){let t=!0,n=this.primitive,i=this.primitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0){l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),this.material=ur.getValue(e,this.materialProperty,this.material);let a;l(this.depthFailMaterialProperty)&&(this.depthFailMaterial=ur.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),a=new this.depthFailAppearanceType({material:this.depthFailMaterial,translucent:this.depthFailMaterial.isTranslucent(),closed:this.closed})),n=new Qn({show:!1,asynchronous:!0,geometryInstances:o.slice(),appearance:new this.appearanceType({material:this.material,translucent:this.material.isTranslucent(),closed:this.closed}),depthFailAppearance:a,shadows:this.shadows}),i.add(n),t=!1}else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=ur.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material,l(this.depthFailAppearanceType)&&!(this.depthFailMaterialProperty instanceof Xt)&&(this.depthFailMaterial=ur.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),this.primitive.depthFailAppearance.material=this.depthFailMaterial);let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],u=c.entity,f=this.geometry.get(c.id),h=this.attributes.get(f.id.id);if(l(h)||(h=n.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),l(this.depthFailAppearanceType)&&this.depthFailMaterialProperty instanceof Xt&&!c.depthFailMaterialProperty.isConstant){let y=c.depthFailMaterialProperty.color,C=j.getValueOrDefault(y,e,G.WHITE,Nit);G.equals(h._lastDepthFailColor,C)||(h._lastDepthFailColor=G.clone(C,h._lastDepthFailColor),h.depthFailColor=$t.toValue(C,h.depthFailColor))}let A=u.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=wn.toValue(A,h.show));let m=c.distanceDisplayConditionProperty;if(!j.isConstant(m)){let y=j.getValueOrDefault(m,e,Pit,vit);Ut.equals(y,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(y,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(y,h.distanceDisplayCondition))}let _=c.terrainOffsetProperty;if(!j.isConstant(_)){let y=j.getValueOrDefault(_,e,Rit,Mit);d.equals(y,h._lastOffset)||(h._lastOffset=d.clone(y,h._lastOffset),h.offset=uo.toValue(y,h.offset))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};im.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,u=a.show[0]===1;c!==u&&(a.show=wn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};im.prototype.contains=function(e){return this.updaters.contains(e.id)};im.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};im.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),this.removeMaterialSubscription()};function SS(e,t,n,i,o){this._items=[],this._primitives=e,this._appearanceType=t,this._depthFailAppearanceType=n,this._closed=i,this._shadows=o}SS.prototype.add=function(e,t){let n=this._items,i=n.length;for(let r=0;r<i;r++){let s=n[r];if(s.isMaterial(t)){s.add(e,t);return}}let o=new im(this._primitives,this._appearanceType,t.fillMaterialProperty,this._depthFailAppearanceType,t.depthFailMaterialProperty,this._closed,this._shadows);o.add(e,t),n.push(o)};SS.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0;i--){let o=t[i];if(o.remove(e)){o.updaters.length===0&&(t.splice(i,1),o.destroy());break}}};SS.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];if(r.invalidated){n.splice(t,1);let s=r.updaters.values,a=s.length;for(let c=0;c<a;c++)this.add(e,s[c]);r.destroy()}}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};SS.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return mt.FAILED};SS.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var Rd=SS;function o8(e,t,n=0,i=e.length-1,o=Lit){for(;i>n;){if(i-n>600){let c=i-n+1,u=t-n+1,f=Math.log(c),h=.5*Math.exp(2*f/3),A=.5*Math.sqrt(f*h*(c-h)/c)*(u-c/2<0?-1:1),g=Math.max(n,Math.floor(t-u*h/c+A)),m=Math.min(i,Math.floor(t+(c-u)*h/c+A));o8(e,t,g,m,o)}let r=e[t],s=n,a=i;for(mF(e,n,t),o(e[i],r)>0&&mF(e,n,i);s<a;){for(mF(e,s,a),s++,a--;o(e[s],r)<0;)s++;for(;o(e[a],r)>0;)a--}o(e[n],r)===0?mF(e,n,a):(a++,mF(e,a,i)),a<=t&&(n=a+1),t<=a&&(i=a-1)}}function mF(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}function Lit(e,t){return e<t?-1:e>t?1:0}var gF=class{constructor(t=9){this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(this._maxEntries*.4)),this.clear()}all(){return this._all(this.data,[])}search(t){let n=this.data,i=[];if(!s8(t,n))return i;let o=this.toBBox,r=[];for(;n;){for(let s=0;s<n.children.length;s++){let a=n.children[s],c=n.leaf?o(a):a;s8(t,c)&&(n.leaf?i.push(a):pK(t,c)?this._all(a,i):r.push(a))}n=r.pop()}return i}collides(t){let n=this.data;if(!s8(t,n))return!1;let i=[];for(;n;){for(let o=0;o<n.children.length;o++){let r=n.children[o],s=n.leaf?this.toBBox(r):r;if(s8(t,s)){if(n.leaf||pK(t,s))return!0;i.push(r)}}n=i.pop()}return!1}load(t){if(!(t&&t.length))return this;if(t.length<this._minEntries){for(let i=0;i<t.length;i++)this.insert(t[i]);return this}let n=this._build(t.slice(),0,t.length-1,0);if(!this.data.children.length)this.data=n;else if(this.data.height===n.height)this._splitRoot(this.data,n);else{if(this.data.height<n.height){let i=this.data;this.data=n,n=i}this._insert(n,this.data.height-n.height-1,!0)}return this}insert(t){return t&&this._insert(t,this.data.height-1),this}clear(){return this.data=BS([]),this}remove(t,n){if(!t)return this;let i=this.data,o=this.toBBox(t),r=[],s=[],a,c,u;for(;i||r.length;){if(i||(i=r.pop(),c=r[r.length-1],a=s.pop(),u=!0),i.leaf){let f=Oit(t,i.children,n);if(f!==-1)return i.children.splice(f,1),r.push(i),this._condense(r),this}!u&&!i.leaf&&pK(i,o)?(r.push(i),s.push(a),a=0,c=i,i=i.children[0]):c?(a++,i=c.children[a],u=!1):i=null}return this}toBBox(t){return t}compareMinX(t,n){return t.minX-n.minX}compareMinY(t,n){return t.minY-n.minY}toJSON(){return this.data}fromJSON(t){return this.data=t,this}_all(t,n){let i=[];for(;t;)t.leaf?n.push(...t.children):i.push(...t.children),t=i.pop();return n}_build(t,n,i,o){let r=i-n+1,s=this._maxEntries,a;if(r<=s)return a=BS(t.slice(n,i+1)),wS(a,this.toBBox),a;o||(o=Math.ceil(Math.log(r)/Math.log(s)),s=Math.ceil(r/Math.pow(s,o-1))),a=BS([]),a.leaf=!1,a.height=o;let c=Math.ceil(r/s),u=c*Math.ceil(Math.sqrt(s));hge(t,n,i,u,this.compareMinX);for(let f=n;f<=i;f+=u){let h=Math.min(f+u-1,i);hge(t,f,h,c,this.compareMinY);for(let A=f;A<=h;A+=c){let g=Math.min(A+c-1,h);a.children.push(this._build(t,A,g,o-1))}}return wS(a,this.toBBox),a}_chooseSubtree(t,n,i,o){for(;o.push(n),!(n.leaf||o.length-1===i);){let r=1/0,s=1/0,a;for(let c=0;c<n.children.length;c++){let u=n.children[c],f=AK(u),h=kit(t,u)-f;h<s?(s=h,r=f<r?f:r,a=u):h===s&&f<r&&(r=f,a=u)}n=a||n.children[0]}return n}_insert(t,n,i){let o=i?t:this.toBBox(t),r=[],s=this._chooseSubtree(o,this.data,n,r);for(s.children.push(t),pF(s,o);n>=0&&r[n].children.length>this._maxEntries;)this._split(r,n),n--;this._adjustParentBBoxes(o,r,n)}_split(t,n){let i=t[n],o=i.children.length,r=this._minEntries;this._chooseSplitAxis(i,r,o);let s=this._chooseSplitIndex(i,r,o),a=BS(i.children.splice(s,i.children.length-s));a.height=i.height,a.leaf=i.leaf,wS(i,this.toBBox),wS(a,this.toBBox),n?t[n-1].children.push(a):this._splitRoot(i,a)}_splitRoot(t,n){this.data=BS([t,n]),this.data.height=t.height+1,this.data.leaf=!1,wS(this.data,this.toBBox)}_chooseSplitIndex(t,n,i){let o,r=1/0,s=1/0;for(let a=n;a<=i-n;a++){let c=AF(t,0,a,this.toBBox),u=AF(t,a,i,this.toBBox),f=Uit(c,u),h=AK(c)+AK(u);f<r?(r=f,o=a,s=h<s?h:s):f===r&&h<s&&(s=h,o=a)}return o||i-n}_chooseSplitAxis(t,n,i){let o=t.leaf?this.compareMinX:Fit,r=t.leaf?this.compareMinY:Qit,s=this._allDistMargin(t,n,i,o),a=this._allDistMargin(t,n,i,r);s<a&&t.children.sort(o)}_allDistMargin(t,n,i,o){t.children.sort(o);let r=this.toBBox,s=AF(t,0,n,r),a=AF(t,i-n,i,r),c=r8(s)+r8(a);for(let u=n;u<i-n;u++){let f=t.children[u];pF(s,t.leaf?r(f):f),c+=r8(s)}for(let u=i-n-1;u>=n;u--){let f=t.children[u];pF(a,t.leaf?r(f):f),c+=r8(a)}return c}_adjustParentBBoxes(t,n,i){for(let o=i;o>=0;o--)pF(n[o],t)}_condense(t){for(let n=t.length-1,i;n>=0;n--)t[n].children.length===0?n>0?(i=t[n-1].children,i.splice(i.indexOf(t[n]),1)):this.clear():wS(t[n],this.toBBox)}};function Oit(e,t,n){if(!n)return t.indexOf(e);for(let i=0;i<t.length;i++)if(n(e,t[i]))return i;return-1}function wS(e,t){AF(e,0,e.children.length,t,e)}function AF(e,t,n,i,o){o||(o=BS(null)),o.minX=1/0,o.minY=1/0,o.maxX=-1/0,o.maxY=-1/0;for(let r=t;r<n;r++){let s=e.children[r];pF(o,e.leaf?i(s):s)}return o}function pF(e,t){return e.minX=Math.min(e.minX,t.minX),e.minY=Math.min(e.minY,t.minY),e.maxX=Math.max(e.maxX,t.maxX),e.maxY=Math.max(e.maxY,t.maxY),e}function Fit(e,t){return e.minX-t.minX}function Qit(e,t){return e.minY-t.minY}function AK(e){return(e.maxX-e.minX)*(e.maxY-e.minY)}function r8(e){return e.maxX-e.minX+(e.maxY-e.minY)}function kit(e,t){return(Math.max(t.maxX,e.maxX)-Math.min(t.minX,e.minX))*(Math.max(t.maxY,e.maxY)-Math.min(t.minY,e.minY))}function Uit(e,t){let n=Math.max(e.minX,t.minX),i=Math.max(e.minY,t.minY),o=Math.min(e.maxX,t.maxX),r=Math.min(e.maxY,t.maxY);return Math.max(0,o-n)*Math.max(0,r-i)}function pK(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&t.maxX<=e.maxX&&t.maxY<=e.maxY}function s8(e,t){return t.minX<=e.maxX&&t.minY<=e.maxY&&t.maxX>=e.minX&&t.maxY>=e.minY}function BS(e){return{children:e,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function hge(e,t,n,i,o){let r=[t,n];for(;r.length;){if(n=r.pop(),t=r.pop(),n-t<=i)continue;let s=t+Math.ceil((n-t)/i/2)*i;o8(e,s,t,n,o),r.push(t,s,s,n)}}function a8(){this._tree=new gF}function aI(){this.minX=0,this.minY=0,this.maxX=0,this.maxY=0,this.id=""}aI.fromRectangleAndId=function(e,t,n){return n.minX=t.west,n.minY=t.south,n.maxX=t.east,n.maxY=t.north,n.id=e,n};a8.prototype.insert=function(e,t){let n=aI.fromRectangleAndId(e,t,new aI);this._tree.insert(n)};function Git(e,t){return e.id===t.id}var zit=new aI;a8.prototype.remove=function(e,t){let n=aI.fromRectangleAndId(e,t,zit);this._tree.remove(n,Git)};var Vit=new aI;a8.prototype.collides=function(e){let t=aI.fromRectangleAndId("",e,Vit);return this._tree.collides(t)};var cI=a8;var Hit=new G,Wit=new Ut,jit=new Ut;function Mg(e,t,n,i){this.primitives=e,this.zIndex=i,this.classificationType=t,this.color=n,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new vt,this.updaters=new vt,this.updatersWithAttributes=new vt,this.attributes=new vt,this.subscriptions=new vt,this.showsUpdated=new vt,this.itemsToRemove=[],this.isDirty=!1,this.rectangleCollisionCheck=new cI}Mg.prototype.overlapping=function(e){return this.rectangleCollisionCheck.collides(e)};Mg.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),this.rectangleCollisionCheck.insert(n,t.geometry.rectangle),!e.hasConstantFill||!e.fillMaterialProperty.isConstant||!j.isConstant(e.distanceDisplayConditionProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};Mg.prototype.remove=function(e){let t=e.id,n=this.geometry.get(t);if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.rectangleCollisionCheck.remove(t,n.geometry.rectangle),this.updatersWithAttributes.remove(t);let i=this.subscriptions.get(t);return l(i)&&(i(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};Mg.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0)l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i),i=new fl({show:!1,asynchronous:!0,geometryInstances:s.slice(),classificationType:this.classificationType}),o.add(i,this.zIndex),t=!1;else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let u=s[r],f=this.geometry.get(u.id),h=this.attributes.get(f.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!u.fillMaterialProperty.isConstant||c){let _=u.fillMaterialProperty.color,y=j.getValueOrDefault(_,e,G.WHITE,Hit);G.equals(h._lastColor,y)||(h._lastColor=G.clone(y,h._lastColor),h.color=$t.toValue(y,h.color))}let A=u.entity.isShowing&&(u.hasConstantFill||u.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=wn.toValue(A,h.show));let m=u.distanceDisplayConditionProperty;if(!j.isConstant(m)){let _=j.getValueOrDefault(m,e,jit,Wit);Ut.equals(_,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(_,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(_,h.distanceDisplayCondition))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};Mg.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=wn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};Mg.prototype.contains=function(e){return this.updaters.contains(e.id)};Mg.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getBoundingSphere(e.entity);return l(i)?(i.clone(t),mt.DONE):mt.FAILED};Mg.prototype.removeAllPrimitives=function(){let e=this.primitives,t=this.primitive;l(t)&&(e.remove(t),this.primitive=void 0,this.geometry.removeAll(),this.updaters.removeAll());let n=this.oldPrimitive;l(n)&&(e.remove(n),this.oldPrimitive=void 0)};function DS(e,t){this._batches=[],this._primitives=e,this._classificationType=t}DS.prototype.add=function(e,t){let n=t.createFillGeometryInstance(e),i=this._batches,o=j.getValueOrDefault(t.zIndex,0),r,s=i.length;for(let a=0;a<s;++a){let c=i[a];if(c.zIndex===o&&!c.overlapping(n.geometry.rectangle)){r=c;break}}return l(r)||(r=new Mg(this._primitives,this._classificationType,n.attributes.color.value,o),i.push(r)),r.add(t,n),r};DS.prototype.remove=function(e){let t=this._batches,n=t.length;for(let i=0;i<n;++i)if(t[i].remove(e))return};DS.prototype.update=function(e){let t,n,i=!0,o=this._batches,r=o.length;for(t=0;t<r;++t)i=o[t].update(e)&&i;for(t=0;t<r;++t){let s=o[t],a=s.itemsToRemove,c=a.length;for(let u=0;u<c;u++){n=a[u],s.remove(n);let f=this.add(e,n);s.isDirty=!0,f.isDirty=!0}}for(t=r-1;t>=0;--t){let s=o[t];s.isDirty&&(i=o[t].update(e)&&i,s.isDirty=!1),s.geometry.length===0&&o.splice(t,1)}return i};DS.prototype.getBoundingSphere=function(e,t){let n=this._batches,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return mt.FAILED};DS.prototype.removeAllPrimitives=function(){let e=this._batches,t=e.length;for(let n=0;n<t;++n)e[n].removeAllPrimitives()};var vS=DS;var Yit=new Ut,qit=new Ut;function AA(e,t,n,i,o,r){this.primitives=e,this.classificationType=t,this.appearanceType=n,this.materialProperty=i,this.updaters=new vt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new vt,this.material=void 0,this.updatersWithAttributes=new vt,this.attributes=new vt,this.subscriptions=new vt,this.showsUpdated=new vt,this.usingSphericalTextureCoordinates=o,this.zIndex=r,this.rectangleCollisionCheck=new cI}AA.prototype.overlapping=function(e){return this.rectangleCollisionCheck.collides(e)};AA.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty;return n===t||n instanceof Xt&&t instanceof Xt?!0:l(t)&&t.equals(n)};AA.prototype.add=function(e,t,n){let i=t.id;if(this.updaters.set(i,t),this.geometry.set(i,n),this.rectangleCollisionCheck.insert(i,n.geometry.rectangle),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!j.isConstant(t.distanceDisplayConditionProperty))this.updatersWithAttributes.set(i,t);else{let o=this;this.subscriptions.set(i,t.entity.definitionChanged.addEventListener(function(r,s,a,c){s==="isShowing"&&o.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};AA.prototype.remove=function(e){let t=e.id,n=this.geometry.get(t);if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.rectangleCollisionCheck.remove(t,n.geometry.rectangle),this.updatersWithAttributes.remove(t);let i=this.subscriptions.get(t);return l(i)&&(i(),this.subscriptions.remove(t)),!0}return!1};AA.prototype.update=function(e){let t=!0,n=this.primitive,i=this.primitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0)l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),this.material=ur.getValue(e,this.materialProperty,this.material),n=new fl({show:!1,asynchronous:!0,geometryInstances:o.slice(),appearance:new this.appearanceType({material:this.material}),classificationType:this.classificationType}),i.add(n,this.zIndex),t=!1;else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=ur.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material;let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],u=c.entity,f=this.geometry.get(c.id),h=this.attributes.get(f.id.id);l(h)||(h=n.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h));let A=u.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=wn.toValue(A,h.show));let m=c.distanceDisplayConditionProperty;if(!j.isConstant(m)){let _=j.getValueOrDefault(m,e,qit,Yit);Ut.equals(_,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(_,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(_,h.distanceDisplayCondition))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};AA.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,u=a.show[0]===1;c!==u&&(a.show=wn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};AA.prototype.contains=function(e){return this.updaters.contains(e.id)};AA.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};AA.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n)};function PS(e,t,n){this._items=[],this._primitives=e,this._classificationType=t,this._appearanceType=n}PS.prototype.add=function(e,t){let n=this._items,i=n.length,o=t.createFillGeometryInstance(e),r=Gu.shouldUseSphericalCoordinates(o.geometry.rectangle),s=j.getValueOrDefault(t.zIndex,0);for(let c=0;c<i;++c){let u=n[c];if(u.isMaterial(t)&&u.usingSphericalTextureCoordinates===r&&u.zIndex===s&&!u.overlapping(o.geometry.rectangle)){u.add(e,t,o);return}}let a=new AA(this._primitives,this._classificationType,this._appearanceType,t.fillMaterialProperty,r,s);a.add(e,t,o),n.push(a)};PS.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0&&!t[i].remove(e);i--);};PS.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];r.updaters.length===0&&(n.splice(t,1),r.destroy())}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};PS.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return mt.FAILED};PS.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var _F=PS;var Kit=new G,Xit=new Ut,Jit=new Ut,Zit=d.ZERO,$it=new d;function Ng(e,t,n,i){this.translucent=t,this.width=n,this.shadows=i,this.primitives=e,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new vt,this.updaters=new vt,this.updatersWithAttributes=new vt,this.attributes=new vt,this.itemsToRemove=[],this.subscriptions=new vt,this.showsUpdated=new vt}Ng.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),!e.hasConstantOutline||!e.outlineColorProperty.isConstant||!j.isConstant(e.distanceDisplayConditionProperty)||!j.isConstant(e.terrainOffsetProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};Ng.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};Ng.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0)l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i),i=new Qn({show:!1,asynchronous:!0,geometryInstances:s.slice(),appearance:new gn({flat:!0,translucent:this.translucent,renderState:{lineWidth:this.width}}),shadows:this.shadows}),o.add(i),t=!1;else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let u=s[r],f=this.geometry.get(u.id),h=this.attributes.get(f.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!u.outlineColorProperty.isConstant||c){let y=u.outlineColorProperty,C=j.getValueOrDefault(y,e,G.WHITE,Kit);G.equals(h._lastColor,C)||(h._lastColor=G.clone(C,h._lastColor),h.color=$t.toValue(C,h.color),(this.translucent&&h.color[3]===255||!this.translucent&&h.color[3]!==255)&&(this.itemsToRemove[n++]=u))}let A=u.entity.isShowing&&(u.hasConstantOutline||u.isOutlineVisible(e)),g=h.show[0]===1;A!==g&&(h.show=wn.toValue(A,h.show));let m=u.distanceDisplayConditionProperty;if(!j.isConstant(m)){let y=j.getValueOrDefault(m,e,Jit,Xit);Ut.equals(y,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(y,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(y,h.distanceDisplayCondition))}let _=u.terrainOffsetProperty;if(!j.isConstant(_)){let y=j.getValueOrDefault(_,e,Zit,$it);d.equals(y,h._lastOffset)||(h._lastOffset=d.clone(y,h._lastOffset),h.offset=uo.toValue(y,h.offset))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};Ng.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=wn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};Ng.prototype.contains=function(e){return this.updaters.contains(e.id)};Ng.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};Ng.prototype.removeAllPrimitives=function(){let e=this.primitives,t=this.primitive;l(t)&&(e.remove(t),this.primitive=void 0,this.geometry.removeAll(),this.updaters.removeAll());let n=this.oldPrimitive;l(n)&&(e.remove(n),this.oldPrimitive=void 0)};function RS(e,t,n){this._primitives=e,this._scene=t,this._shadows=n,this._solidBatches=new vt,this._translucentBatches=new vt}RS.prototype.add=function(e,t){let n=t.createOutlineGeometryInstance(e),i=this._scene.clampLineWidth(t.outlineWidth),o,r;n.attributes.color.value[3]===255?(o=this._solidBatches,r=o.get(i),l(r)||(r=new Ng(this._primitives,!1,i,this._shadows),o.set(i,r)),r.add(t,n)):(o=this._translucentBatches,r=o.get(i),l(r)||(r=new Ng(this._primitives,!0,i,this._shadows),o.set(i,r)),r.add(t,n))};RS.prototype.remove=function(e){let t,n=this._solidBatches.values,i=n.length;for(t=0;t<i;t++)if(n[t].remove(e))return;let o=this._translucentBatches.values,r=o.length;for(t=0;t<r;t++)if(o[t].remove(e))return};RS.prototype.update=function(e){let t,n,i,o,r=this._solidBatches.values,s=r.length,a=this._translucentBatches.values,c=a.length,u,f=!0,h=!1;do{for(h=!1,n=0;n<s;n++){o=r[n],f=o.update(e),u=o.itemsToRemove;let A=u.length;if(A>0)for(h=!0,t=0;t<A;t++)i=u[t],o.remove(i),this.add(e,i)}for(n=0;n<c;n++){o=a[n],f=o.update(e),u=o.itemsToRemove;let A=u.length;if(A>0)for(h=!0,t=0;t<A;t++)i=u[t],o.remove(i),this.add(e,i)}}while(h);return f};RS.prototype.getBoundingSphere=function(e,t){let n,i=this._solidBatches.values,o=i.length;for(n=0;n<o;n++){let a=i[n];if(a.contains(e))return a.getBoundingSphere(e,t)}let r=this._translucentBatches.values,s=r.length;for(n=0;n<s;n++){let a=r[n];if(a.contains(e))return a.getBoundingSphere(e,t)}return mt.FAILED};RS.prototype.removeAllPrimitives=function(){let e,t=this._solidBatches.values,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._translucentBatches.values,o=i.length;for(e=0;e<o;e++)i[e].removeAllPrimitives()};var MS=RS;var eot=[];function Eu(e,t,n,i){n=n??e.primitives,i=i??e.groundPrimitives,this._scene=e,this._primitives=n,this._groundPrimitives=i,this._entityCollection=void 0,this._addedObjects=new vt,this._removedObjects=new vt,this._changedObjects=new vt;let o=Bn.NUMBER_OF_SHADOW_MODES;this._outlineBatches=new Array(o*2),this._closedColorBatches=new Array(o*2),this._closedMaterialBatches=new Array(o*2),this._openColorBatches=new Array(o*2),this._openMaterialBatches=new Array(o*2);let r=fr.supportsMaterialsforEntitiesOnTerrain(e);this._supportsMaterialsforEntitiesOnTerrain=r;let s;for(s=0;s<o;++s)this._outlineBatches[s]=new MS(n,e,s,!1),this._outlineBatches[o+s]=new MS(n,e,s,!0),this._closedColorBatches[s]=new Pd(n,gn,void 0,!0,s,!0),this._closedColorBatches[o+s]=new Pd(n,gn,void 0,!0,s,!1),this._closedMaterialBatches[s]=new Rd(n,Eo,void 0,!0,s,!0),this._closedMaterialBatches[o+s]=new Rd(n,Eo,void 0,!0,s,!1),this._openColorBatches[s]=new Pd(n,gn,void 0,!1,s,!0),this._openColorBatches[o+s]=new Pd(n,gn,void 0,!1,s,!1),this._openMaterialBatches[s]=new Rd(n,Eo,void 0,!1,s,!0),this._openMaterialBatches[o+s]=new Rd(n,Eo,void 0,!1,s,!1);let a=Jn.NUMBER_OF_CLASSIFICATION_TYPES,c=new Array(a),u=[];if(r)for(s=0;s<a;++s)u.push(new _F(i,s,Eo)),c[s]=new vS(i,s);else for(s=0;s<a;++s)c[s]=new vS(i,s);this._groundColorBatches=c,this._groundMaterialBatches=u,this._dynamicBatch=new K0(n,i),this._batches=this._outlineBatches.concat(this._closedColorBatches,this._closedMaterialBatches,this._openColorBatches,this._openMaterialBatches,this._groundColorBatches,this._groundMaterialBatches,this._dynamicBatch),this._subscriptions=new vt,this._updaterSets=new vt,this._entityCollection=t,t.collectionChanged.addEventListener(Eu.prototype._onCollectionChanged,this),this._onCollectionChanged(t,t.values,eot)}Eu.registerUpdater=function(e){sI.registerUpdater(e)};Eu.unregisterUpdater=function(e){sI.unregisterUpdater(e)};Eu.prototype.update=function(e){let t=this._addedObjects,n=t.values,i=this._removedObjects,o=i.values,r=this._changedObjects,s=r.values,a,c,u,f,h=this;for(a=s.length-1;a>-1;a--)c=s[a],u=c.id,f=this._updaterSets.get(u),f.entity===c?f.forEach(function(_){h._removeUpdater(_),h._insertUpdaterIntoBatch(e,_)}):(o.push(c),n.push(c));for(a=o.length-1;a>-1;a--)c=o[a],u=c.id,f=this._updaterSets.get(u),f.forEach(this._removeUpdater.bind(this)),f.destroy(),this._updaterSets.remove(u),this._subscriptions.get(u)(),this._subscriptions.remove(u);for(a=n.length-1;a>-1;a--)c=n[a],u=c.id,f=new sI(c,this._scene),this._updaterSets.set(u,f),f.forEach(function(_){h._insertUpdaterIntoBatch(e,_)}),this._subscriptions.set(u,f.geometryChanged.addEventListener(Eu._onGeometryChanged,this));t.removeAll(),i.removeAll(),r.removeAll();let A=!0,g=this._batches,m=g.length;for(a=0;a<m;a++)A=g[a].update(e)&&A;return A};var tot=[],not=new le;Eu.prototype.getBoundingSphere=function(e,t){let n=tot,i=not,o=0,r=mt.DONE,s=this._batches,a=s.length,c=e.id,u=this._updaterSets.get(c).updaters;for(let f=0;f<u.length;f++){let h=u[f];for(let A=0;A<a;A++){if(r=s[A].getBoundingSphere(h,i),r===mt.PENDING)return mt.PENDING;r===mt.DONE&&(n[o]=le.clone(i,n[o]),o++)}}return o===0?mt.FAILED:(n.length=o,le.fromBoundingSpheres(n,t),mt.DONE)};Eu.prototype.isDestroyed=function(){return!1};Eu.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Eu.prototype._onCollectionChanged,this),this._addedObjects.removeAll(),this._removedObjects.removeAll();let e,t=this._batches,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._subscriptions.values;for(n=i.length,e=0;e<n;e++)i[e]();this._subscriptions.removeAll();let o=this._updaterSets.values;for(n=o.length,e=0;e<n;e++)o[e].destroy();return this._updaterSets.removeAll(),ue(this)};Eu.prototype._removeUpdater=function(e){let t=this._batches,n=t.length;for(let i=0;i<n;i++)t[i].remove(e)};Eu.prototype._insertUpdaterIntoBatch=function(e,t){if(t.isDynamic){this._dynamicBatch.add(e,t);return}let n;(t.outlineEnabled||t.fillEnabled)&&(n=t.shadowsProperty.getValue(e));let i=Bn.NUMBER_OF_SHADOW_MODES;if(t.outlineEnabled&&(l(t.terrainOffsetProperty)?this._outlineBatches[i+n].add(e,t):this._outlineBatches[n].add(e,t)),t.fillEnabled)if(t.onTerrain){let o=t.classificationTypeProperty.getValue(e);t.fillMaterialProperty instanceof Xt?this._groundColorBatches[o].add(e,t):this._groundMaterialBatches[o].add(e,t)}else t.isClosed?t.fillMaterialProperty instanceof Xt?l(t.terrainOffsetProperty)?this._closedColorBatches[i+n].add(e,t):this._closedColorBatches[n].add(e,t):l(t.terrainOffsetProperty)?this._closedMaterialBatches[i+n].add(e,t):this._closedMaterialBatches[n].add(e,t):t.fillMaterialProperty instanceof Xt?l(t.terrainOffsetProperty)?this._openColorBatches[i+n].add(e,t):this._openColorBatches[n].add(e,t):l(t.terrainOffsetProperty)?this._openMaterialBatches[i+n].add(e,t):this._openMaterialBatches[n].add(e,t)};Eu._onGeometryChanged=function(e){let t=this._removedObjects,n=this._changedObjects,i=e.entity,o=i.id;!l(t.get(o))&&!l(n.get(o))&&n.set(o,i)};Eu.prototype._onCollectionChanged=function(e,t,n){let i=this._addedObjects,o=this._removedObjects,r=this._changedObjects,s,a,c;for(s=n.length-1;s>-1;s--)c=n[s],a=c.id,i.remove(a)||(o.set(a,c),r.remove(a));for(s=t.length-1;s>-1;s--)c=t[s],a=c.id,o.remove(a)?r.set(a,c):i.set(a,c)};var yF=Eu;var iot=1,oot="30px sans-serif",rot=nr.FILL,sot=G.WHITE,aot=G.BLACK,cot=1,lot=!1,uot=new G(.165,.165,.165,.8),fot=new U(7,5),dot=U.ZERO,hot=d.ZERO,mot=Ze.NONE,Aot=Ri.CENTER,pot=zn.CENTER,got=new d,_ot=new G,yot=new G,Cot=new G,Eot=new U,Iot=new d,xot=new U,bot=new jt,Tot=new jt,Sot=new jt,wot=new Ut;function mge(e){this.entity=e,this.label=void 0,this.index=void 0}function Uy(e,t){t.collectionChanged.addEventListener(Uy.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new vt,this._onCollectionChanged(t,t.values,[],[])}Uy.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._label,c,u=r.label,f=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),h;if(f&&(h=j.getValueOrUndefined(s._position,e,got),c=j.getValueOrUndefined(a._text,e),f=l(h)&&l(c)),!f){gK(r,s,n);continue}j.isConstant(s._position)||(n._clusterDirty=!0);let A=!1,g=j.getValueOrDefault(a._heightReference,e,mot);l(u)||(u=n.getLabel(s),u.id=s,r.label=u,A=d.equals(u.position,h)&&u.heightReference===g),u.show=!0,u.position=h,u.text=c,u.scale=j.getValueOrDefault(a._scale,e,iot),u.font=j.getValueOrDefault(a._font,e,oot),u.style=j.getValueOrDefault(a._style,e,rot),u.fillColor=j.getValueOrDefault(a._fillColor,e,sot,_ot),u.outlineColor=j.getValueOrDefault(a._outlineColor,e,aot,yot),u.outlineWidth=j.getValueOrDefault(a._outlineWidth,e,cot),u.showBackground=j.getValueOrDefault(a._showBackground,e,lot),u.backgroundColor=j.getValueOrDefault(a._backgroundColor,e,uot,Cot),u.backgroundPadding=j.getValueOrDefault(a._backgroundPadding,e,fot,Eot),u.pixelOffset=j.getValueOrDefault(a._pixelOffset,e,dot,xot),u.eyeOffset=j.getValueOrDefault(a._eyeOffset,e,hot,Iot),u.heightReference=g,u.horizontalOrigin=j.getValueOrDefault(a._horizontalOrigin,e,Aot),u.verticalOrigin=j.getValueOrDefault(a._verticalOrigin,e,pot),u.translucencyByDistance=j.getValueOrUndefined(a._translucencyByDistance,e,bot),u.pixelOffsetScaleByDistance=j.getValueOrUndefined(a._pixelOffsetScaleByDistance,e,Tot),u.scaleByDistance=j.getValueOrUndefined(a._scaleByDistance,e,Sot),u.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e,wot),u.disableDepthTestDistance=j.getValueOrUndefined(a._disableDepthTestDistance,e),A&&u._updateClamping()}return!0};Uy.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!l(n.label))return mt.FAILED;let i=n.label;return t.center=d.clone(i._clampedPosition??i.position,t.center),t.radius=0,mt.DONE};Uy.prototype.isDestroyed=function(){return!1};Uy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Uy.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removeLabel(e[t]);return ue(this)};Uy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._label)&&l(r._position)&&s.set(r.id,new mge(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._label)&&l(r._position)?s.contains(r.id)||s.set(r.id,new mge(r)):(gK(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],gK(s.get(r.id),r,a),s.remove(r.id)};function gK(e,t,n){l(e)&&(e.label=void 0,n.removeLabel(t))}var CF=Uy;var Bot=1,Dot=!0,vot=0,Pot=!0,Rot=!0,Mot=Bn.ENABLED,Not=Ze.NONE,Lot=G.RED,Oot=0,Fot=G.WHITE,Qot=Qc.HIGHLIGHT,kot=.5,Uot=new U(1,1),Age={maximumPositionEpsilon:Number.POSITIVE_INFINITY},Got=new N,zot=new N,pge=new G,gge=new Array(4),Vot=new d;function Gy(e,t){t.collectionChanged.addEventListener(Gy.prototype._onCollectionChanged,this),this._scene=e,this._primitives=e.primitives,this._entityCollection=t,this._modelHash={},this._entitiesToVisualize=new vt,this._onCollectionChanged(t,t.values,[],[])}async function Hot(e,t,n,i,o){let r=e._primitives,s=e._modelHash;try{let a=await Fh.fromGltfAsync({url:n,incrementallyLoadTextures:i,scene:e._scene,environmentMapOptions:o});if(e.isDestroyed()||!l(s[t.id]))return;a.id=t,r.add(a),s[t.id].modelPrimitive=a,a.errorEvent.addEventListener(c=>{l(s[t.id])&&(console.log(c),c.name!=="TextureError"&&a.incrementallyLoadTextures&&(s[t.id].loadFailed=!0))})}catch(a){if(e.isDestroyed()||!l(s[t.id]))return;console.log(a),s[t.id].loadFailed=!0}}Gy.prototype.update=function(e){let t=this._entitiesToVisualize.values,n=this._modelHash,i=this._primitives;for(let o=0,r=t.length;o<r;o++){let s=t[o],a=s._model,c,u=n[s.id],f=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),h;if(f&&(h=s.computeModelMatrix(e,Got),c=we.createIfNeeded(j.getValueOrUndefined(a._uri,e)),f=l(h)&&l(c)),!f){l(u)&&u.modelPrimitive&&(u.modelPrimitive.show=!1);continue}if(!l(u)||c.url!==u.url){l(u?.modelPrimitive)&&(i.removeAndDestroy(u.modelPrimitive),delete n[s.id]),u={modelPrimitive:void 0,url:c.url,animationsRunning:!1,nodeTransformationsScratch:{},articulationsScratch:{},loadFailed:!1,modelUpdated:!1,environmentMapOptionsScratch:{...Age}},n[s.id]=u;let m=j.getValueOrDefault(a._incrementallyLoadTextures,e,Pot),_=j.getValueOrDefault(a._environmentMapOptions,e,Age,u.environmentMapOptionsScratch);Hot(this,s,c,m,_)}let A=u.modelPrimitive;if(!l(A))continue;A.show=!0,A.scale=j.getValueOrDefault(a._scale,e,Bot),A.enableVerticalExaggeration=j.getValueOrDefault(a._enableVerticalExaggeration,e,Dot),A.minimumPixelSize=j.getValueOrDefault(a._minimumPixelSize,e,vot),A.maximumScale=j.getValueOrUndefined(a._maximumScale,e),A.modelMatrix=N.clone(h,A.modelMatrix),A.shadows=j.getValueOrDefault(a._shadows,e,Mot),A.heightReference=j.getValueOrDefault(a._heightReference,e,Not),A.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e),A.silhouetteColor=j.getValueOrDefault(a._silhouetteColor,e,Lot,pge),A.silhouetteSize=j.getValueOrDefault(a._silhouetteSize,e,Oot),A.color=j.getValueOrDefault(a._color,e,Fot,pge),A.colorBlendMode=j.getValueOrDefault(a._colorBlendMode,e,Qot),A.colorBlendAmount=j.getValueOrDefault(a._colorBlendAmount,e,kot),A.clippingPlanes=j.getValueOrUndefined(a._clippingPlanes,e),A.clampAnimations=j.getValueOrDefault(a._clampAnimations,e,Rot),A.imageBasedLighting.imageBasedLightingFactor=j.getValueOrDefault(a._imageBasedLightingFactor,e,Uot);let g=j.getValueOrUndefined(a._lightColor,e);if(l(g)&&(G.pack(g,gge,0),g=d.unpack(gge,0,Vot)),A.lightColor=g,A.customShader=j.getValueOrUndefined(a._customShader,e),n[s.id].modelUpdated=!0,A.ready){let m=j.getValueOrDefault(a._runAnimations,e,!0);u.animationsRunning!==m&&(m?A.activeAnimations.addAll({loop:cu.REPEAT}):A.activeAnimations.removeAll(),u.animationsRunning=m);let _=j.getValueOrUndefined(a._nodeTransformations,e,u.nodeTransformationsScratch);if(l(_)){let E=Object.keys(_);for(let I=0,b=E.length;I<b;++I){let S=E[I],B=_[S];if(!l(B))continue;let v=A.getNode(S);if(!l(v))continue;let P=N.fromTranslationRotationScale(B,zot);v.matrix=N.multiply(v.originalMatrix,P,P)}}let y=!1,C=j.getValueOrUndefined(a._articulations,e,u.articulationsScratch);if(l(C)){let E=Object.keys(C);for(let I=0,b=E.length;I<b;++I){let S=E[I],B=C[S];l(B)&&(y=!0,A.setArticulationStage(S,B))}}y&&A.applyArticulations()}}return!0};Gy.prototype.isDestroyed=function(){return!1};Gy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Gy.prototype._onCollectionChanged,this);let e=this._entitiesToVisualize.values,t=this._modelHash,n=this._primitives;for(let i=e.length-1;i>-1;i--)_K(this,e[i],t,n);return ue(this)};var c8=new d,Wot=new Ae;Gy.prototype.getBoundingSphere=function(e,t){let n=this._modelHash[e.id];if(!l(n))return mt.FAILED;if(n.loadFailed)return mt.FAILED;let i=n.modelPrimitive;if(!l(i)||!i.show)return mt.PENDING;if(!i.ready||!n.modelUpdated)return mt.PENDING;let o=this._scene,r=o.ellipsoid??te.default;if(i.heightReference!==Ze.NONE){let a=i.modelMatrix;c8.x=a[12],c8.y=a[13],c8.z=a[14];let c=r.cartesianToCartographic(c8,Wot),u=o.getHeight(c,i.heightReference);return l(u)&&(Wf(i.heightReference)?c.height=u:c.height+=u),le.clone(i.boundingSphere,t),t.center=r.cartographicToCartesian(c),mt.DONE}return le.clone(i.boundingSphere,t),mt.DONE};Gy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._entitiesToVisualize,a=this._modelHash,c=this._primitives;for(o=t.length-1;o>-1;o--)r=t[o],l(r._model)&&l(r._position)&&s.set(r.id,r);for(o=i.length-1;o>-1;o--)r=i[o],l(r._model)&&l(r._position)?(jot(r,a),s.set(r.id,r)):(_K(this,r,a,c),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],_K(this,r,a,c),s.remove(r.id)};function _K(e,t,n,i){let o=n[t.id];l(o)&&(i.removeAndDestroy(o.modelPrimitive),delete n[t.id])}function jot(e,t){let n=t[e.id];l(n)&&(n.nodeTransformationsScratch={},n.articulationsScratch={})}var EF=Gy;function zy(e){this._definitionChanged=new _e,this._value=void 0,this._removeSubscription=void 0,this.setValue(e)}Object.defineProperties(zy.prototype,{isConstant:{get:function(){return j.isConstant(this._value)}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return l(this._value)?this._value.referenceFrame:$i.FIXED}}});var Yot=new K;zy.prototype.getValue=function(e,t){return l(e)||(e=K.now(Yot)),this.getValueInReferenceFrame(e,$i.FIXED,t)};zy.prototype.setValue=function(e){this._value!==e&&(this._value=e,l(this._removeSubscription)&&(this._removeSubscription(),this._removeSubscription=void 0),l(e)&&(this._removeSubscription=e.definitionChanged.addEventListener(this._raiseDefinitionChanged,this)),this._definitionChanged.raiseEvent(this))};zy.prototype.getValueInReferenceFrame=function(e,t,n){if(l(this._value))return n=this._value.getValueInReferenceFrame(e,t,n),l(n)?te.default.scaleToGeodeticSurface(n,n):void 0};zy.prototype.equals=function(e){return this===e||e instanceof zy&&this._value===e._value};zy.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var pA=zy;var qot=60,Kot=1,yge=new Pn,yK=new Pn,CK=new Pn;function _ge(e){this.entity=e,this.polyline=void 0,this.index=void 0,this.updater=void 0}function Xot(e,t,n,i,o,r,s,a,c){let u=a,f;f=e.getValueInReferenceFrame(t,r,c[u]),l(f)&&(c[u++]=f);let h=!l(o)||K.lessThanOrEquals(o,t)||K.greaterThanOrEquals(o,n),A=0,g=i.length,m=i[A],_=n,y=!1,C,E,I;for(;A<g;){if(!h&&K.greaterThanOrEquals(m,o)&&(f=e.getValueInReferenceFrame(o,r,c[u]),l(f)&&(c[u++]=f),h=!0),K.greaterThan(m,t)&&K.lessThan(m,_)&&!m.equals(o)&&(f=e.getValueInReferenceFrame(m,r,c[u]),l(f)&&(c[u++]=f)),A<g-1){if(s>0&&!y){let b=i[A+1],S=K.secondsDifference(b,m);y=S>s,y&&(C=Math.ceil(S/s),E=0,I=S/Math.max(C,2),C=Math.max(C-1,1))}if(y&&E<C){m=K.addSeconds(m,I,new K),E++;continue}}y=!1,A++,m=i[A]}return f=e.getValueInReferenceFrame(n,r,c[u]),l(f)&&(c[u++]=f),u}function Jot(e,t,n,i,o,r,s,a){let c,u=0,f=s,h=t,A=!l(i)||K.lessThanOrEquals(i,t)||K.greaterThanOrEquals(i,n);for(;K.lessThan(h,n);)!A&&K.greaterThanOrEquals(h,i)&&(A=!0,c=e.getValueInReferenceFrame(i,o,a[f]),l(c)&&(a[f]=c,f++)),c=e.getValueInReferenceFrame(h,o,a[f]),l(c)&&(a[f]=c,f++),u++,h=K.addSeconds(t,r*u,new K);return c=e.getValueInReferenceFrame(n,o,a[f]),l(c)&&(a[f]=c,f++),f}function Zot(e,t,n,i,o,r,s,a){let c,u=0,f=s,h=t,A=Math.max(r,60),g=!l(i)||K.lessThanOrEquals(i,t)||K.greaterThanOrEquals(i,n);for(;K.lessThan(h,n);)!g&&K.greaterThanOrEquals(h,i)&&(g=!0,c=e.getValueInReferenceFrame(i,o,a[f]),l(c)&&(a[f]=c,f++)),c=e.getValueInReferenceFrame(h,o,a[f]),l(c)&&(a[f]=c,f++),u++,h=K.addSeconds(t,A*u,new K);return c=e.getValueInReferenceFrame(n,o,a[f]),l(c)&&(a[f]=c,f++),f}function $ot(e,t,n,i,o,r,s,a){CK.start=t,CK.stop=n;let c=s,u=e.intervals;for(let f=0;f<u.length;f++){let h=u.get(f);if(!Pn.intersect(h,CK,yge).isEmpty){let A=h.start;h.isStartIncluded||(h.isStopIncluded?A=h.stop:A=K.addSeconds(h.start,K.secondsDifference(h.stop,h.start)/2,new K));let g=e.getValueInReferenceFrame(A,o,a[c]);l(g)&&(a[c]=g,c++)}}return c}function ert(e,t,n,i,o,r,s,a){let c=e.getValueInReferenceFrame(t,o,a[s]);return l(c)&&(a[s++]=c),s}function trt(e,t,n,i,o,r,s,a){yK.start=t,yK.stop=n;let c=s,u=e.intervals;for(let f=0;f<u.length;f++){let h=u.get(f);if(!Pn.intersect(h,yK,yge).isEmpty){let A=h.start,g=h.stop,m=t;K.greaterThan(A,m)&&(m=A);let _=n;K.lessThan(g,_)&&(_=g),c=Cge(h.data,m,_,i,o,r,c,a)}}return c}function Cge(e,t,n,i,o,r,s,a){for(;e instanceof Sg;)e=e.resolvedProperty;if(e instanceof qa){let c=e._property._times;s=Xot(e,t,n,c,i,o,r,s,a)}else e instanceof vR?s=Jot(e,t,n,i,o,r,s,a):e instanceof ja?s=trt(e,t,n,i,o,r,s,a):e instanceof wg?s=$ot(e,t,n,i,o,r,s,a):e instanceof hl||e instanceof pA&&j.isConstant(e)?s=ert(e,t,n,i,o,r,s,a):s=Zot(e,t,n,i,o,r,s,a);return s}function Ege(e,t,n,i,o,r,s){l(s)||(s=[]);let a=Cge(e,t,n,i,o,r,0,s);return s.length=a,s}var nrt=new J;function IF(e,t){this._unusedIndexes=[],this._polylineCollection=new Uh,this._scene=e,this._referenceFrame=t,e.primitives.add(this._polylineCollection)}IF.prototype.update=function(e){if(this._referenceFrame===$i.INERTIAL){let t=kt.computeIcrfToCentralBodyFixedMatrix(e,nrt);N.fromRotationTranslation(t,d.ZERO,this._polylineCollection.modelMatrix)}};IF.prototype.updateObject=function(e,t){let n=t.entity,i=n._path,o=n._position,r,s,a=i._show,c=t.polyline,u=n.isShowing&&n.isAvailable(e)&&(!l(a)||a.getValue(e));if(u){let h=j.getValueOrUndefined(i._leadTime,e),A=j.getValueOrUndefined(i._trailTime,e),g=n._availability,m=l(g),_=l(h),y=l(A);if(u=m||_&&y,u){if(y&&(r=K.addSeconds(e,-A,new K)),_&&(s=K.addSeconds(e,h,new K)),m){let C=g.start,E=g.stop;(!y||K.greaterThan(C,r))&&(r=C),(!_||K.lessThan(E,s))&&(s=E)}u=K.lessThan(r,s)}}if(!u){l(c)&&(this._unusedIndexes.push(t.index),t.polyline=void 0,c.show=!1,t.index=void 0);return}if(!l(c)){let h=this._unusedIndexes;if(h.length>0){let g=h.pop();c=this._polylineCollection.get(g),t.index=g}else t.index=this._polylineCollection.length,c=this._polylineCollection.add();c.id=n,t.polyline=c}let f=j.getValueOrDefault(i._resolution,e,qot);c.show=!0,c.positions=Ege(o,r,s,e,this._referenceFrame,f,c.positions.slice()),c.material=ur.getValue(e,i._material,c.material),c.width=j.getValueOrDefault(i._width,e,Kot),c.distanceDisplayCondition=j.getValueOrUndefined(i._distanceDisplayCondition,e,c.distanceDisplayCondition)};IF.prototype.removeObject=function(e){let t=e.polyline;l(t)&&(this._unusedIndexes.push(e.index),e.polyline=void 0,t.show=!1,t.id=void 0,e.index=void 0)};IF.prototype.destroy=function(){return this._scene.primitives.remove(this._polylineCollection),ue(this)};function Vy(e,t){t.collectionChanged.addEventListener(Vy.prototype._onCollectionChanged,this),this._scene=e,this._updaters={},this._entityCollection=t,this._items=new vt,this._onCollectionChanged(t,t.values,[],[])}Vy.prototype.update=function(e){let t=this._updaters;for(let i in t)t.hasOwnProperty(i)&&t[i].update(e);let n=this._items.values;if(n.length===0&&l(this._updaters)&&Object.keys(this._updaters).length>0){for(let i in t)t.hasOwnProperty(i)&&t[i].destroy();this._updaters={}}for(let i=0,o=n.length;i<o;i++){let r=n[i],a=r.entity._position,c=r.updater,u=$i.FIXED;this._scene.mode===ie.SCENE3D&&(u=a.referenceFrame);let f=this._updaters[u];if(c===f&&l(f)){f.updateObject(e,r);continue}l(c)&&c.removeObject(r),l(f)||(f=new IF(this._scene,u),f.update(e),this._updaters[u]=f),r.updater=f,l(f)&&f.updateObject(e,r)}return!0};Vy.prototype.isDestroyed=function(){return!1};Vy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Vy.prototype._onCollectionChanged,this);let e=this._updaters;for(let t in e)e.hasOwnProperty(t)&&e[t].destroy();return ue(this)};Vy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s,a=this._items;for(o=t.length-1;o>-1;o--)r=t[o],l(r._path)&&l(r._position)&&a.set(r.id,new _ge(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._path)&&l(r._position)?a.contains(r.id)||a.set(r.id,new _ge(r)):(s=a.get(r.id),l(s)&&(l(s.updater)&&s.updater.removeObject(s),a.remove(r.id)));for(o=n.length-1;o>-1;o--)r=n[o],s=a.get(r.id),l(s)&&(l(s.updater)&&s.updater.removeObject(s),a.remove(r.id))};Vy._subSample=Ege;var xF=Vy;var Ige=G.WHITE,xge=G.BLACK,bge=0,Tge=1,Sge=0,wge=br.NONE,Bge=new G,irt=new d,Dge=new G,vge=new jt,Pge=new jt,Rge=new Ut;function Mge(e){this.entity=e,this.pointPrimitive=void 0,this.billboard=void 0,this.color=void 0,this.outlineColor=void 0,this.pixelSize=void 0,this.outlineWidth=void 0}function Hy(e,t){t.collectionChanged.addEventListener(Hy.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new vt,this._onCollectionChanged(t,t.values,[],[])}Hy.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._point,c=r.pointPrimitive,u=r.billboard,f=j.getValueOrDefault(a._heightReference,e,Ze.NONE),h=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),A;if(h&&(A=j.getValueOrUndefined(s._position,e,irt),h=l(A)),!h){bF(r,s,n);continue}j.isConstant(s._position)||(n._clusterDirty=!0);let g=!1,m=!1;if(f!==Ze.NONE&&!l(u)?(l(c)&&(bF(r,s,n),c=void 0),u=n.getBillboard(s),u.id=s,u.image=void 0,r.billboard=u,g=!0,m=d.equals(u.position,A)&&u.heightReference===f):f===Ze.NONE&&!l(c)&&(l(u)&&(bF(r,s,n),u=void 0),c=n.getPoint(s),c.id=s,r.pointPrimitive=c),l(c))c.show=!0,c.position=A,c.scaleByDistance=j.getValueOrUndefined(a._scaleByDistance,e,vge),c.translucencyByDistance=j.getValueOrUndefined(a._translucencyByDistance,e,Pge),c.color=j.getValueOrDefault(a._color,e,Ige,Bge),c.outlineColor=j.getValueOrDefault(a._outlineColor,e,xge,Dge),c.outlineWidth=j.getValueOrDefault(a._outlineWidth,e,bge),c.pixelSize=j.getValueOrDefault(a._pixelSize,e,Tge),c.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e,Rge),c.disableDepthTestDistance=j.getValueOrDefault(a._disableDepthTestDistance,e,Sge),c.splitDirection=j.getValueOrDefault(a._splitDirection,e,wge);else if(l(u)){u.show=!0,u.position=A,u.scaleByDistance=j.getValueOrUndefined(a._scaleByDistance,e,vge),u.translucencyByDistance=j.getValueOrUndefined(a._translucencyByDistance,e,Pge),u.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e,Rge),u.disableDepthTestDistance=j.getValueOrDefault(a._disableDepthTestDistance,e,Sge),u.splitDirection=j.getValueOrDefault(a._splitDirection,e,wge),u.heightReference=f;let _=j.getValueOrDefault(a._color,e,Ige,Bge),y=j.getValueOrDefault(a._outlineColor,e,xge,Dge),C=Math.round(j.getValueOrDefault(a._outlineWidth,e,bge)),E=Math.max(1,Math.round(j.getValueOrDefault(a._pixelSize,e,Tge)));if(C>0?(u.scale=1,g=g||C!==r.outlineWidth||E!==r.pixelSize||!G.equals(_,r.color)||!G.equals(y,r.outlineColor)):(u.scale=E/50,E=50,g=g||C!==r.outlineWidth||!G.equals(_,r.color)||!G.equals(y,r.outlineColor)),g){r.color=G.clone(_,r.color),r.outlineColor=G.clone(y,r.outlineColor),r.pixelSize=E,r.outlineWidth=C;let I=_.alpha,b=_.toCssColorString(),S=y.toCssColorString(),B=JSON.stringify([b,E,S,C]);u.setImage(B,_0(I,b,S,C,E))}m&&u._updateClamping()}}return!0};Hy.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!(l(n.pointPrimitive)||l(n.billboard)))return mt.FAILED;if(l(n.pointPrimitive))t.center=d.clone(n.pointPrimitive.position,t.center);else{let i=n.billboard;if(!l(i._clampedPosition))return mt.PENDING;t.center=d.clone(i._clampedPosition,t.center)}return t.radius=0,mt.DONE};Hy.prototype.isDestroyed=function(){return!1};Hy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Hy.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removePoint(e[t]);return ue(this)};Hy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._point)&&l(r._position)&&s.set(r.id,new Mge(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._point)&&l(r._position)?s.contains(r.id)||s.set(r.id,new Mge(r)):(bF(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],bF(s.get(r.id),r,a),s.remove(r.id)};function bF(e,t,n){if(l(e)){let i=e.pointPrimitive;if(l(i)){e.pointPrimitive=void 0,n.removePoint(t);return}let o=e.billboard;l(o)&&(e.billboard=void 0,n.removeBillboard(t))}}var TF=Hy;var Qge=[];function ort(e,t,n,i,o){let r=Qge;r.length=o;let s,a=n.red,c=n.green,u=n.blue,f=n.alpha,h=i.red,A=i.green,g=i.blue,m=i.alpha;if(G.equals(n,i)){for(s=0;s<o;s++)r[s]=G.clone(n);return r}let _=(h-a)/o,y=(A-c)/o,C=(g-u)/o,E=(m-f)/o;for(s=0;s<o;s++)r[s]=new G(a+s*_,c+s*y,u+s*C,f+s*E);return r}function SF(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.colors,i=e.width??1,o=e.colorsPerVertex??!1;this._positions=t,this._colors=n,this._width=i,this._colorsPerVertex=o,this._vertexFormat=Pe.clone(e.vertexFormat??Pe.DEFAULT),this._arcType=e.arcType??cn.GEODESIC,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._workerName="createPolylineGeometry";let r=1+t.length*d.packedLength;r+=l(n)?1+n.length*G.packedLength:1,this.packedLength=r+te.packedLength+Pe.packedLength+4}SF.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._colors;for(r=l(s)?s.length:0,t[n++]=r,i=0;i<r;++i,n+=G.packedLength)G.pack(s[i],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._width,t[n++]=e._colorsPerVertex?1:0,t[n++]=e._arcType,t[n]=e._granularity,t};var kge=te.clone(te.UNIT_SPHERE),Uge=new Pe,lI={positions:void 0,colors:void 0,ellipsoid:kge,vertexFormat:Uge,width:void 0,colorsPerVertex:void 0,arcType:void 0,granularity:void 0};SF.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=o>0?new Array(o):void 0;for(i=0;i<o;++i,t+=G.packedLength)s[i]=G.unpack(e,t);let a=te.unpack(e,t,kge);t+=te.packedLength;let c=Pe.unpack(e,t,Uge);t+=Pe.packedLength;let u=e[t++],f=e[t++]===1,h=e[t++],A=e[t];return l(n)?(n._positions=r,n._colors=s,n._ellipsoid=te.clone(a,n._ellipsoid),n._vertexFormat=Pe.clone(c,n._vertexFormat),n._width=u,n._colorsPerVertex=f,n._arcType=h,n._granularity=A,n):(lI.positions=r,lI.colors=s,lI.width=u,lI.colorsPerVertex=f,lI.arcType=h,lI.granularity=A,new SF(lI))};var Nge=new d,Lge=new d,Oge=new d,Fge=new d;SF.createGeometry=function(e){let t=e._width,n=e._vertexFormat,i=e._colors,o=e._colorsPerVertex,r=e._arcType,s=e._granularity,a=e._ellipsoid,c,u,f,h=[],A=Mo(e._positions,d.equalsEpsilon,!1,h);if(l(i)&&h.length>0){let R=0,O=h[0];i=i.filter(function(k,Q){let z=!1;return o?z=Q===O||Q===0&&O===1:z=Q+1===O,z?(R++,O=h[R],!1):!0})}let g=A.length;if(g<2||t<=0)return;if(r===cn.GEODESIC||r===cn.RHUMB){let R,O;r===cn.GEODESIC?(R=D.chordLength(s,a.maximumRadius),O=Wi.numberOfPoints):(R=s,O=Wi.numberOfPointsRhumbLine);let k=Wi.extractHeights(A,a);if(l(i)){let Q=1;for(c=0;c<g-1;++c)Q+=O(A[c],A[c+1],R);let z=new Array(Q),F=0;for(c=0;c<g-1;++c){let H=A[c],W=A[c+1],Z=i[c],Y=O(H,W,R);if(o&&c<Q){let $=i[c+1],X=ort(H,W,Z,$,Y),he=X.length;for(u=0;u<he;++u)z[F++]=X[u]}else for(u=0;u<Y;++u)z[F++]=G.clone(Z)}z[F]=G.clone(i[i.length-1]),i=z,Qge.length=0}r===cn.GEODESIC?A=Wi.generateCartesianArc({positions:A,minDistance:R,ellipsoid:a,height:k}):A=Wi.generateCartesianRhumbArc({positions:A,granularity:R,ellipsoid:a,height:k})}g=A.length;let m=g*4-4,_=new Float64Array(m*3),y=new Float64Array(m*3),C=new Float64Array(m*3),E=new Float32Array(m*2),I=n.st?new Float32Array(m*2):void 0,b=l(i)?new Uint8Array(m*4):void 0,S=0,B=0,v=0,P=0,M;for(u=0;u<g;++u){u===0?(M=Nge,d.subtract(A[0],A[1],M),d.add(A[0],M,M)):M=A[u-1],d.clone(M,Oge),d.clone(A[u],Lge),u===g-1?(M=Nge,d.subtract(A[g-1],A[g-2],M),d.add(A[g-1],M,M)):M=A[u+1],d.clone(M,Fge);let R,O;l(b)&&(u!==0&&!o?R=i[u-1]:R=i[u],u!==g-1&&(O=i[u]));let k=u===0?2:0,Q=u===g-1?2:4;for(f=k;f<Q;++f){d.pack(Lge,_,S),d.pack(Oge,y,S),d.pack(Fge,C,S),S+=3;let z=f-2<0?-1:1;if(E[B++]=2*(f%2)-1,E[B++]=z*t,n.st&&(I[v++]=u/(g-1),I[v++]=Math.max(E[B-2],0)),l(b)){let F=f<2?R:O;b[P++]=G.floatToByte(F.red),b[P++]=G.floatToByte(F.green),b[P++]=G.floatToByte(F.blue),b[P++]=G.floatToByte(F.alpha)}}}let L=new yn;L.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:_}),L.prevPosition=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:y}),L.nextPosition=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:C}),L.expandAndWidth=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:E}),n.st&&(L.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:I})),l(b)&&(L.color=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:4,values:b,normalize:!0}));let p=Oe.createTypedArray(m,g*6-6),x=0,T=0,w=g-1;for(u=0;u<w;++u)p[T++]=x,p[T++]=x+2,p[T++]=x+1,p[T++]=x+1,p[T++]=x+2,p[T++]=x+3,x+=4;return new ht({attributes:L,indices:p,primitiveType:Me.TRIANGLES,boundingSphere:le.fromPoints(A),geometryType:jf.POLYLINES})};var Lg=SF;var rrt=new ci(0),l8={},Gge=new G,srt=new Xt(G.WHITE),art=new ci(!0),crt=new ci(Bn.DISABLED),lrt=new ci(new Ut),urt=new ci(Jn.BOTH);function frt(){this.vertexFormat=void 0,this.positions=void 0,this.width=void 0,this.arcType=void 0,this.granularity=void 0}function drt(){this.positions=void 0,this.width=void 0,this.arcType=void 0,this.granularity=void 0}function om(e,t){this._entity=e,this._scene=t,this._entitySubscription=e.definitionChanged.addEventListener(om.prototype._onEntityPropertyChanged,this),this._fillEnabled=!1,this._dynamic=!1,this._geometryChanged=new _e,this._showProperty=void 0,this._materialProperty=void 0,this._shadowsProperty=void 0,this._distanceDisplayConditionProperty=void 0,this._classificationTypeProperty=void 0,this._depthFailMaterialProperty=void 0,this._geometryOptions=new frt,this._groundGeometryOptions=new drt,this._id=`polyline-${e.id}`,this._clampToGround=!1,this._supportsPolylinesOnTerrain=fr.supportsPolylinesOnTerrain(t),this._zIndex=0,this._onEntityPropertyChanged(e,"polyline",e.polyline,void 0)}Object.defineProperties(om.prototype,{id:{get:function(){return this._id}},entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!l(this._entity.availability)&&j.isConstant(this._showProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},depthFailMaterialProperty:{get:function(){return this._depthFailMaterialProperty}},outlineEnabled:{value:!1},hasConstantOutline:{value:!0},outlineColorProperty:{value:void 0},shadowsProperty:{get:function(){return this._shadowsProperty}},distanceDisplayConditionProperty:{get:function(){return this._distanceDisplayConditionProperty}},classificationTypeProperty:{get:function(){return this._classificationTypeProperty}},isDynamic:{get:function(){return this._dynamic}},isClosed:{value:!1},geometryChanged:{get:function(){return this._geometryChanged}},arcType:{get:function(){return this._arcType}},clampToGround:{get:function(){return this._clampToGround&&this._supportsPolylinesOnTerrain}},zIndex:{get:function(){return this._zIndex}}});om.prototype.isOutlineVisible=function(e){return!1};om.prototype.isFilled=function(e){let t=this._entity;return(this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e))??!1};om.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new wn(n&&t.isShowing&&this._showProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=Kn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r},a;return this._materialProperty instanceof Xt&&(l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,Gge)),l(a)||(a=G.WHITE),s.color=$t.fromColor(a)),this.clampToGround?new Pt({id:t,geometry:new dE(this._groundGeometryOptions),attributes:s}):(l(this._depthFailMaterialProperty)&&this._depthFailMaterialProperty instanceof Xt&&(l(this._depthFailMaterialProperty.color)&&(this._depthFailMaterialProperty.color.isConstant||n)&&(a=this._depthFailMaterialProperty.color.getValue(e,Gge)),l(a)||(a=G.WHITE),s.depthFailColor=$t.fromColor(a)),new Pt({id:t,geometry:new Lg(this._geometryOptions),attributes:s}))};om.prototype.createOutlineGeometryInstance=function(e){};om.prototype.isDestroyed=function(){return!1};om.prototype.destroy=function(){this._entitySubscription(),ue(this)};om.prototype._onEntityPropertyChanged=function(e,t,n,i){if(!(t==="availability"||t==="polyline"))return;let o=this._entity.polyline;if(!l(o)){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let r=o.positions,s=o.show;if(l(s)&&s.isConstant&&!s.getValue(je.MINIMUM_VALUE)||!l(r)){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let a=o.zIndex,c=o.material??srt,u=c instanceof Xt;this._materialProperty=c,this._depthFailMaterialProperty=o.depthFailMaterial,this._showProperty=s??art,this._shadowsProperty=o.shadows??crt,this._distanceDisplayConditionProperty=o.distanceDisplayCondition??lrt,this._classificationTypeProperty=o.classificationType??urt,this._fillEnabled=!0,this._zIndex=a??rrt;let f=o.width,h=o.arcType,A=o.clampToGround,g=o.granularity;if(!r.isConstant||!j.isConstant(f)||!j.isConstant(h)||!j.isConstant(g)||!j.isConstant(A)||!j.isConstant(a))this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this));else{let m=this._geometryOptions,_=r.getValue(je.MINIMUM_VALUE,m.positions);if(!l(_)||_.length<2){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let y;u&&(!l(this._depthFailMaterialProperty)||this._depthFailMaterialProperty instanceof Xt)?y=Cs.VERTEX_FORMAT:y=ka.VERTEX_FORMAT,m.vertexFormat=y,m.positions=_,m.width=l(f)?f.getValue(je.MINIMUM_VALUE):void 0,m.arcType=l(h)?h.getValue(je.MINIMUM_VALUE):void 0,m.granularity=l(g)?g.getValue(je.MINIMUM_VALUE):void 0;let C=this._groundGeometryOptions;C.positions=_,C.width=m.width,C.arcType=m.arcType,C.granularity=m.granularity,this._clampToGround=l(A)?A.getValue(je.MINIMUM_VALUE):!1,!this._clampToGround&&l(a)&&yt("Entity polylines must have clampToGround: true when using zIndex. zIndex will be ignored."),this._dynamic=!1,this._geometryChanged.raiseEvent(this)}};om.prototype.createDynamicUpdater=function(e,t){return new wF(e,t,this)};var NS={positions:void 0,granularity:void 0,height:void 0,ellipsoid:void 0};function wF(e,t,n){this._line=void 0,this._primitives=e,this._groundPrimitives=t,this._groundPolylinePrimitive=void 0,this._material=void 0,this._geometryUpdater=n,this._positions=[]}function zge(e){if(l(e._line))return e._line;let t=e._primitives,n=e._geometryUpdater._scene.id+t._guid,i=l8[n];!l(i)||i.isDestroyed()?(i=new Uh,l8[n]=i,t.add(i)):t.contains(i)||t.add(i);let o=i.add();return o.id=e._geometryUpdater._entity,e._line=o,o}wF.prototype.update=function(e){let t=this._geometryUpdater,n=t._entity,i=n.polyline,o=i.positions,r=j.getValueOrUndefined(o,e,this._positions);t._clampToGround=j.getValueOrDefault(i._clampToGround,e,!1),t._groundGeometryOptions.positions=r,t._groundGeometryOptions.width=j.getValueOrDefault(i._width,e,1),t._groundGeometryOptions.arcType=j.getValueOrDefault(i._arcType,e,cn.GEODESIC),t._groundGeometryOptions.granularity=j.getValueOrDefault(i._granularity,e,9999);let s=this._groundPrimitives;if(l(this._groundPolylinePrimitive)&&(s.remove(this._groundPolylinePrimitive),this._groundPolylinePrimitive=void 0),t.clampToGround){if(!n.isShowing||!n.isAvailable(e)||!j.getValueOrDefault(i._show,e,!0)||!l(r)||r.length<2)return;let h=t.fillMaterialProperty,A;if(h instanceof Xt)A=new Cs;else{let g=ur.getValue(e,h,this._material);A=new ka({material:g,translucent:g.isTranslucent()}),this._material=g}this._groundPolylinePrimitive=s.add(new hh({geometryInstances:t.createFillGeometryInstance(e),appearance:A,classificationType:t.classificationTypeProperty.getValue(e),asynchronous:!1}),j.getValueOrUndefined(t.zIndex,e)),l(this._line)&&(this._line.show=!1);return}let a=zge(this);if(!n.isShowing||!n.isAvailable(e)||!j.getValueOrDefault(i._show,e,!0)){a.show=!1;return}if(!l(r)||r.length<2){a.show=!1;return}let c=cn.GEODESIC;c=j.getValueOrDefault(i._arcType,e,c);let u=t._scene.globe,f=t._scene.ellipsoid;c!==cn.NONE&&l(u)&&(NS.ellipsoid=f,NS.positions=r,NS.granularity=j.getValueOrUndefined(i._granularity,e),NS.height=Wi.extractHeights(r,f),c===cn.GEODESIC?r=Wi.generateCartesianArc(NS):r=Wi.generateCartesianRhumbArc(NS)),a.show=!0,a.positions=r.slice(),a.material=ur.getValue(e,t.fillMaterialProperty,a.material),a.width=j.getValueOrDefault(i._width,e,1),a.distanceDisplayCondition=j.getValueOrUndefined(i._distanceDisplayCondition,e,a.distanceDisplayCondition)};wF.prototype.getBoundingSphere=function(e){if(this._geometryUpdater.clampToGround){let t=this._groundPolylinePrimitive;if(l(t)&&t.show&&t.ready){let n=t.getGeometryInstanceAttributes(this._geometryUpdater._entity);if(l(n)&&l(n.boundingSphere))return le.clone(n.boundingSphere,e),mt.DONE}return l(t)&&!t.ready?mt.PENDING:mt.DONE}else{let t=zge(this);if(t.show&&t.positions.length>0)return le.fromPoints(t.positions,e),mt.DONE}return mt.FAILED};wF.prototype.isDestroyed=function(){return!1};wF.prototype.destroy=function(){let t=this._geometryUpdater._scene.id+this._primitives._guid,n=l8[t];l(n)&&(n.remove(this._line),n.length===0&&(this._primitives.removeAndDestroy(n),delete l8[t])),l(this._groundPolylinePrimitive)&&this._groundPrimitives.remove(this._groundPolylinePrimitive),ue(this)};var BF=om;var hrt=new G,mrt=new Ut,Art=new Ut;function rm(e,t,n,i,o){let r;n instanceof Xt?r=Cs:r=ka,this.orderedGroundPrimitives=e,this.classificationType=t,this.appearanceType=r,this.materialProperty=n,this.updaters=new vt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new vt,this.material=void 0,this.updatersWithAttributes=new vt,this.attributes=new vt,this.invalidated=!1,this.removeMaterialSubscription=n.definitionChanged.addEventListener(rm.prototype.onMaterialChanged,this),this.subscriptions=new vt,this.showsUpdated=new vt,this.zIndex=i,this._asynchronous=o}rm.prototype.onMaterialChanged=function(){this.invalidated=!0};rm.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty;return n===t||n instanceof Xt&&t instanceof Xt?!0:l(t)&&t.equals(n)};rm.prototype.add=function(e,t,n){let i=t.id;if(this.updaters.set(i,t),this.geometry.set(i,n),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!j.isConstant(t.distanceDisplayConditionProperty))this.updatersWithAttributes.set(i,t);else{let o=this;this.subscriptions.set(i,t.entity.definitionChanged.addEventListener(function(r,s,a,c){s==="isShowing"&&o.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};rm.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t)),!0}return!1};rm.prototype.update=function(e){let t=!0,n=this.primitive,i=this.orderedGroundPrimitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0)l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),n=new hh({show:!1,asynchronous:this._asynchronous,geometryInstances:o.slice(),appearance:new this.appearanceType,classificationType:this.classificationType}),this.appearanceType===ka&&(this.material=ur.getValue(e,this.materialProperty,this.material),n.appearance.material=this.material),i.add(n,this.zIndex),t=!1;else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.appearanceType===ka&&(this.material=ur.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material);let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],u=c.entity,f=this.geometry.get(c.id),h=this.attributes.get(f.id.id);if(l(h)||(h=n.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!c.fillMaterialProperty.isConstant){let _=c.fillMaterialProperty.color,y=j.getValueOrDefault(_,e,G.WHITE,hrt);G.equals(h._lastColor,y)||(h._lastColor=G.clone(y,h._lastColor),h.color=$t.toValue(y,h.color))}let A=u.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=wn.toValue(A,h.show));let m=c.distanceDisplayConditionProperty;if(!j.isConstant(m)){let _=j.getValueOrDefault(m,e,Art,mrt);Ut.equals(_,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(_,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(_,h.distanceDisplayCondition))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};rm.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,u=a.show[0]===1;c!==u&&(a.show=wn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};rm.prototype.contains=function(e){return this.updaters.contains(e.id)};rm.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};rm.prototype.destroy=function(){let e=this.primitive,t=this.orderedGroundPrimitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),this.removeMaterialSubscription()};function LS(e,t,n){this._items=[],this._orderedGroundPrimitives=e,this._classificationType=t,this._asynchronous=n??!0}LS.prototype.add=function(e,t){let n=this._items,i=n.length,o=t.createFillGeometryInstance(e),r=j.getValueOrDefault(t.zIndex,0);for(let a=0;a<i;++a){let c=n[a];if(c.isMaterial(t)&&c.zIndex===r){c.add(e,t,o);return}}let s=new rm(this._orderedGroundPrimitives,this._classificationType,t.fillMaterialProperty,r,this._asynchronous);s.add(e,t,o),n.push(s)};LS.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0;i--){let o=t[i];if(o.remove(e)){o.updaters.length===0&&(t.splice(i,1),o.destroy());break}}};LS.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];if(r.invalidated){n.splice(t,1);let s=r.updaters.values,a=s.length;for(let c=0;c<a;c++)this.add(e,s[c]);r.destroy()}}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};LS.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return mt.FAILED};LS.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var DF=LS;var prt=[];function Vge(e,t){let n=e._batches,i=n.length;for(let o=0;o<i;o++)n[o].remove(t)}function Hge(e,t,n){if(n.isDynamic){e._dynamicBatch.add(t,n);return}if(n.clampToGround&&n.fillEnabled){let s=n.classificationTypeProperty.getValue(t);e._groundBatches[s].add(t,n);return}let i;n.fillEnabled&&(i=n.shadowsProperty.getValue(t));let o=0;l(n.depthFailMaterialProperty)&&(o=n.depthFailMaterialProperty instanceof Xt?1:2);let r;l(i)&&(r=i+o*Bn.NUMBER_OF_SHADOW_MODES),n.fillEnabled&&(n.fillMaterialProperty instanceof Xt?e._colorBatches[r].add(t,n):e._materialBatches[r].add(t,n))}function gA(e,t,n,i){i=i??e.groundPrimitives,n=n??e.primitives,this._scene=e,this._primitives=n,this._entityCollection=void 0,this._addedObjects=new vt,this._removedObjects=new vt,this._changedObjects=new vt;let o,r=Bn.NUMBER_OF_SHADOW_MODES;for(this._colorBatches=new Array(r*3),this._materialBatches=new Array(r*3),o=0;o<r;++o)this._colorBatches[o]=new Pd(n,Cs,void 0,!1,o),this._materialBatches[o]=new Rd(n,ka,void 0,!1,o),this._colorBatches[o+r]=new Pd(n,Cs,Cs,!1,o),this._materialBatches[o+r]=new Rd(n,ka,Cs,!1,o),this._colorBatches[o+r*2]=new Pd(n,Cs,ka,!1,o),this._materialBatches[o+r*2]=new Rd(n,ka,ka,!1,o);this._dynamicBatch=new K0(n,i);let s=Jn.NUMBER_OF_CLASSIFICATION_TYPES;for(this._groundBatches=new Array(s),o=0;o<s;++o)this._groundBatches[o]=new DF(i,o);this._batches=this._colorBatches.concat(this._materialBatches,this._dynamicBatch,this._groundBatches),this._subscriptions=new vt,this._updaters=new vt,this._entityCollection=t,t.collectionChanged.addEventListener(gA.prototype._onCollectionChanged,this),this._onCollectionChanged(t,t.values,prt)}gA.prototype.update=function(e){let t=this._addedObjects,n=t.values,i=this._removedObjects,o=i.values,r=this._changedObjects,s=r.values,a,c,u,f;for(a=s.length-1;a>-1;a--)c=s[a],u=c.id,f=this._updaters.get(u),f.entity===c?(Vge(this,f),Hge(this,e,f)):(o.push(c),n.push(c));for(a=o.length-1;a>-1;a--)c=o[a],u=c.id,f=this._updaters.get(u),Vge(this,f),f.destroy(),this._updaters.remove(u),this._subscriptions.get(u)(),this._subscriptions.remove(u);for(a=n.length-1;a>-1;a--)c=n[a],u=c.id,f=new BF(c,this._scene),this._updaters.set(u,f),Hge(this,e,f),this._subscriptions.set(u,f.geometryChanged.addEventListener(gA._onGeometryChanged,this));t.removeAll(),i.removeAll(),r.removeAll();let h=!0,A=this._batches,g=A.length;for(a=0;a<g;a++)h=A[a].update(e)&&h;return h};var grt=[],_rt=new le;gA.prototype.getBoundingSphere=function(e,t){let n=grt,i=_rt,o=0,r=mt.DONE,s=this._batches,a=s.length,c=this._updaters.get(e.id);for(let u=0;u<a;u++){if(r=s[u].getBoundingSphere(c,i),r===mt.PENDING)return mt.PENDING;r===mt.DONE&&(n[o]=le.clone(i,n[o]),o++)}return o===0?mt.FAILED:(n.length=o,le.fromBoundingSpheres(n,t),mt.DONE)};gA.prototype.isDestroyed=function(){return!1};gA.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(gA.prototype._onCollectionChanged,this),this._addedObjects.removeAll(),this._removedObjects.removeAll();let e,t=this._batches,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._subscriptions.values;for(n=i.length,e=0;e<n;e++)i[e]();return this._subscriptions.removeAll(),ue(this)};gA._onGeometryChanged=function(e){let t=this._removedObjects,n=this._changedObjects,i=e.entity,o=i.id;!l(t.get(o))&&!l(n.get(o))&&n.set(o,i)};gA.prototype._onCollectionChanged=function(e,t,n){let i=this._addedObjects,o=this._removedObjects,r=this._changedObjects,s,a,c;for(s=n.length-1;s>-1;s--)c=n[s],a=c.id,i.remove(a)||(o.set(a,c),r.remove(a));for(s=t.length-1;s>-1;s--)c=t[s],a=c.id,o.remove(a)?r.set(a,c):i.set(a,c)};var vF=gA;function Iu(e){fl.initializeTerrainHeights(),hh.initializeTerrainHeights();let t=e.scene,n=e.dataSourceCollection;this._eventHelper=new Dr,this._eventHelper.add(n.dataSourceAdded,this._onDataSourceAdded,this),this._eventHelper.add(n.dataSourceRemoved,this._onDataSourceRemoved,this),this._eventHelper.add(n.dataSourceMoved,this._onDataSourceMoved,this),this._eventHelper.add(t.postRender,this._postRender,this),this._dataSourceCollection=n,this._scene=t,this._visualizersCallback=e.visualizersCallback??Iu.defaultVisualizersCallback;let i=!1,o=new Ql,r=new Ql;n.length>0&&(t.primitives.add(o),t.groundPrimitives.add(r),i=!0),this._primitives=o,this._groundPrimitives=r;for(let u=0,f=n.length;u<f;u++)this._onDataSourceAdded(n,n.get(u));let s=new DO;this._onDataSourceAdded(void 0,s),this._defaultDataSource=s;let a,c;if(!i){let u=this,f=function(){t.primitives.add(o),t.groundPrimitives.add(r),a(),c(),u._removeDefaultDataSourceListener=void 0,u._removeDataSourceCollectionListener=void 0};a=s.entities.collectionChanged.addEventListener(f),c=n.dataSourceAdded.addEventListener(f)}this._removeDefaultDataSourceListener=a,this._removeDataSourceCollectionListener=c,this._ready=!1}var OS=[];Iu.registerVisualizer=function(e){OS.includes(e)||OS.push(e)};Iu.unregisterVisualizer=function(e){if(OS.includes(e)){let t=OS.indexOf(e);OS.splice(t,1)}};Iu.defaultVisualizersCallback=function(e,t,n){let i=n.entities;return[new SB(t,i),new yF(e,i,n._primitives,n._groundPrimitives),new CF(t,i),new EF(e,i),new mO(e,i),new TF(t,i),new xF(e,i),new vF(e,i,n._primitives,n._groundPrimitives),...OS.map(o=>new o(e,i))]};Object.defineProperties(Iu.prototype,{scene:{get:function(){return this._scene}},dataSources:{get:function(){return this._dataSourceCollection}},defaultDataSource:{get:function(){return this._defaultDataSource}},ready:{get:function(){return this._ready}}});Iu.prototype.isDestroyed=function(){return!1};Iu.prototype.destroy=function(){this._eventHelper.removeAll();let e=this._dataSourceCollection;for(let t=0,n=e.length;t<n;++t)this._onDataSourceRemoved(this._dataSourceCollection,e.get(t));return this._onDataSourceRemoved(void 0,this._defaultDataSource),l(this._removeDefaultDataSourceListener)?(this._removeDefaultDataSourceListener(),this._removeDataSourceCollectionListener()):(this._scene.primitives.remove(this._primitives),this._scene.groundPrimitives.remove(this._groundPrimitives)),ue(this)};Iu.prototype.update=function(e){if(!Ti.initialized)return this._ready=!1,!1;let t=!0,n,i,o,r,s=this._dataSourceCollection,a=s.length;for(n=0;n<a;n++){let c=s.get(n);for(l(c.update)&&(t=c.update(e)&&t),o=c._visualizers,r=o.length,i=0;i<r;i++)t=o[i].update(e)&&t}for(o=this._defaultDataSource._visualizers,r=o.length,i=0;i<r;i++)t=o[i].update(e)&&t;return!this._ready&&t&&this._scene.requestRender(),this._ready=this._ready||t,t};Iu.prototype._postRender=function(){let e=this._scene.frameState,t=this._dataSourceCollection,n=t.length;for(let i=0;i<n;i++){let o=t.get(i),r=o.credit;l(r)&&e.creditDisplay.addCreditToNextFrame(r);let s=o._resourceCredits;if(l(s)){let a=s.length;for(let c=0;c<a;c++)e.creditDisplay.addCreditToNextFrame(s[c])}}};var yrt=[],Crt=new le;Iu.prototype.getBoundingSphere=function(e,t,n){if(!this._ready)return mt.PENDING;let i,o,r=this._defaultDataSource;if(!r.entities.contains(e)){r=void 0;let A=this._dataSourceCollection;for(o=A.length,i=0;i<o;i++){let g=A.get(i);if(g.entities.contains(e)){r=g;break}}}if(!l(r))return mt.FAILED;let s=yrt,a=Crt,c=0,u=mt.DONE,f=r._visualizers,h=f.length;for(i=0;i<h;i++){let A=f[i];if(l(A.getBoundingSphere)){if(u=f[i].getBoundingSphere(e,a),!t&&u===mt.PENDING)return mt.PENDING;u===mt.DONE&&(s[c]=le.clone(a,s[c]),c++)}}return c===0?mt.FAILED:(s.length=c,le.fromBoundingSpheres(s,n),mt.DONE)};Iu.prototype._onDataSourceAdded=function(e,t){let n=this._scene,i=this._primitives,o=this._groundPrimitives,r=i.add(new Ql),s=o.add(new HO);t._primitives=r,t._groundPrimitives=s;let a=t.clustering;a._initialize(n),r.add(a),t._visualizers=this._visualizersCallback(n,a,t)};Iu.prototype._onDataSourceRemoved=function(e,t){let n=this._primitives,i=this._groundPrimitives,o=t._primitives,r=t._groundPrimitives,s=t.clustering;o.remove(s);let a=t._visualizers,c=a.length;for(let u=0;u<c;u++)a[u].destroy();n.remove(o),i.remove(r),t._visualizers=void 0};Iu.prototype._onDataSourceMoved=function(e,t,n){let i=this._primitives,o=this._groundPrimitives,r=e._primitives,s=e._groundPrimitives;t===n+1?(i.raise(r),o.raise(s)):t===n-1?(i.lower(r),o.lower(s)):t===0?(i.lowerToBottom(r),o.lowerToBottom(s),i.raise(r),o.raise(s)):(i.raiseToTop(r),o.raiseToTop(s))};var PF=Iu;function EK(e,t,n){this.heading=e??0,this.pitch=t??0,this.range=n??0}EK.clone=function(e,t){if(l(e))return l(t)||(t=new EK),t.heading=e.heading,t.pitch=e.pitch,t.range=e.range,t};var Md=EK;var Wge=new J,jge=new J,Yge=new J,Ert=new N,u8=new d,qge=new d,IK=new d,xK=new d,Kge=new d,Xge=new d,Irt=new Le,xrt=new d,brt=new J,FS=new K,Trt=1.25;function Srt(e,t,n,i,o,r,s,a,c,u){let f=e.scene.mode,h=o.getValue(c,e._lastCartesian);if(l(h)){let A=!1,g=!1,m,_,y;if(f===ie.SCENE3D){K.addSeconds(c,.001,FS);let v=o.getValue(FS,u8);if(l(v)||(K.addSeconds(c,-.001,FS),v=o.getValue(FS,u8),g=!0),l(v)){let P=kt.computeFixedToIcrfMatrix(c,Wge),M=kt.computeFixedToIcrfMatrix(FS,jge),L;!l(P)||!l(M)?(L=kt.computeTemeToPseudoFixedMatrix(c,Yge),P=J.transpose(L,Wge),M=kt.computeTemeToPseudoFixedMatrix(FS,jge),J.transpose(M,M)):L=J.transpose(P,Yge);let p=J.multiplyByVector(P,h,Kge),x=J.multiplyByVector(M,v,Xge);d.subtract(p,x,xK);let T=d.magnitude(xK)*1e3,w=D.GRAVITATIONALPARAMETER,R=-w/(T*T-2*w/d.magnitude(p));R<0||R>Trt*u.maximumRadius?(m=qge,d.normalize(h,m),d.negate(m,m),y=d.clone(d.UNIT_Z,IK),_=d.cross(y,m,u8),d.magnitude(_)>D.EPSILON7&&(d.normalize(m,m),d.normalize(_,_),y=d.cross(m,_,IK),d.normalize(y,y),A=!0)):d.equalsEpsilon(h,v,D.EPSILON7)||(y=qge,d.normalize(p,y),d.normalize(x,x),_=d.cross(y,x,IK),g&&(_=d.multiplyByScalar(_,-1,_)),d.equalsEpsilon(_,d.ZERO,D.EPSILON7)||(m=d.cross(_,y,u8),J.multiplyByVector(L,m,m),J.multiplyByVector(L,_,_),J.multiplyByVector(L,y,y),d.normalize(m,m),d.normalize(_,_),d.normalize(y,y),A=!0))}}l(e.boundingSphere)&&(h=e.boundingSphere.center);let C,E,I;i&&(C=d.clone(t.position,xK),E=d.clone(t.direction,Kge),I=d.clone(t.up,Xge));let b=Ert,S;l(s)&&(S=s.getValue(c,Irt));let B=r.getValue(c,xrt);if(a===lp.INERTIAL&&l(S))N.fromTranslationQuaternionRotationScale(h,S,d.ONE,b);else if(a===lp.VELOCITY&&l(B)){let v=kt.rotationMatrixFromPositionVelocity(h,B,u,brt);N.fromRotationTranslation(v,h,b)}else a===lp.ENU||!A?kt.eastNorthUpToFixedFrame(h,u,b):(b[0]=m.x,b[1]=m.y,b[2]=m.z,b[3]=0,b[4]=_.x,b[5]=_.y,b[6]=_.z,b[7]=0,b[8]=y.x,b[9]=y.y,b[10]=y.z,b[11]=0,b[12]=h.x,b[13]=h.y,b[14]=h.z,b[15]=0);t._setTransform(b),i&&(d.clone(C,t.position),d.clone(E,t.direction),d.clone(I,t.up),d.cross(E,I,t.right))}if(n){let A=f===ie.SCENE2D||d.equals(e._offset3D,d.ZERO)?void 0:e._offset3D;t.lookAtTransform(t.transform,A)}}function RF(e,t,n){this.entity=e,this.scene=t,this.ellipsoid=n??te.default,this.boundingSphere=void 0,this._lastEntity=void 0,this._mode=void 0,this._lastCartesian=new d,this._defaultOffset3D=void 0,this._velocityProperty=new Dg(e.position,!0),this._offset3D=new d}Object.defineProperties(RF,{defaultOffset3D:{get:function(){return this._defaultOffset3D},set:function(e){this._defaultOffset3D=d.clone(e,new d)}}});RF.defaultOffset3D=new d(-14e3,3500,3500);var f8=new Md,wrt=new d;RF.prototype.update=function(e,t){let n=this.scene,i=this.ellipsoid,o=n.mode;if(o===ie.MORPHING)return;let r=this.entity,s=r.trackingReferenceFrame,a=r.position;if(!l(a))return;let c=this._velocityProperty,u=r.orientation,f=r!==this._lastEntity,h=o!==this._mode,A=n.camera,g=f||h,m=!0;if(f){let _=r.viewFrom,y=l(_);if(!y&&l(t)){f8.pitch=-D.PI_OVER_FOUR,f8.range=0;let C=a.getValue(e,wrt);if(l(C)){let E=2-1/Math.max(1,d.magnitude(C)/i.maximumRadius);f8.pitch*=E}A.viewBoundingSphere(t,f8),this.boundingSphere=t,g=!1,m=!1}else(!y||!l(_.getValue(e,this._offset3D)))&&d.clone(RF._defaultOffset3D,this._offset3D)}else!h&&this._mode!==ie.SCENE2D&&d.clone(A.position,this._offset3D);this._lastEntity=r,this._mode=o,Srt(this,A,g,m,a,c,u,s,e,i)};var MF=RF;function LF(){this._cache={}}LF.prototype.fromColor=function(e,t){return d8(void 0,void 0,e,t,this._cache)};LF.prototype.fromUrl=function(e,t,n){return d8(e,void 0,t,n,this._cache)};LF.prototype.fromMakiIconId=function(e,t,n){return d8(fn(`Assets/Textures/maki/${encodeURIComponent(e)}.png`),void 0,t,n,this._cache)};LF.prototype.fromText=function(e,t,n){return d8(void 0,e,t,n,this._cache)};var Brt=new G;function Drt(e,t,n){e.save(),e.scale(n/24,n/24),e.fillStyle=t.toCssColorString(),e.strokeStyle=t.brighten(.6,Brt).toCssColorString(),e.lineWidth=.846,e.beginPath(),e.moveTo(6.72,.422),e.lineTo(17.28,.422),e.bezierCurveTo(18.553,.422,19.577,1.758,19.577,3.415),e.lineTo(19.577,10.973),e.bezierCurveTo(19.577,12.63,18.553,13.966,17.282,13.966),e.lineTo(14.386,14.008),e.lineTo(11.826,23.578),e.lineTo(9.614,14.008),e.lineTo(6.719,13.965),e.bezierCurveTo(5.446,13.983,4.422,12.629,4.422,10.972),e.lineTo(4.422,3.416),e.bezierCurveTo(4.423,1.76,5.447,.423,6.718,.423),e.closePath(),e.fill(),e.stroke(),e.restore()}function Jge(e,t,n){let i=n/2.5,o=i,r=i;t.width>t.height?r=i*(t.height/t.width):t.width<t.height&&(o=i*(t.width/t.height));let s=Math.round((n-o)/2),a=Math.round(7/24*n-r/2);e.globalCompositeOperation="destination-out",e.drawImage(t,s-1,a,o,r),e.drawImage(t,s,a-1,o,r),e.drawImage(t,s+1,a,o,r),e.drawImage(t,s,a+1,o,r),e.globalCompositeOperation="destination-over",e.fillStyle=G.BLACK.toCssColorString(),e.fillRect(s-1,a-1,o+2,r+2),e.globalCompositeOperation="destination-out",e.drawImage(t,s,a,o,r),e.globalCompositeOperation="destination-over",e.fillStyle=G.WHITE.toCssColorString(),e.fillRect(s-1,a-2,o+2,r+2)}var NF=new Array(4);function d8(e,t,n,i,o){NF[0]=e,NF[1]=t,NF[2]=n,NF[3]=i;let r=JSON.stringify(NF),s=o[r];if(l(s))return s;let a=document.createElement("canvas");a.width=i,a.height=i;let c=a.getContext("2d");if(Drt(c,n,i),l(e)){let f=we.createIfNeeded(e).fetchImage().then(function(h){return Jge(c,h,i),o[r]=a,a});return o[r]=f,f}else if(l(t)){let u=C0(t,{font:`bold ${i}px sans-serif`});Jge(c,u,i)}return o[r]=a,a}var Og=LF;var e_e=xr($ge(),1);function m8(e){return d.fromDegrees(e[0],e[1],e[2])}var bK={"urn:ogc:def:crs:OGC:1.3:CRS84":m8,"EPSG:4326":m8,"urn:ogc:def:crs:EPSG::4326":m8},t_e={},n_e={},TK=48,SK,wK=G.ROYALBLUE,BK=G.YELLOW,DK=2,vK=G.fromBytes(255,255,0,100),PK=!1,vrt={small:24,medium:48,large:64},Prt=["title","description","marker-size","marker-symbol","marker-color","stroke","stroke-opacity","stroke-width","fill","fill-opacity"];function i_e(e,t){let n="";for(let i in e)if(e.hasOwnProperty(i)){if(i===t||Prt.indexOf(i)!==-1)continue;let o=e[i];l(o)&&(typeof o=="object"?n+=`<tr><th>${i}</th><td>${i_e(o)}</td></tr>`:n+=`<tr><th>${i}</th><td>${o}</td></tr>`)}return n.length>0&&(n=`<table class="cesium-infoBox-defaultTable"><tbody>${n}</tbody></table>`),n}function Rrt(e,t,n){let i;return function(o,r){return l(i)||(i=e(t,n)),i}}function Mrt(e,t){return new _h(Rrt(i_e,e,t),!0)}function A8(e,t,n){let i=e.id;if(!l(i)||e.type!=="Feature")i=Xn();else{let s=2,a=i;for(;l(t.getById(a));)a=`${i}_${s}`,s++;i=a}let o=t.getOrCreateEntity(i),r=e.properties;if(l(r)){o.properties=r;let s,a=r.title;if(l(a))o.name=a,s="title";else{let u=Number.MAX_VALUE;for(let f in r)if(r.hasOwnProperty(f)&&r[f]){let h=f.toLowerCase();if(u>1&&h==="title"){u=1,s=f;break}else u>2&&h==="name"?(u=2,s=f):u>3&&/title/i.test(f)?(u=3,s=f):u>4&&/name/i.test(f)&&(u=4,s=f)}l(s)&&(o.name=r[s])}let c=r.description;c!==null&&(o.description=l(c)?new ci(c):n(r,s))}return o}function RK(e,t){let n=new Array(e.length);for(let i=0;i<e.length;i++)n[i]=t(e[i]);return n}var o_e={Feature:s_e,FeatureCollection:Nrt,GeometryCollection:a_e,LineString:d_e,MultiLineString:h_e,MultiPoint:u_e,MultiPolygon:p_e,Point:l_e,Polygon:A_e,Topology:g_e},r_e={GeometryCollection:a_e,LineString:d_e,MultiLineString:h_e,MultiPoint:u_e,MultiPolygon:p_e,Point:l_e,Polygon:A_e,Topology:g_e};function s_e(e,t,n,i,o){if(t.geometry===null){A8(t,e._entityCollection,o.describe);return}if(!l(t.geometry))throw new ce("feature.geometry is required.");let r=t.geometry.type,s=r_e[r];if(!l(s))throw new ce(`Unknown geometry type: ${r}`);s(e,t,t.geometry,i,o)}function Nrt(e,t,n,i,o){let r=t.features;for(let s=0,a=r.length;s<a;s++)s_e(e,r[s],void 0,i,o)}function a_e(e,t,n,i,o){let r=n.geometries;for(let s=0,a=r.length;s<a;s++){let c=r[s],u=c.type,f=r_e[u];if(!l(f))throw new ce(`Unknown geometry type: ${u}`);f(e,t,c,i,o)}}function c_e(e,t,n,i,o){let r=o.markerSymbol,s=o.markerColor,a=o.markerSize,c=t.properties;if(l(c)){let g=c["marker-color"];l(g)&&(s=G.fromCssColorString(g)),a=vrt[c["marker-size"]]??a;let m=c["marker-symbol"];l(m)&&(r=m)}let u;l(r)?r.length===1?u=e._pinBuilder.fromText(r.toUpperCase(),s,a):u=e._pinBuilder.fromMakiIconId(r,s,a):u=e._pinBuilder.fromColor(s,a);let f=new Tc;f.verticalOrigin=new ci(zn.BOTTOM),i.length===2&&o.clampToGround&&(f.heightReference=Ze.CLAMP_TO_GROUND);let h=A8(t,e._entityCollection,o.describe);h.billboard=f,h.position=new hl(n(i));let A=Promise.resolve(u).then(function(g){f.image=new ci(g)}).catch(function(){f.image=new ci(e._pinBuilder.fromColor(s,a))});e._promises.push(A)}function l_e(e,t,n,i,o){c_e(e,t,i,n.coordinates,o)}function u_e(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)c_e(e,t,i,r[s],o)}function f_e(e,t,n,i,o){let r=o.strokeMaterialProperty,s=o.strokeWidthProperty,a=t.properties;if(l(a)){let f=a["stroke-width"];l(f)&&(s=new ci(f));let h,A=a.stroke;l(A)&&(h=G.fromCssColorString(A));let g=a["stroke-opacity"];l(g)&&g!==1&&(l(h)||(h=r.color.getValue().clone()),h.alpha=g),l(h)&&(r=new Xt(h))}let c=A8(t,e._entityCollection,o.describe),u=new Mc;c.polyline=u,u.clampToGround=o.clampToGround,u.material=r,u.width=s,u.positions=new ci(RK(i,n)),u.arcType=cn.RHUMB}function d_e(e,t,n,i,o){f_e(e,t,i,n.coordinates,o)}function h_e(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)f_e(e,t,i,r[s],o)}function m_e(e,t,n,i,o){if(i.length===0||i[0].length===0)return;let r=o.strokeMaterialProperty.color,s=o.fillMaterialProperty,a=o.strokeWidthProperty,c=t.properties;if(l(c)){let g=c["stroke-width"];l(g)&&(a=new ci(g));let m,_=c.stroke;l(_)&&(m=G.fromCssColorString(_));let y=c["stroke-opacity"];l(y)&&y!==1&&(l(m)||(m=r.getValue().clone()),m.alpha=y),l(m)&&(r=new ci(m));let C,E=c.fill,I=s.color.getValue();l(E)&&(C=G.fromCssColorString(E),C.alpha=I.alpha),y=c["fill-opacity"],l(y)&&y!==I.alpha&&(l(C)||(C=I.clone()),C.alpha=y),l(C)&&(s=new Xt(C))}let u=new ph;u.outline=new ci(!0),u.outlineColor=r,u.outlineWidth=a,u.material=s,u.arcType=cn.RHUMB;let f=[];for(let g=1,m=i.length;g<m;g++)f.push(new fc(RK(i[g],n)));let h=i[0];u.hierarchy=new ci(new fc(RK(h,n),f)),h[0].length>2?u.perPositionHeight=new ci(!0):o.clampToGround||(u.height=0);let A=A8(t,e._entityCollection,o.describe);A.polygon=u}function A_e(e,t,n,i,o){m_e(e,t,i,n.coordinates,o)}function p_e(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)m_e(e,t,i,r[s],o)}function g_e(e,t,n,i,o){for(let r in n.objects)if(n.objects.hasOwnProperty(r)){let s=e_e.feature(n,n.objects[r]),a=o_e[s.type];a(e,s,s,i,o)}}function Wy(e){this._name=e,this._changed=new _e,this._error=new _e,this._isLoading=!1,this._loading=new _e,this._entityCollection=new Ea(this),this._promises=[],this._pinBuilder=new Og,this._entityCluster=new lf,this._credit=void 0,this._resourceCredits=[]}Wy.load=function(e,t){return new Wy().load(e,t)};Object.defineProperties(Wy,{markerSize:{get:function(){return TK},set:function(e){TK=e}},markerSymbol:{get:function(){return SK},set:function(e){SK=e}},markerColor:{get:function(){return wK},set:function(e){wK=e}},stroke:{get:function(){return BK},set:function(e){BK=e}},strokeWidth:{get:function(){return DK},set:function(e){DK=e}},fill:{get:function(){return vK},set:function(e){vK=e}},clampToGround:{get:function(){return PK},set:function(e){PK=e}},crsNames:{get:function(){return bK}},crsLinkHrefs:{get:function(){return t_e}},crsLinkTypes:{get:function(){return n_e}}});Object.defineProperties(Wy.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{value:void 0,writable:!1},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}}});Wy.prototype.load=function(e,t){return __e(this,e,t,!0)};Wy.prototype.process=function(e,t){return __e(this,e,t,!1)};function __e(e,t,n,i){us.setLoading(e,!0),n=n??V.EMPTY_OBJECT;let o=n.credit;typeof o=="string"&&(o=new Bt(o)),e._credit=o;let r=t,s=n.sourceUri;if(typeof t=="string"||t instanceof we){t=we.createIfNeeded(t),r=t.fetchJson(),s=s??t.getUrlComponent();let a=e._resourceCredits,c=t.credits;if(l(c)){let u=c.length;for(let f=0;f<u;f++)a.push(c[f])}}return n={describe:n.describe??Mrt,markerSize:n.markerSize??TK,markerSymbol:n.markerSymbol??SK,markerColor:n.markerColor??wK,strokeWidthProperty:new ci(n.strokeWidth??DK),strokeMaterialProperty:new Xt(n.stroke??BK),fillMaterialProperty:new Xt(n.fill??vK),clampToGround:n.clampToGround??PK},Promise.resolve(r).then(function(a){return Lrt(e,a,n,s,i)}).catch(function(a){throw us.setLoading(e,!1),e._error.raiseEvent(e,a),a})}Wy.prototype.update=function(e){return!0};function Lrt(e,t,n,i,o){let r;l(i)&&(r=xg(i)),l(r)&&e._name!==r&&(e._name=r,e._changed.raiseEvent(e));let s=o_e[t.type];if(!l(s))throw new ce(`Unsupported GeoJSON object type: ${t.type}`);let a=t.crs,c=a!==null?m8:null;if(l(a)){if(!l(a.properties))throw new ce("crs.properties is undefined.");let u=a.properties;if(a.type==="name"){if(c=bK[u.name],!l(c))throw new ce(`Unknown crs name: ${u.name}`)}else if(a.type==="link"){let f=t_e[u.href];if(l(f)||(f=n_e[u.type]),!l(f))throw new ce(`Unable to resolve crs link: ${JSON.stringify(u)}`);c=f(u)}else if(a.type==="EPSG"){if(c=bK[`EPSG:${u.code}`],!l(c))throw new ce(`Unknown crs EPSG code: ${u.code}`)}else throw new ce(`Unknown crs type: ${a.type}`)}return Promise.resolve(c).then(function(u){return o&&e._entityCollection.removeAll(),u!==null&&s(e,t,t,u,n),Promise.all(e._promises).then(function(){return e._promises.length=0,us.setLoading(e,!1),e})})}var jy=Wy;var Eye=xr(r7(),1);var Iye;typeof DOMParser<"u"&&(Iye=new DOMParser);var qct=new Eye.default({stripPrefix:!1,email:!1,replaceFn:function(e,t){return t.urlMatchType==="scheme"||t.urlMatchType==="www"}}),L8=32,hye=2414016,mye=1,Aye=16093e3,pye=.1,Kct=[null,void 0,"http://www.topografix.com/GPX/1/1"],zo={gpx:Kct};function Xct(e){return new Promise((t,n)=>{let i=new FileReader;i.addEventListener("load",function(){t(i.result)}),i.addEventListener("error",function(){n(i.error)}),i.readAsText(e)})}function s7(e,t){let n=kF(e,"id");return n=l(n)?n:Xn(),t.getOrCreateEntity(n)}function a7(e){let t=gye(e,"lon"),n=gye(e,"lat"),i=FF(e,"ele",zo.gpx);return d.fromDegrees(t,n,i)}function gye(e,t){if(!l(e))return;let n=e.getAttribute(t);if(n!==null){let i=parseFloat(n);return isNaN(i)?void 0:i}}function kF(e,t){if(!l(e))return;let n=e.getAttribute(t);return n!==null?n:void 0}function Ky(e,t,n){if(!l(e))return;let i=e.childNodes,o=i.length;for(let r=0;r<o;r++){let s=i[r];if(s.localName===t&&n.indexOf(s.namespaceURI)!==-1)return s}}function c7(e,t,n){if(!l(e))return;let i=[],o=e.getElementsByTagName(t),r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function FF(e,t,n){let i=Ky(e,t,n);if(l(i)){let o=parseFloat(i.textContent);return isNaN(o)?void 0:o}}function xu(e,t,n){let i=Ky(e,t,n);if(l(i))return i.textContent.trim()}function xye(e){let t=new Tc;return t.width=L8,t.height=L8,t.scaleByDistance=new jt(hye,mye,Aye,pye),t.pixelOffsetScaleByDistance=new jt(hye,mye,Aye,pye),t.verticalOrigin=new ci(zn.BOTTOM),t.image=e,t}function Jct(){let e=new Ah;return e.translucencyByDistance=new jt(3e6,1,5e6,0),e.pixelOffset=new U(17,0),e.horizontalOrigin=Ri.LEFT,e.font="16px sans-serif",e.style=nr.FILL_AND_OUTLINE,e}function bye(e){let t=new Mc;return t.width=4,t.material=new My,t.material.color=l(e)?e:G.RED,t.material.outlineWidth=2,t.material.outlineColor=G.BLACK,t}var _ye={time:{text:"Time",tag:"time"},comment:{text:"Comment",tag:"cmt"},description:{text:"Description",tag:"desc"},source:{text:"Source",tag:"src"},number:{text:"GPS track/route number",tag:"number"},type:{text:"Type",tag:"type"}},QF;typeof document<"u"&&(QF=document.createElement("div"));function l7(e,t){let n,i="",o=Object.keys(_ye),r=o.length;for(n=0;n<r;n++){let f=o[n],h=_ye[f];h.value=xu(e,h.tag,zo.gpx)??"",l(h.value)&&h.value!==""&&(i=`${i}<p>${h.text}: ${h.value}</p>`)}if(!l(i)||i==="")return;i=qct.link(i),QF.innerHTML=i;let s=QF.querySelectorAll("a");for(n=0;n<s.length;n++)s[n].setAttribute("target","_blank");let a=G.WHITE,c=G.BLACK,u='<div class="cesium-infoBox-description-lighter" style="';return u+="overflow:auto;",u+="word-wrap:break-word;",u+=`background-color:${a.toCssColorString()};`,u+=`color:${c.toCssColorString()};`,u+='">',u+=`${QF.innerHTML}</div>`,QF.innerHTML="",u}function Tye(e,t,n,i){let o=a7(t),r=s7(t,n);r.position=o;let s=l(i.waypointImage)?i.waypointImage:e._pinBuilder.fromMakiIconId("marker",G.RED,L8);r.billboard=xye(s);let a=xu(t,"name",zo.gpx);r.name=a,r.label=Jct(),r.label.text=a,r.description=l7(t,r),i.clampToGround&&(r.billboard.heightReference=Ze.CLAMP_TO_GROUND,r.label.heightReference=Ze.CLAMP_TO_GROUND)}function Zct(e,t,n,i){let o=s7(t,n);o.description=l7(t,o);let r=c7(t,"rtept",zo.gpx),s=new Array(r.length);for(let a=0;a<r.length;a++)Tye(e,r[a],n,i),s[a]=a7(r[a]);o.polyline=bye(i.routeColor),i.clampToGround&&(o.polyline.clampToGround=!0),o.polyline.positions=s}function $ct(e,t,n,i){let o=s7(t,n);o.description=l7(t,o);let r=c7(t,"trkseg",zo.gpx),s=[],a=[],c,u=!0,f=new qa;for(let h=0;h<r.length;h++)c=elt(r[h]),s=s.concat(c.positions),c.times.length>0?(a=a.concat(c.times),f.addSamples(a,s),u=u&&!0):u=!1;if(u){let h=l(i.waypointImage)?i.waypointImage:e._pinBuilder.fromMakiIconId("marker",G.RED,L8);o.billboard=xye(h),o.position=f,i.clampToGround&&(o.billboard.heightReference=Ze.CLAMP_TO_GROUND),o.availability=new ls,o.availability.addInterval(new Pn({start:a[0],stop:a[a.length-1]}))}o.polyline=bye(i.trackColor),o.polyline.positions=s,i.clampToGround&&(o.polyline.clampToGround=!0)}function elt(e){let t={positions:[],times:[]},n=c7(e,"trkpt",zo.gpx),i;for(let o=0;o<n.length;o++){let r=a7(n[o]);t.positions.push(r),i=xu(n[o],"time",zo.gpx),l(i)&&t.times.push(K.fromIso8601(i))}return t}function tlt(e){let t=Ky(e,"metadata",zo.gpx);if(l(t)){let n={name:xu(t,"name",zo.gpx),desc:xu(t,"desc",zo.gpx),author:nlt(t),copyright:olt(t),link:Sye(t),time:xu(t,"time",zo.gpx),keywords:xu(t,"keywords",zo.gpx),bounds:rlt(t)};if(l(n.name)||l(n.desc)||l(n.author)||l(n.copyright)||l(n.link)||l(n.time)||l(n.keywords)||l(n.bounds))return n}}function nlt(e){let t=Ky(e,"author",zo.gpx);if(l(t)){let n={name:xu(t,"name",zo.gpx),email:ilt(t),link:Sye(t)};if(l(n.name)||l(n.email)||l(n.link))return n}}function ilt(e){let t=Ky(e,"email",zo.gpx);if(l(t)){let n=xu(t,"id",zo.gpx),i=xu(t,"domain",zo.gpx);return`${n}@${i}`}}function Sye(e){let t=Ky(e,"link",zo.gpx);if(l(t)){let n={href:kF(t,"href"),text:xu(t,"text",zo.gpx),mimeType:xu(t,"type",zo.gpx)};if(l(n.href)||l(n.text)||l(n.mimeType))return n}}function olt(e){let t=Ky(e,"copyright",zo.gpx);if(l(t)){let n={author:kF(t,"author"),year:xu(t,"year",zo.gpx),license:xu(t,"license",zo.gpx)};if(l(n.author)||l(n.year)||l(n.license))return n}}function rlt(e){let t=Ky(e,"bounds",zo.gpx);if(l(t)){let n={minLat:FF(t,"minlat",zo.gpx),maxLat:FF(t,"maxlat",zo.gpx),minLon:FF(t,"minlon",zo.gpx),maxLon:FF(t,"maxlon",zo.gpx)};if(l(n.minLat)||l(n.maxLat)||l(n.minLon)||l(n.maxLon))return n}}var yye={wpt:Tye,rte:Zct,trk:$ct};function slt(e,t,n,i){let o=Object.keys(yye),r=o.length;for(let s=0;s<r;s++){let a=o[s],c=yye[a],u=t.childNodes,f=u.length;for(let h=0;h<f;h++){let A=u[h];A.localName===a&&zo.gpx.indexOf(A.namespaceURI)!==-1&&c(e,A,n,i)}}}function Cye(e,t,n){let i=e._entityCollection;i.removeAll();let o=t.documentElement,r=kF(o,"version"),s=kF(o,"creator"),a,c=tlt(o);l(c)&&(a=c.name),o.localName==="gpx"?slt(e,o,i,n):console.log(`GPX - Unsupported node: ${o.localName}`);let u,f=i.computeAvailability(),h=f.start,A=f.stop,g=K.equals(h,je.MINIMUM_VALUE),m=K.equals(A,je.MAXIMUM_VALUE);if(!g||!m){let y;g&&(y=new Date,y.setHours(0,0,0,0),h=K.fromDate(y)),m&&(y=new Date,y.setHours(24,0,0,0),A=K.fromDate(y)),u=new Jh,u.startTime=h,u.stopTime=A,u.currentTime=K.clone(h),u.clockRange=fs.LOOP_STOP,u.clockStep=wo.SYSTEM_CLOCK_MULTIPLIER,u.multiplier=Math.round(Math.min(Math.max(K.secondsDifference(A,h)/60,1),31556900))}let _=!1;return e._name!==a&&(e._name=a,_=!0),e._creator!==s&&(e._creator=s,_=!0),alt(e._metadata,c)&&(e._metadata=c,_=!0),e._version!==r&&(e._version=r,_=!0),u!==e._clock&&(_=!0,e._clock=u),_&&e._changed.raiseEvent(e),us.setLoading(e,!1),e}function alt(e,t){return!l(e)&&!l(t)?!1:l(e)&&l(t)?e.name!==t.name||e.dec!==t.desc||e.src!==t.src||e.author!==t.author||e.copyright!==t.copyright||e.link!==t.link||e.time!==t.time||e.bounds!==t.bounds:!0}function clt(e,t,n,i){i=i??V.EMPTY_OBJECT;let o=n;if(typeof n=="string"||n instanceof we){n=we.createIfNeeded(n),o=n.fetchBlob();let r=e._resourceCredits,s=n.credits;if(l(s)){let a=s.length;for(let c=0;c<a;c++)r.push(s[c])}}return Promise.resolve(o).then(function(r){return r instanceof Blob?Xct(r).then(function(s){let a,c;try{a=Iye.parseFromString(s,"application/xml")}catch(u){c=u.toString()}if(l(c)||a.body||a.documentElement.tagName==="parsererror"){let u=l(c)?c:a.documentElement.firstChild.nodeValue;throw u||(u=a.body.innerText),new ce(u)}return Cye(e,a,i)}):Cye(e,r,i)}).catch(function(r){return e._error.raiseEvent(e,r),console.log(r),Promise.reject(r)})}function HS(){this._changed=new _e,this._error=new _e,this._loading=new _e,this._clock=void 0,this._entityCollection=new Ea(this),this._entityCluster=new lf,this._name=void 0,this._version=void 0,this._creator=void 0,this._metadata=void 0,this._isLoading=!1,this._pinBuilder=new Og}HS.load=function(e,t){return new HS().load(e,t)};Object.defineProperties(HS.prototype,{name:{get:function(){return this._name}},version:{get:function(){return this._version}},creator:{get:function(){return this._creator}},metadata:{get:function(){return this._metadata}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}}});HS.prototype.update=function(e){return!0};HS.prototype.load=function(e,t){if(!l(e))throw new me("data is required.");t=t??V.EMPTY_OBJECT,us.setLoading(this,!0);let n=this._name,i=this;return clt(this,this._entityCollection,e,t).then(function(){let o,r=i._entityCollection.computeAvailability(),s=r.start,a=r.stop,c=K.equals(s,je.MINIMUM_VALUE),u=K.equals(a,je.MAXIMUM_VALUE);if(!c||!u){let h;c&&(h=new Date,h.setHours(0,0,0,0),s=K.fromDate(h)),u&&(h=new Date,h.setHours(24,0,0,0),a=K.fromDate(h)),o=new Jh,o.startTime=s,o.stopTime=a,o.currentTime=K.clone(s),o.clockRange=fs.LOOP_STOP,o.clockStep=wo.SYSTEM_CLOCK_MULTIPLIER,o.multiplier=Math.round(Math.min(Math.max(K.secondsDifference(a,s)/60,1),31556900))}let f=!1;return o!==i._clock&&(i._clock=o,f=!0),n!==i._name&&(f=!0),f&&i._changed.raiseEvent(i),us.setLoading(i,!1),i}).catch(function(o){return us.setLoading(i,!1),i._error.raiseEvent(i,o),console.log(o),Promise.reject(o)})};var UF=HS;function llt(e,t){this.position=e,this.headingPitchRoll=t}var GF=llt;var BEe=xr(r7(),1),p2=xr(Ou(),1);function z8(e){return V8(e.map(([t,n])=>new Array(t).fill(n,0,t)))}function V8(e){return e.reduce((t,n)=>t.concat(Array.isArray(n)?V8(n):n),[])}var wye=[0,1,2,3].concat(...z8([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function Pr(){let e=this;function t(o){let r=e.dyn_tree,s=e.stat_desc.static_tree,a=e.stat_desc.extra_bits,c=e.stat_desc.extra_base,u=e.stat_desc.max_length,f,h,A,g,m,_,y=0;for(g=0;g<=15;g++)o.bl_count[g]=0;for(r[o.heap[o.heap_max]*2+1]=0,f=o.heap_max+1;f<573;f++)h=o.heap[f],g=r[r[h*2+1]*2+1]+1,g>u&&(g=u,y++),r[h*2+1]=g,!(h>e.max_code)&&(o.bl_count[g]++,m=0,h>=c&&(m=a[h-c]),_=r[h*2],o.opt_len+=_*(g+m),s&&(o.static_len+=_*(s[h*2+1]+m)));if(y!==0){do{for(g=u-1;o.bl_count[g]===0;)g--;o.bl_count[g]--,o.bl_count[g+1]+=2,o.bl_count[u]--,y-=2}while(y>0);for(g=u;g!==0;g--)for(h=o.bl_count[g];h!==0;)A=o.heap[--f],!(A>e.max_code)&&(r[A*2+1]!=g&&(o.opt_len+=(g-r[A*2+1])*r[A*2],r[A*2+1]=g),h--)}}function n(o,r){let s=0;do s|=o&1,o>>>=1,s<<=1;while(--r>0);return s>>>1}function i(o,r,s){let a=[],c=0,u,f,h;for(u=1;u<=15;u++)a[u]=c=c+s[u-1]<<1;for(f=0;f<=r;f++)h=o[f*2+1],h!==0&&(o[f*2]=n(a[h]++,h))}e.build_tree=function(o){let r=e.dyn_tree,s=e.stat_desc.static_tree,a=e.stat_desc.elems,c,u,f=-1,h;for(o.heap_len=0,o.heap_max=573,c=0;c<a;c++)r[c*2]!==0?(o.heap[++o.heap_len]=f=c,o.depth[c]=0):r[c*2+1]=0;for(;o.heap_len<2;)h=o.heap[++o.heap_len]=f<2?++f:0,r[h*2]=1,o.depth[h]=0,o.opt_len--,s&&(o.static_len-=s[h*2+1]);for(e.max_code=f,c=Math.floor(o.heap_len/2);c>=1;c--)o.pqdownheap(r,c);h=a;do c=o.heap[1],o.heap[1]=o.heap[o.heap_len--],o.pqdownheap(r,1),u=o.heap[1],o.heap[--o.heap_max]=c,o.heap[--o.heap_max]=u,r[h*2]=r[c*2]+r[u*2],o.depth[h]=Math.max(o.depth[c],o.depth[u])+1,r[c*2+1]=r[u*2+1]=h,o.heap[1]=h++,o.pqdownheap(r,1);while(o.heap_len>=2);o.heap[--o.heap_max]=o.heap[1],t(o),i(r,e.max_code,o.bl_count)}}Pr._length_code=[0,1,2,3,4,5,6,7].concat(...z8([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]]));Pr.base_length=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0];Pr.base_dist=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576];Pr.d_code=function(e){return e<256?wye[e]:wye[256+(e>>>7)]};Pr.extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];Pr.extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];Pr.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];Pr.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function gc(e,t,n,i,o){let r=this;r.static_tree=e,r.extra_bits=t,r.extra_base=n,r.elems=i,r.max_length=o}var ult=[12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227],flt=z8([[144,8],[112,9],[24,7],[8,8]]);gc.static_ltree=V8(ult.map((e,t)=>[e,flt[t]]));var dlt=[0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23],hlt=z8([[30,5]]);gc.static_dtree=V8(dlt.map((e,t)=>[e,hlt[t]]));gc.static_l_desc=new gc(gc.static_ltree,Pr.extra_lbits,257,286,15);gc.static_d_desc=new gc(gc.static_dtree,Pr.extra_dbits,0,30,15);gc.static_bl_desc=new gc(null,Pr.extra_blbits,0,19,7);var mlt=9,Alt=8;function IA(e,t,n,i,o){let r=this;r.good_length=e,r.max_lazy=t,r.nice_length=n,r.max_chain=i,r.func=o}var Dye=0,U8=1,AI=2,lm=[new IA(0,0,0,0,Dye),new IA(4,4,8,4,U8),new IA(4,5,16,8,U8),new IA(4,6,32,32,U8),new IA(4,4,16,16,AI),new IA(8,16,32,32,AI),new IA(8,16,128,128,AI),new IA(8,32,128,256,AI),new IA(32,128,258,1024,AI),new IA(32,258,258,4096,AI)],O8=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],Ld=0,F8=1,zF=2,Q8=3,plt=32,u7=42,k8=113,VF=666,f7=8,glt=0,d7=1,_lt=2,jr=3,G8=258,yf=G8+jr+1;function Bye(e,t,n,i){let o=e[t*2],r=e[n*2];return o<r||o==r&&i[t]<=i[n]}function ylt(){let e=this,t,n,i,o,r,s,a,c,u,f,h,A,g,m,_,y,C,E,I,b,S,B,v,P,M,L,p,x,T,w,R,O,k,Q=new Pr,z=new Pr,F=new Pr;e.depth=[];let H,W,Z,Y,$,X;e.bl_count=[],e.heap=[],R=[],O=[],k=[];function he(){u=2*r,h[g-1]=0;for(let Fe=0;Fe<g-1;Fe++)h[Fe]=0;L=lm[p].max_lazy,T=lm[p].good_length,w=lm[p].nice_length,M=lm[p].max_chain,S=0,C=0,v=0,E=P=jr-1,b=0,A=0}function ge(){let Fe;for(Fe=0;Fe<286;Fe++)R[Fe*2]=0;for(Fe=0;Fe<30;Fe++)O[Fe*2]=0;for(Fe=0;Fe<19;Fe++)k[Fe*2]=0;R[256*2]=1,e.opt_len=e.static_len=0,W=Z=0}function fe(){Q.dyn_tree=R,Q.stat_desc=gc.static_l_desc,z.dyn_tree=O,z.stat_desc=gc.static_d_desc,F.dyn_tree=k,F.stat_desc=gc.static_bl_desc,$=0,X=0,Y=8,ge()}e.pqdownheap=function(Fe,lt){let Xe=e.heap,et=Xe[lt],gt=lt<<1;for(;gt<=e.heap_len&&(gt<e.heap_len&&Bye(Fe,Xe[gt+1],Xe[gt],e.depth)&>++,!Bye(Fe,et,Xe[gt],e.depth));)Xe[lt]=Xe[gt],lt=gt,gt<<=1;Xe[lt]=et};function ye(Fe,lt){let Xe=-1,et,gt=Fe[1],Jt=0,bn=7,ho=4;gt===0&&(bn=138,ho=3),Fe[(lt+1)*2+1]=65535;for(let lo=0;lo<=lt;lo++)et=gt,gt=Fe[(lo+1)*2+1],!(++Jt<bn&&et==gt)&&(Jt<ho?k[et*2]+=Jt:et!==0?(et!=Xe&&k[et*2]++,k[32]++):Jt<=10?k[34]++:k[36]++,Jt=0,Xe=et,gt===0?(bn=138,ho=3):et==gt?(bn=6,ho=3):(bn=7,ho=4))}function xe(){let Fe;for(ye(R,Q.max_code),ye(O,z.max_code),F.build_tree(e),Fe=18;Fe>=3&&k[Pr.bl_order[Fe]*2+1]===0;Fe--);return e.opt_len+=3*(Fe+1)+5+5+4,Fe}function ve(Fe){e.pending_buf[e.pending++]=Fe}function Te(Fe){ve(Fe&255),ve(Fe>>>8&255)}function ke(Fe){ve(Fe>>8&255),ve(Fe&255&255)}function Ge(Fe,lt){let Xe,et=lt;X>16-et?(Xe=Fe,$|=Xe<<X&65535,Te($),$=Xe>>>16-X,X+=et-16):($|=Fe<<X&65535,X+=et)}function Ke(Fe,lt){let Xe=Fe*2;Ge(lt[Xe]&65535,lt[Xe+1]&65535)}function tt(Fe,lt){let Xe,et=-1,gt,Jt=Fe[1],bn=0,ho=7,lo=4;for(Jt===0&&(ho=138,lo=3),Xe=0;Xe<=lt;Xe++)if(gt=Jt,Jt=Fe[(Xe+1)*2+1],!(++bn<ho&>==Jt)){if(bn<lo)do Ke(gt,k);while(--bn!==0);else gt!==0?(gt!=et&&(Ke(gt,k),bn--),Ke(16,k),Ge(bn-3,2)):bn<=10?(Ke(17,k),Ge(bn-3,3)):(Ke(18,k),Ge(bn-11,7));bn=0,et=gt,Jt===0?(ho=138,lo=3):gt==Jt?(ho=6,lo=3):(ho=7,lo=4)}}function en(Fe,lt,Xe){let et;for(Ge(Fe-257,5),Ge(lt-1,5),Ge(Xe-4,4),et=0;et<Xe;et++)Ge(k[Pr.bl_order[et]*2+1],3);tt(R,Fe-1),tt(O,lt-1)}function it(){X==16?(Te($),$=0,X=0):X>=8&&(ve($&255),$>>>=8,X-=8)}function nn(){Ge(d7<<1,3),Ke(256,gc.static_ltree),it(),1+Y+10-X<9&&(Ge(d7<<1,3),Ke(256,gc.static_ltree),it()),Y=7}function qt(Fe,lt){let Xe,et,gt;if(e.dist_buf[W]=Fe,e.lc_buf[W]=lt&255,W++,Fe===0?R[lt*2]++:(Z++,Fe--,R[(Pr._length_code[lt]+256+1)*2]++,O[Pr.d_code(Fe)*2]++),(W&8191)===0&&p>2){for(Xe=W*8,et=S-C,gt=0;gt<30;gt++)Xe+=O[gt*2]*(5+Pr.extra_dbits[gt]);if(Xe>>>=3,Z<Math.floor(W/2)&&Xe<Math.floor(et/2))return!0}return W==H-1}function Rt(Fe,lt){let Xe,et,gt=0,Jt,bn;if(W!==0)do Xe=e.dist_buf[gt],et=e.lc_buf[gt],gt++,Xe===0?Ke(et,Fe):(Jt=Pr._length_code[et],Ke(Jt+256+1,Fe),bn=Pr.extra_lbits[Jt],bn!==0&&(et-=Pr.base_length[Jt],Ge(et,bn)),Xe--,Jt=Pr.d_code(Xe),Ke(Jt,lt),bn=Pr.extra_dbits[Jt],bn!==0&&(Xe-=Pr.base_dist[Jt],Ge(Xe,bn)));while(gt<W);Ke(256,Fe),Y=Fe[256*2+1]}function Si(){X>8?Te($):X>0&&ve($&255),$=0,X=0}function gi(Fe,lt,Xe){Si(),Y=8,Xe&&(Te(lt),Te(~lt)),e.pending_buf.set(c.subarray(Fe,Fe+lt),e.pending),e.pending+=lt}function Ft(Fe,lt,Xe){Ge((glt<<1)+(Xe?1:0),3),gi(Fe,lt,!0)}function St(Fe,lt,Xe){let et,gt,Jt=0;p>0?(Q.build_tree(e),z.build_tree(e),Jt=xe(),et=e.opt_len+3+7>>>3,gt=e.static_len+3+7>>>3,gt<=et&&(et=gt)):et=gt=lt+5,lt+4<=et&&Fe!=-1?Ft(Fe,lt,Xe):gt==et?(Ge((d7<<1)+(Xe?1:0),3),Rt(gc.static_ltree,gc.static_dtree)):(Ge((_lt<<1)+(Xe?1:0),3),en(Q.max_code+1,z.max_code+1,Jt+1),Rt(R,O)),ge(),Xe&&Si()}function oi(Fe){St(C>=0?C:-1,S-C,Fe),C=S,t.flush_pending()}function Et(){let Fe,lt,Xe,et;do{if(et=u-v-S,et===0&&S===0&&v===0)et=r;else if(et==-1)et--;else if(S>=r+r-yf){c.set(c.subarray(r,r+r),0),B-=r,S-=r,C-=r,Fe=g,Xe=Fe;do lt=h[--Xe]&65535,h[Xe]=lt>=r?lt-r:0;while(--Fe!==0);Fe=r,Xe=Fe;do lt=f[--Xe]&65535,f[Xe]=lt>=r?lt-r:0;while(--Fe!==0);et+=r}if(t.avail_in===0)return;Fe=t.read_buf(c,S+v,et),v+=Fe,v>=jr&&(A=c[S]&255,A=(A<<y^c[S+1]&255)&_)}while(v<yf&&t.avail_in!==0)}function Lo(Fe){let lt=65535,Xe;for(lt>i-5&&(lt=i-5);;){if(v<=1){if(Et(),v===0&&Fe==0)return Ld;if(v===0)break}if(S+=v,v=0,Xe=C+lt,(S===0||S>=Xe)&&(v=S-Xe,S=Xe,oi(!1),t.avail_out===0)||S-C>=r-yf&&(oi(!1),t.avail_out===0))return Ld}return oi(Fe==4),t.avail_out===0?Fe==4?zF:Ld:Fe==4?Q8:F8}function Ho(Fe){let lt=M,Xe=S,et,gt,Jt=P,bn=S>r-yf?S-(r-yf):0,ho=w,lo=a,sa=S+G8,aa=c[Xe+Jt-1],Wn=c[Xe+Jt];P>=T&&(lt>>=2),ho>v&&(ho=v);do if(et=Fe,!(c[et+Jt]!=Wn||c[et+Jt-1]!=aa||c[et]!=c[Xe]||c[++et]!=c[Xe+1])){Xe+=2,et++;do;while(c[++Xe]==c[++et]&&c[++Xe]==c[++et]&&c[++Xe]==c[++et]&&c[++Xe]==c[++et]&&c[++Xe]==c[++et]&&c[++Xe]==c[++et]&&c[++Xe]==c[++et]&&c[++Xe]==c[++et]&&Xe<sa);if(gt=G8-(sa-Xe),Xe=sa-G8,gt>Jt){if(B=Fe,Jt=gt,gt>=ho)break;aa=c[Xe+Jt-1],Wn=c[Xe+Jt]}}while((Fe=f[Fe&lo]&65535)>bn&&--lt!==0);return Jt<=v?Jt:v}function Pa(Fe){let lt=0,Xe;for(;;){if(v<yf){if(Et(),v<yf&&Fe==0)return Ld;if(v===0)break}if(v>=jr&&(A=(A<<y^c[S+(jr-1)]&255)&_,lt=h[A]&65535,f[S&a]=h[A],h[A]=S),lt!==0&&(S-lt&65535)<=r-yf&&x!=2&&(E=Ho(lt)),E>=jr)if(Xe=qt(S-B,E-jr),v-=E,E<=L&&v>=jr){E--;do S++,A=(A<<y^c[S+(jr-1)]&255)&_,lt=h[A]&65535,f[S&a]=h[A],h[A]=S;while(--E!==0);S++}else S+=E,E=0,A=c[S]&255,A=(A<<y^c[S+1]&255)&_;else Xe=qt(0,c[S]&255),v--,S++;if(Xe&&(oi(!1),t.avail_out===0))return Ld}return oi(Fe==4),t.avail_out===0?Fe==4?zF:Ld:Fe==4?Q8:F8}function Er(Fe){let lt=0,Xe,et;for(;;){if(v<yf){if(Et(),v<yf&&Fe==0)return Ld;if(v===0)break}if(v>=jr&&(A=(A<<y^c[S+(jr-1)]&255)&_,lt=h[A]&65535,f[S&a]=h[A],h[A]=S),P=E,I=B,E=jr-1,lt!==0&&P<L&&(S-lt&65535)<=r-yf&&(x!=2&&(E=Ho(lt)),E<=5&&(x==1||E==jr&&S-B>4096)&&(E=jr-1)),P>=jr&&E<=P){et=S+v-jr,Xe=qt(S-1-I,P-jr),v-=P-1,P-=2;do++S<=et&&(A=(A<<y^c[S+(jr-1)]&255)&_,lt=h[A]&65535,f[S&a]=h[A],h[A]=S);while(--P!==0);if(b=0,E=jr-1,S++,Xe&&(oi(!1),t.avail_out===0))return Ld}else if(b!==0){if(Xe=qt(0,c[S-1]&255),Xe&&oi(!1),S++,v--,t.avail_out===0)return Ld}else b=1,S++,v--}return b!==0&&(Xe=qt(0,c[S-1]&255),b=0),oi(Fe==4),t.avail_out===0?Fe==4?zF:Ld:Fe==4?Q8:F8}function Lr(Fe){return Fe.total_in=Fe.total_out=0,Fe.msg=null,e.pending=0,e.pending_out=0,n=k8,o=0,fe(),he(),0}e.deflateInit=function(Fe,lt,Xe,et,gt,Jt){return et||(et=f7),gt||(gt=Alt),Jt||(Jt=0),Fe.msg=null,lt==-1&&(lt=6),gt<1||gt>mlt||et!=f7||Xe<9||Xe>15||lt<0||lt>9||Jt<0||Jt>2?-2:(Fe.dstate=e,s=Xe,r=1<<s,a=r-1,m=gt+7,g=1<<m,_=g-1,y=Math.floor((m+jr-1)/jr),c=new Uint8Array(r*2),f=[],h=[],H=1<<gt+6,e.pending_buf=new Uint8Array(H*4),i=H*4,e.dist_buf=new Uint16Array(H),e.lc_buf=new Uint8Array(H),p=lt,x=Jt,Lr(Fe))},e.deflateEnd=function(){return n!=u7&&n!=k8&&n!=VF?-2:(e.lc_buf=null,e.dist_buf=null,e.pending_buf=null,h=null,f=null,c=null,e.dstate=null,n==k8?-3:0)},e.deflateParams=function(Fe,lt,Xe){let et=0;return lt==-1&&(lt=6),lt<0||lt>9||Xe<0||Xe>2?-2:(lm[p].func!=lm[lt].func&&Fe.total_in!==0&&(et=Fe.deflate(1)),p!=lt&&(p=lt,L=lm[p].max_lazy,T=lm[p].good_length,w=lm[p].nice_length,M=lm[p].max_chain),x=Xe,et)},e.deflateSetDictionary=function(Fe,lt,Xe){let et=Xe,gt,Jt=0;if(!lt||n!=u7)return-2;if(et<jr)return 0;for(et>r-yf&&(et=r-yf,Jt=Xe-et),c.set(lt.subarray(Jt,Jt+et),0),S=et,C=et,A=c[0]&255,A=(A<<y^c[1]&255)&_,gt=0;gt<=et-jr;gt++)A=(A<<y^c[gt+(jr-1)]&255)&_,f[gt&a]=h[A],h[A]=gt;return 0},e.deflate=function(Fe,lt){let Xe,et,gt,Jt,bn;if(lt>4||lt<0)return-2;if(!Fe.next_out||!Fe.next_in&&Fe.avail_in!==0||n==VF&<!=4)return Fe.msg=O8[4],-2;if(Fe.avail_out===0)return Fe.msg=O8[7],-5;if(t=Fe,Jt=o,o=lt,n==u7&&(et=f7+(s-8<<4)<<8,gt=(p-1&255)>>1,gt>3&&(gt=3),et|=gt<<6,S!==0&&(et|=plt),et+=31-et%31,n=k8,ke(et)),e.pending!==0){if(t.flush_pending(),t.avail_out===0)return o=-1,0}else if(t.avail_in===0&<<=Jt&<!=4)return t.msg=O8[7],-5;if(n==VF&&t.avail_in!==0)return Fe.msg=O8[7],-5;if(t.avail_in!==0||v!==0||lt!=0&&n!=VF){switch(bn=-1,lm[p].func){case Dye:bn=Lo(lt);break;case U8:bn=Pa(lt);break;case AI:bn=Er(lt);break;default:}if((bn==zF||bn==Q8)&&(n=VF),bn==Ld||bn==zF)return t.avail_out===0&&(o=-1),0;if(bn==F8){if(lt==1)nn();else if(Ft(0,0,!1),lt==3)for(Xe=0;Xe<g;Xe++)h[Xe]=0;if(t.flush_pending(),t.avail_out===0)return o=-1,0}}return lt!=4?0:1}}function vye(){let e=this;e.next_in_index=0,e.next_out_index=0,e.avail_in=0,e.total_in=0,e.avail_out=0,e.total_out=0}vye.prototype={deflateInit(e,t){let n=this;return n.dstate=new ylt,t||(t=15),n.dstate.deflateInit(n,e,t)},deflate(e){let t=this;return t.dstate?t.dstate.deflate(t,e):-2},deflateEnd(){let e=this;if(!e.dstate)return-2;let t=e.dstate.deflateEnd();return e.dstate=null,t},deflateParams(e,t){let n=this;return n.dstate?n.dstate.deflateParams(n,e,t):-2},deflateSetDictionary(e,t){let n=this;return n.dstate?n.dstate.deflateSetDictionary(n,e,t):-2},read_buf(e,t,n){let i=this,o=i.avail_in;return o>n&&(o=n),o===0?0:(i.avail_in-=o,e.set(i.next_in.subarray(i.next_in_index,i.next_in_index+o),t),i.next_in_index+=o,i.total_in+=o,o)},flush_pending(){let e=this,t=e.dstate.pending;t>e.avail_out&&(t=e.avail_out),t!==0&&(e.next_out.set(e.dstate.pending_buf.subarray(e.dstate.pending_out,e.dstate.pending_out+t),e.next_out_index),e.next_out_index+=t,e.dstate.pending_out+=t,e.total_out+=t,e.avail_out-=t,e.dstate.pending-=t,e.dstate.pending===0&&(e.dstate.pending_out=0))}};function Pye(e){let t=this,n=new vye,i=Clt(e&&e.chunkSize?e.chunkSize:64*1024),o=0,r=new Uint8Array(i),s=e?e.level:-1;typeof s>"u"&&(s=-1),n.deflateInit(s),n.next_out=r,t.append=function(a,c){let u,f,h=0,A=0,g=0,m=[];if(a.length){n.next_in_index=0,n.next_in=a,n.avail_in=a.length;do{if(n.next_out_index=0,n.avail_out=i,u=n.deflate(o),u!=0)throw new Error("deflating: "+n.msg);n.next_out_index&&(n.next_out_index==i?m.push(new Uint8Array(r)):m.push(r.subarray(0,n.next_out_index))),g+=n.next_out_index,c&&n.next_in_index>0&&n.next_in_index!=h&&(c(n.next_in_index),h=n.next_in_index)}while(n.avail_in>0||n.avail_out===0);return m.length>1?(f=new Uint8Array(g),m.forEach(function(_){f.set(_,A),A+=_.length})):f=m[0]?new Uint8Array(m[0]):new Uint8Array,f}},t.flush=function(){let a,c,u=0,f=0,h=[];do{if(n.next_out_index=0,n.avail_out=i,a=n.deflate(4),a!=1&&a!=0)throw new Error("deflating: "+n.msg);i-n.avail_out>0&&h.push(r.slice(0,n.next_out_index)),f+=n.next_out_index}while(n.avail_in>0||n.avail_out===0);return n.deflateEnd(),c=new Uint8Array(f),h.forEach(function(A){c.set(A,u),u+=A.length}),c}}function Clt(e){return e+5*(Math.floor(e/16383)+1)}var Cf=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],Jye=1440,Elt=0,Ilt=4,xlt=9,blt=5,Tlt=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],Slt=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],wlt=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],Blt=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],Dlt=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],vlt=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],Xy=15;function p7(){let e=this,t,n,i,o,r,s;function a(u,f,h,A,g,m,_,y,C,E,I){let b,S,B,v,P,M,L,p,x,T,w,R,O,k,Q;T=0,P=h;do i[u[f+T]]++,T++,P--;while(P!==0);if(i[0]==h)return _[0]=-1,y[0]=0,0;for(p=y[0],M=1;M<=Xy&&i[M]===0;M++);for(L=M,p<M&&(p=M),P=Xy;P!==0&&i[P]===0;P--);for(B=P,p>P&&(p=P),y[0]=p,k=1<<M;M<P;M++,k<<=1)if((k-=i[M])<0)return-3;if((k-=i[P])<0)return-3;for(i[P]+=k,s[1]=M=0,T=1,O=2;--P!==0;)s[O]=M+=i[T],O++,T++;P=0,T=0;do(M=u[f+T])!==0&&(I[s[M]++]=P),T++;while(++P<h);for(h=s[B],s[0]=P=0,T=0,v=-1,R=-p,r[0]=0,w=0,Q=0;L<=B;L++)for(b=i[L];b--!==0;){for(;L>R+p;){if(v++,R+=p,Q=B-R,Q=Q>p?p:Q,(S=1<<(M=L-R))>b+1&&(S-=b+1,O=L,M<Q))for(;++M<Q&&!((S<<=1)<=i[++O]);)S-=i[O];if(Q=1<<M,E[0]+Q>Jye)return-3;r[v]=w=E[0],E[0]+=Q,v!==0?(s[v]=P,o[0]=M,o[1]=p,M=P>>>R-p,o[2]=w-r[v-1]-M,C.set(o,(r[v-1]+M)*3)):_[0]=w}for(o[1]=L-R,T>=h?o[0]=192:I[T]<A?(o[0]=I[T]<256?0:96,o[2]=I[T++]):(o[0]=m[I[T]-A]+16+64,o[2]=g[I[T++]-A]),S=1<<L-R,M=P>>>R;M<Q;M+=S)C.set(o,(w+M)*3);for(M=1<<L-1;(P&M)!==0;M>>>=1)P^=M;for(P^=M,x=(1<<R)-1;(P&x)!=s[v];)v--,R-=p,x=(1<<R)-1}return k!==0&&B!=1?-5:0}function c(u){let f;for(t||(t=[],n=[],i=new Int32Array(Xy+1),o=[],r=new Int32Array(Xy),s=new Int32Array(Xy+1)),n.length<u&&(n=[]),f=0;f<u;f++)n[f]=0;for(f=0;f<Xy+1;f++)i[f]=0;for(f=0;f<3;f++)o[f]=0;r.set(i.subarray(0,Xy),0),s.set(i.subarray(0,Xy+1),0)}e.inflate_trees_bits=function(u,f,h,A,g){let m;return c(19),t[0]=0,m=a(u,0,19,19,null,null,h,f,A,t,n),m==-3?g.msg="oversubscribed dynamic bit lengths tree":(m==-5||f[0]===0)&&(g.msg="incomplete dynamic bit lengths tree",m=-3),m},e.inflate_trees_dynamic=function(u,f,h,A,g,m,_,y,C){let E;return c(288),t[0]=0,E=a(h,0,u,257,wlt,Blt,m,A,y,t,n),E!=0||A[0]===0?(E==-3?C.msg="oversubscribed literal/length tree":E!=-4&&(C.msg="incomplete literal/length tree",E=-3),E):(c(288),E=a(h,u,f,0,Dlt,vlt,_,g,y,t,n),E!=0||g[0]===0&&u>257?(E==-3?C.msg="oversubscribed distance tree":E==-5?(C.msg="incomplete distance tree",E=-3):E!=-4&&(C.msg="empty distance tree with lengths",E=-3),E):0)}}p7.inflate_trees_fixed=function(e,t,n,i){return e[0]=xlt,t[0]=blt,n[0]=Tlt,i[0]=Slt,0};var H8=0,Rye=1,Mye=2,Nye=3,Lye=4,Oye=5,Fye=6,h7=7,Qye=8,W8=9;function Plt(){let e=this,t,n=0,i,o=0,r=0,s=0,a=0,c=0,u=0,f=0,h,A=0,g,m=0;function _(y,C,E,I,b,S,B,v){let P,M,L,p,x,T,w,R,O,k,Q,z,F,H,W,Z;w=v.next_in_index,R=v.avail_in,x=B.bitb,T=B.bitk,O=B.write,k=O<B.read?B.read-O-1:B.end-O,Q=Cf[y],z=Cf[C];do{for(;T<20;)R--,x|=(v.read_byte(w++)&255)<<T,T+=8;if(P=x&Q,M=E,L=I,Z=(L+P)*3,(p=M[Z])===0){x>>=M[Z+1],T-=M[Z+1],B.win[O++]=M[Z+2],k--;continue}do{if(x>>=M[Z+1],T-=M[Z+1],(p&16)!==0){for(p&=15,F=M[Z+2]+(x&Cf[p]),x>>=p,T-=p;T<15;)R--,x|=(v.read_byte(w++)&255)<<T,T+=8;P=x&z,M=b,L=S,Z=(L+P)*3,p=M[Z];do if(x>>=M[Z+1],T-=M[Z+1],(p&16)!==0){for(p&=15;T<p;)R--,x|=(v.read_byte(w++)&255)<<T,T+=8;if(H=M[Z+2]+(x&Cf[p]),x>>=p,T-=p,k-=F,O>=H)W=O-H,O-W>0&&2>O-W?(B.win[O++]=B.win[W++],B.win[O++]=B.win[W++],F-=2):(B.win.set(B.win.subarray(W,W+2),O),O+=2,W+=2,F-=2);else{W=O-H;do W+=B.end;while(W<0);if(p=B.end-W,F>p){if(F-=p,O-W>0&&p>O-W)do B.win[O++]=B.win[W++];while(--p!==0);else B.win.set(B.win.subarray(W,W+p),O),O+=p,W+=p,p=0;W=0}}if(O-W>0&&F>O-W)do B.win[O++]=B.win[W++];while(--F!==0);else B.win.set(B.win.subarray(W,W+F),O),O+=F,W+=F,F=0;break}else if((p&64)===0)P+=M[Z+2],P+=x&Cf[p],Z=(L+P)*3,p=M[Z];else return v.msg="invalid distance code",F=v.avail_in-R,F=T>>3<F?T>>3:F,R+=F,w-=F,T-=F<<3,B.bitb=x,B.bitk=T,v.avail_in=R,v.total_in+=w-v.next_in_index,v.next_in_index=w,B.write=O,-3;while(!0);break}if((p&64)===0){if(P+=M[Z+2],P+=x&Cf[p],Z=(L+P)*3,(p=M[Z])===0){x>>=M[Z+1],T-=M[Z+1],B.win[O++]=M[Z+2],k--;break}}else return(p&32)!==0?(F=v.avail_in-R,F=T>>3<F?T>>3:F,R+=F,w-=F,T-=F<<3,B.bitb=x,B.bitk=T,v.avail_in=R,v.total_in+=w-v.next_in_index,v.next_in_index=w,B.write=O,1):(v.msg="invalid literal/length code",F=v.avail_in-R,F=T>>3<F?T>>3:F,R+=F,w-=F,T-=F<<3,B.bitb=x,B.bitk=T,v.avail_in=R,v.total_in+=w-v.next_in_index,v.next_in_index=w,B.write=O,-3)}while(!0)}while(k>=258&&R>=10);return F=v.avail_in-R,F=T>>3<F?T>>3:F,R+=F,w-=F,T-=F<<3,B.bitb=x,B.bitk=T,v.avail_in=R,v.total_in+=w-v.next_in_index,v.next_in_index=w,B.write=O,0}e.init=function(y,C,E,I,b,S){t=H8,u=y,f=C,h=E,A=I,g=b,m=S,i=null},e.proc=function(y,C,E){let I,b,S,B=0,v=0,P=0,M,L,p,x;for(P=C.next_in_index,M=C.avail_in,B=y.bitb,v=y.bitk,L=y.write,p=L<y.read?y.read-L-1:y.end-L;;)switch(t){case H8:if(p>=258&&M>=10&&(y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,E=_(u,f,h,A,g,m,y,C),P=C.next_in_index,M=C.avail_in,B=y.bitb,v=y.bitk,L=y.write,p=L<y.read?y.read-L-1:y.end-L,E!=0)){t=E==1?h7:W8;break}r=u,i=h,o=A,t=Rye;case Rye:for(I=r;v<I;){if(M!==0)E=0;else return y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);M--,B|=(C.read_byte(P++)&255)<<v,v+=8}if(b=(o+(B&Cf[I]))*3,B>>>=i[b+1],v-=i[b+1],S=i[b],S===0){s=i[b+2],t=Fye;break}if((S&16)!==0){a=S&15,n=i[b+2],t=Mye;break}if((S&64)===0){r=S,o=b/3+i[b+2];break}if((S&32)!==0){t=h7;break}return t=W8,C.msg="invalid literal/length code",E=-3,y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);case Mye:for(I=a;v<I;){if(M!==0)E=0;else return y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);M--,B|=(C.read_byte(P++)&255)<<v,v+=8}n+=B&Cf[I],B>>=I,v-=I,r=f,i=g,o=m,t=Nye;case Nye:for(I=r;v<I;){if(M!==0)E=0;else return y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);M--,B|=(C.read_byte(P++)&255)<<v,v+=8}if(b=(o+(B&Cf[I]))*3,B>>=i[b+1],v-=i[b+1],S=i[b],(S&16)!==0){a=S&15,c=i[b+2],t=Lye;break}if((S&64)===0){r=S,o=b/3+i[b+2];break}return t=W8,C.msg="invalid distance code",E=-3,y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);case Lye:for(I=a;v<I;){if(M!==0)E=0;else return y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);M--,B|=(C.read_byte(P++)&255)<<v,v+=8}c+=B&Cf[I],B>>=I,v-=I,t=Oye;case Oye:for(x=L-c;x<0;)x+=y.end;for(;n!==0;){if(p===0&&(L==y.end&&y.read!==0&&(L=0,p=L<y.read?y.read-L-1:y.end-L),p===0&&(y.write=L,E=y.inflate_flush(C,E),L=y.write,p=L<y.read?y.read-L-1:y.end-L,L==y.end&&y.read!==0&&(L=0,p=L<y.read?y.read-L-1:y.end-L),p===0)))return y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);y.win[L++]=y.win[x++],p--,x==y.end&&(x=0),n--}t=H8;break;case Fye:if(p===0&&(L==y.end&&y.read!==0&&(L=0,p=L<y.read?y.read-L-1:y.end-L),p===0&&(y.write=L,E=y.inflate_flush(C,E),L=y.write,p=L<y.read?y.read-L-1:y.end-L,L==y.end&&y.read!==0&&(L=0,p=L<y.read?y.read-L-1:y.end-L),p===0)))return y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);E=0,y.win[L++]=s,p--,t=H8;break;case h7:if(v>7&&(v-=8,M++,P--),y.write=L,E=y.inflate_flush(C,E),L=y.write,p=L<y.read?y.read-L-1:y.end-L,y.read!=y.write)return y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);t=Qye;case Qye:return E=1,y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);case W8:return E=-3,y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);default:return E=-2,y.bitb=B,y.bitk=v,C.avail_in=M,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E)}},e.free=function(){}}var kye=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],WS=0,m7=1,Uye=2,Gye=3,zye=4,Vye=5,j8=6,Y8=7,Hye=8,pI=9;function Rlt(e,t){let n=this,i=WS,o=0,r=0,s=0,a,c=[0],u=[0],f=new Plt,h=0,A=new Int32Array(Jye*3),g=0,m=new p7;n.bitk=0,n.bitb=0,n.win=new Uint8Array(t),n.end=t,n.read=0,n.write=0,n.reset=function(_,y){y&&(y[0]=g),i==j8&&f.free(_),i=WS,n.bitk=0,n.bitb=0,n.read=n.write=0},n.reset(e,null),n.inflate_flush=function(_,y){let C,E,I;return E=_.next_out_index,I=n.read,C=(I<=n.write?n.write:n.end)-I,C>_.avail_out&&(C=_.avail_out),C!==0&&y==-5&&(y=0),_.avail_out-=C,_.total_out+=C,_.next_out.set(n.win.subarray(I,I+C),E),E+=C,I+=C,I==n.end&&(I=0,n.write==n.end&&(n.write=0),C=n.write-I,C>_.avail_out&&(C=_.avail_out),C!==0&&y==-5&&(y=0),_.avail_out-=C,_.total_out+=C,_.next_out.set(n.win.subarray(I,I+C),E),E+=C,I+=C),_.next_out_index=E,n.read=I,y},n.proc=function(_,y){let C,E,I,b,S,B,v,P;for(b=_.next_in_index,S=_.avail_in,E=n.bitb,I=n.bitk,B=n.write,v=B<n.read?n.read-B-1:n.end-B;;){let M,L,p,x,T,w,R,O;switch(i){case WS:for(;I<3;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}switch(C=E&7,h=C&1,C>>>1){case 0:E>>>=3,I-=3,C=I&7,E>>>=C,I-=C,i=m7;break;case 1:M=[],L=[],p=[[]],x=[[]],p7.inflate_trees_fixed(M,L,p,x),f.init(M[0],L[0],p[0],0,x[0],0),E>>>=3,I-=3,i=j8;break;case 2:E>>>=3,I-=3,i=Gye;break;case 3:return E>>>=3,I-=3,i=pI,_.msg="invalid block type",y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y)}break;case m7:for(;I<32;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}if((~E>>>16&65535)!=(E&65535))return i=pI,_.msg="invalid stored block lengths",y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);o=E&65535,E=I=0,i=o!==0?Uye:h!==0?Y8:WS;break;case Uye:if(S===0||v===0&&(B==n.end&&n.read!==0&&(B=0,v=B<n.read?n.read-B-1:n.end-B),v===0&&(n.write=B,y=n.inflate_flush(_,y),B=n.write,v=B<n.read?n.read-B-1:n.end-B,B==n.end&&n.read!==0&&(B=0,v=B<n.read?n.read-B-1:n.end-B),v===0)))return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);if(y=0,C=o,C>S&&(C=S),C>v&&(C=v),n.win.set(_.read_buf(b,C),B),b+=C,S-=C,B+=C,v-=C,(o-=C)!==0)break;i=h!==0?Y8:WS;break;case Gye:for(;I<14;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}if(r=C=E&16383,(C&31)>29||(C>>5&31)>29)return i=pI,_.msg="too many length or distance symbols",y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);if(C=258+(C&31)+(C>>5&31),!a||a.length<C)a=[];else for(P=0;P<C;P++)a[P]=0;E>>>=14,I-=14,s=0,i=zye;case zye:for(;s<4+(r>>>10);){for(;I<3;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}a[kye[s++]]=E&7,E>>>=3,I-=3}for(;s<19;)a[kye[s++]]=0;if(c[0]=7,C=m.inflate_trees_bits(a,c,u,A,_),C!=0)return y=C,y==-3&&(a=null,i=pI),n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);s=0,i=Vye;case Vye:for(;C=r,!(s>=258+(C&31)+(C>>5&31));){let k,Q;for(C=c[0];I<C;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}if(C=A[(u[0]+(E&Cf[C]))*3+1],Q=A[(u[0]+(E&Cf[C]))*3+2],Q<16)E>>>=C,I-=C,a[s++]=Q;else{for(P=Q==18?7:Q-14,k=Q==18?11:3;I<C+P;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}if(E>>>=C,I-=C,k+=E&Cf[P],E>>>=P,I-=P,P=s,C=r,P+k>258+(C&31)+(C>>5&31)||Q==16&&P<1)return a=null,i=pI,_.msg="invalid bit length repeat",y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);Q=Q==16?a[P-1]:0;do a[P++]=Q;while(--k!==0);s=P}}if(u[0]=-1,T=[],w=[],R=[],O=[],T[0]=9,w[0]=6,C=r,C=m.inflate_trees_dynamic(257+(C&31),1+(C>>5&31),a,T,w,R,O,A,_),C!=0)return C==-3&&(a=null,i=pI),y=C,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);f.init(T[0],w[0],A,R[0],A,O[0]),i=j8;case j8:if(n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,(y=f.proc(n,_,y))!=1)return n.inflate_flush(_,y);if(y=0,f.free(_),b=_.next_in_index,S=_.avail_in,E=n.bitb,I=n.bitk,B=n.write,v=B<n.read?n.read-B-1:n.end-B,h===0){i=WS;break}i=Y8;case Y8:if(n.write=B,y=n.inflate_flush(_,y),B=n.write,v=B<n.read?n.read-B-1:n.end-B,n.read!=n.write)return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);i=Hye;case Hye:return y=1,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);case pI:return y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);default:return y=-2,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y)}}},n.free=function(_){n.reset(_,null),n.win=null,A=null},n.set_dictionary=function(_,y,C){n.win.set(_.subarray(y,y+C),0),n.read=n.write=C},n.sync_point=function(){return i==m7?1:0}}var Mlt=32,Nlt=8,Llt=0,Wye=1,jye=2,Yye=3,qye=4,Kye=5,A7=6,HF=7,Xye=12,Jy=13,Olt=[0,0,255,255];function Flt(){let e=this;e.mode=0,e.method=0,e.was=[0],e.need=0,e.marker=0,e.wbits=0;function t(n){return!n||!n.istate?-2:(n.total_in=n.total_out=0,n.msg=null,n.istate.mode=HF,n.istate.blocks.reset(n,null),0)}e.inflateEnd=function(n){return e.blocks&&e.blocks.free(n),e.blocks=null,0},e.inflateInit=function(n,i){return n.msg=null,e.blocks=null,i<8||i>15?(e.inflateEnd(n),-2):(e.wbits=i,n.istate.blocks=new Rlt(n,1<<i),t(n),0)},e.inflate=function(n,i){let o,r;if(!n||!n.istate||!n.next_in)return-2;let s=n.istate;for(i=i==Ilt?-5:0,o=-5;;)switch(s.mode){case Llt:if(n.avail_in===0)return o;if(o=i,n.avail_in--,n.total_in++,((s.method=n.read_byte(n.next_in_index++))&15)!=Nlt){s.mode=Jy,n.msg="unknown compression method",s.marker=5;break}if((s.method>>4)+8>s.wbits){s.mode=Jy,n.msg="invalid win size",s.marker=5;break}s.mode=Wye;case Wye:if(n.avail_in===0)return o;if(o=i,n.avail_in--,n.total_in++,r=n.read_byte(n.next_in_index++)&255,((s.method<<8)+r)%31!==0){s.mode=Jy,n.msg="incorrect header check",s.marker=5;break}if((r&Mlt)===0){s.mode=HF;break}s.mode=jye;case jye:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need=(n.read_byte(n.next_in_index++)&255)<<24&4278190080,s.mode=Yye;case Yye:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need+=(n.read_byte(n.next_in_index++)&255)<<16&16711680,s.mode=qye;case qye:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need+=(n.read_byte(n.next_in_index++)&255)<<8&65280,s.mode=Kye;case Kye:return n.avail_in===0?o:(o=i,n.avail_in--,n.total_in++,s.need+=n.read_byte(n.next_in_index++)&255,s.mode=A7,2);case A7:return s.mode=Jy,n.msg="need dictionary",s.marker=0,-2;case HF:if(o=s.blocks.proc(n,o),o==-3){s.mode=Jy,s.marker=0;break}if(o==0&&(o=i),o!=1)return o;o=i,s.blocks.reset(n,s.was),s.mode=Xye;case Xye:return n.avail_in=0,1;case Jy:return-3;default:return-2}},e.inflateSetDictionary=function(n,i,o){let r=0,s=o;if(!n||!n.istate||n.istate.mode!=A7)return-2;let a=n.istate;return s>=1<<a.wbits&&(s=(1<<a.wbits)-1,r=o-s),a.blocks.set_dictionary(i,r,s),a.mode=HF,0},e.inflateSync=function(n){let i,o,r,s,a;if(!n||!n.istate)return-2;let c=n.istate;if(c.mode!=Jy&&(c.mode=Jy,c.marker=0),(i=n.avail_in)===0)return-5;for(o=n.next_in_index,r=c.marker;i!==0&&r<4;)n.read_byte(o)==Olt[r]?r++:n.read_byte(o)!==0?r=0:r=4-r,o++,i--;return n.total_in+=o-n.next_in_index,n.next_in_index=o,n.avail_in=i,c.marker=r,r!=4?-3:(s=n.total_in,a=n.total_out,t(n),n.total_in=s,n.total_out=a,c.mode=HF,0)},e.inflateSyncPoint=function(n){return!n||!n.istate||!n.istate.blocks?-2:n.istate.blocks.sync_point()}}function Zye(){}Zye.prototype={inflateInit(e){let t=this;return t.istate=new Flt,e||(e=15),t.istate.inflateInit(t,e)},inflate(e){let t=this;return t.istate?t.istate.inflate(t,e):-2},inflateEnd(){let e=this;if(!e.istate)return-2;let t=e.istate.inflateEnd(e);return e.istate=null,t},inflateSync(){let e=this;return e.istate?e.istate.inflateSync(e):-2},inflateSetDictionary(e,t){let n=this;return n.istate?n.istate.inflateSetDictionary(n,e,t):-2},read_byte(e){return this.next_in[e]},read_buf(e,t){return this.next_in.subarray(e,e+t)}};function $ye(e){let t=this,n=new Zye,i=e&&e.chunkSize?Math.floor(e.chunkSize*2):128*1024,o=Elt,r=new Uint8Array(i),s=!1;n.inflateInit(),n.next_out=r,t.append=function(a,c){let u=[],f,h,A=0,g=0,m=0;if(a.length!==0){n.next_in_index=0,n.next_in=a,n.avail_in=a.length;do{if(n.next_out_index=0,n.avail_out=i,n.avail_in===0&&!s&&(n.next_in_index=0,s=!0),f=n.inflate(o),s&&f===-5){if(n.avail_in!==0)throw new Error("inflating: bad input")}else if(f!==0&&f!==1)throw new Error("inflating: "+n.msg);if((s||f===1)&&n.avail_in===a.length)throw new Error("inflating: bad input");n.next_out_index&&(n.next_out_index===i?u.push(new Uint8Array(r)):u.push(r.subarray(0,n.next_out_index))),m+=n.next_out_index,c&&n.next_in_index>0&&n.next_in_index!=A&&(c(n.next_in_index),A=n.next_in_index)}while(n.avail_in>0||n.avail_out===0);return u.length>1?(h=new Uint8Array(m),u.forEach(function(_){h.set(_,g),g+=_.length})):h=u[0]?new Uint8Array(u[0]):new Uint8Array,h}},t.flush=function(){n.inflateEnd()}}var g7=new Date(2107,11,31),_7=new Date(1980,0,1),ii=void 0,Ef="undefined",kg="function";var WF=class{constructor(t){return class extends null{constructor(n,i){let o=new t(i);super({transform(r,s){s.enqueue(o.append(r))},flush(r){let s=o.flush();s&&r.enqueue(s)}})}}}};var Qlt=64,eCe=2;try{typeof navigator!=Ef&&navigator.hardwareConcurrency&&(eCe=navigator.hardwareConcurrency)}catch{}var klt={chunkSize:512*1024,maxWorkers:eCe,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,workerScripts:ii,CompressionStreamNative:typeof CompressionStream!=Ef&&CompressionStream,DecompressionStreamNative:typeof DecompressionStream!=Ef&&DecompressionStream},$y=Object.assign({},klt);function jF(){return $y}function q8(e){return Math.max(e.chunkSize,Qlt)}function jS(e){let{baseURL:t,chunkSize:n,maxWorkers:i,terminateWorkerTimeout:o,useCompressionStream:r,useWebWorkers:s,Deflate:a,Inflate:c,CompressionStream:u,DecompressionStream:f,workerScripts:h}=e;if(Zy("baseURL",t),Zy("chunkSize",n),Zy("maxWorkers",i),Zy("terminateWorkerTimeout",o),Zy("useCompressionStream",r),Zy("useWebWorkers",s),a&&($y.CompressionStream=new WF(a)),c&&($y.DecompressionStream=new WF(c)),Zy("CompressionStream",u),Zy("DecompressionStream",f),h!==ii){let{deflate:A,inflate:g}=h;if((A||g)&&($y.workerScripts||($y.workerScripts={})),A){if(!Array.isArray(A))throw new Error("workerScripts.deflate must be an array");$y.workerScripts.deflate=A}if(g){if(!Array.isArray(g))throw new Error("workerScripts.inflate must be an array");$y.workerScripts.inflate=g}}}function Zy(e,t){t!==ii&&($y[e]=t)}var tCe=[];for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t&1?t=t>>>1^3988292384:t=t>>>1;tCe[e]=t}var Ug=class{constructor(t){this.crc=t||-1}append(t){let n=this.crc|0;for(let i=0,o=t.length|0;i<o;i++)n=n>>>8^tCe[(n^t[i])&255];this.crc=n}get(){return~this.crc}};var YF=class extends null{constructor(){let t,n=new Ug;super({transform(i,o){n.append(i),o.enqueue(i)},flush(){let i=new Uint8Array(4);new DataView(i.buffer).setUint32(0,n.get()),t.value=i}}),t=this}};function YS(e){if(typeof TextEncoder==Ef){e=unescape(encodeURIComponent(e));let t=new Uint8Array(e.length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}else return new TextEncoder().encode(e)}var Gl={concat(e,t){if(e.length===0||t.length===0)return e.concat(t);let n=e[e.length-1],i=Gl.getPartial(n);return i===32?e.concat(t):Gl._shiftRight(t,i,n|0,e.slice(0,e.length-1))},bitLength(e){let t=e.length;if(t===0)return 0;let n=e[t-1];return(t-1)*32+Gl.getPartial(n)},clamp(e,t){if(e.length*32<t)return e;e=e.slice(0,Math.ceil(t/32));let n=e.length;return t=t&31,n>0&&t&&(e[n-1]=Gl.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial(e,t,n){return e===32?t:(n?t|0:t<<32-e)+e*1099511627776},getPartial(e){return Math.round(e/1099511627776)||32},_shiftRight(e,t,n,i){for(i===void 0&&(i=[]);t>=32;t-=32)i.push(n),n=0;if(t===0)return i.concat(e);for(let s=0;s<e.length;s++)i.push(n|e[s]>>>t),n=e[s]<<32-t;let o=e.length?e[e.length-1]:0,r=Gl.getPartial(o);return i.push(Gl.partial(t+r&31,t+r>32?n:i.pop(),1)),i}},qF={bytes:{fromBits(e){let n=Gl.bitLength(e)/8,i=new Uint8Array(n),o;for(let r=0;r<n;r++)(r&3)===0&&(o=e[r/4]),i[r]=o>>>24,o<<=8;return i},toBits(e){let t=[],n,i=0;for(n=0;n<e.length;n++)i=i<<8|e[n],(n&3)===3&&(t.push(i),i=0);return n&3&&t.push(Gl.partial(8*(n&3),i)),t}}},nCe={};nCe.sha1=class{constructor(e){let t=this;t.blockSize=512,t._init=[1732584193,4023233417,2562383102,271733878,3285377520],t._key=[1518500249,1859775393,2400959708,3395469782],e?(t._h=e._h.slice(0),t._buffer=e._buffer.slice(0),t._length=e._length):t.reset()}reset(){let e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){let t=this;typeof e=="string"&&(e=qF.utf8String.toBits(e));let n=t._buffer=Gl.concat(t._buffer,e),i=t._length,o=t._length=i+Gl.bitLength(e);if(o>9007199254740991)throw new Error("Cannot hash more than 2^53 - 1 bits");let r=new Uint32Array(n),s=0;for(let a=t.blockSize+i-(t.blockSize+i&t.blockSize-1);a<=o;a+=t.blockSize)t._block(r.subarray(16*s,16*(s+1))),s+=1;return n.splice(0,16*s),t}finalize(){let e=this,t=e._buffer,n=e._h;t=Gl.concat(t,[Gl.partial(1,1)]);for(let i=t.length+2;i&15;i++)t.push(0);for(t.push(Math.floor(e._length/4294967296)),t.push(e._length|0);t.length;)e._block(t.splice(0,16));return e.reset(),n}_f(e,t,n,i){if(e<=19)return t&n|~t&i;if(e<=39)return t^n^i;if(e<=59)return t&n|t&i|n&i;if(e<=79)return t^n^i}_S(e,t){return t<<e|t>>>32-e}_block(e){let t=this,n=t._h,i=Array(80);for(let u=0;u<16;u++)i[u]=e[u];let o=n[0],r=n[1],s=n[2],a=n[3],c=n[4];for(let u=0;u<=79;u++){u>=16&&(i[u]=t._S(1,i[u-3]^i[u-8]^i[u-14]^i[u-16]));let f=t._S(5,o)+t._f(u,r,s,a)+c+i[u]+t._key[Math.floor(u/20)]|0;c=a,a=s,s=t._S(30,r),r=o,o=f}n[0]=n[0]+o|0,n[1]=n[1]+r|0,n[2]=n[2]+s|0,n[3]=n[3]+a|0,n[4]=n[4]+c|0}};var y7={};y7.aes=class{constructor(e){let t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();let n=t._tables[0][4],i=t._tables[1],o=e.length,r,s,a,c=1;if(o!==4&&o!==6&&o!==8)throw new Error("invalid aes key size");for(t._key=[s=e.slice(0),a=[]],r=o;r<4*o+28;r++){let u=s[r-1];(r%o===0||o===8&&r%o===4)&&(u=n[u>>>24]<<24^n[u>>16&255]<<16^n[u>>8&255]<<8^n[u&255],r%o===0&&(u=u<<8^u>>>24^c<<24,c=c<<1^(c>>7)*283)),s[r]=s[r-o]^u}for(let u=0;r;u++,r--){let f=s[u&3?r:r-4];r<=4||u<4?a[u]=f:a[u]=i[0][n[f>>>24]]^i[1][n[f>>16&255]]^i[2][n[f>>8&255]]^i[3][n[f&255]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){let e=this._tables[0],t=this._tables[1],n=e[4],i=t[4],o=[],r=[],s,a,c,u;for(let f=0;f<256;f++)r[(o[f]=f<<1^(f>>7)*283)^f]=f;for(let f=s=0;!n[f];f^=a||1,s=r[s]||1){let h=s^s<<1^s<<2^s<<3^s<<4;h=h>>8^h&255^99,n[f]=h,i[h]=f,u=o[c=o[a=o[f]]];let A=u*16843009^c*65537^a*257^f*16843008,g=o[h]*257^h*16843008;for(let m=0;m<4;m++)e[m][f]=g=g<<24^g>>>8,t[m][h]=A=A<<24^A>>>8}for(let f=0;f<5;f++)e[f]=e[f].slice(0),t[f]=t[f].slice(0)}_crypt(e,t){if(e.length!==4)throw new Error("invalid aes block size");let n=this._key[t],i=n.length/4-2,o=[0,0,0,0],r=this._tables[t],s=r[0],a=r[1],c=r[2],u=r[3],f=r[4],h=e[0]^n[0],A=e[t?3:1]^n[1],g=e[2]^n[2],m=e[t?1:3]^n[3],_=4,y,C,E;for(let I=0;I<i;I++)y=s[h>>>24]^a[A>>16&255]^c[g>>8&255]^u[m&255]^n[_],C=s[A>>>24]^a[g>>16&255]^c[m>>8&255]^u[h&255]^n[_+1],E=s[g>>>24]^a[m>>16&255]^c[h>>8&255]^u[A&255]^n[_+2],m=s[m>>>24]^a[h>>16&255]^c[A>>8&255]^u[g&255]^n[_+3],_+=4,h=y,A=C,g=E;for(let I=0;I<4;I++)o[t?3&-I:I]=f[h>>>24]<<24^f[A>>16&255]<<16^f[g>>8&255]<<8^f[m&255]^n[_++],y=h,h=A,A=g,g=m,m=y;return o}};var iCe={getRandomValues(e){let t=new Uint32Array(e.buffer),n=i=>{let o=987654321,r=4294967295;return function(){return o=36969*(o&65535)+(o>>16)&r,i=18e3*(i&65535)+(i>>16)&r,(((o<<16)+i&r)/4294967296+.5)*(Math.random()>.5?1:-1)}};for(let i=0,o;i<e.length;i+=4){let r=n((o||Math.random())*4294967296);o=r()*987654071,t[i/4]=r()*4294967296|0}return e}},C7={};C7.ctrGladman=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if((e>>24&255)===255){let t=e>>16&255,n=e>>8&255,i=e&255;t===255?(t=0,n===255?(n=0,i===255?i=0:++i):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=i}else e+=1<<24;return e}incCounter(e){(e[0]=this.incWord(e[0]))===0&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let i;if(!(i=t.length))return[];let o=Gl.bitLength(t);for(let r=0;r<i;r+=4){this.incCounter(n);let s=e.encrypt(n);t[r]^=s[0],t[r+1]^=s[1],t[r+2]^=s[2],t[r+3]^=s[3]}return Gl.clamp(t,o)}};var eC={importKey(e){return new eC.hmacSha1(qF.bytes.toBits(e))},pbkdf2(e,t,n,i){if(n=n||1e4,i<0||n<0)throw new Error("invalid params to pbkdf2");let o=(i>>5)+1<<2,r,s,a,c,u,f=new ArrayBuffer(o),h=new DataView(f),A=0,g=Gl;for(t=qF.bytes.toBits(t),u=1;A<(o||1);u++){for(r=s=e.encrypt(g.concat(t,[u])),a=1;a<n;a++)for(s=e.encrypt(s),c=0;c<s.length;c++)r[c]^=s[c];for(a=0;A<(o||1)&&a<r.length;a++)h.setInt32(A,r[a]),A+=4}return f.slice(0,i/8)}};eC.hmacSha1=class{constructor(e){let t=this,n=t._hash=nCe.sha1,i=[[],[]];t._baseHash=[new n,new n];let o=t._baseHash[0].blockSize/32;e.length>o&&(e=new n().update(e).finalize());for(let r=0;r<o;r++)i[0][r]=e[r]^909522486,i[1][r]=e[r]^1549556828;t._baseHash[0].update(i[0]),t._baseHash[1].update(i[1]),t._resultHash=new n(t._baseHash[0])}reset(){let e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){let t=this;t._updated=!0,t._resultHash.update(e)}digest(){let e=this,t=e._resultHash.finalize(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new Error("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}};var Ult=typeof crypto!=Ef&&typeof crypto.getRandomValues==kg,tC="Invalid password",gI="Invalid signature",Gg="zipjs-abort-check-password";function K8(e){return Ult?crypto.getRandomValues(e):iCe.getRandomValues(e)}var qS=16,Glt="raw",sCe={name:"PBKDF2"},zlt={name:"HMAC"},Vlt="SHA-1",Hlt=Object.assign({hash:zlt},sCe),E7=Object.assign({iterations:1e3,hash:{name:Vlt}},sCe),Wlt=["deriveBits"],XF=[8,12,16],KF=[16,24,32],nC=10,jlt=[0,0,0,0],Z8=typeof crypto!=Ef,$F=Z8&&crypto.subtle,aCe=Z8&&typeof $F!=Ef,xA=qF.bytes,Ylt=y7.aes,qlt=C7.ctrGladman,Klt=eC.hmacSha1,oCe=Z8&&aCe&&typeof $F.importKey==kg,rCe=Z8&&aCe&&typeof $F.deriveBits==kg,X8=class extends null{constructor({password:t,rawPassword:n,signed:i,encryptionStrength:o,checkPasswordOnly:r}){super({start(){Object.assign(this,{ready:new Promise(s=>this.resolveReady=s),password:uCe(t,n),signed:i,strength:o-1,pending:new Uint8Array})},async transform(s,a){let c=this,{password:u,strength:f,resolveReady:h,ready:A}=c;u?(await Xlt(c,f,u,Od(s,0,XF[f]+2)),s=Od(s,XF[f]+2),r?a.error(new Error(Gg)):h()):await A;let g=new Uint8Array(s.length-nC-(s.length-nC)%qS);a.enqueue(cCe(c,s,g,0,nC,!0))},async flush(s){let{signed:a,ctr:c,hmac:u,pending:f,ready:h}=this;if(u&&c){await h;let A=Od(f,0,f.length-nC),g=Od(f,f.length-nC),m=new Uint8Array;if(A.length){let _=ZF(xA,A);u.update(_);let y=c.update(_);m=JF(xA,y)}if(a){let _=Od(JF(xA,u.digest()),0,nC);for(let y=0;y<nC;y++)if(_[y]!=g[y])throw new Error(gI)}s.enqueue(m)}}})}},J8=class extends null{constructor({password:t,rawPassword:n,encryptionStrength:i}){let o;super({start(){Object.assign(this,{ready:new Promise(r=>this.resolveReady=r),password:uCe(t,n),strength:i-1,pending:new Uint8Array})},async transform(r,s){let a=this,{password:c,strength:u,resolveReady:f,ready:h}=a,A=new Uint8Array;c?(A=await Jlt(a,u,c),f()):await h;let g=new Uint8Array(A.length+r.length-r.length%qS);g.set(A,0),s.enqueue(cCe(a,r,g,A.length,0))},async flush(r){let{ctr:s,hmac:a,pending:c,ready:u}=this;if(a&&s){await u;let f=new Uint8Array;if(c.length){let h=s.update(ZF(xA,c));a.update(h),f=JF(xA,h)}o.signature=JF(xA,a.digest()).slice(0,nC),r.enqueue(I7(f,o.signature))}}}),o=this}};function cCe(e,t,n,i,o,r){let{ctr:s,hmac:a,pending:c}=e,u=t.length-o;c.length&&(t=I7(c,t),n=eut(n,u-u%qS));let f;for(f=0;f<=u-qS;f+=qS){let h=ZF(xA,Od(t,f,f+qS));r&&a.update(h);let A=s.update(h);r||a.update(A),n.set(JF(xA,A),f+i)}return e.pending=Od(t,f),n}async function Xlt(e,t,n,i){let o=await lCe(e,t,n,Od(i,0,XF[t])),r=Od(i,XF[t]);if(o[0]!=r[0]||o[1]!=r[1])throw new Error(tC)}async function Jlt(e,t,n){let i=K8(new Uint8Array(XF[t])),o=await lCe(e,t,n,i);return I7(i,o)}async function lCe(e,t,n,i){e.password=null;let o=await Zlt(Glt,n,Hlt,!1,Wlt),r=await $lt(Object.assign({salt:i},E7),o,8*(KF[t]*2+2)),s=new Uint8Array(r),a=ZF(xA,Od(s,0,KF[t])),c=ZF(xA,Od(s,KF[t],KF[t]*2)),u=Od(s,KF[t]*2);return Object.assign(e,{keys:{key:a,authentication:c,passwordVerification:u},ctr:new qlt(new Ylt(a),Array.from(jlt)),hmac:new Klt(c)}),u}async function Zlt(e,t,n,i,o){if(oCe)try{return await $F.importKey(e,t,n,i,o)}catch{return oCe=!1,eC.importKey(t)}else return eC.importKey(t)}async function $lt(e,t,n){if(rCe)try{return await $F.deriveBits(e,t,n)}catch{return rCe=!1,eC.pbkdf2(t,e.salt,E7.iterations,n)}else return eC.pbkdf2(t,e.salt,E7.iterations,n)}function uCe(e,t){return t===ii?YS(e):t}function I7(e,t){let n=e;return e.length+t.length&&(n=new Uint8Array(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function eut(e,t){if(t&&t>e.length){let n=e;e=new Uint8Array(t),e.set(n,0)}return e}function Od(e,t,n){return e.subarray(t,n)}function JF(e,t){return e.fromBits(t)}function ZF(e,t){return e.toBits(t)}var KS=12,$8=class extends null{constructor({password:t,passwordVerification:n,checkPasswordOnly:i}){super({start(){Object.assign(this,{password:t,passwordVerification:n}),mCe(this,t)},transform(o,r){let s=this;if(s.password){let a=fCe(s,o.subarray(0,KS));if(s.password=null,a[KS-1]!=s.passwordVerification)throw new Error(tC);o=o.subarray(KS)}i?r.error(new Error(Gg)):r.enqueue(fCe(s,o))}})}},e4=class extends null{constructor({password:t,passwordVerification:n}){super({start(){Object.assign(this,{password:t,passwordVerification:n}),mCe(this,t)},transform(i,o){let r=this,s,a;if(r.password){r.password=null;let c=K8(new Uint8Array(KS));c[KS-1]=r.passwordVerification,s=new Uint8Array(i.length+c.length),s.set(dCe(r,c),0),a=KS}else s=new Uint8Array(i.length),a=0;s.set(dCe(r,i),a),o.enqueue(s)}})}};function fCe(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=ACe(e)^t[i],x7(e,n[i]);return n}function dCe(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=ACe(e)^t[i],x7(e,t[i]);return n}function mCe(e,t){let n=[305419896,591751049,878082192];Object.assign(e,{keys:n,crcKey0:new Ug(n[0]),crcKey2:new Ug(n[2])});for(let i=0;i<t.length;i++)x7(e,t.charCodeAt(i))}function x7(e,t){let[n,i,o]=e.keys;e.crcKey0.append([t]),n=~e.crcKey0.get(),i=hCe(Math.imul(hCe(i+pCe(n)),134775813)+1),e.crcKey2.append([i>>>24]),o=~e.crcKey2.get(),e.keys=[n,i,o]}function ACe(e){let t=e.keys[2]|2;return pCe(Math.imul(t,t^1)>>>8)}function pCe(e){return e&255}function hCe(e){return e&4294967295}var e2="Invalid uncompressed size",tut="deflate-raw",t4=class extends null{constructor(t,{chunkSize:n,CompressionStream:i,CompressionStreamNative:o}){super({});let{compressed:r,encrypted:s,useCompressionStream:a,zipCrypto:c,signed:u,level:f}=t,h=this,A,g,m=super.readable;(!s||c)&&u&&(A=new YF,m=iC(m,A)),r&&(m=_Ce(m,a,{level:f,chunkSize:n},o,i)),s&&(c?m=iC(m,new e4(t)):(g=new J8(t),m=iC(m,g))),gCe(h,m,()=>{let _;s&&!c&&(_=g.signature),(!s||c)&&u&&(_=new DataView(A.value.buffer).getUint32(0)),h.signature=_})}},n4=class extends null{constructor(t,{chunkSize:n,DecompressionStream:i,DecompressionStreamNative:o}){super({});let{zipCrypto:r,encrypted:s,signed:a,signature:c,compressed:u,useCompressionStream:f}=t,h,A,g=super.readable;s&&(r?g=iC(g,new $8(t)):(A=new X8(t),g=iC(g,A))),u&&(g=_Ce(g,f,{chunkSize:n},o,i)),(!s||r)&&a&&(h=new YF,g=iC(g,h)),gCe(this,g,()=>{if((!s||r)&&a){let m=new DataView(h.value.buffer);if(c!=m.getUint32(0,!1))throw new Error(gI)}})}};function gCe(e,t,n){t=iC(t,new null({flush:n})),Object.defineProperty(e,"readable",{get(){return t}})}function _Ce(e,t,n,i,o){let r=t&&i?i:o;return iC(e,new r(tut,n))}function iC(e,t){return e.pipeThrough(t)}var yCe="message",CCe="start",ECe="pull",b7="data",ICe="ack",T7="close",r4="deflate",s4="inflate";var i4=class extends null{constructor(t,n){super({});let i=this,{codecType:o}=t,r;o.startsWith(r4)?r=t4:o.startsWith(s4)&&(r=n4),i.outputSize=0;let s=0,a=new r(t,n),c=super.readable,u=new null({transform(h,A){h&&h.length&&(s+=h.length,A.enqueue(h))},flush(){Object.assign(i,{inputSize:s})}}),f=new null({transform(h,A){if(h&&h.length&&(A.enqueue(h),i.outputSize+=h.length,t.outputSize&&i.outputSize>t.outputSize))throw new Error(e2)},flush(){let{signature:h}=a;Object.assign(i,{signature:h,inputSize:s})}});Object.defineProperty(i,"readable",{get(){return c.pipeThrough(u).pipeThrough(a).pipeThrough(f)}})}},o4=class extends null{constructor(t){let n;super({transform:i,flush(o){n&&n.length&&o.enqueue(n)}});function i(o,r){if(n){let s=new Uint8Array(n.length+o.length);s.set(n),s.set(o,n.length),o=s,n=null}o.length>t?(r.enqueue(o.slice(0,t)),i(o.slice(t),r)):n=o}}};var TCe=typeof Worker!=Ef;var XS=class{constructor(t,{readable:n,writable:i},{options:o,config:r,streamOptions:s,useWebWorkers:a,transferStreams:c,scripts:u},f){let{signal:h}=s;return Object.assign(t,{busy:!0,readable:n.pipeThrough(new o4(r.chunkSize)).pipeThrough(new w7(s),{signal:h}),writable:i,options:Object.assign({},o),scripts:u,transferStreams:c,terminate(){return new Promise(A=>{let{worker:g,busy:m}=t;g?(m?t.resolveTerminated=A:(g.terminate(),A()),t.interface=null):A()})},onTaskFinished(){let{resolveTerminated:A}=t;A&&(t.resolveTerminated=null,t.terminated=!0,t.worker.terminate(),A()),t.busy=!1,f(t)}}),(a&&TCe?nut:SCe)(t,r)}},w7=class extends null{constructor({onstart:t,onprogress:n,size:i,onend:o}){let r=0;super({async start(){t&&await S7(t,i)},async transform(s,a){r+=s.length,n&&await S7(n,r,i),a.enqueue(s)},async flush(){o&&await S7(o,r)}})}};async function S7(e,...t){try{await e(...t)}catch{}}function SCe(e,t){return{run:()=>iut(e,t)}}function nut(e,t){let{baseURL:n,chunkSize:i}=t;if(!e.interface){let o;try{o=sut(e.scripts[0],n,e)}catch{return TCe=!1,SCe(e,t)}Object.assign(e,{worker:o,interface:{run:()=>out(e,{chunkSize:i})}})}return e.interface}async function iut({options:e,readable:t,writable:n,onTaskFinished:i},o){let r;try{r=new i4(e,o),await t.pipeThrough(r).pipeTo(n,{preventClose:!0,preventAbort:!0});let{signature:s,inputSize:a,outputSize:c}=r;return{signature:s,inputSize:a,outputSize:c}}catch(s){throw r&&(s.outputSize=r.outputSize),s}finally{i()}}async function out(e,t){let n,i,o=new Promise((A,g)=>{n=A,i=g});Object.assign(e,{reader:null,writer:null,resolveResult:n,rejectResult:i,result:o});let{readable:r,options:s,scripts:a}=e,{writable:c,closed:u}=rut(e.writable),f=a4({type:CCe,scripts:a.slice(1),options:s,config:t,readable:r,writable:c},e);f||Object.assign(e,{reader:r.getReader(),writer:c.getWriter()});let h=await o;return f||await c.getWriter().close(),await u,h}function rut(e){let t,n=new Promise(o=>t=o);return{writable:new WritableStream({async write(o){let r=e.getWriter();await r.ready,await r.write(o),r.releaseLock()},close(){t()},abort(o){return e.getWriter().abort(o)}}),closed:n}}var xCe=!0,bCe=!0;function sut(e,t,n){let i={type:"module"},o,r;typeof e==kg&&(e=e());try{o=new URL(e,t)}catch{o=e}if(xCe)try{r=new Worker(o)}catch{xCe=!1,r=new Worker(o,i)}else r=new Worker(o,i);return r.addEventListener(yCe,s=>aut(s,n)),r}function a4(e,{worker:t,writer:n,onTaskFinished:i,transferStreams:o}){try{let{value:r,readable:s,writable:a}=e,c=[];if(r&&(r.byteLength<r.buffer.byteLength?e.value=r.buffer.slice(0,r.byteLength):e.value=r.buffer,c.push(e.value)),o&&bCe?(s&&c.push(s),a&&c.push(a)):e.readable=e.writable=null,c.length)try{return t.postMessage(e,c),!0}catch{bCe=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(r){throw n&&n.releaseLock(),i(),r}}async function aut({data:e},t){let{type:n,value:i,messageId:o,result:r,error:s}=e,{reader:a,writer:c,resolveResult:u,rejectResult:f,onTaskFinished:h}=t;try{if(s){let{message:g,stack:m,code:_,name:y,outputSize:C}=s,E=new Error(g);Object.assign(E,{stack:m,code:_,name:y,outputSize:C}),A(E)}else{if(n==ECe){let{value:g,done:m}=await a.read();a4({type:b7,value:g,done:m,messageId:o},t)}n==b7&&(await c.ready,await c.write(new Uint8Array(i)),a4({type:ICe,messageId:o},t)),n==T7&&A(null,r)}}catch(g){a4({type:T7,messageId:o},t),A(g)}function A(g,m){g?f(g):u(m),c&&c.releaseLock(),h()}}var _I=[],B7=[];var wCe=0;async function c4(e,t){let{options:n,config:i}=t,{transferStreams:o,useWebWorkers:r,useCompressionStream:s,codecType:a,compressed:c,signed:u,encrypted:f}=n,{workerScripts:h,maxWorkers:A}=i;t.transferStreams=o||o===ii;let g=!c&&!u&&!f&&!t.transferStreams;return t.useWebWorkers=!g&&(r||r===ii&&i.useWebWorkers),t.scripts=t.useWebWorkers&&h?h[a]:[],n.useCompressionStream=s||s===ii&&i.useCompressionStream,(await m()).run();async function m(){let y=_I.find(C=>!C.busy);if(y)return BCe(y),new XS(y,e,t,_);if(_I.length<A){let C={indexWorker:wCe};return wCe++,_I.push(C),new XS(C,e,t,_)}else return new Promise(C=>B7.push({resolve:C,stream:e,workerOptions:t}))}function _(y){if(B7.length){let[{resolve:C,stream:E,workerOptions:I}]=B7.splice(0,1);C(new XS(y,E,I,_))}else y.worker?(BCe(y),cut(y,t)):_I=_I.filter(C=>C!=y)}}function cut(e,t){let{config:n}=t,{terminateWorkerTimeout:i}=n;Number.isFinite(i)&&i>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{_I=_I.filter(o=>o!=e);try{await e.terminate()}catch{}},i))}function BCe(e){let{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}var lut="Writer iterator completed too soon",uut="Writer not initialized",fut="text/plain";var dut="Content-Type";var hut=64*1024,P7="writable",JS=class{constructor(){this.size=0}init(){this.initialized=!0}},l4=class extends JS{get readable(){let t=this,{chunkSize:n=hut}=t,i=new ReadableStream({start(){this.chunkOffset=0},async pull(o){let{offset:r=0,size:s,diskNumberStart:a}=i,{chunkOffset:c}=this,u=s===ii?n:Math.min(n,s-c),f=await Xa(t,r+c,u,a);o.enqueue(f),c+n>s||s===ii&&!f.length&&u?o.close():this.chunkOffset+=n}});return i}},D7=class extends JS{constructor(){super();let t=this,n=new WritableStream({write(i){if(!t.initialized)throw new Error(uut);return t.writeUint8Array(i)}});Object.defineProperty(t,P7,{get(){return n}})}writeUint8Array(){}};var u4=class extends D7{constructor(t){super(),Object.assign(this,{data:"data:"+(t||"")+";base64,",pending:[]})}writeUint8Array(t){let n=this,i=0,o=n.pending,r=n.pending.length;for(n.pending="",i=0;i<Math.floor((r+t.length)/3)*3-r;i++)o+=String.fromCharCode(t[i]);for(;i<t.length;i++)n.pending+=String.fromCharCode(t[i]);o.length&&(o.length>2?n.data+=btoa(o):n.pending+=o)}getData(){return this.data+btoa(this.pending)}},zg=class extends l4{constructor(t){super(),Object.assign(this,{blob:t,size:t.size})}async readUint8Array(t,n){let i=this,o=t+n,s=await(t||o<i.size?i.blob.slice(t,o):i.blob).arrayBuffer();return s.byteLength>n&&(s=s.slice(t,o)),new Uint8Array(s)}},t2=class extends JS{constructor(t){super();let n=this,i=new null,o=[];t&&o.push([dut,t]),Object.defineProperty(n,P7,{get(){return i.writable}}),n.blob=new Response(i.readable,{headers:o}).blob()}getData(){return this.blob}},f4=class extends zg{constructor(t){super(new Blob([t],{type:fut}))}},d4=class extends t2{constructor(t){super(t),Object.assign(this,{encoding:t,utf8:!t||t.toLowerCase()=="utf-8"})}async getData(){let{encoding:t,utf8:n}=this,i=await super.getData();if(i.text&&n)return i.text();{let o=new FileReader;return new Promise((r,s)=>{Object.assign(o,{onload:({target:a})=>r(a.result),onerror:()=>s(o.error)}),o.readAsText(i,t)})}}};var v7=class extends l4{constructor(t){super(),this.readers=t}async init(){let t=this,{readers:n}=t;t.lastDiskNumber=0,t.lastDiskOffset=0,await Promise.all(n.map(async(i,o)=>{await i.init(),o!=n.length-1&&(t.lastDiskOffset+=i.size),t.size+=i.size})),super.init()}async readUint8Array(t,n,i=0){let o=this,{readers:r}=this,s,a=i;a==-1&&(a=r.length-1);let c=t;for(;r[a]&&c>=r[a].size;)c-=r[a].size,a++;let u=r[a];if(u){let f=u.size;if(c+n<=f)s=await Xa(u,c,n);else{let h=f-c;s=new Uint8Array(n);let A=await Xa(u,c,h);s.set(A,0);let g=await o.readUint8Array(t+h,n-h,i);s.set(g,h),A.length+g.length<n&&(s=s.subarray(0,A.length+g.length))}}else s=new Uint8Array;return o.lastDiskNumber=Math.max(a,o.lastDiskNumber),s}},h4=class extends JS{constructor(t,n=4294967295){super();let i=this;Object.assign(i,{diskNumber:0,diskOffset:0,size:0,maxSize:n,availableSize:n});let o,r,s,a=new WritableStream({async write(f){let{availableSize:h}=i;if(s)f.length>=h?(await c(f.subarray(0,h)),await u(),i.diskOffset+=o.size,i.diskNumber++,s=null,await this.write(f.subarray(h))):await c(f);else{let{value:A,done:g}=await t.next();if(g&&!A)throw new Error(lut);o=A,o.size=0,o.maxSize&&(i.maxSize=o.maxSize),i.availableSize=i.maxSize,await TA(o),r=A.writable,s=r.getWriter(),await this.write(f)}},async close(){await s.ready,await u()}});Object.defineProperty(i,P7,{get(){return a}});async function c(f){let h=f.length;h&&(await s.ready,await s.write(f),o.size+=h,i.size+=h,i.availableSize-=h)}async function u(){await s.close()}}},yI=class{constructor(t){return Array.isArray(t)&&(t=new v7(t)),t instanceof ReadableStream&&(t={readable:t}),t}},ZS=class{constructor(t){return t.writable===ii&&typeof t.next==kg&&(t=new h4(t)),t instanceof WritableStream&&(t={writable:t}),t.size===ii&&(t.size=0),t instanceof h4||Object.assign(t,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),t}};async function TA(e,t){if(e.init&&!e.initialized)await e.init(t);else return Promise.resolve()}function Xa(e,t,n,i){return e.readUint8Array(t,n,i)}var DCe="\0\u263A\u263B\u2665\u2666\u2663\u2660\u2022\u25D8\u25CB\u25D9\u2642\u2640\u266A\u266B\u263C\u25BA\u25C4\u2195\u203C\xB6\xA7\u25AC\u21A8\u2191\u2193\u2192\u2190\u221F\u2194\u25B2\u25BC !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u2302\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0 ".split(""),mut=DCe.length==256;function vCe(e){if(mut){let t="";for(let n=0;n<e.length;n++)t+=DCe[e[n]];return t}else return new TextDecoder().decode(e)}function n2(e,t){return t&&t.trim().toLowerCase()=="cp437"?vCe(e):new TextDecoder(t).decode(e)}var R7="filename",M7="rawFilename",i2="comment",N7="rawComment",o2="uncompressedSize",L7="compressedSize",O7="offset",m4="diskNumberStart",$S="lastModDate",A4="rawLastModDate",r2="lastAccessDate",PCe="rawLastAccessDate",s2="creationDate",RCe="rawCreationDate",F7="internalFileAttribute",Q7="internalFileAttributes",k7="externalFileAttribute",U7="externalFileAttributes",G7="msDosCompatible",p4="zip64",z7="encrypted",V7="version",H7="versionMadeBy",W7="zipCrypto",a2="directory",j7="executable",Y7="compressionMethod",q7="signature",K7="extraField",Aut=[R7,M7,L7,o2,$S,A4,i2,N7,r2,s2,O7,m4,m4,F7,Q7,k7,U7,G7,p4,z7,V7,H7,W7,a2,j7,Y7,q7,K7,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"],oC=class{constructor(t){Aut.forEach(n=>this[n]=t[n])}};var MCe="filenameEncoding",NCe="commentEncoding",LCe="decodeText",OCe="extractPrependedData",FCe="extractAppendedData",g4="password",_4="rawPassword",y4="passThrough",C4="signal",QCe="checkPasswordOnly",kCe="checkOverlappingEntryOnly",UCe="checkOverlappingEntry",GCe="checkSignature",E4="useWebWorkers",I4="useCompressionStream",zCe="transferStreams",x4="preventClose",VCe="encryptionStrength",HCe="extendedTimestamp",WCe="keepOrder",jCe="level",YCe="bufferedWrite",qCe="dataDescriptorSignature",KCe="useUnicodeFileNames",XCe="dataDescriptor",X7="supportZip64SplitFile",JCe="encodeText",J7="offset",Z7="usdz";var $7="File format is not recognized",Cut="End of central directory not found",Eut="End of Zip64 central directory locator not found",Iut="Central directory header not found",xut="Local file header not found",but="Zip64 extra field not found",Tut="File contains encrypted entry",Sut="Encryption method not supported",ZCe="Compression method not supported",$Ce="Split zip file",wut="Overlapping entry found",eEe="utf-8",tEe="cp437",But=[[o2,4294967295],[L7,4294967295],[O7,4294967295],[m4,65535]],Dut={65535:{getValue:Rr,bytes:4},4294967295:{getValue:tw,bytes:8}},iw=class{constructor(t,n={}){Object.assign(this,{reader:new yI(t),options:n,config:jF(),readRanges:[]})}async*getEntriesGenerator(t={}){let n=this,{reader:i}=n,{config:o}=n;if(await TA(i),(i.size===ii||!i.readUint8Array)&&(i=new zg(await new Response(i.readable).blob()),await TA(i)),i.size<22)throw new Error($7);i.chunkSize=q8(o);let r=await Lut(i,101010256,i.size,22,65535*16);if(!r){let L=await Xa(i,0,4),p=Yr(L);throw Rr(p)==134695760?new Error($Ce):new Error(Cut)}let s=Yr(r),a=Rr(s,12),c=Rr(s,16),u=r.offset,f=Ja(s,20),h=u+22+f,A=Ja(s,4),g=i.lastDiskNumber||0,m=Ja(s,6),_=Ja(s,8),y=0,C=0;if(c==4294967295||a==4294967295||_==65535||m==65535){let L=await Xa(i,r.offset-20,20),p=Yr(L);if(Rr(p,0)==117853008){c=tw(p,8);let x=await Xa(i,c,56,-1),T=Yr(x),w=r.offset-20-56;if(Rr(T,0)!=101075792&&c!=w){let R=c;c=w,c>R&&(y=c-R),x=await Xa(i,c,56,-1),T=Yr(x)}if(Rr(T,0)!=101075792)throw new Error(Eut);A==65535&&(A=Rr(T,16)),m==65535&&(m=Rr(T,20)),_==65535&&(_=tw(T,32)),a==4294967295&&(a=tw(T,40)),c-=a}}if(c>=i.size&&(y=i.size-c-a-22,c=i.size-a-22),g!=A)throw new Error($Ce);if(c<0)throw new Error($7);let E=0,I=await Xa(i,c,a,m),b=Yr(I);if(a){let L=r.offset-a;if(Rr(b,E)!=33639248&&c!=L){let p=c;c=L,c>p&&(y+=c-p),I=await Xa(i,c,a,m),b=Yr(I)}}let S=r.offset-c-(i.lastDiskOffset||0);if(a!=S&&S>=0&&(a=S,I=await Xa(i,c,a,m),b=Yr(I)),c<0||c>=i.size)throw new Error($7);let B=_c(n,t,MCe),v=_c(n,t,NCe);for(let L=0;L<_;L++){let p=new tX(i,o,n.options);if(Rr(b,E)!=33639248)throw new Error(Iut);iEe(p,b,E+6);let x=!!p.bitFlag.languageEncodingFlag,T=E+46,w=T+p.filenameLength,R=w+p.extraFieldLength,O=Ja(b,E+4),k=O>>8==0,Q=O>>8==3,z=I.subarray(T,w),F=Ja(b,E+32),H=R+F,W=I.subarray(R,H),Z=x,Y=x,$=Rr(b,E+38),X=k&&(ew(b,E+38)&16)==16||Q&&($>>16&61440)==16384||z.length&&z[z.length-1]=="/".charCodeAt(0),he=Q&&($>>16&73)!=0,ge=Rr(b,E+42)+y;Object.assign(p,{versionMadeBy:O,msDosCompatible:k,compressedSize:0,uncompressedSize:0,commentLength:F,directory:X,offset:ge,diskNumberStart:Ja(b,E+34),internalFileAttributes:Ja(b,E+36),externalFileAttributes:$,rawFilename:z,filenameUTF8:Z,commentUTF8:Y,rawExtraField:I.subarray(w,R),executable:he}),p.internalFileAttribute=p.internalFileAttributes,p.externalFileAttribute=p.externalFileAttributes;let fe=_c(n,t,LCe)||n2,ye=Z?eEe:B||tEe,xe=Y?eEe:v||tEe,ve=fe(z,ye);ve===ii&&(ve=n2(z,ye));let Te=fe(W,xe);Te===ii&&(Te=n2(W,xe)),Object.assign(p,{rawComment:W,filename:ve,comment:Te,directory:X||ve.endsWith("/")}),C=Math.max(ge,C),oEe(p,p,b,E+6),p.zipCrypto=p.encrypted&&!p.extraFieldAES;let ke=new oC(p);ke.getData=(Ke,tt)=>p.getData(Ke,ke,n.readRanges,tt),ke.arrayBuffer=async Ke=>{let tt=new null,[en]=await Promise.all([new Response(tt.readable).arrayBuffer(),p.getData(tt,ke,n.readRanges,Ke)]);return en},E=H;let{onprogress:Ge}=t;if(Ge)try{await Ge(L+1,_,new oC(p))}catch{}yield ke}let P=_c(n,t,OCe),M=_c(n,t,FCe);return P&&(n.prependedData=C>0?await Xa(i,0,C):new Uint8Array),n.comment=f?await Xa(i,u+22,f):new Uint8Array,M&&(n.appendedData=h<i.size?await Xa(i,h,i.size-h):new Uint8Array),!0}async getEntries(t={}){let n=[];for await(let i of this.getEntriesGenerator(t))n.push(i);return n}async close(){}};var tX=class{constructor(t,n,i){Object.assign(this,{reader:t,config:n,options:i})}async getData(t,n,i,o={}){let r=this,{reader:s,offset:a,diskNumberStart:c,extraFieldAES:u,extraFieldZip64:f,compressionMethod:h,config:A,bitFlag:g,signature:m,rawLastModDate:_,uncompressedSize:y,compressedSize:C}=r,{dataDescriptor:E}=g,I=n.localDirectory={},b=await Xa(s,a,30,c),S=Yr(b),B=_c(r,o,g4),v=_c(r,o,_4),P=_c(r,o,y4);if(B=B&&B.length&&B,v=v&&v.length&&v,u&&u.originalCompressionMethod!=99)throw new Error(ZCe);if(h!=0&&h!=8&&!P)throw new Error(ZCe);if(Rr(S,0)!=67324752)throw new Error(xut);iEe(I,S,4);let{extraFieldLength:M,filenameLength:L,lastAccessDate:p,creationDate:x}=I;I.rawExtraField=M?await Xa(s,a+30+L,M,c):new Uint8Array,oEe(r,I,S,4,!0),Object.assign(n,{lastAccessDate:p,creationDate:x});let T=r.encrypted&&I.encrypted&&!P,w=T&&!u;if(P||(n.zipCrypto=w),T){if(!w&&u.strength===ii)throw new Error(Sut);if(!B&&!v)throw new Error(Tut)}let R=a+30+L+M,O=C,k=s.readable;Object.assign(k,{diskNumberStart:c,offset:R,size:O});let Q=_c(r,o,C4),z=_c(r,o,QCe),F=_c(r,o,UCe),H=_c(r,o,kCe);H&&(F=!0);let{onstart:W,onprogress:Z,onend:Y}=o,$={options:{codecType:s4,password:B,rawPassword:v,zipCrypto:w,encryptionStrength:u&&u.strength,signed:_c(r,o,GCe)&&!P,passwordVerification:w&&(E?_>>>8&255:m>>>24&255),outputSize:y,signature:m,compressed:h!=0&&!P,encrypted:r.encrypted&&!P,useWebWorkers:_c(r,o,E4),useCompressionStream:_c(r,o,I4),transferStreams:_c(r,o,zCe),checkPasswordOnly:z},config:A,streamOptions:{signal:Q,size:O,onstart:W,onprogress:Z,onend:Y}};F&&await Nut({reader:s,fileEntry:n,offset:a,diskNumberStart:c,signature:m,compressedSize:C,uncompressedSize:y,dataOffset:R,dataDescriptor:E||I.bitFlag.dataDescriptor,extraFieldZip64:f||I.extraFieldZip64,readRanges:i});let X;try{if(!H){z&&(t=new WritableStream),t=new ZS(t),await TA(t,P?C:y),{writable:X}=t;let{outputSize:he}=await c4({readable:k,writable:X},$);if(t.size+=he,he!=(P?C:y))throw new Error(e2)}}catch(he){if(he.outputSize!==ii&&(t.size+=he.outputSize),!z||he.message!=Gg)throw he}finally{!_c(r,o,x4)&&X&&!X.locked&&await X.getWriter().close()}return z||H?ii:t.getData?t.getData():X}};function iEe(e,t,n){let i=e.rawBitFlag=Ja(t,n+2),o=(i&1)==1,r=Rr(t,n+6);Object.assign(e,{encrypted:o,version:Ja(t,n),bitFlag:{level:(i&6)>>1,dataDescriptor:(i&8)==8,languageEncodingFlag:(i&2048)==2048},rawLastModDate:r,lastModDate:Out(r),filenameLength:Ja(t,n+22),extraFieldLength:Ja(t,n+24)})}function oEe(e,t,n,i,o){let{rawExtraField:r}=t,s=t.extraField=new Map,a=Yr(new Uint8Array(r)),c=0;try{for(;c<r.length;){let C=Ja(a,c),E=Ja(a,c+2);s.set(C,{type:C,data:r.slice(c+4,c+4+E)}),c+=4+E}}catch{}let u=Ja(n,i+4);Object.assign(t,{signature:Rr(n,i+10),compressedSize:Rr(n,i+14),uncompressedSize:Rr(n,i+18)});let f=s.get(1);f&&(vut(f,t),t.extraFieldZip64=f);let h=s.get(28789);h&&(nEe(h,R7,M7,t,e),t.extraFieldUnicodePath=h);let A=s.get(25461);A&&(nEe(A,i2,N7,t,e),t.extraFieldUnicodeComment=A);let g=s.get(39169);g?(Put(g,t,u),t.extraFieldAES=g):t.compressionMethod=u;let m=s.get(10);m&&(Rut(m,t),t.extraFieldNTFS=m);let _=s.get(21589);_&&(Mut(_,t,o),t.extraFieldExtendedTimestamp=_);let y=s.get(6534);y&&(t.extraFieldUSDZ=y)}function vut(e,t){t.zip64=!0;let n=Yr(e.data),i=But.filter(([o,r])=>t[o]==r);for(let o=0,r=0;o<i.length;o++){let[s,a]=i[o];if(t[s]==a){let c=Dut[a];t[s]=e[s]=c.getValue(n,r),r+=c.bytes}else if(e[s])throw new Error(but)}}function nEe(e,t,n,i,o){let r=Yr(e.data),s=new Ug;s.append(o[n]);let a=Yr(new Uint8Array(4));a.setUint32(0,s.get(),!0);let c=Rr(r,1);Object.assign(e,{version:ew(r,0),[t]:n2(e.data.subarray(5)),valid:!o.bitFlag.languageEncodingFlag&&c==Rr(a,0)}),e.valid&&(i[t]=e[t],i[t+"UTF8"]=!0)}function Put(e,t,n){let i=Yr(e.data),o=ew(i,4);Object.assign(e,{vendorVersion:ew(i,0),vendorId:ew(i,2),strength:o,originalCompressionMethod:n,compressionMethod:Ja(i,5)}),t.compressionMethod=e.compressionMethod}function Rut(e,t){let n=Yr(e.data),i=4,o;try{for(;i<e.data.length&&!o;){let r=Ja(n,i),s=Ja(n,i+2);r==1&&(o=e.data.slice(i+4,i+4+s)),i+=4+s}}catch{}try{if(o&&o.length==24){let r=Yr(o),s=r.getBigUint64(0,!0),a=r.getBigUint64(8,!0),c=r.getBigUint64(16,!0);Object.assign(e,{rawLastModDate:s,rawLastAccessDate:a,rawCreationDate:c});let u=eX(s),f=eX(a),h=eX(c),A={lastModDate:u,lastAccessDate:f,creationDate:h};Object.assign(e,A),Object.assign(t,A)}}catch{}}function Mut(e,t,n){let i=Yr(e.data),o=ew(i,0),r=[],s=[];n?((o&1)==1&&(r.push($S),s.push(A4)),(o&2)==2&&(r.push(r2),s.push(PCe)),(o&4)==4&&(r.push(s2),s.push(RCe))):e.data.length>=5&&(r.push($S),s.push(A4));let a=1;r.forEach((c,u)=>{if(e.data.length>=a+4){let f=Rr(i,a);t[c]=e[c]=new Date(f*1e3);let h=s[u];e[h]=f}a+=4})}async function Nut({reader:e,fileEntry:t,offset:n,diskNumberStart:i,signature:o,compressedSize:r,uncompressedSize:s,dataOffset:a,dataDescriptor:c,extraFieldZip64:u,readRanges:f}){let h=0;if(i)for(let m=0;m<i;m++){let _=e.readers[m];h+=_.size}let A=0;if(c&&(u?A=20:A=12),A){let m=await Xa(e,a+r,A+4,i);if(Rr(Yr(m),0)==134695760){let y=Rr(Yr(m),4),C,E;u?(C=tw(Yr(m),8),E=tw(Yr(m),16)):(C=Rr(Yr(m),8),E=Rr(Yr(m),12)),(t.encrypted&&!t.zipCrypto||y==o)&&C==r&&E==s&&(A+=4)}}let g={start:h+n,end:h+a+r+A,fileEntry:t};for(let m of f)if(m.fileEntry!=t&&g.start>=m.start&&g.start<m.end){let _=new Error(wut);throw _.overlappingEntry=m.fileEntry,_}f.push(g)}async function Lut(e,t,n,i,o){let r=new Uint8Array(4),s=Yr(r);Fut(s,0,t);let a=i+o;return await c(i)||await c(Math.min(a,n));async function c(u){let f=n-u,h=await Xa(e,f,u);for(let A=h.length-i;A>=0;A--)if(h[A]==r[0]&&h[A+1]==r[1]&&h[A+2]==r[2]&&h[A+3]==r[3])return{offset:f+A,buffer:h.slice(A,A+i).buffer}}}function _c(e,t,n){return t[n]===ii?e.options[n]:t[n]}function Out(e){let t=(e&4294901760)>>16,n=e&65535;try{return new Date(1980+((t&65024)>>9),((t&480)>>5)-1,t&31,(n&63488)>>11,(n&2016)>>5,(n&31)*2,0)}catch{}}function eX(e){return new Date(Number(e/BigInt(1e4)-BigInt(116444736e5)))}function ew(e,t){return e.getUint8(t)}function Ja(e,t){return e.getUint16(t,!0)}function Rr(e,t){return e.getUint32(t,!0)}function tw(e,t){return Number(e.getBigUint64(t,!0))}function Fut(e,t,n){e.setUint32(t,n,!0)}function Yr(e){return new DataView(e.buffer)}var Hut="File already exists",Wut="Zip file comment exceeds 64KB",jut="File entry comment exceeds 64KB",Yut="File entry name exceeds 64KB",aEe="Version exceeds 65535",qut="The strength must equal 1, 2, or 3",Kut="Extra field type exceeds 65535",Xut="Extra field data exceeds 64KB",EX="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",Jut="Undefined uncompressed size",Zut="Zip file not empty",cEe=new Uint8Array([7,0,2,0,65,69,3,0,0]),_X=0,lEe=[],N4=class{constructor(t,n={}){t=new ZS(t);let i=t.availableSize!==ii&&t.availableSize>0&&t.availableSize!==1/0&&t.maxSize!==ii&&t.maxSize>0&&t.maxSize!==1/0;Object.assign(this,{writer:t,addSplitZipSignature:i,options:n,config:jF(),files:new Map,filenames:new Set,offset:n[J7]===ii?t.size||t.writable.size||0:n[J7],pendingEntriesSize:0,pendingAddFileCalls:new Set,bufferedWrites:0})}async prependZip(t){if(this.filenames.size)throw new Error(Zut);t=new yI(t);let n=new iw(t.readable),i=await n.getEntries();await n.close(),await t.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=t.size,this.filenames=new Set(i.map(o=>o.filename)),this.files=new Map(i.map(o=>{let{version:r,compressionMethod:s,lastModDate:a,lastAccessDate:c,creationDate:u,rawFilename:f,bitFlag:h,encrypted:A,uncompressedSize:g,compressedSize:m,diskOffset:_,diskNumber:y,zip64:C}=o,{rawExtraFieldZip64:E,rawExtraFieldAES:I,rawExtraFieldExtendedTimestamp:b,rawExtraFieldNTFS:S,rawExtraField:B}=o,{level:v,languageEncodingFlag:P,dataDescriptor:M}=h;E=E||new Uint8Array,I=I||new Uint8Array,b=b||new Uint8Array,S=S||new Uint8Array,B=B||new Uint8Array;let L=qi(E,I,b,S,B),p=C&&g>4294967295,x=C&&m>4294967295,{headerArray:T,headerView:w}=dEe({version:r,bitFlag:hEe(v,P,M,A,s),compressionMethod:s,uncompressedSize:g,compressedSize:m,lastModDate:a,rawFilename:f,zip64CompressedSize:x,zip64UncompressedSize:p,extraFieldLength:L});return Object.assign(o,{zip64UncompressedSize:p,zip64CompressedSize:x,zip64Offset:C&&this.offset-_>4294967295,zip64DiskNumberStart:C&&y>65535,rawExtraFieldZip64:E,rawExtraFieldAES:I,rawExtraFieldExtendedTimestamp:b,rawExtraFieldNTFS:S,rawExtraField:B,extendedTimestamp:b.length>0||S.length>0,extraFieldExtendedTimestampFlag:1+(c?2:0)+(u?4:0),headerArray:T,headerView:w}),[o.filename,o]}))}async add(t="",n,i={}){let o=this,{pendingAddFileCalls:r,config:s}=o;_X<s.maxWorkers?_X++:await new Promise(c=>lEe.push(c));let a;try{if(t=t.trim(),o.filenames.has(t))throw new Error(Hut);return o.filenames.add(t),a=$ut(o,t,n,i),r.add(a),await a}catch(c){throw o.filenames.delete(t),c}finally{r.delete(a);let c=lEe.shift();c?c():_X--}}remove(t){let{filenames:n,files:i}=this;if(typeof t=="string"&&(t=i.get(t)),t&&t.filename!==ii){let{filename:o}=t;if(n.has(o)&&i.has(o))return n.delete(o),i.delete(o),!0}return!1}async close(t=new Uint8Array,n={}){let i=this,{pendingAddFileCalls:o,writer:r}=this,{writable:s}=r;for(;o.size;)await Promise.allSettled(Array.from(o));return await aft(this,t,n),ao(i,n,x4)||await s.getWriter().close(),r.getData?r.getData():s}};async function $ut(e,t,n,i){t=t.trim();let o=ao(e,i,G7),r=ao(e,i,H7,o?20:768),s=ao(e,i,j7);if(r>65535)throw new Error(aEe);let a=ao(e,i,U7,0);a===0&&(a=ao(e,i,k7,0)),!i[a2]&&t.endsWith("/")&&(i[a2]=!0),ao(e,i,a2)?(t.endsWith("/")||(t+="/"),a===0&&(a=16,o||(a|=16877<<16))):!o&&a===0&&(s?a=493<<16:a=420<<16);let u=ao(e,i,JCe,YS),f=u(t);if(f===ii&&(f=YS(t)),qi(f)>65535)throw new Error(Yut);let h=i[i2]||"",A=u(h);if(A===ii&&(A=YS(h)),qi(A)>65535)throw new Error(jut);let g=ao(e,i,V7,20);if(g>65535)throw new Error(aEe);let m=ao(e,i,$S,new Date),_=ao(e,i,r2),y=ao(e,i,s2),C=ao(e,i,Q7,0);C===0&&(C=ao(e,i,F7,0));let E=ao(e,i,y4),I,b;E||(I=ao(e,i,g4),b=ao(e,i,_4));let S=ao(e,i,VCe,3),B=ao(e,i,W7),v=ao(e,i,HCe,!0),P=ao(e,i,WCe,!0),M=ao(e,i,jCe),L=ao(e,i,E4),p=ao(e,i,YCe),x=ao(e,i,qCe,!1),T=ao(e,i,C4),w=ao(e,i,KCe,!0),R=ao(e,i,I4),O=ao(e,i,Y7),k=ao(e,i,XCe);p&&k===ii&&(k=!1),(k===ii||B)&&(k=!0);let Q=ao(e,i,p4);if(!B&&(I!==ii||b!==ii)&&!(S>=1&&S<=3))throw new Error(qut);let z=new Uint8Array,F=i[K7];if(F){let en=0,it=0;F.forEach(nn=>en+=4+qi(nn)),z=new Uint8Array(en),F.forEach((nn,qt)=>{if(qt>65535)throw new Error(Kut);if(qi(nn)>65535)throw new Error(Xut);zs(z,new Uint16Array([qt]),it),zs(z,new Uint16Array([qi(nn)]),it+2),zs(z,nn,it+4),it+=4+qi(nn)})}let H=0,W=0,Z=0;if(E&&(Z=i[o2],Z===ii))throw new Error(Jut);let Y=Q===!0;n&&(n=new yI(n),await TA(n),E?(i.uncompressedSize=Z,H=fEe(Z)):n.size===ii?(k=!0,(Q||Q===ii)&&(Q=!0,Z=H=4294967296)):(i.uncompressedSize=Z=n.size,H=fEe(Z)));let{diskOffset:$,diskNumber:X,maxSize:he}=e.writer,ge=Y||Z>4294967295,fe=Y||H>4294967295,ye=Y||e.offset+e.pendingEntriesSize-$>4294967295,ve=ao(e,i,X7,!0)&&Y||X+Math.ceil(e.pendingEntriesSize/he)>65535;if(ye||ge||fe||ve){if(Q===!1||!P)throw new Error(EX);Q=!0}Q=Q||!1;let Te=ao(e,i,z7);i=Object.assign({},i,{rawFilename:f,rawComment:A,version:g,versionMadeBy:r,lastModDate:m,lastAccessDate:_,creationDate:y,rawExtraField:z,zip64:Q,zip64UncompressedSize:ge,zip64CompressedSize:fe,zip64Offset:ye,zip64DiskNumberStart:ve,password:I,rawPassword:b,level:!R&&e.config.CompressionStream===ii&&e.config.CompressionStreamNative===ii?0:M,useWebWorkers:L,encryptionStrength:S,extendedTimestamp:v,zipCrypto:B,bufferedWrite:p,keepOrder:P,useUnicodeFileNames:w,dataDescriptor:k,dataDescriptorSignature:x,signal:T,msDosCompatible:o,internalFileAttribute:C,internalFileAttributes:C,externalFileAttribute:a,externalFileAttributes:a,useCompressionStream:R,passThrough:E,encrypted:!!(I&&qi(I)||b&&qi(b))||E&&Te,signature:i[q7],compressionMethod:O,uncompressedSize:Z,offset:e.offset-$,diskNumberStart:X});let ke=nft(i),Ge=oft(i),Ke=qi(ke.localHeaderArray,Ge.dataDescriptorArray);W=Ke+H,e.options[Z7]&&(W+=W+64),e.pendingEntriesSize+=W;let tt;try{tt=await eft(e,t,n,{headerInfo:ke,dataDescriptorInfo:Ge,metadataSize:Ke},i)}finally{e.pendingEntriesSize-=W}return Object.assign(tt,{name:t,comment:h,extraField:F}),new oC(tt)}async function eft(e,t,n,i,o){let{files:r,writer:s}=e,{keepOrder:a,dataDescriptor:c,signal:u}=o,{headerInfo:f}=i,h=e.options[Z7],A=Array.from(r.values()).pop(),g={},m,_,y,C,E,I,b;r.set(t,g);try{let P;a&&(P=A&&A.lock,S()),(o.bufferedWrite||e.writerLocked||e.bufferedWrites&&a||!c)&&!h?(I=new null,I.size=0,m=!0,e.bufferedWrites++,await TA(s)):(I=s,await B()),await TA(I);let{writable:M,diskOffset:L}=s;if(e.addSplitZipSignature){delete e.addSplitZipSignature;let R=new Uint8Array(4),O=yc(R);Yi(O,0,134695760),await Vg(s,R),e.offset+=4}h&&ift(i,e.offset-L);let{localHeaderView:p,localHeaderArray:x}=f;m||(await P,await v(M));let{diskNumber:T}=s;E=!0,g.diskNumberStart=T,m?b=new Response(I.readable).blob():await Vg(I,x),g=await tft(n,I,g,i,e.config,o);let{zip64:w}=g;if(E=!1,r.set(t,g),g.filename=t,m){let[R]=await Promise.all([b,I.writable.getWriter().close(),P]);await B(),C=!0,g.diskNumberStart=s.diskNumber,g.offset=e.offset-s.diskOffset,w&&uEe(g),sft(g,p,o),await v(M),await Vg(s,x),await R.stream().pipeTo(M,{preventClose:!0,preventAbort:!0,signal:u}),s.size+=I.size,C=!1}else g.offset=e.offset-L,w&&uEe(g);if(g.offset>4294967295&&!w)throw new Error(EX);return e.offset+=g.size,g}catch(P){if(m&&C||!m&&E){if(e.hasCorruptedEntries=!0,P)try{P.corruptedEntry=!0}catch{}m?e.offset+=I.size:e.offset=I.size}throw r.delete(t),P}finally{m&&e.bufferedWrites--,y&&y(),_&&_()}function S(){g.lock=new Promise(P=>y=P)}async function B(){e.writerLocked=!0;let{lockWriter:P}=e;e.lockWriter=new Promise(M=>_=()=>{e.writerLocked=!1,M()}),await P}async function v(P){qi(f.localHeaderArray)>s.availableSize&&(s.availableSize=0,await Vg(P,new Uint8Array))}}async function tft(e,t,{diskNumberStart:n,lock:i},o,r,s){let{headerInfo:a,dataDescriptorInfo:c,metadataSize:u}=o,{headerArray:f,headerView:h,lastModDate:A,rawLastModDate:g,encrypted:m,compressed:_,version:y,compressionMethod:C,rawExtraFieldZip64:E,localExtraFieldZip64Length:I,rawExtraFieldExtendedTimestamp:b,extraFieldExtendedTimestampFlag:S,rawExtraFieldNTFS:B,rawExtraFieldAES:v}=a,{dataDescriptorArray:P}=c,{rawFilename:M,lastAccessDate:L,creationDate:p,password:x,rawPassword:T,level:w,zip64:R,zip64UncompressedSize:O,zip64CompressedSize:k,zip64Offset:Q,zip64DiskNumberStart:z,zipCrypto:F,dataDescriptor:H,directory:W,executable:Z,versionMadeBy:Y,rawComment:$,rawExtraField:X,useWebWorkers:he,onstart:ge,onprogress:fe,onend:ye,signal:xe,encryptionStrength:ve,extendedTimestamp:Te,msDosCompatible:ke,internalFileAttributes:Ge,externalFileAttributes:Ke,useCompressionStream:tt,passThrough:en}=s,it={lock:i,versionMadeBy:Y,zip64:R,directory:!!W,executable:!!Z,filenameUTF8:!0,rawFilename:M,commentUTF8:!0,rawComment:$,rawExtraFieldZip64:E,localExtraFieldZip64Length:I,rawExtraFieldExtendedTimestamp:b,rawExtraFieldNTFS:B,rawExtraFieldAES:v,rawExtraField:X,extendedTimestamp:Te,msDosCompatible:ke,internalFileAttributes:Ge,externalFileAttributes:Ke,diskNumberStart:n},{signature:nn,uncompressedSize:qt}=s,Rt=0;en||(qt=0);let{writable:Si}=t;if(e){e.chunkSize=q8(r);let gi=e.readable,Ft=e.size,St={options:{codecType:r4,level:w,rawPassword:T,password:x,encryptionStrength:ve,zipCrypto:m&&F,passwordVerification:m&&F&&g>>8&255,signed:!en,compressed:_&&!en,encrypted:m&&!en,useWebWorkers:he,useCompressionStream:tt,transferStreams:!1},config:r,streamOptions:{signal:xe,size:Ft,onstart:ge,onprogress:fe,onend:ye}};try{let oi=await c4({readable:gi,writable:Si},St);Rt=oi.outputSize,t.size+=Rt,en||(qt=oi.inputSize,nn=oi.signature)}catch(oi){throw oi.outputSize!==ii&&(t.size+=oi.outputSize),oi}}return rft({signature:nn,compressedSize:Rt,uncompressedSize:qt,headerInfo:a,dataDescriptorInfo:c},s),H&&await Vg(t,P),Object.assign(it,{uncompressedSize:qt,compressedSize:Rt,lastModDate:A,rawLastModDate:g,creationDate:p,lastAccessDate:L,encrypted:m,zipCrypto:F,size:u+Rt,compressionMethod:C,version:y,headerArray:f,headerView:h,signature:nn,extraFieldExtendedTimestampFlag:S,zip64UncompressedSize:O,zip64CompressedSize:k,zip64Offset:Q,zip64DiskNumberStart:z}),it}function nft(e){let{rawFilename:t,lastModDate:n,lastAccessDate:i,creationDate:o,level:r,zip64:s,zipCrypto:a,useUnicodeFileNames:c,dataDescriptor:u,directory:f,rawExtraField:h,encryptionStrength:A,extendedTimestamp:g,passThrough:m,encrypted:_,zip64UncompressedSize:y,zip64CompressedSize:C,zip64Offset:E,zip64DiskNumberStart:I,uncompressedSize:b,offset:S,diskNumberStart:B}=e,{version:v,compressionMethod:P}=e,M=!f&&(r>0||r===ii&&P!==0),L,p=m||!M,x=s&&(e.bufferedWrite||!y&&!C||p);if(s){let $=4;y&&($+=8),C&&($+=8),E&&($+=8),I&&($+=4),L=new Uint8Array($);let X=yc(L);if(yo(X,0,1),yo(X,2,qi(L)-4),x){let he=yc(L),ge=4;y&&(na(he,ge,BigInt(b)),ge+=8),C&&p&&(na(he,ge,BigInt(b)),ge+=8),E&&(na(he,ge,BigInt(S)),ge+=8),I&&(Yi(he,ge,B),ge+=4)}}else L=new Uint8Array;let T;if(_&&!a){T=new Uint8Array(qi(cEe)+2);let $=yc(T);yo($,0,39169),zs(T,cEe,2),CX($,8,A)}else T=new Uint8Array;let w,R,O;if(g){R=new Uint8Array(9+(i?4:0)+(o?4:0));let $=yc(R);yo($,0,21589),yo($,2,qi(R)-4),O=1+(i?2:0)+(o?4:0),CX($,4,O);let X=5;Yi($,X,Math.floor(n.getTime()/1e3)),X+=4,i&&(Yi($,X,Math.floor(i.getTime()/1e3)),X+=4),o&&Yi($,X,Math.floor(o.getTime()/1e3));try{w=new Uint8Array(36);let he=yc(w),ge=yX(n);yo(he,0,10),yo(he,2,32),yo(he,8,1),yo(he,10,24),na(he,12,ge),na(he,20,yX(i)||ge),na(he,28,yX(o)||ge)}catch{w=new Uint8Array}}else w=R=new Uint8Array;P===ii&&(P=M?8:0),s&&(v=v>45?v:45),_&&!a&&(v=v>51?v:51,T[9]=P,P=99);let k=x?qi(L):0,Q=k+qi(T,R,w,h),{headerArray:z,headerView:F,rawLastModDate:H}=dEe({version:v,bitFlag:hEe(r,c,u,_,P),compressionMethod:P,uncompressedSize:b,lastModDate:n<_7?_7:n>g7?g7:n,rawFilename:t,zip64CompressedSize:C,zip64UncompressedSize:y,extraFieldLength:Q}),W=30,Z=new Uint8Array(W+qi(t)+Q),Y=yc(Z);return Yi(Y,0,67324752),zs(Z,z,4),zs(Z,t,W),W+=qi(t),x&&zs(Z,L,W),W+=k,zs(Z,T,W),W+=qi(T),zs(Z,R,W),W+=qi(R),zs(Z,w,W),W+=qi(w),zs(Z,h,W),u&&(Yi(Y,18,0),Yi(Y,22,0)),{localHeaderArray:Z,localHeaderView:Y,headerArray:z,headerView:F,lastModDate:n,rawLastModDate:H,encrypted:_,compressed:M,version:v,compressionMethod:P,extraFieldExtendedTimestampFlag:O,rawExtraFieldZip64:L,localExtraFieldZip64Length:k,rawExtraFieldExtendedTimestamp:R,rawExtraFieldNTFS:w,rawExtraFieldAES:T,extraFieldLength:Q}}function ift(e,t){let{headerInfo:n}=e,{localHeaderArray:i,extraFieldLength:o}=n,r=yc(i),s=64-(t+qi(i))%64;s<4&&(s+=64);let a=new Uint8Array(s),c=yc(a);yo(c,0,6534),yo(c,2,s-2);let u=i;n.localHeaderArray=i=new Uint8Array(qi(u)+s),zs(i,u),zs(i,a,qi(u)),r=yc(i),yo(r,28,o+s),e.metadataSize+=s}function oft({zip64:e,dataDescriptor:t,dataDescriptorSignature:n}){let i=new Uint8Array,o,r=0,s=e?20:12;return n&&(s+=4),t&&(i=new Uint8Array(s),o=yc(i),n&&(r=4,Yi(o,0,134695760))),{dataDescriptorArray:i,dataDescriptorView:o,dataDescriptorOffset:r}}function rft({signature:e,compressedSize:t,uncompressedSize:n,headerInfo:i,dataDescriptorInfo:o},{zip64:r,zipCrypto:s,dataDescriptor:a}){let{headerView:c,encrypted:u}=i,{dataDescriptorView:f,dataDescriptorOffset:h}=o;(!u||s)&&e!==ii&&(Yi(c,10,e),a&&Yi(f,h,e)),r?a&&(na(f,h+4,BigInt(t)),na(f,h+12,BigInt(n))):(Yi(c,14,t),Yi(c,18,n),a&&(Yi(f,h+4,t),Yi(f,h+8,n)))}function sft({rawFilename:e,encrypted:t,zip64:n,localExtraFieldZip64Length:i,signature:o,compressedSize:r,uncompressedSize:s,offset:a,diskNumberStart:c,zip64UncompressedSize:u,zip64CompressedSize:f,zip64Offset:h,zip64DiskNumberStart:A},g,{dataDescriptor:m}){if(m||(t||Yi(g,14,o),n||(Yi(g,18,r),Yi(g,22,s))),n&&i){let _=30+qi(e)+4;u&&(na(g,_,BigInt(s)),_+=8),f&&(na(g,_,BigInt(r)),_+=8),h&&(na(g,_,BigInt(a)),_+=8),A&&Yi(g,_,c)}}function uEe({compressedSize:e,uncompressedSize:t,offset:n,diskNumberStart:i,zip64UncompressedSize:o,zip64CompressedSize:r,zip64Offset:s,zip64DiskNumberStart:a,rawExtraFieldZip64:c}){let u=yc(c),f=4;o&&(na(u,f,BigInt(t)),f+=8),r&&(na(u,f,BigInt(e)),f+=8),s&&(na(u,f,BigInt(n)),f+=8),a&&Yi(u,f,i)}async function aft(e,t,n){let{files:i,writer:o}=e,{diskOffset:r}=o,{diskNumber:s}=o,a=0,c=0,u=e.offset-r,f=i.size;for(let[,b]of i){let{rawFilename:S,rawExtraFieldZip64:B,rawExtraFieldAES:v,rawComment:P,rawExtraFieldNTFS:M,rawExtraField:L,extendedTimestamp:p,extraFieldExtendedTimestampFlag:x,lastModDate:T}=b,w;if(p){w=new Uint8Array(9);let R=yc(w);yo(R,0,21589),yo(R,2,5),CX(R,4,x),Yi(R,5,Math.floor(T.getTime()/1e3))}else w=new Uint8Array;b.rawExtraFieldExtendedTimestamp=w,c+=46+qi(S,P,B,v,M,w,L)}let h=new Uint8Array(c),A=yc(h);await TA(o);let g=0;for(let[b,S]of Array.from(i.values()).entries()){let{offset:B,rawFilename:v,rawExtraFieldZip64:P,rawExtraFieldAES:M,rawExtraFieldExtendedTimestamp:L,rawExtraFieldNTFS:p,rawExtraField:x,rawComment:T,versionMadeBy:w,headerArray:R,headerView:O,zip64:k,zip64UncompressedSize:Q,zip64CompressedSize:z,zip64DiskNumberStart:F,zip64Offset:H,internalFileAttributes:W,externalFileAttributes:Z,diskNumberStart:Y,uncompressedSize:$,compressedSize:X}=S,he=qi(P,M,L,p,x);Yi(A,a,33639248),yo(A,a+4,w),Q||Yi(O,18,$),z||Yi(O,14,X),zs(h,R,a+6);let ge=a+30;if(yo(A,ge,he),ge+=2,yo(A,ge,qi(T)),ge+=2,yo(A,ge,k&&F?65535:Y),ge+=2,yo(A,ge,W),ge+=2,Z&&Yi(A,ge,Z),ge+=4,Yi(A,ge,k&&H?4294967295:B),ge+=4,zs(h,v,ge),ge+=qi(v),zs(h,P,ge),ge+=qi(P),zs(h,M,ge),ge+=qi(M),zs(h,L,ge),ge+=qi(L),zs(h,p,ge),ge+=qi(p),zs(h,x,ge),ge+=qi(x),zs(h,T,ge),a-g>o.availableSize&&(o.availableSize=0,await Vg(o,h.slice(g,a)),g=a),a=ge,n.onprogress)try{await n.onprogress(b+1,i.size,new oC(S))}catch{}}await Vg(o,g?h.slice(g):h);let m=o.diskNumber,{availableSize:_}=o;_<22&&m++;let y=ao(e,n,p4);if(u>4294967295||c>4294967295||f>65535||m>65535){if(y===!1)throw new Error(EX);y=!0}let C=new Uint8Array(y?98:22),E=yc(C);a=0,y&&(Yi(E,0,101075792),na(E,4,BigInt(44)),yo(E,12,45),yo(E,14,45),Yi(E,16,m),Yi(E,20,s),na(E,24,BigInt(f)),na(E,32,BigInt(f)),na(E,40,BigInt(c)),na(E,48,BigInt(u)),Yi(E,56,117853008),na(E,64,BigInt(u)+BigInt(c)),Yi(E,72,m+1),ao(e,n,X7,!0)&&(m=65535,s=65535),f=65535,u=4294967295,c=4294967295,a+=76),Yi(E,a,101010256),yo(E,a+4,m),yo(E,a+6,s),yo(E,a+8,f),yo(E,a+10,f),Yi(E,a+12,c),Yi(E,a+16,u);let I=qi(t);if(I)if(I<=65535)yo(E,a+20,I);else throw new Error(Wut);await Vg(o,C),I&&await Vg(o,t)}async function Vg(e,t){let{writable:n}=e,i=n.getWriter();try{await i.ready,e.size+=qi(t),await i.write(t)}finally{i.releaseLock()}}function yX(e){if(e)return(BigInt(e.getTime())+BigInt(116444736e5))*BigInt(1e4)}function ao(e,t,n,i){let o=t[n]===ii?e.options[n]:t[n];return o===ii?i:o}function fEe(e){return e+5*(Math.floor(e/16383)+1)}function CX(e,t,n){e.setUint8(t,n)}function yo(e,t,n){e.setUint16(t,n,!0)}function Yi(e,t,n){e.setUint32(t,n,!0)}function na(e,t,n){e.setBigUint64(t,n,!0)}function zs(e,t,n){e.set(t,n)}function yc(e){return new DataView(e.buffer)}function qi(...e){let t=0;return e.forEach(n=>n&&(t+=n.length)),t}function dEe({version:e,bitFlag:t,compressionMethod:n,uncompressedSize:i,compressedSize:o,lastModDate:r,rawFilename:s,zip64CompressedSize:a,zip64UncompressedSize:c,extraFieldLength:u}){let f=new Uint8Array(26),h=yc(f);yo(h,0,e),yo(h,2,t),yo(h,4,n);let A=new Uint32Array(1),g=yc(A);yo(g,0,(r.getHours()<<6|r.getMinutes())<<5|r.getSeconds()/2),yo(g,2,(r.getFullYear()-1980<<4|r.getMonth()+1)<<5|r.getDate());let m=A[0];return Yi(h,6,m),(a||o!==ii)&&Yi(h,14,a?4294967295:o),(c||i!==ii)&&Yi(h,18,c?4294967295:i),yo(h,22,qi(s)),yo(h,24,u),{headerArray:f,headerView:h,rawLastModDate:m}}function hEe(e,t,n,i,o){let r=0;return t&&(r=r|2048),n&&(r=r|8),(o==8||o==9)&&(e>=0&&e<=3&&(r=r|6),e>3&&e<=5&&(r=r|4),e==9&&(r=r|2)),i&&(r=r|1),r}jS({Deflate:Pye,Inflate:$ye});function cft(e){return typeof e=="string"&&(e=document.getElementById(e)),e}var kn=cft;function lft(e,t){this.position=e,this.headingPitchRange=t}var f2=lft;function L4(e,t){this.id=t,this.name=e,this.playlistIndex=0,this.playlist=[],this.tourStart=new _e,this.tourEnd=new _e,this.entryStart=new _e,this.entryEnd=new _e,this._activeEntries=[]}L4.prototype.addPlaylistEntry=function(e){this.playlist.push(e)};L4.prototype.play=function(e,t){this.tourStart.raiseEvent();let n=this;pEe.call(this,e,t,function(i){n.playlistIndex=0,i||AEe(n._activeEntries),n.tourEnd.raiseEvent(i)})};L4.prototype.stop=function(){AEe(this._activeEntries)};function AEe(e){for(let t=e.pop();t!==void 0;t=e.pop())t.stop()}function pEe(e,t,n){let i=this.playlist[this.playlistIndex];if(i){let o=uft.bind(this,e,t,n);if(this._activeEntries.push(i),this.entryStart.raiseEvent(i),i.blocking)i.play(o,e.scene.camera,t);else{let r=this;i.play(function(){r.entryEnd.raiseEvent(i);let s=r._activeEntries.indexOf(i);s>=0&&r._activeEntries.splice(s,1)}),o(e,t,n)}}else l(n)&&n(!1)}function uft(e,t,n,i){let o=this.playlist[this.playlistIndex];if(this.entryEnd.raiseEvent(o,i),i)n(i);else{let r=this._activeEntries.indexOf(o);r>=0&&this._activeEntries.splice(r,1),this.playlistIndex++,pEe.call(this,e,t,n)}}var d2=L4;var Ki=Object.freeze({Linear:Object.freeze({None:function(e){return e},In:function(e){return e},Out:function(e){return e},InOut:function(e){return e}}),Quadratic:Object.freeze({In:function(e){return e*e},Out:function(e){return e*(2-e)},InOut:function(e){return(e*=2)<1?.5*e*e:-.5*(--e*(e-2)-1)}}),Cubic:Object.freeze({In:function(e){return e*e*e},Out:function(e){return--e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e:.5*((e-=2)*e*e+2)}}),Quartic:Object.freeze({In:function(e){return e*e*e*e},Out:function(e){return 1- --e*e*e*e},InOut:function(e){return(e*=2)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2)}}),Quintic:Object.freeze({In:function(e){return e*e*e*e*e},Out:function(e){return--e*e*e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2)}}),Sinusoidal:Object.freeze({In:function(e){return 1-Math.sin((1-e)*Math.PI/2)},Out:function(e){return Math.sin(e*Math.PI/2)},InOut:function(e){return .5*(1-Math.sin(Math.PI*(.5-e)))}}),Exponential:Object.freeze({In:function(e){return e===0?0:Math.pow(1024,e-1)},Out:function(e){return e===1?1:1-Math.pow(2,-10*e)},InOut:function(e){return e===0?0:e===1?1:(e*=2)<1?.5*Math.pow(1024,e-1):.5*(-Math.pow(2,-10*(e-1))+2)}}),Circular:Object.freeze({In:function(e){return 1-Math.sqrt(1-e*e)},Out:function(e){return Math.sqrt(1- --e*e)},InOut:function(e){return(e*=2)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1)}}),Elastic:Object.freeze({In:function(e){return e===0?0:e===1?1:-Math.pow(2,10*(e-1))*Math.sin((e-1.1)*5*Math.PI)},Out:function(e){return e===0?0:e===1?1:Math.pow(2,-10*e)*Math.sin((e-.1)*5*Math.PI)+1},InOut:function(e){return e===0?0:e===1?1:(e*=2,e<1?-.5*Math.pow(2,10*(e-1))*Math.sin((e-1.1)*5*Math.PI):.5*Math.pow(2,-10*(e-1))*Math.sin((e-1.1)*5*Math.PI)+1)}}),Back:Object.freeze({In:function(e){var t=1.70158;return e===1?1:e*e*((t+1)*e-t)},Out:function(e){var t=1.70158;return e===0?0:--e*e*((t+1)*e+t)+1},InOut:function(e){var t=2.5949095;return(e*=2)<1?.5*(e*e*((t+1)*e-t)):.5*((e-=2)*e*((t+1)*e+t)+2)}}),Bounce:Object.freeze({In:function(e){return 1-Ki.Bounce.Out(1-e)},Out:function(e){return e<.36363636363636365?7.5625*e*e:e<.7272727272727273?7.5625*(e-=.5454545454545454)*e+.75:e<.9090909090909091?7.5625*(e-=.8181818181818182)*e+.9375:7.5625*(e-=.9545454545454546)*e+.984375},InOut:function(e){return e<.5?Ki.Bounce.In(e*2)*.5:Ki.Bounce.Out(e*2-1)*.5+.5}}),generatePow:function(e){return e===void 0&&(e=4),e=e<Number.EPSILON?Number.EPSILON:e,e=e>1e4?1e4:e,{In:function(t){return Math.pow(t,e)},Out:function(t){return 1-Math.pow(1-t,e)},InOut:function(t){return t<.5?Math.pow(t*2,e)/2:(1-Math.pow(2-t*2,e))/2+.5}}}}),h2=function(){return performance.now()},fft=function(){function e(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];this._tweens={},this._tweensAddedDuringUpdate={},this.add.apply(this,t)}return e.prototype.getAll=function(){var t=this;return Object.keys(this._tweens).map(function(n){return t._tweens[n]})},e.prototype.removeAll=function(){this._tweens={}},e.prototype.add=function(){for(var t,n=[],i=0;i<arguments.length;i++)n[i]=arguments[i];for(var o=0,r=n;o<r.length;o++){var s=r[o];(t=s._group)===null||t===void 0||t.remove(s),s._group=this,this._tweens[s.getId()]=s,this._tweensAddedDuringUpdate[s.getId()]=s}},e.prototype.remove=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];for(var i=0,o=t;i<o.length;i++){var r=o[i];r._group=void 0,delete this._tweens[r.getId()],delete this._tweensAddedDuringUpdate[r.getId()]}},e.prototype.allStopped=function(){return this.getAll().every(function(t){return!t.isPlaying()})},e.prototype.update=function(t,n){t===void 0&&(t=h2()),n===void 0&&(n=!0);var i=Object.keys(this._tweens);if(i.length!==0)for(;i.length>0;){this._tweensAddedDuringUpdate={};for(var o=0;o<i.length;o++){var r=this._tweens[i[o]],s=!n;r&&r.update(t,s)===!1&&!n&&this.remove(r)}i=Object.keys(this._tweensAddedDuringUpdate)}},e}(),ow={Linear:function(e,t){var n=e.length-1,i=n*t,o=Math.floor(i),r=ow.Utils.Linear;return t<0?r(e[0],e[1],i):t>1?r(e[n],e[n-1],n-i):r(e[o],e[o+1>n?n:o+1],i-o)},Bezier:function(e,t){for(var n=0,i=e.length-1,o=Math.pow,r=ow.Utils.Bernstein,s=0;s<=i;s++)n+=o(1-t,i-s)*o(t,s)*e[s]*r(i,s);return n},CatmullRom:function(e,t){var n=e.length-1,i=n*t,o=Math.floor(i),r=ow.Utils.CatmullRom;return e[0]===e[n]?(t<0&&(o=Math.floor(i=n*(1+t))),r(e[(o-1+n)%n],e[o],e[(o+1)%n],e[(o+2)%n],i-o)):t<0?e[0]-(r(e[0],e[0],e[1],e[1],-i)-e[0]):t>1?e[n]-(r(e[n],e[n],e[n-1],e[n-1],i-n)-e[n]):r(e[o?o-1:0],e[o],e[n<o+1?n:o+1],e[n<o+2?n:o+2],i-o)},Utils:{Linear:function(e,t,n){return(t-e)*n+e},Bernstein:function(e,t){var n=ow.Utils.Factorial;return n(e)/n(t)/n(e-t)},Factorial:function(){var e=[1];return function(t){var n=1;if(e[t])return e[t];for(var i=t;i>1;i--)n*=i;return e[t]=n,n}}(),CatmullRom:function(e,t,n,i,o){var r=(n-e)*.5,s=(i-t)*.5,a=o*o,c=o*a;return(2*t-2*n+r+s)*c+(-3*t+3*n-2*r-s)*a+r*o+t}}},gEe=function(){function e(){}return e.nextId=function(){return e._nextId++},e._nextId=0,e}(),IX=new fft,_Ee=function(){function e(t,n){this._isPaused=!1,this._pauseStart=0,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._isDynamic=!1,this._initialRepeat=0,this._repeat=0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=0,this._easingFunction=Ki.Linear.None,this._interpolationFunction=ow.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._id=gEe.nextId(),this._isChainStopped=!1,this._propertiesAreSetUp=!1,this._goToEnd=!1,this._object=t,typeof n=="object"?(this._group=n,n.add(this)):n===!0&&(this._group=IX,IX.add(this))}return e.prototype.getId=function(){return this._id},e.prototype.isPlaying=function(){return this._isPlaying},e.prototype.isPaused=function(){return this._isPaused},e.prototype.getDuration=function(){return this._duration},e.prototype.to=function(t,n){if(n===void 0&&(n=1e3),this._isPlaying)throw new Error("Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.");return this._valuesEnd=t,this._propertiesAreSetUp=!1,this._duration=n<0?0:n,this},e.prototype.duration=function(t){return t===void 0&&(t=1e3),this._duration=t<0?0:t,this},e.prototype.dynamic=function(t){return t===void 0&&(t=!1),this._isDynamic=t,this},e.prototype.start=function(t,n){if(t===void 0&&(t=h2()),n===void 0&&(n=!1),this._isPlaying)return this;if(this._repeat=this._initialRepeat,this._reversed){this._reversed=!1;for(var i in this._valuesStartRepeat)this._swapEndStartRepeatValues(i),this._valuesStart[i]=this._valuesStartRepeat[i]}if(this._isPlaying=!0,this._isPaused=!1,this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._isChainStopped=!1,this._startTime=t,this._startTime+=this._delayTime,!this._propertiesAreSetUp||n){if(this._propertiesAreSetUp=!0,!this._isDynamic){var o={};for(var r in this._valuesEnd)o[r]=this._valuesEnd[r];this._valuesEnd=o}this._setupProperties(this._object,this._valuesStart,this._valuesEnd,this._valuesStartRepeat,n)}return this},e.prototype.startFromCurrentValues=function(t){return this.start(t,!0)},e.prototype._setupProperties=function(t,n,i,o,r){for(var s in i){var a=t[s],c=Array.isArray(a),u=c?"array":typeof a,f=!c&&Array.isArray(i[s]);if(!(u==="undefined"||u==="function")){if(f){var h=i[s];if(h.length===0)continue;for(var A=[a],g=0,m=h.length;g<m;g+=1){var _=this._handleRelativeValue(a,h[g]);if(isNaN(_)){f=!1,console.warn("Found invalid interpolation list. Skipping.");break}A.push(_)}f&&(i[s]=A)}if((u==="object"||c)&&a&&!f){n[s]=c?[]:{};var y=a;for(var C in y)n[s][C]=y[C];o[s]=c?[]:{};var h=i[s];if(!this._isDynamic){var E={};for(var C in h)E[C]=h[C];i[s]=h=E}this._setupProperties(y,n[s],h,o[s],r)}else(typeof n[s]>"u"||r)&&(n[s]=a),c||(n[s]*=1),f?o[s]=i[s].slice().reverse():o[s]=n[s]||0}}},e.prototype.stop=function(){return this._isChainStopped||(this._isChainStopped=!0,this.stopChainedTweens()),this._isPlaying?(this._isPlaying=!1,this._isPaused=!1,this._onStopCallback&&this._onStopCallback(this._object),this):this},e.prototype.end=function(){return this._goToEnd=!0,this.update(this._startTime+this._duration),this},e.prototype.pause=function(t){return t===void 0&&(t=h2()),this._isPaused||!this._isPlaying?this:(this._isPaused=!0,this._pauseStart=t,this)},e.prototype.resume=function(t){return t===void 0&&(t=h2()),!this._isPaused||!this._isPlaying?this:(this._isPaused=!1,this._startTime+=t-this._pauseStart,this._pauseStart=0,this)},e.prototype.stopChainedTweens=function(){for(var t=0,n=this._chainedTweens.length;t<n;t++)this._chainedTweens[t].stop();return this},e.prototype.group=function(t){return t?(t.add(this),this):(console.warn("tween.group() without args has been removed, use group.add(tween) instead."),this)},e.prototype.remove=function(){var t;return(t=this._group)===null||t===void 0||t.remove(this),this},e.prototype.delay=function(t){return t===void 0&&(t=0),this._delayTime=t,this},e.prototype.repeat=function(t){return t===void 0&&(t=0),this._initialRepeat=t,this._repeat=t,this},e.prototype.repeatDelay=function(t){return this._repeatDelayTime=t,this},e.prototype.yoyo=function(t){return t===void 0&&(t=!1),this._yoyo=t,this},e.prototype.easing=function(t){return t===void 0&&(t=Ki.Linear.None),this._easingFunction=t,this},e.prototype.interpolation=function(t){return t===void 0&&(t=ow.Linear),this._interpolationFunction=t,this},e.prototype.chain=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return this._chainedTweens=t,this},e.prototype.onStart=function(t){return this._onStartCallback=t,this},e.prototype.onEveryStart=function(t){return this._onEveryStartCallback=t,this},e.prototype.onUpdate=function(t){return this._onUpdateCallback=t,this},e.prototype.onRepeat=function(t){return this._onRepeatCallback=t,this},e.prototype.onComplete=function(t){return this._onCompleteCallback=t,this},e.prototype.onStop=function(t){return this._onStopCallback=t,this},e.prototype.update=function(t,n){var i=this,o;if(t===void 0&&(t=h2()),n===void 0&&(n=e.autoStartOnUpdate),this._isPaused)return!0;var r;if(!this._goToEnd&&!this._isPlaying)if(n)this.start(t,!0);else return!1;if(this._goToEnd=!1,t<this._startTime)return!0;this._onStartCallbackFired===!1&&(this._onStartCallback&&this._onStartCallback(this._object),this._onStartCallbackFired=!0),this._onEveryStartCallbackFired===!1&&(this._onEveryStartCallback&&this._onEveryStartCallback(this._object),this._onEveryStartCallbackFired=!0);var s=t-this._startTime,a=this._duration+((o=this._repeatDelayTime)!==null&&o!==void 0?o:this._delayTime),c=this._duration+this._repeat*a,u=function(){if(i._duration===0||s>c)return 1;var _=Math.trunc(s/a),y=s-_*a,C=Math.min(y/i._duration,1);return C===0&&s===i._duration?1:C},f=u(),h=this._easingFunction(f);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,h),this._onUpdateCallback&&this._onUpdateCallback(this._object,f),this._duration===0||s>=this._duration)if(this._repeat>0){var A=Math.min(Math.trunc((s-this._duration)/a)+1,this._repeat);isFinite(this._repeat)&&(this._repeat-=A);for(r in this._valuesStartRepeat)!this._yoyo&&typeof this._valuesEnd[r]=="string"&&(this._valuesStartRepeat[r]=this._valuesStartRepeat[r]+parseFloat(this._valuesEnd[r])),this._yoyo&&this._swapEndStartRepeatValues(r),this._valuesStart[r]=this._valuesStartRepeat[r];return this._yoyo&&(this._reversed=!this._reversed),this._startTime+=a*A,this._onRepeatCallback&&this._onRepeatCallback(this._object),this._onEveryStartCallbackFired=!1,!0}else{this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var g=0,m=this._chainedTweens.length;g<m;g++)this._chainedTweens[g].start(this._startTime+this._duration,!1);return this._isPlaying=!1,!1}return!0},e.prototype._updateProperties=function(t,n,i,o){for(var r in i)if(n[r]!==void 0){var s=n[r]||0,a=i[r],c=Array.isArray(t[r]),u=Array.isArray(a),f=!c&&u;f?t[r]=this._interpolationFunction(a,o):typeof a=="object"&&a?this._updateProperties(t[r],s,a,o):(a=this._handleRelativeValue(s,a),typeof a=="number"&&(t[r]=s+(a-s)*o))}},e.prototype._handleRelativeValue=function(t,n){return typeof n!="string"?n:n.charAt(0)==="+"||n.charAt(0)==="-"?t+parseFloat(n):parseFloat(n)},e.prototype._swapEndStartRepeatValues=function(t){var n=this._valuesStartRepeat[t],i=this._valuesEnd[t];typeof i=="string"?this._valuesStartRepeat[t]=this._valuesStartRepeat[t]+parseFloat(i):this._valuesStartRepeat[t]=this._valuesEnd[t],this._valuesEnd[t]=n},e.autoStartOnUpdate=!1,e}();var Kui=gEe.nextId,SA=IX,Xui=SA.getAll.bind(SA),Jui=SA.removeAll.bind(SA),Zui=SA.add.bind(SA),$ui=SA.remove.bind(SA),efi=SA.update.bind(SA);var dft={LINEAR_NONE:Ki.Linear.None,QUADRATIC_IN:Ki.Quadratic.In,QUADRATIC_OUT:Ki.Quadratic.Out,QUADRATIC_IN_OUT:Ki.Quadratic.InOut,CUBIC_IN:Ki.Cubic.In,CUBIC_OUT:Ki.Cubic.Out,CUBIC_IN_OUT:Ki.Cubic.InOut,QUARTIC_IN:Ki.Quartic.In,QUARTIC_OUT:Ki.Quartic.Out,QUARTIC_IN_OUT:Ki.Quartic.InOut,QUINTIC_IN:Ki.Quintic.In,QUINTIC_OUT:Ki.Quintic.Out,QUINTIC_IN_OUT:Ki.Quintic.InOut,SINUSOIDAL_IN:Ki.Sinusoidal.In,SINUSOIDAL_OUT:Ki.Sinusoidal.Out,SINUSOIDAL_IN_OUT:Ki.Sinusoidal.InOut,EXPONENTIAL_IN:Ki.Exponential.In,EXPONENTIAL_OUT:Ki.Exponential.Out,EXPONENTIAL_IN_OUT:Ki.Exponential.InOut,CIRCULAR_IN:Ki.Circular.In,CIRCULAR_OUT:Ki.Circular.Out,CIRCULAR_IN_OUT:Ki.Circular.InOut,ELASTIC_IN:Ki.Elastic.In,ELASTIC_OUT:Ki.Elastic.Out,ELASTIC_IN_OUT:Ki.Elastic.InOut,BACK_IN:Ki.Back.In,BACK_OUT:Ki.Back.Out,BACK_IN_OUT:Ki.Back.InOut,BOUNCE_IN:Ki.Bounce.In,BOUNCE_OUT:Ki.Bounce.Out,BOUNCE_IN_OUT:Ki.Bounce.InOut},ms=Object.freeze(dft);function O4(e,t,n){this.type="KmlTourFlyTo",this.blocking=!0,this.activeCamera=null,this.activeCallback=null,this.duration=e,this.view=n,this.flyToMode=t}O4.prototype.play=function(e,t,n){if(this.activeCamera=t,l(e)&&e!==null){let o=this;this.activeCallback=function(r){delete o.activeCallback,delete o.activeCamera,e(l(r)?!1:r)}}let i=this.getCameraOptions(n);if(this.view.headingPitchRoll)t.flyTo(i);else if(this.view.headingPitchRange){let o=new le(this.view.position);t.flyToBoundingSphere(o,i)}};O4.prototype.stop=function(){l(this.activeCamera)&&this.activeCamera.cancelFlight(),l(this.activeCallback)&&this.activeCallback(!0)};O4.prototype.getCameraOptions=function(e){let t={duration:this.duration};return l(this.activeCallback)&&(t.complete=this.activeCallback),this.flyToMode==="smooth"&&(t.easingFunction=ms.LINEAR_NONE),this.view.headingPitchRoll?(t.destination=this.view.position,t.orientation=this.view.headingPitchRoll):this.view.headingPitchRange&&(t.offset=this.view.headingPitchRange),l(e)&&(t=Tt(t,e)),t};var m2=O4;function xX(e){this.type="KmlTourWait",this.blocking=!0,this.duration=e,this.timeout=null}xX.prototype.play=function(e){let t=this;this.activeCallback=e,this.timeout=setTimeout(function(){delete t.activeCallback,e(!1)},this.duration*1e3)};xX.prototype.stop=function(){clearTimeout(this.timeout),l(this.activeCallback)&&this.activeCallback(!0)};var A2=xX;var DEe={avi:"video/x-msvideo",bmp:"image/bmp",bz2:"application/x-bzip2",chm:"application/vnd.ms-htmlhelp",css:"text/css",csv:"text/csv",doc:"application/msword",dvi:"application/x-dvi",eps:"application/postscript",flv:"video/x-flv",gif:"image/gif",gz:"application/x-gzip",htm:"text/html",html:"text/html",ico:"image/vnd.microsoft.icon",jnlp:"application/x-java-jnlp-file",jpeg:"image/jpeg",jpg:"image/jpeg",m3u:"audio/x-mpegurl",m4v:"video/mp4",mathml:"application/mathml+xml",mid:"audio/midi",midi:"audio/midi",mov:"video/quicktime",mp3:"audio/mpeg",mp4:"video/mp4",mp4v:"video/mp4",mpeg:"video/mpeg",mpg:"video/mpeg",odp:"application/vnd.oasis.opendocument.presentation",ods:"application/vnd.oasis.opendocument.spreadsheet",odt:"application/vnd.oasis.opendocument.text",ogg:"application/ogg",pdf:"application/pdf",png:"image/png",pps:"application/vnd.ms-powerpoint",ppt:"application/vnd.ms-powerpoint",ps:"application/postscript",qt:"video/quicktime",rdf:"application/rdf+xml",rss:"application/rss+xml",rtf:"application/rtf",svg:"image/svg+xml",swf:"application/x-shockwave-flash",text:"text/plain",tif:"image/tiff",tiff:"image/tiff",txt:"text/plain",wav:"audio/x-wav",wma:"audio/x-ms-wma",wmv:"video/x-ms-wmv",xml:"application/xml",zip:"application/zip",detectFromFilename:function(e){let t=e.toLowerCase();return t=UC(t),DEe[t]}},vX;typeof DOMParser<"u"&&(vX=new DOMParser);var hft=new BEe.default({stripPrefix:!1,email:!1,replaceFn:function(e){return e.urlMatchType==="scheme"||e.urlMatchType==="www"}}),sC=32,yEe=2414016,CEe=1,EEe=16093e3,IEe=.1,xEe=[null,void 0,"http://www.opengis.net/kml/2.2","http://earth.google.com/kml/2.2","http://earth.google.com/kml/2.1","http://earth.google.com/kml/2.0"],bEe=["http://www.google.com/kml/ext/2.2"],mft=["http://www.w3.org/2005/Atom"],Ne={kml:xEe,gx:bEe,atom:mft,kmlgx:xEe.concat(bEe)},PX={Document:kEe,Folder:Mft,Placemark:Nft,NetworkLink:Vft,GroundOverlay:Uft,PhotoOverlay:zEe,ScreenOverlay:kft,Tour:Oft};function wA(e){this._dataSource=e,this._deferred=Xl(),this._stack=[],this._promises=[],this._timeoutSet=!1,this._used=!1,this._started=0,this._timeThreshold=1e3}Object.defineProperties(wA.prototype,{dataSource:{get:function(){return this._dataSource}}});wA.prototype.addNodes=function(e,t){this._stack.push({nodes:e,index:0,processingData:t}),this._used=!0};wA.prototype.addPromise=function(e){this._promises.push(e)};wA.prototype.wait=function(){let e=this._deferred;return this._used||e.resolve(),Promise.all([e.promise,Promise.all(this._promises)])};wA.prototype.process=function(){let e=this._stack.length===1;return e&&(this._started=bf._getTimestamp()),this._process(e)};wA.prototype._giveUpTime=function(){if(this._timeoutSet)return;this._timeoutSet=!0,this._timeThreshold=50;let e=this;setTimeout(function(){e._timeoutSet=!1,e._started=bf._getTimestamp(),e._process(!0)},0)};wA.prototype._nextNode=function(){let e=this._stack,t=e[e.length-1],n=t.index,i=t.nodes;if(n!==i.length)return++t.index,i[n]};wA.prototype._pop=function(){let e=this._stack;return e.pop(),e.length===0?(this._deferred.resolve(),!1):!0};wA.prototype._process=function(e){let t=this.dataSource,n=this._stack[this._stack.length-1].processingData,i=this._nextNode();for(;l(i);){let o=PX[i.localName];if(l(o)&&(Ne.kml.indexOf(i.namespaceURI)!==-1||Ne.gx.indexOf(i.namespaceURI)!==-1)&&(o(t,i,n,this),this._timeoutSet||bf._getTimestamp()>this._started+this._timeThreshold)){this._giveUpTime();return}i=this._nextNode()}this._pop()&&e&&this._process(!0)};function Aft(e){let t=e.slice(0,Math.min(4,e.size)),n=Xl(),i=new FileReader;return i.addEventListener("load",function(){n.resolve(new DataView(i.result).getUint32(0,!1)===1347093252)}),i.addEventListener("error",function(){n.reject(i.error)}),i.readAsArrayBuffer(t),n.promise}function pft(e){let t=Xl(),n=new FileReader;return n.addEventListener("load",function(){t.resolve(n.result)}),n.addEventListener("error",function(){t.reject(n.error)}),n.readAsText(e),t.promise}function vEe(e){let t={xsi:"http://www.w3.org/2001/XMLSchema-instance"},n,i,o,r;for(let s in t)t.hasOwnProperty(s)&&(o=RegExp(`[< ]${s}:`),r=`xmlns:${s}=`,o.test(e)&&e.indexOf(r)===-1&&(l(n)||(n=e.substr(0,e.indexOf("<kml")+4),i=e.substr(n.length)),n+=` ${r}"${t[s]}"`));return l(n)&&(e=n+i),e}function PEe(e){let t=e.indexOf("xmlns:"),n=e.indexOf(">",t),i,o,r;for(;t!==-1&&t<n;)i=e.slice(t,e.indexOf('"',t)),o=t,t=e.indexOf(i,t+1),t!==-1?(r=e.indexOf('"',e.indexOf('"',t)+1),e=e.slice(0,t-1)+e.slice(r+1,e.length),t=e.indexOf("xmlns:",o-1)):t=e.indexOf("xmlns:",o+1);return e}function gft(e,t){return Promise.resolve(e.getData(new d4)).then(function(n){n=vEe(n),n=PEe(n),t.kml=vX.parseFromString(n,"application/xml")})}function bX(e,t){let n=DEe.detectFromFilename(e.filename)??"application/octet-stream";return Promise.resolve(e.getData(new u4(n))).then(function(i){t[e.filename]=i})}function If(e,t,n,i){let o=i.keys,r=new p2.default("."),s=e.querySelectorAll(t);for(let a=0;a<s.length;a++){let c=s[a],u=c.getAttribute(n);if(l(u)){let h=new p2.default(u).absoluteTo(r).toString(),A=o.indexOf(h);if(A!==-1){let g=o[A];c.setAttribute(n,i[g]),t==="a"&&c.getAttribute("download")===null&&c.setAttribute("download",g)}}}}function xf(e,t,n,i){let o=e.querySelectorAll(t);for(let r=0;r<o.length;r++){let s=o[r],a=s.getAttribute(n),c=RX(a,i);l(c)&&s.setAttribute(n,c.url)}}function REe(e,t,n){let i=ia(e,"id");i=l(i)&&i.length!==0?i:Xn(),l(n)&&(i=n+i);let o=t.getById(i);return l(o)&&(i=Xn(),l(n)&&(i=n+i)),o=t.add(new fr({id:i})),l(o.kml)||(o.addProperty("kml"),o.kml=new Yft),o}function g2(e,t){return e==="absolute"||e==="relativeToGround"||t==="relativeToSeaFloor"}function U4(e,t){if(!l(e))return d.fromDegrees(0,0,0,t);let n=e.match(/[^\s,\n]+/g);if(!l(n))return d.fromDegrees(0,0,0,t);let i=parseFloat(n[0]),o=parseFloat(n[1]),r=parseFloat(n[2]);return i=isNaN(i)?0:i,o=isNaN(o)?0:o,r=isNaN(r)?0:r,d.fromDegrees(i,o,r,t)}function F4(e,t){if(!l(e))return;let n=e.textContent.match(/[^\s\n]+/g);if(!l(n))return;let i=n.length,o=new Array(i),r=0;for(let s=0;s<i;s++)o[r++]=U4(n[s],t);return o}function aC(e,t){if(!l(e))return;let n=e.getAttribute(t);if(n!==null){let i=parseFloat(n);return isNaN(i)?void 0:i}}function ia(e,t){if(!l(e))return;let n=e.getAttribute(t);return n!==null?n:void 0}function Xi(e,t,n){if(!l(e))return;let i=e.childNodes,o=i.length;for(let r=0;r<o;r++){let s=i[r];if(s.localName===t&&n.indexOf(s.namespaceURI)!==-1)return s}}function TEe(e,t,n){if(!l(e))return;let i=[],o=e.getElementsByTagNameNS("*",t),r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function um(e,t,n){if(!l(e))return[];let i=[],o=e.childNodes,r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function pi(e,t,n){let i=Xi(e,t,n);if(l(i)){let o=parseFloat(i.textContent);return isNaN(o)?void 0:o}}function Un(e,t,n){let i=Xi(e,t,n);if(l(i))return i.textContent.trim()}function fm(e,t,n){let i=Xi(e,t,n);if(l(i)){let o=i.textContent.trim();return o==="1"||/^true$/i.test(o)}}function RX(e,t,n){if(!l(e))return;let i;if(l(n)){e=e.replace(/\\/g,"/");let o=n[e];if(l(o))i=new we({url:o});else{let r=new p2.default(t.getUrlComponent()),s=new p2.default(e);o=n[s.absoluteTo(r)],l(o)&&(i=new we({url:o}))}}return l(i)||(i=t.getDerivedResource({url:e})),i}var bu={maximumRed:void 0,red:void 0,maximumGreen:void 0,green:void 0,maximumBlue:void 0,blue:void 0};function BX(e,t){if(!l(e)||/^\s*$/gm.test(e))return;e[0]==="#"&&(e=e.substring(1));let n=parseInt(e.substring(0,2),16)/255,i=parseInt(e.substring(2,4),16)/255,o=parseInt(e.substring(4,6),16)/255,r=parseInt(e.substring(6,8),16)/255;return t?(r>0?(bu.maximumRed=r,bu.red=void 0):(bu.maximumRed=void 0,bu.red=0),o>0?(bu.maximumGreen=o,bu.green=void 0):(bu.maximumGreen=void 0,bu.green=0),i>0?(bu.maximumBlue=i,bu.blue=void 0):(bu.maximumBlue=void 0,bu.blue=0),bu.alpha=n,G.fromRandom(bu)):new G(r,o,i,n)}function II(e,t,n){let i=Un(e,t,n);if(l(i))return BX(i,Un(e,"colorMode",n)==="random")}function _ft(e){let t=Xi(e,"TimeStamp",Ne.kmlgx),n=Un(t,"when",Ne.kmlgx);if(!l(t)||!l(n)||n.length===0)return;let i=K.fromIso8601(n),o=new ls;return o.addInterval(new Pn({start:i,stop:je.MAXIMUM_VALUE})),o}function yft(e){let t=Xi(e,"TimeSpan",Ne.kmlgx);if(!l(t))return;let n,i=Xi(t,"begin",Ne.kmlgx),o=l(i)?K.fromIso8601(i.textContent):void 0,r=Xi(t,"end",Ne.kmlgx),s=l(r)?K.fromIso8601(r.textContent):void 0;if(l(o)&&l(s)){if(K.lessThan(s,o)){let a=o;o=s,s=a}n=new ls,n.addInterval(new Pn({start:o,stop:s}))}else l(o)?(n=new ls,n.addInterval(new Pn({start:o,stop:je.MAXIMUM_VALUE}))):l(s)&&(n=new ls,n.addInterval(new Pn({start:je.MINIMUM_VALUE,stop:s})));return n}function MEe(){let e=new Tc;return e.width=sC,e.height=sC,e.scaleByDistance=new jt(yEe,CEe,EEe,IEe),e.pixelOffsetScaleByDistance=new jt(yEe,CEe,EEe,IEe),e}function MX(){let e=new ph;return e.outline=!0,e.outlineColor=G.WHITE,e}function NEe(){let e=new Ah;return e.translucencyByDistance=new jt(3e6,1,5e6,0),e.pixelOffset=new U(17,0),e.horizontalOrigin=Ri.LEFT,e.font="16px sans-serif",e.style=nr.FILL_AND_OUTLINE,e}function NX(e,t,n,i,o){let r=Un(e,"href",Ne.kml);if(!l(r)||r.length===0)return;if(r.indexOf("root://icons/palette-")===0){let a=r.charAt(21),c=pi(e,"x",Ne.gx)??0,u=pi(e,"y",Ne.gx)??0;c=Math.min(c/32,7),u=7-Math.min(u/32,7);let f=8*u+c;r=`https://maps.google.com/mapfiles/kml/pal${a}/icon${f}.png`}let s=RX(r,n,i);if(o){let a=Un(e,"refreshMode",Ne.kml),c=Un(e,"viewRefreshMode",Ne.kml);a==="onInterval"||a==="onExpire"?yt(`kml-refreshMode-${a}`,`KML - Unsupported Icon refreshMode: ${a}`):(c==="onStop"||c==="onRegion")&&yt(`kml-refreshMode-${c}`,`KML - Unsupported Icon viewRefreshMode: ${c}`);let u=Un(e,"viewBoundScale",Ne.kml)??1,f=c==="onStop"?"BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]":"",h=Un(e,"viewFormat",Ne.kml)??f,A=Un(e,"httpQuery",Ne.kml);l(h)&&s.setQueryParameters(Fu(k4(h))),l(A)&&s.setQueryParameters(Fu(k4(A)));let g=t._ellipsoid;return OX(s,t.camera,t.canvas,u,t._lastCameraView.bbox,g),s}return s}function Cft(e,t,n,i,o){let r=pi(t,"scale",Ne.kml),s=pi(t,"heading",Ne.kml),a=II(t,"color",Ne.kml),c=Xi(t,"Icon",Ne.kml),u=NX(c,e,i,o,!1);l(c)&&!l(u)&&(u=!1);let f=pi(c,"x",Ne.gx),h=pi(c,"y",Ne.gx),A=pi(c,"w",Ne.gx),g=pi(c,"h",Ne.gx),m=Xi(t,"hotSpot",Ne.kml),_=aC(m,"x"),y=aC(m,"y"),C=ia(m,"xunits"),E=ia(m,"yunits"),I=n.billboard;l(I)||(I=MEe(),n.billboard=I),I.image=u,I.scale=r,I.color=a,(l(f)||l(h)||l(A)||l(g))&&(I.imageSubRegion=new Ye(f,h,A,g)),l(s)&&s!==0&&(I.rotation=D.toRadians(-s),I.alignedAxis=d.UNIT_Z),r=r??1;let b,S;l(_)&&(C==="pixels"?b=-_*r:C==="insetPixels"?b=(_-sC)*r:C==="fraction"&&(b=-_*sC*r),b+=sC*.5*r),l(y)&&(E==="pixels"?S=y*r:E==="insetPixels"?S=(-y+sC)*r:E==="fraction"&&(S=y*sC*r),S-=sC*.5*r),(l(b)||l(S))&&(I.pixelOffset=new U(b,S))}function Q4(e,t,n,i,o){for(let r=0,s=t.childNodes.length;r<s;r++){let a=t.childNodes.item(r);if(a.localName==="IconStyle")Cft(e,a,n,i,o);else if(a.localName==="LabelStyle"){let c=n.label;l(c)||(c=NEe(),n.label=c),c.scale=pi(a,"scale",Ne.kml)??c.scale,c.fillColor=II(a,"color",Ne.kml)??c.fillColor,c.text=n.name}else if(a.localName==="LineStyle"){let c=n.polyline;l(c)||(c=new Mc,n.polyline=c),c.width=pi(a,"width",Ne.kml),c.material=II(a,"color",Ne.kml),l(II(a,"outerColor",Ne.gx))&&yt("kml-gx:outerColor","KML - gx:outerColor is not supported in a LineStyle"),l(pi(a,"outerWidth",Ne.gx))&&yt("kml-gx:outerWidth","KML - gx:outerWidth is not supported in a LineStyle"),l(pi(a,"physicalWidth",Ne.gx))&&yt("kml-gx:physicalWidth","KML - gx:physicalWidth is not supported in a LineStyle"),l(fm(a,"labelVisibility",Ne.gx))&&yt("kml-gx:labelVisibility","KML - gx:labelVisibility is not supported in a LineStyle")}else if(a.localName==="PolyStyle"){let c=n.polygon;l(c)||(c=MX(),n.polygon=c),c.material=II(a,"color",Ne.kml)??c.material,c.fill=fm(a,"fill",Ne.kml)??c.fill,c.outline=fm(a,"outline",Ne.kml)??c.outline}else if(a.localName==="BalloonStyle"){let c=BX(Un(a,"bgColor",Ne.kml))??G.WHITE,u=BX(Un(a,"textColor",Ne.kml))??G.BLACK,f=Un(a,"text",Ne.kml);n.addProperty("balloonStyle"),n.balloonStyle={bgColor:c,textColor:u,text:f}}else if(a.localName==="ListStyle"){let c=Un(a,"listItemType",Ne.kml);(c==="radioFolder"||c==="checkOffOnly")&&yt(`kml-listStyle-${c}`,`KML - Unsupported ListStyle with listItemType: ${c}`)}}}function Eft(e,t,n,i,o){let r=new fr,s,a=-1,c=t.childNodes,u=c.length;for(let h=0;h<u;h++){let A=c[h];(A.localName==="Style"||A.localName==="StyleMap")&&(a=h)}if(a!==-1){let h=c[a];if(h.localName==="Style")Q4(e,h,r,i,o);else{let A=um(h,"Pair",Ne.kml);for(let g=0;g<A.length;g++){let m=A[g],_=Un(m,"key",Ne.kml);if(_==="normal"){let y=Un(m,"styleUrl",Ne.kml);if(l(y))s=n.getById(y),l(s)||(s=n.getById(`#${y}`)),l(s)&&r.merge(s);else{let C=Xi(m,"Style",Ne.kml);Q4(e,C,r,i,o)}}else yt(`kml-styleMap-${_}`,`KML - Unsupported StyleMap key: ${_}`)}}}let f=Un(t,"styleUrl",Ne.kml);if(l(f)){let h=f;if(f[0]!=="#"&&f.indexOf("#")!==-1){let A=f.split("#"),g=A[0];h=`${i.getDerivedResource({url:g}).getUrlComponent()}#${A[1]}`}s=n.getById(h),l(s)||(s=n.getById(`#${h}`)),l(s)&&r.merge(s)}return r}function Ift(e,t,n){return t.fetchXML().then(function(i){return LEe(e,i,n,t,!0)})}function LEe(e,t,n,i,o,r){let s,a,c,u,f=TEe(t,"Style",Ne.kml);if(l(f)){let _=f.length;for(s=0;s<_;s++)u=f[s],a=ia(u,"id"),l(a)&&(a=`#${a}`,o&&l(i)&&(a=i.getUrlComponent()+a),l(n.getById(a))||(c=new fr({id:a}),n.add(c),Q4(e,u,c,i,r)))}let h=TEe(t,"StyleMap",Ne.kml);if(l(h)){let _=h.length;for(s=0;s<_;s++){let y=h[s];if(a=ia(y,"id"),l(a)){let C=um(y,"Pair",Ne.kml);for(let E=0;E<C.length;E++){let I=C[E],b=Un(I,"key",Ne.kml);if(b==="normal"){if(a=`#${a}`,o&&l(i)&&(a=i.getUrlComponent()+a),!l(n.getById(a))){c=n.getOrCreateEntity(a);let S=Un(I,"styleUrl",Ne.kml);if(l(S)){S[0]!=="#"&&(S=`#${S}`),o&&l(i)&&(S=i.getUrlComponent()+S);let B=n.getById(S);l(B)&&c.merge(B)}else u=Xi(I,"Style",Ne.kml),Q4(e,u,c,i,r)}}else yt(`kml-styleMap-${b}`,`KML - Unsupported StyleMap key: ${b}`)}}}}let A=[],g=t.getElementsByTagName("styleUrl"),m=g.length;for(s=0;s<m;s++){let _=g[s].textContent;if(_[0]!=="#"){let y=_.split("#");if(y.length===2){let C=y[0],E=i.getDerivedResource({url:C});A.push(Ift(e,E,n))}}}return A}function LX(e,t,n){let i=new Sg(e,t.id,["position"]),o=new pA(t.position);t.polyline=l(n.polyline)?n.polyline.clone():new Mc,t.polyline.positions=new Tg([i,o])}function OEe(e,t){return!l(e)&&!l(t)||e==="clampToGround"?Ze.CLAMP_TO_GROUND:e==="relativeToGround"?Ze.RELATIVE_TO_GROUND:e==="absolute"?Ze.NONE:t==="clampToSeaFloor"?(yt("kml-gx:altitudeMode-clampToSeaFloor","KML - <gx:altitudeMode>:clampToSeaFloor is currently not supported, using <kml:altitudeMode>:clampToGround."),Ze.CLAMP_TO_GROUND):t==="relativeToSeaFloor"?(yt("kml-gx:altitudeMode-relativeToSeaFloor","KML - <gx:altitudeMode>:relativeToSeaFloor is currently not supported, using <kml:altitudeMode>:relativeToGround."),Ze.RELATIVE_TO_GROUND):(l(e)?yt("kml-altitudeMode-unknown",`KML - Unknown <kml:altitudeMode>:${e}, using <kml:altitudeMode>:CLAMP_TO_GROUND.`):yt("kml-gx:altitudeMode-unknown",`KML - Unknown <gx:altitudeMode>:${t}, using <kml:altitudeMode>:CLAMP_TO_GROUND.`),Ze.CLAMP_TO_GROUND)}function xft(e,t,n){return n==="relativeToSeaFloor"||t==="absolute"||t==="relativeToGround"?e:((l(t)&&t!=="clampToGround"||l(n)&&n!=="clampToSeaFloor")&&yt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${t??n}`),new pA(e))}function bft(e,t,n,i){if(!l(e))return;if(n==="relativeToSeaFloor"||t==="absolute"||t==="relativeToGround")return e;(l(t)&&t!=="clampToGround"||l(n)&&n!=="clampToSeaFloor")&&yt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${t??n}`);let o=e.length;for(let r=0;r<o;r++){let s=e[r];i.scaleToGeodeticSurface(s,s)}return e}function G4(e,t,n,i){let o=t.label;l(o)||(o=l(n.label)?n.label.clone():NEe(),t.label=o),o.text=t.name;let r=t.billboard;l(r)||(r=l(n.billboard)?n.billboard.clone():MEe(),t.billboard=r),l(r.image)?r.image.getValue()||(r.image=void 0):r.image=e._pinBuilder.fromColor(G.YELLOW,64);let s=1;l(r.scale)&&(s=r.scale.getValue(),s!==0?o.pixelOffset=new U(s*16+1,0):(o.pixelOffset=void 0,o.horizontalOrigin=void 0)),l(i)&&e._clampToGround&&(r.heightReference=i,o.heightReference=i)}function FEe(e,t){let n=e.path;l(n)||(n=new pp,n.leadTime=0,e.path=n);let i=t.polyline;l(i)&&(n.material=i.material,n.width=i.width)}function Tft(e,t,n,i,o){let r=Un(n,"coordinates",Ne.kml),s=Un(n,"altitudeMode",Ne.kml),a=Un(n,"altitudeMode",Ne.gx),c=fm(n,"extrude",Ne.kml),u=e._ellipsoid,f=U4(r,u);return i.position=f,G4(e,i,o,OEe(s,a)),c&&g2(s,a)&&LX(t,i,o),!0}function SEe(e,t,n,i,o){let r=Xi(n,"coordinates",Ne.kml),s=Un(n,"altitudeMode",Ne.kml),a=Un(n,"altitudeMode",Ne.gx),c=fm(n,"extrude",Ne.kml),u=fm(n,"tessellate",Ne.kml),f=g2(s,a),h=pi(n,"drawOrder",Ne.gx),A=e._ellipsoid,g=F4(r,A),m=o.polyline;if(f&&c){let _=new gp;i.wall=_,_.positions=g;let y=o.polygon;l(y)&&(_.fill=y.fill,_.material=y.material),_.outline=!0,l(m)?(_.outlineColor=l(m.material)?m.material.color:G.WHITE,_.outlineWidth=m.width):l(y)&&(_.outlineColor=l(y.material)?y.material.color:G.WHITE)}else if(e._clampToGround&&!f&&u){let _=new Mc;_.clampToGround=!0,i.polyline=_,_.positions=g,l(m)?(_.material=l(m.material)?m.material.color.getValue(je.MINIMUM_VALUE):G.WHITE,_.width=m.width??1):(_.material=G.WHITE,_.width=1),_.zIndex=h}else l(h)&&yt("kml-gx:drawOrder","KML - gx:drawOrder is not supported in LineStrings when clampToGround is false"),e._clampToGround&&!u&&yt("kml-line-tesselate","Ignoring clampToGround for KML lines without the tessellate flag."),m=l(m)?m.clone():new Mc,i.polyline=m,m.positions=bft(g,s,a,A),(!u||f)&&(m.arcType=cn.NONE);return!0}function Sft(e,t,n,i,o){let r=Xi(n,"outerBoundaryIs",Ne.kml),s=Xi(r,"LinearRing",Ne.kml),a=Xi(s,"coordinates",Ne.kml),c=e._ellipsoid,u=F4(a,c),f=fm(n,"extrude",Ne.kml),h=Un(n,"altitudeMode",Ne.kml),A=Un(n,"altitudeMode",Ne.gx),g=g2(h,A),m=l(o.polygon)?o.polygon.clone():MX(),_=o.polyline;if(l(_)&&(m.outlineColor=l(_.material)?_.material.color:G.WHITE,m.outlineWidth=_.width),i.polygon=m,g?(m.perPositionHeight=!0,m.extrudedHeight=f?0:void 0):e._clampToGround||(m.height=0),l(u)){let y=new fc(u),C=um(n,"innerBoundaryIs",Ne.kml);for(let E=0;E<C.length;E++){s=um(C[E],"LinearRing",Ne.kml);for(let I=0;I<s.length;I++)a=Xi(s[I],"coordinates",Ne.kml),u=F4(a,c),l(u)&&y.holes.push(new fc(u))}m.hierarchy=y}return!0}function wft(e,t,n,i,o){let r=Un(n,"altitudeMode",Ne.kml),s=Un(n,"altitudeMode",Ne.gx),a=um(n,"coord",Ne.gx),c=um(n,"angles",Ne.gx),u=um(n,"when",Ne.kml),f=fm(n,"extrude",Ne.kml),h=g2(r,s),A=e._ellipsoid;c.length>0&&yt("kml-gx:angles","KML - gx:angles are not supported in gx:Tracks");let g=Math.min(a.length,u.length),m=[],_=[];for(let C=0;C<g;C++){let E=U4(a[C].textContent,A);m.push(E),_.push(K.fromIso8601(u[C].textContent))}let y=new qa;return y.addSamples(_,m),i.position=y,G4(e,i,o,OEe(r,s)),FEe(i,o),i.availability=new ls,u.length>0&&i.availability.addInterval(new Pn({start:_[0],stop:_[_.length-1]})),h&&f&&LX(t,i,o),!0}function wEe(e,t,n,i,o,r,s,a,c){let u=e[0],f=e[e.length-1],h=new qa;h.addSamples(e,t),n.intervals.addInterval(new Pn({start:u,stop:f,isStartIncluded:c,isStopIncluded:c,data:xft(h,s,a)})),i.addInterval(new Pn({start:u,stop:f,isStartIncluded:c,isStopIncluded:c})),o.intervals.addInterval(new Pn({start:u,stop:f,isStartIncluded:c,isStopIncluded:c,data:r}))}function Bft(e,t,n,i,o){let r=fm(n,"interpolate",Ne.gx),s=um(n,"Track",Ne.gx),a,c,u,f=!1,h=new Bg,A=new ls,g=new ja,m=e._ellipsoid;for(let _=0,y=s.length;_<y;_++){let C=s[_],E=um(C,"when",Ne.kml),I=um(C,"coord",Ne.gx),b=Un(C,"altitudeMode",Ne.kml),S=Un(C,"altitudeMode",Ne.gx),B=g2(b,S),v=fm(C,"extrude",Ne.kml),P=Math.min(I.length,E.length),M=[];a=[];for(let L=0;L<P;L++){let p=U4(I[L].textContent,m);M.push(p),a.push(K.fromIso8601(E[L].textContent))}r&&(l(c)&&wEe([c,a[0]],[u,M[0]],g,A,h,!1,"absolute",void 0,!1),c=a[P-1],u=M[M.length-1]),wEe(a,M,g,A,h,B&&v,b,S,!0),f=f||B&&v}return i.availability=A,i.position=g,G4(e,i,o),FEe(i,o),f&&(LX(t,i,o),i.polyline.show=h),!0}var QEe={Point:Tft,LineString:SEe,LinearRing:SEe,Polygon:Sft,Track:wft,MultiTrack:Bft,MultiGeometry:Dft,Model:vft};function Dft(e,t,n,i,o,r){let s=n.childNodes,a=!1;for(let c=0,u=s.length;c<u;c++){let f=s.item(c),h=QEe[f.localName];if(l(h)){let A=REe(f,t,r);A.parent=i,A.name=i.name,A.availability=i.availability,A.description=i.description,A.kml=i.kml,h(e,t,f,A,o)&&(a=!0)}}return a}function vft(e,t,n,i,o){return yt("kml-unsupportedGeometry",`KML - Unsupported geometry: ${n.localName}`),!1}function Pft(e,t){let n=Xi(e,"ExtendedData",Ne.kml);if(!l(n))return;l(Xi(n,"SchemaData",Ne.kml))&&yt("kml-schemaData","KML - SchemaData is unsupported"),l(ia(n,"xmlns:prefix"))&&yt("kml-extendedData","KML - ExtendedData with xmlns:prefix is unsupported");let i={},o=um(n,"Data",Ne.kml);if(l(o)){let r=o.length;for(let s=0;s<r;s++){let a=o[s],c=ia(a,"name");l(c)&&(i[c]={displayName:Un(a,"displayName",Ne.kml),value:Un(a,"value",Ne.kml)})}}t.kml.extendedData=i}var Bo;typeof document<"u"&&(Bo=document.createElement("div"));function Rft(e,t,n,i,o){let r,s,a,c=t.kml,u=c.extendedData,f=Un(e,"description",Ne.kml),h=t.balloonStyle??n.balloonStyle,A=G.WHITE,g=G.BLACK,m=f;l(h)&&(A=h.bgColor??G.WHITE,g=h.textColor??G.BLACK,m=h.text??f);let _;if(l(m)){if(m=m.replace("$[name]",t.name??""),m=m.replace("$[description]",f??""),m=m.replace("$[address]",c.address??""),m=m.replace("$[Snippet]",c.snippet??""),m=m.replace("$[id]",t.id),m=m.replace("$[geDirections]",""),l(u)){let E=m.match(/\$\[.+?\]/g);if(E!==null)for(r=0;r<E.length;r++){let I=E[r],b=I.substr(2,I.length-3),S=/\/displayName$/.test(b);b=b.replace(/\/displayName$/,""),_=u[b],l(_)&&(_=S?_.displayName:_.value),l(_)&&(m=m.replace(I,_??""))}}}else if(l(u)&&(a=Object.keys(u),a.length>0)){for(m='<table class="cesium-infoBox-defaultTable cesium-infoBox-defaultTable-lighter"><tbody>',r=0;r<a.length;r++)s=a[r],_=u[s],m+=`<tr><th>${_.displayName??s}</th><td>${_.value??""}</td></tr>`;m+="</tbody></table>"}if(!l(m))return;m=hft.link(m),Bo.innerHTML=m;let y=Bo.querySelectorAll("a");for(r=0;r<y.length;r++)y[r].setAttribute("target","_blank");l(i)&&i.keys.length>1&&(If(Bo,"a","href",i),If(Bo,"link","href",i),If(Bo,"area","href",i),If(Bo,"img","src",i),If(Bo,"iframe","src",i),If(Bo,"video","src",i),If(Bo,"audio","src",i),If(Bo,"source","src",i),If(Bo,"track","src",i),If(Bo,"input","src",i),If(Bo,"embed","src",i),If(Bo,"script","src",i),If(Bo,"video","poster",i)),xf(Bo,"a","href",o),xf(Bo,"link","href",o),xf(Bo,"area","href",o),xf(Bo,"img","src",o),xf(Bo,"iframe","src",o),xf(Bo,"video","src",o),xf(Bo,"audio","src",o),xf(Bo,"source","src",o),xf(Bo,"track","src",o),xf(Bo,"input","src",o),xf(Bo,"embed","src",o),xf(Bo,"script","src",o),xf(Bo,"video","poster",o);let C='<div class="cesium-infoBox-description-lighter" style="';C+="overflow:auto;",C+="word-wrap:break-word;",C+=`background-color:${A.toCssColorString()};`,C+=`color:${g.toCssColorString()};`,C+='">',C+=`${Bo.innerHTML}</div>`,Bo.innerHTML="",t.description=C}function z4(e,t,n){let i=n.entityCollection,o=n.parentEntity,r=n.sourceResource,s=n.uriResolver,a=REe(t,i,n.context),c=a.kml,u=Eft(e,t,n.styleCollection,r,s),f=Un(t,"name",Ne.kml);a.name=f,a.parent=o;let h=yft(t);l(h)||(h=_ft(t)),a.availability=h,QX(a);function A(I){return I?I.show&&A(I.parent):!0}let g=fm(t,"visibility",Ne.kml);a.show=A(o)&&(g??!0);let m=Xi(t,"author",Ne.atom),_=c.author;_.name=Un(m,"name",Ne.atom),_.uri=Un(m,"uri",Ne.atom),_.email=Un(m,"email",Ne.atom);let y=Xi(t,"link",Ne.atom),C=c.link;C.href=ia(y,"href"),C.hreflang=ia(y,"hreflang"),C.rel=ia(y,"rel"),C.type=ia(y,"type"),C.title=ia(y,"title"),C.length=ia(y,"length"),c.address=Un(t,"address",Ne.kml),c.phoneNumber=Un(t,"phoneNumber",Ne.kml),c.snippet=Un(t,"Snippet",Ne.kml),Pft(t,a),Rft(t,a,u,s,r);let E=e._ellipsoid;return GEe(t,a,E),UEe(t,a,E),l(Xi(t,"Region",Ne.kml))&&yt("kml-region","KML - Placemark Regions are unsupported"),{entity:a,styleEntity:u}}function kEe(e,t,n,i){i.addNodes(t.childNodes,n),i.process()}function Mft(e,t,n,i){let o=z4(e,t,n),r=ze(n);r.parentEntity=o.entity,kEe(e,t,r,i)}function Nft(e,t,n,i){let o=z4(e,t,n),r=o.entity,s=o.styleEntity,a=!1,c=t.childNodes;for(let u=0,f=c.length;u<f&&!a;u++){let h=c.item(u),A=QEe[h.localName];l(A)&&(A(e,n.entityCollection,h,r,s,r.id),a=!0)}a||(r.merge(s),G4(e,r,s))}var Lft={FlyTo:Qft,Wait:Fft,SoundCue:TX,AnimatedUpdate:TX,TourControl:TX};function Oft(e,t,n,i){let o=Un(t,"name",Ne.kml),r=ia(t,"id"),s=new d2(o,r),a=Xi(t,"Playlist",Ne.gx);if(a){let c=e._ellipsoid,u=a.childNodes;for(let f=0;f<u.length;f++){let h=u[f];if(h.localName){let A=Lft[h.localName];A?A(s,h,c):console.log(`Unknown KML Tour playlist entry type ${h.localName}`)}}}e._kmlTours.push(s)}function TX(e,t){yt(`KML Tour unsupported node ${t.localName}`)}function Fft(e,t){let n=pi(t,"duration",Ne.gx);e.addPlaylistEntry(new A2(n))}function Qft(e,t,n){let i=pi(t,"duration",Ne.gx),o=Un(t,"flyToMode",Ne.gx),r={kml:{}};GEe(t,r,n),UEe(t,r,n);let s=r.kml.lookAt||r.kml.camera,a=new m2(i,o,s);e.addPlaylistEntry(a)}function UEe(e,t,n){let i=Xi(e,"Camera",Ne.kml);if(l(i)){let o=pi(i,"longitude",Ne.kml)??0,r=pi(i,"latitude",Ne.kml)??0,s=pi(i,"altitude",Ne.kml)??0,a=pi(i,"heading",Ne.kml)??0,c=pi(i,"tilt",Ne.kml)??0,u=pi(i,"roll",Ne.kml)??0,f=d.fromDegrees(o,r,s,n),h=rc.fromDegrees(a,c-90,u);t.kml.camera=new GF(f,h)}}function GEe(e,t,n){let i=Xi(e,"LookAt",Ne.kml);if(l(i)){let o=pi(i,"longitude",Ne.kml)??0,r=pi(i,"latitude",Ne.kml)??0,s=pi(i,"altitude",Ne.kml)??0,a=pi(i,"heading",Ne.kml),c=pi(i,"tilt",Ne.kml),u=pi(i,"range",Ne.kml)??0;c=D.toRadians(c??0),a=D.toRadians(a??0);let f=new Md(a,c-D.PI_OVER_TWO,u),h=d.fromDegrees(o,r,s,n);t.kml.lookAt=new f2(h,f)}}function kft(e,t,n,i){let o=n.screenOverlayContainer;if(!l(o))return;let r=n.sourceResource,s=n.uriResolver,a=Xi(t,"Icon",Ne.kml),c=NX(a,e,r,s,!1);if(!l(c))return;let u=document.createElement("img");e._screenOverlays.push(u),u.src=c.url,u.onload=function(){let f=["position: absolute"],h=Xi(t,"screenXY",Ne.kml),A=Xi(t,"overlayXY",Ne.kml),g=Xi(t,"size",Ne.kml),m,_,y,C,E,I;l(g)&&(m=aC(g,"x"),_=aC(g,"y"),y=ia(g,"xunits"),C=ia(g,"yunits"),l(m)&&m!==-1&&m!==0&&(y==="fraction"?E=`width: ${Math.floor(m*100)}%`:y==="pixels"&&(E=`width: ${m}px`),f.push(E)),l(_)&&_!==-1&&_!==0&&(C==="fraction"?I=`height: ${Math.floor(_*100)}%`:C==="pixels"&&(I=`height: ${_}px`),f.push(I))),u.style=f.join(";");let b=0,S=u.height;l(A)&&(m=aC(A,"x"),_=aC(A,"y"),y=ia(A,"xunits"),C=ia(A,"yunits"),l(m)&&(y==="fraction"?b=m*u.width:(y==="pixels"||y==="insetPixels")&&(b=m)),l(_)&&(C==="fraction"?S=_*u.height:(C==="pixels"||C==="insetPixels")&&(S=_))),l(h)&&(m=aC(h,"x"),_=aC(h,"y"),y=ia(h,"xunits"),C=ia(h,"yunits"),l(m)&&(y==="fraction"?E=`left: calc(${Math.floor(m*100)}% - ${b}px)`:y==="pixels"?E=`left: ${m-b}px`:y==="insetPixels"&&(E=`right: ${m-b}px`),f.push(E)),l(_)&&(C==="fraction"?I=`bottom: calc(${Math.floor(_*100)}% - ${S}px)`:C==="pixels"?I=`bottom: ${_-S}px`:C==="insetPixels"&&(I=`top: ${_-S}px`),f.push(I))),u.style=f.join(";")},o.appendChild(u)}function Uft(e,t,n,i){let r=z4(e,t,n).entity,s,a=!1,c=e._ellipsoid,u=F4(Xi(t,"LatLonQuad",Ne.gx),c),f=pi(t,"drawOrder",Ne.kml);if(l(u))s=MX(),s.hierarchy=new fc(u),s.zIndex=f,r.polygon=s,a=!0;else{s=new gh,s.zIndex=f,r.rectangle=s;let m=Xi(t,"LatLonBox",Ne.kml);if(l(m)){let _=pi(m,"west",Ne.kml),y=pi(m,"south",Ne.kml),C=pi(m,"east",Ne.kml),E=pi(m,"north",Ne.kml);l(_)&&(_=D.negativePiToPi(D.toRadians(_))),l(y)&&(y=D.clampToLatitudeRange(D.toRadians(y))),l(C)&&(C=D.negativePiToPi(D.toRadians(C))),l(E)&&(E=D.clampToLatitudeRange(D.toRadians(E))),s.coordinates=new ae(_,y,C,E);let I=pi(m,"rotation",Ne.kml);if(l(I)){let b=D.toRadians(I);s.rotation=b,s.stRotation=b}}}let h=Xi(t,"Icon",Ne.kml),A=NX(h,e,n.sourceResource,n.uriResolver,!0);if(l(A)){a&&yt("kml-gx:LatLonQuad","KML - gx:LatLonQuad Icon does not support texture projection.");let m=pi(h,"x",Ne.gx),_=pi(h,"y",Ne.gx),y=pi(h,"w",Ne.gx),C=pi(h,"h",Ne.gx);(l(m)||l(_)||l(y)||l(C))&&yt("kml-groundOverlay-xywh","KML - gx:x, gx:y, gx:w, gx:h aren't supported for GroundOverlays"),s.material=A,s.material.color=II(t,"color",Ne.kml),s.material.transparent=!0}else s.material=II(t,"color",Ne.kml);let g=Un(t,"altitudeMode",Ne.kml);l(g)?g==="absolute"?(s.height=pi(t,"altitude",Ne.kml),s.zIndex=void 0):g!=="clampToGround"&&yt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${g}`):(g=Un(t,"altitudeMode",Ne.gx),g==="relativeToSeaFloor"?(yt("kml-altitudeMode-relativeToSeaFloor","KML - altitudeMode relativeToSeaFloor is currently not supported, treating as absolute."),s.height=pi(t,"altitude",Ne.kml),s.zIndex=void 0):g==="clampToSeaFloor"?yt("kml-altitudeMode-clampToSeaFloor","KML - altitudeMode clampToSeaFloor is currently not supported, treating as clampToGround."):l(g)&&yt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${g}`))}function zEe(e,t,n,i){e._unsupportedNode.raiseEvent(e,n.parentEntity,t,n.entityCollection,n.styleCollection,n.sourceResource,n.uriResolver),yt(`kml-unsupportedFeature-${t.nodeName}`,`KML - Unsupported feature: ${t.nodeName}`)}var cC={INTERVAL:0,EXPIRE:1,STOP:2};function k4(e){if(!l(e)||e.length===0)return"";let t=e[0];return(t==="&"||t==="?")&&(e=e.substring(1)),e}var Gft=new ae,rw=new Ae,SX=new U,zft=new d;function OX(e,t,n,i,o,r){function s(u){return u<-D.PI_OVER_TWO?-D.PI_OVER_TWO:u>D.PI_OVER_TWO?D.PI_OVER_TWO:u}function a(u){return u>D.PI?u-D.TWO_PI:u<-D.PI?u+D.TWO_PI:u}let c=VC(e.queryParameters);if(c=c.replace(/%5B/g,"[").replace(/%5D/g,"]"),l(t)&&t._mode!==ie.MORPHING){let u,f;if(o=o??Gft,l(n)&&(SX.x=n.clientWidth*.5,SX.y=n.clientHeight*.5,u=t.pickEllipsoid(SX,r,zft)),l(u)?f=r.cartesianToCartographic(u,rw):(f=ae.center(o,rw),u=r.cartographicToCartesian(f)),l(i)&&!D.equalsEpsilon(i,1,D.EPSILON9)){let C=o.width*i*.5,E=o.height*i*.5;o=new ae(a(f.longitude-C),s(f.latitude-E),a(f.longitude+C),s(f.latitude+E))}c=c.replace("[bboxWest]",D.toDegrees(o.west).toString()),c=c.replace("[bboxSouth]",D.toDegrees(o.south).toString()),c=c.replace("[bboxEast]",D.toDegrees(o.east).toString()),c=c.replace("[bboxNorth]",D.toDegrees(o.north).toString());let h=D.toDegrees(f.longitude).toString(),A=D.toDegrees(f.latitude).toString();c=c.replace("[lookatLon]",h),c=c.replace("[lookatLat]",A),c=c.replace("[lookatTilt]",D.toDegrees(t.pitch).toString()),c=c.replace("[lookatHeading]",D.toDegrees(t.heading).toString()),c=c.replace("[lookatRange]",d.distance(t.positionWC,u)),c=c.replace("[lookatTerrainLon]",h),c=c.replace("[lookatTerrainLat]",A),c=c.replace("[lookatTerrainAlt]",f.height.toString()),r.cartesianToCartographic(t.positionWC,rw),c=c.replace("[cameraLon]",D.toDegrees(rw.longitude).toString()),c=c.replace("[cameraLat]",D.toDegrees(rw.latitude).toString()),c=c.replace("[cameraAlt]",D.toDegrees(rw.height).toString());let g=t.frustum,m=g.aspectRatio,_="",y="";if(l(m)){let C=D.toDegrees(g.fov);m>1?(_=C,y=C/m):(y=C,_=C*m)}c=c.replace("[horizFov]",_.toString()),c=c.replace("[vertFov]",y.toString())}else c=c.replace("[bboxWest]","-180"),c=c.replace("[bboxSouth]","-90"),c=c.replace("[bboxEast]","180"),c=c.replace("[bboxNorth]","90"),c=c.replace("[lookatLon]",""),c=c.replace("[lookatLat]",""),c=c.replace("[lookatRange]",""),c=c.replace("[lookatTilt]",""),c=c.replace("[lookatHeading]",""),c=c.replace("[lookatTerrainLon]",""),c=c.replace("[lookatTerrainLat]",""),c=c.replace("[lookatTerrainAlt]",""),c=c.replace("[cameraLon]",""),c=c.replace("[cameraLat]",""),c=c.replace("[cameraAlt]",""),c=c.replace("[horizFov]",""),c=c.replace("[vertFov]","");l(n)?(c=c.replace("[horizPixels]",n.clientWidth),c=c.replace("[vertPixels]",n.clientHeight)):(c=c.replace("[horizPixels]",""),c=c.replace("[vertPixels]","")),c=c.replace("[terrainEnabled]","1"),c=c.replace("[clientVersion]","1"),c=c.replace("[kmlVersion]","2.2"),c=c.replace("[clientName]","Cesium"),c=c.replace("[language]","English"),e.setQueryParameters(Fu(c))}function Vft(e,t,n,i){let r=z4(e,t,n).entity,s=n.sourceResource,a=n.uriResolver,c=Xi(t,"Link",Ne.kml);if(l(c)||(c=Xi(t,"Url",Ne.kml)),l(c)){let u=Un(c,"href",Ne.kml),f,h;if(l(u)){let A=u;if(u=RX(u,s,n.uriResolver),/^data:/.test(u.getUrlComponent()))/\.kmz/i.test(s.getUrlComponent())||(A=s.getDerivedResource({url:A}));else{if(A=u.clone(),f=Un(c,"viewRefreshMode",Ne.kml),f==="onRegion"){yt("kml-refrehMode-onRegion","KML - Unsupported viewRefreshMode: onRegion");return}h=Un(c,"viewBoundScale",Ne.kml)??1;let y=f==="onStop"?"BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]":"",C=Un(c,"viewFormat",Ne.kml)??y,E=Un(c,"httpQuery",Ne.kml);l(C)&&u.setQueryParameters(Fu(k4(C))),l(E)&&u.setQueryParameters(Fu(k4(E)));let I=e._ellipsoid;OX(u,e.camera,e.canvas,h,e._lastCameraView.bbox,I)}let g={sourceUri:A,uriResolver:a,context:r.id,screenOverlayContainer:n.screenOverlayContainer},m=new Ea,_=FX(e,m,u,g).then(function(y){let C=e._entityCollection,E=m.values;C.suspendEvents();for(let S=0;S<E.length;S++){let B=E[S];l(B.parent)||(B.parent=r,QX(B)),C.add(B)}C.resumeEvents();let I=Un(c,"refreshMode",Ne.kml),b=pi(c,"refreshInterval",Ne.kml)??0;if(I==="onInterval"&&b>0||I==="onExpire"||f==="onStop"){let S=Xi(y,"NetworkLinkControl",Ne.kml),B=l(S),v=K.now(),P={id:Xn(),href:u,cookie:{},lastUpdated:v,updating:!1,entity:r,viewBoundScale:h,needsUpdate:!1,cameraUpdateTime:v},M=0;if(B&&(P.cookie=Fu(Un(S,"cookie",Ne.kml)??""),M=pi(S,"minRefreshPeriod",Ne.kml)??0),I==="onInterval")B&&(b=Math.max(M,b)),P.refreshMode=cC.INTERVAL,P.time=b;else if(I==="onExpire"){let L;if(B&&(L=Un(S,"expires",Ne.kml)),l(L))try{let p=K.fromIso8601(L),x=K.secondsDifference(p,v);x>0&&x<M&&K.addSeconds(v,M,p),P.refreshMode=cC.EXPIRE,P.time=p}catch{yt("kml-refreshMode-onInterval-onExpire","KML - NetworkLinkControl expires is not a valid date")}else yt("kml-refreshMode-onExpire","KML - refreshMode of onExpire requires the NetworkLinkControl to have an expires element")}else l(e.camera)?(P.refreshMode=cC.STOP,P.time=pi(c,"viewRefreshTime",Ne.kml)??0):yt("kml-refrehMode-onStop-noCamera","A NetworkLink with viewRefreshMode=onStop requires the `camera` property to be defined.");l(P.refreshMode)&&e._networkLinks.set(P.id,P)}}).catch(function(y){yt(`An error occured during loading ${u.url}`),e._error.raiseEvent(e,y)});i.addPromise(_)}}}function Hft(e,t,n,i){let o=PX[t.localName];return l(o)?o(e,t,n,i):zEe(e,t,n,i)}function DX(e,t,n,i,o,r,s){t.removeAll();let a=n.documentElement,c=a.localName==="Document"?a:Xi(a,"Document",Ne.kml),u=Un(c,"name",Ne.kml);l(u)||(u=xg(i.getUrlComponent())),l(e._name)||(e._name=u);let f=new bf._DeferredLoading(e),h=new Ea(e);return Promise.all(LEe(e,n,h,i,!1,o)).then(function(){let A=n.documentElement;if(A.localName==="kml"){let m=A.childNodes;for(let _=0;_<m.length;_++){let y=m[_];if(l(PX[y.localName])){A=y;break}}}let g={parentEntity:void 0,entityCollection:t,styleCollection:h,sourceResource:i,uriResolver:o,context:s,screenOverlayContainer:r};return t.suspendEvents(),Hft(e,A,g,f),t.resumeEvents(),f.wait().then(function(){return n.documentElement})})}function Wft(e,t,n,i,o){let r=fn("ThirdParty/Workers/z-worker-pako.js");jS({workerScripts:{deflate:[r,"./pako_deflate.min.js"],inflate:[r,"./pako_inflate.min.js"]}});let s=new iw(new zg(n));return Promise.resolve(s.getEntries()).then(function(a){let c=[],u={},f;for(let h=0;h<a.length;h++){let A=a[h];A.directory||(/\.kml$/i.test(A.filename)&&(!l(f)||!/\//i.test(A.filename))?(l(f)&&c.push(bX(f,u)),f=A):c.push(bX(A,u)))}return l(f)&&c.push(gft(f,u)),Promise.all(c).then(function(){if(s.close(),!l(u.kml))throw new ce("KMZ file does not contain a KML document.");return u.keys=Object.keys(u),DX(e,t,u.kml,i,u,o)})})}function FX(e,t,n,i){i=i??V.EMPTY_OBJECT;let o=i.sourceUri,r=i.uriResolver,s=i.context,a=i.screenOverlayContainer,c=n;if(typeof n=="string"||n instanceof we){n=we.createIfNeeded(n),c=n.fetchBlob(),o=o??n.clone();let u=e._resourceCredits,f=n.credits;if(l(f)){let h=f.length;for(let A=0;A<h;A++)u.push(f[A])}}else o=o??we.DEFAULT.clone();return o=we.createIfNeeded(o),l(a)&&(a=kn(a)),Promise.resolve(c).then(function(u){return u instanceof Blob?Aft(u).then(function(f){return f?Wft(e,t,u,o,a):pft(u).then(function(h){h=vEe(h),h=PEe(h);let A,g;try{A=vX.parseFromString(h,"application/xml")}catch(m){g=m.toString()}if(l(g)||A.body||A.documentElement.tagName==="parsererror"){let m=l(g)?g:A.documentElement.firstChild.nodeValue;throw m||(m=A.body.innerText),new ce(m)}return DX(e,t,A,o,r,a,s)})}):DX(e,t,u,o,r,a,s)}).catch(function(u){return e._error.raiseEvent(e,u),console.log(u),Promise.reject(u)})}function bf(e){e=e??V.EMPTY_OBJECT;let t=e.camera,n=e.canvas;this._changed=new _e,this._error=new _e,this._loading=new _e,this._refresh=new _e,this._unsupportedNode=new _e,this._clock=void 0,this._entityCollection=new Ea(this),this._name=void 0,this._isLoading=!1,this._pinBuilder=new Og,this._networkLinks=new vt,this._entityCluster=new lf,this.canvas=n,this.camera=t,this._lastCameraView={position:l(t)?d.clone(t.positionWC):void 0,direction:l(t)?d.clone(t.directionWC):void 0,up:l(t)?d.clone(t.upWC):void 0,bbox:l(t)?t.computeViewRectangle():ae.clone(ae.MAX_VALUE)},this._ellipsoid=e.ellipsoid??te.default;let i=e.credit;typeof i=="string"&&(i=new Bt(i)),this._credit=i,this._resourceCredits=[],this._kmlTours=[],this._screenOverlays=[]}bf.load=function(e,t){return t=t??V.EMPTY_OBJECT,new bf(t).load(e,t)};Object.defineProperties(bf.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},refreshEvent:{get:function(){return this._refresh}},unsupportedNodeEvent:{get:function(){return this._unsupportedNode}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}},kmlTours:{get:function(){return this._kmlTours}}});bf.prototype.load=function(e,t){t=t??V.EMPTY_OBJECT,us.setLoading(this,!0);let n=this._name;this._name=void 0,this._clampToGround=t.clampToGround??!1;let i=this;return FX(this,this._entityCollection,e,t).then(function(){let o,r=i._entityCollection.computeAvailability(),s=r.start,a=r.stop,c=K.equals(s,je.MINIMUM_VALUE),u=K.equals(a,je.MAXIMUM_VALUE);if(!c||!u){let h;c&&(h=new Date,h.setHours(0,0,0,0),s=K.fromDate(h)),u&&(h=new Date,h.setHours(24,0,0,0),a=K.fromDate(h)),o=new Jh,o.startTime=s,o.stopTime=a,o.currentTime=K.clone(s),o.clockRange=fs.LOOP_STOP,o.clockStep=wo.SYSTEM_CLOCK_MULTIPLIER,o.multiplier=Math.round(Math.min(Math.max(K.secondsDifference(a,s)/60,1),31556900))}let f=!1;return o!==i._clock&&(i._clock=o,f=!0),n!==i._name&&(f=!0),f&&i._changed.raiseEvent(i),us.setLoading(i,!1),i}).catch(function(o){return us.setLoading(i,!1),i._error.raiseEvent(i,o),console.log(o),Promise.reject(o)})};bf.prototype.destroy=function(){for(;this._screenOverlays.length>0;)this._screenOverlays.pop().remove()};function QX(e){let t=e.parent;if(l(t)){let n=t.availability;if(l(n)){let i=e.availability;l(i)?i.intersect(n):e.availability=n}}}function jft(e,t,n,i,o){return function(r){if(!i.contains(t.id))return;let s=!1,a=Xi(r,"NetworkLinkControl",Ne.kml),c=l(a),u=0;if(c){if(l(Xi(a,"Update",Ne.kml))){yt("kml-networkLinkControl-update","KML - NetworkLinkControl updates aren't supported."),t.updating=!1,i.remove(t.id);return}t.cookie=Fu(Un(a,"cookie",Ne.kml)??""),u=pi(a,"minRefreshPeriod",Ne.kml)??0}let f=K.now(),h=t.refreshMode;if(h===cC.INTERVAL)l(a)&&(t.time=Math.max(u,t.time));else if(h===cC.EXPIRE){let v;if(l(a)&&(v=Un(a,"expires",Ne.kml)),l(v))try{let P=K.fromIso8601(v),M=K.secondsDifference(P,f);M>0&&M<u&&K.addSeconds(f,u,P),t.time=P}catch{yt("kml-networkLinkControl-expires","KML - NetworkLinkControl expires is not a valid date"),s=!0}else yt("kml-refreshMode-onExpire","KML - refreshMode of onExpire requires the NetworkLinkControl to have an expires element"),s=!0}let A=t.entity,g=e._entityCollection,m=n.values;function _(v){g.remove(v);let P=v._children,M=P.length;for(let L=0;L<M;++L)_(P[L])}g.suspendEvents();let y=g.values.slice(),C;for(C=0;C<y.length;++C){let v=y[C];v.parent===A&&(v.parent=void 0,_(v))}for(g.resumeEvents(),g.suspendEvents(),C=0;C<m.length;C++){let v=m[C];l(v.parent)||(v.parent=A,QX(v)),g.add(v)}g.resumeEvents(),s?i.remove(t.id):t.lastUpdated=f;let E=g.computeAvailability(),I=E.start,b=E.stop,S=K.equals(I,je.MINIMUM_VALUE),B=K.equals(b,je.MAXIMUM_VALUE);if(!S||!B){let v=e._clock;(v.startTime!==I||v.stopTime!==b)&&(v.startTime=I,v.stopTime=b,e._changed.raiseEvent(e))}t.updating=!1,t.needsUpdate=!1,e._refresh.raiseEvent(e,o.getUrlComponent(!0))}}var wX=new vt;bf.prototype.update=function(e){let t=this._networkLinks;if(t.length===0)return!0;let n=K.now(),i=this;wX.removeAll();function o(f){let h=f._children,A=h.length;for(let g=0;g<A;++g){let m=h[g];wX.set(m.id,m),o(m)}}let r=!1,s=this._lastCameraView,a=this.camera;l(a)&&!(a.positionWC.equalsEpsilon(s.position,D.EPSILON7)&&a.directionWC.equalsEpsilon(s.direction,D.EPSILON7)&&a.upWC.equalsEpsilon(s.up,D.EPSILON7))&&(s.position=d.clone(a.positionWC),s.direction=d.clone(a.directionWC),s.up=d.clone(a.upWC),s.bbox=a.computeViewRectangle(),r=!0);let c=new vt,u=!1;return t.values.forEach(function(f){let h=f.entity;if(!wX.contains(h.id)){if(!f.updating){let A=!1;if(f.refreshMode===cC.INTERVAL?K.secondsDifference(n,f.lastUpdated)>f.time&&(A=!0):f.refreshMode===cC.EXPIRE?K.greaterThan(n,f.time)&&(A=!0):f.refreshMode===cC.STOP&&(r&&(f.needsUpdate=!0,f.cameraUpdateTime=n),f.needsUpdate&&K.secondsDifference(n,f.cameraUpdateTime)>=f.time&&(A=!0)),A){o(h),f.updating=!0;let g=new Ea,m=f.href.clone();m.setQueryParameters(f.cookie);let _=i._ellipsoid??te.default;OX(m,i.camera,i.canvas,f.viewBoundScale,s.bbox,_),FX(i,g,m,{context:h.id}).then(jft(i,f,g,c,m)).catch(function(y){let C=`NetworkLink ${f.href} refresh failed: ${y}`;console.log(C),i._error.raiseEvent(i,C)}),u=!0}}c.set(f.id,f)}}),u&&(this._networkLinks=c,this._changed.raiseEvent(this)),!0};function Yft(){this.author={name:void 0,uri:void 0,email:void 0},this.link={href:void 0,hreflang:void 0,rel:void 0,type:void 0,title:void 0,length:void 0},this.address=void 0,this.phoneNumber=void 0,this.snippet=void 0,this.extendedData=void 0}bf._DeferredLoading=wA;bf._getTimestamp=Li;var xI=bf;function _2(){me.throwInstantiationError()}_2.prototype.update=me.throwInstantiationError;_2.prototype.getBoundingSphere=me.throwInstantiationError;_2.prototype.isDestroyed=me.throwInstantiationError;_2.prototype.destroy=me.throwInstantiationError;var kX=_2;var UX=32,qft="http://www.opengis.net/kml/2.2",hm="http://www.google.com/kml/ext/2.2",Kft="http://www.w3.org/2000/xmlns/";function V4(e){this._files={},this._promises=[],this._count=0,this._modelCallback=e}var Xft=/^data:image\/([^,;]+)/;V4.prototype.texture=function(e){let t=this,n;if(typeof e=="string"||e instanceof we){if(e=we.createIfNeeded(e),!e.isDataUri)return e.url;let i=e.url.match(Xft);n=`texture_${++this._count}`,l(i)&&(n+=`.${i[1]}`);let o=e.fetchBlob().then(function(r){t._files[n]=r});return this._promises.push(o),n}if(e instanceof HTMLCanvasElement){n=`texture_${++this._count}.png`;let i=new Promise(o=>{e.toBlob(function(r){t._files[n]=r,o()})});return this._promises.push(i),n}return""};function Jft(e,t){return function(n){e._files[t]=n}}V4.prototype.model=function(e,t){let n=this._modelCallback;if(!l(n))throw new ce("Encountered a model entity while exporting to KML, but no model callback was supplied.");let i={},o=n(e,t,i);for(let r in i)if(i.hasOwnProperty(r)){let s=Promise.resolve(i[r]);this._promises.push(s),s.then(Jft(this,r))}return o};Object.defineProperties(V4.prototype,{promise:{get:function(){return Promise.all(this._promises)}},files:{get:function(){return this._files}}});function H4(e){this._time=e}H4.prototype.get=function(e,t,n){let i;return l(e)&&(i=l(e.getValue)?e.getValue(this._time,n):e),i??t};H4.prototype.getColor=function(e,t){let n=this.get(e,t);if(l(n))return TI(n)};H4.prototype.getMaterialType=function(e){if(l(e))return e.getType(this._time)};function GX(){this._ids={},this._styles={},this._count=0}GX.prototype.get=function(e){let t=this._ids,n=e.innerHTML;if(l(t[n]))return t[n];let i=`style-${++this._count}`;return e.setAttribute("id",i),i=`#${i}`,t[n]=i,this._styles[n]=e,i};GX.prototype.save=function(e){let t=this._styles,n=e.childNodes[0];for(let i in t)t.hasOwnProperty(i)&&e.insertBefore(t[i],n)};function WEe(){this._ids={}}WEe.prototype.get=function(e){if(!l(e))return this.get(Xn());let t=this._ids;return l(t[e])?`${e.toString()}-${++t[e]}`:(t[e]=0,e)};function zX(e){e=e??V.EMPTY_OBJECT;let t=e.entities,n=e.kmz??!1,i=zX._createState(e),o=t.values.filter(function(u){return!l(u.parent)}),r=i.kmlDoc,s=r.documentElement;s.setAttributeNS(Kft,"xmlns:gx",hm);let a=r.createElement("Document");s.appendChild(a),YEe(i,a,o),i.styleCache.save(a);let c=i.externalFileHandler;return c.promise.then(function(){let f=new XMLSerializer().serializeToString(i.kmlDoc);return n?Zft(f,c.files):{kml:f,externalFiles:c.files}})}function Zft(e,t){let n=fn("ThirdParty/Workers/z-worker-pako.js");jS({workerScripts:{deflate:[n,"./pako_deflate.min.js"],inflate:[n,"./pako_inflate.min.js"]}});let i=new t2,o=new N4(i);return o.add("doc.kml",new f4(e)).then(function(){let r=Object.keys(t);return jEe(o,r,t,0)}).then(function(){return o.close()}).then(function(r){return{kmz:r}})}function jEe(e,t,n,i){if(t.length===i)return;let o=t[i];return e.add(o,new zg(n[o])).then(function(){return jEe(e,t,n,i+1)})}zX._createState=function(e){let t=e.entities,n=new GX,i=t.computeAvailability(),o=l(e.time)?e.time:i.start,r=e.defaultAvailability??i,s=e.sampleDuration??60;r.start===je.MINIMUM_VALUE?r.stop===je.MAXIMUM_VALUE?r=new Pn:K.addSeconds(r.stop,-10*s,r.start):r.stop===je.MAXIMUM_VALUE&&K.addSeconds(r.start,10*s,r.stop);let a=new V4(e.modelCallback);return{kmlDoc:document.implementation.createDocument(qft,"kml"),ellipsoid:e.ellipsoid??te.default,idManager:new WEe,styleCache:n,externalFileHandler:a,time:o,valueGetter:new H4(o),sampleDuration:s,defaultAvailability:new ls([r])}};function YEe(e,t,n){let i=e.kmlDoc,o=e.styleCache,r=e.valueGetter,s=e.idManager,a=n.length,c,u,f;for(let h=0;h<a;++h){let A=n[h];c=[],u=[],f=[],$ft(e,A,u,f),edt(e,A.polyline,u,f),HEe(e,A.rectangle,u,f,c),HEe(e,A.polygon,u,f,c),odt(e,A,A.model,u,f);let g,m=A.availability;l(m)&&(g=i.createElement("TimeSpan"),K.equals(m.start,je.MINIMUM_VALUE)||g.appendChild(Cn(i,"begin",K.toIso8601(m.start))),K.equals(m.stop,je.MAXIMUM_VALUE)||g.appendChild(Cn(i,"end",K.toIso8601(m.stop))));for(let C=0;C<c.length;++C){let E=c[C];E.setAttribute("id",s.get(A.id)),E.appendChild(Cn(i,"name",A.name)),E.appendChild(Cn(i,"visibility",A.show)),E.appendChild(Cn(i,"description",A.description)),l(g)&&E.appendChild(g),t.appendChild(E)}let _=u.length;if(_>0){let C=i.createElement("Placemark");C.setAttribute("id",s.get(A.id));let E=A.name,I=A.label;if(l(I)){let S=i.createElement("LabelStyle"),B=r.get(I.text);E=l(B)&&B.length>0?B:E;let v=r.getColor(I.fillColor);l(v)&&(S.appendChild(Cn(i,"color",v)),S.appendChild(Cn(i,"colorMode","normal")));let P=r.get(I.scale);l(P)&&S.appendChild(Cn(i,"scale",P)),f.push(S)}C.appendChild(Cn(i,"name",E)),C.appendChild(Cn(i,"visibility",A.show)),C.appendChild(Cn(i,"description",A.description)),l(g)&&C.appendChild(g),t.appendChild(C);let b=f.length;if(b>0){let S=i.createElement("Style");for(let B=0;B<b;++B)S.appendChild(f[B]);C.appendChild(Cn(i,"styleUrl",o.get(S)))}if(u.length===1)C.appendChild(u[0]);else if(u.length>1){let S=i.createElement("MultiGeometry");for(let B=0;B<_;++B)S.appendChild(u[B]);C.appendChild(S)}}let y=A._children;if(y.length>0){let C=i.createElement("Folder");C.setAttribute("id",s.get(A.id)),C.appendChild(Cn(i,"name",A.name)),C.appendChild(Cn(i,"visibility",A.show)),C.appendChild(Cn(i,"description",A.description)),t.appendChild(C),YEe(e,C,y)}}}var Tu=new d,zl=new Ae,dm=new K;function $ft(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=e.valueGetter,a=t.billboard??t.point;if(!l(a)&&!l(t.path))return;let c=t.position;if(!c.isConstant){qEe(e,t,a,n,i);return}s.get(c,void 0,Tu);let u=Cn(o,"coordinates",bI(Tu,r)),f=o.createElement("Point"),h=o.createElement("altitudeMode");h.appendChild(SI(e,a.heightReference)),f.appendChild(h),f.appendChild(u),n.push(f);let A=a instanceof Tc?XEe(e,a):KEe(e,a);i.push(A)}function qEe(e,t,n,i,o){let r=e.kmlDoc,s=e.ellipsoid,a=e.valueGetter,c,u=t.position,f=!0;u instanceof ja?(c=u.intervals,f=!1):c=t.availability??e.defaultAvailability;let h=n instanceof Ap,A,g,m,_=[];for(A=0;A<c.length;++A){let C=c.get(A),E=f?u:C.data,I=r.createElement("altitudeMode");E instanceof pA?(E=E._value,I.appendChild(SI(e,Ze.CLAMP_TO_GROUND))):l(n)?I.appendChild(SI(e,n.heightReference)):I.appendChild(SI(e,Ze.NONE));let b=[],S=[];if(E.isConstant){a.get(E,void 0,Tu);let v=Cn(r,"coordinates",bI(Tu,s));b.push(K.toIso8601(C.start)),S.push(v),b.push(K.toIso8601(C.stop)),S.push(v)}else if(E instanceof qa)for(m=E._property._times,g=0;g<m.length;++g)b.push(K.toIso8601(m[g])),E.getValueInReferenceFrame(m[g],$i.FIXED,Tu),S.push(bI(Tu,s));else if(E instanceof hf){m=E._times;let v=E._values;for(g=0;g<m.length;++g)b.push(K.toIso8601(m[g])),d.fromArray(v,g*3,Tu),S.push(bI(Tu,s))}else{let v=e.sampleDuration;C.start.clone(dm),C.isStartIncluded||K.addSeconds(dm,v,dm);let P=C.stop;for(;K.lessThan(dm,P);)E.getValue(dm,Tu),b.push(K.toIso8601(dm)),S.push(bI(Tu,s)),K.addSeconds(dm,v,dm);C.isStopIncluded&&K.equals(dm,P)&&(E.getValue(dm,Tu),b.push(K.toIso8601(dm)),S.push(bI(Tu,s)))}let B=r.createElementNS(hm,"Track");B.appendChild(I);for(let v=0;v<b.length;++v){let P=Cn(r,"when",b[v]),M=Cn(r,"coord",S[v],hm);B.appendChild(P),B.appendChild(M)}h&&B.appendChild(JEe(e,n)),_.push(B)}if(_.length===1)i.push(_[0]);else if(_.length>1){let C=r.createElementNS(hm,"MultiTrack");for(A=0;A<_.length;++A)C.appendChild(_[A]);i.push(C)}if(l(n)&&!h){let C=n instanceof Tc?XEe(e,n):KEe(e,n);o.push(C)}let y=t.path;if(l(y)){let C=a.get(y.width),E=y.material;if(l(E)||l(C)){let I=r.createElement("LineStyle");l(C)&&I.appendChild(Cn(r,"width",C)),VX(e,E,I),o.push(I)}}}function KEe(e,t){let n=e.kmlDoc,i=e.valueGetter,o=n.createElement("IconStyle"),r=i.getColor(t.color);l(r)&&(o.appendChild(Cn(n,"color",r)),o.appendChild(Cn(n,"colorMode","normal")));let s=i.get(t.pixelSize);return l(s)&&o.appendChild(Cn(n,"scale",s/UX)),o}function XEe(e,t){let n=e.kmlDoc,i=e.valueGetter,o=e.externalFileHandler,r=n.createElement("IconStyle"),s=i.get(t.image);if(l(s)){s=o.texture(s);let A=n.createElement("Icon");A.appendChild(Cn(n,"href",s));let g=i.get(t.imageSubRegion);l(g)&&(A.appendChild(Cn(n,"x",g.x,hm)),A.appendChild(Cn(n,"y",g.y,hm)),A.appendChild(Cn(n,"w",g.width,hm)),A.appendChild(Cn(n,"h",g.height,hm))),r.appendChild(A)}let a=i.getColor(t.color);l(a)&&(r.appendChild(Cn(n,"color",a)),r.appendChild(Cn(n,"colorMode","normal")));let c=i.get(t.scale);l(c)&&r.appendChild(Cn(n,"scale",c));let u=i.get(t.pixelOffset);if(l(u)){c=c??1,U.divideByScalar(u,c,u);let A=i.get(t.width,UX),g=i.get(t.height,UX),m=i.get(t.horizontalOrigin,Ri.CENTER);m===Ri.CENTER?u.x-=A*.5:m===Ri.RIGHT&&(u.x-=A);let _=i.get(t.verticalOrigin,zn.CENTER);_===zn.TOP?u.y+=g:_===zn.CENTER&&(u.y+=g*.5);let y=n.createElement("hotSpot");y.setAttribute("x",-u.x),y.setAttribute("y",u.y),y.setAttribute("xunits","pixels"),y.setAttribute("yunits","pixels"),r.appendChild(y)}let f=i.get(t.rotation),h=i.get(t.alignedAxis);return l(f)&&d.equals(d.UNIT_Z,h)&&(f=D.toDegrees(-f),f===0&&(f=360),r.appendChild(Cn(n,"heading",f))),r}function edt(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=e.valueGetter;if(!l(t))return;let a=o.createElement("LineString"),c=o.createElement("altitudeMode"),u=s.get(t.clampToGround,!1),f;u?(a.appendChild(Cn(o,"tessellate",!0)),f=o.createTextNode("clampToGround")):f=o.createTextNode("absolute"),c.appendChild(f),a.appendChild(c);let h=t.positions,A=s.get(h),g=Cn(o,"coordinates",bI(A,r));a.appendChild(g);let m=s.get(t.zIndex);u&&l(m)&&a.appendChild(Cn(o,"drawOrder",m,hm)),n.push(a);let _=o.createElement("LineStyle"),y=s.get(t.width);l(y)&&_.appendChild(Cn(o,"width",y)),VX(e,t.material,_),i.push(_)}function tdt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=o.get(t.height,0);n>0&&(r=n);let s=t.coordinates,a=o.get(s),c=[],u=[ae.northeast,ae.southeast,ae.southwest,ae.northwest];for(let g=0;g<4;++g)u[g](a,zl),c.push(`${D.toDegrees(zl.longitude)},${D.toDegrees(zl.latitude)},${r}`);let f=Cn(i,"coordinates",c.join(" ")),h=i.createElement("outerBoundaryIs"),A=i.createElement("LinearRing");return A.appendChild(f),h.appendChild(A),[h]}function VEe(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=[],a=t.length;for(let f=0;f<a;++f)Ae.fromCartesian(t[f],r,zl),s.push(`${D.toDegrees(zl.longitude)},${D.toDegrees(zl.latitude)},${i?zl.height:n}`);let c=Cn(o,"coordinates",s.join(" ")),u=o.createElement("LinearRing");return u.appendChild(c),u}function ndt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=o.get(t.height,0),s=o.get(t.perPositionHeight,!1);!s&&n>0&&(r=n);let a=[],c=t.hierarchy,u=o.get(c),f=Array.isArray(u)?u:u.positions,h=i.createElement("outerBoundaryIs");h.appendChild(VEe(e,f,r,s)),a.push(h);let A=u.holes;if(l(A)){let g=A.length;for(let m=0;m<g;++m){let _=i.createElement("innerBoundaryIs");_.appendChild(VEe(e,A[m].positions,r,s)),a.push(_)}}return a}function HEe(e,t,n,i,o){let r=e.kmlDoc,s=e.valueGetter;if(!l(t))return;let a=t instanceof gh;if(a&&s.getMaterialType(t.material)==="Image"){idt(e,t,o);return}let c=r.createElement("Polygon"),u=s.get(t.extrudedHeight,0);u>0&&c.appendChild(Cn(r,"extrude",!0));let f=a?tdt(e,t,u):ndt(e,t,u),h=f.length;for(let y=0;y<h;++y)c.appendChild(f[y]);let A=r.createElement("altitudeMode");A.appendChild(SI(e,t.heightReference)),c.appendChild(A),n.push(c);let g=r.createElement("PolyStyle"),m=s.get(t.fill,!1);m&&g.appendChild(Cn(r,"fill",m)),VX(e,t.material,g);let _=s.get(t.outline,!1);if(_){g.appendChild(Cn(r,"outline",_));let y=r.createElement("LineStyle"),C=s.get(t.outlineWidth,1);y.appendChild(Cn(r,"width",C));let E=s.getColor(t.outlineColor,G.BLACK);y.appendChild(Cn(r,"color",E)),y.appendChild(Cn(r,"colorMode","normal")),i.push(y)}i.push(g)}function idt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=e.externalFileHandler,s=i.createElement("GroundOverlay"),a=i.createElement("altitudeMode");a.appendChild(SI(e,t.heightReference)),s.appendChild(a);let c=o.get(t.height);l(c)&&s.appendChild(Cn(i,"altitude",c));let u=o.get(t.coordinates),f=i.createElement("LatLonBox");f.appendChild(Cn(i,"north",D.toDegrees(u.north))),f.appendChild(Cn(i,"south",D.toDegrees(u.south))),f.appendChild(Cn(i,"east",D.toDegrees(u.east))),f.appendChild(Cn(i,"west",D.toDegrees(u.west))),s.appendChild(f);let h=o.get(t.material),A=r.texture(h.image),g=i.createElement("Icon");g.appendChild(Cn(i,"href",A)),s.appendChild(g);let m=h.color;l(m)&&s.appendChild(Cn(i,"color",TI(h.color))),n.push(s)}function JEe(e,t){let n=e.kmlDoc,i=e.valueGetter,o=e.externalFileHandler,r=n.createElement("Model"),s=i.get(t.scale);if(l(s)){let u=n.createElement("scale");u.appendChild(Cn(n,"x",s)),u.appendChild(Cn(n,"y",s)),u.appendChild(Cn(n,"z",s)),r.appendChild(u)}let a=n.createElement("Link"),c=o.model(t,e.time);return a.appendChild(Cn(n,"href",c)),r.appendChild(a),r}function odt(e,t,n,i,o){let r=e.kmlDoc,s=e.ellipsoid,a=e.valueGetter;if(!l(n))return;let c=t.position;if(!c.isConstant){qEe(e,t,n,i,o);return}let u=JEe(e,n),f=r.createElement("altitudeMode");f.appendChild(SI(e,n.heightReference)),u.appendChild(f),a.get(c,void 0,Tu),Ae.fromCartesian(Tu,s,zl);let h=r.createElement("Location");h.appendChild(Cn(r,"longitude",D.toDegrees(zl.longitude))),h.appendChild(Cn(r,"latitude",D.toDegrees(zl.latitude))),h.appendChild(Cn(r,"altitude",zl.height)),u.appendChild(h),i.push(u)}function VX(e,t,n){let i=e.kmlDoc,o=e.valueGetter;if(!l(t))return;let r=o.get(t);if(!l(r))return;let s,a=o.getMaterialType(t),c,u;switch(a){case"Image":s=TI(G.WHITE);break;case"Color":case"Grid":case"PolylineGlow":case"PolylineArrow":case"PolylineDash":s=TI(r.color);break;case"PolylineOutline":s=TI(r.color),c=TI(r.outlineColor),u=r.outlineWidth,n.appendChild(Cn(i,"outerColor",c,hm)),n.appendChild(Cn(i,"outerWidth",u,hm));break;case"Stripe":s=TI(r.oddColor);break}l(s)&&(n.appendChild(Cn(i,"color",s)),n.appendChild(Cn(i,"colorMode","normal")))}function SI(e,t){let n=e.kmlDoc,o=e.valueGetter.get(t,Ze.NONE),r;switch(o){case Ze.NONE:r=n.createTextNode("absolute");break;case Ze.CLAMP_TO_GROUND:r=n.createTextNode("clampToGround");break;case Ze.RELATIVE_TO_GROUND:r=n.createTextNode("relativeToGround");break}return r}function bI(e,t){Array.isArray(e)||(e=[e]);let n=e.length,i=[];for(let o=0;o<n;++o)Ae.fromCartesian(e[o],t,zl),i.push(`${D.toDegrees(zl.longitude)},${D.toDegrees(zl.latitude)},${zl.height}`);return i.join(" ")}function Cn(e,t,n,i){n=n??"",typeof n=="boolean"&&(n=n?"1":"0");let o=l(i)?e.createElementNS(i,t):e.createElement(t),r=n==="string"&&n.indexOf("<")!==-1?e.createCDATASection(n):e.createTextNode(n);return o.appendChild(r),o}function TI(e){let t="",n=e.toBytes();for(let i=3;i>=0;--i)t+=n[i]<16?`0${n[i].toString(16)}`:n[i].toString(16);return t}var HX=zX;var wI=`in vec4 position; +in vec2 textureCoordinates; + +out vec2 v_textureCoordinates; + +void main() +{ + gl_Position = position; + v_textureCoordinates = textureCoordinates; +} +`;function W4(e){this._context=e}var y2,rdt=new nt({primitiveType:Me.TRIANGLES}),sdt=new Ci({color:new G(0,0,0,0)});function adt(e,t){return new $r({context:e,colorTextures:[t],destroyAttachments:!1})}function cdt(e,t){return an.fromCache({context:e,vertexShaderSource:wI,fragmentShaderSource:t,attributeLocations:{position:0,textureCoordinates:1}})}function ldt(e,t){return(!l(y2)||y2.viewport.width!==e||y2.viewport.height!==t)&&(y2=Ue.fromCache({viewport:new Ye(0,0,e,t)})),y2}W4.prototype.execute=function(e){l(e.preExecute)&&e.preExecute(e);let t=e.outputTexture,n=t.width,i=t.height,o=this._context,r=l(e.vertexArray)?e.vertexArray:o.getViewportQuadVertexArray(),s=l(e.shaderProgram)?e.shaderProgram:cdt(o,e.fragmentShaderSource),a=adt(o,t),c=ldt(n,i),u=e.uniformMap,f=sdt;f.framebuffer=a,f.renderState=c,f.execute(o);let h=rdt;h.vertexArray=r,h.renderState=c,h.shaderProgram=s,h.uniformMap=u,h.framebuffer=a,h.execute(o),a.destroy(),e.persists||(s.destroy(),l(e.vertexArray)&&r.destroy()),l(e.postExecute)&&e.postExecute(t)};W4.prototype.isDestroyed=function(){return!1};W4.prototype.destroy=function(){return ue(this)};var C2=W4;function udt(e){this.context=e,this.framebuffer=void 0,this.blendingEnabled=void 0,this.scissorTest=void 0,this.viewport=void 0}var Xc=udt;function mm(e){this._context=e,this._shaders={},this._numberOfShaders=0,this._shadersToRelease={}}Object.defineProperties(mm.prototype,{numberOfShaders:{get:function(){return this._numberOfShaders}}});mm.prototype.replaceShaderProgram=function(e){return l(e.shaderProgram)&&e.shaderProgram.destroy(),this.getShaderProgram(e)};function fdt(e){let t=Object.keys(e).sort();return JSON.stringify(e,t)}mm.prototype.getShaderProgram=function(e){let t=e.vertexShaderSource,n=e.fragmentShaderSource,i=e.attributeLocations;typeof t=="string"&&(t=new He({sources:[t]})),typeof n=="string"&&(n=new He({sources:[n]}));let o=t.getCacheKey(),r=n.getCacheKey(),s=l(i)?fdt(i):"",a=`${o}:${r}:${s}`,c;if(l(this._shaders[a]))c=this._shaders[a],delete this._shadersToRelease[a];else{let u=this._context,f=t.createCombinedVertexShader(u),h=n.createCombinedFragmentShader(u),A=new an({gl:u._gl,logShaderCompilation:u.logShaderCompilation,debugShaders:u.debugShaders,vertexShaderSource:t,vertexShaderText:f,fragmentShaderSource:n,fragmentShaderText:h,attributeLocations:i});c={cache:this,shaderProgram:A,keyword:a,derivedKeywords:[],count:0},A._cachedShader=c,this._shaders[a]=c,++this._numberOfShaders}return++c.count,c.shaderProgram};mm.prototype.replaceDerivedShaderProgram=function(e,t,n){let i=e._cachedShader,o=t+i.keyword,r=this._shaders[o];if(l(r)){WX(this,r);let s=i.derivedKeywords.indexOf(t);s>-1&&i.derivedKeywords.splice(s,1)}return this.createDerivedShaderProgram(e,t,n)};mm.prototype.getDerivedShaderProgram=function(e,t){let n=e._cachedShader,i=t+n.keyword,o=this._shaders[i];if(l(o))return o.shaderProgram};mm.prototype.createDerivedShaderProgram=function(e,t,n){let i=e._cachedShader,o=t+i.keyword,r=n.vertexShaderSource,s=n.fragmentShaderSource,a=n.attributeLocations;typeof r=="string"&&(r=new He({sources:[r]})),typeof s=="string"&&(s=new He({sources:[s]}));let c=this._context,u=r.createCombinedVertexShader(c),f=s.createCombinedFragmentShader(c),h=new an({gl:c._gl,logShaderCompilation:c.logShaderCompilation,debugShaders:c.debugShaders,vertexShaderSource:r,vertexShaderText:u,fragmentShaderSource:s,fragmentShaderText:f,attributeLocations:a}),A={cache:this,shaderProgram:h,keyword:o,derivedKeywords:[],count:0};return i.derivedKeywords.push(t),h._cachedShader=A,this._shaders[o]=A,h};function WX(e,t){let n=t.derivedKeywords,i=n.length;for(let o=0;o<i;++o){let r=n[o]+t.keyword,s=e._shaders[r];WX(e,s)}delete e._shaders[t.keyword],t.shaderProgram.finalDestroy()}mm.prototype.destroyReleasedShaderPrograms=function(){let e=this._shadersToRelease;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];WX(this,n),--this._numberOfShaders}this._shadersToRelease={}};mm.prototype.releaseShaderProgram=function(e){if(l(e)){let t=e._cachedShader;t&&--t.count===0&&(this._shadersToRelease[t.keyword]=t)}};mm.prototype.isDestroyed=function(){return!1};mm.prototype.destroy=function(){let e=this._shaders;for(let t in e)e.hasOwnProperty(t)&&e[t].shaderProgram.finalDestroy();return ue(this)};var E2=mm;function BI(){this._textures={},this._numberOfTextures=0,this._texturesToRelease={}}Object.defineProperties(BI.prototype,{numberOfTextures:{get:function(){return this._numberOfTextures}}});BI.prototype.getTexture=function(e){let t=this._textures[e];if(l(t))return delete this._texturesToRelease[e],++t.count,t.texture};BI.prototype.addTexture=function(e,t){let n={texture:t,count:1};t.finalDestroy=t.destroy;let i=this;t.destroy=function(){--n.count===0&&(i._texturesToRelease[e]=n)},this._textures[e]=n,++this._numberOfTextures};BI.prototype.destroyReleasedTextures=function(){let e=this._texturesToRelease;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];delete this._textures[t],n.texture.finalDestroy(),--this._numberOfTextures}this._texturesToRelease={}};BI.prototype.isDestroyed=function(){return!1};BI.prototype.destroy=function(){let e=this._textures;for(let t in e)e.hasOwnProperty(t)&&e[t].texture.finalDestroy();return ue(this)};var I2=BI;var jX={};function ddt(e){let t=6.239996+.0172019696544*e;return .001657*Math.sin(t+.01671*Math.sin(t))}var hdt=32.184,mdt=2451545;function p0e(e,t){t=K.addSeconds(e,hdt,t);let n=K.totalDays(t)-mdt;return t=K.addSeconds(t,ddt(n),t),t}var j4=new K(2451545,0,ni.TAI),Adt=1e3,Fd=D.RADIANS_PER_DEGREE,Tf=D.RADIANS_PER_ARCSECOND,Cc=14959787e4,ZEe=new J;function g0e(e,t,n,i,o,r,s){n<0&&(n=-n,o+=D.PI);let a=e*(1-t),c=i-o,u=o,f=gdt(r-i,t),h=pdt(t,0);Idt(c,n,u,ZEe);let A=a*(1+t),g=Math.cos(f),m=Math.sin(f),_=1+t*g,y=A/_;return l(s)?(s.x=y*g,s.y=y*m,s.z=0):s=new d(y*g,y*m,0),J.multiplyByVector(ZEe,s,s)}function pdt(e,t){return e<=t?"Circular":e<1-t?"Elliptical":e<=1+t?"Parabolic":"Hyperbolic"}function gdt(e,t){let n=Cdt(e,t);return Edt(n,t)}var _dt=50,ydt=D.EPSILON8;function Cdt(e,t){let n=Math.floor(e/D.TWO_PI);e-=n*D.TWO_PI;let i=e+t*Math.sin(e)/(1-Math.sin(e+t)+Math.sin(e)),o=Number.MAX_VALUE,r;for(r=0;r<_dt&&Math.abs(o-i)>ydt;++r){o=i;let s=o-t*Math.sin(o)-e,a=1-t*Math.cos(o);i=o-s/a}return o=i+n*D.TWO_PI,o}function Edt(e,t){let n=Math.floor(e/D.TWO_PI);e-=n*D.TWO_PI;let i=Math.cos(e)-t,o=Math.sin(e)*Math.sqrt(1-t*t),r=Math.atan2(o,i);return r=D.zeroToTwoPi(r),e<0&&(r-=D.TWO_PI),r+=n*D.TWO_PI,r}function Idt(e,t,n,i){let o=Math.cos(e),r=Math.sin(e),s=Math.cos(t),a=Math.sin(t),c=Math.cos(n),u=Math.sin(n);return l(i)?(i[0]=c*o-u*r*s,i[1]=u*o+c*r*s,i[2]=r*a,i[3]=-c*r-u*o*s,i[4]=-u*r+c*o*s,i[5]=o*a,i[6]=u*a,i[7]=-c*a,i[8]=s):i=new J(c*o-u*r*s,-c*r-u*o*s,u*a,u*o+c*r*s,-u*r+c*o*s,-c*a,r*a,o*a,s),i}var xdt=1.0000010178*Cc,bdt=100.46645683*Fd,Tdt=129597742283429e-5*Tf,$Ee=16002,e0e=21863,t0e=32004,n0e=10931,i0e=14529,o0e=16368,r0e=15318,s0e=32794,Sdt=64*1e-7*Cc,wdt=-152*1e-7*Cc,Bdt=62*1e-7*Cc,Ddt=-8*1e-7*Cc,vdt=32*1e-7*Cc,Pdt=-41*1e-7*Cc,Rdt=19*1e-7*Cc,Mdt=-11*1e-7*Cc,Ndt=-150*1e-7*Cc,Ldt=-46*1e-7*Cc,Odt=68*1e-7*Cc,Fdt=54*1e-7*Cc,Qdt=14*1e-7*Cc,kdt=24*1e-7*Cc,Udt=-28*1e-7*Cc,Gdt=22*1e-7*Cc,a0e=10,c0e=16002,l0e=21863,u0e=10931,f0e=1473,d0e=32004,h0e=4387,m0e=73,zdt=-325*1e-7,Vdt=-322*1e-7,Hdt=-79*1e-7,Wdt=232*1e-7,jdt=-52*1e-7,Ydt=97*1e-7,qdt=55*1e-7,Kdt=-41*1e-7,Xdt=-105*1e-7,Jdt=-137*1e-7,Zdt=258*1e-7,$dt=35*1e-7,eht=-116*1e-7,tht=-88*1e-7,nht=-112*1e-7,iht=-80*1e-7,sw=new K(0,0,ni.TAI);function oht(e,t){p0e(e,sw);let i=(sw.dayNumber-j4.dayNumber+(sw.secondsOfDay-j4.secondsOfDay)/ri.SECONDS_PER_DAY)/(ri.DAYS_PER_JULIAN_CENTURY*10),o=.3595362*i,r=xdt+Sdt*Math.cos($Ee*o)+Ndt*Math.sin($Ee*o)+wdt*Math.cos(e0e*o)+Ldt*Math.sin(e0e*o)+Bdt*Math.cos(t0e*o)+Odt*Math.sin(t0e*o)+Ddt*Math.cos(n0e*o)+Fdt*Math.sin(n0e*o)+vdt*Math.cos(i0e*o)+Qdt*Math.sin(i0e*o)+Pdt*Math.cos(o0e*o)+kdt*Math.sin(o0e*o)+Rdt*Math.cos(r0e*o)+Udt*Math.sin(r0e*o)+Mdt*Math.cos(s0e*o)+Gdt*Math.sin(s0e*o),s=bdt+Tdt*i+zdt*Math.cos(a0e*o)+Xdt*Math.sin(a0e*o)+Vdt*Math.cos(c0e*o)+Jdt*Math.sin(c0e*o)+Hdt*Math.cos(l0e*o)+Zdt*Math.sin(l0e*o)+Wdt*Math.cos(u0e*o)+$dt*Math.sin(u0e*o)+jdt*Math.cos(f0e*o)+eht*Math.sin(f0e*o)+Ydt*Math.cos(d0e*o)+tht*Math.sin(d0e*o)+qdt*Math.cos(h0e*o)+nht*Math.sin(h0e*o)+Kdt*Math.cos(m0e*o)+iht*Math.sin(m0e*o),a=.0167086342-.0004203654*i,c=102.93734808*Fd+11612.3529*Tf*i,u=469.97289*Tf*i,f=174.87317577*Fd-8679.27034*Tf*i;return g0e(r,a,u,c,f,s,t)}function _0e(e,t){p0e(e,sw);let i=(sw.dayNumber-j4.dayNumber+(sw.secondsOfDay-j4.secondsOfDay)/ri.SECONDS_PER_DAY)/ri.DAYS_PER_JULIAN_CENTURY,o=i*i,r=o*i,s=r*i,a=383397.7725+.004*i,c=.055545526-16e-9*i,u=5.15668983*Fd,f=-8e-5*i+.02966*o-42e-6*r-13e-8*s,h=83.35324312*Fd,A=146434202669e-4*i-38.2702*o-.045047*r+21301e-8*s,g=125.04455501*Fd,m=-69679193631e-4*i+6.3602*o+.007625*r-3586e-8*s,_=218.31664563*Fd,y=17325593434847e-4*i-6.391*o+.006588*r-3169e-8*s,C=297.85019547*Fd+Tf*(1602961601209e-3*i-6.3706*o+.006593*r-3169e-8*s),E=93.27209062*Fd+Tf*(17395272628478e-4*i-12.7512*o-.001037*r+417e-8*s),I=134.96340251*Fd+Tf*(17179159232178e-4*i+31.8792*o+.051635*r-2447e-7*s),b=357.52910918*Fd+Tf*(1295965810481e-4*i-.5532*o+136e-6*r-1149e-8*s),S=310.17137918*Fd-Tf*(6967051436e-3*i+6.2068*o+.007618*r-3219e-8*s),B=2*C,v=4*C,P=6*C,M=2*I,L=3*I,p=4*I,x=2*E;a+=3400.4*Math.cos(B)-635.6*Math.cos(B-I)-235.6*Math.cos(I)+218.1*Math.cos(B-b)+181*Math.cos(B+I),c+=.014216*Math.cos(B-I)+.008551*Math.cos(B-M)-.001383*Math.cos(I)+.001356*Math.cos(B+I)-.001147*Math.cos(v-L)-914e-6*Math.cos(v-M)+869e-6*Math.cos(B-b-I)-627e-6*Math.cos(B)-394e-6*Math.cos(v-p)+282e-6*Math.cos(B-b-M)-279e-6*Math.cos(C-I)-236e-6*Math.cos(M)+231e-6*Math.cos(v)+229e-6*Math.cos(P-p)-201e-6*Math.cos(M-x),f+=486.26*Math.cos(B-x)-40.13*Math.cos(B)+37.51*Math.cos(x)+25.73*Math.cos(M-x)+19.97*Math.cos(B-b-x),A+=-55609*Math.sin(B-I)-34711*Math.sin(B-M)-9792*Math.sin(I)+9385*Math.sin(v-L)+7505*Math.sin(v-M)+5318*Math.sin(B+I)+3484*Math.sin(v-p)-3417*Math.sin(B-b-I)-2530*Math.sin(P-p)-2376*Math.sin(B)-2075*Math.sin(B-L)-1883*Math.sin(M)-1736*Math.sin(P-5*I)+1626*Math.sin(b)-1370*Math.sin(P-L),m+=-5392*Math.sin(B-x)-540*Math.sin(b)-441*Math.sin(B)+423*Math.sin(x)-288*Math.sin(M-x),y+=-3332.9*Math.sin(B)+1197.4*Math.sin(B-I)-662.5*Math.sin(b)+396.3*Math.sin(I)-218*Math.sin(B-b);let T=2*S,w=3*S;f+=46.997*Math.cos(S)*i-.614*Math.cos(B-x+S)*i+.614*Math.cos(B-x-S)*i-.0297*Math.cos(T)*o-.0335*Math.cos(S)*o+.0012*Math.cos(B-x+T)*o-16e-5*Math.cos(S)*r+4e-5*Math.cos(w)*r+4e-5*Math.cos(T)*r;let R=2.116*Math.sin(S)*i-.111*Math.sin(B-x-S)*i-.0015*Math.sin(S)*o;A+=R,y+=R,m+=-520.77*Math.sin(S)*i+13.66*Math.sin(B-x+S)*i+1.12*Math.sin(B-S)*i-1.06*Math.sin(x-S)*i+.66*Math.sin(T)*o+.371*Math.sin(S)*o-.035*Math.sin(B-x+T)*o-.015*Math.sin(B-x+S)*o+.0014*Math.sin(S)*r-.0011*Math.sin(w)*r-9e-4*Math.sin(T)*r,a*=Adt;let O=u+f*Tf,k=h+A*Tf,Q=_+y*Tf,z=g+m*Tf;return g0e(a,c,O,k,z,Q,t)}var A0e=.012300034,rht=A0e/(A0e+1)*-1;function sht(e,t){return t=_0e(e,t),d.multiplyByScalar(t,rht,t)}var y0e=new J(1.0000000000000002,5619723173785822e-31,4690511510146299e-34,-5154129427414611e-31,.9174820620691819,-.39777715593191376,-223970096136568e-30,.39777715593191376,.9174820620691819),x2=new d;jX.computeSunPositionInEarthInertialFrame=function(e,t){return l(e)||(e=K.now()),l(t)||(t=new d),x2=oht(e,x2),t=d.negate(x2,t),sht(e,x2),d.subtract(t,x2,t),J.multiplyByVector(y0e,t,t),t};jX.computeMoonPositionInEarthInertialFrame=function(e,t){return l(e)||(e=K.now()),t=_0e(e,t),J.multiplyByVector(y0e,t,t),t};var lC=jX;function aht(e){e=e??V.EMPTY_OBJECT,this.color=G.clone(e.color??G.WHITE),this.intensity=e.intensity??2}var Hg=aht;function aw(){this.globeDepthTexture=void 0,this.gamma=void 0,this._viewport=new Ye,this._viewportCartesian4=new se,this._viewportDirty=!1,this._viewportOrthographicMatrix=N.clone(N.IDENTITY),this._viewportTransformation=N.clone(N.IDENTITY),this._model=N.clone(N.IDENTITY),this._view=N.clone(N.IDENTITY),this._inverseView=N.clone(N.IDENTITY),this._projection=N.clone(N.IDENTITY),this._infiniteProjection=N.clone(N.IDENTITY),this._entireFrustum=new U,this._currentFrustum=new U,this._frustumPlanes=new se,this._farDepthFromNearPlusOne=void 0,this._log2FarDepthFromNearPlusOne=void 0,this._oneOverLog2FarDepthFromNearPlusOne=void 0,this._frameState=void 0,this._temeToPseudoFixed=J.clone(N.IDENTITY),this._view3DDirty=!0,this._view3D=new N,this._inverseView3DDirty=!0,this._inverseView3D=new N,this._inverseModelDirty=!0,this._inverseModel=new N,this._inverseTransposeModelDirty=!0,this._inverseTransposeModel=new J,this._viewRotation=new J,this._inverseViewRotation=new J,this._viewRotation3D=new J,this._inverseViewRotation3D=new J,this._inverseProjectionDirty=!0,this._inverseProjection=new N,this._modelViewDirty=!0,this._modelView=new N,this._modelView3DDirty=!0,this._modelView3D=new N,this._modelViewRelativeToEyeDirty=!0,this._modelViewRelativeToEye=new N,this._inverseModelViewDirty=!0,this._inverseModelView=new N,this._inverseModelView3DDirty=!0,this._inverseModelView3D=new N,this._viewProjectionDirty=!0,this._viewProjection=new N,this._inverseViewProjectionDirty=!0,this._inverseViewProjection=new N,this._modelViewProjectionDirty=!0,this._modelViewProjection=new N,this._inverseModelViewProjectionDirty=!0,this._inverseModelViewProjection=new N,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewProjectionRelativeToEye=new N,this._modelViewInfiniteProjectionDirty=!0,this._modelViewInfiniteProjection=new N,this._normalDirty=!0,this._normal=new J,this._normal3DDirty=!0,this._normal3D=new J,this._inverseNormalDirty=!0,this._inverseNormal=new J,this._inverseNormal3DDirty=!0,this._inverseNormal3D=new J,this._encodedCameraPositionMCDirty=!0,this._encodedCameraPositionMC=new ei,this._cameraPosition=new d,this._sunPositionWC=new d,this._sunPositionColumbusView=new d,this._sunDirectionWC=new d,this._sunDirectionEC=new d,this._moonDirectionEC=new d,this._lightDirectionWC=new d,this._lightDirectionEC=new d,this._lightColor=new d,this._lightColorHdr=new d,this._pass=void 0,this._mode=void 0,this._mapProjection=void 0,this._ellipsoid=void 0,this._cameraDirection=new d,this._cameraRight=new d,this._cameraUp=new d,this._frustum2DWidth=0,this._eyeHeight=0,this._eyeHeight2D=new U,this._eyeEllipsoidNormalEC=new d,this._eyeEllipsoidCurvature=new U,this._modelToEnu=new N,this._enuToModel=new N,this._pixelRatio=1,this._orthographicIn3D=!1,this._backgroundColor=new G,this._brdfLut=void 0,this._environmentMap=void 0,this._sphericalHarmonicCoefficients=void 0,this._specularEnvironmentMaps=void 0,this._specularEnvironmentMapsMaximumLOD=void 0,this._fogDensity=void 0,this._fogVisualDensityScalar=void 0,this._fogMinimumBrightness=void 0,this._atmosphereHsbShift=void 0,this._atmosphereLightIntensity=void 0,this._atmosphereRayleighCoefficient=new d,this._atmosphereRayleighScaleHeight=new d,this._atmosphereMieCoefficient=new d,this._atmosphereMieScaleHeight=void 0,this._atmosphereMieAnisotropy=void 0,this._atmosphereDynamicLighting=void 0,this._invertClassificationColor=void 0,this._splitPosition=0,this._pixelSizePerMeter=void 0,this._geometricToleranceOverMeter=void 0,this._minimumDisableDepthTestDistance=void 0}Object.defineProperties(aw.prototype,{frameState:{get:function(){return this._frameState}},viewport:{get:function(){return this._viewport},set:function(e){if(!Ye.equals(e,this._viewport)){Ye.clone(e,this._viewport);let t=this._viewport,n=this._viewportCartesian4;n.x=t.x,n.y=t.y,n.z=t.width,n.w=t.height,this._viewportDirty=!0}}},viewportCartesian4:{get:function(){return this._viewportCartesian4}},viewportOrthographic:{get:function(){return E0e(this),this._viewportOrthographicMatrix}},viewportTransformation:{get:function(){return E0e(this),this._viewportTransformation}},model:{get:function(){return this._model},set:function(e){N.clone(e,this._model),this._modelView3DDirty=!0,this._inverseModelView3DDirty=!0,this._inverseModelDirty=!0,this._inverseTransposeModelDirty=!0,this._modelViewDirty=!0,this._inverseModelViewDirty=!0,this._modelViewRelativeToEyeDirty=!0,this._inverseModelViewDirty=!0,this._modelViewProjectionDirty=!0,this._inverseModelViewProjectionDirty=!0,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewInfiniteProjectionDirty=!0,this._normalDirty=!0,this._inverseNormalDirty=!0,this._normal3DDirty=!0,this._inverseNormal3DDirty=!0,this._encodedCameraPositionMCDirty=!0}},inverseModel:{get:function(){return this._inverseModelDirty&&(this._inverseModelDirty=!1,N.inverse(this._model,this._inverseModel)),this._inverseModel}},inverseTransposeModel:{get:function(){let e=this._inverseTransposeModel;return this._inverseTransposeModelDirty&&(this._inverseTransposeModelDirty=!1,N.getMatrix3(this.inverseModel,e),J.transpose(e,e)),e}},view:{get:function(){return this._view}},view3D:{get:function(){return qX(this),this._view3D}},viewRotation:{get:function(){return qX(this),this._viewRotation}},viewRotation3D:{get:function(){return qX(this),this._viewRotation3D}},inverseView:{get:function(){return this._inverseView}},inverseView3D:{get:function(){return b0e(this),this._inverseView3D}},inverseViewRotation:{get:function(){return this._inverseViewRotation}},inverseViewRotation3D:{get:function(){return b0e(this),this._inverseViewRotation3D}},projection:{get:function(){return this._projection}},inverseProjection:{get:function(){return _ht(this),this._inverseProjection}},infiniteProjection:{get:function(){return this._infiniteProjection}},modelView:{get:function(){return yht(this),this._modelView}},modelView3D:{get:function(){return Cht(this),this._modelView3D}},modelViewRelativeToEye:{get:function(){return Sht(this),this._modelViewRelativeToEye}},inverseModelView:{get:function(){return Eht(this),this._inverseModelView}},inverseModelView3D:{get:function(){return Iht(this),this._inverseModelView3D}},viewProjection:{get:function(){return xht(this),this._viewProjection}},inverseViewProjection:{get:function(){return bht(this),this._inverseViewProjection}},modelViewProjection:{get:function(){return Tht(this),this._modelViewProjection}},inverseModelViewProjection:{get:function(){return wht(this),this._inverseModelViewProjection}},modelViewProjectionRelativeToEye:{get:function(){return Bht(this),this._modelViewProjectionRelativeToEye}},modelViewInfiniteProjection:{get:function(){return Dht(this),this._modelViewInfiniteProjection}},normal:{get:function(){return vht(this),this._normal}},normal3D:{get:function(){return Pht(this),this._normal3D}},inverseNormal:{get:function(){return Rht(this),this._inverseNormal}},inverseNormal3D:{get:function(){return Mht(this),this._inverseNormal3D}},entireFrustum:{get:function(){return this._entireFrustum}},currentFrustum:{get:function(){return this._currentFrustum}},frustumPlanes:{get:function(){return this._frustumPlanes}},farDepthFromNearPlusOne:{get:function(){return this._farDepthFromNearPlusOne}},log2FarDepthFromNearPlusOne:{get:function(){return this._log2FarDepthFromNearPlusOne}},oneOverLog2FarDepthFromNearPlusOne:{get:function(){return this._oneOverLog2FarDepthFromNearPlusOne}},eyeHeight:{get:function(){return this._eyeHeight}},eyeHeight2D:{get:function(){return this._eyeHeight2D}},eyeEllipsoidNormalEC:{get:function(){return this._eyeEllipsoidNormalEC}},eyeEllipsoidCurvature:{get:function(){return this._eyeEllipsoidCurvature}},modelToEnu:{get:function(){return this._modelToEnu}},enuToModel:{get:function(){return this._enuToModel}},sunPositionWC:{get:function(){return this._sunPositionWC}},sunPositionColumbusView:{get:function(){return this._sunPositionColumbusView}},sunDirectionWC:{get:function(){return this._sunDirectionWC}},sunDirectionEC:{get:function(){return this._sunDirectionEC}},moonDirectionEC:{get:function(){return this._moonDirectionEC}},lightDirectionWC:{get:function(){return this._lightDirectionWC}},lightDirectionEC:{get:function(){return this._lightDirectionEC}},lightColor:{get:function(){return this._lightColor}},lightColorHdr:{get:function(){return this._lightColorHdr}},encodedCameraPositionMCHigh:{get:function(){return x0e(this),this._encodedCameraPositionMC.high}},encodedCameraPositionMCLow:{get:function(){return x0e(this),this._encodedCameraPositionMC.low}},temeToPseudoFixedMatrix:{get:function(){return this._temeToPseudoFixed}},pixelRatio:{get:function(){return this._pixelRatio}},fogDensity:{get:function(){return this._fogDensity}},fogVisualDensityScalar:{get:function(){return this._fogVisualDensityScalar}},fogMinimumBrightness:{get:function(){return this._fogMinimumBrightness}},atmosphereHsbShift:{get:function(){return this._atmosphereHsbShift}},atmosphereLightIntensity:{get:function(){return this._atmosphereLightIntensity}},atmosphereRayleighCoefficient:{get:function(){return this._atmosphereRayleighCoefficient}},atmosphereRayleighScaleHeight:{get:function(){return this._atmosphereRayleighScaleHeight}},atmosphereMieCoefficient:{get:function(){return this._atmosphereMieCoefficient}},atmosphereMieScaleHeight:{get:function(){return this._atmosphereMieScaleHeight}},atmosphereMieAnisotropy:{get:function(){return this._atmosphereMieAnisotropy}},atmosphereDynamicLighting:{get:function(){return this._atmosphereDynamicLighting}},geometricToleranceOverMeter:{get:function(){return this._geometricToleranceOverMeter}},pass:{get:function(){return this._pass}},backgroundColor:{get:function(){return this._backgroundColor}},brdfLut:{get:function(){return this._brdfLut}},environmentMap:{get:function(){return this._environmentMap}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients}},specularEnvironmentMaps:{get:function(){return this._specularEnvironmentMaps}},specularEnvironmentMapsMaximumLOD:{get:function(){return this._specularEnvironmentMapsMaximumLOD}},splitPosition:{get:function(){return this._splitPosition}},minimumDisableDepthTestDistance:{get:function(){return this._minimumDisableDepthTestDistance}},invertClassificationColor:{get:function(){return this._invertClassificationColor}},orthographicIn3D:{get:function(){return this._orthographicIn3D}},ellipsoid:{get:function(){return this._ellipsoid??te.default}}});function cht(e,t){N.clone(t,e._view),N.getMatrix3(t,e._viewRotation),e._view3DDirty=!0,e._inverseView3DDirty=!0,e._modelViewDirty=!0,e._modelView3DDirty=!0,e._modelViewRelativeToEyeDirty=!0,e._inverseModelViewDirty=!0,e._inverseModelView3DDirty=!0,e._viewProjectionDirty=!0,e._inverseViewProjectionDirty=!0,e._modelViewProjectionDirty=!0,e._modelViewProjectionRelativeToEyeDirty=!0,e._modelViewInfiniteProjectionDirty=!0,e._normalDirty=!0,e._inverseNormalDirty=!0,e._normal3DDirty=!0,e._inverseNormal3DDirty=!0}function lht(e,t){N.clone(t,e._inverseView),N.getMatrix3(t,e._inverseViewRotation)}function uht(e,t){N.clone(t,e._projection),e._inverseProjectionDirty=!0,e._viewProjectionDirty=!0,e._inverseViewProjectionDirty=!0,e._modelViewProjectionDirty=!0,e._modelViewProjectionRelativeToEyeDirty=!0}function fht(e,t){N.clone(t,e._infiniteProjection),e._modelViewInfiniteProjectionDirty=!0}var C0e=new d,dht=new N;function hht(e,t){d.clone(t.positionWC,e._cameraPosition),d.clone(t.directionWC,e._cameraDirection),d.clone(t.rightWC,e._cameraRight),d.clone(t.upWC,e._cameraUp);let n=e._ellipsoid,i,o=t.positionCartographic;if(l(o)?(e._eyeHeight=o.height,e._eyeEllipsoidNormalEC=n.geodeticSurfaceNormalCartographic(o,e._eyeEllipsoidNormalEC),i=d.fromRadians(o.longitude,o.latitude,0,n,C0e)):(e._eyeHeight=-n.maximumRadius,d.magnitude(t.positionWC)>0&&(e._eyeEllipsoidNormalEC=d.normalize(t.positionWC,e._eyeEllipsoidNormalEC)),i=n.scaleToGeodeticSurface(t.positionWC,C0e)),e._encodedCameraPositionMCDirty=!0,!l(i))return;e._eyeEllipsoidNormalEC=J.multiplyByVector(e._viewRotation,e._eyeEllipsoidNormalEC,e._eyeEllipsoidNormalEC);let r=kt.eastNorthUpToFixedFrame(i,n,dht);e._enuToModel=N.multiplyTransformation(e.inverseModel,r,e._enuToModel),e._modelToEnu=N.inverseTransformation(e._enuToModel,e._modelToEnu),D.equalsEpsilon(n._radii.x,n._radii.y,D.EPSILON15)&&(e._eyeEllipsoidCurvature=n.getLocalCurvature(i,e._eyeEllipsoidCurvature))}var YX=new J,mht=new Ae;function Aht(e,t){kt.computeIcrfToCentralBodyFixedMatrix(t.time,YX);let n=lC.computeSunPositionInEarthInertialFrame(t.time,e._sunPositionWC);J.multiplyByVector(YX,n,n),d.normalize(n,e._sunDirectionWC),n=J.multiplyByVector(e.viewRotation3D,n,e._sunDirectionEC),d.normalize(n,n),n=lC.computeMoonPositionInEarthInertialFrame(t.time,e._moonDirectionEC),J.multiplyByVector(YX,n,n),J.multiplyByVector(e.viewRotation3D,n,n),d.normalize(n,n);let i=t.mapProjection,r=i.ellipsoid.cartesianToCartographic(e._sunPositionWC,mht);i.project(r,e._sunPositionColumbusView)}aw.prototype.updateCamera=function(e){cht(this,e.viewMatrix),lht(this,e.inverseViewMatrix),hht(this,e),this._entireFrustum.x=e.frustum.near,this._entireFrustum.y=e.frustum.far,this.updateFrustum(e.frustum),this._orthographicIn3D=this._mode!==ie.SCENE2D&&e.frustum instanceof An};aw.prototype.updateFrustum=function(e){uht(this,e.projectionMatrix),l(e.infiniteProjectionMatrix)&&fht(this,e.infiniteProjectionMatrix),this._currentFrustum.x=e.near,this._currentFrustum.y=e.far,this._farDepthFromNearPlusOne=e.far-e.near+1,this._log2FarDepthFromNearPlusOne=D.log2(this._farDepthFromNearPlusOne),this._oneOverLog2FarDepthFromNearPlusOne=1/this._log2FarDepthFromNearPlusOne;let t=e.offCenterFrustum;l(t)&&(e=t),this._frustumPlanes.x=e.top,this._frustumPlanes.y=e.bottom,this._frustumPlanes.z=e.left,this._frustumPlanes.w=e.right};aw.prototype.updatePass=function(e){this._pass=e};var pht=[],ght=new Hg;aw.prototype.update=function(e){this._mode=e.mode,this._mapProjection=e.mapProjection,this._ellipsoid=e.mapProjection.ellipsoid,this._pixelRatio=e.pixelRatio;let t=e.camera;this.updateCamera(t),e.mode===ie.SCENE2D?(this._frustum2DWidth=t.frustum.right-t.frustum.left,this._eyeHeight2D.x=this._frustum2DWidth*.5,this._eyeHeight2D.y=this._eyeHeight2D.x*this._eyeHeight2D.x):(this._frustum2DWidth=0,this._eyeHeight2D.x=0,this._eyeHeight2D.y=0),Aht(this,e);let n=e.light??ght;n instanceof Hg?(this._lightDirectionWC=d.clone(this._sunDirectionWC,this._lightDirectionWC),this._lightDirectionEC=d.clone(this._sunDirectionEC,this._lightDirectionEC)):(this._lightDirectionWC=d.normalize(d.negate(n.direction,this._lightDirectionWC),this._lightDirectionWC),this._lightDirectionEC=J.multiplyByVector(this.viewRotation3D,this._lightDirectionWC,this._lightDirectionEC));let i=n.color,o=d.fromElements(i.red,i.green,i.blue,this._lightColorHdr);o=d.multiplyByScalar(o,n.intensity,o);let r=d.maximumComponent(o);r>1?d.divideByScalar(o,r,this._lightColor):d.clone(o,this._lightColor);let s=e.brdfLutGenerator,a=l(s)?s.colorTexture:void 0;this._brdfLut=a,this._environmentMap=e.environmentMap??e.context.defaultCubeMap,this._sphericalHarmonicCoefficients=e.sphericalHarmonicCoefficients??pht,this._specularEnvironmentMaps=e.specularEnvironmentMaps,this._specularEnvironmentMapsMaximumLOD=e.specularEnvironmentMapsMaximumLOD,this._fogDensity=e.fog.density,this._fogVisualDensityScalar=e.fog.visualDensityScalar,this._fogMinimumBrightness=e.fog.minimumBrightness;let c=e.atmosphere;l(c)&&(this._atmosphereHsbShift=d.fromElements(c.hueShift,c.saturationShift,c.brightnessShift,this._atmosphereHsbShift),this._atmosphereLightIntensity=c.lightIntensity,this._atmosphereRayleighCoefficient=d.clone(c.rayleighCoefficient,this._atmosphereRayleighCoefficient),this._atmosphereRayleighScaleHeight=c.rayleighScaleHeight,this._atmosphereMieCoefficient=d.clone(c.mieCoefficient,this._atmosphereMieCoefficient),this._atmosphereMieScaleHeight=c.mieScaleHeight,this._atmosphereMieAnisotropy=c.mieAnisotropy,this._atmosphereDynamicLighting=c.dynamicLighting),this._invertClassificationColor=e.invertClassificationColor,this._frameState=e,this._temeToPseudoFixed=kt.computeTemeToPseudoFixedMatrix(e.time,this._temeToPseudoFixed),this._splitPosition=e.splitPosition*e.context.drawingBufferWidth;let u=t.frustum.fov,f=this._viewport,h;l(u)?f.height>f.width?h=Math.tan(.5*u)*2/f.height:h=Math.tan(.5*u)*2/f.width:h=1/Math.max(f.width,f.height),this._geometricToleranceOverMeter=h*e.maximumScreenSpaceError,G.clone(e.backgroundColor,this._backgroundColor),this._minimumDisableDepthTestDistance=e.minimumDisableDepthTestDistance,this._minimumDisableDepthTestDistance*=this._minimumDisableDepthTestDistance,this._minimumDisableDepthTestDistance===Number.POSITIVE_INFINITY&&(this._minimumDisableDepthTestDistance=-1)};function E0e(e){if(e._viewportDirty){let t=e._viewport;N.computeOrthographicOffCenter(t.x,t.x+t.width,t.y,t.y+t.height,0,1,e._viewportOrthographicMatrix),N.computeViewportTransformation(t,0,1,e._viewportTransformation),e._viewportDirty=!1}}function _ht(e){e._inverseProjectionDirty&&(e._inverseProjectionDirty=!1,e._mode!==ie.SCENE2D&&e._mode!==ie.MORPHING&&!e._orthographicIn3D?N.inverse(e._projection,e._inverseProjection):N.clone(N.ZERO,e._inverseProjection))}function yht(e){e._modelViewDirty&&(e._modelViewDirty=!1,N.multiplyTransformation(e._view,e._model,e._modelView))}function Cht(e){e._modelView3DDirty&&(e._modelView3DDirty=!1,N.multiplyTransformation(e.view3D,e._model,e._modelView3D))}function Eht(e){e._inverseModelViewDirty&&(e._inverseModelViewDirty=!1,N.inverse(e.modelView,e._inverseModelView))}function Iht(e){e._inverseModelView3DDirty&&(e._inverseModelView3DDirty=!1,N.inverse(e.modelView3D,e._inverseModelView3D))}function xht(e){e._viewProjectionDirty&&(e._viewProjectionDirty=!1,N.multiply(e._projection,e._view,e._viewProjection))}function bht(e){e._inverseViewProjectionDirty&&(e._inverseViewProjectionDirty=!1,N.inverse(e.viewProjection,e._inverseViewProjection))}function Tht(e){e._modelViewProjectionDirty&&(e._modelViewProjectionDirty=!1,N.multiply(e._projection,e.modelView,e._modelViewProjection))}function Sht(e){if(e._modelViewRelativeToEyeDirty){e._modelViewRelativeToEyeDirty=!1;let t=e.modelView,n=e._modelViewRelativeToEye;n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=0,n[13]=0,n[14]=0,n[15]=t[15]}}function wht(e){e._inverseModelViewProjectionDirty&&(e._inverseModelViewProjectionDirty=!1,N.inverse(e.modelViewProjection,e._inverseModelViewProjection))}function Bht(e){e._modelViewProjectionRelativeToEyeDirty&&(e._modelViewProjectionRelativeToEyeDirty=!1,N.multiply(e._projection,e.modelViewRelativeToEye,e._modelViewProjectionRelativeToEye))}function Dht(e){e._modelViewInfiniteProjectionDirty&&(e._modelViewInfiniteProjectionDirty=!1,N.multiply(e._infiniteProjection,e.modelView,e._modelViewInfiniteProjection))}function vht(e){if(e._normalDirty){e._normalDirty=!1;let t=e._normal;N.getMatrix3(e.inverseModelView,t),J.transpose(t,t)}}function Pht(e){if(e._normal3DDirty){e._normal3DDirty=!1;let t=e._normal3D;N.getMatrix3(e.inverseModelView3D,t),J.transpose(t,t)}}function Rht(e){if(e._inverseNormalDirty){e._inverseNormalDirty=!1;let t=e._inverseNormal;N.getMatrix3(e.modelView,t),J.transpose(t,t)}}function Mht(e){if(e._inverseNormal3DDirty){e._inverseNormal3DDirty=!1;let t=e._inverseNormal3D;N.getMatrix3(e.modelView3D,t),J.transpose(t,t)}}var I0e=new d;function x0e(e){e._encodedCameraPositionMCDirty&&(e._encodedCameraPositionMCDirty=!1,N.multiplyByPoint(e.inverseModel,e._cameraPosition,I0e),ei.fromCartesian(I0e,e._encodedCameraPositionMC))}var Nht=new d,Lht=new d,Oht=new d,Fht=new d,Qht=new Ae,kht=new d,Uht=new N;function Ght(e,t,n,i,o,r,s,a){let c=Nht;c.x=e.y,c.y=e.z,c.z=e.x;let u=Lht;u.x=n.y,u.y=n.z,u.z=n.x;let f=Oht;f.x=i.y,f.y=i.z,f.z=i.x;let h=Fht;h.x=t.y,h.y=t.z,h.z=t.x,r===ie.SCENE2D&&(c.z=o*.5);let A=s.unproject(c,Qht);A.longitude=D.clamp(A.longitude,-Math.PI,Math.PI),A.latitude=D.clamp(A.latitude,-D.PI_OVER_TWO,D.PI_OVER_TWO);let g=s.ellipsoid,m=g.cartographicToCartesian(A,kht),_=kt.eastNorthUpToFixedFrame(m,g,Uht);return N.multiplyByPointAsVector(_,u,u),N.multiplyByPointAsVector(_,f,f),N.multiplyByPointAsVector(_,h,h),l(a)||(a=new N),a[0]=u.x,a[1]=f.x,a[2]=-h.x,a[3]=0,a[4]=u.y,a[5]=f.y,a[6]=-h.y,a[7]=0,a[8]=u.z,a[9]=f.z,a[10]=-h.z,a[11]=0,a[12]=-d.dot(u,m),a[13]=-d.dot(f,m),a[14]=d.dot(h,m),a[15]=1,a}function qX(e){e._view3DDirty&&(e._mode===ie.SCENE3D?N.clone(e._view,e._view3D):Ght(e._cameraPosition,e._cameraDirection,e._cameraRight,e._cameraUp,e._frustum2DWidth,e._mode,e._mapProjection,e._view3D),N.getMatrix3(e._view3D,e._viewRotation3D),e._view3DDirty=!1)}function b0e(e){e._inverseView3DDirty&&(N.inverseTransformation(e.view3D,e._inverseView3D),N.getMatrix3(e._inverseView3D,e._inverseViewRotation3D),e._inverseView3DDirty=!1)}var b2=aw;function Sf(e,t){let{getWebGLStub:n,requestWebgl1:i,webgl:o={},allowTextureFilterAnisotropic:r=!0}=t??{};o.alpha=o.alpha??!1,o.stencil=o.stencil??!0,o.powerPreference=o.powerPreference??"high-performance";let s=l(n)?n(e,o):zht(e,o,i),c=typeof WebGL2RenderingContext<"u"&&s instanceof WebGL2RenderingContext;this._canvas=e,this._originalGLContext=s,this._gl=s,this._webgl2=c,this._id=Xn(),this.validateFramebuffer=!1,this.validateShaderProgram=!1,this.logShaderCompilation=!1,this._throwOnWebGLError=!1,this._shaderCache=new E2(this),this._textureCache=new I2;let u=s;this._stencilBits=u.getParameter(u.STENCIL_BITS),Yt._maximumCombinedTextureImageUnits=u.getParameter(u.MAX_COMBINED_TEXTURE_IMAGE_UNITS),Yt._maximumCubeMapSize=u.getParameter(u.MAX_CUBE_MAP_TEXTURE_SIZE),Yt._maximumFragmentUniformVectors=u.getParameter(u.MAX_FRAGMENT_UNIFORM_VECTORS),Yt._maximumTextureImageUnits=u.getParameter(u.MAX_TEXTURE_IMAGE_UNITS),Yt._maximumRenderbufferSize=u.getParameter(u.MAX_RENDERBUFFER_SIZE),Yt._maximumTextureSize=u.getParameter(u.MAX_TEXTURE_SIZE),Yt._maximumVaryingVectors=u.getParameter(u.MAX_VARYING_VECTORS),Yt._maximumVertexAttributes=u.getParameter(u.MAX_VERTEX_ATTRIBS),Yt._maximumVertexTextureImageUnits=u.getParameter(u.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Yt._maximumVertexUniformVectors=u.getParameter(u.MAX_VERTEX_UNIFORM_VECTORS),Yt._maximumSamples=this._webgl2?u.getParameter(u.MAX_SAMPLES):0;let f=u.getParameter(u.ALIASED_LINE_WIDTH_RANGE);Yt._minimumAliasedLineWidth=f[0],Yt._maximumAliasedLineWidth=f[1];let h=u.getParameter(u.ALIASED_POINT_SIZE_RANGE);Yt._minimumAliasedPointSize=h[0],Yt._maximumAliasedPointSize=h[1];let A=u.getParameter(u.MAX_VIEWPORT_DIMS);Yt._maximumViewportWidth=A[0],Yt._maximumViewportHeight=A[1];let g=u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.HIGH_FLOAT);Yt._highpFloatSupported=g.precision!==0;let m=u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.HIGH_INT);Yt._highpIntSupported=m.rangeMax!==0,this._antialias=u.getContextAttributes().antialias,this._standardDerivatives=!!Kr(u,["OES_standard_derivatives"]),this._blendMinmax=!!Kr(u,["EXT_blend_minmax"]),this._elementIndexUint=!!Kr(u,["OES_element_index_uint"]),this._depthTexture=!!Kr(u,["WEBGL_depth_texture","WEBKIT_WEBGL_depth_texture"]),this._fragDepth=!!Kr(u,["EXT_frag_depth"]),this._debugShaders=Kr(u,["WEBGL_debug_shaders"]),this._textureFloat=!!Kr(u,["OES_texture_float"]),this._textureHalfFloat=!!Kr(u,["OES_texture_half_float"]),this._textureFloatLinear=!!Kr(u,["OES_texture_float_linear"]),this._textureHalfFloatLinear=!!Kr(u,["OES_texture_half_float_linear"]),this._supportsTextureLod=!!Kr(u,["EXT_shader_texture_lod"]),this._colorBufferFloat=!!Kr(u,["EXT_color_buffer_float","WEBGL_color_buffer_float"]),this._floatBlend=!!Kr(u,["EXT_float_blend"]),this._colorBufferHalfFloat=!!Kr(u,["EXT_color_buffer_half_float"]),this._s3tc=!!Kr(u,["WEBGL_compressed_texture_s3tc","MOZ_WEBGL_compressed_texture_s3tc","WEBKIT_WEBGL_compressed_texture_s3tc"]),this._pvrtc=!!Kr(u,["WEBGL_compressed_texture_pvrtc","WEBKIT_WEBGL_compressed_texture_pvrtc"]),this._astc=!!Kr(u,["WEBGL_compressed_texture_astc"]),this._etc=!!Kr(u,["WEBG_compressed_texture_etc"]),this._etc1=!!Kr(u,["WEBGL_compressed_texture_etc1"]),this._bc7=!!Kr(u,["EXT_texture_compression_bptc"]),$l.setKTX2SupportedFormats(this._s3tc,this._pvrtc,this._astc,this._etc,this._etc1,this._bc7);let _=r?Kr(u,["EXT_texture_filter_anisotropic","WEBKIT_EXT_texture_filter_anisotropic"]):void 0;this._textureFilterAnisotropic=_,Yt._maximumTextureFilterAnisotropy=l(_)?u.getParameter(_.MAX_TEXTURE_MAX_ANISOTROPY_EXT):1;let y,C,E,I,b,S,B,v,P,M;if(c){let T=this;y=function(){return T._gl.createVertexArray()},C=function(w){T._gl.bindVertexArray(w)},E=function(w){T._gl.deleteVertexArray(w)},I=function(w,R,O,k,Q){u.drawElementsInstanced(w,R,O,k,Q)},b=function(w,R,O,k){u.drawArraysInstanced(w,R,O,k)},S=function(w,R){u.vertexAttribDivisor(w,R)},B=function(w){u.drawBuffers(w)}}else v=Kr(u,["OES_vertex_array_object"]),l(v)&&(y=function(){return v.createVertexArrayOES()},C=function(T){v.bindVertexArrayOES(T)},E=function(T){v.deleteVertexArrayOES(T)}),P=Kr(u,["ANGLE_instanced_arrays"]),l(P)&&(I=function(T,w,R,O,k){P.drawElementsInstancedANGLE(T,w,R,O,k)},b=function(T,w,R,O){P.drawArraysInstancedANGLE(T,w,R,O)},S=function(T,w){P.vertexAttribDivisorANGLE(T,w)}),M=Kr(u,["WEBGL_draw_buffers"]),l(M)&&(B=function(T){M.drawBuffersWEBGL(T)});this.glCreateVertexArray=y,this.glBindVertexArray=C,this.glDeleteVertexArray=E,this.glDrawElementsInstanced=I,this.glDrawArraysInstanced=b,this.glVertexAttribDivisor=S,this.glDrawBuffers=B,this._vertexArrayObject=!!v,this._instancedArrays=!!P,this._drawBuffers=!!M,Yt._maximumDrawBuffers=this.drawBuffers?u.getParameter(ee.MAX_DRAW_BUFFERS):1,Yt._maximumColorAttachments=this.drawBuffers?u.getParameter(ee.MAX_COLOR_ATTACHMENTS):1,this._clearColor=new G(0,0,0,0),this._clearDepth=1,this._clearStencil=0;let L=new b2,p=new Xc(this),x=Ue.fromCache();this._defaultPassState=p,this._defaultRenderState=x,this._defaultTexture=void 0,this._defaultEmissiveTexture=void 0,this._defaultNormalTexture=void 0,this._defaultCubeMap=void 0,this._us=L,this._currentRenderState=x,this._currentPassState=p,this._currentFramebuffer=void 0,this._maxFrameTextureUnitIndex=0,this._vertexAttribDivisors=[],this._previousDrawInstanced=!1;for(let T=0;T<Yt._maximumVertexAttributes;T++)this._vertexAttribDivisors.push(0);this._pickObjects={},this._nextPickColor=new Uint32Array(1),this.options={getWebGLStub:n,requestWebgl1:i,webgl:o,allowTextureFilterAnisotropic:r},this.cache={},Ue.apply(u,x,p)}function zht(e,t,n){if(typeof WebGLRenderingContext>"u")throw new ce("The browser does not support WebGL. Visit http://get.webgl.org.");!n&&!(typeof WebGL2RenderingContext<"u")&&(n=!0);let o=n?"webgl":"webgl2",r=e.getContext(o,t);if(!l(r))throw new ce("The browser supports WebGL, but initialization failed.");return r}function Vht(e,t){let n="WebGL Error: ";switch(t){case e.INVALID_ENUM:n+="INVALID_ENUM";break;case e.INVALID_VALUE:n+="INVALID_VALUE";break;case e.INVALID_OPERATION:n+="INVALID_OPERATION";break;case e.OUT_OF_MEMORY:n+="OUT_OF_MEMORY";break;case e.CONTEXT_LOST_WEBGL:n+="CONTEXT_LOST_WEBGL lost";break;default:n+=`Unknown (${t})`}return n}function Hht(e,t,n,i){let o=`${Vht(e,i)}: ${t.name}(`;for(let r=0;r<n.length;++r)r!==0&&(o+=", "),o+=n[r];return o+=");",o}function Wht(e,t,n){let i=e.getError();if(i!==e.NO_ERROR)throw new ce(Hht(e,t,n,i))}function jht(e,t,n){return{get:function(){let i=e[t];return n(e,`get: ${t}`,i),e[t]},set:function(i){e[t]=i,n(e,`set: ${t}`,i)}}}function Yht(e,t){if(!l(t))return e;function n(o){return function(){let r=o.apply(e,arguments);return t(e,o,arguments),r}}let i={};for(let o in e){let r=e[o];r instanceof Function?i[o]=n(r):Object.defineProperty(i,o,jht(e,o,t))}return i}function Kr(e,t){let n=t.length;for(let i=0;i<n;++i){let o=e.getExtension(t[i]);if(o)return o}}var qht={};Object.defineProperties(Sf.prototype,{id:{get:function(){return this._id}},webgl2:{get:function(){return this._webgl2}},canvas:{get:function(){return this._canvas}},shaderCache:{get:function(){return this._shaderCache}},textureCache:{get:function(){return this._textureCache}},uniformState:{get:function(){return this._us}},stencilBits:{get:function(){return this._stencilBits}},stencilBuffer:{get:function(){return this._stencilBits>=8}},antialias:{get:function(){return this._antialias}},msaa:{get:function(){return this._webgl2}},standardDerivatives:{get:function(){return this._standardDerivatives||this._webgl2}},floatBlend:{get:function(){return this._floatBlend}},blendMinmax:{get:function(){return this._blendMinmax||this._webgl2}},elementIndexUint:{get:function(){return this._elementIndexUint||this._webgl2}},depthTexture:{get:function(){return this._depthTexture||this._webgl2}},floatingPointTexture:{get:function(){return this._webgl2||this._textureFloat}},halfFloatingPointTexture:{get:function(){return this._webgl2||this._textureHalfFloat}},textureFloatLinear:{get:function(){return this._textureFloatLinear}},textureHalfFloatLinear:{get:function(){return this._webgl2&&this._textureFloatLinear||!this._webgl2&&this._textureHalfFloatLinear}},supportsTextureLod:{get:function(){return this._webgl2||this._supportsTextureLod}},textureFilterAnisotropic:{get:function(){return!!this._textureFilterAnisotropic}},s3tc:{get:function(){return this._s3tc}},pvrtc:{get:function(){return this._pvrtc}},astc:{get:function(){return this._astc}},etc:{get:function(){return this._etc}},etc1:{get:function(){return this._etc1}},bc7:{get:function(){return this._bc7}},supportsBasis:{get:function(){return this._s3tc||this._pvrtc||this._astc||this._etc||this._etc1||this._bc7}},vertexArrayObject:{get:function(){return this._vertexArrayObject||this._webgl2}},fragmentDepth:{get:function(){return this._fragDepth||this._webgl2}},instancedArrays:{get:function(){return this._instancedArrays||this._webgl2}},colorBufferFloat:{get:function(){return this._colorBufferFloat}},colorBufferHalfFloat:{get:function(){return this._webgl2&&this._colorBufferFloat||!this._webgl2&&this._colorBufferHalfFloat}},drawBuffers:{get:function(){return this._drawBuffers||this._webgl2}},debugShaders:{get:function(){return this._debugShaders}},throwOnWebGLError:{get:function(){return this._throwOnWebGLError},set:function(e){this._throwOnWebGLError=e,this._gl=Yht(this._originalGLContext,e?Wht:void 0)}},defaultTexture:{get:function(){return this._defaultTexture===void 0&&(this._defaultTexture=new Mt({context:this,source:{width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])},flipY:!1})),this._defaultTexture}},defaultEmissiveTexture:{get:function(){return this._defaultEmissiveTexture===void 0&&(this._defaultEmissiveTexture=new Mt({context:this,pixelFormat:$e.RGB,source:{width:1,height:1,arrayBufferView:new Uint8Array([0,0,0])},flipY:!1})),this._defaultEmissiveTexture}},defaultNormalTexture:{get:function(){return this._defaultNormalTexture===void 0&&(this._defaultNormalTexture=new Mt({context:this,pixelFormat:$e.RGB,source:{width:1,height:1,arrayBufferView:new Uint8Array([128,128,255])},flipY:!1})),this._defaultNormalTexture}},defaultCubeMap:{get:function(){if(this._defaultCubeMap===void 0){let e={width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])};this._defaultCubeMap=new kr({context:this,source:{positiveX:e,negativeX:e,positiveY:e,negativeY:e,positiveZ:e,negativeZ:e},flipY:!1})}return this._defaultCubeMap}},drawingBufferHeight:{get:function(){return this._gl.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._gl.drawingBufferWidth}},defaultFramebuffer:{get:function(){return qht}}});function T0e(e,t,n,i){let o=e._currentRenderState,r=e._currentPassState;e._currentRenderState=t,e._currentPassState=n,Ue.partialApply(e._gl,o,t,r,n,i)}var KX;typeof WebGLRenderingContext<"u"&&(KX=[ee.BACK]);function XX(e,t){if(t!==e._currentFramebuffer){e._currentFramebuffer=t;let n=KX;if(l(t))t._bind(),n=t._getActiveColorAttachments();else{let i=e._gl;i.bindFramebuffer(i.FRAMEBUFFER,null)}e.drawBuffers&&e.glDrawBuffers(n)}}var Kht=new Ci;Sf.prototype.clear=function(e,t){e=e??Kht,t=t??this._defaultPassState;let n=this._gl,i=0,o=e.color,r=e.depth,s=e.stencil;l(o)&&(G.equals(this._clearColor,o)||(G.clone(o,this._clearColor),n.clearColor(o.red,o.green,o.blue,o.alpha)),i|=n.COLOR_BUFFER_BIT),l(r)&&(r!==this._clearDepth&&(this._clearDepth=r,n.clearDepth(r)),i|=n.DEPTH_BUFFER_BIT),l(s)&&(s!==this._clearStencil&&(this._clearStencil=s,n.clearStencil(s)),i|=n.STENCIL_BUFFER_BIT);let a=e.renderState??this._defaultRenderState;T0e(this,a,t,!0);let c=e.framebuffer??t.framebuffer;XX(this,c),n.clear(i)};function Xht(e,t,n,i,o){XX(e,t),T0e(e,o,n,!1),i._bind(),e._maxFrameTextureUnitIndex=Math.max(e._maxFrameTextureUnitIndex,i.maximumTextureUnitIndex)}function Jht(e,t,n,i){let o=t._primitiveType,r=t._vertexArray,s=t._offset,a=t._count,c=t.instanceCount;e._us.model=t._modelMatrix??N.IDENTITY,n._setUniforms(i,e._us,e.validateShaderProgram),r._bind();let u=r.indexBuffer;l(u)?(s=s*u.bytesPerIndex,l(a)?a=Math.min(a,u.numberOfIndices):a=u.numberOfIndices,c===0?e._gl.drawElements(o,a,u.indexDatatype,s):e.glDrawElementsInstanced(o,a,u.indexDatatype,s,c)):(l(a)?a=Math.min(a,r.numberOfVertices):a=r.numberOfVertices,c===0?e._gl.drawArrays(o,s,a):e.glDrawArraysInstanced(o,s,a,c)),r._unBind()}Sf.prototype.draw=function(e,t,n,i){t=t??this._defaultPassState;let o=e._framebuffer??t.framebuffer,r=e._renderState??this._defaultRenderState;n=n??e._shaderProgram,i=i??e._uniformMap,Xht(this,o,t,n,r),Jht(this,e,n,i)};Sf.prototype.beginFrame=function(){};Sf.prototype.endFrame=function(){let e=this._gl;e.useProgram(null),this._currentFramebuffer=void 0,e.bindFramebuffer(e.FRAMEBUFFER,null);let t=KX;this.drawBuffers&&this.glDrawBuffers(t);let n=this._maxFrameTextureUnitIndex;this._maxFrameTextureUnitIndex=0;for(let i=0;i<n;++i)e.activeTexture(e.TEXTURE0+i),e.bindTexture(e.TEXTURE_2D,null),e.bindTexture(e.TEXTURE_CUBE_MAP,null)};Sf.prototype.readPixels=function(e){let t=this._gl;e=e??V.EMPTY_OBJECT;let n=Math.max(e.x??0,0),i=Math.max(e.y??0,0),o=e.width??this.drawingBufferWidth,r=e.height??this.drawingBufferHeight,s=e.framebuffer,a=Ve.UNSIGNED_BYTE;l(s)&&s.numberOfColorAttachments>0&&(a=s.getColorTexture(0).pixelDatatype);let c=$e.createTypedArray($e.RGBA,a,o,r);return XX(this,s),t.readPixels(n,i,o,r,$e.RGBA,Ve.toWebGLConstant(a,this),c),c};var S0e={position:0,textureCoordinates:1};Sf.prototype.getViewportQuadVertexArray=function(){let e=this.cache.viewportQuad_vertexArray;if(!l(e)){let t=new ht({attributes:{position:new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:[-1,-1,1,-1,1,1,-1,1]}),textureCoordinates:new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:[0,0,1,0,1,1,0,1]})},indices:new Uint16Array([0,1,2,0,2,3]),primitiveType:Me.TRIANGLES});e=li.fromGeometry({context:this,geometry:t,attributeLocations:S0e,bufferUsage:Qe.STATIC_DRAW,interleave:!0}),this.cache.viewportQuad_vertexArray=e}return e};Sf.prototype.createViewportQuadCommand=function(e,t){return t=t??V.EMPTY_OBJECT,new nt({vertexArray:this.getViewportQuadVertexArray(),primitiveType:Me.TRIANGLES,renderState:t.renderState,shaderProgram:an.fromCache({context:this,vertexShaderSource:wI,fragmentShaderSource:e,attributeLocations:S0e}),uniformMap:t.uniformMap,owner:t.owner,framebuffer:t.framebuffer,pass:t.pass})};Sf.prototype.getObjectByPickColor=function(e){return this._pickObjects[e.toRgba()]};function JX(e,t,n){this._pickObjects=e,this.key=t,this.color=n}Object.defineProperties(JX.prototype,{object:{get:function(){return this._pickObjects[this.key]},set:function(e){this._pickObjects[this.key]=e}}});JX.prototype.destroy=function(){delete this._pickObjects[this.key]};Sf.prototype.createPickId=function(e){++this._nextPickColor[0];let t=this._nextPickColor[0];if(t===0)throw new ce("Out of unique Pick IDs.");return this._pickObjects[t]=e,new JX(this._pickObjects,t,G.fromRgba(t))};Sf.prototype.isDestroyed=function(){return!1};Sf.prototype.destroy=function(){let e=this.cache;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];l(n.destroy)&&n.destroy()}return this._shaderCache=this._shaderCache.destroy(),this._textureCache=this._textureCache.destroy(),this._defaultTexture=this._defaultTexture&&this._defaultTexture.destroy(),this._defaultEmissiveTexture=this._defaultEmissiveTexture&&this._defaultEmissiveTexture.destroy(),this._defaultNormalTexture=this._defaultNormalTexture&&this._defaultNormalTexture.destroy(),this._defaultCubeMap=this._defaultCubeMap&&this._defaultCubeMap.destroy(),ue(this)};var DI=Sf;function Y4(e){this._autoDestroy=e?.autoDestroy??!0,this._canvas=document.createElement("canvas"),this._context=new DI(this._canvas,ze(e?.contextOptions)),this._canvases=[]}Y4.prototype.createSceneContext=function(e){let t=e.getContext("2d",{alpha:!0}),n=this;n._canvases.push(e);let i=!1,o=function(){i=!0;let c=n._canvases.indexOf(e);c!==-1&&(n._canvases.splice(c,1),n._autoDestroy&&n._canvases.length===0&&n.destroy())},r=function(){let c=n._context.canvas,u=this.drawingBufferWidth;c.width<u&&(c.width=u);let f=this.drawingBufferHeight;c.height<f&&(c.height=f)},s=function(){let c=this.drawingBufferWidth,u=this.drawingBufferHeight,f=n._context.canvas.height-u;t.drawImage(n._context.canvas,0,f,c,u,0,0,c,u),n._context.endFrame()};return new Proxy(this._context,{get(c,u,f){if(u==="isDestroyed")return function(){return i};switch(u){case"_canvas":return e;case"destroy":return o;case"drawingBufferWidth":return e.width;case"drawingBufferHeight":return e.height;case"beginFrame":return r;case"endFrame":return s;default:return Reflect.get(c,u,f)}}})};Y4.prototype.destroy=function(){this._context.destroy(),ue(this)};Y4.prototype.isDestroyed=function(){return!1};var T2=Y4;function vI(e){e=e??V.EMPTY_OBJECT;let{context:t,source:n,pixelFormat:i=$e.RGBA,pixelDatatype:o=Ve.UNSIGNED_BYTE,flipY:r=!0,skipColorSpaceConversion:s=!1,sampler:a=new on}=e;if(!t.webgl2)throw new me("WebGL1 does not support texture3D. Please use a WebGL2 context.");let{width:c,height:u,depth:f}=e;l(n)&&(l(c)||(c=n.width),l(u)||(u=n.height),l(f)||(f=n.depth));let h=e.preMultiplyAlpha||i===$e.RGB||i===$e.LUMINANCE,A=$e.toInternalFormat(i,o,t),g=$e.isCompressedFormat(A),m=t._gl,_=$e.texture3DSizeInBytes(i,o,c,u,f);if(this._id=e.id??Xn(),this._context=t,this._textureFilterAnisotropic=t._textureFilterAnisotropic,this._textureTarget=m.TEXTURE_3D,this._texture=m.createTexture(),this._internalFormat=A,this._pixelFormat=i,this._pixelDatatype=o,this._width=c,this._height=u,this._depth=f,this._dimensions=new d(c,u,f),this._hasMipmap=!1,this._sizeInBytes=_,this._preMultiplyAlpha=h,this._flipY=r,this._initialized=!1,this._sampler=void 0,this._sampler=a,w0e(this,a),m.activeTexture(m.TEXTURE0),m.bindTexture(this._textureTarget,this._texture),l(n)){if(s?m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.NONE):m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.BROWSER_DEFAULT_WEBGL),!l(n.arrayBufferView))throw new me("For Texture3D, options.source.arrayBufferView must be defined");Zht(this,n),this._initialized=!0}else $ht(this);m.bindTexture(this._textureTarget,null)}function Zht(e,t){let n=e._context,i=n._gl,o=e._textureTarget,r=e._internalFormat,{width:s,height:a,depth:c,pixelFormat:u,pixelDatatype:f,flipY:h}=e,A=$e.alignmentInBytes(u,f,s);i.pixelStorei(i.UNPACK_ALIGNMENT,A),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1);let{arrayBufferView:g}=t;h&&console.warn("texture3D.flipY is not supported.");let m=1;if(t.mipLevels&&t.mipLevels.length&&(m=t.mipLevels.length+1),i.texStorage3D(o,m,r,s,a,c),i.texSubImage3D(o,0,0,0,0,s,a,c,u,Ve.toWebGLConstant(f,n),g),m>1){let _=s,y=a,C=c;for(let E=0;E<t.mipLevels.length;++E)_=ZX(_),y=ZX(y),C=ZX(C),i.texSubImage3D(o,E+1,0,0,0,_,y,C,u,Ve.toWebGLConstant(f,n),t.mipLevels[E])}}function ZX(e){let t=Math.floor(e/2)|0;return Math.max(t,1)}function $ht(e){let t=e._context;t._gl.texImage3D(e._textureTarget,0,e._internalFormat,e._width,e._height,e._depth,0,e._pixelFormat,Ve.toWebGLConstant(e._pixelDatatype,t),null)}vI.create=function(e){return new vI(e)};Object.defineProperties(vI.prototype,{id:{get:function(){return this._id}},sampler:{get:function(){return this._sampler},set:function(e){w0e(this,e),this._sampler=e}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},dimensions:{get:function(){return this._dimensions}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},width:{get:function(){return this._width}},height:{get:function(){return this._height}},depth:{get:function(){return this._depth}},sizeInBytes:{get:function(){return this._hasMipmap?Math.floor(this._sizeInBytes*8/7):this._sizeInBytes}},_target:{get:function(){return this._textureTarget}}});function w0e(e,t){let{minificationFilter:n,magnificationFilter:i}=t,o=[Zt.NEAREST_MIPMAP_NEAREST,Zt.NEAREST_MIPMAP_LINEAR,Zt.LINEAR_MIPMAP_NEAREST,Zt.LINEAR_MIPMAP_LINEAR].includes(n),r=e._context,s=e._pixelFormat,a=e._pixelDatatype;(a===Ve.FLOAT&&!r.textureFloatLinear||a===Ve.HALF_FLOAT&&!r.textureHalfFloatLinear)&&(n=o?Zt.NEAREST_MIPMAP_NEAREST:Zt.NEAREST,i=mi.NEAREST),$e.isDepthFormat(s)&&(n=Zt.NEAREST,i=mi.NEAREST);let c=r._gl,u=e._textureTarget;c.activeTexture(c.TEXTURE0),c.bindTexture(u,e._texture),c.texParameteri(u,c.TEXTURE_MIN_FILTER,n),c.texParameteri(u,c.TEXTURE_MAG_FILTER,i),c.texParameteri(u,c.TEXTURE_WRAP_R,t.wrapR),c.texParameteri(u,c.TEXTURE_WRAP_S,t.wrapS),c.texParameteri(u,c.TEXTURE_WRAP_T,t.wrapT),l(e._textureFilterAnisotropic)&&c.texParameteri(u,e._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.maximumAnisotropy),c.bindTexture(u,null)}vI.prototype.generateMipmap=function(e){e=e??Kf.DONT_CARE,this._hasMipmap=!0;let t=this._context._gl,n=this._textureTarget;t.hint(t.GENERATE_MIPMAP_HINT,e),t.activeTexture(t.TEXTURE0),t.bindTexture(n,this._texture),t.generateMipmap(n),t.bindTexture(n,null)};vI.prototype.isDestroyed=function(){return!1};vI.prototype.destroy=function(){return this._context._gl.deleteTexture(this._texture),ue(this)};var $X=vI;function emt(e,t,n){let i={flipY:!0,skipColorSpaceConversion:n,preferImageBitmap:!0},o=[we.createIfNeeded(t.positiveX).fetchImage(i),we.createIfNeeded(t.negativeX).fetchImage(i),we.createIfNeeded(t.positiveY).fetchImage(i),we.createIfNeeded(t.negativeY).fetchImage(i),we.createIfNeeded(t.positiveZ).fetchImage(i),we.createIfNeeded(t.negativeZ).fetchImage(i)];return Promise.all(o).then(function(r){return new kr({context:e,source:{positiveX:r[0],negativeX:r[1],positiveY:r[2],negativeY:r[3],positiveZ:r[4],negativeZ:r[5]}})})}var S2=emt;var cw=`#ifdef MRT +layout (location = 0) out vec4 out_FragData_0; +layout (location = 1) out vec4 out_FragData_1; +#else +layout (location = 0) out vec4 out_FragColor; +#endif + +uniform vec4 u_bgColor; +uniform sampler2D u_depthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + if (texture(u_depthTexture, v_textureCoordinates).r < 1.0) + { +#ifdef MRT + out_FragData_0 = u_bgColor; + out_FragData_1 = vec4(u_bgColor.a); +#else + out_FragColor = u_bgColor; +#endif + return; + } + + discard; +} +`;var w2=`in vec2 v_textureCoordinates; +const float M_PI = 3.141592653589793; + +float vdcRadicalInverse(int i) +{ + float r; + float base = 2.0; + float value = 0.0; + float invBase = 1.0 / base; + float invBi = invBase; + for (int x = 0; x < 100; x++) + { + if (i <= 0) + { + break; + } + r = mod(float(i), base); + value += r * invBi; + invBi *= invBase; + i = int(float(i) * invBase); + } + return value; +} + +vec2 hammersley2D(int i, int N) +{ + return vec2(float(i) / float(N), vdcRadicalInverse(i)); +} + +vec3 importanceSampleGGX(vec2 xi, float alphaRoughness, vec3 N) +{ + float alphaRoughnessSquared = alphaRoughness * alphaRoughness; + float phi = 2.0 * M_PI * xi.x; + float cosTheta = sqrt((1.0 - xi.y) / (1.0 + (alphaRoughnessSquared - 1.0) * xi.y)); + float sinTheta = sqrt(1.0 - cosTheta * cosTheta); + vec3 H = vec3(sinTheta * cos(phi), sinTheta * sin(phi), cosTheta); + vec3 upVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 tangentX = normalize(cross(upVector, N)); + vec3 tangentY = cross(N, tangentX); + return tangentX * H.x + tangentY * H.y + N * H.z; +} + +/** + * Estimate the geometric self-shadowing of the microfacets in a surface, + * using the Smith Joint GGX visibility function. + * Note: Vis = G / (4 * NdotL * NdotV) + * see Eric Heitz. 2014. Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs. Journal of Computer Graphics Techniques, 3 + * see Real-Time Rendering. Page 331 to 336. + * see https://google.github.io/filament/Filament.md.html#materialsystem/specularbrdf/geometricshadowing(specularg) + * + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @param {float} NdotL The cosine of the angle between the surface normal and the direction to the light source. + * @param {float} NdotV The cosine of the angle between the surface normal and the direction to the camera. + */ +float smithVisibilityGGX(float alphaRoughness, float NdotL, float NdotV) +{ + float alphaRoughnessSq = alphaRoughness * alphaRoughness; + + float GGXV = NdotL * sqrt(NdotV * NdotV * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + float GGXL = NdotV * sqrt(NdotL * NdotL * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + + float GGX = GGXV + GGXL; // 2.0 if NdotL = NdotV = 1.0 + if (GGX > 0.0) + { + return 0.5 / GGX; // 1/4 if NdotL = NdotV = 1.0 + } + return 0.0; +} + +vec2 integrateBrdf(float roughness, float NdotV) +{ + vec3 V = vec3(sqrt(1.0 - NdotV * NdotV), 0.0, NdotV); + float A = 0.0; + float B = 0.0; + const int NumSamples = 1024; + float alphaRoughness = roughness * roughness; + for (int i = 0; i < NumSamples; i++) + { + vec2 xi = hammersley2D(i, NumSamples); + vec3 H = importanceSampleGGX(xi, alphaRoughness, vec3(0.0, 0.0, 1.0)); + vec3 L = 2.0 * dot(V, H) * H - V; + float NdotL = clamp(L.z, 0.0, 1.0); + float NdotH = clamp(H.z, 0.0, 1.0); + float VdotH = clamp(dot(V, H), 0.0, 1.0); + if (NdotL > 0.0) + { + float G = smithVisibilityGGX(alphaRoughness, NdotL, NdotV); + float G_Vis = 4.0 * G * VdotH * NdotL / NdotH; + float Fc = pow(1.0 - VdotH, 5.0); + A += (1.0 - Fc) * G_Vis; + B += Fc * G_Vis; + } + } + return vec2(A, B) / float(NumSamples); +} + +void main() +{ + out_FragColor = vec4(integrateBrdf(v_textureCoordinates.y, v_textureCoordinates.x), 0.0, 1.0); +} +`;var B2=`uniform sampler2D u_noiseTexture; +uniform vec3 u_noiseTextureDimensions; +uniform float u_noiseDetail; +in vec2 v_offset; +in vec3 v_maximumSize; +in vec4 v_color; +in float v_slice; +in float v_brightness; + +float wrap(float value, float rangeLength) { + if(value < 0.0) { + float absValue = abs(value); + float modValue = mod(absValue, rangeLength); + return mod(rangeLength - modValue, rangeLength); + } + return mod(value, rangeLength); +} + +vec3 wrapVec(vec3 value, float rangeLength) { + return vec3(wrap(value.x, rangeLength), + wrap(value.y, rangeLength), + wrap(value.z, rangeLength)); +} + +vec2 voxelToUV(vec3 voxelIndex) { + float textureSliceWidth = u_noiseTextureDimensions.x; + float noiseTextureRows = u_noiseTextureDimensions.y; + float inverseNoiseTextureRows = u_noiseTextureDimensions.z; + + float textureSliceWidthSquared = textureSliceWidth * textureSliceWidth; + vec2 inverseNoiseTextureDimensions = vec2(noiseTextureRows / textureSliceWidthSquared, + inverseNoiseTextureRows / textureSliceWidth); + vec3 wrappedIndex = wrapVec(voxelIndex, textureSliceWidth); + float column = mod(wrappedIndex.z, textureSliceWidth * inverseNoiseTextureRows); + float row = floor(wrappedIndex.z / textureSliceWidth * noiseTextureRows); + + float xPixelCoord = wrappedIndex.x + column * textureSliceWidth; + float yPixelCoord = wrappedIndex.y + row * textureSliceWidth; + return vec2(xPixelCoord, yPixelCoord) * inverseNoiseTextureDimensions; +} + +// Interpolate a voxel with its neighbor (along the positive X-axis) +vec4 lerpSamplesX(vec3 voxelIndex, float x) { + vec2 uv0 = voxelToUV(voxelIndex); + vec2 uv1 = voxelToUV(voxelIndex + vec3(1.0, 0.0, 0.0)); + vec4 sample0 = texture(u_noiseTexture, uv0); + vec4 sample1 = texture(u_noiseTexture, uv1); + return mix(sample0, sample1, x); +} + +vec4 sampleNoiseTexture(vec3 position) { + float textureSliceWidth = u_noiseTextureDimensions.x; + vec3 recenteredPos = position + vec3(textureSliceWidth / 2.0); + vec3 lerpValue = fract(recenteredPos); + vec3 voxelIndex = floor(recenteredPos); + + vec4 xLerp00 = lerpSamplesX(voxelIndex, lerpValue.x); + vec4 xLerp01 = lerpSamplesX(voxelIndex + vec3(0.0, 0.0, 1.0), lerpValue.x); + vec4 xLerp10 = lerpSamplesX(voxelIndex + vec3(0.0, 1.0, 0.0), lerpValue.x); + vec4 xLerp11 = lerpSamplesX(voxelIndex + vec3(0.0, 1.0, 1.0), lerpValue.x); + + vec4 yLerp0 = mix(xLerp00, xLerp10, lerpValue.y); + vec4 yLerp1 = mix(xLerp01, xLerp11, lerpValue.y); + return mix(yLerp0, yLerp1, lerpValue.z); +} + +// Intersection with a unit sphere with radius 0.5 at center (0, 0, 0). +bool intersectSphere(vec3 origin, vec3 dir, float slice, + out vec3 point, out vec3 normal) { + float A = dot(dir, dir); + float B = dot(origin, dir); + float C = dot(origin, origin) - 0.25; + float discriminant = (B * B) - (A * C); + if(discriminant < 0.0) { + return false; + } + float root = sqrt(discriminant); + float t = (-B - root) / A; + if(t < 0.0) { + t = (-B + root) / A; + } + point = origin + t * dir; + + if(slice >= 0.0) { + point.z = (slice / 2.0) - 0.5; + if(length(point) > 0.5) { + return false; + } + } + + normal = normalize(point); + point -= czm_epsilon2 * normal; + return true; +} + +// Transforms the ray origin and direction into unit sphere space, +// then transforms the result back into the ellipsoid's space. +bool intersectEllipsoid(vec3 origin, vec3 dir, vec3 center, vec3 scale, float slice, + out vec3 point, out vec3 normal) { + if(scale.x <= 0.01 || scale.y < 0.01 || scale.z < 0.01) { + return false; + } + + vec3 o = (origin - center) / scale; + vec3 d = dir / scale; + vec3 p, n; + bool intersected = intersectSphere(o, d, slice, p, n); + if(intersected) { + point = (p * scale) + center; + normal = n; + } + return intersected; +} + +// Assume that if phase shift is being called for octave i, +// the frequency is of i - 1. This saves us from doing extra +// division / multiplication operations. +vec2 phaseShift2D(vec2 p, vec2 freq) { + return (czm_pi / 2.0) * sin(freq.yx * p.yx); +} + +vec2 phaseShift3D(vec3 p, vec2 freq) { + return phaseShift2D(p.xy, freq) + czm_pi * vec2(sin(freq.x * p.z)); +} + +// The cloud texture function derived from Gardner's 1985 paper, +// "Visual Simulation of Clouds." +// https://www.cs.drexel.edu/~david/Classes/Papers/p297-gardner.pdf +const float T0 = 0.6; // contrast of the texture pattern +const float k = 0.1; // computed to produce a maximum value of 1 +const float C0 = 0.8; // coefficient +const float FX0 = 0.6; // frequency X +const float FY0 = 0.6; // frequency Y +const int octaves = 5; + +float T(vec3 point) { + vec2 sum = vec2(0.0); + float Ci = C0; + vec2 FXY = vec2(FX0, FY0); + vec2 PXY = vec2(0.0); + for(int i = 1; i <= octaves; i++) { + PXY = phaseShift3D(point, FXY); + Ci *= 0.707; + FXY *= 2.0; + vec2 sinTerm = sin(FXY * point.xy + PXY); + sum += Ci * sinTerm + vec2(T0); + } + return k * sum.x * sum.y; +} + +const float a = 0.5; // fraction of surface reflection due to ambient or scattered light, +const float t = 0.4; // fraction of texture shading +const float s = 0.25; // fraction of specular reflection + +float I(float Id, float Is, float It) { + return (1.0 - a) * ((1.0 - t) * ((1.0 - s) * Id + s * Is) + t * It) + a; +} + +const vec3 lightDir = normalize(vec3(0.2, -1.0, 0.7)); + +vec4 drawCloud(vec3 rayOrigin, vec3 rayDir, vec3 cloudCenter, vec3 cloudScale, float cloudSlice, + float brightness) { + vec3 cloudPoint, cloudNormal; + if(!intersectEllipsoid(rayOrigin, rayDir, cloudCenter, cloudScale, cloudSlice, + cloudPoint, cloudNormal)) { + return vec4(0.0); + } + + float Id = clamp(dot(cloudNormal, -lightDir), 0.0, 1.0); // diffuse reflection + float Is = max(pow(dot(-lightDir, -rayDir), 2.0), 0.0); // specular reflection + float It = T(cloudPoint); // texture function + float intensity = I(Id, Is, It); + vec3 color = vec3(intensity * clamp(brightness, 0.1, 1.0)); + + vec4 noise = sampleNoiseTexture(u_noiseDetail * cloudPoint); + float W = noise.x; + float W2 = noise.y; + float W3 = noise.z; + + // The dot product between the cloud's normal and the ray's direction is greatest + // in the center of the ellipsoid's surface. It decreases towards the edge. + // Thus, it is used to blur the areas leading to the edges of the ellipsoid, + // so that no harsh lines appear. + + // The first (and biggest) layer of worley noise is then subtracted from this. + // The final result is scaled up so that the base cloud is not too translucent. + float ndDot = clamp(dot(cloudNormal, -rayDir), 0.0, 1.0); + float TR = pow(ndDot, 3.0) - W; // translucency + TR *= 1.3; + + // Subtracting the second and third layers of worley noise is more complicated. + // If these layers of noise were simply subtracted from the current translucency, + // the shape derived from the first layer of noise would be completely deleted. + // The erosion of this noise should thus be constricted to the edges of the cloud. + // However, because the edges of the ellipsoid were already blurred away, mapping + // the noise to (1.0 - ndDot) will have no impact on most of the cloud's appearance. + // The value of (0.5 - ndDot) provides the best compromise. + float minusDot = 0.5 - ndDot; + + // Even with the previous calculation, subtracting the second layer of wnoise + // erode too much of the cloud. The addition of it, however, will detailed + // volume to the cloud. As long as the noise is only added and not subtracted, + // the results are aesthetically pleasing. + + // The minusDot product is mapped in a way that it is larger at the edges of + // the ellipsoid, so a subtraction and min operation are used instead of + // an addition and max one. + TR -= min(minusDot * W2, 0.0); + + // The third level of worley noise is subtracted from the result, with some + // modifications. First, a scalar is added to minusDot so that the noise + // starts affecting the shape farther away from the center of the ellipsoid's + // surface. Then, it is scaled down so its impact is not too intense. + TR -= 0.8 * (minusDot + 0.25) * W3; + + // The texture function's shading does not correlate with the shape of the cloud + // produced by the layers of noise, so an extra shading scalar is calculated. + // The darkest areas of the cloud are assigned to be where the noise erodes + // the cloud the most. This is then interpolated based on the translucency + // and the diffuse shading term of that point in the cloud. + float shading = mix(1.0 - 0.8 * W * W, 1.0, Id * TR); + + // To avoid values that are too dark, this scalar is increased by a small amount + // and clamped so it never goes to zero. + shading = clamp(shading + 0.2, 0.3, 1.0); + + // Finally, the contrast of the cloud's color is increased. + vec3 finalColor = mix(vec3(0.5), shading * color, 1.15); + return vec4(finalColor, clamp(TR, 0.0, 1.0)) * v_color; +} + +void main() { +#ifdef DEBUG_BILLBOARDS + out_FragColor = vec4(0.0, 0.5, 0.5, 1.0); +#endif + // To avoid calculations with high values, + // we raycast from an arbitrarily smaller space. + vec2 coordinate = v_maximumSize.xy * v_offset; + + vec3 ellipsoidScale = 0.82 * v_maximumSize; + vec3 ellipsoidCenter = vec3(0.0); + + float zOffset = max(ellipsoidScale.z - 10.0, 0.0); + vec3 eye = vec3(0, 0, -10.0 - zOffset); + vec3 rayDir = normalize(vec3(coordinate, 1.0) - eye); + vec3 rayOrigin = eye; +#ifdef DEBUG_ELLIPSOIDS + vec3 point, normal; + if(intersectEllipsoid(rayOrigin, rayDir, ellipsoidCenter, ellipsoidScale, v_slice, + point, normal)) { + out_FragColor = v_brightness * v_color; + } +#else +#ifndef DEBUG_BILLBOARDS + vec4 cloud = drawCloud(rayOrigin, rayDir, + ellipsoidCenter, ellipsoidScale, v_slice, v_brightness); + if(cloud.w < 0.01) { + discard; + } + out_FragColor = cloud; +#endif +#endif +} +`;var D2=`#ifdef INSTANCED +in vec2 direction; +#endif +in vec4 positionHighAndScaleX; +in vec4 positionLowAndScaleY; +in vec4 packedAttribute0; +in vec4 packedAttribute1; +in vec4 color; + +out vec2 v_offset; +out vec3 v_maximumSize; +out vec4 v_color; +out float v_slice; +out float v_brightness; + +void main() { + // Unpack attributes. + vec3 positionHigh = positionHighAndScaleX.xyz; + vec3 positionLow = positionLowAndScaleY.xyz; + vec2 scale = vec2(positionHighAndScaleX.w, positionLowAndScaleY.w); + + float show = packedAttribute0.x; + float brightness = packedAttribute0.y; + vec2 coordinates = packedAttribute0.wz; + vec3 maximumSize = packedAttribute1.xyz; + float slice = packedAttribute1.w; + +#ifdef INSTANCED + vec2 dir = direction; +#else + vec2 dir = coordinates; +#endif + + vec2 offset = dir - vec2(0.5, 0.5); + vec2 scaledOffset = scale * offset; + vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + vec4 positionEC = czm_modelViewRelativeToEye * p; + positionEC.xy += scaledOffset; + + positionEC.xyz *= show; + gl_Position = czm_projection * positionEC; + + v_offset = offset; + v_maximumSize = maximumSize; + v_color = color; + v_slice = slice; + v_brightness = brightness; +} +`;var v2=`uniform vec3 u_noiseTextureDimensions; +uniform float u_noiseDetail; +uniform vec3 u_noiseOffset; +in vec2 v_position; + +float wrap(float value, float rangeLength) { + if(value < 0.0) { + float absValue = abs(value); + float modValue = mod(absValue, rangeLength); + return mod(rangeLength - modValue, rangeLength); + } + return mod(value, rangeLength); +} + +vec3 wrapVec(vec3 value, float rangeLength) { + return vec3(wrap(value.x, rangeLength), + wrap(value.y, rangeLength), + wrap(value.z, rangeLength)); +} + +vec3 random3(vec3 p) { + float dot1 = dot(p, vec3(127.1, 311.7, 932.8)); + float dot2 = dot(p, vec3(269.5, 183.3, 421.4)); + return fract(vec3(sin(dot1 - dot2), cos(dot1 * dot2), dot1 * dot2)); +} + +// Frequency corresponds to cell size. +// The higher the frequency, the smaller the cell size. +vec3 getWorleyCellPoint(vec3 centerCell, vec3 offset, float freq) { + float textureSliceWidth = u_noiseTextureDimensions.x; + vec3 cell = centerCell + offset; + cell = wrapVec(cell, textureSliceWidth / u_noiseDetail); + cell += floor(u_noiseOffset / u_noiseDetail); + vec3 p = offset + random3(cell); + return p; +} + +float worleyNoise(vec3 p, float freq) { + vec3 centerCell = floor(p * freq); + vec3 pointInCell = fract(p * freq); + float shortestDistance = 1000.0; + + for(float z = -1.0; z <= 1.0; z++) { + for(float y = -1.0; y <= 1.0; y++) { + for(float x = -1.0; x <= 1.0; x++) { + vec3 offset = vec3(x, y, z); + vec3 point = getWorleyCellPoint(centerCell, offset, freq); + + float distance = length(pointInCell - point); + if(distance < shortestDistance) { + shortestDistance = distance; + } + } + } + } + + return shortestDistance; +} + +const float MAX_FBM_ITERATIONS = 10.0; + +float worleyFBMNoise(vec3 p, float octaves, float scale) { + float noise = 0.0; + float freq = 1.0; + float persistence = 0.625; + for(float i = 0.0; i < MAX_FBM_ITERATIONS; i++) { + if(i >= octaves) { + break; + } + + noise += worleyNoise(p * scale, freq * scale) * persistence; + persistence *= 0.5; + freq *= 2.0; + } + return noise; +} + +void main() { + float textureSliceWidth = u_noiseTextureDimensions.x; + float inverseNoiseTextureRows = u_noiseTextureDimensions.z; + float x = mod(v_position.x, textureSliceWidth); + float y = mod(v_position.y, textureSliceWidth); + float sliceRow = floor(v_position.y / textureSliceWidth); + float z = floor(v_position.x / textureSliceWidth) + sliceRow * inverseNoiseTextureRows * textureSliceWidth; + + vec3 position = vec3(x, y, z); + position /= u_noiseDetail; + float worley0 = clamp(worleyFBMNoise(position, 3.0, 1.0), 0.0, 1.0); + float worley1 = clamp(worleyFBMNoise(position, 3.0, 2.0), 0.0, 1.0); + float worley2 = clamp(worleyFBMNoise(position, 3.0, 3.0), 0.0, 1.0); + out_FragColor = vec4(worley0, worley1, worley2, 1.0); +} +`;var P2=`uniform vec3 u_noiseTextureDimensions; +in vec2 position; + +out vec2 v_position; + +void main() +{ + gl_Position = vec4(position, 0.1, 1.0); + + float textureSliceWidth = u_noiseTextureDimensions.x; + float noiseTextureRows = u_noiseTextureDimensions.y; + float inverseNoiseTextureRows = u_noiseTextureDimensions.z; + vec2 transformedPos = (position * 0.5) + vec2(0.5); + transformedPos *= textureSliceWidth; + transformedPos.x *= textureSliceWidth * inverseNoiseTextureRows; + transformedPos.y *= noiseTextureRows; + v_position = transformedPos; +} +`;var R2=`uniform sampler2D u_opaqueDepthTexture; +uniform sampler2D u_translucentDepthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + float opaqueDepth = texture(u_opaqueDepthTexture, v_textureCoordinates).r; + float translucentDepth = texture(u_translucentDepthTexture, v_textureCoordinates).r; + translucentDepth = czm_branchFreeTernary(translucentDepth > opaqueDepth, 1.0, translucentDepth); + out_FragColor = czm_packDepth(translucentDepth); +} +`;var M2=`/** + * Compositing for Weighted Blended Order-Independent Transparency. See: + * - http://jcgt.org/published/0002/02/09/ + * - http://casual-effects.blogspot.com/2014/03/weighted-blended-order-independent.html + */ + +uniform sampler2D u_opaque; +uniform sampler2D u_accumulation; +uniform sampler2D u_revealage; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 opaque = texture(u_opaque, v_textureCoordinates); + vec4 accum = texture(u_accumulation, v_textureCoordinates); + float r = texture(u_revealage, v_textureCoordinates).r; + +#ifdef MRT + vec4 transparent = vec4(accum.rgb / clamp(r, 1e-4, 5e4), accum.a); +#else + vec4 transparent = vec4(accum.rgb / clamp(accum.a, 1e-4, 5e4), r); +#endif + + out_FragColor = (1.0 - transparent.a) * transparent + transparent.a * opaque; + + if (opaque != czm_backgroundColor) + { + out_FragColor.a = 1.0; + } +} +`;var N2=`in vec4 positionEC; + +void main() +{ + vec3 position; + vec3 direction; + if (czm_orthographicIn3D == 1.0) + { + vec2 uv = (gl_FragCoord.xy - czm_viewport.xy) / czm_viewport.zw; + vec2 minPlane = vec2(czm_frustumPlanes.z, czm_frustumPlanes.y); // left, bottom + vec2 maxPlane = vec2(czm_frustumPlanes.w, czm_frustumPlanes.x); // right, top + position = vec3(mix(minPlane, maxPlane, uv), 0.0); + direction = vec3(0.0, 0.0, -1.0); + } + else + { + position = vec3(0.0); + direction = normalize(positionEC.xyz); + } + + czm_ray ray = czm_ray(position, direction); + + vec3 ellipsoid_center = czm_view[3].xyz; + + czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid_center, czm_ellipsoidInverseRadii); + if (!czm_isEmpty(intersection)) + { + out_FragColor = vec4(1.0, 1.0, 0.0, 1.0); + } + else + { + discard; + } + + czm_writeLogDepth(); +} +`;var L2=`in vec4 position; + +out vec4 positionEC; + +void main() +{ + positionEC = czm_modelView * position; + gl_Position = czm_projection * positionEC; + + czm_vertexLogDepth(); +} +`;var lw=`uniform vec3 u_radii; +uniform vec3 u_oneOverEllipsoidRadiiSquared; + +in vec3 v_positionEC; + +vec4 computeEllipsoidColor(czm_ray ray, float intersection, float side) +{ + vec3 positionEC = czm_pointAlongRay(ray, intersection); + vec3 positionMC = (czm_inverseModelView * vec4(positionEC, 1.0)).xyz; + vec3 geodeticNormal = normalize(czm_geodeticSurfaceNormal(positionMC, vec3(0.0), u_oneOverEllipsoidRadiiSquared)); + vec3 sphericalNormal = normalize(positionMC / u_radii); + vec3 normalMC = geodeticNormal * side; // normalized surface normal (always facing the viewer) in model coordinates + vec3 normalEC = normalize(czm_normal * normalMC); // normalized surface normal in eye coordinates + + vec2 st = czm_ellipsoidTextureCoordinates(sphericalNormal); + vec3 positionToEyeEC = -positionEC; + + czm_materialInput materialInput; + materialInput.s = st.s; + materialInput.st = st; + materialInput.str = (positionMC + u_radii) / u_radii; + materialInput.normalEC = normalEC; + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(positionMC, normalEC); + materialInput.positionToEyeEC = positionToEyeEC; + czm_material material = czm_getMaterial(materialInput); + +#ifdef ONLY_SUN_LIGHTING + return czm_private_phong(normalize(positionToEyeEC), material, czm_sunDirectionEC); +#else + return czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} + +void main() +{ + // PERFORMANCE_TODO: When dynamic branching is available, compute ratio of maximum and minimum radii + // in the vertex shader. Only when it is larger than some constant, march along the ray. + // Otherwise perform one intersection test which will be the common case. + + // Test if the ray intersects a sphere with the ellipsoid's maximum radius. + // For very oblate ellipsoids, using the ellipsoid's radii for an intersection test + // may cause false negatives. This will discard fragments before marching the ray forward. + float maxRadius = max(u_radii.x, max(u_radii.y, u_radii.z)) * 1.5; + vec3 direction = normalize(v_positionEC); + vec3 ellipsoidCenter = czm_modelView[3].xyz; + + float t1 = -1.0; + float t2 = -1.0; + + float b = -2.0 * dot(direction, ellipsoidCenter); + float c = dot(ellipsoidCenter, ellipsoidCenter) - maxRadius * maxRadius; + + float discriminant = b * b - 4.0 * c; + if (discriminant >= 0.0) { + t1 = (-b - sqrt(discriminant)) * 0.5; + t2 = (-b + sqrt(discriminant)) * 0.5; + } + + if (t1 < 0.0 && t2 < 0.0) { + discard; + } + + float t = min(t1, t2); + if (t < 0.0) { + t = 0.0; + } + + // March ray forward to intersection with larger sphere and find + czm_ray ray = czm_ray(t * direction, direction); + + vec3 ellipsoid_inverseRadii = vec3(1.0 / u_radii.x, 1.0 / u_radii.y, 1.0 / u_radii.z); + + czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoidCenter, ellipsoid_inverseRadii); + + if (czm_isEmpty(intersection)) + { + discard; + } + + // If the viewer is outside, compute outsideFaceColor, with normals facing outward. + vec4 outsideFaceColor = (intersection.start != 0.0) ? computeEllipsoidColor(ray, intersection.start, 1.0) : vec4(0.0); + + // If the viewer either is inside or can see inside, compute insideFaceColor, with normals facing inward. + vec4 insideFaceColor = (outsideFaceColor.a < 1.0) ? computeEllipsoidColor(ray, intersection.stop, -1.0) : vec4(0.0); + + out_FragColor = mix(insideFaceColor, outsideFaceColor, outsideFaceColor.a); + out_FragColor.a = 1.0 - (1.0 - insideFaceColor.a) * (1.0 - outsideFaceColor.a); + +#if (defined(WRITE_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth))) + t = (intersection.start != 0.0) ? intersection.start : intersection.stop; + vec3 positionEC = czm_pointAlongRay(ray, t); + vec4 positionCC = czm_projection * vec4(positionEC, 1.0); +#ifdef LOG_DEPTH + czm_writeLogDepth(1.0 + positionCC.w); +#else + float z = positionCC.z / positionCC.w; + + float n = czm_depthRange.near; + float f = czm_depthRange.far; + + gl_FragDepth = (z * (f - n) + f + n) * 0.5; +#endif +#endif +} +`;var uw=`in vec3 position; + +uniform vec3 u_radii; + +out vec3 v_positionEC; + +void main() +{ + // In the vertex data, the cube goes from (-1.0, -1.0, -1.0) to (1.0, 1.0, 1.0) in model coordinates. + // Scale to consider the radii. We could also do this once on the CPU when using the BoxGeometry, + // but doing it here allows us to change the radii without rewriting the vertex data, and + // allows all ellipsoids to reuse the same vertex data. + vec4 p = vec4(u_radii * position, 1.0); + + vec4 pEC = czm_modelView * p; + v_positionEC = pEC.xyz; // position in eye coordinates + gl_Position = czm_projection * pEC; + // With multi-frustum, when the ellipsoid primitive is positioned on the intersection of two frustums + // and close to terrain, the terrain (writes depth) in the closest frustum can overwrite part of the + // ellipsoid (does not write depth) that was rendered in the farther frustum. + // + // Here, we clamp the depth in the vertex shader to avoid being overwritten; however, this creates + // artifacts since some fragments can be alpha blended twice. This is solved by only rendering + // the ellipsoid in the closest frustum to the viewer. + gl_Position.z = clamp(gl_Position.z, czm_depthRange.near, czm_depthRange.far); + + czm_vertexLogDepth(); +} +`;/** + * @license + * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of NVIDIA CORPORATION nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */var O2=`/** + * @license + * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of NVIDIA CORPORATION nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS \`\`AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +// NVIDIA GameWorks Graphics Samples GitHub link: https://github.com/NVIDIAGameWorks/GraphicsSamples +// Original source (archived): https://archive.org/details/nvidiagame-works-graphics-samples-master +// Original FXAA 3.11 shader link: https://github.com/NVIDIAGameWorks/GraphicsSamples/blob/master/samples/es3-kepler/FXAA/FXAA3_11.h +// Shader link in fork: https://github.com/lyntel/GraphicsSamples/blob/3d30817ebeeade64fe6a4fc3aa1fe4265c29b6fd/samples/es3-kepler/FXAA/FXAA3_11.h + +// Steps used to integrate into Cesium: +// * The following defines are set: +// #define FXAA_PC 1 +// #define FXAA_WEBGL_1 1 +// #define FXAA_GREEN_AS_LUMA 1 +// #define FXAA_EARLY_EXIT 1 +// #define FXAA_GLSL_120 1 +// * All other preprocessor directives besides the FXAA_QUALITY__P* directives were removed. +// * Double underscores are invalid for preprocessor directives so replace them with a single underscore. Replace +// /FXAA_QUALITY__P(.*)/g with /FXAA_QUALITY__P$1/. +// * There are no implicit conversions from ivec* to vec* so replace: +// #define FxaaInt2 ivec2 +// with +// #define FxaaInt2 vec2 +// * The texture2DLod function is only available in vertex shaders so replace: +// #define FxaaTexTop(t, p) texture2DLod(t, p, 0.0) +// #define FxaaTexOff(t, p, o, r) texture2DLod(t, p + (o * r), 0.0) +// with +// #define FxaaTexTop(t, p) texture(t, p) +// #define FxaaTexOff(t, p, o, r) texture(t, p + (o * r)) +// * FXAA_QUALITY_PRESET is prepended in the javascript code. We may want to expose that setting in the future. +// * The following parameters to FxaaPixelShader are unused and can be removed: +// fxaaConsolePosPos +// fxaaConsoleRcpFrameOpt +// fxaaConsoleRcpFrameOpt2 +// fxaaConsole360RcpFrameOpt2 +// fxaaConsoleEdgeSharpness +// fxaaConsoleEdgeThreshold +// fxaaConsoleEdgeThresholdMi +// fxaaConsole360ConstDir + +// +// Choose the quality preset. +// This needs to be compiled into the shader as it effects code. +// Best option to include multiple presets is to +// in each shader define the preset, then include this file. +// +// OPTIONS +// ----------------------------------------------------------------------- +// 10 to 15 - default medium dither (10=fastest, 15=highest quality) +// 20 to 29 - less dither, more expensive (20=fastest, 29=highest quality) +// 39 - no dither, very expensive +// +// NOTES +// ----------------------------------------------------------------------- +// 12 = slightly faster then FXAA 3.9 and higher edge quality (default) +// 13 = about same speed as FXAA 3.9 and better than 12 +// 23 = closest to FXAA 3.9 visually and performance wise +// _ = the lowest digit is directly related to performance +// _ = the highest digit is directly related to style +// +//#define FXAA_QUALITY_PRESET 12 + + +#if (FXAA_QUALITY_PRESET == 10) + #define FXAA_QUALITY_PS 3 + #define FXAA_QUALITY_P0 1.5 + #define FXAA_QUALITY_P1 3.0 + #define FXAA_QUALITY_P2 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 11) + #define FXAA_QUALITY_PS 4 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 3.0 + #define FXAA_QUALITY_P3 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 12) + #define FXAA_QUALITY_PS 5 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 4.0 + #define FXAA_QUALITY_P4 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 13) + #define FXAA_QUALITY_PS 6 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 4.0 + #define FXAA_QUALITY_P5 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 14) + #define FXAA_QUALITY_PS 7 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 4.0 + #define FXAA_QUALITY_P6 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 15) + #define FXAA_QUALITY_PS 8 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 4.0 + #define FXAA_QUALITY_P7 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 20) + #define FXAA_QUALITY_PS 3 + #define FXAA_QUALITY_P0 1.5 + #define FXAA_QUALITY_P1 2.0 + #define FXAA_QUALITY_P2 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 21) + #define FXAA_QUALITY_PS 4 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 22) + #define FXAA_QUALITY_PS 5 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 23) + #define FXAA_QUALITY_PS 6 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 24) + #define FXAA_QUALITY_PS 7 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 3.0 + #define FXAA_QUALITY_P6 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 25) + #define FXAA_QUALITY_PS 8 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 4.0 + #define FXAA_QUALITY_P7 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 26) + #define FXAA_QUALITY_PS 9 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 4.0 + #define FXAA_QUALITY_P8 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 27) + #define FXAA_QUALITY_PS 10 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 4.0 + #define FXAA_QUALITY_P9 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 28) + #define FXAA_QUALITY_PS 11 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 2.0 + #define FXAA_QUALITY_P9 4.0 + #define FXAA_QUALITY_P10 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 29) + #define FXAA_QUALITY_PS 12 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 2.0 + #define FXAA_QUALITY_P9 2.0 + #define FXAA_QUALITY_P10 4.0 + #define FXAA_QUALITY_P11 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 39) + #define FXAA_QUALITY_PS 12 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.0 + #define FXAA_QUALITY_P2 1.0 + #define FXAA_QUALITY_P3 1.0 + #define FXAA_QUALITY_P4 1.0 + #define FXAA_QUALITY_P5 1.5 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 2.0 + #define FXAA_QUALITY_P9 2.0 + #define FXAA_QUALITY_P10 4.0 + #define FXAA_QUALITY_P11 8.0 +#endif + +#define FxaaBool bool +#define FxaaFloat float +#define FxaaFloat2 vec2 +#define FxaaFloat3 vec3 +#define FxaaFloat4 vec4 +#define FxaaHalf float +#define FxaaHalf2 vec2 +#define FxaaHalf3 vec3 +#define FxaaHalf4 vec4 +#define FxaaInt2 vec2 +#define FxaaTex sampler2D + +#define FxaaSat(x) clamp(x, 0.0, 1.0) +#define FxaaTexTop(t, p) texture(t, p) +#define FxaaTexOff(t, p, o, r) texture(t, p + (o * r)) + +FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; } + +FxaaFloat4 FxaaPixelShader( + // + // Use noperspective interpolation here (turn off perspective interpolation). + // {xy} = center of pixel + FxaaFloat2 pos, + // + // Input color texture. + // {rgb_} = color in linear or perceptual color space + // if (FXAA_GREEN_AS_LUMA == 0) + // {___a} = luma in perceptual color space (not linear) + FxaaTex tex, + // + // Only used on FXAA Quality. + // This must be from a constant/uniform. + // {x_} = 1.0/screenWidthInPixels + // {_y} = 1.0/screenHeightInPixels + FxaaFloat2 fxaaQualityRcpFrame, + // + // Only used on FXAA Quality. + // This used to be the FXAA_QUALITY_SUBPIX define. + // It is here now to allow easier tuning. + // Choose the amount of sub-pixel aliasing removal. + // This can effect sharpness. + // 1.00 - upper limit (softer) + // 0.75 - default amount of filtering + // 0.50 - lower limit (sharper, less sub-pixel aliasing removal) + // 0.25 - almost off + // 0.00 - completely off + FxaaFloat fxaaQualitySubpix, + // + // Only used on FXAA Quality. + // This used to be the FXAA_QUALITY_EDGE_THRESHOLD define. + // It is here now to allow easier tuning. + // The minimum amount of local contrast required to apply algorithm. + // 0.333 - too little (faster) + // 0.250 - low quality + // 0.166 - default + // 0.125 - high quality + // 0.063 - overkill (slower) + FxaaFloat fxaaQualityEdgeThreshold, + // + // Only used on FXAA Quality. + // This used to be the FXAA_QUALITY_EDGE_THRESHOLD_MIN define. + // It is here now to allow easier tuning. + // Trims the algorithm from processing darks. + // 0.0833 - upper limit (default, the start of visible unfiltered edges) + // 0.0625 - high quality (faster) + // 0.0312 - visible limit (slower) + // Special notes when using FXAA_GREEN_AS_LUMA, + // Likely want to set this to zero. + // As colors that are mostly not-green + // will appear very dark in the green channel! + // Tune by looking at mostly non-green content, + // then start at zero and increase until aliasing is a problem. + FxaaFloat fxaaQualityEdgeThresholdMin +) { +/*--------------------------------------------------------------------------*/ + FxaaFloat2 posM; + posM.x = pos.x; + posM.y = pos.y; + FxaaFloat4 rgbyM = FxaaTexTop(tex, posM); + #define lumaM rgbyM.y + FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy)); +/*--------------------------------------------------------------------------*/ + FxaaFloat maxSM = max(lumaS, lumaM); + FxaaFloat minSM = min(lumaS, lumaM); + FxaaFloat maxESM = max(lumaE, maxSM); + FxaaFloat minESM = min(lumaE, minSM); + FxaaFloat maxWN = max(lumaN, lumaW); + FxaaFloat minWN = min(lumaN, lumaW); + FxaaFloat rangeMax = max(maxWN, maxESM); + FxaaFloat rangeMin = min(minWN, minESM); + FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold; + FxaaFloat range = rangeMax - rangeMin; + FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled); + FxaaBool earlyExit = range < rangeMaxClamped; +/*--------------------------------------------------------------------------*/ + if(earlyExit) + return rgbyM; +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy)); +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNS = lumaN + lumaS; + FxaaFloat lumaWE = lumaW + lumaE; + FxaaFloat subpixRcpRange = 1.0/range; + FxaaFloat subpixNSWE = lumaNS + lumaWE; + FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS; + FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE; +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNESE = lumaNE + lumaSE; + FxaaFloat lumaNWNE = lumaNW + lumaNE; + FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE; + FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE; +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNWSW = lumaNW + lumaSW; + FxaaFloat lumaSWSE = lumaSW + lumaSE; + FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2); + FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2); + FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW; + FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE; + FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4; + FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4; +/*--------------------------------------------------------------------------*/ + FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE; + FxaaFloat lengthSign = fxaaQualityRcpFrame.x; + FxaaBool horzSpan = edgeHorz >= edgeVert; + FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE; +/*--------------------------------------------------------------------------*/ + if(!horzSpan) lumaN = lumaW; + if(!horzSpan) lumaS = lumaE; + if(horzSpan) lengthSign = fxaaQualityRcpFrame.y; + FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM; +/*--------------------------------------------------------------------------*/ + FxaaFloat gradientN = lumaN - lumaM; + FxaaFloat gradientS = lumaS - lumaM; + FxaaFloat lumaNN = lumaN + lumaM; + FxaaFloat lumaSS = lumaS + lumaM; + FxaaBool pairN = abs(gradientN) >= abs(gradientS); + FxaaFloat gradient = max(abs(gradientN), abs(gradientS)); + if(pairN) lengthSign = -lengthSign; + FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange); +/*--------------------------------------------------------------------------*/ + FxaaFloat2 posB; + posB.x = posM.x; + posB.y = posM.y; + FxaaFloat2 offNP; + offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x; + offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y; + if(!horzSpan) posB.x += lengthSign * 0.5; + if( horzSpan) posB.y += lengthSign * 0.5; +/*--------------------------------------------------------------------------*/ + FxaaFloat2 posN; + posN.x = posB.x - offNP.x * FXAA_QUALITY_P0; + posN.y = posB.y - offNP.y * FXAA_QUALITY_P0; + FxaaFloat2 posP; + posP.x = posB.x + offNP.x * FXAA_QUALITY_P0; + posP.y = posB.y + offNP.y * FXAA_QUALITY_P0; + FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0; + FxaaFloat lumaEndN = FxaaLuma(FxaaTexTop(tex, posN)); + FxaaFloat subpixE = subpixC * subpixC; + FxaaFloat lumaEndP = FxaaLuma(FxaaTexTop(tex, posP)); +/*--------------------------------------------------------------------------*/ + if(!pairN) lumaNN = lumaSS; + FxaaFloat gradientScaled = gradient * 1.0/4.0; + FxaaFloat lumaMM = lumaM - lumaNN * 0.5; + FxaaFloat subpixF = subpixD * subpixE; + FxaaBool lumaMLTZero = lumaMM < 0.0; +/*--------------------------------------------------------------------------*/ + lumaEndN -= lumaNN * 0.5; + lumaEndP -= lumaNN * 0.5; + FxaaBool doneN = abs(lumaEndN) >= gradientScaled; + FxaaBool doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P1; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P1; + FxaaBool doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P1; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P1; +/*--------------------------------------------------------------------------*/ + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P2; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P2; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P2; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P2; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 3) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P3; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P3; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P3; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P3; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 4) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P4; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P4; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P4; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P4; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 5) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P5; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P5; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P5; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P5; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 6) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P6; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P6; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P6; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P6; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 7) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P7; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P7; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P7; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P7; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 8) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P8; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P8; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P8; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P8; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 9) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P9; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P9; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P9; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P9; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 10) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P10; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P10; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P10; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P10; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 11) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P11; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P11; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P11; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P11; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 12) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P12; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P12; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P12; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P12; +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } +/*--------------------------------------------------------------------------*/ + FxaaFloat dstN = posM.x - posN.x; + FxaaFloat dstP = posP.x - posM.x; + if(!horzSpan) dstN = posM.y - posN.y; + if(!horzSpan) dstP = posP.y - posM.y; +/*--------------------------------------------------------------------------*/ + FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero; + FxaaFloat spanLength = (dstP + dstN); + FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero; + FxaaFloat spanLengthRcp = 1.0/spanLength; +/*--------------------------------------------------------------------------*/ + FxaaBool directionN = dstN < dstP; + FxaaFloat dst = min(dstN, dstP); + FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP; + FxaaFloat subpixG = subpixF * subpixF; + FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5; + FxaaFloat subpixH = subpixG * fxaaQualitySubpix; +/*--------------------------------------------------------------------------*/ + FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0; + FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH); + if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign; + if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign; + return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM); +} +`;var F2=`uniform vec4 u_initialColor; + +#if TEXTURE_UNITS > 0 +uniform sampler2D u_dayTextures[TEXTURE_UNITS]; +uniform vec4 u_dayTextureTranslationAndScale[TEXTURE_UNITS]; +uniform bool u_dayTextureUseWebMercatorT[TEXTURE_UNITS]; + +#ifdef APPLY_ALPHA +uniform float u_dayTextureAlpha[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_DAY_NIGHT_ALPHA +uniform float u_dayTextureNightAlpha[TEXTURE_UNITS]; +uniform float u_dayTextureDayAlpha[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_SPLIT +uniform float u_dayTextureSplit[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_BRIGHTNESS +uniform float u_dayTextureBrightness[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_CONTRAST +uniform float u_dayTextureContrast[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_HUE +uniform float u_dayTextureHue[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_SATURATION +uniform float u_dayTextureSaturation[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_GAMMA +uniform float u_dayTextureOneOverGamma[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_IMAGERY_CUTOUT +uniform vec4 u_dayTextureCutoutRectangles[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_COLOR_TO_ALPHA +uniform vec4 u_colorsToAlpha[TEXTURE_UNITS]; +#endif + +uniform vec4 u_dayTextureTexCoordsRectangle[TEXTURE_UNITS]; +#endif + +#if defined(HAS_WATER_MASK) && (defined(SHOW_REFLECTIVE_OCEAN) || defined(APPLY_MATERIAL)) +uniform sampler2D u_waterMask; +uniform vec4 u_waterMaskTranslationAndScale; +uniform float u_zoomedOutOceanSpecularIntensity; +#endif + +#ifdef SHOW_OCEAN_WAVES +uniform sampler2D u_oceanNormalMap; +#endif + +#if defined(ENABLE_DAYNIGHT_SHADING) || defined(GROUND_ATMOSPHERE) +uniform vec2 u_lightingFadeDistance; +#endif + +#ifdef TILE_LIMIT_RECTANGLE +uniform vec4 u_cartographicLimitRectangle; +#endif + +#ifdef GROUND_ATMOSPHERE +uniform vec2 u_nightFadeDistance; +#endif + +#ifdef ENABLE_CLIPPING_PLANES +uniform highp sampler2D u_clippingPlanes; +uniform mat4 u_clippingPlanesMatrix; +uniform vec4 u_clippingPlanesEdgeStyle; +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS +uniform highp sampler2D u_clippingDistance; +in vec2 v_clippingPosition; +flat in int v_regionIndex; +#endif + +#if defined(GROUND_ATMOSPHERE) || defined(FOG) && defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING)) +uniform float u_minimumBrightness; +#endif + +// Based on colorCorrect +// The colorCorrect flag can only be true when tileProvider.hue/saturation/brightnessShift +// are nonzero AND when (applyFog || showGroundAtmosphere) in the tile provider +// - The tileProvider.hue/saturation/brightnessShift are just passed through +// from the Globe hue/saturation/brightness, like atmosphereBrightnessShift +// - The applyFog depends on enableFog, and some tile distance from the viewer +// - The showGroundAtmosphere is a flag that is passed through from the Globe, +// and is true by default when the ellipsoid is WGS84 +#ifdef COLOR_CORRECT +uniform vec3 u_hsbShift; // Hue, saturation, brightness +#endif + +// Based on highlightFillTile +// This is set for terrain tiles when they are "fill" tiles, and +// the terrainProvider.fillHighlightColor was set to a value with +// nonzero alpha +#ifdef HIGHLIGHT_FILL_TILE +uniform vec4 u_fillHighlightColor; +#endif + +// Based on translucent +// This is set depending on the GlobeTranslucencyState +#ifdef TRANSLUCENT +uniform vec4 u_frontFaceAlphaByDistance; +uniform vec4 u_backFaceAlphaByDistance; +uniform vec4 u_translucencyRectangle; +#endif + +// Based on showUndergroundColor +// This is set when GlobeSurfaceTileProvider.isUndergroundVisible +// returns true, AND the tileProvider.undergroundColor had a value with +// nonzero alpha, and the tileProvider.undergroundColorAlphaByDistance +// was in the right range +#ifdef UNDERGROUND_COLOR +uniform vec4 u_undergroundColor; +uniform vec4 u_undergroundColorAlphaByDistance; +#endif + +// Based on enableLighting && hasVertexNormals +// The enableLighting flag is passed in directly from the Globe. +// The hasVertexNormals flag is from the tileProvider +#ifdef ENABLE_VERTEX_LIGHTING +uniform float u_lambertDiffuseMultiplier; +uniform float u_vertexShadowDarkness; +#endif + +in vec3 v_positionMC; +in vec3 v_positionEC; +in vec3 v_textureCoordinates; +in vec3 v_normalMC; +in vec3 v_normalEC; + +#ifdef APPLY_MATERIAL +in float v_height; +in float v_slope; +in float v_aspect; +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) +in float v_distance; +#endif + +#if defined(GROUND_ATMOSPHERE) || defined(FOG) +in vec3 v_atmosphereRayleighColor; +in vec3 v_atmosphereMieColor; +in float v_atmosphereOpacity; +#endif + +#if defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) +float interpolateByDistance(vec4 nearFarScalar, float distance) +{ + float startDistance = nearFarScalar.x; + float startValue = nearFarScalar.y; + float endDistance = nearFarScalar.z; + float endValue = nearFarScalar.w; + float t = clamp((distance - startDistance) / (endDistance - startDistance), 0.0, 1.0); + return mix(startValue, endValue, t); +} +#endif + +#if defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) || defined(APPLY_MATERIAL) +vec4 alphaBlend(vec4 sourceColor, vec4 destinationColor) +{ + return sourceColor * vec4(sourceColor.aaa, 1.0) + destinationColor * (1.0 - sourceColor.a); +} +#endif + +#ifdef TRANSLUCENT +bool inTranslucencyRectangle() +{ + return + v_textureCoordinates.x > u_translucencyRectangle.x && + v_textureCoordinates.x < u_translucencyRectangle.z && + v_textureCoordinates.y > u_translucencyRectangle.y && + v_textureCoordinates.y < u_translucencyRectangle.w; +} +#endif + +vec4 sampleAndBlend( + vec4 previousColor, + sampler2D textureToSample, + vec2 tileTextureCoordinates, + vec4 textureCoordinateRectangle, + vec4 textureCoordinateTranslationAndScale, + float textureAlpha, + float textureNightAlpha, + float textureDayAlpha, + float textureBrightness, + float textureContrast, + float textureHue, + float textureSaturation, + float textureOneOverGamma, + float split, + vec4 colorToAlpha, + float nightBlend) +{ + // This crazy step stuff sets the alpha to 0.0 if this following condition is true: + // tileTextureCoordinates.s < textureCoordinateRectangle.s || + // tileTextureCoordinates.s > textureCoordinateRectangle.p || + // tileTextureCoordinates.t < textureCoordinateRectangle.t || + // tileTextureCoordinates.t > textureCoordinateRectangle.q + // In other words, the alpha is zero if the fragment is outside the rectangle + // covered by this texture. Would an actual 'if' yield better performance? + vec2 alphaMultiplier = step(textureCoordinateRectangle.st, tileTextureCoordinates); + textureAlpha = textureAlpha * alphaMultiplier.x * alphaMultiplier.y; + + alphaMultiplier = step(vec2(0.0), textureCoordinateRectangle.pq - tileTextureCoordinates); + textureAlpha = textureAlpha * alphaMultiplier.x * alphaMultiplier.y; + +#if defined(APPLY_DAY_NIGHT_ALPHA) && defined(ENABLE_DAYNIGHT_SHADING) + textureAlpha *= mix(textureDayAlpha, textureNightAlpha, nightBlend); +#endif + + vec2 translation = textureCoordinateTranslationAndScale.xy; + vec2 scale = textureCoordinateTranslationAndScale.zw; + vec2 textureCoordinates = tileTextureCoordinates * scale + translation; + vec4 value = texture(textureToSample, textureCoordinates); + vec3 color = value.rgb; + float alpha = value.a; + +#ifdef APPLY_COLOR_TO_ALPHA + vec3 colorDiff = abs(color.rgb - colorToAlpha.rgb); + colorDiff.r = czm_maximumComponent(colorDiff); + alpha = czm_branchFreeTernary(colorDiff.r < colorToAlpha.a, 0.0, alpha); +#endif + +#if !defined(APPLY_GAMMA) + vec4 tempColor = czm_gammaCorrect(vec4(color, alpha)); + color = tempColor.rgb; + alpha = tempColor.a; +#else + color = pow(color, vec3(textureOneOverGamma)); +#endif + +#ifdef APPLY_SPLIT + float splitPosition = czm_splitPosition; + // Split to the left + if (split < 0.0 && gl_FragCoord.x > splitPosition) { + alpha = 0.0; + } + // Split to the right + else if (split > 0.0 && gl_FragCoord.x < splitPosition) { + alpha = 0.0; + } +#endif + +#ifdef APPLY_BRIGHTNESS + color = mix(vec3(0.0), color, textureBrightness); +#endif + +#ifdef APPLY_CONTRAST + color = mix(vec3(0.5), color, textureContrast); +#endif + +#ifdef APPLY_HUE + color = czm_hue(color, textureHue); +#endif + +#ifdef APPLY_SATURATION + color = czm_saturation(color, textureSaturation); +#endif + + float sourceAlpha = alpha * textureAlpha; + float outAlpha = mix(previousColor.a, 1.0, sourceAlpha); + outAlpha += sign(outAlpha) - 1.0; + + vec3 outColor = mix(previousColor.rgb * previousColor.a, color, sourceAlpha) / outAlpha; + + // When rendering imagery for a tile in multiple passes, + // some GPU/WebGL implementation combinations will not blend fragments in + // additional passes correctly if their computation includes an unmasked + // divide-by-zero operation, + // even if it's not in the output or if the output has alpha zero. + // + // For example, without sanitization for outAlpha, + // this renders without artifacts: + // if (outAlpha == 0.0) { outColor = vec3(0.0); } + // + // but using czm_branchFreeTernary will cause portions of the tile that are + // alpha-zero in the additional pass to render as black instead of blending + // with the previous pass: + // outColor = czm_branchFreeTernary(outAlpha == 0.0, vec3(0.0), outColor); + // + // So instead, sanitize against divide-by-zero, + // store this state on the sign of outAlpha, and correct on return. + + return vec4(outColor, max(outAlpha, 0.0)); +} + +vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend); +vec4 computeWaterColor(vec3 positionEyeCoordinates, vec2 textureCoordinates, mat3 enuToEye, vec4 imageryColor, float specularMapValue, float fade); + +const float fExposure = 2.0; + +vec3 computeEllipsoidPosition() +{ + float mpp = czm_metersPerPixel(vec4(0.0, 0.0, -czm_currentFrustum.x, 1.0), 1.0); + vec2 xy = gl_FragCoord.xy / czm_viewport.zw * 2.0 - vec2(1.0); + xy *= czm_viewport.zw * mpp * 0.5; + + vec3 direction; + if (czm_orthographicIn3D == 1.0) + { + direction = vec3(0.0, 0.0, -1.0); + } + else + { + direction = normalize(vec3(xy, -czm_currentFrustum.x)); + } + + czm_ray ray = czm_ray(vec3(0.0), direction); + + vec3 ellipsoid_center = czm_view[3].xyz; + + czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid_center, czm_ellipsoidInverseRadii); + + vec3 ellipsoidPosition = czm_pointAlongRay(ray, intersection.start); + return (czm_inverseView * vec4(ellipsoidPosition, 1.0)).xyz; +} + +void main() +{ +#ifdef TILE_LIMIT_RECTANGLE + if (v_textureCoordinates.x < u_cartographicLimitRectangle.x || u_cartographicLimitRectangle.z < v_textureCoordinates.x || + v_textureCoordinates.y < u_cartographicLimitRectangle.y || u_cartographicLimitRectangle.w < v_textureCoordinates.y) + { + discard; + } +#endif + +#ifdef ENABLE_CLIPPING_PLANES + float clipDistance = clip(gl_FragCoord, u_clippingPlanes, u_clippingPlanesMatrix); +#endif + +#if defined(SHOW_REFLECTIVE_OCEAN) || defined(ENABLE_DAYNIGHT_SHADING) || defined(HDR) + vec3 normalMC = czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0)); // normalized surface normal in model coordinates + vec3 normalEC = czm_normal3D * normalMC; // normalized surface normal in eye coordinates +#endif + +#if defined(APPLY_DAY_NIGHT_ALPHA) && defined(ENABLE_DAYNIGHT_SHADING) + float nightBlend = 1.0 - clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * 5.0, 0.0, 1.0); +#else + float nightBlend = 0.0; +#endif + + // The clamp below works around an apparent bug in Chrome Canary v23.0.1241.0 + // where the fragment shader sees textures coordinates < 0.0 and > 1.0 for the + // fragments on the edges of tiles even though the vertex shader is outputting + // coordinates strictly in the 0-1 range. + vec4 color = computeDayColor(u_initialColor, clamp(v_textureCoordinates, 0.0, 1.0), nightBlend); + +#ifdef SHOW_TILE_BOUNDARIES + if (v_textureCoordinates.x < (1.0/256.0) || v_textureCoordinates.x > (255.0/256.0) || + v_textureCoordinates.y < (1.0/256.0) || v_textureCoordinates.y > (255.0/256.0)) + { + color = vec4(1.0, 0.0, 0.0, 1.0); + } +#endif + +#if defined(ENABLE_DAYNIGHT_SHADING) || defined(GROUND_ATMOSPHERE) + float cameraDist; + if (czm_sceneMode == czm_sceneMode2D) + { + cameraDist = max(czm_frustumPlanes.x - czm_frustumPlanes.y, czm_frustumPlanes.w - czm_frustumPlanes.z) * 0.5; + } + else if (czm_sceneMode == czm_sceneModeColumbusView) + { + cameraDist = -czm_view[3].z; + } + else + { + cameraDist = length(czm_view[3]); + } + float fadeOutDist = u_lightingFadeDistance.x; + float fadeInDist = u_lightingFadeDistance.y; + if (czm_sceneMode != czm_sceneMode3D) { + vec3 radii = czm_ellipsoidRadii; + float maxRadii = max(radii.x, max(radii.y, radii.z)); + fadeOutDist -= maxRadii; + fadeInDist -= maxRadii; + } + float fade = clamp((cameraDist - fadeOutDist) / (fadeInDist - fadeOutDist), 0.0, 1.0); +#else + float fade = 0.0; +#endif + +#if defined(HAS_WATER_MASK) && (defined(SHOW_REFLECTIVE_OCEAN) || defined(APPLY_MATERIAL)) + vec2 waterMaskTranslation = u_waterMaskTranslationAndScale.xy; + vec2 waterMaskScale = u_waterMaskTranslationAndScale.zw; + vec2 waterMaskTextureCoordinates = v_textureCoordinates.xy * waterMaskScale + waterMaskTranslation; + waterMaskTextureCoordinates.y = 1.0 - waterMaskTextureCoordinates.y; + + float mask = texture(u_waterMask, waterMaskTextureCoordinates).r; + + #ifdef SHOW_REFLECTIVE_OCEAN + if (mask > 0.0) + { + mat3 enuToEye = czm_eastNorthUpToEyeCoordinates(v_positionMC, normalEC); + + vec2 ellipsoidTextureCoordinates = czm_ellipsoidTextureCoordinates(normalMC); + vec2 ellipsoidFlippedTextureCoordinates = czm_ellipsoidTextureCoordinates(normalMC.zyx); + + vec2 textureCoordinates = mix(ellipsoidTextureCoordinates, ellipsoidFlippedTextureCoordinates, czm_morphTime * smoothstep(0.9, 0.95, normalMC.z)); + + color = computeWaterColor(v_positionEC, textureCoordinates, enuToEye, color, mask, fade); + } + #endif +#endif + +#ifdef APPLY_MATERIAL + czm_materialInput materialInput; + materialInput.st = v_textureCoordinates.st; + materialInput.normalEC = normalize(v_normalEC); + materialInput.positionToEyeEC = -v_positionEC; + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, normalize(v_normalEC)); + materialInput.slope = v_slope; + materialInput.height = v_height; + materialInput.aspect = v_aspect; + #ifdef HAS_WATER_MASK + materialInput.waterMask = mask; + #endif + + czm_material material = czm_getMaterial(materialInput); + vec4 materialColor = vec4(material.diffuse, material.alpha); + color = alphaBlend(materialColor, color); +#endif + +#ifdef ENABLE_VERTEX_LIGHTING + float diffuseIntensity = clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalize(v_normalEC)) * u_lambertDiffuseMultiplier + u_vertexShadowDarkness, 0.0, 1.0); + vec4 finalColor = vec4(color.rgb * czm_lightColor * diffuseIntensity, color.a); +#elif defined(ENABLE_DAYNIGHT_SHADING) + float diffuseIntensity = clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * 5.0 + 0.3, 0.0, 1.0); + diffuseIntensity = mix(1.0, diffuseIntensity, fade); + vec4 finalColor = vec4(color.rgb * czm_lightColor * diffuseIntensity, color.a); +#else + vec4 finalColor = color; +#endif + +#ifdef ENABLE_CLIPPING_PLANES + vec4 clippingPlanesEdgeColor = vec4(1.0); + clippingPlanesEdgeColor.rgb = u_clippingPlanesEdgeStyle.rgb; + float clippingPlanesEdgeWidth = u_clippingPlanesEdgeStyle.a; + + if (clipDistance < clippingPlanesEdgeWidth) + { + finalColor = clippingPlanesEdgeColor; + } +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS + vec2 clippingPosition = v_clippingPosition; + int regionIndex = v_regionIndex; + clipPolygons(u_clippingDistance, CLIPPING_POLYGON_REGIONS_LENGTH, clippingPosition, regionIndex); +#endif + +#ifdef HIGHLIGHT_FILL_TILE + finalColor = vec4(mix(finalColor.rgb, u_fillHighlightColor.rgb, u_fillHighlightColor.a), finalColor.a); +#endif + +#if defined(DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN) + vec3 atmosphereLightDirection = czm_sunDirectionWC; +#else + vec3 atmosphereLightDirection = czm_lightDirectionWC; +#endif + +#if defined(GROUND_ATMOSPHERE) || defined(FOG) + if (!czm_backFacing()) + { + bool dynamicLighting = false; + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_DAYNIGHT_SHADING) || defined(ENABLE_VERTEX_LIGHTING)) + dynamicLighting = true; + #endif + + vec3 rayleighColor; + vec3 mieColor; + float opacity; + + vec3 positionWC; + vec3 lightDirection; + + // When the camera is far away (camera distance > nightFadeOutDistance), the scattering is computed in the fragment shader. + // Otherwise, the scattering is computed in the vertex shader. + #ifdef PER_FRAGMENT_GROUND_ATMOSPHERE + positionWC = computeEllipsoidPosition(); + lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(positionWC)); + computeAtmosphereScattering( + positionWC, + lightDirection, + rayleighColor, + mieColor, + opacity + ); + #else + positionWC = v_positionMC; + lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(positionWC)); + rayleighColor = v_atmosphereRayleighColor; + mieColor = v_atmosphereMieColor; + opacity = v_atmosphereOpacity; + #endif + + #ifdef COLOR_CORRECT + const bool ignoreBlackPixels = true; + rayleighColor = czm_applyHSBShift(rayleighColor, u_hsbShift, ignoreBlackPixels); + mieColor = czm_applyHSBShift(mieColor, u_hsbShift, ignoreBlackPixels); + #endif + + vec4 groundAtmosphereColor = computeAtmosphereColor(positionWC, lightDirection, rayleighColor, mieColor, opacity); + + // Fog is applied to tiles selected for fog, close to the Earth. + #ifdef FOG + vec3 fogColor = groundAtmosphereColor.rgb; + + // If there is lighting, apply that to the fog. + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING)) + float darken = clamp(dot(normalize(czm_viewerPositionWC), atmosphereLightDirection), u_minimumBrightness, 1.0); + fogColor *= darken; + #endif + + #ifndef HDR + fogColor.rgb = czm_pbrNeutralTonemapping(fogColor.rgb); + fogColor.rgb = czm_inverseGamma(fogColor.rgb); + #endif + + finalColor = vec4(czm_fog(v_distance, finalColor.rgb, fogColor.rgb, czm_fogVisualDensityScalar), finalColor.a); + + #else + // Apply ground atmosphere. This happens when the camera is far away from the earth. + + // The transmittance is based on optical depth i.e. the length of segment of the ray inside the atmosphere. + // This value is larger near the "circumference", as it is further away from the camera. We use it to + // brighten up that area of the ground atmosphere. + const float transmittanceModifier = 0.5; + float transmittance = transmittanceModifier + clamp(1.0 - groundAtmosphereColor.a, 0.0, 1.0); + + vec3 finalAtmosphereColor = finalColor.rgb + groundAtmosphereColor.rgb * transmittance; + + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING)) + float fadeInDist = u_nightFadeDistance.x; + float fadeOutDist = u_nightFadeDistance.y; + + float sunlitAtmosphereIntensity = clamp((cameraDist - fadeOutDist) / (fadeInDist - fadeOutDist), 0.05, 1.0); + float darken = clamp(dot(normalize(positionWC), atmosphereLightDirection), 0.0, 1.0); + vec3 darkenendGroundAtmosphereColor = mix(groundAtmosphereColor.rgb, finalAtmosphereColor.rgb, darken); + + finalAtmosphereColor = mix(darkenendGroundAtmosphereColor, finalAtmosphereColor, sunlitAtmosphereIntensity); + #endif + + #ifndef HDR + finalAtmosphereColor.rgb = vec3(1.0) - exp(-fExposure * finalAtmosphereColor.rgb); + #else + finalAtmosphereColor.rgb = czm_saturation(finalAtmosphereColor.rgb, 1.6); + #endif + + finalColor.rgb = mix(finalColor.rgb, finalAtmosphereColor.rgb, fade); + #endif + } +#endif + +#ifdef UNDERGROUND_COLOR + if (czm_backFacing()) + { + float distanceFromEllipsoid = max(czm_eyeHeight, 0.0); + float distance = max(v_distance - distanceFromEllipsoid, 0.0); + float blendAmount = interpolateByDistance(u_undergroundColorAlphaByDistance, distance); + vec4 undergroundColor = vec4(u_undergroundColor.rgb, u_undergroundColor.a * blendAmount); + finalColor = alphaBlend(undergroundColor, finalColor); + } +#endif + +#ifdef TRANSLUCENT + if (inTranslucencyRectangle()) + { + vec4 alphaByDistance = gl_FrontFacing ? u_frontFaceAlphaByDistance : u_backFaceAlphaByDistance; + finalColor.a *= interpolateByDistance(alphaByDistance, v_distance); + } +#endif + + out_FragColor = finalColor; +} + + +#ifdef SHOW_REFLECTIVE_OCEAN + +float waveFade(float edge0, float edge1, float x) +{ + float y = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); + return pow(1.0 - y, 5.0); +} + +float linearFade(float edge0, float edge1, float x) +{ + return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); +} + +// Based on water rendering by Jonas Wagner: +// http://29a.ch/2012/7/19/webgl-terrain-rendering-water-fog + +// low altitude wave settings +const float oceanFrequencyLowAltitude = 825000.0; +const float oceanAnimationSpeedLowAltitude = 0.004; +const float oceanOneOverAmplitudeLowAltitude = 1.0 / 2.0; +const float oceanSpecularIntensity = 0.5; + +// high altitude wave settings +const float oceanFrequencyHighAltitude = 125000.0; +const float oceanAnimationSpeedHighAltitude = 0.008; +const float oceanOneOverAmplitudeHighAltitude = 1.0 / 2.0; + +vec4 computeWaterColor(vec3 positionEyeCoordinates, vec2 textureCoordinates, mat3 enuToEye, vec4 imageryColor, float maskValue, float fade) +{ + vec3 positionToEyeEC = -positionEyeCoordinates; + float positionToEyeECLength = length(positionToEyeEC); + + // The double normalize below works around a bug in Firefox on Android devices. + vec3 normalizedPositionToEyeEC = normalize(normalize(positionToEyeEC)); + + // Fade out the waves as the camera moves far from the surface. + float waveIntensity = waveFade(70000.0, 1000000.0, positionToEyeECLength); + +#ifdef SHOW_OCEAN_WAVES + // high altitude waves + float time = czm_frameNumber * oceanAnimationSpeedHighAltitude; + vec4 noise = czm_getWaterNoise(u_oceanNormalMap, textureCoordinates * oceanFrequencyHighAltitude, time, 0.0); + vec3 normalTangentSpaceHighAltitude = vec3(noise.xy, noise.z * oceanOneOverAmplitudeHighAltitude); + + // low altitude waves + time = czm_frameNumber * oceanAnimationSpeedLowAltitude; + noise = czm_getWaterNoise(u_oceanNormalMap, textureCoordinates * oceanFrequencyLowAltitude, time, 0.0); + vec3 normalTangentSpaceLowAltitude = vec3(noise.xy, noise.z * oceanOneOverAmplitudeLowAltitude); + + // blend the 2 wave layers based on distance to surface + float highAltitudeFade = linearFade(0.0, 60000.0, positionToEyeECLength); + float lowAltitudeFade = 1.0 - linearFade(20000.0, 60000.0, positionToEyeECLength); + vec3 normalTangentSpace = + (highAltitudeFade * normalTangentSpaceHighAltitude) + + (lowAltitudeFade * normalTangentSpaceLowAltitude); + normalTangentSpace = normalize(normalTangentSpace); + + // fade out the normal perturbation as we move farther from the water surface + normalTangentSpace.xy *= waveIntensity; + normalTangentSpace = normalize(normalTangentSpace); +#else + vec3 normalTangentSpace = vec3(0.0, 0.0, 1.0); +#endif + + vec3 normalEC = enuToEye * normalTangentSpace; + + const vec3 waveHighlightColor = vec3(0.3, 0.45, 0.6); + + // Use diffuse light to highlight the waves + float diffuseIntensity = czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * maskValue; + vec3 diffuseHighlight = waveHighlightColor * diffuseIntensity * (1.0 - fade); + +#ifdef SHOW_OCEAN_WAVES + // Where diffuse light is low or non-existent, use wave highlights based solely on + // the wave bumpiness and no particular light direction. + float tsPerturbationRatio = normalTangentSpace.z; + vec3 nonDiffuseHighlight = mix(waveHighlightColor * 5.0 * (1.0 - tsPerturbationRatio), vec3(0.0), diffuseIntensity); +#else + vec3 nonDiffuseHighlight = vec3(0.0); +#endif + + // Add specular highlights in 3D, and in all modes when zoomed in. + float specularIntensity = czm_getSpecular(czm_lightDirectionEC, normalizedPositionToEyeEC, normalEC, 10.0); + float surfaceReflectance = mix(0.0, mix(u_zoomedOutOceanSpecularIntensity, oceanSpecularIntensity, waveIntensity), maskValue); + float specular = specularIntensity * surfaceReflectance; + +#ifdef HDR + specular *= 1.4; + + float e = 0.2; + float d = 3.3; + float c = 1.7; + + vec3 color = imageryColor.rgb + (c * (vec3(e) + imageryColor.rgb * d) * (diffuseHighlight + nonDiffuseHighlight + specular)); +#else + vec3 color = imageryColor.rgb + diffuseHighlight + nonDiffuseHighlight + specular; +#endif + + return vec4(color, imageryColor.a); +} + +#endif // #ifdef SHOW_REFLECTIVE_OCEAN +`;var Q2=`#ifdef QUANTIZATION_BITS12 +in vec4 compressed0; +in float compressed1; +#else +in vec4 position3DAndHeight; +in vec4 textureCoordAndEncodedNormals; +#endif + +#ifdef GEODETIC_SURFACE_NORMALS +in vec3 geodeticSurfaceNormal; +#endif + +#ifdef EXAGGERATION +uniform vec2 u_verticalExaggerationAndRelativeHeight; +#endif + +uniform vec3 u_center3D; +uniform mat4 u_modifiedModelView; +uniform mat4 u_modifiedModelViewProjection; +uniform vec4 u_tileRectangle; + +// Uniforms for 2D Mercator projection +uniform vec2 u_southAndNorthLatitude; +uniform vec2 u_southMercatorYAndOneOverHeight; + +out vec3 v_positionMC; +out vec3 v_positionEC; + +out vec3 v_textureCoordinates; +out vec3 v_normalMC; +out vec3 v_normalEC; + +#ifdef APPLY_MATERIAL +out float v_slope; +out float v_aspect; +out float v_height; +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) +out float v_distance; +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) +out vec3 v_atmosphereRayleighColor; +out vec3 v_atmosphereMieColor; +out float v_atmosphereOpacity; +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS +uniform highp sampler2D u_clippingExtents; +out vec2 v_clippingPosition; +flat out int v_regionIndex; +#endif + +// These functions are generated at runtime. +vec4 getPosition(vec3 position, float height, vec2 textureCoordinates); +float get2DYPositionFraction(vec2 textureCoordinates); + +vec4 getPosition3DMode(vec3 position, float height, vec2 textureCoordinates) +{ + return u_modifiedModelViewProjection * vec4(position, 1.0); +} + +float get2DMercatorYPositionFraction(vec2 textureCoordinates) +{ + // The width of a tile at level 11, in radians and assuming a single root tile, is + // 2.0 * czm_pi / pow(2.0, 11.0) + // We want to just linearly interpolate the 2D position from the texture coordinates + // when we're at this level or higher. The constant below is the expression + // above evaluated and then rounded up at the 4th significant digit. + const float maxTileWidth = 0.003068; + float positionFraction = textureCoordinates.y; + float southLatitude = u_southAndNorthLatitude.x; + float northLatitude = u_southAndNorthLatitude.y; + if (northLatitude - southLatitude > maxTileWidth) + { + float southMercatorY = u_southMercatorYAndOneOverHeight.x; + float oneOverMercatorHeight = u_southMercatorYAndOneOverHeight.y; + + float currentLatitude = mix(southLatitude, northLatitude, textureCoordinates.y); + currentLatitude = clamp(currentLatitude, -czm_webMercatorMaxLatitude, czm_webMercatorMaxLatitude); + positionFraction = czm_latitudeToWebMercatorFraction(currentLatitude, southMercatorY, oneOverMercatorHeight); + } + return positionFraction; +} + +float get2DGeographicYPositionFraction(vec2 textureCoordinates) +{ + return textureCoordinates.y; +} + +vec4 getPositionPlanarEarth(vec3 position, float height, vec2 textureCoordinates) +{ + float yPositionFraction = get2DYPositionFraction(textureCoordinates); + vec4 rtcPosition2D = vec4(height, mix(u_tileRectangle.st, u_tileRectangle.pq, vec2(textureCoordinates.x, yPositionFraction)), 1.0); + return u_modifiedModelViewProjection * rtcPosition2D; +} + +vec4 getPosition2DMode(vec3 position, float height, vec2 textureCoordinates) +{ + return getPositionPlanarEarth(position, 0.0, textureCoordinates); +} + +vec4 getPositionColumbusViewMode(vec3 position, float height, vec2 textureCoordinates) +{ + return getPositionPlanarEarth(position, height, textureCoordinates); +} + +vec4 getPositionMorphingMode(vec3 position, float height, vec2 textureCoordinates) +{ + // We do not do RTC while morphing, so there is potential for jitter. + // This is unlikely to be noticeable, though. + vec3 position3DWC = position + u_center3D; + float yPositionFraction = get2DYPositionFraction(textureCoordinates); + vec4 position2DWC = vec4(height, mix(u_tileRectangle.st, u_tileRectangle.pq, vec2(textureCoordinates.x, yPositionFraction)), 1.0); + vec4 morphPosition = czm_columbusViewMorph(position2DWC, vec4(position3DWC, 1.0), czm_morphTime); + vec4 morphPositionEC = czm_modelView * morphPosition; + return czm_projection * morphPositionEC; +} + +#ifdef QUANTIZATION_BITS12 +uniform vec2 u_minMaxHeight; +uniform mat4 u_scaleAndBias; +#endif + +void main() +{ +#ifdef QUANTIZATION_BITS12 + vec2 xy = czm_decompressTextureCoordinates(compressed0.x); + vec2 zh = czm_decompressTextureCoordinates(compressed0.y); + vec3 position = vec3(xy, zh.x); + float height = zh.y; + vec2 textureCoordinates = czm_decompressTextureCoordinates(compressed0.z); + + height = height * (u_minMaxHeight.y - u_minMaxHeight.x) + u_minMaxHeight.x; + position = (u_scaleAndBias * vec4(position, 1.0)).xyz; + +#if (defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL)) && defined(INCLUDE_WEB_MERCATOR_Y) || defined(APPLY_MATERIAL) + float webMercatorT = czm_decompressTextureCoordinates(compressed0.w).x; + float encodedNormal = compressed1; +#elif defined(INCLUDE_WEB_MERCATOR_Y) + float webMercatorT = czm_decompressTextureCoordinates(compressed0.w).x; + float encodedNormal = 0.0; +#elif defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) + float webMercatorT = textureCoordinates.y; + float encodedNormal = compressed0.w; +#else + float webMercatorT = textureCoordinates.y; + float encodedNormal = 0.0; +#endif + +#else + // A single float per element + vec3 position = position3DAndHeight.xyz; + float height = position3DAndHeight.w; + vec2 textureCoordinates = textureCoordAndEncodedNormals.xy; + +#if (defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL)) && defined(INCLUDE_WEB_MERCATOR_Y) + float webMercatorT = textureCoordAndEncodedNormals.z; + float encodedNormal = textureCoordAndEncodedNormals.w; +#elif defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL) + float webMercatorT = textureCoordinates.y; + float encodedNormal = textureCoordAndEncodedNormals.z; +#elif defined(INCLUDE_WEB_MERCATOR_Y) + float webMercatorT = textureCoordAndEncodedNormals.z; + float encodedNormal = 0.0; +#else + float webMercatorT = textureCoordinates.y; + float encodedNormal = 0.0; +#endif + +#endif + + vec3 position3DWC = position + u_center3D; + +#ifdef GEODETIC_SURFACE_NORMALS + vec3 ellipsoidNormal = geodeticSurfaceNormal; +#else + vec3 ellipsoidNormal = normalize(position3DWC); +#endif + +#if defined(EXAGGERATION) && defined(GEODETIC_SURFACE_NORMALS) + float exaggeration = u_verticalExaggerationAndRelativeHeight.x; + float relativeHeight = u_verticalExaggerationAndRelativeHeight.y; + float newHeight = (height - relativeHeight) * exaggeration + relativeHeight; + + // stop from going through center of earth + float minRadius = min(min(czm_ellipsoidRadii.x, czm_ellipsoidRadii.y), czm_ellipsoidRadii.z); + newHeight = max(newHeight, -minRadius); + + vec3 offset = ellipsoidNormal * (newHeight - height); + position += offset; + position3DWC += offset; + height = newHeight; +#endif + + gl_Position = getPosition(position, height, textureCoordinates); + + v_positionEC = (u_modifiedModelView * vec4(position, 1.0)).xyz; + v_positionMC = position3DWC; // position in model coordinates + + v_textureCoordinates = vec3(textureCoordinates, webMercatorT); + +#if defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL) + vec3 normalMC = czm_octDecode(encodedNormal); + +#if defined(EXAGGERATION) && defined(GEODETIC_SURFACE_NORMALS) + vec3 projection = dot(normalMC, ellipsoidNormal) * ellipsoidNormal; + vec3 rejection = normalMC - projection; + normalMC = normalize(projection + rejection * exaggeration); +#endif + + v_normalMC = normalMC; + v_normalEC = czm_normal3D * v_normalMC; +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS + vec2 sphericalLatLong = czm_approximateSphericalCoordinates(position3DWC); + sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi); + + vec2 minDistance = vec2(czm_infinity); + v_clippingPosition = vec2(czm_infinity); + v_regionIndex = -1; + + for (int regionIndex = 0; regionIndex < CLIPPING_POLYGON_REGIONS_LENGTH; regionIndex++) { + vec4 extents = unpackClippingExtents(u_clippingExtents, regionIndex); + vec2 rectUv = (sphericalLatLong.yx - extents.yx) * extents.wz; + + vec2 clamped = clamp(rectUv, vec2(0.0), vec2(1.0)); + vec2 distance = abs(rectUv - clamped) * extents.wz; + + float threshold = 0.01; + if (minDistance.x > distance.x || minDistance.y > distance.y) { + minDistance = distance; + v_clippingPosition = rectUv; + if (rectUv.x > threshold && rectUv.y > threshold && rectUv.x < 1.0 - threshold && rectUv.y < 1.0 - threshold) { + v_regionIndex = regionIndex; + } + } + } +#endif + +#if defined(FOG) || (defined(GROUND_ATMOSPHERE) && !defined(PER_FRAGMENT_GROUND_ATMOSPHERE)) + + bool dynamicLighting = false; + + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_DAYNIGHT_SHADING) || defined(ENABLE_VERTEX_LIGHTING)) + dynamicLighting = true; + #endif + +#if defined(DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN) + vec3 atmosphereLightDirection = czm_sunDirectionWC; +#else + vec3 atmosphereLightDirection = czm_lightDirectionWC; +#endif + + vec3 lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(position3DWC)); + + computeAtmosphereScattering( + position3DWC, + lightDirection, + v_atmosphereRayleighColor, + v_atmosphereMieColor, + v_atmosphereOpacity + ); +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) + v_distance = length((czm_modelView3D * vec4(position3DWC, 1.0)).xyz); +#endif + +#ifdef APPLY_MATERIAL + float northPoleZ = czm_ellipsoidRadii.z; + vec3 northPolePositionMC = vec3(0.0, 0.0, northPoleZ); + vec3 vectorEastMC = normalize(cross(northPolePositionMC - v_positionMC, ellipsoidNormal)); + float dotProd = abs(dot(ellipsoidNormal, v_normalMC)); + v_slope = acos(dotProd); + vec3 normalRejected = ellipsoidNormal * dotProd; + vec3 normalProjected = v_normalMC - normalRejected; + vec3 aspectVector = normalize(normalProjected); + v_aspect = acos(dot(aspectVector, vectorEastMC)); + float determ = dot(cross(vectorEastMC, aspectVector), ellipsoidNormal); + v_aspect = czm_branchFreeTernary(determ < 0.0, 2.0 * czm_pi - v_aspect, v_aspect); + v_height = height; +#endif +} +`;var fw=`void computeAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity) { + + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection); + + float atmosphereInnerRadius = length(positionWC); + + computeScattering( + primaryRay, + length(cameraToPositionWC), + lightDirection, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); +} +`;var dw=`float interpolateByDistance(vec4 nearFarScalar, float distance) +{ + float startDistance = nearFarScalar.x; + float startValue = nearFarScalar.y; + float endDistance = nearFarScalar.z; + float endValue = nearFarScalar.w; + float t = clamp((distance - startDistance) / (endDistance - startDistance), 0.0, 1.0); + return mix(startValue, endValue, t); +} + +void computeAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity, out float underTranslucentGlobe) +{ + float ellipsoidRadiiDifference = czm_ellipsoidRadii.x - czm_ellipsoidRadii.z; + + // Adjustment to the atmosphere radius applied based on the camera height. + float distanceAdjustMin = czm_ellipsoidRadii.x / 4.0; + float distanceAdjustMax = czm_ellipsoidRadii.x; + float distanceAdjustModifier = ellipsoidRadiiDifference / 2.0; + float distanceAdjust = distanceAdjustModifier * clamp((czm_eyeHeight - distanceAdjustMin) / (distanceAdjustMax - distanceAdjustMin), 0.0, 1.0); + + // Since atmosphere scattering assumes the atmosphere is a spherical shell, we compute an inner radius of the atmosphere best fit + // for the position on the ellipsoid. + float radiusAdjust = (ellipsoidRadiiDifference / 4.0) + distanceAdjust; + float atmosphereInnerRadius = (length(czm_viewerPositionWC) - czm_eyeHeight) - radiusAdjust; + + // Setup the primary ray: from the camera position to the vertex position. + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection); + + underTranslucentGlobe = 0.0; + + // Brighten the sky atmosphere under the Earth's atmosphere when translucency is enabled. + #if defined(GLOBE_TRANSLUCENT) + + // Check for intersection with the inner radius of the atmopshere. + czm_raySegment primaryRayEarthIntersect = czm_raySphereIntersectionInterval(primaryRay, vec3(0.0), atmosphereInnerRadius + radiusAdjust); + if (primaryRayEarthIntersect.start > 0.0 && primaryRayEarthIntersect.stop > 0.0) { + + // Compute position on globe. + vec3 direction = normalize(positionWC); + czm_ray ellipsoidRay = czm_ray(positionWC, -direction); + czm_raySegment ellipsoidIntersection = czm_rayEllipsoidIntersectionInterval(ellipsoidRay, vec3(0.0), czm_ellipsoidInverseRadii); + vec3 onEarth = positionWC - (direction * ellipsoidIntersection.start); + + // Control the color using the camera angle. + float angle = dot(normalize(czm_viewerPositionWC), normalize(onEarth)); + + // Control the opacity using the distance from Earth. + opacity = interpolateByDistance(vec4(0.0, 1.0, czm_ellipsoidRadii.x, 0.0), length(czm_viewerPositionWC - onEarth)); + vec3 horizonColor = vec3(0.1, 0.2, 0.3); + vec3 nearColor = vec3(0.0); + + rayleighColor = mix(nearColor, horizonColor, exp(-angle) * opacity); + + // Set the traslucent flag to avoid alpha adjustment in computeFinalColor funciton. + underTranslucentGlobe = 1.0; + return; + } + #endif + + computeScattering( + primaryRay, + length(cameraToPositionWC), + lightDirection, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); + + // Alter the opacity based on how close the viewer is to the ground. + // (0.0 = At edge of atmosphere, 1.0 = On ground) + float cameraHeight = czm_eyeHeight + atmosphereInnerRadius; + float atmosphereOuterRadius = atmosphereInnerRadius + ATMOSPHERE_THICKNESS; + opacity = clamp((atmosphereOuterRadius - cameraHeight) / (atmosphereOuterRadius - atmosphereInnerRadius), 0.0, 1.0); + + // Alter alpha based on time of day (0.0 = night , 1.0 = day) + float nightAlpha = (u_radiiAndDynamicAtmosphereColor.z != 0.0) ? clamp(dot(normalize(positionWC), lightDirection), 0.0, 1.0) : 1.0; + opacity *= pow(nightAlpha, 0.5); +} +`;var k2=`in vec3 v_outerPositionWC; + +uniform vec3 u_hsbShift; + +#ifndef PER_FRAGMENT_ATMOSPHERE +in vec3 v_mieColor; +in vec3 v_rayleighColor; +in float v_opacity; +in float v_translucent; +#endif + +void main (void) +{ + float lightEnum = u_radiiAndDynamicAtmosphereColor.z; + vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(v_outerPositionWC, lightEnum); + + vec3 mieColor; + vec3 rayleighColor; + float opacity; + float translucent; + + #ifdef PER_FRAGMENT_ATMOSPHERE + computeAtmosphereScattering( + v_outerPositionWC, + lightDirection, + rayleighColor, + mieColor, + opacity, + translucent + ); + #else + mieColor = v_mieColor; + rayleighColor = v_rayleighColor; + opacity = v_opacity; + translucent = v_translucent; + #endif + + vec4 color = computeAtmosphereColor(v_outerPositionWC, lightDirection, rayleighColor, mieColor, opacity); + + #ifndef HDR + color.rgb = czm_pbrNeutralTonemapping(color.rgb); + color.rgb = czm_inverseGamma(color.rgb); + #endif + + #ifdef COLOR_CORRECT + const bool ignoreBlackPixels = true; + color.rgb = czm_applyHSBShift(color.rgb, u_hsbShift, ignoreBlackPixels); + #endif + + // For the parts of the sky atmosphere that are not behind a translucent globe, + // we mix in the default opacity so that the sky atmosphere still appears at distance. + // This is needed because the opacity in the sky atmosphere is initially adjusted based + // on the camera height. + if (translucent == 0.0) { + color.a = mix(color.b, 1.0, color.a) * smoothstep(0.0, 1.0, czm_morphTime); + } + + out_FragColor = color; +} +`;var U2=`in vec4 position; + +out vec3 v_outerPositionWC; + +#ifndef PER_FRAGMENT_ATMOSPHERE +out vec3 v_mieColor; +out vec3 v_rayleighColor; +out float v_opacity; +out float v_translucent; +#endif + +void main(void) +{ + vec4 positionWC = czm_model * position; + float lightEnum = u_radiiAndDynamicAtmosphereColor.z; + vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(positionWC.xyz, lightEnum); + + #ifndef PER_FRAGMENT_ATMOSPHERE + computeAtmosphereScattering( + positionWC.xyz, + lightDirection, + v_rayleighColor, + v_mieColor, + v_opacity, + v_translucent + ); + #endif + + v_outerPositionWC = positionWC.xyz; + vec4 positionEC = czm_modelView * position; + gl_Position = czm_projection * positionEC; +} +`;var G2=`uniform samplerCube u_cubeMap; + +in vec3 v_texCoord; + +void main() +{ + vec4 color = czm_textureCube(u_cubeMap, normalize(v_texCoord)); + out_FragColor = vec4(czm_gammaCorrect(color).rgb, czm_morphTime); +} +`;var z2=`in vec3 position; +out vec3 v_texCoord; + +void main() +{ + vec3 p = czm_viewRotation * (czm_temeToPseudoFixed * (czm_entireFrustum.y * position)); + gl_Position = czm_projection * vec4(p, 1.0); + v_texCoord = position.xyz; +} +`;var V2=`uniform sampler2D u_texture; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 color = texture(u_texture, v_textureCoordinates); + out_FragColor = czm_gammaCorrect(color); +} +`;var H2=`uniform float u_radiusTS; + +in vec2 v_textureCoordinates; + +vec2 rotate(vec2 p, vec2 direction) +{ + return vec2(p.x * direction.x - p.y * direction.y, p.x * direction.y + p.y * direction.x); +} + +vec4 addBurst(vec2 position, vec2 direction, float lengthScalar) +{ + vec2 rotatedPosition = rotate(position, direction) * vec2(25.0, 0.75); + float radius = length(rotatedPosition) * lengthScalar; + float burst = 1.0 - smoothstep(0.0, 0.55, radius); + return vec4(burst); +} + +void main() +{ + float lengthScalar = 2.0 / sqrt(2.0); + vec2 position = v_textureCoordinates - vec2(0.5); + float radius = length(position) * lengthScalar; + float surface = step(radius, u_radiusTS); + vec4 color = vec4(vec2(1.0), surface + 0.2, surface); + + float glow = 1.0 - smoothstep(0.0, 0.55, radius); + color.ba += mix(vec2(0.0), vec2(1.0), glow) * 0.75; + + vec4 burst = vec4(0.0); + + // The following loop has been manually unrolled for speed, to + // avoid sin() and cos(). + // + //for (float i = 0.4; i < 3.2; i += 1.047) { + // vec2 direction = vec2(sin(i), cos(i)); + // burst += 0.4 * addBurst(position, direction, lengthScalar); + // + // direction = vec2(sin(i - 0.08), cos(i - 0.08)); + // burst += 0.3 * addBurst(position, direction, lengthScalar); + //} + + burst += 0.4 * addBurst(position, vec2(0.38942, 0.92106), lengthScalar); // angle == 0.4 + burst += 0.4 * addBurst(position, vec2(0.99235, 0.12348), lengthScalar); // angle == 0.4 + 1.047 + burst += 0.4 * addBurst(position, vec2(0.60327, -0.79754), lengthScalar); // angle == 0.4 + 1.047 * 2.0 + + burst += 0.3 * addBurst(position, vec2(0.31457, 0.94924), lengthScalar); // angle == 0.4 - 0.08 + burst += 0.3 * addBurst(position, vec2(0.97931, 0.20239), lengthScalar); // angle == 0.4 + 1.047 - 0.08 + burst += 0.3 * addBurst(position, vec2(0.66507, -0.74678), lengthScalar); // angle == 0.4 + 1.047 * 2.0 - 0.08 + + // End of manual loop unrolling. + + color += clamp(burst, vec4(0.0), vec4(1.0)) * 0.15; + + out_FragColor = clamp(color, vec4(0.0), vec4(1.0)); +} +`;var W2=`in vec2 direction; + +uniform float u_size; + +out vec2 v_textureCoordinates; + +void main() +{ + vec4 position; + if (czm_morphTime == 1.0) + { + position = vec4(czm_sunPositionWC, 1.0); + } + else + { + position = vec4(czm_sunPositionColumbusView.zxy, 1.0); + } + + vec4 positionEC = czm_view * position; + vec4 positionWC = czm_eyeToWindowCoordinates(positionEC); + + vec2 halfSize = vec2(u_size * 0.5); + halfSize *= ((direction * 2.0) - 1.0); + + gl_Position = czm_viewportOrthographic * vec4(positionWC.xy + halfSize, -positionWC.z, 1.0); + + v_textureCoordinates = direction; +} +`;var j2=` +in vec2 v_textureCoordinates; + +void main() +{ + czm_materialInput materialInput; + + materialInput.s = v_textureCoordinates.s; + materialInput.st = v_textureCoordinates; + materialInput.str = vec3(v_textureCoordinates, 0.0); + materialInput.normalEC = vec3(0.0, 0.0, -1.0); + + czm_material material = czm_getMaterial(materialInput); + + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +} +`;async function tmt(e,t,n,i){return l(i)||(i=!1),omt(e,t,n,i)}function nmt(e,t,n){let i=e[0],o=i.terrainProvider.requestTileGeometry(i.x,i.y,i.level);if(!o)return!1;let r;return n?r=o.then(D0e(i)):r=o.then(D0e(i)).catch(rmt(i)),e.shift(),t.push(r),!0}function imt(e){return new Promise(function(t){setTimeout(t,e)})}function eJ(e,t,n){return e.length?nmt(e,t,n)?eJ(e,t,n):imt(100).then(()=>eJ(e,t,n)):Promise.resolve()}function omt(e,t,n,i){let o=e.tilingScheme,r,s=[],a={};for(r=0;r<n.length;++r){let u=o.positionToTileXY(n[r],t);if(!l(u))continue;let f=u.toString();if(!a.hasOwnProperty(f)){let h={x:u.x,y:u.y,level:t,tilingScheme:o,terrainProvider:e,positions:[]};a[f]=h,s.push(h)}a[f].positions.push(n[r])}let c=[];return eJ(s,c,i).then(function(){return Promise.all(c).then(function(){return n})})}function B0e(e,t,n){let i=t.interpolateHeight(n,e.longitude,e.latitude);return i===void 0?!1:(e.height=i,!0)}function D0e(e){let t=e.positions,n=e.tilingScheme.tileXYToRectangle(e.x,e.y,e.level);return function(i){let o=!1;for(let r=0;r<t.length;++r){let s=t[r];if(!B0e(s,i,n)){o=!0;break}}return o?i.createMesh({tilingScheme:e.tilingScheme,x:e.x,y:e.y,level:e.level,throttle:!1}).then(function(){for(let r=0;r<t.length;++r){let s=t[r];B0e(s,i,n)}}):Promise.resolve()}}function rmt(e){let t=e.positions;return function(){for(let n=0;n<t.length;++n){let i=t[n];i.height=void 0}}}var Y2=tmt;var tJ=new U;async function v0e(e,t,n){l(n)||(n=!1);let i=[],o=[],r=e.availability,s=[];for(let c=0;c<t.length;++c){let u=t[c],f=r.computeMaximumLevelAtPosition(u);if(o[c]=f,f===0){e.tilingScheme.positionToTileXY(u,1,tJ);let A=e.loadTileDataAvailability(tJ.x,tJ.y,1);l(A)&&s.push(A)}let h=i[f];l(h)||(i[f]=h=[]),h.push(u)}await Promise.all(s),await Promise.all(i.map(function(c,u){if(l(c))return Y2(e,u,c,n)}));let a=[];for(let c=0;c<t.length;++c){let u=t[c];r.computeMaximumLevelAtPosition(u)!==o[c]&&a.push(u)}return a.length>0&&await v0e(e,a,n),t}var PI=v0e;async function nJ(e,t){let n=t.terrainProvider,i=t.mapProjection,o=i.ellipsoid,r,s=t.camera.getRectangleCameraCoordinates(e);if(t.mode===ie.SCENE3D?r=o.cartesianToCartographic(s):r=i.unproject(s),!l(n))return r;let a=n.availability;if(!l(a)||t.mode===ie.SCENE2D)return r;let c=[ae.center(e),ae.southeast(e),ae.southwest(e),ae.northeast(e),ae.northwest(e)],u=await nJ._sampleTerrainMostDetailed(n,c),f=!1,h=u.reduce(function(g,m){return l(m.height)?(f=!0,Math.max(m.height,g)):g},-Number.MAX_VALUE),A=r;return f&&(A.height+=h),A}nJ._sampleTerrainMostDetailed=PI;var RI=nJ;var smt={NONE:0,LERC:1},Qd=Object.freeze(smt);var amt={NONE:0,BITS12:1},ba=Object.freeze(amt);var MI=new d,cmt=new d,kd=new U,q4=new N,lmt=new N,umt=Math.pow(2,12);function Jc(e,t,n,i,o,r,s,a,c,u){let f=ba.NONE,h,A;if(l(t)&&l(n)&&l(i)&&l(o)){let g=t.minimum,m=t.maximum,_=d.subtract(m,g,cmt),y=i-n;Math.max(d.maximumComponent(_),y)<umt-1?f=ba.BITS12:f=ba.NONE,h=N.inverseTransformation(o,new N);let E=d.negate(g,MI);N.multiply(N.fromTranslation(E,q4),h,h);let I=MI;I.x=1/_.x,I.y=1/_.y,I.z=1/_.z,N.multiply(N.fromScale(I,q4),h,h),A=N.clone(o),N.setTranslation(A,d.ZERO,A),o=N.clone(o,new N);let b=N.fromTranslation(g,q4),S=N.fromScale(_,lmt),B=N.multiply(b,S,q4);N.multiply(o,B,o),N.multiply(A,B,A)}this.quantization=f,this.minimumHeight=n,this.maximumHeight=i,this.center=d.clone(e),this.toScaledENU=h,this.fromScaledENU=o,this.matrix=A,this.hasVertexNormals=r,this.hasWebMercatorT=s??!1,this.hasGeodeticSurfaceNormals=a??!1,this.exaggeration=c??1,this.exaggerationRelativeHeight=u??0,this.stride=0,this._offsetGeodeticSurfaceNormal=0,this._offsetVertexNormal=0,this._calculateStrideAndOffsets()}Jc.prototype.encode=function(e,t,n,i,o,r,s,a){let c=i.x,u=i.y;if(this.quantization===ba.BITS12){n=N.multiplyByPoint(this.toScaledENU,n,MI),n.x=D.clamp(n.x,0,1),n.y=D.clamp(n.y,0,1),n.z=D.clamp(n.z,0,1);let f=this.maximumHeight-this.minimumHeight,h=D.clamp((o-this.minimumHeight)/f,0,1);U.fromElements(n.x,n.y,kd);let A=On.compressTextureCoordinates(kd);U.fromElements(n.z,h,kd);let g=On.compressTextureCoordinates(kd);U.fromElements(c,u,kd);let m=On.compressTextureCoordinates(kd);if(e[t++]=A,e[t++]=g,e[t++]=m,this.hasWebMercatorT){U.fromElements(s,0,kd);let _=On.compressTextureCoordinates(kd);e[t++]=_}}else d.subtract(n,this.center,MI),e[t++]=MI.x,e[t++]=MI.y,e[t++]=MI.z,e[t++]=o,e[t++]=c,e[t++]=u,this.hasWebMercatorT&&(e[t++]=s);return this.hasVertexNormals&&(e[t++]=On.octPackFloat(r)),this.hasGeodeticSurfaceNormals&&(e[t++]=a.x,e[t++]=a.y,e[t++]=a.z),t};var fmt=new d,P0e=new d;Jc.prototype.addGeodeticSurfaceNormals=function(e,t,n){if(this.hasGeodeticSurfaceNormals)return;let i=this.stride,o=e.length/i;this.hasGeodeticSurfaceNormals=!0,this._calculateStrideAndOffsets();let r=this.stride;for(let s=0;s<o;s++){for(let f=0;f<i;f++){let h=s*i+f,A=s*r+f;t[A]=e[h]}let a=this.decodePosition(t,s,fmt),c=n.geodeticSurfaceNormal(a,P0e),u=s*r+this._offsetGeodeticSurfaceNormal;t[u]=c.x,t[u+1]=c.y,t[u+2]=c.z}};Jc.prototype.removeGeodeticSurfaceNormals=function(e,t){if(!this.hasGeodeticSurfaceNormals)return;let n=this.stride,i=e.length/n;this.hasGeodeticSurfaceNormals=!1,this._calculateStrideAndOffsets();let o=this.stride;for(let r=0;r<i;r++)for(let s=0;s<o;s++){let a=r*n+s,c=r*o+s;t[c]=e[a]}};Jc.prototype.decodePosition=function(e,t,n){if(l(n)||(n=new d),t*=this.stride,this.quantization===ba.BITS12){let i=On.decompressTextureCoordinates(e[t],kd);n.x=i.x,n.y=i.y;let o=On.decompressTextureCoordinates(e[t+1],kd);return n.z=o.x,N.multiplyByPoint(this.fromScaledENU,n,n)}return n.x=e[t],n.y=e[t+1],n.z=e[t+2],d.add(n,this.center,n)};Jc.prototype.getExaggeratedPosition=function(e,t,n){n=this.decodePosition(e,t,n);let i=this.exaggeration,o=this.exaggerationRelativeHeight;if(i!==1&&this.hasGeodeticSurfaceNormals){let s=this.decodeGeodeticSurfaceNormal(e,t,P0e),a=this.decodeHeight(e,t),c=Ur.getHeight(a,i,o)-a;n.x+=s.x*c,n.y+=s.y*c,n.z+=s.z*c}return n};Jc.prototype.decodeTextureCoordinates=function(e,t,n){return l(n)||(n=new U),t*=this.stride,this.quantization===ba.BITS12?On.decompressTextureCoordinates(e[t+2],n):U.fromElements(e[t+4],e[t+5],n)};Jc.prototype.decodeHeight=function(e,t){return t*=this.stride,this.quantization===ba.BITS12?On.decompressTextureCoordinates(e[t+1],kd).y*(this.maximumHeight-this.minimumHeight)+this.minimumHeight:e[t+3]};Jc.prototype.decodeWebMercatorT=function(e,t){return t*=this.stride,this.quantization===ba.BITS12?On.decompressTextureCoordinates(e[t+3],kd).x:e[t+6]};Jc.prototype.getOctEncodedNormal=function(e,t,n){t=t*this.stride+this._offsetVertexNormal;let i=e[t]/256,o=Math.floor(i),r=(i-o)*256;return U.fromElements(o,r,n)};Jc.prototype.decodeGeodeticSurfaceNormal=function(e,t,n){return t=t*this.stride+this._offsetGeodeticSurfaceNormal,n.x=e[t],n.y=e[t+1],n.z=e[t+2],n};Jc.prototype._calculateStrideAndOffsets=function(){let e=0;switch(this.quantization){case ba.BITS12:e+=3;break;default:e+=6}this.hasWebMercatorT&&(e+=1),this.hasVertexNormals&&(this._offsetVertexNormal=e,e+=1),this.hasGeodeticSurfaceNormals&&(this._offsetGeodeticSurfaceNormal=e,e+=3),this.stride=e};var K4={position3DAndHeight:0,textureCoordAndEncodedNormals:1,geodeticSurfaceNormal:2},X4={compressed0:0,compressed1:1,geodeticSurfaceNormal:2};Jc.prototype.getAttributes=function(e){let t=q.FLOAT,n=q.getSizeInBytes(t),i=this.stride*n,o=0,r=[];function s(a,c){r.push({index:a,vertexBuffer:e,componentDatatype:t,componentsPerAttribute:c,offsetInBytes:o,strideInBytes:i}),o+=c*n}if(this.quantization===ba.NONE){s(K4.position3DAndHeight,4);let a=2;a+=this.hasWebMercatorT?1:0,a+=this.hasVertexNormals?1:0,s(K4.textureCoordAndEncodedNormals,a),this.hasGeodeticSurfaceNormals&&s(K4.geodeticSurfaceNormal,3)}else{let a=this.hasWebMercatorT||this.hasVertexNormals,c=this.hasWebMercatorT&&this.hasVertexNormals;s(X4.compressed0,a?4:3),c&&s(X4.compressed1,1),this.hasGeodeticSurfaceNormals&&s(X4.geodeticSurfaceNormal,3)}return r};Jc.prototype.getAttributeLocations=function(){return this.quantization===ba.NONE?K4:X4};Jc.clone=function(e,t){if(l(e))return l(t)||(t=new Jc),t.quantization=e.quantization,t.minimumHeight=e.minimumHeight,t.maximumHeight=e.maximumHeight,t.center=d.clone(e.center),t.toScaledENU=N.clone(e.toScaledENU),t.fromScaledENU=N.clone(e.fromScaledENU),t.matrix=N.clone(e.matrix),t.hasVertexNormals=e.hasVertexNormals,t.hasWebMercatorT=e.hasWebMercatorT,t.hasGeodeticSurfaceNormals=e.hasGeodeticSurfaceNormals,t.exaggeration=e.exaggeration,t.exaggerationRelativeHeight=e.exaggerationRelativeHeight,t._calculateStrideAndOffsets(),t};var Zc=Jc;var BA={};BA.DEFAULT_STRUCTURE=Object.freeze({heightScale:1,heightOffset:0,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1});var iJ=new d,dmt=new N,hmt=new d,mmt=new d;BA.computeVertices=function(e){let t=Math.cos,n=Math.sin,i=Math.sqrt,o=Math.atan,r=Math.exp,s=D.PI_OVER_TWO,a=D.toRadians,c=e.heightmap,u=e.width,f=e.height,h=e.skirtHeight,A=h>0,g=e.isGeographic??!0,m=e.ellipsoid??te.default,_=1/m.maximumRadius,y=ae.clone(e.nativeRectangle),C=ae.clone(e.rectangle),E,I,b,S;l(C)?(E=C.west,I=C.south,b=C.east,S=C.north):g?(E=a(y.west),I=a(y.south),b=a(y.east),S=a(y.north)):(E=y.west*_,I=s-2*o(r(-y.south*_)),b=y.east*_,S=s-2*o(r(-y.north*_)));let B=e.relativeToCenter,v=l(B);B=v?B:d.ZERO;let P=e.includeWebMercatorT??!1,M=e.exaggeration??1,L=e.exaggerationRelativeHeight??0,x=M!==1,T=e.structure??BA.DEFAULT_STRUCTURE,w=T.heightScale??BA.DEFAULT_STRUCTURE.heightScale,R=T.heightOffset??BA.DEFAULT_STRUCTURE.heightOffset,O=T.elementsPerHeight??BA.DEFAULT_STRUCTURE.elementsPerHeight,k=T.stride??BA.DEFAULT_STRUCTURE.stride,Q=T.elementMultiplier??BA.DEFAULT_STRUCTURE.elementMultiplier,z=T.isBigEndian??BA.DEFAULT_STRUCTURE.isBigEndian,F=ae.computeWidth(y),H=ae.computeHeight(y),W=F/(u-1),Z=H/(f-1);g||(F*=_,H*=_);let Y=m.radiiSquared,$=Y.x,X=Y.y,he=Y.z,ge=65536,fe=-65536,ye=kt.eastNorthUpToFixedFrame(B,m),xe=N.inverseTransformation(ye,dmt),ve,Te;P&&(ve=zi.geodeticLatitudeToMercatorAngle(I),Te=1/(zi.geodeticLatitudeToMercatorAngle(S)-ve));let ke=hmt;ke.x=Number.POSITIVE_INFINITY,ke.y=Number.POSITIVE_INFINITY,ke.z=Number.POSITIVE_INFINITY;let Ge=mmt;Ge.x=Number.NEGATIVE_INFINITY,Ge.y=Number.NEGATIVE_INFINITY,Ge.z=Number.NEGATIVE_INFINITY;let Ke=Number.POSITIVE_INFINITY,tt=u*f,en=h>0?u*2+f*2:0,it=tt+en,nn=new Array(it),qt=new Array(it),Rt=new Array(it),Si=P?new Array(it):[],gi=x?new Array(it):[],Ft=0,St=f,oi=0,Et=u;A&&(--Ft,++St,--oi,++Et);let Lo=1e-5;for(let et=Ft;et<St;++et){let gt=et;gt<0&&(gt=0),gt>=f&&(gt=f-1);let Jt=y.north-Z*gt;g?Jt=a(Jt):Jt=s-2*o(r(-Jt*_));let bn=(Jt-I)/(S-I);bn=D.clamp(bn,0,1);let ho=et===Ft,lo=et===St-1;h>0&&(ho?Jt+=Lo*H:lo&&(Jt-=Lo*H));let sa=t(Jt),aa=n(Jt),Wn=he*aa,bi;P&&(bi=(zi.geodeticLatitudeToMercatorAngle(Jt)-ve)*Te);for(let vs=oi;vs<Et;++vs){let Xo=vs;Xo<0&&(Xo=0),Xo>=u&&(Xo=u-1);let Ra=gt*(u*k)+Xo*k,mo;if(O===1)mo=c[Ra];else{mo=0;let vo;if(z)for(vo=0;vo<O;++vo)mo=mo*Q+c[Ra+vo];else for(vo=O-1;vo>=0;--vo)mo=mo*Q+c[Ra+vo]}mo=mo*w+R,fe=Math.max(fe,mo),ge=Math.min(ge,mo);let Jo=y.west+W*Xo;g?Jo=a(Jo):Jo=Jo*_;let Uf=(Jo-E)/(b-E);Uf=D.clamp(Uf,0,1);let Ir=gt*u+Xo;if(h>0){let vo=vs===oi,un=vs===Et-1,Se=ho||lo||vo||un;if((ho||lo)&&(vo||un))continue;Se&&(mo-=h,vo?(Ir=tt+(f-gt-1),Jo-=Lo*F):lo?Ir=tt+f+(u-Xo-1):un?(Ir=tt+f+u+gt,Jo+=Lo*F):ho&&(Ir=tt+f+u+f+Xo))}let Ps=sa*t(Jo),Ws=sa*n(Jo),eh=$*Ps,ps=X*Ws,oc=1/i(eh*Ps+ps*Ws+Wn*aa),Or=eh*oc,ql=ps*oc,Kl=Wn*oc,ca=new d;ca.x=Or+Ps*mo,ca.y=ql+Ws*mo,ca.z=Kl+aa*mo,N.multiplyByPoint(xe,ca,iJ),d.minimumByComponent(iJ,ke,ke),d.maximumByComponent(iJ,Ge,Ge),Ke=Math.min(Ke,mo),nn[Ir]=ca,Rt[Ir]=new U(Uf,bn),qt[Ir]=mo,P&&(Si[Ir]=bi),x&&(gi[Ir]=m.geodeticSurfaceNormal(ca))}}let Ho=le.fromPoints(nn),Pa;l(C)&&(Pa=Fn.fromRectangle(C,ge,fe,m));let Er;v&&(Er=new Eg(m).computeHorizonCullingPointPossiblyUnderEllipsoid(B,nn,ge));let Lr=new S_(ke,Ge,B),Fe=new Zc(B,Lr,Ke,fe,ye,!1,P,x,M,L),lt=new Float32Array(it*Fe.stride),Xe=0;for(let et=0;et<it;++et)Xe=Fe.encode(lt,Xe,nn[et],Rt[et],qt[et],void 0,Si[et],gi[et]);return{vertices:lt,maximumHeight:fe,minimumHeight:ge,encoding:Fe,boundingSphere3D:Ho,orientedBoundingBox:Pa,occludeePointInScaledSpace:Er}};var hw=BA;function uC(){me.throwInstantiationError()}Object.defineProperties(uC.prototype,{credits:{get:me.throwInstantiationError},waterMask:{get:me.throwInstantiationError}});uC.prototype.interpolateHeight=me.throwInstantiationError;uC.prototype.isChildAvailable=me.throwInstantiationError;uC.prototype.createMesh=me.throwInstantiationError;uC.prototype.upsample=me.throwInstantiationError;uC.prototype.wasCreatedByUpsampling=me.throwInstantiationError;uC.maximumAsynchronousTasks=5;var Am=uC;function Amt(e,t,n,i,o,r,s,a,c,u,f,h,A,g,m,_){this.center=e,this.vertices=t,this.stride=u??6,this.indices=n,this.indexCountWithoutSkirts=i,this.vertexCountWithoutSkirts=o,this.minimumHeight=r,this.maximumHeight=s,this.boundingSphere3D=a,this.occludeePointInScaledSpace=c,this.orientedBoundingBox=f,this.encoding=h,this.westIndicesSouthToNorth=A,this.southIndicesEastToWest=g,this.eastIndicesNorthToSouth=m,this.northIndicesWestToEast=_}var Ud=Amt;function Wg(e){this._buffer=e.buffer,this._width=e.width,this._height=e.height,this._childTileMask=e.childTileMask??15,this._encoding=e.encoding??Qd.NONE;let t=hw.DEFAULT_STRUCTURE,n=e.structure;l(n)?n!==t&&(n.heightScale=n.heightScale??t.heightScale,n.heightOffset=n.heightOffset??t.heightOffset,n.elementsPerHeight=n.elementsPerHeight??t.elementsPerHeight,n.stride=n.stride??t.stride,n.elementMultiplier=n.elementMultiplier??t.elementMultiplier,n.isBigEndian=n.isBigEndian??t.isBigEndian):n=t,this._structure=n,this._createdByUpsampling=e.createdByUpsampling??!1,this._waterMask=e.waterMask,this._skirtHeight=void 0,this._bufferType=this._encoding===Qd.LERC?Float32Array:this._buffer.constructor,this._mesh=void 0}Object.defineProperties(Wg.prototype,{credits:{get:function(){}},waterMask:{get:function(){return this._waterMask}},childTileMask:{get:function(){return this._childTileMask}}});var R0e="createVerticesFromHeightmap",pmt=new di(R0e),gmt=new di(R0e,Am.maximumAsynchronousTasks);Wg.prototype.createMesh=function(e){e=e??V.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid,u=t.tileXYToNativeRectangle(n,i,o),f=t.tileXYToRectangle(n,i,o),h=c.cartographicToCartesian(ae.center(f)),A=this._structure,m=Ss.getEstimatedLevelZeroGeometricErrorForAHeightmap(c,this._width,t.getNumberOfXTilesAtLevel(0))/(1<<o);this._skirtHeight=Math.min(m*4,1e3);let y=(a?gmt:pmt).scheduleTask({heightmap:this._buffer,structure:A,includeWebMercatorT:!0,width:this._width,height:this._height,nativeRectangle:u,rectangle:f,relativeToCenter:h,ellipsoid:c,skirtHeight:this._skirtHeight,isGeographic:t.projection instanceof Ui,exaggeration:r,exaggerationRelativeHeight:s,encoding:this._encoding});if(!l(y))return;let C=this;return Promise.resolve(y).then(function(E){let I;C._skirtHeight>0?I=Ss.getRegularGridAndSkirtIndicesAndEdgeIndices(E.gridWidth,E.gridHeight):I=Ss.getRegularGridIndicesAndEdgeIndices(E.gridWidth,E.gridHeight);let b=E.gridWidth*E.gridHeight;return C._mesh=new Ud(h,new Float32Array(E.vertices),I.indices,I.indexCountWithoutSkirts,b,E.minimumHeight,E.maximumHeight,le.clone(E.boundingSphere3D),d.clone(E.occludeePointInScaledSpace),E.numberOfAttributes,Fn.clone(E.orientedBoundingBox),Zc.clone(E.encoding),I.westIndicesSouthToNorth,I.southIndicesEastToWest,I.eastIndicesNorthToSouth,I.northIndicesWestToEast),C._buffer=void 0,C._mesh})};Wg.prototype._createMeshSync=function(e){let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=t.ellipsoid,c=t.tileXYToNativeRectangle(n,i,o),u=t.tileXYToRectangle(n,i,o),f=a.cartographicToCartesian(ae.center(u)),h=this._structure,g=Ss.getEstimatedLevelZeroGeometricErrorForAHeightmap(a,this._width,t.getNumberOfXTilesAtLevel(0))/(1<<o);this._skirtHeight=Math.min(g*4,1e3);let m=hw.computeVertices({heightmap:this._buffer,structure:h,includeWebMercatorT:!0,width:this._width,height:this._height,nativeRectangle:c,rectangle:u,relativeToCenter:f,ellipsoid:a,skirtHeight:this._skirtHeight,isGeographic:t.projection instanceof Ui,exaggeration:r,exaggerationRelativeHeight:s});this._buffer=void 0;let _;this._skirtHeight>0?_=Ss.getRegularGridAndSkirtIndicesAndEdgeIndices(this._width,this._height):_=Ss.getRegularGridIndicesAndEdgeIndices(this._width,this._height);let y=m.gridWidth*m.gridHeight;return this._mesh=new Ud(f,m.vertices,_.indices,_.indexCountWithoutSkirts,y,m.minimumHeight,m.maximumHeight,m.boundingSphere3D,m.occludeePointInScaledSpace,m.encoding.stride,m.orientedBoundingBox,m.encoding,_.westIndicesSouthToNorth,_.southIndicesEastToWest,_.eastIndicesNorthToSouth,_.northIndicesWestToEast),this._mesh};Wg.prototype.interpolateHeight=function(e,t,n){let i=this._width,o=this._height,r=this._structure,s=r.stride,a=r.elementsPerHeight,c=r.elementMultiplier,u=r.isBigEndian,f=r.heightOffset,h=r.heightScale,A=l(this._mesh),g=this._encoding===Qd.LERC;if(!A&&g)return;let _;if(A){let y=this._mesh.vertices,C=this._mesh.encoding;_=M0e(y,C,f,h,e,i,o,t,n)}else _=_mt(this._buffer,a,c,s,u,e,i,o,t,n),_=_*h+f;return _};Wg.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(a))return;let c=this._width,u=this._height,f=this._structure,h=f.stride,A=new this._bufferType(c*u*h),g=a.vertices,m=a.encoding,_=e.tileXYToRectangle(t,n,i),y=e.tileXYToRectangle(o,r,s),C=f.heightOffset,E=f.heightScale,I=f.elementsPerHeight,b=f.elementMultiplier,S=f.isBigEndian,B=Math.pow(b,I-1);for(let v=0;v<u;++v){let P=D.lerp(y.north,y.south,v/(u-1));for(let M=0;M<c;++M){let L=D.lerp(y.west,y.east,M/(c-1)),p=M0e(g,m,C,E,_,c,u,L,P);p=p<f.lowestEncodedHeight?f.lowestEncodedHeight:p,p=p>f.highestEncodedHeight?f.highestEncodedHeight:p,ymt(A,I,b,B,h,S,v*c+M,p)}}return Promise.resolve(new Wg({buffer:A,width:c,height:u,childTileMask:0,structure:this._structure,createdByUpsampling:!0}))};Wg.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};Wg.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};function _mt(e,t,n,i,o,r,s,a,c,u){let f=(c-r.west)*(s-1)/(r.east-r.west),h=(u-r.south)*(a-1)/(r.north-r.south),A=f|0,g=A+1;g>=s&&(g=s-1,A=s-2);let m=h|0,_=m+1;_>=a&&(_=a-1,m=a-2);let y=f-A,C=h-m;m=a-1-m,_=a-1-_;let E=J4(e,t,n,i,o,m*s+A),I=J4(e,t,n,i,o,m*s+g),b=J4(e,t,n,i,o,_*s+A),S=J4(e,t,n,i,o,_*s+g);return N0e(y,C,E,I,b,S)}function M0e(e,t,n,i,o,r,s,a,c){let u=(a-o.west)*(r-1)/(o.east-o.west),f=(c-o.south)*(s-1)/(o.north-o.south),h=u|0,A=h+1;A>=r&&(A=r-1,h=r-2);let g=f|0,m=g+1;m>=s&&(m=s-1,g=s-2);let _=u-h,y=f-g;g=s-1-g,m=s-1-m;let C=(t.decodeHeight(e,g*r+h)-n)/i,E=(t.decodeHeight(e,g*r+A)-n)/i,I=(t.decodeHeight(e,m*r+h)-n)/i,b=(t.decodeHeight(e,m*r+A)-n)/i;return N0e(_,y,C,E,I,b)}function N0e(e,t,n,i,o,r){return t<e?n+e*(i-n)+t*(r-i):n+e*(r-o)+t*(o-n)}function J4(e,t,n,i,o,r){r*=i;let s=0,a;if(o)for(a=0;a<t;++a)s=s*n+e[r+a];else for(a=t-1;a>=0;--a)s=s*n+e[r+a];return s}function ymt(e,t,n,i,o,r,s,a){s*=o;let c;if(r)for(c=0;c<t-1;++c)e[s+c]=a/i|0,a-=e[s+c]*i,i/=n;else for(c=t-1;c>0;--c)e[s+c]=a/i|0,a-=e[s+c]*i,i/=n;e[s+c]=a}var Ec=Wg;function mw(e){e=e??V.EMPTY_OBJECT,this._tilingScheme=e.tilingScheme,l(this._tilingScheme)||(this._tilingScheme=new so({ellipsoid:e.ellipsoid??te.default})),this._levelZeroMaximumGeometricError=Ss.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,64,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._errorEvent=new _e}Object.defineProperties(mw.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});mw.prototype.requestTileGeometry=function(e,t,n,i){return Promise.resolve(new Ec({buffer:new Uint8Array(256),width:16,height:16}))};mw.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};mw.prototype.getTileDataAvailable=function(e,t,n){};mw.prototype.loadTileDataAvailability=function(e,t,n){};var DA=mw;var Cmt=new U;function Emt(e,t){let n=e.unionClippingRegions,i=e.length,o=Fs.useFloatTexture(t),r=Fs.getTextureResolution(e,t,Cmt),s=r.x,a=r.y,c=o?bmt(s,a):Tmt(s,a);return c+=` +`,c+=n?Imt(i):xmt(i),c}function Imt(e){return`float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) +{ + vec4 position = czm_windowToEyeCoordinates(fragCoord); + vec3 clipNormal = vec3(0.0); + vec3 clipPosition = vec3(0.0); + float clipAmount; + float pixelWidth = czm_metersPerPixel(position); + bool breakAndDiscard = false; + for (int i = 0; i < ${e}; ++i) + { + vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix); + clipNormal = clippingPlane.xyz; + clipPosition = -clippingPlane.w * clipNormal; + float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth; + clipAmount = czm_branchFreeTernary(i == 0, amount, min(amount, clipAmount)); + if (amount <= 0.0) + { + breakAndDiscard = true; + break; + } + } + if (breakAndDiscard) { + discard; + } + return clipAmount; +} +`}function xmt(e){return`float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) +{ + bool clipped = true; + vec4 position = czm_windowToEyeCoordinates(fragCoord); + vec3 clipNormal = vec3(0.0); + vec3 clipPosition = vec3(0.0); + float clipAmount = 0.0; + float pixelWidth = czm_metersPerPixel(position); + for (int i = 0; i < ${e}; ++i) + { + vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix); + clipNormal = clippingPlane.xyz; + clipPosition = -clippingPlane.w * clipNormal; + float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth; + clipAmount = max(amount, clipAmount); + clipped = clipped && (amount <= 0.0); + } + if (clipped) + { + discard; + } + return clipAmount; +} +`}function bmt(e,t){let n=1/e,i=1/t,o=`${n}`;o.indexOf(".")===-1&&(o+=".0");let r=`${i}`;return r.indexOf(".")===-1&&(r+=".0"),`vec4 getClippingPlane(highp sampler2D packedClippingPlanes, int clippingPlaneNumber, mat4 transform) +{ + int pixY = clippingPlaneNumber / ${e}; + int pixX = clippingPlaneNumber - (pixY * ${e}); + float u = (float(pixX) + 0.5) * ${o}; + float v = (float(pixY) + 0.5) * ${r}; + vec4 plane = texture(packedClippingPlanes, vec2(u, v)); + return czm_transformPlane(plane, transform); +} +`}function Tmt(e,t){let n=1/e,i=1/t,o=`${n}`;o.indexOf(".")===-1&&(o+=".0");let r=`${i}`;return r.indexOf(".")===-1&&(r+=".0"),`vec4 getClippingPlane(highp sampler2D packedClippingPlanes, int clippingPlaneNumber, mat4 transform) +{ + int clippingPlaneStartIndex = clippingPlaneNumber * 2; + int pixY = clippingPlaneStartIndex / ${e}; + int pixX = clippingPlaneStartIndex - (pixY * ${e}); + float u = (float(pixX) + 0.5) * ${o}; + float v = (float(pixY) + 0.5) * ${r}; + vec4 oct32 = texture(packedClippingPlanes, vec2(u, v)) * 255.0; + vec2 oct = vec2(oct32.x * 256.0 + oct32.y, oct32.z * 256.0 + oct32.w); + vec4 plane; + plane.xyz = czm_octDecode(oct, 65535.0); + plane.w = czm_unpackFloat(texture(packedClippingPlanes, vec2(u + ${o}, v))); + return czm_transformPlane(plane, transform); +} +`}var jg=Emt;function Smt(e,t,n,i,o,r){this.numberOfDayTextures=e,this.flags=t,this.material=n,this.shaderProgram=i,this.clippingShaderState=o,this.clippingPolygonShaderState=r}function oJ(){this.baseVertexShaderSource=void 0,this.baseFragmentShaderSource=void 0,this._shadersByTexturesFlags=[],this.material=void 0}function wmt(e){let t="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPosition3DMode(position, height, textureCoordinates); }",n="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPositionColumbusViewMode(position, height, textureCoordinates); }",i="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPositionMorphingMode(position, height, textureCoordinates); }",o;switch(e){case ie.SCENE3D:o=t;break;case ie.SCENE2D:case ie.COLUMBUS_VIEW:o=n;break;case ie.MORPHING:o=i;break}return o}function Bmt(e){return e.webgl2?`void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) { + czm_clipPolygons(clippingDistance, regionsLength, clippingPosition, regionIndex); + }`:`void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) { + }`}function Dmt(e){return e.webgl2?`vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) { + return czm_unpackClippingExtents(extentsTexture, index); + }`:`vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) { + return vec4(); + }`}function vmt(e){return e?"float get2DYPositionFraction(vec2 textureCoordinates) { return get2DMercatorYPositionFraction(textureCoordinates); }":"float get2DYPositionFraction(vec2 textureCoordinates) { return get2DGeographicYPositionFraction(textureCoordinates); }"}oJ.prototype.getShaderProgram=function(e){let t=e.frameState,n=e.surfaceTile,i=e.numberOfDayTextures,o=e.applyBrightness,r=e.applyContrast,s=e.applyHue,a=e.applySaturation,c=e.applyGamma,u=e.applyAlpha,f=e.applyDayNightAlpha,h=e.applySplit,A=e.hasWaterMask,g=e.showReflectiveOcean,m=e.showOceanWaves,_=e.enableLighting,y=e.dynamicAtmosphereLighting,C=e.dynamicAtmosphereLightingFromSun,E=e.showGroundAtmosphere,I=e.perFragmentGroundAtmosphere,b=e.hasVertexNormals,S=e.useWebMercatorProjection,B=e.enableFog,v=e.enableClippingPlanes,P=e.clippingPlanes,M=e.enableClippingPolygons,L=e.clippingPolygons,p=e.clippedByBoundaries,x=e.hasImageryLayerCutout,T=e.colorCorrect,w=e.highlightFillTile,R=e.colorToAlpha,O=e.hasGeodeticSurfaceNormals,k=e.hasExaggeration,Q=e.showUndergroundColor,z=e.translucent,F=0,H="",Z=n.renderedMesh.encoding;Z.quantization===ba.BITS12&&(F=1,H="QUANTIZATION_BITS12");let $=0,X="";p&&($=1,X="TILE_LIMIT_RECTANGLE");let he=0,ge="";x&&(he=1,ge="APPLY_IMAGERY_CUTOUT");let fe=t.mode,ye=fe|o<<2|r<<3|s<<4|a<<5|c<<6|u<<7|A<<8|g<<9|m<<10|_<<11|y<<12|C<<13|E<<14|I<<15|b<<16|S<<17|B<<18|F<<19|h<<20|v<<21|M<<22|$<<23|he<<24|T<<25|w<<26|R<<27|O<<28|k<<29|Q<<30|z<<31|f<<32,xe=0;l(P)&&P.length>0&&(xe=v?P.clippingPlanesState:0);let ve=0;l(L)&&L.length>0&&(ve=M?L.clippingPolygonsState:0);let Te=n.surfaceShader;if(l(Te)&&Te.numberOfDayTextures===i&&Te.flags===ye&&Te.material===this.material&&Te.clippingShaderState===xe&&Te.clippingPolygonShaderState===ve)return Te.shaderProgram;let ke=this._shadersByTexturesFlags[i];if(l(ke)||(ke=this._shadersByTexturesFlags[i]=[]),Te=ke[ye],!l(Te)||Te.material!==this.material||Te.clippingShaderState!==xe||Te.clippingPolygonShaderState!==ve){let Ge=this.baseVertexShaderSource.clone(),Ke=this.baseFragmentShaderSource.clone();xe!==0&&Ke.sources.unshift(jg(P,t.context)),ve!==0&&(Ke.sources.unshift(Bmt(t.context)),Ge.sources.unshift(Dmt(t.context))),Ge.defines.push(H),Ke.defines.push(`TEXTURE_UNITS ${i}`,X,ge),o&&Ke.defines.push("APPLY_BRIGHTNESS"),r&&Ke.defines.push("APPLY_CONTRAST"),s&&Ke.defines.push("APPLY_HUE"),a&&Ke.defines.push("APPLY_SATURATION"),c&&Ke.defines.push("APPLY_GAMMA"),u&&Ke.defines.push("APPLY_ALPHA"),f&&Ke.defines.push("APPLY_DAY_NIGHT_ALPHA"),A&&Ke.defines.push("HAS_WATER_MASK"),g&&(Ke.defines.push("SHOW_REFLECTIVE_OCEAN"),Ge.defines.push("SHOW_REFLECTIVE_OCEAN")),m&&Ke.defines.push("SHOW_OCEAN_WAVES"),R&&Ke.defines.push("APPLY_COLOR_TO_ALPHA"),Q&&(Ge.defines.push("UNDERGROUND_COLOR"),Ke.defines.push("UNDERGROUND_COLOR")),z&&(Ge.defines.push("TRANSLUCENT"),Ke.defines.push("TRANSLUCENT")),_&&(b?(Ge.defines.push("ENABLE_VERTEX_LIGHTING"),Ke.defines.push("ENABLE_VERTEX_LIGHTING")):(Ge.defines.push("ENABLE_DAYNIGHT_SHADING"),Ke.defines.push("ENABLE_DAYNIGHT_SHADING"))),y&&(Ge.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING"),Ke.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING"),C&&(Ge.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN"),Ke.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN"))),E&&(Ge.defines.push("GROUND_ATMOSPHERE"),Ke.defines.push("GROUND_ATMOSPHERE"),I&&(Ge.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE"),Ke.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE"))),Ge.defines.push("INCLUDE_WEB_MERCATOR_Y"),Ke.defines.push("INCLUDE_WEB_MERCATOR_Y"),B&&(Ge.defines.push("FOG"),Ke.defines.push("FOG")),h&&Ke.defines.push("APPLY_SPLIT"),v&&Ke.defines.push("ENABLE_CLIPPING_PLANES"),M&&(Ke.defines.push("ENABLE_CLIPPING_POLYGONS"),Ge.defines.push("ENABLE_CLIPPING_POLYGONS"),L.inverse&&Ke.defines.push("CLIPPING_INVERSE"),Ke.defines.push(`CLIPPING_POLYGON_REGIONS_LENGTH ${L.extentsCount}`),Ge.defines.push(`CLIPPING_POLYGON_REGIONS_LENGTH ${L.extentsCount}`)),T&&Ke.defines.push("COLOR_CORRECT"),w&&Ke.defines.push("HIGHLIGHT_FILL_TILE"),O&&Ge.defines.push("GEODETIC_SURFACE_NORMALS"),k&&Ge.defines.push("EXAGGERATION");let tt=` vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend) + { + vec4 color = initialColor; +`;x&&(tt+=` vec4 cutoutAndColorResult; + bool texelUnclipped; +`);for(let it=0;it<i;++it)x?tt+=` cutoutAndColorResult = u_dayTextureCutoutRectangles[${it}]; + texelUnclipped = v_textureCoordinates.x < cutoutAndColorResult.x || cutoutAndColorResult.z < v_textureCoordinates.x || v_textureCoordinates.y < cutoutAndColorResult.y || cutoutAndColorResult.w < v_textureCoordinates.y; + cutoutAndColorResult = sampleAndBlend( +`:tt+=` color = sampleAndBlend( +`,tt+=` color, + u_dayTextures[${it}], + u_dayTextureUseWebMercatorT[${it}] ? textureCoordinates.xz : textureCoordinates.xy, + u_dayTextureTexCoordsRectangle[${it}], + u_dayTextureTranslationAndScale[${it}], + ${u?`u_dayTextureAlpha[${it}]`:"1.0"}, + ${f?`u_dayTextureNightAlpha[${it}]`:"1.0"}, + ${f?`u_dayTextureDayAlpha[${it}]`:"1.0"}, + ${o?`u_dayTextureBrightness[${it}]`:"0.0"}, + ${r?`u_dayTextureContrast[${it}]`:"0.0"}, + ${s?`u_dayTextureHue[${it}]`:"0.0"}, + ${a?`u_dayTextureSaturation[${it}]`:"0.0"}, + ${c?`u_dayTextureOneOverGamma[${it}]`:"0.0"}, + ${h?`u_dayTextureSplit[${it}]`:"0.0"}, + ${R?`u_colorsToAlpha[${it}]`:"vec4(0.0)"}, + nightBlend); +`,x&&(tt+=` color = czm_branchFreeTernary(texelUnclipped, cutoutAndColorResult, color); +`);tt+=` return color; + }`,Ke.sources.push(tt),Ge.sources.push(wmt(fe)),Ge.sources.push(vmt(S));let en=an.fromCache({context:t.context,vertexShaderSource:Ge,fragmentShaderSource:Ke,attributeLocations:Z.getAttributeLocations()});Te=ke[ye]=new Smt(i,ye,this.material,en,xe,ve)}return n.surfaceShader=Te,Te.shaderProgram};oJ.prototype.destroy=function(){let e,t,n=this._shadersByTexturesFlags;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i];if(!l(o))continue;for(e in o)o.hasOwnProperty(e)&&(t=o[e],l(t)&&t.shaderProgram.destroy())}return ue(this)};var q2=oJ;var Pmt={NONE:-1,PARTIAL:0,FULL:1},Mr=Object.freeze(Pmt);var Rmt={START:0,LOADING:1,DONE:2,FAILED:3},Ta=Object.freeze(Rmt);var Mmt={FAILED:0,UNLOADED:1,RECEIVING:2,RECEIVED:3,TRANSFORMING:4,TRANSFORMED:5,READY:6},To=Object.freeze(Mmt);function gr(){this.imagery=[],this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new se(0,0,1,1),this.terrainData=void 0,this.vertexArray=void 0,this.tileBoundingRegion=void 0,this.occludeePointInScaledSpace=new d,this.boundingVolumeSourceTile=void 0,this.boundingVolumeIsFromMesh=!1,this.terrainState=To.UNLOADED,this.mesh=void 0,this.fill=void 0,this.pickBoundingSphere=new le,this.surfaceShader=void 0,this.isClipped=!0,this.clippedByBoundaries=!1}Object.defineProperties(gr.prototype,{eligibleForUnloading:{get:function(){let e=this.terrainState,n=!(e===To.RECEIVING||e===To.TRANSFORMING),i=this.imagery;for(let o=0,r=i.length;n&&o<r;++o){let s=i[o];n=!l(s.loadingImagery)||s.loadingImagery.state!==qn.TRANSITIONING}return n}},renderedMesh:{get:function(){if(l(this.vertexArray))return this.mesh;if(l(this.fill))return this.fill.mesh}}});var Nmt=new Ae;function rJ(e,t,n,i,o,r){let s=e.getExaggeratedPosition(i,o,r);if(l(t)&&t!==ie.SCENE3D){let c=n.ellipsoid.cartesianToCartographic(s,Nmt);s=n.project(c,r),s=d.fromElements(s.z,s.x,s.y,r)}return s}var Lmt=new d,Omt=new d,Fmt=new d;gr.prototype.pick=function(e,t,n,i,o){let r=this.renderedMesh;if(!l(r))return;let s=r.vertices,a=r.indices,c=r.encoding,u=a.length,f=Number.MAX_VALUE;for(let h=0;h<u;h+=3){let A=a[h],g=a[h+1],m=a[h+2],_=rJ(c,t,n,s,A,Lmt),y=rJ(c,t,n,s,g,Omt),C=rJ(c,t,n,s,m,Fmt),E=hi.rayTriangleParametric(e,_,y,C,i);l(E)&&E<f&&E>=0&&(f=E)}return f!==Number.MAX_VALUE?In.getPoint(e,f,o):void 0};gr.prototype.freeResources=function(){l(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,this.waterMaskTexture.referenceCount===0&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0),this.terrainData=void 0,this.terrainState=To.UNLOADED,this.mesh=void 0,this.fill=this.fill&&this.fill.destroy();let e=this.imagery;for(let t=0,n=e.length;t<n;++t)e[t].freeResources();this.imagery.length=0,this.freeVertexArray()};gr.prototype.freeVertexArray=function(){gr._freeVertexArray(this.vertexArray),this.vertexArray=void 0,gr._freeVertexArray(this.wireframeVertexArray),this.wireframeVertexArray=void 0};gr.initialize=function(e,t,n){let i=e.data;l(i)||(i=e.data=new gr),e.state===Ta.START&&(Qmt(e,t,n),e.state=Ta.LOADING)};gr.processStateMachine=function(e,t,n,i,o,r,s){gr.initialize(e,n,i);let a=e.data;if(e.state===Ta.LOADING&&kmt(e,t,n,i,o,r),s)return;let c=e.renderable;e.renderable=l(a.vertexArray);let u=a.terrainState===To.READY;e.upsampledFromParent=l(a.terrainData)&&a.terrainData.wasCreatedByUpsampling();let f=a.processImagery(e,n,t);if(u&&f){let h=e._loadedCallbacks,A={};for(let g in h)h.hasOwnProperty(g)&&(h[g](e)||(A[g]=h[g]));e._loadedCallbacks=A,e.state=Ta.DONE}c&&(e.renderable=!0)};gr.prototype.processImagery=function(e,t,n,i){let o=e.data,r=e.upsampledFromParent,s=!1,a=!0,c=o.imagery,u,f;for(u=0,f=c.length;u<f;++u){let h=c[u];if(!l(h.loadingImagery)){r=!1;continue}if(h.loadingImagery.state===qn.PLACEHOLDER){let g=h.loadingImagery.imageryLayer;if(g.ready){h.freeResources(),c.splice(u,1),g._createTileImagerySkeletons(e,t,u),--u,f=c.length;continue}else r=!1}let A=h.processStateMachine(e,n,i);a=a&&A,s=s||A||l(h.readyImagery),r=r&&l(h.loadingImagery)&&(h.loadingImagery.state===qn.FAILED||h.loadingImagery.state===qn.INVALID)}return e.upsampledFromParent=r,e.renderable=e.renderable&&(s||a),a};function L0e(e,t,n,i){let o=e.renderedMesh,r=o.vertices,s=o.encoding,a=r.length/s.stride,c=Zc.clone(s);c.hasGeodeticSurfaceNormals=t,c=Zc.clone(c);let u=c.stride,f=new Float32Array(a*u);t?s.addGeodeticSurfaceNormals(r,f,n):s.removeGeodeticSurfaceNormals(r,f),o.vertices=f,o.stride=u,o!==e.mesh?(gr._freeVertexArray(e.fill.vertexArray),e.fill.vertexArray=gr._createVertexArrayForMesh(i.context,o)):(gr._freeVertexArray(e.vertexArray),e.vertexArray=gr._createVertexArrayForMesh(i.context,o)),gr._freeVertexArray(e.wireframeVertexArray),e.wireframeVertexArray=void 0}gr.prototype.addGeodeticSurfaceNormals=function(e,t){L0e(this,!0,e,t)};gr.prototype.removeGeodeticSurfaceNormals=function(e){L0e(this,!1,void 0,e)};gr.prototype.updateExaggeration=function(e,t,n){let i=this,o=i.renderedMesh;if(o===void 0)return;let r=t.verticalExaggeration,s=t.verticalExaggerationRelativeHeight,a=r!==1,c=o.encoding,u=c.exaggeration!==r,f=c.exaggerationRelativeHeight!==s;if(u||f){if(u)if(a&&!c.hasGeodeticSurfaceNormals){let h=e.tilingScheme.ellipsoid;i.addGeodeticSurfaceNormals(h,t)}else!a&&c.hasGeodeticSurfaceNormals&&i.removeGeodeticSurfaceNormals(t);if(c.exaggeration=r,c.exaggerationRelativeHeight=s,n!==void 0){n._tileToUpdateHeights.push(e);let h=e.customData,A=h.length;for(let g=0;g<A;g++){let m=h[g];m.level=-1}}}};function Qmt(e,t,n){let i=t.getTileDataAvailable(e.x,e.y,e.level);if(!l(i)&&l(e.parent)){let o=e.parent,r=o.data;l(r)&&l(r.terrainData)&&(i=r.terrainData.isChildAvailable(o.x,o.y,e.x,e.y))}i===!1&&(e.data.terrainState=To.FAILED);for(let o=0,r=n.length;o<r;++o){let s=n.get(o);s.show&&s._createTileImagerySkeletons(e,t)}}function kmt(e,t,n,i,o,r){let s=e.data,a=e.parent;if(s.terrainState===To.FAILED&&a!==void 0&&(a.data!==void 0&&a.data.terrainData!==void 0&&a.data.terrainData.canUpsample!==!1||gr.processStateMachine(a,t,n,i,o,r,!0)),s.terrainState===To.FAILED&&Umt(s,e,t,n,e.x,e.y,e.level),s.terrainState===To.UNLOADED&&Gmt(s,n,e.x,e.y,e.level),s.terrainState===To.RECEIVED&&Vmt(s,t,n,e.x,e.y,e.level),s.terrainState===To.TRANSFORMED&&(Hmt(s,t.context,n,e.x,e.y,e.level,r),s.updateExaggeration(e,t,o)),s.terrainState>=To.RECEIVED&&s.waterMaskTexture===void 0&&n.hasWaterMask)if(s.terrainData.waterMask!==void 0)jmt(t.context,s);else{let u=s._findAncestorTileWithTerrainData(e);l(u)&&l(u.data.waterMaskTexture)&&(s.waterMaskTexture=u.data.waterMaskTexture,++s.waterMaskTexture.referenceCount,s._computeWaterMaskTranslationAndScale(e,u,s.waterMaskTranslationAndScale))}}function Umt(e,t,n,i,o,r,s){let a=t.parent;if(!a){t.state=Ta.FAILED;return}let c=a.data.terrainData,u=a.x,f=a.y,h=a.level;if(!l(c))return;let A=c.upsample(i.tilingScheme,u,f,h,o,r,s);l(A)&&(e.terrainState=To.RECEIVING,Promise.resolve(A).then(function(g){l(g)&&(e.terrainData=g,e.terrainState=To.RECEIVED)}).catch(function(){e.terrainState=To.FAILED}))}function Gmt(e,t,n,i,o){function r(c){if(!l(c)){e.terrainState=To.UNLOADED,e.request=void 0;return}e.terrainData=c,e.terrainState=To.RECEIVED,e.request=void 0}function s(c){if(e.request.state===fi.CANCELLED){e.terrainData=void 0,e.terrainState=To.UNLOADED,e.request=void 0;return}e.terrainState=To.FAILED,e.request=void 0;let u=`Failed to obtain terrain tile X: ${n} Y: ${i} Level: ${o}. Error message: "${c}"`;t._requestError=Qo.reportError(t._requestError,t,t.errorEvent,u,n,i,o),t._requestError.retry&&a()}function a(){let c=new sr({throttle:!1,throttleByServer:!0,type:Ms.TERRAIN});e.request=c;let u=t.requestTileGeometry(n,i,o,c);l(u)?(e.terrainState=To.RECEIVING,Promise.resolve(u).then(function(f){r(f)}).catch(function(f){s(f)})):(e.terrainState=To.UNLOADED,e.request=void 0)}a()}var zmt={tilingScheme:void 0,x:0,y:0,level:0,exaggeration:1,exaggerationRelativeHeight:0,throttle:!0};function Vmt(e,t,n,i,o,r){let s=n.tilingScheme,a=zmt;a.tilingScheme=s,a.x=i,a.y=o,a.level=r,a.exaggeration=t.verticalExaggeration,a.exaggerationRelativeHeight=t.verticalExaggerationRelativeHeight,a.throttle=!0;let u=e.terrainData.createMesh(a);l(u)&&(e.terrainState=To.TRANSFORMING,Promise.resolve(u).then(function(f){e.mesh=f,e.terrainState=To.TRANSFORMED}).catch(function(){e.terrainState=To.FAILED}))}gr._createVertexArrayForMesh=function(e,t){let n=t.vertices,i=Ct.createVertexBuffer({context:e,typedArray:n,usage:Qe.STATIC_DRAW}),o=t.encoding.getAttributes(i),r=t.indices.indexBuffers||{},s=r[e.id];if(!l(s)||s.isDestroyed()){let a=t.indices;s=Ct.createIndexBuffer({context:e,typedArray:a,usage:Qe.STATIC_DRAW,indexDatatype:Oe.fromSizeInBytes(a.BYTES_PER_ELEMENT)}),s.vertexArrayDestroyable=!1,s.referenceCount=1,r[e.id]=s,t.indices.indexBuffers=r}else++s.referenceCount;return new li({context:e,attributes:o,indexBuffer:s})};gr._freeVertexArray=function(e){if(l(e)){let t=e.indexBuffer;e.isDestroyed()||e.destroy(),l(t)&&!t.isDestroyed()&&l(t.referenceCount)&&(--t.referenceCount,t.referenceCount===0&&t.destroy())}};function Hmt(e,t,n,i,o,r,s){e.vertexArray=gr._createVertexArrayForMesh(t,e.mesh),e.terrainState=To.READY,e.fill=e.fill&&e.fill.destroy(s)}function Wmt(e){let t=e.cache.tile_waterMaskData;if(!l(t)){let n=Mt.create({context:e,pixelFormat:$e.LUMINANCE,pixelDatatype:Ve.UNSIGNED_BYTE,source:{arrayBufferView:new Uint8Array([255]),width:1,height:1}});n.referenceCount=1;let i=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:mi.LINEAR});t={allWaterTexture:n,sampler:i,destroy:function(){this.allWaterTexture.destroy()}},e.cache.tile_waterMaskData=t}return t}function jmt(e,t){let n=t.terrainData.waterMask,i=Wmt(e),o,r=n.length;if(r===1)if(n[0]!==0)o=i.allWaterTexture;else return;else{let s=Math.sqrt(r);o=Mt.create({context:e,pixelFormat:$e.LUMINANCE,pixelDatatype:Ve.UNSIGNED_BYTE,source:{width:s,height:s,arrayBufferView:n},sampler:i.sampler,flipY:!1}),o.referenceCount=0}++o.referenceCount,t.waterMaskTexture=o,se.fromElements(0,0,1,1,t.waterMaskTranslationAndScale)}gr.prototype._findAncestorTileWithTerrainData=function(e){let t=e.parent;for(;l(t)&&(!l(t.data)||!l(t.data.terrainData)||t.data.terrainData.wasCreatedByUpsampling());)t=t.parent;return t};gr.prototype._computeWaterMaskTranslationAndScale=function(e,t,n){let i=t.rectangle,o=e.rectangle,r=o.width,s=o.height,a=r/i.width,c=s/i.height;return n.x=a*(o.west-i.west)/r,n.y=c*(o.south-i.south)/s,n.z=a,n.w=c,n};var Gd=gr;var Ymt={WEST:0,NORTH:1,EAST:2,SOUTH:3,NORTHWEST:4,NORTHEAST:5,SOUTHWEST:6,SOUTHEAST:7},Sn=Ymt;var O0e={NONE:0,CULLED:1,RENDERED:2,REFINED:3,RENDERED_AND_KICKED:6,REFINED_AND_KICKED:7,CULLED_BUT_NEEDED:9,wasKicked:function(e){return e>=O0e.RENDERED_AND_KICKED},originalResult:function(e){return e&3},kick:function(e){return e|4}},ai=O0e;function pw(e){this.tile=e,this.frameLastUpdated=void 0,this.westMeshes=[],this.westTiles=[],this.southMeshes=[],this.southTiles=[],this.eastMeshes=[],this.eastTiles=[],this.northMeshes=[],this.northTiles=[],this.southwestMesh=void 0,this.southwestTile=void 0,this.southeastMesh=void 0,this.southeastTile=void 0,this.northwestMesh=void 0,this.northwestTile=void 0,this.northeastMesh=void 0,this.northeastTile=void 0,this.changedThisFrame=!0,this.visitedFrame=void 0,this.enqueuedFrame=void 0,this.mesh=void 0,this.vertexArray=void 0,this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new se}pw.prototype.update=function(e,t,n){this.changedThisFrame&&(V0e(e,t,this.tile,n),this.changedThisFrame=!1)};pw.prototype.destroy=function(e){this._destroyVertexArray(e),l(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,this.waterMaskTexture.referenceCount===0&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0)};pw.prototype._destroyVertexArray=function(e){l(this.vertexArray)&&(l(e)?e.push(this.vertexArray):Gd._freeVertexArray(this.vertexArray),this.vertexArray=void 0)};var qmt=new ey;pw.updateFillTiles=function(e,t,n,i){let o=e._quadtree,r=o._levelZeroTiles,s=o._lastSelectionFrameNumber,a=qmt;a.clear();for(let u=0;u<t.length;++u){let f=t[u];l(f.data.vertexArray)&&a.enqueue(t[u])}let c=a.dequeue();for(;c!==void 0;){let u=c.findTileToWest(r),f=c.findTileToSouth(r),h=c.findTileToEast(r),A=c.findTileToNorth(r);oa(e,n,c,u,s,Sn.EAST,!1,a,i),oa(e,n,c,f,s,Sn.NORTH,!1,a,i),oa(e,n,c,h,s,Sn.WEST,!1,a,i),oa(e,n,c,A,s,Sn.SOUTH,!1,a,i);let g=u.findTileToNorth(r),m=u.findTileToSouth(r),_=h.findTileToNorth(r),y=h.findTileToSouth(r);oa(e,n,c,g,s,Sn.SOUTHEAST,!1,a,i),oa(e,n,c,_,s,Sn.SOUTHWEST,!1,a,i),oa(e,n,c,m,s,Sn.NORTHEAST,!1,a,i),oa(e,n,c,y,s,Sn.NORTHWEST,!1,a,i),c=a.dequeue()}};function oa(e,t,n,i,o,r,s,a,c){if(i===void 0)return;let u=i;for(;u&&(u._lastSelectionResultFrame!==o||ai.wasKicked(u._lastSelectionResult)||ai.originalResult(u._lastSelectionResult)===ai.CULLED);){if(s)return;let f=u.parent;if(r>=Sn.NORTHWEST&&f!==void 0)switch(r){case Sn.NORTHWEST:u=u===f.northwestChild?f:void 0;break;case Sn.NORTHEAST:u=u===f.northeastChild?f:void 0;break;case Sn.SOUTHWEST:u=u===f.southwestChild?f:void 0;break;case Sn.SOUTHEAST:u=u===f.southeastChild?f:void 0;break}else u=f}if(u!==void 0){if(u._lastSelectionResult===ai.RENDERED){if(l(u.data.vertexArray))return;Kmt(e,t,n,u,r,o,a,c);return}if(ai.originalResult(i._lastSelectionResult)!==ai.CULLED)switch(r){case Sn.WEST:oa(e,t,n,i.northwestChild,o,r,!0,a,c),oa(e,t,n,i.southwestChild,o,r,!0,a,c);break;case Sn.EAST:oa(e,t,n,i.southeastChild,o,r,!0,a,c),oa(e,t,n,i.northeastChild,o,r,!0,a,c);break;case Sn.SOUTH:oa(e,t,n,i.southwestChild,o,r,!0,a,c),oa(e,t,n,i.southeastChild,o,r,!0,a,c);break;case Sn.NORTH:oa(e,t,n,i.northeastChild,o,r,!0,a,c),oa(e,t,n,i.northwestChild,o,r,!0,a,c);break;case Sn.NORTHWEST:oa(e,t,n,i.northwestChild,o,r,!0,a,c);break;case Sn.NORTHEAST:oa(e,t,n,i.northeastChild,o,r,!0,a,c);break;case Sn.SOUTHWEST:oa(e,t,n,i.southwestChild,o,r,!0,a,c);break;case Sn.SOUTHEAST:oa(e,t,n,i.southeastChild,o,r,!0,a,c);break;default:throw new me("Invalid edge")}}}function Kmt(e,t,n,i,o,r,s,a){let c=i.data;if(c.fill===void 0)c.fill=new pw(i);else if(c.fill.visitedFrame===r)return;c.fill.enqueuedFrame!==r&&(c.fill.enqueuedFrame=r,c.fill.changedThisFrame=!1,s.enqueue(i)),Xmt(e,t,n,i,o,a)}function Xmt(e,t,n,i,o,r){let s=i.data.fill,a,c=n.data.fill;l(c)?(c.visitedFrame=t.frameNumber,c.changedThisFrame&&(V0e(e,t,n,r),c.changedThisFrame=!1),a=n.data.fill.mesh):a=n.data.mesh;let u,f;switch(o){case Sn.WEST:u=s.westMeshes,f=s.westTiles;break;case Sn.SOUTH:u=s.southMeshes,f=s.southTiles;break;case Sn.EAST:u=s.eastMeshes,f=s.eastTiles;break;case Sn.NORTH:u=s.northMeshes,f=s.northTiles;break;case Sn.NORTHWEST:s.changedThisFrame=s.changedThisFrame||s.northwestMesh!==a,s.northwestMesh=a,s.northwestTile=n;return;case Sn.NORTHEAST:s.changedThisFrame=s.changedThisFrame||s.northeastMesh!==a,s.northeastMesh=a,s.northeastTile=n;return;case Sn.SOUTHWEST:s.changedThisFrame=s.changedThisFrame||s.southwestMesh!==a,s.southwestMesh=a,s.southwestTile=n;return;case Sn.SOUTHEAST:s.changedThisFrame=s.changedThisFrame||s.southeastMesh!==a,s.southeastMesh=a,s.southeastTile=n;return}if(n.level<=i.level){s.changedThisFrame=s.changedThisFrame||u[0]!==a||u.length!==1,u[0]=a,f[0]=n,u.length=1,f.length=1;return}let h,A,g,m,_=n.rectangle,y,C=i.rectangle;switch(o){case Sn.WEST:for(y=(C.north-C.south)*D.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!D.greaterThan(_.north,m.south,y));++h);for(A=h;A<f.length&&(g=f[A],m=g.rectangle,!D.greaterThanOrEquals(_.south,m.north,y));++A);break;case Sn.SOUTH:for(y=(C.east-C.west)*D.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!D.lessThan(_.west,m.east,y));++h);for(A=h;A<f.length&&(g=f[A],m=g.rectangle,!D.lessThanOrEquals(_.east,m.west,y));++A);break;case Sn.EAST:for(y=(C.north-C.south)*D.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!D.lessThan(_.south,m.north,y));++h);for(A=h;A<f.length&&(g=f[A],m=g.rectangle,!D.lessThanOrEquals(_.north,m.south,y));++A);break;case Sn.NORTH:for(y=(C.east-C.west)*D.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!D.greaterThan(_.east,m.west,y));++h);for(A=h;A<f.length&&(g=f[A],m=g.rectangle,!D.greaterThanOrEquals(_.west,m.east,y));++A);break}A-h===1?(s.changedThisFrame=s.changedThisFrame||u[h]!==a,u[h]=a,f[h]=n):(s.changedThisFrame=!0,u.splice(h,A-h,a),f.splice(h,A-h,n))}var NI=new Ae,Jmt=new Ae,Aw=new d,lJ=new d,sJ=new U,aJ=new U,wf=new U;function oH(){this.height=0,this.encodedNormal=new U}function Z4(e,t,n,i,o,r,s,a,c){if(l(o))return o;let u;if(l(r)&&l(s))u=(r.height+s.height)*.5;else if(l(r))u=r.height;else if(l(s))u=s.height;else if(l(a))u=a.height;else{let h=e.tile.data.tileBoundingRegion,A=0,g=0;l(h)&&(A=h.minimumHeight,g=h.maximumHeight),u=(A+g)*.5}return H0e(e,t,n,i,u,c),c}var Zmt={minimumHeight:0,maximumHeight:0},$mt=new d,F0e=new oH,Q0e=new oH,k0e=new oH,U0e=new oH,eAt=typeof Uint8Array<"u"?new Uint8Array(81):void 0,tAt={tilingScheme:void 0,x:0,y:0,level:0,exaggeration:1,exaggerationRelativeHeight:0};function V0e(e,t,n,i){Gd.initialize(n,e.terrainProvider,e._imageryLayers);let o=n.data,r=o.fill,s=n.rectangle,a=t.verticalExaggeration,c=t.verticalExaggerationRelativeHeight,u=a!==1,f=n.tilingScheme.ellipsoid,h=eH(r,f,0,1,r.northwestTile,r.northwestMesh,r.northTiles,r.northMeshes,r.westTiles,r.westMeshes,k0e),A=eH(r,f,0,0,r.southwestTile,r.southwestMesh,r.westTiles,r.westMeshes,r.southTiles,r.southMeshes,F0e),g=eH(r,f,1,0,r.southeastTile,r.southeastMesh,r.southTiles,r.southMeshes,r.eastTiles,r.eastMeshes,Q0e),m=eH(r,f,1,1,r.northeastTile,r.northeastMesh,r.eastTiles,r.eastMeshes,r.northTiles,r.northMeshes,U0e);h=Z4(r,f,0,1,h,A,m,g,k0e),A=Z4(r,f,0,0,A,h,g,m,F0e),g=Z4(r,f,1,1,g,A,m,h,Q0e),m=Z4(r,f,1,1,m,g,h,A,U0e);let _=A.height,y=g.height,C=h.height,E=m.height,I=Math.min(_,y,C,E),b=Math.max(_,y,C,E),S=(I+b)*.5,B,v,P=e.getLevelMaximumGeometricError(n.level),M=f.maximumRadius-P,L=Math.acos(M/f.maximumRadius)*4;if(L*=1.5,s.width>L&&b-I<=P){let T=new Ec({width:9,height:9,buffer:eAt,structure:{heightOffset:b}}),w=tAt;w.tilingScheme=n.tilingScheme,w.x=n.x,w.y=n.y,w.level=n.level,w.exaggeration=a,w.exaggerationRelativeHeight=c,r.mesh=T._createMeshSync(w)}else{let T=u,w=ae.center(s,Jmt);w.height=S;let R=f.cartographicToCartesian(w,$mt),O=new Zc(R,void 0,void 0,void 0,void 0,!0,!0,T,a,c),k=5,Q;for(Q=r.westMeshes,B=0,v=Q.length;B<v;++B)k+=Q[B].eastIndicesNorthToSouth.length;for(Q=r.southMeshes,B=0,v=Q.length;B<v;++B)k+=Q[B].northIndicesWestToEast.length;for(Q=r.eastMeshes,B=0,v=Q.length;B<v;++B)k+=Q[B].westIndicesSouthToNorth.length;for(Q=r.northMeshes,B=0,v=Q.length;B<v;++B)k+=Q[B].southIndicesEastToWest.length;let z=Zmt;z.minimumHeight=I,z.maximumHeight=b;let F=O.stride,H=new Float32Array(k*F),W=0,Z=W;W=$4(f,s,O,H,W,0,1,h.height,h.encodedNormal,1,z),W=nH(r,f,O,H,W,r.westTiles,r.westMeshes,Sn.EAST,z);let Y=W;W=$4(f,s,O,H,W,0,0,A.height,A.encodedNormal,0,z),W=nH(r,f,O,H,W,r.southTiles,r.southMeshes,Sn.NORTH,z);let $=W;W=$4(f,s,O,H,W,1,0,g.height,g.encodedNormal,0,z),W=nH(r,f,O,H,W,r.eastTiles,r.eastMeshes,Sn.WEST,z);let X=W;W=$4(f,s,O,H,W,1,1,m.height,m.encodedNormal,1,z),W=nH(r,f,O,H,W,r.northTiles,r.northMeshes,Sn.SOUTH,z),I=z.minimumHeight,b=z.maximumHeight;let he=Fn.fromRectangle(s,I,b,n.tilingScheme.ellipsoid),ge=zi.geodeticLatitudeToMercatorAngle(s.south),fe=1/(zi.geodeticLatitudeToMercatorAngle(s.north)-ge),ye=(zi.geodeticLatitudeToMercatorAngle(w.latitude)-ge)*fe,xe=f.geodeticSurfaceNormalCartographic(NI,lJ),ve=On.octEncode(xe,sJ),Te=W;O.encode(H,W*F,he.center,U.fromElements(.5,.5,wf),S,ve,ye,xe),++W;let ke=W,Ge=ke<256?1:2,Ke=(ke-1)*3,tt=Ke*Ge,en=(H.length-ke*F)*Float32Array.BYTES_PER_ELEMENT,it;if(en>=tt){let Ft=ke*F*Float32Array.BYTES_PER_ELEMENT;it=ke<256?new Uint8Array(H.buffer,Ft,Ke):new Uint16Array(H.buffer,Ft,Ke)}else it=ke<256?new Uint8Array(Ke):new Uint16Array(Ke);H=new Float32Array(H.buffer,0,ke*F);let nn=0;for(B=0;B<ke-2;++B)it[nn++]=Te,it[nn++]=B,it[nn++]=B+1;it[nn++]=Te,it[nn++]=B,it[nn++]=0;let qt=[];for(B=Y;B>=Z;--B)qt.push(B);let Rt=[];for(B=$;B>=Y;--B)Rt.push(B);let Si=[];for(B=X;B>=$;--B)Si.push(B);let gi=[];for(gi.push(0),B=Te-1;B>=X;--B)gi.push(B);r.mesh=new Ud(O.center,H,it,Ke,ke,I,b,le.fromOrientedBoundingBox(he),cAt(e,he.center,s,I,b),O.stride,he,O,qt,Rt,Si,gi)}let p=t.context;r._destroyVertexArray(i),r.vertexArray=Gd._createVertexArrayForMesh(p,r.mesh),o.processImagery(n,e.terrainProvider,t,!0);let x=r.waterMaskTexture;if(r.waterMaskTexture=void 0,e.terrainProvider.hasWaterMask){let T=o._findAncestorTileWithTerrainData(n);l(T)&&l(T.data.waterMaskTexture)&&(r.waterMaskTexture=T.data.waterMaskTexture,++r.waterMaskTexture.referenceCount,o._computeWaterMaskTranslationAndScale(n,T,r.waterMaskTranslationAndScale))}l(x)&&(--x.referenceCount,x.referenceCount===0&&x.destroy())}function $4(e,t,n,i,o,r,s,a,c,u,f){let h=NI;h.longitude=D.lerp(t.west,t.east,r),h.latitude=D.lerp(t.south,t.north,s),h.height=a;let A=e.cartographicToCartesian(h,Aw),g;n.hasGeodeticSurfaceNormals&&(g=e.geodeticSurfaceNormal(A,lJ));let m=aJ;return m.x=r,m.y=s,n.encode(i,o*n.stride,A,m,a,c,u,g),f.minimumHeight=Math.min(f.minimumHeight,a),f.maximumHeight=Math.max(f.maximumHeight,a),o+1}var iH=new ae;function K2(e,t,n,i){let o=e.rectangle,r=t.rectangle;t.x===0&&n.x===1&&e.x===e.tilingScheme.getNumberOfXTilesAtLevel(e.level)-1?(o=ae.clone(e.rectangle,iH),o.west-=D.TWO_PI,o.east-=D.TWO_PI):e.x===0&&n.x===0&&t.x===t.tilingScheme.getNumberOfXTilesAtLevel(t.level)-1&&(o=ae.clone(e.rectangle,iH),o.west+=D.TWO_PI,o.east+=D.TWO_PI);let s=o.east-o.west,a=(r.west-o.west)/s,c=(r.east-o.west)/s,u=o.north-o.south,f=(r.south-o.south)/u,h=(r.north-o.south)/u,A=(n.x-a)/(c-a),g=(n.y-f)/(h-f);return Math.abs(A)<Math.EPSILON5?A=0:Math.abs(A-1)<Math.EPSILON5&&(A=1),Math.abs(g)<Math.EPSILON5?g=0:Math.abs(g-1)<Math.EPSILON5&&(g=1),i.x=A,i.y=g,i}var nAt=new U;function cJ(e,t,n,i,o){let r=e.encoding,s=e.vertices;if(o.height=r.decodeHeight(s,t),r.hasVertexNormals)r.getOctEncodedNormal(s,t,o.encodedNormal);else{let a=o.encodedNormal;a.x=0,a.y=0}}var iAt=new U,oAt=new d;function rAt(e,t,n,i,o,r,s,a,c,u){let f=i.encoding,h=i.vertices,A=K2(t,n,f.decodeTextureCoordinates(h,o,wf),wf),g=K2(t,n,f.decodeTextureCoordinates(h,r,aJ),aJ),m;c?m=(s-A.x)/(g.x-A.x):m=(a-A.y)/(g.y-A.y);let _=f.decodeHeight(h,o),y=f.decodeHeight(h,r),C=n.rectangle;NI.longitude=D.lerp(C.west,C.east,s),NI.latitude=D.lerp(C.south,C.north,a),u.height=NI.height=D.lerp(_,y,m);let E;if(f.hasVertexNormals){let I=f.getOctEncodedNormal(h,o,nAt),b=f.getOctEncodedNormal(h,r,iAt),S=On.octDecode(I.x,I.y,Aw),B=On.octDecode(b.x,b.y,oAt);E=d.lerp(S,B,m,Aw),d.normalize(E,E),On.octEncode(E,u.encodedNormal)}else E=e.geodeticSurfaceNormalCartographic(NI,Aw),On.octEncode(E,u.encodedNormal)}function H0e(e,t,n,i,o,r){r.height=o;let s=t.geodeticSurfaceNormalCartographic(NI,Aw);On.octEncode(s,r.encodedNormal)}function eH(e,t,n,i,o,r,s,a,c,u,f){if(z0e(e,t,a,s,!1,n,i,f)||z0e(e,t,u,c,!0,n,i,f))return f;let A;if(uJ(o,r))return n===0?i===0?A=r.eastIndicesNorthToSouth[0]:A=r.southIndicesEastToWest[0]:i===0?A=r.northIndicesWestToEast[0]:A=r.westIndicesSouthToNorth[0],cJ(r,A,n,i,f),f;let g;if(n===0?i===0?g=tH(e.westMeshes,e.westTiles,Sn.EAST,e.southMeshes,e.southTiles,Sn.NORTH,n,i):g=tH(e.northMeshes,e.northTiles,Sn.SOUTH,e.westMeshes,e.westTiles,Sn.EAST,n,i):i===0?g=tH(e.southMeshes,e.southTiles,Sn.NORTH,e.eastMeshes,e.eastTiles,Sn.WEST,n,i):g=tH(e.eastMeshes,e.eastTiles,Sn.WEST,e.northMeshes,e.northTiles,Sn.SOUTH,n,i),l(g))return H0e(e,t,n,i,g,f),f}function tH(e,t,n,i,o,r,s,a){let c=G0e(e,t,!1,n,s,a),u=G0e(i,o,!0,r,s,a);return l(c)&&l(u)?(c+u)*.5:l(c)?c:u}function nH(e,t,n,i,o,r,s,a,c){for(let u=0;u<r.length;++u)o=sAt(e,t,n,i,o,r[u],s[u],a,c);return o}function sAt(e,t,n,i,o,r,s,a,c){let u=r.rectangle;a===Sn.EAST&&e.tile.x===0?(u=ae.clone(r.rectangle,iH),u.west-=D.TWO_PI,u.east-=D.TWO_PI):a===Sn.WEST&&r.x===0&&(u=ae.clone(r.rectangle,iH),u.west+=D.TWO_PI,u.east+=D.TWO_PI);let f=e.tile.rectangle,h,A;o>0&&(n.decodeTextureCoordinates(i,o-1,wf),h=wf.x,A=wf.y);let g,m;switch(a){case Sn.WEST:g=s.westIndicesSouthToNorth,m=!1;break;case Sn.NORTH:g=s.northIndicesWestToEast,m=!0;break;case Sn.EAST:g=s.eastIndicesNorthToSouth,m=!1;break;case Sn.SOUTH:g=s.southIndicesEastToWest,m=!0;break}let _=r,y=e.tile,C=s.encoding,E=s.vertices,I=n.stride,b,S;C.hasWebMercatorT&&(b=zi.geodeticLatitudeToMercatorAngle(f.south),S=1/(zi.geodeticLatitudeToMercatorAngle(f.north)-b));for(let B=0;B<g.length;++B){let v=g[B],P=C.decodeTextureCoordinates(E,v,wf);K2(_,y,P,P);let M=P.x,L=P.y,p=m?M:L;if(p<0||p>1||Math.abs(M-h)<D.EPSILON5&&Math.abs(L-A)<D.EPSILON5)continue;let x=Math.abs(M)<D.EPSILON5||Math.abs(M-1)<D.EPSILON5,T=Math.abs(L)<D.EPSILON5||Math.abs(L-1)<D.EPSILON5;if(x&&T)continue;let w=C.decodePosition(E,v,Aw),R=C.decodeHeight(E,v),O;C.hasVertexNormals?O=C.getOctEncodedNormal(E,v,sJ):(O=sJ,O.x=0,O.y=0);let k=L;if(C.hasWebMercatorT){let z=D.lerp(f.south,f.north,L);k=(zi.geodeticLatitudeToMercatorAngle(z)-b)*S}let Q;n.hasGeodeticSurfaceNormals&&(Q=t.geodeticSurfaceNormal(w,lJ)),n.encode(i,o*I,w,P,R,O,k,Q),c.minimumHeight=Math.min(c.minimumHeight,R),c.maximumHeight=Math.max(c.maximumHeight,R),++o}return o}function G0e(e,t,n,i,o,r){let s,a,c;n?(s=0,a=e.length,c=1):(s=e.length-1,a=-1,c=-1);for(let u=s;u!==a;u+=c){let f=e[u],h=t[u];if(!uJ(h,f))continue;let A;switch(i){case Sn.WEST:A=f.westIndicesSouthToNorth;break;case Sn.SOUTH:A=f.southIndicesEastToWest;break;case Sn.EAST:A=f.eastIndicesNorthToSouth;break;case Sn.NORTH:A=f.northIndicesWestToEast;break}let g=A[n?0:A.length-1];if(l(g))return f.encoding.decodeHeight(f.vertices,g)}}function uJ(e,t){return l(t)&&(!l(e.data.fill)||!e.data.fill.changedThisFrame)}function z0e(e,t,n,i,o,r,s,a){let c,u,f,h,A,g=i[o?0:n.length-1],m=n[o?0:n.length-1];if(uJ(g,m)&&(r===0?s===0?(c=o?m.northIndicesWestToEast:m.eastIndicesNorthToSouth,u=o,f=o):(c=o?m.eastIndicesNorthToSouth:m.southIndicesEastToWest,u=!o,f=!1):s===0?(c=o?m.westIndicesSouthToNorth:m.northIndicesWestToEast,u=!o,f=!0):(c=o?m.southIndicesEastToWest:m.westIndicesSouthToNorth,u=o,f=!o),c.length>0)){h=o?0:c.length-1,A=c[h],m.encoding.decodeTextureCoordinates(m.vertices,A,wf);let _=K2(g,e.tile,wf,wf);if(_.x===r&&_.y===s)return cJ(m,A,r,s,a),!0;if(h=Wo(c,u?r:s,function(y,C){m.encoding.decodeTextureCoordinates(m.vertices,y,wf);let E=K2(g,e.tile,wf,wf);return f?u?E.x-r:E.y-s:u?r-E.x:s-E.y}),h<0){if(h=~h,h>0&&h<c.length)return rAt(t,g,e.tile,m,c[h-1],c[h],r,s,u,a),!0}else return cJ(m,c[h],r,s,a),!0}return!1}var aAt=[new d,new d,new d,new d];function cAt(e,t,n,i,o,r){let s=e.quadtree._occluders.ellipsoid,a=s.ellipsoid,c=aAt;return d.fromRadians(n.west,n.south,o,a,c[0]),d.fromRadians(n.east,n.south,o,a,c[1]),d.fromRadians(n.west,n.north,o,a,c[2]),d.fromRadians(n.east,n.north,o,a,c[3]),s.computeHorizonCullingPointPossiblyUnderEllipsoid(t,c,i,r)}var gw=pw;function _r(e){this.lightingFadeOutDistance=65e5,this.lightingFadeInDistance=9e6,this.hasWaterMask=!1,this.showWaterEffect=!1,this.oceanNormalMap=void 0,this.zoomedOutOceanSpecularIntensity=.5,this.enableLighting=!1,this.dynamicAtmosphereLighting=!1,this.dynamicAtmosphereLightingFromSun=!1,this.showGroundAtmosphere=!1,this.shadows=Bn.RECEIVE_ONLY,this.vertexShadowDarkness=.3,this.fillHighlightColor=void 0,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this.showSkirts=!0,this.backFaceCulling=!0,this.undergroundColor=void 0,this.undergroundColorAlphaByDistance=void 0,this.lambertDiffuseMultiplier=0,this.materialUniformMap=void 0,this._materialUniformMap=void 0,this._quadtree=void 0,this._terrainProvider=e.terrainProvider,this._imageryLayers=e.imageryLayers,this._surfaceShaderSet=e.surfaceShaderSet,this._renderState=void 0,this._blendRenderState=void 0,this._disableCullingRenderState=void 0,this._disableCullingBlendRenderState=void 0,this._errorEvent=new _e,this._removeLayerAddedListener=this._imageryLayers.layerAdded.addEventListener(_r.prototype._onLayerAdded,this),this._removeLayerRemovedListener=this._imageryLayers.layerRemoved.addEventListener(_r.prototype._onLayerRemoved,this),this._removeLayerMovedListener=this._imageryLayers.layerMoved.addEventListener(_r.prototype._onLayerMoved,this),this._removeLayerShownListener=this._imageryLayers.layerShownOrHidden.addEventListener(_r.prototype._onLayerShownOrHidden,this),this._imageryLayersUpdatedEvent=new _e,this._layerOrderChanged=!1,this._tilesToRenderByTextureCount=[],this._drawCommands=[],this._uniformMaps=[],this._usedDrawCommands=0,this._vertexArraysToDestroy=[],this._debug={wireframe:!1,boundingSphereTile:void 0},this._baseColor=void 0,this._firstPassInitialColor=void 0,this.baseColor=new G(0,0,.5,1),this._clippingPlanes=void 0,this._clippingPolygons=void 0,this.cartographicLimitRectangle=ae.clone(ae.MAX_VALUE),this._hasLoadedTilesThisFrame=!1,this._hasFillTilesThisFrame=!1,this._oldVerticalExaggeration=void 0,this._oldVerticalExaggerationRelativeHeight=void 0}Object.defineProperties(_r.prototype,{baseColor:{get:function(){return this._baseColor},set:function(e){this._baseColor=e,this._firstPassInitialColor=se.fromColor(e,this._firstPassInitialColor)}},quadtree:{get:function(){return this._quadtree},set:function(e){this._quadtree=e}},tilingScheme:{get:function(){if(l(this._terrainProvider))return this._terrainProvider.tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},imageryLayersUpdatedEvent:{get:function(){return this._imageryLayersUpdatedEvent}},terrainProvider:{get:function(){return this._terrainProvider},set:function(e){this._terrainProvider!==e&&(this._terrainProvider=e,l(this._quadtree)&&this._quadtree.invalidateAllTiles())}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Fs.setOwner(e,this,"_clippingPlanes")}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){wh.setOwner(e,this,"_clippingPolygons")}}});function lAt(e,t){let n=e.loadingImagery;l(n)||(n=e.readyImagery);let i=t.loadingImagery;return l(i)||(i=t.readyImagery),n.imageryLayer._layerIndex-i.imageryLayer._layerIndex}_r.prototype.update=function(e){this._imageryLayers._update()};function uAt(e,t){let n=t.creditDisplay,i=e._terrainProvider;l(i)&&l(i.credit)&&n.addCreditToNextFrame(i.credit);let o=e._imageryLayers;for(let r=0,s=o.length;r<s;++r){let a=o.get(r);a.ready&&a.show&&l(a.imageryProvider.credit)&&n.addCreditToNextFrame(a.imageryProvider.credit)}}_r.prototype.initialize=function(e){this._imageryLayers.queueReprojectionCommands(e),this._layerOrderChanged&&(this._layerOrderChanged=!1,this._quadtree.forEachLoadedTile(function(i){i.data.imagery.sort(lAt)})),uAt(this,e);let t=this._vertexArraysToDestroy,n=t.length;for(let i=0;i<n;++i)Gd._freeVertexArray(t[i]);t.length=0};_r.prototype.beginUpdate=function(e){let t=this._tilesToRenderByTextureCount;for(let o=0,r=t.length;o<r;++o){let s=t[o];l(s)&&(s.length=0)}let n=this._clippingPlanes;l(n)&&n.enabled&&n.update(e);let i=this._clippingPolygons;l(i)&&i.enabled&&(i.update(e),i.queueCommands(e)),this._usedDrawCommands=0,this._hasLoadedTilesThisFrame=!1,this._hasFillTilesThisFrame=!1};_r.prototype.endUpdate=function(e){if(!l(this._renderState)){this._renderState=Ue.fromCache({cull:{enabled:!0},depthTest:{enabled:!0,func:Qa.LESS}}),this._blendRenderState=Ue.fromCache({cull:{enabled:!0},depthTest:{enabled:!0,func:Qa.LESS_OR_EQUAL},blending:pn.ALPHA_BLEND});let s=ze(this._renderState,!0);s.cull.enabled=!1,this._disableCullingRenderState=Ue.fromCache(s),s=ze(this._blendRenderState,!0),s.cull.enabled=!1,this._disableCullingBlendRenderState=Ue.fromCache(s)}this._hasFillTilesThisFrame&&this._hasLoadedTilesThisFrame&&gw.updateFillTiles(this,this._quadtree._tilesToRender,e,this._vertexArraysToDestroy);let t=this.quadtree,n=e.verticalExaggeration,i=e.verticalExaggerationRelativeHeight,o=this._oldVerticalExaggeration!==n||this._oldVerticalExaggerationRelativeHeight!==i;this._oldVerticalExaggeration=n,this._oldVerticalExaggerationRelativeHeight=i,o&&t.forEachLoadedTile(function(s){s.data.updateExaggeration(s,e,t)});let r=this._tilesToRenderByTextureCount;for(let s=0,a=r.length;s<a;++s){let c=r[s];if(l(c))for(let u=0,f=c.length;u<f;++u){let h=c[u],A=h.data.tileBoundingRegion;NAt(this,h,e),e.minimumTerrainHeight=Math.min(e.minimumTerrainHeight,A.minimumHeight)}}};function K0e(e,t){let n=t.globeTranslucencyState;if(n.translucent){let i=e.renderState.blending.enabled;n.pushDerivedCommands(e,i,t)}else t.commandList.push(e)}_r.prototype.updateForPick=function(e){let t=this._drawCommands;for(let n=0,i=this._usedDrawCommands;n<i;++n)K0e(t[n],e)};_r.prototype.cancelReprojections=function(){this._imageryLayers.cancelReprojections()};_r.prototype.getLevelMaximumGeometricError=function(e){return l(this._terrainProvider)?this._terrainProvider.getLevelMaximumGeometricError(e):0};_r.prototype.loadTile=function(e,t){let n=t.data,i=!0,o;l(n)&&(i=n.boundingVolumeSourceTile!==t||t._lastSelectionResult===ai.CULLED_BUT_NEEDED,o=n.terrainState),Gd.processStateMachine(t,e,this.terrainProvider,this._imageryLayers,this.quadtree,this._vertexArraysToDestroy,i),n=t.data,i&&o!==t.data.terrainState&&this.computeTileVisibility(t,e,this.quadtree.occluders)!==Mr.NONE&&n.boundingVolumeSourceTile===t&&(i=!1,Gd.processStateMachine(t,e,this.terrainProvider,this._imageryLayers,this.quadtree,this._vertexArraysToDestroy,i))};var fAt=new le,X0e=new ae,dAt=new ae,hAt=new Ae;function sH(e,t){if(t.west<t.east)return t;let n=ae.clone(t,dAt);return ae.center(e,hAt).longitude>0?n.east=D.PI:n.west=-D.PI,n}function J0e(e,t){if(t.cameraUnderground||t.globeTranslucencyState.translucent)return!0;if(e.backFaceCulling)return!1;let n=e._clippingPlanes;if(l(n)&&n.enabled)return!0;let i=e._clippingPolygons;return!!(l(i)&&i.enabled||!ae.equals(e.cartographicLimitRectangle,ae.MAX_VALUE))}_r.prototype.computeTileVisibility=function(e,t,n){let i=this.computeDistanceToTile(e,t);e._distance=i;let o=J0e(this,t);if(t.fog.enabled&&!o&&D.fog(i,t.fog.density)>=1)return Mr.NONE;let r=e.data,s=r.tileBoundingRegion;if(r.boundingVolumeSourceTile===void 0)return Mr.PARTIAL;let a=t.cullingVolume,c=s.boundingVolume;l(c)||(c=s.boundingSphere),r.clippedByBoundaries=!1;let u=sH(e.rectangle,this.cartographicLimitRectangle),f=ae.simpleIntersection(u,e.rectangle,X0e);if(!l(f))return Mr.NONE;if(ae.equals(f,e.rectangle)||(r.clippedByBoundaries=!0),t.mode!==ie.SCENE3D&&(c=fAt,le.fromRectangleWithHeights2D(e.rectangle,t.mapProjection,s.minimumHeight,s.maximumHeight,c),d.fromElements(c.center.z,c.center.x,c.center.y,c.center),t.mode===ie.MORPHING&&l(r.renderedMesh)&&(c=le.union(s.boundingSphere,c,c))),!l(c))return Mr.PARTIAL;let h=this._clippingPlanes;if(l(h)&&h.enabled){let y=h.computeIntersectionWithBoundingVolume(c);if(e.isClipped=y!==tn.INSIDE,y===tn.OUTSIDE)return Mr.NONE}let A=this._clippingPolygons;if(l(A)&&A.enabled){let y=A.computeIntersectionWithBoundingVolume(s);e.isClipped=y!==tn.OUTSIDE}let g,m=a.computeVisibility(c);if(m===tn.OUTSIDE?g=Mr.NONE:m===tn.INTERSECTING?g=Mr.PARTIAL:m===tn.INSIDE&&(g=Mr.FULL),g===Mr.NONE)return g;let _=t.mode===ie.SCENE3D&&t.camera.frustum instanceof An;if(t.mode===ie.SCENE3D&&!_&&l(n)&&!o){let y=r.occludeePointInScaledSpace;return!l(y)||n.ellipsoid.isScaledSpacePointVisiblePossiblyUnderEllipsoid(y,s.minimumHeight)?g:Mr.NONE}return g};_r.prototype.canRefine=function(e){return l(e.data.terrainData)?!0:this.terrainProvider.getTileDataAvailable(e.x*2,e.y*2,e.level+1)!==void 0};var mAt=[],AAt=[];_r.prototype.canRenderWithoutLosingDetail=function(e,t){let n=e.data,i=mAt;i.length=this._imageryLayers.length;let o=!1,r=!1,s;l(n)&&(o=n.terrainState===To.READY,r=!0,s=n.imagery);let a,c;for(a=0,c=i.length;a<c;++a)i[a]=r;if(l(s))for(a=0,c=s.length;a<c;++a){let h=s[a],A=h.loadingImagery,g=!l(A)||A.state===qn.FAILED||A.state===qn.INVALID,m=(h.loadingImagery||h.readyImagery).imageryLayer._layerIndex;i[m]=g&&i[m]}let u=this.quadtree._lastSelectionFrameNumber,f=AAt;for(f.length=0,f.push(e.southwestChild,e.southeastChild,e.northwestChild,e.northeastChild);f.length>0;){let h=f.pop(),A=h._lastSelectionResultFrame===u?h._lastSelectionResult:ai.NONE;if(A===ai.RENDERED){let g=h.data;if(!l(g))continue;if(!o&&h.data.terrainState===To.READY)return!1;let m=h.data.imagery;for(a=0,c=m.length;a<c;++a){let _=m[a],y=_.loadingImagery,C=!l(y)||y.state===qn.FAILED||y.state===qn.INVALID,E=(_.loadingImagery||_.readyImagery).imageryLayer._layerIndex;if(C&&!i[E])return!1}}else A===ai.REFINED&&f.push(h.southwestChild,h.southeastChild,h.northwestChild,h.northeastChild)}return!0};var pAt=new d;_r.prototype.computeTileLoadPriority=function(e,t){let n=e.data;if(n===void 0)return 0;let i=n.tileBoundingRegion.boundingVolume;if(i===void 0)return 0;let o=t.camera.positionWC,r=t.camera.directionWC,s=d.subtract(i.center,o,pAt),a=d.magnitude(s);return a<D.EPSILON5?0:(d.divideByScalar(s,a,s),(1-d.dot(s,r))*e._distance)};var W0e=new N,rH=new N,gAt=new se,_At=new se,yAt=new se,CAt=new d,j0e=new d,EAt=new d,IAt=new d;_r.prototype.showTileThisFrame=function(e,t){let n=0,i=e.data.imagery;for(let a=0,c=i.length;a<c;++a){let u=i[a];l(u.readyImagery)&&u.readyImagery.imageryLayer.alpha!==0&&++n}let o=this._tilesToRenderByTextureCount[n];l(o)||(o=[],this._tilesToRenderByTextureCount[n]=o),o.push(e);let r=e.data;l(r.vertexArray)?this._hasLoadedTilesThisFrame=!0:this._hasFillTilesThisFrame=!0;let s=this._debug;++s.tilesRendered,s.texturesRendered+=n};var xAt=[new d,new d,new d,new d];function Y0e(e,t,n,i,o,r){let s=e.quadtree._occluders.ellipsoid,a=s.ellipsoid,c=xAt;return d.fromRadians(n.west,n.south,o,a,c[0]),d.fromRadians(n.east,n.south,o,a,c[1]),d.fromRadians(n.west,n.north,o,a,c[2]),d.fromRadians(n.east,n.north,o,a,c[3]),s.computeHorizonCullingPointPossiblyUnderEllipsoid(t,c,i,r)}_r.prototype.computeDistanceToTile=function(e,t){bAt(e,this,t);let n=e.data;if(n.boundingVolumeSourceTile===void 0)return 9999999999;let o=n.tileBoundingRegion,r=o.minimumHeight,s=o.maximumHeight;if(n.boundingVolumeSourceTile!==e){let c=t.camera.positionCartographic.height,u=Math.abs(c-r),f=Math.abs(c-s);u>f?(o.minimumHeight=r,o.maximumHeight=r):(o.minimumHeight=s,o.maximumHeight=s)}let a=o.distanceToCamera(t);return o.minimumHeight=r,o.maximumHeight=s,a};function bAt(e,t,n){let i=e.data;i===void 0&&(i=e.data=new Gd);let o=e.tilingScheme.ellipsoid;i.tileBoundingRegion===void 0&&(i.tileBoundingRegion=new sf({computeBoundingVolumes:!1,rectangle:e.rectangle,ellipsoid:o,minimumHeight:0,maximumHeight:0}));let r=i.tileBoundingRegion,s=r.minimumHeight,a=r.maximumHeight,c=!1,u=e,f=i.mesh,h=i.terrainData;if(f!==void 0&&f.minimumHeight!==void 0&&f.maximumHeight!==void 0)r.minimumHeight=f.minimumHeight,r.maximumHeight=f.maximumHeight,c=!0;else if(h!==void 0&&h._minimumHeight!==void 0&&h._maximumHeight!==void 0)r.minimumHeight=h._minimumHeight,r.maximumHeight=h._maximumHeight;else{r.minimumHeight=Number.NaN,r.maximumHeight=Number.NaN;let A=e.parent;for(;A!==void 0;){let g=A.data;if(g!==void 0){let m=g.mesh,_=g.terrainData;if(m!==void 0&&m.minimumHeight!==void 0&&m.maximumHeight!==void 0){r.minimumHeight=m.minimumHeight,r.maximumHeight=m.maximumHeight;break}else if(_!==void 0&&_._minimumHeight!==void 0&&_._maximumHeight!==void 0){r.minimumHeight=_._minimumHeight,r.maximumHeight=_._maximumHeight;break}}A=A.parent}u=A}if(u!==void 0){let A=n.verticalExaggeration,g=n.verticalExaggerationRelativeHeight;if(A!==1&&(c=!1,r.minimumHeight=Ur.getHeight(r.minimumHeight,A,g),r.maximumHeight=Ur.getHeight(r.maximumHeight,A,g)),c)i.boundingVolumeIsFromMesh||(r._orientedBoundingBox=Fn.clone(f.orientedBoundingBox,r._orientedBoundingBox),r._boundingSphere=le.clone(f.boundingSphere3D,r._boundingSphere),i.occludeePointInScaledSpace=d.clone(f.occludeePointInScaledSpace,i.occludeePointInScaledSpace),l(i.occludeePointInScaledSpace)||(i.occludeePointInScaledSpace=Y0e(t,r._orientedBoundingBox.center,e.rectangle,r.minimumHeight,r.maximumHeight,i.occludeePointInScaledSpace)));else{let _=r._orientedBoundingBox===void 0||r._boundingSphere===void 0;(r.minimumHeight!==s||r.maximumHeight!==a||_)&&(r.computeBoundingVolumes(o),i.occludeePointInScaledSpace=Y0e(t,r._orientedBoundingBox.center,e.rectangle,r.minimumHeight,r.maximumHeight,i.occludeePointInScaledSpace))}i.boundingVolumeSourceTile=u,i.boundingVolumeIsFromMesh=c}else i.boundingVolumeSourceTile=void 0,i.boundingVolumeIsFromMesh=!1}_r.prototype.isDestroyed=function(){return!1};_r.prototype.destroy=function(){return this._tileProvider=this._tileProvider&&this._tileProvider.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._clippingPolygons=this._clippingPolygons&&this._clippingPolygons.destroy(),this._removeLayerAddedListener=this._removeLayerAddedListener&&this._removeLayerAddedListener(),this._removeLayerRemovedListener=this._removeLayerRemovedListener&&this._removeLayerRemovedListener(),this._removeLayerMovedListener=this._removeLayerMovedListener&&this._removeLayerMovedListener(),this._removeLayerShownListener=this._removeLayerShownListener&&this._removeLayerShownListener(),ue(this)};function TAt(e,t,n){return function(i){let o,r,s=-1,a=i.data.imagery,c=a.length,u;for(u=0;u<c;++u)if(o=a[u],r=o.readyImagery??o.loadingImagery,r.imageryLayer===t){s=u;break}if(s!==-1){let f=s+e;if(o=a[f],r=l(o)?o.readyImagery??o.loadingImagery:void 0,!l(r)||r.imageryLayer!==t)return!t._createTileImagerySkeletons(i,n,f);for(u=s;u<f;++u)a[u].freeResources();a.splice(s,e)}return!0}}_r.prototype._onLayerAdded=function(e,t){if(!this.isDestroyed()&&e.show){let n=this._terrainProvider,i=this,o=this._imageryLayersUpdatedEvent,r=function(){e._imageryCache={},i._quadtree.forEachLoadedTile(function(s){if(l(s._loadedCallbacks[e._layerIndex]))return;let a,c=s.data.imagery,u=c.length,f=-1,h=0;for(a=0;a<u;++a){let g=c[a];if((g.readyImagery??g.loadingImagery).imageryLayer===e)f===-1&&(f=a),++h;else if(f!==-1)break}if(f===-1)return;let A=f+h;e._createTileImagerySkeletons(s,n,A)&&(s._loadedCallbacks[e._layerIndex]=TAt(h,e,n),s.state=Ta.LOADING)})};if(e.ready){let s=e.imageryProvider;s._reload=r}this._quadtree.forEachLoadedTile(function(s){e._createTileImagerySkeletons(s,n)&&(s.state=Ta.LOADING,s.level!==0&&(s._lastSelectionResultFrame!==i.quadtree._lastSelectionFrameNumber||s._lastSelectionResult!==ai.RENDERED)&&(s.renderable=!1))}),this._layerOrderChanged=!0,o.raiseEvent()}};_r.prototype._onLayerRemoved=function(e,t){this._quadtree.forEachLoadedTile(function(n){let i=n.data.imagery,o=-1,r=0;for(let s=0,a=i.length;s<a;++s){let c=i[s],u=c.loadingImagery;if(l(u)||(u=c.readyImagery),u.imageryLayer===e)o===-1&&(o=s),c.freeResources(),++r;else if(o!==-1)break}o!==-1&&i.splice(o,r)}),l(e.imageryProvider)&&(e.imageryProvider._reload=void 0),this._imageryLayersUpdatedEvent.raiseEvent()};_r.prototype._onLayerMoved=function(e,t,n){this._layerOrderChanged=!0,this._imageryLayersUpdatedEvent.raiseEvent()};_r.prototype._onLayerShownOrHidden=function(e,t,n){n?this._onLayerAdded(e,t):this._onLayerRemoved(e,t)};var SAt=new N,wAt=new N;function q0e(e,t){let n={u_initialColor:function(){return this.properties.initialColor},u_fillHighlightColor:function(){return this.properties.fillHighlightColor},u_zoomedOutOceanSpecularIntensity:function(){return this.properties.zoomedOutOceanSpecularIntensity},u_oceanNormalMap:function(){return this.properties.oceanNormalMap},u_atmosphereLightIntensity:function(){return this.properties.atmosphereLightIntensity},u_atmosphereRayleighCoefficient:function(){return this.properties.atmosphereRayleighCoefficient},u_atmosphereMieCoefficient:function(){return this.properties.atmosphereMieCoefficient},u_atmosphereRayleighScaleHeight:function(){return this.properties.atmosphereRayleighScaleHeight},u_atmosphereMieScaleHeight:function(){return this.properties.atmosphereMieScaleHeight},u_atmosphereMieAnisotropy:function(){return this.properties.atmosphereMieAnisotropy},u_lightingFadeDistance:function(){return this.properties.lightingFadeDistance},u_nightFadeDistance:function(){return this.properties.nightFadeDistance},u_center3D:function(){return this.properties.center3D},u_verticalExaggerationAndRelativeHeight:function(){return this.properties.verticalExaggerationAndRelativeHeight},u_tileRectangle:function(){return this.properties.tileRectangle},u_modifiedModelView:function(){let i=e.context.uniformState.view,o=N.multiplyByPoint(i,this.properties.rtc,j0e);return N.setTranslation(i,o,W0e),W0e},u_modifiedModelViewProjection:function(){let i=e.context.uniformState.view,o=e.context.uniformState.projection,r=N.multiplyByPoint(i,this.properties.rtc,j0e);return N.setTranslation(i,r,rH),N.multiply(o,rH,rH),rH},u_dayTextures:function(){return this.properties.dayTextures},u_dayTextureTranslationAndScale:function(){return this.properties.dayTextureTranslationAndScale},u_dayTextureTexCoordsRectangle:function(){return this.properties.dayTextureTexCoordsRectangle},u_dayTextureUseWebMercatorT:function(){return this.properties.dayTextureUseWebMercatorT},u_dayTextureAlpha:function(){return this.properties.dayTextureAlpha},u_dayTextureNightAlpha:function(){return this.properties.dayTextureNightAlpha},u_dayTextureDayAlpha:function(){return this.properties.dayTextureDayAlpha},u_dayTextureBrightness:function(){return this.properties.dayTextureBrightness},u_dayTextureContrast:function(){return this.properties.dayTextureContrast},u_dayTextureHue:function(){return this.properties.dayTextureHue},u_dayTextureSaturation:function(){return this.properties.dayTextureSaturation},u_dayTextureOneOverGamma:function(){return this.properties.dayTextureOneOverGamma},u_dayIntensity:function(){return this.properties.dayIntensity},u_southAndNorthLatitude:function(){return this.properties.southAndNorthLatitude},u_southMercatorYAndOneOverHeight:function(){return this.properties.southMercatorYAndOneOverHeight},u_waterMask:function(){return this.properties.waterMask},u_waterMaskTranslationAndScale:function(){return this.properties.waterMaskTranslationAndScale},u_minMaxHeight:function(){return this.properties.minMaxHeight},u_scaleAndBias:function(){return this.properties.scaleAndBias},u_dayTextureSplit:function(){return this.properties.dayTextureSplit},u_dayTextureCutoutRectangles:function(){return this.properties.dayTextureCutoutRectangles},u_clippingPlanes:function(){let i=t._clippingPlanes;return l(i)&&l(i.texture)?i.texture:e.context.defaultTexture},u_cartographicLimitRectangle:function(){return this.properties.localizedCartographicLimitRectangle},u_clippingPlanesMatrix:function(){let i=t._clippingPlanes,o=l(i)?N.multiply(e.context.uniformState.view,i.modelMatrix,SAt):N.IDENTITY;return N.inverseTranspose(o,wAt)},u_clippingPlanesEdgeStyle:function(){let i=this.properties.clippingPlanesEdgeColor;return i.alpha=this.properties.clippingPlanesEdgeWidth,i},u_clippingDistance:function(){let i=t._clippingPolygons.clippingTexture;return l(i)?i:e.context.defaultTexture},u_clippingExtents:function(){let i=t._clippingPolygons.extentsTexture;return l(i)?i:e.context.defaultTexture},u_minimumBrightness:function(){return e.fog.minimumBrightness},u_hsbShift:function(){return this.properties.hsbShift},u_colorsToAlpha:function(){return this.properties.colorsToAlpha},u_frontFaceAlphaByDistance:function(){return this.properties.frontFaceAlphaByDistance},u_backFaceAlphaByDistance:function(){return this.properties.backFaceAlphaByDistance},u_translucencyRectangle:function(){return this.properties.localizedTranslucencyRectangle},u_undergroundColor:function(){return this.properties.undergroundColor},u_undergroundColorAlphaByDistance:function(){return this.properties.undergroundColorAlphaByDistance},u_lambertDiffuseMultiplier:function(){return this.properties.lambertDiffuseMultiplier},u_vertexShadowDarkness:function(){return this.properties.vertexShadowDarkness},properties:{initialColor:new se(0,0,.5,1),fillHighlightColor:new G(0,0,0,0),zoomedOutOceanSpecularIntensity:.5,oceanNormalMap:void 0,lightingFadeDistance:new U(65e5,9e6),nightFadeDistance:new U(1e7,4e7),atmosphereLightIntensity:10,atmosphereRayleighCoefficient:new d(55e-7,13e-6,284e-7),atmosphereMieCoefficient:new d(21e-6,21e-6,21e-6),atmosphereRayleighScaleHeight:1e4,atmosphereMieScaleHeight:3200,atmosphereMieAnisotropy:.9,hsbShift:new d,center3D:void 0,rtc:new d,modifiedModelView:new N,tileRectangle:new se,verticalExaggerationAndRelativeHeight:new U(1,0),dayTextures:[],dayTextureTranslationAndScale:[],dayTextureTexCoordsRectangle:[],dayTextureUseWebMercatorT:[],dayTextureAlpha:[],dayTextureNightAlpha:[],dayTextureDayAlpha:[],dayTextureBrightness:[],dayTextureContrast:[],dayTextureHue:[],dayTextureSaturation:[],dayTextureOneOverGamma:[],dayTextureSplit:[],dayTextureCutoutRectangles:[],dayIntensity:0,colorsToAlpha:[],southAndNorthLatitude:new U,southMercatorYAndOneOverHeight:new U,waterMask:void 0,waterMaskTranslationAndScale:new se,minMaxHeight:new U,scaleAndBias:new N,clippingPlanesEdgeColor:G.clone(G.WHITE),clippingPlanesEdgeWidth:0,localizedCartographicLimitRectangle:new se,frontFaceAlphaByDistance:new se,backFaceAlphaByDistance:new se,localizedTranslucencyRectangle:new se,undergroundColor:G.clone(G.TRANSPARENT),undergroundColorAlphaByDistance:new se,lambertDiffuseMultiplier:0,vertexShadowDarkness:0}};return l(t.materialUniformMap)?Tt(n,t.materialUniformMap):n}function BAt(e,t,n){let i=n.data,o,r;if(l(i.vertexArray)?(o=i.mesh,r=i.vertexArray):l(i.fill)&&l(i.fill.vertexArray)&&(o=i.fill.mesh,r=i.fill.vertexArray),!(!l(o)||!l(r))){if(l(i.wireframeVertexArray)){if(i.wireframeVertexArray.mesh===o)return;i.wireframeVertexArray.destroy(),i.wireframeVertexArray=void 0}i.wireframeVertexArray=DAt(e,r,o),i.wireframeVertexArray.mesh=o}}function DAt(e,t,n){let o={indices:n.indices,primitiveType:Me.TRIANGLES};Vn.toWireframe(o);let r=o.indices,s=Ct.createIndexBuffer({context:e,typedArray:r,usage:Qe.STATIC_DRAW,indexDatatype:Oe.fromSizeInBytes(r.BYTES_PER_ELEMENT)});return new li({context:e,attributes:t._attributes,indexBuffer:s})}var Z0e,$0e,aH;(function(){let e=new Pt({geometry:ah.fromDimensions({dimensions:new d(2,2,2)})}),t=new Pt({geometry:new dg({radius:1})}),n=new N,i,o;function r(s){return new Qn({geometryInstances:s,appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})}Z0e=function(s,a){return s===i||(aH(),i=s,n=N.fromRotationTranslation(s.halfAxes,s.center,n),e.modelMatrix=n,e.attributes.color=$t.fromColor(a),o=r(e)),o},$0e=function(s,a){return s===i||(aH(),i=s,n=N.fromTranslation(s.center,n),n=N.multiplyByUniformScale(n,s.radius,n),t.modelMatrix=n,t.attributes.color=$t.fromColor(a),o=r(t)),o},aH=function(){l(o)&&(o.destroy(),o=void 0,i=void 0)}})();var vAt=new se(0,0,0,0),PAt={frameState:void 0,surfaceTile:void 0,numberOfDayTextures:void 0,applyBrightness:void 0,applyContrast:void 0,applyHue:void 0,applySaturation:void 0,applyGamma:void 0,applyAlpha:void 0,applyDayNightAlpha:void 0,applySplit:void 0,showReflectiveOcean:void 0,showOceanWaves:void 0,enableLighting:void 0,dynamicAtmosphereLighting:void 0,dynamicAtmosphereLightingFromSun:void 0,showGroundAtmosphere:void 0,perFragmentGroundAtmosphere:void 0,hasVertexNormals:void 0,useWebMercatorProjection:void 0,enableFog:void 0,enableClippingPlanes:void 0,clippingPlanes:void 0,enableClippingPolygons:void 0,clippingPolygons:void 0,clippedByBoundaries:void 0,hasImageryLayerCutout:void 0,colorCorrect:void 0,colorToAlpha:void 0,hasGeodeticSurfaceNormals:void 0,hasExaggeration:void 0},RAt=G.TRANSPARENT,MAt=new jt;function NAt(e,t,n){let i=t.data;l(i.vertexArray)||(i.fill===void 0&&(i.fill=new gw(t)),i.fill.update(e,n));let o=n.creditDisplay,r=i.terrainData;if(l(r)&&l(r.credits)){let Ft=r.credits;for(let St=0,oi=Ft.length;St<oi;++St)o.addCreditToNextFrame(Ft[St])}let s=Yt.maximumTextureImageUnits,a=i.waterMaskTexture,c=i.waterMaskTranslationAndScale;!l(a)&&l(i.fill)&&(a=i.fill.waterMaskTexture,c=i.fill.waterMaskTranslationAndScale);let u=n.cameraUnderground,f=n.globeTranslucencyState,h=f.translucent,A=f.frontFaceAlphaByDistance,g=f.backFaceAlphaByDistance,m=f.rectangle,_=e.undergroundColor??RAt,y=e.undergroundColorAlphaByDistance??MAt,C=J0e(e,n)&&n.mode===ie.SCENE3D&&_.alpha>0&&(y.nearValue>0||y.farValue>0),E=e.lambertDiffuseMultiplier,I=e.vertexShadowDarkness,b=e.hasWaterMask&&l(a),S=b&&e.showWaterEffect,B=e.oceanNormalMap,v=S&&l(B),P=e.terrainProvider,M=l(P)&&e.terrainProvider.hasVertexNormals,L=n.fog.enabled&&n.fog.renderable&&!u,p=e.showGroundAtmosphere&&n.mode===ie.SCENE3D,x=Bn.castShadows(e.shadows)&&!h,T=Bn.receiveShadows(e.shadows)&&!h,w=e.hueShift,R=e.saturationShift,O=e.brightnessShift,k=!(D.equalsEpsilon(w,0,D.EPSILON7)&&D.equalsEpsilon(R,0,D.EPSILON7)&&D.equalsEpsilon(O,0,D.EPSILON7)),Q=!1;if(p){let Ft=d.magnitude(n.camera.positionWC),St=e.nightFadeOutDistance;Q=Ft>St}b&&--s,v&&--s,l(n.shadowState)&&n.shadowState.shadowsEnabled&&--s,l(e.clippingPlanes)&&e.clippingPlanes.enabled&&--s,l(e.clippingPolygons)&&e.clippingPolygons.enabled&&(--s,--s),s-=f.numberOfTextureUniforms;let z=i.renderedMesh,F=z.center,H=z.encoding,W=i.tileBoundingRegion,Z=n.verticalExaggeration,Y=n.verticalExaggerationRelativeHeight,$=Z!==1,X=H.hasGeodeticSurfaceNormals,he=gAt,ge=0,fe=0,ye=0,xe=0,ve=!1;if(n.mode!==ie.SCENE3D){let Ft=n.mapProjection,St=Ft.project(ae.southwest(t.rectangle),EAt),oi=Ft.project(ae.northeast(t.rectangle),IAt);if(he.x=St.x,he.y=St.y,he.z=oi.x,he.w=oi.y,n.mode!==ie.MORPHING&&(F=CAt,F.x=0,F.y=(he.z+he.x)*.5,F.z=(he.w+he.y)*.5,he.x-=F.y,he.y-=F.z,he.z-=F.y,he.w-=F.z),n.mode===ie.SCENE2D&&H.quantization===ba.BITS12){let Et=1/(Math.pow(2,12)-1)*.5,Lo=(he.z-he.x)*Et,Ho=(he.w-he.y)*Et;he.x-=Lo,he.y-=Ho,he.z+=Lo,he.w+=Ho}Ft instanceof zi&&(ge=t.rectangle.south,fe=t.rectangle.north,ye=zi.geodeticLatitudeToMercatorAngle(ge),xe=1/(zi.geodeticLatitudeToMercatorAngle(fe)-ye),ve=!0)}let Te=PAt;Te.frameState=n,Te.surfaceTile=i,Te.hasWaterMask=b,Te.showReflectiveOcean=S,Te.showOceanWaves=v,Te.enableLighting=e.enableLighting,Te.dynamicAtmosphereLighting=e.dynamicAtmosphereLighting,Te.dynamicAtmosphereLightingFromSun=e.dynamicAtmosphereLightingFromSun,Te.showGroundAtmosphere=p,Te.atmosphereLightIntensity=e.atmosphereLightIntensity,Te.atmosphereRayleighCoefficient=e.atmosphereRayleighCoefficient,Te.atmosphereMieCoefficient=e.atmosphereMieCoefficient,Te.atmosphereRayleighScaleHeight=e.atmosphereRayleighScaleHeight,Te.atmosphereMieScaleHeight=e.atmosphereMieScaleHeight,Te.atmosphereMieAnisotropy=e.atmosphereMieAnisotropy,Te.perFragmentGroundAtmosphere=Q,Te.hasVertexNormals=M,Te.useWebMercatorProjection=ve,Te.clippedByBoundaries=i.clippedByBoundaries,Te.hasGeodeticSurfaceNormals=X,Te.hasExaggeration=$;let ke=i.imagery,Ge=0,Ke=ke.length,tt=e.showSkirts&&!u&&!h,en=e.backFaceCulling&&!u&&!h,it=en?e._renderState:e._disableCullingRenderState,nn=en?e._blendRenderState:e._disableCullingBlendRenderState,qt=it,Rt=e._firstPassInitialColor,Si=n.context;if(l(e._debug.boundingSphereTile)||aH(),e._materialUniformMap!==e.materialUniformMap){e._materialUniformMap=e.materialUniformMap;let Ft=e._drawCommands.length;for(let St=0;St<Ft;++St)e._uniformMaps[St]=q0e(n,e)}do{let Ft=0,St,oi;if(e._drawCommands.length<=e._usedDrawCommands?(St=new nt,St.owner=t,St.cull=!1,St.boundingVolume=new le,St.orientedBoundingBox=void 0,oi=q0e(n,e),e._drawCommands.push(St),e._uniformMaps.push(oi)):(St=e._drawCommands[e._usedDrawCommands],oi=e._uniformMaps[e._usedDrawCommands]),St.owner=t,++e._usedDrawCommands,t===e._debug.boundingSphereTile){let ps=W.boundingVolume,ic=W.boundingSphere;l(ps)?Z0e(ps,G.RED).update(n):l(ic)&&$0e(ic,G.RED).update(n)}let Et=oi.properties;se.clone(Rt,Et.initialColor),Et.oceanNormalMap=B,Et.lightingFadeDistance.x=e.lightingFadeOutDistance,Et.lightingFadeDistance.y=e.lightingFadeInDistance,Et.nightFadeDistance.x=e.nightFadeOutDistance,Et.nightFadeDistance.y=e.nightFadeInDistance,Et.atmosphereLightIntensity=e.atmosphereLightIntensity,Et.atmosphereRayleighCoefficient=e.atmosphereRayleighCoefficient,Et.atmosphereMieCoefficient=e.atmosphereMieCoefficient,Et.atmosphereRayleighScaleHeight=e.atmosphereRayleighScaleHeight,Et.atmosphereMieScaleHeight=e.atmosphereMieScaleHeight,Et.atmosphereMieAnisotropy=e.atmosphereMieAnisotropy,Et.zoomedOutOceanSpecularIntensity=e.zoomedOutOceanSpecularIntensity;let Lo=u?g:A,Ho=u?A:g;l(Lo)&&(se.fromElements(Lo.near,Lo.nearValue,Lo.far,Lo.farValue,Et.frontFaceAlphaByDistance),se.fromElements(Ho.near,Ho.nearValue,Ho.far,Ho.farValue,Et.backFaceAlphaByDistance)),se.fromElements(y.near,y.nearValue,y.far,y.farValue,Et.undergroundColorAlphaByDistance),G.clone(_,Et.undergroundColor),Et.lambertDiffuseMultiplier=E,Et.vertexShadowDarkness=I;let Pa=!l(i.vertexArray)&&l(e.fillHighlightColor)&&e.fillHighlightColor.alpha>0;Pa&&G.clone(e.fillHighlightColor,Et.fillHighlightColor),Et.verticalExaggerationAndRelativeHeight.x=Z,Et.verticalExaggerationAndRelativeHeight.y=Y,Et.center3D=z.center,d.clone(F,Et.rtc),se.clone(he,Et.tileRectangle),Et.southAndNorthLatitude.x=ge,Et.southAndNorthLatitude.y=fe,Et.southMercatorYAndOneOverHeight.x=ye,Et.southMercatorYAndOneOverHeight.y=xe;let Er=_At,Lr=sH(t.rectangle,e.cartographicLimitRectangle),Fe=yAt,lt=sH(t.rectangle,m);d.fromElements(w,R,O,Et.hsbShift);let Xe=t.rectangle,et=1/Xe.width,gt=1/Xe.height;Er.x=(Lr.west-Xe.west)*et,Er.y=(Lr.south-Xe.south)*gt,Er.z=(Lr.east-Xe.west)*et,Er.w=(Lr.north-Xe.south)*gt,se.clone(Er,Et.localizedCartographicLimitRectangle),Fe.x=(lt.west-Xe.west)*et,Fe.y=(lt.south-Xe.south)*gt,Fe.z=(lt.east-Xe.west)*et,Fe.w=(lt.north-Xe.south)*gt,se.clone(Fe,Et.localizedTranslucencyRectangle);let Jt=L&&D.fog(t._distance,n.fog.density)>D.EPSILON3;k=k&&(Jt||p);let bn=!1,ho=!1,lo=!1,sa=!1,aa=!1,Wn=!1,bi=!1,vs=!1,Xo=!1,Ra=!1;for(;Ft<s&&Ge<Ke;){let ps=ke[Ge],ic=ps.readyImagery;if(++Ge,!l(ic)||ic.imageryLayer.alpha===0)continue;let oc=ps.useWebMercatorT?ic.textureWebMercator:ic.texture,Or=ic.imageryLayer;l(ps.textureTranslationAndScale)||(ps.textureTranslationAndScale=Or._calculateTextureTranslationAndScale(t,ps)),Et.dayTextures[Ft]=oc,Et.dayTextureTranslationAndScale[Ft]=ps.textureTranslationAndScale,Et.dayTextureTexCoordsRectangle[Ft]=ps.textureCoordinateRectangle,Et.dayTextureUseWebMercatorT[Ft]=ps.useWebMercatorT,Et.dayTextureAlpha[Ft]=Or.alpha,Wn=Wn||Et.dayTextureAlpha[Ft]!==1,Et.dayTextureNightAlpha[Ft]=Or.nightAlpha,bi=bi||Et.dayTextureNightAlpha[Ft]!==1,Et.dayTextureDayAlpha[Ft]=Or.dayAlpha,bi=bi||Et.dayTextureDayAlpha[Ft]!==1,Et.dayTextureBrightness[Ft]=Or.brightness,bn=bn||Et.dayTextureBrightness[Ft]!==rs.DEFAULT_BRIGHTNESS,Et.dayTextureContrast[Ft]=Or.contrast,ho=ho||Et.dayTextureContrast[Ft]!==rs.DEFAULT_CONTRAST,Et.dayTextureHue[Ft]=Or.hue,lo=lo||Et.dayTextureHue[Ft]!==rs.DEFAULT_HUE,Et.dayTextureSaturation[Ft]=Or.saturation,sa=sa||Et.dayTextureSaturation[Ft]!==rs.DEFAULT_SATURATION,Et.dayTextureOneOverGamma[Ft]=1/Or.gamma,aa=aa||Et.dayTextureOneOverGamma[Ft]!==1/rs.DEFAULT_GAMMA,Et.dayTextureSplit[Ft]=Or.splitDirection,vs=vs||Et.dayTextureSplit[Ft]!==0;let ql=Et.dayTextureCutoutRectangles[Ft];if(l(ql)||(ql=Et.dayTextureCutoutRectangles[Ft]=new se),se.clone(se.ZERO,ql),l(Or.cutoutRectangle)){let vo=sH(Xe,Or.cutoutRectangle),un=ae.simpleIntersection(vo,Xe,X0e);Xo=l(un)||Xo,ql.x=(vo.west-Xe.west)*et,ql.y=(vo.south-Xe.south)*gt,ql.z=(vo.east-Xe.west)*et,ql.w=(vo.north-Xe.south)*gt}let Kl=Et.colorsToAlpha[Ft];l(Kl)||(Kl=Et.colorsToAlpha[Ft]=new se);let ca=l(Or.colorToAlpha)&&Or.colorToAlphaThreshold>0;if(Ra=Ra||ca,ca){let vo=Or.colorToAlpha;Kl.x=vo.red,Kl.y=vo.green,Kl.z=vo.blue,Kl.w=Or.colorToAlphaThreshold}else Kl.w=-1;if(l(ic.credits)){let vo=ic.credits;for(let un=0,Se=vo.length;un<Se;++un)o.addCreditToNextFrame(vo[un])}++Ft}Et.dayTextures.length=Ft,Et.waterMask=a,se.clone(c,Et.waterMaskTranslationAndScale),Et.minMaxHeight.x=H.minimumHeight,Et.minMaxHeight.y=H.maximumHeight,N.clone(H.matrix,Et.scaleAndBias);let mo=e._clippingPlanes,Jo=l(mo)&&mo.enabled&&t.isClipped;Jo&&(Et.clippingPlanesEdgeColor=G.clone(mo.edgeColor,Et.clippingPlanesEdgeColor),Et.clippingPlanesEdgeWidth=mo.edgeWidth);let Uf=e._clippingPolygons,Ir=l(Uf)&&Uf.enabled&&t.isClipped;Te.numberOfDayTextures=Ft,Te.applyBrightness=bn,Te.applyContrast=ho,Te.applyHue=lo,Te.applySaturation=sa,Te.applyGamma=aa,Te.applyAlpha=Wn,Te.applyDayNightAlpha=bi,Te.applySplit=vs,Te.enableFog=Jt,Te.enableClippingPlanes=Jo,Te.clippingPlanes=mo,Te.enableClippingPolygons=Ir,Te.clippingPolygons=Uf,Te.hasImageryLayerCutout=Xo,Te.colorCorrect=k,Te.highlightFillTile=Pa,Te.colorToAlpha=Ra,Te.showUndergroundColor=C,Te.translucent=h;let Ps=i.renderedMesh.indices.length;tt||(Ps=i.renderedMesh.indexCountWithoutSkirts),St.shaderProgram=e._surfaceShaderSet.getShaderProgram(Te),St.castShadows=x,St.receiveShadows=T,St.renderState=qt,St.primitiveType=Me.TRIANGLES,St.vertexArray=i.vertexArray||i.fill.vertexArray,St.count=Ps,St.uniformMap=oi,St.pass=Be.GLOBE,e._debug.wireframe&&(BAt(Si,e,t),l(i.wireframeVertexArray)&&(St.vertexArray=i.wireframeVertexArray,St.primitiveType=Me.LINES,St.count=Ps*2));let Ws=St.boundingVolume,eh=St.orientedBoundingBox;n.mode!==ie.SCENE3D?(le.fromRectangleWithHeights2D(t.rectangle,n.mapProjection,W.minimumHeight,W.maximumHeight,Ws),d.fromElements(Ws.center.z,Ws.center.x,Ws.center.y,Ws.center),n.mode===ie.MORPHING&&(Ws=le.union(W.boundingSphere,Ws,Ws))):(St.boundingVolume=le.clone(W.boundingSphere,Ws),St.orientedBoundingBox=Fn.clone(W.boundingVolume,eh)),St.dirty=!0,h&&f.updateDerivedCommands(St,n),K0e(St,n),qt=nn,Rt=vAt}while(Ge<Ke)}var X2=_r;function eIe(){this._enabled=!1,this._frontFaceAlpha=1,this._frontFaceAlphaByDistance=void 0,this._backFaceAlpha=1,this._backFaceAlphaByDistance=void 0,this._rectangle=ae.clone(ae.MAX_VALUE)}Object.defineProperties(eIe.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this._enabled=e}},frontFaceAlpha:{get:function(){return this._frontFaceAlpha},set:function(e){this._frontFaceAlpha=e}},frontFaceAlphaByDistance:{get:function(){return this._frontFaceAlphaByDistance},set:function(e){this._frontFaceAlphaByDistance=jt.clone(e,this._frontFaceAlphaByDistance)}},backFaceAlpha:{get:function(){return this._backFaceAlpha},set:function(e){this._backFaceAlpha=e}},backFaceAlphaByDistance:{get:function(){return this._backFaceAlphaByDistance},set:function(e){this._backFaceAlphaByDistance=jt.clone(e,this._backFaceAlphaByDistance)}},rectangle:{get:function(){return this._rectangle},set:function(e){l(e)||(e=ae.clone(ae.MAX_VALUE)),ae.clone(e,this._rectangle)}}});var J2=eIe;function tIe(e){this._ellipsoid=new Eg(e.ellipsoid,d.ZERO)}Object.defineProperties(tIe.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var Z2=tIe;var fJ=class{constructor(t){this.maxSize=t,this.cache=new Map}get(t){if(!this.cache.has(t))return;let n=this.cache.get(t);return this.cache.delete(t),this.cache.set(t,n),n}set(t,n){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.maxSize){let i=this.cache.keys().next().value;this.cache.delete(i)}this.cache.set(t,n)}clear(){this.cache.clear()}},LAt=1e3;function Sa(e){this._tilingScheme=e.tilingScheme,this._x=e.x,this._y=e.y,this._level=e.level,this._parent=e.parent,this._rectangle=this._tilingScheme.tileXYToRectangle(this._x,this._y,this._level),this._southwestChild=void 0,this._southeastChild=void 0,this._northwestChild=void 0,this._northeastChild=void 0,this.replacementPrevious=void 0,this.replacementNext=void 0,this._distance=0,this._loadPriority=0,this._customData=[],this._frameUpdated=void 0,this._lastSelectionResult=ai.NONE,this._lastSelectionResultFrame=void 0,this._loadedCallbacks={},this._positionCache=new fJ(LAt),this.state=Ta.START,this.renderable=!1,this.upsampledFromParent=!1,this.data=void 0}Sa.createLevelZeroTiles=function(e){let t=e.getNumberOfXTilesAtLevel(0),n=e.getNumberOfYTilesAtLevel(0),i=new Array(t*n),o=0;for(let r=0;r<n;++r)for(let s=0;s<t;++s)i[o++]=new Sa({tilingScheme:e,x:s,y:r,level:0});return i};var OAt=256;function FAt(e,t,n,i){let o=n.width/OAt*i,r=Math.floor(e/o)*o,s=Math.floor(t/o)*o;return`${r.toFixed(10)},${s.toFixed(10)}`}Sa.prototype._getCacheKey=function(e,t){return FAt(e.longitude,e.latitude,this._rectangle,t)};Sa.prototype.getPositionCacheEntry=function(e,t){return this._positionCache.get(this._getCacheKey(e,t))};Sa.prototype.setPositionCacheEntry=function(e,t,n){this._positionCache.set(this._getCacheKey(e,t),n)};Sa.prototype.clearPositionCache=function(){this._positionCache.size>0&&this._positionCache.clear()};Sa.prototype._updateCustomData=function(e,t,n){let i=this.customData,o,r,s;if(l(t)&&l(n)){for(i=i.filter(function(a){return n.indexOf(a)===-1}),this._customData=i,s=this._rectangle,o=0;o<t.length;++o)r=t[o],ae.contains(s,r.positionCartographic)&&i.push(r);this._frameUpdated=e}else{let a=this._parent;if(l(a)&&this._frameUpdated!==a._frameUpdated){i.length=0,s=this._rectangle;let c=a.customData;for(o=0;o<c.length;++o)r=c[o],ae.contains(s,r.positionCartographic)&&i.push(r);this._frameUpdated=a._frameUpdated}}};Object.defineProperties(Sa.prototype,{tilingScheme:{get:function(){return this._tilingScheme}},x:{get:function(){return this._x}},y:{get:function(){return this._y}},level:{get:function(){return this._level}},parent:{get:function(){return this._parent}},rectangle:{get:function(){return this._rectangle}},children:{get:function(){return[this.northwestChild,this.northeastChild,this.southwestChild,this.southeastChild]}},southwestChild:{get:function(){return l(this._southwestChild)||(this._southwestChild=new Sa({tilingScheme:this.tilingScheme,x:this.x*2,y:this.y*2+1,level:this.level+1,parent:this})),this._southwestChild}},southeastChild:{get:function(){return l(this._southeastChild)||(this._southeastChild=new Sa({tilingScheme:this.tilingScheme,x:this.x*2+1,y:this.y*2+1,level:this.level+1,parent:this})),this._southeastChild}},northwestChild:{get:function(){return l(this._northwestChild)||(this._northwestChild=new Sa({tilingScheme:this.tilingScheme,x:this.x*2,y:this.y*2,level:this.level+1,parent:this})),this._northwestChild}},northeastChild:{get:function(){return l(this._northeastChild)||(this._northeastChild=new Sa({tilingScheme:this.tilingScheme,x:this.x*2+1,y:this.y*2,level:this.level+1,parent:this})),this._northeastChild}},customData:{get:function(){return this._customData}},needsLoading:{get:function(){return this.state<Ta.DONE}},eligibleForUnloading:{get:function(){let e=!0;return l(this.data)&&(e=this.data.eligibleForUnloading,l(e)||(e=!0)),e}}});Sa.prototype.findLevelZeroTile=function(e,t,n){let i=this.tilingScheme.getNumberOfXTilesAtLevel(0);if(t<0?t+=i:t>=i&&(t-=i),!(n<0||n>=this.tilingScheme.getNumberOfYTilesAtLevel(0)))return e.filter(function(o){return o.x===t&&o.y===n})[0]};Sa.prototype.findTileToWest=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x-1,this.y);if(t.southeastChild===this)return t.southwestChild;if(t.northeastChild===this)return t.northwestChild;let n=t.findTileToWest(e);if(n!==void 0)return t.southwestChild===this?n.southeastChild:n.northeastChild};Sa.prototype.findTileToEast=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x+1,this.y);if(t.southwestChild===this)return t.southeastChild;if(t.northwestChild===this)return t.northeastChild;let n=t.findTileToEast(e);if(n!==void 0)return t.southeastChild===this?n.southwestChild:n.northwestChild};Sa.prototype.findTileToSouth=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x,this.y+1);if(t.northwestChild===this)return t.southwestChild;if(t.northeastChild===this)return t.southeastChild;let n=t.findTileToSouth(e);if(n!==void 0)return t.southwestChild===this?n.northwestChild:n.northeastChild};Sa.prototype.findTileToNorth=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x,this.y-1);if(t.southwestChild===this)return t.northwestChild;if(t.southeastChild===this)return t.northeastChild;let n=t.findTileToNorth(e);if(n!==void 0)return t.northwestChild===this?n.southwestChild:n.southeastChild};Sa.prototype.freeResources=function(){this.clearPositionCache(),this.state=Ta.START,this.renderable=!1,this.upsampledFromParent=!1,l(this.data)&&l(this.data.freeResources)&&this.data.freeResources(),cH(this._southwestChild),this._southwestChild=void 0,cH(this._southeastChild),this._southeastChild=void 0,cH(this._northwestChild),this._northwestChild=void 0,cH(this._northeastChild),this._northeastChild=void 0};function cH(e){l(e)&&e.freeResources()}var $2=Sa;function lH(){this.head=void 0,this.tail=void 0,this.count=0,this._lastBeforeStartOfFrame=void 0}lH.prototype.markStartOfRenderFrame=function(){this._lastBeforeStartOfFrame=this.head};lH.prototype.trimTiles=function(e){let t=this.tail,n=!0;for(;n&&l(this._lastBeforeStartOfFrame)&&this.count>e&&l(t);){n=t!==this._lastBeforeStartOfFrame;let i=t.replacementPrevious;t.eligibleForUnloading&&(t.freeResources(),nIe(this,t)),t=i}};function nIe(e,t){let n=t.replacementPrevious,i=t.replacementNext;t===e._lastBeforeStartOfFrame&&(e._lastBeforeStartOfFrame=i),t===e.head?e.head=i:n.replacementNext=i,t===e.tail?e.tail=n:i.replacementPrevious=n,t.replacementPrevious=void 0,t.replacementNext=void 0,--e.count}lH.prototype.markTileRendered=function(e){let t=this.head;if(t===e){e===this._lastBeforeStartOfFrame&&(this._lastBeforeStartOfFrame=e.replacementNext);return}if(++this.count,!l(t)){e.replacementPrevious=void 0,e.replacementNext=void 0,this.head=e,this.tail=e;return}(l(e.replacementPrevious)||l(e.replacementNext))&&nIe(this,e),e.replacementPrevious=void 0,e.replacementNext=t,t.replacementPrevious=e,this.head=e};var eQ=lH;function zd(e){this._tileProvider=e.tileProvider,this._tileProvider.quadtree=this,this._debug={enableDebugOutput:!1,maxDepth:0,maxDepthVisited:0,tilesVisited:0,tilesCulled:0,tilesRendered:0,tilesWaitingForChildren:0,lastMaxDepth:-1,lastMaxDepthVisited:-1,lastTilesVisited:-1,lastTilesCulled:-1,lastTilesRendered:-1,lastTilesWaitingForChildren:-1,suspendLodUpdate:!1};let n=this._tileProvider.tilingScheme.ellipsoid;this._tilesToRender=[],this._tileLoadQueueHigh=[],this._tileLoadQueueMedium=[],this._tileLoadQueueLow=[],this._tileReplacementQueue=new eQ,this._levelZeroTiles=void 0,this._loadQueueTimeSlice=5,this._tilesInvalidated=!1,this._addHeightCallbacks=[],this._removeHeightCallbacks=[],this._tileToUpdateHeights=[],this._lastTileIndex=0,this._updateHeightsTimeSlice=2,this._cameraPositionCartographic=void 0,this._cameraReferenceFrameOriginCartographic=void 0,this.maximumScreenSpaceError=e.maximumScreenSpaceError??2,this.tileCacheSize=e.tileCacheSize??100,this.loadingDescendantLimit=20,this.preloadAncestors=!0,this.preloadSiblings=!1,this._occluders=new Z2({ellipsoid:n}),this._tileLoadProgressEvent=new _e,this._lastTileLoadQueueLength=0,this._lastSelectionFrameNumber=void 0}Object.defineProperties(zd.prototype,{tileProvider:{get:function(){return this._tileProvider}},tileLoadProgressEvent:{get:function(){return this._tileLoadProgressEvent}},occluders:{get:function(){return this._occluders}}});zd.prototype.invalidateAllTiles=function(){this._tilesInvalidated=!0};function QAt(e){let t=e._tileReplacementQueue;t.head=void 0,t.tail=void 0,t.count=0,oIe(e);let n=e._levelZeroTiles;if(l(n))for(let i=0;i<n.length;++i){let r=n[i].customData,s=r.length;for(let a=0;a<s;++a){let c=r[a];c.level=0,e._addHeightCallbacks.push(c)}n[i].freeResources()}e._levelZeroTiles=void 0,e._tileProvider.cancelReprojections()}zd.prototype.forEachLoadedTile=function(e){let t=this._tileReplacementQueue.head;for(;l(t);)t.state!==Ta.START&&e(t),t=t.replacementNext};zd.prototype.forEachRenderedTile=function(e){let t=this._tilesToRender;for(let n=0,i=t.length;n<i;++n)e(t[n])};zd.prototype.updateHeight=function(e,t){let n=this,i={positionOnEllipsoidSurface:void 0,positionCartographic:e,level:-1,callback:t};return i.removeFunc=function(){let o=n._addHeightCallbacks,r=o.length;for(let s=0;s<r;++s)if(o[s]===i){o.splice(s,1);break}n._removeHeightCallbacks.push(i),i.callback&&(i.callback=void 0)},n._addHeightCallbacks.push(i),i.removeFunc};zd.prototype.update=function(e){l(this._tileProvider.update)&&this._tileProvider.update(e)};function oIe(e){let t=e._debug;t.maxDepth=0,t.maxDepthVisited=0,t.tilesVisited=0,t.tilesCulled=0,t.tilesRendered=0,t.tilesWaitingForChildren=0,e._tileLoadQueueHigh.length=0,e._tileLoadQueueMedium.length=0,e._tileLoadQueueLow.length=0}zd.prototype.beginFrame=function(e){e.passes.render&&(this._tilesInvalidated&&(QAt(this),this._tilesInvalidated=!1),this._tileProvider.initialize(e),oIe(this),!this._debug.suspendLodUpdate&&this._tileReplacementQueue.markStartOfRenderFrame())};zd.prototype.render=function(e){let t=e.passes,n=this._tileProvider;t.render&&(n.beginUpdate(e),zAt(this,e),ZAt(this,e),n.endUpdate(e)),t.pick&&this._tilesToRender.length>0&&n.updateForPick(e)};function kAt(e,t){let n=e._tileLoadQueueHigh.length+e._tileLoadQueueMedium.length+e._tileLoadQueueLow.length;if(n!==e._lastTileLoadQueueLength||e._tilesInvalidated){let o=_e.prototype.raiseEvent.bind(e._tileLoadProgressEvent,n);t.afterRender.push(()=>(o(),!0)),e._lastTileLoadQueueLength=n}let i=e._debug;i.enableDebugOutput&&!i.suspendLodUpdate&&(i.maxDepth=e._tilesToRender.reduce(function(o,r){return Math.max(o,r.level)},-1),i.tilesRendered=e._tilesToRender.length,(i.tilesVisited!==i.lastTilesVisited||i.tilesRendered!==i.lastTilesRendered||i.tilesCulled!==i.lastTilesCulled||i.maxDepth!==i.lastMaxDepth||i.tilesWaitingForChildren!==i.lastTilesWaitingForChildren||i.maxDepthVisited!==i.lastMaxDepthVisited)&&(console.log(`Visited ${i.tilesVisited}, Rendered: ${i.tilesRendered}, Culled: ${i.tilesCulled}, Max Depth Rendered: ${i.maxDepth}, Max Depth Visited: ${i.maxDepthVisited}, Waiting for children: ${i.tilesWaitingForChildren}`),i.lastTilesVisited=i.tilesVisited,i.lastTilesRendered=i.tilesRendered,i.lastTilesCulled=i.tilesCulled,i.lastMaxDepth=i.maxDepth,i.lastTilesWaitingForChildren=i.tilesWaitingForChildren,i.lastMaxDepthVisited=i.maxDepthVisited))}zd.prototype.endFrame=function(e){!e.passes.render||e.mode===ie.MORPHING||(qAt(this,e),JAt(this,e),kAt(this,e))};zd.prototype.isDestroyed=function(){return!1};zd.prototype.destroy=function(){this._tileProvider=this._tileProvider&&this._tileProvider.destroy()};var nQ,iIe=new Ae;function UAt(e,t){let n=ae.center(e.rectangle,iIe),i=n.longitude-nQ.longitude,o=n.latitude-nQ.latitude;n=ae.center(t.rectangle,iIe);let r=n.longitude-nQ.longitude,s=n.latitude-nQ.latitude;return i*i+o*o-(r*r+s*s)}var GAt=new d,tQ=[];function zAt(e,t){let n=e._debug;if(n.suspendLodUpdate)return;let i=e._tilesToRender;i.length=0;let o,r=e._tileProvider;if(!l(e._levelZeroTiles)){let _=r.tilingScheme;if(l(_)){let y=r.tilingScheme;e._levelZeroTiles=$2.createLevelZeroTiles(y);let C=e._levelZeroTiles.length;if(tQ.length<C)for(tQ=new Array(C),o=0;o<C;++o)tQ[o]===void 0&&(tQ[o]=new iQ)}else return}e._occluders.ellipsoid.cameraPosition=t.camera.positionWC;let s,a=e._levelZeroTiles,c=a.length>1?e._occluders:void 0;nQ=t.camera.positionCartographic,a.sort(UAt);let u=e._addHeightCallbacks,f=e._removeHeightCallbacks,h=t.frameNumber,A;if(u.length>0||f.length>0){for(o=0,A=a.length;o<A;++o)s=a[o],s._updateCustomData(h,u,f);u.length=0,f.length=0}let g=t.camera;e._cameraPositionCartographic=g.positionCartographic;let m=N.getTranslation(g.transform,GAt);for(e._cameraReferenceFrameOriginCartographic=e.tileProvider.tilingScheme.ellipsoid.cartesianToCartographic(m,e._cameraReferenceFrameOriginCartographic),o=0,A=a.length;o<A;++o)s=a[o],e._tileReplacementQueue.markTileRendered(s),s.renderable?Ic(e,s,r,t,c,!1,tQ[o]):(Yg(e,e._tileLoadQueueHigh,s,t),++n.tilesWaitingForChildren);e._lastSelectionFrameNumber=h}function Yg(e,t,n,i){n.needsLoading&&(e.tileProvider.computeTileLoadPriority!==void 0&&(n._loadPriority=e.tileProvider.computeTileLoadPriority(n,i)),t.push(n))}function iQ(){this.allAreRenderable=!0,this.anyWereRenderedLastFrame=!1,this.notYetRenderableCount=0}function rIe(){this.southwest=new iQ,this.southeast=new iQ,this.northwest=new iQ,this.northeast=new iQ}rIe.prototype.combine=function(e){let t=this.southwest,n=this.southeast,i=this.northwest,o=this.northeast;e.allAreRenderable=t.allAreRenderable&&n.allAreRenderable&&i.allAreRenderable&&o.allAreRenderable,e.anyWereRenderedLastFrame=t.anyWereRenderedLastFrame||n.anyWereRenderedLastFrame||i.anyWereRenderedLastFrame||o.anyWereRenderedLastFrame,e.notYetRenderableCount=t.notYetRenderableCount+n.notYetRenderableCount+i.notYetRenderableCount+o.notYetRenderableCount};var hJ=new Array(31);for(let e=0;e<hJ.length;++e)hJ[e]=new rIe;function VAt(e,t,n,i,o){let r=e._debug;++r.tilesVisited,e._tileReplacementQueue.markTileRendered(n),n._updateCustomData(t.frameNumber),n.level>r.maxDepthVisited&&(r.maxDepthVisited=n.level);let s=jAt(e,t,n)<e.maximumScreenSpaceError,a=n.southwestChild,c=n.southeastChild,u=n.northwestChild,f=n.northeastChild,h=e._lastSelectionFrameNumber,A=n._lastSelectionResultFrame===h?n._lastSelectionResult:ai.NONE,g=e.tileProvider;if(s||i){let m=ai.originalResult(A)===ai.RENDERED,_=ai.originalResult(A)===ai.CULLED||A===ai.NONE,y=n.state===Ta.DONE,C=m||_||y;if(C||l(g.canRenderWithoutLosingDetail)&&(C=g.canRenderWithoutLosingDetail(n)),C){s&&Yg(e,e._tileLoadQueueMedium,n,t),uH(e,n),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=A===ai.RENDERED,o.notYetRenderableCount=n.renderable?0:1,n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=ai.RENDERED,o.anyWereRenderedLastFrame||e._tileToUpdateHeights.push(n);return}i=!0,s&&Yg(e,e._tileLoadQueueHigh,n,t)}if(g.canRefine(n)){if(a.upsampledFromParent&&c.upsampledFromParent&&u.upsampledFromParent&&f.upsampledFromParent){uH(e,n),Yg(e,e._tileLoadQueueMedium,n,t),e._tileReplacementQueue.markTileRendered(a),e._tileReplacementQueue.markTileRendered(c),e._tileReplacementQueue.markTileRendered(u),e._tileReplacementQueue.markTileRendered(f),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=A===ai.RENDERED,o.notYetRenderableCount=n.renderable?0:1,n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=ai.RENDERED,o.anyWereRenderedLastFrame||e._tileToUpdateHeights.push(n);return}n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=ai.REFINED;let _=e._tilesToRender.length,y=e._tileLoadQueueLow.length,C=e._tileLoadQueueMedium.length,E=e._tileLoadQueueHigh.length,I=e._tileToUpdateHeights.length;if(HAt(e,a,c,u,f,t,i,o),_!==e._tilesToRender.length){let b=o.allAreRenderable,S=o.anyWereRenderedLastFrame,B=o.notYetRenderableCount,v=!1;if(!b&&!S){let P=e._tilesToRender;for(let L=_;L<P.length;++L){let p=P[L];for(;p!==void 0&&p._lastSelectionResult!==ai.KICKED&&p!==n;)p._lastSelectionResult=ai.kick(p._lastSelectionResult),p=p.parent}e._tilesToRender.length=_,e._tileToUpdateHeights.length=I,uH(e,n),n._lastSelectionResult=ai.RENDERED;let M=A===ai.RENDERED;!M&&B>e.loadingDescendantLimit&&(e._tileLoadQueueLow.length=y,e._tileLoadQueueMedium.length=C,e._tileLoadQueueHigh.length=E,Yg(e,e._tileLoadQueueMedium,n,t),o.notYetRenderableCount=n.renderable?0:1,v=!0),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=M,M||e._tileToUpdateHeights.push(n),++r.tilesWaitingForChildren}e.preloadAncestors&&!v&&Yg(e,e._tileLoadQueueLow,n,t)}return}n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=ai.RENDERED,uH(e,n),Yg(e,e._tileLoadQueueHigh,n,t),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=A===ai.RENDERED,o.notYetRenderableCount=n.renderable?0:1}function HAt(e,t,n,i,o,r,s,a){let c=r.camera.positionCartographic,u=e._tileProvider,f=e._occluders,h=hJ[t.level],A=h.southwest,g=h.southeast,m=h.northwest,_=h.northeast;c.longitude<t.rectangle.east?c.latitude<t.rectangle.north?(Ic(e,t,u,r,f,s,A),Ic(e,n,u,r,f,s,g),Ic(e,i,u,r,f,s,m),Ic(e,o,u,r,f,s,_)):(Ic(e,i,u,r,f,s,m),Ic(e,t,u,r,f,s,A),Ic(e,o,u,r,f,s,_),Ic(e,n,u,r,f,s,g)):c.latitude<t.rectangle.north?(Ic(e,n,u,r,f,s,g),Ic(e,t,u,r,f,s,A),Ic(e,o,u,r,f,s,_),Ic(e,i,u,r,f,s,m)):(Ic(e,o,u,r,f,s,_),Ic(e,i,u,r,f,s,m),Ic(e,n,u,r,f,s,g),Ic(e,t,u,r,f,s,A)),h.combine(a)}function WAt(e,t){let n=t.rectangle;return l(e._cameraPositionCartographic)&&ae.contains(n,e._cameraPositionCartographic)||l(e._cameraReferenceFrameOriginCartographic)&&ae.contains(n,e._cameraReferenceFrameOriginCartographic)}function Ic(e,t,n,i,o,r,s){if(n.computeTileVisibility(t,i,o)!==Mr.NONE)return VAt(e,i,t,r,s);if(++e._debug.tilesCulled,e._tileReplacementQueue.markTileRendered(t),s.allAreRenderable=!0,s.anyWereRenderedLastFrame=!1,s.notYetRenderableCount=0,WAt(e,t)){(!l(t.data)||!l(t.data.vertexArray))&&Yg(e,e._tileLoadQueueMedium,t,i);let a=e._lastSelectionFrameNumber,c=t._lastSelectionResultFrame===a?t._lastSelectionResult:ai.NONE;c!==ai.CULLED_BUT_NEEDED&&c!==ai.RENDERED&&e._tileToUpdateHeights.push(t),t._lastSelectionResult=ai.CULLED_BUT_NEEDED}else e.preloadSiblings||t.level===0?(Yg(e,e._tileLoadQueueLow,t,i),t._lastSelectionResult=ai.CULLED):t._lastSelectionResult=ai.CULLED;t._lastSelectionResultFrame=i.frameNumber}function jAt(e,t,n){if(t.mode===ie.SCENE2D||t.camera.frustum instanceof An||t.camera.frustum instanceof es)return YAt(e,t,n);let i=e._tileProvider.getLevelMaximumGeometricError(n.level),o=n._distance,r=t.context.drawingBufferHeight,s=t.camera.frustum.sseDenominator,a=i*r/(o*s);return t.fog.enabled&&(a-=D.fog(o,t.fog.density)*t.fog.sse),a/=t.pixelRatio,a}function YAt(e,t,n){let o=t.camera.frustum,r=o.offCenterFrustum;l(r)&&(o=r);let s=t.context,a=s.drawingBufferWidth,c=s.drawingBufferHeight,u=e._tileProvider.getLevelMaximumGeometricError(n.level),f=Math.max(o.top-o.bottom,o.right-o.left)/Math.max(a,c),h=u/f;return t.fog.enabled&&t.mode!==ie.SCENE2D&&(h-=D.fog(n._distance,t.fog.density)*t.fog.sse),h/=t.pixelRatio,h}function uH(e,t){e._tilesToRender.push(t)}function qAt(e,t){let n=e._tileLoadQueueHigh,i=e._tileLoadQueueMedium,o=e._tileLoadQueueLow;if(n.length===0&&i.length===0&&o.length===0)return;e._tileReplacementQueue.trimTiles(e.tileCacheSize);let r=Li()+e._loadQueueTimeSlice,s=e._tileProvider,a=dJ(e,t,s,r,n,!1);a=dJ(e,t,s,r,i,a),dJ(e,t,s,r,o,a)}function KAt(e,t){return e._loadPriority-t._loadPriority}function dJ(e,t,n,i,o,r){n.computeTileLoadPriority!==void 0&&o.sort(KAt);for(let s=0,a=o.length;s<a&&(Li()<i||!r);++s){let c=o[s];e._tileReplacementQueue.markTileRendered(c),n.loadTile(t,c),r=!0}return r}var _w=new In,fH=new Ae,fC=new d,XAt=[];function JAt(e,t){if(!l(e.tileProvider.tilingScheme))return;let n=XAt;n.length=0;let i=e._tileToUpdateHeights,o=Li(),r=e._updateHeightsTimeSlice,s=o+r,a=t.mode,c=t.mapProjection,u=e.tileProvider.tilingScheme.ellipsoid,f;for(;i.length>0;){let h=i[0];if(!l(h.data)||!l(h.data.mesh)){let _=h._lastSelectionResultFrame===e._lastSelectionFrameNumber?h._lastSelectionResult:ai.NONE;(_===ai.RENDERED||_===ai.CULLED_BUT_NEEDED)&&n.push(h),h.clearPositionCache(),i.shift(),e._lastTileIndex=0;continue}let A=h.customData,g=A.length,m=!1;for(f=e._lastTileIndex;f<g;++f){let _=A[f],y=h.data.terrainData,C=l(y)&&y.wasCreatedByUpsampling();if(h.level>_.level&&!C){let E,I=h.getPositionCacheEntry(_.positionCartographic,e.maximumScreenSpaceError);if(l(I))E=I;else{if(l(_.positionOnEllipsoidSurface)||(_.positionOnEllipsoidSurface=d.fromRadians(_.positionCartographic.longitude,_.positionCartographic.latitude,0,u)),a===ie.SCENE3D){let b=u.geodeticSurfaceNormal(_.positionOnEllipsoidSurface,_w.direction),S=u.getSurfaceNormalIntersectionWithZAxis(_.positionOnEllipsoidSurface,11500,_w.origin);if(!l(S)){let B=0;l(h.data.tileBoundingRegion)&&(B=h.data.tileBoundingRegion.minimumHeight);let v=Math.min(B,-11500),P=d.multiplyByScalar(b,Math.abs(v)+1,fC);d.subtract(_.positionOnEllipsoidSurface,P,_w.origin)}}else Ae.clone(_.positionCartographic,fH),fH.height=-11500,c.project(fH,fC),d.fromElements(fC.z,fC.x,fC.y,fC),d.clone(fC,_w.origin),d.clone(d.UNIT_X,_w.direction);E=h.data.pick(_w,a,c,!1,fC),l(E)&&h.setPositionCacheEntry(_.positionCartographic,e.maximumScreenSpaceError,E)}if(l(E)){if(l(_.callback)){let b=u.cartesianToCartographic(E,fH);_.callback(b)}_.level=h.level}}if(Li()>=s){m=!0;break}}if(m){e._lastTileIndex=f;break}else e._lastTileIndex=0,i.shift()}for(f=0;f<n.length;f++)i.push(n[f])}function ZAt(e,t){let n=e._tileProvider,i=e._tilesToRender;for(let o=0,r=i.length;o<r;++o){let s=i[o];n.showTileThisFrame(s,t)}}var oQ=zd;function pm(e){e=e??te.default;let t=new DA({ellipsoid:e}),n=new Q0;this._ellipsoid=e,this._imageryLayerCollection=n,this._surfaceShaderSet=new q2,this._material=void 0,this._surface=new oQ({tileProvider:new X2({terrainProvider:t,imageryLayers:n,surfaceShaderSet:this._surfaceShaderSet})}),this._terrainProvider=t,this._terrainProviderChanged=new _e,this._undergroundColor=G.clone(G.BLACK),this._undergroundColorAlphaByDistance=new jt(e.maximumRadius/1e3,0,e.maximumRadius/5,1),this._translucency=new J2,AJ(this),this.show=!0,this._oceanNormalMapResourceDirty=!0,this._oceanNormalMapResource=new we({url:fn("Assets/Textures/waterNormalsSmall.jpg")}),this.maximumScreenSpaceError=2,this.tileCacheSize=100,this.loadingDescendantLimit=20,this.preloadAncestors=!0,this.preloadSiblings=!1,this.fillHighlightColor=void 0,this.enableLighting=!1,this.lambertDiffuseMultiplier=.9,this.dynamicAtmosphereLighting=!0,this.dynamicAtmosphereLightingFromSun=!1,this.showGroundAtmosphere=te.WGS84.equals(e),this.atmosphereLightIntensity=10,this.atmosphereRayleighCoefficient=new d(55e-7,13e-6,284e-7),this.atmosphereMieCoefficient=new d(21e-6,21e-6,21e-6),this.atmosphereRayleighScaleHeight=1e4,this.atmosphereMieScaleHeight=3200,this.atmosphereMieAnisotropy=.9,this.lightingFadeOutDistance=D.PI_OVER_TWO*e.minimumRadius,this.lightingFadeInDistance=D.PI*e.minimumRadius,this.nightFadeOutDistance=D.PI_OVER_TWO*e.minimumRadius,this.nightFadeInDistance=5*D.PI_OVER_TWO*e.minimumRadius,this.showWaterEffect=!0,this.depthTestAgainstTerrain=!1,this.shadows=Bn.RECEIVE_ONLY,this.atmosphereHueShift=0,this.atmosphereSaturationShift=0,this.atmosphereBrightnessShift=0,this.showSkirts=!0,this.backFaceCulling=!0,this._oceanNormalMap=void 0,this._zoomedOutOceanSpecularIntensity=void 0,this.vertexShadowDarkness=.3}Object.defineProperties(pm.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},imageryLayers:{get:function(){return this._imageryLayerCollection}},imageryLayersUpdatedEvent:{get:function(){return this._surface.tileProvider.imageryLayersUpdatedEvent}},tilesLoaded:{get:function(){return l(this._surface)?this._surface._tileLoadQueueHigh.length===0&&this._surface._tileLoadQueueMedium.length===0&&this._surface._tileLoadQueueLow.length===0:!0}},baseColor:{get:function(){return this._surface.tileProvider.baseColor},set:function(e){this._surface.tileProvider.baseColor=e}},clippingPlanes:{get:function(){return this._surface.tileProvider.clippingPlanes},set:function(e){this._surface.tileProvider.clippingPlanes=e}},clippingPolygons:{get:function(){return this._surface.tileProvider.clippingPolygons},set:function(e){this._surface.tileProvider.clippingPolygons=e}},cartographicLimitRectangle:{get:function(){return this._surface.tileProvider.cartographicLimitRectangle},set:function(e){l(e)||(e=ae.clone(ae.MAX_VALUE)),this._surface.tileProvider.cartographicLimitRectangle=e}},oceanNormalMapUrl:{get:function(){return this._oceanNormalMapResource.url},set:function(e){this._oceanNormalMapResource.url=e,this._oceanNormalMapResourceDirty=!0}},terrainProvider:{get:function(){return this._terrainProvider},set:function(e){e!==this._terrainProvider&&(this._terrainProvider=e,this._terrainProviderChanged.raiseEvent(e),l(this._material)&&AJ(this))}},terrainProviderChanged:{get:function(){return this._terrainProviderChanged}},tileLoadProgressEvent:{get:function(){return this._surface.tileLoadProgressEvent}},material:{get:function(){return this._material},set:function(e){this._material!==e&&(this._material=e,AJ(this))}},undergroundColor:{get:function(){return this._undergroundColor},set:function(e){this._undergroundColor=G.clone(e,this._undergroundColor)}},undergroundColorAlphaByDistance:{get:function(){return this._undergroundColorAlphaByDistance},set:function(e){this._undergroundColorAlphaByDistance=jt.clone(e,this._undergroundColorAlphaByDistance)}},translucency:{get:function(){return this._translucency}}});function AJ(e){let t=[],n=l(e._material)&&(l(e._material.shaderSource.match(/slope/))||l(e._material.shaderSource.match("normalEC"))),i=[Bh,fw];l(e._material)&&(!n||e._terrainProvider.requestVertexNormals)?(i.push(e._material.shaderSource),t.push("APPLY_MATERIAL"),e._surface._tileProvider.materialUniformMap=e._material._uniforms):e._surface._tileProvider.materialUniformMap=void 0,i.push(F2),e._surfaceShaderSet.baseVertexShaderSource=new He({sources:[Bh,fw,Q2],defines:t}),e._surfaceShaderSet.baseFragmentShaderSource=new He({sources:i,defines:t}),e._surfaceShaderSet.material=e._material}function $At(e){return function(t,n){let i=le.distanceSquaredTo(t.pickBoundingSphere,e),o=le.distanceSquaredTo(n.pickBoundingSphere,e);return i-o}}var ept=[],tpt={start:0,stop:0};pm.prototype.pickWorldCoordinates=function(e,t,n,i){n=n??!0;let o=t.mode,r=t.mapProjection,s=ept;s.length=0;let a=this._surface._tilesToRender,c=a.length,u,f;for(f=0;f<c;++f){u=a[f];let A=u.data;if(!l(A))continue;let g=A.pickBoundingSphere;if(o!==ie.SCENE3D)A.pickBoundingSphere=g=le.fromRectangleWithHeights2D(u.rectangle,r,A.tileBoundingRegion.minimumHeight,A.tileBoundingRegion.maximumHeight,g),d.fromElements(g.center.z,g.center.x,g.center.y,g.center);else if(l(A.renderedMesh))le.clone(A.tileBoundingRegion.boundingSphere,g);else continue;let m=hi.raySphere(e,g,tpt);l(m)&&s.push(A)}s.sort($At(e.origin));let h;for(c=s.length,f=0;f<c&&(h=s[f].pick(e,t.mode,t.mapProjection,n,i),!l(h));++f);return h};var npt=new Ae;pm.prototype.pick=function(e,t,n){if(n=this.pickWorldCoordinates(e,t,!0,n),l(n)&&t.mode!==ie.SCENE3D){n=d.fromElements(n.y,n.z,n.x,n);let i=t.mapProjection.unproject(n,npt);n=this._ellipsoid.cartographicToCartesian(i,n)}return n};var ipt=new d,sIe=new d,opt=new Ae,rpt=new In;function mJ(e,t){return l(e)&&ae.contains(e.rectangle,t)?e:void 0}pm.prototype.getHeight=function(e){let t=this._surface._levelZeroTiles;if(!l(t))return;let n,i,o=t.length;for(i=0;i<o&&(n=t[i],!ae.contains(n.rectangle,e));++i);if(i>=o)return;let r=n;for(;l(n);)n=mJ(n._southwestChild,e)||mJ(n._southeastChild,e)||mJ(n._northwestChild,e)||n._northeastChild,l(n)&&l(n.data)&&l(n.data.renderedMesh)&&(r=n);if(n=r,!l(n)||!l(n.data)||!l(n.data.renderedMesh))return;let s=this._surface._tileProvider.tilingScheme.projection,a=this._surface._tileProvider.tilingScheme.ellipsoid,c=d.fromRadians(e.longitude,e.latitude,0,a,ipt),u=rpt,f=a.geodeticSurfaceNormal(c,u.direction),h=a.getSurfaceNormalIntersectionWithZAxis(c,11500,u.origin);if(!l(h)){let g;l(n.data.tileBoundingRegion)&&(g=n.data.tileBoundingRegion.minimumHeight);let m=Math.min(g??0,-11500),_=d.multiplyByScalar(f,Math.abs(m)+1,sIe);d.subtract(c,_,u.origin)}let A=n.data.pick(u,void 0,s,!1,sIe);if(l(A))return a.cartesianToCartographic(A,opt).height};pm.prototype.update=function(e){this.show&&e.passes.render&&this._surface.update(e)};pm.prototype.beginFrame=function(e){let t=this._surface,n=t.tileProvider,i=this.terrainProvider,o=l(i)&&i.hasWaterMask&&i.hasWaterMask;if(o&&this._oceanNormalMapResourceDirty){this._oceanNormalMapResourceDirty=!1;let a=this._oceanNormalMapResource,c=a.url;if(l(c)){let u=this;a.fetchImage().then(function(f){c===u._oceanNormalMapResource.url&&(u._oceanNormalMap=u._oceanNormalMap&&u._oceanNormalMap.destroy(),u._oceanNormalMap=new Mt({context:e.context,source:f}))})}else this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy()}let r=e.passes,s=e.mode;r.render&&(this.showGroundAtmosphere?this._zoomedOutOceanSpecularIntensity=.4:this._zoomedOutOceanSpecularIntensity=.5,t.maximumScreenSpaceError=this.maximumScreenSpaceError,t.tileCacheSize=this.tileCacheSize,t.loadingDescendantLimit=this.loadingDescendantLimit,t.preloadAncestors=this.preloadAncestors,t.preloadSiblings=this.preloadSiblings,n.terrainProvider=this.terrainProvider,n.lightingFadeOutDistance=this.lightingFadeOutDistance,n.lightingFadeInDistance=this.lightingFadeInDistance,n.nightFadeOutDistance=this.nightFadeOutDistance,n.nightFadeInDistance=this.nightFadeInDistance,n.zoomedOutOceanSpecularIntensity=s===ie.SCENE3D?this._zoomedOutOceanSpecularIntensity:0,n.hasWaterMask=o,n.showWaterEffect=this.showWaterEffect,n.oceanNormalMap=this._oceanNormalMap,n.enableLighting=this.enableLighting,n.dynamicAtmosphereLighting=this.dynamicAtmosphereLighting,n.dynamicAtmosphereLightingFromSun=this.dynamicAtmosphereLightingFromSun,n.showGroundAtmosphere=this.showGroundAtmosphere,n.atmosphereLightIntensity=this.atmosphereLightIntensity,n.atmosphereRayleighCoefficient=this.atmosphereRayleighCoefficient,n.atmosphereMieCoefficient=this.atmosphereMieCoefficient,n.atmosphereRayleighScaleHeight=this.atmosphereRayleighScaleHeight,n.atmosphereMieScaleHeight=this.atmosphereMieScaleHeight,n.atmosphereMieAnisotropy=this.atmosphereMieAnisotropy,n.shadows=this.shadows,n.hueShift=this.atmosphereHueShift,n.saturationShift=this.atmosphereSaturationShift,n.brightnessShift=this.atmosphereBrightnessShift,n.fillHighlightColor=this.fillHighlightColor,n.showSkirts=this.showSkirts,n.backFaceCulling=this.backFaceCulling,n.vertexShadowDarkness=this.vertexShadowDarkness,n.undergroundColor=this._undergroundColor,n.undergroundColorAlphaByDistance=this._undergroundColorAlphaByDistance,n.lambertDiffuseMultiplier=this.lambertDiffuseMultiplier,t.beginFrame(e))};pm.prototype.render=function(e){this.show&&(l(this._material)&&this._material.update(e.context),this._surface.render(e))};pm.prototype.endFrame=function(e){this.show&&e.passes.render&&this._surface.endFrame(e)};pm.prototype.isDestroyed=function(){return!1};pm.prototype.destroy=function(){return this._surfaceShaderSet=this._surfaceShaderSet&&this._surfaceShaderSet.destroy(),this._surface=this._surface&&this._surface.destroy(),this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy(),ue(this)};var rQ=pm;function spt(e,t,n,i){this.rightAscension=e,this.declination=t,this.rotation=n,this.rotationRate=i}var sQ=spt;var CIe={},apt=32.184,cpt=2451545,aIe=-.0529921,cIe=-.1059842,lIe=13.0120009,uIe=13.3407154,fIe=.9856003,dIe=26.4057084,hIe=13.064993,mIe=.3287146,AIe=1.7484877,pIe=-.1589763,gIe=.0036096,_Ie=.1643573,yIe=12.9590088,pJ=new K;CIe.ComputeMoon=function(e,t){l(e)||(e=K.now()),pJ=K.addSeconds(e,apt,pJ);let n=K.totalDays(pJ)-cpt,i=n/ri.DAYS_PER_JULIAN_CENTURY,o=(125.045+aIe*n)*D.RADIANS_PER_DEGREE,r=(250.089+cIe*n)*D.RADIANS_PER_DEGREE,s=(260.008+lIe*n)*D.RADIANS_PER_DEGREE,a=(176.625+uIe*n)*D.RADIANS_PER_DEGREE,c=(357.529+fIe*n)*D.RADIANS_PER_DEGREE,u=(311.589+dIe*n)*D.RADIANS_PER_DEGREE,f=(134.963+hIe*n)*D.RADIANS_PER_DEGREE,h=(276.617+mIe*n)*D.RADIANS_PER_DEGREE,A=(34.226+AIe*n)*D.RADIANS_PER_DEGREE,g=(15.134+pIe*n)*D.RADIANS_PER_DEGREE,m=(119.743+gIe*n)*D.RADIANS_PER_DEGREE,_=(239.961+_Ie*n)*D.RADIANS_PER_DEGREE,y=(25.053+yIe*n)*D.RADIANS_PER_DEGREE,C=Math.sin(o),E=Math.sin(r),I=Math.sin(s),b=Math.sin(a),S=Math.sin(c),B=Math.sin(u),v=Math.sin(f),P=Math.sin(h),M=Math.sin(A),L=Math.sin(g),p=Math.sin(m),x=Math.sin(_),T=Math.sin(y),w=Math.cos(o),R=Math.cos(r),O=Math.cos(s),k=Math.cos(a),Q=Math.cos(c),z=Math.cos(u),F=Math.cos(f),H=Math.cos(h),W=Math.cos(A),Z=Math.cos(g),Y=Math.cos(m),$=Math.cos(_),X=Math.cos(y),he=(269.9949+.0031*i-3.8787*C-.1204*E+.07*I-.0172*b+.0072*B-.0052*L+.0043*T)*D.RADIANS_PER_DEGREE,ge=(66.5392+.013*i+1.5419*w+.0239*R-.0278*O+.0068*k-.0029*z+9e-4*F+8e-4*Z-9e-4*X)*D.RADIANS_PER_DEGREE,fe=(38.3213+13.17635815*n-14e-13*n*n+3.561*C+.1208*E-.0642*I+.0158*b+.0252*S-.0066*B-.0047*v-.0046*P+.0028*M+.0052*L+.004*p+.0019*x-.0044*T)*D.RADIANS_PER_DEGREE,ye=(13.17635815-14e-13*(2*n)+3.561*w*aIe+.1208*R*cIe-.0642*O*lIe+.0158*k*uIe+.0252*Q*fIe-.0066*z*dIe-.0047*F*hIe-.0046*H*mIe+.0028*W*AIe+.0052*Z*pIe+.004*Y*gIe+.0019*$*_Ie-.0044*X*yIe)/86400*D.RADIANS_PER_DEGREE;return l(t)||(t=new sQ),t.rightAscension=he,t.declination=ge,t.rotation=fe,t.rotationRate=ye,t};var aQ=CIe;function EIe(e){(!l(e)||typeof e!="function")&&(e=aQ.ComputeMoon),this._computeFunction=e}var lpt=new d,upt=new d,fpt=new d;function dpt(e,t,n){let i=lpt;i.x=Math.cos(e+D.PI_OVER_TWO),i.y=Math.sin(e+D.PI_OVER_TWO),i.z=0;let o=Math.cos(t),r=fpt;r.x=o*Math.cos(e),r.y=o*Math.sin(e),r.z=Math.sin(t);let s=d.cross(r,i,upt);return l(n)||(n=new J),n[0]=i.x,n[1]=s.x,n[2]=r.x,n[3]=i.y,n[4]=s.y,n[5]=r.y,n[6]=i.z,n[7]=s.z,n[8]=r.z,n}var hpt=new J,mpt=new Le;EIe.prototype.evaluate=function(e,t){l(e)||(e=K.now());let n=this._computeFunction(e),i=dpt(n.rightAscension,n.declination,t),o=D.zeroToTwoPi(n.rotation),r=Le.fromAxisAngle(d.UNIT_Z,o,mpt),s=J.fromQuaternion(Le.conjugate(r,r),hpt);return J.multiply(s,i,i)};var cQ=EIe;var gJ={position:0};function dH(e){e=e??V.EMPTY_OBJECT,this.center=d.clone(e.center??d.ZERO),this._center=new d,this.radii=d.clone(e.radii),this._radii=new d,this._oneOverEllipsoidRadiiSquared=new d,this._boundingSphere=new le,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this._modelMatrix=new N,this._computedModelMatrix=new N,this.show=e.show??!0,this.material=e.material??ro.fromType(ro.ColorType),this._material=void 0,this._translucent=void 0,this.id=e.id,this._id=void 0,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.onlySunLighting=e.onlySunLighting??!1,this._onlySunLighting=!1,this._depthTestEnabled=e.depthTestEnabled??!0,this._useLogDepth=!1,this._sp=void 0,this._rs=void 0,this._va=void 0,this._pickSP=void 0,this._pickId=void 0,this._colorCommand=new nt({owner:e._owner??this}),this._pickCommand=new nt({owner:e._owner??this,pickOnly:!0});let t=this;this._uniforms={u_radii:function(){return t.radii},u_oneOverEllipsoidRadiiSquared:function(){return t._oneOverEllipsoidRadiiSquared}},this._pickUniforms={czm_pickColor:function(){return t._pickId.color}}}function Apt(e){let t=e.cache.ellipsoidPrimitive_vertexArray;if(l(t))return t;let n=cc.createGeometry(cc.fromDimensions({dimensions:new d(2,2,2),vertexFormat:Pe.POSITION_ONLY}));return t=li.fromGeometry({context:e,geometry:n,attributeLocations:gJ,bufferUsage:Qe.STATIC_DRAW,interleave:!0}),e.cache.ellipsoidPrimitive_vertexArray=t,t}dH.prototype.update=function(e){if(!this.show||e.mode!==ie.SCENE3D||!l(this.center)||!l(this.radii))return;let t=e.context,n=this.material.isTranslucent(),i=this._translucent!==n;(!l(this._rs)||i)&&(this._translucent=n,this._rs=Ue.fromCache({cull:{enabled:!0,face:Mi.FRONT},depthTest:{enabled:this._depthTestEnabled},depthMask:!n&&t.fragmentDepth,blending:n?pn.ALPHA_BLEND:void 0})),l(this._va)||(this._va=Apt(t));let o=!1,r=this.radii;if(!d.equals(this._radii,r)){d.clone(r,this._radii);let _=this._oneOverEllipsoidRadiiSquared;_.x=1/(r.x*r.x),_.y=1/(r.y*r.y),_.z=1/(r.z*r.z),o=!0}(!N.equals(this.modelMatrix,this._modelMatrix)||!d.equals(this.center,this._center))&&(N.clone(this.modelMatrix,this._modelMatrix),d.clone(this.center,this._center),N.multiplyByTranslation(this.modelMatrix,this.center,this._computedModelMatrix),o=!0),o&&(d.clone(d.ZERO,this._boundingSphere.center),this._boundingSphere.radius=d.maximumComponent(r),le.transform(this._boundingSphere,this._computedModelMatrix,this._boundingSphere));let s=this._material!==this.material;this._material=this.material,this._material.update(t);let a=this.onlySunLighting!==this._onlySunLighting;this._onlySunLighting=this.onlySunLighting;let c=e.useLogDepth,u=this._useLogDepth!==c;this._useLogDepth=c;let f=this._colorCommand,h,A;(s||a||i||u)&&(h=new He({sources:[uw]}),A=new He({sources:[this.material.shaderSource,lw]}),this.onlySunLighting&&A.defines.push("ONLY_SUN_LIGHTING"),!n&&t.fragmentDepth&&A.defines.push("WRITE_DEPTH"),this._useLogDepth&&(h.defines.push("LOG_DEPTH"),A.defines.push("LOG_DEPTH")),this._sp=an.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:h,fragmentShaderSource:A,attributeLocations:gJ}),f.vertexArray=this._va,f.renderState=this._rs,f.shaderProgram=this._sp,f.uniformMap=Tt(this._uniforms,this.material._uniforms),f.executeInClosestFrustum=n);let g=e.commandList,m=e.passes;if(m.render&&(f.boundingVolume=this._boundingSphere,f.debugShowBoundingVolume=this.debugShowBoundingVolume,f.modelMatrix=this._computedModelMatrix,f.pass=n?Be.TRANSLUCENT:Be.OPAQUE,g.push(f)),m.pick){let _=this._pickCommand;(!l(this._pickId)||this._id!==this.id)&&(this._id=this.id,this._pickId=this._pickId&&this._pickId.destroy(),this._pickId=t.createPickId({primitive:this,id:this.id})),(s||a||!l(this._pickSP)||u)&&(h=new He({sources:[uw]}),A=new He({sources:[this.material.shaderSource,lw],pickColorQualifier:"uniform"}),this.onlySunLighting&&A.defines.push("ONLY_SUN_LIGHTING"),!n&&t.fragmentDepth&&A.defines.push("WRITE_DEPTH"),this._useLogDepth&&(h.defines.push("LOG_DEPTH"),A.defines.push("LOG_DEPTH")),this._pickSP=an.replaceCache({context:t,shaderProgram:this._pickSP,vertexShaderSource:h,fragmentShaderSource:A,attributeLocations:gJ}),_.vertexArray=this._va,_.renderState=this._rs,_.shaderProgram=this._pickSP,_.uniformMap=Tt(Tt(this._uniforms,this._pickUniforms),this.material._uniforms),_.executeInClosestFrustum=n),_.boundingVolume=this._boundingSphere,_.modelMatrix=this._computedModelMatrix,_.pass=n?Be.TRANSLUCENT:Be.OPAQUE,g.push(_)}};dH.prototype.isDestroyed=function(){return!1};dH.prototype.destroy=function(){return this._sp=this._sp&&this._sp.destroy(),this._pickSP=this._pickSP&&this._pickSP.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),ue(this)};var lQ=dH;function uQ(e){e=e??V.EMPTY_OBJECT;let t=e.textureUrl;l(t)||(t=fn("Assets/Textures/moonSmall.jpg")),this.show=e.show??!0,this.textureUrl=t,this._ellipsoid=e.ellipsoid??te.MOON,this.onlySunLighting=e.onlySunLighting??!0,this._ellipsoidPrimitive=new lQ({radii:this.ellipsoid.radii,material:ro.fromType(ro.ImageType),depthTestEnabled:!1,_owner:this}),this._ellipsoidPrimitive.material.translucent=!1,this._axes=new cQ}Object.defineProperties(uQ.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var hH=new J,ppt=new J,gpt=new d,mH=[];uQ.prototype.update=function(e){if(!this.show)return;let t=this._ellipsoidPrimitive;t.material.uniforms.image=this.textureUrl,t.onlySunLighting=this.onlySunLighting;let n=e.time;l(kt.computeIcrfToFixedMatrix(n,hH))||kt.computeTemeToPseudoFixedMatrix(n,hH);let i=this._axes.evaluate(n,ppt);J.transpose(i,i),J.multiply(hH,i,i);let o=lC.computeMoonPositionInEarthInertialFrame(n,gpt);J.multiplyByVector(hH,o,o),N.fromRotationTranslation(i,o,t.modelMatrix);let r=e.commandList;return e.commandList=mH,mH.length=0,t.update(e),e.commandList=r,mH.length===1?mH[0]:void 0};uQ.prototype.isDestroyed=function(){return!1};uQ.prototype.destroy=function(){return this._ellipsoidPrimitive=this._ellipsoidPrimitive&&this._ellipsoidPrimitive.destroy(),ue(this)};var fQ=uQ;var _J=[],yJ=[];function _pt(e,t,n,i,o,r){let s=o-i+1,a=r-o,c=_J,u=yJ,f,h;for(f=0;f<s;++f)c[f]=e[i+f];for(h=0;h<a;++h)u[h]=e[o+h+1];f=0,h=0;for(let A=i;A<=r;++A){let g=c[f],m=u[h];f<s&&(h>=a||t(g,m,n)<=0)?(e[A]=g,++f):h<a&&(e[A]=m,++h)}}function CJ(e,t,n,i,o){if(i>=o)return;let r=Math.floor((i+o)*.5);CJ(e,t,n,i,r),CJ(e,t,n,r+1,o),_pt(e,t,n,i,r,o)}function ypt(e,t,n){let i=e.length,o=Math.ceil(i*.5);_J.length=o,yJ.length=o,CJ(e,t,n,0,i-1),_J.length=0,yJ.length=0}var vA=ypt;function $c(e,t){this._occluderPosition=d.clone(e.center),this._occluderRadius=e.radius,this._horizonDistance=0,this._horizonPlaneNormal=void 0,this._horizonPlanePosition=void 0,this._cameraPosition=void 0,this.cameraPosition=t}var AH=new d;Object.defineProperties($c.prototype,{position:{get:function(){return this._occluderPosition}},radius:{get:function(){return this._occluderRadius}},cameraPosition:{set:function(e){e=d.clone(e,this._cameraPosition);let t=d.subtract(this._occluderPosition,e,AH),n=d.magnitudeSquared(t),i=this._occluderRadius*this._occluderRadius,o,r,s;if(n>i){o=Math.sqrt(n-i),n=1/Math.sqrt(n),r=d.multiplyByScalar(t,n,AH);let a=o*o*n;s=d.add(e,d.multiplyByScalar(r,a,AH),AH)}else o=Number.MAX_VALUE;this._horizonDistance=o,this._horizonPlaneNormal=r,this._horizonPlanePosition=s,this._cameraPosition=e}}});$c.fromBoundingSphere=function(e,t,n){return l(n)?(d.clone(e.center,n._occluderPosition),n._occluderRadius=e.radius,n.cameraPosition=t,n):new $c(e,t)};var xIe=new d;$c.prototype.isPointVisible=function(e){if(this._horizonDistance!==Number.MAX_VALUE){let t=d.subtract(e,this._occluderPosition,xIe),n=this._occluderRadius;if(n=d.magnitudeSquared(t)-n*n,n>0)return n=Math.sqrt(n)+this._horizonDistance,t=d.subtract(e,this._cameraPosition,t),n*n>d.magnitudeSquared(t)}return!1};var Cpt=new d;$c.prototype.isBoundingSphereVisible=function(e){let t=d.clone(e.center,Cpt),n=e.radius;if(this._horizonDistance!==Number.MAX_VALUE){let i=d.subtract(t,this._occluderPosition,xIe),o=this._occluderRadius-n;if(o=d.magnitudeSquared(i)-o*o,n<this._occluderRadius)return o>0?(o=Math.sqrt(o)+this._horizonDistance,i=d.subtract(t,this._cameraPosition,i),o*o+n*n>d.magnitudeSquared(i)):!1;if(o>0){i=d.subtract(t,this._cameraPosition,i);let r=d.magnitudeSquared(i),s=this._occluderRadius*this._occluderRadius,a=n*n;return(this._horizonDistance*this._horizonDistance+s)*a>r*s?!0:(o=Math.sqrt(o)+this._horizonDistance,o*o+a>r)}return!0}return!1};var Ept=new d;$c.prototype.computeVisibility=function(e){let t=d.clone(e.center),n=e.radius;if(n>this._occluderRadius)return Mr.FULL;if(this._horizonDistance!==Number.MAX_VALUE){let i=d.subtract(t,this._occluderPosition,Ept),o=this._occluderRadius-n,r=d.magnitudeSquared(i);if(o=r-o*o,o>0){o=Math.sqrt(o)+this._horizonDistance,i=d.subtract(t,this._cameraPosition,i);let s=d.magnitudeSquared(i);return o*o+n*n<s?Mr.NONE:(o=this._occluderRadius+n,o=r-o*o,o>0?(o=Math.sqrt(o)+this._horizonDistance,s<o*o+n*n?Mr.FULL:Mr.PARTIAL):(i=d.subtract(t,this._horizonPlanePosition,i),d.dot(i,this._horizonPlaneNormal)>-n?Mr.PARTIAL:Mr.FULL))}}return Mr.NONE};var pH=new d;$c.computeOccludeePoint=function(e,t,n){let i=d.clone(t),o=d.clone(e.center),r=e.radius,s=n.length,a=d.normalize(d.subtract(i,o,pH),pH),c=-d.dot(a,o),u=$c._anyRotationVector(o,a,c),f=$c._horizonToPlaneNormalDotProduct(e,a,c,u,n[0]);if(!f)return;let h;for(let g=1;g<s;++g){if(h=$c._horizonToPlaneNormalDotProduct(e,a,c,u,n[g]),!h)return;h<f&&(f=h)}if(f<.0017453283658983088)return;let A=r/f;return d.add(o,d.multiplyByScalar(a,A,pH),pH)};var Ipt=[];$c.computeOccludeePointFromRectangle=function(e,t){t=t??te.default;let n=ae.subsample(e,t,0,Ipt),i=le.fromPoints(n),o=d.ZERO;if(!d.equals(o,i.center))return $c.computeOccludeePoint(new le(o,t.minimumRadius),i.center,n)};var xpt=new d;$c._anyRotationVector=function(e,t,n){let i=d.abs(t,xpt),o=i.x>i.y?0:1;(o===0&&i.z>i.x||o===1&&i.z>i.y)&&(o=2);let r=new d,s;o===0?(i.x=e.x,i.y=e.y+1,i.z=e.z+1,s=d.UNIT_X):o===1?(i.x=e.x+1,i.y=e.y,i.z=e.z+1,s=d.UNIT_Y):(i.x=e.x+1,i.y=e.y+1,i.z=e.z,s=d.UNIT_Z);let a=(d.dot(t,i)+n)/-d.dot(t,s);return d.normalize(d.subtract(d.add(i,d.multiplyByScalar(s,a,r),i),e,i),i)};var bpt=new d;$c._rotationVector=function(e,t,n,i,o){let r=d.subtract(i,e,bpt);if(r=d.normalize(r,r),d.dot(t,r)<.9999999847691291){let s=d.cross(t,r,r);if(d.magnitude(s)>D.EPSILON13)return d.normalize(s,new d)}return o};var EJ=new d,Tpt=new d,gH=new d,IIe=new d;$c._horizonToPlaneNormalDotProduct=function(e,t,n,i,o){let r=d.clone(o,EJ),s=d.clone(e.center,Tpt),a=e.radius,c=d.subtract(s,r,gH),u=d.magnitudeSquared(c),f=a*a;if(u<f)return!1;let h=u-f,A=Math.sqrt(h),m=1/Math.sqrt(u),y=A*m*A;c=d.normalize(c,c);let C=d.add(r,d.multiplyByScalar(c,y,IIe),IIe),E=Math.sqrt(h-y*y),I=this._rotationVector(s,t,n,r,i),b=d.fromElements(I.x*I.x*c.x+(I.x*I.y-I.z)*c.y+(I.x*I.z+I.y)*c.z,(I.x*I.y+I.z)*c.x+I.y*I.y*c.y+(I.y*I.z-I.x)*c.z,(I.x*I.z-I.y)*c.x+(I.y*I.z+I.x)*c.y+I.z*I.z*c.z,EJ);b=d.normalize(b,b);let S=d.multiplyByScalar(b,E,EJ);I=d.normalize(d.subtract(d.add(C,S,gH),s,gH),gH);let B=d.dot(t,I);I=d.normalize(d.subtract(d.subtract(C,S,I),s,I),I);let v=d.dot(t,I);return B<v?B:v};var dQ=$c;function PA(e){e=e??V.EMPTY_OBJECT,this.left=e.left,this._left=void 0,this.right=e.right,this._right=void 0,this.top=e.top,this._top=void 0,this.bottom=e.bottom,this._bottom=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this._cullingVolume=new Os,this._perspectiveMatrix=new N,this._infinitePerspective=new N}function IJ(e){let{top:t,bottom:n,right:i,left:o,near:r,far:s}=e;(t!==e._top||n!==e._bottom||o!==e._left||i!==e._right||r!==e._near||s!==e._far)&&(e._left=o,e._right=i,e._top=t,e._bottom=n,e._near=r,e._far=s,e._perspectiveMatrix=N.computePerspectiveOffCenter(o,i,n,t,r,s,e._perspectiveMatrix),e._infinitePerspective=N.computeInfinitePerspectiveOffCenter(o,i,n,t,r,e._infinitePerspective))}Object.defineProperties(PA.prototype,{projectionMatrix:{get:function(){return IJ(this),this._perspectiveMatrix}},infiniteProjectionMatrix:{get:function(){return IJ(this),this._infinitePerspective}}});var Spt=new d,wpt=new d,Bpt=new d,Dpt=new d;PA.prototype.computeCullingVolume=function(e,t,n){let i=this._cullingVolume.planes,o=this.top,r=this.bottom,s=this.right,a=this.left,c=this.near,u=this.far,f=d.cross(t,n,Spt),h=wpt;d.multiplyByScalar(t,c,h),d.add(e,h,h);let A=Bpt;d.multiplyByScalar(t,u,A),d.add(e,A,A);let g=Dpt;d.multiplyByScalar(f,a,g),d.add(h,g,g),d.subtract(g,e,g),d.normalize(g,g),d.cross(g,n,g),d.normalize(g,g);let m=i[0];return l(m)||(m=i[0]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),d.multiplyByScalar(f,s,g),d.add(h,g,g),d.subtract(g,e,g),d.cross(n,g,g),d.normalize(g,g),m=i[1],l(m)||(m=i[1]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),d.multiplyByScalar(n,r,g),d.add(h,g,g),d.subtract(g,e,g),d.cross(f,g,g),d.normalize(g,g),m=i[2],l(m)||(m=i[2]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),d.multiplyByScalar(n,o,g),d.add(h,g,g),d.subtract(g,e,g),d.cross(g,f,g),d.normalize(g,g),m=i[3],l(m)||(m=i[3]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),m=i[4],l(m)||(m=i[4]=new se),m.x=t.x,m.y=t.y,m.z=t.z,m.w=-d.dot(t,h),d.negate(t,g),m=i[5],l(m)||(m=i[5]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,A),this._cullingVolume};PA.prototype.getPixelDimensions=function(e,t,n,i,o){IJ(this);let r=1/this.near,s=this.top*r,a=2*i*n*s/t;s=this.right*r;let c=2*i*n*s/e;return o.x=c,o.y=a,o};PA.prototype.clone=function(e){return l(e)||(e=new PA),e.right=this.right,e.left=this.left,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e._left=void 0,e._right=void 0,e._top=void 0,e._bottom=void 0,e._near=void 0,e._far=void 0,e};PA.prototype.equals=function(e){return l(e)&&e instanceof PA&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far};PA.prototype.equalsEpsilon=function(e,t,n){return e===this||l(e)&&e instanceof PA&&D.equalsEpsilon(this.right,e.right,t,n)&&D.equalsEpsilon(this.left,e.left,t,n)&&D.equalsEpsilon(this.top,e.top,t,n)&&D.equalsEpsilon(this.bottom,e.bottom,t,n)&&D.equalsEpsilon(this.near,e.near,t,n)&&D.equalsEpsilon(this.far,e.far,t,n)};var Vl=PA;function Su(e){e=e??V.EMPTY_OBJECT,this._offCenterFrustum=new Vl,this.fov=e.fov,this._fov=void 0,this._fovy=void 0,this._sseDenominator=void 0,this.aspectRatio=e.aspectRatio,this._aspectRatio=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this.xOffset=e.xOffset??0,this._xOffset=this.xOffset,this.yOffset=e.yOffset??0,this._yOffset=this.yOffset}Su.packedLength=6;Su.pack=function(e,t,n){return n=n??0,t[n++]=e.fov,t[n++]=e.aspectRatio,t[n++]=e.near,t[n++]=e.far,t[n++]=e.xOffset,t[n]=e.yOffset,t};Su.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Su),n.fov=e[t++],n.aspectRatio=e[t++],n.near=e[t++],n.far=e[t++],n.xOffset=e[t++],n.yOffset=e[t],n};function gm(e){if(!(e.fov!==e._fov||e.aspectRatio!==e._aspectRatio||e.near!==e._near||e.far!==e._far||e.xOffset!==e._xOffset||e.yOffset!==e._yOffset))return;e._aspectRatio=e.aspectRatio,e._fov=e.fov,e._fovy=e.aspectRatio<=1?e.fov:Math.atan(Math.tan(e.fov*.5)/e.aspectRatio)*2,e._near=e.near,e._far=e.far,e._sseDenominator=2*Math.tan(.5*e._fovy),e._xOffset=e.xOffset,e._yOffset=e.yOffset;let n=e._offCenterFrustum;n.top=e.near*Math.tan(.5*e._fovy),n.bottom=-n.top,n.right=e.aspectRatio*n.top,n.left=-n.right,n.near=e.near,n.far=e.far,n.right+=e.xOffset,n.left+=e.xOffset,n.top+=e.yOffset,n.bottom+=e.yOffset}Object.defineProperties(Su.prototype,{projectionMatrix:{get:function(){return gm(this),this._offCenterFrustum.projectionMatrix}},infiniteProjectionMatrix:{get:function(){return gm(this),this._offCenterFrustum.infiniteProjectionMatrix}},fovy:{get:function(){return gm(this),this._fovy}},sseDenominator:{get:function(){return gm(this),this._sseDenominator}},offCenterFrustum:{get:function(){return gm(this),this._offCenterFrustum}}});Su.prototype.computeCullingVolume=function(e,t,n){return gm(this),this._offCenterFrustum.computeCullingVolume(e,t,n)};Su.prototype.getPixelDimensions=function(e,t,n,i,o){return gm(this),this._offCenterFrustum.getPixelDimensions(e,t,n,i,o)};Su.prototype.clone=function(e){return l(e)||(e=new Su),e.aspectRatio=this.aspectRatio,e.fov=this.fov,e.near=this.near,e.far=this.far,e._aspectRatio=void 0,e._fov=void 0,e._near=void 0,e._far=void 0,this._offCenterFrustum.clone(e._offCenterFrustum),e};Su.prototype.equals=function(e){return!l(e)||!(e instanceof Su)?!1:(gm(this),gm(e),this.fov===e.fov&&this.aspectRatio===e.aspectRatio&&this._offCenterFrustum.equals(e._offCenterFrustum))};Su.prototype.equalsEpsilon=function(e,t,n){return!l(e)||!(e instanceof Su)?!1:(gm(this),gm(e),D.equalsEpsilon(this.fov,e.fov,t,n)&&D.equalsEpsilon(this.aspectRatio,e.aspectRatio,t,n)&&this._offCenterFrustum.equalsEpsilon(e._offCenterFrustum,t,n))};var ki=Su;function hQ(){this._colorTexture=void 0,this._drawCommand=void 0}Object.defineProperties(hQ.prototype,{colorTexture:{get:function(){return this._colorTexture}}});function vpt(e,t,n){let i=t.createViewportQuadCommand(w2,{framebuffer:n,renderState:Ue.fromCache({viewport:new Ye(0,0,256,256)})});e._drawCommand=i}hQ.prototype.update=function(e){if(!l(this._colorTexture)){let t=e.context,n=new Mt({context:t,width:256,height:256,pixelFormat:$e.RGBA,pixelDatatype:Ve.UNSIGNED_BYTE,sampler:on.NEAREST});this._colorTexture=n;let i=new $r({context:t,colorTextures:[n],destroyAttachments:!1});vpt(this,t,i),this._drawCommand.execute(t),i.destroy(),this._drawCommand.shaderProgram=this._drawCommand.shaderProgram&&this._drawCommand.shaderProgram.destroy()}};hQ.prototype.isDestroyed=function(){return!1};hQ.prototype.destroy=function(){return this._colorTexture=this._colorTexture&&this._colorTexture.destroy(),ue(this)};var mQ=hQ;var wIe={};function Ppt(e,t,n){let i,o,r;if(e instanceof ki){let s=Math.tan(.5*e.fovy);return i=e.near,o=e.near*s,r=e.aspectRatio*o,Math.max(t*i/r,n*i/o)}else if(e instanceof Vl)return i=e.near,o=e.top,r=e.right,Math.max(t*i/r,n*i/o);return Math.max(t,n)}var Rpt=new d,bIe=new d;function BIe(e,t,n,i){if(l(i)&&n(.5)>i){let o=n(0),r=n(1),s=n(.5),a=s-o,c=s-r;return function(u){let f=n(u);if(u<=.5){let A=(f-o)/a;return D.lerp(e,-D.PI_OVER_TWO,A)}let h=(f-r)/c;return D.lerp(-D.PI_OVER_TWO,t,1-h)}}return function(o){return D.lerp(e,t,o)}}function bJ(e,t,n,i,o){let r=o,s=Math.max(n,i);if(!l(r)){let a=e.position,c=t,u=e.up,f=e.right,h=e.frustum,A=d.subtract(a,c,Rpt),g=d.magnitude(d.multiplyByScalar(u,d.dot(A,u),bIe)),m=d.magnitude(d.multiplyByScalar(f,d.dot(A,f),bIe));r=Math.min(Ppt(h,g,m)*.2,1e9)}if(s<r){let u=-Math.pow((r-n)*1e6,.125),f=Math.pow((r-i)*1e6,1/8);return function(h){let A=h*(f-u)+u;return-Math.pow(A,8)/1e6+r}}return function(a){return D.lerp(n,i,a)}}function AQ(e,t){return D.equalsEpsilon(e,D.TWO_PI,D.EPSILON11)&&(e=0),t>e+Math.PI?e+=D.TWO_PI:t<e-Math.PI&&(e-=D.TWO_PI),e}var DIe=new d;function Mpt(e,t,n,i,o,r,s,a){let c=e.camera,u=d.clone(c.position,DIe),f=c.pitch,h=AQ(c.heading,i),A=AQ(c.roll,r),g=bJ(c,n,u.z,n.z,s),m=BIe(f,o,g,a);function _(y){let C=y.time/t;c.setView({orientation:{heading:D.lerp(h,i,C),pitch:m(C),roll:D.lerp(A,r,C)}}),U.lerp(u,n,C,c.position),c.position.z=g(C)}return _}function Npt(e,t){e.longitude<t.longitude?e.longitude+=D.TWO_PI:t.longitude+=D.TWO_PI}function Lpt(e,t){let n=e.longitude-t.longitude;n<-D.PI?e.longitude+=D.TWO_PI:n>D.PI&&(t.longitude+=D.TWO_PI)}var Opt=new Ae,Fpt=new Ae;function Qpt(e,t,n,i,o,r,s,a,c,u){let f=e.camera,A=e.mapProjection.ellipsoid,g=Ae.clone(f.positionCartographic,Opt),m=f.pitch,_=AQ(f.heading,i),y=AQ(f.roll,r),C=A.cartesianToCartographic(n,Fpt);g.longitude=D.zeroToTwoPi(g.longitude),C.longitude=D.zeroToTwoPi(C.longitude);let E=!1;if(l(a)){let B=D.zeroToTwoPi(a),v=Math.min(g.longitude,C.longitude),P=Math.max(g.longitude,C.longitude),M=B>=v&&B<=P;if(l(c)){let L=Math.abs(g.longitude-C.longitude),p=D.TWO_PI-L;(M?L:p)<(M?p:L)*c&&!M&&(E=!0)}else M||(E=!0)}E?Npt(g,C):Lpt(g,C);let I=bJ(f,n,g.height,C.height,s),b=BIe(m,o,I,u);function S(){let B=g.longitude,v=C.longitude,P=g.latitude,M=C.latitude;return function(p){let x=p.time/t,T=d.fromRadians(D.lerp(B,v,x),D.lerp(P,M,x),I(x),A);f.setView({destination:T,orientation:{heading:D.lerp(_,i,x),pitch:b(x),roll:D.lerp(y,r,x)}})}}return S()}function kpt(e,t,n,i,o,r,s){let a=e.camera,c=d.clone(a.position,DIe),u=AQ(a.heading,i),f=a.frustum.right-a.frustum.left,h=bJ(a,n,f,n.z,s);function A(g){let m=g.time/t;a.setView({orientation:{heading:D.lerp(u,i,m)}}),U.lerp(c,n,m,a.position);let _=h(m),y=a.frustum,C=y.top/y.right,E=(_-(y.right-y.left))*.5;y.right+=E,y.left-=E,y.top=C*y.right,y.bottom=-y.top}return A}var TIe=new Ae,Upt=new d;function xJ(e,t){return{startObject:{},stopObject:{},duration:0,complete:e,cancel:t}}function SIe(e,t){function n(){typeof t=="function"&&t(),e.enableInputs=!0}return n}wIe.createTween=function(e,t){t=t??V.EMPTY_OBJECT;let n=t.destination,i=e.mode;if(i===ie.MORPHING)return xJ();let o=t.convert??!0,r=e.mapProjection,s=r.ellipsoid,a=t.maximumHeight,c=t.flyOverLongitude,u=t.flyOverLongitudeWeight,f=t.pitchAdjustHeight,h=t.easingFunction;o&&i!==ie.SCENE3D&&(s.cartesianToCartographic(n,TIe),n=r.project(TIe,Upt));let A=e.camera,g=t.endTransform;l(g)&&A._setTransform(g);let m=t.duration;l(m)||(m=Math.ceil(d.distance(A.position,n)/1e6)+2,m=Math.min(m,3));let _=t.heading??0,y=t.pitch??-D.PI_OVER_TWO,C=t.roll??0,E=e.screenSpaceCameraController;E.enableInputs=!1;let I=SIe(E,t.complete),b=SIe(E,t.cancel),S=A.frustum,B=e.mode===ie.SCENE2D;if(B=B&&U.equalsEpsilon(A.position,n,D.EPSILON6),B=B&&D.equalsEpsilon(Math.max(S.right-S.left,S.top-S.bottom),n.z,D.EPSILON6),B=B||e.mode!==ie.SCENE2D&&d.equalsEpsilon(n,A.position,D.EPSILON10),B=B&&D.equalsEpsilon(D.negativePiToPi(_),D.negativePiToPi(A.heading),D.EPSILON10)&&D.equalsEpsilon(D.negativePiToPi(y),D.negativePiToPi(A.pitch),D.EPSILON10)&&D.equalsEpsilon(D.negativePiToPi(C),D.negativePiToPi(A.roll),D.EPSILON10),B)return xJ(I,b);let v=new Array(4);if(v[ie.SCENE2D]=kpt,v[ie.SCENE3D]=Qpt,v[ie.COLUMBUS_VIEW]=Mpt,m<=0)return xJ(function(){v[i](e,1,n,_,y,C,a,c,u,f)({time:1}),typeof I=="function"&&I()},b);let P=v[i](e,m,n,_,y,C,a,c,u,f);if(!l(h)){let M=A.positionCartographic.height,L=i===ie.SCENE3D?s.cartesianToCartographic(n).height:n.z;M>L&&M>11500?h=ms.CUBIC_OUT:h=ms.QUINTIC_IN_OUT}return{duration:m,easingFunction:h,startObject:{time:0},stopObject:{time:m},update:P,complete:I,cancel:b}};var pQ=wIe;var Gpt={ROTATE:0,INFINITE_SCROLL:1},wu=Object.freeze(Gpt);function ln(e){this._scene=e,this._transform=N.clone(N.IDENTITY),this._invTransform=N.clone(N.IDENTITY),this._actualTransform=N.clone(N.IDENTITY),this._actualInvTransform=N.clone(N.IDENTITY),this._transformChanged=!1,this.position=new d,this._position=new d,this._positionWC=new d,this._positionCartographic=new Ae,this._oldPositionWC=void 0,this.positionWCDeltaMagnitude=0,this.positionWCDeltaMagnitudeLastFrame=0,this.timeSinceMoved=0,this._lastMovedTimestamp=0,this.direction=new d,this._direction=new d,this._directionWC=new d,this.up=new d,this._up=new d,this._upWC=new d,this.right=new d,this._right=new d,this._rightWC=new d,this.frustum=new ki,this.frustum.aspectRatio=e.drawingBufferWidth/e.drawingBufferHeight,this.frustum.fov=D.toRadians(60),this.defaultMoveAmount=1e5,this.defaultLookAmount=Math.PI/60,this.defaultRotateAmount=Math.PI/3600,this.defaultZoomAmount=1e5,this.constrainedAxis=void 0,this.maximumZoomFactor=1.5,this._moveStart=new _e,this._moveEnd=new _e,this._changed=new _e,this._changedPosition=void 0,this._changedDirection=void 0,this._changedFrustum=void 0,this._changedHeading=void 0,this._changedRoll=void 0,this.percentageChanged=.5,this._viewMatrix=new N,this._invViewMatrix=new N,FIe(this),this._mode=ie.SCENE3D,this._modeChanged=!0;let t=e.mapProjection;this._projection=t,this._maxCoord=t.project(new Ae(Math.PI,D.PI_OVER_TWO)),this._max2Dfrustum=void 0,KIe(this,ln.DEFAULT_VIEW_RECTANGLE,this.position,!0);let n=d.magnitude(this.position);n+=n*ln.DEFAULT_VIEW_FACTOR,d.normalize(this.position,this.position),d.multiplyByScalar(this.position,n,this.position)}ln.TRANSFORM_2D=new N(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);ln.TRANSFORM_2D_INVERSE=N.inverseTransformation(ln.TRANSFORM_2D,new N);ln.DEFAULT_VIEW_RECTANGLE=ae.fromDegrees(-95,-20,-70,90);ln.DEFAULT_VIEW_FACTOR=.5;ln.DEFAULT_OFFSET=new Md(0,-D.PI_OVER_FOUR,0);function FIe(e){N.computeView(e._position,e._direction,e._up,e._right,e._viewMatrix),N.multiply(e._viewMatrix,e._actualInvTransform,e._viewMatrix),N.inverseTransformation(e._viewMatrix,e._invViewMatrix)}function zpt(e){if(!l(e._oldPositionWC))e._oldPositionWC=d.clone(e.positionWC,e._oldPositionWC);else{e.positionWCDeltaMagnitudeLastFrame=e.positionWCDeltaMagnitude;let t=d.subtract(e.positionWC,e._oldPositionWC,e._oldPositionWC);e.positionWCDeltaMagnitude=d.magnitude(t),e._oldPositionWC=d.clone(e.positionWC,e._oldPositionWC),e.positionWCDeltaMagnitude>0?(e.timeSinceMoved=0,e._lastMovedTimestamp=Li()):e.timeSinceMoved=Math.max(Li()-e._lastMovedTimestamp,0)/1e3}}ln.prototype.canPreloadFlight=function(){return l(this._currentFlight)&&this._mode!==ie.SCENE2D};ln.prototype._updateCameraChanged=function(){let e=this;if(zpt(e),e._changed.numberOfListeners===0)return;let t=e.percentageChanged,n=e.heading;l(e._changedHeading)||(e._changedHeading=n);let i=Math.abs(e._changedHeading-n)%D.TWO_PI;i=i>D.PI?D.TWO_PI-i:i;let o=i/Math.PI;o>t&&(e._changedHeading=n);let r=e.roll;l(e._changedRoll)||(e._changedRoll=r);let s=Math.abs(e._changedRoll-r)%D.TWO_PI;s=s>D.PI?D.TWO_PI-s:s;let a=s/Math.PI;if(a>t&&(e._changedRoll=r),(a>t||o>t)&&e._changed.raiseEvent(Math.max(a,o)),e._mode===ie.SCENE2D){if(!l(e._changedFrustum)){e._changedPosition=d.clone(e.position,e._changedPosition),e._changedFrustum=e.frustum.clone();return}let A=e.position,g=e._changedPosition,m=e.frustum,_=e._changedFrustum,y=A.x+m.left,C=A.x+m.right,E=g.x+_.left,I=g.x+_.right,b=A.y+m.bottom,S=A.y+m.top,B=g.y+_.bottom,v=g.y+_.top,P=Math.max(y,E),M=Math.min(C,I),L=Math.max(b,B),p=Math.min(S,v),x;if(P>=M||L>=S)x=1;else{let T=_;y<E&&C>I&&b<B&&S>v&&(T=m),x=1-(M-P)*(p-L)/((T.right-T.left)*(T.top-T.bottom))}x>t&&(e._changed.raiseEvent(x),e._changedPosition=d.clone(e.position,e._changedPosition),e._changedFrustum=e.frustum.clone(e._changedFrustum));return}if(!l(e._changedDirection)){e._changedPosition=d.clone(e.positionWC,e._changedPosition),e._changedDirection=d.clone(e.directionWC,e._changedDirection);return}let c=D.acosClamped(d.dot(e.directionWC,e._changedDirection)),u;l(e.frustum.fovy)?u=c/(e.frustum.fovy*.5):u=c;let h=d.distance(e.positionWC,e._changedPosition)/e.positionCartographic.height;(u>t||h>t)&&(e._changed.raiseEvent(Math.max(u,h)),e._changedPosition=d.clone(e.positionWC,e._changedPosition),e._changedDirection=d.clone(e.directionWC,e._changedDirection))};function Vpt(e){kt.basisTo2D(e._projection,e._transform,e._actualTransform)}var Hpt=new Ae,Wpt=new d,_H=new d,jpt=new se,Ypt=new se,qpt=new se,Kpt=new se,Xpt=new se;function Jpt(e){let t=e._projection,n=t.ellipsoid,i=N.getColumn(e._transform,3,jpt),o=n.cartesianToCartographic(i,Hpt),r=t.project(o,Wpt),s=Ypt;s.x=r.z,s.y=r.x,s.z=r.y,s.w=1;let a=se.clone(se.UNIT_X,Xpt),c=se.add(N.getColumn(e._transform,0,_H),i,_H);n.cartesianToCartographic(c,o),t.project(o,r);let u=qpt;u.x=r.z,u.y=r.x,u.z=r.y,u.w=0,d.subtract(u,s,u),u.x=0;let f=Kpt;if(d.magnitudeSquared(u)>D.EPSILON10)d.cross(a,u,f);else{let h=se.add(N.getColumn(e._transform,1,_H),i,_H);n.cartesianToCartographic(h,o),t.project(o,r),f.x=r.z,f.y=r.x,f.z=r.y,f.w=0,d.subtract(f,s,f),f.x=0,d.magnitudeSquared(f)<D.EPSILON10&&(se.clone(se.UNIT_Y,u),se.clone(se.UNIT_Z,f))}d.cross(f,a,u),d.normalize(u,u),d.cross(a,u,f),d.normalize(f,f),N.setColumn(e._actualTransform,0,u,e._actualTransform),N.setColumn(e._actualTransform,1,f,e._actualTransform),N.setColumn(e._actualTransform,2,a,e._actualTransform),N.setColumn(e._actualTransform,3,s,e._actualTransform)}var TJ=new d;function tl(e){let t=e._mode,n=!1,i=0;t===ie.SCENE2D&&(i=e.frustum.right-e.frustum.left,n=i!==e._positionCartographic.height);let o=e._position,r=!d.equals(o,e.position)||n;r&&(o=d.clone(e.position,e._position));let s=e._direction,a=!d.equals(s,e.direction);a&&(d.normalize(e.direction,e.direction),s=d.clone(e.direction,e._direction));let c=e._up,u=!d.equals(c,e.up);u&&(d.normalize(e.up,e.up),c=d.clone(e.up,e._up));let f=e._right,h=!d.equals(f,e.right);h&&(d.normalize(e.right,e.right),f=d.clone(e.right,e._right));let A=e._transformChanged||e._modeChanged;e._transformChanged=!1,A&&(N.inverseTransformation(e._transform,e._invTransform),e._mode===ie.COLUMBUS_VIEW||e._mode===ie.SCENE2D?N.equals(N.IDENTITY,e._transform)?N.clone(ln.TRANSFORM_2D,e._actualTransform):e._mode===ie.COLUMBUS_VIEW?Vpt(e):Jpt(e):N.clone(e._transform,e._actualTransform),N.inverseTransformation(e._actualTransform,e._actualInvTransform),e._modeChanged=!1);let g=e._actualTransform;if(r||A)if(e._positionWC=N.multiplyByPoint(g,o,e._positionWC),t===ie.SCENE3D||t===ie.MORPHING)e._positionCartographic=e._projection.ellipsoid.cartesianToCartographic(e._positionWC,e._positionCartographic);else{let m=TJ;m.x=e._positionWC.y,m.y=e._positionWC.z,m.z=e._positionWC.x,t===ie.SCENE2D&&(m.z=i),e._projection.unproject(m,e._positionCartographic)}if(a||u||h){let m=d.dot(s,d.cross(c,f,TJ));if(Math.abs(1-m)>D.EPSILON2){let _=1/d.magnitudeSquared(c),y=d.dot(c,s)*_,C=d.multiplyByScalar(s,y,TJ);c=d.normalize(d.subtract(c,C,e._up),e._up),d.clone(c,e.up),f=d.cross(s,c,e._right),d.clone(f,e.right)}}(a||A)&&(e._directionWC=N.multiplyByPointAsVector(g,s,e._directionWC),d.normalize(e._directionWC,e._directionWC)),(u||A)&&(e._upWC=N.multiplyByPointAsVector(g,c,e._upWC),d.normalize(e._upWC,e._upWC)),(h||A)&&(e._rightWC=N.multiplyByPointAsVector(g,f,e._rightWC),d.normalize(e._rightWC,e._rightWC)),(r||a||u||h||A)&&FIe(e)}function QIe(e,t){let n;return D.equalsEpsilon(Math.abs(e.z),1,D.EPSILON3)?n=Math.atan2(t.y,t.x)-D.PI_OVER_TWO:n=Math.atan2(e.y,e.x)-D.PI_OVER_TWO,D.TWO_PI-D.zeroToTwoPi(n)}function kIe(e){return D.PI_OVER_TWO-D.acosClamped(e.z)}function UIe(e,t,n){let i=0;return D.equalsEpsilon(Math.abs(e.z),1,D.EPSILON3)||(i=Math.atan2(-n.z,t.z),i=D.zeroToTwoPi(i+D.TWO_PI)),i}var EH=new N,IH=new N;Object.defineProperties(ln.prototype,{transform:{get:function(){return this._transform}},inverseTransform:{get:function(){return tl(this),this._invTransform}},viewMatrix:{get:function(){return tl(this),this._viewMatrix}},inverseViewMatrix:{get:function(){return tl(this),this._invViewMatrix}},positionCartographic:{get:function(){return tl(this),this._positionCartographic}},positionWC:{get:function(){return tl(this),this._positionWC}},directionWC:{get:function(){return tl(this),this._directionWC}},upWC:{get:function(){return tl(this),this._upWC}},rightWC:{get:function(){return tl(this),this._rightWC}},heading:{get:function(){if(this._mode!==ie.MORPHING){let e=this._projection.ellipsoid,t=N.clone(this._transform,EH),n=kt.eastNorthUpToFixedFrame(this.positionWC,e,IH);this._setTransform(n);let i=QIe(this.direction,this.up);return this._setTransform(t),i}}},pitch:{get:function(){if(this._mode!==ie.MORPHING){let e=this._projection.ellipsoid,t=N.clone(this._transform,EH),n=kt.eastNorthUpToFixedFrame(this.positionWC,e,IH);this._setTransform(n);let i=kIe(this.direction);return this._setTransform(t),i}}},roll:{get:function(){if(this._mode!==ie.MORPHING){let e=this._projection.ellipsoid,t=N.clone(this._transform,EH),n=kt.eastNorthUpToFixedFrame(this.positionWC,e,IH);this._setTransform(n);let i=UIe(this.direction,this.up,this.right);return this._setTransform(t),i}}},moveStart:{get:function(){return this._moveStart}},moveEnd:{get:function(){return this._moveEnd}},changed:{get:function(){return this._changed}}});ln.prototype.update=function(e){let t=!1;if(e!==this._mode&&(this._mode=e,this._modeChanged=e!==ie.MORPHING,t=this._mode===ie.SCENE2D),t){let n=this._max2Dfrustum=this.frustum.clone(),i=2,o=n.top/n.right;n.right=this._maxCoord.x*i,n.left=-n.right,n.top=o*n.right,n.bottom=-n.top}this._mode===ie.SCENE2D&&HIe(this,this.position)};var Zpt=new d,$pt=new d,egt=new d;ln.prototype._setTransform=function(e){let t=d.clone(this.positionWC,Zpt),n=d.clone(this.upWC,$pt),i=d.clone(this.directionWC,egt);N.clone(e,this._transform),this._transformChanged=!0,tl(this);let o=this._actualInvTransform;N.multiplyByPoint(o,t,this.position),N.multiplyByPointAsVector(o,i,this.direction),N.multiplyByPointAsVector(o,n,this.up),d.cross(this.direction,this.up,this.right),tl(this)};var tgt=new U,ngt=new In,igt=new d,ogt=new d;function GIe(e){if(!N.equals(N.IDENTITY,e.transform))return d.magnitude(e.position);let t=e._scene,n=t.globe,i=tgt;i.x=t.drawingBufferWidth/t.pixelRatio/2,i.y=t.drawingBufferHeight/t.pixelRatio/2;let o;if(l(n)){let a=e.getPickRay(i,ngt);o=n.pickWorldCoordinates(a,t,!0,igt)}let r;t.pickPositionSupported&&(r=t.pickPositionWorldCoordinates(i,ogt));let s;if(l(o)||l(r)){let a=l(r)?d.distance(r,e.positionWC):Number.POSITIVE_INFINITY,c=l(o)?d.distance(o,e.positionWC):Number.POSITIVE_INFINITY;s=Math.min(a,c)}else s=Math.max(e.positionCartographic.height,0);return s}ln.prototype._adjustOrthographicFrustum=function(e){this.frustum instanceof An&&(!e&&this._positionCartographic.height<15e4||(this.frustum.width=GIe(this)))};var xH=new d,vJ=new N,rgt=new N,PJ=new Le,RJ=new J,zIe=new Ae;function sgt(e,t,n){let i=N.clone(e.transform,vJ),o=kt.eastNorthUpToFixedFrame(t,e._projection.ellipsoid,rgt);e._setTransform(o),d.clone(d.ZERO,e.position),n.heading=n.heading-D.PI_OVER_TWO;let r=Le.fromHeadingPitchRoll(n,PJ),s=J.fromQuaternion(r,RJ);J.getColumn(s,0,e.direction),J.getColumn(s,2,e.up),d.cross(e.direction,e.up,e.right),e._setTransform(i),e._adjustOrthographicFrustum(!0)}function agt(e,t,n,i){let o=N.clone(e.transform,vJ);if(e._setTransform(N.IDENTITY),!d.equals(t,e.positionWC)){if(i){let a=e._projection,c=a.ellipsoid.cartesianToCartographic(t,zIe);t=a.project(c,xH)}d.clone(t,e.position)}n.heading=n.heading-D.PI_OVER_TWO;let r=Le.fromHeadingPitchRoll(n,PJ),s=J.fromQuaternion(r,RJ);J.getColumn(s,0,e.direction),J.getColumn(s,2,e.up),d.cross(e.direction,e.up,e.right),e._setTransform(o),e._adjustOrthographicFrustum(!0)}function cgt(e,t,n,i){let o=N.clone(e.transform,vJ);if(e._setTransform(N.IDENTITY),!d.equals(t,e.positionWC)){if(i){let c=e._projection,u=c.ellipsoid.cartesianToCartographic(t,zIe);t=c.project(u,xH)}U.clone(t,e.position);let r=-t.z*.5,s=-r,a=e.frustum;if(s>r){let c=a.top/a.right;a.right=s,a.left=r,a.top=a.right*c,a.bottom=-a.top}}if(e._scene.mapMode2D===wu.ROTATE){n.heading=n.heading-D.PI_OVER_TWO,n.pitch=-D.PI_OVER_TWO,n.roll=0;let r=Le.fromHeadingPitchRoll(n,PJ),s=J.fromQuaternion(r,RJ);J.getColumn(s,2,e.up),d.cross(e.direction,e.up,e.right)}e._setTransform(o)}var lgt=new d,ugt=new d,fgt=new d;function VIe(e,t,n,i){let o=d.clone(n.direction,lgt),r=d.clone(n.up,ugt);if(e._scene.mode===ie.SCENE3D){let a=e._projection.ellipsoid,c=kt.eastNorthUpToFixedFrame(t,a,EH),u=N.inverseTransformation(c,IH);N.multiplyByPointAsVector(u,o,o),N.multiplyByPointAsVector(u,r,r)}let s=d.cross(o,r,fgt);return i.heading=QIe(o,r),i.pitch=kIe(o),i.roll=UIe(o,r,s),i}var DJ={destination:void 0,orientation:{direction:void 0,up:void 0,heading:void 0,pitch:void 0,roll:void 0},convert:void 0,endTransform:void 0},yw=new rc;ln.prototype.setView=function(e){e=e??V.EMPTY_OBJECT;let t=e.orientation??V.EMPTY_OBJECT,n=this._mode;if(n===ie.MORPHING)return;l(e.endTransform)&&this._setTransform(e.endTransform);let i=e.convert??!0,o=e.destination??d.clone(this.positionWC,xH);l(o)&&l(o.west)&&(o=this.getRectangleCameraCoordinates(o,xH),i=!1),l(t.direction)&&(t=VIe(this,o,t,DJ.orientation)),yw.heading=t.heading??0,yw.pitch=t.pitch??-D.PI_OVER_TWO,yw.roll=t.roll??0,n===ie.SCENE3D?sgt(this,o,yw):n===ie.SCENE2D?cgt(this,o,yw,i):agt(this,o,yw,i)};var dgt=new d;ln.prototype.flyHome=function(e){let t=this._mode;if(t===ie.MORPHING&&this._scene.completeMorph(),t===ie.SCENE2D)this.flyTo({destination:ln.DEFAULT_VIEW_RECTANGLE,duration:e,endTransform:N.IDENTITY});else if(t===ie.SCENE3D){let n=this.getRectangleCameraCoordinates(ln.DEFAULT_VIEW_RECTANGLE),i=d.magnitude(n);i+=i*ln.DEFAULT_VIEW_FACTOR,d.normalize(n,n),d.multiplyByScalar(n,i,n),this.flyTo({destination:n,duration:e,endTransform:N.IDENTITY})}else if(t===ie.COLUMBUS_VIEW){let n=this._projection.ellipsoid.maximumRadius,i=new d(0,-1,1);i=d.multiplyByScalar(d.normalize(i,i),5*n,i),this.flyTo({destination:i,duration:e,orientation:{heading:0,pitch:-Math.acos(d.normalize(i,dgt).z),roll:0},endTransform:N.IDENTITY,convert:!1})}};ln.prototype.worldToCameraCoordinates=function(e,t){return l(t)||(t=new se),tl(this),N.multiplyByVector(this._actualInvTransform,e,t)};ln.prototype.worldToCameraCoordinatesPoint=function(e,t){return l(t)||(t=new d),tl(this),N.multiplyByPoint(this._actualInvTransform,e,t)};ln.prototype.worldToCameraCoordinatesVector=function(e,t){return l(t)||(t=new d),tl(this),N.multiplyByPointAsVector(this._actualInvTransform,e,t)};ln.prototype.cameraToWorldCoordinates=function(e,t){return l(t)||(t=new se),tl(this),N.multiplyByVector(this._actualTransform,e,t)};ln.prototype.cameraToWorldCoordinatesPoint=function(e,t){return l(t)||(t=new d),tl(this),N.multiplyByPoint(this._actualTransform,e,t)};ln.prototype.cameraToWorldCoordinatesVector=function(e,t){return l(t)||(t=new d),tl(this),N.multiplyByPointAsVector(this._actualTransform,e,t)};function HIe(e,t){let n=e._scene.mapMode2D===wu.ROTATE,i=e._maxCoord.x,o=e._maxCoord.y,r,s;n?(s=i,r=-s):(s=t.x-i*2,r=t.x+i*2),t.x>i&&(t.x=s),t.x<-i&&(t.x=r),t.y>o&&(t.y=o),t.y<-o&&(t.y=-o)}var vIe=new d;ln.prototype.move=function(e,t){let n=this.position;d.multiplyByScalar(e,t,vIe),d.add(n,vIe,n),this._mode===ie.SCENE2D&&HIe(this,n),this._adjustOrthographicFrustum(!0)};ln.prototype.moveForward=function(e){e=e??this.defaultMoveAmount,this._mode===ie.SCENE2D?bH(this,e):this.move(this.direction,e)};ln.prototype.moveBackward=function(e){e=e??this.defaultMoveAmount,this._mode===ie.SCENE2D?bH(this,-e):this.move(this.direction,-e)};ln.prototype.moveUp=function(e){e=e??this.defaultMoveAmount,this.move(this.up,e)};ln.prototype.moveDown=function(e){e=e??this.defaultMoveAmount,this.move(this.up,-e)};ln.prototype.moveRight=function(e){e=e??this.defaultMoveAmount,this.move(this.right,e)};ln.prototype.moveLeft=function(e){e=e??this.defaultMoveAmount,this.move(this.right,-e)};ln.prototype.lookLeft=function(e){e=e??this.defaultLookAmount,this._mode!==ie.SCENE2D&&this.look(this.up,-e)};ln.prototype.lookRight=function(e){e=e??this.defaultLookAmount,this._mode!==ie.SCENE2D&&this.look(this.up,e)};ln.prototype.lookUp=function(e){e=e??this.defaultLookAmount,this._mode!==ie.SCENE2D&&this.look(this.right,-e)};ln.prototype.lookDown=function(e){e=e??this.defaultLookAmount,this._mode!==ie.SCENE2D&&this.look(this.right,e)};var hgt=new Le,mgt=new J;ln.prototype.look=function(e,t){let n=t??this.defaultLookAmount,i=Le.fromAxisAngle(e,-n,hgt),o=J.fromQuaternion(i,mgt),r=this.direction,s=this.up,a=this.right;J.multiplyByVector(o,r,r),J.multiplyByVector(o,s,s),J.multiplyByVector(o,a,a)};ln.prototype.twistLeft=function(e){e=e??this.defaultLookAmount,this.look(this.direction,e)};ln.prototype.twistRight=function(e){e=e??this.defaultLookAmount,this.look(this.direction,-e)};var Agt=new Le,pgt=new J;ln.prototype.rotate=function(e,t){let n=t??this.defaultRotateAmount,i=Le.fromAxisAngle(e,-n,Agt),o=J.fromQuaternion(i,pgt);J.multiplyByVector(o,this.position,this.position),J.multiplyByVector(o,this.direction,this.direction),J.multiplyByVector(o,this.up,this.up),d.cross(this.direction,this.up,this.right),d.cross(this.right,this.direction,this.up),this._adjustOrthographicFrustum(!1)};ln.prototype.rotateDown=function(e){e=e??this.defaultRotateAmount,WIe(this,e)};ln.prototype.rotateUp=function(e){e=e??this.defaultRotateAmount,WIe(this,-e)};var ggt=new d,_gt=new d,ygt=new d,PIe=new d;function WIe(e,t){let n=e.position;if(l(e.constrainedAxis)&&!d.equalsEpsilon(e.position,d.ZERO,D.EPSILON2)){let i=d.normalize(n,ggt),o=d.equalsEpsilon(i,e.constrainedAxis,D.EPSILON2),r=d.equalsEpsilon(i,d.negate(e.constrainedAxis,PIe),D.EPSILON2);if(!o&&!r){let s=d.normalize(e.constrainedAxis,_gt),a=d.dot(i,s),c=D.acosClamped(a);t>0&&t>c&&(t=c-D.EPSILON4),a=d.dot(i,d.negate(s,PIe)),c=D.acosClamped(a),t<0&&-t>c&&(t=-c+D.EPSILON4);let u=d.cross(s,i,ygt);e.rotate(u,t)}else(o&&t<0||r&&t>0)&&e.rotate(e.right,t)}else e.rotate(e.right,t)}ln.prototype.rotateRight=function(e){e=e??this.defaultRotateAmount,jIe(this,-e)};ln.prototype.rotateLeft=function(e){e=e??this.defaultRotateAmount,jIe(this,e)};function jIe(e,t){l(e.constrainedAxis)?e.rotate(e.constrainedAxis,t):e.rotate(e.up,t)}function bH(e,t){let n=e.frustum,i;if(t=t*.5,Math.abs(n.top)+Math.abs(n.bottom)>Math.abs(n.left)+Math.abs(n.right)){let o=n.top-t,r=n.bottom+t,s=e._maxCoord.y;e._scene.mapMode2D===wu.ROTATE&&(s*=e.maximumZoomFactor),r>s&&(r=s,o=-s),o<=r&&(o=1,r=-1),i=n.right/n.top,n.top=o,n.bottom=r,n.right=n.top*i,n.left=-n.right}else{let o=n.right-t,r=n.left+t,s=e._maxCoord.x;e._scene.mapMode2D===wu.ROTATE&&(s*=e.maximumZoomFactor),o>s&&(o=s,r=-s),o<=r&&(o=1,r=-1),i=n.top/n.right,n.right=o,n.left=r,n.top=n.right*i,n.bottom=-n.top}}function YIe(e,t){e.move(e.direction,t)}ln.prototype.zoomIn=function(e){e=e??this.defaultZoomAmount,this._mode===ie.SCENE2D?bH(this,e):YIe(this,e)};ln.prototype.zoomOut=function(e){e=e??this.defaultZoomAmount,this._mode===ie.SCENE2D?bH(this,-e):YIe(this,-e)};ln.prototype.getMagnitude=function(){if(this._mode===ie.SCENE3D)return d.magnitude(this.position);if(this._mode===ie.COLUMBUS_VIEW)return Math.abs(this.position.z);if(this._mode===ie.SCENE2D)return Math.max(this.frustum.right-this.frustum.left,this.frustum.top-this.frustum.bottom)};var Cgt=new N;ln.prototype.lookAt=function(e,t){let i=this._scene.ellipsoid??te.default,o=kt.eastNorthUpToFixedFrame(e,i,Cgt);this.lookAtTransform(o,t)};var Egt=new d,Igt=new Le,xgt=new Le,bgt=new J;function qIe(e,t,n){t=D.clamp(t,-D.PI_OVER_TWO,D.PI_OVER_TWO),e=D.zeroToTwoPi(e)-D.PI_OVER_TWO;let i=Le.fromAxisAngle(d.UNIT_Y,-t,Igt),o=Le.fromAxisAngle(d.UNIT_Z,-e,xgt),r=Le.multiply(o,i,o),s=J.fromQuaternion(r,bgt),a=d.clone(d.UNIT_X,Egt);return J.multiplyByVector(s,a,a),d.negate(a,a),d.multiplyByScalar(a,n,a),a}ln.prototype.lookAtTransform=function(e,t){if(this._setTransform(e),!l(t))return;let n;if(l(t.heading)?n=qIe(t.heading,t.pitch,t.range):n=t,this._mode===ie.SCENE2D){U.clone(U.ZERO,this.position),d.negate(n,this.up),this.up.z=0,d.magnitudeSquared(this.up)<D.EPSILON10&&d.clone(d.UNIT_Y,this.up),d.normalize(this.up,this.up),this._setTransform(N.IDENTITY),d.negate(d.UNIT_Z,this.direction),d.cross(this.direction,this.up,this.right),d.normalize(this.right,this.right);let i=this.frustum,o=i.top/i.right;i.right=d.magnitude(n)*.5,i.left=-i.right,i.top=o*i.right,i.bottom=-i.top,this._setTransform(e);return}d.clone(n,this.position),d.negate(this.position,this.direction),d.normalize(this.direction,this.direction),d.cross(this.direction,d.UNIT_Z,this.right),d.magnitudeSquared(this.right)<D.EPSILON10&&d.clone(d.UNIT_X,this.right),d.normalize(this.right,this.right),d.cross(this.right,this.direction,this.up),d.normalize(this.up,this.up),this._adjustOrthographicFrustum(!0)};var gQ=new Ae,Tgt=new Ae,Sgt=new d,wgt=new d,Bgt=new d,Dgt=new d,vgt=new d,Pgt=new d,Rgt=new d,SJ=new d,Mgt={direction:new d,right:new d,up:new d},RIe;function el(e,t,n,i){return Math.abs(d.dot(t,n))/i-d.dot(e,n)}function KIe(e,t,n,i){let o=e._projection.ellipsoid,r=i?e:Mgt,{north:s,south:a,west:c}=t,{east:u}=t;c>u&&(u+=D.TWO_PI);let f=(c+u)*.5,h;if(a<-D.PI_OVER_TWO+D.RADIANS_PER_DEGREE&&s>D.PI_OVER_TWO-D.RADIANS_PER_DEGREE)h=0;else{let M=gQ;M.longitude=f,M.latitude=s,M.height=0;let L=Tgt;L.longitude=f,L.latitude=a,L.height=0;let p=RIe;(!l(p)||p.ellipsoid!==o)&&(RIe=p=new up(void 0,void 0,o)),p.setEndPoints(M,L),h=p.interpolateUsingFraction(.5,gQ).latitude}let A=gQ;A.longitude=f,A.latitude=h,A.height=0;let g=o.cartographicToCartesian(A,Rgt),m=gQ;m.longitude=u,m.latitude=s;let _=o.cartographicToCartesian(m,Sgt);m.longitude=c;let y=o.cartographicToCartesian(m,Bgt);m.longitude=f;let C=o.cartographicToCartesian(m,vgt);m.latitude=a;let E=o.cartographicToCartesian(m,Pgt);m.longitude=u;let I=o.cartographicToCartesian(m,Dgt);m.longitude=c;let b=o.cartographicToCartesian(m,wgt);d.subtract(y,g,y),d.subtract(I,g,I),d.subtract(_,g,_),d.subtract(b,g,b),d.subtract(C,g,C),d.subtract(E,g,E);let S=o.geodeticSurfaceNormal(g,r.direction);d.negate(S,S);let B=d.cross(S,d.UNIT_Z,r.right);d.normalize(B,B);let v=d.cross(B,S,r.up),P;if(e.frustum instanceof An){let M=Math.max(d.distance(_,y),d.distance(I,b)),L=Math.max(d.distance(_,I),d.distance(y,b)),p,x,T=e.frustum._offCenterFrustum,w=T.right/T.top,R=L*w;M>R?(p=M,x=p/w):(x=L,p=R),P=Math.max(p,x)}else{let M=Math.tan(e.frustum.fovy*.5),L=e.frustum.aspectRatio*M;if(P=Math.max(el(S,v,y,M),el(S,v,I,M),el(S,v,_,M),el(S,v,b,M),el(S,v,C,M),el(S,v,E,M),el(S,B,y,L),el(S,B,I,L),el(S,B,_,L),el(S,B,b,L),el(S,B,C,L),el(S,B,E,L)),a<0&&s>0){let p=gQ;p.longitude=c,p.latitude=0,p.height=0;let x=o.cartographicToCartesian(p,SJ);d.subtract(x,g,x),P=Math.max(P,el(S,v,x,M),el(S,B,x,L)),p.longitude=u,x=o.cartographicToCartesian(p,SJ),d.subtract(x,g,x),P=Math.max(P,el(S,v,x,M),el(S,B,x,L))}}return d.add(g,d.multiplyByScalar(S,-P,SJ),n)}var Ngt=new Ae,Lgt=new d,Ogt=new d;function Fgt(e,t,n){let i=e._projection;t.west>t.east&&(t=ae.MAX_VALUE);let o=e._actualTransform,r=e._actualInvTransform,s=Ngt;s.longitude=t.east,s.latitude=t.north;let a=i.project(s,Lgt);N.multiplyByPoint(o,a,a),N.multiplyByPoint(r,a,a),s.longitude=t.west,s.latitude=t.south;let c=i.project(s,Ogt);if(N.multiplyByPoint(o,c,c),N.multiplyByPoint(r,c,c),n.x=(a.x-c.x)*.5+c.x,n.y=(a.y-c.y)*.5+c.y,l(e.frustum.fovy)){let u=Math.tan(e.frustum.fovy*.5),f=e.frustum.aspectRatio*u;n.z=Math.max((a.x-c.x)/f,(a.y-c.y)/u)*.5}else{let u=a.x-c.x,f=a.y-c.y;n.z=Math.max(u,f)}return n}var Qgt=new Ae,kgt=new d,Ugt=new d;function Ggt(e,t,n){let i=e._projection,o=t.east;t.west>t.east&&(e._scene.mapMode2D===wu.INFINITE_SCROLL?o+=D.TWO_PI:(t=ae.MAX_VALUE,o=t.east));let r=Qgt;r.longitude=o,r.latitude=t.north;let s=i.project(r,kgt);r.longitude=t.west,r.latitude=t.south;let a=i.project(r,Ugt),c=Math.abs(s.x-a.x)*.5,u=Math.abs(s.y-a.y)*.5,f,h,A=e.frustum.right/e.frustum.top,g=u*A;return c>g?(f=c,h=f/A):(h=u,f=g),u=Math.max(2*f,2*h),n.x=(s.x-a.x)*.5+a.x,n.y=(s.y-a.y)*.5+a.y,r=i.unproject(n,r),r.height=u,n=i.project(r,n),n}ln.prototype.getRectangleCameraCoordinates=function(e,t){let n=this._mode;if(l(t)||(t=new d),n===ie.SCENE3D)return KIe(this,e,t);if(n===ie.COLUMBUS_VIEW)return Fgt(this,e,t);if(n===ie.SCENE2D)return Ggt(this,e,t)};var zgt=new In;function Vgt(e,t,n,i){n=n??te.default;let o=e.getPickRay(t,zgt),r=hi.rayEllipsoid(o,n);if(!r)return;let s=r.start>0?r.start:r.stop;return In.getPoint(o,s,i)}var Hgt=new In;function Wgt(e,t,n,i){let r=e.getPickRay(t,Hgt).origin;r=d.fromElements(r.y,r.z,0,r);let s=n.unproject(r);if(!(s.latitude<-D.PI_OVER_TWO||s.latitude>D.PI_OVER_TWO))return n.ellipsoid.cartographicToCartesian(s,i)}var jgt=new In;function Ygt(e,t,n,i){let o=e.getPickRay(t,jgt),r=-o.origin.x/o.direction.x;In.getPoint(o,r,i);let s=n.unproject(new d(i.y,i.z,0));if(!(s.latitude<-D.PI_OVER_TWO||s.latitude>D.PI_OVER_TWO||s.longitude<-Math.PI||s.longitude>Math.PI))return n.ellipsoid.cartographicToCartesian(s,i)}ln.prototype.pickEllipsoid=function(e,t,n){let i=this._scene.canvas;if(!(i.clientWidth===0||i.clientHeight===0)){if(l(n)||(n=new d),t=t??te.default,this._mode===ie.SCENE3D)n=Vgt(this,e,t,n);else if(this._mode===ie.SCENE2D)n=Wgt(this,e,this._projection,n);else if(this._mode===ie.COLUMBUS_VIEW)n=Ygt(this,e,this._projection,n);else return;return n}};var qgt=new d,Kgt=new d,Xgt=new d;function Jgt(e,t,n){let i=e._scene.canvas,o=i.clientWidth,r=i.clientHeight,s=Math.tan(e.frustum.fovy*.5),a=e.frustum.aspectRatio*s,c=e.frustum.near,u=2/o*t.x-1,f=2/r*(r-t.y)-1,h=e.positionWC;d.clone(h,n.origin);let A=d.multiplyByScalar(e.directionWC,c,qgt);d.add(h,A,A);let g=d.multiplyByScalar(e.rightWC,u*c*a,Kgt),m=d.multiplyByScalar(e.upWC,f*c*s,Xgt),_=d.add(A,g,n.direction);return d.add(_,m,_),d.subtract(_,h,_),d.normalize(_,_),n}var yH=new d;function Zgt(e,t,n){let i=e._scene.canvas,o=i.clientWidth,r=i.clientHeight,s=e.frustum,a=s.offCenterFrustum;l(a)&&(s=a);let c=2/o*t.x-1;c*=(s.right-s.left)*.5;let u=2/r*(r-t.y)-1;u*=(s.top-s.bottom)*.5;let f=n.origin;return d.clone(e.positionWC,f),d.multiplyByScalar(e.rightWC,c,yH),d.add(yH,f,f),d.multiplyByScalar(e.upWC,u,yH),d.add(yH,f,f),d.clone(e.directionWC,n.direction),n}ln.prototype.getPickRay=function(e,t){l(t)||(t=new In);let n=this._scene.canvas;if(n.clientWidth<=0||n.clientHeight<=0)return;let i=this.frustum;return l(i.aspectRatio)&&l(i.fov)&&l(i.near)?Jgt(this,e,t):Zgt(this,e,t)};var $gt=new d,e_t=new d;ln.prototype.distanceToBoundingSphere=function(e){let t=d.subtract(this.positionWC,e.center,$gt),n=d.multiplyByScalar(this.directionWC,d.dot(t,this.directionWC),e_t);return Math.max(0,d.magnitude(n)-e.radius)};var t_t=new U;ln.prototype.getPixelSize=function(e,t,n){let i=this.distanceToBoundingSphere(e),o=this.frustum.getPixelDimensions(t,n,i,this._scene.pixelRatio,t_t);return Math.max(o.x,o.y)};function n_t(e,t,n,i,o,r){let s=d.clone(t);n.y>i?s.y-=n.y-i:n.y<-i&&(s.y+=-i-n.y),n.z>o?s.z-=n.z-o:n.z<-o&&(s.z+=-o-n.z);function a(c){let u=d.lerp(t,s,c.time,new d);e.worldToCameraCoordinatesPoint(u,e.position)}return{easingFunction:ms.EXPONENTIAL_OUT,startObject:{time:0},stopObject:{time:1},duration:r,update:a}}var i_t=new d,MIe=new d,o_t=new d,r_t=new d;function s_t(e,t){let n=e.position,i=e.direction,o=e.worldToCameraCoordinatesVector(d.UNIT_X,i_t),r=-d.dot(o,n)/d.dot(o,i),s=d.add(n,d.multiplyByScalar(i,r,MIe),MIe);e.cameraToWorldCoordinatesPoint(s,s),n=e.cameraToWorldCoordinatesPoint(e.position,o_t);let a=Math.tan(e.frustum.fovy*.5),c=e.frustum.aspectRatio*a,u=d.magnitude(d.subtract(n,s,r_t)),f=c*u,h=a*u,A=e._maxCoord.x,g=e._maxCoord.y,m=Math.max(f-A,A),_=Math.max(h-g,g);if(n.z<-m||n.z>m||n.y<-_||n.y>_){let y=s.y<-m||s.y>m,C=s.z<-_||s.z>_;if(y||C)return n_t(e,n,s,m,_,t)}}ln.prototype.createCorrectPositionTween=function(e){if(this._mode===ie.COLUMBUS_VIEW)return s_t(this,e)};var a_t=new d,wa={destination:void 0,heading:void 0,pitch:void 0,roll:void 0,duration:void 0,complete:void 0,cancel:void 0,endTransform:void 0,maximumHeight:void 0,easingFunction:void 0};ln.prototype.cancelFlight=function(){l(this._currentFlight)&&(this._currentFlight.cancelTween(),this._currentFlight=void 0)};ln.prototype.completeFlight=function(){if(l(this._currentFlight)){this._currentFlight.cancelTween();let e={destination:void 0,orientation:{heading:void 0,pitch:void 0,roll:void 0}};e.destination=wa.destination,e.orientation.heading=wa.heading,e.orientation.pitch=wa.pitch,e.orientation.roll=wa.roll,this.setView(e),l(this._currentFlight.complete)&&this._currentFlight.complete(),this._currentFlight=void 0}};ln.prototype.flyTo=function(e){e=e??V.EMPTY_OBJECT;let t=e.destination;if(this._mode===ie.MORPHING)return;this.cancelFlight();let i=t instanceof ae;i&&(t=this.getRectangleCameraCoordinates(t,a_t));let o=e.orientation??V.EMPTY_OBJECT;if(l(o.direction)&&(o=VIe(this,t,o,DJ.orientation)),l(e.duration)&&e.duration<=0){let f=DJ;f.destination=e.destination,f.orientation.heading=o.heading,f.orientation.pitch=o.pitch,f.orientation.roll=o.roll,f.convert=e.convert,f.endTransform=e.endTransform,this.setView(f),typeof e.complete=="function"&&e.complete();return}let r=this,s;wa.destination=t,wa.heading=o.heading,wa.pitch=o.pitch,wa.roll=o.roll,wa.duration=e.duration,wa.complete=function(){s===r._currentFlight&&(r._currentFlight=void 0),l(e.complete)&&e.complete()},wa.cancel=e.cancel,wa.endTransform=e.endTransform,wa.convert=i?!1:e.convert,wa.maximumHeight=e.maximumHeight,wa.pitchAdjustHeight=e.pitchAdjustHeight,wa.flyOverLongitude=e.flyOverLongitude,wa.flyOverLongitudeWeight=e.flyOverLongitudeWeight,wa.easingFunction=e.easingFunction;let a=this._scene,c=pQ.createTween(a,wa);if(c.duration===0){typeof c.complete=="function"&&c.complete();return}s=a.tweens.add(c),this._currentFlight=s;let u=this._scene.preloadFlightCamera;this._mode!==ie.SCENE2D&&(l(u)||(u=ln.clone(this)),u.setView({destination:t,orientation:o}),this._scene.preloadFlightCullingVolume=u.frustum.computeCullingVolume(u.positionWC,u.directionWC,u.upWC))};function c_t(e,t){let n=e.frustum,i=Math.tan(n.fovy*.5),o=n.aspectRatio*i;return Math.max(t/o,t/i)}function l_t(e,t){let n=e.frustum,i=n.offCenterFrustum;l(i)&&(n=i);let o,r,s=n.right/n.top,a=t*s;return t>a?(o=t,r=o/s):(r=t,o=a),Math.max(o,r)*1.5}var u_t=100;function XIe(e,t,n){n=Md.clone(l(n)?n:ln.DEFAULT_OFFSET);let i=e._scene.screenSpaceCameraController.minimumZoomDistance,o=e._scene.screenSpaceCameraController.maximumZoomDistance,r=n.range;if(!l(r)||r===0){let s=t.radius;s===0?n.range=u_t:e.frustum instanceof An||e._mode===ie.SCENE2D?n.range=l_t(e,s):n.range=c_t(e,s),n.range=D.clamp(n.range,i,o)}return n}ln.prototype.viewBoundingSphere=function(e,t){t=XIe(this,e,t),this.lookAt(e.center,t)};var f_t=new N,d_t=new d,h_t=new d,m_t=new d,A_t=new d,p_t=new se,g_t=new Le,__t=new J;ln.prototype.flyToBoundingSphere=function(e,t){t=t??V.EMPTY_OBJECT;let n=this._mode===ie.SCENE2D||this._mode===ie.COLUMBUS_VIEW;this._setTransform(N.IDENTITY);let i=XIe(this,e,t.offset),o;n?o=d.multiplyByScalar(d.UNIT_Z,i.range,d_t):o=qIe(i.heading,i.pitch,i.range);let s=this._scene.ellipsoid??te.default,a=kt.eastNorthUpToFixedFrame(e.center,s,f_t);N.multiplyByPoint(a,o,o);let c,u;if(!n){if(c=d.subtract(e.center,o,h_t),d.normalize(c,c),u=N.multiplyByPointAsVector(a,d.UNIT_Z,m_t),1-Math.abs(d.dot(c,u))<D.EPSILON6){let h=Le.fromAxisAngle(c,i.heading,g_t),A=J.fromQuaternion(h,__t);d.fromCartesian4(N.getColumn(a,1,p_t),u),J.multiplyByVector(A,u,u)}let f=d.cross(c,u,A_t);d.cross(f,c,u),d.normalize(u,u)}this.flyTo({destination:o,orientation:{direction:c,up:u},duration:t.duration,complete:t.complete,cancel:t.cancel,endTransform:t.endTransform,maximumHeight:t.maximumHeight,easingFunction:t.easingFunction,flyOverLongitude:t.flyOverLongitude,flyOverLongitudeWeight:t.flyOverLongitudeWeight,pitchAdjustHeight:t.pitchAdjustHeight})};var NIe=new d,LIe=new d,wJ=new d,OIe=new d,_Q=[new d,new d,new d,new d];function y_t(e,t){let n=t.radii,i=e.positionWC,o=d.multiplyComponents(t.oneOverRadii,i,NIe),r=d.magnitude(o),s=d.normalize(o,LIe),a,c;d.equalsEpsilon(s,d.UNIT_Z,D.EPSILON10)?(a=new d(0,1,0),c=new d(0,0,1)):(a=d.normalize(d.cross(d.UNIT_Z,s,wJ),wJ),c=d.normalize(d.cross(s,a,OIe),OIe));let u=Math.sqrt(d.magnitudeSquared(o)-1),f=d.multiplyByScalar(s,1/r,NIe),h=u/r,A=d.multiplyByScalar(a,h,LIe),g=d.multiplyByScalar(c,h,wJ),m=d.add(f,g,_Q[0]);d.subtract(m,A,m),d.multiplyComponents(n,m,m);let _=d.subtract(f,g,_Q[1]);d.subtract(_,A,_),d.multiplyComponents(n,_,_);let y=d.subtract(f,g,_Q[2]);d.add(y,A,y),d.multiplyComponents(n,y,y);let C=d.add(f,g,_Q[3]);return d.add(C,A,C),d.multiplyComponents(n,C,C),_Q}var BJ=new U,C_t=new d,dC=[new Ae,new Ae,new Ae,new Ae];function CH(e,t,n,i,o,r){BJ.x=e,BJ.y=t;let s=i.pickEllipsoid(BJ,o,C_t);return l(s)?(dC[n]=o.cartesianToCartographic(s,dC[n]),1):(dC[n]=o.cartesianToCartographic(r[n],dC[n]),0)}ln.prototype.computeViewRectangle=function(e,t){e=e??te.default;let n=this.frustum.computeCullingVolume(this.positionWC,this.directionWC,this.upWC),i=new le(d.ZERO,e.maximumRadius);if(n.computeVisibility(i)===tn.OUTSIDE)return;let r=this._scene.canvas,s=r.clientWidth,a=r.clientHeight,c=0,u=y_t(this,e);if(c+=CH(0,0,0,this,e,u),c+=CH(0,a,1,this,e,u),c+=CH(s,a,2,this,e,u),c+=CH(s,0,3,this,e,u),c<2)return ae.MAX_VALUE;t=ae.fromCartographicArray(dC,t);let f=0,h=dC[3].longitude;for(let A=0;A<4;++A){let g=dC[A].longitude,m=Math.abs(g-h);m>D.PI?f+=D.TWO_PI-m:f+=m,h=g}return D.equalsEpsilon(Math.abs(f),D.TWO_PI,D.EPSILON9)&&(t.west=-D.PI,t.east=D.PI,dC[0].latitude>=0?t.north=D.PI_OVER_TWO:t.south=-D.PI_OVER_TWO),t};ln.prototype.switchToPerspectiveFrustum=function(){if(this._mode===ie.SCENE2D||this.frustum instanceof ki)return;let e=this._scene;this.frustum=new ki,this.frustum.aspectRatio=e.drawingBufferWidth/e.drawingBufferHeight,this.frustum.fov=D.toRadians(60)};ln.prototype.switchToOrthographicFrustum=function(){if(this._mode===ie.SCENE2D||this.frustum instanceof An)return;let e=GIe(this),t=this._scene;this.frustum=new An,this.frustum.aspectRatio=t.drawingBufferWidth/t.drawingBufferHeight,this.frustum.width=e};ln.clone=function(e,t){return l(t)||(t=new ln(e._scene)),d.clone(e.position,t.position),d.clone(e.direction,t.direction),d.clone(e.up,t.up),d.clone(e.right,t.right),N.clone(e._transform,t.transform),t._transformChanged=!0,t.frustum=e.frustum.clone(),t};var Co=ln;function E_t(e){this.pass=e.pass,this.commandList=e.commandList,this.camera=e.camera,this.cullingVolume=e.cullingVolume,this.ready=!1}var Vd=E_t;var txe=xr(Ou(),1),JIe=576,I_t=100,yQ="#ffffff",TH="#48b";function nxe(e,t){this.credit=e,this.count=t??1}function x_t(e,t){let n=e.length;for(let i=0;i<n;i++){let o=e[i];if(Bt.equals(o,t))return!0}return!1}function b_t(e){let t=e._previousCesiumCredit,n=e._currentCesiumCredit;Bt.equals(n,t)||(l(t)&&e._cesiumCreditContainer.removeChild(t.element),l(n)&&e._cesiumCreditContainer.appendChild(n.element),e._previousCesiumCredit=n)}var ixe="cesium-credit-delimiter";function ZIe(e){let t=document.createElement("span");return t.textContent=e,t.className=ixe,t}function $Ie(e,t){if(l(t)){let n=document.createElement(t);n._creditId=e._creditId,n.appendChild(e),e=n}return e}function exe(e,t,n,i){let o=e.childNodes,r=-1;t.sort(function(s,a){return a.count-s.count});for(let s=0;s<t.length;++s){let a=t[s].credit;if(l(a)){if(r=s,l(n)&&(r*=2,s>0)){let u=r-1;if(o.length<=u)e.appendChild(ZIe(n));else{let f=o[u];f.className!==ixe&&e.replaceChild(ZIe(n),f)}}let c=a.element;if(o.length<=r)e.appendChild($Ie(c,i));else{let u=o[r];u._creditId!==a._id&&e.replaceChild($Ie(c,i),u)}}}for(++r;r<o.length;)e.removeChild(o[r])}function T_t(e){let t=e._lightboxCredits,n=e.viewport.clientWidth,i=e.viewport.clientHeight;n!==e._lastViewportWidth&&(n<JIe?(t.className="cesium-credit-lightbox cesium-credit-lightbox-mobile",t.style.marginTop="0"):(t.className="cesium-credit-lightbox cesium-credit-lightbox-expanded",t.style.marginTop=`${Math.floor((i-t.clientHeight)*.5)}px`),e._lastViewportWidth=n),n>=JIe&&i!==e._lastViewportHeight&&(t.style.marginTop=`${Math.floor((i-t.clientHeight)*.5)}px`,e._lastViewportHeight=i)}function S_t(e){let t=` +.cesium-credit-lightbox-overlay { + display: none; + z-index: 1; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(80, 80, 80, 0.8); +} + +.cesium-credit-lightbox { + background-color: #303336; + color: ${yQ}; + position: relative; + min-height: ${I_t}px; + margin: auto; +} +.cesium-credit-lightbox > ul > li a, +.cesium-credit-lightbox > ul > li a:visited, +.cesium-credit-wrapper a, +.cesium-credit-wrapper a:visited { + color: ${yQ}; +} +.cesium-credit-lightbox > ul > li a:hover { + color: ${TH}; +} +.cesium-credit-lightbox.cesium-credit-lightbox-expanded { + border: 1px solid #444; + border-radius: 5px; + max-width: 370px; +} +.cesium-credit-lightbox.cesium-credit-lightbox-mobile { + height: 100%; + width: 100%; +} +.cesium-credit-lightbox-title { + padding: 20px 20px 0 20px; +} +.cesium-credit-lightbox-close { + font-size: 18pt; + cursor: pointer; + position: absolute; + top: 0; + right: 6px; + color: ${yQ}; +} +.cesium-credit-lightbox-close:hover { + color: ${TH}; +} +.cesium-credit-lightbox > ul { + margin: 0; + padding: 12px 20px 12px 40px; + font-size: 13px; +} +.cesium-credit-lightbox > ul > li { + padding-bottom: 6px; +} +.cesium-credit-lightbox > ul > li * { + padding: 0; + margin: 0; +} + +.cesium-credit-expand-link { + padding-left: 5px; + cursor: pointer; + text-decoration: underline; + color: ${yQ}; +} +.cesium-credit-expand-link:hover { + color: ${TH}; +} + +.cesium-credit-text { + color: ${yQ}; +} + +.cesium-credit-delimiter { + padding: 0 5px; +} + +.cesium-credit-textContainer *, +.cesium-credit-logoContainer * { + display: inline; +} + +.cesium-credit-textContainer a:hover { + color: ${TH} +} + +.cesium-credit-textContainer .cesium-credit-wrapper:first-of-type { + padding-left: 5px; +} +`;function n(r){if(r.shadowRoot)return r.shadowRoot;if(r.getRootNode){let s=r.getRootNode();if(s instanceof ShadowRoot)return s}}let i=n(e)??document.head,o=document.createElement("style");o.innerHTML=t,i.appendChild(o)}function Nr(e,t,n){let i=this;n=n??document.body;let o=document.createElement("div");o.className="cesium-credit-lightbox-overlay",n.appendChild(o);let r=document.createElement("div");r.className="cesium-credit-lightbox",o.appendChild(r);function s(m){r.contains(m.target)||i.hideLightbox()}o.addEventListener("click",s,!1);let a=document.createElement("div");a.className="cesium-credit-lightbox-title",a.textContent="Data provided by:",r.appendChild(a);let c=document.createElement("a");c.onclick=this.hideLightbox.bind(this),c.innerHTML="×",c.className="cesium-credit-lightbox-close",r.appendChild(c);let u=document.createElement("ul");r.appendChild(u);let f=document.createElement("div");f.className="cesium-credit-logoContainer",f.style.display="inline",e.appendChild(f);let h=document.createElement("div");h.className="cesium-credit-textContainer",h.style.display="inline",e.appendChild(h);let A=document.createElement("a");A.className="cesium-credit-expand-link",A.onclick=this.showLightbox.bind(this),A.textContent="Data attribution",e.appendChild(A),S_t(e);let g=Bt.clone(Nr.cesiumCredit);this._delimiter=t??"\u2022",this._screenContainer=h,this._cesiumCreditContainer=f,this._lastViewportHeight=void 0,this._lastViewportWidth=void 0,this._lightboxCredits=r,this._creditList=u,this._lightbox=o,this._hideLightbox=s,this._expandLink=A,this._expanded=!1,this._staticCredits=[],this._cesiumCredit=g,this._previousCesiumCredit=void 0,this._currentCesiumCredit=g,this._creditDisplayElementPool=[],this._creditDisplayElementIndex=0,this._currentFrameCredits={screenCredits:new vt,lightboxCredits:new vt},this._defaultCredit=void 0,this.viewport=n,this.container=e}function oxe(e,t,n,i){i=i??1;let o=t.get(n.id);if(l(o))o.count<Number.MAX_VALUE&&(o.count+=i);else{let r=e._creditDisplayElementPool,s=e._creditDisplayElementPoolIndex;s<r.length?(o=r[s],o.credit=n,o.count=i):(o=new nxe(n,i),r.push(o)),++e._creditDisplayElementPoolIndex,t.set(n.id,o)}}Nr.prototype.addCreditToNextFrame=function(e){if(e.isIon()){l(this._defaultCredit)||(this._defaultCredit=Bt.clone(rxe())),this._currentCesiumCredit=this._defaultCredit;return}let t;e.showOnScreen?t=this._currentFrameCredits.screenCredits:t=this._currentFrameCredits.lightboxCredits,oxe(this,t,e)};Nr.prototype.addStaticCredit=function(e){let t=this._staticCredits;x_t(t,e)||t.push(e)};Nr.prototype.removeStaticCredit=function(e){let t=this._staticCredits,n=t.indexOf(e);n!==-1&&t.splice(n,1)};Nr.prototype.showLightbox=function(){this._lightbox.style.display="block",this._expanded=!0};Nr.prototype.hideLightbox=function(){this._lightbox.style.display="none",this._expanded=!1};Nr.prototype.update=function(){this._expanded&&T_t(this)};Nr.prototype.beginFrame=function(){let e=this._currentFrameCredits;this._creditDisplayElementPoolIndex=0;let t=e.screenCredits,n=e.lightboxCredits;t.removeAll(),n.removeAll();let i=this._staticCredits;for(let o=0;o<i.length;++o){let r=i[o],s=r.showOnScreen?t:n;r.isIon()&&Bt.equals(Nr.cesiumCredit,this._cesiumCredit)||oxe(this,s,r,Number.MAX_VALUE)}Bt.equals(Nr.cesiumCredit,this._cesiumCredit)||(this._cesiumCredit=Bt.clone(Nr.cesiumCredit)),this._currentCesiumCredit=this._cesiumCredit};Nr.prototype.endFrame=function(){let e=this._currentFrameCredits.screenCredits.values;exe(this._screenContainer,e,this._delimiter,void 0);let t=this._currentFrameCredits.lightboxCredits.values;this._expandLink.style.display=t.length>0?"inline":"none",exe(this._creditList,t,void 0,"li"),b_t(this)};Nr.prototype.destroy=function(){return this._lightbox.removeEventListener("click",this._hideLightbox,!1),this.container.removeChild(this._cesiumCreditContainer),this.container.removeChild(this._screenContainer),this.container.removeChild(this._expandLink),this.viewport.removeChild(this._lightbox),ue(this)};Nr.prototype.isDestroyed=function(){return!1};Nr._cesiumCredit=void 0;Nr._cesiumCreditInitialized=!1;var SH;function rxe(){if(!l(SH)){let e=fn("Assets/Images/ion-credit.png");e.indexOf("http://")!==0&&e.indexOf("https://")!==0&&e.indexOf("data:")!==0&&(e=new txe.default(e).path()),SH=new Bt(`<a href="https://cesium.com/" target="_blank"><img src="${e}" style="vertical-align: -7px" title="Cesium ion"/></a>`,!0)}return Nr._cesiumCreditInitialized||(Nr._cesiumCredit=SH,Nr._cesiumCreditInitialized=!0),SH}Object.defineProperties(Nr,{cesiumCredit:{get:function(){return rxe(),Nr._cesiumCredit},set:function(e){Nr._cesiumCredit=e,Nr._cesiumCreditInitialized=!0}}});Nr.CreditDisplayElement=nxe;var CQ=Nr;var wH=0,w_t=1;function LI(e){let t=e.frustum,n=e.orientation,i=e.origin,o=e.vertexFormat??Pe.DEFAULT,r=e._drawNearPlane??!0,s,a;t instanceof ki?(s=wH,a=ki.packedLength):t instanceof An&&(s=w_t,a=An.packedLength),this._frustumType=s,this._frustum=t.clone(),this._origin=d.clone(i),this._orientation=Le.clone(n),this._drawNearPlane=r,this._vertexFormat=o,this._workerName="createFrustumGeometry",this.packedLength=2+a+d.packedLength+Le.packedLength+Pe.packedLength}LI.pack=function(e,t,n){n=n??0;let i=e._frustumType,o=e._frustum;return t[n++]=i,i===wH?(ki.pack(o,t,n),n+=ki.packedLength):(An.pack(o,t,n),n+=An.packedLength),d.pack(e._origin,t,n),n+=d.packedLength,Le.pack(e._orientation,t,n),n+=Le.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n]=e._drawNearPlane?1:0,t};var B_t=new ki,D_t=new An,v_t=new Le,P_t=new d,R_t=new Pe;LI.unpack=function(e,t,n){t=t??0;let i=e[t++],o;i===wH?(o=ki.unpack(e,t,B_t),t+=ki.packedLength):(o=An.unpack(e,t,D_t),t+=An.packedLength);let r=d.unpack(e,t,P_t);t+=d.packedLength;let s=Le.unpack(e,t,v_t);t+=Le.packedLength;let a=Pe.unpack(e,t,R_t);t+=Pe.packedLength;let c=e[t]===1;if(!l(n))return new LI({frustum:o,origin:r,orientation:s,vertexFormat:a,_drawNearPlane:c});let u=i===n._frustumType?n._frustum:void 0;return n._frustum=o.clone(u),n._frustumType=i,n._origin=d.clone(r,n._origin),n._orientation=Le.clone(s,n._orientation),n._vertexFormat=Pe.clone(a,n._vertexFormat),n._drawNearPlane=c,n};function Cw(e,t,n,i,o,r,s,a){let c=e/3*2;for(let u=0;u<4;++u)l(t)&&(t[e]=r.x,t[e+1]=r.y,t[e+2]=r.z),l(n)&&(n[e]=s.x,n[e+1]=s.y,n[e+2]=s.z),l(i)&&(i[e]=a.x,i[e+1]=a.y,i[e+2]=a.z),e+=3;o[c]=0,o[c+1]=0,o[c+2]=1,o[c+3]=0,o[c+4]=1,o[c+5]=1,o[c+6]=0,o[c+7]=1}var M_t=new J,N_t=new N,MJ=new N,sxe=new d,axe=new d,cxe=new d,L_t=new d,O_t=new d,F_t=new d,hC=new Array(3),EQ=new Array(4);EQ[0]=new se(-1,-1,1,1);EQ[1]=new se(1,-1,1,1);EQ[2]=new se(1,1,1,1);EQ[3]=new se(-1,1,1,1);var lxe=new Array(4);for(let e=0;e<4;++e)lxe[e]=new se;LI._computeNearFarPlanes=function(e,t,n,i,o,r,s,a){let c=J.fromQuaternion(t,M_t),u=r??sxe,f=s??axe,h=a??cxe;u=J.getColumn(c,0,u),f=J.getColumn(c,1,f),h=J.getColumn(c,2,h),d.normalize(u,u),d.normalize(f,f),d.normalize(h,h),d.negate(u,u);let A=N.computeView(e,h,f,u,N_t),g,m,_=i.projectionMatrix;if(n===wH){let y=N.multiply(_,A,MJ);m=N.inverse(y,MJ)}else g=N.inverseTransformation(A,MJ);l(m)?(hC[0]=i.near,hC[1]=i.far):(hC[0]=0,hC[1]=i.near,hC[2]=i.far);for(let y=0;y<2;++y)for(let C=0;C<4;++C){let E=se.clone(EQ[C],lxe[C]);if(l(m)){E=N.multiplyByVector(m,E,E);let I=1/E.w;d.multiplyByScalar(E,I,E),d.subtract(E,e,E),d.normalize(E,E);let b=d.dot(h,E);d.multiplyByScalar(E,hC[y]/b,E),d.add(E,e,E)}else{let I=i.offCenterFrustum;l(I)&&(i=I);let b=hC[y],S=hC[y+1];E.x=(E.x*(i.right-i.left)+i.left+i.right)*.5,E.y=(E.y*(i.top-i.bottom)+i.bottom+i.top)*.5,E.z=(E.z*(b-S)-b-S)*.5,E.w=1,N.multiplyByVector(g,E,E)}o[12*y+C*3]=E.x,o[12*y+C*3+1]=E.y,o[12*y+C*3+2]=E.z}};LI.createGeometry=function(e){let t=e._frustumType,n=e._frustum,i=e._origin,o=e._orientation,r=e._drawNearPlane,s=e._vertexFormat,a=r?6:5,c=new Float64Array(72);LI._computeNearFarPlanes(i,o,t,n,c);let u=24;c[u]=c[12],c[u+1]=c[13],c[u+2]=c[14],c[u+3]=c[0],c[u+4]=c[1],c[u+5]=c[2],c[u+6]=c[9],c[u+7]=c[10],c[u+8]=c[11],c[u+9]=c[21],c[u+10]=c[22],c[u+11]=c[23],u+=12,c[u]=c[15],c[u+1]=c[16],c[u+2]=c[17],c[u+3]=c[3],c[u+4]=c[4],c[u+5]=c[5],c[u+6]=c[0],c[u+7]=c[1],c[u+8]=c[2],c[u+9]=c[12],c[u+10]=c[13],c[u+11]=c[14],u+=12,c[u]=c[3],c[u+1]=c[4],c[u+2]=c[5],c[u+3]=c[15],c[u+4]=c[16],c[u+5]=c[17],c[u+6]=c[18],c[u+7]=c[19],c[u+8]=c[20],c[u+9]=c[6],c[u+10]=c[7],c[u+11]=c[8],u+=12,c[u]=c[6],c[u+1]=c[7],c[u+2]=c[8],c[u+3]=c[18],c[u+4]=c[19],c[u+5]=c[20],c[u+6]=c[21],c[u+7]=c[22],c[u+8]=c[23],c[u+9]=c[9],c[u+10]=c[10],c[u+11]=c[11],r||(c=c.subarray(12));let f=new yn({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:c})});if(l(s.normal)||l(s.tangent)||l(s.bitangent)||l(s.st)){let A=l(s.normal)?new Float32Array(12*a):void 0,g=l(s.tangent)?new Float32Array(12*a):void 0,m=l(s.bitangent)?new Float32Array(12*a):void 0,_=l(s.st)?new Float32Array(8*a):void 0,y=sxe,C=axe,E=cxe,I=d.negate(y,L_t),b=d.negate(C,O_t),S=d.negate(E,F_t);u=0,r&&(Cw(u,A,g,m,_,S,y,C),u+=12),Cw(u,A,g,m,_,E,I,C),u+=12,Cw(u,A,g,m,_,I,S,C),u+=12,Cw(u,A,g,m,_,b,S,I),u+=12,Cw(u,A,g,m,_,y,E,C),u+=12,Cw(u,A,g,m,_,C,E,I),l(A)&&(f.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:A})),l(g)&&(f.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g})),l(m)&&(f.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m})),l(_)&&(f.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:_}))}let h=new Uint16Array(6*a);for(let A=0;A<a;++A){let g=A*6,m=A*4;h[g]=m,h[g+1]=m+1,h[g+2]=m+2,h[g+3]=m,h[g+4]=m+2,h[g+5]=m+3}return new ht({attributes:f,indices:h,primitiveType:Me.TRIANGLES,boundingSphere:le.fromVertices(c)})};var OI=LI;var NJ=0,Q_t=1;function IQ(e){let t=e.frustum,n=e.orientation,i=e.origin,o=e._drawNearPlane??!0,r,s;t instanceof ki?(r=NJ,s=ki.packedLength):t instanceof An&&(r=Q_t,s=An.packedLength),this._frustumType=r,this._frustum=t.clone(),this._origin=d.clone(i),this._orientation=Le.clone(n),this._drawNearPlane=o,this._workerName="createFrustumOutlineGeometry",this.packedLength=2+s+d.packedLength+Le.packedLength}IQ.pack=function(e,t,n){n=n??0;let i=e._frustumType,o=e._frustum;return t[n++]=i,i===NJ?(ki.pack(o,t,n),n+=ki.packedLength):(An.pack(o,t,n),n+=An.packedLength),d.pack(e._origin,t,n),n+=d.packedLength,Le.pack(e._orientation,t,n),n+=Le.packedLength,t[n]=e._drawNearPlane?1:0,t};var k_t=new ki,U_t=new An,G_t=new Le,z_t=new d;IQ.unpack=function(e,t,n){t=t??0;let i=e[t++],o;i===NJ?(o=ki.unpack(e,t,k_t),t+=ki.packedLength):(o=An.unpack(e,t,U_t),t+=An.packedLength);let r=d.unpack(e,t,z_t);t+=d.packedLength;let s=Le.unpack(e,t,G_t);t+=Le.packedLength;let a=e[t]===1;if(!l(n))return new IQ({frustum:o,origin:r,orientation:s,_drawNearPlane:a});let c=i===n._frustumType?n._frustum:void 0;return n._frustum=o.clone(c),n._frustumType=i,n._origin=d.clone(r,n._origin),n._orientation=Le.clone(s,n._orientation),n._drawNearPlane=a,n};IQ.createGeometry=function(e){let t=e._frustumType,n=e._frustum,i=e._origin,o=e._orientation,r=e._drawNearPlane,s=new Float64Array(24);OI._computeNearFarPlanes(i,o,t,n,s);let a=new yn({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s})}),c,u,f=r?2:1,h=new Uint16Array(8*(f+1)),A=r?0:1;for(;A<2;++A)c=r?A*8:0,u=A*4,h[c]=u,h[c+1]=u+1,h[c+2]=u+1,h[c+3]=u+2,h[c+4]=u+2,h[c+5]=u+3,h[c+6]=u+3,h[c+7]=u;for(A=0;A<2;++A)c=(f+A)*8,u=A*4,h[c]=u,h[c+1]=u+4,h[c+2]=u+1,h[c+3]=u+5,h[c+4]=u+2,h[c+5]=u+6,h[c+6]=u+3,h[c+7]=u+7;return new ht({attributes:a,indices:h,primitiveType:Me.LINES,boundingSphere:le.fromVertices(s)})};var xQ=IQ;function BH(e){e=e??V.EMPTY_OBJECT,this._camera=e.camera,this._frustumSplits=e.frustumSplits,this._color=e.color??G.CYAN,this._updateOnChange=e.updateOnChange??!0,this.show=e.show??!0,this.id=e.id,this._id=void 0,this._outlinePrimitives=[],this._planesPrimitives=[]}var V_t=new d,H_t=new J,W_t=new Le,j_t=new ki,Y_t=new Vl,q_t=new An,K_t=new es,X_t=new G,J_t=[1,1e5];BH.prototype.update=function(e){if(!this.show)return;let t=this._planesPrimitives,n=this._outlinePrimitives,i,o;if(this._updateOnChange){for(o=t.length,i=0;i<o;++i)n[i]=n[i]&&n[i].destroy(),t[i]=t[i]&&t[i].destroy();t.length=0,n.length=0}if(t.length===0){let r=this._camera,s=r.frustum,a;s instanceof ki?a=j_t:s instanceof Vl?a=Y_t:s instanceof An?a=q_t:a=K_t,a=s.clone(a);let c,u=this._frustumSplits;!l(u)||u.length<=1?(u=J_t,u[0]=this._camera.frustum.near,u[1]=this._camera.frustum.far,c=1):c=u.length-1;let f=r.positionWC,h=r.directionWC,A=r.upWC,g=r.rightWC;g=d.negate(g,V_t);let m=H_t;J.setColumn(m,0,g,m),J.setColumn(m,1,A,m),J.setColumn(m,2,h,m);let _=Le.fromRotationMatrix(m,W_t);for(t.length=n.length=c,i=0;i<c;++i)a.near=u[i],a.far=u[i+1],t[i]=new Qn({geometryInstances:new Pt({geometry:new OI({origin:f,orientation:_,frustum:a,_drawNearPlane:i===0}),attributes:{color:$t.fromColor(G.fromAlpha(this._color,.1,X_t))},id:this.id,pickPrimitive:this}),appearance:new gn({translucent:!0,flat:!0}),asynchronous:!1}),n[i]=new Qn({geometryInstances:new Pt({geometry:new xQ({origin:f,orientation:_,frustum:a,_drawNearPlane:i===0}),attributes:{color:$t.fromColor(this._color)},id:this.id,pickPrimitive:this}),appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})}for(o=t.length,i=0;i<o;++i)n[i].update(e),t[i].update(e)};BH.prototype.isDestroyed=function(){return!1};BH.prototype.destroy=function(){let e=this._planesPrimitives.length;for(let t=0;t<e;++t)this._outlinePrimitives[t]=this._outlinePrimitives[t]&&this._outlinePrimitives[t].destroy(),this._planesPrimitives[t]=this._planesPrimitives[t]&&this._planesPrimitives[t].destroy();return ue(this)};var RA=BH;function TQ(e){this._rs=void 0,this._sp=void 0,this._va=void 0,this._command=void 0,this._mode=void 0,this._useLogDepth=!1,this._ellipsoidOffset=e??0}var bQ=Wt.supportsTypedArrays()?new Float32Array(12):[],uxe=new d,fxe=new d,LJ=new d,dxe=new d,DH=new d;function Z_t(e,t){let n=e.radii,i=t.camera,o,r,s;if(i.frustum instanceof An)o=d.ZERO,r=i.rightWC,s=i.upWC;else{let h=i.positionWC,A=d.multiplyComponents(e.oneOverRadii,h,uxe),g=d.normalize(A,fxe),m=d.normalize(d.cross(d.UNIT_Z,A,LJ),LJ),_=d.normalize(d.cross(g,m,dxe),dxe),y=d.magnitude(A),C=Math.sqrt(y*y-1);o=d.multiplyByScalar(g,1/y,uxe);let E=C/y;r=d.multiplyByScalar(m,E,fxe),s=d.multiplyByScalar(_,E,LJ)}let a=d.add(o,s,DH);d.subtract(a,r,a),d.multiplyComponents(n,a,a),d.pack(a,bQ,0);let c=d.subtract(o,s,DH);d.subtract(c,r,c),d.multiplyComponents(n,c,c),d.pack(c,bQ,3);let u=d.add(o,s,DH);d.add(u,r,u),d.multiplyComponents(n,u,u),d.pack(u,bQ,6);let f=d.subtract(o,s,DH);return d.add(f,r,f),d.multiplyComponents(n,f,f),d.pack(f,bQ,9),bQ}TQ.prototype.update=function(e){if(this._mode=e.mode,e.mode!==ie.SCENE3D)return;let t=e.context,n=e.mapProjection.ellipsoid.radii,i=new te(n.x+this._ellipsoidOffset,n.y+this._ellipsoidOffset,n.z+this._ellipsoidOffset),o=e.useLogDepth;if(l(this._command)||(this._rs=Ue.fromCache({cull:{enabled:!0},depthTest:{enabled:!0},colorMask:{red:!1,green:!1,blue:!1,alpha:!1}}),this._command=new nt({renderState:this._rs,boundingVolume:new le(d.ZERO,i.maximumRadius),pass:Be.OPAQUE,owner:this})),!l(this._sp)||this._useLogDepth!==o){this._useLogDepth=o;let s=new He({sources:[L2]}),a=new He({sources:[N2]});o&&(a.defines.push("LOG_DEPTH"),s.defines.push("LOG_DEPTH")),this._sp=an.replaceCache({shaderProgram:this._sp,context:t,vertexShaderSource:s,fragmentShaderSource:a,attributeLocations:{position:0}}),this._command.shaderProgram=this._sp}let r=Z_t(i,e);if(l(this._va))this._va.getAttribute(0).vertexBuffer.copyFromArrayView(r);else{let s=new ht({attributes:{position:new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:r})},indices:[0,1,2,2,1,3],primitiveType:Me.TRIANGLES});this._va=li.fromGeometry({context:t,geometry:s,attributeLocations:{position:0},bufferUsage:Qe.DYNAMIC_DRAW}),this._command.vertexArray=this._va}};TQ.prototype.execute=function(e,t){this._mode===ie.SCENE3D&&this._command.execute(e,t)};TQ.prototype.isDestroyed=function(){return!1};TQ.prototype.destroy=function(){this._sp=this._sp&&this._sp.destroy(),this._va=this._va&&this._va.destroy()};var SQ=TQ;function Iw(){}var $_t=/\bgl_FragDepth\b/,eyt=/\bdiscard\b/;function tyt(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"depthOnly");if(l(n))return n;let i=t.fragmentShaderSource,o=!1,r=i.sources;for(let a=0;a<r.length;++a)if($_t.test(r[a])||eyt.test(r[a])){o=!0;break}let s=i.defines.indexOf("LOG_DEPTH")>=0;if(!o&&!s){let a=`void main() +{ + out_FragColor = vec4(1.0); +} +`;i=new He({sources:[a]})}else if(!o&&s){let a=`void main() +{ + out_FragColor = vec4(1.0); + czm_writeLogDepth(); +} +`;i=new He({defines:["LOG_DEPTH"],sources:[a]})}return e.shaderCache.createDerivedShaderProgram(t,"depthOnly",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:i,attributeLocations:t._attributeLocations})}function nyt(e,t){let n=e._depthOnlyRenderStateCache,i=n[t.id];if(l(i))return i;let o=Ue.getState(t);o.depthMask=!0,o.colorMask={red:!1,green:!1,blue:!1,alpha:!1};let r=Ue.fromCache(o);return n[t.id]=r,r}Iw.createDepthOnlyDerivedCommand=function(e,t,n,i){l(i)||(i={});let o=i.depthOnlyCommand?.shaderProgram,r=i.depthOnlyCommand?.renderState;return i.depthOnlyCommand=nt.shallowClone(t,i.depthOnlyCommand),!l(o)||i.shaderProgramId!==t.shaderProgram.id?(i.depthOnlyCommand.shaderProgram=tyt(n,t.shaderProgram),i.depthOnlyCommand.renderState=nyt(e,t.renderState),i.shaderProgramId=t.shaderProgram.id):(i.depthOnlyCommand.shaderProgram=o,i.depthOnlyCommand.renderState=r),i};var iyt=/\s+czm_writeLogDepth\(/,oyt=/\s+czm_vertexLogDepth\(/;function ryt(e,t){if(t.fragmentShaderSource.defines.indexOf("LOG_DEPTH_READ_ONLY")>=0)return t;let i=e.shaderCache.getDerivedShaderProgram(t,"logDepth");if(l(i))return i;let o=t._attributeLocations,r=t.vertexShaderSource.clone(),s=t.fragmentShaderSource.clone();r.defines=l(r.defines)?r.defines.slice(0):[],r.defines.push("LOG_DEPTH"),s.defines=l(s.defines)?s.defines.slice(0):[],s.defines.push("LOG_DEPTH");let a=!1,c=r.sources;for(let f=0;f<c.length;++f)if(oyt.test(c[f])){a=!0;break}if(!a){for(let h=0;h<c.length;++h)c[h]=He.replaceMain(c[h],"czm_log_depth_main");c.push(` + +void main() +{ + czm_log_depth_main(); + czm_vertexLogDepth(); +} +`)}c=s.sources,a=!1;for(let f=0;f<c.length;++f)iyt.test(c[f])&&(a=!0);s.defines.indexOf("LOG_DEPTH_WRITE")!==-1&&(a=!0);let u="";if(!a){for(let f=0;f<c.length;f++)c[f]=He.replaceMain(c[f],"czm_log_depth_main");u=` +void main() +{ + czm_log_depth_main(); + czm_writeLogDepth(); +} +`}return c.push(u),e.shaderCache.createDerivedShaderProgram(t,"logDepth",{vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:o})}Iw.createLogDepthCommand=function(e,t,n){l(n)||(n={});let i=n.command?.shaderProgram;return n.command=nt.shallowClone(e,n.command),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.command.shaderProgram=ryt(t,e.shaderProgram),n.shaderProgramId=e.shaderProgram.id):n.command.shaderProgram=i,n};function syt(e,t,n){let i=e.shaderCache.getDerivedShaderProgram(t,"pick");if(l(i))return i;let o=t._attributeLocations,{sources:r,defines:s}=t.fragmentShaderSource,c=r.some(g=>g.includes("out_FragData"))?"out_FragData_0":"out_FragColor",u=`void main () +{ + czm_non_pick_main(); + if (${c}.a == 0.0) { + discard; + } + ${c} = ${n}; +} `,f=r.length,h=new Array(f+1);for(let g=0;g<f;++g)h[g]=He.replaceMain(r[g],"czm_non_pick_main");h[f]=u;let A=new He({sources:h,defines:s});return e.shaderCache.createDerivedShaderProgram(t,"pick",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:A,attributeLocations:o})}function hxe(e,t){let n=e.picking.pickRenderStateCache,i=n[t.id];if(l(i))return i;let o=Ue.getState(t);o.blending.enabled=!1,o.depthMask=!0;let r=Ue.fromCache(o);return n[t.id]=r,r}Iw.createPickDerivedCommand=function(e,t,n,i){l(i)||(i={});let o=i.pickCommand?.shaderProgram,r=i.pickCommand?.renderState;return i.pickCommand=nt.shallowClone(t,i.pickCommand),!l(o)||i.shaderProgramId!==t.shaderProgram.id?(i.pickCommand.shaderProgram=syt(n,t.shaderProgram,t.pickId),i.pickCommand.renderState=hxe(e,t.renderState),i.shaderProgramId=t.shaderProgram.id):(i.pickCommand.shaderProgram=o,i.pickCommand.renderState=r),i};function Ew(e,t,n){let i=e.length;for(let o=0;o<i;o++)e[o].trimStart().split(/\s+/)[0]===t&&(e[o]=`${t} ${n}`)}function mxe(e){return e.isArray?e.arrayLength:pt.getComponentCount(e.type)}function ayt(e){let t=mxe(e);return e.normalized?t===1?"float":`vec${t}`:t===1?"int":`ivec${t}`}function Axe(e,t,n){return`((${e} - float(${t})) / float(${n}))`}function pxe(e,t){let n=Gt.getMaximum(t);return`(${e}) / float(${n})`}function cyt(e,t){let n="float(value)";if(t.hasValueTransform){let i=t.offset,o=t.scale;n=Axe(n,i,o)}return e.normalized||(n=pxe(n,e.componentType)),n}function lyt(e,t,n){let o=`float(${`value.${n}`})`;if(t.hasValueTransform){let r=t.offset[n],s=t.scale[n];o=Axe(o,r,s)}return e.normalized||(o=pxe(o,e.componentType)),o}function uyt(e,t,n){let i=n.schemaId,o=n.className,r=n.propertyName,s=`pickMetadata-${i}-${o}-${r}`,a=e.shaderCache.getDerivedShaderProgram(t,s);if(l(a))return a;let c=n.metadataProperty,u=n.classProperty,f=ayt(u),h=["0.0","0.0","0.0","0.0"],A=mxe(u);if(A===1)h[0]=cyt(u,c);else{let y=["x","y","z","w"];for(let C=0;C<A;C++)h[C]=lyt(u,c,y[C])}let g=t.fragmentShaderSource.defines.slice();g.push(ef.METADATA_PICKING_ENABLED),Ew(g,ef.METADATA_PICKING_VALUE_TYPE,f),Ew(g,ef.METADATA_PICKING_VALUE_STRING,`metadata.${r}`),Ew(g,ef.METADATA_PICKING_VALUE_COMPONENT_X,h[0]),Ew(g,ef.METADATA_PICKING_VALUE_COMPONENT_Y,h[1]),Ew(g,ef.METADATA_PICKING_VALUE_COMPONENT_Z,h[2]),Ew(g,ef.METADATA_PICKING_VALUE_COMPONENT_W,h[3]);let m=new He({sources:t.fragmentShaderSource.sources,defines:g});return e.shaderCache.createDerivedShaderProgram(t,s,{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:m,attributeLocations:t._attributeLocations})}Iw.createPickMetadataDerivedCommand=function(e,t,n,i){return l(i)||(i={}),i.pickMetadataCommand=nt.shallowClone(t,i.pickMetadataCommand),i.pickMetadataCommand.shaderProgram=uyt(n,t.shaderProgram,t.pickedMetadataInfo),i.pickMetadataCommand.renderState=hxe(e,t.renderState),i.shaderProgramId=t.shaderProgram.id,i};function fyt(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"HDR");if(l(n))return n;let i=t._attributeLocations,o=t.vertexShaderSource.clone(),r=t.fragmentShaderSource.clone();return o.defines=l(o.defines)?o.defines.slice(0):[],o.defines.push("HDR"),r.defines=l(r.defines)?r.defines.slice(0):[],r.defines.push("HDR"),e.shaderCache.createDerivedShaderProgram(t,"HDR",{vertexShaderSource:o,fragmentShaderSource:r,attributeLocations:i})}Iw.createHdrCommand=function(e,t,n){l(n)||(n={});let i=n.command?.shaderProgram;return n.command=nt.shallowClone(e,n.command),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.command.shaderProgram=fyt(t,e.shaderProgram),n.shaderProgramId=e.shaderProgram.id):n.command.shaderProgram=i,n};var MA=Iw;function vH(e){this._scene=e,this._lastAlpha=void 0,this._lastBeta=void 0,this._lastGamma=void 0,this._alpha=void 0,this._beta=void 0,this._gamma=void 0;let t=this;function n(i){let o=i.alpha;if(!l(o)){t._alpha=void 0,t._beta=void 0,t._gamma=void 0;return}t._alpha=D.toRadians(o),t._beta=D.toRadians(i.beta),t._gamma=D.toRadians(i.gamma)}window.addEventListener("deviceorientation",n,!1),this._removeListener=function(){window.removeEventListener("deviceorientation",n,!1)}}var dyt=new Le,gxe=new Le,hyt=new J;function myt(e,t,n,i){let o=e.direction,r=e.right,s=e.up,a=Le.fromAxisAngle(o,n,gxe),c=Le.fromAxisAngle(r,i,dyt),u=Le.multiply(c,a,c),f=Le.fromAxisAngle(s,t,gxe);Le.multiply(f,u,u);let h=J.fromQuaternion(u,hyt);J.multiplyByVector(h,r,r),J.multiplyByVector(h,s,s),J.multiplyByVector(h,o,o)}vH.prototype.update=function(){if(!l(this._alpha))return;l(this._lastAlpha)||(this._lastAlpha=this._alpha,this._lastBeta=this._beta,this._lastGamma=this._gamma);let e=this._lastAlpha-this._alpha,t=this._lastBeta-this._beta,n=this._lastGamma-this._gamma;myt(this._scene.camera,-e,t,n),this._lastAlpha=this._alpha,this._lastBeta=this._beta,this._lastGamma=this._gamma};vH.prototype.isDestroyed=function(){return!1};vH.prototype.destroy=function(){return this._removeListener(),ue(this)};var wQ=vH;function OJ(){this.enabled=!0,this.renderable=!0,this.density=6e-4,this.heightScalar=.001,this._heightFalloff=.59,this.maxHeight=8e5,this.visualDensityScalar=.15,this.screenSpaceErrorFactor=2,this.minimumBrightness=.03}Object.defineProperties(OJ.prototype,{heightFalloff:{get:function(){return this._heightFalloff},set:function(e){this._heightFalloff=e}}});var Ayt=new d;OJ.prototype.update=function(e){if(!(e.fog.enabled=this.enabled))return;e.fog.renderable=this.renderable;let n=e.camera,i=n.positionCartographic;if(!l(i)||i.height>this.maxHeight||e.mode!==ie.SCENE3D){e.fog.enabled=!1,e.fog.density=0;return}let o=i.height,r=this.density*this.heightScalar*Math.pow(Math.max(o/this.maxHeight,D.EPSILON4),-Math.max(this._heightFalloff,0)),s=d.normalize(n.positionWC,Ayt),a=Math.abs(d.dot(n.directionWC,s));r*=1-a,e.fog.density=r,e.fog.visualDensityScalar=this.visualDensityScalar,e.fog.sse=this.screenSpaceErrorFactor,e.fog.minimumBrightness=this.minimumBrightness};var BQ=OJ;function pyt(e,t,n){this.context=e,this.commandList=[],this.shadowMaps=[],this.brdfLutGenerator=void 0,this.environmentMap=void 0,this.sphericalHarmonicCoefficients=void 0,this.specularEnvironmentMaps=void 0,this.specularEnvironmentMapsMaximumLOD=void 0,this.mode=ie.SCENE3D,this.morphTime=ie.getMorphTime(ie.SCENE3D),this.frameNumber=0,this.newFrame=!1,this.time=void 0,this.jobScheduler=n,this.mapProjection=void 0,this.camera=void 0,this.cameraUnderground=!1,this.globeTranslucencyState=void 0,this.cullingVolume=void 0,this.occluder=void 0,this.maximumScreenSpaceError=void 0,this.pixelRatio=1,this.passes={render:!1,pick:!1,pickVoxel:!1,depth:!1,postProcess:!1,offscreen:!1},this.creditDisplay=t,this.afterRender=[],this.scene3DOnly=!1,this.fog={enabled:!1,renderable:!1,density:void 0,visualDensityScalar:void 0,sse:void 0,minimumBrightness:void 0},this.atmosphere=void 0,this.verticalExaggeration=1,this.verticalExaggerationRelativeHeight=0,this.shadowState={shadowsEnabled:!0,shadowMaps:[],lightShadowMaps:[],nearPlane:1,farPlane:5e3,closestObjectSize:1e3,lastDirtyTime:0,outOfView:!0},this.splitPosition=0,this.frustumSplits=[],this.backgroundColor=void 0,this.light=void 0,this.minimumDisableDepthTestDistance=void 0,this.invertClassification=!1,this.invertClassificationColor=void 0,this.useLogDepth=!1,this.tilesetPassState=void 0,this.minimumTerrainHeight=0,this.pickingMetadata=!1,this.pickedMetadataInfo=void 0}var DQ=pyt;var Za={OPAQUE_FRONT_FACE:0,OPAQUE_BACK_FACE:1,DEPTH_ONLY_FRONT_FACE:2,DEPTH_ONLY_BACK_FACE:3,DEPTH_ONLY_FRONT_AND_BACK_FACE:4,TRANSLUCENT_FRONT_FACE:5,TRANSLUCENT_BACK_FACE:6,TRANSLUCENT_FRONT_FACE_MANUAL_DEPTH_TEST:7,TRANSLUCENT_BACK_FACE_MANUAL_DEPTH_TEST:8,PICK_FRONT_FACE:9,PICK_BACK_FACE:10,DERIVED_COMMANDS_MAXIMUM_LENGTH:11},FI=Za.DERIVED_COMMANDS_MAXIMUM_LENGTH,wxe=["opaqueFrontFaceCommand","opaqueBackFaceCommand","depthOnlyFrontFaceCommand","depthOnlyBackFaceCommand","depthOnlyFrontAndBackFaceCommand","translucentFrontFaceCommand","translucentBackFaceCommand","translucentFrontFaceManualDepthTestCommand","translucentBackFaceManualDepthTestCommand","pickFrontFaceCommand","pickBackFaceCommand"];function QI(){this._frontFaceAlphaByDistance=new jt(0,1,0,1),this._backFaceAlphaByDistance=new jt(0,1,0,1),this._frontFaceTranslucent=!1,this._backFaceTranslucent=!1,this._requiresManualDepthTest=!1,this._sunVisibleThroughGlobe=!1,this._environmentVisible=!1,this._useDepthPlane=!1,this._numberOfTextureUniforms=0,this._globeTranslucencyFramebuffer=void 0,this._rectangle=ae.clone(ae.MAX_VALUE),this._derivedCommandKey=0,this._derivedCommandsDirty=!1,this._derivedCommandPacks=void 0,this._derivedCommandTypes=new Array(FI),this._derivedBlendCommandTypes=new Array(FI),this._derivedPickCommandTypes=new Array(FI),this._derivedCommandTypesToUpdate=new Array(FI),this._derivedCommandsLength=0,this._derivedBlendCommandsLength=0,this._derivedPickCommandsLength=0,this._derivedCommandsToUpdateLength=0}Object.defineProperties(QI.prototype,{frontFaceAlphaByDistance:{get:function(){return this._frontFaceAlphaByDistance}},backFaceAlphaByDistance:{get:function(){return this._backFaceAlphaByDistance}},translucent:{get:function(){return this._frontFaceTranslucent}},sunVisibleThroughGlobe:{get:function(){return this._sunVisibleThroughGlobe}},environmentVisible:{get:function(){return this._environmentVisible}},useDepthPlane:{get:function(){return this._useDepthPlane}},numberOfTextureUniforms:{get:function(){return this._numberOfTextureUniforms}},rectangle:{get:function(){return this._rectangle}}});QI.prototype.update=function(e){let t=e.globe;if(!l(t)||!t.show){this._frontFaceTranslucent=!1,this._backFaceTranslucent=!1,this._sunVisibleThroughGlobe=!0,this._environmentVisible=!0,this._useDepthPlane=!1;return}this._frontFaceAlphaByDistance=_xe(t.translucency.enabled,t.translucency.frontFaceAlpha,t.translucency.frontFaceAlphaByDistance,this._frontFaceAlphaByDistance),this._backFaceAlphaByDistance=_xe(t.translucency.enabled,t.translucency.backFaceAlpha,t.translucency.backFaceAlphaByDistance,this._backFaceAlphaByDistance),this._frontFaceTranslucent=yxe(t.translucency.enabled,this._frontFaceAlphaByDistance,t),this._backFaceTranslucent=yxe(t.translucency.enabled,this._backFaceAlphaByDistance,t),this._requiresManualDepthTest=Cyt(this,e,t),this._sunVisibleThroughGlobe=gyt(this,e),this._environmentVisible=_yt(this,e),this._useDepthPlane=yyt(this,e),this._numberOfTextureUniforms=Eyt(this),this._rectangle=ae.clone(t.translucency.rectangle,this._rectangle),Iyt(this,e)};function _xe(e,t,n,i){return e?l(n)?(jt.clone(n,i),i.nearValue*=t,i.farValue*=t,i):(i.nearValue=t,i.farValue=t,i):(i.nearValue=1,i.farValue=1,i)}function yxe(e,t,n){return e&&(n.baseColor.alpha<1||t.nearValue<1||t.farValue<1)}function gyt(e,t){let n=e._frontFaceTranslucent,i=e._backFaceTranslucent;return n&&(t.cameraUnderground||i)}function _yt(e,t){return!t.cameraUnderground||e._frontFaceTranslucent}function yyt(e,t){return!t.cameraUnderground&&!e._frontFaceTranslucent}function Cyt(e,t,n){return e._frontFaceTranslucent&&!e._backFaceTranslucent&&!n.depthTestAgainstTerrain&&t.mode!==ie.SCENE2D&&t.context.depthTexture}function Eyt(e){let t=0;return e._frontFaceTranslucent&&++t,e._requiresManualDepthTest&&++t,t}function Iyt(e,t){e._derivedCommandsLength=FJ(e,t,!1,!1,e._derivedCommandTypes),e._derivedBlendCommandsLength=FJ(e,t,!0,!1,e._derivedBlendCommandTypes),e._derivedPickCommandsLength=FJ(e,t,!1,!0,e._derivedPickCommandTypes);let n,i=0;for(n=0;n<e._derivedCommandsLength;++n)i|=1<<e._derivedCommandTypes[n];for(n=0;n<e._derivedBlendCommandsLength;++n)i|=1<<e._derivedBlendCommandTypes[n];for(n=0;n<e._derivedPickCommandsLength;++n)i|=1<<e._derivedPickCommandTypes[n];let o=0;for(n=0;n<FI;++n)(i&1<<n)>0&&(e._derivedCommandTypesToUpdate[o++]=n);e._derivedCommandsToUpdateLength=o;let r=i!==e._derivedCommandKey;e._derivedCommandKey=i,e._derivedCommandsDirty=r,!l(e._derivedCommandPacks)&&e._frontFaceTranslucent&&(e._derivedCommandPacks=Fyt())}function FJ(e,t,n,i,o){let r=0,s=e._frontFaceTranslucent,a=e._backFaceTranslucent;if(!s)return r;let c=t.cameraUnderground,u=e._requiresManualDepthTest,f=i?Za.PICK_FRONT_FACE:u?Za.TRANSLUCENT_FRONT_FACE_MANUAL_DEPTH_TEST:Za.TRANSLUCENT_FRONT_FACE,h=i?Za.PICK_BACK_FACE:u?Za.TRANSLUCENT_BACK_FACE_MANUAL_DEPTH_TEST:Za.TRANSLUCENT_BACK_FACE;return t.mode===ie.SCENE2D?(o[r++]=Za.DEPTH_ONLY_FRONT_FACE,o[r++]=f,r):(a?(n||(o[r++]=Za.DEPTH_ONLY_FRONT_AND_BACK_FACE),c?(o[r++]=f,o[r++]=h):(o[r++]=h,o[r++]=f)):c?(n||(o[r++]=Za.DEPTH_ONLY_BACK_FACE),o[r++]=Za.OPAQUE_FRONT_FACE,o[r++]=h):(n||(o[r++]=Za.DEPTH_ONLY_FRONT_FACE),o[r++]=Za.OPAQUE_BACK_FACE,o[r++]=f),r)}function Hd(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function Cxe(e,t){return e.indexOf(t)>-1}function xyt(e,t){Hd(e.defines,"TRANSLUCENT"),Hd(t.defines,"TRANSLUCENT")}function byt(e,t){Hd(e.defines,"GROUND_ATMOSPHERE"),Hd(t.defines,"GROUND_ATMOSPHERE"),Hd(e.defines,"FOG"),Hd(t.defines,"FOG"),Hd(e.defines,"TRANSLUCENT"),Hd(t.defines,"TRANSLUCENT")}function QJ(e,t){if(Cxe(t.defines,"TILE_LIMIT_RECTANGLE")||Cxe(t.defines,"ENABLE_CLIPPING_PLANES"))return;let n=`void main() +{ + out_FragColor = vec4(1.0); +} +`;t.sources=[n]}function kJ(e,t){let n=t.sources,i=n.length;for(let r=0;r<i;++r)n[r]=He.replaceMain(n[r],"czm_globe_translucency_main");n.push(` + +uniform sampler2D u_classificationTexture; +void main() +{ + vec2 st = gl_FragCoord.xy / czm_viewport.zw; +#ifdef MANUAL_DEPTH_TEST + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, st)); + if (logDepthOrDepth != 0.0) + { + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + float depthEC = eyeCoordinate.z / eyeCoordinate.w; + if (v_positionEC.z < depthEC) + { + discard; + } + } +#endif + czm_globe_translucency_main(); + vec4 classificationColor = texture(u_classificationTexture, st); + if (classificationColor.a > 0.0) + { + // Reverse premultiplication process to get the correct composited result of the classification primitives + classificationColor.rgb /= classificationColor.a; + } + out_FragColor = classificationColor * vec4(classificationColor.aaa, 1.0) + out_FragColor * (1.0 - classificationColor.a); +} +`)}function Bxe(e,t){kJ(e,t),Hd(e.defines,"GROUND_ATMOSPHERE"),Hd(t.defines,"GROUND_ATMOSPHERE"),Hd(e.defines,"FOG"),Hd(t.defines,"FOG")}function Tyt(e,t){kJ(e,t),e.defines.push("GENERATE_POSITION"),t.defines.push("MANUAL_DEPTH_TEST")}function Syt(e,t){Bxe(e,t),e.defines.push("GENERATE_POSITION"),t.defines.push("MANUAL_DEPTH_TEST")}function Exe(e,t){let n=`uniform sampler2D u_classificationTexture; +void main() +{ + vec2 st = gl_FragCoord.xy / czm_viewport.zw; + vec4 pickColor = texture(u_classificationTexture, st); + if (pickColor == vec4(0.0)) + { + discard; + } + out_FragColor = pickColor; +} +`;t.sources=[n]}function wyt(e,t,n,i,o,r){if(!l(o))return t;if(!i&&l(n))return n;let s=e.shaderCache.getDerivedShaderProgram(t,r);if(!l(s)){let a=t._attributeLocations,c=t.vertexShaderSource.clone(),u=t.fragmentShaderSource.clone();c.defines=l(c.defines)?c.defines.slice(0):[],u.defines=l(u.defines)?u.defines.slice(0):[],o(c,u),s=e.shaderCache.createDerivedShaderProgram(t,r,{vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:a})}return s}function Byt(e){e.cull.face=Mi.BACK,e.cull.enabled=!0}function Dyt(e){e.cull.face=Mi.FRONT,e.cull.enabled=!0}function vyt(e){e.cull.face=Mi.BACK,e.cull.enabled=!0,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function Pyt(e){e.cull.face=Mi.FRONT,e.cull.enabled=!0,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function Ryt(e){e.cull.enabled=!1,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function Ixe(e){e.cull.face=Mi.BACK,e.cull.enabled=!0,e.depthMask=!1,e.blending=pn.ALPHA_BLEND}function xxe(e){e.cull.face=Mi.FRONT,e.cull.enabled=!0,e.depthMask=!1,e.blending=pn.ALPHA_BLEND}function Myt(e){e.cull.face=Mi.BACK,e.cull.enabled=!0,e.blending.enabled=!1}function Nyt(e){e.cull.face=Mi.FRONT,e.cull.enabled=!0,e.blending.enabled=!1}function Lyt(e,t,n,i,o){if(!l(i))return e;if(!n&&l(t))return t;let r=o[e.id];if(!l(r)){let s=Ue.getState(e);i(s),r=Ue.fromCache(s),o[e.id]=r}return r}function xw(e){return{u_classificationTexture:function(){return e._globeTranslucencyFramebuffer.classificationTexture}}}function Oyt(e,t,n,i,o){return l(o)?!i&&l(n)?n:Tt(t,o(e),!1):t}function _m(e){this.pass=e.pass,this.pickOnly=e.pickOnly,this.getShaderProgramFunction=e.getShaderProgramFunction,this.getRenderStateFunction=e.getRenderStateFunction,this.getUniformMapFunction=e.getUniformMapFunction,this.renderStateCache={}}function Fyt(){return[new _m({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:xyt,getRenderStateFunction:Byt,getUniformMapFunction:void 0}),new _m({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:byt,getRenderStateFunction:Dyt,getUniformMapFunction:void 0}),new _m({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:QJ,getRenderStateFunction:vyt,getUniformMapFunction:void 0}),new _m({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:QJ,getRenderStateFunction:Pyt,getUniformMapFunction:void 0}),new _m({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:QJ,getRenderStateFunction:Ryt,getUniformMapFunction:void 0}),new _m({pass:Be.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:kJ,getRenderStateFunction:Ixe,getUniformMapFunction:xw}),new _m({pass:Be.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:Bxe,getRenderStateFunction:xxe,getUniformMapFunction:xw}),new _m({pass:Be.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:Tyt,getRenderStateFunction:Ixe,getUniformMapFunction:xw}),new _m({pass:Be.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:Syt,getRenderStateFunction:xxe,getUniformMapFunction:xw}),new _m({pass:Be.TRANSLUCENT,pickOnly:!0,getShaderProgramFunction:Exe,getRenderStateFunction:Myt,getUniformMapFunction:xw}),new _m({pass:Be.TRANSLUCENT,pickOnly:!0,getShaderProgramFunction:Exe,getRenderStateFunction:Nyt,getUniformMapFunction:xw})]}var bxe=new Array(FI),Txe=new Array(FI);QI.prototype.updateDerivedCommands=function(e,t){let n=this._derivedCommandTypesToUpdate,i=this._derivedCommandsToUpdateLength;if(i!==0){for(let o=0;o<i;++o)Txe[o]=this._derivedCommandPacks[n[o]],bxe[o]=wxe[n[o]];Qyt(this,e,i,n,bxe,Txe,t)}};function Qyt(e,t,n,i,o,r,s){let a=t.derivedCommands.globeTranslucency,c=e._derivedCommandsDirty;if(t.dirty||!l(a)||c){t.dirty=!1,l(a)||(a={},t.derivedCommands.globeTranslucency=a);let u=s.frameNumber,f=a.uniformMapDirtyFrame??0,h=a.shaderProgramDirtyFrame??0,A=a.renderStateDirtyFrame??0,g=a.uniformMap!==t.uniformMap,m=a.shaderProgramId!==t.shaderProgram.id,_=a.renderStateId!==t.renderState.id;g&&(a.uniformMapDirtyFrame=u),m&&(a.shaderProgramDirtyFrame=u),_&&(a.renderStateDirtyFrame=u),a.uniformMap=t.uniformMap,a.shaderProgramId=t.shaderProgram.id,a.renderStateId=t.renderState.id;for(let y=0;y<n;++y){let C=r[y],E=i[y],I=o[y],b=a[I],S,B,v;l(b)?(S=b.uniformMap,B=b.shaderProgram,v=b.renderState):(S=void 0,B=void 0,v=void 0),b=nt.shallowClone(t,b),a[I]=b;let P=b.derivedCommands.uniformMapDirtyFrame??0,M=b.derivedCommands.shaderProgramDirtyFrame??0,L=b.derivedCommands.renderStateDirtyFrame??0,p=g||P<f,x=m||M<h,T=_||L<A;p&&(b.derivedCommands.uniformMapDirtyFrame=u),x&&(b.derivedCommands.shaderProgramDirtyFrame=u),T&&(b.derivedCommands.renderStateDirtyFrame=u),b.derivedCommands.type=E,b.pass=C.pass,b.pickOnly=C.pickOnly,b.uniformMap=Oyt(e,t.uniformMap,S,p,C.getUniformMapFunction),b.shaderProgram=wyt(s.context,t.shaderProgram,B,x,C.getShaderProgramFunction,I),b.renderState=Lyt(t.renderState,v,T,C.getRenderStateFunction,C.renderStateCache)}}}QI.prototype.pushDerivedCommands=function(e,t,n){let i=n.passes.pick||n.passes.pickVoxel;if(i&&t)return;let o=this._derivedCommandTypes,r=this._derivedCommandsLength;if(i?(o=this._derivedPickCommandTypes,r=this._derivedPickCommandsLength):t&&(o=this._derivedBlendCommandTypes,r=this._derivedBlendCommandsLength),r===0){n.commandList.push(e);return}let s=e.derivedCommands.globeTranslucency;for(let a=0;a<r;++a){let c=wxe[o[a]];n.commandList.push(s[c])}};function Dxe(e,t,n,i,o,r){for(let s=0;s<t;++s){let a=e[s],c=a.derivedCommands.type;(!l(r)||r.indexOf(c)>-1)&&n(a,i,o)}}function Sxe(e,t,n,i,o){for(let r=0;r<t;++r)n(e[r],i,o)}var kyt=[Za.OPAQUE_FRONT_FACE,Za.OPAQUE_BACK_FACE],Uyt=[Za.DEPTH_ONLY_FRONT_FACE,Za.DEPTH_ONLY_BACK_FACE,Za.DEPTH_ONLY_FRONT_AND_BACK_FACE];QI.prototype.executeGlobeCommands=function(e,t,n,i,o){let r=i.context,s=e.commands[Be.GLOBE],a=e.indices[Be.GLOBE];a!==0&&(this._globeTranslucencyFramebuffer=n,n.clearClassification(r,o),Dxe(s,a,t,i,o,kyt))};QI.prototype.executeGlobeClassificationCommands=function(e,t,n,i,o){let{context:r}=i,{uniformState:s}=r,a=e.commands[Be.GLOBE],c=e.indices[Be.GLOBE],u=e.commands[Be.TERRAIN_CLASSIFICATION],f=e.indices[Be.TERRAIN_CLASSIFICATION];if(c===0||f===0)return;let h=this._frontFaceTranslucent,A=this._backFaceTranslucent;if((!h||!A)&&Sxe(u,f,t,i,o),!h&&!A)return;this._globeTranslucencyFramebuffer=n;let g=s.globeDepthTexture,m=o.framebuffer;if(o.framebuffer=n.classificationFramebuffer,Dxe(a,c,t,i,o,Uyt),r.depthTexture){let _=n.packDepth(r,o);s.globeDepthTexture=_}Sxe(u,f,t,i,o),s.globeDepthTexture=g,o.framebuffer=m};var vQ=QI;var Bu=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + out_FragColor = texture(colorTexture, v_textureCoordinates); +} +`;function NA(){this._numSamples=1,this.previousFramebuffer=void 0,this._previousFramebuffer=void 0,this._depthStencilTexture=void 0,this._depthStencilRenderbuffer=void 0,this._fbo=new Di({depthStencil:!0,createDepthAttachments:!1}),this._fboClassified=new Di({depthStencil:!0,createDepthAttachments:!1}),this._rsUnclassified=void 0,this._rsClassified=void 0,this._unclassifiedCommand=void 0,this._classifiedCommand=void 0,this._translucentCommand=void 0,this._clearColorCommand=new Ci({color:new G(0,0,0,0),owner:this}),this._clearCommand=new Ci({color:new G(0,0,0,0),depth:1,stencil:0});let e=this;this._uniformMap={colorTexture:function(){return e._fbo.getColorTexture()},depthTexture:function(){return e._depthStencilTexture},classifiedTexture:function(){return e._fboClassified.getColorTexture()}}}Object.defineProperties(NA.prototype,{unclassifiedCommand:{get:function(){return this._unclassifiedCommand}}});NA.isTranslucencySupported=function(e){return e.depthTexture&&e.fragmentDepth};var Gyt={depthMask:!1,stencilTest:{enabled:!0,frontFunction:Zn.EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.NEVER,reference:0,mask:Kt.CLASSIFICATION_MASK},blending:pn.ALPHA_BLEND},zyt={depthMask:!1,stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.NEVER,reference:0,mask:Kt.CLASSIFICATION_MASK},blending:pn.ALPHA_BLEND},Vyt={depthMask:!0,depthTest:{enabled:!0},stencilTest:Kt.setCesium3DTileBit(),stencilMask:Kt.CESIUM_3D_TILE_MASK,blending:pn.ALPHA_BLEND},Hyt=`uniform sampler2D colorTexture; +uniform sampler2D depthTexture; +uniform sampler2D classifiedTexture; +in vec2 v_textureCoordinates; +void main() +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + if (color.a == 0.0) + { + discard; + } + bool isClassified = all(equal(texture(classifiedTexture, v_textureCoordinates), vec4(0.0))); +#ifdef UNCLASSIFIED + vec4 highlightColor = czm_invertClassificationColor; + if (isClassified) + { + discard; + } +#else + vec4 highlightColor = vec4(1.0); + if (!isClassified) + { + discard; + } +#endif + out_FragColor = color * highlightColor; + gl_FragDepth = texture(depthTexture, v_textureCoordinates).r; +} +`,Wyt=`uniform sampler2D colorTexture; +in vec2 v_textureCoordinates; +void main() +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + if (color.a == 0.0) + { + discard; + } +#ifdef UNCLASSIFIED + out_FragColor = color * czm_invertClassificationColor; +#else + out_FragColor = color; +#endif +} +`;NA.prototype.update=function(e,t,n){let i=this._fbo.getColorTexture(),o=this.previousFramebuffer!==this._previousFramebuffer;this._previousFramebuffer=this.previousFramebuffer;let r=this._numSamples!==t,s=e.drawingBufferWidth,a=e.drawingBufferHeight,c=!l(i)||i.width!==s||i.height!==a;if((c||o||r)&&(this._numSamples=t,this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy(),l(this._previousFramebuffer)||(this._depthStencilTexture=new Mt({context:e,width:s,height:a,pixelFormat:$e.DEPTH_STENCIL,pixelDatatype:Ve.UNSIGNED_INT_24_8}),t>1&&(this._depthStencilRenderbuffer=new Ju({context:e,width:s,height:a,format:Bl.DEPTH24_STENCIL8,numSamples:t})))),!l(this._fbo.framebuffer)||c||o||r){this._fbo.destroy(),this._fboClassified.destroy();let u,f;l(this._previousFramebuffer)?(u=n.getDepthStencilTexture(),f=n.getDepthStencilRenderbuffer()):(u=this._depthStencilTexture,f=this._depthStencilRenderbuffer),this._fbo.setDepthStencilTexture(u),l(f)&&this._fbo.setDepthStencilRenderbuffer(f),this._fbo.update(e,s,a,t),l(this._previousFramebuffer)||(this._fboClassified.setDepthStencilTexture(u),this._fboClassified.update(e,s,a))}if(l(this._rsUnclassified)||(this._rsUnclassified=Ue.fromCache(Gyt),this._rsClassified=Ue.fromCache(zyt),this._rsDefault=Ue.fromCache(Vyt)),!l(this._unclassifiedCommand)||o||r){l(this._unclassifiedCommand)&&(this._unclassifiedCommand.shaderProgram=this._unclassifiedCommand.shaderProgram&&this._unclassifiedCommand.shaderProgram.destroy(),this._classifiedCommand.shaderProgram=this._classifiedCommand.shaderProgram&&this._classifiedCommand.shaderProgram.destroy());let u=l(this._previousFramebuffer)?Wyt:Hyt,f=new He({defines:["UNCLASSIFIED"],sources:[u]}),h=new He({sources:[u]});this._unclassifiedCommand=e.createViewportQuadCommand(f,{renderState:l(this._previousFramebuffer)?this._rsUnclassified:this._rsDefault,uniformMap:this._uniformMap,owner:this}),this._classifiedCommand=e.createViewportQuadCommand(h,{renderState:l(this._previousFramebuffer)?this._rsClassified:this._rsDefault,uniformMap:this._uniformMap,owner:this}),l(this._translucentCommand)&&(this._translucentCommand.shaderProgram=this._translucentCommand.shaderProgram&&this._translucentCommand.shaderProgram.destroy()),l(this._previousFramebuffer)||(this._translucentCommand=e.createViewportQuadCommand(Bu,{renderState:this._rsUnclassified,uniformMap:this._uniformMap,owner:this}))}};NA.prototype.prepareTextures=function(e,t){this._fbo._numSamples>1&&this._fbo.prepareTextures(e,t)};NA.prototype.clear=function(e,t){l(this._previousFramebuffer)?this._fbo.clear(e,this._clearColorCommand,t):(this._fbo.clear(e,this._clearCommand,t),this._fboClassified.clear(e,this._clearCommand,t))};NA.prototype.executeClassified=function(e,t){if(!l(this._previousFramebuffer)){let n=t.framebuffer;this.prepareTextures(e,!0),t.framebuffer=this._fboClassified.framebuffer,this._translucentCommand.execute(e,t),t.framebuffer=n}this._classifiedCommand.execute(e,t)};NA.prototype.executeUnclassified=function(e,t){this._unclassifiedCommand.execute(e,t)};NA.prototype.isDestroyed=function(){return!1};NA.prototype.destroy=function(){return this._fbo.destroy(),this._fboClassified.destroy(),this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy(),l(this._unclassifiedCommand)&&(this._unclassifiedCommand.shaderProgram=this._unclassifiedCommand.shaderProgram&&this._unclassifiedCommand.shaderProgram.destroy(),this._classifiedCommand.shaderProgram=this._classifiedCommand.shaderProgram&&this._classifiedCommand.shaderProgram.destroy()),ue(this)};var bw=NA;function PH(e){this._total=e,this.usedThisFrame=0,this.stolenFromMeThisFrame=0,this.starvedThisFrame=!1,this.starvedLastFrame=!1}Object.defineProperties(PH.prototype,{total:{get:function(){return this._total}}});function mC(e){let t=new Array(hc.NUMBER_OF_JOB_TYPES);t[hc.TEXTURE]=new PH(l(e)?e[hc.TEXTURE]:10),t[hc.PROGRAM]=new PH(l(e)?e[hc.PROGRAM]:10),t[hc.BUFFER]=new PH(l(e)?e[hc.BUFFER]:30);let n=t.length,i,o=0;for(i=0;i<n;++i)o+=t[i].total;let r=new Array(n);for(i=0;i<n;++i)r[i]=!1;this._totalBudget=o,this._totalUsedThisFrame=0,this._budgets=t,this._executedThisFrame=r}mC.getTimestamp=Li;Object.defineProperties(mC.prototype,{totalBudget:{get:function(){return this._totalBudget}}});mC.prototype.disableThisFrame=function(){this._totalUsedThisFrame=this._totalBudget};mC.prototype.resetBudgets=function(){let e=this._budgets,t=e.length;for(let n=0;n<t;++n){let i=e[n];i.starvedLastFrame=i.starvedThisFrame,i.starvedThisFrame=!1,i.usedThisFrame=0,i.stolenFromMeThisFrame=0}this._totalUsedThisFrame=0};mC.prototype.execute=function(e,t){let n=this._budgets,i=n[t],o=this._executedThisFrame[t];if(this._totalUsedThisFrame>=this._totalBudget&&o)return i.starvedThisFrame=!0,!1;let r;if(i.usedThisFrame+i.stolenFromMeThisFrame>=i.total){let c=n.length,u;for(u=0;u<c&&(r=n[u],!(r.usedThisFrame+r.stolenFromMeThisFrame<r.total&&!r.starvedLastFrame));++u);if(u===c&&o)return!1;o&&(i.starvedThisFrame=!0)}let s=mC.getTimestamp();e.execute();let a=mC.getTimestamp()-s;return this._totalUsedThisFrame+=a,r?r.stolenFromMeThisFrame+=a:i.usedThisFrame+=a,this._executedThisFrame[t]=!0,!0};var PQ=mC;function RH(e){e=e??V.EMPTY_OBJECT;let t=kn(e.container);this._container=t;let n=document.createElement("div");n.className="cesium-performanceDisplay";let i=document.createElement("div");i.className="cesium-performanceDisplay-fps",this._fpsText=document.createTextNode(""),i.appendChild(this._fpsText);let o=document.createElement("div");o.className="cesium-performanceDisplay-ms",this._msText=document.createTextNode(""),o.appendChild(this._msText),n.appendChild(o),n.appendChild(i),this._container.appendChild(n),this._lastFpsSampleTime=Li(),this._lastMsSampleTime=Li(),this._fpsFrameCount=0,this._msFrameCount=0,this._throttled=!1;let r=document.createElement("div");r.className="cesium-performanceDisplay-throttled",this._throttledText=document.createTextNode(""),r.appendChild(this._throttledText),n.appendChild(r)}Object.defineProperties(RH.prototype,{throttled:{get:function(){return this._throttled},set:function(e){this._throttled!==e&&(e?this._throttledText.nodeValue="(throttled)":this._throttledText.nodeValue="",this._throttled=e)}}});RH.prototype.update=function(e){let t=Li(),n=e??!0;this._fpsFrameCount++;let i=t-this._lastFpsSampleTime;if(i>1e3){let r="N/A";n&&(r=this._fpsFrameCount*1e3/i|0),this._fpsText.nodeValue=`${r} FPS`,this._lastFpsSampleTime=t,this._fpsFrameCount=0}this._msFrameCount++;let o=t-this._lastMsSampleTime;if(o>200){let r="N/A";n&&(r=(o/this._msFrameCount).toFixed(2)),this._msText.nodeValue=`${r} MS`,this._lastMsSampleTime=t,this._msFrameCount=0}};RH.prototype.destroy=function(){return ue(this)};var qg=RH;var $a={};$a.decodeRawMetadataValue=function(e,t,n){switch(e){case Gt.INT8:return t.getInt8(n);case Gt.UINT8:return t.getUint8(n);case Gt.INT16:return t.getInt16(n,!0);case Gt.UINT16:return t.getUint16(n,!0);case Gt.INT32:return t.getInt32(n,!0);case Gt.UINT32:return t.getUint32(n,!0);case Gt.INT64:return t.getBigInt64(n,!0);case Gt.UINT64:return t.getBigUint64(n,!0);case Gt.FLOAT32:return t.getFloat32(n,!0);case Gt.FLOAT64:return t.getFloat64(n,!0)}throw new ce(`Invalid component type: ${e}`)};$a.decodeRawMetadataValueComponent=function(e,t,n){let i=e.componentType,o=$a.decodeRawMetadataValue(i,t,n);return e.normalized?Gt.normalize(o,i):o};$a.decodeRawMetadataValueElement=function(e,t,n){let i=e.componentType,o=Gt.getSizeInBytes(i),r=e.type,s=pt.getComponentCount(r),a=o*s;if(s>1){let f=Array(s);for(let h=0;h<s;h++){let A=n*a+h*o,g=$a.decodeRawMetadataValueComponent(e,t,A);f[h]=g}return f}let c=n*a;return $a.decodeRawMetadataValueComponent(e,t,c)};$a.decodeRawMetadataValues=function(e,t){let n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(e.isArray){let o=e.arrayLength,r=Array(o);for(let s=0;s<o;s++){let a=$a.decodeRawMetadataValueElement(e,n,s);r[s]=a}return r}return $a.decodeRawMetadataValueElement(e,n,0)};$a.convertToObjectType=function(e,t){if(!l(t)||e===pt.SCALAR||e===pt.STRING||e===pt.BOOLEAN||e===pt.ENUM)return t;let n=t.map(i=>Number(i));switch(e){case pt.VEC2:return U.unpack(n,0,new U);case pt.VEC3:return d.unpack(n,0,new d);case pt.VEC4:return se.unpack(n,0,new se);case pt.MAT2:return Gi.unpack(n,0,new Gi);case pt.MAT3:return J.unpack(n,0,new J);case pt.MAT4:return N.unpack(n,0,new N)}throw new ce(`Invalid metadata object type: ${e}`)};$a.convertFromObjectType=function(e,t){if(!l(t)||e===pt.SCALAR||e===pt.STRING||e===pt.BOOLEAN||e===pt.ENUM)return t;switch(e){case pt.VEC2:return U.pack(t,Array(2));case pt.VEC3:return d.pack(t,Array(3));case pt.VEC4:return se.pack(t,Array(4));case pt.MAT2:return Gi.pack(t,Array(4));case pt.MAT3:return J.pack(t,Array(9));case pt.MAT4:return N.pack(t,Array(16))}throw new ce(`Invalid metadata object type: ${e}`)};$a.decodeMetadataValues=function(e,t,n){let i=$a.decodeRawMetadataValues(e,n);if(t.hasValueTransform){let r=$a.convertFromObjectType(e.type,t.offset),s=$a.convertFromObjectType(e.type,t.scale);i=Ym.valueTransformInPlace(i,r,s,Gt.applyValueTransform)}if(e.isArray){let r=e.arrayLength,s=Array(r);for(let a=0;a<r;a++){let c=i[a],u=$a.convertToObjectType(e.type,c);s[a]=u}return s}return $a.convertToObjectType(e.type,i)};var RQ=Object.freeze($a);function kI(){this._framebuffer=new Di,this._textureToCopy=void 0,this._copyDepthCommand=void 0}Object.defineProperties(kI.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}}});function jyt(e,t,n){let{width:i,height:o}=n;e._framebuffer.update(t,i,o)}function Yyt(e,t,n){l(e._copyDepthCommand)||(e._copyDepthCommand=t.createViewportQuadCommand(`uniform highp sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 globeDepthPacked = texture(czm_globeDepthTexture, v_textureCoordinates); + float globeDepth = czm_unpackDepth(globeDepthPacked); + float depth = texture(colorTexture, v_textureCoordinates).r; + out_FragColor = czm_branchFreeTernary(globeDepth <= 0.0 || globeDepth >= 1.0 || depth < globeDepth && depth > 0.0 && depth < 1.0, + czm_packDepth(depth), globeDepthPacked); +} +`,{renderState:Ue.fromCache(),uniformMap:{colorTexture:function(){return e._textureToCopy}},owner:e})),e._textureToCopy=n,e._copyDepthCommand.framebuffer=e.framebuffer}kI.prototype.update=function(e,t){jyt(this,e,t),Yyt(this,e,t)};var qyt=new se,Kyt=new se(1,1/255,1/65025,1/16581375);kI.prototype.getDepth=function(e,t,n){if(!l(this.framebuffer))return;let i=e.readPixels({x:t,y:n,width:1,height:1,framebuffer:this.framebuffer}),o=se.unpack(i,0,qyt);return se.divideByScalar(o,255,o),se.dot(o,Kyt)};kI.prototype.executeCopyDepth=function(e,t){this._copyDepthCommand.execute(e,t)};kI.prototype.isDestroyed=function(){return!1};kI.prototype.destroy=function(){return this._framebuffer.destroy(),l(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=l(this._copyDepthCommand.shaderProgram)&&this._copyDepthCommand.shaderProgram.destroy()),ue(this)};var MQ=kI;function Xyt(e,t){this.near=e??0,this.far=t??0;let n=Be.NUMBER_OF_PASSES,i=new Array(n),o=new Array(n);for(let r=0;r<n;++r)i[r]=[],o[r]=0;this.commands=i,this.indices=o}var NQ=Xyt;var AC=`uniform highp sampler2D u_depthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + out_FragColor = czm_packDepth(texture(u_depthTexture, v_textureCoordinates).r); +} +`;function LA(){this._picking=!1,this._numSamples=1,this._tempCopyDepthTexture=void 0,this._pickColorFramebuffer=new Di({depthStencil:!0,supportsDepthTexture:!0}),this._outputFramebuffer=new Di({depthStencil:!0,supportsDepthTexture:!0}),this._copyDepthFramebuffer=new Di,this._tempCopyDepthFramebuffer=new Di,this._updateDepthFramebuffer=new Di({createColorAttachments:!1,createDepthAttachments:!1,depthStencil:!0}),this._clearGlobeColorCommand=void 0,this._copyColorCommand=void 0,this._copyDepthCommand=void 0,this._tempCopyDepthCommand=void 0,this._updateDepthCommand=void 0,this._viewport=new Ye,this._rs=void 0,this._rsBlend=void 0,this._rsUpdate=void 0,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHdr=void 0,this._clearGlobeDepth=void 0}Object.defineProperties(LA.prototype,{colorFramebufferManager:{get:function(){return this._picking?this._pickColorFramebuffer:this._outputFramebuffer}},framebuffer:{get:function(){return this.colorFramebufferManager.framebuffer}},depthStencilTexture:{get:function(){return this.colorFramebufferManager.getDepthStencilTexture()}},picking:{get:function(){return this._picking},set:function(e){this._picking=e}}});function vxe(e,t,n,i,o){let r=e._viewport;r.width=n,r.height=i;let s=!Ye.equals(r,o.viewport),a=s!==e._useScissorTest;e._useScissorTest=s,Ye.equals(e._scissorRectangle,o.viewport)||(e._scissorRectangle=Ye.clone(o.viewport,e._scissorRectangle),a=!0),(!l(e._rs)||!Ye.equals(r,e._rs.viewport)||a)&&(e._rs=Ue.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}}),e._rsBlend=Ue.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},blending:pn.ALPHA_BLEND}),e._rsUpdate=Ue.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},stencilTest:{enabled:!0,frontFunction:Zn.EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.NEVER,reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK}})),l(e._copyDepthCommand)||(e._copyDepthCommand=t.createViewportQuadCommand(AC,{uniformMap:{u_depthTexture:function(){return e.colorFramebufferManager.getDepthStencilTexture()}},owner:e})),e._copyDepthCommand.framebuffer=e._copyDepthFramebuffer.framebuffer,e._copyDepthCommand.renderState=e._rs,l(e._copyColorCommand)||(e._copyColorCommand=t.createViewportQuadCommand(Bu,{uniformMap:{colorTexture:function(){return e.colorFramebufferManager.getColorTexture()}},owner:e})),e._copyColorCommand.renderState=e._rs,l(e._tempCopyDepthCommand)||(e._tempCopyDepthCommand=t.createViewportQuadCommand(AC,{uniformMap:{u_depthTexture:function(){return e._tempCopyDepthTexture}},owner:e})),e._tempCopyDepthCommand.framebuffer=e._tempCopyDepthFramebuffer.framebuffer,e._tempCopyDepthCommand.renderState=e._rs,l(e._updateDepthCommand)||(e._updateDepthCommand=t.createViewportQuadCommand(Bu,{uniformMap:{colorTexture:function(){return e._tempCopyDepthFramebuffer.getColorTexture()}},owner:e})),e._updateDepthCommand.framebuffer=e._updateDepthFramebuffer.framebuffer,e._updateDepthCommand.renderState=e._rsUpdate,l(e._clearGlobeColorCommand)||(e._clearGlobeColorCommand=new Ci({color:new G(0,0,0,0),stencil:0,owner:e})),e._clearGlobeColorCommand.framebuffer=e.framebuffer}LA.prototype.update=function(e,t,n,i,o,r){let{width:s,height:a}=n,c=o?e.halfFloatingPointTexture?Ve.HALF_FLOAT:Ve.FLOAT:Ve.UNSIGNED_BYTE;this._numSamples=i,this.picking?this._pickColorFramebuffer.update(e,s,a):this._outputFramebuffer.update(e,s,a,i,c),this._copyDepthFramebuffer.update(e,s,a),vxe(this,e,s,a,t),e.uniformState.globeDepthTexture=void 0,this._clearGlobeDepth=r};LA.prototype.prepareColorTextures=function(e,t){!this.picking&&this._numSamples>1&&this._outputFramebuffer.prepareTextures(e,t)};LA.prototype.executeCopyDepth=function(e,t){l(this._copyDepthCommand)&&(this.prepareColorTextures(e),this._copyDepthCommand.execute(e,t),e.uniformState.globeDepthTexture=this._copyDepthFramebuffer.getColorTexture())};LA.prototype.executeUpdateDepth=function(e,t,n){let i=l(n)?n:t.framebuffer.depthStencilTexture;if(!this._clearGlobeDepth&&i===this.colorFramebufferManager.getDepthStencilTexture()){l(this._copyDepthCommand)&&this._copyDepthCommand.execute(e,t);return}if(!l(this._updateDepthCommand))return;let o=this._updateDepthFramebuffer;if(!l(o.framebuffer)||o.getDepthStencilTexture()!==i||o.getColorTexture()!==this._copyDepthFramebuffer.getColorTexture()){let r=this._copyDepthFramebuffer.getColorTexture(),{width:s,height:a}=r;this._tempCopyDepthFramebuffer.destroy(),this._tempCopyDepthFramebuffer.update(e,s,a),o.setColorTexture(r,0),o.setDepthStencilTexture(i),o.update(e,s,a),vxe(this,e,s,a,t)}this._tempCopyDepthTexture=i,this._tempCopyDepthCommand.execute(e,t),this._updateDepthCommand.execute(e,t)};LA.prototype.executeCopyColor=function(e,t){l(this._copyColorCommand)&&this._copyColorCommand.execute(e,t)};LA.prototype.clear=function(e,t,n){let i=this._clearGlobeColorCommand;l(i)&&(G.clone(n,i.color),this.colorFramebufferManager.clear(e,i,t))};LA.prototype.isDestroyed=function(){return!1};LA.prototype.destroy=function(){return this._pickColorFramebuffer.destroy(),this._outputFramebuffer.destroy(),this._copyDepthFramebuffer.destroy(),this._tempCopyDepthFramebuffer.destroy(),this._updateDepthFramebuffer.destroy(),l(this._copyColorCommand)&&(this._copyColorCommand.shaderProgram=this._copyColorCommand.shaderProgram.destroy()),l(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=this._copyDepthCommand.shaderProgram.destroy()),l(this._tempCopyDepthCommand)&&(this._tempCopyDepthCommand.shaderProgram=this._tempCopyDepthCommand.shaderProgram.destroy()),l(this._updateDepthCommand)&&(this._updateDepthCommand.shaderProgram=this._updateDepthCommand.shaderProgram.destroy()),ue(this)};var LQ=LA;function UI(){this._framebuffer=new Di({depthStencil:!0,supportsDepthTexture:!0}),this._packedDepthFramebuffer=new Di,this._renderState=void 0,this._packedDepthCommand=void 0,this._clearCommand=void 0,this._viewport=new Ye,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHdr=void 0}Object.defineProperties(UI.prototype,{classificationTexture:{get:function(){return this._framebuffer.getColorTexture()}},classificationFramebuffer:{get:function(){return this._framebuffer.framebuffer}},packedDepthFramebuffer:{get:function(){return this._packedDepthFramebuffer.framebuffer}},depthStencilTexture:{get:function(){return this._framebuffer.getDepthStencilTexture()}},depthStencilRenderbuffer:{get:function(){return this._framebuffer.getDepthStencilRenderbuffer()}},packedDepthTexture:{get:function(){return this._packedDepthFramebuffer.getColorTexture()}}});function Jyt(e){e._framebuffer.destroy(),e._packedDepthFramebuffer.destroy()}function Zyt(e,t,n,i,o){let r=o?t.halfFloatingPointTexture?Ve.HALF_FLOAT:Ve.FLOAT:Ve.UNSIGNED_BYTE;e._framebuffer.update(t,n,i,1,r),e._packedDepthFramebuffer.update(t,n,i)}function $yt(e,t,n,i,o){e._viewport.width=n,e._viewport.height=i;let r=!Ye.equals(e._viewport,o.viewport),s=r!==e._useScissorTest;e._useScissorTest=r,Ye.equals(e._scissorRectangle,o.viewport)||(e._scissorRectangle=Ye.clone(o.viewport,e._scissorRectangle),s=!0),(!l(e._renderState)||!Ye.equals(e._viewport,e._renderState.viewport)||s)&&(e._renderState=Ue.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}})),l(e._packedDepthCommand)||(e._packedDepthCommand=t.createViewportQuadCommand(AC,{uniformMap:{u_depthTexture:function(){return e.depthStencilTexture}},owner:e})),l(e._clearCommand)||(e._clearCommand=new Ci({color:new G(0,0,0,0),depth:1,stencil:0,owner:e})),e._packedDepthCommand.framebuffer=e._packedDepthFramebuffer.framebuffer,e._packedDepthCommand.renderState=e._renderState,e._clearCommand.framebuffer=e.classificationFramebuffer,e._clearCommand.renderState=e._renderState}UI.prototype.updateAndClear=function(e,t,n,i){let o=t.width,r=t.height;Zyt(this,n,o,r,e),$yt(this,n,o,r,i),this._useHdr=e};UI.prototype.clearClassification=function(e,t){this._clearCommand.execute(e,t)};UI.prototype.packDepth=function(e,t){return this._packedDepthCommand.execute(e,t),this.packedDepthTexture};UI.prototype.isDestroyed=function(){return!1};UI.prototype.destroy=function(){return Jyt(this),ue(this)};var OQ=UI;function Kg(e){this._numSamples=1,this._translucentMultipassSupport=!1,this._translucentMRTSupport=!1;let t=e.colorBufferFloat&&e.depthTexture&&e.floatBlend;this._translucentMRTSupport=e.drawBuffers&&t,this._translucentMultipassSupport=!this._translucentMRTSupport&&t,this._opaqueFBO=void 0,this._opaqueTexture=void 0,this._depthStencilTexture=void 0,this._accumulationTexture=void 0,this._translucentFBO=new Di({colorAttachmentsLength:this._translucentMRTSupport?2:1,createColorAttachments:!1,createDepthAttachments:!1,depth:!0}),this._alphaFBO=new Di({createColorAttachments:!1,createDepthAttachments:!1,depth:!0}),this._adjustTranslucentFBO=new Di({colorAttachmentsLength:this._translucentMRTSupport?2:1,createColorAttachments:!1}),this._adjustAlphaFBO=new Di({createColorAttachments:!1}),this._opaqueClearCommand=new Ci({color:new G(0,0,0,0),owner:this}),this._translucentMRTClearCommand=new Ci({color:new G(0,0,0,1),owner:this}),this._translucentMultipassClearCommand=new Ci({color:new G(0,0,0,0),owner:this}),this._alphaClearCommand=new Ci({color:new G(1,1,1,1),owner:this}),this._translucentRenderStateCache={},this._alphaRenderStateCache={},this._compositeCommand=void 0,this._adjustTranslucentCommand=void 0,this._adjustAlphaCommand=void 0,this._viewport=new Ye,this._rs=void 0,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHDR=!1}function Pxe(e){e._accumulationTexture=e._accumulationTexture&&!e._accumulationTexture.isDestroyed()&&e._accumulationTexture.destroy(),e._revealageTexture=e._revealageTexture&&!e._revealageTexture.isDestroyed()&&e._revealageTexture.destroy()}function UJ(e){e._translucentFBO.destroy(),e._alphaFBO.destroy(),e._adjustTranslucentFBO.destroy(),e._adjustAlphaFBO.destroy()}function Rxe(e){Pxe(e),UJ(e)}function eCt(e,t,n,i){Pxe(e),e._accumulationTexture=new Mt({context:t,width:n,height:i,pixelFormat:$e.RGBA,pixelDatatype:Ve.FLOAT}),e._revealageTexture=new Mt({context:t,pixelFormat:$e.RGBA,pixelDatatype:Ve.FLOAT,width:n,height:i,flipY:!1})}function tCt(e,t){UJ(e);let n=ee.FRAMEBUFFER_COMPLETE,i=!0,{width:o,height:r}=e._accumulationTexture;if(e._translucentMRTSupport&&(e._translucentFBO.setColorTexture(e._accumulationTexture,0),e._translucentFBO.setColorTexture(e._revealageTexture,1),e._translucentFBO.setDepthStencilTexture(e._depthStencilTexture),e._translucentFBO.update(t,o,r),e._adjustTranslucentFBO.setColorTexture(e._accumulationTexture,0),e._adjustTranslucentFBO.setColorTexture(e._revealageTexture,1),e._adjustTranslucentFBO.update(t,o,r),(e._translucentFBO.status!==n||e._adjustTranslucentFBO.status!==n)&&(UJ(e),e._translucentMRTSupport=!1)),!e._translucentMRTSupport){e._translucentFBO.setColorTexture(e._accumulationTexture),e._translucentFBO.setDepthStencilTexture(e._depthStencilTexture),e._translucentFBO.update(t,o,r),e._alphaFBO.setColorTexture(e._revealageTexture),e._alphaFBO.setDepthStencilTexture(e._depthStencilTexture),e._alphaFBO.update(t,o,r),e._adjustTranslucentFBO.setColorTexture(e._accumulationTexture),e._adjustTranslucentFBO.update(t,o,r),e._adjustAlphaFBO.setColorTexture(e._revealageTexture),e._adjustAlphaFBO.update(t,o,r);let s=e._translucentFBO.status===n,a=e._alphaFBO.status===n,c=e._adjustTranslucentFBO.status===n,u=e._adjustAlphaFBO.status===n;(!s||!a||!c||!u)&&(Rxe(e),e._translucentMultipassSupport=!1,i=!1)}return i}Kg.prototype.update=function(e,t,n,i,o){if(!this.isSupported())return;this._opaqueFBO=n,this._opaqueTexture=n.getColorTexture(0),this._depthStencilTexture=n.getDepthStencilTexture();let{width:r,height:s}=this._opaqueTexture,a=this._accumulationTexture,c=!l(a)||a.width!==r||a.height!==s||i!==this._useHDR,u=this._numSamples!==o;if((c||u)&&(this._numSamples=o,eCt(this,e,r,s)),(!l(this._translucentFBO.framebuffer)||c||u)&&!tCt(this,e))return;this._useHDR=i;let f=this,h,A;l(this._compositeCommand)||(h=new He({sources:[M2]}),this._translucentMRTSupport&&h.defines.push("MRT"),A={u_opaque:function(){return f._opaqueTexture},u_accumulation:function(){return f._accumulationTexture},u_revealage:function(){return f._revealageTexture}},this._compositeCommand=e.createViewportQuadCommand(h,{uniformMap:A,owner:this})),l(this._adjustTranslucentCommand)||(this._translucentMRTSupport?(h=new He({defines:["MRT"],sources:[cw]}),A={u_bgColor:function(){return f._translucentMRTClearCommand.color},u_depthTexture:function(){return f._depthStencilTexture}},this._adjustTranslucentCommand=e.createViewportQuadCommand(h,{uniformMap:A,owner:this})):this._translucentMultipassSupport&&(h=new He({sources:[cw]}),A={u_bgColor:function(){return f._translucentMultipassClearCommand.color},u_depthTexture:function(){return f._depthStencilTexture}},this._adjustTranslucentCommand=e.createViewportQuadCommand(h,{uniformMap:A,owner:this}),A={u_bgColor:function(){return f._alphaClearCommand.color},u_depthTexture:function(){return f._depthStencilTexture}},this._adjustAlphaCommand=e.createViewportQuadCommand(h,{uniformMap:A,owner:this}))),this._viewport.width=r,this._viewport.height=s;let g=!Ye.equals(this._viewport,t.viewport),m=g!==this._useScissorTest;this._useScissorTest=g,Ye.equals(this._scissorRectangle,t.viewport)||(this._scissorRectangle=Ye.clone(t.viewport,this._scissorRectangle),m=!0),(!l(this._rs)||!Ye.equals(this._viewport,this._rs.viewport)||m)&&(this._rs=Ue.fromCache({viewport:this._viewport,scissorTest:{enabled:this._useScissorTest,rectangle:this._scissorRectangle}})),l(this._compositeCommand)&&(this._compositeCommand.renderState=this._rs),this._adjustTranslucentCommand&&(this._adjustTranslucentCommand.renderState=this._rs),l(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.renderState=this._rs)};var nCt={enabled:!0,color:new G(0,0,0,0),equationRgb:lc.ADD,equationAlpha:lc.ADD,functionSourceRgb:Oo.ONE,functionDestinationRgb:Oo.ONE,functionSourceAlpha:Oo.ZERO,functionDestinationAlpha:Oo.ONE_MINUS_SOURCE_ALPHA},iCt={enabled:!0,color:new G(0,0,0,0),equationRgb:lc.ADD,equationAlpha:lc.ADD,functionSourceRgb:Oo.ONE,functionDestinationRgb:Oo.ONE,functionSourceAlpha:Oo.ONE,functionDestinationAlpha:Oo.ONE},oCt={enabled:!0,color:new G(0,0,0,0),equationRgb:lc.ADD,equationAlpha:lc.ADD,functionSourceRgb:Oo.ZERO,functionDestinationRgb:Oo.ONE_MINUS_SOURCE_ALPHA,functionSourceAlpha:Oo.ZERO,functionDestinationAlpha:Oo.ONE_MINUS_SOURCE_ALPHA};function GJ(e,t,n,i){let o=n[i.id];if(!l(o)){let r=Ue.getState(i);r.depthMask=!1,r.blending=t,o=Ue.fromCache(r),n[i.id]=o}return o}function rCt(e,t,n){return GJ(t,nCt,e._translucentRenderStateCache,n)}function sCt(e,t,n){return GJ(t,iCt,e._translucentRenderStateCache,n)}function aCt(e,t,n){return GJ(t,oCt,e._alphaRenderStateCache,n)}var cCt=` vec3 Ci = czm_out_FragColor.rgb * czm_out_FragColor.a; + float ai = czm_out_FragColor.a; + float wzi = czm_alphaWeight(ai); + out_FragData_0 = vec4(Ci * wzi, ai); + out_FragData_1 = vec4(ai * wzi); +`,lCt=` vec3 Ci = czm_out_FragColor.rgb * czm_out_FragColor.a; + float ai = czm_out_FragColor.a; + float wzi = czm_alphaWeight(ai); + out_FragColor = vec4(Ci, ai) * wzi; +`,uCt=` float ai = czm_out_FragColor.a; + out_FragColor = vec4(ai); +`;function zJ(e,t,n,i){let{shaderCache:o}=e,r=o.getDerivedShaderProgram(t,n);if(l(r))return r;let s=t._attributeLocations,a=t.fragmentShaderSource.clone();a.sources=a.sources.map(function(f){return He.replaceMain(f,"czm_translucent_main").replace(/out_FragColor/g,"czm_out_FragColor").replace(/layout\s*\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g,"").replace(/\bdiscard\b/g,"czm_discard = true").replace(/czm_phong/g,"czm_translucentPhong")}),a.sources.splice(0,0,`vec4 czm_out_FragColor; +bool czm_discard = false; +`);let c=[...i.matchAll(/out_FragData_(\d+)/g)],u="";for(let f=0;f<c.length;f++){let h=c[f];u=`layout (location = ${h[1]}) out vec4 ${h[0]}; +${u}`}return a.sources.push(u),a.sources.push(`void main() +{ + czm_translucent_main(); + if (czm_discard) + { + discard; + } +${i}} +`),o.createDerivedShaderProgram(t,n,{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:a,attributeLocations:s})}function fCt(e,t){return zJ(e,t,"translucentMRT",cCt)}function dCt(e,t){return zJ(e,t,"translucentMultipass",lCt)}function hCt(e,t){return zJ(e,t,"alphaMultipass",uCt)}Kg.prototype.createDerivedCommands=function(e,t,n){if(l(n)||(n={}),this._translucentMRTSupport){let a,c;return l(n.translucentCommand)&&(a=n.translucentCommand.shaderProgram,c=n.translucentCommand.renderState),n.translucentCommand=nt.shallowClone(e,n.translucentCommand),!l(a)||n.shaderProgramId!==e.shaderProgram.id?(n.translucentCommand.shaderProgram=fCt(t,e.shaderProgram),n.translucentCommand.renderState=rCt(this,t,e.renderState),n.shaderProgramId=e.shaderProgram.id):(n.translucentCommand.shaderProgram=a,n.translucentCommand.renderState=c),n}let i,o,r,s;return l(n.translucentCommand)&&(i=n.translucentCommand.shaderProgram,o=n.translucentCommand.renderState,r=n.alphaCommand.shaderProgram,s=n.alphaCommand.renderState),n.translucentCommand=nt.shallowClone(e,n.translucentCommand),n.alphaCommand=nt.shallowClone(e,n.alphaCommand),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.translucentCommand.shaderProgram=dCt(t,e.shaderProgram),n.translucentCommand.renderState=sCt(this,t,e.renderState),n.alphaCommand.shaderProgram=hCt(t,e.shaderProgram),n.alphaCommand.renderState=aCt(this,t,e.renderState),n.shaderProgramId=e.shaderProgram.id):(n.translucentCommand.shaderProgram=i,n.translucentCommand.renderState=o,n.alphaCommand.shaderProgram=r,n.alphaCommand.renderState=s),n};function mCt(e,t,n,i,o,r){let{context:s,frameState:a}=t,{useLogDepth:c,shadowState:u}=a,f=t._hdr,h=i.framebuffer,A=u.lightShadowsEnabled;i.framebuffer=e._adjustTranslucentFBO.framebuffer,e._adjustTranslucentCommand.execute(s,i),i.framebuffer=e._adjustAlphaFBO.framebuffer,e._adjustAlphaCommand.execute(s,i);let g=e._opaqueFBO.framebuffer;i.framebuffer=e._translucentFBO.framebuffer;for(let m=0;m<o.length;++m){let _=o[m];_=c?_.derivedCommands.logDepth.command:_,_=f?_.derivedCommands.hdr.command:_;let y=A&&_.receiveShadows?_.derivedCommands.oit.shadows.translucentCommand:_.derivedCommands.oit.translucentCommand;n(y,t,i,g)}if(l(r)){let m=r.unclassifiedCommand,_=A&&m.receiveShadows?m.derivedCommands.oit.shadows.translucentCommand:m.derivedCommands.oit.translucentCommand;n(_,t,i,g)}i.framebuffer=e._alphaFBO.framebuffer;for(let m=0;m<o.length;++m){let _=o[m];_=c?_.derivedCommands.logDepth.command:_,_=f?_.derivedCommands.hdr.command:_;let y=A&&_.receiveShadows?_.derivedCommands.oit.shadows.alphaCommand:_.derivedCommands.oit.alphaCommand;n(y,t,i,g)}if(l(r)){let m=r.unclassifiedCommand,_=A&&m.receiveShadows?m.derivedCommands.oit.shadows.alphaCommand:m.derivedCommands.oit.alphaCommand;n(_,t,i,g)}i.framebuffer=h}function ACt(e,t,n,i,o,r){let{context:s,frameState:a}=t,{useLogDepth:c,shadowState:u}=a,f=t._hdr,h=i.framebuffer,A=u.lightShadowsEnabled;i.framebuffer=e._adjustTranslucentFBO.framebuffer,e._adjustTranslucentCommand.execute(s,i);let g=e._opaqueFBO.framebuffer;i.framebuffer=e._translucentFBO.framebuffer;for(let m=0;m<o.length;++m){let _=o[m];_=c?_.derivedCommands.logDepth.command:_,_=f?_.derivedCommands.hdr.command:_;let y=A&&_.receiveShadows?_.derivedCommands.oit.shadows.translucentCommand:_.derivedCommands.oit.translucentCommand;n(y,t,i,g)}if(l(r)){let m=r.unclassifiedCommand,_=A&&m.receiveShadows?m.derivedCommands.oit.shadows.translucentCommand:m.derivedCommands.oit.translucentCommand;n(_,t,i,g)}i.framebuffer=h}Kg.prototype.executeCommands=function(e,t,n,i,o){if(this._translucentMRTSupport){ACt(this,e,t,n,i,o);return}mCt(this,e,t,n,i,o)};Kg.prototype.execute=function(e,t){this._compositeCommand.execute(e,t)};Kg.prototype.clear=function(e,t,n){let i=t.framebuffer;t.framebuffer=this._opaqueFBO.framebuffer,G.clone(n,this._opaqueClearCommand.color),this._opaqueClearCommand.execute(e,t),t.framebuffer=this._translucentFBO.framebuffer,(this._translucentMRTSupport?this._translucentMRTClearCommand:this._translucentMultipassClearCommand).execute(e,t),this._translucentMultipassSupport&&(t.framebuffer=this._alphaFBO.framebuffer,this._alphaClearCommand.execute(e,t)),t.framebuffer=i};Kg.prototype.isSupported=function(){return this._translucentMRTSupport||this._translucentMultipassSupport};Kg.prototype.isDestroyed=function(){return!1};Kg.prototype.destroy=function(){return Rxe(this),l(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),l(this._adjustTranslucentCommand)&&(this._adjustTranslucentCommand.shaderProgram=this._adjustTranslucentCommand.shaderProgram&&this._adjustTranslucentCommand.shaderProgram.destroy()),l(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.shaderProgram=this._adjustAlphaCommand.shaderProgram&&this._adjustAlphaCommand.shaderProgram.destroy()),ue(this)};var FQ=Kg;function QQ(){this._framebuffer=new Di({color:!1,depthStencil:!0,supportsDepthTexture:!0}),this._passState=void 0}Object.defineProperties(QQ.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}}});function pCt(e){e._framebuffer.destroy()}function gCt(e,t){let n=t.drawingBufferWidth,i=t.drawingBufferHeight;e._framebuffer.update(t,n,i);let o=new Xc(t);o.blendingEnabled=!1,o.scissorTest={enabled:!0,rectangle:new Ye},o.viewport=new Ye,e._passState=o}QQ.prototype.update=function(e,t,n){let i=n.width,o=n.height;this._framebuffer.isDirty(i,o)&&gCt(this,e);let r=this.framebuffer,s=this._passState;return s.framebuffer=r,s.viewport.width=i,s.viewport.height=o,s.scissorTest.rectangle.x=t.x,s.scissorTest.rectangle.y=o-t.y,s.scissorTest.rectangle.width=1,s.scissorTest.rectangle.height=1,s};QQ.prototype.isDestroyed=function(){return!1};QQ.prototype.destroy=function(){return pCt(this),ue(this)};var kQ=QQ;function Tw(e){let t=new Xc(e);t.blendingEnabled=!1,t.scissorTest={enabled:!0,rectangle:new Ye},t.viewport=new Ye,this._context=e,this._fb=new Di({depthStencil:!0}),this._passState=t,this._width=0,this._height=0}Tw.prototype.begin=function(e,t){let n=this._context,{width:i,height:o}=t;return Ye.clone(e,this._passState.scissorTest.rectangle),this._width=i,this._height=o,this._fb.update(n,i,o),this._passState.framebuffer=this._fb.framebuffer,this._passState.viewport.width=i,this._passState.viewport.height=o,this._passState};var UQ=new G;Tw.prototype.end=function(e){let t=e.width??1,n=e.height??1,i=this._context,o=i.readPixels({x:e.x,y:e.y,width:t,height:n,framebuffer:this._fb.framebuffer}),r=Math.max(t,n),s=r*r,a=Math.floor(t*.5),c=Math.floor(n*.5),u=0,f=0,h=0,A=-1;for(let g=0;g<s;++g){if(-a<=u&&u<=a&&-c<=f&&f<=c){let m=4*((c-f)*t+u+a);UQ.red=G.byteToFloat(o[m]),UQ.green=G.byteToFloat(o[m+1]),UQ.blue=G.byteToFloat(o[m+2]),UQ.alpha=G.byteToFloat(o[m+3]);let _=i.getObjectByPickColor(UQ);if(l(_))return _}if(u===f||u<0&&-u===f||u>0&&u===1-f){let m=h;h=-A,A=m}u+=h,f+=A}};Tw.prototype.readCenterPixel=function(e){let t=e.width??1,n=e.height??1,o=this._context.readPixels({x:e.x,y:e.y,width:t,height:n,framebuffer:this._fb.framebuffer}),r=Math.floor(t*.5),a=4*(Math.floor(n*.5)*t+r);return o.slice(a,a+4)};Tw.prototype.isDestroyed=function(){return!1};Tw.prototype.destroy=function(){return this._fb.destroy(),ue(this)};var GQ=Tw;function Xg(){this._numSamples=1,this._colorFramebuffer=new Di({depthStencil:!0,supportsDepthTexture:!0}),this._idFramebuffer=new Di({depthStencil:!0,supportsDepthTexture:!0}),this._idClearColor=new G(0,0,0,0),this._clearCommand=new Ci({color:new G(0,0,0,0),depth:1,owner:this})}function _Ct(e){e._colorFramebuffer.destroy(),e._idFramebuffer.destroy()}Object.defineProperties(Xg.prototype,{framebuffer:{get:function(){return this._colorFramebuffer.framebuffer}},idFramebuffer:{get:function(){return this._idFramebuffer.framebuffer}},depthStencilTexture:{get:function(){return this._colorFramebuffer.getDepthStencilTexture()}}});Xg.prototype.update=function(e,t,n,i){let o=t.width,r=t.height,s=n?e.halfFloatingPointTexture?Ve.HALF_FLOAT:Ve.FLOAT:Ve.UNSIGNED_BYTE;this._numSamples=i,this._colorFramebuffer.update(e,o,r,i,s),this._idFramebuffer.update(e,o,r)};Xg.prototype.clear=function(e,t,n){G.clone(n,this._clearCommand.color),G.clone(this._idClearColor,this._clearCommand.color),this._colorFramebuffer.clear(e,this._clearCommand,t),this._idFramebuffer.clear(e,this._clearCommand,t)};Xg.prototype.getFramebuffer=function(){return this._colorFramebuffer.framebuffer};Xg.prototype.getIdFramebuffer=function(){return this._idFramebuffer.framebuffer};Xg.prototype.prepareColorTextures=function(e){this._numSamples>1&&this._colorFramebuffer.prepareTextures(e)};Xg.prototype.isDestroyed=function(){return!1};Xg.prototype.destroy=function(){return _Ct(this),ue(this)};var GI=Xg;function zI(){}zI.getShadowCastShaderKeyword=function(e,t,n,i){return`castShadow ${e} ${t} ${n} ${i}`};zI.createShadowCastVertexShader=function(e,t,n){let i=e.defines.slice(0),o=e.sources.slice(0);i.push("SHADOW_MAP"),n&&i.push("GENERATE_POSITION");let r=He.findPositionVarying(e),s=l(r);if(t&&!s){let a=o.length;for(let u=0;u<a;++u)o[u]=He.replaceMain(o[u],"czm_shadow_cast_main");o.push(`out vec3 v_positionEC; +void main() +{ + czm_shadow_cast_main(); + v_positionEC = (czm_inverseProjection * gl_Position).xyz; +}`)}return new He({defines:i,sources:o})};zI.createShadowCastFragmentShader=function(e,t,n,i){let o=e.defines.slice(0),r=e.sources.slice(0);o.push("SHADOW_MAP");let s=He.findPositionVarying(e),a=l(s);a||(s="v_positionEC");let c=r.length;for(let f=0;f<c;++f)r[f]=He.replaceMain(r[f],"czm_shadow_cast_main");let u="";return t&&(a||(u+=`in vec3 v_positionEC; +`),u+=`uniform vec4 shadowMap_lightPositionEC; +`),i?u+=`void main() +{ +`:u+=`void main() +{ + czm_shadow_cast_main(); + if (out_FragColor.a == 0.0) + { + discard; + } +`,t?u+=` float distance = length(${s}); + if (distance >= shadowMap_lightPositionEC.w) + { + discard; + } + distance /= shadowMap_lightPositionEC.w; // radius + out_FragColor = czm_packDepth(distance); +`:n?u+=` out_FragColor = vec4(1.0); +`:u+=` out_FragColor = czm_packDepth(gl_FragCoord.z); +`,u+=`} +`,r.push(u),new He({defines:o,sources:r})};zI.getShadowReceiveShaderKeyword=function(e,t,n,i){let o=e._usesDepthTexture,r=e._polygonOffsetSupported,s=e._isPointLight,a=e._isSpotLight,c=e._numberOfCascades>1,u=e.debugCascadeColors,f=e.softShadows;return`receiveShadow ${o}${r}${s}${a}${c}${u}${f}${t}${n}${i}`};zI.createShadowReceiveVertexShader=function(e,t,n){let i=e.defines.slice(0),o=e.sources.slice(0);return i.push("SHADOW_MAP"),t&&(n?i.push("GENERATE_POSITION_AND_NORMAL"):i.push("GENERATE_POSITION")),new He({defines:i,sources:o})};zI.createShadowReceiveFragmentShader=function(e,t,n,i,o){let r=He.findNormalVarying(e),s=!i&&l(r)||i&&o,a=He.findPositionVarying(e),c=l(a),u=t._usesDepthTexture,f=t._polygonOffsetSupported,h=t._isPointLight,A=t._isSpotLight,g=t._numberOfCascades>1,m=t.debugCascadeColors,_=t.softShadows,y=h?t._pointBias:i?t._terrainBias:t._primitiveBias,C=e.defines.slice(0),E=e.sources.slice(0),I=E.length;for(let B=0;B<I;++B)E[B]=He.replaceMain(E[B],"czm_shadow_receive_main");h?C.push("USE_CUBE_MAP_SHADOW"):u&&C.push("USE_SHADOW_DEPTH_TEXTURE"),_&&!h&&C.push("USE_SOFT_SHADOWS"),g&&n&&i&&(s?C.push("ENABLE_VERTEX_LIGHTING"):C.push("ENABLE_DAYNIGHT_SHADING")),n&&y.normalShading&&s&&(C.push("USE_NORMAL_SHADING"),y.normalShadingSmooth>0&&C.push("USE_NORMAL_SHADING_SMOOTH"));let b="";h?b+=`uniform samplerCube shadowMap_textureCube; +`:b+=`uniform sampler2D shadowMap_texture; +`;let S;return c?S=` return vec4(${a}, 1.0); +`:S=`#ifndef LOG_DEPTH + return czm_windowToEyeCoordinates(gl_FragCoord); +#else + return vec4(v_logPositionEC, 1.0); +#endif +`,b+=`uniform mat4 shadowMap_matrix; +uniform vec3 shadowMap_lightDirectionEC; +uniform vec4 shadowMap_lightPositionEC; +uniform vec4 shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness; +uniform vec4 shadowMap_texelSizeDepthBiasAndNormalShadingSmooth; +#ifdef LOG_DEPTH +in vec3 v_logPositionEC; +#endif +vec4 getPositionEC() +{ +${S}} +vec3 getNormalEC() +{ +${s?` return normalize(${r}); +`:` return vec3(1.0); +`}} +void applyNormalOffset(inout vec4 positionEC, vec3 normalEC, float nDotL) +{ +${y.normalOffset&&s?` float normalOffset = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.x; + float normalOffsetScale = 1.0 - nDotL; + vec3 offset = normalOffset * normalOffsetScale * normalEC; + positionEC.xyz += offset; +`:""}} +`,b+=`void main() +{ + czm_shadow_receive_main(); + vec4 positionEC = getPositionEC(); + vec3 normalEC = getNormalEC(); + float depth = -positionEC.z; +`,b+=` czm_shadowParameters shadowParameters; + shadowParameters.texelStepSize = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.xy; + shadowParameters.depthBias = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.z; + shadowParameters.normalShadingSmooth = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.w; + shadowParameters.darkness = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.w; +`,i?b+=` shadowParameters.depthBias *= max(depth * 0.01, 1.0); +`:f||(b+=` shadowParameters.depthBias *= mix(1.0, 100.0, depth * 0.0015); +`),h?b+=` vec3 directionEC = positionEC.xyz - shadowMap_lightPositionEC.xyz; + float distance = length(directionEC); + directionEC = normalize(directionEC); + float radius = shadowMap_lightPositionEC.w; + // Stop early if the fragment is beyond the point light radius + if (distance > radius) + { + return; + } + vec3 directionWC = czm_inverseViewRotation * directionEC; + shadowParameters.depth = distance / radius; + shadowParameters.nDotL = clamp(dot(normalEC, -directionEC), 0.0, 1.0); + shadowParameters.texCoords = directionWC; + float visibility = czm_shadowVisibility(shadowMap_textureCube, shadowParameters); +`:A?b+=` vec3 directionEC = normalize(positionEC.xyz - shadowMap_lightPositionEC.xyz); + float nDotL = clamp(dot(normalEC, -directionEC), 0.0, 1.0); + applyNormalOffset(positionEC, normalEC, nDotL); + vec4 shadowPosition = shadowMap_matrix * positionEC; + // Spot light uses a perspective projection, so perform the perspective divide + shadowPosition /= shadowPosition.w; + // Stop early if the fragment is not in the shadow bounds + if (any(lessThan(shadowPosition.xyz, vec3(0.0))) || any(greaterThan(shadowPosition.xyz, vec3(1.0)))) + { + return; + } + shadowParameters.texCoords = shadowPosition.xy; + shadowParameters.depth = shadowPosition.z; + shadowParameters.nDotL = nDotL; + float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters); +`:g?b+=` float maxDepth = shadowMap_cascadeSplits[1].w; + // Stop early if the eye depth exceeds the last cascade + if (depth > maxDepth) + { + return; + } + // Get the cascade based on the eye-space depth + vec4 weights = czm_cascadeWeights(depth); + // Apply normal offset + float nDotL = clamp(dot(normalEC, shadowMap_lightDirectionEC), 0.0, 1.0); + applyNormalOffset(positionEC, normalEC, nDotL); + // Transform position into the cascade + vec4 shadowPosition = czm_cascadeMatrix(weights) * positionEC; + // Get visibility + shadowParameters.texCoords = shadowPosition.xy; + shadowParameters.depth = shadowPosition.z; + shadowParameters.nDotL = nDotL; + float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters); + // Fade out shadows that are far away + float shadowMapMaximumDistance = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.z; + float fade = max((depth - shadowMapMaximumDistance * 0.8) / (shadowMapMaximumDistance * 0.2), 0.0); + visibility = mix(visibility, 1.0, fade); +${m?` // Draw cascade colors for debugging + out_FragColor *= czm_cascadeColor(weights); +`:""}`:b+=` float nDotL = clamp(dot(normalEC, shadowMap_lightDirectionEC), 0.0, 1.0); + applyNormalOffset(positionEC, normalEC, nDotL); + vec4 shadowPosition = shadowMap_matrix * positionEC; + // Stop early if the fragment is not in the shadow bounds + if (any(lessThan(shadowPosition.xyz, vec3(0.0))) || any(greaterThan(shadowPosition.xyz, vec3(1.0)))) + { + return; + } + shadowParameters.texCoords = shadowPosition.xy; + shadowParameters.depth = shadowPosition.z; + shadowParameters.nDotL = nDotL; + float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters); +`,b+=` out_FragColor.rgb *= visibility; +} +`,E.push(b),new He({defines:C,sources:E})};var OA=zI;function FA(e){e=e??V.EMPTY_OBJECT;let t=e.context;this._enabled=e.enabled??!0,this._softShadows=e.softShadows??!1,this._normalOffset=e.normalOffset??!0,this.dirty=!0,this.fromLightSource=e.fromLightSource??!0,this.darkness=e.darkness??.3,this._darkness=this.darkness,this.fadingEnabled=e.fadingEnabled??!0,this.maximumDistance=e.maximumDistance??5e3,this._outOfView=!1,this._outOfViewPrevious=!1,this._needsUpdate=!0;let n=!0;(Wt.isInternetExplorer()||Wt.isEdge()||(Wt.isChrome()||Wt.isFirefox())&&Wt.isWindows()&&!t.depthTexture)&&(n=!1),this._polygonOffsetSupported=n,this._terrainBias={polygonOffset:n,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:.5,normalShading:!0,normalShadingSmooth:.3,depthBias:1e-4},this._primitiveBias={polygonOffset:n,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:.1,normalShading:!0,normalShadingSmooth:.05,depthBias:2e-5},this._pointBias={polygonOffset:!1,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:0,normalShading:!0,normalShadingSmooth:.1,depthBias:5e-4},this._depthAttachment=void 0,this._colorAttachment=void 0,this._shadowMapMatrix=new N,this._shadowMapTexture=void 0,this._lightDirectionEC=new d,this._lightPositionEC=new se,this._distance=0,this._lightCamera=e.lightCamera,this._shadowMapCamera=new MH,this._shadowMapCullingVolume=void 0,this._sceneCamera=void 0,this._boundingSphere=new le,this._isPointLight=e.isPointLight??!1,this._pointLightRadius=e.pointLightRadius??100,this._cascadesEnabled=this._isPointLight?!1:e.cascadesEnabled??!0,this._numberOfCascades=this._cascadesEnabled?e.numberOfCascades??4:0,this._fitNearFar=!0,this._maximumCascadeDistances=[25,150,700,Number.MAX_VALUE],this._textureSize=new U,this._isSpotLight=!1,this._cascadesEnabled?this._shadowMapCamera.frustum=new es:l(this._lightCamera.frustum.fov)&&(this._isSpotLight=!0),this._cascadeSplits=[new se,new se],this._cascadeMatrices=[new N,new N,new N,new N],this._cascadeDistances=new se;let i;this._isPointLight?i=6:this._cascadesEnabled?i=this._numberOfCascades:i=1,this._passes=new Array(i);for(let o=0;o<i;++o)this._passes[o]=new yCt(t);this.debugShow=!1,this.debugFreezeFrame=!1,this._debugFreezeFrame=!1,this._debugCascadeColors=!1,this._debugLightFrustum=void 0,this._debugCameraFrustum=void 0,this._debugCascadeFrustums=new Array(this._numberOfCascades),this._debugShadowViewCommand=void 0,this._usesDepthTexture=t.depthTexture,this._isPointLight&&(this._usesDepthTexture=!1),this._primitiveRenderState=void 0,this._terrainRenderState=void 0,this._pointRenderState=void 0,HJ(this),this._clearCommand=new Ci({depth:1,color:new G}),this._clearPassState=new Xc(t),this._size=e.size??2048,this.size=this._size}FA.MAXIMUM_DISTANCE=2e4;function yCt(e){this.camera=new MH,this.passState=new Xc(e),this.framebuffer=void 0,this.textureOffsets=void 0,this.commandList=[],this.cullingVolume=void 0}function VJ(e,t){return Ue.fromCache({cull:{enabled:!0,face:Mi.BACK},depthTest:{enabled:!0},colorMask:{red:e,green:e,blue:e,alpha:e},depthMask:!0,polygonOffset:{enabled:t.polygonOffset,factor:t.polygonOffsetFactor,units:t.polygonOffsetUnits}})}function HJ(e){let t=!e._usesDepthTexture;e._primitiveRenderState=VJ(t,e._primitiveBias),e._terrainRenderState=VJ(t,e._terrainBias),e._pointRenderState=VJ(t,e._pointBias)}FA.prototype.debugCreateRenderStates=function(){HJ(this)};Object.defineProperties(FA.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this.dirty=this._enabled!==e,this._enabled=e}},normalOffset:{get:function(){return this._normalOffset},set:function(e){this.dirty=this._normalOffset!==e,this._normalOffset=e,this._terrainBias.normalOffset=e,this._primitiveBias.normalOffset=e,this._pointBias.normalOffset=e}},softShadows:{get:function(){return this._softShadows},set:function(e){this.dirty=this._softShadows!==e,this._softShadows=e}},size:{get:function(){return this._size},set:function(e){TCt(this,e)}},outOfView:{get:function(){return this._outOfView}},shadowMapCullingVolume:{get:function(){return this._shadowMapCullingVolume}},passes:{get:function(){return this._passes}},isPointLight:{get:function(){return this._isPointLight}},debugCascadeColors:{get:function(){return this._debugCascadeColors},set:function(e){this.dirty=this._debugCascadeColors!==e,this._debugCascadeColors=e}}});function WJ(e){let t=e._passes.length;for(let n=0;n<t;++n){let i=e._passes[n],o=i.framebuffer;l(o)&&!o.isDestroyed()&&o.destroy(),i.framebuffer=void 0}e._depthAttachment=e._depthAttachment&&e._depthAttachment.destroy(),e._colorAttachment=e._colorAttachment&&e._colorAttachment.destroy()}function CCt(e,t){let n=new Ju({context:t,width:e._textureSize.x,height:e._textureSize.y,format:Bl.DEPTH_COMPONENT16}),i=new Mt({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:$e.RGBA,pixelDatatype:Ve.UNSIGNED_BYTE,sampler:on.NEAREST}),o=new $r({context:t,depthRenderbuffer:n,colorTextures:[i],destroyAttachments:!1}),r=e._passes.length;for(let s=0;s<r;++s){let a=e._passes[s];a.framebuffer=o,a.passState.framebuffer=o}e._shadowMapTexture=i,e._depthAttachment=n,e._colorAttachment=i}function ECt(e,t){let n=new Mt({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:$e.DEPTH_STENCIL,pixelDatatype:Ve.UNSIGNED_INT_24_8,sampler:on.NEAREST}),i=new $r({context:t,depthStencilTexture:n,destroyAttachments:!1}),o=e._passes.length;for(let r=0;r<o;++r){let s=e._passes[r];s.framebuffer=i,s.passState.framebuffer=i}e._shadowMapTexture=n,e._depthAttachment=n}function ICt(e,t){let n=new Ju({context:t,width:e._textureSize.x,height:e._textureSize.y,format:Bl.DEPTH_COMPONENT16}),i=new kr({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:$e.RGBA,pixelDatatype:Ve.UNSIGNED_BYTE,sampler:on.NEAREST}),o=[i.negativeX,i.negativeY,i.negativeZ,i.positiveX,i.positiveY,i.positiveZ];for(let r=0;r<6;++r){let s=new $r({context:t,depthRenderbuffer:n,colorTextures:[o[r]],destroyAttachments:!1}),a=e._passes[r];a.framebuffer=s,a.passState.framebuffer=s}e._shadowMapTexture=i,e._depthAttachment=n,e._colorAttachment=i}function Lxe(e,t){e._isPointLight?ICt(e,t):e._usesDepthTexture?ECt(e,t):CCt(e,t)}function xCt(e,t){e._usesDepthTexture&&e._passes[0].framebuffer.status!==ee.FRAMEBUFFER_COMPLETE&&(e._usesDepthTexture=!1,HJ(e),WJ(e),Lxe(e,t))}function bCt(e,t){(!l(e._passes[0].framebuffer)||e._shadowMapTexture.width!==e._textureSize.x)&&(WJ(e),Lxe(e,t),xCt(e,t),Oxe(e,t))}function Oxe(e,t,n){n=n??0,(e._isPointLight||n===0)&&(e._clearCommand.framebuffer=e._passes[n].framebuffer,e._clearCommand.execute(t,e._clearPassState))}function TCt(e,t){e._size=t;let n=e._passes,i=n.length,o=e._textureSize;if(e._isPointLight){t=Yt.maximumCubeMapSize>=t?t:Yt.maximumCubeMapSize,o.x=t,o.y=t;let r=new Ye(0,0,t,t);n[0].passState.viewport=r,n[1].passState.viewport=r,n[2].passState.viewport=r,n[3].passState.viewport=r,n[4].passState.viewport=r,n[5].passState.viewport=r}else i===1?(t=Yt.maximumTextureSize>=t?t:Yt.maximumTextureSize,o.x=t,o.y=t,n[0].passState.viewport=new Ye(0,0,t,t)):i===4&&(t=Yt.maximumTextureSize>=t*2?t:Yt.maximumTextureSize/2,o.x=t*2,o.y=t*2,n[0].passState.viewport=new Ye(0,0,t,t),n[1].passState.viewport=new Ye(t,0,t,t),n[2].passState.viewport=new Ye(0,t,t,t),n[3].passState.viewport=new Ye(t,t,t,t));e._clearPassState.viewport=new Ye(0,0,o.x,o.y);for(let r=0;r<i;++r){let s=n[r],a=s.passState.viewport,c=a.x/o.x,u=a.y/o.y,f=a.width/o.x,h=a.height/o.y;s.textureOffsets=new N(f,0,0,c,0,h,0,u,0,0,1,0,0,0,0,1)}}var SCt=new Ye;function wCt(e,t){let n;e._isPointLight?n=`uniform samplerCube shadowMap_textureCube; +in vec2 v_textureCoordinates; +void main() +{ + vec2 uv = v_textureCoordinates; + vec3 dir; + + if (uv.y < 0.5) + { + if (uv.x < 0.333) + { + dir.x = -1.0; + dir.y = uv.x * 6.0 - 1.0; + dir.z = uv.y * 4.0 - 1.0; + } + else if (uv.x < 0.666) + { + dir.y = -1.0; + dir.x = uv.x * 6.0 - 3.0; + dir.z = uv.y * 4.0 - 1.0; + } + else + { + dir.z = -1.0; + dir.x = uv.x * 6.0 - 5.0; + dir.y = uv.y * 4.0 - 1.0; + } + } + else + { + if (uv.x < 0.333) + { + dir.x = 1.0; + dir.y = uv.x * 6.0 - 1.0; + dir.z = uv.y * 4.0 - 3.0; + } + else if (uv.x < 0.666) + { + dir.y = 1.0; + dir.x = uv.x * 6.0 - 3.0; + dir.z = uv.y * 4.0 - 3.0; + } + else + { + dir.z = 1.0; + dir.x = uv.x * 6.0 - 5.0; + dir.y = uv.y * 4.0 - 3.0; + } + } + + float shadow = czm_unpackDepth(czm_textureCube(shadowMap_textureCube, dir)); + out_FragColor = vec4(vec3(shadow), 1.0); +} +`:n=`uniform sampler2D shadowMap_texture; +in vec2 v_textureCoordinates; +void main() +{ +${e._usesDepthTexture?` float shadow = texture(shadowMap_texture, v_textureCoordinates).r; +`:` float shadow = czm_unpackDepth(texture(shadowMap_texture, v_textureCoordinates)); +`} out_FragColor = vec4(vec3(shadow), 1.0); +} +`;let i=t.createViewportQuadCommand(n,{uniformMap:{shadowMap_texture:function(){return e._shadowMapTexture},shadowMap_textureCube:function(){return e._shadowMapTexture}}});return i.pass=Be.OVERLAY,i}function BCt(e,t){let n=t.context,i=t.context.drawingBufferWidth,o=t.context.drawingBufferHeight,r=Math.min(i,o)*.3,s=SCt;s.x=i-r,s.y=0,s.width=r,s.height=r;let a=e._debugShadowViewCommand;l(a)||(a=wCt(e,n),e._debugShadowViewCommand=a),(!l(a.renderState)||!Ye.equals(a.renderState.viewport,s))&&(a.renderState=Ue.fromCache({viewport:Ye.clone(s)})),t.commandList.push(e._debugShadowViewCommand)}var QA=new Array(8);QA[0]=new se(-1,-1,-1,1);QA[1]=new se(1,-1,-1,1);QA[2]=new se(1,1,-1,1);QA[3]=new se(-1,1,-1,1);QA[4]=new se(-1,-1,1,1);QA[5]=new se(1,-1,1,1);QA[6]=new se(1,1,1,1);QA[7]=new se(-1,1,1,1);var pC=new N,jJ=new Array(8);for(let e=0;e<8;++e)jJ[e]=new se;function DCt(e,t){let n=new Pt({geometry:new ah({minimum:new d(-.5,-.5,-.5),maximum:new d(.5,.5,.5)}),attributes:{color:$t.fromColor(t)}}),i=new Pt({geometry:new dg({radius:.5}),attributes:{color:$t.fromColor(t)}});return new Qn({geometryInstances:[n,i],appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1,modelMatrix:e})}var vCt=[G.RED,G.GREEN,G.BLUE,G.MAGENTA],PCt=new d;function RCt(e,t){BCt(e,t);let n=e.debugFreezeFrame&&!e._debugFreezeFrame;if(e._debugFreezeFrame=e.debugFreezeFrame,e.debugFreezeFrame&&(n&&(e._debugCameraFrustum=e._debugCameraFrustum&&e._debugCameraFrustum.destroy(),e._debugCameraFrustum=new RA({camera:e._sceneCamera,color:G.CYAN,updateOnChange:!1})),e._debugCameraFrustum.update(t)),e._cascadesEnabled){if(e.debugFreezeFrame){n&&(e._debugLightFrustum=e._debugLightFrustum&&e._debugLightFrustum.destroy(),e._debugLightFrustum=new RA({camera:e._shadowMapCamera,color:G.YELLOW,updateOnChange:!1})),e._debugLightFrustum.update(t);for(let i=0;i<e._numberOfCascades;++i)n&&(e._debugCascadeFrustums[i]=e._debugCascadeFrustums[i]&&e._debugCascadeFrustums[i].destroy(),e._debugCascadeFrustums[i]=new RA({camera:e._passes[i].camera,color:vCt[i],updateOnChange:!1})),e._debugCascadeFrustums[i].update(t)}}else if(e._isPointLight){if(!l(e._debugLightFrustum)||e._needsUpdate){let i=e._shadowMapCamera.positionWC,o=Le.IDENTITY,r=e._pointLightRadius*2,s=d.fromElements(r,r,r,PCt),a=N.fromTranslationQuaternionRotationScale(i,o,s,pC);e._debugLightFrustum=e._debugLightFrustum&&e._debugLightFrustum.destroy(),e._debugLightFrustum=DCt(a,G.YELLOW)}e._debugLightFrustum.update(t)}else(!l(e._debugLightFrustum)||e._needsUpdate)&&(e._debugLightFrustum=new RA({camera:e._shadowMapCamera,color:G.YELLOW,updateOnChange:!1})),e._debugLightFrustum.update(t)}function MH(){this.viewMatrix=new N,this.inverseViewMatrix=new N,this.frustum=void 0,this.positionCartographic=new Ae,this.positionWC=new d,this.directionWC=d.clone(d.UNIT_Z),this.upWC=d.clone(d.UNIT_Y),this.rightWC=d.clone(d.UNIT_X),this.viewProjectionMatrix=new N}MH.prototype.clone=function(e){N.clone(e.viewMatrix,this.viewMatrix),N.clone(e.inverseViewMatrix,this.inverseViewMatrix),this.frustum=e.frustum.clone(this.frustum),Ae.clone(e.positionCartographic,this.positionCartographic),d.clone(e.positionWC,this.positionWC),d.clone(e.directionWC,this.directionWC),d.clone(e.upWC,this.upWC),d.clone(e.rightWC,this.rightWC)};var MCt=new N(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1);MH.prototype.getViewProjection=function(){let e=this.viewMatrix,t=this.frustum.projectionMatrix;return N.multiply(t,e,this.viewProjectionMatrix),N.multiply(MCt,this.viewProjectionMatrix,this.viewProjectionMatrix),this.viewProjectionMatrix};var NCt=new Array(5),LCt=new ki,OCt=new Array(4),Fxe=new d,Qxe=new d;function FCt(e,t){let n=e._shadowMapCamera,i=e._sceneCamera,o=i.frustum.near,r=i.frustum.far,s=e._numberOfCascades,a,c=r-o,u=r/o,f=.9,h=!1;t.shadowState.closestObjectSize<200&&(h=!0,f=.9);let A=OCt,g=NCt;for(g[0]=o,g[s]=r,a=0;a<s;++a){let L=(a+1)/s,p=o*Math.pow(u,L),x=o+c*L,T=D.lerp(x,p,f);g[a+1]=T,A[a]=T-g[a]}if(h){for(a=0;a<s;++a)A[a]=Math.min(A[a],e._maximumCascadeDistances[a]);let L=g[0];for(a=0;a<s-1;++a)L+=A[a],g[a+1]=L}se.unpack(g,0,e._cascadeSplits[0]),se.unpack(g,1,e._cascadeSplits[1]),se.unpack(A,0,e._cascadeDistances);let m=n.frustum,_=m.left,y=m.right,C=m.bottom,E=m.top,I=m.near,b=m.far,S=n.positionWC,B=n.directionWC,v=n.upWC,P=i.frustum.clone(LCt),M=n.getViewProjection();for(a=0;a<s;++a){P.near=g[a],P.far=g[a+1];let L=N.multiply(P.projectionMatrix,i.viewMatrix,pC),p=N.inverse(L,pC),x=N.multiply(M,p,pC),T=d.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,Fxe),w=d.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,Qxe);for(let z=0;z<8;++z){let F=se.clone(QA[z],jJ[z]);N.multiplyByVector(x,F,F),d.divideByScalar(F,F.w,F),d.minimumByComponent(F,T,T),d.maximumByComponent(F,w,w)}T.x=Math.max(T.x,0),T.y=Math.max(T.y,0),T.z=0,w.x=Math.min(w.x,1),w.y=Math.min(w.y,1),w.z=Math.min(w.z,1);let R=e._passes[a],O=R.camera;O.clone(n);let k=O.frustum;k.left=_+T.x*(y-_),k.right=_+w.x*(y-_),k.bottom=C+T.y*(E-C),k.top=C+w.y*(E-C),k.near=I+T.z*(b-I),k.far=I+w.z*(b-I),R.cullingVolume=O.frustum.computeCullingVolume(S,B,v);let Q=e._cascadeMatrices[a];N.multiply(O.getViewProjection(),i.inverseViewMatrix,Q),N.multiply(R.textureOffsets,Q,Q)}}var QCt=new N,kCt=new d,UCt=new d,Mxe=new d;function GCt(e,t){let n=e._shadowMapCamera,i=e._sceneCamera,o=N.multiply(i.frustum.projectionMatrix,i.viewMatrix,pC),r=N.inverse(o,pC),s=n.directionWC,a=i.directionWC;d.equalsEpsilon(s,a,D.EPSILON10)&&(a=i.upWC);let c=d.cross(s,a,kCt);a=d.cross(c,s,UCt),d.normalize(a,a),d.normalize(c,c);let u=d.fromElements(0,0,0,Mxe),f=N.computeView(u,s,a,c,QCt),h=N.multiply(f,r,pC),A=d.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,Fxe),g=d.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,Qxe);for(let b=0;b<8;++b){let S=se.clone(QA[b],jJ[b]);N.multiplyByVector(h,S,S),d.divideByScalar(S,S.w,S),d.minimumByComponent(S,A,A),d.maximumByComponent(S,g,g)}g.z+=1e3,A.z-=10;let m=Mxe;m.x=-(.5*(A.x+g.x)),m.y=-(.5*(A.y+g.y)),m.z=-g.z;let _=N.fromTranslation(m,pC);f=N.multiply(_,f,f);let y=.5*(g.x-A.x),C=.5*(g.y-A.y),E=g.z-A.z,I=n.frustum;I.left=-y,I.right=y,I.bottom=-C,I.top=C,I.near=.01,I.far=E,N.clone(f,n.viewMatrix),N.inverse(f,n.inverseViewMatrix),N.getTranslation(n.inverseViewMatrix,n.positionWC),t.mapProjection.ellipsoid.cartesianToCartographic(n.positionWC,n.positionCartographic),d.clone(s,n.directionWC),d.clone(a,n.upWC),d.clone(c,n.rightWC)}var zCt=[new d(-1,0,0),new d(0,-1,0),new d(0,0,-1),new d(1,0,0),new d(0,1,0),new d(0,0,1)],VCt=[new d(0,-1,0),new d(0,0,-1),new d(0,-1,0),new d(0,-1,0),new d(0,0,1),new d(0,-1,0)],HCt=[new d(0,0,1),new d(1,0,0),new d(-1,0,0),new d(0,0,-1),new d(1,0,0),new d(1,0,0)];function WCt(e,t){let n=new ki;n.fov=D.PI_OVER_TWO,n.near=1,n.far=e._pointLightRadius,n.aspectRatio=1;for(let i=0;i<6;++i){let o=e._passes[i].camera;o.positionWC=e._shadowMapCamera.positionWC,o.positionCartographic=t.mapProjection.ellipsoid.cartesianToCartographic(o.positionWC,o.positionCartographic),o.directionWC=zCt[i],o.upWC=VCt[i],o.rightWC=HCt[i],N.computeView(o.positionWC,o.directionWC,o.upWC,o.rightWC,o.viewMatrix),N.inverse(o.viewMatrix,o.inverseViewMatrix),o.frustum=n}}var jCt=new d,YCt=new d,kxe=new le,Nxe=kxe.center;function qCt(e,t){let n=e._sceneCamera,i=e._shadowMapCamera,o=kxe;if(e._cascadesEnabled){if(n.frustum.near>=e.maximumDistance){e._outOfView=!0,e._needsUpdate=!1;return}let r=t.mapProjection.ellipsoid.geodeticSurfaceNormal(n.positionWC,jCt),s=d.negate(i.directionWC,YCt),a=d.dot(r,s);if(e.fadingEnabled){let c=D.clamp(a/.1,0,1);e._darkness=D.lerp(1,e.darkness,c)}else e._darkness=e.darkness;if(a<0){e._outOfView=!0,e._needsUpdate=!1;return}e._needsUpdate=!0,e._outOfView=!1}else if(e._isPointLight)o.center=i.positionWC,o.radius=e._pointLightRadius,e._outOfView=t.cullingVolume.computeVisibility(o)===tn.OUTSIDE,e._needsUpdate=!e._outOfView&&!e._boundingSphere.equals(o),le.clone(o,e._boundingSphere);else{let r=i.frustum.far/2,s=d.add(i.positionWC,d.multiplyByScalar(i.directionWC,r,Nxe),Nxe);o.center=s,o.radius=r,e._outOfView=t.cullingVolume.computeVisibility(o)===tn.OUTSIDE,e._needsUpdate=!e._outOfView&&!e._boundingSphere.equals(o),le.clone(o,e._boundingSphere)}}function KCt(e,t){let n=t.camera,i=e._lightCamera,o=e._sceneCamera,r=e._shadowMapCamera;e._cascadesEnabled?d.clone(i.directionWC,r.directionWC):e._isPointLight?d.clone(i.positionWC,r.positionWC):r.clone(i);let s=e._lightDirectionEC;N.multiplyByPointAsVector(n.viewMatrix,r.directionWC,s),d.normalize(s,s),d.negate(s,s),N.multiplyByPoint(n.viewMatrix,r.positionWC,e._lightPositionEC),e._lightPositionEC.w=e._pointLightRadius;let a,c;e._fitNearFar?(a=Math.min(t.shadowState.nearPlane,e.maximumDistance),c=Math.min(t.shadowState.farPlane,e.maximumDistance),c=Math.max(c,a+1)):(a=n.frustum.near,c=e.maximumDistance),e._sceneCamera=Co.clone(n,o),n.frustum.clone(e._sceneCamera.frustum),e._sceneCamera.frustum.near=a,e._sceneCamera.frustum.far=c,e._distance=c-a,qCt(e,t),!e._outOfViewPrevious&&e._outOfView&&(e._needsUpdate=!0),e._outOfViewPrevious=e._outOfView}FA.prototype.update=function(e){if(KCt(this,e),this._needsUpdate)if(bCt(this,e.context),this._isPointLight&&WCt(this,e),this._cascadesEnabled&&(GCt(this,e),this._numberOfCascades>1&&FCt(this,e)),this._isPointLight)this._shadowMapCullingVolume=Os.fromBoundingSphere(this._boundingSphere);else{let t=this._shadowMapCamera,n=t.positionWC,i=t.directionWC,o=t.upWC;this._shadowMapCullingVolume=t.frustum.computeCullingVolume(n,i,o),this._passes.length===1&&this._passes[0].camera.clone(t)}if(this._passes.length===1){let t=this._sceneCamera.inverseViewMatrix;N.multiply(this._shadowMapCamera.getViewProjection(),t,this._shadowMapMatrix)}this.debugShow&&RCt(this,e)};FA.prototype.updatePass=function(e,t){Oxe(this,e,t)};var XCt=new U;function Uxe(e,t,n){let i=e._isPointLight?e._pointBias:n?e._terrainBias:e._primitiveBias,o={shadowMap_texture:function(){return e._shadowMapTexture},shadowMap_textureCube:function(){return e._shadowMapTexture},shadowMap_matrix:function(){return e._shadowMapMatrix},shadowMap_cascadeSplits:function(){return e._cascadeSplits},shadowMap_cascadeMatrices:function(){return e._cascadeMatrices},shadowMap_lightDirectionEC:function(){return e._lightDirectionEC},shadowMap_lightPositionEC:function(){return e._lightPositionEC},shadowMap_cascadeDistances:function(){return e._cascadeDistances},shadowMap_texelSizeDepthBiasAndNormalShadingSmooth:function(){let r=XCt;return r.x=1/e._textureSize.x,r.y=1/e._textureSize.y,se.fromElements(r.x,r.y,i.depthBias,i.normalShadingSmooth,this.combinedUniforms1)},shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness:function(){return se.fromElements(i.normalOffsetScale,e._distance,e.maximumDistance,e._darkness,this.combinedUniforms2)},combinedUniforms1:new se,combinedUniforms2:new se};return Tt(t,o,!1)}function JCt(e,t,n,i,o,r){let s,a,c;if(l(r)&&(s=r.shaderProgram,a=r.renderState,c=r.uniformMap),r=nt.shallowClone(n,r),r.castShadows=!0,r.receiveShadows=!1,!l(s)||o!==n.shaderProgram.id||t){let u=n.shaderProgram,f=n.pass===Be.GLOBE,h=n.pass!==Be.TRANSLUCENT,A=e._isPointLight,g=e._usesDepthTexture,m=OA.getShadowCastShaderKeyword(A,f,g,h);if(s=i.shaderCache.getDerivedShaderProgram(u,m),!l(s)){let y=u.vertexShaderSource,C=u.fragmentShaderSource,E=OA.createShadowCastVertexShader(y,A,f),I=OA.createShadowCastFragmentShader(C,A,g,h);s=i.shaderCache.createDerivedShaderProgram(u,m,{vertexShaderSource:E,fragmentShaderSource:I,attributeLocations:u._attributeLocations})}a=e._primitiveRenderState,A?a=e._pointRenderState:f&&(a=e._terrainRenderState),n.renderState.cull.enabled||(a=ze(a,!1),a.cull=ze(a.cull,!1),a.cull.enabled=!1,a=Ue.fromCache(a)),c=Uxe(e,n.uniformMap,f)}return r.shaderProgram=s,r.renderState=a,r.uniformMap=c,r}FA.createReceiveDerivedCommand=function(e,t,n,i,o){l(o)||(o={});let r=e.length>0,s=t.shaderProgram,a=s.vertexShaderSource,c=s.fragmentShaderSource,u=t.pass===Be.GLOBE,f=!1;if(u&&(f=t.owner.data.renderedMesh.encoding.hasVertexNormals),t.receiveShadows&&r){let h,A;l(o.receiveCommand)&&(h=o.receiveCommand.shaderProgram,A=o.receiveCommand.uniformMap),o.receiveCommand=nt.shallowClone(t,o.receiveCommand),o.castShadows=!1,o.receiveShadows=!0;let g=o.receiveShaderCastShadows!==t.castShadows,m=o.receiveShaderProgramId!==t.shaderProgram.id;if(!l(h)||m||n||g){let _=OA.getShadowReceiveShaderKeyword(e[0],t.castShadows,u,f);if(h=i.shaderCache.getDerivedShaderProgram(s,_),!l(h)){let y=OA.createShadowReceiveVertexShader(a,u,f),C=OA.createShadowReceiveFragmentShader(c,e[0],t.castShadows,u,f);h=i.shaderCache.createDerivedShaderProgram(s,_,{vertexShaderSource:y,fragmentShaderSource:C,attributeLocations:s._attributeLocations})}A=Uxe(e[0],t.uniformMap,u)}o.receiveCommand.shaderProgram=h,o.receiveCommand.uniformMap=A,o.receiveShaderProgramId=t.shaderProgram.id,o.receiveShaderCastShadows=t.castShadows}return o};FA.createCastDerivedCommand=function(e,t,n,i,o){if(l(o)||(o={}),t.castShadows){let r=o.castCommands;l(r)||(r=o.castCommands=[]);let s=o.castShaderProgramId,a=e.length;r.length=a;for(let c=0;c<a;++c)r[c]=JCt(e[c],n,t,i,s,r[c]);o.castShaderProgramId=t.shaderProgram.id}return o};FA.prototype.isDestroyed=function(){return!1};FA.prototype.destroy=function(){WJ(this),this._debugLightFrustum=this._debugLightFrustum&&this._debugLightFrustum.destroy(),this._debugCameraFrustum=this._debugCameraFrustum&&this._debugCameraFrustum.destroy(),this._debugShadowViewCommand=this._debugShadowViewCommand&&this._debugShadowViewCommand.shaderProgram&&this._debugShadowViewCommand.shaderProgram.destroy();for(let e=0;e<this._numberOfCascades;++e)this._debugCascadeFrustums[e]=this._debugCascadeFrustums[e]&&this._debugCascadeFrustums[e].destroy();return ue(this)};var Jg=FA;var VI=`uniform sampler2D colorTexture; + +#ifdef DEBUG_SHOW_DEPTH +uniform sampler2D u_packedTranslucentDepth; +#endif + +in vec2 v_textureCoordinates; + +void main() +{ +#ifdef DEBUG_SHOW_DEPTH + if (v_textureCoordinates.x < 0.5) + { + out_FragColor.rgb = vec3(czm_unpackDepth(texture(u_packedTranslucentDepth, v_textureCoordinates))); + out_FragColor.a = 1.0; + } +#else + vec4 color = texture(colorTexture, v_textureCoordinates); + +#ifdef PICK + if (color == vec4(0.0)) + { + discard; + } +#else + // Reverse premultiplication process to get the correct composited result of the classification primitives + color.rgb /= color.a; +#endif + out_FragColor = color; +#endif +} +`;var ZCt=!1;function gC(e){this._drawClassificationFBO=new Di({createDepthAttachments:!1}),this._accumulationFBO=new Di({createDepthAttachments:!1}),this._packFBO=new Di,this._opaqueDepthStencilTexture=void 0,this._textureToComposite=void 0,this._translucentDepthStencilTexture=void 0,this._packDepthCommand=void 0,this._accumulateCommand=void 0,this._compositeCommand=void 0,this._copyCommand=void 0,this._clearColorCommand=new Ci({color:new G(0,0,0,0),owner:this}),this._clearDepthStencilCommand=new Ci({depth:1,stencil:0,owner:this}),this._supported=e.depthTexture,this._viewport=new Ye,this._rsDepth=void 0,this._rsAccumulate=void 0,this._rsComp=void 0,this._useScissorTest=void 0,this._scissorRectangle=void 0,this._hasTranslucentDepth=!1,this._frustumsDrawn=0}Object.defineProperties(gC.prototype,{hasTranslucentDepth:{get:function(){return this._hasTranslucentDepth}}});function Gxe(e){e._textureToComposite=void 0,e._translucentDepthStencilTexture=e._translucentDepthStencilTexture&&!e._translucentDepthStencilTexture.isDestroyed()&&e._translucentDepthStencilTexture.destroy()}function zxe(e){e._drawClassificationFBO.destroy(),e._accumulationFBO.destroy(),e._packFBO.destroy()}function $Ct(e,t,n,i){Gxe(e),e._translucentDepthStencilTexture=new Mt({context:t,width:n,height:i,pixelFormat:$e.DEPTH_STENCIL,pixelDatatype:Ve.UNSIGNED_INT_24_8,sampler:on.NEAREST})}function eEt(e,t,n,i){zxe(e),e._drawClassificationFBO.setDepthStencilTexture(e._translucentDepthStencilTexture),e._drawClassificationFBO.update(t,n,i),e._accumulationFBO.setDepthStencilTexture(e._translucentDepthStencilTexture),e._accumulationFBO.update(t,n,i),e._packFBO.update(t,n,i)}function tEt(e,t,n,i){if(!e.isSupported())return;e._opaqueDepthStencilTexture=i;let o=e._opaqueDepthStencilTexture.width,r=e._opaqueDepthStencilTexture.height;e._drawClassificationFBO.isDirty(o,r)&&($Ct(e,t,o,r),eEt(e,t,o,r));let s,a;if(l(e._packDepthCommand)||(s=new He({sources:[R2]}),a={u_opaqueDepthTexture:function(){return e._opaqueDepthStencilTexture},u_translucentDepthTexture:function(){return e._translucentDepthStencilTexture}},e._packDepthCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),!l(e._compositeCommand)){s=new He({sources:[VI]}),a={colorTexture:function(){return e._textureToComposite}},ZCt&&(s.defines=["DEBUG_SHOW_DEPTH"],a.u_packedTranslucentDepth=function(){return e._packFBO.getColorTexture()}),e._compositeCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e});let f=e._compositeCommand,h=f.shaderProgram,A=t.shaderCache.createDerivedShaderProgram(h,"pick",{vertexShaderSource:h.vertexShaderSource,fragmentShaderSource:new He({sources:s.sources,defines:["PICK"]}),attributeLocations:h._attributeLocations}),g=nt.shallowClone(f);g.shaderProgram=A,f.derivedCommands.pick=g}l(e._copyCommand)||(s=new He({sources:[VI]}),a={colorTexture:function(){return e._drawClassificationFBO.getColorTexture()}},e._copyCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),l(e._accumulateCommand)||(s=new He({sources:[VI]}),a={colorTexture:function(){return e._drawClassificationFBO.getColorTexture()}},e._accumulateCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),e._viewport.width=o,e._viewport.height=r;let c=!Ye.equals(e._viewport,n.viewport),u=c!==e._useScissorTest;e._useScissorTest=c,Ye.equals(e._scissorRectangle,n.viewport)||(e._scissorRectangle=Ye.clone(n.viewport,e._scissorRectangle),u=!0),(!l(e._rsDepth)||!Ye.equals(e._viewport,e._rsDepth.viewport)||u)&&(e._rsDepth=Ue.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}})),l(e._packDepthCommand)&&(e._packDepthCommand.renderState=e._rsDepth),(!l(e._rsAccumulate)||!Ye.equals(e._viewport,e._rsAccumulate.viewport)||u)&&(e._rsAccumulate=Ue.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},stencilTest:{enabled:!0,frontFunction:Zn.EQUAL,reference:Kt.CESIUM_3D_TILE_MASK}})),l(e._accumulateCommand)&&(e._accumulateCommand.renderState=e._rsAccumulate),(!l(e._rsComp)||!Ye.equals(e._viewport,e._rsComp.viewport)||u)&&(e._rsComp=Ue.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},blending:pn.ALPHA_BLEND})),l(e._compositeCommand)&&(e._compositeCommand.renderState=e._rsComp,e._compositeCommand.derivedCommands.pick.renderState=e._rsComp)}gC.prototype.executeTranslucentCommands=function(e,t,n,i,o){let r=e.frameState.useLogDepth,s=e.context,a=n.framebuffer;for(let c=0;c<i.length;++c){let u=i[c];if(u=r?u.derivedCommands.logDepth.command:u,u.depthForTranslucentClassification){this._hasTranslucentDepth=!0;break}}if(this._hasTranslucentDepth){tEt(this,s,n,o),n.framebuffer=this._drawClassificationFBO.framebuffer,this._clearDepthStencilCommand.execute(s,n);for(let c=0;c<i.length;++c){let u=i[c];if(u=r?u.derivedCommands.logDepth.command:u,!u.depthForTranslucentClassification)continue;let f=u.derivedCommands.depth.depthOnlyCommand;t(f,e,n)}this._frustumsDrawn+=this._hasTranslucentDepth?1:0,this._hasTranslucentDepth&&(n.framebuffer=this._packFBO.framebuffer,this._packDepthCommand.execute(s,n)),n.framebuffer=a}};gC.prototype.executeClassificationCommands=function(e,t,n,i){if(!this._hasTranslucentDepth)return;let o=e.context,r=o.uniformState,s=n.framebuffer;n.framebuffer=this._accumulationFBO.framebuffer,this._accumulateCommand.execute(o,n),n.framebuffer=this._drawClassificationFBO.framebuffer,this._frustumsDrawn>1&&this._clearColorCommand.execute(o,n),r.updatePass(Be.CESIUM_3D_TILE_CLASSIFICATION);let a=r.globeDepthTexture;r.globeDepthTexture=this._packFBO.getColorTexture();let c=i.commands[Be.CESIUM_3D_TILE_CLASSIFICATION],u=i.indices[Be.CESIUM_3D_TILE_CLASSIFICATION];for(let f=0;f<u;++f)t(c[f],e,n);r.globeDepthTexture=a,n.framebuffer=s,this._frustumsDrawn!==1&&(n.framebuffer=this._accumulationFBO.framebuffer,this._accumulateCommand.execute(o,n),n.framebuffer=s)};gC.prototype.execute=function(e,t){if(!this._hasTranslucentDepth)return;this._frustumsDrawn===1?this._textureToComposite=this._drawClassificationFBO.getColorTexture():this._textureToComposite=this._accumulationFBO.getColorTexture(),(e.frameState.passes.pick?this._compositeCommand.derivedCommands.pick:this._compositeCommand).execute(e.context,t),nEt(this,e,t)};function nEt(e,t,n){if(!e._hasTranslucentDepth)return;let i=n.framebuffer;n.framebuffer=e._drawClassificationFBO.framebuffer,e._clearColorCommand.execute(t._context,n),n.framebuffer=i,e._frustumsDrawn>1&&(n.framebuffer=e._accumulationFBO.framebuffer,e._clearColorCommand.execute(t._context,n)),e._hasTranslucentDepth=!1,e._frustumsDrawn=0}gC.prototype.isSupported=function(){return this._supported};gC.prototype.isDestroyed=function(){return!1};gC.prototype.destroy=function(){return Gxe(this),zxe(this),l(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),l(this._packDepthCommand)&&(this._packDepthCommand.shaderProgram=this._packDepthCommand.shaderProgram&&this._packDepthCommand.shaderProgram.destroy()),ue(this)};var zQ=gC;function iEt(){this.command=void 0,this.near=void 0,this.far=void 0}function NH(e,t,n){let i=e.context,o;i.depthTexture&&(o=new LQ);let r;e._useOIT&&i.depthTexture&&(r=new FQ(i));let s=new Xc(i);s.viewport=Ye.clone(n),this.camera=t,this._cameraClone=Co.clone(t),this._cameraStartFired=!1,this._cameraMovedTime=void 0,this.viewport=n,this.passState=s,this.pickFramebuffer=new GQ(i),this.pickDepthFramebuffer=new kQ,this.sceneFramebuffer=new GI,this.globeDepth=o,this.globeTranslucencyFramebuffer=new OQ,this.oit=r,this.translucentTileClassification=new zQ(i),this.pickDepths=[],this.frustumCommandsList=[],this.debugFrustumStatistics=void 0,this._commandExtents=[]}var YJ=new d,qJ=new d;function oEt(e,t,n){let i=Math.max(d.maximumComponent(d.abs(e.position,YJ)),d.maximumComponent(d.abs(t.position,qJ))),o=1/Math.max(1,i);return d.multiplyByScalar(e.position,o,YJ),d.multiplyByScalar(t.position,o,qJ),d.equalsEpsilon(YJ,qJ,n)&&d.equalsEpsilon(e.direction,t.direction,n)&&d.equalsEpsilon(e.up,t.up,n)&&d.equalsEpsilon(e.right,t.right,n)&&N.equalsEpsilon(e.transform,t.transform,n)&&e.frustum.equalsEpsilon(t.frustum,n)}NH.prototype.checkForCameraUpdates=function(e){let t=this.camera,n=this._cameraClone;return oEt(t,n,D.EPSILON15)?(this._cameraStartFired&&Li()-this._cameraMovedTime>e.cameraEventWaitTime&&(t.moveEnd.raiseEvent(),this._cameraStartFired=!1),!1):(this._cameraStartFired||(t.moveStart.raiseEvent(),this._cameraStartFired=!0),this._cameraMovedTime=Li(),Co.clone(t,n),!0)};function rEt(e,t,n,i){let{frameState:o}=t,{camera:r,useLogDepth:s}=o,a=s?t.logarithmicDepthFarToNearRatio:t.farToNearRatio,c=t.mode===ie.SCENE2D,u=t.nearToFarDistance2D;i*=1+D.EPSILON2,n=Math.min(Math.max(n,r.frustum.near),r.frustum.far),i=Math.max(Math.min(i,r.frustum.far),n);let f;c?(i=Math.min(i,r.position.z+t.nearToFarDistance2D),n=Math.min(n,i),f=Math.ceil(Math.max(1,i-n)/t.nearToFarDistance2D)):f=Math.ceil(Math.log(i/n)/Math.log(a));let{frustumCommandsList:h}=e;h.length=f;for(let A=0;A<f;++A){let g,m;c?(g=Math.min(i-u,n+A*u),m=Math.min(i,g+u)):(g=Math.max(n,Math.pow(a,A)*n),m=Math.min(i,a*g));let _=h[A];l(_)?(_.near=g,_.far=m):_=h[A]=new NQ(g,m)}}function sEt(e,t,n){let{command:i,near:o,far:r}=n;t.debugShowFrustums&&(i.debugOverlappingFrustums=0);let{frustumCommandsList:s}=e;for(let a=0;a<s.length;++a){let c=s[a];if(o>c.far)continue;if(r<c.near)break;let u=i.pass,f=c.indices[u]++;if(c.commands[u][f]=i,t.debugShowFrustums&&(i.debugOverlappingFrustums|=1<<a),i.executeInClosestFrustum)break}if(t.debugShowFrustums){let{debugFrustumStatistics:a}=e,{debugOverlappingFrustums:c}=i,u=a.commandsInFrustums;u[c]=l(u[c])?u[c]+1:1,++a.totalCommands}t.updateDerivedCommands(i)}var Vxe=new Os,aEt=new sc;NH.prototype.createPotentiallyVisibleSet=function(e){let{frameState:t}=e,{camera:n,commandList:i,shadowState:o}=t,{positionWC:r,directionWC:s,frustum:a}=n,c=e._computeCommandList,u=e._overlayCommandList;e.debugShowFrustums&&(this.debugFrustumStatistics={totalCommands:0,commandsInFrustums:{}});let f=this.frustumCommandsList;for(let M=0;M<f.length;++M)for(let L=0;L<Be.NUMBER_OF_PASSES;++L)f[M].indices[L]=0;c.length=0,u.length=0;let h=this._commandExtents,A=h.length,g=0,m=+Number.MAX_VALUE,_=-Number.MAX_VALUE,{shadowsEnabled:y}=o,C=+Number.MAX_VALUE,E=-Number.MAX_VALUE,I=Number.MAX_VALUE,b=t.mode===ie.SCENE3D?t.occluder:void 0,{cullingVolume:S}=t,B=Vxe.planes;for(let M=0;M<5;++M)B[M]=S.planes[M];S=Vxe;for(let M=0;M<i.length;++M){let L=i[M],{pass:p,boundingVolume:x}=L;if(p===Be.COMPUTE)c.push(L);else if(p===Be.OVERLAY)u.push(L);else{let T,w;if(l(x)){if(!e.isVisible(S,L,b))continue;let O=x.computePlaneDistances(r,s,aEt);if(T=O.start,w=O.stop,m=Math.min(m,T),_=Math.max(_,w),y&&L.receiveShadows&&T<Jg.MAXIMUM_DISTANCE&&!(p===Be.GLOBE&&T<-100&&w>100)){let k=w-T;p!==Be.GLOBE&&T<100&&(I=Math.min(I,k)),C=Math.min(C,T),E=Math.max(E,w)}}else L instanceof Ci?(T=a.near,w=a.far):(T=a.near,w=a.far,m=Math.min(m,T),_=Math.max(_,w));let R=h[g];l(R)||(R=h[g]=new iEt),R.command=L,R.near=T,R.far=w,g++}}y&&(C=Math.min(Math.max(C,a.near),a.far),E=Math.max(Math.min(E,a.far),C),o.nearPlane=C,o.farPlane=E,o.closestObjectSize=I),rEt(this,e,m,_);for(let M=0;M<g;M++)sEt(this,e,h[M]);if(g<A)for(let M=g;M<A;M++){let L=h[M];if(!l(L.command))break;L.command=void 0}let v=f.length,{frustumSplits:P}=t;P.length=v+1;for(let M=0;M<v;++M)P[M]=f[M].near,M===v-1&&(P[M+1]=f[M].far)};NH.prototype.destroy=function(){this.pickFramebuffer=this.pickFramebuffer&&this.pickFramebuffer.destroy(),this.pickDepthFramebuffer=this.pickDepthFramebuffer&&this.pickDepthFramebuffer.destroy(),this.sceneFramebuffer=this.sceneFramebuffer&&this.sceneFramebuffer.destroy(),this.globeDepth=this.globeDepth&&this.globeDepth.destroy(),this.oit=this.oit&&this.oit.destroy(),this.translucentTileClassification=this.translucentTileClassification&&this.translucentTileClassification.destroy(),this.globeTranslucencyFramebuffer=this.globeTranslucencyFramebuffer&&this.globeTranslucencyFramebuffer.destroy();let e=this.pickDepths;for(let t=0;t<e.length;++t)e[t].destroy()};var HI=NH;var Wxe=.1,cEt=new Vd({pass:qo.MOST_DETAILED_PRELOAD}),lEt=new Vd({pass:qo.MOST_DETAILED_PICK}),VQ=new Vd({pass:qo.PICK});function Ba(e){this._mostDetailedRayPicks=[],this.pickRenderStateCache={},this._pickPositionCache={},this._pickPositionCacheDirty=!1;let t=new Ye(0,0,1,1),n=new Co(e);n.frustum=new An({width:Wxe,aspectRatio:1,near:.1}),this._pickOffscreenView=new HI(e,n,t)}Ba.prototype.update=function(){this._pickPositionCacheDirty=!0};Ba.prototype.getPickDepth=function(e,t){let n=e.view.pickDepths,i=n[t];return l(i)||(i=new MQ,n[t]=i),i};var uEt=new es,fEt=new d,LH=new d,dEt=new U,hEt=new N;function mEt(e,t,n,i,o){let r=e.camera,s=r.frustum,a=s.offCenterFrustum;l(a)&&(s=a);let c=2*(t.x-o.x)/o.width-1;c*=(s.right-s.left)*.5;let u=2*(o.height-t.y-o.y)/o.height-1;u*=(s.top-s.bottom)*.5;let f=N.clone(r.transform,hEt);r._setTransform(N.IDENTITY);let h=d.clone(r.position,fEt);d.multiplyByScalar(r.right,c,LH),d.add(LH,h,h),d.multiplyByScalar(r.up,u,LH),d.add(LH,h,h),r._setTransform(f),e.mode===ie.SCENE2D&&d.fromElements(h.z,h.x,h.y,h);let A=s.getPixelDimensions(o.width,o.height,1,1,dEt),g=uEt;return g.right=A.x*.5,g.left=-g.right,g.top=A.y*.5,g.bottom=-g.top,g.near=s.near,g.far=s.far,g.computeCullingVolume(h,r.directionWC,r.upWC)}var AEt=new Vl,pEt=new U;function gEt(e,t,n,i,o){let r=e.camera,s=r.frustum,a=s.near,c=Math.tan(s.fovy*.5),u=s.aspectRatio*c,f=2*(t.x-o.x)/o.width-1,h=2*(o.height-t.y-o.y)/o.height-1,A=f*a*u,g=h*a*c,m=s.getPixelDimensions(o.width,o.height,1,1,pEt),_=m.x*n*.5,y=m.y*i*.5,C=AEt;return C.top=g+y,C.bottom=g-y,C.right=A+_,C.left=A-_,C.near=a,C.far=s.far,C.computeCullingVolume(r.positionWC,r.directionWC,r.upWC)}function OH(e,t,n,i,o){let r=e.camera.frustum;return r instanceof An||r instanceof es?mEt(e,t,n,i,o):gEt(e,t,n,i,o)}var FH=new Ye(0,0,3,3),QH=new U,HQ=new G(0,0,0,0);function KJ(e,t,n,i,o){return o.width=n??3,o.height=i??o.width,o.x=t.x-(o.width-1)*.5,o.y=e-t.y-(o.height-1)*.5,o}Ba.prototype.pick=function(e,t,n,i){let{context:o,frameState:r,defaultView:s}=e,{viewport:a,pickFramebuffer:c}=s;e.view=s,a.x=0,a.y=0,a.width=o.drawingBufferWidth,a.height=o.drawingBufferHeight;let u=s.passState;u.viewport=Ye.clone(a,u.viewport);let f=eo.transformWindowToDrawingBuffer(e,t,QH),h=KJ(o.drawingBufferHeight,f,n,i,FH);e.jobScheduler.disableThisFrame(),e.updateFrameState(),r.cullingVolume=OH(e,f,h.width,h.height,a),r.invertClassification=!1,r.passes.pick=!0,r.tilesetPassState=VQ,o.uniformState.update(r),e.updateEnvironment(),u=c.begin(h,a),e.updateAndExecuteCommands(u,HQ),e.resolveFramebuffers(u);let A=c.end(h);return o.endFrame(),A};Ba.prototype.pickVoxelCoordinate=function(e,t,n,i){let{context:o,frameState:r,defaultView:s}=e,{viewport:a,pickFramebuffer:c}=s;e.view=s,a.x=0,a.y=0,a.width=o.drawingBufferWidth,a.height=o.drawingBufferHeight;let u=s.passState;u.viewport=Ye.clone(a,u.viewport);let f=eo.transformWindowToDrawingBuffer(e,t,QH),h=KJ(o.drawingBufferHeight,f,n,i,FH);e.jobScheduler.disableThisFrame(),e.updateFrameState(),r.cullingVolume=OH(e,f,h.width,h.height,a),r.invertClassification=!1,r.passes.pickVoxel=!0,r.tilesetPassState=VQ,o.uniformState.update(r),e.updateEnvironment(),u=c.begin(h,a),e.updateAndExecuteCommands(u,HQ),e.resolveFramebuffers(u);let A=c.readCenterPixel(h);return o.endFrame(),A};Ba.prototype.pickMetadata=function(e,t,n){let{context:i,frameState:o,defaultView:r}=e,{viewport:s,pickFramebuffer:a}=r;e.view=r,s.x=0,s.y=0,s.width=i.drawingBufferWidth,s.height=i.drawingBufferHeight;let c=r.passState;c.viewport=Ye.clone(s,c.viewport);let u=eo.transformWindowToDrawingBuffer(e,t,QH),f=KJ(i.drawingBufferHeight,u,1,1,FH);e.jobScheduler.disableThisFrame(),e.updateFrameState(),o.cullingVolume=OH(e,u,f.width,f.height,s),o.invertClassification=!1,o.passes.pick=!0,o.tilesetPassState=VQ,o.pickingMetadata=!0,o.pickedMetadataInfo=n,i.uniformState.update(o),e.updateEnvironment(),c=a.begin(f,s),e.updateAndExecuteCommands(c,HQ);let h=e._environmentState.useOIT;e._environmentState.useOIT=!1,e.resolveFramebuffers(c),e._environmentState.useOIT=h;let A=a.readCenterPixel(f);return i.endFrame(),o.pickingMetadata=!1,RQ.decodeMetadataValues(n.classProperty,n.metadataProperty,A)};function _Et(e,t){let{defaultView:n,context:i,frameState:o,environmentState:r}=e,{viewport:s,pickDepthFramebuffer:a}=n;e.view=n,s.x=0,s.y=0,s.width=i.drawingBufferWidth,s.height=i.drawingBufferHeight;let c=n.passState;c.viewport=Ye.clone(s,c.viewport),e.clearPasses(o.passes),o.passes.pick=!0,o.passes.depth=!0,o.cullingVolume=OH(e,t,1,1,s),o.tilesetPassState=VQ,e.updateEnvironment(),r.renderTranslucentDepthForPick=!0,c=a.update(i,t,s),e.updateAndExecuteCommands(c,HQ),e.resolveFramebuffers(c),i.endFrame()}var yEt=new ki,CEt=new Vl,EEt=new An,IEt=new es;Ba.prototype.pickPositionWorldCoordinates=function(e,t,n){if(!e.useDepthPicking)return;let i=t.toString();if(this._pickPositionCacheDirty)this._pickPositionCache={},this._pickPositionCacheDirty=!1;else if(this._pickPositionCache.hasOwnProperty(i))return d.clone(this._pickPositionCache[i],n);let{context:o,frameState:r,camera:s,defaultView:a}=e,{uniformState:c}=o;e.view=a;let u=eo.transformWindowToDrawingBuffer(e,t,QH);e.pickTranslucentDepth?_Et(e,u):(e.updateFrameState(),c.update(r),e.updateEnvironment()),u.y=e.drawingBufferHeight-u.y;let f;l(s.frustum.fov)?f=s.frustum.clone(yEt):l(s.frustum.infiniteProjectionMatrix)?f=s.frustum.clone(CEt):l(s.frustum.width)?f=s.frustum.clone(EEt):f=s.frustum.clone(IEt);let{frustumCommandsList:h}=a,A=h.length;for(let g=0;g<A;++g){let _=this.getPickDepth(e,g).getDepth(o,u.x,u.y);if(l(_)&&_>0&&_<1){let y=h[g],C;return e.mode===ie.SCENE2D?(C=s.position.z,s.position.z=C-y.near+1,f.far=Math.max(1,y.far-y.near),f.near=1,c.update(r),c.updateFrustum(f)):(f.near=y.near*(g!==0?e.opaqueFrustumNearOffset:1),f.far=y.far,c.updateFrustum(f)),n=eo.drawingBufferToWorldCoordinates(e,u,_,n),e.mode===ie.SCENE2D&&(s.position.z=C,c.update(r)),this._pickPositionCache[i]=d.clone(n),n}}this._pickPositionCache[i]=void 0};var xEt=new Ae;Ba.prototype.pickPosition=function(e,t,n){if(n=this.pickPositionWorldCoordinates(e,t,n),l(n)&&e.mode!==ie.SCENE3D){d.fromElements(n.y,n.z,n.x,n);let i=e.mapProjection,o=i.ellipsoid,r=i.unproject(n,xEt);o.cartographicToCartesian(r,n)}return n};function jxe(e,t){let n,i,o=[],r=[],s=[],a=[];l(e)||(e=Number.MAX_VALUE);let c=t();for(;l(c);){let u=c.object,f=c.position,h=c.exclude;if(l(f)&&!l(u)){o.push(c);break}if(!l(u)||!l(u.primitive)||!h&&(o.push(c),0>=--e))break;let A=u.primitive,g=!1;typeof A.getGeometryInstanceAttributes=="function"&&l(u.id)&&(i=A.getGeometryInstanceAttributes(u.id),l(i)&&l(i.show)&&(g=!0,i.show=wn.toValue(!1,i.show),s.push(i))),u instanceof ha&&(g=!0,u.show=!1,a.push(u)),g||(A.show=!1,r.push(A)),c=t()}for(n=0;n<r.length;++n)r[n].show=!0;for(n=0;n<s.length;++n)i=s[n],i.show=wn.toValue(!0,i.show);for(n=0;n<a.length;++n)a[n].show=!0;return o}Ba.prototype.drillPick=function(e,t,n,i,o){let r=this;return jxe(n,function(){let c=r.pick(e,t,i,o);if(l(c))return{object:c,position:void 0,exclude:!1}}).map(function(c){return c.object})};var Hxe=new d,bEt=new d;function TEt(e,t,n){this.ray=e,this.width=t,this.tilesets=n,this.ready=!1;let i=this;this.promise=new Promise(o=>{i._completePick=()=>{o()}})}function Yxe(e,t,n,i){let o=t.direction,r=d.mostOrthogonalAxis(o,Hxe),s=d.cross(o,r,Hxe),a=d.cross(o,s,bEt);return i.position=t.origin,i.direction=o,i.up=a,i.right=s,i.frustum.width=n??Wxe,i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC)}function SEt(e,t,n){let i=t.frameState,{ray:o,width:r,tilesets:s}=n,a=e._pickOffscreenView.camera,c=Yxe(e,o,r,a),u=cEt;u.camera=a,u.cullingVolume=c;let f=!0,h=s.length;for(let A=0;A<h;++A){let g=s[A];g.show&&t.primitives.contains(g)&&(g.updateForPass(i,u),f=f&&u.ready)}return f&&n._completePick(),f}Ba.prototype.updateMostDetailedRayPicks=function(e){let t=this._mostDetailedRayPicks;for(let n=0;n<t.length;++n)SEt(this,e,t[n])&&t.splice(n--,1)};function qxe(e,t,n){for(let i=0;i<e.length;++i){let o=e.get(i);o.show&&(l(o.isCesium3DTileset)?(!l(t)||t.indexOf(o)===-1)&&n.push(o):o instanceof Ql&&qxe(o,t,n))}}function kH(e,t,n,i,o,r){let s=[];if(qxe(t.primitives,i,s),s.length===0)return Promise.resolve(r());let a=new TEt(n,o,s);return e._mostDetailedRayPicks.push(a),a.promise.then(function(){return r()})}function wEt(e,t){return!l(e)||!l(t)||t.length===0?!1:t.indexOf(e)>-1||t.indexOf(e.primitive)>-1||t.indexOf(e.id)>-1}function BEt(e,t,n,i,o,r,s){let{context:a,frameState:c}=t,u=a.uniformState,f=e._pickOffscreenView;t.view=f,Yxe(e,n,o,f.camera);let h=Ye.clone(f.viewport,FH),A=f.pickFramebuffer.begin(h,f.viewport);t.jobScheduler.disableThisFrame(),t.updateFrameState(),c.invertClassification=!1,c.passes.pick=!0,c.passes.offscreen=!0,s?c.tilesetPassState=lEt:c.tilesetPassState=VQ,u.update(c),t.updateEnvironment(),t.updateAndExecuteCommands(A,HQ),t.resolveFramebuffers(A);let g,m=f.pickFramebuffer.end(h);if(t.context.depthTexture){let{frustumCommandsList:_}=f,y=_.length;for(let C=0;C<y;++C){let I=e.getPickDepth(t,C).getDepth(a,0,0);if(l(I)&&I>0&&I<1){let b=_[C],S=b.near*(C!==0?t.opaqueFrustumNearOffset:1),B=b.far,v=S+I*(B-S);g=In.getPoint(n,v);break}}}if(t.view=t.defaultView,a.endFrame(),l(m)||l(g))return{object:m,position:g,exclude:!l(g)&&r||wEt(m,i)}}function Kxe(e,t,n,i,o,r,s,a){return jxe(i,function(){return BEt(e,t,n,o,r,s,a)})}function Sw(e,t,n,i,o,r,s){let a=Kxe(e,t,n,1,i,o,r,s);if(a.length>0)return a[0]}function Xxe(e,t,n,i,o,r,s,a){return Kxe(e,t,n,i,o,r,s,a)}function UH(e,t){return new Promise((n,i)=>{t.then(function(o){let r=e.postRender.addEventListener(function(){r(),n(o)});e.requestRender()}).catch(function(o){i(o)})})}Ba.prototype.pickFromRay=function(e,t,n,i){return Sw(this,e,t,n,i,!1,!1)};Ba.prototype.drillPickFromRay=function(e,t,n,i,o){return Xxe(this,e,t,n,i,o,!1,!1)};Ba.prototype.pickFromRayMostDetailed=function(e,t,n,i){let o=this;return t=In.clone(t),n=l(n)?n.slice():n,UH(e,kH(o,e,t,n,i,function(){return Sw(o,e,t,n,i,!1,!0)}))};Ba.prototype.drillPickFromRayMostDetailed=function(e,t,n,i,o){let r=this;return t=In.clone(t),i=l(i)?i.slice():i,UH(e,kH(r,e,t,i,o,function(){return Xxe(r,e,t,n,i,o,!1,!0)}))};var DEt=new d,vEt=new d,PEt=new In,Jxe=new Ae;function XJ(e,t){let n=e.ellipsoid,i=Ti._defaultMaxTerrainHeight,o=n.geodeticSurfaceNormalCartographic(t,vEt),r=Ae.toCartesian(t,n,DEt),s=PEt;s.origin=r,s.direction=o;let a=new In;return In.getPoint(s,i,a.origin),d.negate(o,a.direction),a}function Zxe(e,t){let n=e.ellipsoid,i=Ae.fromCartesian(t,n,Jxe);return XJ(e,i)}function $xe(e,t){let n=e.ellipsoid;return Ae.fromCartesian(t,n,Jxe).height}function REt(e,t,n,i,o){let r=XJ(t,n);return kH(e,t,r,i,o,function(){let s=Sw(e,t,r,i,o,!0,!0);if(l(s))return $xe(t,s.position)})}function MEt(e,t,n,i,o,r){let s=Zxe(t,n);return kH(e,t,s,i,o,function(){let a=Sw(e,t,s,i,o,!0,!0);if(l(a))return d.clone(a.position,r)})}Ba.prototype.sampleHeight=function(e,t,n,i){let o=XJ(e,t),r=Sw(this,e,o,n,i,!0,!1);if(l(r))return $xe(e,r.position)};Ba.prototype.clampToHeight=function(e,t,n,i,o){let r=Zxe(e,t),s=Sw(this,e,r,n,i,!0,!1);if(l(s))return d.clone(s.position,o)};Ba.prototype.sampleHeightMostDetailed=function(e,t,n,i){n=l(n)?n.slice():n;let o=t.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=REt(this,e,t[s],n,i);return UH(e,Promise.all(r).then(function(s){let a=s.length;for(let c=0;c<a;++c)t[c].height=s[c];return t}))};Ba.prototype.clampToHeightMostDetailed=function(e,t,n,i){n=l(n)?n.slice():n;let o=t.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=MEt(this,e,t[s],n,i,t[s]);return UH(e,Promise.all(r).then(function(s){let a=s.length;for(let c=0;c<a;++c)t[c]=s[c];return t}))};Ba.prototype.destroy=function(){this._pickOffscreenView=this._pickOffscreenView&&this._pickOffscreenView.destroy()};var WQ=Ba;var jQ=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; + +#ifdef AUTO_EXPOSURE + color /= texture(autoExposure, vec2(0.5)).r; +#else + color *= vec3(exposure); +#endif + color = czm_acesTonemapping(color); + color = czm_inverseGamma(color); + + out_FragColor = vec4(color, fragmentColor.a); +} +`;var YQ=`precision highp float; + +uniform sampler2D randomTexture; +uniform sampler2D depthTexture; +uniform float intensity; +uniform float bias; +uniform float lengthCap; +uniform int stepCount; +uniform int directionCount; + +vec4 pixelToEye(vec2 screenCoordinate) +{ + vec2 uv = screenCoordinate / czm_viewport.zw; + float depth = czm_readDepth(depthTexture, uv); + vec2 xy = 2.0 * uv - vec2(1.0); + vec4 posEC = czm_inverseProjection * vec4(xy, depth, 1.0); + posEC = posEC / posEC.w; + // Avoid numerical error at far plane + if (depth >= 1.0) { + posEC.z = czm_currentFrustum.y; + } + return posEC; +} + +// Reconstruct surface normal in eye coordinates, avoiding edges +vec3 getNormalXEdge(vec3 positionEC) +{ + // Find the 3D surface positions at adjacent screen pixels + vec2 centerCoord = gl_FragCoord.xy; + vec3 positionLeft = pixelToEye(centerCoord + vec2(-1.0, 0.0)).xyz; + vec3 positionRight = pixelToEye(centerCoord + vec2(1.0, 0.0)).xyz; + vec3 positionUp = pixelToEye(centerCoord + vec2(0.0, 1.0)).xyz; + vec3 positionDown = pixelToEye(centerCoord + vec2(0.0, -1.0)).xyz; + + // Compute potential tangent vectors + vec3 dx0 = positionEC - positionLeft; + vec3 dx1 = positionRight - positionEC; + vec3 dy0 = positionEC - positionDown; + vec3 dy1 = positionUp - positionEC; + + // The shorter tangent is more likely to be on the same surface + vec3 dx = length(dx0) < length(dx1) ? dx0 : dx1; + vec3 dy = length(dy0) < length(dy1) ? dy0 : dy1; + + return normalize(cross(dx, dy)); +} + +const float sqrtTwoPi = sqrt(czm_twoPi); + +float gaussian(float x, float standardDeviation) { + float argument = x / standardDeviation; + return exp(-0.5 * argument * argument) / (sqrtTwoPi * standardDeviation); +} + +void main(void) +{ + vec4 positionEC = pixelToEye(gl_FragCoord.xy); + + // Exit if we are too close to the back of the frustum, where the depth value is invalid. + float maxValidDepth = czm_currentFrustum.y - lengthCap; + if (-positionEC.z > maxValidDepth) + { + out_FragColor = vec4(1.0); + return; + } + + vec3 normalEC = getNormalXEdge(positionEC.xyz); + float gaussianVariance = lengthCap * sqrt(-positionEC.z); + // Choose a step length such that the marching stops just before 3 * variance. + float stepLength = 3.0 * gaussianVariance / (float(stepCount) + 1.0); + float metersPerPixel = czm_metersPerPixel(positionEC, 1.0); + // Minimum step is 1 pixel to avoid double sampling + float pixelsPerStep = max(stepLength / metersPerPixel, 1.0); + stepLength = pixelsPerStep * metersPerPixel; + + float angleStepScale = 1.0 / float(directionCount); + float angleStep = angleStepScale * czm_twoPi; + float cosStep = cos(angleStep); + float sinStep = sin(angleStep); + mat2 rotateStep = mat2(cosStep, sinStep, -sinStep, cosStep); + + // Initial sampling direction (different for each pixel) + const float randomTextureSize = 255.0; + vec2 randomTexCoord = fract(gl_FragCoord.xy / randomTextureSize); + float randomVal = texture(randomTexture, randomTexCoord).x; + vec2 sampleDirection = vec2(cos(angleStep * randomVal), sin(angleStep * randomVal)); + + float ao = 0.0; + // Loop over sampling directions +#if __VERSION__ == 300 + for (int i = 0; i < directionCount; i++) + { +#else + for (int i = 0; i < 16; i++) + { + if (i >= directionCount) { + break; + } +#endif + sampleDirection = rotateStep * sampleDirection; + + float localAO = 0.0; + vec2 radialStep = pixelsPerStep * sampleDirection; + +#if __VERSION__ == 300 + for (int j = 0; j < stepCount; j++) + { +#else + for (int j = 0; j < 64; j++) + { + if (j >= stepCount) { + break; + } +#endif + // Step along sampling direction, away from output pixel + vec2 samplePixel = floor(gl_FragCoord.xy + float(j + 1) * radialStep) + vec2(0.5); + + // Exit if we stepped off the screen + if (clamp(samplePixel, vec2(0.0), czm_viewport.zw) != samplePixel) { + break; + } + + // Compute step vector from output point to sampled point + vec4 samplePositionEC = pixelToEye(samplePixel); + vec3 stepVector = samplePositionEC.xyz - positionEC.xyz; + + // Estimate the angle from the surface normal. + float dotVal = clamp(dot(normalEC, normalize(stepVector)), 0.0, 1.0); + dotVal = czm_branchFreeTernary(dotVal > bias, dotVal, 0.0); + dotVal = czm_branchFreeTernary(-samplePositionEC.z <= maxValidDepth, dotVal, 0.0); + + // Weight contribution based on the distance from the output point + float sampleDistance = length(stepVector); + float weight = gaussian(sampleDistance, gaussianVariance); + localAO += weight * dotVal; + } + ao += localAO; + } + + ao *= angleStepScale * stepLength; + ao = 1.0 - clamp(ao, 0.0, 1.0); + ao = pow(ao, intensity); + out_FragColor = vec4(vec3(ao), 1.0); +} +`;var qQ=`uniform sampler2D colorTexture; +uniform sampler2D ambientOcclusionTexture; +uniform bool ambientOcclusionOnly; +in vec2 v_textureCoordinates; + +void main(void) +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + vec4 ao = texture(ambientOcclusionTexture, v_textureCoordinates); + out_FragColor = ambientOcclusionOnly ? ao : ao * color; +} +`;var KQ=`uniform sampler2D colorTexture; +uniform float gradations; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb; +#ifdef CZM_SELECTED_FEATURE + if (czm_selected()) { + out_FragColor = vec4(rgb, 1.0); + return; + } +#endif + float luminance = czm_luminance(rgb); + float darkness = luminance * gradations; + darkness = (darkness - fract(darkness)) / gradations; + out_FragColor = vec4(vec3(darkness), 1.0); +} +`;var XQ=`uniform sampler2D colorTexture; +uniform sampler2D bloomTexture; +uniform bool glowOnly; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + +#ifdef CZM_SELECTED_FEATURE + if (czm_selected()) { + out_FragColor = color; + return; + } +#endif + + vec4 bloom = texture(bloomTexture, v_textureCoordinates); + out_FragColor = glowOnly ? bloom : bloom + color; +} +`;var JQ=`uniform sampler2D colorTexture; +uniform float brightness; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb; + vec3 target = vec3(0.0); + out_FragColor = vec4(mix(target, rgb, brightness), 1.0); +} +`;var ZQ=`uniform sampler2D colorTexture; +uniform float contrast; +uniform float brightness; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec3 sceneColor = texture(colorTexture, v_textureCoordinates).xyz; + sceneColor = czm_RGBToHSB(sceneColor); + sceneColor.z += brightness; + sceneColor = czm_HSBToRGB(sceneColor); + + float factor = (259.0 * (contrast + 255.0)) / (255.0 * (259.0 - contrast)); + sceneColor = factor * (sceneColor - vec3(0.5)) + vec3(0.5); + out_FragColor = vec4(sceneColor, 1.0); +} +`;var $Q=`uniform sampler2D colorTexture; +uniform sampler2D blurTexture; +uniform sampler2D depthTexture; +uniform float focalDistance; + +in vec2 v_textureCoordinates; + +vec4 toEye(vec2 uv, float depth) +{ + vec2 xy = vec2((uv.x * 2.0 - 1.0), ((1.0 - uv.y) * 2.0 - 1.0)); + vec4 posInCamera = czm_inverseProjection * vec4(xy, depth, 1.0); + posInCamera = posInCamera / posInCamera.w; + return posInCamera; +} + +float computeDepthBlur(float depth) +{ + float f; + if (depth < focalDistance) + { + f = (focalDistance - depth) / (focalDistance - czm_currentFrustum.x); + } + else + { + f = (depth - focalDistance) / (czm_currentFrustum.y - focalDistance); + f = pow(f, 0.1); + } + f *= f; + f = clamp(f, 0.0, 1.0); + return pow(f, 0.5); +} + +void main(void) +{ + float depth = czm_readDepth(depthTexture, v_textureCoordinates); + vec4 posInCamera = toEye(v_textureCoordinates, depth); + float d = computeDepthBlur(-posInCamera.z); + out_FragColor = mix(texture(colorTexture, v_textureCoordinates), texture(blurTexture, v_textureCoordinates), d); +} +`;var ek=`uniform sampler2D depthTexture; + +in vec2 v_textureCoordinates; + +void main(void) +{ + float depth = czm_readDepth(depthTexture, v_textureCoordinates); + out_FragColor = vec4(vec3(depth), 1.0); +} +`;var tk=`uniform sampler2D depthTexture; +uniform float length; +uniform vec4 color; + +in vec2 v_textureCoordinates; + +void main(void) +{ + float directions[3]; + directions[0] = -1.0; + directions[1] = 0.0; + directions[2] = 1.0; + + float scalars[3]; + scalars[0] = 3.0; + scalars[1] = 10.0; + scalars[2] = 3.0; + + float padx = czm_pixelRatio / czm_viewport.z; + float pady = czm_pixelRatio / czm_viewport.w; + +#ifdef CZM_SELECTED_FEATURE + bool selected = false; + for (int i = 0; i < 3; ++i) + { + float dir = directions[i]; + selected = selected || czm_selected(vec2(-padx, dir * pady)); + selected = selected || czm_selected(vec2(padx, dir * pady)); + selected = selected || czm_selected(vec2(dir * padx, -pady)); + selected = selected || czm_selected(vec2(dir * padx, pady)); + if (selected) + { + break; + } + } + if (!selected) + { + out_FragColor = vec4(color.rgb, 0.0); + return; + } +#endif + + float horizEdge = 0.0; + float vertEdge = 0.0; + + for (int i = 0; i < 3; ++i) + { + float dir = directions[i]; + float scale = scalars[i]; + + horizEdge -= texture(depthTexture, v_textureCoordinates + vec2(-padx, dir * pady)).x * scale; + horizEdge += texture(depthTexture, v_textureCoordinates + vec2(padx, dir * pady)).x * scale; + + vertEdge -= texture(depthTexture, v_textureCoordinates + vec2(dir * padx, -pady)).x * scale; + vertEdge += texture(depthTexture, v_textureCoordinates + vec2(dir * padx, pady)).x * scale; + } + + float len = sqrt(horizEdge * horizEdge + vertEdge * vertEdge); + out_FragColor = vec4(color.rgb, len > length ? color.a : 0.0); +} +`;var nk=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +// See slides 142 and 143: +// http://www.gdcvault.com/play/1012459/Uncharted_2__HDR_Lighting + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; + +#ifdef AUTO_EXPOSURE + float exposure = texture(autoExposure, vec2(0.5)).r; + color /= exposure; +#else + color *= vec3(exposure); +#endif + + const float A = 0.22; // shoulder strength + const float B = 0.30; // linear strength + const float C = 0.10; // linear angle + const float D = 0.20; // toe strength + const float E = 0.01; // toe numerator + const float F = 0.30; // toe denominator + + const float white = 11.2; // linear white point value + + vec3 c = ((color * (A * color + C * B) + D * E) / (color * ( A * color + B) + D * F)) - E / F; + float w = ((white * (A * white + C * B) + D * E) / (white * ( A * white + B) + D * F)) - E / F; + + c = czm_inverseGamma(c / w); + out_FragColor = vec4(c, fragmentColor.a); +} +`;var ik=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; + +#ifdef AUTO_EXPOSURE + color /= texture(autoExposure, vec2(0.5)).r; +#else + color *= vec3(exposure); +#endif + color = czm_pbrNeutralTonemapping(color); + color = czm_inverseGamma(color); + + out_FragColor = vec4(color, fragmentColor.a); +} +`;var ok=`in vec2 v_textureCoordinates; + +uniform sampler2D colorTexture; + +const float fxaaQualitySubpix = 0.5; +const float fxaaQualityEdgeThreshold = 0.125; +const float fxaaQualityEdgeThresholdMin = 0.0833; + +void main() +{ + vec2 fxaaQualityRcpFrame = vec2(1.0) / czm_viewport.zw; + vec4 color = FxaaPixelShader( + v_textureCoordinates, + colorTexture, + fxaaQualityRcpFrame, + fxaaQualitySubpix, + fxaaQualityEdgeThreshold, + fxaaQualityEdgeThresholdMin); + float alpha = texture(colorTexture, v_textureCoordinates).a; + out_FragColor = vec4(color.rgb, alpha); +} +`;var _C=`#define SAMPLES 8 + +uniform float delta; +uniform float sigma; +uniform float direction; // 0.0 for x direction, 1.0 for y direction + +uniform sampler2D colorTexture; + +#ifdef USE_STEP_SIZE +uniform float stepSize; +#else +uniform vec2 step; +#endif + +in vec2 v_textureCoordinates; + +// Incremental Computation of the Gaussian: +// https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch40.html + +void main() +{ + vec2 st = v_textureCoordinates; + vec2 dir = vec2(1.0 - direction, direction); + +#ifdef USE_STEP_SIZE + vec2 step = vec2(stepSize * (czm_pixelRatio / czm_viewport.zw)); +#else + vec2 step = step; +#endif + + vec3 g; + g.x = 1.0 / (sqrt(czm_twoPi) * sigma); + g.y = exp((-0.5 * delta * delta) / (sigma * sigma)); + g.z = g.y * g.y; + + vec4 result = texture(colorTexture, st) * g.x; + for (int i = 1; i < SAMPLES; ++i) + { + g.xy *= g.yz; + + vec2 offset = float(i) * dir * step; + result += texture(colorTexture, st - offset) * g.x; + result += texture(colorTexture, st + offset) * g.x; + } + + out_FragColor = result; +} +`;var rk=`uniform sampler2D colorTexture; +uniform sampler2D dirtTexture; +uniform sampler2D starTexture; +uniform vec2 dirtTextureDimensions; +uniform float distortion; +uniform float ghostDispersal; +uniform float haloWidth; +uniform float dirtAmount; +uniform float earthRadius; +uniform float intensity; + +in vec2 v_textureCoordinates; + +// whether it is in space or not +// 6500000.0 is empirical value +#define DISTANCE_TO_SPACE 6500000.0 + +// return ndc from world coordinate biased earthRadius +vec4 getNDCFromWC(vec3 WC, float earthRadius) +{ + vec4 positionEC = czm_view * vec4(WC, 1.0); + positionEC = vec4(positionEC.x + earthRadius, positionEC.y, positionEC.z, 1.0); + vec4 positionWC = czm_eyeToWindowCoordinates(positionEC); + return czm_viewportOrthographic * vec4(positionWC.xy, -positionWC.z, 1.0); +} + +// Check if current pixel is included Earth +// if then mask it gradually +float isInEarth(vec2 texcoord, vec2 sceneSize) +{ + vec2 NDC = texcoord * 2.0 - 1.0; + vec4 earthPosSC = getNDCFromWC(vec3(0.0), 0.0); + vec4 earthPosSCEdge = getNDCFromWC(vec3(0.0), earthRadius * 1.5); + NDC.xy -= earthPosSC.xy; + + float X = abs(NDC.x) * sceneSize.x; + float Y = abs(NDC.y) * sceneSize.y; + + return clamp(0.0, 1.0, max(sqrt(X * X + Y * Y) / max(abs(earthPosSCEdge.x * sceneSize.x), 1.0) - 0.8 , 0.0)); +} + +// For Chromatic effect +vec4 textureDistorted(sampler2D tex, vec2 texcoord, vec2 direction, vec3 distortion, bool isSpace) +{ + vec2 sceneSize = czm_viewport.zw; + vec3 color; + if(isSpace) + { + color.r = isInEarth(texcoord + direction * distortion.r, sceneSize) * texture(tex, texcoord + direction * distortion.r).r; + color.g = isInEarth(texcoord + direction * distortion.g, sceneSize) * texture(tex, texcoord + direction * distortion.g).g; + color.b = isInEarth(texcoord + direction * distortion.b, sceneSize) * texture(tex, texcoord + direction * distortion.b).b; + } + else + { + color.r = texture(tex, texcoord + direction * distortion.r).r; + color.g = texture(tex, texcoord + direction * distortion.g).g; + color.b = texture(tex, texcoord + direction * distortion.b).b; + } + return vec4(clamp(color, 0.0, 1.0), 0.0); +} + +void main(void) +{ + vec4 originalColor = texture(colorTexture, v_textureCoordinates); + vec3 rgb = originalColor.rgb; + bool isSpace = length(czm_viewerPositionWC.xyz) > DISTANCE_TO_SPACE; + + // Sun position + vec4 sunPos = czm_morphTime == 1.0 ? vec4(czm_sunPositionWC, 1.0) : vec4(czm_sunPositionColumbusView.zxy, 1.0); + vec4 sunPositionEC = czm_view * sunPos; + vec4 sunPositionWC = czm_eyeToWindowCoordinates(sunPositionEC); + sunPos = czm_viewportOrthographic * vec4(sunPositionWC.xy, -sunPositionWC.z, 1.0); + + // If sun is not in the screen space, use original color. + if(!isSpace || !((sunPos.x >= -1.1 && sunPos.x <= 1.1) && (sunPos.y >= -1.1 && sunPos.y <= 1.1))) + { + // Lens flare is disabled when not in space until #5932 is fixed. + // https://github.com/CesiumGS/cesium/issues/5932 + out_FragColor = originalColor; + return; + } + + vec2 texcoord = vec2(1.0) - v_textureCoordinates; + vec2 pixelSize = czm_pixelRatio / czm_viewport.zw; + vec2 invPixelSize = 1.0 / pixelSize; + vec3 distortionVec = pixelSize.x * vec3(-distortion, 0.0, distortion); + + // ghost vector to image centre: + vec2 ghostVec = (vec2(0.5) - texcoord) * ghostDispersal; + vec3 direction = normalize(vec3(ghostVec, 0.0)); + + // sample ghosts: + vec4 result = vec4(0.0); + vec4 ghost = vec4(0.0); + for (int i = 0; i < 4; ++i) + { + vec2 offset = fract(texcoord + ghostVec * float(i)); + // Only bright spots from the centre of the source image + ghost += textureDistorted(colorTexture, offset, direction.xy, distortionVec, isSpace); + } + result += ghost; + + // sample halo + vec2 haloVec = normalize(ghostVec) * haloWidth; + float weightForHalo = length(vec2(0.5) - fract(texcoord + haloVec)) / length(vec2(0.5)); + weightForHalo = pow(1.0 - weightForHalo, 5.0); + + result += textureDistorted(colorTexture, texcoord + haloVec, direction.xy, distortionVec, isSpace) * weightForHalo * 1.5; + + // dirt on lens + vec2 dirtTexCoords = (v_textureCoordinates * invPixelSize) / dirtTextureDimensions; + if (dirtTexCoords.x > 1.0) + { + dirtTexCoords.x = mod(floor(dirtTexCoords.x), 2.0) == 1.0 ? 1.0 - fract(dirtTexCoords.x) : fract(dirtTexCoords.x); + } + if (dirtTexCoords.y > 1.0) + { + dirtTexCoords.y = mod(floor(dirtTexCoords.y), 2.0) == 1.0 ? 1.0 - fract(dirtTexCoords.y) : fract(dirtTexCoords.y); + } + result += dirtAmount * texture(dirtTexture, dirtTexCoords); + + // Rotating starburst texture's coordinate + // dot(czm_view[0].xyz, vec3(0.0, 0.0, 1.0)) + dot(czm_view[1].xyz, vec3(0.0, 1.0, 0.0)) + float camrot = czm_view[0].z + czm_view[1].y; + float cosValue = cos(camrot); + float sinValue = sin(camrot); + mat3 rotation = mat3( + cosValue, -sinValue, 0.0, + sinValue, cosValue, 0.0, + 0.0, 0.0, 1.0 + ); + + vec3 st1 = vec3(v_textureCoordinates * 2.0 - vec2(1.0), 1.0); + vec3 st2 = vec3((rotation * st1).xy, 1.0); + vec3 st3 = st2 * 0.5 + vec3(0.5); + vec2 lensStarTexcoord = st3.xy; + float weightForLensFlare = length(vec3(sunPos.xy, 0.0)); + float oneMinusWeightForLensFlare = max(1.0 - weightForLensFlare, 0.0); + + if (!isSpace) + { + result *= oneMinusWeightForLensFlare * intensity * 0.2; + } + else + { + result *= oneMinusWeightForLensFlare * intensity; + result *= texture(starTexture, lensStarTexcoord) * pow(weightForLensFlare, 1.0) * max((1.0 - length(vec3(st1.xy, 0.0))), 0.0) * 2.0; + } + + result += texture(colorTexture, v_textureCoordinates); + + out_FragColor = result; +} +`;var sk=`uniform sampler2D colorTexture; +uniform vec3 white; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +// See equation 4: +// http://www.cs.utah.edu/~reinhard/cdrom/tonemap.pdf + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; +#ifdef AUTO_EXPOSURE + float exposure = texture(autoExposure, vec2(0.5)).r; + color /= exposure; +#else + color *= vec3(exposure); +#endif + color = (color * (1.0 + color / white)) / (1.0 + color); + color = czm_inverseGamma(color); + out_FragColor = vec4(color, fragmentColor.a); +} +`;var ak=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +float rand(vec2 co) +{ + return fract(sin(dot(co.xy ,vec2(12.9898, 78.233))) * 43758.5453); +} + +void main(void) +{ + float noiseValue = rand(v_textureCoordinates + sin(czm_frameNumber)) * 0.1; + vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb; + vec3 green = vec3(0.0, 1.0, 0.0); + out_FragColor = vec4((noiseValue + rgb) * green, 1.0); +} +`;var ck=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +// See equation 3: +// http://www.cs.utah.edu/~reinhard/cdrom/tonemap.pdf + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; +#ifdef AUTO_EXPOSURE + float exposure = texture(autoExposure, vec2(0.5)).r; + color /= exposure; +#else + color *= vec3(exposure); +#endif + color = color / (1.0 + color); + color = czm_inverseGamma(color); + out_FragColor = vec4(color, fragmentColor.a); +} +`;var lk=`uniform sampler2D colorTexture; +uniform sampler2D silhouetteTexture; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec4 silhouetteColor = texture(silhouetteTexture, v_textureCoordinates); + vec4 color = texture(colorTexture, v_textureCoordinates); + out_FragColor = mix(color, silhouetteColor, silhouetteColor.a); +} +`;function WI(){this._uniformMap=void 0,this._command=void 0,this._colorTexture=void 0,this._depthTexture=void 0,this._ready=!1,this._name="czm_autoexposure",this._logDepthChanged=void 0,this._useLogDepth=void 0,this._framebuffers=void 0,this._previousLuminance=new Di,this._commands=void 0,this._clearCommand=void 0,this._minMaxLuminance=new U,this.enabled=!0,this._enabled=!0,this.minimumLuminance=.1,this.maximumLuminance=10}Object.defineProperties(WI.prototype,{ready:{get:function(){return this._ready}},name:{get:function(){return this._name}},outputTexture:{get:function(){let e=this._framebuffers;if(l(e))return e[e.length-1].getColorTexture(0)}}});function ebe(e){let t=e._framebuffers;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].destroy();e._framebuffers=void 0,e._previousLuminance.destroy(),e._previousLuminance=void 0}function NEt(e,t){ebe(e);let n=e._width,i=e._height,o=t.halfFloatingPointTexture?Ve.HALF_FLOAT:Ve.FLOAT,r=Math.ceil(Math.log(Math.max(n,i))/Math.log(3)),s=new Array(r);for(let c=0;c<r;++c)n=Math.max(Math.ceil(n/3),1),i=Math.max(Math.ceil(i/3),1),s[c]=new Di,s[c].update(t,n,i,1,o);let a=s[r-1].getColorTexture(0);e._previousLuminance.update(t,a.width,a.height,1,o),e._framebuffers=s}function tbe(e){let t=e._commands;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].shaderProgram.destroy();e._commands=void 0}function LEt(e,t){let n;if(t===0)n={colorTexture:function(){return e._colorTexture},colorTextureDimensions:function(){return e._colorTexture.dimensions}};else{let i=e._framebuffers[t-1].getColorTexture(0);n={colorTexture:function(){return i},colorTextureDimensions:function(){return i.dimensions}}}return n.minMaxLuminance=function(){return e._minMaxLuminance},n.previousLuminance=function(){return e._previousLuminance.getColorTexture(0)},n}function OEt(e,t){let n=`uniform sampler2D colorTexture; +in vec2 v_textureCoordinates; +float sampleTexture(vec2 offset) { +`;return e===0?n+=` vec4 color = texture(colorTexture, v_textureCoordinates + offset); + return czm_luminance(color.rgb); +`:n+=` return texture(colorTexture, v_textureCoordinates + offset).r; +`,n+=`} + +`,n+=`uniform vec2 colorTextureDimensions; +uniform vec2 minMaxLuminance; +uniform sampler2D previousLuminance; +void main() { + float color = 0.0; + float xStep = 1.0 / colorTextureDimensions.x; + float yStep = 1.0 / colorTextureDimensions.y; + int count = 0; + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + vec2 offset; + offset.x = -xStep + float(i) * xStep; + offset.y = -yStep + float(j) * yStep; + if (offset.x < 0.0 || offset.x > 1.0 || offset.y < 0.0 || offset.y > 1.0) { + continue; + } + color += sampleTexture(offset); + ++count; + } + } + if (count > 0) { + color /= float(count); + } +`,e===t-1&&(n+=` float previous = texture(previousLuminance, vec2(0.5)).r; + color = clamp(color, minMaxLuminance.x, minMaxLuminance.y); + color = previous + (color - previous) / (60.0 * 1.5); + color = clamp(color, minMaxLuminance.x, minMaxLuminance.y); +`),n+=` out_FragColor = vec4(color); +} +`,n}function FEt(e,t){tbe(e);let n=e._framebuffers,i=n.length,o=new Array(i);for(let r=0;r<i;++r)o[r]=t.createViewportQuadCommand(OEt(r,i),{framebuffer:n[r].framebuffer,uniformMap:LEt(e,r)});e._commands=o}WI.prototype.clear=function(e){let t=this._framebuffers;if(!l(t))return;let n=this._clearCommand;l(n)||(n=this._clearCommand=new Ci({color:new G(0,0,0,0),framebuffer:void 0}));let i=t.length;for(let o=0;o<i;++o)t[o].clear(e,n)};WI.prototype.update=function(e){let t=e.drawingBufferWidth,n=e.drawingBufferHeight;(t!==this._width||n!==this._height)&&(this._width=t,this._height=n,NEt(this,e),FEt(this,e),this._ready||(this._ready=!0)),this._minMaxLuminance.x=this.minimumLuminance,this._minMaxLuminance.y=this.maximumLuminance;let i=this._framebuffers,o=i[i.length-1];i[i.length-1]=this._previousLuminance,this._commands[this._commands.length-1].framebuffer=this._previousLuminance.framebuffer,this._previousLuminance=o};WI.prototype.execute=function(e,t){this._colorTexture=t;let n=this._commands;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o)n[o].execute(e)};WI.prototype.isDestroyed=function(){return!1};WI.prototype.destroy=function(){return ebe(this),tbe(this),ue(this)};var uk=WI;var QEt={NEAREST:0,LINEAR:1},Bf=QEt;function jI(e){e=e??V.EMPTY_OBJECT;let{name:t=Xn(),fragmentShader:n,uniforms:i,textureScale:o=1,forcePowerOfTwo:r=!1,sampleMode:s=Bf.NEAREST,pixelFormat:a=$e.RGBA,pixelDatatype:c=Ve.UNSIGNED_BYTE,clearColor:u=G.BLACK,scissorRectangle:f}=e;this._fragmentShader=n,this._uniforms=i,this._textureScale=o,this._forcePowerOfTwo=r,this._sampleMode=s,this._pixelFormat=a,this._pixelDatatype=c,this._clearColor=u,this._uniformMap=void 0,this._command=void 0,this._colorTexture=void 0,this._depthTexture=void 0,this._idTexture=void 0,this._actualUniforms={},this._dirtyUniforms=[],this._texturesToRelease=[],this._texturesToCreate=[],this._texturePromise=void 0;let h=new Xc;h.scissorTest={enabled:!0,rectangle:l(f)?Ye.clone(f):new Ye},this._passState=h,this._ready=!1,this._name=t,this._logDepthChanged=void 0,this._useLogDepth=void 0,this._selectedIdTexture=void 0,this._selected=void 0,this._selectedShadow=void 0,this._parentSelected=void 0,this._parentSelectedShadow=void 0,this._combinedSelected=void 0,this._combinedSelectedShadow=void 0,this._selectedLength=0,this._parentSelectedLength=0,this._selectedDirty=!0,this._textureCache=void 0,this._index=void 0,this.enabled=!0,this._enabled=!0}Object.defineProperties(jI.prototype,{ready:{get:function(){return this._ready}},name:{get:function(){return this._name}},fragmentShader:{get:function(){return this._fragmentShader}},uniforms:{get:function(){return this._uniforms}},textureScale:{get:function(){return this._textureScale}},forcePowerOfTwo:{get:function(){return this._forcePowerOfTwo}},sampleMode:{get:function(){return this._sampleMode}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},clearColor:{get:function(){return this._clearColor}},scissorRectangle:{get:function(){return this._passState.scissorTest.rectangle}},outputTexture:{get:function(){if(l(this._textureCache)){let e=this._textureCache.getFramebuffer(this._name);if(l(e))return e.getColorTexture(0)}}},selected:{get:function(){return this._selected},set:function(e){this._selected=e}},parentSelected:{get:function(){return this._parentSelected},set:function(e){this._parentSelected=e}}});var kEt=/uniform\s+sampler2D\s+depthTexture/g;jI.prototype._isSupported=function(e){return!kEt.test(this._fragmentShader)||e.depthTexture};function UEt(e,t,n){let i=t[n];return(typeof i=="string"||i instanceof HTMLCanvasElement||i instanceof HTMLImageElement||i instanceof HTMLVideoElement||i instanceof ImageData)&&e._dirtyUniforms.push(n),{get:function(){return t[n]},set:function(o){let r=t[n];t[n]=o;let s=e._actualUniforms,a=s[n];l(a)&&a!==r&&a instanceof Mt&&!l(e._textureCache.getStageByName(n))&&(e._texturesToRelease.push(a),delete s[n],delete s[`${n}Dimensions`]),r instanceof Mt&&e._texturesToRelease.push(r),typeof o=="string"||o instanceof HTMLCanvasElement||o instanceof HTMLImageElement||o instanceof HTMLVideoElement||o instanceof ImageData?e._dirtyUniforms.push(n):s[n]=o}}}function GEt(e,t){return function(){let n=e._actualUniforms[t];return typeof n=="function"?n():n}}function zEt(e,t){return function(){let n=e[t]();if(l(n))return n.dimensions}}function VEt(e){if(l(e._uniformMap))return;let t={},n={},i=e._uniforms,o=e._actualUniforms;for(let r in i){if(!i.hasOwnProperty(r))continue;typeof i[r]!="function"?(t[r]=GEt(e,r),n[r]=UEt(e,i,r)):(t[r]=i[r],n[r]=i[r]),o[r]=i[r];let s=t[r]();(typeof s=="string"||s instanceof Mt||s instanceof HTMLImageElement||s instanceof HTMLCanvasElement||s instanceof HTMLVideoElement)&&(t[`${r}Dimensions`]=zEt(t,r))}e._uniforms={},Object.defineProperties(e._uniforms,n),e._uniformMap=Tt(t,{colorTexture:function(){return e._colorTexture},colorTextureDimensions:function(){return e._colorTexture.dimensions},depthTexture:function(){return e._depthTexture},depthTextureDimensions:function(){return e._depthTexture.dimensions},czm_idTexture:function(){return e._idTexture},czm_selectedIdTexture:function(){return e._selectedIdTexture},czm_selectedIdTextureStep:function(){return 1/e._selectedIdTexture.width}})}function HEt(e,t){return e=e.replace(/in\s+vec2\s+v_textureCoordinates;/g,""),`#define CZM_SELECTED_FEATURE +uniform sampler2D czm_idTexture; +uniform sampler2D czm_selectedIdTexture; +uniform float czm_selectedIdTextureStep; +in vec2 v_textureCoordinates; +bool czm_selected(vec2 offset) +{ + bool selected = false; + vec4 id = texture(czm_idTexture, v_textureCoordinates + offset); + for (int i = 0; i < ${t}; ++i) + { + vec4 selectedId = texture(czm_selectedIdTexture, vec2((float(i) + 0.5) * czm_selectedIdTextureStep, 0.5)); + if (all(equal(id, selectedId))) + { + return true; + } + } + return false; +} +bool czm_selected() +{ + return czm_selected(vec2(0.0)); +} + +${e}`}function WEt(e,t){if(l(e._command)&&!e._logDepthChanged&&!e._selectedDirty)return;let n=e._fragmentShader;if(l(e._selectedIdTexture)){let o=e._selectedIdTexture.width;n=HEt(n,o)}let i=new He({defines:[e._useLogDepth?"LOG_DEPTH":""],sources:[n]});e._command=t.createViewportQuadCommand(i,{uniformMap:e._uniformMap,owner:e})}function jEt(e){let t=e._sampleMode,n,i;t===Bf.LINEAR?(n=Zt.LINEAR,i=mi.LINEAR):(n=Zt.NEAREST,i=mi.NEAREST);let o=e._sampler;(!l(o)||o.minificationFilter!==n||o.magnificationFilter!==i)&&(e._sampler=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i}))}function YEt(e,t){return function(n){e._texturesToCreate.push({name:t,source:n})}}function qEt(e,t){return function(){return e._textureCache.getOutputTexture(t)}}function KEt(e,t){let n=e._texturesToRelease;for(let a=0;a<n.length;++a){let c=n[a];c=c&&c.destroy()}n.length=0;let i=e._texturesToCreate;for(let a=0;a<i.length;++a){let{name:c,source:u}=i[a];e._actualUniforms[c]=new Mt({context:t,source:u})}i.length=0;let o=e._dirtyUniforms;if(o.length===0&&!l(e._texturePromise)){e._ready=!0;return}if(o.length===0||l(e._texturePromise))return;let r=e._uniforms,s=[];for(let a=0;a<o.length;++a){let c=o[a],u=r[c],f=e._textureCache.getStageByName(u);if(l(f))e._actualUniforms[c]=qEt(e,u);else if(typeof u=="string"){let h=new we({url:u});s.push(h.fetchImage().then(YEt(e,c)))}else e._texturesToCreate.push({name:c,source:u})}o.length=0,s.length>0?(e._ready=!1,e._texturePromise=Promise.all(s).then(function(){e._ready=!0,e._texturePromise=void 0})):e._ready=!0}function nbe(e){l(e._command)&&(e._command.shaderProgram=e._command.shaderProgram&&e._command.shaderProgram.destroy(),e._command=void 0),e._selectedIdTexture=e._selectedIdTexture&&e._selectedIdTexture.destroy();let t=e._textureCache;if(!l(t))return;let n=e._uniforms,i=e._actualUniforms;for(let o in i){if(!i.hasOwnProperty(o))continue;let r=i[o];r instanceof Mt&&(l(t.getStageByName(n[o]))||r.destroy(),e._dirtyUniforms.push(o))}}function XEt(e){let t=l(e._selected)?e._selected.length:0,n=l(e._parentSelected)?e._parentSelected:0,i=e._selected!==e._selectedShadow||t!==e._selectedLength||e._parentSelected!==e._parentSelectedShadow||n!==e._parentSelectedLength;if(l(e._selected)&&l(e._parentSelected)?e._combinedSelected=e._selected.concat(e._parentSelected):l(e._parentSelected)?e._combinedSelected=e._parentSelected:e._combinedSelected=e._selected,!i&&l(e._combinedSelected)){if(!l(e._combinedSelectedShadow))return!0;for(let o=0;o<e._combinedSelected.length;++o)if(e._combinedSelected[o]!==e._combinedSelectedShadow[o])return!0}return i}function JEt(e,t){if(!e._selectedDirty)return;e._selectedIdTexture=e._selectedIdTexture&&e._selectedIdTexture.destroy(),e._selectedIdTexture=void 0;let n=e._combinedSelected;if(!l(n))return;let i=0;for(let s=0;s<n.length;++s){let a=n[s];l(a.pickIds)?i+=a.pickIds.length:l(a.pickId)&&++i}if(n.length===0||i===0){let s=new Uint8Array([255,255,255,255]);e._selectedIdTexture=new Mt({context:t,pixelFormat:$e.RGBA,pixelDatatype:Ve.UNSIGNED_BYTE,source:{arrayBufferView:s,width:1,height:1},sampler:on.NEAREST});return}let o=0,r=new Uint8Array(i*4);for(let s=0;s<n.length;++s){let a=n[s];if(l(a.pickIds)){let c=a.pickIds,u=c.length;for(let f=0;f<u;++f){let h=c[f].color;r[o]=G.floatToByte(h.red),r[o+1]=G.floatToByte(h.green),r[o+2]=G.floatToByte(h.blue),r[o+3]=G.floatToByte(h.alpha),o+=4}}else if(l(a.pickId)){let c=a.pickId.color;r[o]=G.floatToByte(c.red),r[o+1]=G.floatToByte(c.green),r[o+2]=G.floatToByte(c.blue),r[o+3]=G.floatToByte(c.alpha),o+=4}}e._selectedIdTexture=new Mt({context:t,pixelFormat:$e.RGBA,pixelDatatype:Ve.UNSIGNED_BYTE,source:{arrayBufferView:r,width:i,height:1},sampler:on.NEAREST})}jI.prototype.update=function(e,t){if(this.enabled!==this._enabled&&!this.enabled&&nbe(this),this._enabled=this.enabled,!this._enabled||(this._logDepthChanged=t!==this._useLogDepth,this._useLogDepth=t,this._selectedDirty=XEt(this),this._selectedShadow=this._selected,this._parentSelectedShadow=this._parentSelected,this._combinedSelectedShadow=this._combinedSelected,this._selectedLength=l(this._selected)?this._selected.length:0,this._parentSelectedLength=l(this._parentSelected)?this._parentSelected.length:0,JEt(this,e),VEt(this),KEt(this,e),WEt(this,e),jEt(this),this._selectedDirty=!1,!this._ready))return;let n=this._textureCache.getFramebuffer(this._name);if(this._command.framebuffer=n,!l(n))return;let i=n.getColorTexture(0),o;(i.width!==e.drawingBufferWidth||i.height!==e.drawingBufferHeight)&&(o=this._renderState,(!l(o)||i.width!==o.viewport.width||i.height!==o.viewport.height)&&(this._renderState=Ue.fromCache({viewport:new Ye(0,0,i.width,i.height)}))),this._command.renderState=o};jI.prototype.execute=function(e,t,n,i){if(!l(this._command)||!l(this._command.framebuffer)||!this._ready||!this._enabled)return;this._colorTexture=t,this._depthTexture=n,this._idTexture=i,on.equals(this._colorTexture.sampler,this._sampler)||(this._colorTexture.sampler=this._sampler);let o=this.scissorRectangle.width>0&&this.scissorRectangle.height>0?this._passState:void 0;l(o)&&(o.context=e),this._command.execute(e,o)};jI.prototype.isDestroyed=function(){return!1};jI.prototype.destroy=function(){return nbe(this),ue(this)};var So=jI;function YI(e){e=e??V.EMPTY_OBJECT,this._stages=e.stages,this._inputPreviousStageTexture=e.inputPreviousStageTexture??!0;let t=e.name;l(t)||(t=Xn()),this._name=t,this._uniforms=e.uniforms,this._textureCache=void 0,this._index=void 0,this._selected=void 0,this._selectedShadow=void 0,this._parentSelected=void 0,this._parentSelectedShadow=void 0,this._combinedSelected=void 0,this._combinedSelectedShadow=void 0,this._selectedLength=0,this._parentSelectedLength=0,this._selectedDirty=!0}Object.defineProperties(YI.prototype,{ready:{get:function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)if(!e[n].ready)return!1;return!0}},name:{get:function(){return this._name}},enabled:{get:function(){return this._stages[0].enabled},set:function(e){let t=this._stages,n=t.length;for(let i=0;i<n;++i)t[i].enabled=e}},uniforms:{get:function(){return this._uniforms}},inputPreviousStageTexture:{get:function(){return this._inputPreviousStageTexture}},length:{get:function(){return this._stages.length}},selected:{get:function(){return this._selected},set:function(e){this._selected=e}},parentSelected:{get:function(){return this._parentSelected},set:function(e){this._parentSelected=e}}});YI.prototype._isSupported=function(e){let t=this._stages,n=t.length;for(let i=0;i<n;++i)if(!t[i]._isSupported(e))return!1;return!0};YI.prototype.get=function(e){return this._stages[e]};function ZEt(e){let t=l(e._selected)?e._selected.length:0,n=l(e._parentSelected)?e._parentSelected:0,i=e._selected!==e._selectedShadow||t!==e._selectedLength;if(i=i||e._parentSelected!==e._parentSelectedShadow||n!==e._parentSelectedLength,l(e._selected)&&l(e._parentSelected)?e._combinedSelected=e._selected.concat(e._parentSelected):l(e._parentSelected)?e._combinedSelected=e._parentSelected:e._combinedSelected=e._selected,!i&&l(e._combinedSelected)){if(!l(e._combinedSelectedShadow))return!0;t=e._combinedSelected.length;for(let o=0;o<t;++o)if(e._combinedSelected[o]!==e._combinedSelectedShadow[o])return!0}return i}YI.prototype.update=function(e,t){this._selectedDirty=ZEt(this),this._selectedShadow=this._selected,this._parentSelectedShadow=this._parentSelected,this._combinedSelectedShadow=this._combinedSelected,this._selectedLength=l(this._selected)?this._selected.length:0,this._parentSelectedLength=l(this._parentSelected)?this._parentSelected.length:0;let n=this._stages,i=n.length;for(let o=0;o<i;++o){let r=n[o];this._selectedDirty&&(r.parentSelected=this._combinedSelected),r.update(e,t)}};YI.prototype.isDestroyed=function(){return!1};YI.prototype.destroy=function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var Du=YI;var Xr={};function JJ(e){let o=`#define USE_STEP_SIZE +${_C}`,r=new So({name:`${e}_x_direction`,fragmentShader:o,uniforms:{delta:1,sigma:2,stepSize:1,direction:0},sampleMode:Bf.LINEAR}),s=new So({name:`${e}_y_direction`,fragmentShader:o,uniforms:{delta:1,sigma:2,stepSize:1,direction:1},sampleMode:Bf.LINEAR}),a={};return Object.defineProperties(a,{delta:{get:function(){return r.uniforms.delta},set:function(c){let u=r.uniforms,f=s.uniforms;u.delta=f.delta=c}},sigma:{get:function(){return r.uniforms.sigma},set:function(c){let u=r.uniforms,f=s.uniforms;u.sigma=f.sigma=c}},stepSize:{get:function(){return r.uniforms.stepSize},set:function(c){let u=r.uniforms,f=s.uniforms;u.stepSize=f.stepSize=c}}}),new Du({name:e,stages:[r,s],uniforms:a})}Xr.createBlurStage=function(){return JJ("czm_blur")};Xr.createDepthOfFieldStage=function(){let e=JJ("czm_depth_of_field_blur"),t=new So({name:"czm_depth_of_field_composite",fragmentShader:$Q,uniforms:{focalDistance:5,blurTexture:e.name}}),n={};return Object.defineProperties(n,{focalDistance:{get:function(){return t.uniforms.focalDistance},set:function(i){t.uniforms.focalDistance=i}},delta:{get:function(){return e.uniforms.delta},set:function(i){e.uniforms.delta=i}},sigma:{get:function(){return e.uniforms.sigma},set:function(i){e.uniforms.sigma=i}},stepSize:{get:function(){return e.uniforms.stepSize},set:function(i){e.uniforms.stepSize=i}}}),new Du({name:"czm_depth_of_field",stages:[e,t],inputPreviousStageTexture:!1,uniforms:n})};Xr.isDepthOfFieldSupported=function(e){return e.context.depthTexture};Xr.createEdgeDetectionStage=function(){let e=Xn();return new So({name:`czm_edge_detection_${e}`,fragmentShader:tk,uniforms:{length:.25,color:G.clone(G.BLACK)}})};Xr.isEdgeDetectionSupported=function(e){return e.context.depthTexture};function $Et(e){if(!l(e))return Xr.createEdgeDetectionStage();let t=new Du({name:"czm_edge_detection_multiple",stages:e,inputPreviousStageTexture:!1}),n={},i="",o="";for(let a=0;a<e.length;++a)i+=`uniform sampler2D edgeTexture${a}; +`,o+=` vec4 edge${a} = texture(edgeTexture${a}, v_textureCoordinates); + if (edge${a}.a > 0.0) + { + color = edge${a}; + break; + } +`,n[`edgeTexture${a}`]=e[a].name;let r=`${i}in vec2 v_textureCoordinates; +void main() { + vec4 color = vec4(0.0); + for (int i = 0; i < ${e.length}; i++) + { +${o} } + out_FragColor = color; +} +`,s=new So({name:"czm_edge_detection_combine",fragmentShader:r,uniforms:n});return new Du({name:"czm_edge_detection_composite",stages:[t,s]})}Xr.createSilhouetteStage=function(e){let t=$Et(e),n=new So({name:"czm_silhouette_color_edges",fragmentShader:lk,uniforms:{silhouetteTexture:t.name}});return new Du({name:"czm_silhouette",stages:[t,n],inputPreviousStageTexture:!1,uniforms:t.uniforms})};Xr.isSilhouetteSupported=function(e){return e.context.depthTexture};Xr.createBloomStage=function(){let e=new So({name:"czm_bloom_contrast_bias",fragmentShader:ZQ,uniforms:{contrast:128,brightness:-.3}}),t=JJ("czm_bloom_blur"),n=new Du({name:"czm_bloom_contrast_bias_blur",stages:[e,t]}),i=new So({name:"czm_bloom_generate_composite",fragmentShader:XQ,uniforms:{glowOnly:!1,bloomTexture:n.name}}),o={};return Object.defineProperties(o,{glowOnly:{get:function(){return i.uniforms.glowOnly},set:function(r){i.uniforms.glowOnly=r}},contrast:{get:function(){return e.uniforms.contrast},set:function(r){e.uniforms.contrast=r}},brightness:{get:function(){return e.uniforms.brightness},set:function(r){e.uniforms.brightness=r}},delta:{get:function(){return t.uniforms.delta},set:function(r){t.uniforms.delta=r}},sigma:{get:function(){return t.uniforms.sigma},set:function(r){t.uniforms.sigma=r}},stepSize:{get:function(){return t.uniforms.stepSize},set:function(r){t.uniforms.stepSize=r}}}),new Du({name:"czm_bloom",stages:[n,i],inputPreviousStageTexture:!1,uniforms:o})};Xr.createAmbientOcclusionStage=function(){let e=new So({name:"czm_ambient_occlusion_generate",fragmentShader:YQ,uniforms:{intensity:3,bias:.1,lengthCap:.26,directionCount:8,stepCount:32,randomTexture:void 0}}),t=new So({name:"czm_ambient_occlusion_composite",fragmentShader:qQ,uniforms:{ambientOcclusionOnly:!1,ambientOcclusionTexture:e.name}}),n={};return Object.defineProperties(n,{intensity:{get:function(){return e.uniforms.intensity},set:function(i){e.uniforms.intensity=i}},bias:{get:function(){return e.uniforms.bias},set:function(i){e.uniforms.bias=i}},lengthCap:{get:function(){return e.uniforms.lengthCap},set:function(i){e.uniforms.lengthCap=i}},directionCount:{get:function(){return e.uniforms.directionCount},set:function(i){e.uniforms.directionCount=i}},stepCount:{get:function(){return e.uniforms.stepCount},set:function(i){e.uniforms.stepCount=i}},randomTexture:{get:function(){return e.uniforms.randomTexture},set:function(i){e.uniforms.randomTexture=i}},ambientOcclusionOnly:{get:function(){return t.uniforms.ambientOcclusionOnly},set:function(i){t.uniforms.ambientOcclusionOnly=i}}}),new Du({name:"czm_ambient_occlusion",stages:[e,t],inputPreviousStageTexture:!1,uniforms:n})};Xr.isAmbientOcclusionSupported=function(e){return e.context.depthTexture};var e0t=`#define FXAA_QUALITY_PRESET 39 +${O2} +${ok}`;Xr.createFXAAStage=function(){return new So({name:"czm_FXAA",fragmentShader:e0t,sampleMode:Bf.LINEAR})};Xr.createAcesTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=jQ,new So({name:"czm_aces",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};Xr.createFilmicTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=nk,new So({name:"czm_filmic",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};Xr.createPbrNeutralTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=ik,new So({name:"czm_pbr_neutral",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};Xr.createReinhardTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=ck,new So({name:"czm_reinhard",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};Xr.createModifiedReinhardTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=sk,new So({name:"czm_modified_reinhard",fragmentShader:t,uniforms:{white:G.WHITE,autoExposure:void 0,exposure:1}})};Xr.createAutoExposureStage=function(){return new uk};Xr.createBlackAndWhiteStage=function(){return new So({name:"czm_black_and_white",fragmentShader:KQ,uniforms:{gradations:5}})};Xr.createBrightnessStage=function(){return new So({name:"czm_brightness",fragmentShader:JQ,uniforms:{brightness:.5}})};Xr.createNightVisionStage=function(){return new So({name:"czm_night_vision",fragmentShader:ak})};Xr.createDepthViewStage=function(){return new So({name:"czm_depth_view",fragmentShader:ek})};Xr.createLensFlareStage=function(){return new So({name:"czm_lens_flare",fragmentShader:rk,uniforms:{dirtTexture:fn("Assets/Textures/LensFlare/DirtMask.jpg"),starTexture:fn("Assets/Textures/LensFlare/StarBurst.jpg"),intensity:2,distortion:10,ghostDispersal:.4,haloWidth:.4,dirtAmount:.4,earthRadius:te.WGS84.maximumRadius}})};var Df=Xr;function Zg(e){this._collection=e,this._framebuffers=[],this._stageNameToFramebuffer={},this._width=void 0,this._height=void 0,this._updateDependencies=!1}function dk(e){for(;l(e.length);)e=e.get(e.length-1);return e.name}function ZJ(e,t,n,i,o){if(!i.enabled||!i._isSupported(t))return o;let r=n[i.name]={};if(l(o)){let a=e.getStageByName(o);r[dk(a)]=!0}let s=i.uniforms;if(l(s)){let a=Object.getOwnPropertyNames(s),c=a.length;for(let u=0;u<c;++u){let f=s[a[u]];if(typeof f=="string"){let h=e.getStageByName(f);l(h)&&(r[dk(h)]=!0)}}}return i.name}function fk(e,t,n,i,o){if(l(i.enabled)&&!i.enabled||l(i._isSupported)&&!i._isSupported(t))return o;let r=o,s=!l(i.inputPreviousStageTexture)||i.inputPreviousStageTexture,a=o,c=i.length;for(let h=0;h<c;++h){let A=i.get(h);l(A.length)?a=fk(e,t,n,A,o):a=ZJ(e,t,n,A,o),s&&(o=a)}let u,f;if(s)for(u=1;u<c;++u)f=dk(i.get(u)),l(n[f])||(n[f]={}),n[f][r]=!0;else for(u=1;u<c;++u){f=dk(i.get(u));let h=n[f];for(let A=0;A<u;++A)h[dk(i.get(A))]=!0}return a}function t0t(e,t){let n={};if(l(e.ambientOcclusion)){let i=e.ambientOcclusion,o=e.bloom,r=e._tonemapping,s=e.fxaa,a=fk(e,t,n,i,void 0);a=fk(e,t,n,o,a),a=ZJ(e,t,n,r,a),a=fk(e,t,n,e,a),ZJ(e,t,n,s,a)}else fk(e,t,n,e,void 0);return n}function n0t(e,t,n){let o=e._collection.getStageByName(t),r=o._textureScale,s=o._forcePowerOfTwo,a=o._pixelFormat,c=o._pixelDatatype,u=o._clearColor,f,h,A=e._framebuffers,g=A.length;for(f=0;f<g;++f){if(h=A[f],r!==h.textureScale||s!==h.forcePowerOfTwo||a!==h.pixelFormat||c!==h.pixelDatatype||!G.equals(u,h.clearColor))continue;let m=h.stages,_=m.length,y=!1;for(let C=0;C<_;++C)if(n[m[C]]){y=!0;break}if(!y)break}return l(h)&&f<g?(h.stages.push(t),h):(h={textureScale:r,forcePowerOfTwo:s,pixelFormat:a,pixelDatatype:c,clearColor:u,stages:[t],buffer:new Di({pixelFormat:a,pixelDatatype:c}),clear:void 0},A.push(h),h)}function i0t(e,t){let n=t0t(e._collection,t);for(let i in n)n.hasOwnProperty(i)&&(e._stageNameToFramebuffer[i]=n0t(e,i,n[i]))}function $J(e){let t=e._framebuffers,n=t.length;for(let i=0;i<n;++i)t[i].buffer.destroy()}function o0t(e,t){let n=e._width,i=e._height,o=e._framebuffers,r=o.length;for(let s=0;s<r;++s){let a=o[s],c=a.textureScale,u=Math.ceil(n*c),f=Math.ceil(i*c),h=Math.min(u,f);a.forcePowerOfTwo&&(D.isPowerOfTwo(h)||(h=D.nextPowerOfTwo(h)),u=h,f=h),a.buffer.update(t,u,f),a.clear=new Ci({color:a.clearColor,framebuffer:a.buffer.framebuffer})}}Zg.prototype.updateDependencies=function(){this._updateDependencies=!0};Zg.prototype.update=function(e){let t=this._collection,n=this._updateDependencies,i=l(t.ambientOcclusion)&&t.ambientOcclusion.enabled&&t.ambientOcclusion._isSupported(e),o=l(t.bloom)&&t.bloom.enabled&&t.bloom._isSupported(e),r=l(t._tonemapping)&&t._tonemapping.enabled&&t._tonemapping._isSupported(e),s=l(t.fxaa)&&t.fxaa.enabled&&t.fxaa._isSupported(e),a=!l(t._activeStages)||t._activeStages.length>0||i||o||r||s;if((n||!a&&this._framebuffers.length>0)&&($J(this),this._framebuffers.length=0,this._stageNameToFramebuffer={},this._width=void 0,this._height=void 0),!n&&!a)return;this._framebuffers.length===0&&i0t(this,e);let c=e.drawingBufferWidth,u=e.drawingBufferHeight,f=this._width!==c||this._height!==u;!n&&!f||(this._width=c,this._height=u,this._updateDependencies=!1,$J(this),o0t(this,e))};Zg.prototype.clear=function(e){let t=this._framebuffers;for(let n=0;n<t.length;++n)t[n].clear.execute(e)};Zg.prototype.getStageByName=function(e){return this._collection.getStageByName(e)};Zg.prototype.getOutputTexture=function(e){return this._collection.getOutputTexture(e)};Zg.prototype.getFramebuffer=function(e){let t=this._stageNameToFramebuffer[e];if(l(t))return t.buffer.framebuffer};Zg.prototype.isDestroyed=function(){return!1};Zg.prototype.destroy=function(){return $J(this),ue(this)};var qI=Zg;var r0t={REINHARD:"REINHARD",MODIFIED_REINHARD:"MODIFIED_REINHARD",FILMIC:"FILMIC",ACES:"ACES",PBR_NEUTRAL:"PBR_NEUTRAL"};var $g=Object.freeze(r0t);var eZ=[];function Hl(){let e=Df.createFXAAStage(),t=Df.createAmbientOcclusionStage(),n=Df.createBloomStage();this._autoExposureEnabled=!1,this._autoExposure=Df.createAutoExposureStage(),this._exposure=1,this._tonemapping=void 0,this._tonemapper=void 0,this.tonemapper=$g.PBR_NEUTRAL;let i=this._tonemapping;e.enabled=!1,t.enabled=!1,n.enabled=!1,i.enabled=!1;let o=new qI(this),r={},s=eZ;for(s.push(e,t,n,i);s.length>0;){let c=s.pop();r[c.name]=c,c._textureCache=o;let u=c.length;if(l(u))for(let f=0;f<u;++f)s.push(c.get(f))}this._stages=[],this._activeStages=[],this._previousActiveStages=[],this._randomTexture=void 0;let a=this;t.uniforms.randomTexture=function(){return a._randomTexture},this._ao=t,this._bloom=n,this._fxaa=e,this._aoEnabled=void 0,this._bloomEnabled=void 0,this._tonemappingEnabled=void 0,this._fxaaEnabled=void 0,this._activeStagesChanged=!1,this._stagesRemoved=!1,this._textureCacheDirty=!1,this._stageNames=r,this._textureCache=o}Object.defineProperties(Hl.prototype,{ready:{get:function(){let e=!1,t=this._stages,n=t.length;for(let a=n-1;a>=0;--a){let c=t[a];e=e||c.ready&&c.enabled}let i=this._fxaa,o=this._ao,r=this._bloom,s=this._tonemapping;return e=e||i.ready&&i.enabled,e=e||o.ready&&o.enabled,e=e||r.ready&&r.enabled,e=e||s.ready&&s.enabled,e}},fxaa:{get:function(){return this._fxaa}},ambientOcclusion:{get:function(){return this._ao}},bloom:{get:function(){return this._bloom}},length:{get:function(){return tZ(this),this._stages.length}},outputTexture:{get:function(){let e=this._fxaa;if(e.enabled&&e.ready)return this.getOutputTexture(e.name);let t=this._stages,n=t.length;for(let s=n-1;s>=0;--s){let a=t[s];if(l(a)&&a.ready&&a.enabled)return this.getOutputTexture(a.name)}let i=this._tonemapping;if(i.enabled&&i.ready)return this.getOutputTexture(i.name);let o=this._bloom;if(o.enabled&&o.ready)return this.getOutputTexture(o.name);let r=this._ao;if(r.enabled&&r.ready)return this.getOutputTexture(r.name)}},hasSelected:{get:function(){let e=this._stages.slice();for(;e.length>0;){let t=e.pop();if(!l(t))continue;if(l(t.selected))return!0;let n=t.length;if(l(n))for(let i=0;i<n;++i)e.push(t.get(i))}return!1}},tonemapper:{get:function(){return this._tonemapper},set:function(e){if(this._tonemapper===e)return;l(this._tonemapping)&&(delete this._stageNames[this._tonemapping.name],this._tonemapping.destroy());let t=this._autoExposureEnabled,n;switch(e){case $g.REINHARD:n=Df.createReinhardTonemappingStage(t);break;case $g.MODIFIED_REINHARD:n=Df.createModifiedReinhardTonemappingStage(t);break;case $g.FILMIC:n=Df.createFilmicTonemappingStage(t);break;case $g.PBR_NEUTRAL:n=Df.createPbrNeutralTonemappingStage(t);break;default:n=Df.createAcesTonemappingStage(t);break}if(t){let i=this._autoExposure;n.uniforms.autoExposure=function(){return i.outputTexture}}else n.uniforms.exposure=this._exposure;this._tonemapper=e,this._tonemapping=n,l(this._stageNames)&&(this._stageNames[n.name]=n,n._textureCache=this._textureCache),this._textureCacheDirty=!0}},exposure:{get:function(){return this._exposure},set:function(e){this._tonemapping.uniforms.exposure=e,this._exposure=e}}});function tZ(e){if(!e._stagesRemoved)return;e._stagesRemoved=!1;let t=[],n=e._stages;for(let i=0,o=0;i<n.length;++i){let r=n[i];r&&(r._index=o++,t.push(r))}e._stages=t}Hl.prototype.add=function(e){let t=this._stageNames,n=eZ;for(n.push(e);n.length>0;){let o=n.pop();t[o.name]=o,o._textureCache=this._textureCache;let r=o.length;if(l(r))for(let s=0;s<r;++s)n.push(o.get(s))}let i=this._stages;return e._index=i.length,i.push(e),this._textureCacheDirty=!0,e};Hl.prototype.remove=function(e){if(!this.contains(e))return!1;let t=this._stageNames,n=eZ;for(n.push(e);n.length>0;){let i=n.pop();delete t[i.name];let o=i.length;if(l(o))for(let r=0;r<o;++r)n.push(i.get(r))}return this._stages[e._index]=void 0,this._stagesRemoved=!0,this._textureCacheDirty=!0,e._index=void 0,e._textureCache=void 0,e.destroy(),!0};Hl.prototype.contains=function(e){return l(e)&&l(e._index)&&e._textureCache===this._textureCache};Hl.prototype.get=function(e){return tZ(this),this._stages[e]};Hl.prototype.removeAll=function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)this.remove(e[n]);e.length=0};Hl.prototype.getStageByName=function(e){return this._stageNames[e]};Hl.prototype.update=function(e,t,n){tZ(this);let i=this._activeStages,o=this._activeStages=this._previousActiveStages;this._previousActiveStages=i;let r=this._stages;o.length=r.length;let s=0;for(let C=0;C<r.length;++C){let E=r[C];E.ready&&E.enabled&&E._isSupported(e)&&(o[s++]=E)}o.length=s;let a=s!==i.length;if(!a){for(let C=0;C<s;++C)if(o[C]!==i[C]){a=!0;break}}let c=this._ao,u=this._bloom,f=this._autoExposure,h=this._tonemapping,A=this._fxaa;h.enabled=n;let g=c.enabled&&c._isSupported(e),m=u.enabled&&u._isSupported(e),_=h.enabled&&h._isSupported(e),y=A.enabled&&A._isSupported(e);if((a||this._textureCacheDirty||g!==this._aoEnabled||m!==this._bloomEnabled||_!==this._tonemappingEnabled||y!==this._fxaaEnabled)&&(this._textureCache.updateDependencies(),this._aoEnabled=g,this._bloomEnabled=m,this._tonemappingEnabled=_,this._fxaaEnabled=y,this._textureCacheDirty=!1),l(this._randomTexture)&&!g&&(this._randomTexture.destroy(),this._randomTexture=void 0),!l(this._randomTexture)&&g){let E=new Uint8Array(196608);for(let I=0;I<196608;I+=3)E[I]=Math.floor(Math.random()*255);this._randomTexture=new Mt({context:e,pixelFormat:$e.RGB,pixelDatatype:Ve.UNSIGNED_BYTE,source:{arrayBufferView:E,width:256,height:256},sampler:new on({wrapS:Tn.REPEAT,wrapT:Tn.REPEAT,minificationFilter:Zt.NEAREST,magnificationFilter:mi.NEAREST})})}this._textureCache.update(e),A.update(e,t),c.update(e,t),u.update(e,t),h.update(e,t),this._autoExposureEnabled&&f.update(e,t);for(let C=0;C<r.length;++C)r[C].update(e,t);s=0;for(let C=0;C<r.length;++C){let E=r[C];E.ready&&E.enabled&&E._isSupported(e)&&s++}a=s!==o.length,a&&this.update(e,t,n)};Hl.prototype.clear=function(e){this._textureCache.clear(e),this._autoExposureEnabled&&this._autoExposure.clear(e)};function KI(e){for(;l(e.length);)e=e.get(e.length-1);return e.outputTexture}Hl.prototype.getOutputTexture=function(e){let t=this.getStageByName(e);if(l(t))return KI(t)};function kA(e,t,n,i,o){if(l(e.execute)){e.execute(t,n,i,o);return}if(e.inputPreviousStageTexture){kA(e.get(0),t,n,i,o);for(let r=1;r<e.length;++r)kA(e.get(r),t,KI(e.get(r-1)),i,o)}else for(let r=0;r<e.length;++r)kA(e.get(r),t,n,i,o)}Hl.prototype.execute=function(e,t,n,i){let o=this._activeStages,r=o.length,s=this._fxaa,a=this._ao,c=this._bloom,u=this._autoExposure,f=this._tonemapping,h=a.enabled&&a._isSupported(e),A=c.enabled&&c._isSupported(e),g=this._autoExposureEnabled,m=f.enabled&&f._isSupported(e),_=s.enabled&&s._isSupported(e);if(!_&&!h&&!A&&!m&&r===0)return;let y=t;h&&a.ready&&(kA(a,e,y,n,i),y=KI(a)),A&&c.ready&&(kA(c,e,y,n,i),y=KI(c)),g&&u.ready&&kA(u,e,y,n,i),m&&f.ready&&(kA(f,e,y,n,i),y=KI(f));let C=y;if(r>0){kA(o[0],e,y,n,i);for(let E=1;E<r;++E)kA(o[E],e,KI(o[E-1]),n,i);C=KI(o[r-1])}_&&s.ready&&kA(s,e,C,n,i)};Hl.prototype.copy=function(e,t){if(!l(this._copyColorCommand)){let n=this;this._copyColorCommand=e.createViewportQuadCommand(Bu,{uniformMap:{colorTexture:function(){return n.outputTexture}},owner:this})}this._copyColorCommand.framebuffer=t,this._copyColorCommand.execute(e)};Hl.prototype.isDestroyed=function(){return!1};Hl.prototype.destroy=function(){return this._fxaa.destroy(),this._ao.destroy(),this._bloom.destroy(),this._autoExposure.destroy(),this._tonemapping.destroy(),this.removeAll(),this._textureCache=this._textureCache&&this._textureCache.destroy(),ue(this)};var hk=Hl;var s0t={SHIFT:0,CTRL:1,ALT:2},Da=Object.freeze(s0t);var a0t={LEFT_DOWN:0,LEFT_UP:1,LEFT_CLICK:2,LEFT_DOUBLE_CLICK:3,RIGHT_DOWN:5,RIGHT_UP:6,RIGHT_CLICK:7,MIDDLE_DOWN:10,MIDDLE_UP:11,MIDDLE_CLICK:12,MOUSE_MOVE:15,WHEEL:16,PINCH_START:17,PINCH_END:18,PINCH_MOVE:19},Dn=Object.freeze(a0t);function yC(e,t,n){let i=e._element;if(i===document)return n.x=t.clientX,n.y=t.clientY,n;let o=i.getBoundingClientRect();return n.x=t.clientX-o.left,n.y=t.clientY-o.top,n}function aZ(e,t){let n=e;return l(t)&&(n+=`+${t}`),n}function XI(e){if(e.shiftKey)return Da.SHIFT;if(e.ctrlKey)return Da.CTRL;if(e.altKey)return Da.ALT}var As={LEFT:0,MIDDLE:1,RIGHT:2};function vf(e,t,n,i){function o(r){i(e,r)}Wt.isInternetExplorer()?n.addEventListener(t,o,!1):n.addEventListener(t,o,{capture:!1,passive:!1}),e._removalFunctions.push(function(){n.removeEventListener(t,o,!1)})}function c0t(e){let t=e._element,n=l(t.disableRootEvents)?t:document;Wt.supportsPointerEvents()?(vf(e,"pointerdown",t,m0t),vf(e,"pointerup",t,dbe),vf(e,"pointermove",t,A0t),vf(e,"pointercancel",t,dbe)):(vf(e,"mousedown",t,hbe),vf(e,"mouseup",n,mbe),vf(e,"mousemove",n,Abe),vf(e,"touchstart",t,d0t),vf(e,"touchend",n,abe),vf(e,"touchmove",n,h0t),vf(e,"touchcancel",n,abe)),vf(e,"dblclick",t,u0t);let i;"onwheel"in t?i="wheel":document.onmousewheel!==void 0?i="mousewheel":i="DOMMouseScroll",vf(e,i,t,f0t)}function l0t(e){let t=e._removalFunctions;for(let n=0;n<t.length;++n)t[n]()}var ibe={position:new U};function cZ(e){e._lastSeenTouchEvent=Li()}function lZ(e){return Li()-e._lastSeenTouchEvent>ym.mouseEmulationIgnoreMilliseconds}function sZ(e,t,n){let i=e.x-t.x,o=e.y-t.y;return Math.sqrt(i*i+o*o)<n}function hbe(e,t){if(!lZ(e))return;let n=t.button;e._buttonDown[n]=!0;let i;if(n===As.LEFT)i=Dn.LEFT_DOWN;else if(n===As.MIDDLE)i=Dn.MIDDLE_DOWN;else if(n===As.RIGHT)i=Dn.RIGHT_DOWN;else return;let o=yC(e,t,e._primaryPosition);U.clone(o,e._primaryStartPosition),U.clone(o,e._primaryPreviousPosition);let r=XI(t),s=e.getInputAction(i,r);l(s)&&(U.clone(o,ibe.position),s(ibe),t.preventDefault())}var obe={position:new U},rbe={position:new U};function nZ(e,t,n,i){let o=XI(i),r=e.getInputAction(t,o),s=e.getInputAction(n,o);if(l(r)||l(s)){let a=yC(e,i,e._primaryPosition);if(l(r)&&(U.clone(a,obe.position),r(obe)),l(s)){let c=e._primaryStartPosition;sZ(c,a,e._clickPixelTolerance)&&(U.clone(a,rbe.position),s(rbe))}}}function mbe(e,t){if(!lZ(e))return;let n=t.button;n!==As.LEFT&&n!==As.MIDDLE&&n!==As.RIGHT||(e._buttonDown[As.LEFT]&&(nZ(e,Dn.LEFT_UP,Dn.LEFT_CLICK,t),e._buttonDown[As.LEFT]=!1),e._buttonDown[As.MIDDLE]&&(nZ(e,Dn.MIDDLE_UP,Dn.MIDDLE_CLICK,t),e._buttonDown[As.MIDDLE]=!1),e._buttonDown[As.RIGHT]&&(nZ(e,Dn.RIGHT_UP,Dn.RIGHT_CLICK,t),e._buttonDown[As.RIGHT]=!1))}var iZ={startPosition:new U,endPosition:new U};function Abe(e,t){if(!lZ(e))return;let n=XI(t),i=yC(e,t,e._primaryPosition),o=e._primaryPreviousPosition,r=e.getInputAction(Dn.MOUSE_MOVE,n);l(r)&&(U.clone(o,iZ.startPosition),U.clone(i,iZ.endPosition),r(iZ)),U.clone(i,o),(e._buttonDown[As.LEFT]||e._buttonDown[As.MIDDLE]||e._buttonDown[As.RIGHT])&&t.preventDefault()}var sbe={position:new U};function u0t(e,t){let n=t.button,i;if(n===As.LEFT)i=Dn.LEFT_DOUBLE_CLICK;else return;let o=XI(t),r=e.getInputAction(i,o);l(r)&&(yC(e,t,sbe.position),r(sbe))}function f0t(e,t){let n;if(l(t.deltaY)){let r=t.deltaMode;r===t.DOM_DELTA_PIXEL?n=-t.deltaY:r===t.DOM_DELTA_LINE?n=-t.deltaY*40:n=-t.deltaY*120}else t.detail>0?n=t.detail*-120:n=t.wheelDelta;if(!l(n))return;let i=XI(t),o=e.getInputAction(Dn.WHEEL,i);l(o)&&(o(n),t.preventDefault())}function d0t(e,t){cZ(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i)r=n[i],s=r.identifier,a.set(s,yC(e,r,new U));GH(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,c.set(s,U.clone(a.get(s)))}function abe(e,t){cZ(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i)r=n[i],s=r.identifier,a.remove(s);GH(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,c.remove(s)}var cbe={position:new U},oZ={position1:new U,position2:new U},lbe={position:new U},ube={position:new U},fbe={position:new U};function GH(e,t){let n=XI(t),i=e._positions,o=i.length,r,s,a=e._isPinching;if(o!==1&&e._buttonDown[As.LEFT]){if(e._buttonDown[As.LEFT]=!1,l(e._touchHoldTimer)&&(clearTimeout(e._touchHoldTimer),e._touchHoldTimer=void 0),r=e.getInputAction(Dn.LEFT_UP,n),l(r)&&(U.clone(e._primaryPosition,lbe.position),r(lbe)),o===0&&!e._isTouchHolding&&(s=e.getInputAction(Dn.LEFT_CLICK,n),l(s))){let c=e._primaryStartPosition,u=e._previousPositions.values[0];sZ(c,u,e._clickPixelTolerance)&&(U.clone(e._primaryPosition,ube.position),s(ube))}e._isTouchHolding=!1}if(o===0&&a&&(e._isPinching=!1,r=e.getInputAction(Dn.PINCH_END,n),l(r)&&r()),o===1&&!a){let c=i.values[0];U.clone(c,e._primaryPosition),U.clone(c,e._primaryStartPosition),U.clone(c,e._primaryPreviousPosition),e._buttonDown[As.LEFT]=!0,r=e.getInputAction(Dn.LEFT_DOWN,n),l(r)&&(U.clone(c,cbe.position),r(cbe)),e._touchHoldTimer=setTimeout(function(){if(!e.isDestroyed()&&(e._touchHoldTimer=void 0,e._isTouchHolding=!0,s=e.getInputAction(Dn.RIGHT_CLICK,n),l(s))){let u=e._primaryStartPosition,f=e._previousPositions.values[0];sZ(u,f,e._holdPixelTolerance)&&(U.clone(e._primaryPosition,fbe.position),s(fbe))}},ym.touchHoldDelayMilliseconds),t.preventDefault()}o===2&&!a&&(e._isPinching=!0,r=e.getInputAction(Dn.PINCH_START,n),l(r)&&(U.clone(i.values[0],oZ.position1),U.clone(i.values[1],oZ.position2),r(oZ),t.preventDefault()))}function h0t(e,t){cZ(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i){r=n[i],s=r.identifier;let u=a.get(s);l(u)&&yC(e,r,u)}pbe(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,U.clone(a.get(s),c.get(s))}var rZ={startPosition:new U,endPosition:new U},mk={distance:{startPosition:new U,endPosition:new U},angleAndHeight:{startPosition:new U,endPosition:new U}};function pbe(e,t){let n=XI(t),i=e._positions,o=e._previousPositions,r=i.length,s;if(r===1&&e._buttonDown[As.LEFT]){let a=i.values[0];U.clone(a,e._primaryPosition);let c=e._primaryPreviousPosition;s=e.getInputAction(Dn.MOUSE_MOVE,n),l(s)&&(U.clone(c,rZ.startPosition),U.clone(a,rZ.endPosition),s(rZ)),U.clone(a,c),t.preventDefault()}else if(r===2&&e._isPinching&&(s=e.getInputAction(Dn.PINCH_MOVE,n),l(s))){let a=i.values[0],c=i.values[1],u=o.values[0],f=o.values[1],h=c.x-a.x,A=c.y-a.y,g=Math.sqrt(h*h+A*A)*.25,m=f.x-u.x,_=f.y-u.y,y=Math.sqrt(m*m+_*_)*.25,C=(c.y+a.y)*.125,E=(f.y+u.y)*.125,I=Math.atan2(A,h),b=Math.atan2(_,m);U.fromElements(0,y,mk.distance.startPosition),U.fromElements(0,g,mk.distance.endPosition),U.fromElements(b,E,mk.angleAndHeight.startPosition),U.fromElements(I,C,mk.angleAndHeight.endPosition),s(mk)}}function m0t(e,t){if(t.target.setPointerCapture(t.pointerId),t.pointerType==="touch"){let n=e._positions,i=t.pointerId;n.set(i,yC(e,t,new U)),GH(e,t),e._previousPositions.set(i,U.clone(n.get(i)))}else hbe(e,t)}function dbe(e,t){if(t.pointerType==="touch"){let n=e._positions,i=t.pointerId;n.remove(i),GH(e,t),e._previousPositions.remove(i)}else mbe(e,t)}function A0t(e,t){if(t.pointerType==="touch"){let n=e._positions,i=t.pointerId,o=n.get(i);if(!l(o))return;yC(e,t,o),pbe(e,t);let r=e._previousPositions;U.clone(n.get(i),r.get(i))}else Abe(e,t)}function ym(e){this._inputEvents={},this._buttonDown={[As.LEFT]:!1,[As.MIDDLE]:!1,[As.RIGHT]:!1},this._isPinching=!1,this._isTouchHolding=!1,this._lastSeenTouchEvent=-ym.mouseEmulationIgnoreMilliseconds,this._primaryStartPosition=new U,this._primaryPosition=new U,this._primaryPreviousPosition=new U,this._positions=new vt,this._previousPositions=new vt,this._removalFunctions=[],this._touchHoldTimer=void 0,this._clickPixelTolerance=5,this._holdPixelTolerance=25,this._element=e??document,c0t(this)}ym.prototype.setInputAction=function(e,t,n){let i=aZ(t,n);this._inputEvents[i]=e};ym.prototype.getInputAction=function(e,t){let n=aZ(e,t);return this._inputEvents[n]};ym.prototype.removeInputAction=function(e,t){let n=aZ(e,t);delete this._inputEvents[n]};ym.prototype.isDestroyed=function(){return!1};ym.prototype.destroy=function(){return l0t(this),ue(this)};ym.mouseEmulationIgnoreMilliseconds=800;ym.touchHoldDelayMilliseconds=1500;var Pf=ym;function JI(e){this._scene=e,this._currentTweens=[],this._morphHandler=void 0,this._morphCancelled=!1,this._completeMorph=void 0,this._morphToOrthographic=!1}JI.prototype.completeMorph=function(){l(this._completeMorph)&&this._completeMorph()};JI.prototype.morphTo2D=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;this._previousMode=n.mode,this._morphToOrthographic=n.camera.frustum instanceof An,!(this._previousMode===ie.SCENE2D||this._previousMode===ie.MORPHING)&&(this._scene.morphStart.raiseEvent(this,this._previousMode,ie.SCENE2D,!0),n._mode=ie.MORPHING,n.camera._setTransform(N.IDENTITY),this._previousMode===ie.COLUMBUS_VIEW?q0t(this,e):tIt(this,e,t),e===0&&l(this._completeMorph)&&this._completeMorph())};var p0t=new d,g0t=new d,_0t=new d,y0t=new d,C0t=new d,E0t=new d,I0t=new d,x0t=new Ae,b0t=new N,T0t=new ki,S0t=new An,w0t={position:void 0,direction:void 0,up:void 0,position2D:void 0,direction2D:void 0,up2D:void 0,frustum:void 0};JI.prototype.morphToColumbusView=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;if(this._previousMode=n.mode,this._previousMode===ie.COLUMBUS_VIEW||this._previousMode===ie.MORPHING)return;this._scene.morphStart.raiseEvent(this,this._previousMode,ie.COLUMBUS_VIEW,!0),n.camera._setTransform(N.IDENTITY);let i=p0t,o=g0t,r=_0t;if(e>0)i.x=0,i.y=-1,i.z=1,i=d.multiplyByScalar(d.normalize(i,i),5*t.maximumRadius,i),d.negate(d.normalize(i,o),o),d.cross(d.UNIT_X,o,r);else{let u=n.camera;if(this._previousMode===ie.SCENE2D)d.clone(u.position,i),i.z=u.frustum.right-u.frustum.left,d.negate(d.UNIT_Z,o),d.clone(d.UNIT_Y,r);else{d.clone(u.positionWC,i),d.clone(u.directionWC,o),d.clone(u.upWC,r);let f=t.scaleToGeodeticSurface(i,I0t),h=kt.eastNorthUpToFixedFrame(f,t,b0t);N.inverseTransformation(h,h),n.mapProjection.project(t.cartesianToCartographic(i,x0t),i),N.multiplyByPointAsVector(h,o,o),N.multiplyByPointAsVector(h,r,r)}}let s;this._morphToOrthographic?(s=S0t,s.width=n.camera.frustum.right-n.camera.frustum.left,s.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight):(s=T0t,s.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight,s.fov=D.toRadians(60));let a=w0t;a.position=i,a.direction=o,a.up=r,a.frustum=s;let c=iIt(a);Ak(this,c),this._previousMode===ie.SCENE2D?nIt(this,e,a,c):(a.position2D=N.multiplyByPoint(Co.TRANSFORM_2D,i,y0t),a.direction2D=N.multiplyByPointAsVector(Co.TRANSFORM_2D,o,C0t),a.up2D=N.multiplyByPointAsVector(Co.TRANSFORM_2D,r,E0t),n._mode=ie.MORPHING,wbe(this,e,a,c)),e===0&&l(this._completeMorph)&&this._completeMorph()};var dZ={position:new d,direction:new d,up:new d,frustum:void 0},_be=new ki;JI.prototype.morphTo3D=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;if(this._previousMode=n.mode,!(this._previousMode===ie.SCENE3D||this._previousMode===ie.MORPHING)){if(this._scene.morphStart.raiseEvent(this,this._previousMode,ie.SCENE3D,!0),n._mode=ie.MORPHING,n.camera._setTransform(N.IDENTITY),this._previousMode===ie.SCENE2D)Q0t(this,e,t);else{let i;e>0?(i=dZ,d.fromDegrees(0,0,5*t.maximumRadius,t,i.position),d.negate(i.position,i.direction),d.normalize(i.direction,i.direction),d.clone(d.UNIT_Z,i.up)):i=ybe(this,t);let o,r=n.camera;r.frustum instanceof An?o=r.frustum.clone():(o=_be,o.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight,o.fov=D.toRadians(60)),i.frustum=o;let s=Dbe(i);Ak(this,s),fZ(this,e,i,s)}e===0&&l(this._completeMorph)&&this._completeMorph()}};JI.prototype.isDestroyed=function(){return!1};JI.prototype.destroy=function(){return zH(this),ue(this)};function Ak(e,t){if(e._scene.completeMorphOnUserInput){e._morphHandler=new Pf(e._scene.canvas);let n=function(){e._morphCancelled=!0,e._scene.camera.cancelFlight(),t(e)};e._completeMorph=n,e._morphHandler.setInputAction(n,Dn.LEFT_DOWN),e._morphHandler.setInputAction(n,Dn.MIDDLE_DOWN),e._morphHandler.setInputAction(n,Dn.RIGHT_DOWN),e._morphHandler.setInputAction(n,Dn.WHEEL)}}function zH(e){let t=e._currentTweens;for(let n=0;n<t.length;++n)t[n].cancelTween();e._currentTweens.length=0,e._morphHandler=e._morphHandler&&e._morphHandler.destroy()}var B0t=new Ae,D0t=new d,v0t=new N;function ybe(e,t){let n=e._scene,i=n.camera,o=dZ,r=o.position,s=o.direction,a=o.up,c=n.mapProjection.unproject(i.position,B0t);t.cartographicToCartesian(c,r);let u=t.scaleToGeodeticSurface(r,D0t),f=kt.eastNorthUpToFixedFrame(u,t,v0t);return N.multiplyByPointAsVector(f,i.direction,s),N.multiplyByPointAsVector(f,i.up,a),o}var P0t=new d,R0t=new d,M0t=new d,N0t=new d,L0t=new d,O0t=new d;function fZ(e,t,n,i){t*=.5;let o=e._scene,r=o.camera,s=d.clone(r.position,P0t),a=d.clone(r.direction,R0t),c=d.clone(r.up,M0t),u=N.multiplyByPoint(Co.TRANSFORM_2D_INVERSE,n.position,N0t),f=N.multiplyByPointAsVector(Co.TRANSFORM_2D_INVERSE,n.direction,L0t),h=N.multiplyByPointAsVector(Co.TRANSFORM_2D_INVERSE,n.up,O0t);function A(m){Wd(s,u,m.time,r.position),Wd(a,f,m.time,r.direction),Wd(c,h,m.time,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.right,r.right)}let g=o.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:A,complete:function(){Bbe(e,o,0,1,t,i)}});e._currentTweens.push(g)}var F0t=new An,Cbe=new d,Ebe=new d,Ibe=new d,hZ=new d,xbe=new d,bbe=new d;function Q0t(e,t,n){t/=3;let i=e._scene,o=i.camera,r;t>0?(r=dZ,d.fromDegrees(0,0,5*n.maximumRadius,n,r.position),d.negate(r.position,r.direction),d.normalize(r.direction,r.direction),d.clone(d.UNIT_Z,r.up)):(o.position.z=o.frustum.right-o.frustum.left,r=ybe(e,n));let s;e._morphToOrthographic?(s=F0t,s.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,s.width=o.frustum.right-o.frustum.left):(s=_be,s.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,s.fov=D.toRadians(60)),r.frustum=s;let a=Dbe(r);Ak(e,a);let c;e._morphToOrthographic?c=function(){fZ(e,t,r,a)}:c=function(){Sbe(e,t,r,function(){fZ(e,t,r,a)})},t>0?(i._mode=ie.SCENE2D,o.flyTo({duration:t,destination:d.fromDegrees(0,0,5*n.maximumRadius,n,hZ),complete:function(){i._mode=ie.MORPHING,c()}})):c()}function Wd(e,t,n,i){return d.lerp(e,t,n,i)}function Tbe(e,t,n,i,o){let r=e._scene,s=r.camera;if(s.frustum instanceof An)return;let a=s.frustum.fov,c=D.RADIANS_PER_DEGREE*.5,u=n.position.z*Math.tan(a*.5);s.frustum.far=u/Math.tan(c*.5)+1e7;function f(A){s.frustum.fov=D.lerp(a,c,A.time);let g=u/Math.tan(s.frustum.fov*.5);i(s,g)}let h=r.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:f,complete:function(){s.frustum=n.frustum.clone(),o(e)}});e._currentTweens.push(h)}var k0t=new d,U0t=new d,G0t=new d,uZ=new d,z0t=new d,V0t=new d,H0t=new es,W0t=new In,j0t=new d,Y0t={position:void 0,direction:void 0,up:void 0,frustum:void 0};function q0t(e,t){t*=.5;let n=e._scene,i=n.camera,o=d.clone(i.position,k0t),r=d.clone(i.direction,U0t),s=d.clone(i.up,G0t),a=d.negate(d.UNIT_Z,z0t),c=d.clone(d.UNIT_Y,V0t),u=uZ;if(t>0)d.clone(d.ZERO,uZ),u.z=5*n.ellipsoid.maximumRadius;else{d.clone(o,uZ);let y=W0t;N.multiplyByPoint(Co.TRANSFORM_2D,o,y.origin),N.multiplyByPointAsVector(Co.TRANSFORM_2D,r,y.direction);let C=n.globe;if(l(C)){let E=C.pickWorldCoordinates(y,n,!0,j0t);l(E)&&(N.multiplyByPoint(Co.TRANSFORM_2D_INVERSE,E,u),u.z+=d.distance(o,u))}}let f=H0t;f.right=u.z*.5,f.left=-f.right,f.top=f.right*(n.drawingBufferHeight/n.drawingBufferWidth),f.bottom=-f.top;let h=Y0t;h.position=u,h.direction=a,h.up=c,h.frustum=f;let A=vbe(h);Ak(e,A);function g(y){Wd(o,u,y.time,i.position),Wd(r,a,y.time,i.direction),Wd(s,c,y.time,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right),i._adjustOrthographicFrustum(!0)}function m(y,C){y.position.z=C}let _=n.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:g,complete:function(){Tbe(e,t,h,m,A)}});e._currentTweens.push(_)}var gbe=new Ae,K0t={position:new d,direction:new d,up:new d,position2D:new d,direction2D:new d,up2D:new d,frustum:new es},X0t={position:new d,direction:new d,up:new d,frustum:void 0},J0t=new d,Z0t=new In,$0t=new N,eIt=new d;function tIt(e,t,n){t*=.5;let i=e._scene,o=i.camera,r=K0t;if(t>0)d.clone(d.ZERO,r.position),r.position.z=5*n.maximumRadius,d.negate(d.UNIT_Z,r.direction),d.clone(d.UNIT_Y,r.up);else{n.cartesianToCartographic(o.positionWC,gbe),i.mapProjection.project(gbe,r.position),d.negate(d.UNIT_Z,r.direction),d.clone(d.UNIT_Y,r.up);let h=Z0t;d.clone(r.position2D,h.origin);let A=d.clone(o.directionWC,h.direction),g=n.scaleToGeodeticSurface(o.positionWC,eIt),m=kt.eastNorthUpToFixedFrame(g,n,$0t);N.inverseTransformation(m,m),N.multiplyByPointAsVector(m,A,A),N.multiplyByPointAsVector(Co.TRANSFORM_2D,A,A);let _=i.globe;if(l(_)){let y=_.pickWorldCoordinates(h,i,!0,J0t);if(l(y)){let C=d.distance(r.position2D,y);y.x+=C,d.clone(y,r.position2D)}}}function s(h,A){h.position.x=A}N.multiplyByPoint(Co.TRANSFORM_2D,r.position,r.position2D),N.multiplyByPointAsVector(Co.TRANSFORM_2D,r.direction,r.direction2D),N.multiplyByPointAsVector(Co.TRANSFORM_2D,r.up,r.up2D);let a=r.frustum;a.right=r.position.z*.5,a.left=-a.right,a.top=a.right*(i.drawingBufferHeight/i.drawingBufferWidth),a.bottom=-a.top;let c=X0t;N.multiplyByPoint(Co.TRANSFORM_2D_INVERSE,r.position2D,c.position),d.clone(r.direction,c.direction),d.clone(r.up,c.up),c.frustum=a;let u=vbe(c);Ak(e,u);function f(){Tbe(e,t,r,s,u)}wbe(e,t,r,f)}function Sbe(e,t,n,i){let o=e._scene,r=o.camera,s=r.frustum.right-r.frustum.left;r.frustum=n.frustum.clone();let a=r.frustum.fov,c=D.RADIANS_PER_DEGREE*.5,u=s*Math.tan(a*.5);r.frustum.far=u/Math.tan(c*.5)+1e7,r.frustum.fov=c;function f(A){r.frustum.fov=D.lerp(c,a,A.time),r.position.z=u/Math.tan(r.frustum.fov*.5)}let h=o.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:f,complete:function(){i(e)}});e._currentTweens.push(h)}function nIt(e,t,n,i){t*=.5;let o=e._scene,r=o.camera,s=d.clone(n.position,hZ),a=d.clone(n.direction,xbe),c=d.clone(n.up,bbe);o._mode=ie.MORPHING;function u(){r.frustum=n.frustum.clone();let f=d.clone(r.position,Cbe),h=d.clone(r.direction,Ebe),A=d.clone(r.up,Ibe);f.z=s.z;function g(_){Wd(f,s,_.time,r.position),Wd(h,a,_.time,r.direction),Wd(A,c,_.time,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.right,r.right)}let m=o.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:g,complete:function(){i(e)}});e._currentTweens.push(m)}e._morphToOrthographic?u():Sbe(e,0,n,u)}function wbe(e,t,n,i){let o=e._scene,r=o.camera,s=d.clone(r.position,Cbe),a=d.clone(r.direction,Ebe),c=d.clone(r.up,Ibe),u=d.clone(n.position2D,hZ),f=d.clone(n.direction2D,xbe),h=d.clone(n.up2D,bbe);function A(m){Wd(s,u,m.time,r.position),Wd(a,f,m.time,r.direction),Wd(c,h,m.time,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.right,r.right),r._adjustOrthographicFrustum(!0)}let g=o.tweens.add({duration:t,easingFunction:ms.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:A,complete:function(){Bbe(e,o,1,0,t,i)}});e._currentTweens.push(g)}function Bbe(e,t,n,i,o,r){let s={object:t,property:"morphTime",startValue:n,stopValue:i,duration:o,easingFunction:ms.QUARTIC_OUT};l(r)&&(s.complete=function(){r(e)});let a=t.tweens.addProperty(s);e._currentTweens.push(a)}function Dbe(e){return function(t){let n=t._scene;n._mode=ie.SCENE3D,n.morphTime=ie.getMorphTime(ie.SCENE3D),zH(t);let i=n.camera;(t._previousMode!==ie.MORPHING||t._morphCancelled)&&(t._morphCancelled=!1,d.clone(e.position,i.position),d.clone(e.direction,i.direction),d.clone(e.up,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right),i.frustum=e.frustum.clone());let o=i.frustum;n.frameState.useLogDepth&&(o.near=.1,o.far=1e10);let r=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,ie.SCENE3D,r)}}function vbe(e){return function(t){let n=t._scene;n._mode=ie.SCENE2D,n.morphTime=ie.getMorphTime(ie.SCENE2D),zH(t);let i=n.camera;d.clone(e.position,i.position),i.position.z=n.ellipsoid.maximumRadius*2,d.clone(e.direction,i.direction),d.clone(e.up,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right),i.frustum=e.frustum.clone();let o=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,ie.SCENE2D,o)}}function iIt(e){return function(t){let n=t._scene;n._mode=ie.COLUMBUS_VIEW,n.morphTime=ie.getMorphTime(ie.COLUMBUS_VIEW),zH(t);let i=n.camera;(t._previousModeMode!==ie.MORPHING||t._morphCancelled)&&(t._morphCancelled=!1,d.clone(e.position,i.position),d.clone(e.direction,i.direction),d.clone(e.up,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right));let o=i.frustum;n.frameState.useLogDepth&&(o.near=.1,o.far=1e10);let r=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,ie.COLUMBUS_VIEW,r)}}var pk=JI;var oIt={LEFT_DRAG:0,RIGHT_DRAG:1,MIDDLE_DRAG:2,WHEEL:3,PINCH:4},Ji=Object.freeze(oIt);function va(e,t){let n=`${e}`;return l(t)&&(n+=`+${t}`),n}function rIt(e,t){U.clone(e.distance.startPosition,t.distance.startPosition),U.clone(e.distance.endPosition,t.distance.endPosition),U.clone(e.angleAndHeight.startPosition,t.angleAndHeight.startPosition),U.clone(e.angleAndHeight.endPosition,t.angleAndHeight.endPosition)}function Pbe(e,t,n){let i=va(Ji.PINCH,t),o=e._update,r=e._isDown,s=e._eventStartPosition,a=e._pressTime,c=e._releaseTime;o[i]=!0,r[i]=!1,s[i]=new U;let u=e._movement[i];l(u)||(u=e._movement[i]={}),u.distance={startPosition:new U,endPosition:new U},u.angleAndHeight={startPosition:new U,endPosition:new U},u.prevAngle=0,e._eventHandler.setInputAction(function(f){e._buttonsDown++,r[i]=!0,a[i]=new Date,U.lerp(f.position1,f.position2,.5,s[i])},Dn.PINCH_START,t),e._eventHandler.setInputAction(function(){e._buttonsDown=Math.max(e._buttonsDown-1,0),r[i]=!1,c[i]=new Date},Dn.PINCH_END,t),e._eventHandler.setInputAction(function(f){if(r[i]){o[i]?(rIt(f,u),o[i]=!1,u.prevAngle=u.angleAndHeight.startPosition.x):(U.clone(f.distance.endPosition,u.distance.endPosition),U.clone(f.angleAndHeight.endPosition,u.angleAndHeight.endPosition));let h=u.angleAndHeight.endPosition.x,A=u.prevAngle,g=Math.PI*2;for(;h>=A+Math.PI;)h-=g;for(;h<A-Math.PI;)h+=g;u.angleAndHeight.endPosition.x=-h*n.clientWidth/12,u.angleAndHeight.startPosition.x=-A*n.clientWidth/12}},Dn.PINCH_MOVE,t)}function Rbe(e,t){let n=va(Ji.WHEEL,t),i=e._pressTime,o=e._releaseTime,r=e._update;r[n]=!0;let s=e._movement[n];l(s)||(s=e._movement[n]={});let a=e._lastMovement[n];l(a)||(a=e._lastMovement[n]={startPosition:new U,endPosition:new U,valid:!1}),s.startPosition=new U,U.clone(U.ZERO,s.startPosition),s.endPosition=new U,e._eventHandler.setInputAction(function(c){let u=7.5*D.toRadians(c);i[n]=o[n]=new Date,s.endPosition.x=0,s.endPosition.y=u,U.clone(s.endPosition,a.endPosition),a.valid=!0,r[n]=!1},Dn.WHEEL,t)}function ww(e,t,n){let i=va(n,t),o=e._isDown,r=e._eventStartPosition,s=e._pressTime;o[i]=!1,r[i]=new U;let a=e._lastMovement[i];l(a)||(a=e._lastMovement[i]={startPosition:new U,endPosition:new U,valid:!1});let c,u;n===Ji.LEFT_DRAG?(c=Dn.LEFT_DOWN,u=Dn.LEFT_UP):n===Ji.RIGHT_DRAG?(c=Dn.RIGHT_DOWN,u=Dn.RIGHT_UP):n===Ji.MIDDLE_DRAG&&(c=Dn.MIDDLE_DOWN,u=Dn.MIDDLE_UP),e._eventHandler.setInputAction(function(f){e._buttonsDown++,a.valid=!1,o[i]=!0,s[i]=new Date,U.clone(f.position,r[i])},c,t),e._eventHandler.setInputAction(function(){mZ(va(n,void 0),e);for(let f of Object.values(Da)){let h=va(n,f);mZ(h,e)}},u,t)}function mZ(e,t){let n=t._releaseTime,i=t._isDown;i[e]&&(t._buttonsDown=Math.max(t._buttonsDown-1,0)),i[e]=!1,n[e]=new Date}function Mbe(e,t){U.clone(e.startPosition,t.startPosition),U.clone(e.endPosition,t.endPosition)}function sIt(e,t,n){let i=n._isDown,o=!1,r=va(e,t);for(let[c,u]of Object.entries(i))c.startsWith(e)&&u&&c!==r&&(o=!0,mZ(c,n));if(!o)return;let s=n._pressTime,a=n._lastMovement[r];l(a)||(a=n._lastMovement[r]={startPosition:new U,endPosition:new U,valid:!1}),n._buttonsDown++,a.valid=!1,i[r]=!0,s[r]=new Date}function Nbe(e,t){let n=e._update,i=e._movement,o=e._lastMovement,r=e._isDown;for(let s in Ji)if(Ji.hasOwnProperty(s)){let a=Ji[s];if(l(a)){let c=va(a,t);n[c]=!0,l(e._lastMovement[c])||(e._lastMovement[c]={startPosition:new U,endPosition:new U,valid:!1}),l(e._movement[c])||(e._movement[c]={startPosition:new U,endPosition:new U})}}e._eventHandler.setInputAction(function(s){for(let a in Ji)if(Ji.hasOwnProperty(a)){let c=Ji[a];if(l(c)){let u=va(c,t);sIt(c,t,e),r[u]&&(n[u]?(Mbe(i[u],o[u]),o[u].valid=!0,Mbe(s,i[u]),n[u]=!1):U.clone(s.endPosition,i[u].endPosition))}}U.clone(s.endPosition,e._currentMousePosition)},Dn.MOUSE_MOVE,t)}function jd(e){this._eventHandler=new Pf(e),this._update={},this._movement={},this._lastMovement={},this._isDown={},this._eventStartPosition={},this._pressTime={},this._releaseTime={},this._buttonsDown=0,this._currentMousePosition=new U,Rbe(this,void 0),Pbe(this,void 0,e),ww(this,void 0,Ji.LEFT_DRAG),ww(this,void 0,Ji.RIGHT_DRAG),ww(this,void 0,Ji.MIDDLE_DRAG),Nbe(this,void 0);for(let t in Da)if(Da.hasOwnProperty(t)){let n=Da[t];l(n)&&(Rbe(this,n),Pbe(this,n,e),ww(this,n,Ji.LEFT_DRAG),ww(this,n,Ji.RIGHT_DRAG),ww(this,n,Ji.MIDDLE_DRAG),Nbe(this,n))}}Object.defineProperties(jd.prototype,{currentMousePosition:{get:function(){return this._currentMousePosition}},anyButtonDown:{get:function(){let e=!this._update[va(Ji.WHEEL)]||!this._update[va(Ji.WHEEL,Da.SHIFT)]||!this._update[va(Ji.WHEEL,Da.CTRL)]||!this._update[va(Ji.WHEEL,Da.ALT)];return this._buttonsDown>0||e}}});jd.prototype.isMoving=function(e,t){let n=va(e,t);return!this._update[n]};jd.prototype.getMovement=function(e,t){let n=va(e,t);return this._movement[n]};jd.prototype.getLastMovement=function(e,t){let n=va(e,t),i=this._lastMovement[n];if(i.valid)return i};jd.prototype.isButtonDown=function(e,t){let n=va(e,t);return this._isDown[n]};jd.prototype.getStartMousePosition=function(e,t){if(e===Ji.WHEEL)return this._currentMousePosition;let n=va(e,t);return this._eventStartPosition[n]};jd.prototype.getButtonPressTime=function(e,t){let n=va(e,t);return this._pressTime[n]};jd.prototype.getButtonReleaseTime=function(e,t){let n=va(e,t);return this._releaseTime[n]};jd.prototype.reset=function(){for(let e in this._update)this._update.hasOwnProperty(e)&&(this._update[e]=!0)};jd.prototype.isDestroyed=function(){return!1};jd.prototype.destroy=function(){return this._eventHandler=this._eventHandler&&this._eventHandler.destroy(),ue(this)};var gk=jd;function VH(e,t,n,i,o,r,s,a,c,u){this._tweens=e,this._tweenjs=t,this._startObject=ze(n),this._stopObject=ze(i),this._duration=o,this._delay=r,this._easingFunction=s,this._update=a,this._complete=c,this.cancel=u,this.needsStart=!0}Object.defineProperties(VH.prototype,{startObject:{get:function(){return this._startObject}},stopObject:{get:function(){return this._stopObject}},duration:{get:function(){return this._duration}},delay:{get:function(){return this._delay}},easingFunction:{get:function(){return this._easingFunction}},update:{get:function(){return this._update}},complete:{get:function(){return this._complete}},tweenjs:{get:function(){return this._tweenjs}}});VH.prototype.cancelTween=function(){this._tweens.remove(this)};function Cm(){this._tweens=[]}Object.defineProperties(Cm.prototype,{length:{get:function(){return this._tweens.length}}});Cm.prototype.add=function(e){if(e=e??V.EMPTY_OBJECT,e.duration===0)return l(e.complete)&&e.complete(),new VH(this);let t=e.duration/ri.SECONDS_PER_MILLISECOND,n=e.delay??0,i=n/ri.SECONDS_PER_MILLISECOND,o=e.easingFunction??ms.LINEAR_NONE,r=e.startObject,s=new _Ee(r);s.to(ze(e.stopObject),t),s.delay(i),s.easing(o),l(e.update)&&s.onUpdate(function(){e.update(r)}),s.onComplete(e.complete??null),s.repeat(e._repeat??0);let a=new VH(this,s,e.startObject,e.stopObject,e.duration,n,o,e.update,e.complete,e.cancel);return this._tweens.push(a),a};Cm.prototype.addProperty=function(e){e=e??V.EMPTY_OBJECT;let t=e.object,n=e.property,i=e.startValue,o=e.stopValue;function r(s){t[n]=s.value}return this.add({startObject:{value:i},stopObject:{value:o},duration:e.duration??3,delay:e.delay,easingFunction:e.easingFunction,update:r,complete:e.complete,cancel:e.cancel,_repeat:e._repeat})};Cm.prototype.addAlpha=function(e){e=e??V.EMPTY_OBJECT;let t=e.material,n=[];for(let o in t.uniforms)t.uniforms.hasOwnProperty(o)&&l(t.uniforms[o])&&l(t.uniforms[o].alpha)&&n.push(o);function i(o){let r=n.length;for(let s=0;s<r;++s)t.uniforms[n[s]].alpha=o.alpha}return this.add({startObject:{alpha:e.startValue??0},stopObject:{alpha:e.stopValue??1},duration:e.duration??3,delay:e.delay,easingFunction:e.easingFunction,update:i,complete:e.complete,cancel:e.cancel})};Cm.prototype.addOffsetIncrement=function(e){e=e??V.EMPTY_OBJECT;let n=e.material.uniforms;return this.addProperty({object:n,property:"offset",startValue:n.offset,stopValue:n.offset+1,duration:e.duration,delay:e.delay,easingFunction:e.easingFunction,update:e.update,cancel:e.cancel,_repeat:1/0})};Cm.prototype.remove=function(e){if(!l(e))return!1;let t=this._tweens.indexOf(e);return t!==-1?(e.tweenjs.stop(),l(e.cancel)&&e.cancel(),this._tweens.splice(t,1),!0):!1};Cm.prototype.removeAll=function(){let e=this._tweens;for(let t=0;t<e.length;++t){let n=e[t];n.tweenjs.stop(),l(n.cancel)&&n.cancel()}e.length=0};Cm.prototype.contains=function(e){return l(e)&&this._tweens.indexOf(e)!==-1};Cm.prototype.get=function(e){return this._tweens[e]};Cm.prototype.update=function(e){let t=this._tweens,n=0;for(e=l(e)?e/ri.SECONDS_PER_MILLISECOND:Li();n<t.length;){let i=t[n],o=i.tweenjs;i.needsStart?(i.needsStart=!1,o.start(e)):o.update(e)?n++:(o.stop(),t.splice(n,1))}};var ZI=Cm;function yk(e){this.enableInputs=!0,this.enableTranslate=!0,this.enableZoom=!0,this.enableRotate=!0,this.enableTilt=!0,this.enableLook=!0,this.inertiaSpin=.9,this.inertiaTranslate=.9,this.inertiaZoom=.8,this.maximumMovementRatio=.1,this.bounceAnimationTime=3,this.minimumZoomDistance=1,this.maximumZoomDistance=Number.POSITIVE_INFINITY,this.zoomFactor=5,this.translateEventTypes=Ji.LEFT_DRAG,this.zoomEventTypes=[Ji.RIGHT_DRAG,Ji.WHEEL,Ji.PINCH],this.rotateEventTypes=Ji.LEFT_DRAG,this.tiltEventTypes=[Ji.MIDDLE_DRAG,Ji.PINCH,{eventType:Ji.LEFT_DRAG,modifier:Da.CTRL},{eventType:Ji.RIGHT_DRAG,modifier:Da.CTRL}],this.lookEventTypes={eventType:Ji.LEFT_DRAG,modifier:Da.SHIFT};let t=e.ellipsoid??te.default;this.minimumPickingTerrainHeight=te.WGS84.equals(t)?15e4:t.minimumRadius*.025,this._minimumPickingTerrainHeight=this.minimumPickingTerrainHeight,this.minimumPickingTerrainDistanceWithInertia=te.WGS84.equals(t)?4e3:t.minimumRadius*63e-5,this.minimumCollisionTerrainHeight=te.WGS84.equals(t)?15e3:t.minimumRadius*.0025,this._minimumCollisionTerrainHeight=this.minimumCollisionTerrainHeight,this.minimumTrackBallHeight=te.WGS84.equals(t)?75e5:t.minimumRadius*1.175,this._minimumTrackBallHeight=this.minimumTrackBallHeight,this.enableCollisionDetection=!0,this.maximumTiltAngle=void 0,this._scene=e,this._globe=void 0,this._ellipsoid=t,this._lastGlobeHeight=0,this._aggregator=new gk(e.canvas),this._lastInertiaSpinMovement=void 0,this._lastInertiaZoomMovement=void 0,this._lastInertiaTranslateMovement=void 0,this._lastInertiaTiltMovement=void 0,this._inertiaDisablers={_lastInertiaZoomMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement","_lastInertiaTiltMovement"],_lastInertiaTiltMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement"]},this._tweens=new ZI,this._tween=void 0,this._horizontalRotationAxis=void 0,this._tiltCenterMousePosition=new U(-1,-1),this._tiltCenter=new d,this._rotateMousePosition=new U(-1,-1),this._rotateStartPosition=new d,this._strafeStartPosition=new d,this._strafeMousePosition=new U,this._strafeEndMousePosition=new U,this._zoomMouseStart=new U(-1,-1),this._zoomWorldPosition=new d,this._useZoomWorldPosition=!1,this._panLastMousePosition=new U,this._panLastWorldPosition=new d,this._tiltCVOffMap=!1,this._looking=!1,this._rotating=!1,this._strafing=!1,this._zoomingOnVector=!1,this._zoomingUnderground=!1,this._rotatingZoom=!1,this._adjustedHeightForTerrain=!1,this._cameraUnderground=!1;let n=e.mapProjection;this._maxCoord=n.project(new Ae(Math.PI,D.PI_OVER_TWO)),this._rotateFactor=void 0,this._rotateRateRangeAdjustment=void 0,this._maximumRotateRate=1.77,this._minimumRotateRate=1/5e3,this._minimumZoomRate=20,this._maximumZoomRate=5906376272e3,this._minimumUndergroundPickDistance=2e3,this._maximumUndergroundPickDistance=1e4}function aIt(e,t){if(e<0)return 0;let n=(1-t)*25;return Math.exp(-n*e)}function cIt(e){return U.equalsEpsilon(e.startPosition,e.endPosition,D.EPSILON14)}var lIt=.4;function uIt(e,t,n,i,o,r,s){let a=r[s];l(a)||(a=r[s]={startPosition:new U,endPosition:new U,motion:new U,inertiaEnabled:!0});let c=e.getButtonPressTime(t,n),u=e.getButtonReleaseTime(t,n),f=c&&u&&(u.getTime()-c.getTime())/1e3,A=u&&(new Date().getTime()-u.getTime())/1e3;if(c&&u&&f<lIt){let g=aIt(A,i),m=e.getLastMovement(t,n);if(!l(m)||cIt(m)||!a.inertiaEnabled||(a.motion.x=(m.endPosition.x-m.startPosition.x)*.5,a.motion.y=(m.endPosition.y-m.startPosition.y)*.5,a.startPosition=U.clone(m.startPosition,a.startPosition),a.endPosition=U.multiplyByScalar(a.motion,g,a.endPosition),a.endPosition=U.add(a.startPosition,a.endPosition,a.endPosition),isNaN(a.endPosition.x)||isNaN(a.endPosition.y)||U.distance(a.startPosition,a.endPosition)<.5))return;if(!e.isButtonDown(t,n)){let _=e.getStartMousePosition(t,n);o(r,_,a)}}}function fIt(e,t){if(l(t)){let n=e[t];l(n)&&(n.inertiaEnabled=!0);let i=e._inertiaDisablers[t];if(l(i)){let o=i.length;for(let r=0;r<o;++r)n=e[i[r]],l(n)&&(n.inertiaEnabled=!1)}}}var Lbe=[];function Wl(e,t,n,i,o,r){if(!l(n))return;let s=e._aggregator;Array.isArray(n)||(Lbe[0]=n,n=Lbe);let a=n.length;for(let c=0;c<a;++c){let u=n[c],f=l(u.eventType)?u.eventType:u,h=u.modifier,A=s.isMoving(f,h)&&s.getMovement(f,h),g=s.getStartMousePosition(f,h);e.enableInputs&&t&&(A?(i(e,g,A),fIt(e,r)):o<1&&uIt(s,f,h,o,i,e,r))}}var HH=new In,dIt=new d,hIt=new U,mIt=new d,AIt=new U,pIt=new d,gIt=new d,_It=new d,yIt=new d,Ybe=new d,CIt=new d,EIt=new d,IIt=new d,xIt=new d,bIt=new d,TIt=new d,SIt=new d,wIt=new d,BIt=new d,DIt=new d,$I=new d,Obe=new d,Fbe=new d,AZ={orientation:new rc};function xZ(e,t,n,i,o,r){let s=1;l(r)&&(s=D.clamp(Math.abs(r),.25,1));let a=n.endPosition.y-n.startPosition.y,u=a>0?e.minimumZoomDistance*s:0,f=e.maximumZoomDistance,h=o-u,A=i*h;A=D.clamp(A,e._minimumZoomRate,e._maximumZoomRate);let g=a/e._scene.canvas.clientHeight;g=Math.min(g,e.maximumMovementRatio);let m=A*g;if(e.enableCollisionDetection||e.minimumZoomDistance===0||!l(e._globe)){if(m>0&&Math.abs(o-u)<1||m<0&&Math.abs(o-f)<1)return;o-m<u?m=o-u-1:o-m>f&&(m=o-f)}let _=e._scene,y=_.camera,C=_.mode,E=AZ.orientation;E.heading=y.heading,E.pitch=y.pitch,E.roll=y.roll;let I=n.inertiaEnabled??U.equals(t,e._zoomMouseStart),b=e._zoomingOnVector,S=e._rotatingZoom,B;if(I||(e._zoomMouseStart=U.clone(t,e._zoomMouseStart),l(e._globe)&&C===ie.SCENE2D?(B=y.getPickRay(t,HH).origin,B=d.fromElements(B.y,B.z,B.x)):l(e._globe)&&(B=e_(e,t,dIt)),l(B)?(e._useZoomWorldPosition=!0,e._zoomWorldPosition=d.clone(B,e._zoomWorldPosition)):e._useZoomWorldPosition=!1,b=e._zoomingOnVector=!1,S=e._rotatingZoom=!1,e._zoomingUnderground=e._cameraUnderground),!e._useZoomWorldPosition){y.zoomIn(m);return}let v=C===ie.COLUMBUS_VIEW;if(y.positionCartographic.height<2e6&&(S=!0),!I||S){if(C===ie.SCENE2D){let P=e._zoomWorldPosition,M=y.position;if(!d.equals(P,M)&&y.positionCartographic.height<e._maxCoord.x*2){let L=y.position.x,p=d.subtract(P,M,mIt);d.normalize(p,p);let x=d.distance(P,M)*m/(y.getMagnitude()*.5);y.move(p,x*.5),(y.position.x<0&&L>0||y.position.x>0&&L<0)&&(B=y.getPickRay(t,HH).origin,B=d.fromElements(B.y,B.z,B.x),e._zoomWorldPosition=d.clone(B,e._zoomWorldPosition))}}else if(C===ie.SCENE3D){let P=d.normalize(y.position,Ybe);if(e._cameraUnderground||e._zoomingUnderground||y.positionCartographic.height<3e3&&Math.abs(d.dot(y.direction,P))<.6)v=!0;else{let M=_.canvas,L=AIt;L.x=M.clientWidth/2,L.y=M.clientHeight/2;let p=e_(e,L,pIt);if(!l(p))v=!0;else if(y.positionCartographic.height<1e6)if(d.dot(y.direction,P)>=-.5)v=!0;else{let x=EIt;d.clone(y.position,x);let T=e._zoomWorldPosition,w=CIt;if(w=d.normalize(T,w),d.dot(w,P)<0)return;let R=DIt,O=bIt;d.clone(y.direction,O),d.add(x,d.multiplyByScalar(O,1e3,$I),R);let k=TIt,Q=SIt;d.subtract(T,x,k),d.normalize(k,Q);let z=d.dot(P,Q);if(z>=0){e._zoomMouseStart.x=-1;return}let F=Math.acos(-z),H=d.magnitude(x),W=d.magnitude(T),Z=H-m,Y=d.magnitude(k),$=Math.asin(D.clamp(Y/W*Math.sin(F),-1,1)),X=Math.asin(D.clamp(Z/W*Math.sin(F),-1,1)),he=$-X+F,ge=IIt;d.normalize(x,ge);let fe=xIt;fe=d.cross(Q,ge,fe),fe=d.normalize(fe,fe),d.normalize(d.cross(ge,fe,$I),O),d.multiplyByScalar(d.normalize(R,$I),d.magnitude(R)-m,R),d.normalize(x,x),d.multiplyByScalar(x,Z,x);let ye=wIt;d.multiplyByScalar(d.add(d.multiplyByScalar(ge,Math.cos(he)-1,Obe),d.multiplyByScalar(O,Math.sin(he),Fbe),$I),Z,ye),d.add(x,ye,x),d.normalize(R,ge),d.normalize(d.cross(ge,fe,$I),O);let xe=BIt;d.multiplyByScalar(d.add(d.multiplyByScalar(ge,Math.cos(he)-1,Obe),d.multiplyByScalar(O,Math.sin(he),Fbe),$I),d.magnitude(R),xe),d.add(R,xe,R),d.clone(x,y.position),d.normalize(d.subtract(R,x,$I),y.direction),d.clone(y.direction,y.direction),d.cross(y.direction,y.up,y.right),d.cross(y.right,y.direction,y.up),y.setView(AZ);return}else{let x=d.normalize(p,gIt),T=d.normalize(e._zoomWorldPosition,_It),w=d.dot(T,x);if(w>0&&w<1){let R=D.acosClamped(w),O=d.cross(T,x,yIt),k=Math.abs(R)>D.toRadians(20)?y.positionCartographic.height*.75:y.positionCartographic.height-m,Q=m/k;y.rotate(O,R*Q)}}}}e._rotatingZoom=!v}if(!I&&v||b){let P,M=eo.worldToWindowCoordinates(_,e._zoomWorldPosition,hIt);C!==ie.COLUMBUS_VIEW&&U.equals(t,e._zoomMouseStart)&&l(M)?P=y.getPickRay(M,HH):P=y.getPickRay(t,HH);let L=P.direction;(C===ie.COLUMBUS_VIEW||C===ie.SCENE2D)&&d.fromElements(L.y,L.z,L.x,L),y.move(L,m),e._zoomingOnVector=!0}else y.zoomIn(m);e._cameraUnderground||y.setView(AZ)}var vIt=new In,PIt=new In,RIt=new d;function MIt(e,t,n){let o=e._scene.camera,r=o.getPickRay(n.startPosition,vIt).origin,s=o.getPickRay(n.endPosition,PIt).origin;r=d.fromElements(r.y,r.z,r.x,r),s=d.fromElements(s.y,s.z,s.x,s);let a=d.subtract(r,s,RIt),c=d.magnitude(a);c>0&&(d.normalize(a,a),o.move(a,c))}function Qbe(e,t,n){l(n.distance)&&(n=n.distance);let o=e._scene.camera;xZ(e,t,n,e.zoomFactor,o.getMagnitude())}var NIt=new U,LIt=new U;function kbe(e,t,n){if(l(n.angleAndHeight)){OIt(e,t,n.angleAndHeight);return}let i=e._scene,o=i.camera,r=i.canvas,s=r.clientWidth,a=r.clientHeight,c=NIt;c.x=2/s*n.startPosition.x-1,c.y=2/a*(a-n.startPosition.y)-1,c=U.normalize(c,c);let u=LIt;u.x=2/s*n.endPosition.x-1,u.y=2/a*(a-n.endPosition.y)-1,u=U.normalize(u,u);let f=D.acosClamped(c.x);c.y<0&&(f=D.TWO_PI-f);let h=D.acosClamped(u.x);u.y<0&&(h=D.TWO_PI-h);let A=h-f;o.twistRight(A)}function OIt(e,t,n){let i=e._rotateFactor*e._rotateRateRangeAdjustment;i>e._maximumRotateRate&&(i=e._maximumRotateRate),i<e._minimumRotateRate&&(i=e._minimumRotateRate);let o=e._scene,r=o.camera,s=o.canvas,a=(n.endPosition.x-n.startPosition.x)/s.clientWidth;a=Math.min(a,e.maximumMovementRatio);let c=i*a*Math.PI*4;r.twistRight(c)}function FIt(e){let t=e._scene.mapMode2D===wu.ROTATE;N.equals(N.IDENTITY,e._scene.camera.transform)?(Wl(e,e.enableTranslate,e.translateEventTypes,MIt,e.inertiaTranslate,"_lastInertiaTranslateMovement"),Wl(e,e.enableZoom,e.zoomEventTypes,Qbe,e.inertiaZoom,"_lastInertiaZoomMovement"),t&&Wl(e,e.enableRotate,e.tiltEventTypes,kbe,e.inertiaSpin,"_lastInertiaTiltMovement")):(Wl(e,e.enableZoom,e.zoomEventTypes,Qbe,e.inertiaZoom,"_lastInertiaZoomMovement"),t&&Wl(e,e.enableRotate,e.translateEventTypes,kbe,e.inertiaSpin,"_lastInertiaSpinMovement"))}var qbe=new In,QIt=new d,kIt=new d;function e_(e,t,n){let i=e._scene,o=e._globe,r=i.camera,s;if(i.pickPositionSupported&&(s=i.pickPositionWorldCoordinates(t,QIt)),!l(o))return d.clone(s,n);let a=!e._cameraUnderground,c=r.getPickRay(t,qbe),u=o.pickWorldCoordinates(c,i,a,kIt),f=l(s)?d.distance(s,r.positionWC):Number.POSITIVE_INFINITY,h=l(u)?d.distance(u,r.positionWC):Number.POSITIVE_INFINITY;return f<h?d.clone(s,n):d.clone(u,n)}var UIt=new Ae;function JH(e){let t=e._ellipsoid,n=e._scene,i=n.camera,o=n.mode,r=0;if(o===ie.SCENE3D){let c=t.cartesianToCartographic(i.position,UIt);l(c)&&(r=c.height)}else r=i.position.z;let s=e._scene.globeHeight??0;return Math.abs(s-r)}var GIt=new d;function Kbe(e,t){let n=t.origin,i=t.direction,o=JH(e),r=d.normalize(n,GIt),s=Math.abs(d.dot(r,i));return s=Math.max(s,.5)*2,o*s}function Xbe(e,t,n,i){let o=d.distance(t.origin,n),r=JH(e),s=D.clamp(r*5,e._minimumUndergroundPickDistance,e._maximumUndergroundPickDistance);return o>s&&(o=Math.min(o,r/5),o=Math.max(o,100)),In.getPoint(t,o,i)}function Jbe(e,t,n,i){let o;return l(n)?(o=d.distance(t.origin,n),o>e._maximumUndergroundPickDistance&&(o=JH(e))):o=JH(e),In.getPoint(t,o,i)}var zIt=new U;function Zbe(e,t){let n=t.endPosition,i=U.subtract(t.endPosition,t.startPosition,zIt),o=e._strafeEndMousePosition;U.add(o,i,o),t.endPosition=o,bZ(e,t,e._strafeStartPosition),t.endPosition=n}var Ube=new In,VIt=new In,pZ=new d,HIt=new d,WIt=new d,jIt=new d,YIt=new mn(d.UNIT_X,0),qIt=new U,KIt=new U;function XIt(e,t,n){if(d.equals(t,e._translateMousePosition)||(e._looking=!1),d.equals(t,e._strafeMousePosition)||(e._strafing=!1),e._looking){Mf(e,t,n);return}if(e._strafing){Zbe(e,n);return}let o=e._scene.camera,r=e._cameraUnderground,s=U.clone(n.startPosition,qIt),a=U.clone(n.endPosition,KIt),c=o.getPickRay(s,Ube),u=d.clone(d.ZERO,jIt),f=d.UNIT_X,h;if(o.position.z<e._minimumPickingTerrainHeight&&(h=e_(e,s,pZ),l(h)&&(u.x=h.x)),r||u.x>o.position.z&&l(h)){let I=h;r&&(I=Jbe(e,c,h,pZ)),U.clone(t,e._strafeMousePosition),U.clone(t,e._strafeEndMousePosition),d.clone(I,e._strafeStartPosition),e._strafing=!0,bZ(e,n,e._strafeStartPosition);return}let A=mn.fromPointNormal(u,f,YIt);c=o.getPickRay(s,Ube);let g=hi.rayPlane(c,A,pZ),m=o.getPickRay(a,VIt),_=hi.rayPlane(m,A,HIt);if(!l(g)||!l(_)){e._looking=!0,Mf(e,t,n),U.clone(t,e._translateMousePosition);return}let y=d.subtract(g,_,WIt),C=y.x;y.x=y.y,y.y=y.z,y.z=C;let E=d.magnitude(y);E>D.EPSILON6&&(d.normalize(y,y),o.move(y,E))}var $be=new U,YH=new In,qH=new d,JIt=new d,eTe=new N,ZIt=new N,$It=new d,ext=new mn(d.UNIT_X,0),gZ=new d,CZ=new Ae,tTe=new N,txt=new Le,nxt=new J,KH=new d;function ixt(e,t,n){if(l(n.angleAndHeight)&&(n=n.angleAndHeight),U.equals(t,e._tiltCenterMousePosition)||(e._tiltCVOffMap=!1,e._looking=!1),e._looking){Mf(e,t,n);return}let o=e._scene.camera;e._tiltCVOffMap||!e.onMap()||Math.abs(o.position.z)>e._minimumPickingTerrainHeight?(e._tiltCVOffMap=!0,oxt(e,t,n)):rxt(e,t,n)}function oxt(e,t,n){let i=e._scene,o=i.camera,r=i.canvas,s=$be;s.x=r.clientWidth/2,s.y=r.clientHeight/2;let a=o.getPickRay(s,YH),c=d.UNIT_X,u=a.origin,f=a.direction,h,A=d.dot(c,f);if(Math.abs(A)>D.EPSILON6&&(h=-d.dot(c,u)/A),!l(h)||h<=0){e._looking=!0,Mf(e,t,n),U.clone(t,e._tiltCenterMousePosition);return}let g=d.multiplyByScalar(f,h,qH);d.add(u,g,g);let m=i.mapProjection,_=m.ellipsoid;d.fromElements(g.y,g.z,g.x,g);let y=m.unproject(g,CZ);_.cartographicToCartesian(y,g);let C=kt.eastNorthUpToFixedFrame(g,_,eTe),E=e._globe,I=e._ellipsoid;e._globe=void 0,e._ellipsoid=te.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let b=N.clone(o.transform,tTe);o._setTransform(C),Rf(e,t,n,d.UNIT_Z),o._setTransform(b),e._globe=E,e._ellipsoid=I;let S=I.maximumRadius;e._rotateFactor=1/S,e._rotateRateRangeAdjustment=S}function rxt(e,t,n){let i=e._scene,o=i.camera,r=e._cameraUnderground,s,a,c=d.UNIT_X;if(U.equals(t,e._tiltCenterMousePosition))s=d.clone(e._tiltCenter,qH);else{if(o.position.z<e._minimumPickingTerrainHeight&&(s=e_(e,t,qH)),!l(s)){a=o.getPickRay(t,YH);let p=a.origin,x=a.direction,T,w=d.dot(c,x);if(Math.abs(w)>D.EPSILON6&&(T=-d.dot(c,p)/w),!l(T)||T<=0){e._looking=!0,Mf(e,t,n),U.clone(t,e._tiltCenterMousePosition);return}s=d.multiplyByScalar(x,T,qH),d.add(p,s,s)}r&&(l(a)||(a=o.getPickRay(t,YH)),Xbe(e,a,s,s)),U.clone(t,e._tiltCenterMousePosition),d.clone(s,e._tiltCenter)}let u=i.canvas,f=$be;f.x=u.clientWidth/2,f.y=e._tiltCenterMousePosition.y,a=o.getPickRay(f,YH);let h=d.clone(d.ZERO,$It);h.x=s.x;let A=mn.fromPointNormal(h,c,ext),g=hi.rayPlane(a,A,JIt),m=o._projection,_=m.ellipsoid;d.fromElements(s.y,s.z,s.x,s);let y=m.unproject(s,CZ);_.cartographicToCartesian(y,s);let C=kt.eastNorthUpToFixedFrame(s,_,eTe),E;l(g)?(d.fromElements(g.y,g.z,g.x,g),y=m.unproject(g,CZ),_.cartographicToCartesian(y,g),E=kt.eastNorthUpToFixedFrame(g,_,ZIt)):E=C;let I=e._globe,b=e._ellipsoid;e._globe=void 0,e._ellipsoid=te.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let S=d.UNIT_Z,B=N.clone(o.transform,tTe);o._setTransform(C);let v=d.cross(d.UNIT_Z,d.normalize(o.position,gZ),gZ),P=d.dot(o.right,v);if(Rf(e,t,n,S,!1,!0),o._setTransform(E),P<0){let p=n.startPosition.y-n.endPosition.y;(r&&p<0||!r&&p>0)&&(S=void 0);let x=o.constrainedAxis;o.constrainedAxis=void 0,Rf(e,t,n,S,!0,!1),o.constrainedAxis=x}else Rf(e,t,n,S,!0,!1);if(l(o.constrainedAxis)){let p=d.cross(o.direction,o.constrainedAxis,KH);d.equalsEpsilon(p,d.ZERO,D.EPSILON6)||(d.dot(p,o.right)<0&&d.negate(p,p),d.cross(p,o.direction,o.up),d.cross(o.direction,o.up,o.right),d.normalize(o.up,o.up),d.normalize(o.right,o.right))}o._setTransform(B),e._globe=I,e._ellipsoid=b;let M=b.maximumRadius;e._rotateFactor=1/M,e._rotateRateRangeAdjustment=M;let L=d.clone(o.positionWC,gZ);if(e.enableCollisionDetection&&wZ(e,!0),!d.equals(o.positionWC,L)){o._setTransform(E),o.worldToCameraCoordinatesPoint(L,L);let p=d.magnitudeSquared(L);d.magnitudeSquared(o.position)>p&&(d.normalize(o.position,o.position),d.multiplyByScalar(o.position,Math.sqrt(p),o.position));let x=d.angleBetween(L,o.position),T=d.cross(L,o.position,L);d.normalize(T,T);let w=Le.fromAxisAngle(T,x,txt),R=J.fromQuaternion(w,nxt);J.multiplyByVector(R,o.direction,o.direction),J.multiplyByVector(R,o.up,o.up),d.cross(o.direction,o.up,o.right),d.cross(o.right,o.direction,o.up),o._setTransform(B)}}var nTe=new U,iTe=new In,oTe=new d;function sxt(e,t,n){l(n.distance)&&(n=n.distance);let i=e._scene,o=i.camera,r=i.canvas,s=e._cameraUnderground,a;s?a=t:(a=nTe,a.x=r.clientWidth/2,a.y=r.clientHeight/2);let c=o.getPickRay(a,iTe),u=c.origin,f=c.direction,h=o.position.z,A;h<e._minimumPickingTerrainHeight&&(A=e_(e,a,oTe));let g;if(l(A)&&(g=d.distance(u,A)),s){let m=Kbe(e,c,h);l(g)?g=Math.min(g,m):g=m}if(!l(g)){let m=d.UNIT_X;g=-d.dot(m,u)/d.dot(m,f)}xZ(e,t,n,e.zoomFactor,g)}function axt(e){let n=e._scene.camera;if(!N.equals(N.IDENTITY,n.transform))Wl(e,e.enableRotate,e.rotateEventTypes,Rf,e.inertiaSpin,"_lastInertiaSpinMovement"),Wl(e,e.enableZoom,e.zoomEventTypes,sTe,e.inertiaZoom,"_lastInertiaZoomMovement");else{let i=e._tweens;if(e._aggregator.anyButtonDown&&i.removeAll(),Wl(e,e.enableTilt,e.tiltEventTypes,ixt,e.inertiaSpin,"_lastInertiaTiltMovement"),Wl(e,e.enableTranslate,e.translateEventTypes,XIt,e.inertiaTranslate,"_lastInertiaTranslateMovement"),Wl(e,e.enableZoom,e.zoomEventTypes,sxt,e.inertiaZoom,"_lastInertiaZoomMovement"),Wl(e,e.enableLook,e.lookEventTypes,Mf),!e._aggregator.anyButtonDown&&!i.contains(e._tween)){let o=n.createCorrectPositionTween(e.bounceAnimationTime);l(o)&&(e._tween=i.add(o))}i.update()}}var cxt=new In,lxt=new mn(d.UNIT_X,0),uxt=new d,fxt=new d;function bZ(e,t,n){let i=e._scene,o=i.camera,r=o.getPickRay(t.endPosition,cxt),s=d.clone(o.direction,fxt);i.mode===ie.COLUMBUS_VIEW&&d.fromElements(s.z,s.x,s.y,s);let a=mn.fromPointNormal(n,s,lxt),c=hi.rayPlane(r,a,uxt);l(c)&&(s=d.subtract(n,c,s),i.mode===ie.COLUMBUS_VIEW&&d.fromElements(s.y,s.z,s.x,s),d.add(o.position,s,o.position))}var Gbe=new d,rTe=new Ae,EZ=new d,IZ=new te,dxt=new d,hxt=new d,mxt=new d;function Axt(e,t,n){let o=e._scene.camera,r=e._cameraUnderground,s=e._ellipsoid;if(!N.equals(o.transform,N.IDENTITY)){Rf(e,t,n);return}let a,c,u=s.geodeticSurfaceNormal(o.position,dxt);if(U.equals(t,e._rotateMousePosition)){if(e._looking)Mf(e,t,n,u);else if(e._rotating)Rf(e,t,n);else if(e._strafing)Zbe(e,n);else{if(d.magnitude(o.position)<d.magnitude(e._rotateStartPosition))return;a=d.magnitude(e._rotateStartPosition),c=EZ,c.x=c.y=c.z=a,s=te.fromCartesian3(c,IZ),yZ(e,t,n,s)}return}e._looking=!1,e._rotating=!1,e._strafing=!1;let f=s.cartesianToCartographic(o.positionWC,rTe).height,h=e._globe;if(l(h)&&f<e._minimumPickingTerrainHeight){let A=e_(e,n.startPosition,mxt);if(l(A)){let g=!1,m=o.getPickRay(n.startPosition,qbe);if(r)g=!0,Jbe(e,m,A,A);else{let _=s.geodeticSurfaceNormal(A,hxt);Math.abs(d.dot(m.direction,_))<.05?g=!0:g=d.magnitude(o.position)<d.magnitude(A)}g?(U.clone(t,e._strafeEndMousePosition),d.clone(A,e._strafeStartPosition),e._strafing=!0,bZ(e,n,e._strafeStartPosition)):(a=d.magnitude(A),c=EZ,c.x=c.y=c.z=a,s=te.fromCartesian3(c,IZ),yZ(e,t,n,s),d.clone(A,e._rotateStartPosition))}else e._looking=!0,Mf(e,t,n,u)}else l(o.pickEllipsoid(n.startPosition,e._ellipsoid,Gbe))?(yZ(e,t,n,e._ellipsoid),d.clone(Gbe,e._rotateStartPosition)):f>e._minimumTrackBallHeight?(e._rotating=!0,Rf(e,t,n)):(e._looking=!0,Mf(e,t,n,u));U.clone(t,e._rotateMousePosition)}function Rf(e,t,n,i,o,r){o=o??!1,r=r??!1;let s=e._scene,a=s.camera,c=s.canvas,u=a.constrainedAxis;l(i)&&(a.constrainedAxis=i);let f=d.magnitude(a.position),h=e._rotateFactor*(f-e._rotateRateRangeAdjustment);h>e._maximumRotateRate&&(h=e._maximumRotateRate),h<e._minimumRotateRate&&(h=e._minimumRotateRate);let A=(n.startPosition.x-n.endPosition.x)/c.clientWidth,g=(n.startPosition.y-n.endPosition.y)/c.clientHeight;A=Math.min(A,e.maximumMovementRatio),g=Math.min(g,e.maximumMovementRatio);let m=h*A*Math.PI*2,_=h*g*Math.PI;if(l(i)&&l(e.maximumTiltAngle)){let y=e.maximumTiltAngle,C=d.dot(a.direction,i),E=Math.PI-Math.acos(C)+_;E>y&&(_-=E-y)}o||a.rotateRight(m),r||a.rotateUp(_),a.constrainedAxis=u}var _Z=se.clone(se.UNIT_W),zbe=se.clone(se.UNIT_W),WH=new d,Bw=new d,jH=new d,Vbe=new d,pxt=new U,gxt=new U,_xt=new U,yxt=new U,Cxt=new In;function yZ(e,t,n,i){let o=e._scene,r=o.camera,s=U.clone(n.startPosition,pxt),a=U.clone(n.endPosition,gxt),c=i.cartesianToCartographic(r.positionWC,rTe).height,u,f;if(!n.inertiaEnabled&&c<e._minimumPickingTerrainHeight&&(u=d.clone(e._panLastWorldPosition,_Z),!l(e._globe)&&!U.equalsEpsilon(s,e._panLastMousePosition)&&(u=e_(e,s,_Z)),!l(e._globe)&&l(u))){let h=d.subtract(u,r.positionWC,Bw),A=d.multiplyByScalar(r.directionWC,d.dot(r.directionWC,h),Bw),g=d.magnitude(A),m=r.frustum.getPixelDimensions(o.drawingBufferWidth,o.drawingBufferHeight,g,o.pixelRatio,yxt),_=U.subtract(a,s,_xt),y=d.multiplyByScalar(r.rightWC,_.x*m.x,Bw),C=d.normalize(r.positionWC,Ybe),E=r.getPickRay(a,Cxt).direction,I=d.subtract(E,d.projectVector(E,r.rightWC,jH),jH),b=d.angleBetween(I,r.directionWC),S=1;l(r.frustum.fov)&&(S=Math.max(Math.tan(b),.1));let B=Math.abs(d.dot(r.directionWC,C)),v=-_.y*m.y*2/Math.sqrt(S)*(1-B),P=d.multiplyByScalar(E,v,jH);B=Math.abs(d.dot(r.upWC,C));let M=d.multiplyByScalar(r.upWC,-_.y*(1-B)*m.y,Vbe);f=d.add(u,y,zbe),f=d.add(f,P,f),f=d.add(f,M,f),d.clone(f,e._panLastWorldPosition),U.clone(a,e._panLastMousePosition)}if((!l(u)||!l(f))&&(u=r.pickEllipsoid(s,i,_Z),f=r.pickEllipsoid(a,i,zbe)),!l(u)||!l(f)){e._rotating=!0,Rf(e,t,n);return}if(u=r.worldToCameraCoordinates(u,u),f=r.worldToCameraCoordinates(f,f),l(r.constrainedAxis)){let h=r.constrainedAxis,A=d.mostOrthogonalAxis(h,WH);d.cross(A,h,A),d.normalize(A,A);let g=d.cross(h,A,Bw),m=d.magnitude(u),_=d.dot(h,u),y=Math.acos(_/m),C=d.multiplyByScalar(h,_,jH);d.subtract(u,C,C),d.normalize(C,C);let E=d.magnitude(f),I=d.dot(h,f),b=Math.acos(I/E),S=d.multiplyByScalar(h,I,Vbe);d.subtract(f,S,S),d.normalize(S,S);let B=Math.acos(d.dot(C,A));d.dot(C,g)<0&&(B=D.TWO_PI-B);let v=Math.acos(d.dot(S,A));d.dot(S,g)<0&&(v=D.TWO_PI-v);let P=B-v,M;d.equalsEpsilon(h,r.position,D.EPSILON2)?M=r.right:M=d.cross(h,r.position,WH);let L=d.cross(h,M,WH),p=d.dot(L,d.subtract(u,h,Bw)),x=d.dot(L,d.subtract(f,h,Bw)),T;p>0&&x>0?T=b-y:p>0&&x<=0?d.dot(r.position,h)>0?T=-y-b:T=y+b:T=y-b,r.rotateRight(P),r.rotateUp(T)}else{d.normalize(u,u),d.normalize(f,f);let h=d.dot(u,f),A=d.cross(u,f,WH);if(h<1&&!d.equalsEpsilon(A,d.ZERO,D.EPSILON14)){let g=Math.acos(h);r.rotate(A,g)}}}var Ext=new d,Ixt=new Ae,Hbe=0;function sTe(e,t,n){l(n.distance)&&(n=n.distance);let i=n.inertiaEnabled,o=e._ellipsoid,r=e._scene,s=r.camera,a=r.canvas,c=e._cameraUnderground,u;c?u=t:(u=nTe,u.x=a.clientWidth/2,u.y=a.clientHeight/2);let f=s.getPickRay(u,iTe),h,A=o.cartesianToCartographic(s.position,Ixt).height,g=Math.abs(Hbe)<e.minimumPickingTerrainDistanceWithInertia;(i?g:A<e._minimumPickingTerrainHeight)&&(h=e_(e,u,oTe));let _;if(l(h)&&(_=d.distance(f.origin,h),Hbe=_),c){let C=Kbe(e,f,A);l(_)?_=Math.min(_,C):_=C}l(_)||(_=A);let y=d.normalize(s.position,Ext);xZ(e,t,n,e.zoomFactor,_,d.dot(y,s.direction))}var aTe=new U,XH=new In,_k=new d,xxt=new d,cTe=new N,bxt=new N,lTe=new N,Txt=new Le,Sxt=new J,TZ=new Ae,SZ=new d;function wxt(e,t,n){let o=e._scene.camera;if(!N.equals(o.transform,N.IDENTITY))return;if(l(n.angleAndHeight)&&(n=n.angleAndHeight),U.equals(t,e._tiltCenterMousePosition)||(e._tiltOnEllipsoid=!1,e._looking=!1),e._looking){let a=e._ellipsoid.geodeticSurfaceNormal(o.position,SZ);Mf(e,t,n,a);return}let s=e._ellipsoid.cartesianToCartographic(o.position,TZ);e._tiltOnEllipsoid||s.height>e._minimumCollisionTerrainHeight?(e._tiltOnEllipsoid=!0,Dxt(e,t,n)):vxt(e,t,n)}var Bxt=new Ae;function Dxt(e,t,n){let i=e._ellipsoid,o=e._scene,r=o.camera,s=e.minimumZoomDistance*.25,a=i.cartesianToCartographic(r.positionWC,Bxt).height;if(a-s-1<D.EPSILON3&&n.endPosition.y-n.startPosition.y<0)return;let c=o.canvas,u=aTe;u.x=c.clientWidth/2,u.y=c.clientHeight/2;let f=r.getPickRay(u,XH),h,A=hi.rayEllipsoid(f,i);if(l(A))h=In.getPoint(f,A.start,_k);else if(a>e._minimumTrackBallHeight){let E=hi.grazingAltitudeLocation(f,i);if(!l(E))return;let I=i.cartesianToCartographic(E,TZ);I.height=0,h=i.cartographicToCartesian(I,_k)}else{e._looking=!0;let E=e._ellipsoid.geodeticSurfaceNormal(r.position,SZ);Mf(e,t,n,E),U.clone(t,e._tiltCenterMousePosition);return}let g=kt.eastNorthUpToFixedFrame(h,i,cTe),m=e._globe,_=e._ellipsoid;e._globe=void 0,e._ellipsoid=te.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let y=N.clone(r.transform,lTe);r._setTransform(g),Rf(e,t,n,d.UNIT_Z),r._setTransform(y),e._globe=m,e._ellipsoid=_;let C=_.maximumRadius;e._rotateFactor=1/C,e._rotateRateRangeAdjustment=C}function vxt(e,t,n){let i=e._ellipsoid,o=e._scene,r=o.camera,s=e._cameraUnderground,a,c,u;if(U.equals(t,e._tiltCenterMousePosition))a=d.clone(e._tiltCenter,_k);else{if(a=e_(e,t,_k),!l(a)){if(c=r.getPickRay(t,XH),u=hi.rayEllipsoid(c,i),!l(u)){if(i.cartesianToCartographic(r.position,TZ).height<=e._minimumTrackBallHeight){e._looking=!0;let x=e._ellipsoid.geodeticSurfaceNormal(r.position,SZ);Mf(e,t,n,x),U.clone(t,e._tiltCenterMousePosition)}return}a=In.getPoint(c,u.start,_k)}s&&(l(c)||(c=r.getPickRay(t,XH)),Xbe(e,c,a,a)),U.clone(t,e._tiltCenterMousePosition),d.clone(a,e._tiltCenter)}let f=o.canvas,h=aTe;h.x=f.clientWidth/2,h.y=e._tiltCenterMousePosition.y,c=r.getPickRay(h,XH);let A=d.magnitude(a),g=d.fromElements(A,A,A,EZ),m=te.fromCartesian3(g,IZ);if(u=hi.rayEllipsoid(c,m),!l(u))return;let _=d.magnitude(c.origin)>A?u.start:u.stop,y=In.getPoint(c,_,xxt),C=kt.eastNorthUpToFixedFrame(a,i,cTe),E=kt.eastNorthUpToFixedFrame(y,m,bxt),I=e._globe,b=e._ellipsoid;e._globe=void 0,e._ellipsoid=te.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let S=d.UNIT_Z,B=N.clone(r.transform,lTe);r._setTransform(E);let v=d.cross(y,r.positionWC,KH);if(d.dot(r.rightWC,v)<0){let p=n.startPosition.y-n.endPosition.y;(s&&p<0||!s&&p>0)&&(S=void 0);let x=r.constrainedAxis;r.constrainedAxis=void 0,Rf(e,t,n,S,!0,!1),r.constrainedAxis=x}else Rf(e,t,n,S,!0,!1);if(r._setTransform(C),Rf(e,t,n,S,!1,!0),l(r.constrainedAxis)){let p=d.cross(r.direction,r.constrainedAxis,KH);d.equalsEpsilon(p,d.ZERO,D.EPSILON6)||(d.dot(p,r.right)<0&&d.negate(p,p),d.cross(p,r.direction,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.up,r.up),d.normalize(r.right,r.right))}r._setTransform(B),e._globe=I,e._ellipsoid=b;let M=b.maximumRadius;e._rotateFactor=1/M,e._rotateRateRangeAdjustment=M;let L=d.clone(r.positionWC,KH);if(e.enableCollisionDetection&&wZ(e,!0),!d.equals(r.positionWC,L)){r._setTransform(E),r.worldToCameraCoordinatesPoint(L,L);let p=d.magnitudeSquared(L);d.magnitudeSquared(r.position)>p&&(d.normalize(r.position,r.position),d.multiplyByScalar(r.position,Math.sqrt(p),r.position));let x=d.angleBetween(L,r.position),T=d.cross(L,r.position,L);d.normalize(T,T);let w=Le.fromAxisAngle(T,x,Txt),R=J.fromQuaternion(w,Sxt);J.multiplyByVector(R,r.direction,r.direction),J.multiplyByVector(R,r.up,r.up),d.cross(r.direction,r.up,r.right),d.cross(r.right,r.direction,r.up),r._setTransform(B)}}var Pxt=new U,Rxt=new U,Wbe=new In,jbe=new In,Mxt=new d,Nxt=new d;function Mf(e,t,n,i){let r=e._scene.camera,s=Pxt;s.x=n.startPosition.x,s.y=0;let a=Rxt;a.x=n.endPosition.x,a.y=0;let c=r.getPickRay(s,Wbe),u=r.getPickRay(a,jbe),f=0,h,A;r.frustum instanceof An?(h=c.origin,A=u.origin,d.add(r.direction,h,h),d.add(r.direction,A,A),d.subtract(h,r.position,h),d.subtract(A,r.position,A),d.normalize(h,h),d.normalize(A,A)):(h=c.direction,A=u.direction);let g=d.dot(h,A);g<1&&(f=Math.acos(g)),f=n.startPosition.x>n.endPosition.x?-f:f;let m=e._horizontalRotationAxis;if(l(i)?r.look(i,-f):l(m)?r.look(m,-f):r.lookLeft(f),s.x=0,s.y=n.startPosition.y,a.x=0,a.y=n.endPosition.y,c=r.getPickRay(s,Wbe),u=r.getPickRay(a,jbe),f=0,r.frustum instanceof An?(h=c.origin,A=u.origin,d.add(r.direction,h,h),d.add(r.direction,A,A),d.subtract(h,r.position,h),d.subtract(A,r.position,A),d.normalize(h,h),d.normalize(A,A)):(h=c.direction,A=u.direction),g=d.dot(h,A),g<1&&(f=Math.acos(g)),f=n.startPosition.y>n.endPosition.y?-f:f,i=i??m,l(i)){let _=r.direction,y=d.negate(i,Mxt),C=d.equalsEpsilon(_,i,D.EPSILON2),E=d.equalsEpsilon(_,y,D.EPSILON2);if(!C&&!E){g=d.dot(_,i);let I=D.acosClamped(g);f>0&&f>I&&(f=I-D.EPSILON4),g=d.dot(_,y),I=D.acosClamped(g),f<0&&-f>I&&(f=-I+D.EPSILON4);let b=d.cross(i,_,Nxt);r.look(b,f)}else(C&&f<0||E&&f>0)&&r.look(r.right,-f)}else r.lookUp(f)}function Lxt(e){Wl(e,e.enableRotate,e.rotateEventTypes,Axt,e.inertiaSpin,"_lastInertiaSpinMovement"),Wl(e,e.enableZoom,e.zoomEventTypes,sTe,e.inertiaZoom,"_lastInertiaZoomMovement"),Wl(e,e.enableTilt,e.tiltEventTypes,wxt,e.inertiaSpin,"_lastInertiaTiltMovement"),Wl(e,e.enableLook,e.lookEventTypes,Mf)}var Oxt=new N,Fxt=new Ae;function wZ(e,t){e._adjustedHeightForTerrain=!0;let n=e._scene,i=n.mode;if(i===ie.SCENE2D||i===ie.MORPHING)return;let o=n.camera,r=n.ellipsoid??te.WGS84,s=n.mapProjection,a,c;N.equals(o.transform,N.IDENTITY)||(a=N.clone(o.transform,Oxt),c=d.magnitude(o.position),o._setTransform(N.IDENTITY));let u=Fxt;i===ie.SCENE3D?r.cartesianToCartographic(o.position,u):s.unproject(o.position,u);let f=!1;if(u.height<e._minimumCollisionTerrainHeight){let h=e._scene.globeHeight;if(l(h)){let A=h+e.minimumZoomDistance,g=h-e._lastGlobeHeight,m=g/e._lastGlobeHeight;u.height<A&&(t||Math.abs(m)<=.1)&&(u.height=A,i===ie.SCENE3D?r.cartographicToCartesian(u,o.position):s.project(u,o.position),f=!0),t||Math.abs(m)<=.1?e._lastGlobeHeight=h:e._lastGlobeHeight+=g*.1}}l(a)&&(o._setTransform(a),f&&(d.normalize(o.position,o.position),d.negate(o.position,o.direction),d.multiplyByScalar(o.position,Math.max(c,e.minimumZoomDistance),o.position),d.normalize(o.direction,o.direction),d.cross(o.direction,o.up,o.right),d.cross(o.right,o.direction,o.up)))}yk.prototype.onMap=function(){let e=this._scene,t=e.mode,n=e.camera;return t===ie.COLUMBUS_VIEW?Math.abs(n.position.x)-this._maxCoord.x<0&&Math.abs(n.position.y)-this._maxCoord.y<0:!0};var Qxt=new d,kxt=new d;yk.prototype.update=function(){let e=this._scene,{camera:t,globe:n,mode:i}=e;N.equals(t.transform,N.IDENTITY)?(this._globe=n,this._ellipsoid=e.ellipsoid??te.default):(this._globe=void 0,this._ellipsoid=te.UNIT_SPHERE);let{verticalExaggeration:o,verticalExaggerationRelativeHeight:r}=e;this._minimumCollisionTerrainHeight=Ur.getHeight(this.minimumCollisionTerrainHeight,o,r),this._minimumPickingTerrainHeight=Ur.getHeight(this.minimumPickingTerrainHeight,o,r),this._minimumTrackBallHeight=Ur.getHeight(this.minimumTrackBallHeight,o,r),this._cameraUnderground=e.cameraUnderground&&l(this._globe);let s=this._ellipsoid.maximumRadius;this._rotateFactor=1/s,this._rotateRateRangeAdjustment=s,this._adjustedHeightForTerrain=!1;let a=d.clone(t.positionWC,Qxt),c=d.clone(t.directionWC,kxt);if(i===ie.SCENE2D?FIt(this):i===ie.COLUMBUS_VIEW?(this._horizontalRotationAxis=d.UNIT_Z,axt(this)):i===ie.SCENE3D&&(this._horizontalRotationAxis=void 0,Lxt(this)),this.enableCollisionDetection&&!this._adjustedHeightForTerrain){let u=!d.equals(a,t.positionWC)||!d.equals(c,t.directionWC);wZ(this,u)}this._aggregator.reset()};yk.prototype.isDestroyed=function(){return!1};yk.prototype.destroy=function(){return this._tweens.removeAll(),this._aggregator=this._aggregator&&this._aggregator.destroy(),ue(this)};var Ck=yk;var Ek=`uniform sampler2D colorTexture; +uniform sampler2D colorTexture2; + +uniform vec2 center; +uniform float radius; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 color0 = texture(colorTexture, v_textureCoordinates); + vec4 color1 = texture(colorTexture2, v_textureCoordinates); + + float x = length(gl_FragCoord.xy - center) / radius; + float t = smoothstep(0.5, 0.8, x); + out_FragColor = mix(color0 + color1, color1, t); +} +`;var Ik=`uniform sampler2D colorTexture; + +uniform float avgLuminance; +uniform float threshold; +uniform float offset; + +in vec2 v_textureCoordinates; + +float key(float avg) +{ + float guess = 1.5 - (1.5 / (avg * 0.1 + 1.0)); + return max(0.0, guess) + 0.1; +} + +// See section 9. "The bright-pass filter" of Realtime HDR Rendering +// http://www.cg.tuwien.ac.at/research/publications/2007/Luksch_2007_RHR/Luksch_2007_RHR-RealtimeHDR%20.pdf + +void main() +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + vec3 xyz = czm_RGBToXYZ(color.rgb); + float luminance = xyz.r; + + float scaledLum = key(avgLuminance) * luminance / avgLuminance; + float brightLum = max(scaledLum - threshold, 0.0); + float brightness = brightLum / (offset + brightLum); + + xyz.r = brightness; + out_FragColor = vec4(czm_XYZToRGB(xyz), 1.0); +} +`;function t_(){this._sceneFramebuffer=new GI;let e=.125,t=new Array(6);t[0]=new So({fragmentShader:Bu,textureScale:e,forcePowerOfTwo:!0,sampleMode:Bf.LINEAR});let n=t[1]=new So({fragmentShader:Ik,uniforms:{avgLuminance:.5,threshold:.25,offset:.1},textureScale:e,forcePowerOfTwo:!0}),i=this;this._delta=1,this._sigma=2,this._blurStep=new U,t[2]=new So({fragmentShader:_C,uniforms:{step:function(){return i._blurStep.x=i._blurStep.y=1/n.outputTexture.width,i._blurStep},delta:function(){return i._delta},sigma:function(){return i._sigma},direction:0},textureScale:e,forcePowerOfTwo:!0}),t[3]=new So({fragmentShader:_C,uniforms:{step:function(){return i._blurStep.x=i._blurStep.y=1/n.outputTexture.width,i._blurStep},delta:function(){return i._delta},sigma:function(){return i._sigma},direction:1},textureScale:e,forcePowerOfTwo:!0}),t[4]=new So({fragmentShader:Bu,sampleMode:Bf.LINEAR}),this._uCenter=new U,this._uRadius=void 0,t[5]=new So({fragmentShader:Ek,uniforms:{center:function(){return i._uCenter},radius:function(){return i._uRadius},colorTexture2:function(){return i._sceneFramebuffer.framebuffer.getColorTexture(0)}}}),this._stages=new Du({stages:t});let o=new qI(this),r=t.length;for(let s=0;s<r;++s)t[s]._textureCache=o;this._textureCache=o,this.length=t.length}t_.prototype.get=function(e){return this._stages.get(e)};t_.prototype.getStageByName=function(e){let t=this._stages.length;for(let n=0;n<t;++n){let i=this._stages.get(n);if(i.name===e)return i}};var Uxt=new se,uTe=new U,Gxt=new U,fTe=new N;function zxt(e,t,n){let i=t.uniformState,o=i.sunPositionWC,r=i.view,s=i.viewProjection,a=i.projection,c=N.computeViewportTransformation(n,0,1,fTe),u=N.multiplyByPoint(r,o,Uxt),f=kt.pointToGLWindowCoordinates(s,c,o,uTe);u.x+=D.SOLAR_RADIUS;let h=kt.pointToGLWindowCoordinates(a,c,u,u),A=U.magnitude(U.subtract(h,f,h))*30*2,g=Gxt;g.x=A,g.y=A,e._uCenter=U.clone(f,e._uCenter),e._uRadius=Math.max(g.x,g.y)*.15;let m=t.drawingBufferWidth,_=t.drawingBufferHeight,y=e._stages,C=y.get(0),E=C.outputTexture.width,I=C.outputTexture.height,b=new Ye;b.width=E,b.height=I,c=N.computeViewportTransformation(b,0,1,fTe),f=kt.pointToGLWindowCoordinates(s,c,o,uTe),g.x*=E/m,g.y*=I/_;let S=C.scissorRectangle;S.x=Math.max(f.x-g.x*.5,0),S.y=Math.max(f.y-g.y*.5,0),S.width=Math.min(g.x,m),S.height=Math.min(g.y,_);for(let B=1;B<4;++B)Ye.clone(S,y.get(B).scissorRectangle)}t_.prototype.clear=function(e,t,n){this._sceneFramebuffer.clear(e,t,n),this._textureCache.clear(e)};t_.prototype.update=function(e){let t=e.context,n=e.viewport,i=this._sceneFramebuffer;i.update(t,n);let o=i.framebuffer;return this._textureCache.update(t),this._stages.update(t,!1),zxt(this,t,n),o};t_.prototype.execute=function(e){let t=this._sceneFramebuffer.framebuffer.getColorTexture(0),n=this._stages,i=n.length;n.get(0).execute(e,t);for(let o=1;o<i;++o)n.get(o).execute(e,n.get(o-1).outputTexture)};t_.prototype.copy=function(e,t){if(!l(this._copyColorCommand)){let n=this;this._copyColorCommand=e.createViewportQuadCommand(Bu,{uniformMap:{colorTexture:function(){return n._stages.get(n._stages.length-1).outputTexture}},owner:this})}this._copyColorCommand.framebuffer=t,this._copyColorCommand.execute(e)};t_.prototype.isDestroyed=function(){return!1};t_.prototype.destroy=function(){return this._textureCache.destroy(),this._stages.destroy(),ue(this)};var xk=t_;function dTe(){this._cachedShowFrustumsShaders={}}function Vxt(e){let t={},n=e.vertexAttributes;for(let i in n)n.hasOwnProperty(i)&&(t[i]=n[i].index);return t}function Hxt(e,t){let n=e.context,i=t,o=i.fragmentShaderSource.clone(),r=[];o.sources=o.sources.map(function(f){f=He.replaceMain(f,"czm_Debug_main");let h=/out_FragData_(\d+)/g,A;for(;(A=h.exec(f))!==null;)r.indexOf(A[1])===-1&&r.push(A[1]);return f});let s=r.length,a="";a+=`uniform vec3 debugShowCommandsColor; +`,a+=`uniform vec3 debugShowFrustumsColor; +`,a+=`void main() +{ + czm_Debug_main(); +`;let c;if(s>0)for(c=0;c<s;++c)a+=` out_FragData_${r[c]}.rgb *= debugShowCommandsColor; +`,a+=` out_FragData_${r[c]}.rgb *= debugShowFrustumsColor; +`;else a+=` out_FragColor.rgb *= debugShowCommandsColor; +`,a+=` out_FragColor.rgb *= debugShowFrustumsColor; +`;a+="}",o.sources.push(a);let u=Vxt(i);return an.fromCache({context:n,vertexShaderSource:i.vertexShaderSource,fragmentShaderSource:o,attributeLocations:u})}var bk=new G;function Wxt(e,t){let n;return l(t.uniformMap)?n=t.uniformMap:n={},l(n.debugShowCommandsColor)||l(n.debugShowFrustumsColor)||(n.debugShowCommandsColor=function(){return e.debugShowCommands?(l(t._debugColor)||(t._debugColor=G.fromRandom()),t._debugColor):G.WHITE},n.debugShowFrustumsColor=function(){return e.debugShowFrustums?(bk.red=t.debugOverlappingFrustums&1?1:0,bk.green=t.debugOverlappingFrustums&2?1:0,bk.blue=t.debugOverlappingFrustums&4?1:0,bk.alpha=1,bk):G.WHITE}),n}var jxt=new nt;dTe.prototype.executeDebugShowFrustumsCommand=function(e,t,n){let i=t.shaderProgram.id,o=this._cachedShowFrustumsShaders[i];l(o)||(o=Hxt(e,t.shaderProgram),this._cachedShowFrustumsShaders[i]=o);let r=nt.shallowClone(t,jxt);r.shaderProgram=o,r.uniformMap=Wxt(e,t),r.execute(e.context,n)};var Tk=dTe;function ex(e,t,n){this._primitive=e,this._tileIndex=t,this._sampleIndex=n,this._metadata={},this._orientedBoundingBox=new Fn}ex.fromKeyframeNode=function(e,t,n,i){let o=new ex(e,t,n),{spatialNode:r,content:s}=i;return o._metadata=Yxt(e,s,n),o._orientedBoundingBox=Kxt(e,r,n,o._orientedBoundingBox),o};function Yxt(e,t,n){if(!l(t)||!l(t.metadata))return;let{names:i,types:o}=e.provider,{metadata:r}=t,s={};for(let a=0;a<i.length;a++){let c=i[a],u=pt.getComponentCount(o[a]),f=r[a].slice(n*u,(n+1)*u);s[c]=f}return s}var hTe=new d,qxt=new d;function Kxt(e,t,n,i){let o=t.dimensions,r=o.x*o.y,s=Math.floor(n/r),a=n-s*r,c=Math.floor(a/o.x),u=a-c*o.x,f=d.fromElements(u,c,s,hTe),h=d.divideComponents(d.subtract(f,e._paddingBefore,hTe),e.dimensions,qxt);return e._shape.computeOrientedBoundingBoxForSample(t,e.dimensions,h,i)}Object.defineProperties(ex.prototype,{metadata:{get:function(){return this._metadata}},primitive:{get:function(){return this._primitive}},sampleIndex:{get:function(){return this._sampleIndex}},tileIndex:{get:function(){return this._tileIndex}},orientedBoundingBox:{get:function(){return this._orientedBoundingBox.clone()}}});ex.prototype.hasProperty=function(e){return l(this._metadata[e])};ex.prototype.getNames=function(){return Object.keys(this._metadata)};ex.prototype.getProperty=function(e){return this._metadata[e]};var Sk=ex;var wk=`struct Ray { + vec3 pos; + vec3 dir; + vec3 rawDir; +}; + +#if defined(JITTER) +/** + * Generate a pseudo-random value for a given 2D screen coordinate. + * Similar to https://www.shadertoy.com/view/4djSRW with a modified hashscale. + */ +float hash(vec2 p) +{ + vec3 p3 = fract(vec3(p.xyx) * 50.0); + p3 += dot(p3, p3.yzx + 19.19); + return fract((p3.x + p3.y) * p3.z); +} +#endif + +float minComponent(in vec3 v) { + return min(min(v.x, v.y), v.z); +} + +float maxComponent(in vec3 v) { + return max(max(v.x, v.y), v.z); +} + +struct PointJacobianT { + vec3 point; + mat3 jacobianT; +}; +`;var Bk=`// See Intersection.glsl for the definition of intersectScene +// See IntersectionUtils.glsl for the definition of nextIntersection +// See convertUvToBox.glsl, convertUvToCylinder.glsl, or convertUvToEllipsoid.glsl +// for the definition of convertUvToShapeUvSpace. The appropriate function is +// selected based on the VoxelPrimitive shape type, and added to the shader in +// Scene/VoxelRenderResources.js. +// See Octree.glsl for the definitions of TraversalData, SampleData, +// traverseOctreeFromBeginning, and traverseOctreeFromExisting +// See Megatexture.glsl for the definition of accumulatePropertiesFromMegatexture + +#define STEP_COUNT_MAX 1000 // Harcoded value because GLSL doesn't like variable length loops +#if defined(PICKING_VOXEL) + #define ALPHA_ACCUM_MAX 0.1 +#else + #define ALPHA_ACCUM_MAX 0.98 // Must be > 0.0 and <= 1.0 +#endif + +uniform mat4 u_transformPositionUvToView; +uniform mat3 u_transformDirectionViewToLocal; +uniform vec3 u_cameraPositionUv; +uniform vec3 u_cameraDirectionUv; +uniform float u_stepSize; + +#if defined(PICKING) + uniform vec4 u_pickColor; +#endif + +vec3 getSampleSize(in int level) { + vec3 sampleCount = exp2(float(level)) * vec3(u_dimensions); + vec3 sampleSizeUv = 1.0 / sampleCount; + return scaleShapeUvToShapeSpace(sampleSizeUv); +} + +#define MINIMUM_STEP_SCALAR (0.02) +#define SHIFT_FRACTION (0.001) + +/** + * Given a coordinate within a tile, and sample spacings along a ray through + * the coordinate, find the distance to the points where the ray entered and + * exited the voxel cell, along with the surface normals at those points. + * The surface normals are returned in shape space coordinates. + */ +RayShapeIntersection getVoxelIntersection(in vec3 tileUv, in vec3 sampleSizeAlongRay) { + vec3 voxelCoord = tileUv * vec3(u_dimensions); + vec3 directions = sign(sampleSizeAlongRay); + vec3 positiveDirections = max(directions, 0.0); + vec3 entryCoord = mix(ceil(voxelCoord), floor(voxelCoord), positiveDirections); + vec3 exitCoord = entryCoord + directions; + + vec3 distanceFromEntry = -abs((entryCoord - voxelCoord) * sampleSizeAlongRay); + float lastEntry = maxComponent(distanceFromEntry); + bvec3 isLastEntry = equal(distanceFromEntry, vec3(lastEntry)); + vec3 entryNormal = -1.0 * vec3(isLastEntry) * directions; + vec4 entry = vec4(entryNormal, lastEntry); + + vec3 distanceToExit = abs((exitCoord - voxelCoord) * sampleSizeAlongRay); + float firstExit = minComponent(distanceToExit); + bvec3 isFirstExit = equal(distanceToExit, vec3(firstExit)); + vec3 exitNormal = vec3(isFirstExit) * directions; + vec4 exit = vec4(exitNormal, firstExit); + + return RayShapeIntersection(entry, exit); +} + +vec4 getStepSize(in SampleData sampleData, in Ray viewRay, in RayShapeIntersection shapeIntersection, in mat3 jacobianT, in float currentT) { + // The Jacobian is computed in a space where the shape spans [-1, 1]. + // But the ray is marched in a space where the shape fills [0, 1]. + // So we need to scale the Jacobian by 2. + vec3 gradient = 2.0 * viewRay.rawDir * jacobianT; + vec3 sampleSizeAlongRay = getSampleSize(sampleData.tileCoords.w) / gradient; + + RayShapeIntersection voxelIntersection = getVoxelIntersection(sampleData.tileUv, sampleSizeAlongRay); + + // Transform normal from shape space to Cartesian space + vec3 voxelNormal = normalize(jacobianT * voxelIntersection.entry.xyz); + // Compare with the shape intersection, to choose the appropriate normal + vec4 voxelEntry = vec4(voxelNormal, currentT + voxelIntersection.entry.w); + vec4 entry = intersectionMax(shapeIntersection.entry, voxelEntry); + + float fixedStep = minComponent(abs(sampleSizeAlongRay)) * u_stepSize; + float shift = fixedStep * SHIFT_FRACTION; + float dt = voxelIntersection.exit.w + shift; + if ((currentT + dt) > shapeIntersection.exit.w) { + // Stop at end of shape + dt = shapeIntersection.exit.w - currentT + shift; + } + float stepSize = clamp(dt, fixedStep * MINIMUM_STEP_SCALAR, fixedStep + shift); + + return vec4(entry.xyz, stepSize); +} + +vec2 packIntToVec2(int value) { + float shifted = float(value) / 255.0; + float lowBits = fract(shifted); + float highBits = floor(shifted) / 255.0; + return vec2(highBits, lowBits); +} + +vec2 packFloatToVec2(float value) { + float lowBits = fract(value); + float highBits = floor(value) / 255.0; + return vec2(highBits, lowBits); +} + +int getSampleIndex(in SampleData sampleData) { + // tileUv = 1.0 is a valid coordinate but sampleIndex = u_inputDimensions is not. + // (tileUv = 1.0 corresponds to the far edge of the last sample, at index = u_inputDimensions - 1). + // Clamp to [0, voxelDimensions - 0.5) to avoid numerical error before flooring + vec3 maxCoordinate = vec3(u_inputDimensions) - vec3(0.5); + vec3 inputCoordinate = clamp(sampleData.inputCoordinate, vec3(0.0), maxCoordinate); + ivec3 sampleIndex = ivec3(floor(inputCoordinate)); + // Convert to a 1D index for lookup in a 1D data array + return sampleIndex.x + u_inputDimensions.x * (sampleIndex.y + u_inputDimensions.y * sampleIndex.z); +} + +/** + * Compute the view ray at the current fragment, in the local UV coordinates of the shape. + */ +Ray getViewRayUv() { + vec4 eyeCoordinates = czm_windowToEyeCoordinates(gl_FragCoord); + vec3 viewDirUv; + vec3 viewPosUv; + if (czm_orthographicIn3D == 1.0) { + eyeCoordinates.z = 0.0; + viewPosUv = (u_transformPositionViewToUv * eyeCoordinates).xyz; + viewDirUv = normalize(u_cameraDirectionUv); + } else { + viewPosUv = u_cameraPositionUv; + viewDirUv = normalize(u_transformDirectionViewToLocal * eyeCoordinates.xyz); + } + #if defined(SHAPE_ELLIPSOID) + // viewDirUv has been scaled to a space where the ellipsoid is a sphere. + // Undo this scaling to get the raw direction. + vec3 rawDir = viewDirUv * u_ellipsoidRadiiUv; + return Ray(viewPosUv, viewDirUv, rawDir); + #else + return Ray(viewPosUv, viewDirUv, viewDirUv); + #endif +} + +void main() +{ + Ray viewRayUv = getViewRayUv(); + + Intersections ix; + vec2 screenCoord = (gl_FragCoord.xy - czm_viewport.xy) / czm_viewport.zw; // [0,1] + RayShapeIntersection shapeIntersection = intersectScene(screenCoord, viewRayUv, ix); + // Exit early if the scene was completely missed. + if (shapeIntersection.entry.w == NO_HIT) { + discard; + } + + float currentT = shapeIntersection.entry.w; + float endT = shapeIntersection.exit.w; + vec3 positionUv = viewRayUv.pos + currentT * viewRayUv.dir; + PointJacobianT pointJacobian = convertUvToShapeUvSpaceDerivative(positionUv); + + // Traverse the tree from the start position + TraversalData traversalData; + SampleData sampleDatas[SAMPLE_COUNT]; + traverseOctreeFromBeginning(pointJacobian.point, traversalData, sampleDatas); + vec4 step = getStepSize(sampleDatas[0], viewRayUv, shapeIntersection, pointJacobian.jacobianT, currentT); + + #if defined(JITTER) + float noise = hash(screenCoord); // [0,1] + currentT += noise * step.w; + positionUv += noise * step.w * viewRayUv.dir; + #endif + + FragmentInput fragmentInput; + #if defined(STATISTICS) + setStatistics(fragmentInput.metadataStatistics); + #endif + + czm_modelMaterial materialOutput; + vec4 colorAccum = vec4(0.0); + + for (int stepCount = 0; stepCount < STEP_COUNT_MAX; ++stepCount) { + // Read properties from the megatexture based on the traversal state + Properties properties = accumulatePropertiesFromMegatexture(sampleDatas); + + // Prepare the custom shader inputs + copyPropertiesToMetadata(properties, fragmentInput.metadata); + + fragmentInput.attributes.positionEC = vec3(u_transformPositionUvToView * vec4(positionUv, 1.0)); + fragmentInput.attributes.normalEC = normalize(czm_normal * step.xyz); + + fragmentInput.voxel.viewDirUv = viewRayUv.dir; + + fragmentInput.voxel.travelDistance = step.w; + fragmentInput.voxel.stepCount = stepCount; + fragmentInput.voxel.tileIndex = sampleDatas[0].megatextureIndex; + fragmentInput.voxel.sampleIndex = getSampleIndex(sampleDatas[0]); + fragmentInput.voxel.distanceToDepthBuffer = ix.distanceToDepthBuffer - currentT; + + // Run the custom shader + fragmentMain(fragmentInput, materialOutput); + + // Sanitize the custom shader output + vec4 color = vec4(materialOutput.diffuse, materialOutput.alpha); + color.rgb = max(color.rgb, vec3(0.0)); + color.a = clamp(color.a, 0.0, 1.0); + + // Pre-multiplied alpha blend + colorAccum += (1.0 - colorAccum.a) * vec4(color.rgb * color.a, color.a); + + // Stop traversing if the alpha has been fully saturated + if (colorAccum.a > ALPHA_ACCUM_MAX) { + colorAccum.a = ALPHA_ACCUM_MAX; + break; + } + + if (step.w == 0.0) { + // Shape is infinitely thin. The ray may have hit the edge of a + // foreground voxel. Step ahead slightly to check for more voxels + step.w == 0.00001; + } + + // Keep raymarching + currentT += step.w; + // Check if there's more intersections. + if (currentT > endT) { + #if (INTERSECTION_COUNT == 1) + break; + #else + shapeIntersection = nextIntersection(ix); + if (shapeIntersection.entry.w == NO_HIT) { + break; + } else { + // Found another intersection. Resume raymarching there + currentT = shapeIntersection.entry.w; + endT = shapeIntersection.exit.w; + } + #endif + } + positionUv = viewRayUv.pos + currentT * viewRayUv.dir; + + // Traverse the tree from the current ray position. + // This is similar to traverseOctreeFromBeginning but is faster when the ray is in the same tile as the previous step. + pointJacobian = convertUvToShapeUvSpaceDerivative(positionUv); + traverseOctreeFromExisting(pointJacobian.point, traversalData, sampleDatas); + step = getStepSize(sampleDatas[0], viewRayUv, shapeIntersection, pointJacobian.jacobianT, currentT); + } + + // Convert the alpha from [0,ALPHA_ACCUM_MAX] to [0,1] + colorAccum.a /= ALPHA_ACCUM_MAX; + + #if defined(PICKING) + // If alpha is 0.0 there is nothing to pick + if (colorAccum.a == 0.0) { + discard; + } + out_FragColor = u_pickColor; + #elif defined(PICKING_VOXEL) + // If alpha is 0.0 there is nothing to pick + if (colorAccum.a == 0.0) { + discard; + } + vec2 megatextureId = packIntToVec2(sampleDatas[0].megatextureIndex); + vec2 sampleIndex = packIntToVec2(getSampleIndex(sampleDatas[0])); + out_FragColor = vec4(megatextureId, sampleIndex); + #else + out_FragColor = colorAccum; + #endif +} +`;var Dk=`in vec2 position; + +uniform vec4 u_ndcSpaceAxisAlignedBoundingBox; + +void main() { + vec2 aabbMin = u_ndcSpaceAxisAlignedBoundingBox.xy; + vec2 aabbMax = u_ndcSpaceAxisAlignedBoundingBox.zw; + vec2 translation = 0.5 * (aabbMax + aabbMin); + vec2 scale = 0.5 * (aabbMax - aabbMin); + gl_Position = vec4(position * scale + translation, 0.0, 1.0); +} +`;var vk=`/* Intersection defines +#define INTERSECTION_COUNT ### +*/ + +#define NO_HIT (-czm_infinity) +#define INF_HIT (czm_infinity * 0.5) + +struct RayShapeIntersection { + vec4 entry; + vec4 exit; +}; + +vec4 intersectionMin(in vec4 intersect0, in vec4 intersect1) +{ + if (intersect0.w == NO_HIT) { + return intersect1; + } else if (intersect1.w == NO_HIT) { + return intersect0; + } + return (intersect0.w <= intersect1.w) ? intersect0 : intersect1; +} + +vec4 intersectionMax(in vec4 intersect0, in vec4 intersect1) +{ + return (intersect0.w >= intersect1.w) ? intersect0 : intersect1; +} + +RayShapeIntersection intersectIntersections(in Ray ray, in RayShapeIntersection intersect0, in RayShapeIntersection intersect1) +{ + bool missed = (intersect0.entry.w == NO_HIT) || + (intersect1.entry.w == NO_HIT) || + (intersect0.exit.w < intersect1.entry.w) || + (intersect0.entry.w > intersect1.exit.w); + if (missed) { + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + return RayShapeIntersection(miss, miss); + } + + vec4 entry = intersectionMax(intersect0.entry, intersect1.entry); + vec4 exit = intersectionMin(intersect0.exit, intersect1.exit); + + return RayShapeIntersection(entry, exit); +} + +struct Intersections { + // Don't access these member variables directly - call the functions instead. + + // Store an array of ray-surface intersections. Each intersection is composed of: + // .xyz for the surface normal at the intersection point + // .w for the T value + // The scale of the normal encodes the shape intersection type: + // length(intersection.xyz) = 1: positive shape entry + // length(intersection.xyz) = 2: positive shape exit + // length(intersection.xyz) = 3: negative shape entry + // length(intersection.xyz) = 4: negative shape exit + // INTERSECTION_COUNT is the number of ray-*shape* (volume) intersections, + // so we need twice as many to track ray-*surface* intersections + vec4 intersections[INTERSECTION_COUNT * 2]; + float distanceToDepthBuffer; + + #if (INTERSECTION_COUNT > 1) + // Maintain state for future nextIntersection calls + int index; + int surroundCount; + bool surroundIsPositive; + #endif +}; + +RayShapeIntersection getFirstIntersection(in Intersections ix) +{ + return RayShapeIntersection(ix.intersections[0], ix.intersections[1]); +} + +vec4 encodeIntersectionType(vec4 intersection, int index, bool entry) +{ + float scale = float(index > 0) * 2.0 + float(!entry) + 1.0; + return vec4(intersection.xyz * scale, intersection.w); +} + +// Use defines instead of real functions because WebGL1 cannot access array with non-constant index. +#define setIntersection(/*inout Intersections*/ ix, /*int*/ index, /*float*/ t, /*bool*/ positive, /*bool*/ enter) (ix).intersections[(index)] = vec4(0.0, float(!positive) * 2.0 + float(!enter) + 1.0, 0.0, (t)) +#define setIntersectionPair(/*inout Intersections*/ ix, /*int*/ index, /*vec2*/ entryExit) (ix).intersections[(index) * 2 + 0] = vec4(0.0, float((index) > 0) * 2.0 + 1.0, 0.0, (entryExit).x); (ix).intersections[(index) * 2 + 1] = vec4(0.0, float((index) > 0) * 2.0 + 2.0, 0.0, (entryExit).y) +#define setSurfaceIntersection(/*inout Intersections*/ ix, /*int*/ index, /*vec4*/ intersection, /*bool*/ positive, /*bool*/ enter) (ix).intersections[(index)] = encodeIntersectionType((intersection), int(!positive), (enter)) +#define setShapeIntersection(/*inout Intersections*/ ix, /*int*/ index, /*RayShapeIntersection*/ intersection) (ix).intersections[(index) * 2 + 0] = encodeIntersectionType((intersection).entry, (index), true); (ix).intersections[(index) * 2 + 1] = encodeIntersectionType((intersection).exit, (index), false) + +#if (INTERSECTION_COUNT > 1) +void initializeIntersections(inout Intersections ix) { + // Sort the intersections from min T to max T with bubble sort. + // Note: If this sorting function changes, some of the intersection test may + // need to be updated. Search for "bubble sort" to find those areas. + const int sortPasses = INTERSECTION_COUNT * 2 - 1; + for (int n = sortPasses; n > 0; --n) { + for (int i = 0; i < sortPasses; ++i) { + // The loop should be: for (i = 0; i < n; ++i) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (i >= n) { break; } + + vec4 intersect0 = ix.intersections[i + 0]; + vec4 intersect1 = ix.intersections[i + 1]; + + bool inOrder = intersect0.w <= intersect1.w; + + ix.intersections[i + 0] = inOrder ? intersect0 : intersect1; + ix.intersections[i + 1] = inOrder ? intersect1 : intersect0; + } + } + + // Prepare initial state for nextIntersection + ix.index = 0; + ix.surroundCount = 0; + ix.surroundIsPositive = false; +} +#endif + +#if (INTERSECTION_COUNT > 1) +RayShapeIntersection nextIntersection(inout Intersections ix) { + vec4 surfaceIntersection = vec4(0.0, 0.0, 0.0, NO_HIT); + RayShapeIntersection shapeIntersection = RayShapeIntersection(surfaceIntersection, surfaceIntersection); + + const int passCount = INTERSECTION_COUNT * 2; + + if (ix.index == passCount) { + return shapeIntersection; + } + + for (int i = 0; i < passCount; ++i) { + // The loop should be: for (i = ix.index; i < passCount; ++i) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to continue instead. + if (i < ix.index) { + continue; + } + + ix.index = i + 1; + + surfaceIntersection = ix.intersections[i]; + int intersectionType = int(length(surfaceIntersection.xyz) - 0.5); + bool currShapeIsPositive = intersectionType < 2; + bool enter = intMod(intersectionType, 2) == 0; + + ix.surroundCount += enter ? +1 : -1; + ix.surroundIsPositive = currShapeIsPositive ? enter : ix.surroundIsPositive; + + // entering positive or exiting negative + if (ix.surroundCount == 1 && ix.surroundIsPositive && enter == currShapeIsPositive) { + shapeIntersection.entry = surfaceIntersection; + } + + // exiting positive or entering negative after being inside positive + bool exitPositive = !enter && currShapeIsPositive && ix.surroundCount == 0; + bool enterNegativeFromPositive = enter && !currShapeIsPositive && ix.surroundCount == 2 && ix.surroundIsPositive; + if (exitPositive || enterNegativeFromPositive) { + shapeIntersection.exit = surfaceIntersection; + + // entry and exit have been found, so the loop can stop + if (exitPositive) { + // After exiting positive shape there is nothing left to intersect, so jump to the end index. + ix.index = passCount; + } + break; + } + } + + return shapeIntersection; +} +#endif + +// NOTE: initializeIntersections, nextIntersection aren't even declared unless INTERSECTION_COUNT > 1 +`;var Pk=`// See IntersectionUtils.glsl for the definitions of Ray, Intersections, +// setIntersectionPair, INF_HIT, NO_HIT + +/* intersectDepth defines (set in Scene/VoxelRenderResources.js) +#define DEPTH_INTERSECTION_INDEX ### +*/ + +uniform mat4 u_transformPositionViewToUv; + +void intersectDepth(in vec2 screenCoord, in Ray ray, inout Intersections ix) { + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, screenCoord)); + float entry; + float exit; + if (logDepthOrDepth != 0.0) { + // Calculate how far the ray must travel before it hits the depth buffer. + vec4 eyeCoordinateDepth = czm_screenToEyeCoordinates(screenCoord, logDepthOrDepth); + eyeCoordinateDepth /= eyeCoordinateDepth.w; + vec3 depthPositionUv = vec3(u_transformPositionViewToUv * eyeCoordinateDepth); + entry = dot(depthPositionUv - ray.pos, ray.dir); + exit = +INF_HIT; + } else { + // There's no depth at this location. + entry = NO_HIT; + exit = NO_HIT; + } + ix.distanceToDepthBuffer = entry; +#if defined(DEPTH_TEST) + setIntersectionPair(ix, DEPTH_INTERSECTION_INDEX, vec2(entry, exit)); +#endif +} +`;var Rk=`// See IntersectionUtils.glsl for the definitions of Ray, Intersections, INF_HIT, +// NO_HIT, setShapeIntersection + +/* Clipping plane defines (set in Scene/VoxelRenderResources.js) +#define CLIPPING_PLANES_UNION +#define CLIPPING_PLANES_COUNT +#define CLIPPING_PLANES_INTERSECTION_INDEX +*/ + +uniform sampler2D u_clippingPlanesTexture; +uniform mat4 u_clippingPlanesMatrix; + +// Plane is in Hessian Normal Form +vec4 intersectPlane(in Ray ray, in vec4 plane) { + vec3 n = plane.xyz; // normal + float w = plane.w; // -dot(pointOnPlane, normal) + + float a = dot(ray.pos, n); + float b = dot(ray.dir, n); + float t = -(w + a) / b; + + return vec4(n, t); +} + +void intersectClippingPlanes(in Ray ray, inout Intersections ix) { + vec4 backSide = vec4(-ray.dir, -INF_HIT); + vec4 farSide = vec4(ray.dir, +INF_HIT); + RayShapeIntersection clippingVolume; + + #if (CLIPPING_PLANES_COUNT == 1) + // Union and intersection are the same when there's one clipping plane, and the code + // is more simplified. + vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, 0, u_clippingPlanesMatrix); + vec4 intersection = intersectPlane(ray, planeUv); + bool reflects = dot(ray.dir, intersection.xyz) < 0.0; + clippingVolume.entry = reflects ? backSide : intersection; + clippingVolume.exit = reflects ? intersection : farSide; + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume); + #elif defined(CLIPPING_PLANES_UNION) + vec4 firstTransmission = vec4(ray.dir, +INF_HIT); + vec4 lastReflection = vec4(-ray.dir, -INF_HIT); + for (int i = 0; i < CLIPPING_PLANES_COUNT; i++) { + vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, i, u_clippingPlanesMatrix); + vec4 intersection = intersectPlane(ray, planeUv); + if (dot(ray.dir, planeUv.xyz) > 0.0) { + firstTransmission = intersection.w <= firstTransmission.w ? intersection : firstTransmission; + } else { + lastReflection = intersection.w >= lastReflection.w ? intersection : lastReflection; + } + } + clippingVolume.entry = backSide; + clippingVolume.exit = lastReflection; + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 0, clippingVolume); + clippingVolume.entry = firstTransmission; + clippingVolume.exit = farSide; + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 1, clippingVolume); + #else // intersection + vec4 lastTransmission = vec4(ray.dir, -INF_HIT); + vec4 firstReflection = vec4(-ray.dir, +INF_HIT); + for (int i = 0; i < CLIPPING_PLANES_COUNT; i++) { + vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, i, u_clippingPlanesMatrix); + vec4 intersection = intersectPlane(ray, planeUv); + if (dot(ray.dir, planeUv.xyz) > 0.0) { + lastTransmission = intersection.w > lastTransmission.w ? intersection : lastTransmission; + } else { + firstReflection = intersection.w < firstReflection.w ? intersection: firstReflection; + } + } + if (lastTransmission.w < firstReflection.w) { + clippingVolume.entry = lastTransmission; + clippingVolume.exit = firstReflection; + } else { + clippingVolume.entry = vec4(-ray.dir, NO_HIT); + clippingVolume.exit = vec4(ray.dir, NO_HIT); + } + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume); + #endif +} +`;var Dw=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, INF_HIT, +// RayShapeIntersection + +vec4 intersectLongitude(in Ray ray, in float angle, in bool positiveNormal) { + float normalSign = positiveNormal ? 1.0 : -1.0; + vec2 planeNormal = vec2(-sin(angle), cos(angle)) * normalSign; + + vec2 position = ray.pos.xy; + vec2 direction = ray.dir.xy; + float approachRate = dot(direction, planeNormal); + float distance = -dot(position, planeNormal); + + float t = (approachRate == 0.0) + ? NO_HIT + : distance / approachRate; + + return vec4(planeNormal, 0.0, t); +} + +RayShapeIntersection intersectHalfSpace(in Ray ray, in float angle, in bool positiveNormal) +{ + vec4 intersection = intersectLongitude(ray, angle, positiveNormal); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + bool hitFront = (intersection.w > 0.0) == (dot(ray.pos.xy, intersection.xy) > 0.0); + if (!hitFront) { + return RayShapeIntersection(intersection, farSide); + } else { + return RayShapeIntersection(-1.0 * farSide, intersection); + } +} + +void intersectFlippedWedge(in Ray ray, in vec2 minMaxAngle, out RayShapeIntersection intersections[2]) +{ + intersections[0] = intersectHalfSpace(ray, minMaxAngle.x, false); + intersections[1] = intersectHalfSpace(ray, minMaxAngle.y, true); +} + +bool hitPositiveHalfPlane(in Ray ray, in vec4 intersection, in bool positiveNormal) { + float normalSign = positiveNormal ? 1.0 : -1.0; + vec2 planeDirection = vec2(intersection.y, -intersection.x) * normalSign; + vec2 hit = ray.pos.xy + intersection.w * ray.dir.xy; + return dot(hit, planeDirection) > 0.0; +} + +void intersectHalfPlane(in Ray ray, in float angle, out RayShapeIntersection intersections[2]) { + vec4 intersection = intersectLongitude(ray, angle, true); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + if (hitPositiveHalfPlane(ray, intersection, true)) { + intersections[0].entry = -1.0 * farSide; + intersections[0].exit = vec4(-1.0 * intersection.xy, 0.0, intersection.w); + intersections[1].entry = intersection; + intersections[1].exit = farSide; + } else { + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + intersections[0].entry = -1.0 * farSide; + intersections[0].exit = farSide; + intersections[1].entry = miss; + intersections[1].exit = miss; + } +} + +RayShapeIntersection intersectRegularWedge(in Ray ray, in vec2 minMaxAngle) +{ + // Note: works for maxAngle > minAngle + pi, where the "regular wedge" + // is actually a negative volume. + // Compute intersections with the two planes. + // Normals will point toward the "outside" (negative space) + vec4 intersect1 = intersectLongitude(ray, minMaxAngle.x, false); + vec4 intersect2 = intersectLongitude(ray, minMaxAngle.y, true); + + // Choose intersection with smallest T as the "first", the other as "last" + // Note: first or last could be in the "shadow" wedge, beyond the tip + bool inOrder = intersect1.w <= intersect2.w; + vec4 first = inOrder ? intersect1 : intersect2; + vec4 last = inOrder ? intersect2 : intersect1; + + bool firstIsAhead = first.w >= 0.0; + bool startedInsideFirst = dot(ray.pos.xy, first.xy) < 0.0; + bool exitFromInside = firstIsAhead == startedInsideFirst; + bool lastIsAhead = last.w > 0.0; + bool startedOutsideLast = dot(ray.pos.xy, last.xy) >= 0.0; + bool enterFromOutside = lastIsAhead == startedOutsideLast; + + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + + if (exitFromInside && enterFromOutside) { + // Ray crosses both faces of negative wedge, exiting then entering the positive shape + return RayShapeIntersection(first, last); + } else if (!exitFromInside && enterFromOutside) { + // Ray starts inside wedge. last is in shadow wedge, and first is actually the entry + return RayShapeIntersection(-1.0 * farSide, first); + } else if (exitFromInside && !enterFromOutside) { + // First intersection was in the shadow wedge, so last is actually the exit + return RayShapeIntersection(last, farSide); + } else { // !exitFromInside && !enterFromOutside + // Both intersections were in the shadow wedge + return RayShapeIntersection(miss, miss); + } +} +`;var Mk=`// See IntersectionUtils.glsl for the definitions of Ray, RayShapeIntersection, +// NO_HIT, Intersections + +/* Box defines (set in Scene/VoxelBoxShape.js) +#define BOX_INTERSECTION_INDEX ### // always 0 +*/ + +uniform vec3 u_renderMinBounds; +uniform vec3 u_renderMaxBounds; + +RayShapeIntersection intersectBox(in Ray ray, in vec3 minBound, in vec3 maxBound) +{ + // Consider the box as the intersection of the space between 3 pairs of parallel planes + // Compute the distance along the ray to each plane + vec3 t0 = (minBound - ray.pos) / ray.dir; + vec3 t1 = (maxBound - ray.pos) / ray.dir; + + // Identify candidate entries/exits based on distance from ray.pos + vec3 entries = min(t0, t1); + vec3 exits = max(t0, t1); + + vec3 directions = sign(ray.dir); + + // The actual intersection points are the furthest entry and the closest exit + float lastEntry = maxComponent(entries); + bvec3 isLastEntry = equal(entries, vec3(lastEntry)); + vec3 entryNormal = -1.0 * vec3(isLastEntry) * directions; + vec4 entry = vec4(entryNormal, lastEntry); + + float firstExit = minComponent(exits); + bvec3 isFirstExit = equal(exits, vec3(firstExit)); + vec3 exitNormal = vec3(isLastEntry) * directions; + vec4 exit = vec4(exitNormal, firstExit); + + if (entry.w > exit.w) { + entry.w = NO_HIT; + exit.w = NO_HIT; + } + + return RayShapeIntersection(entry, exit); +} + +void intersectShape(in Ray ray, inout Intersections ix) +{ + RayShapeIntersection intersection = intersectBox(ray, u_renderMinBounds, u_renderMaxBounds); + setShapeIntersection(ix, BOX_INTERSECTION_INDEX, intersection); +} +`;var Nk=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, Intersections, +// RayShapeIntersection, setSurfaceIntersection, setShapeIntersection, +// intersectIntersections +// See IntersectLongitude.glsl for the definitions of intersectHalfPlane, +// intersectFlippedWedge, intersectRegularWedge + +/* Cylinder defines (set in Scene/VoxelCylinderShape.js) +#define CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN +#define CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO + +#define CYLINDER_INTERSECTION_INDEX_RADIUS_MAX +#define CYLINDER_INTERSECTION_INDEX_RADIUS_MIN +#define CYLINDER_INTERSECTION_INDEX_ANGLE +*/ + +// Cylinder uniforms +uniform vec2 u_cylinderRenderRadiusMinMax; +uniform vec2 u_cylinderRenderHeightMinMax; +#if defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE) + uniform vec2 u_cylinderRenderAngleMinMax; +#endif + +/** + * Find the intersection of a ray with the volume defined by two planes of constant z + */ +RayShapeIntersection intersectHeightBounds(in Ray ray, in vec2 minMaxHeight, in bool convex) +{ + float zPosition = ray.pos.z; + float zDirection = ray.dir.z; + + float tmin = (minMaxHeight.x - zPosition) / zDirection; + float tmax = (minMaxHeight.y - zPosition) / zDirection; + + // Normals point outside the volume + float signFlip = convex ? 1.0 : -1.0; + vec4 intersectMin = vec4(0.0, 0.0, -1.0 * signFlip, tmin); + vec4 intersectMax = vec4(0.0, 0.0, 1.0 * signFlip, tmax); + + bool topEntry = zDirection < 0.0; + vec4 entry = topEntry ? intersectMax : intersectMin; + vec4 exit = topEntry ? intersectMin : intersectMax; + + return RayShapeIntersection(entry, exit); +} + +/** + * Find the intersection of a ray with a right cylindrical surface of a given radius + * about the z-axis. + */ +RayShapeIntersection intersectCylinder(in Ray ray, in float radius, in bool convex) +{ + vec2 position = ray.pos.xy; + vec2 direction = ray.dir.xy; + + float a = dot(direction, direction); + float b = dot(position, direction); + float c = dot(position, position) - radius * radius; + float determinant = b * b - a * c; + + if (determinant < 0.0) { + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + return RayShapeIntersection(miss, miss); + } + + determinant = sqrt(determinant); + float t1 = (-b - determinant) / a; + float t2 = (-b + determinant) / a; + float signFlip = convex ? 1.0 : -1.0; + vec4 intersect1 = vec4(normalize(position + t1 * direction) * signFlip, 0.0, t1); + vec4 intersect2 = vec4(normalize(position + t2 * direction) * signFlip, 0.0, t2); + + return RayShapeIntersection(intersect1, intersect2); +} + +/** + * Find the intersection of a ray with a right cylindrical solid of given + * radius and height bounds. NOTE: The shape is assumed to be convex. + */ +RayShapeIntersection intersectBoundedCylinder(in Ray ray, in float radius, in vec2 minMaxHeight) +{ + RayShapeIntersection cylinderIntersection = intersectCylinder(ray, radius, true); + RayShapeIntersection heightBoundsIntersection = intersectHeightBounds(ray, minMaxHeight, true); + return intersectIntersections(ray, cylinderIntersection, heightBoundsIntersection); +} + +void intersectShape(Ray ray, inout Intersections ix) +{ + // Position is converted from [0,1] to [-1,+1] because shape intersections assume unit space is [-1,+1]. + // Direction is scaled as well to be in sync with position. + ray.pos = ray.pos * 2.0 - 1.0; + ray.dir *= 2.0; + + RayShapeIntersection outerIntersect = intersectBoundedCylinder(ray, u_cylinderRenderRadiusMinMax.y, u_cylinderRenderHeightMinMax); + + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_RADIUS_MAX, outerIntersect); + + if (outerIntersect.entry.w == NO_HIT) { + return; + } + + #if defined(CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT) + // When the cylinder is perfectly thin it's necessary to sandwich the + // inner cylinder intersection inside the outer cylinder intersection. + + // Without this special case, + // [outerMin, outerMax, innerMin, innerMax] will bubble sort to + // [outerMin, innerMin, outerMax, innerMax] which will cause the back + // side of the cylinder to be invisible because it will think the ray + // is still inside the inner (negative) cylinder after exiting the + // outer (positive) cylinder. + + // With this special case, + // [outerMin, innerMin, innerMax, outerMax] will bubble sort to + // [outerMin, innerMin, innerMax, outerMax] which will work correctly. + + // Note: If initializeIntersections() changes its sorting function + // from bubble sort to something else, this code may need to change. + RayShapeIntersection innerIntersect = intersectCylinder(ray, 1.0, false); + setSurfaceIntersection(ix, 0, outerIntersect.entry, true, true); // positive, enter + setSurfaceIntersection(ix, 1, innerIntersect.entry, false, true); // negative, enter + setSurfaceIntersection(ix, 2, innerIntersect.exit, false, false); // negative, exit + setSurfaceIntersection(ix, 3, outerIntersect.exit, true, false); // positive, exit + #elif defined(CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN) + RayShapeIntersection innerIntersect = intersectCylinder(ray, u_cylinderRenderRadiusMinMax.x, false); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_RADIUS_MIN, innerIntersect); + #endif + + #if defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF) + RayShapeIntersection wedgeIntersect = intersectRegularWedge(ray, u_cylinderRenderAngleMinMax); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE, wedgeIntersect); + #elif defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF) + RayShapeIntersection wedgeIntersects[2]; + intersectFlippedWedge(ray, u_cylinderRenderAngleMinMax, wedgeIntersects); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 1, wedgeIntersects[1]); + #elif defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO) + RayShapeIntersection wedgeIntersects[2]; + intersectHalfPlane(ray, u_cylinderRenderAngleMinMax.x, wedgeIntersects); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 1, wedgeIntersects[1]); + #endif +} +`;var Lk=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, INF_HIT, Intersections, +// RayShapeIntersection, setSurfaceIntersection, setShapeIntersection +// See IntersectLongitude.glsl for the definitions of intersectHalfPlane, +// intersectFlippedWedge, intersectRegularWedge + +/* Ellipsoid defines (set in Scene/VoxelEllipsoidShape.js) +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF +#define ELLIPSOID_INTERSECTION_INDEX_LONGITUDE +#define ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX +#define ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN +#define ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX +#define ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN +*/ + +#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE) + uniform vec2 u_ellipsoidRenderLongitudeMinMax; +#endif +uniform float u_eccentricitySquared; +uniform vec2 u_ellipsoidRenderLatitudeSinMinMax; +uniform vec2 u_clipMinMaxHeight; + +RayShapeIntersection intersectZPlane(in Ray ray, in float z) { + float t = -ray.pos.z / ray.dir.z; + + bool startsOutside = sign(ray.pos.z) == sign(z); + bool entry = (t >= 0.0) != startsOutside; + + vec4 intersect = vec4(0.0, 0.0, z, t); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + if (entry) { + return RayShapeIntersection(intersect, farSide); + } else { + return RayShapeIntersection(-1.0 * farSide, intersect); + } +} + +RayShapeIntersection intersectHeight(in Ray ray, in float relativeHeight, in bool convex) +{ + // Scale the ray by the ellipsoid axes to make it a unit sphere + // Note: approximating ellipsoid + height as an ellipsoid + vec3 radiiCorrection = u_ellipsoidRadiiUv / (u_ellipsoidRadiiUv + relativeHeight); + vec3 position = ray.pos * radiiCorrection; + vec3 direction = ray.dir * radiiCorrection; + + float a = dot(direction, direction); // ~ 1.0 (or maybe 4.0 if ray is scaled) + float b = dot(direction, position); // roughly inside [-1.0, 1.0] when zoomed in + float c = dot(position, position) - 1.0; // ~ 0.0 when zoomed in. + float determinant = b * b - a * c; // ~ b * b when zoomed in + + if (determinant < 0.0) { + vec4 miss = vec4(normalize(direction), NO_HIT); + return RayShapeIntersection(miss, miss); + } + + determinant = sqrt(determinant); + + // Compute larger root using standard formula + float signB = b < 0.0 ? -1.0 : 1.0; + // The other root may suffer from subtractive cancellation in the standard formula. + // Compute it from the first root instead. + float t1 = (-b - signB * determinant) / a; + float t2 = c / (a * t1); + float tmin = min(t1, t2); + float tmax = max(t1, t2); + + float directionScale = convex ? 1.0 : -1.0; + vec3 d1 = directionScale * normalize(position + tmin * direction); + vec3 d2 = directionScale * normalize(position + tmax * direction); + + return RayShapeIntersection(vec4(d1, tmin), vec4(d2, tmax)); +} + +/** + * Given a circular cone around the z-axis, with apex at the origin, + * find the parametric distance(s) along a ray where that ray intersects + * the cone. + * The cone opening angle is described by the squared cosine of + * its half-angle (the angle between the Z-axis and the surface) + */ +vec2 intersectDoubleEndedCone(in Ray ray, in float cosSqrHalfAngle) +{ + vec3 o = ray.pos; + vec3 d = ray.dir; + float sinSqrHalfAngle = 1.0 - cosSqrHalfAngle; + + float aSin = d.z * d.z * sinSqrHalfAngle; + float aCos = -dot(d.xy, d.xy) * cosSqrHalfAngle; + float a = aSin + aCos; + + float bSin = d.z * o.z * sinSqrHalfAngle; + float bCos = -dot(o.xy, d.xy) * cosSqrHalfAngle; + float b = bSin + bCos; + + float cSin = o.z * o.z * sinSqrHalfAngle; + float cCos = -dot(o.xy, o.xy) * cosSqrHalfAngle; + float c = cSin + cCos; + // determinant = b * b - a * c. But bSin * bSin = aSin * cSin. + // Avoid subtractive cancellation by expanding to eliminate these terms + float determinant = 2.0 * bSin * bCos + bCos * bCos - aSin * cCos - aCos * cSin - aCos * cCos; + + if (determinant < 0.0) { + return vec2(NO_HIT); + } else if (a == 0.0) { + // Ray is parallel to cone surface + return (b == 0.0) + ? vec2(NO_HIT) // Ray is on cone surface + : vec2(-0.5 * c / b, NO_HIT); + } + + determinant = sqrt(determinant); + + // Compute larger root using standard formula + float signB = b < 0.0 ? -1.0 : 1.0; + float t1 = (-b - signB * determinant) / a; + // The other root may suffer from subtractive cancellation in the standard formula. + // Compute it from the first root instead. + float t2 = c / (a * t1); + float tmin = min(t1, t2); + float tmax = max(t1, t2); + return vec2(tmin, tmax); +} + +/** + * Given a point on a conical surface, find the surface normal at that point. + */ +vec3 getConeNormal(in vec3 p, in bool convex) { + // Start with radial component pointing toward z-axis + vec2 radial = -abs(p.z) * normalize(p.xy); + // Z component points toward opening of cone + float zSign = (p.z < 0.0) ? -1.0 : 1.0; + float z = length(p.xy) * zSign; + // Flip normal if shape is convex + float flip = (convex) ? -1.0 : 1.0; + return normalize(vec3(radial, z) * flip); +} + +/** + * Compute the shift between the ellipsoid origin and the apex of a cone of latitude + */ +float getLatitudeConeShift(in float sinLatitude) { + // Find prime vertical radius of curvature: + // the distance along the ellipsoid normal to the intersection with the z-axis + float x2 = u_eccentricitySquared * sinLatitude * sinLatitude; + float primeVerticalRadius = inversesqrt(1.0 - x2); + + // Compute a shift from the origin to the intersection of the cone with the z-axis + return primeVerticalRadius * u_eccentricitySquared * sinLatitude; +} + +void intersectFlippedCone(in Ray ray, in float cosHalfAngle, out RayShapeIntersection intersections[2]) { + // Undo the scaling from ellipsoid to sphere + ray.pos = ray.pos * u_ellipsoidRadiiUv; + ray.dir = ray.dir * u_ellipsoidRadiiUv; + // Shift the ray to account for the latitude cone not being centered at the Earth center + ray.pos.z += getLatitudeConeShift(cosHalfAngle); + + float cosSqrHalfAngle = cosHalfAngle * cosHalfAngle; + vec2 intersect = intersectDoubleEndedCone(ray, cosSqrHalfAngle); + + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + // Initialize output with no intersections + intersections[0].entry = -1.0 * farSide; + intersections[0].exit = farSide; + intersections[1].entry = miss; + intersections[1].exit = miss; + + if (intersect.x == NO_HIT) { + return; + } + + // Find the points of intersection + float tmin = intersect.x; + float tmax = intersect.y; + vec3 p0 = ray.pos + tmin * ray.dir; + vec3 p1 = ray.pos + tmax * ray.dir; + + vec4 intersect0 = vec4(getConeNormal(p0, true), tmin); + vec4 intersect1 = vec4(getConeNormal(p1, true), tmax); + + bool p0InShadowCone = sign(p0.z) != sign(cosHalfAngle); + bool p1InShadowCone = sign(p1.z) != sign(cosHalfAngle); + + if (p0InShadowCone && p1InShadowCone) { + // no valid intersections + } else if (p0InShadowCone) { + intersections[0].exit = intersect1; + } else if (p1InShadowCone) { + intersections[0].entry = intersect0; + } else { + intersections[0].exit = intersect0; + intersections[1].entry = intersect1; + intersections[1].exit = farSide; + } +} + +RayShapeIntersection intersectRegularCone(in Ray ray, in float cosHalfAngle, in bool convex) { + // Undo the scaling from ellipsoid to sphere + ray.pos = ray.pos * u_ellipsoidRadiiUv; + ray.dir = ray.dir * u_ellipsoidRadiiUv; + // Shift the ray to account for the latitude cone not being centered at the Earth center + ray.pos.z += getLatitudeConeShift(cosHalfAngle); + + float cosSqrHalfAngle = cosHalfAngle * cosHalfAngle; + vec2 intersect = intersectDoubleEndedCone(ray, cosSqrHalfAngle); + + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + if (intersect.x == NO_HIT) { + return RayShapeIntersection(miss, miss); + } + + // Find the points of intersection + float tmin = intersect.x; + float tmax = intersect.y; + vec3 p0 = ray.pos + tmin * ray.dir; + vec3 p1 = ray.pos + tmax * ray.dir; + + vec4 intersect0 = vec4(getConeNormal(p0, convex), tmin); + vec4 intersect1 = vec4(getConeNormal(p1, convex), tmax); + + bool p0InShadowCone = sign(p0.z) != sign(cosHalfAngle); + bool p1InShadowCone = sign(p1.z) != sign(cosHalfAngle); + + if (p0InShadowCone && p1InShadowCone) { + return RayShapeIntersection(miss, miss); + } else if (p0InShadowCone) { + return RayShapeIntersection(intersect1, farSide); + } else if (p1InShadowCone) { + return RayShapeIntersection(-1.0 * farSide, intersect0); + } else { + return RayShapeIntersection(intersect0, intersect1); + } +} + +void intersectShape(in Ray ray, inout Intersections ix) { + // Position is converted from [0,1] to [-1,+1] because shape intersections assume unit space is [-1,+1]. + // Direction is scaled as well to be in sync with position. + ray.pos = ray.pos * 2.0 - 1.0; + ray.dir *= 2.0; + + // Outer ellipsoid + RayShapeIntersection outerIntersect = intersectHeight(ray, u_clipMinMaxHeight.y, true); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX, outerIntersect); + + // Exit early if the outer ellipsoid was missed. + if (outerIntersect.entry.w == NO_HIT) { + return; + } + + // Inner ellipsoid + RayShapeIntersection innerIntersect = intersectHeight(ray, u_clipMinMaxHeight.x, false); + + if (innerIntersect.entry.w == NO_HIT) { + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN, innerIntersect); + } else { + // When the ellipsoid is large and thin it's possible for floating point math + // to cause the ray to intersect the inner ellipsoid before the outer ellipsoid. + // To prevent this from happening, clamp innerIntersect to outerIntersect and + // sandwich the inner ellipsoid intersection inside the outer ellipsoid intersection. + + // Without this special case, + // [outerMin, outerMax, innerMin, innerMax] will bubble sort to + // [outerMin, innerMin, outerMax, innerMax] which will cause the back + // side of the ellipsoid to be invisible because it will think the ray + // is still inside the inner (negative) ellipsoid after exiting the + // outer (positive) ellipsoid. + + // With this special case, + // [outerMin, innerMin, innerMax, outerMax] will bubble sort to + // [outerMin, innerMin, innerMax, outerMax] which will work correctly. + + // Note: If initializeIntersections() changes its sorting function + // from bubble sort to something else, this code may need to change. + innerIntersect.entry.w = max(innerIntersect.entry.w, outerIntersect.entry.w); + innerIntersect.exit.w = min(innerIntersect.exit.w, outerIntersect.exit.w); + setSurfaceIntersection(ix, 0, outerIntersect.entry, true, true); // positive, enter + setSurfaceIntersection(ix, 1, innerIntersect.entry, false, true); // negative, enter + setSurfaceIntersection(ix, 2, innerIntersect.exit, false, false); // negative, exit + setSurfaceIntersection(ix, 3, outerIntersect.exit, true, false); // positive, exit + } + + // Bottom cone + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF) + RayShapeIntersection bottomConeIntersection = intersectRegularCone(ray, u_ellipsoidRenderLatitudeSinMinMax.x, false); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN, bottomConeIntersection); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF) + RayShapeIntersection bottomConeIntersection = intersectZPlane(ray, -1.0); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN, bottomConeIntersection); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF) + RayShapeIntersection bottomConeIntersections[2]; + intersectFlippedCone(ray, u_ellipsoidRenderLatitudeSinMinMax.x, bottomConeIntersections); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN + 0, bottomConeIntersections[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN + 1, bottomConeIntersections[1]); + #endif + + // Top cone + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF) + RayShapeIntersection topConeIntersections[2]; + intersectFlippedCone(ray, u_ellipsoidRenderLatitudeSinMinMax.y, topConeIntersections); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX + 0, topConeIntersections[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX + 1, topConeIntersections[1]); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF) + RayShapeIntersection topConeIntersection = intersectZPlane(ray, 1.0); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX, topConeIntersection); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF) + RayShapeIntersection topConeIntersection = intersectRegularCone(ray, u_ellipsoidRenderLatitudeSinMinMax.y, false); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX, topConeIntersection); + #endif + + // Wedge + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO) + RayShapeIntersection wedgeIntersects[2]; + intersectHalfPlane(ray, u_ellipsoidRenderLongitudeMinMax.x, wedgeIntersects); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 1, wedgeIntersects[1]); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF) + RayShapeIntersection wedgeIntersect = intersectRegularWedge(ray, u_ellipsoidRenderLongitudeMinMax); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE, wedgeIntersect); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF) + RayShapeIntersection wedgeIntersects[2]; + intersectFlippedWedge(ray, u_ellipsoidRenderLongitudeMinMax, wedgeIntersects); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 1, wedgeIntersects[1]); + #endif +} +`;var tx=`// Main intersection function for Voxel scenes. +// See IntersectBox.glsl, IntersectCylinder.glsl, or IntersectEllipsoid.glsl +// for the definition of intersectShape. The appropriate function is selected +// based on the VoxelPrimitive shape type, and added to the shader in +// Scene/VoxelRenderResources.js. +// See also IntersectClippingPlane.glsl and IntersectDepth.glsl. +// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, +// getFirstIntersection, initializeIntersections, nextIntersection. + +/* Intersection defines (set in Scene/VoxelRenderResources.js) +#define INTERSECTION_COUNT ### +*/ + +RayShapeIntersection intersectScene(in vec2 screenCoord, in Ray ray, out Intersections ix) { + // Do a ray-shape intersection to find the exact starting and ending points. + intersectShape(ray, ix); + + // Exit early if the positive shape was completely missed or behind the ray. + RayShapeIntersection intersection = getFirstIntersection(ix); + if (intersection.entry.w == NO_HIT) { + // Positive shape was completely missed - so exit early. + return intersection; + } + + // Clipping planes + #if defined(CLIPPING_PLANES) + intersectClippingPlanes(ray, ix); + #endif + + // Depth + intersectDepth(screenCoord, ray, ix); + + // Find the first intersection that's in front of the ray + #if (INTERSECTION_COUNT > 1) + initializeIntersections(ix); + for (int i = 0; i < INTERSECTION_COUNT; ++i) { + intersection = nextIntersection(ix); + if (intersection.exit.w > 0.0) { + // Set start to 0.0 when ray is inside the shape. + intersection.entry.w = max(intersection.entry.w, 0.0); + break; + } + } + #else + // Set start to 0.0 when ray is inside the shape. + intersection.entry.w = max(intersection.entry.w, 0.0); + #endif + + return intersection; +} +`;var Ok=`/* Box defines (set in Scene/VoxelBoxShape.js) +#define BOX_HAS_SHAPE_BOUNDS +*/ + +#if defined(BOX_HAS_SHAPE_BOUNDS) + uniform vec3 u_boxUvToShapeUvScale; + uniform vec3 u_boxUvToShapeUvTranslate; +#endif + +PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) { + // For BOX, UV space = shape space, so we can use positionUv as-is, + // and the Jacobian is the identity matrix, except that a step of 1 + // only spans half the shape space [-1, 1], so the identity is scaled. + return PointJacobianT(positionUv, mat3(0.5)); +} + +vec3 convertShapeToShapeUvSpace(in vec3 positionShape) { +#if defined(BOX_HAS_SHAPE_BOUNDS) + return positionShape * u_boxUvToShapeUvScale + u_boxUvToShapeUvTranslate; +#else + return positionShape; +#endif +} + +PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) { + PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv); + pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point); + return pointJacobian; +} + +vec3 convertShapeUvToUvSpace(in vec3 shapeUv) { +#if defined(BOX_HAS_SHAPE_BOUNDS) + return (shapeUv - u_boxUvToShapeUvTranslate) / u_boxUvToShapeUvScale; +#else + return shapeUv; +#endif +} + +vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { +#if defined(BOX_HAS_SHAPE_BOUNDS) + return shapeUv / u_boxUvToShapeUvScale; +#else + return shapeUv; +#endif +}`;var Fk=`/* Cylinder defines (set in Scene/VoxelCylinderShape.js) +#define CYLINDER_HAS_SHAPE_BOUNDS_RADIUS +#define CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED +*/ + +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS) + uniform vec2 u_cylinderUvToShapeUvRadius; // x = scale, y = offset +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT) + uniform vec2 u_cylinderUvToShapeUvHeight; // x = scale, y = offset +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE) + uniform vec2 u_cylinderUvToShapeUvAngle; // x = scale, y = offset +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY) + uniform vec2 u_cylinderShapeUvAngleMinMax; +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED) + uniform float u_cylinderShapeUvAngleRangeZeroMid; +#endif + +PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) { + // Convert from Cartesian UV space [0, 1] to Cartesian local space [-1, 1] + vec3 position = positionUv * 2.0 - 1.0; + + float radius = length(position.xy); // [0, 1] + vec3 radial = normalize(vec3(position.xy, 0.0)); + + // Shape space height is defined within [0, 1] + float height = positionUv.z; // [0, 1] + vec3 z = vec3(0.0, 0.0, 1.0); + + float angle = atan(position.y, position.x); + vec3 east = normalize(vec3(-position.y, position.x, 0.0)); + + vec3 point = vec3(radius, angle, height); + mat3 jacobianT = mat3(radial, east / length(position.xy), z); + return PointJacobianT(point, jacobianT); +} + +vec3 convertShapeToShapeUvSpace(in vec3 positionShape) { + float radius = positionShape.x; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS) + radius = radius * u_cylinderUvToShapeUvRadius.x + u_cylinderUvToShapeUvRadius.y; + #endif + + float angle = (positionShape.y + czm_pi) / czm_twoPi; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE) + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED) + // Comparing against u_cylinderShapeUvAngleMinMax has precision problems. u_cylinderShapeUvAngleRangeZeroMid is more conservative. + angle += float(angle < u_cylinderShapeUvAngleRangeZeroMid); + #endif + + // Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity. + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) + angle = angle > u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.x : angle; + #elif defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY) + angle = angle < u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.y : angle; + #endif + + angle = angle * u_cylinderUvToShapeUvAngle.x + u_cylinderUvToShapeUvAngle.y; + #endif + + float height = positionShape.z; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT) + height = height * u_cylinderUvToShapeUvHeight.x + u_cylinderUvToShapeUvHeight.y; + #endif + + return vec3(radius, angle, height); +} + +PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) { + PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv); + pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point); + return pointJacobian; +} + +vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { + float radius = shapeUv.x; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS) + radius /= u_cylinderUvToShapeUvRadius.x; + #endif + + float angle = shapeUv.y * czm_twoPi; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE) + angle /= u_cylinderUvToShapeUvAngle.x; + #endif + + float height = shapeUv.z; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT) + height /= u_cylinderUvToShapeUvHeight.x; + #endif + + return vec3(radius, angle, height); +} +`;var Qk=`/* Ellipsoid defines (set in Scene/VoxelEllipsoidShape.js) +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY +#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE +#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED +#define ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE +*/ + +uniform vec3 u_ellipsoidRadiiUv; // [0,1] +uniform vec2 u_evoluteScale; // (radiiUv.x ^ 2 - radiiUv.z ^ 2) * vec2(1.0, -1.0) / radiiUv; +uniform vec3 u_ellipsoidInverseRadiiSquaredUv; +#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY) || defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY) || defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED) + uniform vec3 u_ellipsoidShapeUvLongitudeMinMaxMid; +#endif +#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE) + uniform vec2 u_ellipsoidUvToShapeUvLongitude; // x = scale, y = offset +#endif +#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE) + uniform vec2 u_ellipsoidUvToShapeUvLatitude; // x = scale, y = offset +#endif +uniform float u_ellipsoidInverseHeightDifferenceUv; + +// robust iterative solution without trig functions +// https://github.com/0xfaded/ellipse_demo/issues/1 +// https://stackoverflow.com/questions/22959698/distance-from-given-point-to-given-ellipse +// Extended to return radius of curvature along with the point +vec3 nearestPointAndRadiusOnEllipse(vec2 pos, vec2 radii) { + vec2 p = abs(pos); + vec2 inverseRadii = 1.0 / radii; + + // We describe the ellipse parametrically: v = radii * vec2(cos(t), sin(t)) + // but store the cos and sin of t in a vec2 for efficiency. + // Initial guess: t = pi/4 + vec2 tTrigs = vec2(0.7071067811865476); + // Initial guess of point on ellipsoid + vec2 v = radii * tTrigs; + // Center of curvature of the ellipse at v + vec2 evolute = u_evoluteScale * tTrigs * tTrigs * tTrigs; + + const int iterations = 3; + for (int i = 0; i < iterations; ++i) { + // Find the (approximate) intersection of p - evolute with the ellipsoid. + vec2 q = normalize(p - evolute) * length(v - evolute); + // Update the estimate of t. + tTrigs = (q + evolute) * inverseRadii; + tTrigs = normalize(clamp(tTrigs, 0.0, 1.0)); + v = radii * tTrigs; + evolute = u_evoluteScale * tTrigs * tTrigs * tTrigs; + } + + return vec3(v * sign(pos), length(v - evolute)); +} + +PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) { + // Convert from UV space [0, 1] to local space [-1, 1] + vec3 position = positionUv * 2.0 - 1.0; + // Undo the scaling from ellipsoid to sphere + position = position * u_ellipsoidRadiiUv; + + float longitude = atan(position.y, position.x); + vec3 east = normalize(vec3(-position.y, position.x, 0.0)); + + // Convert the 3D position to a 2D position relative to the ellipse (radii.x, radii.z) + // (assume radii.y == radii.x) and find the nearest point on the ellipse and its normal + float distanceFromZAxis = length(position.xy); + vec2 posEllipse = vec2(distanceFromZAxis, position.z); + vec3 surfacePointAndRadius = nearestPointAndRadiusOnEllipse(posEllipse, u_ellipsoidRadiiUv.xz); + vec2 surfacePoint = surfacePointAndRadius.xy; + + vec2 normal2d = normalize(surfacePoint * u_ellipsoidInverseRadiiSquaredUv.xz); + float latitude = atan(normal2d.y, normal2d.x); + vec3 north = vec3(-normal2d.y * normalize(position.xy), abs(normal2d.x)); + + float heightSign = length(posEllipse) < length(surfacePoint) ? -1.0 : 1.0; + float height = heightSign * length(posEllipse - surfacePoint); + vec3 up = normalize(cross(east, north)); + + vec3 point = vec3(longitude, latitude, height); + mat3 jacobianT = mat3(east / distanceFromZAxis, north / (surfacePointAndRadius.z + height), up); + return PointJacobianT(point, jacobianT); +} + +vec3 convertShapeToShapeUvSpace(in vec3 positionShape) { + // Longitude: shift & scale to [0, 1] + float longitude = (positionShape.x + czm_pi) / czm_twoPi; + + // Correct the angle when max < min + // Technically this should compare against min longitude - but it has precision problems so compare against the middle of empty space. + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED) + longitude += float(longitude < u_ellipsoidShapeUvLongitudeMinMaxMid.z); + #endif + + // Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity. + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY) + longitude = longitude > u_ellipsoidShapeUvLongitudeMinMaxMid.z ? u_ellipsoidShapeUvLongitudeMinMaxMid.x : longitude; + #endif + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY) + longitude = longitude < u_ellipsoidShapeUvLongitudeMinMaxMid.z ? u_ellipsoidShapeUvLongitudeMinMaxMid.y : longitude; + #endif + + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE) + longitude = longitude * u_ellipsoidUvToShapeUvLongitude.x + u_ellipsoidUvToShapeUvLongitude.y; + #endif + + // Latitude: shift and scale to [0, 1] + float latitude = (positionShape.y + czm_piOverTwo) / czm_pi; + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE) + latitude = latitude * u_ellipsoidUvToShapeUvLatitude.x + u_ellipsoidUvToShapeUvLatitude.y; + #endif + + // Height: scale to the range [0, 1] + float height = 1.0 + positionShape.z * u_ellipsoidInverseHeightDifferenceUv; + + return vec3(longitude, latitude, height); +} + +PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) { + PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv); + pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point); + return pointJacobian; +} + +vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { + // Convert from [0, 1] to radians [-pi, pi] + float longitude = shapeUv.x * czm_twoPi; + #if defined (ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE) + longitude /= u_ellipsoidUvToShapeUvLongitude.x; + #endif + + // Convert from [0, 1] to radians [-pi/2, pi/2] + float latitude = shapeUv.y * czm_pi; + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE) + latitude /= u_ellipsoidUvToShapeUvLatitude.x; + #endif + + float height = shapeUv.z / u_ellipsoidInverseHeightDifferenceUv; + + return vec3(longitude, latitude, height); +} +`;var kk=`// These octree flags must be in sync with GpuOctreeFlag in VoxelTraversal.js +#define OCTREE_FLAG_INTERNAL 0 +#define OCTREE_FLAG_LEAF 1 +#define OCTREE_FLAG_PACKED_LEAF_FROM_PARENT 2 + +#define OCTREE_MAX_LEVELS 32 // Harcoded value because GLSL doesn't like variable length loops + +uniform sampler2D u_octreeInternalNodeTexture; +uniform vec2 u_octreeInternalNodeTexelSizeUv; +uniform int u_octreeInternalNodeTilesPerRow; +#if (SAMPLE_COUNT > 1) +uniform sampler2D u_octreeLeafNodeTexture; +uniform vec2 u_octreeLeafNodeTexelSizeUv; +uniform int u_octreeLeafNodeTilesPerRow; +#endif +uniform ivec3 u_dimensions; // does not include padding, and is in the z-up orientation +uniform ivec3 u_inputDimensions; // includes padding, and is in the orientation of the input data +#if defined(PADDING) + uniform ivec3 u_paddingBefore; +#endif + +struct OctreeNodeData { + int data; + int flag; +}; + +struct TraversalData { + ivec4 octreeCoords; + int parentOctreeIndex; +}; + +struct SampleData { + int megatextureIndex; + ivec4 tileCoords; + vec3 tileUv; + vec3 inputCoordinate; + #if (SAMPLE_COUNT > 1) + float weight; + #endif +}; + +// Integer mod: For WebGL1 only +int intMod(in int a, in int b) { + return a - (b * (a / b)); +} +int normU8_toInt(in float value) { + return int(value * 255.0); +} +int normU8x2_toInt(in vec2 value) { + return int(value.x * 255.0) + 256 * int(value.y * 255.0); +} +float normU8x2_toFloat(in vec2 value) { + return float(normU8x2_toInt(value)) / 65535.0; +} + +OctreeNodeData getOctreeNodeData(in vec2 octreeUv) { + vec4 texData = texture(u_octreeInternalNodeTexture, octreeUv); + + OctreeNodeData data; + data.data = normU8x2_toInt(texData.xy); + data.flag = normU8x2_toInt(texData.zw); + return data; +} + +OctreeNodeData getOctreeChildData(in int parentOctreeIndex, in ivec3 childCoord) { + int childIndex = childCoord.z * 4 + childCoord.y * 2 + childCoord.x; + int octreeCoordX = intMod(parentOctreeIndex, u_octreeInternalNodeTilesPerRow) * 9 + 1 + childIndex; + int octreeCoordY = parentOctreeIndex / u_octreeInternalNodeTilesPerRow; + vec2 octreeUv = u_octreeInternalNodeTexelSizeUv * vec2(float(octreeCoordX) + 0.5, float(octreeCoordY) + 0.5); + return getOctreeNodeData(octreeUv); +} + +int getOctreeParentIndex(in int octreeIndex) { + int octreeCoordX = intMod(octreeIndex, u_octreeInternalNodeTilesPerRow) * 9; + int octreeCoordY = octreeIndex / u_octreeInternalNodeTilesPerRow; + vec2 octreeUv = u_octreeInternalNodeTexelSizeUv * vec2(float(octreeCoordX) + 0.5, float(octreeCoordY) + 0.5); + vec4 parentData = texture(u_octreeInternalNodeTexture, octreeUv); + int parentOctreeIndex = normU8x2_toInt(parentData.xy); + return parentOctreeIndex; +} + +/** +* Convert a position in the uv-space of the tileset bounding shape +* into the uv-space of a tile within the tileset +*/ +vec3 getTileUv(in vec3 shapePosition, in ivec4 octreeCoords) { + // PERFORMANCE_IDEA: use bit-shifting (only in WebGL2) + float dimAtLevel = exp2(float(octreeCoords.w)); + return shapePosition * dimAtLevel - vec3(octreeCoords.xyz); +} + +vec3 getClampedTileUv(in vec3 shapePosition, in ivec4 octreeCoords) { + vec3 tileUv = getTileUv(shapePosition, octreeCoords); + return clamp(tileUv, vec3(0.0), vec3(1.0)); +} + +void addSampleCoordinates(in vec3 shapePosition, inout SampleData sampleData) { + vec3 tileUv = getClampedTileUv(shapePosition, sampleData.tileCoords); + + vec3 inputCoordinate = tileUv * vec3(u_dimensions); +#if defined(PADDING) + inputCoordinate += vec3(u_paddingBefore); +#endif +#if defined(Y_UP_METADATA_ORDER) +#if defined(SHAPE_BOX) + float inputY = inputCoordinate.y; + inputCoordinate.y = float(u_inputDimensions.y) - inputCoordinate.z; + inputCoordinate.z = inputY; +#elif defined(SHAPE_CYLINDER) + float angle = inputCoordinate.y; + float height = inputCoordinate.z; + #if (!defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE)) + // Account for the different 0-angle convention in glTF vs 3DTiles + if (sampleData.tileCoords.w == 0) { + float angleCount = float(u_inputDimensions.z); + angle = mod(angle + angleCount / 2.0, angleCount); + } + #endif + inputCoordinate.y = height; + inputCoordinate.z = angle; +#endif +#endif + + sampleData.tileUv = tileUv; + sampleData.inputCoordinate = inputCoordinate; +} + +void getOctreeLeafSampleData(in OctreeNodeData data, in ivec4 octreeCoords, out SampleData sampleData) { + sampleData.megatextureIndex = data.data; + sampleData.tileCoords = (data.flag == OCTREE_FLAG_PACKED_LEAF_FROM_PARENT) + ? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1) + : octreeCoords; +} + +#if (SAMPLE_COUNT > 1) +void getOctreeLeafSampleDatas(in OctreeNodeData data, in ivec4 octreeCoords, out SampleData sampleDatas[SAMPLE_COUNT]) { + int leafIndex = data.data; + int leafNodeTexelCount = 2; + // Adding 0.5 moves to the center of the texel + float leafCoordXStart = float(intMod(leafIndex, u_octreeLeafNodeTilesPerRow) * leafNodeTexelCount) + 0.5; + float leafCoordY = float(leafIndex / u_octreeLeafNodeTilesPerRow) + 0.5; + + // Get an interpolation weight and a flag to determine whether to read the parent texture + vec2 leafUv0 = u_octreeLeafNodeTexelSizeUv * vec2(leafCoordXStart + 0.0, leafCoordY); + vec4 leafData0 = texture(u_octreeLeafNodeTexture, leafUv0); + float lerp = normU8x2_toFloat(leafData0.xy); + sampleDatas[0].weight = 1.0 - lerp; + sampleDatas[1].weight = lerp; + // TODO: this looks wrong? Should be comparing to OCTREE_FLAG_PACKED_LEAF_FROM_PARENT + sampleDatas[0].tileCoords = (normU8_toInt(leafData0.z) == 1) + ? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1) + : octreeCoords; + sampleDatas[1].tileCoords = (normU8_toInt(leafData0.w) == 1) + ? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1) + : octreeCoords; + + // Get megatexture indices for both samples + vec2 leafUv1 = u_octreeLeafNodeTexelSizeUv * vec2(leafCoordXStart + 1.0, leafCoordY); + vec4 leafData1 = texture(u_octreeLeafNodeTexture, leafUv1); + sampleDatas[0].megatextureIndex = normU8x2_toInt(leafData1.xy); + sampleDatas[1].megatextureIndex = normU8x2_toInt(leafData1.zw); +} +#endif + +OctreeNodeData traverseOctreeDownwards(in vec3 shapePosition, inout TraversalData traversalData) { + float sizeAtLevel = exp2(-1.0 * float(traversalData.octreeCoords.w)); + vec3 start = vec3(traversalData.octreeCoords.xyz) * sizeAtLevel; + vec3 end = start + vec3(sizeAtLevel); + OctreeNodeData childData; + + for (int i = 0; i < OCTREE_MAX_LEVELS; ++i) { + // Find out which octree child contains the position + // 0 if before center, 1 if after + vec3 center = 0.5 * (start + end); + vec3 childCoord = step(center, shapePosition); + + // Get octree coords for the next level down + ivec4 octreeCoords = traversalData.octreeCoords; + traversalData.octreeCoords = ivec4(octreeCoords.xyz * 2 + ivec3(childCoord), octreeCoords.w + 1); + + childData = getOctreeChildData(traversalData.parentOctreeIndex, ivec3(childCoord)); + + if (childData.flag != OCTREE_FLAG_INTERNAL) { + // leaf tile - stop traversing + break; + } + + // interior tile - keep going deeper + start = mix(start, center, childCoord); + end = mix(center, end, childCoord); + traversalData.parentOctreeIndex = childData.data; + } + + return childData; +} + +/** +* Transform a given position to an octree tile coordinate and a position within that tile, +* and find the corresponding megatexture index and texture coordinates +*/ +void traverseOctreeFromBeginning(in vec3 shapePosition, out TraversalData traversalData, out SampleData sampleDatas[SAMPLE_COUNT]) { + traversalData.octreeCoords = ivec4(0); + traversalData.parentOctreeIndex = 0; + + OctreeNodeData nodeData = getOctreeNodeData(vec2(0.0)); + if (nodeData.flag != OCTREE_FLAG_LEAF) { + nodeData = traverseOctreeDownwards(shapePosition, traversalData); + } + + #if (SAMPLE_COUNT == 1) + getOctreeLeafSampleData(nodeData, traversalData.octreeCoords, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[0]); + #else + getOctreeLeafSampleDatas(nodeData, traversalData.octreeCoords, sampleDatas); + addSampleCoordinates(shapePosition, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[1]); + #endif +} + +bool inRange(in vec3 v, in vec3 minVal, in vec3 maxVal) { + return clamp(v, minVal, maxVal) == v; +} + +bool insideTile(in vec3 shapePosition, in ivec4 octreeCoords) { + vec3 tileUv = getTileUv(shapePosition, octreeCoords); + bool inside = inRange(tileUv, vec3(0.0), vec3(1.0)); + // Assume (!) the position is always inside the root tile. + return inside || octreeCoords.w == 0; +} + +void traverseOctreeFromExisting(in vec3 shapePosition, inout TraversalData traversalData, inout SampleData sampleDatas[SAMPLE_COUNT]) { + if (insideTile(shapePosition, traversalData.octreeCoords)) { + for (int i = 0; i < SAMPLE_COUNT; i++) { + addSampleCoordinates(shapePosition, sampleDatas[i]); + } + return; + } + + // Go up tree until we find a parent tile containing shapePosition + for (int i = 0; i < OCTREE_MAX_LEVELS; ++i) { + traversalData.octreeCoords.xyz /= 2; + traversalData.octreeCoords.w -= 1; + + if (insideTile(shapePosition, traversalData.octreeCoords)) { + break; + } + + traversalData.parentOctreeIndex = getOctreeParentIndex(traversalData.parentOctreeIndex); + } + + // Go down tree + OctreeNodeData nodeData = traverseOctreeDownwards(shapePosition, traversalData); + + #if (SAMPLE_COUNT == 1) + getOctreeLeafSampleData(nodeData, traversalData.octreeCoords, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[0]); + #else + getOctreeLeafSampleDatas(nodeData, traversalData.octreeCoords, sampleDatas); + addSampleCoordinates(shapePosition, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[1]); + #endif +} +`;var Uk=`// See Octree.glsl for the definitions of SampleData and intMod + +/* Megatexture defines (set in Scene/VoxelRenderResources.js) +#define SAMPLE_COUNT ### +#define NEAREST_SAMPLING +#define PADDING +*/ + +uniform ivec2 u_megatextureSliceDimensions; // number of slices per tile, in two dimensions +uniform ivec2 u_megatextureTileDimensions; // number of tiles per megatexture, in two dimensions +uniform vec2 u_megatextureVoxelSizeUv; +uniform vec2 u_megatextureSliceSizeUv; +uniform vec2 u_megatextureTileSizeUv; + +// Integer min, max, clamp: For WebGL1 only +int intMin(int a, int b) { + return a <= b ? a : b; +} +int intMax(int a, int b) { + return a >= b ? a : b; +} +int intClamp(int v, int minVal, int maxVal) { + return intMin(intMax(v, minVal), maxVal); +} + +vec2 index1DTo2DTexcoord(int index, ivec2 dimensions, vec2 uvScale) +{ + int indexX = intMod(index, dimensions.x); + int indexY = index / dimensions.x; + return vec2(indexX, indexY) * uvScale; +} + +/* + How is 3D data stored in a 2D megatexture? + + In this example there is only one loaded tile and it has 2x2x2 voxels (8 voxels total). + The data is sliced by Z. The data at Z = 0 is placed in texels (0,0), (0,1), (1,0), (1,1) and + the data at Z = 1 is placed in texels (2,0), (2,1), (3,0), (3,1). + Note that there could be empty space in the megatexture because it's a power of two. + + 0 1 2 3 + +---+---+---+---+ + | | | | | 3 + +---+---+---+---+ + | | | | | 2 + +-------+-------+ + |010|110|011|111| 1 + |--- ---|--- ---| + |000|100|001|101| 0 + +-------+-------+ + + When doing linear interpolation the megatexture needs to be sampled twice: once for + the Z slice above the voxel coordinate and once for the slice below. The two slices + are interpolated with fract(coord.z - 0.5). For example, a Z coordinate of 1.0 is + halfway between two Z slices so the interpolation factor is 0.5. Below is a side view + of the 3D voxel grid with voxel coordinates on the left side. + + 2 +---+ + |001| + 1 +-z-+ + |000| + 0 +---+ + + When doing nearest neighbor the megatexture only needs to be sampled once at the closest Z slice. +*/ + +Properties getPropertiesFromMegatexture(in SampleData sampleData) { + int tileIndex = sampleData.megatextureIndex; + + vec3 voxelCoord = sampleData.inputCoordinate; + #if defined(NEAREST_SAMPLING) + // Round to the center of the nearest voxel + voxelCoord = floor(voxelCoord) + vec3(0.5); + #endif + + // Tile location + vec2 tileUvOffset = index1DTo2DTexcoord(tileIndex, u_megatextureTileDimensions, u_megatextureTileSizeUv); + + // Slice location + float slice = voxelCoord.z - 0.5; + int sliceIndex = int(floor(slice)); + int sliceIndex0 = intClamp(sliceIndex, 0, u_inputDimensions.z - 1); + vec2 sliceUvOffset0 = index1DTo2DTexcoord(sliceIndex0, u_megatextureSliceDimensions, u_megatextureSliceSizeUv); + + // Voxel location + vec2 voxelUvOffset = clamp(voxelCoord.xy, vec2(0.5), vec2(u_inputDimensions.xy) - vec2(0.5)) * u_megatextureVoxelSizeUv; + + // Final location in the megatexture + vec2 uv0 = tileUvOffset + sliceUvOffset0 + voxelUvOffset; + + #if defined(NEAREST_SAMPLING) + return getPropertiesFromMegatextureAtUv(uv0); + #else + float sliceLerp = fract(slice); + int sliceIndex1 = intMin(sliceIndex + 1, u_inputDimensions.z - 1); + vec2 sliceUvOffset1 = index1DTo2DTexcoord(sliceIndex1, u_megatextureSliceDimensions, u_megatextureSliceSizeUv); + vec2 uv1 = tileUvOffset + sliceUvOffset1 + voxelUvOffset; + Properties properties0 = getPropertiesFromMegatextureAtUv(uv0); + Properties properties1 = getPropertiesFromMegatextureAtUv(uv1); + return mixProperties(properties0, properties1, sliceLerp); + #endif +} + +// Convert an array of sample datas to a final weighted properties. +Properties accumulatePropertiesFromMegatexture(in SampleData sampleDatas[SAMPLE_COUNT]) { + #if (SAMPLE_COUNT == 1) + return getPropertiesFromMegatexture(sampleDatas[0]); + #else + // When more than one sample is taken the accumulator needs to start at 0 + Properties properties = clearProperties(); + for (int i = 0; i < SAMPLE_COUNT; ++i) { + float weight = sampleDatas[i].weight; + + // Avoid reading the megatexture when the weight is 0 as it can be costly. + if (weight > 0.0) { + Properties tempProperties = getPropertiesFromMegatexture(sampleDatas[i]); + tempProperties = scaleProperties(tempProperties, weight); + properties = sumProperties(properties, tempProperties); + } + } + return properties; + #endif +} +`;var Xxt={Z_UP:0,Y_UP:1},Yd=Object.freeze(Xxt);function Jxt(e){let t=new Xp;this.shaderBuilder=t;let n=e._customShader,i=Tt(e._uniformMap,n.uniformMap);e._uniformMap=i;let o=n.uniforms;for(let A in o)if(o.hasOwnProperty(A)){let g=o[A];t.addUniform(g.type,A,pe.FRAGMENT)}t.addUniform("sampler2D","u_megatextureTextures[METADATA_COUNT]",pe.FRAGMENT),this.uniformMap=i;let r=e._clippingPlanes,s=l(r)&&r.enabled?r.length:0;this.clippingPlanes=r,this.clippingPlanesLength=s,t.addVertexLines([Dk]),e.provider.metadataOrder===Yd.Y_UP&&t.addDefine("Y_UP_METADATA_ORDER",void 0,pe.FRAGMENT);let a=e._provider.shape;a==="BOX"?t.addDefine("SHAPE_BOX",void 0,pe.FRAGMENT):a==="CYLINDER"?t.addDefine("SHAPE_CYLINDER",void 0,pe.FRAGMENT):a==="ELLIPSOID"&&t.addDefine("SHAPE_ELLIPSOID",void 0,pe.FRAGMENT),t.addFragmentLines([n.fragmentShaderText,"#line 0",kk,wk,vk,Uk]),s>0&&(t.addDefine("CLIPPING_PLANES",void 0,pe.FRAGMENT),t.addDefine("CLIPPING_PLANES_COUNT",s,pe.FRAGMENT),r.unionClippingRegions&&t.addDefine("CLIPPING_PLANES_UNION",void 0,pe.FRAGMENT),t.addFragmentLines([Rk])),t.addFragmentLines([Pk]),e._depthTest&&t.addDefine("DEPTH_TEST",void 0,pe.FRAGMENT),a==="BOX"?t.addFragmentLines([Ok,Mk,tx]):a==="CYLINDER"?t.addFragmentLines([Fk,Dw,Nk,tx]):a==="ELLIPSOID"&&t.addFragmentLines([Qk,Dw,Lk,tx]),t.addFragmentLines([Bk]);let c=e._shape,u=c.shaderDefines;for(let A in u)if(u.hasOwnProperty(A)){let g=u[A];l(g)&&(g=g===!0?void 0:g,t.addDefine(A,g,pe.FRAGMENT))}let f=c.shaderMaximumIntersectionsLength;s>0&&(t.addDefine("CLIPPING_PLANES_INTERSECTION_INDEX",f,pe.FRAGMENT),s===1?f+=1:r.unionClippingRegions?f+=2:f+=1),e._depthTest&&(t.addDefine("DEPTH_INTERSECTION_INDEX",f,pe.FRAGMENT),f+=1),t.addDefine("INTERSECTION_COUNT",f,pe.FRAGMENT),(!d.equals(e.paddingBefore,d.ZERO)||!d.equals(e.paddingAfter,d.ZERO))&&t.addDefine("PADDING",void 0,pe.FRAGMENT),e._useLogDepth&&t.addDefine("LOG_DEPTH_READ_ONLY",void 0,pe.FRAGMENT),e._nearestSampling&&t.addDefine("NEAREST_SAMPLING",void 0,pe.FRAGMENT);let h=e._traversal;t.addDefine("SAMPLE_COUNT",`${h._sampleCount}`,pe.FRAGMENT)}var Gk=Jxt;function Zxt(e,t){let{shaderBuilder:n}=e,{names:i,types:o,componentTypes:r,minimumValues:s,maximumValues:a}=t._provider,c=o.length,u=l(s)&&l(a);n.addDefine("METADATA_COUNT",c,pe.FRAGMENT),u&&n.addDefine("STATISTICS",void 0,pe.FRAGMENT);for(let p=0;p<c;p++){let x=i[p],T=ZH(o[p]),w=`PropertyStatistics_${x}`,R=`PropertyStatistics_${x}`;n.addStruct(w,R,pe.FRAGMENT),n.addStructField(w,T,"min"),n.addStructField(w,T,"max")}let f="MetadataStatistics",h="MetadataStatistics",A="metadataStatistics";n.addStruct(f,h,pe.FRAGMENT);for(let p=0;p<c;p++){let x=i[p],T=`PropertyStatistics_${x}`,w=x;n.addStructField(f,T,w)}let g="Metadata",m="Metadata",_="metadata";n.addStruct(g,m,pe.FRAGMENT);for(let p=0;p<c;p++){let x=ZH(o[p]);n.addStructField(g,x,i[p])}let y="Attributes",C="Attributes",E="attributes";n.addStruct(y,C,pe.FRAGMENT),n.addStructField(y,"vec3","positionEC"),n.addStructField(y,"vec3","normalEC");let I="Voxel",b="Voxel",S="voxel";n.addStruct(I,b,pe.FRAGMENT),n.addStructField(I,"vec3","viewDirUv"),n.addStructField(I,"float","travelDistance"),n.addStructField(I,"int","stepCount"),n.addStructField(I,"int","tileIndex"),n.addStructField(I,"int","sampleIndex"),n.addStructField(I,"float","distanceToDepthBuffer");let B="FragmentInput";n.addStruct(B,"FragmentInput",pe.FRAGMENT),n.addStructField(B,h,A),n.addStructField(B,m,_),n.addStructField(B,C,E),n.addStructField(B,b,S);let P="Properties",M="Properties",L="properties";n.addStruct(P,M,pe.FRAGMENT);for(let p=0;p<c;p++){let x=ZH(o[p]);n.addStructField(P,x,i[p])}{let p="clearProperties";n.addFunction(p,`${M} clearProperties()`,pe.FRAGMENT),n.addFunctionLines(p,[`${M} ${L};`]);for(let x=0;x<c;x++){let T=ZH(o[x],r[x]);n.addFunctionLines(p,[`${L}.${i[x]} = ${T}(0.0);`])}n.addFunctionLines(p,[`return ${L};`])}{let p="sumProperties";n.addFunction(p,`${M} sumProperties(${M} propertiesA, ${M} propertiesB)`,pe.FRAGMENT),n.addFunctionLines(p,[`${M} ${L};`]);for(let x=0;x<c;x++){let T=i[x];n.addFunctionLines(p,[`${L}.${T} = propertiesA.${T} + propertiesB.${T};`])}n.addFunctionLines(p,[`return ${L};`])}{let p="scaleProperties";n.addFunction(p,`${M} scaleProperties(${M} ${L}, float scale)`,pe.FRAGMENT),n.addFunctionLines(p,[`${M} scaledProperties = ${L};`]);for(let x=0;x<c;x++)n.addFunctionLines(p,[`scaledProperties.${i[x]} *= scale;`]);n.addFunctionLines(p,["return scaledProperties;"])}{let p="mixProperties";n.addFunction(p,`${M} mixProperties(${M} propertiesA, ${M} propertiesB, float mixFactor)`,pe.FRAGMENT),n.addFunctionLines(p,[`${M} ${L};`]);for(let x=0;x<c;x++){let T=i[x];n.addFunctionLines(p,[`${L}.${T} = mix(propertiesA.${T}, propertiesB.${T}, mixFactor);`])}n.addFunctionLines(p,[`return ${L};`])}{let p="copyPropertiesToMetadata";n.addFunction(p,`void copyPropertiesToMetadata(in ${M} ${L}, inout ${m} ${_})`,pe.FRAGMENT);for(let x=0;x<c;x++){let T=i[x];n.addFunctionLines(p,[`${_}.${T} = ${L}.${T};`])}}if(u){let p="setStatistics";n.addFunction(p,`void setStatistics(inout ${h} ${A})`,pe.FRAGMENT);for(let x=0;x<c;x++){let T=i[x],w=o[x],R=pt.getComponentCount(w);for(let O=0;O<R;O++){let k=ebt(w,O),Q=s[x][O],z=a[x][O];!l(Q)||!l(z)||n.addFunctionLines(p,[`${A}.${T}.min${k} = ${mTe(Q)};`,`${A}.${T}.max${k} = ${mTe(z)};`])}}}{let p="getPropertiesFromMegatextureAtUv";n.addFunction(p,`${M} getPropertiesFromMegatextureAtUv(vec2 texcoord)`,pe.FRAGMENT),n.addFunctionLines(p,[`${M} ${L};`]);for(let x=0;x<c;x++){let T=o[x],w=r[x],R=$xt(T,w);n.addFunctionLines(p,[`properties.${i[x]} = texture(u_megatextureTextures[${x}], texcoord)${R};`])}n.addFunctionLines(p,[`return ${L};`])}}function ZH(e){if(e===pt.SCALAR)return"float";if(e===pt.VEC2)return"vec2";if(e===pt.VEC3)return"vec3";if(e===pt.VEC4)return"vec4"}function $xt(e){if(e===pt.SCALAR)return".r";if(e===pt.VEC2)return".ra";if(e===pt.VEC3)return".rgb";if(e===pt.VEC4)return""}function mTe(e){let t=e.toString();return t.indexOf(".")===-1&&(t=`${e}.0`),t}function ebt(e,t){return e===pt.SCALAR?"":`[${t}]`}var zk=Zxt;function tbt(e,t){let n=new Gk(e);zk(n,e);let{shaderBuilder:i,clippingPlanes:o,clippingPlanesLength:r}=n;if(r>0){let C="getClippingPlane",E=jg(o,t),I=0,b=E.indexOf(")")+1,S=E.indexOf("{",b)+1,B=E.indexOf("}",S),v=E.slice(I,b),P=E.slice(S,B);i.addFunction(C,v,pe.FRAGMENT),i.addFunctionLines(C,[P])}let s=i.clone();s.addDefine("PICKING",void 0,pe.FRAGMENT);let a=i.clone();a.addDefine("PICKING_VOXEL",void 0,pe.FRAGMENT);let c=i.buildShaderProgram(t),u=s.buildShaderProgram(t),f=a.buildShaderProgram(t),h=Ue.fromCache({cull:{enabled:!0,face:Mi.BACK},depthTest:{enabled:!1},depthMask:!1,blending:pn.PRE_MULTIPLIED_ALPHA_BLEND}),A=t.getViewportQuadVertexArray(),g=e._depthTest,m=new nt({vertexArray:A,primitiveType:Me.TRIANGLES,renderState:h,shaderProgram:c,uniformMap:n.uniformMap,modelMatrix:e._compoundModelMatrix,pass:Be.VOXELS,executeInClosestFrustum:!0,owner:this,cull:g,occlude:g}),_=nt.shallowClone(m,new nt);_.shaderProgram=u,_.pickOnly=!0;let y=nt.shallowClone(m,new nt);if(y.shaderProgram=f,y.pickOnly=!0,l(e._drawCommand)){let C=e._drawCommand;C.shaderProgram=C.shaderProgram&&C.shaderProgram.destroy()}if(l(e._drawCommandPick)){let C=e._drawCommandPick;C.shaderProgram=C.shaderProgram&&C.shaderProgram.destroy()}if(l(e._drawCommandPickVoxel)){let C=e._drawCommandPickVoxel;C.shaderProgram=C.shaderProgram&&C.shaderProgram.destroy()}e._drawCommand=m,e._drawCommandPick=_,e._drawCommandPickVoxel=y}var Vk=tbt;var nbt={FLOAT:"float",VEC2:"vec2",VEC3:"vec3",VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",MAT2:"mat2",MAT3:"mat3",MAT4:"mat4",SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube"},vw=Object.freeze(nbt);function ibt(e,t,n){let i=new Uint8ClampedArray(e.buffer),o=new ImageData(i,t,n),r=document.createElement("canvas");return r.width=t,r.height=n,r.getContext("2d").putImageData(o,0,0),r}var Hk=ibt;function Pw(){this._defaultTexture=void 0,this._textures={},this._loadedImages=[],this._lastUpdatedFrame=-1}Pw.prototype.getTexture=function(e){return this._textures[e]};function obt(e,t,n){n.resource.fetchImage().then(function(i){e._loadedImages.push({id:t,image:i,textureUniform:n})}).catch(function(){let i=e._textures[t];l(i)&&i!==e._defaultTexture&&i.destroy(),e._textures[t]=e._defaultTexture})}Pw.prototype.loadTexture2D=function(e,t){l(t.typedArray)?this._loadedImages.push({id:e,textureUniform:t}):obt(this,e,t)};function rbt(e,t,n){let{id:i,textureUniform:o,image:r}=t,s=n.webgl2?$H(o,r,n):sbt(o,r,n),a=e._textures[i];l(a)&&a!==n.defaultTexture&&a.destroy(),e._textures[i]=s}function $H(e,t,n){let{typedArray:i,sampler:o}=e,r=l(i)?pTe(e,n):new Mt({context:n,source:t,sampler:o});return ATe(o)&&r.generateMipmap(),r}function sbt(e,t,n){let{typedArray:i,sampler:o}=e,r=ATe(o),s=o.wrapS===Tn.REPEAT||o.wrapS===Tn.MIRRORED_REPEAT||o.wrapT===Tn.REPEAT||o.wrapT===Tn.MIRRORED_REPEAT,{width:a,height:c}=l(i)?e:t,u=[a,c].every(D.isPowerOfTwo);if((r||s)&&!u)if(l(i)){if(e.pixelDatatype===Ve.UNSIGNED_BYTE){let h=Hk(i,a,c),A=q_(h);return $H({sampler:o},A,n)}}else{let h=q_(t);return $H(e,h,n)}else return $H(e,t,n);return r?console.warn("Texture requires resizing for mipmaps but pixelDataType cannot be resized. The texture may be rendered incorrectly."):s&&console.warn("Texture requires resizing for wrapping but pixelDataType cannot be resized. The texture may be rendered incorrectly."),pTe(e,n)}function ATe(e){return[Zt.NEAREST_MIPMAP_NEAREST,Zt.NEAREST_MIPMAP_LINEAR,Zt.LINEAR_MIPMAP_NEAREST,Zt.LINEAR_MIPMAP_LINEAR].includes(e.minificationFilter)}function pTe(e,t){let{pixelFormat:n,pixelDatatype:i,width:o,height:r,typedArray:s,sampler:a}=e;return new Mt({context:t,pixelFormat:n,pixelDatatype:i,source:{arrayBufferView:s,width:o,height:r},sampler:a,flipY:!1})}Pw.prototype.update=function(e){if(e.frameNumber===this._lastUpdatedFrame)return;this._lastUpdatedFrame=e.frameNumber;let t=e.context;this._defaultTexture=t.defaultTexture;let n=this._loadedImages;for(let i=0;i<n.length;i++){let o=n[i];rbt(this,o,t)}n.length=0};Pw.prototype.isDestroyed=function(){return!1};Pw.prototype.destroy=function(){let e=this._textures;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];n!==this._defaultTexture&&n.destroy()}return ue(this)};var Wk=Pw;function jk(e){e=e??V.EMPTY_OBJECT,this.mode=e.mode??Wp.MODIFY_MATERIAL,this.lightingModel=e.lightingModel,this.uniforms=e.uniforms??V.EMPTY_OBJECT,this.varyings=e.varyings??V.EMPTY_OBJECT,this.vertexShaderText=e.vertexShaderText,this.fragmentShaderText=e.fragmentShaderText,this.translucencyMode=e.translucencyMode??dy.INHERIT,this._textureManager=new Wk,this._defaultTexture=void 0,this.uniformMap=abt(this),this.usedVariablesVertex={attributeSet:{},featureIdSet:{},metadataSet:{}},this.usedVariablesFragment={attributeSet:{},featureIdSet:{},metadataSet:{},materialSet:{}},ubt(this),fbt(this)}function abt(e){let t=e.uniforms,n={};for(let i in t)if(t.hasOwnProperty(i)){let o=t[i];o.type===vw.SAMPLER_2D?(e._textureManager.loadTexture2D(i,o.value),n[i]=cbt(e,i)):n[i]=lbt(e,i)}return n}function cbt(e,t){return function(){return e._textureManager.getTexture(t)??e._defaultTexture}}function lbt(e,t){return function(){return e.uniforms[t].value}}function nx(e,t,n){let i;for(;(i=t.exec(e))!==null;){let o=i[1];n[o]=!0}}function ubt(e){let t=/[vf]sInput\.attributes\.(\w+)/g,n=/[vf]sInput\.featureIds\.(\w+)/g,i=/[vf]sInput\.metadata.(\w+)/g,o,r=e.vertexShaderText;l(r)&&(o=e.usedVariablesVertex.attributeSet,nx(r,t,o),o=e.usedVariablesVertex.featureIdSet,nx(r,n,o),o=e.usedVariablesVertex.metadataSet,nx(r,i,o));let s=e.fragmentShaderText;if(l(s)){o=e.usedVariablesFragment.attributeSet,nx(s,t,o),o=e.usedVariablesFragment.featureIdSet,nx(s,n,o),o=e.usedVariablesFragment.metadataSet,nx(s,i,o);let a=/material\.(\w+)/g,c=e.usedVariablesFragment.materialSet;nx(s,a,c)}}function gTe(e){let t=/^.*MC$/,n=/^.*WC$/,i=/^.*EC$/;return t.test(e)?`${e} (model coordinates)`:n.test(e)?`${e} (Cartesian world coordinates)`:i.test(e)?`${e} (eye coordinates)`:e}function nl(e,t,n,i){if(e.hasOwnProperty(t)){let o=`${gTe(t)} is not available in the ${i} shader. Did you mean ${gTe(n)} instead?`;throw new me(o)}}function fbt(e){let t=e.usedVariablesVertex.attributeSet;nl(t,"position","positionMC","vertex"),nl(t,"normal","normalMC","vertex"),nl(t,"tangent","tangentMC","vertex"),nl(t,"bitangent","bitangentMC","vertex"),nl(t,"positionWC","positionMC","vertex"),nl(t,"positionEC","positionMC","vertex"),nl(t,"normalEC","normalMC","vertex"),nl(t,"tangentEC","tangentMC","vertex"),nl(t,"bitangentEC","bitangentMC","vertex");let n=e.usedVariablesFragment.attributeSet;nl(n,"position","positionEC","fragment"),nl(n,"normal","normalEC","fragment"),nl(n,"tangent","tangentEC","fragment"),nl(n,"bitangent","bitangentEC","fragment"),nl(n,"normalMC","normalEC","fragment"),nl(n,"tangentMC","tangentEC","fragment"),nl(n,"bitangentMC","bitangentEC","fragment")}jk.prototype.setUniform=function(e,t){let n=this.uniforms[e];n.type===vw.SAMPLER_2D?this._textureManager.loadTexture2D(e,t):l(t.clone)?n.value=t.clone(n.value):n.value=t};jk.prototype.update=function(e){this._defaultTexture=e.context.defaultTexture,this._textureManager.update(e)};jk.prototype.isDestroyed=function(){return!1};jk.prototype.destroy=function(){this._textureManager=this._textureManager&&this._textureManager.destroy(),ue(this)};var ix=jk;function n_(e){let{loader:t,metadata:n}=e;this._loader=t,this._metadata=n,this._resourcesLoaded=!1,this._ready=!1}Object.defineProperties(n_.prototype,{ready:{get:function(){return this._ready}},metadata:{get:function(){return this._metadata}}});n_.fromMetadataArray=function(e){return new n_({metadata:e})};n_.fromGltf=async function(e){let t=new Xu({gltfResource:e,releaseGltfJson:!1,loadAttributesAsTypedArray:!0});try{await t.load()}catch(n){throw t.destroy(),n}return new n_({loader:t})};n_.prototype.update=function(e,t){let n=this._loader;if(!this._ready){if(t.afterRender.push(()=>!0),!l(n)){this._ready=!0;return}if(this._resourcesLoaded){let{structuralMetadata:i,scene:o}=n.components,{attributes:r}=o.nodes[0].primitives[0];this._metadata=dbt(r,i,e),this._ready=!0;return}this._resourcesLoaded=n.process(t)}};function dbt(e,t,n){let{className:i,names:o,types:r,componentTypes:s}=n.provider,a=t.propertyAttributes.find(f=>f.class.id===i),{properties:c}=a,u=new Array(o.length);for(let f=0;f<e.length;f++){let h=c[o[f]].attribute,A=e.find(y=>y.name===h);if(!l(A))continue;let g=Gt.toComponentDatatype(s[f]),m=pt.getComponentCount(r[f]),_=A.count*m;u[f]=q.createArrayBufferView(g,A.typedArray.buffer,A.typedArray.byteOffset+A.byteOffset,_)}return u}n_.prototype.isDestroyed=function(){return!1};n_.prototype.destroy=function(){return this._loader=this._loader&&this._loader.destroy(),ue(this)};var ox=n_;function UA(){this.orientedBoundingBox=new Fn,this.boundingSphere=new le,this.boundTransform=new N,this.shapeTransform=new N,this._minBounds=UA.DefaultMinBounds.clone(),this._maxBounds=UA.DefaultMaxBounds.clone(),this.shaderUniforms={renderMinBounds:new d,renderMaxBounds:new d,boxUvToShapeUvScale:new d,boxUvToShapeUvTranslate:new d},this.shaderDefines={BOX_INTERSECTION_INDEX:void 0,BOX_HAS_SHAPE_BOUNDS:void 0},this.shaderMaximumIntersectionsLength=0}var hbt=new d,BZ=new d,mbt=new J,Abt=new d,pbt=new d,gbt=new d,_bt=new d,_Te=N.fromRotationTranslation(J.fromUniformScale(.5,new J),new d(.5,.5,.5),new N);UA.prototype.update=function(e,t,n,i,o){i=i??t.clone(Abt),o=o??n.clone(pbt),t=d.clone(t,this._minBounds),n=d.clone(n,this._maxBounds);let r=d.clamp(t,i,o,gbt),s=d.clamp(n,i,o,_bt),a=N.getScale(e,BZ);if(r.x>s.x||r.y>s.y||r.z>s.z||(r.x===s.x)+(r.y===s.y)+(r.z===s.z)>=2||a.x===0||a.y===0||a.z===0)return!1;this.shapeTransform=N.clone(e,this.shapeTransform),this.orientedBoundingBox=vZ(r,s,this.shapeTransform,this.orientedBoundingBox),this.boundTransform=N.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=le.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let{shaderUniforms:c,shaderDefines:u}=this;for(let g in u)u.hasOwnProperty(g)&&(u[g]=void 0);let f=0;u.BOX_INTERSECTION_INDEX=f,f+=1,c.renderMinBounds=N.multiplyByPoint(_Te,r,c.renderMinBounds),c.renderMaxBounds=N.multiplyByPoint(_Te,s,c.renderMaxBounds),u.BOX_HAS_SHAPE_BOUNDS=!0;let h=t,A=n;return c.boxUvToShapeUvScale=d.fromElements(2/(h.x===A.x?1:A.x-h.x),2/(h.y===A.y?1:A.y-h.y),2/(h.z===A.z?1:A.z-h.z),c.boxUvToShapeUvScale),c.boxUvToShapeUvTranslate=d.fromElements(-c.boxUvToShapeUvScale.x*(h.x*.5+.5),-c.boxUvToShapeUvScale.y*(h.y*.5+.5),-c.boxUvToShapeUvScale.z*(h.z*.5+.5),c.boxUvToShapeUvTranslate),this.shaderMaximumIntersectionsLength=f,!0};var e5=new d,DZ=new d;UA.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=this._minBounds,s=this._maxBounds,a=1/Math.pow(2,e),c=d.fromElements(D.lerp(r.x,s.x,a*t),D.lerp(r.y,s.y,a*n),D.lerp(r.z,s.z,a*i),e5),u=d.fromElements(D.lerp(r.x,s.x,a*(t+1)),D.lerp(r.y,s.y,a*(n+1)),D.lerp(r.z,s.z,a*(i+1)),DZ);return vZ(c,u,this.shapeTransform,o)};var yTe=new d;UA.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=d.divideComponents(d.ONE,t,yTe),s=d.multiplyByScalar(r,o,yTe),a=d.multiplyByScalar(d.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,e5),o,e5),c=d.add(a,s,DZ),u=this._minBounds,f=this._maxBounds,h=d.fromElements(D.lerp(u.x,f.x,a.x),D.lerp(u.y,f.y,a.y),D.lerp(u.z,f.z,a.z),e5),A=d.fromElements(D.lerp(u.x,f.x,c.x),D.lerp(u.y,f.y,c.y),D.lerp(u.z,f.z,c.z),DZ);return vZ(h,A,this.shapeTransform,i)};UA.DefaultMinBounds=Object.freeze(new d(-1,-1,-1));UA.DefaultMaxBounds=Object.freeze(new d(1,1,1));function vZ(e,t,n,i){let o=UA.DefaultMinBounds,r=UA.DefaultMaxBounds;if(d.equals(e,o)&&d.equals(t,r))i.center=N.getTranslation(n,i.center),i.halfAxes=N.getMatrix3(n,i.halfAxes);else{let a=N.getScale(n,BZ),c=d.midpoint(e,t,hbt);i.center=N.multiplyByPoint(n,c,i.center),a=d.fromElements(a.x*.5*(t.x-e.x),a.y*.5*(t.y-e.y),a.z*.5*(t.z-e.z),BZ);let u=N.getRotation(n,mbt);i.halfAxes=J.setScale(u,a,i.halfAxes)}return i}var rx=UA;function i_(){this.orientedBoundingBox=new Fn,this.boundingSphere=new le,this.boundTransform=new N,this.shapeTransform=new N,this._minBounds=i_.DefaultMinBounds.clone(),this._maxBounds=i_.DefaultMaxBounds.clone(),this.shaderUniforms={cylinderRenderRadiusMinMax:new U,cylinderRenderAngleMinMax:new U,cylinderRenderHeightMinMax:new U,cylinderUvToShapeUvRadius:new U,cylinderUvToShapeUvAngle:new U,cylinderUvToShapeUvHeight:new U,cylinderShapeUvAngleMinMax:new U,cylinderShapeUvAngleRangeZeroMid:0},this.shaderDefines={CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN:void 0,CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF:void 0,CYLINDER_HAS_SHAPE_BOUNDS_RADIUS:void 0,CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED:void 0,CYLINDER_INTERSECTION_INDEX_RADIUS_MAX:void 0,CYLINDER_INTERSECTION_INDEX_RADIUS_MIN:void 0,CYLINDER_INTERSECTION_INDEX_ANGLE:void 0},this.shaderMaximumIntersectionsLength=0}var ITe=new d,ybt=new d,Cbt=new d,Ebt=new d,Ibt=new d;i_.prototype.update=function(e,t,n,i,o){i=i??t.clone(ybt),o=o??n.clone(Cbt),t=d.clone(t,this._minBounds),n=d.clone(n,this._maxBounds);let{DefaultMinBounds:r,DefaultMaxBounds:s}=i_,a=s.y-r.y,c=.5*a,u=D.EPSILON10,f=D.EPSILON3,h=D.EPSILON10;t.x=Math.max(0,t.x),n.x=Math.max(0,n.x),t.y=D.negativePiToPi(t.y),n.y=D.negativePiToPi(n.y),i.y=D.negativePiToPi(i.y),o.y=D.negativePiToPi(o.y);let A=d.maximumByComponent(t,i,Ebt),g=d.minimumByComponent(n,o,Ibt),m=N.getScale(e,ITe);if(g.x===0||A.x>g.x||A.z>g.z||D.equalsEpsilon(m.x,0,void 0,u)||D.equalsEpsilon(m.y,0,void 0,u)||D.equalsEpsilon(m.z,0,void 0,u))return!1;this.shapeTransform=N.clone(e,this.shapeTransform),this.orientedBoundingBox=MZ(A,g,this.shapeTransform,this.orientedBoundingBox),this.boundTransform=N.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=le.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let _=t.x===r.x&&n.x===s.x,y=n.y<t.y,C=n.y-t.y+y*a,E=C>c+h&&C<a-h,I=C<c-h,b=C>=c-h&&C<=c+h,S=E||I||b,B=D.equalsEpsilon(t.y,r.y,void 0,f),v=D.equalsEpsilon(n.y,s.y,void 0,f),P=t.z===r.z&&n.z===s.z,M=A.x===r.x,L=g.y<A.y,p=g.y-A.y+L*a,x=p>=c-h&&p<a-h,T=p>h&&p<c-h,w=p<=h,R=x||T||w,{shaderUniforms:O,shaderDefines:k}=this;for(let z in k)k.hasOwnProperty(z)&&(k[z]=void 0);let Q=0;if(k.CYLINDER_INTERSECTION_INDEX_RADIUS_MAX=Q,Q+=1,M||(k.CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN=!0,k.CYLINDER_INTERSECTION_INDEX_RADIUS_MIN=Q,Q+=1),O.cylinderRenderRadiusMinMax=U.fromElements(A.x,g.x,O.cylinderRenderRadiusMinMax),A.x===g.x&&(k.CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT=!0),!_){k.CYLINDER_HAS_SHAPE_BOUNDS_RADIUS=!0;let z=n.x-t.x,F=0,H=1;z!==0&&(F=1/z,H=-t.x/z),O.cylinderUvToShapeUvRadius=U.fromElements(F,H,O.cylinderUvToShapeUvRadius)}if(!P){k.CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT=!0;let z=n.z-t.z,F=0,H=1;z!==0&&(F=2/z,H=-(t.z+1)/z),O.cylinderUvToShapeUvHeight=U.fromElements(F,H,O.cylinderUvToShapeUvHeight)}if(O.cylinderRenderHeightMinMax=U.fromElements(A.z,g.z,O.cylinderRenderHeightMinMax),y&&(k.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED=!0),R&&(k.CYLINDER_HAS_RENDER_BOUNDS_ANGLE=!0,k.CYLINDER_INTERSECTION_INDEX_ANGLE=Q,x?(k.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF=!0,Q+=1):T?(k.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF=!0,Q+=2):w&&(k.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO=!0,Q+=2),O.cylinderRenderAngleMinMax=U.fromElements(A.y,g.y,O.cylinderRenderAngleMinMax)),S){k.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE=!0,B&&(k.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY=!0),v&&(k.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY=!0);let z=(t.y-r.y)/a,F=(n.y-r.y)/a,H=1-C/a;if(O.cylinderShapeUvAngleMinMax=U.fromElements(z,F,O.cylinderShapeUvAngleMinMax),O.cylinderShapeUvAngleRangeZeroMid=(F+.5*H)%1,C<=h)O.cylinderUvToShapeUvAngle=U.fromElements(0,1,O.cylinderUvToShapeUvAngle);else{let W=a/C,Z=-(t.y-r.y)/C;O.cylinderUvToShapeUvAngle=U.fromElements(W,Z,O.cylinderUvToShapeUvAngle)}}return this.shaderMaximumIntersectionsLength=Q,!0};var t5=new d,RZ=new d;i_.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=this._minBounds,s=this._maxBounds,a=1/Math.pow(2,e),c=d.fromElements(D.lerp(r.x,s.x,t*a),D.lerp(r.y,s.y,n*a),D.lerp(r.z,s.z,i*a),t5),u=d.fromElements(D.lerp(r.x,s.x,(t+1)*a),D.lerp(r.y,s.y,(n+1)*a),D.lerp(r.z,s.z,(i+1)*a),RZ);return MZ(c,u,this.shapeTransform,o)};var CTe=new d;i_.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=d.divideComponents(d.ONE,t,CTe),s=d.multiplyByScalar(r,o,CTe),a=d.multiplyByScalar(d.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,t5),o,t5),c=d.add(a,s,RZ),u=this._minBounds,f=this._maxBounds,h=d.fromElements(D.lerp(u.x,f.x,a.x),D.lerp(u.y,f.y,a.y),D.lerp(u.z,f.z,a.z),t5),A=d.fromElements(D.lerp(u.x,f.x,c.x),D.lerp(u.y,f.y,c.y),D.lerp(u.z,f.z,c.z),RZ);return MZ(h,A,this.shapeTransform,i)};i_.DefaultMinBounds=Object.freeze(new d(0,-D.PI,-1));i_.DefaultMaxBounds=Object.freeze(new d(1,+D.PI,1));var xbt=5,bbt=new Array(xbt),Tbt=new d,Sbt=new J,wbt=new N,Bbt=new N,Dbt=new N,PZ=new N,vbt=new d,Pbt=new d,Rbt=new d,xTe=new Array(8);for(let e=0;e<8;e++)xTe[e]=new d;function ETe(e,t,n){return Math.abs(se.dot(e,t))<n}function Mbt(e){let t=N.getColumn(e,0,vbt),n=N.getColumn(e,1,Pbt),i=N.getColumn(e,2,Rbt),o=D.EPSILON4;return ETe(t,n,o)&&ETe(n,i,o)}function Nbt(e,t){let n=xTe;d.fromElements(-.5,-.5,-.5,n[0]),d.fromElements(-.5,-.5,.5,n[1]),d.fromElements(-.5,.5,-.5,n[2]),d.fromElements(-.5,.5,.5,n[3]),d.fromElements(.5,-.5,-.5,n[4]),d.fromElements(.5,-.5,.5,n[5]),d.fromElements(.5,.5,-.5,n[6]),d.fromElements(.5,.5,.5,n[7]);for(let i=0;i<8;++i)N.multiplyByPoint(e,n[i],n[i]);return Fn.fromPoints(n,t)}function MZ(e,t,n,i){let o=e.x,r=t.x,s=e.y,a=t.y<s?t.y+D.TWO_PI:t.y,c=e.z,u=t.z,f=a-s,h=s+f*.5,A=bbt,g=0;A[g++]=s,A[g++]=a,A[g++]=h,f>D.PI&&(A[g++]=h-D.PI_OVER_TWO,A[g++]=h+D.PI_OVER_TWO);let m=Number.POSITIVE_INFINITY,_=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY,C=Number.NEGATIVE_INFINITY;for(let O=0;O<g;++O){let k=A[O]-h,Q=Math.cos(k),z=Math.sin(k),F=Q*o,H=z*o,W=Q*r,Z=z*r;m=Math.min(m,F,W),_=Math.min(_,H,Z),y=Math.max(y,F,W),C=Math.max(C,H,Z)}let E=y-m,I=C-_,b=u-c,S=(m+y)*.5,B=(_+C)*.5,v=(c+u)*.5,P=d.fromElements(S,B,v,Tbt),M=J.fromRotationZ(h,Sbt),L=d.fromElements(E,I,b,ITe),p=N.fromScale(L,Dbt),x=N.fromRotation(M,Bbt),T=N.fromTranslation(P,wbt),w=N.multiplyTransformation(x,N.multiplyTransformation(T,p,PZ),PZ),R=N.multiplyTransformation(n,w,PZ);return Mbt(R)?Fn.fromTransformation(R,i):Nbt(R,i)}var sx=i_;function o_(){this.orientedBoundingBox=new Fn,this.boundingSphere=new le,this.boundTransform=new N,this.shapeTransform=new N,this._rectangle=new ae,this._minimumHeight=o_.DefaultMinBounds.z,this._maximumHeight=o_.DefaultMaxBounds.z,this._ellipsoid=new te,this._translation=new d,this._rotation=new J,this.shaderUniforms={ellipsoidRadiiUv:new d,eccentricitySquared:0,evoluteScale:new U,ellipsoidInverseRadiiSquaredUv:new d,ellipsoidRenderLongitudeMinMax:new U,ellipsoidShapeUvLongitudeMinMaxMid:new d,ellipsoidUvToShapeUvLongitude:new U,ellipsoidUvToShapeUvLatitude:new U,ellipsoidRenderLatitudeSinMinMax:new U,ellipsoidInverseHeightDifferenceUv:0,clipMinMaxHeight:new U},this.shaderDefines={ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE:void 0,ELLIPSOID_INTERSECTION_INDEX_LONGITUDE:void 0,ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX:void 0,ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN:void 0,ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX:void 0,ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN:void 0},this.shaderMaximumIntersectionsLength=0}var Lbt=new d,Obt=new d,Fbt=new d,Qbt=new d,kbt=new d,Ubt=new d,Gbt=new d,zbt=new d,Vbt=new J,bTe=new d,TTe=new d,Hbt=new ae;o_.prototype.update=function(e,t,n,i,o){let{DefaultMinBounds:r,DefaultMaxBounds:s}=o_;i=i??r,o=o??s;let a=D.EPSILON10,c=D.EPSILON3,u=D.EPSILON10,f=D.EPSILON10,h=D.EPSILON3,A=N.getScale(e,zbt),g=d.clone(r,Lbt);g.z=-d.minimumComponent(A);let m=d.clamp(t,g,s,Obt),_=d.clamp(n,g,s,Fbt),y=d.clamp(i,g,s,Qbt),C=d.clamp(o,g,s,kbt),E=d.maximumByComponent(m,y,Ubt),I=d.minimumByComponent(_,C,Gbt),b=d.add(A,d.fromElements(_.z,_.z,_.z,bTe),bTe),S=d.maximumComponent(b),B=d.add(A,d.fromElements(I.z,I.z,I.z,TTe),TTe);if(E.y>I.y||E.y===s.y||I.y===r.y||E.z>I.z||D.equalsEpsilon(B,d.ZERO,void 0,a))return!1;this._rectangle=ae.fromRadians(m.x,m.y,_.x,_.y),this._translation=N.getTranslation(e,this._translation),this._rotation=N.getRotation(e,this._rotation),this._ellipsoid=te.fromCartesian3(A,this._ellipsoid),this._minimumHeight=m.z,this._maximumHeight=_.z;let v=ae.fromRadians(E.x,E.y,I.x,I.y,Hbt);this.orientedBoundingBox=NZ(v,E.z,I.z,this._ellipsoid,this._translation,this._rotation,this.orientedBoundingBox),this.shapeTransform=N.fromRotationTranslation(J.setScale(this._rotation,b,Vbt),this._translation,this.shapeTransform),this.boundTransform=N.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=le.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let P=s.x-r.x,M=.5*P,L=I.x<E.x,p=I.x-E.x+L*P,x=p<=u,T=p>=M-u&&p<P-u,w=p>u&&p<M-u,R=x||T||w,O=_.x<m.x,k=_.x-m.x+O*P,Q=k>M+u&&k<P-u,z=k>=M-u&&k<=M+u,F=k<M-u,H=Q||z||F,W=I.y<-h,Z=I.y>=-h&&I.y<=+h,Y=I.y>+h&&I.y<s.y-f,$=W||Z||Y,X=E.y>r.y+f&&E.y<-h,he=E.y>=-h&&E.y<=+h,ge=E.y>+h,fe=X||he||ge,ye=$||fe,xe=_.y-m.y,ve=_.y<-h,Te=_.y>=-h&&_.y<=+h,ke=_.y>+h&&_.y<s.y-f,Ge=ve||Te||ke,Ke=m.y>r.y+f&&m.y<-h,tt=m.y>=-h&&m.y<=+h,en=m.y>+h,nn=Ge||(Ke||tt||en),{shaderUniforms:qt,shaderDefines:Rt}=this;for(let Et in Rt)Rt.hasOwnProperty(Et)&&(Rt[Et]=void 0);qt.ellipsoidRadiiUv=d.divideByScalar(b,S,qt.ellipsoidRadiiUv);let{x:Si,z:gi}=qt.ellipsoidRadiiUv,Ft=gi/Si;qt.eccentricitySquared=1-Ft*Ft,qt.evoluteScale=U.fromElements((Si*Si-gi*gi)/Si,(gi*gi-Si*Si)/gi,qt.evoluteScale),qt.ellipsoidInverseRadiiSquaredUv=d.divideComponents(d.ONE,d.multiplyComponents(qt.ellipsoidRadiiUv,qt.ellipsoidRadiiUv,qt.ellipsoidInverseRadiiSquaredUv),qt.ellipsoidInverseRadiiSquaredUv);let St=0;Rt.ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX=St,St+=1,Rt.ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN=St,St+=1,qt.clipMinMaxHeight=U.fromElements((E.z-_.z)/S,(I.z-_.z)/S,qt.clipMinMaxHeight);let oi=(_.z-m.z)/S;if(qt.ellipsoidInverseHeightDifferenceUv=1/oi,m.z===_.z&&(qt.ellipsoidInverseHeightDifferenceUv=0),R&&(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE=!0,Rt.ELLIPSOID_INTERSECTION_INDEX_LONGITUDE=St,T?(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF=!0,St+=1):w?(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF=!0,St+=2):x&&(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO=!0,St+=2),qt.ellipsoidRenderLongitudeMinMax=U.fromElements(E.x,I.x,qt.ellipsoidRenderLongitudeMinMax)),H)if(Rt.ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE=!0,_.x<m.x&&(Rt.ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED=!0),k<=u)qt.ellipsoidUvToShapeUvLongitude=U.fromElements(0,1,qt.ellipsoidUvToShapeUvLongitude);else{let Lo=P/k,Ho=-(m.x-r.x)/k;qt.ellipsoidUvToShapeUvLongitude=U.fromElements(Lo,Ho,qt.ellipsoidUvToShapeUvLongitude)}if(R){let Et=D.equalsEpsilon(E.x,r.x,void 0,c),Lo=D.equalsEpsilon(I.x,s.x,void 0,c);Et&&(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY=!0),Lo&&(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY=!0);let Ho=(m.x-r.x)/P,Pa=(_.x-r.x)/P,Er=(I.x-r.x)/P,Lr=1-p/P,Fe=(Er+.5*Lr)%1;qt.ellipsoidShapeUvLongitudeMinMaxMid=d.fromElements(Ho,Pa,Fe,qt.ellipsoidShapeUvLongitudeMinMaxMid)}if(ye&&(fe&&(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN=!0,Rt.ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN=St,X?(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF=!0,St+=1):he?(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF=!0,St+=1):ge&&(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF=!0,St+=2)),$&&(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX=!0,Rt.ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX=St,W?(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF=!0,St+=2):Z?(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF=!0,St+=1):Y&&(Rt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF=!0,St+=1)),qt.ellipsoidRenderLatitudeSinMinMax=U.fromElements(Math.sin(E.y),Math.sin(I.y),qt.ellipsoidRenderLatitudeSinMinMax)),nn)if(Rt.ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE=!0,xe<f)qt.ellipsoidUvToShapeUvLatitude=U.fromElements(0,1,qt.ellipsoidUvToShapeUvLatitude);else{let Lo=(s.y-r.y)/xe,Ho=(r.y-m.y)/xe;qt.ellipsoidUvToShapeUvLatitude=U.fromElements(Lo,Ho,qt.ellipsoidUvToShapeUvLatitude)}return this.shaderMaximumIntersectionsLength=St,!0};var BTe=new ae;o_.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=1/Math.pow(2,e),s=t*r,a=(t+1)*r,c=n*r,u=(n+1)*r,f=i*r,h=(i+1)*r,A=ae.subsection(this._rectangle,s,c,a,u,BTe),g=D.lerp(this._minimumHeight,this._maximumHeight,f),m=D.lerp(this._minimumHeight,this._maximumHeight,h);return NZ(A,g,m,this._ellipsoid,this._translation,this._rotation,o)};var STe=new d,wTe=new d,Wbt=new d;o_.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=d.divideComponents(d.ONE,t,STe),s=d.multiplyByScalar(r,o,STe),a=d.multiplyByScalar(d.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,wTe),o,wTe),c=d.add(a,s,Wbt),u=ae.subsection(this._rectangle,a.x,a.y,c.x,c.y,BTe),f=D.lerp(this._minimumHeight,this._maximumHeight,a.z),h=D.lerp(this._minimumHeight,this._maximumHeight,c.z);return NZ(u,f,h,this._ellipsoid,this._translation,this._rotation,i)};function NZ(e,t,n,i,o,r,s){return s=Fn.fromRectangle(e,t,n,i,s),s.center=d.add(s.center,o,s.center),s.halfAxes=J.multiply(s.halfAxes,r,s.halfAxes),s}o_.DefaultMinBounds=Object.freeze(new d(-D.PI,-D.PI_OVER_TWO,-te.WGS84.minimumRadius));o_.DefaultMaxBounds=Object.freeze(new d(D.PI,D.PI_OVER_TWO,10*te.WGS84.maximumRadius));var ax=o_;var Nf={BOX:"BOX",ELLIPSOID:"ELLIPSOID",CYLINDER:"CYLINDER"};Nf.getMinBounds=function(e){switch(e){case Nf.BOX:return rx.DefaultMinBounds;case Nf.ELLIPSOID:return ax.DefaultMinBounds;case Nf.CYLINDER:return sx.DefaultMinBounds}};Nf.getMaxBounds=function(e){switch(e){case Nf.BOX:return rx.DefaultMaxBounds;case Nf.ELLIPSOID:return ax.DefaultMaxBounds;case Nf.CYLINDER:return sx.DefaultMaxBounds}};Nf.getShapeConstructor=function(e){switch(e){case Nf.BOX:return rx;case Nf.ELLIPSOID:return ax;case Nf.CYLINDER:return sx}};var ec=Object.freeze(Nf);function Em(e){this._comparator=e.comparator,this._maximumLength=e.maximumLength,this._array=l(e.maximumLength)?new Array(e.maximumLength):[],this._length=0}Object.defineProperties(Em.prototype,{length:{get:function(){return this._length}},maximumLength:{get:function(){return this._maximumLength},set:function(e){if(l(e)){for(;this._length>e;)this.removeMinimum();this._array.length=e}this._maximumLength=e}},internalArray:{get:function(){return this._array}},comparator:{get:function(){return this._comparator}}});Em.prototype.clone=function(){let e=this._maximumLength,t=this._comparator,n=this._array,i=this._length,o=new Em({comparator:t,maximumLength:e});o._length=i;for(let r=0;r<i;r++)o._array[r]=n[r];return o};Em.prototype.reset=function(){this._length=0;let e=this._maximumLength;if(l(e))for(let t=0;t<e;t++)this._array[t]=void 0;else this._array.length=0};Em.prototype.resort=function(){let e=this._length;for(let t=0;t<e;t++)DTe(this,t)};Em.prototype.insert=function(e){let t,n=this._maximumLength;if(l(n)){if(n===0)return;if(this._length===n){let o=this._array[0];if(this._comparator(e,o)<=0)return e;t=this.removeMinimum()}}let i=this._length;return this._array[i]=e,this._length++,DTe(this,i),t};Em.prototype.removeMinimum=function(){let e=this._length;if(e===0)return;this._length--;let t=this._array[0];return e>=2&&(this._array[0]=this._array[e-1],vTe(this,0)),this._array[e-1]=void 0,t};Em.prototype.removeMaximum=function(){let e=this._length;if(e===0)return;this._length--;let t;if(e<=2)t=this._array[e-1];else{let n=LZ(this,1,2)?1:2;t=this._array[n],this._array[n]=this._array[e-1],e>=4&&vTe(this,n)}return this._array[e-1]=void 0,t};Em.prototype.getMinimum=function(){if(this._length!==0)return this._array[0]};Em.prototype.getMaximum=function(){let e=this._length;if(e!==0)return e<=2?this._array[e-1]:this._array[LZ(this,1,2)?1:2]};function n5(e,t,n){let i=e._array,o=i[t];i[t]=i[n],i[n]=o}function Yk(e,t,n){return e._comparator(e._array[t],e._array[n])<0}function LZ(e,t,n){return e._comparator(e._array[t],e._array[n])>0}function DTe(e,t){if(t===0)return;let n=Math.floor(D.log2(t+1))%2===0,i=Math.floor((t-1)/2),o=Yk(e,t,i);for(o!==n&&(n5(e,t,i),t=i);t>=3;){let r=Math.floor((t-3)/4);if(Yk(e,t,r)!==o)break;n5(e,t,r),t=r}}function vTe(e,t){let n=e._length,i=Math.floor(D.log2(t+1))%2===0,o;for(;(o=2*t+1)<n;){let r=o,s=o+1;if(s<n){Yk(e,s,r)===i&&(r=s);let a=2*o+1,c=Math.max(Math.min(n-a,4),0);for(let u=0;u<c;u++){let f=a+u;Yk(e,f,r)===i&&(r=f)}}if(Yk(e,r,t)===i&&(n5(e,r,t),r!==o&&r!==s)){let a=Math.floor((r-1)/2);LZ(e,r,a)===i&&n5(e,r,a)}t=r}}var cx=Em;var OZ=Object.freeze({UNLOADED:0,RECEIVING:1,PROCESSING:2,LOADED:3,FAILED:4,UNAVAILABLE:5});function qk(e,t){this.spatialNode=e,this.keyframe=t,this.state=OZ.UNLOADED,this.content=void 0,this.megatextureIndex=-1,this.priority=-Number.MAX_VALUE,this.highPriorityFrameNumber=-1}qk.prototype.unload=function(){this.content=this.content&&this.content.destroy(),this.spatialNode=void 0,this.state=OZ.UNLOADED,this.megatextureIndex=-1,this.priority=-Number.MAX_VALUE,this.highPriorityFrameNumber=-1};qk.priorityComparator=function(e,t){return e.priority-t.priority};qk.searchComparator=function(e,t){return e.keyframe-t.keyframe};qk.LoadState=OZ;var Do=qk;function CC(e,t,n,i,o){if(o=Math.min(o??128*1024*1024,536870912),i===Gt.UNSIGNED_SHORT&&(i=Gt.FLOAT32),i===Gt.FLOAT32&&!e.floatingPointTexture)throw new ce("Floating point texture not supported");let s=jbt(i),a=Ybt(n,e.webgl2),c=Gt.getSizeInBytes(i),u=qbt(o,n,c),f=Math.ceil(Math.sqrt(t.x)),h=Math.ceil(t.z/f),A=f*t.x,g=h*t.y,m=Math.floor(u/A),_=Math.floor(u/g);if(m===0||_===0)throw new ce("Tileset is too large to fit into megatexture");this.channelCount=n,this.componentType=i,this.textureMemoryByteLength=c*n*u**2,this.voxelCountPerTile=d.clone(t,new d),this.maximumTileCount=m*_,this.regionCountPerMegatexture=new U(m,_),this.voxelCountPerRegion=new U(A,g),this.sliceCountPerRegion=new U(f,h),this.voxelSizeUv=new U(1/u,1/u),this.sliceSizeUv=new U(t.x/u,t.y/u),this.regionSizeUv=new U(A/u,g/u),this.texture=new Mt({context:e,pixelFormat:a,pixelDatatype:s,flipY:!1,width:u,height:u,sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:mi.LINEAR})});let y=Gt.toComponentDatatype(i);this.tileVoxelDataTemp=q.createTypedArray(y,A*g*n),this.nodes=new Array(this.maximumTileCount);for(let C=0;C<this.maximumTileCount;C++)this.nodes[C]=new Kbt(C);for(let C=0;C<this.maximumTileCount;C++){let E=this.nodes[C];E.previousNode=C>0?this.nodes[C-1]:void 0,E.nextNode=C<this.maximumTileCount-1?this.nodes[C+1]:void 0}this.occupiedList=void 0,this.emptyList=this.nodes[0],this.occupiedCount=0}function jbt(e){if(e===Gt.FLOAT32||e===Gt.FLOAT64)return Ve.FLOAT;if(e===Gt.UINT8)return Ve.UNSIGNED_BYTE}function Ybt(e,t){if(e===1)return t?$e.RED:$e.LUMINANCE;if(e===2)return t?$e.RG:$e.LUMINANCE_ALPHA;if(e===3)return $e.RGB;if(e===4)return $e.RGBA}function qbt(e,t,n){let i=Math.floor(e/(t*n));return Math.min(Yt.maximumTextureSize,D.previousPowerOfTwo(Math.floor(Math.sqrt(i))))}function Kbt(e){this.index=e,this.nextNode=void 0,this.previousNode=void 0}CC.prototype.add=function(e){if(this.isFull())throw new me("Trying to add when there are no empty spots");let t=this.emptyList;this.emptyList=this.emptyList.nextNode,l(this.emptyList)&&(this.emptyList.previousNode=void 0),t.nextNode=this.occupiedList,l(t.nextNode)&&(t.nextNode.previousNode=t),this.occupiedList=t;let n=t.index;return this.writeDataToTexture(n,e),this.occupiedCount++,n};CC.prototype.remove=function(e){if(e<0||e>=this.maximumTileCount)throw new me("Megatexture index out of bounds");let t=this.nodes[e];l(t.previousNode)&&(t.previousNode.nextNode=t.nextNode),l(t.nextNode)&&(t.nextNode.previousNode=t.previousNode),t.nextNode=this.emptyList,l(t.nextNode)&&(t.nextNode.previousNode=t),t.previousNode=void 0,this.emptyList=t,this.occupiedCount--};CC.prototype.isFull=function(){return this.emptyList===void 0};CC.getApproximateTextureMemoryByteLength=function(e,t,n,i){i===Gt.UNSIGNED_SHORT&&(i=Gt.FLOAT32);let o=Gt.getSizeInBytes(i),r=e*t.x*t.y*t.z,s=Math.ceil(Math.sqrt(t.x)),a=Math.ceil(t.z/s),c=s*t.x,u=a*t.y,f=D.previousPowerOfTwo(Math.floor(Math.sqrt(r)));for(;;){let A=Math.floor(f/c),g=Math.floor(f/u);if(A*g>=e)break;f*=2}return f*f*n*o};CC.prototype.writeDataToTexture=function(e,t){let n=t.constructor===Uint16Array?new Float32Array(t):t,{tileVoxelDataTemp:i,voxelCountPerTile:o,sliceCountPerRegion:r,voxelCountPerRegion:s,channelCount:a,regionCountPerMegatexture:c}=this;for(let g=0;g<o.z;g++){let m=g%r.x*o.x,_=Math.floor(g/r.x)*o.y;for(let y=0;y<o.y;y++){let C=Xbt(o,y,g),E=(_+y)*s.x+m;for(let I=0;I<o.x;I++){let b=C+I,S=E+I;for(let B=0;B<a;B++)i[S*a+B]=n[b*a+B]}}}let u=e%c.x*s.x,f=Math.floor(e/c.x)*s.y,A={source:{arrayBufferView:i,width:s.x,height:s.y},xOffset:u,yOffset:f};this.texture.copyFrom(A)};function Xbt(e,t,n){let i=e.y*e.x,o=n,r=t;return o*i+r*e.x}CC.prototype.isDestroyed=function(){return!1};CC.prototype.destroy=function(){return this.texture=this.texture&&this.texture.destroy(),ue(this)};var Rw=CC;function qd(e,t,n,i,o,r,s){this.children=void 0,this.parent=o,this.level=e,this.x=t,this.y=n,this.z=i,this.dimensions=d.clone(s),this.keyframeNodes=[],this.renderableKeyframeNodes=[],this.renderableKeyframeNodeLerp=0,this.renderableKeyframeNodePrevious=void 0,this.renderableKeyframeNodeNext=void 0,this.orientedBoundingBox=new Fn,this.approximateVoxelSize=0,this.screenSpaceError=0,this.visitedFrameNumber=-1,this.computeBoundingVolumes(r)}var Jbt=new d;qd.prototype.computeBoundingVolumes=function(e){this.orientedBoundingBox=e.computeOrientedBoundingBoxForTile(this.level,this.x,this.y,this.z,this.orientedBoundingBox);let t=J.getScale(this.orientedBoundingBox.halfAxes,Jbt),n=2*d.maximumComponent(t);this.approximateVoxelSize=n/d.minimumComponent(this.dimensions)};qd.prototype.constructChildNodes=function(e){let{level:t,x:n,y:i,z:o}=this,r=n*2,s=i*2,a=o*2,c=s+1,u=r+1,f=a+1,h=t+1,A=[[h,r,s,a],[h,u,s,a],[h,r,c,a],[h,u,c,a],[h,r,s,f],[h,u,s,f],[h,r,c,f],[h,u,c,f]];this.children=A.map(([g,m,_,y])=>new qd(g,m,_,y,this,e,this.dimensions))};qd.prototype.visibility=function(e,t){let n=this.orientedBoundingBox;return e.cullingVolume.computeVisibilityWithPlaneMask(n,t)};qd.prototype.computeScreenSpaceError=function(e,t){let n=this.orientedBoundingBox,i=Math.sqrt(n.distanceSquaredTo(e));i=Math.max(i,D.EPSILON7);let o=this.approximateVoxelSize,r=t*(o/i);this.screenSpaceError=r};var PTe={keyframe:0};function Kk(e,t){return PTe.keyframe=e,Wo(t,PTe,Do.searchComparator)}qd.prototype.computeSurroundingRenderableKeyframeNodes=function(e){let t=this,n=t.level,i=Math.floor(e),o=Math.ceil(e),r,s,a=+Number.MAX_VALUE,c=+Number.MAX_VALUE;for(;l(t);){let{renderableKeyframeNodes:h}=t;if(h.length>=1){let A=Zbt(i,h),g=h[A],m=o===i||i<g.keyframe?A:Math.min(A+1,h.length-1),_=h[m],y=i-g.keyframe,C=RTe(n-t.level,y);C<a&&(a=C,r=g);let E=_.keyframe-o,I=RTe(n-t.level,E);if(I<c&&(c=I,s=_),y===0&&E===0)break}t=t.parent}if(this.renderableKeyframeNodePrevious=r,this.renderableKeyframeNodeNext=s,!l(r)||!l(s))return;let u=r.keyframe,f=s.keyframe;this.renderableKeyframeNodeLerp=u===f?0:D.clamp((e-u)/(f-u),0,1)};function Zbt(e,t){let n=Kk(e,t);return n<0?D.clamp(~n-1,0,t.length-1):n}function RTe(e,t){let n=Math.exp(e*4),i=t>=0?1:-200;return e*n+t*i}qd.prototype.isVisited=function(e){return this.visitedFrameNumber===e};qd.prototype.createKeyframeNode=function(e){let t=Kk(e,this.keyframeNodes);if(t<0){t=~t;let n=new Do(this,e);this.keyframeNodes.splice(t,0,n)}};qd.prototype.destroyKeyframeNode=function(e,t){let n=e.keyframe,i=Kk(n,this.keyframeNodes);if(i<0)throw new me("Keyframe node does not exist.");if(this.keyframeNodes.splice(i,1),e.megatextureIndex!==-1){for(let r=0;r<t.length;r++)t[r].remove(e.megatextureIndex);let o=Kk(n,this.renderableKeyframeNodes);if(o<0)throw new me("Renderable keyframe node does not exist.");this.renderableKeyframeNodes.splice(o,1)}e.unload()};qd.prototype.addKeyframeNodeToMegatextures=function(e,t){if(e.megatextureIndex!==-1||e.content.metadata.length!==t.length)throw new me("Keyframe node cannot be added to megatexture");let{metadata:n}=e.content;for(let r=0;r<t.length;r++){let s=t[r];e.megatextureIndex=s.add(n[r])}let i=this.renderableKeyframeNodes,o=Kk(e.keyframe,i);if(o>=0)throw new me("Keyframe already renderable");o=~o,i.splice(o,0,e)};qd.prototype.isRenderable=function(e){let t=this.renderableKeyframeNodePrevious,n=this.renderableKeyframeNodeNext,i=this.level;return l(t)&&l(n)&&(t.spatialNode.level===i||n.spatialNode.level===i)&&this.visitedFrameNumber===e};var Xk=qd;function EC(e,t,n,i){let{provider:o,dimensions:r,paddingBefore:s,paddingAfter:a}=e,{types:c,componentTypes:u,metadataOrder:f}=o,h=d.add(r,s,new d);if(d.add(h,a,h),f===Yd.Y_UP){let I=h.y;h.y=h.z,h.z=I}!l(i)&&l(o.maximumTileCount)&&(i=fTt(o.maximumTileCount,h,c,u)),this._primitive=e,this.textureMemoryByteLength=0,this.megatextures=new Array(c.length);for(let I=0;I<c.length;I++){let b=c[I],S=pt.getComponentCount(b),B=u[I];this.megatextures[I]=new Rw(t,h,S,B,i),this.textureMemoryByteLength+=this.megatextures[I].textureMemoryByteLength}let A=this.megatextures[0].maximumTileCount;this._simultaneousRequestCount=0,this._debugPrint=!1,this._calculateStatistics=this._primitive._calculateStatistics??!1,this._frameNumber=0;let g=e._shape;this.rootNode=new Xk(0,0,0,0,void 0,g,r),this._priorityQueue=new cx({maximumLength:A,comparator:Do.priorityComparator}),this._highPriorityKeyframeNodes=new Array(A),this._highPriorityKeyframeNodeCount=0,this._keyframeNodesInMegatexture=new Array(A),this._keyframeCount=n,this._sampleCount=void 0,this._keyframeLocation=0,this._binaryTreeKeyframeWeighting=new Array(n),this._initialTilesLoaded=!1;let m=this._binaryTreeKeyframeWeighting;m[0]=0,m[n-1]=0,FZ(m,1,n-2,0);let _=9,y=2048,C=Math.floor(y/_),E=Math.ceil(A/C);this.internalNodeTexture=new Mt({context:t,pixelFormat:$e.RGBA,pixelDatatype:Ve.UNSIGNED_BYTE,flipY:!1,width:y,height:E,sampler:new on({minificationFilter:Zt.NEAREST,magnificationFilter:mi.NEAREST})}),this.internalNodeTilesPerRow=C,this.internalNodeTexelSizeUv=new U(1/y,1/E),this.leafNodeTexture=void 0,this.leafNodeTilesPerRow=void 0,this.leafNodeTexelSizeUv=new U}EC.prototype.findKeyframeNode=function(e){return this._keyframeNodesInMegatexture.find(function(t){return t.megatextureIndex===e})};function FZ(e,t,n,i){if(t>n)return;let o=Math.floor((t+n)/2);e[o]=i,FZ(e,t,o-1,i+1),FZ(e,o+1,n,i+1)}EC.simultaneousRequestCountMaximum=50;EC.prototype.update=function(e,t,n,i){let o=this._primitive,r=e.context,s=this.megatextures[0].maximumTileCount,a=this._keyframeCount,c=o._levelBlendFactor,u=c>0,f=a>1,h=(u?2:1)*(f?2:1);this._sampleCount=h;let A=h>=2;if(A&&!l(this.leafNodeTexture)){let I=Math.floor(512),b=Math.ceil(s/I);this.leafNodeTexture=new Mt({context:r,pixelFormat:$e.RGBA,pixelDatatype:Ve.UNSIGNED_BYTE,flipY:!1,width:1024,height:b,sampler:new on({minificationFilter:Zt.NEAREST,magnificationFilter:mi.NEAREST})}),this.leafNodeTexelSizeUv=U.fromElements(1/1024,1/b,this.leafNodeTexelSizeUv),this.leafNodeTilesPerRow=I}else!A&&l(this.leafNodeTexture)&&(this.leafNodeTexture=this.leafNodeTexture.destroy());if(this._keyframeLocation=D.clamp(t,0,a-1),n&&MTe(this,this.rootNode),i)return;this._frameNumber=e.frameNumber;let g=Li();tTt(this,e),nTt(this,e);let m=Li();aTt(this,h,c);let _=Li(),y=o.loadProgress.numberOfListeners>0||o.allTilesLoaded.numberOfListeners>0||o.initialTilesLoaded.numberOfListeners>0;if(this._debugPrint||this._calculateStatistics||y){let C=m-g,E=_-m,I=_-g;sTt(this,e,C,E,I)}};EC.prototype.isRenderable=function(e){return e.isRenderable(this._frameNumber)};EC.prototype.isDestroyed=function(){return!1};EC.prototype.destroy=function(){let e=this.megatextures,t=e.length;for(let n=0;n<t;n++)e[n]=e[n]&&e[n].destroy();return this.textureMemoryByteLength=0,this.internalNodeTexture=this.internalNodeTexture&&this.internalNodeTexture.destroy(),this.leafNodeTexture=this.leafNodeTexture&&this.leafNodeTexture.destroy(),ue(this)};function MTe(e,t){if(t.computeBoundingVolumes(e._primitive._shape),l(t.children))for(let n=0;n<8;n++){let i=t.children[n];MTe(e,i)}}function $bt(e,t){if(e._simultaneousRequestCount>=EC.simultaneousRequestCountMaximum)return;let i=e._primitive.provider,{keyframe:o,spatialNode:r}=t;if(l(i.availableLevels)&&r.level>=i.availableLevels)return;function s(f){e._simultaneousRequestCount--,t.content=f,t.state=l(f)?Do.LoadState.PROCESSING:Do.LoadState.UNAVAILABLE}function a(f){e._simultaneousRequestCount--,t.state=Do.LoadState.FAILED,e._primitive.tileFailed.raiseEvent()}let c={tileLevel:r.level,tileX:r.x,tileY:r.y,tileZ:r.z,keyframe:o},u=i.requestData(c);l(u)&&(e._simultaneousRequestCount++,t.state=Do.LoadState.RECEIVING,u.then(s).catch(a))}function eTt(e){return e/(1+e)}function tTt(e,t){let n=e._frameNumber,i=e._priorityQueue;i.reset(),NTe(e.rootNode,Os.MASK_INDETERMINATE,e,t);let o=e._highPriorityKeyframeNodes,r=0,s;for(;i.length>0;)s=i.removeMaximum(),s.highPriorityFrameNumber=n,o[r]=s,r++;e._highPriorityKeyframeNodeCount=r}function nTt(e,t){let n=e.megatextures[0],i=n.occupiedCount,o=e._keyframeNodesInMegatexture;o.length=i,o.sort(iTt);let r=e._highPriorityKeyframeNodes,s=e._highPriorityKeyframeNodeCount,a=0,c=0;for(let u=0;u<s;u++){let f=r[u];if(!(f.state===Do.LoadState.LOADED||f.spatialNode===void 0)&&(f.state===Do.LoadState.UNLOADED&&$bt(e,f),f.state===Do.LoadState.PROCESSING)){let{content:h}=f;if(h.update(e._primitive,t),!h.ready)continue;if(!oTt(h.metadata,e)){f.content=void 0,f.state=Do.LoadState.FAILED,e._primitive.tileFailed.raiseEvent();continue}let A=0;if(n.isFull()){A=i-1-a,a++;let g=o[A];e._primitive.tileUnload.raiseEvent(),g.spatialNode.destroyKeyframeNode(g,e.megatextures)}else A=i+c,c++;f.spatialNode.addKeyframeNodeToMegatextures(f,e.megatextures),f.state=Do.LoadState.LOADED,o[A]=f,e._primitive.tileLoad.raiseEvent()}}}function iTt(e,t){return e.highPriorityFrameNumber===t.highPriorityFrameNumber?t.priority-e.priority:t.highPriorityFrameNumber-e.highPriorityFrameNumber}function oTt(e,t){let n=t._primitive.provider.types.length;if(!Array.isArray(e)||e.length!==n)return!1;let{megatextures:i}=t;for(let o=0;o<n;o++){let{voxelCountPerTile:r,channelCount:s}=i[o],{x:a,y:c,z:u}=r,f=a*c*u,h=e[o],A=f*s;if(h.length!==A)return!1}return!0}function NTe(e,t,n,i){let{camera:o,context:r,pixelRatio:s,frameNumber:a}=i,{positionWC:c,frustum:u}=o,h=r.drawingBufferHeight/s/u.sseDenominator;if(e.computeScreenSpaceError(c,h),t=e.visibility(i,t),t===Os.MASK_OUTSIDE)return;e.visitedFrameNumber=a;let A=n._primitive,g=A._shape,m=A.screenSpaceError,_=n._priorityQueue,y=n._keyframeCount,C=D.clamp(Math.floor(n._keyframeLocation),0,y-2),E=C+1;if(y===1)e.createKeyframeNode(0);else if(e.keyframeNodes.length!==y)for(let v=0;v<y;v++)e.createKeyframeNode(v);let{screenSpaceError:I,keyframeNodes:b}=e,S=eTt(I),B=!1;for(let v=0;v<b.length;v++){let P=b[v];P.priority=10*S+rTt(C,P.keyframe,E,n),P.state!==Do.LoadState.UNAVAILABLE&&P.state!==Do.LoadState.FAILED&&P.priority!==-Number.MAX_VALUE&&_.insert(P),P.state===Do.LoadState.LOADED&&(B=!0)}if(I<m||!B){e.children=void 0;return}l(e.children)||e.constructChildNodes(g);for(let v=0;v<8;v++){let P=e.children[v];NTe(P,t,n,i)}}function rTt(e,t,n,i){let o=Math.min(Math.abs(t-e),Math.abs(t-n)),r=Math.max(e,i._keyframeCount-n-1,1),s=Math.pow(1-o/r,4),a=Math.exp(-i._binaryTreeKeyframeWeighting[t]);return D.lerp(a,s,.15+.85*s)}function sTt(e,t,n,i,o){let r=e._keyframeCount,s=e.rootNode,a=Object.keys(Do.LoadState).length,c=new Array(a),u=new Array(a),f=0;for(let B=0;B<a;B++){let v=new Array(r).fill(0);c[B]=v,u[B]=0}function h(B){let v=B.keyframeNodes;for(let P=0;P<v.length;P++){let M=v[P],L=M.keyframe,p=M.state;c[p][L]+=1,u[p]+=1,f++}if(l(B.children))for(let P=0;P<8;P++){let M=B.children[P];h(M)}}h(s),e._primitive.statistics.numberOfTilesWithContentReady=u[Do.LoadState.LOADED],e._primitive.statistics.visited=f;let A=u[Do.LoadState.RECEIVING],g=u[Do.LoadState.PROCESSING],m=A!==e._primitive.statistics.numberOfPendingRequests||g!==e._primitive.statistics.numberOfTilesProcessing;if(m&&t.afterRender.push(function(){return e._primitive.loadProgress.raiseEvent(A,g),!0}),e._primitive.statistics.numberOfPendingRequests=A,e._primitive.statistics.numberOfTilesProcessing=g,m&&(A===0&&g===0)&&(t.afterRender.push(function(){return e._primitive.allTilesLoaded.raiseEvent(),!0}),e._initialTilesLoaded||(e._initialTilesLoaded=!0,t.afterRender.push(function(){return e._primitive.initialTilesLoaded.raiseEvent(),!0}))),!e._debugPrint)return;let y=`KEYFRAMES: ${c[Do.LoadState.LOADED]}`,C=`UNLOADED: ${u[Do.LoadState.UNLOADED]} | RECEIVING: ${u[Do.LoadState.RECEIVING]} | PROCESSING: ${u[Do.LoadState.PROCESSING]} | LOADED: ${u[Do.LoadState.LOADED]} | FAILED: ${u[Do.LoadState.FAILED]} | UNAVAILABLE: ${u[Do.LoadState.UNAVAILABLE]} | TOTAL: ${f}`,E=Math.round(n*100)/100,I=Math.round(i*100)/100,b=Math.round(o*100)/100,S=`LOAD: ${E} | OCT: ${I} | ALL: ${b}`;console.log(`${y} || ${C} || ${S}`)}var i5={INTERNAL:0,LEAF:1,PACKED_LEAF_FROM_PARENT:2};function aTt(e,t,n){let i=e._primitive._screenSpaceError,o=e._keyframeLocation,r=e._frameNumber,s=t>=2,a=0,c=0,u=[],f=[];function h(g,m,_,y,C){let E=!1;if(l(g.children))for(let I=0;I<8;I++){let b=g.children[I];b.computeSurroundingRenderableKeyframeNodes(o),b.isRenderable(r)&&(E=!0)}if(E){u[C]=i5.INTERNAL<<16|m,u[_]=y,a++,y=m,C=y*9+1;for(let I=0;I<8;I++){let b=g.children[I];m=a,_=m*9+0,h(b,m,_,y,C+I)}}else{if(e._primitive.tileVisible.raiseEvent(),s){let I=c*5,b=g.renderableKeyframeNodePrevious,S=g.level-b.spatialNode.level,B=b.spatialNode.parent,v=l(B)?B.renderableKeyframeNodePrevious:b,P=cTt(g,i,n),M=S,L=1,p=b.megatextureIndex,x=v.megatextureIndex;f[I+0]=P,f[I+1]=M,f[I+2]=L,f[I+3]=p,f[I+4]=x,u[C]=i5.LEAF<<16|c}else{let I=g.renderableKeyframeNodePrevious,S=g.level-I.spatialNode.level===0?i5.LEAF:i5.PACKED_LEAF_FROM_PARENT;u[C]=S<<16|I.megatextureIndex}c++}}let A=e.rootNode;A.computeSurroundingRenderableKeyframeNodes(o),A.isRenderable(r)&&h(A,0,0,0,0),lTt(u,9,e.internalNodeTilesPerRow,e.internalNodeTexture),s&&uTt(f,2,e.leafNodeTilesPerRow,e.leafNodeTexture)}function cTt(e,t,n){if(e.parent===void 0)return 0;let i=e.screenSpaceError,o=e.parent.screenSpaceError,s=((t-i)/(o-i)+n-1)/n;return D.clamp(s,0,1)}function lTt(e,t,n,i){let o=$e.componentsLength(i.pixelFormat),r=Math.ceil(e.length/t),s=Math.max(1,t*Math.min(r,n)),a=Math.max(1,Math.ceil(r/n)),c=new Uint8Array(s*a*o);for(let h=0;h<e.length;h++){let A=e[h],g=h*o;for(let m=0;m<o;m++)c[g+m]=A>>>m*8&255}let f={source:{arrayBufferView:c,width:s,height:a},xOffset:0,yOffset:0};i.copyFrom(f)}function uTt(e,t,n,i){let o=$e.componentsLength(i.pixelFormat),r=5,s=Math.ceil(e.length/r),a=Math.max(1,t*Math.min(s,n)),c=Math.max(1,Math.ceil(s/n)),u=new Uint8Array(a*c*o);for(let A=0;A<s;A++){let g=e[A*r+0],m=e[A*r+1],_=e[A*r+2],y=e[A*r+3],C=e[A*r+4],E=D.clamp(Math.floor(65536*g),0,65535);u[A*8+0]=E>>>0&255,u[A*8+1]=E>>>8&255,u[A*8+2]=m&255,u[A*8+3]=_&255,u[A*8+4]=y>>>0&255,u[A*8+5]=y>>>8&255,u[A*8+6]=C>>>0&255,u[A*8+7]=C>>>8&255}let h={source:{arrayBufferView:u,width:a,height:c},xOffset:0,yOffset:0};i.copyFrom(h)}function fTt(e,t,n,i){let o=0,r=n.length;for(let s=0;s<r;s++){let a=n[s],c=i[s],u=pt.getComponentCount(a);o+=Rw.getApproximateTextureMemoryByteLength(e,t,u,c)}return o}var Jk=EC;function GA(e){e=e??V.EMPTY_OBJECT,this._ready=!1,this._provider=e.provider??GA.DefaultProvider,this._traversal=void 0,this._statistics=new Wh,this._calculateStatistics=e.calculateStatistics??!1,this._shape=void 0,this._shapeVisible=!1,this._dimensions=new d,this._inputDimensions=new d,this._paddingBefore=new d,this._paddingAfter=new d,this._minBounds=new d,this._minBoundsOld=new d,this._maxBounds=new d,this._maxBoundsOld=new d,this._exaggeratedMinBounds=new d,this._exaggeratedMinBoundsOld=new d,this._exaggeratedMaxBounds=new d,this._exaggeratedMaxBoundsOld=new d,this._minClippingBounds=new d,this._minClippingBoundsOld=new d,this._maxClippingBounds=new d,this._maxClippingBoundsOld=new d,this._clippingPlanes=void 0,this._clippingPlanesState=0,this._clippingPlanesEnabled=!1,this._modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this._exaggeratedModelMatrix=N.clone(this._modelMatrix),this._compoundModelMatrix=new N,this._compoundModelMatrixOld=new N,this._customShader=e.customShader??GA.DefaultCustomShader,this._customShaderCompilationEvent=new _e,this._shaderDirty=!0,this._drawCommand=void 0,this._drawCommandPick=void 0,this._pickId=void 0,this._clock=e.clock,this._transformPositionWorldToUv=new N,this._transformDirectionWorldToUv=new J,this._transformPositionUvToWorld=new N,this._transformDirectionWorldToLocal=new J,this._nearestSampling=!1,this._levelBlendFactor=0,this._stepSizeMultiplier=1,this._depthTest=!0,this._useLogDepth=void 0,this._screenSpaceError=4,this._debugPolylines=new Uh,this._debugDraw=!1,this._disableRender=!1,this._disableUpdate=!1,this._uniforms={octreeInternalNodeTexture:void 0,octreeInternalNodeTilesPerRow:0,octreeInternalNodeTexelSizeUv:new U,octreeLeafNodeTexture:void 0,octreeLeafNodeTilesPerRow:0,octreeLeafNodeTexelSizeUv:new U,megatextureTextures:[],megatextureSliceDimensions:new U,megatextureTileDimensions:new U,megatextureVoxelSizeUv:new U,megatextureSliceSizeUv:new U,megatextureTileSizeUv:new U,dimensions:new d,inputDimensions:new d,paddingBefore:new d,paddingAfter:new d,transformPositionViewToUv:new N,transformPositionUvToView:new N,transformDirectionViewToLocal:new J,cameraPositionUv:new d,cameraDirectionUv:new d,ndcSpaceAxisAlignedBoundingBox:new se,clippingPlanesTexture:void 0,clippingPlanesMatrix:new N,stepSize:0,pickColor:new G},this._shapeDefinesOld={},this._uniformMap={};let t=this._uniforms,n=this._uniformMap;for(let o in t)if(t.hasOwnProperty(o)){let r=`u_${o}`;n[r]=function(){return t[o]}}this.tileLoad=new _e,this.tileVisible=new _e,this.tileFailed=new _e,this.tileUnload=new _e,this.loadProgress=new _e,this.allTilesLoaded=new _e,this.initialTilesLoaded=new _e;let i=this._provider;dTt(this,i)}function dTt(e,t){let{shape:n,minBounds:i=ec.getMinBounds(n),maxBounds:o=ec.getMaxBounds(n)}=t;e.minBounds=i,e.maxBounds=o,e.minClippingBounds=i.clone(),e.maxClippingBounds=o.clone(),e._exaggeratedMinBounds=d.clone(e._minBounds,e._exaggeratedMinBounds),e._exaggeratedMaxBounds=d.clone(e._maxBounds,e._exaggeratedMaxBounds),e._exaggeratedModelMatrix=N.clone(e._modelMatrix,e._exaggeratedModelMatrix),OTe(e,t);let r=ec.getShapeConstructor(n);e._shape=new r,e._shapeVisible=FTe(e,e._shape,t)}Object.defineProperties(GA.prototype,{ready:{get:function(){return this._ready}},provider:{get:function(){return this._provider}},boundingSphere:{get:function(){return this._shape.boundingSphere}},orientedBoundingBox:{get:function(){return this._shape.orientedBoundingBox}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=N.clone(e,this._modelMatrix)}},shape:{get:function(){return this._provider.shape}},dimensions:{get:function(){return this._dimensions}},inputDimensions:{get:function(){return this._inputDimensions}},paddingBefore:{get:function(){return this._paddingBefore}},paddingAfter:{get:function(){return this._paddingAfter}},minimumValues:{get:function(){return this._provider.minimumValues}},maximumValues:{get:function(){return this._provider.maximumValues}},show:{get:function(){return!this._disableRender},set:function(e){this._disableRender=!e}},disableUpdate:{get:function(){return this._disableUpdate},set:function(e){this._disableUpdate=e}},debugDraw:{get:function(){return this._debugDraw},set:function(e){this._debugDraw=e}},depthTest:{get:function(){return this._depthTest},set:function(e){this._depthTest!==e&&(this._depthTest=e,this._shaderDirty=!0)}},nearestSampling:{get:function(){return this._nearestSampling},set:function(e){this._nearestSampling!==e&&(this._nearestSampling=e,this._shaderDirty=!0)}},levelBlendFactor:{get:function(){return this._levelBlendFactor},set:function(e){this._levelBlendFactor=D.clamp(e,0,1)}},screenSpaceError:{get:function(){return this._screenSpaceError},set:function(e){this._screenSpaceError=e}},stepSize:{get:function(){return this._stepSizeMultiplier},set:function(e){this._stepSizeMultiplier=e}},minBounds:{get:function(){return this._minBounds},set:function(e){this._minBounds=d.clone(e,this._minBounds)}},maxBounds:{get:function(){return this._maxBounds},set:function(e){this._maxBounds=d.clone(e,this._maxBounds)}},minClippingBounds:{get:function(){return this._minClippingBounds},set:function(e){this._minClippingBounds=d.clone(e,this._minClippingBounds)}},maxClippingBounds:{get:function(){return this._maxClippingBounds},set:function(e){this._maxClippingBounds=d.clone(e,this._maxClippingBounds)}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Fs.setOwner(e,this,"_clippingPlanes")}},customShader:{get:function(){return this._customShader},set:function(e){if(this._customShader!==e){let t=this._uniformMap,i=this._customShader.uniformMap;for(let o in i)i.hasOwnProperty(o)&&delete t[o];l(e)?this._customShader=e:this._customShader=GA.DefaultCustomShader,this._shaderDirty=!0}}},customShaderCompilationEvent:{get:function(){return this._customShaderCompilationEvent}},statistics:{get:function(){return this._statistics}}});var hTt=new se,mTt=new se,ATt=new N,pTt=new N,gTt=new N,_Tt=N.fromRotationTranslation(J.fromUniformScale(.5,new J),new d(.5,.5,.5),new N),yTt=N.fromRotationTranslation(J.fromUniformScale(2,new J),new d(-1,-1,-1),new N);GA.prototype.update=function(e){let t=this._provider;this._customShader.update(e);let n=e.context;if(!this._ready){TTt(this,t,n),e.afterRender.push(()=>(this._ready=!0,!0));return}xTt(this,e);let i=OTe(this,t),o=this._shape;if(i&&(this._shapeVisible=FTe(this,o,t),wTt(this,o)&&(this._shaderDirty=!0)),!this._shapeVisible)return;let r=BTt(t.timeIntervalCollection,this._clock),s=this._traversal,a=s._sampleCount;if(s.update(e,r,i,this._disableUpdate),a!==s._sampleCount&&(this._shaderDirty=!0),!s.isRenderable(s.rootNode)||(this._debugDraw&&OTt(this,e),this._disableRender))return;this._useLogDepth!==e.useLogDepth&&(this._useLogDepth=e.useLogDepth,this._shaderDirty=!0),DTt(this,e)&&(this._shaderDirty=!0);let u=s.leafNodeTexture,f=this._uniforms;l(u)&&(f.octreeLeafNodeTexture=s.leafNodeTexture,f.octreeLeafNodeTexelSizeUv=U.clone(s.leafNodeTexelSizeUv,f.octreeLeafNodeTexelSizeUv),f.octreeLeafNodeTilesPerRow=s.leafNodeTilesPerRow),this._shaderDirty&&(Vk(this,n),this._shaderDirty=!1);let h=n.uniformState.viewProjection,A=o.orientedBoundingBox,g=RTt(A,h,mTt);if(g.x===1||g.y===1||g.z===-1||g.w===-1)return;f.ndcSpaceAxisAlignedBoundingBox=se.clone(g,f.ndcSpaceAxisAlignedBoundingBox);let _=n.uniformState.inverseView;f.transformPositionViewToUv=N.multiplyTransformation(this._transformPositionWorldToUv,_,f.transformPositionViewToUv);let y=n.uniformState.view;f.transformPositionUvToView=N.multiplyTransformation(y,this._transformPositionUvToWorld,f.transformPositionUvToView);let C=n.uniformState.inverseViewRotation;f.transformDirectionViewToLocal=J.multiply(this._transformDirectionWorldToLocal,C,f.transformDirectionViewToLocal),f.cameraPositionUv=N.multiplyByPoint(this._transformPositionWorldToUv,e.camera.positionWC,f.cameraPositionUv),f.cameraDirectionUv=J.multiplyByVector(this._transformDirectionWorldToUv,e.camera.directionWC,f.cameraDirectionUv),f.cameraDirectionUv=d.normalize(f.cameraDirectionUv,f.cameraDirectionUv),f.stepSize=this._stepSizeMultiplier;let E=e.passes.pick?this._drawCommandPick:e.passes.pickVoxel?this._drawCommandPickVoxel:this._drawCommand;E.boundingVolume=o.boundingSphere,e.commandList.push(E)};var CTt=new d,QZ=new d,ETt=new Ae,ITt=new d;function xTt(e,t){if(e._exaggeratedMinBounds=d.clone(e._minBounds,e._exaggeratedMinBounds),e._exaggeratedMaxBounds=d.clone(e._maxBounds,e._exaggeratedMaxBounds),e.shape===ec.ELLIPSOID){let n=t.verticalExaggerationRelativeHeight,i=t.verticalExaggeration;e._exaggeratedMinBounds.z=(e._minBounds.z-n)*i+n,e._exaggeratedMaxBounds.z=(e._maxBounds.z-n)*i+n}else{let n=d.fromElements(1,1,t.verticalExaggeration,CTt);e._exaggeratedModelMatrix=N.multiplyByScale(e._modelMatrix,n,e._exaggeratedModelMatrix),e._exaggeratedModelMatrix=N.multiplyByTranslation(e._exaggeratedModelMatrix,bTt(e,t),e._exaggeratedModelMatrix)}}function bTt(e,t){let{shapeTransform:n=N.IDENTITY,globalTransform:i=N.IDENTITY}=e._provider,o=N.getTranslation(n,QZ),r=N.multiplyByPoint(e._modelMatrix,o,QZ),s=N.multiplyByPoint(i,r,QZ),c=te.WGS84.cartesianToCartographic(s,ETt),u=0;l(c)&&(u=c.height);let f=Ur.getHeight(u,t.verticalExaggeration,t.verticalExaggerationRelativeHeight);return d.fromElements(0,0,(f-u)/t.verticalExaggeration,ITt)}function TTt(e,t,n){let i=e._uniforms;e._pickId=n.createPickId({primitive:e}),i.pickColor=G.clone(e._pickId.color,i.pickColor);let{shaderDefines:o,shaderUniforms:r}=e._shape;e._shapeDefinesOld=ze(o,!0);let s=e._uniformMap;for(let c in r)if(r.hasOwnProperty(c)){let u=`u_${c}`;s[u]=function(){return r[c]}}if(e._dimensions=d.clone(t.dimensions,e._dimensions),i.dimensions=d.clone(e._dimensions,i.dimensions),e._paddingBefore=d.clone(t.paddingBefore??d.ZERO,e._paddingBefore),i.paddingBefore=d.clone(e._paddingBefore,i.paddingBefore),e._paddingAfter=d.clone(t.paddingAfter??d.ZERO,e._paddingAfter),i.paddingAfter=d.clone(e._paddingAfter,i.paddingAfter),e._inputDimensions=d.add(e._dimensions,e._paddingBefore,e._inputDimensions),e._inputDimensions=d.add(e._inputDimensions,e._paddingAfter,e._inputDimensions),t.metadataOrder===Yd.Y_UP){let c=e._inputDimensions.y;e._inputDimensions.y=e._inputDimensions.z,e._inputDimensions.z=c}i.inputDimensions=d.clone(e._inputDimensions,i.inputDimensions);let a=t.keyframeCount??1;e._traversal=new Jk(e,n,a),e.statistics.texturesByteLength=e._traversal.textureMemoryByteLength,STt(e._traversal,i)}function OTe(e,t){let n=t.shapeTransform??N.IDENTITY,i=t.globalTransform??N.IDENTITY;return N.multiplyTransformation(i,e._exaggeratedModelMatrix,e._compoundModelMatrix),N.multiplyTransformation(e._compoundModelMatrix,n,e._compoundModelMatrix),lx(e,"_compoundModelMatrix","_compoundModelMatrixOld")+lx(e,"_minBounds","_minBoundsOld")+lx(e,"_maxBounds","_maxBoundsOld")+lx(e,"_exaggeratedMinBounds","_exaggeratedMinBoundsOld")+lx(e,"_exaggeratedMaxBounds","_exaggeratedMaxBoundsOld")+lx(e,"_minClippingBounds","_minClippingBoundsOld")+lx(e,"_maxClippingBounds","_maxClippingBoundsOld")>0}function lx(e,t,n){let i=e[t],o=e[n],r=!i.equals(o);return r&&i.clone(o),r?1:0}function FTe(e,t,n){if(!t.update(e._compoundModelMatrix,e._exaggeratedMinBounds,e._exaggeratedMaxBounds,e.minClippingBounds,e.maxClippingBounds))return!1;let o=t.shapeTransform,r=N.inverse(o,ATt);return e._transformPositionWorldToUv=N.multiplyTransformation(_Tt,r,e._transformPositionWorldToUv),e._transformDirectionWorldToUv=N.getMatrix3(e._transformPositionWorldToUv,e._transformDirectionWorldToUv),e._transformPositionUvToWorld=N.multiplyTransformation(o,yTt,e._transformPositionUvToWorld),e._transformDirectionWorldToLocal=N.getMatrix3(r,e._transformDirectionWorldToLocal),!0}function STt(e,t){t.octreeInternalNodeTexture=e.internalNodeTexture,t.octreeInternalNodeTexelSizeUv=U.clone(e.internalNodeTexelSizeUv,t.octreeInternalNodeTexelSizeUv),t.octreeInternalNodeTilesPerRow=e.internalNodeTilesPerRow;let n=e.megatextures,i=n[0],o=n.length;t.megatextureTextures=new Array(o);for(let r=0;r<o;r++)t.megatextureTextures[r]=n[r].texture;t.megatextureSliceDimensions=U.clone(i.sliceCountPerRegion,t.megatextureSliceDimensions),t.megatextureTileDimensions=U.clone(i.regionCountPerMegatexture,t.megatextureTileDimensions),t.megatextureVoxelSizeUv=U.clone(i.voxelSizeUv,t.megatextureVoxelSizeUv),t.megatextureSliceSizeUv=U.clone(i.sliceSizeUv,t.megatextureSliceSizeUv),t.megatextureTileSizeUv=U.clone(i.regionSizeUv,t.megatextureTileSizeUv)}function wTt(e,t){let n=t.shaderDefines,i=Object.keys(n).some(o=>n[o]!==e._shapeDefinesOld[o]);return i&&(e._shapeDefinesOld=ze(n,!0)),i}function BTt(e,t){if(!l(e)||!l(t))return 0;let n=t.currentTime,i,o=e.indexOf(n);o>=0?i=e.get(o):(o=~o,o===e.length?(o=e.length-1,i=e.get(o),n=i.stop):(i=e.get(o),n=i.start));let r=K.secondsDifference(i.stop,i.start),a=K.secondsDifference(n,i.start)/r;return o+a}function DTt(e,t){let n=e.clippingPlanes;if(!l(n))return!1;n.update(t);let{clippingPlanesState:i,enabled:o}=n;if(o){let r=e._uniforms;r.clippingPlanesTexture=n.texture,r.clippingPlanesMatrix=N.transpose(N.multiplyTransformation(N.inverse(n.modelMatrix,r.clippingPlanesMatrix),e._transformPositionUvToWorld,r.clippingPlanesMatrix),r.clippingPlanesMatrix)}return e._clippingPlanesState===i&&e._clippingPlanesEnabled===o?!1:(e._clippingPlanesState=i,e._clippingPlanesEnabled=o,!0)}GA.prototype.isDestroyed=function(){return!1};GA.prototype.destroy=function(){let e=this._drawCommand;l(e)&&(e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy());let t=this._drawCommandPick;return l(t)&&(t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy()),this._pickId=this._pickId&&this._pickId.destroy(),this._traversal=this._traversal&&this._traversal.destroy(),this.statistics.texturesByteLength=0,this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),ue(this)};var LTe=new Array(new se(-1,-1,-1,1),new se(1,-1,-1,1),new se(-1,1,-1,1),new se(1,1,-1,1),new se(-1,-1,1,1),new se(1,-1,1,1),new se(-1,1,1,1),new se(1,1,1,1)),vTt=new Array(1,2,4,0,3,5,0,3,6,1,2,7,0,5,6,1,4,7,2,4,7,3,5,6),PTt=new Array(new se,new se,new se,new se,new se,new se,new se,new se);function RTt(e,t,n){let i=N.fromRotationTranslation(e.halfAxes,e.center,pTt),o=N.multiply(t,i,gTt),r=+Number.MAX_VALUE,s=-Number.MAX_VALUE,a=+Number.MAX_VALUE,c=-Number.MAX_VALUE,u,f=PTt,h=LTe.length;for(u=0;u<h;u++)N.multiplyByVector(o,LTe[u],f[u]);for(u=0;u<h;u++){let A=f[u];if(A.z>=-A.w){let g=A.x/A.w,m=A.y/A.w;r=Math.min(r,g),s=Math.max(s,g),a=Math.min(a,m),c=Math.max(c,m)}else for(let g=0;g<3;g++){let m=vTt[u*3+g],_=f[m];if(_.z>=-_.w){let y=A.z+A.w,C=_.z+_.w,E=y/(y-C),I=se.lerp(A,_,E,hTt),b=I.x/I.w,S=I.y/I.w;r=Math.min(r,b),s=Math.max(s,b),a=Math.min(a,S),c=Math.max(c,S)}}}return r=D.clamp(r,-1,1),a=D.clamp(a,-1,1),s=D.clamp(s,-1,1),c=D.clamp(c,-1,1),n=se.fromElements(r,a,s,c,n),n}var kZ=3e7,MTt=new d(kZ,0,0),NTt=new d(0,kZ,0),LTt=new d(0,0,kZ);function OTt(e,t){let n=e._traversal,i=e._debugPolylines;i.removeAll();function o(c,u,f,h){i.add({positions:[c,u],width:h,material:ro.fromType("Color",{color:f})})}function r(c,u,f){let h=c.computeCorners();o(h[0],h[1],u,f),o(h[2],h[3],u,f),o(h[4],h[5],u,f),o(h[6],h[7],u,f),o(h[0],h[2],u,f),o(h[4],h[6],u,f),o(h[1],h[3],u,f),o(h[5],h[7],u,f),o(h[0],h[4],u,f),o(h[2],h[6],u,f),o(h[1],h[5],u,f),o(h[3],h[7],u,f)}function s(c){if(!n.isRenderable(c))return;let u=c.level,h=Math.max(1,5/Math.pow(2,u)),g=[G.RED,G.LIME,G.BLUE][u%3];if(r(c.orientedBoundingBox,g,h),l(c.children))for(let m=0;m<8;m++)s(c.children[m])}r(e._shape.orientedBoundingBox,G.WHITE,5),s(n.rootNode);let a=10;o(d.ZERO,MTt,G.RED,a),o(d.ZERO,NTt,G.LIME,a),o(d.ZERO,LTt,G.BLUE,a),i.update(t)}GA.DefaultCustomShader=new ix({fragmentShaderText:`void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material) +{ + material.diffuse = vec3(1.0); + material.alpha = 1.0; +}`});function QTe(){this.ready=!0,this.shape=ec.BOX,this.dimensions=new d(1,1,1),this.names=["data"],this.types=[pt.SCALAR],this.componentTypes=[Gt.FLOAT32],this.maximumTileCount=1}QTe.prototype.requestData=function(e){if((l(e)?e.tileLevel??0:0)>=1)return;let n=new ox({metadata:[new Float32Array(1)]});return Promise.resolve(n)};GA.DefaultProvider=new QTe;var IC=GA;function FTt(e,t,n,i){if(!l(e)||l(t)&&e.id!==t)return;let r=(e.classes||{})[n];if(!l(r))return;let a=(r.properties||{})[i];if(l(a))return a}var Zk=FTt;function QTt(e,t,n,i,o){this.schemaId=e,this.className=t,this.propertyName=n,this.classProperty=i,this.metadataProperty=o}var $k=QTt;function kTt(e,t,n){if(!l(e))return;let i=e.propertyTextures;for(let o of i)if(o.class.id===t){let a=o.properties[n];if(l(a))return a}}var e3=kTt;var r5=function(e){return function(){e.frameState.afterRender.push(function(){e.requestRender()})}};function xi(e){e=e??V.EMPTY_OBJECT;let t=e.canvas,n=e.creditContainer,i=e.creditViewport,o=e.contextOptions instanceof T2;if(o)this._context=e.contextOptions.createSceneContext(t);else{let u=ze(e.contextOptions);this._context=new DI(t,u)}let r=this._context,s=l(n);s||(n=document.createElement("div"),n.style.position="absolute",n.style.bottom="0",n.style["text-shadow"]="0 0 2px #000000",n.style.color="#ffffff",n.style["font-size"]="10px",n.style["padding-right"]="5px",t.parentNode.appendChild(n)),l(i)||(i=t.parentNode),this._id=Xn(),this._jobScheduler=new PQ,this._frameState=new DQ(r,new CQ(n,"\u2022",i),this._jobScheduler),this._frameState.scene3DOnly=e.scene3DOnly??!1,this._removeCreditContainer=!s,this._creditContainer=n,this._canvas=t,this._computeEngine=new C2(r),this._ellipsoid=e.ellipsoid??te.default,this._globe=void 0,this._globeTranslucencyState=new vQ,this._primitives=new Ql({countReferences:o}),this._groundPrimitives=new Ql({countReferences:o}),this._globeHeight=void 0,this._globeHeightDirty=!0,this._cameraUnderground=!1,this._removeUpdateHeightCallback=void 0,this._logDepthBuffer=xi.defaultLogDepthBuffer&&r.fragmentDepth,this._logDepthBufferDirty=!0,this._tweens=new ZI,this._shaderFrameCount=0,this._sunPostProcess=void 0,this._computeCommandList=[],this._overlayCommandList=[],this._useOIT=e.orderIndependentTranslucency??!0,this._executeOITFunction=void 0,this._depthPlane=new SQ(e.depthPlaneEllipsoidOffset),this._clearColorCommand=new Ci({color:new G,stencil:0,owner:this}),this._depthClearCommand=new Ci({depth:1,owner:this}),this._stencilClearCommand=new Ci({stencil:0}),this._classificationStencilClearCommand=new Ci({stencil:0,renderState:Ue.fromCache({stencilMask:Kt.CLASSIFICATION_MASK})}),this._depthOnlyRenderStateCache={},this._transitioner=new pk(this),this._preUpdate=new _e,this._postUpdate=new _e,this._renderError=new _e,this._preRender=new _e,this._postRender=new _e,this._minimumDisableDepthTestDistance=0,this._debugInspector=new Tk,this._msaaSamples=e.msaaSamples??4,this.rethrowRenderErrors=!1,this.completeMorphOnUserInput=!0,this.morphStart=new _e,this.morphComplete=new _e,this.skyBox=void 0,this.skyAtmosphere=void 0,this.sun=void 0,this.sunBloom=!0,this._sunBloom=void 0,this.moon=void 0,this.backgroundColor=G.clone(G.BLACK),this._mode=ie.SCENE3D,this._mapProjection=l(e.mapProjection)?e.mapProjection:new Ui(this._ellipsoid),this.morphTime=1,this.farToNearRatio=1e3,this.logarithmicDepthFarToNearRatio=1e9,this.nearToFarDistance2D=175e4,this.verticalExaggeration=1,this.verticalExaggerationRelativeHeight=0,this.debugCommandFilter=void 0,this.debugShowCommands=!1,this.debugShowFrustums=!1,this.debugShowFramesPerSecond=!1,this.debugShowDepthFrustum=1,this.debugShowFrustumPlanes=!1,this._debugShowFrustumPlanes=!1,this._debugFrustumPlanes=void 0,this.useDepthPicking=!0,this.pickTranslucentDepth=!1,this.cameraEventWaitTime=500,this.atmosphere=new e0,this.fog=new BQ,this.fog.enabled=te.WGS84.equals(this._ellipsoid),te.WGS84.equals(this._ellipsoid)||(Co.DEFAULT_VIEW_RECTANGLE=ae.fromDegrees(-45,-45,45,45)),this._shadowMapCamera=new Co(this),this.shadowMap=new Jg({context:r,lightCamera:this._shadowMapCamera,enabled:e.shadows??!1}),this.invertClassification=!1,this.invertClassificationColor=G.clone(G.WHITE),this._actualInvertClassificationColor=G.clone(this._invertClassificationColor),this._invertClassification=new bw,this.focalLength=void 0,this.eyeSeparation=void 0,this.postProcessStages=new hk,this._brdfLutGenerator=new mQ,this._performanceDisplay=void 0,this._debugVolume=void 0,this._screenSpaceCameraController=new Ck(this),this._cameraUnderground=!1,this._mapMode2D=e.mapMode2D??wu.INFINITE_SCROLL,this._environmentState={skyBoxCommand:void 0,skyAtmosphereCommand:void 0,sunDrawCommand:void 0,sunComputeCommand:void 0,moonCommand:void 0,isSunVisible:!1,isMoonVisible:!1,isReadyForAtmosphere:!1,isSkyAtmosphereVisible:!1,clearGlobeDepth:!1,useDepthPlane:!1,renderTranslucentDepthForPick:!1,originalFramebuffer:void 0,useGlobeDepthFramebuffer:!1,useOIT:!1,useInvertClassification:!1,usePostProcess:!1,usePostProcessSelected:!1,useWebVR:!1},this._useWebVR=!1,this._cameraVR=void 0,this._aspectRatioVR=void 0,this.requestRenderMode=e.requestRenderMode??!1,this._renderRequested=!0,this.maximumRenderTimeChange=e.maximumRenderTimeChange??0,this._lastRenderTime=void 0,this._frameRateMonitor=void 0,this._removeRequestListenerCallback=Bc.requestCompletedEvent.addEventListener(r5(this)),this._removeTaskProcessorListenerCallback=di.taskCompletedEvent.addEventListener(r5(this)),this._removeGlobeCallbacks=[],this._removeTerrainProviderReadyListener=void 0;let a=new Ye(0,0,r.drawingBufferWidth,r.drawingBufferHeight),c=new Co(this);this._logDepthBuffer&&(c.frustum.near=.1,c.frustum.far=1e10),this.preloadFlightCamera=new Co(this),this.preloadFlightCullingVolume=void 0,this._picking=new WQ(this),this._defaultView=new HI(this,c,a),this._view=this._defaultView,this._hdr=void 0,this._hdrDirty=void 0,this.highDynamicRange=!1,this.gamma=2.2,this.sphericalHarmonicCoefficients=void 0,this.specularEnvironmentMaps=void 0,this._specularEnvironmentCubeMap=void 0,this.light=new Hg,HTe(this,0,K.now()),this.updateFrameState(),this.initializeFrame()}xi.defaultLogDepthBuffer=!0;function UTt(e,t){for(let i=0;i<e._removeGlobeCallbacks.length;++i)e._removeGlobeCallbacks[i]();e._removeGlobeCallbacks.length=0;let n=[];l(t)&&(n.push(t.imageryLayersUpdatedEvent.addEventListener(r5(e))),n.push(t.terrainProviderChanged.addEventListener(r5(e)))),e._removeGlobeCallbacks=n}Object.defineProperties(xi.prototype,{canvas:{get:function(){return this._canvas}},drawingBufferHeight:{get:function(){return this._context.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._context.drawingBufferWidth}},maximumAliasedLineWidth:{get:function(){return Yt.maximumAliasedLineWidth}},maximumCubeMapSize:{get:function(){return Yt.maximumCubeMapSize}},pickPositionSupported:{get:function(){return this._context.depthTexture}},sampleHeightSupported:{get:function(){return this._context.depthTexture}},clampToHeightSupported:{get:function(){return this._context.depthTexture}},invertClassificationSupported:{get:function(){return this._context.depthTexture}},specularEnvironmentMapsSupported:{get:function(){return Ch.isSupported(this._context)}},ellipsoid:{get:function(){return this._ellipsoid}},globe:{get:function(){return this._globe},set:function(e){this._globe=this._globe&&this._globe.destroy(),this._globe=e,UTt(this,e)}},primitives:{get:function(){return this._primitives}},groundPrimitives:{get:function(){return this._groundPrimitives}},camera:{get:function(){return this._view.camera},set:function(e){this._view.camera=e}},view:{get:function(){return this._view},set:function(e){this._view=e}},defaultView:{get:function(){return this._defaultView}},picking:{get:function(){return this._picking}},screenSpaceCameraController:{get:function(){return this._screenSpaceCameraController}},mapProjection:{get:function(){return this._mapProjection}},jobScheduler:{get:function(){return this._jobScheduler}},frameState:{get:function(){return this._frameState}},environmentState:{get:function(){return this._environmentState}},tweens:{get:function(){return this._tweens}},imageryLayers:{get:function(){if(l(this.globe))return this.globe.imageryLayers}},terrainProvider:{get:function(){if(l(this.globe))return this.globe.terrainProvider},set:function(e){this._removeTerrainProviderReadyListener=this._removeTerrainProviderReadyListener&&this._removeTerrainProviderReadyListener(),l(this.globe)&&(this.globe.terrainProvider=e)}},terrainProviderChanged:{get:function(){if(l(this.globe))return this.globe.terrainProviderChanged}},preUpdate:{get:function(){return this._preUpdate}},postUpdate:{get:function(){return this._postUpdate}},renderError:{get:function(){return this._renderError}},preRender:{get:function(){return this._preRender}},postRender:{get:function(){return this._postRender}},lastRenderTime:{get:function(){return this._lastRenderTime}},context:{get:function(){return this._context}},debugFrustumStatistics:{get:function(){return this._view.debugFrustumStatistics}},scene3DOnly:{get:function(){return this._frameState.scene3DOnly}},orderIndependentTranslucency:{get:function(){return this._useOIT}},id:{get:function(){return this._id}},mode:{get:function(){return this._mode},set:function(e){e===ie.SCENE2D?this.morphTo2D(0):e===ie.SCENE3D?this.morphTo3D(0):e===ie.COLUMBUS_VIEW&&this.morphToColumbusView(0),this._mode=e}},frustumCommandsList:{get:function(){return this._view.frustumCommandsList}},numberOfFrustums:{get:function(){return this._view.frustumCommandsList.length}},useWebVR:{get:function(){return this._useWebVR},set:function(e){this._useWebVR=e,this._useWebVR?(this._frameState.creditDisplay.container.style.visibility="hidden",this._cameraVR=new Co(this),l(this._deviceOrientationCameraController)||(this._deviceOrientationCameraController=new wQ(this)),this._aspectRatioVR=this.camera.frustum.aspectRatio):(this._frameState.creditDisplay.container.style.visibility="visible",this._cameraVR=void 0,this._deviceOrientationCameraController=this._deviceOrientationCameraController&&!this._deviceOrientationCameraController.isDestroyed()&&this._deviceOrientationCameraController.destroy(),this.camera.frustum.aspectRatio=this._aspectRatioVR,this.camera.frustum.xOffset=0)}},mapMode2D:{get:function(){return this._mapMode2D}},splitPosition:{get:function(){return this._frameState.splitPosition},set:function(e){this._frameState.splitPosition=e}},minimumDisableDepthTestDistance:{get:function(){return this._minimumDisableDepthTestDistance},set:function(e){this._minimumDisableDepthTestDistance=e}},logarithmicDepthBuffer:{get:function(){return this._logDepthBuffer},set:function(e){e=this._context.fragmentDepth&&e,this._logDepthBuffer!==e&&(this._logDepthBuffer=e,this._logDepthBufferDirty=!0)}},gamma:{get:function(){return this._context.uniformState.gamma},set:function(e){this._context.uniformState.gamma=e}},highDynamicRange:{get:function(){return this._hdr},set:function(e){let t=this._context,n=e&&t.depthTexture&&(t.colorBufferFloat||t.colorBufferHalfFloat);this._hdrDirty=n!==this._hdr,this._hdr=n}},highDynamicRangeSupported:{get:function(){let e=this._context;return e.depthTexture&&(e.colorBufferFloat||e.colorBufferHalfFloat)}},cameraUnderground:{get:function(){return this._cameraUnderground}},msaaSamples:{get:function(){return this._msaaSamples},set:function(e){e=Math.min(e,Yt.maximumSamples),this._msaaSamples=e}},msaaSupported:{get:function(){return this._context.msaa}},pixelRatio:{get:function(){return this._frameState.pixelRatio},set:function(e){this._frameState.pixelRatio=e}},opaqueFrustumNearOffset:{get:function(){return .9999}},globeHeight:{get:function(){return this._globeHeight}}});xi.prototype.getCompressedTextureFormatSupported=function(e){let t=this.context;return(e==="WEBGL_compressed_texture_s3tc"||e==="s3tc")&&t.s3tc||(e==="WEBGL_compressed_texture_pvrtc"||e==="pvrtc")&&t.pvrtc||(e==="WEBGL_compressed_texture_etc"||e==="etc")&&t.etc||(e==="WEBGL_compressed_texture_etc1"||e==="etc1")&&t.etc1||(e==="WEBGL_compressed_texture_astc"||e==="astc")&&t.astc||(e==="EXT_texture_compression_bptc"||e==="bc7")&&t.bc7};function GTt(e,t){let n=e.pickedMetadataInfo,i=t.pickedMetadataInfo;return n?.schemaId!==i?.schemaId||n?.className!==i?.className||n?.propertyName!==i?.propertyName}function kTe(e,t,n){let i=e._frameState,o=e._context,r=e._view.oit,{lightShadowMaps:s,lightShadowsEnabled:a}=i.shadowState,c=t.derivedCommands;l(t.pickId)&&(c.picking=MA.createPickDerivedCommand(e,t,o,c.picking)),i.pickingMetadata&&t.pickMetadataAllowed&&(t.pickedMetadataInfo=i.pickedMetadataInfo,l(t.pickedMetadataInfo)&&(c.pickingMetadata=MA.createPickMetadataDerivedCommand(e,t,o,c.pickingMetadata))),t.pickOnly||(c.depth=MA.createDepthOnlyDerivedCommand(e,t,o,c.depth)),c.originalCommand=t,e._hdr&&(c.hdr=MA.createHdrCommand(t,o,c.hdr),t=c.hdr.command,c=t.derivedCommands),a&&t.receiveShadows&&(c.shadows=Jg.createReceiveDerivedCommand(s,t,n,o,c.shadows)),t.pass===Be.TRANSLUCENT&&l(r)&&r.isSupported()&&(a&&t.receiveShadows?(c.oit=l(c.oit)?c.oit:{},c.oit.shadows=r.createDerivedCommands(c.shadows.receiveCommand,o,c.oit.shadows)):c.oit=r.createDerivedCommands(t,o,c.oit))}xi.prototype.updateDerivedCommands=function(e){let{derivedCommands:t}=e;if(!l(t))return;let n=this._frameState,{shadowState:i,useLogDepth:o}=this._frameState,r=this._context,s=!1,a=i.lastDirtyTime;e.lastDirtyTime!==a&&(e.lastDirtyTime=a,e.dirty=!0,s=!0);let c=this._hdr,u=l(t.logDepth),f=l(t.hdr),h=l(t.originalCommand),A=o&&!u,g=c&&!f,m=(!o||!c)&&!h,_=n.pickingMetadata&>t(e,n);if(e.dirty=e.dirty||A||g||m||_,!e.dirty)return;e.dirty=!1;let{shadowsEnabled:y,shadowMaps:C}=i;y&&e.castShadows&&(t.shadows=Jg.createCastDerivedCommand(C,e,s,r,t.shadows)),(u||A)&&(t.logDepth=MA.createLogDepthCommand(e,r,t.logDepth),kTe(this,t.logDepth.command,s)),(h||m)&&kTe(this,e,s)};var zTt=new Vd({pass:qo.RENDER}),UZ=new Vd({pass:qo.PRELOAD}),GZ=new Vd({pass:qo.PRELOAD_FLIGHT}),VTt=new Vd({pass:qo.REQUEST_RENDER_MODE_DEFER_CHECK}),UTe=new le,zZ;function HTt(e){if(!(e._mode!==ie.SCENE3D||!e.globe?.show||e._cameraUnderground||e._globeTranslucencyState.translucent))return UTe.radius=e.ellipsoid.minimumRadius+e.frameState.minimumTerrainHeight,zZ=dQ.fromBoundingSphere(UTe,e.camera.positionWC,zZ),zZ}xi.prototype.clearPasses=function(e){e.render=!1,e.pick=!1,e.pickVoxel=!1,e.depth=!1,e.postProcess=!1,e.offscreen=!1};function HTe(e,t,n){let i=e._frameState;i.frameNumber=t,i.time=K.clone(n,i.time)}xi.prototype.updateFrameState=function(){let e=this.camera,t=this._frameState;t.commandList.length=0,t.shadowMaps.length=0,t.brdfLutGenerator=this._brdfLutGenerator,t.environmentMap=this.skyBox&&this.skyBox._cubeMap,t.mode=this._mode,t.morphTime=this.morphTime,t.mapProjection=this.mapProjection,t.camera=e,t.cullingVolume=e.frustum.computeCullingVolume(e.positionWC,e.directionWC,e.upWC),t.occluder=HTt(this),t.minimumTerrainHeight=0,t.minimumDisableDepthTestDistance=this._minimumDisableDepthTestDistance,t.invertClassification=this.invertClassification,t.useLogDepth=this._logDepthBuffer&&!(this.camera.frustum instanceof An||this.camera.frustum instanceof es),t.light=this.light,t.cameraUnderground=this._cameraUnderground,t.globeTranslucencyState=this._globeTranslucencyState;let{globe:n}=this;l(n)&&n._terrainExaggerationChanged&&(this.verticalExaggeration=n._terrainExaggeration,this.verticalExaggerationRelativeHeight=n._terrainExaggerationRelativeHeight,n._terrainExaggerationChanged=!1),t.verticalExaggeration=this.verticalExaggeration,t.verticalExaggerationRelativeHeight=this.verticalExaggerationRelativeHeight,l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.ready?(t.specularEnvironmentMaps=this._specularEnvironmentCubeMap.texture,t.specularEnvironmentMapsMaximumLOD=this._specularEnvironmentCubeMap.maximumMipmapLevel):(t.specularEnvironmentMaps=void 0,t.specularEnvironmentMapsMaximumLOD=void 0),t.sphericalHarmonicCoefficients=this.sphericalHarmonicCoefficients,this._actualInvertClassificationColor=G.clone(this.invertClassificationColor,this._actualInvertClassificationColor),bw.isTranslucencySupported(this._context)||(this._actualInvertClassificationColor.alpha=1),t.invertClassificationColor=this._actualInvertClassificationColor,l(this.globe)?t.maximumScreenSpaceError=this.globe.maximumScreenSpaceError:t.maximumScreenSpaceError=2,this.clearPasses(t.passes),t.tilesetPassState=void 0};xi.prototype.isVisible=function(e,t,n){if(!l(t))return!1;let{boundingVolume:i}=t;return!l(i)||!t.cull?!0:e.computeVisibility(i)===tn.OUTSIDE?!1:!l(n)||!t.occlude||!i.isOccluded(n)};var o5=new N(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);o5=N.inverseTransformation(o5,o5);function WTt(e,t,n,i){let o=t._frameState,r=o.context,s=e.boundingVolume;l(t._debugVolume)&&t._debugVolume.destroy();let a=d.clone(s.center);if(o.mode!==ie.SCENE3D){a=N.multiplyByPoint(o5,a,a);let m=o.mapProjection,_=m.unproject(a);a=m.ellipsoid.cartographicToCartesian(_)}let c,u,{radius:f}=s;l(f)?(c=Ia.createGeometry(new Ia({radii:new d(f,f,f),vertexFormat:gn.FLAT_VERTEX_FORMAT})),u=N.fromTranslation(a)):(c=cc.createGeometry(cc.fromDimensions({dimensions:new d(2,2,2),vertexFormat:gn.FLAT_VERTEX_FORMAT})),u=N.fromRotationTranslation(s.halfAxes,a,new N)),t._debugVolume=new Qn({geometryInstances:new Pt({geometry:Vn.toWireframe(c),modelMatrix:u,attributes:{color:new $t(1,0,0,1)}}),appearance:new gn({flat:!0,translucent:!1}),asynchronous:!1});let h=o.commandList,A=o.commandList=[];t._debugVolume.update(o),e=A[0],o.useLogDepth&&(e=MA.createLogDepthCommand(e,r).command);let g;l(i)&&(g=n.framebuffer,n.framebuffer=i),e.execute(r,n),l(g)&&(n.framebuffer=g),o.commandList=h}function Im(e,t,n,i){let o=t._frameState,r=t._context;if(l(t.debugCommandFilter)&&!t.debugCommandFilter(e))return;if(e instanceof Ci){e.execute(r,n);return}e.debugShowBoundingVolume&&l(e.boundingVolume)&&WTt(e,t,n,i),o.useLogDepth&&l(e.derivedCommands.logDepth)&&(e=e.derivedCommands.logDepth.command);let s=o.passes;if(!s.pick&&!s.pickVoxel&&!s.depth&&t._hdr&&l(e.derivedCommands)&&l(e.derivedCommands.hdr)&&(e=e.derivedCommands.hdr.command),s.pick||s.depth){if(s.pick&&!s.depth){if(o.pickingMetadata&&l(e.derivedCommands.pickingMetadata)){e=e.derivedCommands.pickingMetadata.pickMetadataCommand,e.execute(r,n);return}if(!o.pickingMetadata&&l(e.derivedCommands.picking)){e=e.derivedCommands.picking.pickCommand,e.execute(r,n);return}}else if(l(e.derivedCommands.depth)){e=e.derivedCommands.depth.depthOnlyCommand,e.execute(r,n);return}}if(t.debugShowCommands||t.debugShowFrustums){t._debugInspector.executeDebugShowFrustumsCommand(t,e,n);return}o.shadowState.lightShadowsEnabled&&e.receiveShadows&&l(e.derivedCommands.shadows)?e.derivedCommands.shadows.receiveCommand.execute(r,n):e.execute(r,n)}function GTe(e,t,n){let{derivedCommands:i}=e;if(!l(i))return;let o=t._frameState,r=t._context;o.useLogDepth&&l(i.logDepth)&&(e=i.logDepth.command);let{picking:s,pickingMetadata:a,depth:c}=e.derivedCommands;l(a)&&(e=i.pickingMetadata.pickMetadataCommand,e.execute(r,n)),l(s)?(e=s.pickCommand,e.execute(r,n)):l(c)&&(e=c.depthOnlyCommand,e.execute(r,n))}function WTe(e,t,n){return t.boundingVolume.distanceSquaredTo(n)-e.boundingVolume.distanceSquaredTo(n)}var jTt=new d;function zTe(e,t){let n=d.subtract(e,t,jTt),i=Math.max(0,d.magnitude(n));return i*i}function YTt(e,t,n){let i=e.boundingVolume,o=t.boundingVolume;return zTe(o.center,n)-zTe(i.center,n)}function qTt(e,t,n){return e.boundingVolume.distanceSquaredTo(n)-t.boundingVolume.distanceSquaredTo(n)+D.EPSILON12}function KTt(e,t,n,i,o){vA(i,WTe,e.camera.positionWC),l(o)&&t(o.unclassifiedCommand,e,n);for(let r=0;r<i.length;++r)t(i[r],e,n)}function XTt(e,t,n,i,o){vA(i,qTt,e.camera.positionWC),l(o)&&t(o.unclassifiedCommand,e,n);for(let r=0;r<i.length;++r)t(i[r],e,n)}function JTt(e,t,n){e.context.uniformState.updatePass(Be.VOXELS);let i=n.commands[Be.VOXELS];i.length=n.indices[Be.VOXELS],vA(i,WTe,e.camera.positionWC);for(let o=0;o<i.length;++o)Im(i[o],e,t)}function ZTt(e,t,n){e.context.uniformState.updatePass(Be.GAUSSIAN_SPLATS);let i=n.commands[Be.GAUSSIAN_SPLATS];i.length=n.indices[Be.GAUSSIAN_SPLATS],vA(i,YTt,e.camera.positionWC);for(let o=0;o<i.length;++o)Im(i[o],e,t)}var $Tt=new ki,eSt=new Vl,tSt=new An,nSt=new es;function iSt(e){let{frustum:t}=e;return l(t.fov)?t.clone($Tt):l(t.infiniteProjectionMatrix)?t.clone(eSt):l(t.width)?t.clone(tSt):t.clone(nSt)}function oSt(e){if(e._environmentState.useOIT){if(!l(e._executeOITFunction)){let{view:t,context:n}=e;e._executeOITFunction=function(i,o,r,s,a){t.globeDepth.prepareColorTextures(n),t.oit.executeCommands(i,o,r,s,a)}}return e._executeOITFunction}return e.frameState.passes.render?KTt:XTt}function rSt(e,t,n){let{frameState:i,context:o}=e,{pick:r,pickVoxel:s}=i.passes,a=r||s,c;!a&&e._environmentState.useInvertClassification&&i.invertClassificationColor.alpha<1&&(c=e._invertClassification);let u=oSt(e);o.uniformState.updatePass(Be.TRANSLUCENT);let f=n.commands[Be.TRANSLUCENT];f.length=n.indices[Be.TRANSLUCENT],u(e,Im,t,f,c)}function sSt(e,t,n){let{translucentTileClassification:i,globeDepth:o}=e._view;if(!(n.indices[Be.CESIUM_3D_TILE_CLASSIFICATION]>0)||!i.isSupported())return;let s=n.commands[Be.TRANSLUCENT];i.executeTranslucentCommands(e,Im,t,s,o.depthStencilTexture),i.executeClassificationCommands(e,Im,t,n)}function HZ(e,t){let{camera:n,context:i,frameState:o}=e,{uniformState:r}=i;r.updateCamera(n);let s=iSt(n);s.near=n.frustum.near,s.far=n.frustum.far;let a=o.passes,c=a.pick||a.pickVoxel;c||aSt(e,t);let{clearGlobeDepth:u,renderTranslucentDepthForPick:f,useDepthPlane:h,useGlobeDepthFramebuffer:A,useInvertClassification:g,usePostProcessSelected:m}=e._environmentState,{globeDepth:_,globeTranslucencyFramebuffer:y,sceneFramebuffer:C,frustumCommandsList:E}=e._view,I=E.length,b=e._globeTranslucencyState,S=e._depthClearCommand,B=e._stencilClearCommand,v=e._classificationStencilClearCommand,P=e._depthPlane,M=n.position.z;function L(x,T){r.updatePass(T);let w=x.commands[T],R=x.indices[T];for(let O=0;O<R;++O)Im(w[O],e,t);return R}function p(x,T){r.updatePass(T);let w=x.commands[T],R=x.indices[T];for(let O=0;O<R;++O)GTe(w[O],e,t)}for(let x=0;x<I;++x){let T=I-x-1,w=E[T];e.mode===ie.SCENE2D?(n.position.z=M-w.near+1,s.far=Math.max(1,w.far-w.near),s.near=1,r.update(o),r.updateFrustum(s)):(s.near=T!==0?w.near*e.opaqueFrustumNearOffset:w.near,s.far=w.far,r.updateFrustum(s)),S.execute(i,t),i.stencilBuffer&&B.execute(i,t),b.translucent?(r.updatePass(Be.GLOBE),b.executeGlobeCommands(w,Im,y,e,t)):L(w,Be.GLOBE),A&&_.executeCopyDepth(i,t),f||(b.translucent?(r.updatePass(Be.TERRAIN_CLASSIFICATION),b.executeGlobeClassificationCommands(w,Im,y,e,t)):L(w,Be.TERRAIN_CLASSIFICATION)),u&&(S.execute(i,t),h&&P.execute(i,t));let R;if(!g||c||f)R=L(w,Be.CESIUM_3D_TILE),R>0&&(A&&(_.prepareColorTextures(i,u),_.executeUpdateDepth(i,t,_.depthStencilTexture)),f||(R=L(w,Be.CESIUM_3D_TILE_CLASSIFICATION)));else{e._invertClassification.clear(i,t);let k=t.framebuffer;t.framebuffer=e._invertClassification._fbo.framebuffer,R=L(w,Be.CESIUM_3D_TILE),A&&(e._invertClassification.prepareTextures(i),_.executeUpdateDepth(i,t,e._invertClassification._fbo.getDepthStencilTexture())),R=L(w,Be.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW),t.framebuffer=k,e._invertClassification.executeClassified(i,t),o.invertClassificationColor.alpha===1&&e._invertClassification.executeUnclassified(i,t),R>0&&i.stencilBuffer&&v.execute(i,t),R=L(w,Be.CESIUM_3D_TILE_CLASSIFICATION)}if(R>0&&i.stencilBuffer&&B.execute(i,t),JTt(e,t,w),L(w,Be.OPAQUE),ZTt(e,t,w),T!==0&&e.mode!==ie.SCENE2D&&(s.near=w.near,r.updateFrustum(s)),rSt(e,t,w),sSt(e,t,w),i.depthTexture&&e.useDepthPicking&&(A||f)){let k=e._picking.getPickDepth(e,T);k.update(i,_.depthStencilTexture),k.executeCopyDepth(i,t)}if(c||!m)continue;let O=t.framebuffer;t.framebuffer=C.getIdFramebuffer(),s.near=T!==0?w.near*e.opaqueFrustumNearOffset:w.near,s.far=w.far,r.updateFrustum(s),b.translucent?(r.updatePass(Be.GLOBE),b.executeGlobeCommands(w,GTe,y,e,t)):p(w,Be.GLOBE),u&&(S.framebuffer=t.framebuffer,S.execute(i,t),S.framebuffer=void 0),u&&h&&P.execute(i,t),p(w,Be.CESIUM_3D_TILE),p(w,Be.OPAQUE),p(w,Be.TRANSLUCENT),t.framebuffer=O}}function aSt(e,t){let{context:n,environmentState:i,view:o}=e;if(n.uniformState.updatePass(Be.ENVIRONMENT),l(i.skyBoxCommand)&&Im(i.skyBoxCommand,e,t),i.isSkyAtmosphereVisible&&Im(i.skyAtmosphereCommand,e,t),i.isSunVisible&&(i.sunDrawCommand.execute(n,t),e.sunBloom&&!i.useWebVR)){let r;i.useGlobeDepthFramebuffer?r=o.globeDepth.framebuffer:i.usePostProcess?r=o.sceneFramebuffer.framebuffer:r=i.originalFramebuffer,e._sunPostProcess.execute(n),e._sunPostProcess.copy(n,r),t.framebuffer=r}i.isMoonVisible&&i.moonCommand.execute(n,t)}function jTe(e){e.context.uniformState.updatePass(Be.COMPUTE);let t=e._environmentState.sunComputeCommand;l(t)&&t.execute(e._computeEngine);let n=e._computeCommandList;for(let i=0;i<n.length;++i)n[i].execute(e._computeEngine)}function cSt(e,t){e.context.uniformState.updatePass(Be.OVERLAY);let n=e.context,i=e._overlayCommandList;for(let o=0;o<i.length;++o)i[o].execute(n,t)}function lSt(e,t,n){let{shadowMapCullingVolume:i,isPointLight:o,passes:r}=n,s=r.length,a=[Be.GLOBE,Be.CESIUM_3D_TILE,Be.OPAQUE,Be.TRANSLUCENT];for(let c=0;c<t.length;++c){let u=t[c];if(e.updateDerivedCommands(u),!(!u.castShadows||a.indexOf(u.pass)<0||!e.isVisible(i,u)))if(o)for(let f=0;f<s;++f)r[f].commandList.push(u);else if(s===1)r[0].commandList.push(u);else{let f=!1;for(let h=s-1;h>=0;--h){let A=r[h].cullingVolume;if(e.isVisible(A,u))r[h].commandList.push(u),f=!0;else if(f)break}}}}function YTe(e){let{shadowState:t,commandList:n}=e.frameState,{shadowsEnabled:i,shadowMaps:o}=t;if(!i)return;let{context:r}=e,{uniformState:s}=r;for(let a=0;a<o.length;++a){let c=o[a];if(c.outOfView)continue;let{passes:u}=c;for(let f=0;f<u.length;++f)u[f].commandList.length=0;lSt(e,n,c);for(let f=0;f<u.length;++f){let h=c.passes[f],{camera:A,commandList:g}=h;s.updateCamera(A),c.updatePass(r,f);for(let m=0;m<g.length;++m){let _=g[m];s.updatePass(_.pass);let y=_.derivedCommands.shadows.castCommands[a];Im(y,e,h.passState)}}}}var uSt=new d;xi.prototype.updateAndExecuteCommands=function(e,t){xSt(this,e,t),this._environmentState.useWebVR?fSt(this,e,t):this._frameState.mode!==ie.SCENE2D||this._mapMode2D===wu.ROTATE?xC(!0,this,e):CSt(this,e)};function fSt(e,t){let n=e._view,i=n.camera,r=e._environmentState.renderTranslucentDepthForPick;qTe(e),n.createPotentiallyVisibleSet(e),jTe(e),r||YTe(e);let s=t.viewport;s.x=0,s.y=0,s.width=s.width*.5;let a=Co.clone(i,e._cameraVR);a.frustum=i.frustum;let c=i.frustum.near,u=c*(e.focalLength??5),f=e.eyeSeparation??u/30,h=d.multiplyByScalar(a.right,f*.5,uSt);i.frustum.aspectRatio=s.width/s.height;let A=.5*f*c/u;d.add(a.position,h,i.position),i.frustum.xOffset=A,HZ(e,t),s.x=s.width,d.subtract(a.position,h,i.position),i.frustum.xOffset=-A,HZ(e,t),Co.clone(a,i)}var dSt=new Ae(Math.PI,D.PI_OVER_TWO),hSt=new d,mSt=new d,ASt=new N,pSt=new N,gSt=new d,_St=new d,ySt=new Ye;function CSt(e,t){let{frameState:n,camera:i}=e,{uniformState:o}=e.context,r=t.viewport,s=Ye.clone(r,ySt);t.viewport=s;let a=dSt,c=hSt;e.mapProjection.project(a,c);let f=d.clone(i.position,mSt),h=N.clone(i.transform,pSt),A=i.frustum.clone();i._setTransform(N.IDENTITY);let g=N.computeViewportTransformation(s,0,1,ASt),m=i.frustum.projectionMatrix,_=i.positionWC.y,y=d.fromElements(D.sign(_)*c.x-_,0,-i.positionWC.x,gSt),C=kt.pointToGLWindowCoordinates(m,g,y,_St);C.x=Math.floor(C.x);let E=s.x,I=s.width;if(_===0||C.x<=E||C.x>=E+I)xC(!0,e,t);else if(Math.abs(E+I*.5-C.x)<1)s.width=C.x-s.x,i.position.x*=D.sign(i.position.x),i.frustum.right=0,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),xC(!0,e,t),s.x=C.x,i.position.x=-i.position.x,i.frustum.right=-i.frustum.left,i.frustum.left=0,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),xC(!1,e,t);else if(C.x>E+I*.5){s.width=C.x-E;let b=i.frustum.right;i.frustum.right=c.x-_,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),xC(!0,e,t),s.x=C.x,s.width=E+I-C.x,i.position.x=-i.position.x,i.frustum.left=-i.frustum.right,i.frustum.right=b-i.frustum.right*2,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),xC(!1,e,t)}else{s.x=C.x,s.width=E+I-C.x;let b=i.frustum.left;i.frustum.left=-c.x-_,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),xC(!0,e,t),s.x=E,s.width=C.x-E,i.position.x=-i.position.x,i.frustum.right=-i.frustum.left,i.frustum.left=b-i.frustum.left*2,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),xC(!1,e,t)}i._setTransform(h),d.clone(f,i.position),i.frustum=A.clone(),t.viewport=r}function xC(e,t,n){let i=t._view,{renderTranslucentDepthForPick:o}=t._environmentState;e||(t.frameState.commandList.length=0),qTe(t),i.createPotentiallyVisibleSet(t),e&&(jTe(t),o||YTe(t)),HZ(t,n)}var VTe=new Os;xi.prototype.updateEnvironment=function(){let e=this._frameState,t=this._view,n=this._environmentState,i=e.passes.render,o=e.passes.offscreen,r=this.atmosphere,s=this.skyAtmosphere,a=this.globe,c=this._globeTranslucencyState;if(!i||this._mode!==ie.SCENE2D&&t.camera.frustum instanceof An||!c.environmentVisible)n.skyAtmosphereCommand=void 0,n.skyBoxCommand=void 0,n.sunDrawCommand=void 0,n.sunComputeCommand=void 0,n.moonCommand=void 0;else{if(l(s)){if(l(a))s.setDynamicLighting(Np.fromGlobeFlags(a)),n.isReadyForAtmosphere=n.isReadyForAtmosphere||!a.show||a._surface._tilesToRender.length>0;else{let C=r.dynamicLighting;s.setDynamicLighting(C),n.isReadyForAtmosphere=!0}n.skyAtmosphereCommand=s.update(e,a),l(n.skyAtmosphereCommand)&&this.updateDerivedCommands(n.skyAtmosphereCommand)}else n.skyAtmosphereCommand=void 0;n.skyBoxCommand=l(this.skyBox)?this.skyBox.update(e,this._hdr):void 0;let y=l(this.sun)?this.sun.update(e,t.passState,this._hdr):void 0;n.sunDrawCommand=l(y)?y.drawCommand:void 0,n.sunComputeCommand=l(y)?y.computeCommand:void 0,n.moonCommand=l(this.moon)?this.moon.update(e):void 0}let u=n.clearGlobeDepth=l(a)&&a.show&&(!a.depthTestAgainstTerrain||this.mode===ie.SCENE2D);(n.useDepthPlane=u&&this.mode===ie.SCENE3D&&c.useDepthPlane)&&this._depthPlane.update(e),n.renderTranslucentDepthForPick=!1,n.useWebVR=this._useWebVR&&this.mode!==ie.SCENE2D&&!o;let h=e.mode===ie.SCENE3D&&!c.sunVisibleThroughGlobe?e.occluder:void 0,A=e.cullingVolume,g=VTe.planes;for(let y=0;y<5;++y)g[y]=A.planes[y];A=VTe,n.isSkyAtmosphereVisible=l(n.skyAtmosphereCommand)&&n.isReadyForAtmosphere,n.isSunVisible=this.isVisible(A,n.sunDrawCommand,h),n.isMoonVisible=this.isVisible(A,n.moonCommand,h);let m=this.specularEnvironmentMaps,_=this._specularEnvironmentCubeMap;l(m)&&_?.url!==m?(_=_&&_.destroy(),this._specularEnvironmentCubeMap=new Ch(m)):!l(m)&&l(_)&&(_.destroy(),this._specularEnvironmentCubeMap=void 0),l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.update(e)};function ESt(e){let t=e._frameState;e.debugShowFrustumPlanes!==e._debugShowFrustumPlanes&&(e.debugShowFrustumPlanes?e._debugFrustumPlanes=new RA({camera:e.camera,updateOnChange:!1,frustumSplits:t.frustumSplits}):e._debugFrustumPlanes=e._debugFrustumPlanes&&e._debugFrustumPlanes.destroy(),e._debugShowFrustumPlanes=e.debugShowFrustumPlanes),l(e._debugFrustumPlanes)&&e._debugFrustumPlanes.update(t)}function ISt(e){let t=e._frameState,{passes:n,shadowState:i,shadowMaps:o}=t,r=o.length,s=r>0&&!n.pick&&!n.pickVoxel&&e.mode===ie.SCENE3D;if(s!==i.shadowsEnabled&&(++i.lastDirtyTime,i.shadowsEnabled=s),i.lightShadowsEnabled=!1,!!s){for(let a=0;a<r;++a)if(o[a]!==i.shadowMaps[a]){++i.lastDirtyTime;break}i.shadowMaps.length=0,i.lightShadowMaps.length=0;for(let a=0;a<r;++a){let c=o[a];c.update(t),i.shadowMaps.push(c),c.fromLightSource&&(i.lightShadowMaps.push(c),i.lightShadowsEnabled=!0),c.dirty&&(++i.lastDirtyTime,c.dirty=!1)}}}function qTe(e){let t=e._frameState;e._groundPrimitives.update(t),e._primitives.update(t),ESt(e),ISt(e),e._globe&&e._globe.render(t)}function xSt(e,t,n){let i=e._context,o=e._frameState,r=e._environmentState,s=e._view,a=o.passes,c=a.pick||a.pickVoxel;l(s.globeDepth)&&(s.globeDepth.picking=c);let u=r.useWebVR;r.originalFramebuffer=t.framebuffer,l(e.sun)&&e.sunBloom!==e._sunBloom?(e.sunBloom&&!u?e._sunPostProcess=new xk:l(e._sunPostProcess)&&(e._sunPostProcess=e._sunPostProcess.destroy()),e._sunBloom=e.sunBloom):!l(e.sun)&&l(e._sunPostProcess)&&(e._sunPostProcess=e._sunPostProcess.destroy(),e._sunBloom=!1);let f=e._clearColorCommand;G.clone(n,f.color),f.execute(i,t);let h=r.useGlobeDepthFramebuffer=l(s.globeDepth);h&&(s.globeDepth.update(i,t,s.viewport,e.msaaSamples,e._hdr,r.clearGlobeDepth),s.globeDepth.clear(i,t,n));let A=s.oit,g=r.useOIT=!c&&l(A)&&A.isSupported();g&&(A.update(i,t,s.globeDepth.colorFramebufferManager,e._hdr,e.msaaSamples),A.clear(i,t,n),r.useOIT=A.isSupported());let m=e.postProcessStages,_=r.usePostProcess=!c&&(e._hdr||m.length>0||m.ambientOcclusion.enabled||m.fxaa.enabled||m.bloom.enabled);if(r.usePostProcessSelected=!1,_&&(s.sceneFramebuffer.update(i,s.viewport,e._hdr,e.msaaSamples),s.sceneFramebuffer.clear(i,t,n),m.update(i,o.useLogDepth,e._hdr),m.clear(i),_=r.usePostProcess=m.ready,r.usePostProcessSelected=_&&m.hasSelected),r.isSunVisible&&e.sunBloom&&!u?(t.framebuffer=e._sunPostProcess.update(t),e._sunPostProcess.clear(i,t,n)):h?t.framebuffer=s.globeDepth.framebuffer:_&&(t.framebuffer=s.sceneFramebuffer.framebuffer),l(t.framebuffer)&&f.execute(i,t),r.useInvertClassification=!c&&l(t.framebuffer)&&e.invertClassification){let C;if(o.invertClassificationColor.alpha===1&&h&&(C=s.globeDepth.framebuffer),l(C)||i.depthTexture){if(e._invertClassification.previousFramebuffer=C,e._invertClassification.update(i,e.msaaSamples,s.globeDepth.colorFramebufferManager),e._invertClassification.clear(i,t),o.invertClassificationColor.alpha<1&&g){let E=e._invertClassification.unclassifiedCommand,I=E.derivedCommands;I.oit=A.createDerivedCommands(E,i,I.oit)}}else r.useInvertClassification=!1}e._globeTranslucencyState.translucent&&s.globeTranslucencyFramebuffer.updateAndClear(e._hdr,s.viewport,i,t)}xi.prototype.resolveFramebuffers=function(e){let t=this._context,n=this._environmentState,i=this._view,{globeDepth:o,translucentTileClassification:r}=i;l(o)&&o.prepareColorTextures(t);let{useOIT:s,useGlobeDepthFramebuffer:a,usePostProcess:c,originalFramebuffer:u}=n,f=a?o.colorFramebufferManager:void 0,h=i.sceneFramebuffer._colorFramebuffer,A=i.sceneFramebuffer.idFramebuffer;if(s&&(e.framebuffer=c?h.framebuffer:u,i.oit.execute(t,e)),r.hasTranslucentDepth&&r.isSupported()&&r.execute(this,e),c){i.sceneFramebuffer.prepareColorTextures(t);let g=h;a&&!s&&(g=f);let m=this.postProcessStages,_=g.getColorTexture(0),y=A.getColorTexture(0),C=(f??h).getDepthStencilTexture();m.execute(t,_,C,y),m.copy(t,u)}!s&&!c&&a&&(e.framebuffer=u,o.executeCopyColor(t,e))};function bSt(e){let t=e._frameState.afterRender;for(let n=0;n<t.length;++n)t[n]()&&e.requestRender();t.length=0}function TSt(e){if(e.mode===ie.MORPHING)return;let t=e.camera.positionCartographic;return e.getHeight(t)}function KTe(e,t,n){let i=Number.NEGATIVE_INFINITY;if(e instanceof Ql){let o=e.length;for(let r=0;r<o;++r){let s=e.get(r),a=KTe(s,t,n);l(a)&&a>i&&(i=a)}}else if(e.isCesium3DTileset&&e.show&&e.enableCollision){let o=e.getHeight(t,n);if(l(o)&&o>i)return o}return i}xi.prototype.getHeight=function(e,t){if(!l(e))return;let n=t===Ze.CLAMP_TO_TERRAIN||t===Ze.RELATIVE_TO_TERRAIN,i=t===Ze.CLAMP_TO_3D_TILE||t===Ze.RELATIVE_TO_3D_TILE;if(!l(e))return;let o=Number.NEGATIVE_INFINITY;if(!n){let s=KTe(this.primitives,e,this);l(s)&&s>o&&(o=s)}let r=this._globe;if(!i&&l(r)&&r.show){let s=r.getHeight(e);s>o&&(o=s)}if(o>Number.NEGATIVE_INFINITY)return o};var VZ=new Ae;xi.prototype.updateHeight=function(e,t,n){let i=this._ellipsoid,o=g=>{Ae.clone(e,VZ);let m;l(g)&&(m=g.height),l(m)||(m=this.getHeight(e,n)),l(m)&&(VZ.height=m,t(VZ))},r=n===Ze.CLAMP_TO_TERRAIN||n===Ze.RELATIVE_TO_TERRAIN,s=n===Ze.CLAMP_TO_3D_TILE||n===Ze.RELATIVE_TO_3D_TILE,a;!s&&l(this.globe)&&(a=this.globe._surface.updateHeight(e,o));let c={},u=g=>{if(r||g.isDestroyed()||!g.isCesium3DTileset)return;let m=g.updateHeight(e,o,i);c[g.id]=m};if(!r){let g=this.primitives.length;for(let m=0;m<g;++m){let _=this.primitives.get(m);u(_)}}let f=this.primitives.primitiveAdded.addEventListener(u),h=this.primitives.primitiveRemoved.addEventListener(g=>{g.isDestroyed()||!g.isCesium3DTileset||(l(c[g.id])&&c[g.id](),delete c[g.id])});return()=>{a=a&&a(),Object.values(c).forEach(g=>g()),c={},f(),h()}};function SSt(e){let t=e.camera,n=e._mode,i=e._screenSpaceCameraController,o=t.positionCartographic;if(!l(o))return!1;if(!i.onMap()&&o.height<0)return!0;if(n===ie.SCENE2D||n===ie.MORPHING)return!1;let r=e._globeHeight;return l(r)&&o.height<r}xi.prototype.initializeFrame=function(){if(this._shaderFrameCount++===120&&(this._shaderFrameCount=0,this._context.shaderCache.destroyReleasedShaderPrograms(),this._context.textureCache.destroyReleasedTextures()),this._tweens.update(),this._globeHeightDirty){l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),this._globeHeight=TSt(this),this._globeHeightDirty=!1;let e=this.camera.positionCartographic;this._removeUpdateHeightCallback=this.updateHeight(e,t=>{this.isDestroyed()||(this._globeHeight=t.height)})}this._cameraUnderground=SSt(this),this._globeTranslucencyState.update(this),this._screenSpaceCameraController.update(),l(this._deviceOrientationCameraController)&&this._deviceOrientationCameraController.update(),this.camera.update(this._mode),this.camera._updateCameraChanged()};function wSt(e,t){if(e.debugShowFramesPerSecond){if(!l(e._performanceDisplay)){let n=document.createElement("div");n.className="cesium-performanceDisplay-defaultContainer",e._canvas.parentNode.appendChild(n);let o=new qg({container:n});e._performanceDisplay=o,e._performanceContainer=n}e._performanceDisplay.throttled=e.requestRenderMode,e._performanceDisplay.update(t)}else l(e._performanceDisplay)&&(e._performanceDisplay=e._performanceDisplay&&e._performanceDisplay.destroy(),e._performanceContainer.parentNode.removeChild(e._performanceContainer))}function BSt(e){e._jobScheduler.resetBudgets();let t=e._frameState;e.primitives.prePassesUpdate(t),l(e.globe)&&e.globe.update(t),e._picking.update(),t.creditDisplay.update()}function DSt(e){e.primitives.postPassesUpdate(e._frameState),Bc.update()}var vSt=new G;function PSt(e){let t=e._frameState,n=e.context,{uniformState:i}=n,o=e._defaultView;e._view=o,e.updateFrameState(),t.passes.render=!0,t.passes.postProcess=e.postProcessStages.hasSelected,t.tilesetPassState=zTt;let r=e.backgroundColor??G.BLACK;e._hdr&&(r=G.clone(r,vSt),r.red=Math.pow(r.red,e.gamma),r.green=Math.pow(r.green,e.gamma),r.blue=Math.pow(r.blue,e.gamma)),t.backgroundColor=r,t.atmosphere=e.atmosphere,e.fog.update(t),i.update(t);let s=e.shadowMap;l(s)&&s.enabled&&(!l(e.light)||e.light instanceof Hg?d.negate(i.sunDirectionWC,e._shadowMapCamera.direction):d.clone(e.light.direction,e._shadowMapCamera.direction),t.shadowMaps.push(s)),e._computeCommandList.length=0,e._overlayCommandList.length=0;let a=o.viewport;a.x=0,a.y=0,a.width=n.drawingBufferWidth,a.height=n.drawingBufferHeight;let c=o.passState;c.framebuffer=void 0,c.blendingEnabled=void 0,c.scissorTest=void 0,c.viewport=Ye.clone(a,c.viewport),n.beginFrame(),l(e.globe)&&e.globe.beginFrame(t),e.updateEnvironment(),e.updateAndExecuteCommands(c,r),e.resolveFramebuffers(c),c.framebuffer=void 0,cSt(e,c),l(e.globe)&&(e.globe.endFrame(t),e.globe.tilesLoaded||(e._renderRequested=!0)),n.endFrame()}function ux(e,t){try{t(e)}catch(n){if(e._renderError.raiseEvent(e,n),e.rethrowRenderErrors)throw n}}function RSt(e){return e._picking.updateMostDetailedRayPicks(e)}xi.prototype.render=function(e){this._preUpdate.raiseEvent(this,e);let t=this._frameState;t.newFrame=!1,l(e)||(e=K.now());let n=this._view.checkForCameraUpdates(this);n&&(this._globeHeightDirty=!0);let i=!this.requestRenderMode||this._renderRequested||n||this._logDepthBufferDirty||this._hdrDirty||this.mode===ie.MORPHING;if(!i&&l(this.maximumRenderTimeChange)&&l(this._lastRenderTime)){let o=Math.abs(K.secondsDifference(this._lastRenderTime,e));i=i||o>this.maximumRenderTimeChange}if(i){this._lastRenderTime=K.clone(e,this._lastRenderTime),this._renderRequested=!1,this._logDepthBufferDirty=!1,this._hdrDirty=!1;let o=D.incrementWrap(t.frameNumber,15e6,1);HTe(this,o,e),t.newFrame=!0}ux(this,BSt),this.primitives.show&&(ux(this,RSt),ux(this,MSt),ux(this,NSt),i||ux(this,LSt)),this._postUpdate.raiseEvent(this,e),i&&(this._preRender.raiseEvent(this,e),t.creditDisplay.beginFrame(),ux(this,PSt)),wSt(this,i),ux(this,DSt),bSt(this),i&&(this._postRender.raiseEvent(this,e),t.creditDisplay.endFrame())};xi.prototype.forceRender=function(e){this._renderRequested=!0,this.render(e)};xi.prototype.requestRender=function(){this._renderRequested=!0};xi.prototype.clampLineWidth=function(e){return Math.max(Yt.minimumAliasedLineWidth,Math.min(e,Yt.maximumAliasedLineWidth))};xi.prototype.pick=function(e,t,n){return this._picking.pick(this,e,t,n)};xi.prototype.pickVoxel=function(e,t,n){let i=this.pick(e,t,n);if(!l(i))return;let o=i.primitive;if(!(o instanceof IC))return;let r=this._picking.pickVoxelCoordinate(this,e,t,n),s=255*r[0]+r[1],a=o._traversal.findKeyframeNode(s);if(!l(a))return;let c=255*r[2]+r[3];return Sk.fromKeyframeNode(o,s,c,a)};xi.prototype.pickMetadata=function(e,t,n,i){let o=this.pick(e);if(!l(o))return;let r=o.detail?.model?.structuralMetadata;if(!l(r))return;let s=r.schema,a=Zk(s,t,n,i);if(!l(a))return;let c=e3(r,n,i);if(!l(c))return;let u=new $k(t,n,i,a,c);return this._picking.pickMetadata(this,e,u)};xi.prototype.pickMetadataSchema=function(e){let t=this.pick(e);return l(t)?t.detail?.model?.structuralMetadata?.schema:void 0};xi.prototype.pickPositionWorldCoordinates=function(e,t){return this._picking.pickPositionWorldCoordinates(this,e,t)};xi.prototype.pickPosition=function(e,t){return this._picking.pickPosition(this,e,t)};xi.prototype.drillPick=function(e,t,n,i){return this._picking.drillPick(this,e,t,n,i)};function MSt(e){let t=e._frameState;UZ.camera=t.camera,UZ.cullingVolume=t.cullingVolume,e.primitives.updateForPass(t,UZ)}function NSt(e){let t=e._frameState;if(!t.camera.canPreloadFlight())return;GZ.camera=e.preloadFlightCamera,GZ.cullingVolume=e.preloadFlightCullingVolume,e.primitives.updateForPass(t,GZ)}function LSt(e){e.primitives.updateForPass(e._frameState,VTt)}xi.prototype.pickFromRay=function(e,t,n){return this._picking.pickFromRay(this,e,t,n)};xi.prototype.drillPickFromRay=function(e,t,n,i){return this._picking.drillPickFromRay(this,e,t,n,i)};xi.prototype.pickFromRayMostDetailed=function(e,t,n){return this._picking.pickFromRayMostDetailed(this,e,t,n)};xi.prototype.drillPickFromRayMostDetailed=function(e,t,n,i){return this._picking.drillPickFromRayMostDetailed(this,e,t,n,i)};xi.prototype.sampleHeight=function(e,t,n){return this._picking.sampleHeight(this,e,t,n)};xi.prototype.clampToHeight=function(e,t,n,i){return this._picking.clampToHeight(this,e,t,n,i)};xi.prototype.sampleHeightMostDetailed=function(e,t,n){return this._picking.sampleHeightMostDetailed(this,e,t,n)};xi.prototype.clampToHeightMostDetailed=function(e,t,n){return this._picking.clampToHeightMostDetailed(this,e,t,n)};xi.prototype.cartesianToCanvasCoordinates=function(e,t){return eo.worldToWindowCoordinates(this,e,t)};xi.prototype.completeMorph=function(){this._transitioner.completeMorph()};xi.prototype.morphTo2D=function(e){e=e??2,this._transitioner.morphTo2D(e,this._ellipsoid)};xi.prototype.morphToColumbusView=function(e){e=e??2,this._transitioner.morphToColumbusView(e,this._ellipsoid)};xi.prototype.morphTo3D=function(e){e=e??2,this._transitioner.morphTo3D(e,this._ellipsoid)};function OSt(e,t){if(e._removeTerrainProviderReadyListener=e._removeTerrainProviderReadyListener&&e._removeTerrainProviderReadyListener(),t.ready){l(e.globe)&&(e.globe.terrainProvider=t.provider);return}e.globe.terrainProvider=void 0,e._removeTerrainProviderReadyListener=t.readyEvent.addEventListener(n=>{l(e)&&l(e.globe)&&(e.globe.terrainProvider=n),e._removeTerrainProviderReadyListener()})}xi.prototype.setTerrain=function(e){return OSt(this,e),e};xi.prototype.isDestroyed=function(){return!1};xi.prototype.destroy=function(){this._tweens.removeAll(),this._computeEngine=this._computeEngine&&this._computeEngine.destroy(),this._screenSpaceCameraController=this._screenSpaceCameraController&&this._screenSpaceCameraController.destroy(),this._deviceOrientationCameraController=this._deviceOrientationCameraController&&!this._deviceOrientationCameraController.isDestroyed()&&this._deviceOrientationCameraController.destroy(),this._primitives=this._primitives&&this._primitives.destroy(),this._groundPrimitives=this._groundPrimitives&&this._groundPrimitives.destroy(),this._globe=this._globe&&this._globe.destroy(),this._removeTerrainProviderReadyListener=this._removeTerrainProviderReadyListener&&this._removeTerrainProviderReadyListener(),this.skyBox=this.skyBox&&this.skyBox.destroy(),this.skyAtmosphere=this.skyAtmosphere&&this.skyAtmosphere.destroy(),this._debugSphere=this._debugSphere&&this._debugSphere.destroy(),this.sun=this.sun&&this.sun.destroy(),this._sunPostProcess=this._sunPostProcess&&this._sunPostProcess.destroy(),this._depthPlane=this._depthPlane&&this._depthPlane.destroy(),this._transitioner=this._transitioner&&this._transitioner.destroy(),this._debugFrustumPlanes=this._debugFrustumPlanes&&this._debugFrustumPlanes.destroy(),this._brdfLutGenerator=this._brdfLutGenerator&&this._brdfLutGenerator.destroy(),this._picking=this._picking&&this._picking.destroy(),this._defaultView=this._defaultView&&this._defaultView.destroy(),this._view=void 0,this._removeCreditContainer&&this._canvas.parentNode.removeChild(this._creditContainer),this.postProcessStages=this.postProcessStages&&this.postProcessStages.destroy(),this._context=this._context&&this._context.destroy(),this._frameState.creditDisplay=this._frameState.creditDisplay&&this._frameState.creditDisplay.destroy(),l(this._performanceDisplay)&&(this._performanceDisplay=this._performanceDisplay&&this._performanceDisplay.destroy(),this._performanceContainer.parentNode.removeChild(this._performanceContainer)),this._removeRequestListenerCallback(),this._removeTaskProcessorListenerCallback();for(let e=0;e<this._removeGlobeCallbacks.length;++e)this._removeGlobeCallbacks[e]();return this._removeGlobeCallbacks.length=0,l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),ue(this)};var t3=xi;function Mw(e){e=e??te.WGS84,this.show=!0,this.perFragmentAtmosphere=!1,this._ellipsoid=e;let t=1.025,n=d.multiplyByScalar(e.radii,t,new d);this._scaleMatrix=N.fromScale(n),this._modelMatrix=new N,this._command=new nt({owner:this,modelMatrix:this._modelMatrix}),this._spSkyFromSpace=void 0,this._spSkyFromAtmosphere=void 0,this._flags=void 0,this.atmosphereLightIntensity=50,this.atmosphereRayleighCoefficient=new d(55e-7,13e-6,284e-7),this.atmosphereMieCoefficient=new d(21e-6,21e-6,21e-6),this.atmosphereRayleighScaleHeight=1e4,this.atmosphereMieScaleHeight=3200,this.atmosphereMieAnisotropy=.9,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this._hueSaturationBrightness=new d;let i=new d;i.x=e.maximumRadius*t,i.y=e.maximumRadius,i.z=0,this._radiiAndDynamicAtmosphereColor=i;let o=this;this._command.uniformMap={u_radiiAndDynamicAtmosphereColor:function(){return o._radiiAndDynamicAtmosphereColor},u_hsbShift:function(){return o._hueSaturationBrightness.x=o.hueShift,o._hueSaturationBrightness.y=o.saturationShift,o._hueSaturationBrightness.z=o.brightnessShift,o._hueSaturationBrightness},u_atmosphereLightIntensity:function(){return o.atmosphereLightIntensity},u_atmosphereRayleighCoefficient:function(){return o.atmosphereRayleighCoefficient},u_atmosphereMieCoefficient:function(){return o.atmosphereMieCoefficient},u_atmosphereRayleighScaleHeight:function(){return o.atmosphereRayleighScaleHeight},u_atmosphereMieScaleHeight:function(){return o.atmosphereMieScaleHeight},u_atmosphereMieAnisotropy:function(){return o.atmosphereMieAnisotropy}}}Object.defineProperties(Mw.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});Mw.prototype.setDynamicLighting=function(e){this._radiiAndDynamicAtmosphereColor.z=e};var WZ=new N;Mw.prototype.update=function(e,t){if(!this.show)return;let n=e.mode;if(n!==ie.SCENE3D&&n!==ie.MORPHING||!e.passes.render)return;let i=N.fromRotationTranslation(e.context.uniformState.inverseViewRotation,d.ZERO,WZ),o=N.multiplyTransformation(i,fo.Y_UP_TO_Z_UP,WZ),r=N.multiply(this._scaleMatrix,o,WZ);N.clone(r,this._modelMatrix);let s=e.context,a=FSt(this),c=e.globeTranslucencyState.translucent,u=this.perFragmentAtmosphere||c||!l(t)||!t.show,f=this._command;if(!l(f.vertexArray)){let A=Ia.createGeometry(new Ia({radii:new d(1,1,1),slicePartitions:256,stackPartitions:256,vertexFormat:Pe.POSITION_ONLY}));f.vertexArray=li.fromGeometry({context:s,geometry:A,attributeLocations:Vn.createAttributeLocations(A),bufferUsage:Qe.STATIC_DRAW}),f.renderState=Ue.fromCache({cull:{enabled:!0,face:Mi.FRONT},blending:pn.ALPHA_BLEND,depthMask:!1})}let h=a|u<<2|c<<3;if(h!==this._flags){this._flags=h;let A=[];a&&A.push("COLOR_CORRECT"),u&&A.push("PER_FRAGMENT_ATMOSPHERE"),c&&A.push("GLOBE_TRANSLUCENT");let g=new He({defines:A,sources:[Bh,dw,U2]}),m=new He({defines:A,sources:[Bh,dw,k2]});this._spSkyAtmosphere=an.fromCache({context:s,vertexShaderSource:g,fragmentShaderSource:m}),f.shaderProgram=this._spSkyAtmosphere}return f};function FSt(e){return!(D.equalsEpsilon(e.hueShift,0,D.EPSILON7)&&D.equalsEpsilon(e.saturationShift,0,D.EPSILON7)&&D.equalsEpsilon(e.brightnessShift,0,D.EPSILON7))}Mw.prototype.isDestroyed=function(){return!1};Mw.prototype.destroy=function(){let e=this._command;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),this._spSkyAtmosphere=this._spSkyAtmosphere&&this._spSkyAtmosphere.destroy(),ue(this)};var n3=Mw;function Lw(e){this.sources=e.sources,this._sources=void 0,this.show=e.show??!0,this._command=new nt({modelMatrix:N.clone(N.IDENTITY),owner:this}),this._cubeMap=void 0,this._attributeLocations=void 0,this._useHdr=void 0,this._hasError=!1,this._error=void 0}Lw.prototype.update=function(e,t){let n=this,{mode:i,passes:o,context:r}=e;if(!this.show||i!==ie.SCENE3D&&i!==ie.MORPHING||!o.render)return;if(this._hasError){let a=this._error;throw this._hasError=!1,this._error=void 0,a}if(this._sources!==this.sources){this._sources=this.sources;let a=this.sources;typeof a.positiveX=="string"?S2(r,this._sources).then(function(c){n._cubeMap=n._cubeMap&&n._cubeMap.destroy(),n._cubeMap=c}).catch(c=>{this._hasError=!0,this._error=c}):(this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),this._cubeMap=new kr({context:r,source:a}))}let s=this._command;if(!l(s.vertexArray)){s.uniformMap={u_cubeMap:function(){return n._cubeMap}};let a=cc.createGeometry(cc.fromDimensions({dimensions:new d(2,2,2),vertexFormat:Pe.POSITION_ONLY})),c=this._attributeLocations=Vn.createAttributeLocations(a);s.vertexArray=li.fromGeometry({context:r,geometry:a,attributeLocations:c,bufferUsage:Qe.STATIC_DRAW}),s.renderState=Ue.fromCache({blending:pn.ALPHA_BLEND})}if(!l(s.shaderProgram)||this._useHdr!==t){let a=new He({defines:[t?"HDR":""],sources:[G2]});s.shaderProgram=an.fromCache({context:r,vertexShaderSource:z2,fragmentShaderSource:a,attributeLocations:this._attributeLocations}),this._useHdr=t}if(l(this._cubeMap))return s};Lw.prototype.isDestroyed=function(){return!1};Lw.prototype.destroy=function(){let e=this._command;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy(),this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),ue(this)};function Nw(e){return fn(`Assets/Textures/SkyBox/tycho2t3_80_${e}.jpg`)}Lw.createEarthSkyBox=function(){return new Lw({sources:{positiveX:Nw("px"),negativeX:Nw("mx"),positiveY:Nw("py"),negativeY:Nw("my"),positiveZ:Nw("pz"),negativeZ:Nw("mz")}})};var i3=Lw;function r3(){this.show=!0,this._drawCommand=new nt({primitiveType:Me.TRIANGLES,boundingVolume:new le,owner:this}),this._commands={drawCommand:this._drawCommand,computeCommand:void 0},this._boundingVolume=new le,this._boundingVolume2D=new le,this._texture=void 0,this._drawingBufferWidth=void 0,this._drawingBufferHeight=void 0,this._radiusTS=void 0,this._size=void 0,this.glowFactor=1,this._glowFactorDirty=!1,this._useHdr=void 0;let e=this;this._uniformMap={u_texture:function(){return e._texture},u_size:function(){return e._size}}}Object.defineProperties(r3.prototype,{glowFactor:{get:function(){return this._glowFactor},set:function(e){e=Math.max(e,0),this._glowFactor=e,this._glowFactorDirty=!0}}});var QSt=new U,kSt=new U,USt=new se,o3=new se;r3.prototype.update=function(e,t,n){if(!this.show)return;let i=e.mode;if(i===ie.SCENE2D||i===ie.MORPHING||!e.passes.render)return;let o=e.context,r=t.viewport.width,s=t.viewport.height;if(!l(this._texture)||r!==this._drawingBufferWidth||s!==this._drawingBufferHeight||this._glowFactorDirty||n!==this._useHdr){this._texture=this._texture&&this._texture.destroy(),this._drawingBufferWidth=r,this._drawingBufferHeight=s,this._glowFactorDirty=!1,this._useHdr=n;let b=Math.max(r,s);b=Math.pow(2,Math.ceil(Math.log(b)/Math.log(2))-2),b=Math.max(1,b);let S=n?o.halfFloatingPointTexture?Ve.HALF_FLOAT:Ve.FLOAT:Ve.UNSIGNED_BYTE;this._texture=new Mt({context:o,width:b,height:b,pixelFormat:$e.RGBA,pixelDatatype:S}),this._glowLengthTS=this._glowFactor*5,this._radiusTS=1/(1+2*this._glowLengthTS)*.5;let B=this,v={u_radiusTS:function(){return B._radiusTS}};this._commands.computeCommand=new Tl({fragmentShaderSource:H2,outputTexture:this._texture,uniformMap:v,persists:!1,owner:this,postExecute:function(){B._commands.computeCommand=void 0}})}let a=this._drawCommand;if(!l(a.vertexArray)){let b={direction:0},S=new Uint8Array(8);S[0]=0,S[1]=0,S[2]=255,S[3]=0,S[4]=255,S[5]=255,S[6]=0,S[7]=255;let B=Ct.createVertexBuffer({context:o,typedArray:S,usage:Qe.STATIC_DRAW}),v=[{index:b.direction,vertexBuffer:B,componentsPerAttribute:2,normalize:!0,componentDatatype:q.UNSIGNED_BYTE}],P=Ct.createIndexBuffer({context:o,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Qe.STATIC_DRAW,indexDatatype:Oe.UNSIGNED_SHORT});a.vertexArray=new li({context:o,attributes:v,indexBuffer:P}),a.shaderProgram=an.fromCache({context:o,vertexShaderSource:W2,fragmentShaderSource:V2,attributeLocations:b}),a.renderState=Ue.fromCache({blending:pn.ALPHA_BLEND}),a.uniformMap=this._uniformMap}let c=o.uniformState.sunPositionWC,u=o.uniformState.sunPositionColumbusView,f=this._boundingVolume,h=this._boundingVolume2D;d.clone(c,f.center),h.center.x=u.z,h.center.y=u.x,h.center.z=u.y,f.radius=D.SOLAR_RADIUS+D.SOLAR_RADIUS*this._glowLengthTS,h.radius=f.radius,i===ie.SCENE3D?le.clone(f,a.boundingVolume):i===ie.COLUMBUS_VIEW&&le.clone(h,a.boundingVolume);let A=eo.computeActualEllipsoidPosition(e,c,o3),g=d.magnitude(d.subtract(A,e.camera.position,o3)),m=o.uniformState.projection,_=USt;_.x=0,_.y=0,_.z=-g,_.w=1;let y=N.multiplyByVector(m,_,o3),C=eo.clipToGLWindowCoordinates(t.viewport,y,QSt);_.x=D.SOLAR_RADIUS;let E=N.multiplyByVector(m,_,o3),I=eo.clipToGLWindowCoordinates(t.viewport,E,kSt);return this._size=U.magnitude(U.subtract(I,C,o3)),this._size=2*this._size*(1+2*this._glowLengthTS),this._size=Math.ceil(this._size),this._commands};r3.prototype.isDestroyed=function(){return!1};r3.prototype.destroy=function(){let e=this._drawCommand;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy(),this._texture=this._texture&&this._texture.destroy(),ue(this)};var s3=r3;var ZTe=xr(VU(),1);function GSt(e,t,n){return` float clipDistance = clip(gl_FragCoord, ${e}, ${t}); + vec4 clippingPlanesEdgeColor = vec4(1.0); + clippingPlanesEdgeColor.rgb = ${n}.rgb; + float clippingPlanesEdgeWidth = ${n}.a; + if (clipDistance > 0.0 && clipDistance < clippingPlanesEdgeWidth) + { + out_FragColor = clippingPlanesEdgeColor; + } +`}var a3=GSt;var zSt={modifyFragmentShader:function(t){return t=He.replaceMain(t,"czm_splitter_main"),t+=`uniform float czm_splitDirection; +void main() +{ +#ifndef SHADOW_MAP + if (czm_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (czm_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; +#endif + czm_splitter_main(); +} +`,t},addUniforms:function(t,n){n.czm_splitDirection=function(){return t.splitDirection}}},Ow=zSt;var fx={NEEDS_DECODE:0,DECODING:1,READY:2,FAILED:3};function c3(e){this._parsedContent=void 0,this._drawCommand=void 0,this._isTranslucent=!1,this._styleTranslucent=!1,this._constantColor=G.clone(G.DARKGRAY),this._highlightColor=G.clone(G.WHITE),this._pointSize=1,this._rtcCenter=void 0,this._quantizedVolumeScale=void 0,this._quantizedVolumeOffset=void 0,this._styleableShaderAttributes=void 0,this._isQuantized=!1,this._isOctEncoded16P=!1,this._isRGB565=!1,this._hasColors=!1,this._hasNormals=!1,this._hasBatchIds=!1,this._decodingState=fx.READY,this._dequantizeInShader=!0,this._isQuantizedDraco=!1,this._isOctEncodedDraco=!1,this._quantizedRange=0,this._octEncodedRange=0,this.backFaceCulling=!1,this._backFaceCulling=!1,this.normalShading=!0,this._normalShading=!0,this._opaqueRenderState=void 0,this._translucentRenderState=void 0,this._mode=void 0,this._ready=!1,this._pointsLength=0,this._geometryByteLength=0,this._vertexShaderLoaded=e.vertexShaderLoaded,this._fragmentShaderLoaded=e.fragmentShaderLoaded,this._uniformMapLoaded=e.uniformMapLoaded,this._batchTableLoaded=e.batchTableLoaded,this._pickIdLoaded=e.pickIdLoaded,this._opaquePass=e.opaquePass??Be.OPAQUE,this._cull=e.cull??!0,this.style=void 0,this._style=void 0,this.styleDirty=!1,this.modelMatrix=N.clone(N.IDENTITY),this._modelMatrix=N.clone(N.IDENTITY),this.time=0,this.shadows=Bn.ENABLED,this._boundingSphere=void 0,this.clippingPlanes=void 0,this.isClipped=!1,this.clippingPlanesDirty=!1,this.clippingPlanesOriginMatrix=void 0,this.attenuation=!1,this._attenuation=!1,this.geometricError=0,this.geometricErrorScale=1,this.maximumAttenuation=this._pointSize,this.splitDirection=e.splitDirection??br.NONE,this._splittingEnabled=!1,this._error=void 0,VSt(this,e)}Object.defineProperties(c3.prototype,{pointsLength:{get:function(){return this._pointsLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}},color:{get:function(){return G.clone(this._highlightColor)},set:function(e){this._highlightColor=G.clone(e,this._highlightColor)}},boundingSphere:{get:function(){if(l(this._drawCommand))return this._drawCommand.boundingVolume},set:function(e){this._boundingSphere=le.clone(e,this._boundingSphere)}}});function VSt(e,t){let n=A0.parse(t.arrayBuffer,t.byteOffset);if(e._parsedContent=n,e._rtcCenter=n.rtcCenter,e._hasNormals=n.hasNormals,e._hasColors=n.hasColors,e._hasBatchIds=n.hasBatchIds,e._isTranslucent=n.isTranslucent,!n.hasBatchIds&&l(n.batchTableBinary)&&(n.styleableProperties=Ip.getBinaryProperties(n.pointsLength,n.batchTableJson,n.batchTableBinary)),l(n.draco)){let a=n.draco;e._decodingState=fx.NEEDS_DECODE,a.dequantizeInShader=e._dequantizeInShader}let i=n.positions;l(i)&&(e._isQuantized=i.isQuantized,e._quantizedVolumeScale=i.quantizedVolumeScale,e._quantizedVolumeOffset=i.quantizedVolumeOffset,e._quantizedRange=i.quantizedRange);let o=n.normals;l(o)&&(e._isOctEncoded16P=o.octEncoded);let r=n.colors;l(r)&&(l(r.constantColor)&&(e._constantColor=G.clone(r.constantColor,e._constantColor),e._hasColors=!1),e._isRGB565=r.isRGB565);let s=n.batchIds;l(n.batchIds)&&(s.name="BATCH_ID",s.semantic="BATCH_ID",s.setIndex=void 0),n.hasBatchIds&&e._batchTableLoaded(n.batchLength,n.batchTableJson,n.batchTableBinary),e._pointsLength=n.pointsLength}var HSt=new d,WSt=new d,jSt=new d,XTe,s5;function YSt(e){if(!l(s5)){XTe=new ZTe.default(0),s5=new Array(e);for(let t=0;t<e;++t)s5[t]=XTe.random()}return s5}function qSt(e){let n=e.length/3,i=Math.min(n,20),o=YSt(20),r=Number.MAX_VALUE,s=-Number.MAX_VALUE,a=d.fromElements(r,r,r,HSt),c=d.fromElements(s,s,s,WSt);for(let f=0;f<i;++f){let h=Math.floor(o[f]*n),A=d.unpack(e,h*3,jSt);d.minimumByComponent(a,A,a),d.maximumByComponent(c,A,c)}let u=le.fromCornerPoints(a,c);return u.radius+=D.EPSILON2,u}function JTe(e,t){let n=q.fromTypedArray(e);return n===q.INT||n===q.UNSIGNED_INT||n===q.DOUBLE?(yt("Cast pnts property to floats",`Point cloud property "${t}" will be cast to a float array because INT, UNSIGNED_INT, and DOUBLE are not valid WebGL vertex attribute types. Some precision may be lost.`),new Float32Array(e)):e}var KSt=new se,XSt=new se,JSt=new G,$Te=0,a5=1,XZ=2,eSe=3,ZSt=4,jZ=new N,$St=new N;function ewt(e,t){let n=t.context,i=e._parsedContent,o=e._pointsLength,r=i.positions,s=i.colors,a=i.normals,c=i.batchIds,u=i.styleableProperties,f=l(u),h=e._isQuantized,A=e._isQuantizedDraco,g=e._isOctEncoded16P,m=e._isOctEncodedDraco,_=e._quantizedRange,y=e._octEncodedRange,C=e._isRGB565,E=e._isTranslucent,I=e._hasColors,b=e._hasNormals,S=e._hasBatchIds,B,v,P=[],M={};if(e._styleableShaderAttributes=M,f){let Q=ZSt;for(let z in u)if(u.hasOwnProperty(z)){let F=u[z],H=JTe(F.typedArray,z);B=F.componentCount,v=q.fromTypedArray(H);let W=Ct.createVertexBuffer({context:n,typedArray:H,usage:Qe.STATIC_DRAW});e._geometryByteLength+=W.sizeInBytes;let Z={index:Q,vertexBuffer:W,componentsPerAttribute:B,componentDatatype:v,normalize:!1,offsetInBytes:0,strideInBytes:0};P.push(Z),M[z]={location:Q,componentCount:B},++Q}}let L=Ct.createVertexBuffer({context:n,typedArray:r.typedArray,usage:Qe.STATIC_DRAW});e._geometryByteLength+=L.sizeInBytes;let p;I&&(p=Ct.createVertexBuffer({context:n,typedArray:s.typedArray,usage:Qe.STATIC_DRAW}),e._geometryByteLength+=p.sizeInBytes);let x;b&&(x=Ct.createVertexBuffer({context:n,typedArray:a.typedArray,usage:Qe.STATIC_DRAW}),e._geometryByteLength+=x.sizeInBytes);let T;S&&(c.typedArray=JTe(c.typedArray,"batchIds"),T=Ct.createVertexBuffer({context:n,typedArray:c.typedArray,usage:Qe.STATIC_DRAW}),e._geometryByteLength+=T.sizeInBytes);let w=[];if(h?v=q.UNSIGNED_SHORT:A?v=_<=255?q.UNSIGNED_BYTE:q.UNSIGNED_SHORT:v=q.FLOAT,w.push({index:$Te,vertexBuffer:L,componentsPerAttribute:3,componentDatatype:v,normalize:!1,offsetInBytes:0,strideInBytes:0}),e._cull&&(h||A?e._boundingSphere=le.fromCornerPoints(d.ZERO,e._quantizedVolumeScale):e._boundingSphere=qSt(r.typedArray)),I)if(C)w.push({index:a5,vertexBuffer:p,componentsPerAttribute:1,componentDatatype:q.UNSIGNED_SHORT,normalize:!1,offsetInBytes:0,strideInBytes:0});else{let Q=E?4:3;w.push({index:a5,vertexBuffer:p,componentsPerAttribute:Q,componentDatatype:q.UNSIGNED_BYTE,normalize:!0,offsetInBytes:0,strideInBytes:0})}b&&(g?(B=2,v=q.UNSIGNED_BYTE):m?(B=2,v=y<=255?q.UNSIGNED_BYTE:q.UNSIGNED_SHORT):(B=3,v=q.FLOAT),w.push({index:XZ,vertexBuffer:x,componentsPerAttribute:B,componentDatatype:v,normalize:!1,offsetInBytes:0,strideInBytes:0})),S&&w.push({index:eSe,vertexBuffer:T,componentsPerAttribute:1,componentDatatype:q.fromTypedArray(c.typedArray),normalize:!1,offsetInBytes:0,strideInBytes:0}),f&&(w=w.concat(P));let R=new li({context:n,attributes:w}),O={depthTest:{enabled:!0}},k={depthTest:{enabled:!0},depthMask:!1,blending:pn.ALPHA_BLEND};e._opaquePass===Be.CESIUM_3D_TILE&&(O.stencilTest=Kt.setCesium3DTileBit(),O.stencilMask=Kt.CESIUM_3D_TILE_MASK,k.stencilTest=Kt.setCesium3DTileBit(),k.stencilMask=Kt.CESIUM_3D_TILE_MASK),e._opaqueRenderState=Ue.fromCache(O),e._translucentRenderState=Ue.fromCache(k),e._drawCommand=new nt({boundingVolume:new le,cull:e._cull,modelMatrix:new N,primitiveType:Me.POINTS,vertexArray:R,count:o,shaderProgram:void 0,uniformMap:void 0,renderState:E?e._translucentRenderState:e._opaqueRenderState,pass:E?Be.TRANSLUCENT:e._opaquePass,owner:e,castShadows:!1,receiveShadows:!1,pickId:e._pickIdLoaded()})}function twt(e,t){let n=t.context,i=e._isQuantized,o=e._isQuantizedDraco,r=e._isOctEncodedDraco,s={u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier:function(){let a=KSt;if(a.x=e._attenuation?e.maximumAttenuation:e._pointSize,a.x*=t.pixelRatio,a.y=e.time,e._attenuation){let c=t.camera.frustum,u;t.mode===ie.SCENE2D||c instanceof An?u=Number.POSITIVE_INFINITY:u=n.drawingBufferHeight/t.camera.frustum.sseDenominator,a.z=e.geometricError*e.geometricErrorScale,a.w=u}return a},u_highlightColor:function(){return e._highlightColor},u_constantColor:function(){return e._constantColor},u_clippingPlanes:function(){let a=e.clippingPlanes;return e.isClipped?a.texture:n.defaultTexture},u_clippingPlanesEdgeStyle:function(){let a=e.clippingPlanes;if(!l(a))return G.TRANSPARENT;let c=G.clone(a.edgeColor,JSt);return c.alpha=a.edgeWidth,c},u_clippingPlanesMatrix:function(){let a=e.clippingPlanes;if(!l(a))return N.IDENTITY;let c=e.clippingPlanesOriginMatrix??e._modelMatrix;N.multiply(n.uniformState.view3D,c,jZ);let u=N.multiply(jZ,a.modelMatrix,jZ);return N.inverseTranspose(u,$St)}};Ow.addUniforms(e,s),(i||o||r)&&(s=Tt(s,{u_quantizedVolumeScaleAndOctEncodedRange:function(){let a=XSt;if(l(e._quantizedVolumeScale)){let c=d.clone(e._quantizedVolumeScale,a);d.divideByScalar(c,e._quantizedRange,a)}return a.w=e._octEncodedRange,a}})),l(e._uniformMapLoaded)&&(s=e._uniformMapLoaded(s)),e._drawCommand.uniformMap=s}function YZ(e,t){let n=/czm_3dtiles_property_(\d+)/g,i=n.exec(e);for(;i!==null;){let o=parseInt(i[1]);t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function qZ(e,t){e=e.slice(e.indexOf(` +`));let n=/czm_3dtiles_builtin_property_(\w+)/g,i=n.exec(e);for(;i!==null;){let o=i[1];t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function KZ(e,t){let n=e.numberOfAttributes;for(let i=0;i<n;++i){let o=e.getAttribute(i);if(o.index===t)return o}}var nwt={POSITION:"czm_3dtiles_builtin_property_POSITION",POSITION_ABSOLUTE:"czm_3dtiles_builtin_property_POSITION_ABSOLUTE",COLOR:"czm_3dtiles_builtin_property_COLOR",NORMAL:"czm_3dtiles_builtin_property_NORMAL"};function iwt(e,t,n){let i,o,r,s=t.context,a=l(n),c=e._isQuantized,u=e._isQuantizedDraco,f=e._isOctEncoded16P,h=e._isOctEncodedDraco,A=e._isRGB565,g=e._isTranslucent,m=e._hasColors,_=e._hasNormals,y=e._hasBatchIds,C=e._backFaceCulling,E=e._normalShading,I=e._drawCommand.vertexArray,b=e.clippingPlanes,S=e._attenuation,B,v,P,M=g,L=ze(nwt),p={},x=e._styleableShaderAttributes;for(o in x)x.hasOwnProperty(o)&&(r=x[o],L[o]=`czm_3dtiles_property_${r.location}`,p[r.location]=r);if(a){let fe={translucent:!1},ye="(vec3 czm_3dtiles_builtin_property_POSITION, vec3 czm_3dtiles_builtin_property_POSITION_ABSOLUTE, vec4 czm_3dtiles_builtin_property_COLOR, vec3 czm_3dtiles_builtin_property_NORMAL)";B=n.getColorShaderFunction(`getColorFromStyle${ye}`,L,fe),v=n.getShowShaderFunction(`getShowFromStyle${ye}`,L,fe),P=n.getPointSizeShaderFunction(`getPointSizeFromStyle${ye}`,L,fe),l(B)&&fe.translucent&&(M=!0)}e._styleTranslucent=M;let T=l(B),w=l(v),R=l(P),O=e.isClipped,k=[],Q=[];T&&(YZ(B,k),qZ(B,Q)),w&&(YZ(v,k),qZ(v,Q)),R&&(YZ(P,k),qZ(P,Q));let z=Q.indexOf("COLOR")>=0,F=Q.indexOf("NORMAL")>=0;if(F&&!_)throw new ce("Style references the NORMAL semantic but the point cloud does not have normals");for(o in x)if(x.hasOwnProperty(o)){r=x[o];let fe=k.indexOf(r.location)>=0,ye=KZ(I,r.location);ye.enabled=fe}let H=m&&(!T||z);if(m){let fe=KZ(I,a5);fe.enabled=H}let W=_&&(E||C||F);if(_){let fe=KZ(I,XZ);fe.enabled=W}let Z={a_position:$Te};H&&(Z.a_color=a5),W&&(Z.a_normal=XZ),y&&(Z.a_batchId=eSe);let Y="",$=k.length;for(i=0;i<$;++i){let fe=k[i];r=p[fe];let ye=r.componentCount,xe=`czm_3dtiles_property_${fe}`,ve;ye===1?ve="float":ve=`vec${ye}`,Y+=`in ${ve} ${xe}; +`,Z[xe]=r.location}twt(e,t);let X=`in vec3 a_position; +out vec4 v_color; +uniform vec4 u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier; +uniform vec4 u_constantColor; +uniform vec4 u_highlightColor; +`;X+=`float u_pointSize; +float tiles3d_tileset_time; +`,S&&(X+=`float u_geometricError; +float u_depthMultiplier; +`),X+=Y,H&&(g?X+=`in vec4 a_color; +`:A?X+=`in float a_color; +const float SHIFT_RIGHT_11 = 1.0 / 2048.0; +const float SHIFT_RIGHT_5 = 1.0 / 32.0; +const float SHIFT_LEFT_11 = 2048.0; +const float SHIFT_LEFT_5 = 32.0; +const float NORMALIZE_6 = 1.0 / 64.0; +const float NORMALIZE_5 = 1.0 / 32.0; +`:X+=`in vec3 a_color; +`),W&&(f||h?X+=`in vec2 a_normal; +`:X+=`in vec3 a_normal; +`),y&&(X+=`in float a_batchId; +`),(c||u||h)&&(X+=`uniform vec4 u_quantizedVolumeScaleAndOctEncodedRange; +`),T&&(X+=B),w&&(X+=v),R&&(X+=P),X+=`void main() +{ + u_pointSize = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.x; + tiles3d_tileset_time = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.y; +`,S&&(X+=` u_geometricError = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.z; + u_depthMultiplier = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.w; +`),H?g?X+=` vec4 color = a_color; +`:A?X+=` float compressed = a_color; + float r = floor(compressed * SHIFT_RIGHT_11); + compressed -= r * SHIFT_LEFT_11; + float g = floor(compressed * SHIFT_RIGHT_5); + compressed -= g * SHIFT_LEFT_5; + float b = compressed; + vec3 rgb = vec3(r * NORMALIZE_5, g * NORMALIZE_6, b * NORMALIZE_5); + vec4 color = vec4(rgb, 1.0); +`:X+=` vec4 color = vec4(a_color, 1.0); +`:X+=` vec4 color = u_constantColor; +`,c||u?X+=` vec3 position = a_position * u_quantizedVolumeScaleAndOctEncodedRange.xyz; +`:X+=` vec3 position = a_position; +`,X+=` vec3 position_absolute = vec3(czm_model * vec4(position, 1.0)); +`,W?(f?X+=` vec3 normal = czm_octDecode(a_normal); +`:h?X+=` vec3 normal = czm_octDecode(a_normal, u_quantizedVolumeScaleAndOctEncodedRange.w).zxy; +`:X+=` vec3 normal = a_normal; +`,X+=` vec3 normalEC = czm_normal * normal; +`):X+=` vec3 normal = vec3(1.0); +`,T&&(X+=` color = getColorFromStyle(position, position_absolute, color, normal); +`),w&&(X+=` float show = float(getShowFromStyle(position, position_absolute, color, normal)); +`),R?X+=` gl_PointSize = getPointSizeFromStyle(position, position_absolute, color, normal) * czm_pixelRatio; +`:S?X+=` vec4 positionEC = czm_modelView * vec4(position, 1.0); + float depth = -positionEC.z; + gl_PointSize = min((u_geometricError / depth) * u_depthMultiplier, u_pointSize); +`:X+=` gl_PointSize = u_pointSize; +`,X+=` color = color * u_highlightColor; +`,W&&E&&(X+=` float diffuseStrength = czm_getLambertDiffuse(czm_lightDirectionEC, normalEC); + diffuseStrength = max(diffuseStrength, 0.4); + color.xyz *= diffuseStrength * czm_lightColor; +`),X+=` v_color = color; + gl_Position = czm_modelViewProjection * vec4(position, 1.0); +`,W&&C&&(X+=` float visible = step(-normalEC.z, 0.0); + gl_Position *= visible; + gl_PointSize *= visible; +`),w&&(X+=` gl_Position.w *= float(show); + gl_PointSize *= float(show); +`),X+=`} +`;let he=`in vec4 v_color; +`;O&&(he+=`uniform highp sampler2D u_clippingPlanes; +uniform mat4 u_clippingPlanesMatrix; +uniform vec4 u_clippingPlanesEdgeStyle; +`,he+=` +`,he+=jg(b,s),he+=` +`),he+=`void main() +{ + out_FragColor = czm_gammaCorrect(v_color); +`,O&&(he+=a3("u_clippingPlanes","u_clippingPlanesMatrix","u_clippingPlanesEdgeStyle")),he+=`} +`,e.splitDirection!==br.NONE&&(he=Ow.modifyFragmentShader(he)),l(e._vertexShaderLoaded)&&(X=e._vertexShaderLoaded(X)),l(e._fragmentShaderLoaded)&&(he=e._fragmentShaderLoaded(he));let ge=e._drawCommand;l(ge.shaderProgram)&&ge.shaderProgram.destroy(),ge.shaderProgram=an.fromCache({context:s,vertexShaderSource:X,fragmentShaderSource:he,attributeLocations:Z});try{ge.shaderProgram._bind()}catch{throw new ce("Error generating style shader: this may be caused by a type mismatch, index out-of-bounds, or other syntax error.")}}function owt(e,t){if(e._decodingState===fx.READY)return!1;if(e._decodingState===fx.NEEDS_DECODE){let n=e._parsedContent,i=n.draco,o=Dp.decodePointCloud(i,t);l(o)&&(e._decodingState=fx.DECODING,o.then(function(r){e._decodingState=fx.READY;let s=l(r.POSITION)?r.POSITION.array:void 0,a=l(r.RGB)?r.RGB.array:void 0,c=l(r.RGBA)?r.RGBA.array:void 0,u=l(r.NORMAL)?r.NORMAL.array:void 0,f=l(r.BATCH_ID)?r.BATCH_ID.array:void 0,h=l(s)&&l(r.POSITION.data.quantization),A=l(u)&&l(r.NORMAL.data.quantization);if(h){let y=r.POSITION.data.quantization,C=y.range;e._quantizedVolumeScale=d.fromElements(C,C,C),e._quantizedVolumeOffset=d.unpack(y.minValues),e._quantizedRange=(1<<y.quantizationBits)-1,e._isQuantizedDraco=!0}A&&(e._octEncodedRange=(1<<r.NORMAL.data.quantization.quantizationBits)-1,e._isOctEncodedDraco=!0);let g=n.styleableProperties,m=i.batchTableProperties;for(let y in m)if(m.hasOwnProperty(y)){let C=r[y];l(g)||(g={}),g[y]={typedArray:C.array,componentCount:C.data.componentsPerAttribute}}l(s)&&(n.positions={typedArray:s});let _=c??a;l(_)&&(n.colors={typedArray:_}),l(u)&&(n.normals={typedArray:u}),l(f)&&(n.batchIds={typedArray:f}),n.styleableProperties=g}).catch(function(r){e._decodingState=fx.FAILED,e._error=r}))}return!0}var rwt=new se,swt=new d;c3.prototype.update=function(e){let t=e.context;if(l(this._error)){let u=this._error;throw this._error=void 0,u}if(owt(this,t))return;let i=!1,o=!N.equals(this._modelMatrix,this.modelMatrix);if(this._mode!==e.mode&&(this._mode=e.mode,o=!0),l(this._drawCommand)||(ewt(this,e),o=!0,i=!0,this._ready=!0,this._parsedContent=void 0),o){N.clone(this.modelMatrix,this._modelMatrix);let u=this._drawCommand.modelMatrix;if(N.clone(this._modelMatrix,u),l(this._rtcCenter)&&N.multiplyByTranslation(u,this._rtcCenter,u),l(this._quantizedVolumeOffset)&&N.multiplyByTranslation(u,this._quantizedVolumeOffset,u),e.mode!==ie.SCENE3D){let h=e.mapProjection,A=N.getColumn(u,3,rwt);se.equals(A,se.UNIT_W)||kt.basisTo2D(h,u,u)}let f=this._drawCommand.boundingVolume;if(le.clone(this._boundingSphere,f),this._cull){let h=f.center;N.multiplyByPoint(u,h,h);let A=N.getScale(u,swt);f.radius*=d.maximumComponent(A)}}this.clippingPlanesDirty&&(this.clippingPlanesDirty=!1,i=!0),this._attenuation!==this.attenuation&&(this._attenuation=this.attenuation,i=!0),this.backFaceCulling!==this._backFaceCulling&&(this._backFaceCulling=this.backFaceCulling,i=!0),this.normalShading!==this._normalShading&&(this._normalShading=this.normalShading,i=!0),(this._style!==this.style||this.styleDirty)&&(this._style=this.style,this.styleDirty=!1,i=!0);let r=this.splitDirection!==br.NONE;this._splittingEnabled!==r&&(this._splittingEnabled=r,i=!0),i&&iwt(this,e,this._style),this._drawCommand.castShadows=Bn.castShadows(this.shadows),this._drawCommand.receiveShadows=Bn.receiveShadows(this.shadows);let s=this._highlightColor.alpha<1||this._constantColor.alpha<1||this._styleTranslucent;this._drawCommand.renderState=s?this._translucentRenderState:this._opaqueRenderState,this._drawCommand.pass=s?Be.TRANSLUCENT:this._opaquePass;let a=e.commandList,c=e.passes;(c.render||c.pick)&&a.push(this._drawCommand)};c3.prototype.isDestroyed=function(){return!1};c3.prototype.destroy=function(){let e=this._drawCommand;return l(e)&&(e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy()),ue(this)};var l3=c3;function hx(e){e=e??V.EMPTY_OBJECT,this.show=e.show??!0,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this.shadows=e.shadows??Bn.ENABLED,this.maximumMemoryUsage=e.maximumMemoryUsage??256,this.shading=new Zm(e.shading),this.style=e.style,this.frameFailed=new _e,this.frameChanged=new _e,this._clock=e.clock,this._intervals=e.intervals,this._clippingPlanes=void 0,this.clippingPlanes=e.clippingPlanes,this._pointCloudEyeDomeLighting=new Qp,this._loadTimestamp=void 0,this._clippingPlanesState=0,this._styleDirty=!1,this._pickId=void 0,this._totalMemoryUsageInBytes=0,this._frames=[],this._previousInterval=void 0,this._nextInterval=void 0,this._lastRenderedFrame=void 0,this._clockMultiplier=0,this._runningSum=0,this._runningLength=0,this._runningIndex=0,this._runningSamples=new Array(5).fill(0),this._runningAverage=0}Object.defineProperties(hx.prototype,{clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Fs.setOwner(e,this,"_clippingPlanes")}},totalMemoryUsageInBytes:{get:function(){return this._totalMemoryUsageInBytes}},boundingSphere:{get:function(){if(l(this._lastRenderedFrame))return this._lastRenderedFrame.pointCloud.boundingSphere}}});function awt(e){return`uniform vec4 czm_pickColor; +${e}`}function cwt(e){return function(t){return Tt(t,{czm_pickColor:function(){return e._pickId.color}})}}function lwt(){return"czm_pickColor"}hx.prototype.makeStyleDirty=function(){this._styleDirty=!0};hx.prototype._getAverageLoadTime=function(){return this._runningLength===0?.05:this._runningAverage};var uwt=new K;function ZZ(e){let t=e._clock,n=t.canAnimate&&t.shouldAnimate,i=t.multiplier;return n?i:0}function dx(e,t){return e._intervals.indexOf(t.start)}function fwt(e,t){let n=e._intervals,i=e._clock,o=ZZ(e);if(o===0)return;let r=e._getAverageLoadTime(),s=K.addSeconds(i.currentTime,r*o,uwt),a=n.indexOf(s),c=dx(e,t);return a===c&&(o>=0?++a:--a),n.get(a)}function dwt(e){let t=e._intervals,i=e._clock.currentTime,o=t.indexOf(i);return t.get(o)}function hwt(e,t,n){let i=ZZ(e),o=dx(e,t),r=dx(e,n);return i>=0?o>=r:o<=r}function nSe(e,t){return function(n){let i=l(n.message)?n.message:n.toString();e.frameFailed.numberOfListeners>0?e.frameFailed.raiseEvent({uri:t,message:i}):(console.log(`A frame failed to load: ${t}`),console.log(`Error: ${i}`))}}function mwt(e,t,n){let i=dx(e,t),o=e._frames,r=o[i];if(!l(r)){let s=t.data.transform,a=l(s)?N.fromArray(s):void 0,c=t.data.uri;r={pointCloud:void 0,transform:a,timestamp:Li(),sequential:!0,ready:!1,touchedFrameNumber:n.frameNumber,uri:c},o[i]=r,we.fetchArrayBuffer({url:c}).then(function(u){r.pointCloud=new l3({arrayBuffer:u,cull:!0,fragmentShaderLoaded:awt,uniformMapLoaded:cwt(e),pickIdLoaded:lwt})}).catch(nSe(e,c))}return r}function Awt(e,t){e._runningSum+=t,e._runningSum-=e._runningSamples[e._runningIndex],e._runningSamples[e._runningIndex]=t,e._runningLength=Math.min(e._runningLength+1,e._runningSamples.length),e._runningIndex=(e._runningIndex+1)%e._runningSamples.length,e._runningAverage=e._runningSum/e._runningLength}function pwt(e,t,n,i){t.touchedFrameNumber<i.frameNumber-1&&(t.sequential=!1);let o=t.pointCloud;if(l(o)&&!t.ready){let r=i.commandList,s=r.length;if(iSe(e,t,n,i),o.ready&&(t.ready=!0,e._totalMemoryUsageInBytes+=o.geometryByteLength,r.length=s,t.sequential)){let a=(Li()-t.timestamp)/1e3;Awt(e,a)}}t.touchedFrameNumber=i.frameNumber}var gwt=new N;function _wt(e,t){let n=e.shading;return l(n)&&l(n.baseResolution)?n.baseResolution:l(t.boundingSphere)?D.cbrt(t.boundingSphere.volume()/t.pointsLength):0}function ywt(e){let t=e.shading;return l(t)&&l(t.maximumAttenuation)?t.maximumAttenuation:10}var Cwt=new Zm;function iSe(e,t,n,i){let o=e.shading??Cwt,r=t.pointCloud,s=t.transform??N.IDENTITY;r.modelMatrix=N.multiplyTransformation(e.modelMatrix,s,gwt),r.style=e.style,r.time=n.timeSinceLoad,r.shadows=e.shadows,r.clippingPlanes=e._clippingPlanes,r.isClipped=n.isClipped,r.attenuation=o.attenuation,r.backFaceCulling=o.backFaceCulling,r.normalShading=o.normalShading,r.geometricError=_wt(e,r),r.geometricErrorScale=o.geometricErrorScale,r.maximumAttenuation=ywt(e);try{r.update(i)}catch(a){nSe(e,t.uri)(a)}t.touchedFrameNumber=i.frameNumber}function JZ(e,t,n,i){let o=mwt(e,t,i);pwt(e,o,n,i)}function Ewt(e){return function(t){return t.touchedFrameNumber<e.frameNumber}}function oSe(e,t){let n=e._frames,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(l(r)&&(!l(t)||t(r))){let s=r.pointCloud;r.ready&&(e._totalMemoryUsageInBytes-=s.geometryByteLength),l(s)&&s.destroy(),r===e._lastRenderedFrame&&(e._lastRenderedFrame=void 0),n[o]=void 0}}}function Iwt(e,t){let n=dx(e,t),i=e._frames[n];if(l(i)&&i.ready)return i}function tSe(e,t,n,i,o){return l(n)?n.ready?!0:(JZ(e,t,i,o),n.ready):!1}function xwt(e,t,n,i,o){let r,s,a,c=e._intervals,u=e._frames,f=dx(e,n),h=dx(e,t);if(f>=h){for(r=f;r>=h;--r)if(s=c.get(r),a=u[r],tSe(e,s,a,i,o))return s}else for(r=f;r<=h;++r)if(s=c.get(r),a=u[r],tSe(e,s,a,i,o))return s;return t}function bwt(e,t,n){let i=e._frames,o=i.length;for(let r=0;r<o;++r){let s=i[r];l(s)&&l(s.pointCloud)&&(s.pointCloud.clippingPlanesDirty=t,s.pointCloud.styleDirty=n)}}var Fw={timeSinceLoad:0,isClipped:!1,clippingPlanesDirty:!1};hx.prototype.update=function(e){if(e.mode===ie.MORPHING||!this.show)return;l(this._pickId)||(this._pickId=e.context.createPickId({primitive:this})),l(this._loadTimestamp)||(this._loadTimestamp=K.clone(e.time));let t=Math.max(K.secondsDifference(e.time,this._loadTimestamp)*1e3,0),n=this._clippingPlanes,i=0,o=!1,r=l(n)&&n.enabled;r&&(n.update(e),i=n.clippingPlanesState),this._clippingPlanesState!==i&&(this._clippingPlanesState=i,o=!0);let s=this._styleDirty;this._styleDirty=!1,(o||s)&&bwt(this,o,s),Fw.timeSinceLoad=t,Fw.isClipped=r;let a=this.shading,c=this._pointCloudEyeDomeLighting,u=e.commandList,f=u.length,h=this._previousInterval,A=this._nextInterval,g=dwt(this);if(!l(g))return;let m=!1,_=ZZ(this),y=_===0;_!==this._clockMultiplier&&(m=!0,this._clockMultiplier=_),(!l(h)||y)&&(h=g),(!l(A)||m||hwt(this,g,A))&&(A=fwt(this,g)),h=xwt(this,h,g,Fw,e);let C=Iwt(this,h);l(C)||(JZ(this,h,Fw,e),C=this._lastRenderedFrame),l(C)&&iSe(this,C,Fw,e),l(A)&&JZ(this,A,Fw,e);let E=this;l(C)&&!l(this._lastRenderedFrame)&&e.afterRender.push(function(){return!0}),l(C)&&C!==this._lastRenderedFrame&&E.frameChanged.numberOfListeners>0&&e.afterRender.push(function(){return E.frameChanged.raiseEvent(E),!0}),this._previousInterval=h,this._nextInterval=A,this._lastRenderedFrame=C;let I=this._totalMemoryUsageInBytes,b=this.maximumMemoryUsage*1024*1024;I>b&&oSe(this,Ewt(e));let B=u.length-f;l(a)&&a.attenuation&&a.eyeDomeLighting&&B>0&&c.update(e,f,a,this.boundingSphere)};hx.prototype.isDestroyed=function(){return!1};hx.prototype.destroy=function(){return oSe(this),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),ue(this)};var Qw=hx;function aSe(e,t){if(l(t)){let n=t.clock;l(n)&&n.getValue(e)}}function Twt(e){e._renderLoopRunning=!0;let t=0;function n(i){if(!e.isDestroyed())if(e._useDefaultRenderLoop)try{let o=e._targetFrameRate;if(!l(o))e.resize(),e.render(),requestAnimationFrame(n);else{let r=1e3/o,s=i-t;s>r&&(e.resize(),e.render(),t=i-s%r),requestAnimationFrame(n)}}catch(o){e._useDefaultRenderLoop=!1,e._renderLoopRunning=!1,e._showRenderLoopErrors&&e.showErrorPanel("An error occurred while rendering. Rendering has stopped.",void 0,o)}else e._renderLoopRunning=!1}requestAnimationFrame(n)}function cSe(e){let t=e._useBrowserRecommendedResolution?1:window.devicePixelRatio;return t*=e._resolutionScale,l(e._scene)&&(e._scene.pixelRatio=t),t}function lSe(e){let t=e._canvas,n=t.clientWidth,i=t.clientHeight,o=cSe(e);e._canvasClientWidth=n,e._canvasClientHeight=i,n*=o,i*=o,t.width=n,t.height=i,e._canRender=n!==0&&i!==0,e._lastDevicePixelRatio=window.devicePixelRatio}function uSe(e){let t=e._canvas,n=t.width,i=t.height;if(n!==0&&i!==0){let o=e._scene.camera.frustum;l(o.aspectRatio)?o.aspectRatio=n/i:(o.top=o.right*(i/n),o.bottom=-o.top)}}function Vo(e,t){e=kn(e),t=t??V.EMPTY_OBJECT;let n=document.createElement("div");n.className="cesium-widget",e.appendChild(n);let i=document.createElement("canvas"),o=Wt.supportsImageRenderingPixelated();this._supportsImageRenderingPixelated=o,o&&(i.style.imageRendering=Wt.imageRenderingValue()),i.oncontextmenu=function(){return!1},i.onselectstart=function(){return!1};function r(){i!==i.ownerDocument.activeElement&&i.ownerDocument.activeElement.blur()}(t.blurActiveElementOnCanvasFocus??!0)&&(i.addEventListener("mousedown",r),i.addEventListener("pointerdown",r)),n.appendChild(i);let a=document.createElement("div");a.className="cesium-widget-credits";let c=l(t.creditContainer)?kn(t.creditContainer):n;c.appendChild(a);let u=l(t.creditViewport)?kn(t.creditViewport):n,f=t.showRenderLoopErrors??!0,h=t.useBrowserRecommendedResolution??!0;this._element=n,this._container=e,this._canvas=i,this._canvasClientWidth=0,this._canvasClientHeight=0,this._lastDevicePixelRatio=0,this._creditViewport=u,this._creditContainer=c,this._innerCreditContainer=a,this._canRender=!1,this._renderLoopRunning=!1,this._showRenderLoopErrors=f,this._resolutionScale=1,this._useBrowserRecommendedResolution=h,this._forceResize=!1,this._entityView=void 0,this._clockTrackedDataSource=void 0,this._trackedEntity=void 0,this._needTrackedEntityUpdate=!1,this._zoomIsFlight=!1,this._zoomTarget=void 0,this._zoomPromise=void 0,this._zoomOptions=void 0,this._trackedEntityChanged=new _e,this._allowDataSourcesToSuspendAnimation=!0,this._clock=l(t.clock)?t.clock:new Xh,l(t.shouldAnimate)&&(this._clock.shouldAnimate=t.shouldAnimate),lSe(this);try{let A=t.ellipsoid??te.default,g=new t3({canvas:i,contextOptions:t.contextOptions,creditContainer:a,creditViewport:u,ellipsoid:A,mapProjection:t.mapProjection,orderIndependentTranslucency:t.orderIndependentTranslucency,scene3DOnly:t.scene3DOnly??!1,shadows:t.shadows,mapMode2D:t.mapMode2D,requestRenderMode:t.requestRenderMode,maximumRenderTimeChange:t.maximumRenderTimeChange,depthPlaneEllipsoidOffset:t.depthPlaneEllipsoidOffset,msaaSamples:t.msaaSamples});this._scene=g,g.camera.constrainedAxis=d.UNIT_Z,cSe(this),uSe(this);let m=t.globe;l(m)||(m=new rQ(A)),m!==!1&&(g.globe=m,g.globe.shadows=t.terrainShadows??Bn.RECEIVE_ONLY);let _=t.skyBox;!l(_)&&te.WGS84.equals(A)&&(_=i3.createEarthSkyBox()),_!==!1&&(g.skyBox=_,g.sun=new s3,te.WGS84.equals(A)&&(g.moon=new fQ));let y=t.skyAtmosphere;!l(y)&&te.WGS84.equals(A)&&(y=new n3(A),y.show=t.globe!==!1&&m.show),y!==!1&&(g.skyAtmosphere=y);let C=t.baseLayer;t.globe!==!1&&C!==!1&&(l(C)||(C=rs.fromWorldImagery()),g.imageryLayers.add(C)),l(t.terrainProvider)&&t.globe!==!1&&(g.terrainProvider=t.terrainProvider),l(t.terrain)&&t.globe!==!1&&g.setTerrain(t.terrain),this._screenSpaceEventHandler=new Pf(i),l(t.sceneMode)&&(t.sceneMode===ie.SCENE2D&&this._scene.morphTo2D(0),t.sceneMode===ie.COLUMBUS_VIEW&&this._scene.morphToColumbusView(0)),this._useDefaultRenderLoop=void 0,this.useDefaultRenderLoop=t.useDefaultRenderLoop??!0,this._targetFrameRate=void 0,this.targetFrameRate=t.targetFrameRate;let E=this;this._onRenderError=function(P,M){E._useDefaultRenderLoop=!1,E._renderLoopRunning=!1,E._showRenderLoopErrors&&E.showErrorPanel("An error occurred while rendering. Rendering has stopped.",void 0,M)},g.renderError.addEventListener(this._onRenderError);let I=t.dataSources,b=!1;l(I)||(I=new VO,b=!0);let S=new PF({scene:g,dataSourceCollection:I}),B=new Dr;this._dataSourceChangedListeners={},this._automaticallyTrackDataSourceClocks=t.automaticallyTrackDataSourceClocks??!0,this._dataSourceCollection=I,this._destroyDataSourceCollection=b,this._dataSourceDisplay=S,this._eventHelper=B,this._canAnimateUpdateCallback=this._updateCanAnimate,B.add(this._clock.onTick,Vo.prototype._onTick,this),B.add(g.morphStart,Vo.prototype._clearTrackedObject,this),B.add(I.dataSourceAdded,Vo.prototype._onDataSourceAdded,this),B.add(I.dataSourceRemoved,Vo.prototype._onDataSourceRemoved,this),B.add(g.postRender,Vo.prototype._postRender,this);let v=I.length;for(let P=0;P<v;P++)this._dataSourceAdded(I,I.get(P));this._dataSourceAdded(void 0,S.defaultDataSource),B.add(I.dataSourceAdded,Vo.prototype._dataSourceAdded,this),B.add(I.dataSourceRemoved,Vo.prototype._dataSourceRemoved,this)}catch(A){throw f&&this.showErrorPanel("Error constructing CesiumWidget.",'Visit <a href="http://get.webgl.org">http://get.webgl.org</a> to verify that your web browser and hardware support WebGL. Consider trying a different web browser or updating your video drivers. Detailed error information is below:',A),A}}Object.defineProperties(Vo.prototype,{container:{get:function(){return this._container}},canvas:{get:function(){return this._canvas}},creditContainer:{get:function(){return this._creditContainer}},creditViewport:{get:function(){return this._creditViewport}},scene:{get:function(){return this._scene}},imageryLayers:{get:function(){return this._scene.imageryLayers}},terrainProvider:{get:function(){return this._scene.terrainProvider},set:function(e){this._scene.terrainProvider=e}},creditDisplay:{get:function(){return this._scene.frameState.creditDisplay}},dataSourceDisplay:{get:function(){return this._dataSourceDisplay}},entities:{get:function(){return this._dataSourceDisplay.defaultDataSource.entities}},dataSources:{get:function(){return this._dataSourceCollection}},camera:{get:function(){return this._scene.camera}},ellipsoid:{get:function(){return this._scene.ellipsoid}},clock:{get:function(){return this._clock}},screenSpaceEventHandler:{get:function(){return this._screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._targetFrameRate},set:function(e){this._targetFrameRate=e}},useDefaultRenderLoop:{get:function(){return this._useDefaultRenderLoop},set:function(e){this._useDefaultRenderLoop!==e&&(this._useDefaultRenderLoop=e,e&&!this._renderLoopRunning&&Twt(this))}},resolutionScale:{get:function(){return this._resolutionScale},set:function(e){this._resolutionScale!==e&&(this._resolutionScale=e,this._forceResize=!0)}},useBrowserRecommendedResolution:{get:function(){return this._useBrowserRecommendedResolution},set:function(e){this._useBrowserRecommendedResolution!==e&&(this._useBrowserRecommendedResolution=e,this._forceResize=!0)}},allowDataSourcesToSuspendAnimation:{get:function(){return this._allowDataSourcesToSuspendAnimation},set:function(e){this._allowDataSourcesToSuspendAnimation=e}},trackedEntity:{get:function(){return this._trackedEntity},set:function(e){if(this._trackedEntity!==e){this._trackedEntity=e,$Z(this);let t=this.scene,n=t.mode;!l(e)||!l(e.position)?(this._needTrackedEntityUpdate=!1,(n===ie.COLUMBUS_VIEW||n===ie.SCENE2D)&&(t.screenSpaceCameraController.enableTranslate=!0),(n===ie.COLUMBUS_VIEW||n===ie.SCENE3D)&&(t.screenSpaceCameraController.enableTilt=!0),this._entityView=void 0,this.camera.lookAtTransform(N.IDENTITY)):this._needTrackedEntityUpdate=!0,this._trackedEntityChanged.raiseEvent(e),this.scene.requestRender()}}},trackedEntityChanged:{get:function(){return this._trackedEntityChanged}},clockTrackedDataSource:{get:function(){return this._clockTrackedDataSource},set:function(e){this._clockTrackedDataSource!==e&&(this._clockTrackedDataSource=e,aSe(this.clock,e))}}});Vo.prototype.showErrorPanel=function(e,t,n){let i=this._element,o=document.createElement("div");o.className="cesium-widget-errorPanel";let r=document.createElement("div");r.className="cesium-widget-errorPanel-content",o.appendChild(r);let s=document.createElement("div");s.className="cesium-widget-errorPanel-header",s.appendChild(document.createTextNode(e)),r.appendChild(s);let a=document.createElement("div");a.className="cesium-widget-errorPanel-scroll",r.appendChild(a);function c(){a.style.maxHeight=`${Math.max(Math.round(i.clientHeight*.9-100),30)}px`}c(),l(window.addEventListener)&&window.addEventListener("resize",c,!1);let u=l(t),f=l(n);if(u||f){let g=document.createElement("div");if(g.className="cesium-widget-errorPanel-message",a.appendChild(g),f){let m=eA(n);u||(typeof n=="string"&&(n=new Error(n)),t=eA({name:n.name,message:n.message}),m=n.stack),typeof console<"u"&&console.error(`${e} +${t} +${m}`);let _=document.createElement("div");_.className="cesium-widget-errorPanel-message-details collapsed";let y=document.createElement("span");y.className="cesium-widget-errorPanel-more-details",y.appendChild(document.createTextNode("See more...")),_.appendChild(y),_.onclick=function(C){_.removeChild(y),_.appendChild(document.createTextNode(m)),_.className="cesium-widget-errorPanel-message-details",r.className="cesium-widget-errorPanel-content expanded",_.onclick=void 0},a.appendChild(_)}g.innerHTML=`<p>${t}</p>`}let h=document.createElement("div");h.className="cesium-widget-errorPanel-buttonPanel",r.appendChild(h);let A=document.createElement("button");A.setAttribute("type","button"),A.className="cesium-button",A.appendChild(document.createTextNode("OK")),A.onclick=function(){l(c)&&l(window.removeEventListener)&&window.removeEventListener("resize",c,!1),i.removeChild(o)},h.appendChild(A),i.appendChild(o)};Vo.prototype.isDestroyed=function(){return!1};Vo.prototype.destroy=function(){let e=this.dataSources,t=e.length;for(let n=0;n<t;n++)this._dataSourceRemoved(e,e.get(n));this._dataSourceRemoved(void 0,this._dataSourceDisplay.defaultDataSource),this._dataSourceDisplay=this._dataSourceDisplay.destroy(),l(this._scene)&&(this._scene.renderError.removeEventListener(this._onRenderError),this._scene=this._scene.destroy()),this._container.removeChild(this._element),this._creditContainer.removeChild(this._innerCreditContainer),this._eventHelper.removeAll(),this._destroyDataSourceCollection&&(this._dataSourceCollection=this._dataSourceCollection.destroy()),ue(this)};Vo.prototype.resize=function(){let e=this._canvas;!this._forceResize&&this._canvasClientWidth===e.clientWidth&&this._canvasClientHeight===e.clientHeight&&this._lastDevicePixelRatio===window.devicePixelRatio||(this._forceResize=!1,lSe(this),uSe(this),this._scene.requestRender())};Vo.prototype.render=function(){if(this._canRender){this._scene.initializeFrame();let e=this._clock.tick();this._scene.render(e)}else this._clock.tick()};Vo.prototype._dataSourceAdded=function(e,t){t.entities.collectionChanged.addEventListener(Vo.prototype._onEntityCollectionChanged,this)};Vo.prototype._dataSourceRemoved=function(e,t){let n=t.entities;n.collectionChanged.removeEventListener(Vo.prototype._onEntityCollectionChanged,this),l(this.trackedEntity)&&n.getById(this.trackedEntity.id)===this.trackedEntity&&(this.trackedEntity=void 0)};Vo.prototype._updateCanAnimate=function(e){this._clock.canAnimate=e};var Swt=new le;Vo.prototype._onTick=function(e){let t=e.currentTime,n=this._dataSourceDisplay.update(t);this._allowDataSourcesToSuspendAnimation&&this._canAnimateUpdateCallback(n);let i=this._entityView;if(l(i)){let o=this._trackedEntity;this._dataSourceDisplay.getBoundingSphere(o,!1,i.boundingSphere??Swt)===mt.DONE&&i.update(t)}};Vo.prototype._onEntityCollectionChanged=function(e,t,n){let i=n.length;for(let o=0;o<i;o++){let r=n[o];this.trackedEntity===r&&(this.trackedEntity=void 0)}};Vo.prototype._clearTrackedObject=function(){this.trackedEntity=void 0};Vo.prototype._onDataSourceChanged=function(e){this.clockTrackedDataSource===e&&aSe(this.clock,e)};Vo.prototype._onDataSourceAdded=function(e,t){this._automaticallyTrackDataSourceClocks&&(this.clockTrackedDataSource=t);let n=t.entities.id,i=this._eventHelper.add(t.changedEvent,Vo.prototype._onDataSourceChanged,this);this._dataSourceChangedListeners[n]=i};Vo.prototype._onDataSourceRemoved=function(e,t){let n=this.clockTrackedDataSource===t,i=t.entities.id;if(this._dataSourceChangedListeners[i](),this._dataSourceChangedListeners[i]=void 0,n){let o=e.length;this._automaticallyTrackDataSourceClocks&&o>0?this.clockTrackedDataSource=e.get(o-1):this.clockTrackedDataSource=void 0}};Vo.prototype.zoomTo=function(e,t){return fSe(this,e,{offset:t},!1)};Vo.prototype.flyTo=function(e,t){return fSe(this,e,t,!0)};function fSe(e,t,n,i){$Z(e);let o=new Promise(r=>{e._completeZoom=function(s){r(s)}});return e._zoomPromise=o,e._zoomIsFlight=i,e._zoomOptions=n,Promise.resolve(t).then(function(r){if(e._zoomPromise===o){if(r instanceof rs){let s;l(r.imageryProvider)?s=Promise.resolve(r.getImageryRectangle()):s=new Promise(a=>{let c=r.readyEvent.addEventListener(()=>{c(),a(r.getImageryRectangle())})}),s.then(function(a){return RI(a,e.scene)}).then(function(a){e._zoomPromise===o&&(e._zoomTarget=a)});return}if(r instanceof ks||r instanceof Qw||r instanceof IC){e._zoomTarget=r;return}if(r.isLoading&&l(r.loadingEvent)){let s=r.loadingEvent.addEventListener(function(){s(),e._zoomPromise===o&&(e._zoomTarget=r.entities.values.slice(0))});return}if(Array.isArray(r)){e._zoomTarget=r.slice(0);return}r=r.values??r,l(r.entities)&&(r=r.entities.values),Array.isArray(r)?e._zoomTarget=r.slice(0):e._zoomTarget=[r]}}),e.scene.requestRender(),o}function u3(e){e._zoomPromise=void 0,e._zoomTarget=void 0,e._zoomOptions=void 0}function $Z(e){let t=e._zoomPromise;l(t)&&(u3(e),e._completeZoom(!1))}Vo.prototype._postRender=function(){wwt(this),Bwt(this)};var rSe=new le;function wwt(e){let t=e._zoomTarget;if(!l(t)||e.scene.mode===ie.MORPHING)return;let n=e.scene,i=n.camera,o=e._zoomOptions??{},r;function s(f){l(o.offset)||(o.offset=new Md(0,-.5,f.radius)),r={offset:o.offset,duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)}},e._zoomIsFlight?i.flyToBoundingSphere(t.boundingSphere,r):(i.viewBoundingSphere(f,o.offset),i.lookAtTransform(N.IDENTITY),e._completeZoom(!0)),u3(e)}if(t instanceof Qw){if(l(t.boundingSphere)){s(t.boundingSphere);return}let f=t.frameChanged.addEventListener(function(h){s(h.boundingSphere),f()});return}if(t instanceof ks||t instanceof IC){s(t.boundingSphere);return}if(t instanceof Ae){r={destination:n.ellipsoid.cartographicToCartesian(t),duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)}},e._zoomIsFlight?i.flyTo(r):(i.setView(r),e._completeZoom(!0)),u3(e);return}let a=t,c=[];for(let f=0,h=a.length;f<h;f++){let A=e._dataSourceDisplay.getBoundingSphere(a[f],!1,rSe);if(A===mt.PENDING)return;A!==mt.FAILED&&c.push(le.clone(rSe))}if(c.length===0){$Z(e);return}e.trackedEntity=void 0;let u=le.fromBoundingSpheres(c);e._zoomIsFlight?(u3(e),i.flyToBoundingSphere(u,{duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)},offset:o.offset})):(i.viewBoundingSphere(u,o.offset),i.lookAtTransform(N.IDENTITY),u3(e),e._completeZoom(!0))}var sSe=new le;function Bwt(e){if(!e._needTrackedEntityUpdate)return;let t=e._trackedEntity,n=e.clock.currentTime,i=j.getValueOrUndefined(t.position,n);if(!l(i))return;let o=e.scene,r=e._dataSourceDisplay.getBoundingSphere(t,!1,sSe);if(r===mt.PENDING)return;let s=o.mode;(s===ie.COLUMBUS_VIEW||s===ie.SCENE2D)&&(o.screenSpaceCameraController.enableTranslate=!1),(s===ie.COLUMBUS_VIEW||s===ie.SCENE3D)&&(o.screenSpaceCameraController.enableTilt=!1);let a=r!==mt.FAILED?sSe:void 0;e._entityView=new MF(t,o,o.ellipsoid),e._entityView.update(n,a),e._needTrackedEntityUpdate=!1}var f3=Vo;function Gw(e,t){this._tilingScheme=e,this._maximumLevel=t,this._rootNodes=[]}var mx=new ae;function Dwt(e,t,n,i){let o=i.length;for(let r=0;r<o;++r){let s=i[r];if(s.x===t&&s.y===n&&s.level===e)return!0}return!1}Gw.prototype.addAvailableTileRange=function(e,t,n,i,o){let r=this._tilingScheme,s=this._rootNodes;if(e===0)for(let A=n;A<=o;++A)for(let g=t;g<=i;++g)Dwt(e,g,A,s)||s.push(new kw(r,void 0,0,g,A));r.tileXYToRectangle(t,n,e,mx);let a=mx.west,c=mx.north;r.tileXYToRectangle(i,o,e,mx);let u=mx.east,f=mx.south,h=new Nwt(e,a,f,u,c);for(let A=0;A<s.length;++A){let g=s[A];e$(g.extent,h)&&Lwt(this._maximumLevel,g,h)}};Gw.prototype.computeMaximumLevelAtPosition=function(e){let t;for(let n=0;n<this._rootNodes.length;++n){let i=this._rootNodes[n];if(Uw(i.extent,e)){t=i;break}}return l(t)?d3(void 0,t,e):-1};var vwt=[],Pwt=[],Rwt=new ae,Mwt=new ae;Gw.prototype.computeBestAvailableLevelOverRectangle=function(e){let t=vwt;t.length=0,e.east<e.west?(t.push(ae.fromRadians(-Math.PI,e.south,e.east,e.north,Rwt)),t.push(ae.fromRadians(e.west,e.south,Math.PI,e.north,Mwt))):t.push(e);let n=Pwt;n.length=0;let i;for(i=0;i<this._rootNodes.length;++i)h3(n,this._rootNodes[i],t);for(i=n.length-1;i>=0;--i)if(l(n[i])&&n[i].length===0)return i;return 0};var dSe=new Ae;Gw.prototype.isTileAvailable=function(e,t,n){let i=this._tilingScheme.tileXYToRectangle(t,n,e,mx);return ae.center(i,dSe),this.computeMaximumLevelAtPosition(dSe)>=e};Gw.prototype.computeChildMaskForTile=function(e,t,n){let i=e+1;if(i>=this._maximumLevel)return 0;let o=0;return o|=this.isTileAvailable(i,2*t,2*n+1)?1:0,o|=this.isTileAvailable(i,2*t+1,2*n+1)?2:0,o|=this.isTileAvailable(i,2*t,2*n)?4:0,o|=this.isTileAvailable(i,2*t+1,2*n)?8:0,o};function kw(e,t,n,i,o){this.tilingScheme=e,this.parent=t,this.level=n,this.x=i,this.y=o,this.extent=e.tileXYToRectangle(i,o,n),this.rectangles=[],this._sw=void 0,this._se=void 0,this._nw=void 0,this._ne=void 0}Object.defineProperties(kw.prototype,{nw:{get:function(){return this._nw||(this._nw=new kw(this.tilingScheme,this,this.level+1,this.x*2,this.y*2)),this._nw}},ne:{get:function(){return this._ne||(this._ne=new kw(this.tilingScheme,this,this.level+1,this.x*2+1,this.y*2)),this._ne}},sw:{get:function(){return this._sw||(this._sw=new kw(this.tilingScheme,this,this.level+1,this.x*2,this.y*2+1)),this._sw}},se:{get:function(){return this._se||(this._se=new kw(this.tilingScheme,this,this.level+1,this.x*2+1,this.y*2+1)),this._se}}});function Nwt(e,t,n,i,o){this.level=e,this.west=t,this.south=n,this.east=i,this.north=o}function e$(e,t){let n=Math.max(e.west,t.west),i=Math.max(e.south,t.south),o=Math.min(e.east,t.east),r=Math.min(e.north,t.north);return i<r&&n<o}function Lwt(e,t,n){for(;t.level<e;)if(c5(t.nw.extent,n))t=t.nw;else if(c5(t.ne.extent,n))t=t.ne;else if(c5(t.sw.extent,n))t=t.sw;else if(c5(t.se.extent,n))t=t.se;else break;if(t.rectangles.length===0||t.rectangles[t.rectangles.length-1].level<=n.level)t.rectangles.push(n);else{let i=Wo(t.rectangles,n.level,Owt);i<0&&(i=~i),t.rectangles.splice(i,0,n)}}function Owt(e,t){return e.level-t}function c5(e,t){return t.west>=e.west&&t.east<=e.east&&t.south>=e.south&&t.north<=e.north}function Uw(e,t){return t.longitude>=e.west&&t.longitude<=e.east&&t.latitude>=e.south&&t.latitude<=e.north}function d3(e,t,n){let i=0,o=!1;for(;!o;){let r=t._nw&&Uw(t._nw.extent,n),s=t._ne&&Uw(t._ne.extent,n),a=t._sw&&Uw(t._sw.extent,n),c=t._se&&Uw(t._se.extent,n);if(r+s+a+c>1){r&&(i=Math.max(i,d3(t,t._nw,n))),s&&(i=Math.max(i,d3(t,t._ne,n))),a&&(i=Math.max(i,d3(t,t._sw,n))),c&&(i=Math.max(i,d3(t,t._se,n)));break}else r?t=t._nw:s?t=t._ne:a?t=t._sw:c?t=t._se:o=!0}for(;t!==e;){let r=t.rectangles;for(let s=r.length-1;s>=0&&r[s].level>i;--s){let a=r[s];Uw(a,n)&&(i=a.level)}t=t.parent}return i}function h3(e,t,n){if(!t)return;let i,o=!1;for(i=0;i<n.length;++i)o=o||e$(t.extent,n[i]);if(!o)return;let r=t.rectangles;for(i=0;i<r.length;++i){let s=r[i];e[s.level]||(e[s.level]=n),e[s.level]=Fwt(e[s.level],s)}h3(e,t._nw,n),h3(e,t._ne,n),h3(e,t._sw,n),h3(e,t._se,n)}function Fwt(e,t){let n=[];for(let i=0;i<e.length;++i){let o=e[i];e$(o,t)?(o.west<t.west&&n.push(new ae(o.west,o.south,t.west,o.north)),o.east>t.east&&n.push(new ae(t.east,o.south,o.east,o.north)),o.south<t.south&&n.push(new ae(Math.max(t.west,o.west),o.south,Math.min(t.east,o.east),t.south)),o.north>t.north&&n.push(new ae(Math.max(t.west,o.west),t.north,Math.min(t.east,o.east),o.north))):n.push(o)}return n}var xm=Gw;var Qwt=15;function hSe(e){this.ellipsoid=e.ellipsoid??te.default,this.credit=void 0,this.tilingScheme=void 0,this.height=void 0,this.width=void 0,this.encoding=void 0,this.lodCount=void 0,this.hasAvailability=!1,this.tilesAvailable=void 0,this.tilesAvailabilityLoaded=void 0,this.levelZeroMaximumGeometricError=void 0,this.terrainDataStructure=void 0}hSe.prototype.build=function(e){e._credit=this.credit,e._tilingScheme=this.tilingScheme,e._height=this.height,e._width=this.width,e._encoding=this.encoding,e._lodCount=this.lodCount,e._hasAvailability=this.hasAvailability,e._tilesAvailable=this.tilesAvailable,e._tilesAvailabilityLoaded=this.tilesAvailabilityLoaded,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._terrainDataStructure=this.terrainDataStructure};function kwt(e,t){let n=t.copyrightText;l(n)&&(e.credit=new Bt(n));let i=t.spatialReference,o=i.latestWkid??i.wkid,r=t.extent,s={ellipsoid:e.ellipsoid};if(o===4326)s.rectangle=ae.fromDegrees(r.xmin,r.ymin,r.xmax,r.ymax),e.tilingScheme=new so(s);else if(o===3857){let u=Math.PI*e.ellipsoid.maximumRadius;t.extent.xmax>u&&(t.extent.xmax=u),t.extent.ymax>u&&(t.extent.ymax=u),t.extent.xmin<-u&&(t.extent.xmin=-u),t.extent.ymin<-u&&(t.extent.ymin=-u),s.rectangleSouthwestInMeters=new U(r.xmin,r.ymin),s.rectangleNortheastInMeters=new U(r.xmax,r.ymax),e.tilingScheme=new Ts(s)}else throw new ce("Invalid spatial reference");let a=t.tileInfo;if(!l(a))throw new ce("tileInfo is required");e.width=a.rows+1,e.height=a.cols+1,e.encoding=a.format==="LERC"?Qd.LERC:Qd.NONE,e.lodCount=a.lods.length-1,(e.hasAvailability=t.capabilities.indexOf("Tilemap")!==-1)&&(e.tilesAvailable=new xm(e.tilingScheme,e.lodCount),e.tilesAvailable.addAvailableTileRange(0,0,0,e.tilingScheme.getNumberOfXTilesAtLevel(0),e.tilingScheme.getNumberOfYTilesAtLevel(0)),e.tilesAvailabilityLoaded=new xm(e.tilingScheme,e.lodCount)),e.levelZeroMaximumGeometricError=Ss.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.tilingScheme.ellipsoid,e.width,e.tilingScheme.getNumberOfXTilesAtLevel(0)),t.bandCount>1&&console.log("ArcGISTiledElevationTerrainProvider: Terrain data has more than 1 band. Using the first one."),l(t.minValues)&&l(t.maxValues)?e.terrainDataStructure={elementMultiplier:1,lowestEncodedHeight:t.minValues[0],highestEncodedHeight:t.maxValues[0]}:e.terrainDataStructure={elementMultiplier:1}}async function Uwt(e,t,n){try{let i=await t.fetchJson();kwt(e,i)}catch(i){let o=`An error occurred while accessing ${t}.`;throw Qo.reportError(void 0,n,l(n)?n._errorEvent:void 0,o),i}}function bC(e){e=e??V.EMPTY_OBJECT,this._resource=void 0,this._credit=void 0,this._tilingScheme=void 0,this._levelZeroMaximumGeometricError=void 0,this._maxLevel=void 0,this._terrainDataStructure=void 0,this._width=void 0,this._height=void 0,this._encoding=void 0,this._lodCount=void 0,this._hasAvailability=!1,this._tilesAvailable=void 0,this._tilesAvailabilityLoaded=void 0,this._availableCache={},this._errorEvent=new _e}Object.defineProperties(bC.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){return this._tilesAvailable}}});bC.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT,e=await Promise.resolve(e);let n=we.createIfNeeded(e);n.appendForwardSlash(),l(t.token)&&(n=n.getDerivedResource({queryParameters:{token:t.token}}));let i=n.getDerivedResource({queryParameters:{f:"pjson"}}),o=new hSe(t);await Uwt(o,i);let r=new bC(t);return o.build(r),r._resource=n,r};bC.prototype.requestTileGeometry=function(e,t,n,i){let o=this._resource.getDerivedResource({url:`tile/${n}/${t}/${e}`,request:i}),r=this._hasAvailability,s=Promise.resolve(!0),a;if(r&&!l(t$(this,n+1,e*2,t*2))){let h=mSe(this,n+1,e*2,t*2);s=h.promise,a=h.request}let c=o.fetchArrayBuffer();if(!l(c)||!l(s))return;let u=this,f=this._tilesAvailable;return Promise.all([c,s]).then(function(h){return new Ec({buffer:h[0],width:u._width,height:u._height,childTileMask:r?f.computeChildMaskForTile(n,e,t):Qwt,structure:u._terrainDataStructure,encoding:u._encoding})}).catch(async function(h){if(l(a)&&a.state===fi.CANCELLED){i.cancel();try{await i.deferred?.promise}catch{}return i.state=fi.CANCELLED,Promise.reject(h)}return Promise.reject(h)})};function t$(e,t,n,i){if(!e._hasAvailability)return;let o=e._tilesAvailabilityLoaded,r=e._tilesAvailable;if(t>e._lodCount)return!1;if(r.isTileAvailable(t,n,i))return!0;if(o.isTileAvailable(t,n,i))return!1}bC.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};bC.prototype.getTileDataAvailable=function(e,t,n){if(!this._hasAvailability)return;let i=t$(this,n,e,t);if(l(i))return i;mSe(this,n,e,t)};bC.prototype.loadTileDataAvailability=function(e,t,n){};function Gwt(e,t,n,i){let o=t-1,r=n-1,s=i[e.y*t+e.x],a=[],c={startX:e.x,startY:e.y,endX:0,endY:0},u=new U(e.x+1,e.y+1),f=!1,h=!1;for(;!(f&&h);){let A=u.x,g=h?u.y+1:u.y;if(!f){for(let m=e.y;m<g;++m)if(i[m*t+u.x]!==s){f=!0;break}f?(a.push(new U(u.x,e.y)),--u.x,--A,c.endX=u.x):u.x===o?(c.endX=u.x,f=!0):++u.x}if(!h){let m=u.y*t;for(let _=e.x;_<=A;++_)if(i[m+_]!==s){h=!0;break}h?(a.push(new U(e.x,u.y)),--u.y,c.endY=u.y):u.y===r?(c.endY=u.y,h=!0):++u.y}}return{endingIndices:a,range:c,value:s}}function zwt(e,t,n,i,o){let r=[];if(o.every(function(c){return c===o[0]}))return o[0]===1&&r.push({startX:e,startY:t,endX:e+n-1,endY:t+i-1}),r;let a=[new U(0,0)];for(;a.length>0;){let c=a.pop(),u=Gwt(c,n,i,o);if(u.value===1){let h=u.range;h.startX+=e,h.endX+=e,h.startY+=t,h.endY+=t,r.push(h)}let f=u.endingIndices;f.length>0&&(a=a.concat(f))}return r}function mSe(e,t,n,i){if(!e._hasAvailability)return{};let o=Math.floor(n/128)*128,r=Math.floor(i/128)*128,s=Math.min(1<<t,128),a=`tilemap/${t}/${r}/${o}/${s}/${s}`,c=e._availableCache;if(l(c[a]))return c[a];let u=new sr({throttle:!1,throttleByServer:!0,type:Ms.TERRAIN}),h=e._resource.getDerivedResource({url:a,request:u}).fetchJson();return l(h)?(h=h.then(function(A){let g=zwt(o,r,s,s,A.data);e._tilesAvailabilityLoaded.addAvailableTileRange(t,o,r,o+s,r+s);let m=e._tilesAvailable;for(let _=0;_<g.length;++_){let y=g[_];m.addAvailableTileRange(t,y.startX,y.startY,y.endX,y.endY)}return t$(e,t,n,i)}),c[a]={promise:h,request:u},h=h.finally(function(A){return delete c[a],A}),{promise:h,request:u}):{}}var n$=bC;var ASe="https://dev.virtualearth.net/REST/v1/Locations";function i$(e){e=e??V.EMPTY_OBJECT;let t=e.key;this._key=t;let n={key:t};l(e.culture)&&(n.culture=e.culture),this._resource=new we({url:ASe,queryParameters:n}),this._credit=new Bt('<img src="http://dev.virtualearth.net/Branding/logo_powered_by.png"/>',!1)}Object.defineProperties(i$.prototype,{url:{get:function(){return ASe}},key:{get:function(){return this._key}},credit:{get:function(){return this._credit}}});i$.prototype.geocode=async function(e){return this._resource.getDerivedResource({queryParameters:{query:e}}).fetchJsonp("jsonp").then(function(n){return n.resourceSets.length===0?[]:n.resourceSets[0].resources.map(function(o){let r=o.bbox,s=r[0],a=r[1],c=r[2],u=r[3];return{displayName:o.name,destination:ae.fromDegrees(a,s,u,c)}})})};var o$=i$;function r$(){}Object.defineProperties(r$.prototype,{credit:{get:function(){}}});r$.prototype.geocode=function(e){let t=e.match(/[^\s,\n]+/g);if(t.length===2||t.length===3){let n=+t[0],i=+t[1],o=t.length===3?+t[2]:300;if(isNaN(n)&&isNaN(i)){let r=/^(\d+.?\d*)([nsew])/i;for(let s=0;s<t.length;++s){let a=t[s].match(r);r.test(t[s])&&a.length===3&&(/^[ns]/i.test(a[2])?i=/^[n]/i.test(a[2])?+a[1]:-a[1]:/^[ew]/i.test(a[2])&&(n=/^[e]/i.test(a[2])?+a[1]:-a[1]))}}if(!isNaN(n)&&!isNaN(i)&&!isNaN(o)){let r={displayName:e,destination:d.fromDegrees(n,i,o)};return Promise.resolve([r])}}return Promise.resolve([])};var s$=r$;var Vwt=new se,pSe=new d,zw=new d;function Hwt(e){let t=e.points,n=e.times;if(t.length<3){let i=n[0],o=1/(n[1]-i),r=t[0],s=t[1];return function(a,c){l(c)||(c=new d);let u=(a-i)*o;return d.lerp(r,s,u,c)}}return function(i,o){l(o)||(o=new d);let r=e._lastTimeIndex=e.findTimeInterval(i,e._lastTimeIndex),s=(i-n[r])/(n[r+1]-n[r]),a=Vwt;a.z=s,a.y=s*s,a.x=a.y*s,a.w=1;let c,u,f,h,A;return r===0?(c=t[0],u=t[1],f=e.firstTangent,h=d.subtract(t[2],c,pSe),d.multiplyByScalar(h,.5,h),A=N.multiplyByVector(cy.hermiteCoefficientMatrix,a,a)):r===t.length-2?(c=t[r],u=t[r+1],h=e.lastTangent,f=d.subtract(u,t[r-1],pSe),d.multiplyByScalar(f,.5,f),A=N.multiplyByVector(cy.hermiteCoefficientMatrix,a,a)):(c=t[r-1],u=t[r],f=t[r+1],h=t[r+2],A=N.multiplyByVector(TC.catmullRomCoefficientMatrix,a,a)),o=d.multiplyByScalar(c,A.x,o),d.multiplyByScalar(u,A.y,zw),d.add(o,zw,o),d.multiplyByScalar(f,A.z,zw),d.add(o,zw,o),d.multiplyByScalar(h,A.w,zw),d.add(o,zw,o)}}var Wwt=new d,jwt=new d;function TC(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times,i=e.firstTangent,o=e.lastTangent;if(t.length>2&&(l(i)||(i=Wwt,d.multiplyByScalar(t[1],2,i),d.subtract(i,t[2],i),d.subtract(i,t[0],i),d.multiplyByScalar(i,.5,i)),!l(o))){let r=t.length-1;o=jwt,d.multiplyByScalar(t[r-1],2,o),d.subtract(t[r],o,o),d.add(o,t[r-2],o),d.multiplyByScalar(o,.5,o)}this._times=n,this._points=t,this._firstTangent=d.clone(i),this._lastTangent=d.clone(o),this._evaluateFunction=Hwt(this),this._lastTimeIndex=0}Object.defineProperties(TC.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}},firstTangent:{get:function(){return this._firstTangent}},lastTangent:{get:function(){return this._lastTangent}}});TC.catmullRomCoefficientMatrix=new N(-.5,1,-.5,0,1.5,-2.5,0,1,-1.5,2,.5,0,.5,-.5,0,0);TC.prototype.findTimeInterval=_o.prototype.findTimeInterval;TC.prototype.wrapTime=_o.prototype.wrapTime;TC.prototype.clampTime=_o.prototype.clampTime;TC.prototype.evaluate=function(e,t){return this._evaluateFunction(e,t)};var a$=TC;var l5={};l5.clipTriangleAtAxisAlignedThreshold=function(e,t,n,i,o,r){l(r)?r.length=0:r=[];let s,a,c;t?(s=n<e,a=i<e,c=o<e):(s=n>e,a=i>e,c=o>e);let u=s+a+c,f,h,A,g,m,_;return u===1?s?(f=(e-n)/(i-n),h=(e-n)/(o-n),r.push(1),r.push(2),h!==1&&(r.push(-1),r.push(0),r.push(2),r.push(h)),f!==1&&(r.push(-1),r.push(0),r.push(1),r.push(f))):a?(A=(e-i)/(o-i),g=(e-i)/(n-i),r.push(2),r.push(0),g!==1&&(r.push(-1),r.push(1),r.push(0),r.push(g)),A!==1&&(r.push(-1),r.push(1),r.push(2),r.push(A))):c&&(m=(e-o)/(n-o),_=(e-o)/(i-o),r.push(0),r.push(1),_!==1&&(r.push(-1),r.push(2),r.push(1),r.push(_)),m!==1&&(r.push(-1),r.push(2),r.push(0),r.push(m))):u===2?!s&&n!==e?(g=(e-i)/(n-i),m=(e-o)/(n-o),r.push(0),r.push(-1),r.push(1),r.push(0),r.push(g),r.push(-1),r.push(2),r.push(0),r.push(m)):!a&&i!==e?(_=(e-o)/(i-o),f=(e-n)/(i-n),r.push(1),r.push(-1),r.push(2),r.push(1),r.push(_),r.push(-1),r.push(0),r.push(1),r.push(f)):!c&&o!==e&&(h=(e-n)/(o-n),A=(e-i)/(o-i),r.push(2),r.push(-1),r.push(0),r.push(2),r.push(h),r.push(-1),r.push(1),r.push(2),r.push(A)):u!==3&&(r.push(0),r.push(1),r.push(2)),r};l5.computeBarycentricCoordinates=function(e,t,n,i,o,r,s,a,c){let u=n-s,f=s-o,h=r-a,A=i-a,g=1/(h*u+f*A),m=t-a,_=e-s,y=(h*_+f*m)*g,C=(-A*_+u*m)*g,E=1-y-C;return l(c)?(c.x=y,c.y=C,c.z=E,c):new d(y,C,E)};l5.computeLineSegmentLineSegmentIntersection=function(e,t,n,i,o,r,s,a,c){let u=(s-o)*(t-r)-(a-r)*(e-o),f=(n-e)*(t-r)-(i-t)*(e-o),h=(a-r)*(n-e)-(s-o)*(i-t);if(h===0)return;let A=u/h,g=f/h;if(A>=0&&A<=1&&g>=0&&g<=1)return l(c)||(c=new U),c.x=e+A*(n-e),c.y=t+A*(i-t),c};var r_=l5;function SC(e){this._quantizedVertices=e.quantizedVertices,this._encodedNormals=e.encodedNormals,this._indices=e.indices,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._boundingSphere=e.boundingSphere,this._orientedBoundingBox=e.orientedBoundingBox,this._horizonOcclusionPoint=e.horizonOcclusionPoint,this._credits=e.credits;let t=this._quantizedVertices.length/3,n=this._uValues=this._quantizedVertices.subarray(0,t),i=this._vValues=this._quantizedVertices.subarray(t,2*t);this._heightValues=this._quantizedVertices.subarray(2*t,3*t);function o(s,a){return i[s]-i[a]}function r(s,a){return n[s]-n[a]}this._westIndices=f5(e.westIndices,o,t),this._southIndices=f5(e.southIndices,r,t),this._eastIndices=f5(e.eastIndices,o,t),this._northIndices=f5(e.northIndices,r,t),this._westSkirtHeight=e.westSkirtHeight,this._southSkirtHeight=e.southSkirtHeight,this._eastSkirtHeight=e.eastSkirtHeight,this._northSkirtHeight=e.northSkirtHeight,this._childTileMask=e.childTileMask??15,this._createdByUpsampling=e.createdByUpsampling??!1,this._waterMask=e.waterMask,this._mesh=void 0}Object.defineProperties(SC.prototype,{credits:{get:function(){return this._credits}},waterMask:{get:function(){return this._waterMask}},childTileMask:{get:function(){return this._childTileMask}},canUpsample:{get:function(){return l(this._mesh)}}});var u5=[];function f5(e,t,n){u5.length=e.length;let i=!1;for(let o=0,r=e.length;o<r;++o)u5[o]=e[o],i=i||o>0&&t(e[o-1],e[o])>0;return i?(u5.sort(t),Oe.createTypedArray(n,u5)):e}var gSe="createVerticesFromQuantizedTerrainMesh",Ywt=new di(gSe),qwt=new di(gSe,Am.maximumAsynchronousTasks);SC.prototype.createMesh=function(e){e=e??V.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid,u=t.tileXYToRectangle(n,i,o),h=(a?qwt:Ywt).scheduleTask({minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,quantizedVertices:this._quantizedVertices,octEncodedNormals:this._encodedNormals,includeWebMercatorT:!0,indices:this._indices,westIndices:this._westIndices,southIndices:this._southIndices,eastIndices:this._eastIndices,northIndices:this._northIndices,westSkirtHeight:this._westSkirtHeight,southSkirtHeight:this._southSkirtHeight,eastSkirtHeight:this._eastSkirtHeight,northSkirtHeight:this._northSkirtHeight,rectangle:u,relativeToCenter:this._boundingSphere.center,ellipsoid:c,exaggeration:r,exaggerationRelativeHeight:s});if(!l(h))return;let A=this;return Promise.resolve(h).then(function(g){let m=A._quantizedVertices.length/3,_=m+A._westIndices.length+A._southIndices.length+A._eastIndices.length+A._northIndices.length,y=Oe.createTypedArray(_,g.indices),C=new Float32Array(g.vertices),E=g.center,I=g.minimumHeight,b=g.maximumHeight,S=A._boundingSphere,B=A._orientedBoundingBox,v=d.clone(g.occludeePointInScaledSpace)??A._horizonOcclusionPoint,P=g.vertexStride,M=Zc.clone(g.encoding);return A._mesh=new Ud(E,C,y,g.indexCountWithoutSkirts,m,I,b,S,v,P,B,M,g.westIndicesSouthToNorth,g.southIndicesEastToWest,g.eastIndicesNorthToSouth,g.northIndicesWestToEast),A._quantizedVertices=void 0,A._encodedNormals=void 0,A._indices=void 0,A._uValues=void 0,A._vValues=void 0,A._heightValues=void 0,A._westIndices=void 0,A._southIndices=void 0,A._eastIndices=void 0,A._northIndices=void 0,A._mesh})};var Kwt=new di("upsampleQuantizedTerrainMesh",Am.maximumAsynchronousTasks);SC.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(this._mesh))return;let c=t*2!==o,u=n*2===r,f=e.ellipsoid,h=e.tileXYToRectangle(o,r,s),A=Kwt.scheduleTask({vertices:a.vertices,vertexCountWithoutSkirts:a.vertexCountWithoutSkirts,indices:a.indices,indexCountWithoutSkirts:a.indexCountWithoutSkirts,encoding:a.encoding,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:c,isNorthChild:u,childRectangle:h,ellipsoid:f});if(!l(A))return;let g=Math.min(this._westSkirtHeight,this._eastSkirtHeight);g=Math.min(g,this._southSkirtHeight),g=Math.min(g,this._northSkirtHeight);let m=c?g*.5:this._westSkirtHeight,_=u?g*.5:this._southSkirtHeight,y=c?this._eastSkirtHeight:g*.5,C=u?this._northSkirtHeight:g*.5,E=this._credits;return Promise.resolve(A).then(function(I){let b=new Uint16Array(I.vertices),S=Oe.createTypedArray(b.length/3,I.indices),B;return l(I.encodedNormals)&&(B=new Uint8Array(I.encodedNormals)),new SC({quantizedVertices:b,indices:S,encodedNormals:B,minimumHeight:I.minimumHeight,maximumHeight:I.maximumHeight,boundingSphere:le.clone(I.boundingSphere),orientedBoundingBox:Fn.clone(I.orientedBoundingBox),horizonOcclusionPoint:d.clone(I.horizonOcclusionPoint),westIndices:I.westIndices,southIndices:I.southIndices,eastIndices:I.eastIndices,northIndices:I.northIndices,westSkirtHeight:m,southSkirtHeight:_,eastSkirtHeight:y,northSkirtHeight:C,childTileMask:0,credits:E,createdByUpsampling:!0})})};var c$=32767,_Se=new d;SC.prototype.interpolateHeight=function(e,t,n){let i=D.clamp((t-e.west)/e.width,0,1);i*=c$;let o=D.clamp((n-e.south)/e.height,0,1);return o*=c$,l(this._mesh)?$wt(this,i,o):eBt(this,i,o)};function ySe(e,t,n,i,o,r,s,a){let c=Math.min(n,o,s),u=Math.max(n,o,s),f=Math.min(i,r,a),h=Math.max(i,r,a);return e>=c&&e<=u&&t>=f&&t<=h}var Xwt=new U,Jwt=new U,Zwt=new U;function $wt(e,t,n){let i=e._mesh,o=i.vertices,r=i.encoding,s=i.indices;for(let a=0,c=s.length;a<c;a+=3){let u=s[a],f=s[a+1],h=s[a+2],A=r.decodeTextureCoordinates(o,u,Xwt),g=r.decodeTextureCoordinates(o,f,Jwt),m=r.decodeTextureCoordinates(o,h,Zwt);if(ySe(t,n,A.x,A.y,g.x,g.y,m.x,m.y)){let _=r_.computeBarycentricCoordinates(t,n,A.x,A.y,g.x,g.y,m.x,m.y,_Se);if(_.x>=-1e-15&&_.y>=-1e-15&&_.z>=-1e-15){let y=r.decodeHeight(o,u),C=r.decodeHeight(o,f),E=r.decodeHeight(o,h);return _.x*y+_.y*C+_.z*E}}}}function eBt(e,t,n){let i=e._uValues,o=e._vValues,r=e._heightValues,s=e._indices;for(let a=0,c=s.length;a<c;a+=3){let u=s[a],f=s[a+1],h=s[a+2],A=i[u],g=i[f],m=i[h],_=o[u],y=o[f],C=o[h];if(ySe(t,n,A,_,g,y,m,C)){let E=r_.computeBarycentricCoordinates(t,n,A,_,g,y,m,C,_Se);if(E.x>=-1e-15&&E.y>=-1e-15&&E.z>=-1e-15){let I=E.x*r[u]+E.y*r[f]+E.z*r[h];return D.lerp(e._minimumHeight,e._maximumHeight,I/c$)}}}}SC.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};SC.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};var Ax=SC;function tBt(e){this.resource=e.resource,this.version=e.version,this.isHeightmap=e.isHeightmap,this.tileUrlTemplates=e.tileUrlTemplates,this.availability=e.availability,this.hasVertexNormals=e.hasVertexNormals,this.hasWaterMask=e.hasWaterMask,this.hasMetadata=e.hasMetadata,this.availabilityLevels=e.availabilityLevels,this.availabilityTilesLoaded=e.availabilityTilesLoaded,this.littleEndianExtensionSize=e.littleEndianExtensionSize,this.availabilityPromiseCache={}}function ESe(e){this.requestVertexNormals=e.requestVertexNormals??!1,this.requestWaterMask=e.requestWaterMask??!1,this.requestMetadata=e.requestMetadata??!0,this.ellipsoid=e.ellipsoid??te.default,this.heightmapWidth=65,this.heightmapStructure=void 0,this.hasWaterMask=!1,this.hasMetadata=!1,this.hasVertexNormals=!1,this.scheme=void 0,this.lastResource=void 0,this.layerJsonResource=void 0,this.previousError=void 0,this.availability=void 0,this.tilingScheme=void 0,this.levelZeroMaximumGeometricError=void 0,this.heightmapStructure=void 0,this.layers=[],this.attribution="",this.overallAvailability=[],this.overallMaxZoom=0,this.tileCredits=[]}ESe.prototype.build=function(e){e._heightmapWidth=this.heightmapWidth,e._scheme=this.scheme;let t=l(this.lastResource.credits)?this.lastResource.credits:[];e._tileCredits=t.concat(this.tileCredits),e._availability=this.availability,e._tilingScheme=this.tilingScheme,e._requestWaterMask=this.requestWaterMask,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._heightmapStructure=this.heightmapStructure,e._layers=this.layers,e._hasWaterMask=this.hasWaterMask,e._hasVertexNormals=this.hasVertexNormals,e._hasMetadata=this.hasMetadata};async function ISe(e,t,n){if(!t.format){let _="The tile format is not specified in the layer.json file.";throw e.previousError=Qo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}if(!t.tiles||t.tiles.length===0){let _="The layer.json file does not specify any tile URL templates.";throw e.previousError=Qo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}let i=!1,o=!1,r=!1,s=!0,a=!1;if(t.format==="heightmap-1.0")a=!0,l(e.heightmapStructure)||(e.heightmapStructure={heightScale:1/5,heightOffset:-1e3,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1,lowestEncodedHeight:0,highestEncodedHeight:256*256-1}),o=!0,e.requestWaterMask=!0;else if(t.format.indexOf("quantized-mesh-1.")!==0){let _=`The tile format "${t.format}" is invalid or not supported.`;throw e.previousError=Qo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}let c=t.tiles,u=t.maxzoom;if(e.overallMaxZoom=Math.max(e.overallMaxZoom,u),!t.projection||t.projection==="EPSG:4326")e.tilingScheme=new so({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});else if(t.projection==="EPSG:3857")e.tilingScheme=new Ts({numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});else{let _=`The projection "${t.projection}" is invalid or not supported.`;throw e.previousError=Qo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}if(e.levelZeroMaximumGeometricError=Ss.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.tilingScheme.ellipsoid,e.heightmapWidth,e.tilingScheme.getNumberOfXTilesAtLevel(0)),!t.scheme||t.scheme==="tms"||t.scheme==="slippyMap")e.scheme=t.scheme;else{let _=`The scheme "${t.scheme}" is invalid or not supported.`;throw e.previousError=Qo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}let f;l(t.extensions)&&t.extensions.indexOf("octvertexnormals")!==-1?i=!0:l(t.extensions)&&t.extensions.indexOf("vertexnormals")!==-1&&(i=!0,s=!1),l(t.extensions)&&t.extensions.indexOf("watermask")!==-1&&(o=!0),l(t.extensions)&&t.extensions.indexOf("metadata")!==-1&&(r=!0);let h=t.metadataAvailability,A=t.available,g;if(l(A)&&!l(h)){g=new xm(e.tilingScheme,A.length);for(let _=0;_<A.length;++_){let y=A[_],C=e.tilingScheme.getNumberOfYTilesAtLevel(_);l(e.overallAvailability[_])||(e.overallAvailability[_]=[]);for(let E=0;E<y.length;++E){let I=y[E],b=C-I.endY-1,S=C-I.startY-1;e.overallAvailability[_].push([I.startX,b,I.endX,S]),g.addAvailableTileRange(_,I.startX,b,I.endX,S)}}}else l(h)&&(f=new xm(e.tilingScheme,u),g=new xm(e.tilingScheme,u),e.overallAvailability[0]=[[0,0,1,0]],g.addAvailableTileRange(0,0,0,1,0));e.hasWaterMask=e.hasWaterMask||o,e.hasVertexNormals=e.hasVertexNormals||i,e.hasMetadata=e.hasMetadata||r,l(t.attribution)&&(e.attribution.length>0&&(e.attribution+=" "),e.attribution+=t.attribution),e.layers.push(new tBt({resource:e.lastResource,version:t.version,isHeightmap:a,tileUrlTemplates:c,availability:g,hasVertexNormals:i,hasWaterMask:o,hasMetadata:r,availabilityLevels:h,availabilityTilesLoaded:f,littleEndianExtensionSize:s}));let m=t.parentUrl;return l(m)?l(g)?(e.lastResource=e.lastResource.getDerivedResource({url:m}),e.lastResource.appendForwardSlash(),e.layerJsonResource=e.lastResource.getDerivedResource({url:"layer.json"}),await f$(e),!0):(console.log("A layer.json can't have a parentUrl if it does't have an available array."),!0):!0}function nBt(e,t,n){let i=`An error occurred while accessing ${e.layerJsonResource.url}.`;if(l(t)&&(i+=` +${t.message}`),e.previousError=Qo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,i),e.previousError.retry)return f$(e,n);throw new ce(i)}async function iBt(e,t,n){await ISe(e,t,n);let i=e.overallAvailability.length;if(i>0){let o=e.availability=new xm(e.tilingScheme,e.overallMaxZoom);for(let r=0;r<i;++r){let s=e.overallAvailability[r];for(let a=0;a<s.length;++a){let c=s[a];o.addAvailableTileRange(r,c[0],c[1],c[2],c[3])}}}if(e.attribution.length>0){let o=new Bt(e.attribution);e.tileCredits.push(o)}return!0}async function f$(e,t){try{let n=await e.layerJsonResource.fetchJson();return iBt(e,n,t)}catch(n){return l(n)&&n.statusCode===404?(await ISe(e,{tilejson:"2.1.0",format:"heightmap-1.0",version:"1.0.0",scheme:"tms",tiles:["{z}/{x}/{y}.terrain?v={version}"]},t),!0):nBt(e,n,t)}}function bm(e){e=e??V.EMPTY_OBJECT,this._heightmapWidth=void 0,this._heightmapStructure=void 0,this._hasWaterMask=!1,this._hasVertexNormals=!1,this._hasMetadata=!1,this._scheme=void 0,this._ellipsoid=e.ellipsoid,this._requestVertexNormals=e.requestVertexNormals??!1,this._requestWaterMask=e.requestWaterMask??!1,this._requestMetadata=e.requestMetadata??!0,this._errorEvent=new _e;let t=e.credit;typeof t=="string"&&(t=new Bt(t)),this._credit=t,this._availability=void 0,this._tilingScheme=void 0,this._levelZeroMaximumGeometricError=void 0,this._layers=void 0,this._tileCredits=void 0}var l$={OCT_VERTEX_NORMALS:1,WATER_MASK:2,METADATA:4};function CSe(e){return!l(e)||e.length===0?{Accept:"application/vnd.quantized-mesh,application/octet-stream;q=0.9,*/*;q=0.01"}:{Accept:`application/vnd.quantized-mesh;extensions=${e.join("-")},application/octet-stream;q=0.9,*/*;q=0.01`}}function oBt(e,t,n,i,o){let r=new Uint16Array(t,0,e._heightmapWidth*e._heightmapWidth);return new Ec({buffer:r,childTileMask:new Uint8Array(t,r.byteLength,1)[0],waterMask:new Uint8Array(t,r.byteLength+1,t.byteLength-r.byteLength-1),width:e._heightmapWidth,height:e._heightmapWidth,structure:e._heightmapStructure,credits:e._tileCredits})}function rBt(e,t,n,i,o,r){let s=r.littleEndianExtensionSize,a=0,c=3,u=c+1,f=Float64Array.BYTES_PER_ELEMENT*c,h=Float64Array.BYTES_PER_ELEMENT*u,g=Uint16Array.BYTES_PER_ELEMENT*3,m=3,_=Uint16Array.BYTES_PER_ELEMENT,y=_*m,C=new DataView(t),E=new d(C.getFloat64(a,!0),C.getFloat64(a+8,!0),C.getFloat64(a+16,!0));a+=f;let I=C.getFloat32(a,!0);a+=Float32Array.BYTES_PER_ELEMENT;let b=C.getFloat32(a,!0);a+=Float32Array.BYTES_PER_ELEMENT;let S=new le(new d(C.getFloat64(a,!0),C.getFloat64(a+8,!0),C.getFloat64(a+16,!0)),C.getFloat64(a+f,!0));a+=h;let B=new d(C.getFloat64(a,!0),C.getFloat64(a+8,!0),C.getFloat64(a+16,!0));a+=f;let v=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let P=new Uint16Array(t,a,v*3);a+=v*g,v>64*1024&&(_=Uint32Array.BYTES_PER_ELEMENT,y=_*m);let M=P.subarray(0,v),L=P.subarray(v,2*v),p=P.subarray(v*2,3*v);On.zigZagDeltaDecode(M,L,p),a%_!==0&&(a+=_-a%_);let x=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let T=Oe.createTypedArrayFromArrayBuffer(v,t,a,x*m);a+=x*y;let w=0,R=T.length;for(let fe=0;fe<R;++fe){let ye=T[fe];T[fe]=w-ye,ye===0&&++w}let O=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let k=Oe.createTypedArrayFromArrayBuffer(v,t,a,O);a+=O*_;let Q=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let z=Oe.createTypedArrayFromArrayBuffer(v,t,a,Q);a+=Q*_;let F=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let H=Oe.createTypedArrayFromArrayBuffer(v,t,a,F);a+=F*_;let W=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let Z=Oe.createTypedArrayFromArrayBuffer(v,t,a,W);a+=W*_;let Y,$;for(;a<C.byteLength;){let fe=C.getUint8(a,!0);a+=Uint8Array.BYTES_PER_ELEMENT;let ye=C.getUint32(a,s);if(a+=Uint32Array.BYTES_PER_ELEMENT,fe===l$.OCT_VERTEX_NORMALS&&e._requestVertexNormals)Y=new Uint8Array(t,a,v*2);else if(fe===l$.WATER_MASK&&e._requestWaterMask)$=new Uint8Array(t,a,ye);else if(fe===l$.METADATA&&e._requestMetadata){let xe=C.getUint32(a,!0);if(xe>0){let Te=dr(new Uint8Array(t),a+Uint32Array.BYTES_PER_ELEMENT,xe).available;if(l(Te))for(let ke=0;ke<Te.length;++ke){let Ge=n+ke+1,Ke=Te[ke],tt=e._tilingScheme.getNumberOfYTilesAtLevel(Ge);for(let en=0;en<Ke.length;++en){let it=Ke[en],nn=tt-it.endY-1,qt=tt-it.startY-1;e.availability.addAvailableTileRange(Ge,it.startX,nn,it.endX,qt),r.availability.addAvailableTileRange(Ge,it.startX,nn,it.endX,qt)}}}r.availabilityTilesLoaded.addAvailableTileRange(n,i,o,i,o)}a+=ye}let X=e.getLevelMaximumGeometricError(n)*5,he=e._tilingScheme.tileXYToRectangle(i,o,n),ge=Fn.fromRectangle(he,I,b,e._tilingScheme.ellipsoid);return new Ax({center:E,minimumHeight:I,maximumHeight:b,boundingSphere:S,orientedBoundingBox:ge,horizonOcclusionPoint:B,quantizedVertices:P,encodedNormals:Y,indices:T,westIndices:k,southIndices:z,eastIndices:H,northIndices:Z,westSkirtHeight:X,southSkirtHeight:X,eastSkirtHeight:X,northSkirtHeight:X,childTileMask:e.availability.computeChildMaskForTile(n,i,o),waterMask:$,credits:e._tileCredits})}bm.prototype.requestTileGeometry=function(e,t,n,i){let o=this._layers,r,s=o.length,a=!1,c=Promise.resolve();if(s===1)r=o[0];else for(let u=0;u<s;++u){let f=o[u];if(!l(f.availability)||f.availability.isTileAvailable(n,e,t)){r=f;break}let h=d$(this,e,t,n,f,u===0);h.result&&(a=!0,c=c.then(()=>h.promise))}return!l(r)&&a?c.then(()=>new Promise(u=>{setTimeout(()=>{let f=this.requestTileGeometry(e,t,n,i);u(f)},0)})):xSe(this,e,t,n,r,i)};function xSe(e,t,n,i,o,r){if(!l(o))return Promise.reject(new ce("Terrain tile doesn't exist"));let s=o.tileUrlTemplates;if(s.length===0)return;let a;!e._scheme||e._scheme==="tms"?a=e._tilingScheme.getNumberOfYTilesAtLevel(i)-n-1:a=n;let c=[];e._requestVertexNormals&&o.hasVertexNormals&&c.push(o.littleEndianExtensionSize?"octvertexnormals":"vertexnormals"),e._requestWaterMask&&o.hasWaterMask&&c.push("watermask"),e._requestMetadata&&o.hasMetadata&&c.push("metadata");let u,f,h=s[(t+a+i)%s.length],A=o.resource;l(A._ionEndpoint)&&!l(A._ionEndpoint.externalType)?(c.length!==0&&(f={extensions:c.join("-")}),u=CSe(void 0)):u=CSe(c);let g=A.getDerivedResource({url:h,templateValues:{version:o.version,z:i,x:t,y:a},queryParameters:f,headers:u,request:r}).fetchArrayBuffer();if(l(g))return g.then(function(m){return l(m)?l(e._heightmapStructure)?oBt(e,m,i,t,n):rBt(e,m,i,t,n,o):Promise.reject(new ce("Mesh buffer doesn't exist."))})}Object.defineProperties(bm.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return this._hasWaterMask&&this._requestWaterMask}},hasVertexNormals:{get:function(){return this._hasVertexNormals&&this._requestVertexNormals}},hasMetadata:{get:function(){return this._hasMetadata&&this._requestMetadata}},requestVertexNormals:{get:function(){return this._requestVertexNormals}},requestWaterMask:{get:function(){return this._requestWaterMask}},requestMetadata:{get:function(){return this._requestMetadata}},availability:{get:function(){return this._availability}}});bm.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};bm.fromIonAssetId=async function(e,t){let n=await Hu.fromAssetId(e);return bm.fromUrl(n,t)};bm.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT,e=await Promise.resolve(e);let n=we.createIfNeeded(e);n.appendForwardSlash();let i=new ESe(t);i.lastResource=n,i.layerJsonResource=i.lastResource.getDerivedResource({url:"layer.json"}),await f$(i);let o=new bm(t);return i.build(o),o};bm.prototype.getTileDataAvailable=function(e,t,n){if(!l(this._availability))return;if(n>this._availability._maximumLevel)return!1;if(this._availability.isTileAvailable(n,e,t))return!0;if(!this._hasMetadata)return!1;let i=this._layers,o=i.length;for(let r=0;r<o;++r)if(d$(this,e,t,n,i[r],r===0).result)return;return!1};bm.prototype.loadTileDataAvailability=function(e,t,n){if(!l(this._availability)||n>this._availability._maximumLevel||this._availability.isTileAvailable(n,e,t)||!this._hasMetadata)return;let i=this._layers,o=i.length;for(let r=0;r<o;++r){let s=d$(this,e,t,n,i[r],r===0);if(l(s.promise))return s.promise}};function u$(e,t,n,i){if(i===0)return;let o=e.availabilityLevels,r=i%o===0?i-o:(i/o|0)*o,s=1<<i-r,a=t/s|0,c=n/s|0;return{level:r,x:a,y:c}}function d$(e,t,n,i,o,r){if(!l(o.availabilityLevels))return{result:!1};let s,a=function(){delete o.availabilityPromiseCache[s]},c=o.availabilityTilesLoaded,u=o.availability,f=u$(o,t,n,i);for(;l(f);){if(u.isTileAvailable(f.level,f.x,f.y)&&!c.isTileAvailable(f.level,f.x,f.y)){let h;if(!r&&(s=`${f.level}-${f.x}-${f.y}`,h=o.availabilityPromiseCache[s],!l(h))){let A=new sr({throttle:!1,throttleByServer:!0,type:Ms.TERRAIN});h=xSe(e,f.x,f.y,f.level,o,A),l(h)&&(o.availabilityPromiseCache[s]=h,h.then(a))}return{result:!0,promise:h}}f=u$(o,f.x,f.y,f.level)}return{result:!1}}bm._getAvailabilityTile=u$;var px=bm;function s_(e){e=e??V.EMPTY_OBJECT;let t=e.radius,n={center:e.center,semiMajorAxis:t,semiMinorAxis:t,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,vertexFormat:e.vertexFormat,stRotation:e.stRotation,shadowVolume:e.shadowVolume};this._ellipseGeometry=new kl(n),this._workerName="createCircleGeometry"}s_.packedLength=kl.packedLength;s_.pack=function(e,t,n){return kl.pack(e._ellipseGeometry,t,n)};var bSe=new kl({center:new d,semiMajorAxis:1,semiMinorAxis:1}),xc={center:new d,radius:void 0,ellipsoid:te.clone(te.default),height:void 0,extrudedHeight:void 0,granularity:void 0,vertexFormat:new Pe,stRotation:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0,shadowVolume:void 0};s_.unpack=function(e,t,n){let i=kl.unpack(e,t,bSe);return xc.center=d.clone(i._center,xc.center),xc.ellipsoid=te.clone(i._ellipsoid,xc.ellipsoid),xc.ellipsoid=te.clone(i._ellipsoid,bSe._ellipsoid),xc.height=i._height,xc.extrudedHeight=i._extrudedHeight,xc.granularity=i._granularity,xc.vertexFormat=Pe.clone(i._vertexFormat,xc.vertexFormat),xc.stRotation=i._stRotation,xc.shadowVolume=i._shadowVolume,l(n)?(xc.semiMajorAxis=i._semiMajorAxis,xc.semiMinorAxis=i._semiMinorAxis,n._ellipseGeometry=new kl(xc),n):(xc.radius=i._semiMajorAxis,new s_(xc))};s_.createGeometry=function(e){return kl.createGeometry(e._ellipseGeometry)};s_.createShadowVolume=function(e,t,n){let i=e._ellipseGeometry._granularity,o=e._ellipseGeometry._ellipsoid,r=t(i,o),s=n(i,o);return new s_({center:e._ellipseGeometry._center,radius:e._ellipseGeometry._semiMajorAxis,ellipsoid:o,stRotation:e._ellipseGeometry._stRotation,granularity:i,extrudedHeight:r,height:s,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(s_.prototype,{rectangle:{get:function(){return this._ellipseGeometry.rectangle}},textureCoordinateRotationPoints:{get:function(){return this._ellipseGeometry.textureCoordinateRotationPoints}}});var h$=s_;function Vw(e){e=e??V.EMPTY_OBJECT;let t=e.radius,n={center:e.center,semiMajorAxis:t,semiMinorAxis:t,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,numberOfVerticalLines:e.numberOfVerticalLines};this._ellipseGeometry=new Af(n),this._workerName="createCircleOutlineGeometry"}Vw.packedLength=Af.packedLength;Vw.pack=function(e,t,n){return Af.pack(e._ellipseGeometry,t,n)};var sBt=new Af({center:new d,semiMajorAxis:1,semiMinorAxis:1}),Lf={center:new d,radius:void 0,ellipsoid:te.clone(te.UNIT_SPHERE),height:void 0,extrudedHeight:void 0,granularity:void 0,numberOfVerticalLines:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0};Vw.unpack=function(e,t,n){let i=Af.unpack(e,t,sBt);return Lf.center=d.clone(i._center,Lf.center),Lf.ellipsoid=te.clone(i._ellipsoid,Lf.ellipsoid),Lf.height=i._height,Lf.extrudedHeight=i._extrudedHeight,Lf.granularity=i._granularity,Lf.numberOfVerticalLines=i._numberOfVerticalLines,l(n)?(Lf.semiMajorAxis=i._semiMajorAxis,Lf.semiMinorAxis=i._semiMinorAxis,n._ellipseGeometry=new Af(Lf),n):(Lf.radius=i._semiMajorAxis,new Vw(Lf))};Vw.createGeometry=function(e){return Af.createGeometry(e._ellipseGeometry)};var m$=Vw;function Hw(e){e=e??V.EMPTY_OBJECT,this._callback=e.callback,this._tilingScheme=e.tilingScheme,l(this._tilingScheme)||(this._tilingScheme=new so({ellipsoid:e.ellipsoid??te.default})),this._width=e.width,this._height=e.height;let t=Math.max(this._width,this._height);this._levelZeroMaximumGeometricError=Ss.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,t,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._errorEvent=new _e;let n=e.credit;typeof n=="string"&&(n=new Bt(n)),this._credit=n}Object.defineProperties(Hw.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});Hw.prototype.requestTileGeometry=function(e,t,n,i){let o=this._callback(e,t,n);if(!l(o))return;let r=this._width,s=this._height;return Promise.resolve(o).then(function(a){let c=a;return Array.isArray(c)&&(c=new Float64Array(c)),new Ec({buffer:c,width:r,height:s})})};Hw.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};Hw.prototype.getTileDataAvailable=function(e,t,n){};Hw.prototype.loadTileDataAvailability=function(e,t,n){};var A$=Hw;function TSe(e){this.proxy=e}TSe.prototype.getURL=function(e){let t=this.proxy.indexOf("?")===-1?"?":"";return this.proxy+t+encodeURIComponent(e)};var p$=TSe;var aBt={SEARCH:0,AUTOCOMPLETE:1},wC=Object.freeze(aBt);function d5(){me.throwInstantiationError()}Object.defineProperties(d5.prototype,{credit:{get:me.throwInstantiationError}});d5.getCreditsFromResult=function(e){if(l(e.attributions))return e.attributions.map(Bt.getIonCredit)};d5.prototype.geocode=me.throwInstantiationError;var Ww=d5;function SSe(){me.throwInstantiationError()}SSe.createGeometry=function(e){me.throwInstantiationError()};var g$=SSe;var hBt=xr(_$(),1);function cBt(e,t){return(e&t)!==0}var il=cBt;var lBt=[1,2,4,8],wSe=15,uBt=16,fBt=64,dBt=128;function zA(e,t,n,i,o,r){this._bits=e,this.cnodeVersion=t,this.imageryVersion=n,this.terrainVersion=i,this.imageryProvider=o,this.terrainProvider=r,this.ancestorHasTerrain=!1,this.terrainState=void 0}zA.clone=function(e,t){return l(t)?(t._bits=e._bits,t.cnodeVersion=e.cnodeVersion,t.imageryVersion=e.imageryVersion,t.terrainVersion=e.terrainVersion,t.imageryProvider=e.imageryProvider,t.terrainProvider=e.terrainProvider):t=new zA(e._bits,e.cnodeVersion,e.imageryVersion,e.terrainVersion,e.imageryProvider,e.terrainProvider),t.ancestorHasTerrain=e.ancestorHasTerrain,t.terrainState=e.terrainState,t};zA.prototype.setParent=function(e){this.ancestorHasTerrain=e.ancestorHasTerrain||this.hasTerrain()};zA.prototype.hasSubtree=function(){return il(this._bits,uBt)};zA.prototype.hasImagery=function(){return il(this._bits,fBt)};zA.prototype.hasTerrain=function(){return il(this._bits,dBt)};zA.prototype.hasChildren=function(){return il(this._bits,wSe)};zA.prototype.hasChild=function(e){return il(this._bits,lBt[e])};zA.prototype.getChildBitmask=function(){return this._bits&wSe};var m3=zA;function mBt(e){let t=e.length,n=new ArrayBuffer(t),i=new Uint8Array(n);for(let o=0;o<t;++o)i[o]=e.charCodeAt(o);return n}var ABt=mBt(`E\xF4\xBD\vy\xE2jE"\x92,\xCDq\xF8IFgQ\0B%\xC6\xE8a,f)\b\xC64\xDCjb%y +wmi\xD6\xF0\x9Ck\x93\xA1\xBDNu\xE0A[\xDF@V\f\xD9\xBBr\x9B\x81|3S\xEEOl\xD4q\xB0{\xC0\x7FEVZ\xADwUe\v3\x92*\xACl5\xC50s\xF83>mF8J\xB4\xDD\xF0.\xDDu\xDA\x8CDt"\xFAa"\f3"So\xAF9D\v\x8C9\xD99L\xB9\xBF\x7F\xAB\\\x8CP_\x9F"ux\xE9\x07q\x91h;\xC1\xC4\x9B\x7F\xF0<VqH\x82'UfYNe\x98u\xA3aF}a?A\0\x9F\xD7\xB44M\xCE\x87F\xB0\xD5\xB8\x8A'{\x8B\xDC+\xBBMg0\xC8\xD1\xF6\\\x8FP\xFA[/F\x9Bn5/'C.\xEB +\f^\xA5s\x1Be4\xE5l.jC'c#U\xA9?q{gC}:\xAF\xCD\xE2TU\x9C\xFDK\xC6\xE2\x9F/(\xED\xCB\\\xC6-f\x07\x88\xA7;/*"N\xB0k.\xDD\r\x95}}G\xBAC\xB2\xB2+>M\xAA>}\xE6\xCEI\x89\xC6\xE6x\fa1-\xA4O\xA5~q \x88\xEC\r1\xE8N\v\0nPh}=\b\r\x95\xA6n\xA3h\x97$[k\xF3#\xF3\xB6s\xB3\r\v@\xC0\x9F\xD8Q]\xFA".j\xDFI\0\xB9\xA0wU\xC6\xEFj\xBF{GL\x7F\x83\xEE\xDC\xDCF\x85\xA9\xADS\x07+S4\x07\xFF\x94Y\xE48\xE81\x83N\xB9XFk\xCB-#\x86\x92p\x005\x88"\xCF1\xB2&/\xE7\xC3u-6,rt\xB0#G\xB7\xD3\xD1&\x857r\xE2\0\x8CD\xCF\xDA3-\xDE\`\x86i#i*|\xCDKQ\r\x95T9w.)\xEA\x1B\xA6P\xA2j\x8FoP\x99\\>T\xFB\xEFP[\v\x07E\x89m(w7\xDB\x8EJfJo\x99 \xE5p\xE2\xB9q~\fmI-z\xFEr\xC7\xF2Y0\x8F\xBB]s\xE5\xC9 \xEAx\xEC \x90\xF0\x8A\x7FB|G\`\xB0\xBD&\xB7q\xB6\xC7\x9F\xD13\x82=\xD3\xAB\xEEc\x99\xC8+S\xA0D\\q\xC6\xCCD2O<\xCA\xC0)=R\xD3aX\xA9}e\xB4\xDC\xCF\r\xF4=\xF1\b\xA9B\xDA# \xD8\xBF^PI\xF8M\xC0\xCBGLO\xF7{+\xD8\xC51\x92;\xB5o\xDCl\r\x92\x88\xD1\x9E\xDB?\xE2\xE9\xDA_\xD4\x84\xE2FaZ\xDEU\xCF\xA4\0\xBE\xFD\xCEg\xF1Ji\x97\xE6 H\xD8]\x7F~\xAEq N\xAE\xC0V\xA9\x91<\x82r\xE7v\xEC)I\xD6]-\x83\xE3\xDB6\xA9;f\x97\x87j\xD5\xB6=P^R\xB9K\xC7sWx\xC9\xF4.Y\x07\x95\x93o\xD0KW>''\xC7\`\xDB;\xED\x9ASD>?\x8D\x92mw\xA2 +\xEB?R\xA8\xC6U^1I7\x85\xF4\xC5&-\xA9\xBF\x8B'T\xDA\xC3j \xE5*x\xB0\xD6\x90pr\xAA\x8Bh\xBD\x88\xF7_H\xB1~\xC0XL?f\xF9>\xE1e\xC0p\xA7\xCF8i\xAF\xF0VldI\x9C'\xADxtO\xC2\x87\xDEV9\0\xDAw\v\xCB-\x1B\x89\xFB5O\xF5\bQ\`\xC1 +ZGM&30x\xDA\xC0\x9CFG\xE2[y\`In7gS +>\xE9\xECF9\xB2\xF14\r\xC6\x84Sun\xE1\fY\xD9\xDE)\x85{II\xA5wy\xBEIV.6\xE7\v:\xBBOb{\xD2M1\x95/\xBD8{\xA8O!\xE1\xECFpv\x95})"x\x88 +\x90\xDD\x9D\\\xDA\xDEQ\xCF\xF0\xFCYRe|3\xDF\xF3H\xDA\xBB*u\xDB\`\xB2\xD4\xFC\xED\x1B\xEC\x7F5\xA8\xFF(1\x07-\xC8\xDC\x88F|\x8A["`);function Of(e){this.imageryPresent=!0,this.protoImagery=void 0,this.terrainPresent=!0,this.negativeAltitudeExponentBias=32,this.negativeAltitudeThreshold=D.EPSILON12,this.providers={},this.key=void 0,this._resource=void 0,this._quadPacketVersion=1,this._tileInfo={},this._subtreePromises={}}Object.defineProperties(Of.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},resource:{get:function(){return this._resource}}});Of.fromUrl=async function(e){let t=e;typeof t!="string"&&!(t instanceof we)&&(t=e.url);let n=we.createIfNeeded(t);n.appendForwardSlash();let i=new Of;i._resource=n;try{await pBt(i),await i.getQuadTreePacket("",i._quadPacketVersion)}catch(o){let r=`An error occurred while accessing ${DSe(i,"",1).url}: ${o}`;throw new ce(r)}return i};Of.tileXYToQuadKey=function(e,t,n){let i="";for(let o=n;o>=0;--o){let r=1<<o,s=0;il(t,r)?il(e,r)&&(s|=1):(s|=2,il(e,r)||(s|=1)),i+=s}return i};Of.quadKeyToTileXY=function(e){let t=0,n=0,i=e.length-1;for(let o=i;o>=0;--o){let r=1<<o,s=+e[i-o];il(s,2)?il(s,1)||(t|=r):(n|=r,il(s,1)&&(t|=r))}return{x:t,y:n,level:i}};Of.prototype.isValid=function(e){let t=this.getTileInformationFromQuadKey(e);if(l(t))return t!==null;let n=!0,i=e,o;for(;i.length>1;)if(o=i.substring(i.length-1),i=i.substring(0,i.length-1),t=this.getTileInformationFromQuadKey(i),l(t)){!t.hasSubtree()&&!t.hasChild(parseInt(o))&&(n=!1);break}else if(t===null){n=!1;break}return n};var BSe=new di("decodeGoogleEarthEnterprisePacket");Of.prototype.getQuadTreePacket=function(e,t,n){t=t??1,e=e??"";let o=DSe(this,e,t,n).fetchArrayBuffer();if(!l(o))return;let r=this._tileInfo,s=this.key;return o.then(function(a){return BSe.scheduleTask({buffer:a,quadKey:e,type:"Metadata",key:s},[a]).then(function(u){let f,h=-1;if(e!==""){h=e.length+1;let m=u[e];f=r[e],f._bits|=m._bits,delete u[e]}let A=Object.keys(u);A.sort(function(m,_){return m.length-_.length});let g=A.length;for(let m=0;m<g;++m){let _=A[m];if(u[_]!==null){let C=m3.clone(u[_]),E=_.length;if(E===h)C.setParent(f);else if(E>1){let I=r[_.substring(0,_.length-1)];C.setParent(I)}r[_]=C}else r[_]=null}})})};Of.prototype.populateSubtree=function(e,t,n,i){let o=Of.tileXYToQuadKey(e,t,n);return E$(this,o,i)};function E$(e,t,n){let i=e._tileInfo,o=t,r=i[o];if(l(r)&&(!r.hasSubtree()||r.hasChildren()))return r;for(;r===void 0&&o.length>1;)o=o.substring(0,o.length-1),r=i[o];let s,a=e._subtreePromises,c=a[o];if(l(c))return c.then(function(){return s=new sr({throttle:n.throttle,throttleByServer:n.throttleByServer,type:n.type,priorityFunction:n.priorityFunction}),E$(e,t,s)});if(!l(r)||!r.hasSubtree())return Promise.reject(new ce(`Couldn't load metadata for tile ${t}`));if(c=e.getQuadTreePacket(o,r.cnodeVersion,n),!!l(c))return a[o]=c,c.then(function(){return s=new sr({throttle:n.throttle,throttleByServer:n.throttleByServer,type:n.type,priorityFunction:n.priorityFunction}),E$(e,t,s)}).finally(function(){delete a[o]})}Of.prototype.getTileInformation=function(e,t,n){let i=Of.tileXYToQuadKey(e,t,n);return this._tileInfo[i]};Of.prototype.getTileInformationFromQuadKey=function(e){return this._tileInfo[e]};function DSe(e,t,n,i){return e._resource.getDerivedResource({url:`flatfile?q2-0${t}-q.${n.toString()}`,request:i})}var y$,C$;function pBt(e){let t=e._resource.getDerivedResource({url:"dbRoot.v5",queryParameters:{output:"proto"}});if(!l(C$)){let n=fn("ThirdParty/google-earth-dbroot-parser.js"),i=window.cesiumGoogleEarthDbRootParser;C$=zC(n).then(function(){y$=window.cesiumGoogleEarthDbRootParser(hBt),l(i)?window.cesiumGoogleEarthDbRootParser=i:delete window.cesiumGoogleEarthDbRootParser})}return C$.then(function(){return t.fetchArrayBuffer()}).then(function(n){let i=y$.EncryptedDbRootProto.decode(new Uint8Array(n)),o=i.encryptionData,r=o.byteOffset,s=r+o.byteLength,a=e.key=o.buffer.slice(r,s);o=i.dbrootData,r=o.byteOffset,s=r+o.byteLength;let c=o.buffer.slice(r,s);return BSe.scheduleTask({buffer:c,type:"DbRoot",key:a},[c])}).then(function(n){let i=y$.DbRootProto.decode(new Uint8Array(n.buffer));if(e.imageryPresent=i.imageryPresent??e.imageryPresent,e.protoImagery=i.protoImagery,e.terrainPresent=i.terrainPresent??e.terrainPresent,l(i.endSnippet)&&l(i.endSnippet.model)){let a=i.endSnippet.model;e.negativeAltitudeExponentBias=a.negativeAltitudeExponentBias??e.negativeAltitudeExponentBias,e.negativeAltitudeThreshold=a.compressedNegativeAltitudeThreshold??e.negativeAltitudeThreshold}l(i.databaseVersion)&&(e._quadPacketVersion=i.databaseVersion.quadtreeVersion??e._quadPacketVersion);let o=e.providers,r=i.providerInfo??[],s=r.length;for(let a=0;a<s;++a){let c=r[a],u=c.copyrightString;l(u)&&(o[c.providerId]=new Bt(u.value))}}).catch(function(){console.log(`Failed to retrieve ${t.url}. Using defaults.`),e.key=ABt})}var a_=Of;function gx(e){e=e??V.EMPTY_OBJECT,this._buffer=e.buffer,this._credits=e.credits,this._negativeAltitudeExponentBias=e.negativeAltitudeExponentBias,this._negativeElevationThreshold=e.negativeElevationThreshold;let t=e.childTileMask??15,n=t&3;n|=t&4?8:0,n|=t&8?4:0,this._childTileMask=n,this._createdByUpsampling=e.createdByUpsampling??!1,this._skirtHeight=void 0,this._bufferType=this._buffer.constructor,this._mesh=void 0,this._minimumHeight=void 0,this._maximumHeight=void 0}Object.defineProperties(gx.prototype,{credits:{get:function(){return this._credits}},waterMask:{get:function(){}}});var RSe="createVerticesFromGoogleEarthEnterpriseBuffer",gBt=new di(RSe),_Bt=new di(RSe,Am.maximumAsynchronousTasks),vSe=new ae,I$=new ae;gx.prototype.createMesh=function(e){e=e??V.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid;t.tileXYToNativeRectangle(n,i,o,vSe),t.tileXYToRectangle(n,i,o,I$);let u=c.cartographicToCartesian(ae.center(I$)),h=40075.16/(1<<o);this._skirtHeight=Math.min(h*8,1e3);let g=(a?_Bt:gBt).scheduleTask({buffer:this._buffer,nativeRectangle:vSe,rectangle:I$,relativeToCenter:u,ellipsoid:c,skirtHeight:this._skirtHeight,exaggeration:r,exaggerationRelativeHeight:s,includeWebMercatorT:!0,negativeAltitudeExponentBias:this._negativeAltitudeExponentBias,negativeElevationThreshold:this._negativeElevationThreshold});if(!l(g))return;let m=this;return g.then(function(_){return m._mesh=new Ud(u,new Float32Array(_.vertices),new Uint16Array(_.indices),_.indexCountWithoutSkirts,_.vertexCountWithoutSkirts,_.minimumHeight,_.maximumHeight,le.clone(_.boundingSphere3D),d.clone(_.occludeePointInScaledSpace),_.numberOfAttributes,Fn.clone(_.orientedBoundingBox),Zc.clone(_.encoding),_.westIndicesSouthToNorth,_.southIndicesEastToWest,_.eastIndicesNorthToSouth,_.northIndicesWestToEast),m._minimumHeight=_.minimumHeight,m._maximumHeight=_.maximumHeight,m._buffer=void 0,m._mesh})};gx.prototype.interpolateHeight=function(e,t,n){let i=D.clamp((t-e.west)/e.width,0,1),o=D.clamp((n-e.south)/e.height,0,1);return l(this._mesh)?xBt(this,i,o):SBt(this,i,o,e)};var yBt=new di("upsampleQuantizedTerrainMesh",Am.maximumAsynchronousTasks);gx.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(this._mesh))return;let c=t*2!==o,u=n*2===r,f=e.ellipsoid,h=e.tileXYToRectangle(o,r,s),A=yBt.scheduleTask({vertices:a.vertices,indices:a.indices,indexCountWithoutSkirts:a.indexCountWithoutSkirts,vertexCountWithoutSkirts:a.vertexCountWithoutSkirts,encoding:a.encoding,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:c,isNorthChild:u,childRectangle:h,ellipsoid:f});if(!l(A))return;let g=this;return A.then(function(m){let _=new Uint16Array(m.vertices),y=Oe.createTypedArray(_.length/3,m.indices),C=g._skirtHeight;return new Ax({quantizedVertices:_,indices:y,minimumHeight:m.minimumHeight,maximumHeight:m.maximumHeight,boundingSphere:le.clone(m.boundingSphere),orientedBoundingBox:Fn.clone(m.orientedBoundingBox),horizonOcclusionPoint:d.clone(m.horizonOcclusionPoint),westIndices:m.westIndices,southIndices:m.southIndices,eastIndices:m.eastIndices,northIndices:m.northIndices,westSkirtHeight:C,southSkirtHeight:C,eastSkirtHeight:C,northSkirtHeight:C,childTileMask:0,createdByUpsampling:!0,credits:g._credits})})};gx.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};gx.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};var CBt=new U,EBt=new U,IBt=new U,MSe=new d;function xBt(e,t,n){let i=e._mesh,o=i.vertices,r=i.encoding,s=i.indices;for(let a=0,c=s.length;a<c;a+=3){let u=s[a],f=s[a+1],h=s[a+2],A=r.decodeTextureCoordinates(o,u,CBt),g=r.decodeTextureCoordinates(o,f,EBt),m=r.decodeTextureCoordinates(o,h,IBt),_=r_.computeBarycentricCoordinates(t,n,A.x,A.y,g.x,g.y,m.x,m.y,MSe);if(_.x>=-1e-15&&_.y>=-1e-15&&_.z>=-1e-15){let y=r.decodeHeight(o,u),C=r.decodeHeight(o,f),E=r.decodeHeight(o,h);return _.x*y+_.y*C+_.z*E}}}var bBt=Uint16Array.BYTES_PER_ELEMENT,PSe=Uint32Array.BYTES_PER_ELEMENT,x$=Int32Array.BYTES_PER_ELEMENT,TBt=Float32Array.BYTES_PER_ELEMENT,b$=Float64Array.BYTES_PER_ELEMENT;function SBt(e,t,n,i){let o=e._buffer,r=0,s=0,a=0;n>.5?(t>.5?(r=2,s=.5):r=3,a=.5):t>.5&&(r=1,s=.5);let c=new DataView(o),u=0;for(let S=0;S<r;++S)u+=c.getUint32(u,!0),u+=PSe;u+=PSe,u+=2*b$;let f=D.toRadians(c.getFloat64(u,!0)*180);u+=b$;let h=D.toRadians(c.getFloat64(u,!0)*180);u+=b$;let A=i.width/f/2,g=i.height/h/2,m=c.getInt32(u,!0);u+=x$;let _=c.getInt32(u,!0)*3;u+=x$,u+=x$;let y=new Array(m),C=new Array(m),E=new Array(m),I;for(I=0;I<m;++I)y[I]=s+c.getUint8(u++)*A,C[I]=a+c.getUint8(u++)*g,E[I]=c.getFloat32(u,!0)*6371010,u+=TBt;let b=new Array(_);for(I=0;I<_;++I)b[I]=c.getUint16(u,!0),u+=bBt;for(I=0;I<_;I+=3){let S=b[I],B=b[I+1],v=b[I+2],P=y[S],M=y[B],L=y[v],p=C[S],x=C[B],T=C[v],w=r_.computeBarycentricCoordinates(t,n,P,p,M,x,L,T,MSe);if(w.x>=-1e-15&&w.y>=-1e-15&&w.z>=-1e-15)return w.x*E[S]+w.y*E[B]+w.z*E[v]}}var jw=gx;var Kd={UNKNOWN:0,NONE:1,SELF:2,PARENT:3},h5=new K;function m5(){this._terrainCache={},this._lastTidy=K.now()}m5.prototype.add=function(e,t){this._terrainCache[e]={buffer:t,timestamp:K.now()}};m5.prototype.get=function(e){let n=this._terrainCache[e];if(l(n))return delete this._terrainCache[e],n.buffer};m5.prototype.tidy=function(){if(K.now(h5),K.secondsDifference(h5,this._lastTidy)>10){let e=this._terrainCache,t=Object.keys(e),n=t.length;for(let i=0;i<n;++i){let o=t[i],r=e[o];K.secondsDifference(h5,r.timestamp)>10&&delete e[o]}K.clone(h5,this._lastTidy)}};function BC(e){e=e??V.EMPTY_OBJECT,this._tilingScheme=new so({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new ae(-D.PI,-D.PI,D.PI,D.PI),ellipsoid:e.ellipsoid});let t=e.credit;typeof t=="string"&&(t=new Bt(t)),this._credit=t,this._levelZeroMaximumGeometricError=40075.16,this._terrainCache=new m5,this._terrainPromises={},this._terrainRequests={},this._errorEvent=new _e}Object.defineProperties(BC.prototype,{url:{get:function(){return this._metadata.url}},proxy:{get:function(){return this._metadata.proxy}},tilingScheme:{get:function(){return this._tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});BC.fromMetadata=function(e,t){if(!e.terrainPresent)throw new ce(`The server ${e.url} doesn't have terrain`);let n=new BC(t);return n._metadata=e,n};var wBt=new di("decodeGoogleEarthEnterprisePacket");function NSe(e,t,n){let i=t.getChildBitmask();if(t.terrainState===Kd.PARENT){i=0;for(let o=0;o<4;++o){let r=n.getTileInformationFromQuadKey(e+o.toString());l(r)&&r.hasTerrain()&&(i|=1<<o)}}return i}BC.prototype.requestTileGeometry=function(e,t,n,i){let o=a_.tileXYToQuadKey(e,t,n),r=this._terrainCache,s=this._metadata,a=s.getTileInformationFromQuadKey(o);if(!l(a))return Promise.reject(new ce("Terrain tile doesn't exist"));let c=a.terrainState;l(c)||(c=a.terrainState=Kd.UNKNOWN);let u=r.get(o);if(l(u)){let C=s.providers[a.terrainProvider];return Promise.resolve(new jw({buffer:u,childTileMask:NSe(o,a,s),credits:l(C)?[C]:void 0,negativeAltitudeExponentBias:s.negativeAltitudeExponentBias,negativeElevationThreshold:s.negativeAltitudeThreshold}))}if(r.tidy(),a.ancestorHasTerrain){if(c===Kd.NONE)return Promise.reject(new ce("Terrain tile doesn't exist"))}else return Promise.resolve(new Ec({buffer:new Uint8Array(256),width:16,height:16}));let f,h=o,A=-1;switch(c){case Kd.SELF:A=a.terrainVersion;break;case Kd.PARENT:h=h.substring(0,h.length-1),f=s.getTileInformationFromQuadKey(h),A=f.terrainVersion;break;case Kd.UNKNOWN:a.hasTerrain()?A=a.terrainVersion:(h=h.substring(0,h.length-1),f=s.getTileInformationFromQuadKey(h),l(f)&&f.hasTerrain()&&(A=f.terrainVersion));break}if(A<0)return Promise.reject(new ce("Terrain tile doesn't exist"));let g=this._terrainPromises,m=this._terrainRequests,_,y;if(l(g[h]))_=g[h],y=m[h];else{y=i;let C=BBt(this,h,A,y).fetchArrayBuffer();if(!l(C))return;_=C.then(function(E){return l(E)?wBt.scheduleTask({buffer:E,type:"Terrain",key:s.key},[E]).then(function(I){let b=s.getTileInformationFromQuadKey(h);b.terrainState=Kd.SELF,r.add(h,I[0]);let S=b.terrainProvider,B=I.length-1;for(let v=0;v<B;++v){let P=h+v.toString(),M=s.getTileInformationFromQuadKey(P);l(M)&&(r.add(P,I[v+1]),M.terrainState=Kd.PARENT,M.terrainProvider===0&&(M.terrainProvider=S))}}):Promise.reject(new ce("Failed to load terrain."))}),g[h]=_,m[h]=y,_=_.finally(function(){delete g[h],delete m[h]})}return _.then(function(){let C=r.get(o);if(l(C)){let E=s.providers[a.terrainProvider];return new jw({buffer:C,childTileMask:NSe(o,a,s),credits:l(E)?[E]:void 0,negativeAltitudeExponentBias:s.negativeAltitudeExponentBias,negativeElevationThreshold:s.negativeAltitudeThreshold})}return Promise.reject(new ce("Failed to load terrain."))}).catch(function(C){return y.state===fi.CANCELLED?(i.state=y.state,Promise.reject(C)):(a.terrainState=Kd.NONE,Promise.reject(C))})};BC.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};BC.prototype.getTileDataAvailable=function(e,t,n){let i=this._metadata,o=a_.tileXYToQuadKey(e,t,n),r=i.getTileInformation(e,t,n);if(r===null)return!1;if(l(r)){if(!r.ancestorHasTerrain)return!0;let s=r.terrainState;if(s===Kd.NONE)return!1;if((!l(s)||s===Kd.UNKNOWN)&&(r.terrainState=Kd.UNKNOWN,!r.hasTerrain())){o=o.substring(0,o.length-1);let a=i.getTileInformationFromQuadKey(o);if(!l(a)||!a.hasTerrain())return!1}return!0}if(i.isValid(o)){let s=new sr({throttle:!1,throttleByServer:!0,type:Ms.TERRAIN});i.populateSubtree(e,t,n,s)}return!1};BC.prototype.loadTileDataAvailability=function(e,t,n){};function BBt(e,t,n,i){return n=l(n)&&n>0?n:1,e._metadata.resource.getDerivedResource({url:`flatfile?f1c-0${t}-t.${n.toString()}`,request:i})}var T$=BC;var DBt="https://maps.googleapis.com/maps/api/geocode/json",LSe='<img alt="Google" src="https://assets.ion.cesium.com/google-credit.png" style="vertical-align:-5px">';function S$(e){e=e??V.EMPTY_OBJECT;let t=e.key;this._resource=new we({url:DBt,queryParameters:{key:t}}),this._credit=new Bt(LSe,!0)}Object.defineProperties(S$.prototype,{credit:{get:function(){return this._credit}}});S$.prototype.geocode=async function(e){let n=await this._resource.getDerivedResource({queryParameters:{address:e}}).fetchJson();if(n.status==="ZERO_RESULTS")return[];if(n.status!=="OK")throw new ce(`GoogleGeocoderService got a bad response ${n.status}: ${n.error_message}`);return n.results.map(o=>{let r=o.geometry.viewport.southwest,s=o.geometry.viewport.northeast;return{displayName:o.formatted_address,destination:ae.fromDegrees(r.lng,r.lat,s.lng,s.lat),attribution:{html:LSe,collapsible:!1}}})};var w$=S$;var A5={};A5.defaultApiKey=void 0;A5.mapTilesApiEndpoint=new we({url:"https://tile.googleapis.com/v1/"});A5.getDefaultCredit=function(){return new Bt('<img src="https://assets.ion.cesium.com/google-credit.png" style="vertical-align: -5px" alt="Google">',!0)};var _x=A5;var Vs={};Vs.ExportStatus=Object.freeze({NotStarted:"NotStarted",InProgress:"InProgress",Complete:"Complete",Invalid:"Invalid"});Vs.ExportType=Object.freeze({IMODEL:"IMODEL",CESIUM:"CESIUM","3DTILES":"3DTILES"});Vs.RealityDataType=Object.freeze({Cesium3DTiles:"Cesium3DTiles",PNTS:"PNTS",RealityMesh3DTiles:"RealityMesh3DTiles",Terrain3DTiles:"Terrain3DTiles",KML:"KML",GeoJSON:"GeoJSON",Unstructured:"Unstructured"});Vs.defaultAccessToken=void 0;Vs.defaultShareKey=void 0;Vs._getAuthorizationHeader=function(){return l(Vs.defaultShareKey)?`Basic ${Vs.defaultShareKey}`:`Bearer ${Vs.defaultAccessToken}`};Vs.apiEndpoint=new we({url:"https://api.bentley.com"});Vs.getExports=async function(e,t){let n=new we({url:`${Vs.apiEndpoint}mesh-export`,headers:{Authorization:Vs._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json",Prefer:"return=representation"},queryParameters:{iModelId:e,exportType:Vs.ExportType["3DTILES"],$top:"5",client:"CesiumJS"}});typeof CESIUM_VERSION<"u"&&n.appendQueryParameters({clientVersion:CESIUM_VERSION}),l(t)&&t!==""&&n.appendQueryParameters({changesetId:t});try{return await n.fetchJson()}catch(i){let o=JSON.parse(i.response);if(i.statusCode===401){let r=o.error.details?.[0].code??"";throw new ce(`Unauthorized, bad token, wrong scopes or headers bad. ${r}`)}else{if(i.statusCode===403)throw console.error(o.error.code,o.error.message),new ce("Not allowed, forbidden");if(i.statusCode===422)throw new ce(`Unprocessable Entity:${o.error.code} ${o.error.message}`);if(i.statusCode===429)throw new ce("Too many requests")}throw new ce(`Unknown request failure ${i.statusCode}`)}};Vs.getRealityDataMetadata=async function(e,t){let n=new we({url:`${Vs.apiEndpoint}reality-management/reality-data/${t}`,headers:{Authorization:Vs._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{iTwinId:e}});try{return(await n.fetchJson()).realityData}catch(i){let o=JSON.parse(i.response);if(i.statusCode===401){let r=o.error.details?.[0].code??"";throw new ce(`Unauthorized, bad token, wrong scopes or headers bad. ${r}`)}else{if(i.statusCode===403)throw console.error(o.error.code,o.error.message),new ce("Not allowed, forbidden");if(i.statusCode===404)throw new ce(`Reality data not found: ${e}, ${t}`);if(i.statusCode===422)throw new ce(`Unprocessable Entity:${o.error.code} ${o.error.message}`);if(i.statusCode===429)throw new ce("Too many requests")}throw new ce(`Unknown request failure ${i.statusCode}`)}};Vs.getRealityDataURL=async function(e,t,n){let i=new we({url:`${Vs.apiEndpoint}reality-management/reality-data/${t}/readaccess`,headers:{Authorization:Vs._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{iTwinId:e}});try{let r=(await i.fetchJson())._links.containerUrl.href,s=new URL(r);return s.pathname=`${s.pathname}/${n}`,s.toString()}catch(o){let r=JSON.parse(o.response);if(o.statusCode===401){let s=r.error.details?.[0].code??"";throw new ce(`Unauthorized, bad token, wrong scopes or headers bad. ${s}`)}else{if(o.statusCode===403)throw console.error(r.error.code,r.error.message),new ce("Not allowed, forbidden");if(o.statusCode===404)throw new ce(`Reality data not found: ${e}, ${t}`);if(o.statusCode===422)throw new ce(`Unprocessable Entity:${r.error.code} ${r.error.message}`);if(o.statusCode===429)throw new ce("Too many requests")}throw new ce(`Unknown request failure ${o.statusCode}`)}};var ra=Vs;var A3={};A3.type=void 0;A3.getRequiredDataPoints=me.throwInstantiationError;A3.interpolateOrderZero=me.throwInstantiationError;A3.interpolate=me.throwInstantiationError;var B$=A3;var vBt={GOOGLE:"GOOGLE",BING:"BING",DEFAULT:"DEFAULT"},c_=Object.freeze(vBt);function D$(e){this._url=we.createIfNeeded(e),this._url.appendForwardSlash()}Object.defineProperties(D$.prototype,{url:{get:function(){return this._url}},credit:{get:function(){}}});D$.prototype.geocode=async function(e,t){return this._url.getDerivedResource({url:t===wC.AUTOCOMPLETE?"autocomplete":"search",queryParameters:{text:e}}).fetchJson().then(function(i){return i.features.map(function(o){let r,s=o.bbox;if(l(s))r=ae.fromDegrees(s[0],s[1],s[2],s[3]);else{let a=o.geometry.coordinates[0],c=o.geometry.coordinates[1];r=d.fromDegrees(a,c)}return{displayName:o.properties.label,destination:r,attributions:i.attributions}})})};var p3=D$;function PBt(e){if(!Object.values(c_).some(t=>t===e))throw new me(`Invalid geocodeProviderType: "${e}"`)}var OSe=Object.freeze({[c_.GOOGLE]:"google",[c_.BING]:"bing",[c_.DEFAULT]:void 0});function RBt(e){return OSe[e]}function MBt(e){return Object.entries(OSe).find(t=>t[1]===e)[0]}function v$(e){e=e??V.EMPTY_OBJECT;let t=e.geocodeProviderType??c_.DEFAULT,n=e.accessToken??Eh.defaultAccessToken,i=we.createIfNeeded(e.server??Eh.defaultServer);i.appendForwardSlash();let o=Eh.getDefaultTokenCredit(n);l(o)&&e.scene.frameState.creditDisplay.addStaticCredit(Bt.clone(o));let r=i.getDerivedResource({url:"v1/geocode"});l(n)&&r.appendQueryParameters({access_token:n}),this._accessToken=n,this._server=i,this._pelias=new p3(r),this.geocodeProviderType=t}Object.defineProperties(v$.prototype,{credit:{get:function(){}},geocodeProviderType:{get:function(){return MBt(this._pelias.url.queryParameters.geocoder)},set:function(e){PBt(e);let t={...this._pelias.url.queryParameters,geocoder:RBt(e)};l(t.geocoder)||delete t.geocoder,this._pelias.url.setQueryParameters(t)}}});v$.prototype.geocode=async function(e,t){return this._pelias.geocode(e,t)};var yx=v$;function p5(){me.throwInstantiationError()}Object.defineProperties(p5.prototype,{ellipsoid:{get:me.throwInstantiationError}});p5.prototype.project=me.throwInstantiationError;p5.prototype.unproject=me.throwInstantiationError;var P$=p5;function Yw(e){e=e??V.EMPTY_OBJECT;let t=e.weights,n=e.times;this._times=n,this._weights=t,this._count=t.length/n.length,this._lastTimeIndex=0}Object.defineProperties(Yw.prototype,{times:{get:function(){return this._times}},weights:{get:function(){return this._weights}}});Yw.prototype.findTimeInterval=_o.prototype.findTimeInterval;Yw.prototype.wrapTime=_o.prototype.wrapTime;Yw.prototype.clampTime=_o.prototype.clampTime;Yw.prototype.evaluate=function(e,t){let n=this.weights,i=this.times,o=this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex),r=(e-i[o])/(i[o+1]-i[o]);l(t)||(t=new Array(this._count));for(let s=0;s<this._count;s++){let a=o*this._count+s;t[s]=n[a]*(1-r)+n[a+this._count]*r}return t};var R$=Yw;function M$(e,t,n){e=we.createIfNeeded(e),e.appendForwardSlash(),e.setQueryParameters({key:t}),this._url=e,this._params=n??{},this._credit=new Bt('Geodata copyright <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors',!1)}Object.defineProperties(M$.prototype,{url:{get:function(){return this._url}},params:{get:function(){return this._params}},credit:{get:function(){return this._credit}}});M$.prototype.geocode=async function(e){return this._url.getDerivedResource({url:"json",queryParameters:Tt(this._params,{q:e})}).fetchJson().then(function(n){return n.results.map(function(i){let o,r=i.bounds;if(l(r))o=ae.fromDegrees(r.southwest.lng,r.southwest.lat,r.northeast.lng,r.northeast.lat);else{let s=i.geometry.lat,a=i.geometry.lng;o=d.fromDegrees(s,a)}return{displayName:i.formatted,destination:o}})})};var N$=M$;var NBt={packedLength:void 0,pack:me.throwInstantiationError,unpack:me.throwInstantiationError},L$=NBt;var LBt={packedInterpolationLength:void 0,convertPackedArrayForInterpolation:me.throwInstantiationError,unpackInterpolationResult:me.throwInstantiationError},O$=LBt;function FSe(){me.throwInstantiationError()}FSe.prototype.getURL=me.throwInstantiationError;var F$=FSe;function OBt(e,t,n,i,o,r,s){let a=Wi.numberOfPoints(e,t,o),c,u=n.red,f=n.green,h=n.blue,A=n.alpha,g=i.red,m=i.green,_=i.blue,y=i.alpha;if(G.equals(n,i)){for(c=0;c<a;c++)r[s++]=G.floatToByte(u),r[s++]=G.floatToByte(f),r[s++]=G.floatToByte(h),r[s++]=G.floatToByte(A);return s}let C=(g-u)/a,E=(m-f)/a,I=(_-h)/a,b=(y-A)/a,S=s;for(c=0;c<a;c++)r[S++]=G.floatToByte(u+c*C),r[S++]=G.floatToByte(f+c*E),r[S++]=G.floatToByte(h+c*I),r[S++]=G.floatToByte(A+c*b);return S}function g3(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.colors,i=e.colorsPerVertex??!1;this._positions=t,this._colors=n,this._colorsPerVertex=i,this._arcType=e.arcType??cn.GEODESIC,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._ellipsoid=e.ellipsoid??te.default,this._workerName="createSimplePolylineGeometry";let o=1+t.length*d.packedLength;o+=l(n)?1+n.length*G.packedLength:1,this.packedLength=o+te.packedLength+3}g3.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._colors;for(r=l(s)?s.length:0,t[n++]=r,i=0;i<r;++i,n+=G.packedLength)G.pack(s[i],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._colorsPerVertex?1:0,t[n++]=e._arcType,t[n]=e._granularity,t};g3.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=o>0?new Array(o):void 0;for(i=0;i<o;++i,t+=G.packedLength)s[i]=G.unpack(e,t);let a=te.unpack(e,t);t+=te.packedLength;let c=e[t++]===1,u=e[t++],f=e[t];return l(n)?(n._positions=r,n._colors=s,n._ellipsoid=a,n._colorsPerVertex=c,n._arcType=u,n._granularity=f,n):new g3({positions:r,colors:s,ellipsoid:a,colorsPerVertex:c,arcType:u,granularity:f})};var g5=new Array(2),_5=new Array(2),FBt={positions:g5,height:_5,ellipsoid:void 0,minDistance:void 0,granularity:void 0};g3.createGeometry=function(e){let t=e._positions,n=e._colors,i=e._colorsPerVertex,o=e._arcType,r=e._granularity,s=e._ellipsoid,a=D.chordLength(r,s.maximumRadius),c=l(n)&&!i,u,f=t.length,h,A,g,m,_=0;if(o===cn.GEODESIC||o===cn.RHUMB){let b,S,B;o===cn.GEODESIC?(b=D.chordLength(r,s.maximumRadius),S=Wi.numberOfPoints,B=Wi.generateArc):(b=r,S=Wi.numberOfPointsRhumbLine,B=Wi.generateRhumbArc);let v=Wi.extractHeights(t,s),P=FBt;if(o===cn.GEODESIC?P.minDistance=a:P.granularity=r,P.ellipsoid=s,c){let M=0;for(u=0;u<f-1;u++)M+=S(t[u],t[u+1],b)+1;h=new Float64Array(M*3),g=new Uint8Array(M*4),P.positions=g5,P.height=_5;let L=0;for(u=0;u<f-1;++u){g5[0]=t[u],g5[1]=t[u+1],_5[0]=v[u],_5[1]=v[u+1];let p=B(P);if(l(n)){let x=p.length/3;m=n[u];for(let T=0;T<x;++T)g[L++]=G.floatToByte(m.red),g[L++]=G.floatToByte(m.green),g[L++]=G.floatToByte(m.blue),g[L++]=G.floatToByte(m.alpha)}h.set(p,_),_+=p.length}}else if(P.positions=t,P.height=v,h=new Float64Array(B(P)),l(n)){for(g=new Uint8Array(h.length/3*4),u=0;u<f-1;++u){let L=t[u],p=t[u+1],x=n[u],T=n[u+1];_=OBt(L,p,x,T,a,g,_)}let M=n[f-1];g[_++]=G.floatToByte(M.red),g[_++]=G.floatToByte(M.green),g[_++]=G.floatToByte(M.blue),g[_++]=G.floatToByte(M.alpha)}}else{A=c?f*2-2:f,h=new Float64Array(A*3),g=l(n)?new Uint8Array(A*4):void 0;let b=0,S=0;for(u=0;u<f;++u){let B=t[u];if(c&&u>0&&(d.pack(B,h,b),b+=3,m=n[u-1],g[S++]=G.floatToByte(m.red),g[S++]=G.floatToByte(m.green),g[S++]=G.floatToByte(m.blue),g[S++]=G.floatToByte(m.alpha)),c&&u===f-1)break;d.pack(B,h,b),b+=3,l(n)&&(m=n[u],g[S++]=G.floatToByte(m.red),g[S++]=G.floatToByte(m.green),g[S++]=G.floatToByte(m.blue),g[S++]=G.floatToByte(m.alpha))}}let y=new yn;y.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:h}),l(n)&&(y.color=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:4,values:g,normalize:!0})),A=h.length/3;let C=(A-1)*2,E=Oe.createTypedArray(A,C),I=0;for(u=0;u<A-1;++u)E[I++]=u,E[I++]=u+1;return new ht({attributes:y,indices:E,primitiveType:Me.LINES,boundingSphere:le.fromPoints(t)})};var Q$=g3;function qw(e){let t=e.radius??1,i={radii:new d(t,t,t),stackPartitions:e.stackPartitions,slicePartitions:e.slicePartitions,vertexFormat:e.vertexFormat};this._ellipsoidGeometry=new Ia(i),this._workerName="createSphereGeometry"}qw.packedLength=Ia.packedLength;qw.pack=function(e,t,n){return Ia.pack(e._ellipsoidGeometry,t,n)};var QBt=new Ia,DC={radius:void 0,radii:new d,vertexFormat:new Pe,stackPartitions:void 0,slicePartitions:void 0};qw.unpack=function(e,t,n){let i=Ia.unpack(e,t,QBt);return DC.vertexFormat=Pe.clone(i._vertexFormat,DC.vertexFormat),DC.stackPartitions=i._stackPartitions,DC.slicePartitions=i._slicePartitions,l(n)?(d.clone(i._radii,DC.radii),n._ellipsoidGeometry=new Ia(DC),n):(DC.radius=i._radii.x,new qw(DC))};qw.createGeometry=function(e){return Ia.createGeometry(e._ellipsoidGeometry)};var k$=qw;function vC(e){}Object.defineProperties(vC.prototype,{ellipsoid:{get:me.throwInstantiationError},rectangle:{get:me.throwInstantiationError},projection:{get:me.throwInstantiationError}});vC.prototype.getNumberOfXTilesAtLevel=me.throwInstantiationError;vC.prototype.getNumberOfYTilesAtLevel=me.throwInstantiationError;vC.prototype.rectangleToNativeRectangle=me.throwInstantiationError;vC.prototype.tileXYToNativeRectangle=me.throwInstantiationError;vC.prototype.tileXYToRectangle=me.throwInstantiationError;vC.prototype.positionToTileXY=me.throwInstantiationError;var U$=vC;function kBt(e,t){this.rectangle=e,this.maxLevel=t}function QSe(e){this.ellipsoid=e.ellipsoid??te.default,this.tilingScheme=void 0,this.heightmapWidth=void 0,this.heightmapHeight=void 0,this.levelZeroMaximumGeometricError=void 0,this.rectangles=[]}QSe.prototype.build=function(e){e._tilingScheme=this.tilingScheme,e._heightmapWidth=this.heightmapWidth,e._heightmapHeight=this.heightmapHeight,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._rectangles=this.rectangles};function UBt(e,t){let n=t.getElementsByTagName("SRS")[0].textContent;if(n==="EPSG:4326")e.tilingScheme=new so({ellipsoid:e.ellipsoid});else throw new ce(`SRS ${n} is not supported`);let i=t.getElementsByTagName("TileFormat")[0];e.heightmapWidth=parseInt(i.getAttribute("width"),10),e.heightmapHeight=parseInt(i.getAttribute("height"),10),e.levelZeroMaximumGeometricError=Ss.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.ellipsoid,Math.min(e.heightmapWidth,e.heightmapHeight),e.tilingScheme.getNumberOfXTilesAtLevel(0));let o=t.getElementsByTagName("DataExtent");for(let r=0;r<o.length;++r){let s=o[r],a=D.toRadians(parseFloat(s.getAttribute("minx"))),c=D.toRadians(parseFloat(s.getAttribute("miny"))),u=D.toRadians(parseFloat(s.getAttribute("maxx"))),f=D.toRadians(parseFloat(s.getAttribute("maxy"))),h=parseInt(s.getAttribute("maxlevel"),10);e.rectangles.push(new kBt(new ae(a,c,u,f),h))}}function GBt(e,t,n){let i=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(i=`${i}: ${t.message}`),Qo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i),new ce(i)}async function zBt(e,t,n){try{let i=await t.fetchXML();UBt(e,i)}catch(i){GBt(t,i,n)}}function PC(e){e=e??V.EMPTY_OBJECT,this._errorEvent=new _e,this._terrainDataStructure={heightScale:1/1e3,heightOffset:-1e3,elementsPerHeight:3,stride:4,elementMultiplier:256,isBigEndian:!0,lowestEncodedHeight:0,highestEncodedHeight:256*256*256-1};let t=e.credit;typeof t=="string"&&(t=new Bt(t)),this._credit=t,this._tilingScheme=void 0,this._rectangles=[]}Object.defineProperties(PC.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});PC.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=new QSe(t),i=we.createIfNeeded(e);await zBt(n,i);let o=new PC(t);return n.build(o),o._resource=i,o};PC.prototype.requestTileGeometry=function(e,t,n,i){let o=this._tilingScheme.getNumberOfYTilesAtLevel(n),s=this._resource.getDerivedResource({url:`${n}/${e}/${o-t-1}.tif`,queryParameters:{cesium:!0},request:i}).fetchImage({preferImageBitmap:!0});if(!l(s))return;let a=this;return Promise.resolve(s).then(function(c){return new Ec({buffer:oh(c),width:a._heightmapWidth,height:a._heightmapHeight,childTileMask:VBt(a,e,t,n),structure:a._terrainDataStructure})})};PC.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};var kSe=new ae;function VBt(e,t,n,i){let o=e._tilingScheme,r=e._rectangles,s=o.tileXYToRectangle(t,n,i),a=0;for(let c=0;c<r.length&&a!==15;++c){let u=r[c];if(u.maxLevel<=i)continue;let f=u.rectangle,h=ae.intersection(f,s,kSe);l(h)&&(y5(o,f,t*2,n*2,i+1)&&(a|=4),y5(o,f,t*2+1,n*2,i+1)&&(a|=8),y5(o,f,t*2,n*2+1,i+1)&&(a|=1),y5(o,f,t*2+1,n*2+1,i+1)&&(a|=2))}return a}function y5(e,t,n,i,o){let r=e.tileXYToRectangle(n,i,o);return l(ae.intersection(r,t,kSe))}PC.prototype.getTileDataAvailable=function(e,t,n){};PC.prototype.loadTileDataAvailability=function(e,t,n){};var G$=PC;function Cx(e){e=e??V.EMPTY_OBJECT,this._clock=void 0,this._element=void 0,this._clockSubscription=void 0,this._seekFunction=void 0,this._lastPlaybackRate=void 0,this.clock=e.clock,this.element=e.element,this.epoch=e.epoch??je.MINIMUM_VALUE,this.tolerance=e.tolerance??1,this._seeking=!1,this._seekFunction=void 0,this._firstTickAfterSeek=!1}Object.defineProperties(Cx.prototype,{clock:{get:function(){return this._clock},set:function(e){let t=this._clock;t!==e&&(l(t)&&(this._clockSubscription(),this._clockSubscription=void 0),l(e)&&(this._clockSubscription=e.onTick.addEventListener(Cx.prototype._onTick,this)),this._clock=e)}},element:{get:function(){return this._element},set:function(e){let t=this._element;t!==e&&(l(t)&&t.removeEventListener("seeked",this._seekFunction,!1),l(e)&&(this._seeking=!1,this._seekFunction=HBt(this),e.addEventListener("seeked",this._seekFunction,!1)),this._element=e,this._seeking=!1,this._firstTickAfterSeek=!1)}}});Cx.prototype.destroy=function(){return this.element=void 0,this.clock=void 0,ue(this)};Cx.prototype.isDestroyed=function(){return!1};Cx.prototype._trySetPlaybackRate=function(e){if(this._lastPlaybackRate===e.multiplier)return;let t=this._element;try{t.playbackRate=e.multiplier}catch{t.playbackRate=0}this._lastPlaybackRate=e.multiplier};Cx.prototype._onTick=function(e){let t=this._element;if(!l(t)||t.readyState<2)return;let n=t.paused,i=e.shouldAnimate;if(i===n&&(i?t.play():t.pause()),this._seeking||this._firstTickAfterSeek){this._firstTickAfterSeek=!1;return}this._trySetPlaybackRate(e);let o=e.currentTime,r=this.epoch??je.MINIMUM_VALUE,s=K.secondsDifference(o,r),a=t.duration,c,u=t.currentTime;t.loop?(s=s%a,s<0&&(s=a-s),c=s):s>a?c=a:s<0?c=0:c=s;let f=i?this.tolerance??1:.001;Math.abs(c-u)>f&&(this._seeking=!0,t.currentTime=c)};function HBt(e){return function(){e._seeking=!1,e._firstTickAfterSeek=!0}}var z$=Cx;var WBt={VK_FORMAT_UNDEFINED:0,VK_FORMAT_R4G4_UNORM_PACK8:1,VK_FORMAT_R4G4B4A4_UNORM_PACK16:2,VK_FORMAT_B4G4R4A4_UNORM_PACK16:3,VK_FORMAT_R5G6B5_UNORM_PACK16:4,VK_FORMAT_B5G6R5_UNORM_PACK16:5,VK_FORMAT_R5G5B5A1_UNORM_PACK16:6,VK_FORMAT_B5G5R5A1_UNORM_PACK16:7,VK_FORMAT_A1R5G5B5_UNORM_PACK16:8,VK_FORMAT_R8_UNORM:9,VK_FORMAT_R8_SNORM:10,VK_FORMAT_R8_USCALED:11,VK_FORMAT_R8_SSCALED:12,VK_FORMAT_R8_UINT:13,VK_FORMAT_R8_SINT:14,VK_FORMAT_R8_SRGB:15,VK_FORMAT_R8G8_UNORM:16,VK_FORMAT_R8G8_SNORM:17,VK_FORMAT_R8G8_USCALED:18,VK_FORMAT_R8G8_SSCALED:19,VK_FORMAT_R8G8_UINT:20,VK_FORMAT_R8G8_SINT:21,VK_FORMAT_R8G8_SRGB:22,VK_FORMAT_R8G8B8_UNORM:23,VK_FORMAT_R8G8B8_SNORM:24,VK_FORMAT_R8G8B8_USCALED:25,VK_FORMAT_R8G8B8_SSCALED:26,VK_FORMAT_R8G8B8_UINT:27,VK_FORMAT_R8G8B8_SINT:28,VK_FORMAT_R8G8B8_SRGB:29,VK_FORMAT_B8G8R8_UNORM:30,VK_FORMAT_B8G8R8_SNORM:31,VK_FORMAT_B8G8R8_USCALED:32,VK_FORMAT_B8G8R8_SSCALED:33,VK_FORMAT_B8G8R8_UINT:34,VK_FORMAT_B8G8R8_SINT:35,VK_FORMAT_B8G8R8_SRGB:36,VK_FORMAT_R8G8B8A8_UNORM:37,VK_FORMAT_R8G8B8A8_SNORM:38,VK_FORMAT_R8G8B8A8_USCALED:39,VK_FORMAT_R8G8B8A8_SSCALED:40,VK_FORMAT_R8G8B8A8_UINT:41,VK_FORMAT_R8G8B8A8_SINT:42,VK_FORMAT_R8G8B8A8_SRGB:43,VK_FORMAT_B8G8R8A8_UNORM:44,VK_FORMAT_B8G8R8A8_SNORM:45,VK_FORMAT_B8G8R8A8_USCALED:46,VK_FORMAT_B8G8R8A8_SSCALED:47,VK_FORMAT_B8G8R8A8_UINT:48,VK_FORMAT_B8G8R8A8_SINT:49,VK_FORMAT_B8G8R8A8_SRGB:50,VK_FORMAT_A8B8G8R8_UNORM_PACK32:51,VK_FORMAT_A8B8G8R8_SNORM_PACK32:52,VK_FORMAT_A8B8G8R8_USCALED_PACK32:53,VK_FORMAT_A8B8G8R8_SSCALED_PACK32:54,VK_FORMAT_A8B8G8R8_UINT_PACK32:55,VK_FORMAT_A8B8G8R8_SINT_PACK32:56,VK_FORMAT_A8B8G8R8_SRGB_PACK32:57,VK_FORMAT_A2R10G10B10_UNORM_PACK32:58,VK_FORMAT_A2R10G10B10_SNORM_PACK32:59,VK_FORMAT_A2R10G10B10_USCALED_PACK32:60,VK_FORMAT_A2R10G10B10_SSCALED_PACK32:61,VK_FORMAT_A2R10G10B10_UINT_PACK32:62,VK_FORMAT_A2R10G10B10_SINT_PACK32:63,VK_FORMAT_A2B10G10R10_UNORM_PACK32:64,VK_FORMAT_A2B10G10R10_SNORM_PACK32:65,VK_FORMAT_A2B10G10R10_USCALED_PACK32:66,VK_FORMAT_A2B10G10R10_SSCALED_PACK32:67,VK_FORMAT_A2B10G10R10_UINT_PACK32:68,VK_FORMAT_A2B10G10R10_SINT_PACK32:69,VK_FORMAT_R16_UNORM:70,VK_FORMAT_R16_SNORM:71,VK_FORMAT_R16_USCALED:72,VK_FORMAT_R16_SSCALED:73,VK_FORMAT_R16_UINT:74,VK_FORMAT_R16_SINT:75,VK_FORMAT_R16_SFLOAT:76,VK_FORMAT_R16G16_UNORM:77,VK_FORMAT_R16G16_SNORM:78,VK_FORMAT_R16G16_USCALED:79,VK_FORMAT_R16G16_SSCALED:80,VK_FORMAT_R16G16_UINT:81,VK_FORMAT_R16G16_SINT:82,VK_FORMAT_R16G16_SFLOAT:83,VK_FORMAT_R16G16B16_UNORM:84,VK_FORMAT_R16G16B16_SNORM:85,VK_FORMAT_R16G16B16_USCALED:86,VK_FORMAT_R16G16B16_SSCALED:87,VK_FORMAT_R16G16B16_UINT:88,VK_FORMAT_R16G16B16_SINT:89,VK_FORMAT_R16G16B16_SFLOAT:90,VK_FORMAT_R16G16B16A16_UNORM:91,VK_FORMAT_R16G16B16A16_SNORM:92,VK_FORMAT_R16G16B16A16_USCALED:93,VK_FORMAT_R16G16B16A16_SSCALED:94,VK_FORMAT_R16G16B16A16_UINT:95,VK_FORMAT_R16G16B16A16_SINT:96,VK_FORMAT_R16G16B16A16_SFLOAT:97,VK_FORMAT_R32_UINT:98,VK_FORMAT_R32_SINT:99,VK_FORMAT_R32_SFLOAT:100,VK_FORMAT_R32G32_UINT:101,VK_FORMAT_R32G32_SINT:102,VK_FORMAT_R32G32_SFLOAT:103,VK_FORMAT_R32G32B32_UINT:104,VK_FORMAT_R32G32B32_SINT:105,VK_FORMAT_R32G32B32_SFLOAT:106,VK_FORMAT_R32G32B32A32_UINT:107,VK_FORMAT_R32G32B32A32_SINT:108,VK_FORMAT_R32G32B32A32_SFLOAT:109,VK_FORMAT_R64_UINT:110,VK_FORMAT_R64_SINT:111,VK_FORMAT_R64_SFLOAT:112,VK_FORMAT_R64G64_UINT:113,VK_FORMAT_R64G64_SINT:114,VK_FORMAT_R64G64_SFLOAT:115,VK_FORMAT_R64G64B64_UINT:116,VK_FORMAT_R64G64B64_SINT:117,VK_FORMAT_R64G64B64_SFLOAT:118,VK_FORMAT_R64G64B64A64_UINT:119,VK_FORMAT_R64G64B64A64_SINT:120,VK_FORMAT_R64G64B64A64_SFLOAT:121,VK_FORMAT_B10G11R11_UFLOAT_PACK32:122,VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:123,VK_FORMAT_D16_UNORM:124,VK_FORMAT_X8_D24_UNORM_PACK32:125,VK_FORMAT_D32_SFLOAT:126,VK_FORMAT_S8_UINT:127,VK_FORMAT_D16_UNORM_S8_UINT:128,VK_FORMAT_D24_UNORM_S8_UINT:129,VK_FORMAT_D32_SFLOAT_S8_UINT:130,VK_FORMAT_BC1_RGB_UNORM_BLOCK:131,VK_FORMAT_BC1_RGB_SRGB_BLOCK:132,VK_FORMAT_BC1_RGBA_UNORM_BLOCK:133,VK_FORMAT_BC1_RGBA_SRGB_BLOCK:134,VK_FORMAT_BC2_UNORM_BLOCK:135,VK_FORMAT_BC2_SRGB_BLOCK:136,VK_FORMAT_BC3_UNORM_BLOCK:137,VK_FORMAT_BC3_SRGB_BLOCK:138,VK_FORMAT_BC4_UNORM_BLOCK:139,VK_FORMAT_BC4_SNORM_BLOCK:140,VK_FORMAT_BC5_UNORM_BLOCK:141,VK_FORMAT_BC5_SNORM_BLOCK:142,VK_FORMAT_BC6H_UFLOAT_BLOCK:143,VK_FORMAT_BC6H_SFLOAT_BLOCK:144,VK_FORMAT_BC7_UNORM_BLOCK:145,VK_FORMAT_BC7_SRGB_BLOCK:146,VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:147,VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:148,VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:149,VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:150,VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:151,VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:152,VK_FORMAT_EAC_R11_UNORM_BLOCK:153,VK_FORMAT_EAC_R11_SNORM_BLOCK:154,VK_FORMAT_EAC_R11G11_UNORM_BLOCK:155,VK_FORMAT_EAC_R11G11_SNORM_BLOCK:156,VK_FORMAT_ASTC_4x4_UNORM_BLOCK:157,VK_FORMAT_ASTC_4x4_SRGB_BLOCK:158,VK_FORMAT_ASTC_5x4_UNORM_BLOCK:159,VK_FORMAT_ASTC_5x4_SRGB_BLOCK:160,VK_FORMAT_ASTC_5x5_UNORM_BLOCK:161,VK_FORMAT_ASTC_5x5_SRGB_BLOCK:162,VK_FORMAT_ASTC_6x5_UNORM_BLOCK:163,VK_FORMAT_ASTC_6x5_SRGB_BLOCK:164,VK_FORMAT_ASTC_6x6_UNORM_BLOCK:165,VK_FORMAT_ASTC_6x6_SRGB_BLOCK:166,VK_FORMAT_ASTC_8x5_UNORM_BLOCK:167,VK_FORMAT_ASTC_8x5_SRGB_BLOCK:168,VK_FORMAT_ASTC_8x6_UNORM_BLOCK:169,VK_FORMAT_ASTC_8x6_SRGB_BLOCK:170,VK_FORMAT_ASTC_8x8_UNORM_BLOCK:171,VK_FORMAT_ASTC_8x8_SRGB_BLOCK:172,VK_FORMAT_ASTC_10x5_UNORM_BLOCK:173,VK_FORMAT_ASTC_10x5_SRGB_BLOCK:174,VK_FORMAT_ASTC_10x6_UNORM_BLOCK:175,VK_FORMAT_ASTC_10x6_SRGB_BLOCK:176,VK_FORMAT_ASTC_10x8_UNORM_BLOCK:177,VK_FORMAT_ASTC_10x8_SRGB_BLOCK:178,VK_FORMAT_ASTC_10x10_UNORM_BLOCK:179,VK_FORMAT_ASTC_10x10_SRGB_BLOCK:180,VK_FORMAT_ASTC_12x10_UNORM_BLOCK:181,VK_FORMAT_ASTC_12x10_SRGB_BLOCK:182,VK_FORMAT_ASTC_12x12_UNORM_BLOCK:183,VK_FORMAT_ASTC_12x12_SRGB_BLOCK:184,VK_FORMAT_G8B8G8R8_422_UNORM:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:1000156006,VK_FORMAT_R10X6_UNORM_PACK16:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:1000156016,VK_FORMAT_R12X4_UNORM_PACK16:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:1000156033,VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:1000054e3,VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:1000054001,VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:1000054002,VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:1000054003,VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:1000054004,VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:1000054005,VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:1000054006,VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:1000054007,VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT:1000066e3,VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT:1000066001,VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT:1000066002,VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT:1000066003,VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT:1000066004,VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT:1000066005,VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT:1000066006,VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT:1000066007,VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT:1000066008,VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT:1000066009,VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT:1000066010,VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT:1000066011,VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT:1000066012,VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT:1000066013,VK_FORMAT_G8B8G8R8_422_UNORM_KHR:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM_KHR:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR:1000156006,VK_FORMAT_R10X6_UNORM_PACK16_KHR:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR:1000156016,VK_FORMAT_R12X4_UNORM_PACK16_KHR:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM_KHR:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM_KHR:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR:1000156033},V$=Object.freeze(WBt);function jBt(e){return e=e??V.EMPTY_OBJECT,px.fromIonAssetId(2426648,{requestVertexNormals:e.requestVertexNormals??!1})}var _3=jBt;function YBt(e){return e=e??V.EMPTY_OBJECT,px.fromIonAssetId(1,{requestVertexNormals:e.requestVertexNormals??!1,requestWaterMask:e.requestWaterMask??!1,ellipsoid:te.WGS84})}var Ex=YBt;var qBt=1953029805,KBt=2917034100;function H$(e,t){if(H$.passThroughDataForTesting)return t;let n=e.byteLength;if(n===0||n%4!==0)throw new ce("The length of key must be greater than 0 and a multiple of 4.");let i=new DataView(t),o=i.getUint32(0,!0);if(o===qBt||o===KBt)return t;let r=new DataView(e),s=0,a=t.byteLength,c=a-a%8,u=n,f,h=8;for(;s<c;)for(h=(h+8)%24,f=h;s<c&&f<u;)i.setUint32(s,i.getUint32(s,!0)^r.getUint32(f,!0),!0),i.setUint32(s+4,i.getUint32(s+4,!0)^r.getUint32(f+4,!0),!0),s+=8,f+=24;if(s<a)for(f>=u&&(h=(h+8)%24,f=h);s<a;)i.setUint8(s,i.getUint8(s)^r.getUint8(f)),s++,f++}H$.passThroughDataForTesting=!1;var y3=H$;function USe(e,t){return Tr("defaultValue","defaultValue has been deprecated and will be removed in Cesium 1.134. Use the nullish coalescing operator instead: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing"),e??t}Object.defineProperty(USe,"EMPTY_OBJECT",{get:function(){return Tr("defaultValue.EMPTY_OBJECT","defaultValue.EMPTY_OBJECT has been deprecated and will be removed in Cesium 1.134. Use Frozen.EMPTY_OBJECT instead"),V.EMPTY_OBJECT}});var W$=USe;var XBt=new d;function JBt(e,t,n,i){let o=JC(e,t,n,i,XBt);return l(o)?o.x>0&&o.y>0&&o.z>0:!1}var j$=JBt;function ZBt(e){return e<=.04045?e*.07739938080495357:Math.pow((e+.055)*.9478672985781991,2.4)}var Ix=ZBt;function $Bt(e){switch(e){case ee.FLOAT:return"float";case ee.FLOAT_VEC2:return"vec2";case ee.FLOAT_VEC3:return"vec3";case ee.FLOAT_VEC4:return"vec4";case ee.FLOAT_MAT2:return"mat2";case ee.FLOAT_MAT3:return"mat3";case ee.FLOAT_MAT4:return"mat4";case ee.SAMPLER_2D:return"sampler2D";case ee.BOOL:return"bool"}}var Y$=$Bt;function eDt(e,t,n){return function(){n.apply(e,arguments),t.apply(e,arguments)}}var C3=eDt;var tDt=new d(1,1,1);function q$(e){e=e??tDt,this._dimensions=d.clone(e)}Object.defineProperties(q$.prototype,{dimensions:{get:function(){return this._dimensions},set:function(e){d.clone(e,this._dimensions)}}});var nDt=new d;q$.prototype.emit=function(e){let t=this._dimensions,n=d.multiplyByScalar(t,.5,nDt),i=D.randomBetween(-n.x,n.x),o=D.randomBetween(-n.y,n.y),r=D.randomBetween(-n.z,n.z);e.position=d.fromElements(i,o,r,e.position),e.velocity=d.normalize(e.position,e.velocity)};var K$=q$;function VA(){this.featurePropertiesDirty=!1}Object.defineProperties(VA.prototype,{featuresLength:{get:function(){me.throwInstantiationError()}},pointsLength:{get:function(){me.throwInstantiationError()}},trianglesLength:{get:function(){me.throwInstantiationError()}},geometryByteLength:{get:function(){me.throwInstantiationError()}},texturesByteLength:{get:function(){me.throwInstantiationError()}},batchTableByteLength:{get:function(){me.throwInstantiationError()}},innerContents:{get:function(){me.throwInstantiationError()}},ready:{get:function(){me.throwInstantiationError()}},tileset:{get:function(){me.throwInstantiationError()}},tile:{get:function(){me.throwInstantiationError()}},url:{get:function(){me.throwInstantiationError()}},batchTable:{get:function(){me.throwInstantiationError()}},metadata:{get:function(){me.throwInstantiationError()},set:function(e){me.throwInstantiationError()}},group:{get:function(){me.throwInstantiationError()},set:function(e){me.throwInstantiationError()}}});VA.prototype.hasProperty=function(e,t){me.throwInstantiationError()};VA.prototype.getFeature=function(e){me.throwInstantiationError()};VA.prototype.applyDebugSettings=function(e,t){me.throwInstantiationError()};VA.prototype.applyStyle=function(e){me.throwInstantiationError()};VA.prototype.update=function(e,t){me.throwInstantiationError()};VA.prototype.pick=function(e,t,n){me.throwInstantiationError()};VA.prototype.isDestroyed=function(){me.throwInstantiationError()};VA.prototype.destroy=function(){me.throwInstantiationError()};var X$=VA;function Kw(e,t){this._conditionsExpression=ze(e,!0),this._conditions=e.conditions,this._runtimeConditions=void 0,oDt(this,t)}Object.defineProperties(Kw.prototype,{conditionsExpression:{get:function(){return this._conditionsExpression}}});function iDt(e,t){this.condition=e,this.expression=t}function oDt(e,t){let n=[],i=e._conditions;if(!l(i))return;let o=i.length;for(let r=0;r<o;++r){let s=i[r],a=String(s[0]),c=String(s[1]);n.push(new iDt(new id(a,t),new id(c,t)))}e._runtimeConditions=n}Kw.prototype.evaluate=function(e,t){let n=this._runtimeConditions;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.condition.evaluate(e))return r.expression.evaluate(e,t)}};Kw.prototype.evaluateColor=function(e,t){let n=this._runtimeConditions;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.condition.evaluate(e))return r.expression.evaluateColor(e,t)}};Kw.prototype.getShaderFunction=function(e,t,n,i){let o=this._runtimeConditions;if(!l(o)||o.length===0)return;let r="",s=o.length;for(let a=0;a<s;++a){let c=o[a],u=c.condition.getShaderExpression(t,n),f=c.expression.getShaderExpression(t,n);r+=` ${a===0?"if":"else if"} (${u}) + { + return ${f}; + } +`}return r=`${i} ${e} +{ +${r} return ${i}(1.0); +} +`,r};Kw.prototype.getVariables=function(){let e=[],t=this._runtimeConditions;if(!l(t)||t.length===0)return e;let n=t.length;for(let i=0;i<n;++i){let o=t[i];si(e,o.condition.getVariables()),si(e,o.expression.getVariables())}return e=e.filter(function(i,o,r){return r.indexOf(i)===o}),e};var E3=Kw;function RC(e){this._style={},this._ready=!1,this._show=void 0,this._color=void 0,this._pointSize=void 0,this._pointOutlineColor=void 0,this._pointOutlineWidth=void 0,this._labelColor=void 0,this._labelOutlineColor=void 0,this._labelOutlineWidth=void 0,this._font=void 0,this._labelStyle=void 0,this._labelText=void 0,this._backgroundColor=void 0,this._backgroundPadding=void 0,this._backgroundEnabled=void 0,this._scaleByDistance=void 0,this._translucencyByDistance=void 0,this._distanceDisplayCondition=void 0,this._heightOffset=void 0,this._anchorLineEnabled=void 0,this._anchorLineColor=void 0,this._image=void 0,this._disableDepthTestDistance=void 0,this._horizontalOrigin=void 0,this._verticalOrigin=void 0,this._labelHorizontalOrigin=void 0,this._labelVerticalOrigin=void 0,this._meta=void 0,this._colorShaderFunction=void 0,this._showShaderFunction=void 0,this._pointSizeShaderFunction=void 0,this._colorShaderFunctionReady=!1,this._showShaderFunctionReady=!1,this._pointSizeShaderFunctionReady=!1,this._colorShaderTranslucent=!1,rDt(this,e)}function rDt(e,t){t=ze(t,!0)??e._style,e._style=t,e.show=t.show,e.color=t.color,e.pointSize=t.pointSize,e.pointOutlineColor=t.pointOutlineColor,e.pointOutlineWidth=t.pointOutlineWidth,e.labelColor=t.labelColor,e.labelOutlineColor=t.labelOutlineColor,e.labelOutlineWidth=t.labelOutlineWidth,e.labelStyle=t.labelStyle,e.font=t.font,e.labelText=t.labelText,e.backgroundColor=t.backgroundColor,e.backgroundPadding=t.backgroundPadding,e.backgroundEnabled=t.backgroundEnabled,e.scaleByDistance=t.scaleByDistance,e.translucencyByDistance=t.translucencyByDistance,e.distanceDisplayCondition=t.distanceDisplayCondition,e.heightOffset=t.heightOffset,e.anchorLineEnabled=t.anchorLineEnabled,e.anchorLineColor=t.anchorLineColor,e.image=t.image,e.disableDepthTestDistance=t.disableDepthTestDistance,e.horizontalOrigin=t.horizontalOrigin,e.verticalOrigin=t.verticalOrigin,e.labelHorizontalOrigin=t.labelHorizontalOrigin,e.labelVerticalOrigin=t.labelVerticalOrigin;let n={};if(l(t.meta)){let i=t.defines,o=t.meta??V.EMPTY_OBJECT;for(let r in o)o.hasOwnProperty(r)&&(n[r]=new id(o[r],i))}e._meta=n,e._ready=!0}function yr(e,t){let n=(e._style??V.EMPTY_OBJECT).defines;if(l(t)){if(typeof t=="boolean"||typeof t=="number")return new id(String(t));if(typeof t=="string")return new id(t,n);if(l(t.conditions))return new E3(t,n)}else return;return t}function Cr(e){if(l(e)){if(l(e.expression))return e.expression;if(l(e.conditionsExpression))return ze(e.conditionsExpression,!0)}else return;return e}Object.defineProperties(RC.prototype,{style:{get:function(){return this._style}},show:{get:function(){return this._show},set:function(e){this._show=yr(this,e),this._style.show=Cr(this._show),this._showShaderFunctionReady=!1}},color:{get:function(){return this._color},set:function(e){this._color=yr(this,e),this._style.color=Cr(this._color),this._colorShaderFunctionReady=!1}},pointSize:{get:function(){return this._pointSize},set:function(e){this._pointSize=yr(this,e),this._style.pointSize=Cr(this._pointSize),this._pointSizeShaderFunctionReady=!1}},pointOutlineColor:{get:function(){return this._pointOutlineColor},set:function(e){this._pointOutlineColor=yr(this,e),this._style.pointOutlineColor=Cr(this._pointOutlineColor)}},pointOutlineWidth:{get:function(){return this._pointOutlineWidth},set:function(e){this._pointOutlineWidth=yr(this,e),this._style.pointOutlineWidth=Cr(this._pointOutlineWidth)}},labelColor:{get:function(){return this._labelColor},set:function(e){this._labelColor=yr(this,e),this._style.labelColor=Cr(this._labelColor)}},labelOutlineColor:{get:function(){return this._labelOutlineColor},set:function(e){this._labelOutlineColor=yr(this,e),this._style.labelOutlineColor=Cr(this._labelOutlineColor)}},labelOutlineWidth:{get:function(){return this._labelOutlineWidth},set:function(e){this._labelOutlineWidth=yr(this,e),this._style.labelOutlineWidth=Cr(this._labelOutlineWidth)}},font:{get:function(){return this._font},set:function(e){this._font=yr(this,e),this._style.font=Cr(this._font)}},labelStyle:{get:function(){return this._labelStyle},set:function(e){this._labelStyle=yr(this,e),this._style.labelStyle=Cr(this._labelStyle)}},labelText:{get:function(){return this._labelText},set:function(e){this._labelText=yr(this,e),this._style.labelText=Cr(this._labelText)}},backgroundColor:{get:function(){return this._backgroundColor},set:function(e){this._backgroundColor=yr(this,e),this._style.backgroundColor=Cr(this._backgroundColor)}},backgroundPadding:{get:function(){return this._backgroundPadding},set:function(e){this._backgroundPadding=yr(this,e),this._style.backgroundPadding=Cr(this._backgroundPadding)}},backgroundEnabled:{get:function(){return this._backgroundEnabled},set:function(e){this._backgroundEnabled=yr(this,e),this._style.backgroundEnabled=Cr(this._backgroundEnabled)}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){this._scaleByDistance=yr(this,e),this._style.scaleByDistance=Cr(this._scaleByDistance)}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){this._translucencyByDistance=yr(this,e),this._style.translucencyByDistance=Cr(this._translucencyByDistance)}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){this._distanceDisplayCondition=yr(this,e),this._style.distanceDisplayCondition=Cr(this._distanceDisplayCondition)}},heightOffset:{get:function(){return this._heightOffset},set:function(e){this._heightOffset=yr(this,e),this._style.heightOffset=Cr(this._heightOffset)}},anchorLineEnabled:{get:function(){return this._anchorLineEnabled},set:function(e){this._anchorLineEnabled=yr(this,e),this._style.anchorLineEnabled=Cr(this._anchorLineEnabled)}},anchorLineColor:{get:function(){return this._anchorLineColor},set:function(e){this._anchorLineColor=yr(this,e),this._style.anchorLineColor=Cr(this._anchorLineColor)}},image:{get:function(){return this._image},set:function(e){this._image=yr(this,e),this._style.image=Cr(this._image)}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance=yr(this,e),this._style.disableDepthTestDistance=Cr(this._disableDepthTestDistance)}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin=yr(this,e),this._style.horizontalOrigin=Cr(this._horizontalOrigin)}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){this._verticalOrigin=yr(this,e),this._style.verticalOrigin=Cr(this._verticalOrigin)}},labelHorizontalOrigin:{get:function(){return this._labelHorizontalOrigin},set:function(e){this._labelHorizontalOrigin=yr(this,e),this._style.labelHorizontalOrigin=Cr(this._labelHorizontalOrigin)}},labelVerticalOrigin:{get:function(){return this._labelVerticalOrigin},set:function(e){this._labelVerticalOrigin=yr(this,e),this._style.labelVerticalOrigin=Cr(this._labelVerticalOrigin)}},meta:{get:function(){return this._meta},set:function(e){this._meta=e}}});RC.fromUrl=function(e){return we.createIfNeeded(e).fetchJson(e).then(function(n){return new RC(n)})};RC.prototype.getColorShaderFunction=function(e,t,n){return this._colorShaderFunctionReady?(n.translucent=this._colorShaderTranslucent,this._colorShaderFunction):(this._colorShaderFunctionReady=!0,l(this.color)&&l(this.color.getShaderFunction)?this._colorShaderFunction=this.color.getShaderFunction(e,t,n,"vec4"):this._colorShaderFunction=void 0,this._colorShaderTranslucent=n.translucent,this._colorShaderFunction)};RC.prototype.getShowShaderFunction=function(e,t,n){return this._showShaderFunctionReady?this._showShaderFunction:(this._showShaderFunctionReady=!0,l(this.show)&&l(this.show.getShaderFunction)?this._showShaderFunction=this.show.getShaderFunction(e,t,n,"bool"):this._showShaderFunction=void 0,this._showShaderFunction)};RC.prototype.getPointSizeShaderFunction=function(e,t,n){return this._pointSizeShaderFunctionReady?this._pointSizeShaderFunction:(this._pointSizeShaderFunctionReady=!0,l(this.pointSize)&&l(this.pointSize.getShaderFunction)?this._pointSizeShaderFunction=this.pointSize.getShaderFunction(e,t,n,"float"):this._pointSizeShaderFunction=void 0,this._pointSizeShaderFunction)};RC.prototype.getVariables=function(){let e=[];return l(this.color)&&l(this.color.getVariables)&&si(e,this.color.getVariables()),l(this.show)&&l(this.show.getVariables)&&si(e,this.show.getVariables()),l(this.pointSize)&&l(this.pointSize.getVariables)&&si(e,this.pointSize.getVariables()),e=e.filter(function(t,n,i){return i.indexOf(t)===n}),e};var xx=RC;function I3(e){e=e??V.EMPTY_OBJECT,this._maximumSubtreeCount=e.maximumSubtreeCount??0,this._subtreeRequestCounter=0,this._queue=new cx({comparator:I3.comparator})}I3.prototype.addSubtree=function(e){let t=new sDt(e,this._subtreeRequestCounter);this._subtreeRequestCounter++,this._queue.insert(t);let n=e.implicitCoordinates;if(n.level>0){let i=n.getParentSubtreeCoordinates(),o=this.find(i)}if(this._maximumSubtreeCount>0)for(;this._queue.length>this._maximumSubtreeCount&&this._queue.getMinimum()!==t;)this._queue.removeMinimum()};I3.prototype.find=function(e){let t=this._queue,n=t.internalArray,i=t.length;for(let o=0;o<i;o++){let r=n[o],a=r.subtree.implicitCoordinates;if(e.isEqual(a))return r.subtree}};I3.comparator=function(e,t){let n=e.subtree.implicitCoordinates,i=t.subtree.implicitCoordinates;return n.isAncestor(i)?1:i.isAncestor(n)?-1:e.stamp-t.stamp};function sDt(e,t){this.subtree=e,this.stamp=t}var x3=I3;function b3(e){e=e??V.EMPTY_OBJECT;let{className:t,names:n,types:i,componentTypes:o,shape:r,dimensions:s,paddingBefore:a=d.ZERO.clone(),paddingAfter:c=d.ZERO.clone(),globalTransform:u=N.IDENTITY.clone(),shapeTransform:f=N.IDENTITY.clone(),minBounds:h,maxBounds:A,minimumValues:g,maximumValues:m,maximumTileCount:_}=e;this._shapeTransform=f,this._globalTransform=u,this._shape=r,this._minBounds=h,this._maxBounds=A,this._dimensions=s,this._paddingBefore=a,this._paddingAfter=c,this._className=t,this._names=n,this._types=i,this._componentTypes=o,this._metadataOrder=r===ec.ELLIPSOID?Yd.Z_UP:Yd.Y_UP,this._minimumValues=g,this._maximumValues=m,this._maximumTileCount=_,this._availableLevels=void 0,this._implicitTileset=void 0,this._subtreeCache=new x3}Object.defineProperties(b3.prototype,{globalTransform:{get:function(){return this._globalTransform}},shapeTransform:{get:function(){return this._shapeTransform}},shape:{get:function(){return this._shape}},minBounds:{get:function(){return this._minBounds}},maxBounds:{get:function(){return this._maxBounds}},dimensions:{get:function(){return this._dimensions}},paddingBefore:{get:function(){return this._paddingBefore}},paddingAfter:{get:function(){return this._paddingAfter}},className:{get:function(){return this._className}},names:{get:function(){return this._names}},types:{get:function(){return this._types}},componentTypes:{get:function(){return this._componentTypes}},metadataOrder:{get:function(){return this._metadataOrder}},minimumValues:{get:function(){return this._minimumValues}},maximumValues:{get:function(){return this._maximumValues}},maximumTileCount:{get:function(){return this._maximumTileCount}},availableLevels:{get:function(){return this._availableLevels}}});b3.fromUrl=async function(e){let t=we.createIfNeeded(e),n=await t.fetchJson();cDt(n);let i=ADt(n,t);await i.load();let{root:o}=n,r=Ei(n,"3DTILES_metadata")?n.extensions["3DTILES_metadata"]:n,s=new N0({metadataJson:r,schema:i.schema}),a=o.content.extensions["3DTILES_content_voxels"],c=a.class,u=pDt(s,c);Object.assign(u,lDt(o)),l(o.transform)?u.globalTransform=N.unpack(o.transform):u.globalTransform=N.clone(N.IDENTITY),u.dimensions=d.unpack(a.dimensions),u.maximumTileCount=aDt(s),l(a.padding)&&(u.paddingBefore=d.unpack(a.padding.before),u.paddingAfter=d.unpack(a.padding.after));let f=new b3(u),h=new O0(t,o,i.schema);return f._implicitTileset=h,f._availableLevels=h.availableLevels,Fi.unload(i),f};function aDt(e){if(l(e.tileset))return e.tileset.getPropertyBySemantic(qE.TILESET_TILE_COUNT)}function cDt(e){let t=e.root;if(!l(t.content))throw new ce("Root must have content");if(!Ei(t.content,"3DTILES_content_voxels"))throw new ce("Root tile content must have 3DTILES_content_voxels extension");if(!Ei(t,"3DTILES_implicit_tiling")&&!l(t.implicitTiling))throw new ce("Root tile must have implicit tiling");if(!l(e.schema)&&!l(e.schemaUri)&&!Ei(e,"3DTILES_metadata"))throw new ce("Tileset must have a metadata schema")}function lDt(e){let t=e.boundingVolume;if(l(t.box))return hDt(t.box);if(l(t.region))return uDt(t.region);if(Ei(t,"3DTILES_bounding_volume_cylinder"))return mDt(t.extensions["3DTILES_bounding_volume_cylinder"]);throw new ce("Only box, region and 3DTILES_bounding_volume_cylinder are supported in Cesium3DTilesVoxelProvider")}function uDt(e){let t=e[0],n=e[1],i=e[2],o=e[3],r=e[4],s=e[5],a=N.fromScale(te.WGS84.radii),c=new d(t,n,r),u=new d(i,o,s);return{shape:ec.ELLIPSOID,minBounds:c,maxBounds:u,shapeTransform:a}}var fDt=new d,dDt=new J;function hDt(e){let t=Fn.unpack(e),n=J.getScale(t.halfAxes,fDt),i=J.getRotation(t.halfAxes,dDt);return{shape:ec.BOX,minBounds:d.negate(n,new d),maxBounds:d.clone(n),shapeTransform:N.fromRotationTranslation(i,t.center)}}function mDt(e){let{minRadius:t,maxRadius:n,height:i,minAngle:o=-D.PI,maxAngle:r=D.PI,translation:s=[0,0,0],rotation:a=[0,0,0,1]}=e,c=-.5*i+s[2],u=.5*i+s[2],f=N.fromTranslationQuaternionRotationScale(d.unpack(s),Le.unpack(a),d.ONE);return{shape:ec.CYLINDER,minBounds:d.fromElements(t,o,c),maxBounds:d.fromElements(n,r,u),shapeTransform:f}}function ADt(e,t){let{schemaUri:n,schema:i}=e;return l(n)?Fi.getSchemaLoader({resource:t.getDerivedResource({url:n})}):Fi.getSchemaLoader({schema:i})}function pDt(e,t){let{schema:n,statistics:i}=e,o=i?.classes[t],r=n.classes[t].properties,s=Object.entries(r).map(([g,m])=>{let{type:_,componentType:y}=m,C=o?.properties[g].min,E=o?.properties[g].max,I=pt.getComponentCount(_),b=GSe(C,I),S=GSe(E,I);return{id:g,type:_,componentType:y,minValue:b,maxValue:S}}),a=s.map(g=>g.id),c=s.map(g=>g.type),u=s.map(g=>g.componentType),f=s.map(g=>g.minValue),h=s.map(g=>g.maxValue),A=f.some(l);return{className:t,names:a,types:c,componentTypes:u,minimumValues:A?f:void 0,maximumValues:A?h:void 0}}function GSe(e,t){if(!l(e))return;let n=Array.isArray(e)?e:[e];return Array.from({length:t},(i,o)=>n[o])}async function gDt(e,t){let n=e._implicitTileset,i=e._subtreeCache,o=i.find(t);if(l(o))return o;let r=n.subtreeUriTemplate.getDerivedResource({templateValues:t.getTemplateValues()}),s=n.baseResource.getDerivedResource({url:r.url}),a=await s.fetchArrayBuffer();if(o=i.find(t),l(o))return o;let c=lg(a);return o=await YE.fromSubtreeJson(s,c.jsonPayload,c.binaryPayload,n,t),i.addSubtree(o),o}b3.prototype.requestData=async function(e){e=e??V.EMPTY_OBJECT;let{tileLevel:t=0,tileX:n=0,tileY:i=0,tileZ:o=0,keyframe:r=0}=e;if(r!==0)return Promise.reject("3D Tiles currently doesn't support time-dynamic data.");let s=this._implicitTileset,a=new F0({subdivisionScheme:s.subdivisionScheme,subtreeLevels:s.subtreeLevels,level:t,x:n,y:i,z:o}),c=a.isSubtreeRoot()&&a.level>0,u=c?a.getParentSubtreeCoordinates():a.getSubtreeCoordinates(),h=await gDt(this,u);if(!(c?h.childSubtreeIsAvailableAtCoordinates:h.tileIsAvailableAtCoordinates).call(h,a))return Promise.reject(`Tile is not available at level ${t}, x ${n}, y ${i}, z ${o}.`);let{contentUriTemplates:m,baseResource:_}=s,y=m[0].getDerivedResource({templateValues:a.getTemplateValues()}),C=_.getDerivedResource({url:y.url});return ox.fromGltf(C)};var J$=b3;function Z$(e){e=e??1,this._radius=e??1}Object.defineProperties(Z$.prototype,{radius:{get:function(){return this._radius},set:function(e){this._radius=e}}});Z$.prototype.emit=function(e){let t=D.randomBetween(0,D.TWO_PI),n=D.randomBetween(0,this._radius),i=n*Math.cos(t),o=n*Math.sin(t),r=0;e.position=d.fromElements(i,o,r,e.position),e.velocity=d.clone(d.UNIT_Z,e.velocity)};var T3=Z$;var $$={CUMULUS:0};$$.validate=function(e){return e===$$.CUMULUS};var Xw=Object.freeze($$);function Tm(e,t){if(e=e??V.EMPTY_OBJECT,this._show=e.show??!0,this._position=d.clone(e.position??d.ZERO),!l(e.scale)&&l(e.maximumSize))this._maximumSize=d.clone(e.maximumSize),this._scale=new U(this._maximumSize.x,this._maximumSize.y);else{this._scale=U.clone(e.scale??new U(20,12));let n=new d(this._scale.x,this._scale.y,Math.min(this._scale.x,this._scale.y)/1.5);this._maximumSize=d.clone(e.maximumSize??n)}this._slice=e.slice??-1,this._color=G.clone(e.color??G.WHITE),this._brightness=e.brightness??1,this._cloudCollection=t,this._index=-1}var _Dt=Tm.SHOW_INDEX=0,yDt=Tm.POSITION_INDEX=1,CDt=Tm.SCALE_INDEX=2,EDt=Tm.MAXIMUM_SIZE_INDEX=3,IDt=Tm.SLICE_INDEX=4,xDt=Tm.BRIGHTNESS_INDEX=5,bDt=Tm.COLOR_INDEX=6;Tm.NUMBER_OF_PROPERTIES=7;function bx(e,t){let n=e._cloudCollection;l(n)&&(n._updateCloud(e,t),e._dirty=!0)}Object.defineProperties(Tm.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,bx(this,_Dt))}},position:{get:function(){return this._position},set:function(e){let t=this._position;d.equals(t,e)||(d.clone(e,t),bx(this,yDt))}},scale:{get:function(){return this._scale},set:function(e){let t=this._scale;U.equals(t,e)||(U.clone(e,t),bx(this,CDt))}},maximumSize:{get:function(){return this._maximumSize},set:function(e){let t=this._maximumSize;d.equals(t,e)||(d.clone(e,t),bx(this,EDt))}},color:{get:function(){return this._color},set:function(e){let t=this._color;G.equals(t,e)||(G.clone(e,t),bx(this,bDt))}},slice:{get:function(){return this._slice},set:function(e){this._slice!==e&&(this._slice=e,bx(this,IDt))}},brightness:{get:function(){return this._brightness},set:function(e){this._brightness!==e&&(this._brightness=e,bx(this,xDt))}}});Tm.prototype._destroy=function(){this._cloudCollection=void 0};var Ff=Tm;var Qf,C5=new d,TDt={positionHighAndScaleX:0,positionLowAndScaleY:1,packedAttribute0:2,packedAttribute1:3,color:4},SDt={direction:0,positionHighAndScaleX:1,positionLowAndScaleY:2,packedAttribute0:3,packedAttribute1:4,color:5},wDt=Ff.SHOW_INDEX,BDt=Ff.POSITION_INDEX,DDt=Ff.SCALE_INDEX,vDt=Ff.MAXIMUM_SIZE_INDEX,PDt=Ff.SLICE_INDEX,RDt=Ff.BRIGHTNESS_INDEX,MDt=Ff.NUMBER_OF_PROPERTIES,NDt=Ff.COLOR_INDEX;function Sm(e){e=e??V.EMPTY_OBJECT,this._clouds=[],this._cloudsToUpdate=[],this._cloudsToUpdateIndex=0,this._cloudsRemoved=!1,this._createVertexArray=!1,this._propertiesChanged=new Uint32Array(MDt),this._noiseTexture=void 0,this._textureSliceWidth=128,this._noiseTextureRows=4,this.noiseDetail=e.noiseDetail??16,this.noiseOffset=d.clone(e.noiseOffset??d.ZERO),this._loading=!1,this._ready=!1;let t=this;this._uniforms={u_noiseTexture:function(){return t._noiseTexture},u_noiseTextureDimensions:zSe(t),u_noiseDetail:function(){return t.noiseDetail}},this._vaNoise=void 0,this._spNoise=void 0,this._spCreated=!1,this._sp=void 0,this._rs=void 0,this.show=e.show??!0,this._colorCommands=[],this.debugBillboards=e.debugBillboards??!1,this._compiledDebugBillboards=!1,this.debugEllipsoids=e.debugEllipsoids??!1,this._compiledDebugEllipsoids=!1}function zSe(e){return function(){return C5.x=e._textureSliceWidth,C5.y=e._noiseTextureRows,C5.z=1/e._noiseTextureRows,C5}}Object.defineProperties(Sm.prototype,{length:{get:function(){return tee(this),this._clouds.length}}});function VSe(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}Sm.prototype.add=function(e){e=e??V.EMPTY_OBJECT;let t=e.cloudType??Xw.CUMULUS,n;return t===Xw.CUMULUS&&(n=new Ff(e,this),n._index=this._clouds.length,this._clouds.push(n),this._createVertexArray=!0),n};Sm.prototype.remove=function(e){return this.contains(e)?(this._clouds[e._index]=void 0,this._cloudsRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};Sm.prototype.removeAll=function(){VSe(this._clouds),this._clouds=[],this._cloudsToUpdate=[],this._cloudsToUpdateIndex=0,this._cloudsRemoved=!1,this._createVertexArray=!0};function tee(e){if(e._cloudsRemoved){e._cloudsRemoved=!1;let t=[],n=e._clouds,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];l(s)&&(n._index=r++,t.push(s))}e._clouds=t}}Sm.prototype._updateCloud=function(e,t){e._dirty||(this._cloudsToUpdate[this._cloudsToUpdateIndex++]=e),++this._propertiesChanged[t]};Sm.prototype.contains=function(e){return l(e)&&e._cloudCollection===this};Sm.prototype.get=function(e){return tee(this),this._clouds[e]};var LDt=new Float32Array([-1,-1,1,-1,1,1,-1,1]),ODt=new Uint16Array([0,1,2,0,2,3]);function FDt(e){let t=Ct.createVertexBuffer({context:e,typedArray:LDt,usage:Qe.STATIC_DRAW}),n=Ct.createIndexBuffer({context:e,typedArray:ODt,usage:Qe.STATIC_DRAW,indexDatatype:Oe.UNSIGNED_SHORT}),i=[{index:0,vertexBuffer:t,componentsPerAttribute:2,componentDatatype:q.FLOAT}];return new li({context:e,attributes:i,indexBuffer:n})}var nee;function QDt(e){let n=e.cache.cloudCollection_indexBufferBatched;if(l(n))return n;let i=16384*6-6,o=new Uint16Array(i);for(let r=0,s=0;r<i;r+=6,s+=4)o[r]=s,o[r+1]=s+1,o[r+2]=s+2,o[r+3]=s,o[r+4]=s+2,o[r+5]=s+3;return n=Ct.createIndexBuffer({context:e,typedArray:o,usage:Qe.STATIC_DRAW,indexDatatype:Oe.UNSIGNED_SHORT}),n.vertexArrayDestroyable=!1,e.cache.cloudCollection_indexBufferBatched=n,n}function kDt(e){let t=e.cache.cloudCollection_indexBufferInstanced;return l(t)||(t=Ct.createIndexBuffer({context:e,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Qe.STATIC_DRAW,indexDatatype:Oe.UNSIGNED_SHORT}),t.vertexArrayDestroyable=!1,e.cache.cloudCollection_indexBufferInstanced=t),t}function UDt(e){let t=e.cache.cloudCollection_vertexBufferInstanced;return l(t)||(t=Ct.createVertexBuffer({context:e,typedArray:new Float32Array([0,0,1,0,1,1,0,1]),usage:Qe.STATIC_DRAW}),t.vertexArrayDestroyable=!1,e.cache.cloudCollection_vertexBufferInstanced=t),t}function GDt(e,t,n){let i=[{index:Qf.positionHighAndScaleX,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:Qe.STATIC_DRAW},{index:Qf.positionLowAndScaleY,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:Qe.STATIC_DRAW},{index:Qf.packedAttribute0,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:Qe.STATIC_DRAW},{index:Qf.packedAttribute1,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:Qe.STATIC_DRAW},{index:Qf.color,componentsPerAttribute:4,componentDatatype:q.UNSIGNED_BYTE,normalize:!0,usage:Qe.STATIC_DRAW}];n&&i.push({index:Qf.direction,componentsPerAttribute:2,componentDatatype:q.FLOAT,vertexBuffer:UDt(e)});let o=n?t:4*t;return new Zp(e,i,o,n)}var eee=new ei;function HSe(e,t,n,i){let o,r=n[Qf.positionHighAndScaleX],s=n[Qf.positionLowAndScaleY],a=i.position;ei.fromCartesian(a,eee);let c=i.scale,u=eee.high,f=eee.low;e._instanced?(o=i._index,r(o,u.x,u.y,u.z,c.x),s(o,f.x,f.y,f.z,c.y)):(o=i._index*4,r(o+0,u.x,u.y,u.z,c.x),r(o+1,u.x,u.y,u.z,c.x),r(o+2,u.x,u.y,u.z,c.x),r(o+3,u.x,u.y,u.z,c.x),s(o+0,f.x,f.y,f.z,c.y),s(o+1,f.x,f.y,f.z,c.y),s(o+2,f.x,f.y,f.z,c.y),s(o+3,f.x,f.y,f.z,c.y))}function WSe(e,t,n,i){let o,r=n[Qf.packedAttribute0],s=i.show,a=i.brightness;e._instanced?(o=i._index,r(o,s,a,0,0)):(o=i._index*4,r(o+0,s,a,0,0),r(o+1,s,a,1,0),r(o+2,s,a,1,1),r(o+3,s,a,0,1))}function jSe(e,t,n,i){let o,r=n[Qf.packedAttribute1],s=i.maximumSize,a=i.slice;e._instanced?(o=i._index,r(o,s.x,s.y,s.z,a)):(o=i._index*4,r(o+0,s.x,s.y,s.z,a),r(o+1,s.x,s.y,s.z,a),r(o+2,s.x,s.y,s.z,a),r(o+3,s.x,s.y,s.z,a))}function YSe(e,t,n,i){let o,r=n[Qf.color],s=i.color,a=G.floatToByte(s.red),c=G.floatToByte(s.green),u=G.floatToByte(s.blue),f=G.floatToByte(s.alpha);e._instanced?(o=i._index,r(o,a,c,u,f)):(o=i._index*4,r(o+0,a,c,u,f),r(o+1,a,c,u,f),r(o+2,a,c,u,f),r(o+3,a,c,u,f))}function zDt(e,t,n,i){HSe(e,t,n,i),WSe(e,t,n,i),jSe(e,t,n,i),YSe(e,t,n,i)}function VDt(e,t,n,i){let o=e,r=o._textureSliceWidth,s=o._noiseTextureRows,a=t.context;o._vaNoise=FDt(a),o._spNoise=an.fromCache({context:a,vertexShaderSource:n,fragmentShaderSource:i,attributeLocations:{position:0}});let c=o.noiseDetail,u=o.noiseOffset;o._noiseTexture=new Mt({context:a,width:r*r/s,height:r*s,pixelDatatype:Ve.UNSIGNED_BYTE,pixelFormat:$e.RGBA,sampler:new on({wrapS:Tn.REPEAT,wrapT:Tn.REPEAT,minificationFilter:Zt.NEAREST,magnificationFilter:mi.NEAREST})});let f=new Tl({vertexArray:o._vaNoise,shaderProgram:o._spNoise,outputTexture:o._noiseTexture,uniformMap:{u_noiseTextureDimensions:zSe(o),u_noiseDetail:function(){return c},u_noiseOffset:function(){return u}},persists:!1,owner:e,postExecute:function(h){o._ready=!0,o._loading=!1}});t.commandList.push(f),o._loading=!0}function HDt(e,t){let n=e,i=t.context;n._createVertexArray=!1,n._vaf=n._vaf&&n._vaf.destroy();let o=e._clouds,r=o.length;if(r>0){n._vaf=GDt(i,r,n._instanced);let s=n._vaf.writers,a;for(a=0;a<r;++a){let c=o[a];zDt(e,t,s,c)}n._vaf.commit(nee(i))}}var WDt=[];function jDt(e,t){let n=t.context,i=e,r=i._clouds.length,s=i._cloudsToUpdate,a=i._cloudsToUpdateIndex,c=i._propertiesChanged,u=WDt;u.length=0,(c[BDt]||c[DDt])&&u.push(HSe),(c[wDt]||c[RDt])&&u.push(WSe),(c[vDt]||c[PDt])&&u.push(jSe),c[NDt]&&u.push(YSe);let f=u.length,h=i._vaf.writers,A,g,m;if(a/r>.1){for(A=0;A<a;++A)for(g=s[A],g._dirty=!1,m=0;m<f;++m)u[m](e,t,h,g);i._vaf.commit(nee(n))}else{for(A=0;A<a;++A){for(g=s[A],g._dirty=!1,m=0;m<f;++m)u[m](e,t,h,g);i._instanced?i._vaf.subCommit(g._index,1):i._vaf.subCommit(g._index*4,4)}i._vaf.endSubCommits()}i._cloudsToUpdateIndex=0}function YDt(e,t,n,i){let o=t.context,r=e,s=new He({defines:[],sources:[n]});r._instanced&&s.defines.push("INSTANCED");let a=new He({defines:[],sources:[i]});r.debugBillboards&&a.defines.push("DEBUG_BILLBOARDS"),r.debugEllipsoids&&a.defines.push("DEBUG_ELLIPSOIDS"),r._sp=an.replaceCache({context:o,shaderProgram:r._sp,vertexShaderSource:s,fragmentShaderSource:a,attributeLocations:Qf}),r._rs=Ue.fromCache({depthTest:{enabled:!0,func:ee.LESS},depthMask:!1,blending:pn.ALPHA_BLEND}),r._spCreated=!0,r._compiledDebugBillboards=r.debugBillboards,r._compiledDebugEllipsoids=r.debugEllipsoids}function qDt(e,t){let n=e,i=t.passes,o=n._uniforms,r=t.commandList;if(i.render){let s=n._colorCommands,a=n._vaf.va,c=a.length;s.length=c;for(let u=0;u<c;u++){let f=s[u];l(f)||(f=s[u]=new nt),f.pass=Be.TRANSLUCENT,f.owner=e,f.uniformMap=o,f.count=a[u].indicesCount,f.vertexArray=a[u].va,f.shaderProgram=n._sp,f.renderState=n._rs,n._instanced&&(f.count=6,f.instanceCount=n._clouds.length),r.push(f)}}}Sm.prototype.update=function(e){if(tee(this),!this.show)return;let t=this.debugBillboards||this.debugEllipsoids;this._ready=t?!0:l(this._noiseTexture),!this._ready&&!this._loading&&!t&&VDt(this,e,P2,v2),this._instanced=e.context.instancedArrays,Qf=this._instanced?SDt:TDt,nee=this._instanced?kDt:QDt;let i=this._clouds.length,o=this._cloudsToUpdate,r=this._cloudsToUpdateIndex;this._createVertexArray?HDt(this,e):r>0&&jDt(this,e),r>i*1.5&&(o.length=i),!(!l(this._vaf)||!l(this._vaf.va)||!this._ready&!t)&&((!this._spCreated||this.debugBillboards!==this._compiledDebugBillboards||this.debugEllipsoids!==this._compiledDebugEllipsoids)&&YDt(this,e,D2,B2),qDt(this,e))};Sm.prototype.isDestroyed=function(){return!1};Sm.prototype.destroy=function(){return this._noiseTexture=this._noiseTexture&&this._noiseTexture.destroy(),this._sp=this._sp&&this._sp.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),VSe(this._clouds),ue(this)};var iee=Sm;var KDt=D.toRadians(30);function oee(e){this._angle=e??KDt}Object.defineProperties(oee.prototype,{angle:{get:function(){return this._angle},set:function(e){this._angle=e}}});oee.prototype.emit=function(e){let t=Math.tan(this._angle),n=D.randomBetween(0,D.TWO_PI),i=D.randomBetween(0,t),o=i*Math.cos(n),r=i*Math.sin(n),s=1;e.velocity=d.fromElements(o,r,s,e.velocity),d.normalize(e.velocity,e.velocity),e.position=d.clone(d.ZERO,e.position)};var ree=oee;function S3(e){e=e??V.EMPTY_OBJECT;let t=e.attributeName,n=e.perInstanceAttribute;l(n)||(n=!1);let i=e.glslDatatype??"vec3",o=`v_${t}`,r;if(t==="normal"||t==="tangent"||t==="bitangent")r=`vec4 getColor() { return vec4((${o} + vec3(1.0)) * 0.5, 1.0); } +`;else switch(t==="st"&&(i="vec2"),i){case"float":r=`vec4 getColor() { return vec4(vec3(${o}), 1.0); } +`;break;case"vec2":r=`vec4 getColor() { return vec4(${o}, 0.0, 1.0); } +`;break;case"vec3":r=`vec4 getColor() { return vec4(${o}, 1.0); } +`;break;case"vec4":r=`vec4 getColor() { return ${o}; } +`;break}let s=`in vec3 position3DHigh; +in vec3 position3DLow; +in float batchId; +${n?"":`in ${i} ${t}; +`}out ${i} ${o}; +void main() +{ +vec4 p = czm_translateRelativeToEye(position3DHigh, position3DLow); +${n?`${o} = czm_batchTable_${t}(batchId); +`:`${o} = ${t}; +`}gl_Position = czm_modelViewProjectionRelativeToEye * p; +}`,a=`in ${i} ${o}; +${r} +void main() +{ +out_FragColor = getColor(); +}`;this.material=void 0,this.translucent=e.translucent??!1,this._vertexShaderSource=e.vertexShaderSource??s,this._fragmentShaderSource=e.fragmentShaderSource??a,this._renderState=po.getDefaultRenderState(!1,!1,e.renderState),this._closed=e.closed??!1,this._attributeName=t,this._glslDatatype=i}Object.defineProperties(S3.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},attributeName:{get:function(){return this._attributeName}},glslDatatype:{get:function(){return this._glslDatatype}}});S3.prototype.getFragmentShaderSource=po.prototype.getFragmentShaderSource;S3.prototype.isTranslucent=po.prototype.isTranslucent;S3.prototype.getRenderState=po.prototype.getRenderState;var see=S3;function E5(e){e=e??V.EMPTY_OBJECT,this.length=e.length??1e7,this._length=void 0,this.width=e.width??2,this._width=void 0,this.show=e.show??!0,this.modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this._modelMatrix=new N,this.id=e.id,this._id=void 0,this._primitive=void 0}E5.prototype.update=function(e){if(this.show){if(!l(this._primitive)||!N.equals(this._modelMatrix,this.modelMatrix)||this._length!==this.length||this._width!==this.width||this._id!==this.id){this._modelMatrix=N.clone(this.modelMatrix,this._modelMatrix),this._length=this.length,this._width=this.width,this._id=this.id,l(this._primitive)&&this._primitive.destroy(),this.modelMatrix[12]===0&&this.modelMatrix[13]===0&&this.modelMatrix[14]===0&&(this.modelMatrix[14]=.01);let t=new Pt({geometry:new Lg({positions:[d.ZERO,d.UNIT_X],width:this.width,vertexFormat:Cs.VERTEX_FORMAT,colors:[G.RED,G.RED],arcType:cn.NONE}),modelMatrix:N.multiplyByUniformScale(this.modelMatrix,this.length,new N),id:this.id,pickPrimitive:this}),n=new Pt({geometry:new Lg({positions:[d.ZERO,d.UNIT_Y],width:this.width,vertexFormat:Cs.VERTEX_FORMAT,colors:[G.GREEN,G.GREEN],arcType:cn.NONE}),modelMatrix:N.multiplyByUniformScale(this.modelMatrix,this.length,new N),id:this.id,pickPrimitive:this}),i=new Pt({geometry:new Lg({positions:[d.ZERO,d.UNIT_Z],width:this.width,vertexFormat:Cs.VERTEX_FORMAT,colors:[G.BLUE,G.BLUE],arcType:cn.NONE}),modelMatrix:N.multiplyByUniformScale(this.modelMatrix,this.length,new N),id:this.id,pickPrimitive:this});this._primitive=new Qn({geometryInstances:[t,n,i],appearance:new Cs,asynchronous:!1})}this._primitive.update(e)}};E5.prototype.isDestroyed=function(){return!1};E5.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};var w3=E5;function XDt(e){this.direction=d.clone(e.direction),this.color=G.clone(e.color??G.WHITE),this.intensity=e.intensity??1}var aee=XDt;var B3=`in vec3 v_positionMC; +in vec3 v_positionEC; +in vec2 v_st; + +void main() +{ + czm_materialInput materialInput; + + vec3 normalEC = normalize(czm_normal3D * czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0))); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + materialInput.s = v_st.s; + materialInput.st = v_st; + materialInput.str = vec3(v_st, 0.0); + + // Convert tangent space material normal to eye space + materialInput.normalEC = normalEC; + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, materialInput.normalEC); + + // Convert view vector to world space + vec3 positionToEyeEC = -v_positionEC; + materialInput.positionToEyeEC = positionToEyeEC; + + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} +`;var D3=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec2 st; +in float batchId; + +out vec3 v_positionMC; +out vec3 v_positionEC; +out vec2 v_st; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionMC = position3DHigh + position3DLow; // position in model coordinates + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_st = st; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;function Tx(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=e.aboveGround??!1;this.material=l(e.material)?e.material:ro.fromType(ro.ColorType),this.translucent=e.translucent??!0,this._vertexShaderSource=e.vertexShaderSource??D3,this._fragmentShaderSource=e.fragmentShaderSource??B3,this._renderState=po.getDefaultRenderState(t,!n,e.renderState),this._closed=!1,this._flat=e.flat??!1,this._faceForward=e.faceForward??n,this._aboveGround=n}Object.defineProperties(Tx.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return Tx.VERTEX_FORMAT}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}},aboveGround:{get:function(){return this._aboveGround}}});Tx.VERTEX_FORMAT=Pe.POSITION_AND_ST;Tx.prototype.getFragmentShaderSource=po.prototype.getFragmentShaderSource;Tx.prototype.isTranslucent=po.prototype.isTranslucent;Tx.prototype.getRenderState=po.prototype.getRenderState;var cee=Tx;function vu(e){this._scene=e.scene,this.samplingWindow=e.samplingWindow??vu.defaultSettings.samplingWindow,this.quietPeriod=e.quietPeriod??vu.defaultSettings.quietPeriod,this.warmupPeriod=e.warmupPeriod??vu.defaultSettings.warmupPeriod,this.minimumFrameRateDuringWarmup=e.minimumFrameRateDuringWarmup??vu.defaultSettings.minimumFrameRateDuringWarmup,this.minimumFrameRateAfterWarmup=e.minimumFrameRateAfterWarmup??vu.defaultSettings.minimumFrameRateAfterWarmup,this._lowFrameRate=new _e,this._nominalFrameRate=new _e,this._frameTimes=[],this._needsQuietPeriod=!0,this._quietPeriodEndTime=0,this._warmupPeriodEndTime=0,this._frameRateIsLow=!1,this._lastFramesPerSecond=void 0,this._pauseCount=0;let t=this;this._preUpdateRemoveListener=this._scene.preUpdate.addEventListener(function(o,r){JDt(t,r)}),this._hiddenPropertyName=document.hidden!==void 0?"hidden":document.mozHidden!==void 0?"mozHidden":document.msHidden!==void 0?"msHidden":document.webkitHidden!==void 0?"webkitHidden":void 0;let n=document.hidden!==void 0?"visibilitychange":document.mozHidden!==void 0?"mozvisibilitychange":document.msHidden!==void 0?"msvisibilitychange":document.webkitHidden!==void 0?"webkitvisibilitychange":void 0;function i(){ZDt(t)}this._visibilityChangeRemoveListener=void 0,l(n)&&(document.addEventListener(n,i,!1),this._visibilityChangeRemoveListener=function(){document.removeEventListener(n,i,!1)})}vu.defaultSettings={samplingWindow:5,quietPeriod:2,warmupPeriod:5,minimumFrameRateDuringWarmup:4,minimumFrameRateAfterWarmup:8};vu.fromScene=function(e){return(!l(e._frameRateMonitor)||e._frameRateMonitor.isDestroyed())&&(e._frameRateMonitor=new vu({scene:e})),e._frameRateMonitor};Object.defineProperties(vu.prototype,{scene:{get:function(){return this._scene}},lowFrameRate:{get:function(){return this._lowFrameRate}},nominalFrameRate:{get:function(){return this._nominalFrameRate}},lastFramesPerSecond:{get:function(){return this._lastFramesPerSecond}}});vu.prototype.pause=function(){++this._pauseCount,this._pauseCount===1&&(this._frameTimes.length=0,this._lastFramesPerSecond=void 0)};vu.prototype.unpause=function(){--this._pauseCount,this._pauseCount<=0&&(this._pauseCount=0,this._needsQuietPeriod=!0)};vu.prototype.isDestroyed=function(){return!1};vu.prototype.destroy=function(){return this._preUpdateRemoveListener(),l(this._visibilityChangeRemoveListener)&&this._visibilityChangeRemoveListener(),ue(this)};function JDt(e,t){if(e._pauseCount>0)return;let n=Li();if(e._needsQuietPeriod)e._needsQuietPeriod=!1,e._frameTimes.length=0,e._quietPeriodEndTime=n+e.quietPeriod/ri.SECONDS_PER_MILLISECOND,e._warmupPeriodEndTime=e._quietPeriodEndTime+(e.warmupPeriod+e.samplingWindow)/ri.SECONDS_PER_MILLISECOND;else if(n>=e._quietPeriodEndTime){e._frameTimes.push(n);let i=n-e.samplingWindow/ri.SECONDS_PER_MILLISECOND;if(e._frameTimes.length>=2&&e._frameTimes[0]<=i){for(;e._frameTimes.length>=2&&e._frameTimes[1]<i;)e._frameTimes.shift();let o=(n-e._frameTimes[0])/(e._frameTimes.length-1);e._lastFramesPerSecond=1e3/o;let r=1e3/(n>e._warmupPeriodEndTime?e.minimumFrameRateAfterWarmup:e.minimumFrameRateDuringWarmup);o>r?e._frameRateIsLow||(e._frameRateIsLow=!0,e._needsQuietPeriod=!0,e.lowFrameRate.raiseEvent(e.scene,e._lastFramesPerSecond)):e._frameRateIsLow&&(e._frameRateIsLow=!1,e._needsQuietPeriod=!0,e.nominalFrameRate.raiseEvent(e.scene,e._lastFramesPerSecond))}}}function ZDt(e){document[e._hiddenPropertyName]?e.pause():e.unpause()}var v3=vu;var qSe=xr(_$(),1);function lee(){this._image=new Image}lee.prototype.isReady=function(){return!0};lee.prototype.shouldDiscardImage=function(e){return e===this._image};function Sx(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._tilingScheme=new so({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new ae(-D.PI,-D.PI,D.PI,D.PI),ellipsoid:e.ellipsoid});let t=e.credit;typeof t=="string"&&(t=new Bt(t)),this._credit=t,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=23,l(this._tileDiscardPolicy)||(this._tileDiscardPolicy=new lee),this._errorEvent=new _e}Object.defineProperties(Sx.prototype,{url:{get:function(){return this._metadata.url}},proxy:{get:function(){return this._metadata.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!1}}});Sx.fromMetadata=function(e,t){if(!e.imageryPresent)throw new ce(`The server ${e.url} doesn't have imagery`);let n=new Sx(t);return n._metadata=e,n};Sx.prototype.getTileCredits=function(e,t,n){let i=this._metadata,o=i.getTileInformation(e,t,n);if(l(o)){let r=i.providers[o.imageryProvider];if(l(r))return[r]}};Sx.prototype.requestImage=function(e,t,n,i){let o=this._tileDiscardPolicy._image,r=this._metadata,s=a_.tileXYToQuadKey(e,t,n),a=r.getTileInformation(e,t,n);if(!l(a)){if(r.isValid(s)){let u=new sr({throttle:i.throttle,throttleByServer:i.throttleByServer,type:i.type,priorityFunction:i.priorityFunction});r.populateSubtree(e,t,n,u);return}return Promise.resolve(o)}if(!a.hasImagery())return Promise.resolve(o);let c=$Dt(this,a,e,t,n,i).fetchArrayBuffer();if(l(c))return c.then(function(u){y3(r.key,u);let f=new Uint8Array(u),h,A=r.protoImagery;if((!l(A)||!A)&&(h=evt(f)),!l(h)&&(!l(A)||A)){let g=tvt(f);h=g.imageType,f=g.imageData}return!l(h)||!l(f)?o:UE({uint8Array:f,format:h,flipY:!0})})};Sx.prototype.pickFeatures=function(e,t,n,i,o){};function $Dt(e,t,n,i,o,r){let s=a_.tileXYToQuadKey(n,i,o),a=t.imageryVersion;return a=l(a)&&a>0?a:1,e._metadata.resource.getDerivedResource({url:`flatfile?f1-0${s}-i.${a.toString()}`,request:r})}function evt(e){let t="JFIF";if(e[6]===t.charCodeAt(0)&&e[7]===t.charCodeAt(1)&&e[8]===t.charCodeAt(2)&&e[9]===t.charCodeAt(3))return"image/jpeg";let n="PNG";if(e[1]===n.charCodeAt(0)&&e[2]===n.charCodeAt(1)&&e[3]===n.charCodeAt(2))return"image/png"}function tvt(e){let t=qSe.Reader.create(e),n=t.len,i={};for(;t.pos<n;){let s=t.uint32(),a;switch(s>>>3){case 1:i.imageType=t.uint32();break;case 2:i.imageData=t.bytes();break;case 3:i.alphaType=t.uint32();break;case 4:i.imageAlpha=t.bytes();break;case 5:if(a=i.copyrightIds,l(a)||(a=i.copyrightIds=[]),(s&7)===2){let c=t.uint32()+t.pos;for(;t.pos<c;)a.push(t.uint32())}else a.push(t.uint32());break;default:t.skipType(s&7);break}}let o=i.imageType;if(l(o))switch(o){case 0:i.imageType="image/jpeg";break;case 4:i.imageType="image/png";break;default:throw new ce("GoogleEarthEnterpriseImageryProvider: Unsupported image type.")}let r=i.alphaType;return l(r)&&r!==0&&(console.log("GoogleEarthEnterpriseImageryProvider: External alpha not supported."),delete i.alphaType,delete i.imageAlpha),i}var uee=Sx;var nvt=new G(1,1,1,.4),ivt=new G(0,1,0,.05),ovt=new G(0,.5,0,.2);function wx(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new so({ellipsoid:e.ellipsoid}),this._cells=e.cells??8,this._color=e.color??nvt,this._glowColor=e.glowColor??ivt,this._glowWidth=e.glowWidth??6,this._backgroundColor=e.backgroundColor??ovt,this._errorEvent=new _e,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._canvasSize=e.canvasSize??256,this._canvas=this._createGridCanvas()}Object.defineProperties(wx.prototype,{proxy:{get:function(){}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){}},minimumLevel:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},hasAlphaChannel:{get:function(){return!0}}});wx.prototype._drawGrid=function(e){let n=this._canvasSize;for(let i=0;i<=this._cells;++i){let r=1+i/this._cells*(n-1);e.moveTo(r,0),e.lineTo(r,n),e.moveTo(0,r),e.lineTo(n,r)}e.stroke()};wx.prototype._createGridCanvas=function(){let e=document.createElement("canvas");e.width=this._canvasSize,e.height=this._canvasSize;let t=0,n=this._canvasSize,i=e.getContext("2d"),o=this._backgroundColor.toCssColorString();i.fillStyle=o,i.fillRect(t,t,n,n);let r=this._glowColor.toCssColorString();i.strokeStyle=r,i.lineWidth=this._glowWidth,i.strokeRect(t,t,n,n),this._drawGrid(i),i.lineWidth=this._glowWidth*.5,i.strokeRect(t,t,n,n),this._drawGrid(i);let s=this._color.toCssColorString();return i.strokeStyle=s,i.lineWidth=2,i.strokeRect(t,t,n,n),i.lineWidth=1,this._drawGrid(i),e};wx.prototype.getTileCredits=function(e,t,n){};wx.prototype.requestImage=function(e,t,n,i){return Promise.resolve(this._canvas)};wx.prototype.pickFeatures=function(e,t,n,i,o){};var fee=wx;function wm(){}wm._maxDecodingConcurrency=Math.max(Wt.hardwareConcurrency-1,1);wm._decodeTaskProcessor=new di("decodeI3S",wm._maxDecodingConcurrency);wm._promise=void 0;async function rvt(){if(await wm._decodeTaskProcessor.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/draco_decoder.wasm"}))return wm._decodeTaskProcessor;throw new ce("I3S decoder could not be initialized.")}wm.decode=async function(e,t,n,i,o){return l(wm._promise)||(wm._promise=rvt()),wm._promise.then(function(r){let s=n._parent._data,a=n._parent._inverseRotationMatrix,c=0,u=0,f=0;l(s.obb)?(c=s.obb.center[0],u=s.obb.center[1],f=s.obb.center[2]):l(s.mbs)&&(c=s.mbs[0],u=s.mbs[1],f=s.mbs[2]);let h=J.fromRotationX(-D.PI_OVER_TWO),A=new J;J.multiply(h,a,A);let g=Ae.fromDegrees(c,u,f),m=te.WGS84.cartographicToCartesian(g),_={binaryData:n._data,featureData:l(i)&&l(i[0])?i[0].data:void 0,schema:t,bufferInfo:n._geometryBufferInfo,ellipsoidRadiiSquare:te.WGS84.radiiSquared,url:e,geoidDataList:n._dataProvider._geoidDataList,cartographicCenter:g,cartesianCenter:m,parentRotation:A,enableFeatures:n._dataProvider.showFeatures,splitGeometryByColorTransparency:n._dataProvider.adjustMaterialAlphaMode,symbologyData:o,calculateNormals:n._dataProvider.calculateNormals};return r.scheduleTask(_)})};var P3=wm;function dee(e,t){this._parent=e,this._dataProvider=e._dataProvider,this._layer=e._layer,l(this._parent._nodeIndex)?this._resource=this._parent._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.attribute.resource}/${t}`}):this._resource=this._parent.resource.getDerivedResource({url:t})}Object.defineProperties(dee.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}}});dee.prototype.load=async function(){return this._data=await Bm.loadJson(this._resource),this._data};var R3=dee;function l_(e,t){this._storageInfo=t,this._parent=e,this._dataProvider=e._dataProvider,this._loadPromise=void 0;let n=`attributes/${t.key}/0`;l(this._parent._nodeIndex)?this._resource=this._parent._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.attribute.resource}/${n}`}):this._resource=this._parent.resource.getDerivedResource({url:n})}Object.defineProperties(l_.prototype,{resource:{get:function(){return this._resource}},header:{get:function(){return this._header}},values:{get:function(){if(l(this._values)){if(l(this._values.attributeValues))return this._values.attributeValues;if(l(this._values.objectIds))return this._values.objectIds}return[]}},name:{get:function(){return this._storageInfo.name}}});function I5(e){return e==="UInt8"||e==="Int8"?1:e==="UInt16"||e==="Int16"?2:e==="UInt32"||e==="Int32"||e==="Oid32"||e==="Float32"?4:e==="UInt64"||e==="Int64"||e==="Float64"?8:0}function svt(e){return e==="String"?1:I5(e)}async function avt(e){let t=await e._dataProvider._loadBinary(e._resource),n=new DataView(t);e._data=t,e._validateHeader(n);let i=e._parseHeader(n),o=e._getBodyOffset(i);e._validateBody(n,o),e._parseBody(n,o)}l_.prototype.load=function(){return l(this._loadPromise)?this._loadPromise:(this._loadPromise=avt(this).catch(function(e){console.error(e)}),this._loadPromise)};l_.prototype._parseValue=function(e,t,n){let i;if(t==="UInt8")i=e.getUint8(n),n+=1;else if(t==="Int8")i=e.getInt8(n),n+=1;else if(t==="UInt16")i=e.getUint16(n,!0),n+=2;else if(t==="Int16")i=e.getInt16(n,!0),n+=2;else if(t==="UInt32")i=e.getUint32(n,!0),n+=4;else if(t==="Oid32")i=e.getUint32(n,!0),n+=4;else if(t==="Int32")i=e.getInt32(n,!0),n+=4;else if(t==="UInt64"){let o=e.getUint32(n,!0),r=e.getUint32(n+4,!0);i=o+Math.pow(2,32)*r,n+=8}else if(t==="Int64"){let o=e.getUint32(n,!0),r=e.getUint32(n+4,!0);r<Math.pow(2,31)?i=o+Math.pow(2,32)*r:i=o+Math.pow(2,32)*(r-Math.pow(2,32)),n+=8}else t==="Float32"?(i=e.getFloat32(n,!0),n+=4):t==="Float64"?(i=e.getFloat64(n,!0),n+=8):t==="String"&&(i=String.fromCharCode(e.getUint8(n)),n+=1);return{value:i,offset:n}};l_.prototype._parseHeader=function(e){let t=0;this._header={};for(let n=0;n<this._storageInfo.header.length;n++){let i=this._storageInfo.header[n],o=this._parseValue(e,i.valueType,t);this._header[i.property]=o.value,t=o.offset}return t};l_.prototype._parseBody=function(e,t){this._values={};for(let n=0;n<this._storageInfo.ordering.length;n++){let i=this._storageInfo.ordering[n],o=i==="ObjectIds"?"objectIds":i,r=this._storageInfo[o];if(l(r)){this._values[o]=[];for(let s=0;s<this._header.count;++s)if(r.valueType!=="String"){let a=this._parseValue(e,r.valueType,t);this._values[o].push(a.value),t=a.offset}else{let a=this._values.attributeByteCounts[s],c="";for(let u=0;u<a;++u){let f=this._parseValue(e,r.valueType,t);f.value.charCodeAt(0)!==0&&(c+=f.value),t=f.offset}this._values[o].push(c)}}}};l_.prototype._getBodyOffset=function(e){let t=0;return l(this._storageInfo.attributeValues)?t=I5(this._storageInfo.attributeValues.valueType):l(this._storageInfo.objectIds)&&(t=I5(this._storageInfo.objectIds.valueType)),t>0?Math.ceil(e/t)*t:e};l_.prototype._validateHeader=function(e){let t=0;for(let n=0;n<this._storageInfo.header.length;n++){let i=this._storageInfo.header[n];t+=svt(i.valueType)}if(e.byteLength<t)throw new ce(`Invalid attribute buffer size (field: ${this.name}, header: ${t}, actual: ${e.byteLength})`)};l_.prototype._validateBody=function(e,t){if(!l(this._header.count))throw new ce(`Invalid attribute buffer (field: ${this.name}, count is missing)`);let n;for(let i=0;i<this._storageInfo.ordering.length&&t<e.byteLength;i++){let o=this._storageInfo.ordering[i],r=o==="ObjectIds"?"objectIds":o,s=this._storageInfo[r];if(l(s))if(s.valueType!=="String"){r==="attributeByteCounts"&&(n=t);let a=I5(s.valueType);t+=a*this._header.count}else{if(!l(n))throw new ce(`Invalid attribute buffer (field: ${this.name}, attributeByteCounts is missing)`);for(let a=0;a<this._header.count&&t<e.byteLength;++a){let c=this._parseValue(e,this._storageInfo.attributeByteCounts.valueType,n);t+=c.value,n=c.offset}}else throw new ce(`Invalid attribute buffer (field: ${this.name}, ${r} is missing)`)}if(e.byteLength<t)throw new ce(`Invalid attribute buffer size (field: ${this.name}, expected: ${t}, actual: ${e.byteLength})`)};var M3=l_;function N3(e,t){let n=e._dataProvider,i=e._layer,o;l(e._nodeIndex)?o=i.resource.getDerivedResource({url:`nodes/${e._data.mesh.geometry.resource}/${t}`}):o=e.resource.getDerivedResource({url:t}),this._parent=e,this._dataProvider=n,this._layer=i,this._resource=o,this._customAttributes=void 0}Object.defineProperties(N3.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},customAttributes:{get:function(){return this._customAttributes}}});N3.prototype.load=function(){let e=this;return this._dataProvider._loadBinary(this._resource).then(function(t){return e._data=t,t})};var cvt=new d,lvt=new d,uvt=new d,fvt=new d,dvt=new d;function hee(e,t,n,i){let o=d.subtract(i,n,cvt),r=d.cross(o,d.subtract(e,n,lvt),fvt),s=d.cross(o,d.subtract(t,n,uvt),dvt);return d.dot(r,s)>=0}var hvt=new d,mvt=new d,Avt=new d,pvt=new d,gvt=new d,_vt=new d,yvt=new d,Cvt=new d,Evt=new d,Ivt=new d;N3.prototype.getClosestPointIndexOnTriangle=function(e,t,n){if(l(this._customAttributes)&&l(this._customAttributes.positions)){let i=new d(e,t,n);i.x-=this._customAttributes.cartesianCenter.x,i.y-=this._customAttributes.cartesianCenter.y,i.z-=this._customAttributes.cartesianCenter.z,J.multiplyByVector(this._customAttributes.parentRotation,i,i);let o=Number.MAX_VALUE,r,s,a,c,u=this._customAttributes.positions,f=this._customAttributes.indices,h;l(f)?h=f.length:h=u.length/3;for(let A=0;A<h;A++){let g,m,_;l(f)?(g=f[A],m=f[A+1],_=f[A+2]):(g=A*3,m=A*3+1,_=A*3+2);let y=d.fromElements(u[g*3],u[g*3+1],u[g*3+2],hvt),C=d.fromElements(u[m*3],u[m*3+1],u[m*3+2],mvt),E=new d(u[_*3],u[_*3+1],u[_*3+2],Avt);if(!hee(i,y,C,E)||!hee(i,C,y,E)||!hee(i,E,y,C))continue;let I=d.subtract(C,y,pvt),b=d.subtract(E,y,gvt),S=d.cross(I,b,_vt);if(d.magnitude(S)===0)continue;let B=d.normalize(S,yvt),v=d.subtract(i,y,Cvt),P=Math.abs(d.dot(v,B));if(P<o){o=P,r=A;let M=d.magnitudeSquared(d.subtract(i,y,v)),L=d.magnitudeSquared(d.subtract(i,C,Evt)),p=d.magnitudeSquared(d.subtract(i,E,Ivt));M<L&&M<p?(a=g,c=y,s=M):L<p?(a=m,c=C,s=L):(a=_,c=E,s=p)}}if(l(r))return{index:a,distanceSquared:s,distance:Math.sqrt(s),queriedPosition:i,closestPosition:d.clone(c)}}return{index:-1,distanceSquared:Number.Infinity,distance:Number.Infinity}};function KSe(e){let t=[],n=e.length;for(let i=0;i<n;i++)i<3?t.push(Ix(e[i])):t.push(e[i]);return t}N3.prototype._generateGltf=function(e,t,n,i,o,r,s,a){let c={pbrMetallicRoughness:{metallicFactor:0},doubleSided:!0,name:"Material"},u=!1,f,h="";if(l(this._parent._data.mesh)&&l(this._layer._data.materialDefinitions)){let I=this._parent._data.mesh.material.definition;if(I>=0&&I<this._layer._data.materialDefinitions.length){if(f=this._layer._data.materialDefinitions[I],c=f,l(c.pbrMetallicRoughness)&&l(c.pbrMetallicRoughness.baseColorTexture)){u=!0,c.pbrMetallicRoughness.baseColorTexture.index=0;let b="0";if(l(this._layer._data.textureSetDefinitions))for(let S=0;S<this._layer._data.textureSetDefinitions.length;S++){let B=this._layer._data.textureSetDefinitions[S];for(let v=0;v<B.formats.length;v++){let P=B.formats[v];if(P.format==="jpg"){b=P.name;break}}}l(this._parent._data.mesh)&&this._parent._data.mesh.material.resource>=0&&(h=this._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.material.resource}/textures/${b}`}).url)}l(c.pbrMetallicRoughness)&&l(c.pbrMetallicRoughness.baseColorFactor)&&(c.pbrMetallicRoughness.baseColorFactor=KSe(c.pbrMetallicRoughness.baseColorFactor)),l(c.emissiveFactor)&&(c.emissiveFactor=KSe(c.emissiveFactor))}}else l(this._parent._data.textureData)&&(u=!0,h=this._parent.resource.getDerivedResource({url:`${this._parent._data.textureData[0].href}`}).url,c.pbrMetallicRoughness.baseColorTexture={index:0});l(c.alphaMode)&&(c.alphaMode=c.alphaMode.toUpperCase());let A=[],g=[],m=[];u&&(A=[{sampler:0,source:0}],g=[{uri:h}],m=[{magFilter:9729,minFilter:9986,wrapS:10497,wrapT:10497}]);let _=[],y=n.length;for(let E=0;E<y;E++){let I=n[E].primitives,b=I.length;for(let S=0;S<b;S++){let B=I[S];if(l(B.material)){for(;B.material>=_.length;){let P=ze(c,!0);_.push(P)}let v=_[B.material];l(B.extra)&&B.extra.isTransparent?l(v.alphaMode)||(v.alphaMode="BLEND"):v.alphaMode==="BLEND"&&(v.alphaMode="OPAQUE")}}}return{scene:0,scenes:[{nodes:e}],nodes:t,meshes:n,buffers:i,bufferViews:o,accessors:r,materials:_,textures:A,images:g,samplers:m,asset:{version:"2.0"},extensions:s,extensionsUsed:a}};var Jw=N3;function ol(e,t,n){let i,o,r,s;n?(i=0,o=e):(i=e._level+1,o=e._layer),typeof t=="number"?r=t:s=e.resource.getDerivedResource({url:`${t}/`}),this._parent=e,this._dataProvider=e._dataProvider,this._isRoot=n,this._level=i,this._layer=o,this._nodeIndex=r,this._resource=s,this._isLoading=!1,this._tile=void 0,this._data=void 0,this._geometryData=[],this._featureData=[],this._fields={},this._children=[],this._childrenReadyPromise=void 0,this._globalTransform=void 0,this._inverseGlobalTransform=void 0,this._inverseRotationMatrix=void 0,this._symbologyData=void 0}Object.defineProperties(ol.prototype,{resource:{get:function(){return this._resource}},layer:{get:function(){return this._layer}},parent:{get:function(){return this._parent}},children:{get:function(){return this._children}},geometryData:{get:function(){return this._geometryData}},featureData:{get:function(){return this._featureData}},fields:{get:function(){return this._fields}},tile:{get:function(){return this._tile}},data:{get:function(){return this._data}}});ol.prototype.load=async function(){let e=this;function t(){if(!e._isRoot){let o=e._create3DTileDefinition();e._tile=new xd(e._layer._tileset,e._dataProvider.resource,o,e._parent._tile),e._tile._i3sNode=e}}if(!l(this._nodeIndex)){let o=await Bm.loadJson(this._resource);e._data=o,t();return}let n=await this._layer._getNodeInNodePages(this._nodeIndex);e._data=n;let i;e._isRoot?i="nodes/root/":l(n.mesh)&&(i=`../${n.mesh.geometry.resource}/`),l(i)&&l(e._parent.resource)&&(e._resource=e._parent.resource.getDerivedResource({url:i})),t()};function XSe(e,t){let n=new M3(e,t);return e._fields[t.name]=n,n.load()}ol.prototype.loadFields=function(){let e=this._layer._data.attributeStorageInfo,t=[];if(l(e))for(let n=0;n<e.length;n++){let i=e[n],o=this._fields[i.name];l(o)?t.push(o.load()):t.push(XSe(this,i))}return Promise.all(t)};ol.prototype.loadField=function(e){let t=this._fields[e];if(l(t))return t.load();let n=this._layer._data.attributeStorageInfo;if(l(n))for(let i=0;i<n.length;i++){let o=n[i];if(o.name===e)return XSe(this,o)}return Promise.resolve()};ol.prototype.getFieldsForPickedPosition=function(e){let t=this.geometryData[0];if(!l(t.customAttributes.featureIndex))return{};let n=t.getClosestPointIndexOnTriangle(e.x,e.y,e.z);if(n.index===-1||n.index>t.customAttributes.featureIndex.length)return{};let i=t.customAttributes.featureIndex[n.index];return this.getFieldsForFeature(i)};ol.prototype.getFieldsForFeature=function(e){let t={};for(let n in this.fields)if(this.fields.hasOwnProperty(n)){let i=this.fields[n];e>=0&&e<i.values.length&&(t[i.name]=i.values[e])}return t};ol.prototype._loadChildren=function(){let e=this;if(l(this._childrenReadyPromise))return this._childrenReadyPromise;let t=[];if(l(e._data.children))for(let n=0;n<e._data.children.length;n++){let i=e._data.children[n],o=new ol(e,i.href??i,!1);e._children.push(o),t.push(o.load())}return this._childrenReadyPromise=Promise.all(t).then(function(){for(let n=0;n<e._children.length;n++)e._tile.children.push(e._children[n]._tile)}),this._childrenReadyPromise};ol.prototype._loadGeometryData=function(){let e=[];if(l(this._data.geometryData))for(let t=0;t<this._data.geometryData.length;t++){let n=new Jw(this,this._data.geometryData[t].href);this._geometryData.push(n),e.push(n.load())}else if(l(this._data.mesh)){let t=this._layer._findBestGeometryBuffers(this._data.mesh.geometry.definition,["position","uv0"]),n=`./geometries/${t.bufferIndex}/`,i=new Jw(this,n);i._geometryDefinitions=t.definition,i._geometryBufferInfo=t.geometryBufferInfo,this._geometryData.push(i),e.push(i.load())}return Promise.all(e)};ol.prototype._loadFeatureData=function(){let e=[];if(l(this._data.featureData))for(let t=0;t<this._data.featureData.length;t++){let n=new R3(this,this._data.featureData[t].href);this._featureData.push(n),e.push(n.load())}return Promise.all(e)};ol.prototype._clearGeometryData=function(){this._geometryData=[]};ol.prototype._create3DTileDefinition=function(){let e=this._data.obb,t=this._data.mbs;if(!l(e)&&!l(t)){console.error("Failed to load I3S node. Bounding volume is required.");return}let n;if(l(e)?n=Ae.fromDegrees(e.center[0],e.center[1],e.center[2]):n=Ae.fromDegrees(t[0],t[1],t[2]),l(this._dataProvider._geoidDataList)&&l(n))for(let C=0;C<this._dataProvider._geoidDataList.length;C++){let E=this._dataProvider._geoidDataList[C],I=E.projection.project(n);if(I.x>E.nativeExtent.west&&I.x<E.nativeExtent.east&&I.y>E.nativeExtent.south&&I.y<E.nativeExtent.north){n.height+=Svt(I.x,I.y,E);break}}let i={},o,r=0;l(e)?(i={box:[0,0,0,e.halfSize[0],0,0,0,e.halfSize[1],0,0,0,e.halfSize[2]]},r=Math.max(Math.max(this._data.obb.halfSize[0],this._data.obb.halfSize[1]),this._data.obb.halfSize[2]),o=te.WGS84.cartographicToCartesian(n)):(i={sphere:[0,0,0,t[3]]},o=te.WGS84.cartographicToCartesian(n),r=this._data.mbs[3]),r*=2;let s=1/0;if(l(this._data.lodThreshold))if(this._layer._data.nodePages.lodSelectionMetricType==="maxScreenThresholdSQ"){let C=Math.sqrt(this._data.lodThreshold/(Math.PI*.25));s=r/C}else if(this._layer._data.nodePages.lodSelectionMetricType==="maxScreenThreshold"){let C=this._data.lodThreshold;s=r/C}else console.error("Invalid lodSelectionMetricType in Layer");else if(l(this._data.lodSelection))for(let C=0;C<this._data.lodSelection.length;C++)this._data.lodSelection[C].metricType==="maxScreenThreshold"&&(s=r/this._data.lodSelection[C].maxError);s===1/0&&(s=1e5);let a=s*16,c=new rc(0,0,0),u=kt.headingPitchRollQuaternion(o,c);l(this._data.obb)&&(u=new Le(this._data.obb.quaternion[0],this._data.obb.quaternion[1],this._data.obb.quaternion[2],this._data.obb.quaternion[3]));let f=J.fromQuaternion(u),h=J.inverse(f,new J),A=new N(f[0],f[1],f[2],0,f[3],f[4],f[5],0,f[6],f[7],f[8],0,o.x,o.y,o.z,1),g=N.inverse(A,new N),m=N.clone(A);l(this._parent._globalTransform)&&N.multiply(A,this._parent._inverseGlobalTransform,m),this._globalTransform=A,this._inverseGlobalTransform=g,this._inverseRotationMatrix=h;let _=[];for(let C=0;C<this._children.length;C++)_.push(this._children[C]._create3DTileDefinition());return{children:_,refine:"REPLACE",boundingVolume:i,transform:[m[0],m[4],m[8],m[12],m[1],m[5],m[9],m[13],m[2],m[6],m[10],m[14],m[3],m[7],m[11],m[15]],content:{uri:l(this._resource)?this._resource.url:void 0},geometricError:a}};ol.prototype._loadSymbology=async function(){!l(this._symbologyData)&&l(this._layer._symbology)&&(this._symbologyData=await this._layer._symbology._getSymbology(this))};ol.prototype._createContentURL=async function(){let e={scene:0,scenes:[{nodes:[0]}],nodes:[{name:"singleNode"}],meshes:[],buffers:[],bufferViews:[],accessors:[],materials:[],textures:[],images:[],samplers:[],asset:{version:"2.0"}},t=[this._loadGeometryData()];if(this._dataProvider.legacyVersion16&&t.push(this._loadFeatureData()),await Promise.all(t),l(this._geometryData)&&this._geometryData.length>0){this._dataProvider._applySymbology&&await this._loadSymbology();let o=this._geometryData[0].resource.url,r=this._layer._data.store.defaultGeometrySchema,s=this._geometryData[0],a=await P3.decode(o,r,s,this._featureData[0],this._symbologyData);if(!l(a))return;e=s._generateGltf(a.meshData.nodesInScene,a.meshData.nodes,a.meshData.meshes,a.meshData.buffers,a.meshData.bufferViews,a.meshData.accessors,a.meshData.rootExtensions,a.meshData.extensionsUsed),this._geometryData[0]._customAttributes=a.meshData._customAttributes}let n=this._dataProvider._binarizeGltf(e),i=new Blob([n],{type:"application/binary"});return URL.createObjectURL(i)};async function xvt(e){let t=e._layer._filters,n=[];for(let i=0;i<t.length;i++){let o=e.loadField(t[i].name);n.push(o)}return await Promise.all(n),t}function bvt(e,t,n){if(!l(n.values)||n.values.length===0)return!1;let i=l(t)?t.values:[],o;e<i.length&&(o=i[e]);let r=!1;for(let s=0;s<n.values.length;s++)if(n.values[s]===o){r=!0;break}return r}async function JSe(e,t){let n=e._tile.content.batchTable;if(l(n)&&n.featuresLength>0){n.setAllShow(!0);let i=await xvt(e);if(i.length>0)for(let o=0;o<n.featuresLength;o++)for(let r=0;r<i.length;r++){let s=i[r];if(!bvt(o,e._fields[s.name],s)){n.setShow(o,!1);break}}}t.show=!0}ol.prototype._filterFeatures=function(){let e=[];for(let n=0;n<this._children.length;n++){let i=this._children[n]._filterFeatures();e.push(i)}let t=this._tile?.content?._model;if(l(this._geometryData)&&this._geometryData.length>0&&l(t)&&t.ready){t.show=!1;let n=JSe(this,t);e.push(n)}return Promise.all(e)};xd.prototype._hookedRequestContent=xd.prototype.requestContent;xd.prototype.requestContent=function(){if(!this.tileset._isI3STileSet)return this._hookedRequestContent();if(!this._isLoading){this._isLoading=!0;let e=this;return this._i3sNode._createContentURL().then(t=>{if(!l(t)){e._isLoading=!1;return}return e._contentResource=new we({url:t}),e._hookedRequestContent()}).then(t=>{let n=t?._model;return l(e._i3sNode._geometryData)&&e._i3sNode._geometryData.length>0&&l(n)&&(n.show=!1,n.readyEvent.addEventListener(()=>{JSe(e._i3sNode,n)})),e._isLoading=!1,t})}};function Tvt(e,t,n,i,o,r){let s=n*(1-e)+i*e,a=o*(1-e)+r*e;return s*(1-t)+a*t}function x5(e,t,n,i){let o=e+t*n;return i[o]}function Svt(e,t,n){let i=n.nativeExtent,o=(e-i.west)/(i.east-i.west)*(n.width-1),r=(t-i.south)/(i.north-i.south)*(n.height-1),s=Math.floor(o),a=Math.floor(r);o-=s,r-=a;let c=s<n.width?s+1:s,u=a<n.height?a+1:a;a=n.height-1-a,u=n.height-1-u;let f=x5(s,a,n.width,n.buffer),h=x5(c,a,n.width,n.buffer),A=x5(s,u,n.width,n.buffer),g=x5(c,u,n.width,n.buffer),m=Tvt(o,r,f,h,A,g);return m=m*n.scale+n.offset,m}Object.defineProperties(xd.prototype,{i3sNode:{get:function(){return this._i3sNode}}});var Zw=ol;function b5(e){this._layer=e,this._defaultSymbology=void 0,this._valueFields=[],this._uniqueValueHash=void 0,this._classBreaksHash=void 0,this._parseLayerSymbology()}Object.defineProperties(b5.prototype,{defaultSymbology:{get:function(){return this._defaultSymbology}}});function mee(e,t){let n=[];for(let i=0;i<e.length;i++){let o=G.byteToFloat(e[i]);i<3?n.push(Ix(o)):n.push(o)}return n.length===3&&(l(t)?n.push(1-t/100):n.push(1)),n}function $w(e,t){let n={edges:void 0,material:void 0};if(l(e)&&l(e.symbolLayers))for(let i=0;i<e.symbolLayers.length;i++){let o=e.symbolLayers[i];if(o.type==="Fill"){let r=o.edges,s=o.outline;if(l(r)?(n.edges={},l(r.color)&&(n.edges.color=mee(r.color,r.transparency))):l(s)&&(n.edges={},l(s.color)&&(n.edges.color=mee(s.color,s.transparency))),!t){let a=o.material;l(a)&&(n.material={colorMixMode:a.colorMixMode},l(a.color)&&(n.material.color=mee(a.color,a.transparency)))}break}}return n}function wvt(e,t){if(l(e.uniqueValueGroups)){let n={};for(let i=0;i<e.uniqueValueGroups.length;i++){let o=e.uniqueValueGroups[i].classes;if(l(o))for(let r=0;r<o.length;r++){let s=$w(o[r].symbol,t),a=o[r].values;for(let c=0;c<a.length;c++){let u=a[c],f=n;for(let h=0;h<u.length;h++){let A=u[h];h===u.length-1?f[A]=s:(l(f[A])||(f[A]={}),f=f[A])}}}}return n}if(l(e.uniqueValueInfos)){let n={};for(let i=0;i<e.uniqueValueInfos.length;i++){let o=e.uniqueValueInfos[i];n[o.value]=$w(o.symbol,t)}return n}}function Bvt(e,t){if(l(e.classBreakInfos)){let n=[...e.classBreakInfos];n.sort(function(o,r){let s=o.classMaxValue??o.classMinValue,a=r.classMaxValue??r.classMinValue;return s-a});let i={ranges:[],symbols:[]};l(e.minValue)&&(i.ranges.push(e.minValue),i.symbols.push(void 0));for(let o=0;o<n.length;o++){let r=n[o];l(r.classMinValue)&&(i.ranges.length===0||r.classMinValue>i.ranges[i.ranges.length-1])&&(i.ranges.push(r.classMinValue),i.symbols.push(void 0)),l(r.classMaxValue)&&(i.ranges.length===0||r.classMaxValue>i.ranges[i.ranges.length-1])&&(i.ranges.push(r.classMaxValue),i.symbols.push($w(r.symbol,t)))}return i.symbols.push(void 0),i}}b5.prototype._parseLayerSymbology=function(){let e=this._layer.data.drawingInfo;if(l(e)&&l(e.renderer)){let t=this._layer.data.cachedDrawingInfo,n=l(t)&&t.color===!0,i=e.renderer;i.type==="simple"?this._defaultSymbology=$w(i.symbol,n):i.type==="uniqueValue"?(this._defaultSymbology=$w(i.defaultSymbol,n),this._valueFields.push(i.field1),l(i.field2)&&this._valueFields.push(i.field2),l(i.field3)&&this._valueFields.push(i.field3),this._uniqueValueHash=wvt(i,n)):i.type==="classBreaks"&&(this._defaultSymbology=$w(i.defaultSymbol,n),this._valueFields.push(i.field),this._classBreaksHash=Bvt(i,n))}};function ZSe(e,t,n,i){let o=t[n];if(i<o.length){let r=o[i],s=e[r];return l(s)&&++n<t.length?ZSe(s,t,n,i):s}}function Dvt(e,t){let n=0,i=e.length;if(n<i)do{let o=n+i>>>1;e[o]<t?n=o+1:i=o}while(n<i);return n}function vvt(e,t,n){let i=t[n],o=Dvt(e.ranges,i);return e.symbols[o]}b5.prototype._getSymbology=async function(e){let t={default:this._defaultSymbology};if(this._valueFields.length>0){let n=[];for(let r=0;r<this._valueFields.length;r++)n.push(e.loadField(this._valueFields[r]));await Promise.all(n);let i=[];for(let r=0;r<this._valueFields.length;r++)i.push(e.fields[this._valueFields[r]].values);let o;if(l(this._uniqueValueHash)?o=r=>ZSe(this._uniqueValueHash,i,0,r):l(this._classBreaksHash)&&(o=r=>vvt(this._classBreaksHash,i[0],r)),l(o)){let r=i[0];for(let s=0;s<r.length;s++){let a=o(s);l(a)&&(t[s]=a)}}}return t};var L3=b5;function Pu(e,t,n){this._dataProvider=e,this._parent=n,!l(t.href)&&l(t.id)&&(t.href=`layers/${t.id}`);let i=this._parent.resource.getUrlComponent(),o="";i.match(/layers\/\d/)?o=`${i}`.replace(/\/+$/,""):o=`${i}`.replace(/\/?$/,"/").concat(`${t.href}`),this._version=t.store.version;let r=this._version.split(".");this._majorVersion=parseInt(r[0]),this._minorVersion=r.length>1?parseInt(r[1]):0,this._resource=new we({url:o}),this._resource.setQueryParameters(this._dataProvider.resource.queryParameters),this._resource.appendForwardSlash(),this._data=t,this._rootNode=void 0,this._nodePages={},this._nodePageFetches={},this._extent=void 0,this._tileset=void 0,this._geometryDefinitions=void 0,this._filters=[],this._symbology=void 0,this._computeGeometryDefinitions(!0),this._computeExtent()}Object.defineProperties(Pu.prototype,{resource:{get:function(){return this._resource}},rootNode:{get:function(){return this._rootNode}},tileset:{get:function(){return this._tileset}},data:{get:function(){return this._data}},version:{get:function(){return this._version}},majorVersion:{get:function(){return this._majorVersion}},minorVersion:{get:function(){return this._minorVersion}},legacyVersion16:{get:function(){if(l(this.version))return this.majorVersion<1||this.majorVersion===1&&this.minorVersion<=6}}});Pu.prototype.load=async function(e){if(this._data.spatialReference.wkid!==4326)throw new ce(`Unsupported spatial reference: ${this._data.spatialReference.wkid}`);if(this._dataProvider.applySymbology&&(this._symbology=new L3(this)),await this._dataProvider.loadGeoidData(),await this._loadRootNode(e),await this._create3DTileset(e),this._rootNode._tile=this._tileset._root,this._tileset._root._i3sNode=this._rootNode,this.legacyVersion16)return this._rootNode._loadChildren()};Pu.prototype._computeGeometryDefinitions=function(e){if(this._geometryDefinitions=[],l(this._data.geometryDefinitions))for(let t=0;t<this._data.geometryDefinitions.length;t++){let n=[],i=this._data.geometryDefinitions[t].geometryBuffers;for(let o=0;o<i.length;o++){let r=i[o],s=[],a=!1;if(l(r.compressedAttributes)&&e){a=!0;let c=r.compressedAttributes.attributes;for(let u=0;u<c.length;u++)s.push(c[u])}else for(let c in r)c!=="offset"&&s.push(c);n.push({compressed:a,attributes:s,index:i.indexOf(r)})}n.sort(function(o,r){return o.compressed&&!r.compressed?-1:!o.compressed&&r.compressed?1:o.attributes.length-r.attributes.length}),this._geometryDefinitions.push(n)}};Pu.prototype._findBestGeometryBuffers=function(e,t){let n=this._geometryDefinitions[e];if(l(n)){for(let i=0;i<n.length;++i){let o=n[i],r=!1,s=o.attributes;for(let a=0;a<t.length;a++)if(!s.includes(t[a])){r=!0;break}if(!r)return{bufferIndex:o.index,definition:n,geometryBufferInfo:o}}if(l(n[0]))return{bufferIndex:0,definition:n,geometryBufferInfo:n[0]}}};Pu.prototype._loadRootNode=function(e){if(l(this._data.nodePages)){let t=0;l(this._data.nodePages.rootIndex)&&(t=this._data.nodePages.rootIndex),this._rootNode=new Zw(this,t,!0)}else this._rootNode=new Zw(this,this._data.store.rootNode,!0);return this._rootNode.load(e)};Pu.prototype._getNodeInNodePages=function(e){let t=Math.floor(e/this._data.nodePages.nodesPerPage),n=e%this._data.nodePages.nodesPerPage;return this._loadNodePage(t).then(function(i){return i.nodes[n]})};Pu._fetchJson=function(e){return e.fetchJson()};Pu.prototype._loadNodePage=function(e){let t=this;if(!l(this._nodePageFetches[e])){let n=this.resource.getDerivedResource({url:`nodepages/${e}/`}),i=Pu._fetchJson(n).then(function(o){return l(o.error)&&o.error.code!==200?Promise.reject(o.error):(t._nodePages[e]=o.nodes,o)});this._nodePageFetches[e]=i}return this._nodePageFetches[e]};Pu.prototype._computeExtent=function(){l(this._data.fullExtent)?this._extent=ae.fromDegrees(this._data.fullExtent.xmin,this._data.fullExtent.ymin,this._data.fullExtent.xmax,this._data.fullExtent.ymax):l(this._data.store.extent)&&(this._extent=ae.fromDegrees(this._data.store.extent[0],this._data.store.extent[1],this._data.store.extent[2],this._data.store.extent[3]))};Pu.prototype._create3DTileset=async function(e){let t={asset:{version:"1.0"},geometricError:Number.MAX_VALUE,root:this._rootNode._create3DTileDefinition()},n=new Blob([JSON.stringify(t)],{type:"application/json"}),i=URL.createObjectURL(n),o=this._symbology?.defaultSymbology?.edges?.color;l(o)&&!l(e?.outlineColor)&&(e=l(e)?ze(e):{},e.outlineColor=G.fromCartesian4(se.fromArray(o))),this._tileset=await ks.fromUrl(i,e),this._tileset.show=this._parent.show,this._tileset._isI3STileSet=!0,this._tileset.tileUnload.addEventListener(function(r){r._i3sNode._clearGeometryData(),URL.revokeObjectURL(r._contentResource._url),r._contentResource=r._i3sNode.resource}),this._tileset.tileVisible.addEventListener(function(r){l(r._i3sNode)&&r._i3sNode._loadChildren()})};Pu.prototype._updateVisibility=function(){l(this._tileset)&&(this._tileset.show=this._parent.show)};Pu.prototype.filterByAttributes=function(e){this._filters=l(e)?ze(e,!0):[];let t=this._rootNode;return l(t)?t._filterFeatures():Promise.resolve()};var Bx=Pu;function T5(e,t){this._dataProvider=e,this._resource=new we({url:t}),this._resource.setQueryParameters(e.resource.queryParameters),this._resource.appendForwardSlash()}Object.defineProperties(T5.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},names:{get:function(){let e=[],t=this._data.summary;if(l(t))for(let n=0;n<t.length;++n)e.push(t[n].fieldName);return e}}});T5.prototype.load=async function(){return this._data=await Bm.loadJson(this._resource),this._data};T5.prototype._getValues=function(e){let t=this._data.summary;if(l(t))for(let n=0;n<t.length;++n){let i=t[n];if(i.fieldName===e)return l(i.mostFrequentValues)?[...i.mostFrequentValues]:[]}};var O3=T5;function F3(e,t,n){this._dataProvider=e,this._parent=t,this._data=n,this._name=n.name,this._modelName=n.modelName,this._visibility=n.visibility??!0,this._resource=void 0,this._sublayers=[],this._i3sLayers=[]}Object.defineProperties(F3.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},name:{get:function(){return this._name}},modelName:{get:function(){return this._modelName}},sublayers:{get:function(){return this._sublayers}},visibility:{get:function(){return this._visibility},set:function(e){if(this._visibility!==e){this._visibility=e;for(let t=0;t<this._i3sLayers.length;t++)this._i3sLayers[t]._updateVisibility()}}},show:{get:function(){return this._visibility&&this._parent.show}}});F3._fromData=async function(e,t,n,i){let o=new F3(e,i,n);if(o._data.layerType==="group"){let r=o._data.sublayers;if(l(r)){let s=[];for(let c=0;c<r.length;c++){let u=F3._fromData(e,t,r[c],o);s.push(u)}let a=await Promise.all(s);for(let c=0;c<a.length;c++){let u=a[c];o._sublayers.push(u),o._i3sLayers.push(...u._i3sLayers)}}}else if(o._data.layerType==="3DObject"){let r=t.concat(`/sublayers/${o._data.id}`),s=new we({url:r});s.setQueryParameters(e.resource.queryParameters),s.appendForwardSlash(),o._resource=s;let a=await Bm.loadJson(o._resource),c=new Bx(e,a,o);o._i3sLayers.push(c)}else console.log(`${o._data.layerType} layer ${o._data.name} is skipped as not supported.`);return o};var Q3=F3;var twe=xr($Se(),1);function Hs(e){e=e??V.EMPTY_OBJECT,this._name=e.name,this._show=e.show??!0,this._geoidTiledTerrainProvider=e.geoidTiledTerrainProvider,this._showFeatures=e.showFeatures??!1,this._adjustMaterialAlphaMode=e.adjustMaterialAlphaMode??!1,this._applySymbology=e.applySymbology??!1,this._calculateNormals=e.calculateNormals??!1,this._cesium3dTilesetOptions=e.cesium3dTilesetOptions??V.EMPTY_OBJECT,this._layers=[],this._sublayers=[],this._data=void 0,this._extent=void 0,this._geoidDataPromise=void 0,this._geoidDataList=void 0,this._decoderTaskProcessor=void 0,this._taskProcessorReadyPromise=void 0,this._attributeStatistics=[],this._layersExtent=[]}Object.defineProperties(Hs.prototype,{name:{get:function(){return this._name}},show:{get:function(){return this._show},set:function(e){if(this._show!==e){this._show=e;for(let t=0;t<this._layers.length;t++)this._layers[t]._updateVisibility()}}},geoidTiledTerrainProvider:{get:function(){return this._geoidTiledTerrainProvider}},layers:{get:function(){return this._layers}},sublayers:{get:function(){return this._sublayers}},data:{get:function(){return this._data}},extent:{get:function(){return this._extent}},resource:{get:function(){return this._resource}},showFeatures:{get:function(){return this._showFeatures}},adjustMaterialAlphaMode:{get:function(){return this._adjustMaterialAlphaMode}},applySymbology:{get:function(){return this._applySymbology}},calculateNormals:{get:function(){return this._calculateNormals}}});Hs.prototype.destroy=function(){for(let e=0;e<this._layers.length;e++)l(this._layers[e]._tileset)&&this._layers[e]._tileset.destroy();return ue(this)};Hs.prototype.isDestroyed=function(){return!1};Hs.prototype.update=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.update(e)};Hs.prototype.prePassesUpdate=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.prePassesUpdate(e)};Hs.prototype.postPassesUpdate=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.postPassesUpdate(e)};Hs.prototype.updateForPass=function(e,t){for(let n=0;n<this._layers.length;n++)l(this._layers[n]._tileset)&&this._layers[n]._tileset.updateForPass(e,t)};function Pvt(e,t){let n=e.resource.getUrlComponent(),i="";return n.match(/layers\/\d/)?i=`${n}`.replace(/\/+$/,""):i=`${n}`.replace(/\/?$/,"/").concat(`layers/${t}`),i}async function ewe(e,t,n){if(t.layerType==="Building"){l(n.showFeatures)||(e._showFeatures=!0),l(n.adjustMaterialAlphaMode)||(e._adjustMaterialAlphaMode=!0),l(n.applySymbology)||(e._applySymbology=!0),l(n.calculateNormals)||(e._calculateNormals=!0);let i=Pvt(e,t.id);if(l(t.sublayers)){let o=[];for(let s=0;s<t.sublayers.length;s++){let a=Q3._fromData(e,i,t.sublayers[s],e);o.push(a)}let r=await Promise.all(o);for(let s=0;s<r.length;s++){let a=r[s];e._sublayers.push(a),e._layers.push(...a._i3sLayers)}}if(l(t.statisticsHRef)){let o=i.concat(`/${t.statisticsHRef}`),r=new O3(e,o);await r.load(),e._attributeStatistics.push(r)}if(l(t.fullExtent)){let o=ae.fromDegrees(t.fullExtent.xmin,t.fullExtent.ymin,t.fullExtent.xmax,t.fullExtent.ymax);e._layersExtent.push(o)}}else if(t.layerType==="3DObject"||t.layerType==="IntegratedMesh"){!l(n.calculateNormals)&&!l(t.textureSetDefinitions)&&(e._calculateNormals=!0);let i=new Bx(e,t,e);e._layers.push(i),l(i._extent)&&e._layersExtent.push(i._extent)}else console.log(`${t.layerType} layer ${t.name} is skipped as not supported.`)}Hs.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=we.createIfNeeded(e);n.setQueryParameters({f:"pjson"},!0);let i=await Hs.loadJson(n),o=new Hs(t);if(o._resource=n,o._data=i,l(i.layers)){let s=[];for(let a=0;a<i.layers.length;a++){let c=ewe(o,i.layers[a],t);s.push(c)}await Promise.all(s)}else await ewe(o,i,t);o._computeExtent();let r=[];for(let s=0;s<o._layers.length;s++)r.push(o._layers[s].load(t.cesium3dTilesetOptions));return await Promise.all(r),o};Hs._fetchJson=function(e){return e.fetchJson()};Hs.loadJson=async function(e){let t=await Hs._fetchJson(e);if(l(t.error)){if(console.error("Failed to fetch I3S ",e.url),l(t.error.message)&&console.error(t.error.message),l(t.error.details))for(let n=0;n<t.error.details.length;n++)console.log(t.error.details[n]);throw new ce(t.error)}return t};Hs.prototype._loadBinary=async function(e){let t=await e.fetchArrayBuffer();if(t.byteLength>0&&new Uint8Array(t)[0]===123&&new TextDecoder().decode(t).includes("404"))throw new ce(`Failed to load binary: ${e.url}`);return t};Hs.prototype._binarizeGltf=function(e){let n=new TextEncoder().encode(JSON.stringify(e)),i=new Uint8Array(n.byteLength+20),o={magic:new Uint8Array(i.buffer,0,4),version:new Uint32Array(i.buffer,4,1),length:new Uint32Array(i.buffer,8,1),chunkLength:new Uint32Array(i.buffer,12,1),chunkType:new Uint32Array(i.buffer,16,1),chunkData:new Uint8Array(i.buffer,20,n.byteLength)};return o.magic[0]=103,o.magic[1]=108,o.magic[2]=84,o.magic[3]=70,o.version[0]=2,o.length[0]=i.byteLength,o.chunkLength[0]=n.byteLength,o.chunkType[0]=1313821514,o.chunkData.set(n),i};var Rvt=new U;function Mvt(e,t){let n=e.tilingScheme,i=[],o={},r=e._lodCount,s=Ae.fromRadians(t.west,t.north),a=Ae.fromRadians(t.east,t.south),c=n.positionToTileXY(s,r),u=n.positionToTileXY(a,r);for(let h=c.x;h<=u.x;h++)for(let A=c.y;A<=u.y;A++){let g=U.fromElements(h,A,Rvt),m=g.toString();if(!o.hasOwnProperty(m)){let _={x:g.x,y:g.y,level:r,tilingScheme:n,terrainProvider:e,positions:[]};o[m]=_,i.push(_)}}let f=[];for(let h=0;h<i.length;++h){let A=i[h],g=A.terrainProvider.requestTileGeometry(A.x,A.y,A.level);f.push(g)}return Promise.all(f).then(function(h){let A=[];for(let g=0;g<h.length;g++){let m={tilingScheme:n,x:i[g].x,y:i[g].y,level:i[g].level},_=h[g],y="Geographic";n._projection instanceof zi&&(y="WebMercator");let C={projectionType:y,projection:n._projection,nativeExtent:n.tileXYToNativeRectangle(m.x,m.y,m.level),height:_._height,width:_._width,scale:_._structure.heightScale,offset:_._structure.heightOffset};if(_._encoding===Qd.LERC){let E=twe.default.decode(_._buffer);C.buffer=E.pixels[0]}else C.buffer=_._buffer;A.push(C)}return A})}async function Nvt(e){let t=e._geoidTiledTerrainProvider;if(l(t))try{let n=await Mvt(t,e._extent);e._geoidDataList=n}catch{console.log("Error retrieving Geoid Terrain tiles - no geoid conversion will be performed.")}}Hs.prototype.loadGeoidData=async function(){return l(this._geoidDataPromise)?this._geoidDataPromise:(this._geoidDataPromise=Nvt(this),this._geoidDataPromise)};Hs.prototype._computeExtent=function(){let e;for(let t=0;t<this._layersExtent.length;t++){let n=this._layersExtent[t];l(e)?ae.union(e,n,e):e=ae.clone(n)}this._extent=e};Hs.prototype.getAttributeNames=function(){let e=[];for(let t=0;t<this._attributeStatistics.length;++t)e.push(...this._attributeStatistics[t].names);return e};Hs.prototype.getAttributeValues=function(e){for(let t=0;t<this._attributeStatistics.length;++t){let n=this._attributeStatistics[t]._getValues(e);if(l(n))return n}return[]};Hs.prototype.filterByAttributes=function(e){let t=[];for(let n=0;n<this._layers.length;n++){let i=this._layers[n].filterByAttributes(e);t.push(i)}return Promise.all(t)};var Bm=Hs;var k3={};k3.createTilesetFromIModelId=async function(e){let t=e;typeof e=="string"&&(t={iModelId:e,tilesetOptions:arguments[1]},Tr("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iModelId:n,changesetId:i,tilesetOptions:o}=t,{exports:r}=await ra.getExports(n,i);if(r.length>0&&r.every(f=>f.status===ra.ExportStatus.Invalid))throw new ce(`All exports for this iModel are Invalid: ${n}`);let s=r.find(f=>f.status===ra.ExportStatus.Complete);if(!l(s))return;let a=new URL(s._links.mesh.href);a.pathname=`${a.pathname}/tileset.json`;let c=a.toString(),u=new we({url:c});return ks.fromUrl(u,o)};k3.createTilesetForRealityDataId=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,realityDataId:arguments[1],type:arguments[2],rootDocument:arguments[3]},Tr("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,realityDataId:i}=t,{type:o,rootDocument:r}=t;if(!l(o)||!l(r)){let c=await ra.getRealityDataMetadata(n,i);r=c.rootDocument,o=c.type}if(![ra.RealityDataType.Cesium3DTiles,ra.RealityDataType.PNTS,ra.RealityDataType.RealityMesh3DTiles,ra.RealityDataType.Terrain3DTiles].includes(o))throw new ce(`Reality data type is not a mesh type: ${o}`);let a=await ra.getRealityDataURL(n,i,r);return ks.fromUrl(a,{maximumScreenSpaceError:4})};k3.createDataSourceForRealityDataId=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,realityDataId:arguments[1],type:arguments[2],rootDocument:arguments[3]},Tr("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,realityDataId:i}=t,{type:o,rootDocument:r}=t;if(!l(o)||!l(r)){let c=await ra.getRealityDataMetadata(n,i);r=c.rootDocument,o=c.type}if(![ra.RealityDataType.KML,ra.RealityDataType.GeoJSON].includes(o))throw new ce(`Reality data type is not a data source type: ${o}`);let a=await ra.getRealityDataURL(n,i,r);return o===ra.RealityDataType.GeoJSON?jy.load(a):xI.load(a)};k3.loadGeospatialFeatures=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,collectionId:arguments[1],limit:arguments[2]},Tr("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,collectionId:i,limit:o}=t,r=o??1e4,s=`${ra.apiEndpoint}geospatial-features/itwins/${n}/ogc/collections/${i}/items`,a=new we({url:s,headers:{Authorization:ra._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{limit:r,client:"CesiumJS"}});return jy.load(a)};var Aee=k3;function nwe(){}Object.defineProperties(nwe.prototype,{color:{get:me.throwInstantiationError},intensity:{get:me.throwInstantiationError}});var pee=nwe;var Lvt=/\/$/,iwe=new Bt('© <a href="https://www.mapbox.com/about/maps/">Mapbox</a> © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> <strong><a href="https://www.mapbox.com/map-feedback/">Improve this map</a></strong>');function eB(e){e=e??V.EMPTY_OBJECT;let t=e.styleId,n=e.accessToken;this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let i=we.createIfNeeded(e.url??"https://api.mapbox.com/styles/v1/");this._styleId=t,this._accessToken=n;let o=e.tilesize??512;this._tilesize=o;let r=e.username??"mapbox";this._username=r;let s=l(e.scaleFactor)?"@2x":"",a=i.getUrlComponent();Lvt.test(a)||(a+="/"),a+=`${this._username}/${t}/tiles/${this._tilesize}/{z}/{x}/{y}${s}`,i.url=a,i.setQueryParameters({access_token:n});let c;l(e.credit)?(c=e.credit,typeof c=="string"&&(c=new Bt(c))):c=iwe,this._resource=i,this._imageryProvider=new Ac({url:i,credit:c,ellipsoid:e.ellipsoid,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,rectangle:e.rectangle})}Object.defineProperties(eB.prototype,{url:{get:function(){return this._imageryProvider.url}},rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._imageryProvider.errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},proxy:{get:function(){return this._imageryProvider.proxy}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}}});eB.prototype.getTileCredits=function(e,t,n){};eB.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};eB.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};eB._defaultCredit=iwe;var gee=eB;function _ee(e){}_ee.prototype.isReady=function(){return!0};_ee.prototype.shouldDiscardImage=function(e){return!1};var yee=_ee;var Ovt=new Bt("MapQuest, Open Street Map and contributors, CC-BY-SA");function w5(e){e=e??V.EMPTY_OBJECT;let t=we.createIfNeeded(e.url??"https://tile.openstreetmap.org/");t.appendForwardSlash(),t.url+=`{z}/{x}/{y}${e.retinaTiles?"@2x":""}.${e.fileExtension??"png"}`;let n=new Ts({ellipsoid:e.ellipsoid}),i=256,o=256,r=e.minimumLevel??0,s=e.maximumLevel,a=e.rectangle??n.rectangle,c=n.positionToTileXY(ae.southwest(a),r),u=n.positionToTileXY(ae.northeast(a),r),f=(Math.abs(u.x-c.x)+1)*(Math.abs(u.y-c.y)+1),h=e.credit??Ovt;typeof h=="string"&&(h=new Bt(h)),Ac.call(this,{url:t,credit:h,tilingScheme:n,tileWidth:i,tileHeight:o,minimumLevel:r,maximumLevel:s,rectangle:a})}l(Object.create)&&(w5.prototype=Object.create(Ac.prototype),w5.prototype.constructor=w5);var u_=w5;var Fvt=new U(1,1);function Cee(e){e=e??V.EMPTY_OBJECT,this.mass=e.mass??1,this.position=d.clone(e.position??d.ZERO),this.velocity=d.clone(e.velocity??d.ZERO),this.life=e.life??Number.MAX_VALUE,this.image=e.image,this.startColor=G.clone(e.startColor??G.WHITE),this.endColor=G.clone(e.endColor??G.WHITE),this.startScale=e.startScale??1,this.endScale=e.endScale??1,this.imageSize=U.clone(e.imageSize??Fvt),this._age=0,this._normalizedAge=0,this._billboard=void 0}Object.defineProperties(Cee.prototype,{age:{get:function(){return this._age}},normalizedAge:{get:function(){return this._normalizedAge}}});var owe=new d;Cee.prototype.update=function(e,t){return d.multiplyByScalar(this.velocity,e,owe),d.add(this.position,owe,this.position),l(t)&&t(this,e),this._age+=e,this.life===Number.MAX_VALUE?this._normalizedAge=0:this._normalizedAge=this._age/this.life,this._age<=this.life};var tB=Cee;function rwe(e){e=e??V.EMPTY_OBJECT,this.time=e.time??0,this.minimum=e.minimum??0,this.maximum=e.maximum??50,this._complete=!1}Object.defineProperties(rwe.prototype,{complete:{get:function(){return this._complete}}});var Eee=rwe;function swe(e){}swe.prototype.emit=function(e){me.throwInstantiationError()};var Iee=swe;var awe=new U(1,1);function U3(e){e=e??V.EMPTY_OBJECT,this.show=e.show??!0,this.updateCallback=e.updateCallback,this.loop=e.loop??!0,this.image=e.image??void 0;let t=e.emitter;l(t)||(t=new T3(.5)),this._emitter=t,this._bursts=e.bursts,this._modelMatrix=N.clone(e.modelMatrix??N.IDENTITY),this._emitterModelMatrix=N.clone(e.emitterModelMatrix??N.IDENTITY),this._matrixDirty=!0,this._combinedMatrix=new N,this._startColor=G.clone(e.color??e.startColor??G.WHITE),this._endColor=G.clone(e.color??e.endColor??G.WHITE),this._startScale=e.scale??e.startScale??1,this._endScale=e.scale??e.endScale??1,this._emissionRate=e.emissionRate??5,this._minimumSpeed=e.speed??e.minimumSpeed??1,this._maximumSpeed=e.speed??e.maximumSpeed??1,this._minimumParticleLife=e.particleLife??e.minimumParticleLife??5,this._maximumParticleLife=e.particleLife??e.maximumParticleLife??5,this._minimumMass=e.mass??e.minimumMass??1,this._maximumMass=e.mass??e.maximumMass??1,this._minimumImageSize=U.clone(e.imageSize??e.minimumImageSize??awe),this._maximumImageSize=U.clone(e.imageSize??e.maximumImageSize??awe),this._sizeInMeters=e.sizeInMeters??!1,this._lifetime=e.lifetime??Number.MAX_VALUE,this._billboardCollection=void 0,this._particles=[],this._particlePool=[],this._previousTime=void 0,this._currentTime=0,this._carryOver=0,this._complete=new _e,this._isComplete=!1,this._updateParticlePool=!0,this._particleEstimate=0}Object.defineProperties(U3.prototype,{emitter:{get:function(){return this._emitter},set:function(e){this._emitter=e}},bursts:{get:function(){return this._bursts},set:function(e){this._bursts=e,this._updateParticlePool=!0}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._matrixDirty=this._matrixDirty||!N.equals(this._modelMatrix,e),N.clone(e,this._modelMatrix)}},emitterModelMatrix:{get:function(){return this._emitterModelMatrix},set:function(e){this._matrixDirty=this._matrixDirty||!N.equals(this._emitterModelMatrix,e),N.clone(e,this._emitterModelMatrix)}},startColor:{get:function(){return this._startColor},set:function(e){G.clone(e,this._startColor)}},endColor:{get:function(){return this._endColor},set:function(e){G.clone(e,this._endColor)}},startScale:{get:function(){return this._startScale},set:function(e){this._startScale=e}},endScale:{get:function(){return this._endScale},set:function(e){this._endScale=e}},emissionRate:{get:function(){return this._emissionRate},set:function(e){this._emissionRate=e,this._updateParticlePool=!0}},minimumSpeed:{get:function(){return this._minimumSpeed},set:function(e){this._minimumSpeed=e}},maximumSpeed:{get:function(){return this._maximumSpeed},set:function(e){this._maximumSpeed=e}},minimumParticleLife:{get:function(){return this._minimumParticleLife},set:function(e){this._minimumParticleLife=e}},maximumParticleLife:{get:function(){return this._maximumParticleLife},set:function(e){this._maximumParticleLife=e,this._updateParticlePool=!0}},minimumMass:{get:function(){return this._minimumMass},set:function(e){this._minimumMass=e}},maximumMass:{get:function(){return this._maximumMass},set:function(e){this._maximumMass=e}},minimumImageSize:{get:function(){return this._minimumImageSize},set:function(e){this._minimumImageSize=e}},maximumImageSize:{get:function(){return this._maximumImageSize},set:function(e){this._maximumImageSize=e}},sizeInMeters:{get:function(){return this._sizeInMeters},set:function(e){this._sizeInMeters=e}},lifetime:{get:function(){return this._lifetime},set:function(e){this._lifetime=e}},complete:{get:function(){return this._complete}},isComplete:{get:function(){return this._isComplete}}});function Qvt(e){let t=e._emissionRate,n=e._maximumParticleLife,i=0,o=e._bursts;if(l(o)){let h=o.length;for(let A=0;A<h;++A)i+=o[A].maximum}let r=e._billboardCollection,s=e.image,a=Math.ceil(t*n+i),c=e._particles,u=e._particlePool,f=Math.max(a-c.length-u.length,0);for(let h=0;h<f;++h){let A=new tB;A._billboard=r.add({image:s,show:!1}),u.push(A)}e._particleEstimate=a}function kvt(e){let t=e._particlePool.pop();return l(t)||(t=new tB),t}function Uvt(e,t){e._particlePool.push(t)}function Gvt(e){let t=e._particles,n=e._particlePool,i=e._billboardCollection,o=t.length,r=n.length,s=e._particleEstimate,a=r-Math.max(s-o-r,0);for(let c=a;c<r;++c){let u=n[c];i.remove(u._billboard)}n.length=a}function zvt(e){l(e._billboard)&&(e._billboard.show=!1)}function cwe(e,t){let n=t._billboard;l(n)||(n=t._billboard=e._billboardCollection.add({image:t.image})),n.width=t.imageSize.x,n.height=t.imageSize.y,n.position=t.position,n.sizeInMeters=e.sizeInMeters,n.show=!0;let i=D.lerp(t.startColor.red,t.endColor.red,t.normalizedAge),o=D.lerp(t.startColor.green,t.endColor.green,t.normalizedAge),r=D.lerp(t.startColor.blue,t.endColor.blue,t.normalizedAge),s=D.lerp(t.startColor.alpha,t.endColor.alpha,t.normalizedAge);n.color=new G(i,o,r,s),n.scale=D.lerp(t.startScale,t.endScale,t.normalizedAge)}function Vvt(e,t){t.startColor=G.clone(e._startColor,t.startColor),t.endColor=G.clone(e._endColor,t.endColor),t.startScale=e._startScale,t.endScale=e._endScale,t.image=e.image,t.life=D.randomBetween(e._minimumParticleLife,e._maximumParticleLife),t.mass=D.randomBetween(e._minimumMass,e._maximumMass),t.imageSize.x=D.randomBetween(e._minimumImageSize.x,e._maximumImageSize.x),t.imageSize.y=D.randomBetween(e._minimumImageSize.y,e._maximumImageSize.y),t._normalizedAge=0,t._age=0;let n=D.randomBetween(e._minimumSpeed,e._maximumSpeed);d.multiplyByScalar(t.velocity,n,t.velocity),e._particles.push(t)}function Hvt(e,t){if(e._isComplete)return 0;t=D.mod(t,e._lifetime);let n=t*e._emissionRate,i=Math.floor(n);if(e._carryOver+=n-i,e._carryOver>1&&(i++,e._carryOver-=1),l(e.bursts)){let o=e.bursts.length;for(let r=0;r<o;r++){let s=e.bursts[r],a=e._currentTime;l(s)&&!s._complete&&a>s.time&&(i+=D.randomBetween(s.minimum,s.maximum),s._complete=!0)}}return i}var B5=new d;U3.prototype.update=function(e){if(!this.show)return;l(this._billboardCollection)||(this._billboardCollection=new nf),this._updateParticlePool&&(Qvt(this),this._updateParticlePool=!1);let t=0;this._previousTime&&(t=K.secondsDifference(e.time,this._previousTime)),t<0&&(t=0);let n=this._particles,i=this._emitter,o=this.updateCallback,r,s,a=n.length;for(r=0;r<a;++r)s=n[r],s.update(t,o)?cwe(this,s):(zvt(s),Uvt(this,s),n[r]=n[a-1],--r,--a);n.length=a;let c=Hvt(this,t);if(c>0&&l(i)){this._matrixDirty&&(this._combinedMatrix=N.multiply(this.modelMatrix,this.emitterModelMatrix,this._combinedMatrix),this._matrixDirty=!1);let u=this._combinedMatrix;for(r=0;r<c;r++)s=kvt(this),this._emitter.emit(s),d.add(s.position,s.velocity,B5),N.multiplyByPoint(u,B5,B5),s.position=N.multiplyByPoint(u,s.position,s.position),d.subtract(B5,s.position,s.velocity),d.normalize(s.velocity,s.velocity),Vvt(this,s),cwe(this,s)}if(this._billboardCollection.update(e),this._previousTime=K.clone(e.time,this._previousTime),this._currentTime+=t,this._lifetime!==Number.MAX_VALUE&&this._currentTime>this._lifetime)if(this.loop){if(this._currentTime=D.mod(this._currentTime,this._lifetime),this.bursts){let u=this.bursts.length;for(r=0;r<u;r++)this.bursts[r]._complete=!1}}else this._isComplete=!0,this._complete.raiseEvent(this);e.frameNumber%120===0&&Gvt(this)};U3.prototype.isDestroyed=function(){return!1};U3.prototype.destroy=function(){return this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),ue(this)};var xee=U3;function kf(){me.throwInstantiationError()}kf.computeDefaultLevelZeroMaximumGeometricError=function(e){return e.ellipsoid.maximumRadius*2*Math.PI*.25/(65*e.getNumberOfXTilesAtLevel(0))};Object.defineProperties(kf.prototype,{quadtree:{get:me.throwInstantiationError,set:me.throwInstantiationError},tilingScheme:{get:me.throwInstantiationError},errorEvent:{get:me.throwInstantiationError}});kf.prototype.update=me.throwInstantiationError;kf.prototype.beginUpdate=me.throwInstantiationError;kf.prototype.endUpdate=me.throwInstantiationError;kf.prototype.getLevelMaximumGeometricError=me.throwInstantiationError;kf.prototype.loadTile=me.throwInstantiationError;kf.prototype.computeTileVisibility=me.throwInstantiationError;kf.prototype.showTileThisFrame=me.throwInstantiationError;kf.prototype.computeDistanceToTile=me.throwInstantiationError;kf.prototype.isDestroyed=me.throwInstantiationError;kf.prototype.destroy=me.throwInstantiationError;var bee=kf;function Tee(e){e=e??1,this._radius=e??1}Object.defineProperties(Tee.prototype,{radius:{get:function(){return this._radius},set:function(e){this._radius=e}}});Tee.prototype.emit=function(e){let t=D.randomBetween(0,D.TWO_PI),n=D.randomBetween(0,D.PI),i=D.randomBetween(0,this._radius),o=i*Math.cos(t)*Math.sin(n),r=i*Math.sin(t)*Math.sin(n),s=i*Math.cos(n);e.position=d.fromElements(o,r,s,e.position),e.velocity=d.normalize(e.position,e.velocity)};var See=Tee;function G3(){}G3.prototype.evaluate=function(e,t){me.throwInstantiationError()};G3.prototype.evaluateColor=function(e,t){me.throwInstantiationError()};G3.prototype.getShaderFunction=function(e,t,n,i){me.throwInstantiationError()};G3.prototype.getVariables=function(){me.throwInstantiationError()};var wee=G3;function nB(e){this._ready=!1,this._provider=void 0,this._errorEvent=new _e,this._readyEvent=new _e,jvt(this,e)}Object.defineProperties(nB.prototype,{errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},ready:{get:function(){return this._ready}},provider:{get:function(){return this._provider}}});nB.fromWorldTerrain=function(e){return new nB(Ex(e))};nB.fromWorldBathymetry=function(e){return new nB(_3(e))};function Wvt(e,t){e.numberOfListeners>0?e.raiseEvent(t):console.error(t)}async function jvt(e,t){let n;try{n=await Promise.resolve(t),e._provider=n,e._ready=!0,e._readyEvent.raiseEvent(n)}catch(i){Wvt(e._errorEvent,i)}}var z3=nB;function iB(){}iB.prototype.boundingVolume=void 0;iB.prototype.boundingSphere=void 0;iB.prototype.distanceToCamera=function(e){me.throwInstantiationError()};iB.prototype.intersectPlane=function(e){me.throwInstantiationError()};iB.prototype.createDebugVolume=function(e){me.throwInstantiationError()};var Bee=iB;function V3(e){e=e??V.EMPTY_OBJECT,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new so({ellipsoid:e.ellipsoid}),this._color=e.color??G.YELLOW,this._errorEvent=new _e,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0}Object.defineProperties(V3.prototype,{proxy:{get:function(){}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){}},minimumLevel:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},hasAlphaChannel:{get:function(){return!0}}});V3.prototype.getTileCredits=function(e,t,n){};V3.prototype.requestImage=function(e,t,n,i){let o=document.createElement("canvas");o.width=256,o.height=256;let r=o.getContext("2d"),s=this._color.toCssColorString();return r.strokeStyle=s,r.lineWidth=2,r.strokeRect(1,1,255,255),r.font="bold 25px Arial",r.textAlign="center",r.fillStyle=s,r.fillText(`L: ${n}`,124,86),r.fillText(`X: ${e}`,124,136),r.fillText(`Y: ${t}`,124,186),Promise.resolve(o)};V3.prototype.pickFeatures=function(e,t,n,i,o){};var H3=V3;function Dee(e){me.throwInstantiationError()}Dee.prototype.isReady=me.throwInstantiationError;Dee.prototype.shouldDiscardImage=me.throwInstantiationError;var vee=Dee;var Yvt={START:0,LOADING:1,READY:2,UPSAMPLED_ONLY:3},Pee=Object.freeze(Yvt);function D5(e,t){this.show=!0,l(e)||(e=new Ye),this.rectangle=Ye.clone(e),l(t)||(t=ro.fromType(ro.ColorType,{color:new G(1,1,1,1)})),this.material=t,this._material=void 0,this._overlayCommand=void 0,this._rs=void 0}D5.prototype.update=function(e){if(!this.show)return;let t=this._rs;if((!l(t)||!Ye.equals(t.viewport,this.rectangle))&&(this._rs=Ue.fromCache({blending:pn.ALPHA_BLEND,viewport:this.rectangle})),e.passes.render){let i=e.context;if(this._material!==this.material||!l(this._overlayCommand)){this._material=this.material,l(this._overlayCommand)&&this._overlayCommand.shaderProgram.destroy();let o=new He({sources:[this._material.shaderSource,j2]});this._overlayCommand=i.createViewportQuadCommand(o,{renderState:this._rs,uniformMap:this._material._uniforms,owner:this}),this._overlayCommand.pass=Be.OVERLAY}this._material.update(i),this._overlayCommand.renderState=this._rs,this._overlayCommand.uniformMap=this._material._uniforms,e.commandList.push(this._overlayCommand)}};D5.prototype.isDestroyed=function(){return!1};D5.prototype.destroy=function(){return l(this._overlayCommand)&&(this._overlayCommand.shaderProgram=this._overlayCommand.shaderProgram&&this._overlayCommand.shaderProgram.destroy()),ue(this)};var Ree=D5;function Mee(){me.throwInstantiationError()}Object.defineProperties(Mee.prototype,{globalTransform:{get:me.throwInstantiationError},shapeTransform:{get:me.throwInstantiationError},shape:{get:me.throwInstantiationError},minBounds:{get:me.throwInstantiationError},maxBounds:{get:me.throwInstantiationError},dimensions:{get:me.throwInstantiationError},paddingBefore:{get:me.throwInstantiationError},paddingAfter:{get:me.throwInstantiationError},names:{get:me.throwInstantiationError},types:{get:me.throwInstantiationError},componentTypes:{get:me.throwInstantiationError},minimumValues:{get:me.throwInstantiationError},maximumValues:{get:me.throwInstantiationError},maximumTileCount:{get:me.throwInstantiationError},availableLevels:{get:me.throwInstantiationError},keyframeCount:{get:me.throwInstantiationError},timeIntervalCollection:{get:me.throwInstantiationError}});Mee.prototype.requestData=function(e){me.throwInstantiationError()};var Nee=Mee;function Dx(){me.throwInstantiationError()}Object.defineProperties(Dx.prototype,{orientedBoundingBox:{get:me.throwInstantiationError},boundingSphere:{get:me.throwInstantiationError},boundTransform:{get:me.throwInstantiationError},shapeTransform:{get:me.throwInstantiationError},shaderUniforms:{get:me.throwInstantiationError},shaderDefines:{get:me.throwInstantiationError},shaderMaximumIntersectionsLength:{get:me.throwInstantiationError}});Dx.prototype.update=me.throwInstantiationError;Dx.prototype.computeOrientedBoundingBoxForTile=me.throwInstantiationError;Dx.prototype.computeOrientedBoundingBoxForSample=me.throwInstantiationError;Dx.DefaultMinBounds=me.throwInstantiationError;Dx.DefaultMaxBounds=me.throwInstantiationError;var Lee=Dx;var qvt=new G,Kvt=new G,Xvt=new G,Jvt=new G,lwe=new se,W3=new Uint8Array(4);function uwe(e,t,n,i){let o=t.height===n.height?0:(e-t.height)/(n.height-t.height);return G.lerp(t.color,n.color,o,i)}function v5(e,t){return{height:e,color:G.clone(t)}}function fwe(e){return e=e.filter(function(t,n,i){let o=n>0,r=n<i.length-1,s=o?t.height===i[n-1].height:!0,a=r?t.height===i[n+1].height:!0;return!s||!a}),e=e.filter(function(t,n,i){let o=n>0,r=n<i.length-1,s=o?G.equals(t.color,i[n-1].color):!1,a=r?G.equals(t.color,i[n+1].color):!1;return!s||!a}),e=e.filter(function(t,n,i){let o=n>0,r=o?G.equals(t.color,i[n-1].color):!1,s=o?t.height===i[n-1].height:!0;return!r||!s}),e}function Zvt(e){let t,n,i=[],o=e.length;for(t=0;t<o;t++){let r=e[t],s=r.entries,a=s.length,c=[];for(n=0;n<a;n++){let g=s[n],m=D.clamp(g.height,Ru._minimumHeight,Ru._maximumHeight),_=G.clone(g.color,qvt);_.red*=_.alpha,_.green*=_.alpha,_.blue*=_.alpha,c.push(v5(m,_))}let u=!0,f=!0;for(n=0;n<a-1;n++){let g=c[n+0],m=c[n+1];u=u&&g.height<=m.height,f=f&&g.height>=m.height}f?c=c.reverse():u||vA(c,function(g,m){return D.sign(g.height-m.height)});let h=r.extendDownwards??!1,A=r.extendUpwards??!1;c.length===1&&!h&&!A&&(h=!0,A=!0),h&&c.splice(0,0,v5(Ru._minimumHeight,c[0].color)),A&&c.splice(c.length,0,v5(Ru._maximumHeight,c[c.length-1].color)),c=fwe(c),i.push(c)}return i}function $vt(e){let t=Zvt(e),n=[],i=[],o;function r(u,f){n.push(v5(u,f))}function s(u,f,h){let A=G.multiplyByScalar(h,1-f.alpha,Jvt);A=G.add(A,f,A),r(u,A)}let a=t.length;for(o=0;o<a;o++){let u=t[o],f=0,h=0;i=n,n=[];let A=u.length,g=i.length;for(;f<A||h<g;){let m=f<A?u[f]:void 0,_=f>0?u[f-1]:void 0,y=f<A-1?u[f+1]:void 0,C=h<g?i[h]:void 0,E=h>0?i[h-1]:void 0,I=h<g-1?i[h+1]:void 0;if(l(m)&&l(C)&&m.height===C.height){let b=l(I)&&C.height===I.height,S=!l(E),B=!l(I),v=l(y)&&m.height===y.height,P=!l(_),M=!l(y);b?v?(s(m.height,m.color,C.color),s(m.height,y.color,I.color)):P?(r(m.height,C.color),s(m.height,m.color,I.color)):M?(s(m.height,m.color,C.color),r(m.height,I.color)):(s(m.height,m.color,C.color),s(m.height,m.color,I.color)):S?v?(r(m.height,m.color),s(m.height,y.color,C.color)):M?(r(m.height,m.color),r(m.height,C.color)):(P||r(m.height,m.color),s(m.height,m.color,C.color)):B?v?(s(m.height,m.color,C.color),r(m.height,y.color)):P?(r(m.height,C.color),r(m.height,m.color)):M?s(m.height,m.color,C.color):(s(m.height,m.color,C.color),r(m.height,m.color)):v?(s(m.height,m.color,C.color),s(m.height,y.color,C.color)):P?(r(m.height,C.color),s(m.height,m.color,C.color)):M?(s(m.height,m.color,C.color),r(m.height,C.color)):s(m.height,m.color,C.color),f+=v?2:1,h+=b?2:1}else if(l(m)&&l(C)&&l(E)&&m.height<C.height){let b=uwe(m.height,E,C,Xvt);l(_)?l(y)?s(m.height,m.color,b):(s(m.height,m.color,b),r(m.height,b)):(r(m.height,b),s(m.height,m.color,b)),f++}else if(l(C)&&l(m)&&l(_)&&C.height<m.height){let b=uwe(C.height,_,m,Kvt);l(E)?l(I)?s(C.height,b,C.color):(s(C.height,b,C.color),r(C.height,b)):(r(C.height,b),s(C.height,b,C.color)),h++}else l(m)&&(!l(C)||m.height<C.height)?(l(C)&&!l(E)&&!l(y)?(r(m.height,m.color),r(m.height,Ru._emptyColor),r(C.height,Ru._emptyColor)):(!l(C)&&l(E)&&!l(_)&&(r(E.height,Ru._emptyColor),r(m.height,Ru._emptyColor)),r(m.height,m.color)),f++):l(C)&&(!l(m)||C.height<m.height)&&(r(C.height,C.color),h++)}}return fwe(n)}function Ru(e){let{scene:t,layers:n}=e??V.EMPTY_OBJECT,{context:i}=t,o=$vt(n),r=o.length,s,a,c;if(!Ru._useFloatTexture(i)){a=Ve.UNSIGNED_BYTE,c=$e.RGBA,s=new Uint8Array(r*4);for(let g=0;g<r;g++)se.packFloat(o[g].height,lwe),se.pack(lwe,s,g*4)}else{a=Ve.FLOAT,c=i.webgl2?$e.RED:$e.LUMINANCE,s=new Float32Array(r);for(let g=0;g<r;g++)s[g]=o[g].height}let f=Mt.create({context:i,pixelFormat:c,pixelDatatype:a,source:{arrayBufferView:s,width:r,height:1},sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.NEAREST,magnificationFilter:mi.NEAREST})}),h=new Uint8Array(r*4);for(let g=0;g<r;g++)o[g].color.toBytes(W3),h[g*4+0]=W3[0],h[g*4+1]=W3[1],h[g*4+2]=W3[2],h[g*4+3]=W3[3];let A=Mt.create({context:i,pixelFormat:$e.RGBA,pixelDatatype:Ve.UNSIGNED_BYTE,source:{arrayBufferView:h,width:r,height:1},sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:mi.LINEAR})});return ro.fromType("ElevationBand",{heights:f,colors:A})}Ru._useFloatTexture=function(e){return e.floatingPointTexture};Ru._maximumHeight=5906376425472;Ru._minimumHeight=-5906376425472;Ru._emptyColor=new G(0,0,0,0);var Oee=Ru;async function ePt(e,t){t=t??{},t.cacheBytes=t.cacheBytes??1536*1024*1024,t.maximumCacheOverflowBytes=t.maximumCacheOverflowBytes??1024*1024*1024,t.enableCollision=t.enableCollision??!0,e=e??V.EMPTY_OBJECT,e.onlyUsingWithGoogleGeocoder||yt("google-tiles-with-google-geocoder","Only the Google geocoder can be used with Google Photorealistic 3D Tiles. Set the `geocode` property of Viewer constructor options. You can set additionalOptions.onlyUsingWithGoogleGeocoder to hide this warning once you have configured the geocoder.");let n=e.key??_x.defaultApiKey;if(!l(n))return tPt(t);let i,o=_x.getDefaultCredit();l(o)&&(i=[o]);let r=new we({url:`${_x.mapTilesApiEndpoint}3dtiles/root.json`,queryParameters:{key:n},credits:i});return ks.fromUrl(r,t)}var dwe={};async function tPt(e){let i=dwe[2275207];l(i)||(i=Hu.fromAssetId(2275207),dwe[2275207]=i);let o=await i;return ks.fromUrl(o,e)}var Fee=ePt;async function nPt(e){let t=await ks.fromIonAssetId(96188,e);e=e??V.EMPTY_OBJECT;let n=e.style;if(!l(n)){let i=(e.defaultColor??G.WHITE).toCssColorString();n=new xx({color:`Boolean(\${feature['cesium#color']}) ? color(\${feature['cesium#color']}) : ${i}`})}return t.style=n,t}var Qee=nPt;function iPt(e){e=e??V.EMPTY_OBJECT;let t=[],n=e.geometry;(!l(n.attributes)||!l(n.primitiveType))&&(n=n.constructor.createGeometry(n));let i=n.attributes,o=N.clone(e.modelMatrix??N.IDENTITY),r=e.length??1e4;if(l(i.normal)&&t.push(new Pt({geometry:Vn.createLineSegmentsForVectors(n,"normal",r),attributes:{color:new $t(1,0,0,1)},modelMatrix:o})),l(i.tangent)&&t.push(new Pt({geometry:Vn.createLineSegmentsForVectors(n,"tangent",r),attributes:{color:new $t(0,1,0,1)},modelMatrix:o})),l(i.bitangent)&&t.push(new Pt({geometry:Vn.createLineSegmentsForVectors(n,"bitangent",r),attributes:{color:new $t(0,0,1,1)},modelMatrix:o})),t.length>0)return new Qn({asynchronous:!1,geometryInstances:t,appearance:new gn({flat:!0,translucent:!1})})}var kee=iPt;var Uee=`uniform sampler2D u_depthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + float z_window = czm_unpackDepth(texture(u_depthTexture, v_textureCoordinates)); + z_window = czm_reverseLogDepth(z_window); + float n_range = czm_depthRange.near; + float f_range = czm_depthRange.far; + float z_ndc = (2.0 * z_window - n_range - f_range) / (f_range - n_range); + float scale = pow(z_ndc * 0.5 + 0.5, 8.0); + out_FragColor = vec4(mix(vec3(0.0), vec3(1.0), scale), 1.0); +} +`;function oPt(e){e=e??V.EMPTY_OBJECT,this.typedArray=e.typedArray,this.width=e.width,this.height=e.height,this.pixelFormat=e.pixelFormat??$e.RGBA,this.pixelDatatype=e.pixelDatatype??Ve.UNSIGNED_BYTE;let t=e.url;typeof t=="string"&&(t=we.createIfNeeded(t)),this.resource=t;let i=e.repeat??!0?Tn.REPEAT:Tn.CLAMP_TO_EDGE;this.sampler=new on({wrapS:i,wrapT:i,minificationFilter:e.minificationFilter,magnificationFilter:e.magnificationFilter,maximumAnisotropy:e.maximumAnisotropy})}var Gee=oPt;var rPt={FLOAT:"float",VEC2:"vec2",VEC3:"vec3",VEC4:"vec4",MAT2:"mat2",MAT3:"mat3",MAT4:"mat4"},zee=Object.freeze(rPt);var sPt={SIGX:"SIGX",SIGY:"SIGY",SIGZ:"SIGZ",VARX:"VARX",VARY:"VARY",VARZ:"VARZ",SIGR:"VARZ"},Vee=Object.freeze(sPt);function aPt(e){async function t({data:i}){let o=[],r={id:i.id,result:void 0,error:void 0};self.CESIUM_BASE_URL=i.baseUrl;try{let s=await e(i.parameters,o);r.result=s}catch(s){s instanceof Error?r.error={name:s.name,message:s.message,stack:s.stack}:r.error=s}i.canTransferArrayBuffer||(o.length=0);try{postMessage(r,o)}catch(s){r.result=void 0,r.error=`postMessage failed with error: ${eA(s)} + with responseMessage: ${JSON.stringify(r)}`,postMessage(r)}}function n(i){postMessage({id:i.data?.id,error:`postMessage failed with error: ${JSON.stringify(i)}`})}return self.onmessage=t,self.onmessageerror=n,self}var Hee=aPt;globalThis.CESIUM_VERSION="1.132";var j3;typeof ko<"u"&&(j3=ko);(function(){/*! + * Knockout JavaScript library v3.5.1 + * (c) The Knockout.js team - http://knockoutjs.com/ + * License: MIT (http://www.opensource.org/licenses/mit-license.php) + */(function(){(function(e){var t=this||(0,eval)("this"),n=t.document,i=t.navigator,o=t.jQuery,r=t.JSON;o||typeof jQuery>"u"||(o=jQuery),function(s){s(t.ko={})}(function(s,a){function c(p,x){return p===null||typeof p in _?p===x:!1}function u(p,x){var T;return function(){T||(T=m.a.setTimeout(function(){T=e,p()},x))}}function f(p,x){var T;return function(){clearTimeout(T),T=m.a.setTimeout(p,x)}}function h(p,x){x&&x!=="change"?x==="beforeChange"?this.pc(p):this.gb(p,x):this.qc(p)}function A(p,x){x!==null&&x.s&&x.s()}function g(p,x){var T=this.qd,w=T[b];w.ra||(this.Qb&&this.mb[x]?(T.uc(x,p,this.mb[x]),this.mb[x]=null,--this.Qb):w.I[x]||T.uc(x,p,w.J?{da:p}:T.$c(p)),p.Ja&&p.gd())}var m=typeof s<"u"?s:{};m.b=function(p,x){for(var T=p.split("."),w=m,R=0;R<T.length-1;R++)w=w[T[R]];w[T[T.length-1]]=x},m.L=function(p,x,T){p[x]=T},m.version="3.5.1",m.b("version",m.version),m.options={deferUpdates:!1,useOnlyNativeEvents:!1,foreachHidesDestroyed:!1},m.a=function(){function p(Y,$){for(var X in Y)R.call(Y,X)&&$(X,Y[X])}function x(Y,$){if($)for(var X in $)R.call($,X)&&(Y[X]=$[X]);return Y}function T(Y,$){return Y.__proto__=$,Y}function w(Y,$,X,he){var ge=Y[$].match(W)||[];m.a.D(X.match(W),function(fe){m.a.Na(ge,fe,he)}),Y[$]=ge.join(" ")}var R=Object.prototype.hasOwnProperty,O={__proto__:[]}instanceof Array,k=typeof Symbol=="function",Q={},z={};Q[i&&/Firefox\/2/i.test(i.userAgent)?"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"],Q.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" "),p(Q,function(Y,$){if($.length)for(var X=0,he=$.length;X<he;X++)z[$[X]]=Y});var F={propertychange:!0},H=n&&function(){for(var Y=3,$=n.createElement("div"),X=$.getElementsByTagName("i");$.innerHTML="<!--[if gt IE "+ ++Y+"]><i></i><![endif]-->",X[0];);return 4<Y?Y:e}(),W=/\S+/g,Z;return{Jc:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],D:function(Y,$,X){for(var he=0,ge=Y.length;he<ge;he++)$.call(X,Y[he],he,Y)},A:typeof Array.prototype.indexOf=="function"?function(Y,$){return Array.prototype.indexOf.call(Y,$)}:function(Y,$){for(var X=0,he=Y.length;X<he;X++)if(Y[X]===$)return X;return-1},Lb:function(Y,$,X){for(var he=0,ge=Y.length;he<ge;he++)if($.call(X,Y[he],he,Y))return Y[he];return e},Pa:function(Y,$){var X=m.a.A(Y,$);0<X?Y.splice(X,1):X===0&&Y.shift()},wc:function(Y){var $=[];return Y&&m.a.D(Y,function(X){0>m.a.A($,X)&&$.push(X)}),$},Mb:function(Y,$,X){var he=[];if(Y)for(var ge=0,fe=Y.length;ge<fe;ge++)he.push($.call(X,Y[ge],ge));return he},jb:function(Y,$,X){var he=[];if(Y)for(var ge=0,fe=Y.length;ge<fe;ge++)$.call(X,Y[ge],ge)&&he.push(Y[ge]);return he},Nb:function(Y,$){if($ instanceof Array)Y.push.apply(Y,$);else for(var X=0,he=$.length;X<he;X++)Y.push($[X]);return Y},Na:function(Y,$,X){var he=m.a.A(m.a.bc(Y),$);0>he?X&&Y.push($):X||Y.splice(he,1)},Ba:O,extend:x,setPrototypeOf:T,Ab:O?T:x,P:p,Ga:function(Y,$,X){if(!Y)return Y;var he={},ge;for(ge in Y)R.call(Y,ge)&&(he[ge]=$.call(X,Y[ge],ge,Y));return he},Tb:function(Y){for(;Y.firstChild;)m.removeNode(Y.firstChild)},Yb:function(Y){Y=m.a.la(Y);for(var $=(Y[0]&&Y[0].ownerDocument||n).createElement("div"),X=0,he=Y.length;X<he;X++)$.appendChild(m.oa(Y[X]));return $},Ca:function(Y,$){for(var X=0,he=Y.length,ge=[];X<he;X++){var fe=Y[X].cloneNode(!0);ge.push($?m.oa(fe):fe)}return ge},va:function(Y,$){if(m.a.Tb(Y),$)for(var X=0,he=$.length;X<he;X++)Y.appendChild($[X])},Xc:function(Y,$){var X=Y.nodeType?[Y]:Y;if(0<X.length){for(var he=X[0],ge=he.parentNode,fe=0,ye=$.length;fe<ye;fe++)ge.insertBefore($[fe],he);for(fe=0,ye=X.length;fe<ye;fe++)m.removeNode(X[fe])}},Ua:function(Y,$){if(Y.length){for($=$.nodeType===8&&$.parentNode||$;Y.length&&Y[0].parentNode!==$;)Y.splice(0,1);for(;1<Y.length&&Y[Y.length-1].parentNode!==$;)Y.length--;if(1<Y.length){var X=Y[0],he=Y[Y.length-1];for(Y.length=0;X!==he;)Y.push(X),X=X.nextSibling;Y.push(he)}}return Y},Zc:function(Y,$){7>H?Y.setAttribute("selected",$):Y.selected=$},Db:function(Y){return Y===null||Y===e?"":Y.trim?Y.trim():Y.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},Ud:function(Y,$){return Y=Y||"",$.length>Y.length?!1:Y.substring(0,$.length)===$},vd:function(Y,$){if(Y===$)return!0;if(Y.nodeType===11)return!1;if($.contains)return $.contains(Y.nodeType!==1?Y.parentNode:Y);if($.compareDocumentPosition)return($.compareDocumentPosition(Y)&16)==16;for(;Y&&Y!=$;)Y=Y.parentNode;return!!Y},Sb:function(Y){return m.a.vd(Y,Y.ownerDocument.documentElement)},kd:function(Y){return!!m.a.Lb(Y,m.a.Sb)},R:function(Y){return Y&&Y.tagName&&Y.tagName.toLowerCase()},Ac:function(Y){return m.onError?function(){try{return Y.apply(this,arguments)}catch($){throw m.onError&&m.onError($),$}}:Y},setTimeout:function(Y,$){return setTimeout(m.a.Ac(Y),$)},Gc:function(Y){setTimeout(function(){throw m.onError&&m.onError(Y),Y},0)},B:function(Y,$,X){var he=m.a.Ac(X);if(X=F[$],m.options.useOnlyNativeEvents||X||!o)if(X||typeof Y.addEventListener!="function")if(typeof Y.attachEvent<"u"){var ge=function(ye){he.call(Y,ye)},fe="on"+$;Y.attachEvent(fe,ge),m.a.K.za(Y,function(){Y.detachEvent(fe,ge)})}else throw Error("Browser doesn't support addEventListener or attachEvent");else Y.addEventListener($,he,!1);else Z||(Z=typeof o(Y).on=="function"?"on":"bind"),o(Y)[Z]($,he)},Fb:function(Y,$){if(!Y||!Y.nodeType)throw Error("element must be a DOM node when calling triggerEvent");var X;if(m.a.R(Y)==="input"&&Y.type&&$.toLowerCase()=="click"?(X=Y.type,X=X=="checkbox"||X=="radio"):X=!1,m.options.useOnlyNativeEvents||!o||X)if(typeof n.createEvent=="function")if(typeof Y.dispatchEvent=="function")X=n.createEvent(z[$]||"HTMLEvents"),X.initEvent($,!0,!0,t,0,0,0,0,0,!1,!1,!1,!1,0,Y),Y.dispatchEvent(X);else throw Error("The supplied element doesn't support dispatchEvent");else if(X&&Y.click)Y.click();else if(typeof Y.fireEvent<"u")Y.fireEvent("on"+$);else throw Error("Browser doesn't support triggering events");else o(Y).trigger($)},f:function(Y){return m.O(Y)?Y():Y},bc:function(Y){return m.O(Y)?Y.v():Y},Eb:function(Y,$,X){var he;$&&(typeof Y.classList=="object"?(he=Y.classList[X?"add":"remove"],m.a.D($.match(W),function(ge){he.call(Y.classList,ge)})):typeof Y.className.baseVal=="string"?w(Y.className,"baseVal",$,X):w(Y,"className",$,X))},Bb:function(Y,$){var X=m.a.f($);(X===null||X===e)&&(X="");var he=m.h.firstChild(Y);!he||he.nodeType!=3||m.h.nextSibling(he)?m.h.va(Y,[Y.ownerDocument.createTextNode(X)]):he.data=X,m.a.Ad(Y)},Yc:function(Y,$){if(Y.name=$,7>=H)try{var X=Y.name.replace(/[&<>'"]/g,function(he){return"&#"+he.charCodeAt(0)+";"});Y.mergeAttributes(n.createElement("<input name='"+X+"'/>"),!1)}catch{}},Ad:function(Y){9<=H&&(Y=Y.nodeType==1?Y:Y.parentNode,Y.style&&(Y.style.zoom=Y.style.zoom))},wd:function(Y){if(H){var $=Y.style.width;Y.style.width=0,Y.style.width=$}},Pd:function(Y,$){Y=m.a.f(Y),$=m.a.f($);for(var X=[],he=Y;he<=$;he++)X.push(he);return X},la:function(Y){for(var $=[],X=0,he=Y.length;X<he;X++)$.push(Y[X]);return $},Da:function(Y){return k?Symbol(Y):Y},Zd:H===6,$d:H===7,W:H,Lc:function(Y,$){for(var X=m.a.la(Y.getElementsByTagName("input")).concat(m.a.la(Y.getElementsByTagName("textarea"))),he=typeof $=="string"?function(ye){return ye.name===$}:function(ye){return $.test(ye.name)},ge=[],fe=X.length-1;0<=fe;fe--)he(X[fe])&&ge.push(X[fe]);return ge},Nd:function(Y){return typeof Y=="string"&&(Y=m.a.Db(Y))?r&&r.parse?r.parse(Y):new Function("return "+Y)():null},hc:function(Y,$,X){if(!r||!r.stringify)throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");return r.stringify(m.a.f(Y),$,X)},Od:function(Y,$,X){X=X||{};var he=X.params||{},ge=X.includeFields||this.Jc,fe=Y;if(typeof Y=="object"&&m.a.R(Y)==="form")for(var fe=Y.action,ye=ge.length-1;0<=ye;ye--)for(var xe=m.a.Lc(Y,ge[ye]),ve=xe.length-1;0<=ve;ve--)he[xe[ve].name]=xe[ve].value;$=m.a.f($);var Te=n.createElement("form");Te.style.display="none",Te.action=fe,Te.method="post";for(var ke in $)Y=n.createElement("input"),Y.type="hidden",Y.name=ke,Y.value=m.a.hc(m.a.f($[ke])),Te.appendChild(Y);p(he,function(Ge,Ke){var tt=n.createElement("input");tt.type="hidden",tt.name=Ge,tt.value=Ke,Te.appendChild(tt)}),n.body.appendChild(Te),X.submitter?X.submitter(Te):Te.submit(),setTimeout(function(){Te.parentNode.removeChild(Te)},0)}}}(),m.b("utils",m.a),m.b("utils.arrayForEach",m.a.D),m.b("utils.arrayFirst",m.a.Lb),m.b("utils.arrayFilter",m.a.jb),m.b("utils.arrayGetDistinctValues",m.a.wc),m.b("utils.arrayIndexOf",m.a.A),m.b("utils.arrayMap",m.a.Mb),m.b("utils.arrayPushAll",m.a.Nb),m.b("utils.arrayRemoveItem",m.a.Pa),m.b("utils.cloneNodes",m.a.Ca),m.b("utils.createSymbolOrString",m.a.Da),m.b("utils.extend",m.a.extend),m.b("utils.fieldsIncludedWithJsonPost",m.a.Jc),m.b("utils.getFormFields",m.a.Lc),m.b("utils.objectMap",m.a.Ga),m.b("utils.peekObservable",m.a.bc),m.b("utils.postJson",m.a.Od),m.b("utils.parseJson",m.a.Nd),m.b("utils.registerEventHandler",m.a.B),m.b("utils.stringifyJson",m.a.hc),m.b("utils.range",m.a.Pd),m.b("utils.toggleDomNodeCssClass",m.a.Eb),m.b("utils.triggerEvent",m.a.Fb),m.b("utils.unwrapObservable",m.a.f),m.b("utils.objectForEach",m.a.P),m.b("utils.addOrRemoveItem",m.a.Na),m.b("utils.setTextContent",m.a.Bb),m.b("unwrap",m.a.f),Function.prototype.bind||(Function.prototype.bind=function(p){var x=this;if(arguments.length===1)return function(){return x.apply(p,arguments)};var T=Array.prototype.slice.call(arguments,1);return function(){var w=T.slice(0);return w.push.apply(w,arguments),x.apply(p,w)}}),m.a.g=new function(){var p=0,x="__ko__"+new Date().getTime(),T={},w,R;return m.a.W?(w=function(O,k){var Q=O[x];if(!Q||Q==="null"||!T[Q]){if(!k)return e;Q=O[x]="ko"+p++,T[Q]={}}return T[Q]},R=function(O){var k=O[x];return k?(delete T[k],O[x]=null,!0):!1}):(w=function(O,k){var Q=O[x];return!Q&&k&&(Q=O[x]={}),Q},R=function(O){return O[x]?(delete O[x],!0):!1}),{get:function(O,k){var Q=w(O,!1);return Q&&Q[k]},set:function(O,k,Q){(O=w(O,Q!==e))&&(O[k]=Q)},Ub:function(O,k,Q){return O=w(O,!0),O[k]||(O[k]=Q)},clear:R,Z:function(){return p+++x}}},m.b("utils.domData",m.a.g),m.b("utils.domData.clear",m.a.g.clear),m.a.K=new function(){function p(k,Q){var z=m.a.g.get(k,w);return z===e&&Q&&(z=[],m.a.g.set(k,w,z)),z}function x(k){var Q=p(k,!1);if(Q)for(var Q=Q.slice(0),z=0;z<Q.length;z++)Q[z](k);m.a.g.clear(k),m.a.K.cleanExternalData(k),O[k.nodeType]&&T(k.childNodes,!0)}function T(k,Q){for(var z=[],F,H=0;H<k.length;H++)if((!Q||k[H].nodeType===8)&&(x(z[z.length]=F=k[H]),k[H]!==F))for(;H--&&m.a.A(z,k[H])==-1;);}var w=m.a.g.Z(),R={1:!0,8:!0,9:!0},O={1:!0,9:!0};return{za:function(k,Q){if(typeof Q!="function")throw Error("Callback must be a function");p(k,!0).push(Q)},yb:function(k,Q){var z=p(k,!1);z&&(m.a.Pa(z,Q),z.length==0&&m.a.g.set(k,w,e))},oa:function(k){return m.u.G(function(){R[k.nodeType]&&(x(k),O[k.nodeType]&&T(k.getElementsByTagName("*")))}),k},removeNode:function(k){m.oa(k),k.parentNode&&k.parentNode.removeChild(k)},cleanExternalData:function(k){o&&typeof o.cleanData=="function"&&o.cleanData([k])}}},m.oa=m.a.K.oa,m.removeNode=m.a.K.removeNode,m.b("cleanNode",m.oa),m.b("removeNode",m.removeNode),m.b("utils.domNodeDisposal",m.a.K),m.b("utils.domNodeDisposal.addDisposeCallback",m.a.K.za),m.b("utils.domNodeDisposal.removeDisposeCallback",m.a.K.yb),function(){var p=[0,"",""],x=[1,"<table>","</table>"],T=[3,"<table><tbody><tr>","</tr></tbody></table>"],w=[1,"<select multiple='multiple'>","</select>"],R={thead:x,tbody:x,tfoot:x,tr:[2,"<table><tbody>","</tbody></table>"],td:T,th:T,option:w,optgroup:w},O=8>=m.a.W;m.a.ua=function(k,Q){var z;if(o){if(o.parseHTML)z=o.parseHTML(k,Q)||[];else if((z=o.clean([k],Q))&&z[0]){for(var F=z[0];F.parentNode&&F.parentNode.nodeType!==11;)F=F.parentNode;F.parentNode&&F.parentNode.removeChild(F)}}else{(z=Q)||(z=n);var F=z.parentWindow||z.defaultView||t,H=m.a.Db(k).toLowerCase(),W=z.createElement("div"),Z;for(Z=(H=H.match(/^(?:\x3c!--.*?--\x3e\s*?)*?<([a-z]+)[\s>]/))&&R[H[1]]||p,H=Z[0],Z="ignored<div>"+Z[1]+k+Z[2]+"</div>",typeof F.innerShiv=="function"?W.appendChild(F.innerShiv(Z)):(O&&z.body.appendChild(W),W.innerHTML=Z,O&&W.parentNode.removeChild(W));H--;)W=W.lastChild;z=m.a.la(W.lastChild.childNodes)}return z},m.a.Md=function(k,Q){var z=m.a.ua(k,Q);return z.length&&z[0].parentElement||m.a.Yb(z)},m.a.fc=function(k,Q){if(m.a.Tb(k),Q=m.a.f(Q),Q!==null&&Q!==e)if(typeof Q!="string"&&(Q=Q.toString()),o)o(k).html(Q);else for(var z=m.a.ua(Q,k.ownerDocument),F=0;F<z.length;F++)k.appendChild(z[F])}}(),m.b("utils.parseHtmlFragment",m.a.ua),m.b("utils.setHtml",m.a.fc),m.aa=function(){function p(T,w){if(T){if(T.nodeType==8){var R=m.aa.Uc(T.nodeValue);R!=null&&w.push({ud:T,Kd:R})}else if(T.nodeType==1)for(var R=0,O=T.childNodes,k=O.length;R<k;R++)p(O[R],w)}}var x={};return{Xb:function(T){if(typeof T!="function")throw Error("You can only pass a function to ko.memoization.memoize()");var w=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);return x[w]=T,"<!--[ko_memo:"+w+"]-->"},bd:function(T,w){var R=x[T];if(R===e)throw Error("Couldn't find any memo with ID "+T+". Perhaps it's already been unmemoized.");try{return R.apply(null,w||[]),!0}finally{delete x[T]}},cd:function(T,w){var R=[];p(T,R);for(var O=0,k=R.length;O<k;O++){var Q=R[O].ud,z=[Q];w&&m.a.Nb(z,w),m.aa.bd(R[O].Kd,z),Q.nodeValue="",Q.parentNode&&Q.parentNode.removeChild(Q)}},Uc:function(T){return(T=T.match(/^\[ko_memo\:(.*?)\]$/))?T[1]:null}}}(),m.b("memoization",m.aa),m.b("memoization.memoize",m.aa.Xb),m.b("memoization.unmemoize",m.aa.bd),m.b("memoization.parseMemoText",m.aa.Uc),m.b("memoization.unmemoizeDomNodeAndDescendants",m.aa.cd),m.na=function(){function p(){if(R){for(var Q=R,z=0,F;k<R;)if(F=w[k++]){if(k>Q){if(5e3<=++z){k=R,m.a.Gc(Error("'Too much recursion' after processing "+z+" task groups."));break}Q=R}try{F()}catch(H){m.a.Gc(H)}}}}function x(){p(),k=R=w.length=0}var T,w=[],R=0,O=1,k=0;return t.MutationObserver?T=function(Q){var z=n.createElement("div");return new MutationObserver(Q).observe(z,{attributes:!0}),function(){z.classList.toggle("foo")}}(x):T=n&&"onreadystatechange"in n.createElement("script")?function(Q){var z=n.createElement("script");z.onreadystatechange=function(){z.onreadystatechange=null,n.documentElement.removeChild(z),z=null,Q()},n.documentElement.appendChild(z)}:function(Q){setTimeout(Q,0)},{scheduler:T,zb:function(Q){return R||m.na.scheduler(x),w[R++]=Q,O++},cancel:function(Q){Q=Q-(O-R),Q>=k&&Q<R&&(w[Q]=null)},resetForTesting:function(){var Q=R-k;return k=R=w.length=0,Q},Sd:p}}(),m.b("tasks",m.na),m.b("tasks.schedule",m.na.zb),m.b("tasks.runEarly",m.na.Sd),m.Ta={throttle:function(p,x){p.throttleEvaluation=x;var T=null;return m.$({read:p,write:function(w){clearTimeout(T),T=m.a.setTimeout(function(){p(w)},x)}})},rateLimit:function(p,x){var T,w,R;typeof x=="number"?T=x:(T=x.timeout,w=x.method),p.Hb=!1,R=typeof w=="function"?w:w=="notifyWhenChangesStop"?f:u,p.ub(function(O){return R(O,T,x)})},deferred:function(p,x){if(x!==!0)throw Error("The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.");p.Hb||(p.Hb=!0,p.ub(function(T){var w,R=!1;return function(){if(!R){m.na.cancel(w),w=m.na.zb(T);try{R=!0,p.notifySubscribers(e,"dirty")}finally{R=!1}}}}))},notify:function(p,x){p.equalityComparer=x=="always"?null:c}};var _={undefined:1,boolean:1,number:1,string:1};m.b("extenders",m.Ta),m.ic=function(p,x,T){this.da=p,this.lc=x,this.mc=T,this.Ib=!1,this.fb=this.Jb=null,m.L(this,"dispose",this.s),m.L(this,"disposeWhenNodeIsRemoved",this.l)},m.ic.prototype.s=function(){this.Ib||(this.fb&&m.a.K.yb(this.Jb,this.fb),this.Ib=!0,this.mc(),this.da=this.lc=this.mc=this.Jb=this.fb=null)},m.ic.prototype.l=function(p){this.Jb=p,m.a.K.za(p,this.fb=this.s.bind(this))},m.T=function(){m.a.Ab(this,y),y.qb(this)};var y={qb:function(p){p.U={change:[]},p.sc=1},subscribe:function(p,x,T){var w=this;T=T||"change";var R=new m.ic(w,x?p.bind(x):p,function(){m.a.Pa(w.U[T],R),w.hb&&w.hb(T)});return w.Qa&&w.Qa(T),w.U[T]||(w.U[T]=[]),w.U[T].push(R),R},notifySubscribers:function(p,x){if(x=x||"change",x==="change"&&this.Gb(),this.Wa(x)){var T=x==="change"&&this.ed||this.U[x].slice(0);try{m.u.xc();for(var w=0,R;R=T[w];++w)R.Ib||R.lc(p)}finally{m.u.end()}}},ob:function(){return this.sc},Dd:function(p){return this.ob()!==p},Gb:function(){++this.sc},ub:function(p){var x=this,T=m.O(x),w,R,O,k,Q;x.gb||(x.gb=x.notifySubscribers,x.notifySubscribers=h);var z=p(function(){x.Ja=!1,T&&k===x&&(k=x.nc?x.nc():x());var F=R||Q&&x.sb(O,k);Q=R=w=!1,F&&x.gb(O=k)});x.qc=function(F,H){H&&x.Ja||(Q=!H),x.ed=x.U.change.slice(0),x.Ja=w=!0,k=F,z()},x.pc=function(F){w||(O=F,x.gb(F,"beforeChange"))},x.rc=function(){Q=!0},x.gd=function(){x.sb(O,x.v(!0))&&(R=!0)}},Wa:function(p){return this.U[p]&&this.U[p].length},Bd:function(p){if(p)return this.U[p]&&this.U[p].length||0;var x=0;return m.a.P(this.U,function(T,w){T!=="dirty"&&(x+=w.length)}),x},sb:function(p,x){return!this.equalityComparer||!this.equalityComparer(p,x)},toString:function(){return"[object Object]"},extend:function(p){var x=this;return p&&m.a.P(p,function(T,w){var R=m.Ta[T];typeof R=="function"&&(x=R(x,w)||x)}),x}};m.L(y,"init",y.qb),m.L(y,"subscribe",y.subscribe),m.L(y,"extend",y.extend),m.L(y,"getSubscriptionsCount",y.Bd),m.a.Ba&&m.a.setPrototypeOf(y,Function.prototype),m.T.fn=y,m.Qc=function(p){return p!=null&&typeof p.subscribe=="function"&&typeof p.notifySubscribers=="function"},m.b("subscribable",m.T),m.b("isSubscribable",m.Qc),m.S=m.u=function(){function p(O){T.push(w),w=O}function x(){w=T.pop()}var T=[],w,R=0;return{xc:p,end:x,cc:function(O){if(w){if(!m.Qc(O))throw Error("Only subscribable things can act as dependencies");w.od.call(w.pd,O,O.fd||(O.fd=++R))}},G:function(O,k,Q){try{return p(),O.apply(k,Q||[])}finally{x()}},qa:function(){if(w)return w.o.qa()},Va:function(){if(w)return w.o.Va()},Ya:function(){if(w)return w.Ya},o:function(){if(w)return w.o}}}(),m.b("computedContext",m.S),m.b("computedContext.getDependenciesCount",m.S.qa),m.b("computedContext.getDependencies",m.S.Va),m.b("computedContext.isInitial",m.S.Ya),m.b("computedContext.registerDependency",m.S.cc),m.b("ignoreDependencies",m.Yd=m.u.G);var C=m.a.Da("_latestValue");m.ta=function(p){function x(){return 0<arguments.length?(x.sb(x[C],arguments[0])&&(x.ya(),x[C]=arguments[0],x.xa()),this):(m.u.cc(x),x[C])}return x[C]=p,m.a.Ba||m.a.extend(x,m.T.fn),m.T.fn.qb(x),m.a.Ab(x,E),m.options.deferUpdates&&m.Ta.deferred(x,!0),x};var E={equalityComparer:c,v:function(){return this[C]},xa:function(){this.notifySubscribers(this[C],"spectate"),this.notifySubscribers(this[C])},ya:function(){this.notifySubscribers(this[C],"beforeChange")}};m.a.Ba&&m.a.setPrototypeOf(E,m.T.fn);var I=m.ta.Ma="__ko_proto__";E[I]=m.ta,m.O=function(p){if((p=typeof p=="function"&&p[I])&&p!==E[I]&&p!==m.o.fn[I])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");return!!p},m.Za=function(p){return typeof p=="function"&&(p[I]===E[I]||p[I]===m.o.fn[I]&&p.Nc)},m.b("observable",m.ta),m.b("isObservable",m.O),m.b("isWriteableObservable",m.Za),m.b("isWritableObservable",m.Za),m.b("observable.fn",E),m.L(E,"peek",E.v),m.L(E,"valueHasMutated",E.xa),m.L(E,"valueWillMutate",E.ya),m.Ha=function(p){if(p=p||[],typeof p!="object"||!("length"in p))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");return p=m.ta(p),m.a.Ab(p,m.Ha.fn),p.extend({trackArrayChanges:!0})},m.Ha.fn={remove:function(p){for(var x=this.v(),T=[],w=typeof p!="function"||m.O(p)?function(k){return k===p}:p,R=0;R<x.length;R++){var O=x[R];if(w(O)){if(T.length===0&&this.ya(),x[R]!==O)throw Error("Array modified during remove; cannot remove item");T.push(O),x.splice(R,1),R--}}return T.length&&this.xa(),T},removeAll:function(p){if(p===e){var x=this.v(),T=x.slice(0);return this.ya(),x.splice(0,x.length),this.xa(),T}return p?this.remove(function(w){return 0<=m.a.A(p,w)}):[]},destroy:function(p){var x=this.v(),T=typeof p!="function"||m.O(p)?function(O){return O===p}:p;this.ya();for(var w=x.length-1;0<=w;w--){var R=x[w];T(R)&&(R._destroy=!0)}this.xa()},destroyAll:function(p){return p===e?this.destroy(function(){return!0}):p?this.destroy(function(x){return 0<=m.a.A(p,x)}):[]},indexOf:function(p){var x=this();return m.a.A(x,p)},replace:function(p,x){var T=this.indexOf(p);0<=T&&(this.ya(),this.v()[T]=x,this.xa())},sorted:function(p){var x=this().slice(0);return p?x.sort(p):x.sort()},reversed:function(){return this().slice(0).reverse()}},m.a.Ba&&m.a.setPrototypeOf(m.Ha.fn,m.ta.fn),m.a.D("pop push reverse shift sort splice unshift".split(" "),function(p){m.Ha.fn[p]=function(){var x=this.v();this.ya(),this.zc(x,p,arguments);var T=x[p].apply(x,arguments);return this.xa(),T===x?this:T}}),m.a.D(["slice"],function(p){m.Ha.fn[p]=function(){var x=this();return x[p].apply(x,arguments)}}),m.Pc=function(p){return m.O(p)&&typeof p.remove=="function"&&typeof p.push=="function"},m.b("observableArray",m.Ha),m.b("isObservableArray",m.Pc),m.Ta.trackArrayChanges=function(p,x){function T(){function W(){if(Q){var Z=[].concat(p.v()||[]),Y;p.Wa("arrayChange")&&((!R||1<Q)&&(R=m.a.Pb(z,Z,p.Ob)),Y=R),z=Z,R=null,Q=0,Y&&Y.length&&p.notifySubscribers(Y,"arrayChange")}}w?W():(w=!0,k=p.subscribe(function(){++Q},null,"spectate"),z=[].concat(p.v()||[]),R=null,O=p.subscribe(W))}if(p.Ob={},x&&typeof x=="object"&&m.a.extend(p.Ob,x),p.Ob.sparse=!0,!p.zc){var w=!1,R=null,O,k,Q=0,z,F=p.Qa,H=p.hb;p.Qa=function(W){F&&F.call(p,W),W==="arrayChange"&&T()},p.hb=function(W){H&&H.call(p,W),W!=="arrayChange"||p.Wa("arrayChange")||(O&&O.s(),k&&k.s(),k=O=null,w=!1,z=e)},p.zc=function(W,Z,Y){function $(Te,ke,Ge){return X[X.length]={status:Te,value:ke,index:Ge}}if(w&&!Q){var X=[],he=W.length,ge=Y.length,fe=0;switch(Z){case"push":fe=he;case"unshift":for(Z=0;Z<ge;Z++)$("added",Y[Z],fe+Z);break;case"pop":fe=he-1;case"shift":he&&$("deleted",W[fe],fe);break;case"splice":Z=Math.min(Math.max(0,0>Y[0]?he+Y[0]:Y[0]),he);for(var he=ge===1?he:Math.min(Z+(Y[1]||0),he),ge=Z+ge-2,fe=Math.max(he,ge),ye=[],xe=[],ve=2;Z<fe;++Z,++ve)Z<he&&xe.push($("deleted",W[Z],Z)),Z<ge&&ye.push($("added",Y[ve],Z));m.a.Kc(xe,ye);break;default:return}R=X}}}};var b=m.a.Da("_state");m.o=m.$=function(p,x,T){function w(){if(0<arguments.length){if(typeof R=="function")R.apply(O.nb,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return this}return O.ra||m.u.cc(w),(O.ka||O.J&&w.Xa())&&w.ha(),O.X}if(typeof p=="object"?T=p:(T=T||{},p&&(T.read=p)),typeof T.read!="function")throw Error("Pass a function that returns the value of the ko.computed");var R=T.write,O={X:e,sa:!0,ka:!0,rb:!1,jc:!1,ra:!1,wb:!1,J:!1,Wc:T.read,nb:x||T.owner,l:T.disposeWhenNodeIsRemoved||T.l||null,Sa:T.disposeWhen||T.Sa,Rb:null,I:{},V:0,Ic:null};return w[b]=O,w.Nc=typeof R=="function",m.a.Ba||m.a.extend(w,m.T.fn),m.T.fn.qb(w),m.a.Ab(w,S),T.pure?(O.wb=!0,O.J=!0,m.a.extend(w,B)):T.deferEvaluation&&m.a.extend(w,v),m.options.deferUpdates&&m.Ta.deferred(w,!0),O.l&&(O.jc=!0,O.l.nodeType||(O.l=null)),O.J||T.deferEvaluation||w.ha(),O.l&&w.ja()&&m.a.K.za(O.l,O.Rb=function(){w.s()}),w};var S={equalityComparer:c,qa:function(){return this[b].V},Va:function(){var p=[];return m.a.P(this[b].I,function(x,T){p[T.Ka]=T.da}),p},Vb:function(p){if(!this[b].V)return!1;var x=this.Va();return m.a.A(x,p)!==-1?!0:!!m.a.Lb(x,function(T){return T.Vb&&T.Vb(p)})},uc:function(p,x,T){if(this[b].wb&&x===this)throw Error("A 'pure' computed must not be called recursively");this[b].I[p]=T,T.Ka=this[b].V++,T.La=x.ob()},Xa:function(){var p,x,T=this[b].I;for(p in T)if(Object.prototype.hasOwnProperty.call(T,p)&&(x=T[p],this.Ia&&x.da.Ja||x.da.Dd(x.La)))return!0},Jd:function(){this.Ia&&!this[b].rb&&this.Ia(!1)},ja:function(){var p=this[b];return p.ka||0<p.V},Rd:function(){this.Ja?this[b].ka&&(this[b].sa=!0):this.Hc()},$c:function(p){if(p.Hb){var x=p.subscribe(this.Jd,this,"dirty"),T=p.subscribe(this.Rd,this);return{da:p,s:function(){x.s(),T.s()}}}return p.subscribe(this.Hc,this)},Hc:function(){var p=this,x=p.throttleEvaluation;x&&0<=x?(clearTimeout(this[b].Ic),this[b].Ic=m.a.setTimeout(function(){p.ha(!0)},x)):p.Ia?p.Ia(!0):p.ha(!0)},ha:function(p){var x=this[b],T=x.Sa,w=!1;if(!x.rb&&!x.ra){if(x.l&&!m.a.Sb(x.l)||T&&T()){if(!x.jc){this.s();return}}else x.jc=!1;x.rb=!0;try{w=this.zd(p)}finally{x.rb=!1}return w}},zd:function(p){var x=this[b],w=!1,T=x.wb?e:!x.V,w={qd:this,mb:x.I,Qb:x.V};m.u.xc({pd:w,od:g,o:this,Ya:T}),x.I={},x.V=0;var R=this.yd(x,w);return x.V?w=this.sb(x.X,R):(this.s(),w=!0),w&&(x.J?this.Gb():this.notifySubscribers(x.X,"beforeChange"),x.X=R,this.notifySubscribers(x.X,"spectate"),!x.J&&p&&this.notifySubscribers(x.X),this.rc&&this.rc()),T&&this.notifySubscribers(x.X,"awake"),w},yd:function(p,x){try{var T=p.Wc;return p.nb?T.call(p.nb):T()}finally{m.u.end(),x.Qb&&!p.J&&m.a.P(x.mb,A),p.sa=p.ka=!1}},v:function(p){var x=this[b];return(x.ka&&(p||!x.V)||x.J&&this.Xa())&&this.ha(),x.X},ub:function(p){m.T.fn.ub.call(this,p),this.nc=function(){return this[b].J||(this[b].sa?this.ha():this[b].ka=!1),this[b].X},this.Ia=function(x){this.pc(this[b].X),this[b].ka=!0,x&&(this[b].sa=!0),this.qc(this,!x)}},s:function(){var p=this[b];!p.J&&p.I&&m.a.P(p.I,function(x,T){T.s&&T.s()}),p.l&&p.Rb&&m.a.K.yb(p.l,p.Rb),p.I=e,p.V=0,p.ra=!0,p.sa=!1,p.ka=!1,p.J=!1,p.l=e,p.Sa=e,p.Wc=e,this.Nc||(p.nb=e)}},B={Qa:function(p){var x=this,T=x[b];if(!T.ra&&T.J&&p=="change"){if(T.J=!1,T.sa||x.Xa())T.I=null,T.V=0,x.ha()&&x.Gb();else{var w=[];m.a.P(T.I,function(R,O){w[O.Ka]=R}),m.a.D(w,function(R,O){var k=T.I[R],Q=x.$c(k.da);Q.Ka=O,Q.La=k.La,T.I[R]=Q}),x.Xa()&&x.ha()&&x.Gb()}T.ra||x.notifySubscribers(T.X,"awake")}},hb:function(p){var x=this[b];x.ra||p!="change"||this.Wa("change")||(m.a.P(x.I,function(T,w){w.s&&(x.I[T]={da:w.da,Ka:w.Ka,La:w.La},w.s())}),x.J=!0,this.notifySubscribers(e,"asleep"))},ob:function(){var p=this[b];return p.J&&(p.sa||this.Xa())&&this.ha(),m.T.fn.ob.call(this)}},v={Qa:function(p){p!="change"&&p!="beforeChange"||this.v()}};m.a.Ba&&m.a.setPrototypeOf(S,m.T.fn);var P=m.ta.Ma;S[P]=m.o,m.Oc=function(p){return typeof p=="function"&&p[P]===S[P]},m.Fd=function(p){return m.Oc(p)&&p[b]&&p[b].wb},m.b("computed",m.o),m.b("dependentObservable",m.o),m.b("isComputed",m.Oc),m.b("isPureComputed",m.Fd),m.b("computed.fn",S),m.L(S,"peek",S.v),m.L(S,"dispose",S.s),m.L(S,"isActive",S.ja),m.L(S,"getDependenciesCount",S.qa),m.L(S,"getDependencies",S.Va),m.xb=function(p,x){return typeof p=="function"?m.o(p,x,{pure:!0}):(p=m.a.extend({},p),p.pure=!0,m.o(p,x))},m.b("pureComputed",m.xb),function(){function p(w,R,O){if(O=O||new T,w=R(w),typeof w!="object"||w===null||w===e||w instanceof RegExp||w instanceof Date||w instanceof String||w instanceof Number||w instanceof Boolean)return w;var k=w instanceof Array?[]:{};return O.save(w,k),x(w,function(Q){var z=R(w[Q]);switch(typeof z){case"boolean":case"number":case"string":case"function":k[Q]=z;break;case"object":case"undefined":var F=O.get(z);k[Q]=F!==e?F:p(z,R,O)}}),k}function x(w,R){if(w instanceof Array){for(var O=0;O<w.length;O++)R(O);typeof w.toJSON=="function"&&R("toJSON")}else for(O in w)R(O)}function T(){this.keys=[],this.values=[]}m.ad=function(w){if(arguments.length==0)throw Error("When calling ko.toJS, pass the object you want to convert.");return p(w,function(R){for(var O=0;m.O(R)&&10>O;O++)R=R();return R})},m.toJSON=function(w,R,O){return w=m.ad(w),m.a.hc(w,R,O)},T.prototype={constructor:T,save:function(w,R){var O=m.a.A(this.keys,w);0<=O?this.values[O]=R:(this.keys.push(w),this.values.push(R))},get:function(w){return w=m.a.A(this.keys,w),0<=w?this.values[w]:e}}}(),m.b("toJS",m.ad),m.b("toJSON",m.toJSON),m.Wd=function(p,x,T){function w(R){var O=m.xb(p,T).extend({ma:"always"}),k=O.subscribe(function(Q){Q&&(k.s(),R(Q))});return O.notifySubscribers(O.v()),k}return typeof Promise!="function"||x?w(x.bind(T)):new Promise(w)},m.b("when",m.Wd),function(){m.w={M:function(p){switch(m.a.R(p)){case"option":return p.__ko__hasDomDataOptionValue__===!0?m.a.g.get(p,m.c.options.$b):7>=m.a.W?p.getAttributeNode("value")&&p.getAttributeNode("value").specified?p.value:p.text:p.value;case"select":return 0<=p.selectedIndex?m.w.M(p.options[p.selectedIndex]):e;default:return p.value}},cb:function(p,x,T){switch(m.a.R(p)){case"option":typeof x=="string"?(m.a.g.set(p,m.c.options.$b,e),"__ko__hasDomDataOptionValue__"in p&&delete p.__ko__hasDomDataOptionValue__,p.value=x):(m.a.g.set(p,m.c.options.$b,x),p.__ko__hasDomDataOptionValue__=!0,p.value=typeof x=="number"?x:"");break;case"select":(x===""||x===null)&&(x=e);for(var w=-1,R=0,O=p.options.length,k;R<O;++R)if(k=m.w.M(p.options[R]),k==x||k===""&&x===e){w=R;break}(T||0<=w||x===e&&1<p.size)&&(p.selectedIndex=w,m.a.W===6&&m.a.setTimeout(function(){p.selectedIndex=w},0));break;default:(x===null||x===e)&&(x=""),p.value=x}}}}(),m.b("selectExtensions",m.w),m.b("selectExtensions.readValue",m.w.M),m.b("selectExtensions.writeValue",m.w.cb),m.m=function(){function p(Q){Q=m.a.Db(Q),Q.charCodeAt(0)===123&&(Q=Q.slice(1,-1)),Q+=` +,`;var z=[],F=Q.match(w),H,W=[],Z=0;if(1<F.length){for(var Y=0,$;$=F[Y];++Y){var X=$.charCodeAt(0);if(X===44){if(0>=Z){z.push(H&&W.length?{key:H,value:W.join("")}:{unknown:H||W.join("")}),H=Z=0,W=[];continue}}else if(X===58){if(!Z&&!H&&W.length===1){H=W.pop();continue}}else{if(X===47&&1<$.length&&($.charCodeAt(1)===47||$.charCodeAt(1)===42))continue;X===47&&Y&&1<$.length?(X=F[Y-1].match(R))&&!O[X[0]]&&(Q=Q.substr(Q.indexOf($)+1),F=Q.match(w),Y=-1,$="/"):X===40||X===123||X===91?++Z:X===41||X===125||X===93?--Z:H||W.length||X!==34&&X!==39||($=$.slice(1,-1))}W.push($)}if(0<Z)throw Error("Unbalanced parentheses, braces, or brackets")}return z}var x=["true","false","null","undefined"],T=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,w=RegExp(`"(?:\\\\.|[^"])*"|'(?:\\\\.|[^'])*'|\`(?:\\\\.|[^\`])*\`|/\\*(?:[^*]|\\*+[^*/])*\\*+/|//.* +|/(?:\\\\.|[^/])+/w*|[^\\s:,/][^,"'\`{}()/:[\\]]*[^\\s,"'\`{}()/:[\\]]|[^\\s]`,"g"),R=/[\])"'A-Za-z0-9_$]+$/,O={in:1,return:1,typeof:1},k={};return{Ra:[],wa:k,ac:p,vb:function(Q,z){function F(X,he){var ge;if(!Y){var fe=m.getBindingHandler(X);if(fe&&fe.preprocess&&!(he=fe.preprocess(he,X,F)))return;(fe=k[X])&&(ge=he,0<=m.a.A(x,ge)?ge=!1:(fe=ge.match(T),ge=fe===null?!1:fe[1]?"Object("+fe[1]+")"+fe[2]:ge),fe=ge),fe&&W.push("'"+(typeof k[X]=="string"?k[X]:X)+"':function(_z){"+ge+"=_z}")}Z&&(he="function(){return "+he+" }"),H.push("'"+X+"':"+he)}z=z||{};var H=[],W=[],Z=z.valueAccessors,Y=z.bindingParams,$=typeof Q=="string"?p(Q):Q;return m.a.D($,function(X){F(X.key||X.unknown,X.value)}),W.length&&F("_ko_property_writers","{"+W.join(",")+" }"),H.join(",")},Id:function(Q,z){for(var F=0;F<Q.length;F++)if(Q[F].key==z)return!0;return!1},eb:function(Q,z,F,H,W){Q&&m.O(Q)?!m.Za(Q)||W&&Q.v()===H||Q(H):(Q=z.get("_ko_property_writers"))&&Q[F]&&Q[F](H)}}}(),m.b("expressionRewriting",m.m),m.b("expressionRewriting.bindingRewriteValidators",m.m.Ra),m.b("expressionRewriting.parseObjectLiteral",m.m.ac),m.b("expressionRewriting.preProcessBindings",m.m.vb),m.b("expressionRewriting._twoWayBindings",m.m.wa),m.b("jsonExpressionRewriting",m.m),m.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",m.m.vb),function(){function p(F){return F.nodeType==8&&O.test(R?F.text:F.nodeValue)}function x(F){return F.nodeType==8&&k.test(R?F.text:F.nodeValue)}function T(F,H){for(var W=F,Z=1,Y=[];W=W.nextSibling;){if(x(W)&&(m.a.g.set(W,z,!0),Z--,Z===0))return Y;Y.push(W),p(W)&&Z++}if(!H)throw Error("Cannot find closing comment tag to match: "+F.nodeValue);return null}function w(F,H){var W=T(F,H);return W?0<W.length?W[W.length-1].nextSibling:F.nextSibling:null}var R=n&&n.createComment("test").text==="<!--test-->",O=R?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,k=R?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,Q={ul:!0,ol:!0},z="__ko_matchedEndComment__";m.h={ea:{},childNodes:function(F){return p(F)?T(F):F.childNodes},Ea:function(F){if(p(F)){F=m.h.childNodes(F);for(var H=0,W=F.length;H<W;H++)m.removeNode(F[H])}else m.a.Tb(F)},va:function(F,H){if(p(F)){m.h.Ea(F);for(var W=F.nextSibling,Z=0,Y=H.length;Z<Y;Z++)W.parentNode.insertBefore(H[Z],W)}else m.a.va(F,H)},Vc:function(F,H){var W;p(F)?(W=F.nextSibling,F=F.parentNode):W=F.firstChild,W?H!==W&&F.insertBefore(H,W):F.appendChild(H)},Wb:function(F,H,W){W?(W=W.nextSibling,p(F)&&(F=F.parentNode),W?H!==W&&F.insertBefore(H,W):F.appendChild(H)):m.h.Vc(F,H)},firstChild:function(F){if(p(F))return!F.nextSibling||x(F.nextSibling)?null:F.nextSibling;if(F.firstChild&&x(F.firstChild))throw Error("Found invalid end comment, as the first child of "+F);return F.firstChild},nextSibling:function(F){if(p(F)&&(F=w(F)),F.nextSibling&&x(F.nextSibling)){var H=F.nextSibling;if(x(H)&&!m.a.g.get(H,z))throw Error("Found end comment without a matching opening comment, as child of "+F);return null}return F.nextSibling},Cd:p,Vd:function(F){return(F=(R?F.text:F.nodeValue).match(O))?F[1]:null},Sc:function(F){if(Q[m.a.R(F)]){var H=F.firstChild;if(H)do if(H.nodeType===1){var W;W=H.firstChild;var Z=null;if(W)do if(Z)Z.push(W);else if(p(W)){var Y=w(W,!0);Y?W=Y:Z=[W]}else x(W)&&(Z=[W]);while(W=W.nextSibling);if(W=Z)for(Z=H.nextSibling,Y=0;Y<W.length;Y++)Z?F.insertBefore(W[Y],Z):F.appendChild(W[Y])}while(H=H.nextSibling)}}}}(),m.b("virtualElements",m.h),m.b("virtualElements.allowedBindings",m.h.ea),m.b("virtualElements.emptyNode",m.h.Ea),m.b("virtualElements.insertAfter",m.h.Wb),m.b("virtualElements.prepend",m.h.Vc),m.b("virtualElements.setDomNodeChildren",m.h.va),function(){m.ga=function(){this.nd={}},m.a.extend(m.ga.prototype,{nodeHasBindings:function(p){switch(p.nodeType){case 1:return p.getAttribute("data-bind")!=null||m.j.getComponentNameForNode(p);case 8:return m.h.Cd(p);default:return!1}},getBindings:function(p,x){var T=this.getBindingsString(p,x),T=T?this.parseBindingsString(T,x,p):null;return m.j.tc(T,p,x,!1)},getBindingAccessors:function(p,x){var T=this.getBindingsString(p,x),T=T?this.parseBindingsString(T,x,p,{valueAccessors:!0}):null;return m.j.tc(T,p,x,!0)},getBindingsString:function(p){switch(p.nodeType){case 1:return p.getAttribute("data-bind");case 8:return m.h.Vd(p);default:return null}},parseBindingsString:function(p,x,T,w){try{var R=this.nd,O=p+(w&&w.valueAccessors||""),k;if(!(k=R[O])){var Q,z="with($context){with($data||{}){return{"+m.m.vb(p,w)+"}}}";Q=new Function("$context","$element",z),k=R[O]=Q}return k(x,T)}catch(F){throw F.message=`Unable to parse bindings. +Bindings value: `+p+` +Message: `+F.message,F}}}),m.ga.instance=new m.ga}(),m.b("bindingProvider",m.ga),function(){function p(fe){var ye=(fe=m.a.g.get(fe,ge))&&fe.N;ye&&(fe.N=null,ye.Tc())}function x(fe,ye,xe){this.node=fe,this.yc=ye,this.kb=[],this.H=!1,ye.N||m.a.K.za(fe,p),xe&&xe.N&&(xe.N.kb.push(fe),this.Kb=xe)}function T(fe){return function(){return fe}}function w(fe){return fe()}function R(fe){return m.a.Ga(m.u.G(fe),function(ye,xe){return function(){return fe()[xe]}})}function O(fe,ye,xe){return typeof fe=="function"?R(fe.bind(null,ye,xe)):m.a.Ga(fe,T)}function k(fe,ye){return R(this.getBindings.bind(this,fe,ye))}function Q(fe,ye){var xe=m.h.firstChild(ye);if(xe){var ve,Te=m.ga.instance,ke=Te.preprocessNode;if(ke){for(;ve=xe;)xe=m.h.nextSibling(ve),ke.call(Te,ve);xe=m.h.firstChild(ye)}for(;ve=xe;)xe=m.h.nextSibling(ve),z(fe,ve)}m.i.ma(ye,m.i.H)}function z(fe,ye){var xe=fe,ve=ye.nodeType===1;ve&&m.h.Sc(ye),(ve||m.ga.instance.nodeHasBindings(ye))&&(xe=H(ye,null,fe).bindingContextForDescendants),xe&&!X[m.a.R(ye)]&&Q(xe,ye)}function F(fe){var ye=[],xe={},ve=[];return m.a.P(fe,function Te(ke){if(!xe[ke]){var Ge=m.getBindingHandler(ke);Ge&&(Ge.after&&(ve.push(ke),m.a.D(Ge.after,function(Ke){if(fe[Ke]){if(m.a.A(ve,Ke)!==-1)throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+ve.join(", "));Te(Ke)}}),ve.length--),ye.push({key:ke,Mc:Ge})),xe[ke]=!0}}),ye}function H(fe,ye,xe){var ve=m.a.g.Ub(fe,ge,{}),Te=ve.hd;if(!ye){if(Te)throw Error("You cannot apply bindings multiple times to the same element.");ve.hd=!0}Te||(ve.context=xe),ve.Zb||(ve.Zb={});var ke;if(ye&&typeof ye!="function")ke=ye;else{var Ge=m.ga.instance,Ke=Ge.getBindingAccessors||k,tt=m.$(function(){return(ke=ye?ye(xe,fe):Ke.call(Ge,fe,xe))&&(xe[Z]&&xe[Z](),xe[$]&&xe[$]()),ke},null,{l:fe});ke&&tt.ja()||(tt=null)}var en=xe,it;if(ke){var nn=function(){return m.a.Ga(tt?tt():ke,w)},qt=tt?function(Rt){return function(){return w(tt()[Rt])}}:function(Rt){return ke[Rt]};nn.get=function(Rt){return ke[Rt]&&w(qt(Rt))},nn.has=function(Rt){return Rt in ke},m.i.H in ke&&m.i.subscribe(fe,m.i.H,function(){var Rt=(0,ke[m.i.H])();if(Rt){var Si=m.h.childNodes(fe);Si.length&&Rt(Si,m.Ec(Si[0]))}}),m.i.pa in ke&&(en=m.i.Cb(fe,xe),m.i.subscribe(fe,m.i.pa,function(){var Rt=(0,ke[m.i.pa])();Rt&&m.h.firstChild(fe)&&Rt(fe)})),ve=F(ke),m.a.D(ve,function(Rt){var Si=Rt.Mc.init,gi=Rt.Mc.update,Ft=Rt.key;if(fe.nodeType===8&&!m.h.ea[Ft])throw Error("The binding '"+Ft+"' cannot be used with virtual elements");try{typeof Si=="function"&&m.u.G(function(){var St=Si(fe,qt(Ft),nn,en.$data,en);if(St&&St.controlsDescendantBindings){if(it!==e)throw Error("Multiple bindings ("+it+" and "+Ft+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");it=Ft}}),typeof gi=="function"&&m.$(function(){gi(fe,qt(Ft),nn,en.$data,en)},null,{l:fe})}catch(St){throw St.message='Unable to process binding "'+Ft+": "+ke[Ft]+`" +Message: `+St.message,St}})}return ve=it===e,{shouldBindDescendants:ve,bindingContextForDescendants:ve&&en}}function W(fe,ye){return fe&&fe instanceof m.fa?fe:new m.fa(fe,e,e,ye)}var Z=m.a.Da("_subscribable"),Y=m.a.Da("_ancestorBindingInfo"),$=m.a.Da("_dataDependency");m.c={};var X={script:!0,textarea:!0,template:!0};m.getBindingHandler=function(fe){return m.c[fe]};var he={};m.fa=function(fe,ye,xe,ve,Te){function ke(){var qt=en?tt():tt,Rt=m.a.f(qt);return ye?(m.a.extend(Ge,ye),Y in ye&&(Ge[Y]=ye[Y])):(Ge.$parents=[],Ge.$root=Rt,Ge.ko=m),Ge[Z]=it,Ke?Rt=Ge.$data:(Ge.$rawData=qt,Ge.$data=Rt),xe&&(Ge[xe]=Rt),ve&&ve(Ge,ye,Rt),ye&&ye[Z]&&!m.S.o().Vb(ye[Z])&&ye[Z](),nn&&(Ge[$]=nn),Ge.$data}var Ge=this,Ke=fe===he,tt=Ke?e:fe,en=typeof tt=="function"&&!m.O(tt),it,nn=Te&&Te.dataDependency;Te&&Te.exportDependencies?ke():(it=m.xb(ke),it.v(),it.ja()?it.equalityComparer=null:Ge[Z]=e)},m.fa.prototype.createChildContext=function(fe,ye,xe,ve){if(!ve&&ye&&typeof ye=="object"&&(ve=ye,ye=ve.as,xe=ve.extend),ye&&ve&&ve.noChildContext){var Te=typeof fe=="function"&&!m.O(fe);return new m.fa(he,this,null,function(ke){xe&&xe(ke),ke[ye]=Te?fe():fe},ve)}return new m.fa(fe,this,ye,function(ke,Ge){ke.$parentContext=Ge,ke.$parent=Ge.$data,ke.$parents=(Ge.$parents||[]).slice(0),ke.$parents.unshift(ke.$parent),xe&&xe(ke)},ve)},m.fa.prototype.extend=function(fe,ye){return new m.fa(he,this,null,function(xe){m.a.extend(xe,typeof fe=="function"?fe(xe):fe)},ye)};var ge=m.a.g.Z();x.prototype.Tc=function(){this.Kb&&this.Kb.N&&this.Kb.N.sd(this.node)},x.prototype.sd=function(fe){m.a.Pa(this.kb,fe),!this.kb.length&&this.H&&this.Cc()},x.prototype.Cc=function(){this.H=!0,this.yc.N&&!this.kb.length&&(this.yc.N=null,m.a.K.yb(this.node,p),m.i.ma(this.node,m.i.pa),this.Tc())},m.i={H:"childrenComplete",pa:"descendantsComplete",subscribe:function(fe,ye,xe,ve,Te){var ke=m.a.g.Ub(fe,ge,{});return ke.Fa||(ke.Fa=new m.T),Te&&Te.notifyImmediately&&ke.Zb[ye]&&m.u.G(xe,ve,[fe]),ke.Fa.subscribe(xe,ve,ye)},ma:function(fe,ye){var xe=m.a.g.get(fe,ge);if(xe&&(xe.Zb[ye]=!0,xe.Fa&&xe.Fa.notifySubscribers(fe,ye),ye==m.i.H)){if(xe.N)xe.N.Cc();else if(xe.N===e&&xe.Fa&&xe.Fa.Wa(m.i.pa))throw Error("descendantsComplete event not supported for bindings on this node")}},Cb:function(fe,ye){var xe=m.a.g.Ub(fe,ge,{});return xe.N||(xe.N=new x(fe,xe,ye[Y])),ye[Y]==xe?ye:ye.extend(function(ve){ve[Y]=xe})}},m.Td=function(fe){return(fe=m.a.g.get(fe,ge))&&fe.context},m.ib=function(fe,ye,xe){return fe.nodeType===1&&m.h.Sc(fe),H(fe,ye,W(xe))},m.ld=function(fe,ye,xe){return xe=W(xe),m.ib(fe,O(ye,xe,fe),xe)},m.Oa=function(fe,ye){ye.nodeType!==1&&ye.nodeType!==8||Q(W(fe),ye)},m.vc=function(fe,ye,xe){if(!o&&t.jQuery&&(o=t.jQuery),2>arguments.length){if(ye=n.body,!ye)throw Error("ko.applyBindings: could not find document.body; has the document been loaded?")}else if(!ye||ye.nodeType!==1&&ye.nodeType!==8)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");z(W(fe,xe),ye)},m.Dc=function(fe){return!fe||fe.nodeType!==1&&fe.nodeType!==8?e:m.Td(fe)},m.Ec=function(fe){return(fe=m.Dc(fe))?fe.$data:e},m.b("bindingHandlers",m.c),m.b("bindingEvent",m.i),m.b("bindingEvent.subscribe",m.i.subscribe),m.b("bindingEvent.startPossiblyAsyncContentBinding",m.i.Cb),m.b("applyBindings",m.vc),m.b("applyBindingsToDescendants",m.Oa),m.b("applyBindingAccessorsToNode",m.ib),m.b("applyBindingsToNode",m.ld),m.b("contextFor",m.Dc),m.b("dataFor",m.Ec)}(),function(p){function x(k,Q){var z=Object.prototype.hasOwnProperty.call(R,k)?R[k]:p,F;z?z.subscribe(Q):(z=R[k]=new m.T,z.subscribe(Q),T(k,function(H,W){var Z=!(!W||!W.synchronous);O[k]={definition:H,Gd:Z},delete R[k],F||Z?z.notifySubscribers(H):m.na.zb(function(){z.notifySubscribers(H)})}),F=!0)}function T(k,Q){w("getConfig",[k],function(z){z?w("loadComponent",[k,z],function(F){Q(F,z)}):Q(null,null)})}function w(k,Q,z,F){F||(F=m.j.loaders.slice(0));var H=F.shift();if(H){var W=H[k];if(W){var Z=!1;if(W.apply(H,Q.concat(function(Y){Z?z(null):Y!==null?z(Y):w(k,Q,z,F)}))!==p&&(Z=!0,!H.suppressLoaderExceptions))throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.")}else w(k,Q,z,F)}else z(null)}var R={},O={};m.j={get:function(k,Q){var z=Object.prototype.hasOwnProperty.call(O,k)?O[k]:p;z?z.Gd?m.u.G(function(){Q(z.definition)}):m.na.zb(function(){Q(z.definition)}):x(k,Q)},Bc:function(k){delete O[k]},oc:w},m.j.loaders=[],m.b("components",m.j),m.b("components.get",m.j.get),m.b("components.clearCachedDefinition",m.j.Bc)}(),function(){function p(z,F,H,W){function Z(){--$===0&&W(Y)}var Y={},$=2,X=H.template;H=H.viewModel,X?R(F,X,function(he){m.j.oc("loadTemplate",[z,he],function(ge){Y.template=ge,Z()})}):Z(),H?R(F,H,function(he){m.j.oc("loadViewModel",[z,he],function(ge){Y[Q]=ge,Z()})}):Z()}function x(z,F,H){if(typeof F=="function")H(function(Z){return new F(Z)});else if(typeof F[Q]=="function")H(F[Q]);else if("instance"in F){var W=F.instance;H(function(){return W})}else"viewModel"in F?x(z,F.viewModel,H):z("Unknown viewModel value: "+F)}function T(z){switch(m.a.R(z)){case"script":return m.a.ua(z.text);case"textarea":return m.a.ua(z.value);case"template":if(w(z.content))return m.a.Ca(z.content.childNodes)}return m.a.Ca(z.childNodes)}function w(z){return t.DocumentFragment?z instanceof DocumentFragment:z&&z.nodeType===11}function R(z,F,H){typeof F.require=="string"?a||t.require?(a||t.require)([F.require],function(W){W&&typeof W=="object"&&W.Xd&&W.default&&(W=W.default),H(W)}):z("Uses require, but no AMD loader is present"):H(F)}function O(z){return function(F){throw Error("Component '"+z+"': "+F)}}var k={};m.j.register=function(z,F){if(!F)throw Error("Invalid configuration for "+z);if(m.j.tb(z))throw Error("Component "+z+" is already registered");k[z]=F},m.j.tb=function(z){return Object.prototype.hasOwnProperty.call(k,z)},m.j.unregister=function(z){delete k[z],m.j.Bc(z)},m.j.Fc={getConfig:function(z,F){F(m.j.tb(z)?k[z]:null)},loadComponent:function(z,F,H){var W=O(z);R(W,F,function(Z){p(z,W,Z,H)})},loadTemplate:function(z,F,H){if(z=O(z),typeof F=="string")H(m.a.ua(F));else if(F instanceof Array)H(F);else if(w(F))H(m.a.la(F.childNodes));else if(F.element)if(F=F.element,t.HTMLElement?F instanceof HTMLElement:F&&F.tagName&&F.nodeType===1)H(T(F));else if(typeof F=="string"){var W=n.getElementById(F);W?H(T(W)):z("Cannot find element with ID "+F)}else z("Unknown element type: "+F);else z("Unknown template value: "+F)},loadViewModel:function(z,F,H){x(O(z),F,H)}};var Q="createViewModel";m.b("components.register",m.j.register),m.b("components.isRegistered",m.j.tb),m.b("components.unregister",m.j.unregister),m.b("components.defaultLoader",m.j.Fc),m.j.loaders.push(m.j.Fc),m.j.dd=k}(),function(){function p(T,w){var R=T.getAttribute("params");if(R){var R=x.parseBindingsString(R,w,T,{valueAccessors:!0,bindingParams:!0}),R=m.a.Ga(R,function(Q){return m.o(Q,null,{l:T})}),O=m.a.Ga(R,function(Q){var z=Q.v();return Q.ja()?m.o({read:function(){return m.a.f(Q())},write:m.Za(z)&&function(F){Q()(F)},l:T}):z});return Object.prototype.hasOwnProperty.call(O,"$raw")||(O.$raw=R),O}return{$raw:{}}}m.j.getComponentNameForNode=function(T){var w=m.a.R(T);if(m.j.tb(w)&&(w.indexOf("-")!=-1||""+T=="[object HTMLUnknownElement]"||8>=m.a.W&&T.tagName===w))return w},m.j.tc=function(T,w,R,O){if(w.nodeType===1){var k=m.j.getComponentNameForNode(w);if(k){if(T=T||{},T.component)throw Error('Cannot use the "component" binding on a custom element matching a component');var Q={name:k,params:p(w,R)};T.component=O?function(){return Q}:Q}}return T};var x=new m.ga;9>m.a.W&&(m.j.register=function(T){return function(w){return T.apply(this,arguments)}}(m.j.register),n.createDocumentFragment=function(T){return function(){var w=T(),R=m.j.dd,O;for(O in R);return w}}(n.createDocumentFragment))}(),function(){function p(w,R,O){if(R=R.template,!R)throw Error("Component '"+w+"' has no template");w=m.a.Ca(R),m.h.va(O,w)}function x(w,R,O){var k=w.createViewModel;return k?k.call(w,R,O):R}var T=0;m.c.component={init:function(w,R,O,k,Q){function z(){var Y=F&&F.dispose;typeof Y=="function"&&Y.call(F),W&&W.s(),H=F=W=null}var F,H,W,Z=m.a.la(m.h.childNodes(w));return m.h.Ea(w),m.a.K.za(w,z),m.o(function(){var Y=m.a.f(R()),$,X;if(typeof Y=="string"?$=Y:($=m.a.f(Y.name),X=m.a.f(Y.params)),!$)throw Error("No component name specified");var he=m.i.Cb(w,Q),ge=H=++T;m.j.get($,function(fe){if(H===ge){if(z(),!fe)throw Error("Unknown component '"+$+"'");p($,fe,w);var ye=x(fe,X,{element:w,templateNodes:Z});fe=he.createChildContext(ye,{extend:function(xe){xe.$component=ye,xe.$componentTemplateNodes=Z}}),ye&&ye.koDescendantsComplete&&(W=m.i.subscribe(w,m.i.pa,ye.koDescendantsComplete,ye)),F=ye,m.Oa(fe,w)}})},null,{l:w}),{controlsDescendantBindings:!0}}},m.h.ea.component=!0}();var M={class:"className",for:"htmlFor"};m.c.attr={update:function(p,x){var T=m.a.f(x())||{};m.a.P(T,function(w,R){R=m.a.f(R);var O=w.indexOf(":"),O="lookupNamespaceURI"in p&&0<O&&p.lookupNamespaceURI(w.substr(0,O)),k=R===!1||R===null||R===e;k?O?p.removeAttributeNS(O,w):p.removeAttribute(w):R=R.toString(),8>=m.a.W&&w in M?(w=M[w],k?p.removeAttribute(w):p[w]=R):k||(O?p.setAttributeNS(O,w,R):p.setAttribute(w,R)),w==="name"&&m.a.Yc(p,k?"":R)})}},function(){m.c.checked={after:["value","attr"],init:function(p,x,T){function w(){var Y=p.checked,$=O();if(!m.S.Ya()&&(Y||!Q&&!m.S.qa())){var X=m.u.G(x);if(F){var he=H?X.v():X,ge=Z;Z=$,ge!==$?Y&&(m.a.Na(he,$,!0),m.a.Na(he,ge,!1)):m.a.Na(he,$,Y),H&&m.Za(X)&&X(he)}else k&&($===e?$=Y:Y||($=e)),m.m.eb(X,T,"checked",$,!0)}}function R(){var Y=m.a.f(x()),$=O();F?(p.checked=0<=m.a.A(Y,$),Z=$):p.checked=k&&$===e?!!Y:O()===Y}var O=m.xb(function(){if(T.has("checkedValue"))return m.a.f(T.get("checkedValue"));if(W)return T.has("value")?m.a.f(T.get("value")):p.value}),k=p.type=="checkbox",Q=p.type=="radio";if(k||Q){var z=x(),F=k&&m.a.f(z)instanceof Array,H=!(F&&z.push&&z.splice),W=Q||F,Z=F?O():e;Q&&!p.name&&m.c.uniqueName.init(p,function(){return!0}),m.o(w,null,{l:p}),m.a.B(p,"click",w),m.o(R,null,{l:p}),z=e}}},m.m.wa.checked=!0,m.c.checkedValue={update:function(p,x){p.value=m.a.f(x())}}}(),m.c.class={update:function(p,x){var T=m.a.Db(m.a.f(x()));m.a.Eb(p,p.__ko__cssValue,!1),p.__ko__cssValue=T,m.a.Eb(p,T,!0)}},m.c.css={update:function(p,x){var T=m.a.f(x());T!==null&&typeof T=="object"?m.a.P(T,function(w,R){R=m.a.f(R),m.a.Eb(p,w,R)}):m.c.class.update(p,x)}},m.c.enable={update:function(p,x){var T=m.a.f(x());T&&p.disabled?p.removeAttribute("disabled"):T||p.disabled||(p.disabled=!0)}},m.c.disable={update:function(p,x){m.c.enable.update(p,function(){return!m.a.f(x())})}},m.c.event={init:function(p,x,T,w,R){var O=x()||{};m.a.P(O,function(k){typeof k=="string"&&m.a.B(p,k,function(Q){var z,F=x()[k];if(F){try{var H=m.a.la(arguments);w=R.$data,H.unshift(w),z=F.apply(w,H)}finally{z!==!0&&(Q.preventDefault?Q.preventDefault():Q.returnValue=!1)}T.get(k+"Bubble")===!1&&(Q.cancelBubble=!0,Q.stopPropagation&&Q.stopPropagation())}})})}},m.c.foreach={Rc:function(p){return function(){var x=p(),T=m.a.bc(x);return!T||typeof T.length=="number"?{foreach:x,templateEngine:m.ba.Ma}:(m.a.f(x),{foreach:T.data,as:T.as,noChildContext:T.noChildContext,includeDestroyed:T.includeDestroyed,afterAdd:T.afterAdd,beforeRemove:T.beforeRemove,afterRender:T.afterRender,beforeMove:T.beforeMove,afterMove:T.afterMove,templateEngine:m.ba.Ma})}},init:function(p,x){return m.c.template.init(p,m.c.foreach.Rc(x))},update:function(p,x,T,w,R){return m.c.template.update(p,m.c.foreach.Rc(x),T,w,R)}},m.m.Ra.foreach=!1,m.h.ea.foreach=!0,m.c.hasfocus={init:function(p,x,T){function w(k){p.__ko_hasfocusUpdating=!0;var Q=p.ownerDocument;if("activeElement"in Q){var z;try{z=Q.activeElement}catch{z=Q.body}k=z===p}Q=x(),m.m.eb(Q,T,"hasfocus",k,!0),p.__ko_hasfocusLastValue=k,p.__ko_hasfocusUpdating=!1}var R=w.bind(null,!0),O=w.bind(null,!1);m.a.B(p,"focus",R),m.a.B(p,"focusin",R),m.a.B(p,"blur",O),m.a.B(p,"focusout",O),p.__ko_hasfocusLastValue=!1},update:function(p,x){var T=!!m.a.f(x());p.__ko_hasfocusUpdating||p.__ko_hasfocusLastValue===T||(T?p.focus():p.blur(),!T&&p.__ko_hasfocusLastValue&&p.ownerDocument.body.focus(),m.u.G(m.a.Fb,null,[p,T?"focusin":"focusout"]))}},m.m.wa.hasfocus=!0,m.c.hasFocus=m.c.hasfocus,m.m.wa.hasFocus="hasfocus",m.c.html={init:function(){return{controlsDescendantBindings:!0}},update:function(p,x){m.a.fc(p,x())}},function(){function p(x,T,w){m.c[x]={init:function(R,O,k,Q,z){var F,H,W={},Z,Y,$;if(T){Q=k.get("as");var X=k.get("noChildContext");$=!(Q&&X),W={as:Q,noChildContext:X,exportDependencies:$}}return Y=(Z=k.get("completeOn")=="render")||k.has(m.i.pa),m.o(function(){var he=m.a.f(O()),ge=!w!=!he,fe=!H,ye;($||ge!==F)&&(Y&&(z=m.i.Cb(R,z)),ge&&((!T||$)&&(W.dataDependency=m.S.o()),ye=T?z.createChildContext(typeof he=="function"?he:O,W):m.S.qa()?z.extend(null,W):z),fe&&m.S.qa()&&(H=m.a.Ca(m.h.childNodes(R),!0)),ge?(fe||m.h.va(R,m.a.Ca(H)),m.Oa(ye,R)):(m.h.Ea(R),Z||m.i.ma(R,m.i.H)),F=ge)},null,{l:R}),{controlsDescendantBindings:!0}}},m.m.Ra[x]=!1,m.h.ea[x]=!0}p("if"),p("ifnot",!1,!0),p("with",!0)}(),m.c.let={init:function(p,x,T,w,R){return x=R.extend(x),m.Oa(x,p),{controlsDescendantBindings:!0}}},m.h.ea.let=!0;var L={};m.c.options={init:function(p){if(m.a.R(p)!=="select")throw Error("options binding applies only to SELECT elements");for(;0<p.length;)p.remove(0);return{controlsDescendantBindings:!0}},update:function(p,x,T){function w(){return m.a.jb(p.options,function(X){return X.selected})}function R(X,he,ge){var fe=typeof he;return fe=="function"?he(X):fe=="string"?X[he]:ge}function O(X,he){if(Y&&F)m.i.ma(p,m.i.H);else if(Z.length){var ge=0<=m.a.A(Z,m.w.M(he[0]));m.a.Zc(he[0],ge),Y&&!ge&&m.u.G(m.a.Fb,null,[p,"change"])}}var k=p.multiple,Q=p.length!=0&&k?p.scrollTop:null,z=m.a.f(x()),F=T.get("valueAllowUnset")&&T.has("value"),H=T.get("optionsIncludeDestroyed");x={};var W,Z=[];F||(k?Z=m.a.Mb(w(),m.w.M):0<=p.selectedIndex&&Z.push(m.w.M(p.options[p.selectedIndex]))),z&&(typeof z.length>"u"&&(z=[z]),W=m.a.jb(z,function(X){return H||X===e||X===null||!m.a.f(X._destroy)}),T.has("optionsCaption")&&(z=m.a.f(T.get("optionsCaption")),z!==null&&z!==e&&W.unshift(L)));var Y=!1;if(x.beforeRemove=function(X){p.removeChild(X)},z=O,T.has("optionsAfterRender")&&typeof T.get("optionsAfterRender")=="function"&&(z=function(X,he){O(0,he),m.u.G(T.get("optionsAfterRender"),null,[he[0],X!==L?X:e])}),m.a.ec(p,W,function(X,he,ge){return ge.length&&(Z=!F&&ge[0].selected?[m.w.M(ge[0])]:[],Y=!0),he=p.ownerDocument.createElement("option"),X===L?(m.a.Bb(he,T.get("optionsCaption")),m.w.cb(he,e)):(ge=R(X,T.get("optionsValue"),X),m.w.cb(he,m.a.f(ge)),X=R(X,T.get("optionsText"),ge),m.a.Bb(he,X)),[he]},x,z),!F){var $;k?$=Z.length&&w().length<Z.length:$=Z.length&&0<=p.selectedIndex?m.w.M(p.options[p.selectedIndex])!==Z[0]:Z.length||0<=p.selectedIndex,$&&m.u.G(m.a.Fb,null,[p,"change"])}(F||m.S.Ya())&&m.i.ma(p,m.i.H),m.a.wd(p),Q&&20<Math.abs(Q-p.scrollTop)&&(p.scrollTop=Q)}},m.c.options.$b=m.a.g.Z(),m.c.selectedOptions={init:function(p,x,T){function w(){var k=x(),Q=[];m.a.D(p.getElementsByTagName("option"),function(z){z.selected&&Q.push(m.w.M(z))}),m.m.eb(k,T,"selectedOptions",Q)}function R(){var k=m.a.f(x()),Q=p.scrollTop;k&&typeof k.length=="number"&&m.a.D(p.getElementsByTagName("option"),function(z){var F=0<=m.a.A(k,m.w.M(z));z.selected!=F&&m.a.Zc(z,F)}),p.scrollTop=Q}if(m.a.R(p)!="select")throw Error("selectedOptions binding applies only to SELECT elements");var O;m.i.subscribe(p,m.i.H,function(){O?w():(m.a.B(p,"change",w),O=m.o(R,null,{l:p}))},null,{notifyImmediately:!0})},update:function(){}},m.m.wa.selectedOptions=!0,m.c.style={update:function(p,x){var T=m.a.f(x()||{});m.a.P(T,function(w,R){if(R=m.a.f(R),(R===null||R===e||R===!1)&&(R=""),o)o(p).css(w,R);else if(/^--/.test(w))p.style.setProperty(w,R);else{w=w.replace(/-(\w)/g,function(k,Q){return Q.toUpperCase()});var O=p.style[w];p.style[w]=R,R===O||p.style[w]!=O||isNaN(R)||(p.style[w]=R+"px")}})}},m.c.submit={init:function(p,x,T,w,R){if(typeof x()!="function")throw Error("The value for a submit binding must be a function");m.a.B(p,"submit",function(O){var k,Q=x();try{k=Q.call(R.$data,p)}finally{k!==!0&&(O.preventDefault?O.preventDefault():O.returnValue=!1)}})}},m.c.text={init:function(){return{controlsDescendantBindings:!0}},update:function(p,x){m.a.Bb(p,x())}},m.h.ea.text=!0,function(){if(t&&t.navigator){var p=function(W){if(W)return parseFloat(W[1])},x=t.navigator.userAgent,T,w,R,O,k;(T=t.opera&&t.opera.version&&parseInt(t.opera.version()))||(k=p(x.match(/Edge\/([^ ]+)$/)))||p(x.match(/Chrome\/([^ ]+)/))||(w=p(x.match(/Version\/([^ ]+) Safari/)))||(R=p(x.match(/Firefox\/([^ ]+)/)))||(O=m.a.W||p(x.match(/MSIE ([^ ]+)/)))||(O=p(x.match(/rv:([^ )]+)/)))}if(8<=O&&10>O)var Q=m.a.g.Z(),z=m.a.g.Z(),F=function(W){var Z=this.activeElement;(Z=Z&&m.a.g.get(Z,z))&&Z(W)},H=function(W,Z){var Y=W.ownerDocument;m.a.g.get(Y,Q)||(m.a.g.set(Y,Q,!0),m.a.B(Y,"selectionchange",F)),m.a.g.set(W,z,Z)};m.c.textInput={init:function(W,Z,Y){function $(ke,Ge){m.a.B(W,ke,Ge)}function X(){var ke=m.a.f(Z());(ke===null||ke===e)&&(ke=""),xe!==e&&ke===xe?m.a.setTimeout(X,4):W.value!==ke&&(Te=!0,W.value=ke,Te=!1,fe=W.value)}function he(){ye||(xe=W.value,ye=m.a.setTimeout(ge,4))}function ge(){clearTimeout(ye),xe=ye=e;var ke=W.value;fe!==ke&&(fe=ke,m.m.eb(Z(),Y,"textInput",ke))}var fe=W.value,ye,xe,ve=m.a.W==9?he:ge,Te=!1;O&&$("keypress",ge),11>O&&$("propertychange",function(ke){Te||ke.propertyName!=="value"||ve(ke)}),O==8&&($("keyup",ge),$("keydown",ge)),H&&(H(W,ve),$("dragend",he)),(!O||9<=O)&&$("input",ve),5>w&&m.a.R(W)==="textarea"?($("keydown",he),$("paste",he),$("cut",he)):11>T?$("keydown",he):4>R?($("DOMAutoComplete",ge),$("dragdrop",ge),$("drop",ge)):k&&W.type==="number"&&$("keydown",he),$("change",ge),$("blur",ge),m.o(X,null,{l:W})}},m.m.wa.textInput=!0,m.c.textinput={preprocess:function(W,Z,Y){Y("textInput",W)}}}(),m.c.uniqueName={init:function(p,x){if(x()){var T="ko_unique_"+ ++m.c.uniqueName.rd;m.a.Yc(p,T)}}},m.c.uniqueName.rd=0,m.c.using={init:function(p,x,T,w,R){var O;return T.has("as")&&(O={as:T.get("as"),noChildContext:T.get("noChildContext")}),x=R.createChildContext(x,O),m.Oa(x,p),{controlsDescendantBindings:!0}}},m.h.ea.using=!0,m.c.value={init:function(p,x,T){var w=m.a.R(p),R=w=="input";if(!R||p.type!="checkbox"&&p.type!="radio"){var O=[],k=T.get("valueUpdate"),Q=!1,z=null;k&&(typeof k=="string"?O=[k]:O=m.a.wc(k),m.a.Pa(O,"change"));var F=function(){z=null,Q=!1;var Z=x(),Y=m.w.M(p);m.m.eb(Z,T,"value",Y)};!m.a.W||!R||p.type!="text"||p.autocomplete=="off"||p.form&&p.form.autocomplete=="off"||m.a.A(O,"propertychange")!=-1||(m.a.B(p,"propertychange",function(){Q=!0}),m.a.B(p,"focus",function(){Q=!1}),m.a.B(p,"blur",function(){Q&&F()})),m.a.D(O,function(Z){var Y=F;m.a.Ud(Z,"after")&&(Y=function(){z=m.w.M(p),m.a.setTimeout(F,0)},Z=Z.substring(5)),m.a.B(p,Z,Y)});var H;if(H=R&&p.type=="file"?function(){var Z=m.a.f(x());Z===null||Z===e||Z===""?p.value="":m.u.G(F)}:function(){var Z=m.a.f(x()),Y=m.w.M(p);z!==null&&Z===z?m.a.setTimeout(H,0):(Z!==Y||Y===e)&&(w==="select"?(Y=T.get("valueAllowUnset"),m.w.cb(p,Z,Y),Y||Z===m.w.M(p)||m.u.G(F)):m.w.cb(p,Z))},w==="select"){var W;m.i.subscribe(p,m.i.H,function(){W?T.get("valueAllowUnset")?H():F():(m.a.B(p,"change",F),W=m.o(H,null,{l:p}))},null,{notifyImmediately:!0})}else m.a.B(p,"change",F),m.o(H,null,{l:p})}else m.ib(p,{checkedValue:x})},update:function(){}},m.m.wa.value=!0,m.c.visible={update:function(p,x){var T=m.a.f(x()),w=p.style.display!="none";T&&!w?p.style.display="":!T&&w&&(p.style.display="none")}},m.c.hidden={update:function(p,x){m.c.visible.update(p,function(){return!m.a.f(x())})}},function(p){m.c[p]={init:function(x,T,w,R,O){return m.c.event.init.call(this,x,function(){var k={};return k[p]=T(),k},w,R,O)}}}("click"),m.ca=function(){},m.ca.prototype.renderTemplateSource=function(){throw Error("Override renderTemplateSource")},m.ca.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock")},m.ca.prototype.makeTemplateSource=function(p,x){if(typeof p=="string"){x=x||n;var T=x.getElementById(p);if(!T)throw Error("Cannot find template with ID "+p);return new m.C.F(T)}if(p.nodeType==1||p.nodeType==8)return new m.C.ia(p);throw Error("Unknown template type: "+p)},m.ca.prototype.renderTemplate=function(p,x,T,w){return p=this.makeTemplateSource(p,w),this.renderTemplateSource(p,x,T,w)},m.ca.prototype.isTemplateRewritten=function(p,x){return this.allowTemplateRewriting===!1?!0:this.makeTemplateSource(p,x).data("isRewritten")},m.ca.prototype.rewriteTemplate=function(p,x,T){p=this.makeTemplateSource(p,T),x=x(p.text()),p.text(x),p.data("isRewritten",!0)},m.b("templateEngine",m.ca),m.kc=function(){function p(w,R,O,k){w=m.m.ac(w);for(var Q=m.m.Ra,z=0;z<w.length;z++){var F=w[z].key;if(Object.prototype.hasOwnProperty.call(Q,F)){var H=Q[F];if(typeof H=="function"){if(F=H(w[z].value))throw Error(F)}else if(!H)throw Error("This template engine does not support the '"+F+"' binding within its templates")}}return O="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+m.m.vb(w,{valueAccessors:!0})+" } })()},'"+O.toLowerCase()+"')",k.createJavaScriptEvaluatorBlock(O)+R}var x=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,T=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{xd:function(w,R,O){R.isTemplateRewritten(w,O)||R.rewriteTemplate(w,function(k){return m.kc.Ld(k,R)},O)},Ld:function(w,R){return w.replace(x,function(O,k,Q,z,F){return p(F,k,Q,R)}).replace(T,function(O,k){return p(k,"<!-- ko -->","#comment",R)})},md:function(w,R){return m.aa.Xb(function(O,k){var Q=O.nextSibling;Q&&Q.nodeName.toLowerCase()===R&&m.ib(Q,w,k)})}}}(),m.b("__tr_ambtns",m.kc.md),function(){m.C={},m.C.F=function(T){if(this.F=T){var w=m.a.R(T);this.ab=w==="script"?1:w==="textarea"?2:w=="template"&&T.content&&T.content.nodeType===11?3:4}},m.C.F.prototype.text=function(){var T=this.ab===1?"text":this.ab===2?"value":"innerHTML";if(arguments.length==0)return this.F[T];var w=arguments[0];T==="innerHTML"?m.a.fc(this.F,w):this.F[T]=w};var p=m.a.g.Z()+"_";m.C.F.prototype.data=function(T){if(arguments.length===1)return m.a.g.get(this.F,p+T);m.a.g.set(this.F,p+T,arguments[1])};var x=m.a.g.Z();m.C.F.prototype.nodes=function(){var T=this.F;if(arguments.length==0){var w=m.a.g.get(T,x)||{},R=w.lb||(this.ab===3?T.content:this.ab===4?T:e);if(!R||w.jd){var O=this.text();O&&O!==w.bb&&(R=m.a.Md(O,T.ownerDocument),m.a.g.set(T,x,{lb:R,bb:O,jd:!0}))}return R}w=arguments[0],this.ab!==e&&this.text(""),m.a.g.set(T,x,{lb:w})},m.C.ia=function(T){this.F=T},m.C.ia.prototype=new m.C.F,m.C.ia.prototype.constructor=m.C.ia,m.C.ia.prototype.text=function(){if(arguments.length==0){var T=m.a.g.get(this.F,x)||{};return T.bb===e&&T.lb&&(T.bb=T.lb.innerHTML),T.bb}m.a.g.set(this.F,x,{bb:arguments[0]})},m.b("templateSources",m.C),m.b("templateSources.domElement",m.C.F),m.b("templateSources.anonymousTemplate",m.C.ia)}(),function(){function p(z,F,H){var W;for(F=m.h.nextSibling(F);z&&(W=z)!==F;)z=m.h.nextSibling(W),H(W,z)}function x(z,F){if(z.length){var H=z[0],W=z[z.length-1],Z=H.parentNode,Y=m.ga.instance,$=Y.preprocessNode;if($){if(p(H,W,function(X,he){var ge=X.previousSibling,fe=$.call(Y,X);fe&&(X===H&&(H=fe[0]||he),X===W&&(W=fe[fe.length-1]||ge))}),z.length=0,!H)return;H===W?z.push(H):(z.push(H,W),m.a.Ua(z,Z))}p(H,W,function(X){X.nodeType!==1&&X.nodeType!==8||m.vc(F,X)}),p(H,W,function(X){X.nodeType!==1&&X.nodeType!==8||m.aa.cd(X,[F])}),m.a.Ua(z,Z)}}function T(z){return z.nodeType?z:0<z.length?z[0]:null}function w(z,F,H,W,Z){Z=Z||{};var Y=(z&&T(z)||H||{}).ownerDocument,$=Z.templateEngine||O;if(m.kc.xd(H,$,Y),H=$.renderTemplate(H,W,Z,Y),typeof H.length!="number"||0<H.length&&typeof H[0].nodeType!="number")throw Error("Template engine must return an array of DOM nodes");switch(Y=!1,F){case"replaceChildren":m.h.va(z,H),Y=!0;break;case"replaceNode":m.a.Xc(z,H),Y=!0;break;case"ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+F)}return Y&&(x(H,W),Z.afterRender&&m.u.G(Z.afterRender,null,[H,W[Z.as||"$data"]]),F=="replaceChildren"&&m.i.ma(z,m.i.H)),H}function R(z,F,H){return m.O(z)?z():typeof z=="function"?z(F,H):z}var O;m.gc=function(z){if(z!=e&&!(z instanceof m.ca))throw Error("templateEngine must inherit from ko.templateEngine");O=z},m.dc=function(z,F,H,W,Z){if(H=H||{},(H.templateEngine||O)==e)throw Error("Set a template engine before calling renderTemplate");if(Z=Z||"replaceChildren",W){var Y=T(W);return m.$(function(){var X=F&&F instanceof m.fa?F:new m.fa(F,null,null,null,{exportDependencies:!0}),$=R(z,X.$data,X),X=w(W,Z,$,X,H);Z=="replaceNode"&&(W=X,Y=T(W))},null,{Sa:function(){return!Y||!m.a.Sb(Y)},l:Y&&Z=="replaceNode"?Y.parentNode:Y})}return m.aa.Xb(function($){m.dc(z,F,H,$,"replaceNode")})},m.Qd=function(z,F,H,W,Z){function Y(xe,ve){m.u.G(m.a.ec,null,[W,xe,X,H,$,ve]),m.i.ma(W,m.i.H)}function $(xe,ve){x(ve,he),H.afterRender&&H.afterRender(ve,xe),he=null}function X(xe,ve){he=Z.createChildContext(xe,{as:ge,noChildContext:H.noChildContext,extend:function(ke){ke.$index=ve,ge&&(ke[ge+"Index"]=ve)}});var Te=R(z,xe,he);return w(W,"ignoreTargetNode",Te,he,H)}var he,ge=H.as,fe=H.includeDestroyed===!1||m.options.foreachHidesDestroyed&&!H.includeDestroyed;if(fe||H.beforeRemove||!m.Pc(F))return m.$(function(){var xe=m.a.f(F)||[];typeof xe.length>"u"&&(xe=[xe]),fe&&(xe=m.a.jb(xe,function(ve){return ve===e||ve===null||!m.a.f(ve._destroy)})),Y(xe)},null,{l:W});Y(F.v());var ye=F.subscribe(function(xe){Y(F(),xe)},null,"arrayChange");return ye.l(W),ye};var k=m.a.g.Z(),Q=m.a.g.Z();m.c.template={init:function(z,F){var H=m.a.f(F());if(typeof H=="string"||"name"in H)m.h.Ea(z);else if("nodes"in H){if(H=H.nodes||[],m.O(H))throw Error('The "nodes" option must be a plain, non-observable array.');var W=H[0]&&H[0].parentNode;W&&m.a.g.get(W,Q)||(W=m.a.Yb(H),m.a.g.set(W,Q,!0)),new m.C.ia(z).nodes(W)}else if(H=m.h.childNodes(z),0<H.length)W=m.a.Yb(H),new m.C.ia(z).nodes(W);else throw Error("Anonymous template defined, but no template content was provided");return{controlsDescendantBindings:!0}},update:function(z,F,H,W,Z){var Y=F();F=m.a.f(Y),H=!0,W=null,typeof F=="string"?F={}:(Y="name"in F?F.name:z,"if"in F&&(H=m.a.f(F.if)),H&&"ifnot"in F&&(H=!m.a.f(F.ifnot)),H&&!Y&&(H=!1)),"foreach"in F?W=m.Qd(Y,H&&F.foreach||[],F,z,Z):H?(H=Z,"data"in F&&(H=Z.createChildContext(F.data,{as:F.as,noChildContext:F.noChildContext,exportDependencies:!0})),W=m.dc(Y,H,F,z)):m.h.Ea(z),Z=W,(F=m.a.g.get(z,k))&&typeof F.s=="function"&&F.s(),m.a.g.set(z,k,!Z||Z.ja&&!Z.ja()?e:Z)}},m.m.Ra.template=function(z){return z=m.m.ac(z),z.length==1&&z[0].unknown||m.m.Id(z,"name")?null:"This template engine does not support anonymous templates nested within its templates"},m.h.ea.template=!0}(),m.b("setTemplateEngine",m.gc),m.b("renderTemplate",m.dc),m.a.Kc=function(p,x,T){if(p.length&&x.length){var w,R,O,k,Q;for(w=R=0;(!T||w<T)&&(k=p[R]);++R){for(O=0;Q=x[O];++O)if(k.value===Q.value){k.moved=Q.index,Q.moved=k.index,x.splice(O,1),w=O=0;break}w+=O}}},m.a.Pb=function(){function p(x,T,w,R,O){var k=Math.min,Q=Math.max,z=[],F,H=x.length,W,Z=T.length,Y=Z-H||1,$=H+Z+1,X,he,ge;for(F=0;F<=H;F++)for(he=X,z.push(X=[]),ge=k(Z,F+Y),W=Q(0,F-1);W<=ge;W++)X[W]=W?F?x[F-1]===T[W-1]?he[W-1]:k(he[W]||$,X[W-1]||$)+1:W+1:F+1;for(k=[],Q=[],Y=[],F=H,W=Z;F||W;)Z=z[F][W]-1,W&&Z===z[F][W-1]?Q.push(k[k.length]={status:w,value:T[--W],index:W}):F&&Z===z[F-1][W]?Y.push(k[k.length]={status:R,value:x[--F],index:F}):(--W,--F,O.sparse||k.push({status:"retained",value:T[W]}));return m.a.Kc(Y,Q,!O.dontLimitMoves&&10*H),k.reverse()}return function(x,T,w){return w=typeof w=="boolean"?{dontLimitMoves:w}:w||{},x=x||[],T=T||[],x.length<T.length?p(x,T,"added","deleted",w):p(T,x,"deleted","added",w)}}(),m.b("utils.compareArrays",m.a.Pb),function(){function p(w,R,O,k,Q){var z=[],F=m.$(function(){var H=R(O,Q,m.a.Ua(z,w))||[];0<z.length&&(m.a.Xc(z,H),k&&m.u.G(k,null,[O,H,Q])),z.length=0,m.a.Nb(z,H)},null,{l:w,Sa:function(){return!m.a.kd(z)}});return{Y:z,$:F.ja()?F:e}}var x=m.a.g.Z(),T=m.a.g.Z();m.a.ec=function(w,R,O,k,Q,z){function F(Rt){Te={Aa:Rt,pb:m.ta(he++)},$.push(Te),Y||ve.push(Te)}function H(Rt){Te=Z[Rt],he!==Te.pb.v()&&xe.push(Te),Te.pb(he++),m.a.Ua(Te.Y,w),$.push(Te)}function W(Rt,Si){if(Rt)for(var gi=0,Ft=Si.length;gi<Ft;gi++)m.a.D(Si[gi].Y,function(St){Rt(St,gi,Si[gi].Aa)})}R=R||[],typeof R.length>"u"&&(R=[R]),k=k||{};var Z=m.a.g.get(w,x),Y=!Z,$=[],X=0,he=0,ge=[],fe=[],ye=[],xe=[],ve=[],Te,ke=0;if(Y)m.a.D(R,F);else{if(!z||Z&&Z._countWaitingForRemove){var Ge=m.a.Mb(Z,function(Rt){return Rt.Aa});z=m.a.Pb(Ge,R,{dontLimitMoves:k.dontLimitMoves,sparse:!0})}for(var Ge=0,Ke,tt,en;Ke=z[Ge];Ge++)switch(tt=Ke.moved,en=Ke.index,Ke.status){case"deleted":for(;X<en;)H(X++);tt===e&&(Te=Z[X],Te.$&&(Te.$.s(),Te.$=e),m.a.Ua(Te.Y,w).length&&(k.beforeRemove&&($.push(Te),ke++,Te.Aa===T?Te=null:ye.push(Te)),Te&&ge.push.apply(ge,Te.Y))),X++;break;case"added":for(;he<en;)H(X++);tt!==e?(fe.push($.length),H(tt)):F(Ke.value)}for(;he<R.length;)H(X++);$._countWaitingForRemove=ke}m.a.g.set(w,x,$),W(k.beforeMove,xe),m.a.D(ge,k.beforeRemove?m.oa:m.removeNode);var it,nn,qt;try{qt=w.ownerDocument.activeElement}catch{}if(fe.length)for(;(Ge=fe.shift())!=e;){for(Te=$[Ge],it=e;Ge;)if((nn=$[--Ge].Y)&&nn.length){it=nn[nn.length-1];break}for(R=0;X=Te.Y[R];it=X,R++)m.h.Wb(w,X,it)}for(Ge=0;Te=$[Ge];Ge++){for(Te.Y||m.a.extend(Te,p(w,O,Te.Aa,Q,Te.pb)),R=0;X=Te.Y[R];it=X,R++)m.h.Wb(w,X,it);!Te.Ed&&Q&&(Q(Te.Aa,Te.Y,Te.pb),Te.Ed=!0,it=Te.Y[Te.Y.length-1])}for(qt&&w.ownerDocument.activeElement!=qt&&qt.focus(),W(k.beforeRemove,ye),Ge=0;Ge<ye.length;++Ge)ye[Ge].Aa=T;W(k.afterMove,xe),W(k.afterAdd,ve)}}(),m.b("utils.setDomNodeChildrenFromArrayMapping",m.a.ec),m.ba=function(){this.allowTemplateRewriting=!1},m.ba.prototype=new m.ca,m.ba.prototype.constructor=m.ba,m.ba.prototype.renderTemplateSource=function(p,x,T,w){return(x=!(9>m.a.W)&&p.nodes?p.nodes():null)?m.a.la(x.cloneNode(!0).childNodes):(p=p.text(),m.a.ua(p,w))},m.ba.Ma=new m.ba,m.gc(m.ba.Ma),m.b("nativeTemplateEngine",m.ba),function(){m.$a=function(){var x=this.Hd=function(){if(!o||!o.tmpl)return 0;try{if(0<=o.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch{}return 1}();this.renderTemplateSource=function(T,w,R,O){if(O=O||n,R=R||{},2>x)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var k=T.data("precompiled");return k||(k=T.text()||"",k=o.template(null,"{{ko_with $item.koBindingContext}}"+k+"{{/ko_with}}"),T.data("precompiled",k)),T=[w.$data],w=o.extend({koBindingContext:w},R.templateOptions),w=o.tmpl(k,T,w),w.appendTo(O.createElement("div")),o.fragments={},w},this.createJavaScriptEvaluatorBlock=function(T){return"{{ko_code ((function() { return "+T+" })()) }}"},this.addTemplate=function(T,w){n.write("<script type='text/html' id='"+T+"'>"+w+"</script>")},0<x&&(o.tmpl.tag.ko_code={open:"__.push($1 || '');"},o.tmpl.tag.ko_with={open:"with($1) {",close:"} "})},m.$a.prototype=new m.ca,m.$a.prototype.constructor=m.$a;var p=new m.$a;0<p.Hd&&m.gc(p),m.b("jqueryTmplTemplateEngine",m.$a)}()})})()})()})();var cPt=ko;typeof window<"u"?(ko=window.ko,typeof j3<"u"?window.ko=j3:delete window.ko):(ko=global.ko,typeof j3<"u"?global.ko=j3:delete global.ko);var vx=cPt;/** + * @license + * Knockout ES5 plugin - https://github.com/SteveSanderson/knockout-es5 + * Copyright (c) Steve Sanderson + * MIT license + */var Wee="__knockoutObservables",jee="__knockoutSubscribable";function hwe(e,t){if(!e)throw new Error("When calling ko.track, you must pass an object as the first parameter.");var n=this,i=mwe(e,!0);return t=t||Object.getOwnPropertyNames(e),t.forEach(function(o){if(!(o===Wee||o===jee)&&!(o in i)){var r=e[o],s=r instanceof Array,a=n.isObservable(r)?r:s?n.observableArray(r):n.observable(r);Object.defineProperty(e,o,{configurable:!0,enumerable:!0,get:a,set:n.isWriteableObservable(a)?a:void 0}),i[o]=a,s&&uPt(n,a)}}),e}function mwe(e,t){var n=e[Wee];return!n&&t&&(n={},Object.defineProperty(e,Wee,{value:n})),n}function lPt(e,t,n){var i=this,o={owner:e,deferEvaluation:!0};if(typeof n=="function")o.read=n;else{if("value"in n)throw new Error('For ko.defineProperty, you must not specify a "value" for the property. You must provide a "get" function.');if(typeof n.get!="function")throw new Error('For ko.defineProperty, the third parameter must be either an evaluator function, or an options object containing a function called "get".');o.read=n.get,o.write=n.set}return e[t]=i.computed(o),hwe.call(i,e,[t]),e}function uPt(e,t){var n=null;e.computed(function(){n&&(n.dispose(),n=null);var i=t();i instanceof Array&&(n=fPt(e,t,i))})}function fPt(e,t,n){var i=dPt(e,n);return i.subscribe(t)}function dPt(e,t){var n=t[jee];if(!n){n=new e.subscribable,Object.defineProperty(t,jee,{value:n});var i={};hPt(t,n,i),mPt(e,t,n,i)}return n}function hPt(e,t,n){["pop","push","reverse","shift","sort","splice","unshift"].forEach(function(i){var o=e[i];e[i]=function(){var r=o.apply(this,arguments);return n.pause!==!0&&t.notifySubscribers(this),r}})}function mPt(e,t,n,i){["remove","removeAll","destroy","destroyAll","replace"].forEach(function(o){Object.defineProperty(t,o,{enumerable:!1,value:function(){var r;i.pause=!0;try{r=e.observableArray.fn[o].apply(e.observableArray(t),arguments)}finally{i.pause=!1}return n.notifySubscribers(t),r}})})}function Awe(e,t){if(!e)return null;var n=mwe(e,!1);return n&&n[t]||null}function APt(e,t){var n=Awe(e,t);n&&n.valueHasMutated()}function pPt(e){e.track=hwe,e.getObservable=Awe,e.valueHasMutated=APt,e.defineProperty=lPt}var Y3={attachToKo:pPt};var pwe="http://www.w3.org/2000/svg",gwe="cesium-svgPath-svg",gPt={register:function(e){e.bindingHandlers.cesiumSvgPath={init:function(t,n){let i=document.createElementNS(pwe,"svg:svg");i.setAttribute("class",gwe);let o=document.createElementNS(pwe,"path");return i.appendChild(o),e.virtualElements.setDomNodeChildren(t,[i]),e.computed({read:function(){let r=e.unwrap(n());o.setAttribute("d",e.unwrap(r.path));let s=e.unwrap(r.width),a=e.unwrap(r.height);i.setAttribute("width",s),i.setAttribute("height",a),i.setAttribute("viewBox",`0 0 ${s} ${a}`),r.css&&i.setAttribute("class",`${gwe} ${e.unwrap(r.css)}`)},disposeWhenNodeIsRemoved:t}),{controlsDescendantBindings:!0}}},e.virtualElements.allowedBindings.cesiumSvgPath=!0}},q3=gPt;Y3.attachToKo(vx);q3.register(vx);var Ie=vx;function K3(e){l(e)||(e=new Xh),this._clock=e,this._eventHelper=new Dr,this._eventHelper.add(e.onTick,this.synchronize,this),this.systemTime=Ie.observable(K.now()),this.systemTime.equalityComparer=K.equals,this.startTime=Ie.observable(e.startTime),this.startTime.equalityComparer=K.equals,this.startTime.subscribe(function(t){e.startTime=t,this.synchronize()},this),this.stopTime=Ie.observable(e.stopTime),this.stopTime.equalityComparer=K.equals,this.stopTime.subscribe(function(t){e.stopTime=t,this.synchronize()},this),this.currentTime=Ie.observable(e.currentTime),this.currentTime.equalityComparer=K.equals,this.currentTime.subscribe(function(t){e.currentTime=t,this.synchronize()},this),this.multiplier=Ie.observable(e.multiplier),this.multiplier.subscribe(function(t){e.multiplier=t,this.synchronize()},this),this.clockStep=Ie.observable(e.clockStep),this.clockStep.subscribe(function(t){e.clockStep=t,this.synchronize()},this),this.clockRange=Ie.observable(e.clockRange),this.clockRange.subscribe(function(t){e.clockRange=t,this.synchronize()},this),this.canAnimate=Ie.observable(e.canAnimate),this.canAnimate.subscribe(function(t){e.canAnimate=t,this.synchronize()},this),this.shouldAnimate=Ie.observable(e.shouldAnimate),this.shouldAnimate.subscribe(function(t){e.shouldAnimate=t,this.synchronize()},this),Ie.track(this,["systemTime","startTime","stopTime","currentTime","multiplier","clockStep","clockRange","canAnimate","shouldAnimate"])}Object.defineProperties(K3.prototype,{clock:{get:function(){return this._clock}}});K3.prototype.synchronize=function(){let e=this._clock;this.systemTime=K.now(),this.startTime=e.startTime,this.stopTime=e.stopTime,this.currentTime=e.currentTime,this.multiplier=e.multiplier,this.clockStep=e.clockStep,this.clockRange=e.clockRange,this.canAnimate=e.canAnimate,this.shouldAnimate=e.shouldAnimate};K3.prototype.isDestroyed=function(){return!1};K3.prototype.destroy=function(){this._eventHelper.removeAll(),ue(this)};var X3=K3;function _Pt(){this.canExecute=void 0,this.beforeExecute=void 0,this.afterExecute=void 0,me.throwInstantiationError()}var Yee=_Pt;var oB={};oB.createCheckbox=function(e,t,n){let i=document.createElement("div"),o=document.createElement("label"),r=document.createElement("input");r.type="checkbox";let s=`checked: ${t}`;return l(n)&&(s+=`, enable: ${n}`),r.setAttribute("data-bind",s),o.appendChild(r),o.appendChild(document.createTextNode(e)),i.appendChild(o),i};oB.createSection=function(e,t,n,i){let o=document.createElement("div");o.className="cesium-cesiumInspector-section",o.setAttribute("data-bind",`css: { "cesium-cesiumInspector-section-collapsed": !${n} }`),e.appendChild(o);let r=document.createElement("h3");r.className="cesium-cesiumInspector-sectionHeader",r.appendChild(document.createTextNode(t)),r.setAttribute("data-bind",`click: ${i}`),o.appendChild(r);let s=document.createElement("div");return s.className="cesium-cesiumInspector-sectionContent",o.appendChild(s),s};oB.createRangeInput=function(e,t,n,i,o,r){r=r??t;let s=document.createElement("input");s.setAttribute("data-bind",`value: ${r}`),s.type="number";let a=document.createElement("input");a.type="range",a.min=n,a.max=i,a.step=o??"any",a.setAttribute("data-bind",`valueUpdate: "input", value: ${t}`);let c=document.createElement("div");c.appendChild(a);let u=document.createElement("div");return u.className="cesium-cesiumInspector-slider",u.appendChild(document.createTextNode(e)),u.appendChild(s),u.appendChild(c),u};oB.createRangeInputWithDynamicMinMax=function(e,t,n,i){i=i??t;let o=document.createElement("input");o.setAttribute("data-bind",`value: ${i}`),o.type="number";let r=document.createElement("input");r.type="range",r.step=n??"any",r.setAttribute("data-bind",`valueUpdate: "input", value: ${t}, attr: { min: ${t}Min, max: ${t}Max }`);let s=document.createElement("div");s.appendChild(r);let a=document.createElement("div");return a.className="cesium-cesiumInspector-slider",a.appendChild(document.createTextNode(e)),a.appendChild(o),a.appendChild(s),a};oB.createButton=function(e,t,n){let i=document.createElement("button");i.type="button",i.textContent=e,i.className="cesium-cesiumInspector-pickButton";let o=`click: ${t}`;return l(n)&&(o+=`, css: {"cesium-cesiumInspector-pickButtonHighlight" : ${n}}`),i.setAttribute("data-bind",o),i};var Mu=oB;function _we(e,t){this._command=e,t=t??V.EMPTY_OBJECT,this.toggled=t.toggled??!1,this.tooltip=t.tooltip??"",Ie.track(this,["toggled","tooltip"])}Object.defineProperties(_we.prototype,{command:{get:function(){return this._command}}});var MC=_we;function yPt(e,t){t=t??!0;let n=new _e,i=new _e;function o(){let r={args:arguments,cancel:!1},s;return n.raiseEvent(r),r.cancel||(s=e.apply(null,arguments),i.raiseEvent(s)),s}return o.canExecute=t,Ie.track(o,["canExecute"]),Object.defineProperties(o,{beforeExecute:{value:n},afterExecute:{value:i}}),o}var Rn=yPt;function CPt(e,t,n,i,o){return n.call(i,e[t]),Ie.getObservable(e,t).subscribe(n,i,o)}var tc=CPt;var Px="http://www.w3.org/2000/svg",Ewe="http://www.w3.org/1999/xlink",P5,J3=G.fromCssColorString("rgba(247,250,255,0.384)"),R5=G.fromCssColorString("rgba(143,191,255,0.216)"),qee=G.fromCssColorString("rgba(153,197,255,0.098)"),M5=G.fromCssColorString("rgba(255,255,255,0.086)"),EPt=G.fromCssColorString("rgba(255,255,255,0.267)"),IPt=G.fromCssColorString("rgba(255,255,255,0)"),ywe=G.fromCssColorString("rgba(66,67,68,0.3)"),Cwe=G.fromCssColorString("rgba(0,0,0,0.5)");function NC(e){return G.fromCssColorString(window.getComputedStyle(e).getPropertyValue("color"))}var Z3={animation_pathReset:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.316,5.318,9.833,13.682,9.833,5.5,5.5,5.5,5.5,25.5,9.833,25.5,9.833,17.318,24.316,25.682z"},animation_pathPause:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M13,5.5,7.5,5.5,7.5,25.5,13,25.5zM24.5,5.5,19,5.5,19,25.5,24.5,25.5z"},animation_pathPlay:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathPlayReverse:{tagName:"path",transform:"translate(16,16) scale(-0.85,0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathLoop:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.249,15.499c-0.009,4.832-3.918,8.741-8.75,8.75c-2.515,0-4.768-1.064-6.365-2.763l2.068-1.442l-7.901-3.703l0.744,8.694l2.193-1.529c2.244,2.594,5.562,4.242,9.26,4.242c6.767,0,12.249-5.482,12.249-12.249H24.249zM15.499,6.75c2.516,0,4.769,1.065,6.367,2.764l-2.068,1.443l7.901,3.701l-0.746-8.693l-2.192,1.529c-2.245-2.594-5.562-4.245-9.262-4.245C8.734,3.25,3.25,8.734,3.249,15.499H6.75C6.758,10.668,10.668,6.758,15.499,6.75z"},animation_pathClock:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-15.5)",d:"M15.5,2.374C8.251,2.375,2.376,8.251,2.374,15.5C2.376,22.748,8.251,28.623,15.5,28.627c7.249-0.004,13.124-5.879,13.125-13.127C28.624,8.251,22.749,2.375,15.5,2.374zM15.5,25.623C9.909,25.615,5.385,21.09,5.375,15.5C5.385,9.909,9.909,5.384,15.5,5.374c5.59,0.01,10.115,4.535,10.124,10.125C25.615,21.09,21.091,25.615,15.5,25.623zM8.625,15.5c-0.001-0.552-0.448-0.999-1.001-1c-0.553,0-1,0.448-1,1c0,0.553,0.449,1,1,1C8.176,16.5,8.624,16.053,8.625,15.5zM8.179,18.572c-0.478,0.277-0.642,0.889-0.365,1.367c0.275,0.479,0.889,0.641,1.365,0.365c0.479-0.275,0.643-0.887,0.367-1.367C9.27,18.461,8.658,18.297,8.179,18.572zM9.18,10.696c-0.479-0.276-1.09-0.112-1.366,0.366s-0.111,1.09,0.365,1.366c0.479,0.276,1.09,0.113,1.367-0.366C9.821,11.584,9.657,10.973,9.18,10.696zM22.822,12.428c0.478-0.275,0.643-0.888,0.366-1.366c-0.275-0.478-0.89-0.642-1.366-0.366c-0.479,0.278-0.642,0.89-0.366,1.367C21.732,12.54,22.344,12.705,22.822,12.428zM12.062,21.455c-0.478-0.275-1.089-0.111-1.366,0.367c-0.275,0.479-0.111,1.09,0.366,1.365c0.478,0.277,1.091,0.111,1.365-0.365C12.704,22.344,12.54,21.732,12.062,21.455zM12.062,9.545c0.479-0.276,0.642-0.888,0.366-1.366c-0.276-0.478-0.888-0.642-1.366-0.366s-0.642,0.888-0.366,1.366C10.973,9.658,11.584,9.822,12.062,9.545zM22.823,18.572c-0.48-0.275-1.092-0.111-1.367,0.365c-0.275,0.479-0.112,1.092,0.367,1.367c0.477,0.275,1.089,0.113,1.365-0.365C23.464,19.461,23.3,18.848,22.823,18.572zM19.938,7.813c-0.477-0.276-1.091-0.111-1.365,0.366c-0.275,0.48-0.111,1.091,0.366,1.367s1.089,0.112,1.366-0.366C20.581,8.702,20.418,8.089,19.938,7.813zM23.378,14.5c-0.554,0.002-1.001,0.45-1.001,1c0.001,0.552,0.448,1,1.001,1c0.551,0,1-0.447,1-1C24.378,14.949,23.929,14.5,23.378,14.5zM15.501,6.624c-0.552,0-1,0.448-1,1l-0.466,7.343l-3.004,1.96c-0.478,0.277-0.642,0.889-0.365,1.365c0.275,0.479,0.889,0.643,1.365,0.367l3.305-1.676C15.39,16.99,15.444,17,15.501,17c0.828,0,1.5-0.671,1.5-1.5l-0.5-7.876C16.501,7.072,16.053,6.624,15.501,6.624zM15.501,22.377c-0.552,0-1,0.447-1,1s0.448,1,1,1s1-0.447,1-1S16.053,22.377,15.501,22.377zM18.939,21.455c-0.479,0.277-0.643,0.889-0.366,1.367c0.275,0.477,0.888,0.643,1.366,0.365c0.478-0.275,0.642-0.889,0.366-1.365C20.028,21.344,19.417,21.18,18.939,21.455z"},animation_pathWingButton:{tagName:"path",d:"m 4.5,0.5 c -2.216,0 -4,1.784 -4,4 l 0,24 c 0,2.216 1.784,4 4,4 l 13.71875,0 C 22.478584,27.272785 27.273681,22.511272 32.5,18.25 l 0,-13.75 c 0,-2.216 -1.784,-4 -4,-4 l -24,0 z"},animation_pathPointer:{tagName:"path",d:"M-15,-65,-15,-55,15,-55,15,-65,0,-95z"},animation_pathSwooshFX:{tagName:"path",d:"m 85,0 c 0,16.617 -4.813944,35.356 -13.131081,48.4508 h 6.099803 c 8.317138,-13.0948 13.13322,-28.5955 13.13322,-45.2124 0,-46.94483 -38.402714,-85.00262 -85.7743869,-85.00262 -1.0218522,0 -2.0373001,0.0241 -3.0506131,0.0589 45.958443,1.59437 82.723058,35.77285 82.723058,81.70532 z"}};function Dm(e){let t=document.createElementNS(Px,e.tagName);for(let n in e)if(e.hasOwnProperty(n)&&n!=="tagName")if(n==="children"){let i=e.children.length;for(let o=0;o<i;++o)t.appendChild(Dm(e.children[o]))}else n.indexOf("xlink:")===0?t.setAttributeNS(Ewe,n.substring(6),e[n]):n==="textContent"?t.textContent=e[n]:t.setAttribute(n,e[n]);return t}function Kee(e,t,n){let i=document.createElementNS(Px,"text");i.setAttribute("x",e),i.setAttribute("y",t),i.setAttribute("class","cesium-animation-svgText");let o=document.createElementNS(Px,"tspan");return o.textContent=n,i.appendChild(o),i}function xPt(e,t,n){e.setAttribute("transform",`translate(100,100) rotate(${n})`),t.setAttribute("transform",`rotate(${n})`)}var N5=new G;function Bs(e,t){let n=t.alpha,i=1-n;return N5.red=e.red*i+t.red*n,N5.green=e.green*i+t.green*n,N5.blue=e.blue*i+t.blue*n,N5.toCssColorString()}function Xee(e,t,n){let i=Z3[n],o={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${e},${t})`,children:[{tagName:"rect",class:"cesium-animation-buttonGlow",width:32,height:32,rx:2,ry:2},{tagName:"rect",class:"cesium-animation-buttonMain",width:32,height:32,rx:4,ry:4},{class:"cesium-animation-buttonPath",id:n,tagName:i.tagName,transform:i.transform,d:i.d},{tagName:"title",textContent:""}]};return Dm(o)}function bPt(e,t,n){let i=Z3[n],o=Z3.animation_pathWingButton,r={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${e},${t})`,children:[{class:"cesium-animation-buttonGlow",id:"animation_pathWingButton",tagName:o.tagName,d:o.d},{class:"cesium-animation-buttonMain",id:"animation_pathWingButton",tagName:o.tagName,d:o.d},{class:"cesium-animation-buttonPath",id:n,tagName:i.tagName,transform:i.transform,d:i.d},{tagName:"title",textContent:""}]};return Dm(r)}function TPt(e,t){let n=e._viewModel,i=n.shuttleRingDragging;if(!(i&&P5!==e))if(t.type==="mousedown"||i&&t.type==="mousemove"||t.type==="touchstart"&&t.touches.length===1||i&&t.type==="touchmove"&&t.touches.length===1){let o=e._centerX,r=e._centerY,a=e._svgNode.getBoundingClientRect(),c,u;if(t.type==="touchstart"||t.type==="touchmove"?(c=t.touches[0].clientX,u=t.touches[0].clientY):(c=t.clientX,u=t.clientY),!i&&(c>a.right||c<a.left||u<a.top||u>a.bottom))return;let f=e._shuttleRingPointer.getBoundingClientRect(),h=c-o-a.left,A=u-r-a.top,g=Math.atan2(A,h)*180/Math.PI+90;g>180&&(g-=360);let m=n.shuttleRingAngle;i||c<f.right&&c>f.left&&u>f.top&&u<f.bottom?(P5=e,n.shuttleRingDragging=!0,n.shuttleRingAngle=g):g<m?n.slower():g>m&&n.faster(),t.preventDefault()}else e===P5&&(P5=void 0),n.shuttleRingDragging=!1}function f_(e,t){this._viewModel=t,this.svgElement=e,this._enabled=void 0,this._toggled=void 0;let n=this;this._clickFunction=function(){let i=n._viewModel.command;i.canExecute&&i()},e.addEventListener("click",this._clickFunction,!0),this._subscriptions=[tc(t,"toggled",this.setToggled,this),tc(t,"tooltip",this.setTooltip,this),tc(t.command,"canExecute",this.setEnabled,this)]}f_.prototype.destroy=function(){this.svgElement.removeEventListener("click",this._clickFunction,!0);let e=this._subscriptions;for(let t=0,n=e.length;t<n;t++)e[t].dispose();ue(this)};f_.prototype.isDestroyed=function(){return!1};f_.prototype.setEnabled=function(e){if(this._enabled!==e){if(this._enabled=e,!e){this.svgElement.setAttribute("class","cesium-animation-buttonDisabled");return}if(this._toggled){this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled");return}this.svgElement.setAttribute("class","cesium-animation-rectButton")}};f_.prototype.setToggled=function(e){this._toggled!==e&&(this._toggled=e,this._enabled&&(e?this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled"):this.svgElement.setAttribute("class","cesium-animation-rectButton")))};f_.prototype.setTooltip=function(e){this.svgElement.getElementsByTagName("title")[0].textContent=e};function rB(e,t){e=kn(e),this._viewModel=t,this._container=e,this._centerX=0,this._centerY=0,this._defsElement=void 0,this._svgNode=void 0,this._topG=void 0,this._lastHeight=void 0,this._lastWidth=void 0;let n=e.ownerDocument,i=document.createElement("style");i.textContent=".cesium-animation-rectButton .cesium-animation-buttonGlow { filter: url(#animation_blurred); }.cesium-animation-rectButton .cesium-animation-buttonMain { fill: url(#animation_buttonNormal); }.cesium-animation-buttonToggled .cesium-animation-buttonMain { fill: url(#animation_buttonToggled); }.cesium-animation-rectButton:hover .cesium-animation-buttonMain { fill: url(#animation_buttonHovered); }.cesium-animation-buttonDisabled .cesium-animation-buttonMain { fill: url(#animation_buttonDisabled); }.cesium-animation-shuttleRingG .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshGradient); }.cesium-animation-shuttleRingG:hover .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshHovered); }.cesium-animation-shuttleRingPointer { fill: url(#animation_shuttleRingPointerGradient); }.cesium-animation-shuttleRingPausePointer { fill: url(#animation_shuttleRingPointerPaused); }.cesium-animation-knobOuter { fill: url(#animation_knobOuter); }.cesium-animation-knobInner { fill: url(#animation_knobInner); }",n.head.insertBefore(i,n.head.childNodes[0]);let o=document.createElement("div");o.className="cesium-animation-theme",o.innerHTML='<div class="cesium-animation-themeNormal"></div><div class="cesium-animation-themeHover"></div><div class="cesium-animation-themeSelect"></div><div class="cesium-animation-themeDisabled"></div><div class="cesium-animation-themeKnob"></div><div class="cesium-animation-themePointer"></div><div class="cesium-animation-themeSwoosh"></div><div class="cesium-animation-themeSwooshHover"></div>',this._theme=o,this._themeNormal=o.childNodes[0],this._themeHover=o.childNodes[1],this._themeSelect=o.childNodes[2],this._themeDisabled=o.childNodes[3],this._themeKnob=o.childNodes[4],this._themePointer=o.childNodes[5],this._themeSwoosh=o.childNodes[6],this._themeSwooshHover=o.childNodes[7];let r=document.createElementNS(Px,"svg:svg");this._svgNode=r,r.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",Ewe);let s=document.createElementNS(Px,"g");this._topG=s,this._realtimeSVG=new f_(bPt(3,4,"animation_pathClock"),t.playRealtimeViewModel),this._playReverseSVG=new f_(Xee(44,99,"animation_pathPlayReverse"),t.playReverseViewModel),this._playForwardSVG=new f_(Xee(124,99,"animation_pathPlay"),t.playForwardViewModel),this._pauseSVG=new f_(Xee(84,99,"animation_pathPause"),t.pauseViewModel);let a=document.createElementNS(Px,"g");a.appendChild(this._realtimeSVG.svgElement),a.appendChild(this._playReverseSVG.svgElement),a.appendChild(this._playForwardSVG.svgElement),a.appendChild(this._pauseSVG.svgElement);let c=Dm({tagName:"circle",class:"cesium-animation-shuttleRingBack",cx:100,cy:100,r:99});this._shuttleRingBackPanel=c;let u=Z3.animation_pathSwooshFX,f=Z3.animation_pathPointer,h=Dm({tagName:"g",class:"cesium-animation-shuttleRingSwoosh",children:[{tagName:u.tagName,transform:"translate(100,97) scale(-1,1)",id:"animation_pathSwooshFX",d:u.d},{tagName:u.tagName,transform:"translate(100,97)",id:"animation_pathSwooshFX",d:u.d},{tagName:"line",x1:100,y1:8,x2:100,y2:22}]});this._shuttleRingSwooshG=h,this._shuttleRingPointer=Dm({class:"cesium-animation-shuttleRingPointer",id:"animation_pathPointer",tagName:f.tagName,d:f.d});let A=Dm({tagName:"g",transform:"translate(100,100)"});this._knobOuter=Dm({tagName:"circle",class:"cesium-animation-knobOuter",cx:0,cy:0,r:71});let g=61,m=Dm({tagName:"circle",class:"cesium-animation-knobInner",cx:0,cy:0,r:g});this._knobDate=Kee(0,-24,""),this._knobTime=Kee(0,-7,""),this._knobStatus=Kee(0,-41,"");let _=Dm({tagName:"circle",class:"cesium-animation-blank",cx:0,cy:0,r:g}),y=document.createElementNS(Px,"g");y.setAttribute("class","cesium-animation-shuttleRingG"),e.appendChild(o),s.appendChild(y),s.appendChild(A),s.appendChild(a),y.appendChild(c),y.appendChild(h),y.appendChild(this._shuttleRingPointer),A.appendChild(this._knobOuter),A.appendChild(m),A.appendChild(this._knobDate),A.appendChild(this._knobTime),A.appendChild(this._knobStatus),A.appendChild(_),r.appendChild(s),e.appendChild(r);let C=this;function E(v){TPt(C,v)}this._mouseCallback=E,c.addEventListener("mousedown",E,!0),c.addEventListener("touchstart",E,!0),h.addEventListener("mousedown",E,!0),h.addEventListener("touchstart",E,!0),n.addEventListener("mousemove",E,!0),n.addEventListener("touchmove",E,!0),n.addEventListener("mouseup",E,!0),n.addEventListener("touchend",E,!0),n.addEventListener("touchcancel",E,!0),this._shuttleRingPointer.addEventListener("mousedown",E,!0),this._shuttleRingPointer.addEventListener("touchstart",E,!0),this._knobOuter.addEventListener("mousedown",E,!0),this._knobOuter.addEventListener("touchstart",E,!0);let I=this._knobTime.childNodes[0],b=this._knobDate.childNodes[0],S=this._knobStatus.childNodes[0],B;this._subscriptions=[tc(t.pauseViewModel,"toggled",function(v){B!==v&&(B=v,B?C._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPausePointer"):C._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPointer"))}),tc(t,"shuttleRingAngle",function(v){xPt(C._shuttleRingPointer,C._knobOuter,v)}),tc(t,"dateLabel",function(v){b.textContent!==v&&(b.textContent=v)}),tc(t,"timeLabel",function(v){I.textContent!==v&&(I.textContent=v)}),tc(t,"multiplierLabel",function(v){S.textContent!==v&&(S.textContent=v)})],this.applyThemeChanges(),this.resize()}Object.defineProperties(rB.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});rB.prototype.isDestroyed=function(){return!1};rB.prototype.destroy=function(){l(this._observer)&&(this._observer.disconnect(),this._observer=void 0);let e=this._container.ownerDocument,t=this._mouseCallback;this._shuttleRingBackPanel.removeEventListener("mousedown",t,!0),this._shuttleRingBackPanel.removeEventListener("touchstart",t,!0),this._shuttleRingSwooshG.removeEventListener("mousedown",t,!0),this._shuttleRingSwooshG.removeEventListener("touchstart",t,!0),e.removeEventListener("mousemove",t,!0),e.removeEventListener("touchmove",t,!0),e.removeEventListener("mouseup",t,!0),e.removeEventListener("touchend",t,!0),e.removeEventListener("touchcancel",t,!0),this._shuttleRingPointer.removeEventListener("mousedown",t,!0),this._shuttleRingPointer.removeEventListener("touchstart",t,!0),this._knobOuter.removeEventListener("mousedown",t,!0),this._knobOuter.removeEventListener("touchstart",t,!0),this._container.removeChild(this._svgNode),this._container.removeChild(this._theme),this._realtimeSVG.destroy(),this._playReverseSVG.destroy(),this._playForwardSVG.destroy(),this._pauseSVG.destroy();let n=this._subscriptions;for(let i=0,o=n.length;i<o;i++)n[i].dispose();return ue(this)};rB.prototype.resize=function(){let e=this._container.clientWidth,t=this._container.clientHeight;if(e===this._lastWidth&&t===this._lastHeight)return;let n=this._svgNode,i=200,o=132,r=e,s=t;e===0&&t===0?(r=i,s=o):e===0?(s=t,r=i*(t/o)):t===0&&(r=e,s=o*(e/i));let a=r/i,c=s/o;n.style.cssText=`width: ${r}px; height: ${s}px; position: absolute; bottom: 0; left: 0; overflow: hidden;`,n.setAttribute("width",r),n.setAttribute("height",s),n.setAttribute("viewBox",`0 0 ${r} ${s}`),this._topG.setAttribute("transform",`scale(${a},${c})`),this._centerX=Math.max(1,100*a),this._centerY=Math.max(1,100*c),this._lastHeight=e,this._lastWidth=t};rB.prototype.applyThemeChanges=function(){let e=this._container.ownerDocument;if(!e.body.contains(this._container)){if(l(this._observer))return;let f=this;f._observer=new MutationObserver(function(){e.body.contains(f._container)&&(f._observer.disconnect(),f._observer=void 0,f.applyThemeChanges())}),f._observer.observe(e,{childList:!0,subtree:!0});return}let t=NC(this._themeNormal),n=NC(this._themeHover),i=NC(this._themeSelect),o=NC(this._themeDisabled),r=NC(this._themeKnob),s=NC(this._themePointer),a=NC(this._themeSwoosh),c=NC(this._themeSwooshHover),u=Dm({tagName:"defs",children:[{id:"animation_buttonNormal",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Bs(t,J3)},{tagName:"stop",offset:"12%","stop-color":Bs(t,R5)},{tagName:"stop",offset:"46%","stop-color":Bs(t,qee)},{tagName:"stop",offset:"81%","stop-color":Bs(t,M5)}]},{id:"animation_buttonHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Bs(n,J3)},{tagName:"stop",offset:"12%","stop-color":Bs(n,R5)},{tagName:"stop",offset:"46%","stop-color":Bs(n,qee)},{tagName:"stop",offset:"81%","stop-color":Bs(n,M5)}]},{id:"animation_buttonToggled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Bs(i,J3)},{tagName:"stop",offset:"12%","stop-color":Bs(i,R5)},{tagName:"stop",offset:"46%","stop-color":Bs(i,qee)},{tagName:"stop",offset:"81%","stop-color":Bs(i,M5)}]},{id:"animation_buttonDisabled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":Bs(o,EPt)},{tagName:"stop",offset:"75%","stop-color":Bs(o,IPt)}]},{id:"animation_blurred",tagName:"filter",width:"200%",height:"200%",x:"-50%",y:"-50%",children:[{tagName:"feGaussianBlur",stdDeviation:4,in:"SourceGraphic"}]},{id:"animation_shuttleRingSwooshGradient",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":a.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":a.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":a.toCssColorString()}]},{id:"animation_shuttleRingSwooshHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":c.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":c.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":c.toCssColorString()}]},{id:"animation_shuttleRingPointerGradient",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":s.toCssColorString()},{tagName:"stop",offset:"40%","stop-color":s.toCssColorString()},{tagName:"stop",offset:"60%","stop-color":Bs(s,Cwe)},{tagName:"stop",offset:"100%","stop-color":Bs(s,Cwe)}]},{id:"animation_shuttleRingPointerPaused",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":"#CCC"},{tagName:"stop",offset:"40%","stop-color":"#CCC"},{tagName:"stop",offset:"60%","stop-color":"#555"},{tagName:"stop",offset:"100%","stop-color":"#555"}]},{id:"animation_knobOuter",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":Bs(r,J3)},{tagName:"stop",offset:"60%","stop-color":Bs(r,ywe)},{tagName:"stop",offset:"85%","stop-color":Bs(r,R5)}]},{id:"animation_knobInner",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":Bs(r,ywe)},{tagName:"stop",offset:"60%","stop-color":Bs(r,J3)},{tagName:"stop",offset:"85%","stop-color":Bs(r,M5)}]}]});l(this._defsElement)?this._svgNode.replaceChild(u,this._defsElement):this._svgNode.appendChild(u),this._defsElement=u};var $3=rB;var SPt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],LC=15,sB=105;function Iwe(e,t){return e-t}function Jee(e,t){let n=Wo(t,e,Iwe);return n<0?~n:n}function wPt(e,t){if(Math.abs(e)<=LC)return e/LC;let n=LC,i=sB,o,r=0,s;return e>0?(o=Math.log(t[t.length-1]),s=(o-r)/(i-n),Math.exp(r+s*(e-n))):(o=Math.log(-t[0]),s=(o-r)/(i-n),-Math.exp(r+s*(Math.abs(e)-n)))}function BPt(e,t,n){if(n.clockStep===wo.SYSTEM_CLOCK)return LC;if(Math.abs(e)<=1)return e*LC;let i=t[t.length-1];e>i?e=i:e<-i&&(e=-i);let o=LC,r=sB,s,a=0,c;return e>0?(s=Math.log(i),c=(s-a)/(r-o),(Math.log(e)-a)/c+o):(s=Math.log(-t[0]),c=(s-a)/(r-o),-((Math.log(Math.abs(e))-a)/c+o))}function Xd(e){let t=this;this._clockViewModel=e,this._allShuttleRingTicks=[],this._dateFormatter=Xd.defaultDateFormatter,this._timeFormatter=Xd.defaultTimeFormatter,this.shuttleRingDragging=!1,this.snapToTicks=!1,Ie.track(this,["_allShuttleRingTicks","_dateFormatter","_timeFormatter","shuttleRingDragging","snapToTicks"]),this._sortedFilteredPositiveTicks=[],this.setShuttleRingTicks(Xd.defaultTicks),this.timeLabel=void 0,Ie.defineProperty(this,"timeLabel",function(){return t._timeFormatter(t._clockViewModel.currentTime,t)}),this.dateLabel=void 0,Ie.defineProperty(this,"dateLabel",function(){return t._dateFormatter(t._clockViewModel.currentTime,t)}),this.multiplierLabel=void 0,Ie.defineProperty(this,"multiplierLabel",function(){let s=t._clockViewModel;if(s.clockStep===wo.SYSTEM_CLOCK)return"Today";let a=s.multiplier;return a%1===0?`${a.toFixed(0)}x`:`${a.toFixed(3).replace(/0{0,3}$/,"")}x`}),this.shuttleRingAngle=void 0,Ie.defineProperty(this,"shuttleRingAngle",{get:function(){return BPt(e.multiplier,t._allShuttleRingTicks,e)},set:function(s){s=Math.max(Math.min(s,sB),-sB);let a=t._allShuttleRingTicks,c=t._clockViewModel;if(c.clockStep=wo.SYSTEM_CLOCK_MULTIPLIER,Math.abs(s)===sB){c.multiplier=s>0?a[a.length-1]:a[0];return}let u=wPt(s,a);if(t.snapToTicks)u=a[Jee(u,a)];else if(u!==0){let f=Math.abs(u);if(f>100){let h=f.toFixed(0).length-2,A=Math.pow(10,h);u=Math.round(u/A)*A|0}else f>LC?u=Math.round(u):f>1?u=+u.toFixed(1):f>0&&(u=+u.toFixed(2))}c.multiplier=u}}),this._canAnimate=void 0,Ie.defineProperty(this,"_canAnimate",function(){let s=t._clockViewModel,a=s.clockRange;if(t.shuttleRingDragging||a===fs.UNBOUNDED)return!0;let c=s.multiplier,u=s.currentTime,f=s.startTime,h=!1;if(a===fs.LOOP_STOP)h=K.greaterThan(u,f)||u.equals(f)&&c>0;else{let A=s.stopTime;h=K.greaterThan(u,f)&&K.lessThan(u,A)||u.equals(f)&&c>0||u.equals(A)&&c<0}return h||(s.shouldAnimate=!1),h}),this._isSystemTimeAvailable=void 0,Ie.defineProperty(this,"_isSystemTimeAvailable",function(){let s=t._clockViewModel;if(s.clockRange===fs.UNBOUNDED)return!0;let c=s.systemTime;return K.greaterThanOrEquals(c,s.startTime)&&K.lessThanOrEquals(c,s.stopTime)}),this._isAnimating=void 0,Ie.defineProperty(this,"_isAnimating",function(){return t._clockViewModel.shouldAnimate&&(t._canAnimate||t.shuttleRingDragging)});let n=Rn(function(){let s=t._clockViewModel;s.shouldAnimate?s.shouldAnimate=!1:t._canAnimate&&(s.shouldAnimate=!0)});this._pauseViewModel=new MC(n,{toggled:Ie.computed(function(){return!t._isAnimating}),tooltip:"Pause"});let i=Rn(function(){let s=t._clockViewModel,a=s.multiplier;a>0&&(s.multiplier=-a),s.shouldAnimate=!0});this._playReverseViewModel=new MC(i,{toggled:Ie.computed(function(){return t._isAnimating&&e.multiplier<0}),tooltip:"Play Reverse"});let o=Rn(function(){let s=t._clockViewModel,a=s.multiplier;a<0&&(s.multiplier=-a),s.shouldAnimate=!0});this._playForwardViewModel=new MC(o,{toggled:Ie.computed(function(){return t._isAnimating&&e.multiplier>0&&e.clockStep!==wo.SYSTEM_CLOCK}),tooltip:"Play Forward"});let r=Rn(function(){t._clockViewModel.clockStep=wo.SYSTEM_CLOCK},Ie.getObservable(this,"_isSystemTimeAvailable"));this._playRealtimeViewModel=new MC(r,{toggled:Ie.computed(function(){return e.clockStep===wo.SYSTEM_CLOCK}),tooltip:Ie.computed(function(){return t._isSystemTimeAvailable?"Today (real-time)":"Current time not in range"})}),this._slower=Rn(function(){let s=t._clockViewModel,a=t._allShuttleRingTicks,c=s.multiplier,u=Jee(c,a)-1;u>=0&&(s.multiplier=a[u])}),this._faster=Rn(function(){let s=t._clockViewModel,a=t._allShuttleRingTicks,c=s.multiplier,u=Jee(c,a)+1;u<a.length&&(s.multiplier=a[u])})}Xd.defaultDateFormatter=function(e,t){let n=K.toGregorianDate(e);return`${SPt[n.month-1]} ${n.day} ${n.year}`};Xd.defaultTicks=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800];Xd.defaultTimeFormatter=function(e,t){let n=K.toGregorianDate(e),i=Math.round(n.millisecond);return Math.abs(t._clockViewModel.multiplier)<1?`${n.hour.toString().padStart(2,"0")}:${n.minute.toString().padStart(2,"0")}:${n.second.toString().padStart(2,"0")}.${i.toString().padStart(3,"0")}`:`${n.hour.toString().padStart(2,"0")}:${n.minute.toString().padStart(2,"0")}:${n.second.toString().padStart(2,"0")} UTC`};Xd.prototype.getShuttleRingTicks=function(){return this._sortedFilteredPositiveTicks.slice(0)};Xd.prototype.setShuttleRingTicks=function(e){let t,n,i,o={},r=this._sortedFilteredPositiveTicks;for(r.length=0,t=0,n=e.length;t<n;++t)i=e[t],o.hasOwnProperty(i)||(o[i]=!0,r.push(i));r.sort(Iwe);let s=[];for(n=r.length,t=n-1;t>=0;--t)i=r[t],i!==0&&s.push(-i);si(s,r),this._allShuttleRingTicks=s};Object.defineProperties(Xd.prototype,{slower:{get:function(){return this._slower}},faster:{get:function(){return this._faster}},clockViewModel:{get:function(){return this._clockViewModel}},pauseViewModel:{get:function(){return this._pauseViewModel}},playReverseViewModel:{get:function(){return this._playReverseViewModel}},playForwardViewModel:{get:function(){return this._playForwardViewModel}},playRealtimeViewModel:{get:function(){return this._playRealtimeViewModel}},dateFormatter:{get:function(){return this._dateFormatter},set:function(e){this._dateFormatter=e}},timeFormatter:{get:function(){return this._timeFormatter},set:function(e){this._timeFormatter=e}}});Xd._maxShuttleRingAngle=sB;Xd._realtimeShuttleRingAngle=LC;var eU=Xd;function xwe(e){e=e??V.EMPTY_OBJECT;let t=e.globe,n=e.imageryProviderViewModels??V.EMPTY_ARRAY,i=e.terrainProviderViewModels??V.EMPTY_ARRAY;this._globe=t,this.imageryProviderViewModels=n.slice(0),this.terrainProviderViewModels=i.slice(0),this.dropDownVisible=!1,Ie.track(this,["imageryProviderViewModels","terrainProviderViewModels","dropDownVisible"]);let o=Ie.getObservable(this,"imageryProviderViewModels"),r=Ie.pureComputed(function(){let h=o(),A={},g;for(g=0;g<h.length;g++){let y=h[g],C=y.category;l(A[C])?A[C].push(y):A[C]=[y]}let m=Object.keys(A),_=[];for(g=0;g<m.length;g++){let y=m[g];_.push({name:y,providers:A[y]})}return _});this._imageryProviders=r;let s=Ie.getObservable(this,"terrainProviderViewModels"),a=Ie.pureComputed(function(){let h=s(),A={},g;for(g=0;g<h.length;g++){let y=h[g],C=y.category;l(A[C])?A[C].push(y):A[C]=[y]}let m=Object.keys(A),_=[];for(g=0;g<m.length;g++){let y=m[g];_.push({name:y,providers:A[y]})}return _});this._terrainProviders=a,this.buttonTooltip=void 0,Ie.defineProperty(this,"buttonTooltip",function(){let h=this.selectedImagery,A=this.selectedTerrain,g=l(h)?h.name:void 0,m=l(A)?A.name:void 0;return l(g)&&l(m)?`${g} +${m}`:l(g)?g:m}),this.buttonImageUrl=void 0,Ie.defineProperty(this,"buttonImageUrl",function(){let h=this.selectedImagery;if(l(h))return h.iconUrl}),this.selectedImagery=void 0;let c=Ie.observable();this._currentImageryLayers=[],Ie.defineProperty(this,"selectedImagery",{get:function(){return c()},set:function(h){if(c()===h){this.dropDownVisible=!1;return}let A,g=this._currentImageryLayers,m=g.length,_=this._globe.imageryLayers,y=!1;for(A=0;A<m;A++){let C=_.length;for(let E=0;E<C;E++){let I=_.get(E);if(I===g[A]){_.remove(I),y=!0;break}}}if(l(h)){let C=h.creationCommand();if(Array.isArray(C)){let E=C.length;for(this._currentImageryLayers=[],A=E-1;A>=0;A--){let I=rs.fromProviderAsync(C[A]);_.add(I,0),this._currentImageryLayers.push(I)}}else{this._currentImageryLayers=[];let E=rs.fromProviderAsync(C);if(E.name=h.name,y)_.add(E,0);else{let I=_.get(0);l(I)&&_.remove(I),_.add(E,0)}this._currentImageryLayers.push(E)}}c(h),this.dropDownVisible=!1}}),this.selectedTerrain=void 0;let u=Ie.observable();Ie.defineProperty(this,"selectedTerrain",{get:function(){return u()},set:function(h){if(u()===h){this.dropDownVisible=!1;return}let A;if(l(h)&&(A=h.creationCommand()),l(A)&&!l(A.then))this._globe.depthTestAgainstTerrain=!(A instanceof DA),this._globe.terrainProvider=A;else if(l(A)){let g=!1,m=this._globe.terrainProviderChanged.addEventListener(()=>{g=!0,m()}),y=new z3(A).readyEvent.addEventListener(C=>{g||(this._globe.depthTestAgainstTerrain=!(C instanceof DA),this._globe.terrainProvider=C,y())})}u(h),this.dropDownVisible=!1}});let f=this;this._toggleDropDown=Rn(function(){f.dropDownVisible=!f.dropDownVisible}),this.selectedImagery=e.selectedImageryProviderViewModel??n[0],this.selectedTerrain=e.selectedTerrainProviderViewModel}Object.defineProperties(xwe.prototype,{toggleDropDown:{get:function(){return this._toggleDropDown}},globe:{get:function(){return this._globe}}});var tU=xwe;function L5(e,t){e=kn(e);let n=new tU(t),i=document.createElement("button");i.type="button",i.className="cesium-button cesium-toolbar-button",i.setAttribute("data-bind","attr: { title: buttonTooltip },click: toggleDropDown"),e.appendChild(i);let o=document.createElement("img");o.setAttribute("draggable","false"),o.className="cesium-baseLayerPicker-selected",o.setAttribute("data-bind","attr: { src: buttonImageUrl }, visible: !!buttonImageUrl"),i.appendChild(o);let r=document.createElement("div");r.className="cesium-baseLayerPicker-dropDown",r.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-dropDown-visible" : dropDownVisible }'),e.appendChild(r);let s=document.createElement("div");s.className="cesium-baseLayerPicker-sectionTitle",s.setAttribute("data-bind","visible: imageryProviderViewModels.length > 0"),s.innerHTML="Imagery",r.appendChild(s);let a=document.createElement("div");a.className="cesium-baseLayerPicker-section",a.setAttribute("data-bind","foreach: _imageryProviders"),r.appendChild(a);let c=document.createElement("div");c.className="cesium-baseLayerPicker-category",a.appendChild(c);let u=document.createElement("div");u.className="cesium-baseLayerPicker-categoryTitle",u.setAttribute("data-bind","text: name"),c.appendChild(u);let f=document.createElement("div");f.className="cesium-baseLayerPicker-choices",f.setAttribute("data-bind","foreach: providers"),c.appendChild(f);let h=document.createElement("div");h.className="cesium-baseLayerPicker-item",h.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedImagery },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedImagery = $data; }'),f.appendChild(h);let A=document.createElement("img");A.className="cesium-baseLayerPicker-itemIcon",A.setAttribute("data-bind","attr: { src: iconUrl }"),A.setAttribute("draggable","false"),h.appendChild(A);let g=document.createElement("div");g.className="cesium-baseLayerPicker-itemLabel",g.setAttribute("data-bind","text: name"),h.appendChild(g);let m=document.createElement("div");m.className="cesium-baseLayerPicker-sectionTitle",m.setAttribute("data-bind","visible: terrainProviderViewModels.length > 0"),m.innerHTML="Terrain",r.appendChild(m);let _=document.createElement("div");_.className="cesium-baseLayerPicker-section",_.setAttribute("data-bind","foreach: _terrainProviders"),r.appendChild(_);let y=document.createElement("div");y.className="cesium-baseLayerPicker-category",_.appendChild(y);let C=document.createElement("div");C.className="cesium-baseLayerPicker-categoryTitle",C.setAttribute("data-bind","text: name"),y.appendChild(C);let E=document.createElement("div");E.className="cesium-baseLayerPicker-choices",E.setAttribute("data-bind","foreach: providers"),y.appendChild(E);let I=document.createElement("div");I.className="cesium-baseLayerPicker-item",I.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedTerrain },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedTerrain = $data; }'),E.appendChild(I);let b=document.createElement("img");b.className="cesium-baseLayerPicker-itemIcon",b.setAttribute("data-bind","attr: { src: iconUrl }"),b.setAttribute("draggable","false"),I.appendChild(b);let S=document.createElement("div");S.className="cesium-baseLayerPicker-itemLabel",S.setAttribute("data-bind","text: name"),I.appendChild(S),Ie.applyBindings(n,i),Ie.applyBindings(n,r),this._viewModel=n,this._container=e,this._element=i,this._dropPanel=r,this._closeDropDown=function(B){i.contains(B.target)||r.contains(B.target)||(n.dropDownVisible=!1)},Wt.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(L5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});L5.prototype.isDestroyed=function(){return!1};L5.prototype.destroy=function(){return Wt.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),Ie.cleanNode(this._element),Ie.cleanNode(this._dropPanel),this._container.removeChild(this._element),this._container.removeChild(this._dropPanel),ue(this)};var nU=L5;function bwe(e){let t=e.creationFunction;l(t.canExecute)||(t=Rn(t)),this._creationCommand=t,this.name=e.name,this.tooltip=e.tooltip,this.iconUrl=e.iconUrl,this._category=e.category??"",Ie.track(this,["name","tooltip","iconUrl"])}Object.defineProperties(bwe.prototype,{creationCommand:{get:function(){return this._creationCommand}},category:{get:function(){return this._category}}});var Ds=bwe;function DPt(){let e=[],t=devicePixelRatio>=2;return e.push(new Ds({name:"Bing Maps Aerial",iconUrl:fn("Widgets/Images/ImageryProviders/bingAerial.png"),tooltip:"Bing Maps aerial imagery, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return Kp({style:qp.AERIAL})}})),e.push(new Ds({name:"Bing Maps Aerial with Labels",iconUrl:fn("Widgets/Images/ImageryProviders/bingAerialLabels.png"),tooltip:"Bing Maps aerial imagery with labels, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return Kp({style:qp.AERIAL_WITH_LABELS})}})),e.push(new Ds({name:"Bing Maps Roads",iconUrl:fn("Widgets/Images/ImageryProviders/bingRoads.png"),tooltip:"Bing Maps standard road maps, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return Kp({style:qp.ROAD})}})),e.push(new Ds({name:"ArcGIS World Imagery",iconUrl:fn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png"),tooltip:`ArcGIS World Imagery provides one meter or better satellite and aerial imagery in many parts of the world and lower resolution satellite imagery worldwide. The map includes 15m TerraColor imagery at small and mid-scales (~1:591M down to ~1:288k) for the world. The map features Maxar imagery at 0.3m resolution for select metropolitan areas around the world, 0.5m resolution across the United States and parts of Western Europe, and 1m resolution imagery across the rest of the world. In addition to commercial sources, the World Imagery map features high-resolution aerial photography contributed by the GIS User Community. This imagery ranges from 0.3m to 0.03m resolution (down to ~1:280 nin select communities). For more information on this map, including the terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=10df2279f9684e4a9f6a7f08febac2a9`,category:"Other",creationFunction:function(){return jp.fromBasemapType(Lh.SATELLITE,{enablePickFeatures:!1})}})),e.push(new Ds({name:"ArcGIS World Hillshade",iconUrl:fn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png"),tooltip:`ArcGIS World Hillshade map portrays elevation as an artistic hillshade. This map is designed to be used as a backdrop for topographical, soil, hydro, landcover or other outdoor recreational maps. The map was compiled from a variety of sources from several data providers. The basemap has global coverage down to a scale of ~1:72k. In select areas of the United States and Europe, coverage is available down to ~1:9k. For more information on this map, including the terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=1b243539f4514b6ba35e7d995890db1d`,category:"Other",creationFunction:function(){return jp.fromBasemapType(Lh.HILLSHADE,{enablePickFeatures:!1})}})),e.push(new Ds({name:"Esri World Ocean",iconUrl:fn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png"),tooltip:`ArcGIS World Ocean map is designed to be used as a base map by marine GIS professionals and as a reference map by anyone interested in ocean data. The base map features marine bathymetry. Land features include inland waters and roads overlaid on land cover and shaded relief imagery. The map was compiled from a variety of best available sources from several data providers, including General Bathymetric Chart of the Oceans GEBCO_08 Grid, National Oceanic and Atmospheric Administration (NOAA), and National Geographic, Garmin, HERE, Geonames.org, and Esri, and various other contributors. The base map currently provides coverage for the world down to a scale of ~1:577k, and coverage down to 1:72k in US coastal areas, and various other areas. Coverage down to ~ 1:9k is available limited areas based on regional hydrographic survey data. The base map was designed and developed by Esri. For more information on this map, including our terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=1e126e7520f9466c9ca28b8f28b5e500`,category:"Other",creationFunction:function(){return jp.fromBasemapType(Lh.OCEANS,{enablePickFeatures:!1})}})),e.push(new Ds({name:"Open\xADStreet\xADMap",iconUrl:fn("Widgets/Images/ImageryProviders/openStreetMap.png"),tooltip:`OpenStreetMap (OSM) is a collaborative project to create a free editable map of the world. +http://www.openstreetmap.org`,category:"Other",creationFunction:function(){return new u_({url:"https://tile.openstreetmap.org/"})}})),e.push(new Ds({name:"Stadia x Stamen Watercolor",iconUrl:fn("Widgets/Images/ImageryProviders/stamenWatercolor.png"),tooltip:`Based on the original basemaps created for the Knight Foundation and reminiscent of hand drawn maps, the watercolor maps from Stamen Design apply raster effect area washes and organic edges over a paper texture to add warm pop to any map. +https://docs.stadiamaps.com/map-styles/stamen-watercolor/`,category:"Other",creationFunction:function(){return new u_({url:"https://tiles.stadiamaps.com/tiles/stamen_watercolor/",fileExtension:"jpg",credit:`© <a href="https://stamen.com/" target="_blank">Stamen Design</a> + © <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Ds({name:"Stadia x Stamen Toner",iconUrl:fn("Widgets/Images/ImageryProviders/stamenToner.png"),tooltip:`Based on the original basemaps created for the Knight Foundation and the most popular of the excellent styles from Stamen Design, these high-contrast B+W (black and white) maps are the perfect backdrop for your colorful and eye-catching overlays. +https://docs.stadiamaps.com/map-styles/stamen-toner/`,category:"Other",creationFunction:function(){return new u_({url:"https://tiles.stadiamaps.com/tiles/stamen_toner/",retinaTiles:t,credit:`© <a href="https://stamen.com/" target="_blank">Stamen Design</a> + © <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Ds({name:"Stadia Alidade Smooth",iconUrl:fn("Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png"),tooltip:`Stadia's custom Alidade Smooth style is designed for maps that use a lot of markers or overlays. It features a muted color scheme and fewer points of interest to allow your added data to shine. +https://docs.stadiamaps.com/map-styles/alidade-smooth/`,category:"Other",creationFunction:function(){return new u_({url:"https://tiles.stadiamaps.com/tiles/alidade_smooth/",retinaTiles:t,credit:`© <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Ds({name:"Stadia Alidade Smooth Dark",iconUrl:fn("Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png"),tooltip:`Stadia Alidade Smooth Dark, like its lighter cousin, is also designed to stay out of the way. It just flips the dark mode switch on the color scheme. With the lights out, your data can now literally shine. +https://docs.stadiamaps.com/map-styles/alidade-smooth-dark/`,category:"Other",creationFunction:function(){return new u_({url:"https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/",retinaTiles:t,credit:`© <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Ds({name:"Sentinel-2",iconUrl:fn("Widgets/Images/ImageryProviders/sentinel-2.png"),tooltip:"Sentinel-2 cloudless by EOX IT Services GmbH (Contains modified Copernicus Sentinel data 2016 and 2017).",category:"Cesium ion",creationFunction:function(){return Yp.fromAssetId(3954)}})),e.push(new Ds({name:"Blue Marble",iconUrl:fn("Widgets/Images/ImageryProviders/blueMarble.png"),tooltip:"Blue Marble Next Generation July, 2004 imagery from NASA.",category:"Cesium ion",creationFunction:function(){return Yp.fromAssetId(3845)}})),e.push(new Ds({name:"Earth at night",iconUrl:fn("Widgets/Images/ImageryProviders/earthAtNight.png"),tooltip:"The Earth at night, also known as The Black Marble, is a 500 meter resolution global composite imagery layer released by NASA.",category:"Cesium ion",creationFunction:function(){return Yp.fromAssetId(3812)}})),e.push(new Ds({name:"Natural Earth\xA0II",iconUrl:fn("Widgets/Images/ImageryProviders/naturalEarthII.png"),tooltip:`Natural Earth II, darkened for contrast. +http://www.naturalearthdata.com/`,category:"Cesium ion",creationFunction:function(){return Ay.fromUrl(fn("Assets/Textures/NaturalEarthII"))}})),e}var iU=DPt;function vPt(){let e=[];return e.push(new Ds({name:"WGS84 Ellipsoid",iconUrl:fn("Widgets/Images/TerrainProviders/Ellipsoid.png"),tooltip:"WGS84 standard ellipsoid, also known as EPSG:4326",category:"Cesium ion",creationFunction:function(){return new DA({ellipsoid:te.WGS84})}})),e.push(new Ds({name:"Cesium World Terrain",iconUrl:fn("Widgets/Images/TerrainProviders/CesiumWorldTerrain.png"),tooltip:"High-resolution global terrain tileset curated from several datasources and hosted by Cesium ion",category:"Cesium ion",creationFunction:function(){return Ex({requestWaterMask:!0,requestVertexNormals:!0})}})),e}var oU=vPt;function PPt(e){return function(t){let n=e._scene.pick(t.position);l(n)&&n.primitive instanceof ks&&(e.tileset=n.primitive),e.pickActive=!1}}function Swe(e,t){t?e._eventHandler.setInputAction(function(n){let i=e._scene.pick(n.endPosition);l(i)&&i.primitive instanceof ks&&(e.tileset=i.primitive)},Dn.MOUSE_MOVE):(e._eventHandler.removeInputAction(Dn.MOUSE_MOVE),e.picking=e.picking)}var RPt={maximumFractionDigits:3};function rU(e){let t=e/1048576;return t<1?t.toLocaleString(void 0,RPt):Math.round(t).toLocaleString()}function sU(e,t){if(!l(e))return"";let n=t?e._statisticsPerPass[qo.PICK]:e._statisticsPerPass[qo.RENDER],i='<ul class="cesium-cesiumInspector-statistics">';return i+=`<li><strong>Visited: </strong>${n.visited.toLocaleString()}</li><li><strong>Selected: </strong>${n.selected.toLocaleString()}</li><li><strong>Commands: </strong>${n.numberOfCommands.toLocaleString()}</li>`,i+="</ul>",t||(i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Requests: </strong>${n.numberOfPendingRequests.toLocaleString()}</li><li><strong>Attempted: </strong>${n.numberOfAttemptedRequests.toLocaleString()}</li><li><strong>Processing: </strong>${n.numberOfTilesProcessing.toLocaleString()}</li><li><strong>Content Ready: </strong>${n.numberOfTilesWithContentReady.toLocaleString()}</li><li><strong>Total: </strong>${n.numberOfTilesTotal.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Features Selected: </strong>${n.numberOfFeaturesSelected.toLocaleString()}</li><li><strong>Features Loaded: </strong>${n.numberOfFeaturesLoaded.toLocaleString()}</li><li><strong>Points Selected: </strong>${n.numberOfPointsSelected.toLocaleString()}</li><li><strong>Points Loaded: </strong>${n.numberOfPointsLoaded.toLocaleString()}</li><li><strong>Triangles Selected: </strong>${n.numberOfTrianglesSelected.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Tiles styled: </strong>${n.numberOfTilesStyled.toLocaleString()}</li><li><strong>Features styled: </strong>${n.numberOfFeaturesStyled.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Children Union Culled: </strong>${n.numberOfTilesCulledWithChildrenUnion.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Geometry Memory (MB): </strong>${rU(n.geometryByteLength)}</li><li><strong>Texture Memory (MB): </strong>${rU(n.texturesByteLength)}</li><li><strong>Batch Table Memory (MB): </strong>${rU(n.batchTableByteLength)}</li>`,i+="</ul>"),i}function wwe(){let e=Fi.statistics;return` + <ul class="cesium-cesiumInspector-statistics"> + <li><strong>Geometry Memory (MB): </strong>${rU(e.geometryByteLength)}</li> + <li><strong>Texture Memory (MB): </strong>${rU(e.texturesByteLength)}</li> + </ul> + `}var MPt=[{text:"Highlight",value:ou.HIGHLIGHT},{text:"Replace",value:ou.REPLACE},{text:"Mix",value:ou.MIX}],Twe=new G(1,1,0,.4),NPt=new G,O5=new G;function nc(e,t){let n=this,i=e.canvas;this._eventHandler=new Pf(i),this._scene=e,this._performanceContainer=t,this._canvas=i,this._performanceDisplay=new qg({container:t}),this._statisticsText="",this._pickStatisticsText="",this._resourceCacheStatisticsText="",this._editorError="",this.performance=!1,this.showStatistics=!0,this.showPickStatistics=!0,this.showResourceCacheStatistics=!1,this.inspectorVisible=!0,this.tilesetVisible=!1,this.displayVisible=!1,this.updateVisible=!1,this.loggingVisible=!1,this.styleVisible=!1,this.tileDebugLabelsVisible=!1,this.optimizationVisible=!1,this.styleString="{}",this.hasEnabledWireframe=!1,this._tileset=void 0,this._feature=void 0,this._tile=void 0,Ie.track(this,["performance","inspectorVisible","_statisticsText","_pickStatisticsText","_resourceCacheStatisticsText","_editorError","showPickStatistics","showStatistics","showResourceCacheStatistics","tilesetVisible","displayVisible","updateVisible","loggingVisible","styleVisible","optimizationVisible","tileDebugLabelsVisible","styleString","_feature","_tile","_tileset","hasEnabledWireframe"]),this._properties=Ie.observable({}),this.properties=[],Ie.defineProperty(this,"properties",function(){let F=[],H=n._properties();for(let W in H)H.hasOwnProperty(W)&&F.push(W);return F});let o=Ie.observable();Ie.defineProperty(this,"dynamicScreenSpaceError",{get:function(){return o()},set:function(F){o(F),l(n._tileset)&&(n._tileset.dynamicScreenSpaceError=F)}}),this.dynamicScreenSpaceError=!1;let r=Ie.observable();Ie.defineProperty(this,"colorBlendMode",{get:function(){return r()},set:function(F){r(F),l(n._tileset)&&(n._tileset.colorBlendMode=F,n._scene.requestRender())}}),this.colorBlendMode=ou.HIGHLIGHT;let s=Ie.observable(),a=Ie.observable();Ie.defineProperty(this,"picking",{get:function(){return a()},set:function(F){a(F),F?n._eventHandler.setInputAction(function(H){let W=e.pick(H.endPosition);if(W instanceof ha?(n.feature=W,n.tile=W.content.tile):l(W)&&l(W.content)?(n.feature=void 0,n.tile=W.content.tile):(n.feature=void 0,n.tile=void 0),!!l(n._tileset)){if(s&&l(W)&&l(W.content)){let Z;e.pickPositionSupported&&(Z=e.pickPosition(H.endPosition),l(Z)&&(n._tileset.debugPickPosition=Z)),n._tileset.debugPickedTile=W.content.tile}else n._tileset.debugPickedTile=void 0;n._scene.requestRender()}},Dn.MOUSE_MOVE):(n.feature=void 0,n.tile=void 0,n._eventHandler.removeInputAction(Dn.MOUSE_MOVE))}}),this.picking=!0;let c=Ie.observable();Ie.defineProperty(this,"colorize",{get:function(){return c()},set:function(F){c(F),l(n._tileset)&&(n._tileset.debugColorizeTiles=F,n._scene.requestRender())}}),this.colorize=!1;let u=Ie.observable();Ie.defineProperty(this,"wireframe",{get:function(){return u()},set:function(F){u(F),l(n._tileset)&&(n._tileset.debugWireframe=F,n._scene.requestRender())}}),this.wireframe=!1;let f=Ie.observable();Ie.defineProperty(this,"showBoundingVolumes",{get:function(){return f()},set:function(F){f(F),l(n._tileset)&&(n._tileset.debugShowBoundingVolume=F,n._scene.requestRender())}}),this.showBoundingVolumes=!1;let h=Ie.observable();Ie.defineProperty(this,"showContentBoundingVolumes",{get:function(){return h()},set:function(F){h(F),l(n._tileset)&&(n._tileset.debugShowContentBoundingVolume=F,n._scene.requestRender())}}),this.showContentBoundingVolumes=!1;let A=Ie.observable();Ie.defineProperty(this,"showRequestVolumes",{get:function(){return A()},set:function(F){A(F),l(n._tileset)&&(n._tileset.debugShowViewerRequestVolume=F,n._scene.requestRender())}}),this.showRequestVolumes=!1;let g=Ie.observable();Ie.defineProperty(this,"freezeFrame",{get:function(){return g()},set:function(F){g(F),l(n._tileset)&&(n._tileset.debugFreezeFrame=F,n._scene.debugShowFrustumPlanes=F,n._scene.requestRender())}}),this.freezeFrame=!1,Ie.defineProperty(this,"showOnlyPickedTileDebugLabel",{get:function(){return s()},set:function(F){s(F),l(n._tileset)&&(n._tileset.debugPickedTileLabelOnly=F,n._scene.requestRender())}}),this.showOnlyPickedTileDebugLabel=!1;let m=Ie.observable();Ie.defineProperty(this,"showGeometricError",{get:function(){return m()},set:function(F){m(F),l(n._tileset)&&(n._tileset.debugShowGeometricError=F,n._scene.requestRender())}}),this.showGeometricError=!1;let _=Ie.observable();Ie.defineProperty(this,"showRenderingStatistics",{get:function(){return _()},set:function(F){_(F),l(n._tileset)&&(n._tileset.debugShowRenderingStatistics=F,n._scene.requestRender())}}),this.showRenderingStatistics=!1;let y=Ie.observable();Ie.defineProperty(this,"showMemoryUsage",{get:function(){return y()},set:function(F){y(F),l(n._tileset)&&(n._tileset.debugShowMemoryUsage=F,n._scene.requestRender())}}),this.showMemoryUsage=!1;let C=Ie.observable();Ie.defineProperty(this,"showUrl",{get:function(){return C()},set:function(F){C(F),l(n._tileset)&&(n._tileset.debugShowUrl=F,n._scene.requestRender())}}),this.showUrl=!1;let E=Ie.observable();Ie.defineProperty(this,"maximumScreenSpaceError",{get:function(){return E()},set:function(F){F=Number(F),isNaN(F)||(E(F),l(n._tileset)&&(n._tileset.maximumScreenSpaceError=F))}}),this.maximumScreenSpaceError=16;let I=Ie.observable();Ie.defineProperty(this,"dynamicScreenSpaceErrorDensity",{get:function(){return I()},set:function(F){F=Number(F),isNaN(F)||(I(F),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorDensity=F))}}),this.dynamicScreenSpaceErrorDensity=2e-4,this.dynamicScreenSpaceErrorDensitySliderValue=void 0,Ie.defineProperty(this,"dynamicScreenSpaceErrorDensitySliderValue",{get:function(){return Math.pow(I(),1/6)},set:function(F){let H=Math.pow(F,6);I(H),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorDensity=H)}});let b=Ie.observable();Ie.defineProperty(this,"dynamicScreenSpaceErrorFactor",{get:function(){return b()},set:function(F){F=Number(F),isNaN(F)||(b(F),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorFactor=F))}}),this.dynamicScreenSpaceErrorFactor=24;let S=PPt(this),B=Ie.observable();Ie.defineProperty(this,"pickActive",{get:function(){return B()},set:function(F){B(F),F?n._eventHandler.setInputAction(S,Dn.LEFT_CLICK):n._eventHandler.removeInputAction(Dn.LEFT_CLICK)}});let v=Ie.observable();Ie.defineProperty(this,"pointCloudShading",{get:function(){return v()},set:function(F){v(F),l(n._tileset)&&(n._tileset.pointCloudShading.attenuation=F)}}),this.pointCloudShading=!1;let P=Ie.observable();Ie.defineProperty(this,"geometricErrorScale",{get:function(){return P()},set:function(F){F=Number(F),isNaN(F)||(P(F),l(n._tileset)&&(n._tileset.pointCloudShading.geometricErrorScale=F))}}),this.geometricErrorScale=1;let M=Ie.observable();Ie.defineProperty(this,"maximumAttenuation",{get:function(){return M()},set:function(F){F=Number(F),isNaN(F)||(M(F),l(n._tileset)&&(n._tileset.pointCloudShading.maximumAttenuation=F===0?void 0:F))}}),this.maximumAttenuation=0;let L=Ie.observable();Ie.defineProperty(this,"baseResolution",{get:function(){return L()},set:function(F){F=Number(F),isNaN(F)||(L(F),l(n._tileset)&&(n._tileset.pointCloudShading.baseResolution=F===0?void 0:F))}}),this.baseResolution=0;let p=Ie.observable();Ie.defineProperty(this,"eyeDomeLighting",{get:function(){return p()},set:function(F){p(F),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLighting=F)}}),this.eyeDomeLighting=!1;let x=Ie.observable();Ie.defineProperty(this,"eyeDomeLightingStrength",{get:function(){return x()},set:function(F){F=Number(F),isNaN(F)||(x(F),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLightingStrength=F))}}),this.eyeDomeLightingStrength=1;let T=Ie.observable();Ie.defineProperty(this,"eyeDomeLightingRadius",{get:function(){return T()},set:function(F){F=Number(F),isNaN(F)||(T(F),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLightingRadius=F))}}),this.eyeDomeLightingRadius=1,this.pickActive=!1;let w=Ie.observable();Ie.defineProperty(this,"skipLevelOfDetail",{get:function(){return w()},set:function(F){w(F),l(n._tileset)&&(n._tileset.skipLevelOfDetail=F)}}),this.skipLevelOfDetail=!0;let R=Ie.observable();Ie.defineProperty(this,"skipScreenSpaceErrorFactor",{get:function(){return R()},set:function(F){F=Number(F),isNaN(F)||(R(F),l(n._tileset)&&(n._tileset.skipScreenSpaceErrorFactor=F))}}),this.skipScreenSpaceErrorFactor=16;let O=Ie.observable();Ie.defineProperty(this,"baseScreenSpaceError",{get:function(){return O()},set:function(F){F=Number(F),isNaN(F)||(O(F),l(n._tileset)&&(n._tileset.baseScreenSpaceError=F))}}),this.baseScreenSpaceError=1024;let k=Ie.observable();Ie.defineProperty(this,"skipLevels",{get:function(){return k()},set:function(F){F=Number(F),isNaN(F)||(k(F),l(n._tileset)&&(n._tileset.skipLevels=F))}}),this.skipLevels=1;let Q=Ie.observable();Ie.defineProperty(this,"immediatelyLoadDesiredLevelOfDetail",{get:function(){return Q()},set:function(F){Q(F),l(n._tileset)&&(n._tileset.immediatelyLoadDesiredLevelOfDetail=F)}}),this.immediatelyLoadDesiredLevelOfDetail=!1;let z=Ie.observable();Ie.defineProperty(this,"loadSiblings",{get:function(){return z()},set:function(F){z(F),l(n._tileset)&&(n._tileset.loadSiblings=F)}}),this.loadSiblings=!1,this._style=void 0,this._shouldStyle=!1,this._definedProperties=["properties","dynamicScreenSpaceError","colorBlendMode","picking","colorize","wireframe","showBoundingVolumes","showContentBoundingVolumes","showRequestVolumes","freezeFrame","maximumScreenSpaceError","dynamicScreenSpaceErrorDensity","baseScreenSpaceError","skipScreenSpaceErrorFactor","skipLevelOfDetail","skipLevels","immediatelyLoadDesiredLevelOfDetail","loadSiblings","dynamicScreenSpaceErrorDensitySliderValue","dynamicScreenSpaceErrorFactor","pickActive","showOnlyPickedTileDebugLabel","showGeometricError","showRenderingStatistics","showMemoryUsage","showUrl","pointCloudShading","geometricErrorScale","maximumAttenuation","baseResolution","eyeDomeLighting","eyeDomeLightingStrength","eyeDomeLightingRadius"],this._removePostRenderEvent=e.postRender.addEventListener(function(){n._update()}),l(this._tileset)||Swe(this,!0)}Object.defineProperties(nc.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},statisticsText:{get:function(){return this._statisticsText}},pickStatisticsText:{get:function(){return this._pickStatisticsText}},resourceCacheStatisticsText:{get:function(){return this._resourceCacheStatisticsText}},colorBlendModes:{get:function(){return MPt}},editorError:{get:function(){return this._editorError}},tileset:{get:function(){return this._tileset},set:function(e){if(this._tileset=e,this._style=void 0,this.styleString="{}",this.feature=void 0,this.tile=void 0,l(e)){this._properties(e.properties);let t=["colorize","wireframe","showBoundingVolumes","showContentBoundingVolumes","showRequestVolumes","freezeFrame","showOnlyPickedTileDebugLabel","showGeometricError","showRenderingStatistics","showMemoryUsage","showUrl"],n=t.length;for(let o=0;o<n;++o){let r=t[o];this[r]=this[r]}this.maximumScreenSpaceError=e.maximumScreenSpaceError,this.dynamicScreenSpaceError=e.dynamicScreenSpaceError,this.dynamicScreenSpaceErrorDensity=e.dynamicScreenSpaceErrorDensity,this.dynamicScreenSpaceErrorFactor=e.dynamicScreenSpaceErrorFactor,this.colorBlendMode=e.colorBlendMode,this.skipLevelOfDetail=e.skipLevelOfDetail,this.skipScreenSpaceErrorFactor=e.skipScreenSpaceErrorFactor,this.baseScreenSpaceError=e.baseScreenSpaceError,this.skipLevels=e.skipLevels,this.immediatelyLoadDesiredLevelOfDetail=e.immediatelyLoadDesiredLevelOfDetail,this.loadSiblings=e.loadSiblings,this.hasEnabledWireframe=e._enableDebugWireframe;let i=e.pointCloudShading;this.pointCloudShading=i.attenuation,this.geometricErrorScale=i.geometricErrorScale,this.maximumAttenuation=i.maximumAttenuation?i.maximumAttenuation:0,this.baseResolution=i.baseResolution?i.baseResolution:0,this.eyeDomeLighting=i.eyeDomeLighting,this.eyeDomeLightingStrength=i.eyeDomeLightingStrength,this.eyeDomeLightingRadius=i.eyeDomeLightingRadius,this._scene.requestRender()}else this._properties({});this._statisticsText=sU(e,!1),this._pickStatisticsText=sU(e,!0),this._resourceCacheStatisticsText=wwe(),Swe(this,!1)}},feature:{get:function(){return this._feature},set:function(e){if(this._feature===e)return;let t=this._feature;l(t)&&!t.content.isDestroyed()&&(!this.colorize&&l(this._style)?t.color=l(this._style.color)?this._style.color.evaluateColor(t,NPt):G.WHITE:t.color=O5,this._scene.requestRender()),l(e)&&(G.clone(e.color,O5),e.color=Twe,this._scene.requestRender()),this._feature=e}},tile:{get:function(){return this._tile},set:function(e){if(this._tile===e)return;let t=this._tile;l(t)&&!t.isDestroyed()&&!Zee(t.content)&&(t.color=O5,this._scene.requestRender()),l(e)&&!Zee(e.content)&&(G.clone(e.color,O5),e.color=Twe,this._scene.requestRender()),this._tile=e}}});function Zee(e){if(!l(e))return!1;if(e.featuresLength>0)return!0;let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)if(!Zee(t[i]))return!1;return!0}return!1}nc.prototype.togglePickTileset=function(){this.pickActive=!this.pickActive};nc.prototype.toggleInspector=function(){this.inspectorVisible=!this.inspectorVisible};nc.prototype.toggleTileset=function(){this.tilesetVisible=!this.tilesetVisible};nc.prototype.toggleDisplay=function(){this.displayVisible=!this.displayVisible};nc.prototype.toggleUpdate=function(){this.updateVisible=!this.updateVisible};nc.prototype.toggleLogging=function(){this.loggingVisible=!this.loggingVisible};nc.prototype.toggleStyle=function(){this.styleVisible=!this.styleVisible};nc.prototype.toggleTileDebugLabels=function(){this.tileDebugLabelsVisible=!this.tileDebugLabelsVisible};nc.prototype.toggleOptimization=function(){this.optimizationVisible=!this.optimizationVisible};nc.prototype.trimTilesCache=function(){l(this._tileset)&&this._tileset.trimLoadedTiles()};nc.prototype.compileStyle=function(){let e=this._tileset;if(!(!l(e)||this.styleString===JSON.stringify(e.style))){this._editorError="";try{this.styleString.length===0&&(this.styleString="{}"),this._style=new xx(JSON.parse(this.styleString)),this._shouldStyle=!0,this._scene.requestRender()}catch(t){this._editorError=t.toString()}this.feature=this._feature,this.tile=this._tile}};nc.prototype.styleEditorKeyPress=function(e,t){if(t.keyCode===9){t.preventDefault();let n=t.target,i=n.selectionStart,o=n.selectionEnd,r=o,a=n.value.slice(i,o).split(` +`),c=a.length,u;if(t.shiftKey)for(u=0;u<c;++u)a[u][0]===" "&&(a[u][1]===" "?(a[u]=a[u].substr(2),r-=2):(a[u]=a[u].substr(1),r-=1));else for(u=0;u<c;++u)a[u]=` ${a[u]}`,r+=2;let f=a.join(` +`);n.value=n.value.slice(0,i)+f+n.value.slice(o),n.selectionStart=i!==o?i:r,n.selectionEnd=r}else t.ctrlKey&&(t.keyCode===10||t.keyCode===13)&&this.compileStyle();return!0};nc.prototype._update=function(){let e=this._tileset;if(this.performance&&this._performanceDisplay.update(),l(e)){if(e.isDestroyed()){this.tile=void 0,this.feature=void 0,this.tileset=void 0;return}let t=e.style;this._style!==e.style&&(this._shouldStyle?(e.style=this._style,this._shouldStyle=!1):(this._style=t,this.styleString=JSON.stringify(t.style,null," ")))}this.showStatistics&&(this._statisticsText=sU(e,!1),this._pickStatisticsText=sU(e,!0),this._resourceCacheStatisticsText=wwe())};nc.prototype.isDestroyed=function(){return!1};nc.prototype.destroy=function(){this._eventHandler.destroy(),this._removePostRenderEvent();let e=this;return this._definedProperties.forEach(function(t){Ie.getObservable(e,t).dispose()}),ue(this)};nc.getStatistics=sU;var aU=nc;function F5(e,t){e=kn(e);let n=document.createElement("div"),i=document.createElement("div");i.setAttribute("data-bind","visible: performance");let o=new aU(t,i);this._viewModel=o,this._container=e,this._element=n;let r=document.createElement("div");r.textContent="3D Tiles Inspector",r.className="cesium-cesiumInspector-button",r.setAttribute("data-bind","click: toggleInspector"),n.appendChild(r),n.className="cesium-cesiumInspector cesium-3DTilesInspector",n.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : inspectorVisible, "cesium-cesiumInspector-hidden" : !inspectorVisible}'),e.appendChild(n);let s=document.createElement("div");s.className="cesium-cesiumInspector-dropDown",n.appendChild(s);let a=Mu.createSection,c=Mu.createCheckbox,u=Mu.createRangeInput,f=Mu.createButton,h=a(s,"Tileset","tilesetVisible","toggleTileset"),A=a(s,"Display","displayVisible","toggleDisplay"),g=a(s,"Update","updateVisible","toggleUpdate"),m=a(s,"Logging","loggingVisible","toggleLogging"),_=a(s,"Tile Debug Labels","tileDebugLabelsVisible","toggleTileDebugLabels"),y=a(s,"Style","styleVisible","toggleStyle"),C=a(s,"Optimization","optimizationVisible","toggleOptimization"),E=document.createElement("div");E.className="field-group";let I=document.createElement("label");I.className="field-label",I.appendChild(document.createTextNode("Properties: "));let b=document.createElement("div");b.setAttribute("data-bind","text: properties"),E.appendChild(I),E.appendChild(b),h.appendChild(E),h.appendChild(f("Pick Tileset","togglePickTileset","pickActive")),h.appendChild(f("Trim Tiles Cache","trimTilesCache")),h.appendChild(c("Enable Picking","picking")),A.appendChild(c("Colorize","colorize"));let S=A.appendChild(c("Wireframe","wireframe","_tileset === undefined || hasEnabledWireframe")),B=document.createElement("p");B.setAttribute("data-bind","visible: _tileset !== undefined && !hasEnabledWireframe"),B.setAttribute("class","cesium-3DTilesInspector-disabledElementsInfo"),B.innerText="Set enableDebugWireframe to true in the tileset constructor to enable this option.",S.appendChild(B),A.appendChild(c("Bounding Volumes","showBoundingVolumes")),A.appendChild(c("Content Volumes","showContentBoundingVolumes")),A.appendChild(c("Request Volumes","showRequestVolumes")),A.appendChild(c("Point Cloud Shading","pointCloudShading"));let v=document.createElement("div");v.setAttribute("data-bind","visible: pointCloudShading"),v.appendChild(u("Geometric Error Scale","geometricErrorScale",0,2,.01)),v.appendChild(u("Maximum Attenuation","maximumAttenuation",0,32,1)),v.appendChild(u("Base Resolution","baseResolution",0,1,.01)),v.appendChild(c("Eye Dome Lighting (EDL)","eyeDomeLighting")),A.appendChild(v);let P=document.createElement("div");P.setAttribute("data-bind","visible: eyeDomeLighting"),P.appendChild(u("EDL Strength","eyeDomeLightingStrength",0,2,.1)),P.appendChild(u("EDL Radius","eyeDomeLightingRadius",0,4,.1)),v.appendChild(P),g.appendChild(c("Freeze Frame","freezeFrame")),g.appendChild(c("Dynamic Screen Space Error","dynamicScreenSpaceError"));let M=document.createElement("div");M.appendChild(u("Maximum Screen Space Error","maximumScreenSpaceError",0,128,1)),g.appendChild(M);let L=document.createElement("div");L.setAttribute("data-bind","visible: dynamicScreenSpaceError"),L.appendChild(u("Screen Space Error Density","dynamicScreenSpaceErrorDensitySliderValue",0,1,.005,"dynamicScreenSpaceErrorDensity")),L.appendChild(u("Screen Space Error Factor","dynamicScreenSpaceErrorFactor",1,32,.1)),g.appendChild(L),m.appendChild(c("Performance","performance")),m.appendChild(i),m.appendChild(c("Statistics","showStatistics"));let p=document.createElement("div");p.className="cesium-3dTilesInspector-statistics",p.setAttribute("data-bind","html: statisticsText, visible: showStatistics"),m.appendChild(p),m.appendChild(c("Pick Statistics","showPickStatistics"));let x=document.createElement("div");x.className="cesium-3dTilesInspector-statistics",x.setAttribute("data-bind","html: pickStatisticsText, visible: showPickStatistics"),m.appendChild(x),m.appendChild(c("Resource Cache Statistics","showResourceCacheStatistics"));let T=document.createElement("div");T.className="cesium-3dTilesInspector-statistics",T.setAttribute("data-bind","html: resourceCacheStatisticsText, visible: showResourceCacheStatistics"),m.appendChild(T);let w=document.createElement("div");y.appendChild(w),w.appendChild(document.createTextNode("Color Blend Mode: "));let R=document.createElement("select");R.setAttribute("data-bind",'options: colorBlendModes, optionsText: "text", optionsValue: "value", value: colorBlendMode'),w.appendChild(R);let O=document.createElement("textarea");O.setAttribute("data-bind","textInput: styleString, event: { keydown: styleEditorKeyPress }"),w.className="cesium-cesiumInspector-styleEditor",w.appendChild(O);let k=f("Compile (Ctrl+Enter)","compileStyle");w.appendChild(k);let Q=document.createElement("div");Q.className="cesium-cesiumInspector-error",Q.setAttribute("data-bind","text: editorError"),w.appendChild(Q),_.appendChild(c("Show Picked Only","showOnlyPickedTileDebugLabel")),_.appendChild(c("Geometric Error","showGeometricError")),_.appendChild(c("Rendering Statistics","showRenderingStatistics")),_.appendChild(c("Memory Usage (MB)","showMemoryUsage")),_.appendChild(c("Url","showUrl")),C.appendChild(c("Skip Tile LODs","skipLevelOfDetail"));let z=document.createElement("div");z.appendChild(u("Skip SSE Factor","skipScreenSpaceErrorFactor",1,50,1)),C.appendChild(z);let F=document.createElement("div");F.appendChild(u("SSE before skipping LOD","baseScreenSpaceError",0,4096,1)),C.appendChild(F);let H=document.createElement("div");H.appendChild(u("Min. levels to skip","skipLevels",0,10,1)),C.appendChild(H),C.appendChild(c("Load only tiles that meet the max SSE.","immediatelyLoadDesiredLevelOfDetail")),C.appendChild(c("Load siblings of visible tiles","loadSiblings")),Ie.applyBindings(o,n)}Object.defineProperties(F5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});F5.prototype.isDestroyed=function(){return!1};F5.prototype.destroy=function(){return Ie.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),ue(this)};var cU=F5;function LPt(e){let t;if(l(e)){t="Command Statistics";let n=e.commandsInFrustums;for(let i in n)if(n.hasOwnProperty(i)){let o=parseInt(i,10),r;if(o===7)r="1, 2 and 3";else{let s=[];for(let a=2;a>=0;a--){let c=Math.pow(2,a);o>=c&&(s.push(a+1),o-=c)}r=s.reverse().join(" and ")}t+=`<br>    ${n[i]} in frustum ${r}`}t+=`<br>Total: ${e.totalCommands}`}return t}function $ee(e,t,n){let i=Math.min(n,t);return i=Math.max(i,e),i}var OPt=new In,FPt=new d;function lU(e,t){let n=this,i=e.canvas,o=new Pf(i);this._eventHandler=o,this._scene=e,this._canvas=i,this._primitive=void 0,this._tile=void 0,this._modelMatrixPrimitive=void 0,this._performanceDisplay=void 0,this._performanceContainer=t;let r=this._scene.globe;r.depthTestAgainstTerrain=!0,this.frustums=!1,this.frustumPlanes=!1,this.performance=!1,this.shaderCacheText="",this.primitiveBoundingSphere=!1,this.primitiveReferenceFrame=!1,this.filterPrimitive=!1,this.tileBoundingSphere=!1,this.filterTile=!1,this.wireframe=!1,this.depthFrustum=1,this._numberOfFrustums=1,this.suspendUpdates=!1,this.tileCoordinates=!1,this.frustumStatisticText=!1,this.tileText="",this.hasPickedPrimitive=!1,this.hasPickedTile=!1,this.pickPrimitiveActive=!1,this.pickTileActive=!1,this.dropDownVisible=!0,this.generalVisible=!0,this.primitivesVisible=!1,this.terrainVisible=!1,this.depthFrustumText="",Ie.track(this,["frustums","frustumPlanes","performance","shaderCacheText","primitiveBoundingSphere","primitiveReferenceFrame","filterPrimitive","tileBoundingSphere","filterTile","wireframe","depthFrustum","suspendUpdates","tileCoordinates","frustumStatisticText","tileText","hasPickedPrimitive","hasPickedTile","pickPrimitiveActive","pickTileActive","dropDownVisible","generalVisible","primitivesVisible","terrainVisible","depthFrustumText"]),this._toggleDropDown=Rn(function(){n.dropDownVisible=!n.dropDownVisible}),this._toggleGeneral=Rn(function(){n.generalVisible=!n.generalVisible}),this._togglePrimitives=Rn(function(){n.primitivesVisible=!n.primitivesVisible}),this._toggleTerrain=Rn(function(){n.terrainVisible=!n.terrainVisible}),this._frustumsSubscription=Ie.getObservable(this,"frustums").subscribe(function(u){n._scene.debugShowFrustums=u,n._scene.requestRender()}),this._frustumPlanesSubscription=Ie.getObservable(this,"frustumPlanes").subscribe(function(u){n._scene.debugShowFrustumPlanes=u,n._scene.requestRender()}),this._performanceSubscription=Ie.getObservable(this,"performance").subscribe(function(u){u?n._performanceDisplay=new qg({container:n._performanceContainer}):n._performanceContainer.innerHTML=""}),this._showPrimitiveBoundingSphere=Rn(function(){return n._primitive.debugShowBoundingVolume=n.primitiveBoundingSphere,n._scene.requestRender(),!0}),this._primitiveBoundingSphereSubscription=Ie.getObservable(this,"primitiveBoundingSphere").subscribe(function(){n._showPrimitiveBoundingSphere()}),this._showPrimitiveReferenceFrame=Rn(function(){if(n.primitiveReferenceFrame){let u=n._primitive.modelMatrix;n._modelMatrixPrimitive=new w3({modelMatrix:u}),n._scene.primitives.add(n._modelMatrixPrimitive)}else l(n._modelMatrixPrimitive)&&(n._scene.primitives.remove(n._modelMatrixPrimitive),n._modelMatrixPrimitive=void 0);return n._scene.requestRender(),!0}),this._primitiveReferenceFrameSubscription=Ie.getObservable(this,"primitiveReferenceFrame").subscribe(function(){n._showPrimitiveReferenceFrame()}),this._doFilterPrimitive=Rn(function(){return n.filterPrimitive?n._scene.debugCommandFilter=function(u){return l(n._modelMatrixPrimitive)&&u.owner===n._modelMatrixPrimitive._primitive?!0:l(n._primitive)?u.owner===n._primitive||u.owner===n._primitive._billboardCollection||u.owner.primitive===n._primitive:!1}:n._scene.debugCommandFilter=void 0,!0}),this._filterPrimitiveSubscription=Ie.getObservable(this,"filterPrimitive").subscribe(function(){n._doFilterPrimitive(),n._scene.requestRender()}),this._wireframeSubscription=Ie.getObservable(this,"wireframe").subscribe(function(u){r._surface.tileProvider._debug.wireframe=u,n._scene.requestRender()}),this._depthFrustumSubscription=Ie.getObservable(this,"depthFrustum").subscribe(function(u){n._scene.debugShowDepthFrustum=u,n._scene.requestRender()}),this._incrementDepthFrustum=Rn(function(){let u=n.depthFrustum+1;return n.depthFrustum=$ee(1,n._numberOfFrustums,u),n._scene.requestRender(),!0}),this._decrementDepthFrustum=Rn(function(){let u=n.depthFrustum-1;return n.depthFrustum=$ee(1,n._numberOfFrustums,u),n._scene.requestRender(),!0}),this._suspendUpdatesSubscription=Ie.getObservable(this,"suspendUpdates").subscribe(function(u){r._surface._debug.suspendLodUpdate=u,u||(n.filterTile=!1)});let s;this._showTileCoordinates=Rn(function(){return n.tileCoordinates&&!l(s)?s=e.imageryLayers.addImageryProvider(new H3({tilingScheme:e.terrainProvider.tilingScheme})):!n.tileCoordinates&&l(s)&&(e.imageryLayers.remove(s),s=void 0),!0}),this._tileCoordinatesSubscription=Ie.getObservable(this,"tileCoordinates").subscribe(function(){n._showTileCoordinates(),n._scene.requestRender()}),this._tileBoundingSphereSubscription=Ie.getObservable(this,"tileBoundingSphere").subscribe(function(){n._showTileBoundingSphere(),n._scene.requestRender()}),this._showTileBoundingSphere=Rn(function(){return n.tileBoundingSphere?r._surface.tileProvider._debug.boundingSphereTile=n._tile:r._surface.tileProvider._debug.boundingSphereTile=void 0,n._scene.requestRender(),!0}),this._doFilterTile=Rn(function(){return n.filterTile?(n.suspendUpdates=!0,r._surface._tilesToRender=[],l(n._tile)&&n._tile.renderable&&r._surface._tilesToRender.push(n._tile)):n.suspendUpdates=!1,!0}),this._filterTileSubscription=Ie.getObservable(this,"filterTile").subscribe(function(){n.doFilterTile(),n._scene.requestRender()});function a(u){let f=n._scene.pick({x:u.position.x,y:u.position.y});l(f)&&(n.primitive=l(f.collection)?f.collection:f.primitive),n._scene.requestRender(),n.pickPrimitiveActive=!1}this._pickPrimitive=Rn(function(){n.pickPrimitiveActive=!n.pickPrimitiveActive}),this._pickPrimitiveActiveSubscription=Ie.getObservable(this,"pickPrimitiveActive").subscribe(function(u){u?o.setInputAction(a,Dn.LEFT_CLICK):o.removeInputAction(Dn.LEFT_CLICK)});function c(u){let f,h=r.ellipsoid,A=n._scene.camera.getPickRay(u.position,OPt),g=r.pick(A,n._scene,FPt);if(l(g)){let m=h.cartesianToCartographic(g),_=r._surface.tileProvider._tilesToRenderByTextureCount;for(let y=0;!f&&y<_.length;++y){let C=_[y];if(l(C))for(let E=0;!f&&E<C.length;++E){let I=C[E];ae.contains(I.rectangle,m)&&(f=I)}}}n.tile=f,n.pickTileActive=!1}this._pickTile=Rn(function(){n.pickTileActive=!n.pickTileActive}),this._pickTileActiveSubscription=Ie.getObservable(this,"pickTileActive").subscribe(function(u){u?o.setInputAction(c,Dn.LEFT_CLICK):o.removeInputAction(Dn.LEFT_CLICK)}),this._removePostRenderEvent=e.postRender.addEventListener(function(){n._update()})}Object.defineProperties(lU.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},toggleDropDown:{get:function(){return this._toggleDropDown}},showPrimitiveBoundingSphere:{get:function(){return this._showPrimitiveBoundingSphere}},showPrimitiveReferenceFrame:{get:function(){return this._showPrimitiveReferenceFrame}},doFilterPrimitive:{get:function(){return this._doFilterPrimitive}},incrementDepthFrustum:{get:function(){return this._incrementDepthFrustum}},decrementDepthFrustum:{get:function(){return this._decrementDepthFrustum}},showTileCoordinates:{get:function(){return this._showTileCoordinates}},showTileBoundingSphere:{get:function(){return this._showTileBoundingSphere}},doFilterTile:{get:function(){return this._doFilterTile}},toggleGeneral:{get:function(){return this._toggleGeneral}},togglePrimitives:{get:function(){return this._togglePrimitives}},toggleTerrain:{get:function(){return this._toggleTerrain}},pickPrimitive:{get:function(){return this._pickPrimitive}},pickTile:{get:function(){return this._pickTile}},selectParent:{get:function(){let e=this;return Rn(function(){e.tile=e.tile.parent})}},selectNW:{get:function(){let e=this;return Rn(function(){e.tile=e.tile.northwestChild})}},selectNE:{get:function(){let e=this;return Rn(function(){e.tile=e.tile.northeastChild})}},selectSW:{get:function(){let e=this;return Rn(function(){e.tile=e.tile.southwestChild})}},selectSE:{get:function(){let e=this;return Rn(function(){e.tile=e.tile.southeastChild})}},primitive:{get:function(){return this._primitive},set:function(e){let t=this._primitive;e!==t&&(this.hasPickedPrimitive=!0,l(t)&&(t.debugShowBoundingVolume=!1),this._scene.debugCommandFilter=void 0,l(this._modelMatrixPrimitive)&&(this._scene.primitives.remove(this._modelMatrixPrimitive),this._modelMatrixPrimitive=void 0),this._primitive=e,e.show=!1,setTimeout(function(){e.show=!0},50),this.showPrimitiveBoundingSphere(),this.showPrimitiveReferenceFrame(),this.doFilterPrimitive())}},tile:{get:function(){return this._tile},set:function(e){if(l(e)){this.hasPickedTile=!0;let t=this._tile;if(e!==t){this.tileText=`L: ${e.level} X: ${e.x} Y: ${e.y}`,this.tileText+=`<br>SW corner: ${e.rectangle.west}, ${e.rectangle.south}`,this.tileText+=`<br>NE corner: ${e.rectangle.east}, ${e.rectangle.north}`;let n=e.data;l(n)&&l(n.tileBoundingRegion)?this.tileText+=`<br>Min: ${n.tileBoundingRegion.minimumHeight} Max: ${n.tileBoundingRegion.maximumHeight}`:this.tileText+="<br>(Tile is not loaded)"}this._tile=e,this.showTileBoundingSphere(),this.doFilterTile()}else this.hasPickedTile=!1,this._tile=void 0}}});lU.prototype._update=function(){this.frustums&&(this.frustumStatisticText=LPt(this._scene.debugFrustumStatistics));let e=this._scene.numberOfFrustums;this._numberOfFrustums=e,this.depthFrustum=$ee(1,e,this.depthFrustum),this.depthFrustumText=`${this.depthFrustum} of ${e}`,this.performance&&this._performanceDisplay.update(),this.primitiveReferenceFrame&&(this._modelMatrixPrimitive.modelMatrix=this._primitive.modelMatrix),this.shaderCacheText=`Cached shaders: ${this._scene.context.shaderCache.numberOfShaders}`};lU.prototype.isDestroyed=function(){return!1};lU.prototype.destroy=function(){return this._eventHandler.destroy(),this._removePostRenderEvent(),this._frustumsSubscription.dispose(),this._frustumPlanesSubscription.dispose(),this._performanceSubscription.dispose(),this._primitiveBoundingSphereSubscription.dispose(),this._primitiveReferenceFrameSubscription.dispose(),this._filterPrimitiveSubscription.dispose(),this._wireframeSubscription.dispose(),this._depthFrustumSubscription.dispose(),this._suspendUpdatesSubscription.dispose(),this._tileCoordinatesSubscription.dispose(),this._tileBoundingSphereSubscription.dispose(),this._filterTileSubscription.dispose(),this._pickPrimitiveActiveSubscription.dispose(),this._pickTileActiveSubscription.dispose(),ue(this)};var uU=lU;function Q5(e,t){e=kn(e);let n=document.createElement("div"),i=new uU(t,n);this._viewModel=i,this._container=e;let o=document.createElement("div");this._element=o;let r=document.createElement("div");r.textContent="Cesium Inspector",r.className="cesium-cesiumInspector-button",r.setAttribute("data-bind","click: toggleDropDown"),o.appendChild(r),o.className="cesium-cesiumInspector",o.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : dropDownVisible, "cesium-cesiumInspector-hidden" : !dropDownVisible }'),e.appendChild(this._element);let s=document.createElement("div");s.className="cesium-cesiumInspector-dropDown",o.appendChild(s);let a=Mu.createSection,c=Mu.createCheckbox,u=a(s,"General","generalVisible","toggleGeneral"),f=c("Show Frustums","frustums"),h=document.createElement("div");h.className="cesium-cesiumInspector-frustumStatistics",h.setAttribute("data-bind","visible: frustums, html: frustumStatisticText"),f.appendChild(h),u.appendChild(f),u.appendChild(c("Show Frustum Planes","frustumPlanes")),u.appendChild(c("Performance Display","performance")),n.className="cesium-cesiumInspector-performanceDisplay",u.appendChild(n);let A=document.createElement("div");A.className="cesium-cesiumInspector-shaderCache",A.setAttribute("data-bind","html: shaderCacheText"),u.appendChild(A);let g=document.createElement("div");u.appendChild(g);let m=document.createElement("span");m.setAttribute("data-bind",'html: "     Frustum:"'),g.appendChild(m);let _=document.createElement("span");_.setAttribute("data-bind","text: depthFrustumText"),g.appendChild(_);let y=document.createElement("input");y.type="button",y.value="-",y.className="cesium-cesiumInspector-pickButton",y.setAttribute("data-bind","click: decrementDepthFrustum"),g.appendChild(y);let C=document.createElement("input");C.type="button",C.value="+",C.className="cesium-cesiumInspector-pickButton",C.setAttribute("data-bind","click: incrementDepthFrustum"),g.appendChild(C);let E=a(s,"Primitives","primitivesVisible","togglePrimitives"),I=document.createElement("div");I.className="cesium-cesiumInspector-pickSection",E.appendChild(I);let b=document.createElement("input");b.type="button",b.value="Pick a primitive",b.className="cesium-cesiumInspector-pickButton",b.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickPrimitiveActive}, click: pickPrimitive');let S=document.createElement("div");S.className="cesium-cesiumInspector-center",S.appendChild(b),I.appendChild(S),I.appendChild(c("Show bounding sphere","primitiveBoundingSphere","hasPickedPrimitive")),I.appendChild(c("Show reference frame","primitiveReferenceFrame","hasPickedPrimitive")),this._primitiveOnly=c("Show only selected","filterPrimitive","hasPickedPrimitive"),I.appendChild(this._primitiveOnly);let B=a(s,"Terrain","terrainVisible","toggleTerrain"),v=document.createElement("div");v.className="cesium-cesiumInspector-pickSection",B.appendChild(v);let P=document.createElement("input");P.type="button",P.value="Pick a tile",P.className="cesium-cesiumInspector-pickButton",P.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickTileActive}, click: pickTile'),S=document.createElement("div"),S.appendChild(P),S.className="cesium-cesiumInspector-center",v.appendChild(S);let M=document.createElement("div");v.appendChild(M);let L=document.createElement("input");L.type="button",L.value="Parent",L.className="cesium-cesiumInspector-pickButton",L.setAttribute("data-bind","click: selectParent");let p=document.createElement("input");p.type="button",p.value="NW",p.className="cesium-cesiumInspector-pickButton",p.setAttribute("data-bind","click: selectNW");let x=document.createElement("input");x.type="button",x.value="NE",x.className="cesium-cesiumInspector-pickButton",x.setAttribute("data-bind","click: selectNE");let T=document.createElement("input");T.type="button",T.value="SW",T.className="cesium-cesiumInspector-pickButton",T.setAttribute("data-bind","click: selectSW");let w=document.createElement("input");w.type="button",w.value="SE",w.className="cesium-cesiumInspector-pickButton",w.setAttribute("data-bind","click: selectSE");let R=document.createElement("div");R.className="cesium-cesiumInspector-tileText",M.className="cesium-cesiumInspector-frustumStatistics",M.appendChild(R),M.setAttribute("data-bind","visible: hasPickedTile"),R.setAttribute("data-bind","html: tileText");let O=document.createElement("div");O.className="cesium-cesiumInspector-relativeText",O.textContent="Select relative:",M.appendChild(O);let k=document.createElement("table"),Q=document.createElement("tr"),z=document.createElement("tr"),F=document.createElement("td");F.appendChild(L);let H=document.createElement("td");H.appendChild(p);let W=document.createElement("td");W.appendChild(x),Q.appendChild(F),Q.appendChild(H),Q.appendChild(W);let Z=document.createElement("td"),Y=document.createElement("td");Y.appendChild(T);let $=document.createElement("td");$.appendChild(w),z.appendChild(Z),z.appendChild(Y),z.appendChild($),k.appendChild(Q),k.appendChild(z),M.appendChild(k),v.appendChild(c("Show bounding volume","tileBoundingSphere","hasPickedTile")),v.appendChild(c("Show only selected","filterTile","hasPickedTile")),B.appendChild(c("Wireframe","wireframe")),B.appendChild(c("Suspend LOD update","suspendUpdates")),B.appendChild(c("Show tile coordinates","tileCoordinates")),Ie.applyBindings(i,this._element)}Object.defineProperties(Q5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});Q5.prototype.isDestroyed=function(){return!1};Q5.prototype.destroy=function(){return Ie.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),ue(this)};var fU=Q5;function k5(e,t){l(t)||(t=document.body),t=kn(t);let n=this,i=Ie.observable(Fr.fullscreen),o=Ie.observable(Fr.enabled),r=t.ownerDocument;this.isFullscreen=void 0,Ie.defineProperty(this,"isFullscreen",{get:function(){return i()}}),this.isFullscreenEnabled=void 0,Ie.defineProperty(this,"isFullscreenEnabled",{get:function(){return o()},set:function(s){o(s&&Fr.enabled)}}),this.tooltip=void 0,Ie.defineProperty(this,"tooltip",function(){return this.isFullscreenEnabled?i()?"Exit full screen":"Full screen":"Full screen unavailable"}),this._command=Rn(function(){Fr.fullscreen?Fr.exitFullscreen():Fr.requestFullscreen(n._fullscreenElement)},Ie.getObservable(this,"isFullscreenEnabled")),this._fullscreenElement=kn(e)??r.body,this._callback=function(){i(Fr.fullscreen)},r.addEventListener(Fr.changeEventName,this._callback)}Object.defineProperties(k5.prototype,{fullscreenElement:{get:function(){return this._fullscreenElement},set:function(e){this._fullscreenElement=e}},command:{get:function(){return this._command}}});k5.prototype.isDestroyed=function(){return!1};k5.prototype.destroy=function(){document.removeEventListener(Fr.changeEventName,this._callback),ue(this)};var dU=k5;var QPt="M 83.96875 17.5625 L 83.96875 17.59375 L 76.65625 24.875 L 97.09375 24.96875 L 76.09375 45.96875 L 81.9375 51.8125 L 102.78125 30.9375 L 102.875 51.15625 L 110.15625 43.875 L 110.1875 17.59375 L 83.96875 17.5625 z M 44.125 17.59375 L 17.90625 17.625 L 17.9375 43.90625 L 25.21875 51.1875 L 25.3125 30.96875 L 46.15625 51.8125 L 52 45.96875 L 31 25 L 51.4375 24.90625 L 44.125 17.59375 z M 46.0625 76.03125 L 25.1875 96.875 L 25.09375 76.65625 L 17.8125 83.9375 L 17.8125 110.21875 L 44 110.25 L 51.3125 102.9375 L 30.90625 102.84375 L 51.875 81.875 L 46.0625 76.03125 z M 82 76.15625 L 76.15625 82 L 97.15625 103 L 76.71875 103.0625 L 84.03125 110.375 L 110.25 110.34375 L 110.21875 84.0625 L 102.9375 76.8125 L 102.84375 97 L 82 76.15625 z",kPt="M 104.34375 17.5625 L 83.5 38.4375 L 83.40625 18.21875 L 76.125 25.5 L 76.09375 51.78125 L 102.3125 51.8125 L 102.3125 51.78125 L 109.625 44.5 L 89.1875 44.40625 L 110.1875 23.40625 L 104.34375 17.5625 z M 23.75 17.59375 L 17.90625 23.4375 L 38.90625 44.4375 L 18.5 44.53125 L 25.78125 51.8125 L 52 51.78125 L 51.96875 25.53125 L 44.6875 18.25 L 44.625 38.46875 L 23.75 17.59375 z M 25.6875 76.03125 L 18.375 83.3125 L 38.78125 83.40625 L 17.8125 104.40625 L 23.625 110.25 L 44.5 89.375 L 44.59375 109.59375 L 51.875 102.3125 L 51.875 76.0625 L 25.6875 76.03125 z M 102.375 76.15625 L 76.15625 76.1875 L 76.1875 102.4375 L 83.46875 109.71875 L 83.5625 89.53125 L 104.40625 110.375 L 110.25 104.53125 L 89.25 83.53125 L 109.6875 83.46875 L 102.375 76.15625 z";function U5(e,t){e=kn(e);let n=new dU(t,e);n._exitFullScreenPath=kPt,n._enterFullScreenPath=QPt;let i=document.createElement("button");i.type="button",i.className="cesium-button cesium-fullscreenButton",i.setAttribute("data-bind","attr: { title: tooltip },click: command,enable: isFullscreenEnabled,cesiumSvgPath: { path: isFullscreen ? _exitFullScreenPath : _enterFullScreenPath, width: 128, height: 128 }"),e.appendChild(i),Ie.applyBindings(n,i),this._container=e,this._viewModel=n,this._element=i}Object.defineProperties(U5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});U5.prototype.isDestroyed=function(){return!1};U5.prototype.destroy=function(){return this._viewModel.destroy(),Ie.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var hU=U5;var Bwe=1e3;function Jd(e){l(e.geocoderServices)?this._geocoderServices=e.geocoderServices:this._geocoderServices=[new yx({scene:e.scene})],this._viewContainer=e.container,this._scene=e.scene,this._flightDuration=e.flightDuration,this._searchText="",this._isSearchInProgress=!1,this._wasGeocodeCancelled=!1,this._previousCredits=[],this._complete=new _e,this._suggestions=[],this._selectedSuggestion=void 0,this._showSuggestions=!0,this._handleArrowDown=vwe,this._handleArrowUp=Dwe;let t=this;this._suggestionsVisible=Ie.pureComputed(function(){let o=Ie.getObservable(t,"_suggestions")().length>0,r=Ie.getObservable(t,"_showSuggestions")();return o&&r}),this._searchCommand=Rn(function(i){if(i=i??wC.SEARCH,t._focusTextbox=!1,l(t._selectedSuggestion))return t.activateSuggestion(t._selectedSuggestion),!1;if(t.hideSuggestions(),t.isSearchInProgress)WPt(t);else return VPt(t,t._geocoderServices,i)}),this.deselectSuggestion=function(){t._selectedSuggestion=void 0},this.handleKeyDown=function(i,o){let r=o.key==="ArrowDown"||o.key==="Down"||o.keyCode===40,s=o.key==="ArrowUp"||o.key==="Up"||o.keyCode===38;return(r||s)&&o.preventDefault(),!0},this.handleKeyUp=function(i,o){let r=o.key==="ArrowDown"||o.key==="Down"||o.keyCode===40,s=o.key==="ArrowUp"||o.key==="Up"||o.keyCode===38,a=o.key==="Enter"||o.keyCode===13;return s?Dwe(t):r?vwe(t):a&&t._searchCommand(),!0},this.activateSuggestion=function(i){t.hideSuggestions(),t._searchText=i.displayName;let o=i.destination;Mwe(t),t.destinationFound(t,o)},this.hideSuggestions=function(){t._showSuggestions=!1,t._selectedSuggestion=void 0},this.showSuggestions=function(){t._showSuggestions=!0},this.handleMouseover=function(i,o){i!==t._selectedSuggestion&&(t._selectedSuggestion=i)},this.keepExpanded=!1,this.autoComplete=e.autocomplete??!0,this.destinationFound=e.destinationFound??Jd.flyToDestination,this._focusTextbox=!1,Ie.track(this,["_searchText","_isSearchInProgress","keepExpanded","_suggestions","_selectedSuggestion","_showSuggestions","_focusTextbox"]);let n=Ie.getObservable(this,"_searchText");n.extend({rateLimit:{timeout:500}}),this._suggestionSubscription=n.subscribe(function(){Jd._updateSearchSuggestions(t)}),this.isSearchInProgress=void 0,Ie.defineProperty(this,"isSearchInProgress",{get:function(){return this._isSearchInProgress}}),this.searchText=void 0,Ie.defineProperty(this,"searchText",{get:function(){return this.isSearchInProgress?"Searching...":this._searchText},set:function(i){this._searchText=i}}),this.flightDuration=void 0,Ie.defineProperty(this,"flightDuration",{get:function(){return this._flightDuration},set:function(i){this._flightDuration=i}})}Object.defineProperties(Jd.prototype,{complete:{get:function(){return this._complete}},scene:{get:function(){return this._scene}},search:{get:function(){return this._searchCommand}},selectedSuggestion:{get:function(){return this._selectedSuggestion}},suggestions:{get:function(){return this._suggestions}}});Jd.prototype.destroy=function(){this._suggestionSubscription.dispose()};function Dwe(e){if(e._suggestions.length===0)return;let t=e._suggestions.indexOf(e._selectedSuggestion);if(t===-1||t===0){e._selectedSuggestion=void 0;return}let n=t-1;e._selectedSuggestion=e._suggestions[n],Jd._adjustSuggestionsScroll(e,n)}function vwe(e){if(e._suggestions.length===0)return;let t=e._suggestions.length,i=(e._suggestions.indexOf(e._selectedSuggestion)+1)%t;e._selectedSuggestion=e._suggestions[i],Jd._adjustSuggestionsScroll(e,i)}function UPt(e,t){let n=l(t)?t.availability:void 0;return l(n)?PI(t,[e]).then(function(i){return e=i[0],e.height+=Bwe,e}):(e.height+=Bwe,Promise.resolve(e))}function GPt(e,t){let n=e._scene,i=n.ellipsoid,o=n.camera,r=n.terrainProvider,s=t,a;return t instanceof ae?D.equalsEpsilon(t.south,t.north,D.EPSILON7)&&D.equalsEpsilon(t.east,t.west,D.EPSILON7)?t=ae.center(t):a=RI(t,n):t=i.cartesianToCartographic(t),l(a)||(a=UPt(t,r)),a.then(function(c){s=i.cartographicToCartesian(c)}).finally(function(){o.flyTo({destination:s,complete:function(){e._complete.raiseEvent()},duration:e._flightDuration,endTransform:N.IDENTITY})})}async function zPt(e,t,n){try{return{state:"fulfilled",value:await e.geocode(t,n),credits:e.credit}}catch(i){return{state:"rejected",reason:i}}}async function VPt(e,t,n){let i=e._searchText;if(Rwe(i)){e.showSuggestions();return}e._isSearchInProgress=!0,e._wasGeocodeCancelled=!1;let o,r;for(o=0;o<t.length;o++){if(e._wasGeocodeCancelled)return;if(r=await zPt(t[o],i,n),l(r)&&r.state==="fulfilled"&&r.value.length>0)break}if(e._wasGeocodeCancelled)return;e._isSearchInProgress=!1,tte(e);let s=r.value;if(r.state==="fulfilled"&&l(s)&&s.length>0){e._searchText=s[0].displayName,e.destinationFound(e,s[0].destination);let a=Pwe(e,Ww.getCreditsFromResult(s[0]));l(a)||ete(e,t[o].credit);return}e._searchText=`${i} (not found)`}function ete(e,t){l(t)&&!e._scene.isDestroyed()&&!e._scene.frameState.creditDisplay.isDestroyed()&&(e._scene.frameState.creditDisplay.addStaticCredit(t),e._previousCredits.push(t))}function Pwe(e,t){return l(t)&&t.forEach(n=>ete(e,n)),t}function tte(e){!e._scene.isDestroyed()&&!e._scene.frameState.creditDisplay.isDestroyed()&&e._previousCredits.forEach(t=>{e._scene.frameState.creditDisplay.removeStaticCredit(t)}),e._previousCredits.length=0}function HPt(e,t){let n=kn(e._viewContainer),i=n.getElementsByClassName("search-results")[0],r=n.getElementsByTagName("li")[t];if(t===0){i.scrollTop=0;return}let s=r.offsetTop;s+r.clientHeight>i.clientHeight?i.scrollTop=s+r.clientHeight:s<i.scrollTop&&(i.scrollTop=s)}function WPt(e){e._isSearchInProgress&&(e._isSearchInProgress=!1,e._wasGeocodeCancelled=!0)}function Rwe(e){return/^\s*$/.test(e)}function Mwe(e){Ie.getObservable(e,"_suggestions").removeAll()}async function jPt(e){if(!e.autoComplete)return;let t=e._searchText;if(Mwe(e),tte(e),!Rwe(t))for(let n of e._geocoderServices){let i=await n.geocode(t,wC.AUTOCOMPLETE);if(e._suggestions=e._suggestions.concat(i),i.length>0){let o=!0;i.forEach(r=>{let s=Ww.getCreditsFromResult(r);o=o&&!l(s),Pwe(e,s)}),o&&ete(e,n.credit)}if(e._suggestions.length>=5)return}}Jd.flyToDestination=GPt;Jd._updateSearchSuggestions=jPt;Jd._adjustSuggestionsScroll=HPt;Jd.prototype.isDestroyed=function(){return!1};Jd.prototype.destroy=function(){return tte(this),ue(this)};var mU=Jd;var YPt="M29.772,26.433l-7.126-7.126c0.96-1.583,1.523-3.435,1.524-5.421C24.169,8.093,19.478,3.401,13.688,3.399C7.897,3.401,3.204,8.093,3.204,13.885c0,5.789,4.693,10.481,10.484,10.481c1.987,0,3.839-0.563,5.422-1.523l7.128,7.127L29.772,26.433zM7.203,13.885c0.006-3.582,2.903-6.478,6.484-6.486c3.579,0.008,6.478,2.904,6.484,6.486c-0.007,3.58-2.905,6.476-6.484,6.484C10.106,20.361,7.209,17.465,7.203,13.885z",qPt="M24.778,21.419 19.276,15.917 24.777,10.415 21.949,7.585 16.447,13.087 10.945,7.585 8.117,10.415 13.618,15.917 8.116,21.419 10.946,24.248 16.447,18.746 21.948,24.248z";function G5(e){let t=kn(e.container),n=new mU(e);n._startSearchPath=YPt,n._stopSearchPath=qPt;let i=document.createElement("form");i.setAttribute("data-bind","submit: search");let o=document.createElement("input");o.type="search",o.className="cesium-geocoder-input",o.setAttribute("placeholder","Enter an address or landmark..."),o.setAttribute("data-bind",'textInput: searchText,disable: isSearchInProgress,event: { keyup: handleKeyUp, keydown: handleKeyDown, mouseover: deselectSuggestion },css: { "cesium-geocoder-input-wide" : keepExpanded || searchText.length > 0 },hasFocus: _focusTextbox'),this._onTextBoxFocus=function(){setTimeout(function(){o.select()},0)},o.addEventListener("focus",this._onTextBoxFocus,!1),i.appendChild(o),this._textBox=o;let r=document.createElement("span");r.className="cesium-geocoder-searchButton",r.setAttribute("data-bind","click: search,cesiumSvgPath: { path: isSearchInProgress ? _stopSearchPath : _startSearchPath, width: 32, height: 32 }"),i.appendChild(r),t.appendChild(i);let s=document.createElement("div");s.className="search-results",s.setAttribute("data-bind","visible: _suggestionsVisible");let a=document.createElement("ul");a.setAttribute("data-bind","foreach: _suggestions");let c=document.createElement("li");a.appendChild(c),c.setAttribute("data-bind","text: $data.displayName, click: $parent.activateSuggestion, event: { mouseover: $parent.handleMouseover}, css: { active: $data === $parent._selectedSuggestion }"),s.appendChild(a),t.appendChild(s),Ie.applyBindings(n,i),Ie.applyBindings(n,s),this._container=t,this._searchSuggestionsContainer=s,this._viewModel=n,this._form=i,this._onInputBegin=function(u){let f=u.target;typeof u.composedPath=="function"&&(f=u.composedPath()[0]),t.contains(f)||(n._focusTextbox=!1,n.hideSuggestions())},this._onInputEnd=function(u){n._focusTextbox=!0,n.showSuggestions()},Wt.supportsPointerEvents()?(document.addEventListener("pointerdown",this._onInputBegin,!0),t.addEventListener("pointerup",this._onInputEnd,!0),t.addEventListener("pointercancel",this._onInputEnd,!0)):(document.addEventListener("mousedown",this._onInputBegin,!0),t.addEventListener("mouseup",this._onInputEnd,!0),document.addEventListener("touchstart",this._onInputBegin,!0),t.addEventListener("touchend",this._onInputEnd,!0),t.addEventListener("touchcancel",this._onInputEnd,!0))}Object.defineProperties(G5.prototype,{container:{get:function(){return this._container}},searchSuggestionsContainer:{get:function(){return this._searchSuggestionsContainer}},viewModel:{get:function(){return this._viewModel}}});G5.prototype.isDestroyed=function(){return!1};G5.prototype.destroy=function(){let e=this._container;return Wt.supportsPointerEvents()?(document.removeEventListener("pointerdown",this._onInputBegin,!0),e.removeEventListener("pointerup",this._onInputEnd,!0)):(document.removeEventListener("mousedown",this._onInputBegin,!0),e.removeEventListener("mouseup",this._onInputEnd,!0),document.removeEventListener("touchstart",this._onInputBegin,!0),e.removeEventListener("touchend",this._onInputEnd,!0)),this._viewModel.destroy(),Ie.cleanNode(this._form),Ie.cleanNode(this._searchSuggestionsContainer),e.removeChild(this._form),e.removeChild(this._searchSuggestionsContainer),this._textBox.removeEventListener("focus",this._onTextBoxFocus,!1),ue(this)};var AU=G5;function Nwe(e,t){this._scene=e,this._duration=t;let n=this;this._command=Rn(function(){n._scene.camera.flyHome(n._duration)}),this.tooltip="View Home",Ie.track(this,["tooltip"])}Object.defineProperties(Nwe.prototype,{scene:{get:function(){return this._scene}},command:{get:function(){return this._command}},duration:{get:function(){return this._duration},set:function(e){this._duration=e}}});var pU=Nwe;function z5(e,t,n){e=kn(e);let i=new pU(t,n);i._svgPath="M14,4l-10,8.75h20l-4.25-3.7188v-4.6562h-2.812v2.1875l-2.938-2.5625zm-7.0938,9.906v10.094h14.094v-10.094h-14.094zm2.1876,2.313h3.3122v4.25h-3.3122v-4.25zm5.8442,1.281h3.406v6.438h-3.406v-6.438z";let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-toolbar-button cesium-home-button",o.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 28, height: 28 }"),e.appendChild(o),Ie.applyBindings(i,o),this._container=e,this._viewModel=i,this._element=o}Object.defineProperties(z5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});z5.prototype.isDestroyed=function(){return!1};z5.prototype.destroy=function(){return Ie.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var gU=z5;function KPt(e,t){t.currentTarget.parentElement.parentElement.querySelector(`#${e.name}-expander`).classList.toggle("active"),t.currentTarget.textContent=t.currentTarget.textContent==="+"?"-":"+"}function Owe(e,t){Ie.track(e);for(let n=0;n<e.sublayers.length;n++)Owe(e.sublayers[n],t)}function V5(e){return e.modelName==="FullModel"}function Fwe(e){return e.modelName==="Overview"}function Qwe(e){return Fwe(e)||V5(e)}function Lwe(e,t){if(Qwe(e)){e.visibility=!1;for(let i=0;i<e.sublayers.length;i++)e.sublayers[i].visibility=!0;let n={name:e.name,modelName:e.modelName,disable:Ie.observable(!1),index:t.sublayers.length};return t.topLayers.push(n),t.sublayers.push(e),n}}function XPt(e,t){if(Qwe(e)){t.sublayers.forEach(i=>i.visibility=!1),t.sublayers[e.index].visibility=!0;let n=document.getElementById("bsl-wrapper");V5(e)?(t.currentLevel=t.selectedLevel,n.style.display="block"):(t.selectedLevel=t.currentLevel,t.currentLevel="All",n.style.display="none")}}async function JPt(e,t){try{let n=e.getAttributeNames();for(let i=0;i<n.length;i++)if(n[i]==="BldgLevel"){let o=e.getAttributeValues(n[i]);for(let r=0;r<o.length;r++)t.push(o[r])}t.sort((i,o)=>i-o),t.unshift("All")}catch(n){console.log(`There was an error getting attributes: ${n}`)}}function ZPt(e){let t=this;this.levels=[],this.viewModel={sublayers:[],levels:this.levels,currentLevel:Ie.observable(),selectedLevel:"All",topLayers:[{name:"Select a layer to explore...",disable:Ie.observable(!0),index:-1}],currentLayer:Ie.observable(),expandClickHandler:KPt,setOptionDisable:function(i,o){Ie.applyBindingsToNode(i,{disable:o.disable},o)},defaultLayer:void 0},this.viewModel.currentLayer.subscribe(function(i){XPt(i,t.viewModel)});let n=e.sublayers;for(let i=0;i<n.length;i++){Owe(n[i],this.viewModel);let o=Lwe(n[i],this.viewModel);l(o)&&(Fwe(o)||!l(this.viewModel.defaultLayer)&&V5(o))&&(this.viewModel.defaultLayer=o)}if(this.viewModel.topLayers.length===1&&n.length>0){e.show=!1;let i={name:"Full Model",modelName:"FullModel",visibility:e.show,sublayers:e.sublayers};this.viewModel.defaultLayer=Lwe(i,this.viewModel),this.viewModel.currentLayer.subscribe(function(o){e.show=V5(o)})}else this.viewModel.topLayers.length===1&&(this.viewModel.topLayers[0].name="Building layers not found");return JPt(e,this.levels),this.viewModel.currentLevel.subscribe(function(i){i!=="All"?e.filterByAttributes([{name:"BldgLevel",values:[i]}]):e.filterByAttributes()}),this.viewModel}var _U=ZPt;function $Pt(e,t){let n=document.getElementById(e),i=document.createElement("div");i.classList.add("cesium-viewer-i3s-explorer"),i.innerHTML=` + <h3>Building explorer</h3> + <select + data-bind="options: topLayers, optionsText: 'name', optionsAfterRender: setOptionDisable, value: currentLayer" + ></select> + <div id="bsl-wrapper"> + <h3>Select Level</h3> + <select data-bind="options: levels, value: currentLevel"></select> + <h3>Disciplines & Categories</h3> + <ul class="layersList" data-bind="foreach: sublayers"> + <ul class="layersList" data-bind="foreach: sublayers.sort(function (l, r) { return l.name.localeCompare(r.name) })"> + <li> + <div class="li-wrapper"> + <span + class="expandItem" + data-bind="click: $root.expandClickHandler" + >+</span + > + <input + type="checkbox" + data-bind="checked: visibility, valueUpdate: 'input', attr: { id: name}" + /> + <label data-bind="attr: { for: name}"> + <span data-bind="text: name"></span> + </label> + </div> + <ul class="nested" data-bind="attr: { id: name + '-expander'}"> + <li data-bind="foreach: sublayers.sort(function (l, r) { return l.name.localeCompare(r.name) })"> + <div class="li-wrapper"> + <input + type="checkbox" + data-bind="checked: visibility, valueUpdate: 'input', attr: { id: name}" + /> + <label data-bind="attr: { for: name}"> + <span data-bind="text: name"></span> + </label> + </div> + </li> + </ul> + </li> + </ul> + </ul> + </div>`,n.appendChild(i);let o=new _U(t);Ie.track(o),Ie.applyBindings(o,n),l(o.defaultLayer)&&(o.currentLayer=o.defaultLayer)}var nte=$Pt;var eRt="M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4853444 22.104033 11.423165 24.0625 13.84375 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 8.975298 28.305952 7.03125 25.875 7.03125 L 13.84375 7.03125 z",tRt="M 27.34375 1.65625 L 5.28125 27.9375 L 8.09375 30.3125 L 30.15625 4.03125 L 27.34375 1.65625 z M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4724893 20.232036 9.5676108 20.7379 9.75 21.21875 L 21.65625 7.03125 L 13.84375 7.03125 z M 28.21875 7.71875 L 14.53125 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 9.8371439 29.456025 8.4902779 28.21875 7.71875 z";function ite(){this._cameraClicked=new _e,this._closeClicked=new _e,this.maxHeight=500,this.enableCamera=!1,this.isCameraTracking=!1,this.showInfo=!1,this.titleText="",this.description="",Ie.track(this,["showInfo","titleText","description","maxHeight","enableCamera","isCameraTracking"]),this._loadingIndicatorHtml='<div class="cesium-infoBox-loadingContainer"><span class="cesium-infoBox-loading"></span></div>',this.cameraIconPath=void 0,Ie.defineProperty(this,"cameraIconPath",{get:function(){return!this.enableCamera||this.isCameraTracking?tRt:eRt}}),Ie.defineProperty(this,"_bodyless",{get:function(){return!l(this.description)||this.description.length===0}})}ite.prototype.maxHeightOffset=function(e){return`${this.maxHeight-e}px`};Object.defineProperties(ite.prototype,{cameraClicked:{get:function(){return this._cameraClicked}},closeClicked:{get:function(){return this._closeClicked}}});var yU=ite;function H5(e){e=kn(e);let t=document.createElement("div");t.className="cesium-infoBox",t.setAttribute("data-bind",'css: { "cesium-infoBox-visible" : showInfo, "cesium-infoBox-bodyless" : _bodyless }'),e.appendChild(t);let n=document.createElement("div");n.className="cesium-infoBox-title",n.setAttribute("data-bind","text: titleText"),t.appendChild(n);let i=document.createElement("button");i.type="button",i.className="cesium-button cesium-infoBox-camera",i.setAttribute("data-bind",'attr: { title: "Focus camera on object" },click: function () { cameraClicked.raiseEvent(this); },enable: enableCamera,cesiumSvgPath: { path: cameraIconPath, width: 32, height: 32 }'),t.appendChild(i);let o=document.createElement("button");o.type="button",o.className="cesium-infoBox-close",o.setAttribute("data-bind","click: function () { closeClicked.raiseEvent(this); }"),o.innerHTML="×",t.appendChild(o);let r=document.createElement("iframe");r.className="cesium-infoBox-iframe",r.setAttribute("sandbox","allow-same-origin allow-popups allow-forms"),r.setAttribute("data-bind","style : { maxHeight : maxHeightOffset(40) }"),r.setAttribute("allowfullscreen",!0),t.appendChild(r);let s=new yU;Ie.applyBindings(s,t),this._container=e,this._element=t,this._frame=r,this._viewModel=s,this._descriptionSubscription=void 0;let a=this;r.addEventListener("load",function(){let c=r.contentDocument,u=c.createElement("link");u.href=fn("Widgets/InfoBox/InfoBoxDescription.css"),u.rel="stylesheet",u.type="text/css";let f=c.createElement("div");f.className="cesium-infoBox-description",c.head.appendChild(u),c.body.appendChild(f),a._descriptionSubscription=tc(s,"description",function(h){r.style.height="5px",f.innerHTML=h;let A=null,g=f.firstElementChild;if(g!==null&&f.childNodes.length===1){let _=window.getComputedStyle(g);if(_!==null){let y=_["background-color"],C=G.fromCssColorString(y);l(C)&&C.alpha!==0&&(A=_["background-color"])}}t.style["background-color"]=A;let m=f.getBoundingClientRect().height;r.style.height=`${m}px`})}),r.setAttribute("src","about:blank")}Object.defineProperties(H5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}},frame:{get:function(){return this._frame}}});H5.prototype.isDestroyed=function(){return!1};H5.prototype.destroy=function(){let e=this._container;return Ie.cleanNode(this._element),e.removeChild(this._element),l(this._descriptionSubscription)&&this._descriptionSubscription.dispose(),ue(this)};var CU=H5;function kwe(){this.showInstructions=!1;let e=this;this._command=Rn(function(){e.showInstructions=!e.showInstructions}),this._showClick=Rn(function(){e._touch=!1}),this._showTouch=Rn(function(){e._touch=!0}),this._touch=!1,this.tooltip="Navigation Instructions",Ie.track(this,["tooltip","showInstructions","_touch"])}Object.defineProperties(kwe.prototype,{command:{get:function(){return this._command}},showClick:{get:function(){return this._showClick}},showTouch:{get:function(){return this._showTouch}}});var EU=kwe;function W5(e){let t=kn(e.container),n=new EU,i=e.instructionsInitiallyVisible??!1;n.showInstructions=i,n._svgPath="M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466z M17.328,24.371h-2.707v-2.596h2.707V24.371zM17.328,19.003v0.858h-2.707v-1.057c0-3.19,3.63-3.696,3.63-5.963c0-1.034-0.924-1.826-2.134-1.826c-1.254,0-2.354,0.924-2.354,0.924l-1.541-1.915c0,0,1.519-1.584,4.137-1.584c2.487,0,4.796,1.54,4.796,4.136C21.156,16.208,17.328,16.627,17.328,19.003z";let o=document.createElement("span");o.className="cesium-navigationHelpButton-wrapper",t.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button cesium-navigation-help-button",r.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 32, height: 32 }"),o.appendChild(r);let s=document.createElement("div");s.className="cesium-navigation-help",s.setAttribute("data-bind",'css: { "cesium-navigation-help-visible" : showInstructions}'),o.appendChild(s);let a=document.createElement("button");a.type="button",a.className="cesium-navigation-button cesium-navigation-button-left",a.setAttribute("data-bind",'click: showClick, css: {"cesium-navigation-button-selected": !_touch, "cesium-navigation-button-unselected": _touch}');let c=document.createElement("img");c.src=fn("Widgets/Images/NavigationHelp/Mouse.svg"),c.className="cesium-navigation-button-icon",c.style.width="25px",c.style.height="25px",a.appendChild(c),a.appendChild(document.createTextNode("Mouse"));let u=document.createElement("button");u.type="button",u.className="cesium-navigation-button cesium-navigation-button-right",u.setAttribute("data-bind",'click: showTouch, css: {"cesium-navigation-button-selected": _touch, "cesium-navigation-button-unselected": !_touch}');let f=document.createElement("img");f.src=fn("Widgets/Images/NavigationHelp/Touch.svg"),f.className="cesium-navigation-button-icon",f.style.width="25px",f.style.height="25px",u.appendChild(f),u.appendChild(document.createTextNode("Touch")),s.appendChild(a),s.appendChild(u);let h=document.createElement("div");h.className="cesium-click-navigation-help cesium-navigation-help-instructions",h.setAttribute("data-bind",'css: { "cesium-click-navigation-help-visible" : !_touch}'),h.innerHTML=` <table> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/MouseLeft.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">Left click + drag</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/MouseRight.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Right click + drag, or</div> <div class="cesium-navigation-help-details">Mouse wheel scroll</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/MouseMiddle.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Rotate view</div> <div class="cesium-navigation-help-details">Middle click + drag, or</div> <div class="cesium-navigation-help-details">CTRL + Left/Right click + drag</div> </td> </tr> </table>`,s.appendChild(h);let A=document.createElement("div");A.className="cesium-touch-navigation-help cesium-navigation-help-instructions",A.setAttribute("data-bind",'css: { "cesium-touch-navigation-help-visible" : _touch}'),A.innerHTML=` <table> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/TouchDrag.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">One finger drag</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/TouchZoom.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Two finger pinch</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/TouchTilt.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Tilt view</div> <div class="cesium-navigation-help-details">Two finger drag, same direction</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/TouchRotate.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-tilt">Rotate view</div> <div class="cesium-navigation-help-details">Two finger drag, opposite direction</div> </td> </tr> </table>`,s.appendChild(A),Ie.applyBindings(n,o),this._container=t,this._viewModel=n,this._wrapper=o,this._closeInstructions=function(g){o.contains(g.target)||(n.showInstructions=!1)},Wt.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeInstructions,!0):(document.addEventListener("mousedown",this._closeInstructions,!0),document.addEventListener("touchstart",this._closeInstructions,!0))}Object.defineProperties(W5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});W5.prototype.isDestroyed=function(){return!1};W5.prototype.destroy=function(){return Wt.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeInstructions,!0):(document.removeEventListener("mousedown",this._closeInstructions,!0),document.removeEventListener("touchstart",this._closeInstructions,!0)),Ie.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),ue(this)};var IU=W5;function ote(e){this._scene=e.scene,this.lowFrameRateMessage=e.lowFrameRateMessage??"This application appears to be performing poorly on your system. Please try using a different web browser or updating your video drivers.",this.lowFrameRateMessageDismissed=!1,this.showingLowFrameRateMessage=!1,Ie.track(this,["lowFrameRateMessage","lowFrameRateMessageDismissed","showingLowFrameRateMessage"]);let t=this;this._dismissMessage=Rn(function(){t.showingLowFrameRateMessage=!1,t.lowFrameRateMessageDismissed=!0});let n=v3.fromScene(e.scene);this._unsubscribeLowFrameRate=n.lowFrameRate.addEventListener(function(){t.lowFrameRateMessageDismissed||(t.showingLowFrameRateMessage=!0)}),this._unsubscribeNominalFrameRate=n.nominalFrameRate.addEventListener(function(){t.showingLowFrameRateMessage=!1})}Object.defineProperties(ote.prototype,{scene:{get:function(){return this._scene}},dismissMessage:{get:function(){return this._dismissMessage}}});ote.prototype.destroy=function(){return this._unsubscribeLowFrameRate(),this._unsubscribeNominalFrameRate(),ue(this)};var xU=ote;function j5(e){let t=kn(e.container),n=new xU(e),i=document.createElement("div");i.className="cesium-performance-watchdog-message-area",i.setAttribute("data-bind","visible: showingLowFrameRateMessage");let o=document.createElement("button");o.setAttribute("type","button"),o.className="cesium-performance-watchdog-message-dismiss",o.innerHTML="×",o.setAttribute("data-bind","click: dismissMessage"),i.appendChild(o);let r=document.createElement("div");r.className="cesium-performance-watchdog-message",r.setAttribute("data-bind","html: lowFrameRateMessage"),i.appendChild(r),t.appendChild(i),Ie.applyBindings(n,i),this._container=t,this._viewModel=n,this._element=i}Object.defineProperties(j5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});j5.prototype.isDestroyed=function(){return!1};j5.prototype.destroy=function(){return this._viewModel.destroy(),Ie.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var bU=j5;function Y5(e){this._scene=e,this._orthographic=e.camera.frustum instanceof An,this._flightInProgress=!1,this.dropDownVisible=!1,this.tooltipPerspective="Perspective Projection",this.tooltipOrthographic="Orthographic Projection",this.selectedTooltip=void 0,this.sceneMode=e.mode,Ie.track(this,["_orthographic","_flightInProgress","sceneMode","dropDownVisible","tooltipPerspective","tooltipOrthographic"]);let t=this;Ie.defineProperty(this,"selectedTooltip",function(){return t._orthographic?t.tooltipOrthographic:t.tooltipPerspective}),this._toggleDropDown=Rn(function(){t.sceneMode===ie.SCENE2D||t._flightInProgress||(t.dropDownVisible=!t.dropDownVisible)}),this._eventHelper=new Dr,this._eventHelper.add(e.morphComplete,function(n,i,o,r){t.sceneMode=o,t._orthographic=o===ie.SCENE2D||t._scene.camera.frustum instanceof An}),this._eventHelper.add(e.preRender,function(){t._flightInProgress=l(e.camera._currentFlight)}),this._switchToPerspective=Rn(function(){t.sceneMode!==ie.SCENE2D&&(t._scene.camera.switchToPerspectiveFrustum(),t._orthographic=!1,t.dropDownVisible=!1)}),this._switchToOrthographic=Rn(function(){t.sceneMode!==ie.SCENE2D&&(t._scene.camera.switchToOrthographicFrustum(),t._orthographic=!0,t.dropDownVisible=!1)}),this._sceneMode=ie}Object.defineProperties(Y5.prototype,{scene:{get:function(){return this._scene}},toggleDropDown:{get:function(){return this._toggleDropDown}},switchToPerspective:{get:function(){return this._switchToPerspective}},switchToOrthographic:{get:function(){return this._switchToOrthographic}},isOrthographicProjection:{get:function(){return this._orthographic}}});Y5.prototype.isDestroyed=function(){return!1};Y5.prototype.destroy=function(){this._eventHelper.removeAll(),ue(this)};var TU=Y5;var nRt="M 28.15625,10.4375 9.125,13.21875 13.75,43.25 41.75,55.09375 50.8125,37 54.5,11.9375 z m 0.125,3 19.976451,0.394265 L 43.03125,16.875 22.6875,14.28125 z M 50.971746,15.705477 47.90625,36.03125 42.53125,46 44.84375,19.3125 z M 12.625,16.03125 l 29.15625,3.6875 -2.65625,31 L 16.4375,41.125 z",iRt="m 31.560594,6.5254438 -20.75,12.4687502 0.1875,24.5625 22.28125,11.8125 19.5,-12 0.65625,-0.375 0,-0.75 0.0312,-23.21875 z m 0.0625,3.125 16.65625,9.5000002 -16.125,10.28125 -17.34375,-9.71875 z m 18.96875,11.1875002 0.15625,20.65625 -17.46875,10.59375 0.15625,-20.28125 z m -37.0625,1.25 17.21875,9.625 -0.15625,19.21875 -16.9375,-9 z";function q5(e,t){e=kn(e);let n=new TU(t);n._perspectivePath=nRt,n._orthographicPath=iRt;let i=document.createElement("span");i.className="cesium-projectionPicker-wrapper cesium-toolbar-button",e.appendChild(i);let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-toolbar-button",o.setAttribute("data-bind",'css: { "cesium-projectionPicker-buttonPerspective": !_orthographic, "cesium-projectionPicker-buttonOrthographic": _orthographic, "cesium-button-disabled" : sceneMode === _sceneMode.SCENE2D || _flightInProgress, "cesium-projectionPicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),o.innerHTML='<!-- ko cesiumSvgPath: { path: _perspectivePath, width: 64, height: 64, css: "cesium-projectionPicker-iconPerspective" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _orthographicPath, width: 64, height: 64, css: "cesium-projectionPicker-iconOrthographic" } --><!-- /ko -->',i.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button cesium-projectionPicker-dropDown-icon",r.setAttribute("data-bind",'css: { "cesium-projectionPicker-visible" : (dropDownVisible && _orthographic), "cesium-projectionPicker-none" : !_orthographic, "cesium-projectionPicker-hidden" : !dropDownVisible },attr: { title: tooltipPerspective },click: switchToPerspective,cesiumSvgPath: { path: _perspectivePath, width: 64, height: 64 }'),i.appendChild(r);let s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-projectionPicker-dropDown-icon",s.setAttribute("data-bind",'css: { "cesium-projectionPicker-visible" : (dropDownVisible && !_orthographic), "cesium-projectionPicker-none" : _orthographic, "cesium-projectionPicker-hidden" : !dropDownVisible},attr: { title: tooltipOrthographic },click: switchToOrthographic,cesiumSvgPath: { path: _orthographicPath, width: 64, height: 64 }'),i.appendChild(s),Ie.applyBindings(n,i),this._viewModel=n,this._container=e,this._wrapper=i,this._closeDropDown=function(a){i.contains(a.target)||(n.dropDownVisible=!1)},Wt.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(q5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});q5.prototype.isDestroyed=function(){return!1};q5.prototype.destroy=function(){return this._viewModel.destroy(),Wt.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),Ie.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),ue(this)};var SU=q5;function K5(e,t){this._scene=e;let n=this,i=function(o,r,s,a){n.sceneMode=s,n.dropDownVisible=!1};this._eventHelper=new Dr,this._eventHelper.add(e.morphStart,i),this._duration=t??2,this.sceneMode=e.mode,this.dropDownVisible=!1,this.tooltip2D="2D",this.tooltip3D="3D",this.tooltipColumbusView="Columbus View",Ie.track(this,["sceneMode","dropDownVisible","tooltip2D","tooltip3D","tooltipColumbusView"]),this.selectedTooltip=void 0,Ie.defineProperty(this,"selectedTooltip",function(){let o=n.sceneMode;return o===ie.SCENE2D?n.tooltip2D:o===ie.SCENE3D?n.tooltip3D:n.tooltipColumbusView}),this._toggleDropDown=Rn(function(){n.dropDownVisible=!n.dropDownVisible}),this._morphTo2D=Rn(function(){e.morphTo2D(n._duration)}),this._morphTo3D=Rn(function(){e.morphTo3D(n._duration)}),this._morphToColumbusView=Rn(function(){e.morphToColumbusView(n._duration)}),this._sceneMode=ie}Object.defineProperties(K5.prototype,{scene:{get:function(){return this._scene}},duration:{get:function(){return this._duration},set:function(e){this._duration=e}},toggleDropDown:{get:function(){return this._toggleDropDown}},morphTo2D:{get:function(){return this._morphTo2D}},morphTo3D:{get:function(){return this._morphTo3D}},morphToColumbusView:{get:function(){return this._morphToColumbusView}}});K5.prototype.isDestroyed=function(){return!1};K5.prototype.destroy=function(){this._eventHelper.removeAll(),ue(this)};var wU=K5;var oRt="m 32.401392,4.9330437 c -7.087603,0 -14.096095,2.884602 -19.10793,7.8946843 -5.0118352,5.010083 -7.9296167,11.987468 -7.9296167,19.072999 0,7.085531 2.9177815,14.097848 7.9296167,19.107931 4.837653,4.835961 11.541408,7.631372 18.374354,7.82482 0.05712,0.01231 0.454119,0.139729 0.454119,0.139729 l 0.03493,-0.104797 c 0.08246,7.84e-4 0.162033,0.03493 0.244525,0.03493 0.08304,0 0.161515,-0.03414 0.244526,-0.03493 l 0.03493,0.104797 c 0,0 0.309474,-0.129487 0.349323,-0.139729 6.867765,-0.168094 13.582903,-2.965206 18.444218,-7.82482 2.558195,-2.5573 4.551081,-5.638134 5.903547,-8.977584 1.297191,-3.202966 2.02607,-6.661489 2.02607,-10.130347 0,-6.237309 -2.366261,-12.31219 -6.322734,-17.116794 -0.0034,-0.02316 0.0049,-0.04488 0,-0.06986 -0.01733,-0.08745 -0.104529,-0.278855 -0.104797,-0.279458 -5.31e-4,-0.0012 -0.522988,-0.628147 -0.523984,-0.62878 -3.47e-4,-2.2e-4 -0.133444,-0.03532 -0.244525,-0.06987 C 51.944299,13.447603 51.751076,13.104317 51.474391,12.827728 46.462556,7.8176457 39.488996,4.9330437 32.401392,4.9330437 z m -2.130866,3.5281554 0.104797,9.6762289 c -4.111695,-0.08361 -7.109829,-0.423664 -9.257041,-0.943171 1.198093,-2.269271 2.524531,-4.124404 3.91241,-5.414496 2.167498,-2.0147811 3.950145,-2.8540169 5.239834,-3.3185619 z m 2.794579,0 c 1.280302,0.4754953 3.022186,1.3285948 5.065173,3.2486979 1.424667,1.338973 2.788862,3.303645 3.982275,5.728886 -2.29082,0.403367 -5.381258,0.621049 -8.942651,0.698645 L 33.065105,8.4611991 z m 5.728886,0.2445256 c 4.004072,1.1230822 7.793098,3.1481363 10.724195,6.0782083 0.03468,0.03466 0.07033,0.06991 0.104797,0.104797 -0.45375,0.313891 -0.923054,0.663002 -1.956205,1.082899 -0.647388,0.263114 -1.906242,0.477396 -2.829511,0.733577 -1.382296,-2.988132 -3.027146,-5.368585 -4.785716,-7.0213781 -0.422866,-0.397432 -0.835818,-0.6453247 -1.25756,-0.9781032 z m -15.33525,0.7685092 c -0.106753,0.09503 -0.207753,0.145402 -0.31439,0.244526 -1.684973,1.5662541 -3.298068,3.8232211 -4.680919,6.5672591 -0.343797,-0.14942 -1.035052,-0.273198 -1.292493,-0.419186 -0.956528,-0.542427 -1.362964,-1.022024 -1.537018,-1.292493 -0.0241,-0.03745 -0.01868,-0.0401 -0.03493,-0.06986 2.250095,-2.163342 4.948824,-3.869984 7.859752,-5.0302421 z m -9.641296,7.0912431 c 0.464973,0.571618 0.937729,1.169056 1.956205,1.746612 0.349907,0.198425 1.107143,0.335404 1.537018,0.523983 -1.20166,3.172984 -1.998037,7.051901 -2.165798,11.772162 C 14.256557,30.361384 12.934823,30.161483 12.280427,29.90959 10.644437,29.279855 9.6888882,28.674891 9.1714586,28.267775 8.6540289,27.860658 8.6474751,27.778724 8.6474751,27.778724 l -0.069864,0.03493 C 9.3100294,23.691285 11.163248,19.798527 13.817445,16.565477 z m 37.552149,0.523984 c 2.548924,3.289983 4.265057,7.202594 4.890513,11.318043 -0.650428,0.410896 -1.756876,1.001936 -3.563088,1.606882 -1.171552,0.392383 -3.163859,0.759153 -4.960377,1.117832 -0.04367,-4.752703 -0.784809,-8.591423 -1.88634,-11.807094 0.917574,-0.263678 2.170552,-0.486495 2.864443,-0.76851 1.274693,-0.518066 2.003942,-1.001558 2.654849,-1.467153 z m -31.439008,2.619917 c 2.487341,0.672766 5.775813,1.137775 10.479669,1.222628 l 0.104797,10.689263 0,0.03493 0,0.733577 c -5.435005,-0.09059 -9.512219,-0.519044 -12.610536,-1.117831 0.106127,-4.776683 0.879334,-8.55791 2.02607,-11.562569 z m 23.264866,0.31439 c 1.073459,3.067541 1.833795,6.821314 1.816476,11.702298 -3.054474,0.423245 -7.062018,0.648559 -11.702298,0.698644 l 0,-0.838373 -0.104796,-10.654331 c 4.082416,-0.0864 7.404468,-0.403886 9.990618,-0.908238 z M 8.2632205,30.922625 c 0.7558676,0.510548 1.5529563,1.013339 3.0041715,1.57195 0.937518,0.360875 2.612202,0.647642 3.91241,0.978102 0.112814,3.85566 0.703989,7.107756 1.606883,9.920754 -1.147172,-0.324262 -2.644553,-0.640648 -3.423359,-0.978102 -1.516688,-0.657177 -2.386627,-1.287332 -2.864443,-1.71168 -0.477816,-0.424347 -0.489051,-0.489051 -0.489051,-0.489051 L 9.8002387,40.319395 C 8.791691,37.621767 8.1584238,34.769583 8.1584238,31.900727 c 0,-0.330153 0.090589,-0.648169 0.1047967,-0.978102 z m 48.2763445,0.419186 c 0.0047,0.188973 0.06986,0.36991 0.06986,0.558916 0,2.938869 -0.620228,5.873558 -1.676747,8.628261 -0.07435,0.07583 -0.06552,0.07411 -0.454119,0.349323 -0.606965,0.429857 -1.631665,1.042044 -3.318562,1.676747 -1.208528,0.454713 -3.204964,0.850894 -5.135038,1.25756 0.84593,-2.765726 1.41808,-6.005357 1.606883,-9.815957 2.232369,-0.413371 4.483758,-0.840201 5.938479,-1.327425 1.410632,-0.472457 2.153108,-0.89469 2.96924,-1.327425 z m -38.530252,2.864443 c 3.208141,0.56697 7.372279,0.898588 12.575603,0.978103 l 0.174662,9.885821 c -4.392517,-0.06139 -8.106722,-0.320566 -10.863925,-0.803441 -1.051954,-2.664695 -1.692909,-6.043794 -1.88634,-10.060483 z m 26.793022,0.31439 c -0.246298,3.923551 -0.877762,7.263679 -1.816476,9.885822 -2.561957,0.361954 -5.766249,0.560708 -9.431703,0.62878 l -0.174661,-9.815957 c 4.491734,-0.04969 8.334769,-0.293032 11.42284,-0.698645 z M 12.035901,44.860585 c 0.09977,0.04523 0.105535,0.09465 0.209594,0.139729 1.337656,0.579602 3.441099,1.058072 5.589157,1.537018 1.545042,3.399208 3.548524,5.969402 5.589157,7.789888 -3.034411,-1.215537 -5.871615,-3.007978 -8.174142,-5.309699 -1.245911,-1.245475 -2.271794,-2.662961 -3.213766,-4.156936 z m 40.69605,0 c -0.941972,1.493975 -1.967855,2.911461 -3.213765,4.156936 -2.74253,2.741571 -6.244106,4.696717 -9.955686,5.868615 0.261347,-0.241079 0.507495,-0.394491 0.768509,-0.663713 1.674841,-1.727516 3.320792,-4.181056 4.645987,-7.265904 2.962447,-0.503021 5.408965,-1.122293 7.161107,-1.781544 0.284034,-0.106865 0.337297,-0.207323 0.593848,-0.31439 z m -31.404076,2.305527 c 2.645807,0.376448 5.701178,0.649995 9.466635,0.698645 l 0.139729,7.789888 c -1.38739,-0.480844 -3.316218,-1.29837 -5.659022,-3.388427 -1.388822,-1.238993 -2.743668,-3.0113 -3.947342,-5.100106 z m 20.365491,0.104797 c -1.04872,2.041937 -2.174337,3.779068 -3.353494,4.995309 -1.853177,1.911459 -3.425515,2.82679 -4.611055,3.353494 l -0.139729,-7.789887 c 3.13091,-0.05714 5.728238,-0.278725 8.104278,-0.558916 z",rRt="m 2.9825053,17.550598 0,1.368113 0,26.267766 0,1.368113 1.36811,0 54.9981397,0 1.36811,0 0,-1.368113 0,-26.267766 0,-1.368113 -1.36811,0 -54.9981397,0 -1.36811,0 z m 2.73623,2.736226 10.3292497,0 0,10.466063 -10.3292497,0 0,-10.466063 z m 13.0654697,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 10.32926,0 0,10.466063 -10.32926,0 0,-10.466063 z m -41.9326497,13.202288 10.3292497,0 0,10.329252 -10.3292497,0 0,-10.329252 z m 13.0654697,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 10.32926,0 0,10.329252 -10.32926,0 0,-10.329252 z",sRt="m 14.723969,17.675598 -0.340489,0.817175 -11.1680536,26.183638 -0.817175,1.872692 2.076986,0 54.7506996,0 2.07698,0 -0.81717,-1.872692 -11.16805,-26.183638 -0.34049,-0.817175 -0.91933,0 -32.414586,0 -0.919322,0 z m 1.838643,2.723916 6.196908,0 -2.928209,10.418977 -7.729111,0 4.460412,-10.418977 z m 9.02297,0 4.903049,0 0,10.418977 -7.831258,0 2.928209,-10.418977 z m 7.626964,0 5.584031,0 2.62176,10.418977 -8.205791,0 0,-10.418977 z m 8.410081,0 5.51593,0 4.46042,10.418977 -7.38863,0 -2.58772,-10.418977 z m -30.678091,13.142892 8.103649,0 -2.89416,10.282782 -9.6018026,0 4.3923136,-10.282782 z m 10.929711,0 8.614384,0 0,10.282782 -11.508544,0 2.89416,-10.282782 z m 11.338299,0 8.852721,0 2.58772,10.282782 -11.440441,0 0,-10.282782 z m 11.678781,0 7.86531,0 4.39231,10.282782 -9.6699,0 -2.58772,-10.282782 z";function X5(e,t,n){e=kn(e);let i=new wU(t,n);i._globePath=oRt,i._flatMapPath=rRt,i._columbusViewPath=sRt;let o=document.createElement("span");o.className="cesium-sceneModePicker-wrapper cesium-toolbar-button",e.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button",r.setAttribute("data-bind",'css: { "cesium-sceneModePicker-button2D": sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-button3D": sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-buttonColumbusView": sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),r.innerHTML='<!-- ko cesiumSvgPath: { path: _globePath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon3D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon2D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-iconColumbusView" } --><!-- /ko -->',o.appendChild(r);let s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",s.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE3D)) || (!dropDownVisible && (sceneMode === _sceneMode.SCENE3D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip3D },click: morphTo3D,cesiumSvgPath: { path: _globePath, width: 64, height: 64 }'),o.appendChild(s);let a=document.createElement("button");a.type="button",a.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",a.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE2D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip2D },click: morphTo2D,cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64 }'),o.appendChild(a);let c=document.createElement("button");c.type="button",c.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",c.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.COLUMBUS_VIEW)) || (!dropDownVisible && (sceneMode === _sceneMode.COLUMBUS_VIEW)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-hidden" : !dropDownVisible},attr: { title: tooltipColumbusView },click: morphToColumbusView,cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64 }'),o.appendChild(c),Ie.applyBindings(i,o),this._viewModel=i,this._container=e,this._wrapper=o,this._closeDropDown=function(u){o.contains(u.target)||(i.dropDownVisible=!1)},Wt.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(X5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});X5.prototype.isDestroyed=function(){return!1};X5.prototype.destroy=function(){return this._viewModel.destroy(),Wt.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),Ie.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),ue(this)};var BU=X5;var aRt=new U,J5="-1000px";function DU(e,t,n){this._scene=e,this._screenPositionX=J5,this._screenPositionY=J5,this._tweens=e.tweens,this._container=n??document.body,this._selectionIndicatorElement=t,this._scale=1,this.position=void 0,this.showSelection=!1,Ie.track(this,["position","_screenPositionX","_screenPositionY","_scale","showSelection"]),this.isVisible=void 0,Ie.defineProperty(this,"isVisible",{get:function(){return this.showSelection&&l(this.position)}}),Ie.defineProperty(this,"_transform",{get:function(){return`scale(${this._scale})`}}),this.computeScreenSpacePosition=function(i,o){return eo.worldToWindowCoordinates(e,i,o)}}DU.prototype.update=function(){if(this.showSelection&&l(this.position)){let e=this.computeScreenSpacePosition(this.position,aRt);if(!l(e))this._screenPositionX=J5,this._screenPositionY=J5;else{let t=this._container,n=t.parentNode.clientWidth,i=t.parentNode.clientHeight,o=this._selectionIndicatorElement.clientWidth,r=o*.5;e.x=Math.min(Math.max(e.x,-o),n+o)-r,e.y=Math.min(Math.max(e.y,-o),i+o)-r,this._screenPositionX=`${Math.floor(e.x+.25)}px`,this._screenPositionY=`${Math.floor(e.y+.25)}px`}}};DU.prototype.animateAppear=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:2,stopValue:1,duration:.8,easingFunction:ms.EXPONENTIAL_OUT})};DU.prototype.animateDepart=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:this._scale,stopValue:1.5,duration:.8,easingFunction:ms.EXPONENTIAL_OUT})};Object.defineProperties(DU.prototype,{container:{get:function(){return this._container}},selectionIndicatorElement:{get:function(){return this._selectionIndicatorElement}},scene:{get:function(){return this._scene}}});var vU=DU;function Z5(e,t){e=kn(e),this._container=e;let n=document.createElement("div");n.className="cesium-selection-wrapper",n.setAttribute("data-bind",'style: { "top" : _screenPositionY, "left" : _screenPositionX },css: { "cesium-selection-wrapper-visible" : isVisible }'),e.appendChild(n),this._element=n;let i="http://www.w3.org/2000/svg",o="M -34 -34 L -34 -11.25 L -30 -15.25 L -30 -30 L -15.25 -30 L -11.25 -34 L -34 -34 z M 11.25 -34 L 15.25 -30 L 30 -30 L 30 -15.25 L 34 -11.25 L 34 -34 L 11.25 -34 z M -34 11.25 L -34 34 L -11.25 34 L -15.25 30 L -30 30 L -30 15.25 L -34 11.25 z M 34 11.25 L 30 15.25 L 30 30 L 15.25 30 L 11.25 34 L 34 34 L 34 11.25 z",r=document.createElementNS(i,"svg:svg");r.setAttribute("width",160),r.setAttribute("height",160),r.setAttribute("viewBox","0 0 160 160");let s=document.createElementNS(i,"g");s.setAttribute("transform","translate(80,80)"),r.appendChild(s);let a=document.createElementNS(i,"path");a.setAttribute("data-bind","attr: { transform: _transform }"),a.setAttribute("d",o),s.appendChild(a),n.appendChild(r);let c=new vU(t,this._element,this._container);this._viewModel=c,Ie.applyBindings(this._viewModel,this._element)}Object.defineProperties(Z5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});Z5.prototype.isDestroyed=function(){return!1};Z5.prototype.destroy=function(){let e=this._container;return Ie.cleanNode(this._element),e.removeChild(this._element),ue(this)};var PU=Z5;function Rx(e,t,n){this._color=e,this._height=t,this._base=n??0}Rx.prototype.getHeight=function(){return this._height};Rx.prototype.getBase=function(){return this._base};Rx.prototype.getStartTime=function(){return this._start};Rx.prototype.getStopTime=function(){return this._stop};Rx.prototype.setRange=function(e,t){this._start=e,this._stop=t};Rx.prototype.render=function(e){let t="";if(this._start&&this._stop&&this._color){let n=K.secondsDifference(this._start,e.epochJulian),i=Math.round(e.timeBarWidth*e.getAlpha(n)),o=K.secondsDifference(this._stop,e.epochJulian),r=Math.round(e.timeBarWidth*e.getAlpha(o))-i;i<0&&(r+=i,i=0),i+r>e.timeBarWidth&&(r=e.timeBarWidth-i),r>0&&(t=`<span class="cesium-timeline-highlight" style="left: ${i.toString()}px; width: ${r.toString()}px; bottom: ${this._base.toString()}px; height: ${this._height}px; background-color: ${this._color};"></span>`)}return t};var RU=Rx;function Uwe(e,t,n,i){this.interval=e,this.height=t,this.color=n||new G(.5,.5,.5,1),this.backgroundColor=i||new G(0,0,0,0)}Uwe.prototype.render=function(e,t){let n=this.interval.start,i=this.interval.stop,o=t.startJulian,r=K.addSeconds(t.startJulian,t.duration,new K);if(K.lessThan(n,o)&&K.greaterThan(i,r))e.fillStyle=this.color.toCssColorString(),e.fillRect(0,t.y,t.timeBarWidth,this.height);else if(K.lessThanOrEquals(n,r)&&K.greaterThanOrEquals(i,o)){let s,a,c;for(s=0;s<t.timeBarWidth;++s){let u=K.addSeconds(t.startJulian,s/t.timeBarWidth*t.duration,new K);!l(a)&&K.greaterThanOrEquals(u,n)?a=s:!l(c)&&K.greaterThanOrEquals(u,i)&&(c=s)}e.fillStyle=this.backgroundColor.toCssColorString(),e.fillRect(0,t.y,t.timeBarWidth,this.height),l(a)&&(l(c)||(c=t.timeBarWidth),e.fillStyle=this.color.toCssColorString(),e.fillRect(a,t.y,Math.max(c-a,1),this.height))}};var MU=Uwe;var rte=1e12,Zd={none:0,scrub:1,slide:2,zoom:3,touchOnly:4},jl={none:0,scrub:1,slideZoom:2,singleTap:3,ignore:4},OC=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800,1296e3,2592e3,5184e3,7776e3,15552e3,31536e3,63072e3,126144e3,15768e4,31536e4,63072e4,126144e4,15768e5,31536e5,63072e5,126144e5,15768e6,31536e6],cRt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function Yl(e,t){e=kn(e);let n=e.ownerDocument;this.container=e;let i=n.createElement("div");i.className="cesium-timeline-main",e.appendChild(i),this._topDiv=i,this._endJulian=void 0,this._epochJulian=void 0,this._lastXPos=void 0,this._scrubElement=void 0,this._startJulian=void 0,this._timeBarSecondsSpan=void 0,this._clock=t,this._scrubJulian=t.currentTime,this._mainTicSpan=-1,this._mouseMode=Zd.none,this._touchMode=jl.none,this._touchState={centerX:0,spanX:0},this._mouseX=0,this._timelineDrag=0,this._timelineDragLocation=void 0,this._lastHeight=void 0,this._lastWidth=void 0,this._topDiv.innerHTML='<div class="cesium-timeline-bar"></div><div class="cesium-timeline-trackContainer"><canvas class="cesium-timeline-tracks" width="10" height="1"></canvas></div><div class="cesium-timeline-needle"></div><span class="cesium-timeline-ruler"></span>',this._timeBarEle=this._topDiv.childNodes[0],this._trackContainer=this._topDiv.childNodes[1],this._trackListEle=this._topDiv.childNodes[1].childNodes[0],this._needleEle=this._topDiv.childNodes[2],this._rulerEle=this._topDiv.childNodes[3],this._context=this._trackListEle.getContext("2d"),this._trackList=[],this._highlightRanges=[],this.zoomTo(t.startTime,t.stopTime),this._onMouseDown=lRt(this),this._onMouseUp=uRt(this),this._onMouseMove=fRt(this),this._onMouseWheel=dRt(this),this._onTouchStart=hRt(this),this._onTouchMove=ARt(this),this._onTouchEnd=mRt(this);let o=this._timeBarEle;n.addEventListener("mouseup",this._onMouseUp,!1),n.addEventListener("mousemove",this._onMouseMove,!1),o.addEventListener("mousedown",this._onMouseDown,!1),o.addEventListener("DOMMouseScroll",this._onMouseWheel,!1),o.addEventListener("mousewheel",this._onMouseWheel,!1),o.addEventListener("touchstart",this._onTouchStart,!1),o.addEventListener("touchmove",this._onTouchMove,!1),o.addEventListener("touchend",this._onTouchEnd,!1),o.addEventListener("touchcancel",this._onTouchEnd,!1),this._topDiv.oncontextmenu=function(){return!1},t.onTick.addEventListener(this.updateFromClock,this),this.updateFromClock()}Yl.prototype.addEventListener=function(e,t,n){this._topDiv.addEventListener(e,t,n)};Yl.prototype.removeEventListener=function(e,t,n){this._topDiv.removeEventListener(e,t,n)};Yl.prototype.isDestroyed=function(){return!1};Yl.prototype.destroy=function(){this._clock.onTick.removeEventListener(this.updateFromClock,this);let e=this.container.ownerDocument;e.removeEventListener("mouseup",this._onMouseUp,!1),e.removeEventListener("mousemove",this._onMouseMove,!1);let t=this._timeBarEle;t.removeEventListener("mousedown",this._onMouseDown,!1),t.removeEventListener("DOMMouseScroll",this._onMouseWheel,!1),t.removeEventListener("mousewheel",this._onMouseWheel,!1),t.removeEventListener("touchstart",this._onTouchStart,!1),t.removeEventListener("touchmove",this._onTouchMove,!1),t.removeEventListener("touchend",this._onTouchEnd,!1),t.removeEventListener("touchcancel",this._onTouchEnd,!1),this.container.removeChild(this._topDiv),ue(this)};Yl.prototype.addHighlightRange=function(e,t,n){let i=new RU(e,t,n);return this._highlightRanges.push(i),this.resize(),i};Yl.prototype.addTrack=function(e,t,n,i){let o=new MU(e,t,n,i);return this._trackList.push(o),this._lastHeight=void 0,this.resize(),o};Yl.prototype.zoomTo=function(e,t){if(this._startJulian=e,this._endJulian=t,this._timeBarSecondsSpan=K.secondsDifference(t,e),this._clock&&this._clock.clockRange!==fs.UNBOUNDED){let i=this._clock.startTime,o=this._clock.stopTime,r=K.secondsDifference(o,i),s=K.secondsDifference(i,this._startJulian),a=K.secondsDifference(o,this._endJulian);this._timeBarSecondsSpan>=r?(this._timeBarSecondsSpan=r,this._startJulian=this._clock.startTime,this._endJulian=this._clock.stopTime):s>0?(this._endJulian=K.addSeconds(this._endJulian,s,new K),this._startJulian=i,this._timeBarSecondsSpan=K.secondsDifference(this._endJulian,this._startJulian)):a<0&&(this._startJulian=K.addSeconds(this._startJulian,a,new K),this._endJulian=o,this._timeBarSecondsSpan=K.secondsDifference(this._endJulian,this._startJulian))}this._makeTics();let n=document.createEvent("Event");n.initEvent("setzoom",!0,!0),n.startJulian=this._startJulian,n.endJulian=this._endJulian,n.epochJulian=this._epochJulian,n.totalSpan=this._timeBarSecondsSpan,n.mainTicSpan=this._mainTicSpan,this._topDiv.dispatchEvent(n)};Yl.prototype.zoomFrom=function(e){let t=K.secondsDifference(this._scrubJulian,this._startJulian);e>1||t<0||t>this._timeBarSecondsSpan?t=this._timeBarSecondsSpan*.5:t+=t-this._timeBarSecondsSpan*.5;let n=this._timeBarSecondsSpan-t;this.zoomTo(K.addSeconds(this._startJulian,t-t*e,new K),K.addSeconds(this._endJulian,n*e-n,new K))};function ste(e){return e<10?`0${e.toString()}`:e.toString()}Yl.prototype.makeLabel=function(e){let t=K.toGregorianDate(e),n=t.millisecond,i=" UTC";if(n>0&&this._timeBarSecondsSpan<3600){for(i=Math.floor(n).toString();i.length<3;)i=`0${i}`;i=`.${i}`}return`${cRt[t.month-1]} ${t.day} ${t.year} ${ste(t.hour)}:${ste(t.minute)}:${ste(t.second)}${i}`};Yl.prototype.smallestTicInPixels=7;Yl.prototype._makeTics=function(){let e=this._timeBarEle,t=K.secondsDifference(this._scrubJulian,this._startJulian),n=Math.round(t*this._topDiv.clientWidth/this._timeBarSecondsSpan),i=n-8,o,r=this;this._needleEle.style.left=`${n.toString()}px`;let s="",a=.01,c=31536e6,u=1e-10,f=0,h=this._timeBarSecondsSpan;h<a?(h=a,this._timeBarSecondsSpan=a,this._endJulian=K.addSeconds(this._startJulian,a,new K)):h>c&&(h=c,this._timeBarSecondsSpan=c,this._endJulian=K.addSeconds(this._startJulian,c,new K));let A=this._timeBarEle.clientWidth;A<10&&(A=10);let g=this._startJulian,m=Math.min(h/A*1e-5,.4),_,y=K.toGregorianDate(g);h>31536e4?_=K.fromDate(new Date(Date.UTC(Math.floor(y.year/100)*100,0))):h>31536e3?_=K.fromDate(new Date(Date.UTC(Math.floor(y.year/10)*10,0))):h>86400?_=K.fromDate(new Date(Date.UTC(y.year,0))):_=K.fromDate(new Date(Date.UTC(y.year,y.month,y.day)));let C=K.secondsDifference(this._startJulian,K.addSeconds(_,m,new K)),E=C+h;this._epochJulian=_;function I(F){return Math.floor(C/F)*F}function b(F,H){return Math.ceil(F/H+.5)*H}function S(F){return(F-C)/h}function B(F,H){return F-H*Math.round(F/H)}this._rulerEle.innerHTML=this.makeLabel(K.addSeconds(this._endJulian,-a,new K));let v=this._rulerEle.offsetWidth+20;v<30&&(v=180);let P=f;f-=u;let M={startTime:C,startJulian:g,epochJulian:_,duration:h,timeBarWidth:A,getAlpha:S};this._highlightRanges.forEach(function(F){s+=F.render(M)});let L=0,p=0,x=0,T=v/A;T>1&&(T=1),T*=this._timeBarSecondsSpan;let w=-1,R=-1,O=OC.length,k;for(k=0;k<O;++k){let F=OC[k];if(++w,L=F,F>T&&F>f)break;R<0&&A*(F/this._timeBarSecondsSpan)>=this.smallestTicInPixels&&(R=w)}if(w>0){for(;w>0;)if(--w,Math.abs(B(L,OC[w]))<1e-5){OC[w]>=f&&(p=OC[w]);break}if(R>=0)for(;R<w;){if(Math.abs(B(p,OC[R]))<1e-5&&OC[R]>=f){x=OC[R];break}++R}}f=P,f>u&&x<1e-5&&Math.abs(f-L)>u&&(x=f,f<=L+u&&(p=0));let Q=-999999,z;if(A*(x/this._timeBarSecondsSpan)>=3)for(o=I(x);o<=E;o=b(o,x))s+=`<span class="cesium-timeline-ticTiny" style="left: ${Math.round(A*S(o)).toString()}px;"></span>`;if(A*(p/this._timeBarSecondsSpan)>=3)for(o=I(p);o<=E;o=b(o,p))s+=`<span class="cesium-timeline-ticSub" style="left: ${Math.round(A*S(o)).toString()}px;"></span>`;if(A*(L/this._timeBarSecondsSpan)>=2){this._mainTicSpan=L,E+=L,o=I(L);let F=K.computeTaiMinusUtc(_);for(;o<=E;){let H=K.addSeconds(g,o-C,new K);if(L>2.1){let $=K.computeTaiMinusUtc(H);Math.abs($-F)>.1&&(o+=$-F,H=K.addSeconds(g,o-C,new K))}let W=Math.round(A*S(o)),Z=this.makeLabel(H);this._rulerEle.innerHTML=Z,z=this._rulerEle.offsetWidth,z<10&&(z=v);let Y=W-(z/2-1);Y>Q?(Q=Y+z+5,s+=`<span class="cesium-timeline-ticMain" style="left: ${W.toString()}px;"></span><span class="cesium-timeline-ticLabel" style="left: ${Y.toString()}px;">${Z}</span>`):s+=`<span class="cesium-timeline-ticSub" style="left: ${W.toString()}px;"></span>`,o=b(o,L)}}else this._mainTicSpan=-1;s+=`<span class="cesium-timeline-icon16" style="left:${i}px;bottom:0;background-position: 0 0;"></span>`,e.innerHTML=s,this._scrubElement=e.lastChild,this._context.clearRect(0,0,this._trackListEle.width,this._trackListEle.height),M.y=0,this._trackList.forEach(function(F){F.render(r._context,M),M.y+=F.height})};Yl.prototype.updateFromClock=function(){this._scrubJulian=this._clock.currentTime;let e=this._scrubElement;if(l(this._scrubElement)){let t=K.secondsDifference(this._scrubJulian,this._startJulian),n=Math.round(t*this._topDiv.clientWidth/this._timeBarSecondsSpan);this._lastXPos!==n&&(this._lastXPos=n,e.style.left=`${n-8}px`,this._needleEle.style.left=`${n}px`)}l(this._timelineDragLocation)&&(this._setTimeBarTime(this._timelineDragLocation,this._timelineDragLocation*this._timeBarSecondsSpan/this._topDiv.clientWidth),this.zoomTo(K.addSeconds(this._startJulian,this._timelineDrag,new K),K.addSeconds(this._endJulian,this._timelineDrag,new K)))};Yl.prototype._setTimeBarTime=function(e,t){if(e=Math.round(e),this._scrubJulian=K.addSeconds(this._startJulian,t,new K),this._scrubElement){let i=e-8;this._scrubElement.style.left=`${i.toString()}px`,this._needleEle.style.left=`${e.toString()}px`}let n=document.createEvent("Event");n.initEvent("settime",!0,!0),n.clientX=e,n.timeSeconds=t,n.timeJulian=this._scrubJulian,n.clock=this._clock,this._topDiv.dispatchEvent(n)};function lRt(e){return function(t){e._mouseMode!==Zd.touchOnly&&(t.button===0?(e._mouseMode=Zd.scrub,e._scrubElement&&(e._scrubElement.style.backgroundPosition="-16px 0"),e._onMouseMove(t)):(e._mouseX=t.clientX,t.button===2?e._mouseMode=Zd.zoom:e._mouseMode=Zd.slide)),t.preventDefault()}}function uRt(e){return function(t){e._mouseMode=Zd.none,e._scrubElement&&(e._scrubElement.style.backgroundPosition="0 0"),e._timelineDrag=0,e._timelineDragLocation=void 0}}function fRt(e){return function(t){let n;if(e._mouseMode===Zd.scrub){t.preventDefault();let i=t.clientX-e._topDiv.getBoundingClientRect().left;i<0?(e._timelineDragLocation=0,e._timelineDrag=-.01*e._timeBarSecondsSpan):i>e._topDiv.clientWidth?(e._timelineDragLocation=e._topDiv.clientWidth,e._timelineDrag=.01*e._timeBarSecondsSpan):(e._timelineDragLocation=void 0,e._setTimeBarTime(i,i*e._timeBarSecondsSpan/e._topDiv.clientWidth))}else if(e._mouseMode===Zd.slide){if(n=e._mouseX-t.clientX,e._mouseX=t.clientX,n!==0){let i=n*e._timeBarSecondsSpan/e._topDiv.clientWidth;e.zoomTo(K.addSeconds(e._startJulian,i,new K),K.addSeconds(e._endJulian,i,new K))}}else e._mouseMode===Zd.zoom&&(n=e._mouseX-t.clientX,e._mouseX=t.clientX,n!==0&&e.zoomFrom(Math.pow(1.01,n)))}}function dRt(e){return function(t){let n=t.wheelDeltaY||t.wheelDelta||-t.detail;rte=Math.max(Math.min(Math.abs(n),rte),1),n/=rte,e.zoomFrom(Math.pow(1.05,-n))}}function hRt(e){return function(t){let n=t.touches.length,i,o,r=e._topDiv.getBoundingClientRect().left;t.preventDefault(),e._mouseMode=Zd.touchOnly,n===1?(i=K.secondsDifference(e._scrubJulian,e._startJulian),o=Math.round(i*e._topDiv.clientWidth/e._timeBarSecondsSpan+r),Math.abs(t.touches[0].clientX-o)<50?(e._touchMode=jl.scrub,e._scrubElement&&(e._scrubElement.style.backgroundPosition=n===1?"-16px 0":"0 0")):(e._touchMode=jl.singleTap,e._touchState.centerX=t.touches[0].clientX-r)):n===2?(e._touchMode=jl.slideZoom,e._touchState.centerX=(t.touches[0].clientX+t.touches[1].clientX)*.5-r,e._touchState.spanX=Math.abs(t.touches[0].clientX-t.touches[1].clientX)):e._touchMode=jl.ignore}}function mRt(e){return function(t){let n=t.touches.length,i=e._topDiv.getBoundingClientRect().left;e._touchMode===jl.singleTap?(e._touchMode=jl.scrub,e._onTouchMove(t)):e._touchMode===jl.scrub&&e._onTouchMove(t),e._mouseMode=Zd.touchOnly,n!==1?e._touchMode=n>0?jl.ignore:jl.none:e._touchMode===jl.slideZoom&&(e._touchState.centerX=t.touches[0].clientX-i),e._scrubElement&&(e._scrubElement.style.backgroundPosition="0 0")}}function ARt(e){return function(t){let n,i,o,r,s,a,c=1,u=e._topDiv.getBoundingClientRect().left;e._touchMode===jl.singleTap&&(e._touchMode=jl.slideZoom),e._mouseMode=Zd.touchOnly,e._touchMode===jl.scrub?(t.preventDefault(),t.changedTouches.length===1&&(i=t.changedTouches[0].clientX-u,i>=0&&i<=e._topDiv.clientWidth&&e._setTimeBarTime(i,i*e._timeBarSecondsSpan/e._topDiv.clientWidth))):e._touchMode===jl.slideZoom&&(o=t.touches.length,o===2?(r=(t.touches[0].clientX+t.touches[1].clientX)*.5-u,s=Math.abs(t.touches[0].clientX-t.touches[1].clientX)):o===1&&(r=t.touches[0].clientX-u,s=0),l(r)&&(s>0&&e._touchState.spanX>0?(c=e._touchState.spanX/s,a=K.addSeconds(e._startJulian,(e._touchState.centerX*e._timeBarSecondsSpan-r*e._timeBarSecondsSpan*c)/e._topDiv.clientWidth,new K)):(n=e._touchState.centerX-r,a=K.addSeconds(e._startJulian,n*e._timeBarSecondsSpan/e._topDiv.clientWidth,new K)),e.zoomTo(a,K.addSeconds(a,e._timeBarSecondsSpan*c,new K)),e._touchState.centerX=r,e._touchState.spanX=s))}}Yl.prototype.resize=function(){let e=this.container.clientWidth,t=this.container.clientHeight;if(e===this._lastWidth&&t===this._lastHeight)return;this._trackContainer.style.height=`${t}px`;let n=1;this._trackList.forEach(function(i){n+=i.height}),this._trackListEle.style.height=`${n.toString()}px`,this._trackListEle.width=this._trackListEle.clientWidth,this._trackListEle.height=n,this._makeTics(),this._lastXPos=void 0,this._lastWidth=e,this._lastHeight=t};var NU=Yl;var zwe=xr(Gwe(),1);function pRt(e){let t=!1,n=window.screen;return l(n)&&(l(n.lockOrientation)?t=n.lockOrientation(e):l(n.mozLockOrientation)?t=n.mozLockOrientation(e):l(n.msLockOrientation)?t=n.msLockOrientation(e):l(n.orientation&&n.orientation.lock)&&(t=n.orientation.lock(e))),t}function Vwe(){let e=window.screen;l(e)&&(l(e.unlockOrientation)?e.unlockOrientation():l(e.mozUnlockOrientation)?e.mozUnlockOrientation():l(e.msUnlockOrientation)?e.msUnlockOrientation():l(e.orientation&&e.orientation.unlock)&&e.orientation.unlock())}function gRt(e,t,n,i){i()||(n()?(t.useWebVR=!1,e._locked&&(Vwe(),e._locked=!1),e._noSleep.disable(),Fr.exitFullscreen(),n(!1)):(Fr.fullscreen||Fr.requestFullscreen(e._vrElement),e._noSleep.enable(),e._locked||(e._locked=pRt("landscape")),t.useWebVR=!0,n(!0)))}function $5(e,t){let n=this,i=Ie.observable(Fr.enabled),o=Ie.observable(!1);this.isVRMode=void 0,Ie.defineProperty(this,"isVRMode",{get:function(){return o()}}),this.isVREnabled=void 0,Ie.defineProperty(this,"isVREnabled",{get:function(){return i()},set:function(s){i(s&&Fr.enabled)}}),this.tooltip=void 0,Ie.defineProperty(this,"tooltip",function(){return i()?o()?"Exit VR mode":"Enter VR mode":"VR mode is unavailable"});let r=Ie.observable(!1);this._isOrthographic=void 0,Ie.defineProperty(this,"_isOrthographic",{get:function(){return r()}}),this._eventHelper=new Dr,this._eventHelper.add(e.preRender,function(){r(e.camera.frustum instanceof An)}),this._locked=!1,this._noSleep=new zwe.default,this._command=Rn(function(){gRt(n,e,o,r)},Ie.getObservable(this,"isVREnabled")),this._vrElement=kn(t)??document.body,this._callback=function(){!Fr.fullscreen&&o()&&(e.useWebVR=!1,n._locked&&(Vwe(),n._locked=!1),n._noSleep.disable(),o(!1))},document.addEventListener(Fr.changeEventName,this._callback)}Object.defineProperties($5.prototype,{vrElement:{get:function(){return this._vrElement},set:function(e){this._vrElement=e}},command:{get:function(){return this._command}}});$5.prototype.isDestroyed=function(){return!1};$5.prototype.destroy=function(){this._eventHelper.removeAll(),document.removeEventListener(Fr.changeEventName,this._callback),ue(this)};var OU=$5;var _Rt="M 5.3125 6.375 C 4.008126 6.375 2.96875 7.4141499 2.96875 8.71875 L 2.96875 19.5 C 2.96875 20.8043 4.008126 21.875 5.3125 21.875 L 13.65625 21.875 C 13.71832 20.0547 14.845166 18.59375 16.21875 18.59375 C 17.592088 18.59375 18.71881 20.0552 18.78125 21.875 L 27.09375 21.875 C 28.398125 21.875 29.4375 20.8043 29.4375 19.5 L 29.4375 8.71875 C 29.4375 7.4141499 28.398125 6.375 27.09375 6.375 L 5.3125 6.375 z M 9.625 10.4375 C 11.55989 10.4375 13.125 12.03385 13.125 13.96875 C 13.125 15.90365 11.55989 17.46875 9.625 17.46875 C 7.69011 17.46875 6.125 15.90365 6.125 13.96875 C 6.125 12.03385 7.69011 10.4375 9.625 10.4375 z M 22.46875 10.4375 C 24.40364 10.4375 25.96875 12.03385 25.96875 13.96875 C 25.96875 15.90365 24.40364 17.46875 22.46875 17.46875 C 20.53386 17.46875 18.96875 15.90365 18.96875 13.96875 C 18.96875 12.03385 20.53386 10.4375 22.46875 10.4375 z",yRt="M 25.770585,2.4552065 C 15.72282,13.962707 10.699956,19.704407 8.1768352,22.580207 c -1.261561,1.4379 -1.902282,2.1427 -2.21875,2.5 -0.141624,0.1599 -0.208984,0.2355 -0.25,0.2813 l 0.6875,0.75 c 10e-5,-10e-5 0.679191,0.727 0.6875,0.7187 0.01662,-0.016 0.02451,-0.024 0.03125,-0.031 0.01348,-0.014 0.04013,-0.038 0.0625,-0.062 0.04474,-0.05 0.120921,-0.1315 0.28125,-0.3126 0.320657,-0.3619 0.956139,-1.0921 2.2187499,-2.5312 2.5252219,-2.8781 7.5454589,-8.6169 17.5937499,-20.1250005 l -1.5,-1.3125 z m -20.5624998,3.9063 c -1.304375,0 -2.34375,1.0391 -2.34375,2.3437 l 0,10.8125005 c 0,1.3043 1.039375,2.375 2.34375,2.375 l 2.25,0 c 1.9518039,-2.2246 7.4710958,-8.5584 13.5624998,-15.5312005 l -15.8124998,0 z m 21.1249998,0 c -1.855467,2.1245 -2.114296,2.4005 -3.59375,4.0936995 1.767282,0.1815 3.15625,1.685301 3.15625,3.500001 0,1.9349 -1.56511,3.5 -3.5,3.5 -1.658043,0 -3.043426,-1.1411 -3.40625,-2.6875 -1.089617,1.2461 -2.647139,2.9988 -3.46875,3.9375 0.191501,-0.062 0.388502,-0.094 0.59375,-0.094 1.373338,0 2.50006,1.4614 2.5625,3.2812 l 8.3125,0 c 1.304375,0 2.34375,-1.0707 2.34375,-2.375 l 0,-10.8125005 c 0,-1.3046 -1.039375,-2.3437 -2.34375,-2.3437 l -0.65625,0 z M 9.5518351,10.423906 c 1.9348899,0 3.4999999,1.596401 3.4999999,3.531301 0,1.9349 -1.56511,3.5 -3.4999999,3.5 -1.9348899,0 -3.4999999,-1.5651 -3.4999999,-3.5 0,-1.9349 1.56511,-3.531301 3.4999999,-3.531301 z m 4.2187499,10.312601 c -0.206517,0.2356 -0.844218,0.9428 -1.03125,1.1562 l 0.8125,0 c 0.01392,-0.4081 0.107026,-0.7968 0.21875,-1.1562 z";function e9(e,t,n){e=kn(e);let i=new OU(t,n);i._exitVRPath=yRt,i._enterVRPath=_Rt;let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-vrButton",o.setAttribute("data-bind",'css: { "cesium-button-disabled" : _isOrthographic }, attr: { title: tooltip },click: command,enable: isVREnabled,cesiumSvgPath: { path: isVRMode ? _exitVRPath : _enterVRPath, width: 32, height: 32 }'),e.appendChild(o),Ie.applyBindings(i,o),this._container=e,this._viewModel=i,this._element=o}Object.defineProperties(e9.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});e9.prototype.isDestroyed=function(){return!1};e9.prototype.destroy=function(){return this._viewModel.destroy(),Ie.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var FU=e9;var Hwe=new le;function Ywe(e){let t=e.clock;t.currentTime=e.timeJulian,t.shouldAnimate=!1}function CRt(e){let t=e.getPropertyIds(),n="";return t.forEach(function(i){let o=e.getProperty(i);l(o)&&(n+=`<tr><th>${i}</th><td>${o}</td></tr>`)}),n.length>0&&(n=`<table class="cesium-infoBox-defaultTable"><tbody>${n}</tbody></table>`),n}function ERt(e){let t,n=[],i=e.getPropertyIds();for(t=0;t<i.length;t++){let r=i[t];/^name$/i.test(r)?n[0]=e.getProperty(r):/name/i.test(r)?n[1]=e.getProperty(r):/^title$/i.test(r)?n[2]=e.getProperty(r):/^(id|identifier)$/i.test(r)?n[3]=e.getProperty(r):/element/i.test(r)?n[4]=e.getProperty(r):/(id|identifier)$/i.test(r)&&(n[5]=e.getProperty(r))}let o=n.length;for(t=0;t<o;t++){let r=n[t];if(l(r)&&r!=="")return r}return"Unnamed Feature"}function Wwe(e,t){let n=e.scene.pick(t.position);if(l(n)){let i=n.id??n.primitive.id;if(i instanceof fr)return i;if(n instanceof ha)return new fr({name:ERt(n),description:CRt(n),feature:n})}if(l(e.scene.globe))return bRt(e,t.position)}var IRt=new K;function cte(e,t){if(l(t)){let n=t.clock;if(l(n)&&l(e)){let i=n.startTime,o=n.stopTime;K.equals(i,o)&&(o=K.addSeconds(i,D.EPSILON2,IRt)),e.updateFromClock(),e.zoomTo(i,o)}}}var xRt=new d;function bRt(e,t){let n=e.scene,i=n.camera.getPickRay(t),o=n.imageryLayers.pickImageryLayerFeatures(i,n);if(!l(o))return;let r=new fr({id:"Loading...",description:"Loading feature information..."});return o.then(function(s){if(e.selectedEntity!==r)return;if(!l(s)||s.length===0){e.selectedEntity=jwe();return}let a=s[0],c=new fr({id:a.name,description:a.description});if(l(a.position)){let u=e.scene.ellipsoid.cartographicToCartesian(a.position,xRt);c.position=new hl(u)}e.selectedEntity=c},function(){e.selectedEntity===r&&(e.selectedEntity=jwe())}),r}function jwe(){return new fr({id:"None",description:"No features found."})}function TRt(e,t){let n=e._geocoder,i=e._homeButton,o=e._sceneModePicker,r=e._projectionPicker,s=e._baseLayerPicker,a=e._animation,c=e._timeline,u=e._fullscreenButton,f=e._infoBox,h=e._selectionIndicator,A=t?"hidden":"visible";if(l(n)&&(n.container.style.visibility=A),l(i)&&(i.container.style.visibility=A),l(o)&&(o.container.style.visibility=A),l(r)&&(r.container.style.visibility=A),l(s)&&(s.container.style.visibility=A),l(a)&&(a.container.style.visibility=A),l(c)&&(c.container.style.visibility=A),l(u)&&u.viewModel.isFullscreenEnabled&&(u.container.style.visibility=A),l(f)&&(f.container.style.visibility=A),l(h)&&(h.container.style.visibility=A),e._container){let g=t||!l(u)?0:u.container.clientWidth;e._vrButton.container.style.right=`${g}px`,e.forceResize()}}function co(e,t){e=kn(e),t=t??V.EMPTY_OBJECT;let n=(!l(t.globe)||t.globe!==!1)&&(!l(t.baseLayerPicker)||t.baseLayerPicker!==!1),i=this,o=document.createElement("div");o.className="cesium-viewer",e.appendChild(o);let r=document.createElement("div");r.className="cesium-viewer-cesiumWidgetContainer",o.appendChild(r);let s=document.createElement("div");s.className="cesium-viewer-bottom",o.appendChild(s);let a=t.scene3DOnly??!1,c,u,f=!1;l(t.clockViewModel)?(u=t.clockViewModel,c=u.clock):(c=new Xh,u=new X3(c),f=!0);let h=new f3(r,{baseLayer:n&&l(t.selectedImageryProviderViewModel)||l(t.baseLayer)||l(t.imageryProvider)?!1:void 0,clock:c,shouldAnimate:t.shouldAnimate,skyBox:t.skyBox,skyAtmosphere:t.skyAtmosphere,sceneMode:t.sceneMode,ellipsoid:t.ellipsoid,mapProjection:t.mapProjection,globe:t.globe,orderIndependentTranslucency:t.orderIndependentTranslucency,automaticallyTrackDataSourceClocks:t.automaticallyTrackDataSourceClocks,contextOptions:t.contextOptions,useDefaultRenderLoop:t.useDefaultRenderLoop,targetFrameRate:t.targetFrameRate,showRenderLoopErrors:t.showRenderLoopErrors,useBrowserRecommendedResolution:t.useBrowserRecommendedResolution,creditContainer:l(t.creditContainer)?t.creditContainer:s,creditViewport:t.creditViewport,dataSources:t.dataSources,scene3DOnly:a,shadows:t.shadows,terrainShadows:t.terrainShadows,mapMode2D:t.mapMode2D,blurActiveElementOnCanvasFocus:t.blurActiveElementOnCanvasFocus,requestRenderMode:t.requestRenderMode,maximumRenderTimeChange:t.maximumRenderTimeChange,depthPlaneEllipsoidOffset:t.depthPlaneEllipsoidOffset,msaaSamples:t.msaaSamples}),A=h.scene,g=new Dr;g.add(c.onTick,co.prototype._onTick,this);let m;if(!l(t.selectionIndicator)||t.selectionIndicator!==!1){let H=document.createElement("div");H.className="cesium-viewer-selectionIndicatorContainer",o.appendChild(H),m=new PU(H,A)}let _;if(!l(t.infoBox)||t.infoBox!==!1){let H=document.createElement("div");H.className="cesium-viewer-infoBoxContainer",o.appendChild(H),_=new CU(H);let W=_.viewModel;g.add(W.cameraClicked,co.prototype._onInfoBoxCameraClicked,this),g.add(W.closeClicked,co.prototype._onInfoBoxClockClicked,this)}let y=document.createElement("div");y.className="cesium-viewer-toolbar",o.appendChild(y);let C;if(!l(t.geocoder)||t.geocoder!==!1){let H=document.createElement("div");H.className="cesium-viewer-geocoderContainer",y.appendChild(H);let W;typeof t.geocoder=="string"?W=[new yx({scene:A,geocodeProviderType:t.geocoder})]:l(t.geocoder)&&typeof t.geocoder!="boolean"&&(W=Array.isArray(t.geocoder)?t.geocoder:[t.geocoder]),C=new AU({container:H,geocoderServices:W,scene:A}),g.add(C.viewModel.search.beforeExecute,co.prototype._clearObjects,this)}let E;(!l(t.homeButton)||t.homeButton!==!1)&&(E=new gU(y,A),l(C)&&g.add(E.viewModel.command.afterExecute,function(){let H=C.viewModel;H.searchText="",H.isSearchInProgress&&H.search()}),g.add(E.viewModel.command.beforeExecute,co.prototype._clearTrackedObject,this));let I;!a&&(!l(t.sceneModePicker)||t.sceneModePicker!==!1)&&(I=new BU(y,A));let b;t.projectionPicker&&(b=new SU(y,A));let S,B;if(n){let H=t.imageryProviderViewModels??iU(),W=t.terrainProviderViewModels??oU();S=new nU(y,{globe:A.globe,imageryProviderViewModels:H,selectedImageryProviderViewModel:t.selectedImageryProviderViewModel,terrainProviderViewModels:W,selectedTerrainProviderViewModel:t.selectedTerrainProviderViewModel}),B=y.getElementsByClassName("cesium-baseLayerPicker-dropDown")[0]}l(t.baseLayer)&&t.baseLayer!==!1&&(n&&(S.viewModel.selectedImagery=void 0),A.imageryLayers.removeAll(),A.imageryLayers.add(t.baseLayer)),l(t.terrainProvider)&&(n&&(S.viewModel.selectedTerrain=void 0),A.terrainProvider=t.terrainProvider),l(t.terrain)&&(n&&(A.globe.depthTestAgainstTerrain=!0),A.setTerrain(t.terrain));let v;if(!l(t.navigationHelpButton)||t.navigationHelpButton!==!1){let H=!0;try{if(l(window.localStorage)){let W=window.localStorage.getItem("cesium-hasSeenNavHelp");l(W)&&W?H=!1:window.localStorage.setItem("cesium-hasSeenNavHelp","true")}}catch{}v=new IU({container:y,instructionsInitiallyVisible:t.navigationInstructionsInitiallyVisible??H})}let P;if(!l(t.animation)||t.animation!==!1){let H=document.createElement("div");H.className="cesium-viewer-animationContainer",o.appendChild(H),P=new $3(H,new eU(u))}let M;if(!l(t.timeline)||t.timeline!==!1){let H=document.createElement("div");H.className="cesium-viewer-timelineContainer",o.appendChild(H),M=new NU(H,c),M.addEventListener("settime",Ywe,!1),M.zoomTo(c.startTime,c.stopTime)}let L,p,x;(!l(t.fullscreenButton)||t.fullscreenButton!==!1)&&(x=document.createElement("div"),x.className="cesium-viewer-fullscreenContainer",o.appendChild(x),L=new hU(x,t.fullscreenElement),p=tc(L.viewModel,"isFullscreenEnabled",function(H){x.style.display=H?"block":"none",l(M)&&(M.container.style.right=`${x.clientWidth}px`,M.resize())}));let T,w,R;if(t.vrButton){let H=document.createElement("div");H.className="cesium-viewer-vrContainer",o.appendChild(H),T=new FU(H,A,t.fullScreenElement),w=tc(T.viewModel,"isVREnabled",function(W){H.style.display=W?"block":"none",l(L)&&(H.style.right=`${x.clientWidth}px`),l(M)&&(M.container.style.right=`${H.clientWidth}px`,M.resize())}),R=tc(T.viewModel,"isVRMode",function(W){TRt(i,W)})}this._baseLayerPickerDropDown=B,this._fullscreenSubscription=p,this._vrSubscription=w,this._vrModeSubscription=R,this._dataSourceChangedListeners={},this._container=e,this._bottomContainer=s,this._element=o,this._cesiumWidget=h,this._selectionIndicator=m,this._infoBox=_,this._clockViewModel=u,this._destroyClockViewModel=f,this._toolbar=y,this._homeButton=E,this._sceneModePicker=I,this._projectionPicker=b,this._baseLayerPicker=S,this._navigationHelpButton=v,this._animation=P,this._timeline=M,this._fullscreenButton=L,this._vrButton=T,this._geocoder=C,this._eventHelper=g,this._lastWidth=0,this._lastHeight=0,this._enableInfoOrSelection=l(_)||l(m),this._selectedEntity=void 0,this._selectedEntityChanged=new _e;let O=this._cesiumWidget.dataSources,k=this._cesiumWidget.dataSourceDisplay;g.add(O.dataSourceAdded,co.prototype._onDataSourceAdded,this),g.add(O.dataSourceRemoved,co.prototype._onDataSourceRemoved,this),g.add(A.postUpdate,co.prototype.resize,this);let Q=O.length;for(let H=0;H<Q;H++)this._dataSourceAdded(O,O.get(H));this._dataSourceAdded(void 0,k.defaultDataSource),g.add(O.dataSourceAdded,co.prototype._dataSourceAdded,this),g.add(O.dataSourceRemoved,co.prototype._dataSourceRemoved,this);function z(H){let W=Wwe(i,H);l(W)?j.getValueOrUndefined(W.position,i.clock.currentTime)?i.trackedEntity=W:i.zoomTo(W):l(i.trackedEntity)&&(i.trackedEntity=void 0)}function F(H){i.selectedEntity=Wwe(i,H)}h.screenSpaceEventHandler.setInputAction(F,Dn.LEFT_CLICK),h.screenSpaceEventHandler.setInputAction(z,Dn.LEFT_DOUBLE_CLICK),h._canAnimateUpdateCallback=this._updateCanAnimate(this)}Object.defineProperties(co.prototype,{container:{get:function(){return this._container}},creditDisplay:{get:function(){return this._cesiumWidget.creditDisplay}},bottomContainer:{get:function(){return this._bottomContainer}},cesiumWidget:{get:function(){return this._cesiumWidget}},selectionIndicator:{get:function(){return this._selectionIndicator}},infoBox:{get:function(){return this._infoBox}},geocoder:{get:function(){return this._geocoder}},homeButton:{get:function(){return this._homeButton}},sceneModePicker:{get:function(){return this._sceneModePicker}},projectionPicker:{get:function(){return this._projectionPicker}},baseLayerPicker:{get:function(){return this._baseLayerPicker}},navigationHelpButton:{get:function(){return this._navigationHelpButton}},animation:{get:function(){return this._animation}},timeline:{get:function(){return this._timeline}},fullscreenButton:{get:function(){return this._fullscreenButton}},vrButton:{get:function(){return this._vrButton}},dataSourceDisplay:{get:function(){return this._cesiumWidget.dataSourceDisplay}},entities:{get:function(){return this._cesiumWidget.entities}},dataSources:{get:function(){return this._cesiumWidget.dataSources}},canvas:{get:function(){return this._cesiumWidget.canvas}},scene:{get:function(){return this._cesiumWidget.scene}},shadows:{get:function(){return this.scene.shadowMap.enabled},set:function(e){this.scene.shadowMap.enabled=e}},terrainShadows:{get:function(){return this.scene.globe.shadows},set:function(e){this.scene.globe.shadows=e}},shadowMap:{get:function(){return this.scene.shadowMap}},imageryLayers:{get:function(){return this.scene.imageryLayers}},terrainProvider:{get:function(){return this.scene.terrainProvider},set:function(e){this.scene.terrainProvider=e}},camera:{get:function(){return this.scene.camera}},ellipsoid:{get:function(){return this._scene.ellipsoid}},postProcessStages:{get:function(){return this.scene.postProcessStages}},clock:{get:function(){return this._clockViewModel.clock}},clockViewModel:{get:function(){return this._clockViewModel}},screenSpaceEventHandler:{get:function(){return this._cesiumWidget.screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._cesiumWidget.targetFrameRate},set:function(e){this._cesiumWidget.targetFrameRate=e}},useDefaultRenderLoop:{get:function(){return this._cesiumWidget.useDefaultRenderLoop},set:function(e){this._cesiumWidget.useDefaultRenderLoop=e}},resolutionScale:{get:function(){return this._cesiumWidget.resolutionScale},set:function(e){this._cesiumWidget.resolutionScale=e}},useBrowserRecommendedResolution:{get:function(){return this._cesiumWidget.useBrowserRecommendedResolution},set:function(e){this._cesiumWidget.useBrowserRecommendedResolution=e}},allowDataSourcesToSuspendAnimation:{get:function(){return this._cesiumWidget.allowDataSourcesToSuspendAnimation},set:function(e){this._cesiumWidget.allowDataSourcesToSuspendAnimation=e}},trackedEntity:{get:function(){return this._cesiumWidget.trackedEntity},set:function(e){this._cesiumWidget.trackedEntity=e}},selectedEntity:{get:function(){return this._selectedEntity},set:function(e){if(this._selectedEntity!==e){this._selectedEntity=e;let t=l(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;l(e)?l(t)&&t.animateAppear():l(t)&&t.animateDepart(),this._selectedEntityChanged.raiseEvent(e)}}},selectedEntityChanged:{get:function(){return this._selectedEntityChanged}},trackedEntityChanged:{get:function(){return this._cesiumWidget.trackedEntityChanged}},clockTrackedDataSource:{get:function(){return this._cesiumWidget.clockTrackedDataSource},set:function(e){this._cesiumWidget.clockTrackedDataSource!==e&&(this._cesiumWidget.clockTrackedDataSource=e,cte(this._timeline,e))}}});co.prototype.extend=function(e,t){e(this,t)};co.prototype.resize=function(){let e=this._cesiumWidget,t=this._container,n=t.clientWidth,i=t.clientHeight,o=l(this._animation),r=l(this._timeline);if(e.resize(),n===this._lastWidth&&i===this._lastHeight)return;let s=i-125,a=this._baseLayerPickerDropDown;if(l(a)&&(a.style.maxHeight=`${s}px`),l(this._geocoder)){let m=this._geocoder.searchSuggestionsContainer;m.style.maxHeight=`${s}px`}l(this._infoBox)&&(this._infoBox.viewModel.maxHeight=s);let c=this._timeline,u,f=0,h=5,A=3,g=0;if(o&&window.getComputedStyle(this._animation.container).visibility!=="hidden"){let m=this._lastWidth;u=this._animation.container,n>900?(f=169,m<=900&&(u.style.width="169px",u.style.height="112px",this._animation.resize())):n>=600?(f=136,(m<600||m>900)&&(u.style.width="136px",u.style.height="90px",this._animation.resize())):(f=106,(m>600||m===0)&&(u.style.width="106px",u.style.height="70px",this._animation.resize())),h=f+5}if(r&&window.getComputedStyle(this._timeline.container).visibility!=="hidden"){let m=this._fullscreenButton,_=this._vrButton,y=c.container,C=y.style;A=y.clientHeight+3,C.left=`${f}px`;let E=0;l(m)&&(E+=m.container.clientWidth),l(_)&&(E+=_.container.clientWidth),C.right=`${E}px`,c.resize()}!r&&l(this._fullscreenButton)&&(g=this._fullscreenButton.container.clientWidth),this._bottomContainer.style.left=`${h}px`,this._bottomContainer.style.bottom=`${A}px`,this._bottomContainer.style.right=`${g}px`,this._lastWidth=n,this._lastHeight=i};co.prototype.forceResize=function(){this._lastWidth=0,this.resize()};co.prototype.render=function(){this._cesiumWidget.render()};co.prototype.isDestroyed=function(){return!1};co.prototype.destroy=function(){return l(this.screenSpaceEventHandler)&&!this.screenSpaceEventHandler.isDestroyed()&&(this.screenSpaceEventHandler.removeInputAction(Dn.LEFT_CLICK),this.screenSpaceEventHandler.removeInputAction(Dn.LEFT_DOUBLE_CLICK)),this._container.removeChild(this._element),this._element.removeChild(this._toolbar),this._eventHelper.removeAll(),l(this._geocoder)&&(this._geocoder=this._geocoder.destroy()),l(this._homeButton)&&(this._homeButton=this._homeButton.destroy()),l(this._sceneModePicker)&&(this._sceneModePicker=this._sceneModePicker.destroy()),l(this._projectionPicker)&&(this._projectionPicker=this._projectionPicker.destroy()),l(this._baseLayerPicker)&&(this._baseLayerPicker=this._baseLayerPicker.destroy()),l(this._animation)&&(this._element.removeChild(this._animation.container),this._animation=this._animation.destroy()),l(this._timeline)&&(this._timeline.removeEventListener("settime",Ywe,!1),this._element.removeChild(this._timeline.container),this._timeline=this._timeline.destroy()),l(this._fullscreenButton)&&(this._fullscreenSubscription.dispose(),this._element.removeChild(this._fullscreenButton.container),this._fullscreenButton=this._fullscreenButton.destroy()),l(this._vrButton)&&(this._vrSubscription.dispose(),this._vrModeSubscription.dispose(),this._element.removeChild(this._vrButton.container),this._vrButton=this._vrButton.destroy()),l(this._infoBox)&&(this._element.removeChild(this._infoBox.container),this._infoBox=this._infoBox.destroy()),l(this._selectionIndicator)&&(this._element.removeChild(this._selectionIndicator.container),this._selectionIndicator=this._selectionIndicator.destroy()),this._destroyClockViewModel&&(this._clockViewModel=this._clockViewModel.destroy()),this._cesiumWidget=this._cesiumWidget.destroy(),ue(this)};co.prototype._dataSourceAdded=function(e,t){t.entities.collectionChanged.addEventListener(co.prototype._onEntityCollectionChanged,this)};co.prototype._dataSourceRemoved=function(e,t){let n=t.entities;n.collectionChanged.removeEventListener(co.prototype._onEntityCollectionChanged,this),l(this.selectedEntity)&&n.getById(this.selectedEntity.id)===this.selectedEntity&&(this.selectedEntity=void 0)};co.prototype._updateCanAnimate=function(e){return function(t){e._clockViewModel.canAnimate=t}};co.prototype._onTick=function(e){let t=e.currentTime,n,i=!1,o=this.selectedEntity,r=l(o)&&this._enableInfoOrSelection;r&&o.isShowing&&o.isAvailable(t)&&(this._cesiumWidget.dataSourceDisplay.getBoundingSphere(o,!0,Hwe)!==mt.FAILED?n=Hwe.center:l(o.position)&&(n=o.position.getValue(t,n)),i=l(n));let s=l(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;l(s)&&(s.position=d.clone(n,s.position),s.showSelection=r&&i,s.update());let a=l(this._infoBox)?this._infoBox.viewModel:void 0;l(a)&&(a.showInfo=r,a.enableCamera=i,a.isCameraTracking=this.trackedEntity===this.selectedEntity,r?(a.titleText=o.name??o.id,a.description=j.getValueOrDefault(o.description,t,"")):(a.titleText="",a.description=""))};co.prototype._onEntityCollectionChanged=function(e,t,n){let i=n.length;for(let o=0;o<i;o++){let r=n[o];this.selectedEntity===r&&(this.selectedEntity=void 0)}};co.prototype._onInfoBoxCameraClicked=function(e){if(e.isCameraTracking&&this.trackedEntity===this.selectedEntity)this.trackedEntity=void 0;else{let n=this.selectedEntity.position;l(n)?this.trackedEntity=this.selectedEntity:this.zoomTo(this.selectedEntity)}};co.prototype._clearTrackedObject=function(){this.trackedEntity=void 0};co.prototype._onInfoBoxClockClicked=function(e){this.selectedEntity=void 0};co.prototype._clearObjects=function(){this.trackedEntity=void 0,this.selectedEntity=void 0};co.prototype._onDataSourceChanged=function(e){this.clockTrackedDataSource===e&&cte(this.timeline,e)};co.prototype._onDataSourceAdded=function(e,t){this._cesiumWidget._automaticallyTrackDataSourceClocks&&t===this.clockTrackedDataSource&&cte(this._timeline,t);let n=t.entities.id,i=this._eventHelper.add(t.changedEvent,co.prototype._onDataSourceChanged,this);this._dataSourceChangedListeners[n]=i};co.prototype._onDataSourceRemoved=function(e,t){let n=t.entities.id;this._dataSourceChangedListeners[n](),this._dataSourceChangedListeners[n]=void 0};co.prototype.zoomTo=function(e,t){return this._cesiumWidget.zoomTo(e,t)};co.prototype.flyTo=function(e,t){return this._cesiumWidget.flyTo(e,t)};var lte=co;function SRt(e){let t=document.createElement("div");t.className="cesium-viewer-cesium3DTilesInspectorContainer",e.container.appendChild(t);let n=new cU(t,e.scene);Object.defineProperties(e,{cesium3DTilesInspector:{get:function(){return n}}})}var ute=SRt;function wRt(e){let t=document.createElement("div");t.className="cesium-viewer-cesiumInspectorContainer",e.container.appendChild(t);let n=new fU(t,e.scene);Object.defineProperties(e,{cesiumInspector:{get:function(){return n}}})}var fte=wRt;function BRt(e,t){t=t??V.EMPTY_OBJECT;let n=!0,i=t.flyToOnDrop??!0,o=new _e,r=t.clearOnDrop??!0,s=t.dropTarget??e.container,a=t.clampToGround??!0,c=t.proxy;s=kn(s),Object.defineProperties(e,{dropTarget:{get:function(){return s},set:function(f){qwe(s,u),s=f,dte(s,u)}},dropEnabled:{get:function(){return n},set:function(f){f!==n&&(f?dte(s,u):qwe(s,u),n=f)}},dropError:{get:function(){return o}},clearOnDrop:{get:function(){return r},set:function(f){r=f}},flyToOnDrop:{get:function(){return i},set:function(f){i=f}},proxy:{get:function(){return c},set:function(f){c=f}},clampToGround:{get:function(){return a},set:function(f){a=f}}});function u(f){Mx(f),r&&(e.entities.removeAll(),e.dataSources.removeAll());let h=f.dataTransfer.files,A=h.length;for(let g=0;g<A;g++){let m=h[g],_=new FileReader;_.onload=DRt(e,m,c,a),_.onerror=vRt(e,m),_.readAsText(m)}}dte(s,u),e.destroy=C3(e,e.destroy,function(){e.dropEnabled=!1}),e._handleDrop=u}function Mx(e){e.stopPropagation(),e.preventDefault()}function qwe(e,t){let n=e;l(n)&&(n.removeEventListener("drop",t,!1),n.removeEventListener("dragenter",Mx,!1),n.removeEventListener("dragover",Mx,!1),n.removeEventListener("dragexit",Mx,!1))}function dte(e,t){e.addEventListener("drop",t,!1),e.addEventListener("dragenter",Mx,!1),e.addEventListener("dragover",Mx,!1),e.addEventListener("dragexit",Mx,!1)}function DRt(e,t,n,i){let o=e.scene;return function(r){let s=t.name;try{let a;if(/\.czml$/i.test(s))a=zO.load(JSON.parse(r.target.result),{sourceUri:s});else if(/\.geojson$/i.test(s)||/\.json$/i.test(s)||/\.topojson$/i.test(s))a=jy.load(JSON.parse(r.target.result),{sourceUri:s,clampToGround:i});else if(/\.(kml|kmz)$/i.test(s))a=xI.load(t,{sourceUri:s,proxy:n,camera:o.camera,canvas:o.canvas,clampToGround:i,screenOverlayContainer:e.container});else if(/\.gpx$/i.test(s))a=UF.load(t,{sourceUri:s,proxy:n});else{e.dropError.raiseEvent(e,s,`Unrecognized file: ${s}`);return}l(a)&&e.dataSources.add(a).then(function(c){e.flyToOnDrop&&e.flyTo(c)}).catch(function(c){e.dropError.raiseEvent(e,s,c)})}catch(a){e.dropError.raiseEvent(e,s,a)}}}function vRt(e,t){return function(n){e.dropError.raiseEvent(e,t.name,n.target.error)}}var hte=BRt;function PRt(e,t){t=t??V.EMPTY_OBJECT;let n=new bU({scene:e.scene,container:e.bottomContainer,lowFrameRateMessage:t.lowFrameRateMessage});Object.defineProperties(e,{performanceWatchdog:{get:function(){return n}}})}var mte=PRt;function Kwe(e){let t=e.split(` +`),n;for(n=0;n<t.length&&!t[n].match(/\S/);n++);if(n===t.length)return"";let i="",o=/^\s*/,s=t[n].match(o)[0].length;for(let a=n;a<t.length;a++){let c=t[a];c.match(o)[0].length>=s&&(c=c.slice(s)),i+=`${c} +`}return i}function $d(e){this._scene=e,this._voxelPrimitive=void 0,this._customShaderCompilationRemoveCallback=void 0,this._definedProperties=[],this._getPrimitiveFunctions=[],this._modelMatrixReady=!1;let t=this;function n(o){let{name:r,initialValue:s}=o;t._definedProperties.push(r);let a=o.setPrimitiveFunction;a===!0&&(a=function(f){t._voxelPrimitive[r]=f});let c=o.getPrimitiveFunction;c===!0&&(c=function(){t[r]=t._voxelPrimitive[r]}),l(c)&&t._getPrimitiveFunctions.push(c);let u=Ie.observable();return Ie.defineProperty(t,r,{get:function(){return u()},set:function(f){typeof s=="number"&&typeof f=="string"&&(f=Number(f),isNaN(f)&&(f=s)),typeof s=="boolean"&&typeof f=="number"&&(f=f===1),u(f),l(a)&&l(t._voxelPrimitive)&&(a(f),e.requestRender())}}),t[r]=s,u}function i(o,r){return function(s){let a=t._voxelPrimitive[o].clone();a[r]=s,t._voxelPrimitive[o]=a}}n({name:"inspectorVisible",initialValue:!0}),n({name:"displayVisible",initialValue:!1}),n({name:"transformVisible",initialValue:!1}),n({name:"boundsVisible",initialValue:!1}),n({name:"clippingVisible",initialValue:!1}),n({name:"shaderVisible",initialValue:!1}),n({name:"shaderString",initialValue:"",getPrimitiveFunction:function(){let o=t._voxelPrimitive.customShader.fragmentShaderText;t.shaderString=Kwe(o)}}),n({name:"shaderCompilationMessage",initialValue:""}),n({name:"shaderCompilationSuccess",initialValue:!0}),n({name:"depthTest",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"show",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"disableUpdate",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"debugDraw",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"jitter",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"nearestSampling",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"screenSpaceError",initialValue:4,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"stepSize",initialValue:1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"shapeIsBox",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsBox=o===ec.BOX}}),n({name:"shapeIsEllipsoid",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsEllipsoid=o===ec.ELLIPSOID}}),n({name:"shapeIsCylinder",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsCylinder=o===ec.CYLINDER}}),n({name:"clippingBoxMaxXMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxXMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingBoxMaxXMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxXMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingBoxMaxX",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingBoxMaxX=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingBoxMinXMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinXMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingBoxMinXMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinXMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingBoxMinX",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingBoxMinX=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingBoxMaxYMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxYMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingBoxMaxYMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxYMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingBoxMaxY",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingBoxMaxY=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingBoxMinYMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinYMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingBoxMinYMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinYMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingBoxMinY",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingBoxMinY=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingBoxMaxZMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxZMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingBoxMaxZMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxZMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingBoxMaxZ",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingBoxMaxZ=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingBoxMinZMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinZMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingBoxMinZMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinZMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingBoxMinZ",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingBoxMinZ=t._voxelPrimitive.minClippingBounds.z}}),n({name:"clippingEllipsoidMaxLongitudeMin",initialValue:-D.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitudeMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingEllipsoidMaxLongitudeMax",initialValue:D.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitudeMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingEllipsoidMaxLongitude",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitude=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingEllipsoidMinLongitudeMin",initialValue:-D.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitudeMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingEllipsoidMinLongitudeMax",initialValue:D.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitudeMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingEllipsoidMinLongitude",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitude=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingEllipsoidMaxLatitudeMin",initialValue:-D.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitudeMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingEllipsoidMaxLatitudeMax",initialValue:D.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitudeMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingEllipsoidMaxLatitude",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitude=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingEllipsoidMinLatitudeMin",initialValue:-D.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitudeMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingEllipsoidMinLatitudeMax",initialValue:D.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitudeMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingEllipsoidMinLatitude",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitude=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingEllipsoidMaxHeightMin",initialValue:0,getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingEllipsoidMaxHeightMax",initialValue:1e5,getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingEllipsoidMaxHeight",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeight=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingEllipsoidMinHeightMin",initialValue:-1e5,getPrimitiveFunction:function(){t.clippingEllipsoidMinHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingEllipsoidMinHeightMax",initialValue:0,getPrimitiveFunction:function(){t.clippingEllipsoidMinHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingEllipsoidMinHeight",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingEllipsoidMinHeight=t._voxelPrimitive.minClippingBounds.z}}),n({name:"clippingCylinderMaxRadiusMin",initialValue:0,getPrimitiveFunction:function(){t.clippingCylinderMaxRadiusMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingCylinderMaxRadiusMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMaxRadiusMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingCylinderMaxRadius",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingCylinderMaxRadius=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingCylinderMinRadiusMin",initialValue:0,getPrimitiveFunction:function(){t.clippingCylinderMinRadiusMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingCylinderMinRadiusMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMinRadiusMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingCylinderMinRadius",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingCylinderMinRadius=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingCylinderMaxAngleMin",initialValue:-D.PI,getPrimitiveFunction:function(){t.clippingCylinderMaxAngleMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingCylinderMaxAngleMax",initialValue:D.PI,getPrimitiveFunction:function(){t.clippingCylinderMaxAngleMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingCylinderMaxAngle",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingCylinderMaxAngle=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingCylinderMinAngleMin",initialValue:-D.PI}),n({name:"clippingCylinderMinAngleMax",initialValue:D.PI}),n({name:"clippingCylinderMinAngle",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingCylinderMinAngle=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingCylinderMaxHeightMin",initialValue:-1,getPrimitiveFunction:function(){t.clippingCylinderMaxHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingCylinderMaxHeightMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMaxHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingCylinderMaxHeight",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingCylinderMaxHeight=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingCylinderMinHeightMin",initialValue:-1,getPrimitiveFunction:function(){t.clippingCylinderMinHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingCylinderMinHeightMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMinHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingCylinderMinHeight",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingCylinderMinHeight=t._voxelPrimitive.minClippingBounds.z}}),n({name:"translationX",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&HA(t)},getPrimitiveFunction:function(){t.translationX=N.getTranslation(t._voxelPrimitive.modelMatrix,new d).x}}),n({name:"translationY",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&HA(t)},getPrimitiveFunction:function(){t.translationY=N.getTranslation(t._voxelPrimitive.modelMatrix,new d).y}}),n({name:"translationZ",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&HA(t)},getPrimitiveFunction:function(){t.translationZ=N.getTranslation(t._voxelPrimitive.modelMatrix,new d).z}}),n({name:"scaleX",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&HA(t)},getPrimitiveFunction:function(){t.scaleX=N.getScale(t._voxelPrimitive.modelMatrix,new d).x}}),n({name:"scaleY",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&HA(t)},getPrimitiveFunction:function(){t.scaleY=N.getScale(t._voxelPrimitive.modelMatrix,new d).y}}),n({name:"scaleZ",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&HA(t)},getPrimitiveFunction:function(){t.scaleZ=N.getScale(t._voxelPrimitive.modelMatrix,new d).z}}),n({name:"angleX",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&HA(t)}}),n({name:"angleY",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&HA(t)}}),n({name:"angleZ",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&HA(t)}})}var RRt=new d,MRt=new d,NRt=new rc,LRt=new J;function HA(e){let t=d.fromElements(e.translationX,e.translationY,e.translationZ,RRt),n=d.fromElements(e.scaleX,e.scaleY,e.scaleZ,MRt),i=NRt;i.heading=e.angleX,i.pitch=e.angleY,i.roll=e.angleZ;let o=J.fromHeadingPitchRoll(i,LRt),r=J.multiplyByScale(o,n,o);e._voxelPrimitive.modelMatrix=N.fromRotationTranslation(r,t,e._voxelPrimitive.modelMatrix)}Object.defineProperties($d.prototype,{scene:{get:function(){return this._scene}},voxelPrimitive:{get:function(){return this._voxelPrimitive},set:function(e){if(l(this._customShaderCompilationRemoveCallback)&&this._customShaderCompilationRemoveCallback(),!l(e))return;this._voxelPrimitive=e;let t=this;t._customShaderCompilationRemoveCallback=t._voxelPrimitive.customShaderCompilationEvent.addEventListener(function(n){let i=t._voxelPrimitive.customShader.fragmentShaderText;t.shaderString=Kwe(i),l(n)?(t.shaderCompilationMessage=n.message,t.shaderCompilationSuccess=!1):(t.shaderCompilationMessage="Shader compiled successfully!",t.shaderCompilationSuccess=!0)}),t._modelMatrixReady=!1;for(let n=0;n<t._getPrimitiveFunctions.length;n++)t._getPrimitiveFunctions[n]();t._modelMatrixReady=!0,HA(t)}}});$d.prototype.toggleInspector=function(){this.inspectorVisible=!this.inspectorVisible};$d.prototype.toggleDisplay=function(){this.displayVisible=!this.displayVisible};$d.prototype.toggleTransform=function(){this.transformVisible=!this.transformVisible};$d.prototype.toggleBounds=function(){this.boundsVisible=!this.boundsVisible};$d.prototype.toggleClipping=function(){this.clippingVisible=!this.clippingVisible};$d.prototype.toggleShader=function(){this.shaderVisible=!this.shaderVisible};$d.prototype.compileShader=function(){l(this._voxelPrimitive)&&(this._voxelPrimitive.customShader=new ix({fragmentShaderText:this.shaderString,uniforms:this._voxelPrimitive.customShader.uniforms}))};$d.prototype.shaderEditorKeyPress=function(e,t){if(t.keyCode===9){t.preventDefault();let n=t.target,i=n.selectionStart,o=n.selectionEnd,r=o,a=n.value.slice(i,o).split(` +`),c=a.length,u;if(t.shiftKey)for(u=0;u<c;++u)a[u][0]===" "&&(a[u][1]===" "?(a[u]=a[u].substr(2),r-=2):(a[u]=a[u].substr(1),r-=1));else for(u=0;u<c;++u)a[u]=` ${a[u]}`,r+=2;let f=a.join(` +`);n.value=n.value.slice(0,i)+f+n.value.slice(o),n.selectionStart=i!==o?i:r,n.selectionEnd=r}else t.ctrlKey&&(t.keyCode===10||t.keyCode===13)&&this.compileShader();return!0};$d.prototype.isDestroyed=function(){return!1};$d.prototype.destroy=function(){let e=this;return this._definedProperties.forEach(function(t){Ie.getObservable(e,t).dispose()}),ue(this)};var QU=$d;function t9(e,t){e=kn(e);let n=document.createElement("div"),i=new QU(t);this._viewModel=i,this._container=e,this._element=n;let o=document.createElement("div");o.textContent="Voxel Inspector",o.className="cesium-cesiumInspector-button",o.setAttribute("data-bind","click: toggleInspector"),n.appendChild(o),n.className="cesium-cesiumInspector cesium-VoxelInspector",n.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : inspectorVisible, "cesium-cesiumInspector-hidden" : !inspectorVisible}'),e.appendChild(n);let r=document.createElement("div");r.className="cesium-cesiumInspector-dropDown",n.appendChild(r);let{createSection:s,createCheckbox:a,createRangeInput:c,createButton:u}=Mu,f=s(r,"Display","displayVisible","toggleDisplay"),h=s(r,"Transform","transformVisible","toggleTransform"),A=s(r,"Clipping","clippingVisible","toggleClipping"),g=s(r,"Shader","shaderVisible","toggleShader");f.appendChild(a("Depth Test","depthTest")),f.appendChild(a("Show","show")),f.appendChild(a("Disable Update","disableUpdate")),f.appendChild(a("Debug Draw","debugDraw")),f.appendChild(a("Jitter","jitter")),f.appendChild(a("Nearest Sampling","nearestSampling")),f.appendChild(c("Screen Space Error","screenSpaceError",0,128)),f.appendChild(c("Step Size","stepSize",0,2));let m=10,_=10,y=D.PI;h.appendChild(c("Translation X","translationX",-m,+m)),h.appendChild(c("Translation Y","translationY",-m,+m)),h.appendChild(c("Translation Z","translationZ",-m,+m)),h.appendChild(c("Scale X","scaleX",0,+_)),h.appendChild(c("Scale Y","scaleY",0,+_)),h.appendChild(c("Scale Z","scaleZ",0,+_)),h.appendChild(c("Heading","angleX",-y,+y)),h.appendChild(c("Pitch","angleY",-y,+y)),h.appendChild(c("Roll","angleZ",-y,+y)),Ate("Max X","Min X","Max Y","Min Y","Max Z","Min Z","clippingBoxMaxX","clippingBoxMinX","clippingBoxMaxY","clippingBoxMinY","clippingBoxMaxZ","clippingBoxMinZ","shapeIsBox",A),Ate("Max Longitude","Min Longitude","Max Latitude","Min Latitude","Max Height","Min Height","clippingEllipsoidMaxLongitude","clippingEllipsoidMinLongitude","clippingEllipsoidMaxLatitude","clippingEllipsoidMinLatitude","clippingEllipsoidMaxHeight","clippingEllipsoidMinHeight","shapeIsEllipsoid",A),Ate("Max Radius","Min Radius","Max Angle","Min Angle","Max Height","Min Height","clippingCylinderMaxRadius","clippingCylinderMinRadius","clippingCylinderMaxAngle","clippingCylinderMinAngle","clippingCylinderMaxHeight","clippingCylinderMinHeight","shapeIsCylinder",A);let C=document.createElement("div");g.appendChild(C);let E=document.createElement("textarea");E.setAttribute("data-bind","textInput: shaderString, event: { keydown: shaderEditorKeyPress }"),C.className="cesium-cesiumInspector-styleEditor",C.appendChild(E);let I=u("Compile (Ctrl+Enter)","compileShader");C.appendChild(I);let b=document.createElement("label");b.style.display="block",b.setAttribute("data-bind","text: shaderCompilationMessage, style: {color: shaderCompilationSuccess ? 'green' : 'red'}"),C.appendChild(b),Ie.applyBindings(i,n)}Object.defineProperties(t9.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});t9.prototype.isDestroyed=function(){return!1};t9.prototype.destroy=function(){return Ie.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),ue(this)};function Ate(e,t,n,i,o,r,s,a,c,u,f,h,A,g){let m=Mu.createRangeInputWithDynamicMinMax,_=g.appendChild(document.createElement("div"));_.setAttribute("data-bind",`if: ${A}`),_.appendChild(m(e,s)),_.appendChild(m(t,a)),_.appendChild(m(n,c)),_.appendChild(m(i,u)),_.appendChild(m(o,f)),_.appendChild(m(r,h))}var kU=t9;function ORt(e){let t=document.createElement("div");t.className="cesium-viewer-voxelInspectorContainer",e.container.appendChild(t);let n=new kU(t,e.scene);Object.defineProperties(e,{voxelInspector:{get:function(){return n}}})}var pte=ORt;globalThis.CESIUM_VERSION="1.132";var FRt="1.132";0&&(module.exports={AlphaMode,AlphaPipelineStage,AnchorPointDirect,AnchorPointIndirect,Animation,AnimationViewModel,Appearance,ApproximateTerrainHeights,ArcGISTiledElevationTerrainProvider,ArcGisBaseMapType,ArcGisMapServerImageryProvider,ArcGisMapService,ArcType,ArticulationStageType,AssociativeArray,Atmosphere,AtmospherePipelineStage,AttributeCompression,AttributeType,AutoExposure,AutomaticUniforms,Axis,AxisAlignedBoundingBox,B3dmLoader,B3dmParser,BaseLayerPicker,BaseLayerPickerViewModel,BatchTable,BatchTableHierarchy,BatchTexture,BatchTexturePipelineStage,Billboard,BillboardCollection,BillboardGraphics,BillboardLoadState,BillboardTexture,BillboardVisualizer,BingMapsGeocoderService,BingMapsImageryProvider,BingMapsStyle,BlendEquation,BlendFunction,BlendOption,BlendingState,BoundingRectangle,BoundingSphere,BoundingSphereState,BoundingVolumeSemantics,BoxEmitter,BoxGeometry,BoxGeometryUpdater,BoxGraphics,BoxOutlineGeometry,BrdfLutGenerator,Buffer,BufferLoader,BufferUsage,CPUStylingPipelineStage,CallbackPositionProperty,CallbackProperty,Camera,CameraEventAggregator,CameraEventType,CameraFlightPath,Cartesian2,Cartesian3,Cartesian4,CartesianRectangle,Cartographic,CartographicGeocoderService,CatmullRomSpline,Cesium3DContentGroup,Cesium3DTile,Cesium3DTileBatchTable,Cesium3DTileColorBlendMode,Cesium3DTileContent,Cesium3DTileContentFactory,Cesium3DTileContentState,Cesium3DTileContentType,Cesium3DTileFeature,Cesium3DTileFeatureTable,Cesium3DTileOptimizationHint,Cesium3DTileOptimizations,Cesium3DTilePass,Cesium3DTilePassState,Cesium3DTilePointFeature,Cesium3DTileRefine,Cesium3DTileStyle,Cesium3DTileStyleEngine,Cesium3DTilesInspector,Cesium3DTilesInspectorViewModel,Cesium3DTilesVoxelProvider,Cesium3DTileset,Cesium3DTilesetBaseTraversal,Cesium3DTilesetCache,Cesium3DTilesetGraphics,Cesium3DTilesetHeatmap,Cesium3DTilesetMetadata,Cesium3DTilesetMostDetailedTraversal,Cesium3DTilesetSkipTraversal,Cesium3DTilesetStatistics,Cesium3DTilesetTraversal,Cesium3DTilesetVisualizer,CesiumInspector,CesiumInspectorViewModel,CesiumTerrainProvider,CesiumWidget,Check,CheckerboardMaterialProperty,CircleEmitter,CircleGeometry,CircleOutlineGeometry,ClassificationModelDrawCommand,ClassificationPipelineStage,ClassificationPrimitive,ClassificationType,ClearCommand,ClippingPlane,ClippingPlaneCollection,ClippingPolygon,ClippingPolygonCollection,Clock,ClockRange,ClockStep,ClockViewModel,CloudCollection,CloudType,Color,ColorBlendMode,ColorGeometryInstanceAttribute,ColorMaterialProperty,Command,ComponentDatatype,Composite3DTileContent,CompositeEntityCollection,CompositeMaterialProperty,CompositePositionProperty,CompositeProperty,CompressedTextureBuffer,ComputeCommand,ComputeEngine,ConditionsExpression,ConeEmitter,ConstantPositionProperty,ConstantProperty,ConstantSpline,ContentMetadata,Context,ContextLimits,CoplanarPolygonGeometry,CoplanarPolygonGeometryLibrary,CoplanarPolygonOutlineGeometry,CornerType,CorrelationGroup,CorridorGeometry,CorridorGeometryLibrary,CorridorGeometryUpdater,CorridorGraphics,CorridorOutlineGeometry,Credit,CreditDisplay,CubeMap,CubeMapFace,CubicRealPolynomial,CullFace,CullingVolume,CumulusCloud,CustomDataSource,CustomHeightmapTerrainProvider,CustomShader,CustomShaderMode,CustomShaderPipelineStage,CustomShaderTranslucencyMode,CylinderGeometry,CylinderGeometryLibrary,CylinderGeometryUpdater,CylinderGraphics,CylinderOutlineGeometry,CzmlDataSource,DataSource,DataSourceClock,DataSourceCollection,DataSourceDisplay,DebugAppearance,DebugCameraPrimitive,DebugInspector,DebugModelMatrixPrimitive,DefaultProxy,DepthFunction,DepthPlane,DequantizationPipelineStage,DerivedCommand,DeveloperError,DeviceOrientationCameraController,DirectionalLight,DiscardEmptyTileImagePolicy,DiscardMissingTileImagePolicy,DistanceDisplayCondition,DistanceDisplayConditionGeometryInstanceAttribute,DoubleEndedPriorityQueue,DoublyLinkedList,DracoLoader,DrawCommand,DynamicAtmosphereLightingType,DynamicEnvironmentMapManager,DynamicGeometryBatch,DynamicGeometryUpdater,EarthOrientationParameters,EarthOrientationParametersSample,EasingFunction,EllipseGeometry,EllipseGeometryLibrary,EllipseGeometryUpdater,EllipseGraphics,EllipseOutlineGeometry,Ellipsoid,EllipsoidGeodesic,EllipsoidGeometry,EllipsoidGeometryUpdater,EllipsoidGraphics,EllipsoidOutlineGeometry,EllipsoidPrimitive,EllipsoidRhumbLine,EllipsoidSurfaceAppearance,EllipsoidTangentPlane,EllipsoidTerrainProvider,EllipsoidalOccluder,Empty3DTileContent,EncodedCartesian3,Entity,EntityCluster,EntityCollection,EntityView,Event,EventHelper,Expression,ExpressionNodeType,ExtrapolationType,FeatureDetection,FeatureIdPipelineStage,Fog,ForEach,FrameRateMonitor,FrameState,Framebuffer,FramebufferManager,Frozen,FrustumCommands,FrustumGeometry,FrustumOutlineGeometry,Fullscreen,FullscreenButton,FullscreenButtonViewModel,GaussianSplat3DTileContent,GaussianSplatPrimitive,GaussianSplatRenderResources,GaussianSplatSorter,GaussianSplatTextureGenerator,GeoJsonDataSource,GeoJsonLoader,GeocodeType,Geocoder,GeocoderService,GeocoderViewModel,GeographicProjection,GeographicTilingScheme,Geometry,Geometry3DTileContent,GeometryAttribute,GeometryAttributes,GeometryFactory,GeometryInstance,GeometryInstanceAttribute,GeometryOffsetAttribute,GeometryPipeline,GeometryPipelineStage,GeometryType,GeometryUpdater,GeometryUpdaterSet,GeometryVisualizer,GetFeatureInfoFormat,Globe,GlobeDepth,GlobeSurfaceShaderSet,GlobeSurfaceTile,GlobeSurfaceTileProvider,GlobeTranslucency,GlobeTranslucencyFramebuffer,GlobeTranslucencyState,GltfBufferViewLoader,GltfDracoLoader,GltfGpmLoader,GltfGpmLocal,GltfImageLoader,GltfIndexBufferLoader,GltfJsonLoader,GltfLoader,GltfLoaderUtil,GltfMeshPrimitiveGpmLoader,GltfSpzLoader,GltfStructuralMetadataLoader,GltfTextureLoader,GltfVertexBufferLoader,GoogleEarthEnterpriseImageryProvider,GoogleEarthEnterpriseMapsProvider,GoogleEarthEnterpriseMetadata,GoogleEarthEnterpriseTerrainData,GoogleEarthEnterpriseTerrainProvider,GoogleEarthEnterpriseTileInformation,GoogleGeocoderService,GoogleMaps,GpxDataSource,GregorianDate,GridImageryProvider,GridMaterialProperty,GroundGeometryUpdater,GroundPolylineGeometry,GroundPolylinePrimitive,GroundPrimitive,GroupMetadata,HeadingPitchRange,HeadingPitchRoll,Heap,HeightReference,HeightmapEncoding,HeightmapTerrainData,HeightmapTessellator,HermitePolynomialApproximation,HermiteSpline,HilbertOrder,HomeButton,HomeButtonViewModel,HorizontalOrigin,I3SBuildingSceneLayerExplorer,I3SBuildingSceneLayerExplorerViewModel,I3SDataProvider,I3SDecoder,I3SFeature,I3SField,I3SGeometry,I3SLayer,I3SNode,I3SStatistics,I3SSublayer,I3SSymbology,I3dmLoader,I3dmParser,ITwinData,ITwinPlatform,Iau2000Orientation,Iau2006XysData,Iau2006XysSample,IauOrientationAxes,IauOrientationParameters,ImageBasedLighting,ImageBasedLightingPipelineStage,ImageMaterialProperty,Imagery,ImageryConfiguration,ImageryCoverage,ImageryFlags,ImageryInput,ImageryLayer,ImageryLayerCollection,ImageryLayerFeatureInfo,ImageryPipelineStage,ImageryProvider,ImageryState,Implicit3DTileContent,ImplicitAvailabilityBitstream,ImplicitMetadataView,ImplicitSubdivisionScheme,ImplicitSubtree,ImplicitSubtreeCache,ImplicitSubtreeMetadata,ImplicitTileCoordinates,ImplicitTileset,IndexDatatype,InfoBox,InfoBoxViewModel,InspectorShared,InstanceAttributeSemantic,InstancingPipelineStage,InterpolationAlgorithm,InterpolationType,Intersect,IntersectionTests,Intersections2D,Interval,InvertClassification,Ion,IonGeocodeProviderType,IonGeocoderService,IonImageryProvider,IonResource,IonWorldImageryStyle,Iso8601,JobScheduler,JobType,JsonMetadataTable,JulianDate,KTX2Transcoder,KeyboardEventModifier,KeyframeNode,KmlCamera,KmlDataSource,KmlLookAt,KmlTour,KmlTourFlyTo,KmlTourWait,Label,LabelCollection,LabelGraphics,LabelStyle,LabelVisualizer,LagrangePolynomialApproximation,LeapSecond,Light,LightingModel,LightingPipelineStage,LinearApproximation,LinearSpline,ManagedArray,MapMode2D,MapProjection,MapboxImageryProvider,MapboxStyleImageryProvider,MappedPositions,Material,MaterialAppearance,MaterialPipelineStage,MaterialProperty,Math,Matrix2,Matrix3,Matrix4,Megatexture,MeshPrimitiveGpmLocal,MetadataClass,MetadataClassProperty,MetadataComponentType,MetadataEntity,MetadataEnum,MetadataEnumValue,MetadataPicking,MetadataPickingPipelineStage,MetadataPipelineStage,MetadataSchema,MetadataSchemaLoader,MetadataSemantic,MetadataTable,MetadataTableProperty,MetadataType,MipmapHint,Model,Model3DTileContent,ModelAlphaOptions,ModelAnimation,ModelAnimationChannel,ModelAnimationCollection,ModelAnimationLoop,ModelAnimationState,ModelArticulation,ModelArticulationStage,ModelClippingPlanesPipelineStage,ModelClippingPolygonsPipelineStage,ModelColorPipelineStage,ModelComponents,ModelDrawCommand,ModelDrawCommands,ModelFeature,ModelFeatureTable,ModelGraphics,ModelImagery,ModelImageryMapping,ModelLightingOptions,ModelMatrixUpdateStage,ModelNode,ModelPrimitiveImagery,ModelReader,ModelRenderResources,ModelRuntimeNode,ModelRuntimePrimitive,ModelSceneGraph,ModelSilhouettePipelineStage,ModelSkin,ModelSplitterPipelineStage,ModelStatistics,ModelType,ModelUtility,ModelVisualizer,Moon,MorphTargetsPipelineStage,MorphWeightSpline,MortonOrder,Multiple3DTileContent,MultisampleFramebuffer,NavigationHelpButton,NavigationHelpButtonViewModel,NearFarScalar,NeverTileDiscardPolicy,NodeRenderResources,NodeStatisticsPipelineStage,NodeTransformationProperty,OIT,Occluder,OffsetGeometryInstanceAttribute,OpenCageGeocoderService,OpenStreetMapImageryProvider,OrderedGroundPrimitiveCollection,OrientedBoundingBox,OrthographicFrustum,OrthographicOffCenterFrustum,Packable,PackableForInterpolation,Particle,ParticleBurst,ParticleEmitter,ParticleSystem,Pass,PassState,PathGraphics,PathVisualizer,PeliasGeocoderService,PerInstanceColorAppearance,PerformanceDisplay,PerformanceWatchdog,PerformanceWatchdogViewModel,PerspectiveFrustum,PerspectiveOffCenterFrustum,PickDepth,PickDepthFramebuffer,PickFramebuffer,PickedMetadataInfo,Picking,PickingPipelineStage,PinBuilder,PixelDatatype,PixelFormat,Plane,PlaneGeometry,PlaneGeometryUpdater,PlaneGraphics,PlaneOutlineGeometry,PntsLoader,PntsParser,PointCloud,PointCloudEyeDomeLighting,PointCloudShading,PointCloudStylingPipelineStage,PointGraphics,PointPrimitive,PointPrimitiveCollection,PointVisualizer,PolygonGeometry,PolygonGeometryLibrary,PolygonGeometryUpdater,PolygonGraphics,PolygonHierarchy,PolygonOutlineGeometry,PolygonPipeline,Polyline,PolylineArrowMaterialProperty,PolylineCollection,PolylineColorAppearance,PolylineDashMaterialProperty,PolylineGeometry,PolylineGeometryUpdater,PolylineGlowMaterialProperty,PolylineGraphics,PolylineMaterialAppearance,PolylineOutlineMaterialProperty,PolylinePipeline,PolylineVisualizer,PolylineVolumeGeometry,PolylineVolumeGeometryLibrary,PolylineVolumeGeometryUpdater,PolylineVolumeGraphics,PolylineVolumeOutlineGeometry,PositionProperty,PositionPropertyArray,PostProcessStage,PostProcessStageCollection,PostProcessStageComposite,PostProcessStageLibrary,PostProcessStageSampleMode,PostProcessStageTextureCache,PpeMetadata,PpeSource,PpeTexture,Primitive,PrimitiveCollection,PrimitiveLoadPlan,PrimitiveOutlineGenerator,PrimitiveOutlinePipelineStage,PrimitivePipeline,PrimitiveRenderResources,PrimitiveState,PrimitiveStatisticsPipelineStage,PrimitiveType,ProjectionPicker,ProjectionPickerViewModel,Property,PropertyArray,PropertyAttribute,PropertyAttributeProperty,PropertyBag,PropertyTable,PropertyTexture,PropertyTextureProperty,ProviderViewModel,Proxy,QuadraticRealPolynomial,QuadtreeOccluders,QuadtreePrimitive,QuadtreeTile,QuadtreeTileLoadState,QuadtreeTileProvider,QuantizedMeshTerrainData,QuarticRealPolynomial,Quaternion,QuaternionSpline,Queue,Ray,Rectangle,RectangleCollisionChecker,RectangleGeometry,RectangleGeometryLibrary,RectangleGeometryUpdater,RectangleGraphics,RectangleOutlineGeometry,ReferenceFrame,ReferenceProperty,RenderState,Renderbuffer,RenderbufferFormat,Request,RequestErrorEvent,RequestScheduler,RequestState,RequestType,Resource,ResourceCache,ResourceCacheKey,ResourceCacheStatistics,ResourceLoader,ResourceLoaderState,Rotation,RuntimeError,S2Cell,SDFSettings,SampledPositionProperty,SampledProperty,Sampler,ScaledPositionProperty,Scene,SceneFramebuffer,SceneMode,SceneMode2DPipelineStage,SceneModePicker,SceneModePickerViewModel,SceneTransforms,SceneTransitioner,ScreenSpaceCameraController,ScreenSpaceEventHandler,ScreenSpaceEventType,SelectedFeatureIdPipelineStage,SelectionIndicator,SelectionIndicatorViewModel,SensorVolumePortionToDisplay,ShaderBuilder,ShaderCache,ShaderDestination,ShaderFunction,ShaderProgram,ShaderSource,ShaderStruct,ShadowMap,ShadowMapShader,ShadowMode,ShadowVolumeAppearance,SharedContext,ShowGeometryInstanceAttribute,Simon1994PlanetaryPositions,SimplePolylineGeometry,SingleTileImageryProvider,SkinningPipelineStage,SkyAtmosphere,SkyBox,SpatialNode,Spdcf,SpecularEnvironmentCubeMap,SphereEmitter,SphereGeometry,SphereOutlineGeometry,Spherical,Spline,SplitDirection,Splitter,StaticGeometryColorBatch,StaticGeometryPerMaterialBatch,StaticGroundGeometryColorBatch,StaticGroundGeometryPerMaterialBatch,StaticGroundPolylinePerMaterialBatch,StaticOutlineGeometryBatch,StencilConstants,StencilFunction,StencilOperation,SteppedSpline,Stereographic,StorageType,StripeMaterialProperty,StripeOrientation,StructuralMetadata,StyleCommandsNeeded,StyleExpression,Sun,SunLight,SunPostProcess,SupportedImageFormats,SvgPathBindingHandler,TaskProcessor,Terrain,TerrainData,TerrainEncoding,TerrainFillMesh,TerrainMesh,TerrainOffsetProperty,TerrainProvider,TerrainQuantization,TerrainState,Texture,Texture3D,TextureAtlas,TextureCache,TextureMagnificationFilter,TextureManager,TextureMinificationFilter,TexturePacker,TextureUniform,TextureWrap,TileAvailability,TileBoundingRegion,TileBoundingS2Cell,TileBoundingSphere,TileBoundingVolume,TileCoordinatesImageryProvider,TileDiscardPolicy,TileEdge,TileImagery,TileMapServiceImageryProvider,TileMetadata,TileOrientedBoundingBox,TileProviderError,TileReplacementQueue,TileSelectionResult,TileState,Tileset3DTileContent,TilesetMetadata,TilesetPipelineStage,TilingScheme,TimeConstants,TimeDynamicImagery,TimeDynamicPointCloud,TimeInterval,TimeIntervalCollection,TimeIntervalCollectionPositionProperty,TimeIntervalCollectionProperty,TimeStandard,Timeline,TimelineHighlightRange,TimelineTrack,Tipsify,ToggleButtonViewModel,Tonemapper,TrackingReferenceFrame,Transforms,TranslationRotationScale,TranslucentTileClassification,TridiagonalSystemSolver,TrustedServers,TweenCollection,UniformState,UniformType,UrlTemplateImageryProvider,VERSION,VRButton,VRButtonViewModel,VRTheWorldTerrainProvider,VaryingType,Vector3DTileBatch,Vector3DTileClampedPolylines,Vector3DTileContent,Vector3DTileGeometry,Vector3DTilePoints,Vector3DTilePolygons,Vector3DTilePolylines,Vector3DTilePrimitive,VelocityOrientationProperty,VelocityVectorProperty,VertexArray,VertexArrayFacade,VertexAttributeSemantic,VertexFormat,VerticalExaggeration,VerticalExaggerationPipelineStage,VerticalOrigin,VideoSynchronizer,View,Viewer,ViewportQuad,Visibility,Visualizer,VoxelBoxShape,VoxelCell,VoxelContent,VoxelCylinderShape,VoxelEllipsoidShape,VoxelInspector,VoxelInspectorViewModel,VoxelMetadataOrder,VoxelPrimitive,VoxelProvider,VoxelRenderResources,VoxelShape,VoxelShapeType,VoxelTraversal,VulkanConstants,WallGeometry,WallGeometryLibrary,WallGeometryUpdater,WallGraphics,WallOutlineGeometry,WebGLConstants,WebMapServiceImageryProvider,WebMapTileServiceImageryProvider,WebMercatorProjection,WebMercatorTilingScheme,WindingOrder,WireframeIndexGenerator,WireframePipelineStage,_shadersAcesTonemappingStage,_shadersAdditiveBlend,_shadersAdjustTranslucentFS,_shadersAllMaterialAppearanceFS,_shadersAllMaterialAppearanceVS,_shadersAmbientOcclusionGenerate,_shadersAmbientOcclusionModulate,_shadersAspectRampMaterial,_shadersAtmosphereCommon,_shadersAtmosphereStageFS,_shadersAtmosphereStageVS,_shadersBasicMaterialAppearanceFS,_shadersBasicMaterialAppearanceVS,_shadersBillboardCollectionFS,_shadersBillboardCollectionVS,_shadersBlackAndWhite,_shadersBloomComposite,_shadersBrdfLutGeneratorFS,_shadersBrightPass,_shadersBrightness,_shadersBumpMapMaterial,_shadersCPUStylingStageFS,_shadersCPUStylingStageVS,_shadersCheckerboardMaterial,_shadersCloudCollectionFS,_shadersCloudCollectionVS,_shadersCloudNoiseFS,_shadersCloudNoiseVS,_shadersCompareAndPackTranslucentDepth,_shadersCompositeOITFS,_shadersCompositeTranslucentClassification,_shadersComputeIrradianceFS,_shadersComputeRadianceMapFS,_shadersContrastBias,_shadersConvolveSpecularMapFS,_shadersConvolveSpecularMapVS,_shadersCustomShaderStageFS,_shadersCustomShaderStageVS,_shadersCzmBuiltins,_shadersDepthOfField,_shadersDepthPlaneFS,_shadersDepthPlaneVS,_shadersDepthView,_shadersDepthViewPacked,_shadersDotMaterial,_shadersEdgeDetection,_shadersElevationBandMaterial,_shadersElevationContourMaterial,_shadersElevationRampMaterial,_shadersEllipsoidFS,_shadersEllipsoidSurfaceAppearanceFS,_shadersEllipsoidSurfaceAppearanceVS,_shadersEllipsoidVS,_shadersFXAA,_shadersFXAA3_11,_shadersFadeMaterial,_shadersFeatureIdStageFS,_shadersFeatureIdStageVS,_shadersFilmicTonemapping,_shadersGaussianBlur1D,_shadersGeometryStageFS,_shadersGeometryStageVS,_shadersGlobeFS,_shadersGlobeVS,_shadersGridMaterial,_shadersGroundAtmosphere,_shadersHSBToRGB,_shadersHSLToRGB,_shadersImageBasedLightingStageFS,_shadersInstancingStageCommon,_shadersInstancingStageVS,_shadersIntersectBox,_shadersIntersectClippingPlanes,_shadersIntersectCylinder,_shadersIntersectDepth,_shadersIntersectEllipsoid,_shadersIntersectLongitude,_shadersIntersection,_shadersIntersectionUtils,_shadersLegacyInstancingStageVS,_shadersLensFlare,_shadersLightingStageFS,_shadersMaterialStageFS,_shadersMegatexture,_shadersMetadataStageFS,_shadersMetadataStageVS,_shadersModelClippingPlanesStageFS,_shadersModelClippingPolygonsStageFS,_shadersModelClippingPolygonsStageVS,_shadersModelColorStageFS,_shadersModelFS,_shadersModelSilhouetteStageFS,_shadersModelSilhouetteStageVS,_shadersModelSplitterStageFS,_shadersModelVS,_shadersModifiedReinhardTonemapping,_shadersMorphTargetsStageVS,_shadersNightVision,_shadersNormalMapMaterial,_shadersOctree,_shadersPassThrough,_shadersPassThroughDepth,_shadersPbrNeutralTonemapping,_shadersPerInstanceColorAppearanceFS,_shadersPerInstanceColorAppearanceVS,_shadersPerInstanceFlatColorAppearanceFS,_shadersPerInstanceFlatColorAppearanceVS,_shadersPointCloudEyeDomeLighting,_shadersPointCloudStylingStageVS,_shadersPointPrimitiveCollectionFS,_shadersPointPrimitiveCollectionVS,_shadersPolygonSignedDistanceFS,_shadersPolylineArrowMaterial,_shadersPolylineColorAppearanceVS,_shadersPolylineCommon,_shadersPolylineDashMaterial,_shadersPolylineFS,_shadersPolylineGlowMaterial,_shadersPolylineMaterialAppearanceVS,_shadersPolylineOutlineMaterial,_shadersPolylineShadowVolumeFS,_shadersPolylineShadowVolumeMorphFS,_shadersPolylineShadowVolumeMorphVS,_shadersPolylineShadowVolumeVS,_shadersPolylineVS,_shadersPrimitiveGaussianSplatFS,_shadersPrimitiveGaussianSplatVS,_shadersPrimitiveOutlineStageFS,_shadersPrimitiveOutlineStageVS,_shadersRGBToHSB,_shadersRGBToHSL,_shadersRGBToXYZ,_shadersReinhardTonemapping,_shadersReprojectWebMercatorFS,_shadersReprojectWebMercatorVS,_shadersRimLightingMaterial,_shadersSelectedFeatureIdStageCommon,_shadersShadowVolumeAppearanceFS,_shadersShadowVolumeAppearanceVS,_shadersShadowVolumeFS,_shadersSilhouette,_shadersSkinningStageVS,_shadersSkyAtmosphereCommon,_shadersSkyAtmosphereFS,_shadersSkyAtmosphereVS,_shadersSkyBoxFS,_shadersSkyBoxVS,_shadersSlopeRampMaterial,_shadersStripeMaterial,_shadersSunFS,_shadersSunTextureFS,_shadersSunVS,_shadersTexturedMaterialAppearanceFS,_shadersTexturedMaterialAppearanceVS,_shadersVector3DTileClampedPolylinesFS,_shadersVector3DTileClampedPolylinesVS,_shadersVector3DTilePolylinesVS,_shadersVectorTileVS,_shadersVerticalExaggerationStageVS,_shadersViewportQuadFS,_shadersViewportQuadVS,_shadersVoxelFS,_shadersVoxelUtils,_shadersVoxelVS,_shadersWater,_shadersWaterMaskMaterial,_shadersXYZToRGB,_shadersacesTonemapping,_shadersalphaWeight,_shadersantialias,_shadersapplyHSBShift,_shadersapproximateSphericalCoordinates,_shadersapproximateTanh,_shadersbackFacing,_shadersbranchFreeTernary,_shaderscascadeColor,_shaderscascadeDistance,_shaderscascadeMatrix,_shaderscascadeWeights,_shadersclipPolygons,_shaderscolumbusViewMorph,_shaderscomputeAtmosphereColor,_shaderscomputeGroundAtmosphereScattering,_shaderscomputePosition,_shaderscomputeScattering,_shadersconvertUvToBox,_shadersconvertUvToCylinder,_shadersconvertUvToEllipsoid,_shaderscosineAndSine,_shadersdecompressTextureCoordinates,_shadersdegreesPerRadian,_shadersdepthClamp,_shadersdepthRange,_shadersdepthRangeStruct,_shaderseastNorthUpToEyeCoordinates,_shadersellipsoidContainsPoint,_shadersellipsoidTextureCoordinates,_shadersepsilon1,_shadersepsilon2,_shadersepsilon3,_shadersepsilon4,_shadersepsilon5,_shadersepsilon6,_shadersepsilon7,_shadersequalsEpsilon,_shaderseyeOffset,_shaderseyeToWindowCoordinates,_shadersfastApproximateAtan,_shadersfog,_shadersgammaCorrect,_shadersgeodeticSurfaceNormal,_shadersgetDefaultMaterial,_shadersgetDynamicAtmosphereLightDirection,_shadersgetLambertDiffuse,_shadersgetSpecular,_shadersgetWaterNoise,_shadershue,_shadersinfinity,_shadersinverseGamma,_shadersisEmpty,_shadersisFull,_shaderslatitudeToWebMercatorFraction,_shaderslineDistance,_shaderslinearToSrgb,_shadersluminance,_shadersmaterial,_shadersmaterialInput,_shadersmaximumComponent,_shadersmetersPerPixel,_shadersmodelMaterial,_shadersmodelToWindowCoordinates,_shadersmodelVertexOutput,_shadersmultiplyWithColorBalance,_shadersnearFarScalar,_shadersoctDecode,_shadersoneOverPi,_shadersoneOverTwoPi,_shaderspackDepth,_shaderspassCesium3DTile,_shaderspassCesium3DTileClassification,_shaderspassCesium3DTileClassificationIgnoreShow,_shaderspassClassification,_shaderspassCompute,_shaderspassEnvironment,_shaderspassGaussianSplats,_shaderspassGlobe,_shaderspassOpaque,_shaderspassOverlay,_shaderspassTerrainClassification,_shaderspassTranslucent,_shaderspassVoxels,_shaderspbrLighting,_shaderspbrNeutralTonemapping,_shadersphong,_shaderspi,_shaderspiOverFour,_shaderspiOverSix,_shaderspiOverThree,_shaderspiOverTwo,_shadersplaneDistance,_shaderspointAlongRay,_shadersradiansPerDegree,_shadersray,_shadersrayEllipsoidIntersectionInterval,_shadersraySegment,_shadersraySphereIntersectionInterval,_shadersreadDepth,_shadersreadNonPerspective,_shadersreverseLogDepth,_shadersround,_shaderssaturation,_shaderssceneMode2D,_shaderssceneMode3D,_shaderssceneModeColumbusView,_shaderssceneModeMorphing,_shadersshadowDepthCompare,_shadersshadowParameters,_shadersshadowVisibility,_shaderssignNotZero,_shaderssolarRadius,_shaderssphericalHarmonics,_shaderssrgbToLinear,_shaderstangentToEyeSpaceMatrix,_shaderstextureCube,_shadersthreePiOver2,_shaderstransformPlane,_shaderstranslateRelativeToEye,_shaderstranslucentPhong,_shaderstranspose,_shaderstwoPi,_shadersunpackClippingExtents,_shadersunpackDepth,_shadersunpackFloat,_shadersunpackUint,_shadersvalueTransform,_shadersvertexLogDepth,_shaderswebMercatorMaxLatitude,_shaderswindowToEyeCoordinates,_shaderswriteDepthClamp,_shaderswriteLogDepth,_shaderswriteNonPerspective,addAllToArray,addBuffer,addDefaults,addExtensionsRequired,addExtensionsUsed,addPipelineExtras,addToArray,appendForwardSlash,arrayRemoveDuplicates,barycentricCoordinates,binarySearch,buildModuleUrl,buildVoxelDrawCommands,clone,combine,computeFlyToLocationForRectangle,createBillboardPointCallback,createCommand,createDefaultImageryProviderViewModels,createDefaultTerrainProviderViewModels,createElevationBandMaterial,createGooglePhotorealistic3DTileset,createGuid,createMaterialPropertyDescriptor,createOsmBuildingsAsync,createPropertyDescriptor,createRawPropertyDescriptor,createTangentSpaceDebugPrimitive,createTaskProcessorWorker,createUniform,createUniformArray,createWorldBathymetryAsync,createWorldImageryAsync,createWorldTerrainAsync,decodeGoogleEarthEnterpriseData,decodeVectorPolylinePositions,defaultValue,defer,defined,demodernizeShader,deprecationWarning,destroyObject,exportKml,findAccessorMinMax,findContentMetadata,findGroupMetadata,findTileMetadata,forEachTextureInMaterial,formatError,freezeRenderState,getAbsoluteUri,getAccessorByteStride,getBaseUri,getBinaryAccessor,getClipAndStyleCode,getClippingFunction,getComponentReader,getElement,getExtensionFromUri,getFilenameFromUri,getImageFromTypedArray,getImagePixels,getJsonFromTypedArray,getMagic,getMetadataClassProperty,getMetadataProperty,getStringFromTypedArray,getTimestamp,hasExtension,heightReferenceOnEntityPropertyChanged,isBitSet,isBlobUri,isCrossOriginUrl,isDataUri,isLeapYear,knockout,knockout_3_5_1,knockout_es5,loadAndExecuteScript,loadCubeMap,loadImageFromTypedArray,loadKTX2,mergeSort,moveTechniqueRenderStates,moveTechniquesToExtension,numberOfComponentsForType,objectToQuery,oneTimeWarning,parseBatchTable,parseFeatureMetadataLegacy,parseGlb,parseResponseHeaders,parseStructuralMetadata,pickModel,pointInsideTriangle,preprocess3DTileContent,processVoxelProperties,queryToObject,readAccessorPacked,removeExtension,removeExtensionsRequired,removeExtensionsUsed,removePipelineExtras,removeUnusedElements,resizeImageToNextPowerOfTwo,sampleTerrain,sampleTerrainMostDetailed,scaleToGeodeticSurface,srgbToLinear,subdivideArray,subscribeAndEvaluate,updateAccessorComponentTypes,updateVersion,usesExtension,viewerCesium3DTilesInspectorMixin,viewerCesiumInspectorMixin,viewerDragDropMixin,viewerPerformanceWatchdogMixin,viewerVoxelInspectorMixin,webGLConstantToGlslType,wrapFunction,writeTextToCanvas}); diff --git a/public/Cesium/index.js b/public/Cesium/index.js new file mode 100644 index 000000000..79ed59b2a --- /dev/null +++ b/public/Cesium/index.js @@ -0,0 +1,16264 @@ +/** + * @license + * Cesium - https://github.com/CesiumGS/cesium + * Version 1.132 + * + * Copyright 2011-2022 Cesium Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Columbus View (Pat. Pend.) + * + * Portions licensed separately. + * See https://github.com/CesiumGS/cesium/blob/main/LICENSE.md for full licensing details. + */ + +var VSe=Object.create;var u$=Object.defineProperty;var HSe=Object.getOwnPropertyDescriptor;var WSe=Object.getOwnPropertyNames;var jSe=Object.getPrototypeOf,YSe=Object.prototype.hasOwnProperty;var yR=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Rd=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var qSe=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of WSe(t))!YSe.call(e,o)&&o!==n&&u$(e,o,{get:()=>t[o],enumerable:!(i=HSe(t,o))||i.enumerable});return e};var Es=(e,t,n)=>(n=e!=null?VSe(jSe(e)):{},qSe(t||!e||!e.__esModule?u$(n,"default",{value:e,enumerable:!0}):n,e));var CR=Rd((wvt,f$)=>{var BA=function(e){e==null&&(e=new Date().getTime()),this.N=624,this.M=397,this.MATRIX_A=2567483615,this.UPPER_MASK=2147483648,this.LOWER_MASK=2147483647,this.mt=new Array(this.N),this.mti=this.N+1,e.constructor==Array?this.init_by_array(e,e.length):this.init_seed(e)};BA.prototype.init_seed=function(e){for(this.mt[0]=e>>>0,this.mti=1;this.mti<this.N;this.mti++){var e=this.mt[this.mti-1]^this.mt[this.mti-1]>>>30;this.mt[this.mti]=(((e&4294901760)>>>16)*1812433253<<16)+(e&65535)*1812433253+this.mti,this.mt[this.mti]>>>=0}};BA.prototype.init_by_array=function(e,t){var n,i,o;for(this.init_seed(19650218),n=1,i=0,o=this.N>t?this.N:t;o;o--){var r=this.mt[n-1]^this.mt[n-1]>>>30;this.mt[n]=(this.mt[n]^(((r&4294901760)>>>16)*1664525<<16)+(r&65535)*1664525)+e[i]+i,this.mt[n]>>>=0,n++,i++,n>=this.N&&(this.mt[0]=this.mt[this.N-1],n=1),i>=t&&(i=0)}for(o=this.N-1;o;o--){var r=this.mt[n-1]^this.mt[n-1]>>>30;this.mt[n]=(this.mt[n]^(((r&4294901760)>>>16)*1566083941<<16)+(r&65535)*1566083941)-n,this.mt[n]>>>=0,n++,n>=this.N&&(this.mt[0]=this.mt[this.N-1],n=1)}this.mt[0]=2147483648};BA.prototype.random_int=function(){var e,t=new Array(0,this.MATRIX_A);if(this.mti>=this.N){var n;for(this.mti==this.N+1&&this.init_seed(5489),n=0;n<this.N-this.M;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+this.M]^e>>>1^t[e&1];for(;n<this.N-1;n++)e=this.mt[n]&this.UPPER_MASK|this.mt[n+1]&this.LOWER_MASK,this.mt[n]=this.mt[n+(this.M-this.N)]^e>>>1^t[e&1];e=this.mt[this.N-1]&this.UPPER_MASK|this.mt[0]&this.LOWER_MASK,this.mt[this.N-1]=this.mt[this.M-1]^e>>>1^t[e&1],this.mti=0}return e=this.mt[this.mti++],e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0};BA.prototype.random_int31=function(){return this.random_int()>>>1};BA.prototype.random_incl=function(){return this.random_int()*(1/4294967295)};BA.prototype.random=function(){return this.random_int()*(1/4294967296)};BA.prototype.random_excl=function(){return(this.random_int()+.5)*(1/4294967296)};BA.prototype.random_long=function(){var e=this.random_int()>>>5,t=this.random_int()>>>6;return(e*67108864+t)*(1/9007199254740992)};f$.exports=BA});var b$=Rd((H0,W0)=>{/*! https://mths.be/punycode v1.4.0 by @mathias */(function(e){var t=typeof H0=="object"&&H0&&!H0.nodeType&&H0,n=typeof W0=="object"&&W0&&!W0.nodeType&&W0,i=typeof global=="object"&&global;(i.global===i||i.window===i||i.self===i)&&(e=i);var o,r=2147483647,s=36,a=1,c=26,u=38,f=700,h=72,A=128,g="-",m=/^xn--/,_=/[^\x20-\x7E]/,y=/[\x2E\u3002\uFF0E\uFF61]/g,C={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},E=s-a,I=Math.floor,b=String.fromCharCode,S;function B(Q){throw new RangeError(C[Q])}function v(Q,z){for(var F=Q.length,H=[];F--;)H[F]=z(Q[F]);return H}function P(Q,z){var F=Q.split("@"),H="";F.length>1&&(H=F[0]+"@",Q=F[1]),Q=Q.replace(y,".");var W=Q.split("."),Z=v(W,z).join(".");return H+Z}function N(Q){for(var z=[],F=0,H=Q.length,W,Z;F<H;)W=Q.charCodeAt(F++),W>=55296&&W<=56319&&F<H?(Z=Q.charCodeAt(F++),(Z&64512)==56320?z.push(((W&1023)<<10)+(Z&1023)+65536):(z.push(W),F--)):z.push(W);return z}function L(Q){return v(Q,function(z){var F="";return z>65535&&(z-=65536,F+=b(z>>>10&1023|55296),z=56320|z&1023),F+=b(z),F}).join("")}function p(Q){return Q-48<10?Q-22:Q-65<26?Q-65:Q-97<26?Q-97:s}function x(Q,z){return Q+22+75*(Q<26)-((z!=0)<<5)}function T(Q,z,F){var H=0;for(Q=F?I(Q/f):Q>>1,Q+=I(Q/z);Q>E*c>>1;H+=s)Q=I(Q/E);return I(H+(E+1)*Q/(Q+u))}function w(Q){var z=[],F=Q.length,H,W=0,Z=A,Y=h,$,X,he,ge,fe,ye,Ie,ve,Te;for($=Q.lastIndexOf(g),$<0&&($=0),X=0;X<$;++X)Q.charCodeAt(X)>=128&&B("not-basic"),z.push(Q.charCodeAt(X));for(he=$>0?$+1:0;he<F;){for(ge=W,fe=1,ye=s;he>=F&&B("invalid-input"),Ie=p(Q.charCodeAt(he++)),(Ie>=s||Ie>I((r-W)/fe))&&B("overflow"),W+=Ie*fe,ve=ye<=Y?a:ye>=Y+c?c:ye-Y,!(Ie<ve);ye+=s)Te=s-ve,fe>I(r/Te)&&B("overflow"),fe*=Te;H=z.length+1,Y=T(W-ge,H,ge==0),I(W/H)>r-Z&&B("overflow"),Z+=I(W/H),W%=H,z.splice(W++,0,Z)}return L(z)}function M(Q){var z,F,H,W,Z,Y,$,X,he,ge,fe,ye=[],Ie,ve,Te,ke;for(Q=N(Q),Ie=Q.length,z=A,F=0,Z=h,Y=0;Y<Ie;++Y)fe=Q[Y],fe<128&&ye.push(b(fe));for(H=W=ye.length,W&&ye.push(g);H<Ie;){for($=r,Y=0;Y<Ie;++Y)fe=Q[Y],fe>=z&&fe<$&&($=fe);for(ve=H+1,$-z>I((r-F)/ve)&&B("overflow"),F+=($-z)*ve,z=$,Y=0;Y<Ie;++Y)if(fe=Q[Y],fe<z&&++F>r&&B("overflow"),fe==z){for(X=F,he=s;ge=he<=Z?a:he>=Z+c?c:he-Z,!(X<ge);he+=s)ke=X-ge,Te=s-ge,ye.push(b(x(ge+ke%Te,0))),X=I(ke/Te);ye.push(b(x(X,0))),Z=T(F,ve,H==W),F=0,++H}++F,++z}return ye.join("")}function O(Q){return P(Q,function(z){return m.test(z)?w(z.slice(4).toLowerCase()):z})}function U(Q){return P(Q,function(z){return _.test(z)?"xn--"+M(z):z})}if(o={version:"1.3.2",ucs2:{decode:N,encode:L},decode:w,encode:M,toASCII:U,toUnicode:O},typeof define=="function"&&typeof define.amd=="object"&&define.amd)define("punycode",function(){return o});else if(t&&n)if(W0.exports==t)n.exports=o;else for(S in o)o.hasOwnProperty(S)&&(t[S]=o[S]);else e.punycode=o})(H0)});var S$=Rd((T$,DR)=>{/*! + * URI.js - Mutating URLs + * IPv6 Support + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,t){"use strict";typeof DR=="object"&&DR.exports?DR.exports=t():typeof define=="function"&&define.amd?define(t):e.IPv6=t(e)})(T$,function(e){"use strict";var t=e&&e.IPv6;function n(o){var r=o.toLowerCase(),s=r.split(":"),a=s.length,c=8;s[0]===""&&s[1]===""&&s[2]===""?(s.shift(),s.shift()):s[0]===""&&s[1]===""?s.shift():s[a-1]===""&&s[a-2]===""&&s.pop(),a=s.length,s[a-1].indexOf(".")!==-1&&(c=7);var u;for(u=0;u<a&&s[u]!=="";u++);if(u<c)for(s.splice(u,1,"0000");s.length<c;)s.splice(u,0,"0000");for(var f,h=0;h<c;h++){f=s[h].split("");for(var A=0;A<3&&(f[0]==="0"&&f.length>1);A++)f.splice(0,1);s[h]=f.join("")}var g=-1,m=0,_=0,y=-1,C=!1;for(h=0;h<c;h++)C?s[h]==="0"?_+=1:(C=!1,_>m&&(g=y,m=_)):s[h]==="0"&&(C=!0,y=h,_=1);_>m&&(g=y,m=_),m>1&&s.splice(g,m,""),a=s.length;var E="";for(s[0]===""&&(E=":"),h=0;h<a&&(E+=s[h],h!==a-1);h++)E+=":";return s[a-1]===""&&(E+=":"),E}function i(){return e.IPv6===this&&(e.IPv6=t),this}return{best:n,noConflict:i}})});var B$=Rd((w$,vR)=>{/*! + * URI.js - Mutating URLs + * Second Level Domain (SLD) Support + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,t){"use strict";typeof vR=="object"&&vR.exports?vR.exports=t():typeof define=="function"&&define.amd?define(t):e.SecondLevelDomains=t(e)})(w$,function(e){"use strict";var t=e&&e.SecondLevelDomains,n={list:{ac:" com gov mil net org ",ae:" ac co gov mil name net org pro sch ",af:" com edu gov net org ",al:" com edu gov mil net org ",ao:" co ed gv it og pb ",ar:" com edu gob gov int mil net org tur ",at:" ac co gv or ",au:" asn com csiro edu gov id net org ",ba:" co com edu gov mil net org rs unbi unmo unsa untz unze ",bb:" biz co com edu gov info net org store tv ",bh:" biz cc com edu gov info net org ",bn:" com edu gov net org ",bo:" com edu gob gov int mil net org tv ",br:" adm adv agr am arq art ato b bio blog bmd cim cng cnt com coop ecn edu eng esp etc eti far flog fm fnd fot fst g12 ggf gov imb ind inf jor jus lel mat med mil mus net nom not ntr odo org ppg pro psc psi qsl rec slg srv tmp trd tur tv vet vlog wiki zlg ",bs:" com edu gov net org ",bz:" du et om ov rg ",ca:" ab bc mb nb nf nl ns nt nu on pe qc sk yk ",ck:" biz co edu gen gov info net org ",cn:" ac ah bj com cq edu fj gd gov gs gx gz ha hb he hi hl hn jl js jx ln mil net nm nx org qh sc sd sh sn sx tj tw xj xz yn zj ",co:" com edu gov mil net nom org ",cr:" ac c co ed fi go or sa ",cy:" ac biz com ekloges gov ltd name net org parliament press pro tm ",do:" art com edu gob gov mil net org sld web ",dz:" art asso com edu gov net org pol ",ec:" com edu fin gov info med mil net org pro ",eg:" com edu eun gov mil name net org sci ",er:" com edu gov ind mil net org rochest w ",es:" com edu gob nom org ",et:" biz com edu gov info name net org ",fj:" ac biz com info mil name net org pro ",fk:" ac co gov net nom org ",fr:" asso com f gouv nom prd presse tm ",gg:" co net org ",gh:" com edu gov mil org ",gn:" ac com gov net org ",gr:" com edu gov mil net org ",gt:" com edu gob ind mil net org ",gu:" com edu gov net org ",hk:" com edu gov idv net org ",hu:" 2000 agrar bolt casino city co erotica erotika film forum games hotel info ingatlan jogasz konyvelo lakas media news org priv reklam sex shop sport suli szex tm tozsde utazas video ",id:" ac co go mil net or sch web ",il:" ac co gov idf k12 muni net org ",in:" ac co edu ernet firm gen gov i ind mil net nic org res ",iq:" com edu gov i mil net org ",ir:" ac co dnssec gov i id net org sch ",it:" edu gov ",je:" co net org ",jo:" com edu gov mil name net org sch ",jp:" ac ad co ed go gr lg ne or ",ke:" ac co go info me mobi ne or sc ",kh:" com edu gov mil net org per ",ki:" biz com de edu gov info mob net org tel ",km:" asso com coop edu gouv k medecin mil nom notaires pharmaciens presse tm veterinaire ",kn:" edu gov net org ",kr:" ac busan chungbuk chungnam co daegu daejeon es gangwon go gwangju gyeongbuk gyeonggi gyeongnam hs incheon jeju jeonbuk jeonnam k kg mil ms ne or pe re sc seoul ulsan ",kw:" com edu gov net org ",ky:" com edu gov net org ",kz:" com edu gov mil net org ",lb:" com edu gov net org ",lk:" assn com edu gov grp hotel int ltd net ngo org sch soc web ",lr:" com edu gov net org ",lv:" asn com conf edu gov id mil net org ",ly:" com edu gov id med net org plc sch ",ma:" ac co gov m net org press ",mc:" asso tm ",me:" ac co edu gov its net org priv ",mg:" com edu gov mil nom org prd tm ",mk:" com edu gov inf name net org pro ",ml:" com edu gov net org presse ",mn:" edu gov org ",mo:" com edu gov net org ",mt:" com edu gov net org ",mv:" aero biz com coop edu gov info int mil museum name net org pro ",mw:" ac co com coop edu gov int museum net org ",mx:" com edu gob net org ",my:" com edu gov mil name net org sch ",nf:" arts com firm info net other per rec store web ",ng:" biz com edu gov mil mobi name net org sch ",ni:" ac co com edu gob mil net nom org ",np:" com edu gov mil net org ",nr:" biz com edu gov info net org ",om:" ac biz co com edu gov med mil museum net org pro sch ",pe:" com edu gob mil net nom org sld ",ph:" com edu gov i mil net ngo org ",pk:" biz com edu fam gob gok gon gop gos gov net org web ",pl:" art bialystok biz com edu gda gdansk gorzow gov info katowice krakow lodz lublin mil net ngo olsztyn org poznan pwr radom slupsk szczecin torun warszawa waw wroc wroclaw zgora ",pr:" ac biz com edu est gov info isla name net org pro prof ",ps:" com edu gov net org plo sec ",pw:" belau co ed go ne or ",ro:" arts com firm info nom nt org rec store tm www ",rs:" ac co edu gov in org ",sb:" com edu gov net org ",sc:" com edu gov net org ",sh:" co com edu gov net nom org ",sl:" com edu gov net org ",st:" co com consulado edu embaixada gov mil net org principe saotome store ",sv:" com edu gob org red ",sz:" ac co org ",tr:" av bbs bel biz com dr edu gen gov info k12 name net org pol tel tsk tv web ",tt:" aero biz cat co com coop edu gov info int jobs mil mobi museum name net org pro tel travel ",tw:" club com ebiz edu game gov idv mil net org ",mu:" ac co com gov net or org ",mz:" ac co edu gov org ",na:" co com ",nz:" ac co cri geek gen govt health iwi maori mil net org parliament school ",pa:" abo ac com edu gob ing med net nom org sld ",pt:" com edu gov int net nome org publ ",py:" com edu gov mil net org ",qa:" com edu gov mil net org ",re:" asso com nom ",ru:" ac adygeya altai amur arkhangelsk astrakhan bashkiria belgorod bir bryansk buryatia cbg chel chelyabinsk chita chukotka chuvashia com dagestan e-burg edu gov grozny int irkutsk ivanovo izhevsk jar joshkar-ola kalmykia kaluga kamchatka karelia kazan kchr kemerovo khabarovsk khakassia khv kirov koenig komi kostroma kranoyarsk kuban kurgan kursk lipetsk magadan mari mari-el marine mil mordovia mosreg msk murmansk nalchik net nnov nov novosibirsk nsk omsk orenburg org oryol penza perm pp pskov ptz rnd ryazan sakhalin samara saratov simbirsk smolensk spb stavropol stv surgut tambov tatarstan tom tomsk tsaritsyn tsk tula tuva tver tyumen udm udmurtia ulan-ude vladikavkaz vladimir vladivostok volgograd vologda voronezh vrn vyatka yakutia yamal yekaterinburg yuzhno-sakhalinsk ",rw:" ac co com edu gouv gov int mil net ",sa:" com edu gov med net org pub sch ",sd:" com edu gov info med net org tv ",se:" a ac b bd c d e f g h i k l m n o org p parti pp press r s t tm u w x y z ",sg:" com edu gov idn net org per ",sn:" art com edu gouv org perso univ ",sy:" com edu gov mil net news org ",th:" ac co go in mi net or ",tj:" ac biz co com edu go gov info int mil name net nic org test web ",tn:" agrinet com defense edunet ens fin gov ind info intl mincom nat net org perso rnrt rns rnu tourism ",tz:" ac co go ne or ",ua:" biz cherkassy chernigov chernovtsy ck cn co com crimea cv dn dnepropetrovsk donetsk dp edu gov if in ivano-frankivsk kh kharkov kherson khmelnitskiy kiev kirovograd km kr ks kv lg lugansk lutsk lviv me mk net nikolaev od odessa org pl poltava pp rovno rv sebastopol sumy te ternopil uzhgorod vinnica vn zaporizhzhe zhitomir zp zt ",ug:" ac co go ne or org sc ",uk:" ac bl british-library co cym gov govt icnet jet lea ltd me mil mod national-library-scotland nel net nhs nic nls org orgn parliament plc police sch scot soc ",us:" dni fed isa kids nsn ",uy:" com edu gub mil net org ",ve:" co com edu gob info mil net org web ",vi:" co com k12 net org ",vn:" ac biz com edu gov health info int name net org pro ",ye:" co com gov ltd me net org plc ",yu:" ac co edu gov org ",za:" ac agric alt bourse city co cybernet db edu gov grondar iaccess imt inca landesign law mil net ngo nis nom olivetti org pix school tm web ",zm:" ac co com edu gov net org sch ",com:"ar br cn de eu gb gr hu jpn kr no qc ru sa se uk us uy za ",net:"gb jp se uk ",org:"ae",de:"com "},has:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return!1;var r=i.lastIndexOf(".",o-1);if(r<=0||r>=o-1)return!1;var s=n.list[i.slice(o+1)];return s?s.indexOf(" "+i.slice(r+1,o)+" ")>=0:!1},is:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return!1;var r=i.lastIndexOf(".",o-1);if(r>=0)return!1;var s=n.list[i.slice(o+1)];return s?s.indexOf(" "+i.slice(0,o)+" ")>=0:!1},get:function(i){var o=i.lastIndexOf(".");if(o<=0||o>=i.length-1)return null;var r=i.lastIndexOf(".",o-1);if(r<=0||r>=o-1)return null;var s=n.list[i.slice(o+1)];return!s||s.indexOf(" "+i.slice(r+1,o)+" ")<0?null:i.slice(r+1)},noConflict:function(){return e.SecondLevelDomains===this&&(e.SecondLevelDomains=t),this}};return n})});var _u=Rd((D$,PR)=>{/*! + * URI.js - Mutating URLs + * + * Version: 1.19.11 + * + * Author: Rodney Rehm + * Web: http://medialize.github.io/URI.js/ + * + * Licensed under + * MIT License http://www.opensource.org/licenses/mit-license + * + */(function(e,t){"use strict";typeof PR=="object"&&PR.exports?PR.exports=t(b$(),S$(),B$()):typeof define=="function"&&define.amd?define(["./punycode","./IPv6","./SecondLevelDomains"],t):e.URI=t(e.punycode,e.IPv6,e.SecondLevelDomains,e)})(D$,function(e,t,n,i){"use strict";var o=i&&i.URI;function r(x,T){var w=arguments.length>=1,M=arguments.length>=2;if(!(this instanceof r))return w?M?new r(x,T):new r(x):new r;if(x===void 0){if(w)throw new TypeError("undefined is not a valid argument for URI");typeof location<"u"?x=location.href+"":x=""}if(x===null&&w)throw new TypeError("null is not a valid argument for URI");return this.href(x),T!==void 0?this.absoluteTo(T):this}function s(x){return/^[0-9]+$/.test(x)}r.version="1.19.11";var a=r.prototype,c=Object.prototype.hasOwnProperty;function u(x){return x.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}function f(x){return x===void 0?"Undefined":String(Object.prototype.toString.call(x)).slice(8,-1)}function h(x){return f(x)==="Array"}function A(x,T){var w={},M,O;if(f(T)==="RegExp")w=null;else if(h(T))for(M=0,O=T.length;M<O;M++)w[T[M]]=!0;else w[T]=!0;for(M=0,O=x.length;M<O;M++){var U=w&&w[x[M]]!==void 0||!w&&T.test(x[M]);U&&(x.splice(M,1),O--,M--)}return x}function g(x,T){var w,M;if(h(T)){for(w=0,M=T.length;w<M;w++)if(!g(x,T[w]))return!1;return!0}var O=f(T);for(w=0,M=x.length;w<M;w++)if(O==="RegExp"){if(typeof x[w]=="string"&&x[w].match(T))return!0}else if(x[w]===T)return!0;return!1}function m(x,T){if(!h(x)||!h(T)||x.length!==T.length)return!1;x.sort(),T.sort();for(var w=0,M=x.length;w<M;w++)if(x[w]!==T[w])return!1;return!0}function _(x){var T=/^\/+|\/+$/g;return x.replace(T,"")}r._parts=function(){return{protocol:null,username:null,password:null,hostname:null,urn:null,port:null,path:null,query:null,fragment:null,preventInvalidHostname:r.preventInvalidHostname,duplicateQueryParameters:r.duplicateQueryParameters,escapeQuerySpace:r.escapeQuerySpace}},r.preventInvalidHostname=!1,r.duplicateQueryParameters=!1,r.escapeQuerySpace=!0,r.protocol_expression=/^[a-z][a-z0-9.+-]*$/i,r.idn_expression=/[^a-z0-9\._-]/i,r.punycode_expression=/(xn--)/i,r.ip4_expression=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,r.ip6_expression=/^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,r.find_uri_expression=/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/ig,r.findUri={start:/\b(?:([a-z][a-z0-9.+-]*:\/\/)|www\.)/gi,end:/[\s\r\n]|$/,trim:/[`!()\[\]{};:'".,<>?«»“”„‘’]+$/,parens:/(\([^\)]*\)|\[[^\]]*\]|\{[^}]*\}|<[^>]*>)/g},r.leading_whitespace_expression=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,r.ascii_tab_whitespace=/[\u0009\u000A\u000D]+/g,r.defaultPorts={http:"80",https:"443",ftp:"21",gopher:"70",ws:"80",wss:"443"},r.hostProtocols=["http","https"],r.invalid_hostname_characters=/[^a-zA-Z0-9\.\-:_]/,r.domAttributes={a:"href",blockquote:"cite",link:"href",base:"href",script:"src",form:"action",img:"src",area:"href",iframe:"src",embed:"src",source:"src",track:"src",input:"src",audio:"src",video:"src"},r.getDomAttribute=function(x){if(!(!x||!x.nodeName)){var T=x.nodeName.toLowerCase();if(!(T==="input"&&x.type!=="image"))return r.domAttributes[T]}};function y(x){return escape(x)}function C(x){return encodeURIComponent(x).replace(/[!'()*]/g,y).replace(/\*/g,"%2A")}r.encode=C,r.decode=decodeURIComponent,r.iso8859=function(){r.encode=escape,r.decode=unescape},r.unicode=function(){r.encode=C,r.decode=decodeURIComponent},r.characters={pathname:{encode:{expression:/%(24|26|2B|2C|3B|3D|3A|40)/ig,map:{"%24":"$","%26":"&","%2B":"+","%2C":",","%3B":";","%3D":"=","%3A":":","%40":"@"}},decode:{expression:/[\/\?#]/g,map:{"/":"%2F","?":"%3F","#":"%23"}}},reserved:{encode:{expression:/%(21|23|24|26|27|28|29|2A|2B|2C|2F|3A|3B|3D|3F|40|5B|5D)/ig,map:{"%3A":":","%2F":"/","%3F":"?","%23":"#","%5B":"[","%5D":"]","%40":"@","%21":"!","%24":"$","%26":"&","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"="}}},urnpath:{encode:{expression:/%(21|24|27|28|29|2A|2B|2C|3B|3D|40)/ig,map:{"%21":"!","%24":"$","%27":"'","%28":"(","%29":")","%2A":"*","%2B":"+","%2C":",","%3B":";","%3D":"=","%40":"@"}},decode:{expression:/[\/\?#:]/g,map:{"/":"%2F","?":"%3F","#":"%23",":":"%3A"}}}},r.encodeQuery=function(x,T){var w=r.encode(x+"");return T===void 0&&(T=r.escapeQuerySpace),T?w.replace(/%20/g,"+"):w},r.decodeQuery=function(x,T){x+="",T===void 0&&(T=r.escapeQuerySpace);try{return r.decode(T?x.replace(/\+/g,"%20"):x)}catch{return x}};var E={encode:"encode",decode:"decode"},I,b=function(x,T){return function(w){try{return r[T](w+"").replace(r.characters[x][T].expression,function(M){return r.characters[x][T].map[M]})}catch{return w}}};for(I in E)r[I+"PathSegment"]=b("pathname",E[I]),r[I+"UrnPathSegment"]=b("urnpath",E[I]);var S=function(x,T,w){return function(M){var O;w?O=function(F){return r[T](r[w](F))}:O=r[T];for(var U=(M+"").split(x),Q=0,z=U.length;Q<z;Q++)U[Q]=O(U[Q]);return U.join(x)}};r.decodePath=S("/","decodePathSegment"),r.decodeUrnPath=S(":","decodeUrnPathSegment"),r.recodePath=S("/","encodePathSegment","decode"),r.recodeUrnPath=S(":","encodeUrnPathSegment","decode"),r.encodeReserved=b("reserved","encode"),r.parse=function(x,T){var w;return T||(T={preventInvalidHostname:r.preventInvalidHostname}),x=x.replace(r.leading_whitespace_expression,""),x=x.replace(r.ascii_tab_whitespace,""),w=x.indexOf("#"),w>-1&&(T.fragment=x.substring(w+1)||null,x=x.substring(0,w)),w=x.indexOf("?"),w>-1&&(T.query=x.substring(w+1)||null,x=x.substring(0,w)),x=x.replace(/^(https?|ftp|wss?)?:+[/\\]*/i,"$1://"),x=x.replace(/^[/\\]{2,}/i,"//"),x.substring(0,2)==="//"?(T.protocol=null,x=x.substring(2),x=r.parseAuthority(x,T)):(w=x.indexOf(":"),w>-1&&(T.protocol=x.substring(0,w)||null,T.protocol&&!T.protocol.match(r.protocol_expression)?T.protocol=void 0:x.substring(w+1,w+3).replace(/\\/g,"/")==="//"?(x=x.substring(w+3),x=r.parseAuthority(x,T)):(x=x.substring(w+1),T.urn=!0))),T.path=x,T},r.parseHost=function(x,T){x||(x=""),x=x.replace(/\\/g,"/");var w=x.indexOf("/"),M,O;if(w===-1&&(w=x.length),x.charAt(0)==="[")M=x.indexOf("]"),T.hostname=x.substring(1,M)||null,T.port=x.substring(M+2,w)||null,T.port==="/"&&(T.port=null);else{var U=x.indexOf(":"),Q=x.indexOf("/"),z=x.indexOf(":",U+1);z!==-1&&(Q===-1||z<Q)?(T.hostname=x.substring(0,w)||null,T.port=null):(O=x.substring(0,w).split(":"),T.hostname=O[0]||null,T.port=O[1]||null)}return T.hostname&&x.substring(w).charAt(0)!=="/"&&(w++,x="/"+x),T.preventInvalidHostname&&r.ensureValidHostname(T.hostname,T.protocol),T.port&&r.ensureValidPort(T.port),x.substring(w)||"/"},r.parseAuthority=function(x,T){return x=r.parseUserinfo(x,T),r.parseHost(x,T)},r.parseUserinfo=function(x,T){var w=x,M=x.indexOf("\\");M!==-1&&(x=x.replace(/\\/g,"/"));var O=x.indexOf("/"),U=x.lastIndexOf("@",O>-1?O:x.length-1),Q;return U>-1&&(O===-1||U<O)?(Q=x.substring(0,U).split(":"),T.username=Q[0]?r.decode(Q[0]):null,Q.shift(),T.password=Q[0]?r.decode(Q.join(":")):null,x=w.substring(U+1)):(T.username=null,T.password=null),x},r.parseQuery=function(x,T){if(!x)return{};if(x=x.replace(/&+/g,"&").replace(/^\?*&*|&+$/g,""),!x)return{};for(var w={},M=x.split("&"),O=M.length,U,Q,z,F=0;F<O;F++)U=M[F].split("="),Q=r.decodeQuery(U.shift(),T),z=U.length?r.decodeQuery(U.join("="),T):null,Q!=="__proto__"&&(c.call(w,Q)?((typeof w[Q]=="string"||w[Q]===null)&&(w[Q]=[w[Q]]),w[Q].push(z)):w[Q]=z);return w},r.build=function(x){var T="",w=!1;return x.protocol&&(T+=x.protocol+":"),!x.urn&&(T||x.hostname)&&(T+="//",w=!0),T+=r.buildAuthority(x)||"",typeof x.path=="string"&&(x.path.charAt(0)!=="/"&&w&&(T+="/"),T+=x.path),typeof x.query=="string"&&x.query&&(T+="?"+x.query),typeof x.fragment=="string"&&x.fragment&&(T+="#"+x.fragment),T},r.buildHost=function(x){var T="";if(x.hostname)r.ip6_expression.test(x.hostname)?T+="["+x.hostname+"]":T+=x.hostname;else return"";return x.port&&(T+=":"+x.port),T},r.buildAuthority=function(x){return r.buildUserinfo(x)+r.buildHost(x)},r.buildUserinfo=function(x){var T="";return x.username&&(T+=r.encode(x.username)),x.password&&(T+=":"+r.encode(x.password)),T&&(T+="@"),T},r.buildQuery=function(x,T,w){var M="",O,U,Q,z;for(U in x)if(U!=="__proto__"&&c.call(x,U))if(h(x[U]))for(O={},Q=0,z=x[U].length;Q<z;Q++)x[U][Q]!==void 0&&O[x[U][Q]+""]===void 0&&(M+="&"+r.buildQueryParameter(U,x[U][Q],w),T!==!0&&(O[x[U][Q]+""]=!0));else x[U]!==void 0&&(M+="&"+r.buildQueryParameter(U,x[U],w));return M.substring(1)},r.buildQueryParameter=function(x,T,w){return r.encodeQuery(x,w)+(T!==null?"="+r.encodeQuery(T,w):"")},r.addQuery=function(x,T,w){if(typeof T=="object")for(var M in T)c.call(T,M)&&r.addQuery(x,M,T[M]);else if(typeof T=="string"){if(x[T]===void 0){x[T]=w;return}else typeof x[T]=="string"&&(x[T]=[x[T]]);h(w)||(w=[w]),x[T]=(x[T]||[]).concat(w)}else throw new TypeError("URI.addQuery() accepts an object, string as the name parameter")},r.setQuery=function(x,T,w){if(typeof T=="object")for(var M in T)c.call(T,M)&&r.setQuery(x,M,T[M]);else if(typeof T=="string")x[T]=w===void 0?null:w;else throw new TypeError("URI.setQuery() accepts an object, string as the name parameter")},r.removeQuery=function(x,T,w){var M,O,U;if(h(T))for(M=0,O=T.length;M<O;M++)x[T[M]]=void 0;else if(f(T)==="RegExp")for(U in x)T.test(U)&&(x[U]=void 0);else if(typeof T=="object")for(U in T)c.call(T,U)&&r.removeQuery(x,U,T[U]);else if(typeof T=="string")w!==void 0?f(w)==="RegExp"?!h(x[T])&&w.test(x[T])?x[T]=void 0:x[T]=A(x[T],w):x[T]===String(w)&&(!h(w)||w.length===1)?x[T]=void 0:h(x[T])&&(x[T]=A(x[T],w)):x[T]=void 0;else throw new TypeError("URI.removeQuery() accepts an object, string, RegExp as the first parameter")},r.hasQuery=function(x,T,w,M){switch(f(T)){case"String":break;case"RegExp":for(var O in x)if(c.call(x,O)&&T.test(O)&&(w===void 0||r.hasQuery(x,O,w)))return!0;return!1;case"Object":for(var U in T)if(c.call(T,U)&&!r.hasQuery(x,U,T[U]))return!1;return!0;default:throw new TypeError("URI.hasQuery() accepts a string, regular expression or object as the name parameter")}switch(f(w)){case"Undefined":return T in x;case"Boolean":var Q=!!(h(x[T])?x[T].length:x[T]);return w===Q;case"Function":return!!w(x[T],T,x);case"Array":if(!h(x[T]))return!1;var z=M?g:m;return z(x[T],w);case"RegExp":return h(x[T])?M?g(x[T],w):!1:!!(x[T]&&x[T].match(w));case"Number":w=String(w);case"String":return h(x[T])?M?g(x[T],w):!1:x[T]===w;default:throw new TypeError("URI.hasQuery() accepts undefined, boolean, string, number, RegExp, Function as the value parameter")}},r.joinPaths=function(){for(var x=[],T=[],w=0,M=0;M<arguments.length;M++){var O=new r(arguments[M]);x.push(O);for(var U=O.segment(),Q=0;Q<U.length;Q++)typeof U[Q]=="string"&&T.push(U[Q]),U[Q]&&w++}if(!T.length||!w)return new r("");var z=new r("").segment(T);return(x[0].path()===""||x[0].path().slice(0,1)==="/")&&z.path("/"+z.path()),z.normalize()},r.commonPath=function(x,T){var w=Math.min(x.length,T.length),M;for(M=0;M<w;M++)if(x.charAt(M)!==T.charAt(M)){M--;break}return M<1?x.charAt(0)===T.charAt(0)&&x.charAt(0)==="/"?"/":"":((x.charAt(M)!=="/"||T.charAt(M)!=="/")&&(M=x.substring(0,M).lastIndexOf("/")),x.substring(0,M+1))},r.withinString=function(x,T,w){w||(w={});var M=w.start||r.findUri.start,O=w.end||r.findUri.end,U=w.trim||r.findUri.trim,Q=w.parens||r.findUri.parens,z=/[a-z0-9-]=["']?$/i;for(M.lastIndex=0;;){var F=M.exec(x);if(!F)break;var H=F.index;if(w.ignoreHtml){var W=x.slice(Math.max(H-3,0),H);if(W&&z.test(W))continue}for(var Z=H+x.slice(H).search(O),Y=x.slice(H,Z),$=-1;;){var X=Q.exec(Y);if(!X)break;var he=X.index+X[0].length;$=Math.max($,he)}if($>-1?Y=Y.slice(0,$)+Y.slice($).replace(U,""):Y=Y.replace(U,""),!(Y.length<=F[0].length)&&!(w.ignore&&w.ignore.test(Y))){Z=H+Y.length;var ge=T(Y,H,Z,x);if(ge===void 0){M.lastIndex=Z;continue}ge=String(ge),x=x.slice(0,H)+ge+x.slice(Z),M.lastIndex=H+ge.length}}return M.lastIndex=0,x},r.ensureValidHostname=function(x,T){var w=!!x,M=!!T,O=!1;if(M&&(O=g(r.hostProtocols,T)),O&&!w)throw new TypeError("Hostname cannot be empty, if protocol is "+T);if(x&&x.match(r.invalid_hostname_characters)){if(!e)throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-:_] and Punycode.js is not available');if(e.toASCII(x).match(r.invalid_hostname_characters))throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-:_]')}},r.ensureValidPort=function(x){if(x){var T=Number(x);if(!(s(T)&&T>0&&T<65536))throw new TypeError('Port "'+x+'" is not a valid port')}},r.noConflict=function(x){if(x){var T={URI:this.noConflict()};return i.URITemplate&&typeof i.URITemplate.noConflict=="function"&&(T.URITemplate=i.URITemplate.noConflict()),i.IPv6&&typeof i.IPv6.noConflict=="function"&&(T.IPv6=i.IPv6.noConflict()),i.SecondLevelDomains&&typeof i.SecondLevelDomains.noConflict=="function"&&(T.SecondLevelDomains=i.SecondLevelDomains.noConflict()),T}else i.URI===this&&(i.URI=o);return this},a.build=function(x){return x===!0?this._deferred_build=!0:(x===void 0||this._deferred_build)&&(this._string=r.build(this._parts),this._deferred_build=!1),this},a.clone=function(){return new r(this)},a.valueOf=a.toString=function(){return this.build(!1)._string};function B(x){return function(T,w){return T===void 0?this._parts[x]||"":(this._parts[x]=T||null,this.build(!w),this)}}function v(x,T){return function(w,M){return w===void 0?this._parts[x]||"":(w!==null&&(w=w+"",w.charAt(0)===T&&(w=w.substring(1))),this._parts[x]=w,this.build(!M),this)}}a.protocol=B("protocol"),a.username=B("username"),a.password=B("password"),a.hostname=B("hostname"),a.port=B("port"),a.query=v("query","?"),a.fragment=v("fragment","#"),a.search=function(x,T){var w=this.query(x,T);return typeof w=="string"&&w.length?"?"+w:w},a.hash=function(x,T){var w=this.fragment(x,T);return typeof w=="string"&&w.length?"#"+w:w},a.pathname=function(x,T){if(x===void 0||x===!0){var w=this._parts.path||(this._parts.hostname?"/":"");return x?(this._parts.urn?r.decodeUrnPath:r.decodePath)(w):w}else return this._parts.urn?this._parts.path=x?r.recodeUrnPath(x):"":this._parts.path=x?r.recodePath(x):"/",this.build(!T),this},a.path=a.pathname,a.href=function(x,T){var w;if(x===void 0)return this.toString();this._string="",this._parts=r._parts();var M=x instanceof r,O=typeof x=="object"&&(x.hostname||x.path||x.pathname);if(x.nodeName){var U=r.getDomAttribute(x);x=x[U]||"",O=!1}if(!M&&O&&x.pathname!==void 0&&(x=x.toString()),typeof x=="string"||x instanceof String)this._parts=r.parse(String(x),this._parts);else if(M||O){var Q=M?x._parts:x;for(w in Q)w!=="query"&&c.call(this._parts,w)&&(this._parts[w]=Q[w]);Q.query&&this.query(Q.query,!1)}else throw new TypeError("invalid input");return this.build(!T),this},a.is=function(x){var T=!1,w=!1,M=!1,O=!1,U=!1,Q=!1,z=!1,F=!this._parts.urn;switch(this._parts.hostname&&(F=!1,w=r.ip4_expression.test(this._parts.hostname),M=r.ip6_expression.test(this._parts.hostname),T=w||M,O=!T,U=O&&n&&n.has(this._parts.hostname),Q=O&&r.idn_expression.test(this._parts.hostname),z=O&&r.punycode_expression.test(this._parts.hostname)),x.toLowerCase()){case"relative":return F;case"absolute":return!F;case"domain":case"name":return O;case"sld":return U;case"ip":return T;case"ip4":case"ipv4":case"inet4":return w;case"ip6":case"ipv6":case"inet6":return M;case"idn":return Q;case"url":return!this._parts.urn;case"urn":return!!this._parts.urn;case"punycode":return z}return null};var P=a.protocol,N=a.port,L=a.hostname;a.protocol=function(x,T){if(x&&(x=x.replace(/:(\/\/)?$/,""),!x.match(r.protocol_expression)))throw new TypeError('Protocol "'+x+`" contains characters other than [A-Z0-9.+-] or doesn't start with [A-Z]`);return P.call(this,x,T)},a.scheme=a.protocol,a.port=function(x,T){return this._parts.urn?x===void 0?"":this:(x!==void 0&&(x===0&&(x=null),x&&(x+="",x.charAt(0)===":"&&(x=x.substring(1)),r.ensureValidPort(x))),N.call(this,x,T))},a.hostname=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x!==void 0){var w={preventInvalidHostname:this._parts.preventInvalidHostname},M=r.parseHost(x,w);if(M!=="/")throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-]');x=w.hostname,this._parts.preventInvalidHostname&&r.ensureValidHostname(x,this._parts.protocol)}return L.call(this,x,T)},a.origin=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0){var w=this.protocol(),M=this.authority();return M?(w?w+"://":"")+this.authority():""}else{var O=r(x);return this.protocol(O.protocol()).authority(O.authority()).build(!T),this}},a.host=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0)return this._parts.hostname?r.buildHost(this._parts):"";var w=r.parseHost(x,this._parts);if(w!=="/")throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-]');return this.build(!T),this},a.authority=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0)return this._parts.hostname?r.buildAuthority(this._parts):"";var w=r.parseAuthority(x,this._parts);if(w!=="/")throw new TypeError('Hostname "'+x+'" contains characters other than [A-Z0-9.-]');return this.build(!T),this},a.userinfo=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0){var w=r.buildUserinfo(this._parts);return w&&w.substring(0,w.length-1)}else return x[x.length-1]!=="@"&&(x+="@"),r.parseUserinfo(x,this._parts),this.build(!T),this},a.resource=function(x,T){var w;return x===void 0?this.path()+this.search()+this.hash():(w=r.parse(x),this._parts.path=w.path,this._parts.query=w.query,this._parts.fragment=w.fragment,this.build(!T),this)},a.subdomain=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0){if(!this._parts.hostname||this.is("IP"))return"";var w=this._parts.hostname.length-this.domain().length-1;return this._parts.hostname.substring(0,w)||""}else{var M=this._parts.hostname.length-this.domain().length,O=this._parts.hostname.substring(0,M),U=new RegExp("^"+u(O));if(x&&x.charAt(x.length-1)!=="."&&(x+="."),x.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");return x&&r.ensureValidHostname(x,this._parts.protocol),this._parts.hostname=this._parts.hostname.replace(U,x),this.build(!T),this}},a.domain=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(typeof x=="boolean"&&(T=x,x=void 0),x===void 0){if(!this._parts.hostname||this.is("IP"))return"";var w=this._parts.hostname.match(/\./g);if(w&&w.length<2)return this._parts.hostname;var M=this._parts.hostname.length-this.tld(T).length-1;return M=this._parts.hostname.lastIndexOf(".",M-1)+1,this._parts.hostname.substring(M)||""}else{if(!x)throw new TypeError("cannot set domain empty");if(x.indexOf(":")!==-1)throw new TypeError("Domains cannot contain colons");if(r.ensureValidHostname(x,this._parts.protocol),!this._parts.hostname||this.is("IP"))this._parts.hostname=x;else{var O=new RegExp(u(this.domain())+"$");this._parts.hostname=this._parts.hostname.replace(O,x)}return this.build(!T),this}},a.tld=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(typeof x=="boolean"&&(T=x,x=void 0),x===void 0){if(!this._parts.hostname||this.is("IP"))return"";var w=this._parts.hostname.lastIndexOf("."),M=this._parts.hostname.substring(w+1);return T!==!0&&n&&n.list[M.toLowerCase()]&&n.get(this._parts.hostname)||M}else{var O;if(x)if(x.match(/[^a-zA-Z0-9-]/))if(n&&n.is(x))O=new RegExp(u(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(O,x);else throw new TypeError('TLD "'+x+'" contains characters other than [A-Z0-9]');else{if(!this._parts.hostname||this.is("IP"))throw new ReferenceError("cannot set TLD on non-domain host");O=new RegExp(u(this.tld())+"$"),this._parts.hostname=this._parts.hostname.replace(O,x)}else throw new TypeError("cannot set TLD empty");return this.build(!T),this}},a.directory=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0||x===!0){if(!this._parts.path&&!this._parts.hostname)return"";if(this._parts.path==="/")return"/";var w=this._parts.path.length-this.filename().length-1,M=this._parts.path.substring(0,w)||(this._parts.hostname?"/":"");return x?r.decodePath(M):M}else{var O=this._parts.path.length-this.filename().length,U=this._parts.path.substring(0,O),Q=new RegExp("^"+u(U));return this.is("relative")||(x||(x="/"),x.charAt(0)!=="/"&&(x="/"+x)),x&&x.charAt(x.length-1)!=="/"&&(x+="/"),x=r.recodePath(x),this._parts.path=this._parts.path.replace(Q,x),this.build(!T),this}},a.filename=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(typeof x!="string"){if(!this._parts.path||this._parts.path==="/")return"";var w=this._parts.path.lastIndexOf("/"),M=this._parts.path.substring(w+1);return x?r.decodePathSegment(M):M}else{var O=!1;x.charAt(0)==="/"&&(x=x.substring(1)),x.match(/\.?\//)&&(O=!0);var U=new RegExp(u(this.filename())+"$");return x=r.recodePath(x),this._parts.path=this._parts.path.replace(U,x),O?this.normalizePath(T):this.build(!T),this}},a.suffix=function(x,T){if(this._parts.urn)return x===void 0?"":this;if(x===void 0||x===!0){if(!this._parts.path||this._parts.path==="/")return"";var w=this.filename(),M=w.lastIndexOf("."),O,U;return M===-1?"":(O=w.substring(M+1),U=/^[a-z0-9%]+$/i.test(O)?O:"",x?r.decodePathSegment(U):U)}else{x.charAt(0)==="."&&(x=x.substring(1));var Q=this.suffix(),z;if(Q)x?z=new RegExp(u(Q)+"$"):z=new RegExp(u("."+Q)+"$");else{if(!x)return this;this._parts.path+="."+r.recodePath(x)}return z&&(x=r.recodePath(x),this._parts.path=this._parts.path.replace(z,x)),this.build(!T),this}},a.segment=function(x,T,w){var M=this._parts.urn?":":"/",O=this.path(),U=O.substring(0,1)==="/",Q=O.split(M);if(x!==void 0&&typeof x!="number"&&(w=T,T=x,x=void 0),x!==void 0&&typeof x!="number")throw new Error('Bad segment "'+x+'", must be 0-based integer');if(U&&Q.shift(),x<0&&(x=Math.max(Q.length+x,0)),T===void 0)return x===void 0?Q:Q[x];if(x===null||Q[x]===void 0)if(h(T)){Q=[];for(var z=0,F=T.length;z<F;z++)!T[z].length&&(!Q.length||!Q[Q.length-1].length)||(Q.length&&!Q[Q.length-1].length&&Q.pop(),Q.push(_(T[z])))}else(T||typeof T=="string")&&(T=_(T),Q[Q.length-1]===""?Q[Q.length-1]=T:Q.push(T));else T?Q[x]=_(T):Q.splice(x,1);return U&&Q.unshift(""),this.path(Q.join(M),w)},a.segmentCoded=function(x,T,w){var M,O,U;if(typeof x!="number"&&(w=T,T=x,x=void 0),T===void 0){if(M=this.segment(x,T,w),!h(M))M=M!==void 0?r.decode(M):void 0;else for(O=0,U=M.length;O<U;O++)M[O]=r.decode(M[O]);return M}if(!h(T))T=typeof T=="string"||T instanceof String?r.encode(T):T;else for(O=0,U=T.length;O<U;O++)T[O]=r.encode(T[O]);return this.segment(x,T,w)};var p=a.query;return a.query=function(x,T){if(x===!0)return r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if(typeof x=="function"){var w=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace),M=x.call(this,w);return this._parts.query=r.buildQuery(M||w,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!T),this}else return x!==void 0&&typeof x!="string"?(this._parts.query=r.buildQuery(x,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),this.build(!T),this):p.call(this,x,T)},a.setQuery=function(x,T,w){var M=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);if(typeof x=="string"||x instanceof String)M[x]=T!==void 0?T:null;else if(typeof x=="object")for(var O in x)c.call(x,O)&&(M[O]=x[O]);else throw new TypeError("URI.addQuery() accepts an object, string as the name parameter");return this._parts.query=r.buildQuery(M,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof x!="string"&&(w=T),this.build(!w),this},a.addQuery=function(x,T,w){var M=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.addQuery(M,x,T===void 0?null:T),this._parts.query=r.buildQuery(M,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof x!="string"&&(w=T),this.build(!w),this},a.removeQuery=function(x,T,w){var M=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.removeQuery(M,x,T),this._parts.query=r.buildQuery(M,this._parts.duplicateQueryParameters,this._parts.escapeQuerySpace),typeof x!="string"&&(w=T),this.build(!w),this},a.hasQuery=function(x,T,w){var M=r.parseQuery(this._parts.query,this._parts.escapeQuerySpace);return r.hasQuery(M,x,T,w)},a.setSearch=a.setQuery,a.addSearch=a.addQuery,a.removeSearch=a.removeQuery,a.hasSearch=a.hasQuery,a.normalize=function(){return this._parts.urn?this.normalizeProtocol(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build():this.normalizeProtocol(!1).normalizeHostname(!1).normalizePort(!1).normalizePath(!1).normalizeQuery(!1).normalizeFragment(!1).build()},a.normalizeProtocol=function(x){return typeof this._parts.protocol=="string"&&(this._parts.protocol=this._parts.protocol.toLowerCase(),this.build(!x)),this},a.normalizeHostname=function(x){return this._parts.hostname&&(this.is("IDN")&&e?this._parts.hostname=e.toASCII(this._parts.hostname):this.is("IPv6")&&t&&(this._parts.hostname=t.best(this._parts.hostname)),this._parts.hostname=this._parts.hostname.toLowerCase(),this.build(!x)),this},a.normalizePort=function(x){return typeof this._parts.protocol=="string"&&this._parts.port===r.defaultPorts[this._parts.protocol]&&(this._parts.port=null,this.build(!x)),this},a.normalizePath=function(x){var T=this._parts.path;if(!T)return this;if(this._parts.urn)return this._parts.path=r.recodeUrnPath(this._parts.path),this.build(!x),this;if(this._parts.path==="/")return this;T=r.recodePath(T);var w,M="",O,U;for(T.charAt(0)!=="/"&&(w=!0,T="/"+T),(T.slice(-3)==="/.."||T.slice(-2)==="/.")&&(T+="/"),T=T.replace(/(\/(\.\/)+)|(\/\.$)/g,"/").replace(/\/{2,}/g,"/"),w&&(M=T.substring(1).match(/^(\.\.\/)+/)||"",M&&(M=M[0]));O=T.search(/\/\.\.(\/|$)/),O!==-1;){if(O===0){T=T.substring(3);continue}U=T.substring(0,O).lastIndexOf("/"),U===-1&&(U=O),T=T.substring(0,U)+T.substring(O+3)}return w&&this.is("relative")&&(T=M+T.substring(1)),this._parts.path=T,this.build(!x),this},a.normalizePathname=a.normalizePath,a.normalizeQuery=function(x){return typeof this._parts.query=="string"&&(this._parts.query.length?this.query(r.parseQuery(this._parts.query,this._parts.escapeQuerySpace)):this._parts.query=null,this.build(!x)),this},a.normalizeFragment=function(x){return this._parts.fragment||(this._parts.fragment=null,this.build(!x)),this},a.normalizeSearch=a.normalizeQuery,a.normalizeHash=a.normalizeFragment,a.iso8859=function(){var x=r.encode,T=r.decode;r.encode=escape,r.decode=decodeURIComponent;try{this.normalize()}finally{r.encode=x,r.decode=T}return this},a.unicode=function(){var x=r.encode,T=r.decode;r.encode=C,r.decode=unescape;try{this.normalize()}finally{r.encode=x,r.decode=T}return this},a.readable=function(){var x=this.clone();x.username("").password("").normalize();var T="";if(x._parts.protocol&&(T+=x._parts.protocol+"://"),x._parts.hostname&&(x.is("punycode")&&e?(T+=e.toUnicode(x._parts.hostname),x._parts.port&&(T+=":"+x._parts.port)):T+=x.host()),x._parts.hostname&&x._parts.path&&x._parts.path.charAt(0)!=="/"&&(T+="/"),T+=x.path(!0),x._parts.query){for(var w="",M=0,O=x._parts.query.split("&"),U=O.length;M<U;M++){var Q=(O[M]||"").split("=");w+="&"+r.decodeQuery(Q[0],this._parts.escapeQuerySpace).replace(/&/g,"%26"),Q[1]!==void 0&&(w+="="+r.decodeQuery(Q[1],this._parts.escapeQuerySpace).replace(/&/g,"%26"))}T+="?"+w.substring(1)}return T+=r.decodeQuery(x.hash(),!0),T},a.absoluteTo=function(x){var T=this.clone(),w=["protocol","username","password","hostname","port"],M,O,U;if(this._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(x instanceof r||(x=new r(x)),T._parts.protocol||(T._parts.protocol=x._parts.protocol,this._parts.hostname))return T;for(O=0;U=w[O];O++)T._parts[U]=x._parts[U];return T._parts.path?(T._parts.path.substring(-2)===".."&&(T._parts.path+="/"),T.path().charAt(0)!=="/"&&(M=x.directory(),M=M||(x.path().indexOf("/")===0?"/":""),T._parts.path=(M?M+"/":"")+T._parts.path,T.normalizePath())):(T._parts.path=x._parts.path,T._parts.query||(T._parts.query=x._parts.query)),T.build(),T},a.relativeTo=function(x){var T=this.clone().normalize(),w,M,O,U,Q;if(T._parts.urn)throw new Error("URNs do not have any generally defined hierarchical components");if(x=new r(x).normalize(),w=T._parts,M=x._parts,U=T.path(),Q=x.path(),U.charAt(0)!=="/")throw new Error("URI is already relative");if(Q.charAt(0)!=="/")throw new Error("Cannot calculate a URI relative to another relative URI");if(w.protocol===M.protocol&&(w.protocol=null),w.username!==M.username||w.password!==M.password||w.protocol!==null||w.username!==null||w.password!==null)return T.build();if(w.hostname===M.hostname&&w.port===M.port)w.hostname=null,w.port=null;else return T.build();if(U===Q)return w.path="",T.build();if(O=r.commonPath(U,Q),!O)return T.build();var z=M.path.substring(O.length).replace(/[^\/]*$/,"").replace(/.*?\//g,"../");return w.path=z+w.path.substring(O.length)||"./",T.build()},a.equals=function(x){var T=this.clone(),w=new r(x),M={},O={},U={},Q,z,F;if(T.normalize(),w.normalize(),T.toString()===w.toString())return!0;if(Q=T.query(),z=w.query(),T.query(""),w.query(""),T.toString()!==w.toString()||Q.length!==z.length)return!1;M=r.parseQuery(Q,this._parts.escapeQuerySpace),O=r.parseQuery(z,this._parts.escapeQuerySpace);for(F in M)if(c.call(M,F)){if(h(M[F])){if(!m(M[F],O[F]))return!1}else if(M[F]!==O[F])return!1;U[F]=!0}for(F in O)if(c.call(O,F)&&!U[F])return!1;return!0},a.preventInvalidHostname=function(x){return this._parts.preventInvalidHostname=!!x,this},a.duplicateQueryParameters=function(x){return this._parts.duplicateQueryParameters=!!x,this},a.escapeQuerySpace=function(x){return this._parts.escapeQuerySpace=!!x,this},r})});var Zle=Rd((QMn,Jle)=>{"use strict";Jle.exports=FYe;var ZB=1e20;function FYe(e,t){t||(t={});var n=t.cutoff==null?.25:t.cutoff,i=t.radius==null?8:t.radius,o=t.channel||0,r,s,a,c,u,f,h,A,g,m,_;if(ArrayBuffer.isView(e)||Array.isArray(e)){if(!t.width||!t.height)throw Error("For raw data width and height should be provided by options");r=t.width,s=t.height,c=e,t.stride?f=t.stride:f=Math.floor(e.length/r/s)}else window.HTMLCanvasElement&&e instanceof window.HTMLCanvasElement?(A=e,h=A.getContext("2d"),r=A.width,s=A.height,g=h.getImageData(0,0,r,s),c=g.data,f=4):window.CanvasRenderingContext2D&&e instanceof window.CanvasRenderingContext2D?(A=e.canvas,h=e,r=A.width,s=A.height,g=h.getImageData(0,0,r,s),c=g.data,f=4):window.ImageData&&e instanceof window.ImageData&&(g=e,r=e.width,s=e.height,c=g.data,f=4);if(a=Math.max(r,s),window.Uint8ClampedArray&&c instanceof window.Uint8ClampedArray||window.Uint8Array&&c instanceof window.Uint8Array)for(u=c,c=Array(r*s),m=0,_=Math.floor(u.length/f);m<_;m++)c[m]=u[m*f+o]/255;else if(f!==1)throw Error("Raw data can have only 1 value per pixel");var y=Array(r*s),C=Array(r*s),E=Array(a),I=Array(a),b=Array(a+1),S=Array(a);for(m=0,_=r*s;m<_;m++){var B=c[m];y[m]=B===1?0:B===0?ZB:Math.pow(Math.max(0,.5-B),2),C[m]=B===1?ZB:B===0?0:Math.pow(Math.max(0,B-.5),2)}Kle(y,r,s,E,I,S,b),Kle(C,r,s,E,I,S,b);var v=window.Float32Array?new Float32Array(r*s):new Array(r*s);for(m=0,_=r*s;m<_;m++)v[m]=Math.min(Math.max(1-((y[m]-C[m])/i+n),0),1);return v}function Kle(e,t,n,i,o,r,s){for(var a=0;a<t;a++){for(var c=0;c<n;c++)i[c]=e[c*t+a];for(Xle(i,o,r,s,n),c=0;c<n;c++)e[c*t+a]=o[c]}for(c=0;c<n;c++){for(a=0;a<t;a++)i[a]=e[c*t+a];for(Xle(i,o,r,s,t),a=0;a<t;a++)e[c*t+a]=Math.sqrt(o[a])}}function Xle(e,t,n,i,o){n[0]=0,i[0]=-ZB,i[1]=+ZB;for(var r=1,s=0;r<o;r++){for(var a=(e[r]+r*r-(e[n[s]]+n[s]*n[s]))/(2*r-2*n[s]);a<=i[s];)s--,a=(e[r]+r*r-(e[n[s]]+n[s]*n[s]))/(2*r-2*n[s]);s++,n[s]=r,i[s]=a,i[s+1]=+ZB}for(r=0,s=0;r<o;r++){for(;i[s+1]<r;)s++;t[r]=(r-n[s])*(r-n[s])+e[n[s]]}}});var iue=Rd((t1n,rk)=>{function qYe(){var e=0,t=1,n=2,i=3,o=4,r=5,s=6,a=7,c=8,u=9,f=10,h=11,A=12,g=13,m=14,_=15,y=16,C=17,E=0,I=1,b=2,S=3,B=4;function v(p,x){return 55296<=p.charCodeAt(x)&&p.charCodeAt(x)<=56319&&56320<=p.charCodeAt(x+1)&&p.charCodeAt(x+1)<=57343}function P(p,x){x===void 0&&(x=0);var T=p.charCodeAt(x);if(55296<=T&&T<=56319&&x<p.length-1){var w=T,M=p.charCodeAt(x+1);return 56320<=M&&M<=57343?(w-55296)*1024+(M-56320)+65536:w}if(56320<=T&&T<=57343&&x>=1){var w=p.charCodeAt(x-1),M=T;return 55296<=w&&w<=56319?(w-55296)*1024+(M-56320)+65536:M}return T}function N(p,x,T){var w=[p].concat(x).concat([T]),M=w[w.length-2],O=T,U=w.lastIndexOf(m);if(U>1&&w.slice(1,U).every(function(F){return F==i})&&[i,g,C].indexOf(p)==-1)return b;var Q=w.lastIndexOf(o);if(Q>0&&w.slice(1,Q).every(function(F){return F==o})&&[A,o].indexOf(M)==-1)return w.filter(function(F){return F==o}).length%2==1?S:B;if(M==e&&O==t)return E;if(M==n||M==e||M==t)return O==m&&x.every(function(F){return F==i})?b:I;if(O==n||O==e||O==t)return I;if(M==s&&(O==s||O==a||O==u||O==f))return E;if((M==u||M==a)&&(O==a||O==c))return E;if((M==f||M==c)&&O==c)return E;if(O==i||O==_)return E;if(O==r)return E;if(M==A)return E;var z=w.indexOf(i)!=-1?w.lastIndexOf(i)-1:w.length-2;return[g,C].indexOf(w[z])!=-1&&w.slice(z+1,-1).every(function(F){return F==i})&&O==m||M==_&&[y,C].indexOf(O)!=-1?E:x.indexOf(o)!=-1?b:M==o&&O==o?E:I}this.nextBreak=function(p,x){if(x===void 0&&(x=0),x<0)return 0;if(x>=p.length-1)return p.length;for(var T=L(P(p,x)),w=[],M=x+1;M<p.length;M++)if(!v(p,M-1)){var O=L(P(p,M));if(N(T,w,O))return M;w.push(O)}return p.length},this.splitGraphemes=function(p){for(var x=[],T=0,w;(w=this.nextBreak(p,T))<p.length;)x.push(p.slice(T,w)),T=w;return T<p.length&&x.push(p.slice(T)),x},this.iterateGraphemes=function(p){var x=0,T={next:function(){var w,M;return(M=this.nextBreak(p,x))<p.length?(w=p.slice(x,M),x=M,{value:w,done:!1}):x<p.length?(w=p.slice(x),x=p.length,{value:w,done:!1}):{value:void 0,done:!0}}.bind(this)};return typeof Symbol<"u"&&Symbol.iterator&&(T[Symbol.iterator]=function(){return T}),T},this.countGraphemes=function(p){for(var x=0,T=0,w;(w=this.nextBreak(p,T))<p.length;)T=w,x++;return T<p.length&&x++,x};function L(p){return 1536<=p&&p<=1541||p==1757||p==1807||p==2274||p==3406||p==69821||70082<=p&&p<=70083||p==72250||72326<=p&&p<=72329||p==73030?A:p==13?e:p==10?t:0<=p&&p<=9||11<=p&&p<=12||14<=p&&p<=31||127<=p&&p<=159||p==173||p==1564||p==6158||p==8203||8206<=p&&p<=8207||p==8232||p==8233||8234<=p&&p<=8238||8288<=p&&p<=8292||p==8293||8294<=p&&p<=8303||55296<=p&&p<=57343||p==65279||65520<=p&&p<=65528||65529<=p&&p<=65531||113824<=p&&p<=113827||119155<=p&&p<=119162||p==917504||p==917505||917506<=p&&p<=917535||917632<=p&&p<=917759||918e3<=p&&p<=921599?n:768<=p&&p<=879||1155<=p&&p<=1159||1160<=p&&p<=1161||1425<=p&&p<=1469||p==1471||1473<=p&&p<=1474||1476<=p&&p<=1477||p==1479||1552<=p&&p<=1562||1611<=p&&p<=1631||p==1648||1750<=p&&p<=1756||1759<=p&&p<=1764||1767<=p&&p<=1768||1770<=p&&p<=1773||p==1809||1840<=p&&p<=1866||1958<=p&&p<=1968||2027<=p&&p<=2035||2070<=p&&p<=2073||2075<=p&&p<=2083||2085<=p&&p<=2087||2089<=p&&p<=2093||2137<=p&&p<=2139||2260<=p&&p<=2273||2275<=p&&p<=2306||p==2362||p==2364||2369<=p&&p<=2376||p==2381||2385<=p&&p<=2391||2402<=p&&p<=2403||p==2433||p==2492||p==2494||2497<=p&&p<=2500||p==2509||p==2519||2530<=p&&p<=2531||2561<=p&&p<=2562||p==2620||2625<=p&&p<=2626||2631<=p&&p<=2632||2635<=p&&p<=2637||p==2641||2672<=p&&p<=2673||p==2677||2689<=p&&p<=2690||p==2748||2753<=p&&p<=2757||2759<=p&&p<=2760||p==2765||2786<=p&&p<=2787||2810<=p&&p<=2815||p==2817||p==2876||p==2878||p==2879||2881<=p&&p<=2884||p==2893||p==2902||p==2903||2914<=p&&p<=2915||p==2946||p==3006||p==3008||p==3021||p==3031||p==3072||3134<=p&&p<=3136||3142<=p&&p<=3144||3146<=p&&p<=3149||3157<=p&&p<=3158||3170<=p&&p<=3171||p==3201||p==3260||p==3263||p==3266||p==3270||3276<=p&&p<=3277||3285<=p&&p<=3286||3298<=p&&p<=3299||3328<=p&&p<=3329||3387<=p&&p<=3388||p==3390||3393<=p&&p<=3396||p==3405||p==3415||3426<=p&&p<=3427||p==3530||p==3535||3538<=p&&p<=3540||p==3542||p==3551||p==3633||3636<=p&&p<=3642||3655<=p&&p<=3662||p==3761||3764<=p&&p<=3769||3771<=p&&p<=3772||3784<=p&&p<=3789||3864<=p&&p<=3865||p==3893||p==3895||p==3897||3953<=p&&p<=3966||3968<=p&&p<=3972||3974<=p&&p<=3975||3981<=p&&p<=3991||3993<=p&&p<=4028||p==4038||4141<=p&&p<=4144||4146<=p&&p<=4151||4153<=p&&p<=4154||4157<=p&&p<=4158||4184<=p&&p<=4185||4190<=p&&p<=4192||4209<=p&&p<=4212||p==4226||4229<=p&&p<=4230||p==4237||p==4253||4957<=p&&p<=4959||5906<=p&&p<=5908||5938<=p&&p<=5940||5970<=p&&p<=5971||6002<=p&&p<=6003||6068<=p&&p<=6069||6071<=p&&p<=6077||p==6086||6089<=p&&p<=6099||p==6109||6155<=p&&p<=6157||6277<=p&&p<=6278||p==6313||6432<=p&&p<=6434||6439<=p&&p<=6440||p==6450||6457<=p&&p<=6459||6679<=p&&p<=6680||p==6683||p==6742||6744<=p&&p<=6750||p==6752||p==6754||6757<=p&&p<=6764||6771<=p&&p<=6780||p==6783||6832<=p&&p<=6845||p==6846||6912<=p&&p<=6915||p==6964||6966<=p&&p<=6970||p==6972||p==6978||7019<=p&&p<=7027||7040<=p&&p<=7041||7074<=p&&p<=7077||7080<=p&&p<=7081||7083<=p&&p<=7085||p==7142||7144<=p&&p<=7145||p==7149||7151<=p&&p<=7153||7212<=p&&p<=7219||7222<=p&&p<=7223||7376<=p&&p<=7378||7380<=p&&p<=7392||7394<=p&&p<=7400||p==7405||p==7412||7416<=p&&p<=7417||7616<=p&&p<=7673||7675<=p&&p<=7679||p==8204||8400<=p&&p<=8412||8413<=p&&p<=8416||p==8417||8418<=p&&p<=8420||8421<=p&&p<=8432||11503<=p&&p<=11505||p==11647||11744<=p&&p<=11775||12330<=p&&p<=12333||12334<=p&&p<=12335||12441<=p&&p<=12442||p==42607||42608<=p&&p<=42610||42612<=p&&p<=42621||42654<=p&&p<=42655||42736<=p&&p<=42737||p==43010||p==43014||p==43019||43045<=p&&p<=43046||43204<=p&&p<=43205||43232<=p&&p<=43249||43302<=p&&p<=43309||43335<=p&&p<=43345||43392<=p&&p<=43394||p==43443||43446<=p&&p<=43449||p==43452||p==43493||43561<=p&&p<=43566||43569<=p&&p<=43570||43573<=p&&p<=43574||p==43587||p==43596||p==43644||p==43696||43698<=p&&p<=43700||43703<=p&&p<=43704||43710<=p&&p<=43711||p==43713||43756<=p&&p<=43757||p==43766||p==44005||p==44008||p==44013||p==64286||65024<=p&&p<=65039||65056<=p&&p<=65071||65438<=p&&p<=65439||p==66045||p==66272||66422<=p&&p<=66426||68097<=p&&p<=68099||68101<=p&&p<=68102||68108<=p&&p<=68111||68152<=p&&p<=68154||p==68159||68325<=p&&p<=68326||p==69633||69688<=p&&p<=69702||69759<=p&&p<=69761||69811<=p&&p<=69814||69817<=p&&p<=69818||69888<=p&&p<=69890||69927<=p&&p<=69931||69933<=p&&p<=69940||p==70003||70016<=p&&p<=70017||70070<=p&&p<=70078||70090<=p&&p<=70092||70191<=p&&p<=70193||p==70196||70198<=p&&p<=70199||p==70206||p==70367||70371<=p&&p<=70378||70400<=p&&p<=70401||p==70460||p==70462||p==70464||p==70487||70502<=p&&p<=70508||70512<=p&&p<=70516||70712<=p&&p<=70719||70722<=p&&p<=70724||p==70726||p==70832||70835<=p&&p<=70840||p==70842||p==70845||70847<=p&&p<=70848||70850<=p&&p<=70851||p==71087||71090<=p&&p<=71093||71100<=p&&p<=71101||71103<=p&&p<=71104||71132<=p&&p<=71133||71219<=p&&p<=71226||p==71229||71231<=p&&p<=71232||p==71339||p==71341||71344<=p&&p<=71349||p==71351||71453<=p&&p<=71455||71458<=p&&p<=71461||71463<=p&&p<=71467||72193<=p&&p<=72198||72201<=p&&p<=72202||72243<=p&&p<=72248||72251<=p&&p<=72254||p==72263||72273<=p&&p<=72278||72281<=p&&p<=72283||72330<=p&&p<=72342||72344<=p&&p<=72345||72752<=p&&p<=72758||72760<=p&&p<=72765||p==72767||72850<=p&&p<=72871||72874<=p&&p<=72880||72882<=p&&p<=72883||72885<=p&&p<=72886||73009<=p&&p<=73014||p==73018||73020<=p&&p<=73021||73023<=p&&p<=73029||p==73031||92912<=p&&p<=92916||92976<=p&&p<=92982||94095<=p&&p<=94098||113821<=p&&p<=113822||p==119141||119143<=p&&p<=119145||119150<=p&&p<=119154||119163<=p&&p<=119170||119173<=p&&p<=119179||119210<=p&&p<=119213||119362<=p&&p<=119364||121344<=p&&p<=121398||121403<=p&&p<=121452||p==121461||p==121476||121499<=p&&p<=121503||121505<=p&&p<=121519||122880<=p&&p<=122886||122888<=p&&p<=122904||122907<=p&&p<=122913||122915<=p&&p<=122916||122918<=p&&p<=122922||125136<=p&&p<=125142||125252<=p&&p<=125258||917536<=p&&p<=917631||917760<=p&&p<=917999?i:127462<=p&&p<=127487?o:p==2307||p==2363||2366<=p&&p<=2368||2377<=p&&p<=2380||2382<=p&&p<=2383||2434<=p&&p<=2435||2495<=p&&p<=2496||2503<=p&&p<=2504||2507<=p&&p<=2508||p==2563||2622<=p&&p<=2624||p==2691||2750<=p&&p<=2752||p==2761||2763<=p&&p<=2764||2818<=p&&p<=2819||p==2880||2887<=p&&p<=2888||2891<=p&&p<=2892||p==3007||3009<=p&&p<=3010||3014<=p&&p<=3016||3018<=p&&p<=3020||3073<=p&&p<=3075||3137<=p&&p<=3140||3202<=p&&p<=3203||p==3262||3264<=p&&p<=3265||3267<=p&&p<=3268||3271<=p&&p<=3272||3274<=p&&p<=3275||3330<=p&&p<=3331||3391<=p&&p<=3392||3398<=p&&p<=3400||3402<=p&&p<=3404||3458<=p&&p<=3459||3536<=p&&p<=3537||3544<=p&&p<=3550||3570<=p&&p<=3571||p==3635||p==3763||3902<=p&&p<=3903||p==3967||p==4145||4155<=p&&p<=4156||4182<=p&&p<=4183||p==4228||p==6070||6078<=p&&p<=6085||6087<=p&&p<=6088||6435<=p&&p<=6438||6441<=p&&p<=6443||6448<=p&&p<=6449||6451<=p&&p<=6456||6681<=p&&p<=6682||p==6741||p==6743||6765<=p&&p<=6770||p==6916||p==6965||p==6971||6973<=p&&p<=6977||6979<=p&&p<=6980||p==7042||p==7073||7078<=p&&p<=7079||p==7082||p==7143||7146<=p&&p<=7148||p==7150||7154<=p&&p<=7155||7204<=p&&p<=7211||7220<=p&&p<=7221||p==7393||7410<=p&&p<=7411||p==7415||43043<=p&&p<=43044||p==43047||43136<=p&&p<=43137||43188<=p&&p<=43203||43346<=p&&p<=43347||p==43395||43444<=p&&p<=43445||43450<=p&&p<=43451||43453<=p&&p<=43456||43567<=p&&p<=43568||43571<=p&&p<=43572||p==43597||p==43755||43758<=p&&p<=43759||p==43765||44003<=p&&p<=44004||44006<=p&&p<=44007||44009<=p&&p<=44010||p==44012||p==69632||p==69634||p==69762||69808<=p&&p<=69810||69815<=p&&p<=69816||p==69932||p==70018||70067<=p&&p<=70069||70079<=p&&p<=70080||70188<=p&&p<=70190||70194<=p&&p<=70195||p==70197||70368<=p&&p<=70370||70402<=p&&p<=70403||p==70463||70465<=p&&p<=70468||70471<=p&&p<=70472||70475<=p&&p<=70477||70498<=p&&p<=70499||70709<=p&&p<=70711||70720<=p&&p<=70721||p==70725||70833<=p&&p<=70834||p==70841||70843<=p&&p<=70844||p==70846||p==70849||71088<=p&&p<=71089||71096<=p&&p<=71099||p==71102||71216<=p&&p<=71218||71227<=p&&p<=71228||p==71230||p==71340||71342<=p&&p<=71343||p==71350||71456<=p&&p<=71457||p==71462||72199<=p&&p<=72200||p==72249||72279<=p&&p<=72280||p==72343||p==72751||p==72766||p==72873||p==72881||p==72884||94033<=p&&p<=94078||p==119142||p==119149?r:4352<=p&&p<=4447||43360<=p&&p<=43388?s:4448<=p&&p<=4519||55216<=p&&p<=55238?a:4520<=p&&p<=4607||55243<=p&&p<=55291?c:p==44032||p==44060||p==44088||p==44116||p==44144||p==44172||p==44200||p==44228||p==44256||p==44284||p==44312||p==44340||p==44368||p==44396||p==44424||p==44452||p==44480||p==44508||p==44536||p==44564||p==44592||p==44620||p==44648||p==44676||p==44704||p==44732||p==44760||p==44788||p==44816||p==44844||p==44872||p==44900||p==44928||p==44956||p==44984||p==45012||p==45040||p==45068||p==45096||p==45124||p==45152||p==45180||p==45208||p==45236||p==45264||p==45292||p==45320||p==45348||p==45376||p==45404||p==45432||p==45460||p==45488||p==45516||p==45544||p==45572||p==45600||p==45628||p==45656||p==45684||p==45712||p==45740||p==45768||p==45796||p==45824||p==45852||p==45880||p==45908||p==45936||p==45964||p==45992||p==46020||p==46048||p==46076||p==46104||p==46132||p==46160||p==46188||p==46216||p==46244||p==46272||p==46300||p==46328||p==46356||p==46384||p==46412||p==46440||p==46468||p==46496||p==46524||p==46552||p==46580||p==46608||p==46636||p==46664||p==46692||p==46720||p==46748||p==46776||p==46804||p==46832||p==46860||p==46888||p==46916||p==46944||p==46972||p==47e3||p==47028||p==47056||p==47084||p==47112||p==47140||p==47168||p==47196||p==47224||p==47252||p==47280||p==47308||p==47336||p==47364||p==47392||p==47420||p==47448||p==47476||p==47504||p==47532||p==47560||p==47588||p==47616||p==47644||p==47672||p==47700||p==47728||p==47756||p==47784||p==47812||p==47840||p==47868||p==47896||p==47924||p==47952||p==47980||p==48008||p==48036||p==48064||p==48092||p==48120||p==48148||p==48176||p==48204||p==48232||p==48260||p==48288||p==48316||p==48344||p==48372||p==48400||p==48428||p==48456||p==48484||p==48512||p==48540||p==48568||p==48596||p==48624||p==48652||p==48680||p==48708||p==48736||p==48764||p==48792||p==48820||p==48848||p==48876||p==48904||p==48932||p==48960||p==48988||p==49016||p==49044||p==49072||p==49100||p==49128||p==49156||p==49184||p==49212||p==49240||p==49268||p==49296||p==49324||p==49352||p==49380||p==49408||p==49436||p==49464||p==49492||p==49520||p==49548||p==49576||p==49604||p==49632||p==49660||p==49688||p==49716||p==49744||p==49772||p==49800||p==49828||p==49856||p==49884||p==49912||p==49940||p==49968||p==49996||p==50024||p==50052||p==50080||p==50108||p==50136||p==50164||p==50192||p==50220||p==50248||p==50276||p==50304||p==50332||p==50360||p==50388||p==50416||p==50444||p==50472||p==50500||p==50528||p==50556||p==50584||p==50612||p==50640||p==50668||p==50696||p==50724||p==50752||p==50780||p==50808||p==50836||p==50864||p==50892||p==50920||p==50948||p==50976||p==51004||p==51032||p==51060||p==51088||p==51116||p==51144||p==51172||p==51200||p==51228||p==51256||p==51284||p==51312||p==51340||p==51368||p==51396||p==51424||p==51452||p==51480||p==51508||p==51536||p==51564||p==51592||p==51620||p==51648||p==51676||p==51704||p==51732||p==51760||p==51788||p==51816||p==51844||p==51872||p==51900||p==51928||p==51956||p==51984||p==52012||p==52040||p==52068||p==52096||p==52124||p==52152||p==52180||p==52208||p==52236||p==52264||p==52292||p==52320||p==52348||p==52376||p==52404||p==52432||p==52460||p==52488||p==52516||p==52544||p==52572||p==52600||p==52628||p==52656||p==52684||p==52712||p==52740||p==52768||p==52796||p==52824||p==52852||p==52880||p==52908||p==52936||p==52964||p==52992||p==53020||p==53048||p==53076||p==53104||p==53132||p==53160||p==53188||p==53216||p==53244||p==53272||p==53300||p==53328||p==53356||p==53384||p==53412||p==53440||p==53468||p==53496||p==53524||p==53552||p==53580||p==53608||p==53636||p==53664||p==53692||p==53720||p==53748||p==53776||p==53804||p==53832||p==53860||p==53888||p==53916||p==53944||p==53972||p==54e3||p==54028||p==54056||p==54084||p==54112||p==54140||p==54168||p==54196||p==54224||p==54252||p==54280||p==54308||p==54336||p==54364||p==54392||p==54420||p==54448||p==54476||p==54504||p==54532||p==54560||p==54588||p==54616||p==54644||p==54672||p==54700||p==54728||p==54756||p==54784||p==54812||p==54840||p==54868||p==54896||p==54924||p==54952||p==54980||p==55008||p==55036||p==55064||p==55092||p==55120||p==55148||p==55176?u:44033<=p&&p<=44059||44061<=p&&p<=44087||44089<=p&&p<=44115||44117<=p&&p<=44143||44145<=p&&p<=44171||44173<=p&&p<=44199||44201<=p&&p<=44227||44229<=p&&p<=44255||44257<=p&&p<=44283||44285<=p&&p<=44311||44313<=p&&p<=44339||44341<=p&&p<=44367||44369<=p&&p<=44395||44397<=p&&p<=44423||44425<=p&&p<=44451||44453<=p&&p<=44479||44481<=p&&p<=44507||44509<=p&&p<=44535||44537<=p&&p<=44563||44565<=p&&p<=44591||44593<=p&&p<=44619||44621<=p&&p<=44647||44649<=p&&p<=44675||44677<=p&&p<=44703||44705<=p&&p<=44731||44733<=p&&p<=44759||44761<=p&&p<=44787||44789<=p&&p<=44815||44817<=p&&p<=44843||44845<=p&&p<=44871||44873<=p&&p<=44899||44901<=p&&p<=44927||44929<=p&&p<=44955||44957<=p&&p<=44983||44985<=p&&p<=45011||45013<=p&&p<=45039||45041<=p&&p<=45067||45069<=p&&p<=45095||45097<=p&&p<=45123||45125<=p&&p<=45151||45153<=p&&p<=45179||45181<=p&&p<=45207||45209<=p&&p<=45235||45237<=p&&p<=45263||45265<=p&&p<=45291||45293<=p&&p<=45319||45321<=p&&p<=45347||45349<=p&&p<=45375||45377<=p&&p<=45403||45405<=p&&p<=45431||45433<=p&&p<=45459||45461<=p&&p<=45487||45489<=p&&p<=45515||45517<=p&&p<=45543||45545<=p&&p<=45571||45573<=p&&p<=45599||45601<=p&&p<=45627||45629<=p&&p<=45655||45657<=p&&p<=45683||45685<=p&&p<=45711||45713<=p&&p<=45739||45741<=p&&p<=45767||45769<=p&&p<=45795||45797<=p&&p<=45823||45825<=p&&p<=45851||45853<=p&&p<=45879||45881<=p&&p<=45907||45909<=p&&p<=45935||45937<=p&&p<=45963||45965<=p&&p<=45991||45993<=p&&p<=46019||46021<=p&&p<=46047||46049<=p&&p<=46075||46077<=p&&p<=46103||46105<=p&&p<=46131||46133<=p&&p<=46159||46161<=p&&p<=46187||46189<=p&&p<=46215||46217<=p&&p<=46243||46245<=p&&p<=46271||46273<=p&&p<=46299||46301<=p&&p<=46327||46329<=p&&p<=46355||46357<=p&&p<=46383||46385<=p&&p<=46411||46413<=p&&p<=46439||46441<=p&&p<=46467||46469<=p&&p<=46495||46497<=p&&p<=46523||46525<=p&&p<=46551||46553<=p&&p<=46579||46581<=p&&p<=46607||46609<=p&&p<=46635||46637<=p&&p<=46663||46665<=p&&p<=46691||46693<=p&&p<=46719||46721<=p&&p<=46747||46749<=p&&p<=46775||46777<=p&&p<=46803||46805<=p&&p<=46831||46833<=p&&p<=46859||46861<=p&&p<=46887||46889<=p&&p<=46915||46917<=p&&p<=46943||46945<=p&&p<=46971||46973<=p&&p<=46999||47001<=p&&p<=47027||47029<=p&&p<=47055||47057<=p&&p<=47083||47085<=p&&p<=47111||47113<=p&&p<=47139||47141<=p&&p<=47167||47169<=p&&p<=47195||47197<=p&&p<=47223||47225<=p&&p<=47251||47253<=p&&p<=47279||47281<=p&&p<=47307||47309<=p&&p<=47335||47337<=p&&p<=47363||47365<=p&&p<=47391||47393<=p&&p<=47419||47421<=p&&p<=47447||47449<=p&&p<=47475||47477<=p&&p<=47503||47505<=p&&p<=47531||47533<=p&&p<=47559||47561<=p&&p<=47587||47589<=p&&p<=47615||47617<=p&&p<=47643||47645<=p&&p<=47671||47673<=p&&p<=47699||47701<=p&&p<=47727||47729<=p&&p<=47755||47757<=p&&p<=47783||47785<=p&&p<=47811||47813<=p&&p<=47839||47841<=p&&p<=47867||47869<=p&&p<=47895||47897<=p&&p<=47923||47925<=p&&p<=47951||47953<=p&&p<=47979||47981<=p&&p<=48007||48009<=p&&p<=48035||48037<=p&&p<=48063||48065<=p&&p<=48091||48093<=p&&p<=48119||48121<=p&&p<=48147||48149<=p&&p<=48175||48177<=p&&p<=48203||48205<=p&&p<=48231||48233<=p&&p<=48259||48261<=p&&p<=48287||48289<=p&&p<=48315||48317<=p&&p<=48343||48345<=p&&p<=48371||48373<=p&&p<=48399||48401<=p&&p<=48427||48429<=p&&p<=48455||48457<=p&&p<=48483||48485<=p&&p<=48511||48513<=p&&p<=48539||48541<=p&&p<=48567||48569<=p&&p<=48595||48597<=p&&p<=48623||48625<=p&&p<=48651||48653<=p&&p<=48679||48681<=p&&p<=48707||48709<=p&&p<=48735||48737<=p&&p<=48763||48765<=p&&p<=48791||48793<=p&&p<=48819||48821<=p&&p<=48847||48849<=p&&p<=48875||48877<=p&&p<=48903||48905<=p&&p<=48931||48933<=p&&p<=48959||48961<=p&&p<=48987||48989<=p&&p<=49015||49017<=p&&p<=49043||49045<=p&&p<=49071||49073<=p&&p<=49099||49101<=p&&p<=49127||49129<=p&&p<=49155||49157<=p&&p<=49183||49185<=p&&p<=49211||49213<=p&&p<=49239||49241<=p&&p<=49267||49269<=p&&p<=49295||49297<=p&&p<=49323||49325<=p&&p<=49351||49353<=p&&p<=49379||49381<=p&&p<=49407||49409<=p&&p<=49435||49437<=p&&p<=49463||49465<=p&&p<=49491||49493<=p&&p<=49519||49521<=p&&p<=49547||49549<=p&&p<=49575||49577<=p&&p<=49603||49605<=p&&p<=49631||49633<=p&&p<=49659||49661<=p&&p<=49687||49689<=p&&p<=49715||49717<=p&&p<=49743||49745<=p&&p<=49771||49773<=p&&p<=49799||49801<=p&&p<=49827||49829<=p&&p<=49855||49857<=p&&p<=49883||49885<=p&&p<=49911||49913<=p&&p<=49939||49941<=p&&p<=49967||49969<=p&&p<=49995||49997<=p&&p<=50023||50025<=p&&p<=50051||50053<=p&&p<=50079||50081<=p&&p<=50107||50109<=p&&p<=50135||50137<=p&&p<=50163||50165<=p&&p<=50191||50193<=p&&p<=50219||50221<=p&&p<=50247||50249<=p&&p<=50275||50277<=p&&p<=50303||50305<=p&&p<=50331||50333<=p&&p<=50359||50361<=p&&p<=50387||50389<=p&&p<=50415||50417<=p&&p<=50443||50445<=p&&p<=50471||50473<=p&&p<=50499||50501<=p&&p<=50527||50529<=p&&p<=50555||50557<=p&&p<=50583||50585<=p&&p<=50611||50613<=p&&p<=50639||50641<=p&&p<=50667||50669<=p&&p<=50695||50697<=p&&p<=50723||50725<=p&&p<=50751||50753<=p&&p<=50779||50781<=p&&p<=50807||50809<=p&&p<=50835||50837<=p&&p<=50863||50865<=p&&p<=50891||50893<=p&&p<=50919||50921<=p&&p<=50947||50949<=p&&p<=50975||50977<=p&&p<=51003||51005<=p&&p<=51031||51033<=p&&p<=51059||51061<=p&&p<=51087||51089<=p&&p<=51115||51117<=p&&p<=51143||51145<=p&&p<=51171||51173<=p&&p<=51199||51201<=p&&p<=51227||51229<=p&&p<=51255||51257<=p&&p<=51283||51285<=p&&p<=51311||51313<=p&&p<=51339||51341<=p&&p<=51367||51369<=p&&p<=51395||51397<=p&&p<=51423||51425<=p&&p<=51451||51453<=p&&p<=51479||51481<=p&&p<=51507||51509<=p&&p<=51535||51537<=p&&p<=51563||51565<=p&&p<=51591||51593<=p&&p<=51619||51621<=p&&p<=51647||51649<=p&&p<=51675||51677<=p&&p<=51703||51705<=p&&p<=51731||51733<=p&&p<=51759||51761<=p&&p<=51787||51789<=p&&p<=51815||51817<=p&&p<=51843||51845<=p&&p<=51871||51873<=p&&p<=51899||51901<=p&&p<=51927||51929<=p&&p<=51955||51957<=p&&p<=51983||51985<=p&&p<=52011||52013<=p&&p<=52039||52041<=p&&p<=52067||52069<=p&&p<=52095||52097<=p&&p<=52123||52125<=p&&p<=52151||52153<=p&&p<=52179||52181<=p&&p<=52207||52209<=p&&p<=52235||52237<=p&&p<=52263||52265<=p&&p<=52291||52293<=p&&p<=52319||52321<=p&&p<=52347||52349<=p&&p<=52375||52377<=p&&p<=52403||52405<=p&&p<=52431||52433<=p&&p<=52459||52461<=p&&p<=52487||52489<=p&&p<=52515||52517<=p&&p<=52543||52545<=p&&p<=52571||52573<=p&&p<=52599||52601<=p&&p<=52627||52629<=p&&p<=52655||52657<=p&&p<=52683||52685<=p&&p<=52711||52713<=p&&p<=52739||52741<=p&&p<=52767||52769<=p&&p<=52795||52797<=p&&p<=52823||52825<=p&&p<=52851||52853<=p&&p<=52879||52881<=p&&p<=52907||52909<=p&&p<=52935||52937<=p&&p<=52963||52965<=p&&p<=52991||52993<=p&&p<=53019||53021<=p&&p<=53047||53049<=p&&p<=53075||53077<=p&&p<=53103||53105<=p&&p<=53131||53133<=p&&p<=53159||53161<=p&&p<=53187||53189<=p&&p<=53215||53217<=p&&p<=53243||53245<=p&&p<=53271||53273<=p&&p<=53299||53301<=p&&p<=53327||53329<=p&&p<=53355||53357<=p&&p<=53383||53385<=p&&p<=53411||53413<=p&&p<=53439||53441<=p&&p<=53467||53469<=p&&p<=53495||53497<=p&&p<=53523||53525<=p&&p<=53551||53553<=p&&p<=53579||53581<=p&&p<=53607||53609<=p&&p<=53635||53637<=p&&p<=53663||53665<=p&&p<=53691||53693<=p&&p<=53719||53721<=p&&p<=53747||53749<=p&&p<=53775||53777<=p&&p<=53803||53805<=p&&p<=53831||53833<=p&&p<=53859||53861<=p&&p<=53887||53889<=p&&p<=53915||53917<=p&&p<=53943||53945<=p&&p<=53971||53973<=p&&p<=53999||54001<=p&&p<=54027||54029<=p&&p<=54055||54057<=p&&p<=54083||54085<=p&&p<=54111||54113<=p&&p<=54139||54141<=p&&p<=54167||54169<=p&&p<=54195||54197<=p&&p<=54223||54225<=p&&p<=54251||54253<=p&&p<=54279||54281<=p&&p<=54307||54309<=p&&p<=54335||54337<=p&&p<=54363||54365<=p&&p<=54391||54393<=p&&p<=54419||54421<=p&&p<=54447||54449<=p&&p<=54475||54477<=p&&p<=54503||54505<=p&&p<=54531||54533<=p&&p<=54559||54561<=p&&p<=54587||54589<=p&&p<=54615||54617<=p&&p<=54643||54645<=p&&p<=54671||54673<=p&&p<=54699||54701<=p&&p<=54727||54729<=p&&p<=54755||54757<=p&&p<=54783||54785<=p&&p<=54811||54813<=p&&p<=54839||54841<=p&&p<=54867||54869<=p&&p<=54895||54897<=p&&p<=54923||54925<=p&&p<=54951||54953<=p&&p<=54979||54981<=p&&p<=55007||55009<=p&&p<=55035||55037<=p&&p<=55063||55065<=p&&p<=55091||55093<=p&&p<=55119||55121<=p&&p<=55147||55149<=p&&p<=55175||55177<=p&&p<=55203?f:p==9757||p==9977||9994<=p&&p<=9997||p==127877||127938<=p&&p<=127940||p==127943||127946<=p&&p<=127948||128066<=p&&p<=128067||128070<=p&&p<=128080||p==128110||128112<=p&&p<=128120||p==128124||128129<=p&&p<=128131||128133<=p&&p<=128135||p==128170||128372<=p&&p<=128373||p==128378||p==128400||128405<=p&&p<=128406||128581<=p&&p<=128583||128587<=p&&p<=128591||p==128675||128692<=p&&p<=128694||p==128704||p==128716||129304<=p&&p<=129308||129310<=p&&p<=129311||p==129318||129328<=p&&p<=129337||129341<=p&&p<=129342||129489<=p&&p<=129501?g:127995<=p&&p<=127999?m:p==8205?_:p==9792||p==9794||9877<=p&&p<=9878||p==9992||p==10084||p==127752||p==127806||p==127859||p==127891||p==127908||p==127912||p==127979||p==127981||p==128139||128187<=p&&p<=128188||p==128295||p==128300||p==128488||p==128640||p==128658?y:128102<=p&&p<=128105?C:h}return this}typeof rk<"u"&&rk.exports&&(rk.exports=qYe)});var hZ=Rd((exports,module)=>{/*! + * protobuf.js v7.5.3 (c) 2016, daniel wirtz + * compiled wed, 28 may 2025 22:23:47 utc + * licensed under the bsd-3-clause license + * see: https://github.com/dcodeio/protobuf.js for details + */(function(undefined){"use strict";(function(t,n,i){function o(s){var a=n[s];return a||t[s][0].call(a=n[s]={exports:{}},o,a,a.exports),a.exports}var r=o(i[0]);r.util.global.protobuf=r,typeof define=="function"&&define.amd&&define(["long"],function(s){return s&&s.isLong&&(r.util.Long=s,r.configure()),r}),typeof module=="object"&&module&&module.exports&&(module.exports=r)})({1:[function(e,t,n){"use strict";t.exports=i;function i(o,r){for(var s=new Array(arguments.length-1),a=0,c=2,u=!0;c<arguments.length;)s[a++]=arguments[c++];return new Promise(function(h,A){s[a]=function(m){if(u)if(u=!1,m)A(m);else{for(var _=new Array(arguments.length-1),y=0;y<_.length;)_[y++]=arguments[y];h.apply(null,_)}};try{o.apply(r||null,s)}catch(g){u&&(u=!1,A(g))}})}},{}],2:[function(e,t,n){"use strict";var i=n;i.length=function(u){var f=u.length;if(!f)return 0;for(var h=0;--f%4>1&&u.charAt(f)==="=";)++h;return Math.ceil(u.length*3)/4-h};for(var o=new Array(64),r=new Array(123),s=0;s<64;)r[o[s]=s<26?s+65:s<52?s+71:s<62?s-4:s-59|43]=s++;i.encode=function(u,f,h){for(var A=null,g=[],m=0,_=0,y;f<h;){var C=u[f++];switch(_){case 0:g[m++]=o[C>>2],y=(C&3)<<4,_=1;break;case 1:g[m++]=o[y|C>>4],y=(C&15)<<2,_=2;break;case 2:g[m++]=o[y|C>>6],g[m++]=o[C&63],_=0;break}m>8191&&((A||(A=[])).push(String.fromCharCode.apply(String,g)),m=0)}return _&&(g[m++]=o[y],g[m++]=61,_===1&&(g[m++]=61)),A?(m&&A.push(String.fromCharCode.apply(String,g.slice(0,m))),A.join("")):String.fromCharCode.apply(String,g.slice(0,m))};var a="invalid encoding";i.decode=function(u,f,h){for(var A=h,g=0,m,_=0;_<u.length;){var y=u.charCodeAt(_++);if(y===61&&g>1)break;if((y=r[y])===undefined)throw Error(a);switch(g){case 0:m=y,g=1;break;case 1:f[h++]=m<<2|(y&48)>>4,m=y,g=2;break;case 2:f[h++]=(m&15)<<4|(y&60)>>2,m=y,g=3;break;case 3:f[h++]=(m&3)<<6|y,g=0;break}}if(g===1)throw Error(a);return h-A},i.test=function(u){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(u)}},{}],3:[function(e,t,n){"use strict";t.exports=i;function i(){this._listeners={}}i.prototype.on=function(r,s,a){return(this._listeners[r]||(this._listeners[r]=[])).push({fn:s,ctx:a||this}),this},i.prototype.off=function(r,s){if(r===undefined)this._listeners={};else if(s===undefined)this._listeners[r]=[];else for(var a=this._listeners[r],c=0;c<a.length;)a[c].fn===s?a.splice(c,1):++c;return this},i.prototype.emit=function(r){var s=this._listeners[r];if(s){for(var a=[],c=1;c<arguments.length;)a.push(arguments[c++]);for(c=0;c<s.length;)s[c].fn.apply(s[c++].ctx,a)}return this}},{}],4:[function(e,t,n){"use strict";t.exports=i(i);function i(c){return typeof Float32Array<"u"?function(){var u=new Float32Array([-0]),f=new Uint8Array(u.buffer),h=f[3]===128;function A(y,C,E){u[0]=y,C[E]=f[0],C[E+1]=f[1],C[E+2]=f[2],C[E+3]=f[3]}function g(y,C,E){u[0]=y,C[E]=f[3],C[E+1]=f[2],C[E+2]=f[1],C[E+3]=f[0]}c.writeFloatLE=h?A:g,c.writeFloatBE=h?g:A;function m(y,C){return f[0]=y[C],f[1]=y[C+1],f[2]=y[C+2],f[3]=y[C+3],u[0]}function _(y,C){return f[3]=y[C],f[2]=y[C+1],f[1]=y[C+2],f[0]=y[C+3],u[0]}c.readFloatLE=h?m:_,c.readFloatBE=h?_:m}():function(){function u(h,A,g,m){var _=A<0?1:0;if(_&&(A=-A),A===0)h(1/A>0?0:2147483648,g,m);else if(isNaN(A))h(2143289344,g,m);else if(A>34028234663852886e22)h((_<<31|2139095040)>>>0,g,m);else if(A<11754943508222875e-54)h((_<<31|Math.round(A/1401298464324817e-60))>>>0,g,m);else{var y=Math.floor(Math.log(A)/Math.LN2),C=Math.round(A*Math.pow(2,-y)*8388608)&8388607;h((_<<31|y+127<<23|C)>>>0,g,m)}}c.writeFloatLE=u.bind(null,o),c.writeFloatBE=u.bind(null,r);function f(h,A,g){var m=h(A,g),_=(m>>31)*2+1,y=m>>>23&255,C=m&8388607;return y===255?C?NaN:_*(1/0):y===0?_*1401298464324817e-60*C:_*Math.pow(2,y-150)*(C+8388608)}c.readFloatLE=f.bind(null,s),c.readFloatBE=f.bind(null,a)}(),typeof Float64Array<"u"?function(){var u=new Float64Array([-0]),f=new Uint8Array(u.buffer),h=f[7]===128;function A(y,C,E){u[0]=y,C[E]=f[0],C[E+1]=f[1],C[E+2]=f[2],C[E+3]=f[3],C[E+4]=f[4],C[E+5]=f[5],C[E+6]=f[6],C[E+7]=f[7]}function g(y,C,E){u[0]=y,C[E]=f[7],C[E+1]=f[6],C[E+2]=f[5],C[E+3]=f[4],C[E+4]=f[3],C[E+5]=f[2],C[E+6]=f[1],C[E+7]=f[0]}c.writeDoubleLE=h?A:g,c.writeDoubleBE=h?g:A;function m(y,C){return f[0]=y[C],f[1]=y[C+1],f[2]=y[C+2],f[3]=y[C+3],f[4]=y[C+4],f[5]=y[C+5],f[6]=y[C+6],f[7]=y[C+7],u[0]}function _(y,C){return f[7]=y[C],f[6]=y[C+1],f[5]=y[C+2],f[4]=y[C+3],f[3]=y[C+4],f[2]=y[C+5],f[1]=y[C+6],f[0]=y[C+7],u[0]}c.readDoubleLE=h?m:_,c.readDoubleBE=h?_:m}():function(){function u(h,A,g,m,_,y){var C=m<0?1:0;if(C&&(m=-m),m===0)h(0,_,y+A),h(1/m>0?0:2147483648,_,y+g);else if(isNaN(m))h(0,_,y+A),h(2146959360,_,y+g);else if(m>17976931348623157e292)h(0,_,y+A),h((C<<31|2146435072)>>>0,_,y+g);else{var E;if(m<22250738585072014e-324)E=m/5e-324,h(E>>>0,_,y+A),h((C<<31|E/4294967296)>>>0,_,y+g);else{var I=Math.floor(Math.log(m)/Math.LN2);I===1024&&(I=1023),E=m*Math.pow(2,-I),h(E*4503599627370496>>>0,_,y+A),h((C<<31|I+1023<<20|E*1048576&1048575)>>>0,_,y+g)}}}c.writeDoubleLE=u.bind(null,o,0,4),c.writeDoubleBE=u.bind(null,r,4,0);function f(h,A,g,m,_){var y=h(m,_+A),C=h(m,_+g),E=(C>>31)*2+1,I=C>>>20&2047,b=4294967296*(C&1048575)+y;return I===2047?b?NaN:E*(1/0):I===0?E*5e-324*b:E*Math.pow(2,I-1075)*(b+4503599627370496)}c.readDoubleLE=f.bind(null,s,0,4),c.readDoubleBE=f.bind(null,a,4,0)}(),c}function o(c,u,f){u[f]=c&255,u[f+1]=c>>>8&255,u[f+2]=c>>>16&255,u[f+3]=c>>>24}function r(c,u,f){u[f]=c>>>24,u[f+1]=c>>>16&255,u[f+2]=c>>>8&255,u[f+3]=c&255}function s(c,u){return(c[u]|c[u+1]<<8|c[u+2]<<16|c[u+3]<<24)>>>0}function a(c,u){return(c[u]<<24|c[u+1]<<16|c[u+2]<<8|c[u+3])>>>0}},{}],5:[function(require,module,exports){"use strict";module.exports=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(e){}return null}},{}],6:[function(e,t,n){"use strict";t.exports=i;function i(o,r,s){var a=s||8192,c=a>>>1,u=null,f=a;return function(A){if(A<1||A>c)return o(A);f+A>a&&(u=o(a),f=0);var g=r.call(u,f,f+=A);return f&7&&(f=(f|7)+1),g}}},{}],7:[function(e,t,n){"use strict";var i=n;i.length=function(r){for(var s=0,a=0,c=0;c<r.length;++c)a=r.charCodeAt(c),a<128?s+=1:a<2048?s+=2:(a&64512)===55296&&(r.charCodeAt(c+1)&64512)===56320?(++c,s+=4):s+=3;return s},i.read=function(r,s,a){var c=a-s;if(c<1)return"";for(var u=null,f=[],h=0,A;s<a;)A=r[s++],A<128?f[h++]=A:A>191&&A<224?f[h++]=(A&31)<<6|r[s++]&63:A>239&&A<365?(A=((A&7)<<18|(r[s++]&63)<<12|(r[s++]&63)<<6|r[s++]&63)-65536,f[h++]=55296+(A>>10),f[h++]=56320+(A&1023)):f[h++]=(A&15)<<12|(r[s++]&63)<<6|r[s++]&63,h>8191&&((u||(u=[])).push(String.fromCharCode.apply(String,f)),h=0);return u?(h&&u.push(String.fromCharCode.apply(String,f.slice(0,h))),u.join("")):String.fromCharCode.apply(String,f.slice(0,h))},i.write=function(r,s,a){for(var c=a,u,f,h=0;h<r.length;++h)u=r.charCodeAt(h),u<128?s[a++]=u:u<2048?(s[a++]=u>>6|192,s[a++]=u&63|128):(u&64512)===55296&&((f=r.charCodeAt(h+1))&64512)===56320?(u=65536+((u&1023)<<10)+(f&1023),++h,s[a++]=u>>18|240,s[a++]=u>>12&63|128,s[a++]=u>>6&63|128,s[a++]=u&63|128):(s[a++]=u>>12|224,s[a++]=u>>6&63|128,s[a++]=u&63|128);return a-c}},{}],8:[function(e,t,n){"use strict";var i=n;i.build="minimal",i.Writer=e(16),i.BufferWriter=e(17),i.Reader=e(9),i.BufferReader=e(10),i.util=e(15),i.rpc=e(12),i.roots=e(11),i.configure=o;function o(){i.util._configure(),i.Writer._configure(i.BufferWriter),i.Reader._configure(i.BufferReader)}o()},{10:10,11:11,12:12,15:15,16:16,17:17,9:9}],9:[function(e,t,n){"use strict";t.exports=c;var i=e(15),o,r=i.LongBits,s=i.utf8;function a(m,_){return RangeError("index out of range: "+m.pos+" + "+(_||1)+" > "+m.len)}function c(m){this.buf=m,this.pos=0,this.len=m.length}var u=typeof Uint8Array<"u"?function(_){if(_ instanceof Uint8Array||Array.isArray(_))return new c(_);throw Error("illegal buffer")}:function(_){if(Array.isArray(_))return new c(_);throw Error("illegal buffer")},f=function(){return i.Buffer?function(y){return(c.create=function(E){return i.Buffer.isBuffer(E)?new o(E):u(E)})(y)}:u};c.create=f(),c.prototype._slice=i.Array.prototype.subarray||i.Array.prototype.slice,c.prototype.uint32=function(){var _=4294967295;return function(){if(_=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(_=(_|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(_=(_|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(_=(_|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(_=(_|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return _;if((this.pos+=5)>this.len)throw this.pos=this.len,a(this,10);return _}}(),c.prototype.int32=function(){return this.uint32()|0},c.prototype.sint32=function(){var _=this.uint32();return _>>>1^-(_&1)|0};function h(){var m=new r(0,0),_=0;if(this.len-this.pos>4){for(;_<4;++_)if(m.lo=(m.lo|(this.buf[this.pos]&127)<<_*7)>>>0,this.buf[this.pos++]<128)return m;if(m.lo=(m.lo|(this.buf[this.pos]&127)<<28)>>>0,m.hi=(m.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return m;_=0}else{for(;_<3;++_){if(this.pos>=this.len)throw a(this);if(m.lo=(m.lo|(this.buf[this.pos]&127)<<_*7)>>>0,this.buf[this.pos++]<128)return m}return m.lo=(m.lo|(this.buf[this.pos++]&127)<<_*7)>>>0,m}if(this.len-this.pos>4){for(;_<5;++_)if(m.hi=(m.hi|(this.buf[this.pos]&127)<<_*7+3)>>>0,this.buf[this.pos++]<128)return m}else for(;_<5;++_){if(this.pos>=this.len)throw a(this);if(m.hi=(m.hi|(this.buf[this.pos]&127)<<_*7+3)>>>0,this.buf[this.pos++]<128)return m}throw Error("invalid varint encoding")}c.prototype.bool=function(){return this.uint32()!==0};function A(m,_){return(m[_-4]|m[_-3]<<8|m[_-2]<<16|m[_-1]<<24)>>>0}c.prototype.fixed32=function(){if(this.pos+4>this.len)throw a(this,4);return A(this.buf,this.pos+=4)},c.prototype.sfixed32=function(){if(this.pos+4>this.len)throw a(this,4);return A(this.buf,this.pos+=4)|0};function g(){if(this.pos+8>this.len)throw a(this,8);return new r(A(this.buf,this.pos+=4),A(this.buf,this.pos+=4))}c.prototype.float=function(){if(this.pos+4>this.len)throw a(this,4);var _=i.float.readFloatLE(this.buf,this.pos);return this.pos+=4,_},c.prototype.double=function(){if(this.pos+8>this.len)throw a(this,4);var _=i.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,_},c.prototype.bytes=function(){var _=this.uint32(),y=this.pos,C=this.pos+_;if(C>this.len)throw a(this,_);if(this.pos+=_,Array.isArray(this.buf))return this.buf.slice(y,C);if(y===C){var E=i.Buffer;return E?E.alloc(0):new this.buf.constructor(0)}return this._slice.call(this.buf,y,C)},c.prototype.string=function(){var _=this.bytes();return s.read(_,0,_.length)},c.prototype.skip=function(_){if(typeof _=="number"){if(this.pos+_>this.len)throw a(this,_);this.pos+=_}else do if(this.pos>=this.len)throw a(this);while(this.buf[this.pos++]&128);return this},c.prototype.skipType=function(m){switch(m){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(m=this.uint32()&7)!==4;)this.skipType(m);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+m+" at offset "+this.pos)}return this},c._configure=function(m){o=m,c.create=f(),o._configure();var _=i.Long?"toLong":"toNumber";i.merge(c.prototype,{int64:function(){return h.call(this)[_](!1)},uint64:function(){return h.call(this)[_](!0)},sint64:function(){return h.call(this).zzDecode()[_](!1)},fixed64:function(){return g.call(this)[_](!0)},sfixed64:function(){return g.call(this)[_](!1)}})}},{15:15}],10:[function(e,t,n){"use strict";t.exports=r;var i=e(9);(r.prototype=Object.create(i.prototype)).constructor=r;var o=e(15);function r(s){i.call(this,s)}r._configure=function(){o.Buffer&&(r.prototype._slice=o.Buffer.prototype.slice)},r.prototype.string=function(){var a=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+a,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+a,this.len))},r._configure()},{15:15,9:9}],11:[function(e,t,n){"use strict";t.exports={}},{}],12:[function(e,t,n){"use strict";var i=n;i.Service=e(13)},{13:13}],13:[function(e,t,n){"use strict";t.exports=o;var i=e(15);(o.prototype=Object.create(i.EventEmitter.prototype)).constructor=o;function o(r,s,a){if(typeof r!="function")throw TypeError("rpcImpl must be a function");i.EventEmitter.call(this),this.rpcImpl=r,this.requestDelimited=!!s,this.responseDelimited=!!a}o.prototype.rpcCall=function r(s,a,c,u,f){if(!u)throw TypeError("request must be specified");var h=this;if(!f)return i.asPromise(r,h,s,a,c,u);if(!h.rpcImpl)return setTimeout(function(){f(Error("already ended"))},0),undefined;try{return h.rpcImpl(s,a[h.requestDelimited?"encodeDelimited":"encode"](u).finish(),function(g,m){if(g)return h.emit("error",g,s),f(g);if(m===null)return h.end(!0),undefined;if(!(m instanceof c))try{m=c[h.responseDelimited?"decodeDelimited":"decode"](m)}catch(_){return h.emit("error",_,s),f(_)}return h.emit("data",m,s),f(null,m)})}catch(A){return h.emit("error",A,s),setTimeout(function(){f(A)},0),undefined}},o.prototype.end=function(s){return this.rpcImpl&&(s||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}},{15:15}],14:[function(e,t,n){"use strict";t.exports=o;var i=e(15);function o(c,u){this.lo=c>>>0,this.hi=u>>>0}var r=o.zero=new o(0,0);r.toNumber=function(){return 0},r.zzEncode=r.zzDecode=function(){return this},r.length=function(){return 1};var s=o.zeroHash="\0\0\0\0\0\0\0\0";o.fromNumber=function(u){if(u===0)return r;var f=u<0;f&&(u=-u);var h=u>>>0,A=(u-h)/4294967296>>>0;return f&&(A=~A>>>0,h=~h>>>0,++h>4294967295&&(h=0,++A>4294967295&&(A=0))),new o(h,A)},o.from=function(u){if(typeof u=="number")return o.fromNumber(u);if(i.isString(u))if(i.Long)u=i.Long.fromString(u);else return o.fromNumber(parseInt(u,10));return u.low||u.high?new o(u.low>>>0,u.high>>>0):r},o.prototype.toNumber=function(u){if(!u&&this.hi>>>31){var f=~this.lo+1>>>0,h=~this.hi>>>0;return f||(h=h+1>>>0),-(f+h*4294967296)}return this.lo+this.hi*4294967296},o.prototype.toLong=function(u){return i.Long?new i.Long(this.lo|0,this.hi|0,!!u):{low:this.lo|0,high:this.hi|0,unsigned:!!u}};var a=String.prototype.charCodeAt;o.fromHash=function(u){return u===s?r:new o((a.call(u,0)|a.call(u,1)<<8|a.call(u,2)<<16|a.call(u,3)<<24)>>>0,(a.call(u,4)|a.call(u,5)<<8|a.call(u,6)<<16|a.call(u,7)<<24)>>>0)},o.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},o.prototype.zzEncode=function(){var u=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^u)>>>0,this.lo=(this.lo<<1^u)>>>0,this},o.prototype.zzDecode=function(){var u=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^u)>>>0,this.hi=(this.hi>>>1^u)>>>0,this},o.prototype.length=function(){var u=this.lo,f=(this.lo>>>28|this.hi<<4)>>>0,h=this.hi>>>24;return h===0?f===0?u<16384?u<128?1:2:u<2097152?3:4:f<16384?f<128?5:6:f<2097152?7:8:h<128?9:10}},{15:15}],15:[function(e,t,n){"use strict";var i=n;i.asPromise=e(1),i.base64=e(2),i.EventEmitter=e(3),i.float=e(4),i.inquire=e(5),i.utf8=e(7),i.pool=e(6),i.LongBits=e(14),i.isNode=!!(typeof global<"u"&&global&&global.process&&global.process.versions&&global.process.versions.node),i.global=i.isNode&&global||typeof window<"u"&&window||typeof self<"u"&&self||this,i.emptyArray=Object.freeze?Object.freeze([]):[],i.emptyObject=Object.freeze?Object.freeze({}):{},i.isInteger=Number.isInteger||function(a){return typeof a=="number"&&isFinite(a)&&Math.floor(a)===a},i.isString=function(a){return typeof a=="string"||a instanceof String},i.isObject=function(a){return a&&typeof a=="object"},i.isset=i.isSet=function(a,c){var u=a[c];return u!=null&&a.hasOwnProperty(c)?typeof u!="object"||(Array.isArray(u)?u.length:Object.keys(u).length)>0:!1},i.Buffer=function(){try{var s=i.inquire("buffer").Buffer;return s.prototype.utf8Write?s:null}catch{return null}}(),i._Buffer_from=null,i._Buffer_allocUnsafe=null,i.newBuffer=function(a){return typeof a=="number"?i.Buffer?i._Buffer_allocUnsafe(a):new i.Array(a):i.Buffer?i._Buffer_from(a):typeof Uint8Array>"u"?a:new Uint8Array(a)},i.Array=typeof Uint8Array<"u"?Uint8Array:Array,i.Long=i.global.dcodeIO&&i.global.dcodeIO.Long||i.global.Long||i.inquire("long"),i.key2Re=/^true|false|0|1$/,i.key32Re=/^-?(?:0|[1-9][0-9]*)$/,i.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,i.longToHash=function(a){return a?i.LongBits.from(a).toHash():i.LongBits.zeroHash},i.longFromHash=function(a,c){var u=i.LongBits.fromHash(a);return i.Long?i.Long.fromBits(u.lo,u.hi,c):u.toNumber(!!c)};function o(s,a,c){for(var u=Object.keys(a),f=0;f<u.length;++f)(s[u[f]]===undefined||!c)&&(s[u[f]]=a[u[f]]);return s}i.merge=o,i.lcFirst=function(a){return a.charAt(0).toLowerCase()+a.substring(1)};function r(s){function a(c,u){if(!(this instanceof a))return new a(c,u);Object.defineProperty(this,"message",{get:function(){return c}}),Error.captureStackTrace?Error.captureStackTrace(this,a):Object.defineProperty(this,"stack",{value:new Error().stack||""}),u&&o(this,u)}return a.prototype=Object.create(Error.prototype,{constructor:{value:a,writable:!0,enumerable:!1,configurable:!0},name:{get:function(){return s},set:undefined,enumerable:!1,configurable:!0},toString:{value:function(){return this.name+": "+this.message},writable:!0,enumerable:!1,configurable:!0}}),a}i.newError=r,i.ProtocolError=r("ProtocolError"),i.oneOfGetter=function(a){for(var c={},u=0;u<a.length;++u)c[a[u]]=1;return function(){for(var f=Object.keys(this),h=f.length-1;h>-1;--h)if(c[f[h]]===1&&this[f[h]]!==undefined&&this[f[h]]!==null)return f[h]}},i.oneOfSetter=function(a){return function(c){for(var u=0;u<a.length;++u)a[u]!==c&&delete this[a[u]]}},i.toJSONOptions={longs:String,enums:String,bytes:String,json:!0},i._configure=function(){var s=i.Buffer;if(!s){i._Buffer_from=i._Buffer_allocUnsafe=null;return}i._Buffer_from=s.from!==Uint8Array.from&&s.from||function(c,u){return new s(c,u)},i._Buffer_allocUnsafe=s.allocUnsafe||function(c){return new s(c)}}},{1:1,14:14,2:2,3:3,4:4,5:5,6:6,7:7}],16:[function(e,t,n){"use strict";t.exports=h;var i=e(15),o,r=i.LongBits,s=i.base64,a=i.utf8;function c(I,b,S){this.fn=I,this.len=b,this.next=undefined,this.val=S}function u(){}function f(I){this.head=I.head,this.tail=I.tail,this.len=I.len,this.next=I.states}function h(){this.len=0,this.head=new c(u,0,0),this.tail=this.head,this.states=null}var A=function(){return i.Buffer?function(){return(h.create=function(){return new o})()}:function(){return new h}};h.create=A(),h.alloc=function(b){return new i.Array(b)},i.Array!==Array&&(h.alloc=i.pool(h.alloc,i.Array.prototype.subarray)),h.prototype._push=function(b,S,B){return this.tail=this.tail.next=new c(b,S,B),this.len+=S,this};function g(I,b,S){b[S]=I&255}function m(I,b,S){for(;I>127;)b[S++]=I&127|128,I>>>=7;b[S]=I}function _(I,b){this.len=I,this.next=undefined,this.val=b}_.prototype=Object.create(c.prototype),_.prototype.fn=m,h.prototype.uint32=function(b){return this.len+=(this.tail=this.tail.next=new _((b=b>>>0)<128?1:b<16384?2:b<2097152?3:b<268435456?4:5,b)).len,this},h.prototype.int32=function(b){return b<0?this._push(y,10,r.fromNumber(b)):this.uint32(b)},h.prototype.sint32=function(b){return this.uint32((b<<1^b>>31)>>>0)};function y(I,b,S){for(;I.hi;)b[S++]=I.lo&127|128,I.lo=(I.lo>>>7|I.hi<<25)>>>0,I.hi>>>=7;for(;I.lo>127;)b[S++]=I.lo&127|128,I.lo=I.lo>>>7;b[S++]=I.lo}h.prototype.uint64=function(b){var S=r.from(b);return this._push(y,S.length(),S)},h.prototype.int64=h.prototype.uint64,h.prototype.sint64=function(b){var S=r.from(b).zzEncode();return this._push(y,S.length(),S)},h.prototype.bool=function(b){return this._push(g,1,b?1:0)};function C(I,b,S){b[S]=I&255,b[S+1]=I>>>8&255,b[S+2]=I>>>16&255,b[S+3]=I>>>24}h.prototype.fixed32=function(b){return this._push(C,4,b>>>0)},h.prototype.sfixed32=h.prototype.fixed32,h.prototype.fixed64=function(b){var S=r.from(b);return this._push(C,4,S.lo)._push(C,4,S.hi)},h.prototype.sfixed64=h.prototype.fixed64,h.prototype.float=function(b){return this._push(i.float.writeFloatLE,4,b)},h.prototype.double=function(b){return this._push(i.float.writeDoubleLE,8,b)};var E=i.Array.prototype.set?function(b,S,B){S.set(b,B)}:function(b,S,B){for(var v=0;v<b.length;++v)S[B+v]=b[v]};h.prototype.bytes=function(b){var S=b.length>>>0;if(!S)return this._push(g,1,0);if(i.isString(b)){var B=h.alloc(S=s.length(b));s.decode(b,B,0),b=B}return this.uint32(S)._push(E,S,b)},h.prototype.string=function(b){var S=a.length(b);return S?this.uint32(S)._push(a.write,S,b):this._push(g,1,0)},h.prototype.fork=function(){return this.states=new f(this),this.head=this.tail=new c(u,0,0),this.len=0,this},h.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new c(u,0,0),this.len=0),this},h.prototype.ldelim=function(){var b=this.head,S=this.tail,B=this.len;return this.reset().uint32(B),B&&(this.tail.next=b.next,this.tail=S,this.len+=B),this},h.prototype.finish=function(){for(var b=this.head.next,S=this.constructor.alloc(this.len),B=0;b;)b.fn(b.val,S,B),B+=b.len,b=b.next;return S},h._configure=function(I){o=I,h.create=A(),o._configure()}},{15:15}],17:[function(e,t,n){"use strict";t.exports=r;var i=e(16);(r.prototype=Object.create(i.prototype)).constructor=r;var o=e(15);function r(){i.call(this)}r._configure=function(){r.alloc=o._Buffer_allocUnsafe,r.writeBytesBuffer=o.Buffer&&o.Buffer.prototype instanceof Uint8Array&&o.Buffer.prototype.set.name==="set"?function(c,u,f){u.set(c,f)}:function(c,u,f){if(c.copy)c.copy(u,f,0,c.length);else for(var h=0;h<c.length;)u[f++]=c[h++]}},r.prototype.bytes=function(c){o.isString(c)&&(c=o._Buffer_from(c,"base64"));var u=c.length>>>0;return this.uint32(u),u&&this._push(r.writeBytesBuffer,u,c),this};function s(a,c,u){a.length<40?o.utf8.write(a,c,u):c.utf8Write?c.utf8Write(a,u):c.write(a,u)}r.prototype.string=function(c){var u=o.Buffer.byteLength(c);return this.uint32(u),u&&this._push(s,u,c),this},r._configure()},{15:15,16:16}]},{},[8])})()});var aTe=Rd((n4i,aH)=>{/* Copyright 2015-2018 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */(function(){var e=function(){var o={};o.defaultNoDataValue=-34027999387901484e22,o.decode=function(f,h){h=h||{};var A=h.encodedMaskData||h.encodedMaskData===null,g=c(f,h.inputOffset||0,A),m=h.noDataValue!==null?h.noDataValue:o.defaultNoDataValue,_=r(g,h.pixelType||Float32Array,h.encodedMaskData,m,h.returnMask),y={width:g.width,height:g.height,pixelData:_.resultPixels,minValue:_.minValue,maxValue:g.pixels.maxValue,noDataValue:m};return _.resultMask&&(y.maskData=_.resultMask),h.returnEncodedMask&&g.mask&&(y.encodedMaskData=g.mask.bitset?g.mask.bitset:null),h.returnFileInfo&&(y.fileInfo=s(g),h.computeUsedBitDepths&&(y.fileInfo.bitDepths=a(g))),y};var r=function(f,h,A,g,m){var _=0,y=f.pixels.numBlocksX,C=f.pixels.numBlocksY,E=Math.floor(f.width/y),I=Math.floor(f.height/C),b=2*f.maxZError,S=Number.MAX_VALUE,B;A=A||(f.mask?f.mask.bitset:null);var v,P;v=new h(f.width*f.height),m&&A&&(P=new Uint8Array(f.width*f.height));for(var N=new Float32Array(E*I),L,p,x=0;x<=C;x++){var T=x!==C?I:f.height%C;if(T!==0)for(var w=0;w<=y;w++){var M=w!==y?E:f.width%y;if(M!==0){var O=x*f.width*I+w*E,U=f.width-M,Q=f.pixels.blocks[_],z,F,H;Q.encoding<2?(Q.encoding===0?z=Q.rawData:(u(Q.stuffedData,Q.bitsPerPixel,Q.numValidPixels,Q.offset,b,N,f.pixels.maxValue),z=N),F=0):Q.encoding===2?H=0:H=Q.offset;var W;if(A)for(p=0;p<T;p++){for(O&7&&(W=A[O>>3],W<<=O&7),L=0;L<M;L++)O&7||(W=A[O>>3]),W&128?(P&&(P[O]=1),B=Q.encoding<2?z[F++]:H,S=S>B?B:S,v[O++]=B):(P&&(P[O]=0),v[O++]=g),W<<=1;O+=U}else if(Q.encoding<2)for(p=0;p<T;p++){for(L=0;L<M;L++)B=z[F++],S=S>B?B:S,v[O++]=B;O+=U}else for(S=S>H?H:S,p=0;p<T;p++){for(L=0;L<M;L++)v[O++]=H;O+=U}if(Q.encoding===1&&F!==Q.numValidPixels)throw"Block and Mask do not match";_++}}}return{resultPixels:v,resultMask:P,minValue:S}},s=function(f){return{fileIdentifierString:f.fileIdentifierString,fileVersion:f.fileVersion,imageType:f.imageType,height:f.height,width:f.width,maxZError:f.maxZError,eofOffset:f.eofOffset,mask:f.mask?{numBlocksX:f.mask.numBlocksX,numBlocksY:f.mask.numBlocksY,numBytes:f.mask.numBytes,maxValue:f.mask.maxValue}:null,pixels:{numBlocksX:f.pixels.numBlocksX,numBlocksY:f.pixels.numBlocksY,numBytes:f.pixels.numBytes,maxValue:f.pixels.maxValue,noDataValue:f.noDataValue}}},a=function(f){for(var h=f.pixels.numBlocksX*f.pixels.numBlocksY,A={},g=0;g<h;g++){var m=f.pixels.blocks[g];m.encoding===0?A.float32=!0:m.encoding===1?A[m.bitsPerPixel]=!0:A[0]=!0}return Object.keys(A)},c=function(f,h,A){var g={},m=new Uint8Array(f,h,10);if(g.fileIdentifierString=String.fromCharCode.apply(null,m),g.fileIdentifierString.trim()!=="CntZImage")throw"Unexpected file identifier string: "+g.fileIdentifierString;h+=10;var _=new DataView(f,h,24);if(g.fileVersion=_.getInt32(0,!0),g.imageType=_.getInt32(4,!0),g.height=_.getUint32(8,!0),g.width=_.getUint32(12,!0),g.maxZError=_.getFloat64(16,!0),h+=24,!A)if(_=new DataView(f,h,16),g.mask={},g.mask.numBlocksY=_.getUint32(0,!0),g.mask.numBlocksX=_.getUint32(4,!0),g.mask.numBytes=_.getUint32(8,!0),g.mask.maxValue=_.getFloat32(12,!0),h+=16,g.mask.numBytes>0){var y=new Uint8Array(Math.ceil(g.width*g.height/8));_=new DataView(f,h,g.mask.numBytes);var C=_.getInt16(0,!0),E=2,I=0;do{if(C>0)for(;C--;)y[I++]=_.getUint8(E++);else{var b=_.getUint8(E++);for(C=-C;C--;)y[I++]=b}C=_.getInt16(E,!0),E+=2}while(E<g.mask.numBytes);if(C!==-32768||I<y.length)throw"Unexpected end of mask RLE encoding";g.mask.bitset=y,h+=g.mask.numBytes}else(g.mask.numBytes|g.mask.numBlocksY|g.mask.maxValue)===0&&(g.mask.bitset=new Uint8Array(Math.ceil(g.width*g.height/8)));_=new DataView(f,h,16),g.pixels={},g.pixels.numBlocksY=_.getUint32(0,!0),g.pixels.numBlocksX=_.getUint32(4,!0),g.pixels.numBytes=_.getUint32(8,!0),g.pixels.maxValue=_.getFloat32(12,!0),h+=16;var S=g.pixels.numBlocksX,B=g.pixels.numBlocksY,v=S+(g.width%S>0?1:0),P=B+(g.height%B>0?1:0);g.pixels.blocks=new Array(v*P);for(var N=0,L=0;L<P;L++)for(var p=0;p<v;p++){var x=0,T=f.byteLength-h;_=new DataView(f,h,Math.min(10,T));var w={};g.pixels.blocks[N++]=w;var M=_.getUint8(0);if(x++,w.encoding=M&63,w.encoding>3)throw"Invalid block encoding ("+w.encoding+")";if(w.encoding===2){h++;continue}if(M!==0&&M!==2){if(M>>=6,w.offsetType=M,M===2)w.offset=_.getInt8(1),x++;else if(M===1)w.offset=_.getInt16(1,!0),x+=2;else if(M===0)w.offset=_.getFloat32(1,!0),x+=4;else throw"Invalid block offset type";if(w.encoding===1)if(M=_.getUint8(x),x++,w.bitsPerPixel=M&63,M>>=6,w.numValidPixelsType=M,M===2)w.numValidPixels=_.getUint8(x),x++;else if(M===1)w.numValidPixels=_.getUint16(x,!0),x+=2;else if(M===0)w.numValidPixels=_.getUint32(x,!0),x+=4;else throw"Invalid valid pixel count type"}if(h+=x,w.encoding!==3){var O,U;if(w.encoding===0){var Q=(g.pixels.numBytes-1)/4;if(Q!==Math.floor(Q))throw"uncompressed block has invalid length";O=new ArrayBuffer(Q*4),U=new Uint8Array(O),U.set(new Uint8Array(f,h,Q*4));var z=new Float32Array(O);w.rawData=z,h+=Q*4}else if(w.encoding===1){var F=Math.ceil(w.numValidPixels*w.bitsPerPixel/8),H=Math.ceil(F/4);O=new ArrayBuffer(H*4),U=new Uint8Array(O),U.set(new Uint8Array(f,h,F)),w.stuffedData=new Uint32Array(O),h+=F}}}return g.eofOffset=h,g},u=function(f,h,A,g,m,_,y){var C=(1<<h)-1,E=0,I,b=0,S,B,v=Math.ceil((y-g)/m),P=f.length*4-Math.ceil(h*A/8);for(f[f.length-1]<<=8*P,I=0;I<A;I++){if(b===0&&(B=f[E++],b=32),b>=h)S=B>>>b-h&C,b-=h;else{var N=h-b;S=(B&C)<<N&C,B=f[E++],b=32-N,S+=B>>>b}_[I]=S<v?g+S*m:y}return _};return o}(),t=function(){"use strict";var o={unstuff:function(c,u,f,h,A,g,m,_){var y=(1<<f)-1,C=0,E,I=0,b,S,B,v,P=c.length*4-Math.ceil(f*h/8);if(c[c.length-1]<<=8*P,A)for(E=0;E<h;E++)I===0&&(S=c[C++],I=32),I>=f?(b=S>>>I-f&y,I-=f):(B=f-I,b=(S&y)<<B&y,S=c[C++],I=32-B,b+=S>>>I),u[E]=A[b];else for(v=Math.ceil((_-g)/m),E=0;E<h;E++)I===0&&(S=c[C++],I=32),I>=f?(b=S>>>I-f&y,I-=f):(B=f-I,b=(S&y)<<B&y,S=c[C++],I=32-B,b+=S>>>I),u[E]=b<v?g+b*m:_},unstuffLUT:function(c,u,f,h,A,g){var m=(1<<u)-1,_=0,y=0,C=0,E=0,I=0,b,S=[],B=c.length*4-Math.ceil(u*f/8);c[c.length-1]<<=8*B;var v=Math.ceil((g-h)/A);for(y=0;y<f;y++)E===0&&(b=c[_++],E=32),E>=u?(I=b>>>E-u&m,E-=u):(C=u-E,I=(b&m)<<C&m,b=c[_++],E=32-C,I+=b>>>E),S[y]=I<v?h+I*A:g;return S.unshift(h),S},unstuff2:function(c,u,f,h,A,g,m,_){var y=(1<<f)-1,C=0,E,I=0,b=0,S,B,v;if(A)for(E=0;E<h;E++)I===0&&(B=c[C++],I=32,b=0),I>=f?(S=B>>>b&y,I-=f,b+=f):(v=f-I,S=B>>>b&y,B=c[C++],I=32-v,S|=(B&(1<<v)-1)<<f-v,b=v),u[E]=A[S];else{var P=Math.ceil((_-g)/m);for(E=0;E<h;E++)I===0&&(B=c[C++],I=32,b=0),I>=f?(S=B>>>b&y,I-=f,b+=f):(v=f-I,S=B>>>b&y,B=c[C++],I=32-v,S|=(B&(1<<v)-1)<<f-v,b=v),u[E]=S<P?g+S*m:_}return u},unstuffLUT2:function(c,u,f,h,A,g){var m=(1<<u)-1,_=0,y=0,C=0,E=0,I=0,b=0,S,B=[],v=Math.ceil((g-h)/A);for(y=0;y<f;y++)E===0&&(S=c[_++],E=32,b=0),E>=u?(I=S>>>b&m,E-=u,b+=u):(C=u-E,I=S>>>b&m,S=c[_++],E=32-C,I|=(S&(1<<C)-1)<<u-C,b=C),B[y]=I<v?h+I*A:g;return B.unshift(h),B},originalUnstuff:function(c,u,f,h){var A=(1<<f)-1,g=0,m,_=0,y,C,E,I=c.length*4-Math.ceil(f*h/8);for(c[c.length-1]<<=8*I,m=0;m<h;m++)_===0&&(C=c[g++],_=32),_>=f?(y=C>>>_-f&A,_-=f):(E=f-_,y=(C&A)<<E&A,C=c[g++],_=32-E,y+=C>>>_),u[m]=y;return u},originalUnstuff2:function(c,u,f,h){var A=(1<<f)-1,g=0,m,_=0,y=0,C,E,I;for(m=0;m<h;m++)_===0&&(E=c[g++],_=32,y=0),_>=f?(C=E>>>y&A,_-=f,y+=f):(I=f-_,C=E>>>y&A,E=c[g++],_=32-I,C|=(E&(1<<I)-1)<<f-I,y=I),u[m]=C;return u}},r={HUFFMAN_LUT_BITS_MAX:12,computeChecksumFletcher32:function(c){for(var u=65535,f=65535,h=c.length,A=Math.floor(h/2),g=0;A;){var m=A>=359?359:A;A-=m;do u+=c[g++]<<8,f+=u+=c[g++];while(--m);u=(u&65535)+(u>>>16),f=(f&65535)+(f>>>16)}return h&1&&(f+=u+=c[g]<<8),u=(u&65535)+(u>>>16),f=(f&65535)+(f>>>16),(f<<16|u)>>>0},readHeaderInfo:function(c,u){var f=u.ptr,h=new Uint8Array(c,f,6),A={};if(A.fileIdentifierString=String.fromCharCode.apply(null,h),A.fileIdentifierString.lastIndexOf("Lerc2",0)!==0)throw"Unexpected file identifier string (expect Lerc2 ): "+A.fileIdentifierString;f+=6;var g=new DataView(c,f,8),m=g.getInt32(0,!0);A.fileVersion=m,f+=4,m>=3&&(A.checksum=g.getUint32(4,!0),f+=4),g=new DataView(c,f,12),A.height=g.getUint32(0,!0),A.width=g.getUint32(4,!0),f+=8,m>=4?(A.numDims=g.getUint32(8,!0),f+=4):A.numDims=1,g=new DataView(c,f,40),A.numValidPixel=g.getUint32(0,!0),A.microBlockSize=g.getInt32(4,!0),A.blobSize=g.getInt32(8,!0),A.imageType=g.getInt32(12,!0),A.maxZError=g.getFloat64(16,!0),A.zMin=g.getFloat64(24,!0),A.zMax=g.getFloat64(32,!0),f+=40,u.headerInfo=A,u.ptr=f;var _,y;if(m>=3&&(y=m>=4?52:48,_=this.computeChecksumFletcher32(new Uint8Array(c,f-y,A.blobSize-14)),_!==A.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(c,u){var f=u.headerInfo,h=this.getDataTypeArray(f.imageType),A=f.numDims*this.getDataTypeSize(f.imageType),g=this.readSubArray(c,u.ptr,h,A),m=this.readSubArray(c,u.ptr+A,h,A);u.ptr+=2*A;var _,y=!0;for(_=0;_<f.numDims;_++)if(g[_]!==m[_]){y=!1;break}return f.minValues=g,f.maxValues=m,y},readSubArray:function(c,u,f,h){var A;if(f===Uint8Array)A=new Uint8Array(c,u,h);else{var g=new ArrayBuffer(h),m=new Uint8Array(g);m.set(new Uint8Array(c,u,h)),A=new f(g)}return A},readMask:function(c,u){var f=u.ptr,h=u.headerInfo,A=h.width*h.height,g=h.numValidPixel,m=new DataView(c,f,4),_={};if(_.numBytes=m.getUint32(0,!0),f+=4,(g===0||A===g)&&_.numBytes!==0)throw"invalid mask";var y,C;if(g===0)y=new Uint8Array(Math.ceil(A/8)),_.bitset=y,C=new Uint8Array(A),u.pixels.resultMask=C,f+=_.numBytes;else if(_.numBytes>0){y=new Uint8Array(Math.ceil(A/8)),m=new DataView(c,f,_.numBytes);var E=m.getInt16(0,!0),I=2,b=0,S=0;do{if(E>0)for(;E--;)y[b++]=m.getUint8(I++);else for(S=m.getUint8(I++),E=-E;E--;)y[b++]=S;E=m.getInt16(I,!0),I+=2}while(I<_.numBytes);if(E!==-32768||b<y.length)throw"Unexpected end of mask RLE encoding";C=new Uint8Array(A);var B=0,v=0;for(v=0;v<A;v++)v&7?(B=y[v>>3],B<<=v&7):B=y[v>>3],B&128&&(C[v]=1);u.pixels.resultMask=C,_.bitset=y,f+=_.numBytes}return u.ptr=f,u.mask=_,!0},readDataOneSweep:function(c,u,f){var h=u.ptr,A=u.headerInfo,g=A.numDims,m=A.width*A.height,_=A.imageType,y=A.numValidPixel*r.getDataTypeSize(_)*g,C,E=u.pixels.resultMask;if(f===Uint8Array)C=new Uint8Array(c,h,y);else{var I=new ArrayBuffer(y),b=new Uint8Array(I);b.set(new Uint8Array(c,h,y)),C=new f(I)}if(C.length===m*g)u.pixels.resultPixels=C;else{u.pixels.resultPixels=new f(m*g);var S=0,B=0,v=0,P=0;if(g>1)for(v=0;v<g;v++)for(P=v*m,B=0;B<m;B++)E[B]&&(u.pixels.resultPixels[P+B]=C[S++]);else for(B=0;B<m;B++)E[B]&&(u.pixels.resultPixels[B]=C[S++])}return h+=y,u.ptr=h,!0},readHuffmanTree:function(c,u){var f=this.HUFFMAN_LUT_BITS_MAX,h=new DataView(c,u.ptr,16);u.ptr+=16;var A=h.getInt32(0,!0);if(A<2)throw"unsupported Huffman version";var g=h.getInt32(4,!0),m=h.getInt32(8,!0),_=h.getInt32(12,!0);if(m>=_)return!1;var y=new Uint32Array(_-m);r.decodeBits(c,u,y);var C=[],E,I,b,S;for(E=m;E<_;E++)I=E-(E<g?0:g),C[I]={first:y[E-m],second:null};var B=c.byteLength-u.ptr,v=Math.ceil(B/4),P=new ArrayBuffer(v*4),N=new Uint8Array(P);N.set(new Uint8Array(c,u.ptr,B));var L=new Uint32Array(P),p=0,x,T=0;for(x=L[0],E=m;E<_;E++)I=E-(E<g?0:g),S=C[I].first,S>0&&(C[I].second=x<<p>>>32-S,32-p>=S?(p+=S,p===32&&(p=0,T++,x=L[T])):(p+=S-32,T++,x=L[T],C[I].second|=x>>>32-p));var w=0,M=0,O=new s;for(E=0;E<C.length;E++)C[E]!==void 0&&(w=Math.max(w,C[E].first));w>=f?M=f:M=w,w>=30&&console.log("WARning, large NUM LUT BITS IS "+w);var U=[],Q,z,F,H,W,Z;for(E=m;E<_;E++)if(I=E-(E<g?0:g),S=C[I].first,S>0)if(Q=[S,I],S<=M)for(z=C[I].second<<M-S,F=1<<M-S,b=0;b<F;b++)U[z|b]=Q;else for(z=C[I].second,Z=O,H=S-1;H>=0;H--)W=z>>>H&1,W?(Z.right||(Z.right=new s),Z=Z.right):(Z.left||(Z.left=new s),Z=Z.left),H===0&&!Z.val&&(Z.val=Q[1]);return{decodeLut:U,numBitsLUTQick:M,numBitsLUT:w,tree:O,stuffedData:L,srcPtr:T,bitPos:p}},readHuffman:function(c,u,f){var h=u.headerInfo,A=h.numDims,g=u.headerInfo.height,m=u.headerInfo.width,_=m*g,y=this.readHuffmanTree(c,u),C=y.decodeLut,E=y.tree,I=y.stuffedData,b=y.srcPtr,S=y.bitPos,B=y.numBitsLUTQick,v=y.numBitsLUT,P=u.headerInfo.imageType===0?128:0,N,L,p,x=u.pixels.resultMask,T,w,M,O,U,Q,z,F=0;S>0&&(b++,S=0);var H=I[b],W=u.encodeMode===1,Z=new f(_*A),Y=Z,$;for($=0;$<h.numDims;$++){if(A>1&&(Y=new f(Z.buffer,_*$,_),F=0),u.headerInfo.numValidPixel===m*g)for(Q=0,O=0;O<g;O++)for(U=0;U<m;U++,Q++){if(L=0,T=H<<S>>>32-B,w=T,32-S<B&&(T|=I[b+1]>>>64-S-B,w=T),C[w])L=C[w][1],S+=C[w][0];else for(T=H<<S>>>32-v,w=T,32-S<v&&(T|=I[b+1]>>>64-S-v,w=T),N=E,z=0;z<v;z++)if(M=T>>>v-z-1&1,N=M?N.right:N.left,!(N.left||N.right)){L=N.val,S=S+z+1;break}S>=32&&(S-=32,b++,H=I[b]),p=L-P,W?(U>0?p+=F:O>0?p+=Y[Q-m]:p+=F,p&=255,Y[Q]=p,F=p):Y[Q]=p}else for(Q=0,O=0;O<g;O++)for(U=0;U<m;U++,Q++)if(x[Q]){if(L=0,T=H<<S>>>32-B,w=T,32-S<B&&(T|=I[b+1]>>>64-S-B,w=T),C[w])L=C[w][1],S+=C[w][0];else for(T=H<<S>>>32-v,w=T,32-S<v&&(T|=I[b+1]>>>64-S-v,w=T),N=E,z=0;z<v;z++)if(M=T>>>v-z-1&1,N=M?N.right:N.left,!(N.left||N.right)){L=N.val,S=S+z+1;break}S>=32&&(S-=32,b++,H=I[b]),p=L-P,W?(U>0&&x[Q-1]?p+=F:O>0&&x[Q-m]?p+=Y[Q-m]:p+=F,p&=255,Y[Q]=p,F=p):Y[Q]=p}u.ptr=u.ptr+(b+1)*4+(S>0?4:0)}u.pixels.resultPixels=Z},decodeBits:function(c,u,f,h,A){{var g=u.headerInfo,m=g.fileVersion,_=0,y=new DataView(c,u.ptr,5),C=y.getUint8(0);_++;var E=C>>6,I=E===0?4:3-E,b=(C&32)>0,S=C&31,B=0;if(I===1)B=y.getUint8(_),_++;else if(I===2)B=y.getUint16(_,!0),_+=2;else if(I===4)B=y.getUint32(_,!0),_+=4;else throw"Invalid valid pixel count type";var v=2*g.maxZError,P,N,L,p,x,T,w,M,O,U,Q=g.numDims>1?g.maxValues[A]:g.zMax;if(b){for(u.counter.lut++,M=y.getUint8(_),O=S,_++,p=Math.ceil((M-1)*S/8),x=Math.ceil(p/4),N=new ArrayBuffer(x*4),L=new Uint8Array(N),u.ptr+=_,L.set(new Uint8Array(c,u.ptr,p)),w=new Uint32Array(N),u.ptr+=p,U=0;M-1>>>U;)U++;p=Math.ceil(B*U/8),x=Math.ceil(p/4),N=new ArrayBuffer(x*4),L=new Uint8Array(N),L.set(new Uint8Array(c,u.ptr,p)),P=new Uint32Array(N),u.ptr+=p,m>=3?T=o.unstuffLUT2(w,S,M-1,h,v,Q):T=o.unstuffLUT(w,S,M-1,h,v,Q),m>=3?o.unstuff2(P,f,U,B,T):o.unstuff(P,f,U,B,T)}else u.counter.bitstuffer++,U=S,u.ptr+=_,U>0&&(p=Math.ceil(B*U/8),x=Math.ceil(p/4),N=new ArrayBuffer(x*4),L=new Uint8Array(N),L.set(new Uint8Array(c,u.ptr,p)),P=new Uint32Array(N),u.ptr+=p,m>=3?h==null?o.originalUnstuff2(P,f,U,B):o.unstuff2(P,f,U,B,!1,h,v,Q):h==null?o.originalUnstuff(P,f,U,B):o.unstuff(P,f,U,B,!1,h,v,Q))}},readTiles:function(c,u,f){var h=u.headerInfo,A=h.width,g=h.height,m=h.microBlockSize,_=h.imageType,y=r.getDataTypeSize(_),C=Math.ceil(A/m),E=Math.ceil(g/m);u.pixels.numBlocksY=E,u.pixels.numBlocksX=C,u.pixels.ptr=0;var I=0,b=0,S=0,B=0,v=0,P=0,N=0,L=0,p=0,x=0,T=0,w=0,M=0,O=0,U=0,Q=0,z,F,H,W,Z,Y,$=new f(m*m),X=g%m||m,he=A%m||m,ge,fe,ye=h.numDims,Ie,ve=u.pixels.resultMask,Te=u.pixels.resultPixels;for(S=0;S<E;S++)for(v=S!==E-1?m:X,B=0;B<C;B++)for(P=B!==C-1?m:he,T=S*A*m+B*m,w=A-P,Ie=0;Ie<ye;Ie++){if(ye>1&&(Te=new f(u.pixels.resultPixels.buffer,A*g*Ie*y,A*g)),N=c.byteLength-u.ptr,z=new DataView(c,u.ptr,Math.min(10,N)),F={},Q=0,L=z.getUint8(0),Q++,p=L>>6&255,x=L>>2&15,x!==(B*m>>3&15))throw"integrity issue";if(Y=L&3,Y>3)throw u.ptr+=Q,"Invalid block encoding ("+Y+")";if(Y===2){u.counter.constant++,u.ptr+=Q;continue}else if(Y===0){if(u.counter.uncompressed++,u.ptr+=Q,M=v*P*y,O=c.byteLength-u.ptr,M=M<O?M:O,H=new ArrayBuffer(M%y===0?M:M+y-M%y),W=new Uint8Array(H),W.set(new Uint8Array(c,u.ptr,M)),Z=new f(H),U=0,ve)for(I=0;I<v;I++){for(b=0;b<P;b++)ve[T]&&(Te[T]=Z[U++]),T++;T+=w}else for(I=0;I<v;I++){for(b=0;b<P;b++)Te[T++]=Z[U++];T+=w}u.ptr+=U*y}else if(ge=r.getDataTypeUsed(_,p),fe=r.getOnePixel(F,Q,ge,z),Q+=r.getDataTypeSize(ge),Y===3)if(u.ptr+=Q,u.counter.constantoffset++,ve)for(I=0;I<v;I++){for(b=0;b<P;b++)ve[T]&&(Te[T]=fe),T++;T+=w}else for(I=0;I<v;I++){for(b=0;b<P;b++)Te[T++]=fe;T+=w}else if(u.ptr+=Q,r.decodeBits(c,u,$,fe,Ie),Q=0,ve)for(I=0;I<v;I++){for(b=0;b<P;b++)ve[T]&&(Te[T]=$[Q++]),T++;T+=w}else for(I=0;I<v;I++){for(b=0;b<P;b++)Te[T++]=$[Q++];T+=w}}},formatFileInfo:function(c){return{fileIdentifierString:c.headerInfo.fileIdentifierString,fileVersion:c.headerInfo.fileVersion,imageType:c.headerInfo.imageType,height:c.headerInfo.height,width:c.headerInfo.width,numValidPixel:c.headerInfo.numValidPixel,microBlockSize:c.headerInfo.microBlockSize,blobSize:c.headerInfo.blobSize,maxZError:c.headerInfo.maxZError,pixelType:r.getPixelType(c.headerInfo.imageType),eofOffset:c.eofOffset,mask:c.mask?{numBytes:c.mask.numBytes}:null,pixels:{numBlocksX:c.pixels.numBlocksX,numBlocksY:c.pixels.numBlocksY,maxValue:c.headerInfo.zMax,minValue:c.headerInfo.zMin,noDataValue:c.noDataValue}}},constructConstantSurface:function(c){var u=c.headerInfo.zMax,f=c.headerInfo.numDims,h=c.headerInfo.height*c.headerInfo.width,A=h*f,g=0,m=0,_=0,y=c.pixels.resultMask;if(y)if(f>1)for(g=0;g<f;g++)for(_=g*h,m=0;m<h;m++)y[m]&&(c.pixels.resultPixels[_+m]=u);else for(m=0;m<h;m++)y[m]&&(c.pixels.resultPixels[m]=u);else if(c.pixels.resultPixels.fill)c.pixels.resultPixels.fill(u);else for(m=0;m<A;m++)c.pixels.resultPixels[m]=u},getDataTypeArray:function(c){var u;switch(c){case 0:u=Int8Array;break;case 1:u=Uint8Array;break;case 2:u=Int16Array;break;case 3:u=Uint16Array;break;case 4:u=Int32Array;break;case 5:u=Uint32Array;break;case 6:u=Float32Array;break;case 7:u=Float64Array;break;default:u=Float32Array}return u},getPixelType:function(c){var u;switch(c){case 0:u="S8";break;case 1:u="U8";break;case 2:u="S16";break;case 3:u="U16";break;case 4:u="S32";break;case 5:u="U32";break;case 6:u="F32";break;case 7:u="F64";break;default:u="F32"}return u},isValidPixelValue:function(c,u){if(u==null)return!1;var f;switch(c){case 0:f=u>=-128&&u<=127;break;case 1:f=u>=0&&u<=255;break;case 2:f=u>=-32768&&u<=32767;break;case 3:f=u>=0&&u<=65536;break;case 4:f=u>=-2147483648&&u<=2147483647;break;case 5:f=u>=0&&u<=4294967296;break;case 6:f=u>=-34027999387901484e22&&u<=34027999387901484e22;break;case 7:f=u>=5e-324&&u<=17976931348623157e292;break;default:f=!1}return f},getDataTypeSize:function(c){var u=0;switch(c){case 0:case 1:u=1;break;case 2:case 3:u=2;break;case 4:case 5:case 6:u=4;break;case 7:u=8;break;default:u=c}return u},getDataTypeUsed:function(c,u){var f=c;switch(c){case 2:case 4:f=c-u;break;case 3:case 5:f=c-2*u;break;case 6:u===0?f=c:u===1?f=2:f=1;break;case 7:u===0?f=c:f=c-2*u+1;break;default:f=c;break}return f},getOnePixel:function(c,u,f,h){var A=0;switch(f){case 0:A=h.getInt8(u);break;case 1:A=h.getUint8(u);break;case 2:A=h.getInt16(u,!0);break;case 3:A=h.getUint16(u,!0);break;case 4:A=h.getInt32(u,!0);break;case 5:A=h.getUInt32(u,!0);break;case 6:A=h.getFloat32(u,!0);break;case 7:A=h.getFloat64(u,!0);break;default:throw"the decoder does not understand this pixel type"}return A}},s=function(c,u,f){this.val=c,this.left=u,this.right=f},a={decode:function(c,u){u=u||{};var f=u.noDataValue,h=0,A={};if(A.ptr=u.inputOffset||0,A.pixels={},!!r.readHeaderInfo(c,A)){var g=A.headerInfo,m=g.fileVersion,_=r.getDataTypeArray(g.imageType);r.readMask(c,A),g.numValidPixel!==g.width*g.height&&!A.pixels.resultMask&&(A.pixels.resultMask=u.maskData);var y=g.width*g.height;if(A.pixels.resultPixels=new _(y*g.numDims),A.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0},g.numValidPixel!==0)if(g.zMax===g.zMin)r.constructConstantSurface(A);else if(m>=4&&r.checkMinMaxRanges(c,A))r.constructConstantSurface(A);else{var C=new DataView(c,A.ptr,2),E=C.getUint8(0);if(A.ptr++,E)r.readDataOneSweep(c,A,_);else if(m>1&&g.imageType<=1&&Math.abs(g.maxZError-.5)<1e-5){var I=C.getUint8(1);if(A.ptr++,A.encodeMode=I,I>2||m<4&&I>1)throw"Invalid Huffman flag "+I;I?r.readHuffman(c,A,_):r.readTiles(c,A,_)}else r.readTiles(c,A,_)}A.eofOffset=A.ptr;var b;u.inputOffset?(b=A.headerInfo.blobSize+u.inputOffset-A.ptr,Math.abs(b)>=1&&(A.eofOffset=u.inputOffset+A.headerInfo.blobSize)):(b=A.headerInfo.blobSize-A.ptr,Math.abs(b)>=1&&(A.eofOffset=A.headerInfo.blobSize));var S={width:g.width,height:g.height,pixelData:A.pixels.resultPixels,minValue:g.zMin,maxValue:g.zMax,validPixelCount:g.numValidPixel,dimCount:g.numDims,dimStats:{minValues:g.minValues,maxValues:g.maxValues},maskData:A.pixels.resultMask};if(A.pixels.resultMask&&r.isValidPixelValue(g.imageType,f)){var B=A.pixels.resultMask;for(h=0;h<y;h++)B[h]||(S.pixelData[h]=f);S.noDataValue=f}return A.noDataValue=f,u.returnFileInfo&&(S.fileInfo=r.formatFileInfo(A)),S}},getBandCount:function(c){var u=0,f=0,h={};for(h.ptr=0,h.pixels={};f<c.byteLength-58;)r.readHeaderInfo(c,h),f+=h.headerInfo.blobSize,u++,h.ptr=f;return u}};return a}(),n=function(){var o=new ArrayBuffer(4),r=new Uint8Array(o),s=new Uint32Array(o);return s[0]=1,r[0]===1}(),i={decode:function(o,r){if(!n)throw"Big endian system is not supported.";r=r||{};var s=r.inputOffset||0,a=new Uint8Array(o,s,10),c=String.fromCharCode.apply(null,a),u,f;if(c.trim()==="CntZImage")u=e,f=1;else if(c.substring(0,5)==="Lerc2")u=t,f=2;else throw"Unexpected file identifier string: "+c;for(var h=0,A=o.byteLength-10,g,m=[],_,y,C={width:0,height:0,pixels:[],pixelType:r.pixelType,mask:null,statistics:[]};s<A;){var E=u.decode(o,{inputOffset:s,encodedMaskData:g,maskData:y,returnMask:h===0,returnEncodedMask:h===0,returnFileInfo:!0,pixelType:r.pixelType||null,noDataValue:r.noDataValue||null});s=E.fileInfo.eofOffset,h===0&&(g=E.encodedMaskData,y=E.maskData,C.width=E.width,C.height=E.height,C.dimCount=E.dimCount||1,C.pixelType=E.pixelType||E.fileInfo.pixelType,C.mask=E.maskData),f>1&&E.fileInfo.mask&&E.fileInfo.mask.numBytes>0&&m.push(E.maskData),h++,C.pixels.push(E.pixelData),C.statistics.push({minValue:E.minValue,maxValue:E.maxValue,noDataValue:E.noDataValue,dimStats:E.dimStats})}var I,b,S;if(f>1&&m.length>1){for(S=C.width*C.height,C.bandMasks=m,y=new Uint8Array(S),y.set(m[0]),I=1;I<m.length;I++)for(_=m[I],b=0;b<S;b++)y[b]=y[b]&_[b];C.maskData=y}return C}};typeof define=="function"&&define.amd?define([],function(){return i}):typeof aH<"u"&&aH.exports?aH.exports=i:this.Lerc=i})()});var xSe=Rd((Who,ISe)=>{ISe.exports={webm:"data:video/webm;base64,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",mp4:"data:video/mp4;base64,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"}});var TSe=Rd((jho,bSe)=>{var{webm:LDt,mp4:ODt}=xSe(),t$=()=>typeof navigator<"u"&&parseFloat((""+(/CPU.*OS ([0-9_]{3,4})[0-9_]{0,1}|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))<10&&!window.MSStream,n$=()=>"wakeLock"in navigator,i$=class{constructor(){if(this.enabled=!1,n$()){this._wakeLock=null;let t=()=>{this._wakeLock!==null&&document.visibilityState==="visible"&&this.enable()};document.addEventListener("visibilitychange",t),document.addEventListener("fullscreenchange",t)}else t$()?this.noSleepTimer=null:(this.noSleepVideo=document.createElement("video"),this.noSleepVideo.setAttribute("title","No Sleep"),this.noSleepVideo.setAttribute("playsinline",""),this._addSourceToVideo(this.noSleepVideo,"webm",LDt),this._addSourceToVideo(this.noSleepVideo,"mp4",ODt),this.noSleepVideo.addEventListener("loadedmetadata",()=>{this.noSleepVideo.duration<=1?this.noSleepVideo.setAttribute("loop",""):this.noSleepVideo.addEventListener("timeupdate",()=>{this.noSleepVideo.currentTime>.5&&(this.noSleepVideo.currentTime=Math.random())})}))}_addSourceToVideo(t,n,i){var o=document.createElement("source");o.src=i,o.type=`video/${n}`,t.appendChild(o)}get isEnabled(){return this.enabled}enable(){return n$()?navigator.wakeLock.request("screen").then(t=>{this._wakeLock=t,this.enabled=!0,console.log("Wake Lock active."),this._wakeLock.addEventListener("release",()=>{console.log("Wake Lock released.")})}).catch(t=>{throw this.enabled=!1,console.error(`${t.name}, ${t.message}`),t}):t$()?(this.disable(),console.warn(` + NoSleep enabled for older iOS devices. This can interrupt + active or long-running network requests from completing successfully. + See https://github.com/richtr/NoSleep.js/issues/15 for more details. + `),this.noSleepTimer=window.setInterval(()=>{document.hidden||(window.location.href=window.location.href.split("#")[0],window.setTimeout(window.stop,0))},15e3),this.enabled=!0,Promise.resolve()):this.noSleepVideo.play().then(n=>(this.enabled=!0,n)).catch(n=>{throw this.enabled=!1,n})}disable(){n$()?(this._wakeLock&&this._wakeLock.release(),this._wakeLock=null):t$()?this.noSleepTimer&&(console.warn(` + NoSleep now disabled for older iOS devices. + `),window.clearInterval(this.noSleepTimer),this.noSleepTimer=null):this.noSleepVideo.pause(),this.enabled=!1}};bSe.exports=i$});var D5={};D5.EMPTY_OBJECT=Object.freeze({});D5.EMPTY_ARRAY=Object.freeze([]);var V=D5;function KSe(e){return e!=null}var l=KSe;function oC(e){this.name="DeveloperError",this.message=e;let t;try{throw new Error}catch(n){t=n.stack}this.stack=t}l(Object.create)&&(oC.prototype=Object.create(Error.prototype),oC.prototype.constructor=oC);oC.prototype.toString=function(){let e=`${this.name}: ${this.message}`;return l(this.stack)&&(e+=` +${this.stack.toString()}`),e};oC.throwInstantiationError=function(){throw new oC("This function defines an interface and should not be called directly.")};var me=oC;var ks={};ks.typeOf={};function XSe(e){return`${e} is required, actual value was undefined`}function U0(e,t,n){return`Expected ${n} to be typeof ${t}, actual typeof was ${e}`}ks.defined=function(e,t){if(!l(t))throw new me(XSe(e))};ks.typeOf.func=function(e,t){if(typeof t!="function")throw new me(U0(typeof t,"function",e))};ks.typeOf.string=function(e,t){if(typeof t!="string")throw new me(U0(typeof t,"string",e))};ks.typeOf.number=function(e,t){if(typeof t!="number")throw new me(U0(typeof t,"number",e))};ks.typeOf.number.lessThan=function(e,t,n){if(ks.typeOf.number(e,t),t>=n)throw new me(`Expected ${e} to be less than ${n}, actual value was ${t}`)};ks.typeOf.number.lessThanOrEquals=function(e,t,n){if(ks.typeOf.number(e,t),t>n)throw new me(`Expected ${e} to be less than or equal to ${n}, actual value was ${t}`)};ks.typeOf.number.greaterThan=function(e,t,n){if(ks.typeOf.number(e,t),t<=n)throw new me(`Expected ${e} to be greater than ${n}, actual value was ${t}`)};ks.typeOf.number.greaterThanOrEquals=function(e,t,n){if(ks.typeOf.number(e,t),t<n)throw new me(`Expected ${e} to be greater than or equal to ${n}, actual value was ${t}`)};ks.typeOf.object=function(e,t){if(typeof t!="object")throw new me(U0(typeof t,"object",e))};ks.typeOf.bool=function(e,t){if(typeof t!="boolean")throw new me(U0(typeof t,"boolean",e))};ks.typeOf.bigint=function(e,t){if(typeof t!="bigint")throw new me(U0(typeof t,"bigint",e))};ks.typeOf.number.equals=function(e,t,n,i){if(ks.typeOf.number(e,n),ks.typeOf.number(t,i),n!==i)throw new me(`${e} must be equal to ${t}, the actual values are ${n} and ${i}`)};var Mo=ks;function QS(){this._listeners=[],this._scopes=[],this._toRemove=[],this._insideRaiseEvent=!1}Object.defineProperties(QS.prototype,{numberOfListeners:{get:function(){return this._listeners.length-this._toRemove.length}}});QS.prototype.addEventListener=function(e,t){this._listeners.push(e),this._scopes.push(t);let n=this;return function(){n.removeEventListener(e,t)}};QS.prototype.removeEventListener=function(e,t){let n=this._listeners,i=this._scopes,o=-1;for(let r=0;r<n.length;r++)if(n[r]===e&&i[r]===t){o=r;break}return o!==-1?(this._insideRaiseEvent?(this._toRemove.push(o),n[o]=void 0,i[o]=void 0):(n.splice(o,1),i.splice(o,1)),!0):!1};function JSe(e,t){return t-e}QS.prototype.raiseEvent=function(){this._insideRaiseEvent=!0;let e,t=this._listeners,n=this._scopes,i=t.length;for(e=0;e<i;e++){let r=t[e];l(r)&&t[e].apply(n[e],arguments)}let o=this._toRemove;if(i=o.length,i>0){for(o.sort(JSe),e=0;e<i;e++){let r=o[e];t.splice(r,1),n.splice(r,1)}o.length=0}this._insideRaiseEvent=!1};var _e=QS;function fg(e){this._value=void 0,this._hasClone=!1,this._hasEquals=!1,this._definitionChanged=new _e,this.setValue(e)}Object.defineProperties(fg.prototype,{isConstant:{value:!0},definitionChanged:{get:function(){return this._definitionChanged}}});fg.prototype.getValue=function(e,t){return this._hasClone?this._value.clone(t):this._value};fg.prototype.setValue=function(e){let t=this._value;if(t!==e){let n=l(e),i=n&&typeof e.clone=="function",o=n&&typeof e.equals=="function";(!o||!e.equals(t))&&(this._hasClone=i,this._hasEquals=o,this._value=i?e.clone(this._value):e,this._definitionChanged.raiseEvent(this))}};fg.prototype.equals=function(e){return this===e||e instanceof fg&&(!this._hasEquals&&this._value===e._value||this._hasEquals&&this._value.equals(e._value))};fg.prototype.valueOf=function(){return this._value};fg.prototype.toString=function(){return String(this._value)};var ci=fg;function ZSe(e,t,n,i,o){return{configurable:i,get:function(){return this[t]},set:function(r){let s=this[t],a=this[n];l(a)&&(a(),this[n]=void 0),r!==void 0&&(!l(r)||!l(r.getValue))&&l(o)&&(r=o(r)),s!==r&&(this[t]=r,this._definitionChanged.raiseEvent(this,e,r,s)),l(r)&&l(r.definitionChanged)&&(this[n]=r.definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this,e,r,r)},this))}}}function $Se(e){return new ci(e)}function ewe(e,t,n){return ZSe(e,`_${e.toString()}`,`_${e.toString()}Subscription`,t??!1,n??$Se)}var de=ewe;function kS(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._image=void 0,this._imageSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._pixelOffset=void 0,this._pixelOffsetSubscription=void 0,this._eyeOffset=void 0,this._eyeOffsetSubscription=void 0,this._horizontalOrigin=void 0,this._horizontalOriginSubscription=void 0,this._verticalOrigin=void 0,this._verticalOriginSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._alignedAxis=void 0,this._alignedAxisSubscription=void 0,this._sizeInMeters=void 0,this._sizeInMetersSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._pixelOffsetScaleByDistance=void 0,this._pixelOffsetScaleByDistanceSubscription=void 0,this._imageSubRegion=void 0,this._imageSubRegionSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this._splitDirection=void 0,this._splitDirectionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(kS.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),image:de("image"),scale:de("scale"),pixelOffset:de("pixelOffset"),eyeOffset:de("eyeOffset"),horizontalOrigin:de("horizontalOrigin"),verticalOrigin:de("verticalOrigin"),heightReference:de("heightReference"),color:de("color"),rotation:de("rotation"),alignedAxis:de("alignedAxis"),sizeInMeters:de("sizeInMeters"),width:de("width"),height:de("height"),scaleByDistance:de("scaleByDistance"),translucencyByDistance:de("translucencyByDistance"),pixelOffsetScaleByDistance:de("pixelOffsetScaleByDistance"),imageSubRegion:de("imageSubRegion"),distanceDisplayCondition:de("distanceDisplayCondition"),disableDepthTestDistance:de("disableDepthTestDistance"),splitDirection:de("splitDirection")});kS.prototype.clone=function(e){return l(e)?(e.show=this._show,e.image=this._image,e.scale=this._scale,e.pixelOffset=this._pixelOffset,e.eyeOffset=this._eyeOffset,e.horizontalOrigin=this._horizontalOrigin,e.verticalOrigin=this._verticalOrigin,e.heightReference=this._heightReference,e.color=this._color,e.rotation=this._rotation,e.alignedAxis=this._alignedAxis,e.sizeInMeters=this._sizeInMeters,e.width=this._width,e.height=this._height,e.scaleByDistance=this._scaleByDistance,e.translucencyByDistance=this._translucencyByDistance,e.pixelOffsetScaleByDistance=this._pixelOffsetScaleByDistance,e.imageSubRegion=this._imageSubRegion,e.distanceDisplayCondition=this._distanceDisplayCondition,e.disableDepthTestDistance=this._disableDepthTestDistance,e.splitDirection=this._splitDirection,e):new kS(this)};kS.prototype.merge=function(e){this.show=this._show??e.show,this.image=this._image??e.image,this.scale=this._scale??e.scale,this.pixelOffset=this._pixelOffset??e.pixelOffset,this.eyeOffset=this._eyeOffset??e.eyeOffset,this.horizontalOrigin=this._horizontalOrigin??e.horizontalOrigin,this.verticalOrigin=this._verticalOrigin??e.verticalOrigin,this.heightReference=this._heightReference??e.heightReference,this.color=this._color??e.color,this.rotation=this._rotation??e.rotation,this.alignedAxis=this._alignedAxis??e.alignedAxis,this.sizeInMeters=this._sizeInMeters??e.sizeInMeters,this.width=this._width??e.width,this.height=this._height??e.height,this.scaleByDistance=this._scaleByDistance??e.scaleByDistance,this.translucencyByDistance=this._translucencyByDistance??e.translucencyByDistance,this.pixelOffsetScaleByDistance=this._pixelOffsetScaleByDistance??e.pixelOffsetScaleByDistance,this.imageSubRegion=this._imageSubRegion??e.imageSubRegion,this.distanceDisplayCondition=this._distanceDisplayCondition??e.distanceDisplayCondition,this.disableDepthTestDistance=this._disableDepthTestDistance??e.disableDepthTestDistance,this.splitDirection=this.splitDirection??e.splitDirection};var jc=kS;function rC(){this._array=[],this._hash={}}Object.defineProperties(rC.prototype,{length:{get:function(){return this._array.length}},values:{get:function(){return this._array}}});rC.prototype.contains=function(e){return l(this._hash[e])};rC.prototype.set=function(e,t){let n=this._hash[e];t!==n&&(this.remove(e),this._hash[e]=t,this._array.push(t))};rC.prototype.get=function(e){return this._hash[e]};rC.prototype.remove=function(e){let t=this._hash[e],n=l(t);if(n){let i=this._array;i.splice(i.indexOf(t),1),delete this._hash[e]}return n};rC.prototype.removeAll=function(){let e=this._array;e.length>0&&(this._hash={},e.length=0)};var Pt=rC;var v5=Es(CR(),1);var ft={};ft.EPSILON1=.1;ft.EPSILON2=.01;ft.EPSILON3=.001;ft.EPSILON4=1e-4;ft.EPSILON5=1e-5;ft.EPSILON6=1e-6;ft.EPSILON7=1e-7;ft.EPSILON8=1e-8;ft.EPSILON9=1e-9;ft.EPSILON10=1e-10;ft.EPSILON11=1e-11;ft.EPSILON12=1e-12;ft.EPSILON13=1e-13;ft.EPSILON14=1e-14;ft.EPSILON15=1e-15;ft.EPSILON16=1e-16;ft.EPSILON17=1e-17;ft.EPSILON18=1e-18;ft.EPSILON19=1e-19;ft.EPSILON20=1e-20;ft.EPSILON21=1e-21;ft.GRAVITATIONALPARAMETER=3986004418e5;ft.SOLAR_RADIUS=6955e5;ft.LUNAR_RADIUS=1737400;ft.SIXTY_FOUR_KILOBYTES=64*1024;ft.FOUR_GIGABYTES=4*1024*1024*1024;ft.sign=Math.sign??function(t){return t=+t,t===0||t!==t?t:t>0?1:-1};ft.signNotZero=function(e){return e<0?-1:1};ft.toSNorm=function(e,t){return t=t??255,Math.round((ft.clamp(e,-1,1)*.5+.5)*t)};ft.fromSNorm=function(e,t){return t=t??255,ft.clamp(e,0,t)/t*2-1};ft.normalize=function(e,t,n){return n=Math.max(n-t,0),n===0?0:ft.clamp((e-t)/n,0,1)};ft.sinh=Math.sinh??function(t){return(Math.exp(t)-Math.exp(-t))/2};ft.cosh=Math.cosh??function(t){return(Math.exp(t)+Math.exp(-t))/2};ft.lerp=function(e,t,n){return(1-n)*e+n*t};ft.PI=Math.PI;ft.ONE_OVER_PI=1/Math.PI;ft.PI_OVER_TWO=Math.PI/2;ft.PI_OVER_THREE=Math.PI/3;ft.PI_OVER_FOUR=Math.PI/4;ft.PI_OVER_SIX=Math.PI/6;ft.THREE_PI_OVER_TWO=3*Math.PI/2;ft.TWO_PI=2*Math.PI;ft.ONE_OVER_TWO_PI=1/(2*Math.PI);ft.RADIANS_PER_DEGREE=Math.PI/180;ft.DEGREES_PER_RADIAN=180/Math.PI;ft.RADIANS_PER_ARCSECOND=ft.RADIANS_PER_DEGREE/3600;ft.toRadians=function(e){return e*ft.RADIANS_PER_DEGREE};ft.toDegrees=function(e){return e*ft.DEGREES_PER_RADIAN};ft.convertLongitudeRange=function(e){let t=ft.TWO_PI,n=e-Math.floor(e/t)*t;return n<-Math.PI?n+t:n>=Math.PI?n-t:n};ft.clampToLatitudeRange=function(e){return ft.clamp(e,-1*ft.PI_OVER_TWO,ft.PI_OVER_TWO)};ft.negativePiToPi=function(e){return e>=-ft.PI&&e<=ft.PI?e:ft.zeroToTwoPi(e+ft.PI)-ft.PI};ft.zeroToTwoPi=function(e){if(e>=0&&e<=ft.TWO_PI)return e;let t=ft.mod(e,ft.TWO_PI);return Math.abs(t)<ft.EPSILON14&&Math.abs(e)>ft.EPSILON14?ft.TWO_PI:t};ft.mod=function(e,t){return ft.sign(e)===ft.sign(t)&&Math.abs(e)<Math.abs(t)?e:(e%t+t)%t};ft.equalsEpsilon=function(e,t,n,i){n=n??0,i=i??n;let o=Math.abs(e-t);return o<=i||o<=n*Math.max(Math.abs(e),Math.abs(t))};ft.lessThan=function(e,t,n){return e-t<-n};ft.lessThanOrEquals=function(e,t,n){return e-t<n};ft.greaterThan=function(e,t,n){return e-t>n};ft.greaterThanOrEquals=function(e,t,n){return e-t>-n};var ER=[1];ft.factorial=function(e){let t=ER.length;if(e>=t){let n=ER[t-1];for(let i=t;i<=e;i++){let o=n*i;ER.push(o),n=o}}return ER[e]};ft.incrementWrap=function(e,t,n){return n=n??0,++e,e>t&&(e=n),e};ft.isPowerOfTwo=function(e){return e!==0&&(e&e-1)===0};ft.nextPowerOfTwo=function(e){return--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e,e};ft.previousPowerOfTwo=function(e){return e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e|=e>>32,e=(e>>>0)-(e>>>1),e};ft.clamp=function(e,t,n){return e<t?t:e>n?n:e};var d$=new v5.default;ft.setRandomNumberSeed=function(e){d$=new v5.default(e)};ft.nextRandomNumber=function(){return d$.random()};ft.randomBetween=function(e,t){return ft.nextRandomNumber()*(t-e)+e};ft.acosClamped=function(e){return Math.acos(ft.clamp(e,-1,1))};ft.asinClamped=function(e){return Math.asin(ft.clamp(e,-1,1))};ft.chordLength=function(e,t){return 2*t*Math.sin(e*.5)};ft.logBase=function(e,t){return Math.log(e)/Math.log(t)};ft.cbrt=Math.cbrt??function(t){let n=Math.pow(Math.abs(t),.3333333333333333);return t<0?-n:n};ft.log2=Math.log2??function(t){return Math.log(t)*Math.LOG2E};ft.fog=function(e,t){let n=e*t;return 1-Math.exp(-(n*n))};ft.fastApproximateAtan=function(e){return e*(-.1784*Math.abs(e)-.0663*e*e+1.0301)};ft.fastApproximateAtan2=function(e,t){let n,i=Math.abs(e);n=Math.abs(t);let o=Math.max(i,n);n=Math.min(i,n);let r=n/o;return i=ft.fastApproximateAtan(r),i=Math.abs(t)>Math.abs(e)?ft.PI_OVER_TWO-i:i,i=e<0?ft.PI-i:i,i=t<0?-i:i,i};var D=ft;function Vt(e,t){this.x=e??0,this.y=t??0}Vt.fromElements=function(e,t,n){return l(n)?(n.x=e,n.y=t,n):new Vt(e,t)};Vt.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t):new Vt(e.x,e.y)};Vt.fromCartesian3=Vt.clone;Vt.fromCartesian4=Vt.clone;Vt.packedLength=2;Vt.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n]=e.y,t};Vt.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Vt),n.x=e[t++],n.y=e[t],n};Vt.packArray=function(e,t){let n=e.length,i=n*2;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)Vt.pack(e[o],t,o*2);return t};Vt.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/2:t=new Array(n/2);for(let i=0;i<n;i+=2){let o=i/2;t[o]=Vt.unpack(e,i,t[o])}return t};Vt.fromArray=Vt.unpack;Vt.maximumComponent=function(e){return Math.max(e.x,e.y)};Vt.minimumComponent=function(e){return Math.min(e.x,e.y)};Vt.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n};Vt.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n};Vt.clamp=function(e,t,n,i){let o=D.clamp(e.x,t.x,n.x),r=D.clamp(e.y,t.y,n.y);return i.x=o,i.y=r,i};Vt.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y};Vt.magnitude=function(e){return Math.sqrt(Vt.magnitudeSquared(e))};var IR=new Vt;Vt.distance=function(e,t){return Vt.subtract(e,t,IR),Vt.magnitude(IR)};Vt.distanceSquared=function(e,t){return Vt.subtract(e,t,IR),Vt.magnitudeSquared(IR)};Vt.normalize=function(e,t){let n=Vt.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t};Vt.dot=function(e,t){return e.x*t.x+e.y*t.y};Vt.cross=function(e,t){return e.x*t.y-e.y*t.x};Vt.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n};Vt.divideComponents=function(e,t,n){return n.x=e.x/t.x,n.y=e.y/t.y,n};Vt.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n};Vt.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n};Vt.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n};Vt.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n};Vt.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t};Vt.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t};var h$=new Vt;Vt.lerp=function(e,t,n,i){return Vt.multiplyByScalar(t,n,h$),i=Vt.multiplyByScalar(e,1-n,i),Vt.add(h$,i,i)};var m$=new Vt,A$=new Vt;Vt.angleBetween=function(e,t){return Vt.normalize(e,m$),Vt.normalize(t,A$),D.acosClamped(Vt.dot(m$,A$))};var twe=new Vt;Vt.mostOrthogonalAxis=function(e,t){let n=Vt.normalize(e,twe);return Vt.abs(n,n),n.x<=n.y?t=Vt.clone(Vt.UNIT_X,t):t=Vt.clone(Vt.UNIT_Y,t),t};Vt.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y};Vt.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]};Vt.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&D.equalsEpsilon(e.x,t.x,n,i)&&D.equalsEpsilon(e.y,t.y,n,i)};Vt.ZERO=Object.freeze(new Vt(0,0));Vt.ONE=Object.freeze(new Vt(1,1));Vt.UNIT_X=Object.freeze(new Vt(1,0));Vt.UNIT_Y=Object.freeze(new Vt(0,1));Vt.prototype.clone=function(e){return Vt.clone(this,e)};Vt.prototype.equals=function(e){return Vt.equals(this,e)};Vt.prototype.equalsEpsilon=function(e,t,n){return Vt.equalsEpsilon(this,e,t,n)};Vt.prototype.toString=function(){return`(${this.x}, ${this.y})`};var k=Vt;function ot(e,t,n){this.x=e??0,this.y=t??0,this.z=n??0}ot.fromSpherical=function(e,t){l(t)||(t=new ot);let n=e.clock,i=e.cone,o=e.magnitude??1,r=o*Math.sin(i);return t.x=r*Math.cos(n),t.y=r*Math.sin(n),t.z=o*Math.cos(i),t};ot.fromElements=function(e,t,n,i){return l(i)?(i.x=e,i.y=t,i.z=n,i):new ot(e,t,n)};ot.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t):new ot(e.x,e.y,e.z)};ot.fromCartesian4=ot.clone;ot.packedLength=3;ot.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n]=e.z,t};ot.unpack=function(e,t,n){return t=t??0,l(n)||(n=new ot),n.x=e[t++],n.y=e[t++],n.z=e[t],n};ot.packArray=function(e,t){let n=e.length,i=n*3;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)ot.pack(e[o],t,o*3);return t};ot.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/3:t=new Array(n/3);for(let i=0;i<n;i+=3){let o=i/3;t[o]=ot.unpack(e,i,t[o])}return t};ot.fromArray=ot.unpack;ot.maximumComponent=function(e){return Math.max(e.x,e.y,e.z)};ot.minimumComponent=function(e){return Math.min(e.x,e.y,e.z)};ot.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n};ot.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n};ot.clamp=function(e,t,n,i){let o=D.clamp(e.x,t.x,n.x),r=D.clamp(e.y,t.y,n.y),s=D.clamp(e.z,t.z,n.z);return i.x=o,i.y=r,i.z=s,i};ot.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z};ot.magnitude=function(e){return Math.sqrt(ot.magnitudeSquared(e))};var bR=new ot;ot.distance=function(e,t){return ot.subtract(e,t,bR),ot.magnitude(bR)};ot.distanceSquared=function(e,t){return ot.subtract(e,t,bR),ot.magnitudeSquared(bR)};ot.normalize=function(e,t){let n=ot.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t};ot.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z};ot.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n};ot.divideComponents=function(e,t,n){return n.x=e.x/t.x,n.y=e.y/t.y,n.z=e.z/t.z,n};ot.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n};ot.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n};ot.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n};ot.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n};ot.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t};ot.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t};var p$=new ot;ot.lerp=function(e,t,n,i){return ot.multiplyByScalar(t,n,p$),i=ot.multiplyByScalar(e,1-n,i),ot.add(p$,i,i)};var xR=new ot,P5=new ot;ot.angleBetween=function(e,t){ot.normalize(e,xR),ot.normalize(t,P5);let n=ot.dot(xR,P5),i=ot.magnitude(ot.cross(xR,P5,xR));return Math.atan2(i,n)};var nwe=new ot;ot.mostOrthogonalAxis=function(e,t){let n=ot.normalize(e,nwe);return ot.abs(n,n),n.x<=n.y?n.x<=n.z?t=ot.clone(ot.UNIT_X,t):t=ot.clone(ot.UNIT_Z,t):n.y<=n.z?t=ot.clone(ot.UNIT_Y,t):t=ot.clone(ot.UNIT_Z,t),t};ot.projectVector=function(e,t,n){let i=ot.dot(e,t)/ot.dot(t,t);return ot.multiplyByScalar(t,i,n)};ot.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z};ot.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]};ot.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&D.equalsEpsilon(e.x,t.x,n,i)&&D.equalsEpsilon(e.y,t.y,n,i)&&D.equalsEpsilon(e.z,t.z,n,i)};ot.cross=function(e,t,n){let i=e.x,o=e.y,r=e.z,s=t.x,a=t.y,c=t.z,u=o*c-r*a,f=r*s-i*c,h=i*a-o*s;return n.x=u,n.y=f,n.z=h,n};ot.midpoint=function(e,t,n){return n.x=(e.x+t.x)*.5,n.y=(e.y+t.y)*.5,n.z=(e.z+t.z)*.5,n};ot.fromDegrees=function(e,t,n,i,o){return e=D.toRadians(e),t=D.toRadians(t),ot.fromRadians(e,t,n,i,o)};var mf=new ot,G0=new ot;ot._ellipsoidRadiiSquared=new ot(6378137*6378137,6378137*6378137,6356752314245179e-9*6356752314245179e-9);ot.fromRadians=function(e,t,n,i,o){n=n??0;let r=l(i)?i.radiiSquared:ot._ellipsoidRadiiSquared,s=Math.cos(t);mf.x=s*Math.cos(e),mf.y=s*Math.sin(e),mf.z=Math.sin(t),mf=ot.normalize(mf,mf),ot.multiplyComponents(r,mf,G0);let a=Math.sqrt(ot.dot(mf,G0));return G0=ot.divideByScalar(G0,a,G0),mf=ot.multiplyByScalar(mf,n,mf),l(o)||(o=new ot),ot.add(G0,mf,o)};ot.fromDegreesArray=function(e,t,n){let i=e.length;l(n)?n.length=i/2:n=new Array(i/2);for(let o=0;o<i;o+=2){let r=e[o],s=e[o+1],a=o/2;n[a]=ot.fromDegrees(r,s,0,t,n[a])}return n};ot.fromRadiansArray=function(e,t,n){let i=e.length;l(n)?n.length=i/2:n=new Array(i/2);for(let o=0;o<i;o+=2){let r=e[o],s=e[o+1],a=o/2;n[a]=ot.fromRadians(r,s,0,t,n[a])}return n};ot.fromDegreesArrayHeights=function(e,t,n){let i=e.length;l(n)?n.length=i/3:n=new Array(i/3);for(let o=0;o<i;o+=3){let r=e[o],s=e[o+1],a=e[o+2],c=o/3;n[c]=ot.fromDegrees(r,s,a,t,n[c])}return n};ot.fromRadiansArrayHeights=function(e,t,n){let i=e.length;l(n)?n.length=i/3:n=new Array(i/3);for(let o=0;o<i;o+=3){let r=e[o],s=e[o+1],a=e[o+2],c=o/3;n[c]=ot.fromRadians(r,s,a,t,n[c])}return n};ot.ZERO=Object.freeze(new ot(0,0,0));ot.ONE=Object.freeze(new ot(1,1,1));ot.UNIT_X=Object.freeze(new ot(1,0,0));ot.UNIT_Y=Object.freeze(new ot(0,1,0));ot.UNIT_Z=Object.freeze(new ot(0,0,1));ot.prototype.clone=function(e){return ot.clone(this,e)};ot.prototype.equals=function(e){return ot.equals(this,e)};ot.prototype.equalsEpsilon=function(e,t,n){return ot.equalsEpsilon(this,e,t,n)};ot.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z})`};var d=ot;var iwe=new d,owe=new d;function rwe(e,t,n,i,o){let r=e.x,s=e.y,a=e.z,c=t.x,u=t.y,f=t.z,h=r*r*c*c,A=s*s*u*u,g=a*a*f*f,m=h+A+g,_=Math.sqrt(1/m),y=d.multiplyByScalar(e,_,iwe);if(m<i)return isFinite(_)?d.clone(y,o):void 0;let C=n.x,E=n.y,I=n.z,b=owe;b.x=y.x*C*2,b.y=y.y*E*2,b.z=y.z*I*2;let S=(1-_)*d.magnitude(e)/(.5*d.magnitude(b)),B=0,v,P,N,L,p,x,T,w,M,O,U;do{S-=B,N=1/(1+S*C),L=1/(1+S*E),p=1/(1+S*I),x=N*N,T=L*L,w=p*p,M=x*N,O=T*L,U=w*p,v=h*x+A*T+g*w-1,P=h*M*C+A*O*E+g*U*I;let Q=-2*P;B=v/Q}while(Math.abs(v)>D.EPSILON12);return l(o)?(o.x=r*N,o.y=s*L,o.z=a*p,o):new d(r*N,s*L,a*p)}var z0=rwe;function Yo(e,t,n){this.longitude=e??0,this.latitude=t??0,this.height=n??0}Yo.fromRadians=function(e,t,n,i){return n=n??0,l(i)?(i.longitude=e,i.latitude=t,i.height=n,i):new Yo(e,t,n)};Yo.fromDegrees=function(e,t,n,i){return e=D.toRadians(e),t=D.toRadians(t),Yo.fromRadians(e,t,n,i)};var swe=new d,awe=new d,cwe=new d;Yo._ellipsoidOneOverRadii=new d(1/6378137,1/6378137,1/6356752314245179e-9);Yo._ellipsoidOneOverRadiiSquared=new d(1/(6378137*6378137),1/(6378137*6378137),1/(6356752314245179e-9*6356752314245179e-9));Yo._ellipsoidCenterToleranceSquared=D.EPSILON1;Yo.fromCartesian=function(e,t,n){let i=l(t)?t.oneOverRadii:Yo._ellipsoidOneOverRadii,o=l(t)?t.oneOverRadiiSquared:Yo._ellipsoidOneOverRadiiSquared,r=l(t)?t._centerToleranceSquared:Yo._ellipsoidCenterToleranceSquared,s=z0(e,i,o,r,awe);if(!l(s))return;let a=d.multiplyComponents(s,o,swe);a=d.normalize(a,a);let c=d.subtract(e,s,cwe),u=Math.atan2(a.y,a.x),f=Math.asin(a.z),h=D.sign(d.dot(c,e))*d.magnitude(c);return l(n)?(n.longitude=u,n.latitude=f,n.height=h,n):new Yo(u,f,h)};Yo.toCartesian=function(e,t,n){return d.fromRadians(e.longitude,e.latitude,e.height,t,n)};Yo.clone=function(e,t){if(l(e))return l(t)?(t.longitude=e.longitude,t.latitude=e.latitude,t.height=e.height,t):new Yo(e.longitude,e.latitude,e.height)};Yo.equals=function(e,t){return e===t||l(e)&&l(t)&&e.longitude===t.longitude&&e.latitude===t.latitude&&e.height===t.height};Yo.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.longitude-t.longitude)<=n&&Math.abs(e.latitude-t.latitude)<=n&&Math.abs(e.height-t.height)<=n};Yo.ZERO=Object.freeze(new Yo(0,0,0));Yo.prototype.clone=function(e){return Yo.clone(this,e)};Yo.prototype.equals=function(e){return Yo.equals(this,e)};Yo.prototype.equalsEpsilon=function(e,t){return Yo.equalsEpsilon(this,e,t)};Yo.prototype.toString=function(){return`(${this.longitude}, ${this.latitude}, ${this.height})`};var Ae=Yo;function _$(e,t,n,i){t=t??0,n=n??0,i=i??0,e._radii=new d(t,n,i),e._radiiSquared=new d(t*t,n*n,i*i),e._radiiToTheFourth=new d(t*t*t*t,n*n*n*n,i*i*i*i),e._oneOverRadii=new d(t===0?0:1/t,n===0?0:1/n,i===0?0:1/i),e._oneOverRadiiSquared=new d(t===0?0:1/(t*t),n===0?0:1/(n*n),i===0?0:1/(i*i)),e._minimumRadius=Math.min(t,n,i),e._maximumRadius=Math.max(t,n,i),e._centerToleranceSquared=D.EPSILON1,e._radiiSquared.z!==0&&(e._squaredXOverSquaredZ=e._radiiSquared.x/e._radiiSquared.z)}function Di(e,t,n){this._radii=void 0,this._radiiSquared=void 0,this._radiiToTheFourth=void 0,this._oneOverRadii=void 0,this._oneOverRadiiSquared=void 0,this._minimumRadius=void 0,this._maximumRadius=void 0,this._centerToleranceSquared=void 0,this._squaredXOverSquaredZ=void 0,_$(this,e,t,n)}Object.defineProperties(Di.prototype,{radii:{get:function(){return this._radii}},radiiSquared:{get:function(){return this._radiiSquared}},radiiToTheFourth:{get:function(){return this._radiiToTheFourth}},oneOverRadii:{get:function(){return this._oneOverRadii}},oneOverRadiiSquared:{get:function(){return this._oneOverRadiiSquared}},minimumRadius:{get:function(){return this._minimumRadius}},maximumRadius:{get:function(){return this._maximumRadius}}});Di.clone=function(e,t){if(!l(e))return;let n=e._radii;return l(t)?(d.clone(n,t._radii),d.clone(e._radiiSquared,t._radiiSquared),d.clone(e._radiiToTheFourth,t._radiiToTheFourth),d.clone(e._oneOverRadii,t._oneOverRadii),d.clone(e._oneOverRadiiSquared,t._oneOverRadiiSquared),t._minimumRadius=e._minimumRadius,t._maximumRadius=e._maximumRadius,t._centerToleranceSquared=e._centerToleranceSquared,t):new Di(n.x,n.y,n.z)};Di.fromCartesian3=function(e,t){return l(t)||(t=new Di),l(e)&&_$(t,e.x,e.y,e.z),t};Di.WGS84=Object.freeze(new Di(6378137,6378137,6356752314245179e-9));Di.UNIT_SPHERE=Object.freeze(new Di(1,1,1));Di.MOON=Object.freeze(new Di(D.LUNAR_RADIUS,D.LUNAR_RADIUS,D.LUNAR_RADIUS));Di._default=Di.WGS84;Object.defineProperties(Di,{default:{get:function(){return Di._default},set:function(e){Di._default=e,d._ellipsoidRadiiSquared=e.radiiSquared,Ae._ellipsoidOneOverRadii=e.oneOverRadii,Ae._ellipsoidOneOverRadiiSquared=e.oneOverRadiiSquared,Ae._ellipsoidCenterToleranceSquared=e._centerToleranceSquared}}});Di.prototype.clone=function(e){return Di.clone(this,e)};Di.packedLength=d.packedLength;Di.pack=function(e,t,n){return n=n??0,d.pack(e._radii,t,n),t};Di.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t);return Di.fromCartesian3(i,n)};Di.prototype.geocentricSurfaceNormal=d.normalize;Di.prototype.geodeticSurfaceNormalCartographic=function(e,t){let n=e.longitude,i=e.latitude,o=Math.cos(i),r=o*Math.cos(n),s=o*Math.sin(n),a=Math.sin(i);return l(t)||(t=new d),t.x=r,t.y=s,t.z=a,d.normalize(t,t)};Di.prototype.geodeticSurfaceNormal=function(e,t){if(!d.equalsEpsilon(e,d.ZERO,D.EPSILON14))return l(t)||(t=new d),t=d.multiplyComponents(e,this._oneOverRadiiSquared,t),d.normalize(t,t)};var lwe=new d,uwe=new d;Di.prototype.cartographicToCartesian=function(e,t){let n=lwe,i=uwe;this.geodeticSurfaceNormalCartographic(e,n),d.multiplyComponents(this._radiiSquared,n,i);let o=Math.sqrt(d.dot(n,i));return d.divideByScalar(i,o,i),d.multiplyByScalar(n,e.height,n),l(t)||(t=new d),d.add(i,n,t)};Di.prototype.cartographicArrayToCartesianArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;i++)t[i]=this.cartographicToCartesian(e[i],t[i]);return t};var fwe=new d,dwe=new d,hwe=new d;Di.prototype.cartesianToCartographic=function(e,t){let n=this.scaleToGeodeticSurface(e,dwe);if(!l(n))return;let i=this.geodeticSurfaceNormal(n,fwe),o=d.subtract(e,n,hwe),r=Math.atan2(i.y,i.x),s=Math.asin(i.z),a=D.sign(d.dot(o,e))*d.magnitude(o);return l(t)?(t.longitude=r,t.latitude=s,t.height=a,t):new Ae(r,s,a)};Di.prototype.cartesianArrayToCartographicArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;++i)t[i]=this.cartesianToCartographic(e[i],t[i]);return t};Di.prototype.scaleToGeodeticSurface=function(e,t){return z0(e,this._oneOverRadii,this._oneOverRadiiSquared,this._centerToleranceSquared,t)};Di.prototype.scaleToGeocentricSurface=function(e,t){l(t)||(t=new d);let n=e.x,i=e.y,o=e.z,r=this._oneOverRadiiSquared,s=1/Math.sqrt(n*n*r.x+i*i*r.y+o*o*r.z);return d.multiplyByScalar(e,s,t)};Di.prototype.transformPositionToScaledSpace=function(e,t){return l(t)||(t=new d),d.multiplyComponents(e,this._oneOverRadii,t)};Di.prototype.transformPositionFromScaledSpace=function(e,t){return l(t)||(t=new d),d.multiplyComponents(e,this._radii,t)};Di.prototype.equals=function(e){return this===e||l(e)&&d.equals(this._radii,e._radii)};Di.prototype.toString=function(){return this._radii.toString()};Di.prototype.getSurfaceNormalIntersectionWithZAxis=function(e,t,n){t=t??0;let i=this._squaredXOverSquaredZ;if(l(n)||(n=new d),n.x=0,n.y=0,n.z=e.z*(1-i),!(Math.abs(n.z)>=this._radii.z-t))return n};var mwe=new d;Di.prototype.getLocalCurvature=function(e,t){l(t)||(t=new k);let n=this.getSurfaceNormalIntersectionWithZAxis(e,0,mwe),i=d.distance(e,n),o=this.minimumRadius*i/this.maximumRadius**2,r=i*o**2;return k.fromElements(1/i,1/r,t)};var Awe=[.14887433898163,.43339539412925,.67940956829902,.86506336668898,.97390652851717,0],pwe=[.29552422471475,.26926671930999,.21908636251598,.14945134915058,.066671344308684,0];function g$(e,t,n){let i=.5*(t+e),o=.5*(t-e),r=0;for(let s=0;s<5;s++){let a=o*Awe[s];r+=pwe[s]*(n(i+a)+n(i-a))}return r*=o,r}Di.prototype.surfaceArea=function(e){let t=e.west,n=e.east,i=e.south,o=e.north;for(;n<t;)n+=D.TWO_PI;let r=this._radiiSquared,s=r.x,a=r.y,c=r.z,u=s*a;return g$(i,o,function(f){let h=Math.cos(f),A=Math.sin(f);return Math.cos(f)*g$(t,n,function(g){let m=Math.cos(g),_=Math.sin(g);return Math.sqrt(u*A*A+c*(a*m*m+s*_*_)*h*h)})})};var te=Di;function TR(e){this._ellipsoid=e??te.default,this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis}Object.defineProperties(TR.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});TR.prototype.project=function(e,t){let n=this._semimajorAxis,i=e.longitude*n,o=e.latitude*n,r=e.height;return l(t)?(t.x=i,t.y=o,t.z=r,t):new d(i,o,r)};TR.prototype.unproject=function(e,t){let n=this._oneOverSemimajorAxis,i=e.x*n,o=e.y*n,r=e.z;return l(t)?(t.longitude=i,t.latitude=o,t.height=r,t):new Ae(i,o,r)};var Hi=TR;var gwe={OUTSIDE:-1,INTERSECTING:0,INSIDE:1},nn=Object.freeze(gwe);function bt(e,t,n,i){this.x=e??0,this.y=t??0,this.z=n??0,this.w=i??0}bt.fromElements=function(e,t,n,i,o){return l(o)?(o.x=e,o.y=t,o.z=n,o.w=i,o):new bt(e,t,n,i)};bt.fromColor=function(e,t){return l(t)?(t.x=e.red,t.y=e.green,t.z=e.blue,t.w=e.alpha,t):new bt(e.red,e.green,e.blue,e.alpha)};bt.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new bt(e.x,e.y,e.z,e.w)};bt.packedLength=4;bt.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n++]=e.z,t[n]=e.w,t};bt.unpack=function(e,t,n){return t=t??0,l(n)||(n=new bt),n.x=e[t++],n.y=e[t++],n.z=e[t++],n.w=e[t],n};bt.packArray=function(e,t){let n=e.length,i=n*4;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)bt.pack(e[o],t,o*4);return t};bt.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/4:t=new Array(n/4);for(let i=0;i<n;i+=4){let o=i/4;t[o]=bt.unpack(e,i,t[o])}return t};bt.fromArray=bt.unpack;bt.maximumComponent=function(e){return Math.max(e.x,e.y,e.z,e.w)};bt.minimumComponent=function(e){return Math.min(e.x,e.y,e.z,e.w)};bt.minimumByComponent=function(e,t,n){return n.x=Math.min(e.x,t.x),n.y=Math.min(e.y,t.y),n.z=Math.min(e.z,t.z),n.w=Math.min(e.w,t.w),n};bt.maximumByComponent=function(e,t,n){return n.x=Math.max(e.x,t.x),n.y=Math.max(e.y,t.y),n.z=Math.max(e.z,t.z),n.w=Math.max(e.w,t.w),n};bt.clamp=function(e,t,n,i){let o=D.clamp(e.x,t.x,n.x),r=D.clamp(e.y,t.y,n.y),s=D.clamp(e.z,t.z,n.z),a=D.clamp(e.w,t.w,n.w);return i.x=o,i.y=r,i.z=s,i.w=a,i};bt.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w};bt.magnitude=function(e){return Math.sqrt(bt.magnitudeSquared(e))};var SR=new bt;bt.distance=function(e,t){return bt.subtract(e,t,SR),bt.magnitude(SR)};bt.distanceSquared=function(e,t){return bt.subtract(e,t,SR),bt.magnitudeSquared(SR)};bt.normalize=function(e,t){let n=bt.magnitude(e);return t.x=e.x/n,t.y=e.y/n,t.z=e.z/n,t.w=e.w/n,t};bt.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w};bt.multiplyComponents=function(e,t,n){return n.x=e.x*t.x,n.y=e.y*t.y,n.z=e.z*t.z,n.w=e.w*t.w,n};bt.divideComponents=function(e,t,n){return n.x=e.x/t.x,n.y=e.y/t.y,n.z=e.z/t.z,n.w=e.w/t.w,n};bt.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n};bt.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n};bt.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n};bt.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n};bt.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t};bt.abs=function(e,t){return t.x=Math.abs(e.x),t.y=Math.abs(e.y),t.z=Math.abs(e.z),t.w=Math.abs(e.w),t};var y$=new bt;bt.lerp=function(e,t,n,i){return bt.multiplyByScalar(t,n,y$),i=bt.multiplyByScalar(e,1-n,i),bt.add(y$,i,i)};var _we=new bt;bt.mostOrthogonalAxis=function(e,t){let n=bt.normalize(e,_we);return bt.abs(n,n),n.x<=n.y?n.x<=n.z?n.x<=n.w?t=bt.clone(bt.UNIT_X,t):t=bt.clone(bt.UNIT_W,t):n.z<=n.w?t=bt.clone(bt.UNIT_Z,t):t=bt.clone(bt.UNIT_W,t):n.y<=n.z?n.y<=n.w?t=bt.clone(bt.UNIT_Y,t):t=bt.clone(bt.UNIT_W,t):n.z<=n.w?t=bt.clone(bt.UNIT_Z,t):t=bt.clone(bt.UNIT_W,t),t};bt.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w};bt.equalsArray=function(e,t,n){return e.x===t[n]&&e.y===t[n+1]&&e.z===t[n+2]&&e.w===t[n+3]};bt.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&D.equalsEpsilon(e.x,t.x,n,i)&&D.equalsEpsilon(e.y,t.y,n,i)&&D.equalsEpsilon(e.z,t.z,n,i)&&D.equalsEpsilon(e.w,t.w,n,i)};bt.ZERO=Object.freeze(new bt(0,0,0,0));bt.ONE=Object.freeze(new bt(1,1,1,1));bt.UNIT_X=Object.freeze(new bt(1,0,0,0));bt.UNIT_Y=Object.freeze(new bt(0,1,0,0));bt.UNIT_Z=Object.freeze(new bt(0,0,1,0));bt.UNIT_W=Object.freeze(new bt(0,0,0,1));bt.prototype.clone=function(e){return bt.clone(this,e)};bt.prototype.equals=function(e){return bt.equals(this,e)};bt.prototype.equalsEpsilon=function(e,t,n){return bt.equalsEpsilon(this,e,t,n)};bt.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z}, ${this.w})`};var R5=new Float32Array(1),hc=new Uint8Array(R5.buffer),ywe=new Uint32Array([287454020]),Cwe=new Uint8Array(ywe.buffer),C$=Cwe[0]===68;bt.packFloat=function(e,t){return l(t)||(t=new bt),R5[0]=e,C$?(t.x=hc[0],t.y=hc[1],t.z=hc[2],t.w=hc[3]):(t.x=hc[3],t.y=hc[2],t.z=hc[1],t.w=hc[0]),t};bt.unpackFloat=function(e){return C$?(hc[0]=e.x,hc[1]=e.y,hc[2]=e.z,hc[3]=e.w):(hc[0]=e.w,hc[1]=e.z,hc[2]=e.y,hc[3]=e.x),R5[0]};var se=bt;function Ewe(e,t,n){let i=0,o=e.length-1,r,s;for(;i<=o;){if(r=~~((i+o)/2),s=n(e[r],t),s<0){i=r+1;continue}if(s>0){o=r-1;continue}return r}return~(o+1)}var qo=Ewe;function Iwe(e,t,n,i,o){this.xPoleWander=e,this.yPoleWander=t,this.xPoleOffset=n,this.yPoleOffset=i,this.ut1MinusUtc=o}var sC=Iwe;function xwe(e){return e%4===0&&e%100!==0||e%400===0}var Yh=xwe;var E$=[31,28,31,30,31,30,31,31,30,31,30,31];function bwe(e,t,n,i,o,r,s,a){e=e??1,t=t??1,n=n??1,i=i??0,o=o??0,r=r??0,s=s??0,a=a??!1,this.year=e,this.month=t,this.day=n,this.hour=i,this.minute=o,this.second=r,this.millisecond=s,this.isLeapSecond=a;function _(){Mo.typeOf.number.greaterThanOrEquals("Year",e,1),Mo.typeOf.number.lessThanOrEquals("Year",e,9999),Mo.typeOf.number.greaterThanOrEquals("Month",t,1),Mo.typeOf.number.lessThanOrEquals("Month",t,12),Mo.typeOf.number.greaterThanOrEquals("Day",n,1),Mo.typeOf.number.lessThanOrEquals("Day",n,31),Mo.typeOf.number.greaterThanOrEquals("Hour",i,0),Mo.typeOf.number.lessThanOrEquals("Hour",i,23),Mo.typeOf.number.greaterThanOrEquals("Minute",o,0),Mo.typeOf.number.lessThanOrEquals("Minute",o,59),Mo.typeOf.bool("IsLeapSecond",a),Mo.typeOf.number.greaterThanOrEquals("Second",r,0),Mo.typeOf.number.lessThanOrEquals("Second",r,a?60:59),Mo.typeOf.number.greaterThanOrEquals("Millisecond",s,0),Mo.typeOf.number.lessThan("Millisecond",s,1e3)}function y(){let C=t===2&&Yh(e)?E$[t-1]+1:E$[t-1];if(n>C)throw new me("Month and Day represents invalid date")}}var dg=bwe;function Twe(e,t){this.julianDate=e,this.offset=t}var so=Twe;var Swe={SECONDS_PER_MILLISECOND:.001,SECONDS_PER_MINUTE:60,MINUTES_PER_HOUR:60,HOURS_PER_DAY:24,SECONDS_PER_HOUR:3600,MINUTES_PER_DAY:1440,SECONDS_PER_DAY:86400,DAYS_PER_JULIAN_CENTURY:36525,PICOSECOND:1e-9,MODIFIED_JULIAN_DATE_DIFFERENCE:24000005e-1},ri=Object.freeze(Swe);var wwe={UTC:0,TAI:1},oi=Object.freeze(wwe);var x$=new dg,M5=[31,28,31,30,31,30,31,31,30,31,30,31],N5=29;function L5(e,t){return Ft.compare(e.julianDate,t.julianDate)}var V0=new so;function BR(e){V0.julianDate=e;let t=Ft.leapSeconds,n=qo(t,V0,L5);n<0&&(n=~n),n>=t.length&&(n=t.length-1);let i=t[n].offset;n>0&&Ft.secondsDifference(t[n].julianDate,e)>i&&(n--,i=t[n].offset),Ft.addSeconds(e,i,e)}function I$(e,t){V0.julianDate=e;let n=Ft.leapSeconds,i=qo(n,V0,L5);if(i<0&&(i=~i),i===0)return Ft.addSeconds(e,-n[0].offset,t);if(i>=n.length)return Ft.addSeconds(e,-n[i-1].offset,t);let o=Ft.secondsDifference(n[i].julianDate,e);if(o===0)return Ft.addSeconds(e,-n[i].offset,t);if(!(o<=1))return Ft.addSeconds(e,-n[--i].offset,t)}function hg(e,t,n){let i=t/ri.SECONDS_PER_DAY|0;return e+=i,t-=ri.SECONDS_PER_DAY*i,t<0&&(e--,t+=ri.SECONDS_PER_DAY),n.dayNumber=e,n.secondsOfDay=t,n}function O5(e,t,n,i,o,r,s){let a=(t-14)/12|0,c=e+4800+a,u=(1461*c/4|0)+(367*(t-2-12*a)/12|0)-(3*((c+100)/100|0)/4|0)+n-32075;i=i-12,i<0&&(i+=24);let f=r+(i*ri.SECONDS_PER_HOUR+o*ri.SECONDS_PER_MINUTE+s*ri.SECONDS_PER_MILLISECOND);return f>=43200&&(u-=1),[u,f]}var Bwe=/^(\d{4})$/,Dwe=/^(\d{4})-(\d{2})$/,vwe=/^(\d{4})-?(\d{3})$/,Pwe=/^(\d{4})-?W(\d{2})-?(\d{1})?$/,Rwe=/^(\d{4})-?(\d{2})-?(\d{2})$/,F5=/([Z+\-])?(\d{2})?:?(\d{2})?$/,Mwe=/^(\d{2})(\.\d+)?/.source+F5.source,Nwe=/^(\d{2}):?(\d{2})(\.\d+)?/.source+F5.source,Lwe=/^(\d{2}):?(\d{2}):?(\d{2})(\.\d+)?/.source+F5.source;function Ft(e,t,n){this.dayNumber=void 0,this.secondsOfDay=void 0,e=e??0,t=t??0,n=n??oi.UTC;let i=e|0;t=t+(e-i)*ri.SECONDS_PER_DAY,hg(i,t,this),n===oi.UTC&&BR(this)}Ft.fromGregorianDate=function(e,t){let n=O5(e.year,e.month,e.day,e.hour,e.minute,e.second,e.millisecond);return l(t)?(hg(n[0],n[1],t),BR(t),t):new Ft(n[0],n[1],oi.UTC)};Ft.fromDate=function(e,t){let n=O5(e.getUTCFullYear(),e.getUTCMonth()+1,e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds(),e.getUTCMilliseconds());return l(t)?(hg(n[0],n[1],t),BR(t),t):new Ft(n[0],n[1],oi.UTC)};Ft.fromIso8601=function(e,t){e=e.replace(",",".");let n=e.split("T"),i,o=1,r=1,s=0,a=0,c=0,u=0,f=n[0],h=n[1],A,g;if(n=f.match(Rwe),n!==null)i=+n[1],o=+n[2],r=+n[3];else if(n=f.match(Dwe),n!==null)i=+n[1],o=+n[2];else if(n=f.match(Bwe),n!==null)i=+n[1];else{let C;if(n=f.match(vwe),n!==null)i=+n[1],C=+n[2],g=Yh(i);else if(n=f.match(Pwe),n!==null){i=+n[1];let E=+n[2],I=+n[3]||0,b=new Date(Date.UTC(i,0,4));C=E*7+I-b.getUTCDay()-3}A=new Date(Date.UTC(i,0,1)),A.setUTCDate(C),o=A.getUTCMonth()+1,r=A.getUTCDate()}g=Yh(i);let m;if(l(h)){n=h.match(Lwe),n!==null?(s=+n[1],a=+n[2],c=+n[3],u=+(n[4]||0)*1e3,m=5):(n=h.match(Nwe),n!==null?(s=+n[1],a=+n[2],c=+(n[3]||0)*60,m=4):(n=h.match(Mwe),n!==null&&(s=+n[1],a=+(n[2]||0)*60,m=3)));let C=n[m],E=+n[m+1],I=+(n[m+2]||0);switch(C){case"+":s=s-E,a=a-I;break;case"-":s=s+E,a=a+I;break;case"Z":break;default:a=a+new Date(Date.UTC(i,o-1,r,s,a)).getTimezoneOffset();break}}let _=c===60;for(_&&c--;a>=60;)a-=60,s++;for(;s>=24;)s-=24,r++;for(A=g&&o===2?N5:M5[o-1];r>A;)r-=A,o++,o>12&&(o-=12,i++),A=g&&o===2?N5:M5[o-1];for(;a<0;)a+=60,s--;for(;s<0;)s+=24,r--;for(;r<1;)o--,o<1&&(o+=12,i--),A=g&&o===2?N5:M5[o-1],r+=A;let y=O5(i,o,r,s,a,c,u);return l(t)?(hg(y[0],y[1],t),BR(t)):t=new Ft(y[0],y[1],oi.UTC),_&&Ft.addSeconds(t,1,t),t};Ft.now=function(e){return Ft.fromDate(new Date,e)};var wR=new Ft(0,0,oi.TAI);Ft.toGregorianDate=function(e,t){let n=!1,i=I$(e,wR);l(i)||(Ft.addSeconds(e,-1,wR),i=I$(wR,wR),n=!0);let o=i.dayNumber,r=i.secondsOfDay;r>=43200&&(o+=1);let s=o+68569|0,a=4*s/146097|0;s=s-((146097*a+3)/4|0)|0;let c=4e3*(s+1)/1461001|0;s=s-(1461*c/4|0)+31|0;let u=80*s/2447|0,f=s-(2447*u/80|0)|0;s=u/11|0;let h=u+2-12*s|0,A=100*(a-49)+c+s|0,g=r/ri.SECONDS_PER_HOUR|0,m=r-g*ri.SECONDS_PER_HOUR,_=m/ri.SECONDS_PER_MINUTE|0;m=m-_*ri.SECONDS_PER_MINUTE;let y=m|0,C=(m-y)/ri.SECONDS_PER_MILLISECOND;return g+=12,g>23&&(g-=24),n&&(y+=1),l(t)?(t.year=A,t.month=h,t.day=f,t.hour=g,t.minute=_,t.second=y,t.millisecond=C,t.isLeapSecond=n,t):new dg(A,h,f,g,_,y,C,n)};Ft.toDate=function(e){let t=Ft.toGregorianDate(e,x$),n=t.second;return t.isLeapSecond&&(n-=1),new Date(Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,n,t.millisecond))};Ft.toIso8601=function(e,t){let n=Ft.toGregorianDate(e,x$),i=n.year,o=n.month,r=n.day,s=n.hour,a=n.minute,c=n.second,u=n.millisecond;i===1e4&&o===1&&r===1&&s===0&&a===0&&c===0&&u===0&&(i=9999,o=12,r=31,s=24);let f;if(!l(t)&&u!==0){let h=u*.01;return f=h<1e-6?h.toFixed(20).replace(".","").replace(/0+$/,""):h.toString().replace(".",""),`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}.${f}Z`}return!l(t)||t===0?`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}Z`:(f=(u*.01).toFixed(t).replace(".","").slice(0,t),`${i.toString().padStart(4,"0")}-${o.toString().padStart(2,"0")}-${r.toString().padStart(2,"0")}T${s.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}.${f}Z`)};Ft.clone=function(e,t){if(l(e))return l(t)?(t.dayNumber=e.dayNumber,t.secondsOfDay=e.secondsOfDay,t):new Ft(e.dayNumber,e.secondsOfDay,oi.TAI)};Ft.compare=function(e,t){let n=e.dayNumber-t.dayNumber;return n!==0?n:e.secondsOfDay-t.secondsOfDay};Ft.equals=function(e,t){return e===t||l(e)&&l(t)&&e.dayNumber===t.dayNumber&&e.secondsOfDay===t.secondsOfDay};Ft.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(Ft.secondsDifference(e,t))<=n};Ft.totalDays=function(e){return e.dayNumber+e.secondsOfDay/ri.SECONDS_PER_DAY};Ft.secondsDifference=function(e,t){return(e.dayNumber-t.dayNumber)*ri.SECONDS_PER_DAY+(e.secondsOfDay-t.secondsOfDay)};Ft.daysDifference=function(e,t){let n=e.dayNumber-t.dayNumber,i=(e.secondsOfDay-t.secondsOfDay)/ri.SECONDS_PER_DAY;return n+i};Ft.computeTaiMinusUtc=function(e){V0.julianDate=e;let t=Ft.leapSeconds,n=qo(t,V0,L5);return n<0&&(n=~n,--n,n<0&&(n=0)),t[n].offset};Ft.addSeconds=function(e,t,n){return hg(e.dayNumber,e.secondsOfDay+t,n)};Ft.addMinutes=function(e,t,n){let i=e.secondsOfDay+t*ri.SECONDS_PER_MINUTE;return hg(e.dayNumber,i,n)};Ft.addHours=function(e,t,n){let i=e.secondsOfDay+t*ri.SECONDS_PER_HOUR;return hg(e.dayNumber,i,n)};Ft.addDays=function(e,t,n){let i=e.dayNumber+t;return hg(i,e.secondsOfDay,n)};Ft.lessThan=function(e,t){return Ft.compare(e,t)<0};Ft.lessThanOrEquals=function(e,t){return Ft.compare(e,t)<=0};Ft.greaterThan=function(e,t){return Ft.compare(e,t)>0};Ft.greaterThanOrEquals=function(e,t){return Ft.compare(e,t)>=0};Ft.prototype.clone=function(e){return Ft.clone(this,e)};Ft.prototype.equals=function(e){return Ft.equals(this,e)};Ft.prototype.equalsEpsilon=function(e,t){return Ft.equalsEpsilon(this,e,t)};Ft.prototype.toString=function(){return Ft.toIso8601(this)};Ft.leapSeconds=[new so(new Ft(2441317,43210,oi.TAI),10),new so(new Ft(2441499,43211,oi.TAI),11),new so(new Ft(2441683,43212,oi.TAI),12),new so(new Ft(2442048,43213,oi.TAI),13),new so(new Ft(2442413,43214,oi.TAI),14),new so(new Ft(2442778,43215,oi.TAI),15),new so(new Ft(2443144,43216,oi.TAI),16),new so(new Ft(2443509,43217,oi.TAI),17),new so(new Ft(2443874,43218,oi.TAI),18),new so(new Ft(2444239,43219,oi.TAI),19),new so(new Ft(2444786,43220,oi.TAI),20),new so(new Ft(2445151,43221,oi.TAI),21),new so(new Ft(2445516,43222,oi.TAI),22),new so(new Ft(2446247,43223,oi.TAI),23),new so(new Ft(2447161,43224,oi.TAI),24),new so(new Ft(2447892,43225,oi.TAI),25),new so(new Ft(2448257,43226,oi.TAI),26),new so(new Ft(2448804,43227,oi.TAI),27),new so(new Ft(2449169,43228,oi.TAI),28),new so(new Ft(2449534,43229,oi.TAI),29),new so(new Ft(2450083,43230,oi.TAI),30),new so(new Ft(2450630,43231,oi.TAI),31),new so(new Ft(2451179,43232,oi.TAI),32),new so(new Ft(2453736,43233,oi.TAI),33),new so(new Ft(2454832,43234,oi.TAI),34),new so(new Ft(2456109,43235,oi.TAI),35),new so(new Ft(2457204,43236,oi.TAI),36),new so(new Ft(2457754,43237,oi.TAI),37)];var K=Ft;var z$=Es(_u(),1);function Owe(e){return(e.length===0||e[e.length-1]!=="/")&&(e=`${e}/`),e}var RR=Owe;function v$(e,t){if(e===null||typeof e!="object")return e;t=t??!1;let n=new e.constructor;for(let i in e)if(e.hasOwnProperty(i)){let o=e[i];t&&(o=v$(o,t)),n[i]=o}return n}var ze=v$;function P$(e,t,n){n=n??!1;let i={},o=l(e),r=l(t),s,a,c;if(o)for(s in e)e.hasOwnProperty(s)&&(a=e[s],r&&n&&typeof a=="object"&&t.hasOwnProperty(s)?(c=t[s],typeof c=="object"?i[s]=P$(a,c,n):i[s]=a):i[s]=a);if(r)for(s in t)t.hasOwnProperty(s)&&!i.hasOwnProperty(s)&&(c=t[s],i[s]=c);return i}var wt=P$;function Fwe(){let e,t,n=new Promise(function(i,o){e=i,t=o});return{resolve:e,reject:t,promise:n}}var yu=Fwe;var R$=Es(_u(),1);function Q5(e,t){let n;return typeof document<"u"&&(n=document),Q5._implementation(e,t,n)}Q5._implementation=function(e,t,n){if(!l(t)){if(typeof n>"u")return e;t=n.baseURI??n.location.href}let i=new R$.default(e);return i.scheme()!==""?i.toString():i.absoluteTo(t).toString()};var DA=Q5;var M$=Es(_u(),1);function Qwe(e,t){let n="",i=e.lastIndexOf("/");return i!==-1&&(n=e.substring(0,i+1)),t&&(e=new M$.default(e),e.query().length!==0&&(n+=`?${e.query()}`),e.fragment().length!==0&&(n+=`#${e.fragment()}`)),n}var MR=Qwe;var N$=Es(_u(),1);function kwe(e){let t=new N$.default(e);t.normalize();let n=t.path(),i=n.lastIndexOf("/");return i!==-1&&(n=n.substr(i+1)),i=n.lastIndexOf("."),i===-1?n="":n=n.substr(i+1),n}var j0=kwe;var L$={};function Uwe(e,t,n){l(t)||(t=e.width),l(n)||(n=e.height);let i=L$[t];l(i)||(i={},L$[t]=i);let o=i[n];if(!l(o)){let r=document.createElement("canvas");r.width=t,r.height=n,o=r.getContext("2d",{willReadFrequently:!0}),o.globalCompositeOperation="copy",i[n]=o}return o.drawImage(e,0,0,t,n),o.getImageData(0,0,t,n).data}var qh=Uwe;var Gwe=/^blob:/i;function zwe(e){return Gwe.test(e)}var Y0=zwe;var Kh;function Vwe(e){l(Kh)||(Kh=document.createElement("a")),Kh.href=window.location.href;let t=Kh.host,n=Kh.protocol;return Kh.href=e,Kh.href=Kh.href,n!==Kh.protocol||t!==Kh.host}var aC=Vwe;var Hwe=/^data:/i;function Wwe(e){return Hwe.test(e)}var mg=Wwe;function jwe(e){let t=document.createElement("script");return t.async=!0,t.src=e,new Promise((n,i)=>{window.crossOriginIsolated&&t.setAttribute("crossorigin","anonymous");let o=document.getElementsByTagName("head")[0];t.onload=function(){t.onload=void 0,o.removeChild(t),n()},t.onerror=function(r){i(r)},o.appendChild(t)})}var q0=jwe;function Ywe(e){let t="";for(let n in e)if(e.hasOwnProperty(n)){let i=e[n],o=`${encodeURIComponent(n)}=`;if(Array.isArray(i))for(let r=0,s=i.length;r<s;++r)t+=`${o+encodeURIComponent(i[r])}&`;else t+=`${o+encodeURIComponent(i)}&`}return t=t.slice(0,-1),t}var K0=Ywe;function qwe(e){let t={};if(e==="")return t;let n=e.replace(/\+/g,"%20").split(/[&;]/);for(let i=0,o=n.length;i<o;++i){let r=n[i].split("="),s=decodeURIComponent(r[0]),a=r[1];l(a)?a=decodeURIComponent(a):a="";let c=t[s];typeof c=="string"?t[s]=[c,a]:Array.isArray(c)?c.push(a):t[s]=a}return t}var Af=qwe;var Kwe={UNISSUED:0,ISSUED:1,ACTIVE:2,RECEIVED:3,CANCELLED:4,FAILED:5},hi=Object.freeze(Kwe);var Xwe={TERRAIN:0,IMAGERY:1,TILES3D:2,OTHER:3},Us=Object.freeze(Xwe);function NR(e){e=e??V.EMPTY_OBJECT;let t=e.throttleByServer??!1,n=e.throttle??!1;this.url=e.url,this.requestFunction=e.requestFunction,this.cancelFunction=e.cancelFunction,this.priorityFunction=e.priorityFunction,this.priority=e.priority??0,this.throttle=n,this.throttleByServer=t,this.type=e.type??Us.OTHER,this.serverKey=e.serverKey,this.state=hi.UNISSUED,this.deferred=void 0,this.cancelled=!1}NR.prototype.cancel=function(){this.cancelled=!0};NR.prototype.clone=function(e){return l(e)?(e.url=this.url,e.requestFunction=this.requestFunction,e.cancelFunction=this.cancelFunction,e.priorityFunction=this.priorityFunction,e.priority=this.priority,e.throttle=this.throttle,e.throttleByServer=this.throttleByServer,e.type=this.type,e.serverKey=this.serverKey,e.state=hi.UNISSUED,e.deferred=void 0,e.cancelled=!1,e):new NR(this)};var pr=NR;function Jwe(e){let t={};if(!e)return t;let n=e.split(`\r +`);for(let i=0;i<n.length;++i){let o=n[i],r=o.indexOf(": ");if(r>0){let s=o.substring(0,r),a=o.substring(r+2);t[s]=a}}return t}var LR=Jwe;function O$(e,t,n){this.statusCode=e,this.response=t,this.responseHeaders=n,typeof this.responseHeaders=="string"&&(this.responseHeaders=LR(this.responseHeaders))}O$.prototype.toString=function(){let e="Request has failed.";return l(this.statusCode)&&(e+=` Status Code: ${this.statusCode}`),e};var vA=O$;var FR=Es(_u(),1);function cC(e){this._comparator=e.comparator,this._array=[],this._length=0,this._maximumLength=void 0}Object.defineProperties(cC.prototype,{length:{get:function(){return this._length}},internalArray:{get:function(){return this._array}},maximumLength:{get:function(){return this._maximumLength},set:function(e){let t=this._length;if(e<t){let n=this._array;for(let i=e;i<t;++i)n[i]=void 0;this._length=e,n.length=e}this._maximumLength=e}},comparator:{get:function(){return this._comparator}}});function k5(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}cC.prototype.reserve=function(e){e=e??this._length,this._array.length=e};cC.prototype.heapify=function(e){e=e??0;let t=this._length,n=this._comparator,i=this._array,o=-1,r=!0;for(;r;){let s=2*(e+1),a=s-1;a<t&&n(i[a],i[e])<0?o=a:o=e,s<t&&n(i[s],i[o])<0&&(o=s),o!==e?(k5(i,o,e),e=o):r=!1}};cC.prototype.resort=function(){let e=this._length;for(let t=Math.ceil(e/2);t>=0;--t)this.heapify(t)};cC.prototype.insert=function(e){let t=this._array,n=this._comparator,i=this._maximumLength,o=this._length++;for(o<t.length?t[o]=e:t.push(e);o!==0;){let s=Math.floor((o-1)/2);if(n(t[o],t[s])<0)k5(t,o,s),o=s;else break}let r;return l(i)&&this._length>i&&(r=t[i],this._length=i),r};cC.prototype.pop=function(e){if(e=e??0,this._length===0)return;let t=this._array,n=t[e];return k5(t,e,--this._length),this.heapify(e),t[this._length]=void 0,n};var OR=cC;function Zwe(e,t){return e.priority-t.priority}var fo={numberOfAttemptedRequests:0,numberOfActiveRequests:0,numberOfCancelledRequests:0,numberOfCancelledActiveRequests:0,numberOfFailedRequests:0,numberOfActiveRequestsEver:0,lastNumberOfActiveRequests:0},X0=20,mc=new OR({comparator:Zwe});mc.maximumLength=X0;mc.reserve(X0);var Xh=[],PA={},$we=typeof document<"u"?new FR.default(document.location.href):new FR.default,QR=new _e;function tr(){}tr.maximumRequests=50;tr.maximumRequestsPerServer=18;tr.requestsByServer={};tr.throttleRequests=!0;tr.debugShowStatistics=!1;tr.requestCompletedEvent=QR;Object.defineProperties(tr,{statistics:{get:function(){return fo}},priorityHeapLength:{get:function(){return X0},set:function(e){if(e<X0)for(;mc.length>e;){let t=mc.pop();lC(t)}X0=e,mc.maximumLength=e,mc.reserve(e)}}});function F$(e){l(e.priorityFunction)&&(e.priority=e.priorityFunction())}tr.serverHasOpenSlots=function(e,t){t=t??1;let n=tr.requestsByServer[e]??tr.maximumRequestsPerServer;return PA[e]+t<=n};tr.heapHasOpenSlots=function(e){return mc.length+e<=X0};function Q$(e){return e.state===hi.UNISSUED&&(e.state=hi.ISSUED,e.deferred=yu()),e.deferred.promise}function eBe(e){return function(t){if(e.state===hi.CANCELLED)return;let n=e.deferred;--fo.numberOfActiveRequests,--PA[e.serverKey],QR.raiseEvent(),e.state=hi.RECEIVED,e.deferred=void 0,n.resolve(t)}}function tBe(e){return function(t){e.state!==hi.CANCELLED&&(++fo.numberOfFailedRequests,--fo.numberOfActiveRequests,--PA[e.serverKey],QR.raiseEvent(t),e.state=hi.FAILED,e.deferred.reject(t))}}function k$(e){let t=Q$(e);return e.state=hi.ACTIVE,Xh.push(e),++fo.numberOfActiveRequests,++fo.numberOfActiveRequestsEver,++PA[e.serverKey],e.requestFunction().then(eBe(e)).catch(tBe(e)),t}function lC(e){let t=e.state===hi.ACTIVE;if(e.state=hi.CANCELLED,++fo.numberOfCancelledRequests,l(e.deferred)){let n=e.deferred;e.deferred=void 0,n.reject()}t&&(--fo.numberOfActiveRequests,--PA[e.serverKey],++fo.numberOfCancelledActiveRequests),l(e.cancelFunction)&&e.cancelFunction()}tr.update=function(){let e,t,n=0,i=Xh.length;for(e=0;e<i;++e){if(t=Xh[e],t.cancelled&&lC(t),t.state!==hi.ACTIVE){++n;continue}n>0&&(Xh[e-n]=t)}Xh.length-=n;let o=mc.internalArray,r=mc.length;for(e=0;e<r;++e)F$(o[e]);mc.resort();let s=Math.max(tr.maximumRequests-Xh.length,0),a=0;for(;a<s&&mc.length>0;){if(t=mc.pop(),t.cancelled){lC(t);continue}if(t.throttleByServer&&!tr.serverHasOpenSlots(t.serverKey)){lC(t);continue}k$(t),++a}nBe()};tr.getServerKey=function(e){let t=new FR.default(e);t.scheme()===""&&(t=t.absoluteTo($we),t.normalize());let n=t.authority();/:/.test(n)||(n=`${n}:${t.scheme()==="https"?"443":"80"}`);let i=PA[n];return l(i)||(PA[n]=0),n};tr.request=function(e){if(mg(e.url)||Y0(e.url))return QR.raiseEvent(),e.state=hi.RECEIVED,e.requestFunction();if(++fo.numberOfAttemptedRequests,l(e.serverKey)||(e.serverKey=tr.getServerKey(e.url)),tr.throttleRequests&&e.throttleByServer&&!tr.serverHasOpenSlots(e.serverKey))return;if(!tr.throttleRequests||!e.throttle)return k$(e);if(Xh.length>=tr.maximumRequests)return;F$(e);let t=mc.insert(e);if(l(t)){if(t===e)return;lC(t)}return Q$(e)};function nBe(){tr.debugShowStatistics&&(fo.numberOfActiveRequests===0&&fo.lastNumberOfActiveRequests>0&&(fo.numberOfAttemptedRequests>0&&(console.log(`Number of attempted requests: ${fo.numberOfAttemptedRequests}`),fo.numberOfAttemptedRequests=0),fo.numberOfCancelledRequests>0&&(console.log(`Number of cancelled requests: ${fo.numberOfCancelledRequests}`),fo.numberOfCancelledRequests=0),fo.numberOfCancelledActiveRequests>0&&(console.log(`Number of cancelled active requests: ${fo.numberOfCancelledActiveRequests}`),fo.numberOfCancelledActiveRequests=0),fo.numberOfFailedRequests>0&&(console.log(`Number of failed requests: ${fo.numberOfFailedRequests}`),fo.numberOfFailedRequests=0)),fo.lastNumberOfActiveRequests=fo.numberOfActiveRequests)}tr.clearForSpecs=function(){for(;mc.length>0;){let t=mc.pop();lC(t)}let e=Xh.length;for(let t=0;t<e;++t)lC(Xh[t]);Xh.length=0,PA={},fo.numberOfAttemptedRequests=0,fo.numberOfActiveRequests=0,fo.numberOfCancelledRequests=0,fo.numberOfCancelledActiveRequests=0,fo.numberOfFailedRequests=0,fo.numberOfActiveRequestsEver=0,fo.lastNumberOfActiveRequests=0};tr.numberOfActiveRequestsByServer=function(e){return PA[e]};tr.requestHeap=mc;var Yc=tr;function US(e){this.name="RuntimeError",this.message=e;let t;try{throw new Error}catch(n){t=n.stack}this.stack=t}l(Object.create)&&(US.prototype=Object.create(Error.prototype),US.prototype.constructor=US);US.prototype.toString=function(){let e=`${this.name}: ${this.message}`;return l(this.stack)&&(e+=` +${this.stack.toString()}`),e};var ce=US;var U$=Es(_u(),1);var GS={},J0={};GS.add=function(e,t){let n=`${e.toLowerCase()}:${t}`;l(J0[n])||(J0[n]=!0)};GS.remove=function(e,t){let n=`${e.toLowerCase()}:${t}`;l(J0[n])&&delete J0[n]};function iBe(e){let t=new U$.default(e);t.normalize();let n=t.authority();if(n.length!==0){if(t.authority(n),n.indexOf("@")!==-1&&(n=n.split("@")[1]),n.indexOf(":")===-1){let i=t.scheme();if(i.length===0&&(i=window.location.protocol,i=i.substring(0,i.length-1)),i==="http")n+=":80";else if(i==="https")n+=":443";else return}return n}}GS.contains=function(e){let t=iBe(e);return!!(l(t)&&l(J0[t]))};GS.clear=function(){J0={}};var zS=GS;var V$=function(){try{let e=new XMLHttpRequest;return e.open("GET","#",!0),e.responseType="blob",e.responseType==="blob"}catch{return!1}}();function Mt(e){e=e??V.EMPTY_OBJECT,typeof e=="string"&&(e={url:e}),this._url=void 0,this._templateValues=Jh(e.templateValues,{}),this._queryParameters=Jh(e.queryParameters,{}),this.headers=Jh(e.headers,{}),this.request=e.request??new pr,this.proxy=e.proxy,this.retryCallback=e.retryCallback,this.retryAttempts=e.retryAttempts??0,this._retryCount=0,e.parseUrl??!0?this.parseUrl(e.url,!0,!0):this._url=e.url,this._credits=e.credits}function Jh(e,t){return l(e)?ze(e):t}Mt.createIfNeeded=function(e){return e instanceof Mt?e.getDerivedResource({request:e.request}):typeof e!="string"?e:new Mt({url:e})};var Z0;Mt.supportsImageBitmapOptions=function(){return l(Z0)?Z0:typeof createImageBitmap!="function"?(Z0=Promise.resolve(!1),Z0):(Z0=Mt.fetchBlob({url:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAABGdBTUEAAE4g3rEiDgAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADElEQVQI12Ng6GAAAAEUAIngE3ZiAAAAAElFTkSuQmCC"}).then(function(t){let n={imageOrientation:"flipY",premultiplyAlpha:"none",colorSpaceConversion:"none"};return Promise.all([createImageBitmap(t,n),createImageBitmap(t)])}).then(function(t){let n=qh(t[0]),i=qh(t[1]);return n[1]!==i[1]}).catch(function(){return!1}),Z0)};Object.defineProperties(Mt,{isBlobSupported:{get:function(){return V$}}});Object.defineProperties(Mt.prototype,{queryParameters:{get:function(){return this._queryParameters}},templateValues:{get:function(){return this._templateValues}},url:{get:function(){return this.getUrlComponent(!0,!0)},set:function(e){this.parseUrl(e,!1,!1)}},extension:{get:function(){return j0(this._url)}},isDataUri:{get:function(){return mg(this._url)}},isBlobUri:{get:function(){return Y0(this._url)}},isCrossOriginUrl:{get:function(){return aC(this._url)}},hasHeaders:{get:function(){return Object.keys(this.headers).length>0}},credits:{get:function(){return this._credits}}});Mt.prototype.toString=function(){return this.getUrlComponent(!0,!0)};Mt.prototype.parseUrl=function(e,t,n,i){let o=new z$.default(e),r=oBe(o.query());this._queryParameters=t?UR(r,this.queryParameters,n):r,o.search(""),o.fragment(""),l(i)&&o.scheme()===""&&(o=o.absoluteTo(DA(i))),this._url=o.toString()};function oBe(e){return e.length===0?{}:e.indexOf("=")===-1?{[e]:void 0}:Af(e)}function UR(e,t,n){if(!n)return wt(e,t);let i=ze(e,!0);for(let o in t)if(t.hasOwnProperty(o)){let r=i[o],s=t[o];l(r)?(Array.isArray(r)||(r=i[o]=[r]),i[o]=r.concat(s)):i[o]=Array.isArray(s)?s.slice():s}return i}Mt.prototype.getUrlComponent=function(e,t){if(this.isDataUri)return this._url;let n=this._url;e&&(n=`${n}${rBe(this.queryParameters)}`),n=n.replace(/%7B/g,"{").replace(/%7D/g,"}");let i=this._templateValues;return Object.keys(i).length>0&&(n=n.replace(/{(.*?)}/g,function(o,r){let s=i[r];return l(s)?encodeURIComponent(s):o})),t&&l(this.proxy)&&(n=this.proxy.getURL(n)),n};function rBe(e){let t=Object.keys(e);return t.length===0?"":t.length===1&&!l(e[t[0]])?`?${t[0]}`:`?${K0(e)}`}Mt.prototype.setQueryParameters=function(e,t){t?this._queryParameters=UR(this._queryParameters,e,!1):this._queryParameters=UR(e,this._queryParameters,!1)};Mt.prototype.appendQueryParameters=function(e){this._queryParameters=UR(e,this._queryParameters,!0)};Mt.prototype.setTemplateValues=function(e,t){t?this._templateValues=wt(this._templateValues,e):this._templateValues=wt(e,this._templateValues)};Mt.prototype.getDerivedResource=function(e){let t=this.clone();if(t._retryCount=0,l(e.url)){let n=e.preserveQueryParameters??!1;t.parseUrl(e.url,!0,n,this._url)}return l(e.queryParameters)&&(t._queryParameters=wt(e.queryParameters,t.queryParameters)),l(e.templateValues)&&(t._templateValues=wt(e.templateValues,t.templateValues)),l(e.headers)&&(t.headers=wt(e.headers,t.headers)),l(e.proxy)&&(t.proxy=e.proxy),l(e.request)&&(t.request=e.request),l(e.retryCallback)&&(t.retryCallback=e.retryCallback),l(e.retryAttempts)&&(t.retryAttempts=e.retryAttempts),t};Mt.prototype.retryOnError=function(e){let t=this.retryCallback;if(typeof t!="function"||this._retryCount>=this.retryAttempts)return Promise.resolve(!1);let n=this;return Promise.resolve(t(this,e)).then(function(i){return++n._retryCount,i})};Mt.prototype.clone=function(e){return l(e)?(e._url=this._url,e._queryParameters=ze(this._queryParameters),e._templateValues=ze(this._templateValues),e.headers=ze(this.headers),e.proxy=this.proxy,e.retryCallback=this.retryCallback,e.retryAttempts=this.retryAttempts,e._retryCount=0,e.request=this.request.clone(),e):new Mt({url:this._url,queryParameters:this.queryParameters,templateValues:this.templateValues,headers:this.headers,proxy:this.proxy,retryCallback:this.retryCallback,retryAttempts:this.retryAttempts,request:this.request.clone(),parseUrl:!1,credits:l(this.credits)?this.credits.slice():void 0})};Mt.prototype.getBaseUri=function(e){return MR(this.getUrlComponent(e),e)};Mt.prototype.appendForwardSlash=function(){this._url=RR(this._url)};Mt.prototype.fetchArrayBuffer=function(){return this.fetch({responseType:"arraybuffer"})};Mt.fetchArrayBuffer=function(e){return new Mt(e).fetchArrayBuffer()};Mt.prototype.fetchBlob=function(){return this.fetch({responseType:"blob"})};Mt.fetchBlob=function(e){return new Mt(e).fetchBlob()};Mt.prototype.fetchImage=function(e){e=e??V.EMPTY_OBJECT;let t=e.preferImageBitmap??!1,n=e.preferBlob??!1,i=e.flipY??!1,o=e.skipColorSpaceConversion??!1;if(G5(this.request),!V$||this.isDataUri||this.isBlobUri||!this.hasHeaders&&!n)return U5({resource:this,flipY:i,skipColorSpaceConversion:o,preferImageBitmap:t});let r=this.fetchBlob();if(!l(r))return;let s,a,c,u;return Mt.supportsImageBitmapOptions().then(function(f){return s=f,a=s&&t,r}).then(function(f){if(!l(f))return;if(u=f,a)return Mt.createImageBitmapFromBlob(f,{flipY:i,premultiplyAlpha:!1,skipColorSpaceConversion:o});let h=window.URL.createObjectURL(f);return c=new Mt({url:h}),U5({resource:c,flipY:i,skipColorSpaceConversion:o,preferImageBitmap:!1})}).then(function(f){if(l(f))return f.blob=u,a||window.URL.revokeObjectURL(c.url),f}).catch(function(f){return l(c)&&window.URL.revokeObjectURL(c.url),f.blob=u,Promise.reject(f)})};function U5(e){let t=e.resource,n=e.flipY,i=e.skipColorSpaceConversion,o=e.preferImageBitmap,r=t.request;r.url=t.url,r.requestFunction=function(){let a=!1;!t.isDataUri&&!t.isBlobUri&&(a=t.isCrossOriginUrl);let c=yu();return Mt._Implementations.createImage(r,a,c,n,i,o),c.promise};let s=Yc.request(r);if(l(s))return s.catch(function(a){return r.state!==hi.FAILED?Promise.reject(a):t.retryOnError(a).then(function(c){return c?(r.state=hi.UNISSUED,r.deferred=void 0,U5({resource:t,flipY:n,skipColorSpaceConversion:i,preferImageBitmap:o})):Promise.reject(a)})})}Mt.fetchImage=function(e){return new Mt(e).fetchImage({flipY:e.flipY,skipColorSpaceConversion:e.skipColorSpaceConversion,preferBlob:e.preferBlob,preferImageBitmap:e.preferImageBitmap})};Mt.prototype.fetchText=function(){return this.fetch({responseType:"text"})};Mt.fetchText=function(e){return new Mt(e).fetchText()};Mt.prototype.fetchJson=function(){let e=this.fetch({responseType:"text",headers:{Accept:"application/json,*/*;q=0.01"}});if(l(e))return e.then(function(t){if(l(t))return JSON.parse(t)})};Mt.fetchJson=function(e){return new Mt(e).fetchJson()};Mt.prototype.fetchXML=function(){return this.fetch({responseType:"document",overrideMimeType:"text/xml"})};Mt.fetchXML=function(e){return new Mt(e).fetchXML()};Mt.prototype.fetchJsonp=function(e){e=e??"callback",G5(this.request);let t;do t=`loadJsonp${D.nextRandomNumber().toString().substring(2,8)}`;while(l(window[t]));return H$(this,e,t)};function H$(e,t,n){let i={};i[t]=n,e.setQueryParameters(i);let o=e.request,r=e.url;o.url=r,o.requestFunction=function(){let a=yu();return window[n]=function(c){a.resolve(c);try{delete window[n]}catch{window[n]=void 0}},Mt._Implementations.loadAndExecuteScript(r,n,a),a.promise};let s=Yc.request(o);if(l(s))return s.catch(function(a){return o.state!==hi.FAILED?Promise.reject(a):e.retryOnError(a).then(function(c){return c?(o.state=hi.UNISSUED,o.deferred=void 0,H$(e,t,n)):Promise.reject(a)})})}Mt.fetchJsonp=function(e){return new Mt(e).fetchJsonp(e.callbackParameterName)};Mt.prototype._makeRequest=function(e){let t=this;G5(t.request);let n=t.request,i=t.url;n.url=i,n.requestFunction=function(){let r=e.responseType,s=wt(e.headers,t.headers),a=e.overrideMimeType,c=e.method,u=e.data,f=yu(),h=Mt._Implementations.loadWithXhr(i,r,c,u,s,f,a);return l(h)&&l(h.abort)&&(n.cancelFunction=function(){h.abort()}),f.promise};let o=Yc.request(n);if(l(o))return o.then(function(r){return n.cancelFunction=void 0,r}).catch(function(r){return n.cancelFunction=void 0,n.state!==hi.FAILED?Promise.reject(r):t.retryOnError(r).then(function(s){return s?(n.state=hi.UNISSUED,n.deferred=void 0,t.fetch(e)):Promise.reject(r)})})};function G5(e){if(e.state===hi.ISSUED||e.state===hi.ACTIVE)throw new ce("The Resource is already being fetched.");e.state=hi.UNISSUED,e.deferred=void 0}var sBe=/^data:(.*?)(;base64)?,(.*)$/;function kR(e,t){let n=decodeURIComponent(t);return e?atob(n):n}function G$(e,t){let n=kR(e,t),i=new ArrayBuffer(n.length),o=new Uint8Array(i);for(let r=0;r<n.length;r++)o[r]=n.charCodeAt(r);return i}function aBe(e,t){t=t??"";let n=e[1],i=!!e[2],o=e[3],r,s;switch(t){case"":case"text":return kR(i,o);case"arraybuffer":return G$(i,o);case"blob":return r=G$(i,o),new Blob([r],{type:n});case"document":return s=new DOMParser,s.parseFromString(kR(i,o),n);case"json":return JSON.parse(kR(i,o));default:}}Mt.prototype.fetch=function(e){return e=Jh(e,{}),e.method="GET",this._makeRequest(e)};Mt.fetch=function(e){return new Mt(e).fetch({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Mt.prototype.delete=function(e){return e=Jh(e,{}),e.method="DELETE",this._makeRequest(e)};Mt.delete=function(e){return new Mt(e).delete({responseType:e.responseType,overrideMimeType:e.overrideMimeType,data:e.data})};Mt.prototype.head=function(e){return e=Jh(e,{}),e.method="HEAD",this._makeRequest(e)};Mt.head=function(e){return new Mt(e).head({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Mt.prototype.options=function(e){return e=Jh(e,{}),e.method="OPTIONS",this._makeRequest(e)};Mt.options=function(e){return new Mt(e).options({responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Mt.prototype.post=function(e,t){return Mo.defined("data",e),t=Jh(t,{}),t.method="POST",t.data=e,this._makeRequest(t)};Mt.post=function(e){return new Mt(e).post(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Mt.prototype.put=function(e,t){return Mo.defined("data",e),t=Jh(t,{}),t.method="PUT",t.data=e,this._makeRequest(t)};Mt.put=function(e){return new Mt(e).put(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Mt.prototype.patch=function(e,t){return Mo.defined("data",e),t=Jh(t,{}),t.method="PATCH",t.data=e,this._makeRequest(t)};Mt.patch=function(e){return new Mt(e).patch(e.data,{responseType:e.responseType,overrideMimeType:e.overrideMimeType})};Mt._Implementations={};Mt._Implementations.loadImageElement=function(e,t,n){let i=new Image;i.onload=function(){i.naturalWidth===0&&i.naturalHeight===0&&i.width===0&&i.height===0&&(i.width=300,i.height=150),n.resolve(i)},i.onerror=function(o){n.reject(o)},t&&(zS.contains(e)?i.crossOrigin="use-credentials":i.crossOrigin=""),i.src=e};Mt._Implementations.createImage=function(e,t,n,i,o,r){let s=e.url;Mt.supportsImageBitmapOptions().then(function(a){if(!(a&&r)){Mt._Implementations.loadImageElement(s,t,n);return}let c="blob",u="GET",f=yu(),h=Mt._Implementations.loadWithXhr(s,c,u,void 0,void 0,f,void 0,void 0,void 0);return l(h)&&l(h.abort)&&(e.cancelFunction=function(){h.abort()}),f.promise.then(function(A){if(!l(A)){n.reject(new ce(`Successfully retrieved ${s} but it contained no content.`));return}return Mt.createImageBitmapFromBlob(A,{flipY:i,premultiplyAlpha:!1,skipColorSpaceConversion:o})}).then(function(A){n.resolve(A)})}).catch(function(a){n.reject(a)})};Mt.createImageBitmapFromBlob=function(e,t){return Mo.defined("options",t),Mo.typeOf.bool("options.flipY",t.flipY),Mo.typeOf.bool("options.premultiplyAlpha",t.premultiplyAlpha),Mo.typeOf.bool("options.skipColorSpaceConversion",t.skipColorSpaceConversion),createImageBitmap(e,{imageOrientation:t.flipY?"flipY":"from-image",premultiplyAlpha:t.premultiplyAlpha?"premultiply":"none",colorSpaceConversion:t.skipColorSpaceConversion?"none":"default"})};function cBe(e,t,n,i,o,r,s){fetch(e,{method:n,headers:o}).then(async a=>{if(!a.ok){let c={};a.headers.forEach((u,f)=>{c[f]=u}),r.reject(new vA(a.status,a,c));return}switch(t){case"text":r.resolve(a.text());break;case"json":r.resolve(a.json());break;default:r.resolve(new Uint8Array(await a.arrayBuffer()).buffer);break}}).catch(()=>{r.reject(new vA)})}var lBe=typeof XMLHttpRequest>"u";Mt._Implementations.loadWithXhr=function(e,t,n,i,o,r,s){let a=sBe.exec(e);if(a!==null){r.resolve(aBe(a,t));return}if(lBe){cBe(e,t,n,i,o,r,s);return}let c=new XMLHttpRequest;if(zS.contains(e)&&(c.withCredentials=!0),c.open(n,e,!0),l(s)&&l(c.overrideMimeType)&&c.overrideMimeType(s),l(o))for(let f in o)o.hasOwnProperty(f)&&c.setRequestHeader(f,o[f]);l(t)&&(c.responseType=t);let u=!1;return typeof e=="string"&&(u=e.indexOf("file://")===0||typeof window<"u"&&window.location.origin==="file://"),c.onload=function(){if((c.status<200||c.status>=300)&&!(u&&c.status===0)){r.reject(new vA(c.status,c.response,c.getAllResponseHeaders()));return}let f=c.response,h=c.responseType;if(n==="HEAD"||n==="OPTIONS"){let g=c.getAllResponseHeaders().trim().split(/[\r\n]+/),m={};g.forEach(function(_){let y=_.split(": "),C=y.shift();m[C]=y.join(": ")}),r.resolve(m);return}if(c.status===204)r.resolve(void 0);else if(l(f)&&(!l(t)||h===t))r.resolve(f);else if(t==="json"&&typeof f=="string")try{r.resolve(JSON.parse(f))}catch(A){r.reject(A)}else(h===""||h==="document")&&l(c.responseXML)&&c.responseXML.hasChildNodes()?r.resolve(c.responseXML):(h===""||h==="text")&&l(c.responseText)?r.resolve(c.responseText):r.reject(new ce("Invalid XMLHttpRequest response type."))},c.onerror=function(f){r.reject(new vA)},c.send(i),c};Mt._Implementations.loadAndExecuteScript=function(e,t,n){return q0(e,t).catch(function(i){n.reject(i)})};Mt._DefaultImplementations={};Mt._DefaultImplementations.createImage=Mt._Implementations.createImage;Mt._DefaultImplementations.loadWithXhr=Mt._Implementations.loadWithXhr;Mt._DefaultImplementations.loadAndExecuteScript=Mt._Implementations.loadAndExecuteScript;Mt.DEFAULT=Object.freeze(new Mt({url:typeof document>"u"?"":document.location.href.split("?")[0]}));var we=Mt;function HS(e){e=e??V.EMPTY_OBJECT,this._dates=void 0,this._samples=void 0,this._dateColumn=-1,this._xPoleWanderRadiansColumn=-1,this._yPoleWanderRadiansColumn=-1,this._ut1MinusUtcSecondsColumn=-1,this._xCelestialPoleOffsetRadiansColumn=-1,this._yCelestialPoleOffsetRadiansColumn=-1,this._taiMinusUtcSecondsColumn=-1,this._columnCount=0,this._lastIndex=-1,this._addNewLeapSeconds=e.addNewLeapSeconds??!0,l(e.data)?W$(this,e.data):W$(this,{columnNames:["dateIso8601","modifiedJulianDateUtc","xPoleWanderRadians","yPoleWanderRadians","ut1MinusUtcSeconds","lengthOfDayCorrectionSeconds","xCelestialPoleOffsetRadians","yCelestialPoleOffsetRadians","taiMinusUtcSeconds"],samples:[]})}HS.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=we.createIfNeeded(e),i;try{i=await n.fetchJson()}catch{throw new ce(`An error occurred while retrieving the EOP data from the URL ${n.url}.`)}return new HS({addNewLeapSeconds:t.addNewLeapSeconds,data:i})};HS.NONE=Object.freeze({compute:function(e,t){return l(t)?(t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0):t=new sC(0,0,0,0,0),t}});HS.prototype.compute=function(e,t){if(!l(this._samples))return;if(l(t)||(t=new sC(0,0,0,0,0)),this._samples.length===0)return t.xPoleWander=0,t.yPoleWander=0,t.xPoleOffset=0,t.yPoleOffset=0,t.ut1MinusUtc=0,t;let n=this._dates,i=this._lastIndex,o=0,r=0;if(l(i)){let a=n[i],c=n[i+1],u=K.lessThanOrEquals(a,e),f=!l(c),h=f||K.greaterThanOrEquals(c,e);if(u&&h)return o=i,!f&&c.equals(e)&&++o,r=o+1,Y$(this,n,this._samples,e,o,r,t),t}let s=qo(n,e,K.compare,this._dateColumn);return s>=0?(s<n.length-1&&n[s+1].equals(e)&&++s,o=s,r=s):(r=~s,o=r-1,o<0&&(o=0)),this._lastIndex=o,Y$(this,n,this._samples,e,o,r,t),t};function uBe(e,t){return K.compare(e.julianDate,t)}function W$(e,t){if(!l(t.columnNames))throw new ce("Error in loaded EOP data: The columnNames property is required.");if(!l(t.samples))throw new ce("Error in loaded EOP data: The samples property is required.");let n=t.columnNames.indexOf("modifiedJulianDateUtc"),i=t.columnNames.indexOf("xPoleWanderRadians"),o=t.columnNames.indexOf("yPoleWanderRadians"),r=t.columnNames.indexOf("ut1MinusUtcSeconds"),s=t.columnNames.indexOf("xCelestialPoleOffsetRadians"),a=t.columnNames.indexOf("yCelestialPoleOffsetRadians"),c=t.columnNames.indexOf("taiMinusUtcSeconds");if(n<0||i<0||o<0||r<0||s<0||a<0||c<0)throw new ce("Error in loaded EOP data: The columnNames property must include modifiedJulianDateUtc, xPoleWanderRadians, yPoleWanderRadians, ut1MinusUtcSeconds, xCelestialPoleOffsetRadians, yCelestialPoleOffsetRadians, and taiMinusUtcSeconds columns");let u=e._samples=t.samples,f=e._dates=[];e._dateColumn=n,e._xPoleWanderRadiansColumn=i,e._yPoleWanderRadiansColumn=o,e._ut1MinusUtcSecondsColumn=r,e._xCelestialPoleOffsetRadiansColumn=s,e._yCelestialPoleOffsetRadiansColumn=a,e._taiMinusUtcSecondsColumn=c,e._columnCount=t.columnNames.length,e._lastIndex=void 0;let h,A=e._addNewLeapSeconds;for(let g=0,m=u.length;g<m;g+=e._columnCount){let _=u[g+n],y=u[g+c],C=_+ri.MODIFIED_JULIAN_DATE_DIFFERENCE,E=new K(C,y,oi.TAI);if(f.push(E),A){if(y!==h&&l(h)){let I=K.leapSeconds,b=qo(I,E,uBe);if(b<0){let S=new so(E,y);I.splice(~b,0,S)}}h=y}}}function j$(e,t,n,i,o){let r=n*i;o.xPoleWander=t[r+e._xPoleWanderRadiansColumn],o.yPoleWander=t[r+e._yPoleWanderRadiansColumn],o.xPoleOffset=t[r+e._xCelestialPoleOffsetRadiansColumn],o.yPoleOffset=t[r+e._yCelestialPoleOffsetRadiansColumn],o.ut1MinusUtc=t[r+e._ut1MinusUtcSecondsColumn]}function VS(e,t,n){return t+e*(n-t)}function Y$(e,t,n,i,o,r,s){let a=e._columnCount;if(r>t.length-1)return s.xPoleWander=0,s.yPoleWander=0,s.xPoleOffset=0,s.yPoleOffset=0,s.ut1MinusUtc=0,s;let c=t[o],u=t[r];if(c.equals(u)||i.equals(c))return j$(e,n,o,a,s),s;if(i.equals(u))return j$(e,n,r,a,s),s;let f=K.secondsDifference(i,c)/K.secondsDifference(u,c),h=o*a,A=r*a,g=n[h+e._ut1MinusUtcSecondsColumn],m=n[A+e._ut1MinusUtcSecondsColumn],_=m-g;if(_>.5||_<-.5){let y=n[h+e._taiMinusUtcSecondsColumn],C=n[A+e._taiMinusUtcSecondsColumn];y!==C&&(u.equals(i)?g=m:m-=C-y)}return s.xPoleWander=VS(f,n[h+e._xPoleWanderRadiansColumn],n[A+e._xPoleWanderRadiansColumn]),s.yPoleWander=VS(f,n[h+e._yPoleWanderRadiansColumn],n[A+e._yPoleWanderRadiansColumn]),s.xPoleOffset=VS(f,n[h+e._xCelestialPoleOffsetRadiansColumn],n[A+e._xCelestialPoleOffsetRadiansColumn]),s.yPoleOffset=VS(f,n[h+e._yCelestialPoleOffsetRadiansColumn],n[A+e._yCelestialPoleOffsetRadiansColumn]),s.ut1MinusUtc=VS(f,g,m),s}var GR=HS;function Ac(e,t,n){this.heading=e??0,this.pitch=t??0,this.roll=n??0}Ac.fromQuaternion=function(e,t){l(t)||(t=new Ac);let n=2*(e.w*e.y-e.z*e.x),i=1-2*(e.x*e.x+e.y*e.y),o=2*(e.w*e.x+e.y*e.z),r=1-2*(e.y*e.y+e.z*e.z),s=2*(e.w*e.z+e.x*e.y);return t.heading=-Math.atan2(s,r),t.roll=Math.atan2(o,i),t.pitch=-D.asinClamped(n),t};Ac.fromDegrees=function(e,t,n,i){return l(i)||(i=new Ac),i.heading=e*D.RADIANS_PER_DEGREE,i.pitch=t*D.RADIANS_PER_DEGREE,i.roll=n*D.RADIANS_PER_DEGREE,i};Ac.clone=function(e,t){if(l(e))return l(t)?(t.heading=e.heading,t.pitch=e.pitch,t.roll=e.roll,t):new Ac(e.heading,e.pitch,e.roll)};Ac.equals=function(e,t){return e===t||l(e)&&l(t)&&e.heading===t.heading&&e.pitch===t.pitch&&e.roll===t.roll};Ac.equalsEpsilon=function(e,t,n,i){return e===t||l(e)&&l(t)&&D.equalsEpsilon(e.heading,t.heading,n,i)&&D.equalsEpsilon(e.pitch,t.pitch,n,i)&&D.equalsEpsilon(e.roll,t.roll,n,i)};Ac.prototype.clone=function(e){return Ac.clone(this,e)};Ac.prototype.equals=function(e){return Ac.equals(this,e)};Ac.prototype.equalsEpsilon=function(e,t,n){return Ac.equalsEpsilon(this,e,t,n)};Ac.prototype.toString=function(){return`(${this.heading}, ${this.pitch}, ${this.roll})`};var pc=Ac;var q$=/((?:.*\/)|^)Cesium\.js(?:\?|\#|$)/;function fBe(){let e=document.getElementsByTagName("script");for(let t=0,n=e.length;t<n;++t){let i=e[t].getAttribute("src"),o=q$.exec(i);if(o!==null)return o[1]}}var zR;function K$(e){return typeof document>"u"?e:(l(zR)||(zR=document.createElement("a")),zR.href=e,zR.href)}var uC;function X$(){if(l(uC))return uC;let e;return typeof CESIUM_BASE_URL<"u"?e=CESIUM_BASE_URL:l(import.meta?.url)?e=DA(".",import.meta.url):typeof define=="object"&&l(define.amd)&&!define.amd.toUrlUndefined&&l(yR.toUrl)?e=DA("..",fC("Core/buildModuleUrl.js")):e=fBe(),uC=new we({url:K$(e)}),uC.appendForwardSlash(),uC}function dBe(e){return K$(yR.toUrl(`../${e}`))}function J$(e){return X$().getDerivedResource({url:e}).url}var VR;function fC(e){return l(VR)||(typeof define=="object"&&l(define.amd)&&!define.amd.toUrlUndefined&&l(yR.toUrl)?VR=dBe:VR=J$),VR(e)}fC._cesiumScriptRegex=q$;fC._buildModuleUrlFromBaseUrl=J$;fC._clearBaseResource=function(){uC=void 0};fC.setBaseUrl=function(e){uC=we.DEFAULT.getDerivedResource({url:e})};fC.getCesiumBaseUrl=X$;var fn=fC;function hBe(e,t,n){this.x=e,this.y=t,this.s=n}var $0=hBe;function H5(e){e=e??V.EMPTY_OBJECT,this._xysFileUrlTemplate=we.createIfNeeded(e.xysFileUrlTemplate),this._interpolationOrder=e.interpolationOrder??9,this._sampleZeroJulianEphemerisDate=e.sampleZeroJulianEphemerisDate??24423965e-1,this._sampleZeroDateTT=new K(this._sampleZeroJulianEphemerisDate,0,oi.TAI),this._stepSizeDays=e.stepSizeDays??1,this._samplesPerXysFile=e.samplesPerXysFile??1e3,this._totalSamples=e.totalSamples??27426,this._samples=new Array(this._totalSamples*3),this._chunkDownloadsInProgress=[];let t=this._interpolationOrder,n=this._denominators=new Array(t+1),i=this._xTable=new Array(t+1),o=Math.pow(this._stepSizeDays,t);for(let r=0;r<=t;++r){n[r]=o,i[r]=r*this._stepSizeDays;for(let s=0;s<=t;++s)s!==r&&(n[r]*=r-s);n[r]=1/n[r]}this._work=new Array(t+1),this._coef=new Array(t+1)}var mBe=new K(0,0,oi.TAI);function z5(e,t,n){let i=mBe;return i.dayNumber=t,i.secondsOfDay=n,K.daysDifference(i,e._sampleZeroDateTT)}H5.prototype.preload=function(e,t,n,i){let o=z5(this,e,t),r=z5(this,n,i),s=o/this._stepSizeDays-this._interpolationOrder/2|0;s<0&&(s=0);let a=r/this._stepSizeDays-this._interpolationOrder/2|0+this._interpolationOrder;a>=this._totalSamples&&(a=this._totalSamples-1);let c=s/this._samplesPerXysFile|0,u=a/this._samplesPerXysFile|0,f=[];for(let h=c;h<=u;++h)f.push(V5(this,h));return Promise.all(f)};H5.prototype.computeXysRadians=function(e,t,n){let i=z5(this,e,t);if(i<0)return;let o=i/this._stepSizeDays|0;if(o>=this._totalSamples)return;let r=this._interpolationOrder,s=o-(r/2|0);s<0&&(s=0);let a=s+r;a>=this._totalSamples&&(a=this._totalSamples-1,s=a-r,s<0&&(s=0));let c=!1,u=this._samples;if(l(u[s*3])||(V5(this,s/this._samplesPerXysFile|0),c=!0),l(u[a*3])||(V5(this,a/this._samplesPerXysFile|0),c=!0),c)return;l(n)?(n.x=0,n.y=0,n.s=0):n=new $0(0,0,0);let f=i-s*this._stepSizeDays,h=this._work,A=this._denominators,g=this._coef,m=this._xTable,_,y;for(_=0;_<=r;++_)h[_]=f-m[_];for(_=0;_<=r;++_){for(g[_]=1,y=0;y<=r;++y)y!==_&&(g[_]*=h[y]);g[_]*=A[_];let C=(s+_)*3;n.x+=g[_]*u[C++],n.y+=g[_]*u[C++],n.s+=g[_]*u[C]}return n};function V5(e,t){if(e._chunkDownloadsInProgress[t])return e._chunkDownloadsInProgress[t];let n,i=e._xysFileUrlTemplate;l(i)?n=i.getDerivedResource({templateValues:{0:t}}):n=new we({url:fn(`Assets/IAU2006_XYS/IAU2006_XYS_${t}.json`)});let o=n.fetchJson().then(function(r){e._chunkDownloadsInProgress[t]=!1;let s=e._samples,a=r.samples,c=t*e._samplesPerXysFile*3;for(let u=0,f=a.length;u<f;++u)s[c+u]=a[u]});return e._chunkDownloadsInProgress[t]=o,o}var HR=H5;function st(e,t,n,i,o,r,s,a,c){this[0]=e??0,this[1]=i??0,this[2]=s??0,this[3]=t??0,this[4]=o??0,this[5]=a??0,this[6]=n??0,this[7]=r??0,this[8]=c??0}st.packedLength=9;st.pack=function(e,t,n){return n=n??0,t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t};st.unpack=function(e,t,n){return t=t??0,l(n)||(n=new st),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n[4]=e[t++],n[5]=e[t++],n[6]=e[t++],n[7]=e[t++],n[8]=e[t++],n};st.packArray=function(e,t){let n=e.length,i=n*9;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)st.pack(e[o],t,o*9);return t};st.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/9:t=new Array(n/9);for(let i=0;i<n;i+=9){let o=i/9;t[o]=st.unpack(e,i,t[o])}return t};st.clone=function(e,t){if(l(e))return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):new st(e[0],e[3],e[6],e[1],e[4],e[7],e[2],e[5],e[8])};st.fromArray=st.unpack;st.fromColumnMajorArray=function(e,t){return st.clone(e,t)};st.fromRowMajorArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],t):new st(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])};st.fromQuaternion=function(e,t){let n=e.x*e.x,i=e.x*e.y,o=e.x*e.z,r=e.x*e.w,s=e.y*e.y,a=e.y*e.z,c=e.y*e.w,u=e.z*e.z,f=e.z*e.w,h=e.w*e.w,A=n-s-u+h,g=2*(i-f),m=2*(o+c),_=2*(i+f),y=-n+s-u+h,C=2*(a-r),E=2*(o-c),I=2*(a+r),b=-n-s+u+h;return l(t)?(t[0]=A,t[1]=_,t[2]=E,t[3]=g,t[4]=y,t[5]=I,t[6]=m,t[7]=C,t[8]=b,t):new st(A,g,m,_,y,C,E,I,b)};st.fromHeadingPitchRoll=function(e,t){let n=Math.cos(-e.pitch),i=Math.cos(-e.heading),o=Math.cos(e.roll),r=Math.sin(-e.pitch),s=Math.sin(-e.heading),a=Math.sin(e.roll),c=n*i,u=-o*s+a*r*i,f=a*s+o*r*i,h=n*s,A=o*i+a*r*s,g=-a*i+o*r*s,m=-r,_=a*n,y=o*n;return l(t)?(t[0]=c,t[1]=h,t[2]=m,t[3]=u,t[4]=A,t[5]=_,t[6]=f,t[7]=g,t[8]=y,t):new st(c,u,f,h,A,g,m,_,y)};st.fromScale=function(e,t){return l(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=e.y,t[5]=0,t[6]=0,t[7]=0,t[8]=e.z,t):new st(e.x,0,0,0,e.y,0,0,0,e.z)};st.fromUniformScale=function(e,t){return l(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=e,t[5]=0,t[6]=0,t[7]=0,t[8]=e,t):new st(e,0,0,0,e,0,0,0,e)};st.fromCrossProduct=function(e,t){return l(t)?(t[0]=0,t[1]=e.z,t[2]=-e.y,t[3]=-e.z,t[4]=0,t[5]=e.x,t[6]=e.y,t[7]=-e.x,t[8]=0,t):new st(0,-e.z,e.y,e.z,0,-e.x,-e.y,e.x,0)};st.fromRotationX=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=n,t[5]=i,t[6]=0,t[7]=-i,t[8]=n,t):new st(1,0,0,0,n,-i,0,i,n)};st.fromRotationY=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=n,t[1]=0,t[2]=-i,t[3]=0,t[4]=1,t[5]=0,t[6]=i,t[7]=0,t[8]=n,t):new st(n,0,i,0,1,0,-i,0,n)};st.fromRotationZ=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=n,t[1]=i,t[2]=0,t[3]=-i,t[4]=n,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new st(n,-i,0,i,n,0,0,0,1)};st.toArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]]};st.getElementIndex=function(e,t){return e*3+t};st.getColumn=function(e,t,n){let i=t*3,o=e[i],r=e[i+1],s=e[i+2];return n.x=o,n.y=r,n.z=s,n};st.setColumn=function(e,t,n,i){i=st.clone(e,i);let o=t*3;return i[o]=n.x,i[o+1]=n.y,i[o+2]=n.z,i};st.getRow=function(e,t,n){let i=e[t],o=e[t+3],r=e[t+6];return n.x=i,n.y=o,n.z=r,n};st.setRow=function(e,t,n,i){return i=st.clone(e,i),i[t]=n.x,i[t+3]=n.y,i[t+6]=n.z,i};var ABe=new d;st.setScale=function(e,t,n){let i=st.getScale(e,ABe),o=t.x/i.x,r=t.y/i.y,s=t.z/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3]*r,n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*s,n[7]=e[7]*s,n[8]=e[8]*s,n};var pBe=new d;st.setUniformScale=function(e,t,n){let i=st.getScale(e,pBe),o=t/i.x,r=t/i.y,s=t/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3]*r,n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*s,n[7]=e[7]*s,n[8]=e[8]*s,n};var W5=new d;st.getScale=function(e,t){return t.x=d.magnitude(d.fromElements(e[0],e[1],e[2],W5)),t.y=d.magnitude(d.fromElements(e[3],e[4],e[5],W5)),t.z=d.magnitude(d.fromElements(e[6],e[7],e[8],W5)),t};var Z$=new d;st.getMaximumScale=function(e){return st.getScale(e,Z$),d.maximumComponent(Z$)};var gBe=new d;st.setRotation=function(e,t,n){let i=st.getScale(e,gBe);return n[0]=t[0]*i.x,n[1]=t[1]*i.x,n[2]=t[2]*i.x,n[3]=t[3]*i.y,n[4]=t[4]*i.y,n[5]=t[5]*i.y,n[6]=t[6]*i.z,n[7]=t[7]*i.z,n[8]=t[8]*i.z,n};var _Be=new d;st.getRotation=function(e,t){let n=st.getScale(e,_Be);return t[0]=e[0]/n.x,t[1]=e[1]/n.x,t[2]=e[2]/n.x,t[3]=e[3]/n.y,t[4]=e[4]/n.y,t[5]=e[5]/n.y,t[6]=e[6]/n.z,t[7]=e[7]/n.z,t[8]=e[8]/n.z,t};st.multiply=function(e,t,n){let i=e[0]*t[0]+e[3]*t[1]+e[6]*t[2],o=e[1]*t[0]+e[4]*t[1]+e[7]*t[2],r=e[2]*t[0]+e[5]*t[1]+e[8]*t[2],s=e[0]*t[3]+e[3]*t[4]+e[6]*t[5],a=e[1]*t[3]+e[4]*t[4]+e[7]*t[5],c=e[2]*t[3]+e[5]*t[4]+e[8]*t[5],u=e[0]*t[6]+e[3]*t[7]+e[6]*t[8],f=e[1]*t[6]+e[4]*t[7]+e[7]*t[8],h=e[2]*t[6]+e[5]*t[7]+e[8]*t[8];return n[0]=i,n[1]=o,n[2]=r,n[3]=s,n[4]=a,n[5]=c,n[6]=u,n[7]=f,n[8]=h,n};st.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n};st.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n};st.multiplyByVector=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=e[0]*i+e[3]*o+e[6]*r,a=e[1]*i+e[4]*o+e[7]*r,c=e[2]*i+e[5]*o+e[8]*r;return n.x=s,n.y=a,n.z=c,n};st.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n};st.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.x,n[3]=e[3]*t.y,n[4]=e[4]*t.y,n[5]=e[5]*t.y,n[6]=e[6]*t.z,n[7]=e[7]*t.z,n[8]=e[8]*t.z,n};st.multiplyByUniformScale=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n};st.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t};st.transpose=function(e,t){let n=e[0],i=e[3],o=e[6],r=e[1],s=e[4],a=e[7],c=e[2],u=e[5],f=e[8];return t[0]=n,t[1]=i,t[2]=o,t[3]=r,t[4]=s,t[5]=a,t[6]=c,t[7]=u,t[8]=f,t};function yBe(e){let t=0;for(let n=0;n<9;++n){let i=e[n];t+=i*i}return Math.sqrt(t)}var j5=[1,0,0],Y5=[2,2,1];function CBe(e){let t=0;for(let n=0;n<3;++n){let i=e[st.getElementIndex(Y5[n],j5[n])];t+=2*i*i}return Math.sqrt(t)}function EBe(e,t){let n=D.EPSILON15,i=0,o=1;for(let u=0;u<3;++u){let f=Math.abs(e[st.getElementIndex(Y5[u],j5[u])]);f>i&&(o=u,i=f)}let r=1,s=0,a=j5[o],c=Y5[o];if(Math.abs(e[st.getElementIndex(c,a)])>n){let u=e[st.getElementIndex(c,c)],f=e[st.getElementIndex(a,a)],h=e[st.getElementIndex(c,a)],A=(u-f)/2/h,g;A<0?g=-1/(-A+Math.sqrt(1+A*A)):g=1/(A+Math.sqrt(1+A*A)),r=1/Math.sqrt(1+g*g),s=g*r}return t=st.clone(st.IDENTITY,t),t[st.getElementIndex(a,a)]=t[st.getElementIndex(c,c)]=r,t[st.getElementIndex(c,a)]=s,t[st.getElementIndex(a,c)]=-s,t}var WR=new st,$$=new st;st.computeEigenDecomposition=function(e,t){let n=D.EPSILON20,i=10,o=0,r=0;l(t)||(t={});let s=t.unitary=st.clone(st.IDENTITY,t.unitary),a=t.diagonal=st.clone(e,t.diagonal),c=n*yBe(a);for(;r<i&&CBe(a)>c;)EBe(a,WR),st.transpose(WR,$$),st.multiply(a,WR,a),st.multiply($$,a,a),st.multiply(s,WR,s),++o>2&&(++r,o=0);return t};st.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t};st.determinant=function(e){let t=e[0],n=e[3],i=e[6],o=e[1],r=e[4],s=e[7],a=e[2],c=e[5],u=e[8];return t*(r*u-c*s)+o*(c*i-n*u)+a*(n*s-r*i)};st.inverse=function(e,t){let n=e[0],i=e[1],o=e[2],r=e[3],s=e[4],a=e[5],c=e[6],u=e[7],f=e[8],h=st.determinant(e);t[0]=s*f-u*a,t[1]=u*o-i*f,t[2]=i*a-s*o,t[3]=c*a-r*f,t[4]=n*f-c*o,t[5]=r*o-n*a,t[6]=r*u-c*s,t[7]=c*i-n*u,t[8]=n*s-r*i;let A=1/h;return st.multiplyByScalar(t,A,t)};var IBe=new st;st.inverseTranspose=function(e,t){return st.inverse(st.transpose(e,IBe),t)};st.equals=function(e,t){return e===t||l(e)&&l(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]};st.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n};st.IDENTITY=Object.freeze(new st(1,0,0,0,1,0,0,0,1));st.ZERO=Object.freeze(new st(0,0,0,0,0,0,0,0,0));st.COLUMN0ROW0=0;st.COLUMN0ROW1=1;st.COLUMN0ROW2=2;st.COLUMN1ROW0=3;st.COLUMN1ROW1=4;st.COLUMN1ROW2=5;st.COLUMN2ROW0=6;st.COLUMN2ROW1=7;st.COLUMN2ROW2=8;Object.defineProperties(st.prototype,{length:{get:function(){return st.packedLength}}});st.prototype.clone=function(e){return st.clone(this,e)};st.prototype.equals=function(e){return st.equals(this,e)};st.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]};st.prototype.equalsEpsilon=function(e,t){return st.equalsEpsilon(this,e,t)};st.prototype.toString=function(){return`(${this[0]}, ${this[3]}, ${this[6]}) +(${this[1]}, ${this[4]}, ${this[7]}) +(${this[2]}, ${this[5]}, ${this[8]})`};var J=st;function rt(e,t,n,i,o,r,s,a,c,u,f,h,A,g,m,_){this[0]=e??0,this[1]=o??0,this[2]=c??0,this[3]=A??0,this[4]=t??0,this[5]=r??0,this[6]=u??0,this[7]=g??0,this[8]=n??0,this[9]=s??0,this[10]=f??0,this[11]=m??0,this[12]=i??0,this[13]=a??0,this[14]=h??0,this[15]=_??0}rt.packedLength=16;rt.pack=function(e,t,n){return n=n??0,t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t[n++]=e[4],t[n++]=e[5],t[n++]=e[6],t[n++]=e[7],t[n++]=e[8],t[n++]=e[9],t[n++]=e[10],t[n++]=e[11],t[n++]=e[12],t[n++]=e[13],t[n++]=e[14],t[n]=e[15],t};rt.unpack=function(e,t,n){return t=t??0,l(n)||(n=new rt),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n[4]=e[t++],n[5]=e[t++],n[6]=e[t++],n[7]=e[t++],n[8]=e[t++],n[9]=e[t++],n[10]=e[t++],n[11]=e[t++],n[12]=e[t++],n[13]=e[t++],n[14]=e[t++],n[15]=e[t],n};rt.packArray=function(e,t){let n=e.length,i=n*16;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)rt.pack(e[o],t,o*16);return t};rt.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/16:t=new Array(n/16);for(let i=0;i<n;i+=16){let o=i/16;t[o]=rt.unpack(e,i,t[o])}return t};rt.clone=function(e,t){if(l(e))return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):new rt(e[0],e[4],e[8],e[12],e[1],e[5],e[9],e[13],e[2],e[6],e[10],e[14],e[3],e[7],e[11],e[15])};rt.fromArray=rt.unpack;rt.fromColumnMajorArray=function(e,t){return rt.clone(e,t)};rt.fromRowMajorArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t):new rt(e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])};rt.fromRotationTranslation=function(e,t,n){return t=t??d.ZERO,l(n)?(n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=0,n[4]=e[3],n[5]=e[4],n[6]=e[5],n[7]=0,n[8]=e[6],n[9]=e[7],n[10]=e[8],n[11]=0,n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=1,n):new rt(e[0],e[3],e[6],t.x,e[1],e[4],e[7],t.y,e[2],e[5],e[8],t.z,0,0,0,1)};rt.fromTranslationQuaternionRotationScale=function(e,t,n,i){l(i)||(i=new rt);let o=n.x,r=n.y,s=n.z,a=t.x*t.x,c=t.x*t.y,u=t.x*t.z,f=t.x*t.w,h=t.y*t.y,A=t.y*t.z,g=t.y*t.w,m=t.z*t.z,_=t.z*t.w,y=t.w*t.w,C=a-h-m+y,E=2*(c-_),I=2*(u+g),b=2*(c+_),S=-a+h-m+y,B=2*(A-f),v=2*(u-g),P=2*(A+f),N=-a-h+m+y;return i[0]=C*o,i[1]=b*o,i[2]=v*o,i[3]=0,i[4]=E*r,i[5]=S*r,i[6]=P*r,i[7]=0,i[8]=I*s,i[9]=B*s,i[10]=N*s,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,i};rt.fromTranslationRotationScale=function(e,t){return rt.fromTranslationQuaternionRotationScale(e.translation,e.rotation,e.scale,t)};rt.fromTranslation=function(e,t){return rt.fromRotationTranslation(J.IDENTITY,e,t)};rt.fromScale=function(e,t){return l(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e.y,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e.z,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new rt(e.x,0,0,0,0,e.y,0,0,0,0,e.z,0,0,0,0,1)};rt.fromUniformScale=function(e,t){return l(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t):new rt(e,0,0,0,0,e,0,0,0,0,e,0,0,0,0,1)};rt.fromRotation=function(e,t){return l(t)||(t=new rt),t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=0,t[4]=e[3],t[5]=e[4],t[6]=e[5],t[7]=0,t[8]=e[6],t[9]=e[7],t[10]=e[8],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t};var eI=new d,tI=new d,WS=new d;rt.fromCamera=function(e,t){let n=e.position,i=e.direction,o=e.up;d.normalize(i,eI),d.normalize(d.cross(eI,o,tI),tI),d.normalize(d.cross(tI,eI,WS),WS);let r=tI.x,s=tI.y,a=tI.z,c=eI.x,u=eI.y,f=eI.z,h=WS.x,A=WS.y,g=WS.z,m=n.x,_=n.y,y=n.z,C=r*-m+s*-_+a*-y,E=h*-m+A*-_+g*-y,I=c*m+u*_+f*y;return l(t)?(t[0]=r,t[1]=h,t[2]=-c,t[3]=0,t[4]=s,t[5]=A,t[6]=-u,t[7]=0,t[8]=a,t[9]=g,t[10]=-f,t[11]=0,t[12]=C,t[13]=E,t[14]=I,t[15]=1,t):new rt(r,s,a,C,h,A,g,E,-c,-u,-f,I,0,0,0,1)};rt.computePerspectiveFieldOfView=function(e,t,n,i,o){let s=1/Math.tan(e*.5),a=s/t,c=(i+n)/(n-i),u=2*i*n/(n-i);return o[0]=a,o[1]=0,o[2]=0,o[3]=0,o[4]=0,o[5]=s,o[6]=0,o[7]=0,o[8]=0,o[9]=0,o[10]=c,o[11]=-1,o[12]=0,o[13]=0,o[14]=u,o[15]=0,o};rt.computeOrthographicOffCenter=function(e,t,n,i,o,r,s){let a=1/(t-e),c=1/(i-n),u=1/(r-o),f=-(t+e)*a,h=-(i+n)*c,A=-(r+o)*u;return a*=2,c*=2,u*=-2,s[0]=a,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=c,s[6]=0,s[7]=0,s[8]=0,s[9]=0,s[10]=u,s[11]=0,s[12]=f,s[13]=h,s[14]=A,s[15]=1,s};rt.computePerspectiveOffCenter=function(e,t,n,i,o,r,s){let a=2*o/(t-e),c=2*o/(i-n),u=(t+e)/(t-e),f=(i+n)/(i-n),h=-(r+o)/(r-o),A=-1,g=-2*r*o/(r-o);return s[0]=a,s[1]=0,s[2]=0,s[3]=0,s[4]=0,s[5]=c,s[6]=0,s[7]=0,s[8]=u,s[9]=f,s[10]=h,s[11]=A,s[12]=0,s[13]=0,s[14]=g,s[15]=0,s};rt.computeInfinitePerspectiveOffCenter=function(e,t,n,i,o,r){let s=2*o/(t-e),a=2*o/(i-n),c=(t+e)/(t-e),u=(i+n)/(i-n),f=-1,h=-1,A=-2*o;return r[0]=s,r[1]=0,r[2]=0,r[3]=0,r[4]=0,r[5]=a,r[6]=0,r[7]=0,r[8]=c,r[9]=u,r[10]=f,r[11]=h,r[12]=0,r[13]=0,r[14]=A,r[15]=0,r};rt.computeViewportTransformation=function(e,t,n,i){l(i)||(i=new rt),e=e??V.EMPTY_OBJECT;let o=e.x??0,r=e.y??0,s=e.width??0,a=e.height??0;t=t??0,n=n??1;let c=s*.5,u=a*.5,f=(n-t)*.5,h=c,A=u,g=f,m=o+c,_=r+u,y=t+f,C=1;return i[0]=h,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=A,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=g,i[11]=0,i[12]=m,i[13]=_,i[14]=y,i[15]=C,i};rt.computeView=function(e,t,n,i,o){return o[0]=i.x,o[1]=n.x,o[2]=-t.x,o[3]=0,o[4]=i.y,o[5]=n.y,o[6]=-t.y,o[7]=0,o[8]=i.z,o[9]=n.z,o[10]=-t.z,o[11]=0,o[12]=-d.dot(i,e),o[13]=-d.dot(n,e),o[14]=d.dot(t,e),o[15]=1,o};rt.toArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t):[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15]]};rt.getElementIndex=function(e,t){return e*4+t};rt.getColumn=function(e,t,n){let i=t*4,o=e[i],r=e[i+1],s=e[i+2],a=e[i+3];return n.x=o,n.y=r,n.z=s,n.w=a,n};rt.setColumn=function(e,t,n,i){i=rt.clone(e,i);let o=t*4;return i[o]=n.x,i[o+1]=n.y,i[o+2]=n.z,i[o+3]=n.w,i};rt.getRow=function(e,t,n){let i=e[t],o=e[t+4],r=e[t+8],s=e[t+12];return n.x=i,n.y=o,n.z=r,n.w=s,n};rt.setRow=function(e,t,n,i){return i=rt.clone(e,i),i[t]=n.x,i[t+4]=n.y,i[t+8]=n.z,i[t+12]=n.w,i};rt.setTranslation=function(e,t,n){return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=t.x,n[13]=t.y,n[14]=t.z,n[15]=e[15],n};var xBe=new d;rt.setScale=function(e,t,n){let i=rt.getScale(e,xBe),o=t.x/i.x,r=t.y/i.y,s=t.z/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3],n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*r,n[7]=e[7],n[8]=e[8]*s,n[9]=e[9]*s,n[10]=e[10]*s,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};var bBe=new d;rt.setUniformScale=function(e,t,n){let i=rt.getScale(e,bBe),o=t/i.x,r=t/i.y,s=t/i.z;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*o,n[3]=e[3],n[4]=e[4]*r,n[5]=e[5]*r,n[6]=e[6]*r,n[7]=e[7],n[8]=e[8]*s,n[9]=e[9]*s,n[10]=e[10]*s,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};var q5=new d;rt.getScale=function(e,t){return t.x=d.magnitude(d.fromElements(e[0],e[1],e[2],q5)),t.y=d.magnitude(d.fromElements(e[4],e[5],e[6],q5)),t.z=d.magnitude(d.fromElements(e[8],e[9],e[10],q5)),t};var eee=new d;rt.getMaximumScale=function(e){return rt.getScale(e,eee),d.maximumComponent(eee)};var TBe=new d;rt.setRotation=function(e,t,n){let i=rt.getScale(e,TBe);return n[0]=t[0]*i.x,n[1]=t[1]*i.x,n[2]=t[2]*i.x,n[3]=e[3],n[4]=t[3]*i.y,n[5]=t[4]*i.y,n[6]=t[5]*i.y,n[7]=e[7],n[8]=t[6]*i.z,n[9]=t[7]*i.z,n[10]=t[8]*i.z,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};var SBe=new d;rt.getRotation=function(e,t){let n=rt.getScale(e,SBe);return t[0]=e[0]/n.x,t[1]=e[1]/n.x,t[2]=e[2]/n.x,t[3]=e[4]/n.y,t[4]=e[5]/n.y,t[5]=e[6]/n.y,t[6]=e[8]/n.z,t[7]=e[9]/n.z,t[8]=e[10]/n.z,t};rt.multiply=function(e,t,n){let i=e[0],o=e[1],r=e[2],s=e[3],a=e[4],c=e[5],u=e[6],f=e[7],h=e[8],A=e[9],g=e[10],m=e[11],_=e[12],y=e[13],C=e[14],E=e[15],I=t[0],b=t[1],S=t[2],B=t[3],v=t[4],P=t[5],N=t[6],L=t[7],p=t[8],x=t[9],T=t[10],w=t[11],M=t[12],O=t[13],U=t[14],Q=t[15],z=i*I+a*b+h*S+_*B,F=o*I+c*b+A*S+y*B,H=r*I+u*b+g*S+C*B,W=s*I+f*b+m*S+E*B,Z=i*v+a*P+h*N+_*L,Y=o*v+c*P+A*N+y*L,$=r*v+u*P+g*N+C*L,X=s*v+f*P+m*N+E*L,he=i*p+a*x+h*T+_*w,ge=o*p+c*x+A*T+y*w,fe=r*p+u*x+g*T+C*w,ye=s*p+f*x+m*T+E*w,Ie=i*M+a*O+h*U+_*Q,ve=o*M+c*O+A*U+y*Q,Te=r*M+u*O+g*U+C*Q,ke=s*M+f*O+m*U+E*Q;return n[0]=z,n[1]=F,n[2]=H,n[3]=W,n[4]=Z,n[5]=Y,n[6]=$,n[7]=X,n[8]=he,n[9]=ge,n[10]=fe,n[11]=ye,n[12]=Ie,n[13]=ve,n[14]=Te,n[15]=ke,n};rt.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n[4]=e[4]+t[4],n[5]=e[5]+t[5],n[6]=e[6]+t[6],n[7]=e[7]+t[7],n[8]=e[8]+t[8],n[9]=e[9]+t[9],n[10]=e[10]+t[10],n[11]=e[11]+t[11],n[12]=e[12]+t[12],n[13]=e[13]+t[13],n[14]=e[14]+t[14],n[15]=e[15]+t[15],n};rt.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n[4]=e[4]-t[4],n[5]=e[5]-t[5],n[6]=e[6]-t[6],n[7]=e[7]-t[7],n[8]=e[8]-t[8],n[9]=e[9]-t[9],n[10]=e[10]-t[10],n[11]=e[11]-t[11],n[12]=e[12]-t[12],n[13]=e[13]-t[13],n[14]=e[14]-t[14],n[15]=e[15]-t[15],n};rt.multiplyTransformation=function(e,t,n){let i=e[0],o=e[1],r=e[2],s=e[4],a=e[5],c=e[6],u=e[8],f=e[9],h=e[10],A=e[12],g=e[13],m=e[14],_=t[0],y=t[1],C=t[2],E=t[4],I=t[5],b=t[6],S=t[8],B=t[9],v=t[10],P=t[12],N=t[13],L=t[14],p=i*_+s*y+u*C,x=o*_+a*y+f*C,T=r*_+c*y+h*C,w=i*E+s*I+u*b,M=o*E+a*I+f*b,O=r*E+c*I+h*b,U=i*S+s*B+u*v,Q=o*S+a*B+f*v,z=r*S+c*B+h*v,F=i*P+s*N+u*L+A,H=o*P+a*N+f*L+g,W=r*P+c*N+h*L+m;return n[0]=p,n[1]=x,n[2]=T,n[3]=0,n[4]=w,n[5]=M,n[6]=O,n[7]=0,n[8]=U,n[9]=Q,n[10]=z,n[11]=0,n[12]=F,n[13]=H,n[14]=W,n[15]=1,n};rt.multiplyByMatrix3=function(e,t,n){let i=e[0],o=e[1],r=e[2],s=e[4],a=e[5],c=e[6],u=e[8],f=e[9],h=e[10],A=t[0],g=t[1],m=t[2],_=t[3],y=t[4],C=t[5],E=t[6],I=t[7],b=t[8],S=i*A+s*g+u*m,B=o*A+a*g+f*m,v=r*A+c*g+h*m,P=i*_+s*y+u*C,N=o*_+a*y+f*C,L=r*_+c*y+h*C,p=i*E+s*I+u*b,x=o*E+a*I+f*b,T=r*E+c*I+h*b;return n[0]=S,n[1]=B,n[2]=v,n[3]=0,n[4]=P,n[5]=N,n[6]=L,n[7]=0,n[8]=p,n[9]=x,n[10]=T,n[11]=0,n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};rt.multiplyByTranslation=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=i*e[0]+o*e[4]+r*e[8]+e[12],a=i*e[1]+o*e[5]+r*e[9]+e[13],c=i*e[2]+o*e[6]+r*e[10]+e[14];return n[0]=e[0],n[1]=e[1],n[2]=e[2],n[3]=e[3],n[4]=e[4],n[5]=e[5],n[6]=e[6],n[7]=e[7],n[8]=e[8],n[9]=e[9],n[10]=e[10],n[11]=e[11],n[12]=s,n[13]=a,n[14]=c,n[15]=e[15],n};rt.multiplyByScale=function(e,t,n){let i=t.x,o=t.y,r=t.z;return i===1&&o===1&&r===1?rt.clone(e,n):(n[0]=i*e[0],n[1]=i*e[1],n[2]=i*e[2],n[3]=e[3],n[4]=o*e[4],n[5]=o*e[5],n[6]=o*e[6],n[7]=e[7],n[8]=r*e[8],n[9]=r*e[9],n[10]=r*e[10],n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n)};rt.multiplyByUniformScale=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3],n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7],n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11],n[12]=e[12],n[13]=e[13],n[14]=e[14],n[15]=e[15],n};rt.multiplyByVector=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=t.w,a=e[0]*i+e[4]*o+e[8]*r+e[12]*s,c=e[1]*i+e[5]*o+e[9]*r+e[13]*s,u=e[2]*i+e[6]*o+e[10]*r+e[14]*s,f=e[3]*i+e[7]*o+e[11]*r+e[15]*s;return n.x=a,n.y=c,n.z=u,n.w=f,n};rt.multiplyByPointAsVector=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=e[0]*i+e[4]*o+e[8]*r,a=e[1]*i+e[5]*o+e[9]*r,c=e[2]*i+e[6]*o+e[10]*r;return n.x=s,n.y=a,n.z=c,n};rt.multiplyByPoint=function(e,t,n){let i=t.x,o=t.y,r=t.z,s=e[0]*i+e[4]*o+e[8]*r+e[12],a=e[1]*i+e[5]*o+e[9]*r+e[13],c=e[2]*i+e[6]*o+e[10]*r+e[14];return n.x=s,n.y=a,n.z=c,n};rt.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n[4]=e[4]*t,n[5]=e[5]*t,n[6]=e[6]*t,n[7]=e[7]*t,n[8]=e[8]*t,n[9]=e[9]*t,n[10]=e[10]*t,n[11]=e[11]*t,n[12]=e[12]*t,n[13]=e[13]*t,n[14]=e[14]*t,n[15]=e[15]*t,n};rt.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t};rt.transpose=function(e,t){let n=e[1],i=e[2],o=e[3],r=e[6],s=e[7],a=e[11];return t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=i,t[9]=r,t[10]=e[10],t[11]=e[14],t[12]=o,t[13]=s,t[14]=a,t[15]=e[15],t};rt.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t[4]=Math.abs(e[4]),t[5]=Math.abs(e[5]),t[6]=Math.abs(e[6]),t[7]=Math.abs(e[7]),t[8]=Math.abs(e[8]),t[9]=Math.abs(e[9]),t[10]=Math.abs(e[10]),t[11]=Math.abs(e[11]),t[12]=Math.abs(e[12]),t[13]=Math.abs(e[13]),t[14]=Math.abs(e[14]),t[15]=Math.abs(e[15]),t};rt.equals=function(e,t){return e===t||l(e)&&l(t)&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[3]===t[3]&&e[7]===t[7]&&e[11]===t[11]&&e[15]===t[15]};rt.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n&&Math.abs(e[4]-t[4])<=n&&Math.abs(e[5]-t[5])<=n&&Math.abs(e[6]-t[6])<=n&&Math.abs(e[7]-t[7])<=n&&Math.abs(e[8]-t[8])<=n&&Math.abs(e[9]-t[9])<=n&&Math.abs(e[10]-t[10])<=n&&Math.abs(e[11]-t[11])<=n&&Math.abs(e[12]-t[12])<=n&&Math.abs(e[13]-t[13])<=n&&Math.abs(e[14]-t[14])<=n&&Math.abs(e[15]-t[15])<=n};rt.getTranslation=function(e,t){return t.x=e[12],t.y=e[13],t.z=e[14],t};rt.getMatrix3=function(e,t){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t};var wBe=new J,BBe=new J,DBe=new se,vBe=new se(0,0,0,1);rt.inverse=function(e,t){let n=e[0],i=e[4],o=e[8],r=e[12],s=e[1],a=e[5],c=e[9],u=e[13],f=e[2],h=e[6],A=e[10],g=e[14],m=e[3],_=e[7],y=e[11],C=e[15],E=A*C,I=g*y,b=h*C,S=g*_,B=h*y,v=A*_,P=f*C,N=g*m,L=f*y,p=A*m,x=f*_,T=h*m,w=E*a+S*c+B*u-(I*a+b*c+v*u),M=I*s+P*c+p*u-(E*s+N*c+L*u),O=b*s+N*a+x*u-(S*s+P*a+T*u),U=v*s+L*a+T*c-(B*s+p*a+x*c),Q=I*i+b*o+v*r-(E*i+S*o+B*r),z=E*n+N*o+L*r-(I*n+P*o+p*r),F=S*n+P*i+T*r-(b*n+N*i+x*r),H=B*n+p*i+x*o-(v*n+L*i+T*o);E=o*u,I=r*c,b=i*u,S=r*a,B=i*c,v=o*a,P=n*u,N=r*s,L=n*c,p=o*s,x=n*a,T=i*s;let W=E*_+S*y+B*C-(I*_+b*y+v*C),Z=I*m+P*y+p*C-(E*m+N*y+L*C),Y=b*m+N*_+x*C-(S*m+P*_+T*C),$=v*m+L*_+T*y-(B*m+p*_+x*y),X=b*A+v*g+I*h-(B*g+E*h+S*A),he=L*g+E*f+N*A-(P*A+p*g+I*f),ge=P*h+T*g+S*f-(x*g+b*f+N*h),fe=x*A+B*f+p*h-(L*h+T*A+v*f),ye=n*w+i*M+o*O+r*U;if(Math.abs(ye)<D.EPSILON21){if(J.equalsEpsilon(rt.getMatrix3(e,wBe),BBe,D.EPSILON7)&&se.equals(rt.getRow(e,3,DBe),vBe))return t[0]=0,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=0,t[11]=0,t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=1,t;throw new ce("matrix is not invertible because its determinate is zero.")}return ye=1/ye,t[0]=w*ye,t[1]=M*ye,t[2]=O*ye,t[3]=U*ye,t[4]=Q*ye,t[5]=z*ye,t[6]=F*ye,t[7]=H*ye,t[8]=W*ye,t[9]=Z*ye,t[10]=Y*ye,t[11]=$*ye,t[12]=X*ye,t[13]=he*ye,t[14]=ge*ye,t[15]=fe*ye,t};rt.inverseTransformation=function(e,t){let n=e[0],i=e[1],o=e[2],r=e[4],s=e[5],a=e[6],c=e[8],u=e[9],f=e[10],h=e[12],A=e[13],g=e[14],m=-n*h-i*A-o*g,_=-r*h-s*A-a*g,y=-c*h-u*A-f*g;return t[0]=n,t[1]=r,t[2]=c,t[3]=0,t[4]=i,t[5]=s,t[6]=u,t[7]=0,t[8]=o,t[9]=a,t[10]=f,t[11]=0,t[12]=m,t[13]=_,t[14]=y,t[15]=1,t};var PBe=new rt;rt.inverseTranspose=function(e,t){return rt.inverse(rt.transpose(e,PBe),t)};rt.IDENTITY=Object.freeze(new rt(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1));rt.ZERO=Object.freeze(new rt(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0));rt.COLUMN0ROW0=0;rt.COLUMN0ROW1=1;rt.COLUMN0ROW2=2;rt.COLUMN0ROW3=3;rt.COLUMN1ROW0=4;rt.COLUMN1ROW1=5;rt.COLUMN1ROW2=6;rt.COLUMN1ROW3=7;rt.COLUMN2ROW0=8;rt.COLUMN2ROW1=9;rt.COLUMN2ROW2=10;rt.COLUMN2ROW3=11;rt.COLUMN3ROW0=12;rt.COLUMN3ROW1=13;rt.COLUMN3ROW2=14;rt.COLUMN3ROW3=15;Object.defineProperties(rt.prototype,{length:{get:function(){return rt.packedLength}}});rt.prototype.clone=function(e){return rt.clone(this,e)};rt.prototype.equals=function(e){return rt.equals(this,e)};rt.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]&&e[4]===t[n+4]&&e[5]===t[n+5]&&e[6]===t[n+6]&&e[7]===t[n+7]&&e[8]===t[n+8]&&e[9]===t[n+9]&&e[10]===t[n+10]&&e[11]===t[n+11]&&e[12]===t[n+12]&&e[13]===t[n+13]&&e[14]===t[n+14]&&e[15]===t[n+15]};rt.prototype.equalsEpsilon=function(e,t){return rt.equalsEpsilon(this,e,t)};rt.prototype.toString=function(){return`(${this[0]}, ${this[4]}, ${this[8]}, ${this[12]}) +(${this[1]}, ${this[5]}, ${this[9]}, ${this[13]}) +(${this[2]}, ${this[6]}, ${this[10]}, ${this[14]}) +(${this[3]}, ${this[7]}, ${this[11]}, ${this[15]})`};var R=rt;var Ag,Vr={requestFullscreen:void 0,exitFullscreen:void 0,fullscreenEnabled:void 0,fullscreenElement:void 0,fullscreenchange:void 0,fullscreenerror:void 0},vl={};Object.defineProperties(vl,{element:{get:function(){if(vl.supportsFullscreen())return document[Vr.fullscreenElement]}},changeEventName:{get:function(){if(vl.supportsFullscreen())return Vr.fullscreenchange}},errorEventName:{get:function(){if(vl.supportsFullscreen())return Vr.fullscreenerror}},enabled:{get:function(){if(vl.supportsFullscreen())return document[Vr.fullscreenEnabled]}},fullscreen:{get:function(){if(vl.supportsFullscreen())return vl.element!==null}}});vl.supportsFullscreen=function(){if(l(Ag))return Ag;Ag=!1;let e=document.body;if(typeof e.requestFullscreen=="function")return Vr.requestFullscreen="requestFullscreen",Vr.exitFullscreen="exitFullscreen",Vr.fullscreenEnabled="fullscreenEnabled",Vr.fullscreenElement="fullscreenElement",Vr.fullscreenchange="fullscreenchange",Vr.fullscreenerror="fullscreenerror",Ag=!0,Ag;let t=["webkit","moz","o","ms","khtml"],n;for(let i=0,o=t.length;i<o;++i){let r=t[i];n=`${r}RequestFullscreen`,typeof e[n]=="function"?(Vr.requestFullscreen=n,Ag=!0):(n=`${r}RequestFullScreen`,typeof e[n]=="function"&&(Vr.requestFullscreen=n,Ag=!0)),n=`${r}ExitFullscreen`,typeof document[n]=="function"?Vr.exitFullscreen=n:(n=`${r}CancelFullScreen`,typeof document[n]=="function"&&(Vr.exitFullscreen=n)),n=`${r}FullscreenEnabled`,document[n]!==void 0?Vr.fullscreenEnabled=n:(n=`${r}FullScreenEnabled`,document[n]!==void 0&&(Vr.fullscreenEnabled=n)),n=`${r}FullscreenElement`,document[n]!==void 0?Vr.fullscreenElement=n:(n=`${r}FullScreenElement`,document[n]!==void 0&&(Vr.fullscreenElement=n)),n=`${r}fullscreenchange`,document[`on${n}`]!==void 0&&(r==="ms"&&(n="MSFullscreenChange"),Vr.fullscreenchange=n),n=`${r}fullscreenerror`,document[`on${n}`]!==void 0&&(r==="ms"&&(n="MSFullscreenError"),Vr.fullscreenerror=n)}return Ag};vl.requestFullscreen=function(e,t){vl.supportsFullscreen()&&e[Vr.requestFullscreen]({vrDisplay:t})};vl.exitFullscreen=function(){vl.supportsFullscreen()&&document[Vr.exitFullscreen]()};vl._names=Vr;var Hr=vl;var gc;typeof navigator<"u"?gc=navigator:gc={};function dC(e){let t=e.split(".");for(let n=0,i=t.length;n<i;++n)t[n]=parseInt(t[n],10);return t}var jR,tee;function e9(){if(!l(jR)&&(jR=!1,!ZR())){let e=/ Chrome\/([\.0-9]+)/.exec(gc.userAgent);e!==null&&(jR=!0,tee=dC(e[1]))}return jR}function RBe(){return e9()&&tee}var YR,nee;function iee(){if(!l(YR)&&(YR=!1,!e9()&&!ZR()&&/ Safari\/[\.0-9]+/.test(gc.userAgent))){let e=/ Version\/([\.0-9]+)/.exec(gc.userAgent);e!==null&&(YR=!0,nee=dC(e[1]))}return YR}function MBe(){return iee()&&nee}var qR,Z5;function oee(){if(!l(qR)){qR=!1;let e=/ AppleWebKit\/([\.0-9]+)(\+?)/.exec(gc.userAgent);e!==null&&(qR=!0,Z5=dC(e[1]),Z5.isNightly=!!e[2])}return qR}function NBe(){return oee()&&Z5}var jS,$5;function ree(){if(!l(jS)){jS=!1;let e;gc.appName==="Microsoft Internet Explorer"?(e=/MSIE ([0-9]{1,}[\.0-9]{0,})/.exec(gc.userAgent),e!==null&&(jS=!0,$5=dC(e[1]))):gc.appName==="Netscape"&&(e=/Trident\/.*rv:([0-9]{1,}[\.0-9]{0,})/.exec(gc.userAgent),e!==null&&(jS=!0,$5=dC(e[1])))}return jS}function LBe(){return ree()&&$5}var KR,see;function ZR(){if(!l(KR)){KR=!1;let e=/ Edg\/([\.0-9]+)/.exec(gc.userAgent);e!==null&&(KR=!0,see=dC(e[1]))}return KR}function OBe(){return ZR()&&see}var XR,t9;function $R(){if(!l(XR)){XR=!1;let e=/Firefox\/([\.0-9]+)/.exec(gc.userAgent);e!==null&&(XR=!0,t9=dC(e[1]))}return XR}var K5;function FBe(){return l(K5)||(K5=/Windows/i.test(gc.appVersion)),K5}var X5;function QBe(){return l(X5)||(X5=navigator.platform==="iPhone"||navigator.platform==="iPod"||navigator.platform==="iPad"),X5}function kBe(){return $R()&&t9}var J5;function UBe(){return l(J5)||(J5=!$R()&&typeof PointerEvent<"u"&&(!l(gc.pointerEnabled)||gc.pointerEnabled)),J5}var aee,JR;function cee(){if(!l(JR)){let e=document.createElement("canvas");e.setAttribute("style","image-rendering: -moz-crisp-edges;image-rendering: pixelated;");let t=e.style.imageRendering;JR=l(t)&&t!=="",JR&&(aee=t)}return JR}function GBe(){return cee()?aee:void 0}function qc(){return qc._result}qc._promise=void 0;qc._result=void 0;qc.initialize=function(){return l(qc._promise)||(qc._promise=new Promise(e=>{let t=new Image;t.onload=function(){qc._result=t.width>0&&t.height>0,e(qc._result)},t.onerror=function(){qc._result=!1,e(qc._result)},t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA"})),qc._promise};Object.defineProperties(qc,{initialized:{get:function(){return l(qc._result)}}});var nI=[];typeof ArrayBuffer<"u"&&(nI.push(Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array),typeof Uint8ClampedArray<"u"&&nI.push(Uint8ClampedArray),typeof Uint8ClampedArray<"u"&&nI.push(Uint8ClampedArray),typeof BigInt64Array<"u"&&nI.push(BigInt64Array),typeof BigUint64Array<"u"&&nI.push(BigUint64Array));var pf={isChrome:e9,chromeVersion:RBe,isSafari:iee,safariVersion:MBe,isWebkit:oee,webkitVersion:NBe,isInternetExplorer:ree,internetExplorerVersion:LBe,isEdge:ZR,edgeVersion:OBe,isFirefox:$R,firefoxVersion:kBe,isWindows:FBe,isIPadOrIOS:QBe,hardwareConcurrency:gc.hardwareConcurrency??3,supportsPointerEvents:UBe,supportsImageRenderingPixelated:cee,supportsWebP:qc,imageRenderingValue:GBe,typedArrayTypes:nI};pf.supportsBasis=function(e){return pf.supportsWebAssembly()&&e.context.supportsBasis};pf.supportsFullscreen=function(){return Hr.supportsFullscreen()};pf.supportsTypedArrays=function(){return typeof ArrayBuffer<"u"};pf.supportsBigInt64Array=function(){return typeof BigInt64Array<"u"};pf.supportsBigUint64Array=function(){return typeof BigUint64Array<"u"};pf.supportsBigInt=function(){return typeof BigInt<"u"};pf.supportsWebWorkers=function(){return typeof Worker<"u"};pf.supportsWebAssembly=function(){return typeof WebAssembly<"u"};pf.supportsWebgl2=function(e){return e.context.webgl2};pf.supportsEsmWebWorkers=function(){return!$R()||parseInt(t9)>=114};var jt=pf;function at(e,t,n,i){this.x=e??0,this.y=t??0,this.z=n??0,this.w=i??0}var YS=new d;at.fromAxisAngle=function(e,t,n){let i=t/2,o=Math.sin(i);YS=d.normalize(e,YS);let r=YS.x*o,s=YS.y*o,a=YS.z*o,c=Math.cos(i);return l(n)?(n.x=r,n.y=s,n.z=a,n.w=c,n):new at(r,s,a,c)};var zBe=[1,2,0],VBe=new Array(3);at.fromRotationMatrix=function(e,t){let n,i,o,r,s,a=e[J.COLUMN0ROW0],c=e[J.COLUMN1ROW1],u=e[J.COLUMN2ROW2],f=a+c+u;if(f>0)n=Math.sqrt(f+1),s=.5*n,n=.5/n,i=(e[J.COLUMN1ROW2]-e[J.COLUMN2ROW1])*n,o=(e[J.COLUMN2ROW0]-e[J.COLUMN0ROW2])*n,r=(e[J.COLUMN0ROW1]-e[J.COLUMN1ROW0])*n;else{let h=zBe,A=0;c>a&&(A=1),u>a&&u>c&&(A=2);let g=h[A],m=h[g];n=Math.sqrt(e[J.getElementIndex(A,A)]-e[J.getElementIndex(g,g)]-e[J.getElementIndex(m,m)]+1);let _=VBe;_[A]=.5*n,n=.5/n,s=(e[J.getElementIndex(m,g)]-e[J.getElementIndex(g,m)])*n,_[g]=(e[J.getElementIndex(g,A)]+e[J.getElementIndex(A,g)])*n,_[m]=(e[J.getElementIndex(m,A)]+e[J.getElementIndex(A,m)])*n,i=-_[0],o=-_[1],r=-_[2]}return l(t)?(t.x=i,t.y=o,t.z=r,t.w=s,t):new at(i,o,r,s)};var lee=new at,uee=new at,n9=new at,fee=new at;at.fromHeadingPitchRoll=function(e,t){return fee=at.fromAxisAngle(d.UNIT_X,e.roll,lee),n9=at.fromAxisAngle(d.UNIT_Y,-e.pitch,t),t=at.multiply(n9,fee,n9),uee=at.fromAxisAngle(d.UNIT_Z,-e.heading,lee),at.multiply(uee,t,t)};var eM=new d,i9=new d,Md=new at,dee=new at,tM=new at;at.packedLength=4;at.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n++]=e.z,t[n]=e.w,t};at.unpack=function(e,t,n){return t=t??0,l(n)||(n=new at),n.x=e[t],n.y=e[t+1],n.z=e[t+2],n.w=e[t+3],n};at.packedInterpolationLength=3;at.convertPackedArrayForInterpolation=function(e,t,n,i){at.unpack(e,n*4,tM),at.conjugate(tM,tM);for(let o=0,r=n-t+1;o<r;o++){let s=o*3;at.unpack(e,(t+o)*4,Md),at.multiply(Md,tM,Md),Md.w<0&&at.negate(Md,Md),at.computeAxis(Md,eM);let a=at.computeAngle(Md);l(i)||(i=[]),i[s]=eM.x*a,i[s+1]=eM.y*a,i[s+2]=eM.z*a}};at.unpackInterpolationResult=function(e,t,n,i,o){l(o)||(o=new at),d.fromArray(e,0,i9);let r=d.magnitude(i9);return at.unpack(t,i*4,dee),r===0?at.clone(at.IDENTITY,Md):at.fromAxisAngle(i9,r,Md),at.multiply(Md,dee,o)};at.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t):new at(e.x,e.y,e.z,e.w)};at.conjugate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=e.w,t};at.magnitudeSquared=function(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w};at.magnitude=function(e){return Math.sqrt(at.magnitudeSquared(e))};at.normalize=function(e,t){let n=1/at.magnitude(e),i=e.x*n,o=e.y*n,r=e.z*n,s=e.w*n;return t.x=i,t.y=o,t.z=r,t.w=s,t};at.inverse=function(e,t){let n=at.magnitudeSquared(e);return t=at.conjugate(e,t),at.multiplyByScalar(t,1/n,t)};at.add=function(e,t,n){return n.x=e.x+t.x,n.y=e.y+t.y,n.z=e.z+t.z,n.w=e.w+t.w,n};at.subtract=function(e,t,n){return n.x=e.x-t.x,n.y=e.y-t.y,n.z=e.z-t.z,n.w=e.w-t.w,n};at.negate=function(e,t){return t.x=-e.x,t.y=-e.y,t.z=-e.z,t.w=-e.w,t};at.dot=function(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w};at.multiply=function(e,t,n){let i=e.x,o=e.y,r=e.z,s=e.w,a=t.x,c=t.y,u=t.z,f=t.w,h=s*a+i*f+o*u-r*c,A=s*c-i*u+o*f+r*a,g=s*u+i*c-o*a+r*f,m=s*f-i*a-o*c-r*u;return n.x=h,n.y=A,n.z=g,n.w=m,n};at.multiplyByScalar=function(e,t,n){return n.x=e.x*t,n.y=e.y*t,n.z=e.z*t,n.w=e.w*t,n};at.divideByScalar=function(e,t,n){return n.x=e.x/t,n.y=e.y/t,n.z=e.z/t,n.w=e.w/t,n};at.computeAxis=function(e,t){let n=e.w;if(Math.abs(n-1)<D.EPSILON6||Math.abs(n+1)<D.EPSILON6)return t.x=1,t.y=t.z=0,t;let i=1/Math.sqrt(1-n*n);return t.x=e.x*i,t.y=e.y*i,t.z=e.z*i,t};at.computeAngle=function(e){return Math.abs(e.w-1)<D.EPSILON6?0:2*Math.acos(e.w)};var o9=new at;at.lerp=function(e,t,n,i){return o9=at.multiplyByScalar(t,n,o9),i=at.multiplyByScalar(e,1-n,i),at.add(o9,i,i)};var hee=new at,r9=new at,s9=new at;at.slerp=function(e,t,n,i){let o=at.dot(e,t),r=t;if(o<0&&(o=-o,r=hee=at.negate(t,hee)),1-o<D.EPSILON6)return at.lerp(e,r,n,i);let s=Math.acos(o);return r9=at.multiplyByScalar(e,Math.sin((1-n)*s),r9),s9=at.multiplyByScalar(r,Math.sin(n*s),s9),i=at.add(r9,s9,i),at.multiplyByScalar(i,1/Math.sin(s),i)};at.log=function(e,t){let n=D.acosClamped(e.w),i=0;return n!==0&&(i=n/Math.sin(n)),d.multiplyByScalar(e,i,t)};at.exp=function(e,t){let n=d.magnitude(e),i=0;return n!==0&&(i=Math.sin(n)/n),t.x=e.x*i,t.y=e.y*i,t.z=e.z*i,t.w=Math.cos(n),t};var HBe=new d,WBe=new d,qS=new at,iI=new at;at.computeInnerQuadrangle=function(e,t,n,i){let o=at.conjugate(t,qS);at.multiply(o,n,iI);let r=at.log(iI,HBe);at.multiply(o,e,iI);let s=at.log(iI,WBe);return d.add(r,s,r),d.multiplyByScalar(r,.25,r),d.negate(r,r),at.exp(r,qS),at.multiply(t,qS,i)};at.squad=function(e,t,n,i,o,r){let s=at.slerp(e,t,o,qS),a=at.slerp(n,i,o,iI);return at.slerp(s,a,2*o*(1-o),r)};var jBe=new at,mee=1.9011074535173003,nM=jt.supportsTypedArrays()?new Float32Array(8):[],iM=jt.supportsTypedArrays()?new Float32Array(8):[],RA=jt.supportsTypedArrays()?new Float32Array(8):[],MA=jt.supportsTypedArrays()?new Float32Array(8):[];for(let e=0;e<7;++e){let t=e+1,n=2*t+1;nM[e]=1/(t*n),iM[e]=t/n}nM[7]=mee/136;iM[7]=mee*8/17;at.fastSlerp=function(e,t,n,i){let o=at.dot(e,t),r;o>=0?r=1:(r=-1,o=-o);let s=o-1,a=1-n,c=n*n,u=a*a;for(let g=7;g>=0;--g)RA[g]=(nM[g]*c-iM[g])*s,MA[g]=(nM[g]*u-iM[g])*s;let f=r*n*(1+RA[0]*(1+RA[1]*(1+RA[2]*(1+RA[3]*(1+RA[4]*(1+RA[5]*(1+RA[6]*(1+RA[7])))))))),h=a*(1+MA[0]*(1+MA[1]*(1+MA[2]*(1+MA[3]*(1+MA[4]*(1+MA[5]*(1+MA[6]*(1+MA[7])))))))),A=at.multiplyByScalar(e,h,jBe);return at.multiplyByScalar(t,f,i),at.add(A,i,i)};at.fastSquad=function(e,t,n,i,o,r){let s=at.fastSlerp(e,t,o,qS),a=at.fastSlerp(n,i,o,iI);return at.fastSlerp(s,a,2*o*(1-o),r)};at.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.z===t.z&&e.w===t.w};at.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.x-t.x)<=n&&Math.abs(e.y-t.y)<=n&&Math.abs(e.z-t.z)<=n&&Math.abs(e.w-t.w)<=n};at.ZERO=Object.freeze(new at(0,0,0,0));at.IDENTITY=Object.freeze(new at(0,0,0,1));at.prototype.clone=function(e){return at.clone(this,e)};at.prototype.equals=function(e){return at.equals(this,e)};at.prototype.equalsEpsilon=function(e,t){return at.equalsEpsilon(this,e,t)};at.prototype.toString=function(){return`(${this.x}, ${this.y}, ${this.z}, ${this.w})`};var Le=at;var Ti={},a9={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"}},oI={north:[-1,0,0],east:[0,1,0],up:[0,0,1],south:[1,0,0],west:[0,-1,0],down:[0,0,-1]},c9={},Pl={east:new d,north:new d,up:new d,west:new d,south:new d,down:new d},pg=new d,gg=new d,_g=new d;Ti.localFrameToFixedFrameGenerator=function(e,t){if(!a9.hasOwnProperty(e)||!a9[e].hasOwnProperty(t))throw new me("firstAxis and secondAxis must be east, north, up, west, south or down.");let n=a9[e][t],i,o=e+t;return l(c9[o])?i=c9[o]:(i=function(r,s,a){if(l(a)||(a=new R),d.equalsEpsilon(r,d.ZERO,D.EPSILON14))d.unpack(oI[e],0,pg),d.unpack(oI[t],0,gg),d.unpack(oI[n],0,_g);else if(D.equalsEpsilon(r.x,0,D.EPSILON14)&&D.equalsEpsilon(r.y,0,D.EPSILON14)){let c=D.sign(r.z);d.unpack(oI[e],0,pg),e!=="east"&&e!=="west"&&d.multiplyByScalar(pg,c,pg),d.unpack(oI[t],0,gg),t!=="east"&&t!=="west"&&d.multiplyByScalar(gg,c,gg),d.unpack(oI[n],0,_g),n!=="east"&&n!=="west"&&d.multiplyByScalar(_g,c,_g)}else{s=s??te.default,s.geodeticSurfaceNormal(r,Pl.up);let c=Pl.up,u=Pl.east;u.x=-r.y,u.y=r.x,u.z=0,d.normalize(u,Pl.east),d.cross(c,u,Pl.north),d.multiplyByScalar(Pl.up,-1,Pl.down),d.multiplyByScalar(Pl.east,-1,Pl.west),d.multiplyByScalar(Pl.north,-1,Pl.south),pg=Pl[e],gg=Pl[t],_g=Pl[n]}return a[0]=pg.x,a[1]=pg.y,a[2]=pg.z,a[3]=0,a[4]=gg.x,a[5]=gg.y,a[6]=gg.z,a[7]=0,a[8]=_g.x,a[9]=_g.y,a[10]=_g.z,a[11]=0,a[12]=r.x,a[13]=r.y,a[14]=r.z,a[15]=1,a},c9[o]=i),i};Ti.eastNorthUpToFixedFrame=Ti.localFrameToFixedFrameGenerator("east","north");Ti.northEastDownToFixedFrame=Ti.localFrameToFixedFrameGenerator("north","east");Ti.northUpEastToFixedFrame=Ti.localFrameToFixedFrameGenerator("north","up");Ti.northWestUpToFixedFrame=Ti.localFrameToFixedFrameGenerator("north","west");var YBe=new Le,qBe=new d(1,1,1),KBe=new R;Ti.headingPitchRollToFixedFrame=function(e,t,n,i,o){i=i??Ti.eastNorthUpToFixedFrame;let r=Le.fromHeadingPitchRoll(t,YBe),s=R.fromTranslationQuaternionRotationScale(d.ZERO,r,qBe,KBe);return o=i(e,n,o),R.multiply(o,s,o)};var XBe=new R,JBe=new J;Ti.headingPitchRollQuaternion=function(e,t,n,i,o){let r=Ti.headingPitchRollToFixedFrame(e,t,n,i,XBe),s=R.getMatrix3(r,JBe);return Le.fromRotationMatrix(s,o)};var ZBe=new d(1,1,1),$Be=new d,Aee=new R,eDe=new R,tDe=new J,nDe=new Le;Ti.fixedFrameToHeadingPitchRoll=function(e,t,n,i){t=t??te.default,n=n??Ti.eastNorthUpToFixedFrame,l(i)||(i=new pc);let o=R.getTranslation(e,$Be);if(d.equals(o,d.ZERO))return i.heading=0,i.pitch=0,i.roll=0,i;let r=R.inverseTransformation(n(o,t,Aee),Aee),s=R.setScale(e,ZBe,eDe);s=R.setTranslation(s,d.ZERO,s),r=R.multiply(r,s,r);let a=Le.fromRotationMatrix(R.getMatrix3(r,tDe),nDe);return a=Le.normalize(a,a),pc.fromQuaternion(a,i)};var iDe=6*3600+2460+50.54841,oDe=8640184812866e-6,rDe=.093104,sDe=-62e-7,aDe=11772758384668e-32,cDe=72921158553e-15,lDe=D.TWO_PI/86400,oM=new K;Ti.computeIcrfToCentralBodyFixedMatrix=function(e,t){let n=Ti.computeIcrfToFixedMatrix(e,t);return l(n)||(n=Ti.computeTemeToPseudoFixedMatrix(e,t)),n};Ti.computeTemeToPseudoFixedMatrix=function(e,t){oM=K.addSeconds(e,-K.computeTaiMinusUtc(e),oM);let n=oM.dayNumber,i=oM.secondsOfDay,o,r=n-2451545;i>=43200?o=(r+.5)/ri.DAYS_PER_JULIAN_CENTURY:o=(r-.5)/ri.DAYS_PER_JULIAN_CENTURY;let a=(iDe+o*(oDe+o*(rDe+o*sDe)))*lDe%D.TWO_PI,c=cDe+aDe*(n-24515455e-1),u=(i+ri.SECONDS_PER_DAY*.5)%ri.SECONDS_PER_DAY,f=a+c*u,h=Math.cos(f),A=Math.sin(f);return l(t)?(t[0]=h,t[1]=-A,t[2]=0,t[3]=A,t[4]=h,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t):new J(h,A,0,-A,h,0,0,0,1)};Ti.iau2006XysData=new HR;Ti.earthOrientationParameters=GR.NONE;var f9=32.184,uDe=2451545;Ti.preloadIcrfFixed=function(e){let t=e.start.dayNumber,n=e.start.secondsOfDay+f9,i=e.stop.dayNumber,o=e.stop.secondsOfDay+f9;return Ti.iau2006XysData.preload(t,n,i,o)};Ti.computeIcrfToFixedMatrix=function(e,t){l(t)||(t=new J);let n=Ti.computeFixedToIcrfMatrix(e,t);if(l(n))return J.transpose(n,t)};var fDe=32.184,dDe=2451545,rM=new pc,hDe=new J,mDe=new K;Ti.computeMoonFixedToIcrfMatrix=function(e,t){l(t)||(t=new J);let n=K.addSeconds(e,fDe,mDe),i=K.totalDays(n)-dDe,o=D.toRadians(12.112)-D.toRadians(.052992)*i,r=D.toRadians(24.224)-D.toRadians(.105984)*i,s=D.toRadians(227.645)+D.toRadians(13.012)*i,a=D.toRadians(261.105)+D.toRadians(13.340716)*i,c=D.toRadians(358)+D.toRadians(.9856)*i;return rM.pitch=D.toRadians(180)-D.toRadians(3.878)*Math.sin(o)-D.toRadians(.12)*Math.sin(r)+D.toRadians(.07)*Math.sin(s)-D.toRadians(.017)*Math.sin(a),rM.roll=D.toRadians(66.53-90)+D.toRadians(1.543)*Math.cos(o)+D.toRadians(.24)*Math.cos(r)-D.toRadians(.028)*Math.cos(s)+D.toRadians(.007)*Math.cos(a),rM.heading=D.toRadians(244.375-90)+D.toRadians(13.17635831)*i+D.toRadians(3.558)*Math.sin(o)+D.toRadians(.121)*Math.sin(r)-D.toRadians(.064)*Math.sin(s)+D.toRadians(.016)*Math.sin(a)+D.toRadians(.025)*Math.sin(c),J.fromHeadingPitchRoll(rM,hDe)};Ti.computeIcrfToMoonFixedMatrix=function(e,t){l(t)||(t=new J);let n=Ti.computeMoonFixedToIcrfMatrix(e,t);if(l(n))return J.transpose(n,t)};var ADe=new $0(0,0,0),pDe=new sC(0,0,0,0,0,0),l9=new J,u9=new J;Ti.computeFixedToIcrfMatrix=function(e,t){l(t)||(t=new J);let n=Ti.earthOrientationParameters.compute(e,pDe);if(!l(n))return;let i=e.dayNumber,o=e.secondsOfDay+f9,r=Ti.iau2006XysData.computeXysRadians(i,o,ADe);if(!l(r))return;let s=r.x+n.xPoleOffset,a=r.y+n.yPoleOffset,c=1/(1+Math.sqrt(1-s*s-a*a)),u=l9;u[0]=1-c*s*s,u[3]=-c*s*a,u[6]=s,u[1]=-c*s*a,u[4]=1-c*a*a,u[7]=a,u[2]=-s,u[5]=-a,u[8]=1-c*(s*s+a*a);let f=J.fromRotationZ(-r.s,u9),h=J.multiply(u,f,l9),A=e.dayNumber,g=e.secondsOfDay-K.computeTaiMinusUtc(e)+n.ut1MinusUtc,m=A-2451545,_=g/ri.SECONDS_PER_DAY,y=.779057273264+_+.00273781191135448*(m+_);y=y%1*D.TWO_PI;let C=J.fromRotationZ(y,u9),E=J.multiply(h,C,l9),I=Math.cos(n.xPoleWander),b=Math.cos(n.yPoleWander),S=Math.sin(n.xPoleWander),B=Math.sin(n.yPoleWander),v=i-uDe+o/ri.SECONDS_PER_DAY;v/=36525;let P=-47e-6*v*D.RADIANS_PER_DEGREE/3600,N=Math.cos(P),L=Math.sin(P),p=u9;return p[0]=I*N,p[1]=I*L,p[2]=S,p[3]=-b*L+B*S*N,p[4]=b*N+B*S*L,p[5]=-B*I,p[6]=-B*L-b*S*N,p[7]=B*N-b*S*L,p[8]=b*I,J.multiply(E,p,t)};var gDe=new se;Ti.pointToWindowCoordinates=function(e,t,n,i){return i=Ti.pointToGLWindowCoordinates(e,t,n,i),i.y=2*t[5]-i.y,i};Ti.pointToGLWindowCoordinates=function(e,t,n,i){l(i)||(i=new k);let o=gDe;return R.multiplyByVector(e,se.fromElements(n.x,n.y,n.z,1,o),o),se.multiplyByScalar(o,1/o.w,o),R.multiplyByVector(t,o,o),k.fromCartesian4(o,i)};var _De=new d,yDe=new d,CDe=new d;Ti.rotationMatrixFromPositionVelocity=function(e,t,n,i){let o=(n??te.default).geodeticSurfaceNormal(e,_De),r=d.cross(t,o,yDe);d.equalsEpsilon(r,d.ZERO,D.EPSILON6)&&(r=d.clone(d.UNIT_X,r));let s=d.cross(r,t,CDe);return d.normalize(s,s),d.cross(t,s,r),d.negate(r,r),d.normalize(r,r),l(i)||(i=new J),i[0]=t.x,i[1]=t.y,i[2]=t.z,i[3]=r.x,i[4]=r.y,i[5]=r.z,i[6]=s.x,i[7]=s.y,i[8]=s.z,i};var pee=new R(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1),gee=new Ae,d9=new d,EDe=new d,IDe=new J,h9=new R,_ee=new R;Ti.basisTo2D=function(e,t,n){let i=R.getTranslation(t,EDe),o=e.ellipsoid,r;if(d.equals(i,d.ZERO))r=d.clone(d.ZERO,d9);else{let f=o.cartesianToCartographic(i,gee);r=e.project(f,d9),d.fromElements(r.z,r.x,r.y,r)}let s=Ti.eastNorthUpToFixedFrame(i,o,h9),a=R.inverseTransformation(s,_ee),c=R.getMatrix3(t,IDe),u=R.multiplyByMatrix3(a,c,n);return R.multiply(pee,u,n),R.setTranslation(n,r,n),n};Ti.ellipsoidTo2DModelMatrix=function(e,t,n){let i=e.ellipsoid,o=Ti.eastNorthUpToFixedFrame(t,i,h9),r=R.inverseTransformation(o,_ee),s=i.cartesianToCartographic(t,gee),a=e.project(s,d9);d.fromElements(a.z,a.x,a.y,a);let c=R.fromTranslation(a,h9);return R.multiply(pee,r,n),R.multiply(c,n,n),n};var kt=Ti;function Ln(e,t,n,i){this.west=e??0,this.south=t??0,this.east=n??0,this.north=i??0}Object.defineProperties(Ln.prototype,{width:{get:function(){return Ln.computeWidth(this)}},height:{get:function(){return Ln.computeHeight(this)}}});Ln.packedLength=4;Ln.pack=function(e,t,n){return n=n??0,t[n++]=e.west,t[n++]=e.south,t[n++]=e.east,t[n]=e.north,t};Ln.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Ln),n.west=e[t++],n.south=e[t++],n.east=e[t++],n.north=e[t],n};Ln.computeWidth=function(e){let t=e.east,n=e.west;return t<n&&(t+=D.TWO_PI),t-n};Ln.computeHeight=function(e){return e.north-e.south};Ln.fromDegrees=function(e,t,n,i,o){return e=D.toRadians(e??0),t=D.toRadians(t??0),n=D.toRadians(n??0),i=D.toRadians(i??0),l(o)?(o.west=e,o.south=t,o.east=n,o.north=i,o):new Ln(e,t,n,i)};Ln.fromRadians=function(e,t,n,i,o){return l(o)?(o.west=e??0,o.south=t??0,o.east=n??0,o.north=i??0,o):new Ln(e,t,n,i)};Ln.fromCartographicArray=function(e,t){let n=Number.MAX_VALUE,i=-Number.MAX_VALUE,o=Number.MAX_VALUE,r=-Number.MAX_VALUE,s=Number.MAX_VALUE,a=-Number.MAX_VALUE;for(let c=0,u=e.length;c<u;c++){let f=e[c];n=Math.min(n,f.longitude),i=Math.max(i,f.longitude),s=Math.min(s,f.latitude),a=Math.max(a,f.latitude);let h=f.longitude>=0?f.longitude:f.longitude+D.TWO_PI;o=Math.min(o,h),r=Math.max(r,h)}return i-n>r-o&&(n=o,i=r,i>D.PI&&(i=i-D.TWO_PI),n>D.PI&&(n=n-D.TWO_PI)),l(t)?(t.west=n,t.south=s,t.east=i,t.north=a,t):new Ln(n,s,i,a)};Ln.fromCartesianArray=function(e,t,n){t=t??te.default;let i=Number.MAX_VALUE,o=-Number.MAX_VALUE,r=Number.MAX_VALUE,s=-Number.MAX_VALUE,a=Number.MAX_VALUE,c=-Number.MAX_VALUE;for(let u=0,f=e.length;u<f;u++){let h=t.cartesianToCartographic(e[u]);i=Math.min(i,h.longitude),o=Math.max(o,h.longitude),a=Math.min(a,h.latitude),c=Math.max(c,h.latitude);let A=h.longitude>=0?h.longitude:h.longitude+D.TWO_PI;r=Math.min(r,A),s=Math.max(s,A)}return o-i>s-r&&(i=r,o=s,o>D.PI&&(o=o-D.TWO_PI),i>D.PI&&(i=i-D.TWO_PI)),l(n)?(n.west=i,n.south=a,n.east=o,n.north=c,n):new Ln(i,a,o,c)};var xDe=new d,bDe=new d,TDe=new d,SDe=new d,wDe=new d,m9=new Array(5);for(let e=0;e<m9.length;++e)m9[e]=new d;Ln.fromBoundingSphere=function(e,t,n){let i=e.center,o=e.radius;if(l(t)||(t=te.default),l(n)||(n=new Ln),d.equals(i,d.ZERO))return Ln.clone(Ln.MAX_VALUE,n),n;let r=kt.eastNorthUpToFixedFrame(i,t,xDe),s=R.multiplyByPointAsVector(r,d.UNIT_X,bDe);d.normalize(s,s);let a=R.multiplyByPointAsVector(r,d.UNIT_Y,TDe);d.normalize(a,a),d.multiplyByScalar(a,o,a),d.multiplyByScalar(s,o,s);let c=d.negate(a,wDe),u=d.negate(s,SDe),f=m9,h=f[0];return d.add(i,a,h),h=f[1],d.add(i,u,h),h=f[2],d.add(i,c,h),h=f[3],d.add(i,s,h),f[4]=i,Ln.fromCartesianArray(f,t,n)};Ln.clone=function(e,t){if(l(e))return l(t)?(t.west=e.west,t.south=e.south,t.east=e.east,t.north=e.north,t):new Ln(e.west,e.south,e.east,e.north)};Ln.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.west-t.west)<=n&&Math.abs(e.south-t.south)<=n&&Math.abs(e.east-t.east)<=n&&Math.abs(e.north-t.north)<=n};Ln.prototype.clone=function(e){return Ln.clone(this,e)};Ln.prototype.equals=function(e){return Ln.equals(this,e)};Ln.equals=function(e,t){return e===t||l(e)&&l(t)&&e.west===t.west&&e.south===t.south&&e.east===t.east&&e.north===t.north};Ln.prototype.equalsEpsilon=function(e,t){return Ln.equalsEpsilon(this,e,t)};Ln._validate=function(e){};Ln.southwest=function(e,t){return l(t)?(t.longitude=e.west,t.latitude=e.south,t.height=0,t):new Ae(e.west,e.south)};Ln.northwest=function(e,t){return l(t)?(t.longitude=e.west,t.latitude=e.north,t.height=0,t):new Ae(e.west,e.north)};Ln.northeast=function(e,t){return l(t)?(t.longitude=e.east,t.latitude=e.north,t.height=0,t):new Ae(e.east,e.north)};Ln.southeast=function(e,t){return l(t)?(t.longitude=e.east,t.latitude=e.south,t.height=0,t):new Ae(e.east,e.south)};Ln.center=function(e,t){let n=e.east,i=e.west;n<i&&(n+=D.TWO_PI);let o=D.negativePiToPi((i+n)*.5),r=(e.south+e.north)*.5;return l(t)?(t.longitude=o,t.latitude=r,t.height=0,t):new Ae(o,r)};Ln.intersection=function(e,t,n){let i=e.east,o=e.west,r=t.east,s=t.west;i<o&&r>0?i+=D.TWO_PI:r<s&&i>0&&(r+=D.TWO_PI),i<o&&s<0?s+=D.TWO_PI:r<s&&o<0&&(o+=D.TWO_PI);let a=D.negativePiToPi(Math.max(o,s)),c=D.negativePiToPi(Math.min(i,r));if((e.west<e.east||t.west<t.east)&&c<=a)return;let u=Math.max(e.south,t.south),f=Math.min(e.north,t.north);if(!(u>=f))return l(n)?(n.west=a,n.south=u,n.east=c,n.north=f,n):new Ln(a,u,c,f)};Ln.simpleIntersection=function(e,t,n){let i=Math.max(e.west,t.west),o=Math.max(e.south,t.south),r=Math.min(e.east,t.east),s=Math.min(e.north,t.north);if(!(o>=s||i>=r))return l(n)?(n.west=i,n.south=o,n.east=r,n.north=s,n):new Ln(i,o,r,s)};Ln.union=function(e,t,n){l(n)||(n=new Ln);let i=e.east,o=e.west,r=t.east,s=t.west;i<o&&r>0?i+=D.TWO_PI:r<s&&i>0&&(r+=D.TWO_PI),i<o&&s<0?s+=D.TWO_PI:r<s&&o<0&&(o+=D.TWO_PI);let a=D.negativePiToPi(Math.min(o,s)),c=D.negativePiToPi(Math.max(i,r));return n.west=a,n.south=Math.min(e.south,t.south),n.east=c,n.north=Math.max(e.north,t.north),n};Ln.expand=function(e,t,n){return l(n)||(n=new Ln),n.west=Math.min(e.west,t.longitude),n.south=Math.min(e.south,t.latitude),n.east=Math.max(e.east,t.longitude),n.north=Math.max(e.north,t.latitude),n};Ln.contains=function(e,t){let n=t.longitude,i=t.latitude,o=e.west,r=e.east;return r<o&&(r+=D.TWO_PI,n<0&&(n+=D.TWO_PI)),(n>o||D.equalsEpsilon(n,o,D.EPSILON14))&&(n<r||D.equalsEpsilon(n,r,D.EPSILON14))&&i>=e.south&&i<=e.north};var BDe=new Ae;Ln.subsample=function(e,t,n,i){t=t??te.default,n=n??0,l(i)||(i=[]);let o=0,r=e.north,s=e.south,a=e.east,c=e.west,u=BDe;u.height=n,u.longitude=c,u.latitude=r,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.longitude=a,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.latitude=s,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.longitude=c,i[o]=t.cartographicToCartesian(u,i[o]),o++,r<0?u.latitude=r:s>0?u.latitude=s:u.latitude=0;for(let f=1;f<8;++f)u.longitude=-Math.PI+f*D.PI_OVER_TWO,Ln.contains(e,u)&&(i[o]=t.cartographicToCartesian(u,i[o]),o++);return u.latitude===0&&(u.longitude=c,i[o]=t.cartographicToCartesian(u,i[o]),o++,u.longitude=a,i[o]=t.cartographicToCartesian(u,i[o]),o++),i.length=o,i};Ln.subsection=function(e,t,n,i,o,r){if(l(r)||(r=new Ln),e.west<=e.east){let a=e.east-e.west;r.west=e.west+t*a,r.east=e.west+i*a}else{let a=D.TWO_PI+e.east-e.west;r.west=D.negativePiToPi(e.west+t*a),r.east=D.negativePiToPi(e.west+i*a)}let s=e.north-e.south;return r.south=e.south+n*s,r.north=e.south+o*s,t===1&&(r.west=e.east),i===1&&(r.east=e.east),n===1&&(r.south=e.north),o===1&&(r.north=e.north),r};Ln.MAX_VALUE=Object.freeze(new Ln(-Math.PI,-D.PI_OVER_TWO,Math.PI,D.PI_OVER_TWO));var ae=Ln;function Wr(e,t,n,i){this.x=e??0,this.y=t??0,this.width=n??0,this.height=i??0}Wr.packedLength=4;Wr.pack=function(e,t,n){return n=n??0,t[n++]=e.x,t[n++]=e.y,t[n++]=e.width,t[n]=e.height,t};Wr.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Wr),n.x=e[t++],n.y=e[t++],n.width=e[t++],n.height=e[t],n};Wr.fromPoints=function(e,t){if(l(t)||(t=new Wr),!l(e)||e.length===0)return t.x=0,t.y=0,t.width=0,t.height=0,t;let n=e.length,i=e[0].x,o=e[0].y,r=e[0].x,s=e[0].y;for(let a=1;a<n;a++){let c=e[a],u=c.x,f=c.y;i=Math.min(u,i),r=Math.max(u,r),o=Math.min(f,o),s=Math.max(f,s)}return t.x=i,t.y=o,t.width=r-i,t.height=s-o,t};var yee=new Hi,DDe=new Ae,vDe=new Ae;Wr.fromRectangle=function(e,t,n){if(l(n)||(n=new Wr),!l(e))return n.x=0,n.y=0,n.width=0,n.height=0,n;yee._ellipsoid=te.default,t=t??yee;let i=t.project(ae.southwest(e,DDe)),o=t.project(ae.northeast(e,vDe));return k.subtract(o,i,o),n.x=i.x,n.y=i.y,n.width=o.x,n.height=o.y,n};Wr.clone=function(e,t){if(l(e))return l(t)?(t.x=e.x,t.y=e.y,t.width=e.width,t.height=e.height,t):new Wr(e.x,e.y,e.width,e.height)};Wr.union=function(e,t,n){l(n)||(n=new Wr);let i=Math.min(e.x,t.x),o=Math.min(e.y,t.y),r=Math.max(e.x+e.width,t.x+t.width),s=Math.max(e.y+e.height,t.y+t.height);return n.x=i,n.y=o,n.width=r-i,n.height=s-o,n};Wr.expand=function(e,t,n){n=Wr.clone(e,n);let i=t.x-n.x,o=t.y-n.y;return i>n.width?n.width=i:i<0&&(n.width-=i,n.x=t.x),o>n.height?n.height=o:o<0&&(n.height-=o,n.y=t.y),n};Wr.intersect=function(e,t){let n=e.x,i=e.y,o=t.x,r=t.y;return n>o+t.width||n+e.width<o||i+e.height<r||i>r+t.height?nn.OUTSIDE:nn.INTERSECTING};Wr.equals=function(e,t){return e===t||l(e)&&l(t)&&e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height};Wr.prototype.clone=function(e){return Wr.clone(this,e)};Wr.prototype.intersect=function(e){return Wr.intersect(this,e)};Wr.prototype.equals=function(e){return Wr.equals(this,e)};var Xe=Wr;function A9(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n*6<1?e+(t-e)*6*n:n*2<1?t:n*3<2?e+(t-e)*(2/3-n)*6:e}function re(e,t,n,i){this.red=e??1,this.green=t??1,this.blue=n??1,this.alpha=i??1}re.fromCartesian4=function(e,t){return l(t)?(t.red=e.x,t.green=e.y,t.blue=e.z,t.alpha=e.w,t):new re(e.x,e.y,e.z,e.w)};re.fromBytes=function(e,t,n,i,o){return e=re.byteToFloat(e??255),t=re.byteToFloat(t??255),n=re.byteToFloat(n??255),i=re.byteToFloat(i??255),l(o)?(o.red=e,o.green=t,o.blue=n,o.alpha=i,o):new re(e,t,n,i)};re.fromAlpha=function(e,t,n){return l(n)?(n.red=e.red,n.green=e.green,n.blue=e.blue,n.alpha=t,n):new re(e.red,e.green,e.blue,t)};var p9,g9,NA;jt.supportsTypedArrays()&&(p9=new ArrayBuffer(4),g9=new Uint32Array(p9),NA=new Uint8Array(p9));re.fromRgba=function(e,t){return g9[0]=e,re.fromBytes(NA[0],NA[1],NA[2],NA[3],t)};re.fromHsl=function(e,t,n,i,o){e=(e??0)%1,t=t??0,n=n??0,i=i??1;let r=n,s=n,a=n;if(t!==0){let c;n<.5?c=n*(1+t):c=n+t-n*t;let u=2*n-c;r=A9(u,c,e+1/3),s=A9(u,c,e),a=A9(u,c,e-1/3)}return l(o)?(o.red=r,o.green=s,o.blue=a,o.alpha=i,o):new re(r,s,a,i)};re.fromRandom=function(e,t){e=e??V.EMPTY_OBJECT;let n=e.red;if(!l(n)){let s=e.minimumRed??0,a=e.maximumRed??1;n=s+D.nextRandomNumber()*(a-s)}let i=e.green;if(!l(i)){let s=e.minimumGreen??0,a=e.maximumGreen??1;i=s+D.nextRandomNumber()*(a-s)}let o=e.blue;if(!l(o)){let s=e.minimumBlue??0,a=e.maximumBlue??1;o=s+D.nextRandomNumber()*(a-s)}let r=e.alpha;if(!l(r)){let s=e.minimumAlpha??0,a=e.maximumAlpha??1;r=s+D.nextRandomNumber()*(a-s)}return l(t)?(t.red=n,t.green=i,t.blue=o,t.alpha=r,t):new re(n,i,o,r)};var PDe=/^#([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])?$/i,RDe=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})?$/i,MDe=/^rgba?\s*\(\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)\s*[,\s]+\s*([0-9.]+%?)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i,NDe=/^hsla?\s*\(\s*([0-9.]+)\s*[,\s]+\s*([0-9.]+%)\s*[,\s]+\s*([0-9.]+%)(?:\s*[,\s/]+\s*([0-9.]+))?\s*\)$/i;re.fromCssColorString=function(e,t){l(t)||(t=new re),e=e.trim();let n=re[e.toUpperCase()];if(l(n))return re.clone(n,t),t;let i=PDe.exec(e);return i!==null?(t.red=parseInt(i[1],16)/15,t.green=parseInt(i[2],16)/15,t.blue=parseInt(i[3],16)/15,t.alpha=parseInt(i[4]??"f",16)/15,t):(i=RDe.exec(e),i!==null?(t.red=parseInt(i[1],16)/255,t.green=parseInt(i[2],16)/255,t.blue=parseInt(i[3],16)/255,t.alpha=parseInt(i[4]??"ff",16)/255,t):(i=MDe.exec(e),i!==null?(t.red=parseFloat(i[1])/(i[1].substr(-1)==="%"?100:255),t.green=parseFloat(i[2])/(i[2].substr(-1)==="%"?100:255),t.blue=parseFloat(i[3])/(i[3].substr(-1)==="%"?100:255),t.alpha=parseFloat(i[4]??"1.0"),t):(i=NDe.exec(e),i!==null?re.fromHsl(parseFloat(i[1])/360,parseFloat(i[2])/100,parseFloat(i[3])/100,parseFloat(i[4]??"1.0"),t):(t=void 0,t))))};re.packedLength=4;re.pack=function(e,t,n){return n=n??0,t[n++]=e.red,t[n++]=e.green,t[n++]=e.blue,t[n]=e.alpha,t};re.unpack=function(e,t,n){return t=t??0,l(n)||(n=new re),n.red=e[t++],n.green=e[t++],n.blue=e[t++],n.alpha=e[t],n};re.byteToFloat=function(e){return e/255};re.floatToByte=function(e){return e===1?255:e*256|0};re.clone=function(e,t){if(l(e))return l(t)?(t.red=e.red,t.green=e.green,t.blue=e.blue,t.alpha=e.alpha,t):new re(e.red,e.green,e.blue,e.alpha)};re.equals=function(e,t){return e===t||l(e)&&l(t)&&e.red===t.red&&e.green===t.green&&e.blue===t.blue&&e.alpha===t.alpha};re.equalsArray=function(e,t,n){return e.red===t[n]&&e.green===t[n+1]&&e.blue===t[n+2]&&e.alpha===t[n+3]};re.prototype.clone=function(e){return re.clone(this,e)};re.prototype.equals=function(e){return re.equals(this,e)};re.prototype.equalsEpsilon=function(e,t){return this===e||l(e)&&Math.abs(this.red-e.red)<=t&&Math.abs(this.green-e.green)<=t&&Math.abs(this.blue-e.blue)<=t&&Math.abs(this.alpha-e.alpha)<=t};re.prototype.toString=function(){return`(${this.red}, ${this.green}, ${this.blue}, ${this.alpha})`};re.prototype.toCssColorString=function(){let e=re.floatToByte(this.red),t=re.floatToByte(this.green),n=re.floatToByte(this.blue);return this.alpha===1?`rgb(${e},${t},${n})`:`rgba(${e},${t},${n},${this.alpha})`};re.prototype.toCssHexString=function(){let e=re.floatToByte(this.red).toString(16);e.length<2&&(e=`0${e}`);let t=re.floatToByte(this.green).toString(16);t.length<2&&(t=`0${t}`);let n=re.floatToByte(this.blue).toString(16);if(n.length<2&&(n=`0${n}`),this.alpha<1){let i=re.floatToByte(this.alpha).toString(16);return i.length<2&&(i=`0${i}`),`#${e}${t}${n}${i}`}return`#${e}${t}${n}`};re.prototype.toBytes=function(e){let t=re.floatToByte(this.red),n=re.floatToByte(this.green),i=re.floatToByte(this.blue),o=re.floatToByte(this.alpha);return l(e)?(e[0]=t,e[1]=n,e[2]=i,e[3]=o,e):[t,n,i,o]};re.prototype.toRgba=function(){return NA[0]=re.floatToByte(this.red),NA[1]=re.floatToByte(this.green),NA[2]=re.floatToByte(this.blue),NA[3]=re.floatToByte(this.alpha),g9[0]};re.prototype.brighten=function(e,t){return e=1-e,t.red=1-(1-this.red)*e,t.green=1-(1-this.green)*e,t.blue=1-(1-this.blue)*e,t.alpha=this.alpha,t};re.prototype.darken=function(e,t){return e=1-e,t.red=this.red*e,t.green=this.green*e,t.blue=this.blue*e,t.alpha=this.alpha,t};re.prototype.withAlpha=function(e,t){return re.fromAlpha(this,e,t)};re.add=function(e,t,n){return n.red=e.red+t.red,n.green=e.green+t.green,n.blue=e.blue+t.blue,n.alpha=e.alpha+t.alpha,n};re.subtract=function(e,t,n){return n.red=e.red-t.red,n.green=e.green-t.green,n.blue=e.blue-t.blue,n.alpha=e.alpha-t.alpha,n};re.multiply=function(e,t,n){return n.red=e.red*t.red,n.green=e.green*t.green,n.blue=e.blue*t.blue,n.alpha=e.alpha*t.alpha,n};re.divide=function(e,t,n){return n.red=e.red/t.red,n.green=e.green/t.green,n.blue=e.blue/t.blue,n.alpha=e.alpha/t.alpha,n};re.mod=function(e,t,n){return n.red=e.red%t.red,n.green=e.green%t.green,n.blue=e.blue%t.blue,n.alpha=e.alpha%t.alpha,n};re.lerp=function(e,t,n,i){return i.red=D.lerp(e.red,t.red,n),i.green=D.lerp(e.green,t.green,n),i.blue=D.lerp(e.blue,t.blue,n),i.alpha=D.lerp(e.alpha,t.alpha,n),i};re.multiplyByScalar=function(e,t,n){return n.red=e.red*t,n.green=e.green*t,n.blue=e.blue*t,n.alpha=e.alpha*t,n};re.divideByScalar=function(e,t,n){return n.red=e.red/t,n.green=e.green/t,n.blue=e.blue/t,n.alpha=e.alpha/t,n};re.ALICEBLUE=Object.freeze(re.fromCssColorString("#F0F8FF"));re.ANTIQUEWHITE=Object.freeze(re.fromCssColorString("#FAEBD7"));re.AQUA=Object.freeze(re.fromCssColorString("#00FFFF"));re.AQUAMARINE=Object.freeze(re.fromCssColorString("#7FFFD4"));re.AZURE=Object.freeze(re.fromCssColorString("#F0FFFF"));re.BEIGE=Object.freeze(re.fromCssColorString("#F5F5DC"));re.BISQUE=Object.freeze(re.fromCssColorString("#FFE4C4"));re.BLACK=Object.freeze(re.fromCssColorString("#000000"));re.BLANCHEDALMOND=Object.freeze(re.fromCssColorString("#FFEBCD"));re.BLUE=Object.freeze(re.fromCssColorString("#0000FF"));re.BLUEVIOLET=Object.freeze(re.fromCssColorString("#8A2BE2"));re.BROWN=Object.freeze(re.fromCssColorString("#A52A2A"));re.BURLYWOOD=Object.freeze(re.fromCssColorString("#DEB887"));re.CADETBLUE=Object.freeze(re.fromCssColorString("#5F9EA0"));re.CHARTREUSE=Object.freeze(re.fromCssColorString("#7FFF00"));re.CHOCOLATE=Object.freeze(re.fromCssColorString("#D2691E"));re.CORAL=Object.freeze(re.fromCssColorString("#FF7F50"));re.CORNFLOWERBLUE=Object.freeze(re.fromCssColorString("#6495ED"));re.CORNSILK=Object.freeze(re.fromCssColorString("#FFF8DC"));re.CRIMSON=Object.freeze(re.fromCssColorString("#DC143C"));re.CYAN=Object.freeze(re.fromCssColorString("#00FFFF"));re.DARKBLUE=Object.freeze(re.fromCssColorString("#00008B"));re.DARKCYAN=Object.freeze(re.fromCssColorString("#008B8B"));re.DARKGOLDENROD=Object.freeze(re.fromCssColorString("#B8860B"));re.DARKGRAY=Object.freeze(re.fromCssColorString("#A9A9A9"));re.DARKGREEN=Object.freeze(re.fromCssColorString("#006400"));re.DARKGREY=re.DARKGRAY;re.DARKKHAKI=Object.freeze(re.fromCssColorString("#BDB76B"));re.DARKMAGENTA=Object.freeze(re.fromCssColorString("#8B008B"));re.DARKOLIVEGREEN=Object.freeze(re.fromCssColorString("#556B2F"));re.DARKORANGE=Object.freeze(re.fromCssColorString("#FF8C00"));re.DARKORCHID=Object.freeze(re.fromCssColorString("#9932CC"));re.DARKRED=Object.freeze(re.fromCssColorString("#8B0000"));re.DARKSALMON=Object.freeze(re.fromCssColorString("#E9967A"));re.DARKSEAGREEN=Object.freeze(re.fromCssColorString("#8FBC8F"));re.DARKSLATEBLUE=Object.freeze(re.fromCssColorString("#483D8B"));re.DARKSLATEGRAY=Object.freeze(re.fromCssColorString("#2F4F4F"));re.DARKSLATEGREY=re.DARKSLATEGRAY;re.DARKTURQUOISE=Object.freeze(re.fromCssColorString("#00CED1"));re.DARKVIOLET=Object.freeze(re.fromCssColorString("#9400D3"));re.DEEPPINK=Object.freeze(re.fromCssColorString("#FF1493"));re.DEEPSKYBLUE=Object.freeze(re.fromCssColorString("#00BFFF"));re.DIMGRAY=Object.freeze(re.fromCssColorString("#696969"));re.DIMGREY=re.DIMGRAY;re.DODGERBLUE=Object.freeze(re.fromCssColorString("#1E90FF"));re.FIREBRICK=Object.freeze(re.fromCssColorString("#B22222"));re.FLORALWHITE=Object.freeze(re.fromCssColorString("#FFFAF0"));re.FORESTGREEN=Object.freeze(re.fromCssColorString("#228B22"));re.FUCHSIA=Object.freeze(re.fromCssColorString("#FF00FF"));re.GAINSBORO=Object.freeze(re.fromCssColorString("#DCDCDC"));re.GHOSTWHITE=Object.freeze(re.fromCssColorString("#F8F8FF"));re.GOLD=Object.freeze(re.fromCssColorString("#FFD700"));re.GOLDENROD=Object.freeze(re.fromCssColorString("#DAA520"));re.GRAY=Object.freeze(re.fromCssColorString("#808080"));re.GREEN=Object.freeze(re.fromCssColorString("#008000"));re.GREENYELLOW=Object.freeze(re.fromCssColorString("#ADFF2F"));re.GREY=re.GRAY;re.HONEYDEW=Object.freeze(re.fromCssColorString("#F0FFF0"));re.HOTPINK=Object.freeze(re.fromCssColorString("#FF69B4"));re.INDIANRED=Object.freeze(re.fromCssColorString("#CD5C5C"));re.INDIGO=Object.freeze(re.fromCssColorString("#4B0082"));re.IVORY=Object.freeze(re.fromCssColorString("#FFFFF0"));re.KHAKI=Object.freeze(re.fromCssColorString("#F0E68C"));re.LAVENDER=Object.freeze(re.fromCssColorString("#E6E6FA"));re.LAVENDAR_BLUSH=Object.freeze(re.fromCssColorString("#FFF0F5"));re.LAWNGREEN=Object.freeze(re.fromCssColorString("#7CFC00"));re.LEMONCHIFFON=Object.freeze(re.fromCssColorString("#FFFACD"));re.LIGHTBLUE=Object.freeze(re.fromCssColorString("#ADD8E6"));re.LIGHTCORAL=Object.freeze(re.fromCssColorString("#F08080"));re.LIGHTCYAN=Object.freeze(re.fromCssColorString("#E0FFFF"));re.LIGHTGOLDENRODYELLOW=Object.freeze(re.fromCssColorString("#FAFAD2"));re.LIGHTGRAY=Object.freeze(re.fromCssColorString("#D3D3D3"));re.LIGHTGREEN=Object.freeze(re.fromCssColorString("#90EE90"));re.LIGHTGREY=re.LIGHTGRAY;re.LIGHTPINK=Object.freeze(re.fromCssColorString("#FFB6C1"));re.LIGHTSEAGREEN=Object.freeze(re.fromCssColorString("#20B2AA"));re.LIGHTSKYBLUE=Object.freeze(re.fromCssColorString("#87CEFA"));re.LIGHTSLATEGRAY=Object.freeze(re.fromCssColorString("#778899"));re.LIGHTSLATEGREY=re.LIGHTSLATEGRAY;re.LIGHTSTEELBLUE=Object.freeze(re.fromCssColorString("#B0C4DE"));re.LIGHTYELLOW=Object.freeze(re.fromCssColorString("#FFFFE0"));re.LIME=Object.freeze(re.fromCssColorString("#00FF00"));re.LIMEGREEN=Object.freeze(re.fromCssColorString("#32CD32"));re.LINEN=Object.freeze(re.fromCssColorString("#FAF0E6"));re.MAGENTA=Object.freeze(re.fromCssColorString("#FF00FF"));re.MAROON=Object.freeze(re.fromCssColorString("#800000"));re.MEDIUMAQUAMARINE=Object.freeze(re.fromCssColorString("#66CDAA"));re.MEDIUMBLUE=Object.freeze(re.fromCssColorString("#0000CD"));re.MEDIUMORCHID=Object.freeze(re.fromCssColorString("#BA55D3"));re.MEDIUMPURPLE=Object.freeze(re.fromCssColorString("#9370DB"));re.MEDIUMSEAGREEN=Object.freeze(re.fromCssColorString("#3CB371"));re.MEDIUMSLATEBLUE=Object.freeze(re.fromCssColorString("#7B68EE"));re.MEDIUMSPRINGGREEN=Object.freeze(re.fromCssColorString("#00FA9A"));re.MEDIUMTURQUOISE=Object.freeze(re.fromCssColorString("#48D1CC"));re.MEDIUMVIOLETRED=Object.freeze(re.fromCssColorString("#C71585"));re.MIDNIGHTBLUE=Object.freeze(re.fromCssColorString("#191970"));re.MINTCREAM=Object.freeze(re.fromCssColorString("#F5FFFA"));re.MISTYROSE=Object.freeze(re.fromCssColorString("#FFE4E1"));re.MOCCASIN=Object.freeze(re.fromCssColorString("#FFE4B5"));re.NAVAJOWHITE=Object.freeze(re.fromCssColorString("#FFDEAD"));re.NAVY=Object.freeze(re.fromCssColorString("#000080"));re.OLDLACE=Object.freeze(re.fromCssColorString("#FDF5E6"));re.OLIVE=Object.freeze(re.fromCssColorString("#808000"));re.OLIVEDRAB=Object.freeze(re.fromCssColorString("#6B8E23"));re.ORANGE=Object.freeze(re.fromCssColorString("#FFA500"));re.ORANGERED=Object.freeze(re.fromCssColorString("#FF4500"));re.ORCHID=Object.freeze(re.fromCssColorString("#DA70D6"));re.PALEGOLDENROD=Object.freeze(re.fromCssColorString("#EEE8AA"));re.PALEGREEN=Object.freeze(re.fromCssColorString("#98FB98"));re.PALETURQUOISE=Object.freeze(re.fromCssColorString("#AFEEEE"));re.PALEVIOLETRED=Object.freeze(re.fromCssColorString("#DB7093"));re.PAPAYAWHIP=Object.freeze(re.fromCssColorString("#FFEFD5"));re.PEACHPUFF=Object.freeze(re.fromCssColorString("#FFDAB9"));re.PERU=Object.freeze(re.fromCssColorString("#CD853F"));re.PINK=Object.freeze(re.fromCssColorString("#FFC0CB"));re.PLUM=Object.freeze(re.fromCssColorString("#DDA0DD"));re.POWDERBLUE=Object.freeze(re.fromCssColorString("#B0E0E6"));re.PURPLE=Object.freeze(re.fromCssColorString("#800080"));re.RED=Object.freeze(re.fromCssColorString("#FF0000"));re.ROSYBROWN=Object.freeze(re.fromCssColorString("#BC8F8F"));re.ROYALBLUE=Object.freeze(re.fromCssColorString("#4169E1"));re.SADDLEBROWN=Object.freeze(re.fromCssColorString("#8B4513"));re.SALMON=Object.freeze(re.fromCssColorString("#FA8072"));re.SANDYBROWN=Object.freeze(re.fromCssColorString("#F4A460"));re.SEAGREEN=Object.freeze(re.fromCssColorString("#2E8B57"));re.SEASHELL=Object.freeze(re.fromCssColorString("#FFF5EE"));re.SIENNA=Object.freeze(re.fromCssColorString("#A0522D"));re.SILVER=Object.freeze(re.fromCssColorString("#C0C0C0"));re.SKYBLUE=Object.freeze(re.fromCssColorString("#87CEEB"));re.SLATEBLUE=Object.freeze(re.fromCssColorString("#6A5ACD"));re.SLATEGRAY=Object.freeze(re.fromCssColorString("#708090"));re.SLATEGREY=re.SLATEGRAY;re.SNOW=Object.freeze(re.fromCssColorString("#FFFAFA"));re.SPRINGGREEN=Object.freeze(re.fromCssColorString("#00FF7F"));re.STEELBLUE=Object.freeze(re.fromCssColorString("#4682B4"));re.TAN=Object.freeze(re.fromCssColorString("#D2B48C"));re.TEAL=Object.freeze(re.fromCssColorString("#008080"));re.THISTLE=Object.freeze(re.fromCssColorString("#D8BFD8"));re.TOMATO=Object.freeze(re.fromCssColorString("#FF6347"));re.TURQUOISE=Object.freeze(re.fromCssColorString("#40E0D0"));re.VIOLET=Object.freeze(re.fromCssColorString("#EE82EE"));re.WHEAT=Object.freeze(re.fromCssColorString("#F5DEB3"));re.WHITE=Object.freeze(re.fromCssColorString("#FFFFFF"));re.WHITESMOKE=Object.freeze(re.fromCssColorString("#F5F5F5"));re.YELLOW=Object.freeze(re.fromCssColorString("#FFFF00"));re.YELLOWGREEN=Object.freeze(re.fromCssColorString("#9ACD32"));re.TRANSPARENT=Object.freeze(new re(0,0,0,0));var G=re;function LDe(){return!0}function ODe(e,t){t=t??"This object was destroyed, i.e., destroy() was called.";function n(){}for(let i in e)typeof e[i]=="function"&&(e[i]=n);e.isDestroyed=LDe}var ue=ODe;function Cu(e,t){e=e??0,this._near=e,t=t??Number.MAX_VALUE,this._far=t}Object.defineProperties(Cu.prototype,{near:{get:function(){return this._near},set:function(e){this._near=e}},far:{get:function(){return this._far},set:function(e){this._far=e}}});Cu.packedLength=2;Cu.pack=function(e,t,n){return n=n??0,t[n++]=e.near,t[n]=e.far,t};Cu.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Cu),n.near=e[t++],n.far=e[t],n};Cu.equals=function(e,t){return e===t||l(e)&&l(t)&&e.near===t.near&&e.far===t.far};Cu.clone=function(e,t){if(l(e))return l(t)||(t=new Cu),t.near=e.near,t.far=e.far,t};Cu.prototype.clone=function(e){return Cu.clone(this,e)};Cu.prototype.equals=function(e){return Cu.equals(this,e)};var Ut=Cu;function gf(e,t,n,i){this.near=e??0,this.nearValue=t??0,this.far=n??1,this.farValue=i??0}gf.clone=function(e,t){if(l(e))return l(t)?(t.near=e.near,t.nearValue=e.nearValue,t.far=e.far,t.farValue=e.farValue,t):new gf(e.near,e.nearValue,e.far,e.farValue)};gf.packedLength=4;gf.pack=function(e,t,n){return n=n??0,t[n++]=e.near,t[n++]=e.nearValue,t[n++]=e.far,t[n]=e.farValue,t};gf.unpack=function(e,t,n){return t=t??0,l(n)||(n=new gf),n.near=e[t++],n.nearValue=e[t++],n.far=e[t++],n.farValue=e[t],n};gf.equals=function(e,t){return e===t||l(e)&&l(t)&&e.near===t.near&&e.nearValue===t.nearValue&&e.far===t.far&&e.farValue===t.farValue};gf.prototype.clone=function(e){return gf.clone(this,e)};gf.prototype.equals=function(e){return gf.equals(this,e)};var Yt=gf;var hC={NONE:0,CLAMP_TO_GROUND:1,RELATIVE_TO_GROUND:2,CLAMP_TO_TERRAIN:3,RELATIVE_TO_TERRAIN:4,CLAMP_TO_3D_TILE:5,RELATIVE_TO_3D_TILE:6},Ze=Object.freeze(hC);function _f(e){return e===hC.CLAMP_TO_GROUND||e===hC.CLAMP_TO_3D_TILE||e===hC.CLAMP_TO_TERRAIN}function rI(e){return e===hC.RELATIVE_TO_GROUND||e===hC.RELATIVE_TO_3D_TILE||e===hC.RELATIVE_TO_TERRAIN}var FDe={CENTER:0,LEFT:1,RIGHT:-1},Ri=Object.freeze(FDe);var QDe={CENTER:0,BOTTOM:1,BASELINE:2,TOP:-1},Wn=Object.freeze(QDe);var kDe=Object.freeze({DONE:0,PENDING:1,FAILED:2}),mt=kDe;function Nd(){me.throwInstantiationError()}Object.defineProperties(Nd.prototype,{isConstant:{get:me.throwInstantiationError},definitionChanged:{get:me.throwInstantiationError}});Nd.prototype.getValue=me.throwInstantiationError;Nd.prototype.equals=me.throwInstantiationError;Nd.equals=function(e,t){return e===t||l(e)&&e.equals(t)};Nd.arrayEquals=function(e,t){if(e===t)return!0;if(!l(e)||!l(t)||e.length!==t.length)return!1;let n=e.length;for(let i=0;i<n;i++)if(!Nd.equals(e[i],t[i]))return!1;return!0};Nd.isConstant=function(e){return!l(e)||e.isConstant};Nd.getValueOrUndefined=function(e,t,n){return l(e)?e.getValue(t,n):void 0};Nd.getValueOrDefault=function(e,t,n,i){return l(e)?e.getValue(t,i)??n:n};Nd.getValueOrClonedDefault=function(e,t,n,i){let o;return l(e)&&(o=e.getValue(t,i)),l(o)||(o=n.clone(o)),o};var j=Nd;var UDe={LEFT:-1,NONE:0,RIGHT:1},wr=Object.freeze(UDe);var GDe=G.WHITE,zDe=d.ZERO,VDe=Ze.NONE,HDe=k.ZERO,WDe=1,jDe=0,YDe=d.ZERO,qDe=Ri.CENTER,KDe=Wn.CENTER,XDe=!1,JDe=wr.NONE,ZDe=new d,$De=new G,eve=new d,tve=new k,nve=new Yt,ive=new Yt,ove=new Yt,rve=new Xe,sve=new Ut;function Cee(e){this.entity=e,this.billboard=void 0,this.textureValue=void 0}function yg(e,t){t.collectionChanged.addEventListener(yg.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new Pt,this._onCollectionChanged(t,t.values,[],[])}yg.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._billboard,c,u=r.billboard,f=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),h;if(f&&(h=j.getValueOrUndefined(s._position,e,ZDe),c=j.getValueOrUndefined(a._image,e),f=l(h)&&l(c)),!f){_9(r,s,n);continue}j.isConstant(s._position)||(n._clusterDirty=!0),l(u)||(u=n.getBillboard(s),u.id=s,r.billboard=u,r.textureValue=void 0),u.show=f,r.textureValue!==c&&(u.image=c,r.textureValue=c),u.position=h,u.color=j.getValueOrDefault(a._color,e,GDe,$De),u.eyeOffset=j.getValueOrDefault(a._eyeOffset,e,zDe,eve),u.heightReference=j.getValueOrDefault(a._heightReference,e,VDe),u.pixelOffset=j.getValueOrDefault(a._pixelOffset,e,HDe,tve),u.scale=j.getValueOrDefault(a._scale,e,WDe),u.rotation=j.getValueOrDefault(a._rotation,e,jDe),u.alignedAxis=j.getValueOrDefault(a._alignedAxis,e,YDe),u.horizontalOrigin=j.getValueOrDefault(a._horizontalOrigin,e,qDe),u.verticalOrigin=j.getValueOrDefault(a._verticalOrigin,e,KDe),u.width=j.getValueOrUndefined(a._width,e),u.height=j.getValueOrUndefined(a._height,e),u.scaleByDistance=j.getValueOrUndefined(a._scaleByDistance,e,nve),u.translucencyByDistance=j.getValueOrUndefined(a._translucencyByDistance,e,ive),u.pixelOffsetScaleByDistance=j.getValueOrUndefined(a._pixelOffsetScaleByDistance,e,ove),u.sizeInMeters=j.getValueOrDefault(a._sizeInMeters,e,XDe),u.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e,sve),u.disableDepthTestDistance=j.getValueOrUndefined(a._disableDepthTestDistance,e),u.splitDirection=j.getValueOrDefault(a._splitDirection,e,JDe);let A=j.getValueOrUndefined(a._imageSubRegion,e,rve);l(A)&&u.setImageSubRegion(u.image,A)}return!0};yg.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!l(n.billboard))return mt.FAILED;let i=n.billboard;if(i.heightReference===Ze.NONE)t.center=d.clone(i.position,t.center);else{if(!l(i._clampedPosition))return mt.PENDING;t.center=d.clone(i._clampedPosition,t.center)}return t.radius=0,mt.DONE};yg.prototype.isDestroyed=function(){return!1};yg.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(yg.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removeBillboard(e[t]);return ue(this)};yg.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._billboard)&&l(r._position)&&s.set(r.id,new Cee(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._billboard)&&l(r._position)?s.contains(r.id)||s.set(r.id,new Cee(r)):(_9(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],_9(s.get(r.id),r,a),s.remove(r.id)};function _9(e,t,n){l(e)&&(e.billboard=void 0,n.removeBillboard(t))}var sM=yg;function ave(e,t){this.start=e??0,this.stop=t??0}var _c=ave;function Cn(e,t){this.center=d.clone(e??d.ZERO),this.radius=t??0}var E9=new d,I9=new d,x9=new d,b9=new d,T9=new d,S9=new d,w9=new d,xa=new d,B9=new d,D9=new d,v9=new d,P9=new d,cve=4/3*D.PI;Cn.fromPoints=function(e,t){if(l(t)||(t=new Cn),!l(e)||e.length===0)return t.center=d.clone(d.ZERO,t.center),t.radius=0,t;let n=d.clone(e[0],w9),i=d.clone(n,E9),o=d.clone(n,I9),r=d.clone(n,x9),s=d.clone(n,b9),a=d.clone(n,T9),c=d.clone(n,S9),u=e.length,f;for(f=1;f<u;f++){d.clone(e[f],n);let P=n.x,N=n.y,L=n.z;P<i.x&&d.clone(n,i),P>s.x&&d.clone(n,s),N<o.y&&d.clone(n,o),N>a.y&&d.clone(n,a),L<r.z&&d.clone(n,r),L>c.z&&d.clone(n,c)}let h=d.magnitudeSquared(d.subtract(s,i,xa)),A=d.magnitudeSquared(d.subtract(a,o,xa)),g=d.magnitudeSquared(d.subtract(c,r,xa)),m=i,_=s,y=h;A>y&&(y=A,m=o,_=a),g>y&&(y=g,m=r,_=c);let C=B9;C.x=(m.x+_.x)*.5,C.y=(m.y+_.y)*.5,C.z=(m.z+_.z)*.5;let E=d.magnitudeSquared(d.subtract(_,C,xa)),I=Math.sqrt(E),b=D9;b.x=i.x,b.y=o.y,b.z=r.z;let S=v9;S.x=s.x,S.y=a.y,S.z=c.z;let B=d.midpoint(b,S,P9),v=0;for(f=0;f<u;f++){d.clone(e[f],n);let P=d.magnitude(d.subtract(n,B,xa));P>v&&(v=P);let N=d.magnitudeSquared(d.subtract(n,C,xa));if(N>E){let L=Math.sqrt(N);I=(I+L)*.5,E=I*I;let p=L-I;C.x=(I*C.x+p*n.x)/L,C.y=(I*C.y+p*n.y)/L,C.z=(I*C.z+p*n.z)/L}}return I<v?(d.clone(C,t.center),t.radius=I):(d.clone(B,t.center),t.radius=v),t};var Eee=new Hi,lve=new d,uve=new d,y9=new Ae,C9=new Ae;Cn.fromRectangle2D=function(e,t,n){return Cn.fromRectangleWithHeights2D(e,t,0,0,n)};Cn.fromRectangleWithHeights2D=function(e,t,n,i,o){if(l(o)||(o=new Cn),!l(e))return o.center=d.clone(d.ZERO,o.center),o.radius=0,o;Eee._ellipsoid=te.default,t=t??Eee,ae.southwest(e,y9),y9.height=n,ae.northeast(e,C9),C9.height=i;let r=t.project(y9,lve),s=t.project(C9,uve),a=s.x-r.x,c=s.y-r.y,u=s.z-r.z;o.radius=Math.sqrt(a*a+c*c+u*u)*.5;let f=o.center;return f.x=r.x+a*.5,f.y=r.y+c*.5,f.z=r.z+u*.5,o};var fve=[];Cn.fromRectangle3D=function(e,t,n,i){if(t=t??te.default,n=n??0,l(i)||(i=new Cn),!l(e))return i.center=d.clone(d.ZERO,i.center),i.radius=0,i;let o=ae.subsample(e,t,n,fve);return Cn.fromPoints(o,i)};Cn.fromVertices=function(e,t,n,i){if(l(i)||(i=new Cn),!l(e)||e.length===0)return i.center=d.clone(d.ZERO,i.center),i.radius=0,i;t=t??d.ZERO,n=n??3;let o=w9;o.x=e[0]+t.x,o.y=e[1]+t.y,o.z=e[2]+t.z;let r=d.clone(o,E9),s=d.clone(o,I9),a=d.clone(o,x9),c=d.clone(o,b9),u=d.clone(o,T9),f=d.clone(o,S9),h=e.length,A;for(A=0;A<h;A+=n){let L=e[A]+t.x,p=e[A+1]+t.y,x=e[A+2]+t.z;o.x=L,o.y=p,o.z=x,L<r.x&&d.clone(o,r),L>c.x&&d.clone(o,c),p<s.y&&d.clone(o,s),p>u.y&&d.clone(o,u),x<a.z&&d.clone(o,a),x>f.z&&d.clone(o,f)}let g=d.magnitudeSquared(d.subtract(c,r,xa)),m=d.magnitudeSquared(d.subtract(u,s,xa)),_=d.magnitudeSquared(d.subtract(f,a,xa)),y=r,C=c,E=g;m>E&&(E=m,y=s,C=u),_>E&&(E=_,y=a,C=f);let I=B9;I.x=(y.x+C.x)*.5,I.y=(y.y+C.y)*.5,I.z=(y.z+C.z)*.5;let b=d.magnitudeSquared(d.subtract(C,I,xa)),S=Math.sqrt(b),B=D9;B.x=r.x,B.y=s.y,B.z=a.z;let v=v9;v.x=c.x,v.y=u.y,v.z=f.z;let P=d.midpoint(B,v,P9),N=0;for(A=0;A<h;A+=n){o.x=e[A]+t.x,o.y=e[A+1]+t.y,o.z=e[A+2]+t.z;let L=d.magnitude(d.subtract(o,P,xa));L>N&&(N=L);let p=d.magnitudeSquared(d.subtract(o,I,xa));if(p>b){let x=Math.sqrt(p);S=(S+x)*.5,b=S*S;let T=x-S;I.x=(S*I.x+T*o.x)/x,I.y=(S*I.y+T*o.y)/x,I.z=(S*I.z+T*o.z)/x}}return S<N?(d.clone(I,i.center),i.radius=S):(d.clone(P,i.center),i.radius=N),i};Cn.fromEncodedCartesianVertices=function(e,t,n){if(l(n)||(n=new Cn),!l(e)||!l(t)||e.length!==t.length||e.length===0)return n.center=d.clone(d.ZERO,n.center),n.radius=0,n;let i=w9;i.x=e[0]+t[0],i.y=e[1]+t[1],i.z=e[2]+t[2];let o=d.clone(i,E9),r=d.clone(i,I9),s=d.clone(i,x9),a=d.clone(i,b9),c=d.clone(i,T9),u=d.clone(i,S9),f=e.length,h;for(h=0;h<f;h+=3){let N=e[h]+t[h],L=e[h+1]+t[h+1],p=e[h+2]+t[h+2];i.x=N,i.y=L,i.z=p,N<o.x&&d.clone(i,o),N>a.x&&d.clone(i,a),L<r.y&&d.clone(i,r),L>c.y&&d.clone(i,c),p<s.z&&d.clone(i,s),p>u.z&&d.clone(i,u)}let A=d.magnitudeSquared(d.subtract(a,o,xa)),g=d.magnitudeSquared(d.subtract(c,r,xa)),m=d.magnitudeSquared(d.subtract(u,s,xa)),_=o,y=a,C=A;g>C&&(C=g,_=r,y=c),m>C&&(C=m,_=s,y=u);let E=B9;E.x=(_.x+y.x)*.5,E.y=(_.y+y.y)*.5,E.z=(_.z+y.z)*.5;let I=d.magnitudeSquared(d.subtract(y,E,xa)),b=Math.sqrt(I),S=D9;S.x=o.x,S.y=r.y,S.z=s.z;let B=v9;B.x=a.x,B.y=c.y,B.z=u.z;let v=d.midpoint(S,B,P9),P=0;for(h=0;h<f;h+=3){i.x=e[h]+t[h],i.y=e[h+1]+t[h+1],i.z=e[h+2]+t[h+2];let N=d.magnitude(d.subtract(i,v,xa));N>P&&(P=N);let L=d.magnitudeSquared(d.subtract(i,E,xa));if(L>I){let p=Math.sqrt(L);b=(b+p)*.5,I=b*b;let x=p-b;E.x=(b*E.x+x*i.x)/p,E.y=(b*E.y+x*i.y)/p,E.z=(b*E.z+x*i.z)/p}}return b<P?(d.clone(E,n.center),n.radius=b):(d.clone(v,n.center),n.radius=P),n};Cn.fromCornerPoints=function(e,t,n){l(n)||(n=new Cn);let i=d.midpoint(e,t,n.center);return n.radius=d.distance(i,t),n};Cn.fromEllipsoid=function(e,t){return l(t)||(t=new Cn),d.clone(d.ZERO,t.center),t.radius=e.maximumRadius,t};var dve=new d;Cn.fromBoundingSpheres=function(e,t){if(l(t)||(t=new Cn),!l(e)||e.length===0)return t.center=d.clone(d.ZERO,t.center),t.radius=0,t;let n=e.length;if(n===1)return Cn.clone(e[0],t);if(n===2)return Cn.union(e[0],e[1],t);let i=[],o;for(o=0;o<n;o++)i.push(e[o].center);t=Cn.fromPoints(i,t);let r=t.center,s=t.radius;for(o=0;o<n;o++){let a=e[o];s=Math.max(s,d.distance(r,a.center,dve)+a.radius)}return t.radius=s,t};var hve=new d,mve=new d,Ave=new d;Cn.fromOrientedBoundingBox=function(e,t){l(t)||(t=new Cn);let n=e.halfAxes,i=J.getColumn(n,0,hve),o=J.getColumn(n,1,mve),r=J.getColumn(n,2,Ave);return d.add(i,o,i),d.add(i,r,i),t.center=d.clone(e.center,t.center),t.radius=d.magnitude(i),t};var pve=new d,gve=new d;Cn.fromTransformation=function(e,t){l(t)||(t=new Cn);let n=R.getTranslation(e,pve),i=R.getScale(e,gve),o=.5*d.magnitude(i);return t.center=d.clone(n,t.center),t.radius=o,t};Cn.clone=function(e,t){if(l(e))return l(t)?(t.center=d.clone(e.center,t.center),t.radius=e.radius,t):new Cn(e.center,e.radius)};Cn.packedLength=4;Cn.pack=function(e,t,n){n=n??0;let i=e.center;return t[n++]=i.x,t[n++]=i.y,t[n++]=i.z,t[n]=e.radius,t};Cn.unpack=function(e,t,n){t=t??0,l(n)||(n=new Cn);let i=n.center;return i.x=e[t++],i.y=e[t++],i.z=e[t++],n.radius=e[t],n};var _ve=new d,yve=new d;Cn.union=function(e,t,n){l(n)||(n=new Cn);let i=e.center,o=e.radius,r=t.center,s=t.radius,a=d.subtract(r,i,_ve),c=d.magnitude(a);if(o>=c+s)return e.clone(n),n;if(s>=c+o)return t.clone(n),n;let u=(o+c+s)*.5,f=d.multiplyByScalar(a,(-o+u)/c,yve);return d.add(f,i,f),d.clone(f,n.center),n.radius=u,n};var Cve=new d;Cn.expand=function(e,t,n){n=Cn.clone(e,n);let i=d.magnitude(d.subtract(t,n.center,Cve));return i>n.radius&&(n.radius=i),n};Cn.intersectPlane=function(e,t){let n=e.center,i=e.radius,o=t.normal,r=d.dot(o,n)+t.distance;return r<-i?nn.OUTSIDE:r<i?nn.INTERSECTING:nn.INSIDE};Cn.transform=function(e,t,n){return l(n)||(n=new Cn),n.center=R.multiplyByPoint(t,e.center,n.center),n.radius=R.getMaximumScale(t)*e.radius,n};var Eve=new d;Cn.distanceSquaredTo=function(e,t){let n=d.subtract(e.center,t,Eve),i=d.magnitude(n)-e.radius;return i<=0?0:i*i};Cn.transformWithoutScale=function(e,t,n){return l(n)||(n=new Cn),n.center=R.multiplyByPoint(t,e.center,n.center),n.radius=e.radius,n};var Ive=new d;Cn.computePlaneDistances=function(e,t,n,i){l(i)||(i=new _c);let o=d.subtract(e.center,t,Ive),r=d.dot(n,o);return i.start=r-e.radius,i.stop=r+e.radius,i};var Iee=new d,xve=new d,bve=new d,Tve=new d,Sve=new d,wve=new Ae,bee=new Array(8);for(let e=0;e<8;++e)bee[e]=new d;var xee=new Hi;Cn.projectTo2D=function(e,t,n){xee._ellipsoid=te.default,t=t??xee;let i=t.ellipsoid,o=e.center,r=e.radius,s;d.equals(o,d.ZERO)?s=d.clone(d.UNIT_X,Iee):s=i.geodeticSurfaceNormal(o,Iee);let a=d.cross(d.UNIT_Z,s,xve);d.normalize(a,a);let c=d.cross(s,a,bve);d.normalize(c,c),d.multiplyByScalar(s,r,s),d.multiplyByScalar(c,r,c),d.multiplyByScalar(a,r,a);let u=d.negate(c,Sve),f=d.negate(a,Tve),h=bee,A=h[0];d.add(s,c,A),d.add(A,a,A),A=h[1],d.add(s,c,A),d.add(A,f,A),A=h[2],d.add(s,u,A),d.add(A,f,A),A=h[3],d.add(s,u,A),d.add(A,a,A),d.negate(s,s),A=h[4],d.add(s,c,A),d.add(A,a,A),A=h[5],d.add(s,c,A),d.add(A,f,A),A=h[6],d.add(s,u,A),d.add(A,f,A),A=h[7],d.add(s,u,A),d.add(A,a,A);let g=h.length;for(let C=0;C<g;++C){let E=h[C];d.add(o,E,E);let I=i.cartesianToCartographic(E,wve);t.project(I,E)}n=Cn.fromPoints(h,n),o=n.center;let m=o.x,_=o.y,y=o.z;return o.x=y,o.y=m,o.z=_,n};Cn.isOccluded=function(e,t){return!t.isBoundingSphereVisible(e)};Cn.equals=function(e,t){return e===t||l(e)&&l(t)&&d.equals(e.center,t.center)&&e.radius===t.radius};Cn.prototype.intersectPlane=function(e){return Cn.intersectPlane(this,e)};Cn.prototype.distanceSquaredTo=function(e){return Cn.distanceSquaredTo(this,e)};Cn.prototype.computePlaneDistances=function(e,t,n){return Cn.computePlaneDistances(this,e,t,n)};Cn.prototype.isOccluded=function(e){return Cn.isOccluded(this,e)};Cn.prototype.equals=function(e){return Cn.equals(this,e)};Cn.prototype.clone=function(e){return Cn.clone(this,e)};Cn.prototype.volume=function(){let e=this.radius;return cve*e*e*e};var le=Cn;var Bve={DEPTH_BUFFER_BIT:256,STENCIL_BUFFER_BIT:1024,COLOR_BUFFER_BIT:16384,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,ZERO:0,ONE:1,SRC_COLOR:768,ONE_MINUS_SRC_COLOR:769,SRC_ALPHA:770,ONE_MINUS_SRC_ALPHA:771,DST_ALPHA:772,ONE_MINUS_DST_ALPHA:773,DST_COLOR:774,ONE_MINUS_DST_COLOR:775,SRC_ALPHA_SATURATE:776,FUNC_ADD:32774,BLEND_EQUATION:32777,BLEND_EQUATION_RGB:32777,BLEND_EQUATION_ALPHA:34877,FUNC_SUBTRACT:32778,FUNC_REVERSE_SUBTRACT:32779,BLEND_DST_RGB:32968,BLEND_SRC_RGB:32969,BLEND_DST_ALPHA:32970,BLEND_SRC_ALPHA:32971,CONSTANT_COLOR:32769,ONE_MINUS_CONSTANT_COLOR:32770,CONSTANT_ALPHA:32771,ONE_MINUS_CONSTANT_ALPHA:32772,BLEND_COLOR:32773,ARRAY_BUFFER:34962,ELEMENT_ARRAY_BUFFER:34963,ARRAY_BUFFER_BINDING:34964,ELEMENT_ARRAY_BUFFER_BINDING:34965,STREAM_DRAW:35040,STATIC_DRAW:35044,DYNAMIC_DRAW:35048,BUFFER_SIZE:34660,BUFFER_USAGE:34661,CURRENT_VERTEX_ATTRIB:34342,FRONT:1028,BACK:1029,FRONT_AND_BACK:1032,CULL_FACE:2884,BLEND:3042,DITHER:3024,STENCIL_TEST:2960,DEPTH_TEST:2929,SCISSOR_TEST:3089,POLYGON_OFFSET_FILL:32823,SAMPLE_ALPHA_TO_COVERAGE:32926,SAMPLE_COVERAGE:32928,NO_ERROR:0,INVALID_ENUM:1280,INVALID_VALUE:1281,INVALID_OPERATION:1282,OUT_OF_MEMORY:1285,CW:2304,CCW:2305,LINE_WIDTH:2849,ALIASED_POINT_SIZE_RANGE:33901,ALIASED_LINE_WIDTH_RANGE:33902,CULL_FACE_MODE:2885,FRONT_FACE:2886,DEPTH_RANGE:2928,DEPTH_WRITEMASK:2930,DEPTH_CLEAR_VALUE:2931,DEPTH_FUNC:2932,STENCIL_CLEAR_VALUE:2961,STENCIL_FUNC:2962,STENCIL_FAIL:2964,STENCIL_PASS_DEPTH_FAIL:2965,STENCIL_PASS_DEPTH_PASS:2966,STENCIL_REF:2967,STENCIL_VALUE_MASK:2963,STENCIL_WRITEMASK:2968,STENCIL_BACK_FUNC:34816,STENCIL_BACK_FAIL:34817,STENCIL_BACK_PASS_DEPTH_FAIL:34818,STENCIL_BACK_PASS_DEPTH_PASS:34819,STENCIL_BACK_REF:36003,STENCIL_BACK_VALUE_MASK:36004,STENCIL_BACK_WRITEMASK:36005,VIEWPORT:2978,SCISSOR_BOX:3088,COLOR_CLEAR_VALUE:3106,COLOR_WRITEMASK:3107,UNPACK_ALIGNMENT:3317,PACK_ALIGNMENT:3333,MAX_TEXTURE_SIZE:3379,MAX_VIEWPORT_DIMS:3386,SUBPIXEL_BITS:3408,RED_BITS:3410,GREEN_BITS:3411,BLUE_BITS:3412,ALPHA_BITS:3413,DEPTH_BITS:3414,STENCIL_BITS:3415,POLYGON_OFFSET_UNITS:10752,POLYGON_OFFSET_FACTOR:32824,TEXTURE_BINDING_2D:32873,SAMPLE_BUFFERS:32936,SAMPLES:32937,SAMPLE_COVERAGE_VALUE:32938,SAMPLE_COVERAGE_INVERT:32939,COMPRESSED_TEXTURE_FORMATS:34467,DONT_CARE:4352,FASTEST:4353,NICEST:4354,GENERATE_MIPMAP_HINT:33170,BYTE:5120,UNSIGNED_BYTE:5121,SHORT:5122,UNSIGNED_SHORT:5123,INT:5124,UNSIGNED_INT:5125,FLOAT:5126,DEPTH_COMPONENT:6402,ALPHA:6406,RGB:6407,RGBA:6408,LUMINANCE:6409,LUMINANCE_ALPHA:6410,UNSIGNED_SHORT_4_4_4_4:32819,UNSIGNED_SHORT_5_5_5_1:32820,UNSIGNED_SHORT_5_6_5:33635,FRAGMENT_SHADER:35632,VERTEX_SHADER:35633,MAX_VERTEX_ATTRIBS:34921,MAX_VERTEX_UNIFORM_VECTORS:36347,MAX_VARYING_VECTORS:36348,MAX_COMBINED_TEXTURE_IMAGE_UNITS:35661,MAX_VERTEX_TEXTURE_IMAGE_UNITS:35660,MAX_TEXTURE_IMAGE_UNITS:34930,MAX_FRAGMENT_UNIFORM_VECTORS:36349,SHADER_TYPE:35663,DELETE_STATUS:35712,LINK_STATUS:35714,VALIDATE_STATUS:35715,ATTACHED_SHADERS:35717,ACTIVE_UNIFORMS:35718,ACTIVE_ATTRIBUTES:35721,SHADING_LANGUAGE_VERSION:35724,CURRENT_PROGRAM:35725,NEVER:512,LESS:513,EQUAL:514,LEQUAL:515,GREATER:516,NOTEQUAL:517,GEQUAL:518,ALWAYS:519,KEEP:7680,REPLACE:7681,INCR:7682,DECR:7683,INVERT:5386,INCR_WRAP:34055,DECR_WRAP:34056,VENDOR:7936,RENDERER:7937,VERSION:7938,NEAREST:9728,LINEAR:9729,NEAREST_MIPMAP_NEAREST:9984,LINEAR_MIPMAP_NEAREST:9985,NEAREST_MIPMAP_LINEAR:9986,LINEAR_MIPMAP_LINEAR:9987,TEXTURE_MAG_FILTER:10240,TEXTURE_MIN_FILTER:10241,TEXTURE_WRAP_S:10242,TEXTURE_WRAP_T:10243,TEXTURE_2D:3553,TEXTURE:5890,TEXTURE_CUBE_MAP:34067,TEXTURE_BINDING_CUBE_MAP:34068,TEXTURE_CUBE_MAP_POSITIVE_X:34069,TEXTURE_CUBE_MAP_NEGATIVE_X:34070,TEXTURE_CUBE_MAP_POSITIVE_Y:34071,TEXTURE_CUBE_MAP_NEGATIVE_Y:34072,TEXTURE_CUBE_MAP_POSITIVE_Z:34073,TEXTURE_CUBE_MAP_NEGATIVE_Z:34074,MAX_CUBE_MAP_TEXTURE_SIZE:34076,TEXTURE0:33984,TEXTURE1:33985,TEXTURE2:33986,TEXTURE3:33987,TEXTURE4:33988,TEXTURE5:33989,TEXTURE6:33990,TEXTURE7:33991,TEXTURE8:33992,TEXTURE9:33993,TEXTURE10:33994,TEXTURE11:33995,TEXTURE12:33996,TEXTURE13:33997,TEXTURE14:33998,TEXTURE15:33999,TEXTURE16:34e3,TEXTURE17:34001,TEXTURE18:34002,TEXTURE19:34003,TEXTURE20:34004,TEXTURE21:34005,TEXTURE22:34006,TEXTURE23:34007,TEXTURE24:34008,TEXTURE25:34009,TEXTURE26:34010,TEXTURE27:34011,TEXTURE28:34012,TEXTURE29:34013,TEXTURE30:34014,TEXTURE31:34015,ACTIVE_TEXTURE:34016,REPEAT:10497,CLAMP_TO_EDGE:33071,MIRRORED_REPEAT:33648,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,INT_VEC2:35667,INT_VEC3:35668,INT_VEC4:35669,BOOL:35670,BOOL_VEC2:35671,BOOL_VEC3:35672,BOOL_VEC4:35673,FLOAT_MAT2:35674,FLOAT_MAT3:35675,FLOAT_MAT4:35676,SAMPLER_2D:35678,SAMPLER_CUBE:35680,VERTEX_ATTRIB_ARRAY_ENABLED:34338,VERTEX_ATTRIB_ARRAY_SIZE:34339,VERTEX_ATTRIB_ARRAY_STRIDE:34340,VERTEX_ATTRIB_ARRAY_TYPE:34341,VERTEX_ATTRIB_ARRAY_NORMALIZED:34922,VERTEX_ATTRIB_ARRAY_POINTER:34373,VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:34975,IMPLEMENTATION_COLOR_READ_TYPE:35738,IMPLEMENTATION_COLOR_READ_FORMAT:35739,COMPILE_STATUS:35713,LOW_FLOAT:36336,MEDIUM_FLOAT:36337,HIGH_FLOAT:36338,LOW_INT:36339,MEDIUM_INT:36340,HIGH_INT:36341,FRAMEBUFFER:36160,RENDERBUFFER:36161,RGBA4:32854,RGB5_A1:32855,RGB565:36194,DEPTH_COMPONENT16:33189,STENCIL_INDEX:6401,STENCIL_INDEX8:36168,DEPTH_STENCIL:34041,RENDERBUFFER_WIDTH:36162,RENDERBUFFER_HEIGHT:36163,RENDERBUFFER_INTERNAL_FORMAT:36164,RENDERBUFFER_RED_SIZE:36176,RENDERBUFFER_GREEN_SIZE:36177,RENDERBUFFER_BLUE_SIZE:36178,RENDERBUFFER_ALPHA_SIZE:36179,RENDERBUFFER_DEPTH_SIZE:36180,RENDERBUFFER_STENCIL_SIZE:36181,FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:36048,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:36049,FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:36050,FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:36051,COLOR_ATTACHMENT0:36064,DEPTH_ATTACHMENT:36096,STENCIL_ATTACHMENT:36128,DEPTH_STENCIL_ATTACHMENT:33306,NONE:0,FRAMEBUFFER_COMPLETE:36053,FRAMEBUFFER_INCOMPLETE_ATTACHMENT:36054,FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:36055,FRAMEBUFFER_INCOMPLETE_DIMENSIONS:36057,FRAMEBUFFER_UNSUPPORTED:36061,FRAMEBUFFER_BINDING:36006,RENDERBUFFER_BINDING:36007,MAX_RENDERBUFFER_SIZE:34024,INVALID_FRAMEBUFFER_OPERATION:1286,UNPACK_FLIP_Y_WEBGL:37440,UNPACK_PREMULTIPLY_ALPHA_WEBGL:37441,CONTEXT_LOST_WEBGL:37442,UNPACK_COLORSPACE_CONVERSION_WEBGL:37443,BROWSER_DEFAULT_WEBGL:37444,COMPRESSED_RGB_S3TC_DXT1_EXT:33776,COMPRESSED_RGBA_S3TC_DXT1_EXT:33777,COMPRESSED_RGBA_S3TC_DXT3_EXT:33778,COMPRESSED_RGBA_S3TC_DXT5_EXT:33779,COMPRESSED_RGB_PVRTC_4BPPV1_IMG:35840,COMPRESSED_RGB_PVRTC_2BPPV1_IMG:35841,COMPRESSED_RGBA_PVRTC_4BPPV1_IMG:35842,COMPRESSED_RGBA_PVRTC_2BPPV1_IMG:35843,COMPRESSED_RGBA_ASTC_4x4_WEBGL:37808,COMPRESSED_RGB_ETC1_WEBGL:36196,COMPRESSED_RGBA_BPTC_UNORM:36492,HALF_FLOAT_OES:36193,DOUBLE:5130,READ_BUFFER:3074,UNPACK_ROW_LENGTH:3314,UNPACK_SKIP_ROWS:3315,UNPACK_SKIP_PIXELS:3316,PACK_ROW_LENGTH:3330,PACK_SKIP_ROWS:3331,PACK_SKIP_PIXELS:3332,COLOR:6144,DEPTH:6145,STENCIL:6146,RED:6403,RGB8:32849,RGBA8:32856,RGB10_A2:32857,TEXTURE_BINDING_3D:32874,UNPACK_SKIP_IMAGES:32877,UNPACK_IMAGE_HEIGHT:32878,TEXTURE_3D:32879,TEXTURE_WRAP_R:32882,MAX_3D_TEXTURE_SIZE:32883,UNSIGNED_INT_2_10_10_10_REV:33640,MAX_ELEMENTS_VERTICES:33e3,MAX_ELEMENTS_INDICES:33001,TEXTURE_MIN_LOD:33082,TEXTURE_MAX_LOD:33083,TEXTURE_BASE_LEVEL:33084,TEXTURE_MAX_LEVEL:33085,MIN:32775,MAX:32776,DEPTH_COMPONENT24:33190,MAX_TEXTURE_LOD_BIAS:34045,TEXTURE_COMPARE_MODE:34892,TEXTURE_COMPARE_FUNC:34893,CURRENT_QUERY:34917,QUERY_RESULT:34918,QUERY_RESULT_AVAILABLE:34919,STREAM_READ:35041,STREAM_COPY:35042,STATIC_READ:35045,STATIC_COPY:35046,DYNAMIC_READ:35049,DYNAMIC_COPY:35050,MAX_DRAW_BUFFERS:34852,DRAW_BUFFER0:34853,DRAW_BUFFER1:34854,DRAW_BUFFER2:34855,DRAW_BUFFER3:34856,DRAW_BUFFER4:34857,DRAW_BUFFER5:34858,DRAW_BUFFER6:34859,DRAW_BUFFER7:34860,DRAW_BUFFER8:34861,DRAW_BUFFER9:34862,DRAW_BUFFER10:34863,DRAW_BUFFER11:34864,DRAW_BUFFER12:34865,DRAW_BUFFER13:34866,DRAW_BUFFER14:34867,DRAW_BUFFER15:34868,MAX_FRAGMENT_UNIFORM_COMPONENTS:35657,MAX_VERTEX_UNIFORM_COMPONENTS:35658,SAMPLER_3D:35679,SAMPLER_2D_SHADOW:35682,FRAGMENT_SHADER_DERIVATIVE_HINT:35723,PIXEL_PACK_BUFFER:35051,PIXEL_UNPACK_BUFFER:35052,PIXEL_PACK_BUFFER_BINDING:35053,PIXEL_UNPACK_BUFFER_BINDING:35055,FLOAT_MAT2x3:35685,FLOAT_MAT2x4:35686,FLOAT_MAT3x2:35687,FLOAT_MAT3x4:35688,FLOAT_MAT4x2:35689,FLOAT_MAT4x3:35690,SRGB:35904,SRGB8:35905,SRGB8_ALPHA8:35907,COMPARE_REF_TO_TEXTURE:34894,RGBA32F:34836,RGB32F:34837,RGBA16F:34842,RGB16F:34843,VERTEX_ATTRIB_ARRAY_INTEGER:35069,MAX_ARRAY_TEXTURE_LAYERS:35071,MIN_PROGRAM_TEXEL_OFFSET:35076,MAX_PROGRAM_TEXEL_OFFSET:35077,MAX_VARYING_COMPONENTS:35659,TEXTURE_2D_ARRAY:35866,TEXTURE_BINDING_2D_ARRAY:35869,R11F_G11F_B10F:35898,UNSIGNED_INT_10F_11F_11F_REV:35899,RGB9_E5:35901,UNSIGNED_INT_5_9_9_9_REV:35902,TRANSFORM_FEEDBACK_BUFFER_MODE:35967,MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:35968,TRANSFORM_FEEDBACK_VARYINGS:35971,TRANSFORM_FEEDBACK_BUFFER_START:35972,TRANSFORM_FEEDBACK_BUFFER_SIZE:35973,TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:35976,RASTERIZER_DISCARD:35977,MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:35978,MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:35979,INTERLEAVED_ATTRIBS:35980,SEPARATE_ATTRIBS:35981,TRANSFORM_FEEDBACK_BUFFER:35982,TRANSFORM_FEEDBACK_BUFFER_BINDING:35983,RGBA32UI:36208,RGB32UI:36209,RGBA16UI:36214,RGB16UI:36215,RGBA8UI:36220,RGB8UI:36221,RGBA32I:36226,RGB32I:36227,RGBA16I:36232,RGB16I:36233,RGBA8I:36238,RGB8I:36239,RED_INTEGER:36244,RGB_INTEGER:36248,RGBA_INTEGER:36249,SAMPLER_2D_ARRAY:36289,SAMPLER_2D_ARRAY_SHADOW:36292,SAMPLER_CUBE_SHADOW:36293,UNSIGNED_INT_VEC2:36294,UNSIGNED_INT_VEC3:36295,UNSIGNED_INT_VEC4:36296,INT_SAMPLER_2D:36298,INT_SAMPLER_3D:36299,INT_SAMPLER_CUBE:36300,INT_SAMPLER_2D_ARRAY:36303,UNSIGNED_INT_SAMPLER_2D:36306,UNSIGNED_INT_SAMPLER_3D:36307,UNSIGNED_INT_SAMPLER_CUBE:36308,UNSIGNED_INT_SAMPLER_2D_ARRAY:36311,DEPTH_COMPONENT32F:36012,DEPTH32F_STENCIL8:36013,FLOAT_32_UNSIGNED_INT_24_8_REV:36269,FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING:33296,FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE:33297,FRAMEBUFFER_ATTACHMENT_RED_SIZE:33298,FRAMEBUFFER_ATTACHMENT_GREEN_SIZE:33299,FRAMEBUFFER_ATTACHMENT_BLUE_SIZE:33300,FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE:33301,FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE:33302,FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE:33303,FRAMEBUFFER_DEFAULT:33304,UNSIGNED_INT_24_8:34042,DEPTH24_STENCIL8:35056,UNSIGNED_NORMALIZED:35863,DRAW_FRAMEBUFFER_BINDING:36006,READ_FRAMEBUFFER:36008,DRAW_FRAMEBUFFER:36009,READ_FRAMEBUFFER_BINDING:36010,RENDERBUFFER_SAMPLES:36011,FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER:36052,MAX_COLOR_ATTACHMENTS:36063,COLOR_ATTACHMENT1:36065,COLOR_ATTACHMENT2:36066,COLOR_ATTACHMENT3:36067,COLOR_ATTACHMENT4:36068,COLOR_ATTACHMENT5:36069,COLOR_ATTACHMENT6:36070,COLOR_ATTACHMENT7:36071,COLOR_ATTACHMENT8:36072,COLOR_ATTACHMENT9:36073,COLOR_ATTACHMENT10:36074,COLOR_ATTACHMENT11:36075,COLOR_ATTACHMENT12:36076,COLOR_ATTACHMENT13:36077,COLOR_ATTACHMENT14:36078,COLOR_ATTACHMENT15:36079,FRAMEBUFFER_INCOMPLETE_MULTISAMPLE:36182,MAX_SAMPLES:36183,HALF_FLOAT:5131,RG:33319,RG_INTEGER:33320,R8:33321,RG8:33323,R16F:33325,R32F:33326,RG16F:33327,RG32F:33328,R8I:33329,R8UI:33330,R16I:33331,R16UI:33332,R32I:33333,R32UI:33334,RG8I:33335,RG8UI:33336,RG16I:33337,RG16UI:33338,RG32I:33339,RG32UI:33340,VERTEX_ARRAY_BINDING:34229,R8_SNORM:36756,RG8_SNORM:36757,RGB8_SNORM:36758,RGBA8_SNORM:36759,SIGNED_NORMALIZED:36764,COPY_READ_BUFFER:36662,COPY_WRITE_BUFFER:36663,COPY_READ_BUFFER_BINDING:36662,COPY_WRITE_BUFFER_BINDING:36663,UNIFORM_BUFFER:35345,UNIFORM_BUFFER_BINDING:35368,UNIFORM_BUFFER_START:35369,UNIFORM_BUFFER_SIZE:35370,MAX_VERTEX_UNIFORM_BLOCKS:35371,MAX_FRAGMENT_UNIFORM_BLOCKS:35373,MAX_COMBINED_UNIFORM_BLOCKS:35374,MAX_UNIFORM_BUFFER_BINDINGS:35375,MAX_UNIFORM_BLOCK_SIZE:35376,MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS:35377,MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS:35379,UNIFORM_BUFFER_OFFSET_ALIGNMENT:35380,ACTIVE_UNIFORM_BLOCKS:35382,UNIFORM_TYPE:35383,UNIFORM_SIZE:35384,UNIFORM_BLOCK_INDEX:35386,UNIFORM_OFFSET:35387,UNIFORM_ARRAY_STRIDE:35388,UNIFORM_MATRIX_STRIDE:35389,UNIFORM_IS_ROW_MAJOR:35390,UNIFORM_BLOCK_BINDING:35391,UNIFORM_BLOCK_DATA_SIZE:35392,UNIFORM_BLOCK_ACTIVE_UNIFORMS:35394,UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES:35395,UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:35396,UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:35398,INVALID_INDEX:4294967295,MAX_VERTEX_OUTPUT_COMPONENTS:37154,MAX_FRAGMENT_INPUT_COMPONENTS:37157,MAX_SERVER_WAIT_TIMEOUT:37137,OBJECT_TYPE:37138,SYNC_CONDITION:37139,SYNC_STATUS:37140,SYNC_FLAGS:37141,SYNC_FENCE:37142,SYNC_GPU_COMMANDS_COMPLETE:37143,UNSIGNALED:37144,SIGNALED:37145,ALREADY_SIGNALED:37146,TIMEOUT_EXPIRED:37147,CONDITION_SATISFIED:37148,WAIT_FAILED:37149,SYNC_FLUSH_COMMANDS_BIT:1,VERTEX_ATTRIB_ARRAY_DIVISOR:35070,ANY_SAMPLES_PASSED:35887,ANY_SAMPLES_PASSED_CONSERVATIVE:36202,SAMPLER_BINDING:35097,RGB10_A2UI:36975,INT_2_10_10_10_REV:36255,TRANSFORM_FEEDBACK:36386,TRANSFORM_FEEDBACK_PAUSED:36387,TRANSFORM_FEEDBACK_ACTIVE:36388,TRANSFORM_FEEDBACK_BINDING:36389,COMPRESSED_R11_EAC:37488,COMPRESSED_SIGNED_R11_EAC:37489,COMPRESSED_RG11_EAC:37490,COMPRESSED_SIGNED_RG11_EAC:37491,COMPRESSED_RGB8_ETC2:37492,COMPRESSED_SRGB8_ETC2:37493,COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2:37494,COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2:37495,COMPRESSED_RGBA8_ETC2_EAC:37496,COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:37497,TEXTURE_IMMUTABLE_FORMAT:37167,MAX_ELEMENT_INDEX:36203,TEXTURE_IMMUTABLE_LEVELS:33503,MAX_TEXTURE_MAX_ANISOTROPY_EXT:34047},ee=Object.freeze(Bve);var Pn={BYTE:ee.BYTE,UNSIGNED_BYTE:ee.UNSIGNED_BYTE,SHORT:ee.SHORT,UNSIGNED_SHORT:ee.UNSIGNED_SHORT,INT:ee.INT,UNSIGNED_INT:ee.UNSIGNED_INT,FLOAT:ee.FLOAT,DOUBLE:ee.DOUBLE};Pn.getSizeInBytes=function(e){switch(e){case Pn.BYTE:return Int8Array.BYTES_PER_ELEMENT;case Pn.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case Pn.SHORT:return Int16Array.BYTES_PER_ELEMENT;case Pn.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case Pn.INT:return Int32Array.BYTES_PER_ELEMENT;case Pn.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT;case Pn.FLOAT:return Float32Array.BYTES_PER_ELEMENT;case Pn.DOUBLE:return Float64Array.BYTES_PER_ELEMENT}};Pn.fromTypedArray=function(e){if(e instanceof Int8Array)return Pn.BYTE;if(e instanceof Uint8Array)return Pn.UNSIGNED_BYTE;if(e instanceof Int16Array)return Pn.SHORT;if(e instanceof Uint16Array)return Pn.UNSIGNED_SHORT;if(e instanceof Int32Array)return Pn.INT;if(e instanceof Uint32Array)return Pn.UNSIGNED_INT;if(e instanceof Float32Array)return Pn.FLOAT;if(e instanceof Float64Array)return Pn.DOUBLE};Pn.validate=function(e){return l(e)&&(e===Pn.BYTE||e===Pn.UNSIGNED_BYTE||e===Pn.SHORT||e===Pn.UNSIGNED_SHORT||e===Pn.INT||e===Pn.UNSIGNED_INT||e===Pn.FLOAT||e===Pn.DOUBLE)};Pn.createTypedArray=function(e,t){switch(e){case Pn.BYTE:return new Int8Array(t);case Pn.UNSIGNED_BYTE:return new Uint8Array(t);case Pn.SHORT:return new Int16Array(t);case Pn.UNSIGNED_SHORT:return new Uint16Array(t);case Pn.INT:return new Int32Array(t);case Pn.UNSIGNED_INT:return new Uint32Array(t);case Pn.FLOAT:return new Float32Array(t);case Pn.DOUBLE:return new Float64Array(t)}};Pn.createArrayBufferView=function(e,t,n,i){switch(n=n??0,i=i??(t.byteLength-n)/Pn.getSizeInBytes(e),e){case Pn.BYTE:return new Int8Array(t,n,i);case Pn.UNSIGNED_BYTE:return new Uint8Array(t,n,i);case Pn.SHORT:return new Int16Array(t,n,i);case Pn.UNSIGNED_SHORT:return new Uint16Array(t,n,i);case Pn.INT:return new Int32Array(t,n,i);case Pn.UNSIGNED_INT:return new Uint32Array(t,n,i);case Pn.FLOAT:return new Float32Array(t,n,i);case Pn.DOUBLE:return new Float64Array(t,n,i)}};Pn.fromName=function(e){switch(e){case"BYTE":return Pn.BYTE;case"UNSIGNED_BYTE":return Pn.UNSIGNED_BYTE;case"SHORT":return Pn.SHORT;case"UNSIGNED_SHORT":return Pn.UNSIGNED_SHORT;case"INT":return Pn.INT;case"UNSIGNED_INT":return Pn.UNSIGNED_INT;case"FLOAT":return Pn.FLOAT;case"DOUBLE":return Pn.DOUBLE}};var q=Object.freeze(Pn);var Dve={NONE:0,TRIANGLES:1,LINES:2,POLYLINES:3},Ld=Object.freeze(Dve);function sn(e,t,n,i){this[0]=e??0,this[1]=n??0,this[2]=t??0,this[3]=i??0}sn.packedLength=4;sn.pack=function(e,t,n){return n=n??0,t[n++]=e[0],t[n++]=e[1],t[n++]=e[2],t[n++]=e[3],t};sn.unpack=function(e,t,n){return t=t??0,l(n)||(n=new sn),n[0]=e[t++],n[1]=e[t++],n[2]=e[t++],n[3]=e[t++],n};sn.packArray=function(e,t){let n=e.length,i=n*4;l(t)?!Array.isArray(t)&&t.length!==i||t.length!==i&&(t.length=i):t=new Array(i);for(let o=0;o<n;++o)sn.pack(e[o],t,o*4);return t};sn.unpackArray=function(e,t){let n=e.length;l(t)?t.length=n/4:t=new Array(n/4);for(let i=0;i<n;i+=4){let o=i/4;t[o]=sn.unpack(e,i,t[o])}return t};sn.clone=function(e,t){if(l(e))return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t):new sn(e[0],e[2],e[1],e[3])};sn.fromArray=sn.unpack;sn.fromColumnMajorArray=function(e,t){return sn.clone(e,t)};sn.fromRowMajorArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[2],t[2]=e[1],t[3]=e[3],t):new sn(e[0],e[1],e[2],e[3])};sn.fromScale=function(e,t){return l(t)?(t[0]=e.x,t[1]=0,t[2]=0,t[3]=e.y,t):new sn(e.x,0,0,e.y)};sn.fromUniformScale=function(e,t){return l(t)?(t[0]=e,t[1]=0,t[2]=0,t[3]=e,t):new sn(e,0,0,e)};sn.fromRotation=function(e,t){let n=Math.cos(e),i=Math.sin(e);return l(t)?(t[0]=n,t[1]=i,t[2]=-i,t[3]=n,t):new sn(n,-i,i,n)};sn.toArray=function(e,t){return l(t)?(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t):[e[0],e[1],e[2],e[3]]};sn.getElementIndex=function(e,t){return e*2+t};sn.getColumn=function(e,t,n){let i=t*2,o=e[i],r=e[i+1];return n.x=o,n.y=r,n};sn.setColumn=function(e,t,n,i){i=sn.clone(e,i);let o=t*2;return i[o]=n.x,i[o+1]=n.y,i};sn.getRow=function(e,t,n){let i=e[t],o=e[t+2];return n.x=i,n.y=o,n};sn.setRow=function(e,t,n,i){return i=sn.clone(e,i),i[t]=n.x,i[t+2]=n.y,i};var vve=new k;sn.setScale=function(e,t,n){let i=sn.getScale(e,vve),o=t.x/i.x,r=t.y/i.y;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*r,n[3]=e[3]*r,n};var Pve=new k;sn.setUniformScale=function(e,t,n){let i=sn.getScale(e,Pve),o=t/i.x,r=t/i.y;return n[0]=e[0]*o,n[1]=e[1]*o,n[2]=e[2]*r,n[3]=e[3]*r,n};var Tee=new k;sn.getScale=function(e,t){return t.x=k.magnitude(k.fromElements(e[0],e[1],Tee)),t.y=k.magnitude(k.fromElements(e[2],e[3],Tee)),t};var See=new k;sn.getMaximumScale=function(e){return sn.getScale(e,See),k.maximumComponent(See)};var Rve=new k;sn.setRotation=function(e,t,n){let i=sn.getScale(e,Rve);return n[0]=t[0]*i.x,n[1]=t[1]*i.x,n[2]=t[2]*i.y,n[3]=t[3]*i.y,n};var Mve=new k;sn.getRotation=function(e,t){let n=sn.getScale(e,Mve);return t[0]=e[0]/n.x,t[1]=e[1]/n.x,t[2]=e[2]/n.y,t[3]=e[3]/n.y,t};sn.multiply=function(e,t,n){let i=e[0]*t[0]+e[2]*t[1],o=e[0]*t[2]+e[2]*t[3],r=e[1]*t[0]+e[3]*t[1],s=e[1]*t[2]+e[3]*t[3];return n[0]=i,n[1]=r,n[2]=o,n[3]=s,n};sn.add=function(e,t,n){return n[0]=e[0]+t[0],n[1]=e[1]+t[1],n[2]=e[2]+t[2],n[3]=e[3]+t[3],n};sn.subtract=function(e,t,n){return n[0]=e[0]-t[0],n[1]=e[1]-t[1],n[2]=e[2]-t[2],n[3]=e[3]-t[3],n};sn.multiplyByVector=function(e,t,n){let i=e[0]*t.x+e[2]*t.y,o=e[1]*t.x+e[3]*t.y;return n.x=i,n.y=o,n};sn.multiplyByScalar=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n};sn.multiplyByScale=function(e,t,n){return n[0]=e[0]*t.x,n[1]=e[1]*t.x,n[2]=e[2]*t.y,n[3]=e[3]*t.y,n};sn.multiplyByUniformScale=function(e,t,n){return n[0]=e[0]*t,n[1]=e[1]*t,n[2]=e[2]*t,n[3]=e[3]*t,n};sn.negate=function(e,t){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t};sn.transpose=function(e,t){let n=e[0],i=e[2],o=e[1],r=e[3];return t[0]=n,t[1]=i,t[2]=o,t[3]=r,t};sn.abs=function(e,t){return t[0]=Math.abs(e[0]),t[1]=Math.abs(e[1]),t[2]=Math.abs(e[2]),t[3]=Math.abs(e[3]),t};sn.equals=function(e,t){return e===t||l(e)&&l(t)&&e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]};sn.equalsArray=function(e,t,n){return e[0]===t[n]&&e[1]===t[n+1]&&e[2]===t[n+2]&&e[3]===t[n+3]};sn.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e[0]-t[0])<=n&&Math.abs(e[1]-t[1])<=n&&Math.abs(e[2]-t[2])<=n&&Math.abs(e[3]-t[3])<=n};sn.IDENTITY=Object.freeze(new sn(1,0,0,1));sn.ZERO=Object.freeze(new sn(0,0,0,0));sn.COLUMN0ROW0=0;sn.COLUMN0ROW1=1;sn.COLUMN1ROW0=2;sn.COLUMN1ROW1=3;Object.defineProperties(sn.prototype,{length:{get:function(){return sn.packedLength}}});sn.prototype.clone=function(e){return sn.clone(this,e)};sn.prototype.equals=function(e){return sn.equals(this,e)};sn.prototype.equalsEpsilon=function(e,t){return sn.equalsEpsilon(this,e,t)};sn.prototype.toString=function(){return`(${this[0]}, ${this[2]}) +(${this[1]}, ${this[3]})`};var Wi=sn;var Xa={POINTS:ee.POINTS,LINES:ee.LINES,LINE_LOOP:ee.LINE_LOOP,LINE_STRIP:ee.LINE_STRIP,TRIANGLES:ee.TRIANGLES,TRIANGLE_STRIP:ee.TRIANGLE_STRIP,TRIANGLE_FAN:ee.TRIANGLE_FAN};Xa.isLines=function(e){return e===Xa.LINES||e===Xa.LINE_LOOP||e===Xa.LINE_STRIP};Xa.isTriangles=function(e){return e===Xa.TRIANGLES||e===Xa.TRIANGLE_STRIP||e===Xa.TRIANGLE_FAN};Xa.validate=function(e){return e===Xa.POINTS||e===Xa.LINES||e===Xa.LINE_LOOP||e===Xa.LINE_STRIP||e===Xa.TRIANGLES||e===Xa.TRIANGLE_STRIP||e===Xa.TRIANGLE_FAN};var Me=Object.freeze(Xa);function R9(e){e=e??V.EMPTY_OBJECT,this.attributes=e.attributes,this.indices=e.indices,this.primitiveType=e.primitiveType??Me.TRIANGLES,this.boundingSphere=e.boundingSphere,this.geometryType=e.geometryType??Ld.NONE,this.boundingSphereCV=e.boundingSphereCV,this.offsetAttribute=e.offsetAttribute}R9.computeNumberOfVertices=function(e){let t=-1;for(let n in e.attributes)if(e.attributes.hasOwnProperty(n)&&l(e.attributes[n])&&l(e.attributes[n].values)){let i=e.attributes[n];t=i.values.length/i.componentsPerAttribute}return t};var Nve=new Ae,Lve=new d,wee=new R,Ove=[new Ae,new Ae,new Ae],Fve=[new k,new k,new k],Qve=[new k,new k,new k],kve=new d,Uve=new Le,Gve=new R,zve=new Wi;R9._textureCoordinateRotationPoints=function(e,t,n,i){let o,r=ae.center(i,Nve),s=Ae.toCartesian(r,n,Lve),a=kt.eastNorthUpToFixedFrame(s,n,wee),c=R.inverse(a,wee),u=Fve,f=Ove;f[0].longitude=i.west,f[0].latitude=i.south,f[1].longitude=i.west,f[1].latitude=i.north,f[2].longitude=i.east,f[2].latitude=i.south;let h=kve;for(o=0;o<3;o++)Ae.toCartesian(f[o],n,h),h=R.multiplyByPointAsVector(c,h,h),u[o].x=h.x,u[o].y=h.y;let A=Le.fromAxisAngle(d.UNIT_Z,-t,Uve),g=J.fromQuaternion(A,Gve),m=e.length,_=Number.POSITIVE_INFINITY,y=Number.POSITIVE_INFINITY,C=Number.NEGATIVE_INFINITY,E=Number.NEGATIVE_INFINITY;for(o=0;o<m;o++)h=R.multiplyByPointAsVector(c,e[o],h),h=J.multiplyByVector(g,h,h),_=Math.min(_,h.x),y=Math.min(y,h.y),C=Math.max(C,h.x),E=Math.max(E,h.y);let I=Wi.fromRotation(t,zve),b=Qve;b[0].x=_,b[0].y=y,b[1].x=_,b[1].y=E,b[2].x=C,b[2].y=y;let S=u[0],B=u[2].x-S.x,v=u[1].y-S.y;for(o=0;o<3;o++){let x=b[o];Wi.multiplyByVector(I,x,x),x.x=(x.x-S.x)/B,x.y=(x.y-S.y)/v}let P=b[0],N=b[1],L=b[2],p=new Array(6);return k.pack(P,p),k.pack(N,p,2),k.pack(L,p,4),p};var ht=R9;function Vve(e){e=e??V.EMPTY_OBJECT,this.componentDatatype=e.componentDatatype,this.componentsPerAttribute=e.componentsPerAttribute,this.normalize=e.normalize??!1,this.values=e.values}var De=Vve;function Hve(e){e=e??V.EMPTY_OBJECT,this.position=e.position,this.normal=e.normal,this.st=e.st,this.bitangent=e.bitangent,this.tangent=e.tangent,this.color=e.color}var En=Hve;var Wve={NONE:0,TOP:1,ALL:2},hn=Object.freeze(Wve);function Is(e){e=e??V.EMPTY_OBJECT,this.position=e.position??!1,this.normal=e.normal??!1,this.st=e.st??!1,this.bitangent=e.bitangent??!1,this.tangent=e.tangent??!1,this.color=e.color??!1}Is.POSITION_ONLY=Object.freeze(new Is({position:!0}));Is.POSITION_AND_NORMAL=Object.freeze(new Is({position:!0,normal:!0}));Is.POSITION_NORMAL_AND_ST=Object.freeze(new Is({position:!0,normal:!0,st:!0}));Is.POSITION_AND_ST=Object.freeze(new Is({position:!0,st:!0}));Is.POSITION_AND_COLOR=Object.freeze(new Is({position:!0,color:!0}));Is.ALL=Object.freeze(new Is({position:!0,normal:!0,st:!0,tangent:!0,bitangent:!0}));Is.DEFAULT=Is.POSITION_NORMAL_AND_ST;Is.packedLength=6;Is.pack=function(e,t,n){return n=n??0,t[n++]=e.position?1:0,t[n++]=e.normal?1:0,t[n++]=e.st?1:0,t[n++]=e.tangent?1:0,t[n++]=e.bitangent?1:0,t[n]=e.color?1:0,t};Is.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Is),n.position=e[t++]===1,n.normal=e[t++]===1,n.st=e[t++]===1,n.tangent=e[t++]===1,n.bitangent=e[t++]===1,n.color=e[t]===1,n};Is.clone=function(e,t){if(l(e))return l(t)||(t=new Is),t.position=e.position,t.normal=e.normal,t.st=e.st,t.tangent=e.tangent,t.bitangent=e.bitangent,t.color=e.color,t};var Pe=Is;var jve=new d;function Eu(e){e=e??V.EMPTY_OBJECT;let t=e.minimum,n=e.maximum,i=e.vertexFormat??Pe.DEFAULT;this._minimum=d.clone(t),this._maximum=d.clone(n),this._vertexFormat=i,this._offsetAttribute=e.offsetAttribute,this._workerName="createBoxGeometry"}Eu.fromDimensions=function(e){e=e??V.EMPTY_OBJECT;let t=e.dimensions,n=d.multiplyByScalar(t,.5,new d);return new Eu({minimum:d.negate(n,new d),maximum:n,vertexFormat:e.vertexFormat,offsetAttribute:e.offsetAttribute})};Eu.fromAxisAlignedBoundingBox=function(e){return new Eu({minimum:e.minimum,maximum:e.maximum})};Eu.packedLength=2*d.packedLength+Pe.packedLength+1;Eu.pack=function(e,t,n){return n=n??0,d.pack(e._minimum,t,n),d.pack(e._maximum,t,n+d.packedLength),Pe.pack(e._vertexFormat,t,n+2*d.packedLength),t[n+2*d.packedLength+Pe.packedLength]=e._offsetAttribute??-1,t};var Dee=new d,vee=new d,Pee=new Pe,Bee={minimum:Dee,maximum:vee,vertexFormat:Pee,offsetAttribute:void 0};Eu.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,Dee),o=d.unpack(e,t+d.packedLength,vee),r=Pe.unpack(e,t+2*d.packedLength,Pee),s=e[t+2*d.packedLength+Pe.packedLength];return l(n)?(n._minimum=d.clone(i,n._minimum),n._maximum=d.clone(o,n._maximum),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._offsetAttribute=s===-1?void 0:s,n):(Bee.offsetAttribute=s===-1?void 0:s,new Eu(Bee))};Eu.createGeometry=function(e){let t=e._minimum,n=e._maximum,i=e._vertexFormat;if(d.equals(t,n))return;let o=new En,r,s;if(i.position&&(i.st||i.normal||i.tangent||i.bitangent)){if(i.position&&(s=new Float64Array(72),s[0]=t.x,s[1]=t.y,s[2]=n.z,s[3]=n.x,s[4]=t.y,s[5]=n.z,s[6]=n.x,s[7]=n.y,s[8]=n.z,s[9]=t.x,s[10]=n.y,s[11]=n.z,s[12]=t.x,s[13]=t.y,s[14]=t.z,s[15]=n.x,s[16]=t.y,s[17]=t.z,s[18]=n.x,s[19]=n.y,s[20]=t.z,s[21]=t.x,s[22]=n.y,s[23]=t.z,s[24]=n.x,s[25]=t.y,s[26]=t.z,s[27]=n.x,s[28]=n.y,s[29]=t.z,s[30]=n.x,s[31]=n.y,s[32]=n.z,s[33]=n.x,s[34]=t.y,s[35]=n.z,s[36]=t.x,s[37]=t.y,s[38]=t.z,s[39]=t.x,s[40]=n.y,s[41]=t.z,s[42]=t.x,s[43]=n.y,s[44]=n.z,s[45]=t.x,s[46]=t.y,s[47]=n.z,s[48]=t.x,s[49]=n.y,s[50]=t.z,s[51]=n.x,s[52]=n.y,s[53]=t.z,s[54]=n.x,s[55]=n.y,s[56]=n.z,s[57]=t.x,s[58]=n.y,s[59]=n.z,s[60]=t.x,s[61]=t.y,s[62]=t.z,s[63]=n.x,s[64]=t.y,s[65]=t.z,s[66]=n.x,s[67]=t.y,s[68]=n.z,s[69]=t.x,s[70]=t.y,s[71]=n.z,o.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s})),i.normal){let u=new Float32Array(72);u[0]=0,u[1]=0,u[2]=1,u[3]=0,u[4]=0,u[5]=1,u[6]=0,u[7]=0,u[8]=1,u[9]=0,u[10]=0,u[11]=1,u[12]=0,u[13]=0,u[14]=-1,u[15]=0,u[16]=0,u[17]=-1,u[18]=0,u[19]=0,u[20]=-1,u[21]=0,u[22]=0,u[23]=-1,u[24]=1,u[25]=0,u[26]=0,u[27]=1,u[28]=0,u[29]=0,u[30]=1,u[31]=0,u[32]=0,u[33]=1,u[34]=0,u[35]=0,u[36]=-1,u[37]=0,u[38]=0,u[39]=-1,u[40]=0,u[41]=0,u[42]=-1,u[43]=0,u[44]=0,u[45]=-1,u[46]=0,u[47]=0,u[48]=0,u[49]=1,u[50]=0,u[51]=0,u[52]=1,u[53]=0,u[54]=0,u[55]=1,u[56]=0,u[57]=0,u[58]=1,u[59]=0,u[60]=0,u[61]=-1,u[62]=0,u[63]=0,u[64]=-1,u[65]=0,u[66]=0,u[67]=-1,u[68]=0,u[69]=0,u[70]=-1,u[71]=0,o.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:u})}if(i.st){let u=new Float32Array(48);u[0]=0,u[1]=0,u[2]=1,u[3]=0,u[4]=1,u[5]=1,u[6]=0,u[7]=1,u[8]=1,u[9]=0,u[10]=0,u[11]=0,u[12]=0,u[13]=1,u[14]=1,u[15]=1,u[16]=0,u[17]=0,u[18]=1,u[19]=0,u[20]=1,u[21]=1,u[22]=0,u[23]=1,u[24]=1,u[25]=0,u[26]=0,u[27]=0,u[28]=0,u[29]=1,u[30]=1,u[31]=1,u[32]=1,u[33]=0,u[34]=0,u[35]=0,u[36]=0,u[37]=1,u[38]=1,u[39]=1,u[40]=0,u[41]=0,u[42]=1,u[43]=0,u[44]=1,u[45]=1,u[46]=0,u[47]=1,o.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:u})}if(i.tangent){let u=new Float32Array(72);u[0]=1,u[1]=0,u[2]=0,u[3]=1,u[4]=0,u[5]=0,u[6]=1,u[7]=0,u[8]=0,u[9]=1,u[10]=0,u[11]=0,u[12]=-1,u[13]=0,u[14]=0,u[15]=-1,u[16]=0,u[17]=0,u[18]=-1,u[19]=0,u[20]=0,u[21]=-1,u[22]=0,u[23]=0,u[24]=0,u[25]=1,u[26]=0,u[27]=0,u[28]=1,u[29]=0,u[30]=0,u[31]=1,u[32]=0,u[33]=0,u[34]=1,u[35]=0,u[36]=0,u[37]=-1,u[38]=0,u[39]=0,u[40]=-1,u[41]=0,u[42]=0,u[43]=-1,u[44]=0,u[45]=0,u[46]=-1,u[47]=0,u[48]=-1,u[49]=0,u[50]=0,u[51]=-1,u[52]=0,u[53]=0,u[54]=-1,u[55]=0,u[56]=0,u[57]=-1,u[58]=0,u[59]=0,u[60]=1,u[61]=0,u[62]=0,u[63]=1,u[64]=0,u[65]=0,u[66]=1,u[67]=0,u[68]=0,u[69]=1,u[70]=0,u[71]=0,o.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:u})}if(i.bitangent){let u=new Float32Array(72);u[0]=0,u[1]=1,u[2]=0,u[3]=0,u[4]=1,u[5]=0,u[6]=0,u[7]=1,u[8]=0,u[9]=0,u[10]=1,u[11]=0,u[12]=0,u[13]=1,u[14]=0,u[15]=0,u[16]=1,u[17]=0,u[18]=0,u[19]=1,u[20]=0,u[21]=0,u[22]=1,u[23]=0,u[24]=0,u[25]=0,u[26]=1,u[27]=0,u[28]=0,u[29]=1,u[30]=0,u[31]=0,u[32]=1,u[33]=0,u[34]=0,u[35]=1,u[36]=0,u[37]=0,u[38]=1,u[39]=0,u[40]=0,u[41]=1,u[42]=0,u[43]=0,u[44]=1,u[45]=0,u[46]=0,u[47]=1,u[48]=0,u[49]=0,u[50]=1,u[51]=0,u[52]=0,u[53]=1,u[54]=0,u[55]=0,u[56]=1,u[57]=0,u[58]=0,u[59]=1,u[60]=0,u[61]=0,u[62]=1,u[63]=0,u[64]=0,u[65]=1,u[66]=0,u[67]=0,u[68]=1,u[69]=0,u[70]=0,u[71]=1,o.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:u})}r=new Uint16Array(36),r[0]=0,r[1]=1,r[2]=2,r[3]=0,r[4]=2,r[5]=3,r[6]=6,r[7]=5,r[8]=4,r[9]=7,r[10]=6,r[11]=4,r[12]=8,r[13]=9,r[14]=10,r[15]=8,r[16]=10,r[17]=11,r[18]=14,r[19]=13,r[20]=12,r[21]=15,r[22]=14,r[23]=12,r[24]=18,r[25]=17,r[26]=16,r[27]=19,r[28]=18,r[29]=16,r[30]=20,r[31]=21,r[32]=22,r[33]=20,r[34]=22,r[35]=23}else s=new Float64Array(24),s[0]=t.x,s[1]=t.y,s[2]=t.z,s[3]=n.x,s[4]=t.y,s[5]=t.z,s[6]=n.x,s[7]=n.y,s[8]=t.z,s[9]=t.x,s[10]=n.y,s[11]=t.z,s[12]=t.x,s[13]=t.y,s[14]=n.z,s[15]=n.x,s[16]=t.y,s[17]=n.z,s[18]=n.x,s[19]=n.y,s[20]=n.z,s[21]=t.x,s[22]=n.y,s[23]=n.z,o.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s}),r=new Uint16Array(36),r[0]=4,r[1]=5,r[2]=6,r[3]=4,r[4]=6,r[5]=7,r[6]=1,r[7]=0,r[8]=3,r[9]=1,r[10]=3,r[11]=2,r[12]=1,r[13]=6,r[14]=5,r[15]=1,r[16]=2,r[17]=6,r[18]=2,r[19]=3,r[20]=7,r[21]=2,r[22]=7,r[23]=6,r[24]=3,r[25]=0,r[26]=4,r[27]=3,r[28]=4,r[29]=7,r[30]=0,r[31]=1,r[32]=5,r[33]=0,r[34]=5,r[35]=4;let a=d.subtract(n,t,jve),c=d.magnitude(a)*.5;if(l(e._offsetAttribute)){let u=s.length,f=e._offsetAttribute===hn.NONE?0:1,h=new Uint8Array(u/3).fill(f);o.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}return new ht({attributes:o,indices:r,primitiveType:Me.TRIANGLES,boundingSphere:new le(d.ZERO,c),offsetAttribute:e._offsetAttribute})};var M9;Eu.getUnitBox=function(){return l(M9)||(M9=Eu.createGeometry(Eu.fromDimensions({dimensions:new d(1,1,1),vertexFormat:Pe.POSITION_ONLY}))),M9};var yc=Eu;var Yve=new d;function Zh(e){e=e??V.EMPTY_OBJECT;let t=e.minimum,n=e.maximum;this._min=d.clone(t),this._max=d.clone(n),this._offsetAttribute=e.offsetAttribute,this._workerName="createBoxOutlineGeometry"}Zh.fromDimensions=function(e){e=e??V.EMPTY_OBJECT;let t=e.dimensions,n=d.multiplyByScalar(t,.5,new d);return new Zh({minimum:d.negate(n,new d),maximum:n,offsetAttribute:e.offsetAttribute})};Zh.fromAxisAlignedBoundingBox=function(e){return new Zh({minimum:e.minimum,maximum:e.maximum})};Zh.packedLength=2*d.packedLength+1;Zh.pack=function(e,t,n){return n=n??0,d.pack(e._min,t,n),d.pack(e._max,t,n+d.packedLength),t[n+d.packedLength*2]=e._offsetAttribute??-1,t};var Mee=new d,Nee=new d,Ree={minimum:Mee,maximum:Nee,offsetAttribute:void 0};Zh.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,Mee),o=d.unpack(e,t+d.packedLength,Nee),r=e[t+d.packedLength*2];return l(n)?(n._min=d.clone(i,n._min),n._max=d.clone(o,n._max),n._offsetAttribute=r===-1?void 0:r,n):(Ree.offsetAttribute=r===-1?void 0:r,new Zh(Ree))};Zh.createGeometry=function(e){let t=e._min,n=e._max;if(d.equals(t,n))return;let i=new En,o=new Uint16Array(24),r=new Float64Array(24);r[0]=t.x,r[1]=t.y,r[2]=t.z,r[3]=n.x,r[4]=t.y,r[5]=t.z,r[6]=n.x,r[7]=n.y,r[8]=t.z,r[9]=t.x,r[10]=n.y,r[11]=t.z,r[12]=t.x,r[13]=t.y,r[14]=n.z,r[15]=n.x,r[16]=t.y,r[17]=n.z,r[18]=n.x,r[19]=n.y,r[20]=n.z,r[21]=t.x,r[22]=n.y,r[23]=n.z,i.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:r}),o[0]=4,o[1]=5,o[2]=5,o[3]=6,o[4]=6,o[5]=7,o[6]=7,o[7]=4,o[8]=0,o[9]=1,o[10]=1,o[11]=2,o[12]=2,o[13]=3,o[14]=3,o[15]=0,o[16]=0,o[17]=4,o[18]=1,o[19]=5,o[20]=2,o[21]=6,o[22]=3,o[23]=7;let s=d.subtract(n,t,Yve),a=d.magnitude(s)*.5;if(l(e._offsetAttribute)){let c=r.length,u=e._offsetAttribute===hn.NONE?0:1,f=new Uint8Array(c/3).fill(u);i.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:f})}return new ht({attributes:i,indices:o,primitiveType:Me.LINES,boundingSphere:new le(d.ZERO,a),offsetAttribute:e._offsetAttribute})};var $h=Zh;function sI(e,t,n,i){e=e??1,t=t??1,n=n??1,i=i??1,this.value=new Uint8Array([G.floatToByte(e),G.floatToByte(t),G.floatToByte(n),G.floatToByte(i)])}Object.defineProperties(sI.prototype,{componentDatatype:{get:function(){return q.UNSIGNED_BYTE}},componentsPerAttribute:{get:function(){return 4}},normalize:{get:function(){return!0}}});sI.fromColor=function(e){return new sI(e.red,e.green,e.blue,e.alpha)};sI.toValue=function(e,t){return l(t)?e.toBytes(t):new Uint8Array(e.toBytes())};sI.equals=function(e,t){return e===t||l(e)&&l(t)&&e.value[0]===t.value[0]&&e.value[1]===t.value[1]&&e.value[2]===t.value[2]&&e.value[3]===t.value[3]};var en=sI;function KS(e,t){e=e??0,t=t??Number.MAX_VALUE,this.value=new Float32Array([e,t])}Object.defineProperties(KS.prototype,{componentDatatype:{get:function(){return q.FLOAT}},componentsPerAttribute:{get:function(){return 2}},normalize:{get:function(){return!1}}});KS.fromDistanceDisplayCondition=function(e){return new KS(e.near,e.far)};KS.toValue=function(e,t){return l(t)?(t[0]=e.near,t[1]=e.far,t):new Float32Array([e.near,e.far])};var Kn=KS;function qve(e){e=e??V.EMPTY_OBJECT,this.geometry=e.geometry,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this.id=e.id,this.pickPrimitive=e.pickPrimitive,this.attributes=e.attributes??{},this.westHemisphereGeometry=void 0,this.eastHemisphereGeometry=void 0}var Rt=qve;function nr(e){e=e??V.EMPTY_OBJECT,this.start=l(e.start)?K.clone(e.start):new K,this.stop=l(e.stop)?K.clone(e.stop):new K,this.data=e.data,this.isStartIncluded=e.isStartIncluded??!0,this.isStopIncluded=e.isStopIncluded??!0}Object.defineProperties(nr.prototype,{isEmpty:{get:function(){let e=K.compare(this.stop,this.start);return e<0||e===0&&(!this.isStartIncluded||!this.isStopIncluded)}}});var aI={start:void 0,stop:void 0,isStartIncluded:void 0,isStopIncluded:void 0,data:void 0};nr.fromIso8601=function(e,t){let n=e.iso8601.split("/");if(n.length!==2)throw new me("options.iso8601 is an invalid ISO 8601 interval.");let i=K.fromIso8601(n[0]),o=K.fromIso8601(n[1]),r=e.isStartIncluded??!0,s=e.isStopIncluded??!0,a=e.data;return l(t)?(t.start=i,t.stop=o,t.isStartIncluded=r,t.isStopIncluded=s,t.data=a,t):(aI.start=i,aI.stop=o,aI.isStartIncluded=r,aI.isStopIncluded=s,aI.data=a,new nr(aI))};nr.toIso8601=function(e,t){return`${K.toIso8601(e.start,t)}/${K.toIso8601(e.stop,t)}`};nr.clone=function(e,t){if(l(e))return l(t)?(t.start=e.start,t.stop=e.stop,t.isStartIncluded=e.isStartIncluded,t.isStopIncluded=e.isStopIncluded,t.data=e.data,t):new nr(e)};nr.equals=function(e,t,n){return e===t||l(e)&&l(t)&&(e.isEmpty&&t.isEmpty||e.isStartIncluded===t.isStartIncluded&&e.isStopIncluded===t.isStopIncluded&&K.equals(e.start,t.start)&&K.equals(e.stop,t.stop)&&(e.data===t.data||l(n)&&n(e.data,t.data)))};nr.equalsEpsilon=function(e,t,n,i){return n=n??0,e===t||l(e)&&l(t)&&(e.isEmpty&&t.isEmpty||e.isStartIncluded===t.isStartIncluded&&e.isStopIncluded===t.isStopIncluded&&K.equalsEpsilon(e.start,t.start,n)&&K.equalsEpsilon(e.stop,t.stop,n)&&(e.data===t.data||l(i)&&i(e.data,t.data)))};nr.intersect=function(e,t,n,i){if(!l(t))return nr.clone(nr.EMPTY,n);let o=e.start,r=e.stop,s=t.start,a=t.stop,c=K.greaterThanOrEquals(s,o)&&K.greaterThanOrEquals(r,s),u=!c&&K.lessThanOrEquals(s,o)&&K.lessThanOrEquals(o,a);if(!c&&!u)return nr.clone(nr.EMPTY,n);let f=e.isStartIncluded,h=e.isStopIncluded,A=t.isStartIncluded,g=t.isStopIncluded,m=K.lessThan(r,a);return l(n)||(n=new nr),n.start=c?s:o,n.isStartIncluded=f&&A||!K.equals(s,o)&&(c&&A||u&&f),n.stop=m?r:a,n.isStopIncluded=m?h:h&&g||!K.equals(a,r)&&g,n.data=l(i)?i(e.data,t.data):e.data,n};nr.contains=function(e,t){if(e.isEmpty)return!1;let n=K.compare(e.start,t);if(n===0)return e.isStartIncluded;let i=K.compare(t,e.stop);return i===0?e.isStopIncluded:n<0&&i<0};nr.prototype.clone=function(e){return nr.clone(this,e)};nr.prototype.equals=function(e,t){return nr.equals(this,e,t)};nr.prototype.equalsEpsilon=function(e,t,n){return nr.equalsEpsilon(this,e,t,n)};nr.prototype.toString=function(){return nr.toIso8601(this)};nr.EMPTY=Object.freeze(new nr({start:new K,stop:new K,isStartIncluded:!1,isStopIncluded:!1}));var Rn=nr;var Lee=Object.freeze(K.fromIso8601("0000-01-01T00:00:00Z")),Oee=Object.freeze(K.fromIso8601("9999-12-31T24:00:00Z")),Kve=Object.freeze(new Rn({start:Lee,stop:Oee})),Xve={MINIMUM_VALUE:Lee,MAXIMUM_VALUE:Oee,MAXIMUM_INTERVAL:Kve},je=Xve;function XS(e,t,n){e=e??0,t=t??0,n=n??0,this.value=new Float32Array([e,t,n])}Object.defineProperties(XS.prototype,{componentDatatype:{get:function(){return q.FLOAT}},componentsPerAttribute:{get:function(){return 3}},normalize:{get:function(){return!1}}});XS.fromCartesian3=function(e){return new XS(e.x,e.y,e.z)};XS.toValue=function(e,t){return l(t)||(t=new Float32Array([e.x,e.y,e.z])),t[0]=e.x,t[1]=e.y,t[2]=e.z,t};var ho=XS;function aM(e){e=e??!0,this.value=aM.toValue(e)}Object.defineProperties(aM.prototype,{componentDatatype:{get:function(){return q.UNSIGNED_BYTE}},componentsPerAttribute:{get:function(){return 1}},normalize:{get:function(){return!1}}});aM.toValue=function(e,t){return l(t)?(t[0]=e,t):new Uint8Array([e])};var Bn=aM;var cM=`in vec3 v_positionEC; +in vec3 v_normalEC; +in vec3 v_tangentEC; +in vec3 v_bitangentEC; +in vec2 v_st; + +void main() +{ + vec3 positionToEyeEC = -v_positionEC; + mat3 tangentToEyeMatrix = czm_tangentToEyeSpaceMatrix(v_normalEC, v_tangentEC, v_bitangentEC); + + vec3 normalEC = normalize(v_normalEC); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.tangentToEyeMatrix = tangentToEyeMatrix; + materialInput.positionToEyeEC = positionToEyeEC; + materialInput.st = v_st; + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} +`;var lM=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 normal; +in vec3 tangent; +in vec3 bitangent; +in vec2 st; +in float batchId; + +out vec3 v_positionEC; +out vec3 v_normalEC; +out vec3 v_tangentEC; +out vec3 v_bitangentEC; +out vec2 v_st; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_normalEC = czm_normal * normal; // normal in eye coordinates + v_tangentEC = czm_normal * tangent; // tangent in eye coordinates + v_bitangentEC = czm_normal * bitangent; // bitangent in eye coordinates + v_st = st; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;var uM=`in vec3 v_positionEC; +in vec3 v_normalEC; + +void main() +{ + vec3 positionToEyeEC = -v_positionEC; + + vec3 normalEC = normalize(v_normalEC); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.positionToEyeEC = positionToEyeEC; + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} +`;var fM=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 normal; +in float batchId; + +out vec3 v_positionEC; +out vec3 v_normalEC; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_normalEC = czm_normal * normal; // normal in eye coordinates + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;var dM=`in vec3 v_positionEC; +in vec3 v_normalEC; +in vec2 v_st; + +void main() +{ + vec3 positionToEyeEC = -v_positionEC; + + vec3 normalEC = normalize(v_normalEC); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.positionToEyeEC = positionToEyeEC; + materialInput.st = v_st; + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} +`;var hM=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 normal; +in vec2 st; +in float batchId; + +out vec3 v_positionEC; +out vec3 v_normalEC; +out vec2 v_st; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_normalEC = czm_normal * normal; // normal in eye coordinates + v_st = st; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;var Jve={ADD:ee.FUNC_ADD,SUBTRACT:ee.FUNC_SUBTRACT,REVERSE_SUBTRACT:ee.FUNC_REVERSE_SUBTRACT,MIN:ee.MIN,MAX:ee.MAX},Cc=Object.freeze(Jve);var Zve={ZERO:ee.ZERO,ONE:ee.ONE,SOURCE_COLOR:ee.SRC_COLOR,ONE_MINUS_SOURCE_COLOR:ee.ONE_MINUS_SRC_COLOR,DESTINATION_COLOR:ee.DST_COLOR,ONE_MINUS_DESTINATION_COLOR:ee.ONE_MINUS_DST_COLOR,SOURCE_ALPHA:ee.SRC_ALPHA,ONE_MINUS_SOURCE_ALPHA:ee.ONE_MINUS_SRC_ALPHA,DESTINATION_ALPHA:ee.DST_ALPHA,ONE_MINUS_DESTINATION_ALPHA:ee.ONE_MINUS_DST_ALPHA,CONSTANT_COLOR:ee.CONSTANT_COLOR,ONE_MINUS_CONSTANT_COLOR:ee.ONE_MINUS_CONSTANT_COLOR,CONSTANT_ALPHA:ee.CONSTANT_ALPHA,ONE_MINUS_CONSTANT_ALPHA:ee.ONE_MINUS_CONSTANT_ALPHA,SOURCE_ALPHA_SATURATE:ee.SRC_ALPHA_SATURATE},Uo=Object.freeze(Zve);var $ve={DISABLED:Object.freeze({enabled:!1}),ALPHA_BLEND:Object.freeze({enabled:!0,equationRgb:Cc.ADD,equationAlpha:Cc.ADD,functionSourceRgb:Uo.SOURCE_ALPHA,functionSourceAlpha:Uo.ONE,functionDestinationRgb:Uo.ONE_MINUS_SOURCE_ALPHA,functionDestinationAlpha:Uo.ONE_MINUS_SOURCE_ALPHA}),PRE_MULTIPLIED_ALPHA_BLEND:Object.freeze({enabled:!0,equationRgb:Cc.ADD,equationAlpha:Cc.ADD,functionSourceRgb:Uo.ONE,functionSourceAlpha:Uo.ONE,functionDestinationRgb:Uo.ONE_MINUS_SOURCE_ALPHA,functionDestinationAlpha:Uo.ONE_MINUS_SOURCE_ALPHA}),ADDITIVE_BLEND:Object.freeze({enabled:!0,equationRgb:Cc.ADD,equationAlpha:Cc.ADD,functionSourceRgb:Uo.SOURCE_ALPHA,functionSourceAlpha:Uo.ONE,functionDestinationRgb:Uo.ONE,functionDestinationAlpha:Uo.ONE})},pn=Object.freeze($ve);var ePe={FRONT:ee.FRONT,BACK:ee.BACK,FRONT_AND_BACK:ee.FRONT_AND_BACK},Mi=Object.freeze(ePe);function cI(e){e=e??V.EMPTY_OBJECT,this.material=e.material,this.translucent=e.translucent??!0,this._vertexShaderSource=e.vertexShaderSource,this._fragmentShaderSource=e.fragmentShaderSource,this._renderState=e.renderState,this._closed=e.closed??!1}Object.defineProperties(cI.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}}});cI.prototype.getFragmentShaderSource=function(){let e=[];return this.flat&&e.push("#define FLAT"),this.faceForward&&e.push("#define FACE_FORWARD"),l(this.material)&&e.push(this.material.shaderSource),e.push(this.fragmentShaderSource),e.join(` +`)};cI.prototype.isTranslucent=function(){return l(this.material)&&this.material.isTranslucent()||!l(this.material)&&this.translucent};cI.prototype.getRenderState=function(){let e=this.isTranslucent(),t=ze(this.renderState,!1);return e?(t.depthMask=!1,t.blending=pn.ALPHA_BLEND):t.depthMask=!0,t};cI.getDefaultRenderState=function(e,t,n){let i={depthTest:{enabled:!0}};return e&&(i.depthMask=!1,i.blending=pn.ALPHA_BLEND),t&&(i.cull={enabled:!0,face:Mi.BACK}),l(n)&&(i=wt(n,i,!0)),i};var go=cI;function tPe(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}var Xn=tPe;function lI(e,t,n,i,o){this._format=e,this._datatype=t,this._width=n,this._height=i,this._buffer=o}Object.defineProperties(lI.prototype,{internalFormat:{get:function(){return this._format}},pixelDatatype:{get:function(){return this._datatype}},width:{get:function(){return this._width}},height:{get:function(){return this._height}},bufferView:{get:function(){return this._buffer}},arrayBufferView:{get:function(){return this._buffer}}});lI.clone=function(e){if(l(e))return new lI(e._format,e._datatype,e._width,e._height,e._buffer)};lI.prototype.clone=function(){return lI.clone(this)};var mM=lI;var Fee=Es(_u(),1);function Qee(){if(!l(ba._canTransferArrayBuffer)){let e=O9("transferTypedArrayTest");e.postMessage=e.webkitPostMessage??e.postMessage;let t=99,n=new Int8Array([t]);try{e.postMessage({array:n},[n.buffer])}catch{return ba._canTransferArrayBuffer=!1,ba._canTransferArrayBuffer}ba._canTransferArrayBuffer=new Promise(i=>{e.onmessage=function(o){let r=o.data.array,s=l(r)&&r[0]===t;i(s),e.terminate(),ba._canTransferArrayBuffer=s}})}return ba._canTransferArrayBuffer}var L9=new _e;function N9(e){let t;try{t=new Blob([e],{type:"application/javascript"})}catch{let o=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder,r=new o;r.append(e),t=r.getBlob("application/javascript")}return(window.URL||window.webkitURL).createObjectURL(t)}function O9(e){let t=new Fee.default(e),n=t.scheme().length!==0&&t.fragment().length===0,i=e.replace(/\.js$/,""),o={},r,s;if(aC(e))s=e;else if(!n){let a=fn(`${ba._workerModulePrefix}/${i}.js`);aC(a)&&(s=a)}if(s){let a=`import "${s}";`;return r=N9(a),o.type="module",new Worker(r,o)}if(!n&&typeof CESIUM_WORKERS<"u"){let a=` + importScripts("${N9(CESIUM_WORKERS)}"); + CesiumWorkers["${i}"](); + `;return r=N9(a),new Worker(r,o)}if(r=e,n||(r=fn(`${ba._workerModulePrefix+i}.js`)),!jt.supportsEsmWebWorkers())throw new ce("This browser is not supported. Please update your browser to continue.");return o.type="module",new Worker(r,o)}async function nPe(e,t){let n={modulePath:void 0,wasmBinaryFile:void 0,wasmBinary:void 0};if(!jt.supportsWebAssembly()){if(!l(t.fallbackModulePath))throw new ce(`This browser does not support Web Assembly, and no backup module was provided for ${e._workerPath}`);return n.modulePath=fn(t.fallbackModulePath),n}n.wasmBinaryFile=fn(t.wasmBinaryFile);let i=await we.fetchArrayBuffer({url:n.wasmBinaryFile});return n.wasmBinary=i,n}function ba(e,t){this._workerPath=e,this._maximumActiveTasks=t??Number.POSITIVE_INFINITY,this._activeTasks=0,this._nextID=0,this._webAssemblyPromise=void 0}var iPe=(e,t,n,i)=>{let o=({data:r})=>{if(r.id===t){if(l(r.error)){let s=r.error;s.name==="RuntimeError"?(s=new ce(r.error.message),s.stack=r.error.stack):s.name==="DeveloperError"?(s=new me(r.error.message),s.stack=r.error.stack):s.name==="Error"&&(s=new Error(r.error.message),s.stack=r.error.stack),L9.raiseEvent(s),i(s)}else L9.raiseEvent(),n(r.result);e.removeEventListener("message",o)}};return o},oPe=[];async function rPe(e,t,n){let i=await Promise.resolve(Qee());l(n)?i||(n.length=0):n=oPe;let o=e._nextID++,r=new Promise((s,a)=>{e._worker.addEventListener("message",iPe(e._worker,o,s,a))});return e._worker.postMessage({id:o,baseUrl:fn.getCesiumBaseUrl().url,parameters:t,canTransferArrayBuffer:i},n),r}async function sPe(e,t,n){++e._activeTasks;try{let i=await rPe(e,t,n);return--e._activeTasks,i}catch(i){throw--e._activeTasks,i}}ba.prototype.scheduleTask=function(e,t){if(l(this._worker)||(this._worker=O9(this._workerPath)),!(this._activeTasks>=this._maximumActiveTasks))return sPe(this,e,t)};ba.prototype.initWebAssemblyModule=async function(e){if(l(this._webAssemblyPromise))return this._webAssemblyPromise;let t=async()=>{let n=this._worker=O9(this._workerPath),i=await nPe(this,e),o=await Promise.resolve(Qee()),r,s=i.wasmBinary;l(s)&&o&&(r=[s]);let a=new Promise((c,u)=>{n.onmessage=function({data:f}){l(f)?c(f.result):u(new ce("Could not configure wasm module"))}});return n.postMessage({canTransferArrayBuffer:o,parameters:{webAssemblyConfig:i}},r),a};return this._webAssemblyPromise=t(),this._webAssemblyPromise};ba.prototype.isDestroyed=function(){return!1};ba.prototype.destroy=function(){return l(this._worker)&&this._worker.terminate(),ue(this)};ba.taskCompletedEvent=L9;ba._defaultWorkerModulePrefix="Workers/";ba._workerModulePrefix=ba._defaultWorkerModulePrefix;ba._canTransferArrayBuffer=void 0;var mi=ba;function LA(){}LA._transcodeTaskProcessor=new mi("transcodeKTX2",Number.POSITIVE_INFINITY);LA._readyPromise=void 0;function aPe(){let e=LA._transcodeTaskProcessor.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/basis_transcoder.wasm"}).then(function(t){if(t)return LA._transcodeTaskProcessor;throw new ce("KTX2 transcoder could not be initialized.")});LA._readyPromise=e}LA.transcode=function(e,t){return l(LA._readyPromise)||aPe(),LA._readyPromise.then(function(n){let i=e;e instanceof ArrayBuffer&&(i=new Uint8Array(e));let o={supportedTargetFormats:t,ktx2Buffer:i};return n.scheduleTask(o,[i.buffer])}).then(function(n){let i=n.length,o=Object.keys(n[0]);for(let r=0;r<i;r++){let s=n[r];for(let a=0;a<o.length;a++){let c=s[o[a]];s[o[a]]=new mM(c.internalFormat,c.datatype,c.width,c.height,c.levelBuffer)}}if(o.length===1){for(let r=0;r<i;++r)n[r]=n[r][o[0]];i===1&&(n=n[0])}return n}).catch(function(n){throw n})};var AM=LA;var kee;Uee.setKTX2SupportedFormats=function(e,t,n,i,o,r){kee={s3tc:e,pvrtc:t,astc:n,etc:i,etc1:o,bc7:r}};function Uee(e){let t;return e instanceof ArrayBuffer||ArrayBuffer.isView(e)?t=Promise.resolve(e):t=we.createIfNeeded(e).fetchArrayBuffer(),t.then(function(n){return AM.transcode(n,kee)})}var Iu=Uee;var mo={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT2:"MAT2",MAT3:"MAT3",MAT4:"MAT4"};mo.getMathType=function(e){switch(e){case mo.SCALAR:return Number;case mo.VEC2:return k;case mo.VEC3:return d;case mo.VEC4:return se;case mo.MAT2:return Wi;case mo.MAT3:return J;case mo.MAT4:return R}};mo.getNumberOfComponents=function(e){switch(e){case mo.SCALAR:return 1;case mo.VEC2:return 2;case mo.VEC3:return 3;case mo.VEC4:case mo.MAT2:return 4;case mo.MAT3:return 9;case mo.MAT4:return 16}};mo.getAttributeLocationCount=function(e){switch(e){case mo.SCALAR:case mo.VEC2:case mo.VEC3:case mo.VEC4:return 1;case mo.MAT2:return 2;case mo.MAT3:return 3;case mo.MAT4:return 4}};mo.getGlslType=function(e){switch(e){case mo.SCALAR:return"float";case mo.VEC2:return"vec2";case mo.VEC3:return"vec3";case mo.VEC4:return"vec4";case mo.MAT2:return"mat2";case mo.MAT3:return"mat3";case mo.MAT4:return"mat4"}};var Ht=Object.freeze(mo);var Gee=1/256,zee=256,Bo={};Bo.octEncodeInRange=function(e,t,n){if(n.x=e.x/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),n.y=e.y/(Math.abs(e.x)+Math.abs(e.y)+Math.abs(e.z)),e.z<0){let i=n.x,o=n.y;n.x=(1-Math.abs(o))*D.signNotZero(i),n.y=(1-Math.abs(i))*D.signNotZero(o)}return n.x=D.toSNorm(n.x,t),n.y=D.toSNorm(n.y,t),n};Bo.octEncode=function(e,t){return Bo.octEncodeInRange(e,255,t)};var JS=new k,Vee=new Uint8Array(1);function pM(e){return Vee[0]=e,Vee[0]}Bo.octEncodeToCartesian4=function(e,t){return Bo.octEncodeInRange(e,65535,JS),t.x=pM(JS.x*Gee),t.y=pM(JS.x),t.z=pM(JS.y*Gee),t.w=pM(JS.y),t};Bo.octDecodeInRange=function(e,t,n,i){if(i.x=D.fromSNorm(e,n),i.y=D.fromSNorm(t,n),i.z=1-(Math.abs(i.x)+Math.abs(i.y)),i.z<0){let o=i.x;i.x=(1-Math.abs(i.y))*D.signNotZero(o),i.y=(1-Math.abs(o))*D.signNotZero(i.y)}return d.normalize(i,i)};Bo.octDecode=function(e,t,n){return Bo.octDecodeInRange(e,t,255,n)};Bo.octDecodeFromCartesian4=function(e,t){let n=e.x,i=e.y,o=e.z,r=e.w,s=n*zee+i,a=o*zee+r;return Bo.octDecodeInRange(s,a,65535,t)};Bo.octPackFloat=function(e){return 256*e.x+e.y};var Q9=new k;Bo.octEncodeFloat=function(e){return Bo.octEncode(e,Q9),Bo.octPackFloat(Q9)};Bo.octDecodeFloat=function(e,t){let n=e/256,i=Math.floor(n),o=(n-i)*256;return Bo.octDecode(i,o,t)};Bo.octPack=function(e,t,n,i){let o=Bo.octEncodeFloat(e),r=Bo.octEncodeFloat(t),s=Bo.octEncode(n,Q9);return i.x=65536*s.x+o,i.y=65536*s.y+r,i};Bo.octUnpack=function(e,t,n,i){let o=e.x/65536,r=Math.floor(o),s=(o-r)*65536;o=e.y/65536;let a=Math.floor(o),c=(o-a)*65536;Bo.octDecodeFloat(s,t),Bo.octDecodeFloat(c,n),Bo.octDecode(r,a,i)};Bo.compressTextureCoordinates=function(e){let t=e.x*4095|0,n=e.y*4095|0;return 4096*t+n};Bo.decompressTextureCoordinates=function(e,t){let n=e/4096,i=Math.floor(n);return t.x=i/4095,t.y=(e-i*4096)/4095,t};function F9(e){return e>>1^-(e&1)}Bo.zigZagDeltaDecode=function(e,t,n){let i=e.length,o=0,r=0,s=0;for(let a=0;a<i;++a)o+=F9(e[a]),r+=F9(t[a]),e[a]=o,t[a]=r,l(n)&&(s+=F9(n[a]),n[a]=s)};Bo.dequantize=function(e,t,n,i){let o=Ht.getNumberOfComponents(n),r;switch(t){case q.BYTE:r=127;break;case q.UNSIGNED_BYTE:r=255;break;case q.SHORT:r=32767;break;case q.UNSIGNED_SHORT:r=65535;break;case q.INT:r=2147483647;break;case q.UNSIGNED_INT:r=4294967295;break}let s=new Float32Array(i*o);for(let a=0;a<i;a++)for(let c=0;c<o;c++){let u=a*o+c;s[u]=Math.max(e[u]/r,-1)}return s};Bo.decodeRGB565=function(e,t){let n=e.length;l(t)||(t=new Float32Array(n*3));let i=31,o=63,r=1/31,s=1/63;for(let a=0;a<n;a++){let c=e[a],u=c>>11,f=c>>5&o,h=c&i,A=3*a;t[A]=u*r,t[A+1]=f*s,t[A+2]=h*r}return t};var Fn=Bo;var Hee=new d,Wee=new d,jee=new d;function cPe(e,t,n,i,o){l(o)||(o=new d);let r,s,a,c,u,f,h,A;if(l(t.z)){if(d.equalsEpsilon(e,t,D.EPSILON14))return d.clone(d.UNIT_X,o);if(d.equalsEpsilon(e,n,D.EPSILON14))return d.clone(d.UNIT_Y,o);if(d.equalsEpsilon(e,i,D.EPSILON14))return d.clone(d.UNIT_Z,o);r=d.subtract(n,t,Hee),s=d.subtract(i,t,Wee),a=d.subtract(e,t,jee),c=d.dot(r,r),u=d.dot(r,s),f=d.dot(r,a),h=d.dot(s,s),A=d.dot(s,a)}else{if(k.equalsEpsilon(e,t,D.EPSILON14))return d.clone(d.UNIT_X,o);if(k.equalsEpsilon(e,n,D.EPSILON14))return d.clone(d.UNIT_Y,o);if(k.equalsEpsilon(e,i,D.EPSILON14))return d.clone(d.UNIT_Z,o);r=k.subtract(n,t,Hee),s=k.subtract(i,t,Wee),a=k.subtract(e,t,jee),c=k.dot(r,r),u=k.dot(r,s),f=k.dot(r,a),h=k.dot(s,s),A=k.dot(s,a)}o.y=h*f-u*A,o.z=c*A-u*f;let g=c*h-u*u;if(g!==0)return o.y/=g,o.z/=g,o.x=1-o.y-o.z,o}var uI=cPe;function em(){this.high=d.clone(d.ZERO),this.low=d.clone(d.ZERO)}em.encode=function(e,t){l(t)||(t={high:0,low:0});let n;return e>=0?(n=Math.floor(e/65536)*65536,t.high=n,t.low=e-n):(n=Math.floor(-e/65536)*65536,t.high=-n,t.low=e+n),t};var OA={high:0,low:0};em.fromCartesian=function(e,t){l(t)||(t=new em);let n=t.high,i=t.low;return em.encode(e.x,OA),n.x=OA.high,i.x=OA.low,em.encode(e.y,OA),n.y=OA.high,i.y=OA.low,em.encode(e.z,OA),n.z=OA.high,i.z=OA.low,t};var k9=new em;em.writeElements=function(e,t,n){em.fromCartesian(e,k9);let i=k9.high,o=k9.low;t[n]=i.x,t[n+1]=i.y,t[n+2]=i.z,t[n+3]=o.x,t[n+4]=o.y,t[n+5]=o.z};var ei=em;var na={UNSIGNED_BYTE:ee.UNSIGNED_BYTE,UNSIGNED_SHORT:ee.UNSIGNED_SHORT,UNSIGNED_INT:ee.UNSIGNED_INT};na.getSizeInBytes=function(e){switch(e){case na.UNSIGNED_BYTE:return Uint8Array.BYTES_PER_ELEMENT;case na.UNSIGNED_SHORT:return Uint16Array.BYTES_PER_ELEMENT;case na.UNSIGNED_INT:return Uint32Array.BYTES_PER_ELEMENT}};na.fromSizeInBytes=function(e){switch(e){case 2:return na.UNSIGNED_SHORT;case 4:return na.UNSIGNED_INT;case 1:return na.UNSIGNED_BYTE}};na.validate=function(e){return l(e)&&(e===na.UNSIGNED_BYTE||e===na.UNSIGNED_SHORT||e===na.UNSIGNED_INT)};na.createTypedArray=function(e,t){return e>=D.SIXTY_FOUR_KILOBYTES?new Uint32Array(t):new Uint16Array(t)};na.createTypedArrayFromArrayBuffer=function(e,t,n,i){return e>=D.SIXTY_FOUR_KILOBYTES?new Uint32Array(t,n,i):new Uint16Array(t,n,i)};na.fromTypedArray=function(e){if(e instanceof Uint8Array)return na.UNSIGNED_BYTE;if(e instanceof Uint16Array)return na.UNSIGNED_SHORT;if(e instanceof Uint32Array)return na.UNSIGNED_INT};var Fe=Object.freeze(na);var U9={};U9.computeDiscriminant=function(e,t,n){return t*t-4*e*n};function Yee(e,t,n){let i=e+t;return D.sign(e)!==D.sign(t)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(t)))<n?0:i}U9.computeRealRoots=function(e,t,n){let i;if(e===0)return t===0?[]:[-n/t];if(t===0){if(n===0)return[0,0];let c=Math.abs(n),u=Math.abs(e);if(c<u&&c/u<D.EPSILON14)return[0,0];if(c>u&&u/c<D.EPSILON14)return[];if(i=-n/e,i<0)return[];let f=Math.sqrt(i);return[-f,f]}else if(n===0)return i=-t/e,i<0?[i,0]:[0,i];let o=t*t,r=4*e*n,s=Yee(o,-r,D.EPSILON14);if(s<0)return[];let a=-.5*Yee(t,D.sign(t)*Math.sqrt(s),D.EPSILON14);return t>0?[a/e,n/a]:[n/a,a/e]};var Rl=U9;var z9={};z9.computeDiscriminant=function(e,t,n,i){let o=e*e,r=t*t,s=n*n,a=i*i;return 18*e*t*n*i+r*s-27*o*a-4*(e*s*n+r*t*i)};function G9(e,t,n,i){let o=e,r=t/3,s=n/3,a=i,c=o*s,u=r*a,f=r*r,h=s*s,A=o*s-f,g=o*a-r*s,m=r*a-h,_=4*A*m-g*g,y,C;if(_<0){let H,W,Z;f*u>=c*h?(H=o,W=A,Z=-2*r*A+o*g):(H=a,W=m,Z=-a*g+2*s*m);let $=-(Z<0?-1:1)*Math.abs(H)*Math.sqrt(-_);C=-Z+$;let X=C/2,he=X<0?-Math.pow(-X,1/3):Math.pow(X,1/3),ge=C===$?-he:-W/he;return y=W<=0?he+ge:-Z/(he*he+ge*ge+W),f*u>=c*h?[(y-r)/o]:[-a/(y+s)]}let E=A,I=-2*r*A+o*g,b=m,S=-a*g+2*s*m,B=Math.sqrt(_),v=Math.sqrt(3)/2,P=Math.abs(Math.atan2(o*B,-I)/3);y=2*Math.sqrt(-E);let N=Math.cos(P);C=y*N;let L=y*(-N/2-v*Math.sin(P)),p=C+L>2*r?C-r:L-r,x=o,T=p/x;P=Math.abs(Math.atan2(a*B,-S)/3),y=2*Math.sqrt(-b),N=Math.cos(P),C=y*N,L=y*(-N/2-v*Math.sin(P));let w=-a,M=C+L<2*s?C+s:L+s,O=w/M,U=x*M,Q=-p*M-x*w,z=p*w,F=(s*Q-r*z)/(-r*Q+s*U);return T<=F?T<=O?F<=O?[T,F,O]:[T,O,F]:[O,T,F]:T<=O?[F,T,O]:F<=O?[F,O,T]:[O,F,T]}z9.computeRealRoots=function(e,t,n,i){let o,r;if(e===0)return Rl.computeRealRoots(t,n,i);if(t===0){if(n===0){if(i===0)return[0,0,0];r=-i/e;let s=r<0?-Math.pow(-r,1/3):Math.pow(r,1/3);return[s,s,s]}else if(i===0)return o=Rl.computeRealRoots(e,0,n),o.Length===0?[0]:[o[0],0,o[1]];return G9(e,0,n,i)}else{if(n===0)return i===0?(r=-t/e,r<0?[r,0,0]:[0,0,r]):G9(e,t,0,i);if(i===0)return o=Rl.computeRealRoots(e,t,n),o.length===0?[0]:o[1]<=0?[o[0],o[1],0]:o[0]>=0?[0,o[0],o[1]]:[o[0],0,o[1]]}return G9(e,t,n,i)};var fI=z9;var V9={};V9.computeDiscriminant=function(e,t,n,i,o){let r=e*e,s=r*e,a=t*t,c=a*t,u=n*n,f=u*n,h=i*i,A=h*i,g=o*o,m=g*o;return a*u*h-4*c*A-4*e*f*h+18*e*t*n*A-27*r*h*h+256*s*m+o*(18*c*n*i-4*a*f+16*e*u*u-80*e*t*u*i-6*e*a*h+144*r*n*h)+g*(144*e*a*n-27*a*a-128*r*u-192*r*t*i)};function Od(e,t,n,i){let o=e*e,r=t-3*o/8,s=n-t*e/2+o*e/8,a=i-n*e/4+t*o/16-3*o*o/256,c=fI.computeRealRoots(1,2*r,r*r-4*a,-s*s);if(c.length>0){let u=-e/4,f=c[c.length-1];if(Math.abs(f)<D.EPSILON14){let h=Rl.computeRealRoots(1,r,a);if(h.length===2){let A=h[0],g=h[1],m;if(A>=0&&g>=0){let _=Math.sqrt(A),y=Math.sqrt(g);return[u-y,u-_,u+_,u+y]}else{if(A>=0&&g<0)return m=Math.sqrt(A),[u-m,u+m];if(A<0&&g>=0)return m=Math.sqrt(g),[u-m,u+m]}}return[]}else if(f>0){let h=Math.sqrt(f),A=(r+f-s/h)/2,g=(r+f+s/h)/2,m=Rl.computeRealRoots(1,h,A),_=Rl.computeRealRoots(1,-h,g);return m.length!==0?(m[0]+=u,m[1]+=u,_.length!==0?(_[0]+=u,_[1]+=u,m[1]<=_[0]?[m[0],m[1],_[0],_[1]]:_[1]<=m[0]?[_[0],_[1],m[0],m[1]]:m[0]>=_[0]&&m[1]<=_[1]?[_[0],m[0],m[1],_[1]]:_[0]>=m[0]&&_[1]<=m[1]?[m[0],_[0],_[1],m[1]]:m[0]>_[0]&&m[0]<_[1]?[_[0],m[0],_[1],m[1]]:[m[0],_[0],m[1],_[1]]):m):_.length!==0?(_[0]+=u,_[1]+=u,_):[]}}return[]}function ZS(e,t,n,i){let o=n*n,r=t*t,s=e*e,a=-2*t,c=n*e+r-4*i,u=s*i-n*t*e+o,f=fI.computeRealRoots(1,a,c,u);if(f.length>0){let h=f[0],A=t-h,g=A*A,m=e/2,_=A/2,y=g-4*i,C=g+4*Math.abs(i),E=s-4*h,I=s+4*Math.abs(h),b,S;if(h<0||y*I<E*C){let x=Math.sqrt(E);b=x/2,S=x===0?0:(e*_-n)/x}else{let x=Math.sqrt(y);b=x===0?0:(e*_-n)/x,S=x/2}let B,v;m===0&&b===0?(B=0,v=0):D.sign(m)===D.sign(b)?(B=m+b,v=h/B):(v=m-b,B=h/v);let P,N;_===0&&S===0?(P=0,N=0):D.sign(_)===D.sign(S)?(P=_+S,N=i/P):(N=_-S,P=i/N);let L=Rl.computeRealRoots(1,B,P),p=Rl.computeRealRoots(1,v,N);if(L.length!==0)return p.length!==0?L[1]<=p[0]?[L[0],L[1],p[0],p[1]]:p[1]<=L[0]?[p[0],p[1],L[0],L[1]]:L[0]>=p[0]&&L[1]<=p[1]?[p[0],L[0],L[1],p[1]]:p[0]>=L[0]&&p[1]<=L[1]?[L[0],p[0],p[1],L[1]]:L[0]>p[0]&&L[0]<p[1]?[p[0],L[0],p[1],L[1]]:[L[0],p[0],L[1],p[1]]:L;if(p.length!==0)return p}return[]}V9.computeRealRoots=function(e,t,n,i,o){if(Math.abs(e)<D.EPSILON15)return fI.computeRealRoots(t,n,i,o);let r=t/e,s=n/e,a=i/e,c=o/e,u=r<0?1:0;switch(u+=s<0?u+1:u,u+=a<0?u+1:u,u+=c<0?u+1:u,u){case 0:return Od(r,s,a,c);case 1:return ZS(r,s,a,c);case 2:return ZS(r,s,a,c);case 3:return Od(r,s,a,c);case 4:return Od(r,s,a,c);case 5:return ZS(r,s,a,c);case 6:return Od(r,s,a,c);case 7:return Od(r,s,a,c);case 8:return ZS(r,s,a,c);case 9:return Od(r,s,a,c);case 10:return Od(r,s,a,c);case 11:return ZS(r,s,a,c);case 12:return Od(r,s,a,c);case 13:return Od(r,s,a,c);case 14:return Od(r,s,a,c);case 15:return Od(r,s,a,c);default:return}};var gM=V9;function _M(e,t){t=d.clone(t??d.ZERO),d.equals(t,d.ZERO)||d.normalize(t,t),this.origin=d.clone(e??d.ZERO),this.direction=t}_M.clone=function(e,t){if(l(e))return l(t)?(t.origin=d.clone(e.origin),t.direction=d.clone(e.direction),t):new _M(e.origin,e.direction)};_M.getPoint=function(e,t,n){return l(n)||(n=new d),n=d.multiplyByScalar(e.direction,t,n),d.add(e.origin,n,n)};var In=_M;var Ko={};Ko.rayPlane=function(e,t,n){l(n)||(n=new d);let i=e.origin,o=e.direction,r=t.normal,s=d.dot(r,o);if(Math.abs(s)<D.EPSILON15)return;let a=(-t.distance-d.dot(r,i))/s;if(!(a<0))return n=d.multiplyByScalar(o,a,n),d.add(i,n,n)};var lPe=new d,uPe=new d,tte=new d,qee=new d,Kee=new d;Ko.rayTriangleParametric=function(e,t,n,i,o){o=o??!1;let r=e.origin,s=e.direction,a=d.subtract(n,t,lPe),c=d.subtract(i,t,uPe),u=d.cross(s,c,tte),f=d.dot(a,u),h,A,g,m,_;if(o){if(f<D.EPSILON6||(h=d.subtract(r,t,qee),g=d.dot(h,u),g<0||g>f)||(A=d.cross(h,a,Kee),m=d.dot(s,A),m<0||g+m>f))return;_=d.dot(c,A)/f}else{if(Math.abs(f)<D.EPSILON6)return;let y=1/f;if(h=d.subtract(r,t,qee),g=d.dot(h,u)*y,g<0||g>1||(A=d.cross(h,a,Kee),m=d.dot(s,A)*y,m<0||g+m>1))return;_=d.dot(c,A)*y}return _};Ko.rayTriangle=function(e,t,n,i,o,r){let s=Ko.rayTriangleParametric(e,t,n,i,o);if(!(!l(s)||s<0))return l(r)||(r=new d),d.multiplyByScalar(e.direction,s,r),d.add(e.origin,r,r)};var fPe=new In;Ko.lineSegmentTriangle=function(e,t,n,i,o,r,s){let a=fPe;d.clone(e,a.origin),d.subtract(t,e,a.direction),d.normalize(a.direction,a.direction);let c=Ko.rayTriangleParametric(a,n,i,o,r);if(!(!l(c)||c<0||c>d.distance(e,t)))return l(s)||(s=new d),d.multiplyByScalar(a.direction,c,s),d.add(a.origin,s,s)};function dPe(e,t,n,i){let o=t*t-4*e*n;if(o<0)return;if(o>0){let s=1/(2*e),a=Math.sqrt(o),c=(-t+a)*s,u=(-t-a)*s;return c<u?(i.root0=c,i.root1=u):(i.root0=u,i.root1=c),i}let r=-t/(2*e);if(r!==0)return i.root0=i.root1=r,i}var hPe={root0:0,root1:0};function nte(e,t,n){l(n)||(n=new _c);let i=e.origin,o=e.direction,r=t.center,s=t.radius*t.radius,a=d.subtract(i,r,tte),c=d.dot(o,o),u=2*d.dot(o,a),f=d.magnitudeSquared(a)-s,h=dPe(c,u,f,hPe);if(l(h))return n.start=h.root0,n.stop=h.root1,n}Ko.raySphere=function(e,t,n){if(n=nte(e,t,n),!(!l(n)||n.stop<0))return n.start=Math.max(n.start,0),n};var mPe=new In;Ko.lineSegmentSphere=function(e,t,n,i){let o=mPe;d.clone(e,o.origin);let r=d.subtract(t,e,o.direction),s=d.magnitude(r);if(d.normalize(r,r),i=nte(o,n,i),!(!l(i)||i.stop<0||i.start>s))return i.start=Math.max(i.start,0),i.stop=Math.min(i.stop,s),i};var APe=new d,pPe=new d;Ko.rayEllipsoid=function(e,t){let n=t.oneOverRadii,i=d.multiplyComponents(n,e.origin,APe),o=d.multiplyComponents(n,e.direction,pPe),r=d.magnitudeSquared(i),s=d.dot(i,o),a,c,u,f,h;if(r>1){if(s>=0)return;let A=s*s;if(a=r-1,c=d.magnitudeSquared(o),u=c*a,A<u)return;if(A>u){f=s*s-u,h=-s+Math.sqrt(f);let m=h/c,_=a/h;return m<_?new _c(m,_):{start:_,stop:m}}let g=Math.sqrt(a/c);return new _c(g,g)}else if(r<1)return a=r-1,c=d.magnitudeSquared(o),u=c*a,f=s*s-u,h=-s+Math.sqrt(f),new _c(0,h/c);if(s<0)return c=d.magnitudeSquared(o),new _c(0,-s/c)};function mC(e,t,n){let i=e+t;return D.sign(e)!==D.sign(t)&&Math.abs(i/Math.max(Math.abs(e),Math.abs(t)))<n?0:i}Ko.quadraticVectorExpression=function(e,t,n,i,o){let r=i*i,s=o*o,a=(e[J.COLUMN1ROW1]-e[J.COLUMN2ROW2])*s,c=o*(i*mC(e[J.COLUMN1ROW0],e[J.COLUMN0ROW1],D.EPSILON15)+t.y),u=e[J.COLUMN0ROW0]*r+e[J.COLUMN2ROW2]*s+i*t.x+n,f=s*mC(e[J.COLUMN2ROW1],e[J.COLUMN1ROW2],D.EPSILON15),h=o*(i*mC(e[J.COLUMN2ROW0],e[J.COLUMN0ROW2])+t.z),A,g=[];if(h===0&&f===0){if(A=Rl.computeRealRoots(a,c,u),A.length===0)return g;let P=A[0],N=Math.sqrt(Math.max(1-P*P,0));if(g.push(new d(i,o*P,o*-N)),g.push(new d(i,o*P,o*N)),A.length===2){let L=A[1],p=Math.sqrt(Math.max(1-L*L,0));g.push(new d(i,o*L,o*-p)),g.push(new d(i,o*L,o*p))}return g}let m=h*h,_=f*f,y=a*a,C=h*f,E=y+_,I=2*(c*a+C),b=2*u*a+c*c-_+m,S=2*(u*c-C),B=u*u-m;if(E===0&&I===0&&b===0&&S===0)return g;A=gM.computeRealRoots(E,I,b,S,B);let v=A.length;if(v===0)return g;for(let P=0;P<v;++P){let N=A[P],L=N*N,p=Math.max(1-L,0),x=Math.sqrt(p),T;D.sign(a)===D.sign(u)?T=mC(a*L+u,c*N,D.EPSILON12):D.sign(u)===D.sign(c*N)?T=mC(a*L,c*N+u,D.EPSILON12):T=mC(a*L+c*N,u,D.EPSILON12);let w=mC(f*N,h,D.EPSILON15),M=T*w;M<0?g.push(new d(i,o*N,o*x)):M>0?g.push(new d(i,o*N,o*-x)):x!==0?(g.push(new d(i,o*N,o*-x)),g.push(new d(i,o*N,o*x)),++P):g.push(new d(i,o*N,o*x))}return g};var H9=new d,Xee=new d,Jee=new d,yM=new d,gPe=new d,_Pe=new J,yPe=new J,CPe=new J,EPe=new J,IPe=new J,Zee=new J,$ee=new J,ete=new d,xPe=new d,bPe=new Ae;Ko.grazingAltitudeLocation=function(e,t){let n=e.origin,i=e.direction;if(!d.equals(n,d.ZERO)){let B=t.geodeticSurfaceNormal(n,H9);if(d.dot(i,B)>=0)return n}let o=l(this.rayEllipsoid(e,t)),r=t.transformPositionToScaledSpace(i,H9),s=d.normalize(r,r),a=d.mostOrthogonalAxis(r,yM),c=d.normalize(d.cross(a,s,Xee),Xee),u=d.normalize(d.cross(s,c,Jee),Jee),f=_Pe;f[0]=s.x,f[1]=s.y,f[2]=s.z,f[3]=c.x,f[4]=c.y,f[5]=c.z,f[6]=u.x,f[7]=u.y,f[8]=u.z;let h=J.transpose(f,yPe),A=J.fromScale(t.radii,CPe),g=J.fromScale(t.oneOverRadii,EPe),m=IPe;m[0]=0,m[1]=-i.z,m[2]=i.y,m[3]=i.z,m[4]=0,m[5]=-i.x,m[6]=-i.y,m[7]=i.x,m[8]=0;let _=J.multiply(J.multiply(h,g,Zee),m,Zee),y=J.multiply(J.multiply(_,A,$ee),f,$ee),C=J.multiplyByVector(_,n,gPe),E=Ko.quadraticVectorExpression(y,d.negate(C,H9),0,0,1),I,b,S=E.length;if(S>0){let B=d.clone(d.ZERO,xPe),v=Number.NEGATIVE_INFINITY;for(let N=0;N<S;++N){I=J.multiplyByVector(A,J.multiplyByVector(f,E[N],ete),ete);let L=d.normalize(d.subtract(I,n,yM),yM),p=d.dot(L,i);p>v&&(v=p,B=d.clone(I,B))}let P=t.cartesianToCartographic(B,bPe);return v=D.clamp(v,0,1),b=d.magnitude(d.subtract(B,n,yM))*Math.sqrt(1-v*v),b=o?-b:b,P.height=b,t.cartographicToCartesian(P,new d)}};var TPe=new d;Ko.lineSegmentPlane=function(e,t,n,i){l(i)||(i=new d);let o=d.subtract(t,e,TPe),r=n.normal,s=d.dot(r,o);if(Math.abs(s)<D.EPSILON6)return;let a=d.dot(r,e),c=-(n.distance+a)/s;if(!(c<0||c>1))return d.multiplyByScalar(o,c,i),d.add(e,i,i),i};Ko.trianglePlaneIntersection=function(e,t,n,i){let o=i.normal,r=i.distance,s=d.dot(o,e)+r<0,a=d.dot(o,t)+r<0,c=d.dot(o,n)+r<0,u=0;u+=s?1:0,u+=a?1:0,u+=c?1:0;let f,h;if((u===1||u===2)&&(f=new d,h=new d),u===1){if(s)return Ko.lineSegmentPlane(e,t,i,f),Ko.lineSegmentPlane(e,n,i,h),{positions:[e,t,n,f,h],indices:[0,3,4,1,2,4,1,4,3]};if(a)return Ko.lineSegmentPlane(t,n,i,f),Ko.lineSegmentPlane(t,e,i,h),{positions:[e,t,n,f,h],indices:[1,3,4,2,0,4,2,4,3]};if(c)return Ko.lineSegmentPlane(n,e,i,f),Ko.lineSegmentPlane(n,t,i,h),{positions:[e,t,n,f,h],indices:[2,3,4,0,1,4,0,4,3]}}else if(u===2)if(s)if(a){if(!c)return Ko.lineSegmentPlane(e,n,i,f),Ko.lineSegmentPlane(t,n,i,h),{positions:[e,t,n,f,h],indices:[0,1,4,0,4,3,2,3,4]}}else return Ko.lineSegmentPlane(n,t,i,f),Ko.lineSegmentPlane(e,t,i,h),{positions:[e,t,n,f,h],indices:[2,0,4,2,4,3,1,3,4]};else return Ko.lineSegmentPlane(t,e,i,f),Ko.lineSegmentPlane(n,e,i,h),{positions:[e,t,n,f,h],indices:[1,2,4,1,4,3,0,3,4]}};var Ai=Ko;function ia(e,t){this.normal=d.clone(e),this.distance=t}ia.fromPointNormal=function(e,t,n){let i=-d.dot(t,e);return l(n)?(d.clone(t,n.normal),n.distance=i,n):new ia(t,i)};var SPe=new d;ia.fromCartesian4=function(e,t){let n=d.fromCartesian4(e,SPe),i=e.w;return l(t)?(d.clone(n,t.normal),t.distance=i,t):new ia(n,i)};ia.getPointDistance=function(e,t){return d.dot(e.normal,t)+e.distance};var wPe=new d;ia.projectPointOntoPlane=function(e,t,n){l(n)||(n=new d);let i=ia.getPointDistance(e,t),o=d.multiplyByScalar(e.normal,i,wPe);return d.subtract(t,o,n)};var BPe=new R,DPe=new se,vPe=new d;ia.transform=function(e,t,n){let i=e.normal,o=e.distance,r=R.inverseTranspose(t,BPe),s=se.fromElements(i.x,i.y,i.z,o,DPe);s=R.multiplyByVector(r,s,s);let a=d.fromCartesian4(s,vPe);return s=se.divideByScalar(s,d.magnitude(a),s),ia.fromCartesian4(s,n)};ia.clone=function(e,t){return l(t)?(d.clone(e.normal,t.normal),t.distance=e.distance,t):new ia(e.normal,e.distance)};ia.equals=function(e,t){return e.distance===t.distance&&d.equals(e.normal,t.normal)};ia.ORIGIN_XY_PLANE=Object.freeze(new ia(d.UNIT_Z,0));ia.ORIGIN_YZ_PLANE=Object.freeze(new ia(d.UNIT_X,0));ia.ORIGIN_ZX_PLANE=Object.freeze(new ia(d.UNIT_Y,0));var mn=ia;var W9={};W9.calculateACMR=function(e){e=e??V.EMPTY_OBJECT;let t=e.indices,n=e.maximumIndex,i=e.cacheSize??24,o=t.length;if(!l(n)){n=0;let a=0,c=t[a];for(;a<o;)c>n&&(n=c),++a,c=t[a]}let r=[];for(let a=0;a<n+1;a++)r[a]=0;let s=i+1;for(let a=0;a<o;++a)s-r[t[a]]>i&&(r[t[a]]=s,++s);return(s-i+1)/(o/3)};W9.tipsify=function(e){e=e??V.EMPTY_OBJECT;let t=e.indices,n=e.maximumIndex,i=e.cacheSize??24,o;function r(p,x,T,w){for(;x.length>=1;){let M=x[x.length-1];if(x.splice(x.length-1,1),p[M].numLiveTriangles>0)return M}for(;o<w;){if(p[o].numLiveTriangles>0)return++o,o-1;++o}return-1}function s(p,x,T,w,M,O,U){let Q=-1,z,F=-1,H=0;for(;H<T.length;){let W=T[H];w[W].numLiveTriangles&&(z=0,M-w[W].timeStamp+2*w[W].numLiveTriangles<=x&&(z=M-w[W].timeStamp),(z>F||F===-1)&&(F=z,Q=W)),++H}return Q===-1?r(w,O,p,U):Q}let a=t.length,c=0,u=0,f=t[u],h=a;if(l(n))c=n+1;else{for(;u<h;)f>c&&(c=f),++u,f=t[u];if(c===-1)return 0;++c}let A=[],g;for(g=0;g<c;g++)A[g]={numLiveTriangles:0,timeStamp:0,vertexTriangles:[]};u=0;let m=0;for(;u<h;)A[t[u]].vertexTriangles.push(m),++A[t[u]].numLiveTriangles,A[t[u+1]].vertexTriangles.push(m),++A[t[u+1]].numLiveTriangles,A[t[u+2]].vertexTriangles.push(m),++A[t[u+2]].numLiveTriangles,++m,u+=3;let _=0,y=i+1;o=1;let C=[],E=[],I,b,S=0,B=[],v=a/3,P=[];for(g=0;g<v;g++)P[g]=!1;let N,L;for(;_!==-1;){C=[],b=A[_],L=b.vertexTriangles.length;for(let p=0;p<L;++p)if(m=b.vertexTriangles[p],!P[m]){P[m]=!0,u=m+m+m;for(let x=0;x<3;++x)N=t[u],C.push(N),E.push(N),B[S]=N,++S,I=A[N],--I.numLiveTriangles,y-I.timeStamp>i&&(I.timeStamp=y,++y),++u}_=s(t,i,C,A,y,E,c)}return B};var CM=W9;var Kc={};function wM(e,t,n,i,o){e[t++]=n,e[t++]=i,e[t++]=i,e[t++]=o,e[t++]=o,e[t]=n}function PPe(e){let t=e.length,n=t/3*6,i=Fe.createTypedArray(t,n),o=0;for(let r=0;r<t;r+=3,o+=6)wM(i,o,e[r],e[r+1],e[r+2]);return i}function RPe(e){let t=e.length;if(t>=3){let n=(t-2)*6,i=Fe.createTypedArray(t,n);wM(i,0,e[0],e[1],e[2]);let o=6;for(let r=3;r<t;++r,o+=6)wM(i,o,e[r-1],e[r],e[r-2]);return i}return new Uint16Array}function MPe(e){if(e.length>0){let t=e.length-1,n=(t-1)*6,i=Fe.createTypedArray(t,n),o=e[0],r=0;for(let s=1;s<t;++s,r+=6)wM(i,r,o,e[s],e[s+1]);return i}return new Uint16Array}Kc.toWireframe=function(e){let t=e.indices;if(l(t)){switch(e.primitiveType){case Me.TRIANGLES:e.indices=PPe(t);break;case Me.TRIANGLE_STRIP:e.indices=RPe(t);break;case Me.TRIANGLE_FAN:e.indices=MPe(t);break}e.primitiveType=Me.LINES}return e};Kc.createLineSegmentsForVectors=function(e,t,n){t=t??"normal",n=n??1e4;let i=e.attributes.position.values,o=e.attributes[t].values,r=i.length,s=new Float64Array(2*r),a=0;for(let f=0;f<r;f+=3)s[a++]=i[f],s[a++]=i[f+1],s[a++]=i[f+2],s[a++]=i[f]+o[f]*n,s[a++]=i[f+1]+o[f+1]*n,s[a++]=i[f+2]+o[f+2]*n;let c,u=e.boundingSphere;return l(u)&&(c=new le(u.center,u.radius+n)),new ht({attributes:{position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s})},primitiveType:Me.LINES,boundingSphere:c})};Kc.createAttributeLocations=function(e){let t=["position","positionHigh","positionLow","position3DHigh","position3DLow","position2DHigh","position2DLow","pickColor","normal","st","tangent","bitangent","extrudeDirection","compressedAttributes"],n=e.attributes,i={},o=0,r,s=t.length;for(r=0;r<s;++r){let a=t[r];l(n[a])&&(i[a]=o++)}for(let a in n)n.hasOwnProperty(a)&&!l(i[a])&&(i[a]=o++);return i};Kc.reorderForPreVertexCache=function(e){let t=ht.computeNumberOfVertices(e),n=e.indices;if(l(n)){let i=new Int32Array(t);for(let A=0;A<t;A++)i[A]=-1;let o=n,r=o.length,s=Fe.createTypedArray(t,r),a=0,c=0,u=0,f;for(;a<r;)f=i[o[a]],f!==-1?s[c]=f:(f=o[a],i[f]=u,s[c]=u,++u),++a,++c;e.indices=s;let h=e.attributes;for(let A in h)if(h.hasOwnProperty(A)&&l(h[A])&&l(h[A].values)){let g=h[A],m=g.values,_=0,y=g.componentsPerAttribute,C=q.createTypedArray(g.componentDatatype,u*y);for(;_<t;){let E=i[_];if(E!==-1)for(let I=0;I<y;I++)C[y*E+I]=m[y*_+I];++_}g.values=C}}return e};Kc.reorderForPostVertexCache=function(e,t){let n=e.indices;if(e.primitiveType===Me.TRIANGLES&&l(n)){let i=n.length,o=0;for(let r=0;r<i;r++)n[r]>o&&(o=n[r]);e.indices=CM.tipsify({indices:n,maximumIndex:o,cacheSize:t})}return e};function ite(e){let t={};for(let n in e)if(e.hasOwnProperty(n)&&l(e[n])&&l(e[n].values)){let i=e[n];t[n]=new De({componentDatatype:i.componentDatatype,componentsPerAttribute:i.componentsPerAttribute,normalize:i.normalize,values:[]})}return t}function NPe(e,t,n){for(let i in t)if(t.hasOwnProperty(i)&&l(t[i])&&l(t[i].values)){let o=t[i];for(let r=0;r<o.componentsPerAttribute;++r)e[i].values.push(o.values[n*o.componentsPerAttribute+r])}}Kc.fitToUnsignedShortIndices=function(e){let t=[],n=ht.computeNumberOfVertices(e);if(l(e.indices)&&n>=D.SIXTY_FOUR_KILOBYTES){let i=[],o=[],r=0,s=ite(e.attributes),a=e.indices,c=a.length,u;e.primitiveType===Me.TRIANGLES?u=3:e.primitiveType===Me.LINES?u=2:e.primitiveType===Me.POINTS&&(u=1);for(let f=0;f<c;f+=u){for(let h=0;h<u;++h){let A=a[f+h],g=i[A];l(g)||(g=r++,i[A]=g,NPe(s,e.attributes,A)),o.push(g)}r+u>=D.SIXTY_FOUR_KILOBYTES&&(t.push(new ht({attributes:s,indices:o,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV})),i=[],o=[],r=0,s=ite(e.attributes))}o.length!==0&&t.push(new ht({attributes:s,indices:o,primitiveType:e.primitiveType,boundingSphere:e.boundingSphere,boundingSphereCV:e.boundingSphereCV}))}else t.push(e);return t};var ote=new d,LPe=new Ae;Kc.projectTo2D=function(e,t,n,i,o){let r=e.attributes[t];o=l(o)?o:new Hi;let s=o.ellipsoid,a=r.values,c=new Float64Array(a.length),u=0;for(let f=0;f<a.length;f+=3){let h=d.fromArray(a,f,ote),A=s.cartesianToCartographic(h,LPe),g=o.project(A,ote);c[u++]=g.x,c[u++]=g.y,c[u++]=g.z}return e.attributes[n]=r,e.attributes[i]=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:c}),delete e.attributes[t],e};var j9={high:0,low:0};Kc.encodeAttribute=function(e,t,n,i){let o=e.attributes[t],r=o.values,s=r.length,a=new Float32Array(s),c=new Float32Array(s);for(let f=0;f<s;++f)ei.encode(r[f],j9),a[f]=j9.high,c[f]=j9.low;let u=o.componentsPerAttribute;return e.attributes[n]=new De({componentDatatype:q.FLOAT,componentsPerAttribute:u,values:a}),e.attributes[i]=new De({componentDatatype:q.FLOAT,componentsPerAttribute:u,values:c}),delete e.attributes[t],e};var Qd=new d;function Y9(e,t){if(l(t)){let n=t.values,i=n.length;for(let o=0;o<i;o+=3)d.unpack(n,o,Qd),R.multiplyByPoint(e,Qd,Qd),d.pack(Qd,n,o)}}function q9(e,t){if(l(t)){let n=t.values,i=n.length;for(let o=0;o<i;o+=3)d.unpack(n,o,Qd),J.multiplyByVector(e,Qd,Qd),Qd=d.normalize(Qd,Qd),d.pack(Qd,n,o)}}var EM=new R,IM=new J;Kc.transformToWorldCoordinates=function(e){let t=e.modelMatrix;if(R.equals(t,R.IDENTITY))return e;let n=e.geometry.attributes;Y9(t,n.position),Y9(t,n.prevPosition),Y9(t,n.nextPosition),(l(n.normal)||l(n.tangent)||l(n.bitangent))&&(R.inverse(t,EM),R.transpose(EM,EM),R.getMatrix3(EM,IM),q9(IM,n.normal),q9(IM,n.tangent),q9(IM,n.bitangent));let i=e.geometry.boundingSphere;return l(i)&&(e.geometry.boundingSphere=le.transform(i,t,i)),e.modelMatrix=R.clone(R.IDENTITY),e};function OPe(e,t){let n=e.length,i={},o=e[0][t].attributes,r;for(r in o)if(o.hasOwnProperty(r)&&l(o[r])&&l(o[r].values)){let s=o[r],a=s.values.length,c=!0;for(let u=1;u<n;++u){let f=e[u][t].attributes[r];if(!l(f)||s.componentDatatype!==f.componentDatatype||s.componentsPerAttribute!==f.componentsPerAttribute||s.normalize!==f.normalize){c=!1;break}a+=f.values.length}c&&(i[r]=new De({componentDatatype:s.componentDatatype,componentsPerAttribute:s.componentsPerAttribute,normalize:s.normalize,values:q.createTypedArray(s.componentDatatype,a)}))}return i}var FPe=new d;function K9(e,t){let n=e.length,i,o,r,s,a=e[0].modelMatrix,c=l(e[0][t].indices),u=e[0][t].primitiveType,f=OPe(e,t),h,A,g;for(i in f)if(f.hasOwnProperty(i))for(h=f[i].values,s=0,o=0;o<n;++o)for(A=e[o][t].attributes[i].values,g=A.length,r=0;r<g;++r)h[s++]=A[r];let m;if(c){let E=0;for(o=0;o<n;++o)E+=e[o][t].indices.length;let I=ht.computeNumberOfVertices(new ht({attributes:f,primitiveType:Me.POINTS})),b=Fe.createTypedArray(I,E),S=0,B=0;for(o=0;o<n;++o){let v=e[o][t].indices,P=v.length;for(s=0;s<P;++s)b[S++]=B+v[s];B+=ht.computeNumberOfVertices(e[o][t])}m=b}let _=new d,y=0,C;for(o=0;o<n;++o){if(C=e[o][t].boundingSphere,!l(C)){_=void 0;break}d.add(C.center,_,_)}if(l(_))for(d.divideByScalar(_,n,_),o=0;o<n;++o){C=e[o][t].boundingSphere;let E=d.magnitude(d.subtract(C.center,_,FPe))+C.radius;E>y&&(y=E)}return new ht({attributes:f,indices:m,primitiveType:u,boundingSphere:l(_)?new le(_,y):void 0})}Kc.combineInstances=function(e){let t=[],n=[],i=e.length;for(let r=0;r<i;++r){let s=e[r];l(s.geometry)?t.push(s):l(s.westHemisphereGeometry)&&l(s.eastHemisphereGeometry)&&n.push(s)}let o=[];return t.length>0&&o.push(K9(t,"geometry")),n.length>0&&(o.push(K9(n,"westHemisphereGeometry")),o.push(K9(n,"eastHemisphereGeometry"))),o};var yf=new d,$S=new d,dI=new d,hI=new d;Kc.computeNormal=function(e){let t=e.indices,n=e.attributes,i=n.position.values,o=n.position.values.length/3,r=t.length,s=new Array(o),a=new Array(r/3),c=new Array(r),u;for(u=0;u<o;u++)s[u]={indexOffset:0,count:0,currentCount:0};let f=0;for(u=0;u<r;u+=3){let m=t[u],_=t[u+1],y=t[u+2],C=m*3,E=_*3,I=y*3;$S.x=i[C],$S.y=i[C+1],$S.z=i[C+2],dI.x=i[E],dI.y=i[E+1],dI.z=i[E+2],hI.x=i[I],hI.y=i[I+1],hI.z=i[I+2],s[m].count++,s[_].count++,s[y].count++,d.subtract(dI,$S,dI),d.subtract(hI,$S,hI),a[f]=d.cross(dI,hI,new d),f++}let h=0;for(u=0;u<o;u++)s[u].indexOffset+=h,h+=s[u].count;f=0;let A;for(u=0;u<r;u+=3){A=s[t[u]];let m=A.indexOffset+A.currentCount;c[m]=f,A.currentCount++,A=s[t[u+1]],m=A.indexOffset+A.currentCount,c[m]=f,A.currentCount++,A=s[t[u+2]],m=A.indexOffset+A.currentCount,c[m]=f,A.currentCount++,f++}let g=new Float32Array(o*3);for(u=0;u<o;u++){let m=u*3;if(A=s[u],d.clone(d.ZERO,yf),A.count>0){for(f=0;f<A.count;f++)d.add(yf,a[c[A.indexOffset+f]],yf);d.equalsEpsilon(d.ZERO,yf,D.EPSILON10)&&d.clone(a[c[A.indexOffset]],yf)}d.equalsEpsilon(d.ZERO,yf,D.EPSILON10)&&(yf.z=1),d.normalize(yf,yf),g[m]=yf.x,g[m+1]=yf.y,g[m+2]=yf.z}return e.attributes.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g}),e};var QPe=new d,rte=new d,kPe=new d;Kc.computeTangentAndBitangent=function(e){let t=e.attributes,n=e.indices,i=e.attributes.position.values,o=e.attributes.normal.values,r=e.attributes.st.values,s=e.attributes.position.values.length/3,a=n.length,c=new Array(s*3),u;for(u=0;u<c.length;u++)c[u]=0;let f,h,A;for(u=0;u<a;u+=3){let _=n[u],y=n[u+1],C=n[u+2];f=_*3,h=y*3,A=C*3;let E=_*2,I=y*2,b=C*2,S=i[f],B=i[f+1],v=i[f+2],P=r[E],N=r[E+1],L=r[I+1]-N,p=r[b+1]-N,x=1/((r[I]-P)*p-(r[b]-P)*L),T=(p*(i[h]-S)-L*(i[A]-S))*x,w=(p*(i[h+1]-B)-L*(i[A+1]-B))*x,M=(p*(i[h+2]-v)-L*(i[A+2]-v))*x;c[f]+=T,c[f+1]+=w,c[f+2]+=M,c[h]+=T,c[h+1]+=w,c[h+2]+=M,c[A]+=T,c[A+1]+=w,c[A+2]+=M}let g=new Float32Array(s*3),m=new Float32Array(s*3);for(u=0;u<s;u++){f=u*3,h=f+1,A=f+2;let _=d.fromArray(o,f,QPe),y=d.fromArray(c,f,kPe),C=d.dot(_,y);d.multiplyByScalar(_,C,rte),d.normalize(d.subtract(y,rte,y),y),g[f]=y.x,g[h]=y.y,g[A]=y.z,d.normalize(d.cross(_,y,y),y),m[f]=y.x,m[h]=y.y,m[A]=y.z}return e.attributes.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g}),e.attributes.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m}),e};var ew=new k,Fd=new d,ste=new d,ate=new d,xM=new k;Kc.compressVertices=function(e){let t=e.attributes.extrudeDirection,n,i;if(l(t)){let B=t.values;i=B.length/3;let v=new Float32Array(i*2),P=0;for(n=0;n<i;++n){if(d.fromArray(B,n*3,Fd),d.equals(Fd,d.ZERO)){P+=2;continue}xM=Fn.octEncodeInRange(Fd,65535,xM),v[P++]=xM.x,v[P++]=xM.y}return e.attributes.compressedAttributes=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:v}),delete e.attributes.extrudeDirection,e}let o=e.attributes.normal,r=e.attributes.st,s=l(o),a=l(r);if(!s&&!a)return e;let c=e.attributes.tangent,u=e.attributes.bitangent,f=l(c),h=l(u),A,g,m,_;s&&(A=o.values),a&&(g=r.values),f&&(m=c.values),h&&(_=u.values),i=(s?A.length:g.length)/(s?3:2);let E=i,I=a&&s?2:1;I+=f||h?1:0,E*=I;let b=new Float32Array(E),S=0;for(n=0;n<i;++n){a&&(k.fromArray(g,n*2,ew),b[S++]=Fn.compressTextureCoordinates(ew));let B=n*3;s&&l(m)&&l(_)?(d.fromArray(A,B,Fd),d.fromArray(m,B,ste),d.fromArray(_,B,ate),Fn.octPack(Fd,ste,ate,ew),b[S++]=ew.x,b[S++]=ew.y):(s&&(d.fromArray(A,B,Fd),b[S++]=Fn.octEncodeFloat(Fd)),f&&(d.fromArray(m,B,Fd),b[S++]=Fn.octEncodeFloat(Fd)),h&&(d.fromArray(_,B,Fd),b[S++]=Fn.octEncodeFloat(Fd)))}return e.attributes.compressedAttributes=new De({componentDatatype:q.FLOAT,componentsPerAttribute:I,values:b}),s&&delete e.attributes.normal,a&&delete e.attributes.st,h&&delete e.attributes.bitangent,f&&delete e.attributes.tangent,e};function UPe(e){if(l(e.indices))return e;let t=ht.computeNumberOfVertices(e),n=Fe.createTypedArray(t,t);for(let i=0;i<t;++i)n[i]=i;return e.indices=n,e}function GPe(e){let t=ht.computeNumberOfVertices(e),n=Fe.createTypedArray(t,(t-2)*3);n[0]=1,n[1]=0,n[2]=2;let i=3;for(let o=3;o<t;++o)n[i++]=o-1,n[i++]=0,n[i++]=o;return e.indices=n,e.primitiveType=Me.TRIANGLES,e}function zPe(e){let t=ht.computeNumberOfVertices(e),n=Fe.createTypedArray(t,(t-2)*3);n[0]=0,n[1]=1,n[2]=2,t>3&&(n[3]=0,n[4]=2,n[5]=3);let i=6;for(let o=3;o<t-1;o+=2)n[i++]=o,n[i++]=o-1,n[i++]=o+1,o+2<t&&(n[i++]=o,n[i++]=o+1,n[i++]=o+2);return e.indices=n,e.primitiveType=Me.TRIANGLES,e}function VPe(e){if(l(e.indices))return e;let t=ht.computeNumberOfVertices(e),n=Fe.createTypedArray(t,t);for(let i=0;i<t;++i)n[i]=i;return e.indices=n,e}function HPe(e){let t=ht.computeNumberOfVertices(e),n=Fe.createTypedArray(t,(t-1)*2);n[0]=0,n[1]=1;let i=2;for(let o=2;o<t;++o)n[i++]=o-1,n[i++]=o;return e.indices=n,e.primitiveType=Me.LINES,e}function WPe(e){let t=ht.computeNumberOfVertices(e),n=Fe.createTypedArray(t,t*2);n[0]=0,n[1]=1;let i=2;for(let o=2;o<t;++o)n[i++]=o-1,n[i++]=o;return n[i++]=t-1,n[i]=0,e.indices=n,e.primitiveType=Me.LINES,e}function jPe(e){switch(e.primitiveType){case Me.TRIANGLE_FAN:return GPe(e);case Me.TRIANGLE_STRIP:return zPe(e);case Me.TRIANGLES:return UPe(e);case Me.LINE_STRIP:return HPe(e);case Me.LINE_LOOP:return WPe(e);case Me.LINES:return VPe(e)}return e}function Cg(e,t){Math.abs(e.y)<D.EPSILON6&&(t?e.y=-D.EPSILON6:e.y=D.EPSILON6)}function YPe(e,t,n){if(e.y!==0&&t.y!==0&&n.y!==0){Cg(e,e.y<0),Cg(t,t.y<0),Cg(n,n.y<0);return}let i=Math.abs(e.y),o=Math.abs(t.y),r=Math.abs(n.y),s;i>o?i>r?s=D.sign(e.y):s=D.sign(n.y):o>r?s=D.sign(t.y):s=D.sign(n.y);let a=s<0;Cg(e,a),Cg(t,a),Cg(n,a)}var cte=new d;function Cf(e,t,n,i){d.add(e,d.multiplyByScalar(d.subtract(t,e,cte),e.y/(e.y-t.y),cte),n),d.clone(n,i),Cg(n,!0),Cg(i,!1)}var AC=new d,pC=new d,gC=new d,_C=new d,X9={positions:new Array(7),indices:new Array(9)};function qPe(e,t,n){if(e.x>=0||t.x>=0||n.x>=0)return;YPe(e,t,n);let i=e.y<0,o=t.y<0,r=n.y<0,s=0;s+=i?1:0,s+=o?1:0,s+=r?1:0;let a=X9.indices;s===1?(a[1]=3,a[2]=4,a[5]=6,a[7]=6,a[8]=5,i?(Cf(e,t,AC,gC),Cf(e,n,pC,_C),a[0]=0,a[3]=1,a[4]=2,a[6]=1):o?(Cf(t,n,AC,gC),Cf(t,e,pC,_C),a[0]=1,a[3]=2,a[4]=0,a[6]=2):r&&(Cf(n,e,AC,gC),Cf(n,t,pC,_C),a[0]=2,a[3]=0,a[4]=1,a[6]=0)):s===2&&(a[2]=4,a[4]=4,a[5]=3,a[7]=5,a[8]=6,i?o?r||(Cf(n,e,AC,gC),Cf(n,t,pC,_C),a[0]=0,a[1]=1,a[3]=0,a[6]=2):(Cf(t,n,AC,gC),Cf(t,e,pC,_C),a[0]=2,a[1]=0,a[3]=2,a[6]=1):(Cf(e,t,AC,gC),Cf(e,n,pC,_C),a[0]=1,a[1]=2,a[3]=1,a[6]=0));let c=X9.positions;return c[0]=e,c[1]=t,c[2]=n,c.length=3,(s===1||s===2)&&(c[3]=AC,c[4]=pC,c[5]=gC,c[6]=_C,c.length=7),X9}function lte(e,t){let n=e.attributes;if(n.position.values.length===0)return;for(let o in n)if(n.hasOwnProperty(o)&&l(n[o])&&l(n[o].values)){let r=n[o];r.values=q.createTypedArray(r.componentDatatype,r.values)}let i=ht.computeNumberOfVertices(e);return e.indices=Fe.createTypedArray(i,e.indices),t&&(e.boundingSphere=le.fromVertices(n.position.values)),e}function AI(e){let t=e.attributes,n={};for(let i in t)if(t.hasOwnProperty(i)&&l(t[i])&&l(t[i].values)){let o=t[i];n[i]=new De({componentDatatype:o.componentDatatype,componentsPerAttribute:o.componentsPerAttribute,normalize:o.normalize,values:[]})}return new ht({attributes:n,indices:[],primitiveType:e.primitiveType})}function e6(e,t,n){let i=l(e.geometry.boundingSphere);t=lte(t,i),n=lte(n,i),l(n)&&!l(t)?e.geometry=n:!l(n)&&l(t)?e.geometry=t:(e.westHemisphereGeometry=t,e.eastHemisphereGeometry=n,e.geometry=void 0)}function t6(e,t){let n=new e,i=new e,o=new e;return function(r,s,a,c,u,f,h,A){let g=e.fromArray(u,r*t,n),m=e.fromArray(u,s*t,i),_=e.fromArray(u,a*t,o);e.multiplyByScalar(g,c.x,g),e.multiplyByScalar(m,c.y,m),e.multiplyByScalar(_,c.z,_);let y=e.add(g,m,g);e.add(y,_,y),A&&e.normalize(y,y),e.pack(y,f,h*t)}}var KPe=t6(se,4),SM=t6(d,3),Ate=t6(k,2),XPe=function(e,t,n,i,o,r,s){let a=o[e]*i.x,c=o[t]*i.y,u=o[n]*i.z;r[s]=a+c+u>D.EPSILON6?1:0},tw=new d,J9=new d,Z9=new d,JPe=new d;function bM(e,t,n,i,o,r,s,a,c,u,f,h,A,g,m,_){if(!l(r)&&!l(s)&&!l(a)&&!l(c)&&!l(u)&&g===0)return;let y=d.fromArray(o,e*3,tw),C=d.fromArray(o,t*3,J9),E=d.fromArray(o,n*3,Z9),I=uI(i,y,C,E,JPe);if(l(I)){if(l(r)&&SM(e,t,n,I,r,h.normal.values,_,!0),l(u)){let b=d.fromArray(u,e*3,tw),S=d.fromArray(u,t*3,J9),B=d.fromArray(u,n*3,Z9);d.multiplyByScalar(b,I.x,b),d.multiplyByScalar(S,I.y,S),d.multiplyByScalar(B,I.z,B);let v;!d.equals(b,d.ZERO)||!d.equals(S,d.ZERO)||!d.equals(B,d.ZERO)?(v=d.add(b,S,b),d.add(v,B,v),d.normalize(v,v)):(v=tw,v.x=0,v.y=0,v.z=0),d.pack(v,h.extrudeDirection.values,_*3)}if(l(f)&&XPe(e,t,n,I,f,h.applyOffset.values,_),l(s)&&SM(e,t,n,I,s,h.tangent.values,_,!0),l(a)&&SM(e,t,n,I,a,h.bitangent.values,_,!0),l(c)&&Ate(e,t,n,I,c,h.st.values,_),g>0)for(let b=0;b<g;b++){let S=A[b];ZPe(e,t,n,I,_,m[S],h[S])}}}function ZPe(e,t,n,i,o,r,s){let a=r.componentsPerAttribute,c=r.values,u=s.values;switch(a){case 4:KPe(e,t,n,i,c,u,o,!1);break;case 3:SM(e,t,n,i,c,u,o,!1);break;case 2:Ate(e,t,n,i,c,u,o,!1);break;default:u[o]=c[e]*i.x+c[t]*i.y+c[n]*i.z}}function tm(e,t,n,i,o,r){let s=e.position.values.length/3;if(o!==-1){let a=i[o],c=n[a];return c===-1?(n[a]=s,e.position.values.push(r.x,r.y,r.z),t.push(s),s):(t.push(c),c)}return e.position.values.push(r.x,r.y,r.z),t.push(s),s}var $Pe={position:!0,normal:!0,bitangent:!0,tangent:!0,st:!0,extrudeDirection:!0,applyOffset:!0};function ute(e){let t=e.geometry,n=t.attributes,i=n.position.values,o=l(n.normal)?n.normal.values:void 0,r=l(n.bitangent)?n.bitangent.values:void 0,s=l(n.tangent)?n.tangent.values:void 0,a=l(n.st)?n.st.values:void 0,c=l(n.extrudeDirection)?n.extrudeDirection.values:void 0,u=l(n.applyOffset)?n.applyOffset.values:void 0,f=t.indices,h=[];for(let v in n)n.hasOwnProperty(v)&&!$Pe[v]&&l(n[v])&&h.push(v);let A=h.length,g=AI(t),m=AI(t),_,y,C,E,I,b=[];b.length=i.length/3;let S=[];for(S.length=i.length/3,I=0;I<b.length;++I)b[I]=-1,S[I]=-1;let B=f.length;for(I=0;I<B;I+=3){let v=f[I],P=f[I+1],N=f[I+2],L=d.fromArray(i,v*3),p=d.fromArray(i,P*3),x=d.fromArray(i,N*3),T=qPe(L,p,x);if(l(T)&&T.positions.length>3){let w=T.positions,M=T.indices,O=M.length;for(let U=0;U<O;++U){let Q=M[U],z=w[Q];z.y<0?(_=m.attributes,y=m.indices,C=b):(_=g.attributes,y=g.indices,C=S),E=tm(_,y,C,f,Q<3?I+Q:-1,z),bM(v,P,N,z,i,o,s,r,a,c,u,_,h,A,n,E)}}else l(T)&&(L=T.positions[0],p=T.positions[1],x=T.positions[2]),L.y<0?(_=m.attributes,y=m.indices,C=b):(_=g.attributes,y=g.indices,C=S),E=tm(_,y,C,f,I,L),bM(v,P,N,L,i,o,s,r,a,c,u,_,h,A,n,E),E=tm(_,y,C,f,I+1,p),bM(v,P,N,p,i,o,s,r,a,c,u,_,h,A,n,E),E=tm(_,y,C,f,I+2,x),bM(v,P,N,x,i,o,s,r,a,c,u,_,h,A,n,E)}e6(e,m,g)}var pte=mn.fromPointNormal(d.ZERO,d.UNIT_Y),eRe=new d,tRe=new d;function mI(e,t,n,i,o,r,s){if(!l(s))return;let a=d.fromArray(i,e*3,tw);d.equalsEpsilon(a,n,D.EPSILON10)?r.applyOffset.values[o]=s[e]:r.applyOffset.values[o]=s[t]}function fte(e){let t=e.geometry,n=t.attributes,i=n.position.values,o=l(n.applyOffset)?n.applyOffset.values:void 0,r=t.indices,s=AI(t),a=AI(t),c,u=r.length,f=[];f.length=i.length/3;let h=[];for(h.length=i.length/3,c=0;c<f.length;++c)f[c]=-1,h[c]=-1;for(c=0;c<u;c+=2){let A=r[c],g=r[c+1],m=d.fromArray(i,A*3,tw),_=d.fromArray(i,g*3,J9),y;Math.abs(m.y)<D.EPSILON6&&(m.y<0?m.y=-D.EPSILON6:m.y=D.EPSILON6),Math.abs(_.y)<D.EPSILON6&&(_.y<0?_.y=-D.EPSILON6:_.y=D.EPSILON6);let C=s.attributes,E=s.indices,I=h,b=a.attributes,S=a.indices,B=f,v=Ai.lineSegmentPlane(m,_,pte,Z9);if(l(v)){let P=d.multiplyByScalar(d.UNIT_Y,5*D.EPSILON9,eRe);m.y<0&&(d.negate(P,P),C=a.attributes,E=a.indices,I=f,b=s.attributes,S=s.indices,B=h);let N=d.add(v,P,tRe);y=tm(C,E,I,r,c,m),mI(A,g,m,i,y,C,o),y=tm(C,E,I,r,-1,N),mI(A,g,N,i,y,C,o),d.negate(P,P),d.add(v,P,N),y=tm(b,S,B,r,-1,N),mI(A,g,N,i,y,b,o),y=tm(b,S,B,r,c+1,_),mI(A,g,_,i,y,b,o)}else{let P,N,L;m.y<0?(P=a.attributes,N=a.indices,L=f):(P=s.attributes,N=s.indices,L=h),y=tm(P,N,L,r,c,m),mI(A,g,m,i,y,P,o),y=tm(P,N,L,r,c+1,_),mI(A,g,_,i,y,P,o)}}e6(e,a,s)}var dte=new k,nRe=new k,gte=new d,_te=new d,$9=new d,iRe=new d,oRe=new d,rRe=new d,hte=new se;function mte(e){let t=e.attributes,n=t.position.values,i=t.prevPosition.values,o=t.nextPosition.values,r=n.length;for(let s=0;s<r;s+=3){let a=d.unpack(n,s,gte);if(a.x>0)continue;let c=d.unpack(i,s,_te);(a.y<0&&c.y>0||a.y>0&&c.y<0)&&(s-3>0?(i[s]=n[s-3],i[s+1]=n[s-2],i[s+2]=n[s-1]):d.pack(a,i,s));let u=d.unpack(o,s,$9);(a.y<0&&u.y>0||a.y>0&&u.y<0)&&(s+3<r?(o[s]=n[s+3],o[s+1]=n[s+4],o[s+2]=n[s+5]):d.pack(a,o,s))}}var sRe=5*D.EPSILON9,TM=D.EPSILON6;function aRe(e){let t=e.geometry,n=t.attributes,i=n.position.values,o=n.prevPosition.values,r=n.nextPosition.values,s=n.expandAndWidth.values,a=l(n.st)?n.st.values:void 0,c=l(n.color)?n.color.values:void 0,u=AI(t),f=AI(t),h,A,g,m=!1,_=i.length/3;for(h=0;h<_;h+=4){let y=h,C=h+2,E=d.fromArray(i,y*3,gte),I=d.fromArray(i,C*3,_te);if(Math.abs(E.y)<TM)for(E.y=TM*(I.y<0?-1:1),i[h*3+1]=E.y,i[(h+1)*3+1]=E.y,A=y*3;A<y*3+12;A+=3)o[A]=i[h*3],o[A+1]=i[h*3+1],o[A+2]=i[h*3+2];if(Math.abs(I.y)<TM)for(I.y=TM*(E.y<0?-1:1),i[(h+2)*3+1]=I.y,i[(h+3)*3+1]=I.y,A=y*3;A<y*3+12;A+=3)r[A]=i[(h+2)*3],r[A+1]=i[(h+2)*3+1],r[A+2]=i[(h+2)*3+2];let b=u.attributes,S=u.indices,B=f.attributes,v=f.indices,P=Ai.lineSegmentPlane(E,I,pte,iRe);if(l(P)){m=!0;let N=d.multiplyByScalar(d.UNIT_Y,sRe,oRe);E.y<0&&(d.negate(N,N),b=f.attributes,S=f.indices,B=u.attributes,v=u.indices);let L=d.add(P,N,rRe);b.position.values.push(E.x,E.y,E.z,E.x,E.y,E.z),b.position.values.push(L.x,L.y,L.z),b.position.values.push(L.x,L.y,L.z),b.prevPosition.values.push(o[y*3],o[y*3+1],o[y*3+2]),b.prevPosition.values.push(o[y*3+3],o[y*3+4],o[y*3+5]),b.prevPosition.values.push(E.x,E.y,E.z,E.x,E.y,E.z),b.nextPosition.values.push(L.x,L.y,L.z),b.nextPosition.values.push(L.x,L.y,L.z),b.nextPosition.values.push(L.x,L.y,L.z),b.nextPosition.values.push(L.x,L.y,L.z),d.negate(N,N),d.add(P,N,L),B.position.values.push(L.x,L.y,L.z),B.position.values.push(L.x,L.y,L.z),B.position.values.push(I.x,I.y,I.z,I.x,I.y,I.z),B.prevPosition.values.push(L.x,L.y,L.z),B.prevPosition.values.push(L.x,L.y,L.z),B.prevPosition.values.push(L.x,L.y,L.z),B.prevPosition.values.push(L.x,L.y,L.z),B.nextPosition.values.push(I.x,I.y,I.z,I.x,I.y,I.z),B.nextPosition.values.push(r[C*3],r[C*3+1],r[C*3+2]),B.nextPosition.values.push(r[C*3+3],r[C*3+4],r[C*3+5]);let p=k.fromArray(s,y*2,dte),x=Math.abs(p.y);b.expandAndWidth.values.push(-1,x,1,x),b.expandAndWidth.values.push(-1,-x,1,-x),B.expandAndWidth.values.push(-1,x,1,x),B.expandAndWidth.values.push(-1,-x,1,-x);let T=d.magnitudeSquared(d.subtract(P,E,$9));if(T/=d.magnitudeSquared(d.subtract(I,E,$9)),l(c)){let w=se.fromArray(c,y*4,hte),M=se.fromArray(c,C*4,hte),O=D.lerp(w.x,M.x,T),U=D.lerp(w.y,M.y,T),Q=D.lerp(w.z,M.z,T),z=D.lerp(w.w,M.w,T);for(A=y*4;A<y*4+8;++A)b.color.values.push(c[A]);for(b.color.values.push(O,U,Q,z),b.color.values.push(O,U,Q,z),B.color.values.push(O,U,Q,z),B.color.values.push(O,U,Q,z),A=C*4;A<C*4+8;++A)B.color.values.push(c[A])}if(l(a)){let w=k.fromArray(a,y*2,dte),M=k.fromArray(a,(h+3)*2,nRe),O=D.lerp(w.x,M.x,T);for(A=y*2;A<y*2+4;++A)b.st.values.push(a[A]);for(b.st.values.push(O,w.y),b.st.values.push(O,M.y),B.st.values.push(O,w.y),B.st.values.push(O,M.y),A=C*2;A<C*2+4;++A)B.st.values.push(a[A])}g=b.position.values.length/3-4,S.push(g,g+2,g+1),S.push(g+1,g+2,g+3),g=B.position.values.length/3-4,v.push(g,g+2,g+1),v.push(g+1,g+2,g+3)}else{let N,L;for(E.y<0?(N=f.attributes,L=f.indices):(N=u.attributes,L=u.indices),N.position.values.push(E.x,E.y,E.z),N.position.values.push(E.x,E.y,E.z),N.position.values.push(I.x,I.y,I.z),N.position.values.push(I.x,I.y,I.z),A=h*3;A<h*3+12;++A)N.prevPosition.values.push(o[A]),N.nextPosition.values.push(r[A]);for(A=h*2;A<h*2+8;++A)N.expandAndWidth.values.push(s[A]),l(a)&&N.st.values.push(a[A]);if(l(c))for(A=h*4;A<h*4+16;++A)N.color.values.push(c[A]);g=N.position.values.length/3-4,L.push(g,g+2,g+1),L.push(g+1,g+2,g+3)}}m&&(mte(f),mte(u)),e6(e,f,u)}Kc.splitLongitude=function(e){let t=e.geometry,n=t.boundingSphere;if(l(n)&&(n.center.x-n.radius>0||le.intersectPlane(n,mn.ORIGIN_ZX_PLANE)!==nn.INTERSECTING))return e;if(t.geometryType!==Ld.NONE)switch(t.geometryType){case Ld.POLYLINES:aRe(e);break;case Ld.TRIANGLES:ute(e);break;case Ld.LINES:fte(e);break}else jPe(t),t.primitiveType===Me.TRIANGLES?ute(e):t.primitiveType===Me.LINES&&fte(e);return e};var jn=Kc;var Si={UNSIGNED_BYTE:ee.UNSIGNED_BYTE,UNSIGNED_SHORT:ee.UNSIGNED_SHORT,UNSIGNED_INT:ee.UNSIGNED_INT,FLOAT:ee.FLOAT,HALF_FLOAT:ee.HALF_FLOAT_OES,UNSIGNED_INT_24_8:ee.UNSIGNED_INT_24_8,UNSIGNED_SHORT_4_4_4_4:ee.UNSIGNED_SHORT_4_4_4_4,UNSIGNED_SHORT_5_5_5_1:ee.UNSIGNED_SHORT_5_5_5_1,UNSIGNED_SHORT_5_6_5:ee.UNSIGNED_SHORT_5_6_5};Si.toWebGLConstant=function(e,t){switch(e){case Si.UNSIGNED_BYTE:return ee.UNSIGNED_BYTE;case Si.UNSIGNED_SHORT:return ee.UNSIGNED_SHORT;case Si.UNSIGNED_INT:return ee.UNSIGNED_INT;case Si.FLOAT:return ee.FLOAT;case Si.HALF_FLOAT:return t.webgl2?ee.HALF_FLOAT:ee.HALF_FLOAT_OES;case Si.UNSIGNED_INT_24_8:return ee.UNSIGNED_INT_24_8;case Si.UNSIGNED_SHORT_4_4_4_4:return ee.UNSIGNED_SHORT_4_4_4_4;case Si.UNSIGNED_SHORT_5_5_5_1:return ee.UNSIGNED_SHORT_5_5_5_1;case Si.UNSIGNED_SHORT_5_6_5:return Si.UNSIGNED_SHORT_5_6_5}};Si.isPacked=function(e){return e===Si.UNSIGNED_INT_24_8||e===Si.UNSIGNED_SHORT_4_4_4_4||e===Si.UNSIGNED_SHORT_5_5_5_1||e===Si.UNSIGNED_SHORT_5_6_5};Si.sizeInBytes=function(e){switch(e){case Si.UNSIGNED_BYTE:return 1;case Si.UNSIGNED_SHORT:case Si.UNSIGNED_SHORT_4_4_4_4:case Si.UNSIGNED_SHORT_5_5_5_1:case Si.UNSIGNED_SHORT_5_6_5:case Si.HALF_FLOAT:return 2;case Si.UNSIGNED_INT:case Si.FLOAT:case Si.UNSIGNED_INT_24_8:return 4}};Si.validate=function(e){return e===Si.UNSIGNED_BYTE||e===Si.UNSIGNED_SHORT||e===Si.UNSIGNED_INT||e===Si.FLOAT||e===Si.HALF_FLOAT||e===Si.UNSIGNED_INT_24_8||e===Si.UNSIGNED_SHORT_4_4_4_4||e===Si.UNSIGNED_SHORT_5_5_5_1||e===Si.UNSIGNED_SHORT_5_6_5};Si.getTypedArrayConstructor=function(e){let t=Si.sizeInBytes(e);return t===Uint8Array.BYTES_PER_ELEMENT?Uint8Array:t===Uint16Array.BYTES_PER_ELEMENT?Uint16Array:t===Float32Array.BYTES_PER_ELEMENT&&e===Si.FLOAT?Float32Array:Uint32Array};var He=Object.freeze(Si);var Je={DEPTH_COMPONENT:ee.DEPTH_COMPONENT,DEPTH_STENCIL:ee.DEPTH_STENCIL,ALPHA:ee.ALPHA,RED:ee.RED,RG:ee.RG,RGB:ee.RGB,RGBA:ee.RGBA,RED_INTEGER:ee.RED_INTEGER,RG_INTEGER:ee.RG_INTEGER,RGB_INTEGER:ee.RGB_INTEGER,RGBA_INTEGER:ee.RGBA_INTEGER,LUMINANCE:ee.LUMINANCE,LUMINANCE_ALPHA:ee.LUMINANCE_ALPHA,RGB_DXT1:ee.COMPRESSED_RGB_S3TC_DXT1_EXT,RGBA_DXT1:ee.COMPRESSED_RGBA_S3TC_DXT1_EXT,RGBA_DXT3:ee.COMPRESSED_RGBA_S3TC_DXT3_EXT,RGBA_DXT5:ee.COMPRESSED_RGBA_S3TC_DXT5_EXT,RGB_PVRTC_4BPPV1:ee.COMPRESSED_RGB_PVRTC_4BPPV1_IMG,RGB_PVRTC_2BPPV1:ee.COMPRESSED_RGB_PVRTC_2BPPV1_IMG,RGBA_PVRTC_4BPPV1:ee.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,RGBA_PVRTC_2BPPV1:ee.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,RGBA_ASTC:ee.COMPRESSED_RGBA_ASTC_4x4_WEBGL,RGB_ETC1:ee.COMPRESSED_RGB_ETC1_WEBGL,RGB8_ETC2:ee.COMPRESSED_RGB8_ETC2,RGBA8_ETC2_EAC:ee.COMPRESSED_RGBA8_ETC2_EAC,RGBA_BC7:ee.COMPRESSED_RGBA_BPTC_UNORM};Je.componentsLength=function(e){switch(e){case Je.RGB:case Je.RGB_INTEGER:return 3;case Je.RGBA:case Je.RGBA_INTEGER:return 4;case Je.LUMINANCE_ALPHA:case Je.RG:case Je.RG_INTEGER:return 2;case Je.ALPHA:case Je.RED:case Je.RED_INTEGER:case Je.LUMINANCE:return 1;default:return 1}};Je.validate=function(e){return e===Je.DEPTH_COMPONENT||e===Je.DEPTH_STENCIL||e===Je.ALPHA||e===Je.RED||e===Je.RG||e===Je.RGB||e===Je.RGBA||e===Je.RED_INTEGER||e===Je.RG_INTEGER||e===Je.RGB_INTEGER||e===Je.RGBA_INTEGER||e===Je.LUMINANCE||e===Je.LUMINANCE_ALPHA||e===Je.RGB_DXT1||e===Je.RGBA_DXT1||e===Je.RGBA_DXT3||e===Je.RGBA_DXT5||e===Je.RGB_PVRTC_4BPPV1||e===Je.RGB_PVRTC_2BPPV1||e===Je.RGBA_PVRTC_4BPPV1||e===Je.RGBA_PVRTC_2BPPV1||e===Je.RGBA_ASTC||e===Je.RGB_ETC1||e===Je.RGB8_ETC2||e===Je.RGBA8_ETC2_EAC||e===Je.RGBA_BC7};Je.isColorFormat=function(e){return e===Je.RED||e===Je.ALPHA||e===Je.RGB||e===Je.RGBA||e===Je.LUMINANCE||e===Je.LUMINANCE_ALPHA};Je.isDepthFormat=function(e){return e===Je.DEPTH_COMPONENT||e===Je.DEPTH_STENCIL};Je.isCompressedFormat=function(e){return e===Je.RGB_DXT1||e===Je.RGBA_DXT1||e===Je.RGBA_DXT3||e===Je.RGBA_DXT5||e===Je.RGB_PVRTC_4BPPV1||e===Je.RGB_PVRTC_2BPPV1||e===Je.RGBA_PVRTC_4BPPV1||e===Je.RGBA_PVRTC_2BPPV1||e===Je.RGBA_ASTC||e===Je.RGB_ETC1||e===Je.RGB8_ETC2||e===Je.RGBA8_ETC2_EAC||e===Je.RGBA_BC7};Je.isDXTFormat=function(e){return e===Je.RGB_DXT1||e===Je.RGBA_DXT1||e===Je.RGBA_DXT3||e===Je.RGBA_DXT5};Je.isPVRTCFormat=function(e){return e===Je.RGB_PVRTC_4BPPV1||e===Je.RGB_PVRTC_2BPPV1||e===Je.RGBA_PVRTC_4BPPV1||e===Je.RGBA_PVRTC_2BPPV1};Je.isASTCFormat=function(e){return e===Je.RGBA_ASTC};Je.isETC1Format=function(e){return e===Je.RGB_ETC1};Je.isETC2Format=function(e){return e===Je.RGB8_ETC2||e===Je.RGBA8_ETC2_EAC};Je.isBC7Format=function(e){return e===Je.RGBA_BC7};Je.compressedTextureSizeInBytes=function(e,t,n){switch(e){case Je.RGB_DXT1:case Je.RGBA_DXT1:case Je.RGB_ETC1:case Je.RGB8_ETC2:return Math.floor((t+3)/4)*Math.floor((n+3)/4)*8;case Je.RGBA_DXT3:case Je.RGBA_DXT5:case Je.RGBA_ASTC:case Je.RGBA8_ETC2_EAC:return Math.floor((t+3)/4)*Math.floor((n+3)/4)*16;case Je.RGB_PVRTC_4BPPV1:case Je.RGBA_PVRTC_4BPPV1:return Math.floor((Math.max(t,8)*Math.max(n,8)*4+7)/8);case Je.RGB_PVRTC_2BPPV1:case Je.RGBA_PVRTC_2BPPV1:return Math.floor((Math.max(t,16)*Math.max(n,8)*2+7)/8);case Je.RGBA_BC7:return Math.ceil(t/4)*Math.ceil(n/4)*16;default:return 0}};Je.textureSizeInBytes=function(e,t,n,i){let o=Je.componentsLength(e);return He.isPacked(t)&&(o=1),o*He.sizeInBytes(t)*n*i};Je.texture3DSizeInBytes=function(e,t,n,i,o){let r=Je.componentsLength(e);return He.isPacked(t)&&(r=1),r*He.sizeInBytes(t)*n*i*o};Je.alignmentInBytes=function(e,t,n){let i=Je.textureSizeInBytes(e,t,n,1)%4;return i===0?4:i===2?2:1};Je.createTypedArray=function(e,t,n,i){let o=He.getTypedArrayConstructor(t),r=Je.componentsLength(e)*n*i;return new o(r)};Je.flipY=function(e,t,n,i,o){if(o===1)return e;let r=Je.createTypedArray(t,n,i,o),s=Je.componentsLength(t),a=i*s;for(let c=0;c<o;++c){let u=c*i*s,f=(o-c-1)*i*s;for(let h=0;h<a;++h)r[f+h]=e[u+h]}return r};Je.toInternalFormat=function(e,t,n){if(!n.webgl2)return e;if(e===Je.DEPTH_STENCIL)return ee.DEPTH24_STENCIL8;if(e===Je.DEPTH_COMPONENT){if(t===He.UNSIGNED_SHORT)return ee.DEPTH_COMPONENT16;if(t===He.UNSIGNED_INT)return ee.DEPTH_COMPONENT24}if(t===He.FLOAT)switch(e){case Je.RGBA:return ee.RGBA32F;case Je.RGB:return ee.RGB32F;case Je.RG:return ee.RG32F;case Je.RED:return ee.R32F}if(t===He.HALF_FLOAT)switch(e){case Je.RGBA:return ee.RGBA16F;case Je.RGB:return ee.RGB16F;case Je.RG:return ee.RG16F;case Je.RED:return ee.R16F}if(t===He.UNSIGNED_BYTE)switch(e){case Je.RGBA:return ee.RGBA8;case Je.RGB:return ee.RGB8;case Je.RG:return ee.RG8;case Je.RED:return ee.R8}if(t===He.INT)switch(e){case Je.RGBA_INTEGER:return ee.RGBA32I;case Je.RGB_INTEGER:return ee.RGB32I;case Je.RG_INTEGER:return ee.RG32I;case Je.RED_INTEGER:return ee.R32I}if(t===He.UNSIGNED_INT)switch(e){case Je.RGBA_INTEGER:return ee.RGBA32UI;case Je.RGB_INTEGER:return ee.RGB32UI;case Je.RG_INTEGER:return ee.RG32UI;case Je.RED_INTEGER:return ee.R32UI}return e};var et=Object.freeze(Je);var BM={STREAM_DRAW:ee.STREAM_DRAW,STATIC_DRAW:ee.STATIC_DRAW,DYNAMIC_DRAW:ee.DYNAMIC_DRAW,validate:function(e){return e===BM.STREAM_DRAW||e===BM.STATIC_DRAW||e===BM.DYNAMIC_DRAW}},Qe=Object.freeze(BM);var Br={_maximumCombinedTextureImageUnits:0,_maximumCubeMapSize:0,_maximumFragmentUniformVectors:0,_maximumTextureImageUnits:0,_maximumRenderbufferSize:0,_maximumTextureSize:0,_maximumVaryingVectors:0,_maximumVertexAttributes:0,_maximumVertexTextureImageUnits:0,_maximumVertexUniformVectors:0,_minimumAliasedLineWidth:0,_maximumAliasedLineWidth:0,_minimumAliasedPointSize:0,_maximumAliasedPointSize:0,_maximumViewportWidth:0,_maximumViewportHeight:0,_maximumTextureFilterAnisotropy:0,_maximumDrawBuffers:0,_maximumColorAttachments:0,_maximumSamples:0,_highpFloatSupported:!1,_highpIntSupported:!1};Object.defineProperties(Br,{maximumCombinedTextureImageUnits:{get:function(){return Br._maximumCombinedTextureImageUnits}},maximumCubeMapSize:{get:function(){return Br._maximumCubeMapSize}},maximumFragmentUniformVectors:{get:function(){return Br._maximumFragmentUniformVectors}},maximumTextureImageUnits:{get:function(){return Br._maximumTextureImageUnits}},maximumRenderbufferSize:{get:function(){return Br._maximumRenderbufferSize}},maximumTextureSize:{get:function(){return Br._maximumTextureSize}},maximumVaryingVectors:{get:function(){return Br._maximumVaryingVectors}},maximumVertexAttributes:{get:function(){return Br._maximumVertexAttributes}},maximumVertexTextureImageUnits:{get:function(){return Br._maximumVertexTextureImageUnits}},maximumVertexUniformVectors:{get:function(){return Br._maximumVertexUniformVectors}},minimumAliasedLineWidth:{get:function(){return Br._minimumAliasedLineWidth}},maximumAliasedLineWidth:{get:function(){return Br._maximumAliasedLineWidth}},minimumAliasedPointSize:{get:function(){return Br._minimumAliasedPointSize}},maximumAliasedPointSize:{get:function(){return Br._maximumAliasedPointSize}},maximumViewportWidth:{get:function(){return Br._maximumViewportWidth}},maximumViewportHeight:{get:function(){return Br._maximumViewportHeight}},maximumTextureFilterAnisotropy:{get:function(){return Br._maximumTextureFilterAnisotropy}},maximumDrawBuffers:{get:function(){return Br._maximumDrawBuffers}},maximumColorAttachments:{get:function(){return Br._maximumColorAttachments}},maximumSamples:{get:function(){return Br._maximumSamples}},highpFloatSupported:{get:function(){return Br._highpFloatSupported}},highpIntSupported:{get:function(){return Br._highpIntSupported}}});var qt=Br;function nw(e,t,n,i,o,r,s,a,c,u,f){this._context=e,this._texture=t,this._textureTarget=n,this._targetFace=i,this._pixelDatatype=s,this._internalFormat=o,this._pixelFormat=r,this._size=a,this._preMultiplyAlpha=c,this._flipY=u,this._initialized=f}Object.defineProperties(nw.prototype,{pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},_target:{get:function(){return this._targetFace}}});nw.prototype.copyFrom=function(e){let{xOffset:t=0,yOffset:n=0,source:i,skipColorSpaceConversion:o=!1}=e,{width:r,height:s}=i,a=this._context._gl,c=this._textureTarget,u=this._targetFace;a.activeTexture(a.TEXTURE0),a.bindTexture(c,this._texture);let f=i.arrayBufferView,h=this._size,A=this._pixelFormat,g=this._internalFormat,m=this._pixelDatatype,_=this._preMultiplyAlpha,y=this._flipY,C=4;l(f)&&(C=et.alignmentInBytes(A,m,r)),a.pixelStorei(a.UNPACK_ALIGNMENT,C),o?a.pixelStorei(a.UNPACK_COLORSPACE_CONVERSION_WEBGL,a.NONE):a.pixelStorei(a.UNPACK_COLORSPACE_CONVERSION_WEBGL,a.BROWSER_DEFAULT_WEBGL);let E=!1;if(!this._initialized){let I;t===0&&n===0&&r===h&&s===h?(l(f)?(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),y&&(f=et.flipY(f,A,m,h,h)),I=f):(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,_),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,y),I=i),E=!0):(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),I=et.createTypedArray(A,m,h,h)),a.texImage2D(u,0,g,h,h,0,A,He.toWebGLConstant(m,this._context),I),this._initialized=!0}E||(l(f)?(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),y&&(f=et.flipY(f,A,m,r,s)),a.texSubImage2D(u,0,t,n,r,s,A,He.toWebGLConstant(m,this._context),f)):(a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,_),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,y),a.texSubImage2D(u,0,t,n,A,He.toWebGLConstant(m,this._context),i))),a.bindTexture(c,null)};nw.prototype.copyFromFramebuffer=function(e,t,n,i,o,r){e=e??0,t=t??0,n=n??0,i=i??0,o=o??this._size,r=r??this._size;let s=this._context._gl,a=this._textureTarget;s.activeTexture(s.TEXTURE0),s.bindTexture(a,this._texture),s.copyTexSubImage2D(this._targetFace,0,e,t,n,i,o,r),s.bindTexture(a,null),this._initialized=!0};nw.prototype.copyMipmapFromFramebuffer=function(e,t,n,i,o){e=e??0,t=t??0,n=n??this._size,i=i??this._size,o=o??0;let r=this._context._gl,s=this._textureTarget;r.activeTexture(r.TEXTURE0),r.bindTexture(s,this._texture),r.copyTexImage2D(this._targetFace,o,this._internalFormat,e,t,n,i,0),r.bindTexture(s,null),this._initialized=!0};var DM=nw;function n6(e,t,n){let i=e._gl;i.framebufferTexture2D(i.FRAMEBUFFER,t,n._target,n._texture,0)}function vM(e,t,n){let i=e._gl;i.framebufferRenderbuffer(i.FRAMEBUFFER,t,i.RENDERBUFFER,n._getRenderbuffer())}function kd(e){e=e??V.EMPTY_OBJECT;let n=e.context._gl,i=qt.maximumColorAttachments;if(this._gl=n,this._framebuffer=n.createFramebuffer(),this._colorTextures=[],this._colorRenderbuffers=[],this._activeColorAttachments=[],this._depthTexture=void 0,this._depthRenderbuffer=void 0,this._stencilRenderbuffer=void 0,this._depthStencilTexture=void 0,this._depthStencilRenderbuffer=void 0,this.destroyAttachments=e.destroyAttachments??!0,this._bind(),l(e.colorTextures)){let o=e.colorTextures,r=this._colorTextures.length=this._activeColorAttachments.length=o.length;for(let s=0;s<r;++s){let a=o[s],c=this._gl.COLOR_ATTACHMENT0+s;n6(this,c,a),this._activeColorAttachments[s]=c,this._colorTextures[s]=a}}if(l(e.colorRenderbuffers)){let o=e.colorRenderbuffers,r=this._colorRenderbuffers.length=this._activeColorAttachments.length=o.length;for(let s=0;s<r;++s){let a=o[s],c=this._gl.COLOR_ATTACHMENT0+s;vM(this,c,a),this._activeColorAttachments[s]=c,this._colorRenderbuffers[s]=a}}if(l(e.depthTexture)){let o=e.depthTexture;n6(this,this._gl.DEPTH_ATTACHMENT,o),this._depthTexture=o}if(l(e.depthRenderbuffer)){let o=e.depthRenderbuffer;vM(this,this._gl.DEPTH_ATTACHMENT,o),this._depthRenderbuffer=o}if(l(e.stencilRenderbuffer)){let o=e.stencilRenderbuffer;vM(this,this._gl.STENCIL_ATTACHMENT,o),this._stencilRenderbuffer=o}if(l(e.depthStencilTexture)){let o=e.depthStencilTexture;n6(this,this._gl.DEPTH_STENCIL_ATTACHMENT,o),this._depthStencilTexture=o}if(l(e.depthStencilRenderbuffer)){let o=e.depthStencilRenderbuffer;vM(this,this._gl.DEPTH_STENCIL_ATTACHMENT,o),this._depthStencilRenderbuffer=o}this._unBind()}Object.defineProperties(kd.prototype,{status:{get:function(){this._bind();let e=this._gl.checkFramebufferStatus(this._gl.FRAMEBUFFER);return this._unBind(),e}},numberOfColorAttachments:{get:function(){return this._activeColorAttachments.length}},depthTexture:{get:function(){return this._depthTexture}},depthRenderbuffer:{get:function(){return this._depthRenderbuffer}},stencilRenderbuffer:{get:function(){return this._stencilRenderbuffer}},depthStencilTexture:{get:function(){return this._depthStencilTexture}},depthStencilRenderbuffer:{get:function(){return this._depthStencilRenderbuffer}},hasDepthAttachment:{get:function(){return!!(this.depthTexture||this.depthRenderbuffer||this.depthStencilTexture||this.depthStencilRenderbuffer)}}});kd.prototype._bind=function(){let e=this._gl;e.bindFramebuffer(e.FRAMEBUFFER,this._framebuffer)};kd.prototype._unBind=function(){let e=this._gl;e.bindFramebuffer(e.FRAMEBUFFER,null)};kd.prototype.bindDraw=function(){let e=this._gl;e.bindFramebuffer(e.DRAW_FRAMEBUFFER,this._framebuffer)};kd.prototype.bindRead=function(){let e=this._gl;e.bindFramebuffer(e.READ_FRAMEBUFFER,this._framebuffer)};kd.prototype._getActiveColorAttachments=function(){return this._activeColorAttachments};kd.prototype.getColorTexture=function(e){return this._colorTextures[e]};kd.prototype.getColorRenderbuffer=function(e){return this._colorRenderbuffers[e]};kd.prototype.isDestroyed=function(){return!1};kd.prototype.destroy=function(){if(this.destroyAttachments){let e=this._colorTextures;for(let n=0;n<e.length;++n){let i=e[n];l(i)&&i.destroy()}let t=this._colorRenderbuffers;for(let n=0;n<t.length;++n){let i=t[n];l(i)&&i.destroy()}this._depthTexture=this._depthTexture&&this._depthTexture.destroy(),this._depthRenderbuffer=this._depthRenderbuffer&&this._depthRenderbuffer.destroy(),this._stencilRenderbuffer=this._stencilRenderbuffer&&this._stencilRenderbuffer.destroy(),this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy()}return this._gl.deleteFramebuffer(this._framebuffer),ue(this)};var as=kd;var PM={DONT_CARE:ee.DONT_CARE,FASTEST:ee.FASTEST,NICEST:ee.NICEST,validate:function(e){return e===PM.DONT_CARE||e===PM.FASTEST||e===PM.NICEST}},Ud=Object.freeze(PM);var RM={NEAREST:ee.NEAREST,LINEAR:ee.LINEAR};RM.validate=function(e){return e===RM.NEAREST||e===RM.LINEAR};var pi=Object.freeze(RM);var Eg={NEAREST:ee.NEAREST,LINEAR:ee.LINEAR,NEAREST_MIPMAP_NEAREST:ee.NEAREST_MIPMAP_NEAREST,LINEAR_MIPMAP_NEAREST:ee.LINEAR_MIPMAP_NEAREST,NEAREST_MIPMAP_LINEAR:ee.NEAREST_MIPMAP_LINEAR,LINEAR_MIPMAP_LINEAR:ee.LINEAR_MIPMAP_LINEAR};Eg.validate=function(e){return e===Eg.NEAREST||e===Eg.LINEAR||e===Eg.NEAREST_MIPMAP_NEAREST||e===Eg.LINEAR_MIPMAP_NEAREST||e===Eg.NEAREST_MIPMAP_LINEAR||e===Eg.LINEAR_MIPMAP_LINEAR};var Zt=Object.freeze(Eg);var MM={CLAMP_TO_EDGE:ee.CLAMP_TO_EDGE,REPEAT:ee.REPEAT,MIRRORED_REPEAT:ee.MIRRORED_REPEAT,validate:function(e){return e===MM.CLAMP_TO_EDGE||e===MM.REPEAT||e===MM.MIRRORED_REPEAT}},Tn=Object.freeze(MM);function iw(e){e=e??V.EMPTY_OBJECT;let{wrapR:t=Tn.CLAMP_TO_EDGE,wrapS:n=Tn.CLAMP_TO_EDGE,wrapT:i=Tn.CLAMP_TO_EDGE,minificationFilter:o=Zt.LINEAR,magnificationFilter:r=pi.LINEAR,maximumAnisotropy:s=1}=e;this._wrapR=t,this._wrapS=n,this._wrapT=i,this._minificationFilter=o,this._magnificationFilter=r,this._maximumAnisotropy=s}Object.defineProperties(iw.prototype,{wrapR:{get:function(){return this._wrapR}},wrapS:{get:function(){return this._wrapS}},wrapT:{get:function(){return this._wrapT}},minificationFilter:{get:function(){return this._minificationFilter}},magnificationFilter:{get:function(){return this._magnificationFilter}},maximumAnisotropy:{get:function(){return this._maximumAnisotropy}}});iw.equals=function(e,t){return e===t||l(e)&&l(t)&&e._wrapR===t._wrapR&&e._wrapS===t._wrapS&&e._wrapT===t._wrapT&&e._minificationFilter===t._minificationFilter&&e._magnificationFilter===t._magnificationFilter&&e._maximumAnisotropy===t._maximumAnisotropy};iw.NEAREST=Object.freeze(new iw({wrapR:Tn.CLAMP_TO_EDGE,wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.NEAREST,magnificationFilter:pi.NEAREST}));var on=iw;function Ef(e){e=e??V.EMPTY_OBJECT;let t=e.context._gl,n=e.bufferTarget,i=e.typedArray,o=e.sizeInBytes,r=e.usage,s=l(i);s&&(o=i.byteLength);let a=t.createBuffer();t.bindBuffer(n,a),t.bufferData(n,s?i:o,r),t.bindBuffer(n,null),this._id=Xn(),this._gl=t,this._webgl2=e.context._webgl2,this._bufferTarget=n,this._sizeInBytes=o,this._usage=r,this._buffer=a,this.vertexArrayDestroyable=!0}Ef.createVertexBuffer=function(e){return new Ef({context:e.context,bufferTarget:ee.ARRAY_BUFFER,typedArray:e.typedArray,sizeInBytes:e.sizeInBytes,usage:e.usage})};Ef.createIndexBuffer=function(e){let t=e.context,n=e.indexDatatype,i=Fe.getSizeInBytes(n),o=new Ef({context:t,bufferTarget:ee.ELEMENT_ARRAY_BUFFER,typedArray:e.typedArray,sizeInBytes:e.sizeInBytes,usage:e.usage}),r=o.sizeInBytes/i;return Object.defineProperties(o,{indexDatatype:{get:function(){return n}},bytesPerIndex:{get:function(){return i}},numberOfIndices:{get:function(){return r}}}),o};Object.defineProperties(Ef.prototype,{sizeInBytes:{get:function(){return this._sizeInBytes}},usage:{get:function(){return this._usage}}});Ef.prototype._getBuffer=function(){return this._buffer};Ef.prototype.copyFromArrayView=function(e,t){t=t??0;let n=this._gl,i=this._bufferTarget;n.bindBuffer(i,this._buffer),n.bufferSubData(i,t,e),n.bindBuffer(i,null)};Ef.prototype.copyFromBuffer=function(e,t,n,i){let o=ee.COPY_READ_BUFFER,r=ee.COPY_WRITE_BUFFER,s=this._gl;s.bindBuffer(r,this._buffer),s.bindBuffer(o,e._buffer),s.copyBufferSubData(o,r,t,n,i),s.bindBuffer(r,null),s.bindBuffer(o,null)};Ef.prototype.getBufferData=function(e,t,n,i){t=t??0,n=n??0;let o=this._gl,r=ee.COPY_READ_BUFFER;o.bindBuffer(r,this._buffer),o.getBufferSubData(r,t,e,n,i),o.bindBuffer(r,null)};Ef.prototype.isDestroyed=function(){return!1};Ef.prototype.destroy=function(){return this._gl.deleteBuffer(this._buffer),ue(this)};var Et=Ef;function cRe(e,t,n,i){let o=l(t.vertexBuffer),r=l(t.value),s=t.value?t.value.length:t.componentsPerAttribute,a={index:t.index??n,enabled:t.enabled??!0,vertexBuffer:t.vertexBuffer,value:r?t.value.slice(0):void 0,componentsPerAttribute:s,componentDatatype:t.componentDatatype??q.FLOAT,normalize:t.normalize??!1,offsetInBytes:t.offsetInBytes??0,strideInBytes:t.strideInBytes??0,instanceDivisor:t.instanceDivisor??0};if(o)a.vertexAttrib=function(c){let u=this.index;c.bindBuffer(c.ARRAY_BUFFER,this.vertexBuffer._getBuffer()),c.vertexAttribPointer(u,this.componentsPerAttribute,this.componentDatatype,this.normalize,this.strideInBytes,this.offsetInBytes),c.enableVertexAttribArray(u),this.instanceDivisor>0&&(i.glVertexAttribDivisor(u,this.instanceDivisor),i._vertexAttribDivisors[u]=this.instanceDivisor,i._previousDrawInstanced=!0)},a.disableVertexAttribArray=function(c){c.disableVertexAttribArray(this.index),this.instanceDivisor>0&&i.glVertexAttribDivisor(n,0)};else{switch(a.componentsPerAttribute){case 1:a.vertexAttrib=function(c){c.vertexAttrib1fv(this.index,this.value)};break;case 2:a.vertexAttrib=function(c){c.vertexAttrib2fv(this.index,this.value)};break;case 3:a.vertexAttrib=function(c){c.vertexAttrib3fv(this.index,this.value)};break;case 4:a.vertexAttrib=function(c){c.vertexAttrib4fv(this.index,this.value)};break}a.disableVertexAttribArray=function(c){}}e.push(a)}function Cte(e,t,n){for(let i=0;i<t.length;++i){let o=t[i];o.enabled&&o.vertexAttrib(e)}l(n)&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n._getBuffer())}function FA(e){e=e??V.EMPTY_OBJECT;let t=e.context,n=t._gl,i=e.attributes,o=e.indexBuffer,r,s=[],a=1,c=!1,u=!1,f=i.length;for(r=0;r<f;++r)cRe(s,i[r],r,t);for(f=s.length,r=0;r<f;++r){let A=s[r];if(l(A.vertexBuffer)&&A.instanceDivisor===0){let g=A.strideInBytes||A.componentsPerAttribute*q.getSizeInBytes(A.componentDatatype);a=A.vertexBuffer.sizeInBytes/g;break}}for(r=0;r<f;++r)s[r].instanceDivisor>0&&(c=!0),l(s[r].value)&&(u=!0);let h;t.vertexArrayObject&&(h=t.glCreateVertexArray(),t.glBindVertexArray(h),Cte(n,s,o),t.glBindVertexArray(null)),this._numberOfVertices=a,this._hasInstancedAttributes=c,this._hasConstantAttributes=u,this._context=t,this._gl=n,this._vao=h,this._attributes=s,this._indexBuffer=o}function yte(e){return e.values.length/e.componentsPerAttribute}function lRe(e){return q.getSizeInBytes(e.componentDatatype)*e.componentsPerAttribute}function uRe(e){let t,n,i,o=[];for(n in e)e.hasOwnProperty(n)&&l(e[n])&&l(e[n].values)&&(o.push(n),e[n].componentDatatype===q.DOUBLE&&(e[n].componentDatatype=q.FLOAT,e[n].values=q.createTypedArray(q.FLOAT,e[n].values)));let r,s=o.length;if(s>0)for(r=yte(e[o[0]]),t=1;t<s;++t){let u=yte(e[o[t]]);if(u!==r)throw new ce(`Each attribute list must have the same number of vertices. Attribute ${o[t]} has a different number of vertices (${u.toString()}) than attribute ${o[0]} (${r.toString()}).`)}o.sort(function(u,f){return q.getSizeInBytes(e[f].componentDatatype)-q.getSizeInBytes(e[u].componentDatatype)});let a=0,c={};for(t=0;t<s;++t)n=o[t],i=e[n],c[n]=a,a+=lRe(i);if(a>0){let u=q.getSizeInBytes(e[o[0]].componentDatatype),f=a%u;f!==0&&(a+=u-f);let h=r*a,A=new ArrayBuffer(h),g={};for(t=0;t<s;++t){n=o[t];let m=q.getSizeInBytes(e[n].componentDatatype);g[n]={pointer:q.createTypedArray(e[n].componentDatatype,A),index:c[n]/m,strideInComponentType:a/m}}for(t=0;t<r;++t)for(let m=0;m<s;++m){n=o[m],i=e[n];let _=i.values,y=g[n],C=y.pointer,E=i.componentsPerAttribute;for(let I=0;I<E;++I)C[y.index+I]=_[t*E+I];y.index+=y.strideInComponentType}return{buffer:A,offsetsInBytes:c,vertexSizeInBytes:a}}}FA.fromGeometry=function(e){e=e??V.EMPTY_OBJECT;let t=e.context,n=e.geometry??V.EMPTY_OBJECT,i=e.bufferUsage??Qe.DYNAMIC_DRAW,o=e.attributeLocations??V.EMPTY_OBJECT,r=e.interleave??!1,s=e.vertexArrayAttributes,a,c,u,f=l(s)?s:[],h=n.attributes;if(r){let m=uRe(h);if(l(m)){u=Et.createVertexBuffer({context:t,typedArray:m.buffer,usage:i});let _=m.offsetsInBytes,y=m.vertexSizeInBytes;for(a in h)h.hasOwnProperty(a)&&l(h[a])&&(c=h[a],l(c.values)?f.push({index:o[a],vertexBuffer:u,componentDatatype:c.componentDatatype,componentsPerAttribute:c.componentsPerAttribute,normalize:c.normalize,offsetInBytes:_[a],strideInBytes:y}):f.push({index:o[a],value:c.value,componentDatatype:c.componentDatatype,normalize:c.normalize}))}}else for(a in h)if(h.hasOwnProperty(a)&&l(h[a])){c=h[a];let m=c.componentDatatype;m===q.DOUBLE&&(m=q.FLOAT);let _={};u=void 0,l(c.values)&&(u=Et.createVertexBuffer({context:t,typedArray:q.createTypedArray(m,c.values),usage:i}),_={index:o[a],vertexBuffer:u,value:c.value,componentDatatype:m,componentsPerAttribute:c.componentsPerAttribute,normalize:c.normalize}),l(c.typedArray)&&(u=Et.createVertexBuffer({context:t,typedArray:c.typedArray,usage:i}),_={index:o[a],vertexBuffer:u,value:void 0,componentDatatype:m,componentsPerAttribute:Ht.getNumberOfComponents(c.type),normalize:c.normalized,instanceDivisor:c.instanceDivisor}),f.push(_)}let A,g=n.indices;return l(g)&&(ht.computeNumberOfVertices(n)>=D.SIXTY_FOUR_KILOBYTES&&t.elementIndexUint?A=Et.createIndexBuffer({context:t,typedArray:new Uint32Array(g),usage:i,indexDatatype:Fe.UNSIGNED_INT}):A=Et.createIndexBuffer({context:t,typedArray:new Uint16Array(g),usage:i,indexDatatype:Fe.UNSIGNED_SHORT})),new FA({context:t,attributes:f,indexBuffer:A})};Object.defineProperties(FA.prototype,{numberOfAttributes:{get:function(){return this._attributes.length}},numberOfVertices:{get:function(){return this._numberOfVertices}},indexBuffer:{get:function(){return this._indexBuffer}}});FA.prototype.getAttribute=function(e){return this._attributes[e]};function fRe(e){let t=e._context,n=e._hasInstancedAttributes;if(!n&&!t._previousDrawInstanced)return;t._previousDrawInstanced=n;let i=t._vertexAttribDivisors,o=e._attributes,r=qt.maximumVertexAttributes,s;if(n){let a=o.length;for(s=0;s<a;++s){let c=o[s];if(c.enabled){let u=c.instanceDivisor,f=c.index;u!==i[f]&&(t.glVertexAttribDivisor(f,u),i[f]=u)}}}else for(s=0;s<r;++s)i[s]>0&&(t.glVertexAttribDivisor(s,0),i[s]=0)}function dRe(e,t){let n=e._attributes,i=n.length;for(let o=0;o<i;++o){let r=n[o];r.enabled&&l(r.value)&&r.vertexAttrib(t)}}FA.prototype._bind=function(){l(this._vao)?(this._context.glBindVertexArray(this._vao),this._context.instancedArrays&&fRe(this),this._hasConstantAttributes&&dRe(this,this._gl)):Cte(this._gl,this._attributes,this._indexBuffer)};FA.prototype._unBind=function(){if(l(this._vao))this._context.glBindVertexArray(null);else{let e=this._attributes,t=this._gl;for(let n=0;n<e.length;++n){let i=e[n];i.enabled&&i.disableVertexAttribArray(t)}this._indexBuffer&&t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,null)}};FA.prototype.isDestroyed=function(){return!1};FA.prototype.destroy=function(){let e=this._attributes;for(let n=0;n<e.length;++n){let i=e[n].vertexBuffer;l(i)&&!i.isDestroyed()&&i.vertexArrayDestroyable&&i.destroy()}let t=this._indexBuffer;return l(t)&&!t.isDestroyed()&&t.vertexArrayDestroyable&&t.destroy(),l(this._vao)&&this._context.glDeleteVertexArray(this._vao),ue(this)};var li=FA;function ir(e){e=e??V.EMPTY_OBJECT;let{context:t,source:n,pixelFormat:i=et.RGBA,pixelDatatype:o=He.UNSIGNED_BYTE,flipY:r=!0,skipColorSpaceConversion:s=!1,sampler:a=new on}=e,c=e.preMultiplyAlpha||i===et.RGB||i===et.LUMINANCE,{width:u,height:f}=e;l(n)&&({width:u,height:f}=n.positiveX);let h=u,A=et.textureSizeInBytes(i,o,h,h)*6,g=et.toInternalFormat(i,o,t),m=t._gl,_=m.TEXTURE_CUBE_MAP,y=m.createTexture();this._context=t,this._textureFilterAnisotropic=t._textureFilterAnisotropic,this._textureTarget=_,this._texture=y,this._pixelFormat=i,this._pixelDatatype=o,this._size=h,this._hasMipmap=!1,this._sizeInBytes=A,this._preMultiplyAlpha=c,this._flipY=r;let C=l(n);function E(I){return new DM(t,y,_,I,g,i,o,h,c,r,C)}this._positiveX=E(m.TEXTURE_CUBE_MAP_POSITIVE_X),this._negativeX=E(m.TEXTURE_CUBE_MAP_NEGATIVE_X),this._positiveY=E(m.TEXTURE_CUBE_MAP_POSITIVE_Y),this._negativeY=E(m.TEXTURE_CUBE_MAP_NEGATIVE_Y),this._positiveZ=E(m.TEXTURE_CUBE_MAP_POSITIVE_Z),this._negativeZ=E(m.TEXTURE_CUBE_MAP_NEGATIVE_Z),this._sampler=a,Ete(this,a),m.activeTexture(m.TEXTURE0),m.bindTexture(_,y),s?m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.NONE):m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.BROWSER_DEFAULT_WEBGL);for(let I of ir.faceNames())i6(this[I],n?.[I],0);m.bindTexture(_,null)}ir.prototype.copyFace=function(e,t,n,i){let o=e.context,r=new as({context:o,colorTextures:[t],destroyAttachments:!1});r._bind(),this[n].copyMipmapFromFramebuffer(0,0,t.width,t.height,i??0),r._unBind(),r.destroy()};ir.FaceName=Object.freeze({POSITIVEX:"positiveX",NEGATIVEX:"negativeX",POSITIVEY:"positiveY",NEGATIVEY:"negativeY",POSITIVEZ:"positiveZ",NEGATIVEZ:"negativeZ"});function*hRe(){yield ir.FaceName.POSITIVEX,yield ir.FaceName.NEGATIVEX,yield ir.FaceName.POSITIVEY,yield ir.FaceName.NEGATIVEY,yield ir.FaceName.POSITIVEZ,yield ir.FaceName.NEGATIVEZ}ir.faceNames=function(){return hRe()};function i6(e,t,n){n=n??0;let i=e._targetFace,o=Math.max(Math.floor(e._size/2**n),1),r=e._pixelFormat,s=e._pixelDatatype,a=e._internalFormat,c=e._flipY,u=e._preMultiplyAlpha,f=e._context,h=f._gl;if(!l(t)){h.texImage2D(i,n,a,o,o,0,r,He.toWebGLConstant(s,f),null);return}let{arrayBufferView:A}=t,g=4;l(A)&&(g=et.alignmentInBytes(r,s,o)),h.pixelStorei(h.UNPACK_ALIGNMENT,g),l(A)?(h.pixelStorei(h.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),h.pixelStorei(h.UNPACK_FLIP_Y_WEBGL,!1),c&&(A=et.flipY(A,r,s,o,o)),h.texImage2D(i,n,a,o,o,0,r,He.toWebGLConstant(s,f),A)):(h.pixelStorei(h.UNPACK_PREMULTIPLY_ALPHA_WEBGL,u),h.pixelStorei(h.UNPACK_FLIP_Y_WEBGL,c),h.texImage2D(i,n,a,r,He.toWebGLConstant(s,f),t))}ir.loadFace=i6;Object.defineProperties(ir.prototype,{positiveX:{get:function(){return this._positiveX}},negativeX:{get:function(){return this._negativeX}},positiveY:{get:function(){return this._positiveY}},negativeY:{get:function(){return this._negativeY}},positiveZ:{get:function(){return this._positiveZ}},negativeZ:{get:function(){return this._negativeZ}},sampler:{get:function(){return this._sampler},set:function(e){Ete(this,e),this._sampler=e}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},width:{get:function(){return this._size}},height:{get:function(){return this._size}},sizeInBytes:{get:function(){return this._hasMipmap?Math.floor(this._sizeInBytes*4/3):this._sizeInBytes}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},_target:{get:function(){return this._textureTarget}}});ir.getDirection=function(e,t){switch(e){case ir.FaceName.POSITIVEX:return d.clone(d.UNIT_X,t);case ir.FaceName.NEGATIVEX:return d.negate(d.UNIT_X,t);case ir.FaceName.POSITIVEY:return d.clone(d.UNIT_Y,t);case ir.FaceName.NEGATIVEY:return d.negate(d.UNIT_Y,t);case ir.FaceName.POSITIVEZ:return d.clone(d.UNIT_Z,t);case ir.FaceName.NEGATIVEZ:return d.negate(d.UNIT_Z,t)}};function Ete(e,t){let{minificationFilter:n,magnificationFilter:i}=t,o=[Zt.NEAREST_MIPMAP_NEAREST,Zt.NEAREST_MIPMAP_LINEAR,Zt.LINEAR_MIPMAP_NEAREST,Zt.LINEAR_MIPMAP_LINEAR].includes(n),r=e._context,s=e._pixelDatatype;(s===He.FLOAT&&!r.textureFloatLinear||s===He.HALF_FLOAT&&!r.textureHalfFloatLinear)&&(n=o?Zt.NEAREST_MIPMAP_NEAREST:Zt.NEAREST,i=pi.NEAREST);let a=r._gl,c=e._textureTarget;a.activeTexture(a.TEXTURE0),a.bindTexture(c,e._texture),a.texParameteri(c,a.TEXTURE_MIN_FILTER,n),a.texParameteri(c,a.TEXTURE_MAG_FILTER,i),a.texParameteri(c,a.TEXTURE_WRAP_S,t.wrapS),a.texParameteri(c,a.TEXTURE_WRAP_T,t.wrapT),l(e._textureFilterAnisotropic)&&a.texParameteri(c,e._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.maximumAnisotropy),a.bindTexture(c,null)}ir.prototype.loadMipmaps=function(e,t){t=t??!1;let n=this._context._gl,i=this._texture,o=this._textureTarget;n.activeTexture(n.TEXTURE0),n.bindTexture(o,i),t?n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,n.NONE):n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,n.BROWSER_DEFAULT_WEBGL);for(let r=0;r<e.length;r++){let s=e[r],a=r+1;for(let c of ir.faceNames())i6(this[c],s[c],a)}n.bindTexture(o,null),this._hasMipmap=!0};ir.prototype.generateMipmap=function(e){e=e??Ud.DONT_CARE,this._hasMipmap=!0;let t=this._context._gl,n=this._textureTarget;t.hint(t.GENERATE_MIPMAP_HINT,e),t.activeTexture(t.TEXTURE0),t.bindTexture(n,this._texture),t.generateMipmap(n),t.bindTexture(n,null)};ir.createVertexArray=function(e){let t=yc.createGeometry(yc.fromDimensions({dimensions:new d(2,2,2),vertexFormat:Pe.POSITION_ONLY})),n=this._attributeLocations=jn.createAttributeLocations(t);return li.fromGeometry({context:e,geometry:t,attributeLocations:n,bufferUsage:Qe.STATIC_DRAW})};ir.prototype.isDestroyed=function(){return!1};ir.prototype.destroy=function(){return this._context._gl.deleteTexture(this._texture),this._positiveX=ue(this._positiveX),this._negativeX=ue(this._negativeX),this._positiveY=ue(this._positiveY),this._negativeY=ue(this._negativeY),this._positiveZ=ue(this._positiveZ),this._negativeZ=ue(this._negativeZ),ue(this)};var jr=ir;function Gd(e){e=e??V.EMPTY_OBJECT;let{context:t,source:n,pixelFormat:i=et.RGBA,pixelDatatype:o=He.UNSIGNED_BYTE,flipY:r=!0,skipColorSpaceConversion:s=!1,sampler:a=new on}=e,{width:c,height:u}=e;l(n)&&(l(c)||(c=n.videoWidth??n.naturalWidth??n.width),l(u)||(u=n.videoHeight??n.naturalHeight??n.height));let f=e.preMultiplyAlpha||i===et.RGB||i===et.LUMINANCE,h=et.toInternalFormat(i,o,t),A=et.isCompressedFormat(h),g=t._gl,m=A?et.compressedTextureSizeInBytes(i,c,u):et.textureSizeInBytes(i,o,c,u);this._id=e.id??Xn(),this._context=t,this._textureFilterAnisotropic=t._textureFilterAnisotropic,this._textureTarget=g.TEXTURE_2D,this._texture=g.createTexture(),this._internalFormat=h,this._pixelFormat=i,this._pixelDatatype=o,this._width=c,this._height=u,this._dimensions=new k(c,u),this._hasMipmap=!1,this._sizeInBytes=m,this._preMultiplyAlpha=f,this._flipY=r,this._initialized=!1,this._sampler=void 0,this._sampler=a,Tte(this,a),g.activeTexture(g.TEXTURE0),g.bindTexture(this._textureTarget,this._texture),l(n)?(s?g.pixelStorei(g.UNPACK_COLORSPACE_CONVERSION_WEBGL,g.NONE):g.pixelStorei(g.UNPACK_COLORSPACE_CONVERSION_WEBGL,g.BROWSER_DEFAULT_WEBGL),l(n.arrayBufferView)?et.isCompressedFormat(h)?mRe(this,n):Ite(this,n):l(n.framebuffer)?pRe(this,n):xte(this,n),this._initialized=!0):bte(this),g.bindTexture(this._textureTarget,null)}function mRe(e,t){let i=e._context._gl,o=e._textureTarget,r=e._internalFormat,{width:s,height:a}=e;if(i.pixelStorei(i.UNPACK_ALIGNMENT,4),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1),i.compressedTexImage2D(o,0,r,s,a,0,t.arrayBufferView),l(t.mipLevels)){let c=s,u=a;for(let f=0;f<t.mipLevels.length;++f)c=NM(c),u=NM(u),i.compressedTexImage2D(o,f+1,r,c,u,0,t.mipLevels[f])}}function Ite(e,t){let n=e._context,i=n._gl,o=e._textureTarget,r=e._internalFormat,{width:s,height:a,pixelFormat:c,pixelDatatype:u,flipY:f}=e,h=et.alignmentInBytes(c,u,s);i.pixelStorei(i.UNPACK_ALIGNMENT,h),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1);let{arrayBufferView:A}=t;if(f&&(A=et.flipY(A,c,u,s,a)),i.texImage2D(o,0,r,s,a,0,c,He.toWebGLConstant(u,n),A),l(t.mipLevels)){let g=s,m=a;for(let _=0;_<t.mipLevels.length;++_)g=NM(g),m=NM(m),i.texImage2D(o,_+1,r,g,m,0,c,He.toWebGLConstant(u,n),t.mipLevels[_])}}function ARe(e,t,n,i,o,r){let s=e._context,a=s._gl,{pixelFormat:c,pixelDatatype:u}=e,f=et.alignmentInBytes(c,u,o);a.pixelStorei(a.UNPACK_ALIGNMENT,f),a.pixelStorei(a.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),a.pixelStorei(a.UNPACK_FLIP_Y_WEBGL,!1),e.flipY&&(t=et.flipY(t,c,u,o,r)),a.texSubImage2D(e._textureTarget,0,n,i,o,r,c,He.toWebGLConstant(u,s),t)}function pRe(e,t){let n=e._context,i=n._gl;i.pixelStorei(i.UNPACK_ALIGNMENT,4),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1),t.framebuffer!==n.defaultFramebuffer&&t.framebuffer._bind(),i.copyTexImage2D(e._textureTarget,0,e._internalFormat,t.xOffset,t.yOffset,e.width,e.height,0),t.framebuffer!==n.defaultFramebuffer&&t.framebuffer._unBind()}function xte(e,t){let n=e._context,i=n._gl;i.pixelStorei(i.UNPACK_ALIGNMENT,4),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.preMultiplyAlpha),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,e.flipY),i.texImage2D(e._textureTarget,0,e._internalFormat,e.pixelFormat,He.toWebGLConstant(e.pixelDatatype,n),t)}function gRe(e,t,n,i){let o=e._context,r=o._gl;r.pixelStorei(r.UNPACK_ALIGNMENT,4),r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL,e.preMultiplyAlpha),r.pixelStorei(r.UNPACK_FLIP_Y_WEBGL,e.flipY),r.texSubImage2D(e._textureTarget,0,n,i,e.pixelFormat,He.toWebGLConstant(e.pixelDatatype,o),t)}function NM(e){let t=Math.floor(e/2)|0;return Math.max(t,1)}function bte(e){let t=e._context;t._gl.texImage2D(e._textureTarget,0,e._internalFormat,e._width,e._height,0,e._pixelFormat,He.toWebGLConstant(e._pixelDatatype,t),null)}Gd.create=function(e){return new Gd(e)};Gd.fromFramebuffer=function(e){e=e??V.EMPTY_OBJECT;let t=e.context,{pixelFormat:n=et.RGB,framebufferXOffset:i=0,framebufferYOffset:o=0,width:r=t.drawingBufferWidth,height:s=t.drawingBufferHeight,framebuffer:a}=e;return new Gd({context:t,width:r,height:s,pixelFormat:n,source:{framebuffer:l(a)?a:t.defaultFramebuffer,xOffset:i,yOffset:o,width:r,height:s}})};Object.defineProperties(Gd.prototype,{id:{get:function(){return this._id}},sampler:{get:function(){return this._sampler},set:function(e){Tte(this,e),this._sampler=e}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},dimensions:{get:function(){return this._dimensions}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},width:{get:function(){return this._width}},height:{get:function(){return this._height}},sizeInBytes:{get:function(){return this._hasMipmap?Math.floor(this._sizeInBytes*4/3):this._sizeInBytes}},_target:{get:function(){return this._textureTarget}}});function Tte(e,t){let{minificationFilter:n,magnificationFilter:i}=t,o=[Zt.NEAREST_MIPMAP_NEAREST,Zt.NEAREST_MIPMAP_LINEAR,Zt.LINEAR_MIPMAP_NEAREST,Zt.LINEAR_MIPMAP_LINEAR].includes(n),r=e._context,s=e._pixelFormat,a=e._pixelDatatype;(a===He.FLOAT&&!r.textureFloatLinear||a===He.HALF_FLOAT&&!r.textureHalfFloatLinear)&&(n=o?Zt.NEAREST_MIPMAP_NEAREST:Zt.NEAREST,i=pi.NEAREST),r.webgl2&&et.isDepthFormat(s)&&(n=Zt.NEAREST,i=pi.NEAREST);let c=r._gl,u=e._textureTarget;c.activeTexture(c.TEXTURE0),c.bindTexture(u,e._texture),c.texParameteri(u,c.TEXTURE_MIN_FILTER,n),c.texParameteri(u,c.TEXTURE_MAG_FILTER,i),c.texParameteri(u,c.TEXTURE_WRAP_S,t.wrapS),c.texParameteri(u,c.TEXTURE_WRAP_T,t.wrapT),l(e._textureFilterAnisotropic)&&c.texParameteri(u,e._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.maximumAnisotropy),c.bindTexture(u,null)}Gd.prototype.copyFrom=function(e){let{xOffset:t=0,yOffset:n=0,source:i,skipColorSpaceConversion:o=!1}=e,s=this._context._gl,a=this._textureTarget;s.activeTexture(s.TEXTURE0),s.bindTexture(a,this._texture);let{width:c,height:u}=i;l(i.videoWidth)&&l(i.videoHeight)?(c=i.videoWidth,u=i.videoHeight):l(i.naturalWidth)&&l(i.naturalHeight)&&(c=i.naturalWidth,u=i.naturalHeight),o?s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,s.NONE):s.pixelStorei(s.UNPACK_COLORSPACE_CONVERSION_WEBGL,s.BROWSER_DEFAULT_WEBGL);let f=!1;this._initialized||(t===0&&n===0&&c===this._width&&u===this._height?(l(i.arrayBufferView)?Ite(this,i):xte(this,i),f=!0):(s.pixelStorei(s.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),s.pixelStorei(s.UNPACK_FLIP_Y_WEBGL,!1),bte(this)),this._initialized=!0),f||(l(i.arrayBufferView)?ARe(this,i.arrayBufferView,t,n,c,u):gRe(this,i,t,n)),s.bindTexture(a,null)};Gd.prototype.copyFromFramebuffer=function(e,t,n,i,o,r){e=e??0,t=t??0,n=n??0,i=i??0,o=o??this._width,r=r??this._height;let s=this._context._gl,a=this._textureTarget;s.activeTexture(s.TEXTURE0),s.bindTexture(a,this._texture),s.copyTexSubImage2D(a,0,e,t,n,i,o,r),s.bindTexture(a,null),this._initialized=!0};Gd.prototype.generateMipmap=function(e){e=e??Ud.DONT_CARE,this._hasMipmap=!0;let t=this._context._gl,n=this._textureTarget;t.hint(t.GENERATE_MIPMAP_HINT,e),t.activeTexture(t.TEXTURE0),t.bindTexture(n,this._texture),t.generateMipmap(n),t.bindTexture(n,null)};Gd.prototype.isDestroyed=function(){return!1};Gd.prototype.destroy=function(){return this._context._gl.deleteTexture(this._texture),ue(this)};var Nt=Gd;var LM=`uniform sampler2D image; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + vec4 rampColor = texture(image, vec2(materialInput.aspect / (2.0 * czm_pi), 0.5)); + rampColor = czm_gammaCorrect(rampColor); + material.diffuse = rampColor.rgb; + material.alpha = rampColor.a; + return material; +} +`;var OM=`uniform sampler2D image; +uniform float strength; +uniform vec2 repeat; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + + vec2 centerPixel = fract(repeat * st); + float centerBump = texture(image, centerPixel).channel; + + float imageWidth = float(imageDimensions.x); + vec2 rightPixel = fract(repeat * (st + vec2(1.0 / imageWidth, 0.0))); + float rightBump = texture(image, rightPixel).channel; + + float imageHeight = float(imageDimensions.y); + vec2 leftPixel = fract(repeat * (st + vec2(0.0, 1.0 / imageHeight))); + float topBump = texture(image, leftPixel).channel; + + vec3 normalTangentSpace = normalize(vec3(centerBump - rightBump, centerBump - topBump, clamp(1.0 - strength, 0.1, 1.0))); + vec3 normalEC = materialInput.tangentToEyeMatrix * normalTangentSpace; + + material.normal = normalEC; + material.diffuse = vec3(0.01); + + return material; +} +`;var FM=`uniform vec4 lightColor; +uniform vec4 darkColor; +uniform vec2 repeat; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + + // From Stefan Gustavson's Procedural Textures in GLSL in OpenGL Insights + float b = mod(floor(repeat.s * st.s) + floor(repeat.t * st.t), 2.0); // 0.0 or 1.0 + + // Find the distance from the closest separator (region between two colors) + float scaledWidth = fract(repeat.s * st.s); + scaledWidth = abs(scaledWidth - floor(scaledWidth + 0.5)); + float scaledHeight = fract(repeat.t * st.t); + scaledHeight = abs(scaledHeight - floor(scaledHeight + 0.5)); + float value = min(scaledWidth, scaledHeight); + + vec4 currentColor = mix(lightColor, darkColor, b); + vec4 color = czm_antialias(lightColor, darkColor, currentColor, value, 0.03); + + color = czm_gammaCorrect(color); + material.diffuse = color.rgb; + material.alpha = color.a; + + return material; +} +`;var QM=`uniform vec4 lightColor; +uniform vec4 darkColor; +uniform vec2 repeat; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + // From Stefan Gustavson's Procedural Textures in GLSL in OpenGL Insights + float b = smoothstep(0.3, 0.32, length(fract(repeat * materialInput.st) - 0.5)); // 0.0 or 1.0 + + vec4 color = mix(lightColor, darkColor, b); + color = czm_gammaCorrect(color); + material.diffuse = color.rgb; + material.alpha = color.a; + + return material; +} +`;var kM=`uniform sampler2D heights; +uniform sampler2D colors; + +// This material expects heights to be sorted from lowest to highest. + +float getHeight(int idx, float invTexSize) +{ + vec2 uv = vec2((float(idx) + 0.5) * invTexSize, 0.5); +#ifdef OES_texture_float + return texture(heights, uv).x; +#else + return czm_unpackFloat(texture(heights, uv)); +#endif +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + float height = materialInput.height; + float invTexSize = 1.0 / float(heightsDimensions.x); + + float minHeight = getHeight(0, invTexSize); + float maxHeight = getHeight(heightsDimensions.x - 1, invTexSize); + + // early-out when outside the height range + if (height < minHeight || height > maxHeight) { + material.diffuse = vec3(0.0); + material.alpha = 0.0; + return material; + } + + // Binary search to find heights above and below. + int idxBelow = 0; + int idxAbove = heightsDimensions.x; + float heightBelow = minHeight; + float heightAbove = maxHeight; + + // while loop not allowed, so use for loop with max iterations. + // maxIterations of 16 supports a texture size up to 65536 (2^16). + const int maxIterations = 16; + for (int i = 0; i < maxIterations; i++) { + if (idxBelow >= idxAbove - 1) { + break; + } + + int idxMid = (idxBelow + idxAbove) / 2; + float heightTex = getHeight(idxMid, invTexSize); + + if (height > heightTex) { + idxBelow = idxMid; + heightBelow = heightTex; + } else { + idxAbove = idxMid; + heightAbove = heightTex; + } + } + + float lerper = heightBelow == heightAbove ? 1.0 : (height - heightBelow) / (heightAbove - heightBelow); + vec2 colorUv = vec2(invTexSize * (float(idxBelow) + 0.5 + lerper), 0.5); + vec4 color = texture(colors, colorUv); + + // undo preumultiplied alpha + if (color.a > 0.0) + { + color.rgb /= color.a; + } + + color.rgb = czm_gammaCorrect(color.rgb); + + material.diffuse = color.rgb; + material.alpha = color.a; + return material; +} +`;var UM=`uniform vec4 color; +uniform float spacing; +uniform float width; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + float distanceToContour = mod(materialInput.height, spacing); + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + float dxc = abs(dFdx(materialInput.height)); + float dyc = abs(dFdy(materialInput.height)); + float dF = max(dxc, dyc) * czm_pixelRatio * width; + float alpha = (distanceToContour < dF) ? 1.0 : 0.0; +#else + // If no derivatives available (IE 10?), use pixel ratio + float alpha = (distanceToContour < (czm_pixelRatio * width)) ? 1.0 : 0.0; +#endif + + vec4 outColor = czm_gammaCorrect(vec4(color.rgb, alpha * color.a)); + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + + return material; +} +`;var GM=`uniform sampler2D image; +uniform float minimumHeight; +uniform float maximumHeight; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + float scaledHeight = clamp((materialInput.height - minimumHeight) / (maximumHeight - minimumHeight), 0.0, 1.0); + vec4 rampColor = texture(image, vec2(scaledHeight, 0.5)); + rampColor = czm_gammaCorrect(rampColor); + material.diffuse = rampColor.rgb; + material.alpha = rampColor.a; + return material; +} +`;var zM=`uniform vec4 fadeInColor; +uniform vec4 fadeOutColor; +uniform float maximumDistance; +uniform bool repeat; +uniform vec2 fadeDirection; +uniform vec2 time; + +float getTime(float t, float coord) +{ + float scalar = 1.0 / maximumDistance; + float q = distance(t, coord) * scalar; + if (repeat) + { + float r = distance(t, coord + 1.0) * scalar; + float s = distance(t, coord - 1.0) * scalar; + q = min(min(r, s), q); + } + return clamp(q, 0.0, 1.0); +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + float s = getTime(time.x, st.s) * fadeDirection.s; + float t = getTime(time.y, st.t) * fadeDirection.t; + + float u = length(vec2(s, t)); + vec4 color = mix(fadeInColor, fadeOutColor, u); + + color = czm_gammaCorrect(color); + material.emission = color.rgb; + material.alpha = color.a; + + return material; +} +`;var VM=`uniform vec4 color; +uniform float cellAlpha; +uniform vec2 lineCount; +uniform vec2 lineThickness; +uniform vec2 lineOffset; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + + float scaledWidth = fract(lineCount.s * st.s - lineOffset.s); + scaledWidth = abs(scaledWidth - floor(scaledWidth + 0.5)); + float scaledHeight = fract(lineCount.t * st.t - lineOffset.t); + scaledHeight = abs(scaledHeight - floor(scaledHeight + 0.5)); + + float value; + + // Fuzz Factor - Controls blurriness of lines +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + const float fuzz = 1.2; + vec2 thickness = (lineThickness * czm_pixelRatio) - 1.0; + + // From "3D Engine Design for Virtual Globes" by Cozzi and Ring, Listing 4.13. + vec2 dx = abs(dFdx(st)); + vec2 dy = abs(dFdy(st)); + vec2 dF = vec2(max(dx.s, dy.s), max(dx.t, dy.t)) * lineCount; + value = min( + smoothstep(dF.s * thickness.s, dF.s * (fuzz + thickness.s), scaledWidth), + smoothstep(dF.t * thickness.t, dF.t * (fuzz + thickness.t), scaledHeight)); +#else + // If no derivatives available (IE 10?), revert to view-dependent fuzz + const float fuzz = 0.05; + + vec2 range = 0.5 - (lineThickness * 0.05); + value = min( + 1.0 - smoothstep(range.s, range.s + fuzz, scaledWidth), + 1.0 - smoothstep(range.t, range.t + fuzz, scaledHeight)); +#endif + + // Edges taken from RimLightingMaterial.glsl + // See http://www.fundza.com/rman_shaders/surface/fake_rim/fake_rim1.html + float dRim = 1.0 - abs(dot(materialInput.normalEC, normalize(materialInput.positionToEyeEC))); + float sRim = smoothstep(0.8, 1.0, dRim); + value *= (1.0 - sRim); + + vec4 halfColor; + halfColor.rgb = color.rgb * 0.5; + halfColor.a = color.a * (1.0 - ((1.0 - cellAlpha) * value)); + halfColor = czm_gammaCorrect(halfColor); + material.diffuse = halfColor.rgb; + material.emission = halfColor.rgb; + material.alpha = halfColor.a; + + return material; +} +`;var HM=`uniform sampler2D image; +uniform float strength; +uniform vec2 repeat; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec4 textureValue = texture(image, fract(repeat * materialInput.st)); + vec3 normalTangentSpace = textureValue.channels; + normalTangentSpace.xy = normalTangentSpace.xy * 2.0 - 1.0; + normalTangentSpace.z = clamp(1.0 - strength, 0.1, 1.0); + normalTangentSpace = normalize(normalTangentSpace); + vec3 normalEC = materialInput.tangentToEyeMatrix * normalTangentSpace; + + material.normal = normalEC; + + return material; +} +`;var WM=`uniform vec4 color; + +float getPointOnLine(vec2 p0, vec2 p1, float x) +{ + float slope = (p0.y - p1.y) / (p0.x - p1.x); + return slope * (x - p0.x) + p0.y; +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + float base = 1.0 - abs(fwidth(st.s)) * 10.0 * czm_pixelRatio; +#else + // If no derivatives available (IE 10?), 2.5% of the line will be the arrow head + float base = 0.975; +#endif + + vec2 center = vec2(1.0, 0.5); + float ptOnUpperLine = getPointOnLine(vec2(base, 1.0), center, st.s); + float ptOnLowerLine = getPointOnLine(vec2(base, 0.0), center, st.s); + + float halfWidth = 0.15; + float s = step(0.5 - halfWidth, st.t); + s *= 1.0 - step(0.5 + halfWidth, st.t); + s *= 1.0 - step(base, st.s); + + float t = step(base, materialInput.st.s); + t *= 1.0 - step(ptOnUpperLine, st.t); + t *= step(ptOnLowerLine, st.t); + + // Find the distance from the closest separator (region between two colors) + float dist; + if (st.s < base) + { + float d1 = abs(st.t - (0.5 - halfWidth)); + float d2 = abs(st.t - (0.5 + halfWidth)); + dist = min(d1, d2); + } + else + { + float d1 = czm_infinity; + if (st.t < 0.5 - halfWidth && st.t > 0.5 + halfWidth) + { + d1 = abs(st.s - base); + } + float d2 = abs(st.t - ptOnUpperLine); + float d3 = abs(st.t - ptOnLowerLine); + dist = min(min(d1, d2), d3); + } + + vec4 outsideColor = vec4(0.0); + vec4 currentColor = mix(outsideColor, color, clamp(s + t, 0.0, 1.0)); + vec4 outColor = czm_antialias(outsideColor, color, currentColor, dist); + + outColor = czm_gammaCorrect(outColor); + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + return material; +} +`;var jM=`uniform vec4 color; +uniform vec4 gapColor; +uniform float dashLength; +uniform float dashPattern; +in float v_polylineAngle; + +const float maskLength = 16.0; + +mat2 rotate(float rad) { + float c = cos(rad); + float s = sin(rad); + return mat2( + c, s, + -s, c + ); +} + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 pos = rotate(v_polylineAngle) * gl_FragCoord.xy; + + // Get the relative position within the dash from 0 to 1 + float dashPosition = fract(pos.x / (dashLength * czm_pixelRatio)); + // Figure out the mask index. + float maskIndex = floor(dashPosition * maskLength); + // Test the bit mask. + float maskTest = floor(dashPattern / pow(2.0, maskIndex)); + vec4 fragColor = (mod(maskTest, 2.0) < 1.0) ? gapColor : color; + if (fragColor.a < 0.005) { // matches 0/255 and 1/255 + discard; + } + + fragColor = czm_gammaCorrect(fragColor); + material.emission = fragColor.rgb; + material.alpha = fragColor.a; + return material; +} +`;var YM=`uniform vec4 color; +uniform float glowPower; +uniform float taperPower; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + float glow = glowPower / abs(st.t - 0.5) - (glowPower / 0.5); + + if (taperPower <= 0.99999) { + glow *= min(1.0, taperPower / (0.5 - st.s * 0.5) - (taperPower / 0.5)); + } + + vec4 fragColor; + fragColor.rgb = max(vec3(glow - 1.0 + color.rgb), color.rgb); + fragColor.a = clamp(0.0, 1.0, glow) * color.a; + fragColor = czm_gammaCorrect(fragColor); + + material.emission = fragColor.rgb; + material.alpha = fragColor.a; + + return material; +} +`;var qM=`uniform vec4 color; +uniform vec4 outlineColor; +uniform float outlineWidth; + +in float v_width; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec2 st = materialInput.st; + float halfInteriorWidth = 0.5 * (v_width - outlineWidth) / v_width; + float b = step(0.5 - halfInteriorWidth, st.t); + b *= 1.0 - step(0.5 + halfInteriorWidth, st.t); + + // Find the distance from the closest separator (region between two colors) + float d1 = abs(st.t - (0.5 - halfInteriorWidth)); + float d2 = abs(st.t - (0.5 + halfInteriorWidth)); + float dist = min(d1, d2); + + vec4 currentColor = mix(outlineColor, color, b); + vec4 outColor = czm_antialias(outlineColor, color, currentColor, dist); + outColor = czm_gammaCorrect(outColor); + + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + + return material; +} +`;var KM=`uniform vec4 color; +uniform vec4 rimColor; +uniform float width; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + // See http://www.fundza.com/rman_shaders/surface/fake_rim/fake_rim1.html + float d = 1.0 - dot(materialInput.normalEC, normalize(materialInput.positionToEyeEC)); + float s = smoothstep(1.0 - width, 1.0, d); + + vec4 outColor = czm_gammaCorrect(color); + vec4 outRimColor = czm_gammaCorrect(rimColor); + + material.diffuse = outColor.rgb; + material.emission = outRimColor.rgb * s; + material.alpha = mix(outColor.a, outRimColor.a, s); + + return material; +} +`;var XM=`uniform sampler2D image; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + vec4 rampColor = texture(image, vec2(materialInput.slope / (czm_pi / 2.0), 0.5)); + rampColor = czm_gammaCorrect(rampColor); + material.diffuse = rampColor.rgb; + material.alpha = rampColor.a; + return material; +} +`;var JM=`uniform vec4 evenColor; +uniform vec4 oddColor; +uniform float offset; +uniform float repeat; +uniform bool horizontal; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + // Based on the Stripes Fragment Shader in the Orange Book (11.1.2) + float coord = mix(materialInput.st.s, materialInput.st.t, float(horizontal)); + float value = fract((coord - offset) * (repeat * 0.5)); + float dist = min(value, min(abs(value - 0.5), 1.0 - value)); + + vec4 currentColor = mix(evenColor, oddColor, step(0.5, value)); + vec4 color = czm_antialias(evenColor, oddColor, currentColor, dist); + color = czm_gammaCorrect(color); + + material.diffuse = color.rgb; + material.alpha = color.a; + + return material; +} +`;var ZM=`uniform vec4 waterColor; +uniform vec4 landColor; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + vec4 outColor = mix(landColor, waterColor, materialInput.waterMask); + outColor = czm_gammaCorrect(outColor); + + material.diffuse = outColor.rgb; + material.alpha = outColor.a; + + return material; +} +`;var $M=`// Thanks for the contribution Jonas +// http://29a.ch/2012/7/19/webgl-terrain-rendering-water-fog + +uniform sampler2D specularMap; +uniform sampler2D normalMap; +uniform vec4 baseWaterColor; +uniform vec4 blendColor; +uniform float frequency; +uniform float animationSpeed; +uniform float amplitude; +uniform float specularIntensity; +uniform float fadeFactor; + +czm_material czm_getMaterial(czm_materialInput materialInput) +{ + czm_material material = czm_getDefaultMaterial(materialInput); + + float time = czm_frameNumber * animationSpeed; + + // fade is a function of the distance from the fragment and the frequency of the waves + float fade = max(1.0, (length(materialInput.positionToEyeEC) / 10000000000.0) * frequency * fadeFactor); + + float specularMapValue = texture(specularMap, materialInput.st).r; + + // note: not using directional motion at this time, just set the angle to 0.0; + vec4 noise = czm_getWaterNoise(normalMap, materialInput.st * frequency, time, 0.0); + vec3 normalTangentSpace = noise.xyz * vec3(1.0, 1.0, (1.0 / amplitude)); + + // fade out the normal perturbation as we move further from the water surface + normalTangentSpace.xy /= fade; + + // attempt to fade out the normal perturbation as we approach non water areas (low specular map value) + normalTangentSpace = mix(vec3(0.0, 0.0, 50.0), normalTangentSpace, specularMapValue); + + normalTangentSpace = normalize(normalTangentSpace); + + // get ratios for alignment of the new normal vector with a vector perpendicular to the tangent plane + float tsPerturbationRatio = clamp(dot(normalTangentSpace, vec3(0.0, 0.0, 1.0)), 0.0, 1.0); + + // fade out water effect as specular map value decreases + material.alpha = mix(blendColor.a, baseWaterColor.a, specularMapValue) * specularMapValue; + + // base color is a blend of the water and non-water color based on the value from the specular map + // may need a uniform blend factor to better control this + material.diffuse = mix(blendColor.rgb, baseWaterColor.rgb, specularMapValue); + + // diffuse highlights are based on how perturbed the normal is + material.diffuse += (0.1 * tsPerturbationRatio); + + material.diffuse = material.diffuse; + + material.normal = normalize(materialInput.tangentToEyeMatrix * normalTangentSpace); + + material.specular = specularIntensity; + material.shininess = 10.0; + + return material; +} +`;function Ye(e){this.type=void 0,this.shaderSource=void 0,this.materials=void 0,this.uniforms=void 0,this._uniforms=void 0,this.translucent=void 0,this._minificationFilter=e.minificationFilter??Zt.LINEAR,this._magnificationFilter=e.magnificationFilter??pi.LINEAR,this._strict=void 0,this._template=void 0,this._count=void 0,this._texturePaths={},this._loadedImages=[],this._loadedCubeMaps=[],this._textures={},this._updateFunctions=[],this._defaultTexture=void 0,_Re(e,this),Object.defineProperties(this,{type:{value:this.type,writable:!1}}),l(Ye._uniformList[this.type])||(Ye._uniformList[this.type]=Object.keys(this._uniforms))}Ye._uniformList={};Ye.fromType=function(e,t){let n=new Ye({fabric:{type:e}});if(l(t))for(let i in t)t.hasOwnProperty(i)&&(n.uniforms[i]=t[i]);return n};Ye.prototype.isTranslucent=function(){if(l(this.translucent))return typeof this.translucent=="function"?this.translucent():this.translucent;let e=!0,t=this._translucentFunctions,n=t.length;for(let i=0;i<n;++i){let o=t[i];if(typeof o=="function"?e=e&&o():e=e&&o,!e)break}return e};Ye.prototype.update=function(e){this._defaultTexture=e.defaultTexture;let t,n,i=this._loadedImages,o=i.length;for(t=0;t<o;++t){let c=i[t];n=c.id;let u=c.image,f;Array.isArray(u)&&(f=u.slice(1,u.length).map(function(_){return _.bufferView}),u=u[0]);let h=new on({minificationFilter:this._minificationFilter,magnificationFilter:this._magnificationFilter}),A;l(u.internalFormat)?A=new Nt({context:e,pixelFormat:u.internalFormat,width:u.width,height:u.height,source:{arrayBufferView:u.bufferView,mipLevels:f},sampler:h}):A=new Nt({context:e,source:u,sampler:h});let g=this._textures[n];l(g)&&g!==this._defaultTexture&&g.destroy(),this._textures[n]=A;let m=`${n}Dimensions`;if(this.uniforms.hasOwnProperty(m)){let _=this.uniforms[m];_.x=A._width,_.y=A._height}}i.length=0;let r=this._loadedCubeMaps;for(o=r.length,t=0;t<o;++t){let c=r[t];n=c.id;let u=c.images,f=new jr({context:e,source:{positiveX:u[0],negativeX:u[1],positiveY:u[2],negativeY:u[3],positiveZ:u[4],negativeZ:u[5]},sampler:new on({minificationFilter:this._minificationFilter,magnificationFilter:this._magnificationFilter})});this._textures[n]=f}r.length=0;let s=this._updateFunctions;for(o=s.length,t=0;t<o;++t)s[t](this,e);let a=this.materials;for(let c in a)a.hasOwnProperty(c)&&a[c].update(e)};Ye.prototype.isDestroyed=function(){return!1};Ye.prototype.destroy=function(){let e=this._textures;for(let n in e)if(e.hasOwnProperty(n)){let i=e[n];i!==this._defaultTexture&&i.destroy()}let t=this.materials;for(let n in t)t.hasOwnProperty(n)&&t[n].destroy();return ue(this)};function _Re(e,t){e=e??V.EMPTY_OBJECT,t._strict=e.strict??!1,t._count=e.count??0,t._template=ze(e.fabric??V.EMPTY_OBJECT),t._template.uniforms=ze(t._template.uniforms??V.EMPTY_OBJECT),t._template.materials=ze(t._template.materials??V.EMPTY_OBJECT),t.type=l(t._template.type)?t._template.type:Xn(),t.shaderSource="",t.materials={},t.uniforms={},t._uniforms={},t._translucentFunctions=[];let n,i=Ye._materialCache.getMaterial(t.type);if(l(i)){let r=ze(i.fabric,!0);t._template=wt(t._template,r,!0),n=i.translucent}IRe(t),l(i)||Ye._materialCache.addMaterial(t.type,t),bRe(t),BRe(t),vRe(t);let o=t._translucentFunctions.length===0?!0:void 0;if(n=n??o,n=e.translucent??n,l(n))if(typeof n=="function"){let r=function(){return n(t)};t._translucentFunctions.push(r)}else t._translucentFunctions.push(n)}function o6(e,t,n,i){if(l(e)){for(let o in e)if(e.hasOwnProperty(o)){let r=t.indexOf(o)!==-1;(i&&!r||!i&&r)&&n(o,t)}}}function Ste(e,t){}function yRe(e,t){}var CRe=["type","materials","uniforms","components","source"],ERe=["diffuse","specular","shininess","normal","emission","alpha"];function IRe(e){let t=e._template,n=t.uniforms,i=t.materials,o=t.components;o6(t,CRe,Ste,!0),o6(o,ERe,Ste,!0);let r=[];for(let s in i)i.hasOwnProperty(s)&&r.push(s);o6(n,r,yRe,!1)}function xRe(e,t){let n=t._template.materials;for(let i in n)if(n.hasOwnProperty(i)&&e.indexOf(i)>-1)return!0;return!1}function bRe(e){let t=e._template.components,n=e._template.source;if(l(n))e.shaderSource+=`${n} +`;else{if(e.shaderSource+=`czm_material czm_getMaterial(czm_materialInput materialInput) +{ +`,e.shaderSource+=`czm_material material = czm_getDefaultMaterial(materialInput); +`,l(t)){let i=Object.keys(e._template.materials).length>0;for(let o in t)if(t.hasOwnProperty(o))if(o==="diffuse"||o==="emission"){let s=i&&xRe(t[o],e)?t[o]:`czm_gammaCorrect(${t[o]})`;e.shaderSource+=`material.${o} = ${s}; +`}else o==="alpha"?e.shaderSource+=`material.alpha = ${t.alpha}; +`:e.shaderSource+=`material.${o} = ${t[o]}; +`}e.shaderSource+=`return material; +} +`}}var wte={mat2:Wi,mat3:J,mat4:R},TRe=/\.ktx2$/i;function SRe(e){let t;return function(n,i){let o=n.uniforms,r=o[e],s=t!==r,a=!l(r)||r===Ye.DefaultImageId;t=r;let c=n._textures[e],u,f;if(r instanceof HTMLVideoElement){if(r.readyState>=2){if(s&&l(c)&&(c!==i.defaultTexture&&c.destroy(),c=void 0),!l(c)||c===i.defaultTexture){let A=new on({minificationFilter:n._minificationFilter,magnificationFilter:n._magnificationFilter});c=new Nt({context:i,source:r,sampler:A}),n._textures[e]=c;return}c.copyFrom({source:r})}else l(c)||(n._textures[e]=i.defaultTexture);return}if(r instanceof Nt&&r!==c){n._texturePaths[e]=void 0;let A=n._textures[e];l(A)&&A!==n._defaultTexture&&A.destroy(),n._textures[e]=r,u=`${e}Dimensions`,o.hasOwnProperty(u)&&(f=o[u],f.x=r._width,f.y=r._height);return}if(s&&l(c)&&a&&(c!==n._defaultTexture&&c.destroy(),c=void 0),l(c)||(n._texturePaths[e]=void 0,c=n._textures[e]=n._defaultTexture,u=`${e}Dimensions`,o.hasOwnProperty(u)&&(f=o[u],f.x=c._width,f.y=c._height)),a)return;let h=r instanceof we;if(!l(n._texturePaths[e])||h&&r.url!==n._texturePaths[e].url||!h&&r!==n._texturePaths[e]){if(typeof r=="string"||h){let A=h?r:we.createIfNeeded(r),g;TRe.test(A.url)?g=Iu(A.url):g=A.fetchImage(),Promise.resolve(g).then(function(m){n._loadedImages.push({id:e,image:m})}).catch(function(){l(c)&&c!==n._defaultTexture&&c.destroy(),n._textures[e]=n._defaultTexture})}else(r instanceof HTMLCanvasElement||r instanceof HTMLImageElement||r instanceof ImageBitmap||r instanceof OffscreenCanvas)&&n._loadedImages.push({id:e,image:r});n._texturePaths[e]=r}}}function wRe(e){return function(t,n){let i=t.uniforms[e];if(i instanceof jr){let r=t._textures[e];r!==t._defaultTexture&&r.destroy(),t._texturePaths[e]=void 0,t._textures[e]=i;return}if(l(t._textures[e])||(t._texturePaths[e]=void 0,t._textures[e]=n.defaultCubeMap),i===Ye.DefaultCubeMapId)return;let o=i.positiveX+i.negativeX+i.positiveY+i.negativeY+i.positiveZ+i.negativeZ;if(o!==t._texturePaths[e]){let r=[we.createIfNeeded(i.positiveX).fetchImage(),we.createIfNeeded(i.negativeX).fetchImage(),we.createIfNeeded(i.positiveY).fetchImage(),we.createIfNeeded(i.negativeY).fetchImage(),we.createIfNeeded(i.positiveZ).fetchImage(),we.createIfNeeded(i.negativeZ).fetchImage()];Promise.all(r).then(function(s){t._loadedCubeMaps.push({id:e,images:s})}),t._texturePaths[e]=o}}}function BRe(e){let t=e._template.uniforms;for(let n in t)t.hasOwnProperty(n)&&Bte(e,n)}function Bte(e,t){let n=e._strict,i=e._template.uniforms,o=i[t],r=DRe(o),s;if(r==="channels")s=ow(e,t,o,!1);else{if(r==="sampler2D"){let u=`${t}Dimensions`;PRe(e,u)>0&&(i[u]={type:"ivec3",x:1,y:1},Bte(e,u))}if(!new RegExp(`uniform\\s+${r}\\s+${t}\\s*;`).test(e.shaderSource)){let u=`uniform ${r} ${t};`;e.shaderSource=u+e.shaderSource}let c=`${t}_${e._count++}`;if(s=ow(e,t,c),e.uniforms[t]=o,r==="sampler2D")e._uniforms[c]=function(){return e._textures[t]},e._updateFunctions.push(SRe(t));else if(r==="samplerCube")e._uniforms[c]=function(){return e._textures[t]},e._updateFunctions.push(wRe(t));else if(r.indexOf("mat")!==-1){let u=new wte[r];e._uniforms[c]=function(){return wte[r].fromColumnMajorArray(e.uniforms[t],u)}}else e._uniforms[c]=function(){return e.uniforms[t]}}}function DRe(e){let t=e.type;if(!l(t)){let n=typeof e;if(n==="number")t="float";else if(n==="boolean")t="bool";else if(n==="string"||e instanceof we||e instanceof HTMLCanvasElement||e instanceof HTMLImageElement||e instanceof ImageBitmap||e instanceof OffscreenCanvas)/^([rgba]){1,4}$/i.test(e)?t="channels":e===Ye.DefaultCubeMapId?t="samplerCube":t="sampler2D";else if(n==="object")if(Array.isArray(e))(e.length===4||e.length===9||e.length===16)&&(t=`mat${Math.sqrt(e.length)}`);else{let i=0;for(let o in e)e.hasOwnProperty(o)&&(i+=1);i>=2&&i<=4?t=`vec${i}`:i===6&&(t="samplerCube")}}return t}function vRe(e){let t=e._strict,n=e._template.materials;for(let i in n)if(n.hasOwnProperty(i)){let o=new Ye({strict:t,fabric:n[i],count:e._count});e._count=o._count,e._uniforms=wt(e._uniforms,o._uniforms,!0),e.materials[i]=o,e._translucentFunctions=e._translucentFunctions.concat(o._translucentFunctions);let r="czm_getMaterial",s=`${r}_${e._count++}`;ow(o,r,s),e.shaderSource=o.shaderSource+e.shaderSource;let a=`${s}(materialInput)`,c=ow(e,i,a)}}function ow(e,t,n,i){i=i??!0;let o=0,r="([\\w])?",s=`([\\w${i?".":""}])?`,a=new RegExp(s+t+r,"g");return e.shaderSource=e.shaderSource.replace(a,function(c,u,f){return u||f?c:(o+=1,n)}),o}function PRe(e,t,n){return ow(e,t,t,n)}Ye._materialCache={_materials:{},addMaterial:function(e,t){this._materials[e]=t},getMaterial:function(e){return this._materials[e]}};Ye.DefaultImageId="czm_defaultImage";Ye.DefaultCubeMapId="czm_defaultCubeMap";Ye.ColorType="Color";Ye._materialCache.addMaterial(Ye.ColorType,{fabric:{type:Ye.ColorType,uniforms:{color:new G(1,0,0,.5)},components:{diffuse:"color.rgb",alpha:"color.a"}},translucent:function(e){return e.uniforms.color.alpha<1}});Ye.ImageType="Image";Ye._materialCache.addMaterial(Ye.ImageType,{fabric:{type:Ye.ImageType,uniforms:{image:Ye.DefaultImageId,repeat:new k(1,1),color:new G(1,1,1,1)},components:{diffuse:"texture(image, fract(repeat * materialInput.st)).rgb * color.rgb",alpha:"texture(image, fract(repeat * materialInput.st)).a * color.a"}},translucent:function(e){return e.uniforms.color.alpha<1}});Ye.DiffuseMapType="DiffuseMap";Ye._materialCache.addMaterial(Ye.DiffuseMapType,{fabric:{type:Ye.DiffuseMapType,uniforms:{image:Ye.DefaultImageId,channels:"rgb",repeat:new k(1,1)},components:{diffuse:"texture(image, fract(repeat * materialInput.st)).channels"}},translucent:!1});Ye.AlphaMapType="AlphaMap";Ye._materialCache.addMaterial(Ye.AlphaMapType,{fabric:{type:Ye.AlphaMapType,uniforms:{image:Ye.DefaultImageId,channel:"a",repeat:new k(1,1)},components:{alpha:"texture(image, fract(repeat * materialInput.st)).channel"}},translucent:!0});Ye.SpecularMapType="SpecularMap";Ye._materialCache.addMaterial(Ye.SpecularMapType,{fabric:{type:Ye.SpecularMapType,uniforms:{image:Ye.DefaultImageId,channel:"r",repeat:new k(1,1)},components:{specular:"texture(image, fract(repeat * materialInput.st)).channel"}},translucent:!1});Ye.EmissionMapType="EmissionMap";Ye._materialCache.addMaterial(Ye.EmissionMapType,{fabric:{type:Ye.EmissionMapType,uniforms:{image:Ye.DefaultImageId,channels:"rgb",repeat:new k(1,1)},components:{emission:"texture(image, fract(repeat * materialInput.st)).channels"}},translucent:!1});Ye.BumpMapType="BumpMap";Ye._materialCache.addMaterial(Ye.BumpMapType,{fabric:{type:Ye.BumpMapType,uniforms:{image:Ye.DefaultImageId,channel:"r",strength:.8,repeat:new k(1,1)},source:OM},translucent:!1});Ye.NormalMapType="NormalMap";Ye._materialCache.addMaterial(Ye.NormalMapType,{fabric:{type:Ye.NormalMapType,uniforms:{image:Ye.DefaultImageId,channels:"rgb",strength:.8,repeat:new k(1,1)},source:HM},translucent:!1});Ye.GridType="Grid";Ye._materialCache.addMaterial(Ye.GridType,{fabric:{type:Ye.GridType,uniforms:{color:new G(0,1,0,1),cellAlpha:.1,lineCount:new k(8,8),lineThickness:new k(1,1),lineOffset:new k(0,0)},source:VM},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.cellAlpha<1}});Ye.StripeType="Stripe";Ye._materialCache.addMaterial(Ye.StripeType,{fabric:{type:Ye.StripeType,uniforms:{horizontal:!0,evenColor:new G(1,1,1,.5),oddColor:new G(0,0,1,.5),offset:0,repeat:5},source:JM},translucent:function(e){let t=e.uniforms;return t.evenColor.alpha<1||t.oddColor.alpha<1}});Ye.CheckerboardType="Checkerboard";Ye._materialCache.addMaterial(Ye.CheckerboardType,{fabric:{type:Ye.CheckerboardType,uniforms:{lightColor:new G(1,1,1,.5),darkColor:new G(0,0,0,.5),repeat:new k(5,5)},source:FM},translucent:function(e){let t=e.uniforms;return t.lightColor.alpha<1||t.darkColor.alpha<1}});Ye.DotType="Dot";Ye._materialCache.addMaterial(Ye.DotType,{fabric:{type:Ye.DotType,uniforms:{lightColor:new G(1,1,0,.75),darkColor:new G(0,1,1,.75),repeat:new k(5,5)},source:QM},translucent:function(e){let t=e.uniforms;return t.lightColor.alpha<1||t.darkColor.alpha<1}});Ye.WaterType="Water";Ye._materialCache.addMaterial(Ye.WaterType,{fabric:{type:Ye.WaterType,uniforms:{baseWaterColor:new G(.2,.3,.6,1),blendColor:new G(0,1,.699,1),specularMap:Ye.DefaultImageId,normalMap:Ye.DefaultImageId,frequency:10,animationSpeed:.01,amplitude:1,specularIntensity:.5,fadeFactor:1},source:$M},translucent:function(e){let t=e.uniforms;return t.baseWaterColor.alpha<1||t.blendColor.alpha<1}});Ye.RimLightingType="RimLighting";Ye._materialCache.addMaterial(Ye.RimLightingType,{fabric:{type:Ye.RimLightingType,uniforms:{color:new G(1,0,0,.7),rimColor:new G(1,1,1,.4),width:.3},source:KM},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.rimColor.alpha<1}});Ye.FadeType="Fade";Ye._materialCache.addMaterial(Ye.FadeType,{fabric:{type:Ye.FadeType,uniforms:{fadeInColor:new G(1,0,0,1),fadeOutColor:new G(0,0,0,0),maximumDistance:.5,repeat:!0,fadeDirection:{x:!0,y:!0},time:new k(.5,.5)},source:zM},translucent:function(e){let t=e.uniforms;return t.fadeInColor.alpha<1||t.fadeOutColor.alpha<1}});Ye.PolylineArrowType="PolylineArrow";Ye._materialCache.addMaterial(Ye.PolylineArrowType,{fabric:{type:Ye.PolylineArrowType,uniforms:{color:new G(1,1,1,1)},source:WM},translucent:!0});Ye.PolylineDashType="PolylineDash";Ye._materialCache.addMaterial(Ye.PolylineDashType,{fabric:{type:Ye.PolylineDashType,uniforms:{color:new G(1,0,1,1),gapColor:new G(0,0,0,0),dashLength:16,dashPattern:255},source:jM},translucent:!0});Ye.PolylineGlowType="PolylineGlow";Ye._materialCache.addMaterial(Ye.PolylineGlowType,{fabric:{type:Ye.PolylineGlowType,uniforms:{color:new G(0,.5,1,1),glowPower:.25,taperPower:1},source:YM},translucent:!0});Ye.PolylineOutlineType="PolylineOutline";Ye._materialCache.addMaterial(Ye.PolylineOutlineType,{fabric:{type:Ye.PolylineOutlineType,uniforms:{color:new G(1,1,1,1),outlineColor:new G(1,0,0,1),outlineWidth:1},source:qM},translucent:function(e){let t=e.uniforms;return t.color.alpha<1||t.outlineColor.alpha<1}});Ye.ElevationContourType="ElevationContour";Ye._materialCache.addMaterial(Ye.ElevationContourType,{fabric:{type:Ye.ElevationContourType,uniforms:{spacing:100,color:new G(1,0,0,1),width:1},source:UM},translucent:!1});Ye.ElevationRampType="ElevationRamp";Ye._materialCache.addMaterial(Ye.ElevationRampType,{fabric:{type:Ye.ElevationRampType,uniforms:{image:Ye.DefaultImageId,minimumHeight:0,maximumHeight:1e4},source:GM},translucent:!1});Ye.SlopeRampMaterialType="SlopeRamp";Ye._materialCache.addMaterial(Ye.SlopeRampMaterialType,{fabric:{type:Ye.SlopeRampMaterialType,uniforms:{image:Ye.DefaultImageId},source:XM},translucent:!1});Ye.AspectRampMaterialType="AspectRamp";Ye._materialCache.addMaterial(Ye.AspectRampMaterialType,{fabric:{type:Ye.AspectRampMaterialType,uniforms:{image:Ye.DefaultImageId},source:LM},translucent:!1});Ye.ElevationBandType="ElevationBand";Ye._materialCache.addMaterial(Ye.ElevationBandType,{fabric:{type:Ye.ElevationBandType,uniforms:{heights:Ye.DefaultImageId,colors:Ye.DefaultImageId},source:kM},translucent:!0});Ye.WaterMaskType="WaterMask";Ye._materialCache.addMaterial(Ye.WaterMaskType,{fabric:{type:Ye.WaterMaskType,source:ZM,uniforms:{waterColor:new G(1,1,1,1),landColor:new G(0,0,0,0)}},translucent:!1});var ao=Ye;function yC(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=e.closed??!1,i=e.materialSupport??yC.MaterialSupport.TEXTURED;this.material=l(e.material)?e.material:ao.fromType(ao.ColorType),this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??i.vertexShaderSource,this._fragmentShaderSource=e.fragmentShaderSource??i.fragmentShaderSource,this._renderState=go.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._materialSupport=i,this._vertexFormat=i.vertexFormat,this._flat=e.flat??!1,this._faceForward=e.faceForward??!n}Object.defineProperties(yC.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},materialSupport:{get:function(){return this._materialSupport}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}});yC.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;yC.prototype.isTranslucent=go.prototype.isTranslucent;yC.prototype.getRenderState=go.prototype.getRenderState;yC.MaterialSupport={BASIC:Object.freeze({vertexFormat:Pe.POSITION_AND_NORMAL,vertexShaderSource:fM,fragmentShaderSource:uM}),TEXTURED:Object.freeze({vertexFormat:Pe.POSITION_NORMAL_AND_ST,vertexShaderSource:hM,fragmentShaderSource:dM}),ALL:Object.freeze({vertexFormat:Pe.ALL,vertexShaderSource:lM,fragmentShaderSource:cM})};var Io=yC;var e1=`in vec3 v_positionEC; +in vec3 v_normalEC; +in vec4 v_color; + +void main() +{ + vec3 positionToEyeEC = -v_positionEC; + + vec3 normalEC = normalize(v_normalEC); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + vec4 color = czm_gammaCorrect(v_color); + + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.positionToEyeEC = positionToEyeEC; + czm_material material = czm_getDefaultMaterial(materialInput); + material.diffuse = color.rgb; + material.alpha = color.a; + + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +} +`;var t1=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 normal; +in vec4 color; +in float batchId; + +out vec3 v_positionEC; +out vec3 v_normalEC; +out vec4 v_color; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_normalEC = czm_normal * normal; // normal in eye coordinates + v_color = color; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;var pI=`in vec4 v_color; + +void main() +{ + out_FragColor = czm_gammaCorrect(v_color); +} +`;var n1=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec4 color; +in float batchId; + +out vec4 v_color; + +void main() +{ + vec4 p = czm_computePosition(); + + v_color = color; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;function QA(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=e.closed??!1,i=e.flat??!1,o=i?n1:t1,r=i?pI:e1,s=i?QA.FLAT_VERTEX_FORMAT:QA.VERTEX_FORMAT;this.material=void 0,this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??o,this._fragmentShaderSource=e.fragmentShaderSource??r,this._renderState=go.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=s,this._flat=i,this._faceForward=e.faceForward??!n}Object.defineProperties(QA.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}}});QA.VERTEX_FORMAT=Pe.POSITION_AND_NORMAL;QA.FLAT_VERTEX_FORMAT=Pe.POSITION_ONLY;QA.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;QA.prototype.isTranslucent=go.prototype.isTranslucent;QA.prototype.getRenderState=go.prototype.getRenderState;var gn=QA;function gI(e){this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this.color=e}Object.defineProperties(gI.prototype,{isConstant:{get:function(){return j.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color")});gI.prototype.getType=function(e){return"Color"};var RRe=new K;gI.prototype.getValue=function(e,t){return l(e)||(e=K.now(RRe)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,G.WHITE,t.color),t};gI.prototype.equals=function(e){return this===e||e instanceof gI&&j.equals(this._color,e._color)};var Jt=gI;function Ig(e){e=e??V.EMPTY_OBJECT,this._ellipsoid=e.ellipsoid??te.default,this._rectangle=e.rectangle??ae.MAX_VALUE,this._projection=new Hi(this._ellipsoid),this._numberOfLevelZeroTilesX=e.numberOfLevelZeroTilesX??2,this._numberOfLevelZeroTilesY=e.numberOfLevelZeroTilesY??1}Object.defineProperties(Ig.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}});Ig.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<<e};Ig.prototype.getNumberOfYTilesAtLevel=function(e){return this._numberOfLevelZeroTilesY<<e};Ig.prototype.rectangleToNativeRectangle=function(e,t){let n=D.toDegrees(e.west),i=D.toDegrees(e.south),o=D.toDegrees(e.east),r=D.toDegrees(e.north);return l(t)?(t.west=n,t.south=i,t.east=o,t.north=r,t):new ae(n,i,o,r)};Ig.prototype.tileXYToNativeRectangle=function(e,t,n,i){let o=this.tileXYToRectangle(e,t,n,i);return o.west=D.toDegrees(o.west),o.south=D.toDegrees(o.south),o.east=D.toDegrees(o.east),o.north=D.toDegrees(o.north),o};Ig.prototype.tileXYToRectangle=function(e,t,n,i){let o=this._rectangle,r=this.getNumberOfXTilesAtLevel(n),s=this.getNumberOfYTilesAtLevel(n),a=o.width/r,c=e*a+o.west,u=(e+1)*a+o.west,f=o.height/s,h=o.north-t*f,A=o.north-(t+1)*f;return l(i)||(i=new ae(c,A,u,h)),i.west=c,i.south=A,i.east=u,i.north=h,i};Ig.prototype.positionToTileXY=function(e,t,n){let i=this._rectangle;if(!ae.contains(i,e))return;let o=this.getNumberOfXTilesAtLevel(t),r=this.getNumberOfYTilesAtLevel(t),s=i.width/o,a=i.height/r,c=e.longitude;i.east<i.west&&(c+=D.TWO_PI);let u=(c-i.west)/s|0;u>=o&&(u=o-1);let f=(i.north-e.latitude)/a|0;return f>=r&&(f=r-1),l(n)?(n.x=u,n.y=f,n):new k(u,f)};var co=Ig;var Dte=new d,vte=new d,Pte=new Ae,r6=new d,MRe=new d,Rte=new le,NRe=new co,rw=[new Ae,new Ae,new Ae,new Ae],sw=new k,cs={};cs.initialize=function(){let e=cs._initPromise;return l(e)||(e=we.fetchJson(fn("Assets/approximateTerrainHeights.json")).then(function(t){cs._terrainHeights=t}),cs._initPromise=e),e};cs.getMinimumMaximumHeights=function(e,t){t=t??te.default;let n=Mte(e),i=cs._defaultMinTerrainHeight,o=cs._defaultMaxTerrainHeight;if(l(n)){let r=`${n.level}-${n.x}-${n.y}`,s=cs._terrainHeights[r];l(s)&&(i=s[0],o=s[1]),t.cartographicToCartesian(ae.northeast(e,Pte),Dte),t.cartographicToCartesian(ae.southwest(e,Pte),vte),d.midpoint(vte,Dte,r6);let a=t.scaleToGeodeticSurface(r6,MRe);if(l(a)){let c=d.distance(r6,a);i=Math.min(i,-c)}else i=cs._defaultMinTerrainHeight}return i=Math.max(cs._defaultMinTerrainHeight,i),{minimumTerrainHeight:i,maximumTerrainHeight:o}};cs.getBoundingSphere=function(e,t){t=t??te.default;let n=Mte(e),i=cs._defaultMaxTerrainHeight;if(l(n)){let r=`${n.level}-${n.x}-${n.y}`,s=cs._terrainHeights[r];l(s)&&(i=s[1])}let o=le.fromRectangle3D(e,t,0);return le.fromRectangle3D(e,t,i,Rte),le.union(o,Rte,o)};function Mte(e){Ae.fromRadians(e.east,e.north,0,rw[0]),Ae.fromRadians(e.west,e.north,0,rw[1]),Ae.fromRadians(e.east,e.south,0,rw[2]),Ae.fromRadians(e.west,e.south,0,rw[3]);let t=0,n=0,i=0,o=0,r=cs._terrainHeightsMaxLevel,s;for(s=0;s<=r;++s){let a=!1;for(let c=0;c<4;++c){let u=rw[c];if(NRe.positionToTileXY(u,s,sw),c===0)i=sw.x,o=sw.y;else if(i!==sw.x||o!==sw.y){a=!0;break}}if(a)break;t=i,n=o}if(s!==0)return{x:t,y:n,level:s>r?r:s-1}}cs._terrainHeightsMaxLevel=6;cs._defaultMaxTerrainHeight=9e3;cs._defaultMinTerrainHeight=-1e5;cs._terrainHeights=void 0;cs._initPromise=void 0;Object.defineProperties(cs,{initialized:{get:function(){return l(cs._terrainHeights)}}});var wi=cs;function Xc(e,t,n){this.minimum=d.clone(e??d.ZERO),this.maximum=d.clone(t??d.ZERO),l(n)?n=d.clone(n):n=d.midpoint(this.minimum,this.maximum,new d),this.center=n}Xc.fromCorners=function(e,t,n){return l(n)||(n=new Xc),n.minimum=d.clone(e,n.minimum),n.maximum=d.clone(t,n.maximum),n.center=d.midpoint(e,t,n.center),n};Xc.fromPoints=function(e,t){if(l(t)||(t=new Xc),!l(e)||e.length===0)return t.minimum=d.clone(d.ZERO,t.minimum),t.maximum=d.clone(d.ZERO,t.maximum),t.center=d.clone(d.ZERO,t.center),t;let n=e[0].x,i=e[0].y,o=e[0].z,r=e[0].x,s=e[0].y,a=e[0].z,c=e.length;for(let h=1;h<c;h++){let A=e[h],g=A.x,m=A.y,_=A.z;n=Math.min(g,n),r=Math.max(g,r),i=Math.min(m,i),s=Math.max(m,s),o=Math.min(_,o),a=Math.max(_,a)}let u=t.minimum;u.x=n,u.y=i,u.z=o;let f=t.maximum;return f.x=r,f.y=s,f.z=a,t.center=d.midpoint(u,f,t.center),t};Xc.clone=function(e,t){if(l(e))return l(t)?(t.minimum=d.clone(e.minimum,t.minimum),t.maximum=d.clone(e.maximum,t.maximum),t.center=d.clone(e.center,t.center),t):new Xc(e.minimum,e.maximum,e.center)};Xc.equals=function(e,t){return e===t||l(e)&&l(t)&&d.equals(e.center,t.center)&&d.equals(e.minimum,t.minimum)&&d.equals(e.maximum,t.maximum)};var i1=new d;Xc.intersectPlane=function(e,t){i1=d.subtract(e.maximum,e.minimum,i1);let n=d.multiplyByScalar(i1,.5,i1),i=t.normal,o=n.x*Math.abs(i.x)+n.y*Math.abs(i.y)+n.z*Math.abs(i.z),r=d.dot(e.center,i)+t.distance;return r-o>0?nn.INSIDE:r+o<0?nn.OUTSIDE:nn.INTERSECTING};Xc.prototype.clone=function(e){return Xc.clone(this,e)};Xc.prototype.intersectPlane=function(e){return Xc.intersectPlane(this,e)};Xc.prototype.equals=function(e){return Xc.equals(this,e)};var CC=Xc;var s6=new se;function nm(e,t){t=t??te.default,e=t.scaleToGeodeticSurface(e);let n=kt.eastNorthUpToFixedFrame(e,t);this._ellipsoid=t,this._origin=e,this._xAxis=d.fromCartesian4(R.getColumn(n,0,s6)),this._yAxis=d.fromCartesian4(R.getColumn(n,1,s6));let i=d.fromCartesian4(R.getColumn(n,2,s6));this._plane=mn.fromPointNormal(e,i)}Object.defineProperties(nm.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},origin:{get:function(){return this._origin}},plane:{get:function(){return this._plane}},xAxis:{get:function(){return this._xAxis}},yAxis:{get:function(){return this._yAxis}},zAxis:{get:function(){return this._plane.normal}}});var LRe=new CC;nm.fromPoints=function(e,t){let n=CC.fromPoints(e,LRe);return new nm(n.center,t)};var Nte=new In,o1=new d;nm.prototype.projectPointOntoPlane=function(e,t){let n=Nte;n.origin=e,d.normalize(e,n.direction);let i=Ai.rayPlane(n,this._plane,o1);if(l(i)||(d.negate(n.direction,n.direction),i=Ai.rayPlane(n,this._plane,o1)),l(i)){let o=d.subtract(i,this._origin,i),r=d.dot(this._xAxis,o),s=d.dot(this._yAxis,o);return l(t)?(t.x=r,t.y=s,t):new k(r,s)}};nm.prototype.projectPointsOntoPlane=function(e,t){l(t)||(t=[]);let n=0,i=e.length;for(let o=0;o<i;o++){let r=this.projectPointOntoPlane(e[o],t[n]);l(r)&&(t[n]=r,n++)}return t.length=n,t};nm.prototype.projectPointToNearestOnPlane=function(e,t){l(t)||(t=new k);let n=Nte;n.origin=e,d.clone(this._plane.normal,n.direction);let i=Ai.rayPlane(n,this._plane,o1);l(i)||(d.negate(n.direction,n.direction),i=Ai.rayPlane(n,this._plane,o1));let o=d.subtract(i,this._origin,i),r=d.dot(this._xAxis,o),s=d.dot(this._yAxis,o);return t.x=r,t.y=s,t};nm.prototype.projectPointsToNearestOnPlane=function(e,t){l(t)||(t=[]);let n=e.length;t.length=n;for(let i=0;i<n;i++)t[i]=this.projectPointToNearestOnPlane(e[i],t[i]);return t};var ORe=new d;nm.prototype.projectPointOntoEllipsoid=function(e,t){l(t)||(t=new d);let n=this._ellipsoid,i=this._origin,o=this._xAxis,r=this._yAxis,s=ORe;return d.multiplyByScalar(o,e.x,s),t=d.add(i,s,t),d.multiplyByScalar(r,e.y,s),d.add(t,s,t),n.scaleToGeocentricSurface(t,t),t};nm.prototype.projectPointsOntoEllipsoid=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;++i)t[i]=this.projectPointOntoEllipsoid(e[i],t[i]);return t};var xs=nm;function ji(e,t){this.center=d.clone(e??d.ZERO),this.halfAxes=J.clone(t??J.ZERO)}ji.packedLength=d.packedLength+J.packedLength;ji.pack=function(e,t,n){return n=n??0,d.pack(e.center,t,n),J.pack(e.halfAxes,t,n+d.packedLength),t};ji.unpack=function(e,t,n){return t=t??0,l(n)||(n=new ji),d.unpack(e,t,n.center),J.unpack(e,t+d.packedLength,n.halfAxes),n};var FRe=new d,QRe=new d,kRe=new d,URe=new d,GRe=new d,zRe=new d,VRe=new J,HRe={unitary:new J,diagonal:new J};ji.fromPoints=function(e,t){if(l(t)||(t=new ji),!l(e)||e.length===0)return t.halfAxes=J.ZERO,t.center=d.ZERO,t;let n,i=e.length,o=d.clone(e[0],FRe);for(n=1;n<i;n++)d.add(o,e[n],o);let r=1/i;d.multiplyByScalar(o,r,o);let s=0,a=0,c=0,u=0,f=0,h=0,A;for(n=0;n<i;n++)A=d.subtract(e[n],o,QRe),s+=A.x*A.x,a+=A.x*A.y,c+=A.x*A.z,u+=A.y*A.y,f+=A.y*A.z,h+=A.z*A.z;s*=r,a*=r,c*=r,u*=r,f*=r,h*=r;let g=VRe;g[0]=s,g[1]=a,g[2]=c,g[3]=a,g[4]=u,g[5]=f,g[6]=c,g[7]=f,g[8]=h;let m=J.computeEigenDecomposition(g,HRe),_=J.clone(m.unitary,t.halfAxes),y=J.getColumn(_,0,URe),C=J.getColumn(_,1,GRe),E=J.getColumn(_,2,zRe),I=-Number.MAX_VALUE,b=-Number.MAX_VALUE,S=-Number.MAX_VALUE,B=Number.MAX_VALUE,v=Number.MAX_VALUE,P=Number.MAX_VALUE;for(n=0;n<i;n++)A=e[n],I=Math.max(d.dot(y,A),I),b=Math.max(d.dot(C,A),b),S=Math.max(d.dot(E,A),S),B=Math.min(d.dot(y,A),B),v=Math.min(d.dot(C,A),v),P=Math.min(d.dot(E,A),P);y=d.multiplyByScalar(y,.5*(B+I),y),C=d.multiplyByScalar(C,.5*(v+b),C),E=d.multiplyByScalar(E,.5*(P+S),E);let N=d.add(y,C,t.center);d.add(N,E,N);let L=kRe;return L.x=I-B,L.y=b-v,L.z=S-P,d.multiplyByScalar(L,.5,L),J.multiplyByScale(t.halfAxes,L,t.halfAxes),t};var Ute=new d,WRe=new d;function Lte(e,t,n,i,o,r,s,a,c,u,f){l(f)||(f=new ji);let h=f.halfAxes;J.setColumn(h,0,t,h),J.setColumn(h,1,n,h),J.setColumn(h,2,i,h);let A=Ute;A.x=(o+r)/2,A.y=(s+a)/2,A.z=(c+u)/2;let g=WRe;g.x=(r-o)/2,g.y=(a-s)/2,g.z=(u-c)/2;let m=f.center;return A=J.multiplyByVector(h,A,A),d.add(e,A,m),J.multiplyByScale(h,g,h),f}var Ote=new Ae,jRe=new d,YRe=new Ae,qRe=new Ae,KRe=new Ae,XRe=new Ae,JRe=new Ae,ZRe=new d,Fte=new d,$Re=new d,Qte=new d,eMe=new d,tMe=new k,nMe=new k,iMe=new k,oMe=new k,rMe=new k,sMe=new d,aMe=new d,cMe=new d,lMe=new d,uMe=new k,fMe=new d,dMe=new d,hMe=new d,mMe=new mn(d.UNIT_X,0);ji.fromRectangle=function(e,t,n,i,o){t=t??0,n=n??0,i=i??te.default;let r,s,a,c,u,f,h;if(e.width<=D.PI){let v=ae.center(e,Ote),P=i.cartographicToCartesian(v,jRe),N=new xs(P,i);h=N.plane;let L=v.longitude,p=e.south<0&&e.north>0?0:v.latitude,x=Ae.fromRadians(L,e.north,n,YRe),T=Ae.fromRadians(e.west,e.north,n,qRe),w=Ae.fromRadians(e.west,p,n,KRe),M=Ae.fromRadians(e.west,e.south,n,XRe),O=Ae.fromRadians(L,e.south,n,JRe),U=i.cartographicToCartesian(x,ZRe),Q=i.cartographicToCartesian(T,Fte),z=i.cartographicToCartesian(w,$Re),F=i.cartographicToCartesian(M,Qte),H=i.cartographicToCartesian(O,eMe),W=N.projectPointToNearestOnPlane(U,tMe),Z=N.projectPointToNearestOnPlane(Q,nMe),Y=N.projectPointToNearestOnPlane(z,iMe),$=N.projectPointToNearestOnPlane(F,oMe),X=N.projectPointToNearestOnPlane(H,rMe);return r=Math.min(Z.x,Y.x,$.x),s=-r,c=Math.max(Z.y,W.y),a=Math.min($.y,X.y),T.height=M.height=t,Q=i.cartographicToCartesian(T,Fte),F=i.cartographicToCartesian(M,Qte),u=Math.min(mn.getPointDistance(h,Q),mn.getPointDistance(h,F)),f=n,Lte(N.origin,N.xAxis,N.yAxis,N.zAxis,r,s,a,c,u,f,o)}let A=e.south>0,g=e.north<0,m=A?e.south:g?e.north:0,_=ae.center(e,Ote).longitude,y=d.fromRadians(_,m,n,i,sMe);y.z=0;let E=Math.abs(y.x)<D.EPSILON10&&Math.abs(y.y)<D.EPSILON10?d.UNIT_X:d.normalize(y,aMe),I=d.UNIT_Z,b=d.cross(E,I,cMe);h=mn.fromPointNormal(y,E,mMe);let S=d.fromRadians(_+D.PI_OVER_TWO,m,n,i,lMe);s=d.dot(mn.projectPointOntoPlane(h,S,uMe),b),r=-s,c=d.fromRadians(0,e.north,g?t:n,i,fMe).z,a=d.fromRadians(0,e.south,A?t:n,i,dMe).z;let B=d.fromRadians(e.east,m,n,i,hMe);return u=mn.getPointDistance(h,B),f=0,Lte(y,b,I,E,r,s,a,c,u,f,o)};ji.fromTransformation=function(e,t){return l(t)||(t=new ji),t.center=R.getTranslation(e,t.center),t.halfAxes=R.getMatrix3(e,t.halfAxes),t.halfAxes=J.multiplyByScalar(t.halfAxes,.5,t.halfAxes),t};ji.clone=function(e,t){if(l(e))return l(t)?(d.clone(e.center,t.center),J.clone(e.halfAxes,t.halfAxes),t):new ji(e.center,e.halfAxes)};ji.intersectPlane=function(e,t){let n=e.center,i=t.normal,o=e.halfAxes,r=i.x,s=i.y,a=i.z,c=Math.abs(r*o[J.COLUMN0ROW0]+s*o[J.COLUMN0ROW1]+a*o[J.COLUMN0ROW2])+Math.abs(r*o[J.COLUMN1ROW0]+s*o[J.COLUMN1ROW1]+a*o[J.COLUMN1ROW2])+Math.abs(r*o[J.COLUMN2ROW0]+s*o[J.COLUMN2ROW1]+a*o[J.COLUMN2ROW2]),u=d.dot(i,n)+t.distance;return u<=-c?nn.OUTSIDE:u>=c?nn.INSIDE:nn.INTERSECTING};var Gte=new d,zte=new d,Vte=new d,AMe=new d,kte=new d,pMe=new d;ji.distanceSquaredTo=function(e,t){let n=d.subtract(t,e.center,Ute),i=e.halfAxes,o=J.getColumn(i,0,Gte),r=J.getColumn(i,1,zte),s=J.getColumn(i,2,Vte),a=d.magnitude(o),c=d.magnitude(r),u=d.magnitude(s),f=!0,h=!0,A=!0;a>0?d.divideByScalar(o,a,o):f=!1,c>0?d.divideByScalar(r,c,r):h=!1,u>0?d.divideByScalar(s,u,s):A=!1;let g=!f+!h+!A,m,_,y;if(g===1){let b=o;m=r,_=s,h?A||(b=s,_=o):(b=r,m=o),y=d.cross(m,_,kte),b===o?o=y:b===r?r=y:b===s&&(s=y)}else if(g===2){m=o,h?m=r:A&&(m=s);let b=d.UNIT_Y;b.equalsEpsilon(m,D.EPSILON3)&&(b=d.UNIT_X),_=d.cross(m,b,AMe),d.normalize(_,_),y=d.cross(m,_,kte),d.normalize(y,y),m===o?(r=_,s=y):m===r?(s=_,o=y):m===s&&(o=_,r=y)}else g===3&&(o=d.UNIT_X,r=d.UNIT_Y,s=d.UNIT_Z);let C=pMe;C.x=d.dot(n,o),C.y=d.dot(n,r),C.z=d.dot(n,s);let E=0,I;return C.x<-a?(I=C.x+a,E+=I*I):C.x>a&&(I=C.x-a,E+=I*I),C.y<-c?(I=C.y+c,E+=I*I):C.y>c&&(I=C.y-c,E+=I*I),C.z<-u?(I=C.z+u,E+=I*I):C.z>u&&(I=C.z-u,E+=I*I),E};var gMe=new d,_Me=new d;ji.computePlaneDistances=function(e,t,n,i){l(i)||(i=new _c);let o=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,s=e.center,a=e.halfAxes,c=J.getColumn(a,0,Gte),u=J.getColumn(a,1,zte),f=J.getColumn(a,2,Vte),h=d.add(c,u,gMe);d.add(h,f,h),d.add(h,s,h);let A=d.subtract(h,t,_Me),g=d.dot(n,A);return o=Math.min(g,o),r=Math.max(g,r),d.add(s,c,h),d.add(h,u,h),d.subtract(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.add(s,c,h),d.subtract(h,u,h),d.add(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.add(s,c,h),d.subtract(h,u,h),d.subtract(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.add(h,u,h),d.add(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.add(h,u,h),d.subtract(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.subtract(h,u,h),d.add(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),d.subtract(s,c,h),d.subtract(h,u,h),d.subtract(h,f,h),d.subtract(h,t,A),g=d.dot(n,A),o=Math.min(g,o),r=Math.max(g,r),i.start=o,i.stop=r,i};var yMe=new d,CMe=new d,EMe=new d;ji.computeCorners=function(e,t){l(t)||(t=[new d,new d,new d,new d,new d,new d,new d,new d]);let n=e.center,i=e.halfAxes,o=J.getColumn(i,0,yMe),r=J.getColumn(i,1,CMe),s=J.getColumn(i,2,EMe);return d.clone(n,t[0]),d.subtract(t[0],o,t[0]),d.subtract(t[0],r,t[0]),d.subtract(t[0],s,t[0]),d.clone(n,t[1]),d.subtract(t[1],o,t[1]),d.subtract(t[1],r,t[1]),d.add(t[1],s,t[1]),d.clone(n,t[2]),d.subtract(t[2],o,t[2]),d.add(t[2],r,t[2]),d.subtract(t[2],s,t[2]),d.clone(n,t[3]),d.subtract(t[3],o,t[3]),d.add(t[3],r,t[3]),d.add(t[3],s,t[3]),d.clone(n,t[4]),d.add(t[4],o,t[4]),d.subtract(t[4],r,t[4]),d.subtract(t[4],s,t[4]),d.clone(n,t[5]),d.add(t[5],o,t[5]),d.subtract(t[5],r,t[5]),d.add(t[5],s,t[5]),d.clone(n,t[6]),d.add(t[6],o,t[6]),d.add(t[6],r,t[6]),d.subtract(t[6],s,t[6]),d.clone(n,t[7]),d.add(t[7],o,t[7]),d.add(t[7],r,t[7]),d.add(t[7],s,t[7]),t};var IMe=new J;ji.computeTransformation=function(e,t){l(t)||(t=new R);let n=e.center,i=J.multiplyByUniformScale(e.halfAxes,2,IMe);return R.fromRotationTranslation(i,n,t)};var xMe=new le;ji.isOccluded=function(e,t){let n=le.fromOrientedBoundingBox(e,xMe);return!t.isBoundingSphereVisible(n)};ji.prototype.intersectPlane=function(e){return ji.intersectPlane(this,e)};ji.prototype.distanceSquaredTo=function(e){return ji.distanceSquaredTo(this,e)};ji.prototype.computePlaneDistances=function(e,t,n){return ji.computePlaneDistances(this,e,t,n)};ji.prototype.computeCorners=function(e){return ji.computeCorners(this,e)};ji.prototype.computeTransformation=function(e){return ji.computeTransformation(this,e)};ji.prototype.isOccluded=function(e){return ji.isOccluded(this,e)};ji.equals=function(e,t){return e===t||l(e)&&l(t)&&d.equals(e.center,t.center)&&J.equals(e.halfAxes,t.halfAxes)};ji.prototype.clone=function(e){return ji.clone(this,e)};ji.prototype.equals=function(e){return ji.equals(this,e)};var Qn=ji;var r1={};r1.getHeight=function(e,t,n){return(e-n)*t+n};var bMe=new Ae;r1.getPosition=function(e,t,n,i,o){let r=t.cartesianToCartographic(e,bMe);if(!l(r))return d.clone(e,o);let s=r1.getHeight(r.height,n,i);return d.fromRadians(r.longitude,r.latitude,s,t,o)};var Yr=r1;var Dr={CULL:1,OCCLUDE:2,EXECUTE_IN_CLOSEST_FRUSTUM:4,DEBUG_SHOW_BOUNDING_VOLUME:8,CAST_SHADOWS:16,RECEIVE_SHADOWS:32,PICK_ONLY:64,DEPTH_FOR_TRANSLUCENT_CLASSIFICATION:128};function aw(e){e=e??V.EMPTY_OBJECT,this._boundingVolume=e.boundingVolume,this._orientedBoundingBox=e.orientedBoundingBox,this._modelMatrix=e.modelMatrix,this._primitiveType=e.primitiveType??Me.TRIANGLES,this._vertexArray=e.vertexArray,this._count=e.count,this._offset=e.offset??0,this._instanceCount=e.instanceCount??0,this._shaderProgram=e.shaderProgram,this._uniformMap=e.uniformMap,this._renderState=e.renderState,this._framebuffer=e.framebuffer,this._pass=e.pass,this._owner=e.owner,this._debugOverlappingFrustums=0,this._pickId=e.pickId,this._pickMetadataAllowed=e.pickMetadataAllowed===!0,this._pickedMetadataInfo=void 0,this._flags=0,this.cull=e.cull??!0,this.occlude=e.occlude??!0,this.executeInClosestFrustum=e.executeInClosestFrustum??!1,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.castShadows=e.castShadows??!1,this.receiveShadows=e.receiveShadows??!1,this.pickOnly=e.pickOnly??!1,this.depthForTranslucentClassification=e.depthForTranslucentClassification??!1,this.dirty=!0,this.lastDirtyTime=0,this.derivedCommands={}}function Ec(e,t){return(e._flags&t)===t}function xg(e,t,n){n?e._flags|=t:e._flags&=~t}Object.defineProperties(aw.prototype,{boundingVolume:{get:function(){return this._boundingVolume},set:function(e){this._boundingVolume!==e&&(this._boundingVolume=e,this.dirty=!0)}},orientedBoundingBox:{get:function(){return this._orientedBoundingBox},set:function(e){this._orientedBoundingBox!==e&&(this._orientedBoundingBox=e,this.dirty=!0)}},cull:{get:function(){return Ec(this,Dr.CULL)},set:function(e){Ec(this,Dr.CULL)!==e&&(xg(this,Dr.CULL,e),this.dirty=!0)}},occlude:{get:function(){return Ec(this,Dr.OCCLUDE)},set:function(e){Ec(this,Dr.OCCLUDE)!==e&&(xg(this,Dr.OCCLUDE,e),this.dirty=!0)}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix!==e&&(this._modelMatrix=e,this.dirty=!0)}},primitiveType:{get:function(){return this._primitiveType},set:function(e){this._primitiveType!==e&&(this._primitiveType=e,this.dirty=!0)}},vertexArray:{get:function(){return this._vertexArray},set:function(e){this._vertexArray!==e&&(this._vertexArray=e,this.dirty=!0)}},count:{get:function(){return this._count},set:function(e){this._count!==e&&(this._count=e,this.dirty=!0)}},offset:{get:function(){return this._offset},set:function(e){this._offset!==e&&(this._offset=e,this.dirty=!0)}},instanceCount:{get:function(){return this._instanceCount},set:function(e){this._instanceCount!==e&&(this._instanceCount=e,this.dirty=!0)}},shaderProgram:{get:function(){return this._shaderProgram},set:function(e){this._shaderProgram!==e&&(this._shaderProgram=e,this.dirty=!0)}},castShadows:{get:function(){return Ec(this,Dr.CAST_SHADOWS)},set:function(e){Ec(this,Dr.CAST_SHADOWS)!==e&&(xg(this,Dr.CAST_SHADOWS,e),this.dirty=!0)}},receiveShadows:{get:function(){return Ec(this,Dr.RECEIVE_SHADOWS)},set:function(e){Ec(this,Dr.RECEIVE_SHADOWS)!==e&&(xg(this,Dr.RECEIVE_SHADOWS,e),this.dirty=!0)}},uniformMap:{get:function(){return this._uniformMap},set:function(e){this._uniformMap!==e&&(this._uniformMap=e,this.dirty=!0)}},renderState:{get:function(){return this._renderState},set:function(e){this._renderState!==e&&(this._renderState=e,this.dirty=!0)}},framebuffer:{get:function(){return this._framebuffer},set:function(e){this._framebuffer!==e&&(this._framebuffer=e,this.dirty=!0)}},pass:{get:function(){return this._pass},set:function(e){this._pass!==e&&(this._pass=e,this.dirty=!0)}},executeInClosestFrustum:{get:function(){return Ec(this,Dr.EXECUTE_IN_CLOSEST_FRUSTUM)},set:function(e){Ec(this,Dr.EXECUTE_IN_CLOSEST_FRUSTUM)!==e&&(xg(this,Dr.EXECUTE_IN_CLOSEST_FRUSTUM,e),this.dirty=!0)}},owner:{get:function(){return this._owner},set:function(e){this._owner!==e&&(this._owner=e,this.dirty=!0)}},debugShowBoundingVolume:{get:function(){return Ec(this,Dr.DEBUG_SHOW_BOUNDING_VOLUME)},set:function(e){Ec(this,Dr.DEBUG_SHOW_BOUNDING_VOLUME)!==e&&(xg(this,Dr.DEBUG_SHOW_BOUNDING_VOLUME,e),this.dirty=!0)}},debugOverlappingFrustums:{get:function(){return this._debugOverlappingFrustums},set:function(e){this._debugOverlappingFrustums!==e&&(this._debugOverlappingFrustums=e,this.dirty=!0)}},pickId:{get:function(){return this._pickId},set:function(e){this._pickId!==e&&(this._pickId=e,this.dirty=!0)}},pickMetadataAllowed:{get:function(){return this._pickMetadataAllowed}},pickedMetadataInfo:{get:function(){return this._pickedMetadataInfo},set:function(e){this._pickedMetadataInfo!==e&&(this._pickedMetadataInfo=e,this.dirty=!0)}},pickOnly:{get:function(){return Ec(this,Dr.PICK_ONLY)},set:function(e){Ec(this,Dr.PICK_ONLY)!==e&&(xg(this,Dr.PICK_ONLY,e),this.dirty=!0)}},depthForTranslucentClassification:{get:function(){return Ec(this,Dr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION)},set:function(e){Ec(this,Dr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION)!==e&&(xg(this,Dr.DEPTH_FOR_TRANSLUCENT_CLASSIFICATION,e),this.dirty=!0)}}});aw.shallowClone=function(e,t){if(l(e))return l(t)||(t=new aw),t._boundingVolume=e._boundingVolume,t._orientedBoundingBox=e._orientedBoundingBox,t._modelMatrix=e._modelMatrix,t._primitiveType=e._primitiveType,t._vertexArray=e._vertexArray,t._count=e._count,t._offset=e._offset,t._instanceCount=e._instanceCount,t._shaderProgram=e._shaderProgram,t._uniformMap=e._uniformMap,t._renderState=e._renderState,t._framebuffer=e._framebuffer,t._pass=e._pass,t._owner=e._owner,t._debugOverlappingFrustums=e._debugOverlappingFrustums,t._pickId=e._pickId,t._pickMetadataAllowed=e._pickMetadataAllowed,t._pickedMetadataInfo=e._pickedMetadataInfo,t._flags=e._flags,t.dirty=!0,t.lastDirtyTime=0,t};aw.prototype.execute=function(e,t){e.draw(this,t)};var nt=aw;var TMe={ENVIRONMENT:0,COMPUTE:1,GLOBE:2,TERRAIN_CLASSIFICATION:3,CESIUM_3D_TILE:4,CESIUM_3D_TILE_CLASSIFICATION:5,CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW:6,OPAQUE:7,TRANSLUCENT:8,VOXELS:9,GAUSSIAN_SPLATS:10,OVERLAY:11,NUMBER_OF_PASSES:12},Be=Object.freeze(TMe);var s1={CLOCKWISE:ee.CW,COUNTER_CLOCKWISE:ee.CCW};s1.validate=function(e){return e===s1.CLOCKWISE||e===s1.COUNTER_CLOCKWISE};var Gs=Object.freeze(s1);function Hte(e){if(typeof e!="object"||e===null)return e;let t,n=Object.keys(e);for(let i=0;i<n.length;i++)t=n[i],e.hasOwnProperty(t)&&t!=="_applyFunctions"&&(e[t]=Hte(e[t]));return Object.freeze(e)}var Wte=Hte;function om(e){let t=e??V.EMPTY_OBJECT,n=t.cull??V.EMPTY_OBJECT,i=t.polygonOffset??V.EMPTY_OBJECT,o=t.scissorTest??V.EMPTY_OBJECT,r=o.rectangle??V.EMPTY_OBJECT,s=t.depthRange??V.EMPTY_OBJECT,a=t.depthTest??V.EMPTY_OBJECT,c=t.colorMask??V.EMPTY_OBJECT,u=t.blending??V.EMPTY_OBJECT,f=u.color??V.EMPTY_OBJECT,h=t.stencilTest??V.EMPTY_OBJECT,A=h.frontOperation??V.EMPTY_OBJECT,g=h.backOperation??V.EMPTY_OBJECT,m=t.sampleCoverage??V.EMPTY_OBJECT,_=t.viewport;this.frontFace=t.frontFace??Gs.COUNTER_CLOCKWISE,this.cull={enabled:n.enabled??!1,face:n.face??ee.BACK},this.lineWidth=t.lineWidth??1,this.polygonOffset={enabled:i.enabled??!1,factor:i.factor??0,units:i.units??0},this.scissorTest={enabled:o.enabled??!1,rectangle:Xe.clone(r)},this.depthRange={near:s.near??0,far:s.far??1},this.depthTest={enabled:a.enabled??!1,func:a.func??ee.LESS},this.colorMask={red:c.red??!0,green:c.green??!0,blue:c.blue??!0,alpha:c.alpha??!0},this.depthMask=t.depthMask??!0,this.stencilMask=t.stencilMask??-1,this.blending={enabled:u.enabled??!1,color:new G(f.red??0,f.green??0,f.blue??0,f.alpha??0),equationRgb:u.equationRgb??ee.FUNC_ADD,equationAlpha:u.equationAlpha??ee.FUNC_ADD,functionSourceRgb:u.functionSourceRgb??ee.ONE,functionSourceAlpha:u.functionSourceAlpha??ee.ONE,functionDestinationRgb:u.functionDestinationRgb??ee.ZERO,functionDestinationAlpha:u.functionDestinationAlpha??ee.ZERO},this.stencilTest={enabled:h.enabled??!1,frontFunction:h.frontFunction??ee.ALWAYS,backFunction:h.backFunction??ee.ALWAYS,reference:h.reference??0,mask:h.mask??-1,frontOperation:{fail:A.fail??ee.KEEP,zFail:A.zFail??ee.KEEP,zPass:A.zPass??ee.KEEP},backOperation:{fail:g.fail??ee.KEEP,zFail:g.zFail??ee.KEEP,zPass:g.zPass??ee.KEEP}},this.sampleCoverage={enabled:m.enabled??!1,value:m.value??1,invert:m.invert??!1},this.viewport=l(_)?new Xe(_.x,_.y,_.width,_.height):void 0,this.id=0,this._applyFunctions=[]}var SMe=0,im={};om.fromCache=function(e){let t=JSON.stringify(e),n=im[t];if(l(n))return++n.referenceCount,n.state;let i=new om(e),o=JSON.stringify(i);return n=im[o],l(n)||(i.id=SMe++,n={referenceCount:0,state:i},im[o]=n),++n.referenceCount,im[t]={referenceCount:1,state:n.state},n.state};om.removeFromCache=function(e){let t=new om(e),n=JSON.stringify(t),i=im[n],o=JSON.stringify(e),r=im[o];l(r)&&(--r.referenceCount,r.referenceCount===0&&(delete im[o],l(i)&&--i.referenceCount)),l(i)&&i.referenceCount===0&&delete im[n]};om.getCache=function(){return im};om.clearCache=function(){im={}};function EC(e,t,n){n?e.enable(t):e.disable(t)}function jte(e,t){e.frontFace(t.frontFace)}function Yte(e,t){let n=t.cull,i=n.enabled;EC(e,e.CULL_FACE,i),i&&e.cullFace(n.face)}function qte(e,t){e.lineWidth(t.lineWidth)}function Kte(e,t){let n=t.polygonOffset,i=n.enabled;EC(e,e.POLYGON_OFFSET_FILL,i),i&&e.polygonOffset(n.factor,n.units)}function Xte(e,t,n){let i=t.scissorTest,o=l(n.scissorTest)?n.scissorTest.enabled:i.enabled;if(EC(e,e.SCISSOR_TEST,o),o){let r=l(n.scissorTest)?n.scissorTest.rectangle:i.rectangle;e.scissor(r.x,r.y,r.width,r.height)}}function Jte(e,t){let n=t.depthRange;e.depthRange(n.near,n.far)}function Zte(e,t){let n=t.depthTest,i=n.enabled;EC(e,e.DEPTH_TEST,i),i&&e.depthFunc(n.func)}function $te(e,t){let n=t.colorMask;e.colorMask(n.red,n.green,n.blue,n.alpha)}function ene(e,t){e.depthMask(t.depthMask)}function tne(e,t){e.stencilMask(t.stencilMask)}function wMe(e,t){e.blendColor(t.red,t.green,t.blue,t.alpha)}function nne(e,t,n){let i=t.blending,o=l(n.blendingEnabled)?n.blendingEnabled:i.enabled;EC(e,e.BLEND,o),o&&(wMe(e,i.color),e.blendEquationSeparate(i.equationRgb,i.equationAlpha),e.blendFuncSeparate(i.functionSourceRgb,i.functionDestinationRgb,i.functionSourceAlpha,i.functionDestinationAlpha))}function ine(e,t){let n=t.stencilTest,i=n.enabled;if(EC(e,e.STENCIL_TEST,i),i){let o=n.frontFunction,r=n.backFunction,s=n.reference,a=n.mask;e.stencilFunc(o,s,a),e.stencilFuncSeparate(e.BACK,r,s,a),e.stencilFuncSeparate(e.FRONT,o,s,a);let c=n.frontOperation,u=c.fail,f=c.zFail,h=c.zPass;e.stencilOpSeparate(e.FRONT,u,f,h);let A=n.backOperation,g=A.fail,m=A.zFail,_=A.zPass;e.stencilOpSeparate(e.BACK,g,m,_)}}function one(e,t){let n=t.sampleCoverage,i=n.enabled;EC(e,e.SAMPLE_COVERAGE,i),i&&e.sampleCoverage(n.value,n.invert)}var BMe=new Xe;function rne(e,t,n){let i=t.viewport??n.viewport;l(i)||(i=BMe,i.width=n.context.drawingBufferWidth,i.height=n.context.drawingBufferHeight),n.context.uniformState.viewport=i,e.viewport(i.x,i.y,i.width,i.height)}om.apply=function(e,t,n){jte(e,t),Yte(e,t),qte(e,t),Kte(e,t),Jte(e,t),Zte(e,t),$te(e,t),ene(e,t),tne(e,t),ine(e,t),one(e,t),Xte(e,t,n),nne(e,t,n),rne(e,t,n)};function DMe(e,t){let n=[];return e.frontFace!==t.frontFace&&n.push(jte),(e.cull.enabled!==t.cull.enabled||e.cull.face!==t.cull.face)&&n.push(Yte),e.lineWidth!==t.lineWidth&&n.push(qte),(e.polygonOffset.enabled!==t.polygonOffset.enabled||e.polygonOffset.factor!==t.polygonOffset.factor||e.polygonOffset.units!==t.polygonOffset.units)&&n.push(Kte),(e.depthRange.near!==t.depthRange.near||e.depthRange.far!==t.depthRange.far)&&n.push(Jte),(e.depthTest.enabled!==t.depthTest.enabled||e.depthTest.func!==t.depthTest.func)&&n.push(Zte),(e.colorMask.red!==t.colorMask.red||e.colorMask.green!==t.colorMask.green||e.colorMask.blue!==t.colorMask.blue||e.colorMask.alpha!==t.colorMask.alpha)&&n.push($te),e.depthMask!==t.depthMask&&n.push(ene),e.stencilMask!==t.stencilMask&&n.push(tne),(e.stencilTest.enabled!==t.stencilTest.enabled||e.stencilTest.frontFunction!==t.stencilTest.frontFunction||e.stencilTest.backFunction!==t.stencilTest.backFunction||e.stencilTest.reference!==t.stencilTest.reference||e.stencilTest.mask!==t.stencilTest.mask||e.stencilTest.frontOperation.fail!==t.stencilTest.frontOperation.fail||e.stencilTest.frontOperation.zFail!==t.stencilTest.frontOperation.zFail||e.stencilTest.backOperation.fail!==t.stencilTest.backOperation.fail||e.stencilTest.backOperation.zFail!==t.stencilTest.backOperation.zFail||e.stencilTest.backOperation.zPass!==t.stencilTest.backOperation.zPass)&&n.push(ine),(e.sampleCoverage.enabled!==t.sampleCoverage.enabled||e.sampleCoverage.value!==t.sampleCoverage.value||e.sampleCoverage.invert!==t.sampleCoverage.invert)&&n.push(one),n}om.partialApply=function(e,t,n,i,o,r){if(t!==n){let f=n._applyFunctions[t.id];l(f)||(f=DMe(t,n),n._applyFunctions[t.id]=f);let h=f.length;for(let A=0;A<h;++A)f[A](e,n)}let s=l(i.scissorTest)?i.scissorTest:t.scissorTest,a=l(o.scissorTest)?o.scissorTest:n.scissorTest;(s!==a||r)&&Xte(e,n,o);let c=l(i.blendingEnabled)?i.blendingEnabled:t.blending.enabled,u=l(o.blendingEnabled)?o.blendingEnabled:n.blending.enabled;(c!==u||u&&t.blending!==n.blending)&&nne(e,n,o),(t!==n||i!==o||i.context!==o.context)&&rne(e,n,o)};om.getState=function(e){return{frontFace:e.frontFace,cull:{enabled:e.cull.enabled,face:e.cull.face},lineWidth:e.lineWidth,polygonOffset:{enabled:e.polygonOffset.enabled,factor:e.polygonOffset.factor,units:e.polygonOffset.units},scissorTest:{enabled:e.scissorTest.enabled,rectangle:Xe.clone(e.scissorTest.rectangle)},depthRange:{near:e.depthRange.near,far:e.depthRange.far},depthTest:{enabled:e.depthTest.enabled,func:e.depthTest.func},colorMask:{red:e.colorMask.red,green:e.colorMask.green,blue:e.colorMask.blue,alpha:e.colorMask.alpha},depthMask:e.depthMask,stencilMask:e.stencilMask,blending:{enabled:e.blending.enabled,color:G.clone(e.blending.color),equationRgb:e.blending.equationRgb,equationAlpha:e.blending.equationAlpha,functionSourceRgb:e.blending.functionSourceRgb,functionSourceAlpha:e.blending.functionSourceAlpha,functionDestinationRgb:e.blending.functionDestinationRgb,functionDestinationAlpha:e.blending.functionDestinationAlpha},stencilTest:{enabled:e.stencilTest.enabled,frontFunction:e.stencilTest.frontFunction,backFunction:e.stencilTest.backFunction,reference:e.stencilTest.reference,mask:e.stencilTest.mask,frontOperation:{fail:e.stencilTest.frontOperation.fail,zFail:e.stencilTest.frontOperation.zFail,zPass:e.stencilTest.frontOperation.zPass},backOperation:{fail:e.stencilTest.backOperation.fail,zFail:e.stencilTest.backOperation.zFail,zPass:e.stencilTest.backOperation.zPass}},sampleCoverage:{enabled:e.sampleCoverage.enabled,value:e.sampleCoverage.value,invert:e.sampleCoverage.invert},viewport:l(e.viewport)?Xe.clone(e.viewport):void 0}};var Ue=om;var vMe=new d;function Lt(e){this._size=e.size,this._datatype=e.datatype,this.getValue=e.getValue}var Ta={};Ta[ee.FLOAT]="float";Ta[ee.FLOAT_VEC2]="vec2";Ta[ee.FLOAT_VEC3]="vec3";Ta[ee.FLOAT_VEC4]="vec4";Ta[ee.INT]="int";Ta[ee.INT_VEC2]="ivec2";Ta[ee.INT_VEC3]="ivec3";Ta[ee.INT_VEC4]="ivec4";Ta[ee.BOOL]="bool";Ta[ee.BOOL_VEC2]="bvec2";Ta[ee.BOOL_VEC3]="bvec3";Ta[ee.BOOL_VEC4]="bvec4";Ta[ee.FLOAT_MAT2]="mat2";Ta[ee.FLOAT_MAT3]="mat3";Ta[ee.FLOAT_MAT4]="mat4";Ta[ee.SAMPLER_2D]="sampler2D";Ta[ee.SAMPLER_CUBE]="samplerCube";Lt.prototype.getDeclaration=function(e){let t=`uniform ${Ta[this._datatype]} ${e}`,n=this._size;return n===1?t+=";":t+=`[${n.toString()}];`,t};var PMe={czm_viewport:new Lt({size:1,datatype:ee.FLOAT_VEC4,getValue:function(e){return e.viewportCartesian4}}),czm_viewportOrthographic:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.viewportOrthographic}}),czm_viewportTransformation:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.viewportTransformation}}),czm_globeDepthTexture:new Lt({size:1,datatype:ee.SAMPLER_2D,getValue:function(e){return e.globeDepthTexture}}),czm_model:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.model}}),czm_inverseModel:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseModel}}),czm_view:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.view}}),czm_view3D:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.view3D}}),czm_viewRotation:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.viewRotation}}),czm_viewRotation3D:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.viewRotation3D}}),czm_inverseView:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseView}}),czm_inverseView3D:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseView3D}}),czm_inverseViewRotation:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.inverseViewRotation}}),czm_inverseViewRotation3D:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.inverseViewRotation3D}}),czm_projection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.projection}}),czm_inverseProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseProjection}}),czm_infiniteProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.infiniteProjection}}),czm_modelView:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelView}}),czm_modelView3D:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelView3D}}),czm_modelViewRelativeToEye:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelViewRelativeToEye}}),czm_inverseModelView:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseModelView}}),czm_inverseModelView3D:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseModelView3D}}),czm_viewProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.viewProjection}}),czm_inverseViewProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseViewProjection}}),czm_modelViewProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelViewProjection}}),czm_inverseModelViewProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.inverseModelViewProjection}}),czm_modelViewProjectionRelativeToEye:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelViewProjectionRelativeToEye}}),czm_modelViewInfiniteProjection:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelViewInfiniteProjection}}),czm_orthographicIn3D:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.orthographicIn3D?1:0}}),czm_normal:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.normal}}),czm_normal3D:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.normal3D}}),czm_inverseNormal:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.inverseNormal}}),czm_inverseNormal3D:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.inverseNormal3D}}),czm_eyeHeight:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.eyeHeight}}),czm_eyeHeight2D:new Lt({size:1,datatype:ee.FLOAT_VEC2,getValue:function(e){return e.eyeHeight2D}}),czm_eyeEllipsoidNormalEC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.eyeEllipsoidNormalEC}}),czm_eyeEllipsoidCurvature:new Lt({size:1,datatype:ee.FLOAT_VEC2,getValue:function(e){return e.eyeEllipsoidCurvature}}),czm_modelToEnu:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.modelToEnu}}),czm_enuToModel:new Lt({size:1,datatype:ee.FLOAT_MAT4,getValue:function(e){return e.enuToModel}}),czm_entireFrustum:new Lt({size:1,datatype:ee.FLOAT_VEC2,getValue:function(e){return e.entireFrustum}}),czm_currentFrustum:new Lt({size:1,datatype:ee.FLOAT_VEC2,getValue:function(e){return e.currentFrustum}}),czm_frustumPlanes:new Lt({size:1,datatype:ee.FLOAT_VEC4,getValue:function(e){return e.frustumPlanes}}),czm_farDepthFromNearPlusOne:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.farDepthFromNearPlusOne}}),czm_log2FarDepthFromNearPlusOne:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.log2FarDepthFromNearPlusOne}}),czm_oneOverLog2FarDepthFromNearPlusOne:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.oneOverLog2FarDepthFromNearPlusOne}}),czm_sunPositionWC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sunPositionWC}}),czm_sunPositionColumbusView:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sunPositionColumbusView}}),czm_sunDirectionEC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sunDirectionEC}}),czm_sunDirectionWC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sunDirectionWC}}),czm_moonDirectionEC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.moonDirectionEC}}),czm_lightDirectionEC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.lightDirectionEC}}),czm_lightDirectionWC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.lightDirectionWC}}),czm_lightColor:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.lightColor}}),czm_lightColorHdr:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.lightColorHdr}}),czm_encodedCameraPositionMCHigh:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.encodedCameraPositionMCHigh}}),czm_encodedCameraPositionMCLow:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.encodedCameraPositionMCLow}}),czm_viewerPositionWC:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return R.getTranslation(e.inverseView,vMe)}}),czm_frameNumber:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.frameState.frameNumber}}),czm_morphTime:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.frameState.morphTime}}),czm_sceneMode:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.frameState.mode}}),czm_pass:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.pass}}),czm_backgroundColor:new Lt({size:1,datatype:ee.FLOAT_VEC4,getValue:function(e){return e.backgroundColor}}),czm_brdfLut:new Lt({size:1,datatype:ee.SAMPLER_2D,getValue:function(e){return e.brdfLut}}),czm_environmentMap:new Lt({size:1,datatype:ee.SAMPLER_CUBE,getValue:function(e){return e.environmentMap}}),czm_specularEnvironmentMaps:new Lt({size:1,datatype:ee.SAMPLER_CUBE,getValue:function(e){return e.specularEnvironmentMaps}}),czm_specularEnvironmentMapsMaximumLOD:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.specularEnvironmentMapsMaximumLOD}}),czm_sphericalHarmonicCoefficients:new Lt({size:9,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.sphericalHarmonicCoefficients}}),czm_temeToPseudoFixed:new Lt({size:1,datatype:ee.FLOAT_MAT3,getValue:function(e){return e.temeToPseudoFixedMatrix}}),czm_pixelRatio:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.pixelRatio}}),czm_fogDensity:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.fogDensity}}),czm_fogVisualDensityScalar:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.fogVisualDensityScalar}}),czm_fogMinimumBrightness:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.fogMinimumBrightness}}),czm_atmosphereHsbShift:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.atmosphereHsbShift}}),czm_atmosphereLightIntensity:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereLightIntensity}}),czm_atmosphereRayleighCoefficient:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.atmosphereRayleighCoefficient}}),czm_atmosphereRayleighScaleHeight:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereRayleighScaleHeight}}),czm_atmosphereMieCoefficient:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.atmosphereMieCoefficient}}),czm_atmosphereMieScaleHeight:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereMieScaleHeight}}),czm_atmosphereMieAnisotropy:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereMieAnisotropy}}),czm_atmosphereDynamicLighting:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.atmosphereDynamicLighting}}),czm_splitPosition:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.splitPosition}}),czm_geometricToleranceOverMeter:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.geometricToleranceOverMeter}}),czm_minimumDisableDepthTestDistance:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.minimumDisableDepthTestDistance}}),czm_invertClassificationColor:new Lt({size:1,datatype:ee.FLOAT_VEC4,getValue:function(e){return e.invertClassificationColor}}),czm_gamma:new Lt({size:1,datatype:ee.FLOAT,getValue:function(e){return e.gamma}}),czm_ellipsoidRadii:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.ellipsoid.radii}}),czm_ellipsoidInverseRadii:new Lt({size:1,datatype:ee.FLOAT_VEC3,getValue:function(e){return e.ellipsoid.oneOverRadii}})},bg=PMe;function RMe(e,t,n,i){switch(t.type){case e.FLOAT:return new sne(e,t,n,i);case e.FLOAT_VEC2:return new ane(e,t,n,i);case e.FLOAT_VEC3:return new cne(e,t,n,i);case e.FLOAT_VEC4:return new lne(e,t,n,i);case e.SAMPLER_2D:case e.SAMPLER_3D:case e.SAMPLER_CUBE:return new a1(e,t,n,i);case e.UNSIGNED_INT_SAMPLER_2D:return new a1(e,t,n,i);case e.INT:case e.BOOL:return new une(e,t,n,i);case e.INT_VEC2:case e.BOOL_VEC2:return new fne(e,t,n,i);case e.INT_VEC3:case e.BOOL_VEC3:return new dne(e,t,n,i);case e.INT_VEC4:case e.BOOL_VEC4:return new hne(e,t,n,i);case e.FLOAT_MAT2:return new mne(e,t,n,i);case e.FLOAT_MAT3:return new Ane(e,t,n,i);case e.FLOAT_MAT4:return new pne(e,t,n,i);default:throw new ce(`Unrecognized uniform type: ${t.type} for uniform "${n}".`)}}function sne(e,t,n,i){this.name=n,this.value=void 0,this._value=0,this._gl=e,this._location=i}sne.prototype.set=function(){this.value!==this._value&&(this._value=this.value,this._gl.uniform1f(this._location,this.value))};function ane(e,t,n,i){this.name=n,this.value=void 0,this._value=new k,this._gl=e,this._location=i}ane.prototype.set=function(){let e=this.value;k.equals(e,this._value)||(k.clone(e,this._value),this._gl.uniform2f(this._location,e.x,e.y))};function cne(e,t,n,i){this.name=n,this.value=void 0,this._value=void 0,this._gl=e,this._location=i}cne.prototype.set=function(){let e=this.value;l(e.red)?G.equals(e,this._value)||(this._value=G.clone(e,this._value),this._gl.uniform3f(this._location,e.red,e.green,e.blue)):l(e.x)&&(d.equals(e,this._value)||(this._value=d.clone(e,this._value),this._gl.uniform3f(this._location,e.x,e.y,e.z)))};function lne(e,t,n,i){this.name=n,this.value=void 0,this._value=void 0,this._gl=e,this._location=i}lne.prototype.set=function(){let e=this.value;l(e.red)?G.equals(e,this._value)||(this._value=G.clone(e,this._value),this._gl.uniform4f(this._location,e.red,e.green,e.blue,e.alpha)):l(e.x)&&(se.equals(e,this._value)||(this._value=se.clone(e,this._value),this._gl.uniform4f(this._location,e.x,e.y,e.z,e.w)))};function a1(e,t,n,i){this.name=n,this.value=void 0,this._gl=e,this._location=i,this.textureUnitIndex=void 0}a1.prototype.set=function(){let e=this._gl;e.activeTexture(e.TEXTURE0+this.textureUnitIndex);let t=this.value;e.bindTexture(t._target,t._texture)};a1.prototype._setSampler=function(e){return this.textureUnitIndex=e,this._gl.uniform1i(this._location,e),e+1};function une(e,t,n,i){this.name=n,this.value=void 0,this._value=0,this._gl=e,this._location=i}une.prototype.set=function(){this.value!==this._value&&(this._value=this.value,this._gl.uniform1i(this._location,this.value))};function fne(e,t,n,i){this.name=n,this.value=void 0,this._value=new k,this._gl=e,this._location=i}fne.prototype.set=function(){let e=this.value;k.equals(e,this._value)||(k.clone(e,this._value),this._gl.uniform2i(this._location,e.x,e.y))};function dne(e,t,n,i){this.name=n,this.value=void 0,this._value=new d,this._gl=e,this._location=i}dne.prototype.set=function(){let e=this.value;d.equals(e,this._value)||(d.clone(e,this._value),this._gl.uniform3i(this._location,e.x,e.y,e.z))};function hne(e,t,n,i){this.name=n,this.value=void 0,this._value=new se,this._gl=e,this._location=i}hne.prototype.set=function(){let e=this.value;se.equals(e,this._value)||(se.clone(e,this._value),this._gl.uniform4i(this._location,e.x,e.y,e.z,e.w))};var MMe=new Float32Array(4);function mne(e,t,n,i){this.name=n,this.value=void 0,this._value=new Wi,this._gl=e,this._location=i}mne.prototype.set=function(){if(!Wi.equalsArray(this.value,this._value,0)){Wi.clone(this.value,this._value);let e=Wi.toArray(this.value,MMe);this._gl.uniformMatrix2fv(this._location,!1,e)}};var NMe=new Float32Array(9);function Ane(e,t,n,i){this.name=n,this.value=void 0,this._value=new J,this._gl=e,this._location=i}Ane.prototype.set=function(){if(!J.equalsArray(this.value,this._value,0)){J.clone(this.value,this._value);let e=J.toArray(this.value,NMe);this._gl.uniformMatrix3fv(this._location,!1,e)}};var LMe=new Float32Array(16);function pne(e,t,n,i){this.name=n,this.value=void 0,this._value=new R,this._gl=e,this._location=i}pne.prototype.set=function(){if(!R.equalsArray(this.value,this._value,0)){R.clone(this.value,this._value);let e=R.toArray(this.value,LMe);this._gl.uniformMatrix4fv(this._location,!1,e)}};var c1=RMe;function OMe(e,t,n,i){switch(t.type){case e.FLOAT:return new gne(e,t,n,i);case e.FLOAT_VEC2:return new _ne(e,t,n,i);case e.FLOAT_VEC3:return new yne(e,t,n,i);case e.FLOAT_VEC4:return new Cne(e,t,n,i);case e.SAMPLER_2D:case e.SAMPLER_3D:case e.SAMPLER_CUBE:return new a6(e,t,n,i);case e.INT:case e.BOOL:return new Ene(e,t,n,i);case e.INT_VEC2:case e.BOOL_VEC2:return new Ine(e,t,n,i);case e.INT_VEC3:case e.BOOL_VEC3:return new xne(e,t,n,i);case e.INT_VEC4:case e.BOOL_VEC4:return new bne(e,t,n,i);case e.FLOAT_MAT2:return new Tne(e,t,n,i);case e.FLOAT_MAT3:return new Sne(e,t,n,i);case e.FLOAT_MAT4:return new wne(e,t,n,i);default:throw new ce(`Unrecognized uniform type: ${t.type} for uniform "${n}".`)}}function gne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o),this._gl=e,this._location=i[0]}gne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1;for(let o=0;o<t;++o){let r=e[o];r!==n[o]&&(n[o]=r,i=!0)}i&&this._gl.uniform1fv(this._location,n)};function _ne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*2),this._gl=e,this._location=i[0]}_ne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];k.equalsArray(s,n,o)||(k.pack(s,n,o),i=!0),o+=2}i&&this._gl.uniform2fv(this._location,n)};function yne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*3),this._gl=e,this._location=i[0]}yne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];l(s.red)?(s.red!==n[o]||s.green!==n[o+1]||s.blue!==n[o+2])&&(n[o]=s.red,n[o+1]=s.green,n[o+2]=s.blue,i=!0):l(s.x)&&(d.equalsArray(s,n,o)||(d.pack(s,n,o),i=!0)),o+=3}i&&this._gl.uniform3fv(this._location,n)};function Cne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*4),this._gl=e,this._location=i[0]}Cne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];l(s.red)?G.equalsArray(s,n,o)||(G.pack(s,n,o),i=!0):l(s.x)&&(se.equalsArray(s,n,o)||(se.pack(s,n,o),i=!0)),o+=4}i&&this._gl.uniform4fv(this._location,n)};function a6(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o),this._gl=e,this._locations=i,this.textureUnitIndex=void 0}a6.prototype.set=function(){let e=this._gl,t=e.TEXTURE0+this.textureUnitIndex,n=this.value,i=n.length;for(let o=0;o<i;++o){let r=n[o];e.activeTexture(t+o),e.bindTexture(r._target,r._texture)}};a6.prototype._setSampler=function(e){this.textureUnitIndex=e;let t=this._locations,n=t.length;for(let i=0;i<n;++i){let o=e+i;this._gl.uniform1i(t[i],o)}return e+n};function Ene(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o),this._gl=e,this._location=i[0]}Ene.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1;for(let o=0;o<t;++o){let r=e[o];r!==n[o]&&(n[o]=r,i=!0)}i&&this._gl.uniform1iv(this._location,n)};function Ine(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o*2),this._gl=e,this._location=i[0]}Ine.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];k.equalsArray(s,n,o)||(k.pack(s,n,o),i=!0),o+=2}i&&this._gl.uniform2iv(this._location,n)};function xne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o*3),this._gl=e,this._location=i[0]}xne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];d.equalsArray(s,n,o)||(d.pack(s,n,o),i=!0),o+=3}i&&this._gl.uniform3iv(this._location,n)};function bne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Int32Array(o*4),this._gl=e,this._location=i[0]}bne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];se.equalsArray(s,n,o)||(se.pack(s,n,o),i=!0),o+=4}i&&this._gl.uniform4iv(this._location,n)};function Tne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*4),this._gl=e,this._location=i[0]}Tne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];Wi.equalsArray(s,n,o)||(Wi.pack(s,n,o),i=!0),o+=4}i&&this._gl.uniformMatrix2fv(this._location,!1,n)};function Sne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*9),this._gl=e,this._location=i[0]}Sne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];J.equalsArray(s,n,o)||(J.pack(s,n,o),i=!0),o+=9}i&&this._gl.uniformMatrix3fv(this._location,!1,n)};function wne(e,t,n,i){let o=i.length;this.name=n,this.value=new Array(o),this._value=new Float32Array(o*16),this._gl=e,this._location=i[0]}wne.prototype.set=function(){let e=this.value,t=e.length,n=this._value,i=!1,o=0;for(let r=0;r<t;++r){let s=e[r];R.equalsArray(s,n,o)||(R.pack(s,n,o),i=!0),o+=16}i&&this._gl.uniformMatrix4fv(this._location,!1,n)};var l1=OMe;var FMe=0;function kA(e){let t=e.vertexShaderText,n=e.fragmentShaderText;typeof spector<"u"&&(t=t.replace(/^#line/gm,"//#line"),n=n.replace(/^#line/gm,"//#line"));let i=QMe(t,n);this._gl=e.gl,this._logShaderCompilation=e.logShaderCompilation,this._debugShaders=e.debugShaders,this._attributeLocations=e.attributeLocations,this._program=void 0,this._numberOfVertexAttributes=void 0,this._vertexAttributes=void 0,this._uniformsByName=void 0,this._uniforms=void 0,this._automaticUniforms=void 0,this._manualUniforms=void 0,this._duplicateUniformNames=i.duplicateUniformNames,this._cachedShader=void 0,this.maximumTextureUnitIndex=void 0,this._vertexShaderSource=e.vertexShaderSource,this._vertexShaderText=e.vertexShaderText,this._fragmentShaderSource=e.fragmentShaderSource,this._fragmentShaderText=i.fragmentShaderText,this.id=FMe++}kA.fromCache=function(e){return e=e??V.EMPTY_OBJECT,e.context.shaderCache.getShaderProgram(e)};kA.replaceCache=function(e){return e=e??V.EMPTY_OBJECT,e.context.shaderCache.replaceShaderProgram(e)};Object.defineProperties(kA.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},vertexAttributes:{get:function(){return u1(this),this._vertexAttributes}},numberOfVertexAttributes:{get:function(){return u1(this),this._numberOfVertexAttributes}},allUniforms:{get:function(){return u1(this),this._uniformsByName}}});function Bne(e){let t=[],n=e.match(/uniform.*?(?![^{]*})(?=[=\[;])/g);if(l(n)){let i=n.length;for(let o=0;o<i;o++){let r=n[o].trim(),s=r.slice(r.lastIndexOf(" ")+1);t.push(s)}}return t}function QMe(e,t){let n={};if(!qt.highpFloatSupported||!qt.highpIntSupported){let i,o,r,s,a=Bne(e),c=Bne(t),u=a.length,f=c.length;for(i=0;i<u;i++)for(o=0;o<f;o++)if(a[i]===c[o]){r=a[i],s=`czm_mediump_${r}`;let h=new RegExp(`${r}\\b`,"g");t=t.replace(h,s),n[s]=r}}return{fragmentShaderText:t,duplicateUniformNames:n}}var rm="[Cesium WebGL] ";function kMe(e,t){let n=t._vertexShaderText,i=t._fragmentShaderText,o=e.createShader(e.VERTEX_SHADER);e.shaderSource(o,n),e.compileShader(o);let r=e.createShader(e.FRAGMENT_SHADER);e.shaderSource(r,i),e.compileShader(r);let s=e.createProgram();e.attachShader(s,o),e.attachShader(s,r);let a=t._attributeLocations;if(l(a))for(let A in a)a.hasOwnProperty(A)&&e.bindAttribLocation(s,a[A],A);e.linkProgram(s);let c;if(e.getProgramParameter(s,e.LINK_STATUS))return t._logShaderCompilation&&(c=e.getShaderInfoLog(o),l(c)&&c.length>0&&console.log(`${rm}Vertex shader compile log: ${c}`),c=e.getShaderInfoLog(r),l(c)&&c.length>0&&console.log(`${rm}Fragment shader compile log: ${c}`),c=e.getProgramInfoLog(s),l(c)&&c.length>0&&console.log(`${rm}Shader program link log: ${c}`)),e.deleteShader(o),e.deleteShader(r),s;let u,f=t._debugShaders;throw e.getShaderParameter(r,e.COMPILE_STATUS)?e.getShaderParameter(o,e.COMPILE_STATUS)?(c=e.getProgramInfoLog(s),console.error(`${rm}Shader program link log: ${c}`),h(o,"vertex"),h(r,"fragment"),u=`Program failed to link. Link log: ${c}`):(c=e.getShaderInfoLog(o),console.error(`${rm}Vertex shader compile log: ${c}`),console.error(`${rm} Vertex shader source: +${n}`),u=`Vertex shader failed to compile. Compile log: ${c}`):(c=e.getShaderInfoLog(r),console.error(`${rm}Fragment shader compile log: ${c}`),console.error(`${rm} Fragment shader source: +${i}`),u=`Fragment shader failed to compile. Compile log: ${c}`),e.deleteShader(o),e.deleteShader(r),e.deleteProgram(s),new ce(u);function h(A,g){if(!l(f))return;let m=f.getTranslatedShaderSource(A);if(m===""){console.error(`${rm}${g} shader translation failed.`);return}console.error(`${rm}Translated ${g} shaderSource: +${m}`)}}function UMe(e,t,n){let i={};for(let o=0;o<n;++o){let r=e.getActiveAttrib(t,o),s=e.getAttribLocation(t,r.name);i[r.name]={name:r.name,type:r.type,index:s}}return i}function GMe(e,t){let n={},i=[],o=[],r=e.getProgramParameter(t,e.ACTIVE_UNIFORMS);for(let s=0;s<r;++s){let a=e.getActiveUniform(t,s),c="[0]",u=a.name.indexOf(c,a.name.length-c.length)!==-1?a.name.slice(0,a.name.length-3):a.name;if(u.indexOf("gl_")!==0)if(a.name.indexOf("[")<0){let f=e.getUniformLocation(t,u);if(f!==null){let h=c1(e,a,u,f);n[u]=h,i.push(h),h._setSampler&&o.push(h)}}else{let f,h,A,g,m=u.indexOf("[");if(m>=0){if(f=n[u.slice(0,m)],!l(f))continue;h=f._locations,h.length<=1&&(A=f.value,g=e.getUniformLocation(t,u),g!==null&&(h.push(g),A.push(e.getUniform(t,g))))}else{h=[];for(let _=0;_<a.size;++_)g=e.getUniformLocation(t,`${u}[${_}]`),g!==null&&h.push(g);f=l1(e,a,u,h),n[u]=f,i.push(f),f._setSampler&&o.push(f)}}}return{uniformsByName:n,uniforms:i,samplerUniforms:o}}function zMe(e,t){let n=[],i=[];for(let o in t)if(t.hasOwnProperty(o)){let r=t[o],s=o,a=e._duplicateUniformNames[s];l(a)&&(r.name=a,s=a);let c=bg[s];l(c)?n.push({uniform:r,automaticUniform:c}):i.push(r)}return{automaticUniforms:n,manualUniforms:i}}function VMe(e,t,n){e.useProgram(t);let i=0,o=n.length;for(let r=0;r<o;++r)i=n[r]._setSampler(i);return e.useProgram(null),i}function u1(e){l(e._program)||Dne(e)}function Dne(e){let t=e._program,n=e._gl,i=kMe(n,e,e._debugShaders),o=n.getProgramParameter(i,n.ACTIVE_ATTRIBUTES),r=GMe(n,i),s=zMe(e,r.uniformsByName);e._program=i,e._numberOfVertexAttributes=o,e._vertexAttributes=UMe(n,i,o),e._uniformsByName=r.uniformsByName,e._uniforms=r.uniforms,e._automaticUniforms=s.automaticUniforms,e._manualUniforms=s.manualUniforms,e.maximumTextureUnitIndex=VMe(n,i,r.samplerUniforms),t&&e._gl.deleteProgram(t),typeof spector<"u"&&(e._program.__SPECTOR_rebuildProgram=function(a,c,u,f){let h=e._vertexShaderText,A=e._fragmentShaderText,g=/ ! = /g;e._vertexShaderText=a.replace(g," != "),e._fragmentShaderText=c.replace(g," != ");try{Dne(e),u(e._program)}catch(m){e._vertexShaderText=h,e._fragmentShaderText=A;let y=/(?:Compile|Link) error: ([^]*)/.exec(m.message);f(y?y[1]:m.message)}})}kA.prototype._bind=function(){u1(this),this._gl.useProgram(this._program)};kA.prototype._setUniforms=function(e,t,n){let i,o;if(l(e)){let a=this._manualUniforms;for(i=a.length,o=0;o<i;++o){let c=a[o];c.value=e[c.name]()}}let r=this._automaticUniforms;for(i=r.length,o=0;o<i;++o){let a=r[o];a.uniform.value=a.automaticUniform.getValue(t)}let s=this._uniforms;for(i=s.length,o=0;o<i;++o)s[o].set();if(n){let a=this._gl,c=this._program;a.validateProgram(c)}};kA.prototype.isDestroyed=function(){return!1};kA.prototype.destroy=function(){this._cachedShader.cache.releaseShaderProgram(this)};kA.prototype.finalDestroy=function(){return this._gl.deleteProgram(this._program),ue(this)};var ln=kA;var f1=`/** + * A built-in GLSL floating-point constant for converting radians to degrees. + * + * @alias czm_degreesPerRadian + * @glslConstant + * + * @see CesiumMath.DEGREES_PER_RADIAN + * + * @example + * // GLSL declaration + * const float czm_degreesPerRadian = ...; + * + * // Example + * float deg = czm_degreesPerRadian * rad; + */ +const float czm_degreesPerRadian = 57.29577951308232; +`;var d1=`/** + * A built-in GLSL vec2 constant for defining the depth range. + * This is a workaround to a bug where IE11 does not implement gl_DepthRange. + * + * @alias czm_depthRange + * @glslConstant + * + * @example + * // GLSL declaration + * float depthRangeNear = czm_depthRange.near; + * float depthRangeFar = czm_depthRange.far; + * + */ +const czm_depthRangeStruct czm_depthRange = czm_depthRangeStruct(0.0, 1.0); +`;var h1=`/** + * 0.1 + * + * @name czm_epsilon1 + * @glslConstant + */ +const float czm_epsilon1 = 0.1; +`;var m1=`/** + * 0.01 + * + * @name czm_epsilon2 + * @glslConstant + */ +const float czm_epsilon2 = 0.01; +`;var A1=`/** + * 0.001 + * + * @name czm_epsilon3 + * @glslConstant + */ +const float czm_epsilon3 = 0.001; +`;var p1=`/** + * 0.0001 + * + * @name czm_epsilon4 + * @glslConstant + */ +const float czm_epsilon4 = 0.0001; +`;var g1=`/** + * 0.00001 + * + * @name czm_epsilon5 + * @glslConstant + */ +const float czm_epsilon5 = 0.00001; +`;var _1=`/** + * 0.000001 + * + * @name czm_epsilon6 + * @glslConstant + */ +const float czm_epsilon6 = 0.000001; +`;var y1=`/** + * 0.0000001 + * + * @name czm_epsilon7 + * @glslConstant + */ +const float czm_epsilon7 = 0.0000001; +`;var C1=`/** + * DOC_TBA + * + * @name czm_infinity + * @glslConstant + */ +const float czm_infinity = 5906376272000.0; // Distance from the Sun to Pluto in meters. TODO: What is best given lowp, mediump, and highp? +`;var E1=`/** + * A built-in GLSL floating-point constant for <code>1/pi</code>. + * + * @alias czm_oneOverPi + * @glslConstant + * + * @see CesiumMath.ONE_OVER_PI + * + * @example + * // GLSL declaration + * const float czm_oneOverPi = ...; + * + * // Example + * float pi = 1.0 / czm_oneOverPi; + */ +const float czm_oneOverPi = 0.3183098861837907; +`;var I1=`/** + * A built-in GLSL floating-point constant for <code>1/2pi</code>. + * + * @alias czm_oneOverTwoPi + * @glslConstant + * + * @see CesiumMath.ONE_OVER_TWO_PI + * + * @example + * // GLSL declaration + * const float czm_oneOverTwoPi = ...; + * + * // Example + * float pi = 2.0 * czm_oneOverTwoPi; + */ +const float czm_oneOverTwoPi = 0.15915494309189535; +`;var x1=`/** + * The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE} + * + * @name czm_passCesium3DTile + * @glslConstant + * + * @see czm_pass + */ +const float czm_passCesium3DTile = 4.0; +`;var b1=`/** + * The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE_CLASSIFICATION} + * + * @name czm_passCesium3DTileClassification + * @glslConstant + * + * @see czm_pass + */ +const float czm_passCesium3DTileClassification = 5.0; +`;var T1=`/** + * The automatic GLSL constant for {@link Pass#CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW} + * + * @name czm_passCesium3DTileClassificationIgnoreShow + * @glslConstant + * + * @see czm_pass + */ +const float czm_passCesium3DTileClassificationIgnoreShow = 6.0; +`;var S1=`/** + * The automatic GLSL constant for {@link Pass#CLASSIFICATION} + * + * @name czm_passClassification + * @glslConstant + * + * @see czm_pass + */ +const float czm_passClassification = 7.0; +`;var w1=`/** + * The automatic GLSL constant for {@link Pass#COMPUTE} + * + * @name czm_passCompute + * @glslConstant + * + * @see czm_pass + */ +const float czm_passCompute = 1.0; +`;var B1=`/** + * The automatic GLSL constant for {@link Pass#ENVIRONMENT} + * + * @name czm_passEnvironment + * @glslConstant + * + * @see czm_pass + */ +const float czm_passEnvironment = 0.0; +`;var D1=`/** + * The automatic GLSL constant for {@link Pass#GAUSSIAN_SPLATS} + * + * @name czm_passGaussianSplats + * @glslConstant + * + * @see czm_pass + */ +const float czm_passGaussianSplats = 10.0; +`;var v1=`/** + * The automatic GLSL constant for {@link Pass#GLOBE} + * + * @name czm_passGlobe + * @glslConstant + * + * @see czm_pass + */ +const float czm_passGlobe = 2.0; +`;var P1=`/** + * The automatic GLSL constant for {@link Pass#OPAQUE} + * + * @name czm_passOpaque + * @glslConstant + * + * @see czm_pass + */ +const float czm_passOpaque = 7.0; +`;var R1=`/** + * The automatic GLSL constant for {@link Pass#OVERLAY} + * + * @name czm_passOverlay + * @glslConstant + * + * @see czm_pass + */ +const float czm_passOverlay = 11.0; +`;var M1=`/** + * The automatic GLSL constant for {@link Pass#TERRAIN_CLASSIFICATION} + * + * @name czm_passTerrainClassification + * @glslConstant + * + * @see czm_pass + */ +const float czm_passTerrainClassification = 3.0; +`;var N1=`/** + * The automatic GLSL constant for {@link Pass#TRANSLUCENT} + * + * @name czm_passTranslucent + * @glslConstant + * + * @see czm_pass + */ +const float czm_passTranslucent = 8.0; +`;var L1=`/** + * The automatic GLSL constant for {@link Pass#VOXELS} + * + * @name czm_passVoxels + * @glslConstant + * + * @see czm_pass + */ +const float czm_passVoxels = 9.0; +`;var O1=`/** + * A built-in GLSL floating-point constant for <code>Math.PI</code>. + * + * @alias czm_pi + * @glslConstant + * + * @see CesiumMath.PI + * + * @example + * // GLSL declaration + * const float czm_pi = ...; + * + * // Example + * float twoPi = 2.0 * czm_pi; + */ +const float czm_pi = 3.141592653589793; +`;var F1=`/** + * A built-in GLSL floating-point constant for <code>pi/4</code>. + * + * @alias czm_piOverFour + * @glslConstant + * + * @see CesiumMath.PI_OVER_FOUR + * + * @example + * // GLSL declaration + * const float czm_piOverFour = ...; + * + * // Example + * float pi = 4.0 * czm_piOverFour; + */ +const float czm_piOverFour = 0.7853981633974483; +`;var Q1=`/** + * A built-in GLSL floating-point constant for <code>pi/6</code>. + * + * @alias czm_piOverSix + * @glslConstant + * + * @see CesiumMath.PI_OVER_SIX + * + * @example + * // GLSL declaration + * const float czm_piOverSix = ...; + * + * // Example + * float pi = 6.0 * czm_piOverSix; + */ +const float czm_piOverSix = 0.5235987755982988; +`;var k1=`/** + * A built-in GLSL floating-point constant for <code>pi/3</code>. + * + * @alias czm_piOverThree + * @glslConstant + * + * @see CesiumMath.PI_OVER_THREE + * + * @example + * // GLSL declaration + * const float czm_piOverThree = ...; + * + * // Example + * float pi = 3.0 * czm_piOverThree; + */ +const float czm_piOverThree = 1.0471975511965976; +`;var U1=`/** + * A built-in GLSL floating-point constant for <code>pi/2</code>. + * + * @alias czm_piOverTwo + * @glslConstant + * + * @see CesiumMath.PI_OVER_TWO + * + * @example + * // GLSL declaration + * const float czm_piOverTwo = ...; + * + * // Example + * float pi = 2.0 * czm_piOverTwo; + */ +const float czm_piOverTwo = 1.5707963267948966; +`;var G1=`/** + * A built-in GLSL floating-point constant for converting degrees to radians. + * + * @alias czm_radiansPerDegree + * @glslConstant + * + * @see CesiumMath.RADIANS_PER_DEGREE + * + * @example + * // GLSL declaration + * const float czm_radiansPerDegree = ...; + * + * // Example + * float rad = czm_radiansPerDegree * deg; + */ +const float czm_radiansPerDegree = 0.017453292519943295; +`;var z1=`/** + * The constant identifier for the 2D {@link SceneMode} + * + * @name czm_sceneMode2D + * @glslConstant + * @see czm_sceneMode + * @see czm_sceneModeColumbusView + * @see czm_sceneMode3D + * @see czm_sceneModeMorphing + */ +const float czm_sceneMode2D = 2.0; +`;var V1=`/** + * The constant identifier for the 3D {@link SceneMode} + * + * @name czm_sceneMode3D + * @glslConstant + * @see czm_sceneMode + * @see czm_sceneMode2D + * @see czm_sceneModeColumbusView + * @see czm_sceneModeMorphing + */ +const float czm_sceneMode3D = 3.0; +`;var H1=`/** + * The constant identifier for the Columbus View {@link SceneMode} + * + * @name czm_sceneModeColumbusView + * @glslConstant + * @see czm_sceneMode + * @see czm_sceneMode2D + * @see czm_sceneMode3D + * @see czm_sceneModeMorphing + */ +const float czm_sceneModeColumbusView = 1.0; +`;var W1=`/** + * The constant identifier for the Morphing {@link SceneMode} + * + * @name czm_sceneModeMorphing + * @glslConstant + * @see czm_sceneMode + * @see czm_sceneMode2D + * @see czm_sceneModeColumbusView + * @see czm_sceneMode3D + */ +const float czm_sceneModeMorphing = 0.0; +`;var j1=`/** + * A built-in GLSL floating-point constant for one solar radius. + * + * @alias czm_solarRadius + * @glslConstant + * + * @see CesiumMath.SOLAR_RADIUS + * + * @example + * // GLSL declaration + * const float czm_solarRadius = ...; + */ +const float czm_solarRadius = 695500000.0; +`;var Y1=`/** + * A built-in GLSL floating-point constant for <code>3pi/2</code>. + * + * @alias czm_threePiOver2 + * @glslConstant + * + * @see CesiumMath.THREE_PI_OVER_TWO + * + * @example + * // GLSL declaration + * const float czm_threePiOver2 = ...; + * + * // Example + * float pi = (2.0 / 3.0) * czm_threePiOver2; + */ +const float czm_threePiOver2 = 4.71238898038469; +`;var q1=`/** + * A built-in GLSL floating-point constant for <code>2pi</code>. + * + * @alias czm_twoPi + * @glslConstant + * + * @see CesiumMath.TWO_PI + * + * @example + * // GLSL declaration + * const float czm_twoPi = ...; + * + * // Example + * float pi = czm_twoPi / 2.0; + */ +const float czm_twoPi = 6.283185307179586; +`;var K1=`/** + * The maximum latitude, in radians, both North and South, supported by a Web Mercator + * (EPSG:3857) projection. Technically, the Mercator projection is defined + * for any latitude up to (but not including) 90 degrees, but it makes sense + * to cut it off sooner because it grows exponentially with increasing latitude. + * The logic behind this particular cutoff value, which is the one used by + * Google Maps, Bing Maps, and Esri, is that it makes the projection + * square. That is, the rectangle is equal in the X and Y directions. + * + * The constant value is computed as follows: + * czm_pi * 0.5 - (2.0 * atan(exp(-czm_pi))) + * + * @name czm_webMercatorMaxLatitude + * @glslConstant + */ +const float czm_webMercatorMaxLatitude = 1.4844222297453324; +`;var X1=`/** + * @name czm_depthRangeStruct + * @glslStruct + */ +struct czm_depthRangeStruct +{ + float near; + float far; +}; +`;var J1=`/** + * Holds material information that can be used for lighting. Returned by all czm_getMaterial functions. + * + * @name czm_material + * @glslStruct + * + * @property {vec3} diffuse Incoming light that scatters evenly in all directions. + * @property {float} specular Intensity of incoming light reflecting in a single direction. + * @property {float} shininess The sharpness of the specular reflection. Higher values create a smaller, more focused specular highlight. + * @property {vec3} normal Surface's normal in eye coordinates. It is used for effects such as normal mapping. The default is the surface's unmodified normal. + * @property {vec3} emission Light emitted by the material equally in all directions. The default is vec3(0.0), which emits no light. + * @property {float} alpha Alpha of this material. 0.0 is completely transparent; 1.0 is completely opaque. + */ +struct czm_material +{ + vec3 diffuse; + float specular; + float shininess; + vec3 normal; + vec3 emission; + float alpha; +}; +`;var Z1=`/** + * Used as input to every material's czm_getMaterial function. + * + * @name czm_materialInput + * @glslStruct + * + * @property {float} s 1D texture coordinates. + * @property {vec2} st 2D texture coordinates. + * @property {vec3} str 3D texture coordinates. + * @property {vec3} normalEC Unperturbed surface normal in eye coordinates. + * @property {mat3} tangentToEyeMatrix Matrix for converting a tangent space normal to eye space. + * @property {vec3} positionToEyeEC Vector from the fragment to the eye in eye coordinates. The magnitude is the distance in meters from the fragment to the eye. + * @property {float} height The height of the terrain in meters above or below the ellipsoid. Only available for globe materials. + * @property {float} slope The slope of the terrain in radians. 0 is flat; pi/2 is vertical. Only available for globe materials. + * @property {float} aspect The aspect of the terrain in radians. 0 is East, pi/2 is North, pi is West, 3pi/2 is South. Only available for globe materials. +* @property {float} waterMask The value of the water mask. 0 is land, 1 is water. Only available for globe materials. + */ +struct czm_materialInput +{ + float s; + vec2 st; + vec3 str; + vec3 normalEC; + mat3 tangentToEyeMatrix; + vec3 positionToEyeEC; + float height; + float slope; + float aspect; + float waterMask; +}; +`;var $1=`/** + * Struct for representing a material for a {@link Model}. The model + * rendering pipeline will pass this struct between material, custom shaders, + * and lighting stages. This is not to be confused with {@link czm_material} + * which is used by the older Fabric materials system, although they are similar. + * <p> + * All color values (diffuse, specular, emissive) are in linear color space. + * </p> + * + * @name czm_modelMaterial + * @glslStruct + * + * @property {vec4} baseColor The base color of the material. + * @property {vec3} diffuse Incoming light that scatters evenly in all directions. + * @property {float} alpha Alpha of this material. 0.0 is completely transparent; 1.0 is completely opaque. + * @property {vec3} specular Color of reflected light at normal incidence in PBR materials. This is sometimes referred to as f0 in the literature. + * @property {float} roughness A number from 0.0 to 1.0 representing how rough the surface is. Values near 0.0 produce glossy surfaces, while values near 1.0 produce rough surfaces. + * @property {vec3} normalEC Surface's normal in eye coordinates. It is used for effects such as normal mapping. The default is the surface's unmodified normal. + * @property {float} occlusion Ambient occlusion recieved at this point on the material. 1.0 means fully lit, 0.0 means fully occluded. + * @property {vec3} emissive Light emitted by the material equally in all directions. The default is vec3(0.0), which emits no light. + */ +struct czm_modelMaterial { + vec4 baseColor; + vec3 diffuse; + float alpha; + vec3 specular; + float roughness; + vec3 normalEC; + float occlusion; + vec3 emissive; +#ifdef USE_SPECULAR + float specularWeight; +#endif +#ifdef USE_ANISOTROPY + vec3 anisotropicT; + vec3 anisotropicB; + float anisotropyStrength; +#endif +#ifdef USE_CLEARCOAT + float clearcoatFactor; + float clearcoatRoughness; + vec3 clearcoatNormal; + // Add clearcoatF0 when KHR_materials_ior is implemented +#endif +}; +`;var eN=`/** + * Struct for representing the output of a custom vertex shader. + * + * @name czm_modelVertexOutput + * @glslStruct + * + * @see {@link CustomShader} + * @see {@link Model} + * + * @property {vec3} positionMC The position of the vertex in model coordinates + * @property {float} pointSize A custom value for gl_PointSize. This is only used for point primitives. + */ +struct czm_modelVertexOutput { + vec3 positionMC; + float pointSize; +}; +`;var tN=`/** + * DOC_TBA + * + * @name czm_ray + * @glslStruct + */ +struct czm_ray +{ + vec3 origin; + vec3 direction; +}; +`;var nN=`/** + * DOC_TBA + * + * @name czm_raySegment + * @glslStruct + */ +struct czm_raySegment +{ + float start; + float stop; +}; + +/** + * DOC_TBA + * + * @name czm_emptyRaySegment + * @glslConstant + */ +const czm_raySegment czm_emptyRaySegment = czm_raySegment(-czm_infinity, -czm_infinity); + +/** + * DOC_TBA + * + * @name czm_fullRaySegment + * @glslConstant + */ +const czm_raySegment czm_fullRaySegment = czm_raySegment(0.0, czm_infinity); +`;var iN=`struct czm_shadowParameters +{ +#ifdef USE_CUBE_MAP_SHADOW + vec3 texCoords; +#else + vec2 texCoords; +#endif + + float depthBias; + float depth; + float nDotL; + vec2 texelStepSize; + float normalShadingSmooth; + float darkness; +}; +`;var oN=`/** + * Converts an HSB color (hue, saturation, brightness) to RGB + * HSB <-> RGB conversion with minimal branching: {@link http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl} + * + * @name czm_HSBToRGB + * @glslFunction + * + * @param {vec3} hsb The color in HSB. + * + * @returns {vec3} The color in RGB. + * + * @example + * vec3 hsb = czm_RGBToHSB(rgb); + * hsb.z *= 0.1; + * rgb = czm_HSBToRGB(hsb); + */ + +const vec4 K_HSB2RGB = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0); + +vec3 czm_HSBToRGB(vec3 hsb) +{ + vec3 p = abs(fract(hsb.xxx + K_HSB2RGB.xyz) * 6.0 - K_HSB2RGB.www); + return hsb.z * mix(K_HSB2RGB.xxx, clamp(p - K_HSB2RGB.xxx, 0.0, 1.0), hsb.y); +} +`;var rN=`/** + * Converts an HSL color (hue, saturation, lightness) to RGB + * HSL <-> RGB conversion: {@link http://www.chilliant.com/rgb2hsv.html} + * + * @name czm_HSLToRGB + * @glslFunction + * + * @param {vec3} rgb The color in HSL. + * + * @returns {vec3} The color in RGB. + * + * @example + * vec3 hsl = czm_RGBToHSL(rgb); + * hsl.z *= 0.1; + * rgb = czm_HSLToRGB(hsl); + */ + +vec3 hueToRGB(float hue) +{ + float r = abs(hue * 6.0 - 3.0) - 1.0; + float g = 2.0 - abs(hue * 6.0 - 2.0); + float b = 2.0 - abs(hue * 6.0 - 4.0); + return clamp(vec3(r, g, b), 0.0, 1.0); +} + +vec3 czm_HSLToRGB(vec3 hsl) +{ + vec3 rgb = hueToRGB(hsl.x); + float c = (1.0 - abs(2.0 * hsl.z - 1.0)) * hsl.y; + return (rgb - 0.5) * c + hsl.z; +} +`;var sN=`/** + * Converts an RGB color to HSB (hue, saturation, brightness) + * HSB <-> RGB conversion with minimal branching: {@link http://lolengine.net/blog/2013/07/27/rgb-to-hsv-in-glsl} + * + * @name czm_RGBToHSB + * @glslFunction + * + * @param {vec3} rgb The color in RGB. + * + * @returns {vec3} The color in HSB. + * + * @example + * vec3 hsb = czm_RGBToHSB(rgb); + * hsb.z *= 0.1; + * rgb = czm_HSBToRGB(hsb); + */ + +const vec4 K_RGB2HSB = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0); + +vec3 czm_RGBToHSB(vec3 rgb) +{ + vec4 p = mix(vec4(rgb.bg, K_RGB2HSB.wz), vec4(rgb.gb, K_RGB2HSB.xy), step(rgb.b, rgb.g)); + vec4 q = mix(vec4(p.xyw, rgb.r), vec4(rgb.r, p.yzx), step(p.x, rgb.r)); + + float d = q.x - min(q.w, q.y); + return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + czm_epsilon7)), d / (q.x + czm_epsilon7), q.x); +} +`;var aN=`/** + * Converts an RGB color to HSL (hue, saturation, lightness) + * HSL <-> RGB conversion: {@link http://www.chilliant.com/rgb2hsv.html} + * + * @name czm_RGBToHSL + * @glslFunction + * + * @param {vec3} rgb The color in RGB. + * + * @returns {vec3} The color in HSL. + * + * @example + * vec3 hsl = czm_RGBToHSL(rgb); + * hsl.z *= 0.1; + * rgb = czm_HSLToRGB(hsl); + */ + +vec3 RGBtoHCV(vec3 rgb) +{ + // Based on work by Sam Hocevar and Emil Persson + vec4 p = (rgb.g < rgb.b) ? vec4(rgb.bg, -1.0, 2.0 / 3.0) : vec4(rgb.gb, 0.0, -1.0 / 3.0); + vec4 q = (rgb.r < p.x) ? vec4(p.xyw, rgb.r) : vec4(rgb.r, p.yzx); + float c = q.x - min(q.w, q.y); + float h = abs((q.w - q.y) / (6.0 * c + czm_epsilon7) + q.z); + return vec3(h, c, q.x); +} + +vec3 czm_RGBToHSL(vec3 rgb) +{ + vec3 hcv = RGBtoHCV(rgb); + float l = hcv.z - hcv.y * 0.5; + float s = hcv.y / (1.0 - abs(l * 2.0 - 1.0) + czm_epsilon7); + return vec3(hcv.x, s, l); +} +`;var cN=`/** + * Converts an RGB color to CIE Yxy. + * <p>The conversion is described in + * {@link http://content.gpwiki.org/index.php/D3DBook:High-Dynamic_Range_Rendering#Luminance_Transform|Luminance Transform} + * </p> + * + * @name czm_RGBToXYZ + * @glslFunction + * + * @param {vec3} rgb The color in RGB. + * + * @returns {vec3} The color in CIE Yxy. + * + * @example + * vec3 xyz = czm_RGBToXYZ(rgb); + * xyz.x = max(xyz.x - luminanceThreshold, 0.0); + * rgb = czm_XYZToRGB(xyz); + */ +vec3 czm_RGBToXYZ(vec3 rgb) +{ + const mat3 RGB2XYZ = mat3(0.4124, 0.2126, 0.0193, + 0.3576, 0.7152, 0.1192, + 0.1805, 0.0722, 0.9505); + vec3 xyz = RGB2XYZ * rgb; + vec3 Yxy; + Yxy.r = xyz.g; + float temp = dot(vec3(1.0), xyz); + Yxy.gb = xyz.rg / temp; + return Yxy; +} +`;var lN=`/** + * Converts a CIE Yxy color to RGB. + * <p>The conversion is described in + * {@link http://content.gpwiki.org/index.php/D3DBook:High-Dynamic_Range_Rendering#Luminance_Transform|Luminance Transform} + * </p> + * + * @name czm_XYZToRGB + * @glslFunction + * + * @param {vec3} Yxy The color in CIE Yxy. + * + * @returns {vec3} The color in RGB. + * + * @example + * vec3 xyz = czm_RGBToXYZ(rgb); + * xyz.x = max(xyz.x - luminanceThreshold, 0.0); + * rgb = czm_XYZToRGB(xyz); + */ +vec3 czm_XYZToRGB(vec3 Yxy) +{ + const mat3 XYZ2RGB = mat3( 3.2405, -0.9693, 0.0556, + -1.5371, 1.8760, -0.2040, + -0.4985, 0.0416, 1.0572); + vec3 xyz; + xyz.r = Yxy.r * Yxy.g / Yxy.b; + xyz.g = Yxy.r; + xyz.b = Yxy.r * (1.0 - Yxy.g - Yxy.b) / Yxy.b; + + return XYZ2RGB * xyz; +} +`;var uN=`// See: +// https://knarkowicz.wordpress.com/2016/01/06/aces-filmic-tone-mapping-curve/ + +vec3 czm_acesTonemapping(vec3 color) { + float g = 0.985; + float a = 0.065; + float b = 0.0001; + float c = 0.433; + float d = 0.238; + + color = (color * (color + a) - b) / (color * (g * color + c) + d); + + color = clamp(color, 0.0, 1.0); + + return color; +} +`;var fN=`/** + * @private + */ +float czm_alphaWeight(float a) +{ + float z = (gl_FragCoord.z - czm_viewportTransformation[3][2]) / czm_viewportTransformation[2][2]; + + // See Weighted Blended Order-Independent Transparency for examples of different weighting functions: + // http://jcgt.org/published/0002/02/09/ + return pow(a + 0.01, 4.0) + max(1e-2, min(3.0 * 1e3, 0.003 / (1e-5 + pow(abs(z) / 200.0, 4.0)))); +} +`;var dN=`/** + * Procedural anti-aliasing by blurring two colors that meet at a sharp edge. + * + * @name czm_antialias + * @glslFunction + * + * @param {vec4} color1 The color on one side of the edge. + * @param {vec4} color2 The color on the other side of the edge. + * @param {vec4} currentcolor The current color, either <code>color1</code> or <code>color2</code>. + * @param {float} dist The distance to the edge in texture coordinates. + * @param {float} [fuzzFactor=0.1] Controls the blurriness between the two colors. + * @returns {vec4} The anti-aliased color. + * + * @example + * // GLSL declarations + * vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist, float fuzzFactor); + * vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist); + * + * // get the color for a material that has a sharp edge at the line y = 0.5 in texture space + * float dist = abs(textureCoordinates.t - 0.5); + * vec4 currentColor = mix(bottomColor, topColor, step(0.5, textureCoordinates.t)); + * vec4 color = czm_antialias(bottomColor, topColor, currentColor, dist, 0.1); + */ +vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist, float fuzzFactor) +{ + float val1 = clamp(dist / fuzzFactor, 0.0, 1.0); + float val2 = clamp((dist - 0.5) / fuzzFactor, 0.0, 1.0); + val1 = val1 * (1.0 - val2); + val1 = val1 * val1 * (3.0 - (2.0 * val1)); + val1 = pow(val1, 0.5); //makes the transition nicer + + vec4 midColor = (color1 + color2) * 0.5; + return mix(midColor, currentColor, val1); +} + +vec4 czm_antialias(vec4 color1, vec4 color2, vec4 currentColor, float dist) +{ + return czm_antialias(color1, color2, currentColor, dist, 0.1); +} +`;var hN=`/** + * Apply a HSB color shift to an RGB color. + * + * @param {vec3} rgb The color in RGB space. + * @param {vec3} hsbShift The amount to shift each component. The xyz components correspond to hue, saturation, and brightness. Shifting the hue by +/- 1.0 corresponds to shifting the hue by a full cycle. Saturation and brightness are clamped between 0 and 1 after the adjustment + * @param {bool} ignoreBlackPixels If true, black pixels will be unchanged. This is necessary in some shaders such as atmosphere-related effects. + * + * @return {vec3} The RGB color after shifting in HSB space and clamping saturation and brightness to a valid range. + */ +vec3 czm_applyHSBShift(vec3 rgb, vec3 hsbShift, bool ignoreBlackPixels) { + // Convert rgb color to hsb + vec3 hsb = czm_RGBToHSB(rgb); + + // Perform hsb shift + // Hue cycles around so no clamp is needed. + hsb.x += hsbShift.x; // hue + hsb.y = clamp(hsb.y + hsbShift.y, 0.0, 1.0); // saturation + + // brightness + // + // Some shaders such as atmosphere-related effects need to leave black + // pixels unchanged + if (ignoreBlackPixels) { + hsb.z = hsb.z > czm_epsilon7 ? hsb.z + hsbShift.z : 0.0; + } else { + hsb.z = hsb.z + hsbShift.z; + } + hsb.z = clamp(hsb.z, 0.0, 1.0); + + // Convert shifted hsb back to rgb + return czm_HSBToRGB(hsb); +} +`;var mN=`/** + * Approximately computes spherical coordinates given a normal. + * Uses approximate inverse trigonometry for speed and consistency, + * since inverse trigonometry can differ from vendor-to-vendor and when compared with the CPU. + * + * @name czm_approximateSphericalCoordinates + * @glslFunction + * + * @param {vec3} normal arbitrary-length normal. + * + * @returns {vec2} Approximate latitude and longitude spherical coordinates. + */ +vec2 czm_approximateSphericalCoordinates(vec3 normal) { + // Project into plane with vertical for latitude + float latitudeApproximation = czm_fastApproximateAtan(sqrt(normal.x * normal.x + normal.y * normal.y), normal.z); + float longitudeApproximation = czm_fastApproximateAtan(normal.x, normal.y); + return vec2(latitudeApproximation, longitudeApproximation); +} +`;var AN=`/** + * Compute a rational approximation to tanh(x) + * + * @param {float} x A real number input + * @returns {float} An approximation for tanh(x) +*/ +float czm_approximateTanh(float x) { + float x2 = x * x; + return max(-1.0, min(1.0, x * (27.0 + x2) / (27.0 + 9.0 * x2))); +} +`;var pN=`/** + * Determines if the fragment is back facing + * + * @name czm_backFacing + * @glslFunction + * + * @returns {bool} <code>true</code> if the fragment is back facing; otherwise, <code>false</code>. + */ +bool czm_backFacing() +{ + // !gl_FrontFacing doesn't work as expected on Mac/Intel so use the more verbose form instead. See https://github.com/CesiumGS/cesium/pull/8494. + return gl_FrontFacing == false; +} +`;var gN=`/** + * Branchless ternary operator to be used when it's inexpensive to explicitly + * evaluate both possibilities for a float expression. + * + * @name czm_branchFreeTernary + * @glslFunction + * + * @param {bool} comparison A comparison statement + * @param {float} a Value to return if the comparison is true. + * @param {float} b Value to return if the comparison is false. + * + * @returns {float} equivalent of comparison ? a : b + */ +float czm_branchFreeTernary(bool comparison, float a, float b) { + float useA = float(comparison); + return a * useA + b * (1.0 - useA); +} + +/** + * Branchless ternary operator to be used when it's inexpensive to explicitly + * evaluate both possibilities for a vec2 expression. + * + * @name czm_branchFreeTernary + * @glslFunction + * + * @param {bool} comparison A comparison statement + * @param {vec2} a Value to return if the comparison is true. + * @param {vec2} b Value to return if the comparison is false. + * + * @returns {vec2} equivalent of comparison ? a : b + */ +vec2 czm_branchFreeTernary(bool comparison, vec2 a, vec2 b) { + float useA = float(comparison); + return a * useA + b * (1.0 - useA); +} + +/** + * Branchless ternary operator to be used when it's inexpensive to explicitly + * evaluate both possibilities for a vec3 expression. + * + * @name czm_branchFreeTernary + * @glslFunction + * + * @param {bool} comparison A comparison statement + * @param {vec3} a Value to return if the comparison is true. + * @param {vec3} b Value to return if the comparison is false. + * + * @returns {vec3} equivalent of comparison ? a : b + */ +vec3 czm_branchFreeTernary(bool comparison, vec3 a, vec3 b) { + float useA = float(comparison); + return a * useA + b * (1.0 - useA); +} + +/** + * Branchless ternary operator to be used when it's inexpensive to explicitly + * evaluate both possibilities for a vec4 expression. + * + * @name czm_branchFreeTernary + * @glslFunction + * + * @param {bool} comparison A comparison statement + * @param {vec3} a Value to return if the comparison is true. + * @param {vec3} b Value to return if the comparison is false. + * + * @returns {vec3} equivalent of comparison ? a : b + */ +vec4 czm_branchFreeTernary(bool comparison, vec4 a, vec4 b) { + float useA = float(comparison); + return a * useA + b * (1.0 - useA); +} +`;var _N=` +vec4 czm_cascadeColor(vec4 weights) +{ + return vec4(1.0, 0.0, 0.0, 1.0) * weights.x + + vec4(0.0, 1.0, 0.0, 1.0) * weights.y + + vec4(0.0, 0.0, 1.0, 1.0) * weights.z + + vec4(1.0, 0.0, 1.0, 1.0) * weights.w; +} +`;var yN=` +uniform vec4 shadowMap_cascadeDistances; + +float czm_cascadeDistance(vec4 weights) +{ + return dot(shadowMap_cascadeDistances, weights); +} +`;var CN=` +uniform mat4 shadowMap_cascadeMatrices[4]; + +mat4 czm_cascadeMatrix(vec4 weights) +{ + return shadowMap_cascadeMatrices[0] * weights.x + + shadowMap_cascadeMatrices[1] * weights.y + + shadowMap_cascadeMatrices[2] * weights.z + + shadowMap_cascadeMatrices[3] * weights.w; +} +`;var EN=` +uniform vec4 shadowMap_cascadeSplits[2]; + +vec4 czm_cascadeWeights(float depthEye) +{ + // One component is set to 1.0 and all others set to 0.0. + vec4 near = step(shadowMap_cascadeSplits[0], vec4(depthEye)); + vec4 far = step(depthEye, shadowMap_cascadeSplits[1]); + return near * far; +} +`;var IN=`float getSignedDistance(vec2 uv, highp sampler2D clippingDistance) { + float signedDistance = texture(clippingDistance, uv).r; + return (signedDistance - 0.5) * 2.0; +} + +void czm_clipPolygons(highp sampler2D clippingDistance, int extentsLength, vec2 clippingPosition, int regionIndex) { + // Position is completely outside of polygons bounds + vec2 rectUv = clippingPosition; + if (regionIndex < 0 || rectUv.x <= 0.0 || rectUv.y <= 0.0 || rectUv.x >= 1.0 || rectUv.y >= 1.0) { + #ifdef CLIPPING_INVERSE + discard; + #endif + return; + } + + vec2 clippingDistanceTextureDimensions = vec2(textureSize(clippingDistance, 0)); + vec2 sampleOffset = max(1.0 / clippingDistanceTextureDimensions, vec2(0.005)); + float dimension = float(extentsLength); + if (extentsLength > 2) { + dimension = ceil(log2(float(extentsLength))); + } + + vec2 textureOffset = vec2(mod(float(regionIndex), dimension), floor(float(regionIndex) / dimension)) / dimension; + vec2 uv = textureOffset + rectUv / dimension; + + float signedDistance = getSignedDistance(uv, clippingDistance); + + #ifdef CLIPPING_INVERSE + if (signedDistance > 0.0) { + discard; + } + #else + if (signedDistance < 0.0) { + discard; + } + #endif +} +`;var xN=`/** + * DOC_TBA + * + * @name czm_columbusViewMorph + * @glslFunction + */ +vec4 czm_columbusViewMorph(vec4 position2D, vec4 position3D, float time) +{ + // Just linear for now. + vec3 p = mix(position2D.xyz, position3D.xyz, time); + return vec4(p, 1.0); +} +`;var bN=`/** + * Compute the atmosphere color, applying Rayleigh and Mie scattering. This + * builtin uses automatic uniforms so the atmophere settings are synced with the + * state of the Scene, even in other contexts like Model. + * + * @name czm_computeAtmosphereColor + * @glslFunction + * + * @param {vec3} positionWC Position of the fragment in world coords (low precision) + * @param {vec3} lightDirection Light direction from the sun or other light source. + * @param {vec3} rayleighColor The Rayleigh scattering color computed by a scattering function + * @param {vec3} mieColor The Mie scattering color computed by a scattering function + * @param {float} opacity The opacity computed by a scattering function. + */ +vec4 czm_computeAtmosphereColor( + vec3 positionWC, + vec3 lightDirection, + vec3 rayleighColor, + vec3 mieColor, + float opacity +) { + // Setup the primary ray: from the camera position to the vertex position. + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + + float cosAngle = dot(cameraToPositionWCDirection, lightDirection); + float cosAngleSq = cosAngle * cosAngle; + + float G = czm_atmosphereMieAnisotropy; + float GSq = G * G; + + // The Rayleigh phase function. + float rayleighPhase = 3.0 / (50.2654824574) * (1.0 + cosAngleSq); + // The Mie phase function. + float miePhase = 3.0 / (25.1327412287) * ((1.0 - GSq) * (cosAngleSq + 1.0)) / (pow(1.0 + GSq - 2.0 * cosAngle * G, 1.5) * (2.0 + GSq)); + + // The final color is generated by combining the effects of the Rayleigh and Mie scattering. + vec3 rayleigh = rayleighPhase * rayleighColor; + vec3 mie = miePhase * mieColor; + + vec3 color = (rayleigh + mie) * czm_atmosphereLightIntensity; + + return vec4(color, opacity); +} + +/** + * Compute the atmosphere color, applying Rayleigh and Mie scattering. This + * builtin uses automatic uniforms so the atmophere settings are synced with the + * state of the Scene, even in other contexts like Model. + * + * @name czm_computeAtmosphereColor + * @glslFunction + * + * @param {czm_ray} primaryRay Ray from the origin to sky fragment to in world coords (low precision) + * @param {vec3} lightDirection Light direction from the sun or other light source. + * @param {vec3} rayleighColor The Rayleigh scattering color computed by a scattering function + * @param {vec3} mieColor The Mie scattering color computed by a scattering function + * @param {float} opacity The opacity computed by a scattering function. + */ +vec4 czm_computeAtmosphereColor( + czm_ray primaryRay, + vec3 lightDirection, + vec3 rayleighColor, + vec3 mieColor, + float opacity +) { + vec3 direction = normalize(primaryRay.direction); + + float cosAngle = dot(direction, lightDirection); + float cosAngleSq = cosAngle * cosAngle; + + float G = czm_atmosphereMieAnisotropy; + float GSq = G * G; + + // The Rayleigh phase function. + float rayleighPhase = 3.0 / (50.2654824574) * (1.0 + cosAngleSq); + // The Mie phase function. + float miePhase = 3.0 / (25.1327412287) * ((1.0 - GSq) * (cosAngleSq + 1.0)) / (pow(1.0 + GSq - 2.0 * cosAngle * G, 1.5) * (2.0 + GSq)); + + // The final color is generated by combining the effects of the Rayleigh and Mie scattering. + vec3 rayleigh = rayleighPhase * rayleighColor; + vec3 mie = miePhase * mieColor; + + vec3 color = (rayleigh + mie) * czm_atmosphereLightIntensity; + + return vec4(color, opacity); +} + +`;var TN=`/** + * Compute atmosphere scattering for the ground atmosphere and fog. This method + * uses automatic uniforms so it is always synced with the scene settings. + * + * @name czm_computeGroundAtmosphereScattering + * @glslfunction + * + * @param {vec3} positionWC The position of the fragment in world coordinates. + * @param {vec3} lightDirection The direction of the light to calculate the scattering from. + * @param {vec3} rayleighColor The variable the Rayleigh scattering will be written to. + * @param {vec3} mieColor The variable the Mie scattering will be written to. + * @param {float} opacity The variable the transmittance will be written to. + */ +void czm_computeGroundAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity) { + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection); + + float atmosphereInnerRadius = length(positionWC); + + czm_computeScattering( + primaryRay, + length(cameraToPositionWC), + lightDirection, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); +} +`;var SN=`/** + * Returns a position in model coordinates relative to eye taking into + * account the current scene mode: 3D, 2D, or Columbus view. + * <p> + * This uses standard position attributes, <code>position3DHigh</code>, + * <code>position3DLow</code>, <code>position2DHigh</code>, and <code>position2DLow</code>, + * and should be used when writing a vertex shader for an {@link Appearance}. + * </p> + * + * @name czm_computePosition + * @glslFunction + * + * @returns {vec4} The position relative to eye. + * + * @example + * vec4 p = czm_computePosition(); + * v_positionEC = (czm_modelViewRelativeToEye * p).xyz; + * gl_Position = czm_modelViewProjectionRelativeToEye * p; + * + * @see czm_translateRelativeToEye + */ +vec4 czm_computePosition(); +`;var wN=`/** + * This function computes the colors contributed by Rayliegh and Mie scattering on a given ray, as well as + * the transmittance value for the ray. This function uses automatic uniforms + * so the atmosphere settings are always synced with the current scene. + * + * @name czm_computeScattering + * @glslfunction + * + * @param {czm_ray} primaryRay The ray from the camera to the position. + * @param {float} primaryRayLength The length of the primary ray. + * @param {vec3} lightDirection The direction of the light to calculate the scattering from. + * @param {vec3} rayleighColor The variable the Rayleigh scattering will be written to. + * @param {vec3} mieColor The variable the Mie scattering will be written to. + * @param {float} opacity The variable the transmittance will be written to. + */ +void czm_computeScattering( + czm_ray primaryRay, + float primaryRayLength, + vec3 lightDirection, + float atmosphereInnerRadius, + out vec3 rayleighColor, + out vec3 mieColor, + out float opacity +) { + const float ATMOSPHERE_THICKNESS = 111e3; // The thickness of the atmosphere in meters. + const int PRIMARY_STEPS_MAX = 16; // Maximum number of times the ray from the camera to the world position (primary ray) is sampled. + const int LIGHT_STEPS_MAX = 4; // Maximum number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray. + + // Initialize the default scattering amounts to 0. + rayleighColor = vec3(0.0); + mieColor = vec3(0.0); + opacity = 0.0; + + float atmosphereOuterRadius = atmosphereInnerRadius + ATMOSPHERE_THICKNESS; + + vec3 origin = vec3(0.0); + + // Calculate intersection from the camera to the outer ring of the atmosphere. + czm_raySegment primaryRayAtmosphereIntersect = czm_raySphereIntersectionInterval(primaryRay, origin, atmosphereOuterRadius); + + // Return empty colors if no intersection with the atmosphere geometry. + if (primaryRayAtmosphereIntersect == czm_emptyRaySegment) { + return; + } + + // To deal with smaller values of PRIMARY_STEPS (e.g. 4) + // we implement a split strategy: sky or horizon. + // For performance reasons, instead of a if/else branch + // a soft choice is implemented through a weight 0.0 <= w_stop_gt_lprl <= 1.0 + float x = 1e-7 * primaryRayAtmosphereIntersect.stop / length(primaryRayLength); + // Value close to 0.0: close to the horizon + // Value close to 1.0: above in the sky + float w_stop_gt_lprl = 0.5 * (1.0 + czm_approximateTanh(x)); + + // The ray should start from the first intersection with the outer atmopshere, or from the camera position, if it is inside the atmosphere. + float start_0 = primaryRayAtmosphereIntersect.start; + primaryRayAtmosphereIntersect.start = max(primaryRayAtmosphereIntersect.start, 0.0); + // The ray should end at the exit from the atmosphere or at the distance to the vertex, whichever is smaller. + primaryRayAtmosphereIntersect.stop = min(primaryRayAtmosphereIntersect.stop, length(primaryRayLength)); + + // For the number of ray steps, distinguish inside or outside atmosphere (outer space) + // (1) from outer space we have to use more ray steps to get a realistic rendering + // (2) within atmosphere we need fewer steps for faster rendering + float x_o_a = start_0 - ATMOSPHERE_THICKNESS; // ATMOSPHERE_THICKNESS used as an ad-hoc constant, no precise meaning here, only the order of magnitude matters + float w_inside_atmosphere = 1.0 - 0.5 * (1.0 + czm_approximateTanh(x_o_a)); + int PRIMARY_STEPS = PRIMARY_STEPS_MAX - int(w_inside_atmosphere * 12.0); // Number of times the ray from the camera to the world position (primary ray) is sampled. + int LIGHT_STEPS = LIGHT_STEPS_MAX - int(w_inside_atmosphere * 2.0); // Number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray. + + // Setup for sampling positions along the ray - starting from the intersection with the outer ring of the atmosphere. + float rayPositionLength = primaryRayAtmosphereIntersect.start; + // (1) Outside the atmosphere: constant rayStepLength + // (2) Inside atmosphere: variable rayStepLength to compensate the rough rendering of the smaller number of ray steps + float totalRayLength = primaryRayAtmosphereIntersect.stop - rayPositionLength; + float rayStepLengthIncrease = w_inside_atmosphere * ((1.0 - w_stop_gt_lprl) * totalRayLength / (float(PRIMARY_STEPS * (PRIMARY_STEPS + 1)) / 2.0)); + float rayStepLength = max(1.0 - w_inside_atmosphere, w_stop_gt_lprl) * totalRayLength / max(7.0 * w_inside_atmosphere, float(PRIMARY_STEPS)); + + vec3 rayleighAccumulation = vec3(0.0); + vec3 mieAccumulation = vec3(0.0); + vec2 opticalDepth = vec2(0.0); + vec2 heightScale = vec2(czm_atmosphereRayleighScaleHeight, czm_atmosphereMieScaleHeight); + + // Sample positions on the primary ray. + for (int i = 0; i < PRIMARY_STEPS_MAX; ++i) { + + // The loop should be: for (int i = 0; i < PRIMARY_STEPS; ++i) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (i >= PRIMARY_STEPS) { + break; + } + + // Calculate sample position along viewpoint ray. + vec3 samplePosition = primaryRay.origin + primaryRay.direction * (rayPositionLength + rayStepLength); + + // Calculate height of sample position above ellipsoid. + float sampleHeight = length(samplePosition) - atmosphereInnerRadius; + + // Calculate and accumulate density of particles at the sample position. + vec2 sampleDensity = exp(-sampleHeight / heightScale) * rayStepLength; + opticalDepth += sampleDensity; + + // Generate ray from the sample position segment to the light source, up to the outer ring of the atmosphere. + czm_ray lightRay = czm_ray(samplePosition, lightDirection); + czm_raySegment lightRayAtmosphereIntersect = czm_raySphereIntersectionInterval(lightRay, origin, atmosphereOuterRadius); + + float lightStepLength = lightRayAtmosphereIntersect.stop / float(LIGHT_STEPS); + float lightPositionLength = 0.0; + + vec2 lightOpticalDepth = vec2(0.0); + + // Sample positions along the light ray, to accumulate incidence of light on the latest sample segment. + for (int j = 0; j < LIGHT_STEPS_MAX; ++j) { + + // The loop should be: for (int j = 0; i < LIGHT_STEPS; ++j) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (j >= LIGHT_STEPS) { + break; + } + + // Calculate sample position along light ray. + vec3 lightPosition = samplePosition + lightDirection * (lightPositionLength + lightStepLength * 0.5); + + // Calculate height of the light sample position above ellipsoid. + float lightHeight = length(lightPosition) - atmosphereInnerRadius; + + // Calculate density of photons at the light sample position. + lightOpticalDepth += exp(-lightHeight / heightScale) * lightStepLength; + + // Increment distance on light ray. + lightPositionLength += lightStepLength; + } + + // Compute attenuation via the primary ray and the light ray. + vec3 attenuation = exp(-((czm_atmosphereMieCoefficient * (opticalDepth.y + lightOpticalDepth.y)) + (czm_atmosphereRayleighCoefficient * (opticalDepth.x + lightOpticalDepth.x)))); + + // Accumulate the scattering. + rayleighAccumulation += sampleDensity.x * attenuation; + mieAccumulation += sampleDensity.y * attenuation; + + // Increment distance on primary ray. + rayPositionLength += (rayStepLength += rayStepLengthIncrease); + } + + // Compute the scattering amount. + rayleighColor = czm_atmosphereRayleighCoefficient * rayleighAccumulation; + mieColor = czm_atmosphereMieCoefficient * mieAccumulation; + + // Compute the transmittance i.e. how much light is passing through the atmosphere. + opacity = length(exp(-((czm_atmosphereMieCoefficient * opticalDepth.y) + (czm_atmosphereRayleighCoefficient * opticalDepth.x)))); +} +`;var BN=`/** + * @private + */ +vec2 cordic(float angle) +{ +// Scale the vector by the appropriate factor for the 24 iterations to follow. + vec2 vector = vec2(6.0725293500888267e-1, 0.0); +// Iteration 1 + float sense = (angle < 0.0) ? -1.0 : 1.0; + // float factor = sense * 1.0; // 2^-0 + mat2 rotation = mat2(1.0, sense, -sense, 1.0); + vector = rotation * vector; + angle -= sense * 7.8539816339744828e-1; // atan(2^-0) +// Iteration 2 + sense = (angle < 0.0) ? -1.0 : 1.0; + float factor = sense * 5.0e-1; // 2^-1 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 4.6364760900080609e-1; // atan(2^-1) +// Iteration 3 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 2.5e-1; // 2^-2 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 2.4497866312686414e-1; // atan(2^-2) +// Iteration 4 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.25e-1; // 2^-3 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.2435499454676144e-1; // atan(2^-3) +// Iteration 5 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 6.25e-2; // 2^-4 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 6.2418809995957350e-2; // atan(2^-4) +// Iteration 6 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 3.125e-2; // 2^-5 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 3.1239833430268277e-2; // atan(2^-5) +// Iteration 7 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.5625e-2; // 2^-6 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.5623728620476831e-2; // atan(2^-6) +// Iteration 8 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 7.8125e-3; // 2^-7 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 7.8123410601011111e-3; // atan(2^-7) +// Iteration 9 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 3.90625e-3; // 2^-8 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 3.9062301319669718e-3; // atan(2^-8) +// Iteration 10 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.953125e-3; // 2^-9 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.9531225164788188e-3; // atan(2^-9) +// Iteration 11 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 9.765625e-4; // 2^-10 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 9.7656218955931946e-4; // atan(2^-10) +// Iteration 12 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 4.8828125e-4; // 2^-11 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 4.8828121119489829e-4; // atan(2^-11) +// Iteration 13 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 2.44140625e-4; // 2^-12 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 2.4414062014936177e-4; // atan(2^-12) +// Iteration 14 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.220703125e-4; // 2^-13 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.2207031189367021e-4; // atan(2^-13) +// Iteration 15 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 6.103515625e-5; // 2^-14 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 6.1035156174208773e-5; // atan(2^-14) +// Iteration 16 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 3.0517578125e-5; // 2^-15 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 3.0517578115526096e-5; // atan(2^-15) +// Iteration 17 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.52587890625e-5; // 2^-16 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.5258789061315762e-5; // atan(2^-16) +// Iteration 18 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 7.62939453125e-6; // 2^-17 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 7.6293945311019700e-6; // atan(2^-17) +// Iteration 19 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 3.814697265625e-6; // 2^-18 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 3.8146972656064961e-6; // atan(2^-18) +// Iteration 20 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.9073486328125e-6; // 2^-19 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 1.9073486328101870e-6; // atan(2^-19) +// Iteration 21 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 9.5367431640625e-7; // 2^-20 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 9.5367431640596084e-7; // atan(2^-20) +// Iteration 22 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 4.76837158203125e-7; // 2^-21 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 4.7683715820308884e-7; // atan(2^-21) +// Iteration 23 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 2.384185791015625e-7; // 2^-22 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; + angle -= sense * 2.3841857910155797e-7; // atan(2^-22) +// Iteration 24 + sense = (angle < 0.0) ? -1.0 : 1.0; + factor = sense * 1.1920928955078125e-7; // 2^-23 + rotation[0][1] = factor; + rotation[1][0] = -factor; + vector = rotation * vector; +// angle -= sense * 1.1920928955078068e-7; // atan(2^-23) + + return vector; +} + +/** + * Computes the cosine and sine of the provided angle using the CORDIC algorithm. + * + * @name czm_cosineAndSine + * @glslFunction + * + * @param {float} angle The angle in radians. + * + * @returns {vec2} The resulting cosine of the angle (as the x coordinate) and sine of the angle (as the y coordinate). + * + * @example + * vec2 v = czm_cosineAndSine(czm_piOverSix); + * float cosine = v.x; + * float sine = v.y; + */ +vec2 czm_cosineAndSine(float angle) +{ + if (angle < -czm_piOverTwo || angle > czm_piOverTwo) + { + if (angle < 0.0) + { + return -cordic(angle + czm_pi); + } + else + { + return -cordic(angle - czm_pi); + } + } + else + { + return cordic(angle); + } +} +`;var DN=`/** + * Decompresses texture coordinates that were packed into a single float. + * + * @name czm_decompressTextureCoordinates + * @glslFunction + * + * @param {float} encoded The compressed texture coordinates. + * @returns {vec2} The decompressed texture coordinates. + */ + vec2 czm_decompressTextureCoordinates(float encoded) + { + float temp = encoded / 4096.0; + float xZeroTo4095 = floor(temp); + float stx = xZeroTo4095 / 4095.0; + float sty = (encoded - xZeroTo4095 * 4096.0) / 4095.0; + return vec2(stx, sty); + } +`;var vN=`// emulated noperspective +#if (__VERSION__ == 300 || defined(GL_EXT_frag_depth)) && !defined(LOG_DEPTH) +out float v_WindowZ; +#endif + +/** + * Emulates GL_DEPTH_CLAMP, which is not available in WebGL 1 or 2. + * GL_DEPTH_CLAMP clamps geometry that is outside the near and far planes, + * capping the shadow volume. More information here: + * https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_depth_clamp.txt. + * + * When GL_EXT_frag_depth is available we emulate GL_DEPTH_CLAMP by ensuring + * no geometry gets clipped by setting the clip space z value to 0.0 and then + * sending the unaltered screen space z value (using emulated noperspective + * interpolation) to the frag shader where it is clamped to [0,1] and then + * written with gl_FragDepth (see czm_writeDepthClamp). This technique is based on: + * https://stackoverflow.com/questions/5960757/how-to-emulate-gl-depth-clamp-nv. + * + * When GL_EXT_frag_depth is not available, which is the case on some mobile + * devices, we must attempt to fix this only in the vertex shader. + * The approach is to clamp the z value to the far plane, which closes the + * shadow volume but also distorts the geometry, so there can still be artifacts + * on frustum seams. + * + * @name czm_depthClamp + * @glslFunction + * + * @param {vec4} coords The vertex in clip coordinates. + * @returns {vec4} The modified vertex. + * + * @example + * gl_Position = czm_depthClamp(czm_modelViewProjection * vec4(position, 1.0)); + * + * @see czm_writeDepthClamp + */ +vec4 czm_depthClamp(vec4 coords) +{ +#ifndef LOG_DEPTH +#if __VERSION__ == 300 || defined(GL_EXT_frag_depth) + v_WindowZ = (0.5 * (coords.z / coords.w) + 0.5) * coords.w; + coords.z = 0.0; +#else + coords.z = min(coords.z, coords.w); +#endif +#endif + return coords; +} +`;var PN=`/** + * Computes a 3x3 rotation matrix that transforms vectors from an ellipsoid's east-north-up coordinate system + * to eye coordinates. In east-north-up coordinates, x points east, y points north, and z points along the + * surface normal. East-north-up can be used as an ellipsoid's tangent space for operations such as bump mapping. + * <br /><br /> + * The ellipsoid is assumed to be centered at the model coordinate's origin. + * + * @name czm_eastNorthUpToEyeCoordinates + * @glslFunction + * + * @param {vec3} positionMC The position on the ellipsoid in model coordinates. + * @param {vec3} normalEC The normalized ellipsoid surface normal, at <code>positionMC</code>, in eye coordinates. + * + * @returns {mat3} A 3x3 rotation matrix that transforms vectors from the east-north-up coordinate system to eye coordinates. + * + * @example + * // Transform a vector defined in the east-north-up coordinate + * // system, (0, 0, 1) which is the surface normal, to eye + * // coordinates. + * mat3 m = czm_eastNorthUpToEyeCoordinates(positionMC, normalEC); + * vec3 normalEC = m * vec3(0.0, 0.0, 1.0); + */ +mat3 czm_eastNorthUpToEyeCoordinates(vec3 positionMC, vec3 normalEC) +{ + vec3 tangentMC = normalize(vec3(-positionMC.y, positionMC.x, 0.0)); // normalized surface tangent in model coordinates + vec3 tangentEC = normalize(czm_normal3D * tangentMC); // normalized surface tangent in eye coordinates + vec3 bitangentEC = normalize(cross(normalEC, tangentEC)); // normalized surface bitangent in eye coordinates + + return mat3( + tangentEC.x, tangentEC.y, tangentEC.z, + bitangentEC.x, bitangentEC.y, bitangentEC.z, + normalEC.x, normalEC.y, normalEC.z); +} +`;var RN=`/** + * DOC_TBA + * + * @name czm_ellipsoidContainsPoint + * @glslFunction + * + */ +bool czm_ellipsoidContainsPoint(vec3 ellipsoid_inverseRadii, vec3 point) +{ + vec3 scaled = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(point, 1.0)).xyz; + return (dot(scaled, scaled) <= 1.0); +} +`;var MN=`/** + * Approximate uv coordinates based on the ellipsoid normal. + * + * @name czm_ellipsoidTextureCoordinates + * @glslFunction + */ +vec2 czm_ellipsoidTextureCoordinates(vec3 normal) +{ + return vec2(atan(normal.y, normal.x) * czm_oneOverTwoPi + 0.5, asin(normal.z) * czm_oneOverPi + 0.5); +} +`;var NN=`/** + * Compares <code>left</code> and <code>right</code> componentwise. Returns <code>true</code> + * if they are within <code>epsilon</code> and <code>false</code> otherwise. The inputs + * <code>left</code> and <code>right</code> can be <code>float</code>s, <code>vec2</code>s, + * <code>vec3</code>s, or <code>vec4</code>s. + * + * @name czm_equalsEpsilon + * @glslFunction + * + * @param {} left The first vector. + * @param {} right The second vector. + * @param {float} epsilon The epsilon to use for equality testing. + * @returns {bool} <code>true</code> if the components are within <code>epsilon</code> and <code>false</code> otherwise. + * + * @example + * // GLSL declarations + * bool czm_equalsEpsilon(float left, float right, float epsilon); + * bool czm_equalsEpsilon(vec2 left, vec2 right, float epsilon); + * bool czm_equalsEpsilon(vec3 left, vec3 right, float epsilon); + * bool czm_equalsEpsilon(vec4 left, vec4 right, float epsilon); + */ +bool czm_equalsEpsilon(vec4 left, vec4 right, float epsilon) { + return all(lessThanEqual(abs(left - right), vec4(epsilon))); +} + +bool czm_equalsEpsilon(vec3 left, vec3 right, float epsilon) { + return all(lessThanEqual(abs(left - right), vec3(epsilon))); +} + +bool czm_equalsEpsilon(vec2 left, vec2 right, float epsilon) { + return all(lessThanEqual(abs(left - right), vec2(epsilon))); +} + +bool czm_equalsEpsilon(float left, float right, float epsilon) { + return (abs(left - right) <= epsilon); +} +`;var LN=`/** + * DOC_TBA + * + * @name czm_eyeOffset + * @glslFunction + * + * @param {vec4} positionEC DOC_TBA. + * @param {vec3} eyeOffset DOC_TBA. + * + * @returns {vec4} DOC_TBA. + */ +vec4 czm_eyeOffset(vec4 positionEC, vec3 eyeOffset) +{ + // This equation is approximate in x and y. + vec4 p = positionEC; + vec4 zEyeOffset = normalize(p) * eyeOffset.z; + p.xy += eyeOffset.xy + zEyeOffset.xy; + p.z += zEyeOffset.z; + return p; +} +`;var ON=`/** + * Transforms a position from eye to window coordinates. The transformation + * from eye to clip coordinates is done using {@link czm_projection}. + * The transform from normalized device coordinates to window coordinates is + * done using {@link czm_viewportTransformation}, which assumes a depth range + * of <code>near = 0</code> and <code>far = 1</code>. + * <br /><br /> + * This transform is useful when there is a need to manipulate window coordinates + * in a vertex shader as done by {@link BillboardCollection}. + * + * @name czm_eyeToWindowCoordinates + * @glslFunction + * + * @param {vec4} position The position in eye coordinates to transform. + * + * @returns {vec4} The transformed position in window coordinates. + * + * @see czm_modelToWindowCoordinates + * @see czm_projection + * @see czm_viewportTransformation + * @see BillboardCollection + * + * @example + * vec4 positionWC = czm_eyeToWindowCoordinates(positionEC); + */ +vec4 czm_eyeToWindowCoordinates(vec4 positionEC) +{ + vec4 q = czm_projection * positionEC; // clip coordinates + q.xyz /= q.w; // normalized device coordinates + q.xyz = (czm_viewportTransformation * vec4(q.xyz, 1.0)).xyz; // window coordinates + return q; +} +`;var FN=`/** + * Approxiamtes atan over the range [0, 1]. Safe to flip output for negative input. + * + * Based on Michal Drobot's approximation from ShaderFastLibs, which in turn is based on + * "Efficient approximations for the arctangent function," Rajan, S. Sichun Wang Inkol, R. Joyal, A., May 2006. + * Adapted from ShaderFastLibs under MIT License. + * + * Chosen for the following characteristics over range [0, 1]: + * - basically no error at 0 and 1, important for getting around range limit (naive atan2 via atan requires infinite range atan) + * - no visible artifacts from first-derivative discontinuities, unlike latitude via range-reduced sqrt asin approximations (at equator) + * + * The original code is x * (-0.1784 * abs(x) - 0.0663 * x * x + 1.0301); + * Removed the abs() in here because it isn't needed, the input range is guaranteed as [0, 1] by how we're approximating atan2. + * + * @name czm_fastApproximateAtan + * @glslFunction + * + * @param {float} x Value between 0 and 1 inclusive. + * + * @returns {float} Approximation of atan(x) + */ +float czm_fastApproximateAtan(float x) { + return x * (-0.1784 * x - 0.0663 * x * x + 1.0301); +} + +/** + * Approximation of atan2. + * + * Range reduction math based on nvidia's cg reference implementation for atan2: http://developer.download.nvidia.com/cg/atan2.html + * However, we replaced their atan curve with Michael Drobot's (see above). + * + * @name czm_fastApproximateAtan + * @glslFunction + * + * @param {float} x Value between -1 and 1 inclusive. + * @param {float} y Value between -1 and 1 inclusive. + * + * @returns {float} Approximation of atan2(x, y) + */ +float czm_fastApproximateAtan(float x, float y) { + // atan approximations are usually only reliable over [-1, 1], or, in our case, [0, 1] due to modifications. + // So range-reduce using abs and by flipping whether x or y is on top. + float t = abs(x); // t used as swap and atan result. + float opposite = abs(y); + float adjacent = max(t, opposite); + opposite = min(t, opposite); + + t = czm_fastApproximateAtan(opposite / adjacent); + + // Undo range reduction + t = czm_branchFreeTernary(abs(y) > abs(x), czm_piOverTwo - t, t); + t = czm_branchFreeTernary(x < 0.0, czm_pi - t, t); + t = czm_branchFreeTernary(y < 0.0, -t, t); + return t; +} +`;var QN=`/** + * Gets the color with fog at a distance from the camera. + * + * @name czm_fog + * @glslFunction + * + * @param {float} distanceToCamera The distance to the camera in meters. + * @param {vec3} color The original color. + * @param {vec3} fogColor The color of the fog. + * + * @returns {vec3} The color adjusted for fog at the distance from the camera. + */ +vec3 czm_fog(float distanceToCamera, vec3 color, vec3 fogColor) +{ + float scalar = distanceToCamera * czm_fogDensity; + float fog = 1.0 - exp(-(scalar * scalar)); + return mix(color, fogColor, fog); +} + +/** + * Gets the color with fog at a distance from the camera. + * + * @name czm_fog + * @glslFunction + * + * @param {float} distanceToCamera The distance to the camera in meters. + * @param {vec3} color The original color. + * @param {vec3} fogColor The color of the fog. + * @param {float} fogModifierConstant A constant to modify the appearance of fog. + * + * @returns {vec3} The color adjusted for fog at the distance from the camera. + */ +vec3 czm_fog(float distanceToCamera, vec3 color, vec3 fogColor, float fogModifierConstant) +{ + float scalar = distanceToCamera * czm_fogDensity; + float fog = 1.0 - exp(-((fogModifierConstant * scalar + fogModifierConstant) * (scalar * (1.0 + fogModifierConstant)))); + return mix(color, fogColor, fog); +} +`;var kN=`/** + * Converts a color from RGB space to linear space. + * + * @name czm_gammaCorrect + * @glslFunction + * + * @param {vec3} color The color in RGB space. + * @returns {vec3} The color in linear space. + */ +vec3 czm_gammaCorrect(vec3 color) { +#ifdef HDR + color = pow(color, vec3(czm_gamma)); +#endif + return color; +} + +vec4 czm_gammaCorrect(vec4 color) { +#ifdef HDR + color.rgb = pow(color.rgb, vec3(czm_gamma)); +#endif + return color; +} +`;var UN=`/** + * DOC_TBA + * + * @name czm_geodeticSurfaceNormal + * @glslFunction + * + * @param {vec3} positionOnEllipsoid DOC_TBA + * @param {vec3} ellipsoidCenter DOC_TBA + * @param {vec3} oneOverEllipsoidRadiiSquared DOC_TBA + * + * @returns {vec3} DOC_TBA. + */ +vec3 czm_geodeticSurfaceNormal(vec3 positionOnEllipsoid, vec3 ellipsoidCenter, vec3 oneOverEllipsoidRadiiSquared) +{ + return normalize((positionOnEllipsoid - ellipsoidCenter) * oneOverEllipsoidRadiiSquared); +} +`;var GN=`/** + * An czm_material with default values. Every material's czm_getMaterial + * should use this default material as a base for the material it returns. + * The default normal value is given by materialInput.normalEC. + * + * @name czm_getDefaultMaterial + * @glslFunction + * + * @param {czm_materialInput} input The input used to construct the default material. + * + * @returns {czm_material} The default material. + * + * @see czm_materialInput + * @see czm_material + * @see czm_getMaterial + */ +czm_material czm_getDefaultMaterial(czm_materialInput materialInput) +{ + czm_material material; + material.diffuse = vec3(0.0); + material.specular = 0.0; + material.shininess = 1.0; + material.normal = materialInput.normalEC; + material.emission = vec3(0.0); + material.alpha = 1.0; + return material; +} +`;var zN=`/** + * Select which direction vector to use for dynamic atmosphere lighting based on an enum value + * + * @name czm_getDynamicAtmosphereLightDirection + * @glslfunction + * @see DynamicAtmosphereLightingType.js + * + * @param {vec3} positionWC the position of the vertex/fragment in world coordinates. This is normalized and returned when dynamic lighting is turned off. + * @param {float} lightEnum The enum value for selecting between light sources. + * @return {vec3} The normalized light direction vector. Depending on the enum value, it is either positionWC, czm_lightDirectionWC or czm_sunDirectionWC + */ +vec3 czm_getDynamicAtmosphereLightDirection(vec3 positionWC, float lightEnum) { + const float NONE = 0.0; + const float SCENE_LIGHT = 1.0; + const float SUNLIGHT = 2.0; + + vec3 lightDirection = + positionWC * float(lightEnum == NONE) + + czm_lightDirectionWC * float(lightEnum == SCENE_LIGHT) + + czm_sunDirectionWC * float(lightEnum == SUNLIGHT); + return normalize(lightDirection); +} +`;var VN=`/** + * Calculates the intensity of diffusely reflected light. + * + * @name czm_getLambertDiffuse + * @glslFunction + * + * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates. + * @param {vec3} normalEC The surface normal in eye coordinates. + * + * @returns {float} The intensity of the diffuse reflection. + * + * @see czm_phong + * + * @example + * float diffuseIntensity = czm_getLambertDiffuse(lightDirectionEC, normalEC); + * float specularIntensity = czm_getSpecular(lightDirectionEC, toEyeEC, normalEC, 200); + * vec3 color = (diffuseColor * diffuseIntensity) + (specularColor * specularIntensity); + */ +float czm_getLambertDiffuse(vec3 lightDirectionEC, vec3 normalEC) +{ + return max(dot(lightDirectionEC, normalEC), 0.0); +} +`;var HN=`/** + * Calculates the specular intensity of reflected light. + * + * @name czm_getSpecular + * @glslFunction + * + * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates. + * @param {vec3} toEyeEC Unit vector pointing to the eye position in eye coordinates. + * @param {vec3} normalEC The surface normal in eye coordinates. + * @param {float} shininess The sharpness of the specular reflection. Higher values create a smaller, more focused specular highlight. + * + * @returns {float} The intensity of the specular highlight. + * + * @see czm_phong + * + * @example + * float diffuseIntensity = czm_getLambertDiffuse(lightDirectionEC, normalEC); + * float specularIntensity = czm_getSpecular(lightDirectionEC, toEyeEC, normalEC, 200); + * vec3 color = (diffuseColor * diffuseIntensity) + (specularColor * specularIntensity); + */ +float czm_getSpecular(vec3 lightDirectionEC, vec3 toEyeEC, vec3 normalEC, float shininess) +{ + vec3 toReflectedLight = reflect(-lightDirectionEC, normalEC); + float specular = max(dot(toReflectedLight, toEyeEC), 0.0); + + // pow has undefined behavior if both parameters <= 0. + // Prevent this by making sure shininess is at least czm_epsilon2. + return pow(specular, max(shininess, czm_epsilon2)); +} +`;var WN=`/** + * @private + */ +vec4 czm_getWaterNoise(sampler2D normalMap, vec2 uv, float time, float angleInRadians) +{ + float cosAngle = cos(angleInRadians); + float sinAngle = sin(angleInRadians); + + // time dependent sampling directions + vec2 s0 = vec2(1.0/17.0, 0.0); + vec2 s1 = vec2(-1.0/29.0, 0.0); + vec2 s2 = vec2(1.0/101.0, 1.0/59.0); + vec2 s3 = vec2(-1.0/109.0, -1.0/57.0); + + // rotate sampling direction by specified angle + s0 = vec2((cosAngle * s0.x) - (sinAngle * s0.y), (sinAngle * s0.x) + (cosAngle * s0.y)); + s1 = vec2((cosAngle * s1.x) - (sinAngle * s1.y), (sinAngle * s1.x) + (cosAngle * s1.y)); + s2 = vec2((cosAngle * s2.x) - (sinAngle * s2.y), (sinAngle * s2.x) + (cosAngle * s2.y)); + s3 = vec2((cosAngle * s3.x) - (sinAngle * s3.y), (sinAngle * s3.x) + (cosAngle * s3.y)); + + vec2 uv0 = (uv/103.0) + (time * s0); + vec2 uv1 = uv/107.0 + (time * s1) + vec2(0.23); + vec2 uv2 = uv/vec2(897.0, 983.0) + (time * s2) + vec2(0.51); + vec2 uv3 = uv/vec2(991.0, 877.0) + (time * s3) + vec2(0.71); + + uv0 = fract(uv0); + uv1 = fract(uv1); + uv2 = fract(uv2); + uv3 = fract(uv3); + vec4 noise = (texture(normalMap, uv0)) + + (texture(normalMap, uv1)) + + (texture(normalMap, uv2)) + + (texture(normalMap, uv3)); + + // average and scale to between -1 and 1 + return ((noise / 4.0) - 0.5) * 2.0; +} +`;var jN=`/** + * Adjusts the hue of a color. + * + * @name czm_hue + * @glslFunction + * + * @param {vec3} rgb The color. + * @param {float} adjustment The amount to adjust the hue of the color in radians. + * + * @returns {float} The color with the hue adjusted. + * + * @example + * vec3 adjustHue = czm_hue(color, czm_pi); // The same as czm_hue(color, -czm_pi) + */ +vec3 czm_hue(vec3 rgb, float adjustment) +{ + const mat3 toYIQ = mat3(0.299, 0.587, 0.114, + 0.595716, -0.274453, -0.321263, + 0.211456, -0.522591, 0.311135); + const mat3 toRGB = mat3(1.0, 0.9563, 0.6210, + 1.0, -0.2721, -0.6474, + 1.0, -1.107, 1.7046); + + vec3 yiq = toYIQ * rgb; + float hue = atan(yiq.z, yiq.y) + adjustment; + float chroma = sqrt(yiq.z * yiq.z + yiq.y * yiq.y); + + vec3 color = vec3(yiq.x, chroma * cos(hue), chroma * sin(hue)); + return toRGB * color; +} +`;var YN=`/** + * Converts a color in linear space to RGB space. + * + * @name czm_inverseGamma + * @glslFunction + * + * @param {vec3} color The color in linear space. + * @returns {vec3} The color in RGB space. + */ +vec3 czm_inverseGamma(vec3 color) { + return pow(color, vec3(1.0 / czm_gamma)); +} +`;var qN=`/** + * Determines if a time interval is empty. + * + * @name czm_isEmpty + * @glslFunction + * + * @param {czm_raySegment} interval The interval to test. + * + * @returns {bool} <code>true</code> if the time interval is empty; otherwise, <code>false</code>. + * + * @example + * bool b0 = czm_isEmpty(czm_emptyRaySegment); // true + * bool b1 = czm_isEmpty(czm_raySegment(0.0, 1.0)); // false + * bool b2 = czm_isEmpty(czm_raySegment(1.0, 1.0)); // false, contains 1.0. + */ +bool czm_isEmpty(czm_raySegment interval) +{ + return (interval.stop < 0.0); +} +`;var KN=`/** + * Determines if a time interval is empty. + * + * @name czm_isFull + * @glslFunction + * + * @param {czm_raySegment} interval The interval to test. + * + * @returns {bool} <code>true</code> if the time interval is empty; otherwise, <code>false</code>. + * + * @example + * bool b0 = czm_isEmpty(czm_emptyRaySegment); // true + * bool b1 = czm_isEmpty(czm_raySegment(0.0, 1.0)); // false + * bool b2 = czm_isEmpty(czm_raySegment(1.0, 1.0)); // false, contains 1.0. + */ +bool czm_isFull(czm_raySegment interval) +{ + return (interval.start == 0.0 && interval.stop == czm_infinity); +} +`;var XN=`/** + * Computes the fraction of a Web Wercator rectangle at which a given geodetic latitude is located. + * + * @name czm_latitudeToWebMercatorFraction + * @glslFunction + * + * @param {float} latitude The geodetic latitude, in radians. + * @param {float} southMercatorY The Web Mercator coordinate of the southern boundary of the rectangle. + * @param {float} oneOverMercatorHeight The total height of the rectangle in Web Mercator coordinates. + * + * @returns {float} The fraction of the rectangle at which the latitude occurs. If the latitude is the southern + * boundary of the rectangle, the return value will be zero. If it is the northern boundary, the return + * value will be 1.0. Latitudes in between are mapped according to the Web Mercator projection. + */ +float czm_latitudeToWebMercatorFraction(float latitude, float southMercatorY, float oneOverMercatorHeight) +{ + float sinLatitude = sin(latitude); + float mercatorY = 0.5 * log((1.0 + sinLatitude) / (1.0 - sinLatitude)); + + return (mercatorY - southMercatorY) * oneOverMercatorHeight; +} +`;var JN=`/** + * Computes distance from an point in 2D to a line in 2D. + * + * @name czm_lineDistance + * @glslFunction + * + * param {vec2} point1 A point along the line. + * param {vec2} point2 A point along the line. + * param {vec2} point A point that may or may not be on the line. + * returns {float} The distance from the point to the line. + */ +float czm_lineDistance(vec2 point1, vec2 point2, vec2 point) { + return abs((point2.y - point1.y) * point.x - (point2.x - point1.x) * point.y + point2.x * point1.y - point2.y * point1.x) / distance(point2, point1); +} +`;var ZN=`/** + * Converts a linear RGB color to an sRGB color. + * + * @param {vec3|vec4} linearIn The color in linear color space. + * @returns {vec3|vec4} The color in sRGB color space. The vector type matches the input. + */ +vec3 czm_linearToSrgb(vec3 linearIn) +{ + return pow(linearIn, vec3(1.0/2.2)); +} + +vec4 czm_linearToSrgb(vec4 linearIn) +{ + vec3 srgbOut = pow(linearIn.rgb, vec3(1.0/2.2)); + return vec4(srgbOut, linearIn.a); +} +`;var $N=`/** + * Computes the luminance of a color. + * + * @name czm_luminance + * @glslFunction + * + * @param {vec3} rgb The color. + * + * @returns {float} The luminance. + * + * @example + * float light = czm_luminance(vec3(0.0)); // 0.0 + * float dark = czm_luminance(vec3(1.0)); // ~1.0 + */ +float czm_luminance(vec3 rgb) +{ + // Algorithm from Chapter 10 of Graphics Shaders. + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + return dot(rgb, W); +} +`;var eL=`/** + * Find the maximum component of a vector. + * + * @name czm_maximumComponent + * @glslFunction + * + * @param {vec2|vec3|vec4} v The input vector. + * @returns {float} The value of the largest component. + */ +float czm_maximumComponent(vec2 v) +{ + return max(v.x, v.y); +} +float czm_maximumComponent(vec3 v) +{ + return max(max(v.x, v.y), v.z); +} +float czm_maximumComponent(vec4 v) +{ + return max(max(max(v.x, v.y), v.z), v.w); +} +`;var tL=`/** + * Computes the size of a pixel in meters at a distance from the eye. + * <p> + * Use this version when passing in a custom pixel ratio. For example, passing in 1.0 will return meters per native device pixel. + * </p> + * @name czm_metersPerPixel + * @glslFunction + * + * @param {vec3} positionEC The position to get the meters per pixel in eye coordinates. + * @param {float} pixelRatio The scaling factor from pixel space to coordinate space + * + * @returns {float} The meters per pixel at positionEC. + */ +float czm_metersPerPixel(vec4 positionEC, float pixelRatio) +{ + float width = czm_viewport.z; + float height = czm_viewport.w; + float pixelWidth; + float pixelHeight; + + float top = czm_frustumPlanes.x; + float bottom = czm_frustumPlanes.y; + float left = czm_frustumPlanes.z; + float right = czm_frustumPlanes.w; + + if (czm_sceneMode == czm_sceneMode2D || czm_orthographicIn3D == 1.0) + { + float frustumWidth = right - left; + float frustumHeight = top - bottom; + pixelWidth = frustumWidth / width; + pixelHeight = frustumHeight / height; + } + else + { + float distanceToPixel = -positionEC.z; + float inverseNear = 1.0 / czm_currentFrustum.x; + float tanTheta = top * inverseNear; + pixelHeight = 2.0 * distanceToPixel * tanTheta / height; + tanTheta = right * inverseNear; + pixelWidth = 2.0 * distanceToPixel * tanTheta / width; + } + + return max(pixelWidth, pixelHeight) * pixelRatio; +} + +/** + * Computes the size of a pixel in meters at a distance from the eye. + * <p> + * Use this version when scaling by pixel ratio. + * </p> + * @name czm_metersPerPixel + * @glslFunction + * + * @param {vec3} positionEC The position to get the meters per pixel in eye coordinates. + * + * @returns {float} The meters per pixel at positionEC. + */ +float czm_metersPerPixel(vec4 positionEC) +{ + return czm_metersPerPixel(positionEC, czm_pixelRatio); +} +`;var nL=`/** + * Transforms a position from model to window coordinates. The transformation + * from model to clip coordinates is done using {@link czm_modelViewProjection}. + * The transform from normalized device coordinates to window coordinates is + * done using {@link czm_viewportTransformation}, which assumes a depth range + * of <code>near = 0</code> and <code>far = 1</code>. + * <br /><br /> + * This transform is useful when there is a need to manipulate window coordinates + * in a vertex shader as done by {@link BillboardCollection}. + * <br /><br /> + * This function should not be confused with {@link czm_viewportOrthographic}, + * which is an orthographic projection matrix that transforms from window + * coordinates to clip coordinates. + * + * @name czm_modelToWindowCoordinates + * @glslFunction + * + * @param {vec4} position The position in model coordinates to transform. + * + * @returns {vec4} The transformed position in window coordinates. + * + * @see czm_eyeToWindowCoordinates + * @see czm_modelViewProjection + * @see czm_viewportTransformation + * @see czm_viewportOrthographic + * @see BillboardCollection + * + * @example + * vec4 positionWC = czm_modelToWindowCoordinates(positionMC); + */ +vec4 czm_modelToWindowCoordinates(vec4 position) +{ + vec4 positionEC = czm_modelView * position; + vec4 q = czm_projection * positionEC; + q.xyz /= q.w; // normalized device coordinates + q.xyz = (czm_viewportTransformation * vec4(q.xyz, 1.0)).xyz; // window coordinates + return q; +} +`;var iL=`/** + * DOC_TBA + * + * @name czm_multiplyWithColorBalance + * @glslFunction + */ +vec3 czm_multiplyWithColorBalance(vec3 left, vec3 right) +{ + // Algorithm from Chapter 10 of Graphics Shaders. + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + + vec3 target = left * right; + float leftLuminance = dot(left, W); + float rightLuminance = dot(right, W); + float targetLuminance = dot(target, W); + + return ((leftLuminance + rightLuminance) / (2.0 * targetLuminance)) * target; +} +`;var oL=`/** + * Computes a value that scales with distance. The scaling is clamped at the near and + * far distances, and does not extrapolate. This function works with the + * {@link NearFarScalar} JavaScript class. + * + * @name czm_nearFarScalar + * @glslFunction + * + * @param {vec4} nearFarScalar A vector with 4 components: Near distance (x), Near value (y), Far distance (z), Far value (w). + * @param {float} cameraDistSq The square of the current distance from the camera. + * + * @returns {float} The value at this distance. + */ +float czm_nearFarScalar(vec4 nearFarScalar, float cameraDistSq) +{ + float valueAtMin = nearFarScalar.y; + float valueAtMax = nearFarScalar.w; + float nearDistanceSq = nearFarScalar.x * nearFarScalar.x; + float farDistanceSq = nearFarScalar.z * nearFarScalar.z; + + float t = (cameraDistSq - nearDistanceSq) / (farDistanceSq - nearDistanceSq); + + t = pow(clamp(t, 0.0, 1.0), 0.2); + + return mix(valueAtMin, valueAtMax, t); +} +`;var rL=` /** + * Decodes a unit-length vector in 'oct' encoding to a normalized 3-component Cartesian vector. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {vec2} encoded The oct-encoded, unit-length vector + * @param {float} range The maximum value of the SNORM range. The encoded vector is stored in log2(rangeMax+1) bits. + * @returns {vec3} The decoded and normalized vector + */ + vec3 czm_octDecode(vec2 encoded, float range) + { + if (encoded.x == 0.0 && encoded.y == 0.0) { + return vec3(0.0, 0.0, 0.0); + } + + encoded = encoded / range * 2.0 - 1.0; + vec3 v = vec3(encoded.x, encoded.y, 1.0 - abs(encoded.x) - abs(encoded.y)); + if (v.z < 0.0) + { + v.xy = (1.0 - abs(v.yx)) * czm_signNotZero(v.xy); + } + + return normalize(v); + } + +/** + * Decodes a unit-length vector in 'oct' encoding to a normalized 3-component Cartesian vector. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {vec2} encoded The oct-encoded, unit-length vector + * @returns {vec3} The decoded and normalized vector + */ + vec3 czm_octDecode(vec2 encoded) + { + return czm_octDecode(encoded, 255.0); + } + + /** + * Decodes a unit-length vector in 'oct' encoding packed into a floating-point number to a normalized 3-component Cartesian vector. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {float} encoded The oct-encoded, unit-length vector + * @returns {vec3} The decoded and normalized vector + */ + vec3 czm_octDecode(float encoded) + { + float temp = encoded / 256.0; + float x = floor(temp); + float y = (temp - x) * 256.0; + return czm_octDecode(vec2(x, y)); + } + +/** + * Decodes three unit-length vectors in 'oct' encoding packed into two floating-point numbers to normalized 3-component Cartesian vectors. + * The 'oct' encoding is described in "A Survey of Efficient Representations of Independent Unit Vectors", + * Cigolle et al 2014: http://jcgt.org/published/0003/02/01/ + * + * @name czm_octDecode + * @param {vec2} encoded The packed oct-encoded, unit-length vectors. + * @param {vec3} vector1 One decoded and normalized vector. + * @param {vec3} vector2 One decoded and normalized vector. + * @param {vec3} vector3 One decoded and normalized vector. + */ + void czm_octDecode(vec2 encoded, out vec3 vector1, out vec3 vector2, out vec3 vector3) + { + float temp = encoded.x / 65536.0; + float x = floor(temp); + float encodedFloat1 = (temp - x) * 65536.0; + + temp = encoded.y / 65536.0; + float y = floor(temp); + float encodedFloat2 = (temp - y) * 65536.0; + + vector1 = czm_octDecode(encodedFloat1); + vector2 = czm_octDecode(encodedFloat2); + vector3 = czm_octDecode(vec2(x, y)); + } + +`;var sL=`/** + * Packs a depth value into a vec4 that can be represented by unsigned bytes. + * + * @name czm_packDepth + * @glslFunction + * + * @param {float} depth The floating-point depth. + * @returns {vec4} The packed depth. + */ +vec4 czm_packDepth(float depth) +{ + // See Aras Pranckevi\u010Dius' post Encoding Floats to RGBA + // http://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/ + vec4 enc = vec4(1.0, 255.0, 65025.0, 16581375.0) * depth; + enc = fract(enc); + enc -= enc.yzww * vec4(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0); + return enc; +} +`;var aL=`vec3 lambertianDiffuse(vec3 diffuseColor) +{ + return diffuseColor / czm_pi; +} + +vec3 fresnelSchlick2(vec3 f0, vec3 f90, float VdotH) +{ + float versine = 1.0 - VdotH; + // pow(versine, 5.0) is slow. See https://stackoverflow.com/a/68793086/10082269 + float versineSquared = versine * versine; + return f0 + (f90 - f0) * versineSquared * versineSquared * versine; +} + +#ifdef USE_ANISOTROPY +/** + * @param {float} bitangentRoughness Material roughness (along the anisotropy bitangent) + * @param {float} tangentialRoughness Anisotropic roughness (along the anisotropy tangent) + * @param {vec3} lightDirection The direction from the fragment to the light source, transformed to tangent-bitangent-normal coordinates + * @param {vec3} viewDirection The direction from the fragment to the camera, transformed to tangent-bitangent-normal coordinates + */ +float smithVisibilityGGX_anisotropic(float bitangentRoughness, float tangentialRoughness, vec3 lightDirection, vec3 viewDirection) +{ + vec3 roughnessScale = vec3(tangentialRoughness, bitangentRoughness, 1.0); + float GGXV = lightDirection.z * length(roughnessScale * viewDirection); + float GGXL = viewDirection.z * length(roughnessScale * lightDirection); + float v = 0.5 / (GGXV + GGXL); + return clamp(v, 0.0, 1.0); +} + +/** + * @param {float} bitangentRoughness Material roughness (along the anisotropy bitangent) + * @param {float} tangentialRoughness Anisotropic roughness (along the anisotropy tangent) + * @param {vec3} halfwayDirection The unit vector halfway between light and view directions, transformed to tangent-bitangent-normal coordinates + */ +float GGX_anisotropic(float bitangentRoughness, float tangentialRoughness, vec3 halfwayDirection) +{ + float roughnessSquared = bitangentRoughness * tangentialRoughness; + vec3 f = halfwayDirection * vec3(bitangentRoughness, tangentialRoughness, roughnessSquared); + float w2 = roughnessSquared / dot(f, f); + return roughnessSquared * w2 * w2 / czm_pi; +} +#endif + +/** + * Estimate the geometric self-shadowing of the microfacets in a surface, + * using the Smith Joint GGX visibility function. + * Note: Vis = G / (4 * NdotL * NdotV) + * see Eric Heitz. 2014. Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs. Journal of Computer Graphics Techniques, 3 + * see Real-Time Rendering. Page 331 to 336. + * see https://google.github.io/filament/Filament.md.html#materialsystem/specularbrdf/geometricshadowing(specularg) + * + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @param {float} NdotL The cosine of the angle between the surface normal and the direction to the light source. + * @param {float} NdotV The cosine of the angle between the surface normal and the direction to the camera. + */ +float smithVisibilityGGX(float alphaRoughness, float NdotL, float NdotV) +{ + float alphaRoughnessSq = alphaRoughness * alphaRoughness; + + float GGXV = NdotL * sqrt(NdotV * NdotV * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + float GGXL = NdotV * sqrt(NdotL * NdotL * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + + float GGX = GGXV + GGXL; + if (GGX > 0.0) + { + return 0.5 / GGX; + } + return 0.0; +} + +/** + * Estimate the fraction of the microfacets in a surface that are aligned with + * the halfway vector, which is aligned halfway between the directions from + * the fragment to the camera and from the fragment to the light source. + * + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @param {float} NdotH The cosine of the angle between the surface normal and the halfway vector. + * @return {float} The fraction of microfacets aligned to the halfway vector. + */ +float GGX(float alphaRoughness, float NdotH) +{ + float alphaRoughnessSquared = alphaRoughness * alphaRoughness; + float f = (NdotH * alphaRoughnessSquared - NdotH) * NdotH + 1.0; + return alphaRoughnessSquared / (czm_pi * f * f); +} + +/** + * Compute the strength of the specular reflection due to direct lighting. + * + * @param {vec3} normal The surface normal. + * @param {vec3} lightDirection The unit vector pointing from the fragment to the light source. + * @param {vec3} viewDirection The unit vector pointing from the fragment to the camera. + * @param {vec3} halfwayDirection The unit vector pointing from the fragment to halfway between the light source and the camera. + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @return {float} The strength of the specular reflection. + */ +float computeDirectSpecularStrength(vec3 normal, vec3 lightDirection, vec3 viewDirection, vec3 halfwayDirection, float alphaRoughness) +{ + float NdotL = clamp(dot(normal, lightDirection), 0.0, 1.0); + float NdotV = clamp(dot(normal, viewDirection), 0.0, 1.0); + float G = smithVisibilityGGX(alphaRoughness, NdotL, NdotV); + float NdotH = clamp(dot(normal, halfwayDirection), 0.0, 1.0); + float D = GGX(alphaRoughness, NdotH); + return G * D; +} + +/** + * Compute the diffuse and specular contributions using physically based + * rendering. This function only handles direct lighting. + * <p> + * This function only handles the lighting calculations. Metallic/roughness + * and specular/glossy must be handled separately. See {@MaterialStageFS} + * </p> + * + * @name czm_pbrLighting + * @glslFunction + * + * @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position + * @param {vec3} normalEC The surface normal in eye coordinates + * @param {vec3} lightDirectionEC Unit vector pointing to the light source in eye coordinates. + * @param {czm_modelMaterial} The material properties. + * @return {vec3} The computed HDR color + */ +vec3 czm_pbrLighting(vec3 viewDirectionEC, vec3 normalEC, vec3 lightDirectionEC, czm_modelMaterial material) +{ + vec3 halfwayDirectionEC = normalize(viewDirectionEC + lightDirectionEC); + float VdotH = clamp(dot(viewDirectionEC, halfwayDirectionEC), 0.0, 1.0); + float NdotL = clamp(dot(normalEC, lightDirectionEC), 0.001, 1.0); + + vec3 f0 = material.specular; + float reflectance = czm_maximumComponent(f0); + // Typical dielectrics will have reflectance 0.04, so f90 will be 1.0. + // In this case, at grazing angle, all incident energy is reflected. + vec3 f90 = vec3(clamp(reflectance * 25.0, 0.0, 1.0)); + vec3 F = fresnelSchlick2(f0, f90, VdotH); + + #if defined(USE_SPECULAR) + F *= material.specularWeight; + #endif + + float alphaRoughness = material.roughness * material.roughness; + #ifdef USE_ANISOTROPY + mat3 tbn = mat3(material.anisotropicT, material.anisotropicB, normalEC); + vec3 lightDirection = lightDirectionEC * tbn; + vec3 viewDirection = viewDirectionEC * tbn; + vec3 halfwayDirection = halfwayDirectionEC * tbn; + float anisotropyStrength = material.anisotropyStrength; + float tangentialRoughness = mix(alphaRoughness, 1.0, anisotropyStrength * anisotropyStrength); + float bitangentRoughness = clamp(alphaRoughness, 0.001, 1.0); + float G = smithVisibilityGGX_anisotropic(bitangentRoughness, tangentialRoughness, lightDirection, viewDirection); + float D = GGX_anisotropic(bitangentRoughness, tangentialRoughness, halfwayDirection); + vec3 specularContribution = F * G * D; + #else + float specularStrength = computeDirectSpecularStrength(normalEC, lightDirectionEC, viewDirectionEC, halfwayDirectionEC, alphaRoughness); + vec3 specularContribution = F * specularStrength; + #endif + + vec3 diffuseColor = material.diffuse; + // F here represents the specular contribution + vec3 diffuseContribution = (1.0 - F) * lambertianDiffuse(diffuseColor); + + // Lo = (diffuse + specular) * Li * NdotL + return (diffuseContribution + specularContribution) * NdotL; +} +`;var cL=`// KhronosGroup https://github.com/KhronosGroup/ToneMapping/tree/main/PBR_Neutral + +// Input color is non-negative and resides in the Linear Rec. 709 color space. +// Output color is also Linear Rec. 709, but in the [0, 1] range. + +vec3 czm_pbrNeutralTonemapping(vec3 color) { + const float startCompression = 0.8 - 0.04; + const float desaturation = 0.15; + + float x = min(color.r, min(color.g, color.b)); + float offset = czm_branchFreeTernary(x < 0.08, x - 6.25 * x * x, 0.04); + color -= offset; + + float peak = max(color.r, max(color.g, color.b)); + if (peak < startCompression) return color; + + const float d = 1.0 - startCompression; + float newPeak = 1.0 - d * d / (peak + d - startCompression); + color *= newPeak / peak; + + float g = 1.0 - 1.0 / (desaturation * (peak - newPeak) + 1.0); + return mix(color, newPeak * vec3(1.0, 1.0, 1.0), g); +} +`;var lL=`float czm_private_getLambertDiffuseOfMaterial(vec3 lightDirectionEC, czm_material material) +{ + return czm_getLambertDiffuse(lightDirectionEC, material.normal); +} + +float czm_private_getSpecularOfMaterial(vec3 lightDirectionEC, vec3 toEyeEC, czm_material material) +{ + return czm_getSpecular(lightDirectionEC, toEyeEC, material.normal, material.shininess); +} + +/** + * Computes a color using the Phong lighting model. + * + * @name czm_phong + * @glslFunction + * + * @param {vec3} toEye A normalized vector from the fragment to the eye in eye coordinates. + * @param {czm_material} material The fragment's material. + * + * @returns {vec4} The computed color. + * + * @example + * vec3 positionToEyeEC = // ... + * czm_material material = // ... + * vec3 lightDirectionEC = // ... + * out_FragColor = czm_phong(normalize(positionToEyeEC), material, lightDirectionEC); + * + * @see czm_getMaterial + */ +vec4 czm_phong(vec3 toEye, czm_material material, vec3 lightDirectionEC) +{ + // Diffuse from directional light sources at eye (for top-down) + float diffuse = czm_private_getLambertDiffuseOfMaterial(vec3(0.0, 0.0, 1.0), material); + if (czm_sceneMode == czm_sceneMode3D) { + // (and horizon views in 3D) + diffuse += czm_private_getLambertDiffuseOfMaterial(vec3(0.0, 1.0, 0.0), material); + } + + float specular = czm_private_getSpecularOfMaterial(lightDirectionEC, toEye, material); + + // Temporary workaround for adding ambient. + vec3 materialDiffuse = material.diffuse * 0.5; + + vec3 ambient = materialDiffuse; + vec3 color = ambient + material.emission; + color += materialDiffuse * diffuse * czm_lightColor; + color += material.specular * specular * czm_lightColor; + + return vec4(color, material.alpha); +} + +vec4 czm_private_phong(vec3 toEye, czm_material material, vec3 lightDirectionEC) +{ + float diffuse = czm_private_getLambertDiffuseOfMaterial(lightDirectionEC, material); + float specular = czm_private_getSpecularOfMaterial(lightDirectionEC, toEye, material); + + vec3 ambient = vec3(0.0); + vec3 color = ambient + material.emission; + color += material.diffuse * diffuse * czm_lightColor; + color += material.specular * specular * czm_lightColor; + + return vec4(color, material.alpha); +} +`;var uL=`/** + * Computes distance from a point to a plane. + * + * @name czm_planeDistance + * @glslFunction + * + * param {vec4} plane A Plane in Hessian Normal Form. See Plane.js + * param {vec3} point A point in the same space as the plane. + * returns {float} The distance from the point to the plane. + */ +float czm_planeDistance(vec4 plane, vec3 point) { + return (dot(plane.xyz, point) + plane.w); +} + +/** + * Computes distance from a point to a plane. + * + * @name czm_planeDistance + * @glslFunction + * + * param {vec3} planeNormal Normal for a plane in Hessian Normal Form. See Plane.js + * param {float} planeDistance Distance for a plane in Hessian Normal form. See Plane.js + * param {vec3} point A point in the same space as the plane. + * returns {float} The distance from the point to the plane. + */ +float czm_planeDistance(vec3 planeNormal, float planeDistance, vec3 point) { + return (dot(planeNormal, point) + planeDistance); +} +`;var fL=`/** + * Computes the point along a ray at the given time. <code>time</code> can be positive, negative, or zero. + * + * @name czm_pointAlongRay + * @glslFunction + * + * @param {czm_ray} ray The ray to compute the point along. + * @param {float} time The time along the ray. + * + * @returns {vec3} The point along the ray at the given time. + * + * @example + * czm_ray ray = czm_ray(vec3(0.0), vec3(1.0, 0.0, 0.0)); // origin, direction + * vec3 v = czm_pointAlongRay(ray, 2.0); // (2.0, 0.0, 0.0) + */ +vec3 czm_pointAlongRay(czm_ray ray, float time) +{ + return ray.origin + (time * ray.direction); +} +`;var dL=`/** + * DOC_TBA + * + * @name czm_rayEllipsoidIntersectionInterval + * @glslFunction + */ +czm_raySegment czm_rayEllipsoidIntersectionInterval(czm_ray ray, vec3 ellipsoid_center, vec3 ellipsoid_inverseRadii) +{ + // ray and ellipsoid center in eye coordinates. radii in model coordinates. + vec3 q = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ray.origin, 1.0)).xyz; + vec3 w = ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ray.direction, 0.0)).xyz; + + q = q - ellipsoid_inverseRadii * (czm_inverseModelView * vec4(ellipsoid_center, 1.0)).xyz; + + float q2 = dot(q, q); + float qw = dot(q, w); + + if (q2 > 1.0) // Outside ellipsoid. + { + if (qw >= 0.0) // Looking outward or tangent (0 intersections). + { + return czm_emptyRaySegment; + } + else // qw < 0.0. + { + float qw2 = qw * qw; + float difference = q2 - 1.0; // Positively valued. + float w2 = dot(w, w); + float product = w2 * difference; + + if (qw2 < product) // Imaginary roots (0 intersections). + { + return czm_emptyRaySegment; + } + else if (qw2 > product) // Distinct roots (2 intersections). + { + float discriminant = qw * qw - product; + float temp = -qw + sqrt(discriminant); // Avoid cancellation. + float root0 = temp / w2; + float root1 = difference / temp; + if (root0 < root1) + { + czm_raySegment i = czm_raySegment(root0, root1); + return i; + } + else + { + czm_raySegment i = czm_raySegment(root1, root0); + return i; + } + } + else // qw2 == product. Repeated roots (2 intersections). + { + float root = sqrt(difference / w2); + czm_raySegment i = czm_raySegment(root, root); + return i; + } + } + } + else if (q2 < 1.0) // Inside ellipsoid (2 intersections). + { + float difference = q2 - 1.0; // Negatively valued. + float w2 = dot(w, w); + float product = w2 * difference; // Negatively valued. + float discriminant = qw * qw - product; + float temp = -qw + sqrt(discriminant); // Positively valued. + czm_raySegment i = czm_raySegment(0.0, temp / w2); + return i; + } + else // q2 == 1.0. On ellipsoid. + { + if (qw < 0.0) // Looking inward. + { + float w2 = dot(w, w); + czm_raySegment i = czm_raySegment(0.0, -qw / w2); + return i; + } + else // qw >= 0.0. Looking outward or tangent. + { + return czm_emptyRaySegment; + } + } +} +`;var hL=`/** + * Compute the intersection interval of a ray with a sphere. + * + * @name czm_raySphereIntersectionInterval + * @glslFunction + * + * @param {czm_ray} ray The ray. + * @param {vec3} center The center of the sphere. + * @param {float} radius The radius of the sphere. + * @return {czm_raySegment} The intersection interval of the ray with the sphere. + */ +czm_raySegment czm_raySphereIntersectionInterval(czm_ray ray, vec3 center, float radius) +{ + vec3 o = ray.origin; + vec3 d = ray.direction; + + vec3 oc = o - center; + + float a = dot(d, d); + float b = 2.0 * dot(d, oc); + float c = dot(oc, oc) - (radius * radius); + + float det = (b * b) - (4.0 * a * c); + + if (det < 0.0) { + return czm_emptyRaySegment; + } + + float sqrtDet = sqrt(det); + + float t0 = (-b - sqrtDet) / (2.0 * a); + float t1 = (-b + sqrtDet) / (2.0 * a); + + czm_raySegment result = czm_raySegment(t0, t1); + return result; +} +`;var mL=`float czm_readDepth(sampler2D depthTexture, vec2 texCoords) +{ + return czm_reverseLogDepth(texture(depthTexture, texCoords).r); +} +`;var AL=`/** + * Reads a value previously transformed with {@link czm_writeNonPerspective} + * by dividing it by \`w\`, the value used in the perspective divide. + * This function is intended to be called in a fragment shader to access a + * \`varying\` that should not be subject to perspective interpolation. + * For example, screen-space texture coordinates. The value should have been + * previously written in the vertex shader with a call to + * {@link czm_writeNonPerspective}. + * + * @name czm_readNonPerspective + * @glslFunction + * + * @param {float|vec2|vec3|vec4} value The non-perspective value to be read. + * @param {float} oneOverW One over the perspective divide value, \`w\`. Usually this is simply \`gl_FragCoord.w\`. + * @returns {float|vec2|vec3|vec4} The usable value. + */ +float czm_readNonPerspective(float value, float oneOverW) { + return value * oneOverW; +} + +vec2 czm_readNonPerspective(vec2 value, float oneOverW) { + return value * oneOverW; +} + +vec3 czm_readNonPerspective(vec3 value, float oneOverW) { + return value * oneOverW; +} + +vec4 czm_readNonPerspective(vec4 value, float oneOverW) { + return value * oneOverW; +} +`;var pL=`float czm_reverseLogDepth(float logZ) +{ +#ifdef LOG_DEPTH + float near = czm_currentFrustum.x; + float far = czm_currentFrustum.y; + float log2Depth = logZ * czm_log2FarDepthFromNearPlusOne; + float depthFromNear = exp2(log2Depth) - 1.0; + return far * (1.0 - near / (depthFromNear + near)) / (far - near); +#endif + return logZ; +} +`;var gL=`/** + * Round a floating point value. This function exists because round() doesn't + * exist in GLSL 1.00. + * + * @param {float|vec2|vec3|vec4} value The value to round + * @param {float|vec2|vec3|vec3} The rounded value. The type matches the input. + */ +float czm_round(float value) { + return floor(value + 0.5); +} + +vec2 czm_round(vec2 value) { + return floor(value + 0.5); +} + +vec3 czm_round(vec3 value) { + return floor(value + 0.5); +} + +vec4 czm_round(vec4 value) { + return floor(value + 0.5); +} +`;var _L=`/** + * Adjusts the saturation of a color. + * + * @name czm_saturation + * @glslFunction + * + * @param {vec3} rgb The color. + * @param {float} adjustment The amount to adjust the saturation of the color. + * + * @returns {float} The color with the saturation adjusted. + * + * @example + * vec3 greyScale = czm_saturation(color, 0.0); + * vec3 doubleSaturation = czm_saturation(color, 2.0); + */ +vec3 czm_saturation(vec3 rgb, float adjustment) +{ + // Algorithm from Chapter 16 of OpenGL Shading Language + const vec3 W = vec3(0.2125, 0.7154, 0.0721); + vec3 intensity = vec3(dot(rgb, W)); + return mix(intensity, rgb, adjustment); +} +`;var yL=` +float czm_sampleShadowMap(highp samplerCube shadowMap, vec3 d) +{ + return czm_unpackDepth(czm_textureCube(shadowMap, d)); +} + +float czm_sampleShadowMap(highp sampler2D shadowMap, vec2 uv) +{ +#ifdef USE_SHADOW_DEPTH_TEXTURE + return texture(shadowMap, uv).r; +#else + return czm_unpackDepth(texture(shadowMap, uv)); +#endif +} + +float czm_shadowDepthCompare(samplerCube shadowMap, vec3 uv, float depth) +{ + return step(depth, czm_sampleShadowMap(shadowMap, uv)); +} + +float czm_shadowDepthCompare(sampler2D shadowMap, vec2 uv, float depth) +{ + return step(depth, czm_sampleShadowMap(shadowMap, uv)); +} +`;var CL=` +float czm_private_shadowVisibility(float visibility, float nDotL, float normalShadingSmooth, float darkness) +{ +#ifdef USE_NORMAL_SHADING +#ifdef USE_NORMAL_SHADING_SMOOTH + float strength = clamp(nDotL / normalShadingSmooth, 0.0, 1.0); +#else + float strength = step(0.0, nDotL); +#endif + visibility *= strength; +#endif + + visibility = max(visibility, darkness); + return visibility; +} + +#ifdef USE_CUBE_MAP_SHADOW +float czm_shadowVisibility(samplerCube shadowMap, czm_shadowParameters shadowParameters) +{ + float depthBias = shadowParameters.depthBias; + float depth = shadowParameters.depth; + float nDotL = shadowParameters.nDotL; + float normalShadingSmooth = shadowParameters.normalShadingSmooth; + float darkness = shadowParameters.darkness; + vec3 uvw = shadowParameters.texCoords; + + depth -= depthBias; + float visibility = czm_shadowDepthCompare(shadowMap, uvw, depth); + return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness); +} +#else +float czm_shadowVisibility(sampler2D shadowMap, czm_shadowParameters shadowParameters) +{ + float depthBias = shadowParameters.depthBias; + float depth = shadowParameters.depth; + float nDotL = shadowParameters.nDotL; + float normalShadingSmooth = shadowParameters.normalShadingSmooth; + float darkness = shadowParameters.darkness; + vec2 uv = shadowParameters.texCoords; + + depth -= depthBias; +#ifdef USE_SOFT_SHADOWS + vec2 texelStepSize = shadowParameters.texelStepSize; + float radius = 1.0; + float dx0 = -texelStepSize.x * radius; + float dy0 = -texelStepSize.y * radius; + float dx1 = texelStepSize.x * radius; + float dy1 = texelStepSize.y * radius; + float visibility = ( + czm_shadowDepthCompare(shadowMap, uv, depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, dy0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(0.0, dy0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, dy0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, 0.0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, 0.0), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx0, dy1), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(0.0, dy1), depth) + + czm_shadowDepthCompare(shadowMap, uv + vec2(dx1, dy1), depth) + ) * (1.0 / 9.0); +#else + float visibility = czm_shadowDepthCompare(shadowMap, uv, depth); +#endif + + return czm_private_shadowVisibility(visibility, nDotL, normalShadingSmooth, darkness); +} +#endif +`;var EL=`/** + * Returns 1.0 if the given value is positive or zero, and -1.0 if it is negative. This is similar to the GLSL + * built-in function <code>sign</code> except that returns 1.0 instead of 0.0 when the input value is 0.0. + * + * @name czm_signNotZero + * @glslFunction + * + * @param {} value The value for which to determine the sign. + * @returns {} 1.0 if the value is positive or zero, -1.0 if the value is negative. + */ +float czm_signNotZero(float value) +{ + return value >= 0.0 ? 1.0 : -1.0; +} + +vec2 czm_signNotZero(vec2 value) +{ + return vec2(czm_signNotZero(value.x), czm_signNotZero(value.y)); +} + +vec3 czm_signNotZero(vec3 value) +{ + return vec3(czm_signNotZero(value.x), czm_signNotZero(value.y), czm_signNotZero(value.z)); +} + +vec4 czm_signNotZero(vec4 value) +{ + return vec4(czm_signNotZero(value.x), czm_signNotZero(value.y), czm_signNotZero(value.z), czm_signNotZero(value.w)); +} +`;var IL=`/** + * Computes a color from the third order spherical harmonic coefficients and a normalized direction vector. + * <p> + * The order of the coefficients is [L00, L1_1, L10, L11, L2_2, L2_1, L20, L21, L22]. + * </p> + * + * @name czm_sphericalHarmonics + * @glslFunction + * + * @param {vec3} normal The normalized direction. + * @param {vec3[9]} coefficients The third order spherical harmonic coefficients. + * @returns {vec3} The color at the direction. + * + * @see https://graphics.stanford.edu/papers/envmap/envmap.pdf + */ +vec3 czm_sphericalHarmonics(vec3 normal, vec3 coefficients[9]) +{ + vec3 L00 = coefficients[0]; + vec3 L1_1 = coefficients[1]; + vec3 L10 = coefficients[2]; + vec3 L11 = coefficients[3]; + vec3 L2_2 = coefficients[4]; + vec3 L2_1 = coefficients[5]; + vec3 L20 = coefficients[6]; + vec3 L21 = coefficients[7]; + vec3 L22 = coefficients[8]; + + float x = normal.x; + float y = normal.y; + float z = normal.z; + + vec3 L = + L00 + + L1_1 * y + + L10 * z + + L11 * x + + L2_2 * (y * x) + + L2_1 * (y * z) + + L20 * (3.0 * z * z - 1.0) + + L21 * (z * x) + + L22 * (x * x - y * y); + + return max(L, vec3(0.0)); +} +`;var xL=`/** + * Converts an sRGB color to a linear RGB color. + * + * @param {vec3|vec4} srgbIn The color in sRGB space + * @returns {vec3|vec4} The color in linear color space. The vector type matches the input. + */ +vec3 czm_srgbToLinear(vec3 srgbIn) +{ + return pow(srgbIn, vec3(2.2)); +} + +vec4 czm_srgbToLinear(vec4 srgbIn) +{ + vec3 linearOut = pow(srgbIn.rgb, vec3(2.2)); + return vec4(linearOut, srgbIn.a); +} +`;var bL=`/** + * Creates a matrix that transforms vectors from tangent space to eye space. + * + * @name czm_tangentToEyeSpaceMatrix + * @glslFunction + * + * @param {vec3} normalEC The normal vector in eye coordinates. + * @param {vec3} tangentEC The tangent vector in eye coordinates. + * @param {vec3} bitangentEC The bitangent vector in eye coordinates. + * + * @returns {mat3} The matrix that transforms from tangent space to eye space. + * + * @example + * mat3 tangentToEye = czm_tangentToEyeSpaceMatrix(normalEC, tangentEC, bitangentEC); + * vec3 normal = tangentToEye * texture(normalMap, st).xyz; + */ +mat3 czm_tangentToEyeSpaceMatrix(vec3 normalEC, vec3 tangentEC, vec3 bitangentEC) +{ + vec3 normal = normalize(normalEC); + vec3 tangent = normalize(tangentEC); + vec3 bitangent = normalize(bitangentEC); + return mat3(tangent.x , tangent.y , tangent.z, + bitangent.x, bitangent.y, bitangent.z, + normal.x , normal.y , normal.z); +} +`;var TL=`/** + * A wrapper around the texture (WebGL2) / textureCube (WebGL1) + * function to allow for WebGL 1 support. + * + * @name czm_textureCube + * @glslFunction + * + * @param {samplerCube} sampler The sampler. + * @param {vec3} p The coordinate at which to sample the texture. + */ +vec4 czm_textureCube(samplerCube sampler, vec3 p) { +#if __VERSION__ == 300 + return texture(sampler, p); +#else + return textureCube(sampler, p); +#endif +} + +/** + * A wrapper around the textureLod (WebGL2) / textureCube (WebGL1) + * function to allow for WebGL 1 support in fragment shaders. + * + * @name czm_textureCubeLod + * @glslFunction + * + * @param {samplerCube} sampler The sampler. + * @param {vec3} p The coordinate at which to sample the texture. + * @param {float} lod The mipmap level from which to sample. + */ +vec4 czm_textureCube(samplerCube sampler, vec3 p, float lod) { +#if __VERSION__ == 300 + return textureLod(sampler, p, lod); +#elif defined(GL_EXT_shader_texture_lod) + return textureCubeLodEXT(sampler, p, lod); +#endif +}`;var SL=`/** + * Transforms a plane. + * + * @name czm_transformPlane + * @glslFunction + * + * @param {vec4} plane The plane in Hessian Normal Form. + * @param {mat4} transform The inverse-transpose of a transformation matrix. + */ +vec4 czm_transformPlane(vec4 plane, mat4 transform) { + vec4 transformedPlane = transform * plane; + // Convert the transformed plane to Hessian Normal Form + float normalMagnitude = length(transformedPlane.xyz); + return transformedPlane / normalMagnitude; +} +`;var wL=`/** + * Translates a position (or any <code>vec3</code>) that was encoded with {@link EncodedCartesian3}, + * and then provided to the shader as separate <code>high</code> and <code>low</code> bits to + * be relative to the eye. As shown in the example, the position can then be transformed in eye + * or clip coordinates using {@link czm_modelViewRelativeToEye} or {@link czm_modelViewProjectionRelativeToEye}, + * respectively. + * <p> + * This technique, called GPU RTE, eliminates jittering artifacts when using large coordinates as + * described in {@link http://help.agi.com/AGIComponents/html/BlogPrecisionsPrecisions.htm|Precisions, Precisions}. + * </p> + * + * @name czm_translateRelativeToEye + * @glslFunction + * + * @param {vec3} high The position's high bits. + * @param {vec3} low The position's low bits. + * @returns {vec3} The position translated to be relative to the camera's position. + * + * @example + * in vec3 positionHigh; + * in vec3 positionLow; + * + * void main() + * { + * vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + * gl_Position = czm_modelViewProjectionRelativeToEye * p; + * } + * + * @see czm_modelViewRelativeToEye + * @see czm_modelViewProjectionRelativeToEye + * @see czm_computePosition + * @see EncodedCartesian3 + */ +vec4 czm_translateRelativeToEye(vec3 high, vec3 low) +{ + vec3 highDifference = high - czm_encodedCameraPositionMCHigh; + // This check handles the case when NaN values have gotten into \`highDifference\`. + // Such a thing could happen on devices running iOS. + if (length(highDifference) == 0.0) { + highDifference = vec3(0); + } + vec3 lowDifference = low - czm_encodedCameraPositionMCLow; + + return vec4(highDifference + lowDifference, 1.0); +} +`;var BL=`/** + * @private + */ +vec4 czm_translucentPhong(vec3 toEye, czm_material material, vec3 lightDirectionEC) +{ + // Diffuse from directional light sources at eye (for top-down and horizon views) + float diffuse = czm_getLambertDiffuse(vec3(0.0, 0.0, 1.0), material.normal); + + if (czm_sceneMode == czm_sceneMode3D) { + // (and horizon views in 3D) + diffuse += czm_getLambertDiffuse(vec3(0.0, 1.0, 0.0), material.normal); + } + + diffuse = clamp(diffuse, 0.0, 1.0); + + float specular = czm_getSpecular(lightDirectionEC, toEye, material.normal, material.shininess); + + // Temporary workaround for adding ambient. + vec3 materialDiffuse = material.diffuse * 0.5; + + vec3 ambient = materialDiffuse; + vec3 color = ambient + material.emission; + color += materialDiffuse * diffuse * czm_lightColor; + color += material.specular * specular * czm_lightColor; + + return vec4(color, material.alpha); +} +`;var DL=`/** + * Returns the transpose of the matrix. The input <code>matrix</code> can be + * a <code>mat2</code>, <code>mat3</code>, or <code>mat4</code>. + * + * @name czm_transpose + * @glslFunction + * + * @param {} matrix The matrix to transpose. + * + * @returns {} The transposed matrix. + * + * @example + * // GLSL declarations + * mat2 czm_transpose(mat2 matrix); + * mat3 czm_transpose(mat3 matrix); + * mat4 czm_transpose(mat4 matrix); + * + * // Transpose a 3x3 rotation matrix to find its inverse. + * mat3 eastNorthUpToEye = czm_eastNorthUpToEyeCoordinates( + * positionMC, normalEC); + * mat3 eyeToEastNorthUp = czm_transpose(eastNorthUpToEye); + */ +mat2 czm_transpose(mat2 matrix) +{ + return mat2( + matrix[0][0], matrix[1][0], + matrix[0][1], matrix[1][1]); +} + +mat3 czm_transpose(mat3 matrix) +{ + return mat3( + matrix[0][0], matrix[1][0], matrix[2][0], + matrix[0][1], matrix[1][1], matrix[2][1], + matrix[0][2], matrix[1][2], matrix[2][2]); +} + +mat4 czm_transpose(mat4 matrix) +{ + return mat4( + matrix[0][0], matrix[1][0], matrix[2][0], matrix[3][0], + matrix[0][1], matrix[1][1], matrix[2][1], matrix[3][1], + matrix[0][2], matrix[1][2], matrix[2][2], matrix[3][2], + matrix[0][3], matrix[1][3], matrix[2][3], matrix[3][3]); +} +`;var vL=`vec2 getLookupUv(vec2 dimensions, int i) { + int pixY = i / int(dimensions.x); + int pixX = i - (pixY * int(dimensions.x)); + float pixelWidth = 1.0 / dimensions.x; + float pixelHeight = 1.0 / dimensions.y; + float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel + float v = (float(pixY) + 0.5) * pixelHeight; + return vec2(u, v); +} + +vec4 czm_unpackClippingExtents(highp sampler2D extentsTexture, int index) { + vec2 textureDimensions = vec2(textureSize(extentsTexture, 0)); + return texture(extentsTexture, getLookupUv(textureDimensions, index)); +}`;var PL=`/** + * Unpacks a vec4 depth value to a float in [0, 1) range. + * + * @name czm_unpackDepth + * @glslFunction + * + * @param {vec4} packedDepth The packed depth. + * + * @returns {float} The floating-point depth in [0, 1) range. + */ +float czm_unpackDepth(vec4 packedDepth) +{ + // See Aras Pranckevi\u010Dius' post Encoding Floats to RGBA + // http://aras-p.info/blog/2009/07/30/encoding-floats-to-rgba-the-final/ + return dot(packedDepth, vec4(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 16581375.0)); +} +`;var RL=`/** + * Unpack an IEEE 754 single-precision float that is packed as a little-endian unsigned normalized vec4. + * + * @name czm_unpackFloat + * @glslFunction + * + * @param {vec4} packedFloat The packed float. + * + * @returns {float} The floating-point depth in arbitrary range. + */ +float czm_unpackFloat(vec4 packedFloat) +{ + // Convert to [0.0, 255.0] and round to integer + packedFloat = floor(packedFloat * 255.0 + 0.5); + float sign = 1.0 - step(128.0, packedFloat[3]) * 2.0; + float exponent = 2.0 * mod(packedFloat[3], 128.0) + step(128.0, packedFloat[2]) - 127.0; + if (exponent == -127.0) + { + return 0.0; + } + float mantissa = mod(packedFloat[2], 128.0) * 65536.0 + packedFloat[1] * 256.0 + packedFloat[0] + float(0x800000); + float result = sign * exp2(exponent - 23.0) * mantissa; + return result; +} +`;var ML=`/** + * Unpack unsigned integers of 1-4 bytes. in WebGL 1, there is no uint type, + * so the return value is an int. + * <p> + * There are also precision limitations in WebGL 1. highp int is still limited + * to 24 bits. Above the value of 2^24 = 16777216, precision loss may occur. + * </p> + * + * @param {float|vec2|vec3|vec4} packed The packed value. For vectors, the components are listed in little-endian order. + * + * @return {int} The unpacked value. + */ + int czm_unpackUint(float packedValue) { + float rounded = czm_round(packedValue * 255.0); + return int(rounded); + } + + int czm_unpackUint(vec2 packedValue) { + vec2 rounded = czm_round(packedValue * 255.0); + return int(dot(rounded, vec2(1.0, 256.0))); + } + + int czm_unpackUint(vec3 packedValue) { + vec3 rounded = czm_round(packedValue * 255.0); + return int(dot(rounded, vec3(1.0, 256.0, 65536.0))); + } + + int czm_unpackUint(vec4 packedValue) { + vec4 rounded = czm_round(packedValue * 255.0); + return int(dot(rounded, vec4(1.0, 256.0, 65536.0, 16777216.0))); + } +`;var NL=`/** + * Transform metadata values following the EXT_structural_metadata spec + * by multiplying by scale and adding the offset. Operations are always + * performed component-wise, even for matrices. + * + * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} offset The offset to add + * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} scale The scale factor to multiply + * @param {float|vec2|vec3|vec4|mat2|mat3|mat4} value The original value. + * + * @return {float|vec2|vec3|vec4|mat2|mat3|mat4} The transformed value of the same scalar/vector/matrix type as the input. + */ +float czm_valueTransform(float offset, float scale, float value) { + return scale * value + offset; +} + +vec2 czm_valueTransform(vec2 offset, vec2 scale, vec2 value) { + return scale * value + offset; +} + +vec3 czm_valueTransform(vec3 offset, vec3 scale, vec3 value) { + return scale * value + offset; +} + +vec4 czm_valueTransform(vec4 offset, vec4 scale, vec4 value) { + return scale * value + offset; +} + +mat2 czm_valueTransform(mat2 offset, mat2 scale, mat2 value) { + return matrixCompMult(scale, value) + offset; +} + +mat3 czm_valueTransform(mat3 offset, mat3 scale, mat3 value) { + return matrixCompMult(scale, value) + offset; +} + +mat4 czm_valueTransform(mat4 offset, mat4 scale, mat4 value) { + return matrixCompMult(scale, value) + offset; +} +`;var LL=`#ifdef LOG_DEPTH +// 1.0 at the near plane, increasing linearly from there. +out float v_depthFromNearPlusOne; +#ifdef SHADOW_MAP +out vec3 v_logPositionEC; +#endif +#endif + +vec4 czm_updatePositionDepth(vec4 coords) { +#if defined(LOG_DEPTH) + +#ifdef SHADOW_MAP + vec3 logPositionEC = (czm_inverseProjection * coords).xyz; + v_logPositionEC = logPositionEC; +#endif + + // With the very high far/near ratios used with the logarithmic depth + // buffer, floating point rounding errors can cause linear depth values + // to end up on the wrong side of the far plane, even for vertices that + // are really nowhere near it. Since we always write a correct logarithmic + // depth value in the fragment shader anyway, we just need to make sure + // such errors don't cause the primitive to be clipped entirely before + // we even get to the fragment shader. + coords.z = clamp(coords.z / coords.w, -1.0, 1.0) * coords.w; +#endif + + return coords; +} + +/** + * Writes the logarithmic depth to gl_Position using the already computed gl_Position. + * + * @name czm_vertexLogDepth + * @glslFunction + */ +void czm_vertexLogDepth() +{ +#ifdef LOG_DEPTH + v_depthFromNearPlusOne = (gl_Position.w - czm_currentFrustum.x) + 1.0; + gl_Position = czm_updatePositionDepth(gl_Position); +#endif +} + +/** + * Writes the logarithmic depth to gl_Position using the provided clip coordinates. + * <p> + * An example use case for this function would be moving the vertex in window coordinates + * before converting back to clip coordinates. Use the original vertex clip coordinates. + * </p> + * @name czm_vertexLogDepth + * @glslFunction + * + * @param {vec4} clipCoords The vertex in clip coordinates. + * + * @example + * czm_vertexLogDepth(czm_projection * vec4(positionEyeCoordinates, 1.0)); + */ +void czm_vertexLogDepth(vec4 clipCoords) +{ +#ifdef LOG_DEPTH + v_depthFromNearPlusOne = (clipCoords.w - czm_currentFrustum.x) + 1.0; + czm_updatePositionDepth(clipCoords); +#endif +} +`;var OL=`vec4 czm_screenToEyeCoordinates(vec4 screenCoordinate) +{ + // Reconstruct NDC coordinates + float x = 2.0 * screenCoordinate.x - 1.0; + float y = 2.0 * screenCoordinate.y - 1.0; + float z = (screenCoordinate.z - czm_viewportTransformation[3][2]) / czm_viewportTransformation[2][2]; + vec4 q = vec4(x, y, z, 1.0); + + // Reverse the perspective division to obtain clip coordinates. + q /= screenCoordinate.w; + + // Reverse the projection transformation to obtain eye coordinates. + if (!(czm_inverseProjection == mat4(0.0))) // IE and Edge sometimes do something weird with != between mat4s + { + q = czm_inverseProjection * q; + } + else + { + float top = czm_frustumPlanes.x; + float bottom = czm_frustumPlanes.y; + float left = czm_frustumPlanes.z; + float right = czm_frustumPlanes.w; + + float near = czm_currentFrustum.x; + float far = czm_currentFrustum.y; + + q.x = (q.x * (right - left) + left + right) * 0.5; + q.y = (q.y * (top - bottom) + bottom + top) * 0.5; + q.z = (q.z * (near - far) - near - far) * 0.5; + q.w = 1.0; + } + + return q; +} + +/** + * Transforms a position from window to eye coordinates. + * The transform from window to normalized device coordinates is done using components + * of (@link czm_viewport} and {@link czm_viewportTransformation} instead of calculating + * the inverse of <code>czm_viewportTransformation</code>. The transformation from + * normalized device coordinates to clip coordinates is done using <code>fragmentCoordinate.w</code>, + * which is expected to be the scalar used in the perspective divide. The transformation + * from clip to eye coordinates is done using {@link czm_inverseProjection}. + * + * @name czm_windowToEyeCoordinates + * @glslFunction + * + * @param {vec4} fragmentCoordinate The position in window coordinates to transform. + * + * @returns {vec4} The transformed position in eye coordinates. + * + * @see czm_modelToWindowCoordinates + * @see czm_eyeToWindowCoordinates + * @see czm_inverseProjection + * @see czm_viewport + * @see czm_viewportTransformation + * + * @example + * vec4 positionEC = czm_windowToEyeCoordinates(gl_FragCoord); + */ +vec4 czm_windowToEyeCoordinates(vec4 fragmentCoordinate) +{ + vec2 screenCoordXY = (fragmentCoordinate.xy - czm_viewport.xy) / czm_viewport.zw; + return czm_screenToEyeCoordinates(vec4(screenCoordXY, fragmentCoordinate.zw)); +} + +vec4 czm_screenToEyeCoordinates(vec2 screenCoordinateXY, float depthOrLogDepth) +{ + // See reverseLogDepth.glsl. This is separate to re-use the pow. +#if defined(LOG_DEPTH) || defined(LOG_DEPTH_READ_ONLY) + float near = czm_currentFrustum.x; + float far = czm_currentFrustum.y; + float log2Depth = depthOrLogDepth * czm_log2FarDepthFromNearPlusOne; + float depthFromNear = exp2(log2Depth) - 1.0; + float depthFromCamera = depthFromNear + near; + vec4 screenCoord = vec4(screenCoordinateXY, far * (1.0 - near / depthFromCamera) / (far - near), 1.0); + vec4 eyeCoordinate = czm_screenToEyeCoordinates(screenCoord); + eyeCoordinate.w = 1.0 / depthFromCamera; // Better precision +#else + vec4 screenCoord = vec4(screenCoordinateXY, depthOrLogDepth, 1.0); + vec4 eyeCoordinate = czm_screenToEyeCoordinates(screenCoord); +#endif + return eyeCoordinate; +} + +/** + * Transforms a position given as window x/y and a depth or a log depth from window to eye coordinates. + * This function produces more accurate results for window positions with log depth than + * conventionally unpacking the log depth using czm_reverseLogDepth and using the standard version + * of czm_windowToEyeCoordinates. + * + * @name czm_windowToEyeCoordinates + * @glslFunction + * + * @param {vec2} fragmentCoordinateXY The XY position in window coordinates to transform. + * @param {float} depthOrLogDepth A depth or log depth for the fragment. + * + * @see czm_modelToWindowCoordinates + * @see czm_eyeToWindowCoordinates + * @see czm_inverseProjection + * @see czm_viewport + * @see czm_viewportTransformation + * + * @returns {vec4} The transformed position in eye coordinates. + */ +vec4 czm_windowToEyeCoordinates(vec2 fragmentCoordinateXY, float depthOrLogDepth) +{ + vec2 screenCoordXY = (fragmentCoordinateXY.xy - czm_viewport.xy) / czm_viewport.zw; + return czm_screenToEyeCoordinates(screenCoordXY, depthOrLogDepth); +} +`;var FL=`// emulated noperspective +#if !defined(LOG_DEPTH) +in float v_WindowZ; +#endif + +/** + * Emulates GL_DEPTH_CLAMP. Clamps a fragment to the near and far plane + * by writing the fragment's depth. See czm_depthClamp for more details. + * + * @name czm_writeDepthClamp + * @glslFunction + * + * @example + * out_FragColor = color; + * czm_writeDepthClamp(); + * + * @see czm_depthClamp + */ +void czm_writeDepthClamp() +{ +#if (!defined(LOG_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth))) + gl_FragDepth = clamp(v_WindowZ * gl_FragCoord.w, 0.0, 1.0); +#endif +} +`;var QL=`#ifdef LOG_DEPTH +in float v_depthFromNearPlusOne; + +#ifdef POLYGON_OFFSET +uniform vec2 u_polygonOffset; +#endif + +#endif + +/** + * Writes the fragment depth to the logarithmic depth buffer. + * <p> + * Use this when the vertex shader does not call {@link czm_vertexLogDepth}, for example, when + * ray-casting geometry using a full screen quad. + * </p> + * @name czm_writeLogDepth + * @glslFunction + * + * @param {float} depth The depth coordinate, where 1.0 is on the near plane and + * depth increases in eye-space units from there + * + * @example + * czm_writeLogDepth((czm_projection * v_positionEyeCoordinates).w + 1.0); + */ +void czm_writeLogDepth(float depth) +{ +#if (defined(LOG_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth))) + // Discard the vertex if it's not between the near and far planes. + // We allow a bit of epsilon on the near plane comparison because a 1.0 + // from the vertex shader (indicating the vertex should be _on_ the near + // plane) will not necessarily come here as exactly 1.0. + if (depth <= 0.9999999 || depth > czm_farDepthFromNearPlusOne) { + discard; + } + +#ifdef POLYGON_OFFSET + // Polygon offset: m * factor + r * units + float factor = u_polygonOffset[0]; + float units = u_polygonOffset[1]; + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + // This factor doesn't work in IE 10 + if (factor != 0.0) { + // m = sqrt(dZdX^2 + dZdY^2); + float x = dFdx(depth); + float y = dFdy(depth); + float m = sqrt(x * x + y * y); + + // Apply the factor before computing the log depth. + depth += m * factor; + } +#endif + +#endif + + gl_FragDepth = log2(depth) * czm_oneOverLog2FarDepthFromNearPlusOne; + +#ifdef POLYGON_OFFSET + // Apply the units after the log depth. + gl_FragDepth += czm_epsilon7 * units; +#endif + +#endif +} + +/** + * Writes the fragment depth to the logarithmic depth buffer. + * <p> + * Use this when the vertex shader calls {@link czm_vertexLogDepth}. + * </p> + * + * @name czm_writeLogDepth + * @glslFunction + */ +void czm_writeLogDepth() { +#ifdef LOG_DEPTH + czm_writeLogDepth(v_depthFromNearPlusOne); +#endif +} +`;var kL=`/** + * Transforms a value for non-perspective interpolation by multiplying + * it by w, the value used in the perspective divide. This function is + * intended to be called in a vertex shader to compute the value of a + * \`varying\` that should not be subject to perspective interpolation. + * For example, screen-space texture coordinates. The fragment shader + * must call {@link czm_readNonPerspective} to retrieve the final + * non-perspective value. + * + * @name czm_writeNonPerspective + * @glslFunction + * + * @param {float|vec2|vec3|vec4} value The value to be interpolated without accounting for perspective. + * @param {float} w The perspective divide value. Usually this is the computed \`gl_Position.w\`. + * @returns {float|vec2|vec3|vec4} The transformed value, intended to be stored in a \`varying\` and read in the + * fragment shader with {@link czm_readNonPerspective}. + */ +float czm_writeNonPerspective(float value, float w) { + return value * w; +} + +vec2 czm_writeNonPerspective(vec2 value, float w) { + return value * w; +} + +vec3 czm_writeNonPerspective(vec3 value, float w) { + return value * w; +} + +vec4 czm_writeNonPerspective(vec4 value, float w) { + return value * w; +} +`;var _I={czm_degreesPerRadian:f1,czm_depthRange:d1,czm_epsilon1:h1,czm_epsilon2:m1,czm_epsilon3:A1,czm_epsilon4:p1,czm_epsilon5:g1,czm_epsilon6:_1,czm_epsilon7:y1,czm_infinity:C1,czm_oneOverPi:E1,czm_oneOverTwoPi:I1,czm_passCesium3DTile:x1,czm_passCesium3DTileClassification:b1,czm_passCesium3DTileClassificationIgnoreShow:T1,czm_passClassification:S1,czm_passCompute:w1,czm_passEnvironment:B1,czm_passGaussianSplats:D1,czm_passGlobe:v1,czm_passOpaque:P1,czm_passOverlay:R1,czm_passTerrainClassification:M1,czm_passTranslucent:N1,czm_passVoxels:L1,czm_pi:O1,czm_piOverFour:F1,czm_piOverSix:Q1,czm_piOverThree:k1,czm_piOverTwo:U1,czm_radiansPerDegree:G1,czm_sceneMode2D:z1,czm_sceneMode3D:V1,czm_sceneModeColumbusView:H1,czm_sceneModeMorphing:W1,czm_solarRadius:j1,czm_threePiOver2:Y1,czm_twoPi:q1,czm_webMercatorMaxLatitude:K1,czm_depthRangeStruct:X1,czm_material:J1,czm_materialInput:Z1,czm_modelMaterial:$1,czm_modelVertexOutput:eN,czm_ray:tN,czm_raySegment:nN,czm_shadowParameters:iN,czm_HSBToRGB:oN,czm_HSLToRGB:rN,czm_RGBToHSB:sN,czm_RGBToHSL:aN,czm_RGBToXYZ:cN,czm_XYZToRGB:lN,czm_acesTonemapping:uN,czm_alphaWeight:fN,czm_antialias:dN,czm_applyHSBShift:hN,czm_approximateSphericalCoordinates:mN,czm_approximateTanh:AN,czm_backFacing:pN,czm_branchFreeTernary:gN,czm_cascadeColor:_N,czm_cascadeDistance:yN,czm_cascadeMatrix:CN,czm_cascadeWeights:EN,czm_clipPolygons:IN,czm_columbusViewMorph:xN,czm_computeAtmosphereColor:bN,czm_computeGroundAtmosphereScattering:TN,czm_computePosition:SN,czm_computeScattering:wN,czm_cosineAndSine:BN,czm_decompressTextureCoordinates:DN,czm_depthClamp:vN,czm_eastNorthUpToEyeCoordinates:PN,czm_ellipsoidContainsPoint:RN,czm_ellipsoidTextureCoordinates:MN,czm_equalsEpsilon:NN,czm_eyeOffset:LN,czm_eyeToWindowCoordinates:ON,czm_fastApproximateAtan:FN,czm_fog:QN,czm_gammaCorrect:kN,czm_geodeticSurfaceNormal:UN,czm_getDefaultMaterial:GN,czm_getDynamicAtmosphereLightDirection:zN,czm_getLambertDiffuse:VN,czm_getSpecular:HN,czm_getWaterNoise:WN,czm_hue:jN,czm_inverseGamma:YN,czm_isEmpty:qN,czm_isFull:KN,czm_latitudeToWebMercatorFraction:XN,czm_lineDistance:JN,czm_linearToSrgb:ZN,czm_luminance:$N,czm_maximumComponent:eL,czm_metersPerPixel:tL,czm_modelToWindowCoordinates:nL,czm_multiplyWithColorBalance:iL,czm_nearFarScalar:oL,czm_octDecode:rL,czm_packDepth:sL,czm_pbrLighting:aL,czm_pbrNeutralTonemapping:cL,czm_phong:lL,czm_planeDistance:uL,czm_pointAlongRay:fL,czm_rayEllipsoidIntersectionInterval:dL,czm_raySphereIntersectionInterval:hL,czm_readDepth:mL,czm_readNonPerspective:AL,czm_reverseLogDepth:pL,czm_round:gL,czm_saturation:_L,czm_shadowDepthCompare:yL,czm_shadowVisibility:CL,czm_signNotZero:EL,czm_sphericalHarmonics:IL,czm_srgbToLinear:xL,czm_tangentToEyeSpaceMatrix:bL,czm_textureCube:TL,czm_transformPlane:SL,czm_translateRelativeToEye:wL,czm_translucentPhong:BL,czm_transpose:DL,czm_unpackClippingExtents:vL,czm_unpackDepth:PL,czm_unpackFloat:RL,czm_unpackUint:ML,czm_valueTransform:NL,czm_vertexLogDepth:LL,czm_windowToEyeCoordinates:OL,czm_writeDepthClamp:FL,czm_writeLogDepth:QL,czm_writeNonPerspective:kL};function HMe(e,t){let n=e;return n=n.replaceAll("version 300 es",""),n=n.replaceAll(/(texture\()/g,"texture2D("),t?(n=n.replaceAll(/\n\s*(in)\s+(vec\d|mat\d|float)/g,` +varying $2`),/out_FragData_(\d+)/.test(n)&&(n=`#extension GL_EXT_draw_buffers : enable +${n}`,n=n.replaceAll(/layout\s+\(location\s*=\s*\d+\)\s*out\s+vec4\s+out_FragData_\d+;/g,""),n=n.replaceAll(/out_FragData_(\d+)/g,"gl_FragData[$1]")),n=n.replaceAll(/layout\s+\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g,""),n=n.replaceAll(/out_FragColor/g,"gl_FragColor"),n=n.replaceAll(/out_FragColor\[(\d+)\]/g,"gl_FragColor[$1]"),/gl_FragDepth/.test(n)&&(n=`#extension GL_EXT_frag_depth : enable +${n}`,n=n.replaceAll(/gl_FragDepth/g,"gl_FragDepthEXT")),n=`#ifdef GL_EXT_shader_texture_lod +#extension GL_EXT_shader_texture_lod : enable +#endif +${n}`,n=`#ifdef GL_OES_standard_derivatives +#extension GL_OES_standard_derivatives : enable +#endif +${n}`):(n=n.replaceAll(/(in)\s+(vec\d|mat\d|float)/g,"attribute $2"),n=n.replaceAll(/(out)\s+(vec\d|mat\d|float)\s+([\w]+);/g,"varying $2 $3;")),n=`#version 100 +${n}`,n}var UL=HMe;function vne(e){return e=e.replace(/\/\/.*/g,""),e.replace(/\/\*\*[\s\S]*?\*\//gm,function(t){let n=t.match(/\n/gm).length,i="";for(let o=0;o<n;++o)i+=` +`;return i})}function Pne(e,t,n){let i;for(let o=0;o<n.length;++o)n[o].name===e&&(i=n[o]);return l(i)||(t=vne(t),i={name:e,glslSource:t,dependsOn:[],requiredBy:[],evaluated:!1},n.push(i)),i}function Rne(e,t){if(e.evaluated)return;e.evaluated=!0;let n=e.glslSource.match(/\bczm_[a-zA-Z0-9_]*/g);l(n)&&n!==null&&(n=n.filter(function(i,o){return n.indexOf(i)===o}),n.forEach(function(i){if(i!==e.name&&oa._czmBuiltinsAndUniforms.hasOwnProperty(i)){let o=Pne(i,oa._czmBuiltinsAndUniforms[i],t);e.dependsOn.push(o),o.requiredBy.push(e),Rne(o,t)}}))}function WMe(e){let t=[],n=[];for(;e.length>0;){let o=e.pop();n.push(o),o.requiredBy.length===0&&t.push(o)}for(;t.length>0;){let o=t.shift();e.push(o);for(let r=0;r<o.dependsOn.length;++r){let s=o.dependsOn[r],a=s.requiredBy.indexOf(o);s.requiredBy.splice(a,1),s.requiredBy.length===0&&t.push(s)}}let i=[];for(let o=0;o<n.length;++o)n[o].requiredBy.length!==0&&i.push(n[o])}function jMe(e){let t=[],n=Pne("main",e,t);Rne(n,t),WMe(t);let i="";for(let o=t.length-1;o>=0;--o)i=`${i+t[o].glslSource} +`;return i.replace(n.glslSource,"")}function Mne(e,t,n){let i,o,r="",s=e.sources;if(l(s))for(i=0,o=s.length;i<o;++i)r+=` +#line 0 +${s[i]}`;r=vne(r);let a;r=r.replace(/#version\s+(.*?)\n/gm,function(_,y){return a=y,` +`});let c=[];r=r.replace(/#extension.*\n/gm,function(_){return c.push(_),` +`}),r=r.replace(/precision\s(lowp|mediump|highp)\s(float|int);/,"");let u=e.pickColorQualifier;l(u)&&(r=oa.createPickFragmentShaderSource(r,u));let f="",h=c.length;for(i=0;i<h;i++)f+=c[i];t&&(f+=`#ifdef GL_FRAGMENT_PRECISION_HIGH + precision highp float; + precision highp int; +#else + precision mediump float; + precision mediump int; + #define highp mediump +#endif + +`);let A=e.defines;if(l(A))for(i=0,o=A.length;i<o;++i){let _=A[i];_.length!==0&&(f+=`#define ${_} +`)}n.textureFloatLinear&&(f+=`#define OES_texture_float_linear + +`),n.floatingPointTexture&&(f+=`#define OES_texture_float + +`);let g="";e.includeBuiltIns&&(g=jMe(r)),f+=` +#line 0 +`;let m=g+r;return n.webgl2&&t&&!/layout\s*\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g.test(m)&&!/czm_out_FragColor/g.test(m)&&/out_FragColor/g.test(m)&&(f+=`layout(location = 0) out vec4 out_FragColor; + +`),f+=g,f+=r,n.webgl2?f=`#version 300 es +${f}`:f=UL(f,t),f}function oa(e){e=e??V.EMPTY_OBJECT;let t=e.pickColorQualifier;this.defines=l(e.defines)?e.defines.slice(0):[],this.sources=l(e.sources)?e.sources.slice(0):[],this.pickColorQualifier=t,this.includeBuiltIns=e.includeBuiltIns??!0}oa.prototype.clone=function(){return new oa({sources:this.sources,defines:this.defines,pickColorQualifier:this.pickColorQualifier,includeBuiltIns:this.includeBuiltIns})};oa.replaceMain=function(e,t){return t=`void ${t}()`,e.replace(/void\s+main\s*\(\s*(?:void)?\s*\)/g,t)};oa.prototype.getCacheKey=function(){let t=this.defines.slice().sort().join(","),n=this.pickColorQualifier,i=this.includeBuiltIns,o=this.sources.join(` +`);return`${t}:${n}:${i}:${o}`};oa.prototype.createCombinedVertexShader=function(e){return Mne(this,!1,e)};oa.prototype.createCombinedFragmentShader=function(e){return Mne(this,!0,e)};oa._czmBuiltinsAndUniforms={};for(let e in _I)_I.hasOwnProperty(e)&&(oa._czmBuiltinsAndUniforms[e]=_I[e]);for(let e in bg)if(bg.hasOwnProperty(e)){let t=bg[e];typeof t.getDeclaration=="function"&&(oa._czmBuiltinsAndUniforms[e]=t.getDeclaration(e))}oa.createPickVertexShaderSource=function(e){return`${oa.replaceMain(e,"czm_old_main")} +in vec4 pickColor; +out vec4 czm_pickColor; +void main() +{ + czm_old_main(); + czm_pickColor = pickColor; +}`};oa.createPickFragmentShaderSource=function(e,t){let n=oa.replaceMain(e,"czm_old_main"),i=`${t} vec4 czm_pickColor; +void main() +{ + czm_old_main(); + if (out_FragColor.a == 0.0) { + discard; + } + out_FragColor = czm_pickColor; +}`;return`${n} +${i}`};function YMe(e,t){let n=e.defines,i=n.length;for(let o=0;o<i;++o)if(n[o]===t)return!0;return!1}function Nne(e,t){let n=e.sources,i=n.length;for(let o=0;o<i;++o)if(n[o].indexOf(t)!==-1)return!0;return!1}function Lne(e,t){let n=t.length;for(let i=0;i<n;++i){let o=t[i];if(Nne(e,o))return o}}var qMe=["v_normalEC","v_normal"];oa.findNormalVarying=function(e){return Nne(e,"#ifdef HAS_NORMALS")?YMe(e,"HAS_NORMALS")?"v_normalEC":void 0:Lne(e,qMe)};var KMe=["v_positionEC"];oa.findPositionVarying=function(e){return Lne(e,KMe)};var We=oa;var GL=`in vec3 position3DHigh; +in vec3 position3DLow; +in float batchId; + +#ifdef EXTRUDED_GEOMETRY +in vec3 extrudeDirection; + +uniform float u_globeMinimumAltitude; +#endif // EXTRUDED_GEOMETRY + +#ifdef PER_INSTANCE_COLOR +out vec4 v_color; +#endif // PER_INSTANCE_COLOR + +#ifdef TEXTURE_COORDINATES +#ifdef SPHERICAL +out vec4 v_sphericalExtents; +#else // SPHERICAL +out vec2 v_inversePlaneExtents; +out vec4 v_westPlane; +out vec4 v_southPlane; +#endif // SPHERICAL +out vec3 v_uvMinAndSphericalLongitudeRotation; +out vec3 v_uMaxAndInverseDistance; +out vec3 v_vMaxAndInverseDistance; +#endif // TEXTURE_COORDINATES + +void main() +{ + vec4 position = czm_computePosition(); + +#ifdef EXTRUDED_GEOMETRY + float delta = min(u_globeMinimumAltitude, czm_geometricToleranceOverMeter * length(position.xyz)); + delta *= czm_sceneMode == czm_sceneMode3D ? 1.0 : 0.0; + + //extrudeDirection is zero for the top layer + position = position + vec4(extrudeDirection * delta, 0.0); +#endif + +#ifdef TEXTURE_COORDINATES +#ifdef SPHERICAL + v_sphericalExtents = czm_batchTable_sphericalExtents(batchId); + v_uvMinAndSphericalLongitudeRotation.z = czm_batchTable_longitudeRotation(batchId); +#else // SPHERICAL +#ifdef COLUMBUS_VIEW_2D + vec4 planes2D_high = czm_batchTable_planes2D_HIGH(batchId); + vec4 planes2D_low = czm_batchTable_planes2D_LOW(batchId); + + // If the primitive is split across the IDL (planes2D_high.x > planes2D_high.w): + // - If this vertex is on the east side of the IDL (position3DLow.y > 0.0, comparison with position3DHigh may produce artifacts) + // - existing "east" is on the wrong side of the world, far away (planes2D_high/low.w) + // - so set "east" as beyond the eastmost extent of the projection (idlSplitNewPlaneHiLow) + vec2 idlSplitNewPlaneHiLow = vec2(EAST_MOST_X_HIGH - (WEST_MOST_X_HIGH - planes2D_high.w), EAST_MOST_X_LOW - (WEST_MOST_X_LOW - planes2D_low.w)); + bool idlSplit = planes2D_high.x > planes2D_high.w && position3DLow.y > 0.0; + planes2D_high.w = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.x, planes2D_high.w); + planes2D_low.w = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.y, planes2D_low.w); + + // - else, if this vertex is on the west side of the IDL (position3DLow.y < 0.0) + // - existing "west" is on the wrong side of the world, far away (planes2D_high/low.x) + // - so set "west" as beyond the westmost extent of the projection (idlSplitNewPlaneHiLow) + idlSplit = planes2D_high.x > planes2D_high.w && position3DLow.y < 0.0; + idlSplitNewPlaneHiLow = vec2(WEST_MOST_X_HIGH - (EAST_MOST_X_HIGH - planes2D_high.x), WEST_MOST_X_LOW - (EAST_MOST_X_LOW - planes2D_low.x)); + planes2D_high.x = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.x, planes2D_high.x); + planes2D_low.x = czm_branchFreeTernary(idlSplit, idlSplitNewPlaneHiLow.y, planes2D_low.x); + + vec3 southWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.xy), vec3(0.0, planes2D_low.xy))).xyz; + vec3 northWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.x, planes2D_high.z), vec3(0.0, planes2D_low.x, planes2D_low.z))).xyz; + vec3 southEastCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, planes2D_high.w, planes2D_high.y), vec3(0.0, planes2D_low.w, planes2D_low.y))).xyz; +#else // COLUMBUS_VIEW_2D + // 3D case has smaller "plane extents," so planes encoded as a 64 bit position and 2 vec3s for distances/direction + vec3 southWestCorner = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(czm_batchTable_southWest_HIGH(batchId), czm_batchTable_southWest_LOW(batchId))).xyz; + vec3 northWestCorner = czm_normal * czm_batchTable_northward(batchId) + southWestCorner; + vec3 southEastCorner = czm_normal * czm_batchTable_eastward(batchId) + southWestCorner; +#endif // COLUMBUS_VIEW_2D + + vec3 eastWard = southEastCorner - southWestCorner; + float eastExtent = length(eastWard); + eastWard /= eastExtent; + + vec3 northWard = northWestCorner - southWestCorner; + float northExtent = length(northWard); + northWard /= northExtent; + + v_westPlane = vec4(eastWard, -dot(eastWard, southWestCorner)); + v_southPlane = vec4(northWard, -dot(northWard, southWestCorner)); + v_inversePlaneExtents = vec2(1.0 / eastExtent, 1.0 / northExtent); +#endif // SPHERICAL + vec4 uvMinAndExtents = czm_batchTable_uvMinAndExtents(batchId); + vec4 uMaxVmax = czm_batchTable_uMaxVmax(batchId); + + v_uMaxAndInverseDistance = vec3(uMaxVmax.xy, uvMinAndExtents.z); + v_vMaxAndInverseDistance = vec3(uMaxVmax.zw, uvMinAndExtents.w); + v_uvMinAndSphericalLongitudeRotation.xy = uvMinAndExtents.xy; +#endif // TEXTURE_COORDINATES + +#ifdef PER_INSTANCE_COLOR + v_color = czm_batchTable_color(batchId); +#endif + + gl_Position = czm_depthClamp(czm_modelViewProjectionRelativeToEye * position); +} +`;var IC=`#ifdef VECTOR_TILE +uniform vec4 u_highlightColor; +#endif + +void main(void) +{ +#ifdef VECTOR_TILE + out_FragColor = czm_gammaCorrect(u_highlightColor); +#else + out_FragColor = vec4(1.0); +#endif + czm_writeDepthClamp(); +} +`;var One={TERRAIN:0,CESIUM_3D_TILE:1,BOTH:2};One.NUMBER_OF_CLASSIFICATION_TYPES=3;var Jn=Object.freeze(One);var XMe={NEVER:ee.NEVER,LESS:ee.LESS,EQUAL:ee.EQUAL,LESS_OR_EQUAL:ee.LEQUAL,GREATER:ee.GREATER,NOT_EQUAL:ee.NOTEQUAL,GREATER_OR_EQUAL:ee.GEQUAL,ALWAYS:ee.ALWAYS},Ja=Object.freeze(XMe);function JMe(e,t){let n=[],i=e.length,o=0;for(;o<i;){let r=Math.ceil((i-o)/t--);n.push(e.slice(o,o+r)),o+=r}return n}var zL=JMe;function UA(e,t,n){if(this._attributes=t,this._numberOfInstances=n,t.length===0)return;let i=ZMe(t),o=e.floatingPointTexture,r=i===He.FLOAT&&!o,s=$Me(t,r),a=e1e(s,t,r),c=Math.floor(qt.maximumTextureSize/a),u=Math.min(n,c),f=a*u,h=Math.ceil(n/u),A=1/f,g=A*.5,m=1/h,_=m*.5;this._textureDimensions=new k(f,h),this._textureStep=new se(A,g,m,_),this._pixelDatatype=r?He.UNSIGNED_BYTE:i,this._packFloats=r,this._offsets=s,this._stride=a,this._texture=void 0;let y=4*f*h;this._batchValues=i===He.FLOAT&&!r?new Float32Array(y):new Uint8Array(y),this._batchValuesDirty=!1}Object.defineProperties(UA.prototype,{attributes:{get:function(){return this._attributes}},numberOfInstances:{get:function(){return this._numberOfInstances}}});function ZMe(e){let t=!1,n=e.length;for(let i=0;i<n;++i)if(e[i].componentDatatype!==q.UNSIGNED_BYTE){t=!0;break}return t?He.FLOAT:He.UNSIGNED_BYTE}function Qne(e,t){let n=e[t].componentsPerAttribute;return n===2?k:n===3?d:n===4?se:Number}function $Me(e,t){let n=new Array(e.length),i=0,o=e.length;for(let r=0;r<o;++r){let a=e[r].componentDatatype;n[r]=i,a!==q.UNSIGNED_BYTE&&t?i+=4:++i}return n}function e1e(e,t,n){let i=e.length,o=e[i-1];return t[i-1].componentDatatype!==q.UNSIGNED_BYTE&&n?o+4:o+1}var cw=new se;function t1e(e,t,n){let i=se.unpack(e,t,cw),o=se.unpackFloat(i);i=se.unpack(e,t+4,cw);let r=se.unpackFloat(i);i=se.unpack(e,t+8,cw);let s=se.unpackFloat(i);i=se.unpack(e,t+12,cw);let a=se.unpackFloat(i);return se.fromElements(o,r,s,a,n)}function n1e(e,t,n){let i=se.packFloat(e.x,cw);se.pack(i,t,n),i=se.packFloat(e.y,i),se.pack(i,t,n+4),i=se.packFloat(e.z,i),se.pack(i,t,n+8),i=se.packFloat(e.w,i),se.pack(i,t,n+12)}var Fne=new se;UA.prototype.getBatchedAttribute=function(e,t,n){let i=this._attributes,o=this._offsets[t],s=4*this._stride*e+4*o,a;this._packFloats&&i[t].componentDatatype!==He.UNSIGNED_BYTE?a=t1e(this._batchValues,s,Fne):a=se.unpack(this._batchValues,s,Fne);let c=Qne(i,t);return l(c.fromCartesian4)?c.fromCartesian4(a,n):l(c.clone)?c.clone(a,n):a.x};var i1e=[void 0,void 0,new k,new d,new se],o1e=new se;UA.prototype.setBatchedAttribute=function(e,t,n){let i=this._attributes,o=i1e[i[t].componentsPerAttribute],r=this.getBatchedAttribute(e,t,o),s=Qne(this._attributes,t);if(l(s.equals)?s.equals(r,n):r===n)return;let c=o1e;c.x=l(n.x)?n.x:n,c.y=l(n.y)?n.y:0,c.z=l(n.z)?n.z:0,c.w=l(n.w)?n.w:0;let u=this._offsets[t],h=4*this._stride*e+4*u;this._packFloats&&i[t].componentDatatype!==He.UNSIGNED_BYTE?n1e(c,this._batchValues,h):se.pack(c,this._batchValues,h),this._batchValuesDirty=!0};function r1e(e,t){let n=e._textureDimensions;e._texture=new Nt({context:t,pixelFormat:et.RGBA,pixelDatatype:e._pixelDatatype,width:n.x,height:n.y,sampler:on.NEAREST,flipY:!1})}function s1e(e){let t=e._textureDimensions;e._texture.copyFrom({source:{width:t.x,height:t.y,arrayBufferView:e._batchValues}})}UA.prototype.update=function(e){l(this._texture)&&!this._batchValuesDirty||this._attributes.length===0||(this._batchValuesDirty=!1,l(this._texture)||r1e(this,e.context),s1e(this))};UA.prototype.getUniformMapCallback=function(){let e=this;return function(t){return e._attributes.length===0?t:wt(t,{batchTexture:function(){return e._texture},batchTextureDimensions:function(){return e._textureDimensions},batchTextureStep:function(){return e._textureStep}})}};function a1e(e){let t=e._stride;return e._textureDimensions.y===1?`uniform vec4 batchTextureStep; +vec2 computeSt(float batchId) +{ + float stepX = batchTextureStep.x; + float centerX = batchTextureStep.y; + float numberOfAttributes = float(${t}); + return vec2(centerX + (batchId * numberOfAttributes * stepX), 0.5); +} +`:`uniform vec4 batchTextureStep; +uniform vec2 batchTextureDimensions; +vec2 computeSt(float batchId) +{ + float stepX = batchTextureStep.x; + float centerX = batchTextureStep.y; + float stepY = batchTextureStep.z; + float centerY = batchTextureStep.w; + float numberOfAttributes = float(${t}); + float xId = mod(batchId * numberOfAttributes, batchTextureDimensions.x); + float yId = floor(batchId * numberOfAttributes / batchTextureDimensions.x); + return vec2(centerX + (xId * stepX), centerY + (yId * stepY)); +} +`}function c1e(e){return e===1?"float":`vec${e}`}function l1e(e){return e===1?".x":e===2?".xy":e===3?".xyz":""}function u1e(e,t){let i=e._attributes[t],o=i.componentsPerAttribute,r=i.functionName,s=c1e(o),a=l1e(o),c=e._offsets[t],u=`${s} ${r}(float batchId) +{ + vec2 st = computeSt(batchId); + st.x += batchTextureStep.x * float(${c}); +`;return e._packFloats&&i.componentDatatype!==He.UNSIGNED_BYTE?u+=`vec4 textureValue; +textureValue.x = czm_unpackFloat(texture(batchTexture, st)); +textureValue.y = czm_unpackFloat(texture(batchTexture, st + vec2(batchTextureStep.x, 0.0))); +textureValue.z = czm_unpackFloat(texture(batchTexture, st + vec2(batchTextureStep.x * 2.0, 0.0))); +textureValue.w = czm_unpackFloat(texture(batchTexture, st + vec2(batchTextureStep.x * 3.0, 0.0))); +`:u+=` vec4 textureValue = texture(batchTexture, st); +`,u+=` ${s} value = textureValue${a}; +`,e._pixelDatatype===He.UNSIGNED_BYTE&&i.componentDatatype===q.UNSIGNED_BYTE&&!i.normalize?u+=`value *= 255.0; +`:e._pixelDatatype===He.FLOAT&&i.componentDatatype===q.UNSIGNED_BYTE&&i.normalize&&(u+=`value /= 255.0; +`),u+=` return value; +} +`,u}UA.prototype.getVertexShaderCallback=function(){let e=this._attributes;if(e.length===0)return function(i){return i};let t=`uniform highp sampler2D batchTexture; +`;t+=`${a1e(this)} +`;let n=e.length;for(let i=0;i<n;++i)t+=u1e(this,i);return function(i){let o=i.indexOf("void main"),r=i.substring(0,o),s=i.substring(o);return`${r} +${t} +${s}`}};UA.prototype.isDestroyed=function(){return!1};UA.prototype.destroy=function(){return this._texture=this._texture&&this._texture.destroy(),ue(this)};var yI=UA;function Ml(e){this._ellipsoid=e??te.WGS84,this._semimajorAxis=this._ellipsoid.maximumRadius,this._oneOverSemimajorAxis=1/this._semimajorAxis}Object.defineProperties(Ml.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});Ml.mercatorAngleToGeodeticLatitude=function(e){return D.PI_OVER_TWO-2*Math.atan(Math.exp(-e))};Ml.geodeticLatitudeToMercatorAngle=function(e){e>Ml.MaximumLatitude?e=Ml.MaximumLatitude:e<-Ml.MaximumLatitude&&(e=-Ml.MaximumLatitude);let t=Math.sin(e);return .5*Math.log((1+t)/(1-t))};Ml.MaximumLatitude=Ml.mercatorAngleToGeodeticLatitude(Math.PI);Ml.prototype.project=function(e,t){let n=this._semimajorAxis,i=e.longitude*n,o=Ml.geodeticLatitudeToMercatorAngle(e.latitude)*n,r=e.height;return l(t)?(t.x=i,t.y=o,t.z=r,t):new d(i,o,r)};Ml.prototype.unproject=function(e,t){let n=this._oneOverSemimajorAxis,i=e.x*n,o=Ml.mercatorAngleToGeodeticLatitude(e.y*n),r=e.z;return l(t)?(t.longitude=i,t.latitude=o,t.height=r,t):new Ae(i,o,r)};var Yi=Ml;function f1e(e,t,n){let i=!n,o=e.length,r;if(!i&&o>1){let s=e[0].modelMatrix;for(r=1;r<o;++r)if(!R.equals(s,e[r].modelMatrix)){i=!0;break}}if(i)for(r=0;r<o;++r)l(e[r].geometry)&&jn.transformToWorldCoordinates(e[r]);else R.multiplyTransformation(t,e[0].modelMatrix,t)}function c6(e,t){let n=e.attributes,i=n.position,o=i.values.length/i.componentsPerAttribute;n.batchId=new De({componentDatatype:q.FLOAT,componentsPerAttribute:1,values:new Float32Array(o)});let r=n.batchId.values;for(let s=0;s<o;++s)r[s]=t}function d1e(e){let t=e.length;for(let n=0;n<t;++n){let i=e[n];l(i.geometry)?c6(i.geometry,n):l(i.westHemisphereGeometry)&&l(i.eastHemisphereGeometry)&&(c6(i.westHemisphereGeometry,n),c6(i.eastHemisphereGeometry,n))}}function h1e(e){let t=e.instances,n=e.projection,i=e.elementIndexUintSupported,o=e.scene3DOnly,r=e.vertexCacheOptimize,s=e.compressVertices,a=e.modelMatrix,c,u,f,h=t.length;for(c=0;c<h;++c)if(l(t[c].geometry)){f=t[c].geometry.primitiveType;break}if(f1e(t,a,o),!o)for(c=0;c<h;++c)l(t[c].geometry)&&jn.splitLongitude(t[c]);if(d1e(t),r)for(c=0;c<h;++c){let g=t[c];l(g.geometry)?(jn.reorderForPostVertexCache(g.geometry),jn.reorderForPreVertexCache(g.geometry)):l(g.westHemisphereGeometry)&&l(g.eastHemisphereGeometry)&&(jn.reorderForPostVertexCache(g.westHemisphereGeometry),jn.reorderForPreVertexCache(g.westHemisphereGeometry),jn.reorderForPostVertexCache(g.eastHemisphereGeometry),jn.reorderForPreVertexCache(g.eastHemisphereGeometry))}let A=jn.combineInstances(t);for(h=A.length,c=0;c<h;++c){u=A[c];let g=u.attributes;if(o)for(let m in g)g.hasOwnProperty(m)&&g[m].componentDatatype===q.DOUBLE&&jn.encodeAttribute(u,m,`${m}3DHigh`,`${m}3DLow`);else for(let m in g)if(g.hasOwnProperty(m)&&g[m].componentDatatype===q.DOUBLE){let _=`${m}3D`,y=`${m}2D`;jn.projectTo2D(u,m,_,y,n),l(u.boundingSphere)&&m==="position"&&(u.boundingSphereCV=le.fromVertices(u.attributes.position2D.values)),jn.encodeAttribute(u,_,`${_}High`,`${_}Low`),jn.encodeAttribute(u,y,`${y}High`,`${y}Low`)}s&&jn.compressVertices(u)}if(!i){let g=[];for(h=A.length,c=0;c<h;++c)u=A[c],g=g.concat(jn.fitToUnsignedShortIndices(u));A=g}return A}function l6(e,t,n,i){let o,r,s,a=i.length-1;if(a>=0){let u=i[a];o=u.offset+u.count,s=u.index,r=n[s].indices.length}else o=0,s=0,r=n[s].indices.length;let c=e.length;for(let u=0;u<c;++u){let h=e[u][t];if(!l(h))continue;let A=h.indices.length;o+A>r&&(o=0,r=n[++s].indices.length),i.push({index:s,offset:o,count:A}),o+=A}}function m1e(e,t){let n=[];return l6(e,"geometry",t,n),l6(e,"westHemisphereGeometry",t,n),l6(e,"eastHemisphereGeometry",t,n),n}var GA={};GA.combineGeometry=function(e){let t,n,i=e.instances,o=i.length,r,s,a=!1;o>0&&(t=h1e(e),t.length>0&&(n=jn.createAttributeLocations(t[0]),e.createPickOffsets&&(r=m1e(i,t))),l(i[0].attributes)&&l(i[0].attributes.offset)&&(s=new Array(o),a=!0));let c=new Array(o),u=new Array(o);for(let f=0;f<o;++f){let h=i[f],A=h.geometry;l(A)&&(c[f]=A.boundingSphere,u[f]=A.boundingSphereCV,a&&(s[f]=h.geometry.offsetAttribute));let g=h.eastHemisphereGeometry,m=h.westHemisphereGeometry;l(g)&&l(m)&&(l(g.boundingSphere)&&l(m.boundingSphere)&&(c[f]=le.union(g.boundingSphere,m.boundingSphere)),l(g.boundingSphereCV)&&l(m.boundingSphereCV)&&(u[f]=le.union(g.boundingSphereCV,m.boundingSphereCV)))}return{geometries:t,modelMatrix:e.modelMatrix,attributeLocations:n,pickOffsets:r,offsetInstanceExtend:s,boundingSpheres:c,boundingSpheresCV:u}};function A1e(e,t){let n=e.attributes;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i];l(o)&&l(o.values)&&t.push(o.values.buffer)}l(e.indices)&&t.push(e.indices.buffer)}function p1e(e,t){let n=e.length;for(let i=0;i<n;++i)A1e(e[i],t)}function g1e(e){let t=1,n=e.length;for(let i=0;i<n;i++){let o=e[i];if(++t,!l(o))continue;let r=o.attributes;t+=7+2*le.packedLength+(l(o.indices)?o.indices.length:0);for(let s in r)if(r.hasOwnProperty(s)&&l(r[s])){let a=r[s];t+=5+a.values.length}}return t}GA.packCreateGeometryResults=function(e,t){let n=new Float64Array(g1e(e)),i=[],o={},r=e.length,s=0;n[s++]=r;for(let a=0;a<r;a++){let c=e[a],u=l(c);if(n[s++]=u?1:0,!u)continue;n[s++]=c.primitiveType,n[s++]=c.geometryType,n[s++]=c.offsetAttribute??-1;let f=l(c.boundingSphere)?1:0;n[s++]=f,f&&le.pack(c.boundingSphere,n,s),s+=le.packedLength;let h=l(c.boundingSphereCV)?1:0;n[s++]=h,h&&le.pack(c.boundingSphereCV,n,s),s+=le.packedLength;let A=c.attributes,g=[];for(let _ in A)A.hasOwnProperty(_)&&l(A[_])&&(g.push(_),l(o[_])||(o[_]=i.length,i.push(_)));n[s++]=g.length;for(let _=0;_<g.length;_++){let y=g[_],C=A[y];n[s++]=o[y],n[s++]=C.componentDatatype,n[s++]=C.componentsPerAttribute,n[s++]=C.normalize?1:0,n[s++]=C.values.length,n.set(C.values,s),s+=C.values.length}let m=l(c.indices)?c.indices.length:0;n[s++]=m,m>0&&(n.set(c.indices,s),s+=m)}return t.push(n.buffer),{stringTable:i,packedData:n}};GA.unpackCreateGeometryResults=function(e){let t=e.stringTable,n=e.packedData,i,o=new Array(n[0]),r=0,s=1;for(;s<n.length;){if(!(n[s++]===1)){o[r++]=void 0;continue}let c=n[s++],u=n[s++],f=n[s++];f===-1&&(f=void 0);let h,A;n[s++]===1&&(h=le.unpack(n,s)),s+=le.packedLength,n[s++]===1&&(A=le.unpack(n,s)),s+=le.packedLength;let _,y,C,E=new En,I=n[s++];for(i=0;i<I;i++){let S=t[n[s++]],B=n[s++];C=n[s++];let v=n[s++]!==0;_=n[s++],y=q.createTypedArray(B,_);for(let P=0;P<_;P++)y[P]=n[s++];E[S]=new De({componentDatatype:B,componentsPerAttribute:C,normalize:v,values:y})}let b;if(_=n[s++],_>0){let S=y.length/C;for(b=Fe.createTypedArray(S,_),i=0;i<_;i++)b[i]=n[s++]}o[r++]=new ht({primitiveType:c,geometryType:u,boundingSphere:h,boundingSphereCV:A,indices:b,attributes:E,offsetAttribute:f})}return o};function _1e(e,t){let n=e.length,i=new Float64Array(1+n*19),o=0;i[o++]=n;for(let r=0;r<n;r++){let s=e[r];if(R.pack(s.modelMatrix,i,o),o+=R.packedLength,l(s.attributes)&&l(s.attributes.offset)){let a=s.attributes.offset.value;i[o]=a[0],i[o+1]=a[1],i[o+2]=a[2]}o+=3}return t.push(i.buffer),i}function y1e(e){let t=e,n=new Array(t[0]),i=0,o=1;for(;o<t.length;){let r=R.unpack(t,o),s;o+=R.packedLength,l(t[o])&&(s={offset:new ho(t[o],t[o+1],t[o+2])}),o+=3,n[i++]={modelMatrix:r,attributes:s}}return n}GA.packCombineGeometryParameters=function(e,t){let n=e.createGeometryResults,i=n.length;for(let o=0;o<i;o++)t.push(n[o].packedData.buffer);return{createGeometryResults:e.createGeometryResults,packedInstances:_1e(e.instances,t),ellipsoid:e.ellipsoid,isGeographic:e.projection instanceof Hi,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix,createPickOffsets:e.createPickOffsets}};GA.unpackCombineGeometryParameters=function(e){let t=y1e(e.packedInstances),n=e.createGeometryResults,i=n.length,o=0;for(let a=0;a<i;a++){let c=GA.unpackCreateGeometryResults(n[a]),u=c.length;for(let f=0;f<u;f++){let h=c[f],A=t[o];A.geometry=h,++o}}let r=te.clone(e.ellipsoid),s=e.isGeographic?new Hi(r):new Yi(r);return{instances:t,ellipsoid:r,projection:s,elementIndexUintSupported:e.elementIndexUintSupported,scene3DOnly:e.scene3DOnly,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:R.clone(e.modelMatrix),createPickOffsets:e.createPickOffsets}};function kne(e){let t=e.length,n=1+(le.packedLength+1)*t,i=new Float32Array(n),o=0;i[o++]=t;for(let r=0;r<t;++r){let s=e[r];l(s)?(i[o++]=1,le.pack(e[r],i,o)):i[o++]=0,o+=le.packedLength}return i}function Une(e){let t=new Array(e[0]),n=0,i=1;for(;i<e.length;)e[i++]===1&&(t[n]=le.unpack(e,i)),++n,i+=le.packedLength;return t}GA.packCombineGeometryResults=function(e,t){l(e.geometries)&&p1e(e.geometries,t);let n=kne(e.boundingSpheres),i=kne(e.boundingSpheresCV);return t.push(n.buffer,i.buffer),{geometries:e.geometries,attributeLocations:e.attributeLocations,modelMatrix:e.modelMatrix,pickOffsets:e.pickOffsets,offsetInstanceExtend:e.offsetInstanceExtend,boundingSpheres:n,boundingSpheresCV:i}};GA.unpackCombineGeometryResults=function(e){return{geometries:e.geometries,attributeLocations:e.attributeLocations,modelMatrix:e.modelMatrix,pickOffsets:e.pickOffsets,offsetInstanceExtend:e.offsetInstanceExtend,boundingSpheres:Une(e.boundingSpheres),boundingSpheresCV:Une(e.boundingSpheresCV)}};var CI=GA;var C1e={READY:0,CREATING:1,CREATED:2,COMBINING:3,COMBINED:4,COMPLETE:5,FAILED:6},qr=Object.freeze(C1e);var VL={MORPHING:0,COLUMBUS_VIEW:1,SCENE2D:2,SCENE3D:3};VL.getMorphTime=function(e){return e===VL.SCENE3D?1:e===VL.MORPHING?void 0:0};var ie=Object.freeze(VL);var xu={DISABLED:0,ENABLED:1,CAST_ONLY:2,RECEIVE_ONLY:3};xu.NUMBER_OF_SHADOW_MODES=4;xu.castShadows=function(e){return e===xu.ENABLED||e===xu.CAST_ONLY};xu.receiveShadows=function(e){return e===xu.ENABLED||e===xu.RECEIVE_ONLY};xu.fromCastReceive=function(e,t){return e&&t?xu.ENABLED:e?xu.CAST_ONLY:t?xu.RECEIVE_ONLY:xu.DISABLED};var Dn=Object.freeze(xu);function vr(e){e=e??V.EMPTY_OBJECT,this.geometryInstances=e.geometryInstances,this.appearance=e.appearance,this._appearance=void 0,this._material=void 0,this.depthFailAppearance=e.depthFailAppearance,this._depthFailAppearance=void 0,this._depthFailMaterial=void 0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=new R,this.show=e.show??!0,this._vertexCacheOptimize=e.vertexCacheOptimize??!1,this._interleave=e.interleave??!1,this._releaseGeometryInstances=e.releaseGeometryInstances??!0,this._allowPicking=e.allowPicking??!0,this._asynchronous=e.asynchronous??!0,this._compressVertices=e.compressVertices??!0,this.cull=e.cull??!0,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.rtcCenter=e.rtcCenter,this.shadows=e.shadows??Dn.DISABLED,this._translucent=void 0,this._state=qr.READY,this._geometries=[],this._error=void 0,this._numberOfInstances=0,this._boundingSpheres=[],this._boundingSphereWC=[],this._boundingSphereCV=[],this._boundingSphere2D=[],this._boundingSphereMorph=[],this._perInstanceAttributeCache=new Map,this._instanceIds=[],this._lastPerInstanceAttributeIndex=0,this._va=[],this._attributeLocations=void 0,this._primitiveType=void 0,this._frontFaceRS=void 0,this._backFaceRS=void 0,this._sp=void 0,this._depthFailAppearance=void 0,this._spDepthFail=void 0,this._frontFaceDepthFailRS=void 0,this._backFaceDepthFailRS=void 0,this._pickIds=[],this._colorCommands=[],this._pickCommands=[],this._createBoundingVolumeFunction=e._createBoundingVolumeFunction,this._createRenderStatesFunction=e._createRenderStatesFunction,this._createShaderProgramFunction=e._createShaderProgramFunction,this._createCommandsFunction=e._createCommandsFunction,this._updateAndQueueCommandsFunction=e._updateAndQueueCommandsFunction,this._createPickOffsets=e._createPickOffsets,this._pickOffsets=void 0,this._createGeometryResults=void 0,this._ready=!1,this._batchTable=void 0,this._batchTableAttributeIndices=void 0,this._offsetInstanceExtend=void 0,this._batchTableOffsetAttribute2DIndex=void 0,this._batchTableOffsetsUpdated=!1,this._instanceBoundingSpheres=void 0,this._instanceBoundingSpheresCV=void 0,this._tempBoundingSpheres=void 0,this._recomputeBoundingSpheres=!1,this._batchTableBoundingSpheresUpdated=!1,this._batchTableBoundingSphereAttributeIndices=void 0}Object.defineProperties(vr.prototype,{vertexCacheOptimize:{get:function(){return this._vertexCacheOptimize}},interleave:{get:function(){return this._interleave}},releaseGeometryInstances:{get:function(){return this._releaseGeometryInstances}},allowPicking:{get:function(){return this._allowPicking}},asynchronous:{get:function(){return this._asynchronous}},compressVertices:{get:function(){return this._compressVertices}},ready:{get:function(){return this._ready}}});function E1e(e){let t=e.length,n=[],i=e[0].attributes,o;for(o in i)if(i.hasOwnProperty(o)&&l(i[o])){let r=i[o],s=!0;for(let a=1;a<t;++a){let c=e[a].attributes[o];if(!l(c)||r.componentDatatype!==c.componentDatatype||r.componentsPerAttribute!==c.componentsPerAttribute||r.normalize!==c.normalize){s=!1;break}}s&&n.push(o)}return n}var I1e=new k,x1e=new d,Kne=new se;function Xne(e){let t=e.length;if(t===1)return e[0];if(t===2)return k.unpack(e,0,I1e);if(t===3)return d.unpack(e,0,x1e);if(t===4)return se.unpack(e,0,Kne)}function b1e(e,t){let n=e.geometryInstances,i=Array.isArray(n)?n:[n],o=i.length;if(o===0)return;let r=E1e(i),s=r.length,a=[],c={},u={},f,A=i[0].attributes,g,m,_;for(g=0;g<s;++g)m=r[g],_=A[m],c[m]=g,a.push({functionName:`czm_batchTable_${m}`,componentDatatype:_.componentDatatype,componentsPerAttribute:_.componentsPerAttribute,normalize:_.normalize});r.indexOf("distanceDisplayCondition")!==-1&&(a.push({functionName:"czm_batchTable_boundingSphereCenter3DHigh",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereCenter3DLow",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereCenter2DHigh",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereCenter2DLow",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"czm_batchTable_boundingSphereRadius",componentDatatype:q.FLOAT,componentsPerAttribute:1}),u.center3DHigh=a.length-5,u.center3DLow=a.length-4,u.center2DHigh=a.length-3,u.center2DLow=a.length-2,u.radius=a.length-1),r.indexOf("offset")!==-1&&(a.push({functionName:"czm_batchTable_offset2D",componentDatatype:q.FLOAT,componentsPerAttribute:3}),f=a.length-1),a.push({functionName:"czm_batchTable_pickColor",componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:4,normalize:!0});let y=a.length,C=new yI(t,a,o);for(g=0;g<o;++g){let E=i[g];A=E.attributes;for(let v=0;v<s;++v){m=r[v],_=A[m];let P=Xne(_.value),N=c[m];C.setBatchedAttribute(g,N,P)}let I={primitive:E.pickPrimitive??e};l(E.id)&&(I.id=E.id);let b=t.createPickId(I);e._pickIds.push(b);let S=b.color,B=Kne;B.x=G.floatToByte(S.red),B.y=G.floatToByte(S.green),B.z=G.floatToByte(S.blue),B.w=G.floatToByte(S.alpha),C.setBatchedAttribute(g,y-1,B)}e._batchTable=C,e._batchTableAttributeIndices=c,e._batchTableBoundingSphereAttributeIndices=u,e._batchTableOffsetAttribute2DIndex=f}function T1e(e){let t;return Array.isArray(e.values)?t=e.values.slice(0):t=new e.values.constructor(e.values),new De({componentDatatype:e.componentDatatype,componentsPerAttribute:e.componentsPerAttribute,normalize:e.normalize,values:t})}function S1e(e){let t=e.attributes,n=new En;for(let o in t)t.hasOwnProperty(o)&&l(t[o])&&(n[o]=T1e(t[o]));let i;if(l(e.indices)){let o=e.indices;Array.isArray(o)?i=o.slice(0):i=new o.constructor(o)}return new ht({attributes:n,indices:i,primitiveType:e.primitiveType,boundingSphere:le.clone(e.boundingSphere)})}function w1e(e,t){return{geometry:t,attributes:e.attributes,modelMatrix:R.clone(e.modelMatrix),pickPrimitive:e.pickPrimitive,id:e.id}}var B1e=/in\s+vec(?:3|4)\s+(.*)3DHigh;/g;vr._modifyShaderPosition=function(e,t,n){let i,o="",r="",s="";for(;(i=B1e.exec(t))!==null;){let a=i[1],c=`vec4 czm_compute${a[0].toUpperCase()}${a.substr(1)}()`;c!=="vec4 czm_computePosition()"&&(o+=`${c}; +`),l(e.rtcCenter)?(t=t.replace(/in\s+vec(?:3|4)\s+position3DHigh;/g,""),t=t.replace(/in\s+vec(?:3|4)\s+position3DLow;/g,""),o+=`uniform mat4 u_modifiedModelView; +`,r+=`in vec4 position; +`,s+=`${c} +{ + return u_modifiedModelView * position; +} + +`,t=t.replace(/czm_modelViewRelativeToEye\s+\*\s+/g,""),t=t.replace(/czm_modelViewProjectionRelativeToEye/g,"czm_projection")):n?s+=`${c} +{ + return czm_translateRelativeToEye(${a}3DHigh, ${a}3DLow); +} + +`:(r+=`in vec3 ${a}2DHigh; +in vec3 ${a}2DLow; +`,s+=`${c} +{ + vec4 p; + if (czm_morphTime == 1.0) + { + p = czm_translateRelativeToEye(${a}3DHigh, ${a}3DLow); + } + else if (czm_morphTime == 0.0) + { + p = czm_translateRelativeToEye(${a}2DHigh.zxy, ${a}2DLow.zxy); + } + else + { + p = czm_columbusViewMorph( + czm_translateRelativeToEye(${a}2DHigh.zxy, ${a}2DLow.zxy), + czm_translateRelativeToEye(${a}3DHigh, ${a}3DLow), + czm_morphTime); + } + return p; +} + +`)}return[o,r,t,s].join(` +`)};vr._appendShowToShader=function(e,t){return l(e._batchTableAttributeIndices.show)?`${We.replaceMain(t,"czm_non_show_main")} +void main() +{ + czm_non_show_main(); + gl_Position *= czm_batchTable_show(batchId); +}`:t};vr._updateColorAttribute=function(e,t,n){if(!l(e._batchTableAttributeIndices.color)&&!l(e._batchTableAttributeIndices.depthFailColor)||t.search(/in\s+vec4\s+color;/g)===-1)return t;let i=t;return i=i.replace(/in\s+vec4\s+color;/g,""),n?i=i.replace(/(\b)color(\b)/g,"$1czm_batchTable_depthFailColor(batchId)$2"):i=i.replace(/(\b)color(\b)/g,"$1czm_batchTable_color(batchId)$2"),i};function Gne(e){return`${We.replaceMain(e,"czm_non_pick_main")} +out vec4 v_pickColor; +void main() +{ + czm_non_pick_main(); + v_pickColor = czm_batchTable_pickColor(batchId); +}`}function zne(e){return`in vec4 v_pickColor; +${e}`}vr._updatePickColorAttribute=function(e){let t=e.replace(/in\s+vec4\s+pickColor;/g,"");return t=t.replace(/(\b)pickColor(\b)/g,"$1czm_batchTable_pickColor(batchId)$2"),t};vr._appendOffsetToShader=function(e,t){if(!l(e._batchTableAttributeIndices.offset))return t;let n=`in float batchId; +`;n+="in float applyOffset;";let i=t.replace(/in\s+float\s+batchId;/g,n),o=`vec4 $1 = czm_computePosition(); +`;return o+=` if (czm_sceneMode == czm_sceneMode3D) +`,o+=` { +`,o+=" $1 = $1 + vec4(czm_batchTable_offset(batchId) * applyOffset, 0.0);",o+=` } +`,o+=` else +`,o+=` { +`,o+=" $1 = $1 + vec4(czm_batchTable_offset2D(batchId) * applyOffset, 0.0);",o+=` } +`,i=i.replace(/vec4\s+([A-Za-z0-9_]+)\s+=\s+czm_computePosition\(\);/g,o),i};vr._appendDistanceDisplayConditionToShader=function(e,t,n){if(!l(e._batchTableAttributeIndices.distanceDisplayCondition))return t;let i=We.replaceMain(t,"czm_non_distanceDisplayCondition_main"),o=`void main() +{ + czm_non_distanceDisplayCondition_main(); + vec2 distanceDisplayCondition = czm_batchTable_distanceDisplayCondition(batchId); + vec3 boundingSphereCenter3DHigh = czm_batchTable_boundingSphereCenter3DHigh(batchId); + vec3 boundingSphereCenter3DLow = czm_batchTable_boundingSphereCenter3DLow(batchId); + float boundingSphereRadius = czm_batchTable_boundingSphereRadius(batchId); +`;return n?o+=` vec4 centerRTE = czm_translateRelativeToEye(boundingSphereCenter3DHigh, boundingSphereCenter3DLow); +`:o+=` vec3 boundingSphereCenter2DHigh = czm_batchTable_boundingSphereCenter2DHigh(batchId); + vec3 boundingSphereCenter2DLow = czm_batchTable_boundingSphereCenter2DLow(batchId); + vec4 centerRTE; + if (czm_morphTime == 1.0) + { + centerRTE = czm_translateRelativeToEye(boundingSphereCenter3DHigh, boundingSphereCenter3DLow); + } + else if (czm_morphTime == 0.0) + { + centerRTE = czm_translateRelativeToEye(boundingSphereCenter2DHigh.zxy, boundingSphereCenter2DLow.zxy); + } + else + { + centerRTE = czm_columbusViewMorph( + czm_translateRelativeToEye(boundingSphereCenter2DHigh.zxy, boundingSphereCenter2DLow.zxy), + czm_translateRelativeToEye(boundingSphereCenter3DHigh, boundingSphereCenter3DLow), + czm_morphTime); + } +`,o+=` float radiusSq = boundingSphereRadius * boundingSphereRadius; + float distanceSq; + if (czm_sceneMode == czm_sceneMode2D) + { + distanceSq = czm_eyeHeight2D.y - radiusSq; + } + else + { + distanceSq = dot(centerRTE.xyz, centerRTE.xyz) - radiusSq; + } + distanceSq = max(distanceSq, 0.0); + float nearSq = distanceDisplayCondition.x * distanceDisplayCondition.x; + float farSq = distanceDisplayCondition.y * distanceDisplayCondition.y; + float show = (distanceSq >= nearSq && distanceSq <= farSq) ? 1.0 : 0.0; + gl_Position *= show; +}`,`${i} +${o}`};function Vne(e,t){if(!e.compressVertices)return t;let n=t.search(/in\s+vec3\s+normal;/g)!==-1,i=t.search(/in\s+vec2\s+st;/g)!==-1;if(!n&&!i)return t;let o=t.search(/in\s+vec3\s+tangent;/g)!==-1,r=t.search(/in\s+vec3\s+bitangent;/g)!==-1,s=i&&n?2:1;s+=o||r?1:0;let a=s>1?`vec${s}`:"float",c="compressedAttributes",u=`in ${a} ${c};`,f="",h="";if(i){f+=`vec2 st; +`;let m=s>1?`${c}.x`:c;h+=` st = czm_decompressTextureCoordinates(${m}); +`}n&&o&&r?(f+=`vec3 normal; +vec3 tangent; +vec3 bitangent; +`,h+=` czm_octDecode(${c}.${i?"yz":"xy"}, normal, tangent, bitangent); +`):(n&&(f+=`vec3 normal; +`,h+=` normal = czm_octDecode(${c}${s>1?`.${i?"y":"x"}`:""}); +`),o&&(f+=`vec3 tangent; +`,h+=` tangent = czm_octDecode(${c}.${i&&n?"z":"y"}); +`),r&&(f+=`vec3 bitangent; +`,h+=` bitangent = czm_octDecode(${c}.${i&&n?"z":"y"}); +`));let A=t;A=A.replace(/in\s+vec3\s+normal;/g,""),A=A.replace(/in\s+vec2\s+st;/g,""),A=A.replace(/in\s+vec3\s+tangent;/g,""),A=A.replace(/in\s+vec3\s+bitangent;/g,""),A=We.replaceMain(A,"czm_non_compressed_main");let g=`void main() +{ +${h} czm_non_compressed_main(); +}`;return[u,f,A,g].join(` +`)}function D1e(e){let t=We.replaceMain(e,"czm_non_depth_clamp_main");return t+=`void main() { + czm_non_depth_clamp_main(); + gl_Position = czm_depthClamp(gl_Position);} +`,t}function v1e(e){let t=We.replaceMain(e,"czm_non_depth_clamp_main");return t+=`void main() { + czm_non_depth_clamp_main(); + #if defined(LOG_DEPTH) + czm_writeLogDepth(); + #else + czm_writeDepthClamp(); + #endif +} +`,t}function Hne(e,t){let n=e.vertexAttributes}function P1e(e,t){return function(){return e[t]}}var u6=Math.max(jt.hardwareConcurrency-1,1),HL,R1e=new mi("combineGeometry");function M1e(e,t){let n,i,o,r,s=e._instanceIds;if(e._state===qr.READY){n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances];let a=e._numberOfInstances=n.length,c=[],u=[];for(o=0;o<a;++o)i=n[o].geometry,s.push(n[o].id),u.push({moduleName:i._workerName,modulePath:i._workerPath,geometry:i});if(!l(HL))for(HL=new Array(u6),o=0;o<u6;o++)HL[o]=new mi("createGeometry");let f;for(u=zL(u,u6),o=0;o<u.length;o++){let h=0,A=u[o],g=A.length;for(r=0;r<g;++r)f=A[r],i=f.geometry,l(i.constructor.pack)&&(f.offset=h,h+=i.constructor.packedLength??i.packedLength);let m;if(h>0){let _=new Float64Array(h);for(m=[_.buffer],r=0;r<g;++r)f=A[r],i=f.geometry,l(i.constructor.pack)&&(i.constructor.pack(i,_,f.offset),f.geometry=_)}c.push(HL[o].scheduleTask({subTasks:u[o]},m))}e._state=qr.CREATING,Promise.all(c).then(function(h){e._createGeometryResults=h,e._state=qr.CREATED}).catch(function(h){uw(e,t,qr.FAILED,h)})}else if(e._state===qr.CREATED){let a=[];n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances];let c=t.scene3DOnly,u=t.mapProjection,f=R1e.scheduleTask(CI.packCombineGeometryParameters({createGeometryResults:e._createGeometryResults,instances:n,ellipsoid:u.ellipsoid,projection:u,elementIndexUintSupported:t.context.elementIndexUint,scene3DOnly:c,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix,createPickOffsets:e._createPickOffsets},a),a);e._createGeometryResults=void 0,e._state=qr.COMBINING,Promise.resolve(f).then(function(h){let A=CI.unpackCombineGeometryResults(h);e._geometries=A.geometries,e._attributeLocations=A.attributeLocations,e.modelMatrix=R.clone(A.modelMatrix,e.modelMatrix),e._pickOffsets=A.pickOffsets,e._offsetInstanceExtend=A.offsetInstanceExtend,e._instanceBoundingSpheres=A.boundingSpheres,e._instanceBoundingSpheresCV=A.boundingSpheresCV,l(e._geometries)&&e._geometries.length>0?(e._recomputeBoundingSpheres=!0,e._state=qr.COMBINED):uw(e,t,qr.FAILED,void 0)}).catch(function(h){uw(e,t,qr.FAILED,h)})}}function N1e(e,t){let n=Array.isArray(e.geometryInstances)?e.geometryInstances:[e.geometryInstances],i=e._numberOfInstances=n.length,o=new Array(i),r=e._instanceIds,s,a,c=0;for(a=0;a<i;a++){s=n[a];let A=s.geometry,g;l(A.attributes)&&l(A.primitiveType)?g=S1e(A):g=A.constructor.createGeometry(A),o[c++]=w1e(s,g),r.push(s.id)}o.length=c;let u=t.scene3DOnly,f=t.mapProjection,h=CI.combineGeometry({instances:o,ellipsoid:f.ellipsoid,projection:f,elementIndexUintSupported:t.context.elementIndexUint,scene3DOnly:u,vertexCacheOptimize:e.vertexCacheOptimize,compressVertices:e.compressVertices,modelMatrix:e.modelMatrix,createPickOffsets:e._createPickOffsets});e._geometries=h.geometries,e._attributeLocations=h.attributeLocations,e.modelMatrix=R.clone(h.modelMatrix,e.modelMatrix),e._pickOffsets=h.pickOffsets,e._offsetInstanceExtend=h.offsetInstanceExtend,e._instanceBoundingSpheres=h.boundingSpheres,e._instanceBoundingSpheresCV=h.boundingSpheresCV,l(e._geometries)&&e._geometries.length>0?(e._recomputeBoundingSpheres=!0,e._state=qr.COMBINED):uw(e,t,qr.FAILED,void 0)}function L1e(e,t){let n=e._batchTableAttributeIndices.offset;if(!e._recomputeBoundingSpheres||!l(n)){e._recomputeBoundingSpheres=!1;return}let i,o=e._offsetInstanceExtend,r=e._instanceBoundingSpheres,s=r.length,a=e._tempBoundingSpheres;if(!l(a)){for(a=new Array(s),i=0;i<s;i++)a[i]=new le;e._tempBoundingSpheres=a}for(i=0;i<s;++i){let _=a[i],y=e._batchTable.getBatchedAttribute(i,n,new d);_=r[i].clone(_),eie(_,y,o[i])}let c=[],u=[],f=[];for(i=0;i<s;++i){let _=a[i];_.center.x-_.radius>0||le.intersectPlane(_,mn.ORIGIN_ZX_PLANE)!==nn.INTERSECTING?c.push(_):(u.push(_),f.push(_))}let h=c[0],A=f[0],g=u[0];for(i=1;i<c.length;i++)h=le.union(h,c[i]);for(i=1;i<f.length;i++)A=le.union(A,f[i]);for(i=1;i<u.length;i++)g=le.union(g,u[i]);let m=[];for(l(h)&&m.push(h),l(A)&&m.push(A),l(g)&&m.push(g),i=0;i<m.length;i++){let _=m[i].clone(e._boundingSpheres[i]);e._boundingSpheres[i]=_,e._boundingSphereCV[i]=le.projectTo2D(_,t.mapProjection,e._boundingSphereCV[i])}vr._updateBoundingVolumes(e,t,e.modelMatrix,!0),e._recomputeBoundingSpheres=!1}var Wne=new ei,Jne=new Ae,Zne=new d,$ne=new le;function O1e(e,t){if(!l(e._batchTableAttributeIndices.distanceDisplayCondition)||e._batchTableBoundingSpheresUpdated)return;let i=e._batchTableBoundingSphereAttributeIndices,o=i.center3DHigh,r=i.center3DLow,s=i.center2DHigh,a=i.center2DLow,c=i.radius,u=t.mapProjection,f=u.ellipsoid,h=e._batchTable,A=e._instanceBoundingSpheres,g=A.length;for(let m=0;m<g;++m){let _=A[m];if(!l(_))continue;let y=e.modelMatrix;l(y)&&(_=le.transform(_,y,$ne));let C=_.center,E=_.radius,I=ei.fromCartesian(C,Wne);if(h.setBatchedAttribute(m,o,I.high),h.setBatchedAttribute(m,r,I.low),!t.scene3DOnly){let b=f.cartesianToCartographic(C,Jne),S=u.project(b,Zne);I=ei.fromCartesian(S,Wne),h.setBatchedAttribute(m,s,I.high),h.setBatchedAttribute(m,a,I.low)}h.setBatchedAttribute(m,c,E)}e._batchTableBoundingSpheresUpdated=!0}var f6=new d,F1e=new d;function jne(e,t){if(!l(e._batchTableAttributeIndices.offset)||e._batchTableOffsetsUpdated||t.scene3DOnly)return;let i=e._batchTableOffsetAttribute2DIndex,o=t.mapProjection,r=o.ellipsoid,s=e._batchTable,a=e._instanceBoundingSpheres,c=a.length;for(let u=0;u<c;++u){let f=a[u];if(!l(f))continue;let h=s.getBatchedAttribute(u,e._batchTableAttributeIndices.offset);if(d.equals(h,d.ZERO)){s.setBatchedAttribute(u,i,d.ZERO);continue}let A=e.modelMatrix;l(A)&&(f=le.transform(f,A,$ne));let g=f.center;g=r.scaleToGeodeticSurface(g,F1e);let m=r.cartesianToCartographic(g,Jne),_=o.project(m,Zne),y=d.add(h,g,f6);m=r.cartesianToCartographic(y,m);let C=o.project(m,f6),E=d.subtract(C,_,f6),I=E.x;E.x=E.z,E.z=E.y,E.y=I,s.setBatchedAttribute(u,i,E)}e._batchTableOffsetsUpdated=!0}function Q1e(e,t){let n=e._attributeLocations,i=e._geometries,o=t.scene3DOnly,r=t.context,s=[],a=i.length;for(let c=0;c<a;++c){let u=i[c];if(s.push(li.fromGeometry({context:r,geometry:u,attributeLocations:n,bufferUsage:Qe.STATIC_DRAW,interleave:e._interleave})),l(e._createBoundingVolumeFunction))e._createBoundingVolumeFunction(t,u);else if(e._boundingSpheres.push(le.clone(u.boundingSphere)),e._boundingSphereWC.push(new le),!o){let f=u.boundingSphereCV.center,h=f.x,A=f.y,g=f.z;f.x=g,f.y=h,f.z=A,e._boundingSphereCV.push(le.clone(u.boundingSphereCV)),e._boundingSphere2D.push(new le),e._boundingSphereMorph.push(new le)}}e._va=s,e._primitiveType=i[0].primitiveType,e.releaseGeometryInstances&&(e.geometryInstances=void 0),e._geometries=void 0,uw(e,t,qr.COMPLETE,void 0)}function k1e(e,t,n,i){let o=n.getRenderState(),r;i?(r=ze(o,!1),r.cull={enabled:!0,face:Mi.BACK},e._frontFaceRS=Ue.fromCache(r),r.cull.face=Mi.FRONT,e._backFaceRS=Ue.fromCache(r)):(e._frontFaceRS=Ue.fromCache(o),e._backFaceRS=e._frontFaceRS),r=ze(o,!1),l(e._depthFailAppearance)&&(r.depthTest.enabled=!1),l(e._depthFailAppearance)&&(o=e._depthFailAppearance.getRenderState(),r=ze(o,!1),r.depthTest.func=Ja.GREATER,i?(r.cull={enabled:!0,face:Mi.BACK},e._frontFaceDepthFailRS=Ue.fromCache(r),r.cull.face=Mi.FRONT,e._backFaceDepthFailRS=Ue.fromCache(r)):(e._frontFaceDepthFailRS=Ue.fromCache(r),e._backFaceDepthFailRS=e._frontFaceRS))}function U1e(e,t,n){let i=t.context,o=e._attributeLocations,r=e._batchTable.getVertexShaderCallback()(n.vertexShaderSource);r=vr._appendOffsetToShader(e,r),r=vr._appendShowToShader(e,r),r=vr._appendDistanceDisplayConditionToShader(e,r,t.scene3DOnly),r=Gne(r),r=vr._updateColorAttribute(e,r,!1),r=Vne(e,r),r=vr._modifyShaderPosition(e,r,t.scene3DOnly);let s=n.getFragmentShaderSource();s=zne(s),e._sp=ln.replaceCache({context:i,shaderProgram:e._sp,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:o}),Hne(e._sp,o),l(e._depthFailAppearance)&&(r=e._batchTable.getVertexShaderCallback()(e._depthFailAppearance.vertexShaderSource),r=vr._appendShowToShader(e,r),r=vr._appendDistanceDisplayConditionToShader(e,r,t.scene3DOnly),r=Gne(r),r=vr._updateColorAttribute(e,r,!0),r=Vne(e,r),r=vr._modifyShaderPosition(e,r,t.scene3DOnly),r=D1e(r),s=e._depthFailAppearance.getFragmentShaderSource(),s=zne(s),s=v1e(s),e._spDepthFail=ln.replaceCache({context:i,shaderProgram:e._spDepthFail,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:o}),Hne(e._spDepthFail,o))}var lw=new R,Yne=new d;function qne(e,t,n,i){let o=l(n)?n._uniforms:void 0,r={},s=t.uniforms;if(l(s))for(let c in s)s.hasOwnProperty(c)&&(r[c]=P1e(s,c));let a=wt(r,o);return a=e._batchTable.getUniformMapCallback()(a),l(e.rtcCenter)&&(a.u_modifiedModelView=function(){let c=i.context.uniformState.view;return R.multiply(c,e._modelMatrix,lw),R.multiplyByPoint(lw,e.rtcCenter,Yne),R.setTranslation(lw,Yne,lw),lw}),a}function G1e(e,t,n,i,o,r,s,a){let c=qne(e,t,n,a),u;l(e._depthFailAppearance)&&(u=qne(e,e._depthFailAppearance,e._depthFailAppearance.material,a));let f=i?Be.TRANSLUCENT:Be.OPAQUE,h=o?2:1;h*=l(e._depthFailAppearance)?2:1,r.length=e._va.length*h;let A=r.length,g=0;for(let m=0;m<A;++m){let _;o&&(_=r[m],l(_)||(_=r[m]=new nt({owner:e,primitiveType:e._primitiveType})),_.vertexArray=e._va[g],_.renderState=e._backFaceRS,_.shaderProgram=e._sp,_.uniformMap=c,_.pass=f,++m),_=r[m],l(_)||(_=r[m]=new nt({owner:e,primitiveType:e._primitiveType})),_.vertexArray=e._va[g],_.renderState=e._frontFaceRS,_.shaderProgram=e._sp,_.uniformMap=c,_.pass=f,l(e._depthFailAppearance)&&(o&&(++m,_=r[m],l(_)||(_=r[m]=new nt({owner:e,primitiveType:e._primitiveType})),_.vertexArray=e._va[g],_.renderState=e._backFaceDepthFailRS,_.shaderProgram=e._spDepthFail,_.uniformMap=u,_.pass=f),++m,_=r[m],l(_)||(_=r[m]=new nt({owner:e,primitiveType:e._primitiveType})),_.vertexArray=e._va[g],_.renderState=e._frontFaceDepthFailRS,_.shaderProgram=e._spDepthFail,_.uniformMap=u,_.pass=f),++g}}vr._updateBoundingVolumes=function(e,t,n,i){let o,r,s;if(i||!R.equals(n,e._modelMatrix))for(R.clone(n,e._modelMatrix),r=e._boundingSpheres.length,o=0;o<r;++o)s=e._boundingSpheres[o],l(s)&&(e._boundingSphereWC[o]=le.transform(s,n,e._boundingSphereWC[o]),t.scene3DOnly||(e._boundingSphere2D[o]=le.clone(e._boundingSphereCV[o],e._boundingSphere2D[o]),e._boundingSphereMorph[o]=le.union(e._boundingSphereWC[o],e._boundingSphereCV[o])));let a=e.appearance.pixelSize;if(l(a))for(r=e._boundingSpheres.length,o=0;o<r;++o){s=e._boundingSpheres[o];let c=e._boundingSphereWC[o],f=t.camera.getPixelSize(s,t.context.drawingBufferWidth,t.context.drawingBufferHeight)*a;c.radius=s.radius+f}};function z1e(e,t,n,i,o,r,s,a){vr._updateBoundingVolumes(e,t,o);let c;t.mode===ie.SCENE3D?c=e._boundingSphereWC:t.mode===ie.COLUMBUS_VIEW?c=e._boundingSphereCV:t.mode===ie.SCENE2D&&l(e._boundingSphere2D)?c=e._boundingSphere2D:l(e._boundingSphereMorph)&&(c=e._boundingSphereMorph);let u=t.commandList,f=t.passes;if(f.render||f.pick){let h=e.allowPicking,A=Dn.castShadows(e.shadows),g=Dn.receiveShadows(e.shadows),m=n.length,_=a?2:1;_*=l(e._depthFailAppearance)?2:1;for(let y=0;y<m;++y){let C=Math.floor(y/_),E=n[y];E.modelMatrix=o,E.boundingVolume=c[C],E.cull=r,E.debugShowBoundingVolume=s,E.castShadows=A,E.receiveShadows=g,h?E.pickId="v_pickColor":E.pickId=void 0,u.push(E)}}}vr.prototype.update=function(e){if(!l(this.geometryInstances)&&this._va.length===0||l(this.geometryInstances)&&Array.isArray(this.geometryInstances)&&this.geometryInstances.length===0||!l(this.appearance)||e.mode!==ie.SCENE3D&&e.scene3DOnly||!e.passes.render&&!e.passes.pick)return;if(l(this._error))throw this._error;if(this._state===qr.FAILED)return;let t=e.context;if(l(this._batchTable)||b1e(this,t),this._batchTable.attributes.length>0){if(qt.maximumVertexTextureImageUnits===0)throw new ce("Vertex texture fetch support is required to render primitives with per-instance attributes. The maximum number of vertex texture image units must be greater than zero.");this._batchTable.update(e)}if(this._state!==qr.COMPLETE&&this._state!==qr.COMBINED&&(this.asynchronous?M1e(this,e):N1e(this,e)),this._state===qr.COMBINED&&(O1e(this,e),jne(this,e),Q1e(this,e)),!this.show||this._state!==qr.COMPLETE)return;this._batchTableOffsetsUpdated||jne(this,e),this._recomputeBoundingSpheres&&L1e(this,e);let n=this.appearance,i=n.material,o=!1,r=!1;this._appearance!==n?(this._appearance=n,this._material=i,o=!0,r=!0):this._material!==i&&(this._material=i,r=!0);let s=this.depthFailAppearance,a=l(s)?s.material:void 0;this._depthFailAppearance!==s?(this._depthFailAppearance=s,this._depthFailMaterial=a,o=!0,r=!0):this._depthFailMaterial!==a&&(this._depthFailMaterial=a,r=!0);let c=this._appearance.isTranslucent();this._translucent!==c&&(this._translucent=c,o=!0),l(this._material)&&this._material.update(t);let u=n.closed&&c;o&&(this._createRenderStatesFunction??k1e)(this,t,n,u),r&&(this._createShaderProgramFunction??U1e)(this,e,n),(o||r)&&(this._createCommandsFunction??G1e)(this,n,i,c,u,this._colorCommands,this._pickCommands,e),(this._updateAndQueueCommandsFunction??z1e)(this,e,this._colorCommands,this._pickCommands,this.modelMatrix,this.cull,this.debugShowBoundingVolume,u)};var V1e=new le,H1e=new le;function eie(e,t,n){if(n===hn.TOP){let i=le.clone(e,V1e),o=le.clone(e,H1e);o.center=d.add(o.center,t,o.center),e=le.union(i,o,e)}else n===hn.ALL&&(e.center=d.add(e.center,t,e.center));return e}function W1e(e,t,n){return function(){let i=e.getBatchedAttribute(t,n),o=e.attributes[n],r=o.componentsPerAttribute,s=q.createTypedArray(o.componentDatatype,r);return l(i.constructor.pack)?i.constructor.pack(i,s,0):s[0]=i,s}}function j1e(e,t,n,i,o){return function(r){let s=Xne(r);e.setBatchedAttribute(t,n,s),o==="offset"&&(i._recomputeBoundingSpheres=!0,i._batchTableOffsetsUpdated=!1)}}var Y1e=new d;function q1e(e,t,n){t.boundingSphere={get:function(){let i=e._instanceBoundingSpheres[n];if(l(i)){i=i.clone();let o=e.modelMatrix,r=t.offset;l(r)&&eie(i,d.fromArray(r.get(),0,Y1e),e._offsetInstanceExtend[n]),l(o)&&(i=le.transform(i,o))}return i}},t.boundingSphereCV={get:function(){return e._instanceBoundingSpheresCV[n]}}}function K1e(e,t,n){t.pickId={get:function(){return e._pickIds[n]}}}vr.prototype.getGeometryInstanceAttributes=function(e){let t=this._perInstanceAttributeCache.get(e);if(l(t))return t;let n=-1,i=this._lastPerInstanceAttributeIndex,o=this._instanceIds,r=o.length;for(let u=0;u<r;++u){let f=(i+u)%r;if(e===o[f]){n=f;break}}if(n===-1)return;let s=this._batchTable,a=this._batchTableAttributeIndices;t={};let c={};for(let u in a)if(a.hasOwnProperty(u)){let f=a[u];c[u]={get:W1e(s,n,f),set:j1e(s,n,f,this,u)}}return q1e(this,c,n),K1e(this,c,n),Object.defineProperties(t,c),this._lastPerInstanceAttributeIndex=n,this._perInstanceAttributeCache.set(e,t),t};vr.prototype.isDestroyed=function(){return!1};vr.prototype.destroy=function(){let e,t;this._sp=this._sp&&this._sp.destroy(),this._spDepthFail=this._spDepthFail&&this._spDepthFail.destroy();let n=this._va;for(e=n.length,t=0;t<e;++t)n[t].destroy();this._va=void 0;let i=this._pickIds;for(e=i.length,t=0;t<e;++t)i[t].destroy();return this._pickIds=void 0,this._batchTable=this._batchTable&&this._batchTable.destroy(),this._instanceIds=void 0,this._perInstanceAttributeCache=void 0,this._attributeLocations=void 0,ue(this)};function uw(e,t,n,i){e._error=i,e._state=n,t.afterRender.push(function(){e._ready=e._state===qr.COMPLETE||e._state===qr.FAILED})}var kn=vr;function X1e(e){e=e??V.EMPTY_OBJECT,this.componentDatatype=e.componentDatatype,this.componentsPerAttribute=e.componentsPerAttribute,this.normalize=e.normalize??!1,this.value=e.value}var Jc=X1e;var fw=`#ifdef TEXTURE_COORDINATES +#ifdef SPHERICAL +in vec4 v_sphericalExtents; +#else // SPHERICAL +in vec2 v_inversePlaneExtents; +in vec4 v_westPlane; +in vec4 v_southPlane; +#endif // SPHERICAL +in vec3 v_uvMinAndSphericalLongitudeRotation; +in vec3 v_uMaxAndInverseDistance; +in vec3 v_vMaxAndInverseDistance; +#endif // TEXTURE_COORDINATES + +#ifdef PER_INSTANCE_COLOR +in vec4 v_color; +#endif + +#ifdef NORMAL_EC +vec3 getEyeCoordinate3FromWindowCoordinate(vec2 fragCoord, float logDepthOrDepth) { + vec4 eyeCoordinate = czm_windowToEyeCoordinates(fragCoord, logDepthOrDepth); + return eyeCoordinate.xyz / eyeCoordinate.w; +} + +vec3 vectorFromOffset(vec4 eyeCoordinate, vec2 positiveOffset) { + vec2 glFragCoordXY = gl_FragCoord.xy; + // Sample depths at both offset and negative offset + float upOrRightLogDepth = czm_unpackDepth(texture(czm_globeDepthTexture, (glFragCoordXY + positiveOffset) / czm_viewport.zw)); + float downOrLeftLogDepth = czm_unpackDepth(texture(czm_globeDepthTexture, (glFragCoordXY - positiveOffset) / czm_viewport.zw)); + // Explicitly evaluate both paths + // Necessary for multifrustum and for edges of the screen + bvec2 upOrRightInBounds = lessThan(glFragCoordXY + positiveOffset, czm_viewport.zw); + float useUpOrRight = float(upOrRightLogDepth > 0.0 && upOrRightInBounds.x && upOrRightInBounds.y); + float useDownOrLeft = float(useUpOrRight == 0.0); + vec3 upOrRightEC = getEyeCoordinate3FromWindowCoordinate(glFragCoordXY + positiveOffset, upOrRightLogDepth); + vec3 downOrLeftEC = getEyeCoordinate3FromWindowCoordinate(glFragCoordXY - positiveOffset, downOrLeftLogDepth); + return (upOrRightEC - (eyeCoordinate.xyz / eyeCoordinate.w)) * useUpOrRight + ((eyeCoordinate.xyz / eyeCoordinate.w) - downOrLeftEC) * useDownOrLeft; +} +#endif // NORMAL_EC + +void main(void) +{ +#ifdef REQUIRES_EC + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw)); + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); +#endif + +#ifdef REQUIRES_WC + vec4 worldCoordinate4 = czm_inverseView * eyeCoordinate; + vec3 worldCoordinate = worldCoordinate4.xyz / worldCoordinate4.w; +#endif + +#ifdef TEXTURE_COORDINATES + vec2 uv; +#ifdef SPHERICAL + // Treat world coords as a sphere normal for spherical coordinates + vec2 sphericalLatLong = czm_approximateSphericalCoordinates(worldCoordinate); + sphericalLatLong.y += v_uvMinAndSphericalLongitudeRotation.z; + sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi); + uv.x = (sphericalLatLong.y - v_sphericalExtents.y) * v_sphericalExtents.w; + uv.y = (sphericalLatLong.x - v_sphericalExtents.x) * v_sphericalExtents.z; +#else // SPHERICAL + // Unpack planes and transform to eye space + uv.x = czm_planeDistance(v_westPlane, eyeCoordinate.xyz / eyeCoordinate.w) * v_inversePlaneExtents.x; + uv.y = czm_planeDistance(v_southPlane, eyeCoordinate.xyz / eyeCoordinate.w) * v_inversePlaneExtents.y; +#endif // SPHERICAL +#endif // TEXTURE_COORDINATES + +#ifdef PICK +#ifdef CULL_FRAGMENTS + // When classifying translucent geometry, logDepthOrDepth == 0.0 + // indicates a region that should not be classified, possibly due to there + // being opaque pixels there in another buffer. + // Check for logDepthOrDepth != 0.0 to make sure this should be classified. + if (0.0 <= uv.x && uv.x <= 1.0 && 0.0 <= uv.y && uv.y <= 1.0 || logDepthOrDepth != 0.0) { + out_FragColor.a = 1.0; // 0.0 alpha leads to discard from ShaderSource.createPickFragmentShaderSource + czm_writeDepthClamp(); + } +#else // CULL_FRAGMENTS + out_FragColor.a = 1.0; +#endif // CULL_FRAGMENTS +#else // PICK + +#ifdef CULL_FRAGMENTS + // When classifying translucent geometry, logDepthOrDepth == 0.0 + // indicates a region that should not be classified, possibly due to there + // being opaque pixels there in another buffer. + if (uv.x <= 0.0 || 1.0 <= uv.x || uv.y <= 0.0 || 1.0 <= uv.y || logDepthOrDepth == 0.0) { + discard; + } +#endif + +#ifdef NORMAL_EC + // Compute normal by sampling adjacent pixels in 2x2 block in screen space + vec3 downUp = vectorFromOffset(eyeCoordinate, vec2(0.0, 1.0)); + vec3 leftRight = vectorFromOffset(eyeCoordinate, vec2(1.0, 0.0)); + vec3 normalEC = normalize(cross(leftRight, downUp)); +#endif + + +#ifdef PER_INSTANCE_COLOR + + vec4 color = czm_gammaCorrect(v_color); +#ifdef FLAT + out_FragColor = color; +#else // FLAT + czm_materialInput materialInput; + materialInput.normalEC = normalEC; + materialInput.positionToEyeEC = -eyeCoordinate.xyz; + czm_material material = czm_getDefaultMaterial(materialInput); + material.diffuse = color.rgb; + material.alpha = color.a; + + out_FragColor = czm_phong(normalize(-eyeCoordinate.xyz), material, czm_lightDirectionEC); +#endif // FLAT + + // Premultiply alpha. Required for classification primitives on translucent globe. + out_FragColor.rgb *= out_FragColor.a; + +#else // PER_INSTANCE_COLOR + + // Material support. + // USES_ is distinct from REQUIRES_, because some things are dependencies of each other or + // dependencies for culling but might not actually be used by the material. + + czm_materialInput materialInput; + +#ifdef USES_NORMAL_EC + materialInput.normalEC = normalEC; +#endif + +#ifdef USES_POSITION_TO_EYE_EC + materialInput.positionToEyeEC = -eyeCoordinate.xyz; +#endif + +#ifdef USES_TANGENT_TO_EYE + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(worldCoordinate, normalEC); +#endif + +#ifdef USES_ST + // Remap texture coordinates from computed (approximately aligned with cartographic space) to the desired + // texture coordinate system, which typically forms a tight oriented bounding box around the geometry. + // Shader is provided a set of reference points for remapping. + materialInput.st.x = czm_lineDistance(v_uvMinAndSphericalLongitudeRotation.xy, v_uMaxAndInverseDistance.xy, uv) * v_uMaxAndInverseDistance.z; + materialInput.st.y = czm_lineDistance(v_uvMinAndSphericalLongitudeRotation.xy, v_vMaxAndInverseDistance.xy, uv) * v_vMaxAndInverseDistance.z; +#endif + + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else // FLAT + out_FragColor = czm_phong(normalize(-eyeCoordinate.xyz), material, czm_lightDirectionEC); +#endif // FLAT + + // Premultiply alpha. Required for classification primitives on translucent globe. + out_FragColor.rgb *= out_FragColor.a; + +#endif // PER_INSTANCE_COLOR + czm_writeDepthClamp(); +#endif // PICK +} +`;function If(e,t,n){this._projectionExtentDefines={eastMostYhighDefine:"",eastMostYlowDefine:"",westMostYhighDefine:"",westMostYlowDefine:""};let i=new d6;i.requiresTextureCoordinates=e,i.requiresEC=!n.flat;let o=new d6;if(o.requiresTextureCoordinates=e,n instanceof gn)i.requiresNormalEC=!n.flat;else{let r=`${n.material.shaderSource} +${n.fragmentShaderSource}`;i.normalEC=r.indexOf("materialInput.normalEC")!==-1||r.indexOf("czm_getDefaultMaterial")!==-1,i.positionToEyeEC=r.indexOf("materialInput.positionToEyeEC")!==-1,i.tangentToEyeMatrix=r.indexOf("materialInput.tangentToEyeMatrix")!==-1,i.st=r.indexOf("materialInput.st")!==-1}this._colorShaderDependencies=i,this._pickShaderDependencies=o,this._appearance=n,this._extentsCulling=e,this._planarExtents=t}If.prototype.createFragmentShader=function(e){let t=this._appearance,n=this._colorShaderDependencies,i=[];!e&&!this._planarExtents&&i.push("SPHERICAL"),n.requiresEC&&i.push("REQUIRES_EC"),n.requiresWC&&i.push("REQUIRES_WC"),n.requiresTextureCoordinates&&i.push("TEXTURE_COORDINATES"),this._extentsCulling&&i.push("CULL_FRAGMENTS"),n.requiresNormalEC&&i.push("NORMAL_EC"),t instanceof gn&&i.push("PER_INSTANCE_COLOR"),n.normalEC&&i.push("USES_NORMAL_EC"),n.positionToEyeEC&&i.push("USES_POSITION_TO_EYE_EC"),n.tangentToEyeMatrix&&i.push("USES_TANGENT_TO_EYE"),n.st&&i.push("USES_ST"),t.flat&&i.push("FLAT");let o="";return t instanceof gn||(o=t.material.shaderSource),new We({defines:i,sources:[o,fw]})};If.prototype.createPickFragmentShader=function(e){let t=this._pickShaderDependencies,n=["PICK"];return!e&&!this._planarExtents&&n.push("SPHERICAL"),t.requiresEC&&n.push("REQUIRES_EC"),t.requiresWC&&n.push("REQUIRES_WC"),t.requiresTextureCoordinates&&n.push("TEXTURE_COORDINATES"),this._extentsCulling&&n.push("CULL_FRAGMENTS"),new We({defines:n,sources:[fw],pickColorQualifier:"in"})};If.prototype.createVertexShader=function(e,t,n,i){return cie(this._colorShaderDependencies,this._planarExtents,n,e,t,this._appearance,i,this._projectionExtentDefines)};If.prototype.createPickVertexShader=function(e,t,n,i){return cie(this._pickShaderDependencies,this._planarExtents,n,e,t,void 0,i,this._projectionExtentDefines)};var tie=new d,nie=new Ae,iie={high:0,low:0};function cie(e,t,n,i,o,r,s,a){let c=i.slice();if(a.eastMostYhighDefine===""){let u=nie;u.longitude=D.PI,u.latitude=0,u.height=0;let f=s.project(u,tie),h=ei.encode(f.x,iie);a.eastMostYhighDefine=`EAST_MOST_X_HIGH ${h.high.toFixed(`${h.high}`.length+1)}`,a.eastMostYlowDefine=`EAST_MOST_X_LOW ${h.low.toFixed(`${h.low}`.length+1)}`;let A=nie;A.longitude=-D.PI,A.latitude=0,A.height=0;let g=s.project(A,tie);h=ei.encode(g.x,iie),a.westMostYhighDefine=`WEST_MOST_X_HIGH ${h.high.toFixed(`${h.high}`.length+1)}`,a.westMostYlowDefine=`WEST_MOST_X_LOW ${h.low.toFixed(`${h.low}`.length+1)}`}return n&&(c.push(a.eastMostYhighDefine),c.push(a.eastMostYlowDefine),c.push(a.westMostYhighDefine),c.push(a.westMostYlowDefine)),l(r)&&r instanceof gn&&c.push("PER_INSTANCE_COLOR"),e.requiresTextureCoordinates&&(c.push("TEXTURE_COORDINATES"),t||n||c.push("SPHERICAL"),n&&c.push("COLUMBUS_VIEW_2D")),new We({defines:c,sources:[o]})}function d6(){this._requiresEC=!1,this._requiresWC=!1,this._requiresNormalEC=!1,this._requiresTextureCoordinates=!1,this._usesNormalEC=!1,this._usesPositionToEyeEC=!1,this._usesTangentToEyeMat=!1,this._usesSt=!1}Object.defineProperties(d6.prototype,{requiresEC:{get:function(){return this._requiresEC},set:function(e){this._requiresEC=e||this._requiresEC}},requiresWC:{get:function(){return this._requiresWC},set:function(e){this._requiresWC=e||this._requiresWC,this.requiresEC=this._requiresWC}},requiresNormalEC:{get:function(){return this._requiresNormalEC},set:function(e){this._requiresNormalEC=e||this._requiresNormalEC,this.requiresEC=this._requiresNormalEC}},requiresTextureCoordinates:{get:function(){return this._requiresTextureCoordinates},set:function(e){this._requiresTextureCoordinates=e||this._requiresTextureCoordinates,this.requiresWC=this._requiresTextureCoordinates}},normalEC:{set:function(e){this.requiresNormalEC=e,this._usesNormalEC=e},get:function(){return this._usesNormalEC}},tangentToEyeMatrix:{set:function(e){this.requiresWC=e,this.requiresNormalEC=e,this._usesTangentToEyeMat=e},get:function(){return this._usesTangentToEyeMat}},positionToEyeEC:{set:function(e){this.requiresEC=e,this._usesPositionToEyeEC=e},get:function(){return this._usesPositionToEyeEC}},st:{set:function(e){this.requiresTextureCoordinates=e,this._usesSt=e},get:function(){return this._usesSt}}});function oie(e,t,n){return Math.abs((t.y-e.y)*n.x-(t.x-e.x)*n.y+t.x*e.y-t.y*e.x)/k.distance(t,e)}var J1e=[new k,new k,new k,new k];function lie(e,t){let n=J1e,i=k.unpack(t,0,n[0]),o=k.unpack(t,2,n[1]),r=k.unpack(t,4,n[2]);e.uMaxVmax=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:[o.x,o.y,r.x,r.y]});let s=1/oie(i,o,r),a=1/oie(i,r,o);e.uvMinAndExtents=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:[i.x,i.y,s,a]})}var uie=new Ae,fie=new d,Z1e=new d,$1e=new d,WL={high:0,low:0};function die(e,t,n){let i=uie;i.height=0,i.longitude=e.west,i.latitude=e.south;let o=t.project(i,fie);i.latitude=e.north;let r=t.project(i,Z1e);i.longitude=e.east,i.latitude=e.south;let s=t.project(i,$1e),a=[0,0,0,0],c=[0,0,0,0],u=ei.encode(o.x,WL);a[0]=u.high,c[0]=u.low,u=ei.encode(o.y,WL),a[1]=u.high,c[1]=u.low,u=ei.encode(r.y,WL),a[2]=u.high,c[2]=u.low,u=ei.encode(s.x,WL),a[3]=u.high,c[3]=u.low,n.planes2D_HIGH=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:a}),n.planes2D_LOW=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:c})}var eNe=new R,tNe=new R,rie=new d,nNe=new Ae,iNe=[new Ae,new Ae,new Ae,new Ae,new Ae,new Ae,new Ae,new Ae];function oNe(e,t,n,i,o,r){let s=ae.center(e,nNe);s.height=n;let a=Ae.toCartesian(s,t,rie),c=kt.eastNorthUpToFixedFrame(a,t,eNe),u=R.inverse(c,tNe),f=e.west,h=e.east,A=e.north,g=e.south,m=iNe;m[0].latitude=g,m[0].longitude=f,m[1].latitude=A,m[1].longitude=f,m[2].latitude=A,m[2].longitude=h,m[3].latitude=g,m[3].longitude=h;let _=(f+h)*.5,y=(A+g)*.5;m[4].latitude=g,m[4].longitude=_,m[5].latitude=A,m[5].longitude=_,m[6].latitude=y,m[6].longitude=f,m[7].latitude=y,m[7].longitude=h;let C=Number.POSITIVE_INFINITY,E=Number.NEGATIVE_INFINITY,I=Number.POSITIVE_INFINITY,b=Number.NEGATIVE_INFINITY;for(let P=0;P<8;P++){m[P].height=n;let N=Ae.toCartesian(m[P],t,rie);R.multiplyByPoint(u,N,N),N.z=0,C=Math.min(C,N.x),E=Math.max(E,N.x),I=Math.min(I,N.y),b=Math.max(b,N.y)}let S=i;S.x=C,S.y=I,S.z=0,R.multiplyByPoint(c,S,S);let B=o;B.x=E,B.y=I,B.z=0,R.multiplyByPoint(c,B,B),d.subtract(B,S,o);let v=r;v.x=C,v.y=b,v.z=0,R.multiplyByPoint(c,v,v),d.subtract(v,S,r)}var rNe=new d,sNe=new d,aNe=new ei;If.getPlanarTextureCoordinateAttributes=function(e,t,n,i,o){let r=fie,s=rNe,a=sNe;oNe(e,n,o??0,r,s,a);let c={};lie(c,t);let u=ei.fromCartesian(r,aNe);return c.southWest_HIGH=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(u.high,[0,0,0])}),c.southWest_LOW=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(u.low,[0,0,0])}),c.eastward=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(s,[0,0,0])}),c.northward=new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:3,normalize:!1,value:d.pack(a,[0,0,0])}),die(e,i,c),c};var cNe=new d;function sie(e,t,n,i){let o=uie;o.latitude=e,o.longitude=t,o.height=0;let r=Ae.toCartesian(o,n,cNe),s=Math.sqrt(r.x*r.x+r.y*r.y),a=D.fastApproximateAtan2(s,r.z),c=D.fastApproximateAtan2(r.x,r.y);return i.x=a,i.y=c,i}var aie=new k;If.getSphericalExtentGeometryInstanceAttributes=function(e,t,n,i){let o=sie(e.south,e.west,n,aie),r=o.x,s=o.y,a=sie(e.north,e.east,n,aie),c=a.x,u=a.y,f=0;s>u&&(f=D.PI-s,s=-D.PI,u+=f),r-=D.EPSILON5,s-=D.EPSILON5,c+=D.EPSILON5,u+=D.EPSILON5;let h=1/(u-s),A=1/(c-r),g={sphericalExtents:new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,value:[r,s,A,h]}),longitudeRotation:new Jc({componentDatatype:q.FLOAT,componentsPerAttribute:1,normalize:!1,value:[f]})};return lie(g,t),die(e,i,g),g};If.hasAttributesForTextureCoordinatePlanes=function(e){return l(e.southWest_HIGH)&&l(e.southWest_LOW)&&l(e.northward)&&l(e.eastward)&&l(e.planes2D_HIGH)&&l(e.planes2D_LOW)&&l(e.uMaxVmax)&&l(e.uvMinAndExtents)};If.hasAttributesForSphericalExtents=function(e){return l(e.sphericalExtents)&&l(e.longitudeRotation)&&l(e.planes2D_HIGH)&&l(e.planes2D_LOW)&&l(e.uMaxVmax)&&l(e.uvMinAndExtents)};function lNe(e){return Math.max(e.width,e.height)>If.MAX_WIDTH_FOR_PLANAR_EXTENTS}If.shouldUseSphericalCoordinates=function(e){return lNe(e)};If.MAX_WIDTH_FOR_PLANAR_EXTENTS=D.toRadians(1);var xf=If;var uNe={NEVER:ee.NEVER,LESS:ee.LESS,EQUAL:ee.EQUAL,LESS_OR_EQUAL:ee.LEQUAL,GREATER:ee.GREATER,NOT_EQUAL:ee.NOTEQUAL,GREATER_OR_EQUAL:ee.GEQUAL,ALWAYS:ee.ALWAYS},Zn=Object.freeze(uNe);var fNe={ZERO:ee.ZERO,KEEP:ee.KEEP,REPLACE:ee.REPLACE,INCREMENT:ee.INCR,DECREMENT:ee.DECR,INVERT:ee.INVERT,INCREMENT_WRAP:ee.INCR_WRAP,DECREMENT_WRAP:ee.DECR_WRAP},_t=Object.freeze(fNe);var jL={CESIUM_3D_TILE_MASK:128,SKIP_LOD_MASK:112,SKIP_LOD_BIT_SHIFT:4,CLASSIFICATION_MASK:15};jL.setCesium3DTileBit=function(){return{enabled:!0,frontFunction:Zn.ALWAYS,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.REPLACE},backFunction:Zn.ALWAYS,backOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.REPLACE},reference:jL.CESIUM_3D_TILE_MASK,mask:jL.CESIUM_3D_TILE_MASK}};var Kt=Object.freeze(jL);function xC(e){e=e??V.EMPTY_OBJECT;let t=e.geometryInstances;this.geometryInstances=t,this.show=e.show??!0,this.classificationType=e.classificationType??Jn.BOTH,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowShadowVolume=e.debugShowShadowVolume??!1,this._debugShowShadowVolume=!1,this._extruded=e._extruded??!1,this._uniformMap=e._uniformMap,this._sp=void 0,this._spStencil=void 0,this._spPick=void 0,this._spColor=void 0,this._spPick2D=void 0,this._spColor2D=void 0,this._rsStencilDepthPass=void 0,this._rsStencilDepthPass3DTiles=void 0,this._rsColorPass=void 0,this._rsPickPass=void 0,this._commandsIgnoreShow=[],this._ready=!1,this._primitive=void 0,this._pickPrimitive=e._pickPrimitive,this._hasSphericalExtentsAttribute=!1,this._hasPlanarExtentsAttributes=!1,this._hasPerColorAttribute=!1,this.appearance=e.appearance,this._createBoundingVolumeFunction=e._createBoundingVolumeFunction,this._updateAndQueueCommandsFunction=e._updateAndQueueCommandsFunction,this._usePickOffsets=!1,this._primitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:e.vertexCacheOptimize??!1,interleave:e.interleave??!1,releaseGeometryInstances:e.releaseGeometryInstances??!0,allowPicking:e.allowPicking??!0,asynchronous:e.asynchronous??!0,compressVertices:e.compressVertices??!0,_createBoundingVolumeFunction:void 0,_createRenderStatesFunction:void 0,_createShaderProgramFunction:void 0,_createCommandsFunction:void 0,_updateAndQueueCommandsFunction:void 0,_createPickOffsets:!0}}Object.defineProperties(xC.prototype,{vertexCacheOptimize:{get:function(){return this._primitiveOptions.vertexCacheOptimize}},interleave:{get:function(){return this._primitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._primitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._primitiveOptions.allowPicking}},asynchronous:{get:function(){return this._primitiveOptions.asynchronous}},compressVertices:{get:function(){return this._primitiveOptions.compressVertices}},ready:{get:function(){return this._ready}},_needs2DShader:{get:function(){return this._hasPlanarExtentsAttributes||this._hasSphericalExtentsAttribute}}});xC.isSupported=function(e){return e.context.stencilBuffer};function EI(e,t){let n=t?Zn.EQUAL:Zn.ALWAYS;return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:e,frontFunction:n,frontOperation:{fail:_t.KEEP,zFail:_t.DECREMENT_WRAP,zPass:_t.KEEP},backFunction:n,backOperation:{fail:_t.KEEP,zFail:_t.INCREMENT_WRAP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Ja.LESS_OR_EQUAL},depthMask:!1}}function m6(e){return{stencilTest:{enabled:e,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:pn.PRE_MULTIPLIED_ALPHA_BLEND}}var dNe={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1};function hNe(e,t,n,i){if(l(e._rsStencilDepthPass))return;let o=!e.debugShowShadowVolume;e._rsStencilDepthPass=Ue.fromCache(EI(o,!1)),e._rsStencilDepthPass3DTiles=Ue.fromCache(EI(o,!0)),e._rsColorPass=Ue.fromCache(m6(o,!1)),e._rsPickPass=Ue.fromCache(dNe)}function mNe(e,t){if(!e.compressVertices)return t;if(t.search(/in\s+vec3\s+extrudeDirection;/g)!==-1){let n="compressedAttributes",i=`in vec2 ${n};`,o=`vec3 extrudeDirection; +`,r=` extrudeDirection = czm_octDecode(${n}, 65535.0); +`,s=t;s=s.replace(/in\s+vec3\s+extrudeDirection;/g,""),s=We.replaceMain(s,"czm_non_compressed_main");let a=`void main() +{ +${r} czm_non_compressed_main(); +}`;return[i,o,s,a].join(` +`)}}function ANe(e,t){let n=t.context,i=e._primitive,o=GL;o=e._primitive._batchTable.getVertexShaderCallback()(o),o=kn._appendDistanceDisplayConditionToShader(i,o),o=kn._modifyShaderPosition(e,o,t.scene3DOnly),o=kn._updateColorAttribute(i,o);let r=e._hasPlanarExtentsAttributes,s=r||e._hasSphericalExtentsAttribute;e._extruded&&(o=mNe(i,o));let a=e._extruded?"EXTRUDED_GEOMETRY":"",c=new We({defines:[a],sources:[o]}),u=new We({sources:[IC]}),f=e._primitive._attributeLocations,h=new xf(s,r,e.appearance);if(e._spStencil=ln.replaceCache({context:n,shaderProgram:e._spStencil,vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:f}),e._primitive.allowPicking){let m=We.createPickVertexShaderSource(o);m=kn._appendShowToShader(i,m),m=kn._updatePickColorAttribute(m);let _=h.createPickFragmentShader(!1),y=h.createPickVertexShader([a],m,!1,t.mapProjection);if(e._spPick=ln.replaceCache({context:n,shaderProgram:e._spPick,vertexShaderSource:y,fragmentShaderSource:_,attributeLocations:f}),s){let C=n.shaderCache.getDerivedShaderProgram(e._spPick,"2dPick");if(!l(C)){let E=h.createPickFragmentShader(!0),I=h.createPickVertexShader([a],m,!0,t.mapProjection);C=n.shaderCache.createDerivedShaderProgram(e._spPick,"2dPick",{vertexShaderSource:I,fragmentShaderSource:E,attributeLocations:f})}e._spPick2D=C}}else e._spPick=ln.fromCache({context:n,vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:f});o=kn._appendShowToShader(i,o),c=new We({defines:[a],sources:[o]}),e._sp=ln.replaceCache({context:n,shaderProgram:e._sp,vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:f});let A=h.createFragmentShader(!1),g=h.createVertexShader([a],o,!1,t.mapProjection);if(e._spColor=ln.replaceCache({context:n,shaderProgram:e._spColor,vertexShaderSource:g,fragmentShaderSource:A,attributeLocations:f}),s){let m=n.shaderCache.getDerivedShaderProgram(e._spColor,"2dColor");if(!l(m)){let _=h.createFragmentShader(!0),y=h.createVertexShader([a],o,!0,t.mapProjection);m=n.shaderCache.createDerivedShaderProgram(e._spColor,"2dColor",{vertexShaderSource:y,fragmentShaderSource:_,attributeLocations:f})}e._spColor2D=m}}function pNe(e,t){let n=e._primitive,i=n._va.length*2;t.length=i;let o,r,s,a=0,c=n._batchTable.getUniformMapCallback()(e._uniformMap),u=e._needs2DShader;for(o=0;o<i;o+=2){let g=n._va[a++];r=t[o],l(r)||(r=t[o]=new nt({owner:e,primitiveType:n._primitiveType})),r.vertexArray=g,r.renderState=e._rsStencilDepthPass,r.shaderProgram=e._sp,r.uniformMap=c,r.pass=Be.TERRAIN_CLASSIFICATION,s=nt.shallowClone(r,r.derivedCommands.tileset),s.renderState=e._rsStencilDepthPass3DTiles,s.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,r.derivedCommands.tileset=s,r=t[o+1],l(r)||(r=t[o+1]=new nt({owner:e,primitiveType:n._primitiveType})),r.vertexArray=g,r.renderState=e._rsColorPass,r.shaderProgram=e._spColor,r.pass=Be.TERRAIN_CLASSIFICATION;let _=e.appearance.material;if(l(_)&&(c=wt(c,_._uniforms)),r.uniformMap=c,s=nt.shallowClone(r,r.derivedCommands.tileset),s.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,r.derivedCommands.tileset=s,u){let y=nt.shallowClone(r,r.derivedCommands.appearance2D);y.shaderProgram=e._spColor2D,r.derivedCommands.appearance2D=y,y=nt.shallowClone(s,s.derivedCommands.appearance2D),y.shaderProgram=e._spColor2D,s.derivedCommands.appearance2D=y}}let f=e._commandsIgnoreShow,h=e._spStencil,A=0;i=f.length=i/2;for(let g=0;g<i;++g){let m=f[g]=nt.shallowClone(t[A],f[g]);m.shaderProgram=h,m.pass=Be.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,A+=2}}function gNe(e,t){let n=e._usePickOffsets,i=e._primitive,o=i._va.length*2,r,s=0,a;n&&(r=i._pickOffsets,o=r.length*2),t.length=o;let c,u,f,h=0,A=i._batchTable.getUniformMapCallback()(e._uniformMap),g=e._needs2DShader;for(c=0;c<o;c+=2){let m=i._va[h++];if(n&&(a=r[s++],m=i._va[a.index]),u=t[c],l(u)||(u=t[c]=new nt({owner:e,primitiveType:i._primitiveType,pickOnly:!0})),u.vertexArray=m,u.renderState=e._rsStencilDepthPass,u.shaderProgram=e._sp,u.uniformMap=A,u.pass=Be.TERRAIN_CLASSIFICATION,n&&(u.offset=a.offset,u.count=a.count),f=nt.shallowClone(u,u.derivedCommands.tileset),f.renderState=e._rsStencilDepthPass3DTiles,f.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,u.derivedCommands.tileset=f,u=t[c+1],l(u)||(u=t[c+1]=new nt({owner:e,primitiveType:i._primitiveType,pickOnly:!0})),u.vertexArray=m,u.renderState=e._rsPickPass,u.shaderProgram=e._spPick,u.uniformMap=A,u.pass=Be.TERRAIN_CLASSIFICATION,n&&(u.offset=a.offset,u.count=a.count),f=nt.shallowClone(u,u.derivedCommands.tileset),f.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,u.derivedCommands.tileset=f,g){let _=nt.shallowClone(u,u.derivedCommands.pick2D);_.shaderProgram=e._spPick2D,u.derivedCommands.pick2D=_,_=nt.shallowClone(f,f.derivedCommands.pick2D),_.shaderProgram=e._spPick2D,f.derivedCommands.pick2D=_}}}function _Ne(e,t,n,i,o,r,s){pNe(e,r),gNe(e,s)}function hie(e,t){return Math.floor(e%t/2)}function h6(e,t,n,i,o,r){e.modelMatrix=n,e.boundingVolume=o,e.cull=i,e.debugShowBoundingVolume=r,t.commandList.push(e)}function mie(e,t,n,i,o){e.modelMatrix=n,e.boundingVolume=o,e.cull=i,t.commandList.push(e)}function yNe(e,t,n,i,o,r,s,a){let c=e._primitive;kn._updateBoundingVolumes(c,t,o);let u;t.mode===ie.SCENE3D?u=c._boundingSphereWC:t.mode===ie.COLUMBUS_VIEW?u=c._boundingSphereCV:t.mode===ie.SCENE2D&&l(c._boundingSphere2D)?u=c._boundingSphere2D:l(c._boundingSphereMorph)&&(u=c._boundingSphereMorph);let f=e.classificationType,h=f!==Jn.CESIUM_3D_TILE,A=f!==Jn.TERRAIN,g=t.passes,m,_,y;if(g.render){let C=n.length;for(m=0;m<C;++m)_=u[hie(m,C)],h&&(y=n[m],h6(y,t,o,r,_,s)),A&&(y=n[m].derivedCommands.tileset,h6(y,t,o,r,_,s));if(t.invertClassification){let E=e._commandsIgnoreShow,I=E.length;for(m=0;m<I;++m)_=u[m],y=E[m],h6(y,t,o,r,_,s)}}if(g.pick){let C=i.length,E=c._pickOffsets;for(m=0;m<C;++m){let I=E[hie(m,C)];_=u[I.index],h&&(y=i[m],mie(y,t,o,r,_)),A&&(y=i[m].derivedCommands.tileset,mie(y,t,o,r,_))}}}xC.prototype.update=function(e){if(!l(this._primitive)&&!l(this.geometryInstances))return;let t=this.appearance;l(t)&&l(t.material)&&t.material.update(e.context);let n=this,i=this._primitiveOptions;if(!l(this._primitive)){let o=Array.isArray(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],r=o.length,s,a,c,u=!1,f=!0,h,A=!1,g=!1;for(r>0&&(c=o[0].attributes,A=xf.hasAttributesForSphericalExtents(c),g=xf.hasAttributesForTextureCoordinatePlanes(c),h=c.color),s=0;s<r;s++){a=o[s];let _=a.attributes.color;l(_)&&(u=!0),f=f&&l(_)&&en.equals(h,_)}if(!f&&!A&&!g)throw new me("All GeometryInstances must have the same color attribute except via GroundPrimitives");u&&!l(t)&&(t=new gn({flat:!0}),this.appearance=t),this._usePickOffsets=!A&&!g,this._hasSphericalExtentsAttribute=A,this._hasPlanarExtentsAttributes=g,this._hasPerColorAttribute=u;let m=new Array(r);for(s=0;s<r;++s)a=o[s],m[s]=new Rt({geometry:a.geometry,attributes:a.attributes,modelMatrix:a.modelMatrix,id:a.id,pickPrimitive:this._pickPrimitive??n});i.appearance=t,i.geometryInstances=m,l(this._createBoundingVolumeFunction)&&(i._createBoundingVolumeFunction=function(_,y){n._createBoundingVolumeFunction(_,y)}),i._createRenderStatesFunction=function(_,y,C,E){hNe(n,y)},i._createShaderProgramFunction=function(_,y,C){ANe(n,y)},i._createCommandsFunction=function(_,y,C,E,I,b,S){_Ne(n,void 0,void 0,!0,!1,b,S)},l(this._updateAndQueueCommandsFunction)?i._updateAndQueueCommandsFunction=function(_,y,C,E,I,b,S,B){n._updateAndQueueCommandsFunction(_,y,C,E,I,b,S,B)}:i._updateAndQueueCommandsFunction=function(_,y,C,E,I,b,S,B){yNe(n,y,C,E,I,b,S,B)},this._primitive=new kn(i)}this.debugShowShadowVolume&&!this._debugShowShadowVolume&&this._ready?(this._debugShowShadowVolume=!0,this._rsStencilDepthPass=Ue.fromCache(EI(!1,!1)),this._rsStencilDepthPass3DTiles=Ue.fromCache(EI(!1,!0)),this._rsColorPass=Ue.fromCache(m6(!1))):!this.debugShowShadowVolume&&this._debugShowShadowVolume&&(this._debugShowShadowVolume=!1,this._rsStencilDepthPass=Ue.fromCache(EI(!0,!1)),this._rsStencilDepthPass3DTiles=Ue.fromCache(EI(!0,!0)),this._rsColorPass=Ue.fromCache(m6(!0))),this._primitive.appearance!==t&&(this._primitive.appearance=t),this._primitive.show=this.show,this._primitive.debugShowBoundingVolume=this.debugShowBoundingVolume,this._primitive.update(e),e.afterRender.push(()=>{l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};xC.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};xC.prototype.isDestroyed=function(){return!1};xC.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._spColor=this._spColor&&this._spColor.destroy(),this._spPick2D=void 0,this._spColor2D=void 0,ue(this)};var dw=xC;var CNe={u_globeMinimumAltitude:function(){return 55e3}};function Nl(e){e=e??V.EMPTY_OBJECT;let t=e.appearance,n=e.geometryInstances;if(!l(t)&&l(n)){let o=Array.isArray(n)?n:[n],r=o.length;for(let s=0;s<r;s++){let a=o[s].attributes;if(l(a)&&l(a.color)){t=new gn({flat:!0});break}}}this.appearance=t,this.geometryInstances=e.geometryInstances,this.show=e.show??!0,this.classificationType=e.classificationType??Jn.BOTH,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowShadowVolume=e.debugShowShadowVolume??!1,this._boundingVolumes=[],this._boundingVolumes2D=[],this._ready=!1,this._primitive=void 0,this._maxHeight=void 0,this._minHeight=void 0,this._maxTerrainHeight=wi._defaultMaxTerrainHeight,this._minTerrainHeight=wi._defaultMinTerrainHeight,this._boundingSpheresKeys=[],this._boundingSpheres=[],this._useFragmentCulling=!1,this._zIndex=void 0;let i=this;this._classificationPrimitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:e.vertexCacheOptimize??!1,interleave:e.interleave??!1,releaseGeometryInstances:e.releaseGeometryInstances??!0,allowPicking:e.allowPicking??!0,asynchronous:e.asynchronous??!0,compressVertices:e.compressVertices??!0,_createBoundingVolumeFunction:void 0,_updateAndQueueCommandsFunction:void 0,_pickPrimitive:i,_extruded:!0,_uniformMap:CNe}}Object.defineProperties(Nl.prototype,{vertexCacheOptimize:{get:function(){return this._classificationPrimitiveOptions.vertexCacheOptimize}},interleave:{get:function(){return this._classificationPrimitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._classificationPrimitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._classificationPrimitiveOptions.allowPicking}},asynchronous:{get:function(){return this._classificationPrimitiveOptions.asynchronous}},compressVertices:{get:function(){return this._classificationPrimitiveOptions.compressVertices}},ready:{get:function(){return this._ready}}});Nl.isSupported=dw.isSupported;function Aie(e){return function(t,n){let i=n.maximumRadius,o=i/Math.cos(t*.5)-i;return e._maxHeight+o}}function pie(e){return function(t,n){return e._minHeight}}var ENe=new d,INe=new d,xNe=new d,bNe=new Ae,TNe=new ae;function YL(e,t){let n=e.mapProjection.ellipsoid;if(!l(t.attributes)||!l(t.attributes.position3DHigh))return l(t.rectangle)?t.rectangle:void 0;let i=t.attributes.position3DHigh.values,o=t.attributes.position3DLow.values,r=i.length,s=Number.POSITIVE_INFINITY,a=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,u=Number.NEGATIVE_INFINITY;for(let h=0;h<r;h+=3){let A=d.unpack(i,h,ENe),g=d.unpack(o,h,INe),m=d.add(A,g,xNe),_=n.cartesianToCartographic(m,bNe),y=_.latitude,C=_.longitude;s=Math.min(s,y),a=Math.min(a,C),c=Math.max(c,y),u=Math.max(u,C)}let f=TNe;return f.north=c,f.south=s,f.east=u,f.west=a,f}function SNe(e,t,n){let i=wi.getMinimumMaximumHeights(t,n);e._minTerrainHeight=i.minimumTerrainHeight,e._maxTerrainHeight=i.maximumTerrainHeight}function wNe(e,t,n){let i=t.mapProjection.ellipsoid,o=YL(t,n),r=Qn.fromRectangle(o,e._minHeight,e._maxHeight,i);if(e._boundingVolumes.push(r),!t.scene3DOnly){let s=t.mapProjection,a=le.fromRectangleWithHeights2D(o,s,e._maxHeight,e._minHeight);d.fromElements(a.center.z,a.center.x,a.center.y,a.center),e._boundingVolumes2D.push(a)}}function A6(e,t){return Math.floor(e%t/2)}function p6(e,t,n,i,o,r,s){let a=e._primitive;n.mode!==ie.SCENE3D&&t.shaderProgram===a._spColor&&a._needs2DShader&&(t=t.derivedCommands.appearance2D),t.owner=e,t.modelMatrix=i,t.boundingVolume=r,t.cull=o,t.debugShowBoundingVolume=s,n.commandList.push(t)}function gie(e,t,n,i,o,r){let s=e._primitive;n.mode!==ie.SCENE3D&&t.shaderProgram===s._spPick&&s._needs2DShader&&(t=t.derivedCommands.pick2D),t.owner=e,t.modelMatrix=i,t.boundingVolume=r,t.cull=o,n.commandList.push(t)}function BNe(e,t,n,i,o,r,s,a){let c;t.mode===ie.SCENE3D?c=e._boundingVolumes:c=e._boundingVolumes2D;let u=e.classificationType,f=u!==Jn.CESIUM_3D_TILE,h=u!==Jn.TERRAIN,A=t.passes,g=e._primitive,m,_,y;if(A.render){let C=n.length;for(m=0;m<C;++m)_=c[A6(m,C)],f&&(y=n[m],p6(e,y,t,o,r,_,s)),h&&(y=n[m].derivedCommands.tileset,p6(e,y,t,o,r,_,s));if(t.invertClassification){let E=g._commandsIgnoreShow,I=E.length;for(m=0;m<I;++m)_=c[m],y=E[m],p6(e,y,t,o,r,_,s)}}if(A.pick){let C=i.length,E;for(e._useFragmentCulling||(E=g._primitive._pickOffsets),m=0;m<C;++m){if(_=c[A6(m,C)],!e._useFragmentCulling){let I=E[A6(m,C)];_=c[I.index]}f&&(y=i[m],gie(e,y,t,o,r,_)),h&&(y=i[m].derivedCommands.tileset,gie(e,y,t,o,r,_))}}}Nl.initializeTerrainHeights=function(){return wi.initialize()};Nl.prototype.update=function(e){if(!l(this._primitive)&&!l(this.geometryInstances))return;if(!wi.initialized){Nl.initializeTerrainHeights();return}let t=this,n=this._classificationPrimitiveOptions;if(!l(this._primitive)){let i=e.mapProjection.ellipsoid,o,r,s,a=Array.isArray(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],c=a.length,u=new Array(c),f,h;for(f=0;f<c;++f){o=a[f],r=o.geometry;let _=YL(e,r);l(h)?l(_)&&ae.union(h,_,h):h=ae.clone(_);let y=o.id;if(l(y)&&l(_)){let C=wi.getBoundingSphere(_,i);this._boundingSpheresKeys.push(y),this._boundingSpheres.push(C)}s=r.constructor,!l(s)||l(s.createShadowVolume)}SNe(this,h,i);let A=e.verticalExaggeration,g=e.verticalExaggerationRelativeHeight;this._minHeight=Yr.getHeight(this._minTerrainHeight,A,g),this._maxHeight=Yr.getHeight(this._maxTerrainHeight,A,g);let m=Nl._supportsMaterials(e.context);if(this._useFragmentCulling=m,m){let _,y=!0;for(f=0;f<c;++f)if(o=a[f],r=o.geometry,h=YL(e,r),xf.shouldUseSphericalCoordinates(h)){y=!1;break}for(f=0;f<c;++f){o=a[f],r=o.geometry,s=r.constructor;let C=YL(e,r),E=r.textureCoordinateRotationPoints;y?_=xf.getPlanarTextureCoordinateAttributes(C,E,i,e.mapProjection,this._maxHeight):_=xf.getSphericalExtentGeometryInstanceAttributes(C,E,i,e.mapProjection);let I=o.attributes;for(let b in I)I.hasOwnProperty(b)&&(_[b]=I[b]);u[f]=new Rt({geometry:s.createShadowVolume(r,pie(this),Aie(this)),attributes:_,id:o.id})}}else for(f=0;f<c;++f)o=a[f],r=o.geometry,s=r.constructor,u[f]=new Rt({geometry:s.createShadowVolume(r,pie(this),Aie(this)),attributes:o.attributes,id:o.id});n.geometryInstances=u,n.appearance=this.appearance,n._createBoundingVolumeFunction=function(_,y){wNe(t,_,y)},n._updateAndQueueCommandsFunction=function(_,y,C,E,I,b,S,B){BNe(t,y,C,E,I,b,S,B)},this._primitive=new dw(n)}this._primitive.appearance=this.appearance,this._primitive.show=this.show,this._primitive.debugShowShadowVolume=this.debugShowShadowVolume,this._primitive.debugShowBoundingVolume=this.debugShowBoundingVolume,this._primitive.update(e),e.afterRender.push(()=>{!this._ready&&l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};Nl.prototype.getBoundingSphere=function(e){let t=this._boundingSpheresKeys.indexOf(e);if(t!==-1)return this._boundingSpheres[t]};Nl.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};Nl.prototype.isDestroyed=function(){return!1};Nl.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};Nl._supportsMaterials=function(e){return e.depthTexture};Nl.supportsMaterials=function(e){return Nl._supportsMaterials(e.frameState.context)};var Ll=Nl;function II(){me.throwInstantiationError()}Object.defineProperties(II.prototype,{isConstant:{get:me.throwInstantiationError},definitionChanged:{get:me.throwInstantiationError}});II.prototype.getType=me.throwInstantiationError;II.prototype.getValue=me.throwInstantiationError;II.prototype.equals=me.throwInstantiationError;var DNe=new K;II.getValue=function(e,t,n){let i;return l(e)||(e=K.now(DNe)),l(t)&&(i=t.getType(e),l(i))?((!l(n)||n.type!==i)&&(n=ao.fromType(i)),t.getValue(e,n.uniforms),n):((!l(n)||n.type!==ao.ColorType)&&(n=ao.fromType(ao.ColorType)),G.clone(G.WHITE,n.uniforms.color),n)};var gr=II;function bC(e,t,n){this._primitives=t,this._orderedGroundPrimitives=n,this._primitive=void 0,this._outlinePrimitive=void 0,this._geometryUpdater=e,this._options=e._options,this._entity=e._entity,this._material=void 0}bC.prototype._isHidden=function(e,t,n){return!e.isShowing||!e.isAvailable(n)||!j.getValueOrDefault(t.show,n,!0)};bC.prototype._setOptions=me.throwInstantiationError;bC.prototype.update=function(e){let t=this._geometryUpdater,n=t._onTerrain,i=this._primitives,o=this._orderedGroundPrimitives;n?o.remove(this._primitive):(i.removeAndDestroy(this._primitive),i.removeAndDestroy(this._outlinePrimitive),this._outlinePrimitive=void 0),this._primitive=void 0;let r=this._entity,s=r[this._geometryUpdater._geometryPropertyName];if(this._setOptions(r,s,e),this._isHidden(r,s,e))return;let a=this._geometryUpdater.shadowsProperty.getValue(e),c=this._options;if(!l(s.fill)||s.fill.getValue(e)){let u=t.fillMaterialProperty,f=u instanceof Jt,h,A=t._getIsClosed(c);if(f)h=new gn({closed:A,flat:n&&!t._supportsMaterialsforEntitiesOnTerrain});else{let g=gr.getValue(e,u,this._material);this._material=g,h=new Io({material:g,translucent:g.isTranslucent(),closed:A})}if(n)c.vertexFormat=gn.VERTEX_FORMAT,this._primitive=o.add(new Ll({geometryInstances:this._geometryUpdater.createFillGeometryInstance(e),appearance:h,asynchronous:!1,shadows:a,classificationType:this._geometryUpdater.classificationTypeProperty.getValue(e)}),j.getValueOrUndefined(this._geometryUpdater.zIndex,e));else{c.vertexFormat=h.vertexFormat;let g=this._geometryUpdater.createFillGeometryInstance(e);f&&(h.translucent=g.attributes.color.value[3]!==255),this._primitive=i.add(new kn({geometryInstances:g,appearance:h,asynchronous:!1,shadows:a}))}}if(!n&&l(s.outline)&&s.outline.getValue(e)){let u=this._geometryUpdater.createOutlineGeometryInstance(e),f=j.getValueOrDefault(s.outlineWidth,e,1);this._outlinePrimitive=i.add(new kn({geometryInstances:u,appearance:new gn({flat:!0,translucent:u.attributes.color.value[3]!==255,renderState:{lineWidth:t._scene.clampLineWidth(f)}}),asynchronous:!1,shadows:a}))}};bC.prototype.getBoundingSphere=function(e){let t=this._entity,n=this._primitive,i=this._outlinePrimitive,o;return l(n)&&n.show&&n.ready&&(o=n.getGeometryInstanceAttributes(t),l(o)&&l(o.boundingSphere))?(le.clone(o.boundingSphere,e),mt.DONE):l(i)&&i.show&&i.ready&&(o=i.getGeometryInstanceAttributes(t),l(o)&&l(o.boundingSphere))?(le.clone(o.boundingSphere,e),mt.DONE):l(n)&&!n.ready||l(i)&&!i.ready?mt.PENDING:mt.FAILED};bC.prototype.isDestroyed=function(){return!1};bC.prototype.destroy=function(){let e=this._primitives,t=this._orderedGroundPrimitives;this._geometryUpdater._onTerrain?t.remove(this._primitive):e.removeAndDestroy(this._primitive),e.removeAndDestroy(this._outlinePrimitive),ue(this)};var yi=bC;var _ie={};function hw(e,t){l(_ie[e])||(_ie[e]=!0,console.warn(t??e))}hw.geometryOutlines="Entity geometry outlines are unsupported on terrain. Outlines will be disabled. To enable outlines, disable geometry terrain clamping by explicitly setting height to 0.";hw.geometryZIndex="Entity geometry with zIndex are unsupported when height or extrudedHeight are defined. zIndex will be ignored";hw.geometryHeightReference="Entity corridor, ellipse, polygon or rectangle with heightReference must also have a defined height. heightReference will be ignored";hw.geometryExtrudedHeightReference="Entity corridor, ellipse, polygon or rectangle with extrudedHeightReference must also have a defined extrudedHeight. extrudedHeightReference will be ignored";var yt=hw;var vNe={AUTODETECT:0,ENU:1,INERTIAL:2,VELOCITY:3},Tg=Object.freeze(vNe);var PNe={NONE:0,GEODESIC:1,RHUMB:2},un=Object.freeze(PNe);var yie=D.EPSILON10;function RNe(e,t,n,i){if(!l(e))return;n=n??!1;let o=l(i),r=e.length;if(r<2)return e;let s,a=e[0],c,u,f=0,h=-1;for(s=1;s<r;++s)c=e[s],t(a,c,yie)?(l(u)||(u=e.slice(0,s),f=s-1,h=0),o&&i.push(s)):(l(u)&&(u.push(c),f=s,o&&(h=i.length)),a=c);return n&&t(e[0],e[r-1],yie)&&(o&&(l(u)?i.splice(h,0,f):i.push(r-1)),l(u)?u.length-=1:u=e.slice(0,-1)),l(u)?u:e}var No=RNe;function MNe(e){let t=e._uSquared,n=e._ellipsoid.maximumRadius,i=e._ellipsoid.minimumRadius,o=(n-i)/n,r=Math.cos(e._startHeading),s=Math.sin(e._startHeading),a=(1-o)*Math.tan(e._start.latitude),c=1/Math.sqrt(1+a*a),u=c*a,f=Math.atan2(a,r),h=c*s,A=h*h,g=1-A,m=Math.sqrt(g),_=t/4,y=_*_,C=y*_,E=y*y,I=1+_-3*y/4+5*C/4-175*E/64,b=1-_+15*y/8-35*C/8,S=1-3*_+35*y/4,B=1-5*_,v=I*f-b*Math.sin(2*f)*_/2-S*Math.sin(4*f)*y/16-B*Math.sin(6*f)*C/48-Math.sin(8*f)*5*E/512,P=e._constants;P.a=n,P.b=i,P.f=o,P.cosineHeading=r,P.sineHeading=s,P.tanU=a,P.cosineU=c,P.sineU=u,P.sigma=f,P.sineAlpha=h,P.sineSquaredAlpha=A,P.cosineSquaredAlpha=g,P.cosineAlpha=m,P.u2Over4=_,P.u4Over16=y,P.u6Over64=C,P.u8Over256=E,P.a0=I,P.a1=b,P.a2=S,P.a3=B,P.distanceRatio=v}function NNe(e,t){return e*t*(4+e*(4-3*t))/16}function Cie(e,t,n,i,o,r,s){let a=NNe(e,n);return(1-a)*e*t*(i+a*o*(s+a*r*(2*s*s-1)))}function LNe(e,t,n,i,o,r,s){let a=(t-n)/t,c=r-i,u=Math.atan((1-a)*Math.tan(o)),f=Math.atan((1-a)*Math.tan(s)),h=Math.cos(u),A=Math.sin(u),g=Math.cos(f),m=Math.sin(f),_=h*g,y=h*m,C=A*m,E=A*g,I=c,b=D.TWO_PI,S=Math.cos(I),B=Math.sin(I),v,P,N,L,p;do{S=Math.cos(I),B=Math.sin(I);let F=y-E*S;N=Math.sqrt(g*g*B*B+F*F),P=C+_*S,v=Math.atan2(N,P);let H;N===0?(H=0,L=1):(H=_*B/N,L=1-H*H),b=I,p=P-2*C/L,isFinite(p)||(p=0),I=c+Cie(a,H,L,v,N,P,p)}while(Math.abs(I-b)>D.EPSILON12);let x=L*(t*t-n*n)/(n*n),T=1+x*(4096+x*(x*(320-175*x)-768))/16384,w=x*(256+x*(x*(74-47*x)-128))/1024,M=p*p,O=w*N*(p+w*(P*(2*M-1)-w*p*(4*N*N-3)*(4*M-3)/6)/4),U=n*T*(v-O),Q=Math.atan2(g*B,y-E*S),z=Math.atan2(h*B,y*S-E);e._distance=U,e._startHeading=Q,e._endHeading=z,e._uSquared=x}var ONe=new d,g6=new d;function Eie(e,t,n,i){let o=d.normalize(i.cartographicToCartesian(t,g6),ONe),r=d.normalize(i.cartographicToCartesian(n,g6),g6);LNe(e,i.maximumRadius,i.minimumRadius,t.longitude,t.latitude,n.longitude,n.latitude),e._start=Ae.clone(t,e._start),e._end=Ae.clone(n,e._end),e._start.height=0,e._end.height=0,MNe(e)}function mw(e,t,n){let i=n??te.default;this._ellipsoid=i,this._start=new Ae,this._end=new Ae,this._constants={},this._startHeading=void 0,this._endHeading=void 0,this._distance=void 0,this._uSquared=void 0,l(e)&&l(t)&&Eie(this,e,t,i)}Object.defineProperties(mw.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},startHeading:{get:function(){return this._startHeading}},endHeading:{get:function(){return this._endHeading}}});mw.prototype.setEndPoints=function(e,t){Eie(this,e,t,this._ellipsoid)};mw.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(this._distance*e,t)};mw.prototype.interpolateUsingSurfaceDistance=function(e,t){let n=this._constants,i=n.distanceRatio+e/n.b,o=Math.cos(2*i),r=Math.cos(4*i),s=Math.cos(6*i),a=Math.sin(2*i),c=Math.sin(4*i),u=Math.sin(6*i),f=Math.sin(8*i),h=i*i,A=i*h,g=n.u8Over256,m=n.u2Over4,_=n.u6Over64,y=n.u4Over16,C=2*A*g*o/3+i*(1-m+7*y/4-15*_/4+579*g/64-(y-15*_/4+187*g/16)*o-(5*_/4-115*g/16)*r-29*g*s/16)+(m/2-y+71*_/32-85*g/16)*a+(5*y/16-5*_/4+383*g/96)*c-h*((_-11*g/2)*a+5*g*c/2)+(29*_/96-29*g/16)*u+539*g*f/1536,E=Math.asin(Math.sin(C)*n.cosineAlpha),I=Math.atan(n.a/n.b*Math.tan(E));C=C-n.sigma;let b=Math.cos(2*n.sigma+C),S=Math.sin(C),B=Math.cos(C),v=n.cosineU*B,P=n.sineU*S,L=Math.atan2(S*n.sineHeading,v-P*n.cosineHeading)-Cie(n.f,n.sineAlpha,n.cosineSquaredAlpha,C,S,B,b);return l(t)?(t.longitude=this._start.longitude+L,t.latitude=I,t.height=0,t):new Ae(this._start.longitude+L,I,0)};var Sg=mw;function y6(e,t,n){if(e===0)return t*n;let i=e*e,o=i*i,r=o*i,s=r*i,a=s*i,c=a*i,u=n,f=Math.sin(2*u),h=Math.sin(4*u),A=Math.sin(6*u),g=Math.sin(8*u),m=Math.sin(10*u),_=Math.sin(12*u);return t*((1-i/4-3*o/64-5*r/256-175*s/16384-441*a/65536-4851*c/1048576)*u-(3*i/8+3*o/32+45*r/1024+105*s/4096+2205*a/131072+6237*c/524288)*f+(15*o/256+45*r/1024+525*s/16384+1575*a/65536+155925*c/8388608)*h-(35*r/3072+175*s/12288+3675*a/262144+13475*c/1048576)*A+(315*s/131072+2205*a/524288+43659*c/8388608)*g-(693*a/1310720+6237*c/5242880)*m+1001*c/8388608*_)}function FNe(e,t,n){let i=e/n;if(t===0)return i;let o=i*i,r=o*i,s=r*i,a=t,c=a*a,u=c*c,f=u*c,h=f*c,A=h*c,g=A*c,m=Math.sin(2*i),_=Math.cos(2*i),y=Math.sin(4*i),C=Math.cos(4*i),E=Math.sin(6*i),I=Math.cos(6*i),b=Math.sin(8*i),S=Math.cos(8*i),B=Math.sin(10*i),v=Math.cos(10*i),P=Math.sin(12*i);return i+i*c/4+7*i*u/64+15*i*f/256+579*i*h/16384+1515*i*A/65536+16837*i*g/1048576+(3*i*u/16+45*i*f/256-i*(32*o-561)*h/4096-i*(232*o-1677)*A/16384+i*(399985-90560*o+512*s)*g/5242880)*_+(21*i*f/256+483*i*h/4096-i*(224*o-1969)*A/16384-i*(33152*o-112599)*g/1048576)*C+(151*i*h/4096+4681*i*A/65536+1479*i*g/16384-453*r*g/32768)*I+(1097*i*A/65536+42783*i*g/1048576)*S+8011*i*g/1048576*v+(3*c/8+3*u/16+213*f/2048-3*o*f/64+255*h/4096-33*o*h/512+20861*A/524288-33*o*A/512+s*A/1024+28273*g/1048576-471*o*g/8192+9*s*g/4096)*m+(21*u/256+21*f/256+533*h/8192-21*o*h/512+197*A/4096-315*o*A/4096+584039*g/16777216-12517*o*g/131072+7*s*g/2048)*y+(151*f/6144+151*h/4096+5019*A/131072-453*o*A/16384+26965*g/786432-8607*o*g/131072)*E+(1097*h/131072+1097*A/65536+225797*g/10485760-1097*o*g/65536)*b+(8011*A/2621440+8011*g/1048576)*B+293393*g/251658240*P}function xI(e,t){if(e===0)return Math.log(Math.tan(.5*(D.PI_OVER_TWO+t)));let n=e*Math.sin(t);return Math.log(Math.tan(.5*(D.PI_OVER_TWO+t)))-e/2*Math.log((1+n)/(1-n))}function QNe(e,t,n,i,o){let r=xI(e._ellipticity,n),s=xI(e._ellipticity,o);return Math.atan2(D.negativePiToPi(i-t),s-r)}function kNe(e,t,n,i,o,r,s){let a=e._heading,c=r-i,u=0;if(D.equalsEpsilon(Math.abs(a),D.PI_OVER_TWO,D.EPSILON8))if(t===n)u=t*Math.cos(o)*D.negativePiToPi(c);else{let f=Math.sin(o);u=t*Math.cos(o)*D.negativePiToPi(c)/Math.sqrt(1-e._ellipticitySquared*f*f)}else{let f=y6(e._ellipticity,t,o);u=(y6(e._ellipticity,t,s)-f)/Math.cos(a)}return Math.abs(u)}var UNe=new d,_6=new d;function Iie(e,t,n,i){let o=d.normalize(i.cartographicToCartesian(t,_6),UNe),r=d.normalize(i.cartographicToCartesian(n,_6),_6),s=i.maximumRadius,a=i.minimumRadius,c=s*s,u=a*a;e._ellipticitySquared=(c-u)/c,e._ellipticity=Math.sqrt(e._ellipticitySquared),e._start=Ae.clone(t,e._start),e._start.height=0,e._end=Ae.clone(n,e._end),e._end.height=0,e._heading=QNe(e,t.longitude,t.latitude,n.longitude,n.latitude),e._distance=kNe(e,i.maximumRadius,i.minimumRadius,t.longitude,t.latitude,n.longitude,n.latitude)}function xie(e,t,n,i,o,r){if(n===0)return Ae.clone(e,r);let s=o*o,a,c,u;if(Math.abs(D.PI_OVER_TWO-Math.abs(t))>D.EPSILON8){let f=y6(o,i,e.latitude),h=n*Math.cos(t),A=f+h;if(c=FNe(A,o,i),Math.abs(t)<D.EPSILON10)a=D.negativePiToPi(e.longitude);else{let g=xI(o,e.latitude),m=xI(o,c);u=Math.tan(t)*(m-g),a=D.negativePiToPi(e.longitude+u)}}else{c=e.latitude;let f;if(o===0)f=i*Math.cos(e.latitude);else{let h=Math.sin(e.latitude);f=i*Math.cos(e.latitude)/Math.sqrt(1-s*h*h)}u=n/f,t>0?a=D.negativePiToPi(e.longitude+u):a=D.negativePiToPi(e.longitude-u)}return l(r)?(r.longitude=a,r.latitude=c,r.height=0,r):new Ae(a,c,0)}function zA(e,t,n){let i=n??te.default;this._ellipsoid=i,this._start=new Ae,this._end=new Ae,this._heading=void 0,this._distance=void 0,this._ellipticity=void 0,this._ellipticitySquared=void 0,l(e)&&l(t)&&Iie(this,e,t,i)}Object.defineProperties(zA.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},surfaceDistance:{get:function(){return this._distance}},start:{get:function(){return this._start}},end:{get:function(){return this._end}},heading:{get:function(){return this._heading}}});zA.fromStartHeadingDistance=function(e,t,n,i,o){let r=i??te.default,s=r.maximumRadius,a=r.minimumRadius,c=s*s,u=a*a,f=Math.sqrt((c-u)/c);t=D.negativePiToPi(t);let h=xie(e,t,n,r.maximumRadius,f);return!l(o)||l(i)&&!i.equals(o.ellipsoid)?new zA(e,h,r):(o.setEndPoints(e,h),o)};zA.prototype.setEndPoints=function(e,t){Iie(this,e,t,this._ellipsoid)};zA.prototype.interpolateUsingFraction=function(e,t){return this.interpolateUsingSurfaceDistance(e*this._distance,t)};zA.prototype.interpolateUsingSurfaceDistance=function(e,t){return xie(this._start,this._heading,e,this._ellipsoid.maximumRadius,this._ellipticity,t)};zA.prototype.findIntersectionWithLongitude=function(e,t){let n=this._ellipticity,i=this._heading,o=Math.abs(i),r=this._start;if(e=D.negativePiToPi(e),D.equalsEpsilon(Math.abs(e),Math.PI,D.EPSILON14)&&(e=D.sign(r.longitude)*Math.PI),l(t)||(t=new Ae),Math.abs(D.PI_OVER_TWO-o)<=D.EPSILON8)return t.longitude=e,t.latitude=r.latitude,t.height=0,t;if(D.equalsEpsilon(Math.abs(D.PI_OVER_TWO-o),D.PI_OVER_TWO,D.EPSILON8))return D.equalsEpsilon(e,r.longitude,D.EPSILON12)?void 0:(t.longitude=e,t.latitude=D.PI_OVER_TWO*D.sign(D.PI_OVER_TWO-i),t.height=0,t);let s=r.latitude,a=n*Math.sin(s),c=Math.tan(.5*(D.PI_OVER_TWO+s))*Math.exp((e-r.longitude)/Math.tan(i)),u=(1+a)/(1-a),f=r.latitude,h;do{h=f;let A=n*Math.sin(h),g=(1+A)/(1-A);f=2*Math.atan(c*Math.pow(g/u,n/2))-D.PI_OVER_TWO}while(!D.equalsEpsilon(f,h,D.EPSILON12));return t.longitude=e,t.latitude=f,t.height=0,t};zA.prototype.findIntersectionWithLatitude=function(e,t){let n=this._ellipticity,i=this._heading,o=this._start;if(D.equalsEpsilon(Math.abs(i),D.PI_OVER_TWO,D.EPSILON8))return;let r=xI(n,o.latitude),s=xI(n,e),a=Math.tan(i)*(s-r),c=D.negativePiToPi(o.longitude+a);return l(t)?(t.longitude=c,t.latitude=e,t.height=0,t):new Ae(c,e,0)};var Ic=zA;var w6=[Hi,Yi],GNe=w6.length,Vie=Math.cos(D.toRadians(30)),bie=Math.cos(D.toRadians(150)),Hie=0,Wie=1e3;function Bg(e){e=e??V.EMPTY_OBJECT;let t=e.positions;this.width=e.width??1,this._positions=t,this.granularity=e.granularity??9999,this.loop=e.loop??!1,this.arcType=e.arcType??un.GEODESIC,this._ellipsoid=te.default,this._projectionIndex=0,this._workerName="createGroundPolylineGeometry",this._scene3DOnly=!1}Object.defineProperties(Bg.prototype,{packedLength:{get:function(){return 1+this._positions.length*3+1+1+1+te.packedLength+1+1}}});Bg.setProjectionAndEllipsoid=function(e,t){let n=0;for(let i=0;i<GNe;i++)if(t instanceof w6[i]){n=i;break}e._projectionIndex=n,e._ellipsoid=t.ellipsoid};var zNe=new d,Tie=new d,Sie=new d;function S6(e,t,n,i,o){let r=Zc(i,e,0,zNe),s=Zc(i,e,n,Tie),a=Zc(i,t,0,Sie),c=VA(s,r,Tie),u=VA(a,r,Sie);return d.cross(u,c,o),d.normalize(o,o)}var VNe=new Ae,HNe=new d,WNe=new d,jNe=new d;function C6(e,t,n,i,o,r,s,a,c,u,f){if(o===0)return;let h;r===un.GEODESIC?h=new Sg(e,t,s):r===un.RHUMB&&(h=new Ic(e,t,s));let A=h.surfaceDistance;if(A<o)return;let g=S6(e,t,i,s,jNe),m=Math.ceil(A/o),_=A/m,y=_,C=m-1,E=a.length;for(let I=0;I<C;I++){let b=h.interpolateUsingSurfaceDistance(y,VNe),S=Zc(s,b,n,HNe),B=Zc(s,b,i,WNe);d.pack(g,a,E),d.pack(S,c,E),d.pack(B,u,E),f.push(b.latitude),f.push(b.longitude),E+=3,y+=_}}var E6=new Ae;function Zc(e,t,n,i){return Ae.clone(t,E6),E6.height=n,Ae.toCartesian(E6,e,i)}Bg.pack=function(e,t,n){let i=n??0,o=e._positions,r=o.length;t[i++]=r;for(let s=0;s<r;++s){let a=o[s];d.pack(a,t,i),i+=3}return t[i++]=e.granularity,t[i++]=e.loop?1:0,t[i++]=e.arcType,te.pack(e._ellipsoid,t,i),i+=te.packedLength,t[i++]=e._projectionIndex,t[i++]=e._scene3DOnly?1:0,t};Bg.unpack=function(e,t,n){let i=t??0,o=e[i++],r=new Array(o);for(let A=0;A<o;A++)r[A]=d.unpack(e,i),i+=3;let s=e[i++],a=e[i++]===1,c=e[i++],u=te.unpack(e,i);i+=te.packedLength;let f=e[i++],h=e[i++]===1;return l(n)||(n=new Bg({positions:r})),n._positions=r,n.granularity=s,n.loop=a,n.arcType=c,n._ellipsoid=u,n._projectionIndex=f,n._scene3DOnly=h,n};function VA(e,t,n){return d.subtract(e,t,n),d.normalize(n,n),n}function wie(e,t,n,i){return i=VA(e,t,i),i=d.cross(i,n,i),i=d.normalize(i,i),i=d.cross(n,i,i),i}var YNe=new d,qNe=new d,KNe=new d,jie=new d,XNe=0,JNe=-1;function I6(e,t,n,i,o){let r=VA(n,t,jie),s=wie(e,t,r,YNe),a=wie(i,t,r,qNe);if(D.equalsEpsilon(d.dot(s,a),JNe,D.EPSILON5))return o=d.cross(r,s,o),o=d.normalize(o,o),o;o=d.add(a,s,o),o=d.normalize(o,o);let c=d.cross(r,o,KNe);return d.dot(a,c)<XNe&&(o=d.negate(o,o)),o}var JL=mn.fromPointNormal(d.ZERO,d.UNIT_Y),ZNe=new d,$Ne=new d,eLe=new d,tLe=new d,nLe=new d,qL=new d,KL=new Ae,Bie=new Ae,Die=new Ae;Bg.createGeometry=function(e){let t=!e._scene3DOnly,n=e.loop,i=e._ellipsoid,o=e.granularity,r=e.arcType,s=new w6[e._projectionIndex](i),a=Hie,c=Wie,u,f,h=e._positions,A=h.length;A===2&&(n=!1);let g,m,_,y,C=new Ic(void 0,void 0,i),E,I,b,S=[h[0]];for(f=0;f<A-1;f++)g=h[f],m=h[f+1],E=Ai.lineSegmentPlane(g,m,JL,qL),l(E)&&!d.equalsEpsilon(E,g,D.EPSILON7)&&!d.equalsEpsilon(E,m,D.EPSILON7)&&(e.arcType===un.GEODESIC?S.push(d.clone(E)):e.arcType===un.RHUMB&&(b=i.cartesianToCartographic(E,KL).longitude,_=i.cartesianToCartographic(g,KL),y=i.cartesianToCartographic(m,Bie),C.setEndPoints(_,y),I=C.findIntersectionWithLongitude(b,Die),E=i.cartographicToCartesian(I,qL),l(E)&&!d.equalsEpsilon(E,g,D.EPSILON7)&&!d.equalsEpsilon(E,m,D.EPSILON7)&&S.push(d.clone(E)))),S.push(m);n&&(g=h[A-1],m=h[0],E=Ai.lineSegmentPlane(g,m,JL,qL),l(E)&&!d.equalsEpsilon(E,g,D.EPSILON7)&&!d.equalsEpsilon(E,m,D.EPSILON7)&&(e.arcType===un.GEODESIC?S.push(d.clone(E)):e.arcType===un.RHUMB&&(b=i.cartesianToCartographic(E,KL).longitude,_=i.cartesianToCartographic(g,KL),y=i.cartesianToCartographic(m,Bie),C.setEndPoints(_,y),I=C.findIntersectionWithLongitude(b,Die),E=i.cartographicToCartesian(I,qL),l(E)&&!d.equalsEpsilon(E,g,D.EPSILON7)&&!d.equalsEpsilon(E,m,D.EPSILON7)&&S.push(d.clone(E)))));let B=S.length,v=new Array(B);for(f=0;f<B;f++){let W=Ae.fromCartesian(S[f],i);W.height=0,v[f]=W}if(v=No(v,Ae.equalsEpsilon),B=v.length,B<2)return;let P=[],N=[],L=[],p=[],x=ZNe,T=$Ne,w=eLe,M=tLe,O=nLe,U=v[0],Q=v[1],z=v[B-1];for(x=Zc(i,z,a,x),M=Zc(i,Q,a,M),T=Zc(i,U,a,T),w=Zc(i,U,c,w),n?O=I6(x,T,w,M,O):O=S6(U,Q,c,i,O),d.pack(O,N,0),d.pack(T,L,0),d.pack(w,p,0),P.push(U.latitude),P.push(U.longitude),C6(U,Q,a,c,o,r,i,N,L,p,P),f=1;f<B-1;++f){x=d.clone(T,x),T=d.clone(M,T);let W=v[f];Zc(i,W,c,w),Zc(i,v[f+1],a,M),I6(x,T,w,M,O),u=N.length,d.pack(O,N,u),d.pack(T,L,u),d.pack(w,p,u),P.push(W.latitude),P.push(W.longitude),C6(v[f],v[f+1],a,c,o,r,i,N,L,p,P)}let F=v[B-1],H=v[B-2];if(T=Zc(i,F,a,T),w=Zc(i,F,c,w),n){let W=v[0];x=Zc(i,H,a,x),M=Zc(i,W,a,M),O=I6(x,T,w,M,O)}else O=S6(H,F,c,i,O);if(u=N.length,d.pack(O,N,u),d.pack(T,L,u),d.pack(w,p,u),P.push(F.latitude),P.push(F.longitude),n){for(C6(F,U,a,c,o,r,i,N,L,p,P),u=N.length,f=0;f<3;++f)N[u+f]=N[f],L[u+f]=L[f],p[u+f]=p[f];P.push(U.latitude),P.push(U.longitude)}return BLe(n,s,L,p,N,P,t)};var iLe=new d,oLe=new J,rLe=new Le;function vie(e,t,n,i){let o=VA(n,t,iLe),r=d.dot(o,e);if(r>Vie||r<bie){let s=VA(i,n,jie),a=r<bie?D.PI_OVER_TWO:-D.PI_OVER_TWO,c=Le.fromAxisAngle(s,a,rLe),u=J.fromQuaternion(c,oLe);return J.multiplyByVector(u,e,e),!0}return!1}var Pie=new Ae,sLe=new d,Rie=new d;function Aw(e,t,n,i,o){let r=Ae.toCartesian(t,e._ellipsoid,sLe),s=d.add(r,n,Rie),a=!1,c=e._ellipsoid,u=c.cartesianToCartographic(s,Pie);Math.abs(t.longitude-u.longitude)>D.PI_OVER_TWO&&(a=!0,s=d.subtract(r,n,Rie),u=c.cartesianToCartographic(s,Pie)),u.height=0;let f=e.project(u,o);return o=d.subtract(f,i,o),o.z=0,o=d.normalize(o,o),a&&d.negate(o,o),o}var aLe=new d,Mie=new d;function Nie(e,t,n,i,o,r){let s=d.subtract(t,e,aLe);d.normalize(s,s);let a=n-Hie,c=d.multiplyByScalar(s,a,Mie);d.add(e,c,o);let u=i-Wie;c=d.multiplyByScalar(s,u,Mie),d.add(t,c,r)}var cLe=new d;function XL(e,t){let n=mn.getPointDistance(JL,e),i=mn.getPointDistance(JL,t),o=cLe;D.equalsEpsilon(n,0,D.EPSILON2)?(o=VA(t,e,o),d.multiplyByScalar(o,D.EPSILON2,o),d.add(e,o,e)):D.equalsEpsilon(i,0,D.EPSILON2)&&(o=VA(e,t,o),d.multiplyByScalar(o,D.EPSILON2,o),d.add(t,o,t))}function lLe(e,t){let n=Math.abs(e.longitude),i=Math.abs(t.longitude);if(D.equalsEpsilon(n,D.PI,D.EPSILON11)){let o=D.sign(t.longitude);return e.longitude=o*(n-D.EPSILON11),1}else if(D.equalsEpsilon(i,D.PI,D.EPSILON11)){let o=D.sign(e.longitude);return t.longitude=o*(i-D.EPSILON11),2}return 0}var Yie=new Ae,qie=new Ae,Lie=new d,x6=new d,Oie=new d,Fie=new d,uLe=new d,Qie=new d,fLe=[Yie,qie],dLe=new ae,hLe=new d,mLe=new d,ALe=new d,pLe=new d,gLe=new d,_Le=new d,b6=new d,T6=new d,yLe=new d,CLe=new d,ELe=new d,kie=new d,ILe=new d,xLe=new d,bLe=new ei,TLe=new ei,Uie=new d,SLe=new d,Gie=new d,wLe=[new le,new le],Kie=[0,2,1,0,3,2,0,7,3,0,4,7,0,5,4,0,1,5,5,7,4,5,6,7,5,2,6,5,1,2,3,6,2,3,7,6],zie=Kie.length;function BLe(e,t,n,i,o,r,s){let a,c,u=t._ellipsoid,f=n.length/3-1,h=f*8,A=h*4,g=f*36,m=h>65535?new Uint32Array(g):new Uint16Array(g),_=new Float64Array(h*3),y=new Float32Array(A),C=new Float32Array(A),E=new Float32Array(A),I=new Float32Array(A),b=new Float32Array(A),S,B,v,P;s&&(S=new Float32Array(A),B=new Float32Array(A),v=new Float32Array(A),P=new Float32Array(h*2));let N=r.length/2,L=0,p=Yie;p.height=0;let x=qie;x.height=0;let T=Lie,w=x6;if(s)for(c=0,a=1;a<N;a++)p.latitude=r[c],p.longitude=r[c+1],x.latitude=r[c+2],x.longitude=r[c+3],T=t.project(p,T),w=t.project(x,w),L+=d.distance(T,w),c+=2;let M=i.length/3;w=d.unpack(i,0,w);let O=0;for(c=3,a=1;a<M;a++)T=d.clone(w,T),w=d.unpack(i,c,w),O+=d.distance(T,w),c+=3;let U;c=3;let Q=0,z=0,F=0,H=0,W=!1,Z=d.unpack(n,0,Fie),Y=d.unpack(i,0,x6),$=d.unpack(o,0,Qie);if(e){let Te=d.unpack(n,n.length-6,Oie);vie($,Te,Z,Y)&&($=d.negate($,$))}let X=0,he=0,ge=0;for(a=0;a<f;a++){let Te=d.clone(Z,Oie),ke=d.clone(Y,Lie),Ge=d.clone($,uLe);W&&(Ge=d.negate(Ge,Ge)),Z=d.unpack(n,c,Fie),Y=d.unpack(i,c,x6),$=d.unpack(o,c,Qie),W=vie($,Te,Z,Y),p.latitude=r[Q],p.longitude=r[Q+1],x.latitude=r[Q+2],x.longitude=r[Q+3];let qe,tt,$t,it;if(s){let _i=lLe(p,x);qe=t.project(p,gLe),tt=t.project(x,_Le);let _s=VA(tt,qe,Uie);_s.y=Math.abs(_s.y),$t=b6,it=T6,_i===0||d.dot(_s,d.UNIT_Y)>Vie?($t=Aw(t,p,Ge,qe,b6),it=Aw(t,x,$,tt,T6)):_i===1?(it=Aw(t,x,$,tt,T6),$t.x=0,$t.y=D.sign(p.longitude-Math.abs(x.longitude)),$t.z=0):($t=Aw(t,p,Ge,qe,b6),it.x=0,it.y=D.sign(p.longitude-x.longitude),it.z=0)}let tn=d.distance(ke,Y),Wt=ei.fromCartesian(Te,bLe),vt=d.subtract(Z,Te,yLe),bi=d.normalize(vt,kie),di=d.subtract(ke,Te,CLe);di=d.normalize(di,di);let Ot=d.cross(bi,di,kie);Ot=d.normalize(Ot,Ot);let Tt=d.cross(di,Ge,ILe);Tt=d.normalize(Tt,Tt);let ii=d.subtract(Y,Z,ELe);ii=d.normalize(ii,ii);let Ct=d.cross($,ii,xLe);Ct=d.normalize(Ct,Ct);let Ro=tn/O,Qo=X/O,ya=0,mr,Tr,Oe,lt=0,Ke=0;if(s){ya=d.distance(qe,tt),mr=ei.fromCartesian(qe,TLe),Tr=d.subtract(tt,qe,Uie),Oe=d.normalize(Tr,SLe);let _i=Oe.x;Oe.x=Oe.y,Oe.y=-_i,lt=ya/L,Ke=he/L}for(U=0;U<8;U++){let _i=H+U*4,_s=z+U*2,Wo=_i+3,Ca=U<4?1:-1,uo=U===2||U===3||U===6||U===7?1:-1;d.pack(Wt.high,y,_i),y[Wo]=vt.x,d.pack(Wt.low,C,_i),C[Wo]=vt.y,d.pack(Tt,E,_i),E[Wo]=vt.z,d.pack(Ct,I,_i),I[Wo]=Ro*Ca,d.pack(Ot,b,_i);let jo=Qo*uo;jo===0&&uo<0&&(jo=9),b[Wo]=jo,s&&(S[_i]=mr.high.x,S[_i+1]=mr.high.y,S[_i+2]=mr.low.x,S[_i+3]=mr.low.y,v[_i]=-$t.y,v[_i+1]=$t.x,v[_i+2]=it.y,v[_i+3]=-it.x,B[_i]=Tr.x,B[_i+1]=Tr.y,B[_i+2]=Oe.x,B[_i+3]=Oe.y,P[_s]=lt*Ca,jo=Ke*uo,jo===0&&uo<0&&(jo=9),P[_s+1]=jo)}let $e=ALe,pt=pLe,Xt=hLe,xn=mLe,lo=ae.fromCartographicArray(fLe,dLe),ro=wi.getMinimumMaximumHeights(lo,u),$s=ro.minimumTerrainHeight,ea=ro.maximumTerrainHeight;ge+=Math.abs($s),ge+=Math.abs(ea),Nie(Te,ke,$s,ea,$e,Xt),Nie(Z,Y,$s,ea,pt,xn);let Vn=d.multiplyByScalar(Ot,D.EPSILON5,Gie);d.add($e,Vn,$e),d.add(pt,Vn,pt),d.add(Xt,Vn,Xt),d.add(xn,Vn,xn),XL($e,pt),XL(Xt,xn),d.pack($e,_,F),d.pack(pt,_,F+3),d.pack(xn,_,F+6),d.pack(Xt,_,F+9),Vn=d.multiplyByScalar(Ot,-2*D.EPSILON5,Gie),d.add($e,Vn,$e),d.add(pt,Vn,pt),d.add(Xt,Vn,Xt),d.add(xn,Vn,xn),XL($e,pt),XL(Xt,xn),d.pack($e,_,F+12),d.pack(pt,_,F+15),d.pack(xn,_,F+18),d.pack(Xt,_,F+21),Q+=2,c+=3,z+=16,F+=24,H+=32,X+=tn,he+=ya}c=0;let fe=0;for(a=0;a<f;a++){for(U=0;U<zie;U++)m[c+U]=Kie[U]+fe;fe+=8,c+=zie}let ye=wLe;le.fromVertices(n,d.ZERO,3,ye[0]),le.fromVertices(i,d.ZERO,3,ye[1]);let Ie=le.fromBoundingSpheres(ye);Ie.radius+=ge/(f*2);let ve={position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,normalize:!1,values:_}),startHiAndForwardOffsetX:wg(y),startLoAndForwardOffsetY:wg(C),startNormalAndForwardOffsetZ:wg(E),endNormalAndTextureCoordinateNormalizationX:wg(I),rightNormalAndTextureCoordinateNormalizationY:wg(b)};return s&&(ve.startHiLo2D=wg(S),ve.offsetAndRight2D=wg(B),ve.startEndNormals2D=wg(v),ve.texcoordNormalization2D=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,normalize:!1,values:P})),new ht({attributes:ve,indices:m,boundingSphere:Ie})}function wg(e){return new De({componentDatatype:q.FLOAT,componentsPerAttribute:4,normalize:!1,values:e})}Bg._projectNormal=Aw;var bI=Bg;var ZL=`in vec4 v_startPlaneNormalEcAndHalfWidth; +in vec4 v_endPlaneNormalEcAndBatchId; +in vec4 v_rightPlaneEC; // Technically can compute distance for this here +in vec4 v_endEcAndStartEcX; +in vec4 v_texcoordNormalizationAndStartEcYZ; + +#ifdef PER_INSTANCE_COLOR +in vec4 v_color; +#endif + +void main(void) +{ + float logDepthOrDepth = czm_branchFreeTernary(czm_sceneMode == czm_sceneMode2D, gl_FragCoord.z, czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw))); + vec3 ecStart = vec3(v_endEcAndStartEcX.w, v_texcoordNormalizationAndStartEcYZ.zw); + + // Discard for sky + if (logDepthOrDepth == 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(1.0, 0.0, 0.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + eyeCoordinate /= eyeCoordinate.w; + + float halfMaxWidth = v_startPlaneNormalEcAndHalfWidth.w * czm_metersPerPixel(eyeCoordinate); + // Check distance of the eye coordinate against the right-facing plane + float widthwiseDistance = czm_planeDistance(v_rightPlaneEC, eyeCoordinate.xyz); + + // Check eye coordinate against the mitering planes + float distanceFromStart = czm_planeDistance(v_startPlaneNormalEcAndHalfWidth.xyz, -dot(ecStart, v_startPlaneNormalEcAndHalfWidth.xyz), eyeCoordinate.xyz); + float distanceFromEnd = czm_planeDistance(v_endPlaneNormalEcAndBatchId.xyz, -dot(v_endEcAndStartEcX.xyz, v_endPlaneNormalEcAndBatchId.xyz), eyeCoordinate.xyz); + + if (abs(widthwiseDistance) > halfMaxWidth || distanceFromStart < 0.0 || distanceFromEnd < 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(1.0, 0.0, 0.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + + // Check distance of the eye coordinate against start and end planes with normals in the right plane. + // For computing unskewed lengthwise texture coordinate. + // Can also be used for clipping extremely pointy miters, but in practice unnecessary because of miter breaking. + + // aligned plane: cross the right plane normal with miter plane normal, then cross the result with right again to point it more "forward" + vec3 alignedPlaneNormal; + + // start aligned plane + alignedPlaneNormal = cross(v_rightPlaneEC.xyz, v_startPlaneNormalEcAndHalfWidth.xyz); + alignedPlaneNormal = normalize(cross(alignedPlaneNormal, v_rightPlaneEC.xyz)); + distanceFromStart = czm_planeDistance(alignedPlaneNormal, -dot(alignedPlaneNormal, ecStart), eyeCoordinate.xyz); + + // end aligned plane + alignedPlaneNormal = cross(v_rightPlaneEC.xyz, v_endPlaneNormalEcAndBatchId.xyz); + alignedPlaneNormal = normalize(cross(alignedPlaneNormal, v_rightPlaneEC.xyz)); + distanceFromEnd = czm_planeDistance(alignedPlaneNormal, -dot(alignedPlaneNormal, v_endEcAndStartEcX.xyz), eyeCoordinate.xyz); + +#ifdef PER_INSTANCE_COLOR + out_FragColor = czm_gammaCorrect(v_color); +#else // PER_INSTANCE_COLOR + // Clamp - distance to aligned planes may be negative due to mitering, + // so fragment texture coordinate might be out-of-bounds. + float s = clamp(distanceFromStart / (distanceFromStart + distanceFromEnd), 0.0, 1.0); + s = (s * v_texcoordNormalizationAndStartEcYZ.x) + v_texcoordNormalizationAndStartEcYZ.y; + float t = (widthwiseDistance + halfMaxWidth) / (2.0 * halfMaxWidth); + + czm_materialInput materialInput; + + materialInput.s = s; + materialInput.st = vec2(s, t); + materialInput.str = vec3(s, t, 0.0); + + czm_material material = czm_getMaterial(materialInput); + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#endif // PER_INSTANCE_COLOR + + // Premultiply alpha. Required for classification primitives on translucent globe. + out_FragColor.rgb *= out_FragColor.a; + + czm_writeDepthClamp(); +} +`;var $L=`in vec3 v_forwardDirectionEC; +in vec3 v_texcoordNormalizationAndHalfWidth; +in float v_batchId; + +#ifdef PER_INSTANCE_COLOR +in vec4 v_color; +#else +in vec2 v_alignedPlaneDistances; +in float v_texcoordT; +#endif + +float rayPlaneDistanceUnsafe(vec3 origin, vec3 direction, vec3 planeNormal, float planeDistance) { + // We don't expect the ray to ever be parallel to the plane + return (-planeDistance - dot(planeNormal, origin)) / dot(planeNormal, direction); +} + +void main(void) +{ + vec4 eyeCoordinate = gl_FragCoord; + eyeCoordinate /= eyeCoordinate.w; + +#ifdef PER_INSTANCE_COLOR + out_FragColor = czm_gammaCorrect(v_color); +#else // PER_INSTANCE_COLOR + // Use distances for planes aligned with segment to prevent skew in dashing + float distanceFromStart = rayPlaneDistanceUnsafe(eyeCoordinate.xyz, -v_forwardDirectionEC, v_forwardDirectionEC.xyz, v_alignedPlaneDistances.x); + float distanceFromEnd = rayPlaneDistanceUnsafe(eyeCoordinate.xyz, v_forwardDirectionEC, -v_forwardDirectionEC.xyz, v_alignedPlaneDistances.y); + + // Clamp - distance to aligned planes may be negative due to mitering + distanceFromStart = max(0.0, distanceFromStart); + distanceFromEnd = max(0.0, distanceFromEnd); + + float s = distanceFromStart / (distanceFromStart + distanceFromEnd); + s = (s * v_texcoordNormalizationAndHalfWidth.x) + v_texcoordNormalizationAndHalfWidth.y; + + czm_materialInput materialInput; + + materialInput.s = s; + materialInput.st = vec2(s, v_texcoordT); + materialInput.str = vec3(s, v_texcoordT, 0.0); + + czm_material material = czm_getMaterial(materialInput); + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#endif // PER_INSTANCE_COLOR +} +`;var eO=`in vec3 position3DHigh; +in vec3 position3DLow; + +in vec4 startHiAndForwardOffsetX; +in vec4 startLoAndForwardOffsetY; +in vec4 startNormalAndForwardOffsetZ; +in vec4 endNormalAndTextureCoordinateNormalizationX; +in vec4 rightNormalAndTextureCoordinateNormalizationY; +in vec4 startHiLo2D; +in vec4 offsetAndRight2D; +in vec4 startEndNormals2D; +in vec2 texcoordNormalization2D; + +in float batchId; + +out vec3 v_forwardDirectionEC; +out vec3 v_texcoordNormalizationAndHalfWidth; +out float v_batchId; + +// For materials +#ifdef WIDTH_VARYING +out float v_width; +#endif +#ifdef ANGLE_VARYING +out float v_polylineAngle; +#endif + +#ifdef PER_INSTANCE_COLOR +out vec4 v_color; +#else +out vec2 v_alignedPlaneDistances; +out float v_texcoordT; +#endif + +// Morphing planes using SLERP or NLERP doesn't seem to work, so instead draw the material directly on the shadow volume. +// Morph views are from very far away and aren't meant to be used precisely, so this should be sufficient. +void main() +{ + v_batchId = batchId; + + // Start position + vec4 posRelativeToEye2D = czm_translateRelativeToEye(vec3(0.0, startHiLo2D.xy), vec3(0.0, startHiLo2D.zw)); + vec4 posRelativeToEye3D = czm_translateRelativeToEye(startHiAndForwardOffsetX.xyz, startLoAndForwardOffsetY.xyz); + vec4 posRelativeToEye = czm_columbusViewMorph(posRelativeToEye2D, posRelativeToEye3D, czm_morphTime); + vec3 posEc2D = (czm_modelViewRelativeToEye * posRelativeToEye2D).xyz; + vec3 posEc3D = (czm_modelViewRelativeToEye * posRelativeToEye3D).xyz; + vec3 startEC = (czm_modelViewRelativeToEye * posRelativeToEye).xyz; + + // Start plane + vec4 startPlane2D; + vec4 startPlane3D; + startPlane2D.xyz = czm_normal * vec3(0.0, startEndNormals2D.xy); + startPlane3D.xyz = czm_normal * startNormalAndForwardOffsetZ.xyz; + startPlane2D.w = -dot(startPlane2D.xyz, posEc2D); + startPlane3D.w = -dot(startPlane3D.xyz, posEc3D); + + // Right plane + vec4 rightPlane2D; + vec4 rightPlane3D; + rightPlane2D.xyz = czm_normal * vec3(0.0, offsetAndRight2D.zw); + rightPlane3D.xyz = czm_normal * rightNormalAndTextureCoordinateNormalizationY.xyz; + rightPlane2D.w = -dot(rightPlane2D.xyz, posEc2D); + rightPlane3D.w = -dot(rightPlane3D.xyz, posEc3D); + + // End position + posRelativeToEye2D = posRelativeToEye2D + vec4(0.0, offsetAndRight2D.xy, 0.0); + posRelativeToEye3D = posRelativeToEye3D + vec4(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w, 0.0); + posRelativeToEye = czm_columbusViewMorph(posRelativeToEye2D, posRelativeToEye3D, czm_morphTime); + posEc2D = (czm_modelViewRelativeToEye * posRelativeToEye2D).xyz; + posEc3D = (czm_modelViewRelativeToEye * posRelativeToEye3D).xyz; + vec3 endEC = (czm_modelViewRelativeToEye * posRelativeToEye).xyz; + vec3 forwardEc3D = czm_normal * normalize(vec3(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w)); + vec3 forwardEc2D = czm_normal * normalize(vec3(0.0, offsetAndRight2D.xy)); + + // End plane + vec4 endPlane2D; + vec4 endPlane3D; + endPlane2D.xyz = czm_normal * vec3(0.0, startEndNormals2D.zw); + endPlane3D.xyz = czm_normal * endNormalAndTextureCoordinateNormalizationX.xyz; + endPlane2D.w = -dot(endPlane2D.xyz, posEc2D); + endPlane3D.w = -dot(endPlane3D.xyz, posEc3D); + + // Forward direction + v_forwardDirectionEC = normalize(endEC - startEC); + + vec2 cleanTexcoordNormalization2D; + cleanTexcoordNormalization2D.x = abs(texcoordNormalization2D.x); + cleanTexcoordNormalization2D.y = czm_branchFreeTernary(texcoordNormalization2D.y > 1.0, 0.0, abs(texcoordNormalization2D.y)); + vec2 cleanTexcoordNormalization3D; + cleanTexcoordNormalization3D.x = abs(endNormalAndTextureCoordinateNormalizationX.w); + cleanTexcoordNormalization3D.y = rightNormalAndTextureCoordinateNormalizationY.w; + cleanTexcoordNormalization3D.y = czm_branchFreeTernary(cleanTexcoordNormalization3D.y > 1.0, 0.0, abs(cleanTexcoordNormalization3D.y)); + + v_texcoordNormalizationAndHalfWidth.xy = mix(cleanTexcoordNormalization2D, cleanTexcoordNormalization3D, czm_morphTime); + +#ifdef PER_INSTANCE_COLOR + v_color = czm_batchTable_color(batchId); +#else // PER_INSTANCE_COLOR + // For computing texture coordinates + + v_alignedPlaneDistances.x = -dot(v_forwardDirectionEC, startEC); + v_alignedPlaneDistances.y = -dot(-v_forwardDirectionEC, endEC); +#endif // PER_INSTANCE_COLOR + +#ifdef WIDTH_VARYING + float width = czm_batchTable_width(batchId); + float halfWidth = width * 0.5; + v_width = width; + v_texcoordNormalizationAndHalfWidth.z = halfWidth; +#else + float halfWidth = 0.5 * czm_batchTable_width(batchId); + v_texcoordNormalizationAndHalfWidth.z = halfWidth; +#endif + + // Compute a normal along which to "push" the position out, extending the miter depending on view distance. + // Position has already been "pushed" by unit length along miter normal, and miter normals are encoded in the planes. + // Decode the normal to use at this specific vertex, push the position back, and then push to where it needs to be. + // Since this is morphing, compute both 3D and 2D positions and then blend. + + // ****** 3D ****** + // Check distance to the end plane and start plane, pick the plane that is closer + vec4 positionEc3D = czm_modelViewRelativeToEye * czm_translateRelativeToEye(position3DHigh, position3DLow); // w = 1.0, see czm_computePosition + float absStartPlaneDistance = abs(czm_planeDistance(startPlane3D, positionEc3D.xyz)); + float absEndPlaneDistance = abs(czm_planeDistance(endPlane3D, positionEc3D.xyz)); + vec3 planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlane3D.xyz, endPlane3D.xyz); + vec3 upOrDown = normalize(cross(rightPlane3D.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane. + vec3 normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too. + + // Nudge the top vertex upwards to prevent flickering + vec3 geodeticSurfaceNormal = normalize(cross(normalEC, forwardEc3D)); + geodeticSurfaceNormal *= float(0.0 <= rightNormalAndTextureCoordinateNormalizationY.w && rightNormalAndTextureCoordinateNormalizationY.w <= 1.0); + geodeticSurfaceNormal *= MAX_TERRAIN_HEIGHT; + positionEc3D.xyz += geodeticSurfaceNormal; + + // Determine if this vertex is on the "left" or "right" + normalEC *= sign(endNormalAndTextureCoordinateNormalizationX.w); + + // A "perfect" implementation would push along normals according to the angle against forward. + // In practice, just pushing the normal out by halfWidth is sufficient for morph views. + positionEc3D.xyz += halfWidth * max(0.0, czm_metersPerPixel(positionEc3D)) * normalEC; // prevent artifacts when czm_metersPerPixel is negative (behind camera) + + // ****** 2D ****** + // Check distance to the end plane and start plane, pick the plane that is closer + vec4 positionEc2D = czm_modelViewRelativeToEye * czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy); // w = 1.0, see czm_computePosition + absStartPlaneDistance = abs(czm_planeDistance(startPlane2D, positionEc2D.xyz)); + absEndPlaneDistance = abs(czm_planeDistance(endPlane2D, positionEc2D.xyz)); + planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlane2D.xyz, endPlane2D.xyz); + upOrDown = normalize(cross(rightPlane2D.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane. + normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too. + + // Nudge the top vertex upwards to prevent flickering + geodeticSurfaceNormal = normalize(cross(normalEC, forwardEc2D)); + geodeticSurfaceNormal *= float(0.0 <= texcoordNormalization2D.y && texcoordNormalization2D.y <= 1.0); + geodeticSurfaceNormal *= MAX_TERRAIN_HEIGHT; + positionEc2D.xyz += geodeticSurfaceNormal; + + // Determine if this vertex is on the "left" or "right" + normalEC *= sign(texcoordNormalization2D.x); +#ifndef PER_INSTANCE_COLOR + // Use vertex's sidedness to compute its texture coordinate. + v_texcoordT = clamp(sign(texcoordNormalization2D.x), 0.0, 1.0); +#endif + + // A "perfect" implementation would push along normals according to the angle against forward. + // In practice, just pushing the normal out by halfWidth is sufficient for morph views. + positionEc2D.xyz += halfWidth * max(0.0, czm_metersPerPixel(positionEc2D)) * normalEC; // prevent artifacts when czm_metersPerPixel is negative (behind camera) + + // Blend for actual position + gl_Position = czm_projection * mix(positionEc2D, positionEc3D, czm_morphTime); + +#ifdef ANGLE_VARYING + // Approximate relative screen space direction of the line. + vec2 approxLineDirection = normalize(vec2(v_forwardDirectionEC.x, -v_forwardDirectionEC.y)); + approxLineDirection.y = czm_branchFreeTernary(approxLineDirection.x == 0.0 && approxLineDirection.y == 0.0, -1.0, approxLineDirection.y); + v_polylineAngle = czm_fastApproximateAtan(approxLineDirection.x, approxLineDirection.y); +#endif +} +`;var tO=`in vec3 position3DHigh; +in vec3 position3DLow; + +// In 2D and in 3D, texture coordinate normalization component signs encodes: +// * X sign - sidedness relative to right plane +// * Y sign - is negative OR magnitude is greater than 1.0 if vertex is on bottom of volume +#ifndef COLUMBUS_VIEW_2D +in vec4 startHiAndForwardOffsetX; +in vec4 startLoAndForwardOffsetY; +in vec4 startNormalAndForwardOffsetZ; +in vec4 endNormalAndTextureCoordinateNormalizationX; +in vec4 rightNormalAndTextureCoordinateNormalizationY; +#else +in vec4 startHiLo2D; +in vec4 offsetAndRight2D; +in vec4 startEndNormals2D; +in vec2 texcoordNormalization2D; +#endif + +in float batchId; + +out vec4 v_startPlaneNormalEcAndHalfWidth; +out vec4 v_endPlaneNormalEcAndBatchId; +out vec4 v_rightPlaneEC; +out vec4 v_endEcAndStartEcX; +out vec4 v_texcoordNormalizationAndStartEcYZ; + +// For materials +#ifdef WIDTH_VARYING +out float v_width; +#endif +#ifdef ANGLE_VARYING +out float v_polylineAngle; +#endif + +#ifdef PER_INSTANCE_COLOR +out vec4 v_color; +#endif + +void main() +{ +#ifdef COLUMBUS_VIEW_2D + vec3 ecStart = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(vec3(0.0, startHiLo2D.xy), vec3(0.0, startHiLo2D.zw))).xyz; + + vec3 forwardDirectionEC = czm_normal * vec3(0.0, offsetAndRight2D.xy); + vec3 ecEnd = forwardDirectionEC + ecStart; + forwardDirectionEC = normalize(forwardDirectionEC); + + // Right plane + v_rightPlaneEC.xyz = czm_normal * vec3(0.0, offsetAndRight2D.zw); + v_rightPlaneEC.w = -dot(v_rightPlaneEC.xyz, ecStart); + + // start plane + vec4 startPlaneEC; + startPlaneEC.xyz = czm_normal * vec3(0.0, startEndNormals2D.xy); + startPlaneEC.w = -dot(startPlaneEC.xyz, ecStart); + + // end plane + vec4 endPlaneEC; + endPlaneEC.xyz = czm_normal * vec3(0.0, startEndNormals2D.zw); + endPlaneEC.w = -dot(endPlaneEC.xyz, ecEnd); + + v_texcoordNormalizationAndStartEcYZ.x = abs(texcoordNormalization2D.x); + v_texcoordNormalizationAndStartEcYZ.y = texcoordNormalization2D.y; + +#else // COLUMBUS_VIEW_2D + vec3 ecStart = (czm_modelViewRelativeToEye * czm_translateRelativeToEye(startHiAndForwardOffsetX.xyz, startLoAndForwardOffsetY.xyz)).xyz; + vec3 offset = czm_normal * vec3(startHiAndForwardOffsetX.w, startLoAndForwardOffsetY.w, startNormalAndForwardOffsetZ.w); + vec3 ecEnd = ecStart + offset; + + vec3 forwardDirectionEC = normalize(offset); + + // start plane + vec4 startPlaneEC; + startPlaneEC.xyz = czm_normal * startNormalAndForwardOffsetZ.xyz; + startPlaneEC.w = -dot(startPlaneEC.xyz, ecStart); + + // end plane + vec4 endPlaneEC; + endPlaneEC.xyz = czm_normal * endNormalAndTextureCoordinateNormalizationX.xyz; + endPlaneEC.w = -dot(endPlaneEC.xyz, ecEnd); + + // Right plane + v_rightPlaneEC.xyz = czm_normal * rightNormalAndTextureCoordinateNormalizationY.xyz; + v_rightPlaneEC.w = -dot(v_rightPlaneEC.xyz, ecStart); + + v_texcoordNormalizationAndStartEcYZ.x = abs(endNormalAndTextureCoordinateNormalizationX.w); + v_texcoordNormalizationAndStartEcYZ.y = rightNormalAndTextureCoordinateNormalizationY.w; + +#endif // COLUMBUS_VIEW_2D + + v_endEcAndStartEcX.xyz = ecEnd; + v_endEcAndStartEcX.w = ecStart.x; + v_texcoordNormalizationAndStartEcYZ.zw = ecStart.yz; + +#ifdef PER_INSTANCE_COLOR + v_color = czm_batchTable_color(batchId); +#endif // PER_INSTANCE_COLOR + + // Compute a normal along which to "push" the position out, extending the miter depending on view distance. + // Position has already been "pushed" by unit length along miter normal, and miter normals are encoded in the planes. + // Decode the normal to use at this specific vertex, push the position back, and then push to where it needs to be. + vec4 positionRelativeToEye = czm_computePosition(); + + // Check distance to the end plane and start plane, pick the plane that is closer + vec4 positionEC = czm_modelViewRelativeToEye * positionRelativeToEye; // w = 1.0, see czm_computePosition + float absStartPlaneDistance = abs(czm_planeDistance(startPlaneEC, positionEC.xyz)); + float absEndPlaneDistance = abs(czm_planeDistance(endPlaneEC, positionEC.xyz)); + vec3 planeDirection = czm_branchFreeTernary(absStartPlaneDistance < absEndPlaneDistance, startPlaneEC.xyz, endPlaneEC.xyz); + vec3 upOrDown = normalize(cross(v_rightPlaneEC.xyz, planeDirection)); // Points "up" for start plane, "down" at end plane. + vec3 normalEC = normalize(cross(planeDirection, upOrDown)); // In practice, the opposite seems to work too. + + // Extrude bottom vertices downward for far view distances, like for GroundPrimitives + upOrDown = cross(forwardDirectionEC, normalEC); + upOrDown = float(czm_sceneMode == czm_sceneMode3D) * upOrDown; + upOrDown = float(v_texcoordNormalizationAndStartEcYZ.y > 1.0 || v_texcoordNormalizationAndStartEcYZ.y < 0.0) * upOrDown; + upOrDown = min(GLOBE_MINIMUM_ALTITUDE, czm_geometricToleranceOverMeter * length(positionRelativeToEye.xyz)) * upOrDown; + positionEC.xyz += upOrDown; + + v_texcoordNormalizationAndStartEcYZ.y = czm_branchFreeTernary(v_texcoordNormalizationAndStartEcYZ.y > 1.0, 0.0, abs(v_texcoordNormalizationAndStartEcYZ.y)); + + // Determine distance along normalEC to push for a volume of appropriate width. + // Make volumes about double pixel width for a conservative fit - in practice the + // extra cost here is minimal compared to the loose volume heights. + // + // N = normalEC (guaranteed "right-facing") + // R = rightEC + // p = angle between N and R + // w = distance to push along R if R == N + // d = distance to push along N + // + // N R + // { p| } * cos(p) = dot(N, R) = w / d + // d | |w * d = w / dot(N, R) + // { | } + // o---------- polyline segment ----> + // + float width = czm_batchTable_width(batchId); +#ifdef WIDTH_VARYING + v_width = width; +#endif + + v_startPlaneNormalEcAndHalfWidth.xyz = startPlaneEC.xyz; + v_startPlaneNormalEcAndHalfWidth.w = width * 0.5; + + v_endPlaneNormalEcAndBatchId.xyz = endPlaneEC.xyz; + v_endPlaneNormalEcAndBatchId.w = batchId; + + width = width * max(0.0, czm_metersPerPixel(positionEC)); // width = distance to push along R + width = width / dot(normalEC, v_rightPlaneEC.xyz); // width = distance to push along N + + // Determine if this vertex is on the "left" or "right" +#ifdef COLUMBUS_VIEW_2D + normalEC *= sign(texcoordNormalization2D.x); +#else + normalEC *= sign(endNormalAndTextureCoordinateNormalizationX.w); +#endif + + positionEC.xyz += width * normalEC; + gl_Position = czm_depthClamp(czm_projection * positionEC); + +#ifdef ANGLE_VARYING + // Approximate relative screen space direction of the line. + vec2 approxLineDirection = normalize(vec2(forwardDirectionEC.x, -forwardDirectionEC.y)); + approxLineDirection.y = czm_branchFreeTernary(approxLineDirection.x == 0.0 && approxLineDirection.y == 0.0, -1.0, approxLineDirection.y); + v_polylineAngle = czm_fastApproximateAtan(approxLineDirection.x, approxLineDirection.y); +#endif +} +`;var nO=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 prevPosition3DHigh; +in vec3 prevPosition3DLow; +in vec3 nextPosition3DHigh; +in vec3 nextPosition3DLow; +in vec2 expandAndWidth; +in vec4 color; +in float batchId; + +out vec4 v_color; + +void main() +{ + float expandDir = expandAndWidth.x; + float width = abs(expandAndWidth.y) + 0.5; + bool usePrev = expandAndWidth.y < 0.0; + + vec4 p = czm_computePosition(); + vec4 prev = czm_computePrevPosition(); + vec4 next = czm_computeNextPosition(); + + float angle; + vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, angle); + gl_Position = czm_viewportOrthographic * positionWC; + + v_color = color; +} +`;var bf=`void clipLineSegmentToNearPlane( + vec3 p0, + vec3 p1, + out vec4 positionWC, + out bool clipped, + out bool culledByNearPlane, + out vec4 clippedPositionEC) +{ + culledByNearPlane = false; + clipped = false; + + vec3 p0ToP1 = p1 - p0; + float magnitude = length(p0ToP1); + vec3 direction = normalize(p0ToP1); + + // Distance that p0 is behind the near plane. Negative means p0 is + // in front of the near plane. + float endPoint0Distance = czm_currentFrustum.x + p0.z; + + // Camera looks down -Z. + // When moving a point along +Z: LESS VISIBLE + // * Points in front of the camera move closer to the camera. + // * Points behind the camrea move farther away from the camera. + // When moving a point along -Z: MORE VISIBLE + // * Points in front of the camera move farther away from the camera. + // * Points behind the camera move closer to the camera. + + // Positive denominator: -Z, becoming more visible + // Negative denominator: +Z, becoming less visible + // Nearly zero: parallel to near plane + float denominator = -direction.z; + + if (endPoint0Distance > 0.0 && abs(denominator) < czm_epsilon7) + { + // p0 is behind the near plane and the line to p1 is nearly parallel to + // the near plane, so cull the segment completely. + culledByNearPlane = true; + } + else if (endPoint0Distance > 0.0) + { + // p0 is behind the near plane, and the line to p1 is moving distinctly + // toward or away from it. + + // t = (-plane distance - dot(plane normal, ray origin)) / dot(plane normal, ray direction) + float t = endPoint0Distance / denominator; + if (t < 0.0 || t > magnitude) + { + // Near plane intersection is not between the two points. + // We already confirmed p0 is behind the naer plane, so now + // we know the entire segment is behind it. + culledByNearPlane = true; + } + else + { + // Segment crosses the near plane, update p0 to lie exactly on it. + p0 = p0 + t * direction; + + // Numerical noise might put us a bit on the wrong side of the near plane. + // Don't let that happen. + p0.z = min(p0.z, -czm_currentFrustum.x); + + clipped = true; + } + } + + clippedPositionEC = vec4(p0, 1.0); + positionWC = czm_eyeToWindowCoordinates(clippedPositionEC); +} + +vec4 getPolylineWindowCoordinatesEC(vec4 positionEC, vec4 prevEC, vec4 nextEC, float expandDirection, float width, bool usePrevious, out float angle) +{ + // expandDirection +1 is to the _left_ when looking from positionEC toward nextEC. + +#ifdef POLYLINE_DASH + // Compute the window coordinates of the points. + vec4 positionWindow = czm_eyeToWindowCoordinates(positionEC); + vec4 previousWindow = czm_eyeToWindowCoordinates(prevEC); + vec4 nextWindow = czm_eyeToWindowCoordinates(nextEC); + + // Determine the relative screen space direction of the line. + vec2 lineDir; + if (usePrevious) { + lineDir = normalize(positionWindow.xy - previousWindow.xy); + } + else { + lineDir = normalize(nextWindow.xy - positionWindow.xy); + } + angle = atan(lineDir.x, lineDir.y) - 1.570796327; // precomputed atan(1,0) + + // Quantize the angle so it doesn't change rapidly between segments. + angle = floor(angle / czm_piOverFour + 0.5) * czm_piOverFour; +#endif + + vec4 clippedPrevWC, clippedPrevEC; + bool prevSegmentClipped, prevSegmentCulled; + clipLineSegmentToNearPlane(prevEC.xyz, positionEC.xyz, clippedPrevWC, prevSegmentClipped, prevSegmentCulled, clippedPrevEC); + + vec4 clippedNextWC, clippedNextEC; + bool nextSegmentClipped, nextSegmentCulled; + clipLineSegmentToNearPlane(nextEC.xyz, positionEC.xyz, clippedNextWC, nextSegmentClipped, nextSegmentCulled, clippedNextEC); + + bool segmentClipped, segmentCulled; + vec4 clippedPositionWC, clippedPositionEC; + clipLineSegmentToNearPlane(positionEC.xyz, usePrevious ? prevEC.xyz : nextEC.xyz, clippedPositionWC, segmentClipped, segmentCulled, clippedPositionEC); + + if (segmentCulled) + { + return vec4(0.0, 0.0, 0.0, 1.0); + } + + vec2 directionToPrevWC = normalize(clippedPrevWC.xy - clippedPositionWC.xy); + vec2 directionToNextWC = normalize(clippedNextWC.xy - clippedPositionWC.xy); + + // If a segment was culled, we can't use the corresponding direction + // computed above. We should never see both of these be true without + // \`segmentCulled\` above also being true. + if (prevSegmentCulled) + { + directionToPrevWC = -directionToNextWC; + } + else if (nextSegmentCulled) + { + directionToNextWC = -directionToPrevWC; + } + + vec2 thisSegmentForwardWC, otherSegmentForwardWC; + if (usePrevious) + { + thisSegmentForwardWC = -directionToPrevWC; + otherSegmentForwardWC = directionToNextWC; + } + else + { + thisSegmentForwardWC = directionToNextWC; + otherSegmentForwardWC = -directionToPrevWC; + } + + vec2 thisSegmentLeftWC = vec2(-thisSegmentForwardWC.y, thisSegmentForwardWC.x); + + vec2 leftWC = thisSegmentLeftWC; + float expandWidth = width * 0.5; + + // When lines are split at the anti-meridian, the position may be at the + // same location as the next or previous position, and we need to handle + // that to avoid producing NaNs. + if (!czm_equalsEpsilon(prevEC.xyz - positionEC.xyz, vec3(0.0), czm_epsilon1) && !czm_equalsEpsilon(nextEC.xyz - positionEC.xyz, vec3(0.0), czm_epsilon1)) + { + vec2 otherSegmentLeftWC = vec2(-otherSegmentForwardWC.y, otherSegmentForwardWC.x); + + vec2 leftSumWC = thisSegmentLeftWC + otherSegmentLeftWC; + float leftSumLength = length(leftSumWC); + leftWC = leftSumLength < czm_epsilon6 ? thisSegmentLeftWC : (leftSumWC / leftSumLength); + + // The sine of the angle between the two vectors is given by the formula + // |a x b| = |a||b|sin(theta) + // which is + // float sinAngle = length(cross(vec3(leftWC, 0.0), vec3(-thisSegmentForwardWC, 0.0))); + // Because the z components of both vectors are zero, the x and y coordinate will be zero. + // Therefore, the sine of the angle is just the z component of the cross product. + vec2 u = -thisSegmentForwardWC; + vec2 v = leftWC; + float sinAngle = abs(u.x * v.y - u.y * v.x); + expandWidth = clamp(expandWidth / sinAngle, 0.0, width * 2.0); + } + + vec2 offset = leftWC * expandDirection * expandWidth * czm_pixelRatio; + return vec4(clippedPositionWC.xy + offset, -clippedPositionWC.z, 1.0) * (czm_projection * clippedPositionEC).w; +} + +vec4 getPolylineWindowCoordinates(vec4 position, vec4 previous, vec4 next, float expandDirection, float width, bool usePrevious, out float angle) +{ + vec4 positionEC = czm_modelViewRelativeToEye * position; + vec4 prevEC = czm_modelViewRelativeToEye * previous; + vec4 nextEC = czm_modelViewRelativeToEye * next; + return getPolylineWindowCoordinatesEC(positionEC, prevEC, nextEC, expandDirection, width, usePrevious, angle); +} +`;var B6=`${bf} +${nO}`,DLe=pI;jt.isInternetExplorer()||(B6=`#define CLIP_POLYLINE +${B6}`);function TC(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=!1,i=TC.VERTEX_FORMAT;this.material=void 0,this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??B6,this._fragmentShaderSource=e.fragmentShaderSource??DLe,this._renderState=go.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=i}Object.defineProperties(TC.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}}});TC.VERTEX_FORMAT=Pe.POSITION_ONLY;TC.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;TC.prototype.isTranslucent=go.prototype.isTranslucent;TC.prototype.getRenderState=go.prototype.getRenderState;var bs=TC;var iO=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 prevPosition3DHigh; +in vec3 prevPosition3DLow; +in vec3 nextPosition3DHigh; +in vec3 nextPosition3DLow; +in vec2 expandAndWidth; +in vec2 st; +in float batchId; + +out float v_width; +out vec2 v_st; +out float v_polylineAngle; + +void main() +{ + float expandDir = expandAndWidth.x; + float width = abs(expandAndWidth.y) + 0.5; + bool usePrev = expandAndWidth.y < 0.0; + + vec4 p = czm_computePosition(); + vec4 prev = czm_computePrevPosition(); + vec4 next = czm_computeNextPosition(); + + float angle; + vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, angle); + gl_Position = czm_viewportOrthographic * positionWC; + + v_width = width; + v_st.s = st.s; + v_st.t = czm_writeNonPerspective(st.t, gl_Position.w); + v_polylineAngle = angle; +} +`;var TI=`#ifdef VECTOR_TILE +uniform vec4 u_highlightColor; +#endif + +in vec2 v_st; + +void main() +{ + czm_materialInput materialInput; + + vec2 st = v_st; + st.t = czm_readNonPerspective(st.t, gl_FragCoord.w); + + materialInput.s = st.s; + materialInput.st = st; + materialInput.str = vec3(st, 0.0); + + czm_material material = czm_getMaterial(materialInput); + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#ifdef VECTOR_TILE + out_FragColor *= u_highlightColor; +#endif + + czm_writeLogDepth(); +} +`;var D6=`${bf} +${iO}`,vLe=TI;jt.isInternetExplorer()||(D6=`#define CLIP_POLYLINE +${D6}`);function SC(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=!1,i=SC.VERTEX_FORMAT;this.material=l(e.material)?e.material:ao.fromType(ao.ColorType),this.translucent=t,this._vertexShaderSource=e.vertexShaderSource??D6,this._fragmentShaderSource=e.fragmentShaderSource??vLe,this._renderState=go.getDefaultRenderState(t,n,e.renderState),this._closed=n,this._vertexFormat=i}Object.defineProperties(SC.prototype,{vertexShaderSource:{get:function(){let e=this._vertexShaderSource;return this.material.shaderSource.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&(e=`#define POLYLINE_DASH +${e}`),e}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return this._vertexFormat}}});SC.VERTEX_FORMAT=Pe.POSITION_AND_ST;SC.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;SC.prototype.isTranslucent=go.prototype.isTranslucent;SC.prototype.getRenderState=go.prototype.getRenderState;var Za=SC;function HA(e){e=e??V.EMPTY_OBJECT,this.geometryInstances=e.geometryInstances,this._hasPerInstanceColors=!0;let t=e.appearance;l(t)||(t=new Za),this.appearance=t,this.show=e.show??!0,this.classificationType=e.classificationType??Jn.BOTH,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._debugShowShadowVolume=e.debugShowShadowVolume??!1,this._primitiveOptions={geometryInstances:void 0,appearance:void 0,vertexCacheOptimize:!1,interleave:e.interleave??!1,releaseGeometryInstances:e.releaseGeometryInstances??!0,allowPicking:e.allowPicking??!0,asynchronous:e.asynchronous??!0,compressVertices:!1,_createShaderProgramFunction:void 0,_createCommandsFunction:void 0,_updateAndQueueCommandsFunction:void 0},this._zIndex=void 0,this._ready=!1,this._primitive=void 0,this._sp=void 0,this._sp2D=void 0,this._spMorph=void 0,this._renderState=Xie(!1),this._renderState3DTiles=Xie(!0),this._renderStateMorph=Ue.fromCache({cull:{enabled:!0,face:Mi.FRONT},depthTest:{enabled:!0},blending:pn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1})}Object.defineProperties(HA.prototype,{interleave:{get:function(){return this._primitiveOptions.interleave}},releaseGeometryInstances:{get:function(){return this._primitiveOptions.releaseGeometryInstances}},allowPicking:{get:function(){return this._primitiveOptions.allowPicking}},asynchronous:{get:function(){return this._primitiveOptions.asynchronous}},ready:{get:function(){return this._ready}},debugShowShadowVolume:{get:function(){return this._debugShowShadowVolume}}});HA.initializeTerrainHeights=function(){return wi.initialize()};function PLe(e,t,n){let i=t.context,o=e._primitive,r=o._attributeLocations,s=o._batchTable.getVertexShaderCallback()(tO);s=kn._appendShowToShader(o,s),s=kn._appendDistanceDisplayConditionToShader(o,s),s=kn._modifyShaderPosition(e,s,t.scene3DOnly);let a=o._batchTable.getVertexShaderCallback()(eO);a=kn._appendShowToShader(o,a),a=kn._appendDistanceDisplayConditionToShader(o,a),a=kn._modifyShaderPosition(e,a,t.scene3DOnly);let c=o._batchTable.getVertexShaderCallback()(ZL),u=[`GLOBE_MINIMUM_ALTITUDE ${t.mapProjection.ellipsoid.minimumRadius.toFixed(1)}`],f="",h="";l(n.material)?(h=l(n.material)?n.material.shaderSource:"",h.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&u.push("ANGLE_VARYING"),h.search(/in\s+float\s+v_width;/g)!==-1&&u.push("WIDTH_VARYING")):f="PER_INSTANCE_COLOR",u.push(f);let A=e.debugShowShadowVolume?["DEBUG_SHOW_VOLUME",f]:[f],g=new We({defines:u,sources:[s]}),m=new We({defines:A,sources:[h,c]});e._sp=ln.replaceCache({context:i,shaderProgram:o._sp,vertexShaderSource:g,fragmentShaderSource:m,attributeLocations:r});let _=i.shaderCache.getDerivedShaderProgram(e._sp,"2dColor");if(!l(_)){let C=new We({defines:u.concat(["COLUMBUS_VIEW_2D"]),sources:[s]});_=i.shaderCache.createDerivedShaderProgram(e._sp,"2dColor",{context:i,shaderProgram:e._sp2D,vertexShaderSource:C,fragmentShaderSource:m,attributeLocations:r})}e._sp2D=_;let y=i.shaderCache.getDerivedShaderProgram(e._sp,"MorphColor");if(!l(y)){let C=new We({defines:u.concat([`MAX_TERRAIN_HEIGHT ${wi._defaultMaxTerrainHeight.toFixed(1)}`]),sources:[a]});c=o._batchTable.getVertexShaderCallback()($L);let E=new We({defines:A,sources:[h,c]});y=i.shaderCache.createDerivedShaderProgram(e._sp,"MorphColor",{context:i,shaderProgram:e._spMorph,vertexShaderSource:C,fragmentShaderSource:E,attributeLocations:r})}e._spMorph=y}function Xie(e){return Ue.fromCache({cull:{enabled:!0},blending:pn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1,stencilTest:{enabled:e,frontFunction:Zn.EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.EQUAL,backOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK}})}function RLe(e,t,n,i,o,r){let s=e._primitive,a=s._va.length;o.length=a,r.length=a;let u=t instanceof bs?{}:n._uniforms,f=s._batchTable.getUniformMapCallback()(u);for(let h=0;h<a;h++){let A=s._va[h],g=o[h];l(g)||(g=o[h]=new nt({owner:e,primitiveType:s._primitiveType})),g.vertexArray=A,g.renderState=e._renderState,g.shaderProgram=e._sp,g.uniformMap=f,g.pass=Be.TERRAIN_CLASSIFICATION,g.pickId="czm_batchTable_pickColor(v_endPlaneNormalEcAndBatchId.w)";let m=nt.shallowClone(g,g.derivedCommands.tileset);m.renderState=e._renderState3DTiles,m.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,g.derivedCommands.tileset=m;let _=nt.shallowClone(g,g.derivedCommands.color2D);_.shaderProgram=e._sp2D,g.derivedCommands.color2D=_;let y=nt.shallowClone(m,m.derivedCommands.color2D);y.shaderProgram=e._sp2D,m.derivedCommands.color2D=y;let C=nt.shallowClone(g,g.derivedCommands.colorMorph);C.renderState=e._renderStateMorph,C.shaderProgram=e._spMorph,C.pickId="czm_batchTable_pickColor(v_batchId)",g.derivedCommands.colorMorph=C}}function Jie(e,t,n,i,o,r,s){n.mode===ie.MORPHING?t=t.derivedCommands.colorMorph:n.mode!==ie.SCENE3D&&(t=t.derivedCommands.color2D),t.modelMatrix=i,t.boundingVolume=r,t.cull=o,t.debugShowBoundingVolume=s,n.commandList.push(t)}function MLe(e,t,n,i,o,r,s){let a=e._primitive;kn._updateBoundingVolumes(a,t,o);let c;t.mode===ie.SCENE3D?c=a._boundingSphereWC:t.mode===ie.COLUMBUS_VIEW?c=a._boundingSphereCV:t.mode===ie.SCENE2D&&l(a._boundingSphere2D)?c=a._boundingSphere2D:l(a._boundingSphereMorph)&&(c=a._boundingSphereMorph);let u=t.mode===ie.MORPHING,f=e.classificationType,h=f!==Jn.CESIUM_3D_TILE,A=f!==Jn.TERRAIN&&!u,g,m=t.passes;if(m.render||m.pick&&a.allowPicking){let _=n.length;for(let y=0;y<_;++y){let C=c[y];h&&(g=n[y],Jie(e,g,t,o,r,C,s)),A&&(g=n[y].derivedCommands.tileset,Jie(e,g,t,o,r,C,s))}}}HA.prototype.update=function(e){if(!l(this._primitive)&&!l(this.geometryInstances))return;if(!wi.initialized){HA.initializeTerrainHeights();return}let t,n=this,i=this._primitiveOptions;if(!l(this._primitive)){let o=Array.isArray(this.geometryInstances)?this.geometryInstances:[this.geometryInstances],r=o.length,s=new Array(r),a;for(t=0;t<r;++t)if(a=o[t].attributes,!l(a)||!l(a.color)){this._hasPerInstanceColors=!1;break}for(t=0;t<r;++t){let c=o[t];a={};let u=c.attributes;for(let f in u)u.hasOwnProperty(f)&&(a[f]=u[f]);l(a.width)||(a.width=new Jc({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,value:[c.geometry.width]})),c.geometry._scene3DOnly=e.scene3DOnly,bI.setProjectionAndEllipsoid(c.geometry,e.mapProjection),s[t]=new Rt({geometry:c.geometry,attributes:a,id:c.id,pickPrimitive:n})}i.geometryInstances=s,i.appearance=this.appearance,i._createShaderProgramFunction=function(c,u,f){PLe(n,u,f)},i._createCommandsFunction=function(c,u,f,h,A,g,m){RLe(n,u,f,h,g,m)},i._updateAndQueueCommandsFunction=function(c,u,f,h,A,g,m,_){MLe(n,u,f,h,A,g,m)},this._primitive=new kn(i)}if(this.appearance instanceof bs&&!this._hasPerInstanceColors)throw new me("All GeometryInstances must have color attributes to use PolylineColorAppearance with GroundPolylinePrimitive.");this._primitive.appearance=this.appearance,this._primitive.show=this.show,this._primitive.debugShowBoundingVolume=this.debugShowBoundingVolume,this._primitive.update(e),e.afterRender.push(()=>{!this._ready&&l(this._primitive)&&this._primitive.ready&&(this._ready=!0,this.releaseGeometryInstances&&(this.geometryInstances=void 0))})};HA.prototype.getGeometryInstanceAttributes=function(e){return this._primitive.getGeometryInstanceAttributes(e)};HA.isSupported=function(e){return e.frameState.context.depthTexture};HA.prototype.isDestroyed=function(){return!1};HA.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),this._sp=this._sp&&this._sp.destroy(),this._sp2D=void 0,this._spMorph=void 0,ue(this)};var sm=HA;var NLe=new k(1,1),LLe=!1,OLe=G.WHITE;function SI(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._image=void 0,this._imageSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._transparent=void 0,this._transparentSubscription=void 0,this.image=e.image,this.repeat=e.repeat,this.color=e.color,this.transparent=e.transparent}Object.defineProperties(SI.prototype,{isConstant:{get:function(){return j.isConstant(this._image)&&j.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},image:de("image"),repeat:de("repeat"),color:de("color"),transparent:de("transparent")});SI.prototype.getType=function(e){return"Image"};var FLe=new K;SI.prototype.getValue=function(e,t){return l(e)||(e=K.now(FLe)),l(t)||(t={}),t.image=j.getValueOrUndefined(this._image,e),t.repeat=j.getValueOrClonedDefault(this._repeat,e,NLe,t.repeat),t.color=j.getValueOrClonedDefault(this._color,e,OLe,t.color),j.getValueOrDefault(this._transparent,e,LLe)&&(t.color.alpha=Math.min(.99,t.color.alpha)),t};SI.prototype.equals=function(e){return this===e||e instanceof SI&&j.equals(this._image,e._image)&&j.equals(this._repeat,e._repeat)&&j.equals(this._color,e._color)&&j.equals(this._transparent,e._transparent)};var wC=SI;function QLe(e){if(e instanceof G)return new Jt(e);if(typeof e=="string"||e instanceof we||e instanceof HTMLCanvasElement||e instanceof HTMLVideoElement){let t=new wC;return t.image=e,t}}function kLe(e,t){return de(e,t,QLe)}var Xo=kLe;function pw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._dimensions=void 0,this._dimensionsSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(pw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),dimensions:de("dimensions"),heightReference:de("heightReference"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});pw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.dimensions=this.dimensions,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new pw(this)};pw.prototype.merge=function(e){this.show=this.show??e.show,this.dimensions=this.dimensions??e.dimensions,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var wI=pw;var ULe={FIXED:0,INERTIAL:1},eo=Object.freeze(ULe);function BI(){me.throwInstantiationError()}Object.defineProperties(BI.prototype,{isConstant:{get:me.throwInstantiationError},definitionChanged:{get:me.throwInstantiationError},referenceFrame:{get:me.throwInstantiationError}});BI.prototype.getValue=me.throwInstantiationError;BI.prototype.getValueInReferenceFrame=me.throwInstantiationError;BI.prototype.equals=me.throwInstantiationError;var Zie=new J;BI.convertToReferenceFrame=function(e,t,n,i,o){if(!l(t))return t;if(l(o)||(o=new d),n===i)return d.clone(t,o);let r=kt.computeIcrfToCentralBodyFixedMatrix(e,Zie);if(n===eo.INERTIAL)return J.multiplyByVector(r,t,o);if(n===eo.FIXED)return J.multiplyByVector(J.transpose(r,Zie),t,o)};var am=BI;function BC(e,t){this._definitionChanged=new _e,this._value=d.clone(e),this._referenceFrame=t??eo.FIXED}Object.defineProperties(BC.prototype,{isConstant:{get:function(){return!l(this._value)||this._referenceFrame===eo.FIXED}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var GLe=new K;BC.prototype.getValue=function(e,t){return l(e)||(e=K.now(GLe)),this.getValueInReferenceFrame(e,eo.FIXED,t)};BC.prototype.setValue=function(e,t){let n=!1;d.equals(this._value,e)||(n=!0,this._value=d.clone(e)),l(t)&&this._referenceFrame!==t&&(n=!0,this._referenceFrame=t),n&&this._definitionChanged.raiseEvent(this)};BC.prototype.getValueInReferenceFrame=function(e,t,n){return am.convertToReferenceFrame(e,this._value,this._referenceFrame,t,n)};BC.prototype.equals=function(e){return this===e||e instanceof BC&&d.equals(this._value,e._value)&&this._referenceFrame===e._referenceFrame};var Ol=BC;function gw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._cornerType=void 0,this._cornerTypeSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(gw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),positions:de("positions"),width:de("width"),height:de("height"),heightReference:de("heightReference"),extrudedHeight:de("extrudedHeight"),extrudedHeightReference:de("extrudedHeightReference"),cornerType:de("cornerType"),granularity:de("granularity"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex")});gw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.width=this.width,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.cornerType=this.cornerType,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new gw(this)};gw.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.width=this.width??e.width,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.cornerType=this.cornerType??e.cornerType,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var DI=gw;function zLe(e){return e}function VLe(e,t){return de(e,t,zLe)}var Fl=VLe;function _w(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._length=void 0,this._lengthSubscription=void 0,this._topRadius=void 0,this._topRadiusSubscription=void 0,this._bottomRadius=void 0,this._bottomRadiusSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._slices=void 0,this._slicesSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(_w.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),length:de("length"),topRadius:de("topRadius"),bottomRadius:de("bottomRadius"),heightReference:de("heightReference"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),numberOfVerticalLines:de("numberOfVerticalLines"),slices:de("slices"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});_w.prototype.clone=function(e){return l(e)?(e.show=this.show,e.length=this.length,e.topRadius=this.topRadius,e.bottomRadius=this.bottomRadius,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.numberOfVerticalLines=this.numberOfVerticalLines,e.slices=this.slices,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new _w(this)};_w.prototype.merge=function(e){this.show=this.show??e.show,this.length=this.length??e.length,this.topRadius=this.topRadius??e.topRadius,this.bottomRadius=this.bottomRadius??e.bottomRadius,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.numberOfVerticalLines=this.numberOfVerticalLines??e.numberOfVerticalLines,this.slices=this.slices??e.slices,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var vI=_w;function yw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._semiMajorAxis=void 0,this._semiMajorAxisSubscription=void 0,this._semiMinorAxis=void 0,this._semiMinorAxisSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._numberOfVerticalLines=void 0,this._numberOfVerticalLinesSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(yw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),semiMajorAxis:de("semiMajorAxis"),semiMinorAxis:de("semiMinorAxis"),height:de("height"),heightReference:de("heightReference"),extrudedHeight:de("extrudedHeight"),extrudedHeightReference:de("extrudedHeightReference"),rotation:de("rotation"),stRotation:de("stRotation"),granularity:de("granularity"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),numberOfVerticalLines:de("numberOfVerticalLines"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex")});yw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.semiMajorAxis=this.semiMajorAxis,e.semiMinorAxis=this.semiMinorAxis,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.rotation=this.rotation,e.stRotation=this.stRotation,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.numberOfVerticalLines=this.numberOfVerticalLines,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new yw(this)};yw.prototype.merge=function(e){this.show=this.show??e.show,this.semiMajorAxis=this.semiMajorAxis??e.semiMajorAxis,this.semiMinorAxis=this.semiMinorAxis??e.semiMinorAxis,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.rotation=this.rotation??e.rotation,this.stRotation=this.stRotation??e.stRotation,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.numberOfVerticalLines=this.numberOfVerticalLines??e.numberOfVerticalLines,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var PI=yw;function Cw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._radii=void 0,this._radiiSubscription=void 0,this._innerRadii=void 0,this._innerRadiiSubscription=void 0,this._minimumClock=void 0,this._minimumClockSubscription=void 0,this._maximumClock=void 0,this._maximumClockSubscription=void 0,this._minimumCone=void 0,this._minimumConeSubscription=void 0,this._maximumCone=void 0,this._maximumConeSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._stackPartitions=void 0,this._stackPartitionsSubscription=void 0,this._slicePartitions=void 0,this._slicePartitionsSubscription=void 0,this._subdivisions=void 0,this._subdivisionsSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Cw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),radii:de("radii"),innerRadii:de("innerRadii"),minimumClock:de("minimumClock"),maximumClock:de("maximumClock"),minimumCone:de("minimumCone"),maximumCone:de("maximumCone"),heightReference:de("heightReference"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),stackPartitions:de("stackPartitions"),slicePartitions:de("slicePartitions"),subdivisions:de("subdivisions"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});Cw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.radii=this.radii,e.innerRadii=this.innerRadii,e.minimumClock=this.minimumClock,e.maximumClock=this.maximumClock,e.minimumCone=this.minimumCone,e.maximumCone=this.maximumCone,e.heightReference=this.heightReference,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.stackPartitions=this.stackPartitions,e.slicePartitions=this.slicePartitions,e.subdivisions=this.subdivisions,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new Cw(this)};Cw.prototype.merge=function(e){this.show=this.show??e.show,this.radii=this.radii??e.radii,this.innerRadii=this.innerRadii??e.innerRadii,this.minimumClock=this.minimumClock??e.minimumClock,this.maximumClock=this.maximumClock??e.maximumClock,this.minimumCone=this.minimumCone??e.minimumCone,this.maximumCone=this.maximumCone??e.maximumCone,this.heightReference=this.heightReference??e.heightReference,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.stackPartitions=this.stackPartitions??e.stackPartitions,this.slicePartitions=this.slicePartitions??e.slicePartitions,this.subdivisions=this.subdivisions??e.subdivisions,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var RI=Cw;function Ew(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._text=void 0,this._textSubscription=void 0,this._font=void 0,this._fontSubscription=void 0,this._style=void 0,this._styleSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._showBackground=void 0,this._showBackgroundSubscription=void 0,this._backgroundColor=void 0,this._backgroundColorSubscription=void 0,this._backgroundPadding=void 0,this._backgroundPaddingSubscription=void 0,this._pixelOffset=void 0,this._pixelOffsetSubscription=void 0,this._eyeOffset=void 0,this._eyeOffsetSubscription=void 0,this._horizontalOrigin=void 0,this._horizontalOriginSubscription=void 0,this._verticalOrigin=void 0,this._verticalOriginSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._fillColor=void 0,this._fillColorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._pixelOffsetScaleByDistance=void 0,this._pixelOffsetScaleByDistanceSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Ew.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),text:de("text"),font:de("font"),style:de("style"),scale:de("scale"),showBackground:de("showBackground"),backgroundColor:de("backgroundColor"),backgroundPadding:de("backgroundPadding"),pixelOffset:de("pixelOffset"),eyeOffset:de("eyeOffset"),horizontalOrigin:de("horizontalOrigin"),verticalOrigin:de("verticalOrigin"),heightReference:de("heightReference"),fillColor:de("fillColor"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),translucencyByDistance:de("translucencyByDistance"),pixelOffsetScaleByDistance:de("pixelOffsetScaleByDistance"),scaleByDistance:de("scaleByDistance"),distanceDisplayCondition:de("distanceDisplayCondition"),disableDepthTestDistance:de("disableDepthTestDistance")});Ew.prototype.clone=function(e){return l(e)?(e.show=this.show,e.text=this.text,e.font=this.font,e.style=this.style,e.scale=this.scale,e.showBackground=this.showBackground,e.backgroundColor=this.backgroundColor,e.backgroundPadding=this.backgroundPadding,e.pixelOffset=this.pixelOffset,e.eyeOffset=this.eyeOffset,e.horizontalOrigin=this.horizontalOrigin,e.verticalOrigin=this.verticalOrigin,e.heightReference=this.heightReference,e.fillColor=this.fillColor,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.translucencyByDistance=this.translucencyByDistance,e.pixelOffsetScaleByDistance=this.pixelOffsetScaleByDistance,e.scaleByDistance=this.scaleByDistance,e.distanceDisplayCondition=this.distanceDisplayCondition,e.disableDepthTestDistance=this.disableDepthTestDistance,e):new Ew(this)};Ew.prototype.merge=function(e){this.show=this.show??e.show,this.text=this.text??e.text,this.font=this.font??e.font,this.style=this.style??e.style,this.scale=this.scale??e.scale,this.showBackground=this.showBackground??e.showBackground,this.backgroundColor=this.backgroundColor??e.backgroundColor,this.backgroundPadding=this.backgroundPadding??e.backgroundPadding,this.pixelOffset=this.pixelOffset??e.pixelOffset,this.eyeOffset=this.eyeOffset??e.eyeOffset,this.horizontalOrigin=this.horizontalOrigin??e.horizontalOrigin,this.verticalOrigin=this.verticalOrigin??e.verticalOrigin,this.heightReference=this.heightReference??e.heightReference,this.fillColor=this.fillColor??e.fillColor,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.translucencyByDistance=this.translucencyByDistance??e.translucencyByDistance,this.pixelOffsetScaleByDistance=this.pixelOffsetScaleByDistance??e.pixelOffsetScaleByDistance,this.scaleByDistance=this.scaleByDistance??e.scaleByDistance,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.disableDepthTestDistance=this.disableDepthTestDistance??e.disableDepthTestDistance};var cm=Ew;var HLe=new d(1,1,1),WLe=d.ZERO,jLe=Le.IDENTITY;function $ie(e,t,n){this.translation=d.clone(e??WLe),this.rotation=Le.clone(t??jLe),this.scale=d.clone(n??HLe)}$ie.prototype.equals=function(e){return this===e||l(e)&&d.equals(this.translation,e.translation)&&Le.equals(this.rotation,e.rotation)&&d.equals(this.scale,e.scale)};var DC=$ie;var v6=new DC;function Iw(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._translation=void 0,this._translationSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this.translation=e.translation,this.rotation=e.rotation,this.scale=e.scale}Object.defineProperties(Iw.prototype,{isConstant:{get:function(){return j.isConstant(this._translation)&&j.isConstant(this._rotation)&&j.isConstant(this._scale)}},definitionChanged:{get:function(){return this._definitionChanged}},translation:de("translation"),rotation:de("rotation"),scale:de("scale")});var YLe=new K;Iw.prototype.getValue=function(e,t){return l(e)||(e=K.now(YLe)),l(t)||(t=new DC),t.translation=j.getValueOrClonedDefault(this._translation,e,v6.translation,t.translation),t.rotation=j.getValueOrClonedDefault(this._rotation,e,v6.rotation,t.rotation),t.scale=j.getValueOrClonedDefault(this._scale,e,v6.scale,t.scale),t};Iw.prototype.equals=function(e){return this===e||e instanceof Iw&&j.equals(this._translation,e._translation)&&j.equals(this._rotation,e._rotation)&&j.equals(this._scale,e._scale)};var MI=Iw;function WA(e,t){this._propertyNames=[],this._definitionChanged=new _e,l(e)&&this.merge(e,t)}Object.defineProperties(WA.prototype,{propertyNames:{get:function(){return this._propertyNames}},isConstant:{get:function(){let e=this._propertyNames;for(let t=0,n=e.length;t<n;t++)if(!j.isConstant(this[e[t]]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}}});WA.prototype.hasProperty=function(e){return this._propertyNames.indexOf(e)!==-1};function qLe(e){return new ci(e)}WA.prototype.addProperty=function(e,t,n){this._propertyNames.push(e),Object.defineProperty(this,e,de(e,!0,n??qLe)),l(t)&&(this[e]=t),this._definitionChanged.raiseEvent(this)};WA.prototype.removeProperty=function(e){let n=this._propertyNames.indexOf(e);this._propertyNames.splice(n,1),delete this[e],this._definitionChanged.raiseEvent(this)};var KLe=new K;WA.prototype.getValue=function(e,t){l(e)||(e=K.now(KLe)),l(t)||(t={});let n=this._propertyNames;for(let i=0,o=n.length;i<o;i++){let r=n[i];t[r]=j.getValueOrUndefined(this[r],e,t[r])}return t};WA.prototype.merge=function(e,t){let n=this._propertyNames,i=l(e._propertyNames)?e._propertyNames:Object.keys(e);for(let o=0,r=i.length;o<r;o++){let s=i[o],a=this[s],c=e[s];a===void 0&&n.indexOf(s)===-1&&this.addProperty(s,void 0,t),c!==void 0&&(a!==void 0?l(a)&&l(a.merge)&&a.merge(c):l(c)&&l(c.merge)&&l(c.clone)?this[s]=c.clone():this[s]=c)}};function XLe(e,t){let n=e._propertyNames,i=t._propertyNames,o=n.length;if(o!==i.length)return!1;for(let r=0;r<o;++r){let s=n[r];if(i.indexOf(s)===-1||!j.equals(e[s],t[s]))return!1}return!0}WA.prototype.equals=function(e){return this===e||e instanceof WA&&XLe(this,e)};var Ql=WA;function eoe(e){return new MI(e)}function JLe(e){return new Ql(e,eoe)}function ZLe(e){return new Ql(e)}function $Le(e){return new Ql(e)}function xw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._uri=void 0,this._uriSubscription=void 0,this._scale=void 0,this._scaleSubscription=void 0,this._hasVerticalExaggeration=void 0,this._hasVerticalExaggerationSubscription=void 0,this._enableVerticalExaggeration=void 0,this._enableVerticalExaggerationSubscription=void 0,this._minimumPixelSize=void 0,this._minimumPixelSizeSubscription=void 0,this._maximumScale=void 0,this._maximumScaleSubscription=void 0,this._incrementallyLoadTextures=void 0,this._incrementallyLoadTexturesSubscription=void 0,this._runAnimations=void 0,this._runAnimationsSubscription=void 0,this._clampAnimations=void 0,this._clampAnimationsSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._silhouetteColor=void 0,this._silhouetteColorSubscription=void 0,this._silhouetteSize=void 0,this._silhouetteSizeSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._colorBlendMode=void 0,this._colorBlendModeSubscription=void 0,this._colorBlendAmount=void 0,this._colorBlendAmountSubscription=void 0,this._imageBasedLightingFactor=void 0,this._imageBasedLightingFactorSubscription=void 0,this._environmentMapOptions=void 0,this._environmentMapOptionsSubscription=void 0,this._lightColor=void 0,this._lightColorSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._nodeTransformations=void 0,this._nodeTransformationsSubscription=void 0,this._articulations=void 0,this._articulationsSubscription=void 0,this._clippingPlanes=void 0,this._clippingPlanesSubscription=void 0,this._customShader=void 0,this._customShaderSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(xw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),uri:de("uri"),scale:de("scale"),enableVerticalExaggeration:de("enableVerticalExaggeration"),minimumPixelSize:de("minimumPixelSize"),maximumScale:de("maximumScale"),incrementallyLoadTextures:de("incrementallyLoadTextures"),runAnimations:de("runAnimations"),clampAnimations:de("clampAnimations"),shadows:de("shadows"),heightReference:de("heightReference"),silhouetteColor:de("silhouetteColor"),silhouetteSize:de("silhouetteSize"),color:de("color"),colorBlendMode:de("colorBlendMode"),colorBlendAmount:de("colorBlendAmount"),imageBasedLightingFactor:de("imageBasedLightingFactor"),environmentMapOptions:de("environmentMapOptions",void 0,$Le),lightColor:de("lightColor"),distanceDisplayCondition:de("distanceDisplayCondition"),nodeTransformations:de("nodeTransformations",void 0,JLe),articulations:de("articulations",void 0,ZLe),clippingPlanes:de("clippingPlanes"),customShader:de("customShader")});xw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.uri=this.uri,e.scale=this.scale,e.enableVerticalExaggeration=this.enableVerticalExaggeration,e.minimumPixelSize=this.minimumPixelSize,e.maximumScale=this.maximumScale,e.incrementallyLoadTextures=this.incrementallyLoadTextures,e.runAnimations=this.runAnimations,e.clampAnimations=this.clampAnimations,e.heightReference=this._heightReference,e.silhouetteColor=this.silhouetteColor,e.silhouetteSize=this.silhouetteSize,e.color=this.color,e.colorBlendMode=this.colorBlendMode,e.colorBlendAmount=this.colorBlendAmount,e.imageBasedLightingFactor=this.imageBasedLightingFactor,e.environmentMapOptions=this.environmentMapOptions,e.lightColor=this.lightColor,e.distanceDisplayCondition=this.distanceDisplayCondition,e.nodeTransformations=this.nodeTransformations,e.articulations=this.articulations,e.clippingPlanes=this.clippingPlanes,e.customShader=this.customShader,e):new xw(this)};xw.prototype.merge=function(e){this.show=this.show??e.show,this.uri=this.uri??e.uri,this.scale=this.scale??e.scale,this.enableVerticalExaggeration=this.enableVerticalExaggeration??e.enableVerticalExaggeration,this.minimumPixelSize=this.minimumPixelSize??e.minimumPixelSize,this.maximumScale=this.maximumScale??e.maximumScale,this.incrementallyLoadTextures=this.incrementallyLoadTextures??e.incrementallyLoadTextures,this.runAnimations=this.runAnimations??e.runAnimations,this.clampAnimations=this.clampAnimations??e.clampAnimations,this.shadows=this.shadows??e.shadows,this.heightReference=this.heightReference??e.heightReference,this.silhouetteColor=this.silhouetteColor??e.silhouetteColor,this.silhouetteSize=this.silhouetteSize??e.silhouetteSize,this.color=this.color??e.color,this.colorBlendMode=this.colorBlendMode??e.colorBlendMode,this.colorBlendAmount=this.colorBlendAmount??e.colorBlendAmount,this.imageBasedLightingFactor=this.imageBasedLightingFactor??e.imageBasedLightingFactor,this.environmentMapOptions=this.environmentMapOptions??e.environmentMapOptions,this.lightColor=this.lightColor??e.lightColor,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.clippingPlanes=this.clippingPlanes??e.clippingPlanes,this.customShader=this.customShader??e.customShader;let t=e.nodeTransformations;if(l(t)){let i=this.nodeTransformations;l(i)?i.merge(t):this.nodeTransformations=new Ql(t,eoe)}let n=e.articulations;if(l(n)){let i=this.articulations;l(i)?i.merge(n):this.articulations=new Ql(n)}};var Dg=xw;function bw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._uri=void 0,this._uriSubscription=void 0,this._maximumScreenSpaceError=void 0,this._maximumScreenSpaceErrorSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(bw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),uri:de("uri"),maximumScreenSpaceError:de("maximumScreenSpaceError")});bw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.uri=this.uri,e.maximumScreenSpaceError=this.maximumScreenSpaceError,e):new bw(this)};bw.prototype.merge=function(e){this.show=this.show??e.show,this.uri=this.uri??e.uri,this.maximumScreenSpaceError=this.maximumScreenSpaceError??e.maximumScreenSpaceError};var NI=bw;function Tw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._leadTime=void 0,this._leadTimeSubscription=void 0,this._trailTime=void 0,this._trailTimeSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._resolution=void 0,this._resolutionSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Tw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),leadTime:de("leadTime"),trailTime:de("trailTime"),width:de("width"),resolution:de("resolution"),material:Xo("material"),distanceDisplayCondition:de("distanceDisplayCondition")});Tw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.leadTime=this.leadTime,e.trailTime=this.trailTime,e.width=this.width,e.resolution=this.resolution,e.material=this.material,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new Tw(this)};Tw.prototype.merge=function(e){this.show=this.show??e.show,this.leadTime=this.leadTime??e.leadTime,this.trailTime=this.trailTime??e.trailTime,this.width=this.width??e.width,this.resolution=this.resolution??e.resolution,this.material=this.material??e.material,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var vg=Tw;function Sw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._plane=void 0,this._planeSubscription=void 0,this._dimensions=void 0,this._dimensionsSubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Sw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),plane:de("plane"),dimensions:de("dimensions"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});Sw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.plane=this.plane,e.dimensions=this.dimensions,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new Sw(this)};Sw.prototype.merge=function(e){this.show=this.show??e.show,this.plane=this.plane??e.plane,this.dimensions=this.dimensions??e.dimensions,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var oO=Sw;function ww(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._pixelSize=void 0,this._pixelSizeSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._color=void 0,this._colorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._scaleByDistance=void 0,this._scaleByDistanceSubscription=void 0,this._translucencyByDistance=void 0,this._translucencyByDistanceSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._disableDepthTestDistance=void 0,this._disableDepthTestDistanceSubscription=void 0,this._splitDirection=void 0,this._splitDirectionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(ww.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),pixelSize:de("pixelSize"),heightReference:de("heightReference"),color:de("color"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),scaleByDistance:de("scaleByDistance"),translucencyByDistance:de("translucencyByDistance"),distanceDisplayCondition:de("distanceDisplayCondition"),disableDepthTestDistance:de("disableDepthTestDistance"),splitDirection:de("splitDirection")});ww.prototype.clone=function(e){return l(e)?(e.show=this.show,e.pixelSize=this.pixelSize,e.heightReference=this.heightReference,e.color=this.color,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.scaleByDistance=this.scaleByDistance,e.translucencyByDistance=this._translucencyByDistance,e.distanceDisplayCondition=this.distanceDisplayCondition,e.disableDepthTestDistance=this.disableDepthTestDistance,e.splitDirection=this.splitDirection,e):new ww(this)};ww.prototype.merge=function(e){this.show=this.show??e.show,this.pixelSize=this.pixelSize??e.pixelSize,this.heightReference=this.heightReference??e.heightReference,this.color=this.color??e.color,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.scaleByDistance=this.scaleByDistance??e.scaleByDistance,this.translucencyByDistance=this._translucencyByDistance??e.translucencyByDistance,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.disableDepthTestDistance=this.disableDepthTestDistance??e.disableDepthTestDistance,this.splitDirection=this.splitDirection??e.splitDirection};var LI=ww;function eOe(e,t){this.positions=l(e)?e:[],this.holes=l(t)?t:[]}var xc=eOe;function tOe(e){return Array.isArray(e)&&(e=new xc(e)),new ci(e)}function Bw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._hierarchy=void 0,this._hierarchySubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._perPositionHeight=void 0,this._perPositionHeightSubscription=void 0,this._closeTop=void 0,this._closeTopSubscription=void 0,this._closeBottom=void 0,this._closeBottomSubscription=void 0,this._arcType=void 0,this._arcTypeSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this._textureCoordinates=void 0,this._textureCoordinatesSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Bw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),hierarchy:de("hierarchy",void 0,tOe),height:de("height"),heightReference:de("heightReference"),extrudedHeight:de("extrudedHeight"),extrudedHeightReference:de("extrudedHeightReference"),stRotation:de("stRotation"),granularity:de("granularity"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),perPositionHeight:de("perPositionHeight"),closeTop:de("closeTop"),closeBottom:de("closeBottom"),arcType:de("arcType"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex"),textureCoordinates:de("textureCoordinates")});Bw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.hierarchy=this.hierarchy,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.stRotation=this.stRotation,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.perPositionHeight=this.perPositionHeight,e.closeTop=this.closeTop,e.closeBottom=this.closeBottom,e.arcType=this.arcType,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e.textureCoordinates=this.textureCoordinates,e):new Bw(this)};Bw.prototype.merge=function(e){this.show=this.show??e.show,this.hierarchy=this.hierarchy??e.hierarchy,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.stRotation=this.stRotation??e.stRotation,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.perPositionHeight=this.perPositionHeight??e.perPositionHeight,this.closeTop=this.closeTop??e.closeTop,this.closeBottom=this.closeBottom??e.closeBottom,this.arcType=this.arcType??e.arcType,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex,this.textureCoordinates=this.textureCoordinates??e.textureCoordinates};var lm=Bw;function Dw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._width=void 0,this._widthSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._depthFailMaterial=void 0,this._depthFailMaterialSubscription=void 0,this._arcType=void 0,this._arcTypeSubscription=void 0,this._clampToGround=void 0,this._clampToGroundSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Dw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),positions:de("positions"),width:de("width"),granularity:de("granularity"),material:Xo("material"),depthFailMaterial:Xo("depthFailMaterial"),arcType:de("arcType"),clampToGround:de("clampToGround"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex")});Dw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.width=this.width,e.granularity=this.granularity,e.material=this.material,e.depthFailMaterial=this.depthFailMaterial,e.arcType=this.arcType,e.clampToGround=this.clampToGround,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new Dw(this)};Dw.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.width=this.width??e.width,this.granularity=this.granularity??e.granularity,this.material=this.material??e.material,this.depthFailMaterial=this.depthFailMaterial??e.depthFailMaterial,this.arcType=this.arcType??e.arcType,this.clampToGround=this.clampToGround??e.clampToGround,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var $c=Dw;function vw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._shape=void 0,this._shapeSubscription=void 0,this._cornerType=void 0,this._cornerTypeSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubsription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(vw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),positions:de("positions"),shape:de("shape"),cornerType:de("cornerType"),granularity:de("granularity"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});vw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.shape=this.shape,e.cornerType=this.cornerType,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new vw(this)};vw.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.shape=this.shape??e.shape,this.cornerType=this.cornerType??e.cornerType,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var OI=vw;function Pw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._coordinates=void 0,this._coordinatesSubscription=void 0,this._height=void 0,this._heightSubscription=void 0,this._heightReference=void 0,this._heightReferenceSubscription=void 0,this._extrudedHeight=void 0,this._extrudedHeightSubscription=void 0,this._extrudedHeightReference=void 0,this._extrudedHeightReferenceSubscription=void 0,this._rotation=void 0,this._rotationSubscription=void 0,this._stRotation=void 0,this._stRotationSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distancedisplayConditionSubscription=void 0,this._classificationType=void 0,this._classificationTypeSubscription=void 0,this._zIndex=void 0,this._zIndexSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Pw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),coordinates:de("coordinates"),height:de("height"),heightReference:de("heightReference"),extrudedHeight:de("extrudedHeight"),extrudedHeightReference:de("extrudedHeightReference"),rotation:de("rotation"),stRotation:de("stRotation"),granularity:de("granularity"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition"),classificationType:de("classificationType"),zIndex:de("zIndex")});Pw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.coordinates=this.coordinates,e.height=this.height,e.heightReference=this.heightReference,e.extrudedHeight=this.extrudedHeight,e.extrudedHeightReference=this.extrudedHeightReference,e.rotation=this.rotation,e.stRotation=this.stRotation,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e.classificationType=this.classificationType,e.zIndex=this.zIndex,e):new Pw(this)};Pw.prototype.merge=function(e){this.show=this.show??e.show,this.coordinates=this.coordinates??e.coordinates,this.height=this.height??e.height,this.heightReference=this.heightReference??e.heightReference,this.extrudedHeight=this.extrudedHeight??e.extrudedHeight,this.extrudedHeightReference=this.extrudedHeightReference??e.extrudedHeightReference,this.rotation=this.rotation??e.rotation,this.stRotation=this.stRotation??e.stRotation,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition,this.classificationType=this.classificationType??e.classificationType,this.zIndex=this.zIndex??e.zIndex};var um=Pw;function Rw(e){this._definitionChanged=new _e,this._show=void 0,this._showSubscription=void 0,this._positions=void 0,this._positionsSubscription=void 0,this._minimumHeights=void 0,this._minimumHeightsSubscription=void 0,this._maximumHeights=void 0,this._maximumHeightsSubscription=void 0,this._granularity=void 0,this._granularitySubscription=void 0,this._fill=void 0,this._fillSubscription=void 0,this._material=void 0,this._materialSubscription=void 0,this._outline=void 0,this._outlineSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this._shadows=void 0,this._shadowsSubscription=void 0,this._distanceDisplayCondition=void 0,this._distanceDisplayConditionSubscription=void 0,this.merge(e??V.EMPTY_OBJECT)}Object.defineProperties(Rw.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},show:de("show"),positions:de("positions"),minimumHeights:de("minimumHeights"),maximumHeights:de("maximumHeights"),granularity:de("granularity"),fill:de("fill"),material:Xo("material"),outline:de("outline"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth"),shadows:de("shadows"),distanceDisplayCondition:de("distanceDisplayCondition")});Rw.prototype.clone=function(e){return l(e)?(e.show=this.show,e.positions=this.positions,e.minimumHeights=this.minimumHeights,e.maximumHeights=this.maximumHeights,e.granularity=this.granularity,e.fill=this.fill,e.material=this.material,e.outline=this.outline,e.outlineColor=this.outlineColor,e.outlineWidth=this.outlineWidth,e.shadows=this.shadows,e.distanceDisplayCondition=this.distanceDisplayCondition,e):new Rw(this)};Rw.prototype.merge=function(e){this.show=this.show??e.show,this.positions=this.positions??e.positions,this.minimumHeights=this.minimumHeights??e.minimumHeights,this.maximumHeights=this.maximumHeights??e.maximumHeights,this.granularity=this.granularity??e.granularity,this.fill=this.fill??e.fill,this.material=this.material??e.material,this.outline=this.outline??e.outline,this.outlineColor=this.outlineColor??e.outlineColor,this.outlineWidth=this.outlineWidth??e.outlineWidth,this.shadows=this.shadows??e.shadows,this.distanceDisplayCondition=this.distanceDisplayCondition??e.distanceDisplayCondition};var Pg=Rw;var nOe=new Ae,P6=[];function iOe(e){return new Ol(e)}function oOe(e){return de(e,void 0,iOe)}function ra(e,t){return de(e,void 0,function(n){return n instanceof t?n:new t(n)})}function Tf(e){e=e??V.EMPTY_OBJECT;let t=e.id;l(t)||(t=Xn()),this._availability=void 0,this._id=t,this._definitionChanged=new _e,this._name=e.name,this._show=e.show??!0,this._trackingReferenceFrame=e.trackingReferenceFrame??Tg.AUTODETECT,this._parent=void 0,this._propertyNames=["billboard","box","corridor","cylinder","description","ellipse","ellipsoid","label","model","tileset","orientation","path","plane","point","polygon","polyline","polylineVolume","position","properties","rectangle","viewFrom","wall",...P6],this._billboard=void 0,this._billboardSubscription=void 0,this._box=void 0,this._boxSubscription=void 0,this._corridor=void 0,this._corridorSubscription=void 0,this._cylinder=void 0,this._cylinderSubscription=void 0,this._description=void 0,this._descriptionSubscription=void 0,this._ellipse=void 0,this._ellipseSubscription=void 0,this._ellipsoid=void 0,this._ellipsoidSubscription=void 0,this._label=void 0,this._labelSubscription=void 0,this._model=void 0,this._modelSubscription=void 0,this._tileset=void 0,this._tilesetSubscription=void 0,this._orientation=void 0,this._orientationSubscription=void 0,this._path=void 0,this._pathSubscription=void 0,this._plane=void 0,this._planeSubscription=void 0,this._point=void 0,this._pointSubscription=void 0,this._polygon=void 0,this._polygonSubscription=void 0,this._polyline=void 0,this._polylineSubscription=void 0,this._polylineVolume=void 0,this._polylineVolumeSubscription=void 0,this._position=void 0,this._positionSubscription=void 0,this._properties=void 0,this._propertiesSubscription=void 0,this._rectangle=void 0,this._rectangleSubscription=void 0,this._viewFrom=void 0,this._viewFromSubscription=void 0,this._wall=void 0,this._wallSubscription=void 0,this._children=[],this.entityCollection=void 0,this.parent=e.parent,this.merge(e)}function R6(e,t,n){let i=t.length;for(let o=0;o<i;o++){let r=t[o],s=r._show;(!n&&s)!==(n&&s)&&R6(r,r._children,n)}e._definitionChanged.raiseEvent(e,"isShowing",n,!n)}Object.defineProperties(Tf.prototype,{availability:Fl("availability"),id:{get:function(){return this._id}},definitionChanged:{get:function(){return this._definitionChanged}},name:Fl("name"),show:{get:function(){return this._show},set:function(e){if(e===this._show)return;let t=this.isShowing;this._show=e;let n=this.isShowing;t!==n&&R6(this,this._children,n),this._definitionChanged.raiseEvent(this,"show",e,!e)}},trackingReferenceFrame:Fl("trackingReferenceFrame"),isShowing:{get:function(){return this._show&&(!l(this.entityCollection)||this.entityCollection.show)&&(!l(this._parent)||this._parent.isShowing)}},parent:{get:function(){return this._parent},set:function(e){let t=this._parent;if(t===e)return;let n=this.isShowing;if(l(t)){let o=t._children.indexOf(this);t._children.splice(o,1)}this._parent=e,l(e)&&e._children.push(this);let i=this.isShowing;n!==i&&R6(this,this._children,i),this._definitionChanged.raiseEvent(this,"parent",e,t)}},propertyNames:{get:function(){return this._propertyNames}},billboard:ra("billboard",jc),box:ra("box",wI),corridor:ra("corridor",DI),cylinder:ra("cylinder",vI),description:de("description"),ellipse:ra("ellipse",PI),ellipsoid:ra("ellipsoid",RI),label:ra("label",cm),model:ra("model",Dg),tileset:ra("tileset",NI),orientation:de("orientation"),path:ra("path",vg),plane:ra("plane",oO),point:ra("point",LI),polygon:ra("polygon",lm),polyline:ra("polyline",$c),polylineVolume:ra("polylineVolume",OI),properties:ra("properties",Ql),position:oOe("position"),rectangle:ra("rectangle",um),viewFrom:de("viewFrom"),wall:ra("wall",Pg)});Tf.registerEntityType=function(e,t){Object.defineProperties(Tf.prototype,{[e]:ra(e,t)}),P6.includes(e)||P6.push(e)};Tf.prototype.isAvailable=function(e){let t=this._availability;return!l(t)||t.contains(e)};Tf.prototype.addProperty=function(e){this._propertyNames.push(e),Object.defineProperty(this,e,Fl(e,!0))};Tf.prototype.removeProperty=function(e){let n=this._propertyNames.indexOf(e);this._propertyNames.splice(n,1),delete this[e]};Tf.prototype.merge=function(e){this.name=this.name??e.name,this.availability=this.availability??e.availability;let t=this._propertyNames,n=l(e._propertyNames)?e._propertyNames:Object.keys(e),i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r==="parent"||r==="name"||r==="availability"||r==="children")continue;let s=this[r],a=e[r];!l(s)&&t.indexOf(r)===-1&&this.addProperty(r),l(a)&&(l(s)?l(s.merge)&&s.merge(a):l(a.merge)&&l(a.clone)?this[r]=a.clone():this[r]=a)}};var toe=new J,noe=new d,ioe=new Le;Tf.prototype.computeModelMatrix=function(e,t){let n=j.getValueOrUndefined(this._position,e,noe);if(!l(n))return;let i=j.getValueOrUndefined(this._orientation,e,ioe);return l(i)?t=R.fromRotationTranslation(J.fromQuaternion(i,toe),n,t):t=kt.eastNorthUpToFixedFrame(n,void 0,t),t};Tf.prototype.computeModelMatrixForHeightReference=function(e,t,n,i,o){let r=j.getValueOrDefault(t,e,Ze.NONE),s=j.getValueOrUndefined(this._position,e,noe);if(r===Ze.NONE||!l(s)||d.equalsEpsilon(s,d.ZERO,D.EPSILON8))return this.computeModelMatrix(e,o);let a=i.cartesianToCartographic(s,nOe);_f(r)?a.height=n:a.height+=n,s=i.cartographicToCartesian(a,s);let c=j.getValueOrUndefined(this._orientation,e,ioe);return l(c)?o=R.fromRotationTranslation(J.fromQuaternion(c,toe),s,o):o=kt.eastNorthUpToFixedFrame(s,void 0,o),o};Tf.supportsMaterialsforEntitiesOnTerrain=function(e){return Ll.supportsMaterials(e)};Tf.supportsPolylinesOnTerrain=function(e){return sm.isSupported(e)};var _r=Tf;var rOe=new Jt(G.WHITE),sOe=new ci(!0),aOe=new ci(!0),cOe=new ci(!1),lOe=new ci(G.BLACK),uOe=new ci(Dn.DISABLED),fOe=new ci(new Ut),dOe=new ci(Jn.BOTH);function el(e){let t=e.entity,n=e.geometryPropertyName;this._entity=t,this._scene=e.scene,this._fillEnabled=!1,this._isClosed=!1,this._onTerrain=!1,this._dynamic=!1,this._outlineEnabled=!1,this._geometryChanged=new _e,this._showProperty=void 0,this._materialProperty=void 0,this._showOutlineProperty=void 0,this._outlineColorProperty=void 0,this._outlineWidth=1,this._shadowsProperty=void 0,this._distanceDisplayConditionProperty=void 0,this._classificationTypeProperty=void 0,this._options=e.geometryOptions,this._geometryPropertyName=n,this._id=`${n}-${t.id}`,this._observedPropertyNames=e.observedPropertyNames,this._supportsMaterialsforEntitiesOnTerrain=_r.supportsMaterialsforEntitiesOnTerrain(e.scene)}Object.defineProperties(el.prototype,{id:{get:function(){return this._id}},entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!l(this._entity.availability)&&j.isConstant(this._showProperty)&&j.isConstant(this._fillProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},outlineEnabled:{get:function(){return this._outlineEnabled}},hasConstantOutline:{get:function(){return!this._outlineEnabled||!l(this._entity.availability)&&j.isConstant(this._showProperty)&&j.isConstant(this._showOutlineProperty)}},outlineColorProperty:{get:function(){return this._outlineColorProperty}},outlineWidth:{get:function(){return this._outlineWidth}},shadowsProperty:{get:function(){return this._shadowsProperty}},distanceDisplayConditionProperty:{get:function(){return this._distanceDisplayConditionProperty}},classificationTypeProperty:{get:function(){return this._classificationTypeProperty}},isDynamic:{get:function(){return this._dynamic}},isClosed:{get:function(){return this._isClosed}},onTerrain:{get:function(){return this._onTerrain}},geometryChanged:{get:function(){return this._geometryChanged}}});el.prototype.isOutlineVisible=function(e){let t=this._entity;return(this._outlineEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e))??!1};el.prototype.isFilled=function(e){let t=this._entity;return(this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e))??!1};el.prototype.createFillGeometryInstance=me.throwInstantiationError;el.prototype.createOutlineGeometryInstance=me.throwInstantiationError;el.prototype.isDestroyed=function(){return!1};el.prototype.destroy=function(){ue(this)};el.prototype._isHidden=function(e,t){let n=t.show;return l(n)&&n.isConstant&&!n.getValue(je.MINIMUM_VALUE)};el.prototype._isOnTerrain=function(e,t){return!1};el.prototype._getIsClosed=function(e){return!0};el.prototype._isDynamic=me.throwInstantiationError;el.prototype._setStaticOptions=me.throwInstantiationError;el.prototype._onEntityPropertyChanged=function(e,t,n,i){if(this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o)){(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this));return}let r=o.fill,s=l(r)&&r.isConstant?r.getValue(je.MINIMUM_VALUE):!0,a=o.outline,c=l(a);if(c&&a.isConstant&&(c=a.getValue(je.MINIMUM_VALUE)),!s&&!c){(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this));return}let u=o.show;if(this._isHidden(e,o)){(this._fillEnabled||this._outlineEnabled)&&(this._fillEnabled=!1,this._outlineEnabled=!1,this._geometryChanged.raiseEvent(this));return}this._materialProperty=o.material??rOe,this._fillProperty=r??aOe,this._showProperty=u??sOe,this._showOutlineProperty=o.outline??cOe,this._outlineColorProperty=c?o.outlineColor??lOe:void 0,this._shadowsProperty=o.shadows??uOe,this._distanceDisplayConditionProperty=o.distanceDisplayCondition??fOe,this._classificationTypeProperty=o.classificationType??dOe,this._fillEnabled=s;let f=this._isOnTerrain(e,o)&&(this._supportsMaterialsforEntitiesOnTerrain||this._materialProperty instanceof Jt);if(c&&f&&(yt(yt.geometryOutlines),c=!1),this._onTerrain=f,this._outlineEnabled=c,this._isDynamic(e,o))this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this));else{this._setStaticOptions(e,o),this._isClosed=this._getIsClosed(this._options);let h=o.outlineWidth;this._outlineWidth=l(h)?h.getValue(je.MINIMUM_VALUE):1,this._dynamic=!1,this._geometryChanged.raiseEvent(this)}};el.prototype.createDynamicUpdater=function(e,t){return new this.constructor.DynamicGeometryUpdater(this,e,t)};var Ci=el;function FI(e,t){this._callback=void 0,this._isConstant=void 0,this._definitionChanged=new _e,this.setCallback(e,t)}Object.defineProperties(FI.prototype,{isConstant:{get:function(){return this._isConstant}},definitionChanged:{get:function(){return this._definitionChanged}}});var hOe=new K;FI.prototype.getValue=function(e,t){return l(e)||(e=K.now(hOe)),this._callback(e,t)};FI.prototype.setCallback=function(e,t){let n=this._callback!==e||this._isConstant!==t;this._callback=e,this._isConstant=t,n&&this._definitionChanged.raiseEvent(this)};FI.prototype.equals=function(e){return this===e||e instanceof FI&&this._callback===e._callback&&this._isConstant===e._isConstant};var fm=FI;var ooe=new d;function QI(e,t,n,i){this._scene=e,this._heightReference=n,this._extrudedHeightReference=i,this._positionProperty=t,this._position=new d,this._cartographicPosition=new Ae,this._normal=new d,this._definitionChanged=new _e,this._terrainHeight=0,this._removeCallbackFunc=void 0,this._removeEventListener=void 0,this._removeModeListener=void 0;let o=this;if(l(e.globe)&&(this._removeEventListener=e.terrainProviderChanged.addEventListener(function(){o._updateClamping()}),this._removeModeListener=e.morphComplete.addEventListener(function(){o._updateClamping()})),t.isConstant){let r=t.getValue(je.MINIMUM_VALUE,ooe);if(!l(r)||d.equals(r,d.ZERO)||!l(e.globe))return;this._position=d.clone(r,this._position),this._updateClamping(),this._normal=e.ellipsoid.geodeticSurfaceNormal(r,this._normal)}}Object.defineProperties(QI.prototype,{isConstant:{get:function(){return!1}},definitionChanged:{get:function(){return this._definitionChanged}}});QI.prototype._updateClamping=function(){l(this._removeCallbackFunc)&&this._removeCallbackFunc();let e=this._scene,t=this._position;if(d.equals(t,d.ZERO)){this._terrainHeight=0;return}let i=e.ellipsoid.cartesianToCartographic(t,this._cartographicPosition),o=e.getHeight(i,this._heightReference);l(o)?this._terrainHeight=o:this._terrainHeight=0;let r=s=>{this._terrainHeight=s.height,this.definitionChanged.raiseEvent()};this._removeCallbackFunc=e.updateHeight(i,r,this._heightReference)};var mOe=new K;QI.prototype.getValue=function(e,t){l(e)||(e=K.now(mOe));let n=j.getValueOrDefault(this._heightReference,e,Ze.NONE),i=j.getValueOrDefault(this._extrudedHeightReference,e,Ze.NONE);if(n===Ze.NONE&&!rI(i))return this._position=d.clone(d.ZERO,this._position),d.clone(d.ZERO,t);if(this._positionProperty.isConstant)return d.multiplyByScalar(this._normal,this._terrainHeight,t);let o=this._scene,r=this._positionProperty.getValue(e,ooe);if(!l(r)||d.equals(r,d.ZERO)||!l(o.globe))return d.clone(d.ZERO,t);if(d.equalsEpsilon(this._position,r,D.EPSILON10))return d.multiplyByScalar(this._normal,this._terrainHeight,t);this._position=d.clone(r,this._position),this._updateClamping();let s=o.ellipsoid.geodeticSurfaceNormal(r,this._normal);return d.multiplyByScalar(s,this._terrainHeight,t)};QI.prototype.isDestroyed=function(){return!1};QI.prototype.destroy=function(){return l(this._removeEventListener)&&this._removeEventListener(),l(this._removeModeListener)&&this._removeModeListener(),l(this._removeCallbackFunc)&&this._removeCallbackFunc(),ue(this)};var kI=QI;function AOe(e,t,n,i){if(Ci.prototype._onEntityPropertyChanged.call(this,e,t,n,i),this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o))return;l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0);let r=o.heightReference;if(l(r)){let s=new fm(this._computeCenter.bind(this),!this._dynamic);this._terrainOffsetProperty=new kI(this._scene,s,r)}}var Rg=AOe;var roe=d.ZERO,soe=new d,pOe=new d,aoe=new G;function gOe(e){this.id=e,this.vertexFormat=void 0,this.dimensions=void 0,this.offsetAttribute=void 0}function bu(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new gOe(e),geometryPropertyName:"box",observedPropertyNames:["availability","position","orientation","box"]}),this._onEntityPropertyChanged(e,"box",e.box,void 0)}l(Object.create)&&(bu.prototype=Object.create(Ci.prototype),bu.prototype.constructor=bu);Object.defineProperties(bu.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});bu.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=Kn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r,color:void 0,offset:void 0};if(this._materialProperty instanceof Jt){let a;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,aoe)),l(a)||(a=G.WHITE),s.color=en.fromColor(a)}return l(this._options.offsetAttribute)&&(s.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,roe,soe))),new Rt({id:t,geometry:yc.fromDimensions(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.box.heightReference,this._options.dimensions.z*.5,this._scene.ellipsoid),attributes:s})};bu.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,aoe),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,roe,soe))),new Rt({id:t,geometry:$h.fromDimensions(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.box.heightReference,this._options.dimensions.z*.5,this._scene.ellipsoid),attributes:r})};bu.prototype._computeCenter=function(e,t){return j.getValueOrUndefined(this._entity.position,e,t)};bu.prototype._isHidden=function(e,t){return!l(t.dimensions)||!l(e.position)||Ci.prototype._isHidden.call(this,e,t)};bu.prototype._isDynamic=function(e,t){return!e.position.isConstant||!j.isConstant(e.orientation)||!t.dimensions.isConstant||!j.isConstant(t.outlineWidth)};bu.prototype._setStaticOptions=function(e,t){let n=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof Jt?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,i.dimensions=t.dimensions.getValue(je.MINIMUM_VALUE,i.dimensions),i.offsetAttribute=n!==Ze.NONE?hn.ALL:void 0};bu.prototype._onEntityPropertyChanged=Rg;bu.DynamicGeometryUpdater=UI;function UI(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(UI.prototype=Object.create(yi.prototype),UI.prototype.constructor=UI);UI.prototype._isHidden=function(e,t,n){let i=j.getValueOrUndefined(e.position,n,pOe),o=this._options.dimensions;return!l(i)||!l(o)||yi.prototype._isHidden.call(this,e,t,n)};UI.prototype._setOptions=function(e,t,n){let i=j.getValueOrDefault(t.heightReference,n,Ze.NONE),o=this._options;o.dimensions=j.getValueOrUndefined(t.dimensions,n,o.dimensions),o.offsetAttribute=i!==Ze.NONE?hn.ALL:void 0};var rO=bu;function vC(e,t,n){this._callback=void 0,this._isConstant=void 0,this._referenceFrame=n??eo.FIXED,this._definitionChanged=new _e,this.setCallback(e,t)}Object.defineProperties(vC.prototype,{isConstant:{get:function(){return this._isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var _Oe=new K;vC.prototype.getValue=function(e,t){return l(e)||(e=K.now(_Oe)),this.getValueInReferenceFrame(e,eo.FIXED,t)};vC.prototype.setCallback=function(e,t){let n=this._callback!==e||this._isConstant!==t;this._callback=e,this._isConstant=t,n&&this._definitionChanged.raiseEvent(this)};vC.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._callback(e,n);return am.convertToReferenceFrame(e,i,this._referenceFrame,t,n)};vC.prototype.equals=function(e){return this===e||e instanceof vC&&this._callback===e._callback&&this._isConstant===e._isConstant&&this._referenceFrame===e._referenceFrame};var sO=vC;/*! @license DOMPurify 3.2.6 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.2.6/LICENSE */var{entries:goe,setPrototypeOf:coe,isFrozen:yOe,getPrototypeOf:COe,getOwnPropertyDescriptor:EOe}=Object,{freeze:nl,seal:Sf,create:_oe}=Object,{apply:Q6,construct:k6}=typeof Reflect<"u"&&Reflect;nl||(nl=function(t){return t});Sf||(Sf=function(t){return t});Q6||(Q6=function(t,n,i){return t.apply(n,i)});k6||(k6=function(t,n){return new t(...n)});var aO=il(Array.prototype.forEach),IOe=il(Array.prototype.lastIndexOf),loe=il(Array.prototype.pop),Mw=il(Array.prototype.push),xOe=il(Array.prototype.splice),lO=il(String.prototype.toLowerCase),M6=il(String.prototype.toString),uoe=il(String.prototype.match),Nw=il(String.prototype.replace),bOe=il(String.prototype.indexOf),TOe=il(String.prototype.trim),zd=il(Object.prototype.hasOwnProperty),tl=il(RegExp.prototype.test),Lw=SOe(TypeError);function il(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];return Q6(e,t,i)}}function SOe(e){return function(){for(var t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return k6(e,n)}}function Fi(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:lO;coe&&coe(e,null);let i=t.length;for(;i--;){let o=t[i];if(typeof o=="string"){let r=n(o);r!==o&&(yOe(t)||(t[i]=r),o=r)}e[o]=!0}return e}function wOe(e){for(let t=0;t<e.length;t++)zd(e,t)||(e[t]=null);return e}function jA(e){let t=_oe(null);for(let[n,i]of goe(e))zd(e,n)&&(Array.isArray(i)?t[n]=wOe(i):i&&typeof i=="object"&&i.constructor===Object?t[n]=jA(i):t[n]=i);return t}function Ow(e,t){for(;e!==null;){let i=EOe(e,t);if(i){if(i.get)return il(i.get);if(typeof i.value=="function")return il(i.value)}e=COe(e)}function n(){return null}return n}var foe=nl(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","section","select","shadow","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),N6=nl(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","filter","font","g","glyph","glyphref","hkern","image","line","lineargradient","marker","mask","metadata","mpath","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),L6=nl(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),BOe=nl(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),O6=nl(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),DOe=nl(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),doe=nl(["#text"]),hoe=nl(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","face","for","headers","height","hidden","high","href","hreflang","id","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),F6=nl(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),moe=nl(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),cO=nl(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),vOe=Sf(/\{\{[\w\W]*|[\w\W]*\}\}/gm),POe=Sf(/<%[\w\W]*|[\w\W]*%>/gm),ROe=Sf(/\$\{[\w\W]*/gm),MOe=Sf(/^data-[\-\w.\u00B7-\uFFFF]+$/),NOe=Sf(/^aria-[\-\w]+$/),yoe=Sf(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),LOe=Sf(/^(?:\w+script|data):/i),OOe=Sf(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Coe=Sf(/^html$/i),FOe=Sf(/^[a-z][.\w]*(-[.\w]+)+$/i),Aoe=Object.freeze({__proto__:null,ARIA_ATTR:NOe,ATTR_WHITESPACE:OOe,CUSTOM_ELEMENT:FOe,DATA_ATTR:MOe,DOCTYPE_NAME:Coe,ERB_EXPR:POe,IS_ALLOWED_URI:yoe,IS_SCRIPT_OR_DATA:LOe,MUSTACHE_EXPR:vOe,TMPLIT_EXPR:ROe}),Fw={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,progressingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},QOe=function(){return typeof window>"u"?null:window},kOe=function(t,n){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let i=null,o="data-tt-policy-suffix";n&&n.hasAttribute(o)&&(i=n.getAttribute(o));let r="dompurify"+(i?"#"+i:"");try{return t.createPolicy(r,{createHTML(s){return s},createScriptURL(s){return s}})}catch{return console.warn("TrustedTypes policy "+r+" could not be created."),null}},poe=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function Eoe(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:QOe(),t=cn=>Eoe(cn);if(t.version="3.2.6",t.removed=[],!e||!e.document||e.document.nodeType!==Fw.document||!e.Element)return t.isSupported=!1,t;let{document:n}=e,i=n,o=i.currentScript,{DocumentFragment:r,HTMLTemplateElement:s,Node:a,Element:c,NodeFilter:u,NamedNodeMap:f=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:h,DOMParser:A,trustedTypes:g}=e,m=c.prototype,_=Ow(m,"cloneNode"),y=Ow(m,"remove"),C=Ow(m,"nextSibling"),E=Ow(m,"childNodes"),I=Ow(m,"parentNode");if(typeof s=="function"){let cn=n.createElement("template");cn.content&&cn.content.ownerDocument&&(n=cn.content.ownerDocument)}let b,S="",{implementation:B,createNodeIterator:v,createDocumentFragment:P,getElementsByTagName:N}=n,{importNode:L}=i,p=poe();t.isSupported=typeof goe=="function"&&typeof I=="function"&&B&&B.createHTMLDocument!==void 0;let{MUSTACHE_EXPR:x,ERB_EXPR:T,TMPLIT_EXPR:w,DATA_ATTR:M,ARIA_ATTR:O,IS_SCRIPT_OR_DATA:U,ATTR_WHITESPACE:Q,CUSTOM_ELEMENT:z}=Aoe,{IS_ALLOWED_URI:F}=Aoe,H=null,W=Fi({},[...foe,...N6,...L6,...O6,...doe]),Z=null,Y=Fi({},[...hoe,...F6,...moe,...cO]),$=Object.seal(_oe(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),X=null,he=null,ge=!0,fe=!0,ye=!1,Ie=!0,ve=!1,Te=!0,ke=!1,Ge=!1,qe=!1,tt=!1,$t=!1,it=!1,tn=!0,Wt=!1,vt="user-content-",bi=!0,di=!1,Ot={},Tt=null,ii=Fi({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Ct=null,Ro=Fi({},["audio","video","img","source","image","track"]),Qo=null,ya=Fi({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),mr="http://www.w3.org/1998/Math/MathML",Tr="http://www.w3.org/2000/svg",Oe="http://www.w3.org/1999/xhtml",lt=Oe,Ke=!1,$e=null,pt=Fi({},[mr,Tr,Oe],M6),Xt=Fi({},["mi","mo","mn","ms","mtext"]),xn=Fi({},["annotation-xml"]),lo=Fi({},["title","style","font","a","script"]),ro=null,$s=["application/xhtml+xml","text/html"],ea="text/html",Vn=null,_i=null,_s=n.createElement("form"),Wo=function(Se){return Se instanceof RegExp||Se instanceof Function},Ca=function(){let Se=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(_i&&_i===Se)){if((!Se||typeof Se!="object")&&(Se={}),Se=jA(Se),ro=$s.indexOf(Se.PARSER_MEDIA_TYPE)===-1?ea:Se.PARSER_MEDIA_TYPE,Vn=ro==="application/xhtml+xml"?M6:lO,H=zd(Se,"ALLOWED_TAGS")?Fi({},Se.ALLOWED_TAGS,Vn):W,Z=zd(Se,"ALLOWED_ATTR")?Fi({},Se.ALLOWED_ATTR,Vn):Y,$e=zd(Se,"ALLOWED_NAMESPACES")?Fi({},Se.ALLOWED_NAMESPACES,M6):pt,Qo=zd(Se,"ADD_URI_SAFE_ATTR")?Fi(jA(ya),Se.ADD_URI_SAFE_ATTR,Vn):ya,Ct=zd(Se,"ADD_DATA_URI_TAGS")?Fi(jA(Ro),Se.ADD_DATA_URI_TAGS,Vn):Ro,Tt=zd(Se,"FORBID_CONTENTS")?Fi({},Se.FORBID_CONTENTS,Vn):ii,X=zd(Se,"FORBID_TAGS")?Fi({},Se.FORBID_TAGS,Vn):jA({}),he=zd(Se,"FORBID_ATTR")?Fi({},Se.FORBID_ATTR,Vn):jA({}),Ot=zd(Se,"USE_PROFILES")?Se.USE_PROFILES:!1,ge=Se.ALLOW_ARIA_ATTR!==!1,fe=Se.ALLOW_DATA_ATTR!==!1,ye=Se.ALLOW_UNKNOWN_PROTOCOLS||!1,Ie=Se.ALLOW_SELF_CLOSE_IN_ATTR!==!1,ve=Se.SAFE_FOR_TEMPLATES||!1,Te=Se.SAFE_FOR_XML!==!1,ke=Se.WHOLE_DOCUMENT||!1,tt=Se.RETURN_DOM||!1,$t=Se.RETURN_DOM_FRAGMENT||!1,it=Se.RETURN_TRUSTED_TYPE||!1,qe=Se.FORCE_BODY||!1,tn=Se.SANITIZE_DOM!==!1,Wt=Se.SANITIZE_NAMED_PROPS||!1,bi=Se.KEEP_CONTENT!==!1,di=Se.IN_PLACE||!1,F=Se.ALLOWED_URI_REGEXP||yoe,lt=Se.NAMESPACE||Oe,Xt=Se.MATHML_TEXT_INTEGRATION_POINTS||Xt,xn=Se.HTML_INTEGRATION_POINTS||xn,$=Se.CUSTOM_ELEMENT_HANDLING||{},Se.CUSTOM_ELEMENT_HANDLING&&Wo(Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&($.tagNameCheck=Se.CUSTOM_ELEMENT_HANDLING.tagNameCheck),Se.CUSTOM_ELEMENT_HANDLING&&Wo(Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&($.attributeNameCheck=Se.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),Se.CUSTOM_ELEMENT_HANDLING&&typeof Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&($.allowCustomizedBuiltInElements=Se.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),ve&&(fe=!1),$t&&(tt=!0),Ot&&(H=Fi({},doe),Z=[],Ot.html===!0&&(Fi(H,foe),Fi(Z,hoe)),Ot.svg===!0&&(Fi(H,N6),Fi(Z,F6),Fi(Z,cO)),Ot.svgFilters===!0&&(Fi(H,L6),Fi(Z,F6),Fi(Z,cO)),Ot.mathMl===!0&&(Fi(H,O6),Fi(Z,moe),Fi(Z,cO))),Se.ADD_TAGS&&(H===W&&(H=jA(H)),Fi(H,Se.ADD_TAGS,Vn)),Se.ADD_ATTR&&(Z===Y&&(Z=jA(Z)),Fi(Z,Se.ADD_ATTR,Vn)),Se.ADD_URI_SAFE_ATTR&&Fi(Qo,Se.ADD_URI_SAFE_ATTR,Vn),Se.FORBID_CONTENTS&&(Tt===ii&&(Tt=jA(Tt)),Fi(Tt,Se.FORBID_CONTENTS,Vn)),bi&&(H["#text"]=!0),ke&&Fi(H,["html","head","body"]),H.table&&(Fi(H,["tbody"]),delete X.tbody),Se.TRUSTED_TYPES_POLICY){if(typeof Se.TRUSTED_TYPES_POLICY.createHTML!="function")throw Lw('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof Se.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Lw('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');b=Se.TRUSTED_TYPES_POLICY,S=b.createHTML("")}else b===void 0&&(b=kOe(g,o)),b!==null&&typeof S=="string"&&(S=b.createHTML(""));nl&&nl(Se),_i=Se}},uo=Fi({},[...N6,...L6,...BOe]),jo=Fi({},[...O6,...DOe]),df=function(Se){let St=I(Se);(!St||!St.tagName)&&(St={namespaceURI:lt,tagName:"template"});let _n=lO(Se.tagName),er=lO(St.tagName);return $e[Se.namespaceURI]?Se.namespaceURI===Tr?St.namespaceURI===Oe?_n==="svg":St.namespaceURI===mr?_n==="svg"&&(er==="annotation-xml"||Xt[er]):!!uo[_n]:Se.namespaceURI===mr?St.namespaceURI===Oe?_n==="math":St.namespaceURI===Tr?_n==="math"&&xn[er]:!!jo[_n]:Se.namespaceURI===Oe?St.namespaceURI===Tr&&!xn[er]||St.namespaceURI===mr&&!Xt[er]?!1:!jo[_n]&&(lo[_n]||!uo[_n]):!!(ro==="application/xhtml+xml"&&$e[Se.namespaceURI]):!1},Ar=function(Se){Mw(t.removed,{element:Se});try{I(Se).removeChild(Se)}catch{y(Se)}},ys=function(Se,St){try{Mw(t.removed,{attribute:St.getAttributeNode(Se),from:St})}catch{Mw(t.removed,{attribute:null,from:St})}if(St.removeAttribute(Se),Se==="is")if(tt||$t)try{Ar(St)}catch{}else try{St.setAttribute(Se,"")}catch{}},Qs=function(Se){let St=null,_n=null;if(qe)Se="<remove></remove>"+Se;else{let Cs=uoe(Se,/^[\r\n\t ]+/);_n=Cs&&Cs[0]}ro==="application/xhtml+xml"&<===Oe&&(Se='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+Se+"</body></html>");let er=b?b.createHTML(Se):Se;if(lt===Oe)try{St=new A().parseFromString(er,ro)}catch{}if(!St||!St.documentElement){St=B.createDocument(lt,"template",null);try{St.documentElement.innerHTML=Ke?S:er}catch{}}let Ea=St.body||St.documentElement;return Se&&_n&&Ea.insertBefore(n.createTextNode(_n),Ea.childNodes[0]||null),lt===Oe?N.call(St,ke?"html":"body")[0]:ke?St.documentElement:Ea},vd=function(Se){return v.call(Se.ownerDocument||Se,Se,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT|u.SHOW_PROCESSING_INSTRUCTION|u.SHOW_CDATA_SECTION,null)},rs=function(Se){return Se instanceof h&&(typeof Se.nodeName!="string"||typeof Se.textContent!="string"||typeof Se.removeChild!="function"||!(Se.attributes instanceof f)||typeof Se.removeAttribute!="function"||typeof Se.setAttribute!="function"||typeof Se.namespaceURI!="string"||typeof Se.insertBefore!="function"||typeof Se.hasChildNodes!="function")},qa=function(Se){return typeof a=="function"&&Se instanceof a};function Ka(cn,Se,St){aO(cn,_n=>{_n.call(t,Se,St,_i)})}let Sr=function(Se){let St=null;if(Ka(p.beforeSanitizeElements,Se,null),rs(Se))return Ar(Se),!0;let _n=Vn(Se.nodeName);if(Ka(p.uponSanitizeElement,Se,{tagName:_n,allowedTags:H}),Te&&Se.hasChildNodes()&&!qa(Se.firstElementChild)&&tl(/<[/\w!]/g,Se.innerHTML)&&tl(/<[/\w!]/g,Se.textContent)||Se.nodeType===Fw.progressingInstruction||Te&&Se.nodeType===Fw.comment&&tl(/<[/\w]/g,Se.data))return Ar(Se),!0;if(!H[_n]||X[_n]){if(!X[_n]&&Dl(_n)&&($.tagNameCheck instanceof RegExp&&tl($.tagNameCheck,_n)||$.tagNameCheck instanceof Function&&$.tagNameCheck(_n)))return!1;if(bi&&!Tt[_n]){let er=I(Se)||Se.parentNode,Ea=E(Se)||Se.childNodes;if(Ea&&er){let Cs=Ea.length;for(let dc=Cs-1;dc>=0;--dc){let Pd=_(Ea[dc],!0);Pd.__removalCount=(Se.__removalCount||0)+1,er.insertBefore(Pd,C(Se))}}}return Ar(Se),!0}return Se instanceof c&&!df(Se)||(_n==="noscript"||_n==="noembed"||_n==="noframes")&&tl(/<\/no(script|embed|frames)/i,Se.innerHTML)?(Ar(Se),!0):(ve&&Se.nodeType===Fw.text&&(St=Se.textContent,aO([x,T,w],er=>{St=Nw(St,er," ")}),Se.textContent!==St&&(Mw(t.removed,{element:Se.cloneNode()}),Se.textContent=St)),Ka(p.afterSanitizeElements,Se,null),!1)},Bl=function(Se,St,_n){if(tn&&(St==="id"||St==="name")&&(_n in n||_n in _s))return!1;if(!(fe&&!he[St]&&tl(M,St))){if(!(ge&&tl(O,St))){if(!Z[St]||he[St]){if(!(Dl(Se)&&($.tagNameCheck instanceof RegExp&&tl($.tagNameCheck,Se)||$.tagNameCheck instanceof Function&&$.tagNameCheck(Se))&&($.attributeNameCheck instanceof RegExp&&tl($.attributeNameCheck,St)||$.attributeNameCheck instanceof Function&&$.attributeNameCheck(St))||St==="is"&&$.allowCustomizedBuiltInElements&&($.tagNameCheck instanceof RegExp&&tl($.tagNameCheck,_n)||$.tagNameCheck instanceof Function&&$.tagNameCheck(_n))))return!1}else if(!Qo[St]){if(!tl(F,Nw(_n,Q,""))){if(!((St==="src"||St==="xlink:href"||St==="href")&&Se!=="script"&&bOe(_n,"data:")===0&&Ct[Se])){if(!(ye&&!tl(U,Nw(_n,Q,"")))){if(_n)return!1}}}}}}return!0},Dl=function(Se){return Se!=="annotation-xml"&&uoe(Se,z)},ta=function(Se){Ka(p.beforeSanitizeAttributes,Se,null);let{attributes:St}=Se;if(!St||rs(Se))return;let _n={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Z,forceKeepAttr:void 0},er=St.length;for(;er--;){let Ea=St[er],{name:Cs,namespaceURI:dc,value:Pd}=Ea,TA=Vn(Cs),LS=Pd,Ia=Cs==="value"?LS:TOe(LS);if(_n.attrName=TA,_n.attrValue=Ia,_n.keepAttr=!0,_n.forceKeepAttr=void 0,Ka(p.uponSanitizeAttribute,Se,_n),Ia=_n.attrValue,Wt&&(TA==="id"||TA==="name")&&(ys(Cs,Se),Ia=vt+Ia),Te&&tl(/((--!?|])>)|<\/(style|title)/i,Ia)){ys(Cs,Se);continue}if(_n.forceKeepAttr)continue;if(!_n.keepAttr){ys(Cs,Se);continue}if(!Ie&&tl(/\/>/i,Ia)){ys(Cs,Se);continue}ve&&aO([x,T,w],_R=>{Ia=Nw(Ia,_R," ")});let gR=Vn(Se.nodeName);if(!Bl(gR,TA,Ia)){ys(Cs,Se);continue}if(b&&typeof g=="object"&&typeof g.getAttributeType=="function"&&!dc)switch(g.getAttributeType(gR,TA)){case"TrustedHTML":{Ia=b.createHTML(Ia);break}case"TrustedScriptURL":{Ia=b.createScriptURL(Ia);break}}if(Ia!==LS)try{dc?Se.setAttributeNS(dc,Cs,Ia):Se.setAttribute(Cs,Ia),rs(Se)?Ar(Se):loe(t.removed)}catch{ys(Cs,Se)}}Ka(p.afterSanitizeAttributes,Se,null)},wo=function cn(Se){let St=null,_n=vd(Se);for(Ka(p.beforeSanitizeShadowDOM,Se,null);St=_n.nextNode();)Ka(p.uponSanitizeShadowNode,St,null),Sr(St),ta(St),St.content instanceof r&&cn(St.content);Ka(p.afterSanitizeShadowDOM,Se,null)};return t.sanitize=function(cn){let Se=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},St=null,_n=null,er=null,Ea=null;if(Ke=!cn,Ke&&(cn="<!-->"),typeof cn!="string"&&!qa(cn))if(typeof cn.toString=="function"){if(cn=cn.toString(),typeof cn!="string")throw Lw("dirty is not a string, aborting")}else throw Lw("toString is not a function");if(!t.isSupported)return cn;if(Ge||Ca(Se),t.removed=[],typeof cn=="string"&&(di=!1),di){if(cn.nodeName){let Pd=Vn(cn.nodeName);if(!H[Pd]||X[Pd])throw Lw("root node is forbidden and cannot be sanitized in-place")}}else if(cn instanceof a)St=Qs("<!---->"),_n=St.ownerDocument.importNode(cn,!0),_n.nodeType===Fw.element&&_n.nodeName==="BODY"||_n.nodeName==="HTML"?St=_n:St.appendChild(_n);else{if(!tt&&!ve&&!ke&&cn.indexOf("<")===-1)return b&&it?b.createHTML(cn):cn;if(St=Qs(cn),!St)return tt?null:it?S:""}St&&qe&&Ar(St.firstChild);let Cs=vd(di?cn:St);for(;er=Cs.nextNode();)Sr(er),ta(er),er.content instanceof r&&wo(er.content);if(di)return cn;if(tt){if($t)for(Ea=P.call(St.ownerDocument);St.firstChild;)Ea.appendChild(St.firstChild);else Ea=St;return(Z.shadowroot||Z.shadowrootmode)&&(Ea=L.call(i,Ea,!0)),Ea}let dc=ke?St.outerHTML:St.innerHTML;return ke&&H["!doctype"]&&St.ownerDocument&&St.ownerDocument.doctype&&St.ownerDocument.doctype.name&&tl(Coe,St.ownerDocument.doctype.name)&&(dc="<!DOCTYPE "+St.ownerDocument.doctype.name+`> +`+dc),ve&&aO([x,T,w],Pd=>{dc=Nw(dc,Pd," ")}),b&&it?b.createHTML(dc):dc},t.setConfig=function(){let cn=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};Ca(cn),Ge=!0},t.clearConfig=function(){_i=null,Ge=!1},t.isValidAttribute=function(cn,Se,St){_i||Ca({});let _n=Vn(cn),er=Vn(Se);return Bl(_n,er,St)},t.addHook=function(cn,Se){typeof Se=="function"&&Mw(p[cn],Se)},t.removeHook=function(cn,Se){if(Se!==void 0){let St=IOe(p[cn],Se);return St===-1?void 0:xOe(p[cn],St,1)[0]}return loe(p[cn])},t.removeHooks=function(cn){p[cn]=[]},t.removeAllHooks=function(){p=poe()},t}var Ioe=Eoe();var UOe=0,U6={};function dm(e,t){let n,i=e;l(U6[i])?n=U6[i]:(n=UOe++,U6[i]=n),t=t??!1,this._id=n,this._html=e,this._showOnScreen=t,this._element=void 0}Object.defineProperties(dm.prototype,{html:{get:function(){return this._html}},id:{get:function(){return this._id}},showOnScreen:{get:function(){return this._showOnScreen},set:function(e){this._showOnScreen=e}},element:{get:function(){if(!l(this._element)){let e=Ioe.sanitize(this._html),t=document.createElement("div");t.className="cesium-credit-wrapper",t._creditId=this._id,t.style.display="inline",t.innerHTML=e;let n=t.querySelectorAll("a");for(let i=0;i<n.length;i++)n[i].setAttribute("target","_blank");this._element=t}return this._element}}});dm.equals=function(e,t){return e===t||l(e)&&l(t)&&e._id===t._id&&e._showOnScreen===t._showOnScreen};dm.prototype.equals=function(e){return dm.equals(this,e)};dm.prototype.isIon=function(){return this.html.indexOf("ion-credit.png")!==-1};dm.getIonCredit=function(e){let t=l(e.collapsible)&&!e.collapsible;return new dm(e.html,t)};dm.clone=function(e){if(l(e))return new dm(e.html,e.showOnScreen)};var Dt=dm;function GOe(e,t){yt(e,t)}var Pr=GOe;function PC(e){this._url=e,this._cubeMapBuffers=void 0,this._texture=void 0,this._maximumMipmapLevel=void 0,this._loading=!1,this._ready=!1,this._errorEvent=new _e}Object.defineProperties(PC.prototype,{url:{get:function(){return this._url}},errorEvent:{get:function(){return this._errorEvent}},texture:{get:function(){return this._texture}},maximumMipmapLevel:{get:function(){return this._maximumMipmapLevel}},ready:{get:function(){return this._ready}}});PC.isSupported=function(e){return(e.colorBufferHalfFloat&&e.halfFloatingPointTexture||e.floatingPointTexture&&e.colorBufferFloat)&&e.supportsTextureLod};function G6(e){e._cubeMapBuffers=void 0}PC.prototype.update=function(e){let{context:t}=e;if(!PC.isSupported(t))return;if(l(this._texture)){G6(this);return}if(!l(this._texture)&&!this._loading){let f=t.textureCache.getTexture(this._url);l(f)&&(G6(this),this._texture=f,this._maximumMipmapLevel=this._texture.maximumMipmapLevel,this._ready=!0)}let n=this._cubeMapBuffers;if(!l(n)&&!this._loading){let f=this;Iu(this._url).then(function(h){f._cubeMapBuffers=h,f._loading=!1}).catch(function(h){f.isDestroyed()||f._errorEvent.raiseEvent(h)}),this._loading=!0}if(!l(this._cubeMapBuffers))return;let{pixelDatatype:i}=n[0].positiveX;l(i)||(i=t.halfFloatingPointTexture?He.HALF_FLOAT:He.FLOAT);let o=et.RGBA,r=n.length;this._maximumMipmapLevel=r-1;let s=n[0].positiveX.width,a=Math.log2(s)+1;if(r!==a){let f={};Object.values(jr.FaceName).forEach(h=>{f[h]=void 0});for(let h=r;h<a;h++)n.push(f)}let c=new on({minificationFilter:Zt.LINEAR_MIPMAP_LINEAR}),u=new jr({context:t,source:n[0],flipY:!1,pixelDatatype:i,pixelFormat:o,sampler:c});u.loadMipmaps(n.slice(1)),this._texture=u,this._texture.maximumMipmapLevel=this._maximumMipmapLevel,t.textureCache.addTexture(this._url,this._texture),this._ready=!0};PC.prototype.isDestroyed=function(){return!1};PC.prototype.destroy=function(){return G6(this),this._texture=this._texture&&this._texture.destroy(),ue(this)};var hm=PC;function Qw(e){e=e??V.EMPTY_OBJECT;let t=l(e.imageBasedLightingFactor)?k.clone(e.imageBasedLightingFactor):new k(1,1);this._imageBasedLightingFactor=t;let n=e.sphericalHarmonicCoefficients;this._sphericalHarmonicCoefficients=n,this._specularEnvironmentMaps=e.specularEnvironmentMaps,this._specularEnvironmentCubeMap=void 0,this._specularEnvironmentCubeMapDirty=!0,this._specularEnvironmentMapLoaded=!1,this._previousSpecularEnvironmentMapLoaded=!1,this._useDefaultSpecularMaps=!1,this._useDefaultSphericalHarmonics=!1,this._shouldRegenerateShaders=!1,this._previousFrameNumber=void 0,this._previousFrameContext=void 0,this._previousImageBasedLightingFactor=k.clone(t),this._previousSphericalHarmonicCoefficients=n,this._removeErrorListener=void 0}Object.defineProperties(Qw.prototype,{imageBasedLightingFactor:{get:function(){return this._imageBasedLightingFactor},set:function(e){this._previousImageBasedLightingFactor=k.clone(this._imageBasedLightingFactor,this._previousImageBasedLightingFactor),this._imageBasedLightingFactor=k.clone(e,this._imageBasedLightingFactor)}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients},set:function(e){this._previousSphericalHarmonicCoefficients=this._sphericalHarmonicCoefficients,this._sphericalHarmonicCoefficients=e}},specularEnvironmentMaps:{get:function(){return this._specularEnvironmentMaps},set:function(e){e!==this._specularEnvironmentMaps&&(this._specularEnvironmentCubeMapDirty=this._specularEnvironmentCubeMapDirty||e!==this._specularEnvironmentMaps,this._specularEnvironmentMapLoaded=!1),this._specularEnvironmentMaps=e}},enabled:{get:function(){return this._imageBasedLightingFactor.x>0||this._imageBasedLightingFactor.y>0}},shouldRegenerateShaders:{get:function(){return this._shouldRegenerateShaders}},specularEnvironmentCubeMap:{get:function(){return this._specularEnvironmentCubeMap}},useDefaultSphericalHarmonics:{get:function(){return this._useDefaultSphericalHarmonics}},useDefaultSpecularMaps:{get:function(){return this._useDefaultSpecularMaps}},useSpecularEnvironmentMaps:{get:function(){return l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.ready||this._useDefaultSpecularMaps}}});function zOe(e,t){if(hm.isSupported(t)){if(e._specularEnvironmentCubeMap=e._specularEnvironmentCubeMap&&e._specularEnvironmentCubeMap.destroy(),l(e._specularEnvironmentMaps)){let n=new hm(e._specularEnvironmentMaps);e._specularEnvironmentCubeMap=n,e._removeErrorListener=n.errorEvent.addEventListener(i=>{console.error(`Error loading specularEnvironmentMaps: ${i}`)})}e._shouldRegenerateShaders=!0}}Qw.prototype.update=function(e){if(e.frameNumber===this._previousFrameNumber&&e.context===this._previousFrameContext)return;this._previousFrameNumber=e.frameNumber;let t=this._previousFrameContext=e.context;e.brdfLutGenerator.update(e),this._shouldRegenerateShaders=!1;let n=this._imageBasedLightingFactor,i=this._previousImageBasedLightingFactor;k.equals(n,i)||(this._shouldRegenerateShaders=n.x>0&&i.x===0||n.x===0&&i.x>0,this._shouldRegenerateShaders=this._shouldRegenerateShaders||n.y>0&&i.y===0||n.y===0&&i.y>0,this._previousImageBasedLightingFactor=k.clone(this._imageBasedLightingFactor,this._previousImageBasedLightingFactor)),this._previousSphericalHarmonicCoefficients!==this._sphericalHarmonicCoefficients&&(this._shouldRegenerateShaders=this._shouldRegenerateShaders||l(this._previousSphericalHarmonicCoefficients)!==l(this._sphericalHarmonicCoefficients),this._previousSphericalHarmonicCoefficients=this._sphericalHarmonicCoefficients),this._shouldRegenerateShaders=this._shouldRegenerateShaders||this._previousSpecularEnvironmentMapLoaded!==this._specularEnvironmentMapLoaded,this._previousSpecularEnvironmentMapLoaded=this._specularEnvironmentMapLoaded,this._specularEnvironmentCubeMapDirty&&(zOe(this,t),this._specularEnvironmentCubeMapDirty=!1),l(this._specularEnvironmentCubeMap)&&(this._specularEnvironmentCubeMap.update(e),this._specularEnvironmentCubeMap.ready&&(this._specularEnvironmentMapLoaded=!0));let o=!l(this._specularEnvironmentCubeMap)&&l(e.specularEnvironmentMaps)&&!this._useDefaultSpecularMaps,r=!l(e.specularEnvironmentMaps)&&this._useDefaultSpecularMaps,s=!l(this._sphericalHarmonicCoefficients)&&l(e.sphericalHarmonicCoefficients)&&!this._useDefaultSphericalHarmonics,a=!l(e.sphericalHarmonicCoefficients)&&this._useDefaultSphericalHarmonics;this._shouldRegenerateShaders=this._shouldRegenerateShaders||o||r||s||a,this._useDefaultSpecularMaps=!l(this._specularEnvironmentCubeMap)&&l(e.specularEnvironmentMaps),this._useDefaultSphericalHarmonics=!l(this._sphericalHarmonicCoefficients)&&l(e.sphericalHarmonicCoefficients)};Qw.prototype.isDestroyed=function(){return!1};Qw.prototype.destroy=function(){return this._specularEnvironmentCubeMap=this._specularEnvironmentCubeMap&&this._specularEnvironmentCubeMap.destroy(),this._removeErrorListener=this._removeErrorListener&&this._removeErrorListener(),ue(this)};var GI=Qw;var V6=Es(_u(),1);var z6,xoe="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJhNzg4MTAwYi1kMTg5LTRjNDItYTVlMi0wOTlhNGM0NTc5Y2YiLCJpZCI6MjU5LCJpYXQiOjE3NTQwNjAzNjJ9.5ei_XzXku4PefU_uHUlbhQnPS1sbv-BHo28oU2fj0Ig",uO={};uO.defaultAccessToken=xoe;uO.defaultServer=new we({url:"https://api.cesium.com/"});uO.getDefaultTokenCredit=function(e){if(e===xoe){if(!l(z6)){let t=`<b> This application is using Cesium's default ion access token. Please assign <i>Cesium.Ion.defaultAccessToken</i> with an access token from your ion account before making any Cesium API calls. You can sign up for a free ion account at <a href="https://cesium.com">https://cesium.com</a>.</b>`;z6=new Dt(t,!0)}return z6}};var mm=uO;function ol(e,t){let n,i=e.externalType,o=l(i);if(!o)n={url:e.url,retryAttempts:1,retryCallback:VOe};else if(i==="3DTILES"||i==="STK_TERRAIN_SERVER")n={url:e.options.url};else throw new ce("Ion.createResource does not support external imagery assets; use IonImageryProvider instead.");we.call(this,n),this._ionEndpoint=e,this._ionEndpointDomain=o?void 0:new V6.default(e.url).authority(),this._ionEndpointResource=t,this._ionRoot=void 0,this._pendingPromise=void 0,this._credits=void 0,this._isExternal=o}l(Object.create)&&(ol.prototype=Object.create(we.prototype),ol.prototype.constructor=ol);ol.fromAssetId=function(e,t){let n=ol._createEndpointResource(e,t);return n.fetchJson().then(function(i){return new ol(i,n)})};Object.defineProperties(ol.prototype,{credits:{get:function(){return l(this._ionRoot)?this._ionRoot.credits:l(this._credits)?this._credits:(this._credits=ol.getCreditsFromEndpoint(this._ionEndpoint,this._ionEndpointResource),this._credits)}}});ol.getCreditsFromEndpoint=function(e,t){let n=e.attributions.map(Dt.getIonCredit),i=mm.getDefaultTokenCredit(t.queryParameters.access_token);return l(i)&&n.push(Dt.clone(i)),n};ol.prototype.clone=function(e){let t=this._ionRoot??this;return l(e)||(e=new ol(t._ionEndpoint,t._ionEndpointResource)),e=we.prototype.clone.call(this,e),e._ionRoot=t,e._isExternal=this._isExternal,e};ol.prototype.fetchImage=function(e){if(!this._isExternal){let t=e;e={preferBlob:!0},l(t)&&(e.flipY=t.flipY,e.preferImageBitmap=t.preferImageBitmap)}return we.prototype.fetchImage.call(this,e)};ol.prototype._makeRequest=function(e){return this._isExternal||new V6.default(this.url).authority()!==this._ionEndpointDomain?we.prototype._makeRequest.call(this,e):(l(e.headers)||(e.headers={}),e.headers.Authorization=`Bearer ${this._ionEndpoint.accessToken}`,e.headers["X-Cesium-Client"]="CesiumJS",typeof CESIUM_VERSION<"u"&&(e.headers["X-Cesium-Client-Version"]=CESIUM_VERSION),we.prototype._makeRequest.call(this,e))};ol._createEndpointResource=function(e,t){t=t??V.EMPTY_OBJECT;let n=t.server??mm.defaultServer,i=t.accessToken??mm.defaultAccessToken;n=we.createIfNeeded(n);let o={url:`v1/assets/${e}/endpoint`};return l(i)&&(o.queryParameters={access_token:i}),n.getDerivedResource(o)};function VOe(e,t){let n=e._ionRoot??e,i=n._ionEndpointResource,o=typeof Image<"u";return!l(t)||t.statusCode!==401&&!(o&&t.target instanceof Image)?Promise.resolve(!1):(l(n._pendingPromise)||(n._pendingPromise=i.fetchJson().then(function(r){return n._ionEndpoint=r,r}).finally(function(r){return n._pendingPromise=void 0,r})),n._pendingPromise.then(function(r){return e._ionEndpoint=r,!0}))}var wf=ol;function Am(e){e=e??0,this._array=new Array(e),this._length=e}Object.defineProperties(Am.prototype,{length:{get:function(){return this._length},set:function(e){let t=this._array,n=this._length;if(e<n)for(let i=e;i<n;++i)t[i]=void 0;else e>t.length&&(t.length=e);this._length=e}},values:{get:function(){return this._array}}});Am.prototype.get=function(e){return this._array[e]};Am.prototype.set=function(e,t){e>=this._length&&(this.length=e+1),this._array[e]=t};Am.prototype.peek=function(){return this._array[this._length-1]};Am.prototype.push=function(e){let t=this.length++;this._array[t]=e};Am.prototype.pop=function(){if(this._length===0)return;let e=this._array[this._length-1];return--this.length,e};Am.prototype.reserve=function(e){e>this._array.length&&(this._array.length=e)};Am.prototype.resize=function(e){this.length=e};Am.prototype.trim=function(e){e=e??this._length,this._array.length=e};var kl=Am;function fO(e){e=e??V.EMPTY_OBJECT,this.color=e.color,this.depth=e.depth,this.stencil=e.stencil,this.renderState=e.renderState,this.framebuffer=e.framebuffer,this.owner=e.owner,this.pass=e.pass}fO.ALL=Object.freeze(new fO({color:new G(0,0,0,0),depth:1,stencil:0}));fO.prototype.execute=function(e,t){e.clear(this,t)};var Ei=fO;var YA={X:0,Y:1,Z:2};YA.Y_UP_TO_Z_UP=R.fromRotationTranslation(J.fromArray([1,0,0,0,0,1,0,-1,0]));YA.Z_UP_TO_Y_UP=R.fromRotationTranslation(J.fromArray([1,0,0,0,0,-1,0,1,0]));YA.X_UP_TO_Z_UP=R.fromRotationTranslation(J.fromArray([0,0,1,0,1,0,-1,0,0]));YA.Z_UP_TO_X_UP=R.fromRotationTranslation(J.fromArray([0,0,-1,0,1,0,1,0,0]));YA.X_UP_TO_Y_UP=R.fromRotationTranslation(J.fromArray([0,1,0,-1,0,0,0,0,1]));YA.Y_UP_TO_X_UP=R.fromRotationTranslation(J.fromArray([0,-1,0,1,0,0,0,0,1]));YA.fromName=function(e){return YA[e]};var Ao=Object.freeze(YA);function Bf(e){this.planes=e??[]}var kw=[new d,new d,new d];d.clone(d.UNIT_X,kw[0]);d.clone(d.UNIT_Y,kw[1]);d.clone(d.UNIT_Z,kw[2]);var Mg=new d,HOe=new d,boe=new mn(new d(1,0,0),0);Bf.fromBoundingSphere=function(e,t){l(t)||(t=new Bf);let n=kw.length,i=t.planes;i.length=2*n;let o=e.center,r=e.radius,s=0;for(let a=0;a<n;++a){let c=kw[a],u=i[s],f=i[s+1];l(u)||(u=i[s]=new se),l(f)||(f=i[s+1]=new se),d.multiplyByScalar(c,-r,Mg),d.add(o,Mg,Mg),u.x=c.x,u.y=c.y,u.z=c.z,u.w=-d.dot(c,Mg),d.multiplyByScalar(c,r,Mg),d.add(o,Mg,Mg),f.x=-c.x,f.y=-c.y,f.z=-c.z,f.w=-d.dot(d.negate(c,HOe),Mg),s+=2}return t};Bf.prototype.computeVisibility=function(e){let t=this.planes,n=!1;for(let i=0,o=t.length;i<o;++i){let r=e.intersectPlane(mn.fromCartesian4(t[i],boe));if(r===nn.OUTSIDE)return nn.OUTSIDE;r===nn.INTERSECTING&&(n=!0)}return n?nn.INTERSECTING:nn.INSIDE};Bf.prototype.computeVisibilityWithPlaneMask=function(e,t){if(t===Bf.MASK_OUTSIDE||t===Bf.MASK_INSIDE)return t;let n=Bf.MASK_INSIDE,i=this.planes;for(let o=0,r=i.length;o<r;++o){let s=o<31?1<<o:0;if(o<31&&(t&s)===0)continue;let a=e.intersectPlane(mn.fromCartesian4(i[o],boe));if(a===nn.OUTSIDE)return Bf.MASK_OUTSIDE;a===nn.INTERSECTING&&(n|=s)}return n};Bf.MASK_OUTSIDE=4294967295;Bf.MASK_INSIDE=0;Bf.MASK_INDETERMINATE=2147483647;var zs=Bf;function pm(e){e=e??V.EMPTY_OBJECT,this.left=e.left,this._left=void 0,this.right=e.right,this._right=void 0,this.top=e.top,this._top=void 0,this.bottom=e.bottom,this._bottom=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this._cullingVolume=new zs,this._orthographicMatrix=new R}function Toe(e){(e.top!==e._top||e.bottom!==e._bottom||e.left!==e._left||e.right!==e._right||e.near!==e._near||e.far!==e._far)&&(e._left=e.left,e._right=e.right,e._top=e.top,e._bottom=e.bottom,e._near=e.near,e._far=e.far,e._orthographicMatrix=R.computeOrthographicOffCenter(e.left,e.right,e.bottom,e.top,e.near,e.far,e._orthographicMatrix))}Object.defineProperties(pm.prototype,{projectionMatrix:{get:function(){return Toe(this),this._orthographicMatrix}}});var WOe=new d,jOe=new d,YOe=new d,H6=new d;pm.prototype.computeCullingVolume=function(e,t,n){let i=this._cullingVolume.planes,o=this.top,r=this.bottom,s=this.right,a=this.left,c=this.near,u=this.far,f=d.cross(t,n,WOe);d.normalize(f,f);let h=jOe;d.multiplyByScalar(t,c,h),d.add(e,h,h);let A=YOe;d.multiplyByScalar(f,a,A),d.add(h,A,A);let g=i[0];return l(g)||(g=i[0]=new se),g.x=f.x,g.y=f.y,g.z=f.z,g.w=-d.dot(f,A),d.multiplyByScalar(f,s,A),d.add(h,A,A),g=i[1],l(g)||(g=i[1]=new se),g.x=-f.x,g.y=-f.y,g.z=-f.z,g.w=-d.dot(d.negate(f,H6),A),d.multiplyByScalar(n,r,A),d.add(h,A,A),g=i[2],l(g)||(g=i[2]=new se),g.x=n.x,g.y=n.y,g.z=n.z,g.w=-d.dot(n,A),d.multiplyByScalar(n,o,A),d.add(h,A,A),g=i[3],l(g)||(g=i[3]=new se),g.x=-n.x,g.y=-n.y,g.z=-n.z,g.w=-d.dot(d.negate(n,H6),A),g=i[4],l(g)||(g=i[4]=new se),g.x=t.x,g.y=t.y,g.z=t.z,g.w=-d.dot(t,h),d.multiplyByScalar(t,u,A),d.add(e,A,A),g=i[5],l(g)||(g=i[5]=new se),g.x=-t.x,g.y=-t.y,g.z=-t.z,g.w=-d.dot(d.negate(t,H6),A),this._cullingVolume};pm.prototype.getPixelDimensions=function(e,t,n,i,o){Toe(this);let r=this.right-this.left,s=this.top-this.bottom,a=i*r/e,c=i*s/t;return o.x=a,o.y=c,o};pm.prototype.clone=function(e){return l(e)||(e=new pm),e.left=this.left,e.right=this.right,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e._left=void 0,e._right=void 0,e._top=void 0,e._bottom=void 0,e._near=void 0,e._far=void 0,e};pm.prototype.equals=function(e){return l(e)&&e instanceof pm&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far};pm.prototype.equalsEpsilon=function(e,t,n){return e===this||l(e)&&e instanceof pm&&D.equalsEpsilon(this.right,e.right,t,n)&&D.equalsEpsilon(this.left,e.left,t,n)&&D.equalsEpsilon(this.top,e.top,t,n)&&D.equalsEpsilon(this.bottom,e.bottom,t,n)&&D.equalsEpsilon(this.near,e.near,t,n)&&D.equalsEpsilon(this.far,e.far,t,n)};var ls=pm;function Ul(e){e=e??V.EMPTY_OBJECT,this._offCenterFrustum=new ls,this.width=e.width,this._width=void 0,this.aspectRatio=e.aspectRatio,this._aspectRatio=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far}Ul.packedLength=4;Ul.pack=function(e,t,n){return n=n??0,t[n++]=e.width,t[n++]=e.aspectRatio,t[n++]=e.near,t[n]=e.far,t};Ul.unpack=function(e,t,n){return t=t??0,l(n)||(n=new Ul),n.width=e[t++],n.aspectRatio=e[t++],n.near=e[t++],n.far=e[t],n};function Ng(e){let t=e._offCenterFrustum;if(e.width!==e._width||e.aspectRatio!==e._aspectRatio||e.near!==e._near||e.far!==e._far){e._aspectRatio=e.aspectRatio,e._width=e.width,e._near=e.near,e._far=e.far;let n=1/e.aspectRatio;t.right=e.width*.5,t.left=-t.right,t.top=n*t.right,t.bottom=-t.top,t.near=e.near,t.far=e.far}}Object.defineProperties(Ul.prototype,{projectionMatrix:{get:function(){return Ng(this),this._offCenterFrustum.projectionMatrix}},offCenterFrustum:{get:function(){return Ng(this),this._offCenterFrustum}}});Ul.prototype.computeCullingVolume=function(e,t,n){return Ng(this),this._offCenterFrustum.computeCullingVolume(e,t,n)};Ul.prototype.getPixelDimensions=function(e,t,n,i,o){return Ng(this),this._offCenterFrustum.getPixelDimensions(e,t,n,i,o)};Ul.prototype.clone=function(e){return l(e)||(e=new Ul),e.aspectRatio=this.aspectRatio,e.width=this.width,e.near=this.near,e.far=this.far,e._aspectRatio=void 0,e._width=void 0,e._near=void 0,e._far=void 0,this._offCenterFrustum.clone(e._offCenterFrustum),e};Ul.prototype.equals=function(e){return!l(e)||!(e instanceof Ul)?!1:(Ng(this),Ng(e),this.width===e.width&&this.aspectRatio===e.aspectRatio&&this._offCenterFrustum.equals(e._offCenterFrustum))};Ul.prototype.equalsEpsilon=function(e,t,n){return!l(e)||!(e instanceof Ul)?!1:(Ng(this),Ng(e),D.equalsEpsilon(this.width,e.width,t,n)&&D.equalsEpsilon(this.aspectRatio,e.aspectRatio,t,n)&&this._offCenterFrustum.equalsEpsilon(e._offCenterFrustum,t,n))};var An=Ul;function Soe(e){e=e??V.EMPTY_OBJECT,this._metadata=e.metadata}Object.defineProperties(Soe.prototype,{metadata:{get:function(){return this._metadata}}});var zI=Soe;function Lg(e,t,n){return t=t??0,n=n??e.byteLength-t,e=e.subarray(t,t+n),Lg.decode(e)}Lg.decodeWithTextDecoder=function(e){return new TextDecoder("utf-8").decode(e)};Lg.decodeWithFromCharCode=function(e){let t="",n=qOe(e),i=n.length;for(let o=0;o<i;++o){let r=n[o];r<=65535?t+=String.fromCharCode(r):(r-=65536,t+=String.fromCharCode((r>>10)+55296,(r&1023)+56320))}return t};function Uw(e,t,n){return t<=e&&e<=n}function qOe(e){let t=0,n=0,i=0,o=128,r=191,s=[],a=e.length;for(let c=0;c<a;++c){let u=e[c];if(i===0){if(Uw(u,0,127)){s.push(u);continue}if(Uw(u,194,223)){i=1,t=u&31;continue}if(Uw(u,224,239)){u===224&&(o=160),u===237&&(r=159),i=2,t=u&15;continue}if(Uw(u,240,244)){u===240&&(o=144),u===244&&(r=143),i=3,t=u&7;continue}throw new ce("String decoding failed.")}if(!Uw(u,o,r)){t=i=n=0,o=128,r=191,--c;continue}o=128,r=191,t=t<<6|u&63,++n,n===i&&(s.push(t),t=i=n=0)}return s}typeof TextDecoder<"u"?Lg.decode=Lg.decodeWithTextDecoder:Lg.decode=Lg.decodeWithFromCharCode;var Tu=Lg;function KOe(e,t){return t=t??0,Tu(e,t,Math.min(4,e.length))}var gm=KOe;function Df(e,t,n,i){this._tileset=e,this._tile=t,this._resource=n,l(i)||(i=[]),this._contents=i,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(Df.prototype,{featurePropertiesDirty:{get:function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)if(e[n].featurePropertiesDirty)return!0;return!1},set:function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].featurePropertiesDirty=e}},featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){return this._contents}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e;let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].metadata=e}},batchTable:{get:function(){}},group:{get:function(){return this._group},set:function(e){this._group=e;let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].group=e}}});var Gw=Uint32Array.BYTES_PER_ELEMENT;Df.fromTileType=async function(e,t,n,i,o,r){o=o??0;let s=new Uint8Array(i),a=new DataView(i);o+=Gw;let c=a.getUint32(o,!0);if(c!==1)throw new ce(`Only Composite Tile version 1 is supported. Version ${c} is not.`);o+=Gw,o+=Gw;let u=a.getUint32(o,!0);o+=Gw;let f=n.queryParameters.compositeIndex;l(f)?f=`${f}_`:f="";let h=[];h.length=u;for(let m=0;m<u;++m){let _=gm(s,o),y=a.getUint32(o+Gw*2,!0),C=r[_],E=`${f}${m}`,I=n.getDerivedResource({queryParameters:{compositeIndex:E}});if(l(C))h[m]=Promise.resolve(C(e,t,I,i,o));else throw new ce(`Unknown tile content type, ${_}, inside Composite tile`);o+=y}let A=await Promise.all(h);return new Df(e,t,n,A)};Df.prototype.hasProperty=function(e,t){return!1};Df.prototype.getFeature=function(e){};Df.prototype.applyDebugSettings=function(e,t){let n=this._contents,i=n.length;for(let o=0;o<i;++o)n[o].applyDebugSettings(e,t)};Df.prototype.applyStyle=function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].applyStyle(e)};Df.prototype.update=function(e,t){let n=this._contents,i=n.length,o=!0;for(let r=0;r<i;++r)n[r].update(e,t),o=o&&n[r].ready;!this._ready&&o&&(this._ready=!0)};Df.prototype.pick=function(e,t,n){if(!this._ready)return;let i,o=Number.POSITIVE_INFINITY,r=this._contents,s=r.length;for(let a=0;a<s;++a){let c=r[a].pick(e,t,n);if(!l(c))continue;let u=d.distance(e.origin,c);u<o&&(i=c,o=u)}if(l(i))return n};Df.prototype.isDestroyed=function(){return!1};Df.prototype.destroy=function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var dO=Df;function XOe(e,t,n){return JSON.parse(Tu(e,t,n))}var yr=XOe;function bc(e){this._id=Xn();let t=e.featuresLength;this._showAlphaProperties=void 0,this._batchValues=void 0,this._batchValuesDirty=!1,this._batchTexture=void 0,this._defaultTexture=void 0,this._pickTexture=void 0,this._pickIds=[];let n,i;if(t>0){let o=Math.min(t,qt.maximumTextureSize),r=Math.ceil(t/qt.maximumTextureSize),s=1/o,a=s*.5,c=1/r,u=c*.5;n=new k(o,r),i=new se(s,a,c,u)}this._translucentFeaturesLength=0,this._featuresLength=t,this._textureDimensions=n,this._textureStep=i,this._owner=e.owner,this._statistics=e.statistics,this._colorChangedCallback=e.colorChangedCallback}Object.defineProperties(bc.prototype,{translucentFeaturesLength:{get:function(){return this._translucentFeaturesLength}},byteLength:{get:function(){let e=0;return l(this._pickTexture)&&(e+=this._pickTexture.sizeInBytes),l(this._batchTexture)&&(e+=this._batchTexture.sizeInBytes),e}},textureDimensions:{get:function(){return this._textureDimensions}},textureStep:{get:function(){return this._textureStep}},batchTexture:{get:function(){return this._batchTexture}},defaultTexture:{get:function(){return this._defaultTexture}},pickTexture:{get:function(){return this._pickTexture}}});bc.DEFAULT_COLOR_VALUE=G.WHITE;bc.DEFAULT_SHOW_VALUE=!0;function woe(e){let t=e._textureDimensions;return t.x*t.y*4}function Boe(e){if(!l(e._batchValues)){let t=woe(e),n=new Uint8Array(t).fill(255);e._batchValues=n}return e._batchValues}function Doe(e){if(!l(e._showAlphaProperties)){let t=2*e._featuresLength,n=new Uint8Array(t).fill(255);e._showAlphaProperties=n}return e._showAlphaProperties}bc.prototype.setShow=function(e,t){if(t&&!l(this._showAlphaProperties))return;let n=Doe(this),i=e*2,o=t?255:0;if(n[i]!==o){n[i]=o;let r=Boe(this),s=e*4+3;r[s]=t?n[i+1]:0,this._batchValuesDirty=!0}};bc.prototype.setAllShow=function(e){let t=this._featuresLength;for(let n=0;n<t;++n)this.setShow(n,e)};bc.prototype.getShow=function(e){if(!l(this._showAlphaProperties))return!0;let t=e*2;return this._showAlphaProperties[t]===255};var JOe=new Array(4);bc.prototype.setColor=function(e,t){if(G.equals(t,bc.DEFAULT_COLOR_VALUE)&&!l(this._batchValues))return;let n=t.toBytes(JOe),i=n[3],o=Boe(this),r=e*4,s=Doe(this),a=e*2;if(o[r]!==n[0]||o[r+1]!==n[1]||o[r+2]!==n[2]||s[a+1]!==i){o[r]=n[0],o[r+1]=n[1],o[r+2]=n[2];let c=s[a+1]!==255,u=s[a]!==0;o[r+3]=u?i:0,s[a+1]=i;let f=i!==255;f&&!c?++this._translucentFeaturesLength:!f&&c&&--this._translucentFeaturesLength,this._batchValuesDirty=!0,l(this._colorChangedCallback)&&this._colorChangedCallback(e,t)}};bc.prototype.setAllColor=function(e){let t=this._featuresLength;for(let n=0;n<t;++n)this.setColor(n,e)};bc.prototype.getColor=function(e,t){if(!l(this._batchValues))return G.clone(bc.DEFAULT_COLOR_VALUE,t);let n=this._batchValues,i=e*4,o=this._showAlphaProperties,r=e*2;return G.fromBytes(n[i],n[i+1],n[i+2],o[r+1],t)};bc.prototype.getPickColor=function(e){return this._pickIds[e]};function voe(e,t,n){let i=e._textureDimensions;return new Nt({context:t,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,source:{width:i.x,height:i.y,arrayBufferView:n},flipY:!1,sampler:on.NEAREST})}function ZOe(e,t){let n=e._featuresLength;if(!l(e._pickTexture)&&n>0){let i=e._pickIds,o=woe(e),r=new Uint8Array(o),s=e._owner,a=e._statistics;for(let c=0;c<n;++c){let u=t.createPickId(s.getFeature(c));i.push(u);let f=u.color,h=c*4;r[h]=G.floatToByte(f.red),r[h+1]=G.floatToByte(f.green),r[h+2]=G.floatToByte(f.blue),r[h+3]=G.floatToByte(f.alpha)}e._pickTexture=voe(e,t,r),l(a)&&(a.batchTableByteLength+=e._pickTexture.sizeInBytes)}}function $Oe(e){let t=e._textureDimensions;e._batchTexture.copyFrom({source:{width:t.x,height:t.y,arrayBufferView:e._batchValues}})}bc.prototype.update=function(e,t){let n=t.context;this._defaultTexture=n.defaultTexture;let i=t.passes;(i.pick||i.postProcess)&&ZOe(this,n),this._batchValuesDirty&&(this._batchValuesDirty=!1,l(this._batchTexture)||(this._batchTexture=voe(this,n,this._batchValues),l(this._statistics)&&(this._statistics.batchTableByteLength+=this._batchTexture.sizeInBytes)),$Oe(this))};bc.prototype.isDestroyed=function(){return!1};bc.prototype.destroy=function(){this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),this._pickTexture=this._pickTexture&&this._pickTexture.destroy();let e=this._pickIds,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var Gl=bc;var eFe={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},tFe={SCALAR:void 0,VEC2:k,VEC3:d,VEC4:se,MAT2:Wi,MAT3:J,MAT4:R};function nFe(e){let t=e.componentType,n;typeof t=="string"?n=q.fromName(t):n=t;let i=eFe[e.type],o=tFe[e.type];return{componentsPerAttribute:i,classType:o,createArrayBufferView:function(r,s,a){return q.createArrayBufferView(n,r,s,i*a)}}}var vf=nFe;function qA(e){this._classes=void 0,this._classIds=void 0,this._classIndexes=void 0,this._parentCounts=void 0,this._parentIndexes=void 0,this._parentIds=void 0,this._byteLength=0,iFe(this,e.extension,e.binaryBody)}Object.defineProperties(qA.prototype,{byteLength:{get:function(){return this._byteLength}}});function iFe(e,t,n){let i,o,r,s=t.instancesLength,a=t.classes,c=t.classIds,u=t.parentCounts,f=t.parentIds,h=s,A=0;l(c.byteOffset)&&(c.componentType=c.componentType??q.UNSIGNED_SHORT,c.type=Ht.SCALAR,r=vf(c),c=r.createArrayBufferView(n.buffer,n.byteOffset+c.byteOffset,s),A+=c.byteLength);let g;if(l(u)){for(l(u.byteOffset)&&(u.componentType=u.componentType??q.UNSIGNED_SHORT,u.type=Ht.SCALAR,r=vf(u),u=r.createArrayBufferView(n.buffer,n.byteOffset+u.byteOffset,s),A+=u.byteLength),g=new Uint16Array(s),h=0,i=0;i<s;++i)g[i]=h,h+=u[i];A+=g.byteLength}l(f)&&l(f.byteOffset)&&(f.componentType=f.componentType??q.UNSIGNED_SHORT,f.type=Ht.SCALAR,r=vf(f),f=r.createArrayBufferView(n.buffer,n.byteOffset+f.byteOffset,h),A+=f.byteLength);let m=a.length;for(i=0;i<m;++i){let C=a[i].length,E=a[i].instances,I=oFe(C,E,n);A+=rFe(I),a[i].instances=wt(I,E)}let _=new Array(m).fill(0),y=new Uint16Array(s);for(i=0;i<s;++i)o=c[i],y[i]=_[o],++_[o];A+=y.byteLength,e._classes=a,e._classIds=c,e._classIndexes=y,e._parentCounts=u,e._parentIndexes=g,e._parentIds=f,e._byteLength=A}function oFe(e,t,n){let i;for(let o in t)if(t.hasOwnProperty(o)){let r=t[o],s=r.byteOffset;if(l(s)){let a=r.componentType,c=r.type;if(!l(a))throw new ce("componentType is required.");if(!l(c))throw new ce("type is required.");if(!l(n))throw new ce(`Property ${o} requires a batch table binary.`);let u=vf(r),f=u.componentsPerAttribute,h=u.classType,A=u.createArrayBufferView(n.buffer,n.byteOffset+s,e);l(i)||(i={}),i[o]={typedArray:A,componentCount:f,type:h}}}return i}function rFe(e){let t=0;for(let n in e)e.hasOwnProperty(n)&&(t+=e[n].typedArray.byteLength);return t}var sFe=[],aFe=[],cFe=0;function lFe(e,t,n){let i=e._classIds,o=e._parentCounts,r=e._parentIds,s=e._parentIndexes,a=i.length,c=sFe;c.length=Math.max(c.length,a);let u=++cFe,f=aFe;for(f.length=0,f.push(t);f.length>0;){if(t=f.pop(),c[t]===u)continue;c[t]=u;let h=n(e,t);if(l(h))return h;let A=o[t],g=s[t];for(let m=0;m<A;++m){let _=r[g+m];_!==t&&f.push(_)}}}function uFe(e,t,n){let i=!0;for(;i;){let o=n(e,t);if(l(o))return o;let r=e._parentIds[t];i=r!==t,t=r}}function zw(e,t,n){let i=e._parentCounts,o=e._parentIds;if(l(o)){if(l(i))return lFe(e,t,n)}else return n(e,t);return uFe(e,t,n)}qA.prototype.hasProperty=function(e,t){let n=zw(this,e,function(i,o){let r=i._classIds[o],s=i._classes[r].instances;if(l(s[t]))return!0});return l(n)};qA.prototype.propertyExists=function(e){let t=this._classes,n=t.length;for(let i=0;i<n;++i){let o=t[i].instances;if(l(o[e]))return!0}return!1};qA.prototype.getPropertyIds=function(e,t){return t=l(t)?t:[],t.length=0,zw(this,e,function(n,i){let o=n._classIds[i],r=n._classes[o].instances;for(let s in r)r.hasOwnProperty(s)&&t.indexOf(s)===-1&&t.push(s)}),t};qA.prototype.getProperty=function(e,t){return zw(this,e,function(n,i){let o=n._classIds[i],r=n._classes[o],s=n._classIndexes[i],a=r.instances[t];if(l(a))return l(a.typedArray)?fFe(a,s):ze(a[s],!0)})};function fFe(e,t){let n=e.typedArray,i=e.componentCount;return i===1?n[t]:e.type.unpack(n,t*i)}qA.prototype.setProperty=function(e,t,n){let i=zw(this,e,function(o,r){let s=o._classIds[r],a=o._classes[s],c=o._classIndexes[r],u=a.instances[t];if(l(u))return l(u.typedArray)?dFe(u,c,n):u[c]=ze(n,!0),!0});return l(i)};function dFe(e,t,n){let i=e.typedArray,o=e.componentCount;o===1?i[t]=n:e.type.pack(n,i,t*o)}qA.prototype.isClass=function(e,t){let n=zw(this,e,function(i,o){let r=i._classIds[o];if(i._classes[r].name===t)return!0});return l(n)};qA.prototype.getClassName=function(e){let t=this._classIds[e];return this._classes[t].name};var VI=qA;var hFe={HIGHLIGHT:0,REPLACE:1,MIX:2},Su=Object.freeze(hFe);function mFe(e,t){if(!l(t))return;let n=t.length;if(n===0)return;let i=e.length;e.length+=n;for(let o=0;o<n;o++)e[i+o]=t[o]}var si=mFe;var W6=Gl.DEFAULT_COLOR_VALUE,j6=Gl.DEFAULT_SHOW_VALUE;function Do(e,t,n,i,o){this.featuresLength=t;let r;l(n)&&(r=n.extensions),this._extensions=r??{};let s=AFe(n);this._properties=s,this._batchTableHierarchy=pFe(this,n,i);let a=Roe(t,s,i);this._binaryPropertiesByteLength=gFe(a),this._batchTableBinaryProperties=a,this._content=e,this._batchTexture=new Gl({featuresLength:t,colorChangedCallback:o,owner:e,statistics:e.tileset.statistics})}Do._deprecationWarning=Pr;Object.defineProperties(Do.prototype,{batchTableByteLength:{get:function(){let e=this._binaryPropertiesByteLength;return l(this._batchTableHierarchy)&&(e+=this._batchTableHierarchy.byteLength),e+=this._batchTexture.byteLength,e}}});function AFe(e){let t={};if(!l(e))return t;for(let n in e)e.hasOwnProperty(n)&&n!=="HIERARCHY"&&n!=="extensions"&&n!=="extras"&&(t[n]=ze(e[n],!0));return t}function pFe(e,t,n){if(!l(t))return;let i=e._extensions["3DTILES_batch_table_hierarchy"],o=t.HIERARCHY;if(l(o)&&(Do._deprecationWarning("batchTableHierarchyExtension","The batch table HIERARCHY property has been moved to an extension. Use extensions.3DTILES_batch_table_hierarchy instead."),e._extensions["3DTILES_batch_table_hierarchy"]=o,i=o),!!l(i))return new VI({extension:i,binaryBody:n})}function Roe(e,t,n){let i;for(let o in t)if(t.hasOwnProperty(o)){let r=t[o],s=r.byteOffset;if(l(s)){let a=r.componentType,c=r.type;if(!l(a))throw new ce("componentType is required.");if(!l(c))throw new ce("type is required.");if(!l(n))throw new ce(`Property ${o} requires a batch table binary.`);let u=vf(r),f=u.componentsPerAttribute,h=u.classType,A=u.createArrayBufferView(n.buffer,n.byteOffset+s,e);l(i)||(i={}),i[o]={typedArray:A,componentCount:f,type:h}}}return i}function gFe(e){if(!l(e))return 0;let t=0;for(let n in e)e.hasOwnProperty(n)&&(t+=e[n].typedArray.byteLength);return t}Do.getBinaryProperties=function(e,t,n){return Roe(e,t,n)};Do.prototype.setShow=function(e,t){this._batchTexture.setShow(e,t)};Do.prototype.setAllShow=function(e){this._batchTexture.setAllShow(e)};Do.prototype.getShow=function(e){return this._batchTexture.getShow(e)};Do.prototype.setColor=function(e,t){this._batchTexture.setColor(e,t)};Do.prototype.setAllColor=function(e){this._batchTexture.setAllColor(e)};Do.prototype.getColor=function(e,t){return this._batchTexture.getColor(e,t)};Do.prototype.getPickColor=function(e){return this._batchTexture.getPickColor(e)};var _Fe=new G;Do.prototype.applyStyle=function(e){if(!l(e)){this.setAllColor(W6),this.setAllShow(j6);return}let t=this._content,n=this.featuresLength;for(let i=0;i<n;++i){let o=t.getFeature(i),r=l(e.color)?e.color.evaluateColor(o,_Fe)??W6:W6,s=l(e.show)?e.show.evaluate(o)??j6:j6;this.setColor(i,r),this.setShow(i,s)}};function yFe(e,t){let n=e.typedArray,i=e.componentCount;return i===1?n[t]:e.type.unpack(n,t*i)}function CFe(e,t,n){let i=e.typedArray,o=e.componentCount;o===1?i[t]=n:e.type.pack(n,i,t*o)}Do.prototype.isClass=function(e,t){let n=this._batchTableHierarchy;return l(n)?n.isClass(e,t):!1};Do.prototype.isExactClass=function(e,t){return this.getExactClassName(e)===t};Do.prototype.getExactClassName=function(e){let t=this._batchTableHierarchy;if(l(t))return t.getClassName(e)};Do.prototype.hasProperty=function(e,t){return l(this._properties[t])||l(this._batchTableHierarchy)&&this._batchTableHierarchy.hasProperty(e,t)};Do.prototype.hasPropertyBySemantic=function(){return!1};Do.prototype.getPropertyIds=function(e,t){t=l(t)?t:[],t.length=0;let n=Object.keys(this._properties);if(si(t,n),l(this._batchTableHierarchy)){let i=this._batchTableHierarchy.getPropertyIds(e,n);si(t,i)}return t};Do.prototype.getPropertyBySemantic=function(e,t){};Do.prototype.getProperty=function(e,t){if(l(this._batchTableBinaryProperties)){let i=this._batchTableBinaryProperties[t];if(l(i))return yFe(i,e)}let n=this._properties[t];if(l(n))return ze(n[e],!0);if(l(this._batchTableHierarchy)){let i=this._batchTableHierarchy.getProperty(e,t);if(l(i))return i}};Do.prototype.setProperty=function(e,t,n){let i=this.featuresLength;if(l(this._batchTableBinaryProperties)){let r=this._batchTableBinaryProperties[t];if(l(r)){CFe(r,e,n);return}}if(l(this._batchTableHierarchy)&&this._batchTableHierarchy.setProperty(e,t,n))return;let o=this._properties[t];l(o)||(this._properties[t]=new Array(i),o=this._properties[t]),o[e]=ze(n,!0)};function EFe(e){return e._batchTexture.textureDimensions.y===1?`uniform vec4 tile_textureStep; +vec2 computeSt(float batchId) +{ + float stepX = tile_textureStep.x; + float centerX = tile_textureStep.y; + return vec2(centerX + (batchId * stepX), 0.5); +} +`:`uniform vec4 tile_textureStep; +uniform vec2 tile_textureDimensions; +vec2 computeSt(float batchId) +{ + float stepX = tile_textureStep.x; + float centerX = tile_textureStep.y; + float stepY = tile_textureStep.z; + float centerY = tile_textureStep.w; + float xId = mod(batchId, tile_textureDimensions.x); + float yId = floor(batchId / tile_textureDimensions.x); + return vec2(centerX + (xId * stepX), centerY + (yId * stepY)); +} +`}Do.prototype.getVertexShaderCallback=function(e,t,n){if(this.featuresLength===0)return;let i=this;return function(o){let r=Moe(o,n,!1),s;return qt.maximumVertexTextureImageUnits>0?(s="",e&&(s+=`uniform bool tile_translucentCommand; +`),s+=`uniform sampler2D tile_batchTexture; +out vec4 tile_featureColor; +out vec2 tile_featureSt; +void main() +{ + vec2 st = computeSt(${t}); + vec4 featureProperties = texture(tile_batchTexture, st); + tile_color(featureProperties); + float show = ceil(featureProperties.a); + gl_Position *= show; +`,e&&(s+=` bool isStyleTranslucent = (featureProperties.a != 1.0); + if (czm_pass == czm_passTranslucent) + { + if (!isStyleTranslucent && !tile_translucentCommand) + { + gl_Position *= 0.0; + } + } + else + { + if (isStyleTranslucent) + { + gl_Position *= 0.0; + } + } +`),s+=` tile_featureColor = featureProperties; + tile_featureSt = st; +}`):s=`out vec2 tile_featureSt; +void main() +{ + tile_color(vec4(1.0)); + tile_featureSt = computeSt(${t}); +}`,`${r} +${EFe(i)}${s}`}};function Poe(e,t){return e=We.replaceMain(e,"tile_main"),t?`${e}uniform float tile_colorBlend; +void tile_color(vec4 tile_featureColor) +{ + tile_main(); + tile_featureColor = czm_gammaCorrect(tile_featureColor); + out_FragColor.a *= tile_featureColor.a; + float highlight = ceil(tile_colorBlend); + out_FragColor.rgb *= mix(tile_featureColor.rgb, vec3(1.0), highlight); +} +`:`${e}void tile_color(vec4 tile_featureColor) +{ + tile_main(); +} +`}function IFe(e,t){let n=`texture(${t}`,i=0,o=e.indexOf(n,i),r;for(;o>-1;){let s=0;for(let u=o;u<e.length;++u){let f=e.charAt(u);if(f==="(")++s;else if(f===")"&&(--s,s===0)){r=u+1;break}}let c=`tile_diffuse_final(${e.slice(o,r)}, tile_diffuse)`;e=e.slice(0,o)+c+e.slice(r),i=o+c.length,o=e.indexOf(n,i)}return e}function Moe(e,t,n){if(!l(t))return Poe(e,n);let i=new RegExp(`(uniform|attribute|in)\\s+(vec[34]|sampler2D)\\s+${t};`),o=e.match(i);if(!l(o))return Poe(e,n);let r=o[0],s=o[2];e=We.replaceMain(e,"tile_main"),e=e.replace(r,"");let a=`bool isWhite(vec3 color) +{ + return all(greaterThan(color, vec3(1.0 - czm_epsilon3))); +} +vec4 tile_diffuse_final(vec4 sourceDiffuse, vec4 tileDiffuse) +{ + vec4 blendDiffuse = mix(sourceDiffuse, tileDiffuse, tile_colorBlend); + vec4 diffuse = isWhite(tileDiffuse.rgb) ? sourceDiffuse : blendDiffuse; + return vec4(diffuse.rgb, sourceDiffuse.a); +} +`,c=` tile_featureColor = czm_gammaCorrect(tile_featureColor); + out_FragColor.a *= tile_featureColor.a; + float highlight = ceil(tile_colorBlend); + out_FragColor.rgb *= mix(tile_featureColor.rgb, vec3(1.0), highlight); +`,u;if(s==="vec3"||s==="vec4"){let f=s==="vec3"?`vec4(${t}, 1.0)`:t,h=s==="vec3"?"tile_diffuse.xyz":"tile_diffuse";i=new RegExp(t,"g"),e=e.replace(i,h),u=` vec4 source = ${f}; + tile_diffuse = tile_diffuse_final(source, tile_featureColor); + tile_main(); +`}else s==="sampler2D"&&(e=IFe(e,t),u=` tile_diffuse = tile_featureColor; + tile_main(); +`);return e=`uniform float tile_colorBlend; +vec4 tile_diffuse = vec4(1.0); +${a}${r} +${e} +void tile_color(vec4 tile_featureColor) +{ +${u}`,n&&(e+=c),e+=`} +`,e}Do.prototype.getFragmentShaderCallback=function(e,t,n){if(this.featuresLength!==0)return function(i){return i=Moe(i,t,!0),qt.maximumVertexTextureImageUnits>0?(i+=`uniform sampler2D tile_pickTexture; +in vec2 tile_featureSt; +in vec4 tile_featureColor; +void main() +{ + tile_color(tile_featureColor); +`,n&&(i+=` out_FragColor.rgb *= out_FragColor.a; +`),i+="}"):(e&&(i+=`uniform bool tile_translucentCommand; +`),i+=`uniform sampler2D tile_pickTexture; +uniform sampler2D tile_batchTexture; +in vec2 tile_featureSt; +void main() +{ + vec4 featureProperties = texture(tile_batchTexture, tile_featureSt); + if (featureProperties.a == 0.0) { + discard; + } +`,e&&(i+=` bool isStyleTranslucent = (featureProperties.a != 1.0); + if (czm_pass == czm_passTranslucent) + { + if (!isStyleTranslucent && !tile_translucentCommand) + { + discard; + } + } + else + { + if (isStyleTranslucent) + { + discard; + } + } +`),i+=` tile_color(featureProperties); +`,n&&(i+=` out_FragColor.rgb *= out_FragColor.a; +`),i+=`} +`),i}};function xFe(e){let t=e._content.tileset,n=t.colorBlendMode,i=t.colorBlendAmount;if(n===Su.HIGHLIGHT)return 0;if(n===Su.REPLACE)return 1;if(n===Su.MIX)return D.clamp(i,D.EPSILON4,1)}Do.prototype.getUniformMapCallback=function(){if(this.featuresLength===0)return;let e=this;return function(t){return wt(t,{tile_batchTexture:function(){return e._batchTexture.batchTexture??e._batchTexture.defaultTexture},tile_textureDimensions:function(){return e._batchTexture.textureDimensions},tile_textureStep:function(){return e._batchTexture.textureStep},tile_colorBlend:function(){return xFe(e)},tile_pickTexture:function(){return e._batchTexture.pickTexture}})}};Do.prototype.getPickId=function(){return"texture(tile_pickTexture, tile_featureSt)"};var Og={ALL_OPAQUE:0,ALL_TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2};Do.prototype.addDerivedCommands=function(e,t){let n=e.commandList,i=n.length,o=this._content._tile,r=o._finalResolution,s=o.tileset,a=s.isSkippingLevelOfDetail&&s.hasMixedContent&&e.context.stencilBuffer,c=bFe(this);for(let u=t;u<i;++u){let f=n[u];if(f.pass===Be.COMPUTE)continue;let h=f.derivedCommands.tileset;(!l(h)||f.dirty)&&(h={},f.derivedCommands.tileset=h,h.originalCommand=TFe(f),f.dirty=!1);let A=h.originalCommand;c!==Og.ALL_OPAQUE&&f.pass!==Be.TRANSLUCENT&&(l(h.translucent)||(h.translucent=SFe(A))),c!==Og.ALL_TRANSLUCENT&&f.pass!==Be.TRANSLUCENT&&(l(h.opaque)||(h.opaque=wFe(A)),a&&(r||(l(h.zback)||(h.zback=DFe(e.context,A)),s._backfaceCommands.push(h.zback)),(!l(h.stencil)||o._selectionDepth!==PFe(h.stencil))&&(f.renderState.depthMask?h.stencil=vFe(A,o._selectionDepth):h.stencil=h.opaque)));let g=a?h.stencil:h.opaque,m=h.translucent;f.pass!==Be.TRANSLUCENT?(c===Og.ALL_OPAQUE&&(n[u]=g),c===Og.ALL_TRANSLUCENT&&(n[u]=m),c===Og.OPAQUE_AND_TRANSLUCENT&&(n[u]=g,n.push(m))):n[u]=A}};function bFe(e){let t=e._batchTexture.translucentFeaturesLength;return t===0?Og.ALL_OPAQUE:t===e.featuresLength?Og.ALL_TRANSLUCENT:Og.OPAQUE_AND_TRANSLUCENT}function TFe(e){let t=nt.shallowClone(e),n=t.pass===Be.TRANSLUCENT;return t.uniformMap=l(t.uniformMap)?t.uniformMap:{},t.uniformMap.tile_translucentCommand=function(){return n},t}function SFe(e){let t=nt.shallowClone(e);return t.pass=Be.TRANSLUCENT,t.renderState=RFe(e.renderState),t}function wFe(e){let t=nt.shallowClone(e);return t.renderState=MFe(e.renderState),t}function BFe(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"zBackfaceLogDepth");if(!l(n)){let i=t.fragmentShaderSource.clone();i.defines=l(i.defines)?i.defines.slice(0):[],i.defines.push("POLYGON_OFFSET"),n=e.shaderCache.createDerivedShaderProgram(t,"zBackfaceLogDepth",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:i,attributeLocations:t._attributeLocations})}return n}function DFe(e,t){let n=nt.shallowClone(t),i=ze(n.renderState,!0);i.cull.enabled=!0,i.cull.face=Mi.FRONT,i.colorMask={red:!1,green:!1,blue:!1,alpha:!1},i.polygonOffset={enabled:!0,factor:5,units:5},i.stencilTest=Kt.setCesium3DTileBit(),i.stencilMask=Kt.CESIUM_3D_TILE_MASK,n.renderState=Ue.fromCache(i),n.castShadows=!1,n.receiveShadows=!1,n.uniformMap=ze(t.uniformMap);let o=new k(5,5);return n.uniformMap.u_polygonOffset=function(){return o},n.shaderProgram=BFe(e,t.shaderProgram),n}function vFe(e,t){let n=nt.shallowClone(e),i=ze(n.renderState,!0);return i.stencilTest.enabled=!0,i.stencilTest.mask=Kt.SKIP_LOD_MASK,i.stencilTest.reference=Kt.CESIUM_3D_TILE_MASK|t<<Kt.SKIP_LOD_BIT_SHIFT,i.stencilTest.frontFunction=Zn.GREATER_OR_EQUAL,i.stencilTest.frontOperation.zPass=_t.REPLACE,i.stencilTest.backFunction=Zn.GREATER_OR_EQUAL,i.stencilTest.backOperation.zPass=_t.REPLACE,i.stencilMask=Kt.CESIUM_3D_TILE_MASK|Kt.SKIP_LOD_MASK,n.renderState=Ue.fromCache(i),n}function PFe(e){return(e.renderState.stencilTest.reference&Kt.SKIP_LOD_MASK)>>>Kt.SKIP_LOD_BIT_SHIFT}function RFe(e){let t=ze(e,!0);return t.cull.enabled=!1,t.depthTest.enabled=!0,t.depthMask=!1,t.blending=pn.ALPHA_BLEND,t.stencilTest=Kt.setCesium3DTileBit(),t.stencilMask=Kt.CESIUM_3D_TILE_MASK,Ue.fromCache(t)}function MFe(e){let t=ze(e,!0);return t.stencilTest=Kt.setCesium3DTileBit(),t.stencilMask=Kt.CESIUM_3D_TILE_MASK,Ue.fromCache(t)}Do.prototype.update=function(e,t){this._batchTexture.update(e,t)};Do.prototype.isDestroyed=function(){return!1};Do.prototype.destroy=function(){return this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),ue(this)};var Fg=Do;function NFe(e){this.offset=e.offset,this.count=e.count,this.color=e.color,this.batchIds=e.batchIds}var KA=NFe;var Vw=`in vec3 position; +in float a_batchId; + +uniform mat4 u_modifiedModelViewProjection; + +void main() +{ + gl_Position = czm_depthClamp(u_modifiedModelViewProjection * vec4(position, 1.0)); +} +`;function Pf(e,t){this._content=e,this._batchId=t,this._color=void 0}Object.defineProperties(Pf.prototype,{show:{get:function(){return this._content.batchTable.getShow(this._batchId)},set:function(e){this._content.batchTable.setShow(this._batchId,e)}},color:{get:function(){return l(this._color)||(this._color=new G),this._content.batchTable.getColor(this._batchId,this._color)},set:function(e){this._content.batchTable.setColor(this._batchId,e)}},polylinePositions:{get:function(){if(l(this._content.getPolylinePositions))return this._content.getPolylinePositions(this._batchId)}},content:{get:function(){return this._content}},tileset:{get:function(){return this._content.tileset}},primitive:{get:function(){return this._content.tileset}},featureId:{get:function(){return this._batchId}},pickId:{get:function(){return this._content.batchTable.getPickColor(this._batchId)}}});Pf.prototype.hasProperty=function(e){return this._content.batchTable.hasProperty(this._batchId,e)};Pf.prototype.getPropertyIds=function(e){return this._content.batchTable.getPropertyIds(this._batchId,e)};Pf.prototype.getProperty=function(e){return this._content.batchTable.getProperty(this._batchId,e)};Pf.getPropertyInherited=function(e,t,n){let i=e.batchTable;if(l(i)){if(i.hasPropertyBySemantic(t,n))return i.getPropertyBySemantic(t,n);if(i.hasProperty(t,n))return i.getProperty(t,n)}let o=e.metadata;if(l(o)){if(o.hasPropertyBySemantic(n))return o.getPropertyBySemantic(n);if(o.hasProperty(n))return o.getProperty(n)}let r=e.tile,s=r.metadata;if(l(s)){if(s.hasPropertyBySemantic(n))return s.getPropertyBySemantic(n);if(s.hasProperty(n))return s.getProperty(n)}let a;if(l(r.implicitSubtree)&&(a=r.implicitSubtree.metadata),l(a)){if(a.hasPropertyBySemantic(n))return a.getPropertyBySemantic(n);if(a.hasProperty(n))return a.getProperty(n)}let c=l(e.group)?e.group.metadata:void 0;if(l(c)){if(c.hasPropertyBySemantic(n))return c.getPropertyBySemantic(n);if(c.hasProperty(n))return c.getProperty(n)}let u=e.tileset.metadata;if(l(u)){if(u.hasPropertyBySemantic(n))return u.getPropertyBySemantic(n);if(u.hasProperty(n))return u.getProperty(n)}};Pf.prototype.getPropertyInherited=function(e){return Pf.getPropertyInherited(this._content,this._batchId,e)};Pf.prototype.setProperty=function(e,t){this._content.batchTable.setProperty(this._batchId,e,t),this._content.featurePropertiesDirty=!0};Pf.prototype.isExactClass=function(e){return this._content.batchTable.isExactClass(this._batchId,e)};Pf.prototype.isClass=function(e){return this._content.batchTable.isClass(this._batchId,e)};Pf.prototype.getExactClassName=function(){return this._content.batchTable.getExactClassName(this._batchId)};var Sa=Pf;var Y6=class{add(t,n,i){if(typeof arguments[0]!="string")for(let o in arguments[0])this.add(o,arguments[0][o],arguments[1]);else(Array.isArray(t)?t:[t]).forEach(function(o){this[o]=this[o]||[],n&&this[o][i?"unshift":"push"](n)},this)}run(t,n){this[t]=this[t]||[],this[t].forEach(function(i){i.call(n&&n.context?n.context:n,n)})}},q6=class{constructor(t){this.jsep=t,this.registered={}}register(...t){t.forEach(n=>{if(typeof n!="object"||!n.name||!n.init)throw new Error("Invalid JSEP plugin format");this.registered[n.name]||(n.init(this.jsep),this.registered[n.name]=n)})}},zl=class e{static get version(){return"1.4.0"}static toString(){return"JavaScript Expression Parser (JSEP) v"+e.version}static addUnaryOp(t){return e.max_unop_len=Math.max(t.length,e.max_unop_len),e.unary_ops[t]=1,e}static addBinaryOp(t,n,i){return e.max_binop_len=Math.max(t.length,e.max_binop_len),e.binary_ops[t]=n,i?e.right_associative.add(t):e.right_associative.delete(t),e}static addIdentifierChar(t){return e.additional_identifier_chars.add(t),e}static addLiteral(t,n){return e.literals[t]=n,e}static removeUnaryOp(t){return delete e.unary_ops[t],t.length===e.max_unop_len&&(e.max_unop_len=e.getMaxKeyLen(e.unary_ops)),e}static removeAllUnaryOps(){return e.unary_ops={},e.max_unop_len=0,e}static removeIdentifierChar(t){return e.additional_identifier_chars.delete(t),e}static removeBinaryOp(t){return delete e.binary_ops[t],t.length===e.max_binop_len&&(e.max_binop_len=e.getMaxKeyLen(e.binary_ops)),e.right_associative.delete(t),e}static removeAllBinaryOps(){return e.binary_ops={},e.max_binop_len=0,e}static removeLiteral(t){return delete e.literals[t],e}static removeAllLiterals(){return e.literals={},e}get char(){return this.expr.charAt(this.index)}get code(){return this.expr.charCodeAt(this.index)}constructor(t){this.expr=t,this.index=0}static parse(t){return new e(t).parse()}static getMaxKeyLen(t){return Math.max(0,...Object.keys(t).map(n=>n.length))}static isDecimalDigit(t){return t>=48&&t<=57}static binaryPrecedence(t){return e.binary_ops[t]||0}static isIdentifierStart(t){return t>=65&&t<=90||t>=97&&t<=122||t>=128&&!e.binary_ops[String.fromCharCode(t)]||e.additional_identifier_chars.has(String.fromCharCode(t))}static isIdentifierPart(t){return e.isIdentifierStart(t)||e.isDecimalDigit(t)}throwError(t){let n=new Error(t+" at character "+this.index);throw n.index=this.index,n.description=t,n}runHook(t,n){if(e.hooks[t]){let i={context:this,node:n};return e.hooks.run(t,i),i.node}return n}searchHook(t){if(e.hooks[t]){let n={context:this};return e.hooks[t].find(function(i){return i.call(n.context,n),n.node}),n.node}}gobbleSpaces(){let t=this.code;for(;t===e.SPACE_CODE||t===e.TAB_CODE||t===e.LF_CODE||t===e.CR_CODE;)t=this.expr.charCodeAt(++this.index);this.runHook("gobble-spaces")}parse(){this.runHook("before-all");let t=this.gobbleExpressions(),n=t.length===1?t[0]:{type:e.COMPOUND,body:t};return this.runHook("after-all",n)}gobbleExpressions(t){let n=[],i,o;for(;this.index<this.expr.length;)if(i=this.code,i===e.SEMCOL_CODE||i===e.COMMA_CODE)this.index++;else if(o=this.gobbleExpression())n.push(o);else if(this.index<this.expr.length){if(i===t)break;this.throwError('Unexpected "'+this.char+'"')}return n}gobbleExpression(){let t=this.searchHook("gobble-expression")||this.gobbleBinaryExpression();return this.gobbleSpaces(),this.runHook("after-expression",t)}gobbleBinaryOp(){this.gobbleSpaces();let t=this.expr.substr(this.index,e.max_binop_len),n=t.length;for(;n>0;){if(e.binary_ops.hasOwnProperty(t)&&(!e.isIdentifierStart(this.code)||this.index+t.length<this.expr.length&&!e.isIdentifierPart(this.expr.charCodeAt(this.index+t.length))))return this.index+=n,t;t=t.substr(0,--n)}return!1}gobbleBinaryExpression(){let t,n,i,o,r,s,a,c,u;if(s=this.gobbleToken(),!s||(n=this.gobbleBinaryOp(),!n))return s;for(r={value:n,prec:e.binaryPrecedence(n),right_a:e.right_associative.has(n)},a=this.gobbleToken(),a||this.throwError("Expected expression after "+n),o=[s,r,a];n=this.gobbleBinaryOp();){if(i=e.binaryPrecedence(n),i===0){this.index-=n.length;break}r={value:n,prec:i,right_a:e.right_associative.has(n)},u=n;let f=h=>r.right_a&&h.right_a?i>h.prec:i<=h.prec;for(;o.length>2&&f(o[o.length-2]);)a=o.pop(),n=o.pop().value,s=o.pop(),t={type:e.BINARY_EXP,operator:n,left:s,right:a},o.push(t);t=this.gobbleToken(),t||this.throwError("Expected expression after "+u),o.push(r,t)}for(c=o.length-1,t=o[c];c>1;)t={type:e.BINARY_EXP,operator:o[c-1].value,left:o[c-2],right:t},c-=2;return t}gobbleToken(){let t,n,i,o;if(this.gobbleSpaces(),o=this.searchHook("gobble-token"),o)return this.runHook("after-token",o);if(t=this.code,e.isDecimalDigit(t)||t===e.PERIOD_CODE)return this.gobbleNumericLiteral();if(t===e.SQUOTE_CODE||t===e.DQUOTE_CODE)o=this.gobbleStringLiteral();else if(t===e.OBRACK_CODE)o=this.gobbleArray();else{for(n=this.expr.substr(this.index,e.max_unop_len),i=n.length;i>0;){if(e.unary_ops.hasOwnProperty(n)&&(!e.isIdentifierStart(this.code)||this.index+n.length<this.expr.length&&!e.isIdentifierPart(this.expr.charCodeAt(this.index+n.length)))){this.index+=i;let r=this.gobbleToken();return r||this.throwError("missing unaryOp argument"),this.runHook("after-token",{type:e.UNARY_EXP,operator:n,argument:r,prefix:!0})}n=n.substr(0,--i)}e.isIdentifierStart(t)?(o=this.gobbleIdentifier(),e.literals.hasOwnProperty(o.name)?o={type:e.LITERAL,value:e.literals[o.name],raw:o.name}:o.name===e.this_str&&(o={type:e.THIS_EXP})):t===e.OPAREN_CODE&&(o=this.gobbleGroup())}return o?(o=this.gobbleTokenProperty(o),this.runHook("after-token",o)):this.runHook("after-token",!1)}gobbleTokenProperty(t){this.gobbleSpaces();let n=this.code;for(;n===e.PERIOD_CODE||n===e.OBRACK_CODE||n===e.OPAREN_CODE||n===e.QUMARK_CODE;){let i;if(n===e.QUMARK_CODE){if(this.expr.charCodeAt(this.index+1)!==e.PERIOD_CODE)break;i=!0,this.index+=2,this.gobbleSpaces(),n=this.code}this.index++,n===e.OBRACK_CODE?(t={type:e.MEMBER_EXP,computed:!0,object:t,property:this.gobbleExpression()},t.property||this.throwError('Unexpected "'+this.char+'"'),this.gobbleSpaces(),n=this.code,n!==e.CBRACK_CODE&&this.throwError("Unclosed ["),this.index++):n===e.OPAREN_CODE?t={type:e.CALL_EXP,arguments:this.gobbleArguments(e.CPAREN_CODE),callee:t}:(n===e.PERIOD_CODE||i)&&(i&&this.index--,this.gobbleSpaces(),t={type:e.MEMBER_EXP,computed:!1,object:t,property:this.gobbleIdentifier()}),i&&(t.optional=!0),this.gobbleSpaces(),n=this.code}return t}gobbleNumericLiteral(){let t="",n,i;for(;e.isDecimalDigit(this.code);)t+=this.expr.charAt(this.index++);if(this.code===e.PERIOD_CODE)for(t+=this.expr.charAt(this.index++);e.isDecimalDigit(this.code);)t+=this.expr.charAt(this.index++);if(n=this.char,n==="e"||n==="E"){for(t+=this.expr.charAt(this.index++),n=this.char,(n==="+"||n==="-")&&(t+=this.expr.charAt(this.index++));e.isDecimalDigit(this.code);)t+=this.expr.charAt(this.index++);e.isDecimalDigit(this.expr.charCodeAt(this.index-1))||this.throwError("Expected exponent ("+t+this.char+")")}return i=this.code,e.isIdentifierStart(i)?this.throwError("Variable names cannot start with a number ("+t+this.char+")"):(i===e.PERIOD_CODE||t.length===1&&t.charCodeAt(0)===e.PERIOD_CODE)&&this.throwError("Unexpected period"),{type:e.LITERAL,value:parseFloat(t),raw:t}}gobbleStringLiteral(){let t="",n=this.index,i=this.expr.charAt(this.index++),o=!1;for(;this.index<this.expr.length;){let r=this.expr.charAt(this.index++);if(r===i){o=!0;break}else if(r==="\\")switch(r=this.expr.charAt(this.index++),r){case"n":t+=` +`;break;case"r":t+="\r";break;case"t":t+=" ";break;case"b":t+="\b";break;case"f":t+="\f";break;case"v":t+="\v";break;default:t+=r}else t+=r}return o||this.throwError('Unclosed quote after "'+t+'"'),{type:e.LITERAL,value:t,raw:this.expr.substring(n,this.index)}}gobbleIdentifier(){let t=this.code,n=this.index;for(e.isIdentifierStart(t)?this.index++:this.throwError("Unexpected "+this.char);this.index<this.expr.length&&(t=this.code,e.isIdentifierPart(t));)this.index++;return{type:e.IDENTIFIER,name:this.expr.slice(n,this.index)}}gobbleArguments(t){let n=[],i=!1,o=0;for(;this.index<this.expr.length;){this.gobbleSpaces();let r=this.code;if(r===t){i=!0,this.index++,t===e.CPAREN_CODE&&o&&o>=n.length&&this.throwError("Unexpected token "+String.fromCharCode(t));break}else if(r===e.COMMA_CODE){if(this.index++,o++,o!==n.length){if(t===e.CPAREN_CODE)this.throwError("Unexpected token ,");else if(t===e.CBRACK_CODE)for(let s=n.length;s<o;s++)n.push(null)}}else if(n.length!==o&&o!==0)this.throwError("Expected comma");else{let s=this.gobbleExpression();(!s||s.type===e.COMPOUND)&&this.throwError("Expected comma"),n.push(s)}}return i||this.throwError("Expected "+String.fromCharCode(t)),n}gobbleGroup(){this.index++;let t=this.gobbleExpressions(e.CPAREN_CODE);if(this.code===e.CPAREN_CODE)return this.index++,t.length===1?t[0]:t.length?{type:e.SEQUENCE_EXP,expressions:t}:!1;this.throwError("Unclosed (")}gobbleArray(){return this.index++,{type:e.ARRAY_EXP,elements:this.gobbleArguments(e.CBRACK_CODE)}}},LFe=new Y6;Object.assign(zl,{hooks:LFe,plugins:new q6(zl),COMPOUND:"Compound",SEQUENCE_EXP:"SequenceExpression",IDENTIFIER:"Identifier",MEMBER_EXP:"MemberExpression",LITERAL:"Literal",THIS_EXP:"ThisExpression",CALL_EXP:"CallExpression",UNARY_EXP:"UnaryExpression",BINARY_EXP:"BinaryExpression",ARRAY_EXP:"ArrayExpression",TAB_CODE:9,LF_CODE:10,CR_CODE:13,SPACE_CODE:32,PERIOD_CODE:46,COMMA_CODE:44,SQUOTE_CODE:39,DQUOTE_CODE:34,OPAREN_CODE:40,CPAREN_CODE:41,OBRACK_CODE:91,CBRACK_CODE:93,QUMARK_CODE:63,SEMCOL_CODE:59,COLON_CODE:58,unary_ops:{"-":1,"!":1,"~":1,"+":1},binary_ops:{"||":1,"??":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":10,"/":10,"%":10,"**":11},right_associative:new Set(["**"]),additional_identifier_chars:new Set(["$","_"]),literals:{true:!0,false:!1,null:null},this_str:"this"});zl.max_unop_len=zl.getMaxKeyLen(zl.unary_ops);zl.max_binop_len=zl.getMaxKeyLen(zl.binary_ops);var Qg=e=>new zl(e).parse(),OFe=Object.getOwnPropertyNames(class{});Object.getOwnPropertyNames(zl).filter(e=>!OFe.includes(e)&&Qg[e]===void 0).forEach(e=>{Qg[e]=zl[e]});Qg.Jsep=zl;var FFe="ConditionalExpression",QFe={name:"ternary",init(e){e.hooks.add("after-expression",function(n){if(n.node&&this.code===e.QUMARK_CODE){this.index++;let i=n.node,o=this.gobbleExpression();if(o||this.throwError("Expected expression"),this.gobbleSpaces(),this.code===e.COLON_CODE){this.index++;let r=this.gobbleExpression();if(r||this.throwError("Expected expression"),n.node={type:FFe,test:i,consequent:o,alternate:r},i.operator&&e.binary_ops[i.operator]<=.9){let s=i;for(;s.right.operator&&e.binary_ops[s.right.operator]<=.9;)s=s.right;n.node.test=s.right,s.right=n.node,n.node=i}}else this.throwError("Expected :")}})}};Qg.plugins.register(QFe);var kFe={VARIABLE:0,UNARY:1,BINARY:2,TERNARY:3,CONDITIONAL:4,MEMBER:5,FUNCTION_CALL:6,ARRAY:7,REGEX:8,VARIABLE_IN_STRING:9,LITERAL_NULL:10,LITERAL_BOOLEAN:11,LITERAL_NUMBER:12,LITERAL_STRING:13,LITERAL_COLOR:14,LITERAL_VECTOR:15,LITERAL_REGEX:16,LITERAL_UNDEFINED:17,BUILTIN_VARIABLE:18},It=Object.freeze(kFe);function Vd(e,t){this._expression=e,e=ZFe(e,t),e=e2e($Fe(e)),Qg.addBinaryOp("=~",0),Qg.addBinaryOp("!~",0);let n;try{n=Qg(e)}catch(i){throw new ce(i)}this._runtimeAst=Ni(this,n)}Object.defineProperties(Vd.prototype,{expression:{get:function(){return this._expression}}});var Un={arrayIndex:0,arrayArray:[[]],cartesian2Index:0,cartesian3Index:0,cartesian4Index:0,cartesian2Array:[new k],cartesian3Array:[new d],cartesian4Array:[new se],reset:function(){this.arrayIndex=0,this.cartesian2Index=0,this.cartesian3Index=0,this.cartesian4Index=0},getArray:function(){this.arrayIndex>=this.arrayArray.length&&this.arrayArray.push([]);let e=this.arrayArray[this.arrayIndex++];return e.length=0,e},getCartesian2:function(){return this.cartesian2Index>=this.cartesian2Array.length&&this.cartesian2Array.push(new k),this.cartesian2Array[this.cartesian2Index++]},getCartesian3:function(){return this.cartesian3Index>=this.cartesian3Array.length&&this.cartesian3Array.push(new d),this.cartesian3Array[this.cartesian3Index++]},getCartesian4:function(){return this.cartesian4Index>=this.cartesian4Array.length&&this.cartesian4Array.push(new se),this.cartesian4Array[this.cartesian4Index++]}};Vd.prototype.evaluate=function(e,t){Un.reset();let n=this._runtimeAst.evaluate(e);return t instanceof G&&n instanceof se?G.fromCartesian4(n,t):n instanceof k||n instanceof d||n instanceof se?n.clone(t):n};Vd.prototype.evaluateColor=function(e,t){Un.reset();let n=this._runtimeAst.evaluate(e);return G.fromCartesian4(n,t)};Vd.prototype.getShaderFunction=function(e,t,n,i){let o=this.getShaderExpression(t,n);return o=`${i} ${e} +{ + return ${o}; +} +`,o};Vd.prototype.getShaderExpression=function(e,t){return this._runtimeAst.getShaderExpression(e,t)};Vd.prototype.getVariables=function(){let e=[];return this._runtimeAst.getVariables(e),e=e.filter(function(t,n,i){return i.indexOf(t)===n}),e};var UFe=["!","-","+"],Noe=["+","-","*","/","%","===","!==",">",">=","<","<=","&&","||","!~","=~"],Hw=/\${(.*?)}/g,GFe=/\\/g,zFe="@#%",VFe=/@#%/g,AO=new G,pO={abs:sa(Math.abs),sqrt:sa(Math.sqrt),cos:sa(Math.cos),sin:sa(Math.sin),tan:sa(Math.tan),acos:sa(Math.acos),asin:sa(Math.asin),atan:sa(Math.atan),radians:sa(D.toRadians),degrees:sa(D.toDegrees),sign:sa(D.sign),floor:sa(Math.floor),ceil:sa(Math.ceil),round:sa(Math.round),exp:sa(Math.exp),exp2:sa(WFe),log:sa(Math.log),log2:sa(jFe),fract:sa(HFe),length:YFe,normalize:qFe},gO={atan2:hO(Math.atan2,!1),pow:hO(Math.pow,!1),min:hO(Math.min,!0),max:hO(Math.max,!0),distance:KFe,dot:XFe,cross:JFe},J6={clamp:Loe(D.clamp,!0),mix:Loe(D.lerp,!0)};function HFe(e){return e-Math.floor(e)}function WFe(e){return Math.pow(2,e)}function jFe(e){return D.log2(e)}function sa(e){return function(t,n){if(typeof n=="number")return e(n);if(n instanceof k)return k.fromElements(e(n.x),e(n.y),Un.getCartesian2());if(n instanceof d)return d.fromElements(e(n.x),e(n.y),e(n.z),Un.getCartesian3());if(n instanceof se)return se.fromElements(e(n.x),e(n.y),e(n.z),e(n.w),Un.getCartesian4());throw new ce(`Function "${t}" requires a vector or number argument. Argument is ${n}.`)}}function hO(e,t){return function(n,i,o){if(t&&typeof o=="number"){if(typeof i=="number")return e(i,o);if(i instanceof k)return k.fromElements(e(i.x,o),e(i.y,o),Un.getCartesian2());if(i instanceof d)return d.fromElements(e(i.x,o),e(i.y,o),e(i.z,o),Un.getCartesian3());if(i instanceof se)return se.fromElements(e(i.x,o),e(i.y,o),e(i.z,o),e(i.w,o),Un.getCartesian4())}if(typeof i=="number"&&typeof o=="number")return e(i,o);if(i instanceof k&&o instanceof k)return k.fromElements(e(i.x,o.x),e(i.y,o.y),Un.getCartesian2());if(i instanceof d&&o instanceof d)return d.fromElements(e(i.x,o.x),e(i.y,o.y),e(i.z,o.z),Un.getCartesian3());if(i instanceof se&&o instanceof se)return se.fromElements(e(i.x,o.x),e(i.y,o.y),e(i.z,o.z),e(i.w,o.w),Un.getCartesian4());throw new ce(`Function "${n}" requires vector or number arguments of matching types. Arguments are ${i} and ${o}.`)}}function Loe(e,t){return function(n,i,o,r){if(t&&typeof r=="number"){if(typeof i=="number"&&typeof o=="number")return e(i,o,r);if(i instanceof k&&o instanceof k)return k.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),Un.getCartesian2());if(i instanceof d&&o instanceof d)return d.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),e(i.z,o.z,r),Un.getCartesian3());if(i instanceof se&&o instanceof se)return se.fromElements(e(i.x,o.x,r),e(i.y,o.y,r),e(i.z,o.z,r),e(i.w,o.w,r),Un.getCartesian4())}if(typeof i=="number"&&typeof o=="number"&&typeof r=="number")return e(i,o,r);if(i instanceof k&&o instanceof k&&r instanceof k)return k.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),Un.getCartesian2());if(i instanceof d&&o instanceof d&&r instanceof d)return d.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),e(i.z,o.z,r.z),Un.getCartesian3());if(i instanceof se&&o instanceof se&&r instanceof se)return se.fromElements(e(i.x,o.x,r.x),e(i.y,o.y,r.y),e(i.z,o.z,r.z),e(i.w,o.w,r.w),Un.getCartesian4());throw new ce(`Function "${n}" requires vector or number arguments of matching types. Arguments are ${i}, ${o}, and ${r}.`)}}function YFe(e,t){if(typeof t=="number")return Math.abs(t);if(t instanceof k)return k.magnitude(t);if(t instanceof d)return d.magnitude(t);if(t instanceof se)return se.magnitude(t);throw new ce(`Function "${e}" requires a vector or number argument. Argument is ${t}.`)}function qFe(e,t){if(typeof t=="number")return 1;if(t instanceof k)return k.normalize(t,Un.getCartesian2());if(t instanceof d)return d.normalize(t,Un.getCartesian3());if(t instanceof se)return se.normalize(t,Un.getCartesian4());throw new ce(`Function "${e}" requires a vector or number argument. Argument is ${t}.`)}function KFe(e,t,n){if(typeof t=="number"&&typeof n=="number")return Math.abs(t-n);if(t instanceof k&&n instanceof k)return k.distance(t,n);if(t instanceof d&&n instanceof d)return d.distance(t,n);if(t instanceof se&&n instanceof se)return se.distance(t,n);throw new ce(`Function "${e}" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)}function XFe(e,t,n){if(typeof t=="number"&&typeof n=="number")return t*n;if(t instanceof k&&n instanceof k)return k.dot(t,n);if(t instanceof d&&n instanceof d)return d.dot(t,n);if(t instanceof se&&n instanceof se)return se.dot(t,n);throw new ce(`Function "${e}" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)}function JFe(e,t,n){if(t instanceof d&&n instanceof d)return d.cross(t,n,Un.getCartesian3());throw new ce(`Function "${e}" requires vec3 arguments. Arguments are ${t} and ${n}.`)}function Bt(e,t,n,i,o){this._type=e,this._value=t,this._left=n,this._right=i,this._test=o,this.evaluate=void 0,u2e(this)}function ZFe(e,t){if(!l(t))return e;for(let n in t)if(t.hasOwnProperty(n)){let i=new RegExp(`\\$\\{${n}\\}`,"g"),o=`(${t[n]})`;l(o)&&(e=e.replace(i,o))}return e}function $Fe(e){return e.replace(GFe,zFe)}function X6(e){return e.replace(VFe,"\\")}function e2e(e){let t=e,n="",i=t.indexOf("${");for(;i>=0;){let o=t.indexOf("'"),r=t.indexOf('"'),s;if(o>=0&&o<i)s=t.indexOf("'",o+1),n+=t.substr(0,s+1),t=t.substr(s+1),i=t.indexOf("${");else if(r>=0&&r<i)s=t.indexOf('"',r+1),n+=t.substr(0,s+1),t=t.substr(s+1),i=t.indexOf("${");else{n+=t.substr(0,i);let a=t.indexOf("}");if(a<0)throw new ce("Unmatched {.");n+=`czm_${t.substr(i+2,a-(i+2))}`,t=t.substr(a+1),i=t.indexOf("${")}}return n+=t,n}function t2e(e){let t=typeof e.value;if(e.value===null)return new Bt(It.LITERAL_NULL,null);if(t==="boolean")return new Bt(It.LITERAL_BOOLEAN,e.value);if(t==="number")return new Bt(It.LITERAL_NUMBER,e.value);if(t==="string")return e.value.indexOf("${")>=0?new Bt(It.VARIABLE_IN_STRING,e.value):new Bt(It.LITERAL_STRING,X6(e.value))}function n2e(e,t){let n=t.arguments,i=n.length,o,r,s,a;if(t.callee.type==="MemberExpression"){o=t.callee.property.name;let c=t.callee.object;if(o==="test"||o==="exec"){if(!l(c.callee)||c.callee.name!=="regExp")throw new ce(`${o} is not a function.`);return i===0?o==="test"?new Bt(It.LITERAL_BOOLEAN,!1):new Bt(It.LITERAL_NULL,null):(s=Ni(e,c),a=Ni(e,n[0]),new Bt(It.FUNCTION_CALL,o,s,a))}else if(o==="toString")return r=Ni(e,c),new Bt(It.FUNCTION_CALL,o,r);throw new ce(`Unexpected function call "${o}".`)}if(o=t.callee.name,o==="color"){if(i===0)return new Bt(It.LITERAL_COLOR,o);if(r=Ni(e,n[0]),l(n[1])){let c=Ni(e,n[1]);return new Bt(It.LITERAL_COLOR,o,[r,c])}return new Bt(It.LITERAL_COLOR,o,[r])}else if(o==="rgb"||o==="hsl"){if(i<3)throw new ce(`${o} requires three arguments.`);return r=[Ni(e,n[0]),Ni(e,n[1]),Ni(e,n[2])],new Bt(It.LITERAL_COLOR,o,r)}else if(o==="rgba"||o==="hsla"){if(i<4)throw new ce(`${o} requires four arguments.`);return r=[Ni(e,n[0]),Ni(e,n[1]),Ni(e,n[2]),Ni(e,n[3])],new Bt(It.LITERAL_COLOR,o,r)}else if(o==="vec2"||o==="vec3"||o==="vec4"){r=new Array(i);for(let c=0;c<i;++c)r[c]=Ni(e,n[c]);return new Bt(It.LITERAL_VECTOR,o,r)}else{if(o==="isNaN"||o==="isFinite")return i===0?o==="isNaN"?new Bt(It.LITERAL_BOOLEAN,!0):new Bt(It.LITERAL_BOOLEAN,!1):(r=Ni(e,n[0]),new Bt(It.UNARY,o,r));if(o==="isExactClass"||o==="isClass"){if(i<1||i>1)throw new ce(`${o} requires exactly one argument.`);return r=Ni(e,n[0]),new Bt(It.UNARY,o,r)}else if(o==="getExactClassName"){if(i>0)throw new ce(`${o} does not take any argument.`);return new Bt(It.UNARY,o)}else if(l(pO[o])){if(i!==1)throw new ce(`${o} requires exactly one argument.`);return r=Ni(e,n[0]),new Bt(It.UNARY,o,r)}else if(l(gO[o])){if(i!==2)throw new ce(`${o} requires exactly two arguments.`);return s=Ni(e,n[0]),a=Ni(e,n[1]),new Bt(It.BINARY,o,s,a)}else if(l(J6[o])){if(i!==3)throw new ce(`${o} requires exactly three arguments.`);s=Ni(e,n[0]),a=Ni(e,n[1]);let c=Ni(e,n[2]);return new Bt(It.TERNARY,o,s,a,c)}else{if(o==="Boolean")return i===0?new Bt(It.LITERAL_BOOLEAN,!1):(r=Ni(e,n[0]),new Bt(It.UNARY,o,r));if(o==="Number")return i===0?new Bt(It.LITERAL_NUMBER,0):(r=Ni(e,n[0]),new Bt(It.UNARY,o,r));if(o==="String")return i===0?new Bt(It.LITERAL_STRING,""):(r=Ni(e,n[0]),new Bt(It.UNARY,o,r));if(o==="regExp")return i2e(e,t)}}throw new ce(`Unexpected function call "${o}".`)}function i2e(e,t){let n=t.arguments;if(n.length===0)return new Bt(It.LITERAL_REGEX,new RegExp);let i=Ni(e,n[0]),o;if(n.length>1){let r=Ni(e,n[1]);if(K6(i)&&K6(r)){try{o=new RegExp(X6(String(i._value)),r._value)}catch(s){throw new ce(s)}return new Bt(It.LITERAL_REGEX,o)}return new Bt(It.REGEX,i,r)}if(K6(i)){try{o=new RegExp(X6(String(i._value)))}catch(r){throw new ce(r)}return new Bt(It.LITERAL_REGEX,o)}return new Bt(It.REGEX,i)}function o2e(e){if(c2e(e.name)){let t=l2e(e.name);return t.substr(0,8)==="tiles3d_"?new Bt(It.BUILTIN_VARIABLE,t):new Bt(It.VARIABLE,t)}else{if(e.name==="NaN")return new Bt(It.LITERAL_NUMBER,NaN);if(e.name==="Infinity")return new Bt(It.LITERAL_NUMBER,1/0);if(e.name==="undefined")return new Bt(It.LITERAL_UNDEFINED,void 0)}throw new ce(`${e.name} is not defined.`)}function r2e(e){let t=e.property.name;if(t==="PI")return new Bt(It.LITERAL_NUMBER,Math.PI);if(t==="E")return new Bt(It.LITERAL_NUMBER,Math.E)}function s2e(e){if(e.property.name==="POSITIVE_INFINITY")return new Bt(It.LITERAL_NUMBER,Number.POSITIVE_INFINITY)}function a2e(e,t){if(t.object.name==="Math")return r2e(t);if(t.object.name==="Number")return s2e(t);let n,i=Ni(e,t.object);return t.computed?(n=Ni(e,t.property),new Bt(It.MEMBER,"brackets",i,n)):(n=new Bt(It.LITERAL_STRING,t.property.name),new Bt(It.MEMBER,"dot",i,n))}function K6(e){return e._type>=It.LITERAL_NULL}function c2e(e){return e.substr(0,4)==="czm_"}function l2e(e){return e.substr(4)}function Ni(e,t){let n,i,o,r;if(t.type==="Literal")n=t2e(t);else if(t.type==="CallExpression")n=n2e(e,t);else if(t.type==="Identifier")n=o2e(t);else if(t.type==="UnaryExpression"){i=t.operator;let s=Ni(e,t.argument);if(UFe.indexOf(i)>-1)n=new Bt(It.UNARY,i,s);else throw new ce(`Unexpected operator "${i}".`)}else if(t.type==="BinaryExpression")if(i=t.operator,o=Ni(e,t.left),r=Ni(e,t.right),Noe.indexOf(i)>-1)n=new Bt(It.BINARY,i,o,r);else throw new ce(`Unexpected operator "${i}".`);else if(t.type==="LogicalExpression")i=t.operator,o=Ni(e,t.left),r=Ni(e,t.right),Noe.indexOf(i)>-1&&(n=new Bt(It.BINARY,i,o,r));else if(t.type==="ConditionalExpression"){let s=Ni(e,t.test);o=Ni(e,t.consequent),r=Ni(e,t.alternate),n=new Bt(It.CONDITIONAL,"?",o,r,s)}else if(t.type==="MemberExpression")n=a2e(e,t);else if(t.type==="ArrayExpression"){let s=[];for(let a=0;a<t.elements.length;a++)s[a]=Ni(e,t.elements[a]);n=new Bt(It.ARRAY,s)}else throw t.type==="Compound"?new ce("Provide exactly one expression."):new ce("Cannot parse expression.");return n}function u2e(e){e._type===It.CONDITIONAL?e.evaluate=e._evaluateConditional:e._type===It.FUNCTION_CALL?e._value==="test"?e.evaluate=e._evaluateRegExpTest:e._value==="exec"?e.evaluate=e._evaluateRegExpExec:e._value==="toString"&&(e.evaluate=e._evaluateToString):e._type===It.UNARY?e._value==="!"?e.evaluate=e._evaluateNot:e._value==="-"?e.evaluate=e._evaluateNegative:e._value==="+"?e.evaluate=e._evaluatePositive:e._value==="isNaN"?e.evaluate=e._evaluateNaN:e._value==="isFinite"?e.evaluate=e._evaluateIsFinite:e._value==="isExactClass"?e.evaluate=e._evaluateIsExactClass:e._value==="isClass"?e.evaluate=e._evaluateIsClass:e._value==="getExactClassName"?e.evaluate=e._evaluateGetExactClassName:e._value==="Boolean"?e.evaluate=e._evaluateBooleanConversion:e._value==="Number"?e.evaluate=e._evaluateNumberConversion:e._value==="String"?e.evaluate=e._evaluateStringConversion:l(pO[e._value])&&(e.evaluate=d2e(e._value)):e._type===It.BINARY?e._value==="+"?e.evaluate=e._evaluatePlus:e._value==="-"?e.evaluate=e._evaluateMinus:e._value==="*"?e.evaluate=e._evaluateTimes:e._value==="/"?e.evaluate=e._evaluateDivide:e._value==="%"?e.evaluate=e._evaluateMod:e._value==="==="?e.evaluate=e._evaluateEqualsStrict:e._value==="!=="?e.evaluate=e._evaluateNotEqualsStrict:e._value==="<"?e.evaluate=e._evaluateLessThan:e._value==="<="?e.evaluate=e._evaluateLessThanOrEquals:e._value===">"?e.evaluate=e._evaluateGreaterThan:e._value===">="?e.evaluate=e._evaluateGreaterThanOrEquals:e._value==="&&"?e.evaluate=e._evaluateAnd:e._value==="||"?e.evaluate=e._evaluateOr:e._value==="=~"?e.evaluate=e._evaluateRegExpMatch:e._value==="!~"?e.evaluate=e._evaluateRegExpNotMatch:l(gO[e._value])&&(e.evaluate=h2e(e._value)):e._type===It.TERNARY?e.evaluate=m2e(e._value):e._type===It.MEMBER?e._value==="brackets"?e.evaluate=e._evaluateMemberBrackets:e.evaluate=e._evaluateMemberDot:e._type===It.ARRAY?e.evaluate=e._evaluateArray:e._type===It.VARIABLE?e.evaluate=e._evaluateVariable:e._type===It.VARIABLE_IN_STRING?e.evaluate=e._evaluateVariableString:e._type===It.LITERAL_COLOR?e.evaluate=e._evaluateLiteralColor:e._type===It.LITERAL_VECTOR?e.evaluate=e._evaluateLiteralVector:e._type===It.LITERAL_STRING?e.evaluate=e._evaluateLiteralString:e._type===It.REGEX?e.evaluate=e._evaluateRegExp:e._type===It.BUILTIN_VARIABLE?e._value==="tiles3d_tileset_time"&&(e.evaluate=f2e):e.evaluate=e._evaluateLiteral}function f2e(e){return l(e)?e.content.tileset.timeSinceLoad:0}function d2e(e){let t=pO[e];return function(n){let i=this._left.evaluate(n);return t(e,i)}}function h2e(e){let t=gO[e];return function(n){let i=this._left.evaluate(n),o=this._right.evaluate(n);return t(e,i,o)}}function m2e(e){let t=J6[e];return function(n){let i=this._left.evaluate(n),o=this._right.evaluate(n),r=this._test.evaluate(n);return t(e,i,o,r)}}function _O(e,t){if(l(e))return e.getPropertyInherited(t)}Bt.prototype._evaluateLiteral=function(){return this._value};Bt.prototype._evaluateLiteralColor=function(e){let t=AO,n=this._left;if(this._value==="color")l(n)?n.length>1?(G.fromCssColorString(n[0].evaluate(e),t),t.alpha=n[1].evaluate(e)):G.fromCssColorString(n[0].evaluate(e),t):G.fromBytes(255,255,255,255,t);else if(this._value==="rgb")G.fromBytes(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),255,t);else if(this._value==="rgba"){let i=n[3].evaluate(e)*255;G.fromBytes(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),i,t)}else this._value==="hsl"?G.fromHsl(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),1,t):this._value==="hsla"&&G.fromHsl(n[0].evaluate(e),n[1].evaluate(e),n[2].evaluate(e),n[3].evaluate(e),t);return se.fromColor(t,Un.getCartesian4())};Bt.prototype._evaluateLiteralVector=function(e){let t=Un.getArray(),n=this._value,i=this._left,o=i.length;for(let a=0;a<o;++a){let c=i[a].evaluate(e);if(typeof c=="number")t.push(c);else if(c instanceof k)t.push(c.x,c.y);else if(c instanceof d)t.push(c.x,c.y,c.z);else if(c instanceof se)t.push(c.x,c.y,c.z,c.w);else throw new ce(`${n} argument must be a vector or number. Argument is ${c}.`)}let r=t.length,s=parseInt(n.charAt(3));if(r===0)throw new ce(`Invalid ${n} constructor. No valid arguments.`);if(r<s&&r>1)throw new ce(`Invalid ${n} constructor. Not enough arguments.`);if(r>s&&o>1)throw new ce(`Invalid ${n} constructor. Too many arguments.`);if(r===1){let a=t[0];t.push(a,a,a)}if(n==="vec2")return k.fromArray(t,0,Un.getCartesian2());if(n==="vec3")return d.fromArray(t,0,Un.getCartesian3());if(n==="vec4")return se.fromArray(t,0,Un.getCartesian4())};Bt.prototype._evaluateLiteralString=function(){return this._value};Bt.prototype._evaluateVariableString=function(e){let t=this._value,n=Hw.exec(t);for(;n!==null;){let i=n[0],o=n[1],r=_O(e,o);l(r)||(r=""),t=t.replace(i,r),Hw.lastIndex+=r.length-i.length,n=Hw.exec(t)}return t};Bt.prototype._evaluateVariable=function(e){return _O(e,this._value)};function RC(e){return e._value==="feature"}Bt.prototype._evaluateMemberDot=function(e){if(RC(this._left))return _O(e,this._right.evaluate(e));let t=this._left.evaluate(e);if(!l(t))return;let n=this._right.evaluate(e);if(t instanceof k||t instanceof d||t instanceof se){if(n==="r")return t.x;if(n==="g")return t.y;if(n==="b")return t.z;if(n==="a")return t.w}return t[n]};Bt.prototype._evaluateMemberBrackets=function(e){if(RC(this._left))return _O(e,this._right.evaluate(e));let t=this._left.evaluate(e);if(!l(t))return;let n=this._right.evaluate(e);if(t instanceof k||t instanceof d||t instanceof se){if(n===0||n==="r")return t.x;if(n===1||n==="g")return t.y;if(n===2||n==="b")return t.z;if(n===3||n==="a")return t.w}return t[n]};Bt.prototype._evaluateArray=function(e){let t=[];for(let n=0;n<this._value.length;n++)t[n]=this._value[n].evaluate(e);return t};Bt.prototype._evaluateNot=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new ce(`Operator "!" requires a boolean argument. Argument is ${t}.`);return!t};Bt.prototype._evaluateNegative=function(e){let t=this._left.evaluate(e);if(t instanceof k)return k.negate(t,Un.getCartesian2());if(t instanceof d)return d.negate(t,Un.getCartesian3());if(t instanceof se)return se.negate(t,Un.getCartesian4());if(typeof t=="number")return-t;throw new ce(`Operator "-" requires a vector or number argument. Argument is ${t}.`)};Bt.prototype._evaluatePositive=function(e){let t=this._left.evaluate(e);if(!(t instanceof k||t instanceof d||t instanceof se||typeof t=="number"))throw new ce(`Operator "+" requires a vector or number argument. Argument is ${t}.`);return t};Bt.prototype._evaluateLessThan=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new ce(`Operator "<" requires number arguments. Arguments are ${t} and ${n}.`);return t<n};Bt.prototype._evaluateLessThanOrEquals=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new ce(`Operator "<=" requires number arguments. Arguments are ${t} and ${n}.`);return t<=n};Bt.prototype._evaluateGreaterThan=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new ce(`Operator ">" requires number arguments. Arguments are ${t} and ${n}.`);return t>n};Bt.prototype._evaluateGreaterThanOrEquals=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(typeof t!="number"||typeof n!="number")throw new ce(`Operator ">=" requires number arguments. Arguments are ${t} and ${n}.`);return t>=n};Bt.prototype._evaluateOr=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new ce(`Operator "||" requires boolean arguments. First argument is ${t}.`);if(t)return!0;let n=this._right.evaluate(e);if(typeof n!="boolean")throw new ce(`Operator "||" requires boolean arguments. Second argument is ${n}.`);return t||n};Bt.prototype._evaluateAnd=function(e){let t=this._left.evaluate(e);if(typeof t!="boolean")throw new ce(`Operator "&&" requires boolean arguments. First argument is ${t}.`);if(!t)return!1;let n=this._right.evaluate(e);if(typeof n!="boolean")throw new ce(`Operator "&&" requires boolean arguments. Second argument is ${n}.`);return t&&n};Bt.prototype._evaluatePlus=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof k&&t instanceof k)return k.add(t,n,Un.getCartesian2());if(n instanceof d&&t instanceof d)return d.add(t,n,Un.getCartesian3());if(n instanceof se&&t instanceof se)return se.add(t,n,Un.getCartesian4());if(typeof t=="string"||typeof n=="string")return t+n;if(typeof t=="number"&&typeof n=="number")return t+n;throw new ce(`Operator "+" requires vector or number arguments of matching types, or at least one string argument. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateMinus=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof k&&t instanceof k)return k.subtract(t,n,Un.getCartesian2());if(n instanceof d&&t instanceof d)return d.subtract(t,n,Un.getCartesian3());if(n instanceof se&&t instanceof se)return se.subtract(t,n,Un.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t-n;throw new ce(`Operator "-" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateTimes=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof k&&t instanceof k)return k.multiplyComponents(t,n,Un.getCartesian2());if(n instanceof k&&typeof t=="number")return k.multiplyByScalar(n,t,Un.getCartesian2());if(t instanceof k&&typeof n=="number")return k.multiplyByScalar(t,n,Un.getCartesian2());if(n instanceof d&&t instanceof d)return d.multiplyComponents(t,n,Un.getCartesian3());if(n instanceof d&&typeof t=="number")return d.multiplyByScalar(n,t,Un.getCartesian3());if(t instanceof d&&typeof n=="number")return d.multiplyByScalar(t,n,Un.getCartesian3());if(n instanceof se&&t instanceof se)return se.multiplyComponents(t,n,Un.getCartesian4());if(n instanceof se&&typeof t=="number")return se.multiplyByScalar(n,t,Un.getCartesian4());if(t instanceof se&&typeof n=="number")return se.multiplyByScalar(t,n,Un.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t*n;throw new ce(`Operator "*" requires vector or number arguments. If both arguments are vectors they must be matching types. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateDivide=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof k&&t instanceof k)return k.divideComponents(t,n,Un.getCartesian2());if(t instanceof k&&typeof n=="number")return k.divideByScalar(t,n,Un.getCartesian2());if(n instanceof d&&t instanceof d)return d.divideComponents(t,n,Un.getCartesian3());if(t instanceof d&&typeof n=="number")return d.divideByScalar(t,n,Un.getCartesian3());if(n instanceof se&&t instanceof se)return se.divideComponents(t,n,Un.getCartesian4());if(t instanceof se&&typeof n=="number")return se.divideByScalar(t,n,Un.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t/n;throw new ce(`Operator "/" requires vector or number arguments of matching types, or a number as the second argument. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateMod=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(n instanceof k&&t instanceof k)return k.fromElements(t.x%n.x,t.y%n.y,Un.getCartesian2());if(n instanceof d&&t instanceof d)return d.fromElements(t.x%n.x,t.y%n.y,t.z%n.z,Un.getCartesian3());if(n instanceof se&&t instanceof se)return se.fromElements(t.x%n.x,t.y%n.y,t.z%n.z,t.w%n.w,Un.getCartesian4());if(typeof t=="number"&&typeof n=="number")return t%n;throw new ce(`Operator "%" requires vector or number arguments of matching types. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateEqualsStrict=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);return n instanceof k&&t instanceof k||n instanceof d&&t instanceof d||n instanceof se&&t instanceof se?t.equals(n):t===n};Bt.prototype._evaluateNotEqualsStrict=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);return n instanceof k&&t instanceof k||n instanceof d&&t instanceof d||n instanceof se&&t instanceof se?!t.equals(n):t!==n};Bt.prototype._evaluateConditional=function(e){let t=this._test.evaluate(e);if(typeof t!="boolean")throw new ce(`Conditional argument of conditional expression must be a boolean. Argument is ${t}.`);return t?this._left.evaluate(e):this._right.evaluate(e)};Bt.prototype._evaluateNaN=function(e){return isNaN(this._left.evaluate(e))};Bt.prototype._evaluateIsFinite=function(e){return isFinite(this._left.evaluate(e))};Bt.prototype._evaluateIsExactClass=function(e){return l(e)?e.isExactClass(this._left.evaluate(e)):!1};Bt.prototype._evaluateIsClass=function(e){return l(e)?e.isClass(this._left.evaluate(e)):!1};Bt.prototype._evaluateGetExactClassName=function(e){if(l(e))return e.getExactClassName()};Bt.prototype._evaluateBooleanConversion=function(e){return!!this._left.evaluate(e)};Bt.prototype._evaluateNumberConversion=function(e){return Number(this._left.evaluate(e))};Bt.prototype._evaluateStringConversion=function(e){return String(this._left.evaluate(e))};Bt.prototype._evaluateRegExp=function(e){let t=this._value.evaluate(e),n="";l(this._left)&&(n=this._left.evaluate(e));let i;try{i=new RegExp(t,n)}catch(o){throw new ce(o)}return i};Bt.prototype._evaluateRegExpTest=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(!(t instanceof RegExp&&typeof n=="string"))throw new ce(`RegExp.test requires the first argument to be a RegExp and the second argument to be a string. Arguments are ${t} and ${n}.`);return t.test(n)};Bt.prototype._evaluateRegExpMatch=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(t instanceof RegExp&&typeof n=="string")return t.test(n);if(n instanceof RegExp&&typeof t=="string")return n.test(t);throw new ce(`Operator "=~" requires one RegExp argument and one string argument. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateRegExpNotMatch=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(t instanceof RegExp&&typeof n=="string")return!t.test(n);if(n instanceof RegExp&&typeof t=="string")return!n.test(t);throw new ce(`Operator "!~" requires one RegExp argument and one string argument. Arguments are ${t} and ${n}.`)};Bt.prototype._evaluateRegExpExec=function(e){let t=this._left.evaluate(e),n=this._right.evaluate(e);if(!(t instanceof RegExp&&typeof n=="string"))throw new ce(`RegExp.exec requires the first argument to be a RegExp and the second argument to be a string. Arguments are ${t} and ${n}.`);let i=t.exec(n);return l(i)?i[1]:null};Bt.prototype._evaluateToString=function(e){let t=this._left.evaluate(e);if(t instanceof RegExp||t instanceof k||t instanceof d||t instanceof se)return String(t);throw new ce(`Unexpected function call "${this._value}".`)};function Ooe(e){let t=e._left,n=t.length;for(let a=0;a<n;++a)if(t[a]._type!==It.LITERAL_NUMBER)return;let i=t[0]._value,o=t[1]._value,r=t[2]._value,s=n===4?t[3]._value:1;return G.fromHsl(i,o,r,s,AO)}function Foe(e){let t=e._left,n=t.length;for(let o=0;o<n;++o)if(t[o]._type!==It.LITERAL_NUMBER)return;let i=AO;return i.red=t[0]._value/255,i.green=t[1]._value/255,i.blue=t[2]._value/255,i.alpha=n===4?t[3]._value:1,i}function kg(e){return e%1===0?e.toFixed(1):e.toString()}function A2e(e){let t=kg(e.red),n=kg(e.green),i=kg(e.blue);return`vec3(${t}, ${n}, ${i})`}function mO(e){let t=kg(e.red),n=kg(e.green),i=kg(e.blue),o=kg(e.alpha);return`vec4(${t}, ${n}, ${i}, ${o})`}function Qoe(e,t,n,i){let o=e.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=e[s].getShaderExpression(t,n,i);return r}function koe(e,t){return l(t[e])?t[e]:Vd.NULL_SENTINEL}Vd.NULL_SENTINEL="czm_infinity";Bt.prototype.getShaderExpression=function(e,t,n){let i,o,r,s,a=this._type,c=this._value;l(this._left)&&(Array.isArray(this._left)?o=Qoe(this._left,e,t,this):o=this._left.getShaderExpression(e,t,this)),l(this._right)&&(r=this._right.getShaderExpression(e,t,this)),l(this._test)&&(s=this._test.getShaderExpression(e,t,this)),Array.isArray(this._value)&&(c=Qoe(this._value,e,t,this));let u,f,h;switch(a){case It.VARIABLE:return RC(this)?void 0:koe(c,e);case It.UNARY:if(c==="Boolean")return`bool(${o})`;if(c==="Number")return`float(${o})`;if(c==="round")return`floor(${o} + 0.5)`;if(l(pO[c]))return`${c}(${o})`;if(c==="isNaN")return`(${o} != ${o})`;if(c==="isFinite")return`(abs(${o}) < czm_infinity)`;if(c==="String"||c==="isExactClass"||c==="isClass"||c==="getExactClassName")throw new ce(`Error generating style shader: "${c}" is not supported.`);return c+o;case It.BINARY:return c==="%"?`mod(${o}, ${r})`:c==="==="?`(${o} == ${r})`:c==="!=="?`(${o} != ${r})`:c==="atan2"?`atan(${o}, ${r})`:l(gO[c])?`${c}(${o}, ${r})`:`(${o} ${c} ${r})`;case It.TERNARY:if(l(J6[c]))return`${c}(${o}, ${r}, ${s})`;break;case It.CONDITIONAL:return`(${s} ? ${o} : ${r})`;case It.MEMBER:return RC(this._left)?koe(r,e):r==="r"||r==="x"||r==="0.0"?`${o}[0]`:r==="g"||r==="y"||r==="1.0"?`${o}[1]`:r==="b"||r==="z"||r==="2.0"?`${o}[2]`:r==="a"||r==="w"||r==="3.0"?`${o}[3]`:`${o}[int(${r})]`;case It.FUNCTION_CALL:throw new ce(`Error generating style shader: "${c}" is not supported.`);case It.ARRAY:if(c.length===4)return`vec4(${c[0]}, ${c[1]}, ${c[2]}, ${c[3]})`;if(c.length===3)return`vec3(${c[0]}, ${c[1]}, ${c[2]})`;if(c.length===2)return`vec2(${c[0]}, ${c[1]})`;throw new ce("Error generating style shader: Invalid array length. Array length should be 2, 3, or 4.");case It.REGEX:throw new ce("Error generating style shader: Regular expressions are not supported.");case It.VARIABLE_IN_STRING:throw new ce("Error generating style shader: Converting a variable to a string is not supported.");case It.LITERAL_NULL:return Vd.NULL_SENTINEL;case It.LITERAL_BOOLEAN:return c?"true":"false";case It.LITERAL_NUMBER:return kg(c);case It.LITERAL_STRING:if(l(n)&&n._type===It.MEMBER&&(c==="r"||c==="g"||c==="b"||c==="a"||c==="x"||c==="y"||c==="z"||c==="w"||RC(n._left)))return c;if(i=G.fromCssColorString(c,AO),l(i))return A2e(i);throw new ce("Error generating style shader: String literals are not supported.");case It.LITERAL_COLOR:if(u=o,c==="color"){if(l(u)){if(u.length>1){let A=u[0],g=u[1];return g!=="1.0"&&(t.translucent=!0),`vec4(${A}, ${g})`}}else return"vec4(1.0)";return`vec4(${u[0]}, 1.0)`}else{if(c==="rgb")return i=Foe(this),l(i)?mO(i):`vec4(${u[0]} / 255.0, ${u[1]} / 255.0, ${u[2]} / 255.0, 1.0)`;if(c==="rgba")return u[3]!=="1.0"&&(t.translucent=!0),i=Foe(this),l(i)?mO(i):`vec4(${u[0]} / 255.0, ${u[1]} / 255.0, ${u[2]} / 255.0, ${u[3]})`;if(c==="hsl")return i=Ooe(this),l(i)?mO(i):`vec4(czm_HSLToRGB(vec3(${u[0]}, ${u[1]}, ${u[2]})), 1.0)`;if(c==="hsla")return i=Ooe(this),l(i)?(i.alpha!==1&&(t.translucent=!0),mO(i)):(u[3]!=="1.0"&&(t.translucent=!0),`vec4(czm_HSLToRGB(vec3(${u[0]}, ${u[1]}, ${u[2]})), ${u[3]})`)}break;case It.LITERAL_VECTOR:f=o.length,h=`${c}(`;for(let A=0;A<f;++A)h+=o[A],A<f-1&&(h+=", ");return h+=")",h;case It.LITERAL_REGEX:throw new ce("Error generating style shader: Regular expressions are not supported.");case It.LITERAL_UNDEFINED:return Vd.NULL_SENTINEL;case It.BUILTIN_VARIABLE:if(c==="tiles3d_tileset_time")return c}};Bt.prototype.getVariables=function(e,t){let n,i,o,r=this._type,s=this._value;if(l(this._left))if(Array.isArray(this._left))for(n=this._left,i=n.length,o=0;o<i;++o)n[o].getVariables(e,this);else this._left.getVariables(e,this);if(l(this._right)&&this._right.getVariables(e,this),l(this._test)&&this._test.getVariables(e,this),Array.isArray(this._value))for(n=this._value,i=n.length,o=0;o<i;++o)n[o].getVariables(e,this);let a;switch(r){case It.VARIABLE:RC(this)||e.push(s);break;case It.VARIABLE_IN_STRING:for(a=Hw.exec(s);a!==null;)e.push(a[1]),a=Hw.exec(s);break;case It.LITERAL_STRING:l(t)&&t._type===It.MEMBER&&RC(t._left)&&e.push(s);break}};var Hd=Vd;function XA(e){e=e??V.EMPTY_OBJECT,this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._positions=e.positions,this._vertexBatchIds=e.vertexBatchIds,this._indices=e.indices,this._indexCounts=e.indexCounts,this._indexOffsets=e.indexOffsets,this._batchedIndices=e.batchedIndices,this._boundingVolume=e.boundingVolume,this._boundingVolumes=e.boundingVolumes,this._center=e.center??d.ZERO,this._va=void 0,this._sp=void 0,this._spStencil=void 0,this._spPick=void 0,this._uniformMap=void 0,this._vaSwap=void 0,this._rsStencilDepthPass=void 0,this._rsStencilDepthPass3DTiles=void 0,this._rsColorPass=void 0,this._rsPickPass=void 0,this._rsWireframe=void 0,this._commands=[],this._commandsIgnoreShow=[],this._pickCommands=[],this._constantColor=G.clone(G.WHITE),this._highlightColor=this._constantColor,this._batchDirty=!0,this._pickCommandsDirty=!0,this._framesSinceLastRebatch=0,this._updatingAllCommands=!1,this._trianglesLength=this._indices.length/3,this._geometryByteLength=this._indices.byteLength+this._positions.byteLength+this._vertexBatchIds.byteLength,this.debugWireframe=!1,this._debugWireframe=this.debugWireframe,this._wireframeDirty=!1,this.forceRebatch=!1,this.classificationType=e.classificationType??Jn.BOTH,this._vertexShaderSource=e._vertexShaderSource,this._fragmentShaderSource=e._fragmentShaderSource,this._attributeLocations=e._attributeLocations,this._uniformMap=e._uniformMap,this._pickId=e._pickId,this._modelMatrix=e._modelMatrix,this._boundingSphere=e._boundingSphere,this._batchIdLookUp={};let t=this._batchIds.length;for(let n=0;n<t;++n){let i=this._batchIds[n];this._batchIdLookUp[i]=n}}Object.defineProperties(XA.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}}});var p2e={position:0,a_batchId:1};function g2e(e,t){if(l(e._va))return;let n=Et.createVertexBuffer({context:t,typedArray:e._positions,usage:Qe.STATIC_DRAW}),i=Et.createVertexBuffer({context:t,typedArray:e._vertexBatchIds,usage:Qe.STATIC_DRAW}),o=Et.createIndexBuffer({context:t,typedArray:e._indices,usage:Qe.DYNAMIC_DRAW,indexDatatype:e._indices.BYTES_PER_ELEMENT===2?Fe.UNSIGNED_SHORT:Fe.UNSIGNED_INT}),r=[{index:0,vertexBuffer:n,componentDatatype:q.fromTypedArray(e._positions),componentsPerAttribute:3},{index:1,vertexBuffer:i,componentDatatype:q.fromTypedArray(e._vertexBatchIds),componentsPerAttribute:1}];e._va=new li({context:t,attributes:r,indexBuffer:o}),t.webgl2&&(e._vaSwap=new li({context:t,attributes:r,indexBuffer:Et.createIndexBuffer({context:t,sizeInBytes:o.sizeInBytes,usage:Qe.DYNAMIC_DRAW,indexDatatype:o.indexDatatype})})),e._batchedPositions=void 0,e._transferrableBatchIds=void 0,e._vertexBatchIds=void 0}function _2e(e,t){if(l(e._sp))return;let n=e._batchTable,i=e._attributeLocations??p2e,o=e._pickId,r=e._vertexShaderSource,s=e._fragmentShaderSource;if(l(r)){e._sp=ln.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:i}),e._spStencil=e._sp,s=We.replaceMain(s,"czm_non_pick_main"),s=`${s}void main() +{ + czm_non_pick_main(); + out_FragColor = ${o}; +} +`,e._spPick=ln.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:i});return}let a=n.getVertexShaderCallback(!1,"a_batchId",void 0)(Vw),c=n.getFragmentShaderCallback(!1,void 0,!0)(IC);o=n.getPickId();let u=new We({sources:[a]}),f=new We({defines:["VECTOR_TILE"],sources:[c]});e._sp=ln.fromCache({context:t,vertexShaderSource:u,fragmentShaderSource:f,attributeLocations:i}),u=new We({sources:[Vw]}),f=new We({defines:["VECTOR_TILE"],sources:[IC]}),e._spStencil=ln.fromCache({context:t,vertexShaderSource:u,fragmentShaderSource:f,attributeLocations:i}),c=We.replaceMain(c,"czm_non_pick_main"),c=`${c} +void main() +{ + czm_non_pick_main(); + out_FragColor = ${o}; +} +`;let h=new We({sources:[a]}),A=new We({defines:["VECTOR_TILE"],sources:[c]});e._spPick=ln.fromCache({context:t,vertexShaderSource:h,fragmentShaderSource:A,attributeLocations:i})}function Uoe(e){let t=e?Zn.EQUAL:Zn.ALWAYS;return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:!0,frontFunction:t,frontOperation:{fail:_t.KEEP,zFail:_t.DECREMENT_WRAP,zPass:_t.KEEP},backFunction:t,backOperation:{fail:_t.KEEP,zFail:_t.INCREMENT_WRAP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Ja.LESS_OR_EQUAL},depthMask:!1}}var y2e={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:pn.PRE_MULTIPLIED_ALPHA_BLEND},C2e={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1};function E2e(e){l(e._rsStencilDepthPass)||(e._rsStencilDepthPass=Ue.fromCache(Uoe(!1)),e._rsStencilDepthPass3DTiles=Ue.fromCache(Uoe(!0)),e._rsColorPass=Ue.fromCache(y2e),e._rsPickPass=Ue.fromCache(C2e))}var MC=new R,Goe=new d;function I2e(e,t){if(l(e._uniformMap))return;let n={u_modifiedModelViewProjection:function(){let i=t.uniformState.view,o=t.uniformState.projection;return R.clone(i,MC),R.multiplyByPoint(MC,e._center,Goe),R.setTranslation(MC,Goe,MC),R.multiply(o,MC,MC),MC},u_highlightColor:function(){return e._highlightColor}};e._uniformMap=e._batchTable.getUniformMapCallback()(n)}function Z6(e,t,n,i,o,r,s){let a=e.constructor.BYTES_PER_ELEMENT,c=r.length;for(let u=0;u<c;++u){let f=r[u],h=s[f],A=i[h],g=o[h],m=new e.constructor(e.buffer,a*A,g);t.set(m,n),i[h]=n,n+=g}return n}function x2e(e,t){let n=e._indices,i=e._indexOffsets,o=e._indexCounts,r=e._batchIdLookUp,s=new n.constructor(n.length),a=t.pop(),c=[a],u=Z6(n,s,0,i,o,a.batchIds,r);for(a.offset=0,a.count=u;t.length>0;){let f=t.pop();if(G.equals(f.color,a.color))u=Z6(n,s,u,i,o,f.batchIds,r),a.batchIds=a.batchIds.concat(f.batchIds),a.count=u-a.offset;else{let h=u;u=Z6(n,s,u,i,o,f.batchIds,r),f.offset=h,f.count=u-h,c.push(f),a=f}}e._va.indexBuffer.copyFromArrayView(s),e._indices=s,e._batchedIndices=c}function $6(e,t,n,i,o,r,s){let a=e.bytesPerIndex,c=r.length;for(let u=0;u<c;++u){let f=r[u],h=s[f],A=i[h],g=o[h];t.copyFromBuffer(e,A*a,n*a,g*a),i[h]=n,n+=g}return n}function b2e(e,t){let n=e._indexOffsets,i=e._indexCounts,o=e._batchIdLookUp,r=t.pop(),s=[r],a=e._va.indexBuffer,c=e._vaSwap.indexBuffer,u=$6(a,c,0,n,i,r.batchIds,o);for(r.offset=0,r.count=u;t.length>0;){let h=t.pop();if(G.equals(h.color,r.color))u=$6(a,c,u,n,i,h.batchIds,o),r.batchIds=r.batchIds.concat(h.batchIds),r.count=u-r.offset;else{let A=u;u=$6(a,c,u,n,i,h.batchIds,o),h.offset=A,h.count=u-A,s.push(h),r=h}}let f=e._va;e._va=e._vaSwap,e._vaSwap=f,e._batchedIndices=s}function T2e(e,t){return t.color.toRgba()-e.color.toRgba()}function S2e(e,t){if(!e._batchDirty)return!1;let n=e._batchedIndices,i=n.length,o=!1,r={};for(let s=0;s<i;++s){let c=n[s].color.toRgba();if(l(r[c])){o=!0;break}else r[c]=!0}if(!o)return e._batchDirty=!1,!1;if(o&&!e.forceRebatch&&e._framesSinceLastRebatch<120){++e._framesSinceLastRebatch;return}return n.sort(T2e),t.webgl2?b2e(e,n):x2e(e,n),e._framesSinceLastRebatch=0,e._batchDirty=!1,e._pickCommandsDirty=!0,e._wireframeDirty=!0,!0}function w2e(e,t){let n=S2e(e,t),i=e._commands,o=e._batchedIndices,r=o.length,s=r*2;if(l(i)&&!n&&i.length===s)return;i.length=s;let a=e._va,c=e._sp,u=e._modelMatrix??R.IDENTITY,f=e._uniformMap,h=e._boundingVolume;for(let A=0;A<r;++A){let g=o[A].offset,m=o[A].count,_=i[A*2];l(_)||(_=i[A*2]=new nt({owner:e})),_.vertexArray=a,_.modelMatrix=u,_.offset=g,_.count=m,_.renderState=e._rsStencilDepthPass,_.shaderProgram=c,_.uniformMap=f,_.boundingVolume=h,_.cull=!1,_.pass=Be.TERRAIN_CLASSIFICATION;let y=nt.shallowClone(_,_.derivedCommands.tileset);y.renderState=e._rsStencilDepthPass3DTiles,y.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,_.derivedCommands.tileset=y;let C=i[A*2+1];l(C)||(C=i[A*2+1]=new nt({owner:e})),C.vertexArray=a,C.modelMatrix=u,C.offset=g,C.count=m,C.renderState=e._rsColorPass,C.shaderProgram=c,C.uniformMap=f,C.boundingVolume=h,C.cull=!1,C.pass=Be.TERRAIN_CLASSIFICATION;let E=nt.shallowClone(C,C.derivedCommands.tileset);E.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,C.derivedCommands.tileset=E}e._commandsDirty=!0}function B2e(e,t){if(e.classificationType===Jn.TERRAIN||!t.invertClassification||l(e._commandsIgnoreShow)&&!e._commandsDirty)return;let n=e._commands,i=e._commandsIgnoreShow,o=e._spStencil,r=n.length,s=i.length=r/2,a=0;for(let c=0;c<s;++c){let u=i[c]=nt.shallowClone(n[a],i[c]);u.shaderProgram=o,u.pass=Be.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,a+=2}e._commandsDirty=!1}function D2e(e){if(!e._pickCommandsDirty)return;let t=e._indexOffsets.length,n=e._pickCommands;n.length=t*2;let i=e._va,o=e._spStencil,r=e._spPick,s=e._modelMatrix??R.IDENTITY,a=e._uniformMap;for(let c=0;c<t;++c){let u=e._indexOffsets[c],f=e._indexCounts[c],h=l(e._boundingVolumes)?e._boundingVolumes[c]:e.boundingVolume,A=n[c*2];l(A)||(A=n[c*2]=new nt({owner:e,pickOnly:!0})),A.vertexArray=i,A.modelMatrix=s,A.offset=u,A.count=f,A.renderState=e._rsStencilDepthPass,A.shaderProgram=o,A.uniformMap=a,A.boundingVolume=h,A.pass=Be.TERRAIN_CLASSIFICATION;let g=nt.shallowClone(A,A.derivedCommands.tileset);g.renderState=e._rsStencilDepthPass3DTiles,g.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,A.derivedCommands.tileset=g;let m=n[c*2+1];l(m)||(m=n[c*2+1]=new nt({owner:e,pickOnly:!0})),m.vertexArray=i,m.modelMatrix=s,m.offset=u,m.count=f,m.renderState=e._rsPickPass,m.shaderProgram=r,m.uniformMap=a,m.boundingVolume=h,m.pass=Be.TERRAIN_CLASSIFICATION;let _=nt.shallowClone(m,m.derivedCommands.tileset);_.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,m.derivedCommands.tileset=_}e._pickCommandsDirty=!1}XA.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new Sa(e,r)}};XA.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function v2e(e,t){e._updatingAllCommands=!0;let n=e._batchIds,i=n.length,o;for(o=0;o<i;++o){let s=n[o],a=t[s];a.show=!0,a.color=G.WHITE}let r=e._batchedIndices;for(i=r.length,o=0;o<i;++o)r[o].color=G.clone(G.WHITE);e._updatingAllCommands=!1,e._batchDirty=!0}var P2e=new G,R2e=G.WHITE,M2e=!0,N2e=/\$/;XA.prototype.applyStyle=function(e,t){if(!l(e)){v2e(this,t);return}let n=e.color,i=n instanceof Hd&&!N2e.test(n.expression);this._updatingAllCommands=i;let o=this._batchIds,r=o.length,s;for(s=0;s<r;++s){let a=o[s],c=t[a];c.color=l(e.color)?e.color.evaluateColor(c,P2e):R2e,c.show=l(e.show)?e.show.evaluate(c):M2e}if(i){let a=this._batchedIndices;for(r=a.length,s=0;s<r;++s)a[s].color=G.clone(G.WHITE);this._updatingAllCommands=!1,this._batchDirty=!0}};XA.prototype.updateCommands=function(e,t){if(this._updatingAllCommands)return;let n=this._batchIdLookUp,i=n[e];if(!l(i))return;let o=this._indexOffsets,r=this._indexCounts,s=o[i],a=r[i],c=this._batchedIndices,u=c.length,f;for(f=0;f<u;++f){let _=c[f].offset,y=c[f].count;if(s>=_&&s<_+y)break}c.push(new KA({color:G.clone(t),offset:s,count:a,batchIds:[e]}));let h=[],A=[],g=c[f].batchIds,m=g.length;for(let _=0;_<m;++_){let y=g[_];if(y===e)continue;let C=n[y];o[C]<s?h.push(y):A.push(y)}A.length!==0&&c.push(new KA({color:G.clone(c[f].color),offset:s+a,count:c[f].offset+c[f].count-(s+a),batchIds:A})),h.length!==0?(c[f].count=s-c[f].offset,c[f].batchIds=h):c.splice(f,1),this._batchDirty=!0};function zoe(e,t,n,i){let o=e.classificationType,r=o!==Jn.CESIUM_3D_TILE,s=o!==Jn.TERRAIN,a=t.commandList,c=n.length,u,f;for(f=0;f<c;++f)r&&(u=n[f],u.pass=Be.TERRAIN_CLASSIFICATION,a.push(u)),s&&(u=n[f].derivedCommands.tileset,u.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,a.push(u));if(!(!t.invertClassification||!l(i)))for(c=i.length,f=0;f<c;++f)a.push(i[f])}function L2e(e,t){let n=e.commandList,i=t.length;for(let o=0;o<i;o+=2){let r=t[o+1];r.pass=Be.OPAQUE,n.push(r)}}function O2e(e){let t=e.debugWireframe===e._debugWireframe;if(t=t&&!(e.debugWireframe&&e._wireframeDirty),t)return;l(e._rsWireframe)||(e._rsWireframe=Ue.fromCache({}));let n,i;e.debugWireframe?(n=e._rsWireframe,i=Me.LINES):(n=e._rsColorPass,i=Me.TRIANGLES);let o=e._commands,r=o.length;for(let s=0;s<r;s+=2){let a=o[s+1];a.renderState=n,a.primitiveType=i}e._debugWireframe=e.debugWireframe,e._wireframeDirty=!1}XA.prototype.update=function(e){let t=e.context;g2e(this,t),_2e(this,t),E2e(this),I2e(this,t);let n=e.passes;n.render&&(w2e(this,t),B2e(this,e),O2e(this),this._debugWireframe?L2e(e,this._commands):zoe(this,e,this._commands,this._commandsIgnoreShow)),n.pick&&(D2e(this),zoe(this,e,this._pickCommands))};XA.prototype.isDestroyed=function(){return!1};XA.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._vaSwap=this._vaSwap&&this._vaSwap.destroy(),ue(this)};var HI=XA;function wu(e){this._boxes=e.boxes,this._boxBatchIds=e.boxBatchIds,this._cylinders=e.cylinders,this._cylinderBatchIds=e.cylinderBatchIds,this._ellipsoids=e.ellipsoids,this._ellipsoidBatchIds=e.ellipsoidBatchIds,this._spheres=e.spheres,this._sphereBatchIds=e.sphereBatchIds,this._modelMatrix=e.modelMatrix,this._batchTable=e.batchTable,this._boundingVolume=e.boundingVolume,this._center=e.center,l(this._center)||(l(this._boundingVolume)?this._center=d.clone(this._boundingVolume.center):this._center=d.clone(d.ZERO)),this._boundingVolumes=void 0,this._batchedIndices=void 0,this._indices=void 0,this._indexOffsets=void 0,this._indexCounts=void 0,this._positions=void 0,this._vertexBatchIds=void 0,this._batchIds=void 0,this._batchTableColors=void 0,this._packedBuffer=void 0,this._ready=!1,this._promise=void 0,this._error=void 0,this._verticesPromise=void 0,this._primitive=void 0,this.debugWireframe=!1,this.forceRebatch=!1,this.classificationType=Jn.BOTH}Object.defineProperties(wu.prototype,{trianglesLength:{get:function(){return l(this._primitive)?this._primitive.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._primitive)?this._primitive.geometryByteLength:0}},ready:{get:function(){return this._ready}}});wu.packedBoxLength=R.packedLength+d.packedLength;wu.packedCylinderLength=R.packedLength+2;wu.packedEllipsoidLength=R.packedLength+d.packedLength;wu.packedSphereLength=d.packedLength+1;function F2e(e){let t=new Float64Array(R.packedLength+d.packedLength),n=0;return d.pack(e._center,t,n),n+=d.packedLength,R.pack(e._modelMatrix,t,n),t}function Q2e(e,t){let n=0,i=t[n++],o=t[n++],r=e._boundingVolumes=new Array(o);for(let c=0;c<o;++c)r[c]=le.unpack(t,n),n+=le.packedLength;let s=t[n++],a=e._batchedIndices=new Array(s);for(let c=0;c<s;++c){let u=G.unpack(t,n);n+=G.packedLength;let f=t[n++],h=t[n++],A=t[n++],g=new Array(A);for(let m=0;m<A;++m)g[m]=t[n++];a[c]=new KA({color:u,offset:f,count:h,batchIds:g})}return i}var k2e=new mi("createVectorTileGeometries",5),U2e=new G;function G2e(e){if(!l(e._primitive)&&!l(e._verticesPromise)){let t=e._boxes,n=e._boxBatchIds,i=e._cylinders,o=e._cylinderBatchIds,r=e._ellipsoids,s=e._ellipsoidBatchIds,a=e._spheres,c=e._sphereBatchIds,u=e._batchTableColors,f=e._packedBuffer;if(!l(u)){let m=0;l(e._boxes)&&(t=e._boxes=t.slice(),n=e._boxBatchIds=n.slice(),m+=n.length),l(e._cylinders)&&(i=e._cylinders=i.slice(),o=e._cylinderBatchIds=o.slice(),m+=o.length),l(e._ellipsoids)&&(r=e._ellipsoids=r.slice(),s=e._ellipsoidBatchIds=s.slice(),m+=s.length),l(e._spheres)&&(a=e._sphere=a.slice(),c=e._sphereBatchIds=c.slice(),m+=c.length),u=e._batchTableColors=new Uint32Array(m);let _=e._batchTable;for(let y=0;y<m;++y){let C=_.getColor(y,U2e);u[y]=C.toRgba()}f=e._packedBuffer=F2e(e)}let h=[];l(t)&&h.push(t.buffer,n.buffer),l(i)&&h.push(i.buffer,o.buffer),l(r)&&h.push(r.buffer,s.buffer),l(a)&&h.push(a.buffer,c.buffer),h.push(u.buffer,f.buffer);let A={boxes:l(t)?t.buffer:void 0,boxBatchIds:l(t)?n.buffer:void 0,cylinders:l(i)?i.buffer:void 0,cylinderBatchIds:l(i)?o.buffer:void 0,ellipsoids:l(r)?r.buffer:void 0,ellipsoidBatchIds:l(r)?s.buffer:void 0,spheres:l(a)?a.buffer:void 0,sphereBatchIds:l(a)?c.buffer:void 0,batchTableColors:u.buffer,packedBuffer:f.buffer},g=e._verticesPromise=k2e.scheduleTask(A,h);return l(g)?g.then(function(m){if(e.isDestroyed())return;let _=new Float64Array(m.packedBuffer);Q2e(e,_)===2?e._indices=new Uint16Array(m.indices):e._indices=new Uint32Array(m.indices),e._indexOffsets=new Uint32Array(m.indexOffsets),e._indexCounts=new Uint32Array(m.indexCounts),e._positions=new Float32Array(m.positions),e._vertexBatchIds=new Uint16Array(m.vertexBatchIds),e._batchIds=new Uint16Array(m.batchIds),z2e(e),e._ready=!0}).catch(m=>{e.isDestroyed()||(e._error=m)}):void 0}}function z2e(e){l(e._primitive)||(e._primitive=new HI({batchTable:e._batchTable,positions:e._positions,batchIds:e._batchIds,vertexBatchIds:e._vertexBatchIds,indices:e._indices,indexOffsets:e._indexOffsets,indexCounts:e._indexCounts,batchedIndices:e._batchedIndices,boundingVolume:e._boundingVolume,boundingVolumes:e._boundingVolumes,center:e._center,pickObject:e._pickObject??e}),e._boxes=void 0,e._boxBatchIds=void 0,e._cylinders=void 0,e._cylinderBatchIds=void 0,e._ellipsoids=void 0,e._ellipsoidBatchIds=void 0,e._spheres=void 0,e._sphereBatchIds=void 0,e._center=void 0,e._modelMatrix=void 0,e._batchTable=void 0,e._boundingVolume=void 0,e._boundingVolumes=void 0,e._batchedIndices=void 0,e._indices=void 0,e._indexOffsets=void 0,e._indexCounts=void 0,e._positions=void 0,e._vertexBatchIds=void 0,e._batchIds=void 0,e._batchTableColors=void 0,e._packedBuffer=void 0,e._verticesPromise=void 0)}wu.prototype.createFeatures=function(e,t){this._primitive.createFeatures(e,t)};wu.prototype.applyDebugSettings=function(e,t){this._primitive.applyDebugSettings(e,t)};wu.prototype.applyStyle=function(e,t){this._primitive.applyStyle(e,t)};wu.prototype.updateCommands=function(e,t){this._primitive.updateCommands(e,t)};wu.prototype.update=function(e){if(!this._ready){if(l(this._promise)||(this._promise=G2e(this)),l(this._error)){let t=this._error;throw this._error=void 0,t}return}this._primitive.debugWireframe=this.debugWireframe,this._primitive.forceRebatch=this.forceRebatch,this._primitive.classificationType=this.classificationType,this._primitive.update(e)};wu.prototype.isDestroyed=function(){return!1};wu.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};var Ug=wu;function _m(e,t,n,i,o){this._tileset=e,this._tile=t,this._resource=n,this._geometries=void 0,this._metadata=void 0,this._batchTable=void 0,this._features=void 0,this.featurePropertiesDirty=!1,this._group=void 0,this._ready=!1,W2e(this,i,o)}Object.defineProperties(_m.prototype,{featuresLength:{get:function(){return l(this._batchTable)?this._batchTable.featuresLength:0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return l(this._geometries)?this._geometries.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._geometries)?this._geometries.geometryByteLength:0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return l(this._batchTable)?this._batchTable.batchTableByteLength:0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},batchTable:{get:function(){return this._batchTable}},group:{get:function(){return this._group},set:function(e){this._group=e}}});function V2e(e){return function(t,n){l(e._geometries)&&e._geometries.updateCommands(t,n)}}function H2e(e,t){let n,i,o,r,s,a=e.BOXES_LENGTH??0,c=e.CYLINDERS_LENGTH??0,u=e.ELLIPSOIDS_LENGTH??0,f=e.SPHERES_LENGTH??0;if(a>0&&l(e.BOX_BATCH_IDS)){let m=t.byteOffset+e.BOX_BATCH_IDS.byteOffset;n=new Uint16Array(t.buffer,m,a)}if(c>0&&l(e.CYLINDER_BATCH_IDS)){let m=t.byteOffset+e.CYLINDER_BATCH_IDS.byteOffset;i=new Uint16Array(t.buffer,m,c)}if(u>0&&l(e.ELLIPSOID_BATCH_IDS)){let m=t.byteOffset+e.ELLIPSOID_BATCH_IDS.byteOffset;o=new Uint16Array(t.buffer,m,u)}if(f>0&&l(e.SPHERE_BATCH_IDS)){let m=t.byteOffset+e.SPHERE_BATCH_IDS.byteOffset;r=new Uint16Array(t.buffer,m,f)}let h=l(n)||l(i)||l(o)||l(r),A=a>0&&!l(n)||c>0&&!l(i)||u>0&&!l(o)||f>0&&!l(r);if(h&&A)throw new ce("If one group of batch ids is defined, then all batch ids must be defined");if(!l(n)&&!l(i)&&!l(o)&&!l(r)){let m=0;if(!l(n)&&a>0)for(n=new Uint16Array(a),s=0;s<a;++s)n[s]=m++;if(!l(i)&&c>0)for(i=new Uint16Array(c),s=0;s<c;++s)i[s]=m++;if(!l(o)&&u>0)for(o=new Uint16Array(u),s=0;s<u;++s)o[s]=m++;if(!l(r)&&f>0)for(r=new Uint16Array(f),s=0;s<f;++s)r[s]=m++}return{boxes:n,cylinders:i,ellipsoids:o,spheres:r}}var NC=Uint32Array.BYTES_PER_ELEMENT;function W2e(e,t,n){n=n??0;let i=new Uint8Array(t),o=new DataView(t);n+=NC;let r=o.getUint32(n,!0);if(r!==1)throw new ce(`Only Geometry tile version 1 is supported. Version ${r} is not.`);n+=NC;let s=o.getUint32(n,!0);if(n+=NC,s===0){e._ready=!0;return}let a=o.getUint32(n,!0);if(n+=NC,a===0)throw new ce("Feature table must have a byte length greater than zero");let c=o.getUint32(n,!0);n+=NC;let u=o.getUint32(n,!0);n+=NC;let f=o.getUint32(n,!0);n+=NC;let h=yr(i,n,a);n+=a;let A=new Uint8Array(t,n,c);n+=c;let g,m;u>0&&(g=yr(i,n,u),n+=u,f>0&&(m=new Uint8Array(t,n,f),m=new Uint8Array(m)));let _=h.BOXES_LENGTH??0,y=h.CYLINDERS_LENGTH??0,C=h.ELLIPSOIDS_LENGTH??0,E=h.SPHERES_LENGTH??0,I=_+y+C+E,b=new Fg(e,I,g,m,V2e(e));if(e._batchTable=b,I===0)return;let S=e.tile.computedTransform,B;l(h.RTC_CENTER)&&(B=d.unpack(h.RTC_CENTER),R.multiplyByPoint(S,B,B));let v=H2e(h,A);if(_>0||y>0||C>0||E>0){let P,N,L,p;if(_>0){let x=A.byteOffset+h.BOXES.byteOffset;P=new Float32Array(A.buffer,x,Ug.packedBoxLength*_)}if(y>0){let x=A.byteOffset+h.CYLINDERS.byteOffset;N=new Float32Array(A.buffer,x,Ug.packedCylinderLength*y)}if(C>0){let x=A.byteOffset+h.ELLIPSOIDS.byteOffset;L=new Float32Array(A.buffer,x,Ug.packedEllipsoidLength*C)}if(E>0){let x=A.byteOffset+h.SPHERES.byteOffset;p=new Float32Array(A.buffer,x,Ug.packedSphereLength*E)}return e._geometries=new Ug({boxes:P,boxBatchIds:v.boxes,cylinders:N,cylinderBatchIds:v.cylinders,ellipsoids:L,ellipsoidBatchIds:v.ellipsoids,spheres:p,sphereBatchIds:v.spheres,center:B,modelMatrix:S,batchTable:b,boundingVolume:e.tile.boundingVolume.boundingVolume}),e}return Promise.resolve(e)}function Voe(e){let t=e.featuresLength;if(!l(e._features)&&t>0){let n=new Array(t);l(e._geometries)&&e._geometries.createFeatures(e,n),e._features=n}}_m.prototype.hasProperty=function(e,t){return this._batchTable.hasProperty(e,t)};_m.prototype.getFeature=function(e){return Voe(this),this._features[e]};_m.prototype.applyDebugSettings=function(e,t){l(this._geometries)&&this._geometries.applyDebugSettings(e,t)};_m.prototype.applyStyle=function(e){Voe(this),l(this._geometries)&&this._geometries.applyStyle(e,this._features)};_m.prototype.update=function(e,t){l(this._geometries)&&(this._geometries.classificationType=this._tileset.classificationType,this._geometries.debugWireframe=this._tileset.debugWireframe,this._geometries.update(t)),l(this._batchTable)&&this._geometries.ready&&(this._batchTable.update(e,t),this._ready=!0)};_m.prototype.pick=function(e,t,n){};_m.prototype.isDestroyed=function(){return!1};_m.prototype.destroy=function(){return this._geometries=this._geometries&&this._geometries.destroy(),this._batchTable=this._batchTable&&this._batchTable.destroy(),ue(this)};var yO=_m;var eW={};eW.encode2D=function(e,t,n){let i=Math.pow(2,e),o={x:t,y:n},r,s,a,c=BigInt(0);for(a=i/2;a>0;a/=2)r=(o.x&a)>0?1:0,s=(o.y&a)>0?1:0,c+=BigInt((3*r^s)*a*a),Hoe(i,o,r,s);return c};eW.decode2D=function(e,t){let n=Math.pow(2,e),i={x:0,y:0},o,r,s,a;for(s=1,a=t;s<n;s*=2)o=1&Number(a/BigInt(2)),r=1&Number(a^BigInt(o)),Hoe(s,i,o,r),i.x+=s*o,i.y+=s*r,a/=BigInt(4);return[i.x,i.y]};function Hoe(e,t,n,i){if(i!==0)return;n===1&&(t.x=e-1-t.x,t.y=e-1-t.y);let o=t.x;t.x=t.y,t.y=o}var Ww=eW;var LC=30,j2e=1<<LC,Y2e=1<<LC+1>>>0,tW=2*LC+1,Gg=4,Yoe=[],qoe=[],q2e=[[0,1,3,2],[0,2,3,1],[3,2,0,1],[3,1,0,2]],zg=1,WI=2,CO=[zg,0,0,zg|WI];function us(e){if(!jt.supportsBigInt())throw new ce("S2 required BigInt support");this._cellId=e,this._level=us.getLevel(e)}us.fromToken=function(e){return new us(us.getIdFromToken(e))};us.isValidId=function(e){return!(e<=0||e>>BigInt(tW)>5||!(e&~e+BigInt(1)&BigInt("0x1555555555555555")))};us.isValidToken=function(e){return/^[0-9a-fA-F]{1,16}$/.test(e)?us.isValidId(us.getIdFromToken(e)):!1};us.getIdFromToken=function(e){return BigInt("0x"+e+"0".repeat(16-e.length))};us.getTokenFromId=function(e){let t=Math.floor(oQe(e)/4),n=e.toString(16).replace(/0*$/,"");return Array(17-t-n.length).join("0")+n};us.getLevel=function(e){let t=0;for(;e!==BigInt(0)&&!(e&BigInt(1));)t++,e=e>>BigInt(1);return LC-(t>>1)};us.prototype.getChild=function(e){let t=Joe(this._cellId)>>BigInt(2),n=this._cellId+BigInt(2*e+1-4)*t;return new us(n)};us.prototype.getParent=function(){let e=Joe(this._cellId)<<BigInt(2);return new us(this._cellId&~e+BigInt(1)|e)};us.prototype.getParentAtLevel=function(e){let t=nQe(e);return new us(this._cellId&-t|t)};us.prototype.getCenter=function(e){e=e??te.WGS84;let t=K2e(this._cellId,this._level);t=d.normalize(t,t);let n=new Ae.fromCartesian(t,te.UNIT_SPHERE);return Ae.toCartesian(n,e,new d)};us.prototype.getVertex=function(e,t){t=t??te.WGS84;let n=X2e(this._cellId,this._level,e);n=d.normalize(n,n);let i=new Ae.fromCartesian(n,te.UNIT_SPHERE);return Ae.toCartesian(i,t,new d)};us.fromFacePositionLevel=function(e,t,n){let i=(e<4?"0":"")+(e<2?"0":"")+e.toString(2),o=t.toString(2),r=Array(2*n-o.length+1).join("0"),s=Array(tW-2*n).join("0"),a=BigInt(`0b${i}${r}${o}1${s}`);return new us(a)};function K2e(e,t){let n=J2e(e,t);return Z2e(n[0],n[1],n[2])}function X2e(e,t,n){let i=Koe(e,t),o=$2e([i[1],i[2]],t),r=n>>1&1;return Xoe(i[0],o[0][r^n&1],o[1][r])}function J2e(e,t){let n=Koe(e),i=n[0],o=n[1],r=n[2],s=t===30,a=!s&&(BigInt(o)^e>>BigInt(2))&BigInt(1),c=s?1:a?2:0,u=(o<<1)+c,f=(r<<1)+c;return[i,u,f]}function Koe(e){Yoe.length===0&&tQe();let t=Number(e>>BigInt(tW)),n=t&zg,i=(1<<Gg)-1,o=0,r=0;for(let s=7;s>=0;s--){let c=(1<<2*(s===7?LC-7*Gg:Gg))-1;n+=Number(e>>BigInt(s*2*Gg+1)&BigInt(c))<<2,n=qoe[n];let u=s*Gg;o+=n>>Gg+2<<u,r+=(n>>2&i)<<u,n&=zg|WI}return[t,o,r]}function Z2e(e,t,n){let i=Woe(t),o=Woe(n),r=EO(i),s=EO(o);return Xoe(e,r,s)}function Xoe(e,t,n){switch(e){case 0:return new d(1,t,n);case 1:return new d(-t,1,n);case 2:return new d(-t,-n,1);case 3:return new d(-1,-n,-t);case 4:return new d(n,-1,-t);default:return new d(n,t,-1)}}function EO(e){return e>=.5?1/3*(4*e*e-1):1/3*(1-4*(1-e)*(1-e))}function Woe(e){return 1/Y2e*e}function $2e(e,t){let n=[[],[]],i=eQe(t);for(let o=0;o<2;++o){let r=e[o]&-i,s=r+i;n[o][0]=EO(joe(r)),n[o][1]=EO(joe(s))}return n}function eQe(e){return 1<<LC-e>>>0}function joe(e){return 1/j2e*e}function Vg(e,t,n,i,o,r){if(e===Gg){let s=(t<<Gg)+n;Yoe[(s<<2)+i]=(o<<2)+r,qoe[(o<<2)+i]=(s<<2)+r}else{e++,t<<=1,n<<=1,o<<=2;let s=q2e[r];Vg(e,t+(s[0]>>1),n+(s[0]&1),i,o,r^CO[0]),Vg(e,t+(s[1]>>1),n+(s[1]&1),i,o+1,r^CO[1]),Vg(e,t+(s[2]>>1),n+(s[2]&1),i,o+2,r^CO[2]),Vg(e,t+(s[3]>>1),n+(s[3]&1),i,o+3,r^CO[3])}}function tQe(){Vg(0,0,0,0,0,0),Vg(0,0,0,zg,0,zg),Vg(0,0,0,WI,0,WI),Vg(0,0,0,zg|WI,0,zg|WI)}function Joe(e){return e&~e+BigInt(1)}function nQe(e){return BigInt(1)<<BigInt(2*(LC-e))}var iQe=[64,0,1,39,2,15,40,23,3,12,16,59,41,19,24,54,4,64,13,10,17,62,60,28,42,30,20,51,25,44,55,47,5,32,65,38,14,22,11,58,18,53,63,9,61,27,29,50,43,46,31,37,21,57,52,8,26,49,45,36,56,7,48,35,6,34,33,0];function oQe(e){return iQe[(-e&e)%BigInt(67)]}var Hg=us;function rQe(e,t){return l(e)&&l(e.extensions)&&l(e.extensions[t])}var Ii=rQe;function nW(e){let t=e.lengthBits,n=e.availableCount,i=e.constant,o=e.bitstream;if(l(i))n=t;else{let r=Math.ceil(t/8);if(o.length!==r)throw new ce(`Availability bitstream must be exactly ${r} bytes long to store ${t} bits. Actual bitstream was ${o.length} bytes long.`);let s=e.computeAvailableCountEnabled??!1;!l(n)&&s&&(n=sQe(o,t))}this._lengthBits=t,this._availableCount=n,this._constant=i,this._bitstream=o}function sQe(e,t){let n=0;for(let i=0;i<t;i++){let o=i>>3,r=i%8;n+=e[o]>>r&1}return n}Object.defineProperties(nW.prototype,{lengthBits:{get:function(){return this._lengthBits}},availableCount:{get:function(){return this._availableCount}}});nW.prototype.getBit=function(e){if(l(this._constant))return this._constant;let t=e>>3,n=e%8;return(this._bitstream[t]>>n&1)===1};var jw=nW;function JA(e){e=e??V.EMPTY_OBJECT;let t=e.metadataTable,n=e.class,i=e.entityId,o=e.propertyTableJson;this._class=n,this._metadataTable=t,this._entityId=i,this._extensions=o.extensions,this._extras=o.extras}Object.defineProperties(JA.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});JA.prototype.hasProperty=function(e){return this._metadataTable.hasProperty(e)};JA.prototype.hasPropertyBySemantic=function(e){return this._metadataTable.hasPropertyBySemantic(e)};JA.prototype.getPropertyIds=function(e){return this._metadataTable.getPropertyIds(e)};JA.prototype.getProperty=function(e){return this._metadataTable.getProperty(this._entityId,e)};JA.prototype.setProperty=function(e,t){return this._metadataTable.setProperty(this._entityId,e,t)};JA.prototype.getPropertyBySemantic=function(e){return this._metadataTable.getPropertyBySemantic(this._entityId,e)};JA.prototype.setPropertyBySemantic=function(e,t){return this._metadataTable.setPropertyBySemantic(this._entityId,e,t)};var Yw=JA;var IO={QUADTREE:"QUADTREE",OCTREE:"OCTREE"};IO.getBranchingFactor=function(e){switch(e){case IO.OCTREE:return 8;case IO.QUADTREE:return 4}};var Ts=Object.freeze(IO);function wa(){}Object.defineProperties(wa.prototype,{class:{get:function(){me.throwInstantiationError()}}});wa.prototype.hasProperty=function(e){me.throwInstantiationError()};wa.prototype.hasPropertyBySemantic=function(e){me.throwInstantiationError()};wa.prototype.getPropertyIds=function(e){me.throwInstantiationError()};wa.prototype.getProperty=function(e){me.throwInstantiationError()};wa.prototype.setProperty=function(e,t){me.throwInstantiationError()};wa.prototype.getPropertyBySemantic=function(e){me.throwInstantiationError()};wa.prototype.setPropertyBySemantic=function(e,t){me.throwInstantiationError()};wa.hasProperty=function(e,t,n){if(l(t[e]))return!0;let i=n.properties;if(!l(i))return!1;let o=i[e];return!!(l(o)&&l(o.default))};wa.hasPropertyBySemantic=function(e,t,n){let i=n.propertiesBySemantic;if(!l(i))return!1;let o=i[e];return l(o)};wa.getPropertyIds=function(e,t,n){n=l(n)?n:[],n.length=0;for(let o in e)e.hasOwnProperty(o)&&l(e[o])&&n.push(o);let i=t.properties;if(l(i))for(let o in i)i.hasOwnProperty(o)&&!l(e[o])&&l(i[o].default)&&n.push(o);return n};wa.getProperty=function(e,t,n){let i=n.properties[e],o=t[e];Array.isArray(o)&&(o=o.slice());let r=!0;if(o=i.handleNoData(o),!l(o)&&l(i.default))return o=ze(i.default,!0),i.unpackVectorAndMatrixTypes(o,r);if(l(o))return o=i.normalize(o),o=i.applyValueTransform(o),i.unpackVectorAndMatrixTypes(o,r)};wa.setProperty=function(e,t,n,i){if(!l(n[e]))return!1;Array.isArray(t)&&(t=t.slice());let o,r=i.properties;return l(r)&&(o=r[e]),l(o)&&(t=o.packVectorAndMatrixTypes(t,!0),t=o.unapplyValueTransform(t),t=o.unnormalize(t)),n[e]=t,!0};wa.getPropertyBySemantic=function(e,t,n){let i=n.propertiesBySemantic;if(!l(i))return;let o=i[e];if(l(o))return wa.getProperty(o.id,t,n)};wa.setPropertyBySemantic=function(e,t,n,i){let o=i.propertiesBySemantic;if(!l(o))return!1;let r=i.propertiesBySemantic[e];return l(r)?wa.setProperty(r.id,t,n,i):!1};var Yn=wa;function ZA(e){e=e??V.EMPTY_OBJECT;let t=e.subtreeMetadata,n=e.class,i=l(t.properties)?t.properties:{};this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(ZA.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});ZA.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};ZA.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};ZA.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};ZA.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};ZA.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};ZA.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};ZA.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var xO=ZA;var Gt={INT8:"INT8",UINT8:"UINT8",INT16:"INT16",UINT16:"UINT16",INT32:"INT32",UINT32:"UINT32",INT64:"INT64",UINT64:"UINT64",FLOAT32:"FLOAT32",FLOAT64:"FLOAT64"};Gt.getMinimum=function(e){switch(e){case Gt.INT8:return-128;case Gt.UINT8:return 0;case Gt.INT16:return-32768;case Gt.UINT16:return 0;case Gt.INT32:return-2147483648;case Gt.UINT32:return 0;case Gt.INT64:return jt.supportsBigInt()?BigInt("-9223372036854775808"):-Math.pow(2,63);case Gt.UINT64:return jt.supportsBigInt()?BigInt(0):0;case Gt.FLOAT32:return-34028234663852886e22;case Gt.FLOAT64:return-Number.MAX_VALUE}};Gt.getMaximum=function(e){switch(e){case Gt.INT8:return 127;case Gt.UINT8:return 255;case Gt.INT16:return 32767;case Gt.UINT16:return 65535;case Gt.INT32:return 2147483647;case Gt.UINT32:return 4294967295;case Gt.INT64:return jt.supportsBigInt()?BigInt("9223372036854775807"):Math.pow(2,63)-1;case Gt.UINT64:return jt.supportsBigInt()?BigInt("18446744073709551615"):Math.pow(2,64)-1;case Gt.FLOAT32:return 34028234663852886e22;case Gt.FLOAT64:return Number.MAX_VALUE}};Gt.isIntegerType=function(e){switch(e){case Gt.INT8:case Gt.UINT8:case Gt.INT16:case Gt.UINT16:case Gt.INT32:case Gt.UINT32:case Gt.INT64:case Gt.UINT64:return!0;default:return!1}};Gt.isUnsignedIntegerType=function(e){switch(e){case Gt.UINT8:case Gt.UINT16:case Gt.UINT32:case Gt.UINT64:return!0;default:return!1}};Gt.isVectorCompatible=function(e){switch(e){case Gt.INT8:case Gt.UINT8:case Gt.INT16:case Gt.UINT16:case Gt.INT32:case Gt.UINT32:case Gt.FLOAT32:case Gt.FLOAT64:return!0;default:return!1}};Gt.normalize=function(e,t){return Math.max(Number(e)/Number(Gt.getMaximum(t)),-1)};Gt.unnormalize=function(e,t){let n=Gt.getMaximum(t),i=Gt.isUnsignedIntegerType(t)?0:-n;return e=D.sign(e)*Math.round(Math.abs(e)*Number(n)),(t===Gt.INT64||t===Gt.UINT64)&&jt.supportsBigInt()&&(e=BigInt(e)),e>n?n:e<i?i:e};Gt.applyValueTransform=function(e,t,n){return n*e+t};Gt.unapplyValueTransform=function(e,t,n){return n===0?0:(e-t)/n};Gt.getSizeInBytes=function(e){switch(e){case Gt.INT8:case Gt.UINT8:return 1;case Gt.INT16:case Gt.UINT16:return 2;case Gt.INT32:case Gt.UINT32:return 4;case Gt.INT64:case Gt.UINT64:return 8;case Gt.FLOAT32:return 4;case Gt.FLOAT64:return 8}};Gt.fromComponentDatatype=function(e){switch(e){case q.BYTE:return Gt.INT8;case q.UNSIGNED_BYTE:return Gt.UINT8;case q.SHORT:return Gt.INT16;case q.UNSIGNED_SHORT:return Gt.UINT16;case q.INT:return Gt.INT32;case q.UNSIGNED_INT:return Gt.UINT32;case q.FLOAT:return Gt.FLOAT32;case q.DOUBLE:return Gt.FLOAT64}};Gt.toComponentDatatype=function(e){switch(e){case Gt.INT8:return q.BYTE;case Gt.UINT8:return q.UNSIGNED_BYTE;case Gt.INT16:return q.SHORT;case Gt.UINT16:return q.UNSIGNED_SHORT;case Gt.INT32:return q.INT;case Gt.UINT32:return q.UNSIGNED_INT;case Gt.FLOAT32:return q.FLOAT;case Gt.FLOAT64:return q.DOUBLE}};var zt=Object.freeze(Gt);var Jo={SCALAR:"SCALAR",VEC2:"VEC2",VEC3:"VEC3",VEC4:"VEC4",MAT2:"MAT2",MAT3:"MAT3",MAT4:"MAT4",BOOLEAN:"BOOLEAN",STRING:"STRING",ENUM:"ENUM"};Jo.isVectorType=function(e){switch(e){case Jo.VEC2:case Jo.VEC3:case Jo.VEC4:return!0;default:return!1}};Jo.isMatrixType=function(e){switch(e){case Jo.MAT2:case Jo.MAT3:case Jo.MAT4:return!0;default:return!1}};Jo.getComponentCount=function(e){switch(e){case Jo.SCALAR:case Jo.STRING:case Jo.ENUM:case Jo.BOOLEAN:return 1;case Jo.VEC2:return 2;case Jo.VEC3:return 3;case Jo.VEC4:return 4;case Jo.MAT2:return 4;case Jo.MAT3:return 9;case Jo.MAT4:return 16}};Jo.getMathType=function(e){switch(e){case Jo.VEC2:return k;case Jo.VEC3:return d;case Jo.VEC4:return se;case Jo.MAT2:return Wi;case Jo.MAT3:return J;case Jo.MAT4:return R;default:return}};var gt=Object.freeze(Jo);function $a(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.type,i=e.componentType,o=e.enumType,r=l(i)&&zt.isIntegerType(i)&&(e.normalized??!1);this._id=t,this._name=e.name,this._description=e.description,this._semantic=e.semantic,this._isLegacyExtension=e.isLegacyExtension,this._type=n,this._componentType=i,this._enumType=o,this._valueType=l(o)?o.valueType:i,this._isArray=e.isArray??!1,this._isVariableLengthArray=e.isVariableLengthArray??!1,this._arrayLength=e.arrayLength,this._min=ze(e.min,!0),this._max=ze(e.max,!0),this._normalized=r;let s=ze(e.offset,!0),a=ze(e.scale,!0),c=l(s)||l(a),u=!0;l(s)||(s=this.expandConstant(0,u)),l(a)||(a=this.expandConstant(1,u)),this._offset=s,this._scale=a,this._hasValueTransform=c,this._noData=ze(e.noData,!0),this._default=ze(e.default,!0),this._required=e.required??!0,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}$a.fromJson=function(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.property,i=aQe(n),o=cQe(n,e.enums),r;return l(i)?i?r=l(n.optional)?!n.optional:!0:r=n.required??!1:r=!1,new $a({id:t,type:o.type,componentType:o.componentType,enumType:o.enumType,isArray:o.isArray,isVariableLengthArray:o.isVariableLengthArray,arrayLength:o.arrayLength,normalized:n.normalized,min:n.min,max:n.max,offset:n.offset,scale:n.scale,noData:n.noData,default:n.default,required:r,name:n.name,description:n.description,semantic:n.semantic,extras:n.extras,extensions:n.extensions,isLegacyExtension:i})};Object.defineProperties($a.prototype,{id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},type:{get:function(){return this._type}},enumType:{get:function(){return this._enumType}},componentType:{get:function(){return this._componentType}},valueType:{get:function(){return this._valueType}},isArray:{get:function(){return this._isArray}},isVariableLengthArray:{get:function(){return this._isVariableLengthArray}},arrayLength:{get:function(){return this._arrayLength}},normalized:{get:function(){return this._normalized}},max:{get:function(){return this._max}},min:{get:function(){return this._min}},noData:{get:function(){return this._noData}},default:{get:function(){return this._default}},required:{get:function(){return this._required}},semantic:{get:function(){return this._semantic}},hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});function aQe(e){if(e.type==="ARRAY")return!0;let t=e.type;if(t===gt.SCALAR||gt.isMatrixType(t)||gt.isVectorType(t))return!1;if(l(zt[t]))return!0;if(l(e.noData)||l(e.scale)||l(e.offset)||l(e.required)||l(e.count)||l(e.array)||l(e.optional))return!1}function cQe(e,t){let n=e.type,i=e.componentType,o=n==="ARRAY",r,s,a;o?(r=!0,s=e.componentCount,a=!l(s)):e.array?(r=!0,s=e.count,a=!l(e.count)):(r=!1,s=void 0,a=!1);let c;if(l(e.enumType)&&(c=t[e.enumType]),n===gt.ENUM)return{type:n,componentType:void 0,enumType:c,valueType:c.valueType,isArray:r,isVariableLengthArray:a,arrayLength:s};if(o&&i===gt.ENUM)return{type:i,componentType:void 0,enumType:c,valueType:c.valueType,isArray:r,isVariableLengthArray:a,arrayLength:s};if(n===gt.SCALAR||gt.isMatrixType(n)||gt.isVectorType(n))return{type:n,componentType:i,enumType:void 0,valueType:i,isArray:r,isVariableLengthArray:a,arrayLength:s};if(n===gt.BOOLEAN||n===gt.STRING)return{type:n,componentType:void 0,enumType:void 0,valueType:void 0,isArray:r,isVariableLengthArray:a,arrayLength:s};if(o&&(i===gt.BOOLEAN||i===gt.STRING))return{type:i,componentType:void 0,enumType:void 0,valueType:void 0,isArray:r,isVariableLengthArray:a,arrayLength:s};if(l(i)&&l(zt[i]))return{type:gt.SCALAR,componentType:i,enumType:void 0,valueType:i,isArray:r,isVariableLengthArray:a,arrayLength:s};if(l(zt[n]))return{type:gt.SCALAR,componentType:n,enumType:void 0,valueType:n,isArray:r,isVariableLengthArray:a,arrayLength:s}}$a.prototype.normalize=function(e){return this._normalized?iW(e,this._valueType,zt.normalize):e};$a.prototype.unnormalize=function(e){return this._normalized?iW(e,this._valueType,zt.unnormalize):e};$a.prototype.applyValueTransform=function(e){return!this._hasValueTransform||this._isVariableLengthArray?e:$a.valueTransformInPlace(e,this._offset,this._scale,zt.applyValueTransform)};$a.prototype.unapplyValueTransform=function(e){return!this._hasValueTransform||this._isVariableLengthArray?e:$a.valueTransformInPlace(e,this._offset,this._scale,zt.unapplyValueTransform)};$a.prototype.expandConstant=function(e,t){t=t??!1;let n=this._isArray,i=this._arrayLength,o=gt.getComponentCount(this._type),r=n&&o>1;if(!n&&o===1)return e;if(!n)return new Array(o).fill(e);if(!r)return new Array(i).fill(e);if(!t)return new Array(this._arrayLength*o).fill(e);let s=new Array(o).fill(e);return new Array(this._arrayLength).fill(s)};$a.prototype.handleNoData=function(e){let t=this._noData;if(!l(t))return e;if(!tre(e,t))return e};function tre(e,t){if(!Array.isArray(e))return e===t;if(!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!tre(e[n],t[n]))return!1;return!0}$a.prototype.unpackVectorAndMatrixTypes=function(e,t){t=t??!1;let n=gt.getMathType(this._type),i=this._isArray,o=gt.getComponentCount(this._type),r=i&&o>1;return l(n)?t&&r?e.map(function(s){return n.unpack(s)}):i?n.unpackArray(e):n.unpack(e):e};$a.prototype.packVectorAndMatrixTypes=function(e,t){t=t??!1;let n=gt.getMathType(this._type),i=this._isArray,o=gt.getComponentCount(this._type),r=i&&o>1;return l(n)?t&&r?e.map(function(s){return n.pack(s,[])}):i?n.packArray(e,[]):n.pack(e,[]):e};$a.prototype.validate=function(e){if(!(!l(e)&&l(this._default)))return this._required&&!l(e)?"required property must have a value":this._isArray?lQe(this,e):nre(this,e)};function lQe(e,t){if(!Array.isArray(t))return`value ${t} must be an array`;let n=t.length;if(!e._isVariableLengthArray&&n!==e._arrayLength)return"Array length does not match property.arrayLength";for(let i=0;i<n;i++){let o=nre(e,t[i]);if(l(o))return o}}function nre(e,t){let n=e._type,i=e._componentType,o=e._enumType,r=e._normalized;return gt.isVectorType(n)?uQe(t,n,i):gt.isMatrixType(n)?fQe(t,n,i):n===gt.STRING?dQe(t):n===gt.BOOLEAN?hQe(t):n===gt.ENUM?mQe(t,o):AQe(t,i,r)}function uQe(e,t,n){if(!zt.isVectorCompatible(n))return`componentType ${n} is incompatible with vector type ${t}`;if(t===gt.VEC2&&!(e instanceof k))return`vector value ${e} must be a Cartesian2`;if(t===gt.VEC3&&!(e instanceof d))return`vector value ${e} must be a Cartesian3`;if(t===gt.VEC4&&!(e instanceof se))return`vector value ${e} must be a Cartesian4`}function fQe(e,t,n){if(!zt.isVectorCompatible(n))return`componentType ${n} is incompatible with matrix type ${t}`;if(t===gt.MAT2&&!(e instanceof Wi))return`matrix value ${e} must be a Matrix2`;if(t===gt.MAT3&&!(e instanceof J))return`matrix value ${e} must be a Matrix3`;if(t===gt.MAT4&&!(e instanceof R))return`matrix value ${e} must be a Matrix4`}function dQe(e){if(typeof e!="string")return bO(e,gt.STRING)}function hQe(e){if(typeof e!="boolean")return bO(e,gt.BOOLEAN)}function mQe(e,t){let n=typeof e;if(l(t))return n!=="string"||!l(t.valuesByName[e])?`value ${e} is not a valid enum name for ${t.id}`:void 0}function AQe(e,t,n){let i=typeof e;switch(t){case zt.INT8:case zt.UINT8:case zt.INT16:case zt.UINT16:case zt.INT32:case zt.UINT32:case zt.FLOAT32:case zt.FLOAT64:return i!=="number"?bO(e,t):isFinite(e)?$oe(e,t,n):ere(e,t);case zt.INT64:case zt.UINT64:return i!=="number"&&i!=="bigint"?bO(e,t):i==="number"&&!isFinite(e)?ere(e,t):$oe(e,t,n)}}function bO(e,t){return`value ${e} does not match type ${t}`}function Zoe(e,t,n){let i=`value ${e} is out of range for type ${t}`;return n&&(i+=" (normalized)"),i}function $oe(e,t,n){if(n){let i=zt.isUnsignedIntegerType(t)?0:-1;return e<i||e>1?Zoe(e,t,n):void 0}if(e<zt.getMinimum(t)||e>zt.getMaximum(t))return Zoe(e,t,n)}function ere(e,t){return`value ${e} of type ${t} must be finite`}function iW(e,t,n){if(!Array.isArray(e))return n(e,t);for(let i=0;i<e.length;i++)e[i]=iW(e[i],t,n);return e}$a.valueTransformInPlace=function(e,t,n,i){if(!Array.isArray(e))return i(e,t,n);for(let o=0;o<e.length;o++)e[o]=$a.valueTransformInPlace(e[o],t[o],n[o],i);return e};var $A=$a;function qw(e){e=e??V.EMPTY_OBJECT;let t=e.count,n=e.property,i=e.classProperty,o=e.bufferViews,r=i.type,s=i.isArray,a=i.isVariableLengthArray,c=i.valueType,u=i.enumType,f=r===gt.STRING,h=r===gt.BOOLEAN,A=0,g;if(a){let p=n.arrayOffsetType??n.offsetType;p=zt[p]??zt.UINT32;let x=n.arrayOffsets??n.arrayOffsetBufferView;g=new oW(o[x],p,t+1),A+=g.typedArray.byteLength}let m=gt.getComponentCount(r),_;a?_=g.get(t)-g.get(0):s?_=t*i.arrayLength:_=t;let y=m*_,C;if(f){let p=n.stringOffsetType??n.offsetType;p=zt[p]??zt.UINT32;let x=n.stringOffsets??n.stringOffsetBufferView;C=new oW(o[x],p,y+1),A+=C.typedArray.byteLength}(f||h)&&(c=zt.UINT8);let E;f?E=C.get(y)-C.get(0):h?E=Math.ceil(y/8):E=y;let I=n.values??n.bufferView,b=new oW(o[I],c,E);A+=b.typedArray.byteLength;let S=n.offset,B=n.scale,v=i.hasValueTransform||l(S)||l(B);S=S??i.offset,B=B??i.scale,S=ire(S),B=ire(B);let P,N,L=this;f?P=function(p){return _Qe(p,L._values,L._stringOffsets)}:h?(P=function(p){return yQe(p,L._values)},N=function(p,x){CQe(p,L._values,x)}):l(u)?(P=function(p){let x=L._values.get(p);return u.namesByValue[x]},N=function(p,x){let T=u.valuesByName[x];L._values.set(p,T)}):(P=function(p){return L._values.get(p)},N=function(p,x){L._values.set(p,x)}),this._arrayOffsets=g,this._stringOffsets=C,this._values=b,this._classProperty=i,this._count=t,this._vectorComponentCount=m,this._min=n.min,this._max=n.max,this._offset=S,this._scale=B,this._hasValueTransform=v,this._getValue=P,this._setValue=N,this._unpackedValues=void 0,this._extras=n.extras,this._extensions=n.extensions,this._byteLength=A}Object.defineProperties(qw.prototype,{hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}},byteLength:{get:function(){return this._byteLength}}});qw.prototype.get=function(e){let t=pQe(this,e);return t=this._classProperty.handleNoData(t),l(t)?(t=this._classProperty.normalize(t),t=BQe(this,t),this._classProperty.unpackVectorAndMatrixTypes(t)):(t=this._classProperty.default,this._classProperty.unpackVectorAndMatrixTypes(t))};qw.prototype.set=function(e,t){let n=this._classProperty;t=n.packVectorAndMatrixTypes(t),t=DQe(this,t),t=n.unnormalize(t),gQe(this,e,t)};qw.prototype.getTypedArray=function(){if(l(this._values))return this._values.typedArray};function ire(e){if(!Array.isArray(e))return e;let t=[];for(let n=0;n<e.length;n++){let i=e[n];Array.isArray(i)?si(t,i):t.push(i)}return t}function pQe(e,t){rre(e)&&sre(e);let n=e._classProperty,i=n.isArray,o=n.type,r=gt.getComponentCount(o);if(l(e._unpackedValues)){let s=e._unpackedValues[t];return i?ze(s,!0):s}return!i&&r===1?e._getValue(t):ore(e,n,t)}function ore(e,t,n){let i,o;if(t.isVariableLengthArray){i=e._arrayOffsets.get(n),o=e._arrayOffsets.get(n+1)-i;let s=gt.getComponentCount(t.type);i*=s,o*=s}else{let a=(t.arrayLength??1)*e._vectorComponentCount;i=n*a,o=a}let r=new Array(o);for(let s=0;s<o;s++)r[s]=e._getValue(i+s);return r}function gQe(e,t,n){SQe(e,t,n)&&sre(e);let i=e._classProperty,o=i.isArray,r=i.type,s=gt.getComponentCount(r);if(l(e._unpackedValues)){i.isArray&&(n=ze(n,!0)),e._unpackedValues[t]=n;return}if(!o&&s===1){e._setValue(t,n);return}let a,c;if(i.isVariableLengthArray)a=e._arrayOffsets.get(t),c=e._arrayOffsets.get(t+1)-a;else{let f=(i.arrayLength??1)*e._vectorComponentCount;a=t*f,c=f}for(let u=0;u<c;++u)e._setValue(a+u,n[u])}function _Qe(e,t,n){let i=n.get(e),o=n.get(e+1)-i;return Tu(t.typedArray,i,o)}function yQe(e,t){let n=e>>3,i=e%8;return(t.typedArray[n]>>i&1)===1}function CQe(e,t,n){let i=e>>3,o=e%8;n?t.typedArray[i]|=1<<o:t.typedArray[i]&=~(1<<o)}function EQe(e,t){let n=t.dataView,i=e*8,o=0,r=(n.getUint8(i+7)&128)>0,s=!0;for(let a=0;a<8;++a){let c=n.getUint8(i+a);r&&(s?c!==0&&(c=~(c-1)&255,s=!1):c=~c&255),o+=c*Math.pow(256,a)}return r&&(o=-o),o}function IQe(e,t){let n=t.dataView,i=e*8,o=BigInt(0),r=(n.getUint8(i+7)&128)>0,s=!0;for(let a=0;a<8;++a){let c=n.getUint8(i+a);r&&(s?c!==0&&(c=~(c-1)&255,s=!1):c=~c&255),o+=BigInt(c)*(BigInt(1)<<BigInt(a*8))}return r&&(o=-o),o}function xQe(e,t){let n=t.dataView,i=e*8,o=n.getUint32(i,!0),r=n.getUint32(i+4,!0);return o+4294967296*r}function bQe(e,t){let n=t.dataView,i=e*8,o=BigInt(n.getUint32(i,!0)),r=BigInt(n.getUint32(i+4,!0));return o+BigInt(4294967296)*r}function TQe(e){switch(e){case zt.INT8:return q.BYTE;case zt.UINT8:return q.UNSIGNED_BYTE;case zt.INT16:return q.SHORT;case zt.UINT16:return q.UNSIGNED_SHORT;case zt.INT32:return q.INT;case zt.UINT32:return q.UNSIGNED_INT;case zt.FLOAT32:return q.FLOAT;case zt.FLOAT64:return q.DOUBLE}}function rre(e){if(l(e._unpackedValues))return!1;let t=e._classProperty,n=t.type,i=t.valueType;return n===gt.STRING||i===zt.INT64&&!jt.supportsBigInt64Array()||i===zt.UINT64&&!jt.supportsBigUint64Array()}function SQe(e,t,n){if(rre(e))return!0;let i=e._arrayOffsets;if(l(i)){let o=i.get(t+1)-i.get(t),r=n.length;if(o!==r)return!0}return!1}function sre(e){e._unpackedValues=wQe(e),e._arrayOffsets=void 0,e._stringOffsets=void 0,e._values=void 0}function wQe(e){let t=e._count,n=new Array(t),i=e._classProperty,o=i.isArray,r=i.type,s=gt.getComponentCount(r);if(!o&&s===1){for(let a=0;a<t;++a)n[a]=e._getValue(a);return n}for(let a=0;a<t;a++)n[a]=ore(e,i,a);return n}function BQe(e,t){let i=e._classProperty.isVariableLengthArray;return!e._hasValueTransform||i?t:$A.valueTransformInPlace(t,e._offset,e._scale,zt.applyValueTransform)}function DQe(e,t){let i=e._classProperty.isVariableLengthArray;return!e._hasValueTransform||i?t:$A.valueTransformInPlace(t,e._offset,e._scale,zt.unapplyValueTransform)}function oW(e,t,n){let i=this,o,r,s;if(t===zt.INT64)jt.supportsBigInt()?jt.supportsBigInt64Array()?(o=new BigInt64Array(e.buffer,e.byteOffset,n),s=function(a,c){i.typedArray[a]=BigInt(c)}):(o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return IQe(a,i)}):(yt("INT64 type is not fully supported on this platform. Values greater than 2^53 - 1 or less than -(2^53 - 1) may lose precision when read."),o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return EQe(a,i)});else if(t===zt.UINT64)jt.supportsBigInt()?jt.supportsBigUint64Array()?(o=new BigUint64Array(e.buffer,e.byteOffset,n),s=function(a,c){i.typedArray[a]=BigInt(c)}):(o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return bQe(a,i)}):(yt("UINT64 type is not fully supported on this platform. Values greater than 2^53 - 1 may lose precision when read."),o=new Uint8Array(e.buffer,e.byteOffset,n*8),r=function(a){return xQe(a,i)});else{let a=TQe(t);o=q.createArrayBufferView(a,e.buffer,e.byteOffset,n),s=function(c,u){i.typedArray[c]=u}}l(r)||(r=function(a){return i.typedArray[a]}),this.typedArray=o,this.dataView=new DataView(o.buffer,o.byteOffset),this.get=r,this.set=s,this._componentType=t}var TO=qw;function Wd(e){e=e??V.EMPTY_OBJECT;let t=e.count,n=e.class,i=0,o={};if(l(e.properties)){for(let r in e.properties)if(e.properties.hasOwnProperty(r)){let s=new TO({count:t,property:e.properties[r],classProperty:n.properties[r],bufferViews:e.bufferViews});o[r]=s,i+=s.byteLength}}this._count=t,this._class=n,this._properties=o,this._byteLength=i}Object.defineProperties(Wd.prototype,{count:{get:function(){return this._count}},class:{get:function(){return this._class}},byteLength:{get:function(){return this._byteLength}}});Wd.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};Wd.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};Wd.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};Wd.prototype.getProperty=function(e,t){let n=this._properties[t],i;return l(n)?i=n.get(e):i=vQe(this._class,t),i};Wd.prototype.setProperty=function(e,t,n){let i=this._properties[t];return l(i)?(i.set(e,n),!0):!1};Wd.prototype.getPropertyBySemantic=function(e,t){let n,i=this._class.propertiesBySemantic;if(l(i)&&(n=i[t]),l(n))return this.getProperty(e,n.id)};Wd.prototype.setPropertyBySemantic=function(e,t,n){let i,o=this._class.propertiesBySemantic;return l(o)&&(i=o[t]),l(i)?this.setProperty(e,i.id,n):!1};Wd.prototype.getPropertyTypedArray=function(e){let t=this._properties[e];if(l(t))return t.getTypedArray()};Wd.prototype.getPropertyTypedArrayBySemantic=function(e){let t,n=this._class.propertiesBySemantic;if(l(n)&&(t=n[e]),l(t))return this.getPropertyTypedArray(t.id)};function vQe(e,t){let n=e.properties;if(!l(n))return;let i=n[t];if(l(i)&&l(i.default)){let o=i.default;return i.isArray&&(o=ze(o,!0)),o=i.normalize(o),i.unpackVectorAndMatrixTypes(o)}}var jd=Wd;function Wg(){}Object.defineProperties(Wg.prototype,{cacheKey:{get:function(){me.throwInstantiationError()}}});Wg.prototype.load=function(){me.throwInstantiationError()};Wg.prototype.unload=function(){};Wg.prototype.process=function(e){return!1};Wg.prototype.getError=function(e,t){l(t)&&l(t.message)&&(e+=` +${t.message}`);let n=new ce(e);return l(t)&&(n.stack=`Original stack: +${t.stack} +Handler stack: +${n.stack}`),n};Wg.prototype.isDestroyed=function(){return!1};Wg.prototype.destroy=function(){return this.unload(),ue(this)};var qi=Wg;var PQe={UNLOADED:0,LOADING:1,LOADED:2,PROCESSING:3,READY:4,FAILED:5},dt=Object.freeze(PQe);function ep(e){e=e??V.EMPTY_OBJECT;let t=e.typedArray,n=e.resource,i=e.cacheKey;this._typedArray=t,this._resource=n,this._cacheKey=i,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(ep.prototype=Object.create(qi.prototype),ep.prototype.constructor=ep);Object.defineProperties(ep.prototype,{cacheKey:{get:function(){return this._cacheKey}},typedArray:{get:function(){return this._typedArray}}});ep.prototype.load=async function(){return l(this._promise)?this._promise:l(this._typedArray)?(this._promise=Promise.resolve(this),this._promise):(this._promise=RQe(this),this._promise)};async function RQe(e){let t=e._resource;e._state=dt.LOADING;try{let n=await ep._fetchArrayBuffer(t);return e.isDestroyed()?void 0:(e._typedArray=new Uint8Array(n),e._state=dt.READY,e)}catch(n){if(e.isDestroyed())return;e._state=dt.FAILED;let i=`Failed to load external buffer: ${t.url}`;throw e.getError(i,n)}}ep._fetchArrayBuffer=function(e){return e.fetchArrayBuffer()};ep.prototype.unload=function(){this._typedArray=void 0};var jI=ep;var Qen=function(){var e="b9H79Tebbbe9ok9Geueu9Geub9Gbb9Gruuuuuuueu9Gvuuuuueu9Gduueu9Gluuuueu9Gvuuuuub9Gouuuuuub9Gluuuub9Giuuueui8AYdilveoveovrrwrrDDoDrbqqbelve9Weiiviebeoweuec;G:Qdkr:nlAo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9mW4W2be8A9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWVbd8F9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949c919M9MWV9c9V919U9KbiE9TW79O9V9Wt9FW9U9J9V9KW9wWVtW949wWV79P9V9UblY9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWVbv8E9TW79O9V9Wt9FW9U9J9V9KW69U9KW949c919M9MWV9c9V919U9Kbo8A9TW79O9V9Wt9FW9U9J9V9KW69U9KW949wWV79P9V9UbrE9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JWbwa9TW79O9V9Wt9FW9U9J9V9KW69U9KW949tWG91W9U9JW9c9V919U9KbDL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9p9JtbqK9TW79O9V9Wt9FW9U9J9V9KWS9P2tWV9r919HtbkL9TW79O9V9Wt9FW9U9J9V9KWS9P2tWVT949WbxE9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OWbsa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94J9H9J9OW9ttV9P9Wbza9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9WbHK9TW79O9V9Wt9F79W9Ht9P9H29t9VVt9sW9T9H9WbOl79IV9RbCDwebcekdKLqN9OYdbk:Bhdhud9:8Jjjjjbc;qw9Rgr8KjjjjbcbhwdnaeTmbabcbyd;C:kjjbaoaocb9iEgDc:GeV86bbarc;adfcbcjdz:wjjjb8AdnaiTmbarc;adfadalz:vjjjb8Akarc;abfalfcbcbcjdal9RalcFe0Ez:wjjjb8Aarc;abfarc;adfalz:vjjjb8AarcUf9cb83ibarc8Wf9cb83ibarcyf9cb83ibarcaf9cb83ibarcKf9cb83ibarczf9cb83ibar9cb83iwar9cb83ibcj;abal9Uc;WFbGcjdalca0Ehqdnaicd6mbavcd9imbaDTmbadcefhkaqci2gxal2hmarc;alfclfhParc;qlfceVhsarc;qofclVhzarc;qofcKfhHarc;qofczfhOcbhAincdhCcbhodnavci6mbaH9cb83ibaO9cb83ibar9cb83i;yoar9cb83i;qoadaAfgoybbhXcbhQincbhwcbhLdninaoalfhKaoybbgYaX7aLVhLawcP0meaKhoaYhXawcefgwaQfai6mbkkcbhXarc;qofhwincwh8AcwhEdnaLaX93gocFeGg3cs0mbclhEa3ci0mba3cb9hcethEkdnaocw4cFeGg3cs0mbclh8Aa3ci0mba3cb9hceth8Aka8AaEfh3awydbh5cwh8AcwhEdnaocz4cFeGg8Ecs0mbclhEa8Eci0mba8Ecb9hcethEka3a5fh3dnaocFFFFb0mbclh8AaocFFF8F0mbaocFFFr0ceth8Akawa3aEfa8AfBdbawclfhwaXcefgXcw9hmbkaKhoaYhXaQczfgQai6mbkcbhocehwazhLinawaoaLydbarc;qofaocdtfydb6EhoaLclfhLawcefgwcw9hmbkcihCkcbh3arc;qlfcbcjdz:wjjjb8Aarc;alfcwfcbBdbar9cb83i;alaoclth8Fadhaaqhhakh5inarc;qlfadcba3cufgoaoa30Eal2falz:vjjjb8Aaiahaiah6Ehgdnaqaia39Ra3aqfai6EgYcsfc9WGgoaY9nmbarc;qofaYfcbaoaY9Rz:wjjjb8Akada3al2fh8Jcbh8Kina8Ka8FVcl4hQarc;alfa8Kcdtfh8LaAh8Mcbh8Nina8NaAfhwdndndndndndna8KPldebidkasa8Mc98GgLfhoa5aLfh8Aarc;qlfawc98GgLfRbbhXcwhwinaoRbbawtaXVhXaocefhoawcwfgwca9hmbkaYTmla8Ncith8Ea8JaLfhEcbhKinaERbbhLcwhoa8AhwinawRbbaotaLVhLawcefhwaocwfgoca9hmbkarc;qofaKfaLaX7aQ93a8E486bba8Aalfh8AaEalfhEaLhXaKcefgKaY9hmbxlkkaYTmia8Mc9:Ghoa8NcitcwGhEarc;qlfawceVfRbbcwtarc;qlfawc9:GfRbbVhLarc;qofhwaghXinawa5aofRbbcwtaaaofRbbVg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbaoalfhoawcefhwa8AhLa3aXcufgX9hmbxikkaYTmda8Jawfhoarc;qlfawfRbbhLarc;qofhwaghXinawaoRbbg8AaL9RgLcetaLcKtcK91cr4786bbawcefhwaoalfhoa8AhLa3aXcufgX9hmbxdkkaYTmeka8LydbhEcbhKarc;qofhoincdhLcbhwinaLaoawfRbbcb9hfhLawcefgwcz9hmbkclhXcbhwinaXaoawfRbbcd0fhXawcefgwcz9hmbkcwh8Acbhwina8AaoawfRbbcP0fh8Aawcefgwcz9hmbkaLaXaLaX6Egwa8Aawa8A6Egwczawcz6EaEfhEaoczfhoaKczfgKaY6mbka8LaEBdbka8Mcefh8Ma8Ncefg8Ncl9hmbka8Kcefg8KaC9hmbkaaamfhaahaxfhha5amfh5a3axfg3ai6mbkcbhocehwaPhLinawaoaLydbarc;alfaocdtfydb6EhoaLclfhLawcefgXhwaCaX9hmbkaraAcd4fa8FcdVaoaocdSE86bbaAclfgAal6mbkkabaefh8Kabcefhoalcd4gecbaDEhkadcefhOarc;abfceVhHcbhmdndninaiam9nmearc;qofcbcjdz:wjjjb8Aa8Kao9Rak6mdadamal2gwfhxcbh8JaOawfhzaocbakz:wjjjbghakfh5aqaiam9Ramaqfai6Egscsfgocl4cifcd4hCaoc9WGg8LThPindndndndndndndndndndnaDTmbara8Jcd4fRbbgLciGPlbedlbkasTmdaxa8Jfhoarc;abfa8JfRbbhLarc;qofhwashXinawaoRbbg8AaL9RgLcetaLcKtcK91cr4786bbawcefhwaoalfhoa8AhLaXcufgXmbxikkasTmia8JcitcwGhEarc;abfa8JceVfRbbcwtarc;abfa8Jc9:GgofRbbVhLaxaofhoarc;qofhwashXinawao8Vbbg8AaL9RgLcetaLcztcz91cs47cFFiGaE486bbawcefhwaoalfhoa8AhLaXcufgXmbxdkkaHa8Jc98GgEfhoazaEfh8Aarc;abfaEfRbbhXcwhwinaoRbbawtaXVhXaocefhoawcwfgwca9hmbkasTmbaLcl4hYa8JcitcKGh3axaEfhEcbhKinaERbbhLcwhoa8AhwinawRbbaotaLVhLawcefhwaocwfgoca9hmbkarc;qofaKfaLaX7aY93a3486bba8Aalfh8AaEalfhEaLhXaKcefgKas9hmbkkaDmbcbhoxlka8LTmbcbhodninarc;qofaofgwcwf8Pibaw8Pib:e9qTmeaoczfgoa8L9pmdxbkkdnavmbcehoxikcbhEaChKaChYinarc;qofaEfgocwf8Pibhyao8Pibh8PcdhLcbhwinaLaoawfRbbcb9hfhLawcefgwcz9hmbkclhXcbhwinaXaoawfRbbcd0fhXawcefgwcz9hmbkcwh8Acbhwina8AaoawfRbbcP0fh8Aawcefgwcz9hmbkaLaXaLaX6Egoa8Aaoa8A6Egoczaocz6EaYfhYaocucbaya8P:e9cb9sEgwaoaw6EaKfhKaEczfgEa8L9pmdxbkkaha8Jcd4fgoaoRbbcda8JcetcoGtV86bbxikdnaKas6mbaYas6mbaha8Jcd4fgoaoRbbcia8JcetcoGtV86bba8Ka59Ras6mra5arc;qofasz:vjjjbasfh5xikaKaY9phokaha8Jcd4fgwawRbbaoa8JcetcoGtV86bbka8Ka59RaC6mla5cbaCz:wjjjbgAaCfhYdndna8LmbaPhoxekdna8KaY9RcK9pmbaPhoxekaocdtc:q1jjbfcj1jjbaDEg5ydxggcetc;:FFFeGh8Fcuh3cuagtcu7cFeGhacbh8Marc;qofhLinarc;qofa8MfhQczhEdndndnagPDbeeeeeeedekcucbaQcwf8PibaQ8Pib:e9cb9sEhExekcbhoa8FhEinaEaaaLaofRbb9nfhEaocefgocz9hmbkkcih8Ecbh8Ainczhwdndndna5a8AcdtfydbgKPDbeeeeeeedekcucbaQcwf8PibaQ8Pib:e9cb9sEhwxekaKcetc;:FFFeGhwcuaKtcu7cFeGhXcbhoinawaXaLaofRbb9nfhwaocefgocz9hmbkkdndnawaE6mbaKa39hmeawaE9hmea5a8EcdtfydbcwSmeka8Ah8EawhEka8Acefg8Aci9hmbkaAa8Mco4fgoaoRbba8Ea8Mci4coGtV86bbdndndna5a8Ecdtfydbg3PDdbbbbbbbebkdncwa39Tg8ETmbcua3tcu7hwdndna3ceSmbcbh8NaLhQinaQhoa8Eh8AcbhXinaoRbbgEawcFeGgKaEaK6EaXa3tVhXaocefhoa8Acufg8AmbkaYaX86bbaQa8EfhQaYcefhYa8Na8Efg8Ncz6mbxdkkcbh8NaLhQinaQhoa8Eh8AcbhXinaoRbbgEawcFeGgKaEaK6EaXcetVhXaocefhoa8Acufg8AmbkaYaX:T9cFe:d9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:9ca188bbaQa8EfhQaYcefhYa8Na8Efg8Ncz6mbkkcbhoinaYaLaofRbbgX86bbaYaXawcFeG9pfhYaocefgocz9hmbxikkdna3ceSmbinaYcb86bbaYcefhYxbkkinaYcb86bbaYcefhYxbkkaYaQ8Pbb83bbaYcwfaQcwf8Pbb83bbaYczfhYka8Mczfg8Ma8L9pgomeaLczfhLa8KaY9RcK9pmbkkaoTmlaYh5aYTmlka8Jcefg8Jal9hmbkarc;abfaxascufal2falz:vjjjb8Aasamfhma5hoa5mbkcbhwxdkdna8Kao9RakalfgwcKcaaDEgLawaL0EgX9pmbcbhwxdkdnawaL9pmbaocbaXaw9Rgwz:wjjjbawfhokaoarc;adfalz:vjjjbalfhodnaDTmbaoaraez:vjjjbaefhokaoab9Rhwxekcbhwkarc;qwf8Kjjjjbawk5babaeadaialcdcbyd;C:kjjbz:bjjjbk9reduaecd4gdaefgicaaica0Eabcj;abae9Uc;WFbGcjdaeca0Egifcufai9Uae2aiadfaicl4cifcd4f2fcefkmbcbabBd;C:kjjbk:Ese5u8Jjjjjbc;ae9Rgl8Kjjjjbcbhvdnaici9UgocHfae0mbabcbyd;m:kjjbgrc;GeV86bbalc;abfcFecjez:wjjjb8AalcUfgw9cu83ibalc8WfgD9cu83ibalcyfgq9cu83ibalcafgk9cu83ibalcKfgx9cu83ibalczfgm9cu83ibal9cu83iwal9cu83ibabaefc9WfhPabcefgsaofhednaiTmbcmcsarcb9kgzEhHcbhOcbhAcbhCcbhXcbhQindnaeaP9nmbcbhvxikaQcufhvadaCcdtfgLydbhKaLcwfydbhYaLclfydbh8AcbhEdndndninalc;abfavcsGcitfgoydlh3dndndnaoydbgoaK9hmba3a8ASmekdnaoa8A9hmba3aY9hmbaEcefhExekaoaY9hmea3aK9hmeaEcdfhEkaEc870mdaXcufhvaLaEciGcx2goc;i1jjbfydbcdtfydbh3aLaoc;e1jjbfydbcdtfydbh8AaLaoc;a1jjbfydbcdtfydbhKcbhodnindnalavcsGcdtfydba39hmbaohYxdkcuhYavcufhvaocefgocz9hmbkkaOa3aOSgvaYce9iaYaH9oVgoGfhOdndndncbcsavEaYaoEgvcs9hmbarce9imba3a3aAa3cefaASgvEgAcefSmecmcsavEhvkasavaEcdtc;WeGV86bbavcs9hmea3aA9Rgvcetavc8F917hvinaeavcFb0crtavcFbGV86bbaecefheavcje6hoavcr4hvaoTmbka3hAxvkcPhvasaEcdtcPV86bba3hAkavTmiavaH9omicdhocehEaQhYxlkavcufhvaEclfgEc;ab9hmbkkdnaLceaYaOSceta8AaOSEcx2gvc;a1jjbfydbcdtfydbgKTaLavc;e1jjbfydbcdtfydbg8AceSGaLavc;i1jjbfydbcdtfydbg3cdSGaOcb9hGazGg5ce9hmbaw9cu83ibaD9cu83ibaq9cu83ibak9cu83ibax9cu83ibam9cu83ibal9cu83iwal9cu83ibcbhOkcbhEaXcufgvhodnindnalaocsGcdtfydba8A9hmbaEhYxdkcuhYaocufhoaEcefgEcz9hmbkkcbhodnindnalavcsGcdtfydba39hmbaohExdkcuhEavcufhvaocefgocz9hmbkkaOaKaOSg8EfhLdndnaYcm0mbaYcefhYxekcbcsa8AaLSgvEhYaLavfhLkdndnaEcm0mbaEcefhExekcbcsa3aLSgvEhEaLavfhLkc9:cua8EEh8FcbhvaEaYcltVgacFeGhodndndninavc:W1jjbfRbbaoSmeavcefgvcz9hmbxdkka5aKaO9havcm0VVmbasavc;WeV86bbxekasa8F86bbaeaa86bbaecefhekdna8EmbaKaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombkaKhAkdnaYcs9hmba8AaA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka8AhAkdnaEcs9hmba3aA9Rgvcetavc8F917hvinaeavcFb0gocrtavcFbGV86bbavcr4hvaecefheaombka3hAkalaXcdtfaKBdbaXcefcsGhvdndnaYPzbeeeeeeeeeeeeeebekalavcdtfa8ABdbaXcdfcsGhvkdndnaEPzbeeeeeeeeeeeeeebekalavcdtfa3BdbavcefcsGhvkcihoalc;abfaQcitfgEaKBdlaEa8ABdbaQcefcsGhYcdhEavhXaLhOxekcdhoalaXcdtfa3BdbcehEaXcefcsGhXaQhYkalc;abfaYcitfgva8ABdlava3Bdbalc;abfaQaEfcsGcitfgva3BdlavaKBdbascefhsaQaofcsGhQaCcifgCai6mbkkdnaeaP9nmbcbhvxekcbhvinaeavfavc:W1jjbfRbb86bbavcefgvcz9hmbkaeab9Ravfhvkalc;aef8KjjjjbavkZeeucbhddninadcefgdc8F0meceadtae6mbkkadcrfcFeGcr9Uci2cdfabci9U2cHfkmbcbabBd;m:kjjbk:Adewu8Jjjjjbcz9Rhlcbhvdnaicvfae0mbcbhvabcbRb;m:kjjbc;qeV86bbal9cb83iwabcefhoabaefc98fhrdnaiTmbcbhwcbhDindnaoar6mbcbskadaDcdtfydbgqalcwfawaqav9Rgvavc8F91gv7av9Rc507gwcdtfgkydb9Rgvc8E91c9:Gavcdt7awVhvinaoavcFb0gecrtavcFbGV86bbavcr4hvaocefhoaembkakaqBdbaqhvaDcefgDai9hmbkkdnaoar9nmbcbskaocbBbbaoab9RclfhvkavkBeeucbhddninadcefgdc8F0meceadtae6mbkkadcwfcFeGcr9Uab2cvfk:bvli99dui99ludnaeTmbcuadcetcuftcu7:Zhvdndncuaicuftcu7:ZgoJbbbZMgr:lJbbb9p9DTmbar:Ohwxekcjjjj94hwkcbhicbhDinalclfIdbgrJbbbbJbbjZalIdbgq:lar:lMalcwfIdbgk:lMgr:varJbbbb9BEgrNhxaqarNhrdndnakJbbbb9GTmbaxhqxekJbbjZar:l:tgqaq:maxJbbbb9GEhqJbbjZax:l:tgxax:marJbbbb9GEhrkdndnalcxfIdbgxJbbj:;axJbbj:;9GEgkJbbjZakJbbjZ9FEavNJbbbZJbbb:;axJbbbb9GEMgx:lJbbb9p9DTmbax:Ohmxekcjjjj94hmkdndnaqJbbj:;aqJbbj:;9GEgxJbbjZaxJbbjZ9FEaoNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:OhPxekcjjjj94hPkdndnarJbbj:;arJbbj:;9GEgqJbbjZaqJbbjZ9FEaoNJbbbZJbbb:;arJbbbb9GEMgr:lJbbb9p9DTmbar:Ohsxekcjjjj94hskdndnadcl9hmbabaifgzas86bbazcifam86bbazcdfaw86bbazcefaP86bbxekabaDfgzas87ebazcofam87ebazclfaw87ebazcdfaP87ebkalczfhlaiclfhiaDcwfhDaecufgembkkk;hlld99eud99eudnaeTmbdndncuaicuftcu7:ZgvJbbbZMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikaic;8FiGhrinabcofcicdalclfIdb:lalIdb:l9EgialcwfIdb:lalaicdtfIdb:l9EEgialcxfIdb:lalaicdtfIdb:l9EEgiarV87ebdndnJbbj:;JbbjZalaicdtfIdbJbbbb9DEgoalaicd7cdtfIdbJ;Zl:1ZNNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabcdfaq87ebdndnalaicefciGcdtfIdbJ;Zl:1ZNaoNgwJbbj:;awJbbj:;9GEgDJbbjZaDJbbjZ9FEavNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohqxekcjjjj94hqkabaq87ebdndnaoalaicufciGcdtfIdbJ;Zl:1ZNNgoJbbj:;aoJbbj:;9GEgwJbbjZawJbbjZ9FEavNJbbbZJbbb:;aoJbbbb9GEMgo:lJbbb9p9DTmbao:Ohixekcjjjj94hikabclfai87ebabcwfhbalczfhlaecufgembkkk;3viDue99eu8Jjjjjbcjd9Rgo8Kjjjjbadcd4hrdndndndnavcd9hmbadcl6meaohwarhDinawc:CuBdbawclfhwaDcufgDmbkaeTmiadcl6mdarcdthqalhkcbhxinaohwakhDarhminawawydbgPcbaDIdbgs:8cL4cFeGc:cufasJbbbb9BEgzaPaz9kEBdbaDclfhDawclfhwamcufgmmbkakaqfhkaxcefgxaeSmixbkkaeTmdxekaeTmekarcdthkavce9hhqadcl6hdcbhxindndndnaqmbadmdc:CuhDalhwarhminaDcbawIdbgs:8cL4cFeGc:cufasJbbbb9BEgPaDaP9kEhDawclfhwamcufgmmbxdkkc:CuhDdndnavPleddbdkadmdaohwalhmarhPinawcbamIdbgs:8cL4cFeGgzc;:bazc;:b0Ec:cufasJbbbb9BEBdbamclfhmawclfhwaPcufgPmbxdkkadmecbhwarhminaoawfcbalawfIdbgs:8cL4cFeGgPc8AaPc8A0Ec:cufasJbbbb9BEBdbawclfhwamcufgmmbkkadmbcbhwarhPinaDhmdnavceSmbaoawfydbhmkdndnalawfIdbgscjjj;8iamai9RcefgmcLt9R::NJbbbZJbbb:;asJbbbb9GEMgs:lJbbb9p9DTmbas:Ohzxekcjjjj94hzkabawfazcFFFrGamcKtVBdbawclfhwaPcufgPmbkkabakfhbalakfhlaxcefgxae9hmbkkaocjdf8Kjjjjbk;YqdXui998Jjjjjbc:qd9Rgv8Kjjjjbavc:Sefcbc;Kbz:wjjjb8AcbhodnadTmbcbhoaiTmbdndnabaeSmbaehrxekavcuadcdtgwadcFFFFi0Ecbyd;u:kjjbHjjjjbbgrBd:SeavceBd:mdaraeawz:vjjjb8Akavc:GefcwfcbBdbav9cb83i:Geavc:Gefaradaiavc:Sefz:ojjjbavyd:GehDadci9Ugqcbyd;u:kjjbHjjjjbbheavc:Sefavyd:mdgkcdtfaeBdbavakcefgwBd:mdaecbaqz:wjjjbhxavc:SefawcdtfcuaicdtaicFFFFi0Ecbyd;u:kjjbHjjjjbbgmBdbavakcdfgPBd:mdalc;ebfhsaDheamhwinawalIdbasaeydbgzcwazcw6EcdtfIdbMUdbaeclfheawclfhwaicufgimbkavc:SefaPcdtfcuaqcdtadcFFFF970Ecbyd;u:kjjbHjjjjbbgPBdbdnadci6mbarheaPhwaqhiinawamaeydbcdtfIdbamaeclfydbcdtfIdbMamaecwfydbcdtfIdbMUdbaecxfheawclfhwaicufgimbkkakcifhoalc;ebfhHavc;qbfhOavheavyd:KehAavyd:OehCcbhzcbhwcbhXcehQinaehLcihkarawci2gKcdtfgeydbhsaeclfydbhdabaXcx2fgicwfaecwfydbgYBdbaiclfadBdbaiasBdbaxawfce86bbaOaYBdwaOadBdlaOasBdbaPawcdtfcbBdbdnazTmbcihkaLhiinaOakcdtfaiydbgeBdbakaeaY9haeas9haead9hGGfhkaiclfhiazcufgzmbkkaXcefhXcbhzinaCaAarazaKfcdtfydbcdtgifydbcdtfgYheaDaifgdydbgshidnasTmbdninaeydbawSmeaeclfheaicufgiTmdxbkkaeaYascdtfc98fydbBdbadadydbcufBdbkazcefgzci9hmbkdndnakTmbcuhwJbbbbh8Acbhdavyd:KehYavyd:OehKindndnaDaOadcdtfydbcdtgzfydbgembadcefhdxekadcs0hiamazfgsIdbhEasalcbadcefgdaiEcdtfIdbaHaecwaecw6EcdtfIdbMg3Udba3aE:th3aecdthiaKaYazfydbcdtfheinaPaeydbgzcdtfgsa3asIdbMgEUdbaEa8Aa8AaE9DgsEh8AazawasEhwaeclfheaic98fgimbkkadak9hmbkawcu9hmekaQaq9pmdindnaxaQfRbbmbaQhwxdkaqaQcefgQ9hmbxikkakczakcz6EhzaOheaLhOawcu9hmbkkaocdtavc:Seffc98fhedninaoTmeaeydbcbyd;q:kjjbH:bjjjbbaec98fheaocufhoxbkkavc:qdf8Kjjjjbk;IlevucuaicdtgvaicFFFFi0Egocbyd;u:kjjbHjjjjbbhralalyd9GgwcdtfarBdbalawcefBd9GabarBdbaocbyd;u:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdlcuadcdtadcFFFFi0Ecbyd;u:kjjbHjjjjbbhralalyd9GgocdtfarBdbalaocefBd9GabarBdwabydbcbavz:wjjjb8Aadci9UhDdnadTmbabydbhoaehladhrinaoalydbcdtfgvavydbcefBdbalclfhlarcufgrmbkkdnaiTmbabydbhlabydlhrcbhvaihoinaravBdbarclfhralydbavfhvalclfhlaocufgombkkdnadci6mbabydlhrabydwhvcbhlinaecwfydbhoaeclfydbhdaraeydbcdtfgwawydbgwcefBdbavawcdtfalBdbaradcdtfgdadydbgdcefBdbavadcdtfalBdbaraocdtfgoaoydbgocefBdbavaocdtfalBdbaecxfheaDalcefgl9hmbkkdnaiTmbabydlheabydbhlinaeaeydbalydb9RBdbalclfhlaeclfheaicufgimbkkkQbabaeadaic;K1jjbz:njjjbkQbabaeadaic;m:jjjbz:njjjbk9DeeuabcFeaicdtz:wjjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk:Vvioud9:du8Jjjjjbc;Wa9Rgl8Kjjjjbcbhvalcxfcbc;Kbz:wjjjb8AalcuadcitgoadcFFFFe0Ecbyd;u:kjjbHjjjjbbgrBdxalceBd2araeadaicez:tjjjbalcuaoadcjjjjoGEcbyd;u:kjjbHjjjjbbgwBdzadcdthednadTmbabhiinaiavBdbaiclfhiadavcefgv9hmbkkawaefhDalabBdwalawBdl9cbhqindnadTmbaq9cq9:hkarhvaDhiadheinaiav8Pibak1:NcFrG87ebavcwfhvaicdfhiaecufgembkkalclfaq:NceGcdtfydbhxalclfaq9ce98gq:NceGcdtfydbhmalc;Wbfcbcjaz:wjjjb8AaDhvadhidnadTmbinalc;Wbfav8VebcdtfgeaeydbcefBdbavcdfhvaicufgimbkkcbhvcbhiinalc;WbfavfgeydbhoaeaiBdbaoaifhiavclfgvcja9hmbkadhvdndnadTmbinalc;WbfaDamydbgicetf8VebcdtfgeaeydbgecefBdbaxaecdtfaiBdbamclfhmavcufgvmbkaq9cv9smdcbhvinabawydbcdtfavBdbawclfhwadavcefgv9hmbxdkkaq9cv9smekkclhvdninavc98Smealcxfavfydbcbyd;q:kjjbH:bjjjbbavc98fhvxbkkalc;Waf8Kjjjjbk:Jwliuo99iud9:cbhv8Jjjjjbca9Rgoczfcwfcbyd:8:kjjbBdbaocb8Pd:0:kjjb83izaocwfcbyd;i:kjjbBdbaocb8Pd;a:kjjb83ibaicd4hrdndnadmbJFFuFhwJFFuuhDJFFuuhqJFFuFhkJFFuuhxJFFuFhmxekarcdthPaehsincbhiinaoczfaifgzasaifIdbgwazIdbgDaDaw9EEUdbaoaifgzawazIdbgDaDaw9DEUdbaiclfgicx9hmbkasaPfhsavcefgvad9hmbkaoIdKhDaoIdwhwaoIdChqaoIdlhkaoIdzhxaoIdbhmkdnadTmbJbbbbJbFu9hJbbbbamax:tgmamJbbbb9DEgmakaq:tgkakam9DEgkawaD:tgwawak9DEgw:vawJbbbb9BEhwdnalmbarcdthoindndnaeclfIdbaq:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:S9cC:ghHdndnaeIdbax:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikaHai:S:ehHdndnaecwfIdbaD:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabaHai:T9cy:g:e83ibaeaofheabcwfhbadcufgdmbxdkkarcdthoindndnaeIdbax:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cv9:9c;j:KM;j:KM;j:Kd:dhOdndnaeclfIdbaq:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cq9:9cM;j:KM;j:KM;jl:daO:ehOdndnaecwfIdbaD:tawNJbbbZMgk:lJbbb9p9DTmbak:Ohixekcjjjj94hikabaOai:SgH9ca:gaH9cz:g9cjjj;4s:d:eaH9cFe:d:e9cF:bj;4:pj;ar:d9c:bd9:9c:p;G:d;4j:E;ar:d9cH9:9c;d;H:W:y:m:g;d;Hb:d9cC9:9c:KM;j:KM;j:KMD:d:e83ibaeaofheabcwfhbadcufgdmbkkk9teiucbcbyd;y:kjjbgeabcifc98GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;y:kjjbgeabcrfc94GfgbBd;y:kjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;y:kjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;y:kjjbfgdBd;y:kjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk;Qddbcjwk;mdbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbbbbbbbbbbbbb4:h9w9N94:P:gW:j9O:ye9Pbbbbbbebbbdbbbebbbdbbbbbbbdbbbbbbbebbbbbbb:l29hZ;69:9kZ;N;76Z;rg97Z;z;o9xZ8J;B85Z;:;u9yZ;b;k9HZ:2;Z9DZ9e:l9mZ59A8KZ:r;T3Z:A:zYZ79OHZ;j4::8::Y:D9V8:bbbb9s:49:Z8R:hBZ9M9M;M8:L;z;o8:;8:PG89q;x:J878R:hQ8::M:B;e87bbbbbbjZbbjZbbjZ:E;V;N8::Y:DsZ9i;H;68:xd;R8:;h0838:;W:NoZbbbb:WV9O8:uf888:9i;H;68:9c9G;L89;n;m9m89;D8Ko8:bbbbf:8tZ9m836ZS:2AZL;zPZZ818EZ9e:lxZ;U98F8:819E;68:FFuuFFuuFFuuFFuFFFuFFFuFbc;mqkzebbbebbbdbbb9G:vbb",t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(e),{}).then(function(g){n=g.instance,n.exports.__wasm_call_ctors(),n.exports.meshopt_encodeVertexVersion(0),n.exports.meshopt_encodeIndexVersion(1)});function o(g){for(var m=new Uint8Array(g.length),_=0;_<g.length;++_){var y=g.charCodeAt(_);m[_]=y>96?y-97:y>64?y-39:y+4}for(var C=0,_=0;_<g.length;++_)m[C++]=m[_]<60?t[m[_]]:(m[_]-60)*64+m[++_];return m.buffer.slice(0,C)}function r(g){if(!g)throw new Error("Assertion failed")}function s(g){return new Uint8Array(g.buffer,g.byteOffset,g.byteLength)}function a(g,m,_,y){var C=n.exports.sbrk,E=C(m.length*4),I=C(_*4),b=new Uint8Array(n.exports.memory.buffer),S=s(m);b.set(S,E),y&&y(E,E,m.length,_);var B=g(I,E,m.length,_);b=new Uint8Array(n.exports.memory.buffer);var v=new Uint32Array(_);new Uint8Array(v.buffer).set(b.subarray(I,I+_*4)),S.set(b.subarray(E,E+m.length*4)),C(E-C(0));for(var P=0;P<m.length;++P)m[P]=v[m[P]];return[v,B]}function c(g,m,_,y){var C=n.exports.sbrk,E=C(_*4),I=C(_*y),b=new Uint8Array(n.exports.memory.buffer);b.set(s(m),I),g(E,I,_,y),b=new Uint8Array(n.exports.memory.buffer);var S=new Uint32Array(_);return new Uint8Array(S.buffer).set(b.subarray(E,E+_*4)),C(E-C(0)),S}function u(g,m,_,y,C){var E=n.exports.sbrk,I=E(m),b=E(y*C),S=new Uint8Array(n.exports.memory.buffer);S.set(s(_),b);var B=g(I,m,b,y,C),v=new Uint8Array(B);return v.set(S.subarray(I,I+B)),E(I-E(0)),v}function f(g){for(var m=0,_=0;_<g.length;++_){var y=g[_];m=m<y?y:m}return m}function h(g,m){if(r(m==2||m==4),m==4)return new Uint32Array(g.buffer,g.byteOffset,g.byteLength/4);var _=new Uint16Array(g.buffer,g.byteOffset,g.byteLength/2);return new Uint32Array(_)}function A(g,m,_,y,C,E,I){var b=n.exports.sbrk,S=b(_*y),B=b(_*E),v=new Uint8Array(n.exports.memory.buffer);v.set(s(m),B),g(S,_,y,C,B,I);var P=new Uint8Array(_*y);return P.set(v.subarray(S,S+_*y)),b(S-b(0)),P}return{ready:i,supported:!0,reorderMesh:function(g,m,_){var y=m?_?n.exports.meshopt_optimizeVertexCacheStrip:n.exports.meshopt_optimizeVertexCache:void 0;return a(n.exports.meshopt_optimizeVertexFetchRemap,g,f(g)+1,y)},reorderPoints:function(g,m){return r(g instanceof Float32Array),r(g.length%m==0),r(m>=3),c(n.exports.meshopt_spatialSortRemap,g,g.length/m,m*4)},encodeVertexBuffer:function(g,m,_){r(_>0&&_<=256),r(_%4==0);var y=n.exports.meshopt_encodeVertexBufferBound(m,_);return u(n.exports.meshopt_encodeVertexBuffer,y,g,m,_)},encodeIndexBuffer:function(g,m,_){r(_==2||_==4),r(m%3==0);var y=h(g,_),C=n.exports.meshopt_encodeIndexBufferBound(m,f(y)+1);return u(n.exports.meshopt_encodeIndexBuffer,C,y,m,4)},encodeIndexSequence:function(g,m,_){r(_==2||_==4);var y=h(g,_),C=n.exports.meshopt_encodeIndexSequenceBound(m,f(y)+1);return u(n.exports.meshopt_encodeIndexSequence,C,y,m,4)},encodeGltfBuffer:function(g,m,_,y){var C={ATTRIBUTES:this.encodeVertexBuffer,TRIANGLES:this.encodeIndexBuffer,INDICES:this.encodeIndexSequence};return r(C[y]),C[y](g,m,_)},encodeFilterOct:function(g,m,_,y){return r(_==4||_==8),r(y>=1&&y<=16),A(n.exports.meshopt_encodeFilterOct,g,m,_,y,16)},encodeFilterQuat:function(g,m,_,y){return r(_==8),r(y>=4&&y<=16),A(n.exports.meshopt_encodeFilterQuat,g,m,_,y,16)},encodeFilterExp:function(g,m,_,y,C){r(_>0&&_%4==0),r(y>=1&&y<=24);var E={Separate:0,SharedVector:1,SharedComponent:2,Clamped:3};return A(n.exports.meshopt_encodeFilterExp,g,m,_,y,_,C?E[C]:1)}}}();var are=function(){var e="b9H79Tebbbe8Fv9Gbb9Gvuuuuueu9Giuuub9Geueu9Giuuueuikqbeeedddillviebeoweuec:W:Odkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbeY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVbdE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbiL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtblK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbol79IV9Rbrq:S86qdbk;jYi5ud9:du8Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxcj;abad9Uc;WFbGcjdadca0EhmaialfgPar9Rgoadfhsavaoadz1jjjbgzceVhHcbhOdndninaeaO9nmeaPax9RaD6mdamaeaO9RaOamfgoae6EgAcsfglc9WGhCabaOad2fhXaAcethQaxaDfhiaOaeaoaeao6E9RhLalcl4cifcd4hKazcj;cbfaAfhYcbh8AazcjdfhEaHh3incbhodnawTmbaxa8Acd4fRbbhokaocFeGh5cbh8Eazcj;cbfhqinaih8Fdndndndna5a8Ecet4ciGgoc9:fPdebdkaPa8F9RaA6mrazcj;cbfa8EaA2fa8FaAz1jjjb8Aa8FaAfhixdkazcj;cbfa8EaA2fcbaAz:jjjjb8Aa8FhixekaPa8F9RaK6mva8FaKfhidnaCTmbaPai9RcK6mbaocdtc:q1jjbfcj1jjbawEhaczhrcbhlinargoc9Wfghaqfhrdndndndndndnaaa8Fahco4fRbbalcoG4ciGcdtfydbPDbedvivvvlvkar9cb83bbarcwf9cb83bbxlkarcbaiRbdai8Xbb9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbaqaofgrcGfag9c8F1:NghcKtc8F91aicdfa8J9c8N1:Nfg8KRbbG86bbarcVfcba8KahcjeGcr4fghRbbag9cjjjjjl:dg8J9qE86bbarc7fcbaha8J9c8L1:NfghRbbag9cjjjjjd:dg8J9qE86bbarctfcbaha8J9c8K1:NfghRbbag9cjjjjje:dg8J9qE86bbarc91fcbaha8J9c8J1:NfghRbbag9cjjjj;ab:dg8J9qE86bbarc4fcbaha8J9cg1:NfghRbbag9cjjjja:dg8J9qE86bbarc93fcbaha8J9ch1:NfghRbbag9cjjjjz:dgg9qE86bbarc94fcbahag9ca1:NfghRbbai8Xbe9c:c:qj:bw9:9c:q;c1:I1e:d9c:b:c:e1z9:gg9cjjjjjz:dg8J9qE86bbarc95fag9c8F1:NgicKtc8F91aha8J9c8N1:NfghRbbG86bbarc96fcbahaicjeGcr4fgiRbbag9cjjjjjl:dg8J9qE86bbarc97fcbaia8J9c8L1:NfgiRbbag9cjjjjjd:dg8J9qE86bbarc98fcbaia8J9c8K1:NfgiRbbag9cjjjjje:dg8J9qE86bbarc99fcbaia8J9c8J1:NfgiRbbag9cjjjj;ab:dg8J9qE86bbarc9:fcbaia8J9cg1:NfgiRbbag9cjjjja:dg8J9qE86bbarcufcbaia8J9ch1:NfgiRbbag9cjjjjz:dgg9qE86bbaiag9ca1:NfhixikaraiRblaiRbbghco4g8Ka8KciSg8KE86bbaqaofgrcGfaiclfa8Kfg8KRbbahcl4ciGg8La8LciSg8LE86bbarcVfa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc7fa8Ka8Lfg8KRbbahciGghahciSghE86bbarctfa8Kahfg8KRbbaiRbeghco4g8La8LciSg8LE86bbarc91fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc4fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc93fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc94fa8Kahfg8KRbbaiRbdghco4g8La8LciSg8LE86bbarc95fa8Ka8Lfg8KRbbahcl4ciGg8La8LciSg8LE86bbarc96fa8Ka8Lfg8KRbbahcd4ciGg8La8LciSg8LE86bbarc97fa8Ka8Lfg8KRbbahciGghahciSghE86bbarc98fa8KahfghRbbaiRbigico4g8Ka8KciSg8KE86bbarc99faha8KfghRbbaicl4ciGg8Ka8KciSg8KE86bbarc9:faha8KfghRbbaicd4ciGg8Ka8KciSg8KE86bbarcufaha8KfgrRbbaiciGgiaiciSgiE86bbaraifhixdkaraiRbwaiRbbghcl4g8Ka8KcsSg8KE86bbaqaofgrcGfaicwfa8Kfg8KRbbahcsGghahcsSghE86bbarcVfa8KahfghRbbaiRbeg8Kcl4g8La8LcsSg8LE86bbarc7faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarctfaha8KfghRbbaiRbdg8Kcl4g8La8LcsSg8LE86bbarc91faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc4faha8KfghRbbaiRbig8Kcl4g8La8LcsSg8LE86bbarc93faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc94faha8KfghRbbaiRblg8Kcl4g8La8LcsSg8LE86bbarc95faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc96faha8KfghRbbaiRbvg8Kcl4g8La8LcsSg8LE86bbarc97faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc98faha8KfghRbbaiRbog8Kcl4g8La8LcsSg8LE86bbarc99faha8LfghRbba8KcsGg8Ka8KcsSg8KE86bbarc9:faha8KfghRbbaiRbrgicl4g8Ka8KcsSg8KE86bbarcufaha8KfgrRbbaicsGgiaicsSgiE86bbaraifhixekarai8Pbb83bbarcwfaicwf8Pbb83bbaiczfhikdnaoaC9pmbalcdfhlaoczfhraPai9RcL0mekkaoaC6moaimexokaCmva8FTmvkaqaAfhqa8Ecefg8Ecl9hmbkdndndndnawTmbasa8Acd4fRbbgociGPlbedrbkaATmdaza8Afh8Fazcj;cbfhhcbh8EaEhaina8FRbbhraahocbhlinaoahalfRbbgqce4cbaqceG9R7arfgr86bbaoadfhoaAalcefgl9hmbkaacefhaa8Fcefh8FahaAfhha8Ecefg8Ecl9hmbxikkaATmeaza8Afhaazcj;cbfhhcbhoceh8EaYh8FinaEaofhlaa8Vbbhrcbhoinala8FaofRbbcwtahaofRbbgqVc;:FiGce4cbaqceG9R7arfgr87bbaladfhlaLaocefgofmbka8FaQfh8FcdhoaacdfhaahaQfhha8EceGhlcbh8EalmbxdkkaATmbcbaocl49Rh8Eaza8AfRbbhqcwhoa3hlinalRbbaotaqVhqalcefhlaocwfgoca9hmbkcbhhaEh8FaYhainazcj;cbfahfRbbhrcwhoaahlinalRbbaotarVhralaAfhlaocwfgoca9hmbkara8E93aq7hqcbhoa8Fhlinalaqao486bbalcefhlaocwfgoca9hmbka8Fadfh8FaacefhaahcefghaA9hmbkkaEclfhEa3clfh3a8Aclfg8Aad6mbkaXazcjdfaAad2z1jjjb8AazazcjdfaAcufad2fadz1jjjb8AaAaOfhOaihxaimbkc9:hoxdkcbc99aPax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaok:XseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecjez:jjjjb8AavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:Lvoeue99dud99eud99dndnadcl9hmbaeTmeindndnabcdfgd8Sbb:Yab8Sbbgi:Ygl:l:tabcefgv8Sbbgo:Ygr:l:tgwJbb;:9cawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai86bbdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad86bbdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad86bbabclfhbaecufgembxdkkaeTmbindndnabclfgd8Ueb:Yab8Uebgi:Ygl:l:tabcdfgv8Uebgo:Ygr:l:tgwJb;:FSawawNJbbbbawawJbbbb9GgDEgq:mgkaqaicb9iEalMgwawNakaqaocb9iEarMgqaqNMM:r:vglNJbbbZJbbb:;aDEMgr:lJbbb9p9DTmbar:Ohixekcjjjj94hikadai87ebdndnaqalNJbbbZJbbb:;aqJbbbb9GEMgq:lJbbb9p9DTmbaq:Ohdxekcjjjj94hdkavad87ebdndnawalNJbbbZJbbb:;awJbbbb9GEMgw:lJbbb9p9DTmbaw:Ohdxekcjjjj94hdkabad87ebabcwfhbaecufgembkkk;oiliui99iue99dnaeTmbcbhiabhlindndnJ;Zl81Zalcof8UebgvciV:Y:vgoal8Ueb:YNgrJb;:FSNJbbbZJbbb:;arJbbbb9GEMgw:lJbbb9p9DTmbaw:OhDxekcjjjj94hDkalclf8Uebhqalcdf8UebhkabaiavcefciGfcetfaD87ebdndnaoak:YNgwJb;:FSNJbbbZJbbb:;awJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavciGfgkcd7cetfaD87ebdndnaoaq:YNgoJb;:FSNJbbbZJbbb:;aoJbbbb9GEMgx:lJbbb9p9DTmbax:OhDxekcjjjj94hDkabaiavcufciGfcetfaD87ebdndnJbbjZararN:tawawN:taoaoN:tgrJbbbbarJbbbb9GE:rJb;:FSNJbbbZMgr:lJbbb9p9DTmbar:Ohvxekcjjjj94hvkabakcetfav87ebalcwfhlaiclfhiaecufgembkkk9mbdnadcd4ae2gdTmbinababydbgecwtcw91:Yaece91cjjj98Gcjjj;8if::NUdbabclfhbadcufgdmbkkk9teiucbcbyd:K1jjbgeabcifc98GfgbBd:K1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabkk81dbcjwk8Kbbbbdbbblbbbwbbbbbbbebbbdbbblbbbwbbbbc:Kwkl8WNbb",t="b9H79TebbbeKl9Gbb9Gvuuuuueu9Giuuub9Geueuikqbbebeedddilve9Weeeviebeoweuec:q:6dkr;leDo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9KW9J9V9KW9wWVtW949c919M9MWVbdY9TW79O9V9Wt9F9KW9J9V9KW69U9KW949c919M9MWVblE9TW79O9V9Wt9F9KW9J9V9KW69U9KW949tWG91W9U9JWbvL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9p9JtboK9TW79O9V9Wt9F9KW9J9V9KWS9P2tWV9r919HtbrL9TW79O9V9Wt9F9KW9J9V9KWS9P2tWVT949Wbwl79IV9RbDq;G9Mqlbzik9:evu8Jjjjjbcz9Rhbcbheincbhdcbhiinabcwfadfaicjuaead4ceGglE86bbaialfhiadcefgdcw9hmbkaec:q:yjjbfai86bbaecitc:q1jjbfab8Piw83ibaecefgecjd9hmbkk:183lYud97dur978Jjjjjbcj;kb9Rgv8Kjjjjbc9:hodnalTmbcuhoaiRbbgrc;WeGc:Ge9hmbarcsGgwce0mbc9:hoalcufadcd4cbawEgDadfgrcKcaawEgqaraq0Egk6mbaicefhxavaialfgmar9Rgoad;8qbbcj;abad9Uc;WFbGcjdadca0EhPdndndnadTmbaoadfhscbhzinaeaz9nmdamax9RaD6miabazad2fhHaxaDfhOaPaeaz9RazaPfae6EgAcsfgocl4cifcd4hCavcj;cbfaoc9WGgXcetfhQavcj;cbfaXci2fhLavcj;cbfaXfhKcbhYaoc;ab6h8AincbhodnawTmbaxaYcd4fRbbhokaocFeGhEcbh3avcj;cbfh5indndndndnaEa3cet4ciGgoc9:fPdebdkamaO9RaX6mwavcj;cbfa3aX2faOaX;8qbbaOaAfhOxdkavcj;cbfa3aX2fcbaX;8kbxekamaO9RaC6moaoclVcbawEhraOaCfhocbhidna8Ambamao9Rc;Gb6mbcbhlina5alfhidndndndndndnaOalco4fRbbgqciGarfPDbedibledibkaipxbbbbbbbbbbbbbbbbpklbxlkaiaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiaopbbbpklbaoczfhoxekaiaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcd4ciGarfPDbedibledibkaiczfpxbbbbbbbbbbbbbbbbpklbxlkaiczfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaiczfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaiczfaopbbbpklbaoczfhoxekaiczfaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqcl4ciGarfPDbedibledibkaicafpxbbbbbbbbbbbbbbbbpklbxlkaicafaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaoclffahc:q:yjjbfRbbfhoxikaicafaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaaaocwffahc:q:yjjbfRbbfhoxdkaicafaopbbbpklbaoczfhoxekaicafaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaaaocdffahc:q:yjjbfRbbfhokdndndndndndnaqco4arfPDbedibledibkaic8Wfpxbbbbbbbbbbbbbbbbpklbxlkaic8Wfaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaoclffaqc:q:yjjbfRbbfhoxikaic8Wfaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngicitc:q1jjbfpbibaic:q:yjjbfRbbgipsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Ngqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spklbaiaocwffaqc:q:yjjbfRbbfhoxdkaic8Wfaopbbbpklbaoczfhoxekaic8WfaopbbdaoRbbgicitc:q1jjbfpbibaic:q:yjjbfRbbgipsaoRbegqcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpklbaiaocdffaqc:q:yjjbfRbbfhokalc;abfhialcjefaX0meaihlamao9Rc;Fb0mbkkdnaiaX9pmbaici4hlinamao9RcK6mwa5aifhqdndndndndndnaOaico4fRbbalcoG4ciGarfPDbedibledibkaqpxbbbbbbbbbbbbbbbbpkbbxlkaqaopbblaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLg8Ecdp:mea8EpmbzeHdOiAlCvXoQrLpxiiiiiiiiiiiiiiiip9og8Fpxiiiiiiiiiiiiiiiip8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaoclffahc:q:yjjbfRbbfhoxikaqaopbbwaopbbbg8Eclp:mea8EpmbzeHdOiAlCvXoQrLpxssssssssssssssssp9og8Fpxssssssssssssssssp8Jg8Ep5b9cjF;8;4;W;G;ab9:9cU1:Ngacitc:q1jjbfpbibaac:q:yjjbfRbbgapsa8Ep5e9cjF;8;4;W;G;ab9:9cU1:Nghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPa8Fa8Ep9spkbbaaaocwffahc:q:yjjbfRbbfhoxdkaqaopbbbpkbbaoczfhoxekaqaopbbdaoRbbgacitc:q1jjbfpbibaac:q:yjjbfRbbgapsaoRbeghcitc:q1jjbfpbibp9UpmbedilvorzHOACXQLpPpkbbaaaocdffahc:q:yjjbfRbbfhokalcdfhlaiczfgiaX6mbkkaohOaoTmoka5aXfh5a3cefg3cl9hmbkdndndndnawTmbasaYcd4fRbbglciGPlbedwbkaXTmdavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep9Ta8Epxeeeeeeeeeeeeeeeeg8Fp9op9Hp9rg8Eagp9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Uggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp9Uggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp9Uggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep9Ta8Ea8Fp9op9Hp9rg8Ep9Ug8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9Ug8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9Uggp9AbbbaladfhlaoczfgoaX6mbxikkaXTmeavcjdfaYfhlavaYfpbdbhgcbhoinalavcj;cbfaofpblbg8JaKaofpblbg8KpmbzeHdOiAlCvXoQrLg8LaQaofpblbg8MaLaofpblbg8NpmbzeHdOiAlCvXoQrLgypmbezHdiOAlvCXorQLg8Ecep:nea8Epxebebebebebebebebg8Fp9op:bep9rg8Eagp:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8LaypmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwKDYq8AkEx3m5P8Es8Fg8Ja8Ma8NpmwKDYq8AkEx3m5P8Es8Fg8KpmbezHdiOAlvCXorQLg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeggp9Abbbaladfglaga8Ea8Epmlvorlvorlvorlvorp:oeggp9Abbbaladfglaga8Ea8EpmwDqkwDqkwDqkwDqkp:oeggp9Abbbaladfglaga8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9Abbbaladfglaga8Ja8KpmwDKYqk8AExm35Ps8E8Fg8Ecep:nea8Ea8Fp9op:bep9rg8Ep:oeg8Fp9Abbbaladfgla8Fa8Ea8Epmlvorlvorlvorlvorp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmwDqkwDqkwDqkwDqkp:oeg8Fp9Abbbaladfgla8Fa8Ea8EpmxmPsxmPsxmPsxmPsp:oeggp9AbbbaladfhlaoczfgoaX6mbxdkkaXTmbcbhocbalcl4gl9Rc8FGhiavcjdfaYfhravaYfpbdbh8Finaravcj;cbfaofpblbggaKaofpblbg8JpmbzeHdOiAlCvXoQrLg8KaQaofpblbg8LaLaofpblbg8MpmbzeHdOiAlCvXoQrLg8NpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ea8Fp9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Fa8Ka8NpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwKDYq8AkEx3m5P8Es8Fgga8La8MpmwKDYq8AkEx3m5P8Es8Fg8JpmbezHdiOAlvCXorQLg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9Abbbaradfgra8Faga8JpmwDKYqk8AExm35Ps8E8Fg8Eaip:Rea8Ealp:Sep9qg8Ep9rg8Fp9Abbbaradfgra8Fa8Ea8Epmlvorlvorlvorlvorp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmwDqkwDqkwDqkwDqkp9rg8Fp9Abbbaradfgra8Fa8Ea8EpmxmPsxmPsxmPsxmPsp9rg8Fp9AbbbaradfhraoczfgoaX6mbkkaYclfgYad6mbkaHavcjdfaAad2;8qbbavavcjdfaAcufad2fad;8qbbaAazfhzc9:hoaOhxaOmbxlkkaeTmbaDalfhrcbhocuhlinaralaD9RglfaD6mdaPaeao9RaoaPfae6Eaofgoae6mbkaial9Rhxkcbc99amax9RakSEhoxekc9:hokavcj;kbf8Kjjjjbaokwbz:bjjjbk:TseHu8Jjjjjbc;ae9Rgv8Kjjjjbc9:hodnaeci9UgrcHfal0mbcuhoaiRbbgwc;WeGc;Ge9hmbawcsGgDce0mbavc;abfcFecje;8kbavcUf9cu83ibavc8Wf9cu83ibavcyf9cu83ibavcaf9cu83ibavcKf9cu83ibavczf9cu83ibav9cu83iwav9cu83ibaialfc9WfhqaicefgwarfhldnaeTmbcmcsaDceSEhkcbhxcbhmcbhrcbhicbhoindnalaq9nmbc9:hoxikdndnawRbbgDc;Ve0mbavc;abfaoaDcu7gPcl4fcsGcitfgsydlhzasydbhHdndnaDcsGgsak9pmbavaiaPfcsGcdtfydbaxasEhDaxasTgOfhxxekdndnascsSmbcehOasc987asamffcefhDxekalcefhDal8SbbgscFeGhPdndnascu9mmbaDhlxekalcvfhlaPcFbGhPcrhsdninaD8SbbgOcFbGastaPVhPaOcu9kmeaDcefhDascrfgsc8J9hmbxdkkaDcefhlkcehOaPce4cbaPceG9R7amfhDkaDhmkavc;abfaocitfgsaDBdbasazBdlavaicdtfaDBdbavc;abfaocefcsGcitfgsaHBdbasaDBdlaocdfhoaOaifhidnadcd9hmbabarcetfgsaH87ebasclfaD87ebascdfaz87ebxdkabarcdtfgsaHBdbascwfaDBdbasclfazBdbxekdnaDcpe0mbaxcefgOavaiaqaDcsGfRbbgscl49RcsGcdtfydbascz6gPEhDavaias9RcsGcdtfydbaOaPfgzascsGgOEhsaOThOdndnadcd9hmbabarcetfgHax87ebaHclfas87ebaHcdfaD87ebxekabarcdtfgHaxBdbaHcwfasBdbaHclfaDBdbkavaicdtfaxBdbavc;abfaocitfgHaDBdbaHaxBdlavaicefgicsGcdtfaDBdbavc;abfaocefcsGcitfgHasBdbaHaDBdlavaiaPfgicsGcdtfasBdbavc;abfaocdfcsGcitfgDaxBdbaDasBdlaocifhoaiaOfhiazaOfhxxekaxcbalRbbgHEgAaDc;:eSgDfhzaHcsGhCaHcl4hXdndnaHcs0mbazcefhOxekazhOavaiaX9RcsGcdtfydbhzkdndnaCmbaOcefhxxekaOhxavaiaH9RcsGcdtfydbhOkdndnaDTmbalcefhDxekalcdfhDal8SbegPcFeGhsdnaPcu9kmbalcofhAascFbGhscrhldninaD8SbbgPcFbGaltasVhsaPcu9kmeaDcefhDalcrfglc8J9hmbkaAhDxekaDcefhDkasce4cbasceG9R7amfgmhAkdndnaXcsSmbaDhsxekaDcefhsaD8SbbglcFeGhPdnalcu9kmbaDcvfhzaPcFbGhPcrhldninas8SbbgDcFbGaltaPVhPaDcu9kmeascefhsalcrfglc8J9hmbkazhsxekascefhskaPce4cbaPceG9R7amfgmhzkdndnaCcsSmbashlxekascefhlas8SbbgDcFeGhPdnaDcu9kmbascvfhOaPcFbGhPcrhDdninal8SbbgscFbGaDtaPVhPascu9kmealcefhlaDcrfgDc8J9hmbkaOhlxekalcefhlkaPce4cbaPceG9R7amfgmhOkdndnadcd9hmbabarcetfgDaA87ebaDclfaO87ebaDcdfaz87ebxekabarcdtfgDaABdbaDcwfaOBdbaDclfazBdbkavc;abfaocitfgDazBdbaDaABdlavaicdtfaABdbavc;abfaocefcsGcitfgDaOBdbaDazBdlavaicefgicsGcdtfazBdbavc;abfaocdfcsGcitfgDaABdbaDaOBdlavaiaHcz6aXcsSVfgicsGcdtfaOBdbaiaCTaCcsSVfhiaocifhokawcefhwaocsGhoaicsGhiarcifgrae6mbkkcbc99alaqSEhokavc;aef8Kjjjjbaok:clevu8Jjjjjbcz9Rhvdnaecvfal9nmbc9:skdnaiRbbc;:eGc;qeSmbcuskav9cb83iwaicefhoaialfc98fhrdnaeTmbdnadcdSmbcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcdtfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgiBdbalaiBdbawcefgwae9hmbxdkkcbhwindnaoar6mbc9:skaocefhlao8SbbgicFeGhddndnaicu9mmbalhoxekaocvfhoadcFbGhdcrhidninal8SbbgDcFbGaitadVhdaDcu9kmealcefhlaicrfgic8J9hmbxdkkalcefhokabawcetfadc8Etc8F91adcd47avcwfadceGcdtVglydbfgi87ebalaiBdbawcefgwae9hmbkkcbc99aoarSEk:SPliuo97eue978Jjjjjbca9Rhiaec98Ghldndnadcl9hmbdnalTmbcbhvabhdinadadpbbbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDpxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpkbbadczfhdavclfgval6mbkkalaeSmeaipxbbbbbbbbbbbbbbbbgqpklbaiabalcdtfgdaeciGglcdtgv;8qbbdnalTmbaiaipblbgocKp:RecKp:Sep;6egraocwp:RecKp:Sep;6earp;Geaoczp:RecKp:Sep;6egwp;Gep;Kep;LegDaqp:2egqarpxbbbjbbbjbbbjbbbjgkp9op9rp;Kegrpxbb;:9cbb;:9cbb;:9cbb;:9cararp;MeaDaDp;Meawaqawakp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFbbbFbbbFbbbFbbbp9oaopxbbbFbbbFbbbFbbbFp9op9qarawp;Meaqp;Kecwp:RepxbFbbbFbbbFbbbFbbp9op9qaDawp;Meaqp;Keczp:RepxbbFbbbFbbbFbbbFbp9op9qpklbkadaiav;8qbbskdnalTmbcbhvabhdinadczfgxaxpbbbgopxbbbbbbFFbbbbbbFFgkp9oadpbbbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpkbbadaDakp9oaoarpmbezHdiOAlvCXorQLp9qpkbbadcafhdavclfgval6mbkkalaeSmbaiczfpxbbbbbbbbbbbbbbbbgopklbaiaopklbaiabalcitfgdaeciGglcitgv;8qbbdnalTmbaiaipblzgopxbbbbbbFFbbbbbbFFgkp9oaipblbgDaopmbediwDqkzHOAKY8AEgwczp:Reczp:Sep;6egraDaopmlvorxmPsCXQL358E8FpxFubbFubbFubbFubbp9op;7eawczp:Sep;6egwp;Gearp;Gep;Kep;Legopxbbbbbbbbbbbbbbbbp:2egqarpxbbbjbbbjbbbjbbbjgmp9op9rp;Kegrpxb;:FSb;:FSb;:FSb;:FSararp;Meaoaop;Meawaqawamp9op9rp;Kegrarp;Mep;Kep;Kep;Jep;Negwp;Mepxbbn0bbn0bbn0bbn0gqp;KepxFFbbFFbbFFbbFFbbp9oaoawp;Meaqp;Keczp:Rep9qgoarawp;Meaqp;KepxFFbbFFbbFFbbFFbbp9ogrpmwDKYqk8AExm35Ps8E8Fp9qpklzaiaDakp9oaoarpmbezHdiOAlvCXorQLp9qpklbkadaiav;8qbbkk:oDllue97euv978Jjjjjbc8W9Rhidnaec98GglTmbcbhvabhoinaiaopbbbgraoczfgwpbbbgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklbaopxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblbpEb:T:j83ibaocwfarp5eaipblbpEe:T:j83ibawaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblbpEd:T:j83ibaocKfakp5eaipblbpEi:T:j83ibaocafhoavclfgval6mbkkdnalaeSmbaiczfpxbbbbbbbbbbbbbbbbgkpklbaiakpklbaiabalcitfgoaeciGgvcitgw;8qbbdnavTmbaiaipblbgraipblzgDpmlvorxmPsCXQL358E8Fgqczp:Segkclp:RepklaaipxbbjZbbjZbbjZbbjZpx;Zl81Z;Zl81Z;Zl81Z;Zl81Zakpxibbbibbbibbbibbbp9qp;6ep;NegkaraDpmbediwDqkzHOAKY8AEgrczp:Reczp:Sep;6ep;MegDaDp;Meakarczp:Sep;6ep;Megxaxp;Meakaqczp:Reczp:Sep;6ep;Megqaqp;Mep;Kep;Kep;Lepxbbbbbbbbbbbbbbbbp:4ep;Jepxb;:FSb;:FSb;:FSb;:FSgkp;Mepxbbn0bbn0bbn0bbn0grp;KepxFFbbFFbbFFbbFFbbgmp9oaxakp;Mearp;Keczp:Rep9qgxaDakp;Mearp;Keamp9oaqakp;Mearp;Keczp:Rep9qgkpmbezHdiOAlvCXorQLgrp5baipblapEb:T:j83ibaiarp5eaipblapEe:T:j83iwaiaxakpmwDKYqk8AExm35Ps8E8Fgkp5baipblapEd:T:j83izaiakp5eaipblapEi:T:j83iKkaoaiaw;8qbbkk;uddiue978Jjjjjbc;ab9Rhidnadcd4ae2glc98GgvTmbcbheabhdinadadpbbbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepkbbadczfhdaeclfgeav6mbkkdnavalSmbaic8WfpxbbbbbbbbbbbbbbbbgopklbaicafaopklbaiczfaopklbaiaopklbaiabavcdtfgdalciGgecdtgv;8qbbdnaeTmbaiaipblbgocwp:Recwp:Sep;6eaocep:SepxbbjFbbjFbbjFbbjFp9opxbbjZbbjZbbjZbbjZp:Uep;Mepklbkadaiav;8qbbkk9teiucbcbydj1jjbgeabcifc98GfgbBdj1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaikkkebcjwklz:Dbb",n=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),i=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var o=WebAssembly.validate(n)?a(t):a(e),r,s=WebAssembly.instantiate(o,{}).then(function(C){r=C.instance,r.exports.__wasm_call_ctors()});function a(C){for(var E=new Uint8Array(C.length),I=0;I<C.length;++I){var b=C.charCodeAt(I);E[I]=b>96?b-97:b>64?b-39:b+4}for(var S=0,I=0;I<C.length;++I)E[S++]=E[I]<60?i[E[I]]:(E[I]-60)*64+E[++I];return E.buffer.slice(0,S)}function c(C,E,I,b,S,B,v){var P=C.exports.sbrk,N=b+3&-4,L=P(N*S),p=P(B.length),x=new Uint8Array(C.exports.memory.buffer);x.set(B,p);var T=E(L,b,S,p,B.length);if(T==0&&v&&v(L,N,S),I.set(x.subarray(L,L+b*S)),P(L-P(0)),T!=0)throw new Error("Malformed buffer data: "+T)}var u={NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},f={ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"},h=[],A=0;function g(C){var E={object:new Worker(C),pending:0,requests:{}};return E.object.onmessage=function(I){var b=I.data;E.pending-=b.count,E.requests[b.id][b.action](b.value),delete E.requests[b.id]},E}function m(C){for(var E="self.ready = WebAssembly.instantiate(new Uint8Array(["+new Uint8Array(o)+"]), {}).then(function(result) { result.instance.exports.__wasm_call_ctors(); return result.instance; });self.onmessage = "+y.name+";"+c.toString()+y.toString(),I=new Blob([E],{type:"text/javascript"}),b=URL.createObjectURL(I),S=h.length;S<C;++S)h[S]=g(b);for(var S=C;S<h.length;++S)h[S].object.postMessage({});h.length=C,URL.revokeObjectURL(b)}function _(C,E,I,b,S){for(var B=h[0],v=1;v<h.length;++v)h[v].pending<B.pending&&(B=h[v]);return new Promise(function(P,N){var L=new Uint8Array(I),p=++A;B.pending+=C,B.requests[p]={resolve:P,reject:N},B.object.postMessage({id:p,count:C,size:E,source:L,mode:b,filter:S},[L.buffer])})}function y(C){var E=C.data;if(!E.id)return self.close();self.ready.then(function(I){try{var b=new Uint8Array(E.count*E.size);c(I,I.exports[E.mode],b,E.count,E.size,E.source,I.exports[E.filter]),self.postMessage({id:E.id,count:E.count,action:"resolve",value:b},[b.buffer])}catch(S){self.postMessage({id:E.id,count:E.count,action:"reject",value:S})}})}return{ready:s,supported:!0,useWorkers:function(C){m(C)},decodeVertexBuffer:function(C,E,I,b,S){c(r,r.exports.meshopt_decodeVertexBuffer,C,E,I,b,r.exports[u[S]])},decodeIndexBuffer:function(C,E,I,b){c(r,r.exports.meshopt_decodeIndexBuffer,C,E,I,b)},decodeIndexSequence:function(C,E,I,b){c(r,r.exports.meshopt_decodeIndexSequence,C,E,I,b)},decodeGltfBuffer:function(C,E,I,b,S,B){c(r,r.exports[f[S]],C,E,I,b,r.exports[u[B]])},decodeGltfBufferAsync:function(C,E,I,b,S){return h.length>0?_(C,E,I,f[b],u[S]):s.then(function(){var B=new Uint8Array(C*E);return c(r,r.exports[f[b]],B,C,E,I,r.exports[u[S]]),B})}}}();var Gen=function(){var e="b9H79Tebbbetm9Geueu9Geub9Gbb9Gsuuuuuuuuuuuu99uueu9Gvuuuuub9Gruuuuuuub9Gvuuuuue999Gvuuuuueu9Gquuuuuuu99uueu9Gwuuuuuu99ueu9Giuuue999Gluuuueu9GiuuueuiOHdilvorlwiDqkbxxbelve9Weiiviebeoweuec:G:Pdkr:Tewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bbz9TW79O9V9Wt9F79P9T9W29P9M95br8E9TW79O9V9Wt9F79P9T9W29P9M959x9Pt9OcttV9P9I91tW7bwQ9TW79O9V9Wt9F79P9T9W29P9M959q9V9P9Ut7bDX9TW79O9V9Wt9F79P9T9W29P9M959t9J9H2Wbqa9TW79O9V9Wt9F9V9Wt9P9T9P96W9wWVtW94SWt9J9O9sW9T9H9Wbkl79IV9RbxDwebcekdzsq;B:xeHdbkM9Hi8Au8A99Au8Jjjjjbc;W;qb9Rgs8Kjjjjbcbhzascxfcbc;Kbz:ojjjb8AdnabaeSmbabaeadcdtz:njjjb8AkdndnamcdGmbascxfhHcbhOxekasalcrfci4gecbyd:m:jjjbHjjjjbbgABdxasceBd2aAcbaez:ojjjbhCcbhlcbhednadTmbcbhlabheadhAinaCaeydbgXci4fgQaQRbbgQceaXcrGgXtV86bbaQcu7aX4ceGalfhlaeclfheaAcufgAmbkcualcdtalcFFFFi0EhekascCfhHasaecbyd:m:jjjbHjjjjbbgOBdzascdBd2alcd4alfhXcehAinaAgecethAaeaX6mbkcdhzcbhLascuaecdtgAaecFFFFi0Ecbyd:m:jjjbHjjjjbbgXBdCasciBd2aXcFeaAz:ojjjbhKdnadTmbaecufhYcbh8AindndnaKabaLcdtfgEydbgQc:v;t;h;Ev2aYGgXcdtfgCydbgAcuSmbceheinaOaAcdtfydbaQSmdaXaefhAaecefheaKaAaYGgXcdtfgCydbgAcu9hmbkkaOa8AcdtfaQBdbaCa8ABdba8AhAa8Acefh8AkaEaABdbaLcefgLad9hmbkkaKcbyd1:jjjbH:bjjjbbascdBd2kcbh3aHcualcefgecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbg5Bdbasa5BdlasazceVgeBd2ascxfaecdtfcuadcitadcFFFFe0Ecbyd:m:jjjbHjjjjbbg8EBdbasa8EBdwasazcdfgeBd2asclfabadalcbz:cjjjbascxfaecdtfcualcdtgealcFFFFi0Eg8Fcbyd:m:jjjbHjjjjbbgABdbasazcifgXBd2ascxfaXcdtfa8Fcbyd:m:jjjbHjjjjbbgaBdbasazclVBd2aAaaaialavaOascxfz:djjjbalcbyd:m:jjjbHjjjjbbhCascxfasyd2ghcdtfaCBdbasahcefgXBd2ascxfaXcdtfa8Fcbyd:m:jjjbHjjjjbbgXBdbasahcdfgQBd2ascxfaQcdtfa8Fcbyd:m:jjjbHjjjjbbgQBdbasahcifggBd2aXcFeaez:ojjjbh8JaQcFeaez:ojjjbh8KdnalTmba8Ecwfh8Lindna5a3gQcefg3cdtfydbgKa5aQcdtgefydbgXSmbaKaX9Rhza8EaXcitfhHa8Kaefh8Ma8JaefhEcbhYindndnaHaYcitfydbg8AaQ9hmbaEaQBdba8MaQBdbxekdna5a8Acdtg8NfgeclfydbgXaeydbgeSmba8EaecitgKfydbaQSmeaXae9Rhyaecu7aXfhLa8LaKfhXcbheinaLaeSmeaecefheaXydbhKaXcwfhXaKaQ9hmbkaeay6meka8Ka8NfgeaQa8AaeydbcuSEBdbaEa8AaQaEydbcuSEBdbkaYcefgYaz9hmbkka3al9hmbkaAhXaahQa8KhKa8JhYcbheindndnaeaXydbg8A9hmbdnaeaQydbg8A9hmbaYydbh8AdnaKydbgLcu9hmba8Acu9hmbaCaefcb86bbxikaCaefhEdnaeaLSmbaea8ASmbaEce86bbxikaEcl86bbxdkdnaeaaa8AcdtgLfydb9hmbdnaKydbgEcuSmbaeaESmbaYydbgzcuSmbaeazSmba8KaLfydbgHcuSmbaHa8ASmba8JaLfydbgLcuSmbaLa8ASmbdnaAaEcdtfydbg8AaAaLcdtfydb9hmba8AaAazcdtfydbgLSmbaLaAaHcdtfydb9hmbaCaefcd86bbxlkaCaefcl86bbxikaCaefcl86bbxdkaCaefcl86bbxekaCaefaCa8AfRbb86bbkaXclfhXaQclfhQaKclfhKaYclfhYalaecefge9hmbkdnaqTmbdndnaOTmbaOheaAhXalhQindnaqaeydbfRbbTmbaCaXydbfcl86bbkaeclfheaXclfhXaQcufgQmbxdkkaAhealhXindnaqRbbTmbaCaeydbfcl86bbkaqcefhqaeclfheaXcufgXmbkkaAhealhQaChXindnaCaeydbfRbbcl9hmbaXcl86bbkaeclfheaXcefhXaQcufgQmbkkamceGTmbaChealhXindnaeRbbce9hmbaecl86bbkaecefheaXcufgXmbkkascxfagcdtfcualcx2alc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbg3BdbasahclfgHBd2a3aialavaOz:ejjjbh8PdndnaDmbcbhgcbh8Lxekcbh8LawhecbhXindnaeIdbJbbbb9ETmbasc;Wbfa8LcdtfaXBdba8Lcefh8LkaeclfheaDaXcefgX9hmbkascxfaHcdtfcua8Lal2gecdtaecFFFFi0Ecbyd:m:jjjbHjjjjbbggBdbasahcvfgHBd2alTmba8LTmbarcd4hEdnaOTmba8Lcdthzcbh8AaghLinaoaOa8AcdtfydbaE2cdtfhYasc;WbfheaLhXa8LhQinaXaYaeydbcdtgKfIdbawaKfIdbNUdbaeclfheaXclfhXaQcufgQmbkaLazfhLa8Acefg8Aal9hmbxdkka8Lcdthzcbh8AaghLinaoa8AaE2cdtfhYasc;WbfheaLhXa8LhQinaXaYaeydbcdtgKfIdbawaKfIdbNUdbaeclfheaXclfhXaQcufgQmbkaLazfhLa8Acefg8Aal9hmbkkascxfaHcdtfcualc8S2gealc;D;O;f8U0EgQcbyd:m:jjjbHjjjjbbgXBdbasaHcefgKBd2aXcbaez:ojjjbhqdndndna8LTmbascxfaKcdtfaQcbyd:m:jjjbHjjjjbbgvBdbasaHcdfgXBd2avcbaez:ojjjb8AascxfaXcdtfcua8Lal2gecltgXaecFFFFb0Ecbyd:m:jjjbHjjjjbbgiBdbasaHcifBd2aicbaXz:ojjjb8AadmexdkcbhvcbhiadTmekcbhYabhXindna3aXclfydbg8Acx2fgeIdba3aXydbgLcx2fgQIdbgI:tg8Ra3aXcwfydbgEcx2fgKIdlaQIdlg8S:tgRNaKIdbaI:tg8UaeIdla8S:tg8VN:tg8Wa8WNa8VaKIdwaQIdwg8X:tg8YNaRaeIdwa8X:tg8VN:tgRaRNa8Va8UNa8Ya8RN:tg8Ra8RNMM:rg8UJbbbb9ETmba8Wa8U:vh8Wa8Ra8U:vh8RaRa8U:vhRkaqaAaLcdtfydbc8S2fgeaRa8U:rg8UaRNNg8VaeIdbMUdbaea8Ra8Ua8RNg8ZNg8YaeIdlMUdlaea8Wa8Ua8WNg80Ng81aeIdwMUdwaea8ZaRNg8ZaeIdxMUdxaea80aRNgBaeIdzMUdzaea80a8RNg80aeIdCMUdCaeaRa8Ua8Wa8XNaRaINa8Sa8RNMM:mg8SNgINgRaeIdKMUdKaea8RaINg8RaeId3MUd3aea8WaINg8WaeIdaMUdaaeaIa8SNgIaeId8KMUd8Kaea8UaeIdyMUdyaqaAa8Acdtfydbc8S2fgea8VaeIdbMUdbaea8YaeIdlMUdlaea81aeIdwMUdwaea8ZaeIdxMUdxaeaBaeIdzMUdzaea80aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdyaqaAaEcdtfydbc8S2fgea8VaeIdbMUdbaea8YaeIdlMUdlaea81aeIdwMUdwaea8ZaeIdxMUdxaeaBaeIdzMUdzaea80aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdyaXcxfhXaYcifgYad6mbkcbhzabhLinabazcdtfh8AcbhXinaCa8AaXc;a1jjbfydbcdtfydbgQfRbbhedndnaCaLaXfydbgKfRbbgYc99fcFeGcpe0mbaec99fcFeGc;:e6mekdnaYcufcFeGce0mba8JaKcdtfydbaQ9hmekdnaecufcFeGce0mba8KaQcdtfydbaK9hmekdnaYcv2aefc:G1jjbfRbbTmbaAaQcdtfydbaAaKcdtfydb0mekJbbacJbbacJbbjZaecFeGceSEaYceSEh80dna3a8AaXc;e1jjbfydbcdtfydbcx2fgeIdwa3aKcx2fgYIdwg8S:tg8Wa3aQcx2fgEIdwa8S:tgRaRNaEIdbaYIdbg8X:tg8Ra8RNaEIdlaYIdlg8V:tg8Ua8UNMMgINa8WaRNaeIdba8X:tg81a8RNa8UaeIdla8V:tg8ZNMMg8YaRN:tg8Wa8WNa81aINa8Ya8RN:tgRaRNa8ZaINa8Ya8UN:tg8Ra8RNMM:rg8UJbbbb9ETmba8Wa8U:vh8Wa8Ra8U:vh8RaRa8U:vhRkaqaAaKcdtfydbc8S2fgeaRa80aI:rNg8UaRNNg8YaeIdbMUdbaea8Ra8Ua8RNg80Ng81aeIdlMUdlaea8Wa8Ua8WNgINg8ZaeIdwMUdwaea80aRNg80aeIdxMUdxaeaIaRNgBaeIdzMUdzaeaIa8RNg83aeIdCMUdCaeaRa8Ua8Wa8SNaRa8XNa8Va8RNMM:mg8SNgINgRaeIdKMUdKaea8RaINg8RaeId3MUd3aea8WaINg8WaeIdaMUdaaeaIa8SNgIaeId8KMUd8Kaea8UaeIdyMUdyaqaAaQcdtfydbc8S2fgea8YaeIdbMUdbaea81aeIdlMUdlaea8ZaeIdwMUdwaea80aeIdxMUdxaeaBaeIdzMUdzaea83aeIdCMUdCaeaRaeIdKMUdKaea8RaeId3MUd3aea8WaeIdaMUdaaeaIaeId8KMUd8Kaea8UaeIdyMUdykaXclfgXcx9hmbkaLcxfhLazcifgzad6mbka8LTmbcbhLinJbbbbh8Xa3abaLcdtfgeclfydbgEcx2fgXIdwa3aeydbgzcx2fgQIdwg8Z:tg8Ra8RNaXIdbaQIdbgB:tg8Wa8WNaXIdlaQIdlg83:tg8Ua8UNMMg80a3aecwfydbgHcx2fgeIdwa8Z:tgINa8Ra8RaINa8WaeIdbaB:tg8SNa8UaeIdla83:tg8VNMMgRN:tJbbbbJbbjZa80aIaINa8Sa8SNa8Va8VNMMg81NaRaRN:tg8Y:va8YJbbbb9BEg8YNhUa81a8RNaIaRN:ta8YNh85a80a8VNa8UaRN:ta8YNh86a81a8UNa8VaRN:ta8YNh87a80a8SNa8WaRN:ta8YNh88a81a8WNa8SaRN:ta8YNh89a8Wa8VNa8Sa8UN:tgRaRNa8UaINa8Va8RN:tgRaRNa8Ra8SNaIa8WN:tgRaRNMM:rJbbbZNhRagaza8L2gwcdtfhXagaHa8L2g8NcdtfhQagaEa8L2g5cdtfhKa8Z:mh8:a83:mhZaB:mhncbhYa8Lh8AJbbbbh8VJbbbbh8YJbbbbh80Jbbbbh81Jbbbbh8ZJbbbbhBJbbbbh83JbbbbhcJbbbbh9cinasc;WbfaYfgecwfaRa85aKIdbaXIdbgI:tg8UNaUaQIdbaI:tg8SNMg8RNUdbaeclfaRa87a8UNa86a8SNMg8WNUdbaeaRa89a8UNa88a8SNMg8UNUdbaecxfaRa8:a8RNaZa8WNaIana8UNMMMgINUdbaRa8Ra8WNNa81Mh81aRa8Ra8UNNa8ZMh8ZaRa8Wa8UNNaBMhBaRaIaINNa8XMh8XaRa8RaINNa8VMh8VaRa8WaINNa8YMh8YaRa8UaINNa80Mh80aRa8Ra8RNNa83Mh83aRa8Wa8WNNacMhcaRa8Ua8UNNa9cMh9caXclfhXaKclfhKaQclfhQaYczfhYa8Acufg8Ambkavazc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyavaEc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyavaHc8S2fgea9caeIdbMUdbaeacaeIdlMUdlaea83aeIdwMUdwaeaBaeIdxMUdxaea8ZaeIdzMUdzaea81aeIdCMUdCaea80aeIdKMUdKaea8YaeId3MUd3aea8VaeIdaMUdaaea8XaeId8KMUd8KaeaRaeIdyMUdyaiawcltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaia5cltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaia8Ncltfh8AcbhXa8LhKina8AaXfgeasc;WbfaXfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaLcifgLad6mbkkcbhQdndnamcwGgJmbJbbbbh8Vcbh9ecbhocbhhxekcbh9ea8Fcbyd:m:jjjbHjjjjbbhhascxfasyd2gecdtfahBdbasaecefgXBd2ascxfaXcdtfcuahalabadaAz:fjjjbgKcltaKcjjjjiGEcbyd:m:jjjbHjjjjbbgoBdbasaecdfBd2aoaKaha3alz:gjjjbJFFuuh8VaKTmbaoheaKhXinaeIdbgRa8Va8VaR9EEh8VaeclfheaXcufgXmbkaKh9ekasydlhTdnalTmbaTclfheaTydbhKaChXalhYcbhQincbaeydbg8AaK9RaXRbbcpeGEaQfhQaXcefhXaeclfhea8AhKaYcufgYmbkaQce4hQkcuadaQ9RcifgScx2aSc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbhDascxfasyd2g9hcdtfaDBdbasa9hcefgeBd2ascxfaecdtfcuaScdtaScFFFFi0Ecbyd:m:jjjbHjjjjbbgrBdbasa9hcdfgeBd2ascxfaecdtfa8Fcbyd:m:jjjbHjjjjbbgyBdbasa9hcifgeBd2ascxfaecdtfalcbyd:m:jjjbHjjjjbbg9iBdbasa9hclfg6Bd2axaxNa8PJbbjZamclGEgUaUN:vh9cJbbbbhcdnadak9nmbdnaSci6mba8Lclth9kaDcwfh0Jbbbbh83JbbbbhcinasclfabadalaAz:cjjjbabhzcbh8Ecbh8Finaba8FcdtfhHcbheindnaAazaefydbgQcdtgEfydbgYaAaHaec;q1jjbfydbcdtfydbgXcdtgwfydbg8ASmbaCaXfRbbgLcv2aCaQfRbbgKfc;G1jjbfRbbg5aKcv2aLfg8Nc;G1jjbfRbbg8MVcFeGTmbdna8AaY9nmba8Nc:G1jjbfRbbcFeGmekaKcufhYdnaKaL9hmbaYcFeGce0mba8JaEfydbaX9hmekdndnaKclSmbaLcl9hmekdnaYcFeGce0mba8JaEfydbaX9hmdkaLcufcFeGce0mba8KawfydbaQ9hmekaDa8Ecx2fgKaXaQa8McFeGgYEBdlaKaQaXaYEBdbaKaYa5Gcb9hBdwa8Ecefh8Ekaeclfgecx9hmbkdna8Fcifg8Fad9pmbazcxfhza8EcifaS9nmekka8ETmdcbhLinaqaAaDaLcx2fgKydbgYcdtgzfydbc8S2fgeIdwa3aKydlg8Acx2fgXIdwg8WNaeIdzaXIdbg8UNaeIdaMgRaRMMa8WNaeIdlaXIdlgINaeIdCa8WNaeId3MgRaRMMaINaeIdba8UNaeIdxaINaeIdKMgRaRMMa8UNaeId8KMMM:lhRJbbbbJbbjZaeIdyg8R:va8RJbbbb9BEh8RdndnaKydwgEmbJFFuuh8YxekJbbbbJbbjZaqaAa8Acdtfydbc8S2fgeIdyg8S:va8SJbbbb9BEaeIdwa3aYcx2fgXIdwg8SNaeIdzaXIdbg8XNaeIdaMg8Ya8YMMa8SNaeIdlaXIdlg8YNaeIdCa8SNaeId3Mg8Sa8SMMa8YNaeIdba8XNaeIdxa8YNaeIdKMg8Sa8SMMa8XNaeId8KMMM:lNh8Yka8RaRNh80dna8LTmbavaYc8S2fgQIdwa8WNaQIdza8UNaQIdaMgRaRMMa8WNaQIdlaINaQIdCa8WNaQId3MgRaRMMaINaQIdba8UNaQIdxaINaQIdKMgRaRMMa8UNaQId8KMMMhRaga8Aa8L2gHcdtfhXaiaYa8L2gwcltfheaQIdyh8Sa8LhQinaXIdbg8Ra8Ra8SNaecxfIdba8WaecwfIdbNa8UaeIdbNaIaeclfIdbNMMMg8Ra8RM:tNaRMhRaXclfhXaeczfheaQcufgQmbkdndnaEmbJbbbbh8Rxekava8Ac8S2fgQIdwa3aYcx2fgeIdwg8UNaQIdzaeIdbgINaQIdaMg8Ra8RMMa8UNaQIdlaeIdlg8SNaQIdCa8UNaQId3Mg8Ra8RMMa8SNaQIdbaINaQIdxa8SNaQIdKMg8Ra8RMMaINaQId8KMMMh8RagawcdtfhXaiaHcltfheaQIdyh8Xa8LhQinaXIdbg8Wa8Wa8XNaecxfIdba8UaecwfIdbNaIaeIdbNa8SaeclfIdbNMMMg8Wa8WM:tNa8RMh8RaXclfhXaeczfheaQcufgQmbka8R:lh8Rka80aR:lMh80a8Ya8RMh8YaCaYfRbbcd9hmbdna8Ka8Ja8Jazfydba8ASEaaazfydbgHcdtfydbgzcu9hmbaaa8AcdtfydbhzkavaHc8S2fgQIdwa3azcx2fgeIdwg8WNaQIdzaeIdbg8UNaQIdaMgRaRMMa8WNaQIdlaeIdlgINaQIdCa8WNaQId3MgRaRMMaINaQIdba8UNaQIdxaINaQIdKMgRaRMMa8UNaQId8KMMMhRagaza8L2gwcdtfhXaiaHa8L2g8NcltfheaQIdyh8Sa8LhQinaXIdbg8Ra8Ra8SNaecxfIdba8WaecwfIdbNa8UaeIdbNaIaeclfIdbNMMMg8Ra8RM:tNaRMhRaXclfhXaeczfheaQcufgQmbkdndnaEmbJbbbbh8Rxekavazc8S2fgQIdwa3aHcx2fgeIdwg8UNaQIdzaeIdbgINaQIdaMg8Ra8RMMa8UNaQIdlaeIdlg8SNaQIdCa8UNaQId3Mg8Ra8RMMa8SNaQIdbaINaQIdxa8SNaQIdKMg8Ra8RMMaINaQId8KMMMh8Raga8NcdtfhXaiawcltfheaQIdyh8Xa8LhQinaXIdbg8Wa8Wa8XNaecxfIdba8UaecwfIdbNaIaeIdbNa8SaeclfIdbNMMMg8Wa8WM:tNa8RMh8RaXclfhXaeczfheaQcufgQmbka8R:lh8Rka80aR:lMh80a8Ya8RMh8YkaKa80a8Ya80a8Y9FgeEUdwaKa8AaYaeaETVgeEBdlaKaYa8AaeEBdbaLcefgLa8E9hmbkasc;Wbfcbcj;qbz:ojjjb8Aa0hea8EhXinasc;WbfaeydbcA4cF8FGgQcFAaQcFA6EcdtfgQaQydbcefBdbaecxfheaXcufgXmbkcbhecbhXinasc;WbfaefgQydbhKaQaXBdbaKaXfhXaeclfgecj;qb9hmbkcbhea0hXinasc;WbfaXydbcA4cF8FGgQcFAaQcFA6EcdtfgQaQydbgQcefBdbaraQcdtfaeBdbaXcxfhXa8Eaecefge9hmbkadak9RgQci9Uh9mdnalTmbcbheayhXinaXaeBdbaXclfhXalaecefge9hmbkkcbh9na9icbalz:ojjjbh8FaQcO9Uh9oa9mce4h9pasydwh9qcbh8Mcbh5dninaDara5cdtfydbcx2fg8NIdwgRa9c9Emea8Ma9m9pmeJFFuuh8Rdna9pa8E9pmbaDara9pcdtfydbcx2fIdwJbb;aZNh8RkdnaRa8R9ETmbaRac9ETmba8Ma9o0mdkdna8FaAa8NydlgHcdtg9rfydbgKfg9sRbba8FaAa8Nydbgzcdtg9tfydbgefg9uRbbVmbaCazfRbbh9vdnaTaecdtfgXclfydbgQaXydbgXSmbaQaX9RhYa3aKcx2fhLa3aecx2fhEa9qaXcitfhecbhXcehwdnindnayaeydbcdtfydbgQaKSmbayaeclfydbcdtfydbg8AaKSmbaQa8ASmba3a8Acx2fg8AIdba3aQcx2fgQIdbg8W:tgRaEIdlaQIdlg8U:tg8XNaEIdba8W:tg8Ya8AIdla8U:tg8RN:tgIaRaLIdla8U:tg80NaLIdba8W:tg81a8RN:tg8UNa8RaEIdwaQIdwg8S:tg8ZNa8Xa8AIdwa8S:tg8WN:tg8Xa8RaLIdwa8S:tgBNa80a8WN:tg8RNa8Wa8YNa8ZaRN:tg8Sa8Wa81NaBaRN:tgRNMMaIaINa8Xa8XNa8Sa8SNMMa8Ua8UNa8Ra8RNaRaRNMMN:rJbbj8:N9FmdkaecwfheaXcefgXaY6hwaYaX9hmbkkawceGTmba9pcefh9pxekdndndndna9vc9:fPdebdkazheinayaecdtgefaHBdbaaaefydbgeaz9hmbxikkdna8Ka8Ja8Ja9tfydbaHSEaaa9tfydbgzcdtfydbgecu9hmbaaa9rfydbhekaya9tfaHBdbaehHkayazcdtfaHBdbka9uce86bba9sce86bba8NIdwgRacacaR9DEhca9ncefh9ncecda9vceSEa8Mfh8Mka5cefg5a8E9hmbkka9nTmddnalTmbcbh8AcbhEindnayaEcdtgefydbgQaESmbaAaQcdtfydbhzdnaEaAaefydb9hgHmbaqazc8S2fgeaqaEc8S2fgXIdbaeIdbMUdbaeaXIdlaeIdlMUdlaeaXIdwaeIdwMUdwaeaXIdxaeIdxMUdxaeaXIdzaeIdzMUdzaeaXIdCaeIdCMUdCaeaXIdKaeIdKMUdKaeaXId3aeId3MUd3aeaXIdaaeIdaMUdaaeaXId8KaeId8KMUd8KaeaXIdyaeIdyMUdyka8LTmbavaQc8S2fgeavaEc8S2gwfgXIdbaeIdbMUdbaeaXIdlaeIdlMUdlaeaXIdwaeIdwMUdwaeaXIdxaeIdxMUdxaeaXIdzaeIdzMUdzaeaXIdCaeIdCMUdCaeaXIdKaeIdKMUdKaeaXId3aeId3MUd3aeaXIdaaeIdaMUdaaeaXId8KaeId8KMUd8KaeaXIdyaeIdyMUdya9kaQ2hLaihXa8LhKinaXaLfgeaXa8AfgQIdbaeIdbMUdbaeclfgYaQclfIdbaYIdbMUdbaecwfgYaQcwfIdbaYIdbMUdbaecxfgeaQcxfIdbaeIdbMUdbaXczfhXaKcufgKmbkaHmbJbbbbJbbjZaqawfgeIdygR:vaRJbbbb9BEaeIdwa3azcx2fgXIdwgRNaeIdzaXIdbg8RNaeIdaMg8Wa8WMMaRNaeIdlaXIdlg8WNaeIdCaRNaeId3MgRaRMMa8WNaeIdba8RNaeIdxa8WNaeIdKMgRaRMMa8RNaeId8KMMM:lNgRa83a83aR9DEh83ka8Aa9kfh8AaEcefgEal9hmbkcbhXa8JheindnaeydbgQcuSmbdnaXayaQcdtgKfydbgQ9hmbcuhQa8JaKfydbgKcuSmbayaKcdtfydbhQkaeaQBdbkaeclfhealaXcefgX9hmbkcbhXa8KheindnaeydbgQcuSmbdnaXayaQcdtgKfydbgQ9hmbcuhQa8KaKfydbgKcuSmbayaKcdtfydbhQkaeaQBdbkaeclfhealaXcefgX9hmbkka83aca8LEh83cbhKabhecbhYindnayaeydbcdtfydbgXayaeclfydbcdtfydbgQSmbaXayaecwfydbcdtfydbg8ASmbaQa8ASmbabaKcdtfgLaXBdbaLcwfa8ABdbaLclfaQBdbaKcifhKkaecxfheaYcifgYad6mbkdndnaJTmbaKak9nmba8Va839FTmbcbhdabhecbhXindnaoahaeydbgQcdtfydbcdtfIdba839ETmbabadcdtfgYaQBdbaYclfaeclfydbBdbaYcwfaecwfydbBdbadcifhdkaecxfheaXcifgXaK6mbkJFFuuh8Va9eTmeaohea9ehXJFFuuhRinaeIdbg8RaRaRa8R9EEg8WaRa8Ra839EgQEhRa8Wa8VaQEh8VaeclfheaXcufgXmbxdkkaKhdkadak0mbxdkkasclfabadalaAz:cjjjbkdndnadak0mbadhXxekdnaJmbadhXxekdna8Va9c9FmbadhXxekina8VJbb;aZNgRa9caRa9c9DEh8WJbbbbhRdna9eTmbaohea9ehAinaeIdbg8RaRa8Ra8W9FEaRa8RaR9EEhRaeclfheaAcufgAmbkkcbhXabhecbhAindnaoahaeydbgQcdtfydbcdtfIdba8W9ETmbabaXcdtfgKaQBdbaKclfaeclfydbBdbaKcwfaecwfydbBdbaXcifhXkaecxfheaAcifgAad6mbkJFFuuh8Vdna9eTmbaohea9ehAJFFuuh8RinaeIdbg8Ua8Ra8Ra8U9EEgIa8Ra8Ua8W9EgQEh8RaIa8VaQEh8VaeclfheaAcufgAmbkkdnaXad9hmbadhXxdkaRacacaR9DEhcaXak9nmeaXhda8Va9c9FmbkkdnamcjjjjlGTmbaOmbaXTmbcbh8AabheinaCaeydbgKfRbbc3thLaecwfgEydbhAdndna8JaKcdtgHfydbaeclfgzydbgQSmbcbhYa8KaQcdtfydbaK9hmekcjjjj94hYkaeaLaYVaKVBdbaCaQfRbbc3thLdndna8JaQcdtfydbaASmbcbhYa8KaAcdtfydbaQ9hmekcjjjj94hYkazaLaYVaQVBdbaCaAfRbbc3thYdndna8JaAcdtfydbaKSmbcbhQa8KaHfydbaA9hmekcjjjj94hQkaEaYaQVaAVBdbaecxfhea8Acifg8AaX6mbkkdnaOTmbaXTmbaXheinabaOabydbcdtfydbBdbabclfhbaecufgembkkdnaPTmbaPaUac:rNUdbka9hcdtascxffcxfhednina6Tmeaeydbcbyd1:jjjbH:bjjjbbaec98fhea6cufh6xbkkasc;W;qbf8KjjjjbaXk;Yieouabydlhvabydbclfcbaicdtz:ojjjbhoadci9UhrdnadTmbdnalTmbaehwadhDinaoalawydbcdtfydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbxdkkaehwadhDinaoawydbcdtfgqaqydbcefBdbawclfhwaDcufgDmbkkdnaiTmbcbhDaohwinawydbhqawaDBdbawclfhwaqaDfhDaicufgimbkkdnadci6mbinaecwfydbhwaeclfydbhDaeydbhidnalTmbalawcdtfydbhwalaDcdtfydbhDalaicdtfydbhikavaoaicdtfgqydbcitfaDBdbavaqydbcitfawBdlaqaqydbcefBdbavaoaDcdtfgqydbcitfawBdbavaqydbcitfaiBdlaqaqydbcefBdbavaoawcdtfgwydbcitfaiBdbavawydbcitfaDBdlawawydbcefBdbaecxfhearcufgrmbkkabydbcbBdbk:todDue99aicd4aifhrcehwinawgDcethwaDar6mbkcuaDcdtgraDcFFFFi0Ecbyd:m:jjjbHjjjjbbhwaoaoyd9GgqcefBd9GaoaqcdtfawBdbawcFearz:ojjjbhkdnaiTmbalcd4hlaDcufhxcbhminamhDdnavTmbavamcdtfydbhDkcbadaDal2cdtfgDydlgwawcjjjj94SEgwcH4aw7c:F:b:DD2cbaDydbgwawcjjjj94SEgwcH4aw7c;D;O:B8J27cbaDydwgDaDcjjjj94SEgDcH4aD7c:3F;N8N27axGhwamcdthPdndndnavTmbakawcdtfgrydbgDcuSmeadavaPfydbal2cdtfgsIdbhzcehqinaqhrdnadavaDcdtfydbal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmlkarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbxdkkakawcdtfgrydbgDcuSmbadamal2cdtfgsIdbhzcehqinaqhrdnadaDal2cdtfgqIdbaz9CmbaqIdlasIdl9CmbaqIdwasIdw9BmikarcefhqakawarfaxGgwcdtfgrydbgDcu9hmbkkaramBdbamhDkabaPfaDBdbamcefgmai9hmbkkakcbyd1:jjjbH:bjjjbbaoaoyd9GcufBd9GdnaeTmbaiTmbcbhDaehwinawaDBdbawclfhwaiaDcefgD9hmbkcbhDaehwindnaDabydbgrSmbawaearcdtfgrydbBdbaraDBdbkawclfhwabclfhbaiaDcefgD9hmbkkk;Qodvuv998Jjjjjbca9Rgvczfcwfcbyd11jjbBdbavcb8Pdj1jjb83izavcwfcbydN1jjbBdbavcb8Pd:m1jjb83ibdnadTmbaicd4hodnabmbdnalTmbcbhrinaealarcdtfydbao2cdtfhwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxikkaocdthrcbhwincbhiinavczfaifgDaeaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkaearfheawcefgwad9hmbxdkkdnalTmbcbhrinabarcx2fgiaealarcdtfydbao2cdtfgwIdbUdbaiawIdlUdlaiawIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkarcefgrad9hmbxdkkaocdthlcbhraehwinabarcx2fgiaearao2cdtfgDIdbUdbaiaDIdlUdlaiaDIdwUdwcbhiinavczfaifgDawaifIdbgqaDIdbgkakaq9EEUdbavaifgDaqaDIdbgkakaq9DEUdbaiclfgicx9hmbkawalfhwarcefgrad9hmbkkJbbbbavIdbavIdzgk:tgqaqJbbbb9DEgqavIdlavIdCgx:tgmamaq9DEgqavIdwavIdKgm:tgPaPaq9DEhPdnabTmbadTmbJbbbbJbbjZaP:vaPJbbbb9BEhqinabaqabIdbak:tNUdbabclfgvaqavIdbax:tNUdbabcwfgvaqavIdbam:tNUdbabcxfhbadcufgdmbkkaPk:ZlewudnaeTmbcbhvabhoinaoavBdbaoclfhoaeavcefgv9hmbkkdnaiTmbcbhrinadarcdtfhwcbhDinalawaDcdtgvc;a1jjbfydbcdtfydbcdtfydbhodnabalawavfydbcdtfydbgqcdtfgkydbgvaqSmbinakabavgqcdtfgxydbgvBdbaxhkaqav9hmbkkdnabaocdtfgkydbgvaoSmbinakabavgocdtfgxydbgvBdbaxhkaoav9hmbkkdnaqaoSmbabaqaoaqao0Ecdtfaqaoaqao6EBdbkaDcefgDci9hmbkarcifgrai6mbkkdnaembcbskcbhxindnalaxcdtgvfydbax9hmbaxhodnabavfgDydbgvaxSmbaDhqinaqabavgocdtfgkydbgvBdbakhqaoav9hmbkkaDaoBdbkaxcefgxae9hmbkcbhvabhocbhkindndnavalydbgq9hmbdnavaoydbgq9hmbaoakBdbakcefhkxdkaoabaqcdtfydbBdbxekaoabaqcdtfydbBdbkaoclfhoalclfhlaeavcefgv9hmbkakk;Jiilud99duabcbaecltz:ojjjbhvdnalTmbadhoaihralhwinarcwfIdbhDarclfIdbhqavaoydbcltfgkarIdbakIdbMUdbakclfgxaqaxIdbMUdbakcwfgxaDaxIdbMUdbakcxfgkakIdbJbbjZMUdbaoclfhoarcxfhrawcufgwmbkkdnaeTmbavhraehkinarcxfgoIdbhDaocbBdbararIdbJbbbbJbbjZaD:vaDJbbbb9BEgDNUdbarclfgoaDaoIdbNUdbarcwfgoaDaoIdbNUdbarczfhrakcufgkmbkkdnalTmbinavadydbcltfgrcxfgkaicwfIdbarcwfIdb:tgDaDNaiIdbarIdb:tgDaDNaiclfIdbarclfIdb:tgDaDNMMgDakIdbgqaqaD9DEUdbadclfhdaicxfhialcufglmbkkdnaeTmbavcxfhrinabarIdbUdbarczfhrabclfhbaecufgembkkk8MbabaeadaialavcbcbcbcbcbaoarawaDz:bjjjbk8MbabaeadaialavaoarawaDaqakaxamaPz:bjjjbk:DCoDud99rue99iul998Jjjjjbc;Wb9Rgw8KjjjjbdndnarmbcbhDxekawcxfcbc;Kbz:ojjjb8Aawcuadcx2adc;v:Q;v:Qe0Ecbyd:m:jjjbHjjjjbbgqBdxawceBd2aqaeadaicbz:ejjjb8AawcuadcdtadcFFFFi0Egkcbyd:m:jjjbHjjjjbbgxBdzawcdBd2adcd4adfhmceheinaegicetheaiam6mbkcbhPawcuaicdtgsaicFFFFi0Ecbyd:m:jjjbHjjjjbbgzBdCawciBd2dndnar:ZgH:rJbbbZMgO:lJbbb9p9DTmbaO:Ohexekcjjjj94hekaicufhAc:bwhmcbhCadhXcbhQinaChLaeamgKcufaeaK9iEaPgDcefaeaD9kEhYdndnadTmbaYcuf:YhOaqhiaxheadhmindndnaiIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdbaONJbbbZMg8A:lJbbb9p9DTmba8A:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ojjjbh3cbh5cbhPindna3axaPcdtfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbaeaCSmbcehiina3amaifaAGgmcdtfgEydbgecuSmeaicefhiaeaC9hmbkkaEaCBdba5aecuSfh5aPcefgPad9hmbxdkkazcFeasz:ojjjb8Acbh5kaDaYa5ar0giEhPaLa5aiEhCdna5arSmbaYaKaiEgmaP9Rcd9imbdndnaQcl0mbdnaX:ZgOaL:Zg8A:taY:Yg8EaD:Y:tg8Fa8EaK:Y:tgaa5:ZghaH:tNNNaOaH:taaNa8Aah:tNa8AaH:ta8FNahaO:tNM:va8EMJbbbZMgO:lJbbb9p9DTmbaO:Ohexdkcjjjj94hexekaPamfcd9Theka5aXaiEhXaQcefgQcs9hmekkdndnaCmbcihicbhDxekcbhiawakcbyd:m:jjjbHjjjjbbg5BdKawclBd2aPcuf:Yh8AdndnadTmbaqhiaxheadhmindndnaiIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhCxekcjjjj94hCkaCcCthCdndnaiclfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaEcqtaCVhCdndnaicwfIdba8ANJbbbZMgO:lJbbb9p9DTmbaO:OhExekcjjjj94hEkaeaCaEVBdbaicxfhiaeclfheamcufgmmbkazcFeasz:ojjjbh3cbhDcbhYindndndna3axaYcdtgKfydbgCcm4aC7c:v;t;h;Ev2gics4ai7aAGgmcdtfgEydbgecuSmbcehiinaxaecdtgefydbaCSmdamaifheaicefhia3aeaAGgmcdtfgEydbgecu9hmbkkaEaYBdbaDhiaDcefhDxeka5aefydbhika5aKfaiBdbaYcefgYad9hmbkcuaDc32giaDc;j:KM;jb0EhexekazcFeasz:ojjjb8AcbhDcbhekawaecbyd:m:jjjbHjjjjbbgeBd3awcvBd2aecbaiz:ojjjbhEavcd4hKdnadTmbdnalTmbaKcdth3a5hCaqhealhmadhAinaEaCydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiamIdbaiIdxMUdxaiamclfIdbaiIdzMUdzaiamcwfIdbaiIdCMUdCaiaiIdKJbbjZMUdKaCclfhCaecxfheama3fhmaAcufgAmbxdkka5hmaqheadhCinaEamydbc32fgiaeIdbaiIdbMUdbaiaeclfIdbaiIdlMUdlaiaecwfIdbaiIdwMUdwaiaiIdxJbbbbMUdxaiaiIdzJbbbbMUdzaiaiIdCJbbbbMUdCaiaiIdKJbbjZMUdKamclfhmaecxfheaCcufgCmbkkdnaDTmbaEhiaDheinaiaiIdbJbbbbJbbjZaicKfIdbgO:vaOJbbbb9BEgONUdbaiclfgmaOamIdbNUdbaicwfgmaOamIdbNUdbaicxfgmaOamIdbNUdbaiczfgmaOamIdbNUdbaicCfgmaOamIdbNUdbaic3fhiaecufgembkkcbhCawcuaDcdtgYaDcFFFFi0Egicbyd:m:jjjbHjjjjbbgeBdaawcoBd2awaicbyd:m:jjjbHjjjjbbg3Bd8KaecFeaYz:ojjjbhxdnadTmbJbbjZJbbjZa8A:vaPceSEaoNgOaONh8AaKcdthPalheina8Aaec;81jjbalEgmIdwaEa5ydbgAc32fgiIdC:tgOaONamIdbaiIdx:tgOaONamIdlaiIdz:tgOaONMMNaqcwfIdbaiIdw:tgOaONaqIdbaiIdb:tgOaONaqclfIdbaiIdl:tgOaONMMMhOdndnaxaAcdtgifgmydbcuSmba3aifIdbaO9ETmekamaCBdba3aifaOUdbka5clfh5aqcxfhqaeaPfheadaCcefgC9hmbkkabaxaYz:njjjb8AcrhikaicdthiinaiTmeaic98fgiawcxffydbcbyd1:jjjbH:bjjjbbxbkkawc;Wbf8KjjjjbaDk:Ydidui99ducbhi8Jjjjjbca9Rglczfcwfcbyd11jjbBdbalcb8Pdj1jjb83izalcwfcbydN1jjbBdbalcb8Pd:m1jjb83ibdndnaembJbbjFhvJbbjFhoJbbjFhrxekadcd4cdthwincbhdinalczfadfgDabadfIdbgvaDIdbgoaoav9EEUdbaladfgDavaDIdbgoaoav9DEUdbadclfgdcx9hmbkabawfhbaicefgiae9hmbkalIdwalIdK:thralIdlalIdC:thoalIdbalIdz:thvkJbbbbavavJbbbb9DEgvaoaoav9DEgvararav9DEk9DeeuabcFeaicdtz:ojjjbhlcbhbdnadTmbindnalaeydbcdtfgiydbcu9hmbaiabBdbabcefhbkaeclfheadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcifc98GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd:q:jjjbgeabcrfc94GfgbBd:q:jjjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd:q:jjjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd:q:jjjbfgdBd:q:jjjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akkk:Iedbcjwk1eFFuuFFuuFFuuFFuFFFuFFFuFbbbbbbbbeeebeebebbeeebebbbbbebebbbbbbbbbebbbdbbbbbbbebbbebbbdbbbbbbbbbbbeeeeebebbebbebebbbeebbbbbbbbbbbbbbbbbbbbbc1Dkxebbbdbbb:GNbb",t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(e),{}).then(function(m){n=m.instance,n.exports.__wasm_call_ctors()});function o(m){for(var _=new Uint8Array(m.length),y=0;y<m.length;++y){var C=m.charCodeAt(y);_[y]=C>96?C-97:C>64?C-39:C+4}for(var E=0,y=0;y<m.length;++y)_[E++]=_[y]<60?t[_[y]]:(_[y]-60)*64+_[++y];return _.buffer.slice(0,E)}function r(m){if(!m)throw new Error("Assertion failed")}function s(m){return new Uint8Array(m.buffer,m.byteOffset,m.byteLength)}function a(m,_,y){var C=n.exports.sbrk,E=C(_.length*4),I=C(y*4),b=new Uint8Array(n.exports.memory.buffer),S=s(_);b.set(S,E);var B=m(I,E,_.length,y);b=new Uint8Array(n.exports.memory.buffer);var v=new Uint32Array(y);new Uint8Array(v.buffer).set(b.subarray(I,I+y*4)),S.set(b.subarray(E,E+_.length*4)),C(E-C(0));for(var P=0;P<_.length;++P)_[P]=v[_[P]];return[v,B]}function c(m){for(var _=0,y=0;y<m.length;++y){var C=m[y];_=_<C?C:_}return _}function u(m,_,y,C,E,I,b,S,B){var v=n.exports.sbrk,P=v(4),N=v(y*4),L=v(E*I),p=v(y*4),x=new Uint8Array(n.exports.memory.buffer);x.set(s(C),L),x.set(s(_),p);var T=m(N,p,y,L,E,I,b,S,B,P);x=new Uint8Array(n.exports.memory.buffer);var w=new Uint32Array(T);s(w).set(x.subarray(N,N+T*4));var M=new Float32Array(1);return s(M).set(x.subarray(P,P+4)),v(P-v(0)),[w,M[0]]}function f(m,_,y,C,E,I,b,S,B,v,P,N,L){var p=n.exports.sbrk,x=p(4),T=p(y*4),w=p(E*I),M=p(E*S),O=p(B.length*4),U=p(y*4),Q=v?p(E):0,z=new Uint8Array(n.exports.memory.buffer);z.set(s(C),w),z.set(s(b),M),z.set(s(B),O),z.set(s(_),U),v&&z.set(s(v),Q);var F=m(T,U,y,w,E,I,M,S,O,B.length,Q,P,N,L,x);z=new Uint8Array(n.exports.memory.buffer);var H=new Uint32Array(F);s(H).set(z.subarray(T,T+F*4));var W=new Float32Array(1);return s(W).set(z.subarray(x,x+4)),p(x-p(0)),[H,W[0]]}function h(m,_,y,C){var E=n.exports.sbrk,I=E(y*C),b=new Uint8Array(n.exports.memory.buffer);b.set(s(_),I);var S=m(I,y,C);return E(I-E(0)),S}function A(m,_,y,C,E,I,b,S){var B=n.exports.sbrk,v=B(S*4),P=B(y*C),N=B(y*I),L=new Uint8Array(n.exports.memory.buffer);L.set(s(_),P),E&&L.set(s(E),N);var p=m(v,P,y,C,N,I,b,S);L=new Uint8Array(n.exports.memory.buffer);var x=new Uint32Array(p);return s(x).set(L.subarray(v,v+p*4)),B(v-B(0)),x}var g={LockBorder:1,Sparse:2,ErrorAbsolute:4,Prune:8,_InternalDebug:1<<30};return{ready:i,supported:!0,compactMesh:function(m){r(m instanceof Uint32Array||m instanceof Int32Array||m instanceof Uint16Array||m instanceof Int16Array),r(m.length%3==0);var _=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m);return a(n.exports.meshopt_optimizeVertexFetchRemap,_,c(m)+1)},simplify:function(m,_,y,C,E,I){r(m instanceof Uint32Array||m instanceof Int32Array||m instanceof Uint16Array||m instanceof Int16Array),r(m.length%3==0),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3),r(C>=0&&C<=m.length),r(C%3==0),r(E>=0);for(var b=0,S=0;S<(I?I.length:0);++S)r(I[S]in g),b|=g[I[S]];var B=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m),v=u(n.exports.meshopt_simplify,B,m.length,_,_.length/y,y*4,C,E,b);return v[0]=m instanceof Uint32Array?v[0]:new m.constructor(v[0]),v},simplifyWithAttributes:function(m,_,y,C,E,I,b,S,B,v){r(m instanceof Uint32Array||m instanceof Int32Array||m instanceof Uint16Array||m instanceof Int16Array),r(m.length%3==0),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3),r(C instanceof Float32Array),r(C.length%E==0),r(E>=0),r(b==null||b instanceof Uint8Array),r(b==null||b.length==_.length/y),r(S>=0&&S<=m.length),r(S%3==0),r(B>=0),r(Array.isArray(I)),r(E>=I.length),r(I.length<=32);for(var P=0;P<I.length;++P)r(I[P]>=0);for(var N=0,P=0;P<(v?v.length:0);++P)r(v[P]in g),N|=g[v[P]];var L=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m),p=f(n.exports.meshopt_simplifyWithAttributes,L,m.length,_,_.length/y,y*4,C,E*4,new Float32Array(I),b?new Uint8Array(b):null,S,B,N);return p[0]=m instanceof Uint32Array?p[0]:new m.constructor(p[0]),p},getScale:function(m,_){return r(m instanceof Float32Array),r(m.length%_==0),r(_>=3),h(n.exports.meshopt_simplifyScale,m,m.length/_,_*4)},simplifyPoints:function(m,_,y,C,E,I){return r(m instanceof Float32Array),r(m.length%_==0),r(_>=3),r(y>=0&&y<=m.length/_),C?(r(C instanceof Float32Array),r(C.length%E==0),r(E>=3),r(m.length/_==C.length/E),A(n.exports.meshopt_simplifyPoints,m,m.length/_,_*4,C,E*4,I,y)):A(n.exports.meshopt_simplifyPoints,m,m.length/_,_*4,void 0,0,0,y)}}}();var Ven=function(){var e="b9H79TebbbeVx9Geueu9Geub9Gbb9Giuuueu9Gmuuuuuuuuuuu9999eu9Gvuuuuueu9Gwuuuuuuuub9Gxuuuuuuuuuuuueu9Gkuuuuuuuuuu99eu9Gouuuuuub9Gruuuuuuub9GluuuubiOHdilvorwDqqkbiibeilve9Weiiviebeoweuec;G:Odkr:Yewo9TW9T9VV95dbH9F9F939H79T9F9J9H229F9Jt9VV7bb8A9TW79O9V9Wt9F9I919P29K9nW79O2Wt79c9V919U9KbeX9TW79O9V9Wt9F9I919P29K9nW79O2Wt7bo39TW79O9V9Wt9F9J9V9T9W91tWJ2917tWV9c9V919U9K7br39TW79O9V9Wt9F9J9V9T9W91tW9nW79O2Wt9c9V919U9K7bDL9TW79O9V9Wt9F9V9Wt9P9T9P96W9nW79O2Wtbql79IV9RbkDwebcekdsPq;Q9BHdbkIbabaec9:fgefcufae9Ugeabci9Uadfcufad9Ugbaeab0Ek:w8KDPue99eux99dui99euo99iu8Jjjjjbc:WD9Rgm8KjjjjbdndnalmbcbhPxekamc:Cwfcbc;Kbz:njjjb8Adndnalcb9imbaoal9nmbamcuaocdtaocFFFFi0Egscbyd;y1jjbHjjjjbbgzBd:CwamceBd;8wamascbyd;y1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;y1jjbHjjjjbbgOBd:KwamciBd;8waihsalhAinazasydbcdtfcbBdbasclfhsaAcufgAmbkaihsalhAinazasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkaihsalhCcbhXindnazasydbcdtgQfgAydbcb9imbaHaQfaXBdbaAaAydbgQcjjjj94VBdbaQaXfhXkasclfhsaCcufgCmbkalci9UhLdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhXaHaAydbcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaXcdtfgXaXydbgXcefBdbaOaXcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaihsalhAindnazasydbcdtgCfgXydbgQcu9kmbaXaQcFFFFrGgQBdbaHaCfgCaCydbaQ9RBdbkasclfhsaAcufgAmbxdkkamcuaocdtgsaocFFFFi0EgAcbyd;y1jjbHjjjjbbgzBd:CwamceBd;8wamaAcbyd;y1jjbHjjjjbbgHBd:GwamcdBd;8wamcualcdtalcFFFFi0Ecbyd;y1jjbHjjjjbbgOBd:KwamciBd;8wazcbasz:njjjbhXalci9UhLaihsalhAinaXasydbcdtfgCaCydbcefBdbasclfhsaAcufgAmbkdnaoTmbcbhsaHhAaXhCaohQinaAasBdbaAclfhAaCydbasfhsaCclfhCaQcufgQmbkkdnalci6mbcbhsaihAinaAcwfydbhCaAclfydbhQaHaAydbcdtfgKaKydbgKcefBdbaOaKcdtfasBdbaHaQcdtfgQaQydbgQcefBdbaOaQcdtfasBdbaHaCcdtfgCaCydbgCcefBdbaOaCcdtfasBdbaAcxfhAaLascefgs9hmbkkaoTmbcbhsaohAinaHasfgCaCydbaXasfydb9RBdbasclfhsaAcufgAmbkkamaLcbyd;y1jjbHjjjjbbgsBd:OwamclBd;8wascbaLz:njjjbhYamcuaLcK2alcjjjjd0Ecbyd;y1jjbHjjjjbbg8ABd:SwamcvBd;8wJbbbbhEdnalci6g3mbarcd4hKaihAa8AhsaLhrJbbbbh5inavaAclfydbaK2cdtfgCIdlh8EavaAydbaK2cdtfgXIdlhEavaAcwfydbaK2cdtfgQIdlh8FaCIdwhaaXIdwhhaQIdwhgasaCIdbg8JaXIdbg8KMaQIdbg8LMJbbnn:vUdbasclfaXIdlaCIdlMaQIdlMJbbnn:vUdbaQIdwh8MaCIdwh8NaXIdwhyascxfa8EaE:tg8Eagah:tggNa8FaE:tg8Faaah:tgaN:tgEJbbbbJbbjZa8Ja8K:tg8Ja8FNa8La8K:tg8Ka8EN:tghahNaEaENaaa8KNaga8JN:tgEaENMM:rg8K:va8KJbbbb9BEg8ENUdbasczfaEa8ENUdbascCfaha8ENUdbascwfa8Maya8NMMJbbnn:vUdba5a8KMh5aAcxfhAascKfhsarcufgrmbka5aL:Z:vJbbbZNhEkamcuaLcdtalcFFFF970Ecbyd;y1jjbHjjjjbbgCBd:WwamcoBd;8waEaq:ZNhEdna3mbcbhsaChAinaAasBdbaAclfhAaLascefgs9hmbkkaE:rhhcuh8PamcuaLcltalcFFFFd0Ecbyd;y1jjbHjjjjbbgIBd:0wamcrBd;8wcbaIa8AaCaLz:djjjb8AJFFuuhyJFFuuh8RJFFuuh8Sdnalci6gXmbJFFuuh8Sa8AhsaLhAJFFuuh8RJFFuuhyinascwfIdbgEayayaE9EEhyasclfIdbgEa8Ra8RaE9EEh8RasIdbgEa8Sa8SaE9EEh8SascKfhsaAcufgAmbkkahJbbbZNhgamaocetgscuaocu9kEcbyd;y1jjbHjjjjbbgABd:4waAcFeasz:njjjbhCdnaXmbcbhAJFFuuhEa8Ahscuh8PinascwfIdbay:tghahNasIdba8S:tghahNasclfIdba8R:tghahNMM:rghaEa8PcuSahaE9DVgXEhEaAa8PaXEh8PascKfhsaLaAcefgA9hmbkkamczfcbcjwz:njjjb8Aamcwf9cb83ibam9cb83ibagaxNhRJbbjZak:th8Ncbh8UJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80cbh81cbhPinJbbbbhEdna8UTmbJbbjZa8U:Z:vhEkJbbbbhhdna80a80Na8Ya8YNa8Za8ZNMMg8KJbbbb9BmbJbbjZa8K:r:vhhka8XaENh5a8WaENh8Fa8VaENhaa8PhQdndndndndna8UaPVTmbamydwgBTmea80ahNh8Ja8ZahNh8La8YahNh8Maeamydbcdtfh83cbh3JFFuuhEcvhXcuhQindnaza83a3cdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAindndnaCaiaAydbgKcx2fgsclfydbgrcetf8Vebcs4aCasydbgLcetf8Vebcs4faCascwfydbglcetf8Vebcs4fgombcbhsxekcehsazaLcdtfydbgLceSmbcehsazarcdtfydbgrceSmbcehsazalcdtfydbglceSmbdnarcdSaLcdSfalcdSfcd6mbaocefhsxekaocdfhskdnasaX9kmba8AaKcK2fgLIdwa5:thhaLIdla8F:th8KaLIdbaa:th8EdndnakJbbbb9DTmba8E:lg8Ea8K:lg8Ka8Ea8K9EEg8Kah:lgha8Kah9EEag:vJbbjZMhhxekahahNa8Ea8ENa8Ka8KNMM:rag:va8NNJbbjZMJ9VO:d86JbbjZaLIdCa8JNaLIdxa8MNa8LaLIdzNMMakN:tghahJ9VO:d869DENhhkaKaQasaX6ahaE9DVgLEhQasaXaLEhXahaEaLEhEkaAclfhAavcufgvmbkka3cefg3aB9hmbkkaQcu9hmekama5Ud:ODama8FUd:KDamaaUd:GDamcuBd:qDamcFFF;7rBdjDaIcba8AaYamc:GDfakJbbbb9Damc:qDfamcjDfz:ejjjbamyd:qDhQdndnaxJbbbb9ETmba8UaD6mbaQcuSmeceh3amIdjDaR9EmixdkaQcu9hmekdna8UTmbdnamydlgza8Uci2fgsciGTmbadasfcba8Uazcu7fciGcefz:njjjb8AkabaPcltfgzam8Pib83dbazcwfamcwf8Pib83dbaPcefhPkc3hzinazc98Smvamc:Cwfazfydbcbyd;u1jjbH:bjjjbbazc98fhzxbkkcbh3a8Uaq9pmbamydwaCaiaQcx2fgsydbcetf8Vebcs4aCascwfydbcetf8Vebcs4faCasclfydbcetf8Vebcs4ffaw9nmekcbhscbhAdna81TmbcbhAamczfhXinamczfaAcdtfaXydbgLBdbaXclfhXaAaYaLfRbbTfhAa81cufg81mbkkamydwhlamydbhXam9cu83i:GDam9cu83i:ODam9cu83i:qDam9cu83i:yDaAc;8eaAclfc:bd6Eh81inamcjDfasfcFFF;7rBdbasclfgscz9hmbka81cdthBdnalTmbaeaXcdtfhocbhrindnazaoarcdtfydbcdtgsfydbgvTmbaOaHasfydbcdtfhAcuhLcuhsinazaiaAydbgKcx2fgXclfydbcdtfydbazaXydbcdtfydbfazaXcwfydbcdtfydbfgXasaXas6gXEhsaKaLaXEhLaAclfhAavcufgvmbkaLcuSmba8AaLcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEcbhAindndnasamc:qDfaAfgvydbgX6mbasaX9hmeaEamcjDfaAfIdb9FTmekavasBdbamc:GDfaAfaLBdbamcjDfaAfaEUdbxdkaAclfgAcz9hmbkkarcefgral9hmbkkamczfaBfhLcbhscbhAindnamc:GDfasfydbgXcuSmbaLaAcdtfaXBdbaAcefhAkasclfgscz9hmbkaAa81fg81TmbJFFuuhhcuhKamczfhsa81hvcuhLina8AasydbgXcK2fgAIdway:tgEaENaAIdba8S:tgEaENaAIdla8R:tgEaENMM:rhEdndnazaiaXcx2fgAclfydbcdtfydbazaAydbcdtfydbfazaAcwfydbcdtfydbfgAaL6mbaAaL9hmeaEah9DTmekaEhhaAhLaXhKkasclfhsavcufgvmbkaKcuSmbaKhQkdnamaiaQcx2fgrydbarclfydbarcwfydbaCabaeadaPawaqa3z:fjjjbTmbaPcefhPJbbbbh8VJbbbbh8WJbbbbh8XJbbbbh8YJbbbbh8ZJbbbbh80kcbhXinaOaHaraXcdtfydbcdtgAfydbcdtfgKhsazaAfgvydbgLhAdnaLTmbdninasydbaQSmeasclfhsaAcufgATmdxbkkasaKaLcdtfc98fydbBdbavavydbcufBdbkaXcefgXci9hmbka8AaQcK2fgsIdbhEasIdlhhasIdwh8KasIdxh8EasIdzh5asIdCh8FaYaQfce86bba80a8FMh80a8Za5Mh8Za8Ya8EMh8Ya8Xa8KMh8Xa8WahMh8Wa8VaEMh8Vamydxh8Uxbkkamc:WDf8KjjjjbaPk;Vvivuv99lu8Jjjjjbca9Rgv8Kjjjjbdndnalcw0mbaiydbhoaeabcitfgralcdtcufBdlaraoBdbdnalcd6mbaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkkalabfhrxekcbhDavczfcwfcbBdbav9cb83izavcwfcbBdbav9cb83ibJbbjZhqJbbjZhkinadaiaDcdtfydbcK2fhwcbhrinavczfarfgoawarfIdbgxaoIdbgm:tgPakNamMgmUdbavarfgoaPaxam:tNaoIdbMUdbarclfgrcx9hmbkJbbjZaqJbbjZMgq:vhkaDcefgDal9hmbkcbhoadcbcecdavIdlgxavIdwgm9GEgravIdbgPam9GEaraPax9GEgscdtgrfhzavczfarfIdbhxaihralhwinaiaocdtfgDydbhHaDarydbgOBdbaraHBdbarclfhraoazaOcK2fIdbax9Dfhoawcufgwmbkaeabcitfhrdndnaocv6mbaoalc98f6mekaraiydbBdbaralcdtcufBdlaiclfhoalcufhwarcxfhrinaoydbhDarcuBdbarc98faDBdbarcwfhraoclfhoawcufgwmbkalabfhrxekaraxUdbararydlc98GasVBdlabcefaeadaiaoz:djjjbhwararydlciGawabcu7fcdtVBdlawaeadaiaocdtfalao9Rz:djjjbhrkavcaf8Kjjjjbark:;idiud99dndnabaecitfgwydlgDciGgqciSmbinabcbaDcd4gDalaqcdtfIdbawIdb:tgkJbbbb9FEgwaecefgefadaialavaoarz:ejjjbak:larIdb9FTmdabawaD7aefgecitfgwydlgDciGgqci9hmbkkabaecitfgeclfhbdnavmbcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdwalIdw:tgkakNaqIdbalIdb:tgkakNaqIdlalIdl:tgkakNMM:rgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbxdkkcuhwindnaiaeydbgDfRbbmbadaDcK2fgqIdbalIdb:t:lgkaqIdlalIdl:t:lgxakax9EEgkaqIdwalIdw:t:lgxakax9EEgkarIdb9DTmbarakUdbaoaDBdbkaecwfheawcefgwabydbcd46mbkkk;llevudnabydwgxaladcetfgm8Vebcs4alaecetfgP8Vebgscs4falaicetfgz8Vebcs4ffaD0abydxaq9pVakVgDce9hmbavawcltfgxab8Pdb83dbaxcwfabcwfgx8Pdb83dbdnaxydbgqTmbaoabydbcdtfhxaqhsinalaxydbcetfcFFi87ebaxclfhxascufgsmbkkdnabydxglci2gsabydlgxfgkciGTmbarakfcbalaxcu7fciGcefz:njjjb8Aabydxci2hsabydlhxabydwhqkab9cb83dwababydbaqfBdbabascifc98GaxfBdlaP8Vebhscbhxkdnascztcz91cu9kmbabaxcefBdwaPax87ebaoabydbcdtfaxcdtfaeBdbkdnam8Uebcu9kmbababydwgxcefBdwamax87ebaoabydbcdtfaxcdtfadBdbkdnaz8Uebcu9kmbababydwgxcefBdwazax87ebaoabydbcdtfaxcdtfaiBdbkarabydlfabydxci2faPRbb86bbarabydlfabydxci2fcefamRbb86bbarabydlfabydxci2fcdfazRbb86bbababydxcefBdxaDk8LbabaeadaialavaoarawaDaDaqJbbbbz:cjjjbk;Nkovud99euv99eul998Jjjjjbc:W;ae9Rgo8KjjjjbdndnadTmbavcd4hrcbhwcbhDindnaiaeclfydbar2cdtfgvIdbaiaeydbar2cdtfgqIdbgk:tgxaiaecwfydbar2cdtfgmIdlaqIdlgP:tgsNamIdbak:tgzavIdlaP:tgPN:tgkakNaPamIdwaqIdwgH:tgONasavIdwaH:tgHN:tgPaPNaHazNaOaxN:tgxaxNMM:rgsJbbbb9Bmbaoc:W:qefawcx2fgAakas:vUdwaAaxas:vUdlaAaPas:vUdbaoc8Wfawc8K2fgAaq8Pdb83dbaAav8Pdb83dxaAam8Pdb83dKaAcwfaqcwfydbBdbaAcCfavcwfydbBdbaAcafamcwfydbBdbawcefhwkaecxfheaDcifgDad6mbkab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbawTmeaocbBd8Sao9cb83iKao9cb83izaoczfaoc8Wfawci2cxaoc8Sfcbcrz1jjjbaoIdKhCaoIdChXaoIdzhQao9cb83iwao9cb83ibaoaoc:W:qefawcxaoc8Sfcbciz1jjjbJbbjZhkaoIdwgPJbbbbJbbjZaPaPNaoIdbgPaPNaoIdlgsasNMM:rgx:vaxJbbbb9BEgzNhxasazNhsaPazNhzaoc:W:qefheawhvinaecwfIdbaxNaeIdbazNasaeclfIdbNMMgPakaPak9DEhkaecxfheavcufgvmbkabaCUdwabaXUdlabaQUdbabaoId3UdxdndnakJ;n;m;m899FmbJbbbbhPaoc:W:qefheaoc8WfhvinaCavcwfIdb:taecwfIdbgHNaQavIdb:taeIdbgONaXavclfIdb:taeclfIdbgLNMMaxaHNazaONasaLNMM:vgHaPaHaP9EEhPavc8KfhvaecxfheawcufgwmbkabaxUd8KabasUdaabazUd3abaCaxaPN:tUdKabaXasaPN:tUdCabaQazaPN:tUdzabJbbjZakakN:t:rgkUdydndnaxJbbj:;axJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;axJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohexekcjjjj94hekabae86b8UdndnasJbbj:;asJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;asJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohvxekcjjjj94hvkabav86bRdndnazJbbj:;azJbbj:;9GEgPJbbjZaPJbbjZ9FEJbb;:9cNJbbbZJbbb:;azJbbbb9GEMgP:lJbbb9p9DTmbaP:Ohqxekcjjjj94hqkabaq86b8SdndnaecKtcK91:YJbb;:9c:vax:t:lavcKtcK91:YJbb;:9c:vas:t:laqcKtcK91:YJbb;:9c:vaz:t:lakMMMJbb;:9cNJbbjZMgk:lJbbb9p9DTmbak:Ohexekcjjjj94hekaecFbaecFb9iEhexekabcjjj;8iBdycFbhekabae86b8Vxekab9cb83dbabcyf9cb83dbabcaf9cb83dbabcKf9cb83dbabczf9cb83dbabcwf9cb83dbkaoc:W;aef8Kjjjjbk;Iwwvul99iud99eue99eul998Jjjjjbcje9Rgr8Kjjjjbavcd4hwaicd4hDdndnaoTmbarc;abfcbaocdtgvz:njjjb8Aarc;Gbfcbavz:njjjb8AarhvarcafhiaohqinavcFFF97BdbaicFFF;7rBdbaiclfhiavclfhvaqcufgqmbkdnadTmbcbhkinaeakaD2cdtfgvIdwhxavIdlhmavIdbhPalakaw2cdtfIdbhsarc;abfhzarhiarc;GbfhHarcafhqcj1jjbhvaohOinasavcwfIdbaxNavIdbaPNavclfIdbamNMMgAMhCakhXdnaAas:tgAaqIdbgQ9DgLmbaHydbhXkaHaXBdbakhXdnaCaiIdbgK9EmbazydbhXaKhCkazaXBdbaiaCUdbaqaAaQaLEUdbavcxfhvaqclfhqaHclfhHaiclfhiazclfhzaOcufgOmbkakcefgkad9hmbkkadThkJbbbbhCcbhXarc;abfhvarc;Gbfhicbhqinalavydbgzaw2cdtfIdbalaiydbgHaw2cdtfIdbaeazaD2cdtfgzIdwaeaHaD2cdtfgHIdw:tgsasNazIdbaHIdb:tgsasNazIdlaHIdl:tgsasNMM:rMMgsaCasaC9EgzEhCaqaXazEhXaiclfhiavclfhvaoaqcefgq9hmbkaCJbbbZNhKxekadThkcbhXJbbbbhKkJbbbbhCdnaearc;abfaXcdtgifydbgqaD2cdtfgvIdwaearc;GbfaifydbgzaD2cdtfgiIdwgm:tgsasNavIdbaiIdbgY:tgAaANavIdlaiIdlgP:tgQaQNMM:rgxJbbbb9ETmbaxalaqaw2cdtfIdbMalazaw2cdtfIdb:taxaxM:vhCkasaCNamMhmaQaCNaPMhPaAaCNaYMhYdnakmbaDcdthvawcdthiindnalIdbg8AaecwfIdbam:tgCaCNaeIdbaY:tgsasNaeclfIdbaP:tgAaANMM:rgQMgEaK9ETmbJbbbbhxdnaQJbbbb9ETmbaEaK:taQaQM:vhxkaxaCNamMhmaxaANaPMhPaxasNaYMhYa8AaKaQMMJbbbZNhKkaeavfhealaifhladcufgdmbkkabaKUdxabamUdwabaPUdlabaYUdbarcjef8Kjjjjbkjeeiu8Jjjjjbcj8W9Rgr8Kjjjjbaici2hwdnaiTmbawceawce0EhDarhiinaiaeadRbbcdtfydbBdbadcefhdaiclfhiaDcufgDmbkkabarawaladaoz:hjjjbarcj8Wf8Kjjjjbk:3lequ8JjjjjbcjP9Rgl8Kjjjjbcbhvalcjxfcbaiz:njjjb8AdndnadTmbcjehoaehrincuhwarhDcuhqavhkdninawakaoalcjxfaDcefRbbfRbb9RcFeGci6aoalcjxfaDRbbfRbb9RcFeGci6faoalcjxfaDcdfRbbfRbb9RcFeGci6fgxaq9mgmEhwdnammbaxce0mdkaxaqaxaq9kEhqaDcifhDadakcefgk9hmbkkaeawci2fgDcdfRbbhqaDcefRbbhxaDRbbhkaeavci2fgDcifaDawav9Rci2z:qjjjb8Aakalcjxffaocefgo86bbaxalcjxffao86bbaDcdfaq86bbaDcefax86bbaDak86bbaqalcjxffao86bbarcifhravcefgvad9hmbkalcFeaicetz:njjjbhoadci2gDceaDce0EhqcbhxindnaoaeRbbgkcetfgw8UebgDcu9kmbawax87ebaocjlfaxcdtfabakcdtfydbBdbaxhDaxcefhxkaeaD86bbaecefheaqcufgqmbkaxcdthDxekcbhDkabalcjlfaDz:mjjjb8AalcjPf8Kjjjjbk9teiucbcbyd;C1jjbgeabcifc98GfgbBd;C1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik;teeeudndnaeabVciGTmbabhixekdndnadcz9pmbabhixekabhiinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaeczfheaiczfhiadc9Wfgdcs0mbkkadcl6mbinaiaeydbBdbaeclfheaiclfhiadc98fgdci0mbkkdnadTmbinaiaeRbb86bbaicefhiaecefheadcufgdmbkkabk:3eedudndnabciGTmbabhixekaecFeGc:b:c:ew2hldndnadcz9pmbabhixekabhiinaialBdxaialBdwaialBdlaialBdbaiczfhiadc9Wfgdcs0mbkkadcl6mbinaialBdbaiclfhiadc98fgdci0mbkkdnadTmbinaiae86bbaicefhiadcufgdmbkkabk9teiucbcbyd;C1jjbgeabcrfc94GfgbBd;C1jjbdndnabZbcztgd9nmbcuhiabad9RcFFifcz4nbcuSmekaehikaik9:eiuZbhedndncbyd;C1jjbgdaecztgi9nmbcuheadai9RcFFifcz4nbcuSmekadhekcbabae9Rcifc98Gcbyd;C1jjbfgdBd;C1jjbdnadZbcztge9nmbadae9RcFFifcz4nb8Akk:;Deludndndnadch9pmbabaeSmdaeabadfgi9Rcbadcet9R0mekabaead;8qbbxekaeab7ciGhldndndnabae9pmbdnalTmbadhvabhixikdnabciGmbadhvabhixdkadTmiabaeRbb86bbadcufhvdnabcefgiciGmbaecefhexdkavTmiabaeRbe86beadc9:fhvdnabcdfgiciGmbaecdfhexdkavTmiabaeRbd86bdadc99fhvdnabcifgiciGmbaecifhexdkavTmiabaeRbi86biabclfhiaeclfheadc98fhvxekdnalmbdnaiciGTmbadTmlabadcufgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc9:fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc99fgifglaeaifRbb86bbdnalciGmbaihdxekaiTmlabadc98fgdfaeadfRbb86bbkadcl6mbdnadc98fgocd4cefciGgiTmbaec98fhlabc98fhvinavadfaladfydbBdbadc98fhdaicufgimbkkaocx6mbaec9Wfhvabc9WfhoinaoadfgicxfavadfglcxfydbBdbaicwfalcwfydbBdbaiclfalclfydbBdbaialydbBdbadc9Wfgdci0mbkkadTmdadhidnadciGglTmbaecufhvabcufhoadhiinaoaifavaifRbb86bbaicufhialcufglmbkkadcl6mdaec98fhlabc98fhvinavaifgecifalaifgdcifRbb86bbaecdfadcdfRbb86bbaecefadcefRbb86bbaeadRbb86bbaic98fgimbxikkavcl6mbdnavc98fglcd4cefcrGgdTmbavadcdt9RhvinaiaeydbBdbaeclfheaiclfhiadcufgdmbkkalc36mbinaiaeydbBdbaiaeydlBdlaiaeydwBdwaiaeydxBdxaiaeydzBdzaiaeydCBdCaiaeydKBdKaiaeyd3Bd3aecafheaicafhiavc9Gfgvci0mbkkavTmbdndnavcrGgdmbavhlxekavc94GhlinaiaeRbb86bbaicefhiaecefheadcufgdmbkkavcw6mbinaiaeRbb86bbaiaeRbe86beaiaeRbd86bdaiaeRbi86biaiaeRbl86blaiaeRbv86bvaiaeRbo86boaiaeRbr86braicwfhiaecwfhealc94fglmbkkabkk9Tdbcjwk9ubbjZbbbbbbbbbbbbbbjZbbbbbbbbbbbbbbjZ86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;86;nAZ86;nAZ86;nAZ86;nA:;bc;uwkxebbbdbbb9GNbb",t=new Uint8Array([32,0,65,2,1,106,34,33,3,128,11,4,13,64,6,253,10,7,15,116,127,5,8,12,40,16,19,54,20,9,27,255,113,17,42,67,24,23,146,148,18,14,22,45,70,69,56,114,101,21,25,63,75,136,108,28,118,29,73,115]);if(typeof WebAssembly!="object")return{supported:!1};var n,i=WebAssembly.instantiate(o(e),{}).then(function(m){n=m.instance,n.exports.__wasm_call_ctors()});function o(m){for(var _=new Uint8Array(m.length),y=0;y<m.length;++y){var C=m.charCodeAt(y);_[y]=C>96?C-97:C>64?C-39:C+4}for(var E=0,y=0;y<m.length;++y)_[E++]=_[y]<60?t[_[y]]:(_[y]-60)*64+_[++y];return _.buffer.slice(0,E)}function r(m){if(!m)throw new Error("Assertion failed")}function s(m){return new Uint8Array(m.buffer,m.byteOffset,m.byteLength)}var a=48,c=16;function u(m,_){var y=m.meshlets[_*4+0],C=m.meshlets[_*4+1],E=m.meshlets[_*4+2],I=m.meshlets[_*4+3];return{vertices:m.vertices.subarray(y,y+E),triangles:m.triangles.subarray(C,C+I*3)}}function f(m,_,y,C,E,I,b){var S=n.exports.sbrk,B=n.exports.meshopt_buildMeshletsBound(m.length,E,I),v=S(B*c),P=S(B*E*4),N=S(B*I*3),L=S(m.byteLength),p=S(_.byteLength),x=new Uint8Array(n.exports.memory.buffer);x.set(s(m),L),x.set(s(_),p);var T=n.exports.meshopt_buildMeshlets(v,P,N,L,m.length,p,y,C,E,I,b);x=new Uint8Array(n.exports.memory.buffer);for(var w=x.subarray(v,v+T*c),M=new Uint32Array(w.buffer,w.byteOffset,w.byteLength/4).slice(),O=0;O<T;++O){var U=M[O*4+0],Q=M[O*4+1],y=M[O*4+2],z=M[O*4+3];n.exports.meshopt_optimizeMeshlet(P+U*4,N+Q,z,y)}var F=M[(T-1)*4+0],H=M[(T-1)*4+1],W=M[(T-1)*4+2],Z=M[(T-1)*4+3],Y=F+W,$=H+(Z*3+3&-4),X={meshlets:M,vertices:new Uint32Array(x.buffer,P,Y).slice(),triangles:new Uint8Array(x.buffer,N,$*3).slice(),meshletCount:T};return S(v-S(0)),X}function h(m){var _=new Float32Array(n.exports.memory.buffer,m,a/4);return{centerX:_[0],centerY:_[1],centerZ:_[2],radius:_[3],coneApexX:_[4],coneApexY:_[5],coneApexZ:_[6],coneAxisX:_[7],coneAxisY:_[8],coneAxisZ:_[9],coneCutoff:_[10]}}function A(m,_,y,C){var E=n.exports.sbrk,I=[],b=E(_.byteLength),S=E(m.vertices.byteLength),B=E(m.triangles.byteLength),v=E(a),P=new Uint8Array(n.exports.memory.buffer);P.set(s(_),b),P.set(s(m.vertices),S),P.set(s(m.triangles),B);for(var N=0;N<m.meshletCount;++N){var L=m.meshlets[N*4+0],p=m.meshlets[N*4+0+1],x=m.meshlets[N*4+0+3];n.exports.meshopt_computeMeshletBounds(v,S+L*4,B+p,x,b,y,C),I.push(h(v))}return E(b-E(0)),I}function g(m,_,y,C){var E=n.exports.sbrk,I=E(a),b=E(m.byteLength),S=E(_.byteLength),B=new Uint8Array(n.exports.memory.buffer);B.set(s(m),b),B.set(s(_),S),n.exports.meshopt_computeClusterBounds(I,b,m.length,S,y,C);var v=h(I);return E(I-E(0)),v}return{ready:i,supported:!0,buildMeshlets:function(m,_,y,C,E,I){r(m.length%3==0),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3),r(C<=256||C>0),r(E<=512),r(E%4==0),I=I||0;var b=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m);return f(b,_,_.length/y,y*4,C,E,I)},computeClusterBounds:function(m,_,y){r(m.length%3==0),r(m.length/3<=512),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3);var C=m.BYTES_PER_ELEMENT==4?m:new Uint32Array(m);return g(C,_,_.length/y,y*4)},computeMeshletBounds:function(m,_,y){return r(m.meshletCount!=0),r(_ instanceof Float32Array),r(_.length%y==0),r(y>=3),A(m,_,_.length/y,y*4)},extractMeshlet:function(m,_){return r(_>=0&&_<m.meshletCount),u(m,_)}}}();function OC(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.bufferViewId,o=e.gltfResource,r=e.baseResource,s=e.cacheKey,a=n.bufferViews[i],c=a.buffer,u=a.byteOffset,f=a.byteLength,h=!1,A,g,m,_;if(Ii(a,"EXT_meshopt_compression")){let C=a.extensions.EXT_meshopt_compression;c=C.buffer,u=C.byteOffset??0,f=C.byteLength,h=!0,A=C.byteStride,g=C.count,m=C.mode,_=C.filter??"NONE"}let y=n.buffers[c];this._hasMeshopt=h,this._meshoptByteStride=A,this._meshoptCount=g,this._meshoptMode=m,this._meshoptFilter=_,this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._buffer=y,this._bufferId=c,this._byteOffset=u,this._byteLength=f,this._cacheKey=s,this._bufferLoader=void 0,this._typedArray=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(OC.prototype=Object.create(qi.prototype),OC.prototype.constructor=OC);Object.defineProperties(OC.prototype,{cacheKey:{get:function(){return this._cacheKey}},typedArray:{get:function(){return this._typedArray}}});async function MQe(e){try{let t=NQe(e);if(e._bufferLoader=t,await t.load(),e.isDestroyed())return;let n=t.typedArray,i=new Uint8Array(n.buffer,n.byteOffset+e._byteOffset,e._byteLength);if(e.unload(),e._typedArray=i,e._hasMeshopt){let o=e._meshoptCount,r=e._meshoptByteStride,s=new Uint8Array(o*r);are.decodeGltfBuffer(s,o,r,e._typedArray,e._meshoptMode,e._meshoptFilter),e._typedArray=s}return e._state=dt.READY,e}catch(t){if(e.isDestroyed())return;throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load buffer view",t)}}OC.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=MQe(this),this._promise)};function NQe(e){let t=e._resourceCache,n=e._buffer;if(l(n.uri)){let o=e._baseResource.getDerivedResource({url:n.uri});return t.getExternalBufferLoader({resource:o})}return t.getEmbeddedBufferLoader({parentResource:e._gltfResource,bufferId:e._bufferId})}OC.prototype.unload=function(){l(this._bufferLoader)&&!this._bufferLoader.isDestroyed()&&this._resourceCache.unload(this._bufferLoader),this._bufferLoader=void 0,this._typedArray=void 0};var Kw=OC;function Kr(){}Kr._maxDecodingConcurrency=Math.max(jt.hardwareConcurrency-1,1);Kr._decoderTaskProcessor=void 0;Kr._taskProcessorReady=!1;Kr._error=void 0;Kr._getDecoderTaskProcessor=function(){if(!l(Kr._decoderTaskProcessor)){let e=new mi("decodeDraco",Kr._maxDecodingConcurrency);e.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/draco_decoder.wasm"}).then(function(t){t?Kr._taskProcessorReady=!0:Kr._error=new ce("Draco decoder could not be initialized.")}).catch(t=>{Kr._error=t}),Kr._decoderTaskProcessor=e}return Kr._decoderTaskProcessor};Kr.decodePointCloud=function(e){let t=Kr._getDecoderTaskProcessor();if(l(Kr._error))throw Kr._error;if(Kr._taskProcessorReady)return t.scheduleTask(e,[e.buffer.buffer])};Kr.decodeBufferView=function(e){let t=Kr._getDecoderTaskProcessor();if(l(Kr._error))throw Kr._error;if(Kr._taskProcessorReady)return t.scheduleTask(e,[e.array.buffer])};var jg=Kr;var zn={POSITION:"POSITION",NORMAL:"NORMAL",TANGENT:"TANGENT",TEXCOORD:"TEXCOORD",COLOR:"COLOR",JOINTS:"JOINTS",WEIGHTS:"WEIGHTS",FEATURE_ID:"_FEATURE_ID",SCALE:"_SCALE",ROTATION:"_ROTATION"};function LQe(e){switch(e){case zn.POSITION:return"positionMC";case zn.NORMAL:return"normalMC";case zn.TANGENT:return"tangentMC";case zn.TEXCOORD:return"texCoord";case zn.COLOR:return"color";case zn.JOINTS:return"joints";case zn.WEIGHTS:return"weights";case zn.FEATURE_ID:return"featureId";case zn.SCALE:return"scale";case zn.ROTATION:return"rotation"}}zn.hasSetIndex=function(e){switch(e){case zn.POSITION:case zn.NORMAL:case zn.TANGENT:return!1;case zn.TEXCOORD:case zn.COLOR:case zn.JOINTS:case zn.WEIGHTS:case zn.FEATURE_ID:case zn.SCALE:case zn.ROTATION:return!0}};zn.fromGltfSemantic=function(e){let t=e,i=/^(\w+)_\d+$/.exec(e);switch(i!==null&&(t=i[1]),t){case"POSITION":return zn.POSITION;case"NORMAL":return zn.NORMAL;case"TANGENT":return zn.TANGENT;case"TEXCOORD":return zn.TEXCOORD;case"COLOR":return zn.COLOR;case"JOINTS":return zn.JOINTS;case"WEIGHTS":return zn.WEIGHTS;case"_FEATURE_ID":return zn.FEATURE_ID;case"_SCALE":return zn.SCALE;case"_ROTATION":return zn.ROTATION}};zn.fromPntsSemantic=function(e){switch(e){case"POSITION":case"POSITION_QUANTIZED":return zn.POSITION;case"RGBA":case"RGB":case"RGB565":return zn.COLOR;case"NORMAL":case"NORMAL_OCT16P":return zn.NORMAL;case"BATCH_ID":return zn.FEATURE_ID}};zn.getGlslType=function(e){switch(e){case zn.POSITION:case zn.NORMAL:case zn.TANGENT:return"vec3";case zn.TEXCOORD:return"vec2";case zn.COLOR:return"vec4";case zn.JOINTS:return"ivec4";case zn.WEIGHTS:return"vec4";case zn.FEATURE_ID:return"int";case zn.SCALE:return"vec3";case zn.ROTATION:return"vec4";case zn.OPACITY:return"float"}};zn.getVariableName=function(e,t){let n=LQe(e);return l(t)&&(n+=`_${t}`),n};var ct=Object.freeze(zn);function Yg(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.primitive,o=e.draco,r=e.gltfResource,s=e.baseResource,a=e.cacheKey;this._resourceCache=t,this._gltfResource=r,this._baseResource=s,this._gltf=n,this._primitive=i,this._draco=o,this._cacheKey=a,this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodePromise=void 0,this._decodedData=void 0,this._state=dt.UNLOADED,this._promise=void 0,this._dracoError=void 0}l(Object.create)&&(Yg.prototype=Object.create(qi.prototype),Yg.prototype.constructor=Yg);Object.defineProperties(Yg.prototype,{cacheKey:{get:function(){return this._cacheKey}},decodedData:{get:function(){return this._decodedData}}});async function OQe(e){let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._draco.bufferView,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._bufferViewTypedArray=n.typedArray,e._state=dt.PROCESSING,e)}catch(n){if(e.isDestroyed())return;cre(e,n)}}Yg.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=OQe(this),this._promise)};function cre(e,t){throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load Draco",t)}async function FQe(e,t){try{let n=await t;return e.isDestroyed()?void 0:(e.unload(),e._decodedData={indices:n.indexArray,vertexAttributes:n.attributeData},e._state=dt.READY,e._baseResource)}catch(n){if(e.isDestroyed())return;e._dracoError=n}}var FC={};FC[ct.POSITION]="POSITION";FC[ct.NORMAL]="NORMAL";FC[ct.COLOR]="COLOR";FC[ct.TEXCOORD]="TEX_COORD";function QQe(e){for(let t in FC)if(FC.hasOwnProperty(t)&&e.startsWith(t))return FC[t]}Yg.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.PROCESSING||(l(this._dracoError)&&cre(this,this._dracoError),!l(this._bufferViewTypedArray))||l(this._decodePromise))return!1;let t=this._draco,n=this._primitive,i=this._gltf,o=i.bufferViews,r=t.bufferView,s=o[r],a=t.attributes,c=[];for(let h in n.attributes)if(n.attributes.hasOwnProperty(h)){let A=QQe(h);l(A)&&i.accessors[n.attributes[h]].componentType===q.FLOAT&&(c.includes(A)||c.push(A))}let u={array:new Uint8Array(this._bufferViewTypedArray),bufferView:s,compressedAttributes:a,dequantizeInShader:!0,attributesToSkipTransform:c},f=jg.decodeBufferView(u);if(!l(f))return!1;this._decodePromise=FQe(this,f)};Yg.prototype.unload=function(){l(this._bufferViewLoader)&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodedData=void 0,this._gltf=void 0,this._primitive=void 0};var Xw=Yg;function kQe(e){let t=e.uint8Array,n=e.format,i=e.request,o=e.flipY??!1,r=e.skipColorSpaceConversion??!1,s=new Blob([t],{type:n}),a;return we.supportsImageBitmapOptions().then(function(c){return c?Promise.resolve(we.createImageBitmapFromBlob(s,{flipY:o,premultiplyAlpha:!1,skipColorSpaceConversion:r})):(a=window.URL.createObjectURL(s),new we({url:a,request:i}).fetchImage({flipY:o,skipColorSpaceConversion:r}))}).then(function(c){return l(a)&&window.URL.revokeObjectURL(a),c}).catch(function(c){return l(a)&&window.URL.revokeObjectURL(a),Promise.reject(c)})}var YI=kQe;function tp(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.imageId,o=e.gltfResource,r=e.baseResource,s=e.cacheKey,a=n.images[i],c=a.bufferView,u=a.uri;this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._gltf=n,this._bufferViewId=c,this._uri=u,this._cacheKey=s,this._bufferViewLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(tp.prototype=Object.create(qi.prototype),tp.prototype.constructor=tp);Object.defineProperties(tp.prototype,{cacheKey:{get:function(){return this._cacheKey}},image:{get:function(){return this._image}},mipLevels:{get:function(){return this._mipLevels}}});tp.prototype.load=function(){return l(this._promise)?this._promise:l(this._bufferViewId)?(this._promise=UQe(this),this._promise):(this._promise=GQe(this),this._promise)};function lre(e){let t;return Array.isArray(e)&&(t=e.slice(1,e.length).map(function(n){return n.bufferView}),e=e[0]),{image:e,mipLevels:t}}async function UQe(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._bufferViewId,gltfResource:e._gltfResource,baseResource:e._baseResource});if(e._bufferViewLoader=n,await n.load(),e.isDestroyed())return;let i=n.typedArray,o=await VQe(i);if(e.isDestroyed())return;let r=lre(o);return e.unload(),e._image=r.image,e._mipLevels=r.mipLevels,e._state=dt.READY,e}catch(n){return e.isDestroyed()?void 0:ure(e,n,"Failed to load embedded image")}}async function GQe(e){e._state=dt.LOADING;let t=e._baseResource,n=e._uri,i=t.getDerivedResource({url:n});try{let o=await WQe(i);if(e.isDestroyed())return;let r=lre(o);return e.unload(),e._image=r.image,e._mipLevels=r.mipLevels,e._state=dt.READY,e}catch(o){return e.isDestroyed()?void 0:ure(e,o,`Failed to load image: ${n}`)}}function ure(e,t,n){return e.unload(),e._state=dt.FAILED,Promise.reject(e.getError(n,t))}function zQe(e){let t=e.subarray(0,2),n=e.subarray(0,4),i=e.subarray(8,12);if(t[0]===255&&t[1]===216)return"image/jpeg";if(t[0]===137&&t[1]===80)return"image/png";if(t[0]===171&&t[1]===75)return"image/ktx2";if(n[0]===82&&n[1]===73&&n[2]===70&&n[3]===70&&i[0]===87&&i[1]===69&&i[2]===66&&i[3]===80)return"image/webp";throw new ce("Image format is not recognized")}async function VQe(e){let t=zQe(e);if(t==="image/ktx2"){let n=new Uint8Array(e);return Iu(n)}return tp._loadImageFromTypedArray({uint8Array:e,format:t,flipY:!1,skipColorSpaceConversion:!0})}var HQe=/(^data:image\/ktx2)|(\.ktx2$)/i;function WQe(e){let t=e.getUrlComponent(!1,!0);return HQe.test(t)?Iu(e):e.fetchImage({skipColorSpaceConversion:!0,preferImageBitmap:!0})}tp.prototype.unload=function(){l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._uri=void 0,this._image=void 0,this._mipLevels=void 0,this._gltf=void 0};tp._loadImageFromTypedArray=YI;var Jw=tp;var jQe={TEXTURE:0,PROGRAM:1,BUFFER:2,NUMBER_OF_JOB_TYPES:3},Tc=Object.freeze(jQe);function qg(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.accessorId,o=e.gltfResource,r=e.baseResource,s=e.primitive,a=e.draco,c=e.cacheKey,u=e.asynchronous??!0,f=e.loadBuffer??!1,h=e.loadTypedArray??!1,A=n.accessors[i].componentType;this._resourceCache=t,this._gltfResource=o,this._baseResource=r,this._gltf=n,this._accessorId=i,this._indexDatatype=A,this._primitive=s,this._draco=a,this._cacheKey=c,this._asynchronous=u,this._loadBuffer=f,this._loadTypedArray=h,this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(qg.prototype=Object.create(qi.prototype),qg.prototype.constructor=qg);Object.defineProperties(qg.prototype,{cacheKey:{get:function(){return this._cacheKey}},buffer:{get:function(){return this._buffer}},typedArray:{get:function(){return this._typedArray}},indexDatatype:{get:function(){return this._indexDatatype}}});var YQe=new sW;qg.prototype.load=async function(){return l(this._promise)?this._promise:l(this._draco)?(this._promise=qQe(this),this._promise):(this._promise=KQe(this),this._promise)};async function qQe(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getDracoLoader({gltf:e._gltf,primitive:e._primitive,draco:e._draco,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._dracoLoader=n,await n.load(),e.isDestroyed()?void 0:(e._state=dt.LOADED,e)}catch(n){if(e.isDestroyed())return;rW(e,n)}}async function KQe(e){let t=e._gltf,n=e._accessorId,o=t.accessors[n].bufferView;e._state=dt.LOADING;let r=e._resourceCache;try{let s=r.getBufferViewLoader({gltf:t,bufferViewId:o,gltfResource:e._gltfResource,baseResource:e._baseResource});if(e._bufferViewLoader=s,await s.load(),e.isDestroyed())return;let a=s.typedArray;return e._typedArray=XQe(e,a),e._state=dt.PROCESSING,e}catch(s){if(e.isDestroyed())return;rW(e,s)}}function XQe(e,t){let n=e._gltf,i=e._accessorId,o=n.accessors[i],r=o.count,s=o.componentType,a=Fe.getSizeInBytes(s),c=t.buffer,u=t.byteOffset+o.byteOffset;if(u%a!==0){let h=r*a,A=new Uint8Array(c,u,h);c=new Uint8Array(A).buffer,u=0,Pr("index-buffer-unaligned",`The index array is not aligned to a ${a}-byte boundary.`)}let f;return s===Fe.UNSIGNED_BYTE?f=new Uint8Array(c,u,r):s===Fe.UNSIGNED_SHORT?f=new Uint16Array(c,u,r):s===Fe.UNSIGNED_INT&&(f=new Uint32Array(c,u,r)),f}function rW(e,t){throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load index buffer",t)}function sW(){this.typedArray=void 0,this.indexDatatype=void 0,this.context=void 0,this.buffer=void 0}sW.prototype.set=function(e,t,n){this.typedArray=e,this.indexDatatype=t,this.context=n};sW.prototype.execute=function(){this.buffer=fre(this.typedArray,this.indexDatatype,this.context)};function fre(e,t,n){let i=Et.createIndexBuffer({typedArray:e,context:n,usage:Qe.STATIC_DRAW,indexDatatype:t});return i.vertexArrayDestroyable=!1,i}qg.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED&&this._state!==dt.PROCESSING)return!1;let t=this._typedArray,n=this._indexDatatype;if(l(this._dracoLoader))try{this._dracoLoader.process(e)&&(t=this._dracoLoader.decodedData.indices.typedArray,this._typedArray=t,n=q.fromTypedArray(t),this._indexDatatype=n)}catch(o){rW(this,o)}if(!l(t))return!1;let i;if(this._loadBuffer&&this._asynchronous){let o=YQe;if(o.set(t,n,e.context),!e.jobScheduler.execute(o,Tc.BUFFER))return!1;i=o.buffer}else this._loadBuffer&&(i=fre(t,n,e.context));return this.unload(),this._buffer=i,this._typedArray=this._loadTypedArray?t:void 0,this._state=dt.READY,this._resourceCache.statistics.addGeometryLoader(this),!0};qg.prototype.unload=function(){l(this._buffer)&&this._buffer.destroy();let e=this._resourceCache;l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&e.unload(this._bufferViewLoader),l(this._dracoLoader)&&e.unload(this._dracoLoader),this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._gltf=void 0,this._primitive=void 0};var Zw=qg;function JQe(e,t,n){if(n=n??!1,n){let i=e.indexOf(t);if(i>-1)return i}return e.push(t),e.length-1}var aa=JQe;function ZQe(e,t){return l(e.extensionsUsed)&&e.extensionsUsed.indexOf(t)>=0}var Rr=ZQe;function rn(){}rn.objectLegacy=function(e,t){if(l(e)){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let i=e[n],o=t(i,n);if(l(o))return o}}};rn.object=function(e,t){if(l(e)){let n=e.length;for(let i=0;i<n;i++){let o=e[i],r=t(o,i);if(l(r))return r}}};rn.topLevel=function(e,t,n){let i=e[t];return l(i)&&!Array.isArray(i)?rn.objectLegacy(i,n):rn.object(i,n)};rn.accessor=function(e,t){return rn.topLevel(e,"accessors",t)};rn.accessorWithSemantic=function(e,t,n){let i={};return rn.mesh(e,function(o){return rn.meshPrimitive(o,function(r){let s=rn.meshPrimitiveAttribute(r,function(a,c){if(c.indexOf(t)===0&&!l(i[a])){i[a]=!0;let u=n(a);if(l(u))return u}});return l(s)?s:rn.meshPrimitiveTarget(r,function(a){return rn.meshPrimitiveTargetAttribute(a,function(c,u){if(u.indexOf(t)===0&&!l(i[c])){i[c]=!0;let f=n(c);if(l(f))return f}})})})})};rn.accessorContainingVertexAttributeData=function(e,t){let n={};return rn.mesh(e,function(i){return rn.meshPrimitive(i,function(o){let r=rn.meshPrimitiveAttribute(o,function(s){if(!l(n[s])){n[s]=!0;let a=t(s);if(l(a))return a}});return l(r)?r:rn.meshPrimitiveTarget(o,function(s){return rn.meshPrimitiveTargetAttribute(s,function(a){if(!l(n[a])){n[a]=!0;let c=t(a);if(l(c))return c}})})})})};rn.accessorContainingIndexData=function(e,t){let n={};return rn.mesh(e,function(i){return rn.meshPrimitive(i,function(o){let r=o.indices;if(l(r)&&!l(n[r])){n[r]=!0;let s=t(r);if(l(s))return s}})})};rn.animation=function(e,t){return rn.topLevel(e,"animations",t)};rn.animationChannel=function(e,t){let n=e.channels;return rn.object(n,t)};rn.animationSampler=function(e,t){let n=e.samplers;return rn.object(n,t)};rn.buffer=function(e,t){return rn.topLevel(e,"buffers",t)};rn.bufferView=function(e,t){return rn.topLevel(e,"bufferViews",t)};rn.camera=function(e,t){return rn.topLevel(e,"cameras",t)};rn.image=function(e,t){return rn.topLevel(e,"images",t)};rn.material=function(e,t){return rn.topLevel(e,"materials",t)};rn.materialValue=function(e,t){let n=e.values;l(e.extensions)&&l(e.extensions.KHR_techniques_webgl)&&(n=e.extensions.KHR_techniques_webgl.values);for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.mesh=function(e,t){return rn.topLevel(e,"meshes",t)};rn.meshPrimitive=function(e,t){let n=e.primitives;if(l(n)){let i=n.length;for(let o=0;o<i;o++){let r=n[o],s=t(r,o);if(l(s))return s}}};rn.meshPrimitiveAttribute=function(e,t){let n=e.attributes;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.meshPrimitiveTarget=function(e,t){let n=e.targets;if(l(n)){let i=n.length;for(let o=0;o<i;++o){let r=t(n[o],o);if(l(r))return r}}};rn.meshPrimitiveTargetAttribute=function(e,t){for(let n in e)if(Object.prototype.hasOwnProperty.call(e,n)){let i=e[n],o=t(i,n);if(l(o))return o}};rn.node=function(e,t){return rn.topLevel(e,"nodes",t)};rn.nodeInTree=function(e,t,n){let i=e.nodes;if(l(i)){let o=t.length;for(let r=0;r<o;r++){let s=t[r],a=i[s];if(l(a)){let c=n(a,s);if(l(c))return c;let u=a.children;if(l(u)&&(c=rn.nodeInTree(e,u,n),l(c)))return c}}}};rn.nodeInScene=function(e,t,n){let i=t.nodes;if(l(i))return rn.nodeInTree(e,i,n)};rn.program=function(e,t){return Rr(e,"KHR_techniques_webgl")?rn.object(e.extensions.KHR_techniques_webgl.programs,t):rn.topLevel(e,"programs",t)};rn.sampler=function(e,t){return rn.topLevel(e,"samplers",t)};rn.scene=function(e,t){return rn.topLevel(e,"scenes",t)};rn.shader=function(e,t){return Rr(e,"KHR_techniques_webgl")?rn.object(e.extensions.KHR_techniques_webgl.shaders,t):rn.topLevel(e,"shaders",t)};rn.skin=function(e,t){return rn.topLevel(e,"skins",t)};rn.skinJoint=function(e,t){let n=e.joints;if(l(n)){let i=n.length;for(let o=0;o<i;o++){let r=n[o],s=t(r);if(l(s))return s}}};rn.techniqueAttribute=function(e,t){let n=e.attributes;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.techniqueUniform=function(e,t){let n=e.uniforms;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.techniqueParameter=function(e,t){let n=e.parameters;for(let i in n)if(Object.prototype.hasOwnProperty.call(n,i)){let o=t(n[i],i);if(l(o))return o}};rn.technique=function(e,t){return Rr(e,"KHR_techniques_webgl")?rn.object(e.extensions.KHR_techniques_webgl.techniques,t):rn.topLevel(e,"techniques",t)};rn.texture=function(e,t){return rn.topLevel(e,"textures",t)};var Re=rn;function $Qe(e){switch(e){case"SCALAR":return 1;case"VEC2":return 2;case"VEC3":return 3;case"VEC4":case"MAT2":return 4;case"MAT3":return 9;case"MAT4":return 16}}var Rf=$Qe;function eke(e,t){let n=t.bufferView;if(l(n)){let i=e.bufferViews[n];if(l(i.byteStride)&&i.byteStride>0)return i.byteStride}return q.getSizeInBytes(t.componentType)*Rf(t.type)}var Bu=eke;function tke(e){Re.accessor(e,function(n){l(n.bufferView)&&(n.byteOffset=n.byteOffset??0)}),Re.bufferView(e,function(n){l(n.buffer)&&(n.byteOffset=n.byteOffset??0)}),Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){if(i.mode=i.mode??ee.TRIANGLES,!l(i.material)){l(e.materials)||(e.materials=[]);let o={name:"default"};i.material=aa(e.materials,o)}})}),Re.accessorContainingVertexAttributeData(e,function(n){let i=e.accessors[n],o=i.bufferView;if(i.normalized=i.normalized??!1,l(o)){let r=e.bufferViews[o];r.byteStride=Bu(e,i),r.target=ee.ARRAY_BUFFER}}),Re.accessorContainingIndexData(e,function(n){let o=e.accessors[n].bufferView;if(l(o)){let r=e.bufferViews[o];r.target=ee.ELEMENT_ARRAY_BUFFER}}),Re.material(e,function(n){let i=n.extensions??{},o=i.KHR_materials_common;if(l(o)){let c=o.technique,u=l(o.values)?o.values:{};o.values=u,u.ambient=l(u.ambient)?u.ambient:[0,0,0,1],u.emission=l(u.emission)?u.emission:[0,0,0,1],u.transparency=u.transparency??1,c!=="CONSTANT"&&(u.diffuse=l(u.diffuse)?u.diffuse:[0,0,0,1],c!=="LAMBERT"&&(u.specular=l(u.specular)?u.specular:[0,0,0,1],u.shininess=u.shininess??0)),o.transparent=o.transparent??!1,o.doubleSided=o.doubleSided??!1;return}n.emissiveFactor=n.emissiveFactor??[0,0,0],n.alphaMode=n.alphaMode??"OPAQUE",n.doubleSided=n.doubleSided??!1,n.alphaMode==="MASK"&&(n.alphaCutoff=n.alphaCutoff??.5);let r=i.KHR_techniques_webgl;l(r)&&Re.materialValue(n,function(c){l(c.index)&&QC(c)}),QC(n.emissiveTexture),QC(n.normalTexture),QC(n.occlusionTexture);let s=n.pbrMetallicRoughness;l(s)&&(s.baseColorFactor=s.baseColorFactor??[1,1,1,1],s.metallicFactor=s.metallicFactor??1,s.roughnessFactor=s.roughnessFactor??1,QC(s.baseColorTexture),QC(s.metallicRoughnessTexture));let a=i.KHR_materials_pbrSpecularGlossiness;l(a)&&(a.diffuseFactor=a.diffuseFactor??[1,1,1,1],a.specularFactor=a.specularFactor??[1,1,1],a.glossinessFactor=a.glossinessFactor??1,QC(a.specularGlossinessTexture))}),Re.animation(e,function(n){Re.animationSampler(n,function(i){i.interpolation=i.interpolation??"LINEAR"})});let t=nke(e);return Re.node(e,function(n,i){l(t[i])||l(n.translation)||l(n.rotation)||l(n.scale)?(n.translation=n.translation??[0,0,0],n.rotation=n.rotation??[0,0,0,1],n.scale=n.scale??[1,1,1]):n.matrix=n.matrix??[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}),Re.sampler(e,function(n){n.wrapS=n.wrapS??ee.REPEAT,n.wrapT=n.wrapT??ee.REPEAT}),l(e.scenes)&&!l(e.scene)&&(e.scene=0),e}function nke(e){let t={};return Re.animation(e,function(n){Re.animationChannel(n,function(i){let o=i.target,r=o.node,s=o.path;(s==="translation"||s==="rotation"||s==="scale")&&(t[r]=!0)})}),t}function QC(e){l(e)&&(e.texCoord=e.texCoord??0)}var SO=tke;function ike(e){return Re.shader(e,function(t){wO(t)}),Re.buffer(e,function(t){wO(t)}),Re.image(e,function(t){wO(t)}),wO(e),e}function wO(e){e.extras=l(e.extras)?e.extras:{},e.extras._pipeline=l(e.extras._pipeline)?e.extras._pipeline:{}}var kC=ike;function oke(e,t){let n=e.extensionsRequired;if(l(n)){let i=n.indexOf(t);i>=0&&n.splice(i,1),n.length===0&&delete e.extensionsRequired}}var BO=oke;function rke(e,t){let n=e.extensionsUsed;if(l(n)){let i=n.indexOf(t);i>=0&&n.splice(i,1),BO(e,t),n.length===0&&delete e.extensionsUsed}}var qI=rke;var ske=4;function ake(e){if(gm(e)!=="glTF")throw new ce("File is not valid binary glTF");let n=dre(e,0,5),i=n[1];if(i!==1&&i!==2)throw new ce("Binary glTF version is not 1 or 2");return i===1?cke(e,n):lke(e,n)}function dre(e,t,n){let i=new DataView(e.buffer),o=new Array(n);for(let r=0;r<n;++r)o[r]=i.getUint32(e.byteOffset+t+r*ske,!0);return o}function cke(e,t){let n=t[2],i=t[3];if(t[4]!==0)throw new ce("Binary glTF scene format is not JSON");let r=20,s=r+i,a=Tu(e,r,i),c=JSON.parse(a);kC(c);let u=e.subarray(s,n),f=c.buffers;if(l(f)&&Object.keys(f).length>0){let h=f.binary_glTF??f.KHR_binary_glTF;l(h)&&(h.extras._pipeline.source=u,delete h.uri)}return qI(c,"KHR_binary_glTF"),c}function lke(e,t){let n=t[2],i=12,o,r;for(;i<n;){let s=dre(e,i,2),a=s[0],c=s[1];i+=8;let u=e.subarray(i,i+a);if(i+=a,c===1313821514){let f=Tu(u);o=JSON.parse(f),kC(o)}else c===5130562&&(r=u)}if(l(o)&&l(r)){let s=o.buffers;if(l(s)&&s.length>0){let a=s[0];a.extras._pipeline.source=r}}return o}var DO=ake;function uke(e){return Re.shader(e,function(t){vO(t)}),Re.buffer(e,function(t){vO(t)}),Re.image(e,function(t){vO(t)}),vO(e),e}function vO(e){l(e.extras)&&(l(e.extras._pipeline)&&delete e.extras._pipeline,Object.keys(e.extras).length===0&&delete e.extras)}var PO=uke;function fke(e,t){let n=e.extensionsUsed;l(n)||(n=[],e.extensionsUsed=n),aa(n,t,!0)}var Yd=fke;function dke(e){switch(e){case q.BYTE:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getInt8(n+s*o)};case q.UNSIGNED_BYTE:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getUint8(n+s*o)};case q.SHORT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getInt16(n+s*o,!0)};case q.UNSIGNED_SHORT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getUint16(n+s*o,!0)};case q.INT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getInt32(n+s*o,!0)};case q.UNSIGNED_INT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getUint32(n+s*o,!0)};case q.FLOAT:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getFloat32(n+s*o,!0)};case q.DOUBLE:return function(t,n,i,o,r){for(let s=0;s<i;++s)r[s]=t.getFloat64(n+s*o,!0)}}}var Kg=dke;function hke(e,t){let n=e.bufferViews,i=e.buffers,o=t.bufferView,r=Rf(t.type);if(!l(t.bufferView))return{min:new Array(r).fill(0),max:new Array(r).fill(0)};let s=new Array(r).fill(Number.POSITIVE_INFINITY),a=new Array(r).fill(Number.NEGATIVE_INFINITY),c=n[o],u=c.buffer,h=i[u].extras._pipeline.source,A=t.count,g=Bu(e,t),m=t.byteOffset+c.byteOffset+h.byteOffset,_=t.componentType,y=q.getSizeInBytes(_),C=new DataView(h.buffer),E=new Array(r),I=Kg(_);for(let b=0;b<A;b++){I(C,m,r,y,E);for(let S=0;S<r;S++){let B=E[S];s[S]=Math.min(s[S],B),a[S]=Math.max(a[S],B)}m+=g}return{min:s,max:a}}var KI=hke;var mke=[ee.FUNC_ADD,ee.FUNC_ADD],Ake=[ee.ONE,ee.ZERO,ee.ONE,ee.ZERO];function hre(e,t){let n=e.enable;return l(n)?n.indexOf(t)>-1:!1}var pke=[ee.ZERO,ee.ONE,ee.SRC_COLOR,ee.ONE_MINUS_SRC_COLOR,ee.SRC_ALPHA,ee.ONE_MINUS_SRC_ALPHA,ee.DST_ALPHA,ee.ONE_MINUS_DST_ALPHA,ee.DST_COLOR,ee.ONE_MINUS_DST_COLOR];function gke(e,t){if(!l(e))return t;for(let n=0;n<4;n++)if(pke.indexOf(e[n])===-1)return t;return e}function _ke(e){let t={},n={},i=e.techniques;return l(i)&&(Re.technique(e,function(o,r){let s=o.states;if(l(s)){let a=n[r]={};if(hre(s,ee.BLEND)){a.alphaMode="BLEND";let c=s.functions;l(c)&&(l(c.blendEquationSeparate)||l(c.blendFuncSeparate))&&(t[r]={blendEquation:c.blendEquationSeparate??mke,blendFactors:gke(c.blendFuncSeparate,Ake)})}hre(s,ee.CULL_FACE)||(a.doubleSided=!0),delete o.states}}),Object.keys(t).length>0&&(l(e.extensions)||(e.extensions={}),Yd(e,"KHR_blend")),Re.material(e,function(o){if(l(o.technique)){let r=n[o.technique];Re.objectLegacy(r,function(a,c){o[c]=a});let s=t[o.technique];l(s)&&(l(o.extensions)||(o.extensions={}),o.extensions.KHR_blend=s)}})),e}var RO=_ke;function yke(e,t){let n=e.extensionsRequired;l(n)||(n=[],e.extensionsRequired=n),aa(n,t,!0),Yd(e,t)}var MO=yke;function Cke(e){let t=e.techniques,n={},i={},o={};if(l(t)){let r={programs:[],shaders:[],techniques:[]},s=e.glExtensionsUsed;delete e.glExtensionsUsed,Re.technique(e,function(a,c){let u={name:a.name,program:void 0,attributes:{},uniforms:{}},f;if(Re.techniqueAttribute(a,function(h,A){f=a.parameters[h],u.attributes[A]={semantic:f.semantic}}),Re.techniqueUniform(a,function(h,A){f=a.parameters[h],u.uniforms[A]={count:f.count,node:f.node,type:f.type,semantic:f.semantic,value:f.value},l(n[c])||(n[c]={}),n[c][h]=A}),l(o[a.program]))u.program=o[a.program];else{let h=e.programs[a.program],A={name:h.name,fragmentShader:void 0,vertexShader:void 0,glExtensions:s},g=e.shaders[h.fragmentShader];A.fragmentShader=aa(r.shaders,g,!0);let m=e.shaders[h.vertexShader];A.vertexShader=aa(r.shaders,m,!0),u.program=aa(r.programs,A),o[a.program]=u.program}i[c]=aa(r.techniques,u)}),r.techniques.length>0&&(l(e.extensions)||(e.extensions={}),e.extensions.KHR_techniques_webgl=r,Yd(e,"KHR_techniques_webgl"),MO(e,"KHR_techniques_webgl"))}return Re.material(e,function(r){if(l(r.technique)){let s={technique:i[r.technique]};Re.objectLegacy(r.values,function(a,c){l(s.values)||(s.values={});let u=n[r.technique][c];l(u)&&(s.values[u]=a)}),l(r.extensions)||(r.extensions={}),r.extensions.KHR_techniques_webgl=s}delete r.technique,delete r.values}),delete e.techniques,delete e.programs,delete e.shaders,e}var NO=Cke;function Eke(e,t){Mo.typeOf.object("material",e),Mo.defined("handler",t);let n=e.pbrMetallicRoughness;if(l(n)){if(l(n.baseColorTexture)){let r=n.baseColorTexture,s=t(r.index,r);if(l(s))return s}if(l(n.metallicRoughnessTexture)){let r=n.metallicRoughnessTexture,s=t(r.index,r);if(l(s))return s}}let{extensions:i}=e;if(l(i)){let r=i.KHR_materials_pbrSpecularGlossiness;if(l(r)){if(l(r.diffuseTexture)){let c=r.diffuseTexture,u=t(c.index,c);if(l(u))return u}if(l(r.specularGlossinessTexture)){let c=r.specularGlossinessTexture,u=t(c.index,c);if(l(u))return u}}let s=i.KHR_materials_specular;if(l(s)){let{specularTexture:c,specularColorTexture:u}=s;if(l(c)){let f=t(c.index,c);if(l(f))return f}if(l(u)){let f=t(u.index,u);if(l(f))return f}}let a=i.KHR_materials_common;if(l(a)&&l(a.values)){let{diffuse:c,ambient:u,emission:f,specular:h}=a.values;if(l(c)&&l(c.index)){let A=t(c.index,c);if(l(A))return A}if(l(u)&&l(u.index)){let A=t(u.index,u);if(l(A))return A}if(l(f)&&l(f.index)){let A=t(f.index,f);if(l(A))return A}if(l(h)&&l(h.index)){let A=t(h.index,h);if(l(A))return A}}}let o=Re.materialValue(e,function(r){if(l(r.index)){let s=t(r.index,r);if(l(s))return s}});if(l(o))return o;if(l(e.emissiveTexture)){let r=e.emissiveTexture,s=t(r.index,r);if(l(s))return s}if(l(e.normalTexture)){let r=e.normalTexture,s=t(r.index,r);if(l(s))return s}if(l(e.occlusionTexture)){let r=e.occlusionTexture,s=t(r.index,r);if(l(s))return s}}var $w=Eke;var mre=["mesh","node","material","accessor","bufferView","buffer","texture","sampler","image"];function Ike(e,t){return t=t??mre,mre.forEach(function(n){t.indexOf(n)>-1&&bke(e,n)}),e}var xke={accessor:"accessors",buffer:"buffers",bufferView:"bufferViews",image:"images",node:"nodes",material:"materials",mesh:"meshes",sampler:"samplers",texture:"textures"};function bke(e,t){let n=xke[t],i=e[n];if(l(i)){let o=0,r=Cm[t](e),s=i.length;for(let a=0;a<s;++a)r[a]||(ym[t](e,a-o),o++)}}function ym(){}ym.accessor=function(e,t){e.accessors.splice(t,1),Re.mesh(e,function(i){Re.meshPrimitive(i,function(o){Re.meshPrimitiveAttribute(o,function(a,c){a>t&&o.attributes[c]--}),Re.meshPrimitiveTarget(o,function(a){Re.meshPrimitiveTargetAttribute(a,function(c,u){c>t&&a[u]--})});let r=o.indices;l(r)&&r>t&&o.indices--;let s=o.extensions;l(s)&&l(s.CESIUM_primitive_outline)&&s.CESIUM_primitive_outline.indices>t&&--s.CESIUM_primitive_outline.indices})}),Re.skin(e,function(i){l(i.inverseBindMatrices)&&i.inverseBindMatrices>t&&i.inverseBindMatrices--}),Re.animation(e,function(i){Re.animationSampler(i,function(o){l(o.input)&&o.input>t&&o.input--,l(o.output)&&o.output>t&&o.output--})})};ym.buffer=function(e,t){e.buffers.splice(t,1),Re.bufferView(e,function(i){l(i.buffer)&&i.buffer>t&&i.buffer--,l(i.extensions)&&l(i.extensions.EXT_meshopt_compression)&&i.extensions.EXT_meshopt_compression.buffer--})};ym.bufferView=function(e,t){if(e.bufferViews.splice(t,1),Re.accessor(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Re.shader(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Re.image(e,function(i){l(i.bufferView)&&i.bufferView>t&&i.bufferView--}),Rr(e,"KHR_draco_mesh_compression")&&Re.mesh(e,function(i){Re.meshPrimitive(i,function(o){l(o.extensions)&&l(o.extensions.KHR_draco_mesh_compression)&&o.extensions.KHR_draco_mesh_compression.bufferView>t&&o.extensions.KHR_draco_mesh_compression.bufferView--})}),Rr(e,"EXT_feature_metadata")){let o=e.extensions.EXT_feature_metadata.featureTables;for(let r in o)if(o.hasOwnProperty(r)){let a=o[r].properties;if(l(a)){for(let c in a)if(a.hasOwnProperty(c)){let u=a[c];l(u.bufferView)&&u.bufferView>t&&u.bufferView--,l(u.arrayOffsetBufferView)&&u.arrayOffsetBufferView>t&&u.arrayOffsetBufferView--,l(u.stringOffsetBufferView)&&u.stringOffsetBufferView>t&&u.stringOffsetBufferView--}}}}if(Rr(e,"EXT_structural_metadata")){let o=e.extensions.EXT_structural_metadata.propertyTables;if(l(o)){let r=o.length;for(let s=0;s<r;++s){let c=o[s].properties;for(let u in c)if(c.hasOwnProperty(u)){let f=c[u];l(f.values)&&f.values>t&&f.values--,l(f.arrayOffsets)&&f.arrayOffsets>t&&f.arrayOffsets--,l(f.stringOffsets)&&f.stringOffsets>t&&f.stringOffsets--}}}}};ym.image=function(e,t){e.images.splice(t,1),Re.texture(e,function(i){l(i.source)&&i.source>t&&--i.source;let o=i.extensions;l(o)&&l(o.EXT_texture_webp)&&o.EXT_texture_webp.source>t?--i.extensions.EXT_texture_webp.source:l(o)&&l(o.KHR_texture_basisu)&&o.KHR_texture_basisu.source>t&&--i.extensions.KHR_texture_basisu.source})};ym.mesh=function(e,t){e.meshes.splice(t,1),Re.node(e,function(i){l(i.mesh)&&(i.mesh>t?i.mesh--:i.mesh===t&&delete i.mesh)})};ym.node=function(e,t){e.nodes.splice(t,1),Re.skin(e,function(i){l(i.skeleton)&&i.skeleton>t&&i.skeleton--,i.joints=i.joints.map(function(o){return o>t?o-1:o})}),Re.animation(e,function(i){Re.animationChannel(i,function(o){l(o.target)&&l(o.target.node)&&o.target.node>t&&o.target.node--})}),Re.technique(e,function(i){Re.techniqueUniform(i,function(o){l(o.node)&&o.node>t&&o.node--})}),Re.node(e,function(i){l(i.children)&&(i.children=i.children.filter(function(o){return o!==t}).map(function(o){return o>t?o-1:o}))}),Re.scene(e,function(i){i.nodes=i.nodes.filter(function(o){return o!==t}).map(function(o){return o>t?o-1:o})})};ym.material=function(e,t){e.materials.splice(t,1),Re.mesh(e,function(i){Re.meshPrimitive(i,function(o){l(o.material)&&o.material>t&&o.material--})})};ym.sampler=function(e,t){e.samplers.splice(t,1),Re.texture(e,function(i){l(i.sampler)&&i.sampler>t&&--i.sampler})};ym.texture=function(e,t){if(e.textures.splice(t,1),Re.material(e,function(i){$w(i,function(o,r){r.index>t&&--r.index})}),Rr(e,"EXT_feature_metadata")){Re.mesh(e,function(r){Re.meshPrimitive(r,function(s){let a=s.extensions;if(l(a)&&l(a.EXT_feature_metadata)){let u=a.EXT_feature_metadata.featureIdTextures;if(l(u)){let f=u.length;for(let h=0;h<f;++h){let g=u[h].featureIds.texture;g.index>t&&--g.index}}}})});let o=e.extensions.EXT_feature_metadata.featureTextures;for(let r in o)if(o.hasOwnProperty(r)){let a=o[r].properties;if(l(a)){for(let c in a)if(a.hasOwnProperty(c)){let f=a[c].texture;f.index>t&&--f.index}}}}if(Rr(e,"EXT_mesh_features")&&Re.mesh(e,function(i){Re.meshPrimitive(i,function(o){let r=o.extensions;if(l(r)&&l(r.EXT_mesh_features)){let a=r.EXT_mesh_features.featureIds;if(l(a)){let c=a.length;for(let u=0;u<c;++u){let f=a[u];l(f.texture)&&f.texture.index>t&&--f.texture.index}}}})}),Rr(e,"EXT_structural_metadata")){let o=e.extensions.EXT_structural_metadata.propertyTextures;if(l(o)){let r=o.length;for(let s=0;s<r;++s){let c=o[s].properties;for(let u in c)if(c.hasOwnProperty(u)){let f=c[u];f.index>t&&--f.index}}}}};function Cm(){}Cm.accessor=function(e){let t={};return Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){Re.meshPrimitiveAttribute(i,function(r){t[r]=!0}),Re.meshPrimitiveTarget(i,function(r){Re.meshPrimitiveTargetAttribute(r,function(s){t[s]=!0})});let o=i.indices;l(o)&&(t[o]=!0)})}),Re.skin(e,function(n){l(n.inverseBindMatrices)&&(t[n.inverseBindMatrices]=!0)}),Re.animation(e,function(n){Re.animationSampler(n,function(i){l(i.input)&&(t[i.input]=!0),l(i.output)&&(t[i.output]=!0)})}),Rr(e,"EXT_mesh_gpu_instancing")&&Re.node(e,function(n){l(n.extensions)&&l(n.extensions.EXT_mesh_gpu_instancing)&&Object.keys(n.extensions.EXT_mesh_gpu_instancing.attributes).forEach(function(i){let o=n.extensions.EXT_mesh_gpu_instancing.attributes[i];t[o]=!0})}),Rr(e,"CESIUM_primitive_outline")&&Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){let o=i.extensions;if(l(o)&&l(o.CESIUM_primitive_outline)){let s=o.CESIUM_primitive_outline.indices;l(s)&&(t[s]=!0)}})}),t};Cm.buffer=function(e){let t={};return Re.bufferView(e,function(n){l(n.buffer)&&(t[n.buffer]=!0),l(n.extensions)&&l(n.extensions.EXT_meshopt_compression)&&(t[n.extensions.EXT_meshopt_compression.buffer]=!0)}),t};Cm.bufferView=function(e){let t={};if(Re.accessor(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Re.shader(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Re.image(e,function(n){l(n.bufferView)&&(t[n.bufferView]=!0)}),Rr(e,"KHR_draco_mesh_compression")&&Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){l(i.extensions)&&l(i.extensions.KHR_draco_mesh_compression)&&(t[i.extensions.KHR_draco_mesh_compression.bufferView]=!0)})}),Rr(e,"EXT_feature_metadata")){let i=e.extensions.EXT_feature_metadata.featureTables;for(let o in i)if(i.hasOwnProperty(o)){let s=i[o].properties;if(l(s)){for(let a in s)if(s.hasOwnProperty(a)){let c=s[a];l(c.bufferView)&&(t[c.bufferView]=!0),l(c.arrayOffsetBufferView)&&(t[c.arrayOffsetBufferView]=!0),l(c.stringOffsetBufferView)&&(t[c.stringOffsetBufferView]=!0)}}}}if(Rr(e,"EXT_structural_metadata")){let i=e.extensions.EXT_structural_metadata.propertyTables;if(l(i)){let o=i.length;for(let r=0;r<o;++r){let a=i[r].properties;for(let c in a)if(a.hasOwnProperty(c)){let u=a[c];l(u.values)&&(t[u.values]=!0),l(u.arrayOffsets)&&(t[u.arrayOffsets]=!0),l(u.stringOffsets)&&(t[u.stringOffsets]=!0)}}}}return t};Cm.image=function(e){let t={};return Re.texture(e,function(n){l(n.source)&&(t[n.source]=!0),l(n.extensions)&&l(n.extensions.EXT_texture_webp)?t[n.extensions.EXT_texture_webp.source]=!0:l(n.extensions)&&l(n.extensions.KHR_texture_basisu)&&(t[n.extensions.KHR_texture_basisu.source]=!0)}),t};Cm.mesh=function(e){let t={};return Re.node(e,function(n){if(l(n.mesh&&l(e.meshes))){let i=e.meshes[n.mesh];l(i)&&l(i.primitives)&&i.primitives.length>0&&(t[n.mesh]=!0)}}),t};function Are(e,t,n){let i=e.nodes[t];return l(i.mesh)||l(i.camera)||l(i.skin)||l(i.weights)||l(i.extras)||l(i.extensions)&&Object.keys(i.extensions).length!==0||l(n[t])?!1:!l(i.children)||i.children.filter(function(o){return!Are(e,o,n)}).length===0}Cm.node=function(e){let t={};return Re.skin(e,function(n){l(n.skeleton)&&(t[n.skeleton]=!0),Re.skinJoint(n,function(i){t[i]=!0})}),Re.animation(e,function(n){Re.animationChannel(n,function(i){l(i.target)&&l(i.target.node)&&(t[i.target.node]=!0)})}),Re.technique(e,function(n){Re.techniqueUniform(n,function(i){l(i.node)&&(t[i.node]=!0)})}),Re.node(e,function(n,i){Are(e,i,t)||(t[i]=!0)}),t};Cm.material=function(e){let t={};return Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){l(i.material)&&(t[i.material]=!0)})}),t};Cm.texture=function(e){let t={};if(Re.material(e,function(n){$w(n,function(i){t[i]=!0})}),Rr(e,"EXT_feature_metadata")){Re.mesh(e,function(o){Re.meshPrimitive(o,function(r){let s=r.extensions;if(l(s)&&l(s.EXT_feature_metadata)){let c=s.EXT_feature_metadata.featureIdTextures;if(l(c)){let u=c.length;for(let f=0;f<u;++f){let A=c[f].featureIds.texture;t[A.index]=!0}}}})});let i=e.extensions.EXT_feature_metadata.featureTextures;for(let o in i)if(i.hasOwnProperty(o)){let s=i[o].properties;if(l(s)){for(let a in s)if(s.hasOwnProperty(a)){let u=s[a].texture;t[u.index]=!0}}}}if(Rr(e,"EXT_mesh_features")&&Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){let o=i.extensions;if(l(o)&&l(o.EXT_mesh_features)){let s=o.EXT_mesh_features.featureIds;if(l(s)){let a=s.length;for(let c=0;c<a;++c){let u=s[c];l(u.texture)&&(t[u.texture.index]=!0)}}}})}),Rr(e,"EXT_structural_metadata")){let i=e.extensions.EXT_structural_metadata.propertyTextures;if(l(i)){let o=i.length;for(let r=0;r<o;++r){let a=i[r].properties;for(let c in a)if(a.hasOwnProperty(c)){let u=a[c];t[u.index]=!0}}}}return t};Cm.sampler=function(e){let t={};return Re.texture(e,function(n){l(n.sampler)&&(t[n.sampler]=!0)}),t};var LO=Ike;function Tke(e,t){let n={byteLength:t.length,extras:{_pipeline:{source:t}}},o={buffer:aa(e.buffers,n),byteOffset:0,byteLength:t.length};return aa(e.bufferViews,o)}var OO=Tke;function Ske(e,t){let n=Bu(e,t),i=q.getSizeInBytes(t.componentType),o=Rf(t.type),r=t.count,s=new Array(o*r);if(!l(t.bufferView))return s.fill(0);let a=e.bufferViews[t.bufferView],c=e.buffers[a.buffer].extras._pipeline.source,u=t.byteOffset+a.byteOffset+c.byteOffset,f=new DataView(c.buffer),h=new Array(o),A=Kg(t.componentType);for(let g=0;g<r;++g){A(f,u,o,i,h);for(let m=0;m<o;++m)s[g*o+m]=h[m];u+=n}return s}var FO=Ske;function wke(e){let t;return Re.accessorWithSemantic(e,"JOINTS_0",function(n){let i=e.accessors[n];t=i.componentType,t===ee.BYTE?QO(e,i,q.UNSIGNED_BYTE):t!==ee.UNSIGNED_BYTE&&t!==ee.UNSIGNED_SHORT&&QO(e,i,q.UNSIGNED_SHORT)}),Re.accessorWithSemantic(e,"WEIGHTS_0",function(n){let i=e.accessors[n];t=i.componentType,t===ee.BYTE?QO(e,i,q.UNSIGNED_BYTE):t===ee.SHORT&&QO(e,i,q.UNSIGNED_SHORT)}),e}function QO(e,t,n){let i=q.createTypedArray(n,FO(e,t)),o=new Uint8Array(i.buffer);t.bufferView=OO(e,o),t.componentType=n,t.byteOffset=0}var kO=wke;function Bke(e,t){return qI(e,t),t==="CESIUM_RTC"&&Dke(e),aW(e,t)}function Dke(e){Re.technique(e,function(t){Re.techniqueUniform(t,function(n){n.semantic==="CESIUM_RTC_MODELVIEW"&&(n.semantic="MODELVIEW")})})}function aW(e,t){if(Array.isArray(e)){let n=e.length;for(let i=0;i<n;++i)aW(e[i],t)}else if(e!==null&&typeof e=="object"&&e.constructor===Object){let n=e.extensions,i;l(n)&&(i=n[t],l(i)&&(delete n[t],Object.keys(n).length===0&&delete e.extensions));for(let o in e)Object.prototype.hasOwnProperty.call(e,o)&&aW(e[o],t);return i}}var XI=Bke;var UO={.8:Lke,"1.0":n3e,"2.0":void 0};function vke(e,t){t=t??{};let n=t.targetVersion,i=e.version;e.asset=e.asset??{version:"1.0"},e.asset.version=e.asset.version??"1.0",i=(i??e.asset.version).toString(),Object.prototype.hasOwnProperty.call(UO,i)||(l(i)&&(i=i.substring(0,3)),Object.prototype.hasOwnProperty.call(UO,i)||(i="1.0"));let o=UO[i];for(;l(o)&&i!==n;)o(e,t),i=e.asset.version,o=UO[i];return t.keepLegacyExtensions||(r3e(e,t),s3e(e)),e}function _re(e){let t=e.materials;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let i=t[n],o=i.instanceTechnique;l(o)&&(i.technique=o.technique,i.values=o.values,delete i.instanceTechnique)}}function Pke(e){let t=e.meshes;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let o=t[n].primitives;if(l(o)){let r=o.length;for(let s=0;s<r;++s){let a=o[s],c=a.primitive??ee.TRIANGLES;a.mode=a.mode??c,delete a.primitive}}}}function Rke(e){let t=e.nodes,n=new d,i=new Le;for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let r=t[o];if(l(r.rotation)){let a=r.rotation;d.fromArray(a,0,n),Le.fromAxisAngle(n,a[3],i),r.rotation=[i.x,i.y,i.z,i.w]}let s=r.instanceSkin;l(s)&&(r.skeletons=s.skeletons,r.skin=s.skin,r.meshes=s.meshes,delete r.instanceSkin)}}function Mke(e){let t=e.animations,n=e.accessors,i=e.bufferViews,o=e.buffers,r={},s=new d,a=new Le;for(let c in t)if(Object.prototype.hasOwnProperty.call(t,c)){let u=t[c],f=u.channels,h=u.parameters,A=u.samplers;if(l(f)){let g=f.length;for(let m=0;m<g;++m){let _=f[m];if(_.target.path==="rotation"){let y=h[A[_.sampler].output];if(l(r[y]))continue;r[y]=!0;let C=n[y],E=i[C.bufferView],b=o[E.buffer].extras._pipeline.source,S=b.byteOffset+E.byteOffset+C.byteOffset,B=C.componentType,v=C.count,P=Rf(C.type),N=C.count*P,L=q.createArrayBufferView(B,b.buffer,S,N);for(let p=0;p<v;p++){let x=p*P;d.unpack(L,x,s);let T=L[x+3];Le.fromAxisAngle(s,T,a),Le.pack(a,L,x)}}}}}}function Nke(e){let t=e.techniques;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let i=t[n],o=i.passes;if(l(o)){let r=i.pass??"defaultPass";if(Object.prototype.hasOwnProperty.call(o,r)){let s=o[r],a=s.instanceProgram;i.attributes=i.attributes??a.attributes,i.program=i.program??a.program,i.uniforms=i.uniforms??a.uniforms,i.states=i.states??s.states}delete i.passes,delete i.pass}}}function Lke(e){l(e.asset)||(e.asset={});let t=e.asset;if(t.version="1.0",typeof t.profile=="string"){let n=t.profile.split(" ");t.profile={api:n[0],version:n[1]}}else t.profile={};if(l(e.version)&&delete e.version,_re(e),Pke(e),Rke(e),Mke(e),Nke(e),l(e.allExtensions)&&(e.extensionsUsed=e.allExtensions,delete e.allExtensions),l(e.lights)){let n=e.extensions??{};e.extensions=n;let i=n.KHR_materials_common??{};n.KHR_materials_common=i,i.lights=e.lights,delete e.lights,Yd(e,"KHR_materials_common")}}function Oke(e){let t=e.animations;for(let n in t)if(Object.prototype.hasOwnProperty.call(t,n)){let i=t[n],o=i.parameters;if(l(o)){let r=i.samplers;for(let s in r)if(Object.prototype.hasOwnProperty.call(r,s)){let a=r[s];a.input=o[a.input],a.output=o[a.output]}delete i.parameters}}}function pre(e,t){let n=[];for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i)){let o=e[i];t[i]=n.length,n.push(o),l(o.name)||(o.name=i)}return n}function Fke(e){let t,n={accessors:{},animations:{},buffers:{},bufferViews:{},cameras:{},images:{},materials:{},meshes:{},nodes:{},programs:{},samplers:{},scenes:{},shaders:{},skins:{},textures:{},techniques:{}},i,o={},r=e.nodes;for(let s in r)Object.prototype.hasOwnProperty.call(r,s)&&(i=r[s].jointName,l(i)&&(o[i]=s));for(let s in e)if(Object.prototype.hasOwnProperty.call(e,s)&&l(n[s])){let a={},c=e[s];e[s]=pre(c,a),n[s]=a}for(i in o)Object.prototype.hasOwnProperty.call(o,i)&&(o[i]=n.nodes[o[i]]);l(e.scene)&&(e.scene=n.scenes[e.scene]),Re.bufferView(e,function(s){l(s.buffer)&&(s.buffer=n.buffers[s.buffer])}),Re.accessor(e,function(s){l(s.bufferView)&&(s.bufferView=n.bufferViews[s.bufferView])}),Re.shader(e,function(s){let a=s.extensions;if(l(a)){let c=a.KHR_binary_glTF;l(c)&&(s.bufferView=n.bufferViews[c.bufferView],delete a.KHR_binary_glTF),Object.keys(a).length===0&&delete s.extensions}}),Re.program(e,function(s){l(s.vertexShader)&&(s.vertexShader=n.shaders[s.vertexShader]),l(s.fragmentShader)&&(s.fragmentShader=n.shaders[s.fragmentShader])}),Re.technique(e,function(s){l(s.program)&&(s.program=n.programs[s.program]),Re.techniqueParameter(s,function(a){l(a.node)&&(a.node=n.nodes[a.node]);let c=a.value;typeof c=="string"&&(a.value={index:n.textures[c]})})}),Re.mesh(e,function(s){Re.meshPrimitive(s,function(a){l(a.indices)&&(a.indices=n.accessors[a.indices]),Re.meshPrimitiveAttribute(a,function(c,u){a.attributes[u]=n.accessors[c]}),l(a.material)&&(a.material=n.materials[a.material])})}),Re.node(e,function(s){let a=s.children;if(l(a)){let c=a.length;for(t=0;t<c;++t)a[t]=n.nodes[a[t]]}if(l(s.meshes)){let c=s.meshes,u=c.length;if(u>0)for(s.mesh=n.meshes[c[0]],t=1;t<u;++t){let f={mesh:n.meshes[c[t]]},h=aa(e.nodes,f);l(a)||(a=[],s.children=a),a.push(h)}delete s.meshes}if(l(s.camera)&&(s.camera=n.cameras[s.camera]),l(s.skin)&&(s.skin=n.skins[s.skin]),l(s.skeletons)){let c=s.skeletons;if(c.length>0&&l(s.skin)){let f=e.skins[s.skin];f.skeleton=n.nodes[c[0]]}delete s.skeletons}l(s.jointName)&&delete s.jointName}),Re.skin(e,function(s){l(s.inverseBindMatrices)&&(s.inverseBindMatrices=n.accessors[s.inverseBindMatrices]);let a=s.jointNames;if(l(a)){let c=[],u=a.length;for(t=0;t<u;++t)c[t]=o[a[t]];s.joints=c,delete s.jointNames}}),Re.scene(e,function(s){let a=s.nodes;if(l(a)){let c=a.length;for(t=0;t<c;++t)a[t]=n.nodes[a[t]]}}),Re.animation(e,function(s){let a={};s.samplers=pre(s.samplers,a),Re.animationSampler(s,function(c){c.input=n.accessors[c.input],c.output=n.accessors[c.output]}),Re.animationChannel(s,function(c){c.sampler=a[c.sampler];let u=c.target;l(u)&&(u.node=n.nodes[u.id],delete u.id)})}),Re.material(e,function(s){l(s.technique)&&(s.technique=n.techniques[s.technique]),Re.materialValue(s,function(c,u){typeof c=="string"&&(s.values[u]={index:n.textures[c]})});let a=s.extensions;if(l(a)){let c=a.KHR_materials_common;l(c)&&l(c.values)&&Re.materialValue(c,function(u,f){typeof u=="string"&&(c.values[f]={index:n.textures[u]})})}}),Re.image(e,function(s){let a=s.extensions;if(l(a)){let c=a.KHR_binary_glTF;l(c)&&(s.bufferView=n.bufferViews[c.bufferView],s.mimeType=c.mimeType,delete a.KHR_binary_glTF),Object.keys(a).length===0&&delete s.extensions}}),Re.texture(e,function(s){l(s.sampler)&&(s.sampler=n.samplers[s.sampler]),l(s.source)&&(s.source=n.images[s.source])})}function Qke(e){Re.animation(e,function(t){Re.animationSampler(t,function(n){delete n.name})})}function kke(e){for(let t in e)if(Object.prototype.hasOwnProperty.call(e,t)){let n=e[t];Array.isArray(n)&&n.length===0&&delete e[t]}Re.node(e,function(t){l(t.children)&&t.children.length===0&&delete t.children})}function Uke(e){let t=e.asset;delete t.profile,delete t.premultipliedAlpha}var Gke={CESIUM_RTC:!0,KHR_materials_common:!0,WEB3D_quantized_attributes:!0};function zke(e){let t=e.extensionsUsed;if(e.extensionsRequired=e.extensionsRequired??[],l(t)){let n=t.length;for(let i=0;i<n;++i){let o=t[i];l(Gke[o])&&e.extensionsRequired.push(o)}}}function Vke(e){Re.buffer(e,function(t){delete t.type})}function Hke(e){Re.texture(e,function(t){delete t.format,delete t.internalFormat,delete t.target,delete t.type})}function Wke(e){Re.mesh(e,function(t){Re.meshPrimitive(t,function(n){Re.meshPrimitiveAttribute(n,function(i,o){o==="TEXCOORD"?n.attributes.TEXCOORD_0=i:o==="COLOR"&&(n.attributes.COLOR_0=i)}),delete n.attributes.TEXCOORD,delete n.attributes.COLOR})}),Re.technique(e,function(t){Re.techniqueParameter(t,function(n){let i=n.semantic;l(i)&&(i==="TEXCOORD"?n.semantic="TEXCOORD_0":i==="COLOR"&&(n.semantic="COLOR_0"))})})}var jke={POSITION:!0,NORMAL:!0,TANGENT:!0},Yke={COLOR:"COLOR",JOINT:"JOINTS",JOINTS:"JOINTS",TEXCOORD:"TEXCOORD",WEIGHT:"WEIGHTS",WEIGHTS:"WEIGHTS"};function qke(e){let t={};Re.mesh(e,function(n){Re.meshPrimitive(n,function(i){Re.meshPrimitiveAttribute(i,function(o,r){if(r.charAt(0)!=="_"){let s=r.search(/_[0-9]+/g),a=r,c="_0";s>=0&&(a=r.substring(0,s),c=r.substring(s));let u,f=Yke[a];l(f)?(u=f+c,t[r]=u):l(jke[a])||(u=`_${r}`,t[r]=u)}});for(let o in t)if(Object.prototype.hasOwnProperty.call(t,o)){let r=t[o],s=i.attributes[o];l(s)&&(delete i.attributes[o],i.attributes[r]=s)}})}),Re.technique(e,function(n){Re.techniqueParameter(n,function(i){let o=t[i.semantic];l(o)&&(i.semantic=o)})})}function Kke(e){Re.camera(e,function(t){let n=t.perspective;if(l(n)){let i=n.aspectRatio;l(i)&&i===0&&delete n.aspectRatio;let o=n.yfov;l(o)&&o===0&&(n.yfov=1)}})}function lW(e,t){return l(t.byteStride)&&t.byteStride!==0?t.byteStride:Bu(e,t)}function Xke(e){Re.buffer(e,function(t){l(t.byteLength)||(t.byteLength=t.extras._pipeline.source.length)}),Re.accessor(e,function(t){let n=t.bufferView;if(l(n)){let i=e.bufferViews[n],o=lW(e,t),r=t.byteOffset+t.count*o;i.byteLength=Math.max(i.byteLength??0,r)}})}function Jke(e){let t,n,i,o=e.bufferViews,r={};Re.accessorContainingVertexAttributeData(e,function(a){let c=e.accessors[a];l(c.bufferView)&&(r[c.bufferView]=!0)});let s={};Re.accessor(e,function(a){l(a.bufferView)&&(s[a.bufferView]=s[a.bufferView]??[],s[a.bufferView].push(a))});for(let a in s)if(Object.prototype.hasOwnProperty.call(s,a)){i=o[a];let c=s[a];c.sort(function(A,g){return A.byteOffset-g.byteOffset});let u=0,f=0,h=c.length;for(t=0;t<h;++t){let A=c[t],g=lW(e,A),m=A.byteOffset,_=A.count*g;delete A.byteStride;let y=t<h-1,C=y?lW(e,c[t+1]):void 0;if(g!==C){let E=ze(i,!0);r[a]&&(E.byteStride=g),E.byteOffset+=u,E.byteLength=m+_-u;let I=aa(o,E);for(n=f;n<=t;++n)A=c[n],A.bufferView=I,A.byteOffset=A.byteOffset-u;u=y?c[t+1].byteOffset:void 0,f=t+1}}}LO(e,["accessor","bufferView","buffer"])}function Zke(e){Re.accessorWithSemantic(e,"POSITION",function(t){let n=e.accessors[t];if(!l(n.min)||!l(n.max)){let i=KI(e,n);n.min=i.min,n.max=i.max}})}function yre(e){return(!l(e.children)||e.children.length===0)&&(!l(e.meshes)||e.meshes.length===0)&&!l(e.camera)&&!l(e.skin)&&!l(e.skeletons)&&!l(e.jointName)&&(!l(e.translation)||d.fromArray(e.translation).equals(d.ZERO))&&(!l(e.scale)||d.fromArray(e.scale).equals(new d(1,1,1)))&&(!l(e.rotation)||se.fromArray(e.rotation).equals(new se(0,0,0,1)))&&(!l(e.matrix)||R.fromColumnMajorArray(e.matrix).equals(R.IDENTITY))&&!l(e.extensions)&&!l(e.extras)}function Cre(e,t){Re.scene(e,function(n){let i=n.nodes;if(l(i)){let o=i.length;for(let r=o;r>=0;--r)if(i[r]===t){i.splice(r,1);return}}}),Re.node(e,function(n,i){if(l(n.children)){let o=n.children.indexOf(t);o>-1&&(n.children.splice(o,1),yre(n)&&Cre(e,i))}}),delete e.nodes[t]}function $ke(e){return Re.node(e,function(t,n){yre(t)&&Cre(e,n)}),e}function e3e(e){Re.animation(e,function(t){Re.animationSampler(t,function(n){let i=e.accessors[n.input];if(!l(i.min)||!l(i.max)){let o=KI(e,i);i.min=o.min,i.max=o.max}})})}function t3e(e){Re.accessor(e,function(t){if(l(t.min)||l(t.max)){let n=KI(e,t);l(t.min)&&(t.min=n.min),l(t.max)&&(t.max=n.max)}})}function n3e(e){e.asset=e.asset??{},e.asset.version="2.0",_re(e),Oke(e),$ke(e),Fke(e),Qke(e),Uke(e),zke(e),Xke(e),Jke(e),Zke(e),e3e(e),t3e(e),Vke(e),Hke(e),Wke(e),qke(e),kO(e),Kke(e),RO(e),NO(e),kke(e)}var i3e=["u_tex","u_diffuse","u_emission","u_diffuse_tex"],o3e=["u_diffuse","u_diffuse_mat"];function uW(e){e.pbrMetallicRoughness=l(e.pbrMetallicRoughness)?e.pbrMetallicRoughness:{},e.pbrMetallicRoughness.roughnessFactor=1,e.pbrMetallicRoughness.metallicFactor=0}function fW(e){return l(e.index)}function dW(e){return Array.isArray(e)&&e.length===4}function Ere(e){let t=new Array(4);t[3]=e[3];for(let n=0;n<3;n++){let i=e[n];i<=.04045?t[n]=e[n]*.07739938080495357:t[n]=Math.pow((i+.055)*.9478672985781991,2.4)}return t}function r3e(e,t){t=t??{};let n=t.baseColorTextureNames??i3e,i=t.baseColorFactorNames??o3e;Re.material(e,function(o){Re.materialValue(o,function(r,s){n.indexOf(s)!==-1&&fW(r)?(uW(o),o.pbrMetallicRoughness.baseColorTexture=r):i.indexOf(s)!==-1&&dW(r)&&(uW(o),o.pbrMetallicRoughness.baseColorFactor=Ere(r))})}),XI(e,"KHR_techniques_webgl"),XI(e,"KHR_blend")}function cW(e,t){l(t)&&(dW(t)?e.pbrMetallicRoughness.baseColorFactor=Ere(t):fW(t)&&(e.pbrMetallicRoughness.baseColorTexture=t))}function gre(e,t){l(t)&&(dW(t)?e.emissiveFactor=t.slice(0,3):fW(t)&&(e.emissiveTexture=t))}function s3e(e){Re.material(e,function(t){let n=(t.extensions??{}).KHR_materials_common;if(!l(n))return;let i=n.values??{},o=i.ambient,r=i.diffuse,s=i.emission,a=i.transparency,c=n.doubleSided,u=n.transparent;uW(t),n.technique==="CONSTANT"?(Yd(e,"KHR_materials_unlit"),t.extensions=l(t.extensions)?t.extensions:{},t.extensions.KHR_materials_unlit={},cW(t,s),cW(t,o)):(cW(t,r),gre(t,o),gre(t,s)),l(c)&&(t.doubleSided=c),l(a)&&(l(t.pbrMetallicRoughness.baseColorFactor)?t.pbrMetallicRoughness.baseColorFactor[3]*=a:t.pbrMetallicRoughness.baseColorFactor=[1,1,1,a]),l(u)&&(t.alphaMode=u?"BLEND":"OPAQUE")}),XI(e,"KHR_materials_common")}var GO=vke;function Sc(){}Sc.getError=function(e,t,n){let i=`Failed to load ${e}: ${t}`;l(n)&&l(n.message)&&(i+=` +${n.message}`);let o=new ce(i);return l(n)&&(o.stack=`Original stack: +${n.stack} +Handler stack: +${o.stack}`),o};Sc.getNodeTransform=function(e){return l(e.matrix)?e.matrix:R.fromTranslationQuaternionRotationScale(l(e.translation)?e.translation:d.ZERO,l(e.rotation)?e.rotation:Le.IDENTITY,l(e.scale)?e.scale:d.ONE)};Sc.getAttributeBySemantic=function(e,t,n){let i=e.attributes,o=i.length;for(let r=0;r<o;++r){let s=i[r],a=l(n)?s.setIndex===n:!0;if(s.semantic===t&&a)return s}};Sc.getAttributeByName=function(e,t){let n=e.attributes,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.name===t)return r}};Sc.getFeatureIdsByLabel=function(e,t){for(let n=0;n<e.length;n++){let i=e[n];if(i.positionalLabel===t||i.label===t)return i}};Sc.hasQuantizedAttributes=function(e){if(!l(e))return!1;for(let t=0;t<e.length;t++){let n=e[t];if(l(n.quantization))return!0}return!1};Sc.getAttributeInfo=function(e){let t=e.semantic,n=e.setIndex,i,o=!1;l(t)?(i=ct.getVariableName(t,n),o=!0):(i=e.name,i=i.replace(/^_/,""),i=i.toLowerCase());let r=/^color_\d+$/.test(i),s=e.type,a=Ht.getGlslType(s);r&&(a="vec4");let c=l(e.quantization),u;return c&&(u=r?"vec4":Ht.getGlslType(e.quantization.type)),{attribute:e,isQuantized:c,variableName:i,hasSemantic:o,glslType:a,quantizedGlslType:u}};var a3e=new d,c3e=new d;Sc.getPositionMinMax=function(e,t,n){let i=Sc.getAttributeBySemantic(e,"POSITION"),o=i.max,r=i.min;return l(n)&&l(t)&&(r=d.add(r,t,c3e),o=d.add(o,n,a3e)),{min:r,max:o}};Sc.getAxisCorrectionMatrix=function(e,t,n){return n=R.clone(R.IDENTITY,n),e===Ao.Y?n=R.clone(Ao.Y_UP_TO_Z_UP,n):e===Ao.X&&(n=R.clone(Ao.X_UP_TO_Z_UP,n)),t===Ao.Z&&(n=R.multiplyTransformation(n,Ao.Z_UP_TO_X_UP,n)),n};var l3e=new J;Sc.getCullFace=function(e,t){if(!Me.isTriangles(t))return Mi.BACK;let n=R.getMatrix3(e,l3e);return J.determinant(n)<0?Mi.FRONT:Mi.BACK};Sc.sanitizeGlslIdentifier=function(e){let t=e.replaceAll(/[^A-Za-z0-9]+/g,"_");return t=t.replace(/^gl_/,""),/^\d/.test(t)&&(t=`_${t}`),t};Sc.supportedExtensions={AGI_articulations:!0,CESIUM_primitive_outline:!0,CESIUM_RTC:!0,EXT_feature_metadata:!0,EXT_implicit_cylinder_region:!0,EXT_implicit_ellipsoid_region:!0,EXT_instance_features:!0,EXT_mesh_features:!0,EXT_mesh_gpu_instancing:!0,EXT_meshopt_compression:!0,EXT_primitive_voxels:!0,EXT_structural_metadata:!0,EXT_texture_webp:!0,KHR_blend:!0,KHR_draco_mesh_compression:!0,KHR_implicit_shapes:!0,KHR_materials_common:!0,KHR_materials_pbrSpecularGlossiness:!0,KHR_materials_specular:!0,KHR_materials_anisotropy:!0,KHR_materials_clearcoat:!0,KHR_materials_unlit:!0,KHR_mesh_quantization:!0,KHR_techniques_webgl:!0,KHR_texture_basisu:!0,KHR_texture_transform:!0,KHR_gaussian_splatting:!0,KHR_spz_gaussian_splats_compression:!0,WEB3D_quantized_attributes:!0};Sc.checkSupportedExtensions=function(e){let t=e.length;for(let n=0;n<t;n++){let i=e[n];if(!Sc.supportedExtensions[i])throw new ce(`Unsupported glTF Extension: ${i}`)}};var Qt=Sc;function Xg(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltfResource,i=e.baseResource,o=e.typedArray,r=e.gltfJson,s=e.cacheKey;this._resourceCache=t,this._gltfResource=n,this._baseResource=i,this._typedArray=o,this._gltfJson=r,this._cacheKey=s,this._gltf=void 0,this._bufferLoaders=[],this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(Xg.prototype=Object.create(qi.prototype),Xg.prototype.constructor=Xg);Object.defineProperties(Xg.prototype,{cacheKey:{get:function(){return this._cacheKey}},gltf:{get:function(){return this._gltf}}});Xg.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,l(this._gltfJson)?(this._promise=Ire(this,this._gltfJson),this._promise):l(this._typedArray)?(this._promise=xre(this,this._typedArray),this._promise):(this._promise=u3e(this),this._promise))};async function u3e(e){let t;try{let n=await e._fetchGltf();if(e.isDestroyed())return;t=new Uint8Array(n)}catch(n){if(e.isDestroyed())return;hW(e,n)}return xre(e,t)}function hW(e,t){e.unload(),e._state=dt.FAILED;let n=`Failed to load glTF: ${e._gltfResource.url}`;throw e.getError(n,t)}async function f3e(e,t){if(l(t.asset)&&t.asset.version==="2.0"&&!Rr(t,"KHR_techniques_webgl")&&!Rr(t,"KHR_materials_common"))return Promise.resolve();let n=[];Re.buffer(t,function(i){if(!l(i.extras._pipeline.source)&&l(i.uri)){let o=e._baseResource.getDerivedResource({url:i.uri}),s=e._resourceCache.getExternalBufferLoader({resource:o});e._bufferLoaders.push(s),n.push(s.load().then(function(){s.isDestroyed()||(i.extras._pipeline.source=s.typedArray)}))}}),await Promise.all(n),GO(t)}function d3e(e){let t=[];return Re.buffer(e,function(n){let i=n.uri;!l(n.extras._pipeline.source)&&l(i)&&mg(i)&&(delete n.uri,t.push(we.fetchArrayBuffer(i).then(function(o){n.extras._pipeline.source=new Uint8Array(o)})))}),Promise.all(t)}function h3e(e,t){let n=[];return Re.buffer(t,function(i,o){let r=i.extras._pipeline.source;if(l(r)&&!l(i.uri)){let a=e._resourceCache.getEmbeddedBufferLoader({parentResource:e._gltfResource,bufferId:o,typedArray:r});e._bufferLoaders.push(a),n.push(a.load())}}),Promise.all(n)}async function Ire(e,t){try{kC(t),await d3e(t),await f3e(e,t),SO(t),await h3e(e,t),PO(t);let n=t.asset.version;if(n!=="1.0"&&n!=="2.0")throw new ce(`Unsupported glTF version: ${n}`);let i=t.extensionsRequired;return l(i)&&Qt.checkSupportedExtensions(i),e._gltf=t,e._state=dt.READY,e}catch(n){if(e.isDestroyed())return;hW(e,n)}}async function xre(e,t){let n;try{gm(t)==="glTF"?n=DO(t):n=yr(t)}catch(i){if(e.isDestroyed())return;hW(e,i)}return Ire(e,n)}Xg.prototype.unload=function(){let e=this._bufferLoaders,t=e.length;for(let n=0;n<t;++n)e[n]=!e[n].isDestroyed()&&this._resourceCache.unload(e[n]);this._bufferLoaders.length=0,this._gltf=void 0};Xg.prototype._fetchGltf=function(){return this._gltfResource.fetchArrayBuffer()};var eB=Xg;var m3e={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"},np=Object.freeze(m3e);var Lo={};function A3e(){this.octEncoded=!1,this.octEncodedZXY=!1,this.normalizationRange=void 0,this.quantizedVolumeOffset=void 0,this.quantizedVolumeDimensions=void 0,this.quantizedVolumeStepSize=void 0,this.componentDatatype=void 0,this.type=void 0}function p3e(){this.name=void 0,this.semantic=void 0,this.setIndex=void 0,this.componentDatatype=void 0,this.type=void 0,this.normalized=!1,this.count=void 0,this.min=void 0,this.max=void 0,this.constant=void 0,this.quantization=void 0,this.typedArray=void 0,this.buffer=void 0,this.byteOffset=0,this.byteStride=void 0}function g3e(){this.indexDatatype=void 0,this.count=void 0,this.buffer=void 0,this.typedArray=void 0}function _3e(){this.featureCount=void 0,this.nullFeatureId=void 0,this.propertyTableId=void 0,this.setIndex=void 0,this.label=void 0,this.positionalLabel=void 0}function y3e(){this.featureCount=void 0,this.nullFeatureId=void 0,this.propertyTableId=void 0,this.offset=0,this.repeat=void 0,this.label=void 0,this.positionalLabel=void 0}function C3e(){this.featureCount=void 0,this.nullFeatureId=void 0,this.propertyTableId=void 0,this.textureReader=void 0,this.label=void 0,this.positionalLabel=void 0}function E3e(){this.attributes=[]}function I3e(){this.attributes=[],this.morphTargets=[],this.indices=void 0,this.material=void 0,this.primitiveType=void 0,this.featureIds=[],this.propertyTextureIds=[],this.propertyAttributeIds=[],this.outlineCoordinates=void 0,this.modelPrimitiveImagery=void 0}function x3e(){this.attributes=[],this.featureIds=[],this.transformInWorldSpace=!1}function b3e(){this.index=void 0,this.joints=[],this.inverseBindMatrices=[]}function T3e(){this.name=void 0,this.index=void 0,this.children=[],this.primitives=[],this.instances=void 0,this.skin=void 0,this.matrix=void 0,this.translation=void 0,this.rotation=void 0,this.scale=void 0,this.morphWeights=[],this.articulationName=void 0}function S3e(){this.nodes=[]}var w3e={TRANSLATION:"translation",ROTATION:"rotation",SCALE:"scale",WEIGHTS:"weights"};function B3e(){this.input=[],this.interpolation=void 0,this.output=[]}function D3e(){this.node=void 0,this.path=void 0}function v3e(){this.sampler=void 0,this.target=void 0}function P3e(){this.name=void 0,this.samplers=[],this.channels=[]}function R3e(){this.name=void 0,this.type=void 0,this.minimumValue=void 0,this.maximumValue=void 0,this.initialValue=void 0}function M3e(){this.name=void 0,this.stages=[]}function bre(){this.credits=[]}function N3e(){this.asset=new bre,this.scene=void 0,this.nodes=[],this.skins=[],this.animations=[],this.articulations=[],this.structuralMetadata=void 0,this.upAxis=void 0,this.forwardAxis=void 0,this.transform=R.clone(R.IDENTITY),this.extensions={}}function L3e(){this.texture=void 0,this.index=void 0,this.texCoord=0,this.transform=J.clone(J.IDENTITY),this.scale=1,this.channels=void 0}function Jg(){this.baseColorTexture=void 0,this.metallicRoughnessTexture=void 0,this.baseColorFactor=se.clone(Jg.DEFAULT_BASE_COLOR_FACTOR),this.metallicFactor=Jg.DEFAULT_METALLIC_FACTOR,this.roughnessFactor=Jg.DEFAULT_ROUGHNESS_FACTOR}Jg.DEFAULT_BASE_COLOR_FACTOR=se.ONE;Jg.DEFAULT_METALLIC_FACTOR=1;Jg.DEFAULT_ROUGHNESS_FACTOR=1;function UC(){this.diffuseTexture=void 0,this.specularGlossinessTexture=void 0,this.diffuseFactor=se.clone(UC.DEFAULT_DIFFUSE_FACTOR),this.specularFactor=d.clone(UC.DEFAULT_SPECULAR_FACTOR),this.glossinessFactor=UC.DEFAULT_GLOSSINESS_FACTOR}UC.DEFAULT_DIFFUSE_FACTOR=se.ONE;UC.DEFAULT_SPECULAR_FACTOR=d.ONE;UC.DEFAULT_GLOSSINESS_FACTOR=1;function tB(){this.specularFactor=tB.DEFAULT_SPECULAR_FACTOR,this.specularTexture=void 0,this.specularColorFactor=d.clone(tB.DEFAULT_SPECULAR_COLOR_FACTOR),this.specularColorTexture=void 0}tB.DEFAULT_SPECULAR_FACTOR=1;tB.DEFAULT_SPECULAR_COLOR_FACTOR=d.ONE;function nB(){this.anisotropyStrength=nB.DEFAULT_ANISOTROPY_STRENGTH,this.anisotropyRotation=nB.DEFAULT_ANISOTROPY_ROTATION,this.anisotropyTexture=void 0}nB.DEFAULT_ANISOTROPY_STRENGTH=0;nB.DEFAULT_ANISOTROPY_ROTATION=0;function iB(){this.clearcoatFactor=iB.DEFAULT_CLEARCOAT_FACTOR,this.clearcoatTexture=void 0,this.clearcoatRoughnessFactor=iB.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR,this.clearcoatRoughnessTexture=void 0,this.clearcoatNormalTexture=void 0}iB.DEFAULT_CLEARCOAT_FACTOR=0;iB.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR=0;function mW(){this.metallicRoughness=new Jg,this.specularGlossiness=void 0,this.specular=void 0,this.anisotropy=void 0,this.clearcoat=void 0,this.emissiveTexture=void 0,this.normalTexture=void 0,this.occlusionTexture=void 0,this.emissiveFactor=d.clone(mW.DEFAULT_EMISSIVE_FACTOR),this.alphaMode=np.OPAQUE,this.alphaCutoff=.5,this.doubleSided=!1,this.unlit=!1}mW.DEFAULT_EMISSIVE_FACTOR=d.ZERO;Lo.Quantization=A3e;Lo.Attribute=p3e;Lo.Indices=g3e;Lo.FeatureIdAttribute=_3e;Lo.FeatureIdTexture=C3e;Lo.FeatureIdImplicitRange=y3e;Lo.MorphTarget=E3e;Lo.Primitive=I3e;Lo.Instances=x3e;Lo.Skin=b3e;Lo.Node=T3e;Lo.Scene=S3e;Lo.AnimatedPropertyType=Object.freeze(w3e);Lo.AnimationSampler=B3e;Lo.AnimationTarget=D3e;Lo.AnimationChannel=v3e;Lo.Animation=P3e;Lo.ArticulationStage=R3e;Lo.Articulation=M3e;Lo.Asset=bre;Lo.Components=N3e;Lo.TextureReader=L3e;Lo.MetallicRoughness=Jg;Lo.SpecularGlossiness=UC;Lo.Specular=tB;Lo.Anisotropy=nB;Lo.Clearcoat=iB;Lo.Material=mW;var bn=Lo;var zO={};zO.getImageIdFromTexture=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,textureId:n,supportedImageFormats:i}=e,o=t.textures[n],r=o.extensions;if(l(r)){if(i.webp&&l(r.EXT_texture_webp))return r.EXT_texture_webp.source;if(i.basis&&l(r.KHR_texture_basisu))return r.KHR_texture_basisu.source}return o.source};zO.createSampler=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,textureInfo:n,compressedTextureNoMipmap:i=!1}=e,o=Tn.REPEAT,r=Tn.REPEAT,s=Zt.LINEAR,a=pi.LINEAR,c=n.index,f=t.textures[c].sampler;if(l(f)){let h=t.samplers[f];o=h.wrapS??o,r=h.wrapT??r,s=h.minFilter??s,a=h.magFilter??a}return i&&s!==Zt.LINEAR&&s!==Zt.NEAREST&&(s===Zt.NEAREST_MIPMAP_NEAREST||s===Zt.NEAREST_MIPMAP_LINEAR?s=Zt.NEAREST:s=Zt.LINEAR),new on({wrapS:o,wrapT:r,minificationFilter:s,magnificationFilter:a})};var O3e=new k(1,1);zO.createModelTextureReader=function(e){e=e??V.EMPTY_OBJECT;let{textureInfo:t,channels:n,texture:i}=e,o=t.texCoord??0,r,s=t.extensions?.KHR_texture_transform;if(l(s)){o=s.texCoord??o;let c=l(s.offset)?k.unpack(s.offset):k.ZERO,u=s.rotation??0,f=l(s.scale)?k.unpack(s.scale):O3e;u=-u,r=new J(Math.cos(u)*f.x,-Math.sin(u)*f.y,c.x,Math.sin(u)*f.x,Math.cos(u)*f.y,c.y,0,0,1)}let a=new bn.TextureReader;return a.index=t.index,a.texture=i,a.texCoord=o,a.scale=t.scale,a.transform=r,a.channels=n,a};var Du=zO;function F3e(e){let t=document.createElement("canvas");return t.width=D.nextPowerOfTwo(e.width),t.height=D.nextPowerOfTwo(e.height),t.getContext("2d").drawImage(e,0,0,e.width,e.height,0,0,t.width,t.height),t}var GC=F3e;function Zg(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.textureInfo,o=e.gltfResource,r=e.baseResource,s=e.supportedImageFormats,a=e.cacheKey,c=e.asynchronous??!0,u=i.index,f=Du.getImageIdFromTexture({gltf:n,textureId:u,supportedImageFormats:s});this._resourceCache=t,this._gltf=n,this._textureInfo=i,this._imageId=f,this._gltfResource=o,this._baseResource=r,this._cacheKey=a,this._asynchronous=c,this._imageLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._texture=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(Zg.prototype=Object.create(qi.prototype),Zg.prototype.constructor=Zg);Object.defineProperties(Zg.prototype,{cacheKey:{get:function(){return this._cacheKey}},texture:{get:function(){return this._texture}}});var Q3e=new AW;async function k3e(e){let t=e._resourceCache;try{let n=t.getImageLoader({gltf:e._gltf,imageId:e._imageId,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._imageLoader=n,await n.load(),e.isDestroyed()?void 0:(e._image=n.image,e._mipLevels=n.mipLevels,e._state=dt.LOADED,e)}catch(n){if(e.isDestroyed())return;throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load texture",n)}}Zg.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=k3e(this),this._promise)};function AW(){this.gltf=void 0,this.textureInfo=void 0,this.textureId=void 0,this.image=void 0,this.context=void 0,this.texture=void 0}AW.prototype.set=function(e,t,n,i,o,r){this.gltf=e,this.textureInfo=t,this.textureId=n,this.image=i,this.mipLevels=o,this.context=r};AW.prototype.execute=function(){this.texture=Tre(this.gltf,this.textureInfo,this.textureId,this.image,this.mipLevels,this.context)};function Tre(e,t,n,i,o,r){let s=i.internalFormat,a=!1;et.isCompressedFormat(s)&&!l(o)&&(a=!0);let c=Du.createSampler({gltf:e,textureInfo:t,compressedTextureNoMipmap:a}),u=c.minificationFilter,f=c.wrapS,h=c.wrapT,A=u===Zt.NEAREST_MIPMAP_NEAREST||u===Zt.NEAREST_MIPMAP_LINEAR||u===Zt.LINEAR_MIPMAP_NEAREST||u===Zt.LINEAR_MIPMAP_LINEAR,g=!l(s)&&A,m=g||f===Tn.REPEAT||f===Tn.MIRRORED_REPEAT||h===Tn.REPEAT||h===Tn.MIRRORED_REPEAT,_=!D.isPowerOfTwo(i.width)||!D.isPowerOfTwo(i.height),y=m&&_,C;return l(s)?(!r.webgl2&&et.isCompressedFormat(s)&&_&&m&&console.warn("Compressed texture uses REPEAT or MIRRORED_REPEAT texture wrap mode and dimensions are not powers of two. The texture may be rendered incorrectly."),C=Nt.create({id:n,context:r,source:{arrayBufferView:i.bufferView,mipLevels:o},width:i.width,height:i.height,pixelFormat:i.internalFormat,sampler:c})):(y&&(i=GC(i)),C=Nt.create({id:n,context:r,source:i,sampler:c,flipY:!1,skipColorSpaceConversion:!0})),g&&C.generateMipmap(),C}Zg.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED&&this._state!==dt.PROCESSING||l(this._texture)||!l(this._image))return!1;this._state=dt.PROCESSING;let t;if(this._asynchronous){let n=Q3e;if(n.set(this._gltf,this._textureInfo,this._cacheKey,this._image,this._mipLevels,e.context),!e.jobScheduler.execute(n,Tc.TEXTURE))return;t=n.texture}else t=Tre(this._gltf,this._textureInfo,this._cacheKey,this._image,this._mipLevels,e.context);return this.unload(),this._texture=t,this._state=dt.READY,this._resourceCache.statistics.addTextureLoader(this),!0};Zg.prototype.unload=function(){l(this._texture)&&this._texture.destroy(),l(this._imageLoader)&&!this._imageLoader.isDestroyed()&&this._resourceCache.unload(this._imageLoader),this._imageLoader=void 0,this._image=void 0,this._mipLevels=void 0,this._texture=void 0,this._gltf=void 0};var oB=Zg;function $g(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.gltfResource,o=e.baseResource,r=e.bufferViewId,s=e.primitive,a=e.draco,c=e.attributeSemantic,u=e.accessorId,f=e.cacheKey,h=e.spz,A=e.asynchronous??!0,g=e.loadBuffer??!1,m=e.loadTypedArray??!1;this._resourceCache=t,this._gltfResource=i,this._baseResource=o,this._gltf=n,this._bufferViewId=r,this._primitive=s,this._draco=a,this._spz=h,this._attributeSemantic=c,this._accessorId=u,this._cacheKey=f,this._asynchronous=A,this._loadBuffer=g,this._loadTypedArray=m,this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._quantization=void 0,this._typedArray=void 0,this._buffer=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&($g.prototype=Object.create(qi.prototype),$g.prototype.constructor=$g);Object.defineProperties($g.prototype,{cacheKey:{get:function(){return this._cacheKey}},buffer:{get:function(){return this._buffer}},typedArray:{get:function(){return this._typedArray}},quantization:{get:function(){return this._quantization}}});function U3e(e,t){return l(e)&&l(e.attributes)&&l(e.attributes[t])}$g.prototype.load=async function(){return l(this._promise)?this._promise:l(this._spz)?(this._promise=z3e(this),this._promise):U3e(this._draco,this._attributeSemantic)?(this._promise=H3e(this),this._promise):(this._promise=j3e(this),this._promise)};function G3e(e,t,n,i){let r=(1<<e.quantizationBits)-1,s=1/r,a=new bn.Quantization;if(a.componentDatatype=t,a.octEncoded=e.octEncoded,a.octEncodedZXY=!0,a.type=i,a.octEncoded)a.type=Ht.VEC2,a.normalizationRange=r;else{let c=Ht.getMathType(i);if(c===Number){let u=e.range;a.quantizedVolumeOffset=e.minValues[0],a.quantizedVolumeDimensions=u,a.normalizationRange=r,a.quantizedVolumeStepSize=u*s}else{a.quantizedVolumeOffset=c.unpack(e.minValues),a.normalizationRange=c.unpack(new Array(n).fill(r));let u=new Array(n).fill(e.range);a.quantizedVolumeDimensions=c.unpack(u);let f=u.map(function(h){return h*s});a.quantizedVolumeStepSize=c.unpack(f)}}return a}async function z3e(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getSpzLoader({gltf:e._gltf,primitive:e._primitive,spz:e._spz,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._spzLoader=n,await n.load(),e.isDestroyed()?void 0:(e._state=dt.LOADED,e)}catch{if(e.isDestroyed())return}}function V3e(e){e._state=dt.PROCESSING;let n=e._spzLoader.decodedData.gcloud;if(e._attributeSemantic==="POSITION")e._typedArray=n.positions;else if(e._attributeSemantic==="_SCALE")e._typedArray=n.scales;else if(e._attributeSemantic==="_ROTATION")e._typedArray=n.rotations;else if(e._attributeSemantic==="COLOR_0"){let i=n.colors,o=n.alphas;e._typedArray=new Uint8Array(i.length/3*4);for(let r=0;r<i.length/3;r++)e._typedArray[r*4]=D.clamp(i[r*3]*255,0,255),e._typedArray[r*4+1]=D.clamp(i[r*3+1]*255,0,255),e._typedArray[r*4+2]=D.clamp(i[r*3+2]*255,0,255),e._typedArray[r*4+3]=D.clamp(o[r]*255,0,255)}}async function H3e(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getDracoLoader({gltf:e._gltf,primitive:e._primitive,draco:e._draco,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._dracoLoader=n,await n.load(),e.isDestroyed()?void 0:(e._state=dt.LOADED,e)}catch{if(e.isDestroyed())return;VO(e)}}function W3e(e){e._state=dt.PROCESSING;let n=e._dracoLoader.decodedData.vertexAttributes,i=e._attributeSemantic,o=n[i],r=e._accessorId,a=e._gltf.accessors[r].type,c=o.array,u=o.data.quantization;l(u)&&(e._quantization=G3e(u,o.data.componentDatatype,o.data.componentsPerAttribute,a)),e._typedArray=new Uint8Array(c.buffer,c.byteOffset,c.byteLength)}async function j3e(e){e._state=dt.LOADING;let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:e._bufferViewId,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._typedArray=n.typedArray,e._state=dt.PROCESSING,e)}catch(n){if(e.isDestroyed())return;VO(e,n)}}function VO(e,t){throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load vertex buffer",t)}function pW(){this.typedArray=void 0,this.context=void 0,this.buffer=void 0}pW.prototype.set=function(e,t){this.typedArray=e,this.context=t};pW.prototype.execute=function(){this.buffer=Sre(this.typedArray,this.context)};function Sre(e,t){let n=Et.createVertexBuffer({typedArray:e,context:t,usage:Qe.STATIC_DRAW});return n.vertexArrayDestroyable=!1,n}var Y3e=new pW;$g.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED&&this._state!==dt.PROCESSING)return!1;if(l(this._dracoLoader)){try{if(!this._dracoLoader.process(e))return!1}catch(i){VO(this,i)}W3e(this)}if(l(this._spzLoader)){try{if(!this._spzLoader.process(e))return!1}catch(i){VO(this,i)}V3e(this)}let t,n=this._typedArray;if(this._loadBuffer&&this._asynchronous){let i=Y3e;if(i.set(n,e.context),!e.jobScheduler.execute(i,Tc.BUFFER))return!1;t=i.buffer}else this._loadBuffer&&(t=Sre(n,e.context));return this.unload(),this._buffer=t,this._typedArray=this._loadTypedArray?n:void 0,this._state=dt.READY,this._resourceCache.statistics.addGeometryLoader(this),!0};$g.prototype.unload=function(){l(this._buffer)&&this._buffer.destroy();let e=this._resourceCache;l(this._bufferViewLoader)&&!this._bufferViewLoader.isDestroyed()&&e.unload(this._bufferViewLoader),l(this._dracoLoader)&&e.unload(this._dracoLoader),l(this._spzLoader)&&e.unload(this._spzLoader),this._bufferViewLoader=void 0,this._dracoLoader=void 0,this._spzLoader=void 0,this._typedArray=void 0,this._buffer=void 0,this._gltf=void 0,this._primitive=void 0};var rB=$g;async function q3e(e={}){var t,n,i=e,o=typeof window=="object",r=typeof WorkerGlobalScope<"u",s=typeof process=="object"&&((t=process.versions)==null?void 0:t.node)&&process.type!="renderer";if(s){let{createRequire:oe}=await Promise.resolve().then(()=>$3e);var a=oe(import.meta.url)}var c="./this.program",u=import.meta.url,f;if(s){var h=a("fs");u.startsWith("file:")&&a("path").dirname(a("url").fileURLToPath(u)),f=oe=>(oe=y(oe)?new URL(oe):oe,h.readFileSync(oe)),1<process.argv.length&&(c=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2)}else if(o||r){try{new URL(".",u)}catch{}r&&(f=oe=>{var ne=new XMLHttpRequest;return ne.open("GET",oe,!1),ne.responseType="arraybuffer",ne.send(null),new Uint8Array(ne.response)})}var A=console.log.bind(console),g=console.error.bind(console),m,_=!1,y=oe=>oe.startsWith("file://"),C,E,I,b,S,B,v,P,N,L,p,x,T,w=!1;function M(){var oe=I.buffer;b=new Int8Array(oe),B=new Int16Array(oe),i.HEAPU8=S=new Uint8Array(oe),v=new Uint16Array(oe),P=new Int32Array(oe),N=new Uint32Array(oe),i.HEAPF32=L=new Float32Array(oe),p=new Float64Array(oe),x=new BigInt64Array(oe),T=new BigUint64Array(oe)}var O=0,U=null;function Q(oe){var ne;throw(ne=i.onAbort)==null||ne.call(i,oe),oe="Aborted("+oe+")",g(oe),_=!0,oe=new WebAssembly.RuntimeError(oe+". Build with -sASSERTIONS for more info."),E?.(oe),oe}var z;async function F(oe){if(!ArrayBuffer.isView(oe))if(oe==z&&m)oe=new Uint8Array(m);else if(f)oe=f(oe);else throw"both async and sync fetching of the wasm failed";return oe}async function H(oe){var ne=z;try{var Ee=await F(ne);return await WebAssembly.instantiate(Ee,oe)}catch(be){g(`failed to asynchronously prepare wasm: ${be}`),Q(be)}}async function W(oe){return H(oe)}var Z=oe=>{for(;0<oe.length;)oe.shift()(i)},Y=[],$=[],X=()=>{var oe=i.preRun.shift();$.push(oe)},he=oe=>{if(s)return oe=Buffer.from(oe,"base64"),new Uint8Array(oe.buffer,oe.byteOffset,oe.length);for(var ne,Ee,be=0,Ve=0,At=oe.length,ut=new Uint8Array((3*At>>2)-(oe[At-2]=="=")-(oe[At-1]=="="));be<At;be+=4,Ve+=3)ne=SA[oe.charCodeAt(be+1)],Ee=SA[oe.charCodeAt(be+2)],ut[Ve]=SA[oe.charCodeAt(be)]<<2|ne>>4,ut[Ve+1]=ne<<4|Ee>>2,ut[Ve+2]=Ee<<6|SA[oe.charCodeAt(be+3)];return ut},ge={},fe=oe=>{for(;oe.length;){var ne=oe.pop();oe.pop()(ne)}};function ye(oe){return this.N(N[oe>>2])}var Ie={},ve={},Te={},ke=class extends Error{constructor(oe){super(oe),this.name="InternalError"}},Ge=(oe,ne,Ee)=>{function be(xt){if(xt=Ee(xt),xt.length!==oe.length)throw new ke("Mismatched type converter count");for(var wn=0;wn<oe.length;++wn)tn(oe[wn],xt[wn])}oe.forEach(xt=>Te[xt]=ne);var Ve=Array(ne.length),At=[],ut=0;ne.forEach((xt,wn)=>{ve.hasOwnProperty(xt)?Ve[wn]=ve[xt]:(At.push(xt),Ie.hasOwnProperty(xt)||(Ie[xt]=[]),Ie[xt].push(()=>{Ve[wn]=ve[xt],++ut,ut===At.length&&be(Ve)}))}),At.length===0&&be(Ve)},qe=oe=>{for(var ne="";;){var Ee=S[oe++];if(!Ee)return ne;ne+=String.fromCharCode(Ee)}},tt=class extends Error{constructor(oe){super(oe),this.name="BindingError"}},$t=oe=>{throw new tt(oe)};function it(oe,ne,Ee={}){var be=ne.name;if(!oe)throw new tt(`type "${be}" must have a positive integer typeid pointer`);if(ve.hasOwnProperty(oe)){if(Ee.wa)return;throw new tt(`Cannot register type '${be}' twice`)}ve[oe]=ne,delete Te[oe],Ie.hasOwnProperty(oe)&&(ne=Ie[oe],delete Ie[oe],ne.forEach(Ve=>Ve()))}function tn(oe,ne,Ee={}){return it(oe,ne,Ee)}var Wt=(oe,ne,Ee)=>{switch(ne){case 1:return Ee?be=>b[be]:be=>S[be];case 2:return Ee?be=>B[be>>1]:be=>v[be>>1];case 4:return Ee?be=>P[be>>2]:be=>N[be>>2];case 8:return Ee?be=>x[be>>3]:be=>T[be>>3];default:throw new TypeError(`invalid integer width (${ne}): ${oe}`)}},vt=oe=>{throw new tt(oe.L.P.M.name+" instance already deleted")},bi=!1,di=()=>{},Ot=oe=>typeof FinalizationRegistry>"u"?(Ot=ne=>ne,oe):(bi=new FinalizationRegistry(ne=>{ne=ne.L,--ne.count.value,ne.count.value===0&&(ne.S?ne.W.Y(ne.S):ne.P.M.Y(ne.O))}),Ot=ne=>{var Ee=ne.L;return Ee.S&&bi.register(ne,{L:Ee},ne),ne},di=ne=>{bi.unregister(ne)},Ot(oe));function Tt(){}var ii=(oe,ne)=>Object.defineProperty(ne,"name",{value:oe}),Ct={},Ro=(oe,ne,Ee)=>{if(oe[ne].R===void 0){var be=oe[ne];oe[ne]=function(...Ve){if(!oe[ne].R.hasOwnProperty(Ve.length))throw new tt(`Function '${Ee}' called with an invalid number of arguments (${Ve.length}) - expects one of (${oe[ne].R})!`);return oe[ne].R[Ve.length].apply(this,Ve)},oe[ne].R=[],oe[ne].R[be.aa]=be}},Qo=(oe,ne,Ee)=>{if(i.hasOwnProperty(oe)){if(Ee===void 0||i[oe].R!==void 0&&i[oe].R[Ee]!==void 0)throw new tt(`Cannot register public name '${oe}' twice`);if(Ro(i,oe,oe),i[oe].R.hasOwnProperty(Ee))throw new tt(`Cannot register multiple overloads of a function with the same number of arguments (${Ee})!`);i[oe].R[Ee]=ne}else i[oe]=ne,i[oe].aa=Ee},ya=oe=>{oe=oe.replace(/[^a-zA-Z0-9_]/g,"$");var ne=oe.charCodeAt(0);return 48<=ne&&57>=ne?`_${oe}`:oe};function mr(oe,ne,Ee,be,Ve,At,ut,xt){this.name=oe,this.constructor=ne,this.$=Ee,this.Y=be,this.U=Ve,this.ra=At,this.ea=ut,this.pa=xt,this.ya=[]}var Tr=(oe,ne,Ee)=>{for(;ne!==Ee;){if(!ne.ea)throw new tt(`Expected null or instance of ${Ee.name}, got an instance of ${ne.name}`);oe=ne.ea(oe),ne=ne.U}return oe},Oe=oe=>{if(oe===null)return"null";var ne=typeof oe;return ne==="object"||ne==="array"||ne==="function"?oe.toString():""+oe};function lt(oe,ne){if(ne===null){if(this.ha)throw new tt(`null is not a valid ${this.name}`);return 0}if(!ne.L)throw new tt(`Cannot pass "${Oe(ne)}" as a ${this.name}`);if(!ne.L.O)throw new tt(`Cannot pass deleted object as a pointer of type ${this.name}`);return Tr(ne.L.O,ne.L.P.M,this.M)}function Ke(oe,ne){if(ne===null){if(this.ha)throw new tt(`null is not a valid ${this.name}`);if(this.ga){var Ee=this.ia();return oe!==null&&oe.push(this.Y,Ee),Ee}return 0}if(!ne||!ne.L)throw new tt(`Cannot pass "${Oe(ne)}" as a ${this.name}`);if(!ne.L.O)throw new tt(`Cannot pass deleted object as a pointer of type ${this.name}`);if(!this.fa&&ne.L.P.fa)throw new tt(`Cannot convert argument of type ${ne.L.W?ne.L.W.name:ne.L.P.name} to parameter type ${this.name}`);if(Ee=Tr(ne.L.O,ne.L.P.M,this.M),this.ga){if(ne.L.S===void 0)throw new tt("Passing raw pointer to smart pointer is illegal");switch(this.Da){case 0:if(ne.L.W===this)Ee=ne.L.S;else throw new tt(`Cannot convert argument of type ${ne.L.W?ne.L.W.name:ne.L.P.name} to parameter type ${this.name}`);break;case 1:Ee=ne.L.S;break;case 2:if(ne.L.W===this)Ee=ne.L.S;else{var be=ne.clone();Ee=this.za(Ee,rs(()=>be.delete())),oe!==null&&oe.push(this.Y,Ee)}break;default:throw new tt("Unsupporting sharing policy")}}return Ee}function $e(oe,ne){if(ne===null){if(this.ha)throw new tt(`null is not a valid ${this.name}`);return 0}if(!ne.L)throw new tt(`Cannot pass "${Oe(ne)}" as a ${this.name}`);if(!ne.L.O)throw new tt(`Cannot pass deleted object as a pointer of type ${this.name}`);if(ne.L.P.fa)throw new tt(`Cannot convert argument of type ${ne.L.P.name} to parameter type ${this.name}`);return Tr(ne.L.O,ne.L.P.M,this.M)}var pt=(oe,ne,Ee)=>ne===Ee?oe:Ee.U===void 0?null:(oe=pt(oe,ne,Ee.U),oe===null?null:Ee.pa(oe)),Xt={},xn=(oe,ne)=>{if(ne===void 0)throw new tt("ptr should not be undefined");for(;oe.U;)ne=oe.ea(ne),oe=oe.U;return Xt[ne]},lo=(oe,ne)=>{if(!ne.P||!ne.O)throw new ke("makeClassHandle requires ptr and ptrType");if(!!ne.W!=!!ne.S)throw new ke("Both smartPtrType and smartPtr must be specified");return ne.count={value:1},Ot(Object.create(oe,{L:{value:ne,writable:!0}}))};function ro(oe,ne,Ee,be,Ve,At,ut,xt,wn,Hn,dn){this.name=oe,this.M=ne,this.ha=Ee,this.fa=be,this.ga=Ve,this.xa=At,this.Da=ut,this.na=xt,this.ia=wn,this.za=Hn,this.Y=dn,Ve||ne.U!==void 0?this.T=Ke:(this.T=be?lt:$e,this.V=null)}var $s=(oe,ne,Ee)=>{if(!i.hasOwnProperty(oe))throw new ke("Replacing nonexistent public symbol");i[oe].R!==void 0&&Ee!==void 0?i[oe].R[Ee]=ne:(i[oe]=ne,i[oe].aa=Ee)},ea,Vn=(oe,ne)=>{oe=qe(oe);var Ee=ea.get(ne);if(typeof Ee!="function")throw new tt(`unknown function pointer with signature ${oe}: ${ne}`);return Ee};class _i extends Error{}var _s=oe=>{oe=c$(oe);var ne=qe(oe);return ug(oe),ne},Wo=(oe,ne)=>{function Ee(At){Ve[At]||ve[At]||(Te[At]?Te[At].forEach(Ee):(be.push(At),Ve[At]=!0))}var be=[],Ve={};throw ne.forEach(Ee),new _i(`${oe}: `+be.map(_s).join([", "]))},Ca=(oe,ne)=>{for(var Ee=[],be=0;be<oe;be++)Ee.push(N[ne+4*be>>2]);return Ee};function uo(oe){for(var ne=1;ne<oe.length;++ne)if(oe[ne]!==null&&oe[ne].V===void 0)return!0;return!1}function jo(oe,ne,Ee,be,Ve,At){var ut=ne.length;if(2>ut)throw new tt("argTypes array size mismatch! Must at least get return value and 'this' types!");var xt=ne[1]!==null&&Ee!==null,wn=uo(ne);Ee=!ne[0].ma;var Hn=ne[0],dn=ne[1];for(be=[oe,$t,be,Ve,fe,Hn.N.bind(Hn),dn?.T.bind(dn)],Ve=2;Ve<ut;++Ve)Hn=ne[Ve],be.push(Hn.T.bind(Hn));if(!wn)for(Ve=xt?1:2;Ve<ne.length;++Ve)ne[Ve].V!==null&&be.push(ne[Ve].V);for(wn=uo(ne),Ve=ne.length-2,dn=[],Hn=["fn"],xt&&Hn.push("thisWired"),ut=0;ut<Ve;++ut)dn.push(`arg${ut}`),Hn.push(`arg${ut}Wired`);dn=dn.join(","),Hn=Hn.join(","),dn=`return function (${dn}) { +`,wn&&(dn+=`var destructors = []; +`);var ss=wn?"destructors":"null",pu="humanName throwBindingError invoker fn runDestructors fromRetWire toClassParamWire".split(" ");for(xt&&(dn+=`var thisWired = toClassParamWire(${ss}, this); +`),ut=0;ut<Ve;++ut){var Hc=`toArg${ut}Wire`;dn+=`var arg${ut}Wired = ${Hc}(${ss}, arg${ut}); +`,pu.push(Hc)}if(dn+=(Ee||At?"var rv = ":"")+`invoker(${Hn}); +`,wn)dn+=`runDestructors(destructors); +`;else for(ut=xt?1:2;ut<ne.length;++ut)At=ut===1?"thisWired":"arg"+(ut-2)+"Wired",ne[ut].V!==null&&(dn+=`${At}_dtor(${At}); +`,pu.push(`${At}_dtor`));return Ee&&(dn+=`var ret = fromRetWire(rv); +return ret; +`),ne=new Function(pu,dn+`} +`)(...be),ii(oe,ne)}for(var df=oe=>{oe=oe.trim();let ne=oe.indexOf("(");return ne===-1?oe:oe.slice(0,ne)},Ar=[],ys=[0,1,,1,null,1,!0,1,!1,1],Qs=oe=>{9<oe&&--ys[oe+1]===0&&(ys[oe]=void 0,Ar.push(oe))},vd=oe=>{if(!oe)throw new tt(`Cannot use deleted val. handle = ${oe}`);return ys[oe]},rs=oe=>{switch(oe){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:let ne=Ar.pop()||ys.length;return ys[ne]=oe,ys[ne+1]=1,ne}},qa={name:"emscripten::val",N:oe=>{var ne=vd(oe);return Qs(oe),ne},T:(oe,ne)=>rs(ne),X:ye,V:null},Ka=(oe,ne,Ee)=>{switch(ne){case 1:return Ee?function(be){return this.N(b[be])}:function(be){return this.N(S[be])};case 2:return Ee?function(be){return this.N(B[be>>1])}:function(be){return this.N(v[be>>1])};case 4:return Ee?function(be){return this.N(P[be>>2])}:function(be){return this.N(N[be>>2])};default:throw new TypeError(`invalid integer width (${ne}): ${oe}`)}},Sr=(oe,ne)=>{var Ee=ve[oe];if(Ee===void 0)throw oe=`${ne} has unknown type ${_s(oe)}`,new tt(oe);return Ee},Bl=(oe,ne)=>{switch(ne){case 4:return function(Ee){return this.N(L[Ee>>2])};case 8:return function(Ee){return this.N(p[Ee>>3])};default:throw new TypeError(`invalid float width (${ne}): ${oe}`)}},Dl=Object.assign({optional:!0},qa),ta=(oe,ne,Ee)=>{var be=S;if(!(0<Ee))return 0;var Ve=ne;Ee=ne+Ee-1;for(var At=0;At<oe.length;++At){var ut=oe.codePointAt(At);if(127>=ut){if(ne>=Ee)break;be[ne++]=ut}else if(2047>=ut){if(ne+1>=Ee)break;be[ne++]=192|ut>>6,be[ne++]=128|ut&63}else if(65535>=ut){if(ne+2>=Ee)break;be[ne++]=224|ut>>12,be[ne++]=128|ut>>6&63,be[ne++]=128|ut&63}else{if(ne+3>=Ee)break;be[ne++]=240|ut>>18,be[ne++]=128|ut>>12&63,be[ne++]=128|ut>>6&63,be[ne++]=128|ut&63,At++}}return be[ne]=0,ne-Ve},wo=oe=>{for(var ne=0,Ee=0;Ee<oe.length;++Ee){var be=oe.charCodeAt(Ee);127>=be?ne++:2047>=be?ne+=2:55296<=be&&57343>=be?(ne+=4,++Ee):ne+=3}return ne},cn=new TextDecoder,Se=(oe,ne,Ee,be)=>{if(Ee=ne+Ee,be)return Ee;for(;oe[ne]&&!(ne>=Ee);)++ne;return ne},St=new TextDecoder("utf-16le"),_n=(oe,ne,Ee)=>(oe>>=1,St.decode(v.subarray(oe,Se(v,oe,ne/2,Ee)))),er=(oe,ne,Ee)=>{if(Ee??(Ee=2147483647),2>Ee)return 0;Ee-=2;var be=ne;Ee=Ee<2*oe.length?Ee/2:oe.length;for(var Ve=0;Ve<Ee;++Ve)B[ne>>1]=oe.charCodeAt(Ve),ne+=2;return B[ne>>1]=0,ne-be},Ea=oe=>2*oe.length,Cs=(oe,ne,Ee)=>{var be="";oe>>=2;for(var Ve=0;!(Ve>=ne/4);Ve++){var At=N[oe+Ve];if(!At&&!Ee)break;be+=String.fromCodePoint(At)}return be},dc=(oe,ne,Ee)=>{if(Ee??(Ee=2147483647),4>Ee)return 0;var be=ne;Ee=be+Ee-4;for(var Ve=0;Ve<oe.length;++Ve){var At=oe.codePointAt(Ve);if(65535<At&&Ve++,P[ne>>2]=At,ne+=4,ne+4>Ee)break}return P[ne>>2]=0,ne-be},Pd=oe=>{for(var ne=0,Ee=0;Ee<oe.length;++Ee)65535<oe.codePointAt(Ee)&&Ee++,ne+=4;return ne},TA=[],LS=oe=>{var ne=TA.length;return TA.push(oe),ne},Ia=(oe,ne)=>{for(var Ee=Array(oe),be=0;be<oe;++be)Ee[be]=Sr(N[ne+4*be>>2],`parameter ${be}`);return Ee},gR=(oe,ne,Ee)=>{var be=[];return oe=oe(be,Ee),be.length&&(N[ne>>2]=rs(be)),oe},_R={},USe=oe=>{var ne=_R[oe];return ne===void 0?qe(oe):ne},b5={},a$=()=>{if(!T5){var oe={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.language||"C").replace("-","_")+".UTF-8",_:c||"./this.program"},ne;for(ne in b5)b5[ne]===void 0?delete oe[ne]:oe[ne]=b5[ne];var Ee=[];for(ne in oe)Ee.push(`${ne}=${oe[ne]}`);T5=Ee}return T5},T5,GSe=[null,[],[]],SA=new Uint8Array(123),lg=25;0<=lg;--lg)SA[48+lg]=52+lg,SA[65+lg]=lg,SA[97+lg]=26+lg;SA[43]=62,SA[47]=63,(()=>{let oe=Tt.prototype;Object.assign(oe,{isAliasOf:function(Ee){if(!(this instanceof Tt&&Ee instanceof Tt))return!1;var be=this.L.P.M,Ve=this.L.O;Ee.L=Ee.L;var At=Ee.L.P.M;for(Ee=Ee.L.O;be.U;)Ve=be.ea(Ve),be=be.U;for(;At.U;)Ee=At.ea(Ee),At=At.U;return be===At&&Ve===Ee},clone:function(){if(this.L.O||vt(this),this.L.da)return this.L.count.value+=1,this;var Ee=Ot,be=Object,Ve=be.create,At=Object.getPrototypeOf(this),ut=this.L;return Ee=Ee(Ve.call(be,At,{L:{value:{count:ut.count,ba:ut.ba,da:ut.da,O:ut.O,P:ut.P,S:ut.S,W:ut.W}}})),Ee.L.count.value+=1,Ee.L.ba=!1,Ee},delete(){if(this.L.O||vt(this),this.L.ba&&!this.L.da)throw new tt("Object already scheduled for deletion");di(this);var Ee=this.L;--Ee.count.value,Ee.count.value===0&&(Ee.S?Ee.W.Y(Ee.S):Ee.P.M.Y(Ee.O)),this.L.da||(this.L.S=void 0,this.L.O=void 0)},isDeleted:function(){return!this.L.O},deleteLater:function(){if(this.L.O||vt(this),this.L.ba&&!this.L.da)throw new tt("Object already scheduled for deletion");return this.L.ba=!0,this}});let ne=Symbol.dispose;ne&&(oe[ne]=oe.delete)})(),Object.assign(ro.prototype,{sa(oe){return this.na&&(oe=this.na(oe)),oe},ka(oe){var ne;(ne=this.Y)==null||ne.call(this,oe)},X:ye,N:function(oe){function ne(){return this.ga?lo(this.M.$,{P:this.xa,O:Ee,W:this,S:oe}):lo(this.M.$,{P:this,O:oe})}var Ee=this.sa(oe);if(!Ee)return this.ka(oe),null;var be=xn(this.M,Ee);if(be!==void 0)return be.L.count.value===0?(be.L.O=Ee,be.L.S=oe,be.clone()):(be=be.clone(),this.ka(oe),be);if(be=this.M.ra(Ee),be=Ct[be],!be)return ne.call(this);be=this.fa?be.oa:be.pointerType;var Ve=pt(Ee,this.M,be.M);return Ve===null?ne.call(this):this.ga?lo(be.M.$,{P:be,O:Ve,W:this,S:oe}):lo(be.M.$,{P:be,O:Ve})}}),i.print&&(A=i.print),i.printErr&&(g=i.printErr),i.wasmBinary&&(m=i.wasmBinary),i.thisProgram&&(c=i.thisProgram);var c$,S5,ug,zSe={x:()=>Q(""),q:oe=>{var ne=ge[oe];delete ge[oe];var Ee=ne.ia,be=ne.Y,Ve=ne.la,At=Ve.map(ut=>ut.va).concat(Ve.map(ut=>ut.Ba));Ge([oe],At,ut=>{var xt={};return Ve.forEach((wn,Hn)=>{var dn=ut[Hn],ss=wn.ta,pu=wn.ua,Hc=ut[Hn+Ve.length],Wc=wn.Aa,hf=wn.Ca;xt[wn.qa]={read:wA=>dn.N(ss(pu,wA)),write:(wA,OS)=>{var gu=[];Wc(hf,wA,Hc.T(gu,OS)),fe(gu)},optional:ut[Hn].optional}}),[{name:ne.name,N:wn=>{var Hn={},dn;for(dn in xt)Hn[dn]=xt[dn].read(wn);return be(wn),Hn},T:(wn,Hn)=>{for(var dn in xt)if(!(dn in Hn||xt[dn].optional))throw new TypeError(`Missing field: "${dn}"`);var ss=Ee();for(dn in xt)xt[dn].write(ss,Hn[dn]);return wn!==null&&wn.push(be,ss),ss},X:ye,V:be}]})},n:(oe,ne,Ee,be,Ve)=>{ne=qe(ne),be=be===0n;let At=ut=>ut;if(be){let ut=8*Ee;At=xt=>BigInt.asUintN(ut,xt),Ve=At(Ve)}tn(oe,{name:ne,N:At,T:(ut,xt)=>(typeof xt=="number"&&(xt=BigInt(xt)),xt),X:Wt(ne,Ee,!be),V:null})},B:(oe,ne,Ee,be)=>{ne=qe(ne),tn(oe,{name:ne,N:function(Ve){return!!Ve},T:function(Ve,At){return At?Ee:be},X:function(Ve){return this.N(S[Ve])},V:null})},j:(oe,ne,Ee,be,Ve,At,ut,xt,wn,Hn,dn,ss,pu)=>{dn=qe(dn),At=Vn(Ve,At),xt&&(xt=Vn(ut,xt)),Hn&&(Hn=Vn(wn,Hn)),pu=Vn(ss,pu);var Hc=ya(dn);Qo(Hc,function(){Wo(`Cannot construct ${dn} due to unbound types`,[be])}),Ge([oe,ne,Ee],be?[be]:[],Wc=>{if(Wc=Wc[0],be)var hf=Wc.M,wA=hf.$;else wA=Tt.prototype;Wc=ii(dn,function(...B5){if(Object.getPrototypeOf(this)!==OS)throw new tt(`Use 'new' to construct ${dn}`);if(gu.Z===void 0)throw new tt(`${dn} has no accessible constructor`);var l$=gu.Z[B5.length];if(l$===void 0)throw new tt(`Tried to invoke ctor of ${dn} with invalid number of parameters (${B5.length}) - expected (${Object.keys(gu.Z).toString()}) parameters instead!`);return l$.apply(this,B5)});var OS=Object.create(wA,{constructor:{value:Wc}});Wc.prototype=OS;var gu=new mr(dn,Wc,OS,pu,hf,At,xt,Hn);if(gu.U){var FS;(FS=gu.U).ja??(FS.ja=[]),gu.U.ja.push(gu)}return hf=new ro(dn,gu,!0,!1,!1),FS=new ro(dn+"*",gu,!1,!1,!1),wA=new ro(dn+" const*",gu,!1,!0,!1),Ct[oe]={pointerType:FS,oa:wA},$s(Hc,Wc),[hf,FS,wA]})},g:(oe,ne,Ee,be,Ve,At)=>{var ut=Ca(ne,Ee);Ve=Vn(be,Ve),Ge([],[oe],xt=>{xt=xt[0];var wn=`constructor ${xt.name}`;if(xt.M.Z===void 0&&(xt.M.Z=[]),xt.M.Z[ne-1]!==void 0)throw new tt(`Cannot register multiple constructors with identical number of parameters (${ne-1}) for class '${xt.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return xt.M.Z[ne-1]=()=>{Wo(`Cannot construct ${xt.name} due to unbound types`,ut)},Ge([],ut,Hn=>(Hn.splice(1,0,null),xt.M.Z[ne-1]=jo(wn,Hn,null,Ve,At),[])),[]})},b:(oe,ne,Ee,be,Ve,At,ut,xt,wn)=>{var Hn=Ca(Ee,be);ne=qe(ne),ne=df(ne),At=Vn(Ve,At),Ge([],[oe],dn=>{function ss(){Wo(`Cannot call ${pu} due to unbound types`,Hn)}dn=dn[0];var pu=`${dn.name}.${ne}`;ne.startsWith("@@")&&(ne=Symbol[ne.substring(2)]),xt&&dn.M.ya.push(ne);var Hc=dn.M.$,Wc=Hc[ne];return Wc===void 0||Wc.R===void 0&&Wc.className!==dn.name&&Wc.aa===Ee-2?(ss.aa=Ee-2,ss.className=dn.name,Hc[ne]=ss):(Ro(Hc,ne,pu),Hc[ne].R[Ee-2]=ss),Ge([],Hn,hf=>(hf=jo(pu,hf,dn,At,ut,wn),Hc[ne].R===void 0?(hf.aa=Ee-2,Hc[ne]=hf):Hc[ne].R[Ee-2]=hf,[])),[]})},z:oe=>tn(oe,qa),r:(oe,ne,Ee,be)=>{function Ve(){}ne=qe(ne),Ve.values={},tn(oe,{name:ne,constructor:Ve,N:function(At){return this.constructor.values[At]},T:(At,ut)=>ut.value,X:Ka(ne,Ee,be),V:null}),Qo(ne,Ve)},d:(oe,ne,Ee)=>{var be=Sr(oe,"enum");ne=qe(ne),oe=be.constructor,be=Object.create(be.constructor.prototype,{value:{value:Ee},constructor:{value:ii(`${be.name}_${ne}`,function(){})}}),oe.values[Ee]=be,oe[ne]=be},m:(oe,ne,Ee)=>{ne=qe(ne),tn(oe,{name:ne,N:be=>be,T:(be,Ve)=>Ve,X:Bl(ne,Ee),V:null})},l:(oe,ne,Ee,be,Ve,At,ut)=>{var xt=Ca(ne,Ee);oe=qe(oe),oe=df(oe),Ve=Vn(be,Ve),Qo(oe,function(){Wo(`Cannot call ${oe} due to unbound types`,xt)},ne-1),Ge([],xt,wn=>(wn=[wn[0],null].concat(wn.slice(1)),$s(oe,jo(oe,wn,null,Ve,At,ut),ne-1),[]))},c:(oe,ne,Ee,be,Ve)=>{ne=qe(ne);let At=xt=>xt;if(be===0){var ut=32-8*Ee;At=xt=>xt<<ut>>>ut,Ve=At(Ve)}tn(oe,{name:ne,N:At,T:(xt,wn)=>wn,X:Wt(ne,Ee,be!==0),V:null})},a:(oe,ne,Ee)=>{function be(At){return new Ve(b.buffer,N[At+4>>2],N[At>>2])}var Ve=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array][ne];Ee=qe(Ee),tn(oe,{name:Ee,N:be,X:be},{wa:!0})},h:oe=>{tn(oe,Dl)},A:(oe,ne)=>{ne=qe(ne),tn(oe,{name:ne,N(Ee){var be=(be=Ee+4)?cn.decode(S.subarray(be,Se(S,be,N[Ee>>2],!0))):"";return ug(Ee),be},T(Ee,be){be instanceof ArrayBuffer&&(be=new Uint8Array(be));var Ve=typeof be=="string";if(!(Ve||ArrayBuffer.isView(be)&&be.BYTES_PER_ELEMENT==1))throw new tt("Cannot pass non-string to std::string");var At=Ve?wo(be):be.length,ut=S5(4+At+1),xt=ut+4;return N[ut>>2]=At,Ve?ta(be,xt,At+1):S.set(be,xt),Ee!==null&&Ee.push(ug,ut),ut},X:ye,V(Ee){ug(Ee)}})},f:(oe,ne,Ee)=>{if(Ee=qe(Ee),ne===2)var be=_n,Ve=er,At=Ea;else be=Cs,Ve=dc,At=Pd;tn(oe,{name:Ee,N:ut=>{var xt=be(ut+4,N[ut>>2]*ne,!0);return ug(ut),xt},T:(ut,xt)=>{if(typeof xt!="string")throw new tt(`Cannot pass non-string to C++ string type ${Ee}`);var wn=At(xt),Hn=S5(4+wn+ne);return N[Hn>>2]=wn/ne,Ve(xt,Hn+4,wn+ne),ut!==null&&ut.push(ug,Hn),Hn},X:ye,V(ut){ug(ut)}})},i:(oe,ne,Ee,be,Ve,At)=>{ge[oe]={name:qe(ne),ia:Vn(Ee,be),Y:Vn(Ve,At),la:[]}},e:(oe,ne,Ee,be,Ve,At,ut,xt,wn,Hn)=>{ge[oe].la.push({qa:qe(ne),va:Ee,ta:Vn(be,Ve),ua:At,Ba:ut,Aa:Vn(xt,wn),Ca:Hn})},C:(oe,ne)=>{ne=qe(ne),tn(oe,{ma:!0,name:ne,N:()=>{},T:()=>{}})},p:(oe,ne,Ee)=>{var[be,...Ve]=Ia(oe,ne);ne=be.T.bind(be);var At=Ve.map(wn=>wn.X.bind(wn));oe--;var ut={toValue:vd};switch(oe=At.map((wn,Hn)=>{var dn=`argFromPtr${Hn}`;return ut[dn]=wn,`${dn}(args${Hn?"+"+8*Hn:""})`}),Ee){case 0:var xt="toValue(handle)";break;case 2:xt="new (toValue(handle))";break;case 3:xt="";break;case 1:ut.getStringOrSymbol=USe,xt="toValue(handle)[getStringOrSymbol(methodName)]"}return xt+=`(${oe})`,be.ma||(ut.toReturnWire=ne,ut.emval_returnValue=gR,xt=`return emval_returnValue(toReturnWire, destructorsRef, ${xt})`),xt=`return function (handle, methodName, destructorsRef, args) { + ${xt} + }`,Ee=new Function(Object.keys(ut),xt)(...Object.values(ut)),xt=`methodCaller<(${Ve.map(wn=>wn.name)}) => ${be.name}>`,LS(ii(xt,Ee))},E:Qs,o:(oe,ne,Ee,be,Ve)=>TA[oe](ne,Ee,be,Ve),D:oe=>{var ne=vd(oe);fe(ne),Qs(oe)},s:(oe,ne,Ee,be)=>{var Ve=new Date().getFullYear(),At=new Date(Ve,0,1).getTimezoneOffset();Ve=new Date(Ve,6,1).getTimezoneOffset(),N[oe>>2]=60*Math.max(At,Ve),P[ne>>2]=+(At!=Ve),ne=ut=>{var xt=Math.abs(ut);return`UTC${0<=ut?"-":"+"}${String(Math.floor(xt/60)).padStart(2,"0")}${String(xt%60).padStart(2,"0")}`},oe=ne(At),ne=ne(Ve),Ve<At?(ta(oe,Ee,17),ta(ne,be,17)):(ta(oe,be,17),ta(ne,Ee,17))},y:oe=>{var ne=S.length;if(oe>>>=0,2147483648<oe)return!1;for(var Ee=1;4>=Ee;Ee*=2){var be=ne*(1+.2/Ee);be=Math.min(be,oe+100663296);e:{be=(Math.min(2147483648,65536*Math.ceil(Math.max(oe,be)/65536))-I.buffer.byteLength+65535)/65536|0;try{I.grow(be),M();var Ve=1;break e}catch{}Ve=void 0}if(Ve)return!0}return!1},t:(oe,ne)=>{var Ee=0,be=0,Ve;for(Ve of a$()){var At=ne+Ee;N[oe+be>>2]=At,Ee+=ta(Ve,At,1/0)+1,be+=4}return 0},u:(oe,ne)=>{var Ee=a$();N[oe>>2]=Ee.length,oe=0;for(var be of Ee)oe+=wo(be)+1;return N[ne>>2]=oe,0},v:()=>52,w:function(){return 70},k:(oe,ne,Ee,be)=>{for(var Ve=0,At=0;At<Ee;At++){var ut=N[ne>>2],xt=N[ne+4>>2];ne+=8;for(var wn=0;wn<xt;wn++){var Hn=oe,dn=S[ut+wn],ss=GSe[Hn];dn===0||dn===10?(Hn=Hn===1?A:g,dn=Se(ss,0),dn=cn.decode(ss.buffer?ss.subarray(0,dn):new Uint8Array(ss.slice(0,dn))),Hn(dn),ss.length=0):ss.push(dn)}Ve+=xt}return N[be>>2]=Ve,0}},k0=await async function(){var oe;function ne(be){var Ve;return k0=be.exports,I=k0.F,M(),ea=k0.H,be=k0,c$=be.I,i._malloc=S5=be.J,i._free=ug=be.K,O--,(Ve=i.monitorRunDependencies)==null||Ve.call(i,O),O==0&&U&&(be=U,U=null,be()),k0}O++,(oe=i.monitorRunDependencies)==null||oe.call(i,O);var Ee={a:zSe};return i.instantiateWasm?new Promise(be=>{i.instantiateWasm(Ee,(Ve,At)=>{be(ne(Ve))})}):(z??(z=he("AGFzbQEAAAAB2QM5YAF/AX9gAn9/AGABfwBgA39/fwF/YAJ/fwF/YAN/f38AYAZ/f39/f38Bf2AFf39/f38Bf2AEf39/fwBgBH9/f38Bf2AGf39/f39/AGAFf39/f38AYAAAYAh/f39/f39/fwF/YAd/f39/f39/AX9gAAF/YAV/fn5+fgBgCn9/f39/f39/f38AYAd/f39/f39/AGAFf39/f34Bf2AIf39/f39/f38AYAR/fn5/AGADf35/AX5gBX9/fn9/AGACf34AYAp/f39/f39/f39/AX9gDH9/f39/f39/f39/fwF/YAN/f38BfmAGf39/f35/AX9gD39/f39/f39/f39/f39/fwBgC39/f39/f39/f39/AX9gBH9/f38BfmAGf3x/f39/AX9gB39/f39/fn4Bf2AGf39/f35+AX9gBX9/f398AX9gDX9/f39/f39/f39/f38AYAV/f39+fgBgBX9/f39/AXxgBH9+f38Bf2ACf3wAYAR+fn5+AX9gAn5/AX9gBH9/f34BfmACfn4BfGABfwF8YAN/f38BfGADf39/AX1gA39/fgBgAn5+AX1gAn9/AX5gBH9+fn4AYAN+fn4Bf2ACfH8BfGAEf39/fQF/YAR/f399AGADf399AAK7AR8BYQFhAAUBYQFiABEBYQFjAAsBYQFkAAUBYQFlABEBYQFmAAUBYQFnAAoBYQFoAAEBYQFpAAoBYQFqACQBYQFrAAkBYQFsABQBYQFtAAUBYQFuACUBYQFvACYBYQFwAAMBYQFxAAIBYQFyAAgBYQFzAAgBYQF0AAQBYQF1AAQBYQF2AAABYQF3ACcBYQF4AAwBYQF5AAABYQF6AAIBYQFBAAEBYQFCAAgBYQFDAAEBYQFEAAIBYQFFAAIDjQWLBQAAAQQAAAIAAQABAQQEAg8QAgAEBQACAwAAAAIDAQwAABAEBQgVCwAAAAAQBAAFAAEBAwQAAAQBAQEAAAwBAQADAwACBBgFBQcHAwAAKA0NCAEDAQABAAQAAAgEAQEAAAwGBAQBAQYDKQUAFQMMAAQBAAEBBQQEBwMZABkAAQABAAQBBAABACoBAAEHAQAFBAUBAAgDBAIECwEUAgIBAAACCQABBAAACQEJAwcIBA4EDgQJCQQAAQABAAACAQQAAgADAgAGAQoFCAQFAQwAAAMBBAAABAsEAgACAxoLAAMaCwgCGwArAQAJEAAEAgIDAgAABBgBACwEAQUtAQIMAAgCBBwGHAYACQkBBAwIAwECFAUFBQAEBAIABQACBQ8FAwUFAAIAAAcNDQcNDQUABw0EAAQCAgIBAAIBAQIAAwMdEQMBHREAAAADCwEeAQAABQEeAQEBCgsKCgsKCg8AAxICEgcJBxIJBwkHCRIDBgMILgwvHwkGCR8JAQUbCQAABwQCAAQEAzAxMggQEBUzNAEAAAAAAAMEAAEFAQUBAAACAQgCBAAAAgICBAAMAgQDCAAOBzUAAQMAAAkDCAU2Azc4CgoKCwsLAwgICAMCDwIAAgACAAIAAgUAAgACAAIAAgACBAACAAIAAgACAAUBAQEBAQEAAAIEAgAHAAcNDQIHBwMJAwQDBAIHAwkDBAMEAgkJCQMCAg8DCgoGIQUGIQUODgEADg4DDg4NBQYGBgYGBQ0GBgYGBgciIxMHEwcHAAciBCMTBxMJBwcGBgYGBgYGBgYGBgYGBgAGBgYIAQYDCAcDCAcDAwICAAIACAIXBAQAAAACAgAAAgACAAMAAAMIFwMCABYBIBYDDAQHAXABgAOAAwUHAQGCAoCAAgYIAX8BQfD+BQsHGwYBRgIAAUcAqQUBSAEAAUkA1gMBSgA0AUsALQm/BQEAQQEL/wKQA/sE9wTmBOEE3gT/AvsC/ATPBGvJBMUEwgT/AvsCwQS+BNcDuwS2BLUErgTPAssClQSLBIEE9gPsAzDPAssCpQLfA94DoALdA9wDpQLbA9oDoALZA9gDnALVA9QDRqgFpwWmBaUFlAKiBZMCoQWgBZ8FRkaeBZ0FnAXIA5sFyAOQAsYDmgWZBY8CwQOYBZcF2AGOApYFlAWVBZMF/AGMBY0FiwWQBY8FjgWxAYwCigWJBYgFhwWJAoYFhQWEBS3hAdICiQSHBIUEgwSABP4D/AP6A/gD9QPzA/ED7wPtA9YCtASzBNACpgSlBKQEowSiBNECoQSgBJ8E2wKdBJwEmwSaBJkERpgElwTEApYEkwSSBJEEjwSNBMMClASSBZEFkASOBIwEiQEwMLIEsQSwBK8ErQSsBKsEqgTRAqkEqASnBDDOAs4CqgHiAeIBngTiATDKAskCqgFGRsgCvgEwygLJAqoBRkbIAr4BMMcCxgKqAUZGxQK+ATDHAsYCqgFGRsUCvgGJATCDBYIFgQWJATCABf8E/gQw/QT6BPkE+ASUA5QD9gT1BPQE8wTyBDDxBPAE7wTuBIwDjAPtBOwE6wTqBOkEMOgE5wTlBOQE4wTiBOAE3wQw3QTcBNsE2gTZBNgE1wTWBIkBMPwC1QTUBNME0gTRBNAEigSGBIIE9APwA/0D+QOJATD8As4EzQTMBMsEygTIBIgEhAT/A/ID7gP7A/cD7QHCAscE7QHCAsYEMMUBxQFXV1fyAkZ0dDDFAcUBV1dX8gJGdHQwxAHEAVdXV/ECRnR0MMQBxAFXV1fxAkZ0dDDEBMMEMMAEvwQwvQS8BDC6BLkEMNwCuASTAjDcArcEkwKJAesD6wGjBaQFiQEw4QHhAawCMKwCMOoD4APjA+kDMOED5APoAzDiA+UD5wMw5gMMASoKwLAIiwUTACAAEEcEQCAAKAIEDwsgABBeCxoBAX8gABBHBEAgACgCACAAEH4aEIsCCyAAC4sBAQN/IAAQHyICIAFJBEAjAEEQayIEJAAgASACayICBEAgAiAAECgiAyAAEB8iAWtLBEAgACADIAIgA2sgAWogASABEPQBCyABIAAQIyIDaiACQQAQsgIgACABIAJqIgAQgwEgBEEAOgAPIAAgA2ogBEEPahBdCyAEQRBqJAAPCyAAIAAQIyABEMACCwkAIAAQIyABagsRACAAEEcEQCAAKAIADwsgAAsSACAAQgA3AgAgAEEANgIIIAALFgAgACgCACIAQaDxAUcEQCAAEL8BCwuLAgIDfwJ+AkAgACkDcCIEUEUgBCAAKQN4IAAoAgQiASAAKAIsIgJrrHwiBVdxRQRAIwBBEGsiAiQAQX8hAQJAIAAQyQMNACAAIAJBD2pBASAAKAIgEQMAQQFHDQAgAi0ADyEBCyACQRBqJAAgASIDQQBODQEgACgCBCEBIAAoAiwhAgsgAEJ/NwNwIAAgATYCaCAAIAUgAiABa6x8NwN4QX8PCyAFQgF8IQUgACgCBCEBIAAoAgghAgJAIAApA3AiBFANACAEIAV9IgQgAiABa6xZDQAgASAEp2ohAgsgACACNgJoIAAgBSAAKAIsIgAgAWusfDcDeCAAIAFPBEAgAUEBayADOgAACyADCwwAIAAgAUEcahDVAgsZAQF/QQohASAAEEcEfyAAEH5BAWsFQQoLC3kBA38CQCABELcCIQIgABDxASEDIAAQHyEEIAIgA00EQCAAECMiAyABIAIQZSMAQRBrIgEkACAAEB8aIAAgAhCDASABQQA2AgwgAyACQQJ0aiABQQxqEFYgAUEQaiQADAELIAAgAyACIANrIARBACAEIAIgARCvAgsLDgAgACABIAEQqAEQsQILEAAgABCyAyABELIDc0EBcwsQACAAELMDIAEQswNzQQFzC4EMAQh/AkAgAEUNACAAQQhrIgMgAEEEaygCACICQXhxIgBqIQUCQCACQQFxDQAgAkECcUUNASADIAMoAgAiBGsiA0Gc6gEoAgBJDQEgACAEaiEAAkACQAJAQaDqASgCACADRwRAIAMoAgwhASAEQf8BTQRAIAEgAygCCCICRw0CQYzqAUGM6gEoAgBBfiAEQQN2d3E2AgAMBQsgAygCGCEHIAEgA0cEQCADKAIIIgIgATYCDCABIAI2AggMBAsgAygCFCICBH8gA0EUagUgAygCECICRQ0DIANBEGoLIQQDQCAEIQYgAiIBQRRqIQQgASgCFCICDQAgAUEQaiEEIAEoAhAiAg0ACyAGQQA2AgAMAwsgBSgCBCICQQNxQQNHDQNBlOoBIAA2AgAgBSACQX5xNgIEIAMgAEEBcjYCBCAFIAA2AgAPCyACIAE2AgwgASACNgIIDAILQQAhAQsgB0UNAAJAIAMoAhwiBEECdCICKAK87AEgA0YEQCACQbzsAWogATYCACABDQFBkOoBQZDqASgCAEF+IAR3cTYCAAwCCwJAIAMgBygCEEYEQCAHIAE2AhAMAQsgByABNgIUCyABRQ0BCyABIAc2AhggAygCECICBEAgASACNgIQIAIgATYCGAsgAygCFCICRQ0AIAEgAjYCFCACIAE2AhgLIAMgBU8NACAFKAIEIgRBAXFFDQACQAJAAkACQCAEQQJxRQRAQaTqASgCACAFRgRAQaTqASADNgIAQZjqAUGY6gEoAgAgAGoiADYCACADIABBAXI2AgQgA0Gg6gEoAgBHDQZBlOoBQQA2AgBBoOoBQQA2AgAPC0Gg6gEoAgAiByAFRgRAQaDqASADNgIAQZTqAUGU6gEoAgAgAGoiADYCACADIABBAXI2AgQgACADaiAANgIADwsgBEF4cSAAaiEAIAUoAgwhASAEQf8BTQRAIAUoAggiAiABRgRAQYzqAUGM6gEoAgBBfiAEQQN2d3E2AgAMBQsgAiABNgIMIAEgAjYCCAwECyAFKAIYIQggASAFRwRAIAUoAggiAiABNgIMIAEgAjYCCAwDCyAFKAIUIgIEfyAFQRRqBSAFKAIQIgJFDQIgBUEQagshBANAIAQhBiACIgFBFGohBCABKAIUIgINACABQRBqIQQgASgCECICDQALIAZBADYCAAwCCyAFIARBfnE2AgQgAyAAQQFyNgIEIAAgA2ogADYCAAwDC0EAIQELIAhFDQACQCAFKAIcIgRBAnQiAigCvOwBIAVGBEAgAkG87AFqIAE2AgAgAQ0BQZDqAUGQ6gEoAgBBfiAEd3E2AgAMAgsCQCAFIAgoAhBGBEAgCCABNgIQDAELIAggATYCFAsgAUUNAQsgASAINgIYIAUoAhAiAgRAIAEgAjYCECACIAE2AhgLIAUoAhQiAkUNACABIAI2AhQgAiABNgIYCyADIABBAXI2AgQgACADaiAANgIAIAMgB0cNAEGU6gEgADYCAA8LIABB/wFNBEAgAEF4cUG06gFqIQICf0GM6gEoAgAiBEEBIABBA3Z0IgBxRQRAQYzqASAAIARyNgIAIAIMAQsgAigCCAshACACIAM2AgggACADNgIMIAMgAjYCDCADIAA2AggPC0EfIQEgAEH///8HTQRAIABBJiAAQQh2ZyICa3ZBAXEgAkEBdGtBPmohAQsgAyABNgIcIANCADcCECABQQJ0QbzsAWohBAJ/AkACf0GQ6gEoAgAiBkEBIAF0IgJxRQRAQZDqASACIAZyNgIAIAQgAzYCAEEYIQFBCAwBCyAAQRkgAUEBdmtBACABQR9HG3QhASAEKAIAIQQDQCAEIgIoAgRBeHEgAEYNAiABQR12IQQgAUEBdCEBIAIgBEEEcWoiBigCECIEDQALIAYgAzYCEEEYIQEgAiEEQQgLIQAgAyICDAELIAIoAggiBCADNgIMIAIgAzYCCEEYIQBBCCEBQQALIQYgASADaiAENgIAIAMgAjYCDCAAIANqIAY2AgBBrOoBQazqASgCAEEBayIAQX8gABs2AgALC+kCAQZ/QZzxAS0AAARAQZjxASgCAA8LIwBBIGsiAiQAAkACQANAIAJBCGoiBCAAQQJ0IgNqAn9BASAAdEH/////B3EiBUEBckUEQCADKAIADAELIABBjBZBxh8gBRsQogMLIgM2AgAgA0F/Rg0BIABBAWoiAEEGRw0AC0EAEKEDRQRAQZiDASEBIARBmIMBQRgQiwFFDQJBsIMBIQEgBEGwgwFBGBCLAUUNAkEAIQBBvO4BLQAARQRAA0AgAEECdCAAQcYfEKIDNgKM7gEgAEEBaiIAQQZHDQALQbzuAUEBOgAAQaTuAUGM7gEoAgA2AgALQYzuASEBIAJBCGoiAEGM7gFBGBCLAUUNAkGk7gEhASAAQaTuAUEYEIsBRQ0CQRgQNCIBRQ0BCyABIAIpAgg3AgAgASACKQIYNwIQIAEgAikCEDcCCAwBC0EAIQELIAJBIGokAEGc8QFBAToAAEGY8QEgATYCACABC80KAgV/CX4jAEHgAGsiBSQAIARC////////P4MhCiACIASFQoCAgICAgICAgH+DIQsgAkL///////8/gyIMQiCIIQ8gBEIwiKdB//8BcSEHAkACQCACQjCIp0H//wFxIglB//8Ba0GCgH5PBEAgB0H//wFrQYGAfksNAQsgAVAgAkL///////////8AgyINQoCAgICAgMD//wBUIA1CgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhCwwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCELIAMhAQwCCyABIA1CgICAgICAwP//AIWEUARAIAIgA4RQBEBCgICAgICA4P//ACELQgAhAQwDCyALQoCAgICAgMD//wCEIQtCACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEAgASANhEIAIQFQBEBCgICAgICA4P//ACELDAMLIAtCgICAgICAwP//AIQhCwwCCyABIA2EUARAQgAhAQwCCyACIAOEUARAQgAhAQwCCyANQv///////z9YBEAgBUHQAGogASAMIAEgDCAMUCIGG3lCwABCACAGG3ynIgZBD2sQREEQIAZrIQYgBSkDWCIMQiCIIQ8gBSkDUCEBCyACQv///////z9WDQAgBUFAayADIAogAyAKIApQIggbeULAAEIAIAgbfKciCEEPaxBEIAYgCGtBEGohBiAFKQNIIQogBSkDQCEDCyAHIAlqIAZqQf//AGshBgJAIApCD4YiDkIgiEKAgICACIQiAiABQiCIIgR+IhAgA0IPhiIRQiCIIgogD0KAgASEIg1+fCIPIBBUrSAPIANCMYggDoRC/////w+DIgMgDEL/////D4MiDH58Ig4gD1StfCACIA1+fCAOIA4gEUKAgP7/D4MiDyAMfiIRIAQgCn58IhAgEVStIBAgECADIAFC/////w+DIgF+fCIQVq18fCIOVq18IAMgDX4iEiACIAx+fCIRIBJUrUIghiARQiCIhHwgDiAOIBFCIIZ8Ig5WrXwgDiANIA9+Ig0gCiAMfnwiDCABIAJ+fCICIAMgBH58IgNCIIggAiADVq0gDCANVK0gAiAMVK18fEIghoR8IgIgDlStfCACIBAgBCAPfiIMIAEgCn58IgRCIIggBCAMVK1CIIaEfCIKIBBUrSAKIANCIIZ8IgMgClStfHwiCiACVK18IAogAyAEQiCGIgIgASAPfnwiASACVK18IgIgA1StfCIEIApUrXwiA0KAgICAgIDAAINQRQRAIAZBAWohBgwBCyABQj+IIANCAYYgBEI/iIQhAyAEQgGGIAJCP4iEIQQgAUIBhiEBIAJCAYaEIQILIAZB//8BTgRAIAtCgICAgICAwP//AIQhC0IAIQEMAQsCfiAGQQBMBEBBASAGayIHQf8ATQRAIAVBMGogASACIAZB/wBqIgYQRCAFQSBqIAQgAyAGEEQgBUEQaiABIAIgBxCKASAFIAQgAyAHEIoBIAUpAzAgBSkDOIRCAFKtIAUpAyAgBSkDEISEIQEgBSkDKCAFKQMYhCECIAUpAwAhBCAFKQMIDAILQgAhAQwCCyADQv///////z+DIAatQjCGhAsgC4QhCyABUCACQgBZIAJCgICAgICAgICAf1EbRQRAIAsgBEIBfCIBUK18IQsMAQsgASACQoCAgICAgICAgH+FhFBFBEAgBCEBDAELIAsgBCAEQgGDfCIBIARUrXwhCwsgACABNwMAIAAgCzcDCCAFQeAAaiQACwYAIAAQLQt8AQN/IwBBEGsiASQAIAEgADYCDCMAQRBrIgIkACAAKAIAQX9HBEAgAkEIaiACQQxqIAFBDGoQVRBVIQMDQCAAKAIAQQFGDQALIAAoAgBFBEAgAEEBNgIAIAMQ0gIgAEF/NgIACwsgAkEQaiQAIAAoAgQgAUEQaiQAQQFrCyAAIAAgAUEBazYCBCAAQeDVATYCACAAQZCtATYCACAAC/cFAQl/IwBBEGsiCSQAIAEQ1wIgCUEMaiABEFUhCCAAQQhqIgMQayACTQRAAkAgAkEBaiIAIAMQayIBSwRAIwBBIGsiCiQAAkAgACABayIHIAMoAgggAygCBGtBAnVNBEAgAyAHENkCDAELIApBDGohAQJ/IAMQayAHaiEFIwBBEGsiACQAIAAgBTYCDCAFELwCIgRNBEAgAxC5AiIFIARBAXZJBEAgACAFQQF0NgIIIABBCGogAEEMahCgASgCACEECyAAQRBqJAAgBAwBCxCMAQALIQQgAxBrIQUjAEEQayIAJAAgASADQQxqIgs2AhAgAUEANgIMIAQEfyAAQQhqIAsgBBC7AiAAKAIIIQYgACgCDAVBAAshBCABIAY2AgAgASAGIAVBAnRqIgU2AgggASAGIARBAnRqNgIMIAEgBTYCBCAAQRBqJAAjAEEQayIGJAAgASgCCCEEIAZBBGoiACABQQhqNgIIIAAgBDYCACAAIAQgB0ECdGo2AgQgACgCACEEA0AgACgCBCAERwRAIAEoAhAaIAQQugIgACAAKAIAQQRqIgQ2AgAMAQsLIAAoAgggACgCADYCACAGQRBqJAAgASgCBCADKAIAIgAgAygCBGtqIQQgAygCBCAAayIHBEAgBCAAIAf8CgAACyABIAQ2AgQgAyADKAIANgIEIAMgAUEEahDXASADQQRqIAFBCGoQ1wEgA0EIaiABQQxqENcBIAEgASgCBDYCACADEGsaIAEoAgQhAANAIAEoAggiBCAARwRAIAEgBEEEazYCCCABKAIQGgwBCwsgASgCACIABEAgASgCECAAIAEoAgwgASgCAGtBAnUQuAILCyAKQSBqJAAMAQsgACABSQRAIAMoAgAgAEECdGohACADEGsaIAMgABDYAgsLCyADIAIQggEoAgAEQCADIAIQggEoAgAQvwELIAgQrAEhACADIAIQggEgADYCACAIKAIAIQAgCEEANgIAIAAEQCAAEL8BCyAJQRBqJAALySgBC38jAEEQayIKJAACQAJAAkACQAJAAkACQAJAAkACQCAAQfQBTQRAQYzqASgCACIEQRAgAEELakH4A3EgAEELSRsiBkEDdiIAdiIBQQNxBEACQCABQX9zQQFxIABqIgJBA3QiAUG06gFqIgAgASgCvOoBIgEoAggiBUYEQEGM6gEgBEF+IAJ3cTYCAAwBCyAFIAA2AgwgACAFNgIICyABQQhqIQAgASACQQN0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KAIAKAIcEQQAC8EBAQN/IAAtAABBIHFFBEACQCAAKAIQIgMEfyADBSAAEN8BDQEgACgCEAsgACgCFCIEayACSQRAIAAgASACIAAoAiQRAwAaDAELAkACQCACRSAAKAJQQQBIcg0AIAIhAwNAIAEgA2oiBUEBay0AAEEKRwRAIANBAWsiAw0BDAILCyAAIAEgAyAAKAIkEQMAIANJDQIgAiADayECIAAoAhQhBAwBCyABIQULIAQgBSACEHEaIAAgACgCFCACajYCFAsLC6EBAQJ/AkAgABAfRSACIAFrQQVIcg0AIAEgAhDHASACQQRrIQQgABAjIgIgABAfaiEFAkADQAJAIAIsAAAhACABIARPDQAgAEEATCAAQf8ATnJFBEAgASgCACACLAAARw0DCyABQQRqIQEgAiAFIAJrQQFKaiECDAELCyAAQQBMIABB/wBOcg0BIAIsAAAgBCgCAEEBa0sNAQsgA0EENgIACwtQAQF+AkAgA0HAAHEEQCABIANBQGqthiECQgAhAQwBCyADRQ0AIAIgA60iBIYgAUHAACADa62IhCECIAEgBIYhAQsgACABNwMAIAAgAjcDCAtpAQF/IwBBgAJrIgUkACAEQYDABHEgAiADTHJFBEAgBSABIAIgA2siA0GAAiADQYACSSIBGxCYAiABRQRAA0AgACAFQYACEEIgA0GAAmsiA0H/AUsNAAsLIAAgBSADEEILIAVBgAJqJAALBABBAAsKACAALQALQQd2CwoAIABB0PIBEHoLCgAgAEHY8gEQegvPCQIEfwR+IwBB8ABrIgYkACAEQv///////////wCDIQkCQAJAIAFQIgUgAkL///////////8AgyIKQoCAgICAgMD//wB9QoCAgICAgMCAgH9UIApQG0UEQCADQgBSIAlCgICAgICAwP//AH0iC0KAgICAgIDAgIB/ViALQoCAgICAgMCAgH9RGw0BCyAFIApCgICAgICAwP//AFQgCkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEEIAEhAwwCCyADUCAJQoCAgICAgMD//wBUIAlCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhBAwCCyABIApCgICAgICAwP//AIWEUARAQoCAgICAgOD//wAgAiABIAOFIAIgBIVCgICAgICAgICAf4WEUCIFGyEEQgAgASAFGyEDDAILIAMgCUKAgICAgIDA//8AhYRQDQEgASAKhFAEQCADIAmEQgBSDQIgASADgyEDIAIgBIMhBAwCCyADIAmEUEUNACABIQMgAiEEDAELIAMgASABIANUIAkgClYgCSAKURsiCBshCiAEIAIgCBsiDEL///////8/gyEJIAIgBCAIGyILQjCIp0H//wFxIQcgDEIwiKdB//8BcSIFRQRAIAZB4ABqIAogCSAKIAkgCVAiBRt5QsAAQgAgBRt8pyIFQQ9rEEQgBikDaCEJIAYpA2AhCkEQIAVrIQULIAEgAyAIGyEDIAtC////////P4MhASAHBH4gAQUgBkHQAGogAyABIAMgASABUCIHG3lCwABCACAHG3ynIgdBD2sQREEQIAdrIQcgBikDUCEDIAYpA1gLQgOGIANCPYiEQoCAgICAgIAEhCEBIAlCA4YgCkI9iIQgAiAEhSEEAn4gA0IDhiICIAUgB0YNABogBSAHayIHQf8ASwRAQgAhAUIBDAELIAZBQGsgAiABQYABIAdrEEQgBkEwaiACIAEgBxCKASAGKQM4IQEgBikDMCAGKQNAIAYpA0iEQgBSrYQLIQlCgICAgICAgASEIQsgCkIDhiEKAkAgBEIAUwRAQgAhA0IAIQQgCSAKhSABIAuFhFANAiAKIAl9IQIgCyABfSAJIApWrX0iBEL/////////A1YNASAGQSBqIAIgBCACIAQgBFAiBxt5QsAAQgAgBxt8p0EMayIHEEQgBSAHayEFIAYpAyghBCAGKQMgIQIMAQsgCSAKfCICIAlUrSABIAt8fCIEQoCAgICAgIAIg1ANACAJQgGDIARCP4YgAkIBiISEIQIgBUEBaiEFIARCAYghBAsgDEKAgICAgICAgIB/gyEDIAVB//8BTgRAIANCgICAgICAwP//AIQhBEIAIQMMAQtBACEHAkAgBUEASgRAIAUhBwwBCyAGQRBqIAIgBCAFQf8AahBEIAYgAiAEQQEgBWsQigEgBikDACAGKQMQIAYpAxiEQgBSrYQhAiAGKQMIIQQLIARCPYYgAkIDiIQhASAEQgOIQv///////z+DIAetQjCGhCADhCEEAkACQCACp0EHcSIFQQRHBEAgBCABIAEgBUEES618IgNWrXwhBAwBCyAEIAEgASABQgGDfCIDVq18IQQMAQsgBUUN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C14BA38gAEEANgIIIABCADcCACABKAIAIQMgASgCBCIBIANrIgRBAnUiAgRAIAAgAhCuAyAAKAIEIQIgBEUgASADRnJFBEAgAiADIAT8CgAACyAAIAIgBGo2AgQLIAALDQAgACgCACABQQJ0agsXACAAEEcEQCAAIAE2AgQPCyAAIAEQUAthAQF/IwBBEGsiAiQAIAIgADYCDAJAIAAgAUYNAANAIAIgAUEBayIBNgIIIAAgAU8NASACKAIMIAIoAggQ8wIgAiACKAIMQQFqIgA2AgwgAigCCCEBDAALAAsgAkEQaiQAC6wBAQR/IwBBEGsiByQAAkAgAEUNACAEKAIMIQYgAiABa0ECdSIIQQBKBEAgACABIAgQjQIgCEcNAQsgAyABa0ECdSIBIAZIBEAgACAHQQRqIAYgAWsiASAFEP0CIgUQIyABEI0CIQYgBRA5GiABIAZHDQELIAMgAmtBAnUiAUEASgRAIAAgAiABEI0CIAFHDQELIAQoAgwaIARBADYCDCAAIQkLIAdBEGokACAJCycBAX8jAEEQayIDJAAgAyACNgIMIABB5AAgASACENEBIANBEGokAAvbAQIBfwJ+QQEhBAJAIABCAFIgAUL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFEbDQAgAkIAUiADQv///////////wCDIgZCgICAgICAwP//AFYgBkKAgICAgIDA//8AURsNACAAIAKEIAUgBoSEUARAQQAPCyABIAODQgBZBEAgACACVCABIANTIAEgA1EbBEBBfw8LIAAgAoUgASADhYRCAFIPCyAAIAJWIAEgA1UgASADURsEQEF/DwsgACAChSABIAOFhEIAUiEECyAEC+wBAQR/IwBBEGsiBCQAIABBADYCBCMAQRBrIgUkACAEQQA6AA8gACAAKAIAQQxrKAIAahDZASEGIAAgACgCAEEMaygCAGohAwJAIAYEQCADKAJIBEAgACAAKAIAQQxrKAIAaigCSBDFAwsgBCAAIAAoAgBBDGsoAgBqENkBOgAPDAELIANBBBDVAQsgBUEQaiQAQQQhAyAELQAPBEAgACAAIAAoAgBBDGsoAgBqKAIYIgMgASACIAMoAgAoAiARAwAiATYCBEEGQQAgASACRxshAwsgACAAKAIAQQxrKAIAaiADENUBIARB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AxsLPAAgAEEANgIIIABCADcCACAAIAEoAgA2AgAgACABKAIENgIEIAAgASgCCDYCCCABQQA2AgggAUIANwIACywBAX8gAEEANgIIIABCADcCACAAIAEoAgAiAiABKAIEIgEgASACaxDAAyAACwgAIABB/wFxC/wBAQN/IAAoAgQgACgCACIDa0ECdSICIAFJBEAjAEEgayIDJAACQCABIAJrIgIgACgCCCAAKAIEIgFrQQJ1TQRAIAAoAgQiASACQQJ0aiECA0AgASACRgRAIAAgAjYCBAUgAUEANgIAIAFBBGohAQwBCwsMAQsgA0EMaiAAIAEgACgCAGtBAnUgAmoQtgEgACgCBCAAKAIAa0ECdSAAEIcCIgQoAggiASACQQJ0aiECA0AgASACRwRAIAFBADYCACABQQRqIQEMAQsLIAQgAjYCCCAAIAQQhQIgBBCBAgsgA0EgaiQADwsgASACSQRAIAAgAyABQQJ0ajYCBAsLUgECf0HU3gEoAgAiASAAQQdqQXhxIgJqIQACQCACQQAgACABTRtFBEAgAD8AQRB0TQ0BIAAQGA0BC0GI6gFBMDYCAEF/DwtB1N4BIAA2AgAgAQt/AgF+A38CQCAAQoCAgIAQVARAIAAhAgwBCwNAIAFBAWsiASAAIABCCoAiAkIKfn2nQTByOgAAIABC/////58BViACIQANAAsLIAJQRQRAIAKnIQMDQCABQQFrIgEgAyADQQpuIgRBCmxrQTByOgAAIANBCUsgBCEDDQALCyABC78BAQN/IAAoAgQgACgCACIDayICIAFJBEAjAEEgayIDJAACQCABIAJrIgIgACgCCCAAKAIEIgFrTQRAIAAgAhCYAwwBCyACIANBDGogACABIAJqIAAoAgBrELQBIAAoAgQgACgCAGsgABDGASIEKAIIIgFqIQIDQCABIAJHBEAgAUEAOgAAIAFBAWohAQwBCwsgBCACNgIIIAAgBBDvASAEELoBCyADQSBqJAAPCyABIAJJBEAgACABIANqNgIECwt9AQN/AkACQCAAIgFBA3FFDQAgAS0AAEUEQEEADwsDQCABQQFqIgFBA3FFDQEgAS0AAA0ACwwBCwNAIAEiAkEEaiEBQYCChAggAigCACIDayADckGAgYKEeHFBgIGChHhGDQALA0AgAiIBQQFqIQIgAS0AAA0ACwsgASAA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BEBBCiEBIAAQXgwBCyAAEH5BAWshASAAKAIECyIDIAFGBEAgACABQQEgASABEPQBIAAQIxoMAQsgABAjGiAEDQAgACIBIANBAWoQUAwBCyAAKAIAIQEgACADQQFqNgIECyABIANqIgAgAkEPahBdIAJBADoADiAAQQFqIAJBDmoQXSACQRBqJAALoQIBA38jAEEgayIIJABB9////wciCSABQX9zaiACTwRAIAAQIyEKIAFB8////wNJBEAgCCABQQF0NgIcIAggASACajYCECAIQRBqIAhBHGoQoAEoAgAQnwFBAWohCQsgCEEcaiAIQRhqIAAQVSgCABC8ASAIQRBqIAkQngEgCCgCECECIAgoAhQaIAQEQCACIAogBBBNCyAGBEAgAiAEaiAHIAYQTQsgAyAEIAVqIglrIQcgAyAJRwRAIAIgBGogBmogBCAKaiAFaiAHEE0LIAFBCkcEQCAKEIsCCyAAIAI2AgAgACAIKAIUEFwgACAEIAZqIAdqIgA2AgQgCEEAOgAPIAAgAmogCEEPahBdIAhBHGoQuwEgCEEgaiQADwsQWwALCQAgAEEBEKgCCwoAIAAoAgAQHxoLCQAgACABEFUaCwcAIABBAkkLBABBBAsoAQF/IAAgACgCBEEBayIBNgIEIAFBf0YEQCAAIAAoAgAoAggRAgALC5UBAQN/IwBBEGsiBCQAIAQgATYCDCAEIAM2AgggBEEEaiAEQQxqEGMgBCgCCCEDIwBBEGsiASQAIAEgAzYCDCABIAM2AghBfyEFAkBBAEEAIAIgAxDRASIDQQBIDQAgACADQQFqIgMQNCIANgIAIABFDQAgACADIAIgASgCDBDRASEFCyABQRBqJAAQYiAEQRBqJAAgBQsPACAAIAAoAgAoAiQRAAALEQAgACABIAEoAgAoAiARAQALDgAgACABKAIANgIAIAALCABB/////wcLBQBB/wALOwAgACADNgIQIAAgAQR/IAEQUwVBAAsiAzYCACAAIAIgA2oiAjYCCCAAIAEgA2o2AgwgACACNgIEIAALYQEBfyMAQRBrIgIkACACIAA2AgwCQCAAIAFGDQADQCACIAFBBGsiATYCCCAAIAFPDQEgAigCDCACKAIIENcBIAIgAigCDEEEaiIANgIMIAIoAgghAQwACwALIAJBEGokAAs5AgF/AX4jAEEQayIEJAAgAykDACEFIAQgAykDCDcDCCAEIAU3AwAgACABIAIgBBDAASAEQRBqJAAL0AEBAn8gAkGAEHEEQCAAQSs6AAAgAEEBaiEACyACQYAIcQRAIABBIzoAACAAQQFqIQALIAJBhAJxIgNBhAJHBEAgAEGu1AA7AAAgAEECaiEACyACQYCAAXEhAgNAIAEtAAAiBARAIAAgBDoAACAAQQFqIQAgAUEBaiEBDAELCyAAAn8CQCADQYACRwRAIANBBEcNAUHGAEHmACACGwwCC0HFAEHlACACGwwBC0HBAEHhACACGyADQYQCRg0AGkHHAEHnACACGws6AAAgA0GEAkcLKwEBfyMAQRBrIgUkACAFIAQoAgA2AgAgACABIAIgAyAFEJYBIAVBEGokAAuqAQEBfwJAIANBgBBxRSACRXINACADQcoAcSIEQQhGIARBwABGcg0AIABBKzoAACAAQQFqIQALIANBgARxBEAgAEEjOgAAIABBAWohAAsDQCABLQAAIgQEQCAAIAQ6AAAgAEEBaiEAIAFBAWohAQwBCwsgAAJ/Qe8AIANBygBxIgFBwABGDQAaQdgAQfgAIANBgIABcRsgAUEIRg0AGkHkAEH1ACACGws6AAALDAAgABAjIAFBAnRqC5IEAQt/IwBBgAFrIgokACAKIAE2AnwgAiADELUCIQggCkHjADYCECAKQQhqQQAgCkEQaiIJEDYhDwJAAkACQCAIQeUATwRAIAgQNCIJRQ0BIA8gCRA8CyAJIQcgAiEBA0AgASADRgRAA0AgACAKQfwAaiIBECtBASAIGwRAIAAgARArBEAgBSAFKAIAQQJyNgIACwNAIAIgA0YNBiAJLQAAQQJGDQcgCUEBaiEJIAJBDGohAgwACwALIAAQNyEOIAZFBEAgBCAOEEEhDgsgDUEBaiEMQQAhECAJIQcgAiEBA0AgASADRgRAIAwhDSAQRQ0CIAAQPhogCSEHIAIhASAIIAtqQQJJDQIDQCABIANGBEAMBAUCQCAHLQAAQQJHDQAgARAfIA1GDQAgB0EAOgAAIAtBAWshCwsgB0EBaiEHIAFBDGohAQwBCwALAAUCQCAHLQAAQQFHDQAgASANEMwBKAIAIRECQCAGBH8gEQUgBCAREEELIA5GBEBBASEQIAEQHyAMRw0CIAdBAjoAACALQQFqIQsMAQsgB0EAOgAACyAIQQFrIQgLIAdBAWohByABQQxqIQEMAQsACwALAAUgB0ECQQEgARBaIgwbOgAAIAdBAWohByABQQxqIQEgCyAMaiELIAggDGshCAwBCwALAAsQPQALIAUgBSgCAEEEcjYCAAsgDxA1IApBgAFqJAAgAgsRACAAIAEgACgCACgCDBEEAAuTBAELfyMAQYABayIKJAAgCiABNgJ8IAIgAxC1AiEIIApB4wA2AhAgCkEIakEAIApBEGoiCRA2IQ8CQAJAAkAgCEHlAE8EQCAIEDQiCUUNASAPIAkQPAsgCSEHIAIhAQNAIAEgA0YEQANAIAAgCkH8AGoiARAsQQEgCBsEQCAAIAEQLARAIAUgBSgCAEECcjYCAAsDQCACIANGDQYgCS0AAEECRg0HIAlBAWohCSACQQxqIQIMAAsACyAAEDghDiAGRQRAIAQgDhDOASEOCyANQQFqIQxBACEQIAkhByACIQEDQCABIANGBEAgDCENIBBFDQIgABA/GiAJIQcgAiEBIAggC2pBAkkNAgNAIAEgA0YEQAwEBQJAIActAABBAkcNACABEB8gDUYNACAHQQA6AAAgC0EBayELCyAHQQFqIQcgAUEMaiEBDAELAAsABQJAIActAABBAUcNACABIA0QIiwAACERAkAgBgR/IBEFIAQgERDOAQsgDkYEQEEBIRAgARAfIAxHDQIgB0ECOgAAIAtBAWohCwwBCyAHQQA6AAALIAhBAWshCAsgB0EBaiEHIAFBDGohAQwBCwALAAsABSAHQQJBASABEFoiDBs6AAAgB0EBaiEHIAFBDGohASALIAxqIQsgCCAMayEIDAELAAsACxA9AAsgBSAFKAIAQQRyNgIACyAPEDUgCkGAAWokACACC0oBAn8CQCAALQAAIgJFIAIgAS0AACIDR3INAANAIAEtAAEhAyAALQABIgJFDQEgAUEBaiEBIABBAWohACACIANGDQALCyACIANrC4QBAQJ/IwBBoAFrIgQkACAEIAAgBEGeAWogARsiADYClAEgBCABQQFrIgVBACABIAVPGzYCmAEgBEEAQZAB/AsAIARBfzYCTCAEQeIANgIkIARBfzYCUCAEIARBnwFqNgIsIAQgBEGUAWo2AlQgAEEAOgAAIAQgAiADEM0DIARBoAFqJAALuwIBBH8gA0H87QEgAxsiBSgCACEDAkACfwJAIAFFBEAgAw0BQQAPC0F+IAJFDQEaAkAgAwRAIAIhBAwBCyABLQAAIgPAIgRBAE4EQCAABEAgACADNgIACyAEQQBHDwtB3OEBKAIAKAIARQRAQQEgAEUNAxogACAEQf+/A3E2AgBBAQ8LIANBwgFrIgNBMksNASADQQJ0KAKQgQEhAyACQQFrIgRFDQMgAUEBaiEBCyABLQAAIgZBA3YiB0EQayADQRp1IAdqckEHSw0AA0AgBEEBayEEIAZB/wFxQYABayADQQZ0ciIDQQBOBEAgBUEANgIAIAAEQCAAIAM2AgALIAIgBGsPCyAERQ0DIAFBAWoiASwAACIGQUBIDQALCyAFQQA2AgBBiOoBQRk2AgBBfwsPCyAFIAM2AgBBfgsNACAAKAIAIAEoAgBJCwcAIABBC0kLJgAgACAAKAIYRSAAKAIQIAFyciIBNgIQIAAoAhQgAXEEQBA9AAsLBwAgAEEISwscAQF/IAAoAgAhAiAAIAEoAgA2AgAgASACNgIACwwAIABBDGoQ2gEgAAsIACAAKAIQRQsIACAAEIkCGgusCwEHfyAAIAFqIQUCQAJAIAAoAgQiAkEBcQ0AIAJBAnFFDQEgACgCACICIAFqIQECQAJAAkAgACACayIAQaDqASgCAEcEQCAAKAIMIQMgAkH/AU0EQCADIAAoAggiBEcNAkGM6gFBjOoBKAIAQX4gAkEDdndxNgIADAULIAAoAhghBiAAIANHBEAgACgCCCICIAM2AgwgAyACNgIIDAQLIAAoAhQiBAR/IABBFGoFIAAoAhAiBEUNAyAAQRBqCyECA0AgAiEHIAQiA0EUaiECIAMoAhQiBA0AIANBEGohAiADKAIQIgQNAAsgB0EANgIADAMLIAUoAgQiAkEDcUEDRw0DQZTqASABNgIAIAUgAkF+cTYCBCAAIAFBAXI2AgQgBSABNgIADwsgBCADNgIMIAMgBDYCCAwCC0EAIQMLIAZFDQACQCAAKAIcIgJBAnQiBCgCvOwBIABGBEAgBEG87AFqIAM2AgAgAw0BQZDqAUGQ6gEoAgBBfiACd3E2AgAMAgsCQCAAIAYoAhBGBEAgBiADNgIQDAELIAYgAzYCFAsgA0UNAQsgAyAGNgIYIAAoAhAiAgRAIAMgAjYCECACIAM2AhgLIAAoAhQiAkUNACADIAI2AhQgAiADNgIYCwJAAkACQAJAIAUoAgQiAkECcUUEQEGk6gEoAgAgBUYEQEGk6gEgADYCAEGY6gFBmOoBKAIAIAFqIgE2AgAgACABQQFyNgIEIABBoOoBKAIARw0GQZTqAUEANgIAQaDqAUEANgIADwtBoOoBKAIAIgggBUYEQEGg6gEgADYCAEGU6gFBlOoBKAIAIAFqIgE2AgAgACABQQFyNgIEIAAgAWogATYCAA8LIAJBeHEgAWohASAFKAIMIQMgAkH/AU0EQCAFKAIIIgQgA0YEQEGM6gFBjOoBKAIAQX4gAkEDdndxNgIADAULIAQgAzYCDCADIAQ2AggMBAsgBSgCGCEGIAMgBUcEQCAFKAIIIgIgAzYCDCADIAI2AggMAwsgBSgCFCIEBH8gBUEUagUgBSgCECIERQ0CIAVBEGoLIQIDQCACIQcgBCIDQRRqIQIgAygCFCIEDQAgA0EQaiECIAMoAhAiBA0ACyAHQQA2AgAMAgsgBSACQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgAMAwtBACEDCyAGRQ0AAkAgBSgCHCICQQJ0IgQoArzsASAFRgRAIARBvOwBaiADNgIAIAMNAUGQ6gFBkOoBKAIAQX4gAndxNgIADAILAkAgBSAGKAIQRgRAIAYgAzYCEAwBCyAGIAM2AhQLIANFDQELIAMgBjYCGCAFKAIQIgIEQCADIAI2AhAgAiADNgIYCyAFKAIUIgJFDQAgAyACNgIUIAIgAzYCGAsgACABQQFyNgIEIAAgAWogATYCACAAIAhHDQBBlOoBIAE2AgAPCyABQf8BTQRAIAFBeHFBtOoBaiECAn9BjOoBKAIAIgNBASABQQN2dCIBcUUEQEGM6gEgASADcjYCACACDAELIAIoAggLIQEgAiAANgIIIAEgADYCDCAAIAI2AgwgACABNgIIDwtBHyEDIAFB////B00EQCABQSYgAUEIdmciAmt2QQFxIAJBAXRrQT5qIQMLIAAgAzYCHCAAQgA3AhAgA0ECdEG87AFqIQICQAJAQZDqASgCACIEQQEgA3QiB3FFBEBBkOoBIAQgB3I2AgAgAiAANgIAIAAgAjYCGAwBCyABQRkgA0EBdmtBACADQR9HG3QhAyACKAIAIQIDQCACIgQoAgRBeHEgAUYNAiADQR12IQIgA0EBdCEDIAQgAkEEcWoiBygCECICDQALIAcgADYCECAAIAQ2AhgLIAAgADYCDCAAIAA2AggPCyAEKAIIIgEgADYCDCAEIAA2AgggAEEANgIYIAAgBDYCDCAAIAE2AggLC40IAQt/IABFBEAgARA0DwsgAUFATwRAQYjqAUEwNgIAQQAPCwJ/QRAgAUELakF4cSABQQtJGyEGIABBCGsiBCgCBCIJQXhxIQgCQCAJQQNxRQRAIAZBgAJJDQEgBkEEaiAITQRAIAQhAiAIIAZrQeztASgCAEEBdE0NAgtBAAwCCyAEIAhqIQcCQCAGIAhNBEAgCCAGayIDQRBJDQEgBCAGIAlBAXFyQQJyNgIEIAQgBmoiAiADQQNyNgIEIAcgBygCBEEBcjYCBCACIAMQ2wEMAQtBpOoBKAIAIAdGBEBBmOoBKAIAIAhqIgggBk0NAiAEIAYgCUEBcXJBAnI2AgQgBCAGaiIDIAggBmsiAkEBcjYCBEGY6gEgAjYCAEGk6gEgAzYCAAwBC0Gg6gEoAgAgB0YEQEGU6gEoAgAgCGoiAyAGSQ0CAkAgAyAGayICQRBPBEAgBCAGIAlBAXFyQQJyNgIEIAQgBmoiCCACQQFyNgIEIAMgBGoiAyACNgIAIAMgAygCBEF+cTYCBAwBCyAEIAlBAXEgA3JBAnI2AgQgAyAEaiICIAIoAgRBAXI2AgRBACECQQAhCAtBoOoBIAg2AgBBlOoBIAI2AgAMAQsgBygCBCIDQQJxDQEgA0F4cSAIaiILIAZJDQEgCyAGayEMIAcoAgwhBQJAIANB/wFNBEAgBygCCCICIAVGBEBBjOoBQYzqASgCAEF+IANBA3Z3cTYCAAwCCyACIAU2AgwgBSACNgIIDAELIAcoAhghCgJAIAUgB0cEQCAHKAIIIgIgBTYCDCAFIAI2AggMAQsCQCAHKAIUIgIEfyAHQRRqBSAHKAIQIgJFDQEgB0EQagshCANAIAghAyACIgVBFGohCCACKAIUIgINACAFQRBqIQggBSgCECICDQALIANBADYCAAwBC0EAIQULIApFDQACQCAHKAIcIgNBAnQiAigCvOwBIAdGBEAgAkG87AFqIAU2AgAgBQ0BQZDqAUGQ6gEoAgBBfiADd3E2AgAMAgsCQCAHIAooAhBGBEAgCiAFNgIQDAELIAogBTYCFAsgBUUNAQsgBSAKNgIYIAcoAhAiAgRAIAUgAjYCECACIAU2AhgLIAcoAhQiAkUNACAFIAI2AhQgAiAFNgIYCyAMQQ9NBEAgBCAJQQFxIAtyQQJyNgIEIAQgC2oiAiACKAIEQQFyNgIEDAELIAQgBiAJQQFxckECcjYCBCAEIAZqIgMgDEEDcjYCBCAEIAtqIgIgAigCBEEBcjYCBCADIAwQ2wELIAQhAgsgAgsiAgRAIAJBCGoPCyABEDQiBEUEQEEADwsgBCAAQXxBeCAAQQRrKAIAIgJBA3EbIAJBeHFqIgIgASABIAJLGxBxGiAAEC0gBAsWACAARQRAQQAPC0GI6gEgADYCAEF/C30BAn8jAEEQayIBJAAgAUEKOgAPAkACQCAAKAIQIgIEfyACBSAAEN8BDQIgACgCEAsgACgCFCICRg0AIAAoAlBBCkYNACAAIAJBAWo2AhQgAkEKOgAADAELIAAgAUEPakEBIAAoAiQRAwBBAUcNACABLQAPGgsgAUEQaiQAC1kBAX8gACAAKAJIIgFBAWsgAXI2AkggACgCACIBQQhxBEAgACABQSByNgIAQX8PCyAAQgA3AgQgACAAKAIsIgE2AhwgACABNgIUIAAgASAAKAIwajYCEEEAC+IBAQJ/IAJBAEchAwJAAkACQCAAQQNxRSACRXINACABQf8BcSEEA0AgAC0AACAERg0CIAJBAWsiAkEARyEDIABBAWoiAEEDcUUNASACDQALCyADRQ0BIAFB/wFxIgMgAC0AAEYgAkEESXJFBEAgA0GBgoQIbCEDA0BBgIKECCAAKAIAIANzIgRrIARyQYCBgoR4cUGAgYKEeEcNAiAAQQRqIQAgAkEEayICQQNLDQALCyACRQ0BCyABQf8BcSEBA0AgASAALQAARgRAIAAPCyAAQQFqIQAgAkEBayICDQALC0EACwIACwQAQQELoBABFn8jAEFAaiIGQgA3AzAgBkIANwM4IAZCADcDICAGQgA3AygCQAJAAn8CQAJ/IAIEQCACQQRPBEAgAUEGaiEIIAFBBGohDSABQQJqIQsgAkF8cSEMA0AgBkEgaiIPIAEgCkEBdCIJai8BAEEBdGoiESARLwEAQQFqOwEAIAkgC2ovAQBBAXQgD2oiESARLwEAQQFqOwEAIAkgDWovAQBBAXQgD2oiESARLwEAQQFqOwEAIAggCWovAQBBAXQgD2oiCSAJLwEAQQFqOwEAIApBBGohCiAOQQRqIg4gDEcNAAsLIAJBA3EiCQRAA0AgBkEgaiABIApBAXRqLwEAQQF0aiIIIAgvAQBBAWo7AQAgCkEBaiEKIAdBAWoiByAJRw0ACwsgBCgCACIKIAYvAT4iEEUNARpBDyELDAILIAQoAgALIQpBACEQIAYvATwEQEEOIQsMAQsgBi8BOgRAQQ0hCwwBCyAGLwE4BEBBDCELDAELIAYvATYEQEELIQsMAQsgBi8BNARAQQohCwwBCyAGLwEyBEBBCSELDAELIAYvATAEQEEIIQsMAQsgBi8BLgRAQQchCwwBCyAGLwEsBEBBBiELDAELIAYvASoEQEEFIQsMAQsgBi8BKARAQQQhCwwBCyAGLwEmBEBBAyELDAELIAYvASQEQEECIQsMAQsgBi8BIkUEQCADIAMoAgAiAEEEajYCACAAQcACNgEAIAMgAygCACIAQQRqNgIAIABBwAI2AQBBASEMDAMLIApBAEchCUEBIQtBASEKQQAMAQsgCiALIAogC0kbIQlBASEKAkADQCAGQSBqIApBAXRqLwEADQEgCkEBaiIKIAtHDQALIAshCgtBAQshD0F/IQcgBi8BIiIIQQJLDQFBBCAIQQF0a0H+/wNxIAYvASQiDWsiDkEASA0BIA5BAXQgBi8BJiIOayIMQQBIDQEgDEEBdCAGLwEoIgxrIhFBAEgNASARQQF0IAYvASoiEWsiGEEASA0BIBhBAXQgBi8BLCIYayISQQBIDQEgEkEBdCAGLwEuIhJrIhNBAEgNASATQQF0IAYvATAiE2siFEEASA0BIBRBAXQgBi8BMiIUayIVQQBIDQEgFUEBdCAGLwE0IhVrIhdBAEgNASAXQQF0IAYvATYiF2siFkEASA0BIBZBAXQgBi8BOCIWayIZQQBIDQEgGUEBdCAGLwE6IhlrIhpBAEgNASAaQQF0IAYvATwiGmsiG0EASA0BIBtBAXQiGyAQSSAQIBtHQQAgAEUgD3Ibcg0BIAkgCkshEEEAIQcgBkEAOwECIAYgCDsBBCAGIAggDWoiCDsBBiAGIAggDmoiCDsBCCAGIAggDGoiCDsBCiAGIAggEWoiCDsBDCAGIAggGGoiCDsBDiAGIAggEmoiCDsBECAGIAggE2oiCDsBEiAGIAggFGoiCDsBFCAGIAggFWoiCDsBFiAGIAggF2oiCDsBGCAGIAggFmoiCDsBGiAGIAggGWoiCDsBHCAGIAggGmo7AR4CQCACRQ0AIAJBAUcEQCACQX5xIQhBACEOA0AgASAHQQF0ai8BACINBEAgBiANQQF0aiINIA0vAQAiDUEBajsBACAFIA1BAXRqIAc7AQALIAEgB0EBciINQQF0ai8BACIMBEAgBiAMQQF0aiIMIAwvAQAiDEEBajsBACAFIAxBAXRqIA07AQALIAdBAmohByAOQQJqIg4gCEcNAAsLIAJBAXFFDQAgASAHQQF0ai8BACICRQ0AIAYgAkEBdGoiAiACLwEAIgJBAWo7AQAgBSACQQF0aiAHOwEACyAJIAogEBshDEEUIRJBACEXIAUiCCERQQAhEwJAAkACQCAADgICAAELQQEhByAMQQlLDQNBgQIhEkHA7QAhEUGA7QAhCEEBIRMMAQsgAEECRiEXQQAhEkHA7gAhEUGA7gAhCCAAQQJHBEAMAQtBASEHIAxBCUsNAgtBASAMdCIUQQFrIRkgAygCACEVQQAhAiAMIQlBACEAQQAhEEF/IQ0DQEEBIAl0IRgCQANAAn9BACASIAUgAkEBdGovAQAiCUEBaksNABogCSASSQRAQQAhCUHgAAwBCyAIIAkgEmtBAXQiB2ovAQAhCSAHIBFqLQAACyEOQX8gCiAAayIPdCEaIBUgECAAdkECdGohGyAYIQcDQCAbIAcgGmoiB0ECdGoiFiAJOwECIBYgDzoAASAWIA46AAAgBw0AC0EBIApBAWt0IQ4DQCAOIgdBAXYhDiAHIBBxDQALIAZBIGogCkEBdGoiCSAJLwEAQQFrIgk7AQAgB0EBayAQcSAHakEAIAcbIRAgAkEBaiECIAlB//8DcUUEQCAKIAtGDQIgASAFIAJBAXRqLwEAQQF0ai8BACEKCyAKIAxNDQAgECAZcSIOIA1GDQALQQEgCiAAIAwgABsiAGsiCXQhDyAKIAtJBEAgAEEBaiEWIAsgAGshDSAKIQcCQANAIA8gBkEgaiAHQQF0ai8BAGsiB0EATA0BIAdBAXQhDyAJIBZqIQcgCUEBaiEJIAcgC0kNAAsgDSEJC0EBIAl0IQ8LQQEhByATIA8gFGoiFEHUBktxIBcgFEHQBEtxcg0DIAMoAgAiDSAOQQJ0aiIHIAw6AAEgByAJOgAAIAcgFSAYQQJ0aiIVIA1rQQJ2OwECIA4hDQwBCwsgEARAIBUgEEECdGoiAEEAOwECIAAgDzoAASAAQcAAOgAACyADIAMoAgAgFEECdGo2AgALIAQgDDYCAEEAIQcLIAcLqgEBA38gASwAC0EATgRAIAAgASkCADcCACAAIAEoAgg2AggPCyABKAIAIQQgASgCBCECIwBBEGsiAyQAAkACQAJAIAIQ1AEEQCAAIgEgAhBQDAELIAJB9////wdLDQEgA0EIaiACEJ8BQQFqEJ4BIAMoAgwaIAAgAygCCCIBNgIAIAAgAygCDBBcIAAgAjYCBAsgASAEIAJBAWoQTSADQRBqJAAMAQsQWwALC0sBAn8gACgCBCIHQQh1IQYgB0EBcQRAIAMoAgAgBhDoASEGCyAAKAIAIgAgASACIAMgBmogBEECIAdBAnEbIAUgACgCACgCFBEKAAsgAAJAIAEgACgCBEcNACAAKAIcQQFGDQAgACACNgIcCwuaAQAgAEEBOgA1AkAgAiAAKAIERw0AIABBAToANAJAIAAoAhAiAkUEQCAAQQE2AiQgACADNgIYIAAgATYCECADQQFHDQIgACgCMEEBRg0BDAILIAEgAkYEQCAAKAIYIgJBAkYEQCAAIAM2AhggAyECCyAAKAIwQQFHDQIgAkEBRg0BDAILIAAgACgCJEEBajYCJAsgAEEBOgA2CwsKACAAIAFqKAIAC3YBAX8gACgCJCIDRQRAIAAgAjYCGCAAIAE2AhAgAEEBNgIkIAAgACgCODYCFA8LAkACQCAAKAIUIAAoAjhHDQAgACgCECABRw0AIAAoAhhBAkcNASAAIAI2AhgPCyAAQQE6ADYgAEECNgIYIAAgA0EBajYCJAsLrQEBA38jAEEQayICJAAgAiABNgIMAkACQAJ/IAAQRyIERQRAQQEhASAAEF4MAQsgABB+QQFrIQEgACgCBAsiAyABRgRAIAAgAUEBIAEgARDoAiAAECMaDAELIAAQIxogBA0AIAAiASADQQFqEFAMAQsgACgCACEBIAAgA0EBajYCBAsgASADQQJ0aiIAIAJBDGoQViACQQA2AgggAEEEaiACQQhqEFYgAkEQaiQACwUAED0ACycBAX8gACgCACEBIwBBEGsiACQAIAAgATYCDCAAKAIMIABBEGokAAsXACAAKAIIEC5HBEAgACgCCBCgAwsgAAs0AQF/IwBBEGsiAyQAIAMgAjYCDCADQQhqIANBDGoQYyAAIAEQlgIhABBiIANBEGokACAAC40BAQN/IAEoAgQgACgCACICIAAoAgQiA2tqIQQgAyACayIDBEAgBCACIAP8CgAACyABIAQ2AgQgACAAKAIAIgI2AgQgACABKAIENgIAIAEgAjYCBCAAKAIEIQIgACABKAIINgIEIAEgAjYCCCAAKAIIIQIgACABKAIMNgIIIAEgAjYCDCABIAEoAgQ2AgALMwEBfyMAQRBrIgIkACACIAAoAgA2AgwgAiACKAIMIAFBAnRqNgIMIAIoAgwgAkEQaiQACxkBAX9BASEBIAAQRwR/IAAQfkEBawVBAQsLBwAgAEEEagswAQF/IwBBEGsiAiQAIAIgACgCADYCDCACIAIoAgwgAWo2AgwgAigCDCACQRBqJAAL9wEBBX8jAEEQayIGJAAgBkEMaiIIIAZBCGogABBVKAIAELwBIwBBEGsiBSQAAkBB9////wcgAWsgAk8EQCAAECMhByAFQQRqIgkgAUHz////A0kEfyAFIAFBAXQ2AgwgBSABIAJqNgIEIAkgBUEMahCgASgCABCfAUEBagVB9////wcLEJ4BIAUoAgQhAiAFKAIIGiAEBEAgAiAHIAQQTQsgAyAERwRAIAIgBGogBCAHaiADIARrEE0LIAFBCkcEQCAHEIsCCyAAIAI2AgAgACAFKAIIEFwgBUEQaiQADAELEFsACyAAIAM2AgQgCBC7ASAGQRBqJAALCgAgASAAa0ECdQsPACAAIAAoAgBBBGo2AgALIAEBfyMAQRBrIgEkACABQQxqIAAQVSgCACABQRBqJAALDwAgACAAKAIAQQFqNgIAC1kBAn8jAEEQayIDJAAgAigCACEEIAACfyABIABrQQJ1IgIEQANAIAAgBCAAKAIARg0CGiAAQQRqIQAgAkEBayICDQALC0EACyIAIAEgABsQjgEgA0EQaiQAC/gDAQF/IwBBEGsiDCQAIAwgADYCDAJAAkAgACAFRgRAIAEtAABBAUcNAUEAIQAgAUEAOgAAIAQgBCgCACIBQQFqNgIAIAFBLjoAACAHEB9FDQIgCSgCACIBIAhrQZ8BSg0CIAooAgAhAiAJIAFBBGo2AgAgASACNgIADAILAkACQCAAIAZHDQAgBxAfRQ0AIAEtAABBAUcNAiAJKAIAIgAgCGtBnwFKDQEgCigCACEBIAkgAEEEajYCACAAIAE2AgBBACEAIApBADYCAAwDCyALIAtB8ABqIAxBDGoQ+QEgC2siAEECdSIGQRtKDQEgBkHQnwFqLAAAIQUCQAJAIABBe3EiAEHYAEcEQCAAQeAARw0BIAMgBCgCACIBRwRAQX8hACABQQFrLAAAEJ0BIAIsAAAQnQFHDQYLIAQgAUEBajYCACABIAU6AAAMAwsgAkHQADoAAAwBCyAFEJ0BIgAgAiwAAEcNACACIAAQsQM6AAAgAS0AAEEBRw0AIAFBADoAACAHEB9FDQAgCSgCACIAIAhrQZ8BSg0AIAooAgAhASAJIABBBGo2AgAgACABNgIACyAEIAQoAgAiAEEBajYCACAAIAU6AABBACEAIAZBFUoNAiAKIAooAgBBAWo2AgAMAgtBACEADAELQX8hAAsgDEEQaiQAIAALUAECfyMAQRBrIgYkACAGQQxqIgUgARAnIAUQSEHQnwFB7J8BIAIQbyADIAUQmQEiARB4NgIAIAQgARBZNgIAIAAgARBYIAUQJSAGQRBqJAALGAAgAEGQ9wA2AgAgAEEgahAgGiAAEJQCCy8BAX8jAEEQayIDJAAgACAAIAIsAAAgASAAaxDgASIAIAEgABsQjgEgA0EQaiQAC/ADAQF/IwBBEGsiDCQAIAwgADoADwJAAkAgACAFRgRAIAEtAABBAUcNAUEAIQAgAUEAOgAAIAQgBCgCACIBQQFqNgIAIAFBLjoAACAHEB9FDQIgCSgCACIBIAhrQZ8BSg0CIAooAgAhAiAJIAFBBGo2AgAgASACNgIADAILAkACQCAAIAZHDQAgBxAfRQ0AIAEtAABBAUcNAiAJKAIAIgAgCGtBnwFKDQEgCigCACEBIAkgAEEEajYCACAAIAE2AgBBACEAIApBADYCAAwDCyALIAtBHGogDEEPahD9ASALayIFQRtKDQEgBUHQnwFqLAAAIQYCQAJAAkACQCAFQX5xQRZrDgMBAgACCyADIAQoAgAiAUcEQEF/IQAgAUEBaywAABCdASACLAAAEJ0BRw0GCyAEIAFBAWo2AgAgASAGOgAADAMLIAJB0AA6AAAMAQsgBhCdASIAIAIsAABHDQAgAiAAELEDOgAAIAEtAABBAUcNACABQQA6AAAgBxAfRQ0AIAkoAgAiACAIa0GfAUoNACAKKAIAIQEgCSAAQQRqNgIAIAAgATYCAAsgBCAEKAIAIgBBAWo2AgAgACAGOgAAQQAhACAFQRVKDQIgCiAKKAIAQQFqNgIADAILQQAhAAwBC0F/IQALIAxBEGokACAAC1ABAn8jAEEQayIGJAAgBkEMaiIFIAEQJyAFEElB0J8BQeyfASACEHkgAyAFEJsBIgEQeDoAACAEIAEQWToAACAAIAEQWCAFECUgBkEQaiQAC34CAn8CfiMAQaABayIEJAAgBCABNgI8IAQgATYCFCAEQX82AhggBEEQaiIFQgAQZCAEIAUgA0EBEKgDIAQpAwghBiAEKQMAIQcgAgRAIAIgBCgCiAEgASAEKAIUIAQoAjxramo2AgALIAAgBjcDCCAAIAc3AwAgBEGgAWokAAsJACAAQQQQqAILDQAgACABIAJCfxCEAgucAQEDf0E1IQECQCAAKAIcIgIgACgCGCIDQQZqQQdwa0EHakEHbiADIAJrIgJB8QJqQQdwQQNJaiIDQTVHBEAgAyIBDQFBNCEBAkACQCACQQZqQQdwQQRrDgIBAAMLIAAoAhRBkANvQQFrEJ0DRQ0CC0E1DwsCQAJAIAJB8wJqQQdwQQNrDgIAAgELIAAoAhQQnQMNAQtBASEBCyABC5sEAgd/BH4jAEEQayIIJAACQAJAAkAgAkEkTARAIAAtAAAiBQ0BIAAhBAwCC0GI6gFBHDYCAEIAIQMMAgsgACEEAkADQCAFwBB9RQ0BIAQtAAEhBSAEQQFqIQQgBQ0ACwwBCwJAIAVB/wFxIgZBK2sOAwABAAELQX9BACAGQS1GGyEHIARBAWohBAsCfwJAIAJBEHJBEEcNACAELQAAQTBHDQBBASEJIAQtAAFB3wFxQdgARgRAIARBAmohBEEQDAILIARBAWohBCACQQggAhsMAQsgAkEKIAIbCyIKrSEMQQAhAgNAAkACQCAELQAAIgZBMGsiBUH/AXFBCkkNACAGQeEAa0H/AXFBGU0EQCAGQdcAayEFDAELIAZBwQBrQf8BcUEZSw0BIAZBN2shBQsgCiAFQf8BcUwNACAIIAxCACALQgAQQEEBIQYCQCAIKQMIQgBSDQAgCyAMfiINIAWtQv8BgyIOQn+FVg0AIA0gDnwhC0EBIQkgAiEGCyAEQQFqIQQgBiECDAELCyABBEAgASAEIAAgCRs2AgALAkACQCACBEBBiOoBQcQANgIAIAdBACADQgGDIgxQGyEHIAMhCwwBCyADIAtWDQEgA0IBgyEMCyAMpyAHckUEQEGI6gFBxAA2AgAgA0IBfSEDDAILIAMgC1oNAEGI6gFBxAA2AgAMAQsgCyAHrCIDhSADfSEDCyAIQRBqJAAgAwuIAQEDfyABKAIEIAAoAgQgACgCACIEayICayEDIAIEQCADIAQgAvwKAAALIAEgAzYCBCAAIAAoAgAiAjYCBCAAIAEoAgQ2AgAgASACNgIEIAAoAgQhAiAAIAEoAgg2AgQgASACNgIIIAAoAgghAiAAIAEoAgw2AgggASACNgIMIAEgASgCBDYCAAuaAwEIfwJAIAAiAUEDcQRAA0AgAS0AACICRSACQT1Gcg0CIAFBAWoiAUEDcQ0ACwsCQAJAQYCChAggASgCACIDayADckGAgYKEeHFBgIGChHhHDQADQEGAgoQIIANBvfr06QNzIgJrIAJyQYCBgoR4cUGAgYKEeEcNASABKAIEIQMgAUEEaiICIQEgA0GAgoQIIANrckGAgYKEeHFBgIGChHhGDQALDAELIAEhAgsDQCACIgEtAAAiA0UNASABQQFqIQIgA0E9Rw0ACwsgACABRgRAQQAPCwJAIAAgASAAayIDai0AAA0AQYDuASgCACIERQ0AIAQoAgAiAUUNAANAAkACfyAAIQJBACADIgZFDQAaIAAtAAAiBQR/AkADQCAFIAEtAAAiB0cgB0VyDQEgBkEBayIGRQ0BIAFBAWohASACLQABIQUgAkEBaiECIAUNAAtBACEFCyAFBUEACyABLQAAawtFBEAgBCgCACADaiIBLQAAQT1GDQELIAQoAgQhASAEQQRqIQQgAQ0BDAILCyABQQFqIQgLIAgLSgEBfyAAIAM2AhAgAEEANgIMIAEEQCABELMCIQQLIAAgBDYCACAAIAQgAkECdGoiAjYCCCAAIAQgAUECdGo2AgwgACACNgIEIAALRAEBfyMAQRBrIgUkACAFIAEgAiADIARCgICAgICAgICAf4UQSiAFKQMAIQEgACAFKQMINwMIIAAgATcDACAFQRBqJAALcgECfyAAQYj+ADYCACAAKAIcBEAgACgCKCEBA0AgAQRAQQAgACABQQFrIgFBAnQiAiAAKAIkaigCACAAKAIgIAJqKAIAEQUADAELCyAAQRxqECUgACgCIBAtIAAoAiQQLSAAKAIwEC0gACgCPBAtCyAACwcAIAEgAGsLDABBARDWARogABAtCwkAIAAQsQEQLQsTACAAIAEgAiAAKAIAKAIwEQMACwkAIAAQ2AEQLQsMACAAQQRqENoBIAALDAAgAEEIahDaASAACygBAn8jAEEQayICJAAgASgCACAAKAIASCEDIAJBEGokACABIAAgAxsLEAAgACABNwMIIABCADcDAAsCAAsUACAAQZj1ADYCACAAQQRqECUgAAvyAwICfgV/IwBBIGsiBSQAIAFC////////P4MhAgJ+IAFCMIhC//8BgyIDpyIEQYH4AGtB/Q9NBEAgAkIEhiAAQjyIhCECIARBgPgAa60hAwJAIABC//////////8PgyIAQoGAgICAgICACFoEQCACQgF8IQIMAQsgAEKAgICAgICAgAhSDQAgAkIBgyACfCECC0IAIAIgAkL/////////B1YiBBshACAErSADfAwBCyAAIAKEUCADQv//AVJyRQRAIAJCBIYgAEI8iIRCgICAgICAgASEIQBC/w8MAQsgBEH+hwFLBEBCACEAQv8PDAELQYD4AEGB+AAgA1AiBxsiCCAEayIGQfAASgRAQgAhAEIADAELIAVBEGogACACIAJCgICAgICAwACEIAcbIgJBgAEgBmsQRCAFIAAgAiAGEIoBIAUpAwhCBIYgBSkDACICQjyIhCEAAkAgBCAIRyAFKQMQIAUpAxiEQgBSca0gAkL//////////w+DhCICQoGAgICAgICACFoEQCAAQgF8IQAMAQsgAkKAgICAgICAgAhSDQAgAEIBgyAAfCEACyAAQoCAgICAgIAIhSAAIABC/////////wdWIgQbIQAgBK0LIQIgBUEgaiQAIAFCgICAgICAgICAf4MgAkI0hoQgAIS/C4kCAAJAIAAEfyABQf8ATQ0BAkBB3OEBKAIAKAIARQRAIAFBgH9xQYC/A0YNAwwBCyABQf8PTQRAIAAgAUE/cUGAAXI6AAEgACABQQZ2QcABcjoAAEECDwsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMPCyABQYCABGtB//8/TQRAIAAgAUE/cUGAAXI6AAMgACABQRJ2QfABcjoAACAA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AXI2AgQgCSAGIAkoAgBBAXFyQQJyNgIAIAEgBmoiAiACKAIEQQFyNgIEIAEgBhDbAQsCQCAAKAIEIgJBA3FFDQAgAkF4cSIBIAVBEGpNDQAgACAFIAJBAXFyQQJyNgIEIAAgBWoiBCABIAVrIgJBA3I2AgQgACABaiIBIAEoAgRBAXI2AgQgBCACENsBCyAAQQhqCwsiAEUNARogCCAANgIMQQAhAQsgAQshAEEAIAgoAgwgABshAQsgCEEQaiQAIAENAEHk/gEoAgAiAEUNACAAEQwADAELCyABRQRAEOsBCyABCwoAIAEgAGtBDG0LCQAgABAuNgIACyMBAn8gACEBA0AgASICQQRqIQEgAigCAA0ACyACIABrQQJ1Cy8BAX8jAEEQayIDJAACQCAAIAFGBEAgAEEAOgB4DAELIAEgAhCpAQsgA0EQaiQACxAAIAAoAgggACgCAGtBAnULCQAgAEEANgIAC0kBAX8jAEEQayIDJAACQAJAIAJBHksNACABLQB4QQFxDQAgAUEBOgB4DAELIAIQwQIhAQsgA0EQaiQAIAAgAjYCBCAAIAE2AgALOgECfyMAQRBrIgAkACAAQf////8DNgIMIABB/////wc2AgggAEEMaiAAQQhqELUDKAIAIABBEGokAAs0AQF/IwBBEGsiAyQAIAMgARBzNgIMIAMgAhBzNgIIIAAgA0EMaiADQQhqEGYgA0EQaiQAC04BAX8jAEEQayIDJAAgAyABNgIIIAMgADYCDCADIAI2AgRBACEBIANBBGoiACADQQxqENMBRQRAIAAgA0EIahDTASEBCyADQRBqJAAgAQswAQF/IwBBEGsiAyQAIAMgATYCDCADIAI2AgggACADQQxqIANBCGoQZiADQRBqJAALMwEBfyMAQRBrIgMkACAAEB8aIAAgAhCDASADQQA6AA8gASACaiADQQ9qEF0gA0EQaiQACzEAIABB/////wNLBEAQqgIACwJ/IABBAnQhAEEEENYBBEAgAEEEELQCDAELIAAQUwsLCQAgABDtARAtCxUAIABB8KoBNgIAIABBEGoQIBogAAsVACAAQciqATYCACAAQQxqECAaIAALgAMBBH8gAiEAA0ACQCAEIAdNIAAgA09yDQAgACwAACIBQf8BcSEFAn9BASABQQBODQAaIAFBQkkNASABQV9NBEAgAyAAa0ECSA0CIAAtAAFBwAFxQYABRw0CQQIMAQsgAUFvTQRAIAMgAGtBA0gNAiAALQACIAAsAAEhAQJAAkAgBUHtAUcEQCAFQeABRw0BIAFBYHFBoH9GDQIMBQsgAUGgf04NBAwBCyABQb9/Sg0DC0HAAXFBgAFHDQJBAwwBCyADIABrQQRIIAFBdEtyDQEgAC0AAyEGIAAtAAIhCCAALAABIQECQAJAAkACQCAFQfABaw4FAAICAgECCyABQfAAakH/AXFBME8NBAwCCyABQZB/Tg0DDAELIAFBv39KDQILIAhBwAFxQYABRyAGQcABcUGAAUdyIAZBP3EgCEEGdEHAH3EgBUESdEGAgPAAcSABQT9xQQx0cnJyQf//wwBLcg0BQQQLIQEgB0EBaiEHIAAgAWohAAwBCwsgACACawu4BAEEfyMAQRBrIgAkAAJ/IAAgAjYCDCAAIAU2AggCQAJAA0AgAiADTyAFIAZPckUEQCACLAAAIghB/wFxIQECfyAIQQBOBEAgAUH//8MASw0FQQEMAQsgCEFCSQ0EIAhBX00EQEEBIAMgAmtBAkgNBhpBAiEIIAItAAEiCUHAAXFBgAFHDQQgCUE/cSABQQZ0QcAPcXIhAUECDAELIAhBb00EQEEBIQggAyACayIKQQJIDQQgAiwAASEJAkACQCABQe0BRwRAIAFB4AFHDQEgCUFgcUGgf0YNAgwICyAJQaB/SA0BDAcLIAlBv39KDQYLIApBAkYNBCACLQACIghBwAFxQYABRw0FIAhBP3EgAUEMdEGA4ANxIAlBP3FBBnRyciEBQQMMAQsgCEF0Sw0EQQEhCCADIAJrIgpBAkgNAyACLAABIQkCQAJAAkACQCABQfABaw4FAAICAgECCyAJQfAAakH/AXFBME8NBwwCCyAJQZB/Tg0GDAELIAlBv39KDQULIApBAkYNAyACLQACIgtBwAFxQYABRw0EIApBA0YNAyACLQADIgpBwAFxQYABRw0EQQIhCCAKQT9xIAtBBnRBwB9xIAFBEnRBgIDwAHEgCUE/cUEMdHJyciIBQf//wwBLDQNBBAshCCAFIAE2AgAgACACIAhqIgI2AgwgACAFQQRqIgU2AggMAQsLIAIgA0khCAsgCAwBC0ECCyAEIAAoAgw2AgAgByAAKAIINgIAIABBEGokAAv1AwAjAEEQayIAJAACfyAAIAI2AgwgACAFNgIIAkADQAJAIAIgA08EQEEAIQUMAQtBAiEFIAIoAgAiAUH//8MASyABQYBwcUGAsANGcg0AAkAgAUH/AE0EQEEBIQUgBiAAKAIIIgJrQQBMDQIgACACQQFqNgIIIAIgAToAAAwBCyABQf8PTQRAIAYgACgCCCICa0ECSA0EIAAgAkEBajYCCCACIAFBBnZBwAFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUE/cUGAAXI6AAAMAQsgBiAAKAIIIgJrIQUgAUH//wNNBEAgBUEDSA0EIAAgAkEBajYCCCACIAFBDHZB4AFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUEGdkE/cUGAAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQT9xQYABcjoAAAwBCyAFQQRIDQMgACACQQFqNgIIIAIgAUESdkHwAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQQx2QT9xQYABcjoAACAAIAAoAggiAkEBajYCCCACIAFBBnZBP3FBgAFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUE/cUGAAXI6AAALIAAgACgCDEEEaiICNgIMDAELCyAFDAELQQELIAQgACgCDDYCACAHIAAoAgg2AgAgAEEQaiQAC5IDAQR/IAIhAANAAkAgBCAGTSAAIANPcg0AAn8gAEEBaiAALQAAIgHAQQBODQAaIAFBwgFJDQEgAUHfAU0EQCADIABrQQJIDQIgAC0AAUHAAXFBgAFHDQIgAEECagwBCyABQe8BTQRAIAMgAGtBA0gNAiAALQACIAAsAAEhBQJAAkAgAUHtAUcEQCABQeABRw0BIAVBYHFBoH9GDQIMBQsgBUGgf04NBAwBCyAFQb9/Sg0DC0HAAXFBgAFHDQIgAEEDagwBCyADIABrQQRIIAFB9AFLciAEIAZrQQJJcg0BIAAtAAMhByAALQACIQggACwAASEFAkACQAJAAkAgAUHwAWsOBQACAgIBAgsgBUHwAGpB/wFxQTBPDQQMAgsgBUGQf04NAwwBCyAFQb9/Sg0CCyAIQcABcUGAAUcgB0HAAXFBgAFHciAHQT9xIAhBBnRBwB9xIAFBEnRBgIDwAHEgBUE/cUEMdHJyckH//8MAS3INASAGQQFqIQYgAEEEagshACAGQQFqIQYMAQsLIAAgAmsLgQUBBX8jAEEQayIAJAACfyAAIAI2AgwgACAFNgIIAkACQANAIAIgA08gBSAGT3JFBEBBAiEJIAACfyACLQAAIgHAQQBOBEAgBSABOwEAQQEMAQsgAUHCAUkNBCABQd8BTQRAQQEgAyACa0ECSA0GGiACLQABIghBwAFxQYABRw0EIAUgCEE/cSABQQZ0QcAPcXI7AQBBAgwBCyABQe8BTQRAQQEhCSADIAJrIgpBAkgNBCACLAABIQgCQAJAIAFB7QFHBEAgAUHgAUcNASAIQWBxQaB/Rw0IDAILIAhBoH9ODQcMAQsgCEG/f0oNBgsgCkECRg0EIAItAAIiCUHAAXFBgAFHDQUgBSAJQT9xIAhBP3FBBnQgAUEMdHJyOwEAQQMMAQsgAUH0AUsNBEEBIQkgAyACayIKQQJIDQMgAi0AASILwCEIAkACQAJAAkAgAUHwAWsOBQACAgIBAgsgCEHwAGpB/wFxQTBPDQcMAgsgCEGQf04NBgwBCyAIQb9/Sg0FCyAKQQJGDQMgAi0AAiIIQcABcUGAAUcNBCAKQQNGDQMgAi0AAyIKQcABcUGAAUcNBCAGIAVrQQNIDQNBAiEJIApBP3EiCiAIQQZ0IgxBwB9xIAtBDHRBgOAPcSABQQdxIgFBEnRycnJB///DAEsNAyAFIAogDEHAB3FyQYC4A3I7AQIgBSAIQQR2QQNxIAtBAnQiCUHAAXEgAUEIdHIgCUE8cXJyQcD/AGpBgLADcjsBACAFQQJqIQVBBAsgAmoiAjYCDCAAIAVBAmoiBTYCCAwBCwsgAiADSSEJCyAJDAELQQILIAQgACgCDDYCACAHIAAoAgg2AgAgAEEQaiQAC8sFAQJ/IwBBEGsiACQAAn8gACACNgIMIAAgBTYCCAJAAkADQCACIANPBEBBACEFDAILQQIhBQJAAkAgAi8BACIBQf8ATQRAQQEhBSAGIAAoAggiAmtBAEwNBCAAIAJBAWo2AgggAiABOgAADAELIAFB/w9NBEAgBiAAKAIIIgJrQQJIDQUgACACQQFqNgIIIAIgAUEGdkHAAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQT9xQYABcjoAAAwBCyABQf+vA00EQCAGIAAoAggiAmtBA0gNBSAAIAJBAWo2AgggAiABQQx2QeABcjoAACAAIAAoAggiAkEBajYCCCACIAFBBnZBP3FBgAFyOgAAIAAgACgCCCICQQFqNgIIIAIgAUE/cUGAAXI6AAAMAQsgAUH/twNNBEBBASEFIAMgAmtBA0gNBCACLwECIghBgPgDcUGAuANHDQIgBiAAKAIIIglrQQRIDQQgCEH/B3EgAUEKdEGA+ANxIAFBwAdxIgVBCnRyckH//z9LDQIgACACQQJqNgIMIAAgCUEBajYCCCAJIAVBBnZBAWoiAkECdkHwAXI6AAAgACAAKAIIIgVBAWo2AgggBSACQQR0QTBxIAFBAnZBD3FyQYABcjoAACAAIAAoAggiAkEBajYCCCACIAhBBnZBD3EgAUEEdEEwcXJBgAFyOgAAIAAgACgCCCIBQQFqNgIIIAEgCEE/cUGAAXI6AAAMAQsgAUGAwANJDQMgBiAAKAIIIgJrQQNIDQQgACACQQFqNgIIIAIgAUEMdkHgAXI6AAAgACAAKAIIIgJBAWo2AgggAiABQQZ2Qb8BcToAACAAIAAoAggiAkEBajYCCCACIAFBP3FBgAFyOgAACyAAIAAoAgxBAmoiAjYCDAwBCwtBAgwCCyAFDAELQQELIAQgACgCDDYCACAHIAAoAgg2AgAgAEEQaiQACw8AIAEgACgCAGogAjYCAAs8AQJ/IwBBEGsiASQAIAEgADYCDCABQQhqIAFBDGoQY0EEQQFB3OEBKAIAKAIAGyECEGIgAUEQaiQAIAILOAEBfyMAQRBrIgUkACAFIAQ2AgwgBUEIaiAFQQxqEGMgACABIAIgAxDSASEAEGIgBUEQaiQAIAALEgAgBCACNgIAIAcgBTYCAEEDCw0AIAEgACgCAGooAgALKwEBfyAAQdyhATYCAAJAIAAoAggiAUUNACAALQAMQQFxRQ0AIAEQLQsgAAsEACABCycBAX8gACgCACgCACgCAEHM8gFBzPIBKAIAQQFqIgA2AgAgADYCBAu0CgEHf0HI8gEtAABFBEAjAEEQayIFJABBwPIBLQAARQRAIwBBEGsiBiQAIAZBATYCDEGg8QEgBigCDBAyIgFByKEBNgIAIwBBEGsiAyQAIAFBCGoiAkEANgIIIAJCADcCACACQQA6AIQBIANBCGogAhBVKAIAGiADQQA6AA8jAEEQayIEJAAQvAJBHkkEQBCMAQALIARBCGogAkEMakEeELsCIAIgBCgCCCIHNgIEIAIgBzYCACACIAcgBCgCDEECdGo2AgggBEEQaiQAIAJBHhDZAiADQQE6AA8gA0EQaiQAIAFBkAFqQYwWELABIAIQ2gJBrPwBQQEQMkHotQE2AgAgAUGs/AFB+O8BEDEQM0G0/AFBARAyQYi2ATYCACABQbT8AUGA8AEQMRAzQbz8AUEBEDIiAkEAOgAMIAJBADYCCCACQdyhATYCACACQZCiATYCCCABQbz8AUHY8gEQMRAzQcz8AUEBEDJByK0BNgIAIAFBzPwBQdDyARAxEDNB1PwBQQEQMkHgrgE2AgAgAUHU/AFB4PIBEDEQM0Hc/AFBARAyIgJBmKoBNgIAIAIQLjYCCCABQdz8AUHo8gEQMRAzQej8AUEBEDJB9K8BNgIAIAFB6PwBQfDyARAxEDNB8PwBQQEQMkHcsQE2AgAgAUHw/AFBgPMBEDEQM0H4/AFBARAyQeiwATYCACABQfj8AUH48gEQMRAzQYD9AUEBEDJB0LIBNgIAIAFBgP0BQYjzARAxEDNBiP0BQQEQMiICQa7YADsBCCACQciqATYCACACQQxqECQaIAFBiP0BQZDzARAxEDNBoP0BQQEQMiICQq6AgIDABTcCCCACQfCqATYCACACQRBqECQaIAFBoP0BQZjzARAxEDNBvP0BQQEQMkGotgE2AgAgAUG8/QFBiPABEDEQM0HE/QFBARAyQaC4ATYCACABQcT9AUGQ8AEQMRAzQcz9AUEBEDJB9LkBNgIAIAFBzP0BQZjwARAxEDNB1P0BQQEQMkHguwE2AgAgAUHU/QFBoPABEDEQM0Hc/QFBARAyQcTDATYCACABQdz9AUHI8AEQMRAzQeT9AUEBEDJB2MQBNgIAIAFB5P0BQdDwARAxEDNB7P0BQQEQMkHMxQE2AgAgAUHs/QFB2PABEDEQM0H0/QFBARAyQcDGATYCACABQfT9AUHg8AEQMRAzQfz9AUEBEDJBtMcBNgIAIAFB/P0BQejwARAxEDNBhP4BQQEQMkHcyAE2AgAgAUGE/gFB8PABEDEQM0GM/gFBARAyQYTKATYCACABQYz+AUH48AEQMRAzQZT+AUEBEDJBrMsBNgIAIAFBlP4BQYDxARAxEDNBnP4BQQEQMiICQZjVATYCCCACQai9ATYCACACQdi9ATYCCCABQZz+AUGo8AEQMRAzQaj+AUEBEDIiAkG81QE2AgggAkG0vwE2AgAgAkHkvwE2AgggAUGo/gFBsPABEDEQM0G0/gFBARAyIgJBCGoQtgIgAkGkwQE2AgAgAUG0/gFBuPABEDEQM0HA/gFBARAyIgJBCGoQtgIgAkHEwgE2AgAgAUHA/gFBwPABEDEQM0HM/gFBARAyQdTMATYCACABQcz+AUGI8QEQMRAzQdT+AUEBEDJBzM0BNgIAIAFB1P4BQZDxARAxEDMgBkEQaiQAIAVBoPEBNgIIQbzyASAFKAIIEFUaQcDyAUEBOgAACyAFQRBqJABBxPIBQbzyARDVAkHI8gFBAToAAAsgAEHE8gEoAgAiADYCACAAENQCCxEAIABBoPEBRwRAIAAQ1wILCxMAIAAgASgCACIANgIAIAAQ1AILlwEBA38gAEHIoQE2AgAgAEEIaiEBA0AgARBrIAJLBEAgASACEIIBKAIABEAgASACEIIBKAIAEL8BCyACQQFqIQIMAQsLIABBkAFqECAaIwBBEGsiAiQAIAJBDGogARBVIgEoAgAiAygCAARAIAMQ2gIgASgCABogASgCACIBQQxqIAEoAgAgARC5AhC4AgsgAkEQaiQAIAALDwAgACAAKAIEQQFqNgIECyYBAX8gACgCBCECA0AgASACRwRAIAJBBGshAgwBCwsgACABNgIEC3UBAn8jAEEQayIDJAAgA0EEaiICIAA2AgAgAiAAKAIEIgA2AgQgAiAAIAFBAnRqNgIIIAIiASgCBCEAIAIoAgghAgNAIAAgAkYEQCABKAIAIAEoAgQ2AgQgA0EQaiQABSAAELoCIAEgAEEEaiIANgIEDAELCwsRACAAEGsaIAAgACgCABDYAgsgACAAQZiqATYCACAAKAIIEC5HBEAgACgCCBCgAwsgAAsEAEF/C+EBAQR/IwBBEGsiBSQAIwBBIGsiAyQAIANBGGogACABEL0CIAMoAhghBCADKAIcIQYjAEEQayIBJAAgASAGNgIMIAIgBCAGIARrIgRBAnUQZSABIAIgBGo2AgggA0EQaiABQQxqIAFBCGoQZiABQRBqJAAgAygCECEEIwBBEGsiASQAIAEgADYCDCABQQxqIgAgBCAAEOwBa0ECdRDwASEAIAFBEGokACADIAA2AgwgAyACIAMoAhQQjgE2AgggBUEIaiADQQxqIANBCGoQZiADQSBqJAAgBSgCDCAFQRBqJAAL9gUBCn8jAEEQayITJAAgAiAANgIAQQRBACAHGyEVIANBgARxIRYDQCAUQQRGBEAgDRAfQQFLBEAgEyANEE42AgwgAiATQQxqQQEQ8AEgDRB1IAIoAgAQ3QI2AgALIANBsAFxIgNBEEcEQCABIANBIEYEfyACKAIABSAACzYCAAsgE0EQaiQABQJAAkACQAJAAkACQCAIIBRqLQAADgUAAQMCBAULIAEgAigCADYCAAwECyABIAIoAgA2AgAgBkEgEEshByACIAIoAgAiD0EEajYCACAPIAc2AgAMAwsgDRBaDQIgDUEAEMwBKAIAIQcgAiACKAIAIg9BBGo2AgAgDyAHNgIADAILIAwQWiAWRXINASACIAwQTiAMEHUgAigCABDdAjYCAAwBCyACKAIAIAQgFWoiBCEHA0ACQCAFIAdNDQAgBkHAACAHKAIAEF9FDQAgB0EEaiEHDAELCyAOQQBKBEAgAigCACEPIA4hEANAIBBFIAQgB09yRQRAIBBBAWshECAHQQRrIgcoAgAhESACIA9BBGoiEjYCACAPIBE2AgAgEiEPDAELCyAQBH8gBkEwEEsFQQALIREgAigCACEPA0AgEEEASgRAIAIgD0EEaiISNgIAIA8gETYCACAQQQFrIRAgEiEPDAELCyACIAIoAgAiD0EEajYCACAPIAk2AgALAkAgBCAHRgRAIAZBMBBLIQcgAiACKAIAIg9BBGo2AgAgDyAHNgIADAELIAsQWgR/QX8FIAtBABAiLAAACyESQQAhEEEAIREDQCAEIAdGDQECQCAQIBJHBEAgECEPDAELIAIgAigCACIPQQRqNgIAIA8gCjYCAEEAIQ8gCxAfIBFBAWoiEU0EQCAQIRIMAQsgCyARECItAABB/wBGBEBBfyESDAELIAsgERAiLAAAIRILIAdBBGsiBygCACEQIAIgAigCACIYQQRqNgIAIBggEDYCACAPQQFqIRAMAAsACyACKAIAEMcBCyAUQQFqIRQMAQsLC70BAQF/IwBBEGsiCiQAAn8gAARAIAIQ5gIMAQsgAhDlAgshAAJAIAEEQCAKQQRqIgEgABCSASADIAooAgQ2AAAgASAAEMIBDAELIApBBGoiASAAEOECIAMgCigCBDYAACABIAAQewsgCCABEKsBIAEQORogBCAAEHg2AgAgBSAAEFk2AgAgCkEEaiIBIAAQWCAGIAEQcCABECAaIAEgABB8IAcgARCrASABEDkaIAkgABDBATYCACAKQRBqJAAL2wEBBH8jAEEQayIFJAAjAEEgayIDJAAgA0EYaiAAIAEQvQIgAygCGCEEIAMoAhwhBiMAQRBrIgEkACABIAY2AgwgAiAEIAYgBGsiBBBNIAEgAiAEajYCCCADQRBqIAFBDGogAUEIahBmIAFBEGokACADKAIQIQQjAEEQayIBJAAgASAANgIMIAFBDGoiACAEIAAQ7AFrEPMBIQAgAUEQaiQAIAMgADYCDCADIAIgAygCFBCOATYCCCAFQQhqIANBDGogA0EIahBmIANBIGokACAFKAIMIAVBEGokAAsRACAAIAEgASgCACgCKBEBAAvLBQEKfyMAQRBrIhQkACACIAA2AgAgA0GABHEhFgNAIBVBBEYEQCANEB9BAUsEQCAUIA0QTjYCDCACIBRBDGpBARDzASANEHcgAigCABDgAjYCAAsgA0GwAXEiA0EQRwRAIAEgA0EgRgR/IAIoAgAFIAALNgIACyAUQRBqJAAFAkACQAJAAkACQAJAIAggFWotAAAOBQABAwIEBQsgASACKAIANgIADAQLIAEgAigCADYCACAGQSAQQSEPIAIgAigCACIQQQFqNgIAIBAgDzoAAAwDCyANEFoNAiANQQAQIi0AACEPIAIgAigCACIQQQFqNgIAIBAgDzoAAAwCCyAMEFogFkVyDQEgAiAMEE4gDBB3IAIoAgAQ4AI2AgAMAQsgAigCACAEIAdqIgQhEQNAAkAgBSARTQ0AIAZBwAAgESwAABBgRQ0AIBFBAWohEQwBCwsgDiIPQQBKBEADQCAPRSAEIBFPckUEQCAPQQFrIQ8gEUEBayIRLQAAIRAgAiACKAIAIhJBAWo2AgAgEiAQOgAADAELCyAPBH8gBkEwEEEFQQALIRIDQCACIAIoAgAiEEEBajYCACAPQQBKBEAgECASOgAAIA9BAWshDwwBCwsgECAJOgAACwJAIAQgEUYEQCAGQTAQQSEPIAIgAigCACIQQQFqNgIAIBAgDzoAAAwBCyALEFoEf0F/BSALQQAQIiwAAAshEEEAIQ9BACETA0AgBCARRg0BAkAgDyAQRwRAIA8hEgwBCyACIAIoAgAiEEEBajYCACAQIAo6AABBACESIAsQHyATQQFqIhNNBEAgDyEQDAELIAsgExAiLQAAQf8ARgRAQX8hEAwBCyALIBMQIiwAACEQCyARQQFrIhEtAAAhDyACIAIoAgAiGEEBajYCACAYIA86AAAgEkEBaiEPDAALAAsgAigCABCEAQsgFUEBaiEVDAELCwu7AQEBfyMAQRBrIgokAAJ/IAAEQCACEO0CDAELIAIQ7AILIQACQCABBEAgCkEEaiIBIAAQkgEgAyAKKAIENgAAIAEgABDCAQwBCyAKQQRqIgEgABDhAiADIAooAgQ2AAAgASAAEHsLIAggARBwIAEQIBogBCAAEHg6AAAgBSAAEFk6AAAgCkEEaiIBIAAQWCAGIAEQcCABECAaIAEgABB8IAcgARBwIAEQIBogCSAAEMEBNgIAIApBEGokAAsIACAAKAIARQsKACAAQdjwARB6CwoAIABB4PABEHoLFwAgAiAAIAEgAGsiAEECdRBlIAAgAmoLgwIBBX8jAEEQayIGJAAgBkEMaiIJIAZBCGogABBVKAIAELwBIwBBEGsiBSQAAkBB9////wMgAWsgAk8EQCAAECMhByAFQQRqIgggAUHz////AUkEfyAFIAFBAXQ2AgwgBSABIAJqNgIEIAggBUEMahCgASgCABCQAUEBagVB9////wMLEI8BIAUoAgQhAiAFKAIIGiAEBEAgAiAHIAQQZQsgAyAERwRAIARBAnQiCCACaiAHIAhqIAMgBGsQZQsgAUEBaiIBQQJHBEAgByABEKkBCyAAIAI2AgAgACAFKAIIEFwgBUEQaiQADAELEFsACyAAIAM2AgQgCRC7ASAGQRBqJAALHwEBfyABKAIAELwDIQIgACABKAIANgIEIAAgAjYCAAuyDgEKfyMAQZAEayILJAAgCyAKNgKIBCALIAE2AowEAkAgACALQYwEahArBEAgBSAFKAIAQQRyNgIAQQAhAAwBCyALQeQANgJIIAsgC0HoAGogC0HwAGogC0HIAGoiARA2Ig8oAgAiCjYCZCALIApBkANqNgJgIAEQJCERIAtBPGoQJCEMIAtBMGoQJCEOIAtBJGoQJCENIAtBGGoQJCEQIwBBEGsiASQAAkAgAgRAIAFBBGoiCiADEOYCIgIQkgEMAQsgAUEEaiIKIAMQ5QIiAhCSAQsgCyABKAIENgBcIAogAhDCASANIAoQqwEgChA5GiAKIAIQeyAOIAoQqwEgChA5GiALIAIQeDYCWCALIAIQWTYCVCAKIAIQWCARIAoQcCAKECAaIAogAhB8IAwgChCrASAKEDkaIAsgAhDBATYCFCABQRBqJAAgCSAIKAIANgIAIARBgARxIRJBACEDQQAhAQNAIAEhAgJAAkACQAJAIANBBEYNACAAIAtBjARqECsNAEEAIQoCQAJAAkACQAJAAkAgC0HcAGogA2otAAAOBQEABAMFCQsgA0EDRg0HIAdBASAAEDcQXwRAIAtBDGogABDpAiAQIAsoAgwQ6gEMAgsgBSAFKAIAQQRyNgIAQQAhAAwGCyADQQNGDQYLA0AgACALQYwEahArDQYgB0EBIAAQNxBfRQ0GIAtBDGogABDpAiAQIAsoAgwQ6gEMAAsACwJAIA4QH0UNACAAEDcgDhAjKAIARw0AIAAQPhogBkEAOgAAIA4gAiAOEB9BAUsbIQEMBgsCQCANEB9FDQAgABA3IA0QIygCAEcNACAAED4aIAZBAToAACANIAIgDRAfQQFLGyEBDAYLAkAgDhAfRQ0AIA0QH0UNACAFIAUoAgBBBHI2AgBBACEADAQLIA4QH0UEQCANEB9FDQULIAYgDRAfRToAAAwECyASIAIgA0ECSXJyRQRAQQAhASADQQJGIAstAF9BAEdxRQ0FCyALIAwQTjYCCCALQQxqIAtBCGoQwwEhAQJAIANFDQAgAyALai0AW0EBSw0AA0ACQCALIAwQdTYCCCABIAtBCGoQdg0AIAdBASABKAIAKAIAEF9FDQAgARD2AQwBCwsgCyAMEE42AgggASgCACALQQhqIgQoAgBrQQJ1IgogEBAfTQRAIAsgEBB1NgIIIARBACAKaxDwASAQEHUhCiAMEE4hEyMAQRBrIhQkABBzIQQgChBzIQogBCATEHMgCiAEa0F8cRCLAUUgFEEQaiQADQELIAsgDBBONgIEIAEgC0EIaiALQQRqEMMBKAIANgIACyALIAEoAgA2AggDQAJAIAsgDBB1NgIEIAtBCGoiASALQQRqEHYNACAAIAtBjARqECsNACAAEDcgASgCACgCAEcNACAAED4aIAEQ9gEMAQsLIBJFDQMgCyAMEHU2AgQgC0EIaiALQQRqEHYNAyAFIAUoAgBBBHI2AgBBACEADAILA0ACQCAAIAtBjARqECsNAAJ/IAdBwAAgABA3IgEQXwRAIAkoAgAiBCALKAKIBEYEQCAIIAkgC0GIBGoQkwEgCSgCACEECyAJIARBBGo2AgAgBCABNgIAIApBAWoMAQsgERAfRSAKRXINASABIAsoAlRHDQEgCygCZCIBIAsoAmBGBEAgDyALQeQAaiALQeAAahCTASALKAJkIQELIAsgAUEEajYCZCABIAo2AgBBAAshCiAAED4aDAELCyAKRSALKAJkIgEgDygCAEZyRQRAIAsoAmAgAUYEQCAPIAtB5ABqIAtB4ABqEJMBIAsoAmQhAQsgCyABQQRqNgJkIAEgCjYCAAsCQCALKAIUQQBMDQACQCAAIAtBjARqECtFBEAgABA3IAsoAlhGDQELIAUgBSgCAEEEcjYCAEEAIQAMAwsDQCAAED4aIAsoAhRBAEwNAQJAIAAgC0GMBGoQK0UEQCAHQcAAIAAQNxBfDQELIAUgBSgCAEEEcjYCAEEAIQAMBAsgCSgCACALKAKIBEYEQCAIIAkgC0GIBGoQkwELIAAQNyEBIAkgCSgCACIEQQRqNgIAIAQgATYCACALIAsoAhRBAWs2AhQMAAsACyACIQEgCCgCACAJKAIARw0DIAUgBSgCAEEEcjYCAEEAIQAMAQsCQCACRQ0AQQEhCgNAIAIQHyAKTQ0BAkAgACALQYwEahArRQRAIAAQNyACIAoQzAEoAgBGDQELIAUgBSgCAEEEcjYCAEEAIQAMAwsgABA+GiAKQQFqIQoMAAsAC0EBIQAgDygCACALKAJkRg0AQQAhACALQQA2AgwgESAPKAIAIAsoAmQgC0EMahBDIAsoAgwEQCAFIAUoAgBBBHI2AgAMAQtBASEACyAQEDkaIA0QORogDhA5GiAMEDkaIBEQIBogDxA1DAMLIAIhAQsgA0EBaiEDDAALAAsgC0GQBGokACAACxgAIAAgARCsARA8IAAgARDyASgCADYCBAsKACAAQcjwARB6CwoAIABB0PABEHoLxwEBBn8jAEEQayIEJAAgABDyASgCACEFQQECfyACKAIAIAAoAgBrIgNB/////wdJBEAgA0EBdAwBC0F/CyIDIANBAU0bIQMgASgCACEGIAAoAgAhByAFQeQARgR/QQAFIAAoAgALIAMQ3AEiCARAIAVB5ABHBEAgABCsARoLIARB4wA2AgQgACAEQQhqIAggBEEEahA2IgUQ6wIgBRA1IAEgACgCACAGIAdrajYCACACIAMgACgCAGo2AgAgBEEQaiQADwsQPQALIAEBfyABKAIAEJ0CwCECIAAgASgCADYCBCAAIAI6AAALxA4BCn8jAEGQBGsiCyQAIAsgCjYCiAQgCyABNgKMBAJAIAAgC0GMBGoQLARAIAUgBSgCAEEEcjYCAEEAIQAMAQsgC0HkADYCTCALIAtB6ABqIAtB8ABqIAtBzABqIgEQNiIPKAIAIgo2AmQgCyAKQZADajYCYCABECQhESALQUBrECQhDCALQTRqECQhDiALQShqECQhDSALQRxqECQhECMAQRBrIgEkAAJAIAIEQCABQQRqIgogAxDtAiICEJIBDAELIAFBBGoiCiADEOwCIgIQkgELIAsgASgCBDYAXCAKIAIQwgEgDSAKEHAgChAgGiAKIAIQeyAOIAoQcCAKECAaIAsgAhB4OgBbIAsgAhBZOgBaIAogAhBYIBEgChBwIAoQIBogCiACEHwgDCAKEHAgChAgGiALIAIQwQE2AhggAUEQaiQAIAkgCCgCADYCACAEQYAEcSESQQAhA0EAIQEDQCABIQICQAJAAkACQCADQQRGDQAgACALQYwEahAsDQBBACEKAkACQAJAAkACQAJAIAtB3ABqIANqLQAADgUBAAQDBQkLIANBA0YNByAHQQEgABA4EGAEQCALQRBqIAAQ7wIgECALLAAQELgBDAILIAUgBSgCAEEEcjYCAEEAIQAMBgsgA0EDRg0GCwNAIAAgC0GMBGoQLA0GIAdBASAAEDgQYEUNBiALQRBqIAAQ7wIgECALLAAQELgBDAALAAsCQCAOEB9FDQAgABA4Qf8BcSAOQQAQIi0AAEcNACAAED8aIAZBADoAACAOIAIgDhAfQQFLGyEBDAYLAkAgDRAfRQ0AIAAQOEH/AXEgDUEAECItAABHDQAgABA/GiAGQQE6AAAgDSACIA0QH0EBSxshAQwGCwJAIA4QH0UNACANEB9FDQAgBSAFKAIAQQRyNgIAQQAhAAwECyAOEB9FBEAgDRAfRQ0FCyAGIA0QH0U6AAAMBAsgEiACIANBAklyckUEQEEAIQEgA0ECRiALLQBfQQBHcUUNBQsgCyAMEE42AgwgC0EQaiALQQxqEMMBIQECQCADRQ0AIAMgC2otAFtBAUsNAANAAkAgCyAMEHc2AgwgASALQQxqEHYNACAHQQEgASgCACwAABBgRQ0AIAEQ+AEMAQsLIAsgDBBONgIMIAEoAgAgC0EMaiIEKAIAayIKIBAQH00EQCALIBAQdzYCDCAEQQAgCmsQ8wEgEBB3IQogDBBOIRMjAEEQayIUJAAQcyEEIAoQcyEKIAQgExBzIAogBGsQiwFFIBRBEGokAA0BCyALIAwQTjYCCCABIAtBDGogC0EIahDDASgCADYCAAsgCyABKAIANgIMA0ACQCALIAwQdzYCCCALQQxqIgEgC0EIahB2DQAgACALQYwEahAsDQAgABA4Qf8BcSABKAIALQAARw0AIAAQPxogARD4AQwBCwsgEkUNAyALIAwQdzYCCCALQQxqIAtBCGoQdg0DIAUgBSgCAEEEcjYCAEEAIQAMAgsDQAJAIAAgC0GMBGoQLA0AAn8gB0HAACAAEDgiARBgBEAgCSgCACIEIAsoAogERgRAIAggCSALQYgEahDuAiAJKAIAIQQLIAkgBEEBajYCACAEIAE6AAAgCkEBagwBCyAREB9FIApFcg0BIAstAFogAUH/AXFHDQEgCygCZCIBIAsoAmBGBEAgDyALQeQAaiALQeAAahCTASALKAJkIQELIAsgAUEEajYCZCABIAo2AgBBAAshCiAAED8aDAELCyAKRSALKAJkIgEgDygCAEZyRQRAIAsoAmAgAUYEQCAPIAtB5ABqIAtB4ABqEJMBIAsoAmQhAQsgCyABQQRqNgJkIAEgCjYCAAsCQCALKAIYQQBMDQACQCAAIAtBjARqECxFBEAgABA4Qf8BcSALLQBbRg0BCyAFIAUoAgBBBHI2AgBBACEADAMLA0AgABA/GiALKAIYQQBMDQECQCAAIAtBjARqECxFBEAgB0HAACAAEDgQYA0BCyAFIAUoAgBBBHI2AgBBACEADAQLIAkoAgAgCygCiARGBEAgCCAJIAtBiARqEO4CCyAAEDghASAJIAkoAgAiBEEBajYCACAEIAE6AAAgCyALKAIYQQFrNgIYDAALAAsgAiEBIAgoAgAgCSgCAEcNAyAFIAUoAgBBBHI2AgBBACEADAELAkAgAkUNAEEBIQoDQCACEB8gCk0NAQJAIAAgC0GMBGoQLEUEQCAAEDhB/wFxIAIgChAiLQAARg0BCyAFIAUoAgBBBHI2AgBBACEADAMLIAAQPxogCkEBaiEKDAALAAtBASEAIA8oAgAgCygCZEYNAEEAIQAgC0EANgIQIBEgDygCACALKAJkIAtBEGoQQyALKAIQBEAgBSAFKAIAQQRyNgIADAELQQEhAAsgEBAgGiANECAaIA4QIBogDBAgGiARECAaIA8QNQwDCyACIQELIANBAWohAwwACwALIAtBkARqJAAgAAsMACAAQQFBLRD9AhoLCwAgAEEBQS0QsAILHAEBfyAALQAAIQIgACABLQAAOgAAIAEgAjoAAAtlAQF/IwBBEGsiBiQAIAZBADoADyAGIAU6AA4gBiAEOgANIAZBJToADCAFBEAgBkENaiAGQQ5qEPMCCyACIAEgASACKAIAEIoCIAZBDGogAyAAKAIAEJ4DIAFqNgIAIAZBEGokAAtBACABIAIgAyAEQQQQZyEBIAMtAABBBHFFBEAgACABQdAPaiABQewOaiABIAFB5ABJGyABQcUASBtB7A5rNgIACwtAACACIAMgAEEIaiAAKAIIKAIEEQAAIgAgAEGgAmogBSAEQQAQzQEgAGsiAEGfAkwEQCABIABBDG1BDG82AgALC0AAIAIgAyAAQQhqIAAoAggoAgARAAAiACAAQagBaiAFIARBABDNASAAayIAQacBTARAIAEgAEEMbUEHbzYCAAsLQQAgASACIAMgBEEEEGghASADLQAAQQRxRQRAIAAgAUHQD2ogAUHsDmogASABQeQASRsgAUHFAEgbQewOazYCAAsLQAAgAiADIABBCGogACgCCCgCBBEAACIAIABBoAJqIAUgBEEAEM8BIABrIgBBnwJMBEAgASAAQQxtQQxvNgIACwtAACACIAMgAEEIaiAAKAIIKAIAEQAAIgAgAEGoAWogBSAEQQAQzwEgAGsiAEGnAUwEQCABIABBDG1BB282AgALCxgBAX9BDBBTIgBBADYCCCAAQgA3AgAgAAsEAEECC8oBAQR/IwBBEGsiAyQAAkAgAUH3////A00EQAJAIAEQvQEEQCAAIAEQUCAAIQQMAQsgA0EIaiABEJABQQFqEI8BIAMoAgwaIAAgAygCCCIENgIAIAAgAygCDBBcIAAgATYCBAsjAEEQayIFJAAgBSACNgIMIAQhBiABIQIDQCACBEAgBiAFKAIMNgIAIAJBAWshAiAGQQRqIQYMAQsLIAVBEGokACADQQA2AgQgBCABQQJ0aiADQQRqEFYgA0EQaiQADAELEFsA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hoRCAEKAgICAgIDAwz8QLyAFKQNIIQIgBSkDQCEEDAELIAlC////////P4MgBiAHcq1CMIaEIQILIAAgBDcDACAAIAI3AwggBUGAAWokAAuIEAIFfw9+IwBB0AJrIgUkACAEQv///////z+DIQsgAkL///////8/gyEKIAIgBIVCgICAgICAgICAf4MhDCAEQjCIp0H//wFxIQcCQAJAIAJCMIinQf//AXEiCEH//wFrQYKAfk8EQCAHQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIg5CgICAgICAwP//AFQgDkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEMDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQwgAyEBDAILIAEgDkKAgICAgIDA//8AhYRQBEAgAyACQoCAgICAgMD//wCFhFAEQEIAIQFCgICAgICA4P//ACEMDAMLIAxCgICAgICAwP//AIQhDEIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQEIAIQEMAgsgASAOhFAEQEKAgICAgIDg//8AIAwgAiADhFAbIQxCACEBDAILIAIgA4RQBEAgDEKAgICAgIDA//8AhCEMQgAhAQwCCyAOQv///////z9YBEAgBUHAAmogASAKIAEgCiAKUCIGG3lCwABCACAGG3ynIgZBD2sQREEQIAZrIQYgBSkDyAIhCiAFKQPAAiEBCyACQv///////z9WDQAgBUGwAmogAyALIAMgCyALUCIJG3lCwABCACAJG3ynIglBD2sQRCAGIAlqQRBrIQYgBSkDuAIhCyAFKQOwAiEDCyAFQaACaiALQoCAgICAgMAAhCISQg+GIANCMYiEIgJCAEKAgICAsOa8gvUAIAJ9IgRCABBAIAVBkAJqQgAgBSkDqAJ9QgAgBEIAEEAgBUGAAmogBSkDmAJCAYYgBSkDkAJCP4iEIgRCACACQgAQQCAFQfABaiAEQgBCACAFKQOIAn1CABBAIAVB4AFqIAUpA/gBQgGGIAUpA/ABQj+IhCIEQgAgAkIAEEAgBUHQAWogBEIAQgAgBSkD6AF9QgAQQCAFQcABaiAFKQPYAUIBhiAFKQPQAUI/iIQiBEIAIAJCABBAIAVBsAFqIARCAEIAIAUpA8gBfUIAEEAgBUGgAWogAkIAIAUpA7gBQgGGIAUpA7ABQj+IhEIBfSICQgAQQCAFQZABaiADQg+GQgAgAkIAEEAgBUHwAGogAkIAQgAgBSkDqAEgBSkDoAEiDiAFKQOYAXwiBCAOVK18IARCAVatfH1CABBAIAVBgAFqQgEgBH1CACACQgAQQCAGIAggB2tqIghB//8AaiEGAn4gBSkDcCITQgGGIg0gBSkDiAEiD0IBhiAFKQOAAUI/iIR8IhBC5+wAfSIUQiCIIgIgCkKAgICAgIDAAIQiFUIBhiIWQiCIIgR+IhEgAUIBhiIOQiCIIgsgECAUVq0gDSAQVq0gBSkDeEIBhiATQj+IhCAPQj+IfHx8QgF9IhNCIIgiEH58Ig0gEVStIA0gDSATQv////8PgyITIAFCP4giFyAKQgGGhEL/////D4MiCn58Ig1WrXwgBCAQfnwgBCATfiIRIAogEH58Ig8gEVStQiCGIA9CIIiEfCANIA9CIIZ8Ig8gDVStfCAPIA8gFEL/////D4MiFCAKfiINIAIgC358IhEgDVStIBEgESATIA5C/v///w+DIg1+fCIRVq18fCIPVq18IA8gBCAUfiIYIA0gEH58IgQgAiAKfnwiCiALIBN+fCIQQiCIIAogEFatIAQgGFStIAQgClatfHxCIIaEfCIEIA9UrXwgBCAEIBEgAiANfiIKIAsgFH58IgJCIIggAiAKVK1CIIaEfCIKIBFUrSAKIAogEEIghnwiClatfHwiBFatfCAEIAQgCiACQiCGIgIgDSAUfnwgAlStQn+FIgJWIAIgClJxrXwiBFatfCICQv////////8AWARAIBYgF4QhFSAFQdAAaiAEIAJCgICAgICAwABUIgetIguGIgogAiALhiAEQgGIIAdBP3OtiIQiBCADIBIQQCAIQf7/AGogBiAHG0EBayEGIAFCMYYgBSkDWH0gBSkDUCIBQgBSrX0hC0IAIAF9DAELIAVB4ABqIAJCP4YgBEIBiIQiCiACQgGIIgQgAyASEEAgAUIwhiAFKQNofSAFKQNgIgJCAFKtfSELIAEhDkIAIAJ9CyECIAZB//8BTgRAIAxCgICAgICAwP//AIQhDEIAIQEMAQsCfiAGQQBKBEAgC0IBhiACQj+IhCEBIARC////////P4MgBq1CMIaEIQsgAkIBhgwBCyAGQY9/TARAQgAhAQwCCyAFQUBrIAogBEEBIAZrEIoBIAVBMGogDiAVIAZB8ABqEEQgBUEgaiADIBIgBSkDQCIKIAUpA0giCxBAIAUpAzggBSkDKEIBhiAFKQMgIgFCP4iEfSAFKQMwIgIgAUIBhiIEVK19IQEgAiAEfQshAiAFQRBqIAMgEkIDQgAQQCAFIAMgEkIFQgAQQCALIAogAyAKQgGDIgMgAnwiAlQgASACIANUrXwiASASViABIBJRG618IgMgClStfCIEIAMgAyAEQoCAgICAgMD//wBUIAIgBSkDEFYgASAFKQMYIgRWIAEgBFEbca18IgNWrXwiBCADIARCgICAgICAwP//AFQgAiAFKQMAViABIAUpAwgiAlYgASACURtxrXwiASADVK18IAyEIQwLIAAgATcDACAAIAw3AwggBUHQAmokAAu/AgEBfyMAQdAAayIEJAACQCADQYCAAU4EQCAEQSBqIAEgAkIAQoCAgICAgID//wAQLyAEKQMoIQIgBCkDICEBIANB//8BSQRAIANB//8AayEDDAILIARBEGogASACQgBCgICAgICAgP//ABAvQf3/AiADIANB/f8CTxtB/v8BayEDIAQpAxghAiAEKQMQIQEMAQsgA0GBgH9KDQAgBEFAayABIAJCAEKAgICAgICAORAvIAQpA0ghAiAEKQNAIQEgA0H0gH5LBEAgA0GN/wBqIQMMAQsgBEEwaiABIAJCAEKAgICAgICAORAvQeiBfSADIANB6IF9TRtBmv4BaiEDIAQpAzghAiAEKQMwIQELIAQgASACQgAgA0H//wBqrUIwhhAvIAAgBCkDCDcDCCAAIAQpAwA3AwAgBEHQAGokAAs8ACAAIAE3AwAgACACQv///////z+DIAJCgICAgICAwP//AINCMIinIANCMIinQYCAAnFyrUIwhoQ3AwgLwAECAX8CfkF/IQMCQCAAQgBSIAFC////////////AIMiBEKAgICAgIDA//8AViAEQoCAgICAgMD//wBRGw0AIAJC////////////AIMiBUKAgICAgIDA//8AViAFQoCAgICAgMD//wBScQ0AIAAgBCAFhIRQBEBBAA8LIAEgAoNCAFkEQCABIAJSIAEgAlNxDQEgACABIAKFhEIAUg8LIABCAFIgASACVSABIAJRGw0AIAAg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EKYCCyEAIAEQTAR/QZiEASgCACABQf8BcUECdGooAgAFIAELwAsJACAAENACEC0LOwADQCABIAJGRQRAIAMhACAEIAEoAgAQTAR/IAEoAgAFIAALOgAAIARBAWohBCABQQRqIQEMAQsLIAELDAAgASACIAEQTBvACyoAA0AgASACRkUEQCADIAEsAAA2AgAgA0EEaiEDIAFBAWohAQwBCwsgAQsPACAAIAEgAkGgkAEQpwILHAAgARBMBH9BoJABKAIAIAFBAnRqKAIABSABCwsPACAAIAEgAkGYhAEQpwILHAAgARBMBH9BmIQBKAIAIAFBAnRqKAIABSABCwsQACAABEAgABDHAwsgABAtCzoAA0ACQCACIANGDQAgAigCABBMRQ0AIAIoAgBBAnRBkKIBaigCACABcUUNACACQQRqIQIMAQsLIAILOQADQAJAIAIgA0YNACACKAIAEEwEQCACKAIAQQJ0QZCiAWooAgAgAXENAQsgAkEEaiECDAELCyACC0YAA0AgASACRkUEQEEAIQAgAyABKAIAEEwEfyABKAIAQQJ0QZCiAWooAgAFQQALNgIAIANBBGohAyABQQRqIQEMAQsLIAELIwBBACEAIAIQTAR/IAJBAnRBkKIBaigCACABcUEARwVBAAsLDwAgACAAKAIAKAIEEQIACwkAIAAQ1gIQLQsVAQF/QdQAEFMiAEEAQdQA/AsAIAALFAAgACgCACABaiACLQAAOgAAQQELrgEAAkAgBRBHRQRAIAAgBSkCADcCACAAIAUoAgg2AgggABBeGgwBCyAFKAIAIQQgBSgCBCECIwBBEGsiAyQAAkACQAJAIAIQvQEEQCAAIgEgAhBQDAELIAJB9////wNLDQEgA0EIaiACEJABQQFqEI8BIAMoAgwaIAAgAygCCCIBNgIAIAAgAygCDBBcIAAgAjYCBAsgASAEIAJBAWoQZSADQRBqJAAMAQsQWwALCwsJACAAIAUQ5AELhAMBCH8jAEHgA2siACQAIABB3ANqIgYgAxAnIAYQSCEKIAUQHwRAIAVBABDMASgCACAKQS0QS0YhCwsgAiALIABB3ANqIABB2ANqIABB1ANqIABB0ANqIABBxANqECQiDCAAQbgDahAkIgYgAEGsA2oQJCIHIABBqANqEN8CIABB4wA2AhAgAEEIakEAIABBEGoiAhA2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KAK8ASAEEI8DOQMAIABBzAFqIABBEGogACgCDCAEEEMgAEHcAmogAEHYAmoQKwRAIAQgBCgCAEECcjYCAAsgACgC3AIgARAgGiAAQcwBahAgGiAAQeACaiQADAMLQQEhAwsgAEHcAmoQPhoMAAsACwvKBAEDfwJ/IwBB4AJrIgAkACAAIAI2AtgCIAAgATYC3AIgAEHMAWogAyAAQeABaiAAQdwBaiAAQdgBahD7ASAAQcABahAkIgEgARAoECEgACABQQAQIiICNgK8ASAAIABBEGo2AgwgAEEANgIIIABBAToAByAAQcUAOgAGQQAhAwNAAkACQAJAIABB3AJqIABB2AJqECsNACAAKAK8ASABEB8gAmpGBEAgARAfIQYgASABEB9BAXQQISABIAEQKBAhIAAgBiABQQAQIiICajYCvAELIABB3AJqEDcgAEEHaiAAQQZqIAIgAEG8AWogACgC3AEgACgC2AEgAEHMAWogAEEQaiAAQQxqIABBCGogAEHgAWoQ+gENACADDQFBACEDIAAoArwBIAJrIgdBAEwNAgJAAkAgAi0AACIGQStrIggOAwEAAQALIAZBLkYNAkEBIQMgBkEwa0H/AXFBCkkNAwwBCyAHQQFGDQICQCAIDgMAAwADCyACLQABIgZBLkYNAUEBIQMgBkEwa0H/AXFBCU0NAgsCQCAAQcwBahAfRQ0AIAAtAAdBAXFFDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK8ASAEEJEDOAIAIABBzAFqIABBEGogACgCDCAEEEMgAEHcAmogAEHYAmoQKwRAIAQgBCgCAEECcjYCAAsgACgC3AIgARAgGiAAQcwBahAgGiAAQeACaiQADAMLQQEhAwsgAEHcAmoQPhoMAAsACwuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCSAzcDACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtBnwFKDQAgACADQQRqNgIMIAMgACgCCDYCAAsgBSACIAAoArQBIAQgBhCVAzsBACAAQcQBaiAAQRBqIAAoAgwgBBBDIABBzAJqIABByAJqECsEQCAEIAQoAgBBAnI2AgALIAAoAswCIAEQIBogAEHEAWoQIBogAEHQAmokAAuWAwECfyMAQdACayIAJAAgACACNgLIAiAAIAE2AswCIAMQaiEGIAMgAEHQAWoQrgEhByAAQcQBaiADIABBxAJqEK0BIABBuAFqECQiASABECgQISAAIAFBABAiIgI2ArQBIAAgAEEQajYCDCAAQQA2AggDQAJAIABBzAJqIABByAJqECsNACAAKAK0ASABEB8gAmpGBEAgARAfIQMgASABEB9BAXQQISABIAEQKBAhIAAgAyABQQAQIiICajYCtAELIABBzAJqIgMQNyAGIAIgAEG0AWogAEEIaiAAKALEAiAAQcQBaiAAQRBqIABBDGogBxCYAQ0AIAMQPhoMAQsLAkAgAEHEAWoQH0UNACAAKAIMIgMgAEEQamtB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DCECDAYLIANBIHIhAyABQQRqIQIgBEEEayEEIAEtAAMgCHQgB2ohBwsCQCAFQQRxRQ0AIAcgBigCIEYNACAKQd4ONgIYIAZB0f4ANgIEIAIhASAGKAIEIQUMAQsLIAIhAUEAIQdBACEDCyAGQdD+ADYCBAtBASECDAELQQAhBCAMIQILIAogDzYCECAKIBA2AgwgCiAENgIEIAogATYCACAGIAM2AkAgBiAHNgI8AkACQCAGKAIsRQRAIA8gFUYNASAGKAIEQdD+AEsNAQsCfyAVIA9rIQMCQAJAIAooAhwiASgCOCIMRQRAQQEhBSABIAooAihBASABKAIodEEBIAooAiARAwAiDDYCOCAMRQ0BCyABKAIsIgRFBEAgAUIANwIwIAFBASABKAIodCIENgIsCyADIARPBEAgBARAIAwgECAEayAE/AoAAAsgAUEANgI0DAILIAQgASgCNCIIayIFIAMgAyAFSxsiBARAIAggDGogECADayAE/AoAAAsgAyAFSwRAIAMgBGsiAwRAIAEoAjggECADayAD/AoAAAsgASADNgI0DAILQQAhBSABIAEoAjQgBGoiA0EAIAMgASgCLCIMRxs2AjQgDCABKAIwIgNNDQAgASADIARqNgIwCyAFDAELIAEgASgCLDYCMEEACw0BIAooAhAhDyAKKAIEIQQLIAogCigCCCAkIARrajYCCCAKIBUgD2siASAKKAIUajYCFCAGIAYoAiAgAWo2AiAgBi0ADEEEcUUgDyAVRnJFBEAgCigCDCABayEDIAYoAhwhBSAGAn8gBigCFARAIAUgAyABEFEMAQsgBSADIAEQswELIgE2AhwgCiABNgIwCyAKIAYoAkBBwABBACAGKAIIG2pBgAFBACAGKAIEIgFBv/4ARhtqQYACQYACQQAgAUHC/gBGGyABQcf+AEYbajYCLCACQXsgAhsgAiAPIBVGGyACIAQgJEYbIRwMAgsgBkHS/gA2AgQLQXwhHAsgF0EQaiQAIBxBAUsNASATQagBaiEBIBMoAqwBIQMgGigCACEJIBooAgQgEygCFGshDCMAQSBrIggkAAJAIAwgCWsiBUEATA0AIAEoAgggASgCBCICayAFTgRAIAIgA2siBCAFSARAIAwgBCAJaiIHayILRSAHIAxGckUEQCACIAcgC/wKAAALIAEgAiALajYCBCAE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eQAtKyAgIDBYMHgALTBYKzBYIDBYLTB4KzB4IDB4AE5vdgBUaHUAQXVndXN0AHVuc2lnbmVkIHNob3J0AHVuc2lnbmVkIGludABpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQAaW52YWxpZCBjb2RlIGxlbmd0aHMgc2V0AHVua25vd24gaGVhZGVyIGZsYWdzIHNldABpbnZhbGlkIGRpc3RhbmNlcyBzZXQAZ2V0AE9jdABmbG9hdABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AFNhdABudW1Qb2ludHMAY29sb3JzAFVucGFja09wdGlvbnMAcG9zaXRpb25zAHJvdGF0aW9ucwB0b28gbWFueSBsZW5ndGggb3IgZGlzdGFuY2Ugc3ltYm9scwBpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzAHNjYWxlcwBhbHBoYXMAW1NQWjogRVJST1JdIENoZWNrIGZhaWxlZDogJXM6JWQ6ICVzAHZmMzJfcHRyAEFwcgB2ZWN0b3IAbW9uZXlfZ2V0IGVycm9yAFtTUFogRVJST1JdIGRlc2VyaWFsaXplUGFja2VkR2F1c3NpYW5zOiByZWFkIGVycm9yAE9jdG9iZXIATm92ZW1iZXIAU2VwdGVtYmVyAERlY2VtYmVyAHVuc2lnbmVkIGNoYXIAaW9zX2Jhc2U6OmNsZWFyAE1hcgAvZW1zZGsvZW1zY3JpcHRlbi9zeXN0ZW0vbGliL2xpYmN4eGFiaS9zcmMvcHJpdmF0ZV90eXBlaW5mby5jcHAAU2VwACVJOiVNOiVTICVwAFN1bgBKdW4ATW9uAG5hbgBKYW4AY29vcmRpbmF0ZVN5c3RlbQBDb29yZGluYXRlU3lzdGVtAEp1bABib29sAGxsAEFwcmlsAGludmFsaWQgY29kZSAtLSBtaXNzaW5nIGVuZC1vZi1ibG9jawBpbmNvcnJlY3QgaGVhZGVyIGNoZWNrAGluY29ycmVjdCBsZW5ndGggY2hlY2sAaW5jb3JyZWN0IGRhdGEgY2hlY2sAcHVzaF9iYWNrAGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciBiYWNrAEZyaQBzaABoZWFkZXIgY3JjIG1pc21hdGNoAE1hcmNoAEF1ZwB1bnNpZ25lZCBsb25nIGxvbmcAdW5zaWduZWQgbG9uZwBzdGQ6OndzdHJpbmcAYmFzaWNfc3RyaW5nAHN0ZDo6c3RyaW5nAHN0ZDo6dTE2c3RyaW5nAHN0ZDo6dTMyc3RyaW5nAGluZgAlLjBMZgAlTGYAcmVzaXplAGludmFsaWQgd2luZG93IHNpemUAdHJ1ZQBUdWUAZmFsc2UAaW52YWxpZCBibG9jayB0eXBlAEp1bmUAZG91YmxlAHNoRGVncmVlAGJhZF9hcnJheV9uZXdfbGVuZ3RoIHdhcyB0aHJvd24gaW4gLWZuby1leGNlcHRpb25zIG1vZGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQBSYXdHYXVzc2lhbkNsb3VkAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAFtTUFogRVJST1JdIGRlc2VyaWFsaXplUGFja2VkR2F1c3NpYW5zOiBoZWFkZXIgbm90IGZvdW5kACUwKmxsZAAlKmxsZAArJWxsZAAlKy40bGQAdm9pZABsb2NhbGUgbm90IHN1cHBvcnRlZABhbnRpYWxpYXNlZABXZWQAJVktJW0tJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IFRvbyBtYW55IHBvaW50czogJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IFVuc3VwcG9ydGVkIFNIIGRlZ3JlZTogJWQAW1NQWiBFUlJPUl0gZGVzZXJpYWxpemVQYWNrZWRHYXVzc2lhbnM6IHZlcnNpb24gbm90IHN1cHBvcnRlZDogJWQARGVjAC4vc3B6L3NyYy9jYy9sb2FkLXNwei5jYwBGZWIAJWEgJWIgJWQgJUg6JU06JVMgJVkAUE9TSVgAVmVjdG9yVUludDhUACVIOiVNOiVTAE5BTgBQTQBBTQAlSDolTQBMQ19BTEwAQVNDSUkATEFORwBSVUYATFVGAElORgBSREYATERGAFVOU1BFQ0lGSUVEAEMAUlVCAExVQgBSREIATERCAGNhdGNoaW5nIGEgY2xhc3Mgd2l0aG91dCBhbiBvYmplY3Q/AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50NjRfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDMyX3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGNoYXI+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBsb25nPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxkb3VibGU+ADAxMjM0NTY3ODkAQy5VVEYtOABWZWN0b3JGbG9hdDMyADEuMy4xAC4ALQAocGFja2VkLmFscGhhcy5zaXplKCkpID09IChudW1Qb2ludHMpAChudWxsKQAocGFja2VkLmNvbG9ycy5zaXplKCkpID09IChudW1Qb2ludHMgKiAzKQAocGFja2VkLnNjYWxlcy5zaXplKCkpID09IChudW1Qb2ludHMgKiAzKQAocGFja2VkLnNoLnNpemUoKSkgPT0gKG51bVBvaW50cyAqIHNoRGltICogMykAKHBhY2tlZC5yb3RhdGlvbnMuc2l6ZSgpKSA9PSAobnVtUG9pbnRzICogKHBhY2tlZC51c2VzUXVhdGVybmlvblNtYWxsZXN0VGhyZWUgPyA0IDogMykpAChwYWNrZWQucG9zaXRpb25zLnNpemUoKSkgPT0gKG51bVBvaW50cyAqIDMgKiAodXNlc0Zsb2F0MTYgPyAyIDogMykpACUAbGVuZ3RoX2Vycm9yIHdhcyB0aHJvd24gaW4gLWZuby1leGNlcHRpb25zIG1vZGUgd2l0aCBtZXNzYWdlICIlcyIAUHVyZSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGxlZCEAW1NQWjogRVJST1JdIFVuc3VwcG9ydGVkIFNIIGRlZ3JlZTogJWQKAAkAAAAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwBBkCALthMgEAAA9GwAAPRsAABAEAAAqG0AACgQAABOM3NwejEzR2F1c3NpYW5DbG91ZEUAAACobQAASBAAAE4zc3B6MTNVbnBhY2tPcHRpb25zRQBwcGlpcAD0bAAAbBAAAKhtAAB0EAAATlN0M19fMjZ2ZWN0b3JJZk5TXzlhbGxvY2F0b3JJZkVFRUUAaXBwACxuAADEEAAAAAAAAAMAAADcEAAAAAAAACgSAAAAAAAAWBIAAAAAAABOU3QzX18yOG9wdGlvbmFsSWZFRQAAAADQbQAA6BAAABgRAABOU3QzX18yMjdfX29wdGlvbmFsX21vdmVfYXNzaWduX2Jhc2VJZkxiMUVFRQAAAADQbQAAJBEAAFQRAABOU3QzX18yMjdfX29wdGlvbmFsX2NvcHlfYXNzaWduX2Jhc2VJZkxiMUVFRQAAAADQbQAAYBEAAIgRAABOU3QzX18yMjBfX29wdGlvbmFsX21vdmVfYmFzZUlmTGIxRUVFAAAA0G0AAJQRAAC8EQAATlN0M19fMjIwX19vcHRpb25hbF9jb3B5X2Jhc2VJZkxiMUVFRQAAANBtAADIEQAA9BEAAE5TdDNfXzIyM19fb3B0aW9uYWxfc3RvcmFnZV9iYXNlSWZMYjBFRUUAAAAAqG0AAPwRAABOU3QzX18yMjRfX29wdGlvbmFsX2Rlc3RydWN0X2Jhc2VJZkxiMUVFRQAAAKhtAAAwEgAATlN0M19fMjE4X19zZmluYWVfY3Rvcl9iYXNlSUxiMUVMYjFFRUUAAKhtAABgEgAATlN0M19fMjIwX19zZmluYWVfYXNzaWduX2Jhc2VJTGIxRUxiMUVFRQAAAACIbgAAnBIAAAAAAABsEAAAUE5TdDNfXzI2dmVjdG9ySWZOU185YWxsb2NhdG9ySWZFRUVFAAAAAIhuAADUEgAAAQAAAGwQAABQS05TdDNfXzI2dmVjdG9ySWZOU185YWxsb2NhdG9ySWZFRUVFAHBwAHYAdnAAAACMEgAAcHAAAJRsAACMEgAAPG0AAHZwcGQAAAAAlGwAAIwSAAAYbQAAPG0AAHZwcHBkAAAAGG0AAMQSAABwcHAATBMAADxtAACobQAAVBMAAE4xMGVtc2NyaXB0ZW4zdmFsRQAAnBAAAGwQAAAYbQAAcHBwcAAAAAAAAAAArGwAAGwQAAAYbQAAPG0AAGlwcHBkAAAALG4AAMATAAAAAAAAAwAAANgTAAAAAAAAKBIAAAAAAABYEgAAAAAAAE5TdDNfXzI4b3B0aW9uYWxJaEVFAAAAANBtAADkEwAAFBQAAE5TdDNfXzIyN19fb3B0aW9uYWxfbW92ZV9hc3NpZ25fYmFzZUloTGIxRUVFAAAAANBtAAAgFAAAUBQAAE5TdDNfXzIyN19fb3B0aW9uYWxfY29weV9hc3NpZ25fYmFzZUloTGIxRUVFAAAAANBtAABcFAAAhBQAAE5TdDNfXzIyMF9fb3B0aW9uYWxfbW92ZV9iYXNlSWhMYjFFRUUAAADQbQAAkBQAALgUAABOU3QzX18yMjBfX29wdGlvbmFsX2NvcHlfYmFzZUloTGIxRUVFAAAA0G0AAMQUAADwFAAATlN0M19fMjIzX19vcHRpb25hbF9zdG9yYWdlX2Jhc2VJaExiMEVFRQAAAACobQAA+BQAAE5TdDNfXzIyNF9fb3B0aW9uYWxfZGVzdHJ1Y3RfYmFzZUloTGIxRUVFAAAAqG0AACwVAABOU3QzX18yNnZlY3RvckloTlNfOWFsbG9jYXRvckloRUVFRQCIbgAAYBUAAAAAAAAkFQAAUE5TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAAAAAIhuAACYFQAAAQAAACQVAABQS05TdDNfXzI2dmVjdG9ySWhOU185YWxsb2NhdG9ySWhFRUVFAHBwAHZwAFAVAABwcAAAlGwAAFAVAADEbAAAdnBwaQAAAACUbAAAUBUAABhtAADEbAAAdnBwcGkAAAAYbQAAiBUAAHBwcABMEwAAxGwAAJgTAAAkFQAAGG0AAHBwcHAAAAAArGwAACQVAAAYbQAAxGwAAGlwcHBpAHAAdnAAaXBwAHZwcGkAaXBwAHZwcGkAcHBwAHZwcHAAAABcbQAAYBYAAE4zc3B6MTZDb29yZGluYXRlU3lzdGVtRQBwAHZwAGlwcAB2cHBpAAAAAAAAAwAAAAgAAAAPAAAAqG0AAKAWAABOU3QzX18yMTJiYXNpY19zdHJpbmdJY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQAAqG0AAOgWAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAAqG0AADAXAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRHNOU18xMWNoYXJfdHJhaXRzSURzRUVOU185YWxsb2NhdG9ySURzRUVFRQAAAKhtAAB8FwAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFjaGFyX3RyYWl0c0lEaUVFTlNfOWFsbG9jYXRvcklEaUVFRUUAAACobQAAyBcAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQAAqG0AAPAXAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lhRUUAAKhtAAAYGAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaEVFAACobQAAQBgAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQAAqG0AAGgYAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUAAKhtAACQGAAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaUVFAACobQAAuBgAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQAAqG0AAOAYAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lsRUUAAKhtAAAIGQAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJbUVFAACobQAAMBkAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXhFRQAAqG0AAFgZAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l5RUUAAKhtAACAGQAATjEwZW1zY3Jp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AAAJqAAACAQAAAiEAAAIRAAACegAEAcIAAAIXAAACBwAAAmYABQHUwAACHwAAAg8AAAJ2AASBxcAAAhsAAAILAAACbgAAAgMAAAIjAAACEwAAAn4ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcQAEQcLAAAIYgAACCIAAAmkAAAIAgAACIIAAAhCAAAJ5AAQBwcAAAhaAAAIGgAACZQAFAdDAAAIegAACDoAAAnUABIHEwAACGoAAAgqAAAJtAAACAoAAAiKAAAISgAACfQAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzAARBw8AAAhmAAAIJgAACawAAAgGAAAIhgAACEYAAAnsABAHCQAACF4AAAgeAAAJnAAUB2MAAAh+AAAIPgAACdwAEgcbAAAIbgAACC4AAAm8AAAIDgAACI4AAAhOAAAJ/ABgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnCABAHCgAACGEAAAghAAAJogAACAEAAAiBAAAIQQAACeIAEAcGAAAIWQAACBkAAAmSABMHOwAACHkAAAg5AAAJ0gARBxEAAAhpAAAIKQAACbIAAAgJAAAIiQAACEkAAAnyABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcoAEQcNAAAIZQAACCUAAAmqAAAIBQAACIUAAAhFAAAJ6gAQBwgAAAhdAAAIHQAACZoAFAdTAAAIfQAACD0AAAnaABIHFwAACG0AAAgtAAAJugAACA0AAAiNAAAITQAACfoAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxgARBwsAAAhjAAAIIwAACaYAAAgDAAAIgwAACEMAAAnmABAHBwAACFsAAAgbAAAJlgAUB0MAAAh7AAAIOwAACdYAEgcTAAAIawAACCsAAAm2AAAICwAACIsAAAhLAAAJ9gAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnOABEHDwAACGcAAAgnAAAJrgAACAcAAAiHAAAIRwAACe4AEAcJAAAIXwAACB8AAAmeABQHYwAACH8AAAg/AAAJ3gASBxsAAAhvAAAILwAACb4AAAgPAAAIjwAACE8AAAn+AGAHAAAACFAAAAgQABQIcwASBx8AAAhwAAAIMAAACcEAEAcKAAAIYAAACCAAAAmhAAAIAAAACIAAAAhAAAAJ4QAQBwYAAAhYAAAIGAAACZEAEwc7AAAIeAAACDgAAAnRABEHEQAACGgAAAgoAAAJsQAACAgAAAiIAAAISAAACfEAEAcEAAAIVAAACBQAFQjjABMHKwAACHQAAAg0AAAJyQARBw0AAAhkAAAIJAAACakAAAgEAAAIhAAACEQAAAnpABAHCAAACFwAAAgcAAAJmQAUB1MAAAh8AAAIPAAACdkAEgcXAAAIbAAACCwAAAm5AAAIDAAACIwAAAhMAAAJ+QAQBwMAAAhSAAAIEgAVCKMAEwcjAAAIcgAACDIAAAnFABEHCwAACGIAAAgiAAAJpQAACAIAAAiCAAAIQgAACeUAEAcHAAAIWgAACBoAAAmVABQHQwAACHoAAAg6AAAJ1QASBxMAAAhqAAAIKgAACbUAAAgKAAAIigAACEoAAAn1ABAHBQAACFYAAAgWAEAIAAATBzMAAAh2AAAINgAACc0AEQcPAAAIZgAACCYAAAmtAAAIBgAACIYAAAhGAAAJ7QAQBwkAAAheAAAIHgAACZ0AFAdjAAAIfgAACD4AAAndABIHGwAACG4AAAguAAAJvQAACA4AAAiOAAAITgAACf0AYAcAAAAIUQAACBEAFQiDABIHHwAACHEAAAgxAAAJwwAQBwoAAAhhAAAIIQAACaMAAAgBAAAIgQAACEEAAAnjABAHBgAACFkAAAgZAAAJkwATBzsAAAh5AAAIOQAACdMAEQcRAAAIaQAACCkAAAmzAAAICQAACIkAAAhJAAAJ8wAQBwQAAAhVAAAIFQAQCAIBEwcrAAAIdQAACDUAAAnLABEHDQAACGUAAAglAAAJqwAACAUAAAiFAAAIRQAACesAEAcIAAAIXQAACB0AAAmbABQHUwAACH0AAAg9AAAJ2wASBxcAAAhtAAAILQAACbsAAAgNAAAIjQAACE0AAAn7ABAHAwAACFMAAAgTABUIwwATByMAAAhzAAAIMwAACccAEQcLAAAIYwAACCMAAAmnAAAIAwAACIMAAAhDAAAJ5wAQBwcAAAhbAAAIGwAACZcAFAdDAAAIewAACDsAAAnXABIHEwAACGsAAAgrAAAJtwAACAsAAAiLAAAISwAACfcAEAcFAAAIVwAACBcAQAgAABMHMwAACHcAAAg3AAAJzwARBw8AAAhnAAAIJwAACa8AAAgH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Y05TXzExY2hhcl90cmFpdHNJY0VFRUUA0G0AAHg9AAAAPAAATlN0M19fMjE1YmFzaWNfc3RyaW5nYnVmSWNOU18xMWNoYXJfdHJhaXRzSWNFRU5TXzlhbGxvY2F0b3JJY0VFRUUAAABAAAAAAAAAAKw+AABZAAAAWgAAADgAAAD4////rD4AAFsAAABcAAAAwP///8D///+sPgAAXQAAAF4AAADIPQAALD4AAGg+AAB8PgAAkD4AAKQ+AABUPgAAQD4AAPA9AADcPQAAQAAAAAAAAAAcPQAATAAAAE0AAAA4AAAA+P///xw9AABOAAAATwAAAMD////A////HD0AAFAAAABRAAAAQAAAAAAAAAA8PAAARAAAAEUAAADA////wP///zw8AABGAAAARwAAADgAAAAAAAAAhDwAAEgAAABJAAAAyP///8j///+EPAAASgAAAEsAAADQbQAAuD4AABw9AABOU3QzX18yMThiYXNpY19zdHJpbmdzdHJlYW1JY05TXzExY2hhcl90cmFpdHNJY0VFTlNfOWFsbG9jYXRvckljRUVFRQAAAAAAAAAAED8AAF8AAABgAAAAqG0AABg/AABOU3QzX18yOGlvc19iYXNlRQAAAAAAAADRdJ4AV529KoBwUg///z4nCgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QUYAAAANQAAAHEAAABr////zvv//5K///8AAAAAAAAAAP////////////////////////////////////////////////////////////////8AAQIDBAUGBwgJ/////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj////////CgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiP/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AAECBAcDBgUAAAAAAAAAAgAAwAMAAMAEAADABQAAwAYAAMAHAADACAAAwAkAAMAKAADACwAAwAwAAMANAADADgAAwA8AAMAQAADAEQAAwBIAAMATAADA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")),ne((await W(Ee)).instance))}();function w5(){function oe(){var ne;if(i.calledRun=!0,!_){if(w=!0,k0.G(),C?.(i),(ne=i.onRuntimeInitialized)==null||ne.call(i),i.postRun)for(typeof i.postRun=="function"&&(i.postRun=[i.postRun]);i.postRun.length;){var Ee=i.postRun.shift();Y.push(Ee)}Z(Y)}}if(0<O)U=w5;else{if(i.preRun)for(typeof i.preRun=="function"&&(i.preRun=[i.preRun]);i.preRun.length;)X();Z($),0<O?U=w5:i.setStatus?(i.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>i.setStatus(""),1),oe()},1)):oe()}}if(i.preInit)for(typeof i.preInit=="function"&&(i.preInit=[i.preInit]);0<i.preInit.length;)i.preInit.shift()();return w5(),w?n=i:n=new Promise((oe,ne)=>{C=oe,E=ne}),n}var JI=(e,t,n=i=>i)=>{let i=e.vf32_ptr(t),o=t.size();return new Float32Array(e.HEAPF32.buffer,i,o).map(n)},K3e=e=>1/(1+Math.exp(-e)),X3e=e=>t=>t*e+.5,J3e=(e,t,n)=>{let i=n?.colorScaleFactor??.282;return{numPoints:t.numPoints,shDegree:t.shDegree,antialiased:t.antialiased,positions:JI(e,t.positions),scales:JI(e,t.scales,Math.exp),rotations:JI(e,t.rotations),alphas:JI(e,t.alphas,K3e),colors:JI(e,t.colors,X3e(i)),sh:JI(e,t.sh)}},Z3e=(e,t)=>{e._free(e.vf32_ptr(t.positions)),e._free(e.vf32_ptr(t.scales)),e._free(e.vf32_ptr(t.rotations)),e._free(e.vf32_ptr(t.alphas)),e._free(e.vf32_ptr(t.colors)),e._free(e.vf32_ptr(t.sh))},wre=async(e,t)=>{var n;let i=await q3e(),o=e instanceof Uint8Array?e:new Uint8Array(e),r=null;try{if(r=i._malloc(Uint8Array.BYTES_PER_ELEMENT*o.length),r===null)throw new Error("couldn't allocate memory");i.HEAPU8.set(o,r/Uint8Array.BYTES_PER_ELEMENT);let s=i.CoordinateSystem[((n=t?.unpackOptions)==null?void 0:n.coordinateSystem)??"UNSPECIFIED"],a=i.load_spz(r,o.length,{coordinateSystem:s}),c=J3e(i,a,t);return Z3e(i,a),c}catch(s){throw s}finally{r!==null&&i._free(r)}};var $3e=Object.freeze(Object.defineProperty({__proto__:null},Symbol.toStringTag,{value:"Module"}));function e_(e){e=e??V.EMPTY_OBJECT;let t=e.resourceCache,n=e.gltf,i=e.primitive,o=e.spz,r=e.gltfResource,s=e.baseResource,a=e.cacheKey;this._resourceCache=t,this._gltfResource=r,this._baseResource=s,this._gltf=n,this._primitive=i,this._spz=o,this._cacheKey=a,this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodePromise=void 0,this._decodedData=void 0,this._state=dt.UNLOADED,this._promise=void 0,this._spzError=void 0}l(Object.create)&&(e_.prototype=Object.create(qi.prototype),e_.prototype.constructor=e_);Object.defineProperties(e_.prototype,{cacheKey:{get:function(){return this._cacheKey}},decodedData:{get:function(){return this._decodedData}}});async function eUe(e){let t=e._resourceCache;try{let n=t.getBufferViewLoader({gltf:e._gltf,bufferViewId:0,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoader=n,await n.load(),e.isDestroyed()?void 0:(e._bufferViewTypedArray=n.typedArray,e._state=dt.PROCESSING,e)}catch(n){if(e.isDestroyed())return;Bre(e,n)}}e_.prototype.load=async function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=eUe(this),this._promise)};function Bre(e,t){throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load SPZ",t)}async function tUe(e,t){try{let n=await t;return e.isDestroyed()?void 0:(e.unload(),e._decodedData={gcloud:n},e._state=dt.READY,e._baseResource)}catch(n){if(e.isDestroyed())return;e._spzError=n}}e_.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.PROCESSING||(l(this._spzError)&&Bre(this,this._spzError),!l(this._bufferViewTypedArray))||l(this._decodePromise))return!1;let t=wre(this._bufferViewTypedArray,{unpackOptions:{coordinateSystem:"UNSPECIFIED"}});if(!l(t))return!1;this._decodePromise=tUe(this,t)};e_.prototype.unload=function(){l(this._bufferViewLoader)&&this._resourceCache.unload(this._bufferViewLoader),this._bufferViewLoader=void 0,this._bufferViewTypedArray=void 0,this._decodedData=void 0,this._gltf=void 0,this._primitive=void 0};var HO=e_;function sB(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.properties??{},i={};for(let o in n)if(n.hasOwnProperty(o)){let r=n[o];l(r.semantic)&&(i[r.semantic]=r)}this._id=t,this._name=e.name,this._description=e.description,this._properties=n,this._propertiesBySemantic=i,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}sB.fromJson=function(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.class,i={};for(let o in n.properties)if(n.properties.hasOwnProperty(o)){let r=$A.fromJson({id:o,property:n.properties[o],enums:e.enums});i[o]=r}return new sB({id:t,name:n.name,description:n.description,properties:i,extras:n.extras,extensions:n.extensions})};Object.defineProperties(sB.prototype,{properties:{get:function(){return this._properties}},propertiesBySemantic:{get:function(){return this._propertiesBySemantic}},id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});sB.BATCH_TABLE_CLASS_NAME="_batchTable";var Em=sB;function WO(e){e=e??V.EMPTY_OBJECT;let t=e.value,n=e.name;this._value=t,this._name=n,this._description=e.description,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}WO.fromJson=function(e){return new WO({value:e.value,name:e.name,description:e.description,extras:e.extras,extensions:e.extensions})};Object.defineProperties(WO.prototype,{value:{get:function(){return this._value}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var jO=WO;function YO(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.values,i={},o={},r=n.length;for(let a=0;a<r;++a){let c=n[a];i[c.value]=c.name,o[c.name]=c.value}let s=e.valueType??zt.UINT16;this._values=n,this._namesByValue=i,this._valuesByName=o,this._valueType=s,this._id=t,this._name=e.name,this._description=e.description,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}YO.fromJson=function(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.enum,i=n.values.map(function(o){return jO.fromJson(o)});return new YO({id:t,values:i,valueType:zt[n.valueType],name:n.name,description:n.description,extras:n.extras,extensions:n.extensions})};Object.defineProperties(YO.prototype,{values:{get:function(){return this._values}},namesByValue:{get:function(){return this._namesByValue}},valuesByName:{get:function(){return this._valuesByName}},valueType:{get:function(){return this._valueType}},id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var qO=YO;function KO(e){e=e??V.EMPTY_OBJECT;let t=e.classes??{},n=e.enums??{};this._classes=t,this._enums=n,this._id=e.id,this._name=e.name,this._description=e.description,this._version=e.version,this._extras=ze(e.extras,!0),this._extensions=ze(e.extensions,!0)}KO.fromJson=function(e){let t={};if(l(e.enums))for(let i in e.enums)e.enums.hasOwnProperty(i)&&(t[i]=qO.fromJson({id:i,enum:e.enums[i]}));let n={};if(l(e.classes))for(let i in e.classes)e.classes.hasOwnProperty(i)&&(n[i]=Em.fromJson({id:i,class:e.classes[i],enums:t}));return new KO({id:e.id,name:e.name,description:e.description,version:e.version,classes:n,enums:t,extras:e.extras,extensions:e.extensions})};Object.defineProperties(KO.prototype,{classes:{get:function(){return this._classes}},enums:{get:function(){return this._enums}},id:{get:function(){return this._id}},name:{get:function(){return this._name}},description:{get:function(){return this._description}},version:{get:function(){return this._version}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var Mf=KO;function zC(e){e=e??V.EMPTY_OBJECT;let t=e.schema,n=e.resource,i=e.cacheKey;this._schema=l(t)?Mf.fromJson(t):void 0,this._resource=n,this._cacheKey=i,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(zC.prototype=Object.create(qi.prototype),zC.prototype.constructor=zC);Object.defineProperties(zC.prototype,{cacheKey:{get:function(){return this._cacheKey}},schema:{get:function(){return this._schema}}});zC.prototype.load=async function(){return l(this._promise)?this._promise:l(this._schema)?(this._promise=Promise.resolve(this),this._promise):(this._promise=nUe(this),this._promise)};async function nUe(e){let t=e._resource;e._state=dt.LOADING;try{let n=await t.fetchJson();return e.isDestroyed()?void 0:(e._schema=Mf.fromJson(n),e._state=dt.READY,e)}catch(n){if(e.isDestroyed())return;e._state=dt.FAILED;let i=`Failed to load schema: ${t.url}`;throw e.getError(i,n)}}zC.prototype.unload=function(){this._schema=void 0};var aB=zC;var Nf={};function ZI(e){return DA(e.url)}function cB(e){let{byteOffset:t,byteLength:n}=e;if(Ii(e,"EXT_meshopt_compression")){let i=e.extensions.EXT_meshopt_compression;t=i.byteOffset??0,n=i.byteLength}return`${t}-${t+n}`}function iUe(e,t){let n=t.byteOffset+e.byteOffset,{componentType:i,type:o,count:r}=e;return`${n}-${i}-${o}-${r}`}function Dre(e,t){return`${ZI(e)}-buffer-id-${t}`}function $I(e,t,n,i){if(l(e.uri)){let o=i.getDerivedResource({url:e.uri});return ZI(o)}return Dre(n,t)}function gW(e,t,n,i){let o=t.bufferView,r=e.bufferViews[o],s=r.buffer,a=e.buffers[s],c=$I(a,s,n,i),u=cB(r);return`${c}-range-${u}`}function vre(e,t,n,i){let r=e.bufferViews[0],s=r.buffer,a=e.buffers[s],c=$I(a,s,n,i),u=cB(r);return`${c}-range-${u}`}function Pre(e,t,n,i){let o=e.images[t],r=o.bufferView,s=o.uri;if(l(s)){let A=i.getDerivedResource({url:s});return ZI(A)}let a=e.bufferViews[r],c=a.buffer,u=e.buffers[c],f=$I(u,c,n,i),h=cB(a);return`${f}-range-${h}`}function oUe(e,t){let n=Du.createSampler({gltf:e,textureInfo:t});return`${n.wrapS}-${n.wrapT}-${n.minificationFilter}-${n.magnificationFilter}`}Nf.getSchemaCacheKey=function(e){let{schema:t,resource:n}=e;return l(t)?`embedded-schema:${JSON.stringify(t)}`:`external-schema:${ZI(n)}`};Nf.getExternalBufferCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{resource:t}=e;return`external-buffer:${ZI(t)}`};Nf.getEmbeddedBufferCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{parentResource:t,bufferId:n}=e;return`embedded-buffer:${Dre(t,n)}`};Nf.getGltfCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltfResource:t}=e;return`gltf:${ZI(t)}`};Nf.getBufferViewCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,bufferViewId:n,gltfResource:i,baseResource:o}=e,r=t.bufferViews[n],s=r.buffer,a=t.buffers[s];Ii(r,"EXT_meshopt_compression")&&(s=r.extensions.EXT_meshopt_compression.buffer);let c=$I(a,s,i,o),u=cB(r);return`buffer-view:${c}-range-${u}`};Nf.getDracoCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,draco:n,gltfResource:i,baseResource:o}=e;return`draco:${gW(t,n,i,o)}`};Nf.getSpzCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,primitive:n,gltfResource:i,baseResource:o}=e;return`spz:${vre(t,n,i,o)}`};Nf.getVertexBufferCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,gltfResource:n,baseResource:i,frameState:o,bufferViewId:r,draco:s,spz:a,attributeSemantic:c,dequantize:u=!1,loadBuffer:f=!1,loadTypedArray:h=!1}=e,A="";if(u&&(A+="-dequantize"),f&&(A+="-buffer",A+=`-context-${o.context.id}`),h&&(A+="-typed-array"),l(s))return`vertex-buffer:${gW(t,s,n,i)}-draco-${c}${A}`;if(a)return`vertex-buffer:${vre(t,a,n,i)}-spz-${c}${A}`;let g=t.bufferViews[r],m=g.buffer,_=t.buffers[m],y=$I(_,m,n,i),C=cB(g);return`vertex-buffer:${y}-range-${C}${A}`};Nf.getIndexBufferCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,accessorId:n,gltfResource:i,baseResource:o,frameState:r,draco:s,loadBuffer:a=!1,loadTypedArray:c=!1}=e,u="";if(a&&(u+="-buffer",u+=`-context-${r.context.id}`),c&&(u+="-typed-array"),l(s))return`index-buffer:${gW(t,s,i,o)}-draco${u}`;let f=t.accessors[n],h=f.bufferView,A=t.bufferViews[h],g=A.buffer,m=t.buffers[g],_=$I(m,g,i,o),y=iUe(f,A);return`index-buffer:${_}-accessor-${y}${u}`};Nf.getImageCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,imageId:n,gltfResource:i,baseResource:o}=e;return`image:${Pre(t,n,i,o)}`};Nf.getTextureCacheKey=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s}=e,a=n.index,c=Du.getImageIdFromTexture({gltf:t,textureId:a,supportedImageFormats:r}),u=Pre(t,c,i,o),f=oUe(t,n);return`texture:${u}-sampler-${f}-context-${s.context.id}`};var Vl=Nf;function lB(){this.geometryByteLength=0,this.texturesByteLength=0,this._geometrySizes={},this._textureSizes={}}lB.prototype.clear=function(){this.geometryByteLength=0,this.texturesByteLength=0,this._geometrySizes={},this._textureSizes={}};lB.prototype.addGeometryLoader=function(e){let t=e.cacheKey;if(this._geometrySizes.hasOwnProperty(t))return;this._geometrySizes[t]=0;let n=e.buffer,i=e.typedArray,o=0;l(n)&&(o+=n.sizeInBytes),l(i)&&(o+=i.byteLength),this.geometryByteLength+=o,this._geometrySizes[t]=o};lB.prototype.addTextureLoader=function(e){let t=e.cacheKey;if(this._textureSizes.hasOwnProperty(t))return;this._textureSizes[t]=0;let n=e.texture.sizeInBytes;this.texturesByteLength+=e.texture.sizeInBytes,this._textureSizes[t]=n};lB.prototype.removeLoader=function(e){let t=e.cacheKey,n=this._geometrySizes[t];delete this._geometrySizes[t],l(n)&&(this.geometryByteLength-=n);let i=this._textureSizes[t];delete this._textureSizes[t],l(i)&&(this.texturesByteLength-=i)};var XO=lB;function Nn(){}Nn.cacheEntries={};Nn.statistics=new XO;function rUe(e){this.referenceCount=1,this.resourceLoader=e,this._statisticsPromise=void 0}Nn.get=function(e){let t=Nn.cacheEntries[e];if(l(t))return++t.referenceCount,t.resourceLoader};Nn.add=function(e){let t=e.cacheKey;return Nn.cacheEntries[t]=new rUe(e),e};Nn.unload=function(e){let t=e.cacheKey,n=Nn.cacheEntries[t];--n.referenceCount,n.referenceCount===0&&(Nn.statistics.removeLoader(e),e.destroy(),delete Nn.cacheEntries[t])};Nn.getSchemaLoader=function(e){e=e??V.EMPTY_OBJECT;let{schema:t,resource:n}=e,i=Vl.getSchemaCacheKey({schema:t,resource:n}),o=Nn.get(i);return l(o)?o:(o=new aB({schema:t,resource:n,cacheKey:i}),Nn.add(o))};Nn.getEmbeddedBufferLoader=function(e){e=e??V.EMPTY_OBJECT;let{parentResource:t,bufferId:n,typedArray:i}=e,o=Vl.getEmbeddedBufferCacheKey({parentResource:t,bufferId:n}),r=Nn.get(o);return l(r)?r:(r=new jI({typedArray:i,cacheKey:o}),Nn.add(r))};Nn.getExternalBufferLoader=function(e){e=e??V.EMPTY_OBJECT;let{resource:t}=e,n=Vl.getExternalBufferCacheKey({resource:t}),i=Nn.get(n);return l(i)?i:(i=new jI({resource:t,cacheKey:n}),Nn.add(i))};Nn.getGltfJsonLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltfResource:t,baseResource:n,typedArray:i,gltfJson:o}=e,r=Vl.getGltfCacheKey({gltfResource:t}),s=Nn.get(r);return l(s)?s:(s=new eB({resourceCache:Nn,gltfResource:t,baseResource:n,typedArray:i,gltfJson:o,cacheKey:r}),Nn.add(s))};Nn.getBufferViewLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,bufferViewId:n,gltfResource:i,baseResource:o}=e,r=Vl.getBufferViewCacheKey({gltf:t,bufferViewId:n,gltfResource:i,baseResource:o}),s=Nn.get(r);return l(s)?s:(s=new Kw({resourceCache:Nn,gltf:t,bufferViewId:n,gltfResource:i,baseResource:o,cacheKey:r}),Nn.add(s))};Nn.getDracoLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,primitive:n,draco:i,gltfResource:o,baseResource:r}=e,s=Vl.getDracoCacheKey({gltf:t,draco:i,gltfResource:o,baseResource:r}),a=Nn.get(s);return l(a)?a:(a=new Xw({resourceCache:Nn,gltf:t,primitive:n,draco:i,gltfResource:o,baseResource:r,cacheKey:s}),Nn.add(a))};Nn.getSpzLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,primitive:n,spz:i,gltfResource:o,baseResource:r}=e,s=Vl.getSpzCacheKey({gltf:t,primitive:n,gltfResource:o,baseResource:r}),a=Nn.get(s);return l(a)?a:(a=new HO({resourceCache:Nn,gltf:t,primitive:n,spz:i,gltfResource:o,baseResource:r,cacheKey:s}),Nn.add(a))};Nn.getVertexBufferLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,gltfResource:n,baseResource:i,frameState:o,bufferViewId:r,primitive:s,draco:a,spz:c,attributeSemantic:u,accessorId:f,asynchronous:h=!0,dequantize:A=!1,loadBuffer:g=!1,loadTypedArray:m=!1}=e,_=Vl.getVertexBufferCacheKey({gltf:t,gltfResource:n,baseResource:i,frameState:o,bufferViewId:r,draco:a,spz:c,attributeSemantic:u,dequantize:A,loadBuffer:g,loadTypedArray:m}),y=Nn.get(_);return l(y)?y:(y=new rB({resourceCache:Nn,gltf:t,gltfResource:n,baseResource:i,bufferViewId:r,primitive:s,draco:a,spz:c,attributeSemantic:u,accessorId:f,cacheKey:_,asynchronous:h,dequantize:A,loadBuffer:g,loadTypedArray:m}),Nn.add(y))};Nn.getIndexBufferLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,accessorId:n,gltfResource:i,baseResource:o,frameState:r,primitive:s,draco:a,asynchronous:c=!0,loadBuffer:u=!1,loadTypedArray:f=!1}=e,h=Vl.getIndexBufferCacheKey({gltf:t,accessorId:n,gltfResource:i,baseResource:o,frameState:r,draco:a,loadBuffer:u,loadTypedArray:f}),A=Nn.get(h);return l(A)?A:(A=new Zw({resourceCache:Nn,gltf:t,accessorId:n,gltfResource:i,baseResource:o,primitive:s,draco:a,cacheKey:h,asynchronous:c,loadBuffer:u,loadTypedArray:f}),Nn.add(A))};Nn.getImageLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,imageId:n,gltfResource:i,baseResource:o}=e,r=Vl.getImageCacheKey({gltf:t,imageId:n,gltfResource:i,baseResource:o}),s=Nn.get(r);return l(s)?s:(s=new Jw({resourceCache:Nn,gltf:t,imageId:n,gltfResource:i,baseResource:o,cacheKey:r}),Nn.add(s))};Nn.getTextureLoader=function(e){e=e??V.EMPTY_OBJECT;let{gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s,asynchronous:a=!0}=e,c=Vl.getTextureCacheKey({gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s}),u=Nn.get(c);return l(u)?u:(u=new oB({resourceCache:Nn,gltf:t,textureInfo:n,gltfResource:i,baseResource:o,supportedImageFormats:r,cacheKey:c,asynchronous:a}),Nn.add(u))};Nn.clearForSpecs=function(){let e=[rB,Zw,Xw,oB,Jw,Kw,jI,aB,eB],t,n=Nn.cacheEntries,i=[];for(t in n)n.hasOwnProperty(t)&&i.push(n[t]);i.sort(function(r,s){let a=e.indexOf(r.resourceLoader.constructor),c=e.indexOf(s.resourceLoader.constructor);return a-c});let o=i.length;for(let r=0;r<o;++r){let s=i[r];t=s.resourceLoader.cacheKey,l(n[t])&&(s.resourceLoader.destroy(),delete n[t])}Nn.statistics.clear()};var Qi=Nn;function Ba(e,t,n){this._resource=e,this._subtreeJson=void 0,this._bufferLoader=void 0,this._tileAvailability=void 0,this._contentAvailabilityBitstreams=[],this._childSubtreeAvailability=void 0,this._implicitCoordinates=n,this._subtreeLevels=t.subtreeLevels,this._subdivisionScheme=t.subdivisionScheme,this._branchingFactor=t.branchingFactor,this._metadata=void 0,this._tileMetadataTable=void 0,this._tilePropertyTableJson=void 0,this._contentMetadataTables=[],this._contentPropertyTableJsons=[],this._tileJumpBuffer=void 0,this._contentJumpBuffers=[],this._ready=!1}Object.defineProperties(Ba.prototype,{ready:{get:function(){return this._ready}},metadata:{get:function(){return this._metadata}},tileMetadataTable:{get:function(){return this._tileMetadataTable}},tilePropertyTableJson:{get:function(){return this._tilePropertyTableJson}},contentMetadataTables:{get:function(){return this._contentMetadataTables}},contentPropertyTableJsons:{get:function(){return this._contentPropertyTableJsons}},implicitCoordinates:{get:function(){return this._implicitCoordinates}}});Ba.prototype.tileIsAvailableAtIndex=function(e){return this._tileAvailability.getBit(e)};Ba.prototype.tileIsAvailableAtCoordinates=function(e){let t=this.getTileIndex(e);return this.tileIsAvailableAtIndex(t)};Ba.prototype.contentIsAvailableAtIndex=function(e,t){return t=t??0,this._contentAvailabilityBitstreams[t].getBit(e)};Ba.prototype.contentIsAvailableAtCoordinates=function(e,t){let n=this.getTileIndex(e);return this.contentIsAvailableAtIndex(n,t)};Ba.prototype.childSubtreeIsAvailableAtIndex=function(e){return this._childSubtreeAvailability.getBit(e)};Ba.prototype.childSubtreeIsAvailableAtCoordinates=function(e){let t=this.getChildSubtreeIndex(e);return this.childSubtreeIsAvailableAtIndex(t)};Ba.prototype.getLevelOffset=function(e){let t=this._branchingFactor;return(Math.pow(t,e)-1)/(t-1)};Ba.prototype.getParentMortonIndex=function(e){let t=2;return this._subdivisionScheme===Ts.OCTREE&&(t=3),e>>t};Ba.fromSubtreeJson=async function(e,t,n,i,o){let r=new Ba(e,i,o),s;l(t)?s={json:t,binary:void 0}:s=sUe(n);let a=s.json;r._subtreeJson=a;let c;if(Ii(a,"3DTILES_metadata"))c=a.extensions["3DTILES_metadata"];else if(l(a.tileMetadata)){let E=a.tileMetadata;c=a.propertyTables[E]}let u=[];if(l(a.contentMetadata)){let E=a.contentMetadata.length;for(let I=0;I<E;I++){let b=a.contentMetadata[I];u.push(a.propertyTables[b])}}let f,h=i.metadataSchema,A=a.subtreeMetadata;if(l(A)){let E=A.class,I=h.classes[E];f=new xO({subtreeMetadata:A,class:I})}r._metadata=f,r._tilePropertyTableJson=c,r._contentPropertyTableJsons=u;let g={constant:0};a.contentAvailabilityHeaders=[],Ii(a,"3DTILES_multiple_contents")?a.contentAvailabilityHeaders=a.extensions["3DTILES_multiple_contents"].contentAvailability:Array.isArray(a.contentAvailability)?a.contentAvailabilityHeaders=a.contentAvailability:a.contentAvailabilityHeaders.push(a.contentAvailability??g);let m=aUe(a.buffers),_=cUe(a.bufferViews,m);lUe(a,_),l(c)&&Rre(c,_);for(let E=0;E<u.length;E++){let I=u[E];Rre(I,_)}let y=await uUe(r,m,s.binary),C=dUe(_,y);return hUe(r,a,i,C),l(c)&&(mUe(r,i,C),pUe(r)),AUe(r,i,C),gUe(r),r._ready=!0,r};function sUe(e){let n=new DataView(e.buffer,e.byteOffset),i=8,o=n.getUint32(i,!0);i+=8;let r=n.getUint32(i,!0);i+=8;let s=yr(e,i,o);i+=o;let a=e.subarray(i,i+r);return{json:s,binary:a}}function aUe(e){e=l(e)?e:[];for(let t=0;t<e.length;t++){let n=e[t];n.isExternal=l(n.uri),n.isActive=!1}return e}function cUe(e,t){e=l(e)?e:[];for(let n=0;n<e.length;n++){let i=e[n],o=t[i.buffer];i.bufferHeader=o,i.isActive=!1}return e}function lUe(e,t){let n,i=e.tileAvailability;l(i.bitstream)?n=t[i.bitstream]:l(i.bufferView)&&(n=t[i.bufferView]),l(n)&&(n.isActive=!0,n.bufferHeader.isActive=!0);let o=e.contentAvailabilityHeaders;for(let s=0;s<o.length;s++)n=void 0,l(o[s].bitstream)?n=t[o[s].bitstream]:l(o[s].bufferView)&&(n=t[o[s].bufferView]),l(n)&&(n.isActive=!0,n.bufferHeader.isActive=!0);n=void 0;let r=e.childSubtreeAvailability;l(r.bitstream)?n=t[r.bitstream]:l(r.bufferView)&&(n=t[r.bufferView]),l(n)&&(n.isActive=!0,n.bufferHeader.isActive=!0)}function Rre(e,t){let n=e.properties,i;for(let o in n)if(n.hasOwnProperty(o)){let r=n[o],s=r.values??r.bufferView;i=t[s],i.isActive=!0,i.bufferHeader.isActive=!0;let a=r.stringOffsets??r.stringOffsetBufferView;l(a)&&(i=t[a],i.isActive=!0,i.bufferHeader.isActive=!0);let c=r.arrayOffsets??r.arrayOffsetBufferView;l(c)&&(i=t[c],i.isActive=!0,i.bufferHeader.isActive=!0)}}function uUe(e,t,n){let i=[];for(let o=0;o<t.length;o++){let r=t[o];if(!r.isActive)i.push(Promise.resolve(void 0));else if(r.isExternal){let s=fUe(e,r);i.push(s)}else i.push(Promise.resolve(n))}return Promise.all(i).then(function(o){let r={};for(let s=0;s<o.length;s++){let a=o[s];l(a)&&(r[s]=a)}return r})}async function fUe(e,t){let i=e._resource.getDerivedResource({url:t.uri}),o=Qi.getExternalBufferLoader({resource:i});e._bufferLoader=o;try{await o.load()}catch(r){if(o.isDestroyed())return;throw r}return o.typedArray}function dUe(e,t){let n={};for(let i=0;i<e.length;i++){let o=e[i];if(!o.isActive)continue;let r=o.byteOffset,s=r+o.byteLength,c=t[o.buffer].subarray(r,s);n[i]=c}return n}function hUe(e,t,n,i){let o=n.branchingFactor,r=n.subtreeLevels,s=(Math.pow(o,r)-1)/(o-1),a=Math.pow(o,r),c=Ii(t,"3DTILES_metadata"),u=l(e._tilePropertyTableJson),f=c||u;e._tileAvailability=_W(t.tileAvailability,i,s,f);let h=e._contentPropertyTableJsons.length>0;f=f||h;for(let A=0;A<t.contentAvailabilityHeaders.length;A++){let g=_W(t.contentAvailabilityHeaders[A],i,s,f);e._contentAvailabilityBitstreams.push(g)}e._childSubtreeAvailability=_W(t.childSubtreeAvailability,i,a)}function _W(e,t,n,i){if(l(e.constant))return new jw({constant:!!e.constant,lengthBits:n,availableCount:e.availableCount});let o;return l(e.bitstream)?o=t[e.bitstream]:l(e.bufferView)&&(o=t[e.bufferView]),new jw({bitstream:o,lengthBits:n,availableCount:e.availableCount,computeAvailableCountEnabled:i})}function mUe(e,t,n){let i=e._tilePropertyTableJson,o=e._tileAvailability.availableCount,r=t.metadataSchema,s=i.class,a=r.classes[s];e._tileMetadataTable=new jd({class:a,count:o,properties:i.properties,bufferViews:n})}function AUe(e,t,n){let i=e._contentPropertyTableJsons,o=e._contentAvailabilityBitstreams,r=t.metadataSchema,s=e._contentMetadataTables;for(let a=0;a<i.length;a++){let c=i[a],f=o[a].availableCount,h=c.class,A=r.classes[h],g=new jd({class:A,count:f,properties:c.properties,bufferViews:n});s.push(g)}}function Mre(e){let t=0,n=e.lengthBits,i=e.availableCount,o;i<256?o=new Uint8Array(n):i<65536?o=new Uint16Array(n):o=new Uint32Array(n);for(let r=0;r<e.lengthBits;r++)e.getBit(r)&&(o[r]=t,t++);return o}function pUe(e){let t=Mre(e._tileAvailability);e._tileJumpBuffer=t}function gUe(e){let t=e._contentJumpBuffers,n=e._contentAvailabilityBitstreams;for(let i=0;i<n.length;i++){let o=n[i],r=Mre(o);t.push(r)}}Ba.prototype.getTileIndex=function(e){let t=e.level-this._implicitCoordinates.level;if(t<0||this._subtreeLevels<=t)throw new ce("level is out of bounds for this subtree");return e.getSubtreeCoordinates().getOffsetCoordinates(e).tileIndex};Ba.prototype.getChildSubtreeIndex=function(e){if(e.level-this._implicitCoordinates.level!==this._implicitCoordinates.subtreeLevels)throw new ce("level is out of bounds for this subtree");return e.getParentSubtreeCoordinates().getOffsetCoordinates(e).mortonIndex};function _Ue(e,t){if(!l(e._tileMetadataTable))return;let n=e.getTileIndex(t);if(e._tileAvailability.getBit(n))return e._tileJumpBuffer[n]}function yUe(e,t,n){let i=e._contentMetadataTables;if(!l(i))return;let o=i[n];if(!l(o))return;let r=e._contentAvailabilityBitstreams[n],s=e.getTileIndex(t);if(r.getBit(s))return e._contentJumpBuffers[n][s]}Ba.prototype.getTileMetadataView=function(e){let t=_Ue(this,e);if(!l(t))return;let n=this._tileMetadataTable;return new Yw({class:n.class,metadataTable:n,entityId:t,propertyTableJson:this._tilePropertyTableJson})};Ba.prototype.getContentMetadataView=function(e,t){let n=yUe(this,e,t);if(!l(n))return;let i=this._contentMetadataTables[t],o=this._contentPropertyTableJsons[t];return new Yw({class:i.class,metadataTable:i,entityId:n,contentIndex:t,propertyTableJson:o})};Ba.prototype.isDestroyed=function(){return!1};Ba.prototype.destroy=function(){return l(this._bufferLoader)&&Qi.unload(this._bufferLoader),ue(this)};var ex=Ba;var CUe={ID:"ID",NAME:"NAME",DESCRIPTION:"DESCRIPTION",TILESET_TILE_COUNT:"TILESET_TILE_COUNT",TILE_BOUNDING_BOX:"TILE_BOUNDING_BOX",TILE_BOUNDING_REGION:"TILE_BOUNDING_REGION",TILE_BOUNDING_SPHERE:"TILE_BOUNDING_SPHERE",TILE_MINIMUM_HEIGHT:"TILE_MINIMUM_HEIGHT",TILE_MAXIMUM_HEIGHT:"TILE_MAXIMUM_HEIGHT",TILE_HORIZON_OCCLUSION_POINT:"TILE_HORIZON_OCCLUSION_POINT",TILE_GEOMETRIC_ERROR:"TILE_GEOMETRIC_ERROR",CONTENT_BOUNDING_BOX:"CONTENT_BOUNDING_BOX",CONTENT_BOUNDING_REGION:"CONTENT_BOUNDING_REGION",CONTENT_BOUNDING_SPHERE:"CONTENT_BOUNDING_SPHERE",CONTENT_MINIMUM_HEIGHT:"CONTENT_MINIMUM_HEIGHT",CONTENT_MAXIMUM_HEIGHT:"CONTENT_MAXIMUM_HEIGHT",CONTENT_HORIZON_OCCLUSION_POINT:"CONTENT_HORIZON_OCCLUSION_POINT"},tx=Object.freeze(CUe);var qd={};qd.parseAllBoundingVolumeSemantics=function(e){return{tile:{boundingVolume:qd.parseBoundingVolumeSemantic("TILE",e),minimumHeight:qd._parseMinimumHeight("TILE",e),maximumHeight:qd._parseMaximumHeight("TILE",e)},content:{boundingVolume:qd.parseBoundingVolumeSemantic("CONTENT",e),minimumHeight:qd._parseMinimumHeight("CONTENT",e),maximumHeight:qd._parseMaximumHeight("CONTENT",e)}}};qd.parseBoundingVolumeSemantic=function(e,t){let n=`${e}_BOUNDING_BOX`,i=t.getPropertyBySemantic(n);if(l(i))return{box:i};let o=`${e}_BOUNDING_REGION`,r=t.getPropertyBySemantic(o);if(l(r))return{region:r};let s=`${e}_BOUNDING_SPHERE`,a=t.getPropertyBySemantic(s);if(l(a))return{sphere:a}};qd._parseMinimumHeight=function(e,t){let n=`${e}_MINIMUM_HEIGHT`;return t.getPropertyBySemantic(n)};qd._parseMaximumHeight=function(e,t){let n=`${e}_MAXIMUM_HEIGHT`;return t.getPropertyBySemantic(n)};var nx=qd;function rl(e,t,n){let i=t.implicitTileset,o=t.implicitCoordinates;this._implicitTileset=i,this._implicitCoordinates=o,this._implicitSubtree=void 0,this._tileset=e,this._tile=t,this._resource=n,this._metadata=void 0,this.featurePropertiesDirty=!1,this._group=void 0;let r=o.getTemplateValues(),s=i.subtreeUriTemplate.getDerivedResource({templateValues:r});this._url=s.getUrlComponent(!0),this._ready=!1}Object.defineProperties(rl.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._url}},metadata:{get:function(){},set:function(){}},batchTable:{get:function(){}},group:{get:function(){return this._group},set:function(e){this._group=e}}});rl.fromSubtreeJson=async function(e,t,n,i,o,r){r=r??0;let s;l(o)&&(s=new Uint8Array(o,r));let a=t.implicitTileset,c=t.implicitCoordinates,u=await ex.fromSubtreeJson(n,i,s,a,c),f=new rl(e,t,n);return f._implicitSubtree=u,EUe(f,u),f._ready=!0,f};function EUe(e,t){let n=e._tile,i=e._implicitCoordinates.childIndex,o=xUe(e,t,n,i),r=e._tileset.statistics;n.children.push(o.rootTile),r.numberOfTilesTotal++;let s=IUe(e,t,o.bottomRow);for(let a=0;a<s.length;a++){let c=s[a],u=c.tile,f=RUe(e,u,c.childIndex);u.children.push(f),r.numberOfTilesTotal++}}function IUe(e,t,n){let i=[],o=e._implicitTileset.branchingFactor;for(let r=0;r<n.length;r++){let s=n[r];if(l(s))for(let a=0;a<o;a++){let c=r*o+a;t.childSubtreeIsAvailableAtIndex(c)&&i.push({tile:s,childIndex:a})}}return i}function xUe(e,t,n,i){let s=Nre(e,t,n,i,0,!0),a=e._tileset.statistics,c=[s],u=[],f=e._implicitTileset;for(let h=1;h<f.subtreeLevels;h++){let A=t.getLevelOffset(h),g=f.branchingFactor*c.length;for(let m=0;m<g;m++){let _=A+m;if(!t.tileIsAvailableAtIndex(_)){u.push(void 0);continue}let y=t.getParentMortonIndex(m),C=c[y],E=m%f.branchingFactor,I=Nre(e,t,C,E,_);C.children.push(I),a.numberOfTilesTotal++,u.push(I)}c=u,u=[]}return{rootTile:s,bottomRow:c}}function Lre(e,t,n){let i=tx.TILE_GEOMETRIC_ERROR;return l(e)&&e.hasPropertyBySemantic(i)?e.getPropertyBySemantic(i):t.geometricError/Math.pow(2,n.level)}function Nre(e,t,n,i,o,r){let s=e._implicitTileset,a;r??!1?a=n.implicitCoordinates:a=n.implicitCoordinates.getChildCoordinates(i);let c,u,f;if(l(t.tilePropertyTableJson)){c=t.getTileMetadataView(a);let B=nx.parseAllBoundingVolumeSemantics(c);u=B.tile,f=B.content}let A=t.contentPropertyTableJsons.length,g=!1;for(let B=0;B<A;B++)if(t.contentIsAvailableAtCoordinates(a,B)){g=!0;break}let m=SUe(s,a,i,r,n,u),_=[];for(let B=0;B<s.contentCount;B++){if(!t.contentIsAvailableAtIndex(o,B))continue;let N={uri:s.contentUriTemplates[B].getDerivedResource({templateValues:a.getTemplateValues()}).url},L=wUe(m,f);l(L)&&(N.boundingVolume=L),_.push(wt(N,s.contentHeaders[B]))}let y=Lre(c,s,a),C={boundingVolume:m,geometricError:y,refine:s.refine,contents:_},E=!0,I=ze(s.tileHeader,E);delete I.boundingVolume,delete I.transform,delete I.metadata;let b=wt(C,I,E),S=Ure(e,s.baseResource,b,n);return S.implicitCoordinates=a,S.implicitSubtree=t,S.metadata=c,S.hasImplicitContentMetadata=g,S}function JO(e,t){return l(e)&&l(t)&&(l(t.minimumHeight)||l(t.maximumHeight))&&(Ii(e,"3DTILES_bounding_volume_S2")||l(e.region))}function CW(e,t){l(t)&&(Ii(e,"3DTILES_bounding_volume_S2")?TUe(e.extensions["3DTILES_bounding_volume_S2"],t.minimumHeight,t.maximumHeight):l(e.region)&&bUe(e.region,t.minimumHeight,t.maximumHeight))}function bUe(e,t,n){l(t)&&(e[4]=t),l(n)&&(e[5]=n)}function TUe(e,t,n){l(t)&&(e.minimumHeight=t),l(n)&&(e.maximumHeight=n)}function SUe(e,t,n,i,o,r){let s;return!l(r)||!l(r.boundingVolume)||!JO(r.boundingVolume,r)&&JO(e.boundingVolume,r)?s=Ore(e,t,n,i??!1,o):s=r.boundingVolume,CW(s,r),s}function wUe(e,t){let n;return l(t)&&(n=t.boundingVolume),JO(n,t)?CW(n,t):JO(e,t)&&(n=ze(e,!0),CW(n,t)),n}function Ore(e,t,n,i,o){let r=e.boundingVolume;return Ii(r,"3DTILES_bounding_volume_S2")?Fre(i,o,n,t.level,t.x,t.y,t.z):l(r.region)?{region:kre(r.region,t.level,t.x,t.y,t.z)}:{box:Qre(r.box,t.level,t.x,t.y,t.z)}}function Fre(e,t,n,i,o,r,s){let a=t._boundingVolume;if(e)return{extensions:{"3DTILES_bounding_volume_S2":{token:Hg.getTokenFromId(a.s2Cell._cellId),minimumHeight:a.minimumHeight,maximumHeight:a.maximumHeight}}};let c=Number(t._boundingVolume.s2Cell._cellId>>BigInt(61)),u=c%2===0?Ww.encode2D(i,o,r):Ww.encode2D(i,r,o),f=Hg.fromFacePositionLevel(c,BigInt(u),i),h,A;if(l(s)){let g=(a.maximumHeight+a.minimumHeight)/2;h=n<4?a.minimumHeight:g,A=n<4?g:a.maximumHeight}else h=a.minimumHeight,A=a.maximumHeight;return{extensions:{"3DTILES_bounding_volume_S2":{token:Hg.getTokenFromId(f._cellId),minimumHeight:h,maximumHeight:A}}}}var BUe=new d,DUe=new d,yW=new d,vUe=new J;function Qre(e,t,n,i,o){if(t===0)return e;let r=d.unpack(e,0,DUe),s=J.unpack(e,3,vUe),a=Math.pow(2,-t),c=-1+(2*n+1)*a,u=-1+(2*i+1)*a,f=0,h=d.fromElements(a,a,1,BUe);l(o)&&(f=-1+(2*o+1)*a,h.z=a);let A=d.fromElements(c,u,f,yW);A=J.multiplyByVector(s,A,yW),A=d.add(A,r,yW);let g=J.clone(s);g=J.multiplyByScale(g,h,g);let m=new Array(12);return d.pack(A,m),J.pack(g,m,3),m}var PUe=new ae;function kre(e,t,n,i,o){if(t===0)return e.slice();let r=ae.unpack(e,0,PUe),s=e[4],a=e[5],c=Math.pow(2,-t),u=c*r.width,f=D.negativePiToPi(r.west+n*u),h=D.negativePiToPi(f+u),A=c*r.height,g=D.negativePiToPi(r.south+i*A),m=D.negativePiToPi(g+A),_=s,y=a;if(l(o)){let C=c*(a-s);_+=o*C,y=_+C}return[f,g,h,m,_,y]}function RUe(e,t,n){let i=e._implicitTileset,o=t.implicitCoordinates.getChildCoordinates(n),r=Ore(i,o,n,!1,t),s=Lre(void 0,i,o),a=i.subtreeUriTemplate.getDerivedResource({templateValues:o.getTemplateValues()}).url,c={boundingVolume:r,geometricError:s,refine:i.refine,contents:[{uri:a}]},u=Ure(e,i.baseResource,c,t);return u.implicitTileset=i,u.implicitCoordinates=o,u}function Ure(e,t,n,i){let o=e._tile.constructor;return new o(e._tileset,t,n,i)}rl.prototype.hasProperty=function(e,t){return!1};rl.prototype.getFeature=function(e){};rl.prototype.applyDebugSettings=function(e,t){};rl.prototype.applyStyle=function(e){};rl.prototype.update=function(e,t){};rl.prototype.pick=function(e,t,n){};rl.prototype.isDestroyed=function(){return!1};rl.prototype.destroy=function(){return this._implicitSubtree=this._implicitSubtree&&this._implicitSubtree.destroy(),ue(this)};rl._deriveBoundingBox=Qre;rl._deriveBoundingRegion=kre;rl._deriveBoundingVolumeS2=Fre;var uB=rl;var MUe={NONE:0,REPEAT:1,MIRRORED_REPEAT:2},vu=Object.freeze(MUe);function ix(e,t){this._distance=t,this._normal=new Gre(e,this),this.onChangeCallback=void 0,this.index=-1}Object.defineProperties(ix.prototype,{distance:{get:function(){return this._distance},set:function(e){l(this.onChangeCallback)&&e!==this._distance&&this.onChangeCallback(this.index),this._distance=e}},normal:{get:function(){return this._normal},set:function(e){l(this.onChangeCallback)&&!d.equals(this._normal._cartesian3,e)&&this.onChangeCallback(this.index),d.clone(e,this._normal._cartesian3)}}});ix.fromPlane=function(e,t){return l(t)?(t.normal=e.normal,t.distance=e.distance):t=new ix(e.normal,e.distance),t};ix.clone=function(e,t){return l(t)?(t.normal=e.normal,t.distance=e.distance,t):new ix(e.normal,e.distance)};function Gre(e,t){this._clippingPlane=t,this._cartesian3=d.clone(e)}Object.defineProperties(Gre.prototype,{x:{get:function(){return this._cartesian3.x},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.x&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.x=e}},y:{get:function(){return this._cartesian3.y},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.y&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.y=e}},z:{get:function(){return this._cartesian3.z},set:function(e){l(this._clippingPlane.onChangeCallback)&&e!==this._cartesian3.z&&this._clippingPlane.onChangeCallback(this._clippingPlane.index),this._cartesian3.z=e}}});var ox=ix;function wc(e){e=e??V.EMPTY_OBJECT,this._planes=[],this._dirtyIndex=-1,this._multipleDirtyPlanes=!1,this._enabled=e.enabled??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this.edgeColor=G.clone(e.edgeColor??G.WHITE),this.edgeWidth=e.edgeWidth??0,this.planeAdded=new _e,this.planeRemoved=new _e,this._owner=void 0;let t=e.unionClippingRegions??!1;this._unionClippingRegions=t,this._testIntersection=t?jre:Yre,this._uint8View=void 0,this._float32View=void 0,this._clippingPlanesTexture=void 0;let n=e.planes;if(l(n)){let i=n.length;for(let o=0;o<i;++o)this.add(n[o])}}function jre(e){return e===nn.OUTSIDE}function Yre(e){return e===nn.INSIDE}Object.defineProperties(wc.prototype,{length:{get:function(){return this._planes.length}},unionClippingRegions:{get:function(){return this._unionClippingRegions},set:function(e){this._unionClippingRegions!==e&&(this._unionClippingRegions=e,this._testIntersection=e?jre:Yre)}},enabled:{get:function(){return this._enabled},set:function(e){this._enabled!==e&&(this._enabled=e)}},texture:{get:function(){return this._clippingPlanesTexture}},owner:{get:function(){return this._owner}},clippingPlanesState:{get:function(){return this._unionClippingRegions?this._planes.length:-this._planes.length}}});function zre(e,t){e._multipleDirtyPlanes=e._multipleDirtyPlanes||e._dirtyIndex!==-1&&e._dirtyIndex!==t,e._dirtyIndex=t}wc.prototype.add=function(e){let t=this._planes.length,n=this;e.onChangeCallback=function(i){zre(n,i)},e.index=t,zre(this,t),this._planes.push(e),this.planeAdded.raiseEvent(e,t)};wc.prototype.get=function(e){return this._planes[e]};function qre(e,t){let n=e.length;for(let i=0;i<n;++i)if(mn.equals(e[i],t))return i;return-1}wc.prototype.contains=function(e){return qre(this._planes,e)!==-1};wc.prototype.remove=function(e){let t=this._planes,n=qre(t,e);if(n===-1)return!1;e instanceof ox&&(e.onChangeCallback=void 0,e.index=-1);let i=t.length-1;for(let o=n;o<i;++o){let r=t[o+1];t[o]=r,r instanceof ox&&(r.index=o)}return this._multipleDirtyPlanes=!0,t.length=i,this.planeRemoved.raiseEvent(e,n),!0};wc.prototype.removeAll=function(){let e=this._planes,t=e.length;for(let n=0;n<t;++n){let i=e[n];i instanceof ox&&(i.onChangeCallback=void 0,i.index=-1),this.planeRemoved.raiseEvent(i,n)}this._multipleDirtyPlanes=!0,this._planes=[]};var NUe=new se,LUe=new se;function Vre(e,t,n){let i=e._uint8View,o=e._planes,r=0;for(let s=t;s<n;++s){let a=o[s],c=Fn.octEncodeToCartesian4(a.normal,LUe);i[r]=c.x,i[r+1]=c.y,i[r+2]=c.z,i[r+3]=c.w;let u=se.packFloat(a.distance,NUe);i[r+4]=u.x,i[r+5]=u.y,i[r+6]=u.z,i[r+7]=u.w,r+=8}}function Hre(e,t,n){let i=e._float32View,o=e._planes,r=0;for(let s=t;s<n;++s){let a=o[s],c=a.normal;i[r]=c.x,i[r+1]=c.y,i[r+2]=c.z,i[r+3]=a.distance,r+=4}}function Kre(e,t){let n=qt.maximumTextureSize;return t.x=Math.min(e,n),t.y=Math.ceil(e/t.x),t}var OUe=new k;wc.prototype.update=function(e){let t=this._clippingPlanesTexture,n=e.context,i=wc.useFloatTexture(n),o=i?this.length:this.length*2;if(l(t)){let s=t.width*t.height;(s<o||o<.25*s)&&(t.destroy(),t=void 0,this._clippingPlanesTexture=void 0)}if(this.length===0)return;if(!l(t)){let s=Kre(o,OUe);s.y*=2,i?(t=new Nt({context:n,width:s.x,height:s.y,pixelFormat:et.RGBA,pixelDatatype:He.FLOAT,sampler:on.NEAREST,flipY:!1}),this._float32View=new Float32Array(s.x*s.y*4)):(t=new Nt({context:n,width:s.x,height:s.y,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,sampler:on.NEAREST,flipY:!1}),this._uint8View=new Uint8Array(s.x*s.y*4)),this._clippingPlanesTexture=t,this._multipleDirtyPlanes=!0}let r=this._dirtyIndex;if(!(!this._multipleDirtyPlanes&&r===-1)){if(this._multipleDirtyPlanes)i?(Hre(this,0,this._planes.length),t.copyFrom({source:{width:t.width,height:t.height,arrayBufferView:this._float32View}})):(Vre(this,0,this._planes.length),t.copyFrom({source:{width:t.width,height:t.height,arrayBufferView:this._uint8View}}));else{let s=0,a=0;i?(a=Math.floor(r/t.width),s=Math.floor(r-a*t.width),Hre(this,r,r+1),t.copyFrom({source:{width:1,height:1,arrayBufferView:this._float32View},xOffset:s,yOffset:a})):(a=Math.floor(r*2/t.width),s=Math.floor(r*2-a*t.width),Vre(this,r,r+1),t.copyFrom({source:{width:2,height:1,arrayBufferView:this._uint8View},xOffset:s,yOffset:a}))}this._multipleDirtyPlanes=!1,this._dirtyIndex=-1}};var FUe=new R,Wre=new mn(d.UNIT_X,0);wc.prototype.computeIntersectionWithBoundingVolume=function(e,t){let n=this._planes,i=n.length,o=this.modelMatrix;l(t)&&(o=R.multiply(t,o,FUe));let r=nn.INSIDE;!this.unionClippingRegions&&i>0&&(r=nn.OUTSIDE);for(let s=0;s<i;++s){let a=n[s];mn.transform(a,o,Wre);let c=e.intersectPlane(Wre);if(c===nn.INTERSECTING)r=c;else if(this._testIntersection(c))return c}return r};wc.setOwner=function(e,t,n){e!==t[n]&&(t[n]=t[n]&&t[n].destroy(),l(e)&&(e._owner=t,t[n]=e))};wc.useFloatTexture=function(e){return e.floatingPointTexture};wc.getTextureResolution=function(e,t,n){let i=e.texture;if(l(i))return n.x=i.width,n.y=i.height,n;let o=wc.useFloatTexture(t)?e.length:e.length*2,r=Kre(o,n);return r.y*=2,r};wc.prototype.isDestroyed=function(){return!1};wc.prototype.destroy=function(){return this._clippingPlanesTexture=this._clippingPlanesTexture&&this._clippingPlanesTexture.destroy(),ue(this)};var Vs=wc;function xW(e,t,n=2){let i=t&&t.length,o=i?t[0]*n:e.length,r=Jre(e,0,o,n,!0),s=[];if(!r||r.next===r.prev)return s;let a,c,u;if(i&&(r=zUe(e,t,r,n)),e.length>80*n){a=e[0],c=e[1];let f=a,h=c;for(let A=n;A<o;A+=n){let g=e[A],m=e[A+1];g<a&&(a=g),m<c&&(c=m),g>f&&(f=g),m>h&&(h=m)}u=Math.max(f-a,h-c),u=u!==0?32767/u:0}return dB(r,s,n,a,c,u,0),s}function Jre(e,t,n,i,o){let r;if(o===$Ue(e,t,n,i)>0)for(let s=t;s<n;s+=i)r=Xre(s/i|0,e[s],e[s+1],r);else for(let s=n-i;s>=t;s-=i)r=Xre(s/i|0,e[s],e[s+1],r);return r&&rx(r,r.next)&&(mB(r),r=r.next),r}function VC(e,t){if(!e)return e;t||(t=e);let n=e,i;do if(i=!1,!n.steiner&&(rx(n,n.next)||Xr(n.prev,n,n.next)===0)){if(mB(n),n=t=n.prev,n===n.next)break;i=!0}else n=n.next;while(i||n!==t);return t}function dB(e,t,n,i,o,r,s){if(!e)return;!s&&r&&YUe(e,i,o,r);let a=e;for(;e.prev!==e.next;){let c=e.prev,u=e.next;if(r?kUe(e,i,o,r):QUe(e)){t.push(c.i,e.i,u.i),mB(e),e=u.next,a=u.next;continue}if(e=u,e===a){s?s===1?(e=UUe(VC(e),t),dB(e,t,n,i,o,r,2)):s===2&&GUe(e,t,n,i,o,r):dB(VC(e),t,n,i,o,r,1);break}}}function QUe(e){let t=e.prev,n=e,i=e.next;if(Xr(t,n,i)>=0)return!1;let o=t.x,r=n.x,s=i.x,a=t.y,c=n.y,u=i.y,f=Math.min(o,r,s),h=Math.min(a,c,u),A=Math.max(o,r,s),g=Math.max(a,c,u),m=i.next;for(;m!==t;){if(m.x>=f&&m.x<=A&&m.y>=h&&m.y<=g&&fB(o,a,r,c,s,u,m.x,m.y)&&Xr(m.prev,m,m.next)>=0)return!1;m=m.next}return!0}function kUe(e,t,n,i){let o=e.prev,r=e,s=e.next;if(Xr(o,r,s)>=0)return!1;let a=o.x,c=r.x,u=s.x,f=o.y,h=r.y,A=s.y,g=Math.min(a,c,u),m=Math.min(f,h,A),_=Math.max(a,c,u),y=Math.max(f,h,A),C=EW(g,m,t,n,i),E=EW(_,y,t,n,i),I=e.prevZ,b=e.nextZ;for(;I&&I.z>=C&&b&&b.z<=E;){if(I.x>=g&&I.x<=_&&I.y>=m&&I.y<=y&&I!==o&&I!==s&&fB(a,f,c,h,u,A,I.x,I.y)&&Xr(I.prev,I,I.next)>=0||(I=I.prevZ,b.x>=g&&b.x<=_&&b.y>=m&&b.y<=y&&b!==o&&b!==s&&fB(a,f,c,h,u,A,b.x,b.y)&&Xr(b.prev,b,b.next)>=0))return!1;b=b.nextZ}for(;I&&I.z>=C;){if(I.x>=g&&I.x<=_&&I.y>=m&&I.y<=y&&I!==o&&I!==s&&fB(a,f,c,h,u,A,I.x,I.y)&&Xr(I.prev,I,I.next)>=0)return!1;I=I.prevZ}for(;b&&b.z<=E;){if(b.x>=g&&b.x<=_&&b.y>=m&&b.y<=y&&b!==o&&b!==s&&fB(a,f,c,h,u,A,b.x,b.y)&&Xr(b.prev,b,b.next)>=0)return!1;b=b.nextZ}return!0}function UUe(e,t){let n=e;do{let i=n.prev,o=n.next.next;!rx(i,o)&&$re(i,n,n.next,o)&&hB(i,o)&&hB(o,i)&&(t.push(i.i,n.i,o.i),mB(n),mB(n.next),n=e=o),n=n.next}while(n!==e);return VC(n)}function GUe(e,t,n,i,o,r){let s=e;do{let a=s.next.next;for(;a!==s.prev;){if(s.i!==a.i&&XUe(s,a)){let c=ese(s,a);s=VC(s,s.next),c=VC(c,c.next),dB(s,t,n,i,o,r,0),dB(c,t,n,i,o,r,0);return}a=a.next}s=s.next}while(s!==e)}function zUe(e,t,n,i){let o=[];for(let r=0,s=t.length;r<s;r++){let a=t[r]*i,c=r<s-1?t[r+1]*i:e.length,u=Jre(e,a,c,i,!1);u===u.next&&(u.steiner=!0),o.push(KUe(u))}o.sort(VUe);for(let r=0;r<o.length;r++)n=HUe(o[r],n);return n}function VUe(e,t){let n=e.x-t.x;if(n===0&&(n=e.y-t.y,n===0)){let i=(e.next.y-e.y)/(e.next.x-e.x),o=(t.next.y-t.y)/(t.next.x-t.x);n=i-o}return n}function HUe(e,t){let n=WUe(e,t);if(!n)return t;let i=ese(n,e);return VC(i,i.next),VC(n,n.next)}function WUe(e,t){let n=t,i=e.x,o=e.y,r=-1/0,s;if(rx(e,n))return n;do{if(rx(e,n.next))return n.next;if(o<=n.y&&o>=n.next.y&&n.next.y!==n.y){let h=n.x+(o-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(h<=i&&h>r&&(r=h,s=n.x<n.next.x?n:n.next,h===i))return s}n=n.next}while(n!==t);if(!s)return null;let a=s,c=s.x,u=s.y,f=1/0;n=s;do{if(i>=n.x&&n.x>=c&&i!==n.x&&Zre(o<u?i:r,o,c,u,o<u?r:i,o,n.x,n.y)){let h=Math.abs(o-n.y)/(i-n.x);hB(n,e)&&(h<f||h===f&&(n.x>s.x||n.x===s.x&&jUe(s,n)))&&(s=n,f=h)}n=n.next}while(n!==a);return s}function jUe(e,t){return Xr(e.prev,e,t.prev)<0&&Xr(t.next,e,e.next)<0}function YUe(e,t,n,i){let o=e;do o.z===0&&(o.z=EW(o.x,o.y,t,n,i)),o.prevZ=o.prev,o.nextZ=o.next,o=o.next;while(o!==e);o.prevZ.nextZ=null,o.prevZ=null,qUe(o)}function qUe(e){let t,n=1;do{let i=e,o;e=null;let r=null;for(t=0;i;){t++;let s=i,a=0;for(let u=0;u<n&&(a++,s=s.nextZ,!!s);u++);let c=n;for(;a>0||c>0&&s;)a!==0&&(c===0||!s||i.z<=s.z)?(o=i,i=i.nextZ,a--):(o=s,s=s.nextZ,c--),r?r.nextZ=o:e=o,o.prevZ=r,r=o;i=s}r.nextZ=null,n*=2}while(t>1);return e}function EW(e,t,n,i,o){return e=(e-n)*o|0,t=(t-i)*o|0,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1}function KUe(e){let t=e,n=e;do(t.x<n.x||t.x===n.x&&t.y<n.y)&&(n=t),t=t.next;while(t!==e);return n}function Zre(e,t,n,i,o,r,s,a){return(o-s)*(t-a)>=(e-s)*(r-a)&&(e-s)*(i-a)>=(n-s)*(t-a)&&(n-s)*(r-a)>=(o-s)*(i-a)}function fB(e,t,n,i,o,r,s,a){return!(e===s&&t===a)&&Zre(e,t,n,i,o,r,s,a)}function XUe(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!JUe(e,t)&&(hB(e,t)&&hB(t,e)&&ZUe(e,t)&&(Xr(e.prev,e,t.prev)||Xr(e,t.prev,t))||rx(e,t)&&Xr(e.prev,e,e.next)>0&&Xr(t.prev,t,t.next)>0)}function Xr(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function rx(e,t){return e.x===t.x&&e.y===t.y}function $re(e,t,n,i){let o=$O(Xr(e,t,n)),r=$O(Xr(e,t,i)),s=$O(Xr(n,i,e)),a=$O(Xr(n,i,t));return!!(o!==r&&s!==a||o===0&&ZO(e,n,t)||r===0&&ZO(e,i,t)||s===0&&ZO(n,e,i)||a===0&&ZO(n,t,i))}function ZO(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function $O(e){return e>0?1:e<0?-1:0}function JUe(e,t){let n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&$re(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}function hB(e,t){return Xr(e.prev,e,e.next)<0?Xr(e,t,e.next)>=0&&Xr(e,e.prev,t)>=0:Xr(e,t,e.prev)<0||Xr(e,e.next,t)<0}function ZUe(e,t){let n=e,i=!1,o=(e.x+t.x)/2,r=(e.y+t.y)/2;do n.y>r!=n.next.y>r&&n.next.y!==n.y&&o<(n.next.x-n.x)*(r-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next;while(n!==e);return i}function ese(e,t){let n=IW(e.i,e.x,e.y),i=IW(t.i,t.x,t.y),o=e.next,r=t.prev;return e.next=t,t.prev=e,n.next=o,o.prev=n,i.next=n,n.prev=i,r.next=i,i.prev=r,i}function Xre(e,t,n,i){let o=IW(e,t,n);return i?(o.next=i.next,o.prev=i,i.next.prev=o,i.next=o):(o.prev=o,o.next=o),o}function mB(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function IW(e,t,n){return{i:e,x:t,y:n,prev:null,next:null,z:0,prevZ:null,nextZ:null,steiner:!1}}function $Ue(e,t,n,i){let o=0;for(let r=t,s=n-i;r<n;r+=i)o+=(e[s]-e[r])*(e[r+1]+e[s+1]),s=r;return o}var eGe=new d,tGe=new d,t_={};t_.computeArea2D=function(e){let t=e.length,n=0;for(let i=t-1,o=0;o<t;i=o++){let r=e[i],s=e[o];n+=r.x*s.y-s.x*r.y}return n*.5};t_.computeWindingOrder2D=function(e){return t_.computeArea2D(e)>0?Gs.COUNTER_CLOCKWISE:Gs.CLOCKWISE};t_.triangulate=function(e,t){let n=k.packArray(e);return xW(n,t,2)};var ose=new d,rse=new d,sse=new d,tse=new d,nse=new d,ise=new d,ip=new d,ase=new k,cse=new k,lse=new k,sx=new k;t_.computeSubdivision=function(e,t,n,i,o){o=o??D.RADIANS_PER_DEGREE;let r=l(i),s=n.slice(0),a,c=t.length,u=new Array(c*3),f=new Array(c*2),h=0,A=0;for(a=0;a<c;a++){let I=t[a];if(u[h++]=I.x,u[h++]=I.y,u[h++]=I.z,r){let b=i[a];f[A++]=b.x,f[A++]=b.y}}let g=[],m={},_=e.maximumRadius,y=D.chordLength(o,_),C=y*y;for(;s.length>0;){let I=s.pop(),b=s.pop(),S=s.pop(),B=d.fromArray(u,S*3,ose),v=d.fromArray(u,b*3,rse),P=d.fromArray(u,I*3,sse),N,L,p;r&&(N=k.fromArray(f,S*2,ase),L=k.fromArray(f,b*2,cse),p=k.fromArray(f,I*2,lse));let x=d.multiplyByScalar(d.normalize(B,tse),_,tse),T=d.multiplyByScalar(d.normalize(v,nse),_,nse),w=d.multiplyByScalar(d.normalize(P,ise),_,ise),M=d.magnitudeSquared(d.subtract(x,T,ip)),O=d.magnitudeSquared(d.subtract(T,w,ip)),U=d.magnitudeSquared(d.subtract(w,x,ip)),Q=Math.max(M,O,U),z,F,H;Q>C?M===Q?(z=`${Math.min(S,b)} ${Math.max(S,b)}`,a=m[z],l(a)||(F=d.add(B,v,ip),d.multiplyByScalar(F,.5,F),u.push(F.x,F.y,F.z),a=u.length/3-1,m[z]=a,r&&(H=k.add(N,L,sx),k.multiplyByScalar(H,.5,H),f.push(H.x,H.y))),s.push(S,a,I),s.push(a,b,I)):O===Q?(z=`${Math.min(b,I)} ${Math.max(b,I)}`,a=m[z],l(a)||(F=d.add(v,P,ip),d.multiplyByScalar(F,.5,F),u.push(F.x,F.y,F.z),a=u.length/3-1,m[z]=a,r&&(H=k.add(L,p,sx),k.multiplyByScalar(H,.5,H),f.push(H.x,H.y))),s.push(b,a,S),s.push(a,I,S)):U===Q&&(z=`${Math.min(I,S)} ${Math.max(I,S)}`,a=m[z],l(a)||(F=d.add(P,B,ip),d.multiplyByScalar(F,.5,F),u.push(F.x,F.y,F.z),a=u.length/3-1,m[z]=a,r&&(H=k.add(p,N,sx),k.multiplyByScalar(H,.5,H),f.push(H.x,H.y))),s.push(I,a,b),s.push(a,S,b)):(g.push(S),g.push(b),g.push(I))}let E={attributes:{position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:u})},indices:g,primitiveType:Me.TRIANGLES};return r&&(E.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:f})),new ht(E)};var nGe=new Ae,iGe=new Ae,oGe=new Ae,bW=new Ae;t_.computeRhumbLineSubdivision=function(e,t,n,i,o){o=o??D.RADIANS_PER_DEGREE;let r=l(i),s=n.slice(0),a,c=t.length,u=new Array(c*3),f=new Array(c*2),h=0,A=0;for(a=0;a<c;a++){let S=t[a];if(u[h++]=S.x,u[h++]=S.y,u[h++]=S.z,r){let B=i[a];f[A++]=B.x,f[A++]=B.y}}let g=[],m={},_=e.maximumRadius,y=D.chordLength(o,_),C=new Ic(void 0,void 0,e),E=new Ic(void 0,void 0,e),I=new Ic(void 0,void 0,e);for(;s.length>0;){let S=s.pop(),B=s.pop(),v=s.pop(),P=d.fromArray(u,v*3,ose),N=d.fromArray(u,B*3,rse),L=d.fromArray(u,S*3,sse),p,x,T;r&&(p=k.fromArray(f,v*2,ase),x=k.fromArray(f,B*2,cse),T=k.fromArray(f,S*2,lse));let w=e.cartesianToCartographic(P,nGe),M=e.cartesianToCartographic(N,iGe),O=e.cartesianToCartographic(L,oGe);C.setEndPoints(w,M);let U=C.surfaceDistance;E.setEndPoints(M,O);let Q=E.surfaceDistance;I.setEndPoints(O,w);let z=I.surfaceDistance,F=Math.max(U,Q,z),H,W,Z,Y,$;F>y?U===F?(H=`${Math.min(v,B)} ${Math.max(v,B)}`,a=m[H],l(a)||(W=C.interpolateUsingFraction(.5,bW),Z=(w.height+M.height)*.5,Y=d.fromRadians(W.longitude,W.latitude,Z,e,ip),u.push(Y.x,Y.y,Y.z),a=u.length/3-1,m[H]=a,r&&($=k.add(p,x,sx),k.multiplyByScalar($,.5,$),f.push($.x,$.y))),s.push(v,a,S),s.push(a,B,S)):Q===F?(H=`${Math.min(B,S)} ${Math.max(B,S)}`,a=m[H],l(a)||(W=E.interpolateUsingFraction(.5,bW),Z=(M.height+O.height)*.5,Y=d.fromRadians(W.longitude,W.latitude,Z,e,ip),u.push(Y.x,Y.y,Y.z),a=u.length/3-1,m[H]=a,r&&($=k.add(x,T,sx),k.multiplyByScalar($,.5,$),f.push($.x,$.y))),s.push(B,a,v),s.push(a,S,v)):z===F&&(H=`${Math.min(S,v)} ${Math.max(S,v)}`,a=m[H],l(a)||(W=I.interpolateUsingFraction(.5,bW),Z=(O.height+w.height)*.5,Y=d.fromRadians(W.longitude,W.latitude,Z,e,ip),u.push(Y.x,Y.y,Y.z),a=u.length/3-1,m[H]=a,r&&($=k.add(T,p,sx),k.multiplyByScalar($,.5,$),f.push($.x,$.y))),s.push(S,a,B),s.push(a,v,B)):(g.push(v),g.push(B),g.push(S))}let b={attributes:{position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:u})},indices:g,primitiveType:Me.TRIANGLES};return r&&(b.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:f})),new ht(b)};t_.scaleToGeodeticHeight=function(e,t,n,i){n=n??te.default;let o=eGe,r=tGe;if(t=t??0,i=i??!0,l(e)){let s=e.length;for(let a=0;a<s;a+=3)d.fromArray(e,a,r),i&&(r=n.scaleToGeodeticSurface(r,r)),t!==0&&(o=n.geodeticSurfaceNormal(r,o),d.multiplyByScalar(o,t,o),d.add(r,o,r)),e[a]=r.x,e[a+1]=r.y,e[a+2]=r.z}return e};var xi=t_;function n_(){this._array=[],this._offset=0,this._length=0}Object.defineProperties(n_.prototype,{length:{get:function(){return this._length}}});n_.prototype.enqueue=function(e){this._array.push(e),this._length++};n_.prototype.dequeue=function(){if(this._length===0)return;let e=this._array,t=this._offset,n=e[t];return e[t]=void 0,t++,t>10&&t*2>e.length&&(this._array=e.slice(t),t=0),this._offset=t,this._length--,n};n_.prototype.peek=function(){if(this._length!==0)return this._array[this._offset]};n_.prototype.contains=function(e){return this._array.indexOf(e)!==-1};n_.prototype.clear=function(){this._array.length=this._offset=this._length=0};n_.prototype.sort=function(e){this._offset>0&&(this._array=this._array.slice(this._offset),this._offset=0),this._array.sort(e)};var HC=n_;var or={};or.computeHierarchyPackedLength=function(e,t){let n=0,i=[e];for(;i.length>0;){let o=i.pop();if(!l(o))continue;n+=2;let r=o.positions,s=o.holes;if(l(r)&&r.length>0&&(n+=r.length*t.packedLength),l(s)){let a=s.length;for(let c=0;c<a;++c)i.push(s[c])}}return n};or.packPolygonHierarchy=function(e,t,n,i){let o=[e];for(;o.length>0;){let r=o.pop();if(!l(r))continue;let s=r.positions,a=r.holes;if(t[n++]=l(s)?s.length:0,t[n++]=l(a)?a.length:0,l(s)){let c=s.length;for(let u=0;u<c;++u,n+=i.packedLength)i.pack(s[u],t,n)}if(l(a)){let c=a.length;for(let u=0;u<c;++u)o.push(a[u])}}return n};or.unpackPolygonHierarchy=function(e,t,n){let i=e[t++],o=e[t++],r=new Array(i),s=o>0?new Array(o):void 0;for(let a=0;a<i;++a,t+=n.packedLength)r[a]=n.unpack(e,t);for(let a=0;a<o;++a)s[a]=or.unpackPolygonHierarchy(e,t,n),t=s[a].startingIndex,delete s[a].startingIndex;return{positions:r,holes:s,startingIndex:t}};var WC=new k;function dse(e,t,n,i){return k.subtract(t,e,WC),k.multiplyByScalar(WC,n/i,WC),k.add(e,WC,WC),[WC.x,WC.y]}var i_=new d;function rGe(e,t,n,i){return d.subtract(t,e,i_),d.multiplyByScalar(i_,n/i,i_),d.add(e,i_,i_),[i_.x,i_.y,i_.z]}or.subdivideLineCount=function(e,t,n){let o=d.distance(e,t)/n,r=Math.max(0,Math.ceil(D.log2(o)));return Math.pow(2,r)};var tF=new Ae,nF=new Ae,sGe=new Ae,aGe=new d,eF=new Ic;or.subdivideRhumbLineCount=function(e,t,n,i){let o=e.cartesianToCartographic(t,tF),r=e.cartesianToCartographic(n,nF),a=new Ic(o,r,e).surfaceDistance/i,c=Math.max(0,Math.ceil(D.log2(a)));return Math.pow(2,c)};or.subdivideTexcoordLine=function(e,t,n,i,o,r){let s=or.subdivideLineCount(n,i,o),a=k.distance(e,t),c=a/s,u=r;u.length=s*2;let f=0;for(let h=0;h<s;h++){let A=dse(e,t,h*c,a);u[f++]=A[0],u[f++]=A[1]}return u};or.subdivideLine=function(e,t,n,i){let o=or.subdivideLineCount(e,t,n),r=d.distance(e,t),s=r/o;l(i)||(i=[]);let a=i;a.length=o*3;let c=0;for(let u=0;u<o;u++){let f=rGe(e,t,u*s,r);a[c++]=f[0],a[c++]=f[1],a[c++]=f[2]}return a};or.subdivideTexcoordRhumbLine=function(e,t,n,i,o,r,s){let a=n.cartesianToCartographic(i,tF),c=n.cartesianToCartographic(o,nF);eF.setEndPoints(a,c);let u=eF.surfaceDistance/r,f=Math.max(0,Math.ceil(D.log2(u))),h=Math.pow(2,f),A=k.distance(e,t),g=A/h,m=s;m.length=h*2;let _=0;for(let y=0;y<h;y++){let C=dse(e,t,y*g,A);m[_++]=C[0],m[_++]=C[1]}return m};or.subdivideRhumbLine=function(e,t,n,i,o){let r=e.cartesianToCartographic(t,tF),s=e.cartesianToCartographic(n,nF),a=new Ic(r,s,e);if(l(o)||(o=[]),a.surfaceDistance<=i)return o.length=3,o[0]=t.x,o[1]=t.y,o[2]=t.z,o;let c=a.surfaceDistance/i,u=Math.max(0,Math.ceil(D.log2(c))),f=Math.pow(2,u),h=a.surfaceDistance/f,A=o;A.length=f*3;let g=0;for(let m=0;m<f;m++){let _=a.interpolateUsingSurfaceDistance(m*h,sGe),y=e.cartographicToCartesian(_,aGe);A[g++]=y.x,A[g++]=y.y,A[g++]=y.z}return A};var cGe=new d,lGe=new d,uGe=new d,fGe=new d;or.scaleToGeodeticHeightExtruded=function(e,t,n,i,o){i=i??te.default;let r=cGe,s=lGe,a=uGe,c=fGe;if(l(e)&&l(e.attributes)&&l(e.attributes.position)){let u=e.attributes.position.values,f=u.length/2;for(let h=0;h<f;h+=3)d.fromArray(u,h,a),i.geodeticSurfaceNormal(a,r),c=i.scaleToGeodeticSurface(a,c),s=d.multiplyByScalar(r,n,s),s=d.add(c,s,s),u[h+f]=s.x,u[h+1+f]=s.y,u[h+2+f]=s.z,o&&(c=d.clone(a,c)),s=d.multiplyByScalar(r,t,s),s=d.add(c,s,s),u[h]=s.x,u[h+1]=s.y,u[h+2]=s.z}return e};or.polygonOutlinesFromHierarchy=function(e,t,n){let i=[],o=new HC;o.enqueue(e);let r,s,a;for(;o.length!==0;){let c=o.dequeue(),u=c.positions;if(t)for(a=u.length,r=0;r<a;r++)n.scaleToGeodeticSurface(u[r],u[r]);if(u=No(u,d.equalsEpsilon,!0),u.length<3)continue;let f=c.holes?c.holes.length:0;for(r=0;r<f;r++){let h=c.holes[r],A=h.positions;if(t)for(a=A.length,s=0;s<a;++s)n.scaleToGeodeticSurface(A[s],A[s]);if(A=No(A,d.equalsEpsilon,!0),A.length<3)continue;i.push(A);let g=0;for(l(h.holes)&&(g=h.holes.length),s=0;s<g;s++)o.enqueue(h.holes[s])}i.push(u)}return i};var dGe=new Ae;function hGe(e,t,n){let i=n.cartesianToCartographic(e,tF),o=n.cartesianToCartographic(t,nF);if(Math.sign(i.latitude)===Math.sign(o.latitude))return;eF.setEndPoints(i,o);let r=eF.findIntersectionWithLatitude(0,dGe);if(!l(r))return;let s=Math.min(i.longitude,o.longitude),a=Math.max(i.longitude,o.longitude);if(Math.abs(a-s)>D.PI){let c=s;s=a,a=c}if(!(r.longitude<s||r.longitude>a))return n.cartographicToCartesian(r)}function mGe(e,t,n,i){if(i===un.RHUMB)return hGe(e,t,n);let o=Ai.lineSegmentPlane(e,t,mn.ORIGIN_XY_PLANE);if(l(o))return n.scaleToGeodeticSurface(o,o)}var AGe=new Ae;function pGe(e,t,n){let i=[],o,r,s,a,c,u=0;for(;u<e.length;){o=e[u],r=e[(u+1)%e.length],s=D.sign(o.z),a=D.sign(r.z);let f=h=>t.cartesianToCartographic(h,AGe).longitude;if(s===0)i.push({position:u,type:s,visited:!1,next:a,theta:f(o)});else if(a!==0){if(c=mGe(o,r,t,n),++u,!l(c))continue;e.splice(u,0,c),i.push({position:u,type:s,visited:!1,next:a,theta:f(c)})}++u}return i}function hse(e,t,n,i,o,r,s){let a=[],c=r,u=h=>A=>A.position===h,f=[];do{let h=n[c];a.push(h);let A=i.findIndex(u(c)),g=i[A];if(!l(g)){++c;continue}let{visited:m,type:_,next:y}=g;if(g.visited=!0,_===0){if(y===0){let b=i[A-(s?1:-1)];if(b?.position===c+1)b.visited=!0;else{++c;continue}}if(!m&&s&&y>0||r===c&&!s&&y<0){++c;continue}}if(!(s?_>=0:_<=0)){++c;continue}m||f.push(c);let E=A+(s?1:-1),I=i[E];if(!l(I)){++c;continue}c=I.position}while(c<n.length&&c>=0&&c!==r&&a.length<n.length);e.splice(t,o,a);for(let h of f)t=hse(e,++t,n,i,0,h,!s);return t}or.splitPolygonsOnEquator=function(e,t,n,i){l(i)||(i=[]),i.splice(0,0,...e),i.length=e.length;let o=0;for(;o<i.length;){let r=i[o],s=r.slice();if(r.length<3){i[o]=s,++o;continue}let a=pGe(s,t,n);if(s.length===r.length||a.length<=1){i[o]=s,++o;continue}a.sort((u,f)=>u.theta-f.theta);let c=s[0].z>=0;o=hse(i,o,s,a,1,0,c)}return i};or.polygonsFromHierarchy=function(e,t,n,i,o,r){let s=[],a=[],c=new HC;c.enqueue(e);let u=l(r);for(;c.length!==0;){let f=c.dequeue(),h=f.positions,A=f.holes,g,m;if(i)for(m=h.length,g=0;g<m;g++)o.scaleToGeodeticSurface(h[g],h[g]);if(t||(h=No(h,d.equalsEpsilon,!0)),h.length<3)continue;let _=n(h);if(!l(_))continue;let y=[],C=xi.computeWindingOrder2D(_);if(C===Gs.CLOCKWISE&&(_.reverse(),h=h.slice().reverse()),u){u=!1;let B=[h];if(B=r(B,B),B.length>1){for(let v of B)c.enqueue(new xc(v,A));continue}}let E=h.slice(),I=l(A)?A.length:0,b=[],S;for(g=0;g<I;g++){let B=A[g],v=B.positions;if(i)for(m=v.length,S=0;S<m;++S)o.scaleToGeodeticSurface(v[S],v[S]);if(t||(v=No(v,d.equalsEpsilon,!0)),v.length<3)continue;let P=n(v);if(!l(P))continue;C=xi.computeWindingOrder2D(P),C===Gs.CLOCKWISE&&(P.reverse(),v=v.slice().reverse()),b.push(v),y.push(E.length),E=E.concat(v),_=_.concat(P);let N=0;for(l(B.holes)&&(N=B.holes.length),S=0;S<N;S++)c.enqueue(B.holes[S])}s.push({outerRing:h,holes:b}),a.push({positions:E,positions2D:_,holes:y})}return{hierarchy:s,polygons:a}};var gGe=new k,_Ge=new d,yGe=new Le,CGe=new J;or.computeBoundingRectangle=function(e,t,n,i,o){let r=Le.fromAxisAngle(e,i,yGe),s=J.fromQuaternion(r,CGe),a=Number.POSITIVE_INFINITY,c=Number.NEGATIVE_INFINITY,u=Number.POSITIVE_INFINITY,f=Number.NEGATIVE_INFINITY,h=n.length;for(let A=0;A<h;++A){let g=d.clone(n[A],_Ge);J.multiplyByVector(s,g,g);let m=t(g,gGe);l(m)&&(a=Math.min(a,m.x),c=Math.max(c,m.x),u=Math.min(u,m.y),f=Math.max(f,m.y))}return o.x=a,o.y=u,o.width=c-a,o.height=f-u,o};or.createGeometryFromPositions=function(e,t,n,i,o,r,s){let a=xi.triangulate(t.positions2D,t.holes);a.length<3&&(a=[0,1,2]);let c=t.positions,u=l(n),f=u?n.positions:void 0;if(o){let h=c.length,A=new Array(h*3),g=0;for(let y=0;y<h;y++){let C=c[y];A[g++]=C.x,A[g++]=C.y,A[g++]=C.z}let m={attributes:{position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:A})},indices:a,primitiveType:Me.TRIANGLES};u&&(m.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:k.packArray(f)}));let _=new ht(m);return r.normal?jn.computeNormal(_):_}if(s===un.GEODESIC)return xi.computeSubdivision(e,c,a,f,i);if(s===un.RHUMB)return xi.computeRhumbLineSubdivision(e,c,a,f,i)};var use=[],fse=[],EGe=new d,IGe=new d;or.computeWallGeometry=function(e,t,n,i,o,r){let s,a,c,u,f,h,A,g,m,_=e.length,y=0,C=0,E=l(t),I=E?t.positions:void 0;if(o)for(a=_*3*2,s=new Array(a*2),E&&(m=_*2*2,g=new Array(m*2)),c=0;c<_;c++)u=e[c],f=e[(c+1)%_],s[y]=s[y+a]=u.x,++y,s[y]=s[y+a]=u.y,++y,s[y]=s[y+a]=u.z,++y,s[y]=s[y+a]=f.x,++y,s[y]=s[y+a]=f.y,++y,s[y]=s[y+a]=f.z,++y,E&&(h=I[c],A=I[(c+1)%_],g[C]=g[C+m]=h.x,++C,g[C]=g[C+m]=h.y,++C,g[C]=g[C+m]=A.x,++C,g[C]=g[C+m]=A.y,++C);else{let P=D.chordLength(i,n.maximumRadius),N=0;if(r===un.GEODESIC)for(c=0;c<_;c++)N+=or.subdivideLineCount(e[c],e[(c+1)%_],P);else if(r===un.RHUMB)for(c=0;c<_;c++)N+=or.subdivideRhumbLineCount(n,e[c],e[(c+1)%_],P);for(a=(N+_)*3,s=new Array(a*2),E&&(m=(N+_)*2,g=new Array(m*2)),c=0;c<_;c++){u=e[c],f=e[(c+1)%_];let L,p;E&&(h=I[c],A=I[(c+1)%_]),r===un.GEODESIC?(L=or.subdivideLine(u,f,P,fse),E&&(p=or.subdivideTexcoordLine(h,A,u,f,P,use))):r===un.RHUMB&&(L=or.subdivideRhumbLine(n,u,f,P,fse),E&&(p=or.subdivideTexcoordRhumbLine(h,A,n,u,f,P,use)));let x=L.length;for(let T=0;T<x;++T,++y)s[y]=L[T],s[y+a]=L[T];if(s[y]=f.x,s[y+a]=f.x,++y,s[y]=f.y,s[y+a]=f.y,++y,s[y]=f.z,s[y+a]=f.z,++y,E){let T=p.length;for(let w=0;w<T;++w,++C)g[C]=p[w],g[C+m]=p[w];g[C]=A.x,g[C+m]=A.x,++C,g[C]=A.y,g[C+m]=A.y,++C}}}_=s.length;let b=Fe.createTypedArray(_/3,_-e.length*6),S=0;for(_/=6,c=0;c<_;c++){let P=c,N=P+1,L=P+_,p=L+1;u=d.fromArray(s,P*3,EGe),f=d.fromArray(s,N*3,IGe),!d.equalsEpsilon(u,f,D.EPSILON10,D.EPSILON10)&&(b[S++]=P,b[S++]=L,b[S++]=N,b[S++]=N,b[S++]=L,b[S++]=p)}let B={attributes:new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s})}),indices:b,primitiveType:Me.TRIANGLES};return E&&(B.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:g})),new ht(B)};var $n=or;function Jr(e,t){this.position=e,l(this.position)||(this.position=new k),this.tangentPlane=t,l(this.tangentPlane)||(this.tangentPlane=Jr.NORTH_POLE_TANGENT_PLANE)}Object.defineProperties(Jr.prototype,{ellipsoid:{get:function(){return this.tangentPlane.ellipsoid}},x:{get:function(){return this.position.x}},y:{get:function(){return this.position.y}},conformalLatitude:{get:function(){let e=k.magnitude(this.position),t=2*this.ellipsoid.maximumRadius;return this.tangentPlane.plane.normal.z*(D.PI_OVER_TWO-2*Math.atan2(e,t))}},longitude:{get:function(){let e=D.PI_OVER_TWO+Math.atan2(this.y,this.x);return e>Math.PI&&(e-=D.TWO_PI),e}}});var ax=new Ae,xGe=new d;Jr.prototype.getLatitude=function(e){l(e)||(e=te.default),ax.latitude=this.conformalLatitude,ax.longitude=this.longitude,ax.height=0;let t=this.ellipsoid.cartographicToCartesian(ax,xGe);return e.cartesianToCartographic(t,ax),ax.latitude};var bGe=new In,TGe=new d,SGe=new d;Jr.fromCartesian=function(e,t){let n=D.signNotZero(e.z),i=Jr.NORTH_POLE_TANGENT_PLANE,o=Jr.SOUTH_POLE;n<0&&(i=Jr.SOUTH_POLE_TANGENT_PLANE,o=Jr.NORTH_POLE);let r=bGe;r.origin=i.ellipsoid.scaleToGeocentricSurface(e,r.origin),r.direction=d.subtract(r.origin,o,TGe),d.normalize(r.direction,r.direction);let s=Ai.rayPlane(r,i.plane,SGe),a=d.subtract(s,o,s),c=d.dot(i.xAxis,a),u=n*d.dot(i.yAxis,a);return l(t)?(t.position=new k(c,u),t.tangentPlane=i,t):new Jr(new k(c,u),i)};Jr.fromCartesianArray=function(e,t){let n=e.length;l(t)?t.length=n:t=new Array(n);for(let i=0;i<n;i++)t[i]=Jr.fromCartesian(e[i],t[i]);return t};Jr.clone=function(e,t){if(l(e))return l(t)?(t.position=e.position,t.tangentPlane=e.tangentPlane,t):new Jr(e.position,e.tangentPlane)};Jr.HALF_UNIT_SPHERE=Object.freeze(new te(.5,.5,.5));Jr.NORTH_POLE=Object.freeze(new d(0,0,.5));Jr.SOUTH_POLE=Object.freeze(new d(0,0,-.5));Jr.NORTH_POLE_TANGENT_PLANE=Object.freeze(new xs(Jr.NORTH_POLE,Jr.HALF_UNIT_SPHERE));Jr.SOUTH_POLE_TANGENT_PLANE=Object.freeze(new xs(Jr.SOUTH_POLE,Jr.HALF_UNIT_SPHERE));var sl=Jr;var wGe=new Ae,mse=new Ae;function BGe(e,t,n,i){let r=i.cartesianToCartographic(e,wGe).height,s=i.cartesianToCartographic(t,mse);s.height=r,i.cartographicToCartesian(s,t);let a=i.cartesianToCartographic(n,mse);a.height=r-100,i.cartographicToCartesian(a,n)}var Ase=new Xe,DGe=new d,vGe=new d,PGe=new d,RGe=new d,MGe=new d,NGe=new d,iF=new d,Im=new d,cx=new d,LGe=new k,OGe=new k,FGe=new d,pse=new Le,QGe=new J,kGe=new J;function TW(e){let t=e.vertexFormat,n=e.geometry,i=e.shadowVolume,o=n.attributes.position.values,r=l(n.attributes.st)?n.attributes.st.values:void 0,s=o.length,a=e.wall,c=e.top||a,u=e.bottom||a;if(t.st||t.normal||t.tangent||t.bitangent||i){let f=e.boundingRectangle,h=e.rotationAxis,A=e.projectTo2d,g=e.ellipsoid,m=e.stRotation,_=e.perPositionHeight,y=LGe;y.x=f.x,y.y=f.y;let C=t.st?new Float32Array(2*(s/3)):void 0,E;t.normal&&(_&&c&&!a?E=n.attributes.normal.values:E=new Float32Array(s));let I=t.tangent?new Float32Array(s):void 0,b=t.bitangent?new Float32Array(s):void 0,S=i?new Float32Array(s):void 0,B=0,v=0,P=vGe,N=PGe,L=RGe,p=!0,x=QGe,T=kGe;if(m!==0){let O=Le.fromAxisAngle(h,m,pse);x=J.fromQuaternion(O,x),O=Le.fromAxisAngle(h,-m,pse),T=J.fromQuaternion(O,T)}else x=J.clone(J.IDENTITY,x),T=J.clone(J.IDENTITY,T);let w=0,M=0;c&&u&&(w=s/2,M=s/3,s/=2);for(let O=0;O<s;O+=3){let U=d.fromArray(o,O,FGe);if(t.st&&!l(r)){let Q=J.multiplyByVector(x,U,DGe);Q=g.scaleToGeodeticSurface(Q,Q);let z=A([Q],OGe)[0];k.subtract(z,y,z);let F=D.clamp(z.x/f.width,0,1),H=D.clamp(z.y/f.height,0,1);u&&(C[B+M]=F,C[B+1+M]=H),c&&(C[B]=F,C[B+1]=H),B+=2}if(t.normal||t.tangent||t.bitangent||i){let Q=v+1,z=v+2;if(a){if(O+3<s){let F=d.fromArray(o,O+3,MGe);if(p){let H=d.fromArray(o,O+s,NGe);_&&BGe(U,F,H,g),d.subtract(F,U,F),d.subtract(H,U,H),P=d.normalize(d.cross(H,F,P),P),p=!1}d.equalsEpsilon(F,U,D.EPSILON10)&&(p=!0)}(t.tangent||t.bitangent)&&(L=g.geodeticSurfaceNormal(U,L),t.tangent&&(N=d.normalize(d.cross(L,P,N),N)))}else P=g.geodeticSurfaceNormal(U,P),(t.tangent||t.bitangent)&&(_&&(iF=d.fromArray(E,v,iF),Im=d.cross(d.UNIT_Z,iF,Im),Im=d.normalize(J.multiplyByVector(T,Im,Im),Im),t.bitangent&&(cx=d.normalize(d.cross(iF,Im,cx),cx))),N=d.cross(d.UNIT_Z,P,N),N=d.normalize(J.multiplyByVector(T,N,N),N),t.bitangent&&(L=d.normalize(d.cross(P,N,L),L)));t.normal&&(e.wall?(E[v+w]=P.x,E[Q+w]=P.y,E[z+w]=P.z):u&&(E[v+w]=-P.x,E[Q+w]=-P.y,E[z+w]=-P.z),(c&&!_||a)&&(E[v]=P.x,E[Q]=P.y,E[z]=P.z)),i&&(a&&(P=g.geodeticSurfaceNormal(U,P)),S[v+w]=-P.x,S[Q+w]=-P.y,S[z+w]=-P.z),t.tangent&&(e.wall?(I[v+w]=N.x,I[Q+w]=N.y,I[z+w]=N.z):u&&(I[v+w]=-N.x,I[Q+w]=-N.y,I[z+w]=-N.z),c&&(_?(I[v]=Im.x,I[Q]=Im.y,I[z]=Im.z):(I[v]=N.x,I[Q]=N.y,I[z]=N.z))),t.bitangent&&(u&&(b[v+w]=L.x,b[Q+w]=L.y,b[z+w]=L.z),c&&(_?(b[v]=cx.x,b[Q]=cx.y,b[z]=cx.z):(b[v]=L.x,b[Q]=L.y,b[z]=L.z))),v+=3}}t.st&&!l(r)&&(n.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:C})),t.normal&&(n.attributes.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:E})),t.tangent&&(n.attributes.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:I})),t.bitangent&&(n.attributes.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:b})),i&&(n.attributes.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:S}))}if(e.extrude&&l(e.offsetAttribute)){let f=o.length/3,h=new Uint8Array(f);if(e.offsetAttribute===hn.TOP)c&&u||a?h=h.fill(1,0,f/2):c&&(h=h.fill(1));else{let A=e.offsetAttribute===hn.NONE?0:1;h=h.fill(A)}n.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}return n}var gse=[];function UGe(e,t,n,i,o,r,s,a,c,u){let f={walls:[]},h;if(s||a){let E=$n.createGeometryFromPositions(e,t,n,i,r,c,u),I=E.attributes.position.values,b=E.indices,S,B;if(s&&a){let v=I.concat(I);S=v.length/3,B=Fe.createTypedArray(S,b.length*2),B.set(b);let P=b.length,N=S/2;for(h=0;h<P;h+=3){let L=B[h]+N,p=B[h+1]+N,x=B[h+2]+N;B[h+P]=x,B[h+1+P]=p,B[h+2+P]=L}if(E.attributes.position.values=v,r&&c.normal){let L=E.attributes.normal.values;E.attributes.normal.values=new Float32Array(v.length),E.attributes.normal.values.set(L)}if(c.st&&l(n)){let L=E.attributes.st.values;E.attributes.st.values=new Float32Array(S*2),E.attributes.st.values=L.concat(L)}E.indices=B}else if(a){for(S=I.length/3,B=Fe.createTypedArray(S,b.length),h=0;h<b.length;h+=3)B[h]=b[h+2],B[h+1]=b[h+1],B[h+2]=b[h];E.indices=B}f.topAndBottom=new Rt({geometry:E})}let A=o.outerRing,g=xs.fromPoints(A,e),m=g.projectPointsOntoPlane(A,gse),_=xi.computeWindingOrder2D(m);_===Gs.CLOCKWISE&&(A=A.slice().reverse());let y=$n.computeWallGeometry(A,n,e,i,r,u);f.walls.push(new Rt({geometry:y}));let C=o.holes;for(h=0;h<C.length;h++){let E=C[h];m=g.projectPointsOntoPlane(E,gse),_=xi.computeWindingOrder2D(m),_===Gs.COUNTER_CLOCKWISE&&(E=E.slice().reverse()),y=$n.computeWallGeometry(E,n,e,i,r,u),f.walls.push(new Rt({geometry:y}))}return f}function Of(e){let t=e.polygonHierarchy,n=e.vertexFormat??Pe.DEFAULT,i=e.ellipsoid??te.default,o=e.granularity??D.RADIANS_PER_DEGREE,r=e.stRotation??0,s=e.textureCoordinates,a=e.perPositionHeight??!1,c=a&&l(e.extrudedHeight),u=e.height??0,f=e.extrudedHeight??u;if(!c){let h=Math.max(u,f);f=Math.min(u,f),u=h}this._vertexFormat=Pe.clone(n),this._ellipsoid=te.clone(i),this._granularity=o,this._stRotation=r,this._height=u,this._extrudedHeight=f,this._closeTop=e.closeTop??!0,this._closeBottom=e.closeBottom??!0,this._polygonHierarchy=t,this._perPositionHeight=a,this._perPositionHeightExtrude=c,this._shadowVolume=e.shadowVolume??!1,this._workerName="createPolygonGeometry",this._offsetAttribute=e.offsetAttribute,this._arcType=e.arcType??un.GEODESIC,this._rectangle=void 0,this._textureCoordinateRotationPoints=void 0,this._textureCoordinates=s,this.packedLength=$n.computeHierarchyPackedLength(t,d)+te.packedLength+Pe.packedLength+(s?$n.computeHierarchyPackedLength(s,k):1)+12}Of.fromPositions=function(e){e=e??V.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions},height:e.height,extrudedHeight:e.extrudedHeight,vertexFormat:e.vertexFormat,stRotation:e.stRotation,ellipsoid:e.ellipsoid,granularity:e.granularity,perPositionHeight:e.perPositionHeight,closeTop:e.closeTop,closeBottom:e.closeBottom,offsetAttribute:e.offsetAttribute,arcType:e.arcType,textureCoordinates:e.textureCoordinates};return new Of(t)};Of.pack=function(e,t,n){return n=n??0,n=$n.packPolygonHierarchy(e._polygonHierarchy,t,n,d),te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._granularity,t[n++]=e._stRotation,t[n++]=e._perPositionHeightExtrude?1:0,t[n++]=e._perPositionHeight?1:0,t[n++]=e._closeTop?1:0,t[n++]=e._closeBottom?1:0,t[n++]=e._shadowVolume?1:0,t[n++]=e._offsetAttribute??-1,t[n++]=e._arcType,l(e._textureCoordinates)?n=$n.packPolygonHierarchy(e._textureCoordinates,t,n,k):t[n++]=-1,t[n++]=e.packedLength,t};var GGe=te.clone(te.UNIT_SPHERE),zGe=new Pe,VGe={polygonHierarchy:{}};Of.unpack=function(e,t,n){t=t??0;let i=$n.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=te.unpack(e,t,GGe);t+=te.packedLength;let r=Pe.unpack(e,t,zGe);t+=Pe.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++]===1,h=e[t++]===1,A=e[t++]===1,g=e[t++]===1,m=e[t++]===1,_=e[t++],y=e[t++],C=e[t]===-1?void 0:$n.unpackPolygonHierarchy(e,t,k);l(C)?(t=C.startingIndex,delete C.startingIndex):t++;let E=e[t++];return l(n)||(n=new Of(VGe)),n._polygonHierarchy=i,n._ellipsoid=te.clone(o,n._ellipsoid),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._height=s,n._extrudedHeight=a,n._granularity=c,n._stRotation=u,n._perPositionHeightExtrude=f,n._perPositionHeight=h,n._closeTop=A,n._closeBottom=g,n._shadowVolume=m,n._offsetAttribute=_===-1?void 0:_,n._arcType=y,n._textureCoordinates=C,n.packedLength=E,n};var HGe=new k,WGe=new k,jGe=new sl;function _se(e,t,n,i,o,r){let s=e.longitude,a=s>=0?s:s+D.TWO_PI;o.westOverIdl=Math.min(o.westOverIdl,a),o.eastOverIdl=Math.max(o.eastOverIdl,a),r.west=Math.min(r.west,s),r.east=Math.max(r.east,s);let c=e.getLatitude(n),u=c;if(r.south=Math.min(r.south,c),r.north=Math.max(r.north,c),i!==un.RHUMB){let A=k.subtract(t.position,e.position,HGe),g=k.dot(t.position,A)/k.dot(A,A);if(g>0&&g<1){let m=k.add(t.position,k.multiplyByScalar(A,-g,A),WGe),_=sl.clone(t,jGe);_.position=m;let y=_.getLatitude(n);r.south=Math.min(r.south,y),r.north=Math.max(r.north,y),Math.abs(c)>Math.abs(y)&&(u=y)}}let f=t.x*e.y-e.x*t.y,h=Math.sign(f);h!==0&&(h*=k.angleBetween(t.position,e.position)),u>=0&&(o.northAngle+=h),u<=0&&(o.southAngle+=h)}var yse=new sl,YGe=new sl,Lf={northAngle:0,southAngle:0,westOverIdl:0,eastOverIdl:0};Of.computeRectangleFromPositions=function(e,t,n,i){if(l(i)||(i=new ae),e.length<3)return i;i.west=Number.POSITIVE_INFINITY,i.east=Number.NEGATIVE_INFINITY,i.south=Number.POSITIVE_INFINITY,i.north=Number.NEGATIVE_INFINITY,Lf.northAngle=0,Lf.southAngle=0,Lf.westOverIdl=Number.POSITIVE_INFINITY,Lf.eastOverIdl=Number.NEGATIVE_INFINITY;let o=e.length,r=sl.fromCartesian(e[0],YGe);for(let s=1;s<o;s++){let a=sl.fromCartesian(e[s],yse);_se(a,r,t,n,Lf,i),r=sl.clone(a,r)}return _se(sl.fromCartesian(e[0],yse),r,t,n,Lf,i),i.east-i.west>Lf.eastOverIdl-Lf.westOverIdl&&(i.west=Lf.westOverIdl,i.east=Lf.eastOverIdl,i.east>D.PI&&(i.east=i.east-D.TWO_PI),i.west>D.PI&&(i.west=i.west-D.TWO_PI)),D.equalsEpsilon(Math.abs(Lf.northAngle),D.TWO_PI,D.EPSILON10)&&(i.north=D.PI_OVER_TWO,i.east=D.PI,i.west=-D.PI),D.equalsEpsilon(Math.abs(Lf.southAngle),D.TWO_PI,D.EPSILON10)&&(i.south=-D.PI_OVER_TWO,i.east=D.PI,i.west=-D.PI),i};var qGe=new sl;function KGe(e,t,n){return e.height>=D.PI||e.width>=D.PI?sl.fromCartesian(t[0],qGe).tangentPlane:xs.fromPoints(t,n)}var Cse=new Ae;function XGe(e,t,n){return(i,o)=>{if(e.height>=D.PI||e.width>=D.PI){if(e.south<0&&e.north>0){l(o)||(o=[]);for(let s=0;s<i.length;++s){let a=n.cartesianToCartographic(i[s],Cse);o[s]=new k(a.longitude/D.PI,a.latitude/D.PI_OVER_TWO)}return o.length=i.length,o}return sl.fromCartesianArray(i,o)}return xs.fromPoints(t,n).projectPointsOntoPlane(i,o)}}function JGe(e,t,n){if(e.height>=D.PI||e.width>=D.PI)return(o,r)=>{if(e.south<0&&e.north>0){let s=n.cartesianToCartographic(o,Cse);return l(r)||(r=new k),r.x=s.longitude/D.PI,r.y=s.latitude/D.PI_OVER_TWO,r}return sl.fromCartesian(o,r)};let i=xs.fromPoints(t,n);return(o,r)=>i.projectPointsOntoPlane(o,r)}function ZGe(e,t,n,i){return(o,r)=>!i&&(e.height>=D.PI_OVER_TWO||e.width>=2*D.PI_OVER_THREE)?$n.splitPolygonsOnEquator(o,t,n,r):o}function $Ge(e,t,n,i){if(t.height>=D.PI||t.width>=D.PI)return Xe.fromRectangle(t,void 0,Ase);let o=e,r=xs.fromPoints(o,n);return $n.computeBoundingRectangle(r.plane.normal,r.projectPointOntoPlane.bind(r),o,i,Ase)}Of.createGeometry=function(e){let t=e._vertexFormat,n=e._ellipsoid,i=e._granularity,o=e._stRotation,r=e._polygonHierarchy,s=e._perPositionHeight,a=e._closeTop,c=e._closeBottom,u=e._arcType,f=e._textureCoordinates,h=l(f),A=r.positions;if(A.length<3)return;let g=e.rectangle,m=$n.polygonsFromHierarchy(r,h,XGe(g,A,n),!s,n,ZGe(g,n,u,s)),_=m.hierarchy,y=m.polygons,C=function(w){return w},E=h?$n.polygonsFromHierarchy(f,!0,C,!1,n).polygons:void 0;if(_.length===0)return;let I=_[0].outerRing,b=$Ge(I,g,n,o),S=[],B=e._height,v=e._extrudedHeight,P=e._perPositionHeightExtrude||!D.equalsEpsilon(B,v,0,D.EPSILON2),N={perPositionHeight:s,vertexFormat:t,geometry:void 0,rotationAxis:KGe(g,I,n).plane.normal,projectTo2d:JGe(g,I,n),boundingRectangle:b,ellipsoid:n,stRotation:o,textureCoordinates:void 0,bottom:!1,top:!0,wall:!1,extrude:!1,arcType:u},L;if(P)for(N.extrude=!0,N.top=a,N.bottom=c,N.shadowVolume=e._shadowVolume,N.offsetAttribute=e._offsetAttribute,L=0;L<y.length;L++){let w=UGe(n,y[L],h?E[L]:void 0,i,_[L],s,a,c,t,u),M;a&&c?(M=w.topAndBottom,N.geometry=$n.scaleToGeodeticHeightExtruded(M.geometry,B,v,n,s)):a?(M=w.topAndBottom,M.geometry.attributes.position.values=xi.scaleToGeodeticHeight(M.geometry.attributes.position.values,B,n,!s),N.geometry=M.geometry):c&&(M=w.topAndBottom,M.geometry.attributes.position.values=xi.scaleToGeodeticHeight(M.geometry.attributes.position.values,v,n,!0),N.geometry=M.geometry),(a||c)&&(N.wall=!1,M.geometry=TW(N),S.push(M));let O=w.walls;N.wall=!0;for(let U=0;U<O.length;U++){let Q=O[U];N.geometry=$n.scaleToGeodeticHeightExtruded(Q.geometry,B,v,n,s),Q.geometry=TW(N),S.push(Q)}}else for(L=0;L<y.length;L++){let w=new Rt({geometry:$n.createGeometryFromPositions(n,y[L],h?E[L]:void 0,i,s,t,u)});if(w.geometry.attributes.position.values=xi.scaleToGeodeticHeight(w.geometry.attributes.position.values,B,n,!s),N.geometry=w.geometry,w.geometry=TW(N),l(e._offsetAttribute)){let M=w.geometry.attributes.position.values.length,O=e._offsetAttribute===hn.NONE?0:1,U=new Uint8Array(M/3).fill(O);w.geometry.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:U})}S.push(w)}let p=jn.combineInstances(S)[0];p.attributes.position.values=new Float64Array(p.attributes.position.values),p.indices=Fe.createTypedArray(p.attributes.position.values.length/3,p.indices);let x=p.attributes,T=le.fromVertices(x.position.values);return t.position||delete x.position,new ht({attributes:x,indices:p.indices,primitiveType:p.primitiveType,boundingSphere:T,offsetAttribute:e._offsetAttribute})};Of.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new Of({polygonHierarchy:e._polygonHierarchy,ellipsoid:o,stRotation:e._stRotation,granularity:i,perPositionHeight:!1,extrudedHeight:r,height:s,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0,arcType:e._arcType})};function eze(e){let t=-e._stRotation;if(t===0)return[0,0,0,1,1,0];let n=e._ellipsoid,i=e._polygonHierarchy.positions,o=e.rectangle;return ht._textureCoordinateRotationPoints(i,t,n,o)}Object.defineProperties(Of.prototype,{rectangle:{get:function(){if(!l(this._rectangle)){let e=this._polygonHierarchy.positions;this._rectangle=Of.computeRectangleFromPositions(e,this._ellipsoid,this._arcType)}return this._rectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=eze(this)),this._textureCoordinateRotationPoints}}});var o_=Of;function jC(e){this._ellipsoid=e.ellipsoid??te.default,this._positions=[...e.positions]}Object.defineProperties(jC.prototype,{length:{get:function(){return this._positions.length}},positions:{get:function(){return this._positions}},ellipsoid:{get:function(){return this._ellipsoid}}});jC.clone=function(e,t){return l(t)?(t._ellipsoid=e.ellipsoid,t._positions.length=0,t._positions.push(...e.positions),t):new jC({positions:e.positions,ellipsoid:e.ellipsoid})};jC.equals=function(e,t){return e.ellipsoid.equals(t.ellipsoid)&&e.positions===t.positions};jC.prototype.computeRectangle=function(e){return o_.computeRectangleFromPositions(this.positions,this.ellipsoid,void 0,e)};var tze=new ae,Ese=new d;jC.prototype.computeSphericalExtents=function(e){l(e)||(e=new ae);let t=this.computeRectangle(tze),n=Ae.toCartesian(ae.southwest(t),this.ellipsoid,Ese),i=Math.sqrt(n.x*n.x+n.y*n.y),o=D.fastApproximateAtan2(i,n.z),r=D.fastApproximateAtan2(n.x,n.y);return e.south=o,e.west=r,n=Ae.toCartesian(ae.northeast(t),this.ellipsoid,Ese),i=Math.sqrt(n.x*n.x+n.y*n.y),o=D.fastApproximateAtan2(i,n.z),r=D.fastApproximateAtan2(n.x,n.y),e.north=o,e.east=r,e};var AB=jC;function Ise(e){e=e??V.EMPTY_OBJECT,this.vertexArray=e.vertexArray,this.fragmentShaderSource=e.fragmentShaderSource,this.shaderProgram=e.shaderProgram,this.uniformMap=e.uniformMap,this.outputTexture=e.outputTexture,this.preExecute=e.preExecute,this.postExecute=e.postExecute,this.canceled=e.canceled,this.persists=e.persists??!1,this.pass=Be.COMPUTE,this.owner=e.owner}Ise.prototype.execute=function(e){e.execute(this)};var Hl=Ise;var oF=`in vec2 v_textureCoordinates; + +uniform int u_polygonsLength; +uniform int u_extentsLength; +uniform highp sampler2D u_polygonTexture; +uniform highp sampler2D u_extentsTexture; + +int getPolygonIndex(float dimension, vec2 coord) { + vec2 uv = coord.xy * dimension; + return int(floor(uv.y) * dimension + floor(uv.x)); +} + +vec2 getLookupUv(ivec2 dimensions, int i) { + int pixY = i / dimensions.x; + int pixX = i - (pixY * dimensions.x); + float pixelWidth = 1.0 / float(dimensions.x); + float pixelHeight = 1.0 / float(dimensions.y); + float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel + float v = (float(pixY) + 0.5) * pixelHeight; + return vec2(u, v); +} + +vec4 getExtents(int i) { + return texture(u_extentsTexture, getLookupUv(textureSize(u_extentsTexture, 0), i)); +} + +ivec2 getPositionsLengthAndExtentsIndex(int i) { + vec2 uv = getLookupUv(textureSize(u_polygonTexture, 0), i); + vec4 value = texture(u_polygonTexture, uv); + return ivec2(int(value.x), int(value.y)); +} + +vec2 getPolygonPosition(int i) { + vec2 uv = getLookupUv(textureSize(u_polygonTexture, 0), i); + return texture(u_polygonTexture, uv).xy; +} + +vec2 getCoordinates(vec2 textureCoordinates, vec4 extents) { + float latitude = mix(extents.x, extents.x + 1.0 / extents.z, textureCoordinates.y); + float longitude = mix(extents.y, extents.y + 1.0 / extents.w, textureCoordinates.x); + return vec2(latitude, longitude); +} + +void main() { + int lastPolygonIndex = 0; + out_FragColor = vec4(1.0); + + // Get the relevant region of the texture + float dimension = float(u_extentsLength); + if (u_extentsLength > 2) { + dimension = ceil(log2(float(u_extentsLength))); + } + int regionIndex = getPolygonIndex(dimension, v_textureCoordinates); + + for (int polygonIndex = 0; polygonIndex < u_polygonsLength; polygonIndex++) { + ivec2 positionsLengthAndExtents = getPositionsLengthAndExtentsIndex(lastPolygonIndex); + int positionsLength = positionsLengthAndExtents.x; + int polygonExtentsIndex = positionsLengthAndExtents.y; + lastPolygonIndex += 1; + + // Only compute signed distance for the relevant part of the atlas + if (polygonExtentsIndex == regionIndex) { + float clipAmount = czm_infinity; + vec4 extents = getExtents(polygonExtentsIndex); + vec2 textureOffset = vec2(mod(float(polygonExtentsIndex), dimension), floor(float(polygonExtentsIndex) / dimension)) / dimension; + vec2 p = getCoordinates((v_textureCoordinates - textureOffset) * dimension, extents); + float s = 1.0; + + // Check each edge for absolute distance + for (int i = 0, j = positionsLength - 1; i < positionsLength; j = i, i++) { + vec2 a = getPolygonPosition(lastPolygonIndex + i); + vec2 b = getPolygonPosition(lastPolygonIndex + j); + + vec2 ab = b - a; + vec2 pa = p - a; + float t = dot(pa, ab) / dot(ab, ab); + t = clamp(t, 0.0, 1.0); + + vec2 pq = pa - t * ab; + float d = length(pq); + + // Inside / outside computation to determine sign + bvec3 cond = bvec3(p.y >= a.y, + p.y < b.y, + ab.x * pa.y > ab.y * pa.x); + if (all(cond) || all(not(cond))) s = -s; + if (abs(d) < abs(clipAmount)) { + clipAmount = d; + } + } + + // Normalize the range to [0,1] + vec4 result = (s * vec4(clipAmount * length(extents.zw))) / 2.0 + 0.5; + // In the case where we've iterated through multiple polygons, take the minimum + out_FragColor = min(out_FragColor, result); + } + + lastPolygonIndex += positionsLength; + } +}`;function fs(e){e=e??V.EMPTY_OBJECT,this._polygons=[],this._totalPositions=0,this.enabled=e.enabled??!0,this.inverse=e.inverse??!1,this.polygonAdded=new _e,this.polygonRemoved=new _e,this._owner=void 0,this._float32View=void 0,this._extentsFloat32View=void 0,this._extentsCount=0,this._polygonsTexture=void 0,this._extentsTexture=void 0,this._signedDistanceTexture=void 0,this._signedDistanceComputeCommand=void 0;let t=e.polygons;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this._polygons.push(t[i])}}Object.defineProperties(fs.prototype,{length:{get:function(){return this._polygons.length}},totalPositions:{get:function(){return this._totalPositions}},extentsTexture:{get:function(){return this._extentsTexture}},extentsCount:{get:function(){return this._extentsCount}},pixelsNeededForExtents:{get:function(){return this.length}},pixelsNeededForPolygonPositions:{get:function(){return this.totalPositions+this.length}},clippingTexture:{get:function(){return this._signedDistanceTexture}},owner:{get:function(){return this._owner}},clippingPolygonsState:{get:function(){return this.inverse?-this.extentsCount:this.extentsCount}}});fs.prototype.add=function(e){let t=this._polygons.length;return this._polygons.push(e),this.polygonAdded.raiseEvent(e,t),e};fs.prototype.get=function(e){return this._polygons[e]};fs.prototype.contains=function(e){return this._polygons.some(t=>AB.equals(t,e))};fs.prototype.remove=function(e){let t=this._polygons,n=t.findIndex(i=>AB.equals(i,e));return n===-1?!1:(t.splice(n,1),this.polygonRemoved.raiseEvent(e,n),!0)};var nze=new ae;function ize(e){let t=[],n=[],i=e.length;for(let r=0;r<i;++r){let a=e[r].computeSphericalExtents(),c=Math.max(a.height*2.5,.001),u=Math.max(a.width*2.5,.001),f=ae.clone(a);f.south-=c,f.west-=u,f.north+=c,f.east+=u,f.south=Math.max(f.south,-Math.PI),f.west=Math.max(f.west,-Math.PI),f.north=Math.min(f.north,Math.PI),f.east=Math.min(f.east,Math.PI);let h=[r];for(let A=0;A<t.length;++A){let g=t[A];if(l(g)&&l(ae.simpleIntersection(g,f))&&!ae.equals(g,f)){let m=n[A];h.push(...m),m.reduce((_,y)=>ae.union(e[y].computeSphericalExtents(nze),_,_),a),t[A]=void 0,n[A]=void 0,c=Math.max(a.height*2.5,.001),u=Math.max(a.width*2.5,.001),f=ae.clone(a,f),f.south-=c,f.west-=u,f.north+=c,f.east+=u,f.south=Math.max(f.south,-Math.PI),f.west=Math.max(f.west,-Math.PI),f.north=Math.min(f.north,Math.PI),f.east=Math.min(f.east,Math.PI),A=-1}}t.push(f),n.push(h)}let o=new Map;return n.filter(l).forEach((r,s)=>r.forEach(a=>o.set(a,s))),{extentsList:t.filter(l),extentsIndexByPolygon:o}}fs.prototype.removeAll=function(){let e=this._polygons,t=e.length;for(let n=0;n<t;++n){let i=e[n];this.polygonRemoved.raiseEvent(i,n)}this._polygons=[]};function oze(e){let t=e._float32View,n=e._extentsFloat32View,i=e._polygons,{extentsList:o,extentsIndexByPolygon:r}=ize(i),s=0;for(let[c,u]of i.entries()){let f=u.length;t[s++]=f,t[s++]=r.get(c);for(let h=0;h<f;++h){let A=u.positions[h],g=Math.hypot(A.x,A.y),m=D.fastApproximateAtan2(g,A.z),_=D.fastApproximateAtan2(A.x,A.y);t[s++]=m,t[s++]=_}}let a=0;for(let c of o){let u=1/(c.east-c.west),f=1/(c.north-c.south);n[a++]=c.south,n[a++]=c.west,n[a++]=f,n[a++]=u}e._extentsCount=o.length}var SW=new k;fs.prototype.update=function(e){let t=e.context;if(!fs.isSupported(e))throw new ce("ClippingPolygonCollections are only supported for WebGL 2.");let n=this._polygons.reduce((s,a)=>s+a.length,0);if(n===this.totalPositions||(this._totalPositions=n,this.length===0))return;l(this._signedDistanceComputeCommand)&&(this._signedDistanceComputeCommand.canceled=!0,this._signedDistanceComputeCommand=void 0);let i=this._polygonsTexture,o=this._extentsTexture,r=this._signedDistanceTexture;if(l(i)){let s=i.width*i.height;(s<this.pixelsNeededForPolygonPositions||this.pixelsNeededForPolygonPositions<.25*s)&&(i.destroy(),i=void 0,this._polygonsTexture=void 0)}if(!l(i)){let s=fs.getTextureResolution(i,this.pixelsNeededForPolygonPositions,SW);i=new Nt({context:t,width:s.x,height:s.y,pixelFormat:et.RG,pixelDatatype:He.FLOAT,sampler:on.NEAREST,flipY:!1}),this._float32View=new Float32Array(s.x*s.y*2),this._polygonsTexture=i}if(l(o)){let s=o.width*o.height;(s<this.pixelsNeededForExtents||this.pixelsNeededForExtents<.25*s)&&(o.destroy(),o=void 0,this._extentsTexture=void 0)}if(!l(o)){let s=fs.getTextureResolution(o,this.pixelsNeededForExtents,SW);o=new Nt({context:t,width:s.x,height:s.y,pixelFormat:et.RGBA,pixelDatatype:He.FLOAT,sampler:on.NEAREST,flipY:!1}),this._extentsFloat32View=new Float32Array(s.x*s.y*4),this._extentsTexture=o}if(oze(this),o.copyFrom({source:{width:o.width,height:o.height,arrayBufferView:this._extentsFloat32View}}),i.copyFrom({source:{width:i.width,height:i.height,arrayBufferView:this._float32View}}),!l(r)){let s=fs.getClippingDistanceTextureResolution(this,SW);r=new Nt({context:t,width:s.x,height:s.y,pixelFormat:t.webgl2?et.RED:et.LUMINANCE,pixelDatatype:He.FLOAT,sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:pi.LINEAR}),flipY:!1}),this._signedDistanceTexture=r}this._signedDistanceComputeCommand=rze(this)};fs.prototype.queueCommands=function(e){l(this._signedDistanceComputeCommand)&&e.commandList.push(this._signedDistanceComputeCommand)};function rze(e){let t=e._polygonsTexture,n=e._extentsTexture;return new Hl({fragmentShaderSource:oF,outputTexture:e._signedDistanceTexture,uniformMap:{u_polygonsLength:function(){return e.length},u_extentsLength:function(){return e.extentsCount},u_extentsTexture:function(){return n},u_polygonTexture:function(){return t}},persists:!1,owner:e,postExecute:()=>{e._signedDistanceComputeCommand=void 0}})}var xse=new ae,sze=new ae;fs.prototype.computeIntersectionWithBoundingVolume=function(e,t){let n=this._polygons,i=n.length,o=nn.OUTSIDE;this.inverse&&(o=nn.INSIDE);for(let r=0;r<i;++r){let a=n[r].computeRectangle(),c=e.rectangle;if(!l(c)&&l(e.boundingVolume?.computeCorners)){let f=e.boundingVolume.computeCorners();c=ae.fromCartesianArray(f,t,xse)}l(c)||(c=ae.fromBoundingSphere(e.boundingSphere,t,xse));let u=ae.simpleIntersection(c,a,sze);l(u)&&(o=nn.INTERSECTING)}return o};fs.setOwner=function(e,t,n){e!==t[n]&&(t[n]=t[n]&&t[n].destroy(),l(e)&&(e._owner=t,t[n]=e))};fs.isSupported=function(e){return e?.context.webgl2};fs.getTextureResolution=function(e,t,n){if(l(e))return n.x=e.width,n.y=e.height,n;let i=qt.maximumTextureSize;return n.x=Math.min(t,i),n.y=Math.ceil(t/n.x),n.y*=2,n};fs.getClippingDistanceTextureResolution=function(e,t){let n=e.signedDistanceTexture;return l(n)?(t.x=n.width,t.y=n.height,t):(t.x=Math.min(qt.maximumTextureSize,4096),t.y=Math.min(qt.maximumTextureSize,4096),t)};fs.getClippingExtentsTextureResolution=function(e,t){let n=e.extentsTexture;return l(n)?(t.x=n.width,t.y=n.height,t):fs.getTextureResolution(n,e.pixelsNeededForExtents,t)};fs.prototype.isDestroyed=function(){return!1};fs.prototype.destroy=function(){return l(this._signedDistanceComputeCommand)&&(this._signedDistanceComputeCommand.canceled=!0),this._polygonsTexture=this._polygonsTexture&&this._polygonsTexture.destroy(),this._extentsTexture=this._extentsTexture&&this._extentsTexture.destroy(),this._signedDistanceTexture=this._signedDistanceTexture&&this._signedDistanceTexture.destroy(),ue(this)};var xm=fs;var pB={NONE:0,SCENE_LIGHT:1,SUNLIGHT:2};pB.fromGlobeFlags=function(e){return e.enableLighting&&e.dynamicAtmosphereLighting?e.dynamicAtmosphereLightingFromSun?pB.SUNLIGHT:pB.SCENE_LIGHT:pB.NONE};var r_=Object.freeze(pB);function bse(){this.lightIntensity=10,this.rayleighCoefficient=new d(55e-7,13e-6,284e-7),this.mieCoefficient=new d(21e-6,21e-6,21e-6),this.rayleighScaleHeight=1e4,this.mieScaleHeight=3200,this.mieAnisotropy=.9,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this.dynamicLighting=r_.NONE}bse.requiresColorCorrect=function(e){return!(D.equalsEpsilon(e.hueShift,0,D.EPSILON7)&&D.equalsEpsilon(e.saturationShift,0,D.EPSILON7)&&D.equalsEpsilon(e.brightnessShift,0,D.EPSILON7))};var lx=bse;var bm=`uniform vec3 u_radiiAndDynamicAtmosphereColor; + +uniform float u_atmosphereLightIntensity; +uniform float u_atmosphereRayleighScaleHeight; +uniform float u_atmosphereMieScaleHeight; +uniform float u_atmosphereMieAnisotropy; +uniform vec3 u_atmosphereRayleighCoefficient; +uniform vec3 u_atmosphereMieCoefficient; + +const float ATMOSPHERE_THICKNESS = 111e3; // The thickness of the atmosphere in meters. +const int PRIMARY_STEPS_MAX = 16; // Maximum number of times the ray from the camera to the world position (primary ray) is sampled. +const int LIGHT_STEPS_MAX = 4; // Maximum number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray. + +/** + * This function computes the colors contributed by Rayliegh and Mie scattering on a given ray, as well as + * the transmittance value for the ray. + * + * @param {czm_ray} primaryRay The ray from the camera to the position. + * @param {float} primaryRayLength The length of the primary ray. + * @param {vec3} lightDirection The direction of the light to calculate the scattering from. + * @param {vec3} rayleighColor The variable the Rayleigh scattering will be written to. + * @param {vec3} mieColor The variable the Mie scattering will be written to. + * @param {float} opacity The variable the transmittance will be written to. + * @glslFunction + */ +void computeScattering( + czm_ray primaryRay, + float primaryRayLength, + vec3 lightDirection, + float atmosphereInnerRadius, + out vec3 rayleighColor, + out vec3 mieColor, + out float opacity +) { + + // Initialize the default scattering amounts to 0. + rayleighColor = vec3(0.0); + mieColor = vec3(0.0); + opacity = 0.0; + + float atmosphereOuterRadius = atmosphereInnerRadius + ATMOSPHERE_THICKNESS; + + vec3 origin = vec3(0.0); + + // Calculate intersection from the camera to the outer ring of the atmosphere. + czm_raySegment primaryRayAtmosphereIntersect = czm_raySphereIntersectionInterval(primaryRay, origin, atmosphereOuterRadius); + + // Return empty colors if no intersection with the atmosphere geometry. + if (primaryRayAtmosphereIntersect == czm_emptyRaySegment) { + return; + } + + // To deal with smaller values of PRIMARY_STEPS (e.g. 4) + // we implement a split strategy: sky or horizon. + // For performance reasons, instead of a if/else branch + // a soft choice is implemented through a weight 0.0 <= w_stop_gt_lprl <= 1.0 + float x = 1e-7 * primaryRayAtmosphereIntersect.stop / length(primaryRayLength); + // Value close to 0.0: close to the horizon + // Value close to 1.0: above in the sky + float w_stop_gt_lprl = 0.5 * (1.0 + czm_approximateTanh(x)); + + // The ray should start from the first intersection with the outer atmopshere, or from the camera position, if it is inside the atmosphere. + float start_0 = primaryRayAtmosphereIntersect.start; + primaryRayAtmosphereIntersect.start = max(primaryRayAtmosphereIntersect.start, 0.0); + // The ray should end at the exit from the atmosphere or at the distance to the vertex, whichever is smaller. + primaryRayAtmosphereIntersect.stop = min(primaryRayAtmosphereIntersect.stop, length(primaryRayLength)); + + // For the number of ray steps, distinguish inside or outside atmosphere (outer space) + // (1) from outer space we have to use more ray steps to get a realistic rendering + // (2) within atmosphere we need fewer steps for faster rendering + float x_o_a = start_0 - ATMOSPHERE_THICKNESS; // ATMOSPHERE_THICKNESS used as an ad-hoc constant, no precise meaning here, only the order of magnitude matters + float w_inside_atmosphere = 1.0 - 0.5 * (1.0 + czm_approximateTanh(x_o_a)); + int PRIMARY_STEPS = PRIMARY_STEPS_MAX - int(w_inside_atmosphere * 12.0); // Number of times the ray from the camera to the world position (primary ray) is sampled. + int LIGHT_STEPS = LIGHT_STEPS_MAX - int(w_inside_atmosphere * 2.0); // Number of times the light is sampled from the light source's intersection with the atmosphere to a sample position on the primary ray. + + // Setup for sampling positions along the ray - starting from the intersection with the outer ring of the atmosphere. + float rayPositionLength = primaryRayAtmosphereIntersect.start; + // (1) Outside the atmosphere: constant rayStepLength + // (2) Inside atmosphere: variable rayStepLength to compensate the rough rendering of the smaller number of ray steps + float totalRayLength = primaryRayAtmosphereIntersect.stop - rayPositionLength; + float rayStepLengthIncrease = w_inside_atmosphere * ((1.0 - w_stop_gt_lprl) * totalRayLength / (float(PRIMARY_STEPS * (PRIMARY_STEPS + 1)) / 2.0)); + float rayStepLength = max(1.0 - w_inside_atmosphere, w_stop_gt_lprl) * totalRayLength / max(7.0 * w_inside_atmosphere, float(PRIMARY_STEPS)); + + vec3 rayleighAccumulation = vec3(0.0); + vec3 mieAccumulation = vec3(0.0); + vec2 opticalDepth = vec2(0.0); + vec2 heightScale = vec2(u_atmosphereRayleighScaleHeight, u_atmosphereMieScaleHeight); + + // Sample positions on the primary ray. + for (int i = 0; i < PRIMARY_STEPS_MAX; ++i) { + + // The loop should be: for (int i = 0; i < PRIMARY_STEPS; ++i) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (i >= PRIMARY_STEPS) { + break; + } + + // Calculate sample position along viewpoint ray. + vec3 samplePosition = primaryRay.origin + primaryRay.direction * (rayPositionLength + rayStepLength); + + // Calculate height of sample position above ellipsoid. + float sampleHeight = length(samplePosition) - atmosphereInnerRadius; + + // Calculate and accumulate density of particles at the sample position. + vec2 sampleDensity = exp(-sampleHeight / heightScale) * rayStepLength; + opticalDepth += sampleDensity; + + // Generate ray from the sample position segment to the light source, up to the outer ring of the atmosphere. + czm_ray lightRay = czm_ray(samplePosition, lightDirection); + czm_raySegment lightRayAtmosphereIntersect = czm_raySphereIntersectionInterval(lightRay, origin, atmosphereOuterRadius); + + float lightStepLength = lightRayAtmosphereIntersect.stop / float(LIGHT_STEPS); + float lightPositionLength = 0.0; + + vec2 lightOpticalDepth = vec2(0.0); + + // Sample positions along the light ray, to accumulate incidence of light on the latest sample segment. + for (int j = 0; j < LIGHT_STEPS_MAX; ++j) { + + // The loop should be: for (int j = 0; i < LIGHT_STEPS; ++j) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (j >= LIGHT_STEPS) { + break; + } + + // Calculate sample position along light ray. + vec3 lightPosition = samplePosition + lightDirection * (lightPositionLength + lightStepLength * 0.5); + + // Calculate height of the light sample position above ellipsoid. + float lightHeight = length(lightPosition) - atmosphereInnerRadius; + + // Calculate density of photons at the light sample position. + lightOpticalDepth += exp(-lightHeight / heightScale) * lightStepLength; + + // Increment distance on light ray. + lightPositionLength += lightStepLength; + } + + // Compute attenuation via the primary ray and the light ray. + vec3 attenuation = exp(-((u_atmosphereMieCoefficient * (opticalDepth.y + lightOpticalDepth.y)) + (u_atmosphereRayleighCoefficient * (opticalDepth.x + lightOpticalDepth.x)))); + + // Accumulate the scattering. + rayleighAccumulation += sampleDensity.x * attenuation; + mieAccumulation += sampleDensity.y * attenuation; + + // Increment distance on primary ray. + rayPositionLength += (rayStepLength += rayStepLengthIncrease); + } + + // Compute the scattering amount. + rayleighColor = u_atmosphereRayleighCoefficient * rayleighAccumulation; + mieColor = u_atmosphereMieCoefficient * mieAccumulation; + + // Compute the transmittance i.e. how much light is passing through the atmosphere. + opacity = length(exp(-((u_atmosphereMieCoefficient * opticalDepth.y) + (u_atmosphereRayleighCoefficient * opticalDepth.x)))); +} + +vec4 computeAtmosphereColor( + vec3 positionWC, + vec3 lightDirection, + vec3 rayleighColor, + vec3 mieColor, + float opacity +) { + // Setup the primary ray: from the camera position to the vertex position. + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + + float cosAngle = dot(cameraToPositionWCDirection, lightDirection); + float cosAngleSq = cosAngle * cosAngle; + + float G = u_atmosphereMieAnisotropy; + float GSq = G * G; + + // The Rayleigh phase function. + float rayleighPhase = 3.0 / (50.2654824574) * (1.0 + cosAngleSq); + // The Mie phase function. + float miePhase = 3.0 / (25.1327412287) * ((1.0 - GSq) * (cosAngleSq + 1.0)) / (pow(1.0 + GSq - 2.0 * cosAngle * G, 1.5) * (2.0 + GSq)); + + // The final color is generated by combining the effects of the Rayleigh and Mie scattering. + vec3 rayleigh = rayleighPhase * rayleighColor; + vec3 mie = miePhase * mieColor; + + vec3 color = (rayleigh + mie) * u_atmosphereLightIntensity; + + return vec4(color, opacity); +} +`;var rF=`uniform samplerCube u_radianceMap; + +in vec2 v_textureCoordinates; + + +const float twoSqrtPi = 2.0 * sqrt(czm_pi); + +// Coutesy of https://www.ppsloan.org/publications/StupidSH36.pdf +float computeShBasis(int index, vec3 s) { + if (index == 0) { // l = 0, m = 0 + return 1.0 / twoSqrtPi; + } + + if (index == 1) { // l = 1, m = -1 + return -sqrt(3.0) * s.y / twoSqrtPi; + } + + if (index == 2) { // l = 1, m = 0 + return sqrt(3.0) * s.z / twoSqrtPi; + } + + if (index == 3) { // l = 1, m = 1 + return -sqrt(3.0) * s.x / twoSqrtPi; + } + + if (index == 4) { // l = 2, m = -2 + return sqrt(15.0) * s.y * s.x / twoSqrtPi; + } + + if (index == 5) { // l = 2, m = -1 + return -sqrt(15.0) * s.y * s.z / twoSqrtPi; + } + + if (index == 6) { // l = 2, m = 0 + return sqrt(5.0) * (3.0 * s.z * s.z - 1.0) / 2.0 / twoSqrtPi; + } + + if (index == 7) { // l = 2, m = 1 + return -sqrt(15.0) * s.x * s.z / twoSqrtPi; + } + + if (index == 8) { // l = 2, m = 2 + return sqrt(15.0) * (s.x * s.x - s.y * s.y) / 2.0 / twoSqrtPi; + } + + return 0.0; +} + +float vdcRadicalInverse(int i) +{ + float r; + float base = 2.0; + float value = 0.0; + float invBase = 1.0 / base; + float invBi = invBase; + for (int x = 0; x < 100; x++) + { + if (i <= 0) + { + break; + } + r = mod(float(i), base); + value += r * invBi; + invBi *= invBase; + i = int(float(i) * invBase); + } + return value; +} + +vec2 hammersley2D(int i, int N) +{ + return vec2(float(i) / float(N), vdcRadicalInverse(i)); +} + +// Sample count is relatively low for the sake of performance, but should still be enough to capture directionality needed for third-order harmonics +const int samples = 256; +const float solidAngle = 1.0 / float(samples); + +void main() { + // Get the current coefficient based on the uv + vec2 uv = v_textureCoordinates.xy * 3.0; + int coefficientIndex = int(floor(uv.y) * 3.0 + floor(uv.x)); + + for (int i = 0; i < samples; ++i) { + vec2 xi = hammersley2D(i, samples); + float phi = czm_twoPi * xi.x; + float cosTheta = 1.0 - 2.0 * sqrt(1.0 - xi.y * xi.y); + float sinTheta = sqrt(1.0 - cosTheta * cosTheta); + vec3 direction = normalize(vec3(sinTheta * cos(phi), cosTheta, sinTheta * sin(phi))); + + // Generate the spherical harmonics basis from the direction + float Ylm = computeShBasis(coefficientIndex, direction); + + vec3 lookupDirection = -direction.xyz; + lookupDirection.z = -lookupDirection.z; + + vec4 color = czm_textureCube(u_radianceMap, lookupDirection, 0.0); + + // Use the relevant function for this coefficient + out_FragColor += Ylm * color * solidAngle * sinTheta; + } + +} +`;var sF=`precision highp float; + +in vec2 v_textureCoordinates; + +uniform vec3 u_faceDirection; // Current cubemap face +uniform vec3 u_positionWC; +uniform mat4 u_enuToFixedFrame; +uniform vec4 u_brightnessSaturationGammaIntensity; +uniform vec4 u_groundColor; // alpha component represent albedo + +vec4 getCubeMapDirection(vec2 uv, vec3 faceDir) { + vec2 scaledUV = uv * 2.0 - 1.0; + + if (faceDir.x != 0.0) { + return vec4(faceDir.x, scaledUV.x * faceDir.x, -scaledUV.y, 0.0); + } else if (faceDir.y != 0.0) { + return vec4(scaledUV.x, -scaledUV.y * faceDir.y, faceDir.y, 0.0); + } else { + return vec4(scaledUV.x * faceDir.z, -faceDir.z, -scaledUV.y, 0.0); + } +} + +void main() { + float height = length(u_positionWC); + float atmosphereInnerRadius = u_radiiAndDynamicAtmosphereColor.y; + float ellipsoidHeight = max(height - atmosphereInnerRadius, 0.0); + + // Scale the position to ensure the sky color is present, even when underground. + vec3 positionWC = u_positionWC / height * (ellipsoidHeight + atmosphereInnerRadius); + + float atmosphereOuterRadius = u_radiiAndDynamicAtmosphereColor.x; + float atmosphereHeight = atmosphereOuterRadius - atmosphereInnerRadius; + + vec3 direction = (u_enuToFixedFrame * getCubeMapDirection(v_textureCoordinates, u_faceDirection)).xyz; + vec3 normalizedDirection = normalize(direction); + + czm_ray ray = czm_ray(positionWC, normalizedDirection); + czm_raySegment intersection = czm_raySphereIntersectionInterval(ray, vec3(0.0), atmosphereInnerRadius); + if (!czm_isEmpty(intersection)) { + intersection = czm_rayEllipsoidIntersectionInterval(ray, vec3(0.0), czm_ellipsoidInverseRadii); + } + + bool onEllipsoid = intersection.start >= 0.0; + float rayLength = czm_branchFreeTernary(onEllipsoid, intersection.start, atmosphereOuterRadius); + + // Compute sky color for each position on a sphere at radius centered around the provided position's origin + vec3 skyPositionWC = positionWC + normalizedDirection * rayLength; + + float lightEnum = u_radiiAndDynamicAtmosphereColor.z; + vec3 lightDirectionWC = normalize(czm_getDynamicAtmosphereLightDirection(skyPositionWC, lightEnum)); + vec3 mieColor; + vec3 rayleighColor; + float opacity; + czm_computeScattering( + ray, + rayLength, + lightDirectionWC, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); + + vec4 atmopshereColor = czm_computeAtmosphereColor(ray, lightDirectionWC, rayleighColor, mieColor, opacity); + +#ifdef ATMOSPHERE_COLOR_CORRECT + const bool ignoreBlackPixels = true; + atmopshereColor.rgb = czm_applyHSBShift(atmopshereColor.rgb, czm_atmosphereHsbShift, ignoreBlackPixels); +#endif + + vec3 lookupDirection = -normalizedDirection; + // Flipping the X vector is a cheap way to get the inverse of czm_temeToPseudoFixed, since that's a rotation about Z. + lookupDirection.x = -lookupDirection.x; + lookupDirection = -normalize(czm_temeToPseudoFixed * lookupDirection); + lookupDirection.x = -lookupDirection.x; + + // Values outside the atmopshere are rendered as black, when they should be treated as transparent + float skyAlpha = clamp((1.0 - ellipsoidHeight / atmosphereHeight) * atmopshereColor.a, 0.0, 1.0); + skyAlpha = czm_branchFreeTernary(length(atmopshereColor.rgb) <= czm_epsilon7, 0.0, skyAlpha); // Treat black as transparent + + // Blend starmap with atmopshere scattering + float intensity = u_brightnessSaturationGammaIntensity.w; + vec4 sceneSkyBoxColor = czm_textureCube(czm_environmentMap, lookupDirection); + vec3 skyBackgroundColor = mix(czm_backgroundColor.rgb, sceneSkyBoxColor.rgb, sceneSkyBoxColor.a); + vec4 combinedSkyColor = vec4(mix(skyBackgroundColor, atmopshereColor.rgb * intensity, skyAlpha), 1.0); + + // Compute ground color based on amount of reflected light, then blend it with ground atmosphere based on height + vec3 up = normalize(positionWC); + float occlusion = max(dot(lightDirectionWC, up), 0.05); + vec4 groundColor = vec4(u_groundColor.rgb * u_groundColor.a * (vec3(intensity * occlusion) + atmopshereColor.rgb), 1.0); + vec4 blendedGroundColor = mix(groundColor, atmopshereColor, clamp(ellipsoidHeight / atmosphereHeight, 0.0, 1.0)); + + vec4 color = czm_branchFreeTernary(onEllipsoid, blendedGroundColor, combinedSkyColor); + + float brightness = u_brightnessSaturationGammaIntensity.x; + float saturation = u_brightnessSaturationGammaIntensity.y; + float gamma = u_brightnessSaturationGammaIntensity.z; + +#ifdef ENVIRONMENT_COLOR_CORRECT + color.rgb = mix(vec3(0.0), color.rgb, brightness); + color.rgb = czm_saturation(color.rgb, saturation); +#endif + color.rgb = pow(color.rgb, vec3(gamma)); // Normally this would be in the ifdef above, but there is a precision issue with the atmopshere scattering transmittance (alpha). Having this line is a workaround for that issue, even when gamma is 1.0. + color.rgb = czm_gammaCorrect(color.rgb); + + out_FragColor = color; +} +`;var aF=`precision highp float; + +in vec3 v_textureCoordinates; + +uniform float u_roughness; +uniform samplerCube u_radianceTexture; +uniform vec3 u_faceDirection; + +float vdcRadicalInverse(int i) +{ + float r; + float base = 2.0; + float value = 0.0; + float invBase = 1.0 / base; + float invBi = invBase; + for (int x = 0; x < 100; x++) + { + if (i <= 0) + { + break; + } + r = mod(float(i), base); + value += r * invBi; + invBi *= invBase; + i = int(float(i) * invBase); + } + return value; +} + +vec2 hammersley2D(int i, int N) +{ + return vec2(float(i) / float(N), vdcRadicalInverse(i)); +} + +vec3 importanceSampleGGX(vec2 xi, float alphaRoughness, vec3 N) +{ + float alphaRoughnessSquared = alphaRoughness * alphaRoughness; + float phi = czm_twoPi * xi.x; + float cosTheta = sqrt((1.0 - xi.y) / (1.0 + (alphaRoughnessSquared - 1.0) * xi.y)); + float sinTheta = sqrt(1.0 - cosTheta * cosTheta); + vec3 H = vec3(sinTheta * cos(phi), sinTheta * sin(phi), cosTheta); + vec3 upVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 tangentX = normalize(cross(upVector, N)); + vec3 tangentY = cross(N, tangentX); + return tangentX * H.x + tangentY * H.y + N * H.z; +} + +// Sample count is relatively low for the sake of performance, but should still be enough to prevent artifacting in lower roughnesses +const int samples = 128; + +void main() { + vec3 normal = u_faceDirection; + vec3 V = normalize(v_textureCoordinates); + float roughness = u_roughness; + + vec4 color = vec4(0.0); + float weight = 0.0; + for (int i = 0; i < samples; ++i) { + vec2 xi = hammersley2D(i, samples); + vec3 H = importanceSampleGGX(xi, roughness, V); + vec3 L = 2.0 * dot(V, H) * H - V; // reflected vector + + float NdotL = max(dot(V, L), 0.0); + if (NdotL > 0.0) { + color += vec4(czm_textureCube(u_radianceTexture, L).rgb, 1.0) * NdotL; + weight += NdotL; + } + } + out_FragColor = color / weight; +} +`;var cF=`in vec3 position; +out vec3 v_textureCoordinates; + +uniform vec3 u_faceDirection; + +vec3 getCubeMapDirection(vec2 uv, vec3 faceDir) { + vec2 scaledUV = uv; + + if (faceDir.x != 0.0) { + return vec3(faceDir.x, scaledUV.y, scaledUV.x * faceDir.x); + } else if (faceDir.y != 0.0) { + return vec3(scaledUV.x, -faceDir.y, -scaledUV.y * faceDir.y); + } else { + return vec3(scaledUV.x * faceDir.z, scaledUV.y, -faceDir.z); + } +} + +void main() +{ + v_textureCoordinates = getCubeMapDirection(position.xy, u_faceDirection); + v_textureCoordinates.y = -v_textureCoordinates.y; + v_textureCoordinates.z = -v_textureCoordinates.z; + gl_Position = vec4(position, 1.0); +} +`;function ui(e){this._position=void 0,this._radianceMapDirty=!1,this._radianceCommandsDirty=!1,this._convolutionsCommandsDirty=!1,this._irradianceCommandDirty=!1,this._irradianceTextureDirty=!1,this._sphericalHarmonicCoefficientsDirty=!1,this._shouldRegenerateShaders=!1,this._shouldReset=!1,e=e??V.EMPTY_OBJECT;let t=Math.min(e.mipmapLevels??7,Math.log2(qt.maximumCubeMapSize));this._mipmapLevels=t,this._radianceMapComputeCommands=new Array(6),this._convolutionComputeCommands=new Array((t-1)*6),this._irradianceComputeCommand=void 0,this._radianceMapFS=void 0,this._irradianceMapFS=void 0,this._convolveSP=void 0,this._va=void 0,this._radianceMapTextures=new Array(6),this._specularMapTextures=new Array((t-1)*6),this._radianceCubeMap=void 0,this._irradianceMapTexture=void 0,this._sphericalHarmonicCoefficients=ui.DEFAULT_SPHERICAL_HARMONIC_COEFFICIENTS.slice(),this._lastTime=new K;let n=Math.pow(2,t-1);this._textureDimensions=new k(n,n),this._radiiAndDynamicAtmosphereColor=new d,this._sceneEnvironmentMap=void 0,this._backgroundColor=void 0,this._owner=void 0,this.enabled=e.enabled??!0,this.shouldUpdate=!0,this.maximumSecondsDifference=e.maximumSecondsDifference??3600,this.maximumPositionEpsilon=e.maximumPositionEpsilon??1e3,this.atmosphereScatteringIntensity=e.atmosphereScatteringIntensity??2,this.gamma=e.gamma??1,this.brightness=e.brightness??1,this.saturation=e.saturation??1,this.groundColor=e.groundColor??ui.AVERAGE_EARTH_GROUND_COLOR,this.groundAlbedo=e.groundAlbedo??.31}Object.defineProperties(ui.prototype,{owner:{get:function(){return this._owner}},shouldRegenerateShaders:{get:function(){return this._shouldRegenerateShaders}},position:{get:function(){return this._position},set:function(e){d.equalsEpsilon(e,this._position,0,this.maximumPositionEpsilon)||(this._position=d.clone(e,this._position),this._shouldReset=!0)}},radianceCubeMap:{get:function(){return this._radianceCubeMap}},maximumMipmapLevel:{get:function(){return this._mipmapLevels}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients}}});ui._maximumComputeCommandCount=8;ui._activeComputeCommandCount=0;ui._nextFrameCommandQueue=[];ui._queueCommand=(e,t)=>{if(ui._activeComputeCommandCount>=ui._maximumComputeCommandCount){ui._nextFrameCommandQueue.push(e);return}t.commandList.push(e),ui._activeComputeCommandCount++};ui._updateCommandQueue=e=>{if(ui._maximumComputeCommandCount=Math.log2(qt.maximumCubeMapSize),ui._nextFrameCommandQueue.length>0&&ui._activeComputeCommandCount<ui._maximumComputeCommandCount){let t=ui._nextFrameCommandQueue.shift();for(;l(t)&&ui._activeComputeCommandCount<ui._maximumComputeCommandCount;){if(t.owner.isDestroyed()||t.canceled){t=ui._nextFrameCommandQueue.shift();continue}e.commandList.push(t),ui._activeComputeCommandCount++,t=ui._nextFrameCommandQueue.shift()}l(t)&&ui._nextFrameCommandQueue.push(t)}};ui.setOwner=function(e,t,n){e!==t[n]&&(t[n]=t[n]&&t[n].destroy(),l(e)&&(e._owner=t,t[n]=e))};ui.prototype.reset=function(){let e=this._radianceMapComputeCommands.length;for(let t=0;t<e;++t)l(this._radianceMapComputeCommands[t])&&(this._radianceMapComputeCommands[t].canceled=!0),this._radianceMapComputeCommands[t]=void 0;e=this._convolutionComputeCommands.length;for(let t=0;t<e;++t)l(this._convolutionComputeCommands[t])&&(this._convolutionComputeCommands[t].canceled=!0),this._convolutionComputeCommands[t]=void 0;l(this._irradianceComputeCommand)&&(this._irradianceComputeCommand.canceled=!0,this._irradianceComputeCommand=void 0),this._radianceMapDirty=!0,this._radianceCommandsDirty=!0,this._convolutionsCommandsDirty=!1,this._irradianceCommandDirty=!1};var aze=new d,cze=new d;function lze(e,t){let n=e._position,i=t.atmosphere,o=t.mapProjection.ellipsoid,r=o.scaleToGeodeticSurface(n,cze),s=1.025,a=aze,c=l(r)?d.magnitude(r):o.maximumRadius;return a.x=c*s,a.y=c,a.z=i.dynamicLighting,!d.equalsEpsilon(e._radiiAndDynamicAtmosphereColor,a)||t.environmentMap!==e._sceneEnvironmentMap||t.backgroundColor!==e._backgroundColor?(d.clone(a,e._radiiAndDynamicAtmosphereColor),e._sceneEnvironmentMap=t.environmentMap,e._backgroundColor=t.backgroundColor,!0):!1}var Tse=new d,uze=new R,fze=new se,dze=new G;function hze(e,t){let n=t.context,i=e._textureDimensions;if(l(e._radianceCubeMap)||(e._radianceCubeMap=new jr({context:n,width:i.x,height:i.y,pixelDatatype:He.UNSIGNED_BYTE,pixelFormat:et.RGBA})),e._radianceCommandsDirty){let o=e._radianceMapFS;l(o)||(o=new We({sources:[bm,sF]}),e._radianceMapFS=o),lx.requiresColorCorrect(t.atmosphere)&&o.defines.push("ATMOSPHERE_COLOR_CORRECT");let r=e._position,s=e._radiiAndDynamicAtmosphereColor,a=t.mapProjection.ellipsoid,c=kt.eastNorthUpToFixedFrame(r,a,uze),u=fze;u.x=e.brightness,u.y=e.saturation,u.z=e.gamma,u.w=e.atmosphereScatteringIntensity,(e.brightness!==1||e.saturation!==1||e.gamma!==1)&&o.defines.push("ENVIRONMENT_COLOR_CORRECT");let f=0;for(let h of jr.faceNames()){let A=e._radianceMapTextures[f];l(A)&&!A.isDestroyed()&&A.destroy(),A=new Nt({context:n,width:i.x,height:i.y,pixelDatatype:He.UNSIGNED_BYTE,pixelFormat:et.RGBA}),e._radianceMapTextures[f]=A;let g=f,m=new Hl({fragmentShaderSource:o,outputTexture:A,uniformMap:{u_radiiAndDynamicAtmosphereColor:()=>s,u_enuToFixedFrame:()=>c,u_faceDirection:()=>jr.getDirection(h,Tse),u_positionWC:()=>r,u_brightnessSaturationGammaIntensity:()=>u,u_groundColor:()=>e.groundColor.withAlpha(e.groundAlbedo,dze)},owner:e});m.postExecute=()=>{if(e.isDestroyed()||m.canceled){ui._activeComputeCommandCount--;return}let _=e._radianceMapComputeCommands;_[g]=void 0;let y=new as({context:n,colorTextures:[e._radianceMapTextures[g]]});y._bind(),e._radianceCubeMap[h].copyFromFramebuffer(),y._unBind(),y.destroy(),ui._activeComputeCommandCount--,_.some(l)||(e._convolutionsCommandsDirty=!0,e._shouldRegenerateShaders=!0)},e._radianceMapComputeCommands[f]=m,ui._queueCommand(m,t),f++}e._radianceCommandsDirty=!1}}function mze(e,t){let n=e._radianceCubeMap;n.generateMipmap();let i=e._mipmapLevels,o=e._textureDimensions,r=o.x/2,s=o.y/2,a=t.context,c=0,u=(h,A,g,m,_)=>()=>{if(e.isDestroyed()||h.canceled){ui._activeComputeCommandCount--;return}let y=e._convolutionComputeCommands;y[A]=void 0,n.copyFace(t,g,m,_),c++,ui._activeComputeCommandCount--,g.destroy(),e._specularMapTextures[A]=void 0;let C=e._specularMapTextures.length;c>=C&&(e._irradianceCommandDirty=!0,n.sampler=new on({minificationFilter:Zt.LINEAR_MIPMAP_LINEAR}),e._shouldRegenerateShaders=!0,e._va.destroy(),e._va=void 0,e._convolveSP.destroy(),e._convolveSP=void 0)},f=0;for(let h=1;h<i;++h){for(let A of jr.faceNames()){l(e._specularMapTextures[f])&&e._specularMapTextures[f].destroy();let g=e._specularMapTextures[f]=new Nt({context:a,width:r,height:s,pixelDatatype:He.UNSIGNED_BYTE,pixelFormat:et.RGBA}),m=e._va;l(m)||(m=jr.createVertexArray(a,A),e._va=m);let _=e._convolveSP;l(_)||(_=ln.fromCache({context:a,vertexShaderSource:cF,fragmentShaderSource:aF,attributeLocations:{positions:0}}),e._convolveSP=_);let y=new Hl({shaderProgram:_,vertexArray:m,outputTexture:g,persists:!0,owner:e,uniformMap:{u_roughness:()=>h/(i-1),u_radianceTexture:()=>n??a.defaultTexture,u_faceDirection:()=>jr.getDirection(A,Tse)}});y.postExecute=u(y,f,g,A,h),e._convolutionComputeCommands[f]=y,ui._queueCommand(y,t),++f}r/=2,s/=2}}var Sse=new k(3,3);function Aze(e,t){let n=t.context,i=Sse,o=e._irradianceMapTexture;l(o)&&!o.isDestroyed()&&o.destroy(),o=new Nt({context:n,width:i.x,height:i.y,pixelDatatype:He.FLOAT,pixelFormat:et.RGBA}),e._irradianceMapTexture=o;let r=e._irradianceMapFS;l(r)||(r=new We({sources:[rF]}),e._irradianceMapFS=r);let s=new Hl({fragmentShaderSource:r,outputTexture:o,owner:e,uniformMap:{u_radianceMap:()=>e._radianceCubeMap??n.defaultTexture}});s.postExecute=()=>{if(e.isDestroyed()||s.canceled){ui._activeComputeCommandCount--;return}e._irradianceTextureDirty=!1,e._irradianceComputeCommand=void 0,e._sphericalHarmonicCoefficientsDirty=!0,e._irradianceMapFS=void 0,ui._activeComputeCommandCount--},e._irradianceComputeCommand=s,ui._queueCommand(s,t),e._irradianceTextureDirty=!0}function pze(e,t){let n=t.context;if(!l(e._irradianceMapTexture))return;let i=new as({context:n,colorTextures:[e._irradianceMapTexture],destroyAttachments:!1}),o=Sse,r=n.readPixels({x:0,y:0,width:o.x,height:o.y,framebuffer:i});for(let s=0;s<9;++s)e._sphericalHarmonicCoefficients[s]=d.unpack(r,s*4),d.multiplyByScalar(e._sphericalHarmonicCoefficients[s],e.atmosphereScatteringIntensity,e._sphericalHarmonicCoefficients[s]);i.destroy(),e._irradianceMapTexture.destroy(),e._irradianceMapTexture=void 0,e._shouldRegenerateShaders=!0}ui.prototype.update=function(e){let t=e.mode;if(!ui.isDynamicUpdateSupported(e)||!this.enabled||!this.shouldUpdate||!l(this._position)||t===ie.MORPHING){this._shouldRegenerateShaders=!1;return}ui._updateCommandQueue(e);let i=e.atmosphere.dynamicLighting,o=lze(this,e)||i===r_.SUNLIGHT&&!K.equalsEpsilon(e.time,this._lastTime,this.maximumSecondsDifference);if(this._shouldReset||o){this.reset(),this._shouldReset=!1,this._lastTime=K.clone(e.time,this._lastTime);return}if(this._radianceMapDirty&&(hze(this,e),this._radianceMapDirty=!1),this._convolutionsCommandsDirty&&(mze(this,e),this._convolutionsCommandsDirty=!1),this._irradianceCommandDirty&&(Aze(this,e),this._irradianceCommandDirty=!1),this._irradianceTextureDirty){this._shouldRegenerateShaders=!1;return}if(this._sphericalHarmonicCoefficientsDirty){pze(this,e),this._sphericalHarmonicCoefficientsDirty=!1;return}this._shouldRegenerateShaders=!1};ui.prototype.isDestroyed=function(){return!1};ui.prototype.destroy=function(){let e=this._radianceMapComputeCommands.length;for(let t=0;t<e;++t)this._radianceMapComputeCommands[t]=void 0;e=this._convolutionComputeCommands.length;for(let t=0;t<e;++t)this._convolutionComputeCommands[t]=void 0;this._irradianceMapComputeCommand=void 0,e=this._radianceMapTextures.length;for(let t=0;t<e;++t)this._radianceMapTextures[t]=this._radianceMapTextures[t]&&!this._radianceMapTextures[t].isDestroyed()&&this._radianceMapTextures[t].destroy();e=this._specularMapTextures.length;for(let t=0;t<e;++t)this._specularMapTextures[t]=this._specularMapTextures[t]&&!this._specularMapTextures[t].isDestroyed()&&this._specularMapTextures[t].destroy();return this._radianceCubeMap=this._radianceCubeMap&&this._radianceCubeMap.destroy(),this._irradianceMapTexture=this._irradianceMapTexture&&!this._irradianceMapTexture.isDestroyed()&&this._irradianceMapTexture.destroy(),l(this._va)&&this._va.destroy(),l(this._convolveSP)&&this._convolveSP.destroy(),ue(this)};ui.isDynamicUpdateSupported=function(e){let t=e.context;return t.halfFloatingPointTexture||t.colorBufferFloat};ui.AVERAGE_EARTH_GROUND_COLOR=Object.freeze(G.fromCssColorString("#717145"));ui.DEFAULT_SPHERICAL_HARMONIC_COEFFICIENTS=Object.freeze([Object.freeze(new d(.35449,.35449,.35449)),d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO,d.ZERO]);var s_=ui;var gB={HIGHLIGHT:0,REPLACE:1,MIX:2};gB.getColorBlend=function(e,t){if(e===gB.HIGHLIGHT)return 0;if(e===gB.REPLACE)return 1;if(e===gB.MIX)return D.clamp(t,D.EPSILON4,1)};var al=Object.freeze(gB);var gze={XTRANSLATE:"xTranslate",YTRANSLATE:"yTranslate",ZTRANSLATE:"zTranslate",XROTATE:"xRotate",YROTATE:"yRotate",ZROTATE:"zRotate",XSCALE:"xScale",YSCALE:"yScale",ZSCALE:"zScale",UNIFORMSCALE:"uniformScale"},cl=Object.freeze(gze);var _ze={STEP:0,LINEAR:1,CUBICSPLINE:2},Tm=Object.freeze(_ze);var wse={};function _B(e){this._count=e.count,this._properties=ze(e.properties,!0)}_B.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,wse)};_B.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,wse,e)};_B.prototype.getProperty=function(e,t){let n=this._properties[t];if(l(n))return ze(n[e],!0)};_B.prototype.setProperty=function(e,t,n){let i=this._properties[t];l(i)||(i=new Array(this._count),this._properties[t]=i),i[e]=ze(n,!0)};var a_=_B;function Bc(e){e=e??V.EMPTY_OBJECT,this._name=e.name,this._id=e.id,this._count=e.count,this._extras=e.extras,this._extensions=e.extensions,this._metadataTable=e.metadataTable,this._jsonMetadataTable=e.jsonMetadataTable,this._batchTableHierarchy=e.batchTableHierarchy}Object.defineProperties(Bc.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},count:{get:function(){return this._count}},class:{get:function(){if(l(this._metadataTable))return this._metadataTable.class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}},byteLength:{get:function(){let e=0;return l(this._metadataTable)&&(e+=this._metadataTable.byteLength),l(this._batchTableHierarchy)&&(e+=this._batchTableHierarchy.byteLength),e}}});Bc.prototype.hasProperty=function(e,t){return!!(l(this._metadataTable)&&this._metadataTable.hasProperty(t)||l(this._batchTableHierarchy)&&this._batchTableHierarchy.hasProperty(e,t)||l(this._jsonMetadataTable)&&this._jsonMetadataTable.hasProperty(t))};Bc.prototype.hasPropertyBySemantic=function(e,t){return l(this._metadataTable)?this._metadataTable.hasPropertyBySemantic(t):!1};Bc.prototype.propertyExists=function(e){return!!(l(this._metadataTable)&&this._metadataTable.hasProperty(e)||l(this._batchTableHierarchy)&&this._batchTableHierarchy.propertyExists(e)||l(this._jsonMetadataTable)&&this._jsonMetadataTable.hasProperty(e))};Bc.prototype.propertyExistsBySemantic=function(e){return l(this._metadataTable)?this._metadataTable.hasPropertyBySemantic(e):!1};var wW=[];Bc.prototype.getPropertyIds=function(e,t){if(t=l(t)?t:[],t.length=0,l(this._metadataTable)){let n=this._metadataTable.getPropertyIds(wW);si(t,n)}if(l(this._batchTableHierarchy)){let n=this._batchTableHierarchy.getPropertyIds(e,wW);si(t,n)}if(l(this._jsonMetadataTable)){let n=this._jsonMetadataTable.getPropertyIds(wW);si(t,n)}return t};Bc.prototype.getProperty=function(e,t){let n;if(l(this._metadataTable)&&(n=this._metadataTable.getProperty(e,t),l(n))||l(this._batchTableHierarchy)&&(n=this._batchTableHierarchy.getProperty(e,t),l(n))||l(this._jsonMetadataTable)&&(n=this._jsonMetadataTable.getProperty(e,t),l(n)))return n};Bc.prototype.setProperty=function(e,t,n){l(this._metadataTable)&&this._metadataTable.setProperty(e,t,n)||l(this._batchTableHierarchy)&&this._batchTableHierarchy.setProperty(e,t,n)||(l(this._jsonMetadataTable)||(this._jsonMetadataTable=new a_({count:this._count,properties:{}})),this._jsonMetadataTable.setProperty(e,t,n))};Bc.prototype.getPropertyBySemantic=function(e,t){if(l(this._metadataTable))return this._metadataTable.getPropertyBySemantic(e,t)};Bc.prototype.setPropertyBySemantic=function(e,t,n){return l(this._metadataTable)?this._metadataTable.setPropertyBySemantic(e,t,n):!1};Bc.prototype.getPropertyTypedArray=function(e){if(l(this._metadataTable))return this._metadataTable.getPropertyTypedArray(e)};Bc.prototype.getPropertyTypedArrayBySemantic=function(e){if(l(this._metadataTable))return this._metadataTable.getPropertyTypedArrayBySemantic(e)};Bc.prototype.isClass=function(e,t){let n=this._batchTableHierarchy;return l(n)?n.isClass(e,t):!1};Bc.prototype.isExactClass=function(e,t){return this.getExactClassName(e)===t};Bc.prototype.getExactClassName=function(e){let t=this._batchTableHierarchy;if(l(t))return t.getClassName(e)};var Wl=Bc;function yB(e){e=e??V.EMPTY_OBJECT;let t=e.property,n=e.classProperty,i=e.textures,o=l(t.channels)?t.channels:[0],r=t,s=Du.createModelTextureReader({textureInfo:r,channels:Eze(o),texture:i[r.index]});this._min=t.min,this._max=t.max;let a=t.offset,c=t.scale,u=n.hasValueTransform||l(a)||l(c);a=a??n.offset,c=c??n.scale,a=n.unpackVectorAndMatrixTypes(a),c=n.unpackVectorAndMatrixTypes(c),this._offset=a,this._scale=c,this._hasValueTransform=u,this._textureReader=s,this._classProperty=n,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(yB.prototype,{textureReader:{get:function(){return this._textureReader}},hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},classProperty:{get:function(){return this._classProperty}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});yB.prototype.isGpuCompatible=function(){let e=this._classProperty,t=e.type,n=e.componentType;return e.isArray?e.isVariableLengthArray?(yt(`Property texture property ${e.id} is a variable-length array, which is not supported`),!1):e.arrayLength>4?(yt(`Property texture property ${e.id} is an array of length ${e.arrayLength}, but may have at most a length of 4`),!1):t!==gt.SCALAR?(yt(`Property texture property ${e.id} is an array of type ${t}, but only SCALAR is supported`),!1):n!==zt.UINT8?(yt(`Property texture property ${e.id} is an array with component type ${n}, but only UINT8 is supported`),!1):!0:gt.isVectorType(t)||t===gt.SCALAR?n!==zt.UINT8?(yt(`Property texture property ${e.id} has component type ${n}, but only UINT8 is supported`),!1):!0:(yt(`Property texture property ${e.id} has an unsupported type`),!1)};var yze=[void 0,"float","vec2","vec3","vec4"],Cze=[void 0,"int","ivec2","ivec3","ivec4"];yB.prototype.getGlslType=function(){let e=this._classProperty,t=gt.getComponentCount(e.type);return e.isArray&&(t=e.arrayLength),e.normalized?yze[t]:Cze[t]};yB.prototype.unpackInShader=function(e){return this._classProperty.normalized?e:`${this.getGlslType()}(255.0 * ${e})`};function Eze(e){return e.map(function(t){return"rgba".charAt(t)}).join("")}var lF=yB;function BW(e){e=e??V.EMPTY_OBJECT;let t=e.propertyTexture,n=e.class,i=e.textures,o=t.extensions,r=t.extras,s={};if(l(t.properties))for(let a in t.properties)t.properties.hasOwnProperty(a)&&(s[a]=new lF({property:t.properties[a],classProperty:n.properties[a],textures:i}));this._name=e.name,this._id=e.id,this._class=n,this._properties=s,this._extras=r,this._extensions=o}Object.defineProperties(BW.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},class:{get:function(){return this._class}},properties:{get:function(){return this._properties}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});BW.prototype.getProperty=function(e){return this._properties[e]};var c_=BW;function Bse(e){e=e??V.EMPTY_OBJECT;let t=e.property,n=e.classProperty;this._attribute=t.attribute,this._classProperty=n,this._min=t.min,this._max=t.max;let i=t.offset,o=t.scale,r=n.hasValueTransform||l(i)||l(o);i=i??n.offset,o=o??n.scale,i=n.unpackVectorAndMatrixTypes(i),o=n.unpackVectorAndMatrixTypes(o),this._offset=i,this._scale=o,this._hasValueTransform=r,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(Bse.prototype,{attribute:{get:function(){return this._attribute}},hasValueTransform:{get:function(){return this._hasValueTransform}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},classProperty:{get:function(){return this._classProperty}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var uF=Bse;function DW(e){e=e??V.EMPTY_OBJECT;let t=e.propertyAttribute,n=e.class,i={};if(l(t.properties))for(let o in t.properties)t.properties.hasOwnProperty(o)&&(i[o]=new uF({property:t.properties[o],classProperty:n.properties[o]}));this._name=e.name,this._id=e.id,this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(DW.prototype,{name:{get:function(){return this._name}},id:{get:function(){return this._id}},class:{get:function(){return this._class}},properties:{get:function(){return this._properties}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});DW.prototype.getProperty=function(e){return this._properties[e]};var ux=DW;function CB(e){e=e??V.EMPTY_OBJECT,this._schema=e.schema;let t=e.propertyTables;this._propertyTableCount=l(t)?t.length:0,this._propertyTables=t,this._propertyTextures=e.propertyTextures,this._propertyAttributes=e.propertyAttributes,this._statistics=e.statistics,this._extras=e.extras,this._extensions=e.extensions}Object.defineProperties(CB.prototype,{schema:{get:function(){return this._schema}},statistics:{get:function(){return this._statistics}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}},propertyTableCount:{get:function(){return this._propertyTableCount}},propertyTables:{get:function(){return this._propertyTables}},propertyTextures:{get:function(){return this._propertyTextures}},propertyAttributes:{get:function(){return this._propertyAttributes}},propertyTablesByteLength:{get:function(){if(!l(this._propertyTables))return 0;let e=0,t=this._propertyTables.length;for(let n=0;n<t;n++)e+=this._propertyTables[n].byteLength;return e}}});CB.prototype.getPropertyTable=function(e){return this._propertyTables[e]};CB.prototype.getPropertyTexture=function(e){return this._propertyTextures[e]};CB.prototype.getPropertyAttribute=function(e){return this._propertyAttributes[e]};var Da=CB;function Ize(e){e=e??V.EMPTY_OBJECT;let t=e.extension,n=e.schema,i=[];if(l(t.propertyTables))for(let s=0;s<t.propertyTables.length;s++){let a=t.propertyTables[s],c=n.classes[a.class],u=new jd({count:a.count,properties:a.properties,class:c,bufferViews:e.bufferViews});i.push(new Wl({id:s,name:a.name,count:a.count,metadataTable:u,extras:a.extras,extensions:a.extensions}))}let o=[];if(l(t.propertyTextures))for(let s=0;s<t.propertyTextures.length;s++){let a=t.propertyTextures[s];o.push(new c_({id:s,name:a.name,propertyTexture:a,class:n.classes[a.class],textures:e.textures}))}let r=[];if(l(t.propertyAttributes))for(let s=0;s<t.propertyAttributes.length;s++){let a=t.propertyAttributes[s];r.push(new ux({id:s,name:a.name,class:n.classes[a.class],propertyAttribute:a}))}return new Da({schema:n,propertyTables:i,propertyTextures:o,propertyAttributes:r,statistics:t.statistics,extras:t.extras,extensions:t.extensions})}var fF=Ize;function xze(e){e=e??V.EMPTY_OBJECT;let t=e.extension,n=e.schema,i,o=[],r;if(l(t.featureTables))for(r=Object.keys(t.featureTables).sort(),i=0;i<r.length;i++){let a=r[i],c=t.featureTables[a],u=n.classes[c.class],f=new jd({count:c.count,properties:c.properties,class:u,bufferViews:e.bufferViews});o.push(new Wl({id:a,count:c.count,metadataTable:f,extras:c.extras,extensions:c.extensions}))}let s=[];if(l(t.featureTextures))for(r=Object.keys(t.featureTextures).sort(),i=0;i<r.length;i++){let a=r[i],c=t.featureTextures[a];s.push(new c_({id:a,propertyTexture:bze(c),class:n.classes[c.class],textures:e.textures}))}return new Da({schema:n,propertyTables:o,propertyTextures:s,statistics:t.statistics,extras:t.extras,extensions:t.extensions})}function bze(e){let t={class:e.class,properties:{}},n=e.properties;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i],r={channels:Tze(o.channels),extras:o.extras,extensions:o.extensions};t.properties[i]=wt(o.texture,r,!0)}return t}function Tze(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]="rgba".indexOf(e[i]);return n}var dF=xze;function l_(e){e=e??V.EMPTY_OBJECT;let{gltf:t,extension:n,extensionLegacy:i,gltfResource:o,baseResource:r,supportedImageFormats:s,frameState:a,cacheKey:c,asynchronous:u=!0}=e;this._gltfResource=o,this._baseResource=r,this._gltf=t,this._extension=n,this._extensionLegacy=i,this._supportedImageFormats=s,this._frameState=a,this._cacheKey=c,this._asynchronous=u,this._bufferViewLoaders=[],this._bufferViewIds=[],this._textureLoaders=[],this._textureIds=[],this._schemaLoader=void 0,this._structuralMetadata=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(l_.prototype=Object.create(qi.prototype),l_.prototype.constructor=l_);Object.defineProperties(l_.prototype,{cacheKey:{get:function(){return this._cacheKey}},structuralMetadata:{get:function(){return this._structuralMetadata}}});async function Sze(e){try{let t=Pze(e),n=Oze(e),i=Fze(e);return await Promise.all([t,n,i]),e.isDestroyed()?void 0:(e._gltf=void 0,e._state=dt.LOADED,e)}catch(t){if(e.isDestroyed())return;throw e.unload(),e._state=dt.FAILED,e.getError("Failed to load structural metadata",t)}}l_.prototype.load=function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=Sze(this),this._promise)};function wze(e,t){for(let n in e)if(e.hasOwnProperty(n)){let i=e[n],o=i.values,r=i.arrayOffsets,s=i.stringOffsets;l(o)&&(t[o]=!0),l(r)&&(t[r]=!0),l(s)&&(t[s]=!0)}}function Bze(e,t){for(let n in e)if(e.hasOwnProperty(n)){let i=e[n],o=i.bufferView,r=i.arrayOffsetBufferView,s=i.stringOffsetBufferView;l(o)&&(t[o]=!0),l(r)&&(t[r]=!0),l(s)&&(t[s]=!0)}}function Dze(e){let t=e.propertyTables,n={};if(l(t))for(let i=0;i<t.length;i++){let o=t[i];wze(o.properties,n)}return n}function vze(e){let t=e.featureTables,n={};if(l(t)){for(let i in t)if(t.hasOwnProperty(i)){let r=t[i].properties;l(r)&&Bze(r,n)}}return n}async function Pze(e){let t;l(e._extension)?t=Dze(e._extension):t=vze(e._extensionLegacy);let n=[];for(let i in t)if(t.hasOwnProperty(i)){let o=Qi.getBufferViewLoader({gltf:e._gltf,bufferViewId:parseInt(i),gltfResource:e._gltfResource,baseResource:e._baseResource});e._bufferViewLoaders.push(o),e._bufferViewIds.push(i),n.push(o.load())}return Promise.all(n)}function Rze(e){let t={},n=e.propertyTextures;if(l(n))for(let i=0;i<n.length;i++){let r=n[i].properties;l(r)&&Mze(r,t)}return t}function Mze(e,t){for(let n in e)if(e.hasOwnProperty(n)){let i=e[n];t[i.index]=i}}function Nze(e){let t={},n=e.featureTextures;if(l(n)){for(let i in n)if(n.hasOwnProperty(i)){let r=n[i].properties;l(r)&&Lze(r,t)}}return t}function Lze(e,t){for(let n in e)if(e.hasOwnProperty(n)){let o=e[n].texture;t[o.index]=o}}function Oze(e){let t;l(e._extension)?t=Rze(e._extension):t=Nze(e._extensionLegacy);let n=e._gltf,i=e._gltfResource,o=e._baseResource,r=e._supportedImageFormats,s=e._frameState,a=e._asynchronous,c=[];for(let u in t)if(t.hasOwnProperty(u)){let f=Qi.getTextureLoader({gltf:n,textureInfo:t[u],gltfResource:i,baseResource:o,supportedImageFormats:r,frameState:s,asynchronous:a});e._textureLoaders.push(f),e._textureIds.push(u),c.push(f.load())}return Promise.all(c)}async function Fze(e){let t=e._extension??e._extensionLegacy,n;if(l(t.schemaUri)){let i=e._baseResource.getDerivedResource({url:t.schemaUri});n=Qi.getSchemaLoader({resource:i})}else n=Qi.getSchemaLoader({schema:t.schema});if(e._schemaLoader=n,await n.load(),!n.isDestroyed())return n.schema}l_.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED)return!1;let t=this._textureLoaders,n=t.length,i=!0;for(let a=0;a<n;++a){let u=t[a].process(e);i=i&&u}if(!i)return!1;let o=this._schemaLoader.schema,r={};for(let a=0;a<this._bufferViewIds.length;++a){let c=this._bufferViewIds[a],u=this._bufferViewLoaders[a];if(!u.isDestroyed()){let f=new Uint8Array(u.typedArray);r[c]=f}}let s={};for(let a=0;a<this._textureIds.length;++a){let c=this._textureIds[a],u=t[a];u.isDestroyed()||(s[c]=u.texture)}return l(this._extension)?this._structuralMetadata=fF({extension:this._extension,schema:o,bufferViews:r,textures:s}):this._structuralMetadata=dF({extension:this._extensionLegacy,schema:o,bufferViews:r,textures:s}),Dse(this),this._state=dt.READY,!0};function Dse(e){let t=e._bufferViewLoaders,n=t.length;for(let i=0;i<n;++i)Qi.unload(t[i]);e._bufferViewLoaders.length=0,e._bufferViewIds.length=0}function Qze(e){let t=e._textureLoaders,n=t.length;for(let i=0;i<n;++i)Qi.unload(t[i]);e._textureLoaders.length=0,e._textureIds.length=0}l_.prototype.unload=function(){Dse(this),Qze(this),l(this._schemaLoader)&&Qi.unload(this._schemaLoader),this._schemaLoader=void 0,this._structuralMetadata=void 0};var hF=l_;var fx={TRANSLATION:"TRANSLATION",ROTATION:"ROTATION",SCALE:"SCALE",FEATURE_ID:"_FEATURE_ID"};fx.fromGltfSemantic=function(e){let t=e,i=/^(\w+)_\d+$/.exec(e);switch(i!==null&&(t=i[1]),t){case"TRANSLATION":return fx.TRANSLATION;case"ROTATION":return fx.ROTATION;case"SCALE":return fx.SCALE;case"_FEATURE_ID":return fx.FEATURE_ID}};var Ss=Object.freeze(fx);var kze=65534,Uze=255;function mF(e){e=e??V.EMPTY_OBJECT;let t=e.triangleIndices,n=e.outlineIndices,i=e.originalVertexCount;this._triangleIndices=t,this._originalVertexCount=i,this._edges=new Rse(n,i),this._outlineCoordinatesTypedArray=void 0,this._extraVertices=[],Gze(this)}Object.defineProperties(mF.prototype,{updatedTriangleIndices:{get:function(){return this._triangleIndices}},outlineCoordinates:{get:function(){return this._outlineCoordinatesTypedArray}}});function Gze(e){let t=e._triangleIndices,n=e._edges,i=[],o=e._extraVertices,r=e._originalVertexCount,s={};for(let a=0;a<t.length;a+=3){let c=t[a],u=t[a+1],f=t[a+2],h=!1,A=h||n.hasEdge(c,u),g=h||n.hasEdge(u,f),m=h||n.hasEdge(f,c),_=vse(i,c,u,f,A,g,m);for(;l(_);){let y=s[_];if(!l(y)){y=r+o.length;let C=_;for(;C>=r;)C=o[C-r];o.push(C),s[_]=y}y>kze&&(t instanceof Uint16Array||t instanceof Uint8Array)?t=new Uint32Array(t):y>Uze&&t instanceof Uint8Array&&(t=new Uint16Array(t)),_===c?(c=y,t[a]=y):_===u?(u=y,t[a+1]=y):(f=y,t[a+2]=y),_=vse(i,c,u,f,A,g,m)}}e._triangleIndices=t,e._outlineCoordinatesTypedArray=new Float32Array(i)}function vse(e,t,n,i,o,r,s){let a=s?1:0,c=o?1:0,u=0,f=vW(e,t,a,c,u);if(f===0)return t;let h=0,A=o?1:0,g=r?1:0,m=vW(e,n,h,A,g);if(m===0)return n;let _=s?1:0,y=0,C=r?1:0,E=vW(e,i,_,y,C);if(E===0)return i;let I=f&m&E,b,S,B;if(I&1)b=0,S=1,B=2;else if(I&2)b=0,B=1,S=2;else if(I&4)S=0,b=1,B=2;else if(I&8)S=0,B=1,b=2;else if(I&16)B=0,b=1,S=2;else if(I&32)B=0,S=1,b=2;else{let L=PW(f),p=PW(m),x=PW(E);return L<p&&L<x?t:p<x?n:i}let v=t*3;e[v+b]=a,e[v+S]=c,e[v+B]=u;let P=n*3;e[P+b]=h,e[P+S]=A,e[P+B]=g;let N=i*3;e[N+b]=_,e[N+S]=y,e[N+B]=C}function vW(e,t,n,i,o){let r=t*3,s=e[r],a=e[r+1],c=e[r+2];return l(s)?(s===n&&a===i&&c===o)<<0|(s===n&&a===o&&c===i)<<1|(s===i&&a===n&&c===o)<<2|(s===i&&a===o&&c===n)<<3|(s===o&&a===n&&c===i)<<4|(s===o&&a===i&&c===n)<<5:63}function PW(e){return(e&1)+(e>>1&1)+(e>>2&1)+(e>>3&1)+(e>>4&1)+(e>>5&1)}mF.prototype.updateAttribute=function(e){let t=this._extraVertices,n=e.length,i=n/this._originalVertexCount,o=t.length,r=e.constructor,s=new r(e.length+o*i);s.set(e);for(let a=0;a<o;a++){let c=t[a]*i,u=n+a*i;for(let f=0;f<i;f++)s[u+f]=s[c+f]}return s};mF.createTexture=function(e){let t=e.cache.modelOutliningCache;if(l(t)||(t=e.cache.modelOutliningCache={}),l(t.outlineTexture))return t.outlineTexture;let n=Math.min(4096,qt.maximumTextureSize),i=n,o=Pse(i),r=[];for(;i>1;)i>>=1,r.push(Pse(i));let s=new Nt({context:e,source:{arrayBufferView:o,mipLevels:r},width:n,height:1,pixelFormat:et.LUMINANCE,sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR_MIPMAP_LINEAR,magnificationFilter:pi.LINEAR})});return t.outlineTexture=s,s};function Pse(e){let t=new Uint8Array(e);return t[e-1]=192,e===8?t[e-1]=96:e===4?t[e-1]=48:e===2?t[e-1]=24:e===1&&(t[e-1]=12),t}function Rse(e,t){this._originalVertexCount=t,this._edges=new Set;for(let n=0;n<e.length;n+=2){let i=e[n],o=e[n+1],r=Math.min(i,o),s=Math.max(i,o),a=r*this._originalVertexCount+s;this._edges.add(a)}}Rse.prototype.hasEdge=function(e,t){let n=Math.min(e,t),i=Math.max(e,t),o=n*this._originalVertexCount+i;return this._edges.has(o)};var dx=mF;function Mse(e){this.attribute=e,this.loadBuffer=!1,this.loadTypedArray=!1}function zze(e){this.indices=e,this.loadBuffer=!1,this.loadTypedArray=!1}function AF(e){this.primitive=e,this.attributePlans=[],this.indicesPlan=void 0,this.needsOutlines=!1,this.outlineIndices=void 0,this.needsGaussianSplats=!1}AF.prototype.postProcess=function(e){this.needsOutlines&&(Vze(this),jze(this,e)),this.needsGaussianSplats&&Wze(this,e)};function Vze(e){let t=e.primitive,n=t.indices,i=t.attributes[0].count,o=new dx({triangleIndices:n.typedArray,outlineIndices:e.outlineIndices,originalVertexCount:i});n.typedArray=o.updatedTriangleIndices,n.indexDatatype=Fe.fromTypedArray(n.typedArray);let r=Hze(o.outlineCoordinates),s=new Mse(r);s.loadBuffer=!0,s.loadTypedArray=!1,e.attributePlans.push(s),t.outlineCoordinates=s.attribute;let a=e.attributePlans,c=e.attributePlans.length;for(let u=0;u<c;u++){let f=a[u].attribute;f.typedArray=o.updateAttribute(f.typedArray)}}function Hze(e){let t=new bn.Attribute;return t.name="_OUTLINE_COORDINATES",t.typedArray=e,t.componentDatatype=q.FLOAT,t.type=Ht.VEC3,t.normalized=!1,t.count=e.length/3,t}function Wze(e,t){let n=e.attributePlans,i=n.length;for(let o=0;o<i;o++){let r=n[o];r.loadBuffer=!1,r.loadTypedArray=!0}}function jze(e,t){Yze(e.attributePlans,t),l(e.indicesPlan)&&qze(e.indicesPlan,t)}function Yze(e,t){let n=e.length;for(let i=0;i<n;i++){let o=e[i],r=o.attribute,s=r.typedArray;if(o.loadBuffer){let a=Et.createVertexBuffer({typedArray:s,context:t,usage:Qe.STATIC_DRAW});a.vertexArrayDestroyable=!1,r.buffer=a}o.loadTypedArray||(r.typedArray=void 0)}}function qze(e,t){let n=e.indices;if(e.loadBuffer){let i=Et.createIndexBuffer({typedArray:n.typedArray,context:t,usage:Qe.STATIC_DRAW,indexDatatype:n.indexDatatype});n.buffer=i,i.vertexArrayDestroyable=!1}e.loadTypedArray||(n.typedArray=void 0)}AF.AttributeLoadPlan=Mse;AF.IndicesLoadPlan=zze;var hx=AF;function Kze(e){e=e??V.EMPTY_OBJECT,this.webp=e.webp??!1,this.basis=e.basis??!1}var pF=Kze;function Nse(e){this._position=e.position,this._adjustmentParams=e.adjustmentParams}Object.defineProperties(Nse.prototype,{position:{get:function(){return this._position}},adjustmentParams:{get:function(){return this._adjustmentParams}}});var gF=Nse;function Lse(e){this._position=e.position,this._adjustmentParams=e.adjustmentParams,this._covarianceMatrix=e.covarianceMatrix}Object.defineProperties(Lse.prototype,{position:{get:function(){return this._position}},adjustmentParams:{get:function(){return this._adjustmentParams}},covarianceMatrix:{get:function(){return this._covarianceMatrix}}});var _F=Lse;function Ose(e){this._groupFlags=e.groupFlags,this._rotationThetas=e.rotationThetas,this._params=e.params}Object.defineProperties(Ose.prototype,{groupFlags:{get:function(){return this._groupFlags}},rotationThetas:{get:function(){return this._rotationThetas}},params:{get:function(){return this._params}}});var yF=Ose;var Xze={Direct:"Direct",Indirect:"Indirect"},YC=Object.freeze(Xze);function Fse(e){this._storageType=e.storageType,this._anchorPointsIndirect=e.anchorPointsIndirect,this._anchorPointsDirect=e.anchorPointsDirect,this._intraTileCorrelationGroups=e.intraTileCorrelationGroups,this._covarianceDirect=e.covarianceDirect}Object.defineProperties(Fse.prototype,{storageType:{get:function(){return this._storageType}},anchorPointsIndirect:{get:function(){return this._anchorPointsIndirect}},anchorPointsDirect:{get:function(){return this._anchorPointsDirect}},intraTileCorrelationGroups:{get:function(){return this._intraTileCorrelationGroups}},covarianceDirect:{get:function(){return this._covarianceDirect}}});var EB=Fse;function Qse(e){this._A=e.A,this._alpha=e.alpha,this._beta=e.beta,this._T=e.T}Object.defineProperties(Qse.prototype,{A:{get:function(){return this._A}},alpha:{get:function(){return this._alpha}},beta:{get:function(){return this._beta}},T:{get:function(){return this._T}}});var CF=Qse;function mx(){}function kse(e){return new J(e[0],e[1],e[3],e[1],e[2],e[4],e[3],e[4],e[5])}function Jze(e){let t=d.fromArray(e.position,0,new d),n=d.fromArray(e.adjustmentParams,0,new d);return new gF({position:t,adjustmentParams:n})}function Zze(e){let t=d.fromArray(e.position,0,new d),n=d.fromArray(e.adjustmentParams,0,new d),i=kse(e.covarianceMatrix);return new _F({position:t,adjustmentParams:n,covarianceMatrix:i})}function $ze(e){let t=e.groupFlags,n=d.fromArray(e.rotationThetas,0,new d),i=[];for(let r of e.params){let s=new CF({A:r.A,alpha:r.alpha,beta:r.beta,T:r.T});i.push(s)}return new yF({groupFlags:t,rotationThetas:n,params:i})}mx.load=function(e){let t=e.storageType;if(t===YC.Direct)return mx.loadDirect(e);if(t===YC.Indirect)return mx.loadIndirect(e);throw new ce(`Invalid storage type in NGA_gpm_local - expected 'Direct' or 'Indirect', but found ${t}`)};mx.loadDirect=function(e){let t=[],n=e.anchorPointsDirect;for(let r of n){let s=Jze(r);t.push(s)}let i=kse(e.covarianceDirectUpperTriangle);return new EB({storageType:YC.Direct,anchorPointsDirect:t,covarianceDirect:i})};mx.loadIndirect=function(e){let t=[],n=e.anchorPointsIndirect;for(let s of n){let a=Zze(s);t.push(a)}let i=e.intraTileCorrelationGroups,o=[];for(let s of i){let a=$ze(s);o.push(a)}return new EB({storageType:YC.Indirect,anchorPointsIndirect:t,intraTileCorrelationGroups:o})};var EF=mx;function Use(e){this._traits=e.traits,this._noData=e.noData,this._offset=e.offset,this._scale=e.scale,this._index=e.index,this._texCoord=e.texCoord}Object.defineProperties(Use.prototype,{traits:{get:function(){return this._traits}},noData:{get:function(){return this._noData}},offset:{get:function(){return this._offset}},scale:{get:function(){return this._scale}},index:{get:function(){return this._index}},texCoord:{get:function(){return this._texCoord}}});var IF=Use;function Gse(e){this._min=e.min,this._max=e.max,this._source=e.source}Object.defineProperties(Gse.prototype,{min:{get:function(){return this._min}},max:{get:function(){return this._max}},source:{get:function(){return this._source}}});var xF=Gse;function zse(e){this._ppeTextures=e}Object.defineProperties(zse.prototype,{ppeTextures:{get:function(){return this._ppeTextures}}});var bF=zse;function Mr(e){e=e??V.EMPTY_OBJECT;let t=e.gltf,n=e.extension,i=e.gltfResource,o=e.baseResource,r=e.supportedImageFormats,s=e.frameState,a=e.cacheKey,c=e.asynchronous??!0;this._gltfResource=i,this._baseResource=o,this._gltf=t,this._extension=n,this._supportedImageFormats=r,this._frameState=s,this._cacheKey=a,this._asynchronous=c,this._textureLoaders=[],this._textureIds=[],this._meshPrimitiveGpmLocal=void 0,this._structuralMetadata=void 0,this._state=dt.UNLOADED,this._promise=void 0}l(Object.create)&&(Mr.prototype=Object.create(qi.prototype),Mr.prototype.constructor=Mr);Object.defineProperties(Mr.prototype,{cacheKey:{get:function(){return this._cacheKey}},meshPrimitiveGpmLocal:{get:function(){return this._meshPrimitiveGpmLocal}},structuralMetadata:{get:function(){return this._structuralMetadata}}});Mr.prototype._loadResources=async function(){try{return await this._loadTextures(),this.isDestroyed()?void 0:(this._gltf=void 0,this._state=dt.LOADED,this)}catch(e){if(this.isDestroyed())return;throw this.unload(),this._state=dt.FAILED,this.getError("Failed to load GPM data",e)}};Mr.prototype.load=function(){return l(this._promise)?this._promise:(this._state=dt.LOADING,this._promise=this._loadResources(this),this._promise)};function eVe(e){let t={},n=e.ppeTextures;if(l(n))for(let i=0;i<n.length;i++){let o=n[i];t[o.index]=o}return t}Mr.prototype._loadTextures=function(){let e;l(this._extension)&&(e=eVe(this._extension));let t=this._gltf,n=this._gltfResource,i=this._baseResource,o=this._supportedImageFormats,r=this._frameState,s=this._asynchronous,a=[];for(let c in e)if(e.hasOwnProperty(c)){let u=Qi.getTextureLoader({gltf:t,textureInfo:e[c],gltfResource:n,baseResource:i,supportedImageFormats:o,frameState:r,asynchronous:s});this._textureLoaders.push(u),this._textureIds.push(c),a.push(u.load())}return Promise.all(a)};Mr.ppeTexturesMetadataSchemaCache=new Map;Mr._createPpeTextureClassJson=function(e,t){let n=e.traits,i=n.source,o=e.offset??0,r=(e.scale??1)*255;return{name:`PPE texture class ${t}`,properties:{[i]:{name:"PPE",type:"SCALAR",componentType:"UINT8",normalized:!0,offset:o,scale:r,min:n.min,max:n.max}}}};Mr._obtainPpeTexturesMetadataSchema=function(e){let n=Mr._collectPpeTexturePropertyIdentifiers(e).toString(),i=Mr.ppeTexturesMetadataSchemaCache.get(n);if(l(i))return i;let r={id:`PPE_TEXTURE_SCHEMA_${Mr.ppeTexturesMetadataSchemaCache.size}`,classes:{}},s=e.ppeTextures;for(let a=0;a<s.length;a++){let c=s[a],u=`ppeTexture_${a}`,f=Mr._createPpeTextureClassJson(c,a);r.classes[u]=f}return i=Mf.fromJson(r),Mr.ppeTexturesMetadataSchemaCache.set(n,i),i};Mr._collectPpeTexturePropertyIdentifiers=function(e){let t=[],n=e.ppeTextures;for(let i=0;i<n.length;i++){let o=n[i],r=Mr._createPpeTextureClassJson(o,i),s=JSON.stringify(r);t.push(s)}return t};Mr._convertToStructuralMetadata=function(e,t){let n=[],i=Mr._obtainPpeTexturesMetadataSchema(e),o=e.ppeTextures;for(let s=0;s<o.length;s++){let a=o[s],c=`ppeTexture_${s}`,f=a.traits.source,h=i.classes[c],A={class:c,properties:{[f]:{index:a.index,texCoord:a.texCoord}}};n.push(new c_({id:s,name:a.name,propertyTexture:A,class:h,textures:t}))}return new Da({schema:i,propertyTables:[],propertyTextures:n,propertyAttributes:[]})};Mr.prototype.process=function(e){if(this._state===dt.READY)return!0;if(this._state!==dt.LOADED)return!1;let t=this._textureLoaders,n=t.length,i=!0;for(let u=0;u<n;++u){let h=t[u].process(e);i=i&&h}if(!i)return!1;let o={};for(let u=0;u<this._textureIds.length;++u){let f=this._textureIds[u],h=t[u];h.isDestroyed()||(o[f]=h.texture)}let r=[],s=this._extension;if(l(s.ppeTextures)){let u=s.ppeTextures;for(let f of u){let h=f.traits,A=new xF({min:h.min,max:h.max,source:h.source}),g=new IF({traits:A,noData:f.noData,offset:f.offset,scale:f.scale,index:f.index,texCoord:f.texCoord});r.push(g)}}let a=new bF(r);this._meshPrimitiveGpmLocal=a;let c=Mr._convertToStructuralMetadata(a,o);return this._structuralMetadata=c,this._state=dt.READY,!0};Mr.prototype._unloadTextures=function(){let e=this._textureLoaders,t=e.length;for(let n=0;n<t;++n)Qi.unload(e[n]);this._textureLoaders.length=0,this._textureIds.length=0};Mr.prototype.unload=function(){this._unloadTextures(),this._gltf=void 0,this._extension=void 0,this._structuralMetadata=void 0};var TF=Mr;var{Attribute:tVe,Indices:nVe,FeatureIdAttribute:Vse,FeatureIdTexture:Hse,FeatureIdImplicitRange:Wse,MorphTarget:iVe,Primitive:oVe,Instances:rVe,Skin:sVe,Node:aVe,AnimatedPropertyType:cVe,AnimationSampler:lVe,AnimationTarget:uVe,AnimationChannel:fVe,Animation:dVe,ArticulationStage:hVe,Articulation:mVe,Asset:AVe,Scene:pVe,Components:gVe,MetallicRoughness:_Ve,SpecularGlossiness:yVe,Specular:CVe,Anisotropy:RW,Clearcoat:MW,Material:EVe}=bn,Go={NOT_LOADED:0,LOADING:1,LOADED:2,PROCESSING:3,POST_PROCESSING:4,PROCESSED:5,READY:6,FAILED:7,UNLOADED:8};function Kd(e){e=e??V.EMPTY_OBJECT;let{gltfResource:t,typedArray:n,releaseGltfJson:i=!1,asynchronous:o=!0,incrementallyLoadTextures:r=!0,upAxis:s=Ao.Y,forwardAxis:a=Ao.Z,loadAttributesAsTypedArray:c=!1,loadAttributesFor2D:u=!1,enablePick:f=!1,loadIndicesForWireframe:h=!1,loadPrimitiveOutline:A=!0,loadForClassification:g=!1,renameBatchIdSemantic:m=!1}=e,{baseResource:_=t.clone()}=e;this._gltfJson=e.gltfJson,this._gltfResource=t,this._baseResource=_,this._typedArray=n,this._releaseGltfJson=i,this._asynchronous=o,this._incrementallyLoadTextures=r,this._upAxis=s,this._forwardAxis=a,this._loadAttributesAsTypedArray=c,this._loadAttributesFor2D=u,this._enablePick=f,this._loadIndicesForWireframe=h,this._loadPrimitiveOutline=A,this._loadForClassification=g,this._renameBatchIdSemantic=m,this._sortedPropertyTableIds=void 0,this._sortedFeatureTextureIds=void 0,this._gltfJsonLoader=void 0,this._state=Go.NOT_LOADED,this._textureState=Go.NOT_LOADED,this._promise=void 0,this._processError=void 0,this._textureErrors=[],this._primitiveLoadPlans=[],this._loaderPromises=[],this._textureLoaders=[],this._texturesPromises=[],this._textureCallbacks=[],this._bufferViewLoaders=[],this._geometryLoaders=[],this._geometryCallbacks=[],this._structuralMetadataLoader=void 0,this._meshPrimitiveGpmLoader=void 0,this._loadResourcesPromise=void 0,this._resourcesLoaded=!1,this._texturesLoaded=!1,this._supportedImageFormats=void 0,this._postProcessBuffers=[],this._components=void 0}l(Object.create)&&(Kd.prototype=Object.create(qi.prototype),Kd.prototype.constructor=Kd);Object.defineProperties(Kd.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}},gltfJson:{get:function(){return l(this._gltfJsonLoader)?this._gltfJsonLoader.gltf:this._gltfJson}},incrementallyLoadTextures:{get:function(){return this._incrementallyLoadTextures}},texturesLoaded:{get:function(){return this._texturesLoaded}}});async function IVe(e){e._state=Go.LOADING,e._textureState=Go.LOADING;try{let t=Qi.getGltfJsonLoader({gltfResource:e._gltfResource,baseResource:e._baseResource,typedArray:e._typedArray,gltfJson:e._gltfJson});return e._gltfJsonLoader=t,await t.load(),e.isDestroyed()||e.isUnloaded()||t.isDestroyed()?void 0:(e._state=Go.LOADED,e._textureState=Go.LOADED,e)}catch(t){if(e.isDestroyed())return;e._state=Go.FAILED,e._textureState=Go.FAILED,SF(e,t)}}async function xVe(e,t){jt.supportsWebP.initialized||await jt.supportsWebP.initialize(),e._supportedImageFormats=new pF({webp:jt.supportsWebP(),basis:t.context.supportsBasis});let n=w8e(e,t);return e._state=Go.PROCESSING,e._textureState=Go.PROCESSING,l(e._gltfJsonLoader)&&e._releaseGltfJson&&(Qi.unload(e._gltfJsonLoader),e._gltfJsonLoader=void 0),n}Kd.prototype.load=async function(){return l(this._promise)?this._promise:(this._promise=IVe(this),this._promise)};function SF(e,t){throw e.unload(),e.getError("Failed to load glTF",t)}function bVe(e,t){let n=!0,i=e._geometryLoaders;for(let s=0;s<i.length;++s){let a=i[s].process(t);a&&l(e._geometryCallbacks[s])&&(e._geometryCallbacks[s](),e._geometryCallbacks[s]=void 0),n=n&&a}let o=e._structuralMetadataLoader;if(l(o)){let s=o.process(t);s&&(e._components.structuralMetadata=o.structuralMetadata),n=n&&s}let r=e._meshPrimitiveGpmLoader;if(l(r)){let s=r.process(t);s&&(l(e._components.structuralMetadata)&&yt("structural-metadata-gpm","The model defines both the 'EXT_structural_metadata' extension and the 'NGA_gpm_local' extension. The data from the 'EXT_structural_metadata' extension will be replaced with the data from the 'NGA_gpm_local' extension, and will no longer be available for styling and picking."),e._components.structuralMetadata=r.structuralMetadata),n=n&&s}n&&(e._state=Go.POST_PROCESSING)}function TVe(e,t){let n=e._primitiveLoadPlans;for(let i=0;i<n.length;i++){let o=n[i];o.postProcess(t),(o.needsOutlines||o.needsGaussianSplats)&&SVe(e,o)}}function SVe(e,t){let n=e._postProcessBuffers,i=t.primitive,o=i.outlineCoordinates;l(o)&&n.push(o.buffer);let r=i.attributes;for(let a=0;a<r.length;a++){let c=r[a];l(c.buffer)&&n.push(c.buffer)}let s=i.indices;l(s)&&l(s.buffer)&&n.push(s.buffer)}Kd.prototype._process=function(e){return this._state===Go.READY?!0:(this._state===Go.PROCESSING&&bVe(this,e),this._resourcesLoaded&&this._state===Go.POST_PROCESSING&&(TVe(this,e.context),this._state=Go.PROCESSED),this._resourcesLoaded&&this._state===Go.PROCESSED?(eae(this),this._typedArray=void 0,this._state=Go.READY,!0):!1)};Kd.prototype._processTextures=function(e){if(this._textureState===Go.READY)return!0;if(this._textureState!==Go.PROCESSING)return!1;let t=!0,n=this._textureLoaders;for(let i=0;i<n.length;++i){let o=n[i].process(e);o&&l(this._textureCallbacks[i])&&(this._textureCallbacks[i](),this._textureCallbacks[i]=void 0),t=t&&o}return t?(this._textureState=Go.READY,this._texturesLoaded=!0,!0):!1};Kd.prototype.process=function(e){if(this._state===Go.LOADED&&!l(this._loadResourcesPromise)&&(this._loadResourcesPromise=xVe(this,e).then(()=>{this._resourcesLoaded=!0}).catch(o=>{this._processError=o})),l(this._processError)){this._state=Go.FAILED;let o=this._processError;this._processError=void 0,SF(this,o)}let t=this._textureErrors.pop();if(l(t)){let o=this.getError("Failed to load glTF texture",t);throw o.name="TextureError",o}if(this._state===Go.FAILED)return!1;let n=!1;try{n=this._process(e)}catch(o){this._state=Go.FAILED,SF(this,o)}let i=!1;try{i=this._processTextures(e)}catch(o){this._textureState=Go.FAILED,SF(this,o)}return this._incrementallyLoadTextures?n:n&&i};function wVe(e,t,n,i,o,r,s,a,c){let u=e.gltfJson,h=u.accessors[t].bufferView;return Qi.getVertexBufferLoader({gltf:u,gltfResource:e._gltfResource,baseResource:e._baseResource,frameState:c,bufferViewId:h,primitive:i,draco:o,spz:r,attributeSemantic:n,accessorId:t,asynchronous:e._asynchronous,loadBuffer:s,loadTypedArray:a})}function BVe(e,t,n,i,o,r,s){return Qi.getIndexBufferLoader({gltf:e.gltfJson,accessorId:t,gltfResource:e._gltfResource,baseResource:e._baseResource,frameState:s,primitive:n,draco:i,asynchronous:e._asynchronous,loadBuffer:o,loadTypedArray:r})}function DVe(e,t){let n=Qi.getBufferViewLoader({gltf:e.gltfJson,bufferViewId:t,gltfResource:e._gltfResource,baseResource:e._baseResource});return e._bufferViewLoaders.push(n),n}function jse(e,t,n){let i=t.byteOffset,o=Bu(e,t),r=t.count,s=Rf(t.type),a=t.componentType,c=q.getSizeInBytes(a),u=c*s,f=r*s;if(o===u)return n=new Uint8Array(n),q.createArrayBufferView(a,n.buffer,n.byteOffset+i,f);let h=q.createTypedArray(a,f),A=new DataView(n.buffer),g=new Array(s),m=Kg(t.componentType);i=n.byteOffset+i;for(let _=0;_<r;++_){m(A,i,s,c,g);for(let y=0;y<s;++y)h[_*s+y]=g[y];i+=o}return h}function vVe(e,t){let n=e.type;if(n===Ht.SCALAR)return t.fill(0);let i=Ht.getMathType(n);return t.fill(i.clone(i.ZERO))}function PVe(e,t,n,i){let o=e.type,r=e.count;if(o===Ht.SCALAR)for(let s=0;s<r;s++)n[s]=t[s];else if(o===Ht.VEC4&&i)for(let s=0;s<r;s++)n[s]=Le.unpack(t,s*4);else{let s=Ht.getMathType(o),a=Ht.getNumberOfComponents(o);for(let c=0;c<r;c++)n[c]=s.unpack(t,c*a)}return n}async function RVe(e,t,n,i,o){let{gltfJson:r}=e;if(await t.load(),e.isDestroyed())return;let s=jse(r,n,t.typedArray);i=i??!1,PVe(n,s,o,i)}function wF(e,t,n){let i=new Array(t.count),o=t.bufferView;if(l(o)){let r=DVe(e,o),s=RVe(e,r,t,n,i);return e._loaderPromises.push(s),i}return vVe(t,i)}function Pu(e,t){if(l(t))return e===Number?t[0]:e.unpack(t)}function MVe(e){return e===Number?0:new e}function NVe(e){switch(e){case q.BYTE:return 127;case q.UNSIGNED_BYTE:return 255;case q.SHORT:return 32767;case q.UNSIGNED_SHORT:return 65535;default:return 1}}var LVe={VEC2:new k(-1,-1),VEC3:new d(-1,-1,-1),VEC4:new se(-1,-1,-1,-1)};function OVe(e,t){let n=NVe(e.componentDatatype),i=LVe[e.type],o=e.min;l(o)&&(o=t.divideByScalar(o,n,o),o=t.maximumByComponent(o,i,o));let r=e.max;l(r)&&(r=t.divideByScalar(r,n,r),r=t.maximumByComponent(r,i,r)),e.min=o,e.max=r}function FVe(e,t,n){let i=e.decodeMatrix,o=Pu(n,e.decodedMin),r=Pu(n,e.decodedMax);l(o)&&l(r)&&(t.min=o,t.max=r);let s=new bn.Quantization;s.componentDatatype=t.componentDatatype,s.type=t.type,i.length===4?(s.quantizedVolumeOffset=i[2],s.quantizedVolumeStepSize=i[0]):i.length===9?(s.quantizedVolumeOffset=new k(i[6],i[7]),s.quantizedVolumeStepSize=new k(i[0],i[4])):i.length===16?(s.quantizedVolumeOffset=new d(i[12],i[13],i[14]),s.quantizedVolumeStepSize=new d(i[0],i[5],i[10])):i.length===25&&(s.quantizedVolumeOffset=new se(i[20],i[21],i[22],i[23]),s.quantizedVolumeStepSize=new se(i[0],i[6],i[12],i[18])),t.quantization=s}function QVe(e,t,n,i,o){let r=e.accessors[t],s=Ht.getMathType(r.type),a=r.normalized??!1,c=new tVe;c.name=n,c.semantic=i,c.setIndex=o,c.constant=MVe(s),c.componentDatatype=r.componentType,c.normalized=a,c.count=r.count,c.type=r.type,c.min=Pu(s,r.min),c.max=Pu(s,r.max),c.byteOffset=r.byteOffset,c.byteStride=Bu(e,r),Ii(r,"WEB3D_quantized_attributes")&&FVe(r.extensions.WEB3D_quantized_attributes,c,s);let u=c.semantic===ct.POSITION||c.semantic===ct.NORMAL||c.semantic===ct.TANGENT||c.semantic===ct.TEXCOORD||c.semantic===ct.FEATURE_ID||c.semantic===ct.SCALE||c.semantic===ct.ROTATION;return e.extensionsRequired?.includes("KHR_mesh_quantization")&&a&&u&&OVe(c,s),c}function Yse(e){let n=/^\w+_(\d+)$/.exec(e);if(n!==null)return parseInt(n[1])}var kVe={gltfSemantic:void 0,renamedSemantic:void 0,modelSemantic:void 0};function NW(e,t,n){let i=n;e._renameBatchIdSemantic&&(n==="_BATCHID"||n==="BATCHID")&&(i="_FEATURE_ID_0");let o=t.fromGltfSemantic(i),r=kVe;return r.gltfSemantic=n,r.renamedSemantic=i,r.modelSemantic=o,r}function UVe(e){let t=e===ct.POSITION,n=e===ct.FEATURE_ID,i=e===ct.TEXCOORD;return t||n||i}function GVe(e,t,n,i){if(e.byteOffset=0,e.byteStride=void 0,e.quantization=t.quantization,n&&(e.buffer=t.buffer),i){let o=l(t.quantization)?t.quantization.componentDatatype:e.componentDatatype;e.typedArray=q.createArrayBufferView(o,t.typedArray.buffer)}}function zVe(e,t,n,i){if(e.byteOffset=0,e.byteStride=void 0,n&&(e.buffer=t.buffer),i&&l(t.typedArray)&&(e.typedArray=q.createArrayBufferView(e.componentDatatype,t.typedArray.buffer)),e.semantic===ct.POSITION){let o=s=>{let a=1/0,c=-1/0,u=1/0,f=-1/0,h=1/0,A=-1/0;for(let g=0;g<s.length;g+=3){let m=s[g],_=s[g+1],y=s[g+2];a=Math.min(a,m),c=Math.max(c,m),u=Math.min(u,_),f=Math.max(f,_),h=Math.min(h,y),A=Math.max(A,y)}return[new d(a,u,h),new d(c,f,A)]},r=e.typedArray;[e.min,e.max]=o(r)}}function VVe(e,t,n,i,o,r){if(o&&(n.buffer=i.buffer),r){let s=i.typedArray;n.typedArray=jse(e,t,s),o||(n.byteOffset=0,n.byteStride=void 0)}}function qse(e,t,n,i,o,r,s,a,c){let u=e.gltfJson,f=u.accessors[t],h=f.bufferView,A=n.gltfSemantic,g=n.renamedSemantic,m=n.modelSemantic,_=l(m)?Yse(g):void 0,C=QVe(u,t,A,m,_);if(!l(o)&&!l(h)&&!l(r))return C;let E=wVe(e,t,A,i,o,r,s,a,c),I=e._geometryLoaders.length;e._geometryLoaders.push(E);let b=E.load();return e._loaderPromises.push(b),e._geometryCallbacks[I]=()=>{l(o)&&l(o.attributes)&&l(o.attributes[A])?GVe(C,E,s,a):l(r)?zVe(C,E,s,a):VVe(u,f,C,E,s,a)},C}function Kse(e,t,n,i,o,r,s,a,c){let u=n.modelSemantic,f=u===ct.POSITION,h=u===ct.FEATURE_ID,A=f&&!s&&e._loadAttributesFor2D&&!c.scene3DOnly,g=f&&e._enablePick&&!c.context.webgl2,m=e._loadForClassification&&h,_=e._loadAttributesAsTypedArray,y=!_,C=_||A||g||m,b=qse(e,t,n,i,o,r,a?!1:y,a?!0:C,c),S=new hx.AttributeLoadPlan(b);return S.loadBuffer=y,S.loadTypedArray=C,S}function HVe(e,t,n,i,o){let r=e.gltfJson.accessors,s=l(n.ROTATION),a=l(n.TRANSLATION)&&l(r[n.TRANSLATION].min)&&l(r[n.TRANSLATION].max),c=NW(e,Ss,i),u=c.modelSemantic,f=u===Ss.TRANSLATION||u===Ss.ROTATION||u===Ss.SCALE,h=u===Ss.TRANSLATION,A=e._loadAttributesAsTypedArray||s&&f||!o.context.instancedArrays,g=e._enablePick&&!o.context.webgl2,m=!A,_=e._loadAttributesFor2D&&!o.scene3DOnly;return qse(e,t,c,void 0,void 0,void 0,m,A||h&&(!a||_||g),o)}function WVe(e,t,n,i,o,r,s){let a=e.gltfJson.accessors[t],c=a.bufferView;if(!l(i)&&!l(c))return;let u=new nVe;u.count=a.count;let f=e._loadAttributesAsTypedArray,h=(e._loadIndicesForWireframe||e._enablePick)&&!s.context.webgl2,A=e._loadForClassification&&o,m=!f,_=f||h||A,E=BVe(e,t,n,i,r?!1:m,r?!0:_,s),I=e._geometryLoaders.length;e._geometryLoaders.push(E);let b=E.load();e._loaderPromises.push(b),e._geometryCallbacks[I]=()=>{u.indexDatatype=E.indexDatatype,u.buffer=E.buffer,u.typedArray=E.typedArray};let S=new hx.IndicesLoadPlan(u);return S.loadBuffer=m,S.loadTypedArray=_,S}function ll(e,t,n,i){let o=e.gltfJson,r=Du.getImageIdFromTexture({gltf:o,textureId:t.index,supportedImageFormats:e._supportedImageFormats});if(!l(r))return;let s=Qi.getTextureLoader({gltf:o,textureInfo:t,gltfResource:e._gltfResource,baseResource:e._baseResource,supportedImageFormats:e._supportedImageFormats,frameState:n,asynchronous:e._asynchronous}),a=Du.createModelTextureReader({textureInfo:t}),c=e._textureLoaders.length;e._textureLoaders.push(s);let u=s.load().catch(f=>{if(!e.isDestroyed()){if(!e._incrementallyLoadTextures)throw f;e._textureState=Go.FAILED,e._textureErrors.push(f)}});return e._texturesPromises.push(u),e._textureCallbacks[c]=()=>{a.texture=s.texture,l(i)&&(a.texture.sampler=i)},a}function jVe(e,t,n){let{diffuseTexture:i,specularGlossinessTexture:o,diffuseFactor:r,specularFactor:s,glossinessFactor:a}=t,c=new yVe;return l(i)&&(c.diffuseTexture=ll(e,i,n)),l(o)&&(c.specularGlossinessTexture=ll(e,o,n)),c.diffuseFactor=Pu(se,r),c.specularFactor=Pu(d,s),c.glossinessFactor=a,c}function YVe(e,t,n){let{baseColorTexture:i,metallicRoughnessTexture:o,baseColorFactor:r,metallicFactor:s,roughnessFactor:a}=t,c=new _Ve;return l(i)&&(c.baseColorTexture=ll(e,i,n)),l(o)&&(c.metallicRoughnessTexture=ll(e,o,n)),c.baseColorFactor=Pu(se,r),c.metallicFactor=s,c.roughnessFactor=a,c}function qVe(e,t,n){let{specularFactor:i,specularTexture:o,specularColorFactor:r,specularColorTexture:s}=t,a=new CVe;return l(o)&&(a.specularTexture=ll(e,o,n)),l(s)&&(a.specularColorTexture=ll(e,s,n)),a.specularFactor=i,a.specularColorFactor=Pu(d,r),a}function KVe(e,t,n){let{anisotropyStrength:i=RW.DEFAULT_ANISOTROPY_STRENGTH,anisotropyRotation:o=RW.DEFAULT_ANISOTROPY_ROTATION,anisotropyTexture:r}=t,s=new RW;return l(r)&&(s.anisotropyTexture=ll(e,r,n)),s.anisotropyStrength=i,s.anisotropyRotation=o,s}function XVe(e,t,n){let{clearcoatFactor:i=MW.DEFAULT_CLEARCOAT_FACTOR,clearcoatTexture:o,clearcoatRoughnessFactor:r=MW.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR,clearcoatRoughnessTexture:s,clearcoatNormalTexture:a}=t,c=new MW;return l(o)&&(c.clearcoatTexture=ll(e,o,n)),l(s)&&(c.clearcoatRoughnessTexture=ll(e,s,n)),l(a)&&(c.clearcoatNormalTexture=ll(e,a,n)),c.clearcoatFactor=i,c.clearcoatRoughnessFactor=r,c}function JVe(e,t,n){let i=new EVe,o=t.extensions??V.EMPTY_OBJECT,r=o.KHR_materials_pbrSpecularGlossiness,s=o.KHR_materials_specular,a=o.KHR_materials_anisotropy,c=o.KHR_materials_clearcoat,u=t.pbrMetallicRoughness;return i.unlit=l(o.KHR_materials_unlit),l(r)?i.specularGlossiness=jVe(e,r,n):(l(u)&&(i.metallicRoughness=YVe(e,u,n)),l(s)&&!i.unlit&&(i.specular=qVe(e,s,n)),l(a)&&!i.unlit&&(i.anisotropy=KVe(e,a,n)),l(c)&&!i.unlit&&(i.clearcoat=XVe(e,c,n))),l(t.emissiveTexture)&&(i.emissiveTexture=ll(e,t.emissiveTexture,n)),l(t.normalTexture)&&!e._loadForClassification&&(i.normalTexture=ll(e,t.normalTexture,n)),l(t.occlusionTexture)&&(i.occlusionTexture=ll(e,t.occlusionTexture,n)),i.emissiveFactor=Pu(d,t.emissiveFactor),i.alphaMode=t.alphaMode,i.alphaCutoff=t.alphaCutoff,i.doubleSided=t.doubleSided,i}function Xse(e,t){let n=new Vse;return n.featureCount=e.featureCount,n.nullFeatureId=e.nullFeatureId,n.propertyTableId=e.propertyTable,n.setIndex=e.attribute,n.label=e.label,n.positionalLabel=t,n}function Jse(e,t,n,i){let o=new Vse,r=e.featureIds;return o.featureCount=n,o.propertyTableId=t,o.setIndex=Yse(r.attribute),o.positionalLabel=i,o}function Zse(e,t){let n=new Wse;return n.propertyTableId=e.propertyTable,n.featureCount=e.featureCount,n.nullFeatureId=e.nullFeatureId,n.label=e.label,n.positionalLabel=t,n.offset=0,n.repeat=1,n}function $se(e,t,n,i){let o=new Wse,r=e.featureIds;o.propertyTableId=t,o.featureCount=n,o.offset=r.constant??0;let s=r.divisor??0;return o.repeat=s===0?void 0:s,o.positionalLabel=i,o}function ZVe(e,t,n,i){let o=new Hse;o.featureCount=t.featureCount,o.nullFeatureId=t.nullFeatureId,o.propertyTableId=t.propertyTable,o.label=t.label,o.positionalLabel=i;let r=t.texture;o.textureReader=ll(e,r,n,on.NEAREST);let a=(l(r.channels)?r.channels:[0]).map(function(c){return"rgba".charAt(c)}).join("");return o.textureReader.channels=a,o}function $Ve(e,t,n,i,o,r){let s=new Hse,a=t.featureIds,c=a.texture;return s.featureCount=o,s.propertyTableId=n,s.textureReader=ll(e,c,i,on.NEAREST),s.textureReader.channels=a.channels,s.positionalLabel=r,s}function e8e(e,t,n,i,o){let r=new iVe,s=void 0,a=void 0,c=void 0,u=!1;for(let f in t){if(!t.hasOwnProperty(f))continue;let h=t[f],A=NW(e,ct,f),g=Kse(e,h,A,s,a,c,u,n,o);r.attributes.push(g.attribute),i.attributePlans.push(g)}return r}function t8e(e,t,n,i){let o=new oVe,r=new hx(o);e._primitiveLoadPlans.push(r);let s=t.material;l(s)&&(o.material=JVe(e,e.gltfJson.materials[s],i));let a=t.extensions??V.EMPTY_OBJECT,c=!1,u=a.CESIUM_primitive_outline;e._loadPrimitiveOutline&&l(u)&&(c=!0,r.needsOutlines=!0,r.outlineIndices=n8e(e,u,r));let f=a.KHR_spz_gaussian_splats_compression;l(f)&&(c=!0,r.needsGaussianSplats=!0);let h=e._loadForClassification,A=a.KHR_draco_mesh_compression,g=!1,m=t.attributes;if(l(m))for(let B in m){if(!m.hasOwnProperty(B))continue;let v=m[B],P=NW(e,ct,B),N=P.modelSemantic;if(h&&!UVe(N))continue;N===ct.FEATURE_ID&&(g=!0);let L=Kse(e,v,P,t,A,f,n,c,i);r.attributePlans.push(L),o.attributes.push(L.attribute)}let _=t.targets;if(l(_)&&!h)for(let B=0;B<_.length;++B)o.morphTargets.push(e8e(e,_[B],c,r,i));let y=t.indices;if(l(y)){let B=WVe(e,y,t,A,g,c,i);l(B)&&(r.indicesPlan=B,o.indices=B.indices)}let C=a.EXT_structural_metadata,E=a.EXT_mesh_features,I=a.EXT_feature_metadata,b=l(I);l(E)?i8e(e,o,E,i):b&&o8e(e,o,I,i),l(C)?r8e(o,C):b&&s8e(e,o,I);let S=t.mode;if(h&&S!==Me.TRIANGLES)throw new ce("Only triangle meshes can be used for classification.");return o.primitiveType=S,o}function n8e(e,t){let n=t.indices,i=e.gltfJson.accessors[n];return wF(e,i,!1)}function i8e(e,t,n,i){let o;l(n)&&l(n.featureIds)?o=n.featureIds:o=[];for(let r=0;r<o.length;r++){let s=o[r],a=`featureId_${r}`,c;l(s.texture)?c=ZVe(e,s,i,a):l(s.attribute)?c=Xse(s,a):c=Zse(s,a),t.featureIds.push(c)}}function o8e(e,t,n,i){let{featureTables:o}=e.gltfJson.extensions.EXT_feature_metadata,r=0,s=n.featureIdAttributes;if(l(s))for(let c=0;c<s.length;++c){let u=s[c],f=u.featureTable,h=e._sortedPropertyTableIds.indexOf(f),A=o[f].count,g=`featureId_${r}`;r++;let m;l(u.featureIds.attribute)?m=Jse(u,h,A,g):m=$se(u,h,A,g),t.featureIds.push(m)}let a=n.featureIdTextures;if(l(a))for(let c=0;c<a.length;++c){let u=a[c],f=u.featureTable,h=e._sortedPropertyTableIds.indexOf(f),A=o[f].count,g=`featureId_${r}`;r++;let m=$Ve(e,u,h,i,A,g);t.featureIds.push(m)}}function r8e(e,t){if(!l(t))return;let{propertyTextures:n,propertyAttributes:i}=t;l(n)&&(e.propertyTextureIds=n),l(i)&&(e.propertyAttributeIds=i)}function s8e(e,t,n){l(n.featureTextures)&&(t.propertyTextureIds=n.featureTextures.map(function(i){return e._sortedFeatureTextureIds.indexOf(i)}))}function a8e(e,t,n){let i=t.EXT_mesh_gpu_instancing,o=new rVe,r=i.attributes;if(l(r))for(let u in r){if(!r.hasOwnProperty(u))continue;let f=r[u];o.attributes.push(HVe(e,f,r,u,n))}let s=i.extensions??V.EMPTY_OBJECT,a=t.EXT_instance_features,c=s.EXT_feature_metadata;return l(a)?c8e(o,a):l(c)&&l8e(e.gltfJson,o,c,e._sortedPropertyTableIds),o}function c8e(e,t){let n=t.featureIds;for(let i=0;i<n.length;i++){let o=n[i],r=`instanceFeatureId_${i}`,s;l(o.attribute)?s=Xse(o,r):s=Zse(o,r),e.featureIds.push(s)}}function l8e(e,t,n,i){let o=e.extensions.EXT_feature_metadata.featureTables,r=n.featureIdAttributes;if(l(r))for(let s=0;s<r.length;++s){let a=r[s],c=a.featureTable,u=i.indexOf(c),f=o[c].count,h=`instanceFeatureId_${s}`,A;l(a.featureIds.attribute)?A=Jse(a,u,f,h):A=$se(a,u,f,h),t.featureIds.push(A)}}function u8e(e,t,n){let i=new aVe;i.name=t.name,i.matrix=Pu(R,t.matrix),i.translation=Pu(d,t.translation),i.rotation=Pu(Le,t.rotation),i.scale=Pu(d,t.scale);let o=t.extensions??V.EMPTY_OBJECT,r=o.EXT_mesh_gpu_instancing,s=o.AGI_articulations;if(l(r)){if(e._loadForClassification)throw new ce("Models with the EXT_mesh_gpu_instancing extension cannot be used for classification.");i.instances=a8e(e,o,n)}l(s)&&(i.articulationName=s.articulationName);let a=t.mesh;if(l(a)){let c=e.gltfJson.meshes[a],u=c.primitives;for(let A=0;A<u.length;++A)i.primitives.push(t8e(e,u[A],l(i.instances),n));let f=t.weights??c.weights,h=i.primitives[0].morphTargets;i.morphWeights=l(f)?f.slice():new Array(h.length).fill(0)}return i}function f8e(e,t){let n=e.gltfJson.nodes;if(!l(n))return[];let i=n.map(function(o,r){let s=u8e(e,o,t);return s.index=r,s});for(let o=0;o<i.length;++o){let r=n[o].children;if(l(r))for(let s=0;s<r.length;++s)i[o].children.push(i[r[s]])}return i}function d8e(e,t,n){let i=new sVe,o=t.joints;i.joints=o.map(s=>n[s]);let r=t.inverseBindMatrices;if(l(r)){let s=e.gltfJson.accessors[r];i.inverseBindMatrices=wF(e,s)}else i.inverseBindMatrices=new Array(o.length).fill(R.IDENTITY);return i}function h8e(e,t){let n=e.gltfJson.skins;if(e._loadForClassification||!l(n))return[];let i=n.map(function(r,s){let a=d8e(e,r,t);return a.index=s,a}),o=e.gltfJson.nodes;for(let r=0;r<t.length;++r){let s=o[r].skin;l(s)&&(t[r].skin=i[s])}return i}async function m8e(e,t,n,i){let o=new hF({gltf:e.gltfJson,extension:t,extensionLegacy:n,gltfResource:e._gltfResource,baseResource:e._baseResource,supportedImageFormats:e._supportedImageFormats,frameState:i,asynchronous:e._asynchronous});return e._structuralMetadataLoader=o,o.load()}async function A8e(e,t,n,i){let o=new TF({gltf:t,extension:n,gltfResource:e._gltfResource,baseResource:e._baseResource,supportedImageFormats:e._supportedImageFormats,frameState:i,asynchronous:e._asynchronous});return e._meshPrimitiveGpmLoader=o,o.load()}function p8e(e,t){let n=new lVe,i=e.gltfJson.accessors,o=i[t.input];n.input=wF(e,o);let r=t.interpolation;n.interpolation=Tm[r]??Tm.LINEAR;let s=i[t.output];return n.output=wF(e,s,!0),n}function g8e(e,t){let n=new uVe,i=e.node;if(!l(i))return;n.node=t[i];let o=e.path.toUpperCase();return n.path=cVe[o],n}function _8e(e,t,n){let i=new fVe,o=e.sampler;return i.sampler=t[o],i.target=g8e(e.target,n),i}function y8e(e,t,n){let i=new dVe;i.name=t.name;let o=t.samplers.map(function(s,a){let c=p8e(e,s);return c.index=a,c}),r=t.channels.map(function(s){return _8e(s,o,n)});return i.samplers=o,i.channels=r,i}function C8e(e,t){let n=e.gltfJson.animations;return e._loadForClassification||!l(n)?[]:n.map(function(o,r){let s=y8e(e,o,t);return s.index=r,s})}function E8e(e){let t=new hVe;t.name=e.name;let n=e.type.toUpperCase();return t.type=cl[n],t.minimumValue=e.minimumValue,t.maximumValue=e.maximumValue,t.initialValue=e.initialValue,t}function I8e(e){let t=new mVe;return t.name=e.name,t.stages=e.stages.map(E8e),t}function x8e(e){let n=(e.extensions??V.EMPTY_OBJECT).AGI_articulations?.articulations;return l(n)?n.map(I8e):[]}function b8e(e){let t;return l(e.scenes)&&l(e.scene)&&(t=e.scenes[e.scene].nodes),t=t??e.nodes,t=l(t)?t:[],t}function T8e(e,t){let n=new pVe,i=b8e(e);return n.nodes=i.map(function(o){return t[o]}),n}var S8e=new d;function w8e(e,t){let n=e.gltfJson,i=n.extensions??V.EMPTY_OBJECT,o=i.EXT_structural_metadata,r=i.EXT_feature_metadata,s=i.CESIUM_RTC;if(l(r)){let E=r.featureTables,I=r.featureTextures,b=l(E)?E:[],S=l(I)?I:[];e._sortedPropertyTableIds=Object.keys(b).sort(),e._sortedFeatureTextureIds=Object.keys(S).sort()}let a=f8e(e,t),c=h8e(e,a),u=C8e(e,a),f=x8e(n),h=T8e(n,a),A=new gVe,g=new AVe,m=n.asset.copyright;if(l(m)){let E=m.split(";").map(function(I){return new Dt(I.trim())});g.credits=E}if(A.asset=g,A.scene=h,A.nodes=a,A.skins=c,A.animations=u,A.articulations=f,A.upAxis=e._upAxis,A.forwardAxis=e._forwardAxis,l(s)){let E=d.fromArray(s.center,0,S8e);A.transform=R.fromTranslation(E,A.transform)}if(e._components=A,l(o)||l(r)){let E=m8e(e,o,r,t);e._loaderPromises.push(E)}let _=i.NGA_gpm_local;if(l(_)){let E=EF.load(_);e._components.extensions.NGA_gpm_local=E}let y=n.meshes;if(l(y))for(let E of y){let I=E.primitives;if(l(I))for(let b of I){let S=b.extensions;if(l(S)){let B=S.NGA_gpm_local;if(l(B)){let v=A8e(e,n,B,t);e._loaderPromises.push(v)}}}}let C=[];return si(C,e._loaderPromises),e._incrementallyLoadTextures||si(C,e._texturesPromises),Promise.all(C)}function B8e(e){let t=e._textureLoaders;for(let n=0;n<t.length;++n)t[n]=!t[n].isDestroyed()&&Qi.unload(t[n]);e._textureLoaders.length=0}function eae(e){let t=e._bufferViewLoaders;for(let n=0;n<t.length;++n)t[n]=!t[n].isDestroyed()&&Qi.unload(t[n]);e._bufferViewLoaders.length=0}function D8e(e){let t=e._geometryLoaders;for(let n=0;n<t.length;++n)t[n]=!t[n].isDestroyed()&&Qi.unload(t[n]);e._geometryLoaders.length=0}function v8e(e){let t=e._postProcessBuffers;for(let n=0;n<t.length;n++){let i=t[n];i.isDestroyed()||i.destroy()}t.length=0}function P8e(e){l(e._structuralMetadataLoader)&&!e._structuralMetadataLoader.isDestroyed()&&(e._structuralMetadataLoader.destroy(),e._structuralMetadataLoader=void 0)}function R8e(e){l(e._meshPrimitiveGpmLoader)&&!e._meshPrimitiveGpmLoader.isDestroyed()&&(e._meshPrimitiveGpmLoader.destroy(),e._meshPrimitiveGpmLoader=void 0)}Kd.prototype.isUnloaded=function(){return this._state===Go.UNLOADED};Kd.prototype.unload=function(){l(this._gltfJsonLoader)&&!this._gltfJsonLoader.isDestroyed()&&Qi.unload(this._gltfJsonLoader),this._gltfJsonLoader=void 0,B8e(this),eae(this),D8e(this),v8e(this),P8e(this),R8e(this),this._components=void 0,this._typedArray=void 0,this._state=Go.UNLOADED};var Ff=Kd;function Ax(e){e=e??V.EMPTY_OBJECT;let{context:t,width:n,height:i,colorRenderbuffers:o,colorTextures:r,depthStencilRenderbuffer:s,depthStencilTexture:a,destroyAttachments:c}=e;if(this._width=n,this._height=i,l(o)!==l(r))throw new me("Both color renderbuffer and texture attachments must be provided.");if(l(s)!==l(a))throw new me("Both depth-stencil renderbuffer and texture attachments must be provided.");this._renderFramebuffer=new as({context:t,colorRenderbuffers:o,depthStencilRenderbuffer:s,destroyAttachments:c}),this._colorFramebuffer=new as({context:t,colorTextures:r,depthStencilTexture:a,destroyAttachments:c})}Ax.prototype.getRenderFramebuffer=function(){return this._renderFramebuffer};Ax.prototype.getColorFramebuffer=function(){return this._colorFramebuffer};Ax.prototype.blitFramebuffers=function(e,t){this._renderFramebuffer.bindRead(),this._colorFramebuffer.bindDraw();let n=e._gl,i=0;this._colorFramebuffer._colorTextures.length>0&&(i|=n.COLOR_BUFFER_BIT),l(this._colorFramebuffer.depthStencilTexture)&&(i|=n.DEPTH_BUFFER_BIT|(t?n.STENCIL_BUFFER_BIT:0)),n.blitFramebuffer(0,0,this._width,this._height,0,0,this._width,this._height,i,n.NEAREST),n.bindFramebuffer(n.READ_FRAMEBUFFER,null),n.bindFramebuffer(n.DRAW_FRAMEBUFFER,null)};Ax.prototype.isDestroyed=function(){return!1};Ax.prototype.destroy=function(){return this._renderFramebuffer.destroy(),this._colorFramebuffer.destroy(),ue(this)};var BF=Ax;var jl={RGBA4:ee.RGBA4,RGBA8:ee.RGBA8,RGBA16F:ee.RGBA16F,RGBA32F:ee.RGBA32F,RGB5_A1:ee.RGB5_A1,RGB565:ee.RGB565,DEPTH_COMPONENT16:ee.DEPTH_COMPONENT16,STENCIL_INDEX8:ee.STENCIL_INDEX8,DEPTH_STENCIL:ee.DEPTH_STENCIL,DEPTH24_STENCIL8:ee.DEPTH24_STENCIL8,validate:function(e){return e===jl.RGBA4||e===jl.RGBA8||e===jl.RGBA16F||e===jl.RGBA32F||e===jl.RGB5_A1||e===jl.RGB565||e===jl.DEPTH_COMPONENT16||e===jl.STENCIL_INDEX8||e===jl.DEPTH_STENCIL||e===jl.DEPTH24_STENCIL8},getColorFormat:function(e){return e===ee.FLOAT?jl.RGBA32F:e===ee.HALF_FLOAT_OES?jl.RGBA16F:jl.RGBA8}},Yl=Object.freeze(jl);function IB(e){e=e??V.EMPTY_OBJECT;let t=e.context,n=t._gl,i=qt.maximumRenderbufferSize,o=e.format??Yl.RGBA4,r=l(e.width)?e.width:t.drawingBufferWidth,s=l(e.height)?e.height:t.drawingBufferHeight,a=e.numSamples??1;this._gl=n,this._format=o,this._width=r,this._height=s,this._renderbuffer=this._gl.createRenderbuffer(),n.bindRenderbuffer(n.RENDERBUFFER,this._renderbuffer),a>1?n.renderbufferStorageMultisample(n.RENDERBUFFER,a,o,r,s):n.renderbufferStorage(n.RENDERBUFFER,o,r,s),n.bindRenderbuffer(n.RENDERBUFFER,null)}Object.defineProperties(IB.prototype,{format:{get:function(){return this._format}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});IB.prototype._getRenderbuffer=function(){return this._renderbuffer};IB.prototype.isDestroyed=function(){return!1};IB.prototype.destroy=function(){return this._gl.deleteRenderbuffer(this._renderbuffer),ue(this)};var Qf=IB;function Hs(e){e=e??V.EMPTY_OBJECT,this._numSamples=e.numSamples??1,this._colorAttachmentsLength=e.colorAttachmentsLength??1,this._color=e.color??!0,this._depth=e.depth??!1,this._depthStencil=e.depthStencil??!1,this._supportsDepthTexture=e.supportsDepthTexture??!1,this._createColorAttachments=e.createColorAttachments??!0,this._createDepthAttachments=e.createDepthAttachments??!0,this._pixelDatatype=e.pixelDatatype,this._pixelFormat=e.pixelFormat,this._width=void 0,this._height=void 0,this._framebuffer=void 0,this._multisampleFramebuffer=void 0,this._colorTextures=void 0,this._color&&(this._colorTextures=new Array(this._colorAttachmentsLength),this._colorRenderbuffers=new Array(this._colorAttachmentsLength)),this._colorRenderbuffer=void 0,this._depthStencilRenderbuffer=void 0,this._depthStencilTexture=void 0,this._depthRenderbuffer=void 0,this._depthTexture=void 0,this._attachmentsDirty=!1}Object.defineProperties(Hs.prototype,{framebuffer:{get:function(){return this._numSamples>1?this._multisampleFramebuffer.getRenderFramebuffer():this._framebuffer}},numSamples:{get:function(){return this._numSamples}},status:{get:function(){return this.framebuffer.status}}});Hs.prototype.isDirty=function(e,t,n,i,o){n=n??1;let r=this._width!==e||this._height!==t,s=this._numSamples!==n,a=l(i)&&this._pixelDatatype!==i||l(o)&&this._pixelFormat!==o,c=n===1?l(this._framebuffer):l(this._multisampleFramebuffer);return this._attachmentsDirty||r||s||a||!c||this._color&&!l(this._colorTextures[0])};Hs.prototype.update=function(e,t,n,i,o,r){if(i=e.msaa?i??1:1,o=o??(this._color?this._pixelDatatype??He.UNSIGNED_BYTE:void 0),r=r??(this._color?this._pixelFormat??et.RGBA:void 0),this.isDirty(t,n,i,o,r)){if(this.destroy(),this._width=t,this._height=n,this._numSamples=i,this._pixelDatatype=o,this._pixelFormat=r,this._attachmentsDirty=!1,this._color&&this._createColorAttachments){for(let s=0;s<this._colorAttachmentsLength;++s)if(this._colorTextures[s]=new Nt({context:e,width:t,height:n,pixelFormat:r,pixelDatatype:o,sampler:on.NEAREST}),this._numSamples>1){let a=Yl.getColorFormat(o);this._colorRenderbuffers[s]=new Qf({context:e,width:t,height:n,format:a,numSamples:this._numSamples})}}this._depthStencil&&this._createDepthAttachments&&(this._supportsDepthTexture&&e.depthTexture?(this._depthStencilTexture=new Nt({context:e,width:t,height:n,pixelFormat:et.DEPTH_STENCIL,pixelDatatype:He.UNSIGNED_INT_24_8,sampler:on.NEAREST}),this._numSamples>1&&(this._depthStencilRenderbuffer=new Qf({context:e,width:t,height:n,format:Yl.DEPTH24_STENCIL8,numSamples:this._numSamples}))):this._depthStencilRenderbuffer=new Qf({context:e,width:t,height:n,format:Yl.DEPTH_STENCIL})),this._depth&&this._createDepthAttachments&&(this._supportsDepthTexture&&e.depthTexture?this._depthTexture=new Nt({context:e,width:t,height:n,pixelFormat:et.DEPTH_COMPONENT,pixelDatatype:He.UNSIGNED_INT,sampler:on.NEAREST}):this._depthRenderbuffer=new Qf({context:e,width:t,height:n,format:Yl.DEPTH_COMPONENT16})),this._numSamples>1?this._multisampleFramebuffer=new BF({context:e,width:this._width,height:this._height,colorTextures:this._colorTextures,colorRenderbuffers:this._colorRenderbuffers,depthStencilTexture:this._depthStencilTexture,depthStencilRenderbuffer:this._depthStencilRenderbuffer,destroyAttachments:!1}):this._framebuffer=new as({context:e,colorTextures:this._colorTextures,depthTexture:this._depthTexture,depthRenderbuffer:this._depthRenderbuffer,depthStencilTexture:this._depthStencilTexture,depthStencilRenderbuffer:this._depthStencilRenderbuffer,destroyAttachments:!1})}};Hs.prototype.getColorTexture=function(e){return e=e??0,this._colorTextures[e]};Hs.prototype.setColorTexture=function(e,t){t=t??0,this._attachmentsDirty=e!==this._colorTextures[t],this._colorTextures[t]=e};Hs.prototype.getColorRenderbuffer=function(e){return e=e??0,this._colorRenderbuffers[e]};Hs.prototype.setColorRenderbuffer=function(e,t){t=t??0,this._attachmentsDirty=e!==this._colorRenderbuffers[t],this._colorRenderbuffers[t]=e};Hs.prototype.getDepthRenderbuffer=function(){return this._depthRenderbuffer};Hs.prototype.setDepthRenderbuffer=function(e){this._attachmentsDirty=e!==this._depthRenderbuffer,this._depthRenderbuffer=e};Hs.prototype.getDepthTexture=function(){return this._depthTexture};Hs.prototype.setDepthTexture=function(e){this._attachmentsDirty=e!==this._depthTexture,this._depthTexture=e};Hs.prototype.getDepthStencilRenderbuffer=function(){return this._depthStencilRenderbuffer};Hs.prototype.setDepthStencilRenderbuffer=function(e){this._attachmentsDirty=e!==this._depthStencilRenderbuffer,this._depthStencilRenderbuffer=e};Hs.prototype.getDepthStencilTexture=function(){return this._depthStencilTexture};Hs.prototype.setDepthStencilTexture=function(e){this._attachmentsDirty=e!==this._depthStencilTexture,this._depthStencilTexture=e};Hs.prototype.prepareTextures=function(e,t){this._numSamples>1&&this._multisampleFramebuffer.blitFramebuffers(e,t)};Hs.prototype.clear=function(e,t,n){let i=t.framebuffer;t.framebuffer=this.framebuffer,t.execute(e,n),t.framebuffer=i};Hs.prototype.destroyFramebuffer=function(){this._framebuffer=this._framebuffer&&this._framebuffer.destroy(),this._multisampleFramebuffer=this._multisampleFramebuffer&&this._multisampleFramebuffer.destroy()};Hs.prototype.destroy=function(){if(this._color){let e=this._colorTextures,t=this._colorRenderbuffers;for(let n=0;n<e.length;++n){let i=e[n];this._createColorAttachments&&l(i)&&!i.isDestroyed()&&i.destroy(),l(i)&&i.isDestroyed()&&(e[n]=void 0);let o=t[n];this._createColorAttachments&&l(o)&&!o.isDestroyed()&&o.destroy(),l(o)&&o.isDestroyed()&&(t[n]=void 0)}}this._depthStencil&&(this._createDepthAttachments&&(this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy()),l(this._depthStencilTexture)&&this._depthStencilTexture.isDestroyed()&&(this._depthStencilTexture=void 0),l(this._depthStencilRenderbuffer)&&this._depthStencilRenderbuffer.isDestroyed()&&(this._depthStencilRenderbuffer=void 0)),this._depth&&(this._createDepthAttachments&&(this._depthTexture=this._depthTexture&&this._depthTexture.destroy(),this._depthRenderbuffer=this._depthRenderbuffer&&this._depthRenderbuffer.destroy()),l(this._depthTexture)&&this._depthTexture.isDestroyed()&&(this._depthTexture=void 0),l(this._depthRenderbuffer)&&this._depthRenderbuffer.isDestroyed()&&(this._depthRenderbuffer=void 0)),this.destroyFramebuffer()};var vi=Hs;var DF=`uniform sampler2D u_pointCloud_colorGBuffer; +uniform sampler2D u_pointCloud_depthGBuffer; +uniform vec2 u_distanceAndEdlStrength; +in vec2 v_textureCoordinates; + +vec2 neighborContribution(float log2Depth, vec2 offset) +{ + float dist = u_distanceAndEdlStrength.x; + vec2 texCoordOrig = v_textureCoordinates + offset * dist; + vec2 texCoord0 = v_textureCoordinates + offset * floor(dist); + vec2 texCoord1 = v_textureCoordinates + offset * ceil(dist); + + float depthOrLogDepth0 = czm_unpackDepth(texture(u_pointCloud_depthGBuffer, texCoord0)); + float depthOrLogDepth1 = czm_unpackDepth(texture(u_pointCloud_depthGBuffer, texCoord1)); + + // ignore depth values that are the clear depth + if (depthOrLogDepth0 == 0.0 || depthOrLogDepth1 == 0.0) { + return vec2(0.0); + } + + // interpolate the two adjacent depth values + float depthMix = mix(depthOrLogDepth0, depthOrLogDepth1, fract(dist)); + vec4 eyeCoordinate = czm_windowToEyeCoordinates(texCoordOrig, depthMix); + return vec2(max(0.0, log2Depth - log2(-eyeCoordinate.z / eyeCoordinate.w)), 1.0); +} + +void main() +{ + float depthOrLogDepth = czm_unpackDepth(texture(u_pointCloud_depthGBuffer, v_textureCoordinates)); + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, depthOrLogDepth); + eyeCoordinate /= eyeCoordinate.w; + + float log2Depth = log2(-eyeCoordinate.z); + + if (depthOrLogDepth == 0.0) // 0.0 is the clear value for the gbuffer + { + discard; + } + + vec4 color = texture(u_pointCloud_colorGBuffer, v_textureCoordinates); + + // sample from neighbors left, right, down, up + vec2 texelSize = 1.0 / czm_viewport.zw; + + vec2 responseAndCount = vec2(0.0); + + responseAndCount += neighborContribution(log2Depth, vec2(-texelSize.x, 0.0)); + responseAndCount += neighborContribution(log2Depth, vec2(+texelSize.x, 0.0)); + responseAndCount += neighborContribution(log2Depth, vec2(0.0, -texelSize.y)); + responseAndCount += neighborContribution(log2Depth, vec2(0.0, +texelSize.y)); + + float response = responseAndCount.x / responseAndCount.y; + float strength = u_distanceAndEdlStrength.y; + float shade = exp(-response * 300.0 * strength); + color.rgb *= shade; + out_FragColor = vec4(color); + + // Input and output depth are the same. + gl_FragDepth = depthOrLogDepth; +} +`;function px(){this._framebuffer=new vi({colorAttachmentsLength:2,depth:!0,supportsDepthTexture:!0}),this._drawCommand=void 0,this._clearCommand=void 0,this._strength=1,this._radius=1}Object.defineProperties(px.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}},colorGBuffer:{get:function(){return this._framebuffer.getColorTexture(0)}},depthGBuffer:{get:function(){return this._framebuffer.getColorTexture(1)}}});function M8e(e){e._framebuffer.destroy(),e._drawCommand=void 0,e._clearCommand=void 0}var LW=new k;function N8e(e,t){let n=new We({defines:["LOG_DEPTH_WRITE"],sources:[DF]}),i={u_pointCloud_colorGBuffer:function(){return e.colorGBuffer},u_pointCloud_depthGBuffer:function(){return e.depthGBuffer},u_distanceAndEdlStrength:function(){return LW.x=e._radius,LW.y=e._strength,LW}},o=Ue.fromCache({blending:pn.ALPHA_BLEND,depthMask:!0,depthTest:{enabled:!0},stencilTest:Kt.setCesium3DTileBit(),stencilMask:Kt.CESIUM_3D_TILE_MASK});e._drawCommand=t.createViewportQuadCommand(n,{uniformMap:i,renderState:o,pass:Be.CESIUM_3D_TILE,owner:e}),e._clearCommand=new Ei({framebuffer:e.framebuffer,color:new G(0,0,0,0),depth:1,renderState:Ue.fromCache(),pass:Be.CESIUM_3D_TILE,owner:e})}function L8e(e,t){let n=t.drawingBufferWidth,i=t.drawingBufferHeight;e._framebuffer.update(t,n,i),N8e(e,t)}function tae(e){return e.drawBuffers&&e.fragmentDepth}px.isSupported=tae;function O8e(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"EC");if(!l(n)){let i=t._attributeLocations,o=t.fragmentShaderSource.clone();o.sources.splice(0,0,`layout (location = 0) out vec4 out_FragData_0; +layout (location = 1) out vec4 out_FragData_1;`),o.sources=o.sources.map(function(r){return r=We.replaceMain(r,"czm_point_cloud_post_process_main"),r=r.replaceAll(/out_FragColor/g,"out_FragData_0"),r}),o.sources.push(`void main() +{ + czm_point_cloud_post_process_main(); +#ifdef LOG_DEPTH + czm_writeLogDepth(); + out_FragData_1 = czm_packDepth(gl_FragDepth); +#else + out_FragData_1 = czm_packDepth(gl_FragCoord.z); +#endif +}`),n=e.shaderCache.createDerivedShaderProgram(t,"EC",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:o,attributeLocations:i})}return n}px.prototype.update=function(e,t,n,i){if(!tae(e.context))return;this._strength=n.eyeDomeLightingStrength,this._radius=n.eyeDomeLightingRadius*e.pixelRatio,L8e(this,e.context);let o,r=e.commandList,s=r.length;for(o=t;o<s;++o){let u=r[o];if(u.primitiveType!==Me.POINTS||u.pass===Be.TRANSLUCENT)continue;let f,h,A=u.derivedCommands.pointCloudProcessor;l(A)&&(f=A.command,h=A.originalShaderProgram),(!l(f)||u.dirty||h!==u.shaderProgram||f.framebuffer!==this.framebuffer)&&(f=nt.shallowClone(u,f),f.framebuffer=this.framebuffer,f.shaderProgram=O8e(e.context,u.shaderProgram),f.castShadows=!1,f.receiveShadows=!1,l(A)||(A={command:f,originalShaderProgram:u.shaderProgram},u.derivedCommands.pointCloudProcessor=A),A.originalShaderProgram=u.shaderProgram),r[o]=f}let a=this._clearCommand,c=this._drawCommand;c.boundingVolume=i,r.push(c),r.push(a)};px.prototype.isDestroyed=function(){return!1};px.prototype.destroy=function(){return M8e(this),ue(this)};var u_=px;function nae(e){let t=e??{};this.attenuation=t.attenuation??!1,this.geometricErrorScale=t.geometricErrorScale??1,this.maximumAttenuation=t.maximumAttenuation,this.baseResolution=t.baseResolution,this.eyeDomeLighting=t.eyeDomeLighting??!0,this.eyeDomeLightingStrength=t.eyeDomeLightingStrength??1,this.eyeDomeLightingRadius=t.eyeDomeLightingRadius??1,this.backFaceCulling=t.backFaceCulling??!1,this.normalShading=t.normalShading??!0}nae.isSupported=function(e){return u_.isSupported(e.context)};var op=nae;var ec={},F8e=new se(0,0,0,1),Dc=new se,Q8e=new Xe,OW=new k,FW=new k;ec.worldToWindowCoordinates=function(e,t,n){return ec.worldWithEyeOffsetToWindowCoordinates(e,t,d.ZERO,n)};var iae=new se,oae=new d;function xB(e,t,n,i){let o=n.viewMatrix,r=R.multiplyByVector(o,se.fromElements(e.x,e.y,e.z,1,iae),iae),s=d.multiplyComponents(t,d.normalize(r,oae),oae);return r.x+=t.x+s.x,r.y+=t.y+s.y,r.z+=s.z,R.multiplyByVector(n.frustum.projectionMatrix,r,i)}var k8e=new Ae(Math.PI,D.PI_OVER_TWO),U8e=new d,G8e=new d;ec.worldWithEyeOffsetToWindowCoordinates=function(e,t,n,i){let o=e.frameState,r=ec.computeActualEllipsoidPosition(o,t,F8e);if(!l(r))return;let s=e.canvas,a=Q8e;a.x=0,a.y=0,a.width=s.clientWidth,a.height=s.clientHeight;let c=e.camera,u=!1;if(o.mode===ie.SCENE2D){let f=e.mapProjection,h=k8e,A=f.project(h,U8e),g=d.clone(c.position,G8e),m=c.frustum.clone(),_=R.computeViewportTransformation(a,0,1,new R),y=c.frustum.projectionMatrix,C=c.positionWC.y,E=d.fromElements(D.sign(C)*A.x-C,0,-c.positionWC.x),I=kt.pointToGLWindowCoordinates(y,_,E);if(C===0||I.x<=0||I.x>=s.clientWidth)u=!0;else{if(I.x>s.clientWidth*.5){a.width=I.x,c.frustum.right=A.x-C,Dc=xB(r,n,c,Dc),ec.clipToGLWindowCoordinates(a,Dc,OW),a.x+=I.x,c.position.x=-c.position.x;let b=c.frustum.right;c.frustum.right=-c.frustum.left,c.frustum.left=-b,Dc=xB(r,n,c,Dc),ec.clipToGLWindowCoordinates(a,Dc,FW)}else{a.x+=I.x,a.width-=I.x,c.frustum.left=-A.x-C,Dc=xB(r,n,c,Dc),ec.clipToGLWindowCoordinates(a,Dc,OW),a.x=a.x-a.width,c.position.x=-c.position.x;let b=c.frustum.left;c.frustum.left=-c.frustum.right,c.frustum.right=-b,Dc=xB(r,n,c,Dc),ec.clipToGLWindowCoordinates(a,Dc,FW)}d.clone(g,c.position),c.frustum=m.clone(),i=k.clone(OW,i),(i.x<0||i.x>s.clientWidth)&&(i.x=FW.x)}}if(o.mode!==ie.SCENE2D||u){if(Dc=xB(r,n,c,Dc),Dc.z<0&&!(c.frustum instanceof An)&&!(c.frustum instanceof ls))return;i=ec.clipToGLWindowCoordinates(a,Dc,i)}return i.y=s.clientHeight-i.y,i};ec.worldToDrawingBufferCoordinates=function(e,t,n){if(n=ec.worldToWindowCoordinates(e,t,n),!!l(n))return ec.transformWindowToDrawingBuffer(e,n,n)};var rp=new d,z8e=new Ae;ec.computeActualEllipsoidPosition=function(e,t,n){let i=e.mode;if(i===ie.SCENE3D)return d.clone(t,n);let o=e.mapProjection,r=o.ellipsoid.cartesianToCartographic(t,z8e);if(!l(r))return;if(o.project(r,rp),i===ie.COLUMBUS_VIEW)return d.fromElements(rp.z,rp.x,rp.y,n);if(i===ie.SCENE2D)return d.fromElements(0,rp.x,rp.y,n);let s=e.morphTime;return d.fromElements(D.lerp(rp.z,t.x,s),D.lerp(rp.x,t.y,s),D.lerp(rp.y,t.z,s),n)};var rae=new d,sae=new d,aae=new R;ec.clipToGLWindowCoordinates=function(e,t,n){return d.divideByScalar(t,t.w,rae),R.computeViewportTransformation(e,0,1,aae),R.multiplyByPoint(aae,rae,sae),k.fromCartesian3(sae,n)};ec.transformWindowToDrawingBuffer=function(e,t,n){let i=e.canvas,o=e.drawingBufferWidth/i.clientWidth,r=e.drawingBufferHeight/i.clientHeight;return k.fromElements(t.x*o,t.y*r,n)};var V8e=new se,cae=new se;ec.drawingBufferToWorldCoordinates=function(e,t,n,i){let r=e.context.uniformState,s=r.currentFrustum,a=s.x,c=s.y;if(e.frameState.useLogDepth){let g=n*r.log2FarDepthFromNearPlusOne,m=Math.pow(2,g)-1;n=c*(1-a/(m+a))/(c-a)}let u=e.view.passState.viewport,f=se.clone(se.UNIT_W,V8e);f.x=(t.x-u.x)/u.width*2-1,f.y=(t.y-u.y)/u.height*2-1,f.z=n*2-1,f.w=1;let h,A=e.camera.frustum;if(l(A.fovy)){h=R.multiplyByVector(r.inverseViewProjection,f,cae);let g=1/h.w;d.multiplyByScalar(h,g,h)}else{let g=A.offCenterFrustum;l(g)&&(A=g),h=cae,h.x=(f.x*(A.right-A.left)+A.left+A.right)*.5,h.y=(f.y*(A.top-A.bottom)+A.bottom+A.top)*.5,h.z=(f.z*(a-c)-a-c)*.5,h.w=1,h=R.multiplyByVector(r.inverseView,h,h)}return d.fromCartesian4(h,i)};var to=ec;var gx={};gx._deprecationWarning=Pr;var sp=Uint32Array.BYTES_PER_ELEMENT;gx.parse=function(e,t){let n=t??0;t=n;let i=new Uint8Array(e),o=new DataView(e);t+=sp;let r=o.getUint32(t,!0);if(r!==1)throw new ce(`Only Batched 3D Model version 1 is supported. Version ${r} is not.`);t+=sp;let s=o.getUint32(t,!0);t+=sp;let a=o.getUint32(t,!0);t+=sp;let c=o.getUint32(t,!0);t+=sp;let u=o.getUint32(t,!0);t+=sp;let f=o.getUint32(t,!0);t+=sp;let h;u>=570425344?(t-=sp*2,h=a,u=c,f=0,a=0,c=0,gx._deprecationWarning("b3dm-legacy-header","This b3dm header is using the legacy format [batchLength] [batchTableByteLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel.")):f>=570425344&&(t-=sp,h=u,u=a,f=c,a=0,c=0,gx._deprecationWarning("b3dm-legacy-header","This b3dm header is using the legacy format [batchTableJsonByteLength] [batchTableBinaryByteLength] [batchLength]. The new format is [featureTableJsonByteLength] [featureTableBinaryByteLength] [batchTableJsonByteLength] [batchTableBinaryByteLength] from https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Batched3DModel."));let A;a===0?A={BATCH_LENGTH:h??0}:(A=yr(i,t,a),t+=a);let g=new Uint8Array(e,t,c);t+=c;let m,_;u>0&&(m=yr(i,t,u),t+=u,f>0&&(_=new Uint8Array(e,t,f),_=new Uint8Array(_),t+=f));let y=n+s-t;if(y===0)throw new ce("glTF byte length must be greater than 0.");let C;return t%4===0?C=new Uint8Array(e,t,y):(gx._deprecationWarning("b3dm-glb-unaligned","The embedded glb is not aligned to a 4-byte boundary."),C=new Uint8Array(i.subarray(t,t+y))),{batchLength:h,featureTableJson:A,featureTableBinary:g,batchTableJson:m,batchTableBinary:_,gltf:C}};var vF=gx;function bB(e,t){this.json=e,this.buffer=t,this._cachedTypedArrays={},this.featuresLength=0}function lae(e,t,n,i,o,r){let s=e._cachedTypedArrays,a=s[t];return l(a)||(a=q.createArrayBufferView(n,e.buffer.buffer,e.buffer.byteOffset+r,o*i),s[t]=a),a}function H8e(e,t,n,i){let o=e._cachedTypedArrays,r=o[t];return l(r)||(r=q.createTypedArray(n,i),o[t]=r),r}bB.prototype.getGlobalProperty=function(e,t,n){let i=this.json[e];if(l(i))return l(i.byteOffset)?(t=t??q.UNSIGNED_INT,n=n??1,lae(this,e,t,n,1,i.byteOffset)):i};bB.prototype.hasProperty=function(e){return l(this.json[e])};bB.prototype.getPropertyArray=function(e,t,n){let i=this.json[e];if(l(i))return l(i.byteOffset)?(l(i.componentType)&&(t=q.fromName(i.componentType)),lae(this,e,t,n,this.featuresLength,i.byteOffset)):H8e(this,e,t,i)};bB.prototype.getProperty=function(e,t,n,i,o){let r=this.json[e];if(!l(r))return;let s=this.getPropertyArray(e,t,n);if(n===1)return s[i];for(let a=0;a<n;++a)o[a]=s[n*i+a];return o};var Sm=bB;function TB(e){let t=e.count,n=e.batchTable,i=e.binaryBody,o=e.parseAsPropertyAttributes??!1,r=e.customAttributeOutput,s=W8e(n),a;l(s.jsonProperties)&&(a=new a_({count:t,properties:s.jsonProperties}));let c;l(s.hierarchy)&&(c=new VI({extension:s.hierarchy,binaryBody:i}));let u=Em.BATCH_TABLE_CLASS_NAME,f=s.binaryProperties,h,A,g;if(o){let y=Y8e(t,u,f,i,r);g=y.transcodedSchema,A=[new ux({propertyAttribute:y.propertyAttributeJson,class:y.transcodedClass})]}else{let y=j8e(t,u,f,i);g=y.transcodedSchema;let C=y.featureTableJson;h=new jd({count:C.count,properties:C.properties,class:y.transcodedClass,bufferViews:y.bufferViewsTypedArrays}),A=[]}let m=[];if(l(h)||l(a)||l(c)){let y=new Wl({id:0,name:"Batch Table",count:t,metadataTable:h,jsonMetadataTable:a,batchTableHierarchy:c});m.push(y)}let _={schema:g,propertyTables:m,propertyAttributes:A,extensions:s.extensions,extras:s.extras};return new Da(_)}function W8e(e){let t=e.HIERARCHY,n=e.extras,i=e.extensions,o;l(t)?(TB._deprecationWarning("batchTableHierarchyExtension","The batch table HIERARCHY property has been moved to an extension. Use extensions.3DTILES_batch_table_hierarchy instead."),o=t):l(i)&&(o=i["3DTILES_batch_table_hierarchy"]);let r,s={};for(let a in e){if(!e.hasOwnProperty(a)||a==="HIERARCHY"||a==="extensions"||a==="extras")continue;let c=e[a];Array.isArray(c)?(r=l(r)?r:{},r[a]=c):s[a]=c}return{binaryProperties:s,jsonProperties:r,hierarchy:o,extras:n,extensions:i}}function j8e(e,t,n,i){let o={},r={},s={},a=0;for(let h in n){if(!n.hasOwnProperty(h))continue;if(!l(i))throw new ce(`Property ${h} requires a batch table binary.`);let A=n[h],g=vf(A);r[h]={bufferView:a},o[h]=uae(A),s[a]=g.createArrayBufferView(i.buffer,i.byteOffset+A.byteOffset,e),a++}let c={classes:{}};c.classes[t]={properties:o};let u=Mf.fromJson(c);return{featureTableJson:{class:t,count:e,properties:r},bufferViewsTypedArrays:s,transcodedSchema:u,transcodedClass:u.classes[t]}}function Y8e(e,t,n,i,o){let r={},s={},a=0;for(let h in n){if(!n.hasOwnProperty(h))continue;let A=n[h];if(!l(i)&&!l(A.typedArray))throw new ce(`Property ${h} requires a batch table binary.`);let g=Qt.sanitizeGlslIdentifier(h);(g===""||r.hasOwnProperty(g))&&(g=`property_${a}`,a++);let m=uae(A);m.name=h,r[g]=m;let _=g.toUpperCase();_.startsWith("_")||(_=`_${_}`);let y=A.typedArray;l(y)||(y=vf(A).createArrayBufferView(i.buffer,i.byteOffset+A.byteOffset,e));let C=new bn.Attribute;C.name=_,C.count=e,C.type=A.type;let E=q.fromTypedArray(y);(E===q.INT||E===q.UNSIGNED_INT||E===q.DOUBLE)&&(TB._oneTimeWarning("Cast pnts property to floats",`Point cloud property "${_}" will be cast to a float array because INT, UNSIGNED_INT, and DOUBLE are not valid WebGL vertex attribute types. Some precision may be lost.`),y=new Float32Array(y)),C.componentDatatype=q.fromTypedArray(y),C.typedArray=y,o.push(C),s[g]={attribute:_}}let c={classes:{}};c.classes[t]={properties:r};let u=Mf.fromJson(c);return{class:t,propertyAttributeJson:{properties:s},transcodedSchema:u,transcodedClass:u.classes[t]}}function uae(e){let t=q8e(e.componentType);return{type:e.type,componentType:t}}function q8e(e){switch(e){case"BYTE":return"INT8";case"UNSIGNED_BYTE":return"UINT8";case"SHORT":return"INT16";case"UNSIGNED_SHORT":return"UINT16";case"INT":return"INT32";case"UNSIGNED_INT":return"UINT32";case"FLOAT":return"FLOAT32";case"DOUBLE":return"FLOAT64"}}TB._deprecationWarning=Pr;TB._oneTimeWarning=yt;var f_=TB;var qC={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,FAILED:4},K8e=bn.FeatureIdAttribute;function d_(e){e=e??V.EMPTY_OBJECT;let t=e.b3dmResource,n=e.baseResource,i=e.arrayBuffer,o=e.byteOffset??0,r=e.releaseGltfJson??!1,s=e.asynchronous??!0,a=e.incrementallyLoadTextures??!0,c=e.upAxis??Ao.Y,u=e.forwardAxis??Ao.X,f=e.loadAttributesAsTypedArray??!1,h=e.loadAttributesFor2D??!1,A=e.enablePick??!1,g=e.loadIndicesForWireframe??!1,m=e.loadPrimitiveOutline??!0,_=e.loadForClassification??!1;n=l(n)?n:t.clone(),this._b3dmResource=t,this._baseResource=n,this._arrayBuffer=i,this._byteOffset=o,this._releaseGltfJson=r,this._asynchronous=s,this._incrementallyLoadTextures=a,this._upAxis=c,this._forwardAxis=u,this._loadAttributesAsTypedArray=f,this._loadAttributesFor2D=h,this._enablePick=A,this._loadIndicesForWireframe=g,this._loadPrimitiveOutline=m,this._loadForClassification=_,this._state=qC.UNLOADED,this._promise=void 0,this._gltfLoader=void 0,this._batchLength=0,this._propertyTable=void 0,this._batchTable=void 0,this._components=void 0,this._transform=R.IDENTITY}l(Object.create)&&(d_.prototype=Object.create(qi.prototype),d_.prototype.constructor=d_);Object.defineProperties(d_.prototype,{texturesLoaded:{get:function(){return this._gltfLoader?.texturesLoaded}},cacheKey:{get:function(){}},components:{get:function(){return this._components}}});d_.prototype.load=function(){if(l(this._promise))return this._promise;let e=vF.parse(this._arrayBuffer,this._byteOffset),t=e.batchLength,n=e.featureTableJson,i=e.featureTableBinary,o=e.batchTableJson,r=e.batchTableBinary,s=new Sm(n,i);t=s.getGlobalProperty("BATCH_LENGTH"),this._batchLength=t;let a=s.getGlobalProperty("RTC_CENTER",q.FLOAT,3);l(a)&&(this._transform=R.fromTranslation(d.fromArray(a))),this._batchTable={json:o,binary:r};let c=new Ff({typedArray:e.gltf,upAxis:this._upAxis,forwardAxis:this._forwardAxis,gltfResource:this._b3dmResource,baseResource:this._baseResource,releaseGltfJson:this._releaseGltfJson,incrementallyLoadTextures:this._incrementallyLoadTextures,loadAttributesAsTypedArray:this._loadAttributesAsTypedArray,loadAttributesFor2D:this._loadAttributesFor2D,enablePick:this._enablePick,loadIndicesForWireframe:this._loadIndicesForWireframe,loadPrimitiveOutline:this._loadPrimitiveOutline,loadForClassification:this._loadForClassification,renameBatchIdSemantic:!0});this._gltfLoader=c,this._state=qC.LOADING;let u=this;return this._promise=c.load().then(function(){if(!u.isDestroyed())return u._state=qC.PROCESSING,u}).catch(function(f){if(!u.isDestroyed())return X8e(u,f)}),this._promise};function X8e(e,t){return e.unload(),e._state=qC.FAILED,t=e.getError("Failed to load b3dm",t),Promise.reject(t)}d_.prototype.process=function(e){if(this._state===qC.READY)return!0;if(this._state!==qC.PROCESSING||!this._gltfLoader.process(e))return!1;let n=this._gltfLoader.components;return n.transform=R.multiplyTransformation(this._transform,n.transform,n.transform),J8e(this,n),this._components=n,this._arrayBuffer=void 0,this._state=qC.READY,!0};function J8e(e,t){let n=e._batchTable,i=e._batchLength;if(i===0)return;let o;if(l(n.json))o=f_({count:i,batchTable:n.json,binaryBody:n.binary});else{let a=new Wl({name:Em.BATCH_TABLE_CLASS_NAME,count:i});o=new Da({schema:{},propertyTables:[a]})}let r=t.scene.nodes,s=r.length;for(let a=0;a<s;a++)fae(r[a]);t.structuralMetadata=o}function fae(e){let t=e.children.length;for(let i=0;i<t;i++)fae(e.children[i]);let n=e.primitives.length;for(let i=0;i<n;i++){let o=e.primitives[i],r=Qt.getAttributeBySemantic(o,ct.FEATURE_ID);if(l(r)){r.setIndex=0;let s=new K8e;s.propertyTableId=0,s.setIndex=0,s.positionalLabel="featureId_0",o.featureIds.push(s)}}}d_.prototype.unload=function(){l(this._gltfLoader)&&!this._gltfLoader.isDestroyed()&&this._gltfLoader.unload(),this._components=void 0,this._arrayBuffer=void 0};var PF=d_;function h_(e){e=e??V.EMPTY_OBJECT,this._geoJson=e.geoJson,this._components=void 0}l(Object.create)&&(h_.prototype=Object.create(qi.prototype),h_.prototype.constructor=h_);Object.defineProperties(h_.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}}});h_.prototype.load=function(){return Promise.resolve(this)};h_.prototype.process=function(e){return l(this._components)||(this._components=u4e(this._geoJson,e),this._geoJson=void 0),!0};function Z8e(){this.lines=void 0,this.points=void 0,this.properties=void 0}function $8e(){this.features=[]}function QW(e){let t=e[0],n=e[1],i=e[2]??0;return new d(t,n,i)}function kW(e){let t=e.length,n=new Array(t);for(let o=0;o<t;o++)n[o]=QW(e[o]);return[n]}function e4e(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]=kW(e[i])[0];return n}function dae(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]=kW(e[i])[0];return n}function t4e(e){let t=e.length,n=[];for(let i=0;i<t;i++){let o=dae(e[i]);si(n,o)}return n}function n4e(e){return[QW(e)]}function i4e(e){let t=e.length,n=new Array(t);for(let i=0;i<t;i++)n[i]=QW(e[i]);return n}var o4e={LineString:kW,MultiLineString:e4e,MultiPolygon:t4e,Polygon:dae,MultiPoint:i4e,Point:n4e},r4e={LineString:Me.LINES,MultiLineString:Me.LINES,MultiPolygon:Me.LINES,Polygon:Me.LINES,MultiPoint:Me.POINTS,Point:Me.POINTS};function hae(e,t){if(!l(e.geometry))return;let n=e.geometry.type,i=o4e[n],o=r4e[n],r=e.geometry.coordinates;if(!l(i)||!l(r))return;let s=new Z8e;o===Me.LINES?s.lines=i(r):o===Me.POINTS&&(s.points=i(r)),s.properties=e.properties,t.features.push(s)}function s4e(e,t){let n=e.features,i=n.length;for(let o=0;o<i;o++)hae(n[o],t)}var a4e={FeatureCollection:s4e,Feature:hae},RF=new d;function c4e(e,t,n){let i=0,o=0,r=e.length;for(let N=0;N<r;N++){let L=e[N];if(l(L.lines)){let p=L.lines.length;for(let x=0;x<p;x++){let T=L.lines[x];i+=T.length,o+=(T.length-1)*2}}}let s=new Float32Array(i*3),a=new Float32Array(i),c=Fe.createTypedArray(i,o),u=Fe.fromTypedArray(c),f=new d(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),h=new d(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),A=0,g=0;for(let N=0;N<r;N++){let L=e[N];if(!l(L.lines))continue;let p=L.lines.length;for(let x=0;x<p;x++){let T=L.lines[x],w=T.length;for(let M=0;M<w;M++){let O=T[M],U=d.fromDegrees(O.x,O.y,O.z,te.WGS84,RF),Q=R.multiplyByPoint(t,U,RF);d.minimumByComponent(f,Q,f),d.maximumByComponent(h,Q,h),d.pack(Q,s,A*3),a[A]=N,M<w-1&&(c[g*2]=A,c[g*2+1]=A+1,g++),A++}}}let m=Et.createVertexBuffer({typedArray:s,context:n.context,usage:Qe.STATIC_DRAW});m.vertexArrayDestroyable=!1;let _=Et.createVertexBuffer({typedArray:a,context:n.context,usage:Qe.STATIC_DRAW});_.vertexArrayDestroyable=!1;let y=Et.createIndexBuffer({typedArray:c,context:n.context,usage:Qe.STATIC_DRAW,indexDatatype:u});y.vertexArrayDestroyable=!1;let C=new bn.Attribute;C.semantic=ct.POSITION,C.componentDatatype=q.FLOAT,C.type=Ht.VEC3,C.count=i,C.min=f,C.max=h,C.buffer=m;let E=new bn.Attribute;E.semantic=ct.FEATURE_ID,E.setIndex=0,E.componentDatatype=q.FLOAT,E.type=Ht.SCALAR,E.count=i,E.buffer=_;let I=[C,E],b=new bn.Material;b.unlit=!0;let S=new bn.Indices;S.indexDatatype=u,S.count=c.length,S.buffer=y;let B=new bn.FeatureIdAttribute;B.featureCount=r,B.propertyTableId=0,B.setIndex=0,B.positionalLabel="featureId_0";let v=[B],P=new bn.Primitive;return P.attributes=I,P.indices=S,P.featureIds=v,P.primitiveType=Me.LINES,P.material=b,P}function l4e(e,t,n){let i=0,o=e.length;for(let I=0;I<o;I++){let b=e[I];l(b.points)&&(i+=b.points.length)}let r=new Float32Array(i*3),s=new Float32Array(i),a=new d(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),c=new d(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),u=0;for(let I=0;I<o;I++){let b=e[I];if(!l(b.points))continue;let S=b.points.length;for(let B=0;B<S;B++){let v=b.points[B],P=d.fromDegrees(v.x,v.y,v.z,te.WGS84,RF),N=R.multiplyByPoint(t,P,RF);d.minimumByComponent(a,N,a),d.maximumByComponent(c,N,c),d.pack(N,r,u*3),s[u]=I,u++}}let f=Et.createVertexBuffer({typedArray:r,context:n.context,usage:Qe.STATIC_DRAW});f.vertexArrayDestroyable=!1;let h=Et.createVertexBuffer({typedArray:s,context:n.context,usage:Qe.STATIC_DRAW});h.vertexArrayDestroyable=!1;let A=new bn.Attribute;A.semantic=ct.POSITION,A.componentDatatype=q.FLOAT,A.type=Ht.VEC3,A.count=i,A.min=a,A.max=c,A.buffer=f;let g=new bn.Attribute;g.semantic=ct.FEATURE_ID,g.setIndex=0,g.componentDatatype=q.FLOAT,g.type=Ht.SCALAR,g.count=i,g.buffer=h;let m=[A,g],_=new bn.Material;_.unlit=!0;let y=new bn.FeatureIdAttribute;y.featureCount=o,y.propertyTableId=0,y.setIndex=0,y.positionalLabel="featureId_0";let C=[y],E=new bn.Primitive;return E.attributes=m,E.featureIds=C,E.primitiveType=Me.POINTS,E.material=_,E}function u4e(e,t){let n=new $8e,i=a4e[e.type];l(i)&&i(e,n);let o=n.features,r=o.length;if(r===0)throw new ce("GeoJSON must have at least one feature");let s={};for(let N=0;N<r;N++){let p=o[N].properties??V.EMPTY_OBJECT;for(let x in p)p.hasOwnProperty(x)&&(l(s[x])||(s[x]=new Array(r)))}for(let N=0;N<r;N++){let L=o[N];for(let p in s)if(s.hasOwnProperty(p)){let x=L.properties[p]??"";s[p][N]=x}}let a=new a_({count:r,properties:s}),u=[new Wl({id:0,count:r,jsonMetadataTable:a})],f=Mf.fromJson({}),h=new Da({schema:f,propertyTables:u}),A=new d(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY),g=new d(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY),m=!1,_=!1;for(let N=0;N<r;N++){let L=o[N];if(l(L.lines)){m=!0;let p=L.lines.length;for(let x=0;x<p;x++){let T=L.lines[x],w=T.length;for(let M=0;M<w;M++)d.minimumByComponent(A,T[M],A),d.maximumByComponent(g,T[M],g)}}if(l(L.points)){_=!0;let p=L.points.length;for(let x=0;x<p;x++){let T=L.points[x];d.minimumByComponent(A,T,A),d.maximumByComponent(g,T,g)}}}let y=d.midpoint(A,g,new d),C=d.fromDegrees(y.x,y.y,y.z,te.WGS84,new d),E=kt.eastNorthUpToFixedFrame(C,te.WGS84,new R),I=R.inverseTransformation(E,new R),b=[];m&&b.push(c4e(o,I,t)),_&&b.push(l4e(o,I,t));let S=new bn.Node;S.index=0,S.primitives=b;let B=[S],v=new bn.Scene;v.nodes=B;let P=new bn.Components;return P.scene=v,P.nodes=B,P.transform=E,P.structuralMetadata=h,P}h_.prototype.unload=function(){this._components=void 0};var MF=h_;var NF={};NF._deprecationWarning=Pr;var m_=Uint32Array.BYTES_PER_ELEMENT;NF.parse=function(e,t){let n=t??0;t=n;let i=new Uint8Array(e),o=new DataView(e);t+=m_;let r=o.getUint32(t,!0);if(r!==1)throw new ce(`Only Instanced 3D Model version 1 is supported. Version ${r} is not.`);t+=m_;let s=o.getUint32(t,!0);t+=m_;let a=o.getUint32(t,!0);if(a===0)throw new ce("featureTableJsonByteLength is zero, the feature table must be defined.");t+=m_;let c=o.getUint32(t,!0);t+=m_;let u=o.getUint32(t,!0);t+=m_;let f=o.getUint32(t,!0);t+=m_;let h=o.getUint32(t,!0);if(h!==1&&h!==0)throw new ce(`Only glTF format 0 (uri) or 1 (embedded) are supported. Format ${h} is not.`);t+=m_;let A=yr(i,t,a);t+=a;let g=new Uint8Array(e,t,c);t+=c;let m,_;u>0&&(m=yr(i,t,u),t+=u,f>0&&(_=new Uint8Array(e,t,f),_=new Uint8Array(_),t+=f));let y=n+s-t;if(y===0)throw new ce("glTF byte length must be greater than 0.");let C;return t%4===0?C=new Uint8Array(e,t,y):(NF._deprecationWarning("i3dm-glb-unaligned","The embedded glb is not aligned to a 4-byte boundary."),C=new Uint8Array(i.subarray(t,t+y))),{gltfFormat:h,featureTableJson:A,featureTableBinary:g,batchTableJson:m,batchTableBinary:_,gltf:C}};var LF=NF;var ap={NOT_LOADED:0,LOADING:1,PROCESSING:2,POST_PROCESSING:3,READY:4,FAILED:5,UNLOADED:6},OF=bn.Attribute,f4e=bn.FeatureIdAttribute,Aae=bn.Instances;function cp(e){e=e??V.EMPTY_OBJECT;let t=e.i3dmResource,n=e.arrayBuffer,i=e.baseResource,o=e.byteOffset??0,r=e.releaseGltfJson??!1,s=e.asynchronous??!0,a=e.incrementallyLoadTextures??!0,c=e.upAxis??Ao.Y,u=e.forwardAxis??Ao.X,f=e.loadAttributesAsTypedArray??!1,h=e.loadIndicesForWireframe??!1,A=e.loadPrimitiveOutline??!0,g=e.enablePick??!1;i=l(i)?i:t.clone(),this._i3dmResource=t,this._baseResource=i,this._arrayBuffer=n,this._byteOffset=o,this._releaseGltfJson=r,this._asynchronous=s,this._incrementallyLoadTextures=a,this._upAxis=c,this._forwardAxis=u,this._loadAttributesAsTypedArray=f,this._loadIndicesForWireframe=h,this._loadPrimitiveOutline=A,this._enablePick=g,this._state=ap.NOT_LOADED,this._promise=void 0,this._gltfLoader=void 0,this._buffers=[],this._components=void 0,this._transform=R.IDENTITY,this._batchTable=void 0,this._featureTable=void 0,this._instancesLength=0}l(Object.create)&&(cp.prototype=Object.create(qi.prototype),cp.prototype.constructor=cp);Object.defineProperties(cp.prototype,{texturesLoaded:{get:function(){return this._gltfLoader?.texturesLoaded}},cacheKey:{get:function(){}},components:{get:function(){return this._components}}});cp.prototype.load=function(){if(l(this._promise))return this._promise;let e=LF.parse(this._arrayBuffer,this._byteOffset),t=e.featureTableJson,n=e.featureTableBinary,i=e.batchTableJson,o=e.batchTableBinary,r=e.gltfFormat,s=new Sm(t,n);this._featureTable=s;let a=s.getGlobalProperty("INSTANCES_LENGTH");if(s.featuresLength=a,!l(a))throw new ce("Feature table global property: INSTANCES_LENGTH must be defined");this._instancesLength=a;let c=s.getGlobalProperty("RTC_CENTER",q.FLOAT,3);l(c)&&(this._transform=R.fromTranslation(d.fromArray(c))),this._batchTable={json:i,binary:o};let u={upAxis:this._upAxis,forwardAxis:this._forwardAxis,releaseGltfJson:this._releaseGltfJson,incrementallyLoadTextures:this._incrementallyLoadTextures,loadAttributesAsTypedArray:this._loadAttributesAsTypedArray,enablePick:this._enablePick,loadIndicesForWireframe:this._loadIndicesForWireframe,loadPrimitiveOutline:this._loadPrimitiveOutline};if(r===0){let h=Tu(e.gltf);h=h.replace(/[\s\0]+$/,"");let A=this._baseResource.getDerivedResource({url:h});u.gltfResource=A,u.baseResource=A}else u.gltfResource=this._i3dmResource,u.typedArray=e.gltf;let f=new Ff(u);return this._gltfLoader=f,this._state=ap.LOADING,this._promise=f.load().then(()=>{if(!this.isDestroyed())return this._state=ap.PROCESSING,this}).catch(h=>{if(!this.isDestroyed())throw d4e(this,h)}),this._promise};function d4e(e,t){return e.unload(),e._state=ap.FAILED,e.getError("Failed to load i3dm",t)}cp.prototype.process=function(e){if(this._state===ap.READY)return!0;let t=this._gltfLoader,n=!1;if(this._state===ap.PROCESSING&&(n=t.process(e)),!n)return!1;let i=t.components;return i.transform=R.multiplyTransformation(this._transform,i.transform,i.transform),A4e(this,i,e),h4e(this,i),this._components=i,this._arrayBuffer=void 0,this._state=ap.READY,!0};function h4e(e,t){let n=e._batchTable,i=e._instancesLength;if(i===0)return;let o;if(l(n.json))o=f_({count:i,batchTable:n.json,binaryBody:n.binary});else{let r=new Wl({name:Em.BATCH_TABLE_CLASS_NAME,count:i});o=new Da({schema:{},propertyTables:[r]})}t.structuralMetadata=o}var FF=new d,UW=new Array(4),m4e=new R;function A4e(e,t,n){let i,o=e._featureTable,r=e._instancesLength;if(r===0)return;let s=o.getGlobalProperty("RTC_CENTER",q.FLOAT,3),a=o.getGlobalProperty("EAST_NORTH_UP"),c=o.hasProperty("NORMAL_UP")||o.hasProperty("NORMAL_UP_OCT32P")||a,u=o.hasProperty("SCALE")||o.hasProperty("SCALE_NON_UNIFORM"),f=g4e(o,r),h;c&&(h=new Float32Array(4*r));let A;u&&(A=new Float32Array(3*r));let g=new Float32Array(r),m=d.unpackArray(f),_=new d,y=new d,C=new d,E=new d,I=new J,b=new Le,S=new Array(4),B=new d,v=new Array(3),P=new R;if(!l(s)||d.equals(d.unpack(s),d.ZERO)){let Q=le.fromPoints(m);for(i=0;i<m.length;i++)d.subtract(m[i],Q.center,FF),f[3*i+0]=FF.x,f[3*i+1]=FF.y,f[3*i+2]=FF.z;let z=R.fromTranslation(Q.center,m4e);t.transform=R.multiplyTransformation(z,t.transform,t.transform)}for(i=0;i<r;i++){_=d.clone(m[i]),l(s)&&d.add(_,d.unpack(s),_),c&&(_4e(o,a,i,b,_,C,y,E,I,P),Le.pack(b,S,0),h[4*i+0]=S[0],h[4*i+1]=S[1],h[4*i+2]=S[2],h[4*i+3]=S[3]),u&&(y4e(o,i,B),d.pack(B,v,0),A[3*i+0]=v[0],A[3*i+1]=v[1],A[3*i+2]=v[2]);let Q=o.getProperty("BATCH_ID",q.UNSIGNED_SHORT,1,i);l(Q)||(Q=i),g[i]=Q}let N=new Aae;N.transformInWorldSpace=!0;let L=e._buffers,p=new OF;if(p.name="Instance Translation",p.semantic=Ss.TRANSLATION,p.componentDatatype=q.FLOAT,p.type=Ht.VEC3,p.count=r,p.typedArray=f,!c){let Q=Et.createVertexBuffer({context:n.context,typedArray:f,usage:Qe.STATIC_DRAW});Q.vertexArrayDestroyable=!1,L.push(Q),p.buffer=Q}if(N.attributes.push(p),c){let Q=new OF;Q.name="Instance Rotation",Q.semantic=Ss.ROTATION,Q.componentDatatype=q.FLOAT,Q.type=Ht.VEC4,Q.count=r,Q.typedArray=h,N.attributes.push(Q)}if(u){let Q=new OF;if(Q.name="Instance Scale",Q.semantic=Ss.SCALE,Q.componentDatatype=q.FLOAT,Q.type=Ht.VEC3,Q.count=r,c)Q.typedArray=A;else{let z=Et.createVertexBuffer({context:n.context,typedArray:A,usage:Qe.STATIC_DRAW});z.vertexArrayDestroyable=!1,L.push(z),Q.buffer=z}N.attributes.push(Q)}let x=new OF;x.name="Instance Feature ID",x.setIndex=0,x.semantic=Ss.FEATURE_ID,x.componentDatatype=q.FLOAT,x.type=Ht.SCALAR,x.count=r;let T=Et.createVertexBuffer({context:n.context,typedArray:g,usage:Qe.STATIC_DRAW});T.vertexArrayDestroyable=!1,L.push(T),x.buffer=T,N.attributes.push(x);let w=new f4e;w.propertyTableId=0,w.setIndex=0,w.positionalLabel="instanceFeatureId_0",N.featureIds.push(w);let M=t.nodes,O=M.length,U=!1;for(i=0;i<O;i++){let Q=M[i];Q.primitives.length>0&&(Q.instances=U?p4e(N):N,U=!0)}}function p4e(e){let t=new Aae;t.transformInWorldSpace=e.transformInWorldSpace;let n=e.attributes,i=n.length;for(let o=0;o<i;o++){let r=ze(n[o],!1);t.attributes.push(r)}return t.featureIds=e.featureIds,t}function g4e(e,t){if(e.hasProperty("POSITION"))return e.getPropertyArray("POSITION",q.FLOAT,3);if(e.hasProperty("POSITION_QUANTIZED")){let n=e.getPropertyArray("POSITION_QUANTIZED",q.UNSIGNED_SHORT,3),i=e.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",q.FLOAT,3);if(!l(i))throw new ce("Global property: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");let o=e.getGlobalProperty("QUANTIZED_VOLUME_SCALE",q.FLOAT,3);if(!l(o))throw new ce("Global property: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");let r=new Float32Array(n.length);for(let s=0;s<n.length/3;s++)for(let a=0;a<3;a++){let c=3*s+a;r[c]=n[c]/65535*o[a]+i[a]}return r}else throw new ce("Either POSITION or POSITION_QUANTIZED must be defined for each instance.")}var mae=new Array(4);function _4e(e,t,n,i,o,r,s,a,c,u){let f=e.getProperty("NORMAL_UP",q.FLOAT,3,n,UW),h=e.getProperty("NORMAL_RIGHT",q.FLOAT,3,n,mae),A=!1;if(l(f)){if(!l(h))throw new ce("To define a custom orientation, both NORMAL_UP and NORMAL_RIGHT must be defined.");d.unpack(f,0,r),d.unpack(h,0,s),A=!0}else{let g=e.getProperty("NORMAL_UP_OCT32P",q.UNSIGNED_SHORT,2,n,UW),m=e.getProperty("NORMAL_RIGHT_OCT32P",q.UNSIGNED_SHORT,2,n,mae);if(l(g)){if(!l(m))throw new ce("To define a custom orientation with oct-encoded vectors, both NORMAL_UP_OCT32P and NORMAL_RIGHT_OCT32P must be defined.");Fn.octDecodeInRange(g[0],g[1],65535,r),Fn.octDecodeInRange(m[0],m[1],65535,s),A=!0}else t?(kt.eastNorthUpToFixedFrame(o,te.WGS84,u),R.getMatrix3(u,c)):J.clone(J.IDENTITY,c)}A&&(d.cross(s,r,a),d.normalize(a,a),J.setColumn(c,0,s,c),J.setColumn(c,1,r,c),J.setColumn(c,2,a,c)),Le.fromRotationMatrix(c,i)}function y4e(e,t,n){n=d.fromElements(1,1,1,n);let i=e.getProperty("SCALE",q.FLOAT,1,t);l(i)&&d.multiplyByScalar(n,i,n);let o=e.getProperty("SCALE_NON_UNIFORM",q.FLOAT,3,t,UW);l(o)&&(n.x*=o[0],n.y*=o[1],n.z*=o[2])}function C4e(e){let t=e._buffers,n=t.length;for(let i=0;i<n;i++){let o=t[i];o.isDestroyed()||o.destroy()}t.length=0}cp.prototype.isUnloaded=function(){return this._state===ap.UNLOADED};cp.prototype.unload=function(){l(this._gltfLoader)&&!this._gltfLoader.isDestroyed()&&this._gltfLoader.unload(),C4e(this),this._components=void 0,this._arrayBuffer=void 0,this._state=ap.UNLOADED};var QF=cp;var E4e={STOPPED:0,ANIMATING:1},wm=Object.freeze(E4e);function _x(){this.times=void 0,this.points=void 0,me.throwInstantiationError()}_x.getPointType=function(e){if(typeof e=="number")return Number;if(e instanceof d)return d;if(e instanceof Le)return Le};_x.prototype.evaluate=me.throwInstantiationError;_x.prototype.findTimeInterval=function(e,t){let n=this.times,i=n.length;if(t=t??0,e>=n[t]){if(t+1<i&&e<n[t+1])return t;if(t+2<i&&e<n[t+2])return t+1}else if(t-1>=0&&e>=n[t-1])return t-1;let o;if(e>n[t])for(o=t;o<i-1&&!(e>=n[o]&&e<n[o+1]);++o);else for(o=t-1;o>=0&&!(e>=n[o]&&e<n[o+1]);--o);return o===i-1&&(o=i-2),o};_x.prototype.wrapTime=function(e){let t=this.times,n=t[t.length-1],i=t[0],o=n-i,r;return e<i&&(r=Math.floor((i-e)/o)+1,e+=r*o),e>n&&(r=Math.floor((e-n)/o)+1,e-=r*o),e};_x.prototype.clampTime=function(e){let t=this.times;return D.clamp(e,t[0],t[t.length-1])};var _o=_x;function yx(e){this._value=e,this._valueType=_o.getPointType(e)}Object.defineProperties(yx.prototype,{value:{get:function(){return this._value}}});yx.prototype.findTimeInterval=function(e){};yx.prototype.wrapTime=function(e){return 0};yx.prototype.clampTime=function(e){return 0};yx.prototype.evaluate=function(e,t){let n=this._value,i=this._valueType;return i===Number?n:i.clone(n,t)};var kF=yx;function Cx(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times;this._times=n,this._points=t,this._pointType=_o.getPointType(t[0]),this._lastTimeIndex=0}Object.defineProperties(Cx.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});Cx.prototype.findTimeInterval=_o.prototype.findTimeInterval;Cx.prototype.wrapTime=_o.prototype.wrapTime;Cx.prototype.clampTime=_o.prototype.clampTime;Cx.prototype.evaluate=function(e,t){let n=this.points,i=this.times,o=this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex),r=(e-i[o])/(i[o+1]-i[o]);return this._pointType===Number?(1-r)*n[o]+r*n[o+1]:(l(t)||(t=new d),d.lerp(n[o],n[o+1],r,t))};var KC=Cx;var pae={};pae.solve=function(e,t,n,i){let o=new Array(n.length),r=new Array(i.length),s=new Array(i.length),a;for(a=0;a<r.length;a++)r[a]=new d,s[a]=new d;o[0]=n[0]/t[0],r[0]=d.multiplyByScalar(i[0],1/t[0],r[0]);let c;for(a=1;a<o.length;++a)c=1/(t[a]-o[a-1]*e[a-1]),o[a]=n[a]*c,r[a]=d.subtract(i[a],d.multiplyByScalar(r[a-1],e[a-1],r[a]),r[a]),r[a]=d.multiplyByScalar(r[a],c,r[a]);for(c=1/(t[a]-o[a-1]*e[a-1]),r[a]=d.subtract(i[a],d.multiplyByScalar(r[a-1],e[a-1],r[a]),r[a]),r[a]=d.multiplyByScalar(r[a],c,r[a]),s[s.length-1]=r[r.length-1],a=s.length-2;a>=0;--a)s[a]=d.subtract(r[a],d.multiplyByScalar(s[a+1],o[a],s[a]),s[a]);return s};var SB=pae;var gae=[],_ae=[],yae=[],Cae=[];function I4e(e,t,n){let i=gae,o=yae,r=_ae,s=Cae;i.length=o.length=e.length-1,r.length=s.length=e.length;let a;i[0]=r[0]=1,o[0]=0;let c=s[0];for(l(c)||(c=s[0]=new d),d.clone(t,c),a=1;a<i.length-1;++a)i[a]=o[a]=1,r[a]=4,c=s[a],l(c)||(c=s[a]=new d),d.subtract(e[a+1],e[a-1],c),d.multiplyByScalar(c,3,c);return i[a]=0,o[a]=1,r[a]=4,c=s[a],l(c)||(c=s[a]=new d),d.subtract(e[a+1],e[a-1],c),d.multiplyByScalar(c,3,c),r[a+1]=1,c=s[a+1],l(c)||(c=s[a+1]=new d),d.clone(n,c),SB.solve(i,r,o,s)}function x4e(e){let t=gae,n=yae,i=_ae,o=Cae;t.length=n.length=e.length-1,i.length=o.length=e.length;let r;t[0]=n[0]=1,i[0]=2;let s=o[0];for(l(s)||(s=o[0]=new d),d.subtract(e[1],e[0],s),d.multiplyByScalar(s,3,s),r=1;r<t.length;++r)t[r]=n[r]=1,i[r]=4,s=o[r],l(s)||(s=o[r]=new d),d.subtract(e[r+1],e[r-1],s),d.multiplyByScalar(s,3,s);return i[r]=2,s=o[r],l(s)||(s=o[r]=new d),d.subtract(e[r],e[r-1],s),d.multiplyByScalar(s,3,s),SB.solve(t,i,n,o)}function ql(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times,i=e.inTangents,o=e.outTangents;this._times=n,this._points=t,this._pointType=_o.getPointType(t[0]),this._inTangents=i,this._outTangents=o,this._lastTimeIndex=0}Object.defineProperties(ql.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}},inTangents:{get:function(){return this._inTangents}},outTangents:{get:function(){return this._outTangents}}});ql.createC1=function(e){e=e??V.EMPTY_OBJECT;let t=e.times,n=e.points,i=e.tangents,o=i.slice(0,i.length-1),r=i.slice(1,i.length);return new ql({times:t,points:n,inTangents:r,outTangents:o})};ql.createNaturalCubic=function(e){e=e??V.EMPTY_OBJECT;let t=e.times,n=e.points;if(n.length<3)return new KC({points:n,times:t});let i=x4e(n),o=i.slice(0,i.length-1),r=i.slice(1,i.length);return new ql({times:t,points:n,inTangents:r,outTangents:o})};ql.createClampedCubic=function(e){e=e??V.EMPTY_OBJECT;let t=e.times,n=e.points,i=e.firstTangent,o=e.lastTangent,r=_o.getPointType(n[0]);if(n.length<3)return new KC({points:n,times:t});let s=I4e(n,i,o),a=s.slice(0,s.length-1),c=s.slice(1,s.length);return new ql({times:t,points:n,inTangents:c,outTangents:a})};ql.hermiteCoefficientMatrix=new R(2,-3,0,1,-2,3,0,0,1,-2,1,0,1,-1,0,0);ql.prototype.findTimeInterval=_o.prototype.findTimeInterval;var b4e=new se,Ex=new d;ql.prototype.wrapTime=_o.prototype.wrapTime;ql.prototype.clampTime=_o.prototype.clampTime;ql.prototype.evaluate=function(e,t){let n=this.points,i=this.times,o=this.inTangents,r=this.outTangents;this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex);let s=this._lastTimeIndex,a=i[s+1]-i[s],c=(e-i[s])/a,u=b4e;u.z=c,u.y=c*c,u.x=u.y*c,u.w=1;let f=R.multiplyByVector(ql.hermiteCoefficientMatrix,u,u);f.z*=a,f.w*=a;let h=this._pointType;return h===Number?n[s]*f.x+n[s+1]*f.y+r[s]*f.z+o[s]*f.w:(l(t)||(t=new h),t=h.multiplyByScalar(n[s],f.x,t),h.multiplyByScalar(n[s+1],f.y,Ex),h.add(t,Ex,t),h.multiplyByScalar(r[s],f.z,Ex),h.add(t,Ex,t),h.multiplyByScalar(o[s],f.w,Ex),h.add(t,Ex,t))};var XC=ql;function Ix(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times;this._times=n,this._points=t,this._pointType=_o.getPointType(t[0]),this._lastTimeIndex=0}Object.defineProperties(Ix.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});Ix.prototype.findTimeInterval=_o.prototype.findTimeInterval;Ix.prototype.wrapTime=_o.prototype.wrapTime;Ix.prototype.clampTime=_o.prototype.clampTime;Ix.prototype.evaluate=function(e,t){let n=this.points;this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex);let i=this._lastTimeIndex,o=this._pointType;return o===Number?n[i]:(l(t)||(t=new o),o.clone(n[i],t))};var UF=Ix;function T4e(e){let t=e.points,n=e.times;return function(i,o){l(o)||(o=new Le);let r=e._lastTimeIndex=e.findTimeInterval(i,e._lastTimeIndex),s=(i-n[r])/(n[r+1]-n[r]),a=t[r],c=t[r+1];return Le.fastSlerp(a,c,s,o)}}function xx(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times;this._times=n,this._points=t,this._evaluateFunction=T4e(this),this._lastTimeIndex=0}Object.defineProperties(xx.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}}});xx.prototype.findTimeInterval=_o.prototype.findTimeInterval;xx.prototype.wrapTime=_o.prototype.wrapTime;xx.prototype.clampTime=_o.prototype.clampTime;xx.prototype.evaluate=function(e,t){return this._evaluateFunction(e,t)};var GF=xx;var bx=bn.AnimatedPropertyType;function GW(e){e=e??V.EMPTY_OBJECT;let t=e.channel,n=e.runtimeAnimation,i=e.runtimeNode;this._channel=t,this._runtimeAnimation=n,this._runtimeNode=i,this._splines=[],this._path=void 0,v4e(this)}Object.defineProperties(GW.prototype,{channel:{get:function(){return this._channel}},runtimeAnimation:{get:function(){return this._runtimeAnimation}},runtimeNode:{get:function(){return this._runtimeNode}},splines:{get:function(){return this._splines}}});function S4e(e,t){let n=[],i=[],o=[],r=t.length;for(let s=0;s<r;s+=3)i.push(t[s]),n.push(t[s+1]),o.push(t[s+2]);return i.splice(0,1),o.length=o.length-1,new XC({times:e,points:n,inTangents:i,outTangents:o})}function Eae(e,t,n,i){if(e.length===1&&t.length===1)return new kF(t[0]);switch(n){case Tm.STEP:return new UF({times:e,points:t});case Tm.CUBICSPLINE:return S4e(e,t);case Tm.LINEAR:return i===bx.ROTATION?new GF({times:e,points:t}):new KC({times:e,points:t})}}function w4e(e,t,n,i,o){let r=[];if(i===bx.WEIGHTS){let a=t.length/o,c,u;for(c=0;c<o;c++){let f=new Array(a),h=c;if(n===Tm.CUBICSPLINE)for(u=0;u<a;u+=3)f[u]=t[h],f[u+1]=t[h+o],f[u+2]=t[h+2*o],h+=o*3;else for(u=0;u<a;u++)f[u]=t[h],h+=o;r.push(Eae(e,f,n,i))}}else r.push(Eae(e,t,n,i));return r}var B4e=new d,D4e=new Le;function v4e(e){let t=e._channel,n=t.sampler,i=n.input,o=n.output,r=n.interpolation,a=t.target.path,c=e._runtimeNode,u=l(c.morphWeights)?c.morphWeights.length:1,f=w4e(i,o,r,a,u);e._splines=f,e._path=a}GW.prototype.animate=function(e){let t=this._splines,n=this._path,i=this._runtimeAnimation.model,o=this._runtimeNode;if(n===bx.WEIGHTS){let r=o.morphWeights,s=r.length;for(let a=0;a<s;a++){let c=t[a],u=i.clampAnimations?c.clampTime(e):c.wrapTime(e);r[a]=c.evaluate(u)}}else{if(o.userAnimated)return;{let r=t[0],s=i.clampAnimations?r.clampTime(e):r.wrapTime(e);n===bx.TRANSLATION||n===bx.SCALE?o[n]=r.evaluate(s,B4e):n===bx.ROTATION&&(o[n]=r.evaluate(s,D4e))}}};var zF=GW;function zW(e,t,n){this._animation=t,this._name=t.name,this._runtimeChannels=void 0,this._startTime=K.clone(n.startTime),this._delay=n.delay??0,this._stopTime=K.clone(n.stopTime),this.removeOnStop=n.removeOnStop??!1,this._multiplier=n.multiplier??1,this._reverse=n.reverse??!1,this._loop=n.loop??vu.NONE,this._animationTime=n.animationTime,this._prevAnimationDelta=void 0,this.start=new _e,this.update=new _e,this.stop=new _e,this._state=wm.STOPPED,this._computedStartTime=void 0,this._duration=void 0;let i=this;this._raiseStartEvent=function(){i.start.raiseEvent(e,i)},this._updateEventTime=0,this._raiseUpdateEvent=function(){i.update.raiseEvent(e,i,i._updateEventTime)},this._raiseStopEvent=function(){i.stop.raiseEvent(e,i)},this._model=e,this._localStartTime=void 0,this._localStopTime=void 0,P4e(this)}Object.defineProperties(zW.prototype,{animation:{get:function(){return this._animation}},name:{get:function(){return this._name}},runtimeChannels:{get:function(){return this._runtimeChannels}},model:{get:function(){return this._model}},localStartTime:{get:function(){return this._localStartTime}},localStopTime:{get:function(){return this._localStopTime}},startTime:{get:function(){return this._startTime}},delay:{get:function(){return this._delay}},stopTime:{get:function(){return this._stopTime}},multiplier:{get:function(){return this._multiplier}},reverse:{get:function(){return this._reverse}},loop:{get:function(){return this._loop}},animationTime:{get:function(){return this._animationTime}}});function P4e(e){let t=Number.MAX_VALUE,n=-Number.MAX_VALUE,i=e._model.sceneGraph,r=e._animation.channels,s=r.length,a=[];for(let c=0;c<s;c++){let u=r[c],f=u.target;if(!l(f))continue;let h=f.node.index,A=i._runtimeNodes[h],g=new zF({channel:u,runtimeAnimation:e,runtimeNode:A}),m=u.sampler.input;t=Math.min(t,m[0]),n=Math.max(n,m[m.length-1]),a.push(g)}e._runtimeChannels=a,e._localStartTime=t,e._localStopTime=n}zW.prototype.animate=function(e){let t=this._runtimeChannels,n=t.length;for(let i=0;i<n;i++)t[i].animate(e)};var VF=zW;function lp(e){this.animationAdded=new _e,this.animationRemoved=new _e,this.animateWhilePaused=!1,this._model=e,this._runtimeAnimations=[],this._previousTime=void 0}Object.defineProperties(lp.prototype,{length:{get:function(){return this._runtimeAnimations.length}},model:{get:function(){return this._model}}});function VW(e,t,n){let i=e._model,o=new VF(i,t,n);return e._runtimeAnimations.push(o),e.animationAdded.raiseEvent(i,o),o}lp.prototype.add=function(e){e=e??V.EMPTY_OBJECT;let n=this._model.sceneGraph.components.animations,i=e.index;if(l(i))return VW(this,n[i],e);let o=n.length;for(let r=0;r<o;++r)if(n[r].name===e.name){i=r;break}return VW(this,n[i],e)};lp.prototype.addAll=function(e){e=e??V.EMPTY_OBJECT;let n=this._model.sceneGraph.components.animations,i=[],o=n.length;for(let r=0;r<o;++r){let s=VW(this,n[r],e);i.push(s)}return i};lp.prototype.remove=function(e){if(!l(e))return!1;let t=this._runtimeAnimations,n=t.indexOf(e);return n!==-1?(t.splice(n,1),this.animationRemoved.raiseEvent(this._model,e),!0):!1};lp.prototype.removeAll=function(){let e=this._model,t=this._runtimeAnimations,n=t.length;this._runtimeAnimations.length=0;for(let i=0;i<n;++i)this.animationRemoved.raiseEvent(e,t[i])};lp.prototype.contains=function(e){return l(e)?this._runtimeAnimations.indexOf(e)!==-1:!1};lp.prototype.get=function(e){return this._runtimeAnimations[e]};var HF=[];function R4e(e,t,n){return function(){e.animationRemoved.raiseEvent(t,n)}}lp.prototype.update=function(e){let t=this._runtimeAnimations,n=t.length;if(n===0)return this._previousTime=void 0,!1;if(!this.animateWhilePaused&&K.equals(e.time,this._previousTime))return!1;this._previousTime=K.clone(e.time,this._previousTime);let i=!1,o=e.time,r=this._model;for(let s=0;s<n;++s){let a=t[s];l(a._computedStartTime)||(a._computedStartTime=K.addSeconds(a.startTime??o,a.delay,new K)),l(a._duration)||(a._duration=a.localStopTime*(1/a.multiplier));let c=a._computedStartTime,u=a._duration,f=a.stopTime,h=K.lessThanOrEquals(c,o),A=l(f)&&K.greaterThan(o,f),g=0;if(u!==0){let y=K.secondsDifference(A?f:o,c);g=l(a._animationTime)?a._animationTime(u,y):y/u}let m=a.loop===vu.REPEAT||a.loop===vu.MIRRORED_REPEAT,_=(h||m&&!l(a.startTime))&&(g<=1||m)&&!A;if(g===a._prevAnimationDelta){let y=a._state===wm.STOPPED;if(_!==y)continue}if(a._prevAnimationDelta=g,_||a._state===wm.ANIMATING){if(_&&a._state===wm.STOPPED&&(a._state=wm.ANIMATING,a.start.numberOfListeners>0&&e.afterRender.push(a._raiseStartEvent)),a.loop===vu.REPEAT)g=g-Math.floor(g);else if(a.loop===vu.MIRRORED_REPEAT){let C=Math.floor(g),E=g-C;g=C%2===1?1-E:E}a.reverse&&(g=1-g);let y=g*u*a.multiplier;y=D.clamp(y,a.localStartTime,a.localStopTime),a.animate(y),a.update.numberOfListeners>0&&(a._updateEventTime=y,e.afterRender.push(a._raiseUpdateEvent)),i=!0,_||(a._state=wm.STOPPED,a.stop.numberOfListeners>0&&e.afterRender.push(a._raiseStopEvent),a.removeOnStop&&HF.push(a))}}n=HF.length;for(let s=0;s<n;++s){let a=HF[s];t.splice(t.indexOf(a),1),e.afterRender.push(R4e(this,r,a))}return HF.length=0,i};var WF=lp;function JC(e){this._model=e.model,this._featureTable=e.featureTable,this._featureId=e.featureId,this._color=void 0}Object.defineProperties(JC.prototype,{show:{get:function(){return this._featureTable.getShow(this._featureId)},set:function(e){this._featureTable.setShow(this._featureId,e)}},color:{get:function(){return l(this._color)||(this._color=new G),this._featureTable.getColor(this._featureId,this._color)},set:function(e){this._featureTable.setColor(this._featureId,e)}},primitive:{get:function(){return this._model}},featureTable:{get:function(){return this._featureTable}},featureId:{get:function(){return this._featureId}}});JC.prototype.hasProperty=function(e){return this._featureTable.hasProperty(this._featureId,e)};JC.prototype.getProperty=function(e){return this._featureTable.getProperty(this._featureId,e)};JC.prototype.getPropertyInherited=function(e){return this._featureTable.hasPropertyBySemantic(this._featureId,e)?this._featureTable.getPropertyBySemantic(this._featureId,e):this._featureTable.getProperty(this._featureId,e)};JC.prototype.getPropertyIds=function(e){return this._featureTable.getPropertyIds(e)};JC.prototype.setProperty=function(e,t){return this._featureTable.setProperty(this._featureId,e,t)};var jF=JC;var wB={ALL_OPAQUE:0,ALL_TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2};wB.getStyleCommandsNeeded=function(e,t){return t===0?wB.ALL_OPAQUE:t===e?wB.ALL_TRANSLUCENT:wB.OPAQUE_AND_TRANSLUCENT};var Bm=Object.freeze(wB);var A_={GLTF:"GLTF",TILE_GLTF:"TILE_GLTF",TILE_B3DM:"B3DM",TILE_I3DM:"I3DM",TILE_PNTS:"PNTS",TILE_GEOJSON:"TILE_GEOJSON"};A_.is3DTiles=function(e){switch(e){case A_.TILE_GLTF:case A_.TILE_B3DM:case A_.TILE_I3DM:case A_.TILE_PNTS:case A_.TILE_GEOJSON:return!0;case A_.GLTF:return!1}};var Nr=Object.freeze(A_);function Zr(e){let t=e.model,n=e.propertyTable;this._propertyTable=n,this._model=t,this._features=void 0,this._featuresLength=0,this._batchTexture=void 0,this._styleCommandsNeededDirty=!1,this._styleCommandsNeeded=Bm.ALL_OPAQUE,M4e(this)}Object.defineProperties(Zr.prototype,{batchTexture:{get:function(){return this._batchTexture}},featuresLength:{get:function(){return this._featuresLength}},batchTextureByteLength:{get:function(){return l(this._batchTexture)?this._batchTexture.byteLength:0}},styleCommandsNeededDirty:{get:function(){return this._styleCommandsNeededDirty}}});function M4e(e){let t=e._model,n=Nr.is3DTiles(t.type),i=e._propertyTable.count;if(i===0)return;let o,r=new Array(i);if(n){let s=t.content;for(o=0;o<i;o++)r[o]=new Sa(s,o)}else for(o=0;o<i;o++)r[o]=new jF({model:t,featureId:o,featureTable:e});e._features=r,e._featuresLength=i,e._batchTexture=new Gl({featuresLength:i,owner:e,statistics:n?t.content.tileset.statistics:void 0})}Zr.prototype.update=function(e){this._styleCommandsNeededDirty=!1,this._batchTexture.update(void 0,e);let t=Bm.getStyleCommandsNeeded(this._featuresLength,this._batchTexture.translucentFeaturesLength);this._styleCommandsNeeded!==t&&(this._styleCommandsNeededDirty=!0,this._styleCommandsNeeded=t)};Zr.prototype.setShow=function(e,t){this._batchTexture.setShow(e,t)};Zr.prototype.setAllShow=function(e){this._batchTexture.setAllShow(e)};Zr.prototype.getShow=function(e){return this._batchTexture.getShow(e)};Zr.prototype.setColor=function(e,t){this._batchTexture.setColor(e,t)};Zr.prototype.setAllColor=function(e){this._batchTexture.setAllColor(e)};Zr.prototype.getColor=function(e,t){return this._batchTexture.getColor(e,t)};Zr.prototype.getPickColor=function(e){return this._batchTexture.getPickColor(e)};Zr.prototype.getFeature=function(e){return this._features[e]};Zr.prototype.hasProperty=function(e,t){return this._propertyTable.hasProperty(e,t)};Zr.prototype.hasPropertyBySemantic=function(e,t){return this._propertyTable.hasPropertyBySemantic(e,t)};Zr.prototype.getProperty=function(e,t){return this._propertyTable.getProperty(e,t)};Zr.prototype.getPropertyBySemantic=function(e,t){return this._propertyTable.getPropertyBySemantic(e,t)};Zr.prototype.getPropertyIds=function(e){return this._propertyTable.getPropertyIds(e)};Zr.prototype.setProperty=function(e,t,n){return this._propertyTable.setProperty(e,t,n)};Zr.prototype.isClass=function(e,t){return this._propertyTable.isClass(e,t)};Zr.prototype.isExactClass=function(e,t){return this._propertyTable.isExactClass(e,t)};Zr.prototype.getExactClassName=function(e){return this._propertyTable.getExactClassName(e)};var N4e=new G;Zr.prototype.applyStyle=function(e){if(!l(e)){this.setAllColor(Gl.DEFAULT_COLOR_VALUE),this.setAllShow(Gl.DEFAULT_SHOW_VALUE);return}for(let t=0;t<this._featuresLength;t++){let n=this.getFeature(t),i=l(e.color)?e.color.evaluateColor(n,N4e)??Gl.DEFAULT_COLOR_VALUE:Gl.DEFAULT_COLOR_VALUE,o=l(e.show)?e.show.evaluate(n)??Gl.DEFAULT_SHOW_VALUE:Gl.DEFAULT_SHOW_VALUE;this.setColor(t,i),this.setShow(t,o)}};Zr.prototype.isDestroyed=function(){return!1};Zr.prototype.destroy=function(e){this._batchTexture=this._batchTexture&&this._batchTexture.destroy(),ue(this)};var YF=Zr;var ZC={VERTEX:0,FRAGMENT:1,BOTH:2};ZC.includesVertexShader=function(e){return e===ZC.VERTEX||e===ZC.BOTH};ZC.includesFragmentShader=function(e){return e===ZC.FRAGMENT||e===ZC.BOTH};var pe=Object.freeze(ZC);var Iae={name:"TilesetPipelineStage"};Iae.process=function(e,t,n){if(t.hasSkipLevelOfDetail(n)){e.shaderBuilder.addDefine("POLYGON_OFFSET",void 0,pe.FRAGMENT);let r={u_polygonOffset:function(){return k.ZERO}};e.uniformMap=wt(r,e.uniformMap),e.hasSkipLevelOfDetail=!0}let i=e.renderStateOptions;i.stencilTest=Kt.setCesium3DTileBit(),i.stencilMask=Kt.CESIUM_3D_TILE_MASK};var qF=Iae;var KF=`// robust iterative solution without trig functions +// https://github.com/0xfaded/ellipse_demo/issues/1 +// https://stackoverflow.com/questions/22959698/distance-from-given-point-to-given-ellipse +// +// This version uses only a single iteration for best performance. For fog +// rendering, the difference is negligible. +vec2 nearestPointOnEllipseFast(vec2 pos, vec2 radii) { + vec2 p = abs(pos); + vec2 inverseRadii = 1.0 / radii; + vec2 evoluteScale = (radii.x * radii.x - radii.y * radii.y) * vec2(1.0, -1.0) * inverseRadii; + + // We describe the ellipse parametrically: v = radii * vec2(cos(t), sin(t)) + // but store the cos and sin of t in a vec2 for efficiency. + // Initial guess: t = cos(pi/4) + vec2 tTrigs = vec2(0.70710678118); + vec2 v = radii * tTrigs; + + // Find the evolute of the ellipse (center of curvature) at v. + vec2 evolute = evoluteScale * tTrigs * tTrigs * tTrigs; + // Find the (approximate) intersection of p - evolute with the ellipsoid. + vec2 q = normalize(p - evolute) * length(v - evolute); + // Update the estimate of t. + tTrigs = (q + evolute) * inverseRadii; + tTrigs = normalize(clamp(tTrigs, 0.0, 1.0)); + v = radii * tTrigs; + + return v * sign(pos); +} + +vec3 computeEllipsoidPositionWC(vec3 positionMC) { + // Get the world-space position and project onto a meridian plane of + // the ellipsoid + vec3 positionWC = (czm_model * vec4(positionMC, 1.0)).xyz; + + vec2 positionEllipse = vec2(length(positionWC.xy), positionWC.z); + vec2 nearestPoint = nearestPointOnEllipseFast(positionEllipse, czm_ellipsoidRadii.xz); + + // Reconstruct a 3D point in world space + return vec3(nearestPoint.x * normalize(positionWC.xy), nearestPoint.y); +} + +void applyFog(inout vec4 color, vec4 groundAtmosphereColor, vec3 lightDirection, float distanceToCamera) { + + vec3 fogColor = groundAtmosphereColor.rgb; + + // If there is dynamic lighting, apply that to the fog. + const float NONE = 0.0; + if (czm_atmosphereDynamicLighting != NONE) { + float darken = clamp(dot(normalize(czm_viewerPositionWC), lightDirection), czm_fogMinimumBrightness, 1.0); + fogColor *= darken; + } + + // Tonemap if HDR rendering is disabled + #ifndef HDR + fogColor.rgb = czm_pbrNeutralTonemapping(fogColor.rgb); + fogColor.rgb = czm_inverseGamma(fogColor.rgb); + #endif + + vec3 withFog = czm_fog(distanceToCamera, color.rgb, fogColor, czm_fogVisualDensityScalar); + color = vec4(withFog, color.a); +} + +void atmosphereStage(inout vec4 color, in ProcessedAttributes attributes) { + vec3 rayleighColor; + vec3 mieColor; + float opacity; + + vec3 positionWC; + vec3 lightDirection; + + // When the camera is in space, compute the position per-fragment for + // more accurate ground atmosphere. All other cases will use + // + // The if condition will be added in https://github.com/CesiumGS/cesium/issues/11717 + if (false) { + positionWC = computeEllipsoidPositionWC(attributes.positionMC); + lightDirection = czm_getDynamicAtmosphereLightDirection(positionWC, czm_atmosphereDynamicLighting); + + // The fog color is derived from the ground atmosphere color + czm_computeGroundAtmosphereScattering( + positionWC, + lightDirection, + rayleighColor, + mieColor, + opacity + ); + } else { + positionWC = attributes.positionWC; + lightDirection = czm_getDynamicAtmosphereLightDirection(positionWC, czm_atmosphereDynamicLighting); + rayleighColor = v_atmosphereRayleighColor; + mieColor = v_atmosphereMieColor; + opacity = v_atmosphereOpacity; + } + + //color correct rayleigh and mie colors + const bool ignoreBlackPixels = true; + rayleighColor = czm_applyHSBShift(rayleighColor, czm_atmosphereHsbShift, ignoreBlackPixels); + mieColor = czm_applyHSBShift(mieColor, czm_atmosphereHsbShift, ignoreBlackPixels); + + vec4 groundAtmosphereColor = czm_computeAtmosphereColor(positionWC, lightDirection, rayleighColor, mieColor, opacity); + + if (u_isInFog) { + float distanceToCamera = length(attributes.positionEC); + applyFog(color, groundAtmosphereColor, lightDirection, distanceToCamera); + } else { + // Ground atmosphere + } +} +`;var XF=`void atmosphereStage(ProcessedAttributes attributes) { + vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(v_positionWC, czm_atmosphereDynamicLighting); + + czm_computeGroundAtmosphereScattering( + // This assumes the geometry stage came before this. + v_positionWC, + lightDirection, + v_atmosphereRayleighColor, + v_atmosphereMieColor, + v_atmosphereOpacity + ); +} +`;var xae={name:"AtmospherePipelineStage"};xae.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine("HAS_ATMOSPHERE",void 0,pe.BOTH),i.addDefine("COMPUTE_POSITION_WC_ATMOSPHERE",void 0,pe.BOTH),i.addVarying("vec3","v_atmosphereRayleighColor"),i.addVarying("vec3","v_atmosphereMieColor"),i.addVarying("float","v_atmosphereOpacity"),i.addVertexLines([XF]),i.addFragmentLines([KF]),i.addUniform("bool","u_isInFog",pe.FRAGMENT),e.uniformMap.u_isInFog=function(){let o=d.distance(n.camera.positionWC,t.boundingSphere.center);return D.fog(o,n.fog.density)>D.EPSILON3}};var JF=xae;var ZF=`#ifdef DIFFUSE_IBL +vec3 sampleDiffuseEnvironment(vec3 cubeDir) +{ + #ifdef CUSTOM_SPHERICAL_HARMONICS + return czm_sphericalHarmonics(cubeDir, model_sphericalHarmonicCoefficients); + #else + return czm_sphericalHarmonics(cubeDir, czm_sphericalHarmonicCoefficients); + #endif +} +#endif + +#ifdef SPECULAR_IBL +vec3 sampleSpecularEnvironment(vec3 cubeDir, float roughness) +{ + #ifdef CUSTOM_SPECULAR_IBL + float lod = roughness * model_specularEnvironmentMapsMaximumLOD; + return czm_textureCube(model_specularEnvironmentMaps, cubeDir, lod).rgb; + #else + float lod = roughness * czm_specularEnvironmentMapsMaximumLOD; + return czm_textureCube(czm_specularEnvironmentMaps, cubeDir, lod).rgb; + #endif +} +vec3 computeSpecularIBL(vec3 cubeDir, float NdotV, vec3 f0, float roughness) +{ + // see https://bruop.github.io/ibl/ at Single Scattering Results + // Roughness dependent fresnel, from Fdez-Aguera + vec3 f90 = max(vec3(1.0 - roughness), f0); + vec3 F = fresnelSchlick2(f0, f90, NdotV); + + vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, roughness)).rg; + vec3 specularSample = sampleSpecularEnvironment(cubeDir, roughness); + + return specularSample * (F * brdfLut.x + brdfLut.y); +} +#endif + +#if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL) +/** + * Compute the light contributions from environment maps and spherical harmonic coefficients. + * See Fdez-Aguera, https://www.jcgt.org/published/0008/01/03/paper.pdf, for explanation + * of the single- and multi-scattering terms. + * + * @param {vec3} viewDirectionEC Unit vector pointing from the fragment to the eye position. + * @param {vec3} normalEC The surface normal in eye coordinates. + * @param {czm_modelMaterial} The material properties. + * @return {vec3} The computed HDR color. + */ +vec3 textureIBL(vec3 viewDirectionEC, vec3 normalEC, czm_modelMaterial material) { + vec3 f0 = material.specular; + float roughness = material.roughness; + float specularWeight = 1.0; + #ifdef USE_SPECULAR + specularWeight = material.specularWeight; + #endif + float NdotV = clamp(dot(normalEC, viewDirectionEC), 0.0, 1.0); + + // see https://bruop.github.io/ibl/ at Single Scattering Results + // Roughness dependent fresnel, from Fdez-Aguera + vec3 f90 = max(vec3(1.0 - roughness), f0); + vec3 singleScatterFresnel = fresnelSchlick2(f0, f90, NdotV); + + vec2 brdfLut = texture(czm_brdfLut, vec2(NdotV, roughness)).rg; + vec3 FssEss = specularWeight * (singleScatterFresnel * brdfLut.x + brdfLut.y); + + #ifdef DIFFUSE_IBL + vec3 normalMC = normalize(model_iblReferenceFrameMatrix * normalEC); + vec3 irradiance = sampleDiffuseEnvironment(normalMC); + + vec3 averageFresnel = f0 + (1.0 - f0) / 21.0; + float Ems = specularWeight * (1.0 - brdfLut.x - brdfLut.y); + vec3 FmsEms = FssEss * averageFresnel * Ems / (1.0 - averageFresnel * Ems); + vec3 dielectricScattering = (1.0 - FssEss - FmsEms) * material.diffuse; + vec3 diffuseContribution = irradiance * (FmsEms + dielectricScattering) * model_iblFactor.x; + #else + vec3 diffuseContribution = vec3(0.0); + #endif + + #ifdef USE_ANISOTROPY + // Bend normal to account for anisotropic distortion of specular reflection + vec3 anisotropyDirection = material.anisotropicB; + vec3 anisotropicTangent = cross(anisotropyDirection, viewDirectionEC); + vec3 anisotropicNormal = cross(anisotropicTangent, anisotropyDirection); + float bendFactor = 1.0 - material.anisotropyStrength * (1.0 - roughness); + float bendFactorPow4 = bendFactor * bendFactor * bendFactor * bendFactor; + vec3 bentNormal = normalize(mix(anisotropicNormal, normalEC, bendFactorPow4)); + vec3 reflectEC = reflect(-viewDirectionEC, bentNormal); + #else + vec3 reflectEC = reflect(-viewDirectionEC, normalEC); + #endif + + #ifdef SPECULAR_IBL + vec3 reflectMC = normalize(model_iblReferenceFrameMatrix * reflectEC); + vec3 radiance = sampleSpecularEnvironment(reflectMC, roughness); + vec3 specularContribution = radiance * FssEss * model_iblFactor.y; + #else + vec3 specularContribution = vec3(0.0); + #endif + + return diffuseContribution + specularContribution; +} +#endif +`;var bae={name:"ImageBasedLightingPipelineStage"},L4e=new k;bae.process=function(e,t,n){let i=t.imageBasedLighting,o=t.environmentMapManager,r=e.shaderBuilder,s;l(i.specularEnvironmentMaps)||(s=o.radianceCubeMap);let a=i.sphericalHarmonicCoefficients??o.sphericalHarmonicCoefficients;r.addDefine("USE_IBL_LIGHTING",void 0,pe.FRAGMENT),r.addUniform("vec2","model_iblFactor",pe.FRAGMENT),hm.isSupported(n.context)&&((i.useSphericalHarmonics||i.useSpecularEnvironmentMaps||i.enabled)&&r.addUniform("mat3","model_iblReferenceFrameMatrix",pe.FRAGMENT),l(s)&&r.addDefine("COMPUTE_POSITION_WC_ATMOSPHERE",void 0,pe.BOTH),l(a)&&l(a[0])?(r.addDefine("DIFFUSE_IBL",void 0,pe.FRAGMENT),r.addDefine("CUSTOM_SPHERICAL_HARMONICS",void 0,pe.FRAGMENT),r.addUniform("vec3","model_sphericalHarmonicCoefficients[9]",pe.FRAGMENT)):i.useDefaultSphericalHarmonics&&r.addDefine("DIFFUSE_IBL",void 0,pe.FRAGMENT),l(i.specularEnvironmentCubeMap)&&i.specularEnvironmentCubeMap.ready||l(s)?(r.addDefine("SPECULAR_IBL",void 0,pe.FRAGMENT),r.addDefine("CUSTOM_SPECULAR_IBL",void 0,pe.FRAGMENT),r.addUniform("samplerCube","model_specularEnvironmentMaps",pe.FRAGMENT),r.addUniform("float","model_specularEnvironmentMapsMaximumLOD",pe.FRAGMENT)):t.useDefaultSpecularMaps&&r.addDefine("SPECULAR_IBL",void 0,pe.FRAGMENT)),r.addFragmentLines(ZF);let c={model_iblFactor:function(){return k.multiplyByScalar(i.imageBasedLightingFactor,o?.intensity||1,L4e)},model_iblReferenceFrameMatrix:function(){return t._iblReferenceFrameMatrix},model_sphericalHarmonicCoefficients:function(){return a},model_specularEnvironmentMaps:function(){return i.specularEnvironmentCubeMap.texture},model_specularEnvironmentMapsMaximumLOD:function(){return i.specularEnvironmentCubeMap.maximumMipmapLevel}};l(s)&&(c.model_specularEnvironmentMaps=function(){return s},c.model_specularEnvironmentMapsMaximumLOD=function(){return o.maximumMipmapLevel}),e.uniformMap=wt(c,e.uniformMap)};var $F=bae;var O4e=D.EPSILON16;function WW(e){e=e??V.EMPTY_OBJECT;let t=e.stage,n=e.runtimeArticulation;this._stage=t,this._runtimeArticulation=n,this._name=t.name,this._type=t.type,this._minimumValue=t.minimumValue,this._maximumValue=t.maximumValue,this._currentValue=t.initialValue}Object.defineProperties(WW.prototype,{stage:{get:function(){return this._stage}},runtimeArticulation:{get:function(){return this._runtimeArticulation}},name:{get:function(){return this._name}},type:{get:function(){return this._type}},minimumValue:{get:function(){return this._minimumValue}},maximumValue:{get:function(){return this._maximumValue}},currentValue:{get:function(){return this._currentValue},set:function(e){e=D.clamp(e,this.minimumValue,this.maximumValue),D.equalsEpsilon(this._currentValue,e,O4e)||(this._currentValue=e,this.runtimeArticulation._dirty=!0)}}});var F4e=new d,HW=new J;WW.prototype.applyStageToMatrix=function(e){let t=this.type,n=this.currentValue,i=F4e,o;switch(t){case cl.XROTATE:o=J.fromRotationX(D.toRadians(n),HW),e=R.multiplyByMatrix3(e,o,e);break;case cl.YROTATE:o=J.fromRotationY(D.toRadians(n),HW),e=R.multiplyByMatrix3(e,o,e);break;case cl.ZROTATE:o=J.fromRotationZ(D.toRadians(n),HW),e=R.multiplyByMatrix3(e,o,e);break;case cl.XTRANSLATE:i.x=n,i.y=0,i.z=0,e=R.multiplyByTranslation(e,i,e);break;case cl.YTRANSLATE:i.x=0,i.y=n,i.z=0,e=R.multiplyByTranslation(e,i,e);break;case cl.ZTRANSLATE:i.x=0,i.y=0,i.z=n,e=R.multiplyByTranslation(e,i,e);break;case cl.XSCALE:i.x=n,i.y=1,i.z=1,e=R.multiplyByScale(e,i,e);break;case cl.YSCALE:i.x=1,i.y=n,i.z=1,e=R.multiplyByScale(e,i,e);break;case cl.ZSCALE:i.x=1,i.y=1,i.z=n,e=R.multiplyByScale(e,i,e);break;case cl.UNIFORMSCALE:e=R.multiplyByUniformScale(e,n,e);break;default:break}return e};var e2=WW;function t2(e){e=e??V.EMPTY_OBJECT;let t=e.articulation,n=e.sceneGraph;this._articulation=t,this._sceneGraph=n,this._name=t.name,this._runtimeStages=[],this._runtimeStagesByName={},this._runtimeNodes=[],this._dirty=!0,Q4e(this)}Object.defineProperties(t2.prototype,{articulation:{get:function(){return this._articulation}},sceneGraph:{get:function(){return this._sceneGraph}},name:{get:function(){return this._name}},runtimeStages:{get:function(){return this._runtimeStages}},runtimeNodes:{get:function(){return this._runtimeNodes}}});function Q4e(e){let n=e.articulation.stages,i=n.length,o=e._runtimeStages,r=e._runtimeStagesByName;for(let s=0;s<i;s++){let a=n[s],c=new e2({stage:a,runtimeArticulation:e});o.push(c);let u=a.name;r[u]=c}}t2.prototype.setArticulationStage=function(e,t){let n=this._runtimeStagesByName[e];l(n)&&(n.currentValue=t)};var k4e=new R,U4e=new R;t2.prototype.apply=function(){if(!this._dirty)return;this._dirty=!1;let e=R.clone(R.IDENTITY,k4e),t,n=this._runtimeStages,i=n.length;for(t=0;t<i;t++)e=n[t].applyStageToMatrix(e);let o=this._runtimeNodes,r=o.length;for(t=0;t<r;t++){let s=o[t],a=R.multiplyTransformation(s.originalTransform,e,U4e);s.transform=a}};var n2=t2;var i2=`void modelColorStage(inout czm_modelMaterial material) +{ + material.diffuse = mix(material.diffuse, model_color.rgb, model_colorBlend); + float highlight = ceil(model_colorBlend); + material.diffuse *= mix(model_color.rgb, vec3(1.0), highlight); + material.alpha *= model_color.a; +} +`;var Tx={name:"ModelColorPipelineStage",COLOR_UNIFORM_NAME:"model_color",COLOR_BLEND_UNIFORM_NAME:"model_colorBlend"};Tx.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine("HAS_MODEL_COLOR",void 0,pe.FRAGMENT),i.addFragmentLines(i2);let o={},r=t.color;r.alpha===0&&!t.hasSilhouette(n)&&(e.renderStateOptions.colorMask={red:!1,green:!1,blue:!1,alpha:!1}),r.alpha<1&&(e.alphaOptions.pass=Be.TRANSLUCENT),i.addUniform("vec4",Tx.COLOR_UNIFORM_NAME,pe.FRAGMENT),o[Tx.COLOR_UNIFORM_NAME]=function(){return t.color},i.addUniform("float",Tx.COLOR_BLEND_UNIFORM_NAME,pe.FRAGMENT),o[Tx.COLOR_BLEND_UNIFORM_NAME]=function(){return al.getColorBlend(t.colorBlendMode,t.colorBlendAmount)},e.uniformMap=wt(o,e.uniformMap)};var $C=Tx;var o2=`#ifdef USE_CLIPPING_PLANES_FLOAT_TEXTURE +vec4 getClippingPlane( + highp sampler2D packedClippingPlanes, + int clippingPlaneNumber, + mat4 transform +) { + int pixY = clippingPlaneNumber / CLIPPING_PLANES_TEXTURE_WIDTH; + int pixX = clippingPlaneNumber - (pixY * CLIPPING_PLANES_TEXTURE_WIDTH); + float pixelWidth = 1.0 / float(CLIPPING_PLANES_TEXTURE_WIDTH); + float pixelHeight = 1.0 / float(CLIPPING_PLANES_TEXTURE_HEIGHT); + float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel + float v = (float(pixY) + 0.5) * pixelHeight; + vec4 plane = texture(packedClippingPlanes, vec2(u, v)); + return czm_transformPlane(plane, transform); +} +#else +// Handle uint8 clipping texture instead +vec4 getClippingPlane( + highp sampler2D packedClippingPlanes, + int clippingPlaneNumber, + mat4 transform +) { + int clippingPlaneStartIndex = clippingPlaneNumber * 2; // clipping planes are two pixels each + int pixY = clippingPlaneStartIndex / CLIPPING_PLANES_TEXTURE_WIDTH; + int pixX = clippingPlaneStartIndex - (pixY * CLIPPING_PLANES_TEXTURE_WIDTH); + float pixelWidth = 1.0 / float(CLIPPING_PLANES_TEXTURE_WIDTH); + float pixelHeight = 1.0 / float(CLIPPING_PLANES_TEXTURE_HEIGHT); + float u = (float(pixX) + 0.5) * pixelWidth; // sample from center of pixel + float v = (float(pixY) + 0.5) * pixelHeight; + vec4 oct32 = texture(packedClippingPlanes, vec2(u, v)) * 255.0; + vec2 oct = vec2(oct32.x * 256.0 + oct32.y, oct32.z * 256.0 + oct32.w); + vec4 plane; + plane.xyz = czm_octDecode(oct, 65535.0); + plane.w = czm_unpackFloat(texture(packedClippingPlanes, vec2(u + pixelWidth, v))); + return czm_transformPlane(plane, transform); +} +#endif + +float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) { + vec4 position = czm_windowToEyeCoordinates(fragCoord); + vec3 clipNormal = vec3(0.0); + vec3 clipPosition = vec3(0.0); + float pixelWidth = czm_metersPerPixel(position); + + #ifdef UNION_CLIPPING_REGIONS + float clipAmount; // For union planes, we want to get the min distance. So we set the initial value to the first plane distance in the loop below. + #else + float clipAmount = 0.0; + bool clipped = true; + #endif + + for (int i = 0; i < CLIPPING_PLANES_LENGTH; ++i) { + vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix); + clipNormal = clippingPlane.xyz; + clipPosition = -clippingPlane.w * clipNormal; + float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth; + + #ifdef UNION_CLIPPING_REGIONS + clipAmount = czm_branchFreeTernary(i == 0, amount, min(amount, clipAmount)); + if (amount <= 0.0) { + discard; + } + #else + clipAmount = max(amount, clipAmount); + clipped = clipped && (amount <= 0.0); + #endif + } + + #ifndef UNION_CLIPPING_REGIONS + if (clipped) { + discard; + } + #endif + + return clipAmount; +} + +void modelClippingPlanesStage(inout vec4 color) +{ + float clipDistance = clip(gl_FragCoord, model_clippingPlanes, model_clippingPlanesMatrix); + vec4 clippingPlanesEdgeColor = vec4(1.0); + clippingPlanesEdgeColor.rgb = model_clippingPlanesEdgeStyle.rgb; + float clippingPlanesEdgeWidth = model_clippingPlanesEdgeStyle.a; + + if (clipDistance > 0.0 && clipDistance < clippingPlanesEdgeWidth) { + color = clippingPlanesEdgeColor; + } +} +`;var Tae={name:"ModelClippingPlanesPipelineStage"},G4e=new k;Tae.process=function(e,t,n){let i=t.clippingPlanes,o=n.context,r=e.shaderBuilder;r.addDefine("HAS_CLIPPING_PLANES",void 0,pe.FRAGMENT),r.addDefine("CLIPPING_PLANES_LENGTH",i.length,pe.FRAGMENT),i.unionClippingRegions&&r.addDefine("UNION_CLIPPING_REGIONS",void 0,pe.FRAGMENT),Vs.useFloatTexture(o)&&r.addDefine("USE_CLIPPING_PLANES_FLOAT_TEXTURE",void 0,pe.FRAGMENT);let s=Vs.getTextureResolution(i,o,G4e);r.addDefine("CLIPPING_PLANES_TEXTURE_WIDTH",s.x,pe.FRAGMENT),r.addDefine("CLIPPING_PLANES_TEXTURE_HEIGHT",s.y,pe.FRAGMENT),r.addUniform("sampler2D","model_clippingPlanes",pe.FRAGMENT),r.addUniform("vec4","model_clippingPlanesEdgeStyle",pe.FRAGMENT),r.addUniform("mat4","model_clippingPlanesMatrix",pe.FRAGMENT),r.addFragmentLines(o2);let a={model_clippingPlanes:function(){return i.texture},model_clippingPlanesEdgeStyle:function(){let c=G.clone(i.edgeColor);return c.alpha=i.edgeWidth,c},model_clippingPlanesMatrix:function(){return t._clippingPlanesMatrix}};e.uniformMap=wt(a,e.uniformMap)};var r2=Tae;var s2=`void modelClippingPolygonsStage(ProcessedAttributes attributes) +{ + vec2 sphericalLatLong = czm_approximateSphericalCoordinates(v_positionWC); + sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi); + + vec2 minDistance = vec2(czm_infinity); + v_regionIndex = -1; + v_clippingPosition = vec2(czm_infinity); + + for (int regionIndex = 0; regionIndex < CLIPPING_POLYGON_REGIONS_LENGTH; regionIndex++) { + vec4 extents = czm_unpackClippingExtents(model_clippingExtents, regionIndex); + vec2 rectUv = (sphericalLatLong.yx - extents.yx) * extents.wz; + + vec2 clamped = clamp(rectUv, vec2(0.0), vec2(1.0)); + vec2 distance = abs(rectUv - clamped) * extents.wz; + + if (minDistance.x > distance.x || minDistance.y > distance.y) { + minDistance = distance; + v_clippingPosition = rectUv; + } + + float threshold = 0.01; + if (rectUv.x > threshold && rectUv.y > threshold && rectUv.x < 1.0 - threshold && rectUv.y < 1.0 - threshold) { + v_regionIndex = regionIndex; + } + } +} +`;var a2=`void modelClippingPolygonsStage() +{ + vec2 clippingPosition = v_clippingPosition; + int regionIndex = v_regionIndex; + czm_clipPolygons(model_clippingDistance, CLIPPING_POLYGON_REGIONS_LENGTH, clippingPosition, regionIndex); +} +`;var Sae={name:"ModelClippingPolygonsPipelineStage"};Sae.process=function(e,t,n){let i=t.clippingPolygons,o=e.shaderBuilder;o.addDefine("ENABLE_CLIPPING_POLYGONS",void 0,pe.BOTH),i.inverse&&o.addDefine("CLIPPING_INVERSE",void 0,pe.FRAGMENT),o.addDefine("CLIPPING_POLYGON_REGIONS_LENGTH",i.extentsCount,pe.BOTH),o.addUniform("sampler2D","model_clippingDistance",pe.FRAGMENT),o.addUniform("sampler2D","model_clippingExtents",pe.VERTEX),o.addVarying("vec2","v_clippingPosition"),o.addVarying("int","v_regionIndex","flat"),o.addVertexLines(s2),o.addFragmentLines(a2);let r={model_clippingDistance:function(){return i.clippingTexture},model_clippingExtents:function(){return i.extentsTexture}};e.uniformMap=wt(r,e.uniformMap)};var c2=Sae;function wae(e,t){this._model=e,this._runtimeNode=t}Object.defineProperties(wae.prototype,{name:{get:function(){return this._runtimeNode._name}},id:{get:function(){return this._runtimeNode._id}},show:{get:function(){return this._runtimeNode.show},set:function(e){this._runtimeNode.show=e}},matrix:{get:function(){return this._runtimeNode.transform},set:function(e){l(e)?(this._runtimeNode.transform=e,this._runtimeNode.userAnimated=!0,this._model._userAnimationDirty=!0):(this._runtimeNode.transform=this.originalMatrix,this._runtimeNode.userAnimated=!1)}},originalMatrix:{get:function(){return this._runtimeNode.originalTransform}}});var l2=wae;var u2=`mat4 getInstancingTransform() +{ + mat4 instancingTransform; + + #ifdef HAS_INSTANCE_MATRICES + instancingTransform = mat4( + a_instancingTransformRow0.x, a_instancingTransformRow1.x, a_instancingTransformRow2.x, 0.0, // Column 1 + a_instancingTransformRow0.y, a_instancingTransformRow1.y, a_instancingTransformRow2.y, 0.0, // Column 2 + a_instancingTransformRow0.z, a_instancingTransformRow1.z, a_instancingTransformRow2.z, 0.0, // Column 3 + a_instancingTransformRow0.w, a_instancingTransformRow1.w, a_instancingTransformRow2.w, 1.0 // Column 4 + ); + #else + vec3 translation = vec3(0.0, 0.0, 0.0); + vec3 scale = vec3(1.0, 1.0, 1.0); + + #ifdef HAS_INSTANCE_TRANSLATION + translation = a_instanceTranslation; + #endif + #ifdef HAS_INSTANCE_SCALE + scale = a_instanceScale; + #endif + + instancingTransform = mat4( + scale.x, 0.0, 0.0, 0.0, + 0.0, scale.y, 0.0, 0.0, + 0.0, 0.0, scale.z, 0.0, + translation.x, translation.y, translation.z, 1.0 + ); + #endif + + return instancingTransform; +} + +#ifdef USE_2D_INSTANCING +mat4 getInstancingTransform2D() +{ + mat4 instancingTransform2D; + + #ifdef HAS_INSTANCE_MATRICES + instancingTransform2D = mat4( + a_instancingTransform2DRow0.x, a_instancingTransform2DRow1.x, a_instancingTransform2DRow2.x, 0.0, // Column 1 + a_instancingTransform2DRow0.y, a_instancingTransform2DRow1.y, a_instancingTransform2DRow2.y, 0.0, // Column 2 + a_instancingTransform2DRow0.z, a_instancingTransform2DRow1.z, a_instancingTransform2DRow2.z, 0.0, // Column 3 + a_instancingTransform2DRow0.w, a_instancingTransform2DRow1.w, a_instancingTransform2DRow2.w, 1.0 // Column 4 + ); + #else + vec3 translation2D = vec3(0.0, 0.0, 0.0); + vec3 scale = vec3(1.0, 1.0, 1.0); + + #ifdef HAS_INSTANCE_TRANSLATION + translation2D = a_instanceTranslation2D; + #endif + #ifdef HAS_INSTANCE_SCALE + scale = a_instanceScale; + #endif + + instancingTransform2D = mat4( + scale.x, 0.0, 0.0, 0.0, + 0.0, scale.y, 0.0, 0.0, + 0.0, 0.0, scale.z, 0.0, + translation2D.x, translation2D.y, translation2D.z, 1.0 + ); + #endif + + return instancingTransform2D; +} +#endif +`;var f2=`void instancingStage(inout ProcessedAttributes attributes) +{ + vec3 positionMC = attributes.positionMC; + + mat4 instancingTransform = getInstancingTransform(); + + attributes.positionMC = (instancingTransform * vec4(positionMC, 1.0)).xyz; + + #ifdef HAS_NORMALS + vec3 normalMC = attributes.normalMC; + attributes.normalMC = (instancingTransform * vec4(normalMC, 0.0)).xyz; + #endif + + #ifdef USE_2D_INSTANCING + mat4 instancingTransform2D = getInstancingTransform2D(); + attributes.position2D = (instancingTransform2D * vec4(positionMC, 1.0)).xyz; + #endif +} +`;var d2=`void legacyInstancingStage( + inout ProcessedAttributes attributes, + out mat4 instanceModelView, + out mat3 instanceModelViewInverseTranspose) +{ + vec3 positionMC = attributes.positionMC; + + mat4 instancingTransform = getInstancingTransform(); + + mat4 instanceModel = instancingTransform * u_instance_nodeTransform; + instanceModelView = u_instance_modifiedModelView; + instanceModelViewInverseTranspose = mat3(u_instance_modifiedModelView * instanceModel); + + attributes.positionMC = (instanceModel * vec4(positionMC, 1.0)).xyz; + + #ifdef USE_2D_INSTANCING + mat4 instancingTransform2D = getInstancingTransform2D(); + attributes.position2D = (instancingTransform2D * vec4(positionMC, 1.0)).xyz; + #endif +} +`;var h2=new R,z4e=new R,V4e=new R,Dae={name:"InstancingPipelineStage",_getInstanceTransformsAsMatrices:Nae,_transformsToTypedArray:YW};Dae.process=function(e,t,n){let i=t.instances,o=i.attributes[0].count,r=e.shaderBuilder;r.addDefine("HAS_INSTANCING"),r.addVertexLines(u2);let s=e.model,a=s.sceneGraph,c=e.runtimeNode,u=n.mode!==ie.SCENE3D&&!n.scene3DOnly&&s._projectTo2D,f=s._enablePick&&!n.context.webgl2,h=[];oHe(e,n,i,h,u,f),aHe(e,n,i,h);let A={};if(i.transformInWorldSpace?(r.addDefine("USE_LEGACY_INSTANCING",void 0,pe.VERTEX),r.addUniform("mat4","u_instance_modifiedModelView",pe.VERTEX),r.addUniform("mat4","u_instance_nodeTransform",pe.VERTEX),A.u_instance_modifiedModelView=function(){let g=R.multiplyTransformation(s.modelMatrix,a.components.transform,h2);return u?R.multiplyTransformation(n.context.uniformState.view3D,g,h2):(n.mode!==ie.SCENE3D&&(g=kt.basisTo2D(n.mapProjection,g,h2)),R.multiplyTransformation(n.context.uniformState.view,g,h2))},A.u_instance_nodeTransform=function(){return R.multiplyTransformation(a.axisCorrectionMatrix,c.computedTransform,z4e)},r.addVertexLines(d2)):r.addVertexLines(f2),u){r.addDefine("USE_2D_INSTANCING",void 0,pe.VERTEX),r.addUniform("mat4","u_modelView2D",pe.VERTEX);let g=n.context,m=R.fromTranslation(c.instancingReferencePoint2D,new R);A.u_modelView2D=function(){return R.multiplyTransformation(g.uniformState.view,m,V4e)}}e.uniformMap=wt(A,e.uniformMap),e.instanceCount=o,si(e.attributes,h)};var BB=new R,H4e=new d;function W4e(e,t,n,i,o){let r=R.multiplyTransformation(t,e,BB);return r=R.multiplyTransformation(r,n,BB),o=kt.basisTo2D(i.mapProjection,r,o),o}function j4e(e,t,n,i,o){let r=R.fromTranslation(e,BB),s=R.multiplyTransformation(t,r,BB);s=R.multiplyTransformation(s,n,BB);let a=R.getTranslation(s,H4e);return o=to.computeActualEllipsoidPosition(i,a,o),o}function vae(e,t,n){let i=e.model,o=i.sceneGraph;e.runtimeNode.node.instances.transformInWorldSpace?(t=R.multiplyTransformation(i.modelMatrix,o.components.transform,t),n=R.multiplyTransformation(o.axisCorrectionMatrix,e.runtimeNode.computedTransform,n)):(t=R.clone(o.computedModelMatrix,t),t=R.multiplyTransformation(t,e.runtimeNode.computedTransform,t),n=R.clone(R.IDENTITY,n))}var Pae=new R,Rae=new R,Y4e=new R,q4e=new d;function K4e(e,t,n,i){let o=Pae,r=Rae;vae(t,o,r);let a=t.runtimeNode.instancingReferencePoint2D,c=e.length;for(let u=0;u<c;u++){let f=e[u],h=W4e(f,o,r,n,Y4e),A=R.getTranslation(h,q4e),g=d.subtract(A,a,A);i[u]=R.setTranslation(h,g,i[u])}return i}function X4e(e,t,n,i){let o=Pae,r=Rae;vae(t,o,r);let a=t.runtimeNode.instancingReferencePoint2D,c=e.length;for(let u=0;u<c;u++){let f=e[u],h=j4e(f,o,r,n,f);i[u]=d.subtract(h,a,i[u])}return i}var J4e=new d,Z4e=new d;function Mae(e,t){let n=e.runtimeNode,i=e.model.sceneGraph.computedModelMatrix,o=R.multiplyByPoint(i,n.instancingTranslationMin,J4e),r=to.computeActualEllipsoidPosition(t,o,o),s=R.multiplyByPoint(i,n.instancingTranslationMax,Z4e),a=to.computeActualEllipsoidPosition(t,s,s);n.instancingReferencePoint2D=d.lerp(r,a,.5,new d)}function YW(e){let n=e.length,i=new Float32Array(n*12);for(let o=0;o<n;o++){let r=e[o],s=12*o;i[s+0]=r[0],i[s+1]=r[4],i[s+2]=r[8],i[s+3]=r[12],i[s+4]=r[1],i[s+5]=r[5],i[s+6]=r[9],i[s+7]=r[13],i[s+8]=r[2],i[s+9]=r[6],i[s+10]=r[10],i[s+11]=r[14]}return i}function $4e(e){let n=e.length,i=new Float32Array(n*3);for(let o=0;o<n;o++){let r=e[o],s=3*o;i[s+0]=r[0],i[s+1]=r[4],i[s+2]=r[8]}return i}var eHe=new d,tHe=new Le,nHe=new d;function Nae(e,t,n){let i=new Array(t),o=Qt.getAttributeBySemantic(e,Ss.TRANSLATION),r=Qt.getAttributeBySemantic(e,Ss.ROTATION),s=Qt.getAttributeBySemantic(e,Ss.SCALE),a=new d(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE),c=new d(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),u=l(o),f=l(r),h=l(s),A=u?o.typedArray:new Float32Array(t*3),g=f?r.typedArray:new Float32Array(t*4);f&&r.normalized&&(g=Fn.dequantize(g,r.componentDatatype,r.type,t));let m;h?m=s.typedArray:(m=new Float32Array(t*3),m.fill(1));for(let y=0;y<t;y++){let C=new d(A[y*3],A[y*3+1],A[y*3+2],eHe);d.maximumByComponent(a,C,a),d.minimumByComponent(c,C,c);let E=new Le(g[y*4],g[y*4+1],g[y*4+2],f?g[y*4+3]:1,tHe),I=new d(m[y*3],m[y*3+1],m[y*3+2],nHe),b=R.fromTranslationQuaternionRotationScale(C,E,I,new R);i[y]=b}let _=n.runtimeNode;return _.instancingTranslationMin=c,_.instancingTranslationMax=a,u&&(o.typedArray=void 0),f&&(r.typedArray=void 0),h&&(s.typedArray=void 0),i}function iHe(e,t,n){let i=new Array(t),o=e.typedArray,r=new d(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE),s=new d(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE);for(let c=0;c<t;c++){let u=new d(o[c*3],o[c*3+1],o[c*3+2]);i[c]=u,d.minimumByComponent(r,u,r),d.maximumByComponent(s,u,s)}let a=n.runtimeNode;return a.instancingTranslationMin=r,a.instancingTranslationMax=s,e.typedArray=void 0,i}function qW(e,t){let n=Et.createVertexBuffer({context:t.context,typedArray:e,usage:Qe.STATIC_DRAW});return n.vertexArrayDestroyable=!1,n}function oHe(e,t,n,i,o,r){let s=Qt.getAttributeBySemantic(n,Ss.ROTATION);l(s)?rHe(e,n,i,t,o,r):sHe(e,n,i,t,o)}function rHe(e,t,n,i,o,r){let s=e.shaderBuilder,a=t.attributes[0].count,c=e.model,u=e.runtimeNode;s.addDefine("HAS_INSTANCE_MATRICES");let f="Transform",h,A=u.instancingTransformsBuffer;if(!l(A)){h=Nae(t,a,e);let y=YW(h);A=qW(y,i),c._modelResources.push(A),r&&(u.transformsTypedArray=y),u.instancingTransformsBuffer=A}if(Bae(e,A,n,f),!o)return;let g=ze(i);g.mode=ie.COLUMBUS_VIEW,Mae(e,g);let m=u.instancingTransformsBuffer2D;if(!l(m)){let y=K4e(h,e,g,h),C=YW(y);m=qW(C,i),c._modelResources.push(m),u.instancingTransformsBuffer2D=m}Bae(e,m,n,"Transform2D")}function sHe(e,t,n,i,o,r){let s=e.shaderBuilder,a=e.runtimeNode,c=Qt.getAttributeBySemantic(t,Ss.TRANSLATION),u=Qt.getAttributeBySemantic(t,Ss.SCALE);if(l(u)&&(s.addDefine("HAS_INSTANCE_SCALE"),jW(e,u.buffer,u.byteOffset,u.byteStride,n,"Scale")),!l(c))return;let f,h=c.typedArray;if(l(h)?f=iHe(c,c.count,e):l(a.instancingTranslationMin)||(a.instancingTranslationMin=c.min,a.instancingTranslationMax=c.max),s.addDefine("HAS_INSTANCE_TRANSLATION"),jW(e,c.buffer,c.byteOffset,c.byteStride,n,"Translation"),!o&&!r)return;let g=ze(i);g.mode=ie.COLUMBUS_VIEW,Mae(e,g);let m=a.instancingTranslationBuffer2D;if(!l(m)){let E=X4e(f,e,g,f),I=$4e(E);r&&(a.transformsTypedArray=I),m=qW(I,i),e.model._modelResources.push(m),a.instancingTranslationBuffer2D=m}if(!o)return;jW(e,m,0,void 0,n,"Translation2D")}function Bae(e,t,n,i){let r=q.getSizeInBytes(q.FLOAT),s=r*12,a=[{index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:4,componentDatatype:q.FLOAT,normalize:!1,offsetInBytes:0,strideInBytes:s,instanceDivisor:1},{index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:4,componentDatatype:q.FLOAT,normalize:!1,offsetInBytes:r*4,strideInBytes:s,instanceDivisor:1},{index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:4,componentDatatype:q.FLOAT,normalize:!1,offsetInBytes:r*8,strideInBytes:s,instanceDivisor:1}],c=e.shaderBuilder;c.addAttribute("vec4",`a_instancing${i}Row0`),c.addAttribute("vec4",`a_instancing${i}Row1`),c.addAttribute("vec4",`a_instancing${i}Row2`),si(n,a)}function jW(e,t,n,i,o,r){o.push({index:e.attributeIndex++,vertexBuffer:t,componentsPerAttribute:3,componentDatatype:q.FLOAT,normalize:!1,offsetInBytes:n,strideInBytes:i,instanceDivisor:1}),e.shaderBuilder.addAttribute("vec3",`a_instance${r}`)}function aHe(e,t,n,i){let o=n.attributes,r=e.shaderBuilder;for(let s=0;s<o.length;s++){let a=o[s];a.semantic===Ss.FEATURE_ID&&(a.setIndex>=e.featureIdVertexAttributeSetIndex&&(e.featureIdVertexAttributeSetIndex=a.setIndex+1),i.push({index:e.attributeIndex++,vertexBuffer:a.buffer,componentsPerAttribute:Ht.getNumberOfComponents(a.type),componentDatatype:a.componentDatatype,normalize:!1,offsetInBytes:a.byteOffset,strideInBytes:a.byteStride,instanceDivisor:1}),r.addAttribute("float",`a_instanceFeatureId_${a.setIndex}`))}}var m2=Dae;var KW={};KW.name="ModelMatrixUpdateStage";KW.update=function(e,t,n){let i=n.mode!==ie.SCENE3D;if(!(i&&t._model._projectTo2D)&&e._transformDirty){let o=i?t._computedModelMatrix2D:t._computedModelMatrix;Lae(e,t,o,e.transformToRoot),e._transformDirty=!1}};function cHe(e,t,n){e.modelMatrix=R.multiplyTransformation(t,n,e.modelMatrix),e.cullFace=Qt.getCullFace(e.modelMatrix,e.primitiveType)}function Lae(e,t,n,i){let o;i=R.multiplyTransformation(i,e.transform,new R),e.updateComputedTransform();let r=e.runtimePrimitives.length;for(o=0;o<r;o++){let a=e.runtimePrimitives[o];cHe(a.drawCommand,n,i)}let s=e.children.length;for(o=0;o<s;o++){let a=t._runtimeNodes[e.children[o]];a._transformToRoot=R.clone(i,a._transformToRoot),Lae(a,t,n,i),a._transformDirty=!1}}var A2=KW;var Oae={name:"NodeStatisticsPipelineStage",_countInstancingAttributes:Fae,_countGeneratedBuffers:Qae};Oae.process=function(e,t,n){let i=e.model.statistics,o=t.instances,r=e.runtimeNode;Fae(i,o),Qae(i,r)};function Fae(e,t){if(!l(t))return;let n=t.attributes,i=n.length;for(let o=0;o<i;o++){let r=n[o];l(r.buffer)&&e.addBuffer(r.buffer,!1)}}function Qae(e,t){l(t.instancingTransformsBuffer)&&e.addBuffer(t.instancingTransformsBuffer,!1),l(t.instancingTransformsBuffer2D)&&e.addBuffer(t.instancingTransformsBuffer2D,!1),l(t.instancingTranslationBuffer2D)&&e.addBuffer(t.instancingTranslationBuffer2D,!1)}var p2=Oae;function Sx(e){e=e??V.EMPTY_OBJECT;let t=e.node,n=e.transform,i=e.transformToRoot,o=e.sceneGraph,r=e.children;this._node=t,this._name=t.name,this._id=t.index,this._sceneGraph=o,this._children=r,this._originalTransform=R.clone(n,this._originalTransform),this._transform=R.clone(n,this._transform),this._transformToRoot=R.clone(i,this._transformToRoot),this._computedTransform=new R,this._transformDirty=!1,this._transformParameters=void 0,this._morphWeights=[],this._runtimeSkin=void 0,this._computedJointMatrices=[],this.show=!0,this.userAnimated=!1,this.pipelineStages=[],this.runtimePrimitives=[],this.updateStages=[],this.instancingTranslationMin=void 0,this.instancingTranslationMax=void 0,this.instancingTransformsBuffer=void 0,this.instancingTransformsBuffer2D=void 0,this.instancingTranslationBuffer2D=void 0,this.instancingReferencePoint2D=void 0,lHe(this)}Object.defineProperties(Sx.prototype,{node:{get:function(){return this._node}},sceneGraph:{get:function(){return this._sceneGraph}},children:{get:function(){return this._children}},transform:{get:function(){return this._transform},set:function(e){this._transformDirty=!0,this._transform=R.clone(e,this._transform)}},transformToRoot:{get:function(){return this._transformToRoot}},computedTransform:{get:function(){return this._computedTransform}},originalTransform:{get:function(){return this._originalTransform}},translation:{get:function(){return l(this._transformParameters)?this._transformParameters.translation:void 0},set:function(e){let t=this._transformParameters,n=t.translation;d.equals(n,e)||(t.translation=d.clone(e,t.translation),XW(this,t))}},rotation:{get:function(){return l(this._transformParameters)?this._transformParameters.rotation:void 0},set:function(e){let t=this._transformParameters,n=t.rotation;Le.equals(n,e)||(t.rotation=Le.clone(e,t.rotation),XW(this,t))}},scale:{get:function(){return l(this._transformParameters)?this._transformParameters.scale:void 0},set:function(e){let t=this._transformParameters,n=t.scale;d.equals(n,e)||(t.scale=d.clone(e,t.scale),XW(this,t))}},morphWeights:{get:function(){return this._morphWeights},set:function(e){let t=e.length;for(let n=0;n<t;n++)this._morphWeights[n]=e[n]}},runtimeSkin:{get:function(){return this._runtimeSkin}},computedJointMatrices:{get:function(){return this._computedJointMatrices}}});function lHe(e){let t=e.transform,n=e.transformToRoot,i=e._computedTransform;e._computedTransform=R.multiply(n,t,i);let o=e.node;l(o.matrix)||(e._transformParameters=new DC(o.translation,o.rotation,o.scale)),l(o.morphWeights)&&(e._morphWeights=o.morphWeights.slice());let r=o.articulationName;if(l(r)){let c=e.sceneGraph._runtimeArticulations[r];l(c)&&c.runtimeNodes.push(e)}}function XW(e,t){e._transformDirty=!0,e._transform=R.fromTranslationRotationScale(t,e._transform)}Sx.prototype.getChild=function(e){return this.sceneGraph._runtimeNodes[this.children[e]]};Sx.prototype.configurePipeline=function(){let e=this.node,t=this.pipelineStages;t.length=0;let n=this.updateStages;n.length=0,l(e.instances)&&t.push(m2),t.push(p2),n.push(A2)};Sx.prototype.updateComputedTransform=function(){this._computedTransform=R.multiply(this._transformToRoot,this._transform,this._computedTransform)};Sx.prototype.updateJointMatrices=function(){let e=this._runtimeSkin;if(!l(e))return;e.updateJointMatrices();let t=this._computedJointMatrices,n=e.jointMatrices,i=n.length;for(let o=0;o<i;o++){l(t[o])||(t[o]=new R);let r=R.multiplyTransformation(this.transformToRoot,this.transform,t[o]),s=R.inverseTransformation(r,t[o]);t[o]=R.multiplyTransformation(s,n[o],t[o])}};var g2=Sx;var kae={name:"AlphaPipelineStage"};kae.process=function(e,t,n){let i=e.alphaOptions,o=e.model;i.pass=i.pass??o.opaquePass;let r=e.renderStateOptions;i.pass===Be.TRANSLUCENT&&(r.cull.enabled=!1,r.depthMask=!1,r.blending=pn.ALPHA_BLEND);let s=e.shaderBuilder,a=e.uniformMap;l(i.alphaCutoff)&&(s.addDefine("ALPHA_MODE_MASK",void 0,pe.FRAGMENT),s.addUniform("float","u_alphaCutoff",pe.FRAGMENT),a.u_alphaCutoff=function(){return i.alphaCutoff})};var _2=kae;var Uae={name:"BatchTexturePipelineStage"};Uae.process=function(e,t,n){let i=e.shaderBuilder,o={},r=e.model,s=r.featureTables[r.featureTableId],a=s.featuresLength;i.addUniform("int","model_featuresLength"),o.model_featuresLength=function(){return a};let c=s.batchTexture;i.addUniform("sampler2D","model_batchTexture"),o.model_batchTexture=function(){return c.batchTexture??c.defaultTexture},i.addUniform("vec4","model_textureStep"),o.model_textureStep=function(){return c.textureStep},c.textureDimensions.y>1&&(i.addDefine("MULTILINE_BATCH_TEXTURE"),i.addUniform("vec2","model_textureDimensions"),o.model_textureDimensions=function(){return c.textureDimensions}),e.uniformMap=wt(o,e.uniformMap)};var y2=Uae;var Gae={name:"ClassificationPipelineStage"};Gae.process=function(e,t,n){e.shaderBuilder.addDefine("HAS_CLASSIFICATION",void 0,pe.BOTH);let o=e.runtimePrimitive;l(o.batchLengths)||uHe(t,o)};function uHe(e,t){let n=Qt.getAttributeBySemantic(e,ct.POSITION);if(!l(n))throw new ce("Primitives must have a position attribute to be used for classification.");let i,o=e.indices,r=l(o);r&&(i=o.typedArray,o.typedArray=void 0);let s=r?o.count:n.count,a=Qt.getAttributeBySemantic(e,ct.FEATURE_ID,0);if(!l(a)){t.batchLengths=[s],t.batchOffsets=[0];return}let c=a.typedArray;a.typedArray=void 0;let u=[],f=[0],h=r?i[0]:0,A=c[h],g=0;for(let _=1;_<s;_++){let y=r?i[_]:_,C=c[y];if(C!==A){let E=_-g,I=_;u.push(E),f.push(I),g=I,A=C}}let m=s-g;u.push(m),t.batchLengths=u,t.batchOffsets=f}var C2=Gae;var E2=`void filterByPassType(inout vec3 positionMC, vec4 featureColor) +{ + bool styleTranslucent = (featureColor.a != 1.0); + // Only render translucent features in the translucent pass (if the style or the original command has translucency). + if (czm_pass == czm_passTranslucent && !styleTranslucent && !model_commandTranslucent) + { + // If the model has a translucent silhouette, it needs to render during the silhouette color command, + // (i.e. the command where model_silhouettePass = true), even if the model isn't translucent. + #ifdef HAS_SILHOUETTE + positionMC *= float(model_silhouettePass); + #else + positionMC *= 0.0; + #endif + } + // If the current pass is not the translucent pass and the style is not translucent, don't render the feature. + else if (czm_pass != czm_passTranslucent && styleTranslucent) + { + positionMC *= 0.0; + } +} + +void cpuStylingStage(inout vec3 positionMC, inout SelectedFeature feature) +{ + float show = ceil(feature.color.a); + positionMC *= show; + + #if defined(HAS_SELECTED_FEATURE_ID_ATTRIBUTE) && !defined(HAS_CLASSIFICATION) + filterByPassType(positionMC, feature.color); + #endif +} +`;var I2=`void filterByPassType(vec4 featureColor) +{ + bool styleTranslucent = (featureColor.a != 1.0); + // Only render translucent features in the translucent pass (if the style or the original command has translucency). + if (czm_pass == czm_passTranslucent && !styleTranslucent && !model_commandTranslucent) + { + // If the model has a translucent silhouette, it needs to render during the silhouette color command, + // (i.e. the command where model_silhouettePass = true), even if the model isn't translucent. + #ifdef HAS_SILHOUETTE + if(!model_silhouettePass) { + discard; + } + #else + discard; + #endif + } + // If the current pass is not the translucent pass and the style is not translucent, don't render the feature. + else if (czm_pass != czm_passTranslucent && styleTranslucent) + { + discard; + } +} + +void cpuStylingStage(inout czm_modelMaterial material, SelectedFeature feature) +{ + vec4 featureColor = feature.color; + if (featureColor.a == 0.0) + { + discard; + } + + // If a feature ID vertex attribute is used, the pass type filter is applied in the vertex shader. + // So, we only apply in in the fragment shader if the feature ID texture is used. + #if defined(HAS_SELECTED_FEATURE_ID_TEXTURE) && !defined(HAS_CLASSIFICATION) + filterByPassType(featureColor); + #endif + + featureColor = czm_gammaCorrect(featureColor); + + // Classification models compute the diffuse differently. + #ifdef HAS_CLASSIFICATION + material.diffuse = featureColor.rgb * featureColor.a; + #else + float highlight = ceil(model_colorBlend); + material.diffuse *= mix(featureColor.rgb, vec3(1.0), highlight); + #endif + + material.alpha *= featureColor.a; +} +`;var zae={name:"CPUStylingPipelineStage"};zae.process=function(e,t,n){let i=e.model,o=e.shaderBuilder;o.addVertexLines(E2),o.addFragmentLines(I2),o.addDefine("USE_CPU_STYLING",void 0,pe.BOTH),l(i.color)||(o.addUniform("float",$C.COLOR_BLEND_UNIFORM_NAME,pe.FRAGMENT),e.uniformMap[$C.COLOR_BLEND_UNIFORM_NAME]=function(){return al.getColorBlend(i.colorBlendMode,i.colorBlendAmount)}),o.addUniform("bool","model_commandTranslucent",pe.BOTH),e.uniformMap.model_commandTranslucent=function(){return e.alphaOptions.pass===Be.TRANSLUCENT}};var x2=zae;var Vae={MODIFY_MATERIAL:"MODIFY_MATERIAL",REPLACE_MATERIAL:"REPLACE_MATERIAL"};Vae.getDefineName=function(e){return`CUSTOM_SHADER_${e}`};var p_=Object.freeze(Vae);var b2=`void customShaderStage( + inout czm_modelVertexOutput vsOutput, + inout ProcessedAttributes attributes, + FeatureIds featureIds, + Metadata metadata, + MetadataClass metadataClass, + MetadataStatistics metadataStatistics +) { + // VertexInput and initializeInputStruct() are dynamically generated in JS, + // see CustomShaderPipelineStage.js + VertexInput vsInput; + initializeInputStruct(vsInput, attributes); + vsInput.featureIds = featureIds; + vsInput.metadata = metadata; + vsInput.metadataClass = metadataClass; + vsInput.metadataStatistics = metadataStatistics; + vertexMain(vsInput, vsOutput); + attributes.positionMC = vsOutput.positionMC; +} +`;var T2=`void customShaderStage( + inout czm_modelMaterial material, + ProcessedAttributes attributes, + FeatureIds featureIds, + Metadata metadata, + MetadataClass metadataClass, + MetadataStatistics metadataStatistics +) { + // FragmentInput and initializeInputStruct() are dynamically generated in JS, + // see CustomShaderPipelineStage.js + FragmentInput fsInput; + initializeInputStruct(fsInput, attributes); + fsInput.featureIds = featureIds; + fsInput.metadata = metadata; + fsInput.metadataClass = metadataClass; + fsInput.metadataStatistics = metadataStatistics; + fragmentMain(fsInput, material); +} +`;var S2=`void featureIdStage(out FeatureIds featureIds, ProcessedAttributes attributes) { + initializeFeatureIds(featureIds, attributes); + initializeFeatureIdAliases(featureIds); +} +`;var w2=`void featureIdStage(out FeatureIds featureIds, ProcessedAttributes attributes) +{ + initializeFeatureIds(featureIds, attributes); + initializeFeatureIdAliases(featureIds); + setFeatureIdVaryings(); +} +`;var Ki={name:"FeatureIdPipelineStage",STRUCT_ID_FEATURE_IDS_VS:"FeatureIdsVS",STRUCT_ID_FEATURE_IDS_FS:"FeatureIdsFS",STRUCT_NAME_FEATURE_IDS:"FeatureIds",FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS:"initializeFeatureIdsVS",FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS:"initializeFeatureIdsFS",FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_VS:"initializeFeatureIdAliasesVS",FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_FS:"initializeFeatureIdAliasesFS",FUNCTION_SIGNATURE_INITIALIZE_FEATURE_IDS:"void initializeFeatureIds(out FeatureIds featureIds, ProcessedAttributes attributes)",FUNCTION_SIGNATURE_INITIALIZE_FEATURE_ID_ALIASES:"void initializeFeatureIdAliases(inout FeatureIds featureIds)",FUNCTION_ID_SET_FEATURE_ID_VARYINGS:"setFeatureIdVaryings",FUNCTION_SIGNATURE_SET_FEATURE_ID_VARYINGS:"void setFeatureIdVaryings()"};Ki.process=function(e,t,n){let i=e.shaderBuilder;fHe(i);let o=e.runtimeNode.node.instances;l(o)&&dHe(e,o,n),hHe(e,t,n),i.addVertexLines(w2),i.addFragmentLines(S2)};function fHe(e){e.addStruct(Ki.STRUCT_ID_FEATURE_IDS_VS,Ki.STRUCT_NAME_FEATURE_IDS,pe.VERTEX),e.addStruct(Ki.STRUCT_ID_FEATURE_IDS_FS,Ki.STRUCT_NAME_FEATURE_IDS,pe.FRAGMENT),e.addFunction(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,Ki.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_IDS,pe.VERTEX),e.addFunction(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,Ki.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_IDS,pe.FRAGMENT),e.addFunction(Ki.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_VS,Ki.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_ID_ALIASES,pe.VERTEX),e.addFunction(Ki.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_FS,Ki.FUNCTION_SIGNATURE_INITIALIZE_FEATURE_ID_ALIASES,pe.FRAGMENT),e.addFunction(Ki.FUNCTION_ID_SET_FEATURE_ID_VARYINGS,Ki.FUNCTION_SIGNATURE_SET_FEATURE_ID_VARYINGS,pe.VERTEX)}function dHe(e,t,n){let i=t.featureIds,o=t.attributes[0].count;for(let r=0;r<i.length;r++){let s=i[r],a=s.positionalLabel;s instanceof bn.FeatureIdAttribute?mHe(e,s,a):Hae(e,s,a,o,1,n);let c=s.label;l(c)&&Wae(e,a,c,pe.BOTH)}}function hHe(e,t,n){let i=t.featureIds,r=Qt.getAttributeBySemantic(t,ct.POSITION).count;for(let s=0;s<i.length;s++){let a=i[s],c=a.positionalLabel,u=pe.BOTH;a instanceof bn.FeatureIdAttribute?AHe(e,a,c):a instanceof bn.FeatureIdImplicitRange?Hae(e,a,c,r,void 0,n):(pHe(e,a,c,s,n),u=pe.FRAGMENT);let f=a.label;l(f)&&Wae(e,c,f,u)}}function mHe(e,t,n){let i=e.shaderBuilder;i.addStructField(Ki.STRUCT_ID_FEATURE_IDS_VS,"int",n),i.addStructField(Ki.STRUCT_ID_FEATURE_IDS_FS,"int",n);let o=t.setIndex,r=n.replace(/_\d+$/,"_"),s=`a_${r}${o}`,a=`v_${r}${o}`,c=`featureIds.${n} = int(czm_round(${s}));`,u=`featureIds.${n} = int(czm_round(${a}));`;i.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,[c]),i.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,[u]),i.addVarying("float",a),i.addFunctionLines(Ki.FUNCTION_ID_SET_FEATURE_ID_VARYINGS,[`${a} = ${s};`])}function AHe(e,t,n){let i=e.shaderBuilder;i.addStructField(Ki.STRUCT_ID_FEATURE_IDS_VS,"int",n),i.addStructField(Ki.STRUCT_ID_FEATURE_IDS_FS,"int",n);let o=t.setIndex,r=n.replace(/_\d+$/,"_"),s=[`featureIds.${n} = int(czm_round(attributes.${r}${o}));`];i.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,s),i.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,s)}function Hae(e,t,n,i,o,r){gHe(e,t,i,o,r);let s=e.shaderBuilder,a=`a_implicit_${n}`;s.addAttribute("float",a);let c=`v_implicit_${n}`;s.addVarying("float",c),s.addStructField(Ki.STRUCT_ID_FEATURE_IDS_VS,"int",n),s.addStructField(Ki.STRUCT_ID_FEATURE_IDS_FS,"int",n),s.addFunctionLines(Ki.FUNCTION_ID_SET_FEATURE_ID_VARYINGS,[`${c} = ${a};`]),s.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_VS,[`featureIds.${n} = int(czm_round(${a}));`]),s.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,[`featureIds.${n} = int(czm_round(${c}));`])}function pHe(e,t,n,i,o){let r=`u_featureIdTexture_${i}`,s=e.uniformMap,a=t.textureReader;s[r]=function(){return a.texture??o.context.defaultTexture};let c=a.channels,u=e.shaderBuilder;u.addStructField(Ki.STRUCT_ID_FEATURE_IDS_FS,"int",n),u.addUniform("sampler2D",r,pe.FRAGMENT);let h=`v_texCoord_${a.texCoord}`,A=h,g=a.transform;if(l(g)&&!J.equals(g,J.IDENTITY)){let y=`${r}Transform`;u.addUniform("mat3",y,pe.FRAGMENT),s[y]=function(){return g},A=`vec2(${y} * vec3(${h}, 1.0))`}let m=`texture(${r}, ${A}).${c}`,_=`featureIds.${n} = czm_unpackUint(${m});`;u.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_IDS_FS,[_])}function Wae(e,t,n,i){let o=e.shaderBuilder,r=pe.includesVertexShader(i);r&&o.addStructField(Ki.STRUCT_ID_FEATURE_IDS_VS,"int",n),o.addStructField(Ki.STRUCT_ID_FEATURE_IDS_FS,"int",n);let s=[`featureIds.${n} = featureIds.${t};`];r&&o.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_VS,s),o.addFunctionLines(Ki.FUNCTION_ID_INITIALIZE_FEATURE_ID_ALIASES_FS,s)}function gHe(e,t,n,i,o){let r=e.model,s,a;if(l(t.repeat)){let u=_He(t,n);s=Et.createVertexBuffer({context:o.context,typedArray:u,usage:Qe.STATIC_DRAW}),s.vertexArrayDestroyable=!1,r._pipelineResources.push(s),r.statistics.addBuffer(s,!1)}else a=[t.offset];let c={index:e.attributeIndex++,instanceDivisor:i,value:a,vertexBuffer:s,normalize:!1,componentsPerAttribute:1,componentDatatype:q.FLOAT,strideInBytes:q.getSizeInBytes(q.FLOAT),offsetInBytes:0};e.attributes.push(c)}function _He(e,t){let n=e.offset,i=e.repeat,o=new Float32Array(t);for(let r=0;r<t;r++)o[r]=n+Math.floor(r/i);return o}var eE=Ki;var B2=`void metadataStage( + out Metadata metadata, + out MetadataClass metadataClass, + out MetadataStatistics metadataStatistics, + ProcessedAttributes attributes + ) +{ + initializeMetadata(metadata, metadataClass, metadataStatistics, attributes); +} +`;var D2=`void metadataStage( + out Metadata metadata, + out MetadataClass metadataClass, + out MetadataStatistics metadataStatistics, + ProcessedAttributes attributes + ) +{ + initializeMetadata(metadata, metadataClass, metadataStatistics, attributes); + setMetadataVaryings(); +} +`;var Li={name:"MetadataPipelineStage",STRUCT_ID_METADATA_VS:"MetadataVS",STRUCT_ID_METADATA_FS:"MetadataFS",STRUCT_NAME_METADATA:"Metadata",STRUCT_ID_METADATA_CLASS_VS:"MetadataClassVS",STRUCT_ID_METADATA_CLASS_FS:"MetadataClassFS",STRUCT_NAME_METADATA_CLASS:"MetadataClass",STRUCT_ID_METADATA_STATISTICS_VS:"MetadataStatisticsVS",STRUCT_ID_METADATA_STATISTICS_FS:"MetadataStatisticsFS",STRUCT_NAME_METADATA_STATISTICS:"MetadataStatistics",FUNCTION_ID_INITIALIZE_METADATA_VS:"initializeMetadataVS",FUNCTION_ID_INITIALIZE_METADATA_FS:"initializeMetadataFS",FUNCTION_SIGNATURE_INITIALIZE_METADATA:"void initializeMetadata(out Metadata metadata, out MetadataClass metadataClass, out MetadataStatistics metadataStatistics, ProcessedAttributes attributes)",FUNCTION_ID_SET_METADATA_VARYINGS:"setMetadataVaryings",FUNCTION_SIGNATURE_SET_METADATA_VARYINGS:"void setMetadataVaryings()",METADATA_CLASS_FIELDS:[{specName:"noData",shaderName:"noData"},{specName:"default",shaderName:"defaultValue"},{specName:"min",shaderName:"minValue"},{specName:"max",shaderName:"maxValue"}],METADATA_STATISTICS_FIELDS:[{specName:"min",shaderName:"minValue"},{specName:"max",shaderName:"maxValue"},{specName:"mean",shaderName:"mean",type:"float"},{specName:"median",shaderName:"median"},{specName:"standardDeviation",shaderName:"standardDeviation",type:"float"},{specName:"variance",shaderName:"variance",type:"float"},{specName:"sum",shaderName:"sum"}]};Li.process=function(e,t,n){let{shaderBuilder:i,model:o}=e,{structuralMetadata:r={},content:s}=o,a=s?.tileset.metadataExtension?.statistics,c=yHe(r.propertyAttributes,t,a),u=EHe(r.propertyTextures,a),f=c.concat(u);xHe(i,f),SHe(i),i.addVertexLines(D2),i.addFragmentLines(B2);for(let h=0;h<c.length;h++){let A=c[h];wHe(e,A)}for(let h=0;h<u.length;h++){let A=u[h];DHe(e,A)}};function yHe(e,t,n){return l(e)?e.flatMap(i=>CHe(i,t,n)):[]}function CHe(e,t,n){let{getAttributeByName:i,getAttributeInfo:o,sanitizeGlslIdentifier:r}=Qt,s=e.class.id,a=n?.classes[s],c=Object.entries(e.properties),u=new Array(c.length);for(let f=0;f<c.length;f++){let[h,A]=c[f],g=i(t,A.attribute),{glslType:m,variableName:_}=o(g);u[f]={metadataVariable:r(h),property:A,type:A.classProperty.type,glslType:m,variableName:_,propertyStatistics:a?.properties[h],shaderDestination:pe.BOTH}}return u}function EHe(e,t){return l(e)?e.flatMap(n=>IHe(n,t)):[]}function IHe(e,t){let{sanitizeGlslIdentifier:n}=Qt,i=e.class.id,o=t?.classes[i],r=Object.entries(e.properties).filter(([a,c])=>c.isGpuCompatible()),s=new Array(r.length);for(let a=0;a<r.length;a++){let[c,u]=r[a];s[a]={metadataVariable:n(c),property:u,type:u.classProperty.type,glslType:u.getGlslType(),propertyStatistics:o?.properties[c],shaderDestination:pe.FRAGMENT}}return s}function xHe(e,t){let n=new Set,i=new Set;for(let a=0;a<t.length;a++){let{type:c,glslType:u,propertyStatistics:f}=t[a];n.add(u),l(f)&&c!==gt.ENUM&&i.add(u)}let o=Li.METADATA_CLASS_FIELDS;for(let a of n){let c=`${a}MetadataClass`;s(c,a,o)}let r=Li.METADATA_STATISTICS_FIELDS;for(let a of i){let c=`${a}MetadataStatistics`;s(c,a,r)}function s(a,c,u){e.addStruct(a,a,pe.BOTH);for(let f=0;f<u.length;f++){let{shaderName:h}=u[f],A=u[f].type==="float"?THe(c):c;e.addStructField(a,A,h)}}}var bHe={int:"float",ivec2:"vec2",ivec3:"vec3",ivec4:"vec4"};function THe(e){let t=bHe[e];return l(t)?t:e}function SHe(e){e.addStruct(Li.STRUCT_ID_METADATA_VS,Li.STRUCT_NAME_METADATA,pe.VERTEX),e.addStruct(Li.STRUCT_ID_METADATA_FS,Li.STRUCT_NAME_METADATA,pe.FRAGMENT),e.addStruct(Li.STRUCT_ID_METADATA_CLASS_VS,Li.STRUCT_NAME_METADATA_CLASS,pe.VERTEX),e.addStruct(Li.STRUCT_ID_METADATA_CLASS_FS,Li.STRUCT_NAME_METADATA_CLASS,pe.FRAGMENT),e.addStruct(Li.STRUCT_ID_METADATA_STATISTICS_VS,Li.STRUCT_NAME_METADATA_STATISTICS,pe.VERTEX),e.addStruct(Li.STRUCT_ID_METADATA_STATISTICS_FS,Li.STRUCT_NAME_METADATA_STATISTICS,pe.FRAGMENT),e.addFunction(Li.FUNCTION_ID_INITIALIZE_METADATA_VS,Li.FUNCTION_SIGNATURE_INITIALIZE_METADATA,pe.VERTEX),e.addFunction(Li.FUNCTION_ID_INITIALIZE_METADATA_FS,Li.FUNCTION_SIGNATURE_INITIALIZE_METADATA,pe.FRAGMENT),e.addFunction(Li.FUNCTION_ID_SET_METADATA_VARYINGS,Li.FUNCTION_SIGNATURE_SET_METADATA_VARYINGS,pe.VERTEX)}function wHe(e,t){BHe(e,t),jae(e.shaderBuilder,t),Yae(e.shaderBuilder,t)}function BHe(e,t){let{shaderBuilder:n}=e,{metadataVariable:i,property:o,glslType:r}=t,s=Kae({valueExpression:`attributes.${t.variableName}`,renderResources:e,glslType:r,metadataVariable:i,shaderDestination:pe.BOTH,property:o});n.addStructField(Li.STRUCT_ID_METADATA_VS,r,i),n.addStructField(Li.STRUCT_ID_METADATA_FS,r,i);let a=`metadata.${i} = ${s};`;n.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_VS,[a]),n.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_FS,[a])}function DHe(e,t){vHe(e,t),jae(e.shaderBuilder,t),Yae(e.shaderBuilder,t)}function vHe(e,t){let{shaderBuilder:n,uniformMap:i}=e,{metadataVariable:o,glslType:r,property:s}=t,{texCoord:a,channels:c,index:u,texture:f,transform:h}=s.textureReader,A=`u_propertyTexture_${u}`;i.hasOwnProperty(A)||(n.addUniform("sampler2D",A,pe.FRAGMENT),i[A]=()=>f),n.addStructField(Li.STRUCT_ID_METADATA_FS,r,o);let g=`attributes.texCoord_${a}`,m=g;if(l(h)&&!J.equals(h,J.IDENTITY)){let I=`${A}Transform`;n.addUniform("mat3",I,pe.FRAGMENT),i[I]=function(){return h},m=`vec2(${I} * vec3(${g}, 1.0))`}let _=`texture(${A}, ${m}).${c}`,y=s.unpackInShader(_),C=Kae({valueExpression:y,renderResources:e,glslType:r,metadataVariable:o,shaderDestination:pe.FRAGMENT,property:s}),E=`metadata.${o} = ${C};`;n.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_FS,[E])}function jae(e,t){let{classProperty:n}=t.property,{metadataVariable:i,glslType:o,shaderDestination:r}=t,s=qae(Li.METADATA_CLASS_FIELDS,n,`metadataClass.${i}`,o),a=`${o}MetadataClass`;e.addStructField(Li.STRUCT_ID_METADATA_CLASS_FS,a,i),e.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_FS,s),pe.includesVertexShader(r)&&(e.addStructField(Li.STRUCT_ID_METADATA_CLASS_VS,a,i),e.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_VS,s))}function Yae(e,t){let{propertyStatistics:n}=t;if(!l(n))return;let{metadataVariable:i,type:o,glslType:r}=t;if(o===gt.ENUM)return;let s=Li.METADATA_STATISTICS_FIELDS,a=`metadataStatistics.${i}`,c=qae(s,n,a,r),u=`${r}MetadataStatistics`;e.addStructField(Li.STRUCT_ID_METADATA_STATISTICS_FS,u,i),e.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_FS,c),pe.includesVertexShader(t.shaderDestination)&&(e.addStructField(Li.STRUCT_ID_METADATA_STATISTICS_VS,u,i),e.addFunctionLines(Li.FUNCTION_ID_INITIALIZE_METADATA_VS,c))}function qae(e,t,n,i){function o(r){let s=t[r.specName];if(l(s))return`${n}.${r.shaderName} = ${i}(${s});`}return l(t)?e.map(o).filter(l):[]}function Kae(e){let{valueExpression:t,property:n}=e;if(!n.hasValueTransform)return t;let i=e.metadataVariable,o=`u_${i}_offset`,r=`u_${i}_scale`,{shaderBuilder:s,uniformMap:a}=e.renderResources,{glslType:c,shaderDestination:u}=e;s.addUniform(c,o,u),s.addUniform(c,r,u);let{offset:f,scale:h}=n;return a[o]=()=>f,a[r]=()=>h,`czm_valueTransform(${o}, ${r}, ${t})`}var Xd=Li;var PHe={INHERIT:0,OPAQUE:1,TRANSLUCENT:2},tE=Object.freeze(PHe);var va={name:"CustomShaderPipelineStage",STRUCT_ID_ATTRIBUTES_VS:"AttributesVS",STRUCT_ID_ATTRIBUTES_FS:"AttributesFS",STRUCT_NAME_ATTRIBUTES:"Attributes",STRUCT_ID_VERTEX_INPUT:"VertexInput",STRUCT_NAME_VERTEX_INPUT:"VertexInput",STRUCT_ID_FRAGMENT_INPUT:"FragmentInput",STRUCT_NAME_FRAGMENT_INPUT:"FragmentInput",FUNCTION_ID_INITIALIZE_INPUT_STRUCT_VS:"initializeInputStructVS",FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_VS:"void initializeInputStruct(out VertexInput vsInput, ProcessedAttributes attributes)",FUNCTION_ID_INITIALIZE_INPUT_STRUCT_FS:"initializeInputStructFS",FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_FS:"void initializeInputStruct(out FragmentInput fsInput, ProcessedAttributes attributes)",_oneTimeWarning:yt};va.process=function(e,t,n){let{shaderBuilder:i,model:o,alphaOptions:r}=e,{customShader:s}=o,{lightingModel:a,translucencyMode:c}=s;l(a)&&(e.lightingOptions.lightingModel=a),c===tE.TRANSLUCENT?r.pass=Be.TRANSLUCENT:c===tE.OPAQUE&&(r.pass=void 0);let u=kHe(s,t);if(!u.customShaderEnabled)return;if(VHe(i,s,u),u.shouldComputePositionWC&&i.addDefine("COMPUTE_POSITION_WC_CUSTOM_SHADER",void 0,pe.BOTH),l(s.vertexShaderText)&&i.addDefine("HAS_CUSTOM_VERTEX_SHADER",void 0,pe.VERTEX),l(s.fragmentShaderText)){i.addDefine("HAS_CUSTOM_FRAGMENT_SHADER",void 0,pe.FRAGMENT);let A=p_.getDefineName(s.mode);i.addDefine(A,void 0,pe.FRAGMENT)}let f=s.uniforms;for(let A in f)if(f.hasOwnProperty(A)){let g=f[A];i.addUniform(g.type,A)}let h=s.varyings;for(let A in h)if(h.hasOwnProperty(A)){let g=h[A];i.addVarying(g,A)}e.uniformMap=wt(e.uniformMap,s.uniformMap)};function RHe(e){let t={};for(let n=0;n<e.length;n++){let i=Qt.getAttributeInfo(e[n]);t[i.variableName]=i}return t}var MHe={position:"vec3",normal:"vec3",tangent:"vec3",bitangent:"vec3",texCoord:"vec2",color:"vec4",joints:"ivec4",weights:"vec4"},NHe={position:"vec3(0.0)",normal:"vec3(0.0, 0.0, 1.0)",tangent:"vec3(1.0, 0.0, 0.0)",bitangent:"vec3(0.0, 1.0, 0.0)",texCoord:"vec2(0.0)",color:"vec4(1.0)",joints:"ivec4(0)",weights:"vec4(0.0)"};function Xae(e){let t=e.replace(/_[0-9]+$/,"");t=t.replace(/(MC|EC)$/,"");let n=MHe[t],i=NHe[t];if(l(n))return{attributeField:[n,e],value:i}}function LHe(e,t){if(!l(e.vertexShaderText))return{enabled:!1};let n=e.usedVariablesVertex.attributeSet,i=Jae(t,n,!1),o=Zae(t,n,!1),r,s=[],a=[];for(let c in i){if(!i.hasOwnProperty(c))continue;let f=[i[c].glslType,c];s.push(f),r=`vsInput.attributes.${c} = attributes.${c};`,a.push(r)}for(let c=0;c<o.length;c++){let u=o[c],f=Xae(u);if(!l(f))return va._oneTimeWarning("CustomShaderPipelineStage.incompatiblePrimitiveVS",`Primitive is missing attribute ${u}, disabling custom vertex shader`),{enabled:!1};s.push(f.attributeField),r=`vsInput.attributes.${u} = ${f.value};`,a.push(r)}return{enabled:!0,attributeFields:s,initializationLines:a}}function OHe(e){let t=[],n=[],i=e.usedVariablesFragment.attributeSet;return i.hasOwnProperty("positionWC")&&(t.push(["vec3","positionWC"]),n.push("fsInput.attributes.positionWC = attributes.positionWC;")),i.hasOwnProperty("positionEC")&&(t.push(["vec3","positionEC"]),n.push("fsInput.attributes.positionEC = attributes.positionEC;")),{attributeFields:t,initializationLines:n}}function FHe(e,t){if(!l(e.fragmentShaderText))return{enabled:!1};let n=e.usedVariablesFragment.attributeSet,i=Jae(t,n,!0),o=Zae(t,n,!0),r,s=[],a=[];for(let u in i){if(!i.hasOwnProperty(u))continue;let h=[i[u].glslType,u];s.push(h),r=`fsInput.attributes.${u} = attributes.${u};`,a.push(r)}for(let u=0;u<o.length;u++){let f=o[u],h=Xae(f);if(!l(h))return va._oneTimeWarning("CustomShaderPipelineStage.incompatiblePrimitiveFS",`Primitive is missing attribute ${f}, disabling custom fragment shader.`),{enabled:!1};s.push(h.attributeField),r=`fsInput.attributes.${f} = ${h.value};`,a.push(r)}let c=OHe(e);return{enabled:!0,attributeFields:s.concat(c.attributeFields),initializationLines:c.initializationLines.concat(a)}}var QHe={positionWC:!0,positionEC:!0};function Jae(e,t,n){let i={};for(let o in e){if(!e.hasOwnProperty(o))continue;let r=e[o],s=o;n&&o==="normalMC"?s="normalEC":n&&o==="tangentMC"&&(s="tangentEC",r.glslType="vec3"),t.hasOwnProperty(s)&&(i[s]=r)}return i}function Zae(e,t,n){let i=[];for(let o in t){if(!t.hasOwnProperty(o)||QHe.hasOwnProperty(o))continue;let r=o;n&&o==="normalEC"?r="normalMC":n&&o==="tangentEC"&&(r="tangentMC"),e.hasOwnProperty(r)||i.push(o)}return i}function kHe(e,t){let n=RHe(t.attributes),i=LHe(e,n),o=FHe(e,n),s=e.usedVariablesFragment.attributeSet.hasOwnProperty("positionWC")&&o.enabled;return{vertexLines:i,fragmentLines:o,customShaderEnabled:i.enabled||o.enabled,shouldComputePositionWC:s}}function UHe(e,t){let n=va.STRUCT_ID_ATTRIBUTES_VS;e.addStruct(n,va.STRUCT_NAME_ATTRIBUTES,pe.VERTEX);let{attributeFields:i,initializationLines:o}=t;for(let s=0;s<i.length;s++){let[a,c]=i[s];e.addStructField(n,a,c)}n=va.STRUCT_ID_VERTEX_INPUT,e.addStruct(n,va.STRUCT_NAME_VERTEX_INPUT,pe.VERTEX),e.addStructField(n,va.STRUCT_NAME_ATTRIBUTES,"attributes"),e.addStructField(n,eE.STRUCT_NAME_FEATURE_IDS,"featureIds"),e.addStructField(n,Xd.STRUCT_NAME_METADATA,"metadata"),e.addStructField(n,Xd.STRUCT_NAME_METADATA_CLASS,"metadataClass"),e.addStructField(n,Xd.STRUCT_NAME_METADATA_STATISTICS,"metadataStatistics");let r=va.FUNCTION_ID_INITIALIZE_INPUT_STRUCT_VS;e.addFunction(r,va.FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_VS,pe.VERTEX),e.addFunctionLines(r,o)}function GHe(e,t){let n=va.STRUCT_ID_ATTRIBUTES_FS;e.addStruct(n,va.STRUCT_NAME_ATTRIBUTES,pe.FRAGMENT);let{attributeFields:i,initializationLines:o}=t;for(let s=0;s<i.length;s++){let[a,c]=i[s];e.addStructField(n,a,c)}n=va.STRUCT_ID_FRAGMENT_INPUT,e.addStruct(n,va.STRUCT_NAME_FRAGMENT_INPUT,pe.FRAGMENT),e.addStructField(n,va.STRUCT_NAME_ATTRIBUTES,"attributes"),e.addStructField(n,eE.STRUCT_NAME_FEATURE_IDS,"featureIds"),e.addStructField(n,Xd.STRUCT_NAME_METADATA,"metadata"),e.addStructField(n,Xd.STRUCT_NAME_METADATA_CLASS,"metadataClass"),e.addStructField(n,Xd.STRUCT_NAME_METADATA_STATISTICS,"metadataStatistics");let r=va.FUNCTION_ID_INITIALIZE_INPUT_STRUCT_FS;e.addFunction(r,va.FUNCTION_SIGNATURE_INITIALIZE_INPUT_STRUCT_FS,pe.FRAGMENT),e.addFunctionLines(r,o)}var zHe=[];function VHe(e,t,n){let{vertexLines:i,fragmentLines:o}=n,r=zHe;i.enabled&&(UHe(e,i),r.length=0,r.push("#line 0",t.vertexShaderText,b2),e.addVertexLines(r)),o.enabled&&(GHe(e,o),r.length=0,r.push("#line 0",t.fragmentShaderText,T2),e.addFragmentLines(r))}var v2=va;var DB={name:"DequantizationPipelineStage",FUNCTION_ID_DEQUANTIZATION_STAGE_VS:"dequantizationStage",FUNCTION_SIGNATURE_DEQUANTIZATION_STAGE_VS:"void dequantizationStage(inout ProcessedAttributes attributes)"};DB.process=function(e,t,n){let i=e.shaderBuilder,o=e.model,r=l(o.classificationType);i.addDefine("USE_DEQUANTIZATION",void 0,pe.VERTEX),i.addFunction(DB.FUNCTION_ID_DEQUANTIZATION_STAGE_VS,DB.FUNCTION_SIGNATURE_DEQUANTIZATION_STAGE_VS,pe.VERTEX);let s=t.attributes;for(let a=0;a<s.length;a++){let c=s[a],u=c.quantization;if(!l(u))continue;let f=c.semantic===ct.POSITION,h=c.semantic===ct.TEXCOORD;if(r&&!f&&!h)continue;let A=Qt.getAttributeInfo(c);WHe(i,A),HHe(e,A)}};function HHe(e,t){let n=e.shaderBuilder,i=e.uniformMap,o=t.variableName,r=t.attribute.quantization;if(r.octEncoded){let s=`model_normalizationRange_${o}`;n.addUniform("float",s,pe.VERTEX),i[s]=function(){return r.normalizationRange}}else{let s=`model_quantizedVolumeOffset_${o}`,a=`model_quantizedVolumeStepSize_${o}`,c=t.glslType;n.addUniform(c,s,pe.VERTEX),n.addUniform(c,a,pe.VERTEX);let u=r.quantizedVolumeOffset,f=r.quantizedVolumeStepSize;/^color_\d+$/.test(o)&&(u=$ae(u,0),f=$ae(f,1)),i[s]=function(){return u},i[a]=function(){return f}}}function $ae(e,t){return e instanceof se?e:new se(e.x,e.y,e.z,t)}function WHe(e,t){let n=t.variableName,i=t.attribute.quantization,o;i.octEncoded?o=jHe(n,i):o=YHe(n),e.addFunctionLines(DB.FUNCTION_ID_DEQUANTIZATION_STAGE_VS,[o])}function jHe(e,t){let n=`attributes.${e}`,i=`a_quantized_${e}`,o=`model_normalizationRange_${e}`,r=t.octEncodedZXY?".zxy":".xyz";return`${n} = czm_octDecode(${i}, ${o})${r};`}function YHe(e){let t=`attributes.${e}`,n=`a_quantized_${e}`,i=`model_quantizedVolumeOffset_${e}`,o=`model_quantizedVolumeStepSize_${e}`;return`${t} = ${i} + ${n} * ${o};`}var P2=DB;var R2=`void geometryStage(out ProcessedAttributes attributes) +{ + attributes.positionMC = v_positionMC; + attributes.positionEC = v_positionEC; + + #if defined(COMPUTE_POSITION_WC_CUSTOM_SHADER) || defined(COMPUTE_POSITION_WC_STYLE) || defined(COMPUTE_POSITION_WC_ATMOSPHERE) + attributes.positionWC = v_positionWC; + #endif + + #ifdef HAS_NORMALS + // renormalize after interpolation + attributes.normalEC = normalize(v_normalEC); + #endif + + #ifdef HAS_TANGENTS + attributes.tangentEC = normalize(v_tangentEC); + #endif + + #ifdef HAS_BITANGENTS + attributes.bitangentEC = normalize(v_bitangentEC); + #endif + + // Everything else is dynamically generated in GeometryPipelineStage + setDynamicVaryings(attributes); +} +`;var M2=`vec4 geometryStage(inout ProcessedAttributes attributes, mat4 modelView, mat3 normal) +{ + vec4 computedPosition; + + // Compute positions in different coordinate systems + vec3 positionMC = attributes.positionMC; + v_positionMC = positionMC; + v_positionEC = (modelView * vec4(positionMC, 1.0)).xyz; + + #if defined(USE_2D_POSITIONS) || defined(USE_2D_INSTANCING) + vec3 position2D = attributes.position2D; + vec3 positionEC = (u_modelView2D * vec4(position2D, 1.0)).xyz; + computedPosition = czm_projection * vec4(positionEC, 1.0); + #else + computedPosition = czm_projection * vec4(v_positionEC, 1.0); + #endif + + // Sometimes the custom shader and/or style needs this + #if defined(COMPUTE_POSITION_WC_CUSTOM_SHADER) || defined(COMPUTE_POSITION_WC_STYLE) || defined(COMPUTE_POSITION_WC_ATMOSPHERE) || defined(ENABLE_CLIPPING_POLYGONS) + // Note that this is a 32-bit position which may result in jitter on small + // scales. + v_positionWC = (czm_model * vec4(positionMC, 1.0)).xyz; + #endif + + #ifdef HAS_NORMALS + v_normalEC = normalize(normal * attributes.normalMC); + #endif + + #ifdef HAS_TANGENTS + v_tangentEC = normalize(normal * attributes.tangentMC); + #endif + + #ifdef HAS_BITANGENTS + v_bitangentEC = normalize(normal * attributes.bitangentMC); + #endif + + // All other varyings need to be dynamically generated in + // GeometryPipelineStage + setDynamicVaryings(attributes); + + return computedPosition; +} +`;var vB=`vec2 computeSt(float featureId) +{ + float stepX = model_textureStep.x; + float centerX = model_textureStep.y; + + #ifdef MULTILINE_BATCH_TEXTURE + float stepY = model_textureStep.z; + float centerY = model_textureStep.w; + + float xId = mod(featureId, model_textureDimensions.x); + float yId = floor(featureId / model_textureDimensions.x); + + return vec2(centerX + (xId * stepX), centerY + (yId * stepY)); + #else + return vec2(centerX + (featureId * stepX), 0.5); + #endif +} + +void selectedFeatureIdStage(out SelectedFeature feature, FeatureIds featureIds) +{ + int featureId = featureIds.SELECTED_FEATURE_ID; + + + if (featureId < model_featuresLength) + { + vec2 featureSt = computeSt(float(featureId)); + + feature.id = featureId; + feature.st = featureSt; + feature.color = texture(model_batchTexture, featureSt); + } + // Floating point comparisons can be unreliable in GLSL, so we + // increment the feature ID to make sure it's always greater + // then the model_featuresLength - a condition we check for in the + // pick ID, to avoid sampling the pick texture if the feature ID is + // greater than the number of features. + else + { + feature.id = model_featuresLength + 1; + feature.st = vec2(0.0); + feature.color = vec4(1.0); + } + + #ifdef HAS_NULL_FEATURE_ID + if (featureId == model_nullFeatureId) { + feature.id = featureId; + feature.st = vec2(0.0); + feature.color = vec4(1.0); + } + #endif +} +`;var PB={name:"SelectedFeatureIdPipelineStage",STRUCT_ID_SELECTED_FEATURE:"SelectedFeature",STRUCT_NAME_SELECTED_FEATURE:"SelectedFeature"};PB.process=function(e,t,n){let i=e.shaderBuilder;e.hasPropertyTable=!0;let o=e.model,r=e.runtimeNode.node,s=qHe(o,r,t),a=s.shaderDestination;i.addDefine("HAS_SELECTED_FEATURE_ID",void 0,a),i.addDefine("SELECTED_FEATURE_ID",s.variableName,a),i.addDefine(s.featureIdDefine,void 0,a),KHe(i);let c=s.featureIds.nullFeatureId,u=e.uniformMap;l(c)&&(i.addDefine("HAS_NULL_FEATURE_ID",void 0,a),i.addUniform("int","model_nullFeatureId",a),u.model_nullFeatureId=function(){return c}),s.shaderDestination===pe.BOTH&&i.addVertexLines(vB),i.addFragmentLines(vB)};function ece(e){return e instanceof bn.FeatureIdTexture?"HAS_SELECTED_FEATURE_ID_TEXTURE":"HAS_SELECTED_FEATURE_ID_ATTRIBUTE"}function tce(e){return e instanceof bn.FeatureIdTexture?pe.FRAGMENT:pe.BOTH}function qHe(e,t,n){let i,o;return l(t.instances)&&(o=Qt.getFeatureIdsByLabel(t.instances.featureIds,e.instanceFeatureIdLabel),l(o))?(i=o.label??o.positionalLabel,{featureIds:o,variableName:i,shaderDestination:tce(o),featureIdDefine:ece(o)}):(o=Qt.getFeatureIdsByLabel(n.featureIds,e.featureIdLabel),i=o.label??o.positionalLabel,{featureIds:o,variableName:i,shaderDestination:tce(o),featureIdDefine:ece(o)})}function KHe(e){e.addStructField(PB.STRUCT_ID_SELECTED_FEATURE,"int","id"),e.addStructField(PB.STRUCT_ID_SELECTED_FEATURE,"vec2","st"),e.addStructField(PB.STRUCT_ID_SELECTED_FEATURE,"vec4","color")}var nE=PB;var ca={name:"GeometryPipelineStage",STRUCT_ID_PROCESSED_ATTRIBUTES_VS:"ProcessedAttributesVS",STRUCT_ID_PROCESSED_ATTRIBUTES_FS:"ProcessedAttributesFS",STRUCT_NAME_PROCESSED_ATTRIBUTES:"ProcessedAttributes",FUNCTION_ID_INITIALIZE_ATTRIBUTES:"initializeAttributes",FUNCTION_SIGNATURE_INITIALIZE_ATTRIBUTES:"void initializeAttributes(out ProcessedAttributes attributes)",FUNCTION_ID_SET_DYNAMIC_VARYINGS_VS:"setDynamicVaryingsVS",FUNCTION_ID_SET_DYNAMIC_VARYINGS_FS:"setDynamicVaryingsFS",FUNCTION_SIGNATURE_SET_DYNAMIC_VARYINGS:"void setDynamicVaryings(inout ProcessedAttributes attributes)"};ca.process=function(e,t,n){let{shaderBuilder:i,model:o}=e;i.addStruct(ca.STRUCT_ID_PROCESSED_ATTRIBUTES_VS,"ProcessedAttributes",pe.VERTEX),i.addStruct(ca.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"ProcessedAttributes",pe.FRAGMENT),i.addStruct(nE.STRUCT_ID_SELECTED_FEATURE,nE.STRUCT_NAME_SELECTED_FEATURE,pe.BOTH),i.addFunction(ca.FUNCTION_ID_INITIALIZE_ATTRIBUTES,ca.FUNCTION_SIGNATURE_INITIALIZE_ATTRIBUTES,pe.VERTEX),i.addVarying("vec3","v_positionWC"),i.addVarying("vec3","v_positionEC"),i.addStructField(ca.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"vec3","positionWC"),i.addStructField(ca.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"vec3","positionEC"),i.addFunction(ca.FUNCTION_ID_SET_DYNAMIC_VARYINGS_VS,ca.FUNCTION_SIGNATURE_SET_DYNAMIC_VARYINGS,pe.VERTEX),i.addFunction(ca.FUNCTION_ID_SET_DYNAMIC_VARYINGS_FS,ca.FUNCTION_SIGNATURE_SET_DYNAMIC_VARYINGS,pe.FRAGMENT),o.type===Nr.TILE_PNTS&&i.addDefine("HAS_SRGB_COLOR",void 0,pe.FRAGMENT);let r=n.mode!==ie.SCENE3D&&!n.scene3DOnly&&o._projectTo2D,s=l(e.runtimeNode.node.instances),a=r&&!s,c=t.attributes.length;for(let u=0;u<c;u++){let f=t.attributes[u],h=Ht.getAttributeLocationCount(f.type),A=f.semantic===ct.POSITION,g;h>1?(g=e.attributeIndex,e.attributeIndex+=h):A&&!a?g=0:g=e.attributeIndex++,XHe(e,f,g,h,r,s)}r5e(i,t.attributes),t.primitiveType===Me.POINTS&&i.addDefine("PRIMITIVE_TYPE_POINTS"),i.addVertexLines(M2),i.addFragmentLines(R2)};function XHe(e,t,n,i,o,r){let s=e.shaderBuilder,a=Qt.getAttributeInfo(t),c=o&&!r;i>1?$He(e,t,n,i):ZHe(e,t,n,c),t5e(s,a,c),e5e(s,a),l(t.semantic)&&JHe(s,t),n5e(s,a,o),i5e(s,a,c),o5e(s,a)}function JHe(e,t){let{semantic:n,setIndex:i}=t;switch(n){case ct.NORMAL:e.addDefine("HAS_NORMALS");break;case ct.TANGENT:e.addDefine("HAS_TANGENTS");break;case ct.FEATURE_ID:e.addDefine(`HAS${n}_${i}`);break;case ct.TEXCOORD:case ct.COLOR:e.addDefine(`HAS_${n}_${i}`)}}function ZHe(e,t,n,i){let{quantization:o,semantic:r,setIndex:s}=t,{type:a,componentDatatype:c}=l(o)?o:t;r===ct.FEATURE_ID&&s>=e.featureIdVertexAttributeSetIndex&&(e.featureIdVertexAttributeSetIndex=s+1);let u=r===ct.POSITION,f=u?0:n,h=Ht.getNumberOfComponents(a),A={index:f,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,count:t.count,componentsPerAttribute:h,componentDatatype:c,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};if(e.attributes.push(A),!u||!i)return;let g=e.runtimePrimitive.positionBuffer2D,m={index:n,vertexBuffer:g,count:t.count,componentsPerAttribute:h,componentDatatype:q.FLOAT,offsetInBytes:0,strideInBytes:void 0,normalize:t.normalized};e.attributes.push(m)}function $He(e,t,n,i){let{quantization:o,normalized:r}=t,{type:s,componentDatatype:a}=l(o)?o:t,u=Ht.getNumberOfComponents(s)/i,f=q.getSizeInBytes(a),h=u*f,A=t.byteStride;for(let g=0;g<i;g++){let m=t.byteOffset+g*h,_={index:n+g,vertexBuffer:t.buffer,componentsPerAttribute:u,componentDatatype:a,offsetInBytes:m,strideInBytes:A,normalize:r};e.attributes.push(_)}}function e5e(e,t){let n=t.variableName,i=`v_${n}`,o;n==="normalMC"?(i="v_normalEC",o=t.glslType):n==="tangentMC"?(o="vec3",i="v_tangentEC"):o=t.glslType,e.addVarying(o,i)}function t5e(e,t,n){let i=t.attribute.semantic,o=t.variableName,r,s;t.isQuantized?(r=`a_quantized_${o}`,s=t.quantizedGlslType):(r=`a_${o}`,s=t.glslType);let a=i===ct.POSITION;a?e.setPositionAttribute(s,r):e.addAttribute(s,r),a&&n&&e.addAttribute("vec3","a_position2D")}function n5e(e,t,n){let i=ca.STRUCT_ID_PROCESSED_ATTRIBUTES_VS,o=ca.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,{variableName:r,glslType:s}=t;r==="tangentMC"?(e.addStructField(i,"vec3","tangentMC"),e.addStructField(i,"float","tangentSignMC"),e.addStructField(o,"vec3","tangentEC")):r==="normalMC"?(e.addStructField(i,"vec3","normalMC"),e.addStructField(o,"vec3","normalEC")):(e.addStructField(i,s,r),e.addStructField(o,s,r)),r==="positionMC"&&n&&e.addStructField(i,"vec3","position2D")}function i5e(e,t,n){let i=ca.FUNCTION_ID_INITIALIZE_ATTRIBUTES,o=t.variableName;if(o==="positionMC"&&n&&e.addFunctionLines(i,["attributes.position2D = a_position2D;"]),t.isQuantized)return;let s=[];o==="tangentMC"?(s.push("attributes.tangentMC = a_tangentMC.xyz;"),s.push("attributes.tangentSignMC = a_tangentMC.w;")):s.push(`attributes.${o} = a_${o};`),e.addFunctionLines(i,s)}function o5e(e,t){let{semantic:n,setIndex:i}=t.attribute;if(l(n)&&!l(i))return;let o=ca.FUNCTION_ID_SET_DYNAMIC_VARYINGS_VS,r=t.variableName,s=`v_${r} = attributes.${r};`;e.addFunctionLines(o,[s]),o=ca.FUNCTION_ID_SET_DYNAMIC_VARYINGS_FS,s=`attributes.${r} = v_${r};`,e.addFunctionLines(o,[s])}function r5e(e,t){let n=!1,i=!1;for(let o=0;o<t.length;o++){let r=t[o];r.semantic===ct.NORMAL?n=!0:r.semantic===ct.TANGENT&&(i=!0)}!n||!i||(e.addDefine("HAS_BITANGENTS"),e.addVarying("vec3","v_bitangentEC"),e.addStructField(ca.STRUCT_ID_PROCESSED_ATTRIBUTES_VS,"vec3","bitangentMC"),e.addStructField(ca.STRUCT_ID_PROCESSED_ATTRIBUTES_FS,"vec3","bitangentEC"))}var N2=ca;function g_(e){if(e=e??V.EMPTY_OBJECT,this._ellipsoid=e.ellipsoid??te.default,this._numberOfLevelZeroTilesX=e.numberOfLevelZeroTilesX??1,this._numberOfLevelZeroTilesY=e.numberOfLevelZeroTilesY??1,this._projection=new Yi(this._ellipsoid),l(e.rectangleSouthwestInMeters)&&l(e.rectangleNortheastInMeters))this._rectangleSouthwestInMeters=e.rectangleSouthwestInMeters,this._rectangleNortheastInMeters=e.rectangleNortheastInMeters;else{let i=this._ellipsoid.maximumRadius*Math.PI;this._rectangleSouthwestInMeters=new k(-i,-i),this._rectangleNortheastInMeters=new k(i,i)}let t=this._projection.unproject(this._rectangleSouthwestInMeters),n=this._projection.unproject(this._rectangleNortheastInMeters);this._rectangle=new ae(t.longitude,t.latitude,n.longitude,n.latitude)}Object.defineProperties(g_.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},rectangle:{get:function(){return this._rectangle}},projection:{get:function(){return this._projection}}});g_.prototype.getNumberOfXTilesAtLevel=function(e){return this._numberOfLevelZeroTilesX<<e};g_.prototype.getNumberOfYTilesAtLevel=function(e){return this._numberOfLevelZeroTilesY<<e};g_.prototype.rectangleToNativeRectangle=function(e,t){let n=this._projection,i=n.project(ae.southwest(e)),o=n.project(ae.northeast(e));return l(t)?(t.west=i.x,t.south=i.y,t.east=o.x,t.north=o.y,t):new ae(i.x,i.y,o.x,o.y)};g_.prototype.tileXYToNativeRectangle=function(e,t,n,i){let o=this.getNumberOfXTilesAtLevel(n),r=this.getNumberOfYTilesAtLevel(n),s=(this._rectangleNortheastInMeters.x-this._rectangleSouthwestInMeters.x)/o,a=this._rectangleSouthwestInMeters.x+e*s,c=this._rectangleSouthwestInMeters.x+(e+1)*s,u=(this._rectangleNortheastInMeters.y-this._rectangleSouthwestInMeters.y)/r,f=this._rectangleNortheastInMeters.y-t*u,h=this._rectangleNortheastInMeters.y-(t+1)*u;return l(i)?(i.west=a,i.south=h,i.east=c,i.north=f,i):new ae(a,h,c,f)};g_.prototype.tileXYToRectangle=function(e,t,n,i){let o=this.tileXYToNativeRectangle(e,t,n,i),r=this._projection,s=r.unproject(new k(o.west,o.south)),a=r.unproject(new k(o.east,o.north));return o.west=s.longitude,o.south=s.latitude,o.east=a.longitude,o.north=a.latitude,o};g_.prototype.positionToTileXY=function(e,t,n){let i=this._rectangle;if(!ae.contains(i,e))return;let o=this.getNumberOfXTilesAtLevel(t),r=this.getNumberOfYTilesAtLevel(t),a=(this._rectangleNortheastInMeters.x-this._rectangleSouthwestInMeters.x)/o,u=(this._rectangleNortheastInMeters.y-this._rectangleSouthwestInMeters.y)/r,h=this._projection.project(e),A=h.x-this._rectangleSouthwestInMeters.x,g=this._rectangleNortheastInMeters.y-h.y,m=A/a|0;m>=o&&(m=o-1);let _=g/u|0;return _>=r&&(_=r-1),l(n)?(n.x=m,n.y=_,n):new k(m,_)};var ws=g_;var JW,nce="AAPTxy8BH1VEsoebNVZXo8HurEOF051kAEKlhkOhBEc9BmRpOZfBt2Ic5blmnx9xwwyG_Mt0EmBxpEa6xCqXn5V_qFEgJ0edE9ixiefKjMiv986NGSn2HB8y6x0GtSOCBkg19K6rBgZ7Upl7ABEnaFh4dD73GW0gUAJ9hHWhqd1qgHkBuctWiFEJUmQjs_52tdx6l5bDGoeXVvmelklmEJOshCRV_s3kLPC19ENRNLc18eA.AT1_EXUMUBsi",wx={};wx.defaultAccessToken=nce;wx.defaultWorldImageryServer=new we({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/World_Imagery/MapServer"});wx.defaultWorldHillshadeServer=new we({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Elevation/World_Hillshade/MapServer"});wx.defaultWorldOceanServer=new we({url:"https://ibasemaps-api.arcgis.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer"});wx.getDefaultTokenCredit=function(e){if(e===nce){if(!l(JW)){let t='<b> This application is using a default ArcGIS access token. Please assign <i>Cesium.ArcGisMapService.defaultAccessToken</i> with an API key from your ArcGIS Developer account before using the ArcGIS tile services. You can sign up for a free ArcGIS Developer account at <a href="https://developers.arcgis.com/">https://developers.arcgis.com/</a>.</b>';JW=new Dt(t,!0)}return JW}};var kf=wx;function ZW(e){e=e??V.EMPTY_OBJECT,this._pixelsToCheck=e.pixelsToCheck,this._missingImagePixels=void 0,this._missingImageByteLength=void 0,this._isReady=!1;let t=we.createIfNeeded(e.missingImageUrl),n=this;function i(r){l(r.blob)&&(n._missingImageByteLength=r.blob.size);let s=qh(r);if(e.disableCheckIfAllPixelsAreTransparent){let a=!0,c=r.width,u=e.pixelsToCheck;for(let f=0,h=u.length;a&&f<h;++f){let A=u[f],g=A.x*4+A.y*c;s[g+3]>0&&(a=!1)}a&&(s=void 0)}n._missingImagePixels=s,n._isReady=!0}function o(){n._missingImagePixels=void 0,n._isReady=!0}t.fetchImage({preferBlob:!0,preferImageBitmap:!0,flipY:!0}).then(i).catch(o)}ZW.prototype.isReady=function(){return this._isReady};ZW.prototype.shouldDiscardImage=function(e){let t=this._pixelsToCheck,n=this._missingImagePixels;if(!l(n)||l(e.blob)&&e.blob.size!==this._missingImageByteLength)return!1;let i=qh(e),o=e.width;for(let r=0,s=t.length;r<s;++r){let a=t[r],c=a.x*4+a.y*o;for(let u=0;u<4;++u){let f=c+u;if(i[f]!==n[f])return!1}}return!0};var L2=ZW;function $W(){this.name=void 0,this.description=void 0,this.position=void 0,this.data=void 0,this.imageryLayer=void 0}$W.prototype.configureNameFromProperties=function(e){let t=10,n;for(let i in e)if(e.hasOwnProperty(i)&&e[i]){let o=i.toLowerCase();t>1&&o==="name"?(t=1,n=i):t>2&&o==="title"?(t=2,n=i):t>3&&/name/i.test(i)?(t=3,n=i):t>4&&/title/i.test(i)&&(t=4,n=i)}l(n)&&(this.name=e[n])};$W.prototype.configureDescriptionFromProperties=function(e){function t(n){let i='<table class="cesium-infoBox-defaultTable">';for(let o in n)if(n.hasOwnProperty(o)){let r=n[o];l(r)&&(typeof r=="object"?i+=`<tr><td>${o}</td><td>${t(r)}</td></tr>`:i+=`<tr><td>${o}</td><td>${r}</td></tr>`)}return i+="</table>",i}this.description=t(e)};var Dm=$W;function Bx(){me.throwInstantiationError()}Object.defineProperties(Bx.prototype,{rectangle:{get:me.throwInstantiationError},tileWidth:{get:me.throwInstantiationError},tileHeight:{get:me.throwInstantiationError},maximumLevel:{get:me.throwInstantiationError},minimumLevel:{get:me.throwInstantiationError},tilingScheme:{get:me.throwInstantiationError},tileDiscardPolicy:{get:me.throwInstantiationError},errorEvent:{get:me.throwInstantiationError},credit:{get:me.throwInstantiationError},proxy:{get:me.throwInstantiationError},hasAlphaChannel:{get:me.throwInstantiationError}});Bx.prototype.getTileCredits=function(e,t,n){me.throwInstantiationError()};Bx.prototype.requestImage=function(e,t,n,i){me.throwInstantiationError()};Bx.prototype.pickFeatures=function(e,t,n,i,o){me.throwInstantiationError()};var s5e=/\.ktx2$/i;Bx.loadImage=function(e,t){let n=we.createIfNeeded(t);return s5e.test(n.url)?Iu(n):l(e)&&l(e.tileDiscardPolicy)?n.fetchImage({preferBlob:!0,preferImageBitmap:!0,flipY:!0}):n.fetchImage({preferImageBitmap:!0,flipY:!0})};var Kl=Bx;var a5e={SATELLITE:1,OCEANS:2,HILLSHADE:3},vm=Object.freeze(a5e);function ice(e){this.useTiles=e.usePreCachedTilesIfAvailable??!0;let t=e.ellipsoid;this.tilingScheme=e.tilingScheme??new co({ellipsoid:t}),this.rectangle=e.rectangle??this.tilingScheme.rectangle,this.ellipsoid=t;let n=e.credit;typeof n=="string"&&(n=new Dt(n)),this.credit=n,this.tileCredits=void 0,this.tileDiscardPolicy=e.tileDiscardPolicy,this.tileWidth=e.tileWidth??256,this.tileHeight=e.tileHeight??256,this.maximumLevel=e.maximumLevel}ice.prototype.build=function(e){e._useTiles=this.useTiles,e._tilingScheme=this.tilingScheme,e._rectangle=this.rectangle,e._credit=this.credit,e._tileCredits=this.tileCredits,e._tileDiscardPolicy=this.tileDiscardPolicy,e._tileWidth=this.tileWidth,e._tileHeight=this.tileHeight,e._maximumLevel=this.maximumLevel,this.useTiles&&!l(this.tileDiscardPolicy)&&(e._tileDiscardPolicy=new L2({missingImageUrl:oce(e,0,0,this.maximumLevel).url,pixelsToCheck:[new k(0,0),new k(200,20),new k(20,200),new k(80,110),new k(160,130)],disableCheckIfAllPixelsAreTransparent:!0}))};function c5e(e,t){let n=e.tileInfo;if(!l(n))t.useTiles=!1;else{if(t.tileWidth=n.rows,t.tileHeight=n.cols,n.spatialReference.wkid===102100||n.spatialReference.wkid===102113)t.tilingScheme=new ws({ellipsoid:t.ellipsoid});else if(e.tileInfo.spatialReference.wkid===4326)t.tilingScheme=new co({ellipsoid:t.ellipsoid});else{let i=`Tile spatial reference WKID ${e.tileInfo.spatialReference.wkid} is not supported.`;throw new ce(i)}if(t.maximumLevel=e.tileInfo.lods.length-1,l(e.fullExtent)){if(l(e.fullExtent.spatialReference)&&l(e.fullExtent.spatialReference.wkid))if(e.fullExtent.spatialReference.wkid===102100||e.fullExtent.spatialReference.wkid===102113){let i=new Yi,o=e.fullExtent,r=i.unproject(new d(Math.max(o.xmin,-t.tilingScheme.ellipsoid.maximumRadius*Math.PI),Math.max(o.ymin,-t.tilingScheme.ellipsoid.maximumRadius*Math.PI),0)),s=i.unproject(new d(Math.min(o.xmax,t.tilingScheme.ellipsoid.maximumRadius*Math.PI),Math.min(o.ymax,t.tilingScheme.ellipsoid.maximumRadius*Math.PI),0));t.rectangle=new ae(r.longitude,r.latitude,s.longitude,s.latitude)}else if(e.fullExtent.spatialReference.wkid===4326)t.rectangle=ae.fromDegrees(e.fullExtent.xmin,e.fullExtent.ymin,e.fullExtent.xmax,e.fullExtent.ymax);else{let i=`fullExtent.spatialReference WKID ${e.fullExtent.spatialReference.wkid} is not supported.`;throw new ce(i)}}else t.rectangle=t.tilingScheme.rectangle;t.useTiles=!0}l(e.copyrightText)&&e.copyrightText.length>0&&(l(t.credit)?t.tileCredits=[new Dt(e.copyrightText)]:t.credit=new Dt(e.copyrightText))}function l5e(e,t){let n=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(n+=`: ${t.message}`),new ce(n)}async function u5e(e,t){let n=e.getDerivedResource({queryParameters:{f:"json"}});try{let i=await n.fetchJson();c5e(i,t)}catch(i){l5e(e,i)}}function Pm(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._maximumLevel=e.maximumLevel,this._tilingScheme=e.tilingScheme??new co({ellipsoid:e.ellipsoid}),this._useTiles=e.usePreCachedTilesIfAvailable??!0,this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._layers=e.layers,this._credit=e.credit,this._tileCredits=void 0;let t=e.credit;typeof t=="string"&&(t=new Dt(t)),this.enablePickFeatures=e.enablePickFeatures??!0,this._errorEvent=new _e}Pm.fromBasemapType=async function(e,t){t=t??V.EMPTY_OBJECT;let n,i,o;switch(e){case vm.SATELLITE:{n=t.token??kf.defaultAccessToken,i=we.createIfNeeded(kf.defaultWorldImageryServer),i.appendForwardSlash();let r=kf.getDefaultTokenCredit(n);l(r)&&(o=Dt.clone(r))}break;case vm.OCEANS:{n=t.token??kf.defaultAccessToken,i=we.createIfNeeded(kf.defaultWorldOceanServer),i.appendForwardSlash();let r=kf.getDefaultTokenCredit(n);l(r)&&(o=Dt.clone(r))}break;case vm.HILLSHADE:{n=t.token??kf.defaultAccessToken,i=we.createIfNeeded(kf.defaultWorldHillshadeServer),i.appendForwardSlash();let r=kf.getDefaultTokenCredit(n);l(r)&&(o=Dt.clone(r))}break;default:}return Pm.fromUrl(i,{...t,token:n,credit:o,usePreCachedTilesIfAvailable:!0})};function oce(e,t,n,i,o){let r;if(e._useTiles)r=e._resource.getDerivedResource({url:`tile/${i}/${n}/${t}`,request:o});else{let s=e._tilingScheme.tileXYToNativeRectangle(t,n,i),c={bbox:`${s.west},${s.south},${s.east},${s.north}`,size:`${e._tileWidth},${e._tileHeight}`,format:"png32",transparent:!0,f:"image"};e._tilingScheme.projection instanceof Hi?(c.bboxSR=4326,c.imageSR=4326):(c.bboxSR=3857,c.imageSR=3857),e.layers&&(c.layers=`show:${e.layers}`),r=e._resource.getDerivedResource({url:"export",request:o,queryParameters:c})}return r}Object.defineProperties(Pm.prototype,{url:{get:function(){return this._resource._url}},token:{get:function(){return this._resource.queryParameters.token}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},usingPrecachedTiles:{get:function(){return this._useTiles}},hasAlphaChannel:{get:function(){return!0}},layers:{get:function(){return this._layers}}});Pm.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=we.createIfNeeded(e);n.appendForwardSlash(),l(t.token)&&n.setQueryParameters({token:t.token});let i=new Pm(t);i._resource=n;let o=new ice(t);return(t.usePreCachedTilesIfAvailable??!0)&&await u5e(n,o),o.build(i),i};Pm.prototype.getTileCredits=function(e,t,n){return this._tileCredits};Pm.prototype.requestImage=function(e,t,n,i){return Kl.loadImage(this,oce(this,e,t,n,i))};Pm.prototype.pickFeatures=function(e,t,n,i,o){if(!this.enablePickFeatures)return;let r=this._tilingScheme.tileXYToNativeRectangle(e,t,n),s,a,c;if(this._tilingScheme.projection instanceof Hi)s=D.toDegrees(i),a=D.toDegrees(o),c="4326";else{let A=this._tilingScheme.projection.project(new Ae(i,o,0));s=A.x,a=A.y,c="3857"}let u="visible";l(this._layers)&&(u+=`:${this._layers}`);let f={f:"json",tolerance:2,geometryType:"esriGeometryPoint",geometry:`${s},${a}`,mapExtent:`${r.west},${r.south},${r.east},${r.north}`,imageDisplay:`${this._tileWidth},${this._tileHeight},96`,sr:c,layers:u};return this._resource.getDerivedResource({url:"identify",queryParameters:f}).fetchJson().then(function(A){let g=[],m=A.results;if(!l(m))return g;for(let _=0;_<m.length;++_){let y=m[_],C=new Dm;if(C.data=y,C.name=y.value,C.properties=y.attributes,C.configureDescriptionFromProperties(y.attributes),y.geometryType==="esriGeometryPoint"&&y.geometry){let E=y.geometry.spatialReference&&y.geometry.spatialReference.wkid?y.geometry.spatialReference.wkid:4326;if(E===4326||E===4283)C.position=Ae.fromDegrees(y.geometry.x,y.geometry.y,y.geometry.z);else if(E===102100||E===900913||E===3857){let I=new Yi;C.position=I.unproject(new d(y.geometry.x,y.geometry.y,y.geometry.z))}}g.push(C)}return g})};Pm._metadataCache={};var __=Pm;function f5e(e){let t,n=e.name,i=e.message;l(n)&&l(i)?t=`${n}: ${i}`:t=e.toString();let o=e.stack;return l(o)&&(t+=` +${o}`),t}var up=f5e;function O2(e,t,n,i,o,r,s){this.provider=e,this.message=t,this.x=n,this.y=i,this.level=o,this.timesRetried=r??0,this.retry=!1,this.error=s}O2.reportError=function(e,t,n,i,o,r,s,a){let c=e;return l(e)?(c.provider=t,c.message=i,c.x=o,c.y=r,c.level=s,c.retry=!1,c.error=a,++c.timesRetried):c=new O2(t,i,o,r,s,0,a),l(n)&&n.numberOfListeners>0?n.raiseEvent(c):l(t)&&console.log(`An error occurred in "${t.constructor.name}": ${up(i)}`),c};O2.reportSuccess=function(e){l(e)&&(e.timesRetried=-1)};var zo=O2;var d5e={AERIAL:"Aerial",AERIAL_WITH_LABELS:"AerialWithLabels",AERIAL_WITH_LABELS_ON_DEMAND:"AerialWithLabelsOnDemand",ROAD:"Road",ROAD_ON_DEMAND:"RoadOnDemand",CANVAS_DARK:"CanvasDark",CANVAS_LIGHT:"CanvasLight",CANVAS_GRAY:"CanvasGray",ORDNANCE_SURVEY:"OrdnanceSurvey",COLLINS_BART:"CollinsBart"},RB=Object.freeze(d5e);function MB(e){}MB.prototype.isReady=function(){return!0};MB.prototype.shouldDiscardImage=function(e){return MB.EMPTY_IMAGE===e};var F2;Object.defineProperties(MB,{EMPTY_IMAGE:{get:function(){return l(F2)||(F2=new Image,F2.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="),F2}}});var NB=MB;function rce(e){this.tileWidth=void 0,this.tileHeight=void 0,this.maximumLevel=void 0,this.imageUrlSubdomains=void 0,this.imageUrlTemplate=void 0,this.attributionList=void 0}rce.prototype.build=function(e){e._tileWidth=this.tileWidth,e._tileHeight=this.tileHeight,e._maximumLevel=this.maximumLevel,e._imageUrlSubdomains=this.imageUrlSubdomains,e._imageUrlTemplate=this.imageUrlTemplate;let t=e._attributionList=this.attributionList;t||(t=[]),e._attributionList=t;for(let n=0,i=t.length;n<i;++n){let o=t[n];if(o.credit instanceof Dt)break;o.credit=new Dt(o.attribution);let r=o.coverageAreas;for(let s=0,a=o.coverageAreas.length;s<a;++s){let c=r[s],u=c.bbox;c.bbox=new ae(D.toRadians(u[1]),D.toRadians(u[0]),D.toRadians(u[3]),D.toRadians(u[2]))}}};function h5e(e,t){if(e.resourceSets.length!==1)throw new ce("metadata does not specify one resource in resourceSets");let n=e.resourceSets[0].resources[0];t.tileWidth=n.imageWidth,t.tileHeight=n.imageHeight,t.maximumLevel=n.zoomMax-1,t.imageUrlSubdomains=n.imageUrlSubdomains,t.imageUrlTemplate=n.imageUrl;let i=n.imageryProviders;l(n.imageryProviders)&&(i=n.imageryProviders.filter(o=>o.coverageAreas?.some(r=>l(r.bbox)))),t.attributionList=i}function m5e(e,t,n){let i=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(i+=`: ${t.message}`),zo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i,void 0,void 0,void 0,t),new ce(i)}async function A5e(e,t,n){let i=e.url,o=Ws._metadataCache[i];l(o)||(o=e.fetchJsonp("jsonp"),Ws._metadataCache[i]=o);try{let r=await o;return h5e(r,t)}catch(r){m5e(e,r,n)}}function Ws(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=1,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._mapStyle=e.mapStyle??RB.AERIAL,this._mapLayer=e.mapLayer,this._culture=e.culture??"",this._key=e.key,this._tileDiscardPolicy=e.tileDiscardPolicy,l(this._tileDiscardPolicy)||(this._tileDiscardPolicy=new NB),this._proxy=e.proxy,this._credit=new Dt(`<a href="https://www.microsoft.com/en-us/maps/bing-maps/product"><img src="${Ws.logoUrl}" title="Bing Imagery"/></a>`),this._tilingScheme=new ws({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,ellipsoid:e.ellipsoid}),this._tileWidth=void 0,this._tileHeight=void 0,this._maximumLevel=void 0,this._imageUrlTemplate=void 0,this._imageUrlSubdomains=void 0,this._attributionList=void 0,this._errorEvent=new _e}Object.defineProperties(Ws.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},key:{get:function(){return this._key}},mapStyle:{get:function(){return this._mapStyle}},mapLayer:{get:function(){return this._mapLayer}},culture:{get:function(){return this._culture}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return l(this.mapLayer)}}});Ws.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=t.tileProtocol;l(n)?n.length>0&&n[n.length-1]===":"&&(n=n.substr(0,n.length-1)):n=document.location.protocol==="http:"?"http":"https";let i=t.mapStyle??RB.AERIAL,o=we.createIfNeeded(e);o.appendForwardSlash();let r={incl:"ImageryProviders",key:t.key,uriScheme:n};l(t.mapLayer)&&(r.mapLayer=t.mapLayer),l(t.culture)&&(r.culture=t.culture);let s=o.getDerivedResource({url:`REST/v1/Imagery/Metadata/${i}`,queryParameters:r}),a=new Ws(t);a._resource=o;let c=new rce(t);return await A5e(s,c),c.build(a),a};var p5e=new ae;Ws.prototype.getTileCredits=function(e,t,n){let i=this._tilingScheme.tileXYToRectangle(e,t,n,p5e);return y5e(this._attributionList,n,i)};Ws.prototype.requestImage=function(e,t,n,i){let o=Kl.loadImage(this,g5e(this,e,t,n,i));if(l(o))return o.catch(function(r){return l(r.blob)&&r.blob.size===0?NB.EMPTY_IMAGE:Promise.reject(r)})};Ws.prototype.pickFeatures=function(e,t,n,i,o){};Ws.tileXYToQuadKey=function(e,t,n){let i="";for(let o=n;o>=0;--o){let r=1<<o,s=0;(e&r)!==0&&(s|=1),(t&r)!==0&&(s|=2),i+=s}return i};Ws.quadKeyToTileXY=function(e){let t=0,n=0,i=e.length-1;for(let o=i;o>=0;--o){let r=1<<o,s=+e[i-o];(s&1)!==0&&(t|=r),(s&2)!==0&&(n|=r)}return{x:t,y:n,level:i}};Ws._logoUrl=void 0;Object.defineProperties(Ws,{logoUrl:{get:function(){return l(Ws._logoUrl)||(Ws._logoUrl=fn("Assets/Images/bing_maps_credit.png")),Ws._logoUrl},set:function(e){Ws._logoUrl=e}}});function g5e(e,t,n,i,o){let r=e._imageUrlTemplate,s=e._imageUrlSubdomains,a=(t+n+i)%s.length;return e._resource.getDerivedResource({url:r,request:o,templateValues:{quadkey:Ws.tileXYToQuadKey(t,n,i),subdomain:s[a],culture:e._culture},queryParameters:{n:"z"}})}var _5e=new ae;function y5e(e,t,n){++t;let i=[];for(let o=0,r=e.length;o<r;++o){let s=e[o],a=s.coverageAreas,c=!1;for(let u=0,f=s.coverageAreas.length;!c&&u<f;++u){let h=a[u];if(t>=h.zoomMin&&t<=h.zoomMax){let A=ae.intersection(n,h.bbox,_5e);l(A)&&(c=!0)}}c&&i.push(s.credit)}return i}Ws._metadataCache={};var Q2=Ws;var sce=/{[^}]+}/g,ace={x:x5e,y:T5e,z:B5e,s:D5e,reverseX:b5e,reverseY:S5e,reverseZ:w5e,westDegrees:v5e,southDegrees:P5e,eastDegrees:R5e,northDegrees:M5e,westProjected:N5e,southProjected:L5e,eastProjected:O5e,northProjected:F5e,width:Q5e,height:k5e},C5e=wt(ace,{i:U5e,j:G5e,reverseI:z5e,reverseJ:V5e,longitudeDegrees:W5e,latitudeDegrees:j5e,longitudeProjected:Y5e,latitudeProjected:q5e,format:X5e});function LB(e){e=e??V.EMPTY_OBJECT,this._errorEvent=new _e;let t=we.createIfNeeded(e.url),n=we.createIfNeeded(e.pickFeaturesUrl);this._resource=t,this._urlSchemeZeroPadding=e.urlSchemeZeroPadding,this._getFeatureInfoFormats=e.getFeatureInfoFormats,this._pickFeaturesResource=n;let i=e.subdomains;Array.isArray(i)?i=i.slice():l(i)&&i.length>0?i=i.split(""):i=["a","b","c"],this._subdomains=i,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._minimumLevel=e.minimumLevel??0,this._maximumLevel=e.maximumLevel,this._tilingScheme=e.tilingScheme??new ws({ellipsoid:e.ellipsoid}),this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._rectangle=ae.intersection(this._rectangle,this._tilingScheme.rectangle),this._tileDiscardPolicy=e.tileDiscardPolicy;let o=e.credit;typeof o=="string"&&(o=new Dt(o)),this._credit=o,this._hasAlphaChannel=e.hasAlphaChannel??!0;let r=e.customTags,s=wt(ace,r),a=wt(C5e,r);this._tags=s,this._pickFeaturesTags=a,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this.enablePickFeatures=e.enablePickFeatures??!0}Object.defineProperties(LB.prototype,{url:{get:function(){return this._resource.url}},urlSchemeZeroPadding:{get:function(){return this._urlSchemeZeroPadding}},pickFeaturesUrl:{get:function(){return this._pickFeaturesResource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return this._hasAlphaChannel}}});LB.prototype.getTileCredits=function(e,t,n){};LB.prototype.requestImage=function(e,t,n,i){return Kl.loadImage(this,E5e(this,e,t,n,i))};LB.prototype.pickFeatures=function(e,t,n,i,o){if(!this.enablePickFeatures||!l(this._pickFeaturesResource)||this._getFeatureInfoFormats.length===0)return;let r=0,s=this;function a(u,f){return u.callback(f)}function c(){if(r>=s._getFeatureInfoFormats.length)return Promise.resolve([]);let u=s._getFeatureInfoFormats[r],f=I5e(s,e,t,n,i,o,u.format);return++r,u.type==="json"?f.fetchJson().then(u.callback).catch(c):u.type==="xml"?f.fetchXML().then(u.callback).catch(c):u.type==="text"||u.type==="html"?f.fetchText().then(u.callback).catch(c):f.fetch({responseType:u.format}).then(a.bind(void 0,u)).catch(c)}return c()};var k2=!1,Ru=new ae,U2=!1,OB=new ae;function E5e(e,t,n,i,o){k2=!1,U2=!1;let r=e._resource,s=r.getUrlComponent(!0),a=e._tags,c={},u=s.match(sce);return l(u)&&u.forEach(function(f){let h=f.substring(1,f.length-1);l(a[h])&&(c[h]=a[h](e,t,n,i))}),r.getDerivedResource({request:o,templateValues:c})}var ej=!1,vx=new k,tj=!1;function I5e(e,t,n,i,o,r,s){k2=!1,U2=!1,ej=!1,tj=!1;let a=e._pickFeaturesResource,c=a.getUrlComponent(!0),u=e._pickFeaturesTags,f={},h=c.match(sce);return l(h)&&h.forEach(function(A){let g=A.substring(1,A.length-1);l(u[g])&&(f[g]=u[g](e,t,n,i,o,r,s))}),a.getDerivedResource({templateValues:f})}function Px(e,t,n){if(e&&e.urlSchemeZeroPadding&&e.urlSchemeZeroPadding.hasOwnProperty(t)){let i=e.urlSchemeZeroPadding[t];if(typeof i=="string"){let o=i.length;o>1&&(n=n.length>=o?n:new Array(o-n.toString().length+1).join("0")+n)}}return n}function x5e(e,t,n,i){return Px(e,"{x}",t)}function b5e(e,t,n,i){let o=e.tilingScheme.getNumberOfXTilesAtLevel(i)-t-1;return Px(e,"{reverseX}",o)}function T5e(e,t,n,i){return Px(e,"{y}",n)}function S5e(e,t,n,i){let o=e.tilingScheme.getNumberOfYTilesAtLevel(i)-n-1;return Px(e,"{reverseY}",o)}function w5e(e,t,n,i){let o=e.maximumLevel,r=l(o)&&i<o?o-i-1:i;return Px(e,"{reverseZ}",r)}function B5e(e,t,n,i){return Px(e,"{z}",i)}function D5e(e,t,n,i){let o=(t+n+i)%e._subdomains.length;return e._subdomains[o]}function G2(e,t,n,i){k2||(e.tilingScheme.tileXYToRectangle(t,n,i,Ru),Ru.west=D.toDegrees(Ru.west),Ru.south=D.toDegrees(Ru.south),Ru.east=D.toDegrees(Ru.east),Ru.north=D.toDegrees(Ru.north),k2=!0)}function v5e(e,t,n,i){return G2(e,t,n,i),Ru.west}function P5e(e,t,n,i){return G2(e,t,n,i),Ru.south}function R5e(e,t,n,i){return G2(e,t,n,i),Ru.east}function M5e(e,t,n,i){return G2(e,t,n,i),Ru.north}function z2(e,t,n,i){U2||(e.tilingScheme.tileXYToNativeRectangle(t,n,i,OB),U2=!0)}function N5e(e,t,n,i){return z2(e,t,n,i),OB.west}function L5e(e,t,n,i){return z2(e,t,n,i),OB.south}function O5e(e,t,n,i){return z2(e,t,n,i),OB.east}function F5e(e,t,n,i){return z2(e,t,n,i),OB.north}function Q5e(e,t,n,i){return e.tileWidth}function k5e(e,t,n,i){return e.tileHeight}function U5e(e,t,n,i,o,r,s){return V2(e,t,n,i,o,r),vx.x}function G5e(e,t,n,i,o,r,s){return V2(e,t,n,i,o,r),vx.y}function z5e(e,t,n,i,o,r,s){return V2(e,t,n,i,o,r),e.tileWidth-vx.x-1}function V5e(e,t,n,i,o,r,s){return V2(e,t,n,i,o,r),e.tileHeight-vx.y-1}var H5e=new ae,Dx=new d;function V2(e,t,n,i,o,r,s){if(ej)return;nj(e,t,n,i,o,r);let a=Dx,c=e.tilingScheme.tileXYToNativeRectangle(t,n,i,H5e);vx.x=e.tileWidth*(a.x-c.west)/c.width|0,vx.y=e.tileHeight*(c.north-a.y)/c.height|0,ej=!0}function W5e(e,t,n,i,o,r,s){return D.toDegrees(o)}function j5e(e,t,n,i,o,r,s){return D.toDegrees(r)}function Y5e(e,t,n,i,o,r,s){return nj(e,t,n,i,o,r),Dx.x}function q5e(e,t,n,i,o,r,s){return nj(e,t,n,i,o,r),Dx.y}var K5e=new Ae;function nj(e,t,n,i,o,r,s){if(!tj){if(e.tilingScheme.projection instanceof Hi)Dx.x=D.toDegrees(o),Dx.y=D.toDegrees(r);else{let a=K5e;a.longitude=o,a.latitude=r,e.tilingScheme.projection.project(a,Dx)}tj=!0}}function X5e(e,t,n,i,o,r,s){return s}var vc=LB;function Uf(e){vc.call(this,e)}Uf._requestMetadata=async function(e,t,n,i){try{let o=await n.fetchXML();return Uf._metadataSuccess(o,e,t,n,i)}catch(o){if(o instanceof vA)return Uf._metadataFailure(e,t);throw o}};Uf.fromUrl=async function(e,t){let n=we.createIfNeeded(e);n.appendForwardSlash();let i=n,o=n.getDerivedResource({url:"tilemapresource.xml"});t=t??V.EMPTY_OBJECT;let r=await Uf._requestMetadata(t,i,o);return new Uf(r)};l(Object.create)&&(Uf.prototype=Object.create(vc.prototype),Uf.prototype.constructor=Uf);function cce(e,t){return e.west<t.rectangle.west&&(e.west=t.rectangle.west),e.east>t.rectangle.east&&(e.east=t.rectangle.east),e.south<t.rectangle.south&&(e.south=t.rectangle.south),e.north>t.rectangle.north&&(e.north=t.rectangle.north),e}function lce(e,t,n){let i=e.positionToTileXY(ae.southwest(t),n),o=e.positionToTileXY(ae.northeast(t),n);return(Math.abs(o.x-i.x)+1)*(Math.abs(o.y-i.y)+1)>4?0:n}Uf._metadataSuccess=function(e,t,n,i,o){let r=/tileformat/i,s=/tileset/i,a=/tilesets/i,c=/boundingbox/i,u,f,h,A=[],g=e.childNodes[0].childNodes;for(let P=0;P<g.length;P++)if(r.test(g.item(P).nodeName))u=g.item(P);else if(a.test(g.item(P).nodeName)){h=g.item(P);let N=g.item(P).childNodes;for(let L=0;L<N.length;L++)s.test(N.item(L).nodeName)&&A.push(N.item(L))}else c.test(g.item(P).nodeName)&&(f=g.item(P));let m;if(!l(h)||!l(f))throw m=`Unable to find expected tilesets or bbox attributes in ${i.url}.`,l(o)&&zo.reportError(void 0,o,o.errorEvent,m),new ce(m);let _=t.fileExtension??u.getAttribute("extension"),y=t.tileWidth??parseInt(u.getAttribute("width"),10),C=t.tileHeight??parseInt(u.getAttribute("height"),10),E=t.minimumLevel??parseInt(A[0].getAttribute("order"),10),I=t.maximumLevel??parseInt(A[A.length-1].getAttribute("order"),10),b=h.getAttribute("profile"),S=t.tilingScheme;if(!l(S))if(b==="geodetic"||b==="global-geodetic")S=new co({ellipsoid:t.ellipsoid});else if(b==="mercator"||b==="global-mercator")S=new ws({ellipsoid:t.ellipsoid});else throw m=`${i.url} specifies an unsupported profile attribute, ${b}.`,l(o)&&zo.reportError(void 0,o,o.errorEvent,m),new ce(m);let B=ae.clone(t.rectangle);if(!l(B)){let P,N,L,p;t.flipXY??!1?(L=new k(parseFloat(f.getAttribute("miny")),parseFloat(f.getAttribute("minx"))),p=new k(parseFloat(f.getAttribute("maxy")),parseFloat(f.getAttribute("maxx")))):(L=new k(parseFloat(f.getAttribute("minx")),parseFloat(f.getAttribute("miny"))),p=new k(parseFloat(f.getAttribute("maxx")),parseFloat(f.getAttribute("maxy"))));let T=b==="geodetic"||b==="mercator";if(S.projection instanceof Hi||T)P=Ae.fromDegrees(L.x,L.y),N=Ae.fromDegrees(p.x,p.y);else{let w=S.projection;P=w.unproject(L),N=w.unproject(p)}B=new ae(P.longitude,P.latitude,N.longitude,N.latitude)}return B=cce(B,S),E=lce(S,B,E),{url:n.getDerivedResource({url:`{z}/{x}/{reverseY}.${_}`}),tilingScheme:S,rectangle:B,tileWidth:y,tileHeight:C,minimumLevel:E,maximumLevel:I,tileDiscardPolicy:t.tileDiscardPolicy,credit:t.credit}};Uf._metadataFailure=function(e,t){let n=e.fileExtension??"png",i=e.tileWidth??256,o=e.tileHeight??256,r=e.maximumLevel,s=l(e.tilingScheme)?e.tilingScheme:new ws({ellipsoid:e.ellipsoid}),a=e.rectangle??s.rectangle;a=cce(a,s);let c=lce(s,a,e.minimumLevel);return{url:t.getDerivedResource({url:`{z}/{x}/{reverseY}.${n}`}),tilingScheme:s,rectangle:a,tileWidth:i,tileHeight:o,minimumLevel:c,maximumLevel:r,tileDiscardPolicy:e.tileDiscardPolicy,credit:e.credit}};var iE=Uf;function uce(e){this.channel=e.channel,this.ellipsoid=e.ellipsoid,this.tilingScheme=void 0,this.version=void 0}uce.prototype.build=function(e){e._channel=this.channel,e._version=this.version,e._tilingScheme=this.tilingScheme};function J5e(e,t){let n;try{n=JSON.parse(e)}catch{n=JSON.parse(e.replace(/([\[\{,])[\n\r ]*([A-Za-z0-9]+)[\n\r ]*:/g,'$1"$2":'))}let i;for(let o=0;o<n.layers.length;o++)if(n.layers[o].id===t.channel){i=n.layers[o];break}if(!l(i)){let o=`Could not find layer with channel (id) of ${t.channel}.`;throw new ce(o)}if(!l(i.version)){let o=`Could not find a version in channel (id) ${t.channel}.`;throw new ce(o)}if(t.version=i.version,l(n.projection)&&n.projection==="flat")t.tilingScheme=new co({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new ae(-Math.PI,-Math.PI,Math.PI,Math.PI),ellipsoid:t.ellipsoid});else if(!l(n.projection)||n.projection==="mercator")t.tilingScheme=new ws({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,ellipsoid:t.ellipsoid});else{let o=`Unsupported projection ${n.projection}.`;throw new ce(o)}return!0}function Z5e(e,t,n){let i=`An error occurred while accessing ${t.url}.`;throw l(e)&&l(e.message)&&(i+=`: ${e.message}`),zo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i),new ce(i)}async function $5e(e,t,n){try{let i=await e.fetchText();J5e(i,t)}catch(i){Z5e(i,e,n)}}function Xl(e){e=e??{},this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=1.9,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._channel=e.channel,this._requestType="ImageryMaps",this._credit=new Dt(`<a href="http://www.google.com/enterprise/mapsearth/products/earthenterprise.html"><img src="${Xl.logoUrl}" title="Google Imagery"/></a>`),this._tilingScheme=void 0,this._version=void 0,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=e.maximumLevel,this._errorEvent=new _e}Object.defineProperties(Xl.prototype,{url:{get:function(){return this._url}},path:{get:function(){return this._path}},proxy:{get:function(){return this._resource.proxy}},channel:{get:function(){return this._channel}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},version:{get:function(){return this._version}},requestType:{get:function(){return this._requestType}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}});Xl.fromUrl=async function(e,t,n){n=n??{};let i=n.path??"/default_map",o=we.createIfNeeded(e).getDerivedResource({url:i[0]==="/"?i.substring(1):i});o.appendForwardSlash();let r=o.getDerivedResource({url:"query",queryParameters:{request:"Json",vars:"geeServerDefs",is2d:"t"}}),s=new uce(n);s.channel=t,await $5e(r,s);let a=new Xl(n);return s.build(a),a._resource=o,a._url=e,a._path=i,a};Xl.prototype.getTileCredits=function(e,t,n){};Xl.prototype.requestImage=function(e,t,n,i){let o=this._resource.getDerivedResource({url:"query",request:i,queryParameters:{request:this._requestType,channel:this._channel,version:this._version,x:e,y:t,z:n+1}});return Kl.loadImage(this,o)};Xl.prototype.pickFeatures=function(e,t,n,i,o){};Xl._logoUrl=void 0;Object.defineProperties(Xl,{logoUrl:{get:function(){return l(Xl._logoUrl)||(Xl._logoUrl=fn("Assets/Images/google_earth_credit.png")),Xl._logoUrl},set:function(e){Xl._logoUrl=e}}});var H2=Xl;var e9e=/\/$/,fce=new Dt('© <a href="https://www.mapbox.com/about/maps/">Mapbox</a> © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> <strong><a href="https://www.mapbox.com/map-feedback/">Improve this map</a></strong>');function Rx(e){e=e??V.EMPTY_OBJECT;let t=e.mapId,n=e.accessToken;this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let i=we.createIfNeeded(e.url??"https://{s}.tiles.mapbox.com/v4/");this._mapId=t,this._accessToken=n;let o=e.format??"png";/\./.test(o)||(o=`.${o}`),this._format=o;let r=i.getUrlComponent();e9e.test(r)||(r+="/"),r+=`${t}/{z}/{x}/{y}${this._format}`,i.url=r,i.setQueryParameters({access_token:n});let s;l(e.credit)?(s=e.credit,typeof s=="string"&&(s=new Dt(s))):s=fce,this._resource=i,this._imageryProvider=new vc({url:i,credit:s,ellipsoid:e.ellipsoid,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,rectangle:e.rectangle})}Object.defineProperties(Rx.prototype,{url:{get:function(){return this._imageryProvider.url}},rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._imageryProvider.errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},proxy:{get:function(){return this._imageryProvider.proxy}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}}});Rx.prototype.getTileCredits=function(e,t,n){};Rx.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};Rx.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};Rx._defaultCredit=fce;var W2=Rx;function oE(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let t=e.rectangle??ae.MAX_VALUE,n=new co({rectangle:t,numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});this._tilingScheme=n,this._image=void 0,this._texture=void 0,this._hasError=!1,this._errorEvent=new _e;let i=e.credit;typeof i=="string"&&(i=new Dt(i)),this._credit=i;let o=we.createIfNeeded(e.url);this._resource=o,this._tileWidth=e.tileWidth,this._tileHeight=e.tileHeight}Object.defineProperties(oE.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return 0}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}}});function t9e(e,t,n,i){let o=`Failed to load image ${e.url}`;l(t)&&l(t.message)&&(o+=`: ${t.message}`);let r=zo.reportError(i,n,l(n)?n._errorEvent:void 0,o,0,0,0,t);if(r.retry)return ij(e,n,r);throw l(n)&&(n._hasError=!0),new ce(o)}async function ij(e,t,n){try{return await Kl.loadImage(null,e)}catch(i){return t9e(e,i,t,n)}}oE.fromUrl=async function(e,t){let n=we.createIfNeeded(e),i=await ij(n);t=t??V.EMPTY_OBJECT;let o=new oE({...t,url:e,tileWidth:i.width,tileHeight:i.height});return o._image=i,o};oE.prototype.getTileCredits=function(e,t,n){};oE.prototype.requestImage=async function(e,t,n,i){if(!this._hasError&&!l(this._image)){let o=await ij(this._resource,this);return this._image=o,zo.reportSuccess(this._errorEvent),o}return this._image};oE.prototype.pickFeatures=function(e,t,n,i,o){};var j2=oE;function n9e(e,t,n){this.type=e,l(t)||(e==="json"?t="application/json":e==="xml"?t="text/xml":e==="html"?t="text/html":e==="text"&&(t="text/plain")),this.format=t,l(n)||(e==="json"?n=i9e:e==="xml"?n=a9e:(e==="html"||e==="text")&&(n=dce)),this.callback=n}function i9e(e){let t=[],n=e.features;for(let i=0;i<n.length;++i){let o=n[i],r=new Dm;if(r.data=o,r.properties=o.properties,r.configureNameFromProperties(o.properties),r.configureDescriptionFromProperties(o.properties),l(o.geometry)&&o.geometry.type==="Point"){let s=o.geometry.coordinates[0],a=o.geometry.coordinates[1];r.position=Ae.fromDegrees(s,a)}t.push(r)}return t}var oj="http://www.mapinfo.com/mxp",o9e="http://www.esri.com/wms",r9e="http://www.opengis.net/wfs",s9e="http://www.opengis.net/gml";function a9e(e){let t=e.documentElement;if(t.localName==="MultiFeatureCollection"&&t.namespaceURI===oj)return c9e(e);if(t.localName==="FeatureInfoResponse"&&t.namespaceURI===o9e)return l9e(e);if(t.localName==="FeatureCollection"&&t.namespaceURI===r9e)return u9e(e);if(t.localName==="ServiceExceptionReport")throw new ce(new XMLSerializer().serializeToString(t));return t.localName==="msGMLOutput"?f9e(e):d9e(e)}function c9e(e){let t=[],i=e.documentElement.getElementsByTagNameNS(oj,"Feature");for(let o=0;o<i.length;++o){let r=i[o],s={},a=r.getElementsByTagNameNS(oj,"Val");for(let u=0;u<a.length;++u){let f=a[u];if(f.hasAttribute("ref")){let h=f.getAttribute("ref"),A=f.textContent.trim();s[h]=A}}let c=new Dm;c.data=r,c.properties=s,c.configureNameFromProperties(s),c.configureDescriptionFromProperties(s),t.push(c)}return t}function l9e(e){let t=e.documentElement,n=[],i,o=t.getElementsByTagNameNS("*","FIELDS");if(o.length>0)for(let r=0;r<o.length;++r){let s=o[r];i={};let a=s.attributes;for(let c=0;c<a.length;++c){let u=a[c];i[u.name]=u.value}n.push(Y2(s,i))}else{let r=t.getElementsByTagNameNS("*","FeatureInfo");for(let s=0;s<r.length;++s){let a=r[s];i={};let c=a.childNodes;for(let u=0;u<c.length;++u){let f=c[u];f.nodeType===Node.ELEMENT_NODE&&(i[f.localName]=f.textContent)}n.push(Y2(a,i))}}return n}function u9e(e){let t=[],i=e.documentElement.getElementsByTagNameNS(s9e,"featureMember");for(let o=0;o<i.length;++o){let r=i[o],s={};rj(r,s),t.push(Y2(r,s))}return t}function f9e(e){let t=[],n,i=e.documentElement.childNodes;for(let r=0;r<i.length;r++)if(i[r].nodeType===Node.ELEMENT_NODE){n=i[r];break}if(!l(n))throw new ce("Unable to find first child of the feature info xml document");let o=n.childNodes;for(let r=0;r<o.length;++r){let s=o[r];if(s.nodeType===Node.ELEMENT_NODE){let a={};rj(s,a),t.push(Y2(s,a))}}return t}function rj(e,t){let n=!0;for(let i=0;i<e.childNodes.length;++i){let o=e.childNodes[i];o.nodeType===Node.ELEMENT_NODE&&(n=!1),!(o.localName==="Point"||o.localName==="LineString"||o.localName==="Polygon"||o.localName==="boundedBy")&&o.hasChildNodes()&&rj(o,t)&&(t[o.localName]=o.textContent)}return n}function Y2(e,t){let n=new Dm;return n.data=e,n.properties=t,n.configureNameFromProperties(t),n.configureDescriptionFromProperties(t),n}function d9e(e){let t=new XMLSerializer().serializeToString(e),n=document.createElement("div"),i=document.createElement("pre");i.textContent=t,n.appendChild(i);let o=new Dm;return o.data=e,o.description=n.innerHTML,[o]}var h9e=/<body>\s*<\/body>/im,m9e=/<ServiceExceptionReport([\s\S]*)<\/ServiceExceptionReport>/im,A9e=/<title>([\s\S]*)<\/title>/im;function dce(e){if(h9e.test(e)||m9e.test(e))return;let t,n=A9e.exec(e);n&&n.length>1&&(t=n[1]);let i=new Dm;return i.name=t,i.description=e,i.data=e,[i]}var Mx=n9e;function FB(e){e=e??V.EMPTY_OBJECT,this._tileCache={},this._tilesRequestedForInterval=[];let t=this._clock=e.clock;this._times=e.times,this._requestImageFunction=e.requestImageFunction,this._reloadFunction=e.reloadFunction,this._currentIntervalIndex=-1,t.onTick.addEventListener(this._clockOnTick,this),this._clockOnTick(t)}Object.defineProperties(FB.prototype,{clock:{get:function(){return this._clock},set:function(e){this._clock!==e&&(this._clock=e,this._clockOnTick(e),this._reloadFunction())}},times:{get:function(){return this._times},set:function(e){this._times!==e&&(this._times=e,this._clockOnTick(this._clock),this._reloadFunction())}},currentInterval:{get:function(){return this._times.get(this._currentIntervalIndex)}}});FB.prototype.getFromCache=function(e,t,n,i){let o=hce(e,t,n),r,s=this._tileCache[this._currentIntervalIndex];if(l(s)&&l(s[o])){let a=s[o];r=a.promise.catch(function(c){throw i.state=a.request.state,c}),delete s[o]}return r};FB.prototype.checkApproachingInterval=function(e,t,n,i){let o=hce(e,t,n),r=this._tilesRequestedForInterval,s=mce(this),a={key:o,priorityFunction:i.priorityFunction};(!l(s)||!Ace(this,a,s))&&r.push(a),r.length>=512&&r.splice(0,256)};FB.prototype._clockOnTick=function(e){let t=e.currentTime,i=this._times.indexOf(t),o=this._currentIntervalIndex;if(i!==o){let s=this._tileCache[o];for(let a in s)s.hasOwnProperty(a)&&s[a].request.cancel();delete this._tileCache[o],this._tilesRequestedForInterval=[],this._currentIntervalIndex=i,this._reloadFunction();return}let r=mce(this);if(l(r)){let s=this._tilesRequestedForInterval,a=!0;for(;a&&s.length!==0;){let c=s.pop();a=Ace(this,c,r),a||s.push(c)}}};function hce(e,t,n){return`${e}-${t}-${n}`}function p9e(e){let t=e.split("-");if(t.length===3)return{x:Number(t[0]),y:Number(t[1]),level:Number(t[2])}}function mce(e){let t=e._times;if(!l(t))return;let n=e._clock,i=n.currentTime,o=n.canAnimate&&n.shouldAnimate,r=n.multiplier;if(!o&&r!==0)return;let s,a=t.indexOf(i);if(a<0)return;let c=t.get(a);return r>0?(s=K.secondsDifference(c.stop,i),++a):(s=K.secondsDifference(c.start,i),--a),s/=r,a>=0&&s<=5?t.get(a):void 0}function Ace(e,t,n){let i=e._times.indexOf(n.start),o=e._tileCache,r=o[i];l(r)||(r=o[i]={});let s=t.key;if(l(r[s]))return!0;let a=p9e(s),c=new pr({throttle:!1,throttleByServer:!0,type:Us.IMAGERY,priorityFunction:t.priorityFunction}),u=e._requestImageFunction(a.x,a.y,a.level,c,n);return l(u)?(r[s]={promise:u,request:c},!0):!1}var Nx=FB;var g9e=[3034,3035,3042,3043,3044],_9e=[4471,4559];function Jd(e){if(e=e??V.EMPTY_OBJECT,l(e.times)&&!l(e.clock))throw new me("options.times was specified, so options.clock is required.");this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._getFeatureInfoUrl=e.getFeatureInfoUrl??e.url;let t=we.createIfNeeded(e.url),n=we.createIfNeeded(this._getFeatureInfoUrl);t.setQueryParameters(Jd.DefaultParameters,!0),n.setQueryParameters(Jd.GetFeatureInfoDefaultParameters,!0),l(e.parameters)&&t.setQueryParameters(pce(e.parameters)),l(e.getFeatureInfoParameters)&&n.setQueryParameters(pce(e.getFeatureInfoParameters));let i=this;this._reload=void 0,l(e.times)&&(this._timeDynamicImagery=new Nx({clock:e.clock,times:e.times,requestImageFunction:function(s,a,c,u,f){return gce(i,s,a,c,u,f)},reloadFunction:function(){l(i._reload)&&i._reload()}}));let o={};if(o.layers=e.layers,o.bbox="{westProjected},{southProjected},{eastProjected},{northProjected}",o.width="{width}",o.height="{height}",parseFloat(t.queryParameters.version)>=1.3){o.crs=e.crs??(e.tilingScheme&&e.tilingScheme.projection instanceof Yi?"EPSG:3857":"CRS:84");let s=o.crs.split(":");if(s[0]==="EPSG"&&s.length===2){let a=Number(s[1]);(a>=4e3&&a<5e3&&!_9e.includes(a)||g9e.includes(a))&&(o.bbox="{southProjected},{westProjected},{northProjected},{eastProjected}")}}else o.srs=e.srs??(e.tilingScheme&&e.tilingScheme.projection instanceof Yi?"EPSG:3857":"EPSG:4326");t.setQueryParameters(o,!0),n.setQueryParameters(o,!0);let r={query_layers:e.layers,info_format:"{format}"};parseFloat(n.queryParameters.version)>=1.3?(r.i="{i}",r.j="{j}"):(r.x="{i}",r.y="{j}"),n.setQueryParameters(r,!0),this._resource=t,this._pickFeaturesResource=n,this._layers=e.layers,this._tileProvider=new vc({url:t,pickFeaturesUrl:n,tilingScheme:e.tilingScheme??new co({ellipsoid:e.ellipsoid}),rectangle:e.rectangle,tileWidth:e.tileWidth,tileHeight:e.tileHeight,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,subdomains:e.subdomains,tileDiscardPolicy:e.tileDiscardPolicy,credit:e.credit,getFeatureInfoFormats:e.getFeatureInfoFormats??Jd.DefaultGetFeatureInfoFormats,enablePickFeatures:e.enablePickFeatures})}function gce(e,t,n,i,o,r){let s=l(r)?r.data:void 0,a=e._tileProvider;return l(s)&&a._resource.setQueryParameters(s),a.requestImage(t,n,i,o)}function y9e(e,t,n,i,o,r,s){let a=l(s)?s.data:void 0,c=e._tileProvider;return l(a)&&c._pickFeaturesResource.setQueryParameters(a),c.pickFeatures(t,n,i,o,r)}Object.defineProperties(Jd.prototype,{url:{get:function(){return this._resource._url}},proxy:{get:function(){return this._resource.proxy}},layers:{get:function(){return this._layers}},tileWidth:{get:function(){return this._tileProvider.tileWidth}},tileHeight:{get:function(){return this._tileProvider.tileHeight}},maximumLevel:{get:function(){return this._tileProvider.maximumLevel}},minimumLevel:{get:function(){return this._tileProvider.minimumLevel}},tilingScheme:{get:function(){return this._tileProvider.tilingScheme}},rectangle:{get:function(){return this._tileProvider.rectangle}},tileDiscardPolicy:{get:function(){return this._tileProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._tileProvider.errorEvent}},credit:{get:function(){return this._tileProvider.credit}},hasAlphaChannel:{get:function(){return this._tileProvider.hasAlphaChannel}},enablePickFeatures:{get:function(){return this._tileProvider.enablePickFeatures},set:function(e){this._tileProvider.enablePickFeatures=e}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(e){this._timeDynamicImagery.clock=e}},times:{get:function(){return this._timeDynamicImagery.times},set:function(e){this._timeDynamicImagery.times=e}},getFeatureInfoUrl:{get:function(){return this._getFeatureInfoUrl}}});Jd.prototype.getTileCredits=function(e,t,n){return this._tileProvider.getTileCredits(e,t,n)};Jd.prototype.requestImage=function(e,t,n,i){let o,r=this._timeDynamicImagery,s;return l(r)&&(s=r.currentInterval,o=r.getFromCache(e,t,n,i)),l(o)||(o=gce(this,e,t,n,i,s)),l(o)&&l(r)&&r.checkApproachingInterval(e,t,n,i),o};Jd.prototype.pickFeatures=function(e,t,n,i,o){let r=this._timeDynamicImagery,s=l(r)?r.currentInterval:void 0;return y9e(this,e,t,n,i,o,s)};Jd.DefaultParameters=Object.freeze({service:"WMS",version:"1.1.1",request:"GetMap",styles:"",format:"image/jpeg"});Jd.GetFeatureInfoDefaultParameters=Object.freeze({service:"WMS",version:"1.1.1",request:"GetFeatureInfo"});Jd.DefaultGetFeatureInfoFormats=Object.freeze([Object.freeze(new Mx("json","application/json")),Object.freeze(new Mx("xml","text/xml")),Object.freeze(new Mx("text","text/html"))]);function pce(e){let t={};for(let n in e)e.hasOwnProperty(n)&&(t[n.toLowerCase()]=e[n]);return t}var q2=Jd;var C9e=Object.freeze({service:"WMTS",version:"1.0.0",request:"GetTile"});function QB(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let t=we.createIfNeeded(e.url),n=e.style,i=e.tileMatrixSetID,o=t.url,r=o.match(/{/g);if(!l(r)||r.length===1&&/{s}/.test(o))t.setQueryParameters(C9e),this._useKvp=!0;else{let h={style:n,Style:n,TileMatrixSet:i};t.setTemplateValues(h),this._useKvp=!1}this._resource=t,this._layer=e.layer,this._style=n,this._tileMatrixSetID=i,this._tileMatrixLabels=e.tileMatrixLabels,this._format=e.format??"image/jpeg",this._tileDiscardPolicy=e.tileDiscardPolicy,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new ws({ellipsoid:e.ellipsoid}),this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._minimumLevel=e.minimumLevel??0,this._maximumLevel=e.maximumLevel,this._rectangle=e.rectangle??this._tilingScheme.rectangle,this._dimensions=e.dimensions;let s=this;this._reload=void 0,l(e.times)&&(this._timeDynamicImagery=new Nx({clock:e.clock,times:e.times,requestImageFunction:function(h,A,g,m,_){return _ce(s,h,A,g,m,_)},reloadFunction:function(){l(s._reload)&&s._reload()}}));let a=this._tilingScheme.positionToTileXY(ae.southwest(this._rectangle),this._minimumLevel),c=this._tilingScheme.positionToTileXY(ae.northeast(this._rectangle),this._minimumLevel),u=(Math.abs(c.x-a.x)+1)*(Math.abs(c.y-a.y)+1);this._errorEvent=new _e;let f=e.credit;this._credit=typeof f=="string"?new Dt(f):f,this._subdomains=e.subdomains,Array.isArray(this._subdomains)?this._subdomains=this._subdomains.slice():l(this._subdomains)&&this._subdomains.length>0?this._subdomains=this._subdomains.split(""):this._subdomains=["a","b","c"]}function _ce(e,t,n,i,o,r){let s=e._tileMatrixLabels,a=l(s)?s[i]:i.toString(),c=e._subdomains,u=e._dimensions,f=l(r)?r.data:void 0,h,A;if(!e._useKvp)A={TileMatrix:a,TileRow:n.toString(),TileCol:t.toString(),s:c[(t+n+i)%c.length]},h=e._resource.getDerivedResource({request:o}),h.setTemplateValues(A),l(u)&&h.setTemplateValues(u),l(f)&&h.setTemplateValues(f);else{let g={};g.tilematrix=a,g.layer=e._layer,g.style=e._style,g.tilerow=n,g.tilecol=t,g.tilematrixset=e._tileMatrixSetID,g.format=e._format,l(u)&&(g=wt(g,u)),l(f)&&(g=wt(g,f)),A={s:c[(t+n+i)%c.length]},h=e._resource.getDerivedResource({queryParameters:g,request:o}),h.setTemplateValues(A)}return Kl.loadImage(e,h)}Object.defineProperties(QB.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return this._minimumLevel}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},format:{get:function(){return this._format}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!0}},clock:{get:function(){return this._timeDynamicImagery.clock},set:function(e){this._timeDynamicImagery.clock=e}},times:{get:function(){return this._timeDynamicImagery.times},set:function(e){this._timeDynamicImagery.times=e}},dimensions:{get:function(){return this._dimensions},set:function(e){this._dimensions!==e&&(this._dimensions=e,l(this._reload)&&this._reload())}}});QB.prototype.getTileCredits=function(e,t,n){};QB.prototype.requestImage=function(e,t,n,i){let o,r=this._timeDynamicImagery,s;return l(r)&&(s=r.currentInterval,o=r.getFromCache(e,t,n,i)),l(o)||(o=_ce(this,e,t,n,i,s)),l(o)&&l(r)&&r.checkApproachingInterval(e,t,n,i),o};QB.prototype.pickFeatures=function(e,t,n,i,o){};var K2=QB;var E9e={ARCGIS_MAPSERVER:__.fromUrl,BING:async(e,t)=>Q2.fromUrl(e,t),GOOGLE_EARTH:async(e,t)=>{let n=t.channel;return delete t.channel,H2.fromUrl(e,n,t)},MAPBOX:(e,t)=>new W2({url:e,...t}),SINGLE_TILE:j2.fromUrl,TMS:iE.fromUrl,URL_TEMPLATE:(e,t)=>new vc({url:e,...t}),WMS:(e,t)=>new q2({url:e,...t}),WMTS:(e,t)=>new K2({url:e,...t})};function Rm(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileCredits=void 0,this._errorEvent=new _e}Object.defineProperties(Rm.prototype,{rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}},proxy:{get:function(){}}});Rm.fromAssetId=async function(e,t){t=t??V.EMPTY_OBJECT;let n=wf._createEndpointResource(e,t),i=e.toString()+t.accessToken+t.server,o=Rm._endpointCache[i];l(o)||(o=n.fetchJson(),Rm._endpointCache[i]=o);let r=await o;if(r.type!=="IMAGERY")throw new ce(`Cesium ion asset ${e} is not an imagery asset.`);let s,a=r.externalType;if(!l(a))s=await iE.fromUrl(new wf(r,n));else{let u=E9e[a];if(!l(u))throw new ce(`Unrecognized Cesium ion imagery type: ${a}`);let f={...r.options},h=f.url;delete f.url,s=await u(h,f)}let c=new Rm(t);return s.errorEvent.addEventListener(function(u){u.provider=c,c._errorEvent.raiseEvent(u)}),c._tileCredits=wf.getCreditsFromEndpoint(r,n),c._imageryProvider=s,c};Rm.prototype.getTileCredits=function(e,t,n){let i=this._imageryProvider.getTileCredits(e,t,n);return l(i)?this._tileCredits.concat(i):this._tileCredits};Rm.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};Rm.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};Rm._endpointCache={};var y_=Rm;var I9e={AERIAL:2,AERIAL_WITH_LABELS:3,ROAD:4},C_=Object.freeze(I9e);function x9e(e){e=e??V.EMPTY_OBJECT;let t=e.style??C_.AERIAL;return y_.fromAssetId(t)}var E_=x9e;function ul(){me.throwInstantiationError()}Object.defineProperties(ul.prototype,{errorEvent:{get:me.throwInstantiationError},credit:{get:me.throwInstantiationError},tilingScheme:{get:me.throwInstantiationError},hasWaterMask:{get:me.throwInstantiationError},hasVertexNormals:{get:me.throwInstantiationError},availability:{get:me.throwInstantiationError}});var yce=[];ul.getRegularGridIndices=function(e,t){let n=yce[e];l(n)||(yce[e]=n=[]);let i=n[t];return l(i)||(e*t<D.SIXTY_FOUR_KILOBYTES?i=n[t]=new Uint16Array((e-1)*(t-1)*6):i=n[t]=new Uint32Array((e-1)*(t-1)*6),xce(e,t,i,0)),i};var Cce=[];ul.getRegularGridIndicesAndEdgeIndices=function(e,t){let n=Cce[e];l(n)||(Cce[e]=n=[]);let i=n[t];if(!l(i)){let o=ul.getRegularGridIndices(e,t),r=Ice(e,t),s=r.westIndicesSouthToNorth,a=r.southIndicesEastToWest,c=r.eastIndicesNorthToSouth,u=r.northIndicesWestToEast;i=n[t]={indices:o,westIndicesSouthToNorth:s,southIndicesEastToWest:a,eastIndicesNorthToSouth:c,northIndicesWestToEast:u}}return i};var Ece=[];ul.getRegularGridAndSkirtIndicesAndEdgeIndices=function(e,t){let n=Ece[e];l(n)||(Ece[e]=n=[]);let i=n[t];if(!l(i)){let o=e*t,r=(e-1)*(t-1)*6,s=e*2+t*2,a=Math.max(0,s-4)*6,c=o+s,u=r+a,f=Ice(e,t),h=f.westIndicesSouthToNorth,A=f.southIndicesEastToWest,g=f.eastIndicesNorthToSouth,m=f.northIndicesWestToEast,_=Fe.createTypedArray(c,u);xce(e,t,_,0),ul.addSkirtIndices(h,A,g,m,o,_,r),i=n[t]={indices:_,westIndicesSouthToNorth:h,southIndicesEastToWest:A,eastIndicesNorthToSouth:g,northIndicesWestToEast:m,indexCountWithoutSkirts:r}}return i};ul.addSkirtIndices=function(e,t,n,i,o,r,s){let a=o;s=X2(e,a,r,s),a+=e.length,s=X2(t,a,r,s),a+=t.length,s=X2(n,a,r,s),a+=n.length,X2(i,a,r,s)};function Ice(e,t){let n=new Array(t),i=new Array(e),o=new Array(t),r=new Array(e),s;for(s=0;s<e;++s)r[s]=s,i[s]=e*t-1-s;for(s=0;s<t;++s)o[s]=(s+1)*e-1,n[s]=(t-s-1)*e;return{westIndicesSouthToNorth:n,southIndicesEastToWest:i,eastIndicesNorthToSouth:o,northIndicesWestToEast:r}}function xce(e,t,n,i){let o=0;for(let r=0;r<t-1;++r){for(let s=0;s<e-1;++s){let a=o,c=a+e,u=c+1,f=a+1;n[i++]=a,n[i++]=c,n[i++]=f,n[i++]=f,n[i++]=c,n[i++]=u,++o}++o}}function X2(e,t,n,i){let o=e[0],r=e.length;for(let s=1;s<r;++s){let a=e[s];n[i++]=o,n[i++]=a,n[i++]=t,n[i++]=t,n[i++]=a,n[i++]=t+1,o=a,++t}return i}ul.heightmapTerrainQuality=.25;ul.getEstimatedLevelZeroGeometricErrorForAHeightmap=function(e,t,n){return e.maximumRadius*2*Math.PI*ul.heightmapTerrainQuality/(t*n)};ul.prototype.requestTileGeometry=me.throwInstantiationError;ul.prototype.getLevelMaximumGeometricError=me.throwInstantiationError;ul.prototype.getTileDataAvailable=me.throwInstantiationError;ul.prototype.loadTileDataAvailability=me.throwInstantiationError;var Bs=ul;var J2=`uniform sampler2D u_texture; + +in vec2 v_textureCoordinates; + +void main() +{ + out_FragColor = texture(u_texture, v_textureCoordinates); +} +`;var Z2=`in vec4 position; +in float webMercatorT; + +uniform vec2 u_textureDimensions; + +out vec2 v_textureCoordinates; + +void main() +{ + v_textureCoordinates = vec2(position.x, webMercatorT); + gl_Position = czm_viewportOrthographic * (position * vec4(u_textureDimensions, 1.0, 1.0)); +} +`;var b9e={UNLOADED:0,TRANSITIONING:1,RECEIVED:2,TEXTURE_LOADED:3,READY:4,FAILED:5,INVALID:6,PLACEHOLDER:7},qn=Object.freeze(b9e);function Lx(e,t,n,i,o){if(this.imageryLayer=e,this.x=t,this.y=n,this.level=i,this.request=void 0,i!==0){let r=t/2|0,s=n/2|0,a=i-1;this.parent=e.getImageryFromCache(r,s,a)}this.state=qn.UNLOADED,this.imageUrl=void 0,this.image=void 0,this.texture=void 0,this.textureWebMercator=void 0,this.credits=void 0,this.referenceCount=0,!l(o)&&e.ready&&(o=e.imageryProvider.tilingScheme.tileXYToRectangle(t,n,i)),this.rectangle=o}Lx.createPlaceholder=function(e){let t=new Lx(e,0,0,0);return t.addReference(),t.state=qn.PLACEHOLDER,t};Lx.prototype.addReference=function(){++this.referenceCount};Lx.prototype.releaseReference=function(){return--this.referenceCount,this.referenceCount===0?(this.imageryLayer.removeImageryFromCache(this),l(this.parent)&&this.parent.releaseReference(),l(this.image)&&l(this.image.destroy)&&this.image.destroy(),l(this.texture)&&this.texture.destroy(),l(this.textureWebMercator)&&this.texture!==this.textureWebMercator&&this.textureWebMercator.destroy(),ue(this),0):this.referenceCount};Lx.prototype.processStateMachine=function(e,t,n){this.state===qn.UNLOADED&&!n&&(this.state=qn.TRANSITIONING,this.imageryLayer._requestImagery(this)),this.state===qn.RECEIVED&&(this.state=qn.TRANSITIONING,this.imageryLayer._createTexture(e.context,this));let i=this.state===qn.READY&&t&&!this.texture;(this.state===qn.TEXTURE_LOADED||i)&&(this.state=qn.TRANSITIONING,this.imageryLayer._reprojectTexture(e,this,t))};var kB=Lx;function sj(e,t,n){this.readyImagery=void 0,this.loadingImagery=e,this.textureCoordinateRectangle=t,this.textureTranslationAndScale=void 0,this.useWebMercatorT=n}sj.prototype.freeResources=function(){l(this.readyImagery)&&this.readyImagery.releaseReference(),l(this.loadingImagery)&&this.loadingImagery.releaseReference()};sj.prototype.processStateMachine=function(e,t,n){let i=this.loadingImagery,o=i.imageryLayer;if(i.processStateMachine(t,!this.useWebMercatorT,n),i.state===qn.READY)return l(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=this.loadingImagery,this.loadingImagery=void 0,this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(e,this),!0;let r=i.parent,s;for(;l(r)&&(r.state!==qn.READY||!this.useWebMercatorT&&!l(r.texture));)r.state!==qn.FAILED&&r.state!==qn.INVALID&&(s=s||r),r=r.parent;return this.readyImagery!==r&&(l(this.readyImagery)&&this.readyImagery.releaseReference(),this.readyImagery=r,l(r)&&(r.addReference(),this.textureTranslationAndScale=o._calculateTextureTranslationAndScale(e,this))),i.state===qn.FAILED||i.state===qn.INVALID?l(s)?(s.processStateMachine(t,!this.useWebMercatorT,n),!1):!0:!1};var UB=sj;function Pi(e,t){this._imageryProvider=e,this._readyEvent=new _e,this._errorEvent=new _e,t=t??V.EMPTY_OBJECT,e=e??V.EMPTY_OBJECT,this.alpha=t.alpha??e._defaultAlpha??1,this.nightAlpha=t.nightAlpha??e._defaultNightAlpha??1,this.dayAlpha=t.dayAlpha??e._defaultDayAlpha??1,this.brightness=t.brightness??e._defaultBrightness??Pi.DEFAULT_BRIGHTNESS,this.contrast=t.contrast??e._defaultContrast??Pi.DEFAULT_CONTRAST,this.hue=t.hue??e._defaultHue??Pi.DEFAULT_HUE,this.saturation=t.saturation??e._defaultSaturation??Pi.DEFAULT_SATURATION,this.gamma=t.gamma??e._defaultGamma??Pi.DEFAULT_GAMMA,this.splitDirection=t.splitDirection??Pi.DEFAULT_SPLIT,this.minificationFilter=t.minificationFilter??e._defaultMinificationFilter??Pi.DEFAULT_MINIFICATION_FILTER,this.magnificationFilter=t.magnificationFilter??e._defaultMagnificationFilter??Pi.DEFAULT_MAGNIFICATION_FILTER,this.show=t.show??!0,this._minimumTerrainLevel=t.minimumTerrainLevel,this._maximumTerrainLevel=t.maximumTerrainLevel,this._rectangle=t.rectangle??ae.MAX_VALUE,this._maximumAnisotropy=t.maximumAnisotropy,this._imageryCache={},this._skeletonPlaceholder=new UB(kB.createPlaceholder(this)),this._show=!0,this._layerIndex=-1,this._isBaseLayer=!1,this._requestImageError=void 0,this._reprojectComputeCommands=[],this.cutoutRectangle=t.cutoutRectangle,this.colorToAlpha=t.colorToAlpha,this.colorToAlphaThreshold=t.colorToAlphaThreshold??Pi.DEFAULT_APPLY_COLOR_TO_ALPHA_THRESHOLD}Object.defineProperties(Pi.prototype,{imageryProvider:{get:function(){return this._imageryProvider}},ready:{get:function(){return l(this._imageryProvider)}},errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},rectangle:{get:function(){return this._rectangle}}});Pi.DEFAULT_BRIGHTNESS=1;Pi.DEFAULT_CONTRAST=1;Pi.DEFAULT_HUE=0;Pi.DEFAULT_SATURATION=1;Pi.DEFAULT_GAMMA=1;Pi.DEFAULT_SPLIT=wr.NONE;Pi.DEFAULT_MINIFICATION_FILTER=Zt.LINEAR;Pi.DEFAULT_MAGNIFICATION_FILTER=pi.LINEAR;Pi.DEFAULT_APPLY_COLOR_TO_ALPHA_THRESHOLD=.004;Pi.fromProviderAsync=function(e,t){let n=new Pi(void 0,t);return D9e(n,Promise.resolve(e)),n};Pi.fromWorldImagery=function(e){return e=e??V.EMPTY_OBJECT,Pi.fromProviderAsync(E_({style:e.style}),e)};Pi.prototype.isBaseLayer=function(){return this._isBaseLayer};Pi.prototype.isDestroyed=function(){return!1};Pi.prototype.destroy=function(){return ue(this)};var Sce=new ae,bce=new ae,aj=new ae,wce=new ae;Pi.prototype.getImageryRectangle=function(){let e=this._imageryProvider,t=this._rectangle;return ae.intersection(e.rectangle,t)};Pi.prototype._createTileImagerySkeletons=function(e,t,n){let i=e.data;if(!l(t)||l(this._minimumTerrainLevel)&&e.level<this._minimumTerrainLevel||l(this._maximumTerrainLevel)&&e.level>this._maximumTerrainLevel)return!1;l(n)||(n=i.imagery.length);let o=this._imageryProvider;if(!this.ready)return this._skeletonPlaceholder.loadingImagery.addReference(),i.imagery.splice(n,0,this._skeletonPlaceholder),!0;let r=o.tilingScheme.projection instanceof Yi&&e.rectangle.north<Yi.MaximumLatitude&&e.rectangle.south>-Yi.MaximumLatitude,s=ae.intersection(o.rectangle,this._rectangle,Sce),a=ae.intersection(e.rectangle,s,bce);if(!l(a)){if(!this.isBaseLayer())return!1;let T=s,w=e.rectangle;a=bce,w.south>=T.north?a.north=a.south=T.north:w.north<=T.south?a.north=a.south=T.south:(a.south=Math.max(w.south,T.south),a.north=Math.min(w.north,T.north)),w.west>=T.east?a.west=a.east=T.east:w.east<=T.west?a.west=a.east=T.west:(a.west=Math.max(w.west,T.west),a.east=Math.min(w.east,T.east))}let c=0;a.south>0?c=a.south:a.north<0&&(c=a.north);let f=1*t.getLevelMaximumGeometricError(e.level),h=w9e(this,f,c);h=Math.max(0,h);let A=o.maximumLevel;if(h>A&&(h=A),l(o.minimumLevel)){let T=o.minimumLevel;h<T&&(h=T)}let g=o.tilingScheme,m=g.positionToTileXY(ae.northwest(a),h),_=g.positionToTileXY(ae.southeast(a),h),y=e.rectangle.width/512,C=e.rectangle.height/512,E=g.tileXYToRectangle(m.x,m.y,h);Math.abs(E.south-e.rectangle.north)<C&&m.y<_.y&&++m.y,Math.abs(E.east-e.rectangle.west)<y&&m.x<_.x&&++m.x;let I=g.tileXYToRectangle(_.x,_.y,h);Math.abs(I.north-e.rectangle.south)<C&&_.y>m.y&&--_.y,Math.abs(I.west-e.rectangle.east)<y&&_.x>m.x&&--_.x;let b=ae.clone(e.rectangle,wce),S=g.tileXYToRectangle(m.x,m.y,h),B=ae.intersection(S,s,aj),v;r?(g.rectangleToNativeRectangle(b,b),g.rectangleToNativeRectangle(S,S),g.rectangleToNativeRectangle(B,B),g.rectangleToNativeRectangle(s,s),v=g.tileXYToNativeRectangle.bind(g),y=b.width/512,C=b.height/512):v=g.tileXYToRectangle.bind(g);let P,N=0,L=1,p;!this.isBaseLayer()&&Math.abs(B.west-b.west)>=y&&(N=Math.min(1,(B.west-b.west)/b.width)),!this.isBaseLayer()&&Math.abs(B.north-b.north)>=C&&(L=Math.max(0,(B.north-b.south)/b.height));let x=L;for(let T=m.x;T<=_.x;T++)if(P=N,S=v(T,m.y,h),B=ae.simpleIntersection(S,s,aj),!!l(B)){N=Math.min(1,(B.east-b.west)/b.width),T===_.x&&(this.isBaseLayer()||Math.abs(B.east-b.east)<y)&&(N=1),L=x;for(let w=m.y;w<=_.y;w++){if(p=L,S=v(T,w,h),B=ae.simpleIntersection(S,s,aj),!l(B))continue;L=Math.max(0,(B.south-b.south)/b.height),w===_.y&&(this.isBaseLayer()||Math.abs(B.south-b.south)<C)&&(L=0);let M=new se(P,L,N,p),O=this.getImageryFromCache(T,w,h);i.imagery.splice(n,0,new UB(O,M,r)),++n}}return!0};Pi.prototype._calculateTextureTranslationAndScale=function(e,t){let n=t.readyImagery.rectangle,i=e.rectangle;if(t.useWebMercatorT){let c=t.readyImagery.imageryLayer.imageryProvider.tilingScheme;n=c.rectangleToNativeRectangle(n,Sce),i=c.rectangleToNativeRectangle(i,wce)}let o=i.width,r=i.height,s=o/n.width,a=r/n.height;return new se(s*(i.west-n.west)/o,a*(i.south-n.south)/r,s,a)};Pi.prototype._requestImagery=function(e){let t=this._imageryProvider,n=this;function i(s){if(!l(s))return o();e.image=s,e.state=qn.RECEIVED,e.request=void 0,zo.reportSuccess(n._requestImageError)}function o(s){if(e.request.state===hi.CANCELLED){e.state=qn.UNLOADED,e.request=void 0;return}e.state=qn.FAILED,e.request=void 0;let a=`Failed to obtain image tile X: ${e.x} Y: ${e.y} Level: ${e.level}.`;n._requestImageError=zo.reportError(n._requestImageError,t,t.errorEvent,a,e.x,e.y,e.level,s),n._requestImageError.retry&&r()}function r(){let s=new pr({throttle:!1,throttleByServer:!0,type:Us.IMAGERY});e.request=s,e.state=qn.TRANSITIONING;let a=t.requestImage(e.x,e.y,e.level,s);if(!l(a)){e.state=qn.UNLOADED,e.request=void 0;return}l(t.getTileCredits)&&(e.credits=t.getTileCredits(e.x,e.y,e.level)),a.then(function(c){i(c)}).catch(function(c){o(c)})}r()};Pi.prototype._createTextureWebGL=function(e,t){let n=new on({minificationFilter:this.minificationFilter,magnificationFilter:this.magnificationFilter}),i=t.image;return l(i.internalFormat)?new Nt({context:e,pixelFormat:i.internalFormat,width:i.width,height:i.height,source:{arrayBufferView:i.bufferView},sampler:n}):new Nt({context:e,source:i,pixelFormat:this._imageryProvider.hasAlphaChannel?et.RGBA:et.RGB,sampler:n})};Pi.prototype._createTexture=function(e,t){let n=this._imageryProvider,i=t.image;if(l(n.tileDiscardPolicy)){let r=n.tileDiscardPolicy;if(l(r)){if(!r.isReady()){t.state=qn.RECEIVED;return}if(r.shouldDiscardImage(i)){t.state=qn.INVALID;return}}}let o=this._createTextureWebGL(e,t);n.tilingScheme.projection instanceof Yi?t.textureWebMercator=o:t.texture=o,t.image=void 0,t.state=qn.TEXTURE_LOADED};function Tce(e,t,n){return`${e}:${t}:${n}`}Pi.prototype._finalizeReprojectTexture=function(e,t){let n=this.minificationFilter,i=this.magnificationFilter;if(n===Zt.LINEAR&&i===pi.LINEAR&&!et.isCompressedFormat(t.pixelFormat)&&D.isPowerOfTwo(t.width)&&D.isPowerOfTwo(t.height)){n=Zt.LINEAR_MIPMAP_LINEAR;let r=qt.maximumTextureFilterAnisotropy,s=Math.min(r,this._maximumAnisotropy??r),a=Tce(n,i,s),c=e.cache.imageryLayerMipmapSamplers;l(c)||(c={},e.cache.imageryLayerMipmapSamplers=c);let u=c[a];l(u)||(u=c[a]=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i,maximumAnisotropy:s})),t.generateMipmap(Ud.NICEST),t.sampler=u}else{let r=Tce(n,i,0),s=e.cache.imageryLayerNonMipmapSamplers;l(s)||(s={},e.cache.imageryLayerNonMipmapSamplers=s);let a=s[r];l(a)||(a=s[r]=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i})),t.sampler=a}};Pi.prototype._reprojectTexture=function(e,t,n){let i=t.textureWebMercator||t.texture,o=t.rectangle,r=e.context;if(n=n??!0,n&&!(this._imageryProvider.tilingScheme.projection instanceof Hi)&&o.width/i.width>1e-5){let s=this;t.addReference();let a=new Hl({persists:!0,owner:this,preExecute:function(c){S9e(c,r,i,t.rectangle)},postExecute:function(c){t.texture=c,s._finalizeReprojectTexture(r,c),t.state=qn.READY,t.releaseReference()},canceled:function(){t.state=qn.TEXTURE_LOADED,t.releaseReference()}});this._reprojectComputeCommands.push(a)}else n&&(t.texture=i),this._finalizeReprojectTexture(r,i),t.state=qn.READY};Pi.prototype.queueReprojectionCommands=function(e){let t=this._reprojectComputeCommands,n=t.length;for(let i=0;i<n;++i)e.commandList.push(t[i]);t.length=0};Pi.prototype.cancelReprojections=function(){this._reprojectComputeCommands.forEach(function(e){l(e.canceled)&&e.canceled()}),this._reprojectComputeCommands.length=0};Pi.prototype.getImageryFromCache=function(e,t,n,i){let o=Bce(e,t,n),r=this._imageryCache[o];return l(r)||(r=new kB(this,e,t,n,i),this._imageryCache[o]=r),r.addReference(),r};Pi.prototype.removeImageryFromCache=function(e){let t=Bce(e.x,e.y,e.level);delete this._imageryCache[t]};function Bce(e,t,n){return JSON.stringify([e,t,n])}var $2={u_textureDimensions:function(){return this.textureDimensions},u_texture:function(){return this.texture},textureDimensions:new k,texture:void 0},T9e=jt.supportsTypedArrays()?new Float32Array(128):void 0;function S9e(e,t,n,i){let o=t.cache.imageryLayer_reproject;if(!l(o)){o=t.cache.imageryLayer_reproject={vertexArray:void 0,shaderProgram:void 0,sampler:void 0,destroy:function(){l(this.framebuffer)&&this.framebuffer.destroy(),l(this.vertexArray)&&this.vertexArray.destroy(),l(this.shaderProgram)&&this.shaderProgram.destroy()}};let y=new Float32Array(256),C=0;for(let B=0;B<64;++B){let v=B/63;y[C++]=0,y[C++]=v,y[C++]=1,y[C++]=v}let E={position:0,webMercatorT:1},I=Bs.getRegularGridIndices(2,64),b=Et.createIndexBuffer({context:t,typedArray:I,usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT});o.vertexArray=new li({context:t,attributes:[{index:E.position,vertexBuffer:Et.createVertexBuffer({context:t,typedArray:y,usage:Qe.STATIC_DRAW}),componentsPerAttribute:2},{index:E.webMercatorT,vertexBuffer:Et.createVertexBuffer({context:t,sizeInBytes:512,usage:Qe.STREAM_DRAW}),componentsPerAttribute:1}],indexBuffer:b});let S=new We({sources:[Z2]});o.shaderProgram=ln.fromCache({context:t,vertexShaderSource:S,fragmentShaderSource:J2,attributeLocations:E}),o.sampler=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:pi.LINEAR})}n.sampler=o.sampler;let r=n.width,s=n.height;$2.textureDimensions.x=r,$2.textureDimensions.y=s,$2.texture=n;let a=Math.sin(i.south),c=.5*Math.log((1+a)/(1-a));a=Math.sin(i.north);let f=1/(.5*Math.log((1+a)/(1-a))-c),h=new Nt({context:t,width:r,height:s,pixelFormat:n.pixelFormat,pixelDatatype:n.pixelDatatype,preMultiplyAlpha:n.preMultiplyAlpha});D.isPowerOfTwo(r)&&D.isPowerOfTwo(s)&&h.generateMipmap(Ud.NICEST);let A=i.south,g=i.north,m=T9e,_=0;for(let y=0;y<64;++y){let C=y/63,E=D.lerp(A,g,C);a=Math.sin(E);let b=(.5*Math.log((1+a)/(1-a))-c)*f;m[_++]=b,m[_++]=b}o.vertexArray.getAttribute(1).vertexBuffer.copyFromArrayView(m),e.shaderProgram=o.shaderProgram,e.outputTexture=h,e.uniformMap=$2,e.vertexArray=o.vertexArray}function w9e(e,t,n){let i=e._imageryProvider,o=i.tilingScheme,r=o.ellipsoid,s=e._imageryProvider.tilingScheme.projection instanceof Hi?1:Math.cos(n),a=o.rectangle,u=r.maximumRadius*a.width*s/(i.tileWidth*o.getNumberOfXTilesAtLevel(0))/t,f=Math.log(u)/Math.log(2);return Math.round(f)|0}function B9e(e,t){e.numberOfListeners>0?e.raiseEvent(t):console.error(t)}async function D9e(e,t){let n;try{if(n=await Promise.resolve(t),e.isDestroyed())return;e._imageryProvider=n,e._readyEvent.raiseEvent(n)}catch(i){B9e(e._errorEvent,i)}}var ds=Pi;var cj=class{constructor(){this.alpha=!1,this.brightness=!1,this.contrast=!1,this.hue=!1,this.saturation=!1,this.gamma=!1,this.colorToAlpha=!1}},eQ=cj;var lj=class{constructor(t,n,i,o){this._minX=t??0,this._minY=n??0,this._maxX=i??0,this._maxY=o??0}get minX(){return this._minX}set minX(t){this._minX=t}get minY(){return this._minY}set minY(t){this._minY=t}get maxX(){return this._maxX}set maxX(t){this._maxX=t}get maxY(){return this._maxY}set maxY(t){this._maxY=t}contains(t,n){return t>=this.minX&&t<this.maxX&&n>=this.minY&&n<this.maxY}containsExclusive(t,n){return t>this.minX&&t<this.maxX&&n>this.minY&&n<this.maxY}containsInclusive(t,n){return t>=this.minX&&t<=this.maxX&&n>=this.minY&&n<=this.maxY}},GB=lj;var v9e=new ae,Dce=new ae,P9e=new ae,R9e=new ae,M9e=new ae,N9e=new ae,uj=class e{constructor(t,n,i,o,r){this._x=t,this._y=n,this._level=i,this._textureCoordinateRectangle=o,this._imagery=r}get x(){return this._x}get y(){return this._y}get level(){return this._level}get textureCoordinateRectangle(){return this._textureCoordinateRectangle}get imagery(){return this._imagery}static createImageryCoverages(t,n,i){if(!n.show)return[];let o=n.imageryProvider,r=e._clampImageryLevel(o,i),s=ae.intersection(o.rectangle,n.rectangle,v9e),a=o.tilingScheme,c=e._computeImageryRange(t,s,a,r),u=R9e;a.rectangleToNativeRectangle(t,u);let f=M9e;a.rectangleToNativeRectangle(s,f);let h=(g,m,_)=>{let y=a.tileXYToRectangle(g,m,_),C=ae.intersection(y,s,P9e);if(!l(C))return;let E=N9e;return a.rectangleToNativeRectangle(C,E),E};return e._computeImageryCoverages(n,c,r,u,h)}static _clampImageryLevel(t,n){let i=t.minimumLevel??0,o=t.maximumLevel??Number.POSITIVE_INFINITY,r=Math.min(o-1,Math.max(i,n));return Math.floor(r)}static _computeImageryRange(t,n,i,o){let r=e._computeOverlappedRectangle(t,n),s=i.positionToTileXY(ae.northwest(r),o),a=i.positionToTileXY(ae.southeast(r),o),c=new GB;c.minX=s.x,c.minY=s.y,c.maxX=a.x,c.maxY=a.y;let u=t.width/512,f=t.height/512,h=i.tileXYToRectangle(c.minX,c.minY,o);Math.abs(h.south-t.north)<f&&c.minY<c.maxY&&++c.minY,Math.abs(h.east-t.west)<u&&c.minX<c.maxX&&++c.minX;let m=i.tileXYToRectangle(c.maxX,c.maxY,o);return Math.abs(m.north-t.south)<f&&c.maxY>c.minY&&--c.maxY,Math.abs(m.west-t.east)<u&&c.maxX>c.minX&&--c.maxX,c}static _clampRectangle(t,n,i){return l(i)||(i=new ae),t.south>=n.north?i.north=i.south=n.north:t.north<=n.south?i.north=i.south=n.south:(i.south=Math.max(t.south,n.south),i.north=Math.min(t.north,n.north)),t.west>=n.east?i.west=i.east=n.east:t.east<=n.west?i.west=i.east=n.west:(i.west=Math.max(t.west,n.west),i.east=Math.min(t.east,n.east)),i}static _computeOverlappedRectangle(t,n){let i=ae.intersection(t,n,Dce);return l(i)?i:e._clampRectangle(t,n,Dce)}static _computeImageryCoverages(t,n,i,o,r){let s=[];for(let a=n.minX;a<=n.maxX;a++){let c=r(a,n.maxY,i);if(l(c))for(let u=n.minY;u<=n.maxY;u++){let f=r(a,u,i);if(!l(f))continue;let h=e._localizeToCartesianRectangle(f,o,void 0),A=t.getImageryFromCache(a,u,i),g=new e(a,u,i,h,A);s.push(g)}}return s}static _localizeToCartesianRectangle(t,n,i){l(i)||(i=new GB);let o=1/n.width,r=1/n.height;return i.minX=(t.west-n.west)*o,i.minY=(t.south-n.south)*r,i.maxX=(t.east-n.west)*o,i.maxY=(t.north-n.south)*r,i}},zB=uj;var fj=class e{static readAttributeAsTypedArray(t){let n=e.readAttributeAsRawCompactTypedArray(t),i=t.normalized,o=t.quantization;if(!l(o)&&!i)return n;let r=t.type,s=t.count,a=n;return i&&(a=Fn.dequantize(n,t.componentDatatype,r,s)),l(o)?e.dequantize(a,s,r,o):a}static readAttributeAsRawCompactTypedArray(t){let n=t.type,i=t.count,o=Ht.getNumberOfComponents(n),r=i*o,s=t.componentDatatype,a=t.quantization;l(a)&&(s=a.componentDatatype);let c=t.buffer,u=t.byteOffset,f=t.byteStride,h=q.getSizeInBytes(s),A=o*h;if(!l(f)||f===A){let I=q.createTypedArray(s,r);return c.getBufferData(I,u),I}let g=new Uint8Array(c.sizeInBytes);c.getBufferData(g);let m=q.createTypedArray(s,r),_=f??A,y=new DataView(g.buffer,g.byteOffset,g.byteLength),C=new Array(o),E=e.createComponentsReader(s);for(let I=0;I<i;++I){let b=u+I*_;E(y,b,o,C);for(let S=0;S<o;++S)m[I*o+S]=C[S]}return m}static dequantize(t,n,i,o){if(o.octEncoded){let a=e.octDecode(t,n,o.normalizationRange,void 0);return o.octEncodedZXY&&e.convertZxyToXyz(a,a),a}let r=o.quantizedVolumeStepSize,s=o.quantizedVolumeOffset;if(i===Ht.SCALAR)return e.dequantize1D(t,n,r,s,void 0);if(i===Ht.VEC2)return e.dequantize2D(t,n,r,s,void 0);if(i===Ht.VEC3)return e.dequantize3D(t,n,r,s,void 0);if(i===Ht.VEC4)return e.dequantize4D(t,n,r,s,void 0);throw new me(`Element type for dequantization must be SCALAR, VEC2, VEC3, or VEC4, but is ${i}`)}static octDecode(t,n,i,o){l(o)||(o=new Float32Array(t.length));let r=new d;for(let s=0;s<n;s++)d.unpack(t,s*3,r),Fn.octDecodeInRange(r,i,r),d.pack(o,r,s*3);return o}static convertZxyToXyz(t,n,i){l(i)||(i=new Float32Array(t.length));let o=0;for(let r=0;r<n;r++,o+=3){let s=t[o+0],a=t[o+1],c=t[o+2];i[o+0]=a,i[o+1]=c,i[o+2]=s}return i}static dequantize1D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));for(let s=0;s<n;s++){let c=t[s]*i+o;r[s]=c}return r}static dequantize2D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new k;for(let a=0;a<n;a++)k.unpack(t,a*2,s),k.multiplyComponents(s,i,s),k.add(s,o,s),k.pack(s,r,a*2);return r}static dequantize3D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new d;for(let a=0;a<n;a++)d.unpack(t,a*3,s),d.multiplyComponents(s,i,s),d.add(s,o,s),d.pack(s,r,a*3);return r}static dequantize4D(t,n,i,o,r){l(r)||(r=new Float32Array(t.length));let s=new se;for(let a=0;a<n;a++)se.unpack(t,a*4,s),se.multiplyComponents(s,i,s),se.add(s,o,s),se.pack(s,r,a*4);return r}static createComponentsReader(t){let n=e.createComponentReader(t),i=q.getSizeInBytes(t);return function(o,r,s,a){let c=r;for(let u=0;u<s;++u)a[u]=n(o,c),c+=i}}static createComponentReader(t){switch(t){case q.BYTE:return function(n,i){return n.getInt8(i)};case q.UNSIGNED_BYTE:return function(n,i){return n.getUint8(i)};case q.SHORT:return function(n,i){return n.getInt16(i,!0)};case q.UNSIGNED_SHORT:return function(n,i){return n.getUint16(i,!0)};case q.INT:return function(n,i){return n.getInt32(i,!0)};case q.UNSIGNED_INT:return function(n,i){return n.getUint32(i,!0)};case q.FLOAT:return function(n,i){return n.getFloat32(i,!0)};case q.DOUBLE:return function(n,i){return n.getFloat64(i,!0)}}throw new me(`The componentType must be a valid ComponentDatatype, but is ${t}`)}static transform3D(t,n,i){l(i)||(i=new Float32Array(t.length));let o=new d,r=t.length/3;for(let s=0;s<r;s++)d.unpack(t,s*3,o),R.multiplyByPoint(n,o,o),d.pack(o,i,s*3);return i}static readIndicesAsTypedArray(t){let n=t.typedArray;if(l(n))return n;let i=t.buffer,o=t.count,r=t.indexDatatype,s=e.createIndexTypedArray(r,o);return i.getBufferData(s),s}static readIndicesAsTriangleIndicesTypedArray(t,n){let i=e.readIndicesAsTypedArray(t);if(n===Me.TRIANGLES)return i;if(n===Me.TRIANGLE_STRIP)return e.convertTriangleStripToTriangleIndices(i);if(n===Me.TRIANGLE_FAN)return e.convertTriangleFanToTriangleIndices(i);throw new me(`The primitiveType must be TRIANGLES (${Me.TRIANGLES}, TRIANGLE_STRIP (${Me.TRIANGLE_STRIP}, or TRIANGLE_FAN (${Me.TRIANGLE_FAN}, but is ${n}`)}static convertTriangleStripToTriangleIndices(t){let n=t.constructor((t.length-2)*3);for(let i=0;i<t.length-2;i++)i%2===1?(n[i*3+0]=t[i+0],n[i*3+1]=t[i+2],n[i*3+2]=t[i+1]):(n[i*3+0]=t[i+0],n[i*3+1]=t[i+1],n[i*3+2]=t[i+2]);return n}static convertTriangleFanToTriangleIndices(t){let n=t.constructor((t.length-2)*3);for(let i=0;i<t.length-2;i++)n[i*3+0]=t[i+0],n[i*3+1]=t[i+1],n[i*3+2]=t[i+2];return n}static createIndexTypedArray(t,n){switch(t){case Fe.UNSIGNED_BYTE:return new Uint8Array(n);case Fe.UNSIGNED_SHORT:return new Uint16Array(n);case Fe.UNSIGNED_INT:return new Uint32Array(n)}throw new me(`The indexDatatype must be UNSIGNED_BYTE (${Fe.UNSIGNED_BYTE}, UNSIGNED_SHORT (${Fe.UNSIGNED_SHORT}, or UNSIGNED_INT (${Fe.UNSIGNED_INT}, but is ${t}`)}},tQ=fj;var dj=class e{static createTextureCoordinatesForMappedPositions(t,n){let i=t.cartographicPositions,o=t.cartographicBoundingRectangle,r=t.numPositions;return e._createTextureCoordinates(i,r,o,n)}static _createTextureCoordinates(t,n,i,o){let r=new Xe;Xe.fromRectangle(i,o,r);let s=e.createProjectedPositions(t,o),a=e.computeTexCoords(s,r);return e.createTypedArrayFromCartesians2(n,a)}static createTextureCoordinatesAttributeForMappedPositions(t,n){let i=e.createTextureCoordinatesForMappedPositions(t,n);return e.createTexCoordAttribute(i)}static createCartographicPositions(t,n,i){let o=tQ.readAttributeAsTypedArray(t),r=t.type,s=Ht.getNumberOfComponents(r),a=e.createIterableCartesian3FromTypedArray(o,s),c=e.transformCartesians3(a,n);return e.transformToCartographic(c,i)}static createIterableCartesian3FromTypedArray(t,n){let i=new d,o=t.length/n;return{[Symbol.iterator]:function*(){for(let s=0;s<o;s++)i.x=t[s*n+0],i.y=t[s*n+1],i.z=t[s*n+2],yield i}}}static map(t,n){return{[Symbol.iterator]:function*(){for(let o of t)yield n(o)}}}static computeCartographicBoundingRectangle(t,n){l(n)||(n=new ae);let i=Number.NEGATIVE_INFINITY,o=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY;for(let a of t)i=Math.max(i,a.latitude),o=Math.min(o,a.latitude),r=Math.max(r,a.longitude),s=Math.min(s,a.longitude);return n.north=i,n.south=o,n.east=r,n.west=s,n}static transformCartesians3(t,n){let i=new d;return e.map(t,r=>(R.multiplyByPoint(n,r,i),i))}static transformToCartographic(t,n){let i=new Ae;return e.map(t,r=>(n.cartesianToCartographic(r,i),i))}static createProjectedPositions(t,n){let i=new d;return e.map(t,r=>(n.project(r,i),i))}static computeTexCoords(t,n){let i=new k,o=1/n.width,r=1/n.height;return e.map(t,a=>{let c=(a.x-n.x)*o,u=(a.y-n.y)*r,f=Math.min(Math.max(c,0),1),h=Math.min(Math.max(u,0),1);return i.x=f,i.y=h,i})}static createTypedArrayFromCartesians2(t,n){let i=new Float32Array(t*2),o=0;for(let r of n)i[o*2+0]=r.x,i[o*2+1]=r.y,o++;return i}static createTexCoordAttribute(t){return{name:"Imagery Texture Coordinates",semantic:ct.TEXCOORD,setIndex:0,componentDatatype:q.FLOAT,type:Ht.VEC2,normalized:!1,count:t.length/2,min:void 0,max:void 0,constant:new k(0,0),quantization:void 0,typedArray:t,byteOffset:0,byteStride:void 0}}},Ox=dj;var hj=class{constructor(t,n,i,o){this._cartographicPositions=t,this._numPositions=n,this._cartographicBoundingRectangle=i,this._ellipsoid=o}get cartographicPositions(){return this._cartographicPositions}get numPositions(){return this._numPositions}get cartographicBoundingRectangle(){return this._cartographicBoundingRectangle}get ellipsoid(){return this._ellipsoid}},nQ=hj;var mj=class e{constructor(t,n,i){this._model=t,this._runtimeNode=n,this._runtimePrimitive=i,this._mappedPositionsPerEllipsoid=void 0,this._mappedPositionsModelMatrix=new R,this._lastImageryLayersModificationCounter=0,this._imageryTexCoordAttributesPerProjection=void 0,this._currentImageryLayers=void 0,this._coveragesPerLayer=void 0,this._allImageriesReady=!1}coveragesForImageryLayer(t){let o=this._model.imageryLayers.indexOf(t);if(o===-1)throw new me("Imagery layer is not part of the model");let r=this._coveragesPerLayer;if(!l(r))throw new me("The coveragesPerLayer have not been computed yet");return r[o]}update(t){let n=this._model,r=n.content.tileset.imageryLayersModificationCounter;this._lastImageryLayersModificationCounter!==r&&(delete this._mappedPositionsPerEllipsoid,this._lastImageryLayersModificationCounter=r),this._mappedPositionsNeedUpdate&&(n.resetDrawCommands(),this._mappedPositionsPerEllipsoid=this._computeMappedPositionsPerEllipsoid(),this._deleteCoveragesPerLayer(),this._destroyImageryTexCoordAttributes()),l(this._imageryTexCoordAttributesPerProjection)||(this._imageryTexCoordAttributesPerProjection=this._computeImageryTexCoordsAttributesPerProjection(),this._uploadImageryTexCoordAttributes(t.context)),l(this._coveragesPerLayer)||(this._computeCoveragesPerLayer(),this._allImageriesReady=!1),this._allImageriesReady||this._updateImageries(t)}_deleteCoveragesPerLayer(){let t=this._coveragesPerLayer;if(!l(t))return;let n=this._currentImageryLayers,i=t.length;for(let o=0;o<i;o++){let r=n[o],s=t[o];this._deleteCoverages(r,s)}delete this._currentImageryLayers,delete this._coveragesPerLayer}_deleteCoverages(t,n){if(t.isDestroyed())return;let i=n.length;for(let o=0;o<i;o++)n[o].imagery.releaseReference()}_uploadImageryTexCoordAttributes(t){let n=this._imageryTexCoordAttributesPerProjection;if(!l(n))return;let i=n.length;for(let o=0;o<i;o++){let r=n[o],s=Et.createVertexBuffer({context:t,typedArray:r.typedArray,usage:Qe.STATIC_DRAW});s.vertexArrayDestroyable=!1,r.buffer=s}}_destroyImageryTexCoordAttributes(){let t=this._imageryTexCoordAttributesPerProjection;if(!l(t))return;let n=t.length;for(let i=0;i<n;i++){let o=t[i];l(o)&&(l(o.buffer)&&(o.buffer.isDestroyed()||o.buffer.destroy()),t[i]=void 0)}delete this._imageryTexCoordAttributesPerProjection}get _mappedPositionsNeedUpdate(){if(!l(this._mappedPositionsPerEllipsoid))return!0;let t=this._model,n=this._mappedPositionsModelMatrix;return!R.equals(t.modelMatrix,n)}_computeMappedPositionsPerEllipsoid(){let t=this._model,n=this._runtimeNode,i=this._runtimePrimitive,o=e._obtainPrimitivePositionAttribute(i.primitive),r=o.count,s=e._computePrimitivePositionTransform(t,n,void 0),a=[],c=e._computeUniqueEllipsoids(t.imageryLayers),u=c.length;for(let f=0;f<u;f++){let h=c[f],A=Ox.createCartographicPositions(o,s,h),g=Ox.computeCartographicBoundingRectangle(A),m=new nQ(A,r,g,h);a.push(m)}return R.clone(t.modelMatrix,this._mappedPositionsModelMatrix),a}static _computeUniqueEllipsoids(t){let n=new Set,i=t.length;for(let o=0;o<i;o++){let r=t.get(o),s=e._getEllipsoid(r);n.add(s)}return[...n]}_computeImageryTexCoordsAttributesPerProjection(){let n=this._model.imageryLayers,i=e._extractProjections(n),o=[...new Set(i)];return this._createImageryTexCoordAttributes(o)}static _extractProjections(t){let n=[],i=t.length;for(let o=0;o<i;o++){let r=t.get(o),s=e._getProjection(r);n.push(s)}return n}static _getProjection(t){return t.imageryProvider.tilingScheme.projection}_createImageryTexCoordAttributes(t){let n=[],i=t.length;for(let o=0;o<i;o++){let r=t[o],s=r.ellipsoid,a=this.mappedPositionsForEllipsoid(s),c=Ox.createTextureCoordinatesAttributeForMappedPositions(a,r);n.push(c)}return n}_computeCoveragesPerLayer(){let t=[],n=[],o=this._model.imageryLayers,r=o.length;for(let s=0;s<r;s++){let a=o.get(s),c=this._computeCoverage(a);t.push(c),n.push(a)}this._coveragesPerLayer=t,this._currentImageryLayers=n}_computeCoverage(t){let i=this.mappedPositionsForImageryLayer(t).cartographicBoundingRectangle,o=this._computeImageryLevel(t,i);return zB.createImageryCoverages(i,t,o)}_computeImageryLevel(t,n){let i=t.imageryProvider,r=i.tilingScheme.rectangle,s=1,a=n.width,c=r.width;n.height>n.width&&(a=n.height,c=r.height);let u=Math.log2(s*c/a);return zB._clampImageryLevel(i,u)}_updateImageries(t){let n=this._model,i=this._coveragesPerLayer,o=i.length,r=!0;for(let s=0;s<o;s++){let a=i[s],c=a.length;for(let u=0;u<c;u++){let h=a[u].imagery;h.state===qn.READY||h.state===qn.FAILED||h.state===qn.INVALID||(r=!1,h.processStateMachine(t,!1,!1))}}r&&n.resetDrawCommands(),this._allImageriesReady=r}mappedPositionsForImageryLayer(t){let n=e._getEllipsoid(t);return this.mappedPositionsForEllipsoid(n)}mappedPositionsForEllipsoid(t){let n=this._mappedPositionsPerEllipsoid;if(!l(n))throw new me("The mappedPositions have not been computed yet");let i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.ellipsoid===t)return r}throw new me(`Could not find mapped positions for ellipsoid ${t}`)}imageryTexCoordAttributesPerProjection(){let t=this._imageryTexCoordAttributesPerProjection;if(!l(t))throw new me("The imagery texture coordinate attributes have not been computed yet");return this._imageryTexCoordAttributesPerProjection}get ready(){let t=this._coveragesPerLayer;return l(t)?this._allImageriesReady:!1}isDestroyed(){return!1}destroy(){if(!this.isDestroyed())return this._deleteCoveragesPerLayer(),this._destroyImageryTexCoordAttributes(),ue(this)}static _computePrimitivePositionTransform(t,n,i){l(i)||(i=new R);let o=t.sceneGraph;return R.clone(R.IDENTITY,i),R.multiply(i,t.modelMatrix,i),R.multiply(i,o.components.transform,i),R.multiply(i,o.axisCorrectionMatrix,i),R.multiply(i,n.computedTransform,i),i}static _obtainPrimitivePositionAttribute(t){let n=Qt.getAttributeBySemantic(t,"POSITION");if(!l(n))throw new me("The primitive does not have a POSITION attribute");return n}static _getEllipsoid(t){return t.imageryProvider.tilingScheme.projection.ellipsoid}},Fx=mj;var Aj=class{constructor(t,n,i,o,r){this.imageryLayer=t,this.texture=n,this.textureTranslationAndScale=i,this.textureCoordinateRectangle=o,this.imageryTexCoordAttributeSetIndex=r}},iQ=Aj;var L9e=!1,O9e=new ae,F9e=new ae,pj=class e{static process(t,n,i){let o=t.model,r=n.modelPrimitiveImagery;if(!l(r)||!r.ready)return;let s=o.imageryLayers,a=Fx._extractProjections(s),c=[...new Set(a)],u=e._computeIndexMapping(a,c),f=e._createImageryInputs(s,r,u);if(f.length===0)return;f.length>10&&(yt("imagery-texture-units",`Warning: Draped imagery requires ${f.length} texture units, truncating`),f.length=10),e._addImageryTexCoordAttributesToRenderResources(r,t);let h=[];for(let A=0;A<s.length;A++)h.push(s.get(A));e._processImageryInputs(h,t,f,c.length)}static _addImageryTexCoordAttributesToRenderResources(t,n){let i=t.imageryTexCoordAttributesPerProjection();for(let o of i)e._addImageryTexCoordAttributeToRenderResources(o,n)}static _addImageryTexCoordAttributeToRenderResources(t,n){let i=Ht.getNumberOfComponents(t.type),o={index:n.attributeIndex++,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,count:t.count,componentsPerAttribute:i,componentDatatype:t.componentDatatype,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};n.attributes.push(o)}static _processImageryInputs(t,n,i,o){let r=n.shaderBuilder,s=e._computeImageryFlags(t),a=i.length;r.addDefine("HAS_IMAGERY"),r.addDefine(`IMAGERY_TEXTURE_UNITS ${a}`),e._addAttributes(r,o),e._defineUniforms(r,s),e._buildSampleAndBlendFunction(r,s),e._createMainImageryShader(r,i,s);let c=n.uniformMap,u=e._createImageryUniforms(i);e._setImageryUniforms(c,u)}static _addAttributes(t,n){for(let r=0;r<n;r++)t.addAttribute("vec2",`a_imagery_texCoord_${r}`),t.addVarying("vec2",`v_imagery_texCoord_${r}`);let i="initializeImageryAttributes",o=`void ${i}()`;t.addFunction(i,o,pe.VERTEX);for(let r=0;r<n;r++)t.addFunctionLines(i,[`v_imagery_texCoord_${r} = a_imagery_texCoord_${r};`])}static _computeImageryFlags(t){let n=new eQ;for(let i=0;i<t.length;i++){let o=t[i];n.alpha|=o.alpha!==1,n.brightness|=o.brightness!==ds.DEFAULT_BRIGHTNESS,n.contrast|=o.contrast!==ds.DEFAULT_CONTRAST,n.hue|=o.hue!==ds.DEFAULT_HUE,n.saturation|=o.saturation!==ds.DEFAULT_SATURATION,n.gamma|=o.gamma!==ds.DEFAULT_GAMMA;let r=l(o.colorToAlpha)&&o.colorToAlphaThreshold>0;n.colorToAlpha|=r}return n}static _defineUniforms(t,n){t.addUniform("sampler2D","u_imageryTextures[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),t.addUniform("vec4","u_imageryTextureCoordinateRectangle[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),t.addUniform("vec4","u_imageryTextureTranslationAndScale[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.alpha&&t.addUniform("float","u_imageryTextureAlpha[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.brightness&&t.addUniform("float","u_imageryTextureBrightness[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.contrast&&t.addUniform("float","u_imageryTextureContrast[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.hue&&t.addUniform("float","u_imageryTextureHue[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.saturation&&t.addUniform("float","u_imageryTextureSaturation[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.gamma&&t.addUniform("float","u_imageryTextureOneOverGamma[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT),n.colorToAlpha&&t.addUniform("vec4","u_imageryTextureColorToAlpha[IMAGERY_TEXTURE_UNITS]",pe.FRAGMENT)}static _createSampleAndBlendFunctionSignature(t){let n="sampleAndBlend",i=[];i.push("vec4 previousColor"),i.push("sampler2D textureToSample"),i.push("vec2 textureCoordinates"),i.push("vec4 textureCoordinateRectangle"),i.push("vec4 textureCoordinateTranslationAndScale"),t.alpha&&i.push("float textureAlpha"),t.brightness&&i.push("float textureBrightness"),t.contrast&&i.push("float textureContrast"),t.hue&&i.push("float textureHue"),t.saturation&&i.push("float textureSaturation"),t.gamma&&i.push("float textureOneOverGamma"),t.colorToAlpha&&i.push("vec4 colorToAlpha");let o=i.join(", ");return`vec4 ${n}(${o})`}static _buildSampleAndBlendFunction(t,n){let i="sampleAndBlend",o=e._createSampleAndBlendFunctionSignature(n);t.addFunction(i,o,pe.FRAGMENT),t.addFunctionLines(i,["float effectiveAlpha = 1.0;"]),n.alpha&&t.addFunctionLines(i,["effectiveAlpha = textureAlpha;"]),t.addFunctionLines(i,["if (textureCoordinates.x < textureCoordinateRectangle.x) effectiveAlpha = 0.0;","if (textureCoordinates.x > textureCoordinateRectangle.z) effectiveAlpha = 0.0;","if (textureCoordinates.y < textureCoordinateRectangle.y) effectiveAlpha = 0.0;","if (textureCoordinates.y > textureCoordinateRectangle.w) effectiveAlpha = 0.0;","vec2 translation = textureCoordinateTranslationAndScale.xy;","vec2 scale = textureCoordinateTranslationAndScale.zw;","vec2 effectiveTextureCoordinates = textureCoordinates * scale + translation;","vec4 value = texture(textureToSample, effectiveTextureCoordinates);","value = czm_srgbToLinear(value);","vec3 color = value.rgb;","float alpha = value.a;"]),n.colorToAlpha&&t.addFunctionLines(i,["vec3 colorDiff = abs(color.rgb - colorToAlpha.rgb);","colorDiff.r = czm_maximumComponent(colorDiff);","alpha = czm_branchFreeTernary(colorDiff.r < colorToAlpha.a, 0.0, alpha);"]),n.gamma?t.addFunctionLines(i,["color = pow(color, vec3(textureOneOverGamma));"]):t.addFunctionLines(i,["vec4 tempColor = czm_gammaCorrect(vec4(color, alpha));","color = tempColor.rgb;","alpha = tempColor.a;"]),n.brightness&&t.addFunctionLines(i,["color = mix(vec3(0.0), color, textureBrightness);"]),n.contrast&&t.addFunctionLines(i,["color = mix(vec3(0.5), color, textureContrast);"]),n.hue&&t.addFunctionLines(i,["color = czm_hue(color, textureHue);"]),n.saturation&&t.addFunctionLines(i,["color = czm_saturation(color, textureSaturation);"]),t.addFunctionLines(i,["float sourceAlpha = alpha * effectiveAlpha;","float outAlpha = mix(previousColor.a, 1.0, sourceAlpha);","outAlpha += sign(outAlpha) - 1.0;","vec3 outColor = mix(previousColor.rgb * previousColor.a, color, sourceAlpha) / outAlpha;","vec4 result = vec4(outColor, max(outAlpha, 0.0));"]),L9e&&t.addFunctionLines(i,["if (abs(textureCoordinates.x - textureCoordinateRectangle.x) < (1.0/256.0) || "," abs(textureCoordinates.x - textureCoordinateRectangle.z) < (1.0/256.0) || "," abs(textureCoordinates.y - textureCoordinateRectangle.y) < (1.0/256.0) || "," abs(textureCoordinates.y - textureCoordinateRectangle.w) < (1.0/256.0))","{"," result = vec4(1.0, 0.0, 0.0, effectiveAlpha);","}"]),t.addFunctionLines(i,["return result;"])}static _createSampleAndBlendCallArguments(t,n,i){let o=`v_imagery_texCoord_${n}`,r=[];return r.push("blendedBaseColor"),r.push(`u_imageryTextures[${i}]`),r.push(`${o}`),r.push(`u_imageryTextureCoordinateRectangle[${i}]`),r.push(`u_imageryTextureTranslationAndScale[${i}]`),t.alpha&&r.push(`u_imageryTextureAlpha[${i}]`),t.brightness&&r.push(`u_imageryTextureBrightness[${i}]`),t.contrast&&r.push(`u_imageryTextureContrast[${i}]`),t.hue&&r.push(`u_imageryTextureHue[${i}]`),t.saturation&&r.push(`u_imageryTextureSaturation[${i}]`),t.gamma&&r.push(`u_imageryTextureOneOverGamma[${i}]`),t.colorToAlpha&&r.push(`u_imageryTextureColorToAlpha[${i}]`),r.join(", ")}static _createMainImageryShader(t,n,i){let o="blendBaseColorWithImagery";t.addFunction(o,"vec4 blendBaseColorWithImagery(vec4 baseColorWithAlpha)",pe.FRAGMENT),t.addFunctionLines(o,["vec4 blendedBaseColor = baseColorWithAlpha;"]);for(let r=0;r<n.length;r++){let a=n[r].imageryTexCoordAttributeSetIndex,c=e._createSampleAndBlendCallArguments(i,a,r);t.addFunctionLines(o,[`blendedBaseColor = sampleAndBlend(${c});`])}t.addFunctionLines(o,["return blendedBaseColor;"])}static _createImageryUniforms(t){let n=t.length,i={};i.imageryTextures=Array(n),i.imageryTextureCoordinateRectangle=Array(n),i.imageryTextureTranslationAndScale=Array(n),i.imageryTextureAlpha=Array(n),i.imageryTextureBrightness=Array(n),i.imageryTextureContrast=Array(n),i.imageryTextureHue=Array(n),i.imageryTextureSaturation=Array(n),i.imageryTextureOneOverGamma=Array(n),i.imageryTextureColorToAlpha=Array(n);for(let o=0;o<n;o++){let r=t[o],s=r.imageryLayer,a=r.texture,c=r.textureCoordinateRectangle,u=r.textureTranslationAndScale;i.imageryTextures[o]=a,i.imageryTextureTranslationAndScale[o]=u,i.imageryTextureCoordinateRectangle[o]=c,i.imageryTextureAlpha[o]=s.alpha,i.imageryTextureBrightness[o]=s.brightness,i.imageryTextureContrast[o]=s.contrast,i.imageryTextureHue[o]=s.hue,i.imageryTextureSaturation[o]=s.saturation,i.imageryTextureOneOverGamma[o]=1/s.gamma;let f=i.imageryTextureColorToAlpha[o];if(l(f)||(f=new se,i.imageryTextureColorToAlpha[o]=f),l(s.colorToAlpha)&&s.colorToAlphaThreshold>0){let A=s.colorToAlpha;f.x=A.red,f.y=A.green,f.z=A.blue,f.w=s.colorToAlphaThreshold}else f.w=-1}return i}static _setImageryUniforms(t,n){for(let i in n)if(n.hasOwnProperty(i)){let o=`u_${i}`;t[o]=function(){return n[i]}}}static _createImageryInputs(t,n,i){let o=[];for(let r=0;r<t.length;r++){let s=t.get(r);if(!s.show)continue;let a=i[r],u=n.mappedPositionsForImageryLayer(s).cartographicBoundingRectangle,f=n.coveragesForImageryLayer(s);for(let h=0;h<f.length;h++){let A=f[h],g=e._createImageryInput(s,A,u,a);l(g)&&o.push(g)}}return o}static _createImageryInput(t,n,i,o){let r=n.imagery;if(r.state===qn.FAILED||r.state===qn.INVALID)return;let s=r.textureWebMercator;if(!l(s)&&(s=r.texture,!l(s))){r.state===qn.READY&&console.log(`Imagery at ${n.x}, ${n.y} (level ${n.level}) does not have any texture - state ${r.state}`);return}let a=e._computeTextureTranslationAndScale(t,i,r.rectangle),c=n.textureCoordinateRectangle,u=new se(c.minX,c.minY,c.maxX,c.maxY);return new iQ(t,s,a,u,o)}static _computeTextureTranslationAndScale(t,n,i){let o=t.imageryProvider.tilingScheme,r=o.rectangleToNativeRectangle(n,O9e),s=o.rectangleToNativeRectangle(i,F9e);return e._computeTextureTranslationAndScaleFromNative(r,s)}static _computeTextureTranslationAndScaleFromNative(t,n){let i=1/n.width,o=1/n.height,r=t.west-n.west,s=t.south-n.south,a=r*i,c=s*o,u=t.width*i,f=t.height*o;return new se(a,c,u,f)}static _computeIndexMapping(t,n){let i=[],o=t.length;for(let r=0;r<o;r++){let s=t[r],a=n.indexOf(s);i.push(a)}return i}},oQ=pj;var rQ=`#ifdef USE_IBL_LIGHTING +vec3 computeIBL(vec3 position, vec3 normal, vec3 lightDirection, vec3 lightColorHdr, czm_modelMaterial material) +{ + #if defined(DIFFUSE_IBL) || defined(SPECULAR_IBL) + // Environment maps were provided, use them for IBL + vec3 viewDirection = -normalize(position); + vec3 iblColor = textureIBL(viewDirection, normal, material); + return iblColor; + #endif + + return vec3(0.0); +} +#endif + +#ifdef USE_CLEARCOAT +vec3 addClearcoatReflection(vec3 baseLayerColor, vec3 position, vec3 lightDirection, vec3 lightColorHdr, czm_modelMaterial material) +{ + vec3 viewDirection = -normalize(position); + vec3 halfwayDirection = normalize(viewDirection + lightDirection); + vec3 normal = material.clearcoatNormal; + float NdotL = clamp(dot(normal, lightDirection), 0.001, 1.0); + + // clearcoatF0 = vec3(pow((ior - 1.0) / (ior + 1.0), 2.0)), but without KHR_materials_ior, ior is a constant 1.5. + vec3 f0 = vec3(0.04); + vec3 f90 = vec3(1.0); + // Note: clearcoat Fresnel computed with dot(n, v) instead of dot(v, h). + // This is to make it energy conserving with a simple layering function. + float NdotV = clamp(dot(normal, viewDirection), 0.0, 1.0); + vec3 F = fresnelSchlick2(f0, f90, NdotV); + + // compute specular reflection from direct lighting + float roughness = material.clearcoatRoughness; + float alphaRoughness = roughness * roughness; + float directStrength = computeDirectSpecularStrength(normal, lightDirection, viewDirection, halfwayDirection, alphaRoughness); + vec3 directReflection = F * directStrength * NdotL; + vec3 color = lightColorHdr * directReflection; + + #ifdef SPECULAR_IBL + // Find the direction in which to sample the environment map + vec3 reflectMC = normalize(model_iblReferenceFrameMatrix * reflect(-viewDirection, normal)); + vec3 iblColor = computeSpecularIBL(reflectMC, NdotV, f0, roughness); + color += iblColor * material.occlusion; + #endif + + float clearcoatFactor = material.clearcoatFactor; + vec3 clearcoatColor = color * clearcoatFactor; + + // Dim base layer based on transmission loss through clearcoat + return baseLayerColor * (1.0 - clearcoatFactor * F) + clearcoatColor; +} +#endif + +#if defined(LIGHTING_PBR) && defined(HAS_NORMALS) +vec3 computePbrLighting(in czm_modelMaterial material, in vec3 position) +{ + #ifdef USE_CUSTOM_LIGHT_COLOR + vec3 lightColorHdr = model_lightColorHdr; + #else + vec3 lightColorHdr = czm_lightColorHdr; + #endif + + vec3 viewDirection = -normalize(position); + vec3 normal = material.normalEC; + vec3 lightDirection = normalize(czm_lightDirectionEC); + + vec3 directLighting = czm_pbrLighting(viewDirection, normal, lightDirection, material); + vec3 directColor = lightColorHdr * directLighting; + + // Accumulate colors from base layer + vec3 color = directColor + material.emissive; + #ifdef USE_IBL_LIGHTING + color += computeIBL(position, normal, lightDirection, lightColorHdr, material); + #endif + + #ifdef USE_CLEARCOAT + color = addClearcoatReflection(color, position, lightDirection, lightColorHdr, material); + #endif + + return color; +} +#endif + +/** + * Compute the material color under the current lighting conditions. + * All other material properties are passed through so further stages + * have access to them. + * + * @param {czm_modelMaterial} material The material properties from {@MaterialStageFS} + * @param {ProcessedAttributes} attributes + */ +void lightingStage(inout czm_modelMaterial material, ProcessedAttributes attributes) +{ + #ifdef LIGHTING_PBR + #ifdef HAS_NORMALS + vec3 color = computePbrLighting(material, attributes.positionEC); + #else + vec3 color = material.diffuse * material.occlusion + material.emissive; + #endif + // In HDR mode, the frame buffer is in linear color space. The + // post-processing stages (see PostProcessStageCollection) will handle + // tonemapping. However, if HDR is not enabled, we must tonemap else large + // values may be clamped to 1.0 + #ifndef HDR + color = czm_pbrNeutralTonemapping(color); + #endif + #else // unlit + vec3 color = material.diffuse; + #endif + + #ifdef HAS_POINT_CLOUD_COLOR_STYLE + // The colors resulting from point cloud styles are adjusted differently. + color = czm_gammaCorrect(color); + #elif !defined(HDR) + // If HDR is not enabled, the frame buffer stores sRGB colors rather than + // linear colors so the linear value must be converted. + color = czm_linearToSrgb(color); + #endif + + material.diffuse = color; +} +`;var Q9e={UNLIT:0,PBR:1},fp=Object.freeze(Q9e);var vce={name:"LightingPipelineStage"};vce.process=function(e,t){let{model:n,lightingOptions:i,shaderBuilder:o}=e;if(l(n.lightColor)){o.addDefine("USE_CUSTOM_LIGHT_COLOR",void 0,pe.FRAGMENT),o.addUniform("vec3","model_lightColorHdr",pe.FRAGMENT);let s=e.uniformMap;s.model_lightColorHdr=function(){return n.lightColor}}let{lightingModel:r}=i;r===fp.PBR?o.addDefine("LIGHTING_PBR",void 0,pe.FRAGMENT):o.addDefine("LIGHTING_UNLIT",void 0,pe.FRAGMENT),o.addFragmentLines(rQ)};var sQ=vce;var aQ=`// If the style color is white, it implies the feature has not been styled. +bool isDefaultStyleColor(vec3 color) +{ + return all(greaterThan(color, vec3(1.0 - czm_epsilon3))); +} + +vec3 blend(vec3 sourceColor, vec3 styleColor, float styleColorBlend) +{ + vec3 blendColor = mix(sourceColor, styleColor, styleColorBlend); + vec3 color = isDefaultStyleColor(styleColor.rgb) ? sourceColor : blendColor; + return color; +} + +vec2 computeTextureTransform(vec2 texCoord, mat3 textureTransform) +{ + return vec2(textureTransform * vec3(texCoord, 1.0)); +} + +#ifdef HAS_NORMAL_TEXTURE +vec2 getNormalTexCoords() +{ + vec2 texCoord = TEXCOORD_NORMAL; + #ifdef HAS_NORMAL_TEXTURE_TRANSFORM + texCoord = vec2(u_normalTextureTransform * vec3(texCoord, 1.0)); + #endif + return texCoord; +} +#endif + +#if defined(HAS_NORMAL_TEXTURE) || defined(HAS_CLEARCOAT_NORMAL_TEXTURE) +vec3 computeTangent(in vec3 position, in vec2 normalTexCoords) +{ + vec2 tex_dx = dFdx(normalTexCoords); + vec2 tex_dy = dFdy(normalTexCoords); + float determinant = tex_dx.x * tex_dy.y - tex_dy.x * tex_dx.y; + vec3 tangent = tex_dy.t * dFdx(position) - tex_dx.t * dFdy(position); + return tangent / determinant; +} +#endif + +#ifdef USE_ANISOTROPY +struct NormalInfo { + vec3 tangent; + vec3 bitangent; + vec3 normal; + vec3 geometryNormal; +}; + +NormalInfo getNormalInfo(ProcessedAttributes attributes) +{ + vec3 geometryNormal = attributes.normalEC; + #ifdef HAS_NORMAL_TEXTURE + vec2 normalTexCoords = getNormalTexCoords(); + #endif + + #ifdef HAS_BITANGENTS + vec3 tangent = attributes.tangentEC; + vec3 bitangent = attributes.bitangentEC; + #else // Assume HAS_NORMAL_TEXTURE + vec3 tangent = computeTangent(attributes.positionEC, normalTexCoords); + tangent = normalize(tangent - geometryNormal * dot(geometryNormal, tangent)); + vec3 bitangent = normalize(cross(geometryNormal, tangent)); + #endif + + #ifdef HAS_NORMAL_TEXTURE + mat3 tbn = mat3(tangent, bitangent, geometryNormal); + vec3 normalSample = texture(u_normalTexture, normalTexCoords).rgb; + normalSample = 2.0 * normalSample - 1.0; + #ifdef HAS_NORMAL_TEXTURE_SCALE + normalSample.xy *= u_normalTextureScale; + #endif + vec3 normal = normalize(tbn * normalSample); + #else + vec3 normal = geometryNormal; + #endif + + #ifdef HAS_DOUBLE_SIDED_MATERIAL + if (czm_backFacing()) { + tangent *= -1.0; + bitangent *= -1.0; + normal *= -1.0; + geometryNormal *= -1.0; + } + #endif + + NormalInfo normalInfo; + normalInfo.tangent = tangent; + normalInfo.bitangent = bitangent; + normalInfo.normal = normal; + normalInfo.geometryNormal = geometryNormal; + + return normalInfo; +} +#endif + +#if defined(HAS_NORMAL_TEXTURE) && !defined(HAS_WIREFRAME) +vec3 getNormalFromTexture(ProcessedAttributes attributes, vec3 geometryNormal) +{ + vec2 normalTexCoords = getNormalTexCoords(); + + // If HAS_BITANGENTS is set, then HAS_TANGENTS is also set + #ifdef HAS_BITANGENTS + vec3 t = attributes.tangentEC; + vec3 b = attributes.bitangentEC; + #else + vec3 t = computeTangent(attributes.positionEC, normalTexCoords); + t = normalize(t - geometryNormal * dot(geometryNormal, t)); + vec3 b = normalize(cross(geometryNormal, t)); + #endif + + mat3 tbn = mat3(t, b, geometryNormal); + vec3 normalSample = texture(u_normalTexture, normalTexCoords).rgb; + normalSample = 2.0 * normalSample - 1.0; + #ifdef HAS_NORMAL_TEXTURE_SCALE + normalSample.xy *= u_normalTextureScale; + #endif + return normalize(tbn * normalSample); +} +#endif + +#ifdef HAS_CLEARCOAT_NORMAL_TEXTURE +vec3 getClearcoatNormalFromTexture(ProcessedAttributes attributes, vec3 geometryNormal) +{ + vec2 normalTexCoords = TEXCOORD_CLEARCOAT_NORMAL; + #ifdef HAS_CLEARCOAT_NORMAL_TEXTURE_TRANSFORM + normalTexCoords = vec2(u_clearcoatNormalTextureTransform * vec3(normalTexCoords, 1.0)); + #endif + + // If HAS_BITANGENTS is set, then HAS_TANGENTS is also set + #ifdef HAS_BITANGENTS + vec3 t = attributes.tangentEC; + vec3 b = attributes.bitangentEC; + #else + vec3 t = computeTangent(attributes.positionEC, normalTexCoords); + t = normalize(t - geometryNormal * dot(geometryNormal, t)); + vec3 b = normalize(cross(geometryNormal, t)); + #endif + + mat3 tbn = mat3(t, b, geometryNormal); + vec3 normalSample = texture(u_clearcoatNormalTexture, normalTexCoords).rgb; + normalSample = 2.0 * normalSample - 1.0; + #ifdef HAS_CLEARCOAT_NORMAL_TEXTURE_SCALE + normalSample.xy *= u_clearcoatNormalTextureScale; + #endif + return normalize(tbn * normalSample); +} +#endif + +#ifdef HAS_NORMALS +vec3 computeNormal(ProcessedAttributes attributes) +{ + // Geometry normal. This is already normalized + vec3 normal = attributes.normalEC; + + #if defined(HAS_NORMAL_TEXTURE) && !defined(HAS_WIREFRAME) + normal = getNormalFromTexture(attributes, normal); + #endif + + #ifdef HAS_DOUBLE_SIDED_MATERIAL + if (czm_backFacing()) { + normal = -normal; + } + #endif + + return normal; +} +#endif + +#ifdef HAS_BASE_COLOR_TEXTURE +vec4 getBaseColorFromTexture() +{ + vec2 baseColorTexCoords = TEXCOORD_BASE_COLOR; + #ifdef HAS_BASE_COLOR_TEXTURE_TRANSFORM + baseColorTexCoords = computeTextureTransform(baseColorTexCoords, u_baseColorTextureTransform); + #endif + + vec4 baseColorWithAlpha = czm_srgbToLinear(texture(u_baseColorTexture, baseColorTexCoords)); + + #ifdef HAS_BASE_COLOR_FACTOR + baseColorWithAlpha *= u_baseColorFactor; + #endif + + return baseColorWithAlpha; +} +#endif + +#ifdef HAS_EMISSIVE_TEXTURE +vec3 getEmissiveFromTexture() +{ + vec2 emissiveTexCoords = TEXCOORD_EMISSIVE; + #ifdef HAS_EMISSIVE_TEXTURE_TRANSFORM + emissiveTexCoords = computeTextureTransform(emissiveTexCoords, u_emissiveTextureTransform); + #endif + + vec3 emissive = czm_srgbToLinear(texture(u_emissiveTexture, emissiveTexCoords).rgb); + #ifdef HAS_EMISSIVE_FACTOR + emissive *= u_emissiveFactor; + #endif + + return emissive; +} +#endif + +#if defined(LIGHTING_PBR) && defined(USE_SPECULAR_GLOSSINESS) +void setSpecularGlossiness(inout czm_modelMaterial material) +{ + #ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE + vec2 specularGlossinessTexCoords = TEXCOORD_SPECULAR_GLOSSINESS; + #ifdef HAS_SPECULAR_GLOSSINESS_TEXTURE_TRANSFORM + specularGlossinessTexCoords = computeTextureTransform(specularGlossinessTexCoords, u_specularGlossinessTextureTransform); + #endif + + vec4 specularGlossiness = czm_srgbToLinear(texture(u_specularGlossinessTexture, specularGlossinessTexCoords)); + vec3 specular = specularGlossiness.rgb; + float glossiness = specularGlossiness.a; + #ifdef HAS_LEGACY_SPECULAR_FACTOR + specular *= u_legacySpecularFactor; + #endif + + #ifdef HAS_GLOSSINESS_FACTOR + glossiness *= u_glossinessFactor; + #endif + #else + #ifdef HAS_LEGACY_SPECULAR_FACTOR + vec3 specular = clamp(u_legacySpecularFactor, vec3(0.0), vec3(1.0)); + #else + vec3 specular = vec3(1.0); + #endif + + #ifdef HAS_GLOSSINESS_FACTOR + float glossiness = clamp(u_glossinessFactor, 0.0, 1.0); + #else + float glossiness = 1.0; + #endif + #endif + + #ifdef HAS_DIFFUSE_TEXTURE + vec2 diffuseTexCoords = TEXCOORD_DIFFUSE; + #ifdef HAS_DIFFUSE_TEXTURE_TRANSFORM + diffuseTexCoords = computeTextureTransform(diffuseTexCoords, u_diffuseTextureTransform); + #endif + + vec4 diffuse = czm_srgbToLinear(texture(u_diffuseTexture, diffuseTexCoords)); + #ifdef HAS_DIFFUSE_FACTOR + diffuse *= u_diffuseFactor; + #endif + #elif defined(HAS_DIFFUSE_FACTOR) + vec4 diffuse = clamp(u_diffuseFactor, vec4(0.0), vec4(1.0)); + #else + vec4 diffuse = vec4(1.0); + #endif + + material.diffuse = diffuse.rgb * (1.0 - czm_maximumComponent(specular)); + // the specular glossiness extension's alpha overrides anything set + // by the base material. + material.alpha = diffuse.a; + + material.specular = specular; + + // glossiness is the opposite of roughness, but easier for artists to use. + material.roughness = 1.0 - glossiness; +} +#elif defined(LIGHTING_PBR) +float setMetallicRoughness(inout czm_modelMaterial material) +{ + #ifdef HAS_METALLIC_ROUGHNESS_TEXTURE + vec2 metallicRoughnessTexCoords = TEXCOORD_METALLIC_ROUGHNESS; + #ifdef HAS_METALLIC_ROUGHNESS_TEXTURE_TRANSFORM + metallicRoughnessTexCoords = computeTextureTransform(metallicRoughnessTexCoords, u_metallicRoughnessTextureTransform); + #endif + + vec3 metallicRoughness = texture(u_metallicRoughnessTexture, metallicRoughnessTexCoords).rgb; + float metalness = clamp(metallicRoughness.b, 0.0, 1.0); + float roughness = clamp(metallicRoughness.g, 0.0, 1.0); + #ifdef HAS_METALLIC_FACTOR + metalness = clamp(metalness * u_metallicFactor, 0.0, 1.0); + #endif + + #ifdef HAS_ROUGHNESS_FACTOR + roughness = clamp(roughness * u_roughnessFactor, 0.0, 1.0); + #endif + #else + #ifdef HAS_METALLIC_FACTOR + float metalness = clamp(u_metallicFactor, 0.0, 1.0); + #else + float metalness = 1.0; + #endif + + #ifdef HAS_ROUGHNESS_FACTOR + float roughness = clamp(u_roughnessFactor, 0.0, 1.0); + #else + float roughness = 1.0; + #endif + #endif + + // dielectrics use f0 = 0.04, metals use albedo as f0 + const vec3 REFLECTANCE_DIELECTRIC = vec3(0.04); + vec3 f0 = mix(REFLECTANCE_DIELECTRIC, material.baseColor.rgb, metalness); + + material.specular = f0; + + // diffuse only applies to dielectrics. + material.diffuse = mix(material.baseColor.rgb, vec3(0.0), metalness); + + // This is perceptual roughness. The square of this value is used for direct lighting + material.roughness = roughness; + + return metalness; +} +#ifdef USE_SPECULAR +void setSpecular(inout czm_modelMaterial material, in float metalness) +{ + #ifdef HAS_SPECULAR_TEXTURE + vec2 specularTexCoords = TEXCOORD_SPECULAR; + #ifdef HAS_SPECULAR_TEXTURE_TRANSFORM + specularTexCoords = computeTextureTransform(specularTexCoords, u_specularTextureTransform); + #endif + float specularWeight = texture(u_specularTexture, specularTexCoords).a; + #ifdef HAS_SPECULAR_FACTOR + specularWeight *= u_specularFactor; + #endif + #else + #ifdef HAS_SPECULAR_FACTOR + float specularWeight = u_specularFactor; + #else + float specularWeight = 1.0; + #endif + #endif + + #ifdef HAS_SPECULAR_COLOR_TEXTURE + vec2 specularColorTexCoords = TEXCOORD_SPECULAR_COLOR; + #ifdef HAS_SPECULAR_COLOR_TEXTURE_TRANSFORM + specularColorTexCoords = computeTextureTransform(specularColorTexCoords, u_specularColorTextureTransform); + #endif + vec3 specularColorSample = texture(u_specularColorTexture, specularColorTexCoords).rgb; + vec3 specularColorFactor = czm_srgbToLinear(specularColorSample); + #ifdef HAS_SPECULAR_COLOR_FACTOR + specularColorFactor *= u_specularColorFactor; + #endif + #else + #ifdef HAS_SPECULAR_COLOR_FACTOR + vec3 specularColorFactor = u_specularColorFactor; + #else + vec3 specularColorFactor = vec3(1.0); + #endif + #endif + material.specularWeight = specularWeight; + vec3 f0 = material.specular; + vec3 dielectricSpecularF0 = min(f0 * specularColorFactor, vec3(1.0)); + material.specular = mix(dielectricSpecularF0, material.baseColor.rgb, metalness); +} +#endif +#ifdef USE_ANISOTROPY +void setAnisotropy(inout czm_modelMaterial material, in NormalInfo normalInfo) +{ + mat2 rotation = mat2(u_anisotropy.xy, -u_anisotropy.y, u_anisotropy.x); + float anisotropyStrength = u_anisotropy.z; + + vec2 direction = vec2(1.0, 0.0); + #ifdef HAS_ANISOTROPY_TEXTURE + vec2 anisotropyTexCoords = TEXCOORD_ANISOTROPY; + #ifdef HAS_ANISOTROPY_TEXTURE_TRANSFORM + anisotropyTexCoords = computeTextureTransform(anisotropyTexCoords, u_anisotropyTextureTransform); + #endif + vec3 anisotropySample = texture(u_anisotropyTexture, anisotropyTexCoords).rgb; + direction = anisotropySample.rg * 2.0 - vec2(1.0); + anisotropyStrength *= anisotropySample.b; + #endif + + direction = rotation * direction; + mat3 tbn = mat3(normalInfo.tangent, normalInfo.bitangent, normalInfo.normal); + vec3 anisotropicT = tbn * normalize(vec3(direction, 0.0)); + vec3 anisotropicB = cross(normalInfo.geometryNormal, anisotropicT); + + material.anisotropicT = anisotropicT; + material.anisotropicB = anisotropicB; + material.anisotropyStrength = anisotropyStrength; +} +#endif +#ifdef USE_CLEARCOAT +void setClearcoat(inout czm_modelMaterial material, in ProcessedAttributes attributes) +{ + #ifdef HAS_CLEARCOAT_TEXTURE + vec2 clearcoatTexCoords = TEXCOORD_CLEARCOAT; + #ifdef HAS_CLEARCOAT_TEXTURE_TRANSFORM + clearcoatTexCoords = computeTextureTransform(clearcoatTexCoords, u_clearcoatTextureTransform); + #endif + float clearcoatFactor = texture(u_clearcoatTexture, clearcoatTexCoords).r; + #ifdef HAS_CLEARCOAT_FACTOR + clearcoatFactor *= u_clearcoatFactor; + #endif + #else + #ifdef HAS_CLEARCOAT_FACTOR + float clearcoatFactor = u_clearcoatFactor; + #else + // PERFORMANCE_IDEA: this case should turn the whole extension off + float clearcoatFactor = 0.0; + #endif + #endif + + #ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE + vec2 clearcoatRoughnessTexCoords = TEXCOORD_CLEARCOAT_ROUGHNESS; + #ifdef HAS_CLEARCOAT_ROUGHNESS_TEXTURE_TRANSFORM + clearcoatRoughnessTexCoords = computeTextureTransform(clearcoatRoughnessTexCoords, u_clearcoatRoughnessTextureTransform); + #endif + float clearcoatRoughness = texture(u_clearcoatRoughnessTexture, clearcoatRoughnessTexCoords).g; + #ifdef HAS_CLEARCOAT_ROUGHNESS_FACTOR + clearcoatRoughness *= u_clearcoatRoughnessFactor; + #endif + #else + #ifdef HAS_CLEARCOAT_ROUGHNESS_FACTOR + float clearcoatRoughness = u_clearcoatRoughnessFactor; + #else + float clearcoatRoughness = 0.0; + #endif + #endif + + material.clearcoatFactor = clearcoatFactor; + // This is perceptual roughness. The square of this value is used for direct lighting + material.clearcoatRoughness = clearcoatRoughness; + #ifdef HAS_CLEARCOAT_NORMAL_TEXTURE + material.clearcoatNormal = getClearcoatNormalFromTexture(attributes, attributes.normalEC); + #else + material.clearcoatNormal = attributes.normalEC; + #endif +} +#endif +#endif + +void materialStage(inout czm_modelMaterial material, ProcessedAttributes attributes, SelectedFeature feature) +{ + #ifdef USE_ANISOTROPY + NormalInfo normalInfo = getNormalInfo(attributes); + material.normalEC = normalInfo.normal; + #elif defined(HAS_NORMALS) + material.normalEC = computeNormal(attributes); + #endif + + vec4 baseColorWithAlpha = vec4(1.0); + // Regardless of whether we use PBR, set a base color + #ifdef HAS_BASE_COLOR_TEXTURE + baseColorWithAlpha = getBaseColorFromTexture(); + #elif defined(HAS_BASE_COLOR_FACTOR) + baseColorWithAlpha = u_baseColorFactor; + #endif + + #ifdef HAS_IMAGERY + baseColorWithAlpha = blendBaseColorWithImagery(baseColorWithAlpha); + #endif // HAS_IMAGERY + + #ifdef HAS_POINT_CLOUD_COLOR_STYLE + baseColorWithAlpha = v_pointCloudColor; + #elif defined(HAS_COLOR_0) + vec4 color = attributes.color_0; + // .pnts files store colors in the sRGB color space + #ifdef HAS_SRGB_COLOR + color = czm_srgbToLinear(color); + #endif + baseColorWithAlpha *= color; + #endif + + #ifdef USE_CPU_STYLING + baseColorWithAlpha.rgb = blend(baseColorWithAlpha.rgb, feature.color.rgb, model_colorBlend); + #endif + material.baseColor = baseColorWithAlpha; + material.diffuse = baseColorWithAlpha.rgb; + material.alpha = baseColorWithAlpha.a; + + #ifdef HAS_OCCLUSION_TEXTURE + vec2 occlusionTexCoords = TEXCOORD_OCCLUSION; + #ifdef HAS_OCCLUSION_TEXTURE_TRANSFORM + occlusionTexCoords = computeTextureTransform(occlusionTexCoords, u_occlusionTextureTransform); + #endif + material.occlusion = texture(u_occlusionTexture, occlusionTexCoords).r; + #endif + + #ifdef HAS_EMISSIVE_TEXTURE + material.emissive = getEmissiveFromTexture(); + #elif defined(HAS_EMISSIVE_FACTOR) + material.emissive = u_emissiveFactor; + #endif + + #if defined(LIGHTING_PBR) && defined(USE_SPECULAR_GLOSSINESS) + setSpecularGlossiness(material); + #elif defined(LIGHTING_PBR) + float metalness = setMetallicRoughness(material); + #ifdef USE_SPECULAR + setSpecular(material, metalness); + #endif + #ifdef USE_ANISOTROPY + setAnisotropy(material, normalInfo); + #endif + #ifdef USE_CLEARCOAT + setClearcoat(material, attributes); + #endif + #endif +} +`;var{Material:k9e,MetallicRoughness:gj,SpecularGlossiness:_j,Specular:Pce,Clearcoat:Rce}=bn,Mce={name:"MaterialPipelineStage",_processTexture:Jl,_processTextureTransform:Nce};Mce.process=function(e,t,n){let i=t.material,{model:o,uniformMap:r,shaderBuilder:s}=e,a=l(o.classificationType),c=a,{defaultTexture:u,defaultNormalTexture:f,defaultEmissiveTexture:h}=n.context;G9e(i,r,s,u,f,h,c),l(i.specularGlossiness)?z9e(i.specularGlossiness,r,s,u,c):(l(i.specular)&&Qt.supportedExtensions.KHR_materials_specular&&V9e(i.specular,r,s,u,c),l(i.anisotropy)&&Qt.supportedExtensions.KHR_materials_anisotropy&&W9e(i.anisotropy,r,s,u,c),l(i.clearcoat)&&Qt.supportedExtensions.KHR_materials_clearcoat&&j9e(i.clearcoat,r,s,u,c),Y9e(i.metallicRoughness,r,s,u,c));let A=Qt.getAttributeBySemantic(t,ct.NORMAL),g=l(o.pointCloudShading)&&!o.pointCloudShading.normalShading,m=e.lightingOptions;i.unlit||!A||a||g?m.lightingModel=fp.UNLIT:m.lightingModel=fp.PBR;let _=o.backFaceCulling&&!i.doubleSided;e.renderStateOptions.cull.enabled=_;let y=e.alphaOptions;i.alphaMode===np.BLEND?y.pass=Be.TRANSLUCENT:i.alphaMode===np.MASK&&(y.alphaCutoff=i.alphaCutoff),s.addFragmentLines(aQ),i.doubleSided&&s.addDefine("HAS_DOUBLE_SIDED_MATERIAL",void 0,pe.BOTH)};function Nce(e,t,n,i,o){let r=`HAS_${o}_TEXTURE_TRANSFORM`;e.addDefine(r,void 0,pe.FRAGMENT);let s=`${i}Transform`;e.addUniform("mat3",s,pe.FRAGMENT),t[s]=function(){return n.transform}}function U9e(e,t,n,i,o){let r=`HAS_${o}_TEXTURE_SCALE`;e.addDefine(r,void 0,pe.FRAGMENT);let s=`${i}Scale`;e.addUniform("float",s,pe.FRAGMENT),t[s]=function(){return n.scale}}function Jl(e,t,n,i,o,r){e.addUniform("sampler2D",i,pe.FRAGMENT),t[i]=function(){return n.texture??r};let s=`HAS_${o}_TEXTURE`;e.addDefine(s,void 0,pe.FRAGMENT);let c=`v_texCoord_${n.texCoord}`,u=`TEXCOORD_${o}`;e.addDefine(u,c,pe.FRAGMENT);let f=n.transform;l(f)&&!J.equals(f,J.IDENTITY)&&Nce(e,t,n,i,o);let{scale:h}=n;l(h)&&h!==1&&U9e(e,t,n,i,o)}function G9e(e,t,n,i,o,r,s){let{emissiveFactor:a,emissiveTexture:c,normalTexture:u,occlusionTexture:f}=e;l(a)&&!d.equals(a,k9e.DEFAULT_EMISSIVE_FACTOR)&&(n.addUniform("vec3","u_emissiveFactor",pe.FRAGMENT),t.u_emissiveFactor=function(){return e.emissiveFactor},n.addDefine("HAS_EMISSIVE_FACTOR",void 0,pe.FRAGMENT),l(c)&&!s&&Jl(n,t,c,"u_emissiveTexture","EMISSIVE",r)),l(u)&&!s&&Jl(n,t,u,"u_normalTexture","NORMAL",o),l(f)&&!s&&Jl(n,t,f,"u_occlusionTexture","OCCLUSION",i)}function z9e(e,t,n,i,o){let{diffuseTexture:r,diffuseFactor:s,specularGlossinessTexture:a,specularFactor:c,glossinessFactor:u}=e;n.addDefine("USE_SPECULAR_GLOSSINESS",void 0,pe.FRAGMENT),l(r)&&!o&&Jl(n,t,r,"u_diffuseTexture","DIFFUSE",i),l(s)&&!se.equals(s,_j.DEFAULT_DIFFUSE_FACTOR)&&(n.addUniform("vec4","u_diffuseFactor",pe.FRAGMENT),t.u_diffuseFactor=function(){return e.diffuseFactor},n.addDefine("HAS_DIFFUSE_FACTOR",void 0,pe.FRAGMENT)),l(a)&&!o&&Jl(n,t,a,"u_specularGlossinessTexture","SPECULAR_GLOSSINESS",i),l(c)&&!d.equals(c,_j.DEFAULT_SPECULAR_FACTOR)&&(n.addUniform("vec3","u_legacySpecularFactor",pe.FRAGMENT),t.u_legacySpecularFactor=function(){return e.specularFactor},n.addDefine("HAS_LEGACY_SPECULAR_FACTOR",void 0,pe.FRAGMENT)),l(u)&&u!==_j.DEFAULT_GLOSSINESS_FACTOR&&(n.addUniform("float","u_glossinessFactor",pe.FRAGMENT),t.u_glossinessFactor=function(){return e.glossinessFactor},n.addDefine("HAS_GLOSSINESS_FACTOR",void 0,pe.FRAGMENT))}function V9e(e,t,n,i,o){let{specularTexture:r,specularFactor:s,specularColorTexture:a,specularColorFactor:c}=e;n.addDefine("USE_SPECULAR",void 0,pe.FRAGMENT),l(r)&&!o&&Jl(n,t,r,"u_specularTexture","SPECULAR",i),l(s)&&s!==Pce.DEFAULT_SPECULAR_FACTOR&&(n.addUniform("float","u_specularFactor",pe.FRAGMENT),t.u_specularFactor=function(){return e.specularFactor},n.addDefine("HAS_SPECULAR_FACTOR",void 0,pe.FRAGMENT)),l(a)&&!o&&Jl(n,t,a,"u_specularColorTexture","SPECULAR_COLOR",i),l(c)&&!d.equals(c,Pce.DEFAULT_SPECULAR_COLOR_FACTOR)&&(n.addUniform("vec3","u_specularColorFactor",pe.FRAGMENT),t.u_specularColorFactor=function(){return e.specularColorFactor},n.addDefine("HAS_SPECULAR_COLOR_FACTOR",void 0,pe.FRAGMENT))}var H9e=new d;function W9e(e,t,n,i,o){let{anisotropyStrength:r,anisotropyRotation:s,anisotropyTexture:a}=e;n.addDefine("USE_ANISOTROPY",void 0,pe.FRAGMENT),l(a)&&!o&&Jl(n,t,a,"u_anisotropyTexture","ANISOTROPY",i);let c=Math.cos(s),u=Math.sin(s);n.addUniform("vec3","u_anisotropy",pe.FRAGMENT),t.u_anisotropy=function(){return d.fromElements(c,u,r,H9e)}}function j9e(e,t,n,i,o){let{clearcoatFactor:r,clearcoatTexture:s,clearcoatRoughnessFactor:a,clearcoatRoughnessTexture:c,clearcoatNormalTexture:u}=e;n.addDefine("USE_CLEARCOAT",void 0,pe.FRAGMENT),l(r)&&r!==Rce.DEFAULT_CLEARCOAT_FACTOR&&(n.addUniform("float","u_clearcoatFactor",pe.FRAGMENT),t.u_clearcoatFactor=function(){return e.clearcoatFactor},n.addDefine("HAS_CLEARCOAT_FACTOR",void 0,pe.FRAGMENT)),l(s)&&!o&&Jl(n,t,s,"u_clearcoatTexture","CLEARCOAT",i),l(a)&&r!==Rce.DEFAULT_CLEARCOAT_ROUGHNESS_FACTOR&&(n.addUniform("float","u_clearcoatRoughnessFactor",pe.FRAGMENT),t.u_clearcoatRoughnessFactor=function(){return e.clearcoatRoughnessFactor},n.addDefine("HAS_CLEARCOAT_ROUGHNESS_FACTOR",void 0,pe.FRAGMENT)),l(c)&&!o&&Jl(n,t,c,"u_clearcoatRoughnessTexture","CLEARCOAT_ROUGHNESS",i),l(u)&&!o&&Jl(n,t,u,"u_clearcoatNormalTexture","CLEARCOAT_NORMAL",i)}function Y9e(e,t,n,i,o){n.addDefine("USE_METALLIC_ROUGHNESS",void 0,pe.FRAGMENT);let r=e.baseColorTexture;l(r)&&!o&&Jl(n,t,r,"u_baseColorTexture","BASE_COLOR",i);let s=e.baseColorFactor;l(s)&&!se.equals(s,gj.DEFAULT_BASE_COLOR_FACTOR)&&(n.addUniform("vec4","u_baseColorFactor",pe.FRAGMENT),t.u_baseColorFactor=function(){return e.baseColorFactor},n.addDefine("HAS_BASE_COLOR_FACTOR",void 0,pe.FRAGMENT));let a=e.metallicRoughnessTexture;l(a)&&!o&&Jl(n,t,a,"u_metallicRoughnessTexture","METALLIC_ROUGHNESS",i);let c=e.metallicFactor;l(c)&&c!==gj.DEFAULT_METALLIC_FACTOR&&(n.addUniform("float","u_metallicFactor",pe.FRAGMENT),t.u_metallicFactor=function(){return e.metallicFactor},n.addDefine("HAS_METALLIC_FACTOR",void 0,pe.FRAGMENT));let u=e.roughnessFactor;l(u)&&u!==gj.DEFAULT_ROUGHNESS_FACTOR&&(n.addUniform("float","u_roughnessFactor",pe.FRAGMENT),t.u_roughnessFactor=function(){return e.roughnessFactor},n.addDefine("HAS_ROUGHNESS_FACTOR",void 0,pe.FRAGMENT))}var cQ=Mce;var fl={name:"MetadataPickingPipelineStage",METADATA_PICKING_ENABLED:"METADATA_PICKING_ENABLED",METADATA_PICKING_VALUE_TYPE:"METADATA_PICKING_VALUE_TYPE",METADATA_PICKING_VALUE_STRING:"METADATA_PICKING_VALUE_STRING",METADATA_PICKING_VALUE_COMPONENT_X:"METADATA_PICKING_VALUE_COMPONENT_X",METADATA_PICKING_VALUE_COMPONENT_Y:"METADATA_PICKING_VALUE_COMPONENT_Y",METADATA_PICKING_VALUE_COMPONENT_Z:"METADATA_PICKING_VALUE_COMPONENT_Z",METADATA_PICKING_VALUE_COMPONENT_W:"METADATA_PICKING_VALUE_COMPONENT_W"};fl.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine(fl.METADATA_PICKING_VALUE_TYPE,"float",pe.FRAGMENT),i.addDefine(fl.METADATA_PICKING_VALUE_STRING,"0.0",pe.FRAGMENT),i.addDefine(fl.METADATA_PICKING_VALUE_COMPONENT_X,"0.0",pe.FRAGMENT),i.addDefine(fl.METADATA_PICKING_VALUE_COMPONENT_Y,"0.0",pe.FRAGMENT),i.addDefine(fl.METADATA_PICKING_VALUE_COMPONENT_Z,"0.0",pe.FRAGMENT),i.addDefine(fl.METADATA_PICKING_VALUE_COMPONENT_W,"0.0",pe.FRAGMENT),i.addFunction("metadataPickingStage","void metadataPickingStage(Metadata metadata, MetadataClass metadataClass, inout vec4 metadataValues)",pe.FRAGMENT),i.addFunctionLines("metadataPickingStage",[`${fl.METADATA_PICKING_VALUE_TYPE} value = ${fl.METADATA_PICKING_VALUE_TYPE}(${fl.METADATA_PICKING_VALUE_STRING});`,`metadataValues.x = ${fl.METADATA_PICKING_VALUE_COMPONENT_X};`,`metadataValues.y = ${fl.METADATA_PICKING_VALUE_COMPONENT_Y};`,`metadataValues.z = ${fl.METADATA_PICKING_VALUE_COMPONENT_Z};`,`metadataValues.w = ${fl.METADATA_PICKING_VALUE_COMPONENT_W};`],pe.FRAGMENT)};var Gf=fl;var lQ=`void morphTargetsStage(inout ProcessedAttributes attributes) +{ + vec3 positionMC = attributes.positionMC; + attributes.positionMC = getMorphedPosition(positionMC); + + #ifdef HAS_NORMALS + vec3 normalMC = attributes.normalMC; + attributes.normalMC = getMorphedNormal(normalMC); + #endif + + #ifdef HAS_TANGENTS + vec3 tangentMC = attributes.tangentMC; + attributes.tangentMC = getMorphedTangent(tangentMC); + #endif +}`;var tc={name:"MorphTargetsPipelineStage",FUNCTION_ID_GET_MORPHED_POSITION:"getMorphedPosition",FUNCTION_SIGNATURE_GET_MORPHED_POSITION:"vec3 getMorphedPosition(in vec3 position)",FUNCTION_ID_GET_MORPHED_NORMAL:"getMorphedNormal",FUNCTION_SIGNATURE_GET_MORPHED_NORMAL:"vec3 getMorphedNormal(in vec3 normal)",FUNCTION_ID_GET_MORPHED_TANGENT:"getMorphedTangent",FUNCTION_SIGNATURE_GET_MORPHED_TANGENT:"vec3 getMorphedTangent(in vec3 tangent)"};tc.process=function(e,t){let n=e.shaderBuilder;n.addDefine("HAS_MORPH_TARGETS",void 0,pe.VERTEX),$9e(n);let i=t.morphTargets.length;for(let a=0;a<i;a++){let c=t.morphTargets[a].attributes,u=c.length;for(let f=0;f<u;f++){let h=c[f],A=h.semantic;A!==ct.POSITION&&A!==ct.NORMAL&&A!==ct.TANGENT||(K9e(e,h,e.attributeIndex,a),e.attributeIndex++)}}e6e(n);let r=e.runtimeNode.morphWeights.length;n.addUniform("float",`u_morphWeights[${r}]`,pe.VERTEX),n.addVertexLines(lQ);let s={u_morphWeights:function(){return e.runtimeNode.morphWeights}};e.uniformMap=wt(s,e.uniformMap)};var q9e={attributeString:void 0,functionId:void 0};function K9e(e,t,n,i){let o=e.shaderBuilder;X9e(e,t,n);let r=J9e(t,q9e);Z9e(o,r,i)}function X9e(e,t,n){let i={index:n,value:l(t.buffer)?void 0:t.constant,vertexBuffer:t.buffer,componentsPerAttribute:Ht.getNumberOfComponents(t.type),componentDatatype:t.componentDatatype,offsetInBytes:t.byteOffset,strideInBytes:t.byteStride,normalize:t.normalized};e.attributes.push(i)}function J9e(e,t){switch(e.semantic){case ct.POSITION:t.attributeString="Position",t.functionId=tc.FUNCTION_ID_GET_MORPHED_POSITION;break;case ct.NORMAL:t.attributeString="Normal",t.functionId=tc.FUNCTION_ID_GET_MORPHED_NORMAL;break;case ct.TANGENT:t.attributeString="Tangent",t.functionId=tc.FUNCTION_ID_GET_MORPHED_TANGENT;break;default:break}return t}function Z9e(e,t,n){let i=t.attributeString,o=`a_target${i}_${n}`,r=`morphed${i} += u_morphWeights[${n}] * a_target${i}_${n};`;e.addAttribute("vec3",o),e.addFunctionLines(t.functionId,[r])}function $9e(e){e.addFunction(tc.FUNCTION_ID_GET_MORPHED_POSITION,tc.FUNCTION_SIGNATURE_GET_MORPHED_POSITION,pe.VERTEX),e.addFunctionLines(tc.FUNCTION_ID_GET_MORPHED_POSITION,["vec3 morphedPosition = position;"]),e.addFunction(tc.FUNCTION_ID_GET_MORPHED_NORMAL,tc.FUNCTION_SIGNATURE_GET_MORPHED_NORMAL,pe.VERTEX),e.addFunctionLines(tc.FUNCTION_ID_GET_MORPHED_NORMAL,["vec3 morphedNormal = normal;"]),e.addFunction(tc.FUNCTION_ID_GET_MORPHED_TANGENT,tc.FUNCTION_SIGNATURE_GET_MORPHED_TANGENT,pe.VERTEX),e.addFunctionLines(tc.FUNCTION_ID_GET_MORPHED_TANGENT,["vec3 morphedTangent = tangent;"])}function e6e(e){e.addFunctionLines(tc.FUNCTION_ID_GET_MORPHED_POSITION,["return morphedPosition;"]),e.addFunctionLines(tc.FUNCTION_ID_GET_MORPHED_NORMAL,["return morphedNormal;"]),e.addFunctionLines(tc.FUNCTION_ID_GET_MORPHED_TANGENT,["return morphedTangent;"])}var uQ=tc;var Lce={name:"PickingPipelineStage"};Lce.process=function(e,t,n){let i=n.context,o=e.runtimeNode,r=e.shaderBuilder,s=e.model,a=o.node.instances;if(e.hasPropertyTable)t6e(e,t,a,i);else if(l(a))n6e(e,i);else{let c=Oce(e),u=i.createPickId(c);s._pipelineResources.push(u),s._pickIds.push(u),r.addUniform("vec4","czm_pickColor",pe.FRAGMENT);let f=e.uniformMap;f.czm_pickColor=function(){return u.color},e.pickId="czm_pickColor"}};function Oce(e,t){let n=e.model;if(l(n.pickObject))return n.pickObject;let i={model:n,node:e.runtimeNode,primitive:e.runtimePrimitive},o;if(Nr.is3DTiles(n.type)){let r=n.content;o={content:r,primitive:r.tileset,detail:i}}else o={primitive:n,detail:i};return o.id=n.id,l(t)&&(o.instanceId=t),o}function t6e(e,t,n){let i=e.model,o,r,s=i.featureIdLabel,a=i.instanceFeatureIdLabel;l(i.featureTableId)?o=i.featureTableId:l(n)?(r=Qt.getFeatureIdsByLabel(n.featureIds,a),o=r.propertyTableId):(r=Qt.getFeatureIdsByLabel(t.featureIds,s),o=r.propertyTableId);let c=i.featureTables[o];e.shaderBuilder.addUniform("sampler2D","model_pickTexture",pe.FRAGMENT);let f=c.batchTexture;e.uniformMap.model_pickTexture=function(){return f.pickTexture??f.defaultTexture},e.pickId="((selectedFeature.id < int(model_featuresLength)) ? texture(model_pickTexture, selectedFeature.st) : vec4(0.0))"}function n6e(e,t){let n=e.instanceCount,i=new Array(n),o=new Uint8Array(n*4),r=e.model,s=r._pipelineResources;for(let h=0;h<n;h++){let A=Oce(e,h),g=t.createPickId(A);s.push(g),i[h]=g;let m=g.color;o[h*4+0]=G.floatToByte(m.red),o[h*4+1]=G.floatToByte(m.green),o[h*4+2]=G.floatToByte(m.blue),o[h*4+3]=G.floatToByte(m.alpha)}r._pickIds=i;let a=Et.createVertexBuffer({context:t,typedArray:o,usage:Qe.STATIC_DRAW});a.vertexArrayDestroyable=!1,r.statistics.addBuffer(a,!1),s.push(a);let u={index:e.attributeIndex++,vertexBuffer:a,componentsPerAttribute:4,componentDatatype:q.UNSIGNED_BYTE,normalize:!0,offsetInBytes:0,strideInBytes:0,instanceDivisor:1};e.attributes.push(u);let f=e.shaderBuilder;f.addDefine("USE_PICKING",void 0,pe.BOTH),f.addAttribute("vec4","a_pickColor"),f.addVarying("vec4","v_pickColor"),e.pickId="v_pickColor"}var fQ=Lce;var i6e={ADD:0,REPLACE:1},rr=Object.freeze(i6e);var dQ=`float getPointSizeFromAttenuation(vec3 positionEC) { + // Variables are packed into a single vector to minimize gl.uniformXXX() calls + float pointSize = model_pointCloudParameters.x; + float geometricError = model_pointCloudParameters.y; + float depthMultiplier = model_pointCloudParameters.z; + + float depth = -positionEC.z; + return min((geometricError / depth) * depthMultiplier, pointSize); +} + +#ifdef HAS_POINT_CLOUD_SHOW_STYLE +float pointCloudShowStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + float tiles3d_tileset_time = model_pointCloudParameters.w; + return float(getShowFromStyle(attributes, metadata, tiles3d_tileset_time)); +} +#endif + +#ifdef HAS_POINT_CLOUD_COLOR_STYLE +vec4 pointCloudColorStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + float tiles3d_tileset_time = model_pointCloudParameters.w; + return getColorFromStyle(attributes, metadata, tiles3d_tileset_time); +} +#endif + +#ifdef HAS_POINT_CLOUD_POINT_SIZE_STYLE +float pointCloudPointSizeStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + float tiles3d_tileset_time = model_pointCloudParameters.w; + return float(getPointSizeFromStyle(attributes, metadata, tiles3d_tileset_time)); +} +#elif defined(HAS_POINT_CLOUD_ATTENUATION) +float pointCloudPointSizeStylingStage(in ProcessedAttributes attributes, in Metadata metadata) { + return getPointSizeFromAttenuation(v_positionEC); +} +#endif + +#ifdef HAS_POINT_CLOUD_BACK_FACE_CULLING +float pointCloudBackFaceCullingStage() { + #if defined(HAS_NORMALS) && !defined(HAS_DOUBLE_SIDED_MATERIAL) + // This needs to be computed in eye coordinates so we can't use attributes.normalMC + return step(-v_normalEC.z, 0.0); + #else + return 1.0; + #endif +} +#endif +`;var o6e=new se,Qce={name:"PointCloudStylingPipelineStage"};Qce.process=function(e,t,n){let i=e.shaderBuilder,o=e.model,r=o.style,s=o.structuralMetadata,a=l(s)?s.propertyAttributes:void 0,c=l(o.featureTableId)&&o.featureTables[o.featureTableId].featuresLength>0,u=!l(a)&&c;if(l(r)&&!u){let _=c6e(a),y=l6e(r,_);u6e(i,y);let E=f6e(y).indexOf("normalMC")>=0,I=Qt.getAttributeBySemantic(t,ct.NORMAL);if(E&&!I)throw new ce("Style references the NORMAL semantic but the point cloud does not have normals");i.addDefine("COMPUTE_POSITION_WC_STYLE",void 0,pe.VERTEX),y.styleTranslucent&&(e.alphaOptions.pass=Be.TRANSLUCENT)}let f=o.pointCloudShading;f.attenuation&&i.addDefine("HAS_POINT_CLOUD_ATTENUATION",void 0,pe.VERTEX),f.backFaceCulling&&i.addDefine("HAS_POINT_CLOUD_BACK_FACE_CULLING",void 0,pe.VERTEX);let h,A,g;Nr.is3DTiles(o.type)&&(A=!0,h=o.content,g=h.tile.refine===rr.ADD),i.addUniform("vec4","model_pointCloudParameters",pe.VERTEX),i.addVertexLines(dQ);let m=e.uniformMap;m.model_pointCloudParameters=function(){let _=o6e,y=1;A&&(y=g?5:h.tileset.memoryAdjustedScreenSpaceError),_.x=f.maximumAttenuation??y,_.x*=n.pixelRatio;let C=r6e(e,t,f,h);_.y=C*f.geometricErrorScale;let E=n.context,I=n.camera.frustum,b;return n.mode===ie.SCENE2D||I instanceof An?b=Number.POSITIVE_INFINITY:b=E.drawingBufferHeight/n.camera.frustum.sseDenominator,_.z=b,A&&(_.w=h.tileset.timeSinceLoad),_}};var Fce=new d;function r6e(e,t,n,i){if(l(i)){let f=i.tile.geometricError;if(f>0)return f}if(l(n.baseResolution))return n.baseResolution;let o=Qt.getAttributeBySemantic(t,ct.POSITION),r=o.count,s=e.runtimeNode.transform,a=d.subtract(o.max,o.min,Fce);a=R.multiplyByPointAsVector(s,a,Fce);let c=a.x*a.y*a.z;return D.cbrt(c/r)}var s6e={colorStyleFunction:void 0,showStyleFunction:void 0,pointSizeStyleFunction:void 0,styleTranslucent:!1},a6e={POSITION:"attributes.positionMC",POSITION_ABSOLUTE:"v_positionWC",COLOR:"attributes.color_0",NORMAL:"attributes.normalMC"};function c6e(e){let t=ze(a6e);if(!l(e))return t;for(let n=0;n<e.length;n++){let o=e[n].properties;for(let r in o)o.hasOwnProperty(r)&&(t[r]=`metadata.${r}`)}return t}var yj="ProcessedAttributes attributes, Metadata metadata, float tiles3d_tileset_time";function l6e(e,t){let n=s6e,i={translucent:!1};return n.colorStyleFunction=e.getColorShaderFunction(`getColorFromStyle(${yj})`,t,i),n.showStyleFunction=e.getShowShaderFunction(`getShowFromStyle(${yj})`,t,i),n.pointSizeStyleFunction=e.getPointSizeShaderFunction(`getPointSizeFromStyle(${yj})`,t,i),n.styleTranslucent=l(n.colorStyleFunction)&&i.translucent,n}function u6e(e,t){let n=t.colorStyleFunction;l(n)&&(e.addDefine("HAS_POINT_CLOUD_COLOR_STYLE",void 0,pe.BOTH),e.addVertexLines(n),e.addVarying("vec4","v_pointCloudColor"));let i=t.showStyleFunction;l(i)&&(e.addDefine("HAS_POINT_CLOUD_SHOW_STYLE",void 0,pe.BOTH),e.addVertexLines(i),e.addVarying("float","v_pointCloudShow"));let o=t.pointSizeStyleFunction;l(o)&&(e.addDefine("HAS_POINT_CLOUD_POINT_SIZE_STYLE",void 0,pe.VERTEX),e.addVertexLines(o))}function Cj(e,t){let n=/attributes\.(\w+)/g,i=n.exec(e);for(;i!==null;){let o=i[1];t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function f6e(e){let t=e.colorStyleFunction,n=e.showStyleFunction,i=e.pointSizeStyleFunction,o=[];return l(t)&&Cj(t,o),l(n)&&Cj(n,o),l(i)&&Cj(i,o),o}var hQ=Qce;var mQ=`void primitiveOutlineStage() { + v_outlineCoordinates = a_outlineCoordinates; +} +`;var AQ=`void primitiveOutlineStage(inout czm_modelMaterial material) { + if (!model_showOutline) { + return; + } + + float outlineX = + texture(model_outlineTexture, vec2(v_outlineCoordinates.x, 0.5)).r; + float outlineY = + texture(model_outlineTexture, vec2(v_outlineCoordinates.y, 0.5)).r; + float outlineZ = + texture(model_outlineTexture, vec2(v_outlineCoordinates.z, 0.5)).r; + float outlineness = max(outlineX, max(outlineY, outlineZ)); + + material.diffuse = mix(material.diffuse, model_outlineColor.rgb, model_outlineColor.a * outlineness); +} + +`;var kce={name:"PrimitiveOutlinePipelineStage"};kce.process=function(e,t,n){let i=e.shaderBuilder,o=e.uniformMap;i.addDefine("HAS_PRIMITIVE_OUTLINE",void 0,pe.BOTH),i.addAttribute("vec3","a_outlineCoordinates"),i.addVarying("vec3","v_outlineCoordinates");let r=t.outlineCoordinates,s={index:e.attributeIndex++,vertexBuffer:r.buffer,componentsPerAttribute:Ht.getNumberOfComponents(r.type),componentDatatype:r.componentDatatype,offsetInBytes:r.byteOffset,strideInBytes:r.byteStride,normalize:r.normalized};e.attributes.push(s),i.addUniform("sampler2D","model_outlineTexture",pe.FRAGMENT);let a=dx.createTexture(n.context);o.model_outlineTexture=function(){return a};let c=e.model;i.addUniform("vec4","model_outlineColor",pe.FRAGMENT),o.model_outlineColor=function(){return c.outlineColor},i.addUniform("bool","model_showOutline",pe.FRAGMENT),o.model_showOutline=function(){return c.showOutline},i.addVertexLines(mQ),i.addFragmentLines(AQ)};var pQ=kce;var Uce={name:"PrimitiveStatisticsPipelineStage",_countGeometry:Gce,_count2DPositions:zce,_countMorphTargetAttributes:Vce,_countMaterialTextures:Hce,_countFeatureIdTextures:Wce,_countBinaryMetadata:jce};Uce.process=function(e,t,n){let i=e.model,o=i.statistics;Gce(o,t),zce(o,e.runtimePrimitive),Vce(o,t),Hce(o,t.material),Wce(o,t.featureIds),jce(o,i)};function Gce(e,t){let n=l(t.indices)?t.indices.count:Qt.getAttributeBySemantic(t,"POSITION").count,i=t.primitiveType;i===Me.POINTS?e.pointsLength+=n:Me.isTriangles(i)&&(e.trianglesLength+=d6e(i,n));let o=t.attributes,r=o.length;for(let c=0;c<r;c++){let u=o[c];if(l(u.buffer)){let f=l(u.typedArray);e.addBuffer(u.buffer,f)}}let s=t.outlineCoordinates;l(s)&&l(s.buffer)&&e.addBuffer(s.buffer,!1);let a=t.indices;if(l(a)&&l(a.buffer)){let c=l(a.typedArray);e.addBuffer(a.buffer,c)}}function d6e(e,t){switch(e){case Me.TRIANGLES:return t/3;case Me.TRIANGLE_STRIP:case Me.TRIANGLE_FAN:return Math.max(t-2,0);default:return 0}}function zce(e,t){let n=t.positionBuffer2D;l(n)&&e.addBuffer(n,!0)}function Vce(e,t){let n=t.morphTargets;if(!l(n))return;let i=!1,o=n.length;for(let r=0;r<o;r++){let s=n[r].attributes,a=s.length;for(let c=0;c<a;c++){let u=s[c];l(u.buffer)&&e.addBuffer(u.buffer,i)}}}function Hce(e,t){let n=h6e(t),i=n.length;for(let o=0;o<i;o++){let r=n[o];l(r)&&l(r.texture)&&e.addTexture(r.texture)}}function h6e(e){let t=e.metallicRoughness,n=[e.emissiveTexture,e.normalTexture,e.occlusionTexture,t.baseColorTexture,t.metallicRoughnessTexture],i=e.specularGlossiness;return l(i)&&(n.push(i.diffuseTexture),n.push(i.specularGlossinessTexture)),n}function Wce(e,t){let n=t.length;for(let i=0;i<n;i++){let o=t[i];if(o instanceof bn.FeatureIdTexture){let r=o.textureReader;l(r.texture)&&e.addTexture(r.texture)}}}function jce(e,t){let n=t.structuralMetadata;l(n)&&(m6e(e,n),e.propertyTablesByteLength+=n.propertyTablesByteLength);let i=t.featureTables;if(!l(i))return;let o=i.length;for(let r=0;r<o;r++){let s=i[r];e.addBatchTexture(s.batchTexture)}}function m6e(e,t){let n=t.propertyTextures;if(!l(n))return;let i=n.length;for(let o=0;o<i;o++){let s=n[o].properties;for(let a in s)if(s.hasOwnProperty(a)){let u=s[a].textureReader;l(u.texture)&&e.addTexture(u.texture)}}}var gQ=Uce;var A6e=new R,p6e=new R,Yce={name:"SceneMode2DPipelineStage"};Yce.process=function(e,t,n){let i=Qt.getAttributeBySemantic(t,ct.POSITION),o=e.shaderBuilder,r=e.model,s=r.sceneGraph.computedModelMatrix,a=e.runtimeNode.computedTransform,c=R.multiplyTransformation(s,a,A6e),u=y6e(e,c,n),f=e.runtimePrimitive;f.boundingSphere2D=u;let h=e.runtimeNode.node.instances;if(l(h))return;if(l(i.typedArray)){let _=I6e(i,c,u,n);f.positionBuffer2D=_,r._modelResources.push(_),i.typedArray=void 0}o.addDefine("USE_2D_POSITIONS",void 0,pe.VERTEX),o.addUniform("mat4","u_modelView2D",pe.VERTEX);let A=R.fromTranslation(u.center,new R),g=n.context,m={u_modelView2D:function(){return R.multiplyTransformation(g.uniformState.view,A,p6e)}};e.uniformMap=wt(m,e.uniformMap)};var g6e=new d,_6e=new d;function y6e(e,t,n){let i=R.multiplyByPoint(t,e.positionMin,g6e),o=to.computeActualEllipsoidPosition(n,i,i),r=R.multiplyByPoint(t,e.positionMax,_6e),s=to.computeActualEllipsoidPosition(n,r,r);return le.fromCornerPoints(o,s,new le)}var qce=new d;function C6e(e,t){let n=e.length,i=new Float32Array(n),o=t.quantizedVolumeOffset,r=t.quantizedVolumeStepSize;for(let s=0;s<n;s+=3){let a=d.fromArray(e,s,qce),c=d.multiplyComponents(a,r,a),u=d.add(c,o,c);i[s]=u.x,i[s+1]=u.y,i[s+2]=u.z}return i}function E6e(e,t,n,i){let o;l(e.quantization)?o=C6e(e.typedArray,e.quantization):o=e.typedArray.slice();let r=e.byteOffset/Float32Array.BYTES_PER_ELEMENT,s=o.length,a=l(e.byteStride)?e.byteStride/Float32Array.BYTES_PER_ELEMENT:3;for(let c=r;c<s;c+=a){let u=d.fromArray(o,c,qce);if(isNaN(u.x)||isNaN(u.y)||isNaN(u.z))continue;let f=R.multiplyByPoint(t,u,u),h=to.computeActualEllipsoidPosition(i,f,f),A=d.subtract(h,n,h);o[c]=A.x,o[c+1]=A.y,o[c+2]=A.z}return o}function I6e(e,t,n,i){let o=ze(i);o.mode=ie.COLUMBUS_VIEW;let r=n.center,s=E6e(e,t,r,o),a=Et.createVertexBuffer({context:i.context,typedArray:s,usage:Qe.STATIC_DRAW});return a.vertexArrayDestroyable=!1,a}var _Q=Yce;var yQ=`void skinningStage(inout ProcessedAttributes attributes) +{ + mat4 skinningMatrix = getSkinningMatrix(); + mat3 skinningMatrixMat3 = mat3(skinningMatrix); + + vec4 positionMC = vec4(attributes.positionMC, 1.0); + attributes.positionMC = vec3(skinningMatrix * positionMC); + + #ifdef HAS_NORMALS + vec3 normalMC = attributes.normalMC; + attributes.normalMC = skinningMatrixMat3 * normalMC; + #endif + + #ifdef HAS_TANGENTS + vec3 tangentMC = attributes.tangentMC; + attributes.tangentMC = skinningMatrixMat3 * tangentMC; + #endif +}`;var rE={name:"SkinningPipelineStage",FUNCTION_ID_GET_SKINNING_MATRIX:"getSkinningMatrix",FUNCTION_SIGNATURE_GET_SKINNING_MATRIX:"mat4 getSkinningMatrix()"};rE.process=function(e,t){let n=e.shaderBuilder;n.addDefine("HAS_SKINNING",void 0,pe.VERTEX),b6e(n,t);let i=e.runtimeNode,o=i.computedJointMatrices;n.addUniform("mat4",`u_jointMatrices[${o.length}]`,pe.VERTEX),n.addVertexLines(yQ);let r={u_jointMatrices:function(){return i.computedJointMatrices}};e.uniformMap=wt(r,e.uniformMap)};function x6e(e){let t=-1,n=e.attributes,i=n.length;for(let o=0;o<i;o++){let r=n[o];(r.semantic===ct.JOINTS||r.semantic===ct.WEIGHTS)&&(t=Math.max(t,r.setIndex))}return t}function b6e(e,t){e.addFunction(rE.FUNCTION_ID_GET_SKINNING_MATRIX,rE.FUNCTION_SIGNATURE_GET_SKINNING_MATRIX,pe.VERTEX),e.addFunctionLines(rE.FUNCTION_ID_GET_SKINNING_MATRIX,["mat4 skinnedMatrix = mat4(0);"]);let i,o,r=["x","y","z","w"],s=x6e(t);for(i=0;i<=s;i++)for(o=0;o<=3;o++){let c=r[o],u=`skinnedMatrix += a_weights_${i}.${c} * u_jointMatrices[int(a_joints_${i}.${c})];`;e.addFunctionLines(rE.FUNCTION_ID_GET_SKINNING_MATRIX,[u])}e.addFunctionLines(rE.FUNCTION_ID_GET_SKINNING_MATRIX,["return skinnedMatrix;"])}var CQ=rE;var EQ=`void verticalExaggerationStage( + inout ProcessedAttributes attributes +) { + // Compute the distance from the camera to the local center of curvature. + vec4 vertexPositionENU = czm_modelToEnu * vec4(attributes.positionMC, 1.0); + vec2 vertexAzimuth = normalize(vertexPositionENU.xy); + // Curvature = 1 / radius of curvature. + float azimuthalCurvature = dot(vertexAzimuth * vertexAzimuth, czm_eyeEllipsoidCurvature); + float eyeToCenter = 1.0 / azimuthalCurvature + czm_eyeHeight; + + // Compute the approximate ellipsoid normal at the vertex position. + // Uses a circular approximation for the Earth curvature along the geodesic. + vec3 vertexPositionEC = (czm_modelView * vec4(attributes.positionMC, 1.0)).xyz; + vec3 centerToVertex = eyeToCenter * czm_eyeEllipsoidNormalEC + vertexPositionEC; + vec3 vertexNormal = normalize(centerToVertex); + + // Estimate the (sine of the) angle between the camera direction and the vertex normal + float verticalDistance = dot(vertexPositionEC, czm_eyeEllipsoidNormalEC); + float horizontalDistance = length(vertexPositionEC - verticalDistance * czm_eyeEllipsoidNormalEC); + float sinTheta = horizontalDistance / (eyeToCenter + verticalDistance); + bool isSmallAngle = clamp(sinTheta, 0.0, 0.05) == sinTheta; + + // Approximate the change in height above the ellipsoid, from camera to vertex position. + float exactVersine = 1.0 - dot(czm_eyeEllipsoidNormalEC, vertexNormal); + float smallAngleVersine = 0.5 * sinTheta * sinTheta; + float versine = isSmallAngle ? smallAngleVersine : exactVersine; + float dHeight = dot(vertexPositionEC, vertexNormal) - eyeToCenter * versine; + float vertexHeight = czm_eyeHeight + dHeight; + + // Transform the approximate vertex normal to model coordinates. + vec3 vertexNormalMC = (czm_inverseModelView * vec4(vertexNormal, 0.0)).xyz; + vertexNormalMC = normalize(vertexNormalMC); + + // Compute the exaggeration and apply it along the approximate vertex normal. + float stretch = u_verticalExaggerationAndRelativeHeight.x; + float shift = u_verticalExaggerationAndRelativeHeight.y; + float exaggeration = (vertexHeight - shift) * (stretch - 1.0); + attributes.positionMC += exaggeration * vertexNormalMC; +} +`;var Kce={name:"VerticalExaggerationPipelineStage"},T6e=new k;Kce.process=function(e,t,n){let{shaderBuilder:i,uniformMap:o}=e;i.addVertexLines(EQ),i.addDefine("HAS_VERTICAL_EXAGGERATION",void 0,pe.VERTEX),i.addUniform("vec2","u_verticalExaggerationAndRelativeHeight",pe.VERTEX),o.u_verticalExaggerationAndRelativeHeight=function(){return k.fromElements(n.verticalExaggeration,n.verticalExaggerationRelativeHeight,T6e)}};var IQ=Kce;var Ej={};function S6e(e){let t=Fe.createTypedArray(e,e*2),n=e,i=0;for(let o=0;o<n;o+=3)t[i++]=o,t[i++]=o+1,t[i++]=o+1,t[i++]=o+2,t[i++]=o+2,t[i++]=o;return t}function w6e(e,t){let n=t.length,i=Fe.createTypedArray(e,n*2),o=0;for(let r=0;r<n;r+=3){let s=t[r],a=t[r+1],c=t[r+2];i[o++]=s,i[o++]=a,i[o++]=a,i[o++]=c,i[o++]=c,i[o++]=s}return i}function B6e(e){let t=e-2,n=2+t*4,i=Fe.createTypedArray(e,n),o=0;i[o++]=0,i[o++]=1;for(let r=0;r<t;r++)i[o++]=r+1,i[o++]=r+2,i[o++]=r+2,i[o++]=r;return i}function D6e(e,t){let i=t.length-2,o=2+i*4,r=Fe.createTypedArray(e,o),s=0;r[s++]=t[0],r[s++]=t[1];for(let a=0;a<i;a++){let c=t[a],u=t[a+1],f=t[a+2];r[s++]=u,r[s++]=f,r[s++]=f,r[s++]=c}return r}function v6e(e){let t=e-2,n=2+t*4,i=Fe.createTypedArray(e,n),o=0;i[o++]=0,i[o++]=1;for(let r=0;r<t;r++)i[o++]=r+1,i[o++]=r+2,i[o++]=r+2,i[o++]=0;return i}function P6e(e,t){let i=t.length-2,o=2+i*4,r=Fe.createTypedArray(e,o),s=0,a=t[0];r[s++]=a,r[s++]=t[1];for(let c=0;c<i;c++){let u=t[c+1],f=t[c+2];r[s++]=u,r[s++]=f,r[s++]=f,r[s++]=a}return r}Ej.createWireframeIndices=function(e,t,n){let i=l(n);if(e===Me.TRIANGLES)return i?w6e(t,n):S6e(t);if(e===Me.TRIANGLE_STRIP)return i?D6e(t,n):B6e(t);if(e===Me.TRIANGLE_FAN)return i?P6e(t,n):v6e(t)};Ej.getWireframeIndicesCount=function(e,t){return e===Me.TRIANGLES?t*2:e===Me.TRIANGLE_STRIP||e===Me.TRIANGLE_FAN?2+(t-2)*4:t};var VB=Ej;var Xce={name:"WireframePipelineStage"};Xce.process=function(e,t,n){e.shaderBuilder.addDefine("HAS_WIREFRAME",void 0,pe.FRAGMENT);let o=e.model,r=R6e(t,e.indices,n);o._pipelineResources.push(r),e.wireframeIndexBuffer=r,o.statistics.addBuffer(r,!1);let a=e.primitiveType,c=e.count;e.primitiveType=Me.LINES,e.count=VB.getWireframeIndicesCount(a,c)};function R6e(e,t,n){let o=Qt.getAttributeBySemantic(e,ct.POSITION).count,r=n.context.webgl2,s;if(l(t)){let f=t.buffer,h=t.count;l(f)&&r?(s=f.sizeInBytes===h?new Uint8Array(h):Fe.createTypedArray(o,h),f.getBufferData(s)):s=t.typedArray}let a=e.primitiveType,c=VB.createWireframeIndices(a,o,s),u=Fe.fromSizeInBytes(c.BYTES_PER_ELEMENT);return Et.createIndexBuffer({context:n.context,typedArray:c,usage:Qe.STATIC_DRAW,indexDatatype:u})}var xQ=Xce;function Jce(e){e=e??V.EMPTY_OBJECT;let t=e.primitive,n=e.node,i=e.model;this.primitive=t,this.node=n,this.model=i,this.pipelineStages=[],this.drawCommand=void 0,this.boundingSphere=void 0,this.boundingSphere2D=void 0,this.positionBuffer2D=void 0,this.batchLengths=void 0,this.batchOffsets=void 0,this.updateStages=[]}Jce.prototype.configurePipeline=function(e){let t=this.pipelineStages;t.length=0;let n=this.primitive,i=this.node,o=this.model,r=o.customShader,s=o.style,a=e.context.webgl2,u=e.mode!==ie.SCENE3D&&!e.scene3DOnly&&o._projectTo2D,f=e.verticalExaggeration!==1&&o.hasVerticalExaggeration,h=l(n.morphTargets)&&n.morphTargets.length>0,A=l(i.skin),g=l(o.imageryLayers),m=l(r),y=!(m&&l(r.fragmentShaderText))||r.mode!==p_.REPLACE_MATERIAL,C=Qt.hasQuantizedAttributes(n.attributes),E=o.debugWireframe&&Me.isTriangles(n.primitiveType)&&(o._enableDebugWireframe||a),I=o.pointCloudShading,b=l(I)&&I.attenuation,S=l(I)&&I.backFaceCulling,B=n.primitiveType===Me.POINTS&&(l(s)||b||S),v=o._enableShowOutline&&l(n.outlineCoordinates),P=M6e(o,i,n),N=l(o.classificationType);u&&t.push(_Q),t.push(N2),E&&t.push(xQ),N&&t.push(C2),h&&t.push(uQ),A&&t.push(CQ),B&&t.push(hQ),C&&t.push(P2),g&&(v?yt("outlines-and-draping","Primitive outlines disable imagery draping"):t.push(oQ)),y&&t.push(cQ),t.push(eE),t.push(Xd),t.push(Gf),P.hasPropertyTable&&(t.push(nE),t.push(y2),t.push(x2)),f&&t.push(IQ),m&&t.push(v2),t.push(sQ),o.allowPicking&&t.push(fQ),v&&t.push(pQ),t.push(_2),t.push(gQ)};function M6e(e,t,n){let i;return l(t.instances)&&(i=Qt.getFeatureIdsByLabel(t.instances.featureIds,e.instanceFeatureIdLabel),l(i))?{hasFeatureIds:!0,hasPropertyTable:l(i.propertyTableId)}:(i=Qt.getFeatureIdsByLabel(n.featureIds,e.featureIdLabel),l(i)?{hasFeatureIds:!0,hasPropertyTable:l(i.propertyTableId)}:{hasFeatureIds:!1,hasPropertyTable:!1})}var bQ=Jce;function Ij(e){e=e??V.EMPTY_OBJECT,this._sceneGraph=e.sceneGraph;let t=e.skin;this._skin=t,this._inverseBindMatrices=void 0,this._joints=[],this._jointMatrices=[],N6e(this)}Object.defineProperties(Ij.prototype,{skin:{get:function(){return this._skin}},sceneGraph:{get:function(){return this._sceneGraph}},inverseBindMatrices:{get:function(){return this._inverseBindMatrices}},joints:{get:function(){return this._joints}},jointMatrices:{get:function(){return this._jointMatrices}}});function N6e(e){let t=e.skin,n=t.inverseBindMatrices;e._inverseBindMatrices=n;let i=t.joints,o=i.length,r=e.sceneGraph._runtimeNodes,s=e.joints,a=e._jointMatrices;for(let c=0;c<o;c++){let u=i[c].index,f=r[u];s.push(f);let h=n[c],A=Zce(f,h,new R);a.push(A)}}function Zce(e,t,n){let i=R.multiplyTransformation(e.transformToRoot,e.transform,n);return n=R.multiplyTransformation(i,t,n),n}Ij.prototype.updateJointMatrices=function(){let e=this._jointMatrices,t=e.length;for(let n=0;n<t;n++){let i=this.joints[n],o=this.inverseBindMatrices[n];e[n]=Zce(i,o,e[n])}};var TQ=Ij;function L6e(){this.pass=void 0,this.alphaCutoff=void 0}var Qx=L6e;function xj(e){this.name=e,this.fields=[]}xj.prototype.addField=function(e,t){let n=` ${e} ${t};`;this.fields.push(n)};xj.prototype.generateGlslLines=function(){let e=this.fields;return e.length===0&&(e=[" float _empty;"]),[].concat(`struct ${this.name}`,"{",e,"};")};var SQ=xj;function bj(e){this.signature=e,this.body=[]}bj.prototype.addLines=function(e){let t=this.body;if(Array.isArray(e)){let n=e.length;for(let i=0;i<n;i++)t.push(` ${e[i]}`)}else t.push(` ${e}`)};bj.prototype.generateGlslLines=function(){return[].concat(this.signature,"{",this.body,"}")};var wQ=bj;function dl(){this._positionAttributeLine=void 0,this._nextAttributeLocation=1,this._attributeLocations={},this._attributeLines=[],this._structs={},this._functions={},this._vertexShaderParts={defineLines:[],uniformLines:[],shaderLines:[],varyingLines:[],structIds:[],functionIds:[]},this._fragmentShaderParts={defineLines:[],uniformLines:[],shaderLines:[],varyingLines:[],structIds:[],functionIds:[]}}Object.defineProperties(dl.prototype,{attributeLocations:{get:function(){return this._attributeLocations}}});dl.prototype.addDefine=function(e,t,n){n=n??pe.BOTH;let i=e;l(t)&&(i+=` ${t.toString()}`),pe.includesVertexShader(n)&&this._vertexShaderParts.defineLines.push(i),pe.includesFragmentShader(n)&&this._fragmentShaderParts.defineLines.push(i)};dl.prototype.addStruct=function(e,t,n){this._structs[e]=new SQ(t),pe.includesVertexShader(n)&&this._vertexShaderParts.structIds.push(e),pe.includesFragmentShader(n)&&this._fragmentShaderParts.structIds.push(e)};dl.prototype.addStructField=function(e,t,n){this._structs[e].addField(t,n)};dl.prototype.addFunction=function(e,t,n){this._functions[e]=new wQ(t),pe.includesVertexShader(n)&&this._vertexShaderParts.functionIds.push(e),pe.includesFragmentShader(n)&&this._fragmentShaderParts.functionIds.push(e)};dl.prototype.addFunctionLines=function(e,t){this._functions[e].addLines(t)};dl.prototype.addUniform=function(e,t,n){n=n??pe.BOTH;let i=`uniform ${e} ${t};`;pe.includesVertexShader(n)&&this._vertexShaderParts.uniformLines.push(i),pe.includesFragmentShader(n)&&this._fragmentShaderParts.uniformLines.push(i)};dl.prototype.setPositionAttribute=function(e,t){return this._positionAttributeLine=`in ${e} ${t};`,this._attributeLocations[t]=0,0};dl.prototype.addAttribute=function(e,t){let n=`in ${e} ${t};`;this._attributeLines.push(n);let i=this._nextAttributeLocation;return this._attributeLocations[t]=i,this._nextAttributeLocation+=F6e(e),i};dl.prototype.addVarying=function(e,t,n){n=l(n)?`${n} `:"";let i=`${e} ${t};`;this._vertexShaderParts.varyingLines.push(`${n}out ${i}`),this._fragmentShaderParts.varyingLines.push(`${n}in ${i}`)};dl.prototype.addVertexLines=function(e){let t=this._vertexShaderParts.shaderLines;Array.isArray(e)?si(t,e):t.push(e)};dl.prototype.addFragmentLines=function(e){let t=this._fragmentShaderParts.shaderLines;Array.isArray(e)?si(t,e):t.push(e)};dl.prototype.buildShaderProgram=function(e){let t=l(this._positionAttributeLine)?[this._positionAttributeLine]:[],n=O6e(this),i=Q6e(this),o=t.concat(this._attributeLines,this._vertexShaderParts.uniformLines,this._vertexShaderParts.varyingLines,n.vertexLines,i.vertexLines,this._vertexShaderParts.shaderLines).join(` +`),r=new We({defines:this._vertexShaderParts.defineLines,sources:[o]}),s=this._fragmentShaderParts.uniformLines.concat(this._fragmentShaderParts.varyingLines,n.fragmentLines,i.fragmentLines,this._fragmentShaderParts.shaderLines).join(` +`),a=new We({defines:this._fragmentShaderParts.defineLines,sources:[s]});return ln.fromCache({context:e,vertexShaderSource:r,fragmentShaderSource:a,attributeLocations:this._attributeLocations})};dl.prototype.clone=function(){return ze(this,!0)};function O6e(e){let t=[],n=[],i,o=e._vertexShaderParts.structIds,r,s,a;for(i=0;i<o.length;i++)r=o[i],s=e._structs[r],a=s.generateGlslLines(),si(t,a);for(o=e._fragmentShaderParts.structIds,i=0;i<o.length;i++)r=o[i],s=e._structs[r],a=s.generateGlslLines(),si(n,a);return{vertexLines:t,fragmentLines:n}}function F6e(e){switch(e){case"mat2":return 2;case"mat3":return 3;case"mat4":return 4;default:return 1}}function Q6e(e){let t=[],n=[],i,o=e._vertexShaderParts.functionIds,r,s,a;for(i=0;i<o.length;i++)r=o[i],s=e._functions[r],a=s.generateGlslLines(),si(t,a);for(o=e._fragmentShaderParts.functionIds,i=0;i<o.length;i++)r=o[i],s=e._functions[r],a=s.generateGlslLines(),si(n,a);return{vertexLines:t,fragmentLines:n}}var I_=dl;function k6e(e){this.shaderBuilder=new I_,this.model=e,this.uniformMap={},this.alphaOptions=new Qx,this.renderStateOptions=Ue.getState(Ue.fromCache({depthTest:{enabled:!0,func:Ja.LESS_OR_EQUAL}})),this.hasSilhouette=!1,this.hasSkipLevelOfDetail=!1,this.nodeRenderResources=[]}var BQ=k6e;var DQ=`void silhouetteStage(inout vec4 color) { + if(model_silhouettePass) { + color = czm_gammaCorrect(model_silhouetteColor); + } +}`;var vQ=`void silhouetteStage(in ProcessedAttributes attributes, inout vec4 positionClip) { + #ifdef HAS_NORMALS + if(model_silhouettePass) { + vec3 normal = normalize(czm_normal3D * attributes.normalMC); + normal.x *= czm_projection[0][0]; + normal.y *= czm_projection[1][1]; + positionClip.xy += normal.xy * positionClip.w * model_silhouetteSize * czm_pixelRatio / czm_viewport.z; + } + #endif +} +`;var PQ={name:"ModelSilhouettePipelineStage"};PQ.silhouettesLength=0;PQ.process=function(e,t,n){l(t._silhouetteId)||(t._silhouetteId=++PQ.silhouettesLength);let i=e.shaderBuilder;i.addDefine("HAS_SILHOUETTE",void 0,pe.BOTH),i.addVertexLines(vQ),i.addFragmentLines(DQ),i.addUniform("vec4","model_silhouetteColor",pe.FRAGMENT),i.addUniform("float","model_silhouetteSize",pe.VERTEX),i.addUniform("bool","model_silhouettePass",pe.BOTH);let o={model_silhouetteColor:function(){return t.silhouetteColor},model_silhouetteSize:function(){return t.silhouetteSize},model_silhouettePass:function(){return!1}};e.uniformMap=wt(o,e.uniformMap),e.hasSilhouette=!0};var RQ=PQ;var MQ=`void modelSplitterStage() +{ + // Don't split when rendering the shadow map, because it is rendered from + // the perspective of a totally different camera. +#ifndef SHADOW_MAP + if (model_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (model_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; +#endif +} +`;var NQ={name:"ModelSplitterPipelineStage",SPLIT_DIRECTION_UNIFORM_NAME:"model_splitDirection"};NQ.process=function(e,t,n){let i=e.shaderBuilder;i.addDefine("HAS_MODEL_SPLITTER",void 0,pe.FRAGMENT),i.addFragmentLines(MQ);let o={};i.addUniform("float",NQ.SPLIT_DIRECTION_UNIFORM_NAME,pe.FRAGMENT),o[NQ.SPLIT_DIRECTION_UNIFORM_NAME]=function(){return t.splitDirection},e.uniformMap=wt(o,e.uniformMap)};var LQ=NQ;function U6e(e,t){this.model=e.model,this.shaderBuilder=e.shaderBuilder.clone(),this.uniformMap=ze(e.uniformMap),this.alphaOptions=ze(e.alphaOptions),this.renderStateOptions=ze(e.renderStateOptions,!0),this.hasSilhouette=e.hasSilhouette,this.hasSkipLevelOfDetail=e.hasSkipLevelOfDetail,this.runtimeNode=t,this.attributes=[],this.attributeIndex=1,this.featureIdVertexAttributeSetIndex=0,this.instanceCount=0,this.primitiveRenderResources=[]}var OQ=U6e;function G6e(e){e=e??V.EMPTY_OBJECT,this.lightingModel=e.lightingModel??fp.UNLIT}var FQ=G6e;function z6e(e,t){this.model=e.model,this.runtimeNode=e.runtimeNode,this.attributes=e.attributes.slice(),this.attributeIndex=e.attributeIndex,this.featureIdVertexAttributeSetIndex=e.featureIdVertexAttributeSetIndex,this.uniformMap=ze(e.uniformMap),this.alphaOptions=ze(e.alphaOptions),this.renderStateOptions=ze(e.renderStateOptions,!0),this.hasSilhouette=e.hasSilhouette,this.hasSkipLevelOfDetail=e.hasSkipLevelOfDetail,this.shaderBuilder=e.shaderBuilder.clone(),this.instanceCount=e.instanceCount,this.runtimePrimitive=t;let n=t.primitive;this.count=l(n.indices)?n.indices.count:Qt.getAttributeBySemantic(n,"POSITION").count,this.hasPropertyTable=!1,this.indices=n.indices,this.wireframeIndexBuffer=void 0,this.primitiveType=n.primitiveType;let i=Qt.getPositionMinMax(n,this.runtimeNode.instancingTranslationMin,this.runtimeNode.instancingTranslationMax);this.positionMin=d.clone(i.min,new d),this.positionMax=d.clone(i.max,new d),this.boundingSphere=le.fromCornerPoints(this.positionMin,this.positionMax,new le),this.lightingOptions=new FQ,this.pickId=void 0}var QQ=z6e;function Sj(e){e=e??V.EMPTY_OBJECT;let t=e.command,n=e.primitiveRenderResources,i=n.model;this._command=t,this._model=i,this._runtimePrimitive=n.runtimePrimitive,this._modelMatrix=t.modelMatrix,this._boundingVolume=t.boundingVolume,this._cullFace=t.renderState.cull.face;let o=i.classificationType;this._classificationType=o,this._classifiesTerrain=o!==Jn.CESIUM_3D_TILE,this._classifies3DTiles=o!==Jn.TERRAIN,this._useDebugWireframe=i._enableDebugWireframe&&i.debugWireframe,this._pickId=n.pickId,this._commandListTerrain=[],this._commandList3DTiles=[],this._commandListIgnoreShow=[],this._commandListDebugWireframe=[],this._commandListTerrainPicking=[],this._commandList3DTilesPicking=[],j6e(this)}function V6e(e){return{colorMask:{red:!1,green:!1,blue:!1,alpha:!1},stencilTest:{enabled:!0,frontFunction:e,frontOperation:{fail:_t.KEEP,zFail:_t.DECREMENT_WRAP,zPass:_t.KEEP},backFunction:e,backOperation:{fail:_t.KEEP,zFail:_t.INCREMENT_WRAP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!0,func:Ja.LESS_OR_EQUAL},depthMask:!1}}var H6e={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1,blending:pn.PRE_MULTIPLIED_ALPHA_BLEND},W6e={stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},backFunction:Zn.NOT_EQUAL,backOperation:{fail:_t.ZERO,zFail:_t.ZERO,zPass:_t.ZERO},reference:0,mask:Kt.CLASSIFICATION_MASK},stencilMask:Kt.CLASSIFICATION_MASK,depthTest:{enabled:!1},depthMask:!1},tle=[];function j6e(e){let t=e._command,n=tle;if(e._useDebugWireframe){t.pass=Be.OPAQUE,n.length=0,n.push(t),e._commandListDebugWireframe=HB(e,n,e._commandListDebugWireframe);let r=e._commandListDebugWireframe,s=r.length;for(let a=0;a<s;a++){let c=r[a];c.count*=2,c.offset*=2}return}let o=e.model.allowPicking;if(e._classifiesTerrain){let r=Be.TERRAIN_CLASSIFICATION,s=Tj(t,r),a=$ce(t,r);n.length=0,n.push(s,a),e._commandListTerrain=HB(e,n,e._commandListTerrain),o&&(e._commandListTerrainPicking=ele(e,n,e._commandListTerrainPicking))}if(e._classifies3DTiles){let r=Be.CESIUM_3D_TILE_CLASSIFICATION,s=Tj(t,r),a=$ce(t,r);n.length=0,n.push(s,a),e._commandList3DTiles=HB(e,n,e._commandList3DTiles),o&&(e._commandList3DTilesPicking=ele(e,n,e._commandList3DTilesPicking))}}function HB(e,t,n){let i=e._runtimePrimitive,o=i.batchLengths,r=i.batchOffsets,s=o.length,a=t.length;for(let c=0;c<s;c++){let u=o[c],f=r[c];for(let h=0;h<a;h++){let A=t[h],g=nt.shallowClone(A);g.count=u,g.offset=f,n.push(g)}}return n}function Tj(e,t){let n=nt.shallowClone(e);n.cull=!1,n.pass=t;let i=t===Be.TERRAIN_CLASSIFICATION?Zn.ALWAYS:Zn.EQUAL,o=V6e(i);return n.renderState=Ue.fromCache(o),n}function $ce(e,t){let n=nt.shallowClone(e);return n.cull=!1,n.pass=t,n.renderState=Ue.fromCache(H6e),n}var Y6e=[];function ele(e,t,n){let i=Ue.fromCache(W6e),o=t[0],r=t[1],s=nt.shallowClone(o);s.cull=!0,s.pickOnly=!0;let a=nt.shallowClone(r);a.cull=!0,a.pickOnly=!0,a.renderState=i,a.pickId=e._pickId;let c=Y6e;return c.length=0,c.push(s,a),HB(e,c,n)}Object.defineProperties(Sj.prototype,{command:{get:function(){return this._command}},runtimePrimitive:{get:function(){return this._runtimePrimitive}},batchLengths:{get:function(){return this._runtimePrimitive.batchLengths}},batchOffsets:{get:function(){return this._runtimePrimitive.batchOffsets}},model:{get:function(){return this._model}},classificationType:{get:function(){return this._classificationType}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=R.clone(e,this._modelMatrix);let t=this._runtimePrimitive.boundingSphere;this._boundingVolume=le.transform(t,this._modelMatrix,this._boundingVolume)}},boundingVolume:{get:function(){return this._boundingVolume}},cullFace:{get:function(){return this._cullFace},set:function(e){this._cullFace=e}}});Sj.prototype.pushCommands=function(e,t){let n=e.passes;if(n.render){if(this._useDebugWireframe){si(t,this._commandListDebugWireframe);return}if(this._classifiesTerrain&&si(t,this._commandListTerrain),this._classifies3DTiles&&si(t,this._commandList3DTiles),e.invertClassification&&this._classifies3DTiles){if(this._commandListIgnoreShow.length===0){let o=Be.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW,r=Tj(this._command,o),s=tle;s.length=0,s.push(r),this._commandListIgnoreShow=HB(this,s,this._commandListIgnoreShow)}si(t,this._commandListIgnoreShow)}}return n.pick&&(this._classifiesTerrain&&si(t,this._commandListTerrainPicking),this._classifies3DTiles&&si(t,this._commandList3DTilesPicking)),t};var kQ=Sj;function UQ(e){e=e??V.EMPTY_OBJECT;let t=e.command,n=e.primitiveRenderResources,i=n.model;this._model=i;let o=n.runtimePrimitive;this._runtimePrimitive=o;let r=t.pass===Be.TRANSLUCENT,a=!o.primitive.material.doubleSided&&!r,c=n.hasSilhouette,u=!r&&!c,f=n.hasSkipLevelOfDetail&&!r,h=c;this._command=t,this._modelMatrix=R.clone(t.modelMatrix),this._boundingVolume=le.clone(t.boundingVolume),this._modelMatrix2D=new R,this._boundingVolume2D=new le,this._modelMatrix2DDirty=!1,this._backFaceCulling=t.renderState.cull.enabled,this._cullFace=t.renderState.cull.face,this._shadows=i.shadows,this._debugShowBoundingVolume=t.debugShowBoundingVolume,this._usesBackFaceCulling=a,this._needsTranslucentCommand=u,this._needsSkipLevelOfDetailCommands=f,this._needsSilhouetteCommands=h,this._originalCommand=void 0,this._translucentCommand=void 0,this._skipLodBackfaceCommand=void 0,this._skipLodStencilCommand=void 0,this._silhouetteModelCommand=void 0,this._silhouetteColorCommand=void 0,this._derivedCommands=[],this._has2DCommands=!1,q6e(this)}function dp(e){this.command=e.command,this.updateShadows=e.updateShadows,this.updateBackFaceCulling=e.updateBackFaceCulling,this.updateCullFace=e.updateCullFace,this.updateDebugShowBoundingVolume=e.updateDebugShowBoundingVolume,this.is2D=e.is2D??!1,this.derivedCommand2D=void 0}dp.clone=function(e){return new dp({command:e.command,updateShadows:e.updateShadows,updateBackFaceCulling:e.updateBackFaceCulling,updateCullFace:e.updateCullFace,updateDebugShowBoundingVolume:e.updateDebugShowBoundingVolume,is2D:e.is2D,derivedCommand2D:e.derivedCommand2D})};function q6e(e){let t=e._command;t.modelMatrix=e._modelMatrix,t.boundingVolume=e._boundingVolume;let n=e._model,i=e._usesBackFaceCulling,o=e._derivedCommands;e._originalCommand=new dp({command:t,updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0,is2D:!1}),o.push(e._originalCommand),e._needsTranslucentCommand&&(e._translucentCommand=new dp({command:tWe(t),updateShadows:!0,updateBackFaceCulling:!1,updateCullFace:!1,updateDebugShowBoundingVolume:!0}),o.push(e._translucentCommand)),e._needsSkipLevelOfDetailCommands&&(e._skipLodBackfaceCommand=new dp({command:aWe(t),updateShadows:!1,updateBackFaceCulling:!1,updateCullFace:i,updateDebugShowBoundingVolume:!1}),e._skipLodStencilCommand=new dp({command:cWe(t,n),updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0}),o.push(e._skipLodBackfaceCommand),o.push(e._skipLodStencilCommand)),e._needsSilhouetteCommands&&(e._silhouetteModelCommand=new dp({command:nWe(t,n),updateShadows:!0,updateBackFaceCulling:i,updateCullFace:i,updateDebugShowBoundingVolume:!0}),e._silhouetteColorCommand=new dp({command:iWe(t,n),updateShadows:!1,updateBackFaceCulling:!1,updateCullFace:!1,updateDebugShowBoundingVolume:!1}),o.push(e._silhouetteModelCommand),o.push(e._silhouetteColorCommand))}Object.defineProperties(UQ.prototype,{command:{get:function(){return this._command}},runtimePrimitive:{get:function(){return this._runtimePrimitive}},model:{get:function(){return this._model}},primitiveType:{get:function(){return this._command.primitiveType}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=R.clone(e,this._modelMatrix),this._modelMatrix2DDirty=!0,this._boundingVolume=le.transform(this.runtimePrimitive.boundingSphere,this._modelMatrix,this._boundingVolume)}},boundingVolume:{get:function(){return this._boundingVolume}},shadows:{get:function(){return this._shadows},set:function(e){this._shadows=e,X6e(this)}},backFaceCulling:{get:function(){return this._backFaceCulling},set:function(e){this._backFaceCulling!==e&&(this._backFaceCulling=e,J6e(this))}},cullFace:{get:function(){return this._cullFace},set:function(e){this._cullFace!==e&&(this._cullFace=e,Z6e(this))}},debugShowBoundingVolume:{get:function(){return this._debugShowBoundingVolume},set:function(e){this._debugShowBoundingVolume!==e&&(this._debugShowBoundingVolume=e,$6e(this))}}});function K6e(e,t){let n=e._modelMatrix;e._modelMatrix2D=R.clone(n,e._modelMatrix2D),e._modelMatrix2D[13]-=D.sign(n[13])*2*D.PI*t.mapProjection.ellipsoid.maximumRadius,e._boundingVolume2D=le.transform(e.runtimePrimitive.boundingSphere,e._modelMatrix2D,e._boundingVolume2D)}function X6e(e){let t=e.shadows,n=Dn.castShadows(t),i=Dn.receiveShadows(t),o=e._derivedCommands;for(let r=0;r<o.length;++r){let s=o[r];if(s.updateShadows){let a=s.command;a.castShadows=n,a.receiveShadows=i}}}function J6e(e){let t=e.backFaceCulling,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateBackFaceCulling){let r=o.command,s=ze(r.renderState,!0);s.cull.enabled=t,r.renderState=Ue.fromCache(s)}}}function Z6e(e){let t=e.cullFace,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateCullFace){let r=o.command,s=ze(r.renderState,!0);s.cull.face=t,r.renderState=Ue.fromCache(s)}}}function $6e(e){let t=e.debugShowBoundingVolume,n=e._derivedCommands;for(let i=0;i<n.length;++i){let o=n[i];if(o.updateDebugShowBoundingVolume){let r=o.command;r.debugShowBoundingVolume=t}}}UQ.prototype.pushCommands=function(e,t){let n=nle(this,e);n&&!this._has2DCommands&&(eWe(this),this._has2DCommands=!0,this._modelMatrix2DDirty=!0),this._modelMatrix2DDirty&&(K6e(this,e),this._modelMatrix2DDirty=!1);let i=this.model.styleCommandsNeeded;if(!(this._needsTranslucentCommand&&l(i)&&(i!==Bm.ALL_OPAQUE&&Ux(t,this._translucentCommand,n),i===Bm.ALL_TRANSLUCENT))){if(this._needsSkipLevelOfDetailCommands){let{tileset:o,tile:r}=this._model.content;if(o.hasMixedContent){r._finalResolution||Ux(o._backfaceCommands,this._skipLodBackfaceCommand,n),oWe(this,r,n),Ux(t,this._skipLodStencilCommand,n);return}}if(this._needsSilhouetteCommands){Ux(t,this._silhouetteModelCommand,n);return}return Ux(t,this._originalCommand,n),t}};UQ.prototype.pushSilhouetteCommands=function(e,t){let n=nle(this,e);return Ux(t,this._silhouetteColorCommand,n),t};function Ux(e,t,n){e.push(t.command),n&&e.push(t.derivedCommand2D.command)}function nle(e,t){if(t.mode!==ie.SCENE2D||e.model._projectTo2D)return!1;let i=e.model.sceneGraph._boundingSphere2D,o=i.center.y-i.radius,r=i.center.y+i.radius,s=t.mapProjection.ellipsoid.maximumRadius*D.PI;return o<s&&r>s||o<-s&&r>-s}function kx(e,t){if(!l(t))return;let n=dp.clone(t),i=nt.shallowClone(t.command);return i.modelMatrix=e._modelMatrix2D,i.boundingVolume=e._boundingVolume2D,n.command=i,n.updateShadows=!1,n.is2D=!0,t.derivedCommand2D=n,e._derivedCommands.push(n),n}function eWe(e){kx(e,e._originalCommand),kx(e,e._translucentCommand),kx(e,e._skipLodBackfaceCommand),kx(e,e._skipLodStencilCommand),kx(e,e._silhouetteModelCommand),kx(e,e._silhouetteColorCommand)}function tWe(e){let t=nt.shallowClone(e);t.pass=Be.TRANSLUCENT;let n=ze(e.renderState,!0);return n.cull.enabled=!1,n.depthMask=!1,n.blending=pn.ALPHA_BLEND,t.renderState=Ue.fromCache(n),t}function nWe(e,t){let n=t._silhouetteId%255,i=nt.shallowClone(e),o=ze(e.renderState,!0);return o.stencilTest={enabled:!0,frontFunction:ee.ALWAYS,backFunction:ee.ALWAYS,reference:n,mask:-1,frontOperation:{fail:ee.KEEP,zFail:ee.KEEP,zPass:ee.REPLACE},backOperation:{fail:ee.KEEP,zFail:ee.KEEP,zPass:ee.REPLACE}},t.isInvisible()&&(o.colorMask={red:!1,green:!1,blue:!1,alpha:!1}),i.renderState=Ue.fromCache(o),i}function iWe(e,t){let n=t._silhouetteId%255,i=nt.shallowClone(e),o=ze(e.renderState,!0);o.cull.enabled=!1,(e.pass===Be.TRANSLUCENT||t.silhouetteColor.alpha<1)&&(i.pass=Be.TRANSLUCENT,o.depthMask=!1,o.blending=pn.ALPHA_BLEND),o.stencilTest={enabled:!0,frontFunction:ee.NOTEQUAL,backFunction:ee.NOTEQUAL,reference:n,mask:-1,frontOperation:{fail:ee.KEEP,zFail:ee.KEEP,zPass:ee.KEEP},backOperation:{fail:ee.KEEP,zFail:ee.KEEP,zPass:ee.KEEP}};let s=ze(e.uniformMap);return s.model_silhouettePass=function(){return!0},i.renderState=Ue.fromCache(o),i.uniformMap=s,i.castShadows=!1,i.receiveShadows=!1,i}function oWe(e,t,n){let i=e._skipLodStencilCommand,o=i.command,r=t._selectionDepth,s=rWe(o);if(r!==s){let a=sWe(r),c=ze(o.renderState,!0);c.stencilTest.reference=a,o.renderState=Ue.fromCache(c),n&&(i.derivedCommand2D.renderState=c)}}function rWe(e){return(e.renderState.stencilTest.reference&Kt.SKIP_LOD_MASK)>>>Kt.SKIP_LOD_BIT_SHIFT}function sWe(e){return Kt.CESIUM_3D_TILE_MASK|e<<Kt.SKIP_LOD_BIT_SHIFT}function aWe(e){let t=nt.shallowClone(e),n=ze(e.renderState,!0);n.cull.enabled=!0,n.cull.face=Mi.FRONT,n.colorMask={red:!1,green:!1,blue:!1,alpha:!1},n.polygonOffset={enabled:!0,factor:5,units:5};let i=ze(t.uniformMap),o=new k(5,5);return i.u_polygonOffset=function(){return o},t.renderState=Ue.fromCache(n),t.uniformMap=i,t.castShadows=!1,t.receiveShadows=!1,t}function cWe(e){let t=nt.shallowClone(e),n=ze(e.renderState,!0),{stencilTest:i}=n;return i.enabled=!0,i.mask=Kt.SKIP_LOD_MASK,i.reference=Kt.CESIUM_3D_TILE_MASK,i.frontFunction=Zn.GREATER_OR_EQUAL,i.frontOperation.zPass=_t.REPLACE,i.backFunction=Zn.GREATER_OR_EQUAL,i.backOperation.zPass=_t.REPLACE,n.stencilMask=Kt.CESIUM_3D_TILE_MASK|Kt.SKIP_LOD_MASK,t.renderState=Ue.fromCache(n),t}var GQ=UQ;var zQ=`precision highp float; + +czm_modelVertexOutput defaultVertexOutput(vec3 positionMC) { + czm_modelVertexOutput vsOutput; + vsOutput.positionMC = positionMC; + vsOutput.pointSize = 1.0; + return vsOutput; +} + +void main() +{ + // Initialize the attributes struct with all + // attributes except quantized ones. + ProcessedAttributes attributes; + initializeAttributes(attributes); + + #ifdef HAS_IMAGERY + initializeImageryAttributes(); + #endif + + // Dequantize the quantized ones and add them to the + // attributes struct. + #ifdef USE_DEQUANTIZATION + dequantizationStage(attributes); + #endif + + #ifdef HAS_MORPH_TARGETS + morphTargetsStage(attributes); + #endif + + #ifdef HAS_SKINNING + skinningStage(attributes); + #endif + + #ifdef HAS_PRIMITIVE_OUTLINE + primitiveOutlineStage(); + #endif + + // Compute the bitangent according to the formula in the glTF spec. + // Normal and tangents can be affected by morphing and skinning, so + // the bitangent should not be computed until their values are finalized. + #ifdef HAS_BITANGENTS + attributes.bitangentMC = normalize(cross(attributes.normalMC, attributes.tangentMC) * attributes.tangentSignMC); + #endif + + FeatureIds featureIds; + featureIdStage(featureIds, attributes); + + #ifdef HAS_SELECTED_FEATURE_ID + SelectedFeature feature; + selectedFeatureIdStage(feature, featureIds); + // Handle any show properties that come from the style. + cpuStylingStage(attributes.positionMC, feature); + #endif + + #if defined(USE_2D_POSITIONS) || defined(USE_2D_INSTANCING) + // The scene mode 2D pipeline stage and instancing stage add a different + // model view matrix to accurately project the model to 2D. However, the + // output positions and normals should be transformed by the 3D matrices + // to keep the data the same for the fragment shader. + mat4 modelView = czm_modelView3D; + mat3 normal = czm_normal3D; + #else + // These are used for individual model projection because they will + // automatically change based on the scene mode. + mat4 modelView = czm_modelView; + mat3 normal = czm_normal; + #endif + + // Update the position for this instance in place + #ifdef HAS_INSTANCING + + // The legacy instance stage is used when rendering i3dm models that + // encode instances transforms in world space, as opposed to glTF models + // that use EXT_mesh_gpu_instancing, where instance transforms are encoded + // in object space. + #ifdef USE_LEGACY_INSTANCING + mat4 instanceModelView; + mat3 instanceModelViewInverseTranspose; + + legacyInstancingStage(attributes, instanceModelView, instanceModelViewInverseTranspose); + + modelView = instanceModelView; + normal = instanceModelViewInverseTranspose; + #else + instancingStage(attributes); + #endif + + #ifdef USE_PICKING + v_pickColor = a_pickColor; + #endif + + #endif + + Metadata metadata; + MetadataClass metadataClass; + MetadataStatistics metadataStatistics; + metadataStage(metadata, metadataClass, metadataStatistics, attributes); + + #ifdef HAS_VERTICAL_EXAGGERATION + verticalExaggerationStage(attributes); + #endif + + #ifdef HAS_CUSTOM_VERTEX_SHADER + czm_modelVertexOutput vsOutput = defaultVertexOutput(attributes.positionMC); + customShaderStage(vsOutput, attributes, featureIds, metadata, metadataClass, metadataStatistics); + #endif + + // Compute the final position in each coordinate system needed. + // This returns the value that will be assigned to gl_Position. + vec4 positionClip = geometryStage(attributes, modelView, normal); + + // This must go after the geometry stage as it needs v_positionWC + #ifdef HAS_ATMOSPHERE + atmosphereStage(attributes); + #endif + + #ifdef ENABLE_CLIPPING_POLYGONS + modelClippingPolygonsStage(attributes); + #endif + + #ifdef HAS_SILHOUETTE + silhouetteStage(attributes, positionClip); + #endif + + #ifdef HAS_POINT_CLOUD_SHOW_STYLE + float show = pointCloudShowStylingStage(attributes, metadata); + #else + float show = 1.0; + #endif + + #ifdef HAS_POINT_CLOUD_BACK_FACE_CULLING + show *= pointCloudBackFaceCullingStage(); + #endif + + #ifdef HAS_POINT_CLOUD_COLOR_STYLE + v_pointCloudColor = pointCloudColorStylingStage(attributes, metadata); + #endif + + #ifdef PRIMITIVE_TYPE_POINTS + #ifdef HAS_CUSTOM_VERTEX_SHADER + gl_PointSize = vsOutput.pointSize; + #elif defined(HAS_POINT_CLOUD_POINT_SIZE_STYLE) || defined(HAS_POINT_CLOUD_ATTENUATION) + gl_PointSize = pointCloudPointSizeStylingStage(attributes, metadata); + #else + gl_PointSize = 1.0; + #endif + + gl_PointSize *= show; + #endif + + // Important NOT to compute gl_Position = show * positionClip or we hit: + // https://github.com/CesiumGS/cesium/issues/11270 + // + // We will discard points with v_pointCloudShow == 0 in the fragment shader. + gl_Position = positionClip; + + #ifdef HAS_POINT_CLOUD_SHOW_STYLE + v_pointCloudShow = show; + #endif +} +`;var VQ=` +precision highp float; + +czm_modelMaterial defaultModelMaterial() +{ + czm_modelMaterial material; + material.diffuse = vec3(0.0); + material.specular = vec3(1.0); + material.roughness = 1.0; + material.occlusion = 1.0; + material.normalEC = vec3(0.0, 0.0, 1.0); + material.emissive = vec3(0.0); + material.alpha = 1.0; + return material; +} + +vec4 handleAlpha(vec3 color, float alpha) +{ + #ifdef ALPHA_MODE_MASK + if (alpha < u_alphaCutoff) { + discard; + } + #endif + + return vec4(color, alpha); +} + +SelectedFeature selectedFeature; + +void main() +{ + #ifdef HAS_POINT_CLOUD_SHOW_STYLE + if (v_pointCloudShow == 0.0) + { + discard; + } + #endif + + #ifdef HAS_MODEL_SPLITTER + modelSplitterStage(); + #endif + + czm_modelMaterial material = defaultModelMaterial(); + + ProcessedAttributes attributes; + geometryStage(attributes); + + FeatureIds featureIds; + featureIdStage(featureIds, attributes); + + Metadata metadata; + MetadataClass metadataClass; + MetadataStatistics metadataStatistics; + metadataStage(metadata, metadataClass, metadataStatistics, attributes); + + //======================================================================== + // When not picking metadata START + #ifndef METADATA_PICKING_ENABLED + + #ifdef HAS_SELECTED_FEATURE_ID + selectedFeatureIdStage(selectedFeature, featureIds); + #endif + + #ifndef CUSTOM_SHADER_REPLACE_MATERIAL + materialStage(material, attributes, selectedFeature); + #endif + + #ifdef HAS_CUSTOM_FRAGMENT_SHADER + customShaderStage(material, attributes, featureIds, metadata, metadataClass, metadataStatistics); + #endif + + lightingStage(material, attributes); + + #ifdef HAS_SELECTED_FEATURE_ID + cpuStylingStage(material, selectedFeature); + #endif + + #ifdef HAS_MODEL_COLOR + modelColorStage(material); + #endif + + #ifdef HAS_PRIMITIVE_OUTLINE + primitiveOutlineStage(material); + #endif + + vec4 color = handleAlpha(material.diffuse, material.alpha); + + // When not picking metadata END + //======================================================================== + #else + //======================================================================== + // When picking metadata START + + vec4 metadataValues = vec4(0.0, 0.0, 0.0, 0.0); + metadataPickingStage(metadata, metadataClass, metadataValues); + vec4 color = metadataValues; + + #endif + // When picking metadata END + //======================================================================== + + #ifdef HAS_CLIPPING_PLANES + modelClippingPlanesStage(color); + #endif + + #ifdef ENABLE_CLIPPING_POLYGONS + modelClippingPolygonsStage(); + #endif + + //======================================================================== + // When not picking metadata START + #ifndef METADATA_PICKING_ENABLED + + #if defined(HAS_SILHOUETTE) && defined(HAS_NORMALS) + silhouetteStage(color); + #endif + + #ifdef HAS_ATMOSPHERE + atmosphereStage(color, attributes); + #endif + + #endif + // When not picking metadata END + //======================================================================== + + out_FragColor = color; +} + +`;function ile(){}ile.buildModelDrawCommand=function(e,t){let n=e.shaderBuilder,i=lWe(e,n,t),o=uWe(e,i,t),r=e.model;return l(r.classificationType)?new kQ({primitiveRenderResources:e,command:o}):new GQ({primitiveRenderResources:e,command:o})};function lWe(e,t,n){t.addVertexLines(zQ),t.addFragmentLines(VQ);let i=e.model,o=t.buildShaderProgram(n.context);return i._pipelineResources.push(o),o}function uWe(e,t,n){let i=fWe(e),o=new li({context:n.context,indexBuffer:i,attributes:e.attributes}),r=e.model;r._pipelineResources.push(o);let s=e.alphaOptions.pass,a=r.sceneGraph,c=n.mode===ie.SCENE3D,u,f;if(!c&&!n.scene3DOnly&&r._projectTo2D)u=R.multiplyTransformation(a._computedModelMatrix,e.runtimeNode.computedTransform,new R),f=e.runtimePrimitive.boundingSphere2D;else{let C=c?a._computedModelMatrix:a._computedModelMatrix2D;u=R.multiplyTransformation(C,e.runtimeNode.computedTransform,new R),f=le.transform(e.boundingSphere,u)}let h=ze(Ue.fromCache(e.renderStateOptions),!0);h.cull.face=Qt.getCullFace(u,e.primitiveType),h=Ue.fromCache(h);let A=l(r.classificationType),g=A?!1:Dn.castShadows(r.shadows),m=A?!1:Dn.receiveShadows(r.shadows),_=A?void 0:e.pickId;return new nt({boundingVolume:f,modelMatrix:u,uniformMap:e.uniformMap,renderState:h,vertexArray:o,shaderProgram:t,cull:r.cull,pass:s,count:e.count,owner:r,pickId:_,pickMetadataAllowed:!0,instanceCount:e.instanceCount,primitiveType:e.primitiveType,debugShowBoundingVolume:r.debugShowBoundingVolume,castShadows:g,receiveShadows:m})}function fWe(e){let t=e.wireframeIndexBuffer;if(l(t))return t;let n=e.indices;if(l(n))return n.buffer}var HQ=ile;function Pc(e){e=e??V.EMPTY_OBJECT;let t=e.modelComponents;this._model=e.model,this._components=t,this._pipelineStages=[],this._updateStages=[],this._runtimeNodes=[],this._rootNodes=[],this._skinnedNodes=[],this._runtimeSkins=[],this.modelPipelineStages=[],this._boundingSphere=void 0,this._boundingSphere2D=void 0,this._computedModelMatrix=R.clone(R.IDENTITY),this._computedModelMatrix2D=R.clone(R.IDENTITY),this._axisCorrectionMatrix=Qt.getAxisCorrectionMatrix(t.upAxis,t.forwardAxis,new R),this._runtimeArticulations={},dWe(this)}Object.defineProperties(Pc.prototype,{components:{get:function(){return this._components}},computedModelMatrix:{get:function(){return this._computedModelMatrix}},axisCorrectionMatrix:{get:function(){return this._axisCorrectionMatrix}},boundingSphere:{get:function(){return this._boundingSphere}}});function dWe(e){let t=e._components,n=t.scene,o=e._model.modelMatrix;ole(e,o);let r=t.articulations,s=r.length,a=e._runtimeArticulations;for(let E=0;E<s;E++){let I=r[E],b=new n2({articulation:I,sceneGraph:e}),S=b.name;a[S]=b}let c=t.nodes,u=c.length;e._runtimeNodes=new Array(u);let h=n.nodes.length,A=R.IDENTITY;for(let E=0;E<h;E++){let I=n.nodes[E],b=rle(e,I,A);e._rootNodes.push(b)}let g=t.skins,m=e._runtimeSkins,_=g.length;for(let E=0;E<_;E++){let I=g[E];m.push(new TQ({skin:I,sceneGraph:e}))}let y=e._skinnedNodes,C=y.length;for(let E=0;E<C;E++){let I=y[E],b=e._runtimeNodes[I],B=c[I].skin.index;b._runtimeSkin=m[B],b.updateJointMatrices()}e.applyArticulations()}function ole(e,t){let n=e._components,i=e._model;e._computedModelMatrix=R.multiplyTransformation(t,n.transform,e._computedModelMatrix),e._computedModelMatrix=R.multiplyTransformation(e._computedModelMatrix,e._axisCorrectionMatrix,e._computedModelMatrix),e._computedModelMatrix=R.multiplyByUniformScale(e._computedModelMatrix,i.computedScale,e._computedModelMatrix)}var hWe=new d;function mWe(e,t){let n=e._computedModelMatrix,i=R.getTranslation(n,hWe);if(!d.equals(i,d.ZERO))e._computedModelMatrix2D=kt.basisTo2D(t.mapProjection,n,e._computedModelMatrix2D);else{let o=e.boundingSphere.center,r=kt.ellipsoidTo2DModelMatrix(t.mapProjection,o,e._computedModelMatrix2D);e._computedModelMatrix2D=R.multiply(r,n,e._computedModelMatrix2D)}e._boundingSphere2D=le.transform(e._boundingSphere,e._computedModelMatrix2D,e._boundingSphere2D)}function rle(e,t,n){let i=[],o=Qt.getNodeTransform(t),r=t.children.length;for(let f=0;f<r;f++){let h=t.children[f],A=R.multiplyTransformation(n,o,new R),g=rle(e,h,A);i.push(g)}let s=new g2({node:t,transform:o,transformToRoot:n,children:i,sceneGraph:e}),a=t.primitives.length;for(let f=0;f<a;f++)s.runtimePrimitives.push(new bQ({primitive:t.primitives[f],node:t,model:e._model}));let c=t.index;e._runtimeNodes[c]=s,l(t.skin)&&e._skinnedNodes.push(c);let u=t.name;if(l(u)){let f=e._model,h=new l2(f,s);f._nodesByName[u]=h}return c}var AWe=new d,pWe=new d,gWe=new d,_We=new d;Pc.prototype.buildDrawCommands=function(e){let t=this.buildRenderResources(e);this.computeBoundingVolumes(t),this.createDrawCommands(t,e)};Pc.prototype.buildRenderResources=function(e){let t=this._model,n=new BQ(t);t.statistics.clear(),this.configurePipeline(e);let i=this.modelPipelineStages;for(let o=0;o<i.length;o++)i[o].process(n,t,e);for(let o=0;o<this._runtimeNodes.length;o++){let r=this._runtimeNodes[o];if(!l(r))continue;r.configurePipeline();let s=r.pipelineStages,a=new OQ(n,r);n.nodeRenderResources[o]=a;for(let c=0;c<s.length;c++)s[c].process(a,r.node,e);for(let c=0;c<r.runtimePrimitives.length;c++){let u=r.runtimePrimitives[c];u.configurePipeline(e);let f=u.pipelineStages,h=new QQ(a,u);a.primitiveRenderResources[c]=h;for(let A=0;A<f.length;A++)f[A].process(h,u.primitive,e)}}return n};Pc.prototype.computeBoundingVolumes=function(e){let t=this._model,n=d.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,AWe),i=d.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,pWe);for(let o=0;o<this._runtimeNodes.length;o++){let r=this._runtimeNodes[o];if(!l(r))continue;let s=e.nodeRenderResources[o],a=r.computedTransform;for(let c=0;c<r.runtimePrimitives.length;c++){let u=r.runtimePrimitives[c],f=s.primitiveRenderResources[c];u.boundingSphere=le.clone(f.boundingSphere,new le);let h=R.multiplyByPoint(a,f.positionMin,gWe),A=R.multiplyByPoint(a,f.positionMax,_We);d.minimumByComponent(n,h,n),d.maximumByComponent(i,A,i)}}this._boundingSphere=le.fromCornerPoints(n,i,new le),this._boundingSphere=le.transformWithoutScale(this._boundingSphere,this._axisCorrectionMatrix,this._boundingSphere),this._boundingSphere=le.transform(this._boundingSphere,this._components.transform,this._boundingSphere),t._boundingSphere=le.transform(this._boundingSphere,t.modelMatrix,t._boundingSphere),t._initialRadius=t._boundingSphere.radius,t._boundingSphere.radius*=t._clampedScale};Pc.prototype.createDrawCommands=function(e,t){for(let n=0;n<this._runtimeNodes.length;n++){let i=this._runtimeNodes[n];if(!l(i))continue;let o=e.nodeRenderResources[n];for(let r=0;r<i.runtimePrimitives.length;r++){let s=i.runtimePrimitives[r],a=o.primitiveRenderResources[r],c=HQ.buildModelDrawCommand(a,t);s.drawCommand=c}}};Pc.prototype.configurePipeline=function(e){let t=this.modelPipelineStages;t.length=0;let n=this._model,i=e.fog.enabled&&e.fog.renderable;l(n.color)&&t.push($C),!l(n.classificationType)&&(n.imageBasedLighting.enabled&&t.push($F),n.isClippingEnabled()&&t.push(r2),n.isClippingPolygonsEnabled()&&t.push(c2),n.hasSilhouette(e)&&t.push(RQ),l(n.splitDirection)&&n.splitDirection!==wr.NONE&&t.push(LQ),Nr.is3DTiles(n.type)&&t.push(qF),i&&t.push(JF))};Pc.prototype.update=function(e,t){let n,i,o;for(n=0;n<this._runtimeNodes.length;n++){let r=this._runtimeNodes[n];if(!l(r))continue;for(i=0;i<r.updateStages.length;i++)r.updateStages[i].update(r,this,e);let s=e.mode!==ie.SCENE3D&&this._model._projectTo2D;for(t&&!s&&this.updateJointMatrices(),i=0;i<r.runtimePrimitives.length;i++){let a=r.runtimePrimitives[i];for(o=0;o<a.updateStages.length;o++)a.updateStages[o].update(a,this)}}};Pc.prototype.updateModelMatrix=function(e,t){ole(this,e),t.mode!==ie.SCENE3D&&mWe(this,t);let n=this._rootNodes;for(let i=0;i<n.length;i++){let o=this._runtimeNodes[n[i]];o._transformDirty=!0}};Pc.prototype.updateJointMatrices=function(){let e=this._skinnedNodes,t=e.length;for(let n=0;n<t;n++){let i=e[n];this._runtimeNodes[i].updateJointMatrices()}};function sle(e,t,n,i,o){if(n&&!t.show)return;let r=t.children.length;for(let c=0;c<r;c++){let u=t.getChild(c);sle(e,u,n,i,o)}let s=t.runtimePrimitives,a=s.length;for(let c=0;c<a;c++){let u=s[c];i(u,o)}}function WQ(e,t,n,i){let o=e._rootNodes,r=o.length;for(let s=0;s<r;s++){let a=o[s],c=e._runtimeNodes[a];sle(e,c,t,n,i)}}var yWe={backFaceCulling:void 0};Pc.prototype.updateBackFaceCulling=function(e){let t=yWe;t.backFaceCulling=e,WQ(this,!1,CWe,t)};function CWe(e,t){let n=e.drawCommand;n.backFaceCulling=t.backFaceCulling}var EWe={shadowMode:void 0};Pc.prototype.updateShadows=function(e){let t=EWe;t.shadowMode=e,WQ(this,!1,IWe,t)};function IWe(e,t){let n=e.drawCommand;n.shadows=t.shadowMode}var xWe={debugShowBoundingVolume:void 0};Pc.prototype.updateShowBoundingVolume=function(e){let t=xWe;t.debugShowBoundingVolume=e,WQ(this,!1,bWe,t)};function bWe(e,t){let n=e.drawCommand;n.debugShowBoundingVolume=t.debugShowBoundingVolume}var ale=[],TWe={frameState:void 0,hasSilhouette:void 0};Pc.prototype.pushDrawCommands=function(e){let t=ale;t.length=0;let n=TWe;n.hasSilhouette=this._model.hasSilhouette(e),n.frameState=e,WQ(this,!0,SWe,n),si(e.commandList,t)};function SWe(e,t){let n=t.frameState,i=t.hasSilhouette,o=n.passes,r=ale,s=e.drawCommand;s.pushCommands(n,n.commandList),i&&!o.pick&&s.pushSilhouetteCommands(n,r)}Pc.prototype.setArticulationStage=function(e,t){let n=e.split(" ");if(n.length!==2)return;let i=n[0],o=n[1],r=this._runtimeArticulations[i];l(r)&&r.setArticulationStage(o,t)};Pc.prototype.applyArticulations=function(){let e=this._runtimeArticulations;for(let t in e)e.hasOwnProperty(t)&&e[t].apply()};var jQ=Pc;function x_(){this.pointsLength=0,this.trianglesLength=0,this.geometryByteLength=0,this.texturesByteLength=0,this.propertyTablesByteLength=0,this._bufferIdSet={},this._textureIdByteLengths={},this._batchTextureIdMap=new Pt}Object.defineProperties(x_.prototype,{batchTexturesByteLength:{get:function(){let e=this._batchTextureIdMap.length,t=this._batchTextureIdMap.values,n=0;for(let i=0;i<e;i++)n+=t[i].byteLength;return n}}});x_.prototype.clear=function(){this.pointsLength=0,this.trianglesLength=0,this.geometryByteLength=0,this.texturesByteLength=0,this.propertyTablesByteLength=0,this._bufferIdSet={},this._textureIdByteLengths={},this._batchTextureIdMap.removeAll()};x_.prototype.addBuffer=function(e,t){if(!this._bufferIdSet.hasOwnProperty(e._id)){let n=t?2:1;this.geometryByteLength+=e.sizeInBytes*n}this._bufferIdSet[e._id]=!0};x_.prototype.addTexture=function(e){this._textureIdByteLengths.hasOwnProperty(e._id)||(this.texturesByteLength+=e.sizeInBytes,this._textureIdByteLengths[e._id]=e.sizeInBytes)};x_.prototype.getTextureIds=function(){return Object.keys(this._textureIdByteLengths)};x_.prototype.getTextureByteLengthById=function(e){return this._textureIdByteLengths[e]};x_.prototype.addBatchTexture=function(e){this._batchTextureIdMap.contains(e._id)||this._batchTextureIdMap.set(e._id,e)};var YQ=x_;var fle=Es(CR(),1);var cle={},sE=Uint32Array.BYTES_PER_ELEMENT;cle.parse=function(e,t){t=t??0;let n=new Uint8Array(e),i=new DataView(e);t+=sE;let o=i.getUint32(t,!0);if(o!==1)throw new ce(`Only Point Cloud tile version 1 is supported. Version ${o} is not.`);t+=sE,t+=sE;let r=i.getUint32(t,!0);if(r===0)throw new ce("Feature table must have a byte length greater than zero");t+=sE;let s=i.getUint32(t,!0);t+=sE;let a=i.getUint32(t,!0);t+=sE;let c=i.getUint32(t,!0);t+=sE;let u=yr(n,t,r);t+=r;let f=new Uint8Array(e,t,s);t+=s;let h,A;a>0&&(h=yr(n,t,a),t+=a,c>0&&(A=new Uint8Array(e,t,c),t+=c));let g=new Sm(u,f),m=g.getGlobalProperty("POINTS_LENGTH");if(g.featuresLength=m,!l(m))throw new ce("Feature table global property: POINTS_LENGTH must be defined");let _=g.getGlobalProperty("RTC_CENTER",q.FLOAT,3);l(_)&&(_=d.unpack(_));let y=wWe(g,h);if(y.rtcCenter=_,y.pointsLength=m,!y.hasPositions){let C=BWe(g);y.positions=C,y.hasPositions=y.hasPositions||l(C)}if(!y.hasPositions)throw new ce("Either POSITION or POSITION_QUANTIZED must be defined.");if(!y.hasNormals){let C=vWe(g);y.normals=C,y.hasNormals=y.hasNormals||l(C)}if(!y.hasColors){let C=DWe(g);y.colors=C,y.hasColors=y.hasColors||l(C),y.hasConstantColor=l(y.constantColor),y.isTranslucent=l(C)&&C.isTranslucent}if(!y.hasBatchIds){let C=PWe(g);y.batchIds=C,y.hasBatchIds=y.hasBatchIds||l(C)}if(y.hasBatchIds){let C=g.getGlobalProperty("BATCH_LENGTH");if(!l(C))throw new ce("Global property: BATCH_LENGTH must be defined when BATCH_ID is defined.");y.batchLength=C}return l(A)&&(A=new Uint8Array(A),y.batchTableJson=h,y.batchTableBinary=A),y};function wWe(e,t){let n=e.json,i,o,r,s=l(n.extensions)?n.extensions["3DTILES_draco_point_compression"]:void 0,a=l(t)&&l(t.extensions)?t.extensions["3DTILES_draco_point_compression"]:void 0;l(a)&&(r=a.properties);let c,u,f,h,A;if(l(s)){o=s.properties;let m=s.byteOffset,_=s.byteLength;if(!l(o)||!l(m)||!l(_))throw new ce("Draco properties, byteOffset, and byteLength must be defined");i=e.buffer.slice(m,m+_),c=l(o.POSITION),u=l(o.RGB)||l(o.RGBA),f=l(o.NORMAL),h=l(o.BATCH_ID),A=l(o.RGBA)}let g;return l(i)&&(g={buffer:i,featureTableProperties:o,batchTableProperties:r,properties:wt(o,r),dequantizeInShader:!0}),{draco:g,hasPositions:c,hasColors:u,isTranslucent:A,hasNormals:f,hasBatchIds:h}}function BWe(e){let t=e.json,n;if(l(t.POSITION))return n=e.getPropertyArray("POSITION",q.FLOAT,3),{name:ct.POSITION,semantic:ct.POSITION,typedArray:n,isQuantized:!1,componentDatatype:q.FLOAT,type:Ht.VEC3};if(l(t.POSITION_QUANTIZED)){n=e.getPropertyArray("POSITION_QUANTIZED",q.UNSIGNED_SHORT,3);let i=e.getGlobalProperty("QUANTIZED_VOLUME_SCALE",q.FLOAT,3);if(!l(i))throw new ce("Global property: QUANTIZED_VOLUME_SCALE must be defined for quantized positions.");let o=65535,r=e.getGlobalProperty("QUANTIZED_VOLUME_OFFSET",q.FLOAT,3);if(!l(r))throw new ce("Global property: QUANTIZED_VOLUME_OFFSET must be defined for quantized positions.");return{name:ct.POSITION,semantic:ct.POSITION,typedArray:n,isQuantized:!0,componentDatatype:q.FLOAT,type:Ht.VEC3,quantizedRange:o,quantizedVolumeOffset:d.unpack(r),quantizedVolumeScale:d.unpack(i),quantizedComponentDatatype:q.UNSIGNED_SHORT,quantizedType:Ht.VEC3}}}function DWe(e){let t=e.json,n;if(l(t.RGBA))return n=e.getPropertyArray("RGBA",q.UNSIGNED_BYTE,4),{name:ct.COLOR,semantic:ct.COLOR,setIndex:0,typedArray:n,componentDatatype:q.UNSIGNED_BYTE,type:Ht.VEC4,normalized:!0,isRGB565:!1,isTranslucent:!0};if(l(t.RGB))return n=e.getPropertyArray("RGB",q.UNSIGNED_BYTE,3),{name:"COLOR",semantic:ct.COLOR,setIndex:0,typedArray:n,componentDatatype:q.UNSIGNED_BYTE,type:Ht.VEC3,normalized:!0,isRGB565:!1,isTranslucent:!1};if(l(t.RGB565))return n=e.getPropertyArray("RGB565",q.UNSIGNED_SHORT,1),{name:"COLOR",semantic:ct.COLOR,setIndex:0,typedArray:n,componentDatatype:q.FLOAT,type:Ht.VEC3,normalized:!1,isRGB565:!0,isTranslucent:!1};if(l(t.CONSTANT_RGBA)){let i=e.getGlobalProperty("CONSTANT_RGBA",q.UNSIGNED_BYTE,4),o=i[3],r=G.fromBytes(i[0],i[1],i[2],o),s=o<255;return{name:ct.COLOR,semantic:ct.COLOR,setIndex:0,constantColor:r,componentDatatype:q.FLOAT,type:Ht.VEC4,isQuantized:!1,isTranslucent:s}}}function vWe(e){let t=e.json,n;if(l(t.NORMAL))return n=e.getPropertyArray("NORMAL",q.FLOAT,3),{name:ct.NORMAL,semantic:ct.NORMAL,typedArray:n,octEncoded:!1,octEncodedZXY:!1,componentDatatype:q.FLOAT,type:Ht.VEC3};if(l(t.NORMAL_OCT16P))return n=e.getPropertyArray("NORMAL_OCT16P",q.UNSIGNED_BYTE,2),{name:ct.NORMAL,semantic:ct.NORMAL,typedArray:n,octEncoded:!0,octEncodedZXY:!1,quantizedRange:(1<<8)-1,quantizedType:Ht.VEC2,quantizedComponentDatatype:q.UNSIGNED_BYTE,componentDatatype:q.FLOAT,type:Ht.VEC3}}function PWe(e){let t=e.json;if(l(t.BATCH_ID)){let n=e.getPropertyArray("BATCH_ID",q.UNSIGNED_SHORT,1);return{name:ct.FEATURE_ID,semantic:ct.FEATURE_ID,setIndex:0,typedArray:n,componentDatatype:q.fromTypedArray(n),type:Ht.SCALAR}}}var Gx=cle;var RWe=bn.Components,MWe=bn.Scene,NWe=bn.Node,LWe=bn.Primitive,OWe=bn.Attribute,lle=bn.Quantization,FWe=bn.FeatureIdAttribute,QWe=bn.Material,kWe=bn.MetallicRoughness;function b_(e){e=e??V.EMPTY_OBJECT;let t=e.arrayBuffer,n=e.byteOffset??0;this._arrayBuffer=t,this._byteOffset=n,this._loadAttributesFor2D=e.loadAttributesFor2D??!1,this._parsedContent=void 0,this._decodePromise=void 0,this._decodedAttributes=void 0,this._promise=void 0,this._error=void 0,this._state=dt.UNLOADED,this._buffers=[],this._components=void 0,this._transform=R.IDENTITY}l(Object.create)&&(b_.prototype=Object.create(qi.prototype),b_.prototype.constructor=b_);Object.defineProperties(b_.prototype,{cacheKey:{get:function(){}},components:{get:function(){return this._components}},transform:{get:function(){return this._transform}}});b_.prototype.load=function(){if(l(this._promise))return this._promise;this._parsedContent=Gx.parse(this._arrayBuffer,this._byteOffset),this._state=dt.PROCESSING,this._promise=Promise.resolve(this)};b_.prototype.process=function(e){if(l(this._error)){let t=this._error;throw this._error=void 0,t}if(this._state===dt.READY)return!0;if(this._state===dt.PROCESSING){if(l(this._decodePromise))return!1;this._decodePromise=UWe(this,e.context)}return!1};function UWe(e,t){let i=e._parsedContent.draco,o;if(l(i)?o=jg.decodePointCloud(i,t):o=Promise.resolve(),!!l(o))return e._decodePromise=o,o.then(function(r){if(!e.isDestroyed())return l(r)&&GWe(e,i,r),ZWe(e,t),e._state=dt.READY,e}).catch(function(r){e.unload(),e._state=dt.FAILED;let s="Failed to load Draco pnts";e._error=e.getError(s,r)})}function GWe(e,t,n){e._state=dt.READY;let i=e._parsedContent,o;if(l(n.POSITION)){if(o={name:"POSITION",semantic:ct.POSITION,typedArray:n.POSITION.array,componentDatatype:q.FLOAT,type:Ht.VEC3,isQuantized:!1},l(n.POSITION.data.quantization)){let a=n.POSITION.data.quantization,c=a.range,u=d.fromElements(c,c,c),f=d.unpack(a.minValues),h=(1<<a.quantizationBits)-1;o.isQuantized=!0,o.quantizedRange=h,o.quantizedVolumeOffset=f,o.quantizedVolumeScale=u,o.quantizedComponentDatatype=h<=255?q.UNSIGNED_BYTE:q.UNSIGNED_SHORT,o.quantizedType=Ht.VEC3}i.positions=o}if(l(n.NORMAL)){if(o={name:"NORMAL",semantic:ct.NORMAL,typedArray:n.NORMAL.array,componentDatatype:q.FLOAT,type:Ht.VEC3,isQuantized:!1,octEncoded:!1,octEncodedZXY:!1},l(n.NORMAL.data.quantization)){let a=(1<<n.NORMAL.data.quantization.quantizationBits)-1;o.quantizedRange=a,o.octEncoded=!0,o.octEncodedZXY=!0,o.quantizedComponentDatatype=q.UNSIGNED_BYTE,o.quantizedType=Ht.VEC2}i.normals=o}if(l(n.RGBA)?i.colors={name:"COLOR",semantic:ct.COLOR,setIndex:0,typedArray:n.RGBA.array,componentDatatype:q.UNSIGNED_BYTE,type:Ht.VEC4,normalized:!0,isTranslucent:!0}:l(n.RGB)&&(i.colors={name:"COLOR",semantic:ct.COLOR,setIndex:0,typedArray:n.RGB.array,componentDatatype:q.UNSIGNED_BYTE,type:Ht.VEC3,normalized:!0,isTranslucent:!1}),l(n.BATCH_ID)){let a=n.BATCH_ID.array;i.batchIds={name:"_FEATURE_ID",semantic:ct.FEATURE_ID,setIndex:0,typedArray:a,componentDatatype:q.fromTypedArray(a),type:Ht.SCALAR}}let r=i.batchTableJson,s=t.batchTableProperties;for(let a in s)if(s.hasOwnProperty(a)){let c=n[a];l(r)||(r={}),i.hasDracoBatchTable=!0;let u=c.data;r[a]={byteOffset:u.byteOffset,type:zWe(u.componentsPerAttribute),componentType:VWe(u.componentDatatype),typedArray:c.array}}i.batchTableJson=r}function zWe(e){switch(e){case 1:return"SCALAR";case 2:return"VEC2";case 3:return"VEC3";case 4:return"VEC4"}}function VWe(e){switch(e){case ee.BYTE:return"BYTE";case ee.UNSIGNED_BYTE:return"UNSIGNED_BYTE";case ee.SHORT:return"SHORT";case ee.UNSIGNED_SHORT:return"UNSIGNED_SHORT";case ee.INT:return"INT";case ee.UNSIGNED_INT:return"UNSIGNED_INT";case ee.DOUBLE:return"DOUBLE";case ee.FLOAT:return"FLOAT"}}function WB(e,t,n){let i=t.typedArray,o;if(t.octEncoded&&(o=new lle,o.octEncoded=t.octEncoded,o.octEncodedZXY=t.octEncodedZXY,o.normalizationRange=t.quantizedRange,o.type=t.quantizedType,o.componentDatatype=t.quantizedComponentDatatype),t.isQuantized){o=new lle;let a=t.quantizedRange;o.normalizationRange=a,o.quantizedVolumeOffset=d.ZERO;let c=t.quantizedVolumeScale;o.quantizedVolumeDimensions=c,o.quantizedVolumeStepSize=d.divideByScalar(c,a,new d),o.componentDatatype=t.quantizedComponentDatatype,o.type=t.quantizedType}let r=new OWe;if(r.name=t.name,r.semantic=t.semantic,r.setIndex=t.setIndex,r.componentDatatype=t.componentDatatype,r.type=t.type,r.normalized=t.normalized??!1,r.min=t.min,r.max=t.max,r.quantization=o,t.isRGB565&&(i=Fn.decodeRGB565(i)),l(t.constantColor)){let a=new Array(4);r.constant=G.pack(t.constantColor,a)}else{let a=Et.createVertexBuffer({typedArray:i,context:n,usage:Qe.STATIC_DRAW});a.vertexArrayDestroyable=!1,e._buffers.push(a),r.buffer=a}let s=e._loadAttributesFor2D;return r.semantic===ct.POSITION&&s&&(r.typedArray=i),r}var ule,qQ;function HWe(e){if(!l(qQ)){ule=new fle.default(0),qQ=new Array(e);for(let t=0;t<e;++t)qQ[t]=ule.random()}return qQ}var WWe=new d,jWe=new d,YWe=new d;function qWe(e){let t=e.typedArray,n=20,i=t.length/3,o=Math.min(i,n),r=HWe(n),s=Number.MAX_VALUE,a=-Number.MAX_VALUE,c=d.fromElements(s,s,s,WWe),u=d.fromElements(a,a,a,jWe),f,h,A;if(e.isQuantized)c=d.ZERO,u=e.quantizedVolumeScale;else for(f=0;f<o;++f)h=Math.floor(r[f]*i),A=d.unpack(t,h*3,YWe),d.minimumByComponent(c,A,c),d.maximumByComponent(u,A,u);e.min=d.clone(c),e.max=d.clone(u)}var KWe={name:ct.COLOR,semantic:ct.COLOR,setIndex:0,constantColor:G.DARKGRAY,componentDatatype:q.FLOAT,type:Ht.VEC4,isQuantized:!1,isTranslucent:!1};function XWe(e,t,n){let i=[],o,r=t.positions;return l(r)&&(qWe(r),o=WB(e,r,n),o.count=t.pointsLength,i.push(o)),l(t.normals)&&(o=WB(e,t.normals,n),i.push(o)),l(t.colors)?(o=WB(e,t.colors,n),i.push(o)):(o=WB(e,KWe,n),i.push(o)),l(t.batchIds)&&(o=WB(e,t.batchIds,n),i.push(o)),i}function JWe(e,t){let n=e.batchLength,i=e.pointsLength,o=e.batchTableBinary,r=!l(e.batchIds);return l(o)||e.hasDracoBatchTable?f_({count:n??i,batchTable:e.batchTableJson,binaryBody:o,parseAsPropertyAttributes:r,customAttributeOutput:t}):new Da({schema:{},propertyTables:[]})}function ZWe(e,t){let n=e._parsedContent,i=new kWe;i.metallicFactor=0,i.roughnessFactor=.9;let o=new QWe;o.metallicRoughness=i;let r=n.colors;l(r)&&r.isTranslucent&&(o.alphaMode=np.BLEND);let s=!l(n.normals);o.unlit=s;let a=new LWe;if(a.attributes=XWe(e,n,t),a.primitiveType=Me.POINTS,a.material=o,l(n.batchIds)){let g=new FWe;g.propertyTableId=0,g.setIndex=0,g.positionalLabel="featureId_0",a.featureIds.push(g)}let c=new NWe;c.index=0,c.primitives=[a];let u=new MWe;u.nodes=[c],u.upAxis=Ao.Z,u.forwardAxis=Ao.X;let f=new RWe;f.scene=u,f.nodes=[c];let h=[];f.structuralMetadata=JWe(n,h),h.length>0&&$We(e,a,h,t),l(n.rtcCenter)&&(f.transform=R.multiplyByTranslation(f.transform,n.rtcCenter,f.transform));let A=n.positions;l(A)&&A.isQuantized&&(f.transform=R.multiplyByTranslation(f.transform,A.quantizedVolumeOffset,f.transform)),e._components=f,e._parsedContent=void 0,e._arrayBuffer=void 0}function $We(e,t,n,i){let o=t.attributes,r=n.length;for(let s=0;s<r;s++){let a=n[s],c=Et.createVertexBuffer({typedArray:a.typedArray,context:i,usage:Qe.STATIC_DRAW});c.vertexArrayDestroyable=!1,e._buffers.push(c),a.buffer=c,a.typedArray=void 0,o.push(a)}t.propertyAttributeIds=[0]}b_.prototype.unload=function(){let e=this._buffers;for(let t=0;t<e.length;t++)e[t].destroy();e.length=0,this._components=void 0,this._parsedContent=void 0,this._arrayBuffer=void 0};var KQ=b_;var eje=new d,tje=new d,nje=new d,ije=new R,oje=new R,rje=new R,sje=new Ae,aje=new le;function jB(e,t,n,i,o,r,s){if(!e._ready||n.mode===ie.MORPHING)return;let a=Number.MAX_VALUE,c=e.sceneGraph,u=c._runtimeNodes;for(let f=0;f<u.length;f++){let h=u[f],A=h.node,g=R.clone(h.computedTransform,ije),m=R.clone(c.computedModelMatrix,oje),_=A.instances;l(_)&&_.transformInWorldSpace&&(m=R.multiplyTransformation(e.modelMatrix,c.components.transform,m),g=R.multiplyTransformation(c.axisCorrectionMatrix,h.computedTransform,g));let y=R.multiplyTransformation(m,g,rje);n.mode!==ie.SCENE3D&&(y=kt.basisTo2D(n.mapProjection,y,y));let C=[];if(l(_)){let I=_.attributes[0].count,b=_.attributes[0].componentDatatype,S=12,B=h.transformsTypedArray;if(!l(B)){let v=h.instancingTransformsBuffer;l(v)&&n.context.webgl2&&(B=q.createTypedArray(b,I*S),v.getBufferData(B))}if(l(B))for(let v=0;v<I;v++){let P=v*S,N=new R(B[P],B[P+1],B[P+2],B[P+3],B[P+4],B[P+5],B[P+6],B[P+7],B[P+8],B[P+9],B[P+10],B[P+11],0,0,0,1);_.transformInWorldSpace?(R.multiplyTransformation(N,g,N),R.multiplyTransformation(m,N,N)):R.multiplyTransformation(N,y,N),C.push(N)}}C.length===0&&C.push(y);let E=h.runtimePrimitives.length;for(let I=0;I<E;I++){let b=h.runtimePrimitives[I],S=b.primitive;if(l(b.boundingSphere)&&!l(_)){let W=le.transform(b.boundingSphere,y,aje),Z=Ai.raySphere(t,W);if(!l(Z))continue}let B=Qt.getAttributeBySemantic(S,ct.POSITION),v=B.byteOffset,P=B.byteStride,N=B.count;if(!l(S.indices))continue;let L=S.indices.typedArray;if(!l(L)){let W=S.indices.buffer,Z=S.indices.count,Y=S.indices.indexDatatype;l(W)&&n.context.webgl2&&(Y===Fe.UNSIGNED_BYTE?L=new Uint8Array(Z):Y===Fe.UNSIGNED_SHORT?L=new Uint16Array(Z):Y===Fe.UNSIGNED_INT&&(L=new Uint32Array(Z)),W.getBufferData(L))}let p=B.typedArray,x=B.componentDatatype,T=B.type,w=B.quantization;l(w)&&(x=B.quantization.componentDatatype,T=B.quantization.type);let M=Ht.getNumberOfComponents(T),O=q.getSizeInBytes(x),U=!l(p)&&l(P)&&P!==M*O,Q=M,z=0;U&&(Q=P/O,z=v/O);let F=N*Q;if(!l(p)){let W=B.buffer;l(W)&&n.context.webgl2&&(p=q.createTypedArray(x,F),W.getBufferData(p,U?0:v,0,F)),w&&B.normalized&&(p=Fn.dequantize(p,x,T,N))}if(!l(L)||!l(p))return;r=r??te.default,i=i??1,o=o??0;let H=L.length;for(let W=0;W<H;W+=3){let Z=L[W],Y=L[W+1],$=L[W+2];for(let X of C){let he=wj(p,Z,z,Q,w,X,i,o,r,eje),ge=wj(p,Y,z,Q,w,X,i,o,r,tje),fe=wj(p,$,z,Q,w,X,i,o,r,nje),ye=Ai.rayTriangleParametric(t,he,ge,fe,e.backFaceCulling??!0);l(ye)&&ye<a&&ye>=0&&(a=ye)}}}}if(a!==Number.MAX_VALUE){if(s=In.getPoint(t,a,s),n.mode!==ie.SCENE3D){d.fromElements(s.y,s.z,s.x,s);let f=n.mapProjection,h=f.ellipsoid,A=f.unproject(s,sje);h.cartographicToCartesian(A,s)}return s}}function wj(e,t,n,i,o,r,s,a,c,u){let f=n+t*i;if(u.x=e[f],u.y=e[f+1],u.z=e[f+2],l(o))if(o.octEncoded){if(u=Fn.octDecodeInRange(u,o.normalizationRange,u),o.octEncodedZXY){let h=u.x;u.x=u.z,u.z=u.y,u.y=h}}else u=d.multiplyComponents(u,o.quantizedVolumeStepSize,u),u=d.add(u,o.quantizedVolumeOffset,u);return u=R.multiplyByPoint(r,u,u),s!==1&&Yr.getPosition(u,c,s,a,u),u}var Bj=class{constructor(t){this.show=t.show,this.alpha=t.alpha,this.brightness=t.brightness,this.contrast=t.contrast,this.hue=t.hue,this.saturation=t.saturation,this.gamma=t.gamma,this.colorToAlpha=t.colorToAlpha}},XQ=Bj;var Dj=class{constructor(t){this._model=t,this._modelPrimitiveImageries=void 0,this._imageryConfigurations=[]}update(t){this._hasImagery&&this._allImageryLayersReady&&(l(this._modelPrimitiveImageries)||(this._modelPrimitiveImageries=this._createModelPrimitiveImageries()),this._updateModelPrimitiveImageries(t),this._checkForModifiedImageryConfigurations())}_createModelPrimitiveImageries(){let t=this._model,n=this._collectRuntimeNodesAndPrimitives(),i=[],o=n.length;for(let r=0;r<o;r++){let s=n[r],a=s.runtimeNode,c=s.runtimePrimitive,u=new Fx(t,a,c);c.primitive.modelPrimitiveImagery=u,i.push(u)}return i}_collectRuntimeNodesAndPrimitives(){let i=this._model.sceneGraph._runtimeNodes,o=[];for(let r=0;r<i.length;r++){let s=i[r];if(l(s))for(let a=0;a<s.runtimePrimitives.length;a++){let c=s.runtimePrimitives[a];o.push({runtimeNode:s,runtimePrimitive:c})}}return o}_updateModelPrimitiveImageries(t){if(!l(this._modelPrimitiveImageries))throw new me("The modelPrimitiveImageries have not been created");let n=this._modelPrimitiveImageries,i=n.length;for(let o=0;o<i;o++)n[o].update(t)}_deleteModelPrimitiveImageries(){let t=this._modelPrimitiveImageries;if(!l(t))return;let n=t.length;for(let i=0;i<n;i++)t[i].destroy();delete this._modelPrimitiveImageries}get ready(){return this._hasImagery?!(!this._allImageryLayersReady||!this._allModelPrimitiveImageriesReady):!0}get _hasImagery(){let n=this._model.imageryLayers;return l(n)&&n.length>0}get _allImageryLayersReady(){if(!this._hasImagery)return!0;let t=this._model.imageryLayers,n=t.length;for(let i=0;i<n;i++)if(!t.get(i).ready)return!1;return!0}get _allModelPrimitiveImageriesReady(){let t=this._modelPrimitiveImageries;if(!l(t))return!1;let n=t.length;for(let i=0;i<n;i++)if(!t[i].ready)return!1;return!0}_checkForModifiedImageryConfigurations(){this._imageryConfigurationsModified()&&(this._updateImageryConfigurations(),this._model.resetDrawCommands())}_imageryConfigurationsModified(){let n=this._model.imageryLayers,i=this._imageryConfigurations;if(n.length!==i.length)return!0;for(let o=0;o<n.length;o++){let r=n.get(o),s=i[o];if(r.show!==s.show||r.alpha!==s.alpha||r.brightness!==s.brightness||r.contrast!==s.contrast||r.hue!==s.hue||r.saturation!==s.saturation||r.gamma!==s.gamma||r.colorToAlpha!==s.colorToAlpha)return!0}return!1}_updateImageryConfigurations(){let n=this._model.imageryLayers,i=this._imageryConfigurations;i.length=n.length;for(let o=0;o<n.length;o++){let r=n.get(o);i[o]=new XQ(r)}}isDestroyed(){return!1}destroy(){if(!this.isDestroyed())return this._deleteModelPrimitiveImageries(),ue(this)}},JQ=Dj;function yo(e){e=e??V.EMPTY_OBJECT,this._loader=e.loader,this._resource=e.resource,this.type=e.type??Nr.GLTF,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=R.clone(this.modelMatrix),this._scale=e.scale??1,this._minimumPixelSize=e.minimumPixelSize??0,this._maximumScale=e.maximumScale,this._clampedScale=l(this._maximumScale)?Math.min(this._scale,this._maximumScale):this._scale,this._computedScale=this._clampedScale,this._updateModelMatrix=!1,this.referenceMatrix=void 0,this._iblReferenceFrameMatrix=J.clone(J.IDENTITY),this._resourcesLoaded=!1,this._drawCommandsBuilt=!1,this._ready=!1,this._customShader=e.customShader,this._content=e.content,this._texturesLoaded=!1,this._defaultTexture=void 0,this._activeAnimations=new WF(this),this._clampAnimations=e.clampAnimations??!0,this._userAnimationDirty=!1,this._id=e.id,this._idDirty=!1,this._color=G.clone(e.color),this._colorBlendMode=e.colorBlendMode??al.HIGHLIGHT,this._colorBlendAmount=e.colorBlendAmount??.5;let t=e.silhouetteColor??G.RED;this._silhouetteColor=G.clone(t),this._silhouetteSize=e.silhouetteSize??0,this._silhouetteDirty=!1,this._silhouetteId=void 0,this._cull=e.cull??!0,this._opaquePass=e.opaquePass??Be.OPAQUE,this._allowPicking=e.allowPicking??!0,this._show=e.show??!0,this._style=void 0,this._styleDirty=!1,this._styleCommandsNeeded=void 0;let n=e.featureIdLabel??"featureId_0";typeof n=="number"&&(n=`featureId_${n}`),this._featureIdLabel=n;let i=e.instanceFeatureIdLabel??"instanceFeatureId_0";typeof i=="number"&&(i=`instanceFeatureId_${i}`),this._instanceFeatureIdLabel=i,this._featureTables=[],this._featureTableId=void 0,this._featureTableIdDirty=!0,this._pipelineResources=[],this._modelResources=[],this._pickIds=[],this._boundingSphere=new le,this._initialRadius=void 0,this._heightReference=e.heightReference??Ze.NONE,this._heightDirty=this._heightReference!==Ze.NONE,this._removeUpdateHeightCallback=void 0,this._enableVerticalExaggeration=e.enableVerticalExaggeration??!0,this._hasVerticalExaggeration=!1,this._clampedModelMatrix=void 0;let o=e.scene;l(o)&&l(o.terrainProviderChanged)&&(this._terrainProviderChangedCallback=o.terrainProviderChanged.addEventListener(()=>{this._heightDirty=!0})),this._scene=o,this._distanceDisplayCondition=e.distanceDisplayCondition;let r=new op(e.pointCloudShading);this._pointCloudShading=r,this._attenuation=r.attenuation,this._pointCloudBackFaceCulling=r.backFaceCulling;let s=e.clippingPlanes;l(s)&&s.owner===void 0?Vs.setOwner(s,this,"_clippingPlanes"):this._clippingPlanes=s,this._clippingPlanesState=0,this._clippingPlanesMatrix=R.clone(R.IDENTITY);let a=e.clippingPolygons;l(a)&&a.owner===void 0?xm.setOwner(a,this,"_clippingPolygons"):this._clippingPolygons=a,this._clippingPolygonsState=0,this._modelImagery=new JQ(this),this._lightColor=d.clone(e.lightColor),this._imageBasedLighting=l(e.imageBasedLighting)?e.imageBasedLighting:new GI,this._shouldDestroyImageBasedLighting=!l(e.imageBasedLighting),this._environmentMapManager=void 0;let c=new s_(e.environmentMapOptions);s_.setOwner(c,this,"_environmentMapManager"),this._backFaceCulling=e.backFaceCulling??!0,this._backFaceCullingDirty=!1,this._shadows=e.shadows??Dn.ENABLED,this._shadowsDirty=!1,this._debugShowBoundingVolumeDirty=!1,this._debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._enableDebugWireframe=e.enableDebugWireframe??!1,this._enableShowOutline=e.enableShowOutline??!0,this._debugWireframe=e.debugWireframe??!1,this._debugWireframe===!0&&this._enableDebugWireframe===!1&&this.type===Nr.GLTF&&yt("model-debug-wireframe-ignored","enableDebugWireframe must be set to true in Model.fromGltf, otherwise debugWireframe will be ignored.");let u=e.credit;typeof u=="string"&&(u=new Dt(u)),this._credits=[],this._credit=u,this._resourceCredits=[],this._gltfCredits=[],this._showCreditsOnScreen=e.showCreditsOnScreen??!1,this._showCreditsOnScreenDirty=!0,this._splitDirection=e.splitDirection??wr.NONE,this._enableShowOutline=e.enableShowOutline??!0,this.showOutline=e.showOutline??!0,this.outlineColor=e.outlineColor??G.BLACK,this._classificationType=e.classificationType,this._statistics=new YQ,this._sceneMode=void 0,this._projectTo2D=e.projectTo2D??!1,this._enablePick=e.enablePick??!1,this._fogRenderable=void 0,this._skipLevelOfDetail=!1,this._ignoreCommands=e.ignoreCommands??!1,this._errorEvent=new _e,this._readyEvent=new _e,this._texturesReadyEvent=new _e,this._sceneGraph=void 0,this._nodesByName={},this.pickObject=e.pickObject}function vj(e,t){if(e._errorEvent.numberOfListeners>0){e._errorEvent.raiseEvent(t);return}console.log(t)}function cje(e,t){let n=e._featureTables,i=t.propertyTables,o=i.length;for(let r=0;r<o;r++){let s=i[r],a=new YF({model:e,propertyTable:s});n.push(a)}return n}function lje(e,t){let n=t._featureIdLabel,i=t._instanceFeatureIdLabel,o,r,s,a;for(o=0;o<e.nodes.length;o++)if(a=e.nodes[o],l(a.instances)&&(s=Qt.getFeatureIdsByLabel(a.instances.featureIds,i),l(s)&&l(s.propertyTableId)))return s.propertyTableId;for(o=0;o<e.nodes.length;o++)for(a=e.nodes[o],r=0;r<a.primitives.length;r++){let c=a.primitives[r],u=Qt.getFeatureIdsByLabel(c.featureIds,n);if(l(u))return u.propertyTableId}if(t._featureTables.length===1)return 0}function Mj(e,t){if(!l(e)&&!l(t))return!1;if(l(e)!==l(t))return!0;let n=e.alpha,i=t.alpha;return Math.floor(n)!==Math.floor(i)||Math.ceil(n)!==Math.ceil(i)}Object.defineProperties(yo.prototype,{ready:{get:function(){return this._ready}},errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},incrementallyLoadTextures:{get:function(){return this._loader.incrementallyLoadTextures??!1}},texturesReadyEvent:{get:function(){return this._texturesReadyEvent}},loader:{get:function(){return this._loader}},statistics:{get:function(){return this._statistics}},activeAnimations:{get:function(){return this._activeAnimations}},clampAnimations:{get:function(){return this._clampAnimations},set:function(e){this._clampAnimations=e}},cull:{get:function(){return this._cull}},opaquePass:{get:function(){return this._opaquePass}},pointCloudShading:{get:function(){return this._pointCloudShading},set:function(e){e!==this._pointCloudShading&&this.resetDrawCommands(),this._pointCloudShading=e}},customShader:{get:function(){return this._customShader},set:function(e){e!==this._customShader&&this.resetDrawCommands(),this._customShader=e}},sceneGraph:{get:function(){return this._sceneGraph}},content:{get:function(){return this._content}},heightReference:{get:function(){return this._heightReference},set:function(e){e!==this._heightReference&&(this._heightDirty=!0),this._heightReference=e}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition)}},structuralMetadata:{get:function(){return this._sceneGraph.components.structuralMetadata}},featureTableId:{get:function(){return this._featureTableId},set:function(e){this._featureTableId=e}},featureTables:{get:function(){return this._featureTables},set:function(e){this._featureTables=e}},id:{get:function(){return this._id},set:function(e){e!==this._id&&(this._idDirty=!0),this._id=e}},allowPicking:{get:function(){return this._allowPicking}},style:{get:function(){return this._style},set:function(e){this._style=e,this._styleDirty=!0}},color:{get:function(){return this._color},set:function(e){Mj(e,this._color)&&this.resetDrawCommands(),this._color=G.clone(e,this._color)}},colorBlendMode:{get:function(){return this._colorBlendMode},set:function(e){this._colorBlendMode=e}},colorBlendAmount:{get:function(){return this._colorBlendAmount},set:function(e){this._colorBlendAmount=e}},silhouetteColor:{get:function(){return this._silhouetteColor},set:function(e){if(!G.equals(e,this._silhouetteColor)){let t=Mj(e,this._silhouetteColor);this._silhouetteDirty=this._silhouetteDirty||t}this._silhouetteColor=G.clone(e,this._silhouetteColor)}},silhouetteSize:{get:function(){return this._silhouetteSize},set:function(e){if(e!==this._silhouetteSize){let t=this._silhouetteSize,n=e>0&&t===0||e===0&&t>0;this._silhouetteDirty=this._silhouetteDirty||n,this._backFaceCullingDirty=this._backFaceCullingDirty||n}this._silhouetteSize=e}},boundingSphere:{get:function(){let e=l(this._clampedModelMatrix)?this._clampedModelMatrix:this.modelMatrix;return mle(this,e),this._boundingSphere}},debugShowBoundingVolume:{get:function(){return this._debugShowBoundingVolume},set:function(e){this._debugShowBoundingVolume!==e&&(this._debugShowBoundingVolumeDirty=!0),this._debugShowBoundingVolume=e}},debugWireframe:{get:function(){return this._debugWireframe},set:function(e){this._debugWireframe!==e&&this.resetDrawCommands(),this._debugWireframe=e,this._debugWireframe===!0&&this._enableDebugWireframe===!1&&this.type===Nr.GLTF&&yt("model-debug-wireframe-ignored","enableDebugWireframe must be set to true in Model.fromGltfAsync, otherwise debugWireframe will be ignored.")}},show:{get:function(){return this._show},set:function(e){this._show=e}},featureIdLabel:{get:function(){return this._featureIdLabel},set:function(e){typeof e=="number"&&(e=`featureId_${e}`),e!==this._featureIdLabel&&(this._featureTableIdDirty=!0),this._featureIdLabel=e}},instanceFeatureIdLabel:{get:function(){return this._instanceFeatureIdLabel},set:function(e){typeof e=="number"&&(e=`instanceFeatureId_${e}`),e!==this._instanceFeatureIdLabel&&(this._featureTableIdDirty=!0),this._instanceFeatureIdLabel=e}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){e!==this._clippingPlanes&&(Vs.setOwner(e,this,"_clippingPlanes"),this.resetDrawCommands())}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){e!==this._clippingPolygons&&(xm.setOwner(e,this,"_clippingPolygons"),this.resetDrawCommands())}},enableVerticalExaggeration:{get:function(){return this._enableVerticalExaggeration},set:function(e){e!==this._enableVerticalExaggeration&&this.resetDrawCommands(),this._enableVerticalExaggeration=e}},hasVerticalExaggeration:{get:function(){return this._hasVerticalExaggeration}},imageryLayers:{get:function(){if(l(this._content)){let e=this._content.tileset;if(l(e))return e.imageryLayers}}},lightColor:{get:function(){return this._lightColor},set:function(e){l(e)!==l(this._lightColor)&&this.resetDrawCommands(),this._lightColor=d.clone(e,this._lightColor)}},imageBasedLighting:{get:function(){return this._imageBasedLighting},set:function(e){e!==this._imageBasedLighting&&(this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=e,this._shouldDestroyImageBasedLighting=!1,this.resetDrawCommands())}},environmentMapManager:{get:function(){return this._environmentMapManager},set:function(e){e!==this.environmentMapManager&&(s_.setOwner(e,this,"_environmentMapManager"),this.resetDrawCommands())}},backFaceCulling:{get:function(){return this._backFaceCulling},set:function(e){e!==this._backFaceCulling&&(this._backFaceCullingDirty=!0),this._backFaceCulling=e}},scale:{get:function(){return this._scale},set:function(e){e!==this._scale&&(this._updateModelMatrix=!0),this._scale=e}},computedScale:{get:function(){return this._computedScale}},minimumPixelSize:{get:function(){return this._minimumPixelSize},set:function(e){e!==this._minimumPixelSize&&(this._updateModelMatrix=!0),this._minimumPixelSize=e}},maximumScale:{get:function(){return this._maximumScale},set:function(e){e!==this._maximumScale&&(this._updateModelMatrix=!0),this._maximumScale=e}},shadows:{get:function(){return this._shadows},set:function(e){e!==this._shadows&&(this._shadowsDirty=!0),this._shadows=e}},credit:{get:function(){return this._credit}},showCreditsOnScreen:{get:function(){return this._showCreditsOnScreen},set:function(e){this._showCreditsOnScreen!==e&&(this._showCreditsOnScreenDirty=!0),this._showCreditsOnScreen=e}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&this.resetDrawCommands(),this._splitDirection=e}},classificationType:{get:function(){return this._classificationType}},pickIds:{get:function(){return this._pickIds}},styleCommandsNeeded:{get:function(){return this._styleCommandsNeeded}}});yo.prototype.getNode=function(e){return this._nodesByName[e]};yo.prototype.setArticulationStage=function(e,t){this._sceneGraph.setArticulationStage(e,t)};yo.prototype.applyArticulations=function(){this._sceneGraph.applyArticulations()};yo.prototype.getExtension=function(e){return this._loader.components.extensions[e]};yo.prototype.makeStyleDirty=function(){this._styleDirty=!0};yo.prototype.resetDrawCommands=function(){this._drawCommandsBuilt=!1};var uje=new R,fje=new J,dje=new R;yo.prototype.update=function(e){let t=!1;try{t=hje(this,e)}catch(i){if(!this._loader.incrementallyLoadTextures&&i.name==="TextureError")vj(this,i);else{let o=Qt.getError("model",this._resource,i);vj(this,o)}}if(mje(this,e),Aje(this,e),pje(this,e),!this._resourcesLoaded&&t){this._resourcesLoaded=!0;let i=this._loader.components;if(!l(i)){if(this._loader.isUnloaded())return;let s=Qt.getError("model",this._resource,new ce("Failed to load model."));vj(s),this._rejectLoad=this._rejectLoad&&this._rejectLoad(s)}let o=i.structuralMetadata;l(o)&&o.propertyTableCount>0&&cje(this,o);let r=new jQ({model:this,modelComponents:i});this._sceneGraph=r,this._gltfCredits=r.components.asset.credits}if(!this._resourcesLoaded||e.mode===ie.MORPHING)return;let n=this._modelImagery;if(n.update(e),!(!n.ready&&!(this._content?.tileset?._asynchronouslyLoadImagery??!1))){if(gje(this),_je(this),yje(this,e),Cje(this),Eje(this,e),Ije(this,e),xje(this,e),bje(this,e),Tje(this,e),Sje(this,e),wje(this,e),this._defaultTexture=e.context.defaultTexture,Bje(this,e),Dje(this,e),vje(this),Pje(this,e),Lje(this,e),!this._ready){e.afterRender.push(()=>{this._ready=!0,this._readyEvent.raiseEvent(this)});return}this._loader.incrementallyLoadTextures&&!this._texturesLoaded&&this._loader.texturesLoaded&&(this.resetDrawCommands(),this._texturesLoaded=!0,this._texturesReadyEvent.raiseEvent(this)),Mje(this),Oje(this,e),Fje(this),Qje(this,e)}};function hje(e,t){return!e._resourcesLoaded||e._loader.incrementallyLoadTextures&&!e._texturesLoaded?(t.afterRender.push(()=>!0),e._loader.process(t)):!0}function mje(e,t){l(e._customShader)&&e._customShader.update(t)}function Aje(e,t){let n=e._environmentMapManager,i=t.passes.pick||t.passes.pickVoxel;e._ready&&n.owner===e&&!i&&(n.position=e._boundingSphere.center,n.shouldUpdate=!l(e._imageBasedLighting.sphericalHarmonicCoefficients)||!l(e._imageBasedLighting.specularEnvironmentMaps),n.update(t),n.shouldRegenerateShaders&&e.resetDrawCommands())}function pje(e,t){e._imageBasedLighting.update(t),e._imageBasedLighting.shouldRegenerateShaders&&e.resetDrawCommands()}function gje(e){if(!e._featureTableIdDirty)return;e._featureTableIdDirty=!1;let t=e._sceneGraph.components,n=t.structuralMetadata;l(n)&&n.propertyTableCount>0&&(e.featureTableId=lje(t,e),e._styleDirty=!0,e.resetDrawCommands())}function _je(e){e._styleDirty&&(e.applyStyle(e._style),e._styleDirty=!1)}function yje(e,t){let n=e._featureTables,i=n.length,o=!1;for(let r=0;r<i;r++)n[r].update(t),n[r].styleCommandsNeededDirty&&(o=!0);o&&hle(e)}function hle(e){let t=e.featureTables[e.featureTableId];e._styleCommandsNeeded=Bm.getStyleCommandsNeeded(t.featuresLength,t.batchTexture.translucentFeaturesLength)}function Cje(e){let t=e.pointCloudShading;t.attenuation!==e._attenuation&&(e.resetDrawCommands(),e._attenuation=t.attenuation),t.backFaceCulling!==e._pointCloudBackFaceCulling&&(e.resetDrawCommands(),e._pointCloudBackFaceCulling=t.backFaceCulling)}function Eje(e,t){e._silhouetteDirty&&(Ale(t)&&e.resetDrawCommands(),e._silhouetteDirty=!1)}function Ije(e,t){let n=e.hasSkipLevelOfDetail(t);n!==e._skipLevelOfDetail&&(e.resetDrawCommands(),e._skipLevelOfDetail=n)}function xje(e,t){let n=0;e.isClippingEnabled()&&(e._clippingPlanes.owner===e&&e._clippingPlanes.update(t),n=e._clippingPlanes.clippingPlanesState),n!==e._clippingPlanesState&&(e.resetDrawCommands(),e._clippingPlanesState=n)}function bje(e,t){let n=0;e.isClippingPolygonsEnabled()&&(e._clippingPolygons.owner===e&&(e._clippingPolygons.update(t),e._clippingPolygons.queueCommands(t)),n=e._clippingPolygons.clippingPolygonsState),n!==e._clippingPolygonsState&&(e.resetDrawCommands(),e._clippingPolygonsState=n)}function Tje(e,t){t.mode!==e._sceneMode&&(e._projectTo2D?e.resetDrawCommands():e._updateModelMatrix=!0,e._sceneMode=t.mode)}function Sje(e,t){let n=t.fog.enabled&&t.fog.renderable;n!==e._fogRenderable&&(e.resetDrawCommands(),e._fogRenderable=n)}function wje(e,t){if(e.enableVerticalExaggeration){let n=t.verticalExaggeration!==1;e.hasVerticalExaggeration!==n&&(e.resetDrawCommands(),e._hasVerticalExaggeration=n)}else e.hasVerticalExaggeration&&(e.resetDrawCommands(),e._hasVerticalExaggeration=!1)}function Bje(e,t){e._drawCommandsBuilt||(e.destroyPipelineResources(),e._sceneGraph.buildDrawCommands(t),e._drawCommandsBuilt=!0)}function Dje(e,t){R.equals(e.modelMatrix,e._modelMatrix)||(e._updateModelMatrix=!0,e._modelMatrix=R.clone(e.modelMatrix,e._modelMatrix))}var T_=new d,Pj=new Ae;function vje(e){if(!e._updateModelMatrix&&!e._heightDirty&&e._minimumPixelSize===0)return;l(e._removeUpdateHeightCallback)&&(e._removeUpdateHeightCallback(),e._removeUpdateHeightCallback=void 0);let t=e._scene;if(!l(t)||e.heightReference===Ze.NONE){e._clampedModelMatrix=void 0;return}let n=t.ellipsoid??te.default,i=e.modelMatrix;T_.x=i[12],T_.y=i[13],T_.z=i[14];let o=n.cartesianToCartographic(T_);l(e._clampedModelMatrix)||(e._clampedModelMatrix=R.clone(i,new R)),e._removeUpdateHeightCallback=t.updateHeight(o,dle(e,n,o),e.heightReference);let r=t.getHeight(o,e.heightReference);if(l(r)){let s=dle(e,n,o);Ae.clone(o,Pj),Pj.height=r,s(Pj)}e._heightDirty=!1,e._updateModelMatrix=!0}function Pje(e,t){if(!e._updateModelMatrix&&e._minimumPixelSize===0)return;let n=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix;mle(e,n),Rje(e,n,t)}function mle(e,t){e._clampedScale=l(e._maximumScale)?Math.min(e._scale,e._maximumScale):e._scale,e._boundingSphere.center=d.multiplyByScalar(e._sceneGraph.boundingSphere.center,e._clampedScale,e._boundingSphere.center),e._boundingSphere.radius=e._initialRadius*e._clampedScale,e._boundingSphere=le.transform(e._boundingSphere,t,e._boundingSphere)}function Rje(e,t,n){let i=e.scale;if(e.minimumPixelSize!==0&&!e._projectTo2D){let o=n.context,r=Math.max(o.drawingBufferWidth,o.drawingBufferHeight);R.getTranslation(t,T_),e._sceneMode!==ie.SCENE3D&&to.computeActualEllipsoidPosition(n,T_,T_);let s=e._boundingSphere.radius,a=kje(T_,s,n),c=1/a;Math.min(c*(2*s),r)<e.minimumPixelSize&&(i=e.minimumPixelSize*a/(2*e._initialRadius))}e._computedScale=l(e.maximumScale)?Math.min(e.maximumScale,i):i}function Mje(e){if(!e._idDirty)return;e._idDirty=!1;let t=e._id,n=e._pickIds,i=n.length;for(let o=0;o<i;++o)n[o].object.id=t}var Nje=new J(1,0,0,0,0,1,0,-1,0);function Lje(e,t){let n=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix,i=e.referenceMatrix??n,o=t.context,r=fje,s=uje;if(s=R.multiply(o.uniformState.view3D,i,s),r=R.getRotation(s,r),r=J.transpose(r,r),e._iblReferenceFrameMatrix=J.multiply(Nje,r,e._iblReferenceFrameMatrix),e.isClippingEnabled()){let a=dje;a=R.multiply(o.uniformState.view3D,i,a),a=R.multiply(a,e._clippingPlanes.modelMatrix,a),e._clippingPlanesMatrix=R.inverseTranspose(a,e._clippingPlanesMatrix)}}function Oje(e,t){let n=e._sceneGraph;if(e._updateModelMatrix||e._minimumPixelSize!==0){let o=l(e._clampedModelMatrix)?e._clampedModelMatrix:e.modelMatrix;n.updateModelMatrix(o,t),e._updateModelMatrix=!1}e._backFaceCullingDirty&&(n.updateBackFaceCulling(e._backFaceCulling),e._backFaceCullingDirty=!1),e._shadowsDirty&&(n.updateShadows(e._shadows),e._shadowsDirty=!1),e._debugShowBoundingVolumeDirty&&(n.updateShowBoundingVolume(e._debugShowBoundingVolume),e._debugShowBoundingVolumeDirty=!1);let i=!1;l(e.classificationType)||(i=e._userAnimationDirty||e._activeAnimations.update(t)),n.update(t,i),e._userAnimationDirty=!1}function Fje(e){if(!e._showCreditsOnScreenDirty)return;e._showCreditsOnScreenDirty=!1,e._credits.length=0;let t=e._showCreditsOnScreen;if(l(e._credit)){let s=Dt.clone(e._credit);s.showOnScreen=s.showOnScreen||t,e._credits.push(s)}let n=e._resourceCredits,i=n.length;for(let s=0;s<i;s++){let a=Dt.clone(n[s]);a.showOnScreen=a.showOnScreen||t,e._credits.push(a)}let o=e._gltfCredits,r=o.length;for(let s=0;s<r;s++){let a=Dt.clone(o[s]);a.showOnScreen=a.showOnScreen||t,e._credits.push(a)}}function Qje(e,t){let n=Gje(e,t),i=e.isInvisible(),o=e.hasSilhouette(t),r=e._show&&e._computedScale!==0&&n&&(!i||o),s=t.passes,a=s.render||s.pick&&e.allowPicking;r&&!e._ignoreCommands&&a&&(zje(e,t),e._sceneGraph.pushDrawCommands(t))}var Rj=new le;function kje(e,t,n){return Rj.center=e,Rj.radius=t,n.camera.getPixelSize(Rj,n.context.drawingBufferWidth,n.context.drawingBufferHeight)}var ZQ=new d;function dle(e,t,n){return function(i){rI(e.heightReference)&&(i.height+=n.height),t.cartographicToCartesian(i,ZQ);let o=e._clampedModelMatrix;R.clone(e.modelMatrix,o),o[12]=ZQ.x,o[13]=ZQ.y,o[14]=ZQ.z,e._heightDirty=!0}}var Uje=new d;function Gje(e,t){let n=e.distanceDisplayCondition;if(!l(n))return!0;let i=n.near*n.near,o=n.far*n.far,r;if(t.mode===ie.SCENE2D){let a=(t.camera.frustum.right-t.camera.frustum.left)*.5;r=a*a}else{let s=R.getTranslation(e.modelMatrix,Uje);to.computeActualEllipsoidPosition(t,s,s),r=d.distanceSquared(s,t.camera.positionWC)}return r>=i&&r<=o}function zje(e,t){let n=t.creditDisplay,i=e._credits,o=i.length;for(let r=0;r<o;r++)n.addCreditToNextFrame(i[r])}yo.prototype.isTranslucent=function(){let e=this.color;return l(e)&&e.alpha>0&&e.alpha<1};yo.prototype.isInvisible=function(){let e=this.color;return l(e)&&e.alpha===0};function Ale(e){return e.context.stencilBuffer}yo.prototype.hasSilhouette=function(e){return Ale(e)&&this._silhouetteSize>0&&this._silhouetteColor.alpha>0&&!l(this._classificationType)};yo.prototype.hasSkipLevelOfDetail=function(e){if(!Nr.is3DTiles(this.type))return!1;let t=e.context.stencilBuffer,n=this._content.tileset;return t&&n.isSkippingLevelOfDetail};yo.prototype.isClippingEnabled=function(){let e=this._clippingPlanes;return l(e)&&e.enabled&&e.length!==0};yo.prototype.pick=function(e,t,n,i,o){return jB(this,e,t,n,i,o)};yo.prototype.isClippingPolygonsEnabled=function(){let e=this._clippingPolygons;return l(e)&&e.enabled&&e.length!==0};yo.prototype.isDestroyed=function(){return!1};yo.prototype.destroy=function(){let e=this._loader;l(e)&&e.destroy();let t=this._featureTables;if(l(t)){let r=t.length;for(let s=0;s<r;s++)t[s].destroy()}this.destroyPipelineResources(),this.destroyModelResources(),l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),l(this._terrainProviderChangedCallback)&&(this._terrainProviderChangedCallback(),this._terrainProviderChangedCallback=void 0);let n=this._clippingPlanes;l(n)&&!n.isDestroyed()&&n.owner===this&&n.destroy(),this._clippingPlanes=void 0;let i=this._clippingPolygons;l(i)&&!i.isDestroyed()&&i.owner===this&&i.destroy(),this._clippingPolygons=void 0,this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=void 0;let o=this._environmentMapManager;!o.isDestroyed()&&o.owner===this&&o.destroy(),this._environmentMapManager=void 0,ue(this)};yo.prototype.destroyPipelineResources=function(){let e=this._pipelineResources;for(let t=0;t<e.length;t++)e[t].destroy();this._pipelineResources.length=0,this._pickIds.length=0};yo.prototype.destroyModelResources=function(){let e=this._modelResources;for(let t=0;t<e.length;t++)e[t].destroy();this._modelResources.length=0};yo.fromGltfAsync=async function(e){e=e??V.EMPTY_OBJECT;let t=e.url??e.gltf,n={releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline,loadForClassification:l(e.classificationType)},i=e.basePath??"",o=we.createIfNeeded(i);l(t.asset)?(n.gltfJson=t,n.baseResource=o,n.gltfResource=o):t instanceof Uint8Array?(n.typedArray=t,n.baseResource=o,n.gltfResource=o):n.gltfResource=we.createIfNeeded(t);let r=new Ff(n),a=l(e.content)?Nr.TILE_GLTF:Nr.GLTF,c=n.gltfResource,u=YB(r,a,e);u.resource=c,u.environmentMapOptions=e.environmentMapOptions;try{await r.load()}catch(g){throw r.destroy(),Qt.getError("model",c,g)}let f=e.gltfCallback;l(f)&&f(r.gltfJson);let h=new yo(u),A=h._resource.credits;if(l(A)){let g=A.length;for(let m=0;m<g;m++)h._resourceCredits.push(Dt.clone(A[m]))}return h};yo.fromB3dm=async function(e){let t={b3dmResource:e.resource,arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline,loadForClassification:l(e.classificationType)},n=new PF(t);try{await n.load();let i=YB(n,Nr.TILE_B3DM,e);return new yo(i)}catch(i){throw n.destroy(),i}};yo.fromPnts=async function(e){let t={arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,loadAttributesFor2D:e.projectTo2D},n=new KQ(t);try{await n.load();let i=YB(n,Nr.TILE_PNTS,e);return new yo(i)}catch(i){throw n.destroy(),i}};yo.fromI3dm=async function(e){let t={i3dmResource:e.resource,arrayBuffer:e.arrayBuffer,byteOffset:e.byteOffset,releaseGltfJson:e.releaseGltfJson,asynchronous:e.asynchronous,incrementallyLoadTextures:e.incrementallyLoadTextures,upAxis:e.upAxis,forwardAxis:e.forwardAxis,loadAttributesFor2D:e.projectTo2D,enablePick:e.enablePick,loadIndicesForWireframe:e.enableDebugWireframe,loadPrimitiveOutline:e.enableShowOutline},n=new QF(t);try{await n.load();let i=YB(n,Nr.TILE_I3DM,e);return new yo(i)}catch(i){throw n.destroy(),i}};yo.fromGeoJson=async function(e){let t={geoJson:e.geoJson},n=new MF(t),i=YB(n,Nr.TILE_GEOJSON,e);return new yo(i)};var Vje=new G;yo.prototype.applyColorAndShow=function(e){let t=G.clone(this._color,Vje),n=l(e)&&l(e.color),i=l(e)&&l(e.show);this._color=n?e.color.evaluateColor(void 0,this._color):G.clone(G.WHITE,this._color),this._show=i?e.show.evaluate(void 0):!0,Mj(t,this._color)&&this.resetDrawCommands()};yo.prototype.applyStyle=function(e){let t=this.type===Nr.TILE_PNTS,n=l(this.featureTableId)&&this.featureTables[this.featureTableId].featuresLength>0,i=l(this.structuralMetadata)?this.structuralMetadata.propertyAttributes:void 0,o=l(i)&&l(i[0]);if(t&&(!n||o)){this.resetDrawCommands();return}n?(this.featureTables[this.featureTableId].applyStyle(e),hle(this,e)):(this.applyColorAndShow(e),this._styleCommandsNeeded=void 0)};function YB(e,t,n){return{loader:e,type:t,resource:n.resource,show:n.show,modelMatrix:n.modelMatrix,scale:n.scale,enableVerticalExaggeration:n.enableVerticalExaggeration,minimumPixelSize:n.minimumPixelSize,maximumScale:n.maximumScale,id:n.id,allowPicking:n.allowPicking,clampAnimations:n.clampAnimations,shadows:n.shadows,debugShowBoundingVolume:n.debugShowBoundingVolume,enableDebugWireframe:n.enableDebugWireframe,debugWireframe:n.debugWireframe,cull:n.cull,opaquePass:n.opaquePass,customShader:n.customShader,content:n.content,heightReference:n.heightReference,scene:n.scene,distanceDisplayCondition:n.distanceDisplayCondition,color:n.color,colorBlendAmount:n.colorBlendAmount,colorBlendMode:n.colorBlendMode,silhouetteColor:n.silhouetteColor,silhouetteSize:n.silhouetteSize,enableShowOutline:n.enableShowOutline,showOutline:n.showOutline,outlineColor:n.outlineColor,clippingPlanes:n.clippingPlanes,clippingPolygons:n.clippingPolygons,lightColor:n.lightColor,imageBasedLighting:n.imageBasedLighting,backFaceCulling:n.backFaceCulling,credit:n.credit,showCreditsOnScreen:n.showCreditsOnScreen,splitDirection:n.splitDirection,projectTo2D:n.projectTo2D,enablePick:n.enablePick,featureIdLabel:n.featureIdLabel,instanceFeatureIdLabel:n.instanceFeatureIdLabel,pointCloudShading:n.pointCloudShading,classificationType:n.classificationType,pickObject:n.pickObject}}var Mm=yo;function $r(e,t,n){this._tileset=e,this._tile=t,this._resource=n,this._model=void 0,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties($r.prototype,{featuresLength:{get:function(){let e=this._model,t=e.featureTables,n=e.featureTableId;return l(t)&&l(t[n])?t[n].featuresLength:0}},pointsLength:{get:function(){return this._model.statistics.pointsLength}},trianglesLength:{get:function(){return this._model.statistics.trianglesLength}},geometryByteLength:{get:function(){return this._model.statistics.geometryByteLength}},texturesByteLength:{get:function(){return this._model.statistics.texturesByteLength}},batchTableByteLength:{get:function(){let e=this._model.statistics;return e.propertyTablesByteLength+e.batchTexturesByteLength}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){let e=this._model,t=e.featureTables,n=e.featureTableId;if(l(t)&&l(t[n]))return t[n]}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});$r.prototype.getTextureIds=function(){return this._model.statistics.getTextureIds()};$r.prototype.getTextureByteLengthById=function(e){return this._model.statistics.getTextureByteLengthById(e)};$r.prototype.getExtension=function(e){return this._model.getExtension(e)};$r.prototype.getFeature=function(e){let t=this._model,n=t.featureTableId;return t.featureTables[n].getFeature(e)};$r.prototype.hasProperty=function(e,t){let n=this._model,i=n.featureTableId;return l(i)?n.featureTables[i].hasProperty(e,t):!1};$r.prototype.applyDebugSettings=function(e,t){t=e?t:G.WHITE,this.featuresLength===0?this._model.color=t:l(this.batchTable)&&this.batchTable.setAllColor(t)};$r.prototype.applyStyle=function(e){this._model.style=e};$r.prototype.update=function(e,t){let n=this._model,i=this._tile;n.colorBlendAmount=e.colorBlendAmount,n.colorBlendMode=e.colorBlendMode,n.modelMatrix=i.computedTransform,n.customShader=e.customShader,n.featureIdLabel=e.featureIdLabel,n.instanceFeatureIdLabel=e.instanceFeatureIdLabel,n.lightColor=e.lightColor,n.imageBasedLighting=e.imageBasedLighting,n.backFaceCulling=e.backFaceCulling,n.shadows=e.shadows,n.showCreditsOnScreen=e.showCreditsOnScreen,n.splitDirection=e.splitDirection,n.debugWireframe=e.debugWireframe,n.showOutline=e.showOutline,n.outlineColor=e.outlineColor,n.pointCloudShading=e.pointCloudShading;let o=e.clippingPlanes;n.referenceMatrix=e.clippingPlanesOriginMatrix,l(o)&&i.clippingPlanesDirty&&(n._clippingPlanes=o.enabled&&i._isClipped?o:void 0);let r=e.environmentMapManager;n.environmentMapManager!==o&&(n._environmentMapManager=r),l(o)&&l(n._clippingPlanes)&&n._clippingPlanes!==o&&(n._clippingPlanes=o,n._clippingPlanesState=0);let s=e.clippingPolygons;l(s)&&i.clippingPolygonsDirty&&(n._clippingPolygons=s.enabled&&i._isClippedByPolygon?s:void 0),l(s)&&l(n._clippingPolygons)&&n._clippingPolygons!==s&&(n._clippingPolygons=s,n._clippingPolygonsState=0),n.update(t),!this._ready&&n.ready&&(n.activeAnimations.addAll({loop:vu.REPEAT}),this._ready=!0)};$r.prototype.isDestroyed=function(){return!1};$r.prototype.destroy=function(){return this._model=this._model&&this._model.destroy(),ue(this)};$r.fromGltf=async function(e,t,n,i){let o=new $r(e,t,n),s=qB(e,t,o,{gltf:i,basePath:n}),a=e.vectorClassificationOnly?void 0:e.classificationType;s.classificationType=a;let c=await Mm.fromGltfAsync(s);return o._model=c,o};$r.fromB3dm=async function(e,t,n,i,o){let r=new $r(e,t,n),a=qB(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=e.vectorClassificationOnly?void 0:e.classificationType;a.classificationType=c;let u=await Mm.fromB3dm(a);return r._model=u,r};$r.fromI3dm=async function(e,t,n,i,o){let r=new $r(e,t,n),a=qB(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=await Mm.fromI3dm(a);return r._model=c,r};$r.fromPnts=async function(e,t,n,i,o){let r=new $r(e,t,n),a=qB(e,t,r,{arrayBuffer:i,byteOffset:o,resource:n}),c=await Mm.fromPnts(a);return r._model=c,r};$r.fromGeoJson=async function(e,t,n,i){let o=new $r(e,t,n),s=qB(e,t,o,{geoJson:i,resource:n}),a=await Mm.fromGeoJson(s);return o._model=a,o};$r.prototype.pick=function(e,t,n){if(!l(this._model)||!this._ready)return;let i=t.verticalExaggeration,o=t.verticalExaggerationRelativeHeight;return this._model.pick(e,t,i,o,te.WGS84,n)};function qB(e,t,n,i){let o={cull:!1,releaseGltfJson:!0,opaquePass:Be.CESIUM_3D_TILE,modelMatrix:t.computedTransform,upAxis:e._modelUpAxis,forwardAxis:e._modelForwardAxis,incrementallyLoadTextures:!1,customShader:e.customShader,content:n,colorBlendMode:e.colorBlendMode,colorBlendAmount:e.colorBlendAmount,lightColor:e.lightColor,imageBasedLighting:e.imageBasedLighting,featureIdLabel:e.featureIdLabel,instanceFeatureIdLabel:e.instanceFeatureIdLabel,pointCloudShading:e.pointCloudShading,clippingPlanes:e.clippingPlanes,backFaceCulling:e.backFaceCulling,shadows:e.shadows,showCreditsOnScreen:e.showCreditsOnScreen,splitDirection:e.splitDirection,enableDebugWireframe:e._enableDebugWireframe,debugWireframe:e.debugWireframe,projectTo2D:e._projectTo2D,enablePick:e._enablePick,enableShowOutline:e._enableShowOutline,showOutline:e.showOutline,outlineColor:e.outlineColor};return wt(i,o)}var zf=$r;function Vf(e,t,n){this._tileset=e,this._tile=t,this._resource=n,this.featurePropertiesDirty=!1,this._metadata=void 0,this._group=void 0,this._ready=!1}Object.defineProperties(Vf.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});Vf.fromJson=function(e,t,n,i){let o=new Vf(e,t,n);return o._tileset.loadTileset(o._resource,i,o._tile),o._ready=!0,o};Vf.prototype.hasProperty=function(e,t){return!1};Vf.prototype.getFeature=function(e){};Vf.prototype.applyDebugSettings=function(e,t){};Vf.prototype.applyStyle=function(e){};Vf.prototype.update=function(e,t){};Vf.prototype.pick=function(e,t,n){};Vf.prototype.isDestroyed=function(){return!1};Vf.prototype.destroy=function(){return ue(this)};var $Q=Vf;function la(e,t,n,i){let o=la._verifyAttributes(t);n=n??0;let r=[],s={},a,c,u=o.length;for(let h=0;h<u;++h){let A=o[h];if(A.vertexBuffer){r.push(A);continue}c=A.usage,a=s[c],l(a)||(a=s[c]=[]),a.push(A)}function f(h,A){return q.getSizeInBytes(A.componentDatatype)-q.getSizeInBytes(h.componentDatatype)}this._allBuffers=[];for(c in s)if(s.hasOwnProperty(c)){a=s[c],a.sort(f);let h=la._vertexSizeInBytes(a),A=a[0].usage,g={vertexSizeInBytes:h,vertexBuffer:void 0,usage:A,needsCommit:!1,arrayBuffer:void 0,arrayViews:la._createArrayViews(a,h)};this._allBuffers.push(g)}this._size=0,this._instanced=i??!1,this._precreated=r,this._context=e,this.writers=void 0,this.va=void 0,this.resize(n)}la._verifyAttributes=function(e){let t=[];for(let i=0;i<e.length;++i){let o=e[i],r={index:o.index??i,enabled:o.enabled??!0,componentsPerAttribute:o.componentsPerAttribute,componentDatatype:o.componentDatatype??q.FLOAT,normalize:o.normalize??!1,vertexBuffer:o.vertexBuffer,usage:o.usage??Qe.STATIC_DRAW};t.push(r)}let n=new Array(t.length);for(let i=0;i<t.length;++i){let r=t[i].index;n[r]=!0}return t};la._vertexSizeInBytes=function(e){let t=0,n=e.length;for(let s=0;s<n;++s){let a=e[s];t+=a.componentsPerAttribute*q.getSizeInBytes(a.componentDatatype)}let i=n>0?q.getSizeInBytes(e[0].componentDatatype):0,o=i>0?t%i:0,r=o===0?0:i-o;return t+=r,t};la._createArrayViews=function(e,t){let n=[],i=0,o=e.length;for(let r=0;r<o;++r){let s=e[r],a=s.componentDatatype;n.push({index:s.index,enabled:s.enabled,componentsPerAttribute:s.componentsPerAttribute,componentDatatype:a,normalize:s.normalize,offsetInBytes:i,vertexSizeInComponentType:t/q.getSizeInBytes(a),view:void 0}),i+=s.componentsPerAttribute*q.getSizeInBytes(a)}return n};la.prototype.resize=function(e){this._size=e;let t=this._allBuffers;this.writers=[];for(let n=0,i=t.length;n<i;++n){let o=t[n];la._resize(o,this._size),la._appendWriters(this.writers,o)}Nj(this)};la._resize=function(e,t){if(e.vertexSizeInBytes>0){let n=new ArrayBuffer(t*e.vertexSizeInBytes);if(l(e.arrayBuffer)){let r=new Uint8Array(n),s=new Uint8Array(e.arrayBuffer),a=s.length;for(let c=0;c<a;++c)r[c]=s[c]}let i=e.arrayViews,o=i.length;for(let r=0;r<o;++r){let s=i[r];s.view=q.createArrayBufferView(s.componentDatatype,n,s.offsetInBytes)}e.arrayBuffer=n}};var Hje=[function(e,t,n){return function(i,o){t[i*n]=o,e.needsCommit=!0}},function(e,t,n){return function(i,o,r){let s=i*n;t[s]=o,t[s+1]=r,e.needsCommit=!0}},function(e,t,n){return function(i,o,r,s){let a=i*n;t[a]=o,t[a+1]=r,t[a+2]=s,e.needsCommit=!0}},function(e,t,n){return function(i,o,r,s,a){let c=i*n;t[c]=o,t[c+1]=r,t[c+2]=s,t[c+3]=a,e.needsCommit=!0}}];la._appendWriters=function(e,t){let n=t.arrayViews,i=n.length;for(let o=0;o<i;++o){let r=n[o];e[r.index]=Hje[r.componentsPerAttribute-1](t,r.view,r.vertexSizeInComponentType)}};la.prototype.commit=function(e){let t=!1,n=this._allBuffers,i,o,r;for(o=0,r=n.length;o<r;++o)i=n[o],t=Wje(this,i)||t;if(t||!l(this.va)){Nj(this);let s=this.va=[],a=D.SIXTY_FOUR_KILOBYTES-4,c=l(e)&&!this._instanced?Math.ceil(this._size/a):1;for(let u=0;u<c;++u){let f=[];for(o=0,r=n.length;o<r;++o){i=n[o];let h=u*(i.vertexSizeInBytes*a);la._appendAttributes(f,i,h,this._instanced)}f=f.concat(this._precreated),s.push({va:new li({context:this._context,attributes:f,indexBuffer:e}),indicesCount:1.5*(u!==c-1?a:this._size%a)})}}};function Wje(e,t){if(t.needsCommit&&t.vertexSizeInBytes>0){t.needsCommit=!1;let n=t.vertexBuffer,i=e._size*t.vertexSizeInBytes,o=l(n);if(!o||n.sizeInBytes<i)return o&&n.destroy(),t.vertexBuffer=Et.createVertexBuffer({context:e._context,typedArray:t.arrayBuffer,usage:t.usage}),t.vertexBuffer.vertexArrayDestroyable=!1,!0;t.vertexBuffer.copyFromArrayView(t.arrayBuffer)}return!1}la._appendAttributes=function(e,t,n,i){let o=t.arrayViews,r=o.length;for(let s=0;s<r;++s){let a=o[s];e.push({index:a.index,enabled:a.enabled,componentsPerAttribute:a.componentsPerAttribute,componentDatatype:a.componentDatatype,normalize:a.normalize,vertexBuffer:t.vertexBuffer,offsetInBytes:n+a.offsetInBytes,strideInBytes:t.vertexSizeInBytes,instanceDivisor:i?1:0})}};la.prototype.subCommit=function(e,t){let n=this._allBuffers;for(let i=0,o=n.length;i<o;++i)jje(n[i],e,t)};function jje(e,t,n){if(e.needsCommit&&e.vertexSizeInBytes>0){let i=e.vertexSizeInBytes*t,o=e.vertexSizeInBytes*n;e.vertexBuffer.copyFromArrayView(new Uint8Array(e.arrayBuffer,i,o),i)}}la.prototype.endSubCommits=function(){let e=this._allBuffers;for(let t=0,n=e.length;t<n;++t)e[t].needsCommit=!1};function Nj(e){let t=e.va;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].va.destroy();e.va=void 0}la.prototype.isDestroyed=function(){return!1};la.prototype.destroy=function(){let e=this._allBuffers;for(let t=0,n=e.length;t<n;++t){let i=e[t];i.vertexBuffer=i.vertexBuffer&&i.vertexBuffer.destroy()}return Nj(this),ue(this)};var S_=la;var ek=`uniform sampler2D u_atlas; + +#ifdef VECTOR_TILE +uniform vec4 u_highlightColor; +#endif + +in vec2 v_textureCoordinates; +in vec4 v_pickColor; +in vec4 v_color; +in float v_splitDirection; + +#ifdef SDF +in vec4 v_outlineColor; +in float v_outlineWidth; +#endif + +#ifdef FRAGMENT_DEPTH_CHECK +in vec4 v_textureCoordinateBounds; // the min and max x and y values for the texture coordinates +in vec4 v_originTextureCoordinateAndTranslate; // texture coordinate at the origin, billboard translate (used for label glyphs) +in vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize +in mat2 v_rotationMatrix; + +const float SHIFT_LEFT12 = 4096.0; +const float SHIFT_LEFT1 = 2.0; + +const float SHIFT_RIGHT12 = 1.0 / 4096.0; +const float SHIFT_RIGHT1 = 1.0 / 2.0; + +float getGlobeDepth(vec2 adjustedST, vec2 depthLookupST, bool applyTranslate, vec2 dimensions, vec2 imageSize) +{ + vec2 lookupVector = imageSize * (depthLookupST - adjustedST); + lookupVector = v_rotationMatrix * lookupVector; + vec2 labelOffset = (dimensions - imageSize) * (depthLookupST - vec2(0.0, v_originTextureCoordinateAndTranslate.y)); // aligns label glyph with bounding rectangle. Will be zero for billboards because dimensions and imageSize will be equal + + vec2 translation = v_originTextureCoordinateAndTranslate.zw; + + if (applyTranslate) + { + // this is only needed for labels where the horizontal origin is not LEFT + // it moves the label back to where the "origin" should be since all label glyphs are set to HorizontalOrigin.LEFT + translation += (dimensions * v_originTextureCoordinateAndTranslate.xy * vec2(1.0, 0.0)); + } + + vec2 st = ((lookupVector - translation + labelOffset) + gl_FragCoord.xy) / czm_viewport.zw; + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, st)); + + if (logDepthOrDepth == 0.0) + { + return 0.0; // not on the globe + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + return eyeCoordinate.z / eyeCoordinate.w; +} +#endif + + +#ifdef SDF + +// Get the distance from the edge of a glyph at a given position sampling an SDF texture. +float getDistance(vec2 position) +{ + return texture(u_atlas, position).r; +} + +// Samples the sdf texture at the given position and produces a color based on the fill color and the outline. +vec4 getSDFColor(vec2 position, float outlineWidth, vec4 outlineColor, float smoothing) +{ + float distance = getDistance(position); + + if (outlineWidth > 0.0) + { + // Don't get the outline edge exceed the SDF_EDGE + float outlineEdge = clamp(SDF_EDGE - outlineWidth, 0.0, SDF_EDGE); + float outlineFactor = smoothstep(SDF_EDGE - smoothing, SDF_EDGE + smoothing, distance); + vec4 sdfColor = mix(outlineColor, v_color, outlineFactor); + float alpha = smoothstep(outlineEdge - smoothing, outlineEdge + smoothing, distance); + return vec4(sdfColor.rgb, sdfColor.a * alpha); + } + else + { + float alpha = smoothstep(SDF_EDGE - smoothing, SDF_EDGE + smoothing, distance); + return vec4(v_color.rgb, v_color.a * alpha); + } +} +#endif + +void main() +{ + if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; + + vec4 color = texture(u_atlas, v_textureCoordinates); + +#ifdef SDF + float outlineWidth = v_outlineWidth; + vec4 outlineColor = v_outlineColor; + + // Get the current distance + float distance = getDistance(v_textureCoordinates); + +#if (__VERSION__ == 300 || defined(GL_OES_standard_derivatives)) + float smoothing = fwidth(distance); + // Get an offset that is approximately half the distance to the neighbor pixels + // 0.354 is approximately half of 1/sqrt(2) + vec2 sampleOffset = 0.354 * vec2(dFdx(v_textureCoordinates) + dFdy(v_textureCoordinates)); + + // Sample the center point + vec4 center = getSDFColor(v_textureCoordinates, outlineWidth, outlineColor, smoothing); + + // Sample the 4 neighbors + vec4 color1 = getSDFColor(v_textureCoordinates + vec2(sampleOffset.x, sampleOffset.y), outlineWidth, outlineColor, smoothing); + vec4 color2 = getSDFColor(v_textureCoordinates + vec2(-sampleOffset.x, sampleOffset.y), outlineWidth, outlineColor, smoothing); + vec4 color3 = getSDFColor(v_textureCoordinates + vec2(-sampleOffset.x, -sampleOffset.y), outlineWidth, outlineColor, smoothing); + vec4 color4 = getSDFColor(v_textureCoordinates + vec2(sampleOffset.x, -sampleOffset.y), outlineWidth, outlineColor, smoothing); + + // Equally weight the center sample and the 4 neighboring samples + color = (center + color1 + color2 + color3 + color4)/5.0; +#else + // If no derivatives available (IE 10?), just do a single sample + float smoothing = 1.0/32.0; + color = getSDFColor(v_textureCoordinates, outlineWidth, outlineColor, smoothing); +#endif + + color = czm_gammaCorrect(color); +#else + color = czm_gammaCorrect(color); + color *= czm_gammaCorrect(v_color); +#endif + +// Fully transparent parts of the billboard are not pickable. +#if !defined(OPAQUE) && !defined(TRANSLUCENT) + if (color.a < 0.005) // matches 0/255 and 1/255 + { + discard; + } +#else +// The billboard is rendered twice. The opaque pass discards translucent fragments +// and the translucent pass discards opaque fragments. +#ifdef OPAQUE + if (color.a < 0.995) // matches < 254/255 + { + discard; + } +#else + if (color.a >= 0.995) // matches 254/255 and 255/255 + { + discard; + } +#endif +#endif + +#ifdef VECTOR_TILE + color *= u_highlightColor; +#endif + out_FragColor = color; + +#ifdef LOG_DEPTH + czm_writeLogDepth(); +#endif + +#ifdef FRAGMENT_DEPTH_CHECK + float temp = v_compressed.y; + + temp = temp * SHIFT_RIGHT1; + + float temp2 = (temp - floor(temp)) * SHIFT_LEFT1; + bool enableDepthTest = temp2 != 0.0; + bool applyTranslate = floor(temp) != 0.0; + + if (enableDepthTest) { + temp = v_compressed.z; + temp = temp * SHIFT_RIGHT12; + + vec2 dimensions; + dimensions.y = (temp - floor(temp)) * SHIFT_LEFT12; + dimensions.x = floor(temp); + + temp = v_compressed.w; + temp = temp * SHIFT_RIGHT12; + + vec2 imageSize; + imageSize.y = (temp - floor(temp)) * SHIFT_LEFT12; + imageSize.x = floor(temp); + + vec2 adjustedST = v_textureCoordinates - v_textureCoordinateBounds.xy; + adjustedST = adjustedST / vec2(v_textureCoordinateBounds.z - v_textureCoordinateBounds.x, v_textureCoordinateBounds.w - v_textureCoordinateBounds.y); + + float epsilonEyeDepth = v_compressed.x + czm_epsilon1; + float globeDepth1 = getGlobeDepth(adjustedST, v_originTextureCoordinateAndTranslate.xy, applyTranslate, dimensions, imageSize); + + // negative values go into the screen + if (globeDepth1 != 0.0 && globeDepth1 > epsilonEyeDepth) + { + float globeDepth2 = getGlobeDepth(adjustedST, vec2(0.0, 1.0), applyTranslate, dimensions, imageSize); // top left corner + if (globeDepth2 != 0.0 && globeDepth2 > epsilonEyeDepth) + { + float globeDepth3 = getGlobeDepth(adjustedST, vec2(1.0, 1.0), applyTranslate, dimensions, imageSize); // top right corner + if (globeDepth3 != 0.0 && globeDepth3 > epsilonEyeDepth) + { + discard; + } + } + } + } +#endif + +} +`;var tk=`#ifdef INSTANCED +in vec2 direction; +#endif +in vec4 positionHighAndScale; +in vec4 positionLowAndRotation; +in vec4 compressedAttribute0; // pixel offset, translate, horizontal origin, vertical origin, show, direction, texture coordinates (texture offset) +in vec4 compressedAttribute1; // aligned axis, translucency by distance, image width +in vec4 compressedAttribute2; // label horizontal origin, image height, color, pick color, size in meters, valid aligned axis, 13 bits free +in vec4 eyeOffset; // eye offset in meters, 4 bytes free (texture range) +in vec4 scaleByDistance; // near, nearScale, far, farScale +in vec4 pixelOffsetScaleByDistance; // near, nearScale, far, farScale +in vec4 compressedAttribute3; // distance display condition near, far, disableDepthTestDistance, dimensions +in vec2 sdf; // sdf outline color (rgb) and width (w) +in float splitDirection; // splitDirection +#if defined(VERTEX_DEPTH_CHECK) || defined(FRAGMENT_DEPTH_CHECK) +in vec4 textureCoordinateBoundsOrLabelTranslate; // the min and max x and y values for the texture coordinates +#endif +#ifdef VECTOR_TILE +in float a_batchId; +#endif + +out vec2 v_textureCoordinates; +#ifdef FRAGMENT_DEPTH_CHECK +out vec4 v_textureCoordinateBounds; +out vec4 v_originTextureCoordinateAndTranslate; +out vec4 v_compressed; // x: eyeDepth, y: applyTranslate & enableDepthCheck, z: dimensions, w: imageSize +out mat2 v_rotationMatrix; +#endif + +out vec4 v_pickColor; +out vec4 v_color; +out float v_splitDirection; +#ifdef SDF +out vec4 v_outlineColor; +out float v_outlineWidth; +#endif + +const float UPPER_BOUND = 32768.0; + +const float SHIFT_LEFT16 = 65536.0; +const float SHIFT_LEFT12 = 4096.0; +const float SHIFT_LEFT8 = 256.0; +const float SHIFT_LEFT7 = 128.0; +const float SHIFT_LEFT5 = 32.0; +const float SHIFT_LEFT3 = 8.0; +const float SHIFT_LEFT2 = 4.0; +const float SHIFT_LEFT1 = 2.0; + +const float SHIFT_RIGHT12 = 1.0 / 4096.0; +const float SHIFT_RIGHT8 = 1.0 / 256.0; +const float SHIFT_RIGHT7 = 1.0 / 128.0; +const float SHIFT_RIGHT5 = 1.0 / 32.0; +const float SHIFT_RIGHT3 = 1.0 / 8.0; +const float SHIFT_RIGHT2 = 1.0 / 4.0; +const float SHIFT_RIGHT1 = 1.0 / 2.0; + +vec4 addScreenSpaceOffset(vec4 positionEC, vec2 imageSize, float scale, vec2 direction, vec2 origin, vec2 translate, vec2 pixelOffset, vec3 alignedAxis, bool validAlignedAxis, float rotation, bool sizeInMeters, out mat2 rotationMatrix, out float mpp) +{ + // Note the halfSize cannot be computed in JavaScript because it is sent via + // compressed vertex attributes that coerce it to an integer. + vec2 halfSize = imageSize * scale * 0.5; + halfSize *= ((direction * 2.0) - 1.0); + + vec2 originTranslate = origin * abs(halfSize); + +#if defined(ROTATION) || defined(ALIGNED_AXIS) + if (validAlignedAxis || rotation != 0.0) + { + float angle = rotation; + if (validAlignedAxis) + { + vec4 projectedAlignedAxis = czm_modelView3D * vec4(alignedAxis, 0.0); + angle += sign(-projectedAlignedAxis.x) * acos(sign(projectedAlignedAxis.y) * (projectedAlignedAxis.y * projectedAlignedAxis.y) / + (projectedAlignedAxis.x * projectedAlignedAxis.x + projectedAlignedAxis.y * projectedAlignedAxis.y)); + } + + float cosTheta = cos(angle); + float sinTheta = sin(angle); + rotationMatrix = mat2(cosTheta, sinTheta, -sinTheta, cosTheta); + halfSize = rotationMatrix * halfSize; + } + else + { + rotationMatrix = mat2(1.0, 0.0, 0.0, 1.0); + } +#endif + + mpp = czm_metersPerPixel(positionEC); + positionEC.xy += (originTranslate + halfSize) * czm_branchFreeTernary(sizeInMeters, 1.0, mpp); + positionEC.xy += (translate + pixelOffset) * mpp; + + return positionEC; +} + +#ifdef VERTEX_DEPTH_CHECK +float getGlobeDepth(vec4 positionEC) +{ + vec4 posWC = czm_eyeToWindowCoordinates(positionEC); + + float globeDepth = czm_unpackDepth(texture(czm_globeDepthTexture, posWC.xy / czm_viewport.zw)); + + if (globeDepth == 0.0) + { + return 0.0; // not on the globe + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(posWC.xy, globeDepth); + return eyeCoordinate.z / eyeCoordinate.w; +} +#endif +void main() +{ + // Modifying this shader may also require modifications to Billboard._computeScreenSpacePosition + + // unpack attributes + vec3 positionHigh = positionHighAndScale.xyz; + vec3 positionLow = positionLowAndRotation.xyz; + float scale = positionHighAndScale.w; + +#if defined(ROTATION) || defined(ALIGNED_AXIS) + float rotation = positionLowAndRotation.w; +#else + float rotation = 0.0; +#endif + + float compressed = compressedAttribute0.x; + + vec2 pixelOffset; + pixelOffset.x = floor(compressed * SHIFT_RIGHT7); + compressed -= pixelOffset.x * SHIFT_LEFT7; + pixelOffset.x -= UPPER_BOUND; + + vec2 origin; + origin.x = floor(compressed * SHIFT_RIGHT5); + compressed -= origin.x * SHIFT_LEFT5; + + origin.y = floor(compressed * SHIFT_RIGHT3); + compressed -= origin.y * SHIFT_LEFT3; + +#ifdef FRAGMENT_DEPTH_CHECK + vec2 depthOrigin = origin.xy; +#endif + origin -= vec2(1.0); + + float show = floor(compressed * SHIFT_RIGHT2); + compressed -= show * SHIFT_LEFT2; + +#ifdef INSTANCED + vec2 textureCoordinatesBottomLeft = czm_decompressTextureCoordinates(compressedAttribute0.w); + vec2 textureCoordinatesRange = czm_decompressTextureCoordinates(eyeOffset.w); + vec2 textureCoordinates = textureCoordinatesBottomLeft + direction * textureCoordinatesRange; +#else + vec2 direction; + direction.x = floor(compressed * SHIFT_RIGHT1); + direction.y = compressed - direction.x * SHIFT_LEFT1; + + vec2 textureCoordinates = czm_decompressTextureCoordinates(compressedAttribute0.w); +#endif + + float temp = compressedAttribute0.y * SHIFT_RIGHT8; + pixelOffset.y = -(floor(temp) - UPPER_BOUND); + + vec2 translate; + translate.y = (temp - floor(temp)) * SHIFT_LEFT16; + + temp = compressedAttribute0.z * SHIFT_RIGHT8; + translate.x = floor(temp) - UPPER_BOUND; + + translate.y += (temp - floor(temp)) * SHIFT_LEFT8; + translate.y -= UPPER_BOUND; + + temp = compressedAttribute1.x * SHIFT_RIGHT8; + float temp2 = floor(compressedAttribute2.w * SHIFT_RIGHT2); + + vec2 imageSize = vec2(floor(temp), temp2); + +#ifdef FRAGMENT_DEPTH_CHECK + float labelHorizontalOrigin = floor(compressedAttribute2.w - (temp2 * SHIFT_LEFT2)); + float applyTranslate = 0.0; + if (labelHorizontalOrigin != 0.0) // is a billboard, so set apply translate to false + { + applyTranslate = 1.0; + labelHorizontalOrigin -= 2.0; + depthOrigin.x = labelHorizontalOrigin + 1.0; + } + + depthOrigin = vec2(1.0) - (depthOrigin * 0.5); +#endif + +#ifdef EYE_DISTANCE_TRANSLUCENCY + vec4 translucencyByDistance; + translucencyByDistance.x = compressedAttribute1.z; + translucencyByDistance.z = compressedAttribute1.w; + + translucencyByDistance.y = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; + + temp = compressedAttribute1.y * SHIFT_RIGHT8; + translucencyByDistance.w = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; +#endif + +#if defined(VERTEX_DEPTH_CHECK) || defined(FRAGMENT_DEPTH_CHECK) + temp = compressedAttribute3.w; + temp = temp * SHIFT_RIGHT12; + + vec2 dimensions; + dimensions.y = (temp - floor(temp)) * SHIFT_LEFT12; + dimensions.x = floor(temp); +#endif + +#ifdef ALIGNED_AXIS + vec3 alignedAxis = czm_octDecode(floor(compressedAttribute1.y * SHIFT_RIGHT8)); + temp = compressedAttribute2.z * SHIFT_RIGHT5; + bool validAlignedAxis = (temp - floor(temp)) * SHIFT_LEFT1 > 0.0; +#else + vec3 alignedAxis = vec3(0.0); + bool validAlignedAxis = false; +#endif + + vec4 pickColor; + vec4 color; + + temp = compressedAttribute2.y; + temp = temp * SHIFT_RIGHT8; + pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor.r = floor(temp); + + temp = compressedAttribute2.x; + temp = temp * SHIFT_RIGHT8; + color.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + color.g = (temp - floor(temp)) * SHIFT_LEFT8; + color.r = floor(temp); + + temp = compressedAttribute2.z * SHIFT_RIGHT8; + bool sizeInMeters = floor((temp - floor(temp)) * SHIFT_LEFT7) > 0.0; + temp = floor(temp) * SHIFT_RIGHT8; + + pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor /= 255.0; + + color.a = floor(temp); + color /= 255.0; + + /////////////////////////////////////////////////////////////////////////// + + vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + vec4 positionEC = czm_modelViewRelativeToEye * p; + +#if defined(FRAGMENT_DEPTH_CHECK) || defined(VERTEX_DEPTH_CHECK) + float eyeDepth = positionEC.z; +#endif + + positionEC = czm_eyeOffset(positionEC, eyeOffset.xyz); + positionEC.xyz *= show; + + /////////////////////////////////////////////////////////////////////////// + +#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(EYE_DISTANCE_PIXEL_OFFSET) || defined(DISTANCE_DISPLAY_CONDITION) || defined(DISABLE_DEPTH_DISTANCE) + float lengthSq; + if (czm_sceneMode == czm_sceneMode2D) + { + // 2D camera distance is a special case + // treat all billboards as flattened to the z=0.0 plane + lengthSq = czm_eyeHeight2D.y; + } + else + { + lengthSq = dot(positionEC.xyz, positionEC.xyz); + } +#endif + +#ifdef EYE_DISTANCE_SCALING + float distanceScale = czm_nearFarScalar(scaleByDistance, lengthSq); + scale *= distanceScale; + translate *= distanceScale; + // push vertex behind near plane for clipping + if (scale == 0.0) + { + positionEC.xyz = vec3(0.0); + } +#endif + + float translucency = 1.0; +#ifdef EYE_DISTANCE_TRANSLUCENCY + translucency = czm_nearFarScalar(translucencyByDistance, lengthSq); + // push vertex behind near plane for clipping + if (translucency == 0.0) + { + positionEC.xyz = vec3(0.0); + } +#endif + +#ifdef EYE_DISTANCE_PIXEL_OFFSET + float pixelOffsetScale = czm_nearFarScalar(pixelOffsetScaleByDistance, lengthSq); + pixelOffset *= pixelOffsetScale; +#endif + +#ifdef DISTANCE_DISPLAY_CONDITION + float nearSq = compressedAttribute3.x; + float farSq = compressedAttribute3.y; + if (lengthSq < nearSq || lengthSq > farSq) + { + positionEC.xyz = vec3(0.0); + } +#endif + + mat2 rotationMatrix; + float mpp; + +#ifdef DISABLE_DEPTH_DISTANCE + float disableDepthTestDistance = compressedAttribute3.z; +#endif + +#ifdef VERTEX_DEPTH_CHECK +if (lengthSq < disableDepthTestDistance) { + float depthsilon = 10.0; + + vec2 labelTranslate = textureCoordinateBoundsOrLabelTranslate.xy; + vec4 pEC1 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(0.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + float globeDepth1 = getGlobeDepth(pEC1); + + if (globeDepth1 != 0.0 && pEC1.z + depthsilon < globeDepth1) + { + vec4 pEC2 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(0.0, 1.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + float globeDepth2 = getGlobeDepth(pEC2); + + if (globeDepth2 != 0.0 && pEC2.z + depthsilon < globeDepth2) + { + vec4 pEC3 = addScreenSpaceOffset(positionEC, dimensions, scale, vec2(1.0), origin, labelTranslate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + float globeDepth3 = getGlobeDepth(pEC3); + if (globeDepth3 != 0.0 && pEC3.z + depthsilon < globeDepth3) + { + positionEC.xyz = vec3(0.0); + } + } + } +} +#endif + + positionEC = addScreenSpaceOffset(positionEC, imageSize, scale, direction, origin, translate, pixelOffset, alignedAxis, validAlignedAxis, rotation, sizeInMeters, rotationMatrix, mpp); + gl_Position = czm_projection * positionEC; + v_textureCoordinates = textureCoordinates; + +#ifdef LOG_DEPTH + czm_vertexLogDepth(); +#endif + +#ifdef DISABLE_DEPTH_DISTANCE + if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0) + { + disableDepthTestDistance = czm_minimumDisableDepthTestDistance; + } + + if (disableDepthTestDistance != 0.0) + { + // Don't try to "multiply both sides" by w. Greater/less-than comparisons won't work for negative values of w. + float zclip = gl_Position.z / gl_Position.w; + bool clipped = (zclip < -1.0 || zclip > 1.0); + if (!clipped && (disableDepthTestDistance < 0.0 || (lengthSq > 0.0 && lengthSq < disableDepthTestDistance))) + { + // Position z on the near plane. + gl_Position.z = -gl_Position.w; +#ifdef LOG_DEPTH + v_depthFromNearPlusOne = 1.0; +#endif + } + } +#endif + +#ifdef FRAGMENT_DEPTH_CHECK + if (sizeInMeters) { + translate /= mpp; + dimensions /= mpp; + imageSize /= mpp; + } + +#if defined(ROTATION) || defined(ALIGNED_AXIS) + v_rotationMatrix = rotationMatrix; +#else + v_rotationMatrix = mat2(1.0, 0.0, 0.0, 1.0); +#endif + + float enableDepthCheck = 0.0; + if (lengthSq < disableDepthTestDistance) + { + enableDepthCheck = 1.0; + } + + float dw = floor(clamp(dimensions.x, 0.0, SHIFT_LEFT12)); + float dh = floor(clamp(dimensions.y, 0.0, SHIFT_LEFT12)); + + float iw = floor(clamp(imageSize.x, 0.0, SHIFT_LEFT12)); + float ih = floor(clamp(imageSize.y, 0.0, SHIFT_LEFT12)); + + v_compressed.x = eyeDepth; + v_compressed.y = applyTranslate * SHIFT_LEFT1 + enableDepthCheck; + v_compressed.z = dw * SHIFT_LEFT12 + dh; + v_compressed.w = iw * SHIFT_LEFT12 + ih; + v_originTextureCoordinateAndTranslate.xy = depthOrigin; + v_originTextureCoordinateAndTranslate.zw = translate; + v_textureCoordinateBounds = textureCoordinateBoundsOrLabelTranslate; + +#endif + +#ifdef SDF + vec4 outlineColor; + float outlineWidth; + + temp = sdf.x; + temp = temp * SHIFT_RIGHT8; + outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor.r = floor(temp); + + temp = sdf.y; + temp = temp * SHIFT_RIGHT8; + float temp3 = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + outlineWidth = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor.a = floor(temp); + outlineColor /= 255.0; + + v_outlineWidth = outlineWidth / 255.0; + v_outlineColor = outlineColor; + v_outlineColor.a *= translucency; +#endif + + v_pickColor = pickColor; + + v_color = color; + v_color.a *= translucency; + v_splitDirection = splitDirection; +} +`;var Yje=Object.freeze({NONE:0,LOADING:2,LOADED:3,ERROR:4,FAILED:5}),Ds=Yje;function hp(e){this._billboardCollection=e,this._id=void 0,this._loadState=Ds.NONE,this._loadError=void 0,this._index=-1,this._width=void 0,this._height=void 0,this._hasSubregion=!1,this.dirty=!1}Object.defineProperties(hp.prototype,{loadError:{get:function(){return this._loadError}},loadState:{get:function(){return this._loadState}},ready:{get:function(){return this._loadState===Ds.LOADED}},hasImage:{get:function(){return this._loadState!==Ds.NONE}},id:{get:function(){return this._id}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});hp.prototype.unload=async function(){this._loadState!==Ds.NONE&&(this._id=void 0,this._loadError=void 0,this._loadState=Ds.NONE,this._index=-1,this._width=void 0,this._height=void 0,this.dirty=!0)};hp.prototype.loadImage=async function(e,t){if(this._id===e)return;let n=this._billboardCollection,i=n.billboardTextureCache,o=i.get(e);if(l(o)&&t.loadState===Ds.LOADING||t.loadState===Ds.LOADED){hp.clone(o,this);return}l(o)||(o=new hp(n),i.set(e,o)),o._id=this._id=e,o._loadState=this._loadState=Ds.LOADING,o._loadError=this._loadError=void 0;let r,s=this._billboardCollection.textureAtlas;try{r=await s.addImage(e,t)}catch(c){if(o._loadState=Ds.ERROR,o._loadError=c,this._id!==e)return;this._loadState=Ds.ERROR,this._loadError=c;return}if(!l(r)||r===-1){if(o._loadState=Ds.FAILED,o._index=-1,this._id!==e)return;this._loadState=Ds.FAILED,this._index=-1;return}o._index=r,o._loadState=Ds.LOADED;let a=s.rectangles[r];o._width=a.width,o._height=a.height,this._id===e&&(this._index=r,this._loadState=Ds.LOADED,this._width=a.width,this._height=a.height,this.dirty=!0)};hp.prototype.addImageSubRegion=async function(e,t){this._id=e,this._loadState=Ds.LOADING,this._loadError=void 0,this._hasSubregion=!0;let n,i=this._billboardCollection.textureAtlas;try{n=await i.addImageSubRegion(e,t)}catch(o){this._loadState=Ds.ERROR,this._loadError=o;return}if(!l(n)||n===-1){this._loadState=Ds.FAILED,this._index=-1,this._width=void 0,this._height=void 0;return}this._width=t.width,this._height=t.height,this._index=n,this._loadState=Ds.LOADED,this.dirty=!0};hp.prototype.computeTextureCoordinates=function(e){return this._billboardCollection.textureAtlas.computeTextureCoordinates(this._index,e)};hp.clone=function(e,t){if(t._id=e._id,t._loadState=e._loadState,t._loadError=void 0,t._index=e._index,t._width=e._width,t._height=e._height,t._hasSubregion=e._hasSubregion,e.ready){t.dirty=!0;return}return(async()=>{let i=e._id;await e._billboardCollection.textureAtlas._indexPromiseById.get(i),t._id===i&&(e._hasSubregion&&await Promise.resolve(),t._id=i,t._loadState=e._loadState,t._loadError=e._loadError,t._index=e._index,t._width=e._width,t._height=e._height,t.dirty=!0)})(),t};var w_=hp;function Bi(e,t){e=e??V.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.pixelOffsetScaleByDistance,o=e.scaleByDistance,r=e.distanceDisplayCondition;l(n)&&(n=Yt.clone(n)),l(i)&&(i=Yt.clone(i)),l(o)&&(o=Yt.clone(o)),l(r)&&(r=Ut.clone(r)),this._show=e.show??!0,this._position=d.clone(e.position??d.ZERO),this._actualPosition=d.clone(this._position),this._pixelOffset=k.clone(e.pixelOffset??k.ZERO),this._translate=new k(0,0),this._eyeOffset=d.clone(e.eyeOffset??d.ZERO),this._heightReference=e.heightReference??Ze.NONE,this._verticalOrigin=e.verticalOrigin??Wn.CENTER,this._horizontalOrigin=e.horizontalOrigin??Ri.CENTER,this._scale=e.scale??1,this._color=G.clone(e.color??G.WHITE),this._rotation=e.rotation??0,this._alignedAxis=d.clone(e.alignedAxis??d.ZERO),this._width=e.width,this._height=e.height,this._scaleByDistance=o,this._translucencyByDistance=n,this._pixelOffsetScaleByDistance=i,this._sizeInMeters=e.sizeInMeters??!1,this._distanceDisplayCondition=r,this._disableDepthTestDistance=e.disableDepthTestDistance,this._id=e.id,this._collection=e.collection??t,this._pickId=void 0,this._pickPrimitive=e._pickPrimitive??this,this._billboardCollection=t,this._dirty=!1,this._index=-1,this._batchIndex=void 0,this._imageTexture=new w_(t),this._imageWidth=void 0,this._imageHeight=void 0,this._labelDimensions=void 0,this._labelHorizontalOrigin=void 0,this._labelTranslate=void 0;let s=e.image,a=e.imageId;l(s)&&(l(a)||(typeof s=="string"?a=s:l(s.src)?a=s.src:a=Xn()),this._imageTexture.loadImage(a,s)),l(e.imageSubRegion)&&this._imageTexture.addImageSubRegion(a,e.imageSubRegion),this._actualClampedPosition=void 0,this._removeCallbackFunc=void 0,this._mode=ie.SCENE3D,this._clusterShow=!0,this._outlineColor=G.clone(e.outlineColor??G.BLACK),this._outlineWidth=e.outlineWidth??0,this._updateClamping(),this._splitDirection=e.splitDirection??wr.NONE}var ple=Bi.SHOW_INDEX=0,ik=Bi.POSITION_INDEX=1,Ele=Bi.PIXEL_OFFSET_INDEX=2,qje=Bi.EYE_OFFSET_INDEX=3,Kje=Bi.HORIZONTAL_ORIGIN_INDEX=4,Xje=Bi.VERTICAL_ORIGIN_INDEX=5,Jje=Bi.SCALE_INDEX=6,gle=Bi.IMAGE_INDEX_INDEX=7,_le=Bi.COLOR_INDEX=8,Zje=Bi.ROTATION_INDEX=9,$je=Bi.ALIGNED_AXIS_INDEX=10,eYe=Bi.SCALE_BY_DISTANCE_INDEX=11,tYe=Bi.TRANSLUCENCY_BY_DISTANCE_INDEX=12,nYe=Bi.PIXEL_OFFSET_SCALE_BY_DISTANCE_INDEX=13,iYe=Bi.DISTANCE_DISPLAY_CONDITION=14,oYe=Bi.DISABLE_DEPTH_DISTANCE=15;Bi.TEXTURE_COORDINATE_BOUNDS=16;var yle=Bi.SDF_INDEX=17,rYe=Bi.SPLIT_DIRECTION_INDEX=18;Bi.NUMBER_OF_PROPERTIES=19;function sr(e,t){let n=e._billboardCollection;l(n)&&(n._updateBillboard(e,t),e._dirty=!0)}Object.defineProperties(Bi.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,sr(this,ple))}},position:{get:function(){return this._position},set:function(e){let t=this._position;d.equals(t,e)||(d.clone(e,t),d.clone(e,this._actualPosition),this._updateClamping(),sr(this,ik))}},heightReference:{get:function(){return this._heightReference},set:function(e){let t=this._heightReference;e!==t&&(this._heightReference=e,this._updateClamping(),sr(this,ik))}},pixelOffset:{get:function(){return this._pixelOffset},set:function(e){let t=this._pixelOffset;k.equals(t,e)||(k.clone(e,t),sr(this,Ele))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;Yt.equals(t,e)||(this._scaleByDistance=Yt.clone(e,t),sr(this,eYe))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;Yt.equals(t,e)||(this._translucencyByDistance=Yt.clone(e,t),sr(this,tYe))}},pixelOffsetScaleByDistance:{get:function(){return this._pixelOffsetScaleByDistance},set:function(e){let t=this._pixelOffsetScaleByDistance;Yt.equals(t,e)||(this._pixelOffsetScaleByDistance=Yt.clone(e,t),sr(this,nYe))}},eyeOffset:{get:function(){return this._eyeOffset},set:function(e){let t=this._eyeOffset;d.equals(t,e)||(d.clone(e,t),sr(this,qje))}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin!==e&&(this._horizontalOrigin=e,sr(this,Kje))}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){this._verticalOrigin!==e&&(this._verticalOrigin=e,sr(this,Xje))}},scale:{get:function(){return this._scale},set:function(e){this._scale!==e&&(this._scale=e,sr(this,Jje))}},color:{get:function(){return this._color},set:function(e){let t=this._color;G.equals(t,e)||(G.clone(e,t),sr(this,_le))}},rotation:{get:function(){return this._rotation},set:function(e){this._rotation!==e&&(this._rotation=e,sr(this,Zje))}},alignedAxis:{get:function(){return this._alignedAxis},set:function(e){let t=this._alignedAxis;d.equals(t,e)||(d.clone(e,t),sr(this,$je))}},width:{get:function(){return this._width??this._imageTexture.width},set:function(e){this._width!==e&&(this._width=e,sr(this,gle))}},height:{get:function(){return this._height??this._imageTexture.height},set:function(e){this._height!==e&&(this._height=e,sr(this,gle))}},sizeInMeters:{get:function(){return this._sizeInMeters},set:function(e){this._sizeInMeters!==e&&(this._sizeInMeters=e,sr(this,_le))}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Ut.equals(e,this._distanceDisplayCondition)||(this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition),sr(this,iYe))}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance!==e&&(this._disableDepthTestDistance=e,sr(this,oYe))}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickPrimitive:{get:function(){return this._pickPrimitive},set:function(e){this._pickPrimitive=e,l(this._pickId)&&(this._pickId.object.primitive=e)}},pickId:{get:function(){return this._pickId}},image:{get:function(){return this._imageTexture.id},set:function(e){if(!l(e)){this._imageTexture.unload();return}let t;typeof e=="string"?t=e:e instanceof we?t=e._url:l(e.src)?t=e.src:t=Xn(),this._imageTexture.loadImage(t,e)}},ready:{get:function(){return this._imageTexture.ready}},loadError:{get:function(){return this._imageTexture.loadError}},textureDirty:{get:function(){return this._imageTexture.dirty},set:function(e){this._imageTexture.dirty=e}},_clampedPosition:{get:function(){return this._actualClampedPosition},set:function(e){this._actualClampedPosition=d.clone(e,this._actualClampedPosition),sr(this,ik)}},clusterShow:{get:function(){return this._clusterShow},set:function(e){this._clusterShow!==e&&(this._clusterShow=e,sr(this,ple))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;G.equals(t,e)||(G.clone(e,t),sr(this,yle))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,sr(this,yle))}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,sr(this,rYe))}}});Bi.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this._pickPrimitive,collection:this._collection,id:this._id})),this._pickId};Bi.prototype._updateClamping=function(){Bi._updateClamping(this._billboardCollection,this)};var ok=new Ae;Bi._updateClamping=function(e,t){if(!l(e)||!l(e._scene))return;let n=e._scene,i=n.ellipsoid??te.default,o=n.frameState.mode,r=o!==t._mode;if(t._mode=o,(t._heightReference===Ze.NONE||r)&&l(t._removeCallbackFunc)&&(t._removeCallbackFunc(),t._removeCallbackFunc=void 0,t._clampedPosition=void 0),t._heightReference===Ze.NONE||!l(t._position))return;l(t._removeCallbackFunc)&&t._removeCallbackFunc();let s=i.cartesianToCartographic(t._position);if(!l(s)){t._actualClampedPosition=void 0;return}function a(u){let f=i.cartographicToCartesian(u,t._clampedPosition);rI(t._heightReference)&&(t._mode===ie.SCENE3D?(u.height+=s.height,i.cartographicToCartesian(u,f)):f.x+=s.height),t._clampedPosition=f}t._removeCallbackFunc=n.updateHeight(s,a,t._heightReference),Ae.clone(s,ok);let c=n.getHeight(s,t._heightReference);l(c)&&(ok.height=c),a(ok)};Bi.prototype.computeTextureCoordinates=function(e){return this._imageTexture.computeTextureCoordinates(e)};Bi.prototype.setImage=function(e,t){this._imageTexture.loadImage(e,t)};Bi.prototype.setImageTexture=function(e){w_.clone(e,this._imageTexture)};Bi.prototype.setImageSubRegion=function(e,t){this._imageTexture.addImageSubRegion(e,t)};Bi.prototype._setTranslate=function(e){let t=this._translate;k.equals(t,e)||(k.clone(e,t),sr(this,Ele))};Bi.prototype._getActualPosition=function(){return l(this._clampedPosition)?this._clampedPosition:this._actualPosition};Bi.prototype._setActualPosition=function(e){l(this._clampedPosition)||d.clone(e,this._actualPosition),sr(this,ik)};var Cle=new se;Bi._computeActualPosition=function(e,t,n,i){return l(e._clampedPosition)?(n.mode!==e._mode&&e._updateClamping(),e._clampedPosition):n.mode===ie.SCENE3D?t:(R.multiplyByPoint(i,t,Cle),to.computeActualEllipsoidPosition(n,Cle))};var Ile=new d;Bi._computeScreenSpacePosition=function(e,t,n,i,o,r){let s=R.multiplyByPoint(e,t,Ile),a=to.worldWithEyeOffsetToWindowCoordinates(o,s,n,r);if(l(a))return k.add(a,i,a),a};var nk=new k(0,0);Bi.prototype.computeScreenSpacePosition=function(e,t){let n=this._billboardCollection;l(t)||(t=new k),k.clone(this._pixelOffset,nk),k.add(nk,this._translate,nk);let i=n.modelMatrix,o=this._position;if(l(this._clampedPosition)&&(o=this._clampedPosition,e.mode!==ie.SCENE3D)){let s=e.mapProjection,a=s.ellipsoid,c=s.unproject(o,ok);o=a.cartographicToCartesian(c,Ile),i=R.IDENTITY}return Bi._computeScreenSpacePosition(i,o,this._eyeOffset,nk,e,t)};Bi.getScreenSpaceBoundingBox=function(e,t,n){let i=e.width,o=e.height,r=e.scale;i*=r,o*=r;let s=t.x;e.horizontalOrigin===Ri.RIGHT?s-=i:e.horizontalOrigin===Ri.CENTER&&(s-=i*.5);let a=t.y;return e.verticalOrigin===Wn.BOTTOM||e.verticalOrigin===Wn.BASELINE?a-=o:e.verticalOrigin===Wn.CENTER&&(a-=o*.5),l(n)||(n=new Xe),n.x=s,n.y=a,n.width=i,n.height=o,n};Bi.prototype.equals=function(e){return this===e||l(e)&&this._id===e._id&&d.equals(this._position,e._position)&&this.image===e.image&&this._show===e._show&&this._scale===e._scale&&this._verticalOrigin===e._verticalOrigin&&this._horizontalOrigin===e._horizontalOrigin&&this._heightReference===e._heightReference&&G.equals(this._color,e._color)&&k.equals(this._pixelOffset,e._pixelOffset)&&k.equals(this._translate,e._translate)&&d.equals(this._eyeOffset,e._eyeOffset)&&Yt.equals(this._scaleByDistance,e._scaleByDistance)&&Yt.equals(this._translucencyByDistance,e._translucencyByDistance)&&Yt.equals(this._pixelOffsetScaleByDistance,e._pixelOffsetScaleByDistance)&&Ut.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._splitDirection===e._splitDirection};Bi.prototype._destroy=function(){l(this._customData)&&(this._billboardCollection._scene.globe._surface.removeTileCustomData(this._customData),this._customData=void 0),l(this._removeCallbackFunc)&&(this._removeCallbackFunc(),this._removeCallbackFunc=void 0),this.image=void 0,this._pickId=this._pickId&&this._pickId.destroy(),this._billboardCollection=void 0};var xo=Bi;var sYe={OPAQUE:0,TRANSLUCENT:1,OPAQUE_AND_TRANSLUCENT:2},Vo=Object.freeze(sYe);var aYe={FONT_SIZE:48,PADDING:10,RADIUS:8,CUTOFF:.25},Pa=Object.freeze(aYe);function KB({x:e,y:t,width:n,height:i}){this.rectangle=new Xe(e,t,n,i),this.childNode1=void 0,this.childNode2=void 0,this.index=void 0}function Lj({width:e,height:t,borderPadding:n}){this._width=e,this._height=t,this._borderPadding=n,this._root=new KB({x:n,y:n,width:e-2*n,height:t-2*n})}Lj.prototype.pack=function(e,{width:t,height:n}){let i=this._findNode(this._root,{width:t,height:n});if(l(i))return i.index=e,i};Lj.prototype._findNode=function(e,{width:t,height:n}){if(l(e)){if(!l(e.childNode1)&&!l(e.childNode2)){if(l(e.index))return;let{rectangle:i}=e,o=i.width,r=i.height,s=o-t,a=r-n;return s<0||a<0?void 0:s===0&&a===0?e:s>a?(e.childNode1=new KB({x:i.x,y:i.y,width:t,height:r}),e.childNode2=new KB({x:i.x+t,y:i.y,width:s,height:r}),this._findNode(e.childNode1,{width:t,height:n})):(e.childNode1=new KB({x:i.x,y:i.y,width:o,height:n}),e.childNode2=new KB({x:i.x,y:i.y+n,width:o,height:a}),this._findNode(e.childNode1,{width:t,height:n}))}return this._findNode(e.childNode1,{width:t,height:n})||this._findNode(e.childNode2,{width:t,height:n})}};var XB=Lj;var xle=16;function Zl(e){e=e??V.EMPTY_OBJECT;let t=e.borderWidthInPixels??1,n=e.initialSize??new k(xle,xle);this._pixelFormat=e.pixelFormat??et.RGBA,this._sampler=e.sampler,this._borderWidthInPixels=t,this._initialSize=n,this._texturePacker=void 0,this._rectangles=[],this._subRegions=new Map,this._guid=Xn(),this._imagesToAddQueue=[],this._indexById=new Map,this._indexPromiseById=new Map,this._nextIndex=0}Object.defineProperties(Zl.prototype,{borderWidthInPixels:{get:function(){return this._borderWidthInPixels}},rectangles:{get:function(){return this._rectangles}},texture:{get:function(){return this._texture}},pixelFormat:{get:function(){return this._pixelFormat}},sampler:{get:function(){return this._sampler}},numberOfImages:{get:function(){return this._nextIndex}},guid:{get:function(){return this._guid}},sizeInBytes:{get:function(){return l(this._texture)?this._texture.sizeInBytes:0}}});Zl.prototype.computeTextureCoordinates=function(e,t){let n=this._texture,i=this._rectangles[e];if(l(t)||(t=new Xe),!l(i))return t.x=0,t.y=0,t.width=0,t.height=0,t;let o=n.width,r=n.height,s=i.width,a=i.height,c=i.x,u=i.y,f=this._subRegions.get(e);if(l(f)){let h=this._rectangles[f];c+=h.x,u+=h.y}return t.x=c/o,t.y=u/r,t.width=s/o,t.height=a/r,t};Zl.prototype._copyFromTexture=function(e,t,n,i){let o=this._pixelFormat,r=this._sampler,s=new Nt({context:e,height:n,width:t,pixelFormat:o,sampler:r}),a=e._gl,c=s._textureTarget,u=this._texture,f=new as({context:e,colorTextures:[u],destroyAttachments:!1});a.activeTexture(a.TEXTURE0),a.bindTexture(c,s._texture),f._bind();let h=this.rectangles,A=this._subRegions;for(let g=0;g<h.length;++g){let m=i[g],_=h[g];if(!l(m)||!l(_)||l(A.get(g)))continue;let{x:y,y:C,width:E,height:I}=m;a.copyTexSubImage2D(c,0,y,C,_.x,_.y,E,I)}return a.bindTexture(c,null),s._initialized=!0,f._unBind(),f.destroy(),s};Zl.prototype._resize=function(e,t=0){let n=this._borderWidthInPixels,i=this._rectangles,o=this._imagesToAddQueue,r=this._texture,s=r.width,a=r.height,c=this._subRegions,u=i.map((E,I)=>new ble({index:I,image:E})).filter((E,I)=>l(E.image)&&!l(c.get(I))),f=0,h=0,A=0;for(let E=t;E<o.length;++E){let{width:I,height:b}=o[E].image;f=Math.max(f,I),h=Math.max(h,b),A+=I*b,u.push(o[E])}s=Math.max(f,s),a=Math.max(h,a),e.webgl2||(s=D.nextPowerOfTwo(s),a=D.nextPowerOfTwo(a));let g=A,m=1;for(;g/s/a>=1;)m*=2,s>a?a*=m:s*=m;u.sort(({image:E},{image:I})=>I.height*I.width-E.height*E.width);let _=new Array(this._nextIndex);for(let E of this._subRegions.keys())l(c.get(E))&&(_[E]=i[E]);let y,C=!1;for(;!C;){y=new XB({height:a,width:s,borderPadding:n});let E;for(E=0;E<u.length;++E){let{index:I,image:b}=u[E];if(!l(b))continue;let S=y.pack(I,b);if(!l(S)){s>a?a*=2:s*=2;break}_[I]=S.rectangle}C=E===u.length}this._texturePacker=y,this._texture=this._copyFromTexture(e,s,a,_),r.destroy(),this._rectangles=_,this._guid=Xn()};Zl.prototype.getImageIndex=function(e){return this._indexById.get(e)};Zl.prototype._copyImageToTexture=function({index:e,image:t,resolve:n,reject:i}){let o=this._texture,r=this._rectangles[e];try{o.copyFrom({source:t,xOffset:r.x,yOffset:r.y}),l(n)&&n(e)}catch(s){if(l(i)){i(s);return}}};function ble({index:e,image:t,resolve:n,reject:i}){this.index=e,this.image=t,this.resolve=n,this.reject=i,this.rectangle=void 0}Zl.prototype._addImage=function(e,t){return new Promise((n,i)=>{this._imagesToAddQueue.push(new ble({index:e,image:t,resolve:n,reject:i})),this._imagesToAddQueue.sort(({image:o},{image:r})=>r.height*r.width-o.height*o.width)})};Zl.prototype._processImageQueue=function(e){let t=this._imagesToAddQueue;if(t.length===0)return!1;this._rectangles.length=this._nextIndex;let n,i;for(n=0;n<t.length;++n){let o=t[n],{image:r,index:s}=o,a=this._texturePacker.pack(s,r);if(!l(a)){try{this._resize(e,n)}catch(c){i=c,l(o.reject)&&o.reject(i)}break}this._rectangles[s]=a.rectangle}if(l(i)){for(n=n+1;n<t.length;++n){let{resolve:o}=t[n];l(o)&&o(-1)}return t.length=0,!1}for(let o=0;o<t.length;++o)this._copyImageToTexture(t[o]);return t.length=0,!0};Zl.prototype.update=function(e){if(!l(this._texture)){let t=this._initialSize.x,n=this._initialSize.y,i=this._pixelFormat,o=this._sampler,r=this._borderWidthInPixels;this._texture=new Nt({context:e,width:t,height:n,pixelFormat:i,sampler:o}),this._texturePacker=new XB({height:n,width:t,borderPadding:r})}return this._processImageQueue(e)};async function cYe(e,t){return typeof e=="function"&&(e=e(t)),(typeof e=="string"||e instanceof we)&&(e=we.createIfNeeded(e).fetchImage()),e}Zl.prototype.addImage=function(e,t){let n=this._indexPromiseById.get(e);if(l(n))return n;let i=this._nextIndex++;return this._indexById.set(e,i),n=(async()=>(t=await cYe(t,e),this.isDestroyed()||!l(t)?-1:this._addImage(i,t)))(),this._indexPromiseById.set(e,n),n};Zl.prototype.addImageSubRegion=function(e,t){let n=this._indexById.get(e);if(!l(n))throw new ce(`image with id "${e}" not found in the atlas.`);let i=this._indexPromiseById.get(e);for(let[r,s]of this._subRegions.entries())if(n===s&&this._rectangles[r].equals(t))return i.then(c=>c===-1?-1:r);let o=this._nextIndex++;return this._subRegions.set(o,n),this._rectangles[o]=t.clone(),i.then(r=>{if(r===-1)return-1;let s=this._rectangles[r];return o})};Zl.prototype.isDestroyed=function(){return!1};Zl.prototype.destroy=function(){return this._texture=this._texture&&this._texture.destroy(),this._imagesToAddQueue.forEach(({resolve:e})=>{l(e)&&e(-1)}),ue(this)};var zx=Zl;var lYe=xo.SHOW_INDEX,JB=xo.POSITION_INDEX,Tle=xo.PIXEL_OFFSET_INDEX,Sle=xo.EYE_OFFSET_INDEX,uYe=xo.HORIZONTAL_ORIGIN_INDEX,fYe=xo.VERTICAL_ORIGIN_INDEX,dYe=xo.SCALE_INDEX,aE=xo.IMAGE_INDEX_INDEX,wle=xo.COLOR_INDEX,hYe=xo.ROTATION_INDEX,mYe=xo.ALIGNED_AXIS_INDEX,Ble=xo.SCALE_BY_DISTANCE_INDEX,Dle=xo.TRANSLUCENCY_BY_DISTANCE_INDEX,vle=xo.PIXEL_OFFSET_SCALE_BY_DISTANCE_INDEX,Ple=xo.DISTANCE_DISPLAY_CONDITION,AYe=xo.DISABLE_DEPTH_DISTANCE,pYe=xo.TEXTURE_COORDINATE_BOUNDS,Rle=xo.SDF_INDEX,Mle=xo.SPLIT_DIRECTION_INDEX,zj=xo.NUMBER_OF_PROPERTIES,Co,gYe={positionHighAndScale:0,positionLowAndRotation:1,compressedAttribute0:2,compressedAttribute1:3,compressedAttribute2:4,eyeOffset:5,scaleByDistance:6,pixelOffsetScaleByDistance:7,compressedAttribute3:8,textureCoordinateBoundsOrLabelTranslate:9,a_batchId:10,sdf:11,splitDirection:12},_Ye={direction:0,positionHighAndScale:1,positionLowAndRotation:2,compressedAttribute0:3,compressedAttribute1:4,compressedAttribute2:5,eyeOffset:6,scaleByDistance:7,pixelOffsetScaleByDistance:8,compressedAttribute3:9,textureCoordinateBoundsOrLabelTranslate:10,a_batchId:11,sdf:12,splitDirection:13};function Wf(e){e=e??V.EMPTY_OBJECT,this._scene=e.scene,this._batchTable=e.batchTable;let t=e.textureAtlas;l(t)||(t=new zx),this._textureAtlas=t,this._textureAtlasGUID=t.guid,this._destroyTextureAtlas=!0,this._billboardTextureCache=new Map,this._sp=void 0,this._spTranslucent=void 0,this._rsOpaque=void 0,this._rsTranslucent=void 0,this._vaf=void 0,this._billboards=[],this._billboardsToUpdate=[],this._billboardsToUpdateIndex=0,this._billboardsRemoved=!1,this._createVertexArray=!1,this._shaderRotation=!1,this._compiledShaderRotation=!1,this._shaderAlignedAxis=!1,this._compiledShaderAlignedAxis=!1,this._shaderScaleByDistance=!1,this._compiledShaderScaleByDistance=!1,this._shaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistance=!1,this._shaderPixelOffsetScaleByDistance=!1,this._compiledShaderPixelOffsetScaleByDistance=!1,this._shaderDistanceDisplayCondition=!1,this._compiledShaderDistanceDisplayCondition=!1,this._shaderDisableDepthDistance=!1,this._compiledShaderDisableDepthDistance=!1,this._shaderClampToGround=!1,this._compiledShaderClampToGround=!1,this._propertiesChanged=new Uint32Array(zj),this._maxSize=0,this._maxEyeOffset=0,this._maxScale=1,this._maxPixelOffset=0,this._allHorizontalCenter=!0,this._allVerticalCenter=!0,this._allSizedInMeters=!0,this._baseVolume=new le,this._baseVolumeWC=new le,this._baseVolume2D=new le,this._boundingVolume=new le,this._boundingVolumeDirty=!1,this._colorCommands=[],this._allBillboardsReady=!1,this.show=e.show??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=R.clone(R.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowTextureAtlas=e.debugShowTextureAtlas??!1,this.blendOption=e.blendOption??Vo.OPAQUE_AND_TRANSLUCENT,this._blendOption=void 0,this._mode=ie.SCENE3D,this._buffersUsage=[Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW],this._highlightColor=G.clone(G.WHITE),this._uniforms={u_atlas:()=>this.textureAtlas.texture,u_highlightColor:()=>this._highlightColor};let n=this._scene;l(n)&&l(n.terrainProviderChanged)&&(this._removeCallbackFunc=n.terrainProviderChanged.addEventListener(function(){let i=this._billboards,o=i.length;for(let r=0;r<o;++r)l(i[r])&&i[r]._updateClamping()},this))}Object.defineProperties(Wf.prototype,{length:{get:function(){return Vj(this),this._billboards.length}},textureAtlas:{get:function(){return this._textureAtlas},set:function(e){this._textureAtlas!==e&&(this._textureAtlas=this._destroyTextureAtlas&&this._textureAtlas&&this._textureAtlas.destroy(),this._textureAtlas=e)}},destroyTextureAtlas:{get:function(){return this._destroyTextureAtlas},set:function(e){this._destroyTextureAtlas=e}},sizeInBytes:{get:function(){return this._textureAtlas.sizeInBytes}},ready:{get:function(){return this._allBillboardsReady}},billboardTextureCache:{get:function(){return this._billboardTextureCache}}});function Nle(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}Wf.prototype.add=function(e){let t=new xo(e,this);return t._index=this._billboards.length,this._billboards.push(t),this._createVertexArray=!0,t};Wf.prototype.remove=function(e){return this.contains(e)?(this._billboards[e._index]=void 0,this._billboardsRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};Wf.prototype.removeAll=function(){Nle(this._billboards),this._billboards=[],this._billboardsToUpdate=[],this._billboardsToUpdateIndex=0,this._billboardsRemoved=!1,this._createVertexArray=!0};function Vj(e){if(e._billboardsRemoved){e._billboardsRemoved=!1;let t=[],n=e._billboards,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];l(s)&&(s._index=r++,t.push(s))}e._billboards=t}}Wf.prototype._updateBillboard=function(e,t){e._dirty||(this._billboardsToUpdate[this._billboardsToUpdateIndex++]=e),++this._propertiesChanged[t]};Wf.prototype.contains=function(e){return l(e)&&e._billboardCollection===this};Wf.prototype.get=function(e){return Vj(this),this._billboards[e]};var Oj;function yYe(e){let n=e.cache.billboardCollection_indexBufferBatched;if(l(n))return n;let i=16384*6-6,o=new Uint16Array(i);for(let r=0,s=0;r<i;r+=6,s+=4)o[r]=s,o[r+1]=s+1,o[r+2]=s+2,o[r+3]=s+0,o[r+4]=s+2,o[r+5]=s+3;return n=Et.createIndexBuffer({context:e,typedArray:o,usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT}),n.vertexArrayDestroyable=!1,e.cache.billboardCollection_indexBufferBatched=n,n}function CYe(e){let t=e.cache.billboardCollection_indexBufferInstanced;return l(t)||(t=Et.createIndexBuffer({context:e,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT}),t.vertexArrayDestroyable=!1,e.cache.billboardCollection_indexBufferInstanced=t),t}function EYe(e){let t=e.cache.billboardCollection_vertexBufferInstanced;return l(t)||(t=Et.createVertexBuffer({context:e,typedArray:new Float32Array([0,0,1,0,1,1,0,1]),usage:Qe.STATIC_DRAW}),t.vertexArrayDestroyable=!1,e.cache.billboardCollection_vertexBufferInstanced=t),t}Wf.prototype.computeNewBuffersUsage=function(){let e=this._buffersUsage,t=!1,n=this._propertiesChanged;for(let i=0;i<zj;++i){let o=n[i]===0?Qe.STATIC_DRAW:Qe.STREAM_DRAW;t=t||e[i]!==o,e[i]=o}return t};function IYe(e,t,n,i,o,r){let s=[{index:Co.positionHighAndScale,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[JB]},{index:Co.positionLowAndRotation,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[JB]},{index:Co.compressedAttribute0,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Tle]},{index:Co.compressedAttribute1,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Dle]},{index:Co.compressedAttribute2,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[wle]},{index:Co.eyeOffset,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Sle]},{index:Co.scaleByDistance,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Ble]},{index:Co.pixelOffsetScaleByDistance,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[vle]},{index:Co.compressedAttribute3,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Ple]},{index:Co.textureCoordinateBoundsOrLabelTranslate,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[pYe]},{index:Co.splitDirection,componentsPerAttribute:1,componentDatatype:q.FLOAT,usage:n[Mle]}];i&&s.push({index:Co.direction,componentsPerAttribute:2,componentDatatype:q.FLOAT,vertexBuffer:EYe(e)}),l(o)&&s.push({index:Co.a_batchId,componentsPerAttribute:1,componentDatatype:q.FLOAT,bufferUsage:Qe.STATIC_DRAW}),r&&s.push({index:Co.sdf,componentsPerAttribute:2,componentDatatype:q.FLOAT,usage:n[Rle]});let a=i?t:4*t;return new S_(e,s,a,i)}var Fj=new ei;function Lle(e,t,n,i){let o,r=n[Co.positionHighAndScale],s=n[Co.positionLowAndRotation],a=i._getActualPosition();e._mode===ie.SCENE3D&&(le.expand(e._baseVolume,a,e._baseVolume),e._boundingVolumeDirty=!0),ei.fromCartesian(a,Fj);let c=i.scale,u=i.rotation;u!==0&&(e._shaderRotation=!0),e._maxScale=Math.max(e._maxScale,c);let f=Fj.high,h=Fj.low;e._instanced?(o=i._index,r(o,f.x,f.y,f.z,c),s(o,h.x,h.y,h.z,u)):(o=i._index*4,r(o+0,f.x,f.y,f.z,c),r(o+1,f.x,f.y,f.z,c),r(o+2,f.x,f.y,f.z,c),r(o+3,f.x,f.y,f.z,c),s(o+0,h.x,h.y,h.z,u),s(o+1,h.x,h.y,h.z,u),s(o+2,h.x,h.y,h.z,u),s(o+3,h.x,h.y,h.z,u))}var $l=new k,Hf=32768,Vx=65536,Qj=4096,Nm=256,xYe=128,bYe=32,TYe=8,Ole=4,SYe=1/256,Fle=0,Qle=2,kle=3,Ule=1,Hj=new Xe;function Gle(e,t,n,i){let o,r=n[Co.compressedAttribute0],s=i.pixelOffset,a=s.x,c=s.y,u=i._translate,f=u.x,h=u.y;e._maxPixelOffset=Math.max(e._maxPixelOffset,Math.abs(a+f),Math.abs(-c+h));let A=i.horizontalOrigin,g=i._verticalOrigin,m=i.show&&i.clusterShow;i.color.alpha===0&&(m=!1),g===Wn.BASELINE&&(g=Wn.BOTTOM),e._allHorizontalCenter=e._allHorizontalCenter&&A===Ri.CENTER,e._allVerticalCenter=e._allVerticalCenter&&g===Wn.CENTER;let _=0,y=0,C=0,E=0;if(i.ready){let M=i.computeTextureCoordinates(Hj);_=M.x,y=M.y,C=M.width,E=M.height}let I=_+C,b=y+E,S=Math.floor(D.clamp(a,-Hf,Hf)+Hf)*xYe;S+=(A+1)*bYe,S+=(g+1)*TYe,S+=(m?1:0)*Ole;let B=Math.floor(D.clamp(c,-Hf,Hf)+Hf)*Nm,v=Math.floor(D.clamp(f,-Hf,Hf)+Hf)*Nm,P=(D.clamp(h,-Hf,Hf)+Hf)*SYe,N=Math.floor(P),L=Math.floor((P-N)*Nm);B+=N,v+=L,$l.x=_,$l.y=y;let p=Fn.compressTextureCoordinates($l);$l.x=I;let x=Fn.compressTextureCoordinates($l);$l.y=b;let T=Fn.compressTextureCoordinates($l);$l.x=_;let w=Fn.compressTextureCoordinates($l);e._instanced?(o=i._index,r(o,S,B,v,p)):(o=i._index*4,r(o+0,S+Fle,B,v,p),r(o+1,S+Qle,B,v,x),r(o+2,S+kle,B,v,T),r(o+3,S+Ule,B,v,w))}function zle(e,t,n,i){let o,r=n[Co.compressedAttribute1],s=i.alignedAxis;d.equals(s,d.ZERO)||(e._shaderAlignedAxis=!0);let a=0,c=1,u=1,f=1,h=i.translucencyByDistance;l(h)&&(a=h.near,c=h.nearValue,u=h.far,f=h.farValue,(c!==1||f!==1)&&(e._shaderTranslucencyByDistance=!0));let A=Math.round(i.width??0);e._maxSize=Math.max(e._maxSize,A);let g=D.clamp(A,0,Vx),m=0;Math.abs(d.magnitudeSquared(s)-1)<D.EPSILON6&&(m=Fn.octEncodeFloat(s)),c=D.clamp(c,0,1),c=c===1?255:c*255|0,g=g*Nm+c,f=D.clamp(f,0,1),f=f===1?255:f*255|0,m=m*Nm+f,e._instanced?(o=i._index,r(o,g,m,a,u)):(o=i._index*4,r(o+0,g,m,a,u),r(o+1,g,m,a,u),r(o+2,g,m,a,u),r(o+3,g,m,a,u))}function Uj(e,t,n,i){let o,r=n[Co.compressedAttribute2],s=i.color,a=l(e._batchTable)?G.WHITE:i.getPickId(t.context).color,c=i.sizeInMeters?1:0,u=Math.abs(d.magnitudeSquared(i.alignedAxis)-1)<D.EPSILON6?1:0;e._allSizedInMeters=e._allSizedInMeters&&c===1;let f=i.height??0;e._maxSize=Math.max(e._maxSize,f);let h=i._labelHorizontalOrigin??-2;h+=2;let A=f*Ole+h,g=G.floatToByte(s.red),m=G.floatToByte(s.green),_=G.floatToByte(s.blue),y=g*Vx+m*Nm+_;g=G.floatToByte(a.red),m=G.floatToByte(a.green),_=G.floatToByte(a.blue);let C=g*Vx+m*Nm+_,E=G.floatToByte(s.alpha)*Vx+G.floatToByte(a.alpha)*Nm;E+=c*2+u,e._instanced?(o=i._index,r(o,y,C,E,A)):(o=i._index*4,r(o+0,y,C,E,A),r(o+1,y,C,E,A),r(o+2,y,C,E,A),r(o+3,y,C,E,A))}function Gj(e,t,n,i){let o,r=n[Co.eyeOffset],s=i.eyeOffset,a=s.z;if(i._heightReference!==Ze.NONE&&(a*=1.005),e._maxEyeOffset=Math.max(e._maxEyeOffset,Math.abs(s.x),Math.abs(s.y),Math.abs(a)),e._instanced){if($l.x=0,$l.y=0,i.ready){let u=i.computeTextureCoordinates(Hj);$l.x=u.width,$l.y=u.height}let c=Fn.compressTextureCoordinates($l);o=i._index,r(o,s.x,s.y,a,c)}else o=i._index*4,r(o+0,s.x,s.y,a,0),r(o+1,s.x,s.y,a,0),r(o+2,s.x,s.y,a,0),r(o+3,s.x,s.y,a,0)}function Vle(e,t,n,i){let o,r=n[Co.scaleByDistance],s=0,a=1,c=1,u=1,f=i.scaleByDistance;l(f)&&(s=f.near,a=f.nearValue,c=f.far,u=f.farValue,(a!==1||u!==1)&&(e._shaderScaleByDistance=!0)),e._instanced?(o=i._index,r(o,s,a,c,u)):(o=i._index*4,r(o+0,s,a,c,u),r(o+1,s,a,c,u),r(o+2,s,a,c,u),r(o+3,s,a,c,u))}function Hle(e,t,n,i){let o,r=n[Co.pixelOffsetScaleByDistance],s=0,a=1,c=1,u=1,f=i.pixelOffsetScaleByDistance;l(f)&&(s=f.near,a=f.nearValue,c=f.far,u=f.farValue,(a!==1||u!==1)&&(e._shaderPixelOffsetScaleByDistance=!0)),e._instanced?(o=i._index,r(o,s,a,c,u)):(o=i._index*4,r(o+0,s,a,c,u),r(o+1,s,a,c,u),r(o+2,s,a,c,u),r(o+3,s,a,c,u))}function Wle(e,t,n,i){let o,r=n[Co.compressedAttribute3],s=0,a=Number.MAX_VALUE,c=i.distanceDisplayCondition;l(c)&&(s=c.near,a=c.far,s*=s,a*=a,e._shaderDistanceDisplayCondition=!0);let u=i.disableDepthTestDistance,f=_f(i.heightReference)&&t.context.depthTexture;l(u)||(u=f?5e3:0),u*=u,(f||u>0)&&(e._shaderDisableDepthDistance=!0,u===Number.POSITIVE_INFINITY&&(u=-1));let h,A;l(i._labelDimensions)?(A=i._labelDimensions.x,h=i._labelDimensions.y):(A=i.width??0,h=i.height??0);let g=Math.floor(D.clamp(A,0,Qj)),m=Math.floor(D.clamp(h,0,Qj)),_=g*Qj+m;e._instanced?(o=i._index,r(o,s,a,u,_)):(o=i._index*4,r(o+0,s,a,u,_),r(o+1,s,a,u,_),r(o+2,s,a,u,_),r(o+3,s,a,u,_))}function jle(e,t,n,i){if(_f(i.heightReference)){let A=e._scene,g=t.context,m=t.globeTranslucencyState.translucent,_=l(A.globe)&&A.globe.depthTestAgainstTerrain;e._shaderClampToGround=g.depthTexture&&!m&&_}let o,r=n[Co.textureCoordinateBoundsOrLabelTranslate];if(qt.maximumVertexTextureImageUnits>0){let A=0,g=0;l(i._labelTranslate)&&(A=i._labelTranslate.x,g=i._labelTranslate.y),e._instanced?(o=i._index,r(o,A,g,0,0)):(o=i._index*4,r(o+0,A,g,0,0),r(o+1,A,g,0,0),r(o+2,A,g,0,0),r(o+3,A,g,0,0));return}let s=0,a=0,c=0,u=0;if(i.ready){let A=i.computeTextureCoordinates(Hj);s=A.x,a=A.y,c=A.width,u=A.height}let f=s+c,h=a+u;e._instanced?(o=i._index,r(o,s,a,f,h)):(o=i._index*4,r(o+0,s,a,f,h),r(o+1,s,a,f,h),r(o+2,s,a,f,h),r(o+3,s,a,f,h))}function wYe(e,t,n,i){if(!l(e._batchTable))return;let o=n[Co.a_batchId],r=i._batchIndex,s;e._instanced?(s=i._index,o(s,r)):(s=i._index*4,o(s+0,r),o(s+1,r),o(s+2,r),o(s+3,r))}function Yle(e,t,n,i){if(!e._sdf)return;let o,r=n[Co.sdf],s=i.outlineColor,a=i.outlineWidth,c=G.floatToByte(s.red),u=G.floatToByte(s.green),f=G.floatToByte(s.blue),h=c*Vx+u*Nm+f,A=a/Pa.RADIUS,g=G.floatToByte(s.alpha)*Vx+G.floatToByte(A)*Nm;e._instanced?(o=i._index,r(o,h,g)):(o=i._index*4,r(o+0,h+Fle,g),r(o+1,h+Qle,g),r(o+2,h+kle,g),r(o+3,h+Ule,g))}function qle(e,t,n,i){let o=n[Co.splitDirection],r=0,s=i.splitDirection;l(s)&&(r=s);let a;e._instanced?(a=i._index,o(a,r)):(a=i._index*4,o(a+0,r),o(a+1,r),o(a+2,r),o(a+3,r))}function BYe(e,t,n,i){Lle(e,t,n,i),Gle(e,t,n,i),zle(e,t,n,i),Uj(e,t,n,i),Gj(e,t,n,i),Vle(e,t,n,i),Hle(e,t,n,i),Wle(e,t,n,i),jle(e,t,n,i),wYe(e,t,n,i),Yle(e,t,n,i),qle(e,t,n,i)}function kj(e,t,n,i,o,r){let s;i.mode===ie.SCENE3D?(s=e._baseVolume,e._boundingVolumeDirty=!0):s=e._baseVolume2D;let a=[];for(let c=0;c<n;++c){let u=t[c],f=u.position,h=xo._computeActualPosition(u,f,i,o);l(h)&&(u._setActualPosition(h),r?a.push(h):le.expand(s,h,s))}r&&le.fromPoints(a,s)}function DYe(e,t){let n=t.mode,i=e._billboards,o=e._billboardsToUpdate,r=e._modelMatrix;e._createVertexArray||e._mode!==n||n!==ie.SCENE3D&&!R.equals(r,e.modelMatrix)?(e._mode=n,R.clone(e.modelMatrix,r),e._createVertexArray=!0,(n===ie.SCENE3D||n===ie.SCENE2D||n===ie.COLUMBUS_VIEW)&&kj(e,i,i.length,t,r,!0)):n===ie.MORPHING?kj(e,i,i.length,t,r,!0):(n===ie.SCENE2D||n===ie.COLUMBUS_VIEW)&&kj(e,o,e._billboardsToUpdateIndex,t,r,!1)}function vYe(e,t,n){let i=1;(!e._allSizedInMeters||e._maxPixelOffset!==0)&&(i=t.camera.getPixelSize(n,t.context.drawingBufferWidth,t.context.drawingBufferHeight));let o=i*e._maxScale*e._maxSize*2;e._allHorizontalCenter&&e._allVerticalCenter&&(o*=.5);let r=i*e._maxPixelOffset+e._maxEyeOffset;n.radius+=o+r}function PYe(e,t){let i=t.createViewportQuadCommand(`uniform sampler2D billboard_texture; +in vec2 v_textureCoordinates; +void main() +{ + out_FragColor = texture(billboard_texture, v_textureCoordinates); +} +`,{uniformMap:{billboard_texture:function(){return e.textureAtlas.texture}}});return i.pass=Be.OVERLAY,i}var RYe=[];Wf.prototype.update=function(e){if(Vj(this),!this.show)return;let t=e.context;this._instanced=t.instancedArrays,Co=this._instanced?_Ye:gYe,Oj=this._instanced?CYe:yYe;let n=this._billboards,i=n.length,o=!0;for(let P=0;P<i;++P){let N=n[P];l(N.loadError)&&(console.error(`Error loading image for billboard: ${N.loadError}`),N.image=void 0),N.textureDirty&&this._updateBillboard(N,aE),N.show&&(o=o&&N.ready)}let r=this._textureAtlas;if(e.afterRender.push(()=>{if(!this.isDestroyed())return r.update(e.context)}),!l(r.texture))return;DYe(this,e),n=this._billboards,i=n.length;let s=this._billboardsToUpdate,a=this._billboardsToUpdateIndex,c=this._propertiesChanged,u=r.guid,f=this._createVertexArray||this._textureAtlasGUID!==u;this._textureAtlasGUID=u;let h,A=e.passes,g=A.pick;if(f||!g&&this.computeNewBuffersUsage()){this._createVertexArray=!1;for(let P=0;P<zj;++P)c[P]=0;if(this._vaf=this._vaf&&this._vaf.destroy(),i>0){this._vaf=IYe(t,i,this._buffersUsage,this._instanced,this._batchTable,this._sdf),h=this._vaf.writers;for(let P=0;P<i;++P){let N=this._billboards[P];N._dirty=!1,N.textureDirty=!1,BYe(this,e,h,N)}this._vaf.commit(Oj(t))}this._billboardsToUpdateIndex=0}else if(a>0){let P=RYe;P.length=0,(c[JB]||c[hYe]||c[dYe])&&P.push(Lle),(c[aE]||c[Tle]||c[uYe]||c[fYe]||c[lYe])&&(P.push(Gle),this._instanced&&P.push(Gj)),(c[aE]||c[mYe]||c[Dle])&&(P.push(zle),P.push(Uj)),(c[aE]||c[wle])&&P.push(Uj),(c[aE]||c[Sle])&&P.push(Gj),c[Ble]&&P.push(Vle),c[vle]&&P.push(Hle),(c[Ple]||c[AYe]||c[aE]||c[JB])&&P.push(Wle),(c[aE]||c[JB])&&P.push(jle),c[Rle]&&P.push(Yle),c[Mle]&&P.push(qle);let N=P.length;if(h=this._vaf.writers,a/i>.1){for(let L=0;L<a;++L){let p=s[L];p._dirty=!1,p.textureDirty=!1;for(let x=0;x<N;++x)P[x](this,e,h,p)}this._vaf.commit(Oj(t))}else{for(let L=0;L<a;++L){let p=s[L];p._dirty=!1,p.textureDirty=!1;for(let x=0;x<N;++x)P[x](this,e,h,p);this._instanced?this._vaf.subCommit(p._index,1):this._vaf.subCommit(p._index*4,4)}this._vaf.endSubCommits()}this._billboardsToUpdateIndex=0}if(a>i*1.5&&(s.length=i),!l(this._vaf)||!l(this._vaf.va))return;this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,le.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));let m,_=R.IDENTITY;e.mode===ie.SCENE3D?(_=this.modelMatrix,m=le.clone(this._baseVolumeWC,this._boundingVolume)):m=le.clone(this._baseVolume2D,this._boundingVolume),vYe(this,e,m);let y=this._blendOption!==this.blendOption;if(this._blendOption=this.blendOption,y){this._blendOption===Vo.OPAQUE||this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT?this._rsOpaque=Ue.fromCache({depthTest:{enabled:!0,func:ee.LESS},depthMask:!0}):this._rsOpaque=void 0;let P=this._blendOption===Vo.TRANSLUCENT;this._blendOption===Vo.TRANSLUCENT||this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT?this._rsTranslucent=Ue.fromCache({depthTest:{enabled:!0,func:P?ee.LEQUAL:ee.LESS},depthMask:P,blending:pn.ALPHA_BLEND}):this._rsTranslucent=void 0}this._shaderDisableDepthDistance=this._shaderDisableDepthDistance||e.minimumDisableDepthTestDistance!==0;let C,E,I,b,S,B=qt.maximumVertexTextureImageUnits>0;if(y||this._shaderRotation!==this._compiledShaderRotation||this._shaderAlignedAxis!==this._compiledShaderAlignedAxis||this._shaderScaleByDistance!==this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance!==this._compiledShaderTranslucencyByDistance||this._shaderPixelOffsetScaleByDistance!==this._compiledShaderPixelOffsetScaleByDistance||this._shaderDistanceDisplayCondition!==this._compiledShaderDistanceDisplayCondition||this._shaderDisableDepthDistance!==this._compiledShaderDisableDepthDistance||this._shaderClampToGround!==this._compiledShaderClampToGround||this._sdf!==this._compiledSDF){C=tk,E=ek,S=[],l(this._batchTable)&&(S.push("VECTOR_TILE"),C=this._batchTable.getVertexShaderCallback(!1,"a_batchId",void 0)(C),E=this._batchTable.getFragmentShaderCallback(!1,void 0)(E)),I=new We({defines:S,sources:[C]}),this._instanced&&I.defines.push("INSTANCED"),this._shaderRotation&&I.defines.push("ROTATION"),this._shaderAlignedAxis&&I.defines.push("ALIGNED_AXIS"),this._shaderScaleByDistance&&I.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&I.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderPixelOffsetScaleByDistance&&I.defines.push("EYE_DISTANCE_PIXEL_OFFSET"),this._shaderDistanceDisplayCondition&&I.defines.push("DISTANCE_DISPLAY_CONDITION"),this._shaderDisableDepthDistance&&I.defines.push("DISABLE_DEPTH_DISTANCE"),this._shaderClampToGround&&(B?I.defines.push("VERTEX_DEPTH_CHECK"):I.defines.push("FRAGMENT_DEPTH_CHECK"));let P=1-Pa.CUTOFF;this._sdf&&I.defines.push("SDF");let N=l(this._batchTable)?"VECTOR_TILE":"";this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT&&(b=new We({defines:["OPAQUE",N],sources:[E]}),this._shaderClampToGround&&(B?b.defines.push("VERTEX_DEPTH_CHECK"):b.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(b.defines.push("SDF"),b.defines.push(`SDF_EDGE ${P}`)),this._sp=ln.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:I,fragmentShaderSource:b,attributeLocations:Co}),b=new We({defines:["TRANSLUCENT",N],sources:[E]}),this._shaderClampToGround&&(B?b.defines.push("VERTEX_DEPTH_CHECK"):b.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(b.defines.push("SDF"),b.defines.push(`SDF_EDGE ${P}`)),this._spTranslucent=ln.replaceCache({context:t,shaderProgram:this._spTranslucent,vertexShaderSource:I,fragmentShaderSource:b,attributeLocations:Co})),this._blendOption===Vo.OPAQUE&&(b=new We({defines:[N],sources:[E]}),this._shaderClampToGround&&(B?b.defines.push("VERTEX_DEPTH_CHECK"):b.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(b.defines.push("SDF"),b.defines.push(`SDF_EDGE ${P}`)),this._sp=ln.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:I,fragmentShaderSource:b,attributeLocations:Co})),this._blendOption===Vo.TRANSLUCENT&&(b=new We({defines:[N],sources:[E]}),this._shaderClampToGround&&(B?b.defines.push("VERTEX_DEPTH_CHECK"):b.defines.push("FRAGMENT_DEPTH_CHECK")),this._sdf&&(b.defines.push("SDF"),b.defines.push(`SDF_EDGE ${P}`)),this._spTranslucent=ln.replaceCache({context:t,shaderProgram:this._spTranslucent,vertexShaderSource:I,fragmentShaderSource:b,attributeLocations:Co})),this._compiledShaderRotation=this._shaderRotation,this._compiledShaderAlignedAxis=this._shaderAlignedAxis,this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderPixelOffsetScaleByDistance=this._shaderPixelOffsetScaleByDistance,this._compiledShaderDistanceDisplayCondition=this._shaderDistanceDisplayCondition,this._compiledShaderDisableDepthDistance=this._shaderDisableDepthDistance,this._compiledShaderClampToGround=this._shaderClampToGround,this._compiledSDF=this._sdf}let v=e.commandList;if(A.render||A.pick){let P=this._colorCommands,N=this._blendOption===Vo.OPAQUE,L=this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT,p=this._vaf.va,x=p.length,T=this._uniforms,w;l(this._batchTable)?(T=this._batchTable.getUniformMapCallback()(T),w=this._batchTable.getPickId()):w="v_pickColor",P.length=x;let M=L?x*2:x;for(let O=0;O<M;++O){let U=P[O];l(U)||(U=P[O]=new nt);let Q=N||L&&O%2===0;U.pass=Q||!L?Be.OPAQUE:Be.TRANSLUCENT,U.owner=this;let z=L?Math.floor(O/2):O;U.boundingVolume=m,U.modelMatrix=_,U.count=p[z].indicesCount,U.shaderProgram=Q?this._sp:this._spTranslucent,U.uniformMap=T,U.vertexArray=p[z].va,U.renderState=Q?this._rsOpaque:this._rsTranslucent,U.debugShowBoundingVolume=this.debugShowBoundingVolume,U.pickId=w,this._instanced&&(U.count=6,U.instanceCount=i),v.push(U)}this.debugShowTextureAtlas&&(l(this.debugCommand)||(this.debugCommand=PYe(this,e.context)),v.push(this.debugCommand))}this._allBillboardsReady=o};Wf.prototype.isDestroyed=function(){return!1};Wf.prototype.destroy=function(){return l(this._removeCallbackFunc)&&(this._removeCallbackFunc(),this._removeCallbackFunc=void 0),this._textureAtlas=this._destroyTextureAtlas&&this._textureAtlas&&this._textureAtlas.destroy(),this._sp=this._sp&&this._sp.destroy(),this._spTranslucent=this._spTranslucent&&this._spTranslucent.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),Nle(this._billboards),ue(this)};var jf=Wf;function MYe(e,t,n,i,o){return function(){let r=document.createElement("canvas"),s=o+2*i;r.height=r.width=s;let a=r.getContext("2d");return a.clearRect(0,0,s,s),i!==0&&(a.beginPath(),a.arc(s/2,s/2,s/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle=n,a.fill(),e<1&&(a.save(),a.globalCompositeOperation="destination-out",a.beginPath(),a.arc(s/2,s/2,o/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle="black",a.fill(),a.restore())),a.beginPath(),a.arc(s/2,s/2,o/2,0,2*Math.PI,!0),a.closePath(),a.fillStyle=t,a.fill(),r}}var Hx=MYe;function Ra(e,t,n,i,o){this._content=e,this._billboard=n,this._label=i,this._polyline=o,this._batchId=t,this._billboardImage=void 0,this._billboardColor=void 0,this._billboardOutlineColor=void 0,this._billboardOutlineWidth=void 0,this._billboardSize=void 0,this._pointSize=void 0,this._color=void 0,this._pointSize=void 0,this._pointOutlineColor=void 0,this._pointOutlineWidth=void 0,this._heightOffset=void 0,this._pickIds=new Array(3),Wx(this)}var NYe=new Ae;Object.defineProperties(Ra.prototype,{show:{get:function(){return this._label.show},set:function(e){this._label.show=e,this._billboard.show=e,this._polyline.show=e}},color:{get:function(){return this._color},set:function(e){this._color=G.clone(e,this._color),Wx(this)}},pointSize:{get:function(){return this._pointSize},set:function(e){this._pointSize=e,Wx(this)}},pointOutlineColor:{get:function(){return this._pointOutlineColor},set:function(e){this._pointOutlineColor=G.clone(e,this._pointOutlineColor),Wx(this)}},pointOutlineWidth:{get:function(){return this._pointOutlineWidth},set:function(e){this._pointOutlineWidth=e,Wx(this)}},labelColor:{get:function(){return this._label.fillColor},set:function(e){this._label.fillColor=e,this._polyline.show=this._label.show&&e.alpha>0}},labelOutlineColor:{get:function(){return this._label.outlineColor},set:function(e){this._label.outlineColor=e}},labelOutlineWidth:{get:function(){return this._label.outlineWidth},set:function(e){this._label.outlineWidth=e}},font:{get:function(){return this._label.font},set:function(e){this._label.font=e}},labelStyle:{get:function(){return this._label.style},set:function(e){this._label.style=e}},labelText:{get:function(){return this._label.text},set:function(e){l(e)||(e=""),this._label.text=e}},backgroundColor:{get:function(){return this._label.backgroundColor},set:function(e){this._label.backgroundColor=e}},backgroundPadding:{get:function(){return this._label.backgroundPadding},set:function(e){this._label.backgroundPadding=e}},backgroundEnabled:{get:function(){return this._label.showBackground},set:function(e){this._label.showBackground=e}},scaleByDistance:{get:function(){return this._label.scaleByDistance},set:function(e){this._label.scaleByDistance=e,this._billboard.scaleByDistance=e}},translucencyByDistance:{get:function(){return this._label.translucencyByDistance},set:function(e){this._label.translucencyByDistance=e,this._billboard.translucencyByDistance=e}},distanceDisplayCondition:{get:function(){return this._label.distanceDisplayCondition},set:function(e){this._label.distanceDisplayCondition=e,this._polyline.distanceDisplayCondition=e,this._billboard.distanceDisplayCondition=e}},heightOffset:{get:function(){return this._heightOffset},set:function(e){let t=this._heightOffset??0,n=this._content.tileset.ellipsoid,i=n.cartesianToCartographic(this._billboard.position,NYe);i.height=i.height-t+e;let o=n.cartographicToCartesian(i);this._billboard.position=o,this._label.position=this._billboard.position,this._polyline.positions=[this._polyline.positions[0],o],this._heightOffset=e}},anchorLineEnabled:{get:function(){return this._polyline.show},set:function(e){this._polyline.show=e}},anchorLineColor:{get:function(){return this._polyline.material.uniforms.color},set:function(e){this._polyline.material.uniforms.color=G.clone(e,this._polyline.material.uniforms.color)}},image:{get:function(){return this._billboardImage},set:function(e){let t=this._billboardImage!==e;this._billboardImage=e,t&&Wx(this)}},disableDepthTestDistance:{get:function(){return this._label.disableDepthTestDistance},set:function(e){this._label.disableDepthTestDistance=e,this._billboard.disableDepthTestDistance=e}},horizontalOrigin:{get:function(){return this._billboard.horizontalOrigin},set:function(e){this._billboard.horizontalOrigin=e}},verticalOrigin:{get:function(){return this._billboard.verticalOrigin},set:function(e){this._billboard.verticalOrigin=e}},labelHorizontalOrigin:{get:function(){return this._label.horizontalOrigin},set:function(e){this._label.horizontalOrigin=e}},labelVerticalOrigin:{get:function(){return this._label.verticalOrigin},set:function(e){this._label.verticalOrigin=e}},content:{get:function(){return this._content}},tileset:{get:function(){return this._content.tileset}},primitive:{get:function(){return this._content.tileset}},pickIds:{get:function(){let e=this._pickIds;return e[0]=this._billboard.pickId,e[1]=this._label.pickId,e[2]=this._polyline.pickId,e}}});Ra.defaultColor=G.WHITE;Ra.defaultPointOutlineColor=G.BLACK;Ra.defaultPointOutlineWidth=0;Ra.defaultPointSize=8;function Wx(e){let t=e._billboard;if(l(e._billboardImage)&&e._billboardImage!==t.image){t.image=e._billboardImage;return}if(l(e._billboardImage))return;let n=e._color??Ra.defaultColor,i=e._pointOutlineColor??Ra.defaultPointOutlineColor,o=e._pointOutlineWidth??Ra.defaultPointOutlineWidth,r=e._pointSize??Ra.defaultPointSize,s=e._billboardColor,a=e._billboardOutlineColor,c=e._billboardOutlineWidth,u=e._billboardSize;if(G.equals(n,s)&&G.equals(i,a)&&o===c&&r===u)return;e._billboardColor=G.clone(n,e._billboardColor),e._billboardOutlineColor=G.clone(i,e._billboardOutlineColor),e._billboardOutlineWidth=o,e._billboardSize=r;let f=n.alpha,h=n.toCssColorString(),A=i.toCssColorString(),g=JSON.stringify([h,r,A,o]);t.setImage(g,Hx(f,h,A,o,r))}Ra.prototype.hasProperty=function(e){return this._content.batchTable.hasProperty(this._batchId,e)};Ra.prototype.getPropertyIds=function(e){return this._content.batchTable.getPropertyIds(this._batchId,e)};Ra.prototype.getProperty=function(e){return this._content.batchTable.getProperty(this._batchId,e)};Ra.prototype.getPropertyInherited=function(e){return Sa.getPropertyInherited(this._content,this._batchId,e)};Ra.prototype.setProperty=function(e,t){this._content.batchTable.setProperty(this._batchId,e,t),this._content.featurePropertiesDirty=!0};Ra.prototype.isExactClass=function(e){return this._content.batchTable.isExactClass(this._batchId,e)};Ra.prototype.isClass=function(e){return this._content.batchTable.isClass(this._batchId,e)};Ra.prototype.getExactClassName=function(){return this._content.batchTable.getExactClassName(this._batchId)};var B_=Ra;function LYe(e,t,n,i,o){let r=e.measureText(t);if(!!/\S/.test(t)){let a=document.defaultView.getComputedStyle(e.canvas).getPropertyValue("font-size").replace("px",""),c=document.createElement("canvas"),u=100,f=r.width+u|0,h=3*a,A=h/2;c.width=f,c.height=h;let g=c.getContext("2d");g.font=n,g.fillStyle="white",g.fillRect(0,0,c.width+1,c.height+1),i&&(g.strokeStyle="black",g.lineWidth=e.lineWidth,g.strokeText(t,u/2,A)),o&&(g.fillStyle="black",g.fillText(t,u/2,A));let m=g.getImageData(0,0,f,h).data,_=m.length,y=f*4,C,E,I,b;for(C=0;C<_;++C)if(m[C]!==255){I=C/y|0;break}for(C=_-1;C>=0;--C)if(m[C]!==255){b=C/y|0;break}let S=-1;for(C=0;C<f&&S===-1;++C)for(E=0;E<h;++E){let B=C*4+E*y;if(m[B]!==255||m[B+1]!==255||m[B+2]!==255||m[B+3]!==255){S=C;break}}return{width:r.width,height:b-I,ascent:A-I,descent:b-A,minx:S-u/2}}return{width:r.width,height:0,ascent:0,descent:0,minx:0}}var cE;function OYe(e,t){if(e==="")return;t=t??V.EMPTY_OBJECT;let n=t.font??"10px sans-serif",i=t.stroke??!1,o=t.fill??!0,r=t.strokeWidth??1,s=t.backgroundColor??G.TRANSPARENT,a=t.padding??0,c=a*2,u=document.createElement("canvas");u.width=1,u.height=1,u.style.font=n;let f=u.getContext("2d",{willReadFrequently:!0});l(cE)||(l(f.imageSmoothingEnabled)?cE="imageSmoothingEnabled":l(f.mozImageSmoothingEnabled)?cE="mozImageSmoothingEnabled":l(f.webkitImageSmoothingEnabled)?cE="webkitImageSmoothingEnabled":l(f.msImageSmoothingEnabled)&&(cE="msImageSmoothingEnabled")),f.font=n,f.lineJoin="round",f.lineWidth=r,f[cE]=!1,u.style.visibility="hidden",document.body.appendChild(u);let h=LYe(f,e,n,i,o);u.dimensions=h,document.body.removeChild(u),u.style.visibility="";let A=-h.minx,g=Math.ceil(h.width)+A+c,m=h.height+c,_=m-h.ascent+a,y=m-_+c;if(u.width=g,u.height=m,f.font=n,f.lineJoin="round",f.lineWidth=r,f[cE]=!1,s!==G.TRANSPARENT&&(f.fillStyle=s.toCssColorString(),f.fillRect(0,0,u.width,u.height)),i){let C=t.strokeColor??G.BLACK;f.strokeStyle=C.toCssColorString(),f.strokeText(e,A+a,y)}if(o){let C=t.fillColor??G.WHITE;f.fillStyle=C.toCssColorString(),f.fillText(e,A+a,y)}return u}var jx=OYe;var sue=Es(Zle(),1);var QYe={FILL:0,OUTLINE:1,FILL_AND_OUTLINE:2},ar=Object.freeze(QYe);var $le={},eue=0,kYe=256,UYe=new G(.165,.165,.165,.8),GYe=new k(7,5),vs=Object.freeze({LTR:0,RTL:1,WEAK:2,BRACKETS:3});function lE(e){!e._rebindAllGlyphs&&!e._repositionAllGlyphs&&e._labelCollection._labelsToUpdate.push(e),e._rebindAllGlyphs=!0}function $B(e){!e._rebindAllGlyphs&&!e._repositionAllGlyphs&&e._labelCollection._labelsToUpdate.push(e),e._repositionAllGlyphs=!0}function eD(e,t){return document.defaultView.getComputedStyle(e,null).getPropertyValue(t)}function nue(e){let t=$le[e._font];if(!l(t)){let n=document.createElement("div");n.style.position="absolute",n.style.opacity=0,n.style.font=e._font,document.body.appendChild(n);let i=parseFloat(eD(n,"line-height"));isNaN(i)&&(i=void 0),t={family:eD(n,"font-family"),size:eD(n,"font-size").replace("px",""),style:eD(n,"font-style"),weight:eD(n,"font-weight"),lineHeight:i},document.body.removeChild(n),eue<kYe&&($le[e._font]=t,eue++)}e._fontFamily=t.family,e._fontSize=t.size,e._fontStyle=t.style,e._fontWeight=t.weight,e._lineHeight=t.lineHeight}function Zd(e,t){e=e??V.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.pixelOffsetScaleByDistance,o=e.scaleByDistance,r=e.distanceDisplayCondition;l(n)&&(n=Yt.clone(n)),l(i)&&(i=Yt.clone(i)),l(o)&&(o=Yt.clone(o)),l(r)&&(r=Ut.clone(r)),this._renderedText=void 0,this._text=void 0,this._show=e.show??!0,this._font=e.font??"30px sans-serif",this._fillColor=G.clone(e.fillColor??G.WHITE),this._outlineColor=G.clone(e.outlineColor??G.BLACK),this._outlineWidth=e.outlineWidth??1,this._showBackground=e.showBackground??!1,this._backgroundColor=G.clone(e.backgroundColor??UYe),this._backgroundPadding=k.clone(e.backgroundPadding??GYe),this._style=e.style??ar.FILL,this._verticalOrigin=e.verticalOrigin??Wn.BASELINE,this._horizontalOrigin=e.horizontalOrigin??Ri.LEFT,this._pixelOffset=k.clone(e.pixelOffset??k.ZERO),this._eyeOffset=d.clone(e.eyeOffset??d.ZERO),this._position=d.clone(e.position??d.ZERO),this._scale=e.scale??1,this._id=e.id,this._translucencyByDistance=n,this._pixelOffsetScaleByDistance=i,this._scaleByDistance=o,this._heightReference=e.heightReference??Ze.NONE,this._distanceDisplayCondition=r,this._disableDepthTestDistance=e.disableDepthTestDistance,this._labelCollection=t,this._glyphs=[],this._backgroundBillboard=void 0,this._batchIndex=void 0,this._rebindAllGlyphs=!0,this._repositionAllGlyphs=!0,this._actualClampedPosition=void 0,this._removeCallbackFunc=void 0,this._mode=void 0,this._clusterShow=!0,this.text=e.text??"",this._relativeSize=1,nue(this),this._updateClamping()}Object.defineProperties(Zd.prototype,{show:{get:function(){return this._show},set:function(e){if(this._show!==e){this._show=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i].billboard;l(r)&&(r.show=e)}let n=this._backgroundBillboard;l(n)&&(n.show=e)}}},position:{get:function(){return this._position},set:function(e){let t=this._position;if(!d.equals(t,e)){d.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o].billboard;l(s)&&(s.position=e)}let i=this._backgroundBillboard;l(i)&&(i.position=e),this._updateClamping()}}},heightReference:{get:function(){return this._heightReference},set:function(e){if(e!==this._heightReference){this._heightReference=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i].billboard;l(r)&&(r.heightReference=e)}let n=this._backgroundBillboard;l(n)&&(n.heightReference=e),$B(this),this._updateClamping()}}},text:{get:function(){return this._text},set:function(e){if(this._text!==e){this._text=e;let t=Zd.filterUnsupportedCharacters(e);this._renderedText=Zd.enableRightToLeftDetection?YYe(t):t,lE(this)}}},font:{get:function(){return this._font},set:function(e){this._font!==e&&(this._font=e,lE(this),nue(this))}},fillColor:{get:function(){return this._fillColor},set:function(e){let t=this._fillColor;G.equals(t,e)||(G.clone(e,t),lE(this))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;G.equals(t,e)||(G.clone(e,t),lE(this))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,lE(this))}},showBackground:{get:function(){return this._showBackground},set:function(e){this._showBackground!==e&&(this._showBackground=e,lE(this))}},backgroundColor:{get:function(){return this._backgroundColor},set:function(e){let t=this._backgroundColor;if(!G.equals(t,e)){G.clone(e,t);let n=this._backgroundBillboard;l(n)&&(n.color=t)}}},backgroundPadding:{get:function(){return this._backgroundPadding},set:function(e){let t=this._backgroundPadding;k.equals(t,e)||(k.clone(e,t),$B(this))}},style:{get:function(){return this._style},set:function(e){this._style!==e&&(this._style=e,lE(this))}},pixelOffset:{get:function(){return this._pixelOffset},set:function(e){let t=this._pixelOffset;if(!k.equals(t,e)){k.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.pixelOffset=e)}let i=this._backgroundBillboard;l(i)&&(i.pixelOffset=e)}}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;if(!Yt.equals(t,e)){this._translucencyByDistance=Yt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.translucencyByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.translucencyByDistance=e)}}},pixelOffsetScaleByDistance:{get:function(){return this._pixelOffsetScaleByDistance},set:function(e){let t=this._pixelOffsetScaleByDistance;if(!Yt.equals(t,e)){this._pixelOffsetScaleByDistance=Yt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.pixelOffsetScaleByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.pixelOffsetScaleByDistance=e)}}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;if(!Yt.equals(t,e)){this._scaleByDistance=Yt.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.scaleByDistance=e)}let i=this._backgroundBillboard;l(i)&&(i.scaleByDistance=e)}}},eyeOffset:{get:function(){return this._eyeOffset},set:function(e){let t=this._eyeOffset;if(!d.equals(t,e)){d.clone(e,t);let n=this._glyphs;for(let o=0,r=n.length;o<r;o++){let s=n[o];l(s.billboard)&&(s.billboard.eyeOffset=e)}let i=this._backgroundBillboard;l(i)&&(i.eyeOffset=e)}}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin!==e&&(this._horizontalOrigin=e,$B(this))}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){if(this._verticalOrigin!==e){this._verticalOrigin=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.verticalOrigin=e)}let n=this._backgroundBillboard;l(n)&&(n.verticalOrigin=e),$B(this)}}},scale:{get:function(){return this._scale},set:function(e){if(this._scale!==e){this._scale=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.scale=e*this._relativeSize)}let n=this._backgroundBillboard;l(n)&&(n.scale=e*this._relativeSize),$B(this)}}},totalScale:{get:function(){return this._scale*this._relativeSize}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){if(!Ut.equals(e,this._distanceDisplayCondition)){this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition);let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.distanceDisplayCondition=e)}let n=this._backgroundBillboard;l(n)&&(n.distanceDisplayCondition=e)}}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){if(this._disableDepthTestDistance!==e){this._disableDepthTestDistance=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.disableDepthTestDistance=e)}let n=this._backgroundBillboard;l(n)&&(n.disableDepthTestDistance=e)}}},id:{get:function(){return this._id},set:function(e){if(this._id!==e){this._id=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.id=e)}let n=this._backgroundBillboard;l(n)&&(n.id=e)}}},pickId:{get:function(){if(!(this._glyphs.length===0||!l(this._glyphs[0].billboard)))return this._glyphs[0].billboard.pickId}},_clampedPosition:{get:function(){return this._actualClampedPosition},set:function(e){this._actualClampedPosition=d.clone(e,this._actualClampedPosition);let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard._clampedPosition=e)}let n=this._backgroundBillboard;l(n)&&(n._clampedPosition=e)}},clusterShow:{get:function(){return this._clusterShow},set:function(e){if(this._clusterShow!==e){this._clusterShow=e;let t=this._glyphs;for(let i=0,o=t.length;i<o;i++){let r=t[i];l(r.billboard)&&(r.billboard.clusterShow=e)}let n=this._backgroundBillboard;l(n)&&(n.clusterShow=e)}}}});Zd.prototype._updateClamping=function(){xo._updateClamping(this._labelCollection,this)};Zd.prototype.computeScreenSpacePosition=function(e,t){l(t)||(t=new k);let i=this._labelCollection.modelMatrix,o=l(this._actualClampedPosition)?this._actualClampedPosition:this._position;return xo._computeScreenSpacePosition(i,o,this._eyeOffset,this._pixelOffset,e,t)};Zd.getScreenSpaceBoundingBox=function(e,t,n){let i=0,o=0,r=0,s=0,a=e.totalScale,c=e._backgroundBillboard;if(l(c))i=t.x+c._translate.x,o=t.y-c._translate.y,r=c.width*a,s=c.height*a,e.verticalOrigin===Wn.BOTTOM||e.verticalOrigin===Wn.BASELINE?o-=s:e.verticalOrigin===Wn.CENTER&&(o-=s*.5);else{i=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;let u=0,f=0,h=e._glyphs,A=h.length;for(let g=0;g<A;++g){let m=h[g],_=m.billboard;if(!l(_))continue;let y=t.x+_._translate.x,C=t.y-_._translate.y,E=m.dimensions.width*a,I=m.dimensions.height*a;e.verticalOrigin===Wn.BOTTOM||e.verticalOrigin===Wn.BASELINE?C-=I:e.verticalOrigin===Wn.CENTER&&(C-=I*.5),e._verticalOrigin===Wn.TOP?C+=Pa.PADDING*a:(e._verticalOrigin===Wn.BOTTOM||e._verticalOrigin===Wn.BASELINE)&&(C-=Pa.PADDING*a),i=Math.min(i,y),o=Math.min(o,C),u=Math.max(u,y+E),f=Math.max(f,C+I)}r=u-i,s=f-o}return l(n)||(n=new Xe),n.x=i,n.y=o,n.width=r,n.height=s,n};Zd.filterUnsupportedCharacters=function(e){let t=new RegExp(/[\u0000-\u0008\u000E-\u001F\u00ad\u202a-\u206f\u200b-\u200f]/,"g");return e.replace(t,"")};Zd.prototype.equals=function(e){return this===e||l(e)&&this._show===e._show&&this._scale===e._scale&&this._outlineWidth===e._outlineWidth&&this._showBackground===e._showBackground&&this._style===e._style&&this._verticalOrigin===e._verticalOrigin&&this._horizontalOrigin===e._horizontalOrigin&&this._heightReference===e._heightReference&&this._renderedText===e._renderedText&&this._font===e._font&&d.equals(this._position,e._position)&&G.equals(this._fillColor,e._fillColor)&&G.equals(this._outlineColor,e._outlineColor)&&G.equals(this._backgroundColor,e._backgroundColor)&&k.equals(this._backgroundPadding,e._backgroundPadding)&&k.equals(this._pixelOffset,e._pixelOffset)&&d.equals(this._eyeOffset,e._eyeOffset)&&Yt.equals(this._translucencyByDistance,e._translucencyByDistance)&&Yt.equals(this._pixelOffsetScaleByDistance,e._pixelOffsetScaleByDistance)&&Yt.equals(this._scaleByDistance,e._scaleByDistance)&&Ut.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._id===e._id};Zd.prototype.isDestroyed=function(){return!1};Zd.enableRightToLeftDetection=!1;function zYe(e,t){let n=/[a-zA-Z0-9]/,i=/[()[\]{}<>]/,o=[],r="",s=vs.LTR,a="",c=e.length;for(let u=0;u<c;++u){let f=e.charAt(u);t.test(f)?a=vs.RTL:n.test(f)?a=vs.LTR:i.test(f)?a=vs.BRACKETS:a=vs.WEAK,u===0&&(s=a),s===a&&a!==vs.BRACKETS?r+=f:(r!==""&&o.push({Type:s,Word:r}),s=a,r=f)}return o.push({Type:a,Word:r}),o}function VYe(e){return e.split("").reverse().join("")}function tD(e,t,n){return e.slice(0,t)+n+e.slice(t)}function HYe(e){switch(e){case"(":return")";case")":return"(";case"[":return"]";case"]":return"[";case"{":return"}";case"}":return"{";case"<":return">";case">":return"<"}}var WYe="\u05D0-\u05EA",jYe="\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF",tue=new RegExp(`[${WYe}${jYe}]`);function YYe(e){let t=e.split(` +`),n="";for(let i=0;i<t.length;i++){let o=t[i],r=tue.test(o.charAt(0)),s=zYe(o,tue),a=0,c="";for(let u=0;u<s.length;++u){let f=s[u],h=f.Type===vs.BRACKETS?HYe(f.Word):VYe(f.Word);r?f.Type===vs.RTL?(c=h+c,a=0):f.Type===vs.LTR?(c=tD(c,a,f.Word),a+=f.Word.length):(f.Type===vs.WEAK||f.Type===vs.BRACKETS)&&(f.Type===vs.WEAK&&s[u-1].Type===vs.BRACKETS?c=h+c:s[u-1].Type===vs.RTL?(c=h+c,a=0):s.length>u+1?s[u+1].Type===vs.RTL?(c=h+c,a=0):(c=tD(c,a,f.Word),a+=f.Word.length):c=tD(c,0,h)):f.Type===vs.RTL?c=tD(c,a,h):f.Type===vs.LTR?(c+=f.Word,a=c.length):(f.Type===vs.WEAK||f.Type===vs.BRACKETS)&&(u>0&&s[u-1].Type===vs.RTL?s.length>u+1?s[u+1].Type===vs.RTL?c=tD(c,a,h):(c+=f.Word,a=c.length):c+=f.Word:(c+=f.Word,a=c.length))}n+=c,i<t.length-1&&(n+=` +`)}return n}var uE=Zd;var aue=Es(iue(),1);function KYe(){this.dimensions=void 0,this.billboardTexture=void 0,this.billboard=void 0}var XYe=1.2,oue="ID_WHITE_PIXEL",Wj=new k(4,4),JYe=new Xe(1,1,1,1);function ZYe(e,t){let n=t._backgroundBillboardTexture;if(!n.hasImage){let o=document.createElement("canvas");o.width=Wj.x,o.height=Wj.y;let r=o.getContext("2d");r.fillStyle="#fff",r.fillRect(0,0,o.width,o.height),n.loadImage(oue,o),n.addImageSubRegion(oue,JYe)}let i=e.add({collection:t});return i.setImageTexture(n),i}var mp={};function $Ye(e,t,n,i,o,r){return mp.font=t,mp.fillColor=n,mp.strokeColor=i,mp.strokeWidth=o,mp.padding=Pa.PADDING,mp.fill=r===ar.FILL||r===ar.FILL_AND_OUTLINE,mp.stroke=r===ar.OUTLINE||r===ar.FILL_AND_OUTLINE,mp.backgroundColor=G.BLACK,jx(e,mp)}function jj(e,t){let n=t.billboard;l(n)&&(n.show=!1,l(n._removeCallbackFunc)&&(n._removeCallbackFunc(),n._removeCallbackFunc=void 0),e._spareBillboards.push(n),t.billboard=void 0)}var eqe=new aue.default,tqe=/\s/;function nqe(e,t){let n=t._renderedText,i=eqe.splitGraphemes(n),o=i.length,r=t._glyphs,s=r.length;if(t._relativeSize=t._fontSize/Pa.FONT_SIZE,o<s)for(let g=o;g<s;++g)jj(e,r[g]);r.length=o;let a=t.show&&t._showBackground&&n.split(` +`).join("").length>0,c=t._backgroundBillboard,u=e._backgroundBillboardCollection;a?(l(c)||(c=ZYe(u,e),t._backgroundBillboard=c),c.color=t._backgroundColor,c.show=t._show,c.position=t._position,c.eyeOffset=t._eyeOffset,c.pixelOffset=t._pixelOffset,c.horizontalOrigin=Ri.LEFT,c.verticalOrigin=t._verticalOrigin,c.heightReference=t._heightReference,c.scale=t.totalScale,c.pickPrimitive=t,c.id=t._id,c.translucencyByDistance=t._translucencyByDistance,c.pixelOffsetScaleByDistance=t._pixelOffsetScaleByDistance,c.scaleByDistance=t._scaleByDistance,c.distanceDisplayCondition=t._distanceDisplayCondition,c.disableDepthTestDistance=t._disableDepthTestDistance,c.clusterShow=t.clusterShow):l(c)&&(u.remove(c),t._backgroundBillboard=c=void 0);let f=e._glyphBillboardCollection,h=f.billboardTextureCache,A=e._textDimensionsCache;for(let g=0;g<o;++g){let m=i[g],_=t._verticalOrigin,y=JSON.stringify([m,t._fontFamily,t._fontStyle,t._fontWeight,+_]),C=A[y],E=h.get(y);if(!l(E)||!l(C)){E=new w_(f),h.set(y,E);let B=`${t._fontStyle} ${t._fontWeight} ${Pa.FONT_SIZE}px ${t._fontFamily}`,v=$Ye(m,B,G.WHITE,G.WHITE,0,ar.FILL);if(C=v.dimensions,A[y]=C,v.width>0&&v.height>0&&!tqe.test(m)){let P=(0,sue.default)(v,{cutoff:Pa.CUTOFF,radius:Pa.RADIUS}),N=v.getContext("2d"),L=v.width,p=v.height,x=N.getImageData(0,0,L,p);for(let T=0;T<L;T++)for(let w=0;w<p;w++){let M=w*L+T,O=P[M]*255,U=M*4;x.data[U+0]=O,x.data[U+1]=O,x.data[U+2]=O,x.data[U+3]=O}N.putImageData(x,0,0),E.loadImage(y,v)}}let I=r[g];if(l(I)||(I=new KYe,I.dimensions=C,I.billboardTexture=E,r[g]=I),I.billboardTexture.id!==y&&(I.billboardTexture=E,I.dimensions=C),!E.hasImage){jj(e,I);continue}let b=I.billboard,S=e._spareBillboards;l(b)||(S.length>0?b=S.pop():(b=f.add({collection:e}),b._labelDimensions=new k,b._labelTranslate=new k),I.billboard=b),b.setImageTexture(E),b.show=t._show,b.position=t._position,b.eyeOffset=t._eyeOffset,b.pixelOffset=t._pixelOffset,b.horizontalOrigin=Ri.LEFT,b.verticalOrigin=t._verticalOrigin,b.heightReference=t._heightReference,b.scale=t.totalScale,b.pickPrimitive=t,b.id=t._id,b.translucencyByDistance=t._translucencyByDistance,b.pixelOffsetScaleByDistance=t._pixelOffsetScaleByDistance,b.scaleByDistance=t._scaleByDistance,b.distanceDisplayCondition=t._distanceDisplayCondition,b.disableDepthTestDistance=t._disableDepthTestDistance,b._batchIndex=t._batchIndex,b.outlineColor=t.outlineColor,t.style===ar.FILL_AND_OUTLINE?(b.color=t._fillColor,b.outlineWidth=t.outlineWidth):t.style===ar.FILL?(b.color=t._fillColor,b.outlineWidth=0):t.style===ar.OUTLINE&&(b.color=G.TRANSPARENT,b.outlineWidth=t.outlineWidth)}t._repositionAllGlyphs=!0}function rue(e,t,n){return t===Ri.CENTER?-e/2:t===Ri.RIGHT?-(e+n.x):n.x}var Cr=new k,iqe=new k;function oqe(e){let t=e._glyphs,n=e._renderedText,i=0,o=0,r=[],s=Number.NEGATIVE_INFINITY,a=0,c=1,u=t.length,f=e._backgroundBillboard,h=k.clone(l(f)?e._backgroundPadding:k.ZERO,iqe);h.x/=e._relativeSize,h.y/=e._relativeSize;for(let N=0;N<u;++N){if(n.charAt(N)===` +`){r.push(i),++c,i=0;continue}let p=t[N].dimensions;l(p)&&(a=Math.max(a,p.height-p.descent),s=Math.max(s,p.descent),i+=p.width-p.minx,N<u-1&&(i+=t[N+1].dimensions.minx),o=Math.max(o,i))}r.push(i);let A=a+s,g=e.totalScale,m=e._horizontalOrigin,_=e._verticalOrigin,y=0,C=r[y],E=rue(C,m,h),I=(l(e._lineHeight)?e._lineHeight:XYe*e._fontSize)/e._relativeSize,b=I*(c-1),S=o,B=A+b;l(f)&&(S+=h.x*2,B+=h.y*2,f._labelHorizontalOrigin=m),Cr.x=E*g,Cr.y=0;let v=!0,P=0;for(let N=0;N<u;++N){if(n.charAt(N)===` +`){++y,P+=I,C=r[y],E=rue(C,m,h),Cr.x=E*g,v=!0;continue}let L=t[N],p=L.dimensions;if(l(p)&&(_===Wn.TOP?(Cr.y=p.height-a-h.y,Cr.y+=Pa.PADDING):_===Wn.CENTER?Cr.y=(b+p.height-a)/2:_===Wn.BASELINE?(Cr.y=b,Cr.y-=Pa.PADDING):(Cr.y=b+s+h.y,Cr.y-=Pa.PADDING),Cr.y=(Cr.y-p.descent-P)*g,v&&(Cr.x-=Pa.PADDING*g,v=!1),l(L.billboard)&&(L.billboard._setTranslate(Cr),L.billboard._labelDimensions.x=S,L.billboard._labelDimensions.y=B,L.billboard._labelHorizontalOrigin=m),N<u-1)){let x=t[N+1];Cr.x+=(p.width-p.minx+x.dimensions.minx)*g}}if(l(f)&&n.split(` +`).join("").length>0&&(m===Ri.CENTER?E=-o/2-h.x:m===Ri.RIGHT?E=-(o+h.x*2):E=0,Cr.x=E*g,_===Wn.TOP?Cr.y=A-a-s:_===Wn.CENTER?Cr.y=(A-a)/2-s:_===Wn.BASELINE?Cr.y=-h.y-s:Cr.y=0,Cr.y=Cr.y*g,f.width=S,f.height=B,f._setTranslate(Cr),f._labelTranslate=k.clone(Cr,f._labelTranslate)),_f(e.heightReference))for(let N=0;N<u;++N){let p=t[N].billboard;l(p)&&(p._labelTranslate=k.clone(Cr,p._labelTranslate))}}function cue(e,t){let n=t._glyphs;for(let i=0,o=n.length;i<o;++i)jj(e,n[i]);l(t._backgroundBillboard)&&(e._backgroundBillboardCollection.remove(t._backgroundBillboard),t._backgroundBillboard=void 0),t._labelCollection=void 0,l(t._removeCallbackFunc)&&t._removeCallbackFunc(),ue(t)}function Lm(e){e=e??V.EMPTY_OBJECT,this._scene=e.scene,this._batchTable=e.batchTable;let t=new jf({scene:this._scene,textureAtlas:new zx({initialSize:Wj})});this._backgroundBillboardCollection=t,this._backgroundBillboardTexture=new w_(t),this._glyphBillboardCollection=new jf({scene:this._scene,batchTable:this._batchTable}),this._glyphBillboardCollection._sdf=!0,this._spareBillboards=[],this._textDimensionsCache={},this._labels=[],this._labelsToUpdate=[],this._totalGlyphCount=0,this._highlightColor=G.clone(G.WHITE),this.show=e.show??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.blendOption=e.blendOption??Vo.OPAQUE_AND_TRANSLUCENT}Object.defineProperties(Lm.prototype,{length:{get:function(){return this._labels.length}},sizeInBytes:{get:function(){return this._glyphBillboardCollection.sizeInBytes+this._backgroundBillboardCollection.sizeInBytes}},ready:{get:function(){let e=this._backgroundBillboardCollection.get(0);return l(e)&&!e.ready?!1:this._glyphBillboardCollection.ready}}});Lm.prototype.add=function(e){let t=new uE(e,this);return this._labels.push(t),this._labelsToUpdate.push(t),t};Lm.prototype.remove=function(e){if(l(e)&&e._labelCollection===this){let t=this._labels.indexOf(e);if(t!==-1)return this._labels.splice(t,1),cue(this,e),!0}return!1};Lm.prototype.removeAll=function(){let e=this._labels;for(let t=0,n=e.length;t<n;++t)cue(this,e[t]);e.length=0};Lm.prototype.contains=function(e){return l(e)&&e._labelCollection===this};Lm.prototype.get=function(e){return this._labels[e]};Lm.prototype.update=function(e){if(!this.show)return;let t=this._glyphBillboardCollection,n=this._backgroundBillboardCollection;t.modelMatrix=this.modelMatrix,t.debugShowBoundingVolume=this.debugShowBoundingVolume,n.modelMatrix=this.modelMatrix,n.debugShowBoundingVolume=this.debugShowBoundingVolume;let i=this._labelsToUpdate.length;for(let r=0;r<i;++r){let s=this._labelsToUpdate[r];if(s.isDestroyed())continue;let a=s._glyphs.length;s._rebindAllGlyphs&&(nqe(this,s),s._rebindAllGlyphs=!1),s._repositionAllGlyphs&&(oqe(s),s._repositionAllGlyphs=!1);let c=s._glyphs.length-a;this._totalGlyphCount+=c}let o=n.length>0?Vo.TRANSLUCENT:this.blendOption;t.blendOption=o,n.blendOption=o,t._highlightColor=this._highlightColor,n._highlightColor=this._highlightColor,this._labelsToUpdate.length=0,n.update(e),t.update(e)};Lm.prototype.isDestroyed=function(){return!1};Lm.prototype.destroy=function(){return this.removeAll(),this._glyphBillboardCollection=this._glyphBillboardCollection.destroy(),this._backgroundBillboardCollection=this._backgroundBillboardCollection.destroy(),ue(this)};var Ap=Lm;var sk=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec3 position2DHigh; +in vec3 position2DLow; +in vec3 prevPosition3DHigh; +in vec3 prevPosition3DLow; +in vec3 prevPosition2DHigh; +in vec3 prevPosition2DLow; +in vec3 nextPosition3DHigh; +in vec3 nextPosition3DLow; +in vec3 nextPosition2DHigh; +in vec3 nextPosition2DLow; +in vec4 texCoordExpandAndBatchIndex; + +out vec2 v_st; +out float v_width; +out vec4 v_pickColor; +out float v_polylineAngle; + +void main() +{ + float texCoord = texCoordExpandAndBatchIndex.x; + float expandDir = texCoordExpandAndBatchIndex.y; + bool usePrev = texCoordExpandAndBatchIndex.z < 0.0; + float batchTableIndex = texCoordExpandAndBatchIndex.w; + + vec2 widthAndShow = batchTable_getWidthAndShow(batchTableIndex); + float width = widthAndShow.x + 0.5; + float show = widthAndShow.y; + + if (width < 1.0) + { + show = 0.0; + } + + vec4 pickColor = batchTable_getPickColor(batchTableIndex); + + vec4 p, prev, next; + if (czm_morphTime == 1.0) + { + p = czm_translateRelativeToEye(position3DHigh.xyz, position3DLow.xyz); + prev = czm_translateRelativeToEye(prevPosition3DHigh.xyz, prevPosition3DLow.xyz); + next = czm_translateRelativeToEye(nextPosition3DHigh.xyz, nextPosition3DLow.xyz); + } + else if (czm_morphTime == 0.0) + { + p = czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy); + prev = czm_translateRelativeToEye(prevPosition2DHigh.zxy, prevPosition2DLow.zxy); + next = czm_translateRelativeToEye(nextPosition2DHigh.zxy, nextPosition2DLow.zxy); + } + else + { + p = czm_columbusViewMorph( + czm_translateRelativeToEye(position2DHigh.zxy, position2DLow.zxy), + czm_translateRelativeToEye(position3DHigh.xyz, position3DLow.xyz), + czm_morphTime); + prev = czm_columbusViewMorph( + czm_translateRelativeToEye(prevPosition2DHigh.zxy, prevPosition2DLow.zxy), + czm_translateRelativeToEye(prevPosition3DHigh.xyz, prevPosition3DLow.xyz), + czm_morphTime); + next = czm_columbusViewMorph( + czm_translateRelativeToEye(nextPosition2DHigh.zxy, nextPosition2DLow.zxy), + czm_translateRelativeToEye(nextPosition3DHigh.xyz, nextPosition3DLow.xyz), + czm_morphTime); + } + + #ifdef DISTANCE_DISPLAY_CONDITION + vec3 centerHigh = batchTable_getCenterHigh(batchTableIndex); + vec4 centerLowAndRadius = batchTable_getCenterLowAndRadius(batchTableIndex); + vec3 centerLow = centerLowAndRadius.xyz; + float radius = centerLowAndRadius.w; + vec2 distanceDisplayCondition = batchTable_getDistanceDisplayCondition(batchTableIndex); + + float lengthSq; + if (czm_sceneMode == czm_sceneMode2D) + { + lengthSq = czm_eyeHeight2D.y; + } + else + { + vec4 center = czm_translateRelativeToEye(centerHigh.xyz, centerLow.xyz); + lengthSq = max(0.0, dot(center.xyz, center.xyz) - radius * radius); + } + + float nearSq = distanceDisplayCondition.x * distanceDisplayCondition.x; + float farSq = distanceDisplayCondition.y * distanceDisplayCondition.y; + if (lengthSq < nearSq || lengthSq > farSq) + { + show = 0.0; + } + #endif + + float polylineAngle; + vec4 positionWC = getPolylineWindowCoordinates(p, prev, next, expandDir, width, usePrev, polylineAngle); + gl_Position = czm_viewportOrthographic * positionWC * show; + + v_st.s = texCoord; + v_st.t = czm_writeNonPerspective(clamp(expandDir, 0.0, 1.0), gl_Position.w); + + v_width = width; + v_pickColor = pickColor; + v_polylineAngle = polylineAngle; +} +`;var hl={};hl.numberOfPoints=function(e,t,n){let i=d.distance(e,t);return Math.ceil(i/n)};hl.numberOfPointsRhumbLine=function(e,t,n){let i=Math.pow(e.longitude-t.longitude,2)+Math.pow(e.latitude-t.latitude,2);return Math.max(1,Math.ceil(Math.sqrt(i/(n*n))))};var rqe=new Ae;hl.extractHeights=function(e,t){let n=e.length,i=new Array(n);for(let o=0;o<n;o++){let r=e[o];i[o]=t.cartesianToCartographic(r,rqe).height}return i};var sqe=new R,aqe=new d,lue=new d,cqe=new mn(d.UNIT_X,0),uue=new d,lqe=new mn(d.UNIT_X,0),uqe=new d,fqe=new d,qj=[];function due(e,t,n){let i=qj;i.length=e;let o;if(t===n){for(o=0;o<e;o++)i[o]=t;return i}let s=(n-t)/e;for(o=0;o<e;o++){let a=t+o*s;i[o]=a}return i}var ck=new Ae,ak=new Ae,D_=new d,Kj=new d,dqe=new d,Yj=new Sg,nD=new Ic;function hqe(e,t,n,i,o,r,s,a){let c=i.scaleToGeodeticSurface(e,Kj),u=i.scaleToGeodeticSurface(t,dqe),f=hl.numberOfPoints(e,t,n),h=i.cartesianToCartographic(c,ck),A=i.cartesianToCartographic(u,ak),g=due(f,o,r);Yj.setEndPoints(h,A);let m=Yj.surfaceDistance/f,_=a;h.height=o;let y=i.cartographicToCartesian(h,D_);d.pack(y,s,_),_+=3;for(let C=1;C<f;C++){let E=Yj.interpolateUsingSurfaceDistance(C*m,ak);E.height=g[C],y=i.cartographicToCartesian(E,D_),d.pack(y,s,_),_+=3}return _}function mqe(e,t,n,i,o,r,s,a){let c=i.cartesianToCartographic(e,ck),u=i.cartesianToCartographic(t,ak),f=hl.numberOfPointsRhumbLine(c,u,n);c.height=0,u.height=0;let h=due(f,o,r);nD.ellipsoid.equals(i)||(nD=new Ic(void 0,void 0,i)),nD.setEndPoints(c,u);let A=nD.surfaceDistance/f,g=a;c.height=o;let m=i.cartographicToCartesian(c,D_);d.pack(m,s,g),g+=3;for(let _=1;_<f;_++){let y=nD.interpolateUsingSurfaceDistance(_*A,ak);y.height=h[_],m=i.cartographicToCartesian(y,D_),d.pack(m,s,g),g+=3}return g}hl.wrapLongitude=function(e,t){let n=[],i=[];if(l(e)&&e.length>0){t=t??R.IDENTITY;let o=R.inverseTransformation(t,sqe),r=R.multiplyByPoint(o,d.ZERO,aqe),s=d.normalize(R.multiplyByPointAsVector(o,d.UNIT_Y,lue),lue),a=mn.fromPointNormal(r,s,cqe),c=d.normalize(R.multiplyByPointAsVector(o,d.UNIT_X,uue),uue),u=mn.fromPointNormal(r,c,lqe),f=1;n.push(d.clone(e[0]));let h=n[0],A=e.length;for(let g=1;g<A;++g){let m=e[g];if(mn.getPointDistance(u,h)<0||mn.getPointDistance(u,m)<0){let _=Ai.lineSegmentPlane(h,m,a,uqe);if(l(_)){let y=d.multiplyByScalar(s,5e-9,fqe);mn.getPointDistance(a,h)<0&&d.negate(y,y),n.push(d.add(_,y,new d)),i.push(f+1),d.negate(y,y),n.push(d.add(_,y,new d)),f=1}}n.push(d.clone(e[g])),f++,h=m}i.push(f)}return{positions:n,lengths:i}};hl.generateArc=function(e){l(e)||(e={});let t=e.positions,n=t.length,i=e.ellipsoid??te.default,o=e.height??0,r=Array.isArray(o);if(n<1)return[];if(n===1){let _=i.scaleToGeodeticSurface(t[0],Kj);if(o=r?o[0]:o,o!==0){let y=i.geodeticSurfaceNormal(_,D_);d.multiplyByScalar(y,o,y),d.add(_,y,_)}return[_.x,_.y,_.z]}let s=e.minDistance;if(!l(s)){let _=e.granularity??D.RADIANS_PER_DEGREE;s=D.chordLength(_,i.maximumRadius)}let a=0,c;for(c=0;c<n-1;c++)a+=hl.numberOfPoints(t[c],t[c+1],s);let u=(a+1)*3,f=new Array(u),h=0;for(c=0;c<n-1;c++){let _=t[c],y=t[c+1],C=r?o[c]:o,E=r?o[c+1]:o;h=hqe(_,y,s,i,C,E,f,h)}qj.length=0;let A=t[n-1],g=i.cartesianToCartographic(A,ck);g.height=r?o[n-1]:o;let m=i.cartographicToCartesian(g,D_);return d.pack(m,f,u-3),f};var fue=new Ae,Aqe=new Ae;hl.generateRhumbArc=function(e){l(e)||(e={});let t=e.positions,n=t.length,i=e.ellipsoid??te.default,o=e.height??0,r=Array.isArray(o);if(n<1)return[];if(n===1){let C=i.scaleToGeodeticSurface(t[0],Kj);if(o=r?o[0]:o,o!==0){let E=i.geodeticSurfaceNormal(C,D_);d.multiplyByScalar(E,o,E),d.add(C,E,C)}return[C.x,C.y,C.z]}let s=e.granularity??D.RADIANS_PER_DEGREE,a=0,c,u=i.cartesianToCartographic(t[0],fue),f;for(c=0;c<n-1;c++)f=i.cartesianToCartographic(t[c+1],Aqe),a+=hl.numberOfPointsRhumbLine(u,f,s),u=Ae.clone(f,fue);let h=(a+1)*3,A=new Array(h),g=0;for(c=0;c<n-1;c++){let C=t[c],E=t[c+1],I=r?o[c]:o,b=r?o[c+1]:o;g=mqe(C,E,s,i,I,b,A,g)}qj.length=0;let m=t[n-1],_=i.cartesianToCartographic(m,ck);_.height=r?o[n-1]:o;let y=i.cartographicToCartesian(_,D_);return d.pack(y,A,h-3),A};hl.generateCartesianArc=function(e){let t=hl.generateArc(e),n=t.length/3,i=new Array(n);for(let o=0;o<n;o++)i[o]=d.unpack(t,o*3);return i};hl.generateCartesianRhumbArc=function(e){let t=hl.generateRhumbArc(e),n=t.length/3,i=new Array(n);for(let o=0;o<n;o++)i[o]=d.unpack(t,o*3);return i};var Xi=hl;function Mu(e,t){e=e??V.EMPTY_OBJECT,this._show=e.show??!0,this._width=e.width??1,this._loop=e.loop??!1,this._distanceDisplayCondition=e.distanceDisplayCondition,this._material=e.material,l(this._material)||(this._material=ao.fromType(ao.ColorType,{color:new G(1,1,1,1)}));let n=e.positions;l(n)||(n=[]),this._positions=n,this._actualPositions=No(n,d.equalsEpsilon),this._loop&&this._actualPositions.length>2&&(this._actualPositions===this._positions&&(this._actualPositions=n.slice()),this._actualPositions.push(d.clone(this._actualPositions[0]))),this._length=this._actualPositions.length,this._id=e.id;let i;l(t)&&(i=R.clone(t.modelMatrix)),this._modelMatrix=i,this._segments=Xi.wrapLongitude(this._actualPositions,i),this._actualLength=void 0,this._propertiesChanged=new Uint32Array(mue),this._polylineCollection=t,this._dirty=!1,this._pickId=void 0,this._boundingVolume=le.fromPoints(this._actualPositions),this._boundingVolumeWC=le.transform(this._boundingVolume,this._modelMatrix),this._boundingVolume2D=new le}var hue=Mu.POSITION_INDEX=0,pqe=Mu.SHOW_INDEX=1,gqe=Mu.WIDTH_INDEX=2,_qe=Mu.MATERIAL_INDEX=3,iD=Mu.POSITION_SIZE_INDEX=4,yqe=Mu.DISTANCE_DISPLAY_CONDITION=5,mue=Mu.NUMBER_OF_PROPERTIES=6;function pp(e,t){++e._propertiesChanged[t];let n=e._polylineCollection;l(n)&&(n._updatePolyline(e,t),e._dirty=!0)}Object.defineProperties(Mu.prototype,{show:{get:function(){return this._show},set:function(e){e!==this._show&&(this._show=e,pp(this,pqe))}},positions:{get:function(){return this._positions},set:function(e){let t=No(e,d.equalsEpsilon);this._loop&&t.length>2&&(t===e&&(t=e.slice()),t.push(d.clone(t[0]))),(this._actualPositions.length!==t.length||this._actualPositions.length!==this._length)&&pp(this,iD),this._positions=e,this._actualPositions=t,this._length=t.length,this._boundingVolume=le.fromPoints(this._actualPositions,this._boundingVolume),this._boundingVolumeWC=le.transform(this._boundingVolume,this._modelMatrix,this._boundingVolumeWC),pp(this,hue),this.update()}},material:{get:function(){return this._material},set:function(e){this._material!==e&&(this._material=e,pp(this,_qe))}},width:{get:function(){return this._width},set:function(e){let t=this._width;e!==t&&(this._width=e,pp(this,gqe))}},loop:{get:function(){return this._loop},set:function(e){if(e!==this._loop){let t=this._actualPositions;e?t.length>2&&!d.equals(t[0],t[t.length-1])&&(t.length===this._positions.length&&(this._actualPositions=t=this._positions.slice()),t.push(d.clone(t[0]))):t.length>2&&d.equals(t[0],t[t.length-1])&&(t.length-1===this._positions.length?this._actualPositions=this._positions:t.pop()),this._loop=e,pp(this,iD)}}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickId:{get:function(){return this._pickId}},isDestroyed:{get:function(){return!l(this._polylineCollection)}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Ut.equals(e,this._distanceDisplayCondition)||(this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition),pp(this,yqe))}}});Mu.prototype.update=function(){let e=R.IDENTITY;l(this._polylineCollection)&&(e=this._polylineCollection.modelMatrix);let t=this._segments.positions.length,n=this._segments.lengths,i=this._propertiesChanged[hue]>0||this._propertiesChanged[iD]>0;if((!R.equals(e,this._modelMatrix)||i)&&(this._segments=Xi.wrapLongitude(this._actualPositions,e),this._boundingVolumeWC=le.transform(this._boundingVolume,e,this._boundingVolumeWC)),this._modelMatrix=R.clone(e,this._modelMatrix),this._segments.positions.length!==t)pp(this,iD);else{let o=n.length;for(let r=0;r<o;++r)if(n[r]!==this._segments.lengths[r]){pp(this,iD);break}}};Mu.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this,collection:this._polylineCollection,id:this._id})),this._pickId};Mu.prototype._clean=function(){this._dirty=!1;let e=this._propertiesChanged;for(let t=0;t<mue-1;++t)e[t]=0};Mu.prototype._destroy=function(){this._pickId=this._pickId&&this._pickId.destroy(),this._material=this._material&&this._material.destroy(),this._polylineCollection=void 0};var $d=Mu;var Cqe=$d.SHOW_INDEX,Eqe=$d.WIDTH_INDEX,Jj=$d.POSITION_INDEX,Iqe=$d.MATERIAL_INDEX,Aue=$d.POSITION_SIZE_INDEX,xqe=$d.DISTANCE_DISPLAY_CONDITION,Iue=$d.NUMBER_OF_PROPERTIES,eu={texCoordExpandAndBatchIndex:0,position3DHigh:1,position3DLow:2,position2DHigh:3,position2DLow:4,prevPosition3DHigh:5,prevPosition3DLow:6,prevPosition2DHigh:7,prevPosition2DLow:8,nextPosition3DHigh:9,nextPosition3DLow:10,nextPosition2DHigh:11,nextPosition2DLow:12};function eh(e){e=e??V.EMPTY_OBJECT,this.show=e.show??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=R.clone(R.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this._opaqueRS=void 0,this._translucentRS=void 0,this._colorCommands=[],this._polylinesUpdated=!1,this._polylinesRemoved=!1,this._createVertexArray=!1,this._propertiesChanged=new Uint32Array(Iue),this._polylines=[],this._polylineBuckets={},this._positionBufferUsage={bufferUsage:Qe.STATIC_DRAW,frameCount:0},this._mode=void 0,this._polylinesToUpdate=[],this._vertexArrays=[],this._positionBuffer=void 0,this._texCoordExpandAndBatchIndexBuffer=void 0,this._batchTable=void 0,this._createBatchTable=!1,this._useHighlightColor=!1,this._highlightColor=G.clone(G.WHITE);let t=this;this._uniformMap={u_highlightColor:function(){return t._highlightColor}}}Object.defineProperties(eh.prototype,{length:{get:function(){return Zj(this),this._polylines.length}}});eh.prototype.add=function(e){let t=new $d(e,this);return t._index=this._polylines.length,this._polylines.push(t),this._createVertexArray=!0,this._createBatchTable=!0,t};eh.prototype.remove=function(e){if(this.contains(e)){if(this._polylinesRemoved=!0,this._createVertexArray=!0,this._createBatchTable=!0,l(e._bucket)){let t=e._bucket;t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy()}return e._destroy(),!0}return!1};eh.prototype.removeAll=function(){$j(this),wue(this),this._polylineBuckets={},this._polylinesRemoved=!1,this._polylines.length=0,this._polylinesToUpdate.length=0,this._createVertexArray=!0};eh.prototype.contains=function(e){return l(e)&&e._polylineCollection===this};eh.prototype.get=function(e){return Zj(this),this._polylines[e]};function bqe(e,t){l(e._batchTable)&&e._batchTable.destroy();let n=[{functionName:"batchTable_getWidthAndShow",componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:2},{functionName:"batchTable_getPickColor",componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:4,normalize:!0},{functionName:"batchTable_getCenterHigh",componentDatatype:q.FLOAT,componentsPerAttribute:3},{functionName:"batchTable_getCenterLowAndRadius",componentDatatype:q.FLOAT,componentsPerAttribute:4},{functionName:"batchTable_getDistanceDisplayCondition",componentDatatype:q.FLOAT,componentsPerAttribute:2}];e._batchTable=new yI(t,n,e._polylines.length)}var xue=new ei,bue=new se,Tue=new k;eh.prototype.update=function(e){if(Zj(this),this._polylines.length===0||!this.show)return;vqe(this,e);let t=e.context,n=e.mapProjection,i,o=this._propertiesChanged;if(this._createBatchTable){if(qt.maximumVertexTextureImageUnits===0)throw new ce("Vertex texture fetch support is required to render polylines. The maximum number of vertex texture image units must be greater than zero.");bqe(this,t),this._createBatchTable=!1}if(this._createVertexArray||Sqe(this))_ue(this,t,n);else if(this._polylinesUpdated){let c=this._polylinesToUpdate;if(this._mode!==ie.SCENE3D){let u=c.length;for(let f=0;f<u;++f)i=c[f],i.update()}if(o[Aue]||o[Iqe])_ue(this,t,n);else{let u=c.length,f=this._polylineBuckets;for(let h=0;h<u;++h){i=c[h],o=i._propertiesChanged;let A=i._bucket,g=0;for(let m in f)if(f.hasOwnProperty(m)){if(f[m]===A){o[Jj]&&A.writeUpdate(g,i,this._positionBuffer,n);break}g+=f[m].lengthOfPositions}if((o[Cqe]||o[Eqe])&&this._batchTable.setBatchedAttribute(i._index,0,new k(i._width,i._show)),this._batchTable.attributes.length>2){if(o[Jj]||o[Aue]){let m=e.mode===ie.SCENE2D?i._boundingVolume2D:i._boundingVolumeWC,_=ei.fromCartesian(m.center,xue),y=se.fromElements(_.low.x,_.low.y,_.low.z,m.radius,bue);this._batchTable.setBatchedAttribute(i._index,2,_.high),this._batchTable.setBatchedAttribute(i._index,3,y)}if(o[xqe]){let m=Tue;m.x=0,m.y=Number.MAX_VALUE;let _=i.distanceDisplayCondition;l(_)&&(m.x=_.near,m.y=_.far),this._batchTable.setBatchedAttribute(i._index,4,m)}}i._clean()}}c.length=0,this._polylinesUpdated=!1}o=this._propertiesChanged;for(let c=0;c<Iue;++c)o[c]=0;let r=R.IDENTITY;e.mode===ie.SCENE3D&&(r=this.modelMatrix);let s=e.passes,a=e.morphTime!==0;if((!l(this._opaqueRS)||this._opaqueRS.depthTest.enabled!==a)&&(this._opaqueRS=Ue.fromCache({depthMask:a,depthTest:{enabled:a}})),(!l(this._translucentRS)||this._translucentRS.depthTest.enabled!==a)&&(this._translucentRS=Ue.fromCache({blending:pn.ALPHA_BLEND,depthMask:!a,depthTest:{enabled:a}})),this._batchTable.update(e),s.render||s.pick){let c=this._colorCommands;Tqe(this,e,c,r)}};var oD=new le,pue=new le;function Tqe(e,t,n,i){let o=t.context,r=t.commandList,s=n.length,a=0,c=!0,u=e._vertexArrays,f=e.debugShowBoundingVolume,A=e._batchTable.getUniformMapCallback(),g=u.length;for(let m=0;m<g;++m){let _=u[m],y=_.buckets,C=y.length;for(let E=0;E<C;++E){let I=y[E],b=I.offset,S=I.bucket.shaderProgram,B=I.bucket.polylines,v=B.length,P,N,L=0,p,x;for(let T=0;T<v;++T){let w=B[T],M=Bqe(w._material);if(M!==P){if(l(P)&&L>0){let z=N.isTranslucent();a>=s?(p=new nt({owner:e}),n.push(p)):p=n[a],++a,x=wt(A(N._uniforms),e._uniformMap),p.boundingVolume=le.clone(oD,p.boundingVolume),p.modelMatrix=i,p.shaderProgram=S,p.vertexArray=_.va,p.renderState=z?e._translucentRS:e._opaqueRS,p.pass=z?Be.TRANSLUCENT:Be.OPAQUE,p.debugShowBoundingVolume=f,p.pickId="v_pickColor",p.uniformMap=x,p.count=L,p.offset=b,b+=L,L=0,c=!0,r.push(p)}N=w._material,N.update(o),P=M}let O=w._locatorBuckets,U=O.length;for(let z=0;z<U;++z){let F=O[z];F.locator===I&&(L+=F.count)}let Q;t.mode===ie.SCENE3D?Q=w._boundingVolumeWC:t.mode===ie.COLUMBUS_VIEW?Q=w._boundingVolume2D:t.mode===ie.SCENE2D?l(w._boundingVolume2D)&&(Q=le.clone(w._boundingVolume2D,pue),Q.center.x=0):l(w._boundingVolumeWC)&&l(w._boundingVolume2D)&&(Q=le.union(w._boundingVolumeWC,w._boundingVolume2D,pue)),c?(c=!1,le.clone(Q,oD)):le.union(Q,oD,oD)}l(P)&&L>0&&(a>=s?(p=new nt({owner:e}),n.push(p)):p=n[a],++a,x=wt(A(N._uniforms),e._uniformMap),p.boundingVolume=le.clone(oD,p.boundingVolume),p.modelMatrix=i,p.shaderProgram=S,p.vertexArray=_.va,p.renderState=N.isTranslucent()?e._translucentRS:e._opaqueRS,p.pass=N.isTranslucent()?Be.TRANSLUCENT:Be.OPAQUE,p.debugShowBoundingVolume=f,p.pickId="v_pickColor",p.uniformMap=x,p.count=L,p.offset=b,c=!0,r.push(p)),P=void 0}}n.length=a}eh.prototype.isDestroyed=function(){return!1};eh.prototype.destroy=function(){return Sue(this),$j(this),wue(this),this._batchTable=this._batchTable&&this._batchTable.destroy(),ue(this)};function Sqe(e){let t=!1,n=e._propertiesChanged,i=e._positionBufferUsage;return n[Jj]?(i.bufferUsage!==Qe.STREAM_DRAW&&(t=!0,i.bufferUsage=Qe.STREAM_DRAW),i.frameCount=100):i.bufferUsage!==Qe.STATIC_DRAW&&(i.frameCount===0?(t=!0,i.bufferUsage=Qe.STATIC_DRAW):i.frameCount--),t}var gue=[0,0,0];function _ue(e,t,n){e._createVertexArray=!1,$j(e),Sue(e),Dqe(e);let i=[[]],o=i[0],r=e._batchTable,s=e._useHighlightColor,a=[0],c=0,u=[[]],f=0,h=e._polylineBuckets,A,g;for(A in h)h.hasOwnProperty(A)&&(g=h[A],g.updateShader(t,r,s),f+=g.lengthOfPositions);if(f>0){let m=e._mode,_=new Float32Array(6*f*3),y=new Float32Array(f*4),C,E=0,I=0,b=0;for(A in h)if(h.hasOwnProperty(A)){g=h[A],g.write(_,y,E,I,b,r,t,n),m===ie.MORPHING&&(l(C)||(C=new Float32Array(6*f*3)),g.writeForMorph(C,E));let x=g.lengthOfPositions;E+=6*x*3,I+=x*4,b+=x*4,c=g.updateIndices(i,a,u,c)}let S=e._positionBufferUsage.bufferUsage,B=Qe.STATIC_DRAW;e._positionBuffer=Et.createVertexBuffer({context:t,typedArray:_,usage:S});let v;l(C)&&(v=Et.createVertexBuffer({context:t,typedArray:C,usage:S})),e._texCoordExpandAndBatchIndexBuffer=Et.createVertexBuffer({context:t,typedArray:y,usage:B});let P=3*Float32Array.BYTES_PER_ELEMENT,N=4*Float32Array.BYTES_PER_ELEMENT,L=0,p=i.length;for(let x=0;x<p;++x)if(o=i[x],o.length>0){let T=new Uint16Array(o),w=Et.createIndexBuffer({context:t,typedArray:T,usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT});L+=a[x];let M=6*(x*(P*D.SIXTY_FOUR_KILOBYTES)-L*P),O=P+M,U=P+O,Q=P+U,z=P+Q,F=P+z,H=x*(N*D.SIXTY_FOUR_KILOBYTES)-L*N,W=[{index:eu.position3DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:M,strideInBytes:6*P},{index:eu.position3DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:O,strideInBytes:6*P},{index:eu.position2DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:M,strideInBytes:6*P},{index:eu.position2DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:O,strideInBytes:6*P},{index:eu.prevPosition3DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:U,strideInBytes:6*P},{index:eu.prevPosition3DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:Q,strideInBytes:6*P},{index:eu.prevPosition2DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:U,strideInBytes:6*P},{index:eu.prevPosition2DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:Q,strideInBytes:6*P},{index:eu.nextPosition3DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:z,strideInBytes:6*P},{index:eu.nextPosition3DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:F,strideInBytes:6*P},{index:eu.nextPosition2DHigh,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:z,strideInBytes:6*P},{index:eu.nextPosition2DLow,componentsPerAttribute:3,componentDatatype:q.FLOAT,offsetInBytes:F,strideInBytes:6*P},{index:eu.texCoordExpandAndBatchIndex,componentsPerAttribute:4,componentDatatype:q.FLOAT,vertexBuffer:e._texCoordExpandAndBatchIndexBuffer,offsetInBytes:H}],Z,Y,$,X;m===ie.SCENE3D?(Y=e._positionBuffer,Z="vertexBuffer",$=gue,X="value"):m===ie.SCENE2D||m===ie.COLUMBUS_VIEW?(Y=gue,Z="value",$=e._positionBuffer,X="vertexBuffer"):(Y=v,Z="vertexBuffer",$=e._positionBuffer,X="vertexBuffer"),W[0][Z]=Y,W[1][Z]=Y,W[2][X]=$,W[3][X]=$,W[4][Z]=Y,W[5][Z]=Y,W[6][X]=$,W[7][X]=$,W[8][Z]=Y,W[9][Z]=Y,W[10][X]=$,W[11][X]=$;let he=new li({context:t,attributes:W,indexBuffer:w});e._vertexArrays.push({va:he,buckets:u[x]})}}}function wqe(e,t){return t instanceof Nt?t.id:t}var lk=[];function Bqe(e){let t=ao._uniformList[e.type],n=t.length;lk.length=2*n;let i=0;for(let o=0;o<n;++o){let r=t[o];lk[i]=r,lk[i+1]=e._uniforms[r](),i+=2}return`${e.type}:${JSON.stringify(lk,wqe)}`}function Dqe(e){let t=e._mode,n=e._modelMatrix,i=e._polylineBuckets={},o=e._polylines,r=o.length;for(let s=0;s<r;++s){let a=o[s];if(a._actualPositions.length>1){a.update();let c=a.material,u=i[c.type];l(u)||(u=i[c.type]=new Om(c,t,n)),u.addPolyline(a)}}}function vqe(e,t){let n=t.mode;(e._mode!==n||!R.equals(e._modelMatrix,e.modelMatrix))&&(e._mode=n,e._modelMatrix=R.clone(e.modelMatrix),e._createVertexArray=!0)}function Zj(e){if(e._polylinesRemoved){e._polylinesRemoved=!1;let t=[],n=[],i=0,o,r=e._polylines.length;for(let s=0;s<r;++s)o=e._polylines[s],o.isDestroyed||(o._index=i++,n.push(o),t.push(o));e._polylines=t,e._polylinesToUpdate=n}}function $j(e){let t=e._polylines,n=t.length;for(let i=0;i<n;++i)if(!t[i].isDestroyed){let o=t[i]._bucket;l(o)&&(o.shaderProgram=o.shaderProgram&&o.shaderProgram.destroy())}}function Sue(e){let t=e._vertexArrays.length;for(let n=0;n<t;++n)e._vertexArrays[n].va.destroy();e._vertexArrays.length=0}eh.prototype._updatePolyline=function(e,t){this._polylinesUpdated=!0,e._dirty||this._polylinesToUpdate.push(e),++this._propertiesChanged[t]};function wue(e){let t=e._polylines,n=t.length;for(let i=0;i<n;++i)t[i].isDestroyed||t[i]._destroy()}function Xj(e,t,n){this.count=e,this.offset=t,this.bucket=n}function Om(e,t,n){this.polylines=[],this.lengthOfPositions=0,this.material=e,this.shaderProgram=void 0,this.mode=t,this.modelMatrix=n}Om.prototype.addPolyline=function(e){this.polylines.push(e),e._actualLength=this.getPolylinePositionsLength(e),this.lengthOfPositions+=e._actualLength,e._bucket=this};Om.prototype.updateShader=function(e,t,n){if(l(this.shaderProgram))return;let i=["DISTANCE_DISPLAY_CONDITION"];n&&i.push("VECTOR_TILE"),this.material.shaderSource.search(/in\s+float\s+v_polylineAngle;/g)!==-1&&i.push("POLYLINE_DASH"),jt.isInternetExplorer()||i.push("CLIP_POLYLINE");let o=new We({defines:i,sources:[`in vec4 v_pickColor; +`,this.material.shaderSource,TI]}),r=t.getVertexShaderCallback()(sk),s=new We({defines:i,sources:[bf,r]});this.shaderProgram=ln.fromCache({context:e,vertexShaderSource:s,fragmentShaderSource:o,attributeLocations:eu})};function Bue(e){return d.dot(d.UNIT_X,e._boundingVolume.center)<0||e._boundingVolume.intersectPlane(mn.ORIGIN_ZX_PLANE)===nn.INTERSECTING}Om.prototype.getPolylinePositionsLength=function(e){let t;if(this.mode===ie.SCENE3D||!Bue(e))return t=e._actualPositions.length,t*4-4;let n=0,i=e._segments.lengths;t=i.length;for(let o=0;o<t;++o)n+=i[o]*4-4;return n};var js=new d,Yf=new d,qf=new d,uk=new d,Pqe=new se,Rqe=new k;Om.prototype.write=function(e,t,n,i,o,r,s,a){let c=this.mode,u=a.ellipsoid.maximumRadius*D.PI,f=this.polylines,h=f.length;for(let A=0;A<h;++A){let g=f[A],m=g.width,_=g.show&&m>0,y=g._index,C=this.getSegments(g,a),E=C.positions,I=C.lengths,b=E.length,S=g.getPickId(s).color,B=0,v=0,P;for(let U=0;U<b;++U){U===0?g._loop?P=E[b-2]:(P=uk,d.subtract(E[0],E[1],P),d.add(E[0],P,P)):P=E[U-1],d.clone(P,Yf),d.clone(E[U],js),U===b-1?g._loop?P=E[1]:(P=uk,d.subtract(E[b-1],E[b-2],P),d.add(E[b-1],P,P)):P=E[U+1],d.clone(P,qf);let Q=I[B];U===v+Q&&(v+=Q,++B);let z=U-v===0,F=U===v+I[B]-1;c===ie.SCENE2D&&(Yf.z=0,js.z=0,qf.z=0),(c===ie.SCENE2D||c===ie.MORPHING)&&(z||F)&&u-Math.abs(js.x)<1&&((js.x<0&&Yf.x>0||js.x>0&&Yf.x<0)&&d.clone(js,Yf),(js.x<0&&qf.x>0||js.x>0&&qf.x<0)&&d.clone(js,qf));let H=z?2:0,W=F?2:4;for(let Z=H;Z<W;++Z){ei.writeElements(js,e,n),ei.writeElements(Yf,e,n+6),ei.writeElements(qf,e,n+12);let Y=Z-2<0?-1:1;t[o]=U/(b-1),t[o+1]=2*(Z%2)-1,t[o+2]=Y,t[o+3]=y,n+=18,o+=4}}let N=Pqe;N.x=G.floatToByte(S.red),N.y=G.floatToByte(S.green),N.z=G.floatToByte(S.blue),N.w=G.floatToByte(S.alpha);let L=Rqe;L.x=m,L.y=_?1:0;let p=c===ie.SCENE2D?g._boundingVolume2D:g._boundingVolumeWC,x=ei.fromCartesian(p.center,xue),T=x.high,w=se.fromElements(x.low.x,x.low.y,x.low.z,p.radius,bue),M=Tue;M.x=0,M.y=Number.MAX_VALUE;let O=g.distanceDisplayCondition;l(O)&&(M.x=O.near,M.y=O.far),r.setBatchedAttribute(y,0,L),r.setBatchedAttribute(y,1,N),r.attributes.length>2&&(r.setBatchedAttribute(y,2,T),r.setBatchedAttribute(y,3,w),r.setBatchedAttribute(y,4,M))}};var Mqe=new d,Nqe=new d,Lqe=new d,yue=new d;Om.prototype.writeForMorph=function(e,t){let n=this.modelMatrix,i=this.polylines,o=i.length;for(let r=0;r<o;++r){let s=i[r],a=s._segments.positions,c=s._segments.lengths,u=a.length,f=0,h=0;for(let A=0;A<u;++A){let g;A===0?s._loop?g=a[u-2]:(g=yue,d.subtract(a[0],a[1],g),d.add(a[0],g,g)):g=a[A-1],g=R.multiplyByPoint(n,g,Nqe);let m=R.multiplyByPoint(n,a[A],Mqe),_;A===u-1?s._loop?_=a[1]:(_=yue,d.subtract(a[u-1],a[u-2],_),d.add(a[u-1],_,_)):_=a[A+1],_=R.multiplyByPoint(n,_,Lqe);let y=c[f];A===h+y&&(h+=y,++f);let C=A-h===0,E=A===h+c[f]-1,I=C?2:0,b=E?2:4;for(let S=I;S<b;++S)ei.writeElements(m,e,t),ei.writeElements(g,e,t+6),ei.writeElements(_,e,t+12),t+=18}}};var Oqe=new Array(1);Om.prototype.updateIndices=function(e,t,n,i){let o=n.length-1,r=new Xj(0,i,this);n[o].push(r);let s=0,a=e[e.length-1],c=0;a.length>0&&(c=a[a.length-1]+1);let u=this.polylines,f=u.length;for(let h=0;h<f;++h){let A=u[h];A._locatorBuckets=[];let g;if(this.mode===ie.SCENE3D){g=Oqe;let _=A._actualPositions.length;if(_>0)g[0]=_;else continue}else g=A._segments.lengths;let m=g.length;if(m>0){let _=0;for(let y=0;y<m;++y){let C=g[y]-1;for(let E=0;E<C;++E)c+4>D.SIXTY_FOUR_KILOBYTES&&(A._locatorBuckets.push({locator:r,count:_}),_=0,t.push(4),a=[],e.push(a),c=0,r.count=s,s=0,i=0,r=new Xj(0,0,this),n[++o]=[r]),a.push(c,c+2,c+1),a.push(c+1,c+2,c+3),_+=6,s+=6,i+=6,c+=4}A._locatorBuckets.push({locator:r,count:_}),c+4>D.SIXTY_FOUR_KILOBYTES&&(t.push(0),a=[],e.push(a),c=0,r.count=s,i=0,s=0,r=new Xj(0,0,this),n[++o]=[r])}A._clean()}return r.count=s,i};Om.prototype.getPolylineStartIndex=function(e){let t=this.polylines,n=0,i=t.length;for(let o=0;o<i;++o){let r=t[o];if(r===e)break;n+=r._actualLength}return n};var Yx={positions:void 0,lengths:void 0},Cue=new Array(1),Fqe=new d,Qqe=new Ae;Om.prototype.getSegments=function(e,t){let n=e._actualPositions;if(this.mode===ie.SCENE3D)return Cue[0]=n.length,Yx.positions=n,Yx.lengths=Cue,Yx;Bue(e)&&(n=e._segments.positions);let i=t.ellipsoid,o=[],r=this.modelMatrix,s=n.length,a,c=Fqe;for(let u=0;u<s;++u)a=n[u],c=R.multiplyByPoint(r,a,c),o.push(t.project(i.cartesianToCartographic(c,Qqe)));if(o.length>0){e._boundingVolume2D=le.fromPoints(o,e._boundingVolume2D);let u=e._boundingVolume2D.center;e._boundingVolume2D.center=new d(u.z,u.x,u.y)}return Yx.positions=o,Yx.lengths=e._segments.lengths,Yx};var Eue;Om.prototype.writeUpdate=function(e,t,n,i){let o=this.mode,r=i.ellipsoid.maximumRadius*D.PI,s=t._actualLength;if(s){e+=this.getPolylineStartIndex(t);let a=Eue,c=6*s*3;!l(a)||a.length<c?a=Eue=new Float32Array(c):a.length>c&&(a=new Float32Array(a.buffer,0,c));let u=this.getSegments(t,i),f=u.positions,h=u.lengths,A=0,g=0,m=0,_;s=f.length;for(let y=0;y<s;++y){y===0?t._loop?_=f[s-2]:(_=uk,d.subtract(f[0],f[1],_),d.add(f[0],_,_)):_=f[y-1],d.clone(_,Yf),d.clone(f[y],js),y===s-1?t._loop?_=f[1]:(_=uk,d.subtract(f[s-1],f[s-2],_),d.add(f[s-1],_,_)):_=f[y+1],d.clone(_,qf);let C=h[g];y===m+C&&(m+=C,++g);let E=y-m===0,I=y===m+h[g]-1;o===ie.SCENE2D&&(Yf.z=0,js.z=0,qf.z=0),(o===ie.SCENE2D||o===ie.MORPHING)&&(E||I)&&r-Math.abs(js.x)<1&&((js.x<0&&Yf.x>0||js.x>0&&Yf.x<0)&&d.clone(js,Yf),(js.x<0&&qf.x>0||js.x>0&&qf.x<0)&&d.clone(js,qf));let b=E?2:0,S=I?2:4;for(let B=b;B<S;++B)ei.writeElements(js,a,A),ei.writeElements(Yf,a,A+6),ei.writeElements(qf,a,A+12),A+=18}n.copyFromArrayView(a,18*Float32Array.BYTES_PER_ELEMENT*e)}};var Fm=eh;function v_(e){this._positions=e.positions,this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._rectangle=e.rectangle,this._minHeight=e.minimumHeight,this._maxHeight=e.maximumHeight,this._heightReference=e.heightReference,this._billboardCollection=new jf({batchTable:e.batchTable,scene:e.scene}),this._labelCollection=new Ap({batchTable:e.batchTable,scene:e.scene}),this._polylineCollection=new Fm,this._polylineCollection._useHighlightColor=!0,this._packedBuffer=void 0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(v_.prototype,{ready:{get:function(){return this._ready}},pointsLength:{get:function(){return this._billboardCollection.length}},texturesByteLength:{get:function(){let e=this._billboardCollection.sizeInBytes,t=this._labelCollection.sizeInBytes;return e+t}}});function kqe(e,t){let n=e._rectangle,i=e._minHeight,o=e._maxHeight,r=2+ae.packedLength+te.packedLength,s=new Float64Array(r),a=0;return s[a++]=i,s[a++]=o,ae.pack(n,s,a),a+=ae.packedLength,te.pack(t,s,a),s}var Uqe=new mi("createVectorTilePoints",5),Gqe=new d;function zqe(e,t){let n=e._positions,i=e._packedBuffer;l(i)||(n=e._positions=n.slice(),e._batchIds=e._batchIds.slice(),i=e._packedBuffer=kqe(e,t));let o=[n.buffer,i.buffer],r={positions:n.buffer,packedBuffer:i.buffer},s=Uqe.scheduleTask(r,o);if(l(s))return s.then(a=>{if(e.isDestroyed())return;e._positions=new Float64Array(a.positions);let c=e._billboardCollection,u=e._labelCollection,f=e._polylineCollection;n=e._positions;let h=e._batchIds,A=n.length/3,g=e._heightReference??Ze.NONE;for(let m=0;m<A;++m){let _=h[m],y=d.unpack(n,m*3,Gqe),C=c.add();C.position=y,C._batchIndex=_,C.heightReference=g;let E=u.add();E.text=" ",E.position=y,E._batchIndex=_,E.heightReference=g;let I=f.add();I.positions=[d.clone(y),d.clone(y)]}e._positions=void 0,e._packedBuffer=void 0,e._ready=!0}).catch(a=>{e.isDestroyed()||(e._error=a)})}v_.prototype.createFeatures=function(e,t){let n=this._billboardCollection,i=this._labelCollection,o=this._polylineCollection,r=this._batchIds,s=r.length;for(let a=0;a<s;++a){let c=r[a],u=n.get(a),f=i.get(a),h=o.get(a);t[c]=new B_(e,c,u,f,h)}};v_.prototype.applyDebugSettings=function(e,t){e?(G.clone(t,this._billboardCollection._highlightColor),G.clone(t,this._labelCollection._highlightColor),G.clone(t,this._polylineCollection._highlightColor)):(G.clone(G.WHITE,this._billboardCollection._highlightColor),G.clone(G.WHITE,this._labelCollection._highlightColor),G.clone(G.WHITE,this._polylineCollection._highlightColor))};function Vqe(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.pointSize=B_.defaultPointSize,s.color=B_.defaultColor,s.pointOutlineColor=B_.defaultPointOutlineColor,s.pointOutlineWidth=B_.defaultPointOutlineWidth,s.labelColor=G.WHITE,s.labelOutlineColor=G.WHITE,s.labelOutlineWidth=1,s.font="30px sans-serif",s.labelStyle=ar.FILL,s.labelText=void 0,s.backgroundColor=new G(.165,.165,.165,.8),s.backgroundPadding=new k(7,5),s.backgroundEnabled=!1,s.scaleByDistance=void 0,s.translucencyByDistance=void 0,s.distanceDisplayCondition=void 0,s.heightOffset=0,s.anchorLineEnabled=!1,s.anchorLineColor=G.WHITE,s.image=void 0,s.disableDepthTestDistance=0,s.horizontalOrigin=Ri.CENTER,s.verticalOrigin=Wn.CENTER,s.labelHorizontalOrigin=Ri.RIGHT,s.labelVerticalOrigin=Wn.BASELINE}}var Hqe=new G,Wqe=new G,jqe=new G,Yqe=new G,qqe=new G,Kqe=new G,rD=new Yt,sD=new Yt,eY=new Ut;v_.prototype.applyStyle=function(e,t){if(!l(e)){Vqe(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];if(l(e.show)&&(s.show=e.show.evaluate(s)),l(e.pointSize)&&(s.pointSize=e.pointSize.evaluate(s)),l(e.color)&&(s.color=e.color.evaluateColor(s,Hqe)),l(e.pointOutlineColor)&&(s.pointOutlineColor=e.pointOutlineColor.evaluateColor(s,Wqe)),l(e.pointOutlineWidth)&&(s.pointOutlineWidth=e.pointOutlineWidth.evaluate(s)),l(e.labelColor)&&(s.labelColor=e.labelColor.evaluateColor(s,jqe)),l(e.labelOutlineColor)&&(s.labelOutlineColor=e.labelOutlineColor.evaluateColor(s,Yqe)),l(e.labelOutlineWidth)&&(s.labelOutlineWidth=e.labelOutlineWidth.evaluate(s)),l(e.font)&&(s.font=e.font.evaluate(s)),l(e.labelStyle)&&(s.labelStyle=e.labelStyle.evaluate(s)),l(e.labelText)?s.labelText=e.labelText.evaluate(s):s.labelText=void 0,l(e.backgroundColor)&&(s.backgroundColor=e.backgroundColor.evaluateColor(s,qqe)),l(e.backgroundPadding)&&(s.backgroundPadding=e.backgroundPadding.evaluate(s)),l(e.backgroundEnabled)&&(s.backgroundEnabled=e.backgroundEnabled.evaluate(s)),l(e.scaleByDistance)){let a=e.scaleByDistance.evaluate(s);l(a)?(rD.near=a.x,rD.nearValue=a.y,rD.far=a.z,rD.farValue=a.w,s.scaleByDistance=rD):s.scaleByDistance=void 0}else s.scaleByDistance=void 0;if(l(e.translucencyByDistance)){let a=e.translucencyByDistance.evaluate(s);l(a)?(sD.near=a.x,sD.nearValue=a.y,sD.far=a.z,sD.farValue=a.w,s.translucencyByDistance=sD):s.translucencyByDistance=void 0}else s.translucencyByDistance=void 0;if(l(e.distanceDisplayCondition)){let a=e.distanceDisplayCondition.evaluate(s);l(a)?(eY.near=a.x,eY.far=a.y,s.distanceDisplayCondition=eY):s.distanceDisplayCondition=void 0}else s.distanceDisplayCondition=void 0;l(e.heightOffset)&&(s.heightOffset=e.heightOffset.evaluate(s)),l(e.anchorLineEnabled)&&(s.anchorLineEnabled=e.anchorLineEnabled.evaluate(s)),l(e.anchorLineColor)&&(s.anchorLineColor=e.anchorLineColor.evaluateColor(s,Kqe)),l(e.image)?s.image=e.image.evaluate(s):s.image=void 0,l(e.disableDepthTestDistance)&&(s.disableDepthTestDistance=e.disableDepthTestDistance.evaluate(s)),l(e.horizontalOrigin)&&(s.horizontalOrigin=e.horizontalOrigin.evaluate(s)),l(e.verticalOrigin)&&(s.verticalOrigin=e.verticalOrigin.evaluate(s)),l(e.labelHorizontalOrigin)&&(s.labelHorizontalOrigin=e.labelHorizontalOrigin.evaluate(s)),l(e.labelVerticalOrigin)&&(s.labelVerticalOrigin=e.labelVerticalOrigin.evaluate(s))}};v_.prototype.update=function(e){if(!this._ready&&(l(this._promise)||(this._promise=zqe(this,e.mapProjection.ellipsoid)),l(this._error))){let t=this._error;throw this._error=void 0,t}this._polylineCollection.update(e),this._billboardCollection.update(e),this._labelCollection.update(e)};v_.prototype.isDestroyed=function(){return!1};v_.prototype.destroy=function(){return this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),this._labelCollection=this._labelCollection&&this._labelCollection.destroy(),this._polylineCollection=this._polylineCollection&&this._polylineCollection.destroy(),ue(this)};var fk=v_;function gp(e){this._batchTable=e.batchTable,this._batchIds=e.batchIds,this._positions=e.positions,this._counts=e.counts,this._indices=e.indices,this._indexCounts=e.indexCounts,this._indexOffsets=void 0,this._batchTableColors=void 0,this._packedBuffer=void 0,this._batchedPositions=void 0,this._transferrableBatchIds=void 0,this._vertexBatchIds=void 0,this._ellipsoid=e.ellipsoid??te.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._polygonMinimumHeights=e.polygonMinimumHeights,this._polygonMaximumHeights=e.polygonMaximumHeights,this._center=e.center??d.ZERO,this._rectangle=e.rectangle,this._center=void 0,this._boundingVolume=e.boundingVolume,this._boundingVolumes=void 0,this._batchedIndices=void 0,this._ready=!1,this._promise=void 0,this._error=void 0,this._primitive=void 0,this.debugWireframe=!1,this.forceRebatch=!1,this.classificationType=Jn.BOTH}Object.defineProperties(gp.prototype,{trianglesLength:{get:function(){return l(this._primitive)?this._primitive.trianglesLength:0}},geometryByteLength:{get:function(){return l(this._primitive)?this._primitive.geometryByteLength:0}},ready:{get:function(){return this._ready}}});function Xqe(e){let t=new Float64Array(3+d.packedLength+te.packedLength+ae.packedLength),n=0;return t[n++]=e._indices.BYTES_PER_ELEMENT,t[n++]=e._minimumHeight,t[n++]=e._maximumHeight,d.pack(e._center,t,n),n+=d.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,ae.pack(e._rectangle,t,n),t}function Jqe(e,t){let n=1,i=t[n++],o=e._boundingVolumes=new Array(i);for(let a=0;a<i;++a)o[a]=Qn.unpack(t,n),n+=Qn.packedLength;let r=t[n++],s=e._batchedIndices=new Array(r);for(let a=0;a<r;++a){let c=G.unpack(t,n);n+=G.packedLength;let u=t[n++],f=t[n++],h=t[n++],A=new Array(h);for(let g=0;g<h;++g)A[g]=t[n++];s[a]=new KA({color:c,offset:u,count:f,batchIds:A})}}var Zqe=new mi("createVectorTilePolygons",5),$qe=new G;function eKe(e){if(l(e._primitive))return;let t=e._positions,n=e._counts,i=e._indexCounts,o=e._indices,r=e._transferrableBatchIds,s=e._batchTableColors,a=e._packedBuffer;if(!l(s)){t=e._positions=e._positions.slice(),n=e._counts=e._counts.slice(),i=e._indexCounts=e._indexCounts.slice(),o=e._indices=e._indices.slice(),e._center=e._ellipsoid.cartographicToCartesian(ae.center(e._rectangle)),r=e._transferrableBatchIds=new Uint32Array(e._batchIds),s=e._batchTableColors=new Uint32Array(r.length);let g=e._batchTable,m=s.length;for(let _=0;_<m;++_){let y=g.getColor(_,$qe);s[_]=y.toRgba()}a=e._packedBuffer=Xqe(e)}let c=[t.buffer,n.buffer,i.buffer,o.buffer,r.buffer,s.buffer,a.buffer],u={packedBuffer:a.buffer,positions:t.buffer,counts:n.buffer,indexCounts:i.buffer,indices:o.buffer,batchIds:r.buffer,batchTableColors:s.buffer},f=e._polygonMinimumHeights,h=e._polygonMaximumHeights;l(f)&&l(h)&&(f=f.slice(),h=h.slice(),c.push(f.buffer,h.buffer),u.minimumHeights=f,u.maximumHeights=h);let A=Zqe.scheduleTask(u,c);if(l(A))return A.then(g=>{if(e.isDestroyed())return;e._positions=void 0,e._counts=void 0,e._polygonMinimumHeights=void 0,e._polygonMaximumHeights=void 0;let m=new Float64Array(g.packedBuffer),_=m[0];Jqe(e,m),e._indices=Fe.getSizeInBytes(_)===2?new Uint16Array(g.indices):new Uint32Array(g.indices),e._indexOffsets=new Uint32Array(g.indexOffsets),e._indexCounts=new Uint32Array(g.indexCounts),e._batchedPositions=new Float32Array(g.positions),e._vertexBatchIds=new Uint16Array(g.batchIds),tKe(e),e._ready=!0}).catch(g=>{e.isDestroyed()||(e._error=g)})}function tKe(e){l(e._primitive)||(e._primitive=new HI({batchTable:e._batchTable,positions:e._batchedPositions,batchIds:e._batchIds,vertexBatchIds:e._vertexBatchIds,indices:e._indices,indexOffsets:e._indexOffsets,indexCounts:e._indexCounts,batchedIndices:e._batchedIndices,boundingVolume:e._boundingVolume,boundingVolumes:e._boundingVolumes,center:e._center}),e._batchTable=void 0,e._batchIds=void 0,e._positions=void 0,e._counts=void 0,e._indices=void 0,e._indexCounts=void 0,e._indexOffsets=void 0,e._batchTableColors=void 0,e._packedBuffer=void 0,e._batchedPositions=void 0,e._transferrableBatchIds=void 0,e._vertexBatchIds=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._polygonMinimumHeights=void 0,e._polygonMaximumHeights=void 0,e._center=void 0,e._rectangle=void 0,e._boundingVolume=void 0,e._boundingVolumes=void 0,e._batchedIndices=void 0)}gp.prototype.createFeatures=function(e,t){this._primitive.createFeatures(e,t)};gp.prototype.applyDebugSettings=function(e,t){this._primitive.applyDebugSettings(e,t)};gp.prototype.applyStyle=function(e,t){this._primitive.applyStyle(e,t)};gp.prototype.updateCommands=function(e,t){this._primitive.updateCommands(e,t)};gp.prototype.update=function(e){if(!this._ready){if(l(this._promise)||(this._promise=eKe(this)),l(this._error)){let t=this._error;throw this._error=void 0,t}return}this._primitive.debugWireframe=this.debugWireframe,this._primitive.forceRebatch=this.forceRebatch,this._primitive.classificationType=this.classificationType,this._primitive.update(e)};gp.prototype.isDestroyed=function(){return!1};gp.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};var dk=gp;var hk=`in vec4 currentPosition; +in vec4 previousPosition; +in vec4 nextPosition; +in vec2 expandAndWidth; +in float a_batchId; + +uniform mat4 u_modifiedModelView; + +void main() +{ + float expandDir = expandAndWidth.x; + float width = abs(expandAndWidth.y) + 0.5; + bool usePrev = expandAndWidth.y < 0.0; + + vec4 p = u_modifiedModelView * currentPosition; + vec4 prev = u_modifiedModelView * previousPosition; + vec4 next = u_modifiedModelView * nextPosition; + + float angle; + vec4 positionWC = getPolylineWindowCoordinatesEC(p, prev, next, expandDir, width, usePrev, angle); + gl_Position = czm_viewportOrthographic * positionWC; +} +`;function th(e){this._positions=e.positions,this._widths=e.widths,this._counts=e.counts,this._batchIds=e.batchIds,this._ellipsoid=e.ellipsoid??te.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._center=e.center,this._rectangle=e.rectangle,this._boundingVolume=e.boundingVolume,this._batchTable=e.batchTable,this._va=void 0,this._sp=void 0,this._rs=void 0,this._uniformMap=void 0,this._command=void 0,this._transferrableBatchIds=void 0,this._packedBuffer=void 0,this._keepDecodedPositions=e.keepDecodedPositions,this._decodedPositions=void 0,this._decodedPositionOffsets=void 0,this._currentPositions=void 0,this._previousPositions=void 0,this._nextPositions=void 0,this._expandAndWidth=void 0,this._vertexBatchIds=void 0,this._indices=void 0,this._constantColor=G.clone(G.WHITE),this._highlightColor=this._constantColor,this._trianglesLength=0,this._geometryByteLength=0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(th.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}}});function nKe(e){let t=e._rectangle,n=e._minimumHeight,i=e._maximumHeight,o=e._ellipsoid,r=e._center,s=2+ae.packedLength+te.packedLength+d.packedLength,a=new Float64Array(s),c=0;return a[c++]=n,a[c++]=i,ae.pack(t,a,c),c+=ae.packedLength,te.pack(o,a,c),c+=te.packedLength,d.pack(r,a,c),a}var iKe=new mi("createVectorTilePolylines",5),qx={previousPosition:0,currentPosition:1,nextPosition:2,expandAndWidth:3,a_batchId:4};function oKe(e,t){if(l(e._va))return;let n=e._positions,i=e._widths,o=e._counts,r=e._transferrableBatchIds,s=e._packedBuffer;l(s)||(n=e._positions=n.slice(),i=e._widths=i.slice(),o=e._counts=o.slice(),r=e._transferrableBatchIds=e._batchIds.slice(),s=e._packedBuffer=nKe(e));let a=[n.buffer,i.buffer,o.buffer,r.buffer,s.buffer],c={positions:n.buffer,widths:i.buffer,counts:o.buffer,batchIds:r.buffer,packedBuffer:s.buffer,keepDecodedPositions:e._keepDecodedPositions},u=iKe.scheduleTask(c,a);if(l(u))return u.then(function(f){if(e.isDestroyed())return;e._keepDecodedPositions&&(e._decodedPositions=new Float64Array(f.decodedPositions),e._decodedPositionOffsets=new Uint32Array(f.decodedPositionOffsets)),e._currentPositions=new Float32Array(f.currentPositions),e._previousPositions=new Float32Array(f.previousPositions),e._nextPositions=new Float32Array(f.nextPositions),e._expandAndWidth=new Float32Array(f.expandAndWidth),e._vertexBatchIds=new Uint16Array(f.batchIds);let h=f.indexDatatype;e._indices=h===Fe.UNSIGNED_SHORT?new Uint16Array(f.indices):new Uint32Array(f.indices),rKe(e,t),e._ready=!0}).catch(f=>{e.isDestroyed()||(e._error=f)})}function rKe(e,t){if(!l(e._va)){let n=e._currentPositions,i=e._previousPositions,o=e._nextPositions,r=e._expandAndWidth,s=e._vertexBatchIds,a=e._indices,c=i.byteLength+n.byteLength+o.byteLength;c+=r.byteLength+s.byteLength+a.byteLength,e._trianglesLength=a.length/3,e._geometryByteLength=c;let u=Et.createVertexBuffer({context:t,typedArray:i,usage:Qe.STATIC_DRAW}),f=Et.createVertexBuffer({context:t,typedArray:n,usage:Qe.STATIC_DRAW}),h=Et.createVertexBuffer({context:t,typedArray:o,usage:Qe.STATIC_DRAW}),A=Et.createVertexBuffer({context:t,typedArray:r,usage:Qe.STATIC_DRAW}),g=Et.createVertexBuffer({context:t,typedArray:s,usage:Qe.STATIC_DRAW}),m=Et.createIndexBuffer({context:t,typedArray:a,usage:Qe.STATIC_DRAW,indexDatatype:a.BYTES_PER_ELEMENT===2?Fe.UNSIGNED_SHORT:Fe.UNSIGNED_INT}),_=[{index:qx.previousPosition,vertexBuffer:u,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:qx.currentPosition,vertexBuffer:f,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:qx.nextPosition,vertexBuffer:h,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:qx.expandAndWidth,vertexBuffer:A,componentDatatype:q.FLOAT,componentsPerAttribute:2},{index:qx.a_batchId,vertexBuffer:g,componentDatatype:q.UNSIGNED_SHORT,componentsPerAttribute:1}];e._va=new li({context:t,attributes:_,indexBuffer:m}),e._positions=void 0,e._widths=void 0,e._counts=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._rectangle=void 0,e._transferrableBatchIds=void 0,e._packedBuffer=void 0,e._currentPositions=void 0,e._previousPositions=void 0,e._nextPositions=void 0,e._expandAndWidth=void 0,e._vertexBatchIds=void 0,e._indices=void 0}}var aD=new R,Due=new d;function sKe(e,t){l(e._uniformMap)||(e._uniformMap={u_modifiedModelView:function(){let n=t.uniformState.view;return R.clone(n,aD),R.multiplyByPoint(aD,e._center,Due),R.setTranslation(aD,Due,aD),aD},u_highlightColor:function(){return e._highlightColor}})}function aKe(e){if(l(e._rs))return;let t={enabled:!0,factor:-5,units:-5};e._rs=Ue.fromCache({blending:pn.ALPHA_BLEND,depthMask:!1,depthTest:{enabled:!0},polygonOffset:t})}var cKe=`uniform vec4 u_highlightColor; +void main() +{ + out_FragColor = u_highlightColor; +} +`;function lKe(e,t){if(l(e._sp))return;let n=e._batchTable,i=n.getVertexShaderCallback(!1,"a_batchId",void 0)(hk),o=n.getFragmentShaderCallback(!1,void 0,!1)(cKe),r=new We({defines:["VECTOR_TILE",jt.isInternetExplorer()?"":"CLIP_POLYLINE"],sources:[bf,i]}),s=new We({defines:["VECTOR_TILE"],sources:[o]});e._sp=ln.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:qx})}function uKe(e,t){if(!l(e._command)){let n=e._batchTable.getUniformMapCallback()(e._uniformMap);e._command=new nt({owner:e,vertexArray:e._va,renderState:e._rs,shaderProgram:e._sp,uniformMap:n,boundingVolume:e._boundingVolume,pass:Be.TRANSLUCENT,pickId:e._batchTable.getPickId()})}t.commandList.push(e._command)}th.getPolylinePositions=function(e,t){let n=e._batchIds,i=e._decodedPositions,o=e._decodedPositionOffsets;if(!l(n)||!l(i))return;let r,s,a=n.length,c=0,u=0;for(r=0;r<a;++r)n[r]===t&&(c+=o[r+1]-o[r]);if(c===0)return;let f=new Float64Array(c*3);for(r=0;r<a;++r)if(n[r]===t){let h=o[r],A=o[r+1]-h;for(s=0;s<A;++s){let g=(h+s)*3;f[u++]=i[g],f[u++]=i[g+1],f[u++]=i[g+2]}}return f};th.prototype.getPositions=function(e){return th.getPolylinePositions(this,e)};th.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new Sa(e,r)}};th.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function fKe(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.color=G.WHITE}}var dKe=new G,hKe=G.WHITE,mKe=!0;th.prototype.applyStyle=function(e,t){if(!l(e)){fKe(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.color=l(e.color)?e.color.evaluateColor(s,dKe):hKe,s.show=l(e.show)?e.show.evaluate(s):mKe}};th.prototype.update=function(e){let t=e.context;if(!this._ready){if(l(this._promise)||(this._promise=oKe(this,t)),l(this._error)){let i=this._error;throw this._error=void 0,i}return}sKe(this,t),lKe(this,t),aKe(this);let n=e.passes;(n.render||n.pick)&&uKe(this,e)};th.prototype.isDestroyed=function(){return!1};th.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),ue(this)};var Kx=th;var mk=`in vec3 startEllipsoidNormal; +in vec3 endEllipsoidNormal; +in vec4 startPositionAndHeight; +in vec4 endPositionAndHeight; +in vec4 startFaceNormalAndVertexCorner; +in vec4 endFaceNormalAndHalfWidth; +in float a_batchId; + +uniform mat4 u_modifiedModelView; +uniform vec2 u_minimumMaximumVectorHeights; + +out vec4 v_startPlaneEC; +out vec4 v_endPlaneEC; +out vec4 v_rightPlaneEC; +out float v_halfWidth; +out vec3 v_volumeUpEC; + +void main() +{ + // vertex corner IDs + // 3-----------7 + // /| left /| + // / | 1 / | + // 2-----------6 5 end + // | / | / + // start |/ right |/ + // 0-----------4 + // + float isEnd = floor(startFaceNormalAndVertexCorner.w * 0.251); // 0 for front, 1 for end + float isTop = floor(startFaceNormalAndVertexCorner.w * mix(0.51, 0.19, isEnd)); // 0 for bottom, 1 for top + + vec3 forward = endPositionAndHeight.xyz - startPositionAndHeight.xyz; + vec3 right = normalize(cross(forward, startEllipsoidNormal)); + + vec4 position = vec4(startPositionAndHeight.xyz, 1.0); + position.xyz += forward * isEnd; + + v_volumeUpEC = czm_normal * normalize(cross(right, forward)); + + // Push for volume height + float offset; + vec3 ellipsoidNormal = mix(startEllipsoidNormal, endEllipsoidNormal, isEnd); + + // offset height to create volume + offset = mix(startPositionAndHeight.w, endPositionAndHeight.w, isEnd); + offset = mix(u_minimumMaximumVectorHeights.y, u_minimumMaximumVectorHeights.x, isTop) - offset; + position.xyz += offset * ellipsoidNormal; + + // move from RTC to EC + position = u_modifiedModelView * position; + right = czm_normal * right; + + // Push for width in a direction that is in the start or end plane and in a plane with right + // N = normalEC ("right-facing" direction for push) + // R = right + // p = angle between N and R + // w = distance to push along R if R == N + // d = distance to push along N + // + // N R + // { p| } * cos(p) = dot(N, R) = w / d + // d | |w * d = w / dot(N, R) + // { | } + // o---------- polyline segment ----> + // + vec3 scratchNormal = mix(-startFaceNormalAndVertexCorner.xyz, endFaceNormalAndHalfWidth.xyz, isEnd); + scratchNormal = cross(scratchNormal, mix(startEllipsoidNormal, endEllipsoidNormal, isEnd)); + vec3 miterPushNormal = czm_normal * normalize(scratchNormal); + + offset = 2.0 * endFaceNormalAndHalfWidth.w * max(0.0, czm_metersPerPixel(position)); // offset = widthEC + offset = offset / dot(miterPushNormal, right); + position.xyz += miterPushNormal * (offset * sign(0.5 - mod(startFaceNormalAndVertexCorner.w, 2.0))); + + gl_Position = czm_depthClamp(czm_projection * position); + + position = u_modifiedModelView * vec4(startPositionAndHeight.xyz, 1.0); + vec3 startNormalEC = czm_normal * startFaceNormalAndVertexCorner.xyz; + v_startPlaneEC = vec4(startNormalEC, -dot(startNormalEC, position.xyz)); + v_rightPlaneEC = vec4(right, -dot(right, position.xyz)); + + position = u_modifiedModelView * vec4(endPositionAndHeight.xyz, 1.0); + vec3 endNormalEC = czm_normal * endFaceNormalAndHalfWidth.xyz; + v_endPlaneEC = vec4(endNormalEC, -dot(endNormalEC, position.xyz)); + v_halfWidth = endFaceNormalAndHalfWidth.w; +} +`;var Ak=`in vec4 v_startPlaneEC; +in vec4 v_endPlaneEC; +in vec4 v_rightPlaneEC; +in float v_halfWidth; +in vec3 v_volumeUpEC; + +uniform vec4 u_highlightColor; +void main() +{ + float logDepthOrDepth = czm_branchFreeTernary(czm_sceneMode == czm_sceneMode2D, gl_FragCoord.z, czm_unpackDepth(texture(czm_globeDepthTexture, gl_FragCoord.xy / czm_viewport.zw))); + + // Discard for sky + if (logDepthOrDepth == 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(0.0, 0.0, 1.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + eyeCoordinate /= eyeCoordinate.w; + + float halfMaxWidth = v_halfWidth * czm_metersPerPixel(eyeCoordinate); + + // Expand halfMaxWidth if direction to camera is almost perpendicular with the volume's up direction + halfMaxWidth += halfMaxWidth * (1.0 - dot(-normalize(eyeCoordinate.xyz), v_volumeUpEC)); + + // Check distance of the eye coordinate against the right-facing plane + float widthwiseDistance = czm_planeDistance(v_rightPlaneEC, eyeCoordinate.xyz); + + // Check eye coordinate against the mitering planes + float distanceFromStart = czm_planeDistance(v_startPlaneEC, eyeCoordinate.xyz); + float distanceFromEnd = czm_planeDistance(v_endPlaneEC, eyeCoordinate.xyz); + + if (abs(widthwiseDistance) > halfMaxWidth || distanceFromStart < 0.0 || distanceFromEnd < 0.0) { +#ifdef DEBUG_SHOW_VOLUME + out_FragColor = vec4(logDepthOrDepth, 0.0, 0.0, 0.5); + return; +#else // DEBUG_SHOW_VOLUME + discard; +#endif // DEBUG_SHOW_VOLUME + } + out_FragColor = u_highlightColor; + + czm_writeDepthClamp(); +} +`;function _p(e){this._positions=e.positions,this._widths=e.widths,this._counts=e.counts,this._batchIds=e.batchIds,this._ellipsoid=e.ellipsoid??te.WGS84,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._center=e.center,this._rectangle=e.rectangle,this._batchTable=e.batchTable,this._va=void 0,this._sp=void 0,this._rs=void 0,this._uniformMap=void 0,this._command=void 0,this._transferrableBatchIds=void 0,this._packedBuffer=void 0,this._minimumMaximumVectorHeights=new k(wi._defaultMinTerrainHeight,wi._defaultMaxTerrainHeight),this._boundingVolume=Qn.fromRectangle(e.rectangle,wi._defaultMinTerrainHeight,wi._defaultMaxTerrainHeight,this._ellipsoid),this._classificationType=e.classificationType,this._keepDecodedPositions=e.keepDecodedPositions,this._decodedPositions=void 0,this._decodedPositionOffsets=void 0,this._startEllipsoidNormals=void 0,this._endEllipsoidNormals=void 0,this._startPositionAndHeights=void 0,this._startFaceNormalAndVertexCornerIds=void 0,this._endPositionAndHeights=void 0,this._endFaceNormalAndHalfWidths=void 0,this._vertexBatchIds=void 0,this._indices=void 0,this._constantColor=G.clone(G.WHITE),this._highlightColor=this._constantColor,this._trianglesLength=0,this._geometryByteLength=0,this._ready=!1,this._promise=void 0,this._error=void 0}Object.defineProperties(_p.prototype,{trianglesLength:{get:function(){return this._trianglesLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}}});function AKe(e,t,n){let i=wi.getMinimumMaximumHeights(t,n),o=i.minimumTerrainHeight,r=i.maximumTerrainHeight,s=e._minimumMaximumVectorHeights;s.x=o,s.y=r;let a=e._boundingVolume,c=e._rectangle;Qn.fromRectangle(c,o,r,n,a)}function pKe(e){let t=e._rectangle,n=e._minimumHeight,i=e._maximumHeight,o=e._ellipsoid,r=e._center,s=2+ae.packedLength+te.packedLength+d.packedLength,a=new Float64Array(s),c=0;return a[c++]=n,a[c++]=i,ae.pack(t,a,c),c+=ae.packedLength,te.pack(o,a,c),c+=te.packedLength,d.pack(r,a,c),a}var gKe=new mi("createVectorTileClampedPolylines"),P_={startEllipsoidNormal:0,endEllipsoidNormal:1,startPositionAndHeight:2,endPositionAndHeight:3,startFaceNormalAndVertexCorner:4,endFaceNormalAndHalfWidth:5,a_batchId:6};function _Ke(e,t){if(l(e._va))return;let n=e._positions,i=e._widths,o=e._counts,r=e._transferrableBatchIds,s=e._packedBuffer;l(s)||(n=e._positions=n.slice(),i=e._widths=i.slice(),o=e._counts=o.slice(),r=e._transferrableBatchIds=e._batchIds.slice(),s=e._packedBuffer=pKe(e));let a=[n.buffer,i.buffer,o.buffer,r.buffer,s.buffer],c={positions:n.buffer,widths:i.buffer,counts:o.buffer,batchIds:r.buffer,packedBuffer:s.buffer,keepDecodedPositions:e._keepDecodedPositions},u=gKe.scheduleTask(c,a);if(l(u))return u.then(function(f){if(e.isDestroyed())return;e._keepDecodedPositions&&(e._decodedPositions=new Float64Array(f.decodedPositions),e._decodedPositionOffsets=new Uint32Array(f.decodedPositionOffsets)),e._startEllipsoidNormals=new Float32Array(f.startEllipsoidNormals),e._endEllipsoidNormals=new Float32Array(f.endEllipsoidNormals),e._startPositionAndHeights=new Float32Array(f.startPositionAndHeights),e._startFaceNormalAndVertexCornerIds=new Float32Array(f.startFaceNormalAndVertexCornerIds),e._endPositionAndHeights=new Float32Array(f.endPositionAndHeights),e._endFaceNormalAndHalfWidths=new Float32Array(f.endFaceNormalAndHalfWidths),e._vertexBatchIds=new Uint16Array(f.vertexBatchIds);let h=f.indexDatatype;e._indices=h===Fe.UNSIGNED_SHORT?new Uint16Array(f.indices):new Uint32Array(f.indices),yKe(e,t),e._ready=!0}).catch(f=>{e.isDestroyed()||(e._error=f)})}function yKe(e,t){if(!l(e._va)){let n=e._startEllipsoidNormals,i=e._endEllipsoidNormals,o=e._startPositionAndHeights,r=e._endPositionAndHeights,s=e._startFaceNormalAndVertexCornerIds,a=e._endFaceNormalAndHalfWidths,c=e._vertexBatchIds,u=e._indices,f=n.byteLength+i.byteLength;f+=o.byteLength+r.byteLength,f+=s.byteLength+a.byteLength,f+=c.byteLength+u.byteLength,e._trianglesLength=u.length/3,e._geometryByteLength=f;let h=Et.createVertexBuffer({context:t,typedArray:n,usage:Qe.STATIC_DRAW}),A=Et.createVertexBuffer({context:t,typedArray:i,usage:Qe.STATIC_DRAW}),g=Et.createVertexBuffer({context:t,typedArray:o,usage:Qe.STATIC_DRAW}),m=Et.createVertexBuffer({context:t,typedArray:r,usage:Qe.STATIC_DRAW}),_=Et.createVertexBuffer({context:t,typedArray:s,usage:Qe.STATIC_DRAW}),y=Et.createVertexBuffer({context:t,typedArray:a,usage:Qe.STATIC_DRAW}),C=Et.createVertexBuffer({context:t,typedArray:c,usage:Qe.STATIC_DRAW}),E=Et.createIndexBuffer({context:t,typedArray:u,usage:Qe.STATIC_DRAW,indexDatatype:u.BYTES_PER_ELEMENT===2?Fe.UNSIGNED_SHORT:Fe.UNSIGNED_INT}),I=[{index:P_.startEllipsoidNormal,vertexBuffer:h,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:P_.endEllipsoidNormal,vertexBuffer:A,componentDatatype:q.FLOAT,componentsPerAttribute:3},{index:P_.startPositionAndHeight,vertexBuffer:g,componentDatatype:q.FLOAT,componentsPerAttribute:4},{index:P_.endPositionAndHeight,vertexBuffer:m,componentDatatype:q.FLOAT,componentsPerAttribute:4},{index:P_.startFaceNormalAndVertexCorner,vertexBuffer:_,componentDatatype:q.FLOAT,componentsPerAttribute:4},{index:P_.endFaceNormalAndHalfWidth,vertexBuffer:y,componentDatatype:q.FLOAT,componentsPerAttribute:4},{index:P_.a_batchId,vertexBuffer:C,componentDatatype:q.UNSIGNED_SHORT,componentsPerAttribute:1}];e._va=new li({context:t,attributes:I,indexBuffer:E}),e._positions=void 0,e._widths=void 0,e._counts=void 0,e._ellipsoid=void 0,e._minimumHeight=void 0,e._maximumHeight=void 0,e._rectangle=void 0,e._transferrableBatchIds=void 0,e._packedBuffer=void 0,e._startEllipsoidNormals=void 0,e._endEllipsoidNormals=void 0,e._startPositionAndHeights=void 0,e._startFaceNormalAndVertexCornerIds=void 0,e._endPositionAndHeights=void 0,e._endFaceNormalAndHalfWidths=void 0,e._vertexBatchIds=void 0,e._indices=void 0}}var cD=new R,vue=new d;function CKe(e,t){l(e._uniformMap)||(e._uniformMap={u_modifiedModelView:function(){let n=t.uniformState.view;return R.clone(n,cD),R.multiplyByPoint(cD,e._center,vue),R.setTranslation(cD,vue,cD),cD},u_highlightColor:function(){return e._highlightColor},u_minimumMaximumVectorHeights:function(){return e._minimumMaximumVectorHeights}})}function Pue(e){return Ue.fromCache({cull:{enabled:!0,face:Mi.FRONT},blending:pn.PRE_MULTIPLIED_ALPHA_BLEND,depthMask:!1,stencilTest:{enabled:e,frontFunction:Zn.EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.EQUAL,backOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK}})}function EKe(e){l(e._rs)||(e._rs=Pue(!1),e._rs3DTiles=Pue(!0))}function IKe(e,t){if(l(e._sp))return;let n=e._batchTable,i=n.getVertexShaderCallback(!1,"a_batchId",void 0)(mk),o=n.getFragmentShaderCallback(!1,void 0,!0)(Ak),r=new We({defines:["VECTOR_TILE",jt.isInternetExplorer()?"":"CLIP_POLYLINE"],sources:[bf,i]}),s=new We({defines:["VECTOR_TILE"],sources:[o]});e._sp=ln.fromCache({context:t,vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:P_})}function xKe(e,t){let n=e._command;if(!l(e._command)){let o=e._batchTable.getUniformMapCallback()(e._uniformMap);n=e._command=new nt({owner:e,vertexArray:e._va,renderState:e._rs,shaderProgram:e._sp,uniformMap:o,boundingVolume:e._boundingVolume,pass:Be.TERRAIN_CLASSIFICATION,pickId:e._batchTable.getPickId()});let r=nt.shallowClone(n,n.derivedCommands.tileset);r.renderState=e._rs3DTiles,r.pass=Be.CESIUM_3D_TILE_CLASSIFICATION,n.derivedCommands.tileset=r}let i=e._classificationType;(i===Jn.TERRAIN||i===Jn.BOTH)&&t.commandList.push(n),(i===Jn.CESIUM_3D_TILE||i===Jn.BOTH)&&t.commandList.push(n.derivedCommands.tileset)}_p.prototype.getPositions=function(e){return Kx.getPolylinePositions(this,e)};_p.prototype.createFeatures=function(e,t){let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o];t[r]=new Sa(e,r)}};_p.prototype.applyDebugSettings=function(e,t){this._highlightColor=e?t:this._constantColor};function bKe(e,t){let n=e._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.show=!0,s.color=G.WHITE}}var TKe=new G,SKe=G.WHITE,wKe=!0;_p.prototype.applyStyle=function(e,t){if(!l(e)){bKe(this,t);return}let n=this._batchIds,i=n.length;for(let o=0;o<i;++o){let r=n[o],s=t[r];s.color=l(e.color)?e.color.evaluateColor(s,TKe):SKe,s.show=l(e.show)?e.show.evaluate(s):wKe}};function BKe(e){return wi.initialize().then(function(){AKe(e,e._rectangle,e._ellipsoid)}).catch(t=>{e.isDestroyed()||(e._error=t)})}_p.prototype.update=function(e){let t=e.context;if(!this._ready){if(l(this._promise)||(this._promise=BKe(this).then(_Ke(this,t))),l(this._error)){let i=this._error;throw this._error=void 0,i}return}CKe(this,t),IKe(this,t),EKe(this);let n=e.passes;(n.render||n.pick)&&xKe(this,e)};_p.prototype.isDestroyed=function(){return!1};_p.prototype.destroy=function(){return this._va=this._va&&this._va.destroy(),this._sp=this._sp&&this._sp.destroy(),ue(this)};var pk=_p;var tY=32767,DKe=new Ae,vKe=new d;function PKe(e,t,n,i,o){let r=e.length/3,s=e.subarray(0,r),a=e.subarray(r,2*r),c=e.subarray(2*r,3*r);Fn.zigZagDeltaDecode(s,a,c);let u=new Float64Array(e.length);for(let f=0;f<r;++f){let h=s[f],A=a[f],g=c[f],m=D.lerp(t.west,t.east,h/tY),_=D.lerp(t.south,t.north,A/tY),y=D.lerp(n,i,g/tY),C=Ae.fromRadians(m,_,y,DKe),E=o.cartographicToCartesian(C,vKe);d.pack(E,u,f*3)}return u}var gk=PKe;function ih(e,t,n,i,o){this._tileset=e,this._tile=t,this._resource=n,this._polygons=void 0,this._polylines=void 0,this._points=void 0,this._metadata=void 0,this._batchTable=void 0,this._features=void 0,this.featurePropertiesDirty=!1,this._group=void 0,this._ready=!1,OKe(this,i,o)}Object.defineProperties(ih.prototype,{featuresLength:{get:function(){return l(this._batchTable)?this._batchTable.featuresLength:0}},pointsLength:{get:function(){return l(this._points)?this._points.pointsLength:0}},trianglesLength:{get:function(){let e=0;return l(this._polygons)&&(e+=this._polygons.trianglesLength),l(this._polylines)&&(e+=this._polylines.trianglesLength),e}},geometryByteLength:{get:function(){let e=0;return l(this._polygons)&&(e+=this._polygons.geometryByteLength),l(this._polylines)&&(e+=this._polylines.geometryByteLength),e}},texturesByteLength:{get:function(){return l(this._points)?this._points.texturesByteLength:0}},batchTableByteLength:{get:function(){return l(this._batchTable)?this._batchTable.batchTableByteLength:0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},batchTable:{get:function(){return this._batchTable}},group:{get:function(){return this._group},set:function(e){this._group=e}}});function RKe(e){return function(t,n){l(e._polygons)&&e._polygons.updateCommands(t,n)}}function MKe(e,t){let n,i,o,r,s=e.POLYGONS_LENGTH??0,a=e.POLYLINES_LENGTH??0,c=e.POINTS_LENGTH??0;if(s>0&&l(e.POLYGON_BATCH_IDS)){let A=t.byteOffset+e.POLYGON_BATCH_IDS.byteOffset;n=new Uint16Array(t.buffer,A,s)}if(a>0&&l(e.POLYLINE_BATCH_IDS)){let A=t.byteOffset+e.POLYLINE_BATCH_IDS.byteOffset;i=new Uint16Array(t.buffer,A,a)}if(c>0&&l(e.POINT_BATCH_IDS)){let A=t.byteOffset+e.POINT_BATCH_IDS.byteOffset;o=new Uint16Array(t.buffer,A,c)}let u=l(n)||l(i)||l(o),f=s>0&&!l(n)||a>0&&!l(i)||c>0&&!l(o);if(u&&f)throw new ce("If one group of batch ids is defined, then all batch ids must be defined");if(!l(n)&&!l(i)&&!l(o)){let A=0;if(!l(n)&&s>0)for(n=new Uint16Array(s),r=0;r<s;++r)n[r]=A++;if(!l(i)&&a>0)for(i=new Uint16Array(a),r=0;r<a;++r)i[r]=A++;if(!l(o)&&c>0)for(o=new Uint16Array(c),r=0;r<c;++r)o[r]=A++}return{polygons:n,polylines:i,points:o}}var nh=Uint32Array.BYTES_PER_ELEMENT;function NKe(e){return new Kx(e)}function LKe(e){return new pk(e)}function OKe(e,t,n){n=n??0;let i=new Uint8Array(t),o=new DataView(t);n+=nh;let r=o.getUint32(n,!0);if(r!==1)throw new ce(`Only Vector tile version 1 is supported. Version ${r} is not.`);n+=nh;let s=o.getUint32(n,!0);if(n+=nh,s===0){e._ready=!0;return}let a=o.getUint32(n,!0);if(n+=nh,a===0)throw new ce("Feature table must have a byte length greater than zero");let c=o.getUint32(n,!0);n+=nh;let u=o.getUint32(n,!0);n+=nh;let f=o.getUint32(n,!0);n+=nh;let h=o.getUint32(n,!0);n+=nh;let A=o.getUint32(n,!0);n+=nh;let g=o.getUint32(n,!0);n+=nh;let m=o.getUint32(n,!0);n+=nh;let _=yr(i,n,a);n+=a;let y=new Uint8Array(t,n,c);n+=c;let C,E;u>0&&(C=yr(i,n,u),n+=u,f>0&&(E=new Uint8Array(t,n,f),E=new Uint8Array(E),n+=f));let I=_.POLYGONS_LENGTH??0,b=_.POLYLINES_LENGTH??0,S=_.POINTS_LENGTH??0,B=I+b+S,v=new Fg(e,B,C,E,RKe(e));if(e._batchTable=v,B===0)return;let P=new Sm(_,y),N=P.getGlobalProperty("REGION");if(!l(N))throw new ce("Feature table global property: REGION must be defined");let L=ae.unpack(N),p=N[4],x=N[5],T=e._tile.computedTransform,w=P.getGlobalProperty("RTC_CENTER",q.FLOAT,3);l(w)?(w=d.unpack(w),R.multiplyByPoint(T,w,w)):(w=ae.center(L),w.height=D.lerp(p,x,.5),w=te.WGS84.cartographicToCartesian(w));let M=MKe(_,y);if(n+=(4-n%4)%4,I>0){P.featuresLength=I;let U=P.getPropertyArray("POLYGON_COUNTS",q.UNSIGNED_INT,1)??P.getPropertyArray("POLYGON_COUNT",q.UNSIGNED_INT,1);if(!l(U))throw new ce("Feature table property: POLYGON_COUNTS must be defined when POLYGONS_LENGTH is greater than 0");let Q=P.getPropertyArray("POLYGON_INDEX_COUNTS",q.UNSIGNED_INT,1)??P.getPropertyArray("POLYGON_INDEX_COUNT",q.UNSIGNED_INT,1);if(!l(Q))throw new ce("Feature table property: POLYGON_INDEX_COUNTS must be defined when POLYGONS_LENGTH is greater than 0");let z=U.reduce(function($,X){return $+X*2},0),F=Q.reduce(function($,X){return $+X},0),H=new Uint32Array(t,n,F);n+=h;let W=new Uint16Array(t,n,z);n+=A;let Z,Y;l(_.POLYGON_MINIMUM_HEIGHTS)&&l(_.POLYGON_MAXIMUM_HEIGHTS)&&(Z=P.getPropertyArray("POLYGON_MINIMUM_HEIGHTS",q.FLOAT,1),Y=P.getPropertyArray("POLYGON_MAXIMUM_HEIGHTS",q.FLOAT,1)),e._polygons=new dk({positions:W,counts:U,indexCounts:Q,indices:H,minimumHeight:p,maximumHeight:x,polygonMinimumHeights:Z,polygonMaximumHeights:Y,center:w,rectangle:L,boundingVolume:e.tile.boundingVolume.boundingVolume,batchTable:v,batchIds:M.polygons,modelMatrix:T})}let O=e._tileset;if(b>0){P.featuresLength=b;let U=P.getPropertyArray("POLYLINE_COUNTS",q.UNSIGNED_INT,1)??P.getPropertyArray("POLYLINE_COUNT",q.UNSIGNED_INT,1);if(!l(U))throw new ce("Feature table property: POLYLINE_COUNTS must be defined when POLYLINES_LENGTH is greater than 0");let Q=P.getPropertyArray("POLYLINE_WIDTHS",q.UNSIGNED_SHORT,1);if(!l(Q)){Q=new Uint16Array(b);for(let Z=0;Z<b;++Z)Q[Z]=2}let z=U.reduce(function(Z,Y){return Z+Y*3},0),F=new Uint16Array(t,n,z);n+=g;let H=O.examineVectorLinesFunction;if(l(H)){let Z=gk(new Uint16Array(F),L,p,x,te.WGS84);FKe(Z,U,M.polylines,v,e.url,H)}let W=NKe;l(O.classificationType)&&(W=LKe),e._polylines=W({positions:F,widths:Q,counts:U,batchIds:M.polylines,minimumHeight:p,maximumHeight:x,center:w,rectangle:L,boundingVolume:e.tile.boundingVolume.boundingVolume,batchTable:v,classificationType:O.classificationType,keepDecodedPositions:O.vectorKeepDecodedPositions})}if(S>0){let U=new Uint16Array(t,n,S*3);n+=m,e._points=new fk({positions:U,batchIds:M.points,minimumHeight:p,maximumHeight:x,rectangle:L,batchTable:v,heightReference:O.heightReference,scene:O.scene})}}function nY(e){let t=e.featuresLength;if(!l(e._features)&&t>0){let n=new Array(t);l(e._polygons)&&e._polygons.createFeatures(e,n),l(e._polylines)&&e._polylines.createFeatures(e,n),l(e._points)&&e._points.createFeatures(e,n),e._features=n}}ih.prototype.hasProperty=function(e,t){return this._batchTable.hasProperty(e,t)};ih.prototype.getFeature=function(e){return l(this._features)||nY(this),this._features[e]};ih.prototype.applyDebugSettings=function(e,t){l(this._polygons)&&this._polygons.applyDebugSettings(e,t),l(this._polylines)&&this._polylines.applyDebugSettings(e,t),l(this._points)&&this._points.applyDebugSettings(e,t)};ih.prototype.applyStyle=function(e){l(this._features)||nY(this),l(this._polygons)&&this._polygons.applyStyle(e,this._features),l(this._polylines)&&this._polylines.applyStyle(e,this._features),l(this._points)&&this._points.applyStyle(e,this._features)};ih.prototype.update=function(e,t){let n=!0;l(this._polygons)&&(this._polygons.classificationType=this._tileset.classificationType,this._polygons.debugWireframe=this._tileset.debugWireframe,this._polygons.update(t),n=n&&this._polygons.ready),l(this._polylines)&&(this._polylines.update(t),n=n&&this._polylines.ready),l(this._points)&&(this._points.update(t),n=n&&this._points.ready),l(this._batchTable)&&n&&(l(this._features)||nY(this),this._batchTable.update(e,t),this._ready=!0)};ih.prototype.pick=function(e,t,n){};ih.prototype.getPolylinePositions=function(e){let t=this._polylines;if(l(t))return t.getPositions(e)};ih.prototype.isDestroyed=function(){return!1};ih.prototype.destroy=function(){return this._polygons=this._polygons&&this._polygons.destroy(),this._polylines=this._polylines&&this._polylines.destroy(),this._points=this._points&&this._points.destroy(),this._batchTable=this._batchTable&&this._batchTable.destroy(),ue(this)};function FKe(e,t,n,i,o,r){let s=t.length,a=0;for(let c=0;c<s;c++){let u=t[c]*3,f=e.slice(a,a+u);a+=u,r(f,n[c],o,i)}}var _k=ih;function Ma(){}Ma._maxSortingConcurrency=Math.max(jt.hardwareConcurrency-1,1);Ma._sorterTaskProcessor=void 0;Ma._taskProcessorReady=!1;Ma._error=void 0;Ma._getSorterTaskProcessor=function(){if(!l(Ma._sorterTaskProcessor)){let e=new mi("gaussianSplatSorter",Ma._maxSortingConcurrency);e.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/wasm_splats_bg.wasm"}).then(function(t){t?Ma._taskProcessorReady=!0:Ma._error=new ce("Gaussian splat sorter could not be initialized.")}).catch(t=>{Ma._error=t}),Ma._sorterTaskProcessor=e}return Ma._sorterTaskProcessor};Ma.radixSortIndexes=function(e){let t=Ma._getSorterTaskProcessor();if(l(Ma._error))throw Ma._error;if(Ma._taskProcessorReady)return t.scheduleTask(e,[e.primitive.positions.buffer])};var lD=Ma;function Na(){}Na._maxSortingConcurrency=Math.max(jt.hardwareConcurrency-1,1);Na._textureTaskProcessor=void 0;Na._taskProcessorReady=!1;Na._error=void 0;Na._getTextureTaskProcessor=function(){if(!l(Na._textureTaskProcessor)){let e=new mi("gaussianSplatTextureGenerator",Na._maxSortingConcurrency);e.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/wasm_splats_bg.wasm"}).then(function(t){t?Na._taskProcessorReady=!0:Na._error=new ce("Gaussian splat sorter could not be initialized.")}).catch(t=>{Na._error=t}),Na._textureTaskProcessor=e}return Na._textureTaskProcessor};Na.generateFromAttributes=function(e){let t=Na._getTextureTaskProcessor();if(l(Na._error))throw Na._error;if(!Na._taskProcessorReady)return;let{attributes:n}=e;return t.scheduleTask(e,[n.positions.buffer,n.scales.buffer,n.rotations.buffer,n.colors.buffer])};var yk=Na;function QKe(e){let t=new I_;this.shaderBuilder=t,this.uniformMap={},this.renderStateOptions=Ue.getState(Ue.fromCache({depthTest:{enabled:!0,func:Ja.LESS_OR_EQUAL}})),this.alphaOptions=new Qx,this.hasSkipLevelOfDetail=!1,e._useLogDepth&&t.addDefine("LOG_DEPTH_READ_ONLY",void 0,pe.FRAGMENT)}var Ck=QKe;var Ek=`// +// Vertex shader for Gaussian splats. + +// The splats are rendered as quads in view space. Splat attributes are loaded from a texture with precomputed 3D covariance. + +// Passes local quad coordinates and color to the fragment shader for Gaussian evaluation. +// +// Discards splats outside the view frustum or with negligible screen size. +// + +// Transforms and projects splat covariance into screen space and extracts the major and minor axes of the Gaussian ellipsoid +// which is used to calculate the vertex position in clip space. +vec4 calcCovVectors(vec3 viewPos, mat3 Vrk) { + vec4 t = vec4(viewPos, 1.0); + float focal = czm_viewport.z * czm_projection[0][0]; + + float J1 = focal / t.z; + vec2 J2 = -J1 / t.z * t.xy; + mat3 J = mat3( + J1, 0.0, J2.x, + 0.0, J1, J2.y, + 0.0, 0.0, 0.0 + ); + + mat3 R = mat3(czm_modelView); + + //transform our covariance into view space + //ensures orientation is correct + mat3 Vrk_view = R * Vrk * transpose(R); + mat3 cov = transpose(J) * Vrk_view * J; + + float diagonal1 = cov[0][0] + .3; + float offDiagonal = cov[0][1]; + float diagonal2 = cov[1][1] + .3; + + float mid = 0.5 * (diagonal1 + diagonal2); + float radius = length(vec2((diagonal1 - diagonal2) * 0.5, offDiagonal)); + float lambda1 = mid + radius; + float lambda2 = max(mid - radius, 0.1); + + vec2 diagonalVector = normalize(vec2(offDiagonal, lambda1 - diagonal1)); + + return vec4( + min(sqrt(2.0 * lambda1), 1024.0) * diagonalVector, + min(sqrt(2.0 * lambda2), 1024.0) * vec2(diagonalVector.y, -diagonalVector.x) + ); +} + +highp vec4 discardVec = vec4(0.0, 0.0, 2.0, 1.0); + +void main() { + uint texIdx = uint(a_splatIndex); + ivec2 posCoord = ivec2((texIdx & 0x3ffu) << 1, texIdx >> 10); + vec4 splatPosition = vec4( uintBitsToFloat(uvec4(texelFetch(u_splatAttributeTexture, posCoord, 0))) ); + + vec4 splatViewPos = czm_modelView * vec4(splatPosition.xyz, 1.0); + vec4 clipPosition = czm_projection * splatViewPos; + + float clip = 1.2 * clipPosition.w; + if (clipPosition.z < -clip || clipPosition.x < -clip || clipPosition.x > clip || + clipPosition.y < -clip || clipPosition.y > clip) { + gl_Position = vec4(0.0, 0.0, 2.0, 1.0); + return; + } + + ivec2 covCoord = ivec2(((texIdx & 0x3ffu) << 1) | 1u, texIdx >> 10); + uvec4 covariance = uvec4(texelFetch(u_splatAttributeTexture, covCoord, 0)); + + gl_Position = clipPosition; + + vec2 u1 = unpackHalf2x16(covariance.x) ; + vec2 u2 = unpackHalf2x16(covariance.y); + vec2 u3 = unpackHalf2x16(covariance.z); + mat3 Vrk = mat3(u1.x, u1.y, u2.x, u1.y, u2.y, u3.x, u2.x, u3.x, u3.y); + + vec4 covVectors = calcCovVectors(splatViewPos.xyz, Vrk); + + if (dot(covVectors.xy, covVectors.xy) < 4.0 && dot(covVectors.zw, covVectors.zw) < 4.0) { + gl_Position = discardVec; + return; + } + + vec2 corner = vec2((gl_VertexID << 1) & 2, gl_VertexID & 2) - 1.; + + gl_Position += vec4((corner.x * covVectors.xy + corner.y * covVectors.zw) / czm_viewport.zw * gl_Position.w, 0, 0); + gl_Position.z = clamp(gl_Position.z, -abs(gl_Position.w), abs(gl_Position.w)); + + v_vertPos = corner ; + v_splatColor = vec4(covariance.w & 0xffu, (covariance.w >> 8) & 0xffu, (covariance.w >> 16) & 0xffu, (covariance.w >> 24) & 0xffu) / 255.0; + + v_splitDirection = u_splitDirection; +}`;var Ik=`// +// Fragment shader for Gaussian splats. +// Renders a Gaussian splat within a quad, discarding fragments outside the unit circle. +// Applies an approximate Gaussian falloff based on distance from the center and outputs +// a color modulated by the alpha and Gaussian weight. +// +void main() { + if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; + + mediump float A = dot(v_vertPos, v_vertPos); + if(A > 1.0) { + discard; + } + mediump float scale = 4.0; + mediump float B = exp(-A * scale) * (v_splatColor.a); + out_FragColor = vec4(v_splatColor.rgb * B, B); +} +`;var uD=new R,Mue=new R,fE=new R,tu={IDLE:0,WAITING:1,SORTING:2,SORTED:3,ERROR:4};function Rue(e,t){return new Nt({context:e,source:{width:t.width,height:t.height,arrayBufferView:t.data},preMultiplyAlpha:!1,skipColorSpaceConversion:!0,pixelFormat:et.RGBA_INTEGER,pixelDatatype:He.UNSIGNED_INT,flipY:!1,sampler:on.NEAREST})}function Nu(e){e=e??V.EMPTY_OBJECT,this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,this._numSplats=0,this._needsGaussianSplatTexture=!0,this._prevViewMatrix=new R,this._debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.gaussianSplatTexture=void 0,this._lastTextureWidth=0,this._lastTextureHeight=0,this._vertexArray=void 0,this._vertexArrayLen=-1,this._splitDirection=wr.NONE,this._dirty=!1,this._tileset=e.tileset,this._baseTilesetUpdate=this._tileset.update,this._tileset.update=this._wrappedUpdate.bind(this),this._tileset.tileLoad.addEventListener(this.onTileLoad,this),this._tileset.tileVisible.addEventListener(this.onTileVisible,this),this.selectedTileLength=0,this._ready=!1,this._hasGaussianSplatTexture=!1,this._gaussianSplatTexturePending=!1,this._drawCommand=void 0,this._rootTransform=void 0,this._axisCorrectionMatrix=Qt.getAxisCorrectionMatrix(Ao.Y,Ao.X,new R),this._isDestroyed=!1,this._sorterState=tu.IDLE,this._sorterPromise=void 0,this._sorterError=void 0}Object.defineProperties(Nu.prototype,{ready:{get:function(){return this._ready}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,this._dirty=!0)}}});Nu.prototype._wrappedUpdate=function(e){this._baseTilesetUpdate.call(this._tileset,e),this.update(e)};Nu.prototype.destroy=function(){this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,l(this.gaussianSplatTexture)&&(this.gaussianSplatTexture.destroy(),this.gaussianSplatTexture=void 0);let e=this._drawCommand;return l(e)&&(e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy()),l(this._vertexArray)&&(this._vertexArray.destroy(),this._vertexArray=void 0),this._tileset.update=this._baseTilesetUpdate.bind(this._tileset),ue(this)};Nu.prototype.isDestroyed=function(){return this._isDestroyed};Nu.prototype.onTileLoad=function(e){this._dirty=!0};Nu.prototype.onTileVisible=function(e){};Nu.transformTile=function(e){let t=e.computedTransform,n=e.content.splatPrimitive,i=e.tileset.gaussianSplatPrimitive,o=R.multiplyTransformation(t,i._axisCorrectionMatrix,uD);R.multiplyTransformation(o,e.content.worldTransform,o);let r=R.multiply(e.tileset.modelMatrix,R.fromArray(e.tileset.root.transform),Mue),s=R.inverse(r,fE),a=R.multiplyTransformation(s,o,uD),c=e.content._originalPositions,u=e.content._originalRotations,f=e.content._originalScales,h=Qt.getAttributeBySemantic(n,ct.POSITION).typedArray,A=Qt.getAttributeBySemantic(n,ct.ROTATION).typedArray,g=Qt.getAttributeBySemantic(n,ct.SCALE).typedArray,m=new d,_=new Le,y=new d;for(let C=0;C<c.length/3;++C)m.x=c[C*3],m.y=c[C*3+1],m.z=c[C*3+2],_.x=u[C*4],_.y=u[C*4+1],_.z=u[C*4+2],_.w=u[C*4+3],y.x=f[C*3],y.y=f[C*3+1],y.z=f[C*3+2],R.fromTranslationQuaternionRotationScale(m,_,y,fE),R.multiplyTransformation(a,fE,fE),R.getTranslation(fE,m),R.getRotation(fE,_),R.getScale(fE,y),h[C*3]=m.x,h[C*3+1]=m.y,h[C*3+2]=m.z,A[C*4]=_.x,A[C*4+1]=_.y,A[C*4+2]=_.z,A[C*4+3]=_.w,g[C*3]=y.x,g[C*3+1]=y.y,g[C*3+2]=y.z};Nu.generateSplatTexture=function(e,t){e._gaussianSplatTexturePending=!0;let n=yk.generateFromAttributes({attributes:{positions:new Float32Array(e._positions),scales:new Float32Array(e._scales),rotations:new Float32Array(e._rotations),colors:new Uint8Array(e._colors)},count:e._numSplats});if(!l(n)){e._gaussianSplatTexturePending=!1;return}n.then(i=>{if(!e._gaussianSplatTexture)e.gaussianSplatTexture=Rue(t.context,i);else if(e._lastTextureHeight!==i.height||e._lastTextureWidth!==i.width){let o=e.gaussianSplatTexture;e._gaussianSplatTexture=Rue(t.context,i),o.destroy()}else e.gaussianSplatTexture.copyFrom({source:{width:i.width,height:i.height,arrayBufferView:i.data}});e._lastTextureHeight=i.height,e._lastTextureWidth=i.width,e._hasGaussianSplatTexture=!0,e._needsGaussianSplatTexture=!1,e._gaussianSplatTexturePending=!1,(!l(e._indexes)||e._indexes.length<e._numSplats)&&(e._indexes=new Uint32Array(e._numSplats));for(let o=0;o<e._numSplats;++o)e._indexes[o]=o}).catch(i=>{console.error("Error generating Gaussian splat texture:",i),e._gaussianSplatTexturePending=!1})};Nu.buildGSplatDrawCommand=function(e,t){let n=e._tileset,i=new Ck(e),{shaderBuilder:o}=i,r=i.renderStateOptions;r.cull.enabled=!1,r.depthMask=!1,r.depthTest.enabled=!0,r.blending=pn.PRE_MULTIPLIED_ALPHA_BLEND,i.alphaOptions.pass=Be.GAUSSIAN_SPLATS,o.addAttribute("vec2","a_screenQuadPosition"),o.addAttribute("float","a_splatIndex"),o.addVarying("vec4","v_splatColor"),o.addVarying("vec2","v_vertPos"),o.addUniform("float","u_splitDirection",pe.VERTEX),o.addVarying("float","v_splitDirection"),o.addUniform("highp usampler2D","u_splatAttributeTexture",pe.VERTEX);let s=i.uniformMap;s.u_splatAttributeTexture=function(){return e.gaussianSplatTexture},s.u_splitDirection=function(){return e.splitDirection},i.instanceCount=e._numSplats,i.count=4,i.primitiveType=Me.TRIANGLE_STRIP,o.addVertexLines(Ek),o.addFragmentLines(Ik);let a=o.buildShaderProgram(t.context),c=ze(Ue.fromCache(i.renderStateOptions),!0);c.cull.face=Qt.getCullFace(n.modelMatrix,Me.TRIANGLE_STRIP),c=Ue.fromCache(c);let u={screenQuadPosition:0,splatIndex:2},f=new bn.Attribute;if(f.name="_SPLAT_INDEXES",f.typedArray=e._indexes,f.componentDatatype=q.UNSIGNED_INT,f.type=Ht.SCALAR,f.normalized=!1,f.count=i.instanceCount,f.constant=0,f.instanceDivisor=1,!l(e._vertexArray)||e._indexes.length>e._vertexArrayLen){let g=new ht({attributes:{screenQuadPosition:new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:[-1,-1,1,-1,1,1,-1,1],name:"_SCREEN_QUAD_POS",variableName:"screenQuadPosition"}),splatIndex:{...f,variableName:"splatIndex"}},primitiveType:Me.TRIANGLE_STRIP});e._vertexArray=li.fromGeometry({context:t.context,geometry:g,attributeLocations:u,bufferUsage:Qe.DYNAMIC_DRAW,interleave:!1})}else e._vertexArray.getAttribute(1).vertexBuffer.copyFromArrayView(e._indexes);e._vertexArrayLen=e._indexes.length;let h=R.multiply(n.modelMatrix,R.fromArray(n.root.transform),Mue),A=new nt({boundingVolume:n.boundingSphere,modelMatrix:h,uniformMap:s,renderState:c,vertexArray:e._vertexArray,shaderProgram:a,cull:r.cull.enabled,pass:Be.GAUSSIAN_SPLATS,count:i.count,owner:this,instanceCount:i.instanceCount,primitiveType:Me.TRIANGLE_STRIP,debugShowBoundingVolume:n.debugShowBoundingVolume,castShadows:!1,receiveShadows:!1});e._drawCommand=A};Nu.prototype.update=function(e){let t=this._tileset;if(l(this._rootTransform)||(this._rootTransform=t.root.computedTransform),this._drawCommand&&t.show&&e.commandList.push(this._drawCommand),t._modelMatrixChanged){this._dirty=!0;return}if(e.passes.pick!==!0){if(this.splitDirection!==t.splitDirection&&(this.splitDirection=t.splitDirection),this._sorterState===tu.IDLE){if(!this._dirty&&R.equals(e.camera.viewMatrix,this._prevViewMatrix))return;if(t._selectedTiles.length!==0&&t._selectedTiles.length!==this.selectedTileLength){this._numSplats=0,this._positions=void 0,this._rotations=void 0,this._scales=void 0,this._colors=void 0,this._indexes=void 0,this._needsGaussianSplatTexture=!0,this._gaussianSplatTexturePending=!1;let n=t._selectedTiles,i=n.reduce((r,s)=>r+s.content.pointsLength,0),o=(r,s)=>{let a,c=0;for(let u of n){let f=u.content.splatPrimitive,h=s(f);l(a)||(a=q.createTypedArray(r,i*Ht.getNumberOfComponents(h.type))),a.set(h.typedArray,c),c+=h.typedArray.length}return a};this._positions=o(q.FLOAT,r=>Qt.getAttributeBySemantic(r,ct.POSITION)),this._scales=o(q.FLOAT,r=>Qt.getAttributeBySemantic(r,ct.SCALE)),this._rotations=o(q.FLOAT,r=>Qt.getAttributeBySemantic(r,ct.ROTATION)),this._colors=o(q.UNSIGNED_BYTE,r=>Qt.getAttributeBySemantic(r,ct.COLOR)),this._numSplats=i,this.selectedTileLength=t._selectedTiles.length}if(this._numSplats===0)return;if(this._needsGaussianSplatTexture){this._gaussianSplatTexturePending||Nu.generateSplatTexture(this,e);return}if(R.clone(e.camera.viewMatrix,this._prevViewMatrix),R.multiply(e.camera.viewMatrix,this._rootTransform,uD),l(this._sorterPromise)||(this._sorterPromise=lD.radixSortIndexes({primitive:{positions:new Float32Array(this._positions),modelView:Float32Array.from(uD),count:this._numSplats},sortType:"Index"})),!l(this._sorterPromise)){this._sorterState=tu.WAITING;return}this._sorterPromise.catch(n=>{this._sorterState=tu.ERROR,this._sorterError=n}),this._sorterPromise.then(n=>{this._indexes=n,this._sorterState=tu.SORTED})}else if(this._sorterState===tu.WAITING){if(l(this._sorterPromise)||(this._sorterPromise=lD.radixSortIndexes({primitive:{positions:new Float32Array(this._positions),modelView:Float32Array.from(uD),count:this._numSplats},sortType:"Index"})),!l(this._sorterPromise)){this._sorterState=tu.WAITING;return}this._sorterPromise.catch(n=>{this._sorterState=tu.ERROR,this._sorterError=n}),this._sorterPromise.then(n=>{this._indexes=n,this._sorterState=tu.SORTED}),this._sorterState=tu.SORTING}else{if(this._sorterState===tu.SORTING)return;if(this._sorterState===tu.SORTED)Nu.buildGSplatDrawCommand(this,e),this._sorterState=tu.IDLE,this._dirty=!1,this._sorterPromise=void 0;else if(this._sorterState===tu.ERROR)throw this._sorterError}this._dirty=!1}};var fD=Nu;function Kf(e,t,n,i){this._tileset=t,this._tile=n,this._resource=i,this._loader=e,l(this._tileset.gaussianSplatPrimitive)||(this._tileset.gaussianSplatPrimitive=new fD({tileset:this._tileset})),this._originalPositions=void 0,this._originalRotations=void 0,this._originalScales=void 0,this.splatPrimitive=void 0,this.worldTransform=void 0,this.featurePropertiesDirty=!1,this._metadata=void 0,this._group=void 0,this._ready=!1,this._transformed=!1}Object.defineProperties(Kf.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return this.splatPrimitive.attributes[0].count}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return this.splatPrimitive.attributes.reduce((e,t)=>e+t.byteLength,0)}},texturesByteLength:{get:function(){let e=this._tileset.gaussianSplatPrimitive.gaussianSplatTexture,t=this._tileset.gaussianSplatPrimitive.selectedTileLength;return!l(e)||t===0?0:e.sizeInBytes/t}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return this._ready}},transformed:{get:function(){return this._transformed}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){return this._resource.getUrlComponent(!0)}},batchTable:{get:function(){}},metadata:{get:function(){return this._metadata},set:function(e){this._metadata=e}},group:{get:function(){return this._group},set:function(e){this._group=e}}});Kf.fromGltf=async function(e,t,n,i){let o=n,r=we.createIfNeeded(o),s={releaseGltfJson:!1,upAxis:Ao.Y,forwardAxis:Ao.Z};l(i.asset)?(s.gltfJson=i,s.baseResource=r,s.gltfResource=r):i instanceof Uint8Array?(s.typedArray=i,s.baseResource=r,s.gltfResource=r):s.gltfResource=we.createIfNeeded(i);let a=new Ff(s);try{await a.load()}catch(c){throw a.destroy(),new ce(`Failed to load glTF: ${c.message}`)}return new Kf(a,e,t,n)};Kf.prototype.update=function(e,t){let n=this._loader;if(this._ready){!this._transformed&&e.root.content.ready&&(fD.transformTile(this._tile),this._transformed=!0);return}if(t.afterRender.push(()=>!0),!l(n)){this._ready=!0;return}if(this._resourcesLoaded){this.splatPrimitive=n.components.scene.nodes[0].primitives[0],this.worldTransform=n.components.scene.nodes[0].matrix,this._ready=!0,this._originalPositions=new Float32Array(Qt.getAttributeBySemantic(this.splatPrimitive,ct.POSITION).typedArray),this._originalRotations=new Float32Array(Qt.getAttributeBySemantic(this.splatPrimitive,ct.ROTATION).typedArray),this._originalScales=new Float32Array(Qt.getAttributeBySemantic(this.splatPrimitive,ct.SCALE).typedArray);return}this._resourcesLoaded=n.process(t)};Kf.prototype.hasProperty=function(e,t){return!1};Kf.prototype.getFeature=function(e){};Kf.prototype.applyDebugSettings=function(e,t){};Kf.prototype.applyStyle=function(e){};Kf.prototype.pick=function(e,t,n){};Kf.prototype.isDestroyed=function(){return this.isDestroyed};Kf.prototype.destroy=function(){return this.splatPrimitive=void 0,l(this._tileset.gaussianSplatPrimitive)&&!this._tileset.gaussianSplatPrimitive.isDestroyed()&&this._tileset.gaussianSplatPrimitive.destroy(),this._tileset.gaussianSplatPrimitive=void 0,this._tile=void 0,this._tileset=void 0,this._resource=void 0,this._ready=!1,this._group=void 0,this._metadata=void 0,this._resourcesLoaded=!1,l(this._loader)&&(this._loader.destroy(),this._loader=void 0),ue(this)};var dD=Kf;var Nue={b3dm:function(e,t,n,i,o){return zf.fromB3dm(e,t,n,i,o)},pnts:function(e,t,n,i,o){return zf.fromPnts(e,t,n,i,o)},i3dm:function(e,t,n,i,o){return zf.fromI3dm(e,t,n,i,o)},cmpt:function(e,t,n,i,o){return dO.fromTileType(e,t,n,i,o,Nue)},externalTileset:function(e,t,n,i){return $Q.fromJson(e,t,n,i)},geom:function(e,t,n,i,o){return new yO(e,t,n,i,o)},vctr:function(e,t,n,i,o){return new _k(e,t,n,i,o)},subt:function(e,t,n,i,o){return uB.fromSubtreeJson(e,t,n,void 0,i,o)},subtreeJson:function(e,t,n,i){return uB.fromSubtreeJson(e,t,n,i)},glb:function(e,t,n,i,o){if(i.byteLength<12)throw new ce("Invalid glb content");let a=new DataView(i,o).getUint32(8,!0),c=new Uint8Array(i,o,a),u=!1;return e.isGltfExtensionRequired instanceof Function&&(u=e.isGltfExtensionRequired("KHR_spz_gaussian_splats_compression")),u?dD.fromGltf(e,t,n,c):zf.fromGltf(e,t,n,c)},gltf:function(e,t,n,i){let o=e.debugTreatTilesetAsGaussianSplats??!1,r=!1;return e.isGltfExtensionRequired instanceof Function&&(r=e.isGltfExtensionRequired("KHR_spz_gaussian_splats_compression")),o||r?dD.fromGltf(e,t,n,i):zf.fromGltf(e,t,n,i)},geoJson:function(e,t,n,i){return zf.fromGeoJson(e,t,n,i)}},Xx=Nue;var kKe={UNLOADED:0,LOADING:1,PROCESSING:2,READY:3,EXPIRED:4,FAILED:5},cr=Object.freeze(kKe);var oh={BATCHED_3D_MODEL:"b3dm",INSTANCED_3D_MODEL:"i3dm",COMPOSITE:"cmpt",POINT_CLOUD:"pnts",VECTOR:"vctr",GEOMETRY:"geom",GLTF:"gltf",GLTF_BINARY:"glb",IMPLICIT_SUBTREE:"subt",IMPLICIT_SUBTREE_JSON:"subtreeJson",EXTERNAL_TILESET:"externalTileset",MULTIPLE_CONTENT:"multipleContent",GEOJSON:"geoJson",VOXEL_BINARY:"voxl",VOXEL_JSON:"voxelJson"};oh.isBinaryFormat=function(e){switch(e){case oh.BATCHED_3D_MODEL:case oh.INSTANCED_3D_MODEL:case oh.COMPOSITE:case oh.POINT_CLOUD:case oh.VECTOR:case oh.GEOMETRY:case oh.IMPLICIT_SUBTREE:case oh.VOXEL_BINARY:case oh.GLTF_BINARY:return!0;default:return!1}};var ua=Object.freeze(oh);var UKe={NOT_COMPUTED:-1,USE_OPTIMIZATION:1,SKIP_OPTIMIZATION:0},rh=Object.freeze(UKe);var fa={RENDER:0,PICK:1,SHADOW:2,PRELOAD:3,PRELOAD_FLIGHT:4,REQUEST_RENDER_MODE_DEFER_CHECK:5,MOST_DETAILED_PRELOAD:6,MOST_DETAILED_PICK:7,NUMBER_OF_PASSES:8},yp=new Array(fa.NUMBER_OF_PASSES);yp[fa.RENDER]=Object.freeze({pass:fa.RENDER,isRender:!0,requestTiles:!0,ignoreCommands:!1});yp[fa.PICK]=Object.freeze({pass:fa.PICK,isRender:!1,requestTiles:!1,ignoreCommands:!1});yp[fa.SHADOW]=Object.freeze({pass:fa.SHADOW,isRender:!1,requestTiles:!0,ignoreCommands:!1});yp[fa.PRELOAD]=Object.freeze({pass:fa.PRELOAD,isRender:!1,requestTiles:!0,ignoreCommands:!0});yp[fa.PRELOAD_FLIGHT]=Object.freeze({pass:fa.PRELOAD_FLIGHT,isRender:!1,requestTiles:!0,ignoreCommands:!0});yp[fa.REQUEST_RENDER_MODE_DEFER_CHECK]=Object.freeze({pass:fa.REQUEST_RENDER_MODE_DEFER_CHECK,isRender:!1,requestTiles:!0,ignoreCommands:!0});yp[fa.MOST_DETAILED_PRELOAD]=Object.freeze({pass:fa.MOST_DETAILED_PRELOAD,isRender:!1,requestTiles:!0,ignoreCommands:!0});yp[fa.MOST_DETAILED_PICK]=Object.freeze({pass:fa.MOST_DETAILED_PICK,isRender:!1,requestTiles:!1,ignoreCommands:!1});fa.getPassOptions=function(e){return yp[e]};var Zo=Object.freeze(fa);function Qm(e,t){this._tileset=e,this._tile=t,this.featurePropertiesDirty=!1}Object.defineProperties(Qm.prototype,{featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){}},ready:{get:function(){return!0}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){}},metadata:{get:function(){},set:function(e){}},batchTable:{get:function(){}},group:{get:function(){},set:function(e){}}});Qm.prototype.hasProperty=function(e,t){return!1};Qm.prototype.getFeature=function(e){};Qm.prototype.applyDebugSettings=function(e,t){};Qm.prototype.applyStyle=function(e){};Qm.prototype.update=function(e,t){};Qm.prototype.pick=function(e,t,n){};Qm.prototype.isDestroyed=function(){return!1};Qm.prototype.destroy=function(){return ue(this)};var hD=Qm;function Cp(e){e=e??V.EMPTY_OBJECT;let t=e.content,n=e.class;this._class=n,this._properties=t.properties,this._extensions=t.extensions,this._extras=t.extras}Object.defineProperties(Cp.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});Cp.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};Cp.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};Cp.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};Cp.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};Cp.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};Cp.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};Cp.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var xk=Cp;function iY(e,t){let n=Ii(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t.metadata;if(!l(n))return;if(!l(e.schema)){iY._oneTimeWarning("findContentMetadata-missing-root-schema","Could not find a metadata schema for content metadata. For tilesets that contain external tilesets, make sure the schema is added to the root tileset.json.");return}let i=e.schema.classes??V.EMPTY_OBJECT;if(l(n.class)){let o=i[n.class];return new xk({content:n,class:o})}}iY._oneTimeWarning=yt;var Jx=iY;function GKe(e,t){let n=e.metadataExtension;if(!l(n))return;let i=n.groups,o=Ii(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"].group:t.group;if(typeof o=="number")return i[o];let r=n.groupIds.findIndex(function(s){return s===o});return r>=0?i[r]:void 0}var Zx=GKe;function Ep(e){e=e??V.EMPTY_OBJECT;let t=e.tile,n=e.class;this._class=n,this._properties=t.properties,this._extensions=t.extensions,this._extras=t.extras}Object.defineProperties(Ep.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});Ep.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};Ep.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};Ep.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};Ep.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};Ep.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};Ep.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};Ep.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var bk=Ep;function oY(e,t){let n=Ii(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t.metadata;if(!l(n))return;if(!l(e.schema)){oY._oneTimeWarning("findTileMetadata-missing-root-schema","Could not find a metadata schema for tile metadata. For tilesets that contain external tilesets, make sure the schema is added to the root tileset.json.");return}let i=e.schema.classes??V.EMPTY_OBJECT;if(l(n.class)){let o=i[n.class];return new bk({tile:n,class:o})}}oY._oneTimeWarning=yt;var Tk=oY;function zKe(e){let t=new Uint8Array(e),n=gm(t);if(n==="glTF"&&(n="glb"),ua.isBinaryFormat(n))return{contentType:n,binaryPayload:t};let i=VKe(t);if(l(i.root))return{contentType:ua.EXTERNAL_TILESET,jsonPayload:i};if(l(i.asset))return{contentType:ua.GLTF,jsonPayload:i};if(l(i.tileAvailability))return{contentType:ua.IMPLICIT_SUBTREE_JSON,jsonPayload:i};if(l(i.type))return{contentType:ua.GEOJSON,jsonPayload:i};if(l(i.voxelTable))return{contentType:ua.VOXEL_JSON,jsonPayload:i};throw new ce("Invalid tile content.")}function VKe(e){let t;try{t=yr(e)}catch{throw new ce("Invalid tile content.")}return t}var R_=zKe;function Xf(e,t,n,i){this._tileset=e,this._tile=t,this._tilesetResource=n,this._contents=[],this._contentsCreated=!1;let o=l(i.contents)?i.contents:i.content;this._innerContentHeaders=o,this._requestsInFlight=0,this._cancelCount=0,this._externalTilesetCount=0;let r=this._innerContentHeaders.length;this._arrayFetchPromises=new Array(r),this._requests=new Array(r),this._ready=!1,this._innerContentResources=new Array(r),this._serverKeys=new Array(r);for(let s=0;s<r;s++){let a=n.getDerivedResource({url:o[s].uri}),c=Yc.getServerKey(a.getUrlComponent());this._innerContentResources[s]=a,this._serverKeys[s]=c}}Object.defineProperties(Xf.prototype,{featurePropertiesDirty:{get:function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)if(e[n].featurePropertiesDirty)return!0;return!1},set:function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].featurePropertiesDirty=e}},featuresLength:{get:function(){return 0}},pointsLength:{get:function(){return 0}},trianglesLength:{get:function(){return 0}},geometryByteLength:{get:function(){return 0}},texturesByteLength:{get:function(){return 0}},batchTableByteLength:{get:function(){return 0}},innerContents:{get:function(){return this._contents}},ready:{get:function(){return this._contentsCreated?this._ready:!1}},tileset:{get:function(){return this._tileset}},tile:{get:function(){return this._tile}},url:{get:function(){}},metadata:{get:function(){},set:function(){}},batchTable:{get:function(){}},group:{get:function(){},set:function(){}},innerContentUrls:{get:function(){return this._innerContentHeaders.map(function(e){return e.uri})}}});function rY(e,t){e._requestsInFlight+=t,e.tileset.statistics.numberOfPendingRequests+=t}function Lue(e,t){e._cancelCount++,e._tile._contentState=t;let n=e.tileset.statistics;n.numberOfPendingRequests-=e._requestsInFlight,n.numberOfAttemptedRequests+=e._requestsInFlight,e._requestsInFlight=0;let i=e._innerContentHeaders.length;e._arrayFetchPromises=new Array(i)}Xf.prototype.requestInnerContents=function(){if(!HKe(this._serverKeys)){this.tileset.statistics.numberOfAttemptedRequests+=this._serverKeys.length;return}let e=this._innerContentHeaders;rY(this,e.length);let t=this._cancelCount;for(let n=0;n<e.length;n++)this._arrayFetchPromises[n]=WKe(this,n,t,this._tile._contentState);return jKe(this)};function HKe(e){let t={};for(let n=0;n<e.length;n++){let i=e[n];l(t[i])?t[i]++:t[i]=1}for(let n in t)if(t.hasOwnProperty(n)&&!Yc.serverHasOpenSlots(n,t[n]))return!1;return Yc.heapHasOpenSlots(e.length)}function WKe(e,t,n,i){let o=e._innerContentResources[t].clone(),r=e.tile,s=function(){return r._priority},a=e._serverKeys[t],c=new pr({throttle:!0,throttleByServer:!0,type:Us.TILES3D,priorityFunction:s,serverKey:a});o.request=c,e._requests[t]=c;let u=o.fetchArrayBuffer();if(l(u))return u.then(function(f){if(!(n<e._cancelCount)){if(o.request.cancelled||o.request.state===hi.CANCELLED){Lue(e,i);return}return rY(e,-1),f}}).catch(function(f){if(!(n<e._cancelCount)){if(o.request.cancelled||o.request.state===hi.CANCELLED){Lue(e,i);return}rY(e,-1),Oue(e,t,f)}})}async function jKe(e){let t=e._cancelCount,n=await Promise.all(e._arrayFetchPromises);if(t<e._cancelCount)return;let i=n.map((r,s)=>YKe(e,r,s)),o=await Promise.all(i);if(e._contentsCreated=!0,e._contents=o.filter(l),e._externalTilesetCount===e._contents.length){let r=e._tile;r.hasRenderableContent=!1}return o}async function YKe(e,t,n){if(l(t))try{let i=R_(t),o=e._tileset,r=e._innerContentResources[n],s=e._tile;i.contentType===ua.EXTERNAL_TILESET&&(e._externalTilesetCount++,s.hasTilesetContent=!0),e._disableSkipLevelOfDetail=e._disableSkipLevelOfDetail||i.contentType===ua.GEOMETRY||i.contentType===ua.VECTOR;let a,c=Xx[i.contentType];l(i.binaryPayload)?a=await Promise.resolve(c(o,s,r,i.binaryPayload.buffer,0)):a=await Promise.resolve(c(o,s,r,i.jsonPayload));let u=e._innerContentHeaders[n];if(s.hasImplicitContentMetadata){let h=s.implicitSubtree,A=s.implicitCoordinates;a.metadata=h.getContentMetadataView(A,n)}else s.hasImplicitContent||(a.metadata=Jx(o,u));let f=Zx(o,u);return l(f)&&(a.group=new zI({metadata:f})),a}catch(i){Oue(e,n,i)}}function Oue(e,t,n){let i=e._tileset,o=e._innerContentResources[t].url,r=l(n.message)?n.message:n.toString();i.tileFailed.numberOfListeners>0?i.tileFailed.raiseEvent({url:o,message:r}):(console.log(`A content failed to load: ${o}`),console.log(`Error: ${r}`))}Xf.prototype.cancelRequests=function(){for(let e=0;e<this._requests.length;e++){let t=this._requests[e];l(t)&&t.cancel()}};Xf.prototype.hasProperty=function(e,t){return!1};Xf.prototype.getFeature=function(e){};Xf.prototype.applyDebugSettings=function(e,t){let n=this._contents,i=n.length;for(let o=0;o<i;++o)n[o].applyDebugSettings(e,t)};Xf.prototype.applyStyle=function(e){let t=this._contents,n=t.length;for(let i=0;i<n;++i)t[i].applyStyle(e)};Xf.prototype.update=function(e,t){let n=this._contents,i=n.length,o=!0;for(let r=0;r<i;++r)n[r].update(e,t),o=o&&n[r].ready;!this._ready&&o&&(this._ready=!0)};Xf.prototype.pick=function(e,t,n){if(!this._ready)return;let i,o=Number.POSITIVE_INFINITY,r=this._contents,s=r.length;for(let a=0;a<s;++a){let c=r[a].pick(e,t,n);if(!l(c))continue;let u=d.distance(e.origin,c);u<o&&(i=c,o=u)}if(l(i))return n};Xf.prototype.isDestroyed=function(){return!1};Xf.prototype.destroy=function(){let e=this._contents,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var Sk=Xf;var Fue=Math.cos,Que=Math.sin,qKe=Math.sqrt,sY={};sY.computePosition=function(e,t,n,i,o,r,s){let a=t.radiiSquared,c=e.nwCorner,u=e.boundingRectangle,f=c.latitude-e.granYCos*i+o*e.granXSin,h=Fue(f),A=Que(f),g=a.z*A,m=c.longitude+i*e.granYSin+o*e.granXCos,_=h*Fue(m),y=h*Que(m),C=a.x*_,E=a.y*y,I=qKe(C*_+E*y+g*A);if(r.x=C/I,r.y=E/I,r.z=g/I,n){let b=e.stNwCorner;l(b)?(f=b.latitude-e.stGranYCos*i+o*e.stGranXSin,m=b.longitude+i*e.stGranYSin+o*e.stGranXCos,s.x=(m-e.stWest)*e.lonScalar,s.y=(f-e.stSouth)*e.latScalar):(s.x=(m-u.west)*e.lonScalar,s.y=(f-u.south)*e.latScalar)}};var KKe=new Wi,Jf=new d,XKe=new Ae,wk=new d,mD=new Hi;function kue(e,t,n,i,o,r,s){let a=Math.cos(t),c=i*a,u=n*a,f=Math.sin(t),h=i*f,A=n*f;mD._ellipsoid=te.default,Jf=mD.project(e,Jf),Jf=d.subtract(Jf,wk,Jf);let g=Wi.fromRotation(t,KKe);Jf=Wi.multiplyByVector(g,Jf,Jf),Jf=d.add(Jf,wk,Jf),e=mD.unproject(Jf,e),r-=1,s-=1;let m=e.latitude,_=m+r*A,y=m-c*s,C=m-c*s+r*A,E=Math.max(m,_,y,C),I=Math.min(m,_,y,C),b=e.longitude,S=b+r*u,B=b+s*h,v=b+s*h+r*u,P=Math.max(b,S,B,v),N=Math.min(b,S,B,v);return{north:E,south:I,east:P,west:N,granYCos:c,granYSin:h,granXCos:u,granXSin:A,nwCorner:e}}sY.computeOptions=function(e,t,n,i,o,r,s){let a=e.east,c=e.west,u=e.north,f=e.south,h=!1,A=!1;u===D.PI_OVER_TWO&&(h=!0),f===-D.PI_OVER_TWO&&(A=!0);let g,m=u-f;c>a?g=D.TWO_PI-c+a:g=a-c;let _=Math.ceil(g/t)+1,y=Math.ceil(m/t)+1,C=g/(_-1),E=m/(y-1),I=ae.northwest(e,r),b=ae.center(e,XKe);(n!==0||i!==0)&&(b.longitude<I.longitude&&(b.longitude+=D.TWO_PI),mD._ellipsoid=te.default,wk=mD.project(b,wk));let S=E,B=C,v=0,P=0,N=ae.clone(e,o),L={granYCos:S,granYSin:v,granXCos:B,granXSin:P,nwCorner:I,boundingRectangle:N,width:_,height:y,northCap:h,southCap:A};if(n!==0){let p=kue(I,n,C,E,b,_,y);u=p.north,f=p.south,a=p.east,c=p.west,L.granYCos=p.granYCos,L.granYSin=p.granYSin,L.granXCos=p.granXCos,L.granXSin=p.granXSin,N.north=u,N.south=f,N.east=a,N.west=c}if(i!==0){n=n-i;let p=ae.northwest(N,s),x=kue(p,n,C,E,b,_,y);L.stGranYCos=x.granYCos,L.stGranXCos=x.granXCos,L.stGranYSin=x.granYSin,L.stGranXSin=x.granXSin,L.stNwCorner=p,L.stWest=x.west,L.stSouth=x.south}return L};var da=sY;var JKe=new le,ZKe=new le,$Ke=new d,e7e=new ae;function Uue(e,t){let n=e._ellipsoid,i=t.height,o=t.width,r=t.northCap,s=t.southCap,a=i,c=2,u=0,f=4;r&&(c-=1,a-=1,u+=1,f-=2),s&&(c-=1,a-=1,u+=1,f-=2),u+=c*o+2*a-f;let h=new Float64Array(u*3),A=0,g=0,m,_=$Ke;if(r)da.computePosition(t,n,!1,g,0,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;else for(m=0;m<o;m++)da.computePosition(t,n,!1,g,m,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;for(m=o-1,g=1;g<i;g++)da.computePosition(t,n,!1,g,m,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;if(g=i-1,!s)for(m=o-2;m>=0;m--)da.computePosition(t,n,!1,g,m,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;for(m=0,g=i-2;g>0;g--)da.computePosition(t,n,!1,g,m,_),h[A++]=_.x,h[A++]=_.y,h[A++]=_.z;let y=h.length/3*2,C=Fe.createTypedArray(h.length/3,y),E=0;for(let b=0;b<h.length/3-1;b++)C[E++]=b,C[E++]=b+1;C[E++]=h.length/3-1,C[E++]=0;let I=new ht({attributes:new En,primitiveType:Me.LINES});return I.attributes.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:h}),I.indices=C,I}function t7e(e,t){let n=e._surfaceHeight,i=e._extrudedHeight,o=e._ellipsoid,r=Uue(e,t),s=t.height,a=t.width,c=xi.scaleToGeodeticHeight(r.attributes.position.values,n,o,!1),u=c.length,f=new Float64Array(u*2);f.set(c);let h=xi.scaleToGeodeticHeight(r.attributes.position.values,i,o);f.set(h,u),r.attributes.position.values=f;let A=t.northCap,g=t.southCap,m=4;A&&(m-=1),g&&(m-=1);let _=(f.length/3+m)*2,y=Fe.createTypedArray(f.length/3,_);u=f.length/6;let C=0;for(let I=0;I<u-1;I++)y[C++]=I,y[C++]=I+1,y[C++]=I+u,y[C++]=I+u+1;y[C++]=u-1,y[C++]=0,y[C++]=u+u-1,y[C++]=u,y[C++]=0,y[C++]=u;let E;if(A)E=s-1;else{let I=a-1;y[C++]=I,y[C++]=I+u,E=a+s-2}if(y[C++]=E,y[C++]=E+u,!g){let I=a+E-1;y[C++]=I,y[C]=I+u}return r.indices=y,r}function eb(e){e=e??V.EMPTY_OBJECT;let t=e.rectangle,n=e.granularity??D.RADIANS_PER_DEGREE,i=e.ellipsoid??te.default,o=e.rotation??0,r=e.height??0,s=e.extrudedHeight??r;this._rectangle=ae.clone(t),this._granularity=n,this._ellipsoid=i,this._surfaceHeight=Math.max(r,s),this._rotation=o,this._extrudedHeight=Math.min(r,s),this._offsetAttribute=e.offsetAttribute,this._workerName="createRectangleOutlineGeometry"}eb.packedLength=ae.packedLength+te.packedLength+5;eb.pack=function(e,t,n){return n=n??0,ae.pack(e._rectangle,t,n),n+=ae.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._granularity,t[n++]=e._surfaceHeight,t[n++]=e._rotation,t[n++]=e._extrudedHeight,t[n]=e._offsetAttribute??-1,t};var Gue=new ae,zue=te.clone(te.UNIT_SPHERE),$x={rectangle:Gue,ellipsoid:zue,granularity:void 0,height:void 0,rotation:void 0,extrudedHeight:void 0,offsetAttribute:void 0};eb.unpack=function(e,t,n){t=t??0;let i=ae.unpack(e,t,Gue);t+=ae.packedLength;let o=te.unpack(e,t,zue);t+=te.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],u=e[t];return l(n)?(n._rectangle=ae.clone(i,n._rectangle),n._ellipsoid=te.clone(o,n._ellipsoid),n._surfaceHeight=s,n._rotation=a,n._extrudedHeight=c,n._offsetAttribute=u===-1?void 0:u,n):($x.granularity=r,$x.height=s,$x.rotation=a,$x.extrudedHeight=c,$x.offsetAttribute=u===-1?void 0:u,new eb($x))};var n7e=new Ae;eb.createGeometry=function(e){let t=e._rectangle,n=e._ellipsoid,i=da.computeOptions(t,e._granularity,e._rotation,0,e7e,n7e),o,r;if(D.equalsEpsilon(t.north,t.south,D.EPSILON10)||D.equalsEpsilon(t.east,t.west,D.EPSILON10))return;let s=e._surfaceHeight,a=e._extrudedHeight,c=!D.equalsEpsilon(s,a,0,D.EPSILON2),u;if(c){if(o=t7e(e,i),l(e._offsetAttribute)){let A=o.attributes.position.values.length/3,g=new Uint8Array(A);e._offsetAttribute===hn.TOP?g=g.fill(1,0,A/2):(u=e._offsetAttribute===hn.NONE?0:1,g=g.fill(u)),o.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:g})}let f=le.fromRectangle3D(t,n,s,ZKe),h=le.fromRectangle3D(t,n,a,JKe);r=le.union(f,h)}else{if(o=Uue(e,i),o.attributes.position.values=xi.scaleToGeodeticHeight(o.attributes.position.values,s,n,!1),l(e._offsetAttribute)){let f=o.attributes.position.values.length;u=e._offsetAttribute===hn.NONE?0:1;let h=new Uint8Array(f/3).fill(u);o.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:h})}r=le.fromRectangle3D(t,n,s)}return new ht({attributes:o.attributes,indices:o.indices,primitiveType:Me.LINES,boundingSphere:r,offsetAttribute:e._offsetAttribute})};var tb=eb;function ib(e){this.rectangle=ae.clone(e.rectangle),this.minimumHeight=e.minimumHeight??0,this.maximumHeight=e.maximumHeight??0,this.southwestCornerCartesian=new d,this.northeastCornerCartesian=new d,this.westNormal=new d,this.southNormal=new d,this.eastNormal=new d,this.northNormal=new d;let t=e.ellipsoid??te.WGS84;a7e(this,e.rectangle,t),this._orientedBoundingBox=void 0,this._boundingSphere=void 0,(e.computeBoundingVolumes??!0)&&this.computeBoundingVolumes(t)}Object.defineProperties(ib.prototype,{boundingVolume:{get:function(){return this._orientedBoundingBox}},boundingSphere:{get:function(){return this._boundingSphere}}});ib.prototype.computeBoundingVolumes=function(e){this._orientedBoundingBox=Qn.fromRectangle(this.rectangle,this.minimumHeight,this.maximumHeight,e),this._boundingSphere=le.fromOrientedBoundingBox(this._orientedBoundingBox)};var Vue=new d,Bk=new d,Hue=new d,i7e=new d,o7e=new d,r7e=new d,s7e=new d,Zf=new Ae,Wue=new mn(d.UNIT_X,0),nb=new In;function a7e(e,t,n){n.cartographicToCartesian(ae.southwest(t),e.southwestCornerCartesian),n.cartographicToCartesian(ae.northeast(t),e.northeastCornerCartesian),Zf.longitude=t.west,Zf.latitude=(t.south+t.north)*.5,Zf.height=0;let i=n.cartographicToCartesian(Zf,r7e),o=d.cross(i,d.UNIT_Z,i7e);d.normalize(o,e.westNormal),Zf.longitude=t.east;let r=n.cartographicToCartesian(Zf,s7e),s=d.cross(d.UNIT_Z,r,Vue);d.normalize(s,e.eastNormal);let a=d.subtract(i,r,Vue);d.magnitude(a)===0&&(a=d.clone(o,a));let c=d.normalize(a,o7e),u=t.south,f;if(u>0){Zf.longitude=(t.west+t.east)*.5,Zf.latitude=u;let _=n.cartographicToCartesian(Zf,nb.origin);d.clone(c,nb.direction);let y=mn.fromPointNormal(e.southwestCornerCartesian,e.westNormal,Wue);Ai.rayPlane(nb,y,e.southwestCornerCartesian),f=n.geodeticSurfaceNormal(_,Bk)}else f=n.geodeticSurfaceNormalCartographic(ae.southeast(t),Bk);let h=d.cross(f,a,Hue);d.normalize(h,e.southNormal);let A=t.north,g;if(A<0){Zf.longitude=(t.west+t.east)*.5,Zf.latitude=A;let _=n.cartographicToCartesian(Zf,nb.origin);d.negate(c,nb.direction);let y=mn.fromPointNormal(e.northeastCornerCartesian,e.eastNormal,Wue);Ai.rayPlane(nb,y,e.northeastCornerCartesian),g=n.geodeticSurfaceNormal(_,Bk)}else g=n.geodeticSurfaceNormalCartographic(ae.northwest(t),Bk);let m=d.cross(a,g,Hue);d.normalize(m,e.northNormal)}var c7e=new d,l7e=new d,u7e=new d(0,-1,0),f7e=new d(0,0,-1),jue=new d;function d7e(e,t){let n=t.camera,i=n.positionWC,o=n.positionCartographic,r=0;if(!ae.contains(e.rectangle,o)){let u=e.southwestCornerCartesian,f=e.northeastCornerCartesian,h=e.westNormal,A=e.southNormal,g=e.eastNormal,m=e.northNormal;t.mode!==ie.SCENE3D&&(u=t.mapProjection.project(ae.southwest(e.rectangle),c7e),u.z=u.y,u.y=u.x,u.x=0,f=t.mapProjection.project(ae.northeast(e.rectangle),l7e),f.z=f.y,f.y=f.x,f.x=0,h=u7e,g=d.UNIT_Y,A=f7e,m=d.UNIT_Z);let _=d.subtract(i,u,jue),y=d.dot(_,h),C=d.dot(_,A),E=d.subtract(i,f,jue),I=d.dot(E,g),b=d.dot(E,m);y>0?r+=y*y:I>0&&(r+=I*I),C>0?r+=C*C:b>0&&(r+=b*b)}let s,a,c;if(t.mode===ie.SCENE3D?(s=o.height,a=e.minimumHeight,c=e.maximumHeight):(s=i.x,a=0,c=0),s>c){let u=s-c;r+=u*u}else if(s<a){let u=a-s;r+=u*u}return Math.sqrt(r)}ib.prototype.distanceToCamera=function(e){let t=d7e(this,e);if(e.mode===ie.SCENE3D&&l(this._orientedBoundingBox)){let n=Math.sqrt(this._orientedBoundingBox.distanceSquaredTo(e.camera.positionWC));return Math.max(t,n)}return t};ib.prototype.intersectPlane=function(e){return this._orientedBoundingBox.intersectPlane(e)};ib.prototype.createDebugVolume=function(e){let t=new R.clone(R.IDENTITY),n=new tb({rectangle:this.rectangle,height:this.minimumHeight,extrudedHeight:this.maximumHeight}),i=new Rt({geometry:n,id:"outline",modelMatrix:t,attributes:{color:en.fromColor(e)}});return new kn({geometryInstances:i,appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})};var $f=ib;var AD={},h7e=new d,Yue=new d,que=new d,Kue=new d,Xue=new Qn;AD.validOutline=function(e){let n=Qn.fromPoints(e,Xue).halfAxes,i=J.getColumn(n,0,Yue),o=J.getColumn(n,1,que),r=J.getColumn(n,2,Kue),s=d.magnitude(i),a=d.magnitude(o),c=d.magnitude(r);return!(s===0&&(a===0||c===0)||a===0&&c===0)};AD.computeProjectTo2DArguments=function(e,t,n,i){let o=Qn.fromPoints(e,Xue),r=o.halfAxes,s=J.getColumn(r,0,Yue),a=J.getColumn(r,1,que),c=J.getColumn(r,2,Kue),u=d.magnitude(s),f=d.magnitude(a),h=d.magnitude(c),A=Math.min(u,f,h);if(u===0&&(f===0||h===0)||f===0&&h===0)return!1;let g,m;return(A===f||A===h)&&(g=s),A===u?g=a:A===h&&(m=a),(A===u||A===f)&&(m=c),d.normalize(g,n),d.normalize(m,i),d.clone(o.center,t),!0};function Jue(e,t,n,i,o){let r=d.subtract(e,t,h7e),s=d.dot(n,r),a=d.dot(i,r);return k.fromElements(s,a,o)}AD.createProjectPointsTo2DFunction=function(e,t,n){return function(i){let o=new Array(i.length);for(let r=0;r<i.length;r++)o[r]=Jue(i[r],e,t,n);return o}};AD.createProjectPointTo2DFunction=function(e,t,n){return function(i,o){return Jue(i,e,t,n,o)}};var M_=AD;function m7e(e){let t=e.length,n=new Float64Array(t*3),i=Fe.createTypedArray(t,t*2),o=0,r=0;for(let a=0;a<t;a++){let c=e[a];n[o++]=c.x,n[o++]=c.y,n[o++]=c.z,i[r++]=a,i[r++]=(a+1)%t}let s=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:n})});return new ht({attributes:s,indices:i,primitiveType:Me.LINES})}function dE(e){e=e??V.EMPTY_OBJECT;let t=e.polygonHierarchy;this._polygonHierarchy=t,this._workerName="createCoplanarPolygonOutlineGeometry",this.packedLength=$n.computeHierarchyPackedLength(t,d)+1}dE.fromPositions=function(e){e=e??V.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions}};return new dE(t)};dE.pack=function(e,t,n){return n=n??0,n=$n.packPolygonHierarchy(e._polygonHierarchy,t,n,d),t[n]=e.packedLength,t};var A7e={polygonHierarchy:{}};dE.unpack=function(e,t,n){t=t??0;let i=$n.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=e[t];return l(n)||(n=new dE(A7e)),n._polygonHierarchy=i,n.packedLength=o,n};dE.createGeometry=function(e){let t=e._polygonHierarchy,n=t.positions;if(n=No(n,d.equalsEpsilon,!0),n.length<3||!M_.validOutline(n))return;let o=$n.polygonOutlinesFromHierarchy(t,!1);if(o.length===0)return;let r=[];for(let c=0;c<o.length;c++){let u=new Rt({geometry:m7e(o[c])});r.push(u)}let s=jn.combineInstances(r)[0],a=le.fromPoints(t.positions);return new ht({attributes:s.attributes,indices:s.indices,primitiveType:s.primitiveType,boundingSphere:a})};var sh=dE;var Dk=new Ae;function pD(e){let t=Hg.fromToken(e.token),n=e.minimumHeight??0,i=e.maximumHeight??0,o=e.ellipsoid??te.WGS84;this.s2Cell=t,this.minimumHeight=n,this.maximumHeight=i,this.ellipsoid=o;let r=b7e(t,n,i,o);this._boundingPlanes=r;let s=B7e(r);this._vertices=s,this._edgeNormals=new Array(6),this._edgeNormals[0]=mY(r[0],s.slice(0,4));let a;for(a=0;a<4;a++)this._edgeNormals[0][a]=d.negate(this._edgeNormals[0][a],this._edgeNormals[0][a]);for(this._edgeNormals[1]=mY(r[1],s.slice(4,8)),a=0;a<4;a++)this._edgeNormals[2+a]=mY(r[2+a],[s[a%4],s[(a+1)%4],s[4+(a+1)%4],s[4+a]]);for(this._planeVertices=[this._vertices.slice(0,4),this._vertices.slice(4,8)],a=0;a<4;a++)this._planeVertices.push([this._vertices[a%4],this._vertices[(a+1)%4],this._vertices[4+(a+1)%4],this._vertices[4+a]]);let c=t.getCenter();Dk=o.cartesianToCartographic(c,Dk),Dk.height=(i+n)/2,this.center=o.cartographicToCartesian(Dk,c),this._boundingSphere=le.fromPoints(s)}var p7e=new d,g7e=new Ae,_7e=new d,y7e=new Ae,C7e=new d,E7e=new d,I7e=new d,x7e=new d;function b7e(e,t,n,i){let o=new Array(6),r=e.getCenter(),s=i.geodeticSurfaceNormal(r,p7e),a=i.cartesianToCartographic(r,g7e);a.height=n;let c=i.cartographicToCartesian(a,_7e),u=mn.fromPointNormal(c,s);o[0]=u;let f=0,h,A=[],g,m;for(h=0;h<4;h++){g=e.getVertex(h),A[h]=g,m=i.cartesianToCartographic(g,y7e),m.height=t;let y=mn.getPointDistance(u,i.cartographicToCartesian(m,C7e));y<f&&(f=y)}let _=mn.clone(u);for(_.normal=d.negate(_.normal,_.normal),_.distance=_.distance*-1+f,o[1]=_,h=0;h<4;h++){g=A[h];let y=A[(h+1)%4],C=i.geodeticSurfaceNormal(g,E7e),E=d.subtract(y,g,x7e),I=d.cross(E,C,I7e);I=d.normalize(I,I),o[2+h]=mn.fromPointNormal(g,I)}return o}var hE=new d,mE=new d,AE=new d,aY=new d,cY=new d,lY=new d,T7e=new d,S7e=new d,w7e=new d,uY=new d,fY=new d,dY=new d,N_=new d,km=new J;function Zue(e,t,n){hE=e.normal,mE=t.normal,AE=n.normal,aY=d.multiplyByScalar(e.normal,-e.distance,aY),cY=d.multiplyByScalar(t.normal,-t.distance,cY),lY=d.multiplyByScalar(n.normal,-n.distance,lY),uY=d.multiplyByScalar(d.cross(mE,AE,T7e),d.dot(aY,hE),uY),fY=d.multiplyByScalar(d.cross(AE,hE,S7e),d.dot(cY,mE),fY),dY=d.multiplyByScalar(d.cross(hE,mE,w7e),d.dot(lY,AE),dY),km[0]=hE.x,km[1]=mE.x,km[2]=AE.x,km[3]=hE.y,km[4]=mE.y,km[5]=AE.y,km[6]=hE.z,km[7]=mE.z,km[8]=AE.z;let i=J.determinant(km);return N_=d.add(uY,fY,N_),N_=d.add(N_,dY,N_),new d(N_.x/i,N_.y/i,N_.z/i)}function B7e(e){let t=new Array(8);for(let n=0;n<4;n++)t[n]=Zue(e[0],e[2+(n+3)%4],e[2+n%4]),t[n+4]=Zue(e[1],e[2+(n+3)%4],e[2+n%4]);return t}var hY=new d,ob=new d;function mY(e,t){let n=[];for(let i=0;i<4;i++)hY=d.subtract(t[(i+1)%4],t[i],hY),ob=d.cross(e.normal,hY,ob),ob=d.normalize(ob,ob),n[i]=d.clone(ob);return n}Object.defineProperties(pD.prototype,{boundingVolume:{get:function(){return this}},boundingSphere:{get:function(){return this._boundingSphere}}});var AY=new d;pD.prototype.distanceToCamera=function(e){let t=e.camera.positionWC,n=[],i=[],o;mn.getPointDistance(this._boundingPlanes[0],t)>0?(n.push(0),i.push(this._planeVertices[0]),o=this._edgeNormals[0]):mn.getPointDistance(this._boundingPlanes[1],t)>0&&(n.push(1),i.push(this._planeVertices[1]),o=this._edgeNormals[1]);let r,s;for(r=0;r<4;r++)s=2+r,mn.getPointDistance(this._boundingPlanes[s],t)>0&&(n.push(s),i.push(this._planeVertices[s]),o=this._edgeNormals[s]);if(n.length===0)return 0;let a,c;if(n.length===1)return c=this._boundingPlanes[n[0]],a=pY(mn.projectPointOntoPlane(c,t,AY),i[0],c,o),d.distance(a,t);if(n.length===2){if(n[0]===0){let A=[this._vertices[4*n[0]+(n[1]-2)],this._vertices[4*n[0]+(n[1]-2+1)%4]];return a=$ue(t,A[0],A[1]),d.distance(a,t)}let f=Number.MAX_VALUE,h;for(r=0;r<2;r++)c=this._boundingPlanes[n[r]],a=pY(mn.projectPointOntoPlane(c,t,AY),i[r],c,this._edgeNormals[n[r]]),h=d.distanceSquared(a,t),h<f&&(f=h);return Math.sqrt(f)}else if(n.length>3)return a=pY(mn.projectPointOntoPlane(this._boundingPlanes[1],t,AY),this._planeVertices[1],this._boundingPlanes[1],this._edgeNormals[1]),d.distance(a,t);let u=n[1]===2&&n[2]===5?0:1;return n[0]===0?d.distance(t,this._vertices[(n[1]-2+u)%4]):d.distance(t,this._vertices[4+(n[1]-2+u)%4])};var D7e=new d,v7e=new d;function $ue(e,t,n){let i=d.subtract(n,t,D7e),o=d.subtract(e,t,v7e),r=d.dot(i,o);if(r<=0)return t;let s=d.dot(i,i);return r>=s?n:(r=r/s,new d((1-r)*t.x+r*n.x,(1-r)*t.y+r*n.y,(1-r)*t.z+r*n.z))}var P7e=new mn(d.UNIT_X,0);function pY(e,t,n,i){let o=Number.MAX_VALUE,r,s,a;for(let c=0;c<t.length;c++){let u=mn.fromPointNormal(t[c],i[c],P7e);mn.getPointDistance(u,e)<0||(a=$ue(e,t[c],t[(c+1)%4]),r=d.distance(e,a),r<o&&(o=r,s=a))}return l(s)?s:e}pD.prototype.intersectPlane=function(e){let t=0,n=0;for(let i=0;i<this._vertices.length;i++)d.dot(e.normal,this._vertices[i])+e.distance<0?n++:t++;return t===this._vertices.length?nn.INSIDE:n===this._vertices.length?nn.OUTSIDE:nn.INTERSECTING};pD.prototype.createDebugVolume=function(e){let t=new R.clone(R.IDENTITY),n=new sh({polygonHierarchy:{positions:this._planeVertices[0]}}),i=sh.createGeometry(n),o=new Rt({geometry:i,id:"outline",modelMatrix:t,attributes:{color:en.fromColor(e)}}),r=new sh({polygonHierarchy:{positions:this._planeVertices[1]}}),s=sh.createGeometry(r),a=new Rt({geometry:s,id:"outline",modelMatrix:t,attributes:{color:en.fromColor(e)}}),c=[];for(let u=0;u<4;u++){let f=new sh({polygonHierarchy:{positions:this._planeVertices[2+u]}}),h=sh.createGeometry(f);c[u]=new Rt({geometry:h,id:"outline",modelMatrix:t,attributes:{color:en.fromColor(e)}})}return new kn({geometryInstances:[c[0],c[1],c[2],c[3],a,o],appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})};var vk=pD;var R7e=new d(1,1,1),Pk=Math.cos,Rk=Math.sin;function rb(e){e=e??V.EMPTY_OBJECT;let t=e.radii??R7e,n=e.innerRadii??t,i=e.minimumClock??0,o=e.maximumClock??D.TWO_PI,r=e.minimumCone??0,s=e.maximumCone??D.PI,a=Math.round(e.stackPartitions??10),c=Math.round(e.slicePartitions??8),u=Math.round(e.subdivisions??128);this._radii=d.clone(t),this._innerRadii=d.clone(n),this._minimumClock=i,this._maximumClock=o,this._minimumCone=r,this._maximumCone=s,this._stackPartitions=a,this._slicePartitions=c,this._subdivisions=u,this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipsoidOutlineGeometry"}rb.packedLength=2*d.packedLength+8;rb.pack=function(e,t,n){return n=n??0,d.pack(e._radii,t,n),n+=d.packedLength,d.pack(e._innerRadii,t,n),n+=d.packedLength,t[n++]=e._minimumClock,t[n++]=e._maximumClock,t[n++]=e._minimumCone,t[n++]=e._maximumCone,t[n++]=e._stackPartitions,t[n++]=e._slicePartitions,t[n++]=e._subdivisions,t[n]=e._offsetAttribute??-1,t};var efe=new d,tfe=new d,Ip={radii:efe,innerRadii:tfe,minimumClock:void 0,maximumClock:void 0,minimumCone:void 0,maximumCone:void 0,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0,offsetAttribute:void 0};rb.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,efe);t+=d.packedLength;let o=d.unpack(e,t,tfe);t+=d.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t];return l(n)?(n._radii=d.clone(i,n._radii),n._innerRadii=d.clone(o,n._innerRadii),n._minimumClock=r,n._maximumClock=s,n._minimumCone=a,n._maximumCone=c,n._stackPartitions=u,n._slicePartitions=f,n._subdivisions=h,n._offsetAttribute=A===-1?void 0:A,n):(Ip.minimumClock=r,Ip.maximumClock=s,Ip.minimumCone=a,Ip.maximumCone=c,Ip.stackPartitions=u,Ip.slicePartitions=f,Ip.subdivisions=h,Ip.offsetAttribute=A===-1?void 0:A,new rb(Ip))};rb.createGeometry=function(e){let t=e._radii;if(t.x<=0||t.y<=0||t.z<=0)return;let n=e._innerRadii;if(n.x<=0||n.y<=0||n.z<=0)return;let i=e._minimumClock,o=e._maximumClock,r=e._minimumCone,s=e._maximumCone,a=e._subdivisions,c=te.fromCartesian3(t),u=e._slicePartitions+1,f=e._stackPartitions+1;u=Math.round(u*Math.abs(o-i)/D.TWO_PI),f=Math.round(f*Math.abs(s-r)/D.PI),u<2&&(u=2),f<2&&(f=2);let h=0,A=1,g=n.x!==t.x||n.y!==t.y||n.z!==t.z,m=!1,_=!1;g&&(A=2,r>0&&(m=!0,h+=u),s<Math.PI&&(_=!0,h+=u));let y=a*A*(f+u),C=new Float64Array(y*3),E=2*(y+h-(u+f)*A),I=Fe.createTypedArray(y,E),b,S,B,v,P=0,N=new Array(f),L=new Array(f);for(b=0;b<f;b++)v=r+b*(s-r)/(f-1),N[b]=Rk(v),L[b]=Pk(v);let p=new Array(a),x=new Array(a);for(b=0;b<a;b++)B=i+b*(o-i)/(a-1),p[b]=Rk(B),x[b]=Pk(B);for(b=0;b<f;b++)for(S=0;S<a;S++)C[P++]=t.x*N[b]*x[S],C[P++]=t.y*N[b]*p[S],C[P++]=t.z*L[b];if(g)for(b=0;b<f;b++)for(S=0;S<a;S++)C[P++]=n.x*N[b]*x[S],C[P++]=n.y*N[b]*p[S],C[P++]=n.z*L[b];for(N.length=a,L.length=a,b=0;b<a;b++)v=r+b*(s-r)/(a-1),N[b]=Rk(v),L[b]=Pk(v);for(p.length=u,x.length=u,b=0;b<u;b++)B=i+b*(o-i)/(u-1),p[b]=Rk(B),x[b]=Pk(B);for(b=0;b<a;b++)for(S=0;S<u;S++)C[P++]=t.x*N[b]*x[S],C[P++]=t.y*N[b]*p[S],C[P++]=t.z*L[b];if(g)for(b=0;b<a;b++)for(S=0;S<u;S++)C[P++]=n.x*N[b]*x[S],C[P++]=n.y*N[b]*p[S],C[P++]=n.z*L[b];for(P=0,b=0;b<f*A;b++){let M=b*a;for(S=0;S<a-1;S++)I[P++]=M+S,I[P++]=M+S+1}let T=f*a*A;for(b=0;b<u;b++)for(S=0;S<a-1;S++)I[P++]=T+b+S*u,I[P++]=T+b+(S+1)*u;if(g)for(T=f*a*A+u*a,b=0;b<u;b++)for(S=0;S<a-1;S++)I[P++]=T+b+S*u,I[P++]=T+b+(S+1)*u;if(g){let M=f*a*A,O=M+a*u;if(m)for(b=0;b<u;b++)I[P++]=M+b,I[P++]=O+b;if(_)for(M+=a*u-u,O+=a*u-u,b=0;b<u;b++)I[P++]=M+b,I[P++]=O+b}let w=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:C})});if(l(e._offsetAttribute)){let M=C.length,O=e._offsetAttribute===hn.NONE?0:1,U=new Uint8Array(M/3).fill(O);w.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:U})}return new ht({attributes:w,indices:I,primitiveType:Me.LINES,boundingSphere:le.fromEllipsoid(c),offsetAttribute:e._offsetAttribute})};var ed=rb;function sb(e){let t=e.radius??1,i={radii:new d(t,t,t),stackPartitions:e.stackPartitions,slicePartitions:e.slicePartitions,subdivisions:e.subdivisions};this._ellipsoidGeometry=new ed(i),this._workerName="createSphereOutlineGeometry"}sb.packedLength=ed.packedLength;sb.pack=function(e,t,n){return ed.pack(e._ellipsoidGeometry,t,n)};var M7e=new ed,pE={radius:void 0,radii:new d,stackPartitions:void 0,slicePartitions:void 0,subdivisions:void 0};sb.unpack=function(e,t,n){let i=ed.unpack(e,t,M7e);return pE.stackPartitions=i._stackPartitions,pE.slicePartitions=i._slicePartitions,pE.subdivisions=i._subdivisions,l(n)?(d.clone(i._radii,pE.radii),n._ellipsoidGeometry=new ed(pE),n):(pE.radius=i._radii.x,new sb(pE))};sb.createGeometry=function(e){return ed.createGeometry(e._ellipsoidGeometry)};var L_=sb;function ab(e,t){t===0&&(t=D.EPSILON7),this._boundingSphere=new le(e,t)}Object.defineProperties(ab.prototype,{center:{get:function(){return this._boundingSphere.center}},radius:{get:function(){return this._boundingSphere.radius}},boundingVolume:{get:function(){return this._boundingSphere}},boundingSphere:{get:function(){return this._boundingSphere}}});ab.prototype.distanceToCamera=function(e){let t=this._boundingSphere;return Math.max(0,d.distance(t.center,e.camera.positionWC)-t.radius)};ab.prototype.intersectPlane=function(e){return le.intersectPlane(this._boundingSphere,e)};ab.prototype.update=function(e,t){d.clone(e,this._boundingSphere.center),this._boundingSphere.radius=t};ab.prototype.createDebugVolume=function(e){let t=new L_({radius:this.radius}),n=R.fromTranslation(this.center,new R.clone(R.IDENTITY)),i=new Rt({geometry:t,id:"outline",modelMatrix:n,attributes:{color:en.fromColor(e)}});return new kn({geometryInstances:i,appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})};var O_=ab;var N7e=new d,L7e=new d,O7e=new d,F7e=new d;function gE(e,t,n){n=d.cross(e,t,n);let i=d.magnitude(n);return d.multiplyByScalar(n,D.EPSILON7/i,n)}function gY(e,t){let n=d.normalize(e,F7e),i=d.equalsEpsilon(n,d.UNIT_X,D.EPSILON6)?d.UNIT_Y:d.UNIT_X;return gE(e,i,t)}function nfe(e){let t=J.getColumn(e,0,N7e),n=J.getColumn(e,1,L7e),i=J.getColumn(e,2,O7e),o=d.equals(t,d.ZERO),r=d.equals(n,d.ZERO),s=d.equals(i,d.ZERO);return!o&&!r&&!s?e:o&&r&&s?(e[0]=D.EPSILON7,e[4]=D.EPSILON7,e[8]=D.EPSILON7,e):(o&&!r&&!s?t=gE(n,i,t):!o&&r&&!s?n=gE(t,i,n):!o&&!r&&s?i=gE(n,t,i):o?r?s||(t=gY(i,t),n=gE(i,t,n)):(t=gY(n,t),i=gE(n,t,i)):(n=gY(t,n),i=gE(n,t,i)),J.setColumn(e,0,t,e),J.setColumn(e,1,n,e),J.setColumn(e,2,i,e),e)}function cb(e,t){t=nfe(t),this._orientedBoundingBox=new Qn(e,t),this._boundingSphere=le.fromOrientedBoundingBox(this._orientedBoundingBox)}Object.defineProperties(cb.prototype,{boundingVolume:{get:function(){return this._orientedBoundingBox}},boundingSphere:{get:function(){return this._boundingSphere}}});cb.prototype.distanceToCamera=function(e){return Math.sqrt(this._orientedBoundingBox.distanceSquaredTo(e.camera.positionWC))};cb.prototype.intersectPlane=function(e){return this._orientedBoundingBox.intersectPlane(e)};cb.prototype.update=function(e,t){d.clone(e,this._orientedBoundingBox.center),t=nfe(t),J.clone(t,this._orientedBoundingBox.halfAxes),le.fromOrientedBoundingBox(this._orientedBoundingBox,this._boundingSphere)};cb.prototype.createDebugVolume=function(e){let t=new $h({minimum:new d(-1,-1,-1),maximum:new d(1,1,1)}),n=R.fromRotationTranslation(this.boundingVolume.halfAxes,this.boundingVolume.center),i=new Rt({geometry:t,id:"outline",modelMatrix:n,attributes:{color:en.fromColor(e)}});return new kn({geometryInstances:i,appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})};var Lu=cb;function lr(e,t,n,i){this._tileset=e,this._header=n;let o=l(n.contents),r=o&&n.contents.length>1||Ii(n,"3DTILES_multiple_contents"),s=o&&!r?n.contents[0]:n.content;this._contentHeader=s,this.transform=l(n.transform)?R.unpack(n.transform):R.clone(R.IDENTITY);let a=l(i)?i.computedTransform:e.modelMatrix,c=R.multiply(a,this.transform,new R),u=l(i)?i._initialTransform:R.IDENTITY;this._initialTransform=R.multiply(u,this.transform,new R),this.computedTransform=c,this.metadata=Tk(e,n),this._verticalExaggeration=1,this._verticalExaggerationRelativeHeight=0,this._boundingVolume=this.createBoundingVolume(n.boundingVolume,c),this._boundingVolume2D=void 0;let f;l(s)&&l(s.boundingVolume)&&(f=this.createBoundingVolume(s.boundingVolume,c)),this._contentBoundingVolume=f,this._contentBoundingVolume2D=void 0;let h;l(n.viewerRequestVolume)&&(h=this.createBoundingVolume(n.viewerRequestVolume,c)),this._viewerRequestVolume=h,this.geometricError=n.geometricError,this._geometricError=n.geometricError,l(this._geometricError)||(this._geometricError=l(i)?i._geometricError:e._geometricError,lr._deprecationWarning("geometricErrorUndefined","Required property geometricError is undefined for this tile. Using parent's geometric error instead.")),this.updateGeometricErrorScale();let A;l(n.refine)?((n.refine==="replace"||n.refine==="add")&&lr._deprecationWarning("lowercase-refine",`This tile uses a lowercase refine "${n.refine}". Instead use "${n.refine.toUpperCase()}".`),A=n.refine.toUpperCase()==="REPLACE"?rr.REPLACE:rr.ADD):l(i)?A=i.refine:A=rr.REPLACE,this.refine=A,this.children=[],this.parent=i;let g,m=!1,_,y,C;if(t=we.createIfNeeded(t),r)_=cr.UNLOADED,y=t.clone();else if(l(s)){let S=s.uri;l(s.url)&&(lr._deprecationWarning("contentUrl",'This tileset JSON uses the "content.url" property which has been deprecated. Use "content.uri" instead.'),S=s.url),S===""?(lr._deprecationWarning("contentUriEmpty","content.uri property is an empty string, which creates a circular dependency, making this tileset invalid. Omit the content property instead"),g=new hD(e,this),m=!0,_=cr.READY):(_=cr.UNLOADED,y=t.getDerivedResource({url:S}),C=Yc.getServerKey(y.getUrlComponent()))}else g=new hD(e,this),m=!0,_=cr.READY;this._content=g,this._contentResource=y,this._contentState=_,this._expiredContent=void 0,this._serverKey=C,this.hasEmptyContent=m,this.hasTilesetContent=!1,this.hasImplicitContent=!1,this.hasRenderableContent=!m,this.hasImplicitContentMetadata=!1,this.hasMultipleContents=r,this.cacheNode=void 0;let E=n.expire,I,b;l(E)&&(I=E.duration,l(E.date)&&(b=K.fromIso8601(E.date))),this.expireDuration=I,this.expireDate=b,this.lastStyleTime=0,this._optimChildrenWithinParent=rh.NOT_COMPUTED,this.clippingPlanesDirty=!1,this.clippingPolygonsDirty=!1,this.priorityDeferred=!1,this.implicitTileset=void 0,this.implicitCoordinates=void 0,this.implicitSubtree=void 0,this._distanceToCamera=0,this._centerZDepth=0,this._screenSpaceError=0,this._screenSpaceErrorProgressiveResolution=0,this._visibilityPlaneMask=0,this._visible=!1,this._inRequestVolume=!1,this._finalResolution=!0,this._depth=0,this._stackLength=0,this._selectionDepth=0,this._updatedVisibilityFrame=0,this._touchedFrame=0,this._visitedFrame=0,this._selectedFrame=0,this._wasSelectedLastFrame=!1,this._requestedFrame=0,this._ancestorWithContent=void 0,this._ancestorWithContentAvailable=void 0,this._refines=!1,this._shouldSelect=!1,this._isClipped=!0,this._isClippedByPolygon=!1,this._clippingPlanesState=0,this._clippingPolygonsState=0,this._debugBoundingVolume=void 0,this._debugContentBoundingVolume=void 0,this._debugViewerRequestVolume=void 0,this._debugColor=G.fromRandom({alpha:1}),this._debugColorizeTiles=!1,this._priority=0,this._priorityHolder=this,this._priorityProgressiveResolution=!1,this._priorityProgressiveResolutionScreenSpaceErrorLeaf=!1,this._priorityReverseScreenSpaceError=0,this._foveatedFactor=0,this._wasMinPriorityChild=!1,this._loadTimestamp=new K,this._commandsLength=0,this._color=void 0,this._colorDirty=!1,this._request=void 0}lr._deprecationWarning=Pr;Object.defineProperties(lr.prototype,{tileset:{get:function(){return this._tileset}},content:{get:function(){return this._content}},boundingVolume:{get:function(){return this._boundingVolume}},contentBoundingVolume:{get:function(){return this._contentBoundingVolume??this._boundingVolume}},boundingSphere:{get:function(){return this._boundingVolume.boundingSphere}},isVisible:{get:function(){return this._visible&&this._inRequestVolume}},extras:{get:function(){return this._header.extras}},color:{get:function(){return l(this._color)||(this._color=new G),G.clone(this._color)},set:function(e){this._color=G.clone(e,this._color),this._colorDirty=!0}},contentAvailable:{get:function(){return this.contentReady&&this.hasRenderableContent||l(this._expiredContent)&&!this.contentFailed}},contentReady:{get:function(){return this._contentState===cr.READY}},contentUnloaded:{get:function(){return this._contentState===cr.UNLOADED}},hasUnloadedRenderableContent:{get:function(){return this.hasRenderableContent&&this.contentUnloaded}},contentExpired:{get:function(){return this._contentState===cr.EXPIRED}},contentFailed:{get:function(){return this._contentState===cr.FAILED}},commandsLength:{get:function(){return this._commandsLength}}});var F_=new d;function Q7e(e,t){let{tileset:n,boundingSphere:i}=e,{radius:o,center:r}=i,{camera:s}=t,a=d.multiplyByScalar(s.directionWC,e._centerZDepth,F_),c=d.add(s.positionWC,a,F_),u=d.subtract(c,r,F_);if(d.magnitude(u)>o){let b=d.normalize(u,F_),S=d.multiplyByScalar(b,o,F_),B=d.add(r,S,F_),v=d.subtract(B,s.positionWC,F_),P=d.normalize(v,F_);e._foveatedFactor=1-Math.abs(d.dot(s.directionWC,P))}else e._foveatedFactor=0;let A=e.refine===rr.REPLACE,g=n.isSkippingLevelOfDetail;if(A&&!g||!n.foveatedScreenSpaceError||n.foveatedConeSize===1||e._priorityProgressiveResolution&&A&&g||n._pass===Zo.PRELOAD_FLIGHT||n._pass===Zo.PRELOAD)return!1;let m=1-Math.cos(s.frustum.fov*.5),_=n.foveatedConeSize*m;if(e._foveatedFactor<=_)return!1;let y=m-_,C=D.clamp((e._foveatedFactor-_)/y,0,1),E=n.foveatedInterpolationCallback(n.foveatedMinimumScreenSpaceErrorRelaxation,n.memoryAdjustedScreenSpaceError,C),I=e._screenSpaceError===0&&l(e.parent)?e.parent._screenSpaceError*.5:e._screenSpaceError;return n.memoryAdjustedScreenSpaceError-E<=I}var afe=new K;lr.prototype.getScreenSpaceError=function(e,t,n){let i=this._tileset,o=n??1,r=l(this.parent)?this.parent.geometricError:i._scaledGeometricError,s=t?r:this.geometricError;if(s===0)return 0;let{camera:a,context:c}=e,u=a.frustum,f=c.drawingBufferWidth,h=c.drawingBufferHeight*o,A;if(e.mode===ie.SCENE2D||u instanceof An){let g=u.offCenterFrustum;l(g)&&(u=g);let m=Math.max(u.top-u.bottom,u.right-u.left)/Math.max(f,h);A=s/m}else{let g=Math.max(this._distanceToCamera,D.EPSILON7),m=u.sseDenominator;if(A=s*h/(g*m),i.dynamicScreenSpaceError){let _=i._dynamicScreenSpaceErrorComputedDensity,y=i.dynamicScreenSpaceErrorFactor,C=D.fog(g,_)*y;A-=C}}return A/=e.pixelRatio,A};function k7e(e,t){if(e.progressiveResolutionHeightFraction<=0||e.progressiveResolutionHeightFraction>.5)return!1;let n=e.memoryAdjustedScreenSpaceError,i=t._screenSpaceErrorProgressiveResolution>n;t._priorityProgressiveResolutionScreenSpaceErrorLeaf=!1;let o=t.parent,r=t._screenSpaceErrorProgressiveResolution<=n,s=l(o)&&o._screenSpaceErrorProgressiveResolution>n;return r&&s&&(t._priorityProgressiveResolutionScreenSpaceErrorLeaf=!0,i=!0),i}function U7e(e,t){let n=t.parent,o=l(n)&&(!e.isSkippingLevelOfDetail||t._screenSpaceError===0||n.hasTilesetContent||n.hasImplicitContent)?n._screenSpaceError:t._screenSpaceError;return e.root._screenSpaceError-o}lr.prototype.updateVisibility=function(e){let{parent:t,tileset:n}=this;if(this._updatedVisibilityFrame===n._updatedVisibilityFrame)return;let i=l(t)?t.computedTransform:n.modelMatrix,o=l(t)?t._visibilityPlaneMask:zs.MASK_INDETERMINATE;this.updateTransform(i,e),this._distanceToCamera=this.distanceToTile(e),this._centerZDepth=this.distanceToTileCenter(e),this._screenSpaceError=this.getScreenSpaceError(e,!1),this._screenSpaceErrorProgressiveResolution=this.getScreenSpaceError(e,!1,n.progressiveResolutionHeightFraction),this._visibilityPlaneMask=this.visibility(e,o),this._visible=this._visibilityPlaneMask!==zs.MASK_OUTSIDE,this._inRequestVolume=this.insideViewerRequestVolume(e),this._priorityReverseScreenSpaceError=U7e(n,this),this._priorityProgressiveResolution=k7e(n,this),this.priorityDeferred=Q7e(this,e),this._updatedVisibilityFrame=n._updatedVisibilityFrame};lr.prototype.updateExpiration=function(){if(l(this.expireDate)&&this.contentReady&&!this.hasEmptyContent&&!this.hasMultipleContents){let e=K.now(afe);K.lessThan(this.expireDate,e)&&(this._contentState=cr.EXPIRED,this._expiredContent=this._content)}};function G7e(e){if(!l(e.expireDuration))return;let t=K.now(afe);K.addSeconds(t,e.expireDuration,t),l(e.expireDate)?K.lessThan(e.expireDate,t)&&K.clone(t,e.expireDate):e.expireDate=K.clone(t)}function z7e(e){return function(){return e._priority}}lr.prototype.requestContent=function(){if(!this.hasEmptyContent)return this.hasMultipleContents?V7e(this):W7e(this)};function V7e(e){let t=e._content,n=e._tileset;if(!l(t)){let o=Ii(e._header,"3DTILES_multiple_contents")?e._header.extensions["3DTILES_multiple_contents"]:e._header;t=new Sk(n,e,e._contentResource.clone(),o),e._content=t}let i=t.requestInnerContents();if(l(i))return e._contentState=cr.LOADING,i.then(o=>{if(!e.isDestroyed()&&l(o))return e._contentState=cr.PROCESSING,t}).catch(o=>{if(!e.isDestroyed())throw e._contentState=cr.FAILED,o})}async function H7e(e,t,n,i,o){let r=e._contentState;e._contentState=cr.LOADING,++t.statistics.numberOfPendingRequests;let s;try{s=await o}catch(a){if(--t.statistics.numberOfPendingRequests,e.isDestroyed())return;if(n.cancelled||n.state===hi.CANCELLED){e._contentState=r,++t.statistics.numberOfAttemptedRequests;return}throw e._contentState=cr.FAILED,a}if(e.isDestroyed()){--t.statistics.numberOfPendingRequests;return}if(n.cancelled||n.state===hi.CANCELLED){e._contentState=r,--t.statistics.numberOfPendingRequests,++t.statistics.numberOfAttemptedRequests;return}try{let a=await j7e(e,s);return--t.statistics.numberOfPendingRequests,e.isDestroyed()?void 0:(i&&(e.expireDate=void 0),e._content=a,e._contentState=cr.PROCESSING,a)}catch(a){if(--t.statistics.numberOfPendingRequests,e.isDestroyed())return;throw e._contentState=cr.FAILED,a}}function W7e(e){let t=e._contentResource.clone(),n=e.contentExpired;n&&t.setQueryParameters({expired:e.expireDate.toString()});let i=new pr({throttle:!0,throttleByServer:!0,type:Us.TILES3D,priorityFunction:z7e(e),serverKey:e._serverKey});e._request=i,t.request=i;let o=e._tileset,r=t.fetchArrayBuffer();if(!l(r)){++o.statistics.numberOfAttemptedRequests;return}return H7e(e,o,i,n,r)}async function j7e(e,t){let n=R_(t),i=e._tileset;i._disableSkipLevelOfDetail=i._disableSkipLevelOfDetail||n.contentType===ua.GEOMETRY||n.contentType===ua.VECTOR,(n.contentType===ua.IMPLICIT_SUBTREE||n.contentType===ua.IMPLICIT_SUBTREE_JSON)&&(e.hasImplicitContent=!0,e.hasRenderableContent=!1),n.contentType===ua.EXTERNAL_TILESET&&(e.hasTilesetContent=!0,e.hasRenderableContent=!1);let o,r=Xx[n.contentType];if(e.isDestroyed())return;l(n.binaryPayload)?o=await Promise.resolve(r(i,e,e._contentResource,n.binaryPayload.buffer,0)):o=await Promise.resolve(r(i,e,e._contentResource,n.jsonPayload));let s=e._contentHeader;if(e.hasImplicitContentMetadata){let c=e.implicitSubtree,u=e.implicitCoordinates;o.metadata=c.getContentMetadataView(u,0)}else e.hasImplicitContent||(o.metadata=Jx(i,s));let a=Zx(i,s);return l(a)&&(o.group=new zI({metadata:a})),o}lr.prototype.cancelRequests=function(){this.hasMultipleContents?this._content.cancelRequests():this._request.cancel()};lr.prototype.unloadContent=function(){this.hasRenderableContent&&(this._content=this._content&&this._content.destroy(),this._contentState=cr.UNLOADED,this.lastStyleTime=0,this.clippingPlanesDirty=this._clippingPlanesState===0,this._clippingPlanesState=0,this.clippingPolygonsDirty=this._clippingPolygonsState===0,this._clippingPolygonsState=0,this._debugColorizeTiles=!1,this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy())};var cfe=new le;function yY(e,t){if(t.mode!==ie.SCENE3D&&!l(e._boundingVolume2D)){let n=e._boundingVolume.boundingSphere,i=le.projectTo2D(n,t.mapProjection,cfe);e._boundingVolume2D=new O_(i.center,i.radius)}return t.mode!==ie.SCENE3D?e._boundingVolume2D:e._boundingVolume}function Y7e(e,t){if(t.mode!==ie.SCENE3D&&!l(e._contentBoundingVolume2D)){let n=e._contentBoundingVolume.boundingSphere,i=le.projectTo2D(n,t.mapProjection,cfe);e._contentBoundingVolume2D=new O_(i.center,i.radius)}return t.mode!==ie.SCENE3D?e._contentBoundingVolume2D:e._contentBoundingVolume}lr.prototype.visibility=function(e,t){let n=e.cullingVolume,i=yY(this,e),o=this._tileset,r=o.clippingPlanes;if(l(r)&&r.enabled){let a=r.computeIntersectionWithBoundingVolume(i,o.clippingPlanesOriginMatrix);if(this._isClipped=a!==nn.INSIDE,a===nn.OUTSIDE)return zs.MASK_OUTSIDE}let s=o.clippingPolygons;if(l(s)&&s.enabled){let a=s.computeIntersectionWithBoundingVolume(i);this._isClippedByPolygon=a!==nn.OUTSIDE}return n.computeVisibilityWithPlaneMask(i,t)};lr.prototype.contentVisibility=function(e){if(!l(this._contentBoundingVolume))return nn.INSIDE;if(this._visibilityPlaneMask===zs.MASK_INSIDE)return nn.INSIDE;let t=e.cullingVolume,n=Y7e(this,e),i=this._tileset,o=i.clippingPlanes;if(l(o)&&o.enabled){let s=o.computeIntersectionWithBoundingVolume(n,i.clippingPlanesOriginMatrix);if(this._isClipped=s!==nn.INSIDE,s===nn.OUTSIDE)return nn.OUTSIDE}let r=i.clippingPolygons;if(l(r)&&r.enabled){let s=r.computeIntersectionWithBoundingVolume(n);if(this._isClippedByPolygon=s!==nn.OUTSIDE,s===nn.INSIDE)return nn.OUTSIDE}return t.computeVisibility(n)};lr.prototype.distanceToTile=function(e){return yY(this,e).distanceToCamera(e)};var q7e=new d;lr.prototype.distanceToTileCenter=function(e){let n=yY(this,e).boundingVolume,i=d.subtract(n.center,e.camera.positionWC,q7e);return d.dot(e.camera.directionWC,i)};lr.prototype.insideViewerRequestVolume=function(e){let t=this._viewerRequestVolume;return!l(t)||t.distanceToCamera(e)===0};var lfe=new J,ufe=new d,K7e=new J,CY=new d,ffe=new ae,dfe=new Qn,_Y=new R;function X7e(e,t,n){let i=d.fromElements(e[0],e[1],e[2],CY),o=J.fromArray(e,3,K7e);i=R.multiplyByPoint(t,i,i);let r=R.getMatrix3(t,lfe);return o=J.multiply(r,o,o),l(n)?(n.update(i,o),n):new Lu(i,o)}function ife(e,t,n,i){let o=ae.unpack(e,0,ffe),r=e[4],s=e[5],a=Qn.fromRectangle(o,r,s,te.WGS84,dfe),c=a.center,u=a.halfAxes;t=R.multiplyTransformation(t,R.inverseTransformation(n,_Y),_Y),c=R.multiplyByPoint(t,c,c);let f=R.getMatrix3(t,lfe);return u=J.multiply(f,u,u),l(i)&&i instanceof Lu?(i.update(c,u),i):new Lu(c,u)}function J7e(e,t,n,i){if(!R.equalsEpsilon(t,n,D.EPSILON8))return i instanceof Lu?ife(e,t,n,i):ife(e,t,n,void 0);let o=ae.unpack(e,0,ffe);return i instanceof $f?(i.rectangle=ae.clone(o,i.rectangle),i.minimumHeight=e[4],i.maximumHeight=e[5],i.computeBoundingVolumes(te.WGS84),i):new $f({rectangle:o,minimumHeight:e[4],maximumHeight:e[5]})}function Z7e(e,t,n){let i=d.fromElements(e[0],e[1],e[2],CY),o=e[3];i=R.multiplyByPoint(t,i,i);let r=R.getScale(t,ufe),s=d.maximumComponent(r);return o*=s,l(n)?(n.update(i,o),n):new O_(i,o)}lr.prototype.createBoundingVolume=function(e,t,n){let i=this.metadata,o;if(l(i)&&(o=nx.parseBoundingVolumeSemantic("TILE",i)),l(o)&&(e=o),!l(e))throw new ce("boundingVolume must be defined");if(Ii(e,"3DTILES_bounding_volume_S2"))return new vk(e.extensions["3DTILES_bounding_volume_S2"]);let{box:r,region:s,sphere:a}=e;if(l(r)){let c=X7e(r,t,n);return this._verticalExaggeration!==1&&ofe(c,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c}if(l(s)){let c=J7e(s,t,this._initialTransform,n);return this._verticalExaggeration===1||(c instanceof Lu?ofe(c,this._verticalExaggeration,this._verticalExaggerationRelativeHeight):(c.minimumHeight=Yr.getHeight(c.minimumHeight,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c.maximumHeight=Yr.getHeight(c.maximumHeight,this._verticalExaggeration,this._verticalExaggerationRelativeHeight),c.computeBoundingVolumes(te.WGS84))),c}if(l(a)){let c=Z7e(a,t,n);if(this._verticalExaggeration!==1){let u=Yr.getPosition(c.center,te.WGS84,this._verticalExaggeration,this._verticalExaggerationRelativeHeight,CY),f=c.radius*this._verticalExaggeration;c.update(u,f)}return c}throw new ce("boundingVolume must contain a sphere, region, or box")};var $7e=d.unpackArray(new Array(24).fill(0));function ofe(e,t,n){let i=e.boundingVolume.computeCorners($7e).map(r=>Yr.getPosition(r,te.WGS84,t,n,r)),o=Qn.fromPoints(i,dfe);e.update(o.center,o.halfAxes)}lr.prototype.updateTransform=function(e,t){e=e??R.IDENTITY;let n=R.multiplyTransformation(e,this.transform,_Y),i=!R.equals(n,this.computedTransform),o=l(t)&&(this._verticalExaggeration!==t.verticalExaggeration||this._verticalExaggerationRelativeHeight!==t.verticalExaggerationRelativeHeight);if(!i&&!o)return;i&&R.clone(n,this.computedTransform),o&&(this._verticalExaggeration=t.verticalExaggeration,this._verticalExaggerationRelativeHeight=t.verticalExaggerationRelativeHeight);let r=this._header,s=this._contentHeader;this._boundingVolume=this.createBoundingVolume(r.boundingVolume,this.computedTransform,this._boundingVolume),l(this._contentBoundingVolume)&&(this._contentBoundingVolume=this.createBoundingVolume(s.boundingVolume,this.computedTransform,this._contentBoundingVolume)),l(this._viewerRequestVolume)&&(this._viewerRequestVolume=this.createBoundingVolume(r.viewerRequestVolume,this.computedTransform,this._viewerRequestVolume)),this.updateGeometricErrorScale(),this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy()};lr.prototype.updateGeometricErrorScale=function(){let e=R.getScale(this.computedTransform,ufe),t=d.maximumComponent(e);if(this.geometricError=this._geometricError*t,!l(this.parent)){let n=this._tileset;n._scaledGeometricError=n._geometricError*t}};function eXe(e,t,n,i){if(!i.isRender)return;let o=l(e._contentHeader)&&l(e._contentHeader.boundingVolume),r=t.debugShowBoundingVolume||t.debugShowContentBoundingVolume&&!o;if(r){let c;e._finalResolution?e.hasRenderableContent?c=G.WHITE:c=G.DARKGRAY:c=G.YELLOW,l(e._debugBoundingVolume)||(e._debugBoundingVolume=e._boundingVolume.createDebugVolume(c)),e._debugBoundingVolume.update(n);let u=e._debugBoundingVolume.getGeometryInstanceAttributes("outline");u.color=en.toValue(c,u.color)}else!r&&l(e._debugBoundingVolume)&&(e._debugBoundingVolume=e._debugBoundingVolume.destroy());t.debugShowContentBoundingVolume&&o?(l(e._debugContentBoundingVolume)||(e._debugContentBoundingVolume=e._contentBoundingVolume.createDebugVolume(G.BLUE)),e._debugContentBoundingVolume.update(n)):!t.debugShowContentBoundingVolume&&l(e._debugContentBoundingVolume)&&(e._debugContentBoundingVolume=e._debugContentBoundingVolume.destroy()),t.debugShowViewerRequestVolume&&l(e._viewerRequestVolume)?(l(e._debugViewerRequestVolume)||(e._debugViewerRequestVolume=e._viewerRequestVolume.createDebugVolume(G.YELLOW)),e._debugViewerRequestVolume.update(n)):!t.debugShowViewerRequestVolume&&l(e._debugViewerRequestVolume)&&(e._debugViewerRequestVolume=e._debugViewerRequestVolume.destroy());let s=t.debugColorizeTiles&&!e._debugColorizeTiles||l(t._heatmap.tilePropertyName),a=!t.debugColorizeTiles&&e._debugColorizeTiles;s?(t._heatmap.colorize(e,n),e._debugColorizeTiles=!0,e.color=e._debugColor):a&&(e._debugColorizeTiles=!1,e.color=G.WHITE),e._colorDirty&&(e._colorDirty=!1,e._content.applyDebugSettings(!0,e._color)),a&&t.makeStyleDirty()}function tXe(e,t,n){let i=e._expiredContent;if(!e.hasMultipleContents&&l(i)){if(!e.contentReady){try{i.update(t,n)}catch{}return}e._expiredContent.destroy(),e._expiredContent=void 0}if(l(e.content))try{e.content.update(t,n)}catch(o){throw e._contentState=cr.FAILED,o}}function nXe(e,t){let n=t.clippingPlanes,i=0;l(n)&&e._isClipped&&n.enabled&&(i=n.clippingPlanesState),i!==e._clippingPlanesState&&(e._clippingPlanesState=i,e.clippingPlanesDirty=!0)}function iXe(e,t){let n=t.clippingPolygons,i=0;l(n)&&e._isClippedByPolygon&&n.enabled&&(i=n.clippingPolygonsState),i!==e._clippingPolygonsState&&(e._clippingPolygonsState=i,e.clippingPolygonsDirty=!0)}lr.prototype.update=function(e,t,n){let{commandList:i}=t,o=i.length;nXe(this,e),iXe(this,e),eXe(this,e,t,n),tXe(this,e,t);let r=i.length;this._commandsLength=r-o;for(let s=o;s<r;++s){let a=i[s],c=a.pass===Be.TRANSLUCENT;a.depthForTranslucentClassification=c}this.clippingPlanesDirty=!1,this.clippingPolygonsDirty=!1};var rfe=[];lr.prototype.process=function(e,t){!this.contentExpired&&!this.contentReady&&this._content.ready&&(G7e(this),this._selectedFrame=0,this.lastStyleTime=0,K.now(this._loadTimestamp),this._contentState=cr.READY,!this.hasTilesetContent&&!this.hasImplicitContent&&(e._statistics.incrementLoadCounts(this.content),++e._statistics.numberOfTilesWithContentReady,++e._statistics.numberOfLoadedTilesTotal,e._cache.add(this)));let n=t.commandList;t.commandList=rfe;try{this._content.update(e,t)}catch(i){throw this._contentState=cr.FAILED,i}rfe.length=0,t.commandList=n};function sfe(e,t,n){let i=e*Math.pow(10,t);return parseInt(i)*Math.pow(10,n)}function Mk(e,t,n){return Math.max(D.normalize(e,t,n)-D.EPSILON7,0)}lr.prototype.updatePriority=function(){let e=this.tileset,t=e.preferLeaves,n=e._minimumPriority,i=e._maximumPriority,o=4,r=1,s=0,a=o,c=s+a,u=o,f=c+u,h=r,A=Math.pow(10,f),g=f+h,m=r,_=Math.pow(10,g),y=g+m,C=Math.pow(10,y),E=Mk(this._depth,n.depth,i.depth);E=t?1-E:E;let b=!e.isSkippingLevelOfDetail&&this.refine===rr.REPLACE?Mk(this._priorityHolder._distanceToCamera,n.distance,i.distance):Mk(this._priorityReverseScreenSpaceError,n.reverseScreenSpaceError,i.reverseScreenSpaceError),S=sfe(b,a,s),B=this._priorityProgressiveResolution?0:A,v=Mk(this._priorityHolder._foveatedFactor,n.foveatedFactor,i.foveatedFactor),P=sfe(v,u,c),N=this.priorityDeferred?_:0,L=e._pass===Zo.PRELOAD_FLIGHT?0:C;this._priority=E+S+B+P+N+L};lr.prototype.isDestroyed=function(){return!1};lr.prototype.destroy=function(){return this._content=this._content&&this._content.destroy(),this._expiredContent=this._expiredContent&&!this._expiredContent.isDestroyed()&&this._expiredContent.destroy(),this._debugBoundingVolume=this._debugBoundingVolume&&this._debugBoundingVolume.destroy(),this._debugContentBoundingVolume=this._debugContentBoundingVolume&&this._debugContentBoundingVolume.destroy(),this._debugViewerRequestVolume=this._debugViewerRequestVolume&&this._debugViewerRequestVolume.destroy(),ue(this)};var ah=lr;function xp(e){e=e??V.EMPTY_OBJECT;let t=e.id,n=e.group,i=e.class,o=l(n.properties)?n.properties:{};this._class=i,this._properties=o,this._id=t,this._extras=n.extras,this._extensions=n.extensions}Object.defineProperties(xp.prototype,{class:{get:function(){return this._class}},id:{get:function(){return this._id}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});xp.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};xp.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};xp.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};xp.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};xp.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};xp.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};xp.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var gD=xp;function bp(e){e=e??V.EMPTY_OBJECT;let t=e.tileset,n=e.class,i=l(t.properties)?t.properties:{};this._class=n,this._properties=i,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(bp.prototype,{class:{get:function(){return this._class}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});bp.prototype.hasProperty=function(e){return Yn.hasProperty(e,this._properties,this._class)};bp.prototype.hasPropertyBySemantic=function(e){return Yn.hasPropertyBySemantic(e,this._properties,this._class)};bp.prototype.getPropertyIds=function(e){return Yn.getPropertyIds(this._properties,this._class,e)};bp.prototype.getProperty=function(e){return Yn.getProperty(e,this._properties,this._class)};bp.prototype.setProperty=function(e,t){return Yn.setProperty(e,t,this._properties,this._class)};bp.prototype.getPropertyBySemantic=function(e){return Yn.getPropertyBySemantic(e,this._properties,this._class)};bp.prototype.setPropertyBySemantic=function(e,t){return Yn.setPropertyBySemantic(e,t,this._properties,this._class)};var Nk=bp;function hfe(e){e=e??V.EMPTY_OBJECT;let t=e.metadataJson,n=e.schema,i=t.metadata??t.tileset,o;l(i)&&(o=new Nk({tileset:i,class:n.classes[i.class]}));let r=[],s=[],a=t.groups;if(Array.isArray(a)){let c=a.length;for(let u=0;u<c;u++){let f=a[u];s.push(new gD({group:f,class:n.classes[f.class]}))}}else if(l(a)){r=Object.keys(a).sort();let c=r.length;for(let u=0;u<c;u++){let f=r[u];if(a.hasOwnProperty(f)){let h=a[f];s.push(new gD({id:f,group:a[f],class:n.classes[h.class]}))}}}this._schema=n,this._groups=s,this._groupIds=r,this._tileset=o,this._statistics=t.statistics,this._extras=t.extras,this._extensions=t.extensions}Object.defineProperties(hfe.prototype,{schema:{get:function(){return this._schema}},groups:{get:function(){return this._groups}},groupIds:{get:function(){return this._groupIds}},tileset:{get:function(){return this._tileset}},statistics:{get:function(){return this._statistics}},extras:{get:function(){return this._extras}},extensions:{get:function(){return this._extensions}}});var lb=hfe;var mfe={},oXe=new d;mfe.checkChildrenWithinParent=function(e){let t=e.children,n=t.length,i=e.boundingVolume;if(i instanceof Lu||i instanceof $f){let o=i._orientedBoundingBox;e._optimChildrenWithinParent=rh.USE_OPTIMIZATION;for(let r=0;r<n;++r){let a=t[r].boundingVolume;if(!(a instanceof Lu||a instanceof $f)){e._optimChildrenWithinParent=rh.SKIP_OPTIMIZATION;break}let c=a._orientedBoundingBox,u=d.subtract(c.center,o.center,oXe),f=d.magnitude(u);d.divideByScalar(u,f,u);let h=Math.abs(o.halfAxes[0]*u.x)+Math.abs(o.halfAxes[1]*u.y)+Math.abs(o.halfAxes[2]*u.z)+Math.abs(o.halfAxes[3]*u.x)+Math.abs(o.halfAxes[4]*u.y)+Math.abs(o.halfAxes[5]*u.z)+Math.abs(o.halfAxes[6]*u.x)+Math.abs(o.halfAxes[7]*u.y)+Math.abs(o.halfAxes[8]*u.z),A=Math.abs(c.halfAxes[0]*u.x)+Math.abs(c.halfAxes[1]*u.y)+Math.abs(c.halfAxes[2]*u.z)+Math.abs(c.halfAxes[3]*u.x)+Math.abs(c.halfAxes[4]*u.y)+Math.abs(c.halfAxes[5]*u.z)+Math.abs(c.halfAxes[6]*u.x)+Math.abs(c.halfAxes[7]*u.y)+Math.abs(c.halfAxes[8]*u.z);if(h<=A+f){e._optimChildrenWithinParent=rh.SKIP_OPTIMIZATION;break}}}return e._optimChildrenWithinParent===rh.USE_OPTIMIZATION};var Lk=mfe;function _D(){this.head=void 0,this.tail=void 0,this._length=0}Object.defineProperties(_D.prototype,{length:{get:function(){return this._length}}});function rXe(e,t,n){this.item=e,this.previous=t,this.next=n}_D.prototype.add=function(e){let t=new rXe(e,this.tail,void 0);return l(this.tail)?(this.tail.next=t,this.tail=t):(this.head=t,this.tail=t),++this._length,t};function Afe(e,t){l(t.previous)&&l(t.next)?(t.previous.next=t.next,t.next.previous=t.previous):l(t.previous)?(t.previous.next=void 0,e.tail=t.previous):l(t.next)?(t.next.previous=void 0,e.head=t.next):(e.head=void 0,e.tail=void 0),t.next=void 0,t.previous=void 0}_D.prototype.remove=function(e){l(e)&&(Afe(this,e),--this._length)};_D.prototype.splice=function(e,t){if(e===t)return;Afe(this,t);let n=e.next;e.next=t,this.tail===e?this.tail=t:n.previous=t,t.next=n,t.previous=e};var Ok=_D;function _E(){this._list=new Ok,this._sentinel=this._list.add(),this._trimTiles=!1}_E.prototype.reset=function(){this._list.splice(this._list.tail,this._sentinel)};_E.prototype.touch=function(e){let t=e.cacheNode;l(t)&&this._list.splice(this._sentinel,t)};_E.prototype.add=function(e){l(e.cacheNode)||(e.cacheNode=this._list.add(e))};_E.prototype.unloadTile=function(e,t,n){let i=t.cacheNode;l(i)&&(this._list.remove(i),t.cacheNode=void 0,n(e,t))};_E.prototype.unloadTiles=function(e,t){let n=this._trimTiles;this._trimTiles=!1;let i=this._list,o=this._sentinel,r=i.head;for(;r!==o&&(e.totalMemoryUsageInBytes>e.cacheBytes||n);){let s=r.item;r=r.next,this.unloadTile(e,s,t)}};_E.prototype.trim=function(){this._trimTiles=!0};var Fk=_E;function Qk(e){this.tilePropertyName=e,this._minimum=Number.MAX_VALUE,this._maximum=-Number.MAX_VALUE,this._previousMinimum=Number.MAX_VALUE,this._previousMaximum=-Number.MAX_VALUE,this._referenceMinimum={},this._referenceMaximum={}}function IY(e,t){let n;return t==="_loadTimestamp"?n=K.toDate(e).getTime():n=e,n}Qk.prototype.setReferenceMinimumMaximum=function(e,t,n){this._referenceMinimum[n]=IY(e,n),this._referenceMaximum[n]=IY(t,n)};function sXe(e,t){let n=e.tilePropertyName;if(l(n)){let i=IY(t[n],n);return l(i)?(e._maximum=Math.max(i,e._maximum),e._minimum=Math.min(i,e._minimum),i):(e.tilePropertyName=void 0,i)}}var EY=[new G(.1,.1,.1,1),new G(.153,.278,.878,1),new G(.827,.231,.49,1),new G(.827,.188,.22,1),new G(1,.592,.259,1),new G(1,.843,0,1)];Qk.prototype.colorize=function(e,t){let n=this.tilePropertyName;if(!l(n)||!e.contentAvailable||e._selectedFrame!==t.frameNumber)return;let i=sXe(this,e),o=this._previousMinimum,r=this._previousMaximum;if(o===Number.MAX_VALUE||r===-Number.MAX_VALUE)return;let s=r-o+D.EPSILON7,c=D.clamp(i-o,0,s)/s,u=EY.length-1,f=c*u,h=Math.floor(f),A=Math.ceil(f),g=f-h,m=EY[h],_=EY[A],y=G.clone(G.WHITE);y.red=D.lerp(m.red,_.red,g),y.green=D.lerp(m.green,_.green,g),y.blue=D.lerp(m.blue,_.blue,g),e._debugColor=y};Qk.prototype.resetMinimumMaximum=function(){let e=this.tilePropertyName;if(l(e)){let t=this._referenceMinimum[e],n=this._referenceMaximum[e],i=l(t)&&l(n);this._previousMinimum=i?t:this._minimum,this._previousMaximum=i?n:this._maximum,this._minimum=Number.MAX_VALUE,this._maximum=-Number.MAX_VALUE}};var kk=Qk;function ub(){this.selected=0,this.visited=0,this.numberOfCommands=0,this.numberOfAttemptedRequests=0,this.numberOfPendingRequests=0,this.numberOfTilesProcessing=0,this.numberOfTilesWithContentReady=0,this.numberOfTilesTotal=0,this.numberOfLoadedTilesTotal=0,this.numberOfFeaturesSelected=0,this.numberOfFeaturesLoaded=0,this.numberOfPointsSelected=0,this.numberOfPointsLoaded=0,this.numberOfTrianglesSelected=0,this.numberOfTilesStyled=0,this.numberOfFeaturesStyled=0,this.numberOfTilesCulledWithChildrenUnion=0,this.geometryByteLength=0,this.texturesByteLength=0,this.texturesReferenceCounterById={},this.batchTableByteLength=0}ub.prototype.clear=function(){this.selected=0,this.visited=0,this.numberOfCommands=0,this.numberOfAttemptedRequests=0,this.numberOfFeaturesSelected=0,this.numberOfPointsSelected=0,this.numberOfTrianglesSelected=0,this.numberOfTilesStyled=0,this.numberOfFeaturesStyled=0,this.numberOfTilesCulledWithChildrenUnion=0};ub.prototype.incrementSelectionCounts=function(e){this.numberOfFeaturesSelected+=e.featuresLength,this.numberOfPointsSelected+=e.pointsLength,this.numberOfTrianglesSelected+=e.trianglesLength;let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.incrementSelectionCounts(t[i])}};ub.prototype.incrementLoadCounts=function(e){if(this.numberOfFeaturesLoaded+=e.featuresLength,this.numberOfPointsLoaded+=e.pointsLength,this.geometryByteLength+=e.geometryByteLength,this.batchTableByteLength+=e.batchTableByteLength,!(e instanceof zf))this.texturesByteLength+=e.texturesByteLength;else{let n=e.getTextureIds();for(let i of n){let o=this.texturesReferenceCounterById[i]??0;if(o===0){let r=e.getTextureByteLengthById(i);this.texturesByteLength+=r}this.texturesReferenceCounterById[i]=o+1}}let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.incrementLoadCounts(t[i])}};ub.prototype.decrementLoadCounts=function(e){if(this.numberOfFeaturesLoaded-=e.featuresLength,this.numberOfPointsLoaded-=e.pointsLength,this.geometryByteLength-=e.geometryByteLength,this.batchTableByteLength-=e.batchTableByteLength,!(e instanceof zf))this.texturesByteLength-=e.texturesByteLength;else{let n=e.getTextureIds();for(let i of n){let o=this.texturesReferenceCounterById[i];if(o===1){delete this.texturesReferenceCounterById[i];let r=e.getTextureByteLengthById(i);this.texturesByteLength-=r}else this.texturesReferenceCounterById[i]=o-1}}let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)this.decrementLoadCounts(t[i])}};ub.clone=function(e,t){t.selected=e.selected,t.visited=e.visited,t.numberOfCommands=e.numberOfCommands,t.numberOfAttemptedRequests=e.numberOfAttemptedRequests,t.numberOfPendingRequests=e.numberOfPendingRequests,t.numberOfTilesProcessing=e.numberOfTilesProcessing,t.numberOfTilesWithContentReady=e.numberOfTilesWithContentReady,t.numberOfTilesTotal=e.numberOfTilesTotal,t.numberOfFeaturesSelected=e.numberOfFeaturesSelected,t.numberOfFeaturesLoaded=e.numberOfFeaturesLoaded,t.numberOfPointsSelected=e.numberOfPointsSelected,t.numberOfPointsLoaded=e.numberOfPointsLoaded,t.numberOfTrianglesSelected=e.numberOfTrianglesSelected,t.numberOfTilesStyled=e.numberOfTilesStyled,t.numberOfFeaturesStyled=e.numberOfFeaturesStyled,t.numberOfTilesCulledWithChildrenUnion=e.numberOfTilesCulledWithChildrenUnion,t.geometryByteLength=e.geometryByteLength,t.texturesByteLength=e.texturesByteLength,t.texturesReferenceCounterById={...e.texturesReferenceCounterById},t.batchTableByteLength=e.batchTableByteLength};var Um=ub;function yD(){this._style=void 0,this._styleDirty=!1,this._lastStyleTime=0}Object.defineProperties(yD.prototype,{style:{get:function(){return this._style},set:function(e){e!==this._style&&(this._style=e,this._styleDirty=!0)}}});yD.prototype.makeDirty=function(){this._styleDirty=!0};yD.prototype.resetDirty=function(){this._styleDirty=!1};yD.prototype.applyStyle=function(e){if(!l(e.root)||l(this._style)&&!this._style._ready)return;let t=this._styleDirty;t&&++this._lastStyleTime;let n=this._lastStyleTime,i=e._statistics,o=t?e._selectedTiles:e._selectedTilesToStyle,r=o.length;for(let s=0;s<r;++s){let a=o[s];if(a.lastStyleTime!==n){let c=a.content;a.lastStyleTime=n,c.applyStyle(this._style),i.numberOfFeaturesStyled+=c.featuresLength,++i.numberOfTilesStyled}}};var Uk=yD;function aXe(e,t,n){let i=Ii(t,"3DTILES_implicit_tiling")?t.extensions["3DTILES_implicit_tiling"]:t.implicitTiling;this.baseResource=e,this.geometricError=t.geometricError,this.metadataSchema=n;let o=t.boundingVolume;if(!l(o.box)&&!l(o.region)&&!Ii(o,"3DTILES_bounding_volume_S2")&&!Ii(o,"3DTILES_bounding_volume_cylinder"))throw new ce("Only box, region, 3DTILES_bounding_volume_S2, and 3DTILES_bounding_volume_cylinder are supported for implicit tiling");this.boundingVolume=o,this.refine=t.refine,this.subtreeUriTemplate=new we({url:i.subtrees.uri}),this.contentUriTemplates=[],this.contentHeaders=[];let r=cXe(t);for(let s=0;s<r.length;s++){let a=r[s];this.contentHeaders.push(ze(a,!0));let c=new we({url:a.uri});this.contentUriTemplates.push(c)}this.contentCount=this.contentHeaders.length,this.tileHeader=lXe(t),this.subdivisionScheme=Ts[i.subdivisionScheme],this.branchingFactor=Ts.getBranchingFactor(this.subdivisionScheme),this.subtreeLevels=i.subtreeLevels,l(i.availableLevels)?this.availableLevels=i.availableLevels:this.availableLevels=i.maximumLevel+1}function cXe(e){if(Ii(e,"3DTILES_multiple_contents")){let t=e.extensions["3DTILES_multiple_contents"];return l(t.contents)?t.contents:t.content}return l(e.contents)?e.contents:l(e.content)?[e.content]:[]}function lXe(e){let t=ze(e,!0);return l(t.extensions)&&(delete t.extensions["3DTILES_implicit_tiling"],delete t.extensions["3DTILES_multiple_contents"],Object.keys(t.extensions).length===0&&delete t.extensions),delete t.implicitTiling,delete t.contents,delete t.content,t}var fb=aXe;var CD={};function pfe(e){return e=(e^e<<8)&16711935,e=(e^e<<4)&252645135,e=(e^e<<2)&858993459,e=(e^e<<1)&1431655765,e}function xY(e){return e=(e^e<<16)&50331903,e=(e^e<<8)&50393103,e=(e^e<<4)&51130563,e=(e^e<<2)&153391689,e}function gfe(e){return e&=1431655765,e=(e^e>>1)&858993459,e=(e^e>>2)&252645135,e=(e^e>>4)&16711935,e=(e^e>>8)&65535,e}function bY(e){return e&=153391689,e=(e^e>>2)&51130563,e=(e^e>>4)&50393103,e=(e^e>>8)&4278190335,e=(e^e>>16)&1023,e}CD.encode2D=function(e,t){return(pfe(e)|pfe(t)<<1)>>>0};CD.decode2D=function(e,t){return l(t)||(t=new Array(2)),t[0]=gfe(e),t[1]=gfe(e>>1),t};CD.encode3D=function(e,t,n){return xY(e)|xY(t)<<1|xY(n)<<2};CD.decode3D=function(e,t){return l(t)||(t=new Array(3)),t[0]=bY(e),t[1]=bY(e>>1),t[2]=bY(e>>2),t};var yE=CD;function $o(e){this.subdivisionScheme=e.subdivisionScheme,this.subtreeLevels=e.subtreeLevels,this.level=e.level,this.x=e.x,this.y=e.y,this.z=void 0,e.subdivisionScheme===Ts.OCTREE&&(this.z=e.z)}Object.defineProperties($o.prototype,{childIndex:{get:function(){let e=0;return e|=this.x&1,e|=(this.y&1)<<1,this.subdivisionScheme===Ts.OCTREE&&(e|=(this.z&1)<<2),e}},mortonIndex:{get:function(){return this.subdivisionScheme===Ts.OCTREE?yE.encode3D(this.x,this.y,this.z):yE.encode2D(this.x,this.y)}},tileIndex:{get:function(){let e=this.subdivisionScheme===Ts.OCTREE?((1<<3*this.level)-1)/7:((1<<2*this.level)-1)/3,t=this.mortonIndex;return e+t}}});$o.prototype.getDescendantCoordinates=function(e){let t=this.level+e.level,n=(this.x<<e.level)+e.x,i=(this.y<<e.level)+e.y;if(this.subdivisionScheme===Ts.OCTREE){let o=(this.z<<e.level)+e.z;return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i,z:o})}return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i})};$o.prototype.getAncestorCoordinates=function(e){let t=1<<e,n=this.level-e,i=Math.floor(this.x/t),o=Math.floor(this.y/t);if(this.subdivisionScheme===Ts.OCTREE){let r=Math.floor(this.z/t);return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:n,x:i,y:o,z:r})}return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:n,x:i,y:o})};$o.prototype.getOffsetCoordinates=function(e){let t=e.level-this.level,n=1<<t,i=e.x%n,o=e.y%n;if(this.subdivisionScheme===Ts.OCTREE){let r=e.z%n;return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:i,y:o,z:r})}return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:i,y:o})};$o.prototype.getChildCoordinates=function(e){let t=this.level+1,n=2*this.x+e%2,i=2*this.y+Math.floor(e/2)%2;if(this.subdivisionScheme===Ts.OCTREE){let o=2*this.z+Math.floor(e/4)%2;return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i,z:o})}return new $o({subdivisionScheme:this.subdivisionScheme,subtreeLevels:this.subtreeLevels,level:t,x:n,y:i})};$o.prototype.getSubtreeCoordinates=function(){return this.getAncestorCoordinates(this.level%this.subtreeLevels)};$o.prototype.getParentSubtreeCoordinates=function(){return this.getAncestorCoordinates(this.level%this.subtreeLevels+this.subtreeLevels)};$o.prototype.isAncestor=function(e){let t=e.level-this.level;if(t<=0)return!1;let n=e.x>>t,i=e.y>>t,o=this.x===n,r=this.y===i;if(this.subdivisionScheme===Ts.OCTREE){let s=e.z>>t,a=this.z===s;return o&&r&&a}return o&&r};$o.prototype.isEqual=function(e){return this.subdivisionScheme===e.subdivisionScheme&&this.subtreeLevels===e.subtreeLevels&&this.level===e.level&&this.x===e.x&&this.y===e.y&&(this.subdivisionScheme===Ts.OCTREE?this.z===e.z:!0)};$o.prototype.isImplicitTilesetRoot=function(){return this.level===0};$o.prototype.isSubtreeRoot=function(){return this.level%this.subtreeLevels===0};$o.prototype.isBottomOfSubtree=function(){return this.level%this.subtreeLevels===this.subtreeLevels-1};$o.prototype.getTemplateValues=function(){let e={level:this.level,x:this.x,y:this.y};return this.subdivisionScheme===Ts.OCTREE&&(e.z=this.z),e};var _fe=[0,0,0];$o.fromMortonIndex=function(e,t,n,i){let o;return e===Ts.OCTREE?(o=yE.decode3D(i,_fe),new $o({subdivisionScheme:e,subtreeLevels:t,level:n,x:o[0],y:o[1],z:o[2]})):(o=yE.decode2D(i,_fe),new $o({subdivisionScheme:e,subtreeLevels:t,level:n,x:o[0],y:o[1]}))};$o.fromTileIndex=function(e,t,n){let i,o,r;return e===Ts.OCTREE?(i=Math.floor(D.log2(7*n+1)/3),o=((1<<3*i)-1)/7,r=n-o):(i=Math.floor(D.log2(3*n+1)/2),o=((1<<2*i)-1)/3,r=n-o),$o.fromMortonIndex(e,t,i,r)};var db=$o;function Tp(){}Tp.selectTiles=function(e,t){me.throwInstantiationError()};Tp.sortChildrenByDistanceToCamera=function(e,t){return t._distanceToCamera===0&&e._distanceToCamera===0?t._centerZDepth-e._centerZDepth:t._distanceToCamera-e._distanceToCamera};Tp.canTraverse=function(e){return e.children.length===0?!1:e.hasTilesetContent||e.hasImplicitContent?!e.contentExpired:e._screenSpaceError>e.tileset.memoryAdjustedScreenSpaceError};Tp.selectTile=function(e,t){if(e.contentVisibility(t)===nn.OUTSIDE)return;e._wasSelectedLastFrame=!0;let{content:n,tileset:i}=e;n.featurePropertiesDirty?(n.featurePropertiesDirty=!1,e.lastStyleTime=0,i._selectedTilesToStyle.push(e)):e._selectedFrame<t.frameNumber-1&&(i._selectedTilesToStyle.push(e),e._wasSelectedLastFrame=!1),e._selectedFrame=t.frameNumber,i._selectedTiles.push(e)};Tp.visitTile=function(e,t){++e.tileset._statistics.visited,e._visitedFrame=t.frameNumber};Tp.touchTile=function(e,t){e._touchedFrame!==t.frameNumber&&(e.tileset._cache.touch(e),e._touchedFrame=t.frameNumber)};Tp.loadTile=function(e,t){let{tileset:n}=e;if(e._requestedFrame===t.frameNumber||!e.hasUnloadedRenderableContent&&!e.contentExpired||!uXe(e,t))return;let i=t.camera.timeSinceMoved<n.foveatedTimeDelay;e.priorityDeferred&&i||(e._requestedFrame=t.frameNumber,n._requestedTiles.push(e))};function uXe(e,t){let{tileset:n}=e;if(!n._cullRequestsWhileMoving)return!0;let{positionWCDeltaMagnitude:i,positionWCDeltaMagnitudeLastFrame:o}=t.camera,r=i!==0?i:o,s=Math.max(e.boundingSphere.radius*2,1);return n.cullRequestsWhileMovingMultiplier*r/s<1}Tp.updateTile=function(e,t){yfe(e,t),e.updateExpiration(),e._wasMinPriorityChild=!1,e._priorityHolder=e,hXe(e),e._shouldSelect=!1,e._finalResolution=!0};function yfe(e,t){if(e.updateVisibility(t),!e.isVisible)return;let n=e.children.length>0;if((e.hasTilesetContent||e.hasImplicitContent)&&n){let r=e.children[0];yfe(r,t),e._visible=r._visible;return}if(fXe(e,t)){e._visible=!1;return}let i=e.refine===rr.REPLACE,o=e._optimChildrenWithinParent===rh.USE_OPTIMIZATION;if(i&&o&&n&&!dXe(e,t)){++e.tileset._statistics.numberOfTilesCulledWithChildrenUnion,e._visible=!1;return}}function fXe(e,t){let{parent:n,tileset:i}=e;return!l(n)||n.hasTilesetContent||n.hasImplicitContent||n.refine!==rr.ADD?!1:e.getScreenSpaceError(t,!0)<=i.memoryAdjustedScreenSpaceError}function dXe(e,t){let n=!1,i=e.children;for(let o=0;o<i.length;++o){let r=i[o];r.updateVisibility(t),n=n||r.isVisible}return n}function hXe(e){let t=e.tileset._minimumPriority,n=e.tileset._maximumPriority,i=e._priorityHolder;n.distance=Math.max(i._distanceToCamera,n.distance),t.distance=Math.min(i._distanceToCamera,t.distance),n.depth=Math.max(e._depth,n.depth),t.depth=Math.min(e._depth,t.depth),n.foveatedFactor=Math.max(i._foveatedFactor,n.foveatedFactor),t.foveatedFactor=Math.min(i._foveatedFactor,t.foveatedFactor),n.reverseScreenSpaceError=Math.max(e._priorityReverseScreenSpaceError,n.reverseScreenSpaceError),t.reverseScreenSpaceError=Math.min(e._priorityReverseScreenSpaceError,t.reverseScreenSpaceError)}var La=Tp;function Cfe(){}var ED={stack:new kl,stackMaximumLength:0};Cfe.selectTiles=function(e,t){e._selectedTiles.length=0,e._requestedTiles.length=0,e.hasMixedContent=!1;let n=!0,i=e.root;if(i.updateVisibility(t),!i.isVisible)return n;let{touchTile:o,visitTile:r}=La,s=ED.stack;for(s.push(i);s.length>0;){ED.stackMaximumLength=Math.max(ED.stackMaximumLength,s.length);let a=s.pop(),c=a.refine===rr.ADD,u=a.refine===rr.REPLACE,f=mXe(a);f&&AXe(a,s,t),(c||u&&!f)&&(pXe(e,a),o(a,t),gXe(a,t),a.hasRenderableContent&&!a.contentAvailable&&(n=!1)),r(a,t)}return ED.stack.trim(ED.stackMaximumLength),n};function mXe(e){return e.children.length===0?!1:e.hasTilesetContent||e.hasImplicitContent?!e.contentExpired:(e.hasEmptyContent,!0)}function AXe(e,t,n){let{children:i}=e;for(let o=0;o<i.length;++o){let r=i[o];r.updateVisibility(n),r.isVisible&&t.push(r)}}function pXe(e,t){(t.hasUnloadedRenderableContent||t.contentExpired)&&(t._priority=0,e._requestedTiles.push(t))}function gXe(e,t){e.contentAvailable&&e.contentVisibility(t)!==nn.OUTSIDE&&e.tileset._selectedTiles.push(e)}var Gk=Cfe;function Efe(){}var ID={stack:new kl,stackMaximumLength:0},xD={stack:new kl,stackMaximumLength:0};Efe.selectTiles=function(e,t){if(e._requestedTiles.length=0,e.debugFreezeFrame)return;e._selectedTiles.length=0,e._selectedTilesToStyle.length=0,e._emptyTiles.length=0,e.hasMixedContent=!1;let n=e.root;if(La.updateTile(n,t),!n.isVisible||n.getScreenSpaceError(t,!0)<=e.memoryAdjustedScreenSpaceError)return;yXe(n,t),ID.stack.trim(ID.stackMaximumLength),xD.stack.trim(xD.stackMaximumLength);let i=e._requestedTiles;for(let o=0;o<i.length;++o)i[o].updatePriority()};function TY(e,t){e.contentAvailable&&La.selectTile(e,t)}function _Xe(e,t,n){let i=e.refine===rr.REPLACE,{tileset:o,children:r}=e,{updateTile:s,loadTile:a,touchTile:c}=La;for(let m=0;m<r.length;++m)s(r[m],n);r.sort(La.sortChildrenByDistanceToCamera);let u=i&&e.hasRenderableContent,f=!0,h=!1,A=-1,g=Number.MAX_VALUE;for(let m=0;m<r.length;++m){let _=r[m];if(_.isVisible?(t.push(_),_._foveatedFactor<g&&(A=m,g=_._foveatedFactor),h=!0):(u||o.loadSiblings)&&(_._foveatedFactor<g&&(A=m,g=_._foveatedFactor),a(_,n),c(_,n)),u){let y;_._inRequestVolume?_.hasRenderableContent?y=_.contentAvailable:y=CXe(_,n):y=!1,f=f&&y}}if(h||(f=!1),A!==-1&&i){let m=r[A];m._wasMinPriorityChild=!0;let _=(e._wasMinPriorityChild||e===o.root)&&g<=e._priorityHolder._foveatedFactor?e._priorityHolder:e;_._foveatedFactor=Math.min(m._foveatedFactor,_._foveatedFactor),_._distanceToCamera=Math.min(m._distanceToCamera,_._distanceToCamera);for(let y=0;y<r.length;++y)r[y]._priorityHolder=_}return f}function yXe(e,t){let{tileset:n}=e,{canTraverse:i,loadTile:o,visitTile:r,touchTile:s}=La,a=ID.stack;for(a.push(e);a.length>0;){ID.stackMaximumLength=Math.max(ID.stackMaximumLength,a.length);let c=a.pop(),u=c.parent,f=!l(u)||u._refines;c._refines=i(c)?_Xe(c,a,t)&&f:!1;let h=!c._refines&&f;c.hasRenderableContent?c.refine===rr.ADD?(TY(c,t),o(c,t)):c.refine===rr.REPLACE&&(o(c,t),h&&TY(c,t)):(n._emptyTiles.push(c),o(c,t),h&&TY(c,t)),r(c,t),s(c,t)}}function CXe(e,t){let{canTraverse:n,updateTile:i,loadTile:o,touchTile:r}=La,s=!0,a=xD.stack;for(a.push(e);a.length>0;){xD.stackMaximumLength=Math.max(xD.stackMaximumLength,a.length);let c=a.pop(),u=c.children,f=u.length,h=!c.hasRenderableContent&&n(c);if(!h&&!c.contentAvailable&&(s=!1),i(c,t),c.isVisible||(o(c,t),r(c,t)),h)for(let A=0;A<f;++A){let g=u[A];a.push(g)}}return e.hasEmptyContent||s}var zk=Efe;function Ife(){}var bD={stack:new kl,stackMaximumLength:0},TD={stack:new kl,stackMaximumLength:0},Sp={stack:new kl,stackMaximumLength:0,ancestorStack:new kl,ancestorStackMaximumLength:0},EXe=2;Ife.selectTiles=function(e,t){if(e._requestedTiles.length=0,e.debugFreezeFrame)return;e._selectedTiles.length=0,e._selectedTilesToStyle.length=0,e._emptyTiles.length=0,e.hasMixedContent=!1;let n=e.root;if(La.updateTile(n,t),!n.isVisible||n.getScreenSpaceError(t,!0)<=e.memoryAdjustedScreenSpaceError)return;wXe(n,t),BXe(n,t),bD.stack.trim(bD.stackMaximumLength),TD.stack.trim(TD.stackMaximumLength),Sp.stack.trim(Sp.stackMaximumLength),Sp.ancestorStack.trim(Sp.ancestorStackMaximumLength);let i=e._requestedTiles;for(let o=0;o<i.length;++o)i[o].updatePriority()};function IXe(e,t){let{updateTile:n,touchTile:i,selectTile:o}=La,r=TD.stack;for(r.push(e);r.length>0;){TD.stackMaximumLength=Math.max(TD.stackMaximumLength,r.length);let a=r.pop().children;for(let c=0;c<a.length;++c){let u=a[c];u.isVisible&&(u.contentAvailable?(n(u,t),i(u,t),o(u,t)):u._depth-e._depth<EXe&&r.push(u))}}}function Vk(e,t){let n=e.contentAvailable?e:e._ancestorWithContentAvailable;l(n)?n._shouldSelect=!0:IXe(e,t)}function xXe(e,t){e._ancestorWithContent=void 0,e._ancestorWithContentAvailable=void 0;let{parent:n}=e;if(!l(n))return;let i=!n.hasUnloadedRenderableContent||n._requestedFrame===t.frameNumber;e._ancestorWithContent=i?n:n._ancestorWithContent,e._ancestorWithContentAvailable=n.contentAvailable?n:n._ancestorWithContentAvailable}function bXe(e,t){let n=t._ancestorWithContent;return!e.immediatelyLoadDesiredLevelOfDetail&&(t._priorityProgressiveResolutionScreenSpaceErrorLeaf||l(n)&&t._screenSpaceError<n._screenSpaceError/e.skipScreenSpaceErrorFactor&&t._depth>n._depth+e.skipLevels)}function TXe(e,t,n){let{tileset:i,children:o}=e,{updateTile:r,loadTile:s,touchTile:a}=La;for(let u=0;u<o.length;++u)r(o[u],n);o.sort(La.sortChildrenByDistanceToCamera);let c=!1;for(let u=0;u<o.length;++u){let f=o[u];f.isVisible?(t.push(f),c=!0):i.loadSiblings&&(s(f,n),a(f,n))}return c}function SXe(e,t){let{tileset:n}=e;return n.immediatelyLoadDesiredLevelOfDetail?!1:l(e._ancestorWithContent)?e._screenSpaceError===0?e.parent._screenSpaceError>t:e._screenSpaceError>t:!0}function wXe(e,t){let{tileset:n}=e,i=n.immediatelyLoadDesiredLevelOfDetail?Number.MAX_VALUE:Math.max(n.baseScreenSpaceError,n.memoryAdjustedScreenSpaceError),{canTraverse:o,loadTile:r,visitTile:s,touchTile:a}=La,c=bD.stack;for(c.push(e);c.length>0;){bD.stackMaximumLength=Math.max(bD.stackMaximumLength,c.length);let u=c.pop();xXe(u,t);let f=u.parent,h=!l(f)||f._refines;u._refines=o(u)?TXe(u,c,t)&&h:!1;let A=!u._refines&&h;u.hasRenderableContent?u.refine===rr.ADD?(Vk(u,t),r(u,t)):u.refine===rr.REPLACE&&(SXe(u,i)?(r(u,t),A&&Vk(u,t)):A?(Vk(u,t),r(u,t)):bXe(n,u)&&r(u,t)):(n._emptyTiles.push(u),r(u,t),A&&Vk(u,t)),s(u,t),a(u,t)}}function BXe(e,t){let{selectTile:n,canTraverse:i}=La,{stack:o,ancestorStack:r}=Sp,s;for(o.push(e);o.length>0||r.length>0;){if(Sp.stackMaximumLength=Math.max(Sp.stackMaximumLength,o.length),Sp.ancestorStackMaximumLength=Math.max(Sp.ancestorStackMaximumLength,r.length),r.length>0){let u=r.peek();if(u._stackLength===o.length){r.pop(),u!==s&&(u._finalResolution=!1),n(u,t);continue}}let a=o.pop();if(!l(a))continue;let c=i(a);if(a._shouldSelect)if(a.refine===rr.ADD)n(a,t);else{if(a._selectionDepth=r.length,a._selectionDepth>0&&(a.tileset.hasMixedContent=!0),s=a,!c){n(a,t);continue}r.push(a),a._stackLength=o.length}if(c){let u=a.children;for(let f=0;f<u.length;++f){let h=u[f];h.isVisible&&o.push(h)}}}}var Hk=Ife;function Ys(){this._layers=[],this.layerAdded=new _e,this.layerRemoved=new _e,this.layerMoved=new _e,this.layerShownOrHidden=new _e}Object.defineProperties(Ys.prototype,{length:{get:function(){return this._layers.length}}});Ys.prototype.add=function(e,t){l(t)?this._layers.splice(t,0,e):(t=this._layers.length,this._layers.push(e)),this._update(),this.layerAdded.raiseEvent(e,t);let i=e.readyEvent.addEventListener(()=>{this.layerShownOrHidden.raiseEvent(e,e._layerIndex,e.show),i()})};Ys.prototype.addImageryProvider=function(e,t){let n=new ds(e);return this.add(n,t),n};Ys.prototype.remove=function(e,t){t=t??!0;let n=this._layers.indexOf(e);return n!==-1?(this._layers.splice(n,1),this._update(),this.layerRemoved.raiseEvent(e,n),t&&e.destroy(),!0):!1};Ys.prototype.removeAll=function(e){e=e??!0;let t=this._layers;for(let n=0,i=t.length;n<i;n++){let o=t[n];this.layerRemoved.raiseEvent(o,n),e&&o.destroy()}this._layers=[]};Ys.prototype.contains=function(e){return this.indexOf(e)!==-1};Ys.prototype.indexOf=function(e){return this._layers.indexOf(e)};Ys.prototype.get=function(e){return this._layers[e]};function Wk(e,t){return e.indexOf(t)}function xfe(e,t,n){let i=e._layers;if(t=D.clamp(t,0,i.length-1),n=D.clamp(n,0,i.length-1),t===n)return;let o=i[t];i[t]=i[n],i[n]=o,e._update(),e.layerMoved.raiseEvent(o,n,t)}Ys.prototype.raise=function(e){let t=Wk(this._layers,e);xfe(this,t,t+1)};Ys.prototype.lower=function(e){let t=Wk(this._layers,e);xfe(this,t,t-1)};Ys.prototype.raiseToTop=function(e){let t=Wk(this._layers,e);t!==this._layers.length-1&&(this._layers.splice(t,1),this._layers.push(e),this._update(),this.layerMoved.raiseEvent(e,this._layers.length-1,t))};Ys.prototype.lowerToBottom=function(e){let t=Wk(this._layers,e);t!==0&&(this._layers.splice(t,1),this._layers.splice(0,0,e),this._update(),this.layerMoved.raiseEvent(e,0,t))};var DXe=new ae;function bfe(e,t,n,i){let o=e.globe._surface._tilesToRender,r;for(let a=0;!l(r)&&a<o.length;++a){let c=o[a];ae.contains(c.rectangle,t)&&(r=c)}if(!l(r))return;let s=r.data.imagery;for(let a=s.length-1;a>=0;--a){let c=s[a],u=c.readyImagery;if(!l(u)||!u.imageryLayer.ready)continue;let f=u.imageryLayer.imageryProvider;if(n&&!l(f.pickFeatures)||!ae.contains(u.rectangle,t))continue;let h=DXe,A=1/1024;h.west=D.lerp(r.rectangle.west,r.rectangle.east,c.textureCoordinateRectangle.x-A),h.east=D.lerp(r.rectangle.west,r.rectangle.east,c.textureCoordinateRectangle.z+A),h.south=D.lerp(r.rectangle.south,r.rectangle.north,c.textureCoordinateRectangle.y-A),h.north=D.lerp(r.rectangle.south,r.rectangle.north,c.textureCoordinateRectangle.w+A),ae.contains(h,t)&&i(u)}}Ys.prototype.pickImageryLayers=function(e,t){let n=t.globe.pick(e,t);if(!l(n))return;let i=t.ellipsoid.cartesianToCartographic(n),o=[];if(bfe(t,i,!1,function(r){o.push(r.imageryLayer)}),o.length!==0)return o};Ys.prototype.pickImageryLayerFeatures=function(e,t){let n=t.globe.pick(e,t);if(!l(n))return;let i=t.ellipsoid.cartesianToCartographic(n),o=[],r=[];if(bfe(t,i,!0,function(s){if(!s.imageryLayer.ready)return;let c=s.imageryLayer.imageryProvider.pickFeatures(s.x,s.y,s.level,i.longitude,i.latitude);l(c)&&(o.push(c),r.push(s.imageryLayer))}),o.length!==0)return Promise.all(o).then(function(s){let a=[];for(let c=0;c<s.length;++c){let u=s[c],f=r[c];if(l(u)&&u.length>0)for(let h=0;h<u.length;++h){let A=u[h];A.imageryLayer=f,l(A.position)||(A.position=i),a.push(A)}}return a})};Ys.prototype.queueReprojectionCommands=function(e){let t=this._layers;for(let n=0,i=t.length;n<i;++n)t[n].queueReprojectionCommands(e)};Ys.prototype.cancelReprojections=function(){let e=this._layers;for(let t=0,n=e.length;t<n;++t)e[t].cancelReprojections()};Ys.prototype.isDestroyed=function(){return!1};Ys.prototype.destroy=function(){return this.removeAll(!0),ue(this)};Ys.prototype._update=function(){let e=!0,t=this._layers,n,i,o,r;for(o=0,r=t.length;o<r;++o)i=t[o],i._layerIndex=o,i.show?(i._isBaseLayer=e,e=!1):i._isBaseLayer=!1,i.show!==i._show&&(l(i._show)&&(l(n)||(n=[]),n.push(i)),i._show=i.show);if(l(n))for(o=0,r=n.length;o<r;++o)i=n[o],this.layerShownOrHidden.raiseEvent(i,i._layerIndex,i.show)};var hb=Ys;function Ho(e){e=e??V.EMPTY_OBJECT,this._url=void 0,this._basePath=void 0,this._root=void 0,this._resource=void 0,this._asset=void 0,this._properties=void 0,this._geometricError=void 0,this._scaledGeometricError=void 0,this._extensionsUsed=void 0,this._extensions=void 0,this._modelUpAxis=void 0,this._modelForwardAxis=void 0,this._cache=new Fk,this._processingQueue=[],this._selectedTiles=[],this._emptyTiles=[],this._requestedTiles=[],this._selectedTilesToStyle=[],this._loadTimestamp=void 0,this._timeSinceLoad=0,this._updatedVisibilityFrame=0,this._updatedModelMatrixFrame=0,this._modelMatrixChanged=!1,this._previousModelMatrix=void 0,this._extras=void 0,this._credits=void 0,this._showCreditsOnScreen=e.showCreditsOnScreen??!1,this._cullWithChildrenBounds=e.cullWithChildrenBounds??!0,this._allTilesAdditive=!0,this._hasMixedContent=!1,this._stencilClearCommand=void 0,this._backfaceCommands=new kl,this._maximumScreenSpaceError=e.maximumScreenSpaceError??16,this._memoryAdjustedScreenSpaceError=this._maximumScreenSpaceError,this._cacheBytes=e.cacheBytes??512*1024*1024;let t=e.maximumCacheOverflowBytes??512*1024*1024;this._maximumCacheOverflowBytes=t,this._styleEngine=new Uk,this._styleApplied=!1,this._modelMatrix=l(e.modelMatrix)?R.clone(e.modelMatrix):R.clone(R.IDENTITY),this._addHeightCallbacks=[],this._statistics=new Um,this._statisticsLast=new Um,this._statisticsPerPass=new Array(Zo.NUMBER_OF_PASSES);for(let o=0;o<Zo.NUMBER_OF_PASSES;++o)this._statisticsPerPass[o]=new Um;this._requestedTilesInFlight=[],this._maximumPriority={foveatedFactor:-Number.MAX_VALUE,depth:-Number.MAX_VALUE,distance:-Number.MAX_VALUE,reverseScreenSpaceError:-Number.MAX_VALUE},this._minimumPriority={foveatedFactor:Number.MAX_VALUE,depth:Number.MAX_VALUE,distance:Number.MAX_VALUE,reverseScreenSpaceError:Number.MAX_VALUE},this._heatmap=new kk(e.debugHeatmapTilePropertyName),this.cullRequestsWhileMoving=e.cullRequestsWhileMoving??!0,this._cullRequestsWhileMoving=!1,this.cullRequestsWhileMovingMultiplier=e.cullRequestsWhileMovingMultiplier??60,this.progressiveResolutionHeightFraction=D.clamp(e.progressiveResolutionHeightFraction??.3,0,.5),this.preferLeaves=e.preferLeaves??!1,this._tilesLoaded=!1,this._initialTilesLoaded=!1,this._tileDebugLabels=void 0,this._classificationType=e.classificationType,this._heightReference=e.heightReference,this._scene=e.scene,this._ellipsoid=e.ellipsoid??te.WGS84,this._initialClippingPlanesOriginMatrix=R.IDENTITY,this._clippingPlanesOriginMatrix=void 0,this._clippingPlanesOriginMatrixDirty=!0,this._vectorClassificationOnly=e.vectorClassificationOnly??!1,this._vectorKeepDecodedPositions=e.vectorKeepDecodedPositions??!1,this._imageryLayers=new hb(this),this._imageryLayersModificationCounter=0,this._imageryLayersListener=()=>{this._imageryLayersModificationCounter++},this.imageryLayers.layerAdded.addEventListener(this._imageryLayersListener),this.imageryLayers.layerRemoved.addEventListener(this._imageryLayersListener),this.imageryLayers.layerMoved.addEventListener(this._imageryLayersListener),this.imageryLayers.layerShownOrHidden.addEventListener(this._imageryLayersListener),this._asynchronouslyLoadImagery=e.asynchronouslyLoadImagery??!1,this.preloadWhenHidden=e.preloadWhenHidden??!1,this.preloadFlightDestinations=e.preloadFlightDestinations??!0,this._pass=void 0,this.dynamicScreenSpaceError=e.dynamicScreenSpaceError??!0,this.foveatedScreenSpaceError=e.foveatedScreenSpaceError??!0,this._foveatedConeSize=e.foveatedConeSize??.1,this._foveatedMinimumScreenSpaceErrorRelaxation=e.foveatedMinimumScreenSpaceErrorRelaxation??0,this.foveatedInterpolationCallback=e.foveatedInterpolationCallback??D.lerp,this.foveatedTimeDelay=e.foveatedTimeDelay??.2,this.dynamicScreenSpaceErrorDensity=e.dynamicScreenSpaceErrorDensity??2e-4,this.dynamicScreenSpaceErrorFactor=e.dynamicScreenSpaceErrorFactor??24,this.dynamicScreenSpaceErrorHeightFalloff=e.dynamicScreenSpaceErrorHeightFalloff??.25,this._dynamicScreenSpaceErrorComputedDensity=0,this.shadows=e.shadows??Dn.ENABLED,this.show=e.show??!0,this.colorBlendMode=Su.HIGHLIGHT,this.colorBlendAmount=.5,this._pointCloudShading=new op(e.pointCloudShading),this._pointCloudEyeDomeLighting=new u_,this.loadProgress=new _e,this.allTilesLoaded=new _e,this.initialTilesLoaded=new _e,this.tileLoad=new _e,this.tileUnload=new _e,this.tileFailed=new _e,this.tileVisible=new _e,this.skipLevelOfDetail=e.skipLevelOfDetail??!1,this._disableSkipLevelOfDetail=!1,this.baseScreenSpaceError=e.baseScreenSpaceError??1024,this.skipScreenSpaceErrorFactor=e.skipScreenSpaceErrorFactor??16,this.skipLevels=e.skipLevels??1,this.immediatelyLoadDesiredLevelOfDetail=e.immediatelyLoadDesiredLevelOfDetail??!1,this.loadSiblings=e.loadSiblings??!1,this._clippingPlanes=void 0,l(e.clippingPlanes)&&Vs.setOwner(e.clippingPlanes,this,"_clippingPlanes"),this._clippingPolygons=void 0,l(e.clippingPolygons)&&xm.setOwner(e.clippingPolygons,this,"_clippingPolygons"),l(e.imageBasedLighting)?(this._imageBasedLighting=e.imageBasedLighting,this._shouldDestroyImageBasedLighting=!1):(this._imageBasedLighting=new GI,this._shouldDestroyImageBasedLighting=!0),this._environmentMapManager=new s_(e.environmentMapOptions),this.lightColor=e.lightColor,this.backFaceCulling=e.backFaceCulling??!0,this._enableShowOutline=e.enableShowOutline??!0,this.showOutline=e.showOutline??!0,this.outlineColor=e.outlineColor??G.BLACK,this.splitDirection=e.splitDirection??wr.NONE,this.enableCollision=e.enableCollision??!1,this._projectTo2D=e.projectTo2D??!1,this._enablePick=e.enablePick??!1,this.debugFreezeFrame=e.debugFreezeFrame??!1,this.debugColorizeTiles=e.debugColorizeTiles??!1,this._enableDebugWireframe=e.enableDebugWireframe??!1,this.debugWireframe=e.debugWireframe??!1,this.debugWireframe===!0&&this._enableDebugWireframe===!1&&yt("tileset-debug-wireframe-ignored","enableDebugWireframe must be set to true in the Cesium3DTileset constructor, otherwise debugWireframe will be ignored."),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.debugShowContentBoundingVolume=e.debugShowContentBoundingVolume??!1,this.debugShowViewerRequestVolume=e.debugShowViewerRequestVolume??!1,this._tileDebugLabels=void 0,this.debugPickedTileLabelOnly=!1,this.debugPickedTile=void 0,this.debugPickPosition=void 0,this.debugShowGeometricError=e.debugShowGeometricError??!1,this.debugShowRenderingStatistics=e.debugShowRenderingStatistics??!1,this.debugShowMemoryUsage=e.debugShowMemoryUsage??!1,this.debugShowUrl=e.debugShowUrl??!1,this.examineVectorLinesFunction=void 0,this._metadataExtension=void 0,this._customShader=e.customShader;let n=e.featureIdLabel??"featureId_0";typeof n=="number"&&(n=`featureId_${n}`),this._featureIdLabel=n;let i=e.instanceFeatureIdLabel??"instanceFeatureId_0";typeof i=="number"&&(i=`instanceFeatureId_${i}`),this._instanceFeatureIdLabel=i}Object.defineProperties(Ho.prototype,{isCesium3DTileset:{get:function(){return!0}},asset:{get:function(){return this._asset}},extensions:{get:function(){return this._extensions}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Vs.setOwner(e,this,"_clippingPlanes")}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){xm.setOwner(e,this,"_clippingPolygons")}},imageryLayers:{get:function(){return this._imageryLayers}},imageryLayersModificationCounter:{get:function(){return this._imageryLayersModificationCounter}},asynchronouslyLoadImagery:{get:function(){return this._asynchronouslyLoadImagery}},properties:{get:function(){return this._properties}},tilesLoaded:{get:function(){return this._tilesLoaded}},resource:{get:function(){return this._resource}},basePath:{get:function(){return Pr("Cesium3DTileset.basePath","Cesium3DTileset.basePath has been deprecated. All tiles are relative to the url of the tileset JSON file that contains them. Use the url property instead."),this._basePath}},style:{get:function(){return this._styleEngine.style},set:function(e){this._styleEngine.style=e}},customShader:{get:function(){return this._customShader},set:function(e){this._customShader=e}},hasMixedContent:{get:function(){return this._hasMixedContent},set:function(e){this._hasMixedContent=e}},isSkippingLevelOfDetail:{get:function(){return this.skipLevelOfDetail&&!l(this._classificationType)&&!this._disableSkipLevelOfDetail&&!this._allTilesAdditive}},metadataExtension:{get:function(){return this._metadataExtension}},metadata:{get:function(){if(l(this._metadataExtension))return this._metadataExtension.tileset}},schema:{get:function(){if(l(this._metadataExtension))return this._metadataExtension.schema}},maximumScreenSpaceError:{get:function(){return this._maximumScreenSpaceError},set:function(e){this._maximumScreenSpaceError=e,this._memoryAdjustedScreenSpaceError=e}},cacheBytes:{get:function(){return this._cacheBytes},set:function(e){this._cacheBytes=e}},maximumCacheOverflowBytes:{get:function(){return this._maximumCacheOverflowBytes},set:function(e){this._maximumCacheOverflowBytes=e}},memoryAdjustedScreenSpaceError:{get:function(){return this._memoryAdjustedScreenSpaceError}},pointCloudShading:{get:function(){return this._pointCloudShading},set:function(e){this._pointCloudShading=e}},root:{get:function(){return this._root}},boundingSphere:{get:function(){return this._root.updateTransform(this._modelMatrix),this._root.boundingSphere}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=R.clone(e,this._modelMatrix)}},timeSinceLoad:{get:function(){return this._timeSinceLoad}},totalMemoryUsageInBytes:{get:function(){let e=this._statistics;return e.texturesByteLength+e.geometryByteLength+e.batchTableByteLength}},clippingPlanesOriginMatrix:{get:function(){return l(this._clippingPlanesOriginMatrix)?(this._clippingPlanesOriginMatrixDirty&&(R.multiply(this.root.computedTransform,this._initialClippingPlanesOriginMatrix,this._clippingPlanesOriginMatrix),this._clippingPlanesOriginMatrixDirty=!1),this._clippingPlanesOriginMatrix):R.IDENTITY}},styleEngine:{get:function(){return this._styleEngine}},statistics:{get:function(){return this._statistics}},classificationType:{get:function(){return this._classificationType}},heightReference:{get:function(){return this._heightReference}},scene:{get:function(){return this._scene}},ellipsoid:{get:function(){return this._ellipsoid}},foveatedConeSize:{get:function(){return this._foveatedConeSize},set:function(e){this._foveatedConeSize=e}},foveatedMinimumScreenSpaceErrorRelaxation:{get:function(){return this._foveatedMinimumScreenSpaceErrorRelaxation},set:function(e){this._foveatedMinimumScreenSpaceErrorRelaxation=e}},extras:{get:function(){return this._extras}},imageBasedLighting:{get:function(){return this._imageBasedLighting},set:function(e){e!==this._imageBasedLighting&&(this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=e,this._shouldDestroyImageBasedLighting=!1)}},environmentMapManager:{get:function(){return this._environmentMapManager}},vectorClassificationOnly:{get:function(){return this._vectorClassificationOnly}},vectorKeepDecodedPositions:{get:function(){return this._vectorKeepDecodedPositions}},showCreditsOnScreen:{get:function(){return this._showCreditsOnScreen},set:function(e){this._showCreditsOnScreen=e,Rfe(this)}},featureIdLabel:{get:function(){return this._featureIdLabel},set:function(e){typeof e=="number"&&(e=`featureId_${e}`),this._featureIdLabel=e}},instanceFeatureIdLabel:{get:function(){return this._instanceFeatureIdLabel},set:function(e){typeof e=="number"&&(e=`instanceFeatureId_${e}`),this._instanceFeatureIdLabel=e}}});Ho.fromIonAssetId=async function(e,t){let n=await wf.fromAssetId(e);return Ho.fromUrl(n,t)};Ho.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=we.createIfNeeded(e),i;n.extension==="json"?i=n.getBaseUri(!0):n.isDataUri&&(i="");let o=await Ho.loadJson(n),r=await vXe(n,o),s=new Ho(t);s._resource=n,s._url=n.url,s._basePath=i,s._metadataExtension=r,s._geometricError=o.geometricError,s._scaledGeometricError=o.geometricError;let a=o.asset;s._asset=a,s._extras=o.extras,Rfe(s);let c=l(o.asset.gltfUpAxis)?Ao.fromName(o.asset.gltfUpAxis):Ao.Y,u=t.modelUpAxis??c,f=t.modelForwardAxis??Ao.X;s._properties=o.properties,s._extensionsUsed=o.extensionsUsed,s._extensions=o.extensions,s._modelUpAxis=u,s._modelForwardAxis=f,s._root=s.loadTileset(n,o);let A=s._root.createBoundingVolume(o.root.boundingVolume,R.IDENTITY).boundingSphere.center,g=s._ellipsoid.cartesianToCartographic(A);return l(g)&&g.height>wi._defaultMinTerrainHeight&&(s._initialClippingPlanesOriginMatrix=kt.eastNorthUpToFixedFrame(A)),s._clippingPlanesOriginMatrix=R.clone(s._initialClippingPlanesOriginMatrix),s};Ho.loadJson=function(e){return we.createIfNeeded(e).fetchJson()};Ho.prototype.makeStyleDirty=function(){this._styleEngine.makeDirty()};Ho.prototype.loadTileset=function(e,t,n){let i=t.asset;if(!l(i))throw new ce("Tileset must have an asset property.");if(i.version!=="0.0"&&i.version!=="1.0"&&i.version!=="1.1")throw new ce("The tileset must be 3D Tiles version 0.0, 1.0, or 1.1");l(t.extensionsRequired)&&Ho.checkSupportedExtensions(t.extensionsRequired);let o=this._statistics,r=i.tilesetVersion;l(r)&&(this._basePath+=`?v=${r}`,e=e.clone(),e.setQueryParameters({v:r}));let s=Tfe(this,e,t.root,n);l(n)&&(n.children.push(s),s._depth=n._depth+1);let a=[];for(a.push(s);a.length>0;){let c=a.pop();++o.numberOfTilesTotal,this._allTilesAdditive=this._allTilesAdditive&&c.refine===rr.ADD;let u=c._header.children;if(l(u))for(let f=0;f<u.length;++f){let h=u[f],A=Tfe(this,e,h,c);c.children.push(A),A._depth=c._depth+1,a.push(A)}this._cullWithChildrenBounds&&Lk.checkChildrenWithinParent(c)}return s};function Tfe(e,t,n,i){if(!(l(n.implicitTiling)||Ii(n,"3DTILES_implicit_tiling")))return new ah(e,t,n,i);let r=e.schema,s=new fb(t,n,r),a=new db({subdivisionScheme:s.subdivisionScheme,subtreeLevels:s.subtreeLevels,level:0,x:0,y:0,z:0}),c=s.subtreeUriTemplate.getDerivedResource({templateValues:a.getTemplateValues()}).url,f=ze(n,!0);f.contents=[{uri:c}],delete f.content,delete f.extensions;let h=new ah(e,t,f,i);return h.implicitTileset=s,h.implicitCoordinates=a,h}async function vXe(e,t){let n=Ii(t,"3DTILES_metadata")?t.extensions["3DTILES_metadata"]:t,i;if(l(n.schemaUri))e=e.getDerivedResource({url:n.schemaUri}),i=Qi.getSchemaLoader({resource:e});else if(l(n.schema))i=Qi.getSchemaLoader({schema:n.schema});else return;await i.load();let o=new lb({schema:i.schema,metadataJson:n});return Qi.unload(i),o}var Sfe=new d,PXe=new Ae,RXe=new R,MXe=new d,NXe=new d,LXe=new d,OXe=new d;function FXe(e,t){let n,i,o,r,s,a=t.camera,c=e._root,u=c.contentBoundingVolume;if(u instanceof $f)n=d.normalize(a.positionWC,Sfe),i=a.directionWC,o=a.positionCartographic.height,r=u.minimumHeight,s=u.maximumHeight;else{let _=R.inverseTransformation(c.computedTransform,RXe),y=t.mapProjection.ellipsoid,C=u.boundingVolume,E=R.multiplyByPoint(_,C.center,MXe);if(d.magnitude(E)>y.minimumRadius){let I=Ae.fromCartesian(E,y,PXe);n=d.normalize(a.positionWC,Sfe),i=a.directionWC,o=a.positionCartographic.height,r=0,s=I.height*2}else{let I=R.multiplyByPoint(_,a.positionWC,NXe);if(n=d.UNIT_Z,i=R.multiplyByPointAsVector(_,a.directionWC,LXe),i=d.normalize(i,i),o=I.z,u instanceof Lu){let b=J.getColumn(C.halfAxes,2,OXe),S=d.magnitude(b);r=E.z-S,s=E.z+S}else if(u instanceof O_){let b=C.radius;r=E.z-b,s=E.z+b}}}let f=e.dynamicScreenSpaceErrorHeightFalloff,h=r+(s-r)*f,A=s,g=D.clamp((o-h)/(A-h),0,1),m=1-Math.abs(d.dot(i,n));m=m*(1-g),e._dynamicScreenSpaceErrorComputedDensity=e.dynamicScreenSpaceErrorDensity*m}function QXe(e,t){if(t.hasEmptyContent)return;let{statistics:n}=e,i=t.contentExpired,o=t.requestContent();l(o)&&(o.then(r=>{!l(r)||t.isDestroyed()||e.isDestroyed()||(e._processingQueue.push(t),++n.numberOfTilesProcessing)}).catch(r=>{Dfe(r,e,t)}),i&&(t.hasTilesetContent||t.hasImplicitContent?ZXe(e,t):(n.decrementLoadCounts(t.content),--n.numberOfTilesWithContentReady)),e._requestedTilesInFlight.push(t))}function Bfe(e,t){return e._priority-t._priority}Ho.prototype.postPassesUpdate=function(e){l(this._root)&&(kXe(this,e),eJe(this,e),this._cache.unloadTiles(this,Pfe),this._styleApplied&&this._styleEngine.resetDirty(),this._styleApplied=!1)};Ho.prototype.prePassesUpdate=function(e){if(!l(this._root))return;jXe(this,e);let t=this._clippingPlanes;this._clippingPlanesOriginMatrixDirty=!0,l(t)&&t.enabled&&t.update(e);let n=this._clippingPolygons;l(n)&&n.enabled&&n.update(e),l(this._loadTimestamp)||(this._loadTimestamp=K.clone(e.time)),this._timeSinceLoad=Math.max(K.secondsDifference(e.time,this._loadTimestamp)*1e3,0),this.dynamicScreenSpaceError&&FXe(this,e),e.newFrame&&this._cache.reset()};function kXe(e,t){let n=e._requestedTilesInFlight,i=0;for(let o=0;o<n.length;++o){let r=n[o],s=t.frameNumber-r._touchedFrame>=1;if(r._contentState!==cr.LOADING){++i;continue}else if(s){r.cancelRequests(),++i;continue}i>0&&(n[o-i]=r)}n.length-=i}function UXe(e){let t=e._requestedTiles;t.sort(Bfe);for(let n=0;n<t.length;++n)QXe(e,t[n])}function Dfe(e,t,n){if(t.isDestroyed())return;let i;n.isDestroyed()||(i=n._contentResource.url);let o=l(e.message)?e.message:e.toString();t.tileFailed.numberOfListeners>0?t.tileFailed.raiseEvent({url:i,message:o}):(console.log(`A 3D tile failed to load: ${i}`),console.log(`Error: ${o}`),console.log(e.stack))}function GXe(e){let t=e._processingQueue,n=0;for(let i=0;i<t.length;++i){let o=t[i];if(o.isDestroyed()||o._contentState!==cr.PROCESSING){++n;continue}n>0&&(t[i-n]=o)}t.length-=n}var zXe=new Ae,VXe=new Ae,HXe=new d;function WXe(e,t,n){if(!e.enableCollision||!e.show)return;let i=e._addHeightCallbacks,o=t.boundingSphere;for(let r of i){if(r.invoked||t._wasSelectedLastFrame)continue;let s=r.ellipsoid,a=Ae.clone(r.positionCartographic,zXe),c=Ae.fromCartesian(o.center,s,VXe);l(c)&&(a.height=c.height);let u=Ae.toCartesian(a,s,HXe);d.distance(u,o.center)<=o.radius&&(r.invoked=!0,n.afterRender.push(()=>{l(r.callback)&&r.callback(),r.invoked=!1}))}}function jXe(e,t){GXe(e);let n=e._processingQueue,{cacheBytes:i,maximumCacheOverflowBytes:o,statistics:r}=e,s=i+o,a=!1;for(let c=0;c<n.length;++c){if(e.totalMemoryUsageInBytes>s){a=!0;break}let u=n[c];try{u.process(e,t),u.contentReady&&(--r.numberOfTilesProcessing,e.tileLoad.raiseEvent(u))}catch(f){--r.numberOfTilesProcessing,Dfe(f,e,u)}}e.totalMemoryUsageInBytes<i?qXe(e):a&&n.length>0&&YXe(e)}function YXe(e){e._memoryAdjustedScreenSpaceError*=1.02;let t=e._processingQueue;for(let n=0;n<t.length;++n)t[n].updatePriority();t.sort(Bfe)}function qXe(e){e._memoryAdjustedScreenSpaceError=Math.max(e.memoryAdjustedScreenSpaceError/1.02,e.maximumScreenSpaceError)}var jk=new d,KXe={maximumFractionDigits:3};function wfe(e){let t=e/1048576;return t<1?t.toLocaleString(void 0,KXe):Math.round(t).toLocaleString()}function SY(e){let{halfAxes:t,radius:n,center:i}=e.boundingVolume.boundingVolume,o=d.clone(i,jk);if(l(t))o.x+=.75*(t[0]+t[3]+t[6]),o.y+=.75*(t[1]+t[4]+t[7]),o.z+=.75*(t[2]+t[5]+t[8]);else if(l(n)){let r=d.normalize(i,jk);r=d.multiplyByScalar(r,.75*n,jk),o=d.add(r,i,jk)}return o}function wY(e,t,n){let i="",o=0;if(t.debugShowGeometricError&&(i+=` +Geometric error: ${e.geometricError}`,o++),t.debugShowRenderingStatistics&&(i+=` +Commands: ${e.commandsLength}`,o++,e.content.pointsLength>0&&(i+=` +Points: ${e.content.pointsLength}`,o++),e.content.trianglesLength>0&&(i+=` +Triangles: ${e.content.trianglesLength}`,o++),i+=` +Features: ${e.content.featuresLength}`,o++),t.debugShowMemoryUsage&&(i+=` +Texture Memory: ${wfe(e.content.texturesByteLength)}`,i+=` +Geometry Memory: ${wfe(e.content.geometryByteLength)}`,o+=2),t.debugShowUrl)if(e.hasMultipleContents){i+=` +Urls:`;let s=e.content.innerContentUrls;for(let a=0;a<s.length;a++)i+=` +- ${s[a]}`;o+=s.length}else i+=` +Url: ${e._contentHeader.uri}`,o++;let r={text:i.substring(1),position:n,font:`${19-o}px sans-serif`,showBackground:!0,disableDepthTestDistance:Number.POSITIVE_INFINITY};return t._tileDebugLabels.add(r)}function XXe(e,t){let n=e._selectedTiles,i=n.length,o=e._emptyTiles,r=o.length;if(e._tileDebugLabels.removeAll(),e.debugPickedTileLabelOnly){if(l(e.debugPickedTile)){let s=l(e.debugPickPosition)?e.debugPickPosition:SY(e.debugPickedTile),a=wY(e.debugPickedTile,e,s);a.pixelOffset=new k(15,-15)}}else{for(let s=0;s<i;++s){let a=n[s];wY(a,e,SY(a))}for(let s=0;s<r;++s){let a=o[s];(a.hasTilesetContent||a.hasImplicitContent)&&wY(a,e,SY(a))}}e._tileDebugLabels.update(t)}function JXe(e,t,n){e._styleEngine.applyStyle(e),e._styleApplied=!0;let{commandList:i,context:o}=t,r=i.length,s=e._selectedTiles,a=e.isSkippingLevelOfDetail&&e._hasMixedContent&&o.stencilBuffer&&s.length>0;e._backfaceCommands.length=0,a&&(l(e._stencilClearCommand)||(e._stencilClearCommand=new Ei({stencil:0,pass:Be.CESIUM_3D_TILE,renderState:Ue.fromCache({stencilMask:Kt.SKIP_LOD_MASK})})),i.push(e._stencilClearCommand));let{statistics:c,tileVisible:u}=e,f=n.isRender,h=i.length;for(let m=0;m<s.length;++m){let _=s[m];f&&u.raiseEvent(_),WXe(e,_,t),_.update(e,t,n),c.incrementSelectionCounts(_.content),++c.selected}let A=e._emptyTiles;for(let m=0;m<A.length;++m)A[m].update(e,t,n);let g=i.length-h;if(e._backfaceCommands.trim(),a){let m=e._backfaceCommands.values,_=m.length;i.length+=_;for(let y=g-1;y>=0;--y)i[h+_+y]=i[h+y];for(let y=0;y<_;++y)i[h+y]=m[y]}g=i.length-r,c.numberOfCommands=g,f&&(e.pointCloudShading.attenuation&&e.pointCloudShading.eyeDomeLighting&&g>0&&e._pointCloudEyeDomeLighting.update(t,r,e.pointCloudShading,e.boundingSphere),e.debugShowGeometricError||e.debugShowRenderingStatistics||e.debugShowMemoryUsage||e.debugShowUrl?(l(e._tileDebugLabels)||(e._tileDebugLabels=new Ap),XXe(e,t)):e._tileDebugLabels=e._tileDebugLabels&&e._tileDebugLabels.destroy())}var vfe=[];function ZXe(e,t){let n=t,i=vfe;for(i.push(t);i.length>0;){t=i.pop();let o=t.children;for(let r=0;r<o.length;++r)i.push(o[r]);t!==n&&($Xe(e,t),--e._statistics.numberOfTilesTotal)}n.children=[]}function Pfe(e,t){e.tileUnload.raiseEvent(t),e._statistics.decrementLoadCounts(t.content),--e._statistics.numberOfTilesWithContentReady,t.unloadContent()}function $Xe(e,t){e._cache.unloadTile(e,t,Pfe),t.destroy()}Ho.prototype.trimLoadedTiles=function(){this._cache.trim()};function eJe(e,t){let n=e._statistics,i=e._statisticsLast,o=n.numberOfPendingRequests,r=n.numberOfTilesProcessing,s=i.numberOfPendingRequests,a=i.numberOfTilesProcessing;Um.clone(n,i);let c=o!==s||r!==a;c&&t.afterRender.push(function(){return e.loadProgress.raiseEvent(o,r),!0}),e._tilesLoaded=n.numberOfPendingRequests===0&&n.numberOfTilesProcessing===0&&n.numberOfAttemptedRequests===0,c&&e._tilesLoaded&&(t.afterRender.push(function(){return e.allTilesLoaded.raiseEvent(),!0}),e._initialTilesLoaded||(e._initialTilesLoaded=!0,t.afterRender.push(function(){return e.initialTilesLoaded.raiseEvent(),!0})))}function tJe(e){e._heatmap.resetMinimumMaximum(),e._minimumPriority.depth=Number.MAX_VALUE,e._maximumPriority.depth=-Number.MAX_VALUE,e._minimumPriority.foveatedFactor=Number.MAX_VALUE,e._maximumPriority.foveatedFactor=-Number.MAX_VALUE,e._minimumPriority.distance=Number.MAX_VALUE,e._maximumPriority.distance=-Number.MAX_VALUE,e._minimumPriority.reverseScreenSpaceError=Number.MAX_VALUE,e._maximumPriority.reverseScreenSpaceError=-Number.MAX_VALUE}function nJe(e,t){t.frameNumber===e._updatedModelMatrixFrame&&l(e._previousModelMatrix)||(e._updatedModelMatrixFrame=t.frameNumber,e._modelMatrixChanged=!R.equals(e.modelMatrix,e._previousModelMatrix),e._modelMatrixChanged&&(e._previousModelMatrix=R.clone(e.modelMatrix,e._previousModelMatrix)))}function iJe(e,t,n,i){if(t.mode===ie.MORPHING||!l(e._root))return!1;let o=e._statistics;o.clear(),++e._updatedVisibilityFrame,tJe(e),nJe(e,t),e._cullRequestsWhileMoving=e.cullRequestsWhileMoving&&!e._modelMatrixChanged;let r=e.getTraversal(i).selectTiles(e,t);if(i.requestTiles&&UXe(e),JXe(e,t,i),Um.clone(o,n),i.isRender){let s=e._credits;if(l(s)&&o.selected!==0)for(let a=0;a<s.length;++a){let c=s[a];t.creditDisplay.addCreditToNextFrame(c)}}return r}function Rfe(e){let t=e._credits;l(t)||(t=[]),t.length=0,l(e.resource.credits)&&e.resource.credits.forEach(i=>{t.push(Dt.clone(i))});let n=e.asset.extras;if(l(n)&&l(n.cesium)&&l(n.cesium.credits)){let i=n.cesium.credits;for(let o=0;o<i.length;++o){let r=i[o];t.push(new Dt(r.html))}}t.forEach(i=>i.showOnScreen=i.showOnScreen||e._showCreditsOnScreen),e._credits=t}Ho.prototype.getTraversal=function(e){let{pass:t}=e;return t===Zo.MOST_DETAILED_PRELOAD||t===Zo.MOST_DETAILED_PICK?Gk:this.isSkippingLevelOfDetail?Hk:zk};Ho.prototype.update=function(e){this.updateForPass(e,e.tilesetPassState)};Ho.prototype.updateForPass=function(e,t){this.imageryLayers._update();let n=t.pass;if(n===Zo.PRELOAD&&(!this.preloadWhenHidden||this.show)||n===Zo.PRELOAD_FLIGHT&&(!this.preloadFlightDestinations||!this.show&&!this.preloadWhenHidden)||n===Zo.REQUEST_RENDER_MODE_DEFER_CHECK&&(!this._cullRequestsWhileMoving&&this.foveatedTimeDelay<=0||!this.show))return;let i=e.commandList,o=e.camera,r=e.cullingVolume;t.ready=!1;let s=Zo.getPassOptions(n),a=s.ignoreCommands,c=t.commandList??i,u=c.length;if(e.commandList=c,e.camera=t.camera??o,e.cullingVolume=t.cullingVolume??r,s.isRender){let A=this._environmentMapManager;l(this._root)&&(A.position=this.boundingSphere.center),A.update(e)}let f=this._clippingPolygons;l(f)&&f.enabled&&f.queueCommands(e);let h=this._statisticsPerPass[n];(this.show||a)&&(this._pass=n,t.ready=iJe(this,e,h,s)),a&&(c.length=u),e.commandList=i,e.camera=o,e.cullingVolume=r};Ho.prototype.hasExtension=function(e){return l(this._extensionsUsed)?this._extensionsUsed.indexOf(e)>-1:!1};Ho.prototype.isDestroyed=function(){return!1};Ho.prototype.destroy=function(){if(this._tileDebugLabels=this._tileDebugLabels&&this._tileDebugLabels.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._clippingPolygons=this._clippingPolygons&&this._clippingPolygons.destroy(),l(this._root)){let e=vfe;for(e.push(this._root);e.length>0;){let t=e.pop();t.destroy();let n=t.children;for(let i=0;i<n.length;++i)e.push(n[i])}}return this._root=void 0,this._shouldDestroyImageBasedLighting&&!this._imageBasedLighting.isDestroyed()&&this._imageBasedLighting.destroy(),this._imageBasedLighting=void 0,this._environmentMapManager.isDestroyed()||this._environmentMapManager.destroy(),this._environmentMapManager=void 0,this._imageryLayers.isDestroyed()||(this.imageryLayers.layerAdded.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerRemoved.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerMoved.removeEventListener(this._imageryLayersListener),this.imageryLayers.layerShownOrHidden.removeEventListener(this._imageryLayersListener),this._imageryLayers.destroy()),this._imageryLayers=void 0,ue(this)};Ho.supportedExtensions={"3DTILES_metadata":!0,"3DTILES_implicit_tiling":!0,"3DTILES_content_gltf":!0,"3DTILES_multiple_contents":!0,"3DTILES_bounding_volume_S2":!0,"3DTILES_batch_table_hierarchy":!0,"3DTILES_draco_point_compression":!0,MAXAR_content_geojson:!0};Ho.checkSupportedExtensions=function(e){for(let t=0;t<e.length;t++)if(!Ho.supportedExtensions[e[t]])throw new ce(`Unsupported 3D Tiles Extension: ${e[t]}`)};var oJe=new In,rJe=new d,sJe=new Ae;Ho.prototype.getHeight=function(e,t){let n=t.ellipsoid;l(n)||(n=te.WGS84);let i=oJe,o=n.cartographicToCartesian(e,i.direction);d.normalize(i.direction,i.direction),i.direction=d.normalize(o,i.direction),i.direction=d.negate(o,i.direction),i.origin=d.multiplyByScalar(i.direction,-2*n.maximumRadius,i.origin);let r=this.pick(i,t.frameState,rJe);if(l(r))return n.cartesianToCartographic(r,sJe)?.height};Ho.prototype.updateHeight=function(e,t,n){n=n??te.WGS84;let i={positionCartographic:e,ellipsoid:n,callback:t,invoked:!1},o=()=>{let r=this._addHeightCallbacks,s=r.length;for(let a=0;a<s;++a)if(r[a]===i){r.splice(a,1);break}i.callback&&(i.callback=void 0)};return this._addHeightCallbacks.push(i),o};var aJe=new _c,cJe=new d;Ho.prototype.pick=function(e,t,n){if(!t.context.webgl2&&!this._enablePick)return;let i=this._selectedTiles,o=i.length,r=[];for(let c=0;c<o;++c){let u=i[c],f=Ai.raySphere(e,u.contentBoundingVolume.boundingSphere,aJe);!l(f)||!l(u.content)||r.push(u)}let s=r.length;r.sort((c,u)=>{let f=le.distanceSquaredTo(c.contentBoundingVolume.boundingSphere,e.origin),h=le.distanceSquaredTo(u.contentBoundingVolume.boundingSphere,e.origin);return f-h});let a;for(let c=0;c<s;++c){let f=r[c].content.pick(e,t,cJe);if(l(f))return a=d.clone(f,n),a}};Ho.prototype.isGltfExtensionUsed=function(e){if(this.hasExtension("3DTILES_content_gltf")){if(!l(this.extensions))return!1;let t=this.extensions["3DTILES_content_gltf"]?.extensionsUsed;return l(t)?t.indexOf(e)>-1:!1}return!1};Ho.prototype.isGltfExtensionRequired=function(e){if(this.isGltfExtensionUsed(e)){let t=this.extensions["3DTILES_content_gltf"].extensionsRequired;return l(t)?t.indexOf(e)>-1:!1}return!1};var qs=Ho;var lJe=new R;function Q_(e,t){t.collectionChanged.addEventListener(Q_.prototype._onCollectionChanged,this),this._scene=e,this._primitives=e.primitives,this._entityCollection=t,this._tilesetHash={},this._entitiesToVisualize=new Pt,this._onCollectionChanged(t,t.values,[],[])}Q_.prototype.update=function(e){let t=this._entitiesToVisualize.values,n=this._tilesetHash,i=this._primitives;for(let o=0,r=t.length;o<r;o++){let s=t[o],a=s._tileset,c,u=n[s.id],f=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),h;f&&(h=s.computeModelMatrix(e,lJe),c=we.createIfNeeded(j.getValueOrUndefined(a._uri,e)));let A=l(u)?u.tilesetPrimitive:void 0;if(!f){l(A)&&(A.show=!1);continue}(!l(u)||c.url!==u.url)&&(l(A)&&i.removeAndDestroy(A),delete n[s.id],uJe(c,n,s,i)),l(A)&&(A.show=!0,l(h)&&(A.modelMatrix=h),A.maximumScreenSpaceError=j.getValueOrDefault(a.maximumScreenSpaceError,e,A.maximumScreenSpaceError))}return!0};Q_.prototype.isDestroyed=function(){return!1};Q_.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Q_.prototype._onCollectionChanged,this);let e=this._entitiesToVisualize.values,t=this._tilesetHash,n=this._primitives;for(let i=e.length-1;i>-1;i--)BY(this,e[i],t,n);return ue(this)};Q_.prototype.getBoundingSphere=function(e,t){let n=this._tilesetHash[e.id];if(!l(n)||n.loadFail)return mt.FAILED;let i=n.tilesetPrimitive;return l(i)?i.show?(le.clone(i.boundingSphere,t),mt.DONE):mt.FAILED:mt.PENDING};Q_.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._entitiesToVisualize,a=this._tilesetHash,c=this._primitives;for(o=t.length-1;o>-1;o--)r=t[o],l(r._tileset)&&s.set(r.id,r);for(o=i.length-1;o>-1;o--)r=i[o],l(r._tileset)?s.set(r.id,r):(BY(this,r,a,c),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],BY(this,r,a,c),s.remove(r.id)};function BY(e,t,n,i){let o=n[t.id];l(o)&&(l(o.tilesetPrimitive)&&i.removeAndDestroy(o.tilesetPrimitive),delete n[t.id])}async function uJe(e,t,n,i){t[n.id]={url:e.url,loadFail:!1};try{let o=await qs.fromUrl(e);if(o.id=n,i.add(o),!l(t[n.id]))return;t[n.id].tilesetPrimitive=o}catch(o){console.error(o),t[n.id].loadFail=!0}}var Yk=Q_;var fJe=G.WHITE,dJe=G.BLACK,hJe=new k(2,2);function mb(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._evenColor=void 0,this._evenColorSubscription=void 0,this._oddColor=void 0,this._oddColorSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.evenColor=e.evenColor,this.oddColor=e.oddColor,this.repeat=e.repeat}Object.defineProperties(mb.prototype,{isConstant:{get:function(){return j.isConstant(this._evenColor)&&j.isConstant(this._oddColor)&&j.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},evenColor:de("evenColor"),oddColor:de("oddColor"),repeat:de("repeat")});mb.prototype.getType=function(e){return"Checkerboard"};var mJe=new K;mb.prototype.getValue=function(e,t){return l(e)||(e=K.now(mJe)),l(t)||(t={}),t.lightColor=j.getValueOrClonedDefault(this._evenColor,e,fJe,t.lightColor),t.darkColor=j.getValueOrClonedDefault(this._oddColor,e,dJe,t.darkColor),t.repeat=j.getValueOrDefault(this._repeat,e,hJe),t};mb.prototype.equals=function(e){return this===e||e instanceof mb&&j.equals(this._evenColor,e._evenColor)&&j.equals(this._oddColor,e._oddColor)&&j.equals(this._repeat,e._repeat)};var SD=mb;var Mfe={id:void 0};function wD(e){if(e._firing){e._refire=!0;return}if(e._suspendCount===0){let t=e._addedEntities,n=e._removedEntities,i=e._changedEntities;if(i.length!==0||t.length!==0||n.length!==0){e._firing=!0;do{e._refire=!1;let o=t.values.slice(0),r=n.values.slice(0),s=i.values.slice(0);t.removeAll(),n.removeAll(),i.removeAll(),e._collectionChanged.raiseEvent(e,o,r,s)}while(e._refire);e._firing=!1}}}function Rc(e){this._owner=e,this._entities=new Pt,this._addedEntities=new Pt,this._removedEntities=new Pt,this._changedEntities=new Pt,this._suspendCount=0,this._collectionChanged=new _e,this._id=Xn(),this._show=!0,this._firing=!1,this._refire=!1}Rc.prototype.suspendEvents=function(){this._suspendCount++};Rc.prototype.resumeEvents=function(){this._suspendCount--,wD(this)};Object.defineProperties(Rc.prototype,{collectionChanged:{get:function(){return this._collectionChanged}},id:{get:function(){return this._id}},values:{get:function(){return this._entities.values}},show:{get:function(){return this._show},set:function(e){if(e===this._show)return;this.suspendEvents();let t,n=[],i=this._entities.values,o=i.length;for(t=0;t<o;t++)n.push(i[t].isShowing);for(this._show=e,t=0;t<o;t++){let r=n[t],s=i[t];r!==s.isShowing&&s.definitionChanged.raiseEvent(s,"isShowing",s.isShowing,r)}this.resumeEvents()}},owner:{get:function(){return this._owner}}});Rc.prototype.computeAvailability=function(){let e=je.MAXIMUM_VALUE,t=je.MINIMUM_VALUE,n=this._entities.values;for(let i=0,o=n.length;i<o;i++){let s=n[i].availability;if(l(s)){let a=s.start,c=s.stop;K.lessThan(a,e)&&!a.equals(je.MINIMUM_VALUE)&&(e=a),K.greaterThan(c,t)&&!c.equals(je.MAXIMUM_VALUE)&&(t=c)}}return je.MAXIMUM_VALUE.equals(e)&&(e=je.MINIMUM_VALUE),je.MINIMUM_VALUE.equals(t)&&(t=je.MAXIMUM_VALUE),new Rn({start:e,stop:t})};Rc.prototype.add=function(e){e instanceof _r||(e=new _r(e));let t=e.id,n=this._entities;if(n.contains(t))throw new me(`An entity with id ${t} already exists in this collection.`);return e.entityCollection=this,n.set(t,e),this._removedEntities.remove(t)||this._addedEntities.set(t,e),e.definitionChanged.addEventListener(Rc.prototype._onEntityDefinitionChanged,this),wD(this),e};Rc.prototype.remove=function(e){return l(e)?this.removeById(e.id):!1};Rc.prototype.contains=function(e){return this._entities.get(e.id)===e};Rc.prototype.removeById=function(e){if(!l(e))return!1;let n=this._entities.get(e);return this._entities.remove(e)?(this._addedEntities.remove(e)||(this._removedEntities.set(e,n),this._changedEntities.remove(e)),this._entities.remove(e),n.definitionChanged.removeEventListener(Rc.prototype._onEntityDefinitionChanged,this),wD(this),!0):!1};Rc.prototype.removeAll=function(){let e=this._entities,t=e.length,n=e.values,i=this._addedEntities,o=this._removedEntities;for(let r=0;r<t;r++){let s=n[r],a=s.id,c=i.get(a);l(c)||(s.definitionChanged.removeEventListener(Rc.prototype._onEntityDefinitionChanged,this),o.set(a,s))}e.removeAll(),i.removeAll(),this._changedEntities.removeAll(),wD(this)};Rc.prototype.getById=function(e){return this._entities.get(e)};Rc.prototype.getOrCreateEntity=function(e){let t=this._entities.get(e);return l(t)||(Mfe.id=e,t=new _r(Mfe),this.add(t)),t};Rc.prototype._onEntityDefinitionChanged=function(e){let t=e.id;this._addedEntities.contains(t)||this._changedEntities.set(t,e),wD(this)};var Oa=Rc;var qk={id:void 0},Ab=new Array(2);function DY(e){let t=e.propertyNames,n=t.length;for(let i=0;i<n;i++)e[t[i]]=void 0;e._name=void 0,e._availability=void 0}function Nfe(e,t,n,i){Ab[0]=n,Ab[1]=i.id,t[JSON.stringify(Ab)]=i.definitionChanged.addEventListener(es.prototype._onDefinitionChanged,e)}function Lfe(e,t,n,i){Ab[0]=n,Ab[1]=i.id;let o=JSON.stringify(Ab);t[o](),t[o]=void 0}function k_(e){if(e._shouldRecomposite=!0,e._suspendCount!==0)return;let t=e._collections,n=t.length,i=e._collectionsCopy,o=i.length,r,s,a,c,u,f=e._composite,h=new Oa(e),A=e._eventHash,g;for(r=0;r<o;r++)for(u=i[r],u.collectionChanged.removeEventListener(es.prototype._onCollectionChanged,e),a=u.values,g=u.id,c=a.length-1;c>-1;c--)s=a[c],Lfe(e,A,g,s);for(r=n-1;r>=0;r--)for(u=t[r],u.collectionChanged.addEventListener(es.prototype._onCollectionChanged,e),a=u.values,g=u.id,c=a.length-1;c>-1;c--){s=a[c],Nfe(e,A,g,s);let _=h.getById(s.id);l(_)||(_=f.getById(s.id),l(_)?DY(_):(qk.id=s.id,_=new _r(qk)),h.add(_)),_.merge(s)}e._collectionsCopy=t.slice(0),f.suspendEvents(),f.removeAll();let m=h.values;for(r=0;r<m.length;r++)f.add(m[r]);f.resumeEvents()}function es(e,t){this._owner=t,this._composite=new Oa(this),this._suspendCount=0,this._collections=l(e)?e.slice():[],this._collectionsCopy=[],this._id=Xn(),this._eventHash={},k_(this),this._shouldRecomposite=!1}Object.defineProperties(es.prototype,{collectionChanged:{get:function(){return this._composite._collectionChanged}},id:{get:function(){return this._id}},values:{get:function(){return this._composite.values}},owner:{get:function(){return this._owner}}});es.prototype.addCollection=function(e,t){l(t)?this._collections.splice(t,0,e):(t=this._collections.length,this._collections.push(e)),k_(this)};es.prototype.removeCollection=function(e){let t=this._collections.indexOf(e);return t!==-1?(this._collections.splice(t,1),k_(this),!0):!1};es.prototype.removeAllCollections=function(){this._collections.length=0,k_(this)};es.prototype.containsCollection=function(e){return this._collections.indexOf(e)!==-1};es.prototype.contains=function(e){return this._composite.contains(e)};es.prototype.indexOfCollection=function(e){return this._collections.indexOf(e)};es.prototype.getCollection=function(e){return this._collections[e]};es.prototype.getCollectionsLength=function(){return this._collections.length};function Kk(e,t){return e.indexOf(t)}function Ofe(e,t,n){let i=e._collections;if(t=D.clamp(t,0,i.length-1),n=D.clamp(n,0,i.length-1),t===n)return;let o=i[t];i[t]=i[n],i[n]=o,k_(e)}es.prototype.raiseCollection=function(e){let t=Kk(this._collections,e);Ofe(this,t,t+1)};es.prototype.lowerCollection=function(e){let t=Kk(this._collections,e);Ofe(this,t,t-1)};es.prototype.raiseCollectionToTop=function(e){let t=Kk(this._collections,e);t!==this._collections.length-1&&(this._collections.splice(t,1),this._collections.push(e),k_(this))};es.prototype.lowerCollectionToBottom=function(e){let t=Kk(this._collections,e);t!==0&&(this._collections.splice(t,1),this._collections.splice(0,0,e),k_(this))};es.prototype.suspendEvents=function(){this._suspendCount++,this._composite.suspendEvents()};es.prototype.resumeEvents=function(){this._suspendCount--,this._shouldRecomposite&&this._suspendCount===0&&(k_(this),this._shouldRecomposite=!1),this._composite.resumeEvents()};es.prototype.computeAvailability=function(){return this._composite.computeAvailability()};es.prototype.getById=function(e){return this._composite.getById(e)};es.prototype._onCollectionChanged=function(e,t,n){let i=this._collectionsCopy,o=i.length,r=this._composite;r.suspendEvents();let s,a,c,u,f=n.length,h=this._eventHash,A=e.id;for(s=0;s<f;s++){let m=n[s];Lfe(this,h,A,m);let _=m.id;for(a=o-1;a>=0;a--)c=i[a].getById(_),l(c)&&(l(u)||(u=r.getById(_),DY(u)),u.merge(c));l(u)||r.removeById(_),u=void 0}let g=t.length;for(s=0;s<g;s++){let m=t[s];Nfe(this,h,A,m);let _=m.id;for(a=o-1;a>=0;a--)c=i[a].getById(_),l(c)&&(l(u)||(u=r.getById(_),l(u)?DY(u):(qk.id=_,u=new _r(qk),r.add(u))),u.merge(c));u=void 0}r.resumeEvents()};es.prototype._onDefinitionChanged=function(e,t,n,i){let o=this._collections,r=this._composite,s=o.length,a=e.id,c=r.getById(a),u=c[t],f=!l(u),h=!0;for(let A=s-1;A>=0;A--){let g=o[A].getById(e.id);if(l(g)){let m=g[t];if(l(m)){if(h)if(h=!1,l(m.merge)&&l(m.clone))u=m.clone(u);else{u=m;break}u.merge(m)}}}f&&c.propertyNames.indexOf(t)===-1&&c.addProperty(t),c[t]=u};var Ffe=es;function vY(){this._removalFunctions=[]}vY.prototype.add=function(e,t,n){let i=e.addEventListener(t,n);this._removalFunctions.push(i);let o=this;return function(){i();let r=o._removalFunctions;r.splice(r.indexOf(i),1)}};vY.prototype.removeAll=function(){let e=this._removalFunctions;for(let t=0,n=e.length;t<n;++t)e[t]();e.length=0};var Lr=vY;function MY(e,t){return K.compare(e.start,t.start)}function ts(e){if(this._intervals=[],this._changedEvent=new _e,l(e)){let t=e.length;for(let n=0;n<t;n++)this.addInterval(e[n])}}Object.defineProperties(ts.prototype,{changedEvent:{get:function(){return this._changedEvent}},start:{get:function(){let e=this._intervals;return e.length===0?void 0:e[0].start}},isStartIncluded:{get:function(){let e=this._intervals;return e.length===0?!1:e[0].isStartIncluded}},stop:{get:function(){let e=this._intervals,t=e.length;return t===0?void 0:e[t-1].stop}},isStopIncluded:{get:function(){let e=this._intervals,t=e.length;return t===0?!1:e[t-1].isStopIncluded}},length:{get:function(){return this._intervals.length}},isEmpty:{get:function(){return this._intervals.length===0}}});ts.prototype.equals=function(e,t){if(this===e)return!0;if(!(e instanceof ts))return!1;let n=this._intervals,i=e._intervals,o=n.length;if(o!==i.length)return!1;for(let r=0;r<o;r++)if(!Rn.equals(n[r],i[r],t))return!1;return!0};ts.prototype.get=function(e){return this._intervals[e]};ts.prototype.removeAll=function(){this._intervals.length>0&&(this._intervals.length=0,this._changedEvent.raiseEvent(this))};ts.prototype.findIntervalContainingDate=function(e){let t=this.indexOf(e);return t>=0?this._intervals[t]:void 0};ts.prototype.findDataForIntervalContainingDate=function(e){let t=this.indexOf(e);return t>=0?this._intervals[t].data:void 0};ts.prototype.contains=function(e){return this.indexOf(e)>=0};var PY=new Rn;ts.prototype.indexOf=function(e){let t=this._intervals;PY.start=e,PY.stop=e;let n=qo(t,PY,MY);return n>=0?t[n].isStartIncluded?n:n>0&&t[n-1].stop.equals(e)&&t[n-1].isStopIncluded?n-1:~n:(n=~n,n>0&&n-1<t.length&&Rn.contains(t[n-1],e)?n-1:~n)};ts.prototype.findInterval=function(e){e=e??V.EMPTY_OBJECT;let t=e.start,n=e.stop,i=e.isStartIncluded,o=e.isStopIncluded,r=this._intervals;for(let s=0,a=r.length;s<a;s++){let c=r[s];if((!l(t)||c.start.equals(t))&&(!l(n)||c.stop.equals(n))&&(!l(i)||c.isStartIncluded===i)&&(!l(o)||c.isStopIncluded===o))return r[s]}};ts.prototype.addInterval=function(e,t){if(e.isEmpty)return;let n=this._intervals;if(n.length===0||K.greaterThan(e.start,n[n.length-1].stop)){n.push(e),this._changedEvent.raiseEvent(this);return}let i=qo(n,e,MY);i<0?i=~i:i>0&&e.isStartIncluded&&n[i-1].isStartIncluded&&n[i-1].start.equals(e.start)?--i:i<n.length&&!e.isStartIncluded&&n[i].isStartIncluded&&n[i].start.equals(e.start)&&++i;let o;for(i>0&&(o=K.compare(n[i-1].stop,e.start),(o>0||o===0&&(n[i-1].isStopIncluded||e.isStartIncluded))&&((l(t)?t(n[i-1].data,e.data):n[i-1].data===e.data)?(K.greaterThan(e.stop,n[i-1].stop)?e=new Rn({start:n[i-1].start,stop:e.stop,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:e.isStopIncluded,data:e.data}):e=new Rn({start:n[i-1].start,stop:n[i-1].stop,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:n[i-1].isStopIncluded||e.stop.equals(n[i-1].stop)&&e.isStopIncluded,data:e.data}),n.splice(i-1,1),--i):(o=K.compare(n[i-1].stop,e.stop),(o>0||o===0&&n[i-1].isStopIncluded&&!e.isStopIncluded)&&n.splice(i,0,new Rn({start:e.stop,stop:n[i-1].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:n[i-1].isStopIncluded,data:n[i-1].data})),n[i-1]=new Rn({start:n[i-1].start,stop:e.start,isStartIncluded:n[i-1].isStartIncluded,isStopIncluded:!e.isStartIncluded,data:n[i-1].data}))));i<n.length&&(o=K.compare(e.stop,n[i].start),o>0||o===0&&(e.isStopIncluded||n[i].isStartIncluded));)if(l(t)?t(n[i].data,e.data):n[i].data===e.data)e=new Rn({start:e.start,stop:K.greaterThan(n[i].stop,e.stop)?n[i].stop:e.stop,isStartIncluded:e.isStartIncluded,isStopIncluded:K.greaterThan(n[i].stop,e.stop)?n[i].isStopIncluded:e.isStopIncluded,data:e.data}),n.splice(i,1);else if(n[i]=new Rn({start:e.stop,stop:n[i].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:n[i].isStopIncluded,data:n[i].data}),n[i].isEmpty)n.splice(i,1);else break;n.splice(i,0,e),this._changedEvent.raiseEvent(this)};ts.prototype.removeInterval=function(e){if(e.isEmpty)return!1;let t=this._intervals,n=qo(t,e,MY);n<0&&(n=~n);let i=!1;for(n>0&&(K.greaterThan(t[n-1].stop,e.start)||t[n-1].stop.equals(e.start)&&t[n-1].isStopIncluded&&e.isStartIncluded)&&(i=!0,(K.greaterThan(t[n-1].stop,e.stop)||t[n-1].isStopIncluded&&!e.isStopIncluded&&t[n-1].stop.equals(e.stop))&&t.splice(n,0,new Rn({start:e.stop,stop:t[n-1].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:t[n-1].isStopIncluded,data:t[n-1].data})),t[n-1]=new Rn({start:t[n-1].start,stop:e.start,isStartIncluded:t[n-1].isStartIncluded,isStopIncluded:!e.isStartIncluded,data:t[n-1].data})),n<t.length&&!e.isStartIncluded&&t[n].isStartIncluded&&e.start.equals(t[n].start)&&(i=!0,t.splice(n,0,new Rn({start:t[n].start,stop:t[n].start,isStartIncluded:!0,isStopIncluded:!0,data:t[n].data})),++n);n<t.length&&K.greaterThan(e.stop,t[n].stop);)i=!0,t.splice(n,1);return n<t.length&&e.stop.equals(t[n].stop)&&(i=!0,!e.isStopIncluded&&t[n].isStopIncluded?n+1<t.length&&t[n+1].start.equals(e.stop)&&t[n].data===t[n+1].data?(t.splice(n,1),t[n]=new Rn({start:t[n].start,stop:t[n].stop,isStartIncluded:!0,isStopIncluded:t[n].isStopIncluded,data:t[n].data})):t[n]=new Rn({start:e.stop,stop:e.stop,isStartIncluded:!0,isStopIncluded:!0,data:t[n].data}):t.splice(n,1)),n<t.length&&(K.greaterThan(e.stop,t[n].start)||e.stop.equals(t[n].start)&&e.isStopIncluded&&t[n].isStartIncluded)&&(i=!0,t[n]=new Rn({start:e.stop,stop:t[n].stop,isStartIncluded:!e.isStopIncluded,isStopIncluded:t[n].isStopIncluded,data:t[n].data})),i&&this._changedEvent.raiseEvent(this),i};ts.prototype.intersect=function(e,t,n){let i=new ts,o=0,r=0,s=this._intervals,a=e._intervals;for(;o<s.length&&r<a.length;){let c=s[o],u=a[r];if(K.lessThan(c.stop,u.start))++o;else if(K.lessThan(u.stop,c.start))++r;else{if(l(n)||l(t)&&t(c.data,u.data)||!l(t)&&u.data===c.data){let f=Rn.intersect(c,u,new Rn,n);f.isEmpty||i.addInterval(f,t)}K.lessThan(c.stop,u.stop)||c.stop.equals(u.stop)&&!c.isStopIncluded&&u.isStopIncluded?++o:++r}}return i};ts.fromJulianDateArray=function(e,t){l(t)||(t=new ts);let n=e.julianDates,i=n.length,o=e.dataCallback,r=e.isStartIncluded??!0,s=e.isStopIncluded??!0,a=e.leadingInterval??!1,c=e.trailingInterval??!1,u,f=0;a&&(++f,u=new Rn({start:je.MINIMUM_VALUE,stop:n[0],isStartIncluded:!0,isStopIncluded:!r}),u.data=l(o)?o(u,t.length):t.length,t.addInterval(u));for(let h=0;h<i-1;++h){let A=n[h],g=n[h+1];u=new Rn({start:A,stop:g,isStartIncluded:t.length===f?r:!0,isStopIncluded:h===i-2?s:!1}),u.data=l(o)?o(u,t.length):t.length,t.addInterval(u),A=g}return c&&(u=new Rn({start:n[i-1],stop:je.MAXIMUM_VALUE,isStartIncluded:!s,isStopIncluded:!0}),u.data=l(o)?o(u,t.length):t.length,t.addInterval(u)),t};var Mc=new dg,BD=[0,31,28,31,30,31,30,31,31,30,31,30,31];function RY(e,t,n){l(n)||(n=new K),K.toGregorianDate(e,Mc);let i=Mc.millisecond+t.millisecond,o=Mc.second+t.second,r=Mc.minute+t.minute,s=Mc.hour+t.hour,a=Mc.day+t.day,c=Mc.month+t.month,u=Mc.year+t.year;for(i>=1e3&&(o+=Math.floor(i/1e3),i=i%1e3),o>=60&&(r+=Math.floor(o/60),o=o%60),r>=60&&(s+=Math.floor(r/60),r=r%60),s>=24&&(a+=Math.floor(s/24),s=s%24),BD[2]=Yh(u)?29:28;a>BD[c]||c>=13;)a>BD[c]&&(a-=BD[c],++c),c>=13&&(--c,u+=Math.floor(c/12),c=c%12,++c),BD[2]=Yh(u)?29:28;return Mc.millisecond=i,Mc.second=o,Mc.minute=r,Mc.hour=s,Mc.day=a,Mc.month=c,Mc.year=u,K.fromGregorianDate(Mc,n)}var AJe=new K,pJe=/P(?:([\d.,]+)Y)?(?:([\d.,]+)M)?(?:([\d.,]+)W)?(?:([\d.,]+)D)?(?:T(?:([\d.,]+)H)?(?:([\d.,]+)M)?(?:([\d.,]+)S)?)?/;function Qfe(e,t){if(!l(e)||e.length===0)return!1;if(t.year=0,t.month=0,t.day=0,t.hour=0,t.minute=0,t.second=0,t.millisecond=0,e[0]==="P"){let n=e.match(pJe);if(!l(n))return!1;if(l(n[1])&&(t.year=Number(n[1].replace(",","."))),l(n[2])&&(t.month=Number(n[2].replace(",","."))),l(n[3])&&(t.day=Number(n[3].replace(",","."))*7),l(n[4])&&(t.day+=Number(n[4].replace(",","."))),l(n[5])&&(t.hour=Number(n[5].replace(",","."))),l(n[6])&&(t.minute=Number(n[6].replace(",","."))),l(n[7])){let i=Number(n[7].replace(",","."));t.second=Math.floor(i),t.millisecond=i%1*1e3}}else e[e.length-1]!=="Z"&&(e+="Z"),K.toGregorianDate(K.fromIso8601(e,AJe),t);return t.year||t.month||t.day||t.hour||t.minute||t.second||t.millisecond}var DD=new dg;ts.fromIso8601=function(e,t){let n=e.iso8601.split("/"),i=K.fromIso8601(n[0]),o=K.fromIso8601(n[1]),r=[];if(!Qfe(n[2],DD))r.push(i,o);else{let s=K.clone(i);for(r.push(s);K.compare(s,o)<0;)s=RY(s,DD),K.compare(o,s)<=0&&K.clone(o,s),r.push(s)}return ts.fromJulianDateArray({julianDates:r,isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};ts.fromIso8601DateArray=function(e,t){return ts.fromJulianDateArray({julianDates:e.iso8601Dates.map(function(n){return K.fromIso8601(n)}),isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};ts.fromIso8601DurationArray=function(e,t){let n=e.epoch,i=e.iso8601Durations,o=e.relativeToPrevious??!1,r=[],s,a,c=i.length;for(let u=0;u<c;++u)(Qfe(i[u],DD)||u===0)&&(o&&l(a)?s=RY(a,DD):s=RY(n,DD),r.push(s),a=s);return ts.fromJulianDateArray({julianDates:r,isStartIncluded:e.isStartIncluded,isStopIncluded:e.isStopIncluded,leadingInterval:e.leadingInterval,trailingInterval:e.trailingInterval,dataCallback:e.dataCallback},t)};var hs=ts;function gJe(e,t,n,i){function o(){n.raiseEvent(e)}let r=[];t.removeAll();let s=i.length;for(let a=0;a<s;a++){let c=i.get(a);l(c.data)&&r.indexOf(c.data)===-1&&t.add(c.data.definitionChanged,o)}}function CE(){this._eventHelper=new Lr,this._definitionChanged=new _e,this._intervals=new hs,this._intervals.changedEvent.addEventListener(CE.prototype._intervalsChanged,this)}Object.defineProperties(CE.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}}});var _Je=new K;CE.prototype.getValue=function(e,t){l(e)||(e=K.now(_Je));let n=this._intervals.findDataForIntervalContainingDate(e);if(l(n))return n.getValue(e,t)};CE.prototype.equals=function(e){return this===e||e instanceof CE&&this._intervals.equals(e._intervals,j.equals)};CE.prototype._intervalsChanged=function(){gJe(this,this._eventHelper,this._definitionChanged,this._intervals),this._definitionChanged.raiseEvent(this)};var ml=CE;function U_(){this._definitionChanged=new _e,this._composite=new ml,this._composite.definitionChanged.addEventListener(U_.prototype._raiseDefinitionChanged,this)}Object.defineProperties(U_.prototype,{isConstant:{get:function(){return this._composite.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._composite._intervals}}});U_.prototype.getType=function(e){let t=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(t))return t.getType(e)};var yJe=new K;U_.prototype.getValue=function(e,t){l(e)||(e=K.now(yJe));let n=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(n))return n.getValue(e,t)};U_.prototype.equals=function(e){return this===e||e instanceof U_&&this._composite.equals(e._composite,j.equals)};U_.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var vD=U_;function G_(e){this._referenceFrame=e??eo.FIXED,this._definitionChanged=new _e,this._composite=new ml,this._composite.definitionChanged.addEventListener(G_.prototype._raiseDefinitionChanged,this)}Object.defineProperties(G_.prototype,{isConstant:{get:function(){return this._composite.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._composite.intervals}},referenceFrame:{get:function(){return this._referenceFrame},set:function(e){this._referenceFrame=e}}});var CJe=new K;G_.prototype.getValue=function(e,t){return l(e)||(e=K.now(CJe)),this.getValueInReferenceFrame(e,eo.FIXED,t)};G_.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._composite._intervals.findDataForIntervalContainingDate(e);if(l(i))return i.getValueInReferenceFrame(e,t,n)};G_.prototype.equals=function(e){return this===e||e instanceof G_&&this._referenceFrame===e._referenceFrame&&this._composite.equals(e._composite,j.equals)};G_.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var nc=G_;var EJe={ROUNDED:0,MITERED:1,BEVELED:2},Ji=Object.freeze(EJe);var Fa=[new d,new d],IJe=new d,xJe=new d,bJe=new d,TJe=new d,SJe=new d,wJe=new d,BJe=new d,DJe=new d,vJe=new d,pb=new d,Xk=new d,PD={},NY=new Ae;function PJe(e,t){let n=new Array(e.length);for(let i=0;i<e.length;i++){let o=e[i];NY=t.cartesianToCartographic(o,NY),n[i]=NY.height,e[i]=t.scaleToGeodeticSurface(o,o)}return n}function LY(e,t,n,i){let o=e[0],r=e[1],s=d.angleBetween(o,r),a=Math.ceil(s/i),c=new Array(a),u;if(t===n){for(u=0;u<a;u++)c[u]=t;return c.push(n),c}let h=(n-t)/a;for(u=1;u<a;u++){let A=t+u*h;c[u]=A}return c[0]=t,c.push(n),c}var Jk=new d,Zk=new d;function RJe(e,t,n,i){let o=new xs(n,i),r=o.projectPointOntoPlane(d.add(n,e,Jk),Jk),s=o.projectPointOntoPlane(d.add(n,t,Zk),Zk),a=k.angleBetween(r,s);return s.x*r.y-s.y*r.x>=0?-a:a}var MJe=new d(-1,0,0),EE=new R,NJe=new R,OY=new J,LJe=J.IDENTITY.clone(),OJe=new d,FJe=new se,kfe=new d;function wp(e,t,n,i,o,r,s,a){let c=OJe,u=FJe;EE=kt.eastNorthUpToFixedFrame(e,o,EE),c=R.multiplyByPointAsVector(EE,MJe,c),c=d.normalize(c,c);let f=RJe(c,t,e,o);OY=J.fromRotationZ(f,OY),kfe.z=r,EE=R.multiplyTransformation(EE,R.fromRotationTranslation(OY,kfe,NJe),EE);let h=LJe;h[0]=s;for(let A=0;A<a;A++)for(let g=0;g<n.length;g+=3)u=d.fromArray(n,g,u),u=J.multiplyByVector(h,u,u),u=R.multiplyByPoint(EE,u,u),i.push(u.x,u.y,u.z);return i}var QJe=new d;function FY(e,t,n,i,o,r,s){for(let a=0;a<e.length;a+=3){let c=d.fromArray(e,a,QJe);i=wp(c,t,n,i,o,r[a/3],s,1)}return i}function kJe(e,t){let n=e.length,i=new Array(n*6),o=0,r=t.x+t.width/2,s=t.y+t.height/2,a=e[0];i[o++]=a.x-r,i[o++]=0,i[o++]=a.y-s;for(let c=1;c<n;c++){a=e[c];let u=a.x-r,f=a.y-s;i[o++]=u,i[o++]=0,i[o++]=f,i[o++]=u,i[o++]=0,i[o++]=f}return a=e[0],i[o++]=a.x-r,i[o++]=0,i[o++]=a.y-s,i}function Ufe(e,t){let n=e.length,i=new Array(n*3),o=0,r=t.x+t.width/2,s=t.y+t.height/2;for(let a=0;a<n;a++)i[o++]=e[a].x-r,i[o++]=0,i[o++]=e[a].y-s;return i}var Gfe=new Le,zfe=new d,Vfe=new J;function Hfe(e,t,n,i,o,r,s,a,c,u){let f=d.angleBetween(d.subtract(t,e,pb),d.subtract(n,e,Xk)),h=i===Ji.BEVELED?0:Math.ceil(f/D.toRadians(5)),A;o?A=J.fromQuaternion(Le.fromAxisAngle(d.negate(e,pb),f/(h+1),Gfe),Vfe):A=J.fromQuaternion(Le.fromAxisAngle(e,f/(h+1),Gfe),Vfe);let g,m;if(t=d.clone(t,zfe),h>0){let _=u?2:1;for(let y=0;y<h;y++)t=J.multiplyByVector(A,t,t),g=d.subtract(t,e,pb),g=d.normalize(g,g),o||(g=d.negate(g,g)),m=r.scaleToGeodeticSurface(t,Xk),s=wp(m,g,a,s,r,c,1,_)}else g=d.subtract(t,e,pb),g=d.normalize(g,g),o||(g=d.negate(g,g)),m=r.scaleToGeodeticSurface(t,Xk),s=wp(m,g,a,s,r,c,1,1),n=d.clone(n,zfe),g=d.subtract(n,e,pb),g=d.normalize(g,g),o||(g=d.negate(g,g)),m=r.scaleToGeodeticSurface(n,Xk),s=wp(m,g,a,s,r,c,1,1);return s}PD.removeDuplicatesFromShape=function(e){let t=e.length,n=[];for(let i=t-1,o=0;o<t;i=o++){let r=e[i],s=e[o];k.equals(r,s)||n.push(s)}return n};PD.angleIsGreaterThanPi=function(e,t,n,i){let o=new xs(n,i),r=o.projectPointOntoPlane(d.add(n,e,Jk),Jk),s=o.projectPointOntoPlane(d.add(n,t,Zk),Zk);return s.x*r.y-s.y*r.x>=0};var UJe=new d,GJe=new d;PD.computePositions=function(e,t,n,i,o){let r=i._ellipsoid,s=PJe(e,r),a=i._granularity,c=i._cornerType,u=o?kJe(t,n):Ufe(t,n),f=o?Ufe(t,n):void 0,h=n.height/2,A=n.width/2,g=e.length,m=[],_=o?[]:void 0,y=IJe,C=xJe,E=bJe,I=TJe,b=SJe,S=wJe,B=BJe,v=DJe,P=vJe,N=e[0],L=e[1];I=r.geodeticSurfaceNormal(N,I),y=d.subtract(L,N,y),y=d.normalize(y,y),v=d.cross(I,y,v),v=d.normalize(v,v);let p=s[0],x=s[1];o&&(_=wp(N,v,f,_,r,p+h,1,1)),P=d.clone(N,P),N=L,C=d.negate(y,C);let T,w;for(let U=1;U<g-1;U++){let Q=o?2:1;if(L=e[U+1],N.equals(L)){yt("Positions are too close and are considered equivalent with rounding error.");continue}y=d.subtract(L,N,y),y=d.normalize(y,y),I=r.geodeticSurfaceNormal(N,I);let z=d.multiplyByScalar(I,d.dot(y,I),UJe);d.subtract(y,z,z),d.normalize(z,z);let F=d.multiplyByScalar(I,d.dot(C,I),GJe);if(d.subtract(C,F,F),d.normalize(F,F),!D.equalsEpsilon(Math.abs(d.dot(z,F)),1,D.EPSILON7)){E=d.add(y,C,E),E=d.normalize(E,E),E=d.cross(E,I,E),E=d.cross(I,E,E),E=d.normalize(E,E);let W=1/Math.max(.25,d.magnitude(d.cross(E,C,pb))),Z=PD.angleIsGreaterThanPi(y,C,N,r);Z?(b=d.add(N,d.multiplyByScalar(E,W*A,E),b),S=d.add(b,d.multiplyByScalar(v,A,S),S),Fa[0]=d.clone(P,Fa[0]),Fa[1]=d.clone(S,Fa[1]),T=LY(Fa,p+h,x+h,a),w=Xi.generateArc({positions:Fa,granularity:a,ellipsoid:r}),m=FY(w,v,u,m,r,T,1),v=d.cross(I,y,v),v=d.normalize(v,v),B=d.add(b,d.multiplyByScalar(v,A,B),B),c===Ji.ROUNDED||c===Ji.BEVELED?Hfe(b,S,B,c,Z,r,m,u,x+h,o):(E=d.negate(E,E),m=wp(N,E,u,m,r,x+h,W,Q)),P=d.clone(B,P)):(b=d.add(N,d.multiplyByScalar(E,W*A,E),b),S=d.add(b,d.multiplyByScalar(v,-A,S),S),Fa[0]=d.clone(P,Fa[0]),Fa[1]=d.clone(S,Fa[1]),T=LY(Fa,p+h,x+h,a),w=Xi.generateArc({positions:Fa,granularity:a,ellipsoid:r}),m=FY(w,v,u,m,r,T,1),v=d.cross(I,y,v),v=d.normalize(v,v),B=d.add(b,d.multiplyByScalar(v,-A,B),B),c===Ji.ROUNDED||c===Ji.BEVELED?Hfe(b,S,B,c,Z,r,m,u,x+h,o):m=wp(N,E,u,m,r,x+h,W,Q),P=d.clone(B,P)),C=d.negate(y,C)}else m=wp(P,v,u,m,r,p+h,1,1),P=N;p=x,x=s[U+1],N=L}Fa[0]=d.clone(P,Fa[0]),Fa[1]=d.clone(N,Fa[1]),T=LY(Fa,p+h,x+h,a),w=Xi.generateArc({positions:Fa,granularity:a,ellipsoid:r}),m=FY(w,v,u,m,r,T,1),o&&(_=wp(N,v,f,_,r,x+h,1,1)),g=m.length;let M=o?g+_.length:g,O=new Float64Array(M);return O.set(m),o&&O.set(_,g),O};var Gm=PD;var kY={},gb=new d,Kfe=new d,zJe=new d,Wfe=new d,Al=[new d,new d],Xfe=new d,Jfe=new d,Zfe=new d,VJe=new d,HJe=new d,WJe=new d,jJe=new d,YJe=new d,qJe=new d,KJe=new d,jfe=new Le,Yfe=new J;function $k(e,t,n,i,o){let r=d.angleBetween(d.subtract(t,e,gb),d.subtract(n,e,Kfe)),s=i===Ji.BEVELED?1:Math.ceil(r/D.toRadians(5))+1,a=s*3,c=new Array(a);c[a-3]=n.x,c[a-2]=n.y,c[a-1]=n.z;let u;o?u=J.fromQuaternion(Le.fromAxisAngle(d.negate(e,gb),r/s,jfe),Yfe):u=J.fromQuaternion(Le.fromAxisAngle(e,r/s,jfe),Yfe);let f=0;t=d.clone(t,gb);for(let h=0;h<s;h++)t=J.multiplyByVector(u,t,t),c[f++]=t.x,c[f++]=t.y,c[f++]=t.z;return c}function XJe(e){let t=Xfe,n=Jfe,i=Zfe,o=e[1];n=d.fromArray(e[1],o.length-3,n),i=d.fromArray(e[0],0,i),t=d.midpoint(n,i,t);let r=$k(t,n,i,Ji.ROUNDED,!1),s=e.length-1,a=e[s-1];o=e[s],n=d.fromArray(a,a.length-3,n),i=d.fromArray(o,0,i),t=d.midpoint(n,i,t);let c=$k(t,n,i,Ji.ROUNDED,!1);return[r,c]}function qfe(e,t,n,i){let o=gb;return i?o=d.add(e,t,o):(t=d.negate(t,t),o=d.add(e,t,o)),[o.x,o.y,o.z,n.x,n.y,n.z]}function QY(e,t,n,i){let o=new Array(e.length),r=new Array(e.length),s=d.multiplyByScalar(t,n,gb),a=d.negate(s,Kfe),c=0,u=e.length-1;for(let f=0;f<e.length;f+=3){let h=d.fromArray(e,f,zJe),A=d.add(h,a,Wfe);o[c++]=A.x,o[c++]=A.y,o[c++]=A.z;let g=d.add(h,s,Wfe);r[u--]=g.z,r[u--]=g.y,r[u--]=g.x}return i.push(o,r),i}kY.addAttribute=function(e,t,n,i){let o=t.x,r=t.y,s=t.z;l(n)&&(e[n]=o,e[n+1]=r,e[n+2]=s),l(i)&&(e[i]=s,e[i-1]=r,e[i-2]=o)};var JJe=new d,ZJe=new d;kY.computePositions=function(e){let t=e.granularity,n=e.positions,i=e.ellipsoid,o=e.width/2,r=e.cornerType,s=e.saveAttributes,a=Xfe,c=Jfe,u=Zfe,f=VJe,h=HJe,A=WJe,g=jJe,m=YJe,_=qJe,y=KJe,C=[],E=s?[]:void 0,I=s?[]:void 0,b=n[0],S=n[1];c=d.normalize(d.subtract(S,b,c),c),a=i.geodeticSurfaceNormal(b,a),f=d.normalize(d.cross(a,c,f),f),s&&(E.push(f.x,f.y,f.z),I.push(a.x,a.y,a.z)),g=d.clone(b,g),b=S,u=d.negate(c,u);let B,v=[],P,N=n.length;for(P=1;P<N-1;P++){a=i.geodeticSurfaceNormal(b,a),S=n[P+1],c=d.normalize(d.subtract(S,b,c),c);let p=d.multiplyByScalar(a,d.dot(c,a),JJe);d.subtract(c,p,p),d.normalize(p,p);let x=d.multiplyByScalar(a,d.dot(u,a),ZJe);if(d.subtract(u,x,x),d.normalize(x,x),!D.equalsEpsilon(Math.abs(d.dot(p,x)),1,D.EPSILON7)){h=d.normalize(d.add(c,u,h),h),h=d.cross(h,a,h),h=d.cross(a,h,h),h=d.normalize(h,h);let w=o/Math.max(.25,d.magnitude(d.cross(h,u,gb))),M=Gm.angleIsGreaterThanPi(c,u,b,i);h=d.multiplyByScalar(h,w,h),M?(m=d.add(b,h,m),y=d.add(m,d.multiplyByScalar(f,o,y),y),_=d.add(m,d.multiplyByScalar(f,o*2,_),_),Al[0]=d.clone(g,Al[0]),Al[1]=d.clone(y,Al[1]),B=Xi.generateArc({positions:Al,granularity:t,ellipsoid:i}),C=QY(B,f,o,C),s&&(E.push(f.x,f.y,f.z),I.push(a.x,a.y,a.z)),A=d.clone(_,A),f=d.normalize(d.cross(a,c,f),f),_=d.add(m,d.multiplyByScalar(f,o*2,_),_),g=d.add(m,d.multiplyByScalar(f,o,g),g),r===Ji.ROUNDED||r===Ji.BEVELED?v.push({leftPositions:$k(m,A,_,r,M)}):v.push({leftPositions:qfe(b,d.negate(h,h),_,M)})):(_=d.add(b,h,_),y=d.add(_,d.negate(d.multiplyByScalar(f,o,y),y),y),m=d.add(_,d.negate(d.multiplyByScalar(f,o*2,m),m),m),Al[0]=d.clone(g,Al[0]),Al[1]=d.clone(y,Al[1]),B=Xi.generateArc({positions:Al,granularity:t,ellipsoid:i}),C=QY(B,f,o,C),s&&(E.push(f.x,f.y,f.z),I.push(a.x,a.y,a.z)),A=d.clone(m,A),f=d.normalize(d.cross(a,c,f),f),m=d.add(_,d.negate(d.multiplyByScalar(f,o*2,m),m),m),g=d.add(_,d.negate(d.multiplyByScalar(f,o,g),g),g),r===Ji.ROUNDED||r===Ji.BEVELED?v.push({rightPositions:$k(_,A,m,r,M)}):v.push({rightPositions:qfe(b,h,m,M)})),u=d.negate(c,u)}b=S}a=i.geodeticSurfaceNormal(b,a),Al[0]=d.clone(g,Al[0]),Al[1]=d.clone(b,Al[1]),B=Xi.generateArc({positions:Al,granularity:t,ellipsoid:i}),C=QY(B,f,o,C),s&&(E.push(f.x,f.y,f.z),I.push(a.x,a.y,a.z));let L;return r===Ji.ROUNDED&&(L=XJe(C)),{positions:C,corners:v,lefts:E,normals:I,endPositions:L}};var no=kY;var tde=new d,nde=new d,e3=new d,t3=new d,$Je=new d,ide=new d,z_=new d,_b=new d;function ode(e,t){for(let n=0;n<e.length;n++)e[n]=t.scaleToGeodeticSurface(e[n],e[n]);return e}function ch(e,t,n,i,o,r){let s=e.normals,a=e.tangents,c=e.bitangents,u=d.normalize(d.cross(n,t,z_),z_);r.normal&&no.addAttribute(s,t,i,o),r.tangent&&no.addAttribute(a,u,i,o),r.bitangent&&no.addAttribute(c,n,i,o)}function rde(e,t,n){let i=e.positions,o=e.corners,r=e.endPositions,s=e.lefts,a=e.normals,c=new En,u,f=0,h=0,A,g=0,m;for(A=0;A<i.length;A+=2)m=i[A].length-3,f+=m,g+=m*2,h+=i[A+1].length-3;for(f+=3,h+=3,A=0;A<o.length;A++){u=o[A];let X=o[A].leftPositions;l(X)?(m=X.length,f+=m,g+=m):(m=o[A].rightPositions.length,h+=m,g+=m)}let _=l(r),y;_&&(y=r[0].length-3,f+=y,h+=y,y/=3,g+=y*6);let C=f+h,E=new Float64Array(C),I=t.normal?new Float32Array(C):void 0,b=t.tangent?new Float32Array(C):void 0,S=t.bitangent?new Float32Array(C):void 0,B={normals:I,tangents:b,bitangents:S},v=0,P=C-1,N,L,p,x,T=tde,w=nde,M,O,U=y/2,Q=Fe.createTypedArray(C/3,g),z=0;if(_){O=e3,M=t3;let X=r[0];for(T=d.fromArray(a,0,T),w=d.fromArray(s,0,w),A=0;A<U;A++)O=d.fromArray(X,(U-1-A)*3,O),M=d.fromArray(X,(U+A)*3,M),no.addAttribute(E,M,v),no.addAttribute(E,O,void 0,P),ch(B,T,w,v,P,t),L=v/3,x=L+1,N=(P-2)/3,p=N-1,Q[z++]=N,Q[z++]=L,Q[z++]=p,Q[z++]=p,Q[z++]=L,Q[z++]=x,v+=3,P-=3}let F=0,H=0,W=i[F++],Z=i[F++];E.set(W,v),E.set(Z,P-Z.length+1),w=d.fromArray(s,H,w);let Y,$;for(m=Z.length-3,A=0;A<m;A+=3)Y=n.geodeticSurfaceNormal(d.fromArray(W,A,z_),z_),$=n.geodeticSurfaceNormal(d.fromArray(Z,m-A,_b),_b),T=d.normalize(d.add(Y,$,T),T),ch(B,T,w,v,P,t),L=v/3,x=L+1,N=(P-2)/3,p=N-1,Q[z++]=N,Q[z++]=L,Q[z++]=p,Q[z++]=p,Q[z++]=L,Q[z++]=x,v+=3,P-=3;for(Y=n.geodeticSurfaceNormal(d.fromArray(W,m,z_),z_),$=n.geodeticSurfaceNormal(d.fromArray(Z,m,_b),_b),T=d.normalize(d.add(Y,$,T),T),H+=3,A=0;A<o.length;A++){let X;u=o[A];let he=u.leftPositions,ge=u.rightPositions,fe,ye,Ie=ide,ve=e3,Te=t3;if(T=d.fromArray(a,H,T),l(he)){for(ch(B,T,w,void 0,P,t),P-=3,fe=x,ye=p,X=0;X<he.length/3;X++)Ie=d.fromArray(he,X*3,Ie),Q[z++]=fe,Q[z++]=ye-X-1,Q[z++]=ye-X,no.addAttribute(E,Ie,void 0,P),ve=d.fromArray(E,(ye-X-1)*3,ve),Te=d.fromArray(E,fe*3,Te),w=d.normalize(d.subtract(ve,Te,w),w),ch(B,T,w,void 0,P,t),P-=3;Ie=d.fromArray(E,fe*3,Ie),ve=d.subtract(d.fromArray(E,ye*3,ve),Ie,ve),Te=d.subtract(d.fromArray(E,(ye-X)*3,Te),Ie,Te),w=d.normalize(d.add(ve,Te,w),w),ch(B,T,w,v,void 0,t),v+=3}else{for(ch(B,T,w,v,void 0,t),v+=3,fe=p,ye=x,X=0;X<ge.length/3;X++)Ie=d.fromArray(ge,X*3,Ie),Q[z++]=fe,Q[z++]=ye+X,Q[z++]=ye+X+1,no.addAttribute(E,Ie,v),ve=d.fromArray(E,fe*3,ve),Te=d.fromArray(E,(ye+X)*3,Te),w=d.normalize(d.subtract(ve,Te,w),w),ch(B,T,w,v,void 0,t),v+=3;Ie=d.fromArray(E,fe*3,Ie),ve=d.subtract(d.fromArray(E,(ye+X)*3,ve),Ie,ve),Te=d.subtract(d.fromArray(E,ye*3,Te),Ie,Te),w=d.normalize(d.negate(d.add(Te,ve,w),w),w),ch(B,T,w,void 0,P,t),P-=3}for(W=i[F++],Z=i[F++],W.splice(0,3),Z.splice(Z.length-3,3),E.set(W,v),E.set(Z,P-Z.length+1),m=Z.length-3,H+=3,w=d.fromArray(s,H,w),X=0;X<Z.length;X+=3)Y=n.geodeticSurfaceNormal(d.fromArray(W,X,z_),z_),$=n.geodeticSurfaceNormal(d.fromArray(Z,m-X,_b),_b),T=d.normalize(d.add(Y,$,T),T),ch(B,T,w,v,P,t),x=v/3,L=x-1,p=(P-2)/3,N=p+1,Q[z++]=N,Q[z++]=L,Q[z++]=p,Q[z++]=p,Q[z++]=L,Q[z++]=x,v+=3,P-=3;v-=3,P+=3}if(T=d.fromArray(a,a.length-3,T),ch(B,T,w,v,P,t),_){v+=3,P-=3,O=e3,M=t3;let X=r[1];for(A=0;A<U;A++)O=d.fromArray(X,(y-A-1)*3,O),M=d.fromArray(X,A*3,M),no.addAttribute(E,O,void 0,P),no.addAttribute(E,M,v),ch(B,T,w,v,P,t),x=v/3,L=x-1,p=(P-2)/3,N=p+1,Q[z++]=N,Q[z++]=L,Q[z++]=p,Q[z++]=p,Q[z++]=L,Q[z++]=x,v+=3,P-=3}if(c.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:E}),t.st){let X=new Float32Array(C/3*2),he,ge,fe=0;if(_){f/=3,h/=3;let ye=Math.PI/(y+1);ge=1/(f-y+1),he=1/(h-y+1);let Ie,ve=y/2;for(A=ve+1;A<y+1;A++)Ie=D.PI_OVER_TWO+ye*A,X[fe++]=he*(1+Math.cos(Ie)),X[fe++]=.5*(1+Math.sin(Ie));for(A=1;A<h-y+1;A++)X[fe++]=A*he,X[fe++]=0;for(A=y;A>ve;A--)Ie=D.PI_OVER_TWO-A*ye,X[fe++]=1-he*(1+Math.cos(Ie)),X[fe++]=.5*(1+Math.sin(Ie));for(A=ve;A>0;A--)Ie=D.PI_OVER_TWO-ye*A,X[fe++]=1-ge*(1+Math.cos(Ie)),X[fe++]=.5*(1+Math.sin(Ie));for(A=f-y;A>0;A--)X[fe++]=A*ge,X[fe++]=1;for(A=1;A<ve+1;A++)Ie=D.PI_OVER_TWO+ye*A,X[fe++]=ge*(1+Math.cos(Ie)),X[fe++]=.5*(1+Math.sin(Ie))}else{for(f/=3,h/=3,ge=1/(f-1),he=1/(h-1),A=0;A<h;A++)X[fe++]=A*he,X[fe++]=0;for(A=f;A>0;A--)X[fe++]=(A-1)*ge,X[fe++]=1}c.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:X})}return t.normal&&(c.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:B.normals})),t.tangent&&(c.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:B.tangents})),t.bitangent&&(c.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:B.bitangents})),{attributes:c,indices:Q}}function eZe(e,t){if(!t.normal&&!t.tangent&&!t.bitangent&&!t.st)return e;let n=e.position.values,i,o;(t.normal||t.bitangent)&&(i=e.normal.values,o=e.bitangent.values);let r=e.position.values.length/18,s=r*3,a=r*2,c=s*2,u;if(t.normal||t.bitangent||t.tangent){let f=t.normal?new Float32Array(s*6):void 0,h=t.tangent?new Float32Array(s*6):void 0,A=t.bitangent?new Float32Array(s*6):void 0,g=tde,m=nde,_=e3,y=t3,C=$Je,E=ide,I=c;for(u=0;u<s;u+=3){let b=I+c;g=d.fromArray(n,u,g),m=d.fromArray(n,u+s,m),_=d.fromArray(n,(u+3)%s,_),m=d.subtract(m,g,m),_=d.subtract(_,g,_),y=d.normalize(d.cross(m,_,y),y),t.normal&&(no.addAttribute(f,y,b),no.addAttribute(f,y,b+3),no.addAttribute(f,y,I),no.addAttribute(f,y,I+3)),(t.tangent||t.bitangent)&&(E=d.fromArray(i,u,E),t.bitangent&&(no.addAttribute(A,E,b),no.addAttribute(A,E,b+3),no.addAttribute(A,E,I),no.addAttribute(A,E,I+3)),t.tangent&&(C=d.normalize(d.cross(E,y,C),C),no.addAttribute(h,C,b),no.addAttribute(h,C,b+3),no.addAttribute(h,C,I),no.addAttribute(h,C,I+3))),I+=6}if(t.normal){for(f.set(i),u=0;u<s;u+=3)f[u+s]=-i[u],f[u+s+1]=-i[u+1],f[u+s+2]=-i[u+2];e.normal.values=f}else e.normal=void 0;if(t.bitangent?(A.set(o),A.set(o,s),e.bitangent.values=A):e.bitangent=void 0,t.tangent){let b=e.tangent.values;h.set(b),h.set(b,s),e.tangent.values=h}}if(t.st){let f=e.st.values,h=new Float32Array(a*6);h.set(f),h.set(f,a);let A=a*2;for(let g=0;g<2;g++){for(h[A++]=f[0],h[A++]=f[1],u=2;u<a;u+=2){let m=f[u],_=f[u+1];h[A++]=m,h[A++]=_,h[A++]=m,h[A++]=_}h[A++]=f[0],h[A++]=f[1]}e.st.values=h}return e}function UY(e,t,n){n[t++]=e[0],n[t++]=e[1],n[t++]=e[2];for(let i=3;i<e.length;i+=3){let o=e[i],r=e[i+1],s=e[i+2];n[t++]=o,n[t++]=r,n[t++]=s,n[t++]=o,n[t++]=r,n[t++]=s}return n[t++]=e[0],n[t++]=e[1],n[t++]=e[2],n}function tZe(e,t){let n=new Pe({position:t.position,normal:t.normal||t.bitangent||e.shadowVolume,tangent:t.tangent,bitangent:t.normal||t.bitangent,st:t.st}),i=e.ellipsoid,o=no.computePositions(e),r=rde(o,n,i),s=e.height,a=e.extrudedHeight,c=r.attributes,u=r.indices,f=c.position.values,h=f.length,A=new Float64Array(h*6),g=new Float64Array(h);g.set(f);let m=new Float64Array(h*4);f=xi.scaleToGeodeticHeight(f,s,i),m=UY(f,0,m),g=xi.scaleToGeodeticHeight(g,a,i),m=UY(g,h*2,m),A.set(f),A.set(g,h),A.set(m,h*2),c.position.values=A,c=eZe(c,t);let _,y=h/3;if(e.shadowVolume){let N=c.normal.values;h=N.length;let L=new Float32Array(h*6);for(_=0;_<h;_++)N[_]=-N[_];L.set(N,h),L=UY(N,h*4,L),c.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:L}),t.normal||(c.normal=void 0)}if(l(e.offsetAttribute)){let N=new Uint8Array(y*6);if(e.offsetAttribute===hn.TOP)N=N.fill(1,0,y).fill(1,y*2,y*4);else{let L=e.offsetAttribute===hn.NONE?0:1;N=N.fill(L)}c.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:N})}let C=u.length,E=y+y,I=Fe.createTypedArray(A.length/3,C*2+E*3);I.set(u);let b=C;for(_=0;_<C;_+=3){let N=u[_],L=u[_+1],p=u[_+2];I[b++]=p+y,I[b++]=L+y,I[b++]=N+y}let S,B,v,P;for(_=0;_<E;_+=2)S=_+E,B=S+E,v=S+1,P=B+1,I[b++]=S,I[b++]=B,I[b++]=v,I[b++]=v,I[b++]=B,I[b++]=P;return{attributes:c,indices:I}}var $fe=new d,RD=new d,nd=new Ae;function ede(e,t,n,i,o,r){let s=d.subtract(t,e,$fe);d.normalize(s,s);let a=n.geodeticSurfaceNormal(e,RD),c=d.cross(s,a,$fe);d.multiplyByScalar(c,i,c);let u=o.latitude,f=o.longitude,h=r.latitude,A=r.longitude;d.add(e,c,RD),n.cartesianToCartographic(RD,nd);let g=nd.latitude,m=nd.longitude;u=Math.min(u,g),f=Math.min(f,m),h=Math.max(h,g),A=Math.max(A,m),d.subtract(e,c,RD),n.cartesianToCartographic(RD,nd),g=nd.latitude,m=nd.longitude,u=Math.min(u,g),f=Math.min(f,m),h=Math.max(h,g),A=Math.max(A,m),o.latitude=u,o.longitude=f,r.latitude=h,r.longitude=A}var td=new d,MD=new d,nu=new Ae,iu=new Ae;function sde(e,t,n,i,o){e=ode(e,t);let r=No(e,d.equalsEpsilon),s=r.length;if(s<2||n<=0)return new ae;let a=n*.5;nu.latitude=Number.POSITIVE_INFINITY,nu.longitude=Number.POSITIVE_INFINITY,iu.latitude=Number.NEGATIVE_INFINITY,iu.longitude=Number.NEGATIVE_INFINITY;let c,u;if(i===Ji.ROUNDED){let A=r[0];d.subtract(A,r[1],td),d.normalize(td,td),d.multiplyByScalar(td,a,td),d.add(A,td,MD),t.cartesianToCartographic(MD,nd),c=nd.latitude,u=nd.longitude,nu.latitude=Math.min(nu.latitude,c),nu.longitude=Math.min(nu.longitude,u),iu.latitude=Math.max(iu.latitude,c),iu.longitude=Math.max(iu.longitude,u)}for(let A=0;A<s-1;++A)ede(r[A],r[A+1],t,a,nu,iu);let f=r[s-1];d.subtract(f,r[s-2],td),d.normalize(td,td),d.multiplyByScalar(td,a,td),d.add(f,td,MD),ede(f,MD,t,a,nu,iu),i===Ji.ROUNDED&&(t.cartesianToCartographic(MD,nd),c=nd.latitude,u=nd.longitude,nu.latitude=Math.min(nu.latitude,c),nu.longitude=Math.min(nu.longitude,u),iu.latitude=Math.max(iu.latitude,c),iu.longitude=Math.max(iu.longitude,u));let h=l(o)?o:new ae;return h.north=iu.latitude,h.south=nu.latitude,h.east=iu.longitude,h.west=nu.longitude,h}function Dp(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.width,i=e.height??0,o=e.extrudedHeight??i;this._positions=t,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._vertexFormat=Pe.clone(e.vertexFormat??Pe.DEFAULT),this._width=n,this._height=Math.max(i,o),this._extrudedHeight=Math.min(i,o),this._cornerType=e.cornerType??Ji.ROUNDED,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._shadowVolume=e.shadowVolume??!1,this._workerName="createCorridorGeometry",this._offsetAttribute=e.offsetAttribute,this._rectangle=void 0,this.packedLength=1+t.length*d.packedLength+te.packedLength+Pe.packedLength+7}Dp.pack=function(e,t,n){n=n??0;let i=e._positions,o=i.length;t[n++]=o;for(let r=0;r<o;++r,n+=d.packedLength)d.pack(i[r],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._width,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._cornerType,t[n++]=e._granularity,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var ade=te.clone(te.UNIT_SPHERE),cde=new Pe,Bp={positions:void 0,ellipsoid:ade,vertexFormat:cde,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0,shadowVolume:void 0,offsetAttribute:void 0};Dp.unpack=function(e,t,n){t=t??0;let i=e[t++],o=new Array(i);for(let m=0;m<i;++m,t+=d.packedLength)o[m]=d.unpack(e,t);let r=te.unpack(e,t,ade);t+=te.packedLength;let s=Pe.unpack(e,t,cde);t+=Pe.packedLength;let a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t++]===1,g=e[t];return l(n)?(n._positions=o,n._ellipsoid=te.clone(r,n._ellipsoid),n._vertexFormat=Pe.clone(s,n._vertexFormat),n._width=a,n._height=c,n._extrudedHeight=u,n._cornerType=f,n._granularity=h,n._shadowVolume=A,n._offsetAttribute=g===-1?void 0:g,n):(Bp.positions=o,Bp.width=a,Bp.height=c,Bp.extrudedHeight=u,Bp.cornerType=f,Bp.granularity=h,Bp.shadowVolume=A,Bp.offsetAttribute=g===-1?void 0:g,new Dp(Bp))};Dp.computeRectangle=function(e,t){e=e??V.EMPTY_OBJECT;let n=e.positions,i=e.width,o=e.ellipsoid??te.default,r=e.cornerType??Ji.ROUNDED;return sde(n,o,i,r,t)};Dp.createGeometry=function(e){let t=e._positions,n=e._width,i=e._ellipsoid;t=ode(t,i);let o=No(t,d.equalsEpsilon);if(o.length<2||n<=0)return;let r=e._height,s=e._extrudedHeight,a=!D.equalsEpsilon(r,s,0,D.EPSILON2),c=e._vertexFormat,u={ellipsoid:i,positions:o,width:n,cornerType:e._cornerType,granularity:e._granularity,saveAttributes:!0},f;if(a)u.height=r,u.extrudedHeight=s,u.shadowVolume=e._shadowVolume,u.offsetAttribute=e._offsetAttribute,f=tZe(u,c);else{let g=no.computePositions(u);if(f=rde(g,c,i),f.attributes.position.values=xi.scaleToGeodeticHeight(f.attributes.position.values,r,i),l(e._offsetAttribute)){let m=e._offsetAttribute===hn.NONE?0:1,_=f.attributes.position.values.length,y=new Uint8Array(_/3).fill(m);f.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:y})}}let h=f.attributes,A=le.fromVertices(h.position.values,void 0,3);return c.position||(f.attributes.position.values=void 0),new ht({attributes:h,indices:f.indices,primitiveType:Me.TRIANGLES,boundingSphere:A,offsetAttribute:e._offsetAttribute})};Dp.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new Dp({positions:e._positions,width:e._width,cornerType:e._cornerType,ellipsoid:o,granularity:i,extrudedHeight:r,height:s,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(Dp.prototype,{rectangle:{get:function(){return l(this._rectangle)||(this._rectangle=sde(this._positions,this._ellipsoid,this._width,this._cornerType)),this._rectangle}},textureCoordinateRotationPoints:{get:function(){return[0,0,0,1,1,0]}}});var yb=Dp;var lde=new d,ude=new d,nZe=new d;function iZe(e,t){for(let n=0;n<e.length;n++)e[n]=t.scaleToGeodeticSurface(e[n],e[n]);return e}function fde(e,t){let n=[],i=e.positions,o=e.corners,r=e.endPositions,s=new En,a,c=0,u=0,f,h=0,A;for(f=0;f<i.length;f+=2)A=i[f].length-3,c+=A,h+=A/3*4,u+=i[f+1].length-3;for(c+=3,u+=3,f=0;f<o.length;f++){a=o[f];let M=o[f].leftPositions;l(M)?(A=M.length,c+=A,h+=A/3*2):(A=o[f].rightPositions.length,u+=A,h+=A/3*2)}let g=l(r),m;g&&(m=r[0].length-3,c+=m,u+=m,m/=3,h+=m*4);let _=c+u,y=new Float64Array(_),C=0,E=_-1,I,b,S,B,v,P,N=m/2,L=Fe.createTypedArray(_/3,h+4),p=0;if(L[p++]=C/3,L[p++]=(E-2)/3,g){n.push(C/3),P=lde,v=ude;let M=r[0];for(f=0;f<N;f++)P=d.fromArray(M,(N-1-f)*3,P),v=d.fromArray(M,(N+f)*3,v),no.addAttribute(y,v,C),no.addAttribute(y,P,void 0,E),b=C/3,B=b+1,I=(E-2)/3,S=I-1,L[p++]=I,L[p++]=S,L[p++]=b,L[p++]=B,C+=3,E-=3}let x=0,T=i[x++],w=i[x++];for(y.set(T,C),y.set(w,E-w.length+1),A=w.length-3,n.push(C/3,(E-2)/3),f=0;f<A;f+=3)b=C/3,B=b+1,I=(E-2)/3,S=I-1,L[p++]=I,L[p++]=S,L[p++]=b,L[p++]=B,C+=3,E-=3;for(f=0;f<o.length;f++){let M;a=o[f];let O=a.leftPositions,U=a.rightPositions,Q,z=nZe;if(l(O)){for(E-=3,Q=S,n.push(B),M=0;M<O.length/3;M++)z=d.fromArray(O,M*3,z),L[p++]=Q-M-1,L[p++]=Q-M,no.addAttribute(y,z,void 0,E),E-=3;n.push(Q-Math.floor(O.length/6)),t===Ji.BEVELED&&n.push((E-2)/3+1),C+=3}else{for(C+=3,Q=B,n.push(S),M=0;M<U.length/3;M++)z=d.fromArray(U,M*3,z),L[p++]=Q+M,L[p++]=Q+M+1,no.addAttribute(y,z,C),C+=3;n.push(Q+Math.floor(U.length/6)),t===Ji.BEVELED&&n.push(C/3-1),E-=3}for(T=i[x++],w=i[x++],T.splice(0,3),w.splice(w.length-3,3),y.set(T,C),y.set(w,E-w.length+1),A=w.length-3,M=0;M<w.length;M+=3)B=C/3,b=B-1,S=(E-2)/3,I=S+1,L[p++]=I,L[p++]=S,L[p++]=b,L[p++]=B,C+=3,E-=3;C-=3,E+=3,n.push(C/3,(E-2)/3)}if(g){C+=3,E-=3,P=lde,v=ude;let M=r[1];for(f=0;f<N;f++)P=d.fromArray(M,(m-f-1)*3,P),v=d.fromArray(M,f*3,v),no.addAttribute(y,P,void 0,E),no.addAttribute(y,v,C),B=C/3,b=B-1,S=(E-2)/3,I=S+1,L[p++]=I,L[p++]=S,L[p++]=b,L[p++]=B,C+=3,E-=3;n.push(C/3)}else n.push(C/3,(E-2)/3);return L[p++]=C/3,L[p++]=(E-2)/3,s.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:y}),{attributes:s,indices:L,wallIndices:n}}function oZe(e){let t=e.ellipsoid,n=no.computePositions(e),i=fde(n,e.cornerType),o=i.wallIndices,r=e.height,s=e.extrudedHeight,a=i.attributes,c=i.indices,u=a.position.values,f=u.length,h=new Float64Array(f);h.set(u);let A=new Float64Array(f*2);if(u=xi.scaleToGeodeticHeight(u,r,t),h=xi.scaleToGeodeticHeight(h,s,t),A.set(u),A.set(h,f),a.position.values=A,f/=3,l(e.offsetAttribute)){let I=new Uint8Array(f*2);if(e.offsetAttribute===hn.TOP)I=I.fill(1,0,f);else{let b=e.offsetAttribute===hn.NONE?0:1;I=I.fill(b)}a.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:I})}let g,m=c.length,_=Fe.createTypedArray(A.length/3,(m+o.length)*2);_.set(c);let y=m;for(g=0;g<m;g+=2){let I=c[g],b=c[g+1];_[y++]=I+f,_[y++]=b+f}let C,E;for(g=0;g<o.length;g++)C=o[g],E=C+f,_[y++]=C,_[y++]=E;return{attributes:a,indices:_}}function ND(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.width,i=e.height??0,o=e.extrudedHeight??i;this._positions=t,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._width=n,this._height=Math.max(i,o),this._extrudedHeight=Math.min(i,o),this._cornerType=e.cornerType??Ji.ROUNDED,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._offsetAttribute=e.offsetAttribute,this._workerName="createCorridorOutlineGeometry",this.packedLength=1+t.length*d.packedLength+te.packedLength+6}ND.pack=function(e,t,n){n=n??0;let i=e._positions,o=i.length;t[n++]=o;for(let r=0;r<o;++r,n+=d.packedLength)d.pack(i[r],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._width,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._cornerType,t[n++]=e._granularity,t[n]=e._offsetAttribute??-1,t};var dde=te.clone(te.UNIT_SPHERE),V_={positions:void 0,ellipsoid:dde,width:void 0,height:void 0,extrudedHeight:void 0,cornerType:void 0,granularity:void 0,offsetAttribute:void 0};ND.unpack=function(e,t,n){t=t??0;let i=e[t++],o=new Array(i);for(let A=0;A<i;++A,t+=d.packedLength)o[A]=d.unpack(e,t);let r=te.unpack(e,t,dde);t+=te.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t];return l(n)?(n._positions=o,n._ellipsoid=te.clone(r,n._ellipsoid),n._width=s,n._height=a,n._extrudedHeight=c,n._cornerType=u,n._granularity=f,n._offsetAttribute=h===-1?void 0:h,n):(V_.positions=o,V_.width=s,V_.height=a,V_.extrudedHeight=c,V_.cornerType=u,V_.granularity=f,V_.offsetAttribute=h===-1?void 0:h,new ND(V_))};ND.createGeometry=function(e){let t=e._positions,n=e._width,i=e._ellipsoid;t=iZe(t,i);let o=No(t,d.equalsEpsilon);if(o.length<2||n<=0)return;let r=e._height,s=e._extrudedHeight,a=!D.equalsEpsilon(r,s,0,D.EPSILON2),c={ellipsoid:i,positions:o,width:n,cornerType:e._cornerType,granularity:e._granularity,saveAttributes:!1},u;if(a)c.height=r,c.extrudedHeight=s,c.offsetAttribute=e._offsetAttribute,u=oZe(c);else{let A=no.computePositions(c);if(u=fde(A,c.cornerType),u.attributes.position.values=xi.scaleToGeodeticHeight(u.attributes.position.values,r,i),l(e._offsetAttribute)){let g=u.attributes.position.values.length,m=e._offsetAttribute===hn.NONE?0:1,_=new Uint8Array(g/3).fill(m);u.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:_})}}let f=u.attributes,h=le.fromVertices(f.position.values,void 0,3);return new ht({attributes:f,indices:u.indices,primitiveType:Me.LINES,boundingSphere:h,offsetAttribute:e._offsetAttribute})};var n3=ND;var rZe=new ci(0);function pl(e){Ci.call(this,e),this._zIndex=0,this._terrainOffsetProperty=void 0}l(Object.create)&&(pl.prototype=Object.create(Ci.prototype),pl.prototype.constructor=pl);Object.defineProperties(pl.prototype,{zIndex:{get:function(){return this._zIndex}},terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});pl.prototype._isOnTerrain=function(e,t){return this._fillEnabled&&!l(t.height)&&!l(t.extrudedHeight)&&Ll.isSupported(this._scene)};pl.prototype._getIsClosed=function(e){let t=e.height,n=e.extrudedHeight;return t===0||l(n)&&n!==t};pl.prototype._computeCenter=me.throwInstantiationError;pl.prototype._onEntityPropertyChanged=function(e,t,n,i){if(Ci.prototype._onEntityPropertyChanged.call(this,e,t,n,i),this._observedPropertyNames.indexOf(t)===-1)return;let o=this._entity[this._geometryPropertyName];if(!l(o))return;l(o.zIndex)&&(l(o.height)||l(o.extrudedHeight))&&yt(yt.geometryZIndex),this._zIndex=o.zIndex??rZe,l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0);let r=o.heightReference,s=o.extrudedHeightReference;if(l(r)||l(s)){let a=new fm(this._computeCenter.bind(this),!this._dynamic);this._terrainOffsetProperty=new kI(this._scene,a,r,s)}};pl.prototype.destroy=function(){l(this._terrainOffsetProperty)&&(this._terrainOffsetProperty.destroy(),this._terrainOffsetProperty=void 0),Ci.prototype.destroy.call(this)};pl.getGeometryHeight=function(e,t){if(!l(e)){t!==Ze.NONE&&yt(yt.geometryHeightReference);return}return _f(t)?0:e};pl.getGeometryExtrudedHeight=function(e,t){if(!l(e)){t!==Ze.NONE&&yt(yt.geometryExtrudedHeightReference);return}return _f(t)?pl.CLAMP_TO_GROUND:e};pl.CLAMP_TO_GROUND="clamp";pl.computeGeometryOffsetAttribute=function(e,t,n,i){(!l(e)||!l(t))&&(t=Ze.NONE),(!l(n)||!l(i))&&(i=Ze.NONE);let o=0;if(t!==Ze.NONE&&o++,i===Ze.RELATIVE_TO_GROUND&&o++,o===2)return hn.ALL;if(o===1)return hn.TOP};var ti=pl;var hde=new G,mde=d.ZERO,Ade=new d,pde=new ae;function sZe(e){this.id=e,this.vertexFormat=void 0,this.positions=void 0,this.width=void 0,this.cornerType=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.offsetAttribute=void 0}function lh(e,t){ti.call(this,{entity:e,scene:t,geometryOptions:new sZe(e),geometryPropertyName:"corridor",observedPropertyNames:["availability","corridor"]}),this._onEntityPropertyChanged(e,"corridor",e.corridor,void 0)}l(Object.create)&&(lh.prototype=Object.create(ti.prototype),lh.prototype.constructor=lh);lh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof Jt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,hde)),l(o)||(o=G.WHITE),i.color=en.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,mde,Ade))),new Rt({id:t,geometry:new yb(this._options),attributes:i})};lh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,hde),o={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0};return l(this._options.offsetAttribute)&&(o.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,mde,Ade))),new Rt({id:t,geometry:new n3(this._options),attributes:o})};lh.prototype._computeCenter=function(e,t){let n=j.getValueOrUndefined(this._entity.corridor.positions,e);if(!(!l(n)||n.length===0))return d.clone(n[Math.floor(n.length/2)],t)};lh.prototype._isHidden=function(e,t){return!l(t.positions)||!l(t.width)||Ci.prototype._isHidden.call(this,e,t)};lh.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!j.isConstant(t.height)||!j.isConstant(t.extrudedHeight)||!j.isConstant(t.granularity)||!j.isConstant(t.width)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.cornerType)||!j.isConstant(t.zIndex)||this._onTerrain&&!j.isConstant(this._materialProperty)&&!(this._materialProperty instanceof Jt)};lh.prototype._setStaticOptions=function(e,t){let n=j.getValueOrUndefined(t.height,je.MINIMUM_VALUE),i=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),o=j.getValueOrUndefined(t.extrudedHeight,je.MINIMUM_VALUE),r=j.getValueOrDefault(t.extrudedHeightReference,je.MINIMUM_VALUE,Ze.NONE);l(o)&&!l(n)&&(n=0);let s=this._options;s.vertexFormat=this._materialProperty instanceof Jt?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,s.positions=t.positions.getValue(je.MINIMUM_VALUE,s.positions),s.width=t.width.getValue(je.MINIMUM_VALUE),s.granularity=j.getValueOrUndefined(t.granularity,je.MINIMUM_VALUE),s.cornerType=j.getValueOrUndefined(t.cornerType,je.MINIMUM_VALUE),s.offsetAttribute=ti.computeGeometryOffsetAttribute(n,i,o,r),s.height=ti.getGeometryHeight(n,i),o=ti.getGeometryExtrudedHeight(o,r),o===ti.CLAMP_TO_GROUND&&(o=wi.getMinimumMaximumHeights(yb.computeRectangle(s,pde)).minimumTerrainHeight),s.extrudedHeight=o};lh.DynamicGeometryUpdater=Cb;function Cb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(Cb.prototype=Object.create(yi.prototype),Cb.prototype.constructor=Cb);Cb.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.positions)||!l(i.width)||yi.prototype._isHidden.call(this,e,t,n)};Cb.prototype._setOptions=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(t.height,n),r=j.getValueOrDefault(t.heightReference,n,Ze.NONE),s=j.getValueOrUndefined(t.extrudedHeight,n),a=j.getValueOrDefault(t.extrudedHeightReference,n,Ze.NONE);l(s)&&!l(o)&&(o=0),i.positions=j.getValueOrUndefined(t.positions,n),i.width=j.getValueOrUndefined(t.width,n),i.granularity=j.getValueOrUndefined(t.granularity,n),i.cornerType=j.getValueOrUndefined(t.cornerType,n),i.offsetAttribute=ti.computeGeometryOffsetAttribute(o,r,s,a),i.height=ti.getGeometryHeight(o,r),s=ti.getGeometryExtrudedHeight(s,a),s===ti.CLAMP_TO_GROUND&&(s=wi.getMinimumMaximumHeights(yb.computeRectangle(i,pde)).minimumTerrainHeight),i.extrudedHeight=s};var i3=lh;function o3(){me.throwInstantiationError()}Object.defineProperties(o3.prototype,{name:{get:me.throwInstantiationError},clock:{get:me.throwInstantiationError},entities:{get:me.throwInstantiationError},isLoading:{get:me.throwInstantiationError},changedEvent:{get:me.throwInstantiationError},errorEvent:{get:me.throwInstantiationError},loadingEvent:{get:me.throwInstantiationError},show:{get:me.throwInstantiationError},clustering:{get:me.throwInstantiationError}});o3.prototype.update=function(e){me.throwInstantiationError()};o3.setLoading=function(e,t){e._isLoading!==t&&(t?e._entityCollection.suspendEvents():e._entityCollection.resumeEvents(),e._isLoading=t,e._loading.raiseEvent(e,t))};var ms=o3;function zm(e,t){this._ellipsoid=e,this._cameraPosition=new d,this._cameraPositionInScaledSpace=new d,this._distanceToLimbInScaledSpaceSquared=0,l(t)&&(this.cameraPosition=t)}Object.defineProperties(zm.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},cameraPosition:{get:function(){return this._cameraPosition},set:function(e){let n=this._ellipsoid.transformPositionToScaledSpace(e,this._cameraPositionInScaledSpace),i=d.magnitudeSquared(n)-1;d.clone(e,this._cameraPosition),this._cameraPositionInScaledSpace=n,this._distanceToLimbInScaledSpaceSquared=i}}});var gde=new d;zm.prototype.isPointVisible=function(e){let n=this._ellipsoid.transformPositionToScaledSpace(e,gde);return zY(n,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};zm.prototype.isScaledSpacePointVisible=function(e){return zY(e,this._cameraPositionInScaledSpace,this._distanceToLimbInScaledSpaceSquared)};var aZe=new d;zm.prototype.isScaledSpacePointVisiblePossiblyUnderEllipsoid=function(e,t){let n=this._ellipsoid,i,o;return l(t)&&t<0&&n.minimumRadius>-t?(o=aZe,o.x=this._cameraPosition.x/(n.radii.x+t),o.y=this._cameraPosition.y/(n.radii.y+t),o.z=this._cameraPosition.z/(n.radii.z+t),i=o.x*o.x+o.y*o.y+o.z*o.z-1):(o=this._cameraPositionInScaledSpace,i=this._distanceToLimbInScaledSpaceSquared),zY(e,o,i)};zm.prototype.computeHorizonCullingPoint=function(e,t,n){return Cde(this._ellipsoid,e,t,n)};var _de=te.clone(te.UNIT_SPHERE);zm.prototype.computeHorizonCullingPointPossiblyUnderEllipsoid=function(e,t,n,i){let o=yde(this._ellipsoid,n,_de);return Cde(o,e,t,i)};zm.prototype.computeHorizonCullingPointFromVertices=function(e,t,n,i,o){return Ede(this._ellipsoid,e,t,n,i,o)};zm.prototype.computeHorizonCullingPointFromVerticesPossiblyUnderEllipsoid=function(e,t,n,i,o,r){let s=yde(this._ellipsoid,o,_de);return Ede(s,e,t,n,i,r)};var cZe=[];zm.prototype.computeHorizonCullingPointFromRectangle=function(e,t,n){let i=ae.subsample(e,t,0,cZe),o=le.fromPoints(i);if(!(d.magnitude(o.center)<.1*t.minimumRadius))return this.computeHorizonCullingPoint(o.center,i,n)};var lZe=new d;function yde(e,t,n){if(l(t)&&t<0&&e.minimumRadius>-t){let i=d.fromElements(e.radii.x+t,e.radii.y+t,e.radii.z+t,lZe);e=te.fromCartesian3(i,n)}return e}function Cde(e,t,n,i){l(i)||(i=new d);let o=bde(e,t),r=0;for(let s=0,a=n.length;s<a;++s){let c=n[s],u=Ide(e,c,o);if(u<0)return;r=Math.max(r,u)}return xde(o,r,i)}var r3=new d;function Ede(e,t,n,i,o,r){l(r)||(r=new d),i=i??3,o=o??d.ZERO;let s=bde(e,t),a=0;for(let c=0,u=n.length;c<u;c+=i){r3.x=n[c]+o.x,r3.y=n[c+1]+o.y,r3.z=n[c+2]+o.z;let f=Ide(e,r3,s);if(f<0)return;a=Math.max(a,f)}return xde(s,a,r)}function zY(e,t,n){let i=t,o=n,r=d.subtract(e,i,gde),s=-d.dot(r,i);return!(o<0?s>0:s>o&&s*s/d.magnitudeSquared(r)>o)}var uZe=new d,fZe=new d;function Ide(e,t,n){let i=e.transformPositionToScaledSpace(t,uZe),o=d.magnitudeSquared(i),r=Math.sqrt(o),s=d.divideByScalar(i,r,fZe);o=Math.max(1,o),r=Math.max(1,r);let a=d.dot(s,n),c=d.magnitude(d.cross(s,n,s)),u=1/r,f=Math.sqrt(o-1)*u;return 1/(a*u-c*f)}function xde(e,t,n){if(!(t<=0||t===1/0||t!==t))return d.multiplyByScalar(e,t,n)}var GY=new d;function bde(e,t){return d.equals(t,d.ZERO)?t:(e.transformPositionToScaledSpace(t,GY),d.normalize(GY,GY))}var H_=zm;function Or(e,t){e=e??V.EMPTY_OBJECT;let n=e.translucencyByDistance,i=e.scaleByDistance,o=e.distanceDisplayCondition;l(n)&&(n=Yt.clone(n)),l(i)&&(i=Yt.clone(i)),l(o)&&(o=Ut.clone(o)),this._show=e.show??!0,this._position=d.clone(e.position??d.ZERO),this._actualPosition=d.clone(this._position),this._color=G.clone(e.color??G.WHITE),this._outlineColor=G.clone(e.outlineColor??G.TRANSPARENT),this._outlineWidth=e.outlineWidth??0,this._pixelSize=e.pixelSize??10,this._scaleByDistance=i,this._translucencyByDistance=n,this._distanceDisplayCondition=o,this._disableDepthTestDistance=e.disableDepthTestDistance??0,this._id=e.id,this._collection=e.collection??t,this._clusterShow=!0,this._pickId=void 0,this._pointPrimitiveCollection=t,this._dirty=!1,this._index=-1,this._splitDirection=e.splitDirection??wr.NONE}var Tde=Or.SHOW_INDEX=0,Bde=Or.POSITION_INDEX=1,dZe=Or.COLOR_INDEX=2,hZe=Or.OUTLINE_COLOR_INDEX=3,mZe=Or.OUTLINE_WIDTH_INDEX=4,AZe=Or.PIXEL_SIZE_INDEX=5,pZe=Or.SCALE_BY_DISTANCE_INDEX=6,gZe=Or.TRANSLUCENCY_BY_DISTANCE_INDEX=7,_Ze=Or.DISTANCE_DISPLAY_CONDITION_INDEX=8,yZe=Or.DISABLE_DEPTH_DISTANCE_INDEX=9,CZe=Or.SPLIT_DIRECTION_INDEX=10;Or.NUMBER_OF_PROPERTIES=11;function Ou(e,t){let n=e._pointPrimitiveCollection;l(n)&&(n._updatePointPrimitive(e,t),e._dirty=!0)}Object.defineProperties(Or.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,Ou(this,Tde))}},position:{get:function(){return this._position},set:function(e){let t=this._position;d.equals(t,e)||(d.clone(e,t),d.clone(e,this._actualPosition),Ou(this,Bde))}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){let t=this._scaleByDistance;Yt.equals(t,e)||(this._scaleByDistance=Yt.clone(e,t),Ou(this,pZe))}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){let t=this._translucencyByDistance;Yt.equals(t,e)||(this._translucencyByDistance=Yt.clone(e,t),Ou(this,gZe))}},pixelSize:{get:function(){return this._pixelSize},set:function(e){this._pixelSize!==e&&(this._pixelSize=e,Ou(this,AZe))}},color:{get:function(){return this._color},set:function(e){let t=this._color;G.equals(t,e)||(G.clone(e,t),Ou(this,dZe))}},outlineColor:{get:function(){return this._outlineColor},set:function(e){let t=this._outlineColor;G.equals(t,e)||(G.clone(e,t),Ou(this,hZe))}},outlineWidth:{get:function(){return this._outlineWidth},set:function(e){this._outlineWidth!==e&&(this._outlineWidth=e,Ou(this,mZe))}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){Ut.equals(this._distanceDisplayCondition,e)||(this._distanceDisplayCondition=Ut.clone(e,this._distanceDisplayCondition),Ou(this,_Ze))}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance!==e&&(this._disableDepthTestDistance=e,Ou(this,yZe))}},id:{get:function(){return this._id},set:function(e){this._id=e,l(this._pickId)&&(this._pickId.object.id=e)}},pickId:{get:function(){return this._pickId}},clusterShow:{get:function(){return this._clusterShow},set:function(e){this._clusterShow!==e&&(this._clusterShow=e,Ou(this,Tde))}},splitDirection:{get:function(){return this._splitDirection},set:function(e){this._splitDirection!==e&&(this._splitDirection=e,Ou(this,CZe))}}});Or.prototype.getPickId=function(e){return l(this._pickId)||(this._pickId=e.createPickId({primitive:this,collection:this._collection,id:this._id})),this._pickId};Or.prototype._getActualPosition=function(){return this._actualPosition};Or.prototype._setActualPosition=function(e){d.clone(e,this._actualPosition),Ou(this,Bde)};var Sde=new se;Or._computeActualPosition=function(e,t,n){return t.mode===ie.SCENE3D?e:(R.multiplyByPoint(n,e,Sde),to.computeActualEllipsoidPosition(t,Sde))};var wde=new se;Or._computeScreenSpacePosition=function(e,t,n,i){let o=R.multiplyByVector(e,se.fromElements(t.x,t.y,t.z,1,wde),wde);return to.worldToWindowCoordinates(n,o,i)};Or.prototype.computeScreenSpacePosition=function(e,t){let n=this._pointPrimitiveCollection;l(t)||(t=new k);let i=n.modelMatrix,o=Or._computeScreenSpacePosition(i,this._actualPosition,e,t);if(l(o))return o.y=e.canvas.clientHeight-o.y,o};Or.getScreenSpaceBoundingBox=function(e,t,n){let i=e.pixelSize,o=i*.5,r=t.x-o,s=t.y-o,a=i,c=i;return l(n)||(n=new Xe),n.x=r,n.y=s,n.width=a,n.height=c,n};Or.prototype.equals=function(e){return this===e||l(e)&&this._id===e._id&&d.equals(this._position,e._position)&&G.equals(this._color,e._color)&&this._pixelSize===e._pixelSize&&this._outlineWidth===e._outlineWidth&&this._show===e._show&&G.equals(this._outlineColor,e._outlineColor)&&Yt.equals(this._scaleByDistance,e._scaleByDistance)&&Yt.equals(this._translucencyByDistance,e._translucencyByDistance)&&Ut.equals(this._distanceDisplayCondition,e._distanceDisplayCondition)&&this._disableDepthTestDistance===e._disableDepthTestDistance&&this._splitDirection===e._splitDirection};Or.prototype._destroy=function(){this._pickId=this._pickId&&this._pickId.destroy(),this._pointPrimitiveCollection=void 0};var ha=Or;var IE=`in vec4 v_color; +in vec4 v_outlineColor; +in float v_innerPercent; +in float v_pixelDistance; +in vec4 v_pickColor; +in float v_splitDirection; + +void main() +{ + if (v_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (v_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; + + // The distance in UV space from this fragment to the center of the point, at most 0.5. + float distanceToCenter = length(gl_PointCoord - vec2(0.5)); + // The max distance stops one pixel shy of the edge to leave space for anti-aliasing. + float maxDistance = max(0.0, 0.5 - v_pixelDistance); + float wholeAlpha = 1.0 - smoothstep(maxDistance, 0.5, distanceToCenter); + float innerAlpha = 1.0 - smoothstep(maxDistance * v_innerPercent, 0.5 * v_innerPercent, distanceToCenter); + + vec4 color = mix(v_outlineColor, v_color, innerAlpha); + color.a *= wholeAlpha; + +// Fully transparent parts of the billboard are not pickable. +#if !defined(OPAQUE) && !defined(TRANSLUCENT) + if (color.a < 0.005) // matches 0/255 and 1/255 + { + discard; + } +#else +// The billboard is rendered twice. The opaque pass discards translucent fragments +// and the translucent pass discards opaque fragments. +#ifdef OPAQUE + if (color.a < 0.995) // matches < 254/255 + { + discard; + } +#else + if (color.a >= 0.995) // matches 254/255 and 255/255 + { + discard; + } +#endif +#endif + + out_FragColor = czm_gammaCorrect(color); + czm_writeLogDepth(); +} +`;var s3=`uniform float u_maxTotalPointSize; + +in vec4 positionHighAndSize; +in vec4 positionLowAndOutline; +in vec4 compressedAttribute0; // color, outlineColor, pick color +in vec4 compressedAttribute1; // show, translucency by distance, some free space +in vec4 scaleByDistance; // near, nearScale, far, farScale +in vec4 distanceDisplayConditionAndDisableDepthAndSplitDirection; // near, far, disableDepthTestDistance, splitDirection + +out vec4 v_color; +out vec4 v_outlineColor; +out float v_innerPercent; +out float v_pixelDistance; +out vec4 v_pickColor; +out float v_splitDirection; + +const float SHIFT_LEFT8 = 256.0; +const float SHIFT_RIGHT8 = 1.0 / 256.0; + +void main() +{ + // Modifying this shader may also require modifications to PointPrimitive._computeScreenSpacePosition + + // unpack attributes + vec3 positionHigh = positionHighAndSize.xyz; + vec3 positionLow = positionLowAndOutline.xyz; + float outlineWidthBothSides = 2.0 * positionLowAndOutline.w; + float totalSize = positionHighAndSize.w + outlineWidthBothSides; + float outlinePercent = outlineWidthBothSides / totalSize; + // Scale in response to browser-zoom. + totalSize *= czm_pixelRatio; + + float temp = compressedAttribute1.x * SHIFT_RIGHT8; + float show = floor(temp); + +#ifdef EYE_DISTANCE_TRANSLUCENCY + vec4 translucencyByDistance; + translucencyByDistance.x = compressedAttribute1.z; + translucencyByDistance.z = compressedAttribute1.w; + + translucencyByDistance.y = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; + + temp = compressedAttribute1.y * SHIFT_RIGHT8; + translucencyByDistance.w = ((temp - floor(temp)) * SHIFT_LEFT8) / 255.0; +#endif + + /////////////////////////////////////////////////////////////////////////// + + vec4 color; + vec4 outlineColor; + vec4 pickColor; + + // compressedAttribute0.z => pickColor.rgb + + temp = compressedAttribute0.z * SHIFT_RIGHT8; + pickColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + pickColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor.r = floor(temp); + + // compressedAttribute0.x => color.rgb + + temp = compressedAttribute0.x * SHIFT_RIGHT8; + color.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + color.g = (temp - floor(temp)) * SHIFT_LEFT8; + color.r = floor(temp); + + // compressedAttribute0.y => outlineColor.rgb + + temp = compressedAttribute0.y * SHIFT_RIGHT8; + outlineColor.b = (temp - floor(temp)) * SHIFT_LEFT8; + temp = floor(temp) * SHIFT_RIGHT8; + outlineColor.g = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor.r = floor(temp); + + // compressedAttribute0.w => color.a, outlineColor.a, pickColor.a + + temp = compressedAttribute0.w * SHIFT_RIGHT8; + pickColor.a = (temp - floor(temp)) * SHIFT_LEFT8; + pickColor = pickColor / 255.0; + + temp = floor(temp) * SHIFT_RIGHT8; + outlineColor.a = (temp - floor(temp)) * SHIFT_LEFT8; + outlineColor /= 255.0; + color.a = floor(temp); + color /= 255.0; + + /////////////////////////////////////////////////////////////////////////// + + vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + vec4 positionEC = czm_modelViewRelativeToEye * p; + + /////////////////////////////////////////////////////////////////////////// + +#if defined(EYE_DISTANCE_SCALING) || defined(EYE_DISTANCE_TRANSLUCENCY) || defined(DISTANCE_DISPLAY_CONDITION) || defined(DISABLE_DEPTH_DISTANCE) + float lengthSq; + if (czm_sceneMode == czm_sceneMode2D) + { + // 2D camera distance is a special case + // treat all billboards as flattened to the z=0.0 plane + lengthSq = czm_eyeHeight2D.y; + } + else + { + lengthSq = dot(positionEC.xyz, positionEC.xyz); + } +#endif + +#ifdef EYE_DISTANCE_SCALING + totalSize *= czm_nearFarScalar(scaleByDistance, lengthSq); +#endif + if (totalSize > 0.0) { + // Add padding for anti-aliasing on both sides. + totalSize += 3.0; + } + + // Clamp to max point size. + totalSize = min(totalSize, u_maxTotalPointSize); + // If size is too small, push vertex behind near plane for clipping. + // Note that context.minimumAliasedPointSize "will be at most 1.0". + if (totalSize < 1.0) + { + positionEC.xyz = vec3(0.0); + totalSize = 1.0; + } + + float translucency = 1.0; +#ifdef EYE_DISTANCE_TRANSLUCENCY + translucency = czm_nearFarScalar(translucencyByDistance, lengthSq); + // push vertex behind near plane for clipping + if (translucency < 0.004) + { + positionEC.xyz = vec3(0.0); + } +#endif + +#ifdef DISTANCE_DISPLAY_CONDITION + float nearSq = distanceDisplayConditionAndDisableDepthAndSplitDirection.x; + float farSq = distanceDisplayConditionAndDisableDepthAndSplitDirection.y; + if (lengthSq < nearSq || lengthSq > farSq) { + // push vertex behind camera to force it to be clipped + positionEC.xyz = vec3(0.0, 0.0, 1.0); + } +#endif + + gl_Position = czm_projection * positionEC; + czm_vertexLogDepth(); + +#ifdef DISABLE_DEPTH_DISTANCE + float disableDepthTestDistance = distanceDisplayConditionAndDisableDepthAndSplitDirection.z; + if (disableDepthTestDistance == 0.0 && czm_minimumDisableDepthTestDistance != 0.0) + { + disableDepthTestDistance = czm_minimumDisableDepthTestDistance; + } + + if (disableDepthTestDistance != 0.0) + { + // Don't try to "multiply both sides" by w. Greater/less-than comparisons won't work for negative values of w. + float zclip = gl_Position.z / gl_Position.w; + bool clipped = (zclip < -1.0 || zclip > 1.0); + if (!clipped && (disableDepthTestDistance < 0.0 || (lengthSq > 0.0 && lengthSq < disableDepthTestDistance))) + { + // Position z on the near plane. + gl_Position.z = -gl_Position.w; +#ifdef LOG_DEPTH + czm_vertexLogDepth(vec4(czm_currentFrustum.x)); +#endif + } + } +#endif + + v_color = color; + v_color.a *= translucency * show; + v_outlineColor = outlineColor; + v_outlineColor.a *= translucency * show; + + v_innerPercent = 1.0 - outlinePercent; + v_pixelDistance = 2.0 / totalSize; + gl_PointSize = totalSize * show; + gl_Position *= show; + + v_pickColor = pickColor; + v_splitDirection = distanceDisplayConditionAndDisableDepthAndSplitDirection.w; +} +`;var EZe=ha.SHOW_INDEX,WY=ha.POSITION_INDEX,Dde=ha.COLOR_INDEX,IZe=ha.OUTLINE_COLOR_INDEX,xZe=ha.OUTLINE_WIDTH_INDEX,bZe=ha.PIXEL_SIZE_INDEX,vde=ha.SCALE_BY_DISTANCE_INDEX,Pde=ha.TRANSLUCENCY_BY_DISTANCE_INDEX,Rde=ha.DISTANCE_DISPLAY_CONDITION_INDEX,TZe=ha.DISABLE_DEPTH_DISTANCE_INDEX,SZe=ha.SPLIT_DIRECTION_INDEX,jY=ha.NUMBER_OF_PROPERTIES,Nc={positionHighAndSize:0,positionLowAndOutline:1,compressedAttribute0:2,compressedAttribute1:3,scaleByDistance:4,distanceDisplayConditionAndDisableDepthAndSplitDirection:5};function id(e){e=e??V.EMPTY_OBJECT,this._sp=void 0,this._spTranslucent=void 0,this._rsOpaque=void 0,this._rsTranslucent=void 0,this._vaf=void 0,this._pointPrimitives=[],this._pointPrimitivesToUpdate=[],this._pointPrimitivesToUpdateIndex=0,this._pointPrimitivesRemoved=!1,this._createVertexArray=!1,this._shaderScaleByDistance=!1,this._compiledShaderScaleByDistance=!1,this._shaderTranslucencyByDistance=!1,this._compiledShaderTranslucencyByDistance=!1,this._shaderDistanceDisplayCondition=!1,this._compiledShaderDistanceDisplayCondition=!1,this._shaderDisableDepthDistance=!1,this._compiledShaderDisableDepthDistance=!1,this._propertiesChanged=new Uint32Array(jY),this._maxPixelSize=1,this._baseVolume=new le,this._baseVolumeWC=new le,this._baseVolume2D=new le,this._boundingVolume=new le,this._boundingVolumeDirty=!1,this._colorCommands=[],this.show=e.show??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=R.clone(R.IDENTITY),this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.blendOption=e.blendOption??Vo.OPAQUE_AND_TRANSLUCENT,this._blendOption=void 0,this._mode=ie.SCENE3D,this._maxTotalPointSize=1,this._buffersUsage=[Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW,Qe.STATIC_DRAW];let t=this;this._uniforms={u_maxTotalPointSize:function(){return t._maxTotalPointSize}}}Object.defineProperties(id.prototype,{length:{get:function(){return YY(this),this._pointPrimitives.length}}});function Mde(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}id.prototype.add=function(e){let t=new ha(e,this);return t._index=this._pointPrimitives.length,this._pointPrimitives.push(t),this._createVertexArray=!0,t};id.prototype.remove=function(e){return this.contains(e)?(this._pointPrimitives[e._index]=null,this._pointPrimitivesRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};id.prototype.removeAll=function(){Mde(this._pointPrimitives),this._pointPrimitives=[],this._pointPrimitivesToUpdate=[],this._pointPrimitivesToUpdateIndex=0,this._pointPrimitivesRemoved=!1,this._createVertexArray=!0};function YY(e){if(e._pointPrimitivesRemoved){e._pointPrimitivesRemoved=!1;let t=[],n=e._pointPrimitives,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];s&&(s._index=r++,t.push(s))}e._pointPrimitives=t}}id.prototype._updatePointPrimitive=function(e,t){e._dirty||(this._pointPrimitivesToUpdate[this._pointPrimitivesToUpdateIndex++]=e),++this._propertiesChanged[t]};id.prototype.contains=function(e){return l(e)&&e._pointPrimitiveCollection===this};id.prototype.get=function(e){return YY(this),this._pointPrimitives[e]};id.prototype.computeNewBuffersUsage=function(){let e=this._buffersUsage,t=!1,n=this._propertiesChanged;for(let i=0;i<jY;++i){let o=n[i]===0?Qe.STATIC_DRAW:Qe.STREAM_DRAW;t=t||e[i]!==o,e[i]=o}return t};function wZe(e,t,n){return new S_(e,[{index:Nc.positionHighAndSize,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[WY]},{index:Nc.positionLowAndShow,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[WY]},{index:Nc.compressedAttribute0,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Dde]},{index:Nc.compressedAttribute1,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Pde]},{index:Nc.scaleByDistance,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[vde]},{index:Nc.distanceDisplayConditionAndDisableDepthAndSplitDirection,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:n[Rde]}],t)}var VY=new ei;function Nde(e,t,n,i){let o=i._index,r=i._getActualPosition();e._mode===ie.SCENE3D&&(le.expand(e._baseVolume,r,e._baseVolume),e._boundingVolumeDirty=!0),ei.fromCartesian(r,VY);let s=i.pixelSize,a=i.outlineWidth;e._maxPixelSize=Math.max(e._maxPixelSize,s+a);let c=n[Nc.positionHighAndSize],u=VY.high;c(o,u.x,u.y,u.z,s);let f=n[Nc.positionLowAndOutline],h=VY.low;f(o,h.x,h.y,h.z,a)}var a3=65536,LD=256;function Lde(e,t,n,i){let o=i._index,r=i.color,s=i.getPickId(t).color,a=i.outlineColor,c=G.floatToByte(r.red),u=G.floatToByte(r.green),f=G.floatToByte(r.blue),h=c*a3+u*LD+f;c=G.floatToByte(a.red),u=G.floatToByte(a.green),f=G.floatToByte(a.blue);let A=c*a3+u*LD+f;c=G.floatToByte(s.red),u=G.floatToByte(s.green),f=G.floatToByte(s.blue);let g=c*a3+u*LD+f,m=G.floatToByte(r.alpha)*a3+G.floatToByte(a.alpha)*LD+G.floatToByte(s.alpha),_=n[Nc.compressedAttribute0];_(o,h,A,g,m)}function Ode(e,t,n,i){let o=i._index,r=0,s=1,a=1,c=1,u=i.translucencyByDistance;l(u)&&(r=u.near,s=u.nearValue,a=u.far,c=u.farValue,(s!==1||c!==1)&&(e._shaderTranslucencyByDistance=!0));let f=i.show&&i.clusterShow;i.color.alpha===0&&i.outlineColor.alpha===0&&(f=!1),s=D.clamp(s,0,1),s=s===1?255:s*255|0;let h=(f?1:0)*LD+s;c=D.clamp(c,0,1),c=c===1?255:c*255|0;let A=c,g=n[Nc.compressedAttribute1];g(o,h,A,r,a)}function Fde(e,t,n,i){let o=i._index,r=n[Nc.scaleByDistance],s=0,a=1,c=1,u=1,f=i.scaleByDistance;l(f)&&(s=f.near,a=f.nearValue,c=f.far,u=f.farValue,(a!==1||u!==1)&&(e._shaderScaleByDistance=!0)),r(o,s,a,c,u)}function Qde(e,t,n,i){let o=i._index,r=n[Nc.distanceDisplayConditionAndDisableDepthAndSplitDirection],s=0,a=Number.MAX_VALUE,c=i.distanceDisplayCondition;l(c)&&(s=c.near,a=c.far,s*=s,a*=a,e._shaderDistanceDisplayCondition=!0);let u=i.disableDepthTestDistance;u*=u,u>0&&(e._shaderDisableDepthDistance=!0,u===Number.POSITIVE_INFINITY&&(u=-1));let f=0,h=i.splitDirection;l(h)&&(f=h),r(o,s,a,u,f)}function BZe(e,t,n,i){Nde(e,t,n,i),Lde(e,t,n,i),Ode(e,t,n,i),Fde(e,t,n,i),Qde(e,t,n,i)}function HY(e,t,n,i,o,r){let s;i.mode===ie.SCENE3D?(s=e._baseVolume,e._boundingVolumeDirty=!0):s=e._baseVolume2D;let a=[];for(let c=0;c<n;++c){let u=t[c],f=u.position,h=ha._computeActualPosition(f,i,o);l(h)&&(u._setActualPosition(h),r?a.push(h):le.expand(s,h,s))}r&&le.fromPoints(a,s)}function DZe(e,t){let n=t.mode,i=e._pointPrimitives,o=e._pointPrimitivesToUpdate,r=e._modelMatrix;e._createVertexArray||e._mode!==n||n!==ie.SCENE3D&&!R.equals(r,e.modelMatrix)?(e._mode=n,R.clone(e.modelMatrix,r),e._createVertexArray=!0,(n===ie.SCENE3D||n===ie.SCENE2D||n===ie.COLUMBUS_VIEW)&&HY(e,i,i.length,t,r,!0)):n===ie.MORPHING?HY(e,i,i.length,t,r,!0):(n===ie.SCENE2D||n===ie.COLUMBUS_VIEW)&&HY(e,o,e._pointPrimitivesToUpdateIndex,t,r,!1)}function vZe(e,t,n){let o=t.camera.getPixelSize(n,t.context.drawingBufferWidth,t.context.drawingBufferHeight)*e._maxPixelSize;n.radius+=o}var PZe=[];id.prototype.update=function(e){if(YY(this),!this.show)return;this._maxTotalPointSize=qt.maximumAliasedPointSize,DZe(this,e);let n=this._pointPrimitives.length,i=this._pointPrimitivesToUpdate,o=this._pointPrimitivesToUpdateIndex,r=this._propertiesChanged,s=this._createVertexArray,a,c=e.context,u=e.passes,f=u.pick;if(s||!f&&this.computeNewBuffersUsage()){this._createVertexArray=!1;for(let S=0;S<jY;++S)r[S]=0;if(this._vaf=this._vaf&&this._vaf.destroy(),n>0){this._vaf=wZe(c,n,this._buffersUsage),a=this._vaf.writers;for(let S=0;S<n;++S){let B=this._pointPrimitives[S];B._dirty=!1,BZe(this,c,a,B)}this._vaf.commit()}this._pointPrimitivesToUpdateIndex=0}else if(o>0){let S=PZe;S.length=0,(r[WY]||r[xZe]||r[bZe])&&S.push(Nde),(r[Dde]||r[IZe])&&S.push(Lde),(r[EZe]||r[Pde])&&S.push(Ode),r[vde]&&S.push(Fde),(r[Rde]||r[TZe]||r[SZe])&&S.push(Qde);let B=S.length;if(a=this._vaf.writers,o/n>.1){for(let v=0;v<o;++v){let P=i[v];P._dirty=!1;for(let N=0;N<B;++N)S[N](this,c,a,P)}this._vaf.commit()}else{for(let v=0;v<o;++v){let P=i[v];P._dirty=!1;for(let N=0;N<B;++N)S[N](this,c,a,P);this._vaf.subCommit(P._index,1)}this._vaf.endSubCommits()}this._pointPrimitivesToUpdateIndex=0}if(o>n*1.5&&(i.length=n),!l(this._vaf)||!l(this._vaf.va))return;this._boundingVolumeDirty&&(this._boundingVolumeDirty=!1,le.transform(this._baseVolume,this.modelMatrix,this._baseVolumeWC));let h,A=R.IDENTITY;e.mode===ie.SCENE3D?(A=this.modelMatrix,h=le.clone(this._baseVolumeWC,this._boundingVolume)):h=le.clone(this._baseVolume2D,this._boundingVolume),vZe(this,e,h);let g=this._blendOption!==this.blendOption;this._blendOption=this.blendOption,g&&(this._blendOption===Vo.OPAQUE||this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT?this._rsOpaque=Ue.fromCache({depthTest:{enabled:!0,func:ee.LEQUAL},depthMask:!0}):this._rsOpaque=void 0,this._blendOption===Vo.TRANSLUCENT||this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT?this._rsTranslucent=Ue.fromCache({depthTest:{enabled:!0,func:ee.LEQUAL},depthMask:!1,blending:pn.ALPHA_BLEND}):this._rsTranslucent=void 0),this._shaderDisableDepthDistance=this._shaderDisableDepthDistance||e.minimumDisableDepthTestDistance!==0;let m,_;(g||this._shaderScaleByDistance&&!this._compiledShaderScaleByDistance||this._shaderTranslucencyByDistance&&!this._compiledShaderTranslucencyByDistance||this._shaderDistanceDisplayCondition&&!this._compiledShaderDistanceDisplayCondition||this._shaderDisableDepthDistance!==this._compiledShaderDisableDepthDistance)&&(m=new We({sources:[s3]}),this._shaderScaleByDistance&&m.defines.push("EYE_DISTANCE_SCALING"),this._shaderTranslucencyByDistance&&m.defines.push("EYE_DISTANCE_TRANSLUCENCY"),this._shaderDistanceDisplayCondition&&m.defines.push("DISTANCE_DISPLAY_CONDITION"),this._shaderDisableDepthDistance&&m.defines.push("DISABLE_DEPTH_DISTANCE"),this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT&&(_=new We({defines:["OPAQUE"],sources:[IE]}),this._sp=ln.replaceCache({context:c,shaderProgram:this._sp,vertexShaderSource:m,fragmentShaderSource:_,attributeLocations:Nc}),_=new We({defines:["TRANSLUCENT"],sources:[IE]}),this._spTranslucent=ln.replaceCache({context:c,shaderProgram:this._spTranslucent,vertexShaderSource:m,fragmentShaderSource:_,attributeLocations:Nc})),this._blendOption===Vo.OPAQUE&&(_=new We({sources:[IE]}),this._sp=ln.replaceCache({context:c,shaderProgram:this._sp,vertexShaderSource:m,fragmentShaderSource:_,attributeLocations:Nc})),this._blendOption===Vo.TRANSLUCENT&&(_=new We({sources:[IE]}),this._spTranslucent=ln.replaceCache({context:c,shaderProgram:this._spTranslucent,vertexShaderSource:m,fragmentShaderSource:_,attributeLocations:Nc})),this._compiledShaderScaleByDistance=this._shaderScaleByDistance,this._compiledShaderTranslucencyByDistance=this._shaderTranslucencyByDistance,this._compiledShaderDistanceDisplayCondition=this._shaderDistanceDisplayCondition,this._compiledShaderDisableDepthDistance=this._shaderDisableDepthDistance);let y,C,E,I,b=e.commandList;if(u.render||f){let S=this._colorCommands,B=this._blendOption===Vo.OPAQUE,v=this._blendOption===Vo.OPAQUE_AND_TRANSLUCENT;y=this._vaf.va,C=y.length,S.length=C;let P=v?C*2:C;for(I=0;I<P;++I){let N=B||v&&I%2===0;E=S[I],l(E)||(E=S[I]=new nt),E.primitiveType=Me.POINTS,E.pass=N||!v?Be.OPAQUE:Be.TRANSLUCENT,E.owner=this;let L=v?Math.floor(I/2):I;E.boundingVolume=h,E.modelMatrix=A,E.shaderProgram=N?this._sp:this._spTranslucent,E.uniformMap=this._uniforms,E.vertexArray=y[L].va,E.renderState=N?this._rsOpaque:this._rsTranslucent,E.debugShowBoundingVolume=this.debugShowBoundingVolume,E.pickId="v_pickColor",b.push(E)}}};id.prototype.isDestroyed=function(){return!1};id.prototype.destroy=function(){return this._sp=this._sp&&this._sp.destroy(),this._spTranslucent=this._spTranslucent&&this._spTranslucent.destroy(),this._spPick=this._spPick&&this._spPick.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),Mde(this._pointPrimitives),ue(this)};var OD=id;var kde=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],qY=1,FD=8,kD=class e{static from(t){if(!(t instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");let[n,i]=new Uint8Array(t,0,2);if(n!==219)throw new Error("Data does not appear to be in a KDBush format.");let o=i>>4;if(o!==qY)throw new Error(`Got v${o} data when expected v${qY}.`);let r=kde[i&15];if(!r)throw new Error("Unrecognized array type.");let[s]=new Uint16Array(t,2,1),[a]=new Uint32Array(t,4,1);return new e(a,s,r,t)}constructor(t,n=64,i=Float64Array,o){if(isNaN(t)||t<0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+n,2),65535),this.ArrayType=i,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;let r=kde.indexOf(this.ArrayType),s=t*2*this.ArrayType.BYTES_PER_ELEMENT,a=t*this.IndexArrayType.BYTES_PER_ELEMENT,c=(8-a%8)%8;if(r<0)throw new Error(`Unexpected typed array class: ${i}.`);o&&o instanceof ArrayBuffer?(this.data=o,this.ids=new this.IndexArrayType(this.data,FD,t),this.coords=new this.ArrayType(this.data,FD+a+c,t*2),this._pos=t*2,this._finished=!0):(this.data=new ArrayBuffer(FD+s+a+c),this.ids=new this.IndexArrayType(this.data,FD,t),this.coords=new this.ArrayType(this.data,FD+a+c,t*2),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,(qY<<4)+r]),new Uint16Array(this.data,2,1)[0]=n,new Uint32Array(this.data,4,1)[0]=t)}add(t,n){let i=this._pos>>1;return this.ids[i]=i,this.coords[this._pos++]=t,this.coords[this._pos++]=n,i}finish(){let t=this._pos>>1;if(t!==this.numItems)throw new Error(`Added ${t} items when expected ${this.numItems}.`);return XY(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(t,n,i,o){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:r,coords:s,nodeSize:a}=this,c=[0,r.length-1,0],u=[];for(;c.length;){let f=c.pop()||0,h=c.pop()||0,A=c.pop()||0;if(h-A<=a){for(let y=A;y<=h;y++){let C=s[2*y],E=s[2*y+1];C>=t&&C<=i&&E>=n&&E<=o&&u.push(r[y])}continue}let g=A+h>>1,m=s[2*g],_=s[2*g+1];m>=t&&m<=i&&_>=n&&_<=o&&u.push(r[g]),(f===0?t<=m:n<=_)&&(c.push(A),c.push(g-1),c.push(1-f)),(f===0?i>=m:o>=_)&&(c.push(g+1),c.push(h),c.push(1-f))}return u}within(t,n,i){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");let{ids:o,coords:r,nodeSize:s}=this,a=[0,o.length-1,0],c=[],u=i*i;for(;a.length;){let f=a.pop()||0,h=a.pop()||0,A=a.pop()||0;if(h-A<=s){for(let y=A;y<=h;y++)Ude(r[2*y],r[2*y+1],t,n)<=u&&c.push(o[y]);continue}let g=A+h>>1,m=r[2*g],_=r[2*g+1];Ude(m,_,t,n)<=u&&c.push(o[g]),(f===0?t-i<=m:n-i<=_)&&(a.push(A),a.push(g-1),a.push(1-f)),(f===0?t+i>=m:n+i>=_)&&(a.push(g+1),a.push(h),a.push(1-f))}return c}};function XY(e,t,n,i,o,r){if(o-i<=n)return;let s=i+o>>1;Gde(e,t,s,i,o,r),XY(e,t,n,i,s-1,1-r),XY(e,t,n,s+1,o,1-r)}function Gde(e,t,n,i,o,r){for(;o>i;){if(o-i>600){let u=o-i+1,f=n-i+1,h=Math.log(u),A=.5*Math.exp(2*h/3),g=.5*Math.sqrt(h*A*(u-A)/u)*(f-u/2<0?-1:1),m=Math.max(i,Math.floor(n-f*A/u+g)),_=Math.min(o,Math.floor(n+(u-f)*A/u+g));Gde(e,t,n,m,_,r)}let s=t[2*n+r],a=i,c=o;for(QD(e,t,i,n),t[2*o+r]>s&&QD(e,t,i,o);a<c;){for(QD(e,t,a,c),a++,c--;t[2*a+r]<s;)a++;for(;t[2*c+r]>s;)c--}t[2*i+r]===s?QD(e,t,i,c):(c++,QD(e,t,c,o)),c<=n&&(i=c+1),n<=c&&(o=c-1)}}function QD(e,t,n,i){KY(e,n,i),KY(t,2*n,2*i),KY(t,2*n+1,2*i+1)}function KY(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}function Ude(e,t,n,i){let o=e-n,r=t-i;return o*o+r*r}function uh(e){e=e??V.EMPTY_OBJECT,this._enabled=e.enabled??!1,this._pixelRange=e.pixelRange??80,this._minimumClusterSize=e.minimumClusterSize??2,this._clusterBillboards=e.clusterBillboards??!0,this._clusterLabels=e.clusterLabels??!0,this._clusterPoints=e.clusterPoints??!0,this._labelCollection=void 0,this._billboardCollection=void 0,this._pointCollection=void 0,this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity={},this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1,this._clusterDirty=!1,this._cluster=void 0,this._removeEventListener=void 0,this._clusterEvent=new _e,this.show=e.show??!0}function zde(e,t){e.x-=t,e.y-=t,e.width+=t*2,e.height+=t*2}var RZe=new Xe;function Vde(e,t,n,i,o){if(l(e._labelCollection)&&i._clusterLabels?o=uE.getScreenSpaceBoundingBox(e,t,o):l(e._billboardCollection)&&i._clusterBillboards?o=xo.getScreenSpaceBoundingBox(e,t,o):l(e._pointPrimitiveCollection)&&i._clusterPoints&&(o=ha.getScreenSpaceBoundingBox(e,t,o)),zde(o,n),i._clusterLabels&&!l(e._labelCollection)&&l(e.id)&&Wde(i,e.id.id)&&l(e.id._label)){let r=i._collectionIndicesByEntity[e.id.id].labelIndex,s=i._labelCollection.get(r),a=uE.getScreenSpaceBoundingBox(s,t,RZe);zde(a,n),o=Xe.union(o,a,o)}return o}function MZe(e,t){if(e.clusterShow=!0,!l(e._labelCollection)&&l(e.id)&&Wde(t,e.id.id)&&l(e.id._label)){let n=t._collectionIndicesByEntity[e.id.id].labelIndex,i=t._labelCollection.get(n);i.clusterShow=!0}}function Hde(e,t,n,i){let o={billboard:i._clusterBillboardCollection.add(),label:i._clusterLabelCollection.add(),point:i._clusterPointCollection.add()};o.billboard.show=!1,o.point.show=!1,o.label.show=!0,o.label.text=t.toLocaleString(),o.label.id=n,o.billboard.position=o.label.position=o.point.position=e,i._clusterEvent.raiseEvent(n,o)}function Wde(e,t){return l(e)&&l(e._collectionIndicesByEntity[t])&&l(e._collectionIndicesByEntity[t].labelIndex)}function JY(e,t,n,i,o){if(!l(e))return;let r=e.length;for(let s=0;s<r;++s){let a=e.get(s);if(a.clusterShow=!1,!a.show||o._scene.mode===ie.SCENE3D&&!i.isPointVisible(a.position))continue;let c=o._clusterLabels&&l(a._labelCollection),u=o._clusterBillboards&&l(a.id._billboard),f=o._clusterPoints&&l(a.id._point);if(c&&(f||u))continue;let h=a.computeScreenSpacePosition(n);l(h)&&t.push({index:s,collection:e,clustered:!1,coord:h})}}var NZe=new Xe,LZe=new Xe,OZe=new Xe;function FZe(e){return function(t){if(l(t)&&t<.05||!e.enabled)return;let n=e._scene,i=e._labelCollection,o=e._billboardCollection,r=e._pointCollection;if(!l(i)&&!l(o)&&!l(r)||!e._clusterBillboards&&!e._clusterLabels&&!e._clusterPoints)return;let s=e._clusterLabelCollection,a=e._clusterBillboardCollection,c=e._clusterPointCollection;l(s)?s.removeAll():s=e._clusterLabelCollection=new Ap({scene:n}),l(a)?a.removeAll():a=e._clusterBillboardCollection=new jf({scene:n}),l(c)?c.removeAll():c=e._clusterPointCollection=new OD;let u=e._pixelRange,f=e._minimumClusterSize,h=e._previousClusters,A=[],g=e._previousHeight,m=n.camera.positionCartographic.height,_=n.ellipsoid,y=n.camera.positionWC,C=new H_(_,y),E=[];e._clusterLabels&&JY(i,E,n,C,e),e._clusterBillboards&&JY(o,E,n,C,e),e._clusterPoints&&JY(r,E,n,C,e);let I,b,S,B,v,P,N,L,p,x,T,w;if(E.length>0){let M=new kD(E.length,64,Uint32Array);for(let O=0;O<E.length;++O)M.add(E[O].coord.x,E[O].coord.y);if(M.finish(),m<g)for(S=h.length,I=0;I<S;++I){let O=h[I];if(!C.isPointVisible(O.position))continue;let U=xo._computeScreenSpacePosition(R.IDENTITY,O.position,d.ZERO,k.ZERO,n);if(!l(U))continue;let Q=1-m/g,z=O.width=O.width*Q,F=O.height=O.height*Q;z=Math.max(z,O.minimumWidth),F=Math.max(F,O.minimumHeight);let H=U.x-z*.5,W=U.y-F*.5,Z=U.x+z,Y=U.y+F;for(v=M.range(H,W,Z,Y),P=v.length,x=0,p=[],b=0;b<P;++b)N=v[b],L=E[N],L.clustered||(++x,T=L.collection,w=L.index,p.push(T.get(w).id));if(x>=f)for(Hde(O.position,x,p,e),A.push(O),b=0;b<P;++b)E[v[b]].clustered=!0}for(S=E.length,I=0;I<S;++I){let O=E[I];if(O.clustered)continue;O.clustered=!0,T=O.collection,w=O.index;let U=T.get(w);B=Vde(U,O.coord,u,e,NZe);let Q=Xe.clone(B,LZe);v=M.range(B.x,B.y,B.x+B.width,B.y+B.height),P=v.length;let z=d.clone(U.position);for(x=1,p=[U.id],b=0;b<P;++b)if(N=v[b],L=E[N],!L.clustered){let F=L.collection.get(L.index),H=Vde(F,L.coord,u,e,OZe);d.add(F.position,z,z),Xe.union(Q,H,Q),++x,p.push(F.id)}if(x>=f){let F=d.multiplyByScalar(z,1/x,z);for(Hde(F,x,p,e),A.push({position:F,width:Q.width,height:Q.height,minimumWidth:B.width,minimumHeight:B.height}),b=0;b<P;++b)E[v[b]].clustered=!0}else MZe(U,e)}}s.length===0&&(s.destroy(),e._clusterLabelCollection=void 0),a.length===0&&(a.destroy(),e._clusterBillboardCollection=void 0),c.length===0&&(c.destroy(),e._clusterPointCollection=void 0),e._previousClusters=A,e._previousHeight=m}}uh.prototype._initialize=function(e){this._scene=e;let t=FZe(this);this._cluster=t,this._removeEventListener=e.camera.changed.addEventListener(t)};Object.defineProperties(uh.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this._enabledDirty=e!==this._enabled,this._enabled=e}},pixelRange:{get:function(){return this._pixelRange},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._pixelRange,this._pixelRange=e}},minimumClusterSize:{get:function(){return this._minimumClusterSize},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._minimumClusterSize,this._minimumClusterSize=e}},clusterEvent:{get:function(){return this._clusterEvent}},clusterBillboards:{get:function(){return this._clusterBillboards},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterBillboards,this._clusterBillboards=e}},clusterLabels:{get:function(){return this._clusterLabels},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterLabels,this._clusterLabels=e}},clusterPoints:{get:function(){return this._clusterPoints},set:function(e){this._clusterDirty=this._clusterDirty||e!==this._clusterPoints,this._clusterPoints=e}},ready:{get:function(){return!this._enabledDirty&&!this._clusterDirty&&(!l(this._billboardCollection)||this._billboardCollection.ready)&&(!l(this._labelCollection)||this._labelCollection.ready)}}});function $Y(e,t,n,i){return function(o){let r=this[e];l(this._collectionIndicesByEntity)||(this._collectionIndicesByEntity={});let s=this._collectionIndicesByEntity[o.id];if(l(s)||(s=this._collectionIndicesByEntity[o.id]={billboardIndex:void 0,labelIndex:void 0,pointIndex:void 0}),l(r)&&l(s[i]))return r.get(s[i]);l(r)||(r=this[e]=new t({scene:this._scene}));let a,c,u=this[n];u.length>0?(a=u.shift(),c=r.get(a)):(c=r.add(),a=r.length-1),s[i]=a;let f=this;return Promise.resolve().then(function(){f._clusterDirty=!0}),c}}function eq(e,t){let n=e._collectionIndicesByEntity[t];!l(n.billboardIndex)&&!l(n.labelIndex)&&!l(n.pointIndex)&&delete e._collectionIndicesByEntity[t]}uh.prototype.getLabel=$Y("_labelCollection",Ap,"_unusedLabelIndices","labelIndex");uh.prototype.removeLabel=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._labelCollection)||!l(t)||!l(t.labelIndex))return;let n=t.labelIndex;t.labelIndex=void 0,eq(this,e.id);let i=this._labelCollection.get(n);i.show=!1,i.text="",i.id=void 0,this._unusedLabelIndices.push(n),this._clusterDirty=!0};uh.prototype.getBillboard=$Y("_billboardCollection",jf,"_unusedBillboardIndices","billboardIndex");uh.prototype.removeBillboard=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._billboardCollection)||!l(t)||!l(t.billboardIndex))return;let n=t.billboardIndex;t.billboardIndex=void 0,eq(this,e.id);let i=this._billboardCollection.get(n);i.id=void 0,i.show=!1,i.image=void 0,this._unusedBillboardIndices.push(n),this._clusterDirty=!0};uh.prototype.getPoint=$Y("_pointCollection",OD,"_unusedPointIndices","pointIndex");uh.prototype.removePoint=function(e){let t=this._collectionIndicesByEntity&&this._collectionIndicesByEntity[e.id];if(!l(this._pointCollection)||!l(t)||!l(t.pointIndex))return;let n=t.pointIndex;t.pointIndex=void 0,eq(this,e.id);let i=this._pointCollection.get(n);i.show=!1,i.id=void 0,this._unusedPointIndices.push(n),this._clusterDirty=!0};function ZY(e){if(!l(e))return;let t=e.length;for(let n=0;n<t;++n)e.get(n).clusterShow=!0}function QZe(e){e.enabled||(l(e._clusterLabelCollection)&&e._clusterLabelCollection.destroy(),l(e._clusterBillboardCollection)&&e._clusterBillboardCollection.destroy(),l(e._clusterPointCollection)&&e._clusterPointCollection.destroy(),e._clusterLabelCollection=void 0,e._clusterBillboardCollection=void 0,e._clusterPointCollection=void 0,ZY(e._labelCollection),ZY(e._billboardCollection),ZY(e._pointCollection))}uh.prototype.update=function(e){if(!this.show)return;let t,n=this._labelCollection;l(n)&&n.length>0&&!n.ready&&(t=e.commandList,e.commandList=[],n.update(e),e.commandList=t);let i=this._billboardCollection;l(i)&&i.length>0&&!i.ready&&(t=e.commandList,e.commandList=[],i.update(e),e.commandList=t),this._enabledDirty&&(this._enabledDirty=!1,QZe(this),this._clusterDirty=!0),this._clusterDirty&&(this._cluster(),this._clusterDirty=l(n)&&!n.ready||l(i)&&!i.ready),l(this._clusterLabelCollection)&&this._clusterLabelCollection.update(e),l(this._clusterBillboardCollection)&&this._clusterBillboardCollection.update(e),l(this._clusterPointCollection)&&this._clusterPointCollection.update(e),l(n)&&n.update(e),l(i)&&i.update(e),l(this._pointCollection)&&this._pointCollection.update(e)};uh.prototype.destroy=function(){l(this._removeEventListener)&&(this._removeEventListener(),this._removeEventListener=void 0),this._labelCollection=this._labelCollection&&this._labelCollection.destroy(),this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),this._pointCollection=this._pointCollection&&this._pointCollection.destroy(),this._clusterLabelCollection=this._clusterLabelCollection&&this._clusterLabelCollection.destroy(),this._clusterBillboardCollection=this._clusterBillboardCollection&&this._clusterBillboardCollection.destroy(),this._clusterPointCollection=this._clusterPointCollection&&this._clusterPointCollection.destroy(),this._labelCollection=void 0,this._billboardCollection=void 0,this._pointCollection=void 0,this._clusterBillboardCollection=void 0,this._clusterLabelCollection=void 0,this._clusterPointCollection=void 0,this._collectionIndicesByEntity=void 0,this._unusedLabelIndices=[],this._unusedBillboardIndices=[],this._unusedPointIndices=[],this._previousClusters=[],this._previousHeight=void 0,this._enabledDirty=!1,this._pixelRangeDirty=!1,this._minimumClusterSizeDirty=!1};var od=uh;function tq(e){this._name=e,this._clock=void 0,this._changed=new _e,this._error=new _e,this._isLoading=!1,this._loading=new _e,this._entityCollection=new Oa(this),this._entityCluster=new od}Object.defineProperties(tq.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{get:function(){return this._clock},set:function(e){this._clock!==e&&(this._clock=e,this._changed.raiseEvent(this))}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading},set:function(e){ms.setLoading(this,e)}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}}});tq.prototype.update=function(e){return!0};var c3=tq;var jde={};jde.computePositions=function(e,t,n,i,o){let r=e*.5,s=-r,a=i+i,c=o?2*a:a,u=new Float64Array(c*3),f,h=0,A=0,g=o?a*3:0,m=o?(a+i)*3:i*3;for(f=0;f<i;f++){let _=f/i*D.TWO_PI,y=Math.cos(_),C=Math.sin(_),E=y*n,I=C*n,b=y*t,S=C*t;u[A+g]=E,u[A+g+1]=I,u[A+g+2]=s,u[A+m]=b,u[A+m+1]=S,u[A+m+2]=r,A+=3,o&&(u[h++]=E,u[h++]=I,u[h++]=s,u[h++]=b,u[h++]=S,u[h++]=r)}return u};var Eb=jde;var nq=new k,kZe=new d,UZe=new d,GZe=new d,zZe=new d;function vp(e){e=e??V.EMPTY_OBJECT;let t=e.length,n=e.topRadius,i=e.bottomRadius,o=e.vertexFormat??Pe.DEFAULT,r=e.slices??128;this._length=t,this._topRadius=n,this._bottomRadius=i,this._vertexFormat=Pe.clone(o),this._slices=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createCylinderGeometry"}vp.packedLength=Pe.packedLength+5;vp.pack=function(e,t,n){return n=n??0,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._length,t[n++]=e._topRadius,t[n++]=e._bottomRadius,t[n++]=e._slices,t[n]=e._offsetAttribute??-1,t};var Yde=new Pe,Ib={vertexFormat:Yde,length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,offsetAttribute:void 0};vp.unpack=function(e,t,n){t=t??0;let i=Pe.unpack(e,t,Yde);t+=Pe.packedLength;let o=e[t++],r=e[t++],s=e[t++],a=e[t++],c=e[t];return l(n)?(n._vertexFormat=Pe.clone(i,n._vertexFormat),n._length=o,n._topRadius=r,n._bottomRadius=s,n._slices=a,n._offsetAttribute=c===-1?void 0:c,n):(Ib.length=o,Ib.topRadius=r,Ib.bottomRadius=s,Ib.slices=a,Ib.offsetAttribute=c===-1?void 0:c,new vp(Ib))};vp.createGeometry=function(e){let t=e._length,n=e._topRadius,i=e._bottomRadius,o=e._vertexFormat,r=e._slices;if(t<=0||n<0||i<0||n===0&&i===0)return;let s=r+r,a=r+s,c=s+s,u=Eb.computePositions(t,n,i,r,!0),f=o.st?new Float32Array(c*2):void 0,h=o.normal?new Float32Array(c*3):void 0,A=o.tangent?new Float32Array(c*3):void 0,g=o.bitangent?new Float32Array(c*3):void 0,m,_=o.normal||o.tangent||o.bitangent;if(_){let v=o.tangent||o.bitangent,P=0,N=0,L=0,p=Math.atan2(i-n,t),x=kZe;x.z=Math.sin(p);let T=Math.cos(p),w=GZe,M=UZe;for(m=0;m<r;m++){let O=m/r*D.TWO_PI,U=T*Math.cos(O),Q=T*Math.sin(O);_&&(x.x=U,x.y=Q,v&&(w=d.normalize(d.cross(d.UNIT_Z,x,w),w)),o.normal&&(h[P++]=x.x,h[P++]=x.y,h[P++]=x.z,h[P++]=x.x,h[P++]=x.y,h[P++]=x.z),o.tangent&&(A[N++]=w.x,A[N++]=w.y,A[N++]=w.z,A[N++]=w.x,A[N++]=w.y,A[N++]=w.z),o.bitangent&&(M=d.normalize(d.cross(x,w,M),M),g[L++]=M.x,g[L++]=M.y,g[L++]=M.z,g[L++]=M.x,g[L++]=M.y,g[L++]=M.z))}for(m=0;m<r;m++)o.normal&&(h[P++]=0,h[P++]=0,h[P++]=-1),o.tangent&&(A[N++]=1,A[N++]=0,A[N++]=0),o.bitangent&&(g[L++]=0,g[L++]=-1,g[L++]=0);for(m=0;m<r;m++)o.normal&&(h[P++]=0,h[P++]=0,h[P++]=1),o.tangent&&(A[N++]=1,A[N++]=0,A[N++]=0),o.bitangent&&(g[L++]=0,g[L++]=1,g[L++]=0)}let y=12*r-12,C=Fe.createTypedArray(c,y),E=0,I=0;for(m=0;m<r-1;m++)C[E++]=I,C[E++]=I+2,C[E++]=I+3,C[E++]=I,C[E++]=I+3,C[E++]=I+1,I+=2;for(C[E++]=s-2,C[E++]=0,C[E++]=1,C[E++]=s-2,C[E++]=1,C[E++]=s-1,m=1;m<r-1;m++)C[E++]=s+m+1,C[E++]=s+m,C[E++]=s;for(m=1;m<r-1;m++)C[E++]=a,C[E++]=a+m,C[E++]=a+m+1;let b=0;if(o.st){let v=Math.max(n,i);for(m=0;m<c;m++){let P=d.fromArray(u,m*3,zZe);f[b++]=(P.x+v)/(2*v),f[b++]=(P.y+v)/(2*v)}}let S=new En;o.position&&(S.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:u})),o.normal&&(S.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:h})),o.tangent&&(S.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:A})),o.bitangent&&(S.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g})),o.st&&(S.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:f})),nq.x=t*.5,nq.y=Math.max(i,n);let B=new le(d.ZERO,k.magnitude(nq));if(l(e._offsetAttribute)){t=u.length;let v=e._offsetAttribute===hn.NONE?0:1,P=new Uint8Array(t/3).fill(v);S.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:P})}return new ht({attributes:S,indices:C,primitiveType:Me.TRIANGLES,boundingSphere:B,offsetAttribute:e._offsetAttribute})};var iq;vp.getUnitCylinder=function(){return l(iq)||(iq=vp.createGeometry(new vp({topRadius:1,bottomRadius:1,length:1,vertexFormat:Pe.POSITION_ONLY}))),iq};var l3=vp;var oq=new k;function xb(e){e=e??V.EMPTY_OBJECT;let t=e.length,n=e.topRadius,i=e.bottomRadius,o=e.slices??128,r=Math.max(e.numberOfVerticalLines??16,0);this._length=t,this._topRadius=n,this._bottomRadius=i,this._slices=o,this._numberOfVerticalLines=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createCylinderOutlineGeometry"}xb.packedLength=6;xb.pack=function(e,t,n){return n=n??0,t[n++]=e._length,t[n++]=e._topRadius,t[n++]=e._bottomRadius,t[n++]=e._slices,t[n++]=e._numberOfVerticalLines,t[n]=e._offsetAttribute??-1,t};var xE={length:void 0,topRadius:void 0,bottomRadius:void 0,slices:void 0,numberOfVerticalLines:void 0,offsetAttribute:void 0};xb.unpack=function(e,t,n){t=t??0;let i=e[t++],o=e[t++],r=e[t++],s=e[t++],a=e[t++],c=e[t];return l(n)?(n._length=i,n._topRadius=o,n._bottomRadius=r,n._slices=s,n._numberOfVerticalLines=a,n._offsetAttribute=c===-1?void 0:c,n):(xE.length=i,xE.topRadius=o,xE.bottomRadius=r,xE.slices=s,xE.numberOfVerticalLines=a,xE.offsetAttribute=c===-1?void 0:c,new xb(xE))};xb.createGeometry=function(e){let t=e._length,n=e._topRadius,i=e._bottomRadius,o=e._slices,r=e._numberOfVerticalLines;if(t<=0||n<0||i<0||n===0&&i===0)return;let s=o*2,a=Eb.computePositions(t,n,i,o,!1),c=o*2,u;if(r>0){let _=Math.min(r,o);u=Math.round(o/_),c+=_}let f=Fe.createTypedArray(s,c*2),h=0,A;for(A=0;A<o-1;A++)f[h++]=A,f[h++]=A+1,f[h++]=A+o,f[h++]=A+1+o;if(f[h++]=o-1,f[h++]=0,f[h++]=o+o-1,f[h++]=o,r>0)for(A=0;A<o;A+=u)f[h++]=A,f[h++]=A+o;let g=new En;g.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:a}),oq.x=t*.5,oq.y=Math.max(i,n);let m=new le(d.ZERO,k.magnitude(oq));if(l(e._offsetAttribute)){t=a.length;let _=e._offsetAttribute===hn.NONE?0:1,y=new Uint8Array(t/3).fill(_);g.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:y})}return new ht({attributes:g,indices:f,primitiveType:Me.LINES,boundingSphere:m,offsetAttribute:e._offsetAttribute})};var u3=xb;var qde=d.ZERO,Kde=new d,VZe=new d,Xde=new G;function HZe(e){this.id=e,this.vertexFormat=void 0,this.length=void 0,this.topRadius=void 0,this.bottomRadius=void 0,this.slices=void 0,this.numberOfVerticalLines=void 0,this.offsetAttribute=void 0}function Fu(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new HZe(e),geometryPropertyName:"cylinder",observedPropertyNames:["availability","position","orientation","cylinder"]}),this._onEntityPropertyChanged(e,"cylinder",e.cylinder,void 0)}l(Object.create)&&(Fu.prototype=Object.create(Ci.prototype),Fu.prototype.constructor=Fu);Object.defineProperties(Fu.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});Fu.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=Kn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r,color:void 0,offset:void 0};if(this._materialProperty instanceof Jt){let a;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,Xde)),l(a)||(a=G.WHITE),s.color=en.fromColor(a)}return l(this._options.offsetAttribute)&&(s.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,qde,Kde))),new Rt({id:t,geometry:new l3(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.cylinder.heightReference,this._options.length*.5,this._scene.ellipsoid),attributes:s})};Fu.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Xde),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,qde,Kde))),new Rt({id:t,geometry:new u3(this._options),modelMatrix:t.computeModelMatrixForHeightReference(e,t.cylinder.heightReference,this._options.length*.5,this._scene.ellipsoid),attributes:r})};Fu.prototype._computeCenter=function(e,t){return j.getValueOrUndefined(this._entity.position,e,t)};Fu.prototype._isHidden=function(e,t){return!l(e.position)||!l(t.length)||!l(t.topRadius)||!l(t.bottomRadius)||Ci.prototype._isHidden.call(this,e,t)};Fu.prototype._isDynamic=function(e,t){return!e.position.isConstant||!j.isConstant(e.orientation)||!t.length.isConstant||!t.topRadius.isConstant||!t.bottomRadius.isConstant||!j.isConstant(t.slices)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.numberOfVerticalLines)};Fu.prototype._setStaticOptions=function(e,t){let n=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof Jt?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,i.length=t.length.getValue(je.MINIMUM_VALUE),i.topRadius=t.topRadius.getValue(je.MINIMUM_VALUE),i.bottomRadius=t.bottomRadius.getValue(je.MINIMUM_VALUE),i.slices=j.getValueOrUndefined(t.slices,je.MINIMUM_VALUE),i.numberOfVerticalLines=j.getValueOrUndefined(t.numberOfVerticalLines,je.MINIMUM_VALUE),i.offsetAttribute=n!==Ze.NONE?hn.ALL:void 0};Fu.prototype._onEntityPropertyChanged=Rg;Fu.DynamicGeometryUpdater=bb;function bb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(bb.prototype=Object.create(yi.prototype),bb.prototype.constructor=bb);bb.prototype._isHidden=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(e.position,n,VZe);return!l(o)||!l(i.length)||!l(i.topRadius)||!l(i.bottomRadius)||yi.prototype._isHidden.call(this,e,t,n)};bb.prototype._setOptions=function(e,t,n){let i=j.getValueOrDefault(t.heightReference,n,Ze.NONE),o=this._options;o.length=j.getValueOrUndefined(t.length,n),o.topRadius=j.getValueOrUndefined(t.topRadius,n),o.bottomRadius=j.getValueOrUndefined(t.bottomRadius,n),o.slices=j.getValueOrUndefined(t.slices,n),o.numberOfVerticalLines=j.getValueOrUndefined(t.numberOfVerticalLines,n),o.offsetAttribute=i!==Ze.NONE?hn.ALL:void 0};var f3=Fu;var WZe={UNBOUNDED:0,CLAMPED:1,LOOP_STOP:2},As=Object.freeze(WZe);var jZe={TICK_DEPENDENT:0,SYSTEM_CLOCK_MULTIPLIER:1,SYSTEM_CLOCK:2},vo=Object.freeze(jZe);var YZe={NONE:0,HOLD:1,EXTRAPOLATE:2},rd=Object.freeze(YZe);var Jde=Es(_u(),1);function qZe(e){let t=new Jde.default(e);t.normalize();let n=t.path(),i=n.lastIndexOf("/");return i!==-1&&(n=n.substr(i+1)),n}var W_=qZe;var KZe=D.factorial;function rq(e,t,n,i,o,r){let s=0,a,c,u;if(i>0){for(c=0;c<o;c++){for(a=!1,u=0;u<r.length&&!a;u++)c===r[u]&&(a=!0);a||(r.push(c),s+=rq(e,t,n,i-1,o,r),r.splice(r.length-1,1))}return s}for(s=1,c=0;c<o;c++){for(a=!1,u=0;u<r.length&&!a;u++)c===r[u]&&(a=!0);a||(s*=e-n[t[c]])}return s}var d3={type:"Hermite"};d3.getRequiredDataPoints=function(e,t){return t=t??0,Math.max(Math.floor((e+1)/(t+1)),2)};d3.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a,c,u,f,h=t.length,A=new Array(i);for(r=0;r<i;r++){o[r]=0;let y=new Array(h);for(A[r]=y,s=0;s<h;s++)y[s]=[]}let g=h,m=new Array(g);for(r=0;r<g;r++)m[r]=r;let _=h-1;for(c=0;c<i;c++){for(s=0;s<g;s++)f=m[s]*i+c,A[c][0].push(n[f]);for(r=1;r<g;r++){let y=!1;for(s=0;s<g-r;s++){let C=t[m[s]],E=t[m[s+r]],I;E-C<=0?(f=m[s]*i+i*r+c,I=n[f],A[c][r].push(I/KZe(r))):(I=A[c][r-1][s+1]-A[c][r-1][s],A[c][r].push(I/(E-C))),y=y||I!==0}y||(_=r-1)}}for(a=0,u=0;a<=u;a++)for(r=a;r<=_;r++){let y=rq(e,m,t,a,r,[]);for(c=0;c<i;c++){let C=A[c][r][0];o[c+a*i]+=C*y}}return o};var XZe=[];d3.interpolate=function(e,t,n,i,o,r,s){let a=i*(r+1);l(s)||(s=new Array(a));for(let C=0;C<a;C++)s[C]=0;let c=t.length,u=new Array(c*(o+1)),f;for(f=0;f<c;f++)for(let C=0;C<o+1;C++)u[f*(o+1)+C]=f;let h=u.length,A=XZe,g=JZe(A,u,t,n,i,o),m=[],_=h*(h+1)/2,y=Math.min(g,r);for(let C=0;C<=y;C++)for(f=C;f<=g;f++){m.length=0;let E=rq(e,u,t,C,f,m),I=Math.floor(f*(1-f)/2)+h*f;for(let b=0;b<i;b++){let S=Math.floor(b*_),B=A[S+I];s[b+C*i]+=B*E}}return s};function JZe(e,t,n,i,o,r){let s,a,c=-1,u=t.length,f=u*(u+1)/2;for(let h=0;h<o;h++){let A=Math.floor(h*f);for(s=0;s<u;s++)a=t[s]*o*(r+1)+h,e[A+s]=i[a];for(let g=1;g<u;g++){let m=0,_=Math.floor(g*(1-g)/2)+u*g,y=!1;for(s=0;s<u-g;s++){let C=n[t[s]],E=n[t[s+g]],I,b;if(E-C<=0)a=t[s]*o*(r+1)+o*g+h,I=i[a],b=I/D.factorial(g),e[A+_+m]=b,m++;else{let S=Math.floor((g-1)*(2-g)/2)+u*(g-1);I=e[A+S+s+1]-e[A+S+s],b=I/(E-C),e[A+_+m]=b,m++}y=y||I!==0}y&&(c=Math.max(c,g))}}return c}var h3=d3;var sq={type:"Lagrange"};sq.getRequiredDataPoints=function(e){return Math.max(e+1,2)};sq.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a=t.length;for(r=0;r<i;r++)o[r]=0;for(r=0;r<a;r++){let c=1;for(s=0;s<a;s++)if(s!==r){let u=t[r]-t[s];c*=(e-t[s])/u}for(s=0;s<i;s++)o[s]+=c*n[r*i+s]}return o};var m3=sq;var aq={type:"Linear"};aq.getRequiredDataPoints=function(e){return 2};aq.interpolateOrderZero=function(e,t,n,i,o){l(o)||(o=new Array(i));let r,s,a,c=t[0],u=t[1];for(r=0;r<i;r++)s=n[r],a=n[r+i],o[r]=((a-s)*e+u*s-c*a)/(u-c);return o};var Tb=aq;function Lc(e,t,n){this.clock=e??0,this.cone=t??0,this.magnitude=n??1}Lc.fromCartesian3=function(e,t){let n=e.x,i=e.y,o=e.z,r=n*n+i*i;return l(t)||(t=new Lc),t.clock=Math.atan2(i,n),t.cone=Math.atan2(Math.sqrt(r),o),t.magnitude=Math.sqrt(r+o*o),t};Lc.clone=function(e,t){if(l(e))return l(t)?(t.clock=e.clock,t.cone=e.cone,t.magnitude=e.magnitude,t):new Lc(e.clock,e.cone,e.magnitude)};Lc.normalize=function(e,t){return l(t)?(t.clock=e.clock,t.cone=e.cone,t.magnitude=1,t):new Lc(e.clock,e.cone,1)};Lc.equals=function(e,t){return e===t||l(e)&&l(t)&&e.clock===t.clock&&e.cone===t.cone&&e.magnitude===t.magnitude};Lc.equalsEpsilon=function(e,t,n){return n=n??0,e===t||l(e)&&l(t)&&Math.abs(e.clock-t.clock)<=n&&Math.abs(e.cone-t.cone)<=n&&Math.abs(e.magnitude-t.magnitude)<=n};Lc.prototype.equals=function(e){return Lc.equals(this,e)};Lc.prototype.clone=function(e){return Lc.clone(this,e)};Lc.prototype.equalsEpsilon=function(e,t){return Lc.equalsEpsilon(this,e,t)};Lc.prototype.toString=function(){return`(${this.clock}, ${this.cone}, ${this.magnitude})`};var A3=Lc;var XD=Es(_u(),1);var cq;typeof performance<"u"&&typeof performance.now=="function"&&isFinite(performance.now())?cq=function(){return performance.now()}:cq=function(){return Date.now()};var Oi=cq;function lq(e){e=e??V.EMPTY_OBJECT;let t=e.currentTime,n=e.startTime,i=e.stopTime;l(t)?t=K.clone(t):l(n)?t=K.clone(n):l(i)?t=K.addDays(i,-1,new K):t=K.now(),l(n)?n=K.clone(n):n=K.clone(t),l(i)?i=K.clone(i):i=K.addDays(n,1,new K),this.startTime=n,this.stopTime=i,this.clockRange=e.clockRange??As.UNBOUNDED,this.canAnimate=e.canAnimate??!0,this.onTick=new _e,this.onStop=new _e,this._currentTime=void 0,this._multiplier=void 0,this._clockStep=void 0,this._shouldAnimate=void 0,this._lastSystemTime=Oi(),this.currentTime=t,this.multiplier=e.multiplier??1,this.shouldAnimate=e.shouldAnimate??!1,this.clockStep=e.clockStep??vo.SYSTEM_CLOCK_MULTIPLIER}Object.defineProperties(lq.prototype,{currentTime:{get:function(){return this._currentTime},set:function(e){K.equals(this._currentTime,e)||(this._clockStep===vo.SYSTEM_CLOCK&&(this._clockStep=vo.SYSTEM_CLOCK_MULTIPLIER),this._currentTime=e)}},multiplier:{get:function(){return this._multiplier},set:function(e){this._multiplier!==e&&(this._clockStep===vo.SYSTEM_CLOCK&&(this._clockStep=vo.SYSTEM_CLOCK_MULTIPLIER),this._multiplier=e)}},clockStep:{get:function(){return this._clockStep},set:function(e){e===vo.SYSTEM_CLOCK&&(this._multiplier=1,this._shouldAnimate=!0,this._currentTime=K.now()),this._clockStep=e}},shouldAnimate:{get:function(){return this._shouldAnimate},set:function(e){this._shouldAnimate!==e&&(this._clockStep===vo.SYSTEM_CLOCK&&(this._clockStep=vo.SYSTEM_CLOCK_MULTIPLIER),this._shouldAnimate=e)}}});lq.prototype.tick=function(){let e=Oi(),t=K.clone(this._currentTime);if(this.canAnimate&&this._shouldAnimate){let n=this._clockStep;if(n===vo.SYSTEM_CLOCK)t=K.now(t);else{let i=this._multiplier;if(n===vo.TICK_DEPENDENT)t=K.addSeconds(t,i,t);else{let a=e-this._lastSystemTime;t=K.addSeconds(t,i*(a/1e3),t)}let o=this.clockRange,r=this.startTime,s=this.stopTime;if(o===As.CLAMPED)K.lessThan(t,r)?t=K.clone(r,t):K.greaterThan(t,s)&&(t=K.clone(s,t),this.onStop.raiseEvent(this));else if(o===As.LOOP_STOP)for(K.lessThan(t,r)&&(t=K.clone(r,t));K.greaterThan(t,s);)t=K.addSeconds(r,K.secondsDifference(t,s),t),this.onStop.raiseEvent(this)}}return this._currentTime=t,this._lastSystemTime=e,this.onTick.raiseEvent(this),t};var Vm=lq;function bE(){this._definitionChanged=new _e,this._startTime=void 0,this._stopTime=void 0,this._currentTime=void 0,this._clockRange=void 0,this._clockStep=void 0,this._multiplier=void 0}Object.defineProperties(bE.prototype,{definitionChanged:{get:function(){return this._definitionChanged}},startTime:Fl("startTime"),stopTime:Fl("stopTime"),currentTime:Fl("currentTime"),clockRange:Fl("clockRange"),clockStep:Fl("clockStep"),multiplier:Fl("multiplier")});bE.prototype.clone=function(e){return l(e)||(e=new bE),e.startTime=this.startTime,e.stopTime=this.stopTime,e.currentTime=this.currentTime,e.clockRange=this.clockRange,e.clockStep=this.clockStep,e.multiplier=this.multiplier,e};bE.prototype.equals=function(e){return this===e||l(e)&&K.equals(this.startTime,e.startTime)&&K.equals(this.stopTime,e.stopTime)&&K.equals(this.currentTime,e.currentTime)&&this.clockRange===e.clockRange&&this.clockStep===e.clockStep&&this.multiplier===e.multiplier};bE.prototype.merge=function(e){this.startTime=this.startTime??e.startTime,this.stopTime=this.stopTime??e.stopTime,this.currentTime=this.currentTime??e.currentTime,this.clockRange=this.clockRange??e.clockRange,this.clockStep=this.clockStep??e.clockStep,this.multiplier=this.multiplier??e.multiplier};bE.prototype.getValue=function(e){return l(e)||(e=new Vm),e.startTime=this.startTime??e.startTime,e.stopTime=this.stopTime??e.stopTime,e.currentTime=this.currentTime??e.currentTime,e.clockRange=this.clockRange??e.clockRange,e.multiplier=this.multiplier??e.multiplier,e.clockStep=this.clockStep??e.clockStep,e};var Hm=bE;var ZZe=G.WHITE,$Ze=.1,e$e=new k(8,8),t$e=new k(0,0),n$e=new k(1,1);function Sb(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this._cellAlpha=void 0,this._cellAlphaSubscription=void 0,this._lineCount=void 0,this._lineCountSubscription=void 0,this._lineThickness=void 0,this._lineThicknessSubscription=void 0,this._lineOffset=void 0,this._lineOffsetSubscription=void 0,this.color=e.color,this.cellAlpha=e.cellAlpha,this.lineCount=e.lineCount,this.lineThickness=e.lineThickness,this.lineOffset=e.lineOffset}Object.defineProperties(Sb.prototype,{isConstant:{get:function(){return j.isConstant(this._color)&&j.isConstant(this._cellAlpha)&&j.isConstant(this._lineCount)&&j.isConstant(this._lineThickness)&&j.isConstant(this._lineOffset)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color"),cellAlpha:de("cellAlpha"),lineCount:de("lineCount"),lineThickness:de("lineThickness"),lineOffset:de("lineOffset")});Sb.prototype.getType=function(e){return"Grid"};var i$e=new K;Sb.prototype.getValue=function(e,t){return l(e)||(e=K.now(i$e)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,ZZe,t.color),t.cellAlpha=j.getValueOrDefault(this._cellAlpha,e,$Ze),t.lineCount=j.getValueOrClonedDefault(this._lineCount,e,e$e,t.lineCount),t.lineThickness=j.getValueOrClonedDefault(this._lineThickness,e,n$e,t.lineThickness),t.lineOffset=j.getValueOrClonedDefault(this._lineOffset,e,t$e,t.lineOffset),t};Sb.prototype.equals=function(e){return this===e||e instanceof Sb&&j.equals(this._color,e._color)&&j.equals(this._cellAlpha,e._cellAlpha)&&j.equals(this._lineCount,e._lineCount)&&j.equals(this._lineThickness,e._lineThickness)&&j.equals(this._lineOffset,e._lineOffset)};var UD=Sb;function wb(e){this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this.color=e}Object.defineProperties(wb.prototype,{isConstant:{get:function(){return j.isConstant(this._color)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color")});wb.prototype.getType=function(e){return"PolylineArrow"};var o$e=new K;wb.prototype.getValue=function(e,t){return l(e)||(e=K.now(o$e)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,G.WHITE,t.color),t};wb.prototype.equals=function(e){return this===e||e instanceof wb&&j.equals(this._color,e._color)};var GD=wb;var r$e=G.WHITE,s$e=G.TRANSPARENT,a$e=16,c$e=255;function Bb(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this._gapColor=void 0,this._gapColorSubscription=void 0,this._dashLength=void 0,this._dashLengthSubscription=void 0,this._dashPattern=void 0,this._dashPatternSubscription=void 0,this.color=e.color,this.gapColor=e.gapColor,this.dashLength=e.dashLength,this.dashPattern=e.dashPattern}Object.defineProperties(Bb.prototype,{isConstant:{get:function(){return j.isConstant(this._color)&&j.isConstant(this._gapColor)&&j.isConstant(this._dashLength)&&j.isConstant(this._dashPattern)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color"),gapColor:de("gapColor"),dashLength:de("dashLength"),dashPattern:de("dashPattern")});Bb.prototype.getType=function(e){return"PolylineDash"};var l$e=new K;Bb.prototype.getValue=function(e,t){return l(e)||(e=K.now(l$e)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,r$e,t.color),t.gapColor=j.getValueOrClonedDefault(this._gapColor,e,s$e,t.gapColor),t.dashLength=j.getValueOrDefault(this._dashLength,e,a$e,t.dashLength),t.dashPattern=j.getValueOrDefault(this._dashPattern,e,c$e,t.dashPattern),t};Bb.prototype.equals=function(e){return this===e||e instanceof Bb&&j.equals(this._color,e._color)&&j.equals(this._gapColor,e._gapColor)&&j.equals(this._dashLength,e._dashLength)&&j.equals(this._dashPattern,e._dashPattern)};var zD=Bb;var u$e=G.WHITE,f$e=.25,d$e=1;function Db(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this._glowPower=void 0,this._glowPowerSubscription=void 0,this._taperPower=void 0,this._taperPowerSubscription=void 0,this.color=e.color,this.glowPower=e.glowPower,this.taperPower=e.taperPower}Object.defineProperties(Db.prototype,{isConstant:{get:function(){return j.isConstant(this._color)&&j.isConstant(this._glow)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color"),glowPower:de("glowPower"),taperPower:de("taperPower")});Db.prototype.getType=function(e){return"PolylineGlow"};var h$e=new K;Db.prototype.getValue=function(e,t){return l(e)||(e=K.now(h$e)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,u$e,t.color),t.glowPower=j.getValueOrDefault(this._glowPower,e,f$e,t.glowPower),t.taperPower=j.getValueOrDefault(this._taperPower,e,d$e,t.taperPower),t};Db.prototype.equals=function(e){return this===e||e instanceof Db&&j.equals(this._color,e._color)&&j.equals(this._glowPower,e._glowPower)&&j.equals(this._taperPower,e._taperPower)};var VD=Db;var m$e=G.WHITE,A$e=G.BLACK,p$e=1;function vb(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._color=void 0,this._colorSubscription=void 0,this._outlineColor=void 0,this._outlineColorSubscription=void 0,this._outlineWidth=void 0,this._outlineWidthSubscription=void 0,this.color=e.color,this.outlineColor=e.outlineColor,this.outlineWidth=e.outlineWidth}Object.defineProperties(vb.prototype,{isConstant:{get:function(){return j.isConstant(this._color)&&j.isConstant(this._outlineColor)&&j.isConstant(this._outlineWidth)}},definitionChanged:{get:function(){return this._definitionChanged}},color:de("color"),outlineColor:de("outlineColor"),outlineWidth:de("outlineWidth")});vb.prototype.getType=function(e){return"PolylineOutline"};var g$e=new K;vb.prototype.getValue=function(e,t){return l(e)||(e=K.now(g$e)),l(t)||(t={}),t.color=j.getValueOrClonedDefault(this._color,e,m$e,t.color),t.outlineColor=j.getValueOrClonedDefault(this._outlineColor,e,A$e,t.outlineColor),t.outlineWidth=j.getValueOrDefault(this._outlineWidth,e,p$e),t};vb.prototype.equals=function(e){return this===e||e instanceof vb&&j.equals(this._color,e._color)&&j.equals(this._outlineColor,e._outlineColor)&&j.equals(this._outlineWidth,e._outlineWidth)};var TE=vb;function Pp(e,t){this._value=void 0,this._definitionChanged=new _e,this._eventHelper=new Lr,this._referenceFrame=t??eo.FIXED,this.setValue(e)}Object.defineProperties(Pp.prototype,{isConstant:{get:function(){let e=this._value;if(!l(e))return!0;let t=e.length;for(let n=0;n<t;n++)if(!j.isConstant(e[n]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}}});var _$e=new K;Pp.prototype.getValue=function(e,t){return l(e)||(e=K.now(_$e)),this.getValueInReferenceFrame(e,eo.FIXED,t)};Pp.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._value;if(!l(i))return;let o=i.length;l(n)||(n=new Array(o));let r=0,s=0;for(;r<o;){let c=i[r].getValueInReferenceFrame(e,t,n[r]);l(c)&&(n[s]=c,s++),r++}return n.length=s,n};Pp.prototype.setValue=function(e){let t=this._eventHelper;if(t.removeAll(),l(e)){this._value=e.slice();let n=e.length;for(let i=0;i<n;i++){let o=e[i];l(o)&&t.add(o.definitionChanged,Pp.prototype._raiseDefinitionChanged,this)}}else this._value=void 0;this._definitionChanged.raiseEvent(this)};Pp.prototype.equals=function(e){return this===e||e instanceof Pp&&this._referenceFrame===e._referenceFrame&&j.arrayEquals(this._value,e._value)};Pp.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var j_=Pp;function Y_(e){this._value=void 0,this._definitionChanged=new _e,this._eventHelper=new Lr,this.setValue(e)}Object.defineProperties(Y_.prototype,{isConstant:{get:function(){let e=this._value;if(!l(e))return!0;let t=e.length;for(let n=0;n<t;n++)if(!j.isConstant(e[n]))return!1;return!0}},definitionChanged:{get:function(){return this._definitionChanged}}});var y$e=new K;Y_.prototype.getValue=function(e,t){l(e)||(e=K.now(y$e));let n=this._value;if(!l(n))return;let i=n.length;l(t)||(t=new Array(i));let o=0,r=0;for(;o<i;){let a=this._value[o].getValue(e,t[o]);l(a)&&(t[r]=a,r++),o++}return t.length=r,t};Y_.prototype.setValue=function(e){let t=this._eventHelper;if(t.removeAll(),l(e)){this._value=e.slice();let n=e.length;for(let i=0;i<n;i++){let o=e[i];l(o)&&t.add(o.definitionChanged,Y_.prototype._raiseDefinitionChanged,this)}}else this._value=void 0;this._definitionChanged.raiseEvent(this)};Y_.prototype.equals=function(e){return this===e||e instanceof Y_&&j.arrayEquals(this._value,e._value)};Y_.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var HD=Y_;function SE(e){let t=e._targetProperty;if(!l(t)){let n=e._targetEntity;if(!l(n)){if(n=e._targetCollection.getById(e._targetId),!l(n)){e._targetEntity=e._targetProperty=void 0;return}n.definitionChanged.addEventListener(Qu.prototype._onTargetEntityDefinitionChanged,e),e._targetEntity=n}let i=e._targetPropertyNames;t=e._targetEntity;for(let o=0,r=i.length;o<r&&l(t);++o)t=t[i[o]];e._targetProperty=t}return t}function Qu(e,t,n){this._targetCollection=e,this._targetId=t,this._targetPropertyNames=n,this._targetProperty=void 0,this._targetEntity=void 0,this._definitionChanged=new _e,e.collectionChanged.addEventListener(Qu.prototype._onCollectionChanged,this)}Object.defineProperties(Qu.prototype,{isConstant:{get:function(){return j.isConstant(SE(this))}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){let e=SE(this);return l(e)?e.referenceFrame:void 0}},targetId:{get:function(){return this._targetId}},targetCollection:{get:function(){return this._targetCollection}},targetPropertyNames:{get:function(){return this._targetPropertyNames}},resolvedProperty:{get:function(){return SE(this)}}});Qu.fromString=function(e,t){let n,i=[],o=!0,r=!1,s="";for(let a=0;a<t.length;++a){let c=t.charAt(a);r?(s+=c,r=!1):c==="\\"?r=!0:o&&c==="#"?(n=s,o=!1,s=""):!o&&c==="."?(i.push(s),s=""):s+=c}return i.push(s),new Qu(e,n,i)};var C$e=new K;Qu.prototype.getValue=function(e,t){let n=SE(this);return l(e)||(e=K.now(C$e)),l(n)?n.getValue(e,t):void 0};Qu.prototype.getValueInReferenceFrame=function(e,t,n){let i=SE(this);return l(i)?i.getValueInReferenceFrame(e,t,n):void 0};Qu.prototype.getType=function(e){let t=SE(this);return l(t)?t.getType(e):void 0};Qu.prototype.equals=function(e){if(this===e)return!0;let t=this._targetPropertyNames,n=e._targetPropertyNames;if(this._targetCollection!==e._targetCollection||this._targetId!==e._targetId||t.length!==n.length)return!1;let i=this._targetPropertyNames.length;for(let o=0;o<i;o++)if(t[o]!==n[o])return!1;return!0};Qu.prototype._onTargetEntityDefinitionChanged=function(e,t,n,i){l(this._targetProperty)&&this._targetPropertyNames[0]===t&&(this._targetProperty=void 0,this._definitionChanged.raiseEvent(this))};Qu.prototype._onCollectionChanged=function(e,t,n){let i=this._targetEntity;l(i)&&n.indexOf(i)!==-1?(i.definitionChanged.removeEventListener(Qu.prototype._onTargetEntityDefinitionChanged,this),this._targetEntity=this._targetProperty=void 0):l(i)||(i=SE(this),l(i)&&this._definitionChanged.raiseEvent(this))};var q_=Qu;var E$e={packedLength:1,pack:function(e,t,n){return n=n??0,t[n]=e,t},unpack:function(e,t,n){return t=t??0,e[t]},convertPackedArrayForInterpolation:function(e,t,n,i){l(i)||(i=[]),t=t??0,n=n??e.length;let o;for(let r=0,s=n-t+1;r<s;r++){let a=e[t+r];r===0||Math.abs(o-a)<Math.PI?i[r]=a:i[r]=a-D.TWO_PI,o=a}},unpackInterpolationResult:function(e,t,n,i,o){return o=e[0],o<0?o+D.TWO_PI:o}},fh=E$e;var Zde={packedLength:1,pack:function(e,t,n){n=n??0,t[n]=e},unpack:function(e,t,n){return t=t??0,e[t]}};function $de(e,t,n){let i,o=e.length,r=n.length,s=o+r;if(e.length=s,o!==t){let a=o-1;for(i=s-1;i>=t;i--)e[i]=e[a--]}for(i=0;i<r;i++)e[t++]=n[i]}function ehe(e,t){return e instanceof K?e:typeof e=="string"?K.fromIso8601(e):K.addSeconds(t,e,new K)}var uq=[],fq=[];function p3(e,t,n,i,o){let r=0,s,a,c,u,f,h;for(;r<i.length;){f=ehe(i[r],e),c=qo(t,f,K.compare);let A=0,g=0;if(c<0){for(c=~c,u=c*o,a=void 0,h=t[c];r<i.length&&(f=ehe(i[r],e),!(l(a)&&K.compare(a,f)>=0||l(h)&&K.compare(f,h)>=0));){for(uq[A++]=f,r=r+1,s=0;s<o;s++)fq[g++]=i[r],r=r+1;a=f}A>0&&(fq.length=g,$de(n,u,fq),uq.length=A,$de(t,c,uq))}else{for(s=0;s<o;s++)r++,n[c*o+s]=i[r];r++}}}function sd(e,t){let n=e;n===Number&&(n=Zde);let i=n.packedLength,o=n.packedInterpolationLength??i,r=0,s;if(l(t)){let a=t.length;s=new Array(a);for(let c=0;c<a;c++){let u=t[c];u===Number&&(u=Zde);let f=u.packedLength;i+=f,o+=u.packedInterpolationLength??f,s[c]=u}r=a}this._type=e,this._innerType=n,this._interpolationDegree=1,this._interpolationAlgorithm=Tb,this._numberOfPoints=0,this._times=[],this._values=[],this._xTable=[],this._yTable=[],this._packedLength=i,this._packedInterpolationLength=o,this._updateTableLength=!0,this._interpolationResult=new Array(o),this._definitionChanged=new _e,this._derivativeTypes=t,this._innerDerivativeTypes=s,this._inputOrder=r,this._forwardExtrapolationType=rd.NONE,this._forwardExtrapolationDuration=0,this._backwardExtrapolationType=rd.NONE,this._backwardExtrapolationDuration=0}Object.defineProperties(sd.prototype,{isConstant:{get:function(){return this._values.length===0}},definitionChanged:{get:function(){return this._definitionChanged}},type:{get:function(){return this._type}},derivativeTypes:{get:function(){return this._derivativeTypes}},interpolationDegree:{get:function(){return this._interpolationDegree}},interpolationAlgorithm:{get:function(){return this._interpolationAlgorithm}},forwardExtrapolationType:{get:function(){return this._forwardExtrapolationType},set:function(e){this._forwardExtrapolationType!==e&&(this._forwardExtrapolationType=e,this._definitionChanged.raiseEvent(this))}},forwardExtrapolationDuration:{get:function(){return this._forwardExtrapolationDuration},set:function(e){this._forwardExtrapolationDuration!==e&&(this._forwardExtrapolationDuration=e,this._definitionChanged.raiseEvent(this))}},backwardExtrapolationType:{get:function(){return this._backwardExtrapolationType},set:function(e){this._backwardExtrapolationType!==e&&(this._backwardExtrapolationType=e,this._definitionChanged.raiseEvent(this))}},backwardExtrapolationDuration:{get:function(){return this._backwardExtrapolationDuration},set:function(e){this._backwardExtrapolationDuration!==e&&(this._backwardExtrapolationDuration=e,this._definitionChanged.raiseEvent(this))}}});var I$e=new K;sd.prototype.getValue=function(e,t){l(e)||(e=K.now(I$e));let n=this._times,i=n.length;if(i===0)return;let o,r=this._innerType,s=this._values,a=qo(n,e,K.compare);if(a<0){if(a=~a,a===0){let b=n[a];if(o=this._backwardExtrapolationDuration,this._backwardExtrapolationType===rd.NONE||o!==0&&K.secondsDifference(b,e)>o)return;if(this._backwardExtrapolationType===rd.HOLD)return r.unpack(s,0,t)}if(a>=i){a=i-1;let b=n[a];if(o=this._forwardExtrapolationDuration,this._forwardExtrapolationType===rd.NONE||o!==0&&K.secondsDifference(e,b)>o)return;if(this._forwardExtrapolationType===rd.HOLD)return a=i-1,r.unpack(s,a*r.packedLength,t)}let c=this._xTable,u=this._yTable,f=this._interpolationAlgorithm,h=this._packedInterpolationLength,A=this._inputOrder;if(this._updateTableLength){this._updateTableLength=!1;let b=Math.min(f.getRequiredDataPoints(this._interpolationDegree,A),i);b!==this._numberOfPoints&&(this._numberOfPoints=b,c.length=b,u.length=b*h)}let g=this._numberOfPoints-1;if(g<1)return;let m=0,_=i-1;if(_-m+1>=g+1){let b=a-(g/2|0)-1;b<m&&(b=m);let S=b+g;S>_&&(S=_,b=S-g,b<m&&(b=m)),m=b,_=S}let C=_-m+1;for(let b=0;b<C;++b)c[b]=K.secondsDifference(n[m+b],n[_]);if(l(r.convertPackedArrayForInterpolation))r.convertPackedArrayForInterpolation(s,m,_,u);else{let b=0,S=this._packedLength,B=m*S,v=(_+1)*S;for(;B<v;)u[b]=s[B],B++,b++}let E=K.secondsDifference(e,n[_]),I;if(A===0||!l(f.interpolate))I=f.interpolateOrderZero(E,c,u,h,this._interpolationResult);else{let b=Math.floor(h/(A+1));I=f.interpolate(E,c,u,b,A,A,this._interpolationResult)}return l(r.unpackInterpolationResult)?r.unpackInterpolationResult(I,s,m,_,t):r.unpack(I,0,t)}return r.unpack(s,a*this._packedLength,t)};sd.prototype.setInterpolationOptions=function(e){if(!l(e))return;let t=!1,n=e.interpolationAlgorithm,i=e.interpolationDegree;l(n)&&this._interpolationAlgorithm!==n&&(this._interpolationAlgorithm=n,t=!0),l(i)&&this._interpolationDegree!==i&&(this._interpolationDegree=i,t=!0),t&&(this._updateTableLength=!0,this._definitionChanged.raiseEvent(this))};sd.prototype.addSample=function(e,t,n){let i=this._innerDerivativeTypes,o=l(i),r=this._innerType,s=[];if(s.push(e),r.pack(t,s,s.length),o){let a=i.length;for(let c=0;c<a;c++)i[c].pack(n[c],s,s.length)}p3(void 0,this._times,this._values,s,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};sd.prototype.addSamples=function(e,t,n){let i=this._innerDerivativeTypes,o=l(i),r=this._innerType,s=e.length,a=[];for(let c=0;c<s;c++)if(a.push(e[c]),r.pack(t[c],a,a.length),o){let u=n[c],f=i.length;for(let h=0;h<f;h++)i[h].pack(u[h],a,a.length)}p3(void 0,this._times,this._values,a,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};sd.prototype.getSample=function(e){let t=this._times,n=t.length;if(l(n))return e<0&&(e+=n),t[e]};sd.prototype.addSamplesPackedArray=function(e,t){p3(t,this._times,this._values,e,this._packedLength),this._updateTableLength=!0,this._definitionChanged.raiseEvent(this)};sd.prototype.removeSample=function(e){let t=qo(this._times,e,K.compare);return t<0?!1:(the(this,t,1),!0)};function the(e,t,n){let i=e._packedLength;e._times.splice(t,n),e._values.splice(t*i,n*i),e._updateTableLength=!0,e._definitionChanged.raiseEvent(e)}sd.prototype.removeSamples=function(e){let t=this._times,n=qo(t,e.start,K.compare);n<0?n=~n:e.isStartIncluded||++n;let i=qo(t,e.stop,K.compare);i<0?i=~i:e.isStopIncluded&&++i,the(this,n,i-n)};sd.prototype.equals=function(e){if(this===e)return!0;if(!l(e)||this._type!==e._type||this._interpolationDegree!==e._interpolationDegree||this._interpolationAlgorithm!==e._interpolationAlgorithm)return!1;let t=this._derivativeTypes,n=l(t),i=e._derivativeTypes,o=l(i);if(n!==o)return!1;let r,s;if(n){if(s=t.length,s!==i.length)return!1;for(r=0;r<s;r++)if(t[r]!==i[r])return!1}let a=this._times,c=e._times;if(s=a.length,s!==c.length)return!1;for(r=0;r<s;r++)if(!K.equals(a[r],c[r]))return!1;let u=this._values,f=e._values;for(s=u.length,r=0;r<s;r++)if(u[r]!==f[r])return!1;return!0};sd._mergeNewSamples=p3;var ad=sd;function cd(e,t){t=t??0;let n;if(t>0){n=new Array(t);for(let i=0;i<t;i++)n[i]=d}this._numberOfDerivatives=t,this._property=new ad(d,n),this._definitionChanged=new _e,this._referenceFrame=e??eo.FIXED,this._property._definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this)},this)}Object.defineProperties(cd.prototype,{isConstant:{get:function(){return this._property.isConstant}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return this._referenceFrame}},interpolationDegree:{get:function(){return this._property.interpolationDegree}},interpolationAlgorithm:{get:function(){return this._property.interpolationAlgorithm}},numberOfDerivatives:{get:function(){return this._numberOfDerivatives}},forwardExtrapolationType:{get:function(){return this._property.forwardExtrapolationType},set:function(e){this._property.forwardExtrapolationType=e}},forwardExtrapolationDuration:{get:function(){return this._property.forwardExtrapolationDuration},set:function(e){this._property.forwardExtrapolationDuration=e}},backwardExtrapolationType:{get:function(){return this._property.backwardExtrapolationType},set:function(e){this._property.backwardExtrapolationType=e}},backwardExtrapolationDuration:{get:function(){return this._property.backwardExtrapolationDuration},set:function(e){this._property.backwardExtrapolationDuration=e}}});var x$e=new K;cd.prototype.getValue=function(e,t){return l(e)||(e=K.now(x$e)),this.getValueInReferenceFrame(e,eo.FIXED,t)};cd.prototype.getValueInReferenceFrame=function(e,t,n){if(n=this._property.getValue(e,n),l(n))return am.convertToReferenceFrame(e,n,this._referenceFrame,t,n)};cd.prototype.setInterpolationOptions=function(e){this._property.setInterpolationOptions(e)};cd.prototype.addSample=function(e,t,n){let i=this._numberOfDerivatives;this._property.addSample(e,t,n)};cd.prototype.addSamples=function(e,t,n){this._property.addSamples(e,t,n)};cd.prototype.addSamplesPackedArray=function(e,t){this._property.addSamplesPackedArray(e,t)};cd.prototype.removeSample=function(e){return this._property.removeSample(e)};cd.prototype.removeSamples=function(e){this._property.removeSamples(e)};cd.prototype.equals=function(e){return this===e||e instanceof cd&&j.equals(this._property,e._property)&&this._referenceFrame===e._referenceFrame};var ic=cd;var b$e={HORIZONTAL:0,VERTICAL:1},Wm=Object.freeze(b$e);var T$e=Wm.HORIZONTAL,S$e=G.WHITE,w$e=G.BLACK,B$e=0,D$e=1;function Pb(e){e=e??V.EMPTY_OBJECT,this._definitionChanged=new _e,this._orientation=void 0,this._orientationSubscription=void 0,this._evenColor=void 0,this._evenColorSubscription=void 0,this._oddColor=void 0,this._oddColorSubscription=void 0,this._offset=void 0,this._offsetSubscription=void 0,this._repeat=void 0,this._repeatSubscription=void 0,this.orientation=e.orientation,this.evenColor=e.evenColor,this.oddColor=e.oddColor,this.offset=e.offset,this.repeat=e.repeat}Object.defineProperties(Pb.prototype,{isConstant:{get:function(){return j.isConstant(this._orientation)&&j.isConstant(this._evenColor)&&j.isConstant(this._oddColor)&&j.isConstant(this._offset)&&j.isConstant(this._repeat)}},definitionChanged:{get:function(){return this._definitionChanged}},orientation:de("orientation"),evenColor:de("evenColor"),oddColor:de("oddColor"),offset:de("offset"),repeat:de("repeat")});Pb.prototype.getType=function(e){return"Stripe"};var v$e=new K;Pb.prototype.getValue=function(e,t){return l(e)||(e=K.now(v$e)),l(t)||(t={}),t.horizontal=j.getValueOrDefault(this._orientation,e,T$e)===Wm.HORIZONTAL,t.evenColor=j.getValueOrClonedDefault(this._evenColor,e,S$e,t.evenColor),t.oddColor=j.getValueOrClonedDefault(this._oddColor,e,w$e,t.oddColor),t.offset=j.getValueOrDefault(this._offset,e,B$e),t.repeat=j.getValueOrDefault(this._repeat,e,D$e),t};Pb.prototype.equals=function(e){return this===e||e instanceof Pb&&j.equals(this._orientation,e._orientation)&&j.equals(this._evenColor,e._evenColor)&&j.equals(this._oddColor,e._oddColor)&&j.equals(this._offset,e._offset)&&j.equals(this._repeat,e._repeat)};var WD=Pb;function K_(e){this._definitionChanged=new _e,this._intervals=new hs,this._intervals.changedEvent.addEventListener(K_.prototype._intervalsChanged,this),this._referenceFrame=e??eo.FIXED}Object.defineProperties(K_.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}},referenceFrame:{get:function(){return this._referenceFrame}}});var P$e=new K;K_.prototype.getValue=function(e,t){return l(e)||(e=K.now(P$e)),this.getValueInReferenceFrame(e,eo.FIXED,t)};K_.prototype.getValueInReferenceFrame=function(e,t,n){let i=this._intervals.findDataForIntervalContainingDate(e);if(l(i))return am.convertToReferenceFrame(e,i,this._referenceFrame,t,n)};K_.prototype.equals=function(e){return this===e||e instanceof K_&&this._intervals.equals(e._intervals,j.equals)&&this._referenceFrame===e._referenceFrame};K_.prototype._intervalsChanged=function(){this._definitionChanged.raiseEvent(this)};var X_=K_;function wE(){this._definitionChanged=new _e,this._intervals=new hs,this._intervals.changedEvent.addEventListener(wE.prototype._intervalsChanged,this)}Object.defineProperties(wE.prototype,{isConstant:{get:function(){return this._intervals.isEmpty}},definitionChanged:{get:function(){return this._definitionChanged}},intervals:{get:function(){return this._intervals}}});var R$e=new K;wE.prototype.getValue=function(e,t){l(e)||(e=K.now(R$e));let n=this._intervals.findDataForIntervalContainingDate(e);return l(n)&&typeof n.clone=="function"?n.clone(t):n};wE.prototype.equals=function(e){return this===e||e instanceof wE&&this._intervals.equals(e._intervals,j.equals)};wE.prototype._intervalsChanged=function(){this._definitionChanged.raiseEvent(this)};var J_=wE;function Rb(e,t){this._position=void 0,this._subscription=void 0,this._definitionChanged=new _e,this._normalize=t??!0,this.position=e}Object.defineProperties(Rb.prototype,{isConstant:{get:function(){return j.isConstant(this._position)}},definitionChanged:{get:function(){return this._definitionChanged}},position:{get:function(){return this._position},set:function(e){let t=this._position;t!==e&&(l(t)&&this._subscription(),this._position=e,l(e)&&(this._subscription=e._definitionChanged.addEventListener(function(){this._definitionChanged.raiseEvent(this)},this)),this._definitionChanged.raiseEvent(this))}},normalize:{get:function(){return this._normalize},set:function(e){this._normalize!==e&&(this._normalize=e,this._definitionChanged.raiseEvent(this))}}});var M$e=new d,nhe=new d,ihe=new K,N$e=new K,dq=1/60;Rb.prototype.getValue=function(e,t){return this._getValue(e,t)};Rb.prototype._getValue=function(e,t,n){l(e)||(e=K.now(N$e)),l(t)||(t=new d);let i=this._position;if(j.isConstant(i))return this._normalize?void 0:d.clone(d.ZERO,t);let o=i.getValue(e,M$e),r=i.getValue(K.addSeconds(e,dq,ihe),nhe);if(!l(o)||!l(r)&&(r=o,o=i.getValue(K.addSeconds(e,-dq,ihe),nhe),!l(o)))return;if(d.equals(o,r))return this._normalize?void 0:d.clone(d.ZERO,t);l(n)&&o.clone(n);let s=d.subtract(r,o,t);return this._normalize?d.normalize(s,t):d.divideByScalar(s,dq,t)};Rb.prototype.equals=function(e){return this===e||e instanceof Rb&&j.equals(this._position,e._position)};var Z_=Rb;function jD(e,t){this._velocityVectorProperty=new Z_(e,!0),this._subscription=void 0,this._ellipsoid=void 0,this._definitionChanged=new _e,this.ellipsoid=t??te.default;let n=this;this._velocityVectorProperty.definitionChanged.addEventListener(function(){n._definitionChanged.raiseEvent(n)})}Object.defineProperties(jD.prototype,{isConstant:{get:function(){return j.isConstant(this._velocityVectorProperty)}},definitionChanged:{get:function(){return this._definitionChanged}},position:{get:function(){return this._velocityVectorProperty.position},set:function(e){this._velocityVectorProperty.position=e}},ellipsoid:{get:function(){return this._ellipsoid},set:function(e){this._ellipsoid!==e&&(this._ellipsoid=e,this._definitionChanged.raiseEvent(this))}}});var ohe=new d,L$e=new d,rhe=new J,O$e=new K;jD.prototype.getValue=function(e,t){l(e)||(e=K.now(O$e));let n=this._velocityVectorProperty._getValue(e,L$e,ohe);if(l(n))return kt.rotationMatrixFromPositionVelocity(ohe,n,this._ellipsoid,rhe),Le.fromRotationMatrix(rhe,t)};jD.prototype.equals=function(e){return this===e||e instanceof jD&&j.equals(this._velocityVectorProperty,e._velocityVectorProperty)&&(this._ellipsoid===e._ellipsoid||this._ellipsoid.equals(e._ellipsoid))};var g3=jD;var Rp={COMPLETE:0,BELOW_ELLIPSOID_HORIZON:1,ABOVE_ELLIPSOID_HORIZON:2};Rp.validate=function(e){return e===Rp.COMPLETE||e===Rp.BELOW_ELLIPSOID_HORIZON||e===Rp.ABOVE_ELLIPSOID_HORIZON};Rp.toString=function(e){switch(e){case Rp.COMPLETE:return"COMPLETE";case Rp.BELOW_ELLIPSOID_HORIZON:return"BELOW_ELLIPSOID_HORIZON";case Rp.ABOVE_ELLIPSOID_HORIZON:return"ABOVE_ELLIPSOID_HORIZON";default:throw new me("SensorVolumePortionToDisplay value is not valid and cannot be converted to a String.")}};var YD=Rp;function $_(){}$_.packedLength=d.packedLength;$_.unpack=d.unpack;$_.pack=d.pack;var hq;function qD(e,t){return t[0]==="#"&&(t=hq+t),q_.fromString(e,t)}function she(e,t,n){if(l(n.reference))return qD(t,n.reference);if(l(n.velocityReference)){let i=qD(t,n.velocityReference);switch(e){case d:case $_:return new Z_(i,e===$_);case Le:return new g3(i)}}throw new ce(`${JSON.stringify(n)} is not valid CZML.`)}function F$e(e,t){return new fm(function(n,i){return t(e.getValue(n,i))},e.isConstant)}var Zi=new d,gl=new A3,Oc=new Ae,BE=new Rn,_3=new Le;function Q$e(e){let t=e.rgbaf;if(l(t))return t;let n=e.rgba;if(!l(n))return;let i=n.length;if(i===G.packedLength)return[G.byteToFloat(n[0]),G.byteToFloat(n[1]),G.byteToFloat(n[2]),G.byteToFloat(n[3])];t=new Array(i);for(let o=0;o<i;o+=5)t[o]=n[o],t[o+1]=G.byteToFloat(n[o+1]),t[o+2]=G.byteToFloat(n[o+2]),t[o+3]=G.byteToFloat(n[o+3]),t[o+4]=G.byteToFloat(n[o+4]);return t}function ahe(e,t){let n=e.uri??e;return l(t)?t.getDerivedResource({url:n}):we.createIfNeeded(n)}function k$e(e){let t=e.wsen;if(l(t))return t;let n=e.wsenDegrees;if(!l(n))return;let i=n.length;if(i===ae.packedLength)return[D.toRadians(n[0]),D.toRadians(n[1]),D.toRadians(n[2]),D.toRadians(n[3])];t=new Array(i);for(let o=0;o<i;o+=5)t[o]=n[o],t[o+1]=D.toRadians(n[o+1]),t[o+2]=D.toRadians(n[o+2]),t[o+3]=D.toRadians(n[o+3]),t[o+4]=D.toRadians(n[o+4]);return t}function U$e(e){let t=e.length;if(gl.magnitude=1,t===2)return gl.clock=e[0],gl.cone=e[1],d.fromSpherical(gl,Zi),[Zi.x,Zi.y,Zi.z];let n=new Array(t/3*4);for(let i=0,o=0;i<t;i+=3,o+=4)n[o]=e[i],gl.clock=e[i+1],gl.cone=e[i+2],d.fromSpherical(gl,Zi),n[o+1]=Zi.x,n[o+2]=Zi.y,n[o+3]=Zi.z;return n}function G$e(e){let t=e.length;if(t===3)return gl.clock=e[0],gl.cone=e[1],gl.magnitude=e[2],d.fromSpherical(gl,Zi),[Zi.x,Zi.y,Zi.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],gl.clock=e[i+1],gl.cone=e[i+2],gl.magnitude=e[i+3],d.fromSpherical(gl,Zi),n[i+1]=Zi.x,n[i+2]=Zi.y,n[i+3]=Zi.z;return n}function z$e(e){let t=e.length;if(t===3)return Oc.longitude=e[0],Oc.latitude=e[1],Oc.height=e[2],te.default.cartographicToCartesian(Oc,Zi),[Zi.x,Zi.y,Zi.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],Oc.longitude=e[i+1],Oc.latitude=e[i+2],Oc.height=e[i+3],te.default.cartographicToCartesian(Oc,Zi),n[i+1]=Zi.x,n[i+2]=Zi.y,n[i+3]=Zi.z;return n}function V$e(e){let t=e.length;if(t===3)return Oc.longitude=D.toRadians(e[0]),Oc.latitude=D.toRadians(e[1]),Oc.height=e[2],te.default.cartographicToCartesian(Oc,Zi),[Zi.x,Zi.y,Zi.z];let n=new Array(t);for(let i=0;i<t;i+=4)n[i]=e[i],Oc.longitude=D.toRadians(e[i+1]),Oc.latitude=D.toRadians(e[i+2]),Oc.height=e[i+3],te.default.cartographicToCartesian(Oc,Zi),n[i+1]=Zi.x,n[i+2]=Zi.y,n[i+3]=Zi.z;return n}function mq(e){let t=e.cartesian;if(l(t))return t;let n=e.cartesianVelocity;if(l(n))return n;let i=e.unitCartesian;if(l(i))return i;let o=e.unitSpherical;if(l(o))return U$e(o);let r=e.spherical;if(l(r))return G$e(r);let s=e.cartographicRadians;if(l(s))return z$e(s);let a=e.cartographicDegrees;if(l(a))return V$e(a);throw new ce(`${JSON.stringify(e)} is not a valid CZML interval.`)}function che(e,t){d.unpack(e,t,Zi),d.normalize(Zi,Zi),d.pack(Zi,e,t)}function H$e(e){let t=mq(e);if(t.length===3)return che(t,0),t;for(let n=1;n<t.length;n+=4)che(t,n);return t}function lhe(e,t){Le.unpack(e,t,_3),Le.normalize(_3,_3),Le.pack(_3,e,t)}function W$e(e){let t=e.unitQuaternion;if(l(t)){if(t.length===4)return lhe(t,0),t;for(let n=1;n<t.length;n+=5)lhe(t,n)}return t}function uhe(e){return typeof e=="boolean"?Boolean:typeof e=="number"?Number:typeof e=="string"?String:e.hasOwnProperty("array")?Array:e.hasOwnProperty("boolean")?Boolean:e.hasOwnProperty("boundingRectangle")?Xe:e.hasOwnProperty("cartesian2")?k:e.hasOwnProperty("cartesian")||e.hasOwnProperty("spherical")||e.hasOwnProperty("cartographicRadians")||e.hasOwnProperty("cartographicDegrees")?d:e.hasOwnProperty("unitCartesian")||e.hasOwnProperty("unitSpherical")?$_:e.hasOwnProperty("rgba")||e.hasOwnProperty("rgbaf")?G:e.hasOwnProperty("arcType")?un:e.hasOwnProperty("classificationType")?Jn:e.hasOwnProperty("colorBlendMode")?al:e.hasOwnProperty("cornerType")?Ji:e.hasOwnProperty("heightReference")?Ze:e.hasOwnProperty("horizontalOrigin")?Ri:e.hasOwnProperty("date")?K:e.hasOwnProperty("labelStyle")?ar:e.hasOwnProperty("number")?Number:e.hasOwnProperty("nearFarScalar")?Yt:e.hasOwnProperty("distanceDisplayCondition")?Ut:e.hasOwnProperty("object")||e.hasOwnProperty("value")?Object:e.hasOwnProperty("unitQuaternion")?Le:e.hasOwnProperty("shadowMode")?Dn:e.hasOwnProperty("string")?String:e.hasOwnProperty("stripeOrientation")?Wm:e.hasOwnProperty("wsen")||e.hasOwnProperty("wsenDegrees")?ae:e.hasOwnProperty("uri")?XD.default:e.hasOwnProperty("verticalOrigin")?Wn:Object}function j$e(e,t,n){switch(e){case un:return un[t.arcType??t];case Array:return t.array;case Boolean:return t.boolean??t;case Xe:return t.boundingRectangle;case k:return t.cartesian2;case d:return mq(t);case $_:return H$e(t);case G:return Q$e(t);case Jn:return Jn[t.classificationType??t];case al:return al[t.colorBlendMode??t];case Ji:return Ji[t.cornerType??t];case Ze:return Ze[t.heightReference??t];case Ri:return Ri[t.horizontalOrigin??t];case Image:return ahe(t,n);case K:return K.fromIso8601(t.date??t);case ar:return ar[t.labelStyle??t];case Number:return t.number??t;case Yt:return t.nearFarScalar;case Ut:return t.distanceDisplayCondition;case Object:return t.object??t.value??t;case Le:return W$e(t);case fh:return t.number??t;case YD:return YD[t.portionToDisplay??t];case Dn:return Dn[t.shadowMode??t.shadows??t];case String:return t.string??t;case Wm:return Wm[t.stripeOrientation??t];case ae:return k$e(t);case XD.default:return ahe(t,n);case Wn:return Wn[t.verticalOrigin??t];default:throw new ce(`Unknown CzmlDataSource interval type: ${e}`)}}var Y$e={HERMITE:h3,LAGRANGE:m3,LINEAR:Tb};function y3(e,t){let n=e.interpolationAlgorithm,i=e.interpolationDegree;(l(n)||l(i))&&t.setInterpolationOptions({interpolationAlgorithm:Y$e[n],interpolationDegree:i});let o=e.forwardExtrapolationType;l(o)&&(t.forwardExtrapolationType=rd[o]);let r=e.forwardExtrapolationDuration;l(r)&&(t.forwardExtrapolationDuration=r);let s=e.backwardExtrapolationType;l(s)&&(t.backwardExtrapolationType=rd[s]);let a=e.backwardExtrapolationDuration;l(a)&&(t.backwardExtrapolationDuration=a)}var fhe={iso8601:void 0};function Er(e){if(l(e))return fhe.iso8601=e,Rn.fromIso8601(fhe)}function Aq(e){let t=je.MAXIMUM_INTERVAL.clone();return t.data=e,t}function dhe(e){let t=new ml;return t.intervals.addInterval(Aq(e)),t}function hhe(e){let t=new nc(e.referenceFrame);return t.intervals.addInterval(Aq(e)),t}function C3(e,t,n,i,o,r,s){let a=Er(i.interval);l(o)&&(l(a)?a=Rn.intersect(a,o,BE):a=o);let c,u,f,h=!l(i.reference)&&!l(i.velocityReference),A=l(a)&&!a.equals(je.MAXIMUM_INTERVAL);if(i.delete===!0){if(!A){t[n]=void 0;return}return bhe(t[n],a)}let g=!1;if(h){if(u=j$e(e,i,r),!l(u))return;c=e.packedLength??1,f=u.length??1,g=!l(i.array)&&typeof u!="string"&&f>c&&e!==Object}let m=typeof e.unpack=="function"&&e!==fh;if(!g&&!A){h?t[n]=new ci(m?e.unpack(u,0):u):t[n]=she(e,s,i);return}let _=t[n],y,C=i.epoch;if(l(C)&&(y=K.fromIso8601(C)),g&&!A){_ instanceof ad||(t[n]=_=new ad(e)),_.addSamplesPackedArray(u,y),y3(i,_);return}let E;if(!g&&A){a=a.clone(),h?a.data=m?e.unpack(u,0):u:a.data=she(e,s,i),l(_)||(t[n]=_=h?new J_:new ml),h&&_ instanceof J_?_.intervals.addInterval(a):_ instanceof ml?(h&&(a.data=new ci(a.data)),_.intervals.addInterval(a)):(t[n]=_=dhe(_),h&&(a.data=new ci(a.data)),_.intervals.addInterval(a));return}l(_)||(t[n]=_=new ml),_ instanceof ml||(t[n]=_=dhe(_));let I=_.intervals;E=I.findInterval(a),(!l(E)||!(E.data instanceof ad))&&(E=a.clone(),E.data=new ad(e),I.addInterval(E)),E.data.addSamplesPackedArray(u,y),y3(i,E.data)}function bhe(e,t){if(e instanceof ad){e.removeSamples(t);return}else if(e instanceof J_){e.intervals.removeInterval(t);return}else if(e instanceof ml){let n=e.intervals;for(let i=0;i<n.length;++i){let o=Rn.intersect(n.get(i),t,BE);o.isEmpty||bhe(o.data,t)}n.removeInterval(t);return}}function Ce(e,t,n,i,o,r,s){if(l(i))if(Array.isArray(i))for(let a=0,c=i.length;a<c;++a)C3(e,t,n,i[a],o,r,s);else C3(e,t,n,i,o,r,s)}function mhe(e,t,n,i,o,r){let s=Er(n.interval);l(i)&&(l(s)?s=Rn.intersect(s,i,BE):s=i);let a=l(n.cartesianVelocity)?1:0,c=d.packedLength*(a+1),u,f,h=!l(n.reference),A=l(s)&&!s.equals(je.MAXIMUM_INTERVAL);if(n.delete===!0){if(!A){e[t]=void 0;return}return The(e[t],s)}let g,m=!1;if(h&&(l(n.referenceFrame)&&(g=eo[n.referenceFrame]),g=g??eo.FIXED,u=mq(n),f=u.length??1,m=f>c),!m&&!A){h?e[t]=new Ol(d.unpack(u),g):e[t]=qD(r,n.reference);return}let _=e[t],y,C=n.epoch;if(l(C)&&(y=K.fromIso8601(C)),m&&!A){(!(_ instanceof ic)||l(g)&&_.referenceFrame!==g)&&(e[t]=_=new ic(g,a)),_.addSamplesPackedArray(u,y),y3(n,_);return}let E;if(!m&&A){s=s.clone(),h?s.data=d.unpack(u):s.data=qD(r,n.reference),l(_)||(h?_=new X_(g):_=new nc(g),e[t]=_),h&&_ instanceof X_&&l(g)&&_.referenceFrame===g?_.intervals.addInterval(s):_ instanceof nc?(h&&(s.data=new Ol(s.data,g)),_.intervals.addInterval(s)):(e[t]=_=hhe(_),h&&(s.data=new Ol(s.data,g)),_.intervals.addInterval(s));return}l(_)?_ instanceof nc||(e[t]=_=hhe(_)):e[t]=_=new nc(g);let I=_.intervals;E=I.findInterval(s),(!l(E)||!(E.data instanceof ic)||l(g)&&E.data.referenceFrame!==g)&&(E=s.clone(),E.data=new ic(g,a),I.addInterval(E)),E.data.addSamplesPackedArray(u,y),y3(n,E.data)}function The(e,t){if(e instanceof ic){e.removeSamples(t);return}else if(e instanceof X_){e.intervals.removeInterval(t);return}else if(e instanceof nc){let n=e.intervals;for(let i=0;i<n.length;++i){let o=Rn.intersect(n.get(i),t,BE);o.isEmpty||The(o.data,t)}n.removeInterval(t);return}}function She(e,t,n,i,o,r){if(l(n))if(Array.isArray(n))for(let s=0,a=n.length;s<a;++s)mhe(e,t,n[s],i,o,r);else mhe(e,t,n,i,o,r)}function Ahe(e,t,n,i){l(n.references)?E3(e,t,n.references,n.interval,i,HD,ml):(l(n.cartesian2)?n.array=k.unpackArray(n.cartesian2):l(n.cartesian)&&(n.array=k.unpackArray(n.cartesian)),l(n.array)&&Ce(Array,e,t,n,void 0,void 0,i))}function phe(e,t,n,i,o,r){let s=Er(n.interval);l(i)&&(l(s)?s=Rn.intersect(s,i,BE):s=i);let a=e[t],c,u;if(l(s)){a instanceof vD||(a=new vD,e[t]=a);let h=a.intervals;u=h.findInterval({start:s.start,stop:s.stop}),l(u)?c=u.data:(u=s.clone(),h.addInterval(u))}else c=a;let f;l(n.solidColor)?(c instanceof Jt||(c=new Jt),f=n.solidColor,Ce(G,c,"color",f.color,void 0,void 0,r)):l(n.grid)?(c instanceof UD||(c=new UD),f=n.grid,Ce(G,c,"color",f.color,void 0,o,r),Ce(Number,c,"cellAlpha",f.cellAlpha,void 0,o,r),Ce(k,c,"lineCount",f.lineCount,void 0,o,r),Ce(k,c,"lineThickness",f.lineThickness,void 0,o,r),Ce(k,c,"lineOffset",f.lineOffset,void 0,o,r)):l(n.image)?(c instanceof wC||(c=new wC),f=n.image,Ce(Image,c,"image",f.image,void 0,o,r),Ce(k,c,"repeat",f.repeat,void 0,o,r),Ce(G,c,"color",f.color,void 0,o,r),Ce(Boolean,c,"transparent",f.transparent,void 0,o,r)):l(n.stripe)?(c instanceof WD||(c=new WD),f=n.stripe,Ce(Wm,c,"orientation",f.orientation,void 0,o,r),Ce(G,c,"evenColor",f.evenColor,void 0,o,r),Ce(G,c,"oddColor",f.oddColor,void 0,o,r),Ce(Number,c,"offset",f.offset,void 0,o,r),Ce(Number,c,"repeat",f.repeat,void 0,o,r)):l(n.polylineOutline)?(c instanceof TE||(c=new TE),f=n.polylineOutline,Ce(G,c,"color",f.color,void 0,o,r),Ce(G,c,"outlineColor",f.outlineColor,void 0,o,r),Ce(Number,c,"outlineWidth",f.outlineWidth,void 0,o,r)):l(n.polylineGlow)?(c instanceof VD||(c=new VD),f=n.polylineGlow,Ce(G,c,"color",f.color,void 0,o,r),Ce(Number,c,"glowPower",f.glowPower,void 0,o,r),Ce(Number,c,"taperPower",f.taperPower,void 0,o,r)):l(n.polylineArrow)?(c instanceof GD||(c=new GD),f=n.polylineArrow,Ce(G,c,"color",f.color,void 0,void 0,r)):l(n.polylineDash)?(c instanceof zD||(c=new zD),f=n.polylineDash,Ce(G,c,"color",f.color,void 0,void 0,r),Ce(G,c,"gapColor",f.gapColor,void 0,void 0,r),Ce(Number,c,"dashLength",f.dashLength,void 0,o,r),Ce(Number,c,"dashPattern",f.dashPattern,void 0,o,r)):l(n.checkerboard)&&(c instanceof SD||(c=new SD),f=n.checkerboard,Ce(G,c,"evenColor",f.evenColor,void 0,o,r),Ce(G,c,"oddColor",f.oddColor,void 0,o,r),Ce(k,c,"repeat",f.repeat,void 0,o,r)),l(u)?u.data=c:e[t]=c}function ku(e,t,n,i,o,r){if(l(n))if(Array.isArray(n))for(let s=0,a=n.length;s<a;++s)phe(e,t,n[s],i,o,r);else phe(e,t,n,i,o,r)}function q$e(e,t,n,i){let o=t.name;l(o)&&(e.name=t.name)}function K$e(e,t,n,i){let o=t.description;l(o)&&Ce(String,e,"description",o,void 0,i,n)}function X$e(e,t,n,i){let o=t.position;l(o)&&She(e,"position",o,void 0,i,n)}function J$e(e,t,n,i){let o=t.viewFrom;l(o)&&Ce(d,e,"viewFrom",o,void 0,i,n)}function Z$e(e,t,n,i){let o=t.orientation;l(o)&&Ce(Le,e,"orientation",o,void 0,i,n)}function $$e(e,t,n,i){let o=t.properties;if(l(o)){l(e.properties)||(e.properties=new Ql);for(let r in o)if(o.hasOwnProperty(r)){e.properties.hasProperty(r)||e.properties.addProperty(r);let s=o[r];if(Array.isArray(s))for(let a=0,c=s.length;a<c;++a)C3(uhe(s[a]),e.properties,r,s[a],void 0,i,n);else C3(uhe(s),e.properties,r,s,void 0,i,n)}}}function E3(e,t,n,i,o,r,s){let a=n.map(function(c){return qD(o,c)});if(l(i)){i=Er(i);let c=e[t];if(!(c instanceof s)){let u=new s;u.intervals.addInterval(Aq(c)),e[t]=c=u}i.data=new r(a),c.intervals.addInterval(i)}else e[t]=new r(a)}function ghe(e,t,n,i){let o=n.references;l(o)?E3(e,t,o,n.interval,i,HD,ml):Ce(Array,e,t,n,void 0,void 0,i)}function _he(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)ghe(e,t,n[o],i);else ghe(e,t,n,i)}function yhe(e,t,n,i){let o=n.references;l(o)?E3(e,t,o,n.interval,i,j_,nc):(l(n.cartesian)?n.array=d.unpackArray(n.cartesian):l(n.cartographicRadians)?n.array=d.fromRadiansArrayHeights(n.cartographicRadians,te.default):l(n.cartographicDegrees)&&(n.array=d.fromDegreesArrayHeights(n.cartographicDegrees,te.default)),l(n.array)&&Ce(Array,e,t,n,void 0,void 0,i))}function JD(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)yhe(e,t,n[o],i);else yhe(e,t,n,i)}function eet(e){return d.unpackArray(e)}function tet(e){return d.fromRadiansArrayHeights(e,te.default)}function net(e){return d.fromDegreesArrayHeights(e,te.default)}function Che(e,t,n,i){let o=n.references;if(l(o)){let r=o.map(function(s){let a={};return E3(a,"positions",s,n.interval,i,j_,nc),a.positions});e[t]=new j_(r)}else l(n.cartesian)?n.array=n.cartesian.map(eet):l(n.cartographicRadians)?n.array=n.cartographicRadians.map(tet):l(n.cartographicDegrees)&&(n.array=n.cartographicDegrees.map(net)),l(n.array)&&Ce(Array,e,t,n,void 0,void 0,i)}function iet(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;++o)Che(e,t,n[o],i);else Che(e,t,n,i)}function oet(e,t,n,i){if(l(n))if(Array.isArray(n))for(let o=0,r=n.length;o<r;o++)Ahe(e,t,n[o],i);else Ahe(e,t,n,i)}function ret(e,t,n,i){let o=t.availability;if(!l(o))return;let r;if(Array.isArray(o))for(let s=0,a=o.length;s<a;++s)l(r)||(r=new hs),r.addInterval(Er(o[s]));else r=new hs,r.addInterval(Er(o));e.availability=r}function set(e,t,n,i,o){l(t)&&Ce($_,e,"alignedAxis",t,n,i,o)}function aet(e,t,n,i){let o=t.billboard;if(!l(o))return;let r=Er(o.interval),s=e.billboard;l(s)||(e.billboard=s=new jc),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Image,s,"image",o.image,r,i,n),Ce(Number,s,"scale",o.scale,r,i,n),Ce(k,s,"pixelOffset",o.pixelOffset,r,i,n),Ce(d,s,"eyeOffset",o.eyeOffset,r,i,n),Ce(Ri,s,"horizontalOrigin",o.horizontalOrigin,r,i,n),Ce(Wn,s,"verticalOrigin",o.verticalOrigin,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(G,s,"color",o.color,r,i,n),Ce(fh,s,"rotation",o.rotation,r,i,n),set(s,o.alignedAxis,r,i,n),Ce(Boolean,s,"sizeInMeters",o.sizeInMeters,r,i,n),Ce(Number,s,"width",o.width,r,i,n),Ce(Number,s,"height",o.height,r,i,n),Ce(Yt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ce(Yt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ce(Yt,s,"pixelOffsetScaleByDistance",o.pixelOffsetScaleByDistance,r,i,n),Ce(Xe,s,"imageSubRegion",o.imageSubRegion,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function cet(e,t,n,i){let o=t.box;if(!l(o))return;let r=Er(o.interval),s=e.box;l(s)||(e.box=s=new wI),Ce(Boolean,s,"show",o.show,r,i,n),Ce(d,s,"dimensions",o.dimensions,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function uet(e,t,n,i){let o=t.corridor;if(!l(o))return;let r=Er(o.interval),s=e.corridor;l(s)||(e.corridor=s=new DI),Ce(Boolean,s,"show",o.show,r,i,n),JD(s,"positions",o.positions,n),Ce(Number,s,"width",o.width,r,i,n),Ce(Number,s,"height",o.height,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ce(Ze,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ce(Ji,s,"cornerType",o.cornerType,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n)}function fet(e,t,n,i){let o=t.cylinder;if(!l(o))return;let r=Er(o.interval),s=e.cylinder;l(s)||(e.cylinder=s=new vI),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Number,s,"length",o.length,r,i,n),Ce(Number,s,"topRadius",o.topRadius,r,i,n),Ce(Number,s,"bottomRadius",o.bottomRadius,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Number,s,"numberOfVerticalLines",o.numberOfVerticalLines,r,i,n),Ce(Number,s,"slices",o.slices,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function det(e,t){let n=e.version;if(l(n)&&typeof n=="string"){let r=n.split(".");if(r.length===2){if(r[0]!=="1")throw new ce("Cesium only supports CZML version 1.");t._version=n}}if(!l(t._version))throw new ce("CZML version information invalid. It is expected to be a property on the document object in the <Major>.<Minor> version format.");let i=t._documentPacket;l(e.name)&&(i.name=e.name);let o=e.clock;if(l(o)){let r=i.clock;l(r)?(r.interval=o.interval??r.interval,r.currentTime=o.currentTime??r.currentTime,r.range=o.range??r.range,r.step=o.step??r.step,r.multiplier=o.multiplier??r.multiplier):i.clock={interval:o.interval,currentTime:o.currentTime,range:o.range,step:o.step,multiplier:o.multiplier}}}function het(e,t,n,i){let o=t.ellipse;if(!l(o))return;let r=Er(o.interval),s=e.ellipse;l(s)||(e.ellipse=s=new PI),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Number,s,"semiMajorAxis",o.semiMajorAxis,r,i,n),Ce(Number,s,"semiMinorAxis",o.semiMinorAxis,r,i,n),Ce(Number,s,"height",o.height,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ce(Ze,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ce(fh,s,"rotation",o.rotation,r,i,n),Ce(fh,s,"stRotation",o.stRotation,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Number,s,"numberOfVerticalLines",o.numberOfVerticalLines,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n)}function met(e,t,n,i){let o=t.ellipsoid;if(!l(o))return;let r=Er(o.interval),s=e.ellipsoid;l(s)||(e.ellipsoid=s=new RI),Ce(Boolean,s,"show",o.show,r,i,n),Ce(d,s,"radii",o.radii,r,i,n),Ce(d,s,"innerRadii",o.innerRadii,r,i,n),Ce(Number,s,"minimumClock",o.minimumClock,r,i,n),Ce(Number,s,"maximumClock",o.maximumClock,r,i,n),Ce(Number,s,"minimumCone",o.minimumCone,r,i,n),Ce(Number,s,"maximumCone",o.maximumCone,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Number,s,"stackPartitions",o.stackPartitions,r,i,n),Ce(Number,s,"slicePartitions",o.slicePartitions,r,i,n),Ce(Number,s,"subdivisions",o.subdivisions,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function Aet(e,t,n,i){let o=t.label;if(!l(o))return;let r=Er(o.interval),s=e.label;l(s)||(e.label=s=new cm),Ce(Boolean,s,"show",o.show,r,i,n),Ce(String,s,"text",o.text,r,i,n),Ce(String,s,"font",o.font,r,i,n),Ce(ar,s,"style",o.style,r,i,n),Ce(Number,s,"scale",o.scale,r,i,n),Ce(Boolean,s,"showBackground",o.showBackground,r,i,n),Ce(G,s,"backgroundColor",o.backgroundColor,r,i,n),Ce(k,s,"backgroundPadding",o.backgroundPadding,r,i,n),Ce(k,s,"pixelOffset",o.pixelOffset,r,i,n),Ce(d,s,"eyeOffset",o.eyeOffset,r,i,n),Ce(Ri,s,"horizontalOrigin",o.horizontalOrigin,r,i,n),Ce(Wn,s,"verticalOrigin",o.verticalOrigin,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(G,s,"fillColor",o.fillColor,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Yt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ce(Yt,s,"pixelOffsetScaleByDistance",o.pixelOffsetScaleByDistance,r,i,n),Ce(Yt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function pet(e,t,n,i){let o=t.model;if(!l(o))return;let r=Er(o.interval),s=e.model;l(s)||(e.model=s=new Dg),Ce(Boolean,s,"show",o.show,r,i,n),Ce(XD.default,s,"uri",o.gltf,r,i,n),Ce(Number,s,"scale",o.scale,r,i,n),Ce(Number,s,"minimumPixelSize",o.minimumPixelSize,r,i,n),Ce(Number,s,"maximumScale",o.maximumScale,r,i,n),Ce(Boolean,s,"incrementallyLoadTextures",o.incrementallyLoadTextures,r,i,n),Ce(Boolean,s,"runAnimations",o.runAnimations,r,i,n),Ce(Boolean,s,"clampAnimations",o.clampAnimations,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(G,s,"silhouetteColor",o.silhouetteColor,r,i,n),Ce(Number,s,"silhouetteSize",o.silhouetteSize,r,i,n),Ce(G,s,"color",o.color,r,i,n),Ce(al,s,"colorBlendMode",o.colorBlendMode,r,i,n),Ce(Number,s,"colorBlendAmount",o.colorBlendAmount,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n);let a,c,u=o.nodeTransformations;if(l(u))if(Array.isArray(u))for(a=0,c=u.length;a<c;++a)Ehe(s,u[a],r,i,n);else Ehe(s,u,r,i,n);let f=o.articulations;if(l(f))if(Array.isArray(f))for(a=0,c=f.length;a<c;++a)Ihe(s,f[a],r,i,n);else Ihe(s,f,r,i,n)}function Ehe(e,t,n,i,o){let r=Er(t.interval);l(n)&&(l(r)?r=Rn.intersect(r,n,BE):r=n);let s=e.nodeTransformations,a=Object.keys(t);for(let c=0,u=a.length;c<u;++c){let f=a[c];if(f==="interval")continue;let h=t[f];if(!l(h))continue;l(s)||(e.nodeTransformations=s=new Ql),s.hasProperty(f)||s.addProperty(f);let A=s[f];l(A)||(s[f]=A=new MI),Ce(d,A,"translation",h.translation,r,i,o),Ce(Le,A,"rotation",h.rotation,r,i,o),Ce(d,A,"scale",h.scale,r,i,o)}}function Ihe(e,t,n,i,o){let r=Er(t.interval);l(n)&&(l(r)?r=Rn.intersect(r,n,BE):r=n);let s=e.articulations,a=Object.keys(t);for(let c=0,u=a.length;c<u;++c){let f=a[c];if(f==="interval")continue;let h=t[f];l(h)&&(l(s)||(e.articulations=s=new Ql),s.hasProperty(f)||s.addProperty(f),Ce(Number,s,f,h,r,i,o))}}function get(e,t,n,i){let o=t.path;if(!l(o))return;let r=Er(o.interval),s=e.path;l(s)||(e.path=s=new vg),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Number,s,"leadTime",o.leadTime,r,i,n),Ce(Number,s,"trailTime",o.trailTime,r,i,n),Ce(Number,s,"width",o.width,r,i,n),Ce(Number,s,"resolution",o.resolution,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function _et(e,t,n,i){let o=t.point;if(!l(o))return;let r=Er(o.interval),s=e.point;l(s)||(e.point=s=new LI),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Number,s,"pixelSize",o.pixelSize,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(G,s,"color",o.color,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Yt,s,"scaleByDistance",o.scaleByDistance,r,i,n),Ce(Yt,s,"translucencyByDistance",o.translucencyByDistance,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Number,s,"disableDepthTestDistance",o.disableDepthTestDistance,r,i,n)}function KD(e){this.polygon=e,this._definitionChanged=new _e}Object.defineProperties(KD.prototype,{isConstant:{get:function(){let e=this.polygon._positions,t=this.polygon._holes;return(!l(e)||e.isConstant)&&(!l(t)||t.isConstant)}},definitionChanged:{get:function(){return this._definitionChanged}}});KD.prototype.getValue=function(e,t){let n;l(this.polygon._positions)&&(n=this.polygon._positions.getValue(e));let i;return l(this.polygon._holes)&&(i=this.polygon._holes.getValue(e),l(i)&&(i=i.map(function(o){return new xc(o)}))),l(t)?(t.positions=n,t.holes=i,t):new xc(n,i)};KD.prototype.equals=function(e){return this===e||e instanceof KD&&j.equals(this.polygon._positions,e.polygon._positions)&&j.equals(this.polygon._holes,e.polygon._holes)};function yet(e,t,n,i){let o=t.polygon;if(!l(o))return;let r=Er(o.interval),s=e.polygon;l(s)||(e.polygon=s=new lm),Ce(Boolean,s,"show",o.show,r,i,n),JD(s,"_positions",o.positions,n),iet(s,"_holes",o.holes,n),(l(s._positions)||l(s._holes))&&(s.hierarchy=new KD(s)),Ce(Number,s,"height",o.height,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ce(Ze,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ce(fh,s,"stRotation",o.stRotation,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Boolean,s,"perPositionHeight",o.perPositionHeight,r,i,n),Ce(Boolean,s,"closeTop",o.closeTop,r,i,n),Ce(Boolean,s,"closeBottom",o.closeBottom,r,i,n),Ce(un,s,"arcType",o.arcType,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n)}function Cet(e){return e?un.GEODESIC:un.NONE}function Eet(e,t,n,i){let o=t.polyline;if(!l(o))return;let r=Er(o.interval),s=e.polyline;if(l(s)||(e.polyline=s=new $c),Ce(Boolean,s,"show",o.show,r,i,n),JD(s,"positions",o.positions,n),Ce(Number,s,"width",o.width,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),ku(s,"material",o.material,r,i,n),ku(s,"depthFailMaterial",o.depthFailMaterial,r,i,n),Ce(un,s,"arcType",o.arcType,r,i,n),Ce(Boolean,s,"clampToGround",o.clampToGround,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n),l(o.followSurface)&&!l(o.arcType)){let a={};Ce(Boolean,a,"followSurface",o.followSurface,r,i,n),s.arcType=F$e(a.followSurface,Cet)}}function Iet(e,t,n,i){let o=t.polylineVolume;if(!l(o))return;let r=Er(o.interval),s=e.polylineVolume;l(s)||(e.polylineVolume=s=new OI),JD(s,"positions",o.positions,n),oet(s,"shape",o.shape,n),Ce(Boolean,s,"show",o.show,r,i,n),Ce(Ji,s,"cornerType",o.cornerType,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function xet(e,t,n,i){let o=t.rectangle;if(!l(o))return;let r=Er(o.interval),s=e.rectangle;l(s)||(e.rectangle=s=new um),Ce(Boolean,s,"show",o.show,r,i,n),Ce(ae,s,"coordinates",o.coordinates,r,i,n),Ce(Number,s,"height",o.height,r,i,n),Ce(Ze,s,"heightReference",o.heightReference,r,i,n),Ce(Number,s,"extrudedHeight",o.extrudedHeight,r,i,n),Ce(Ze,s,"extrudedHeightReference",o.extrudedHeightReference,r,i,n),Ce(fh,s,"rotation",o.rotation,r,i,n),Ce(fh,s,"stRotation",o.stRotation,r,i,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n),Ce(Jn,s,"classificationType",o.classificationType,r,i,n),Ce(Number,s,"zIndex",o.zIndex,r,i,n)}function bet(e,t,n,i){let o=t.tileset;if(!l(o))return;let r=Er(o.interval),s=e.tileset;l(s)||(e.tileset=s=new NI),Ce(Boolean,s,"show",o.show,r,i,n),Ce(XD.default,s,"uri",o.uri,r,i,n),Ce(Number,s,"maximumScreenSpaceError",o.maximumScreenSpaceError,r,i,n)}function Tet(e,t,n,i){let o=t.wall;if(!l(o))return;let r=Er(o.interval),s=e.wall;l(s)||(e.wall=s=new Pg),Ce(Boolean,s,"show",o.show,r,i,n),JD(s,"positions",o.positions,n),_he(s,"minimumHeights",o.minimumHeights,n),_he(s,"maximumHeights",o.maximumHeights,n),Ce(Number,s,"granularity",o.granularity,r,i,n),Ce(Boolean,s,"fill",o.fill,r,i,n),ku(s,"material",o.material,r,i,n),Ce(Boolean,s,"outline",o.outline,r,i,n),Ce(G,s,"outlineColor",o.outlineColor,r,i,n),Ce(Number,s,"outlineWidth",o.outlineWidth,r,i,n),Ce(Dn,s,"shadows",o.shadows,r,i,n),Ce(Ut,s,"distanceDisplayCondition",o.distanceDisplayCondition,r,i,n)}function xhe(e,t,n,i,o){let r=e.id;if(l(r)||(r=Xn()),hq=r,!l(o._version)&&r!=="document")throw new ce("The first CZML packet is required to be the document object.");if(e.delete===!0)t.removeById(r);else if(r==="document")det(e,o);else{let s=t.getOrCreateEntity(r),a=e.parent;l(a)&&(s.parent=t.getOrCreateEntity(a));for(let c=n.length-1;c>-1;c--)n[c](s,e,t,i)}hq=void 0}function wet(e){let t,n=e._documentPacket.clock;if(!l(n)){if(!l(e._clock)){let o=e._entityCollection.computeAvailability();if(!o.start.equals(je.MINIMUM_VALUE)){let r=o.start,s=o.stop,a=K.secondsDifference(s,r),c=Math.round(a/120);return t=new Hm,t.startTime=K.clone(r),t.stopTime=K.clone(s),t.clockRange=As.LOOP_STOP,t.multiplier=c,t.currentTime=K.clone(r),t.clockStep=vo.SYSTEM_CLOCK_MULTIPLIER,e._clock=t,!0}}return!1}l(e._clock)?t=e._clock.clone():(t=new Hm,t.startTime=je.MINIMUM_VALUE.clone(),t.stopTime=je.MAXIMUM_VALUE.clone(),t.currentTime=je.MINIMUM_VALUE.clone(),t.clockRange=As.LOOP_STOP,t.clockStep=vo.SYSTEM_CLOCK_MULTIPLIER,t.multiplier=1);let i=Er(n.interval);return l(i)&&(t.startTime=i.start,t.stopTime=i.stop),l(n.currentTime)&&(t.currentTime=K.fromIso8601(n.currentTime)),l(n.range)&&(t.clockRange=As[n.range]??As.LOOP_STOP),l(n.step)&&(t.clockStep=vo[n.step]??vo.SYSTEM_CLOCK_MULTIPLIER),l(n.multiplier)&&(t.multiplier=n.multiplier),t.equals(e._clock)?!1:(e._clock=t.clone(e._clock),!0)}function whe(e,t,n,i){n=n??V.EMPTY_OBJECT;let o=t,r=n.sourceUri,s=n.credit;if(typeof s=="string"&&(s=new Dt(s)),e._credit=s,typeof t=="string"||t instanceof we){t=we.createIfNeeded(t),o=t.fetchJson(),r=r??t.clone();let a=e._resourceCredits,c=t.credits;if(l(c)){let u=c.length;for(let f=0;f<u;f++)a.push(c[f])}}return r=we.createIfNeeded(r),ms.setLoading(e,!0),Promise.resolve(o).then(function(a){return Bet(e,a,r,i)}).catch(function(a){return ms.setLoading(e,!1),e._error.raiseEvent(e,a),console.log(a),Promise.reject(a)})}function Bet(e,t,n,i){ms.setLoading(e,!0);let o=e._entityCollection;i&&(e._version=void 0,e._documentPacket=new Bhe,o.removeAll()),Ps._processCzml(t,o,n,void 0,e);let r=wet(e),s=e._documentPacket;return l(s.name)&&e._name!==s.name?(e._name=s.name,r=!0):!l(e._name)&&l(n)&&(e._name=W_(n.getUrlComponent()),r=!0),ms.setLoading(e,!1),r&&e._changed.raiseEvent(e),e}function Bhe(){this.name=void 0,this.clock=void 0}function Ps(e){this._name=e,this._changed=new _e,this._error=new _e,this._isLoading=!1,this._loading=new _e,this._clock=void 0,this._documentPacket=new Bhe,this._version=void 0,this._entityCollection=new Oa(this),this._entityCluster=new od,this._credit=void 0,this._resourceCredits=[]}Ps.load=function(e,t){return new Ps().load(e,t)};Object.defineProperties(Ps.prototype,{name:{get:function(){return this._name}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}}});Ps.updaters=[aet,cet,uet,fet,het,met,Aet,pet,q$e,K$e,get,_et,yet,Eet,Iet,$$e,xet,X$e,bet,J$e,Tet,Z$e,ret];Ps.registerUpdater=function(e){Ps.updaters.includes(e)||Ps.updaters.push(e)};Ps.unregisterUpdater=function(e){if(Ps.updaters.includes(e)){let t=Ps.updaters.indexOf(e);Ps.updaters.splice(t,1)}};Ps.prototype.process=function(e,t){return whe(this,e,t,!1)};Ps.prototype.load=function(e,t){return whe(this,e,t,!0)};Ps.prototype.update=function(e){return!0};Ps.processPacketData=Ce;Ps.processPositionPacketData=She;Ps.processMaterialPacketData=ku;Ps._processCzml=function(e,t,n,i,o){if(i=i??Ps.updaters,Array.isArray(e))for(let r=0,s=e.length;r<s;++r)xhe(e[r],t,i,n,o);else xhe(e,t,i,n,o)};var I3=Ps;function _l(){this._dataSources=[],this._dataSourceAdded=new _e,this._dataSourceRemoved=new _e,this._dataSourceMoved=new _e}Object.defineProperties(_l.prototype,{length:{get:function(){return this._dataSources.length}},dataSourceAdded:{get:function(){return this._dataSourceAdded}},dataSourceRemoved:{get:function(){return this._dataSourceRemoved}},dataSourceMoved:{get:function(){return this._dataSourceMoved}}});_l.prototype.add=function(e){let t=this,n=this._dataSources;return Promise.resolve(e).then(function(i){return n===t._dataSources&&(t._dataSources.push(i),t._dataSourceAdded.raiseEvent(t,i)),i})};_l.prototype.remove=function(e,t){t=t??!1;let n=this._dataSources.indexOf(e);return n!==-1?(this._dataSources.splice(n,1),this._dataSourceRemoved.raiseEvent(this,e),t&&typeof e.destroy=="function"&&e.destroy(),!0):!1};_l.prototype.removeAll=function(e){e=e??!1;let t=this._dataSources;for(let n=0,i=t.length;n<i;++n){let o=t[n];this._dataSourceRemoved.raiseEvent(this,o),e&&typeof o.destroy=="function"&&o.destroy()}this._dataSources=[]};_l.prototype.contains=function(e){return this.indexOf(e)!==-1};_l.prototype.indexOf=function(e){return this._dataSources.indexOf(e)};_l.prototype.get=function(e){return this._dataSources[e]};_l.prototype.getByName=function(e){return this._dataSources.filter(function(t){return t.name===e})};function x3(e,t){return e.indexOf(t)}function Dhe(e,t,n){let i=e._dataSources,o=i.length-1;if(t=D.clamp(t,0,o),n=D.clamp(n,0,o),t===n)return;let r=i[t];i[t]=i[n],i[n]=r,e.dataSourceMoved.raiseEvent(r,n,t)}_l.prototype.raise=function(e){let t=x3(this._dataSources,e);Dhe(this,t,t+1)};_l.prototype.lower=function(e){let t=x3(this._dataSources,e);Dhe(this,t,t-1)};_l.prototype.raiseToTop=function(e){let t=x3(this._dataSources,e);t!==this._dataSources.length-1&&(this._dataSources.splice(t,1),this._dataSources.push(e),this.dataSourceMoved.raiseEvent(e,this._dataSources.length-1,t))};_l.prototype.lowerToBottom=function(e){let t=x3(this._dataSources,e);t!==0&&(this._dataSources.splice(t,1),this._dataSources.splice(0,0,e),this.dataSourceMoved.raiseEvent(e,0,t))};_l.prototype.isDestroyed=function(){return!1};_l.prototype.destroy=function(){return this.removeAll(!0),ue(this)};var b3=_l;function Qa(e){e=e??V.EMPTY_OBJECT,this._primitives=[],this._guid=Xn(),this._primitiveAdded=new _e,this._primitiveRemoved=new _e,this._zIndex=void 0,this.show=e.show??!0,this.destroyPrimitives=e.destroyPrimitives??!0,this._countReferences=e.countReferences??!1}Object.defineProperties(Qa.prototype,{length:{get:function(){return this._primitives.length}},primitiveAdded:{get:function(){return this._primitiveAdded}},primitiveRemoved:{get:function(){return this._primitiveRemoved}}});Qa.prototype.add=function(e,t){let n=l(t),i=e._external=e._external||{},o=i._composites=i._composites||{};return o[this._guid]={collection:this},n?this._primitives.splice(t,0,e):this._primitives.push(e),this._countReferences&&(l(i._referenceCount)?++i._referenceCount:i._referenceCount=1),this._primitiveAdded.raiseEvent(e),e};Qa.prototype.remove=function(e){if(this.contains(e)){let t=this._primitives.indexOf(e);if(t!==-1)return this._primitives.splice(t,1),delete e._external._composites[this._guid],this._countReferences&&e._external._referenceCount--,this.destroyPrimitives&&(!this._countReferences||e._external._referenceCount<=0)&&e.destroy(),this._primitiveRemoved.raiseEvent(e),!0}return!1};Qa.prototype.removeAndDestroy=function(e){let t=this.remove(e);return t&&!this.destroyPrimitives&&e.destroy(),t};Qa.prototype.removeAll=function(){let e=this._primitives,t=e.length;for(let n=0;n<t;++n){let i=e[n];delete i._external._composites[this._guid],this._countReferences&&i._external._referenceCount--,this.destroyPrimitives&&(!this._countReferences||i._external._referenceCount<=0)&&i.destroy(),this._primitiveRemoved.raiseEvent(i)}this._primitives=[]};Qa.prototype.contains=function(e){return!!(l(e)&&e._external&&e._external._composites&&e._external._composites[this._guid])};function T3(e,t){return e._primitives.indexOf(t)}Qa.prototype.raise=function(e){if(l(e)){let t=T3(this,e),n=this._primitives;if(t!==n.length-1){let i=n[t];n[t]=n[t+1],n[t+1]=i}}};Qa.prototype.raiseToTop=function(e){if(l(e)){let t=T3(this,e),n=this._primitives;t!==n.length-1&&(n.splice(t,1),n.push(e))}};Qa.prototype.lower=function(e){if(l(e)){let t=T3(this,e),n=this._primitives;if(t!==0){let i=n[t];n[t]=n[t-1],n[t-1]=i}}};Qa.prototype.lowerToBottom=function(e){if(l(e)){let t=T3(this,e),n=this._primitives;t!==0&&(n.splice(t,1),n.unshift(e))}};Qa.prototype.get=function(e){return this._primitives[e]};Qa.prototype.update=function(e){if(!this.show)return;let t=this._primitives;for(let n=0;n<t.length;++n)t[n].update(e)};Qa.prototype.prePassesUpdate=function(e){let t=this._primitives;for(let n=0;n<t.length;++n){let i=t[n];l(i.prePassesUpdate)&&i.prePassesUpdate(e)}};Qa.prototype.updateForPass=function(e,t){let n=this._primitives;for(let i=0;i<n.length;++i){let o=n[i];l(o.updateForPass)&&o.updateForPass(e,t)}};Qa.prototype.postPassesUpdate=function(e){let t=this._primitives;for(let n=0;n<t.length;++n){let i=t[n];l(i.postPassesUpdate)&&i.postPassesUpdate(e)}};Qa.prototype.isDestroyed=function(){return!1};Qa.prototype.destroy=function(){return this.removeAll(),ue(this)};var ou=Qa;function jm(){this._length=0,this._collections={},this._collectionsArray=[],this.show=!0}Object.defineProperties(jm.prototype,{length:{get:function(){return this._length}}});jm.prototype.add=function(e,t){t=t??0;let n=this._collections[t];if(!l(n)){n=new ou({destroyPrimitives:!1}),n._zIndex=t,this._collections[t]=n;let i=this._collectionsArray,o=0;for(;o<i.length&&i[o]._zIndex<t;)o++;i.splice(o,0,n)}return n.add(e),this._length++,e._zIndex=t,e};jm.prototype.set=function(e,t){return t===e._zIndex||(this.remove(e,!0),this.add(e,t)),e};jm.prototype.remove=function(e,t){if(this.contains(e)){let n=e._zIndex,i=this._collections[n],o;return t?o=i.remove(e):o=i.removeAndDestroy(e),o&&this._length--,i.length===0&&(this._collectionsArray.splice(this._collectionsArray.indexOf(i),1),this._collections[n]=void 0,i.destroy()),o}return!1};jm.prototype.removeAll=function(){let e=this._collectionsArray;for(let t=0;t<e.length;t++){let n=e[t];n.destroyPrimitives=!0,n.destroy()}this._collections={},this._collectionsArray=[],this._length=0};jm.prototype.contains=function(e){if(!l(e))return!1;let t=this._collections[e._zIndex];return l(t)&&t.contains(e)};jm.prototype.update=function(e){if(!this.show)return;let t=this._collectionsArray;for(let n=0;n<t.length;n++)t[n].update(e)};jm.prototype.isDestroyed=function(){return!1};jm.prototype.destroy=function(){return this.removeAll(),ue(this)};var S3=jm;function Mb(e,t){this._primitives=e,this._orderedGroundPrimitives=t,this._dynamicUpdaters=new Pt}Mb.prototype.add=function(e,t){this._dynamicUpdaters.set(t.id,t.createDynamicUpdater(this._primitives,this._orderedGroundPrimitives))};Mb.prototype.remove=function(e){let t=e.id,n=this._dynamicUpdaters.get(t);l(n)&&(this._dynamicUpdaters.remove(t),n.destroy())};Mb.prototype.update=function(e){let t=this._dynamicUpdaters.values;for(let n=0,i=t.length;n<i;n++)t[n].update(e);return!0};Mb.prototype.removeAllPrimitives=function(){let e=this._dynamicUpdaters.values;for(let t=0,n=e.length;t<n;t++)e[t].destroy();this._dynamicUpdaters.removeAll()};Mb.prototype.getBoundingSphere=function(e,t){return e=this._dynamicUpdaters.get(e.id),l(e)&&l(e.getBoundingSphere)?e.getBoundingSphere(t):mt.FAILED};var Nb=Mb;var gq={},w3=new d,vhe=new d,Phe=new Le,Rhe=new J;function Lb(e,t,n,i,o,r,s,a,c,u){let f=e+t;d.multiplyByScalar(i,Math.cos(f),w3),d.multiplyByScalar(n,Math.sin(f),vhe),d.add(w3,vhe,w3);let h=Math.cos(e);h=h*h;let A=Math.sin(e);A=A*A;let m=r/Math.sqrt(s*h+o*A)/a;return Le.fromAxisAngle(w3,m,Phe),J.fromQuaternion(Phe,Rhe),J.multiplyByVector(Rhe,c,u),d.normalize(u,u),d.multiplyByScalar(u,a,u),u}var Mhe=new d,Nhe=new d,pq=new d,Det=new d;gq.raisePositionsToHeight=function(e,t,n){let i=t.ellipsoid,o=t.height,r=t.extrudedHeight,s=n?e.length/3*2:e.length/3,a=new Float64Array(s*3),c=e.length,u=n?c:0;for(let f=0;f<c;f+=3){let h=f+1,A=f+2,g=d.fromArray(e,f,Mhe);i.scaleToGeodeticSurface(g,g);let m=d.clone(g,Nhe),_=i.geodeticSurfaceNormal(g,Det),y=d.multiplyByScalar(_,o,pq);d.add(g,y,g),n&&(d.multiplyByScalar(_,r,y),d.add(m,y,m),a[f+u]=m.x,a[h+u]=m.y,a[A+u]=m.z),a[f]=g.x,a[h]=g.y,a[A]=g.z}return a};var vet=new d,Pet=new d,Ret=new d;gq.computeEllipsePositions=function(e,t,n){let i=e.semiMinorAxis,o=e.semiMajorAxis,r=e.rotation,s=e.center,a=e.granularity*8,c=i*i,u=o*o,f=o*i,h=d.magnitude(s),A=d.normalize(s,vet),g=d.cross(d.UNIT_Z,s,Pet);g=d.normalize(g,g);let m=d.cross(A,g,Ret),_=1+Math.ceil(D.PI_OVER_TWO/a),y=D.PI_OVER_TWO/(_-1),C=D.PI_OVER_TWO-_*y;C<0&&(_-=Math.ceil(Math.abs(C)/y));let E=2*(_*(_+2)),I=t?new Array(E*3):void 0,b=0,S=Mhe,B=Nhe,v=_*4*3,P=v-1,N=0,L=n?new Array(v):void 0,p,x,T,w,M;for(C=D.PI_OVER_TWO,S=Lb(C,r,m,g,c,f,u,h,A,S),t&&(I[b++]=S.x,I[b++]=S.y,I[b++]=S.z),n&&(L[P--]=S.z,L[P--]=S.y,L[P--]=S.x),C=D.PI_OVER_TWO-y,p=1;p<_+1;++p){if(S=Lb(C,r,m,g,c,f,u,h,A,S),B=Lb(Math.PI-C,r,m,g,c,f,u,h,A,B),t){for(I[b++]=S.x,I[b++]=S.y,I[b++]=S.z,T=2*p+2,x=1;x<T-1;++x)w=x/(T-1),M=d.lerp(S,B,w,pq),I[b++]=M.x,I[b++]=M.y,I[b++]=M.z;I[b++]=B.x,I[b++]=B.y,I[b++]=B.z}n&&(L[P--]=S.z,L[P--]=S.y,L[P--]=S.x,L[N++]=B.x,L[N++]=B.y,L[N++]=B.z),C=D.PI_OVER_TWO-(p+1)*y}for(p=_;p>1;--p){if(C=D.PI_OVER_TWO-(p-1)*y,S=Lb(-C,r,m,g,c,f,u,h,A,S),B=Lb(C+Math.PI,r,m,g,c,f,u,h,A,B),t){for(I[b++]=S.x,I[b++]=S.y,I[b++]=S.z,T=2*(p-1)+2,x=1;x<T-1;++x)w=x/(T-1),M=d.lerp(S,B,w,pq),I[b++]=M.x,I[b++]=M.y,I[b++]=M.z;I[b++]=B.x,I[b++]=B.y,I[b++]=B.z}n&&(L[P--]=S.z,L[P--]=S.y,L[P--]=S.x,L[N++]=B.x,L[N++]=B.y,L[N++]=B.z)}C=D.PI_OVER_TWO,S=Lb(-C,r,m,g,c,f,u,h,A,S);let O={};return t&&(I[b++]=S.x,I[b++]=S.y,I[b++]=S.z,O.positions=I,O.numPts=_),n&&(L[P--]=S.z,L[P--]=S.y,L[P--]=S.x,O.outerPositions=L),O};var Uu=gq;var Ob=new d,_q=new d,yq=new d,Lhe=new d,Ks=new k,Ohe=new J,Met=new J,Cq=new Le,Fhe=new d,Qhe=new d,khe=new d,v3=new Ae,Uhe=new d,Ghe=new k,zhe=new k;function Vhe(e,t,n){let i=t.vertexFormat,o=t.center,r=t.semiMajorAxis,s=t.semiMinorAxis,a=t.ellipsoid,c=t.stRotation,u=n?e.length/3*2:e.length/3,f=t.shadowVolume,h=i.st?new Float32Array(u*2):void 0,A=i.normal?new Float32Array(u*3):void 0,g=i.tangent?new Float32Array(u*3):void 0,m=i.bitangent?new Float32Array(u*3):void 0,_=f?new Float32Array(u*3):void 0,y=0,C=Fhe,E=Qhe,I=khe,b=new Hi(a),S=b.project(a.cartesianToCartographic(o,v3),Uhe),B=a.scaleToGeodeticSurface(o,Ob);a.geodeticSurfaceNormal(B,B);let v=Ohe,P=Met;if(c!==0){let M=Le.fromAxisAngle(B,c,Cq);v=J.fromQuaternion(M,v),M=Le.fromAxisAngle(B,-c,Cq),P=J.fromQuaternion(M,P)}else v=J.clone(J.IDENTITY,v),P=J.clone(J.IDENTITY,P);let N=k.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Ghe),L=k.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,zhe),p=e.length,x=n?p:0,T=x/3*2;for(let M=0;M<p;M+=3){let O=M+1,U=M+2,Q=d.fromArray(e,M,Ob);if(i.st){let z=J.multiplyByVector(v,Q,_q),F=b.project(a.cartesianToCartographic(z,v3),yq);d.subtract(F,S,F),Ks.x=(F.x+r)/(2*r),Ks.y=(F.y+s)/(2*s),N.x=Math.min(Ks.x,N.x),N.y=Math.min(Ks.y,N.y),L.x=Math.max(Ks.x,L.x),L.y=Math.max(Ks.y,L.y),n&&(h[y+T]=Ks.x,h[y+1+T]=Ks.y),h[y++]=Ks.x,h[y++]=Ks.y}(i.normal||i.tangent||i.bitangent||f)&&(C=a.geodeticSurfaceNormal(Q,C),f&&(_[M+x]=-C.x,_[O+x]=-C.y,_[U+x]=-C.z),(i.normal||i.tangent||i.bitangent)&&((i.tangent||i.bitangent)&&(E=d.normalize(d.cross(d.UNIT_Z,C,E),E),J.multiplyByVector(P,E,E)),i.normal&&(A[M]=C.x,A[O]=C.y,A[U]=C.z,n&&(A[M+x]=-C.x,A[O+x]=-C.y,A[U+x]=-C.z)),i.tangent&&(g[M]=E.x,g[O]=E.y,g[U]=E.z,n&&(g[M+x]=-E.x,g[O+x]=-E.y,g[U+x]=-E.z)),i.bitangent&&(I=d.normalize(d.cross(C,E,I),I),m[M]=I.x,m[O]=I.y,m[U]=I.z,n&&(m[M+x]=I.x,m[O+x]=I.y,m[U+x]=I.z))))}if(i.st){p=h.length;for(let M=0;M<p;M+=2)h[M]=(h[M]-N.x)/(L.x-N.x),h[M+1]=(h[M+1]-N.y)/(L.y-N.y)}let w=new En;if(i.position){let M=Uu.raisePositionsToHeight(e,t,n);w.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:M})}if(i.st&&(w.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:h})),i.normal&&(w.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:A})),i.tangent&&(w.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g})),i.bitangent&&(w.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m})),f&&(w.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:_})),n&&l(t.offsetAttribute)){let M=new Uint8Array(u);if(t.offsetAttribute===hn.TOP)M=M.fill(1,0,u/2);else{let O=t.offsetAttribute===hn.NONE?0:1;M=M.fill(O)}w.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:M})}return w}function Hhe(e){let t=new Array(12*(e*(e+1))-6),n=0,i,o,r,s,a;for(i=0,r=1,s=0;s<3;s++)t[n++]=r++,t[n++]=i,t[n++]=r;for(s=2;s<e+1;++s){for(r=s*(s+1)-1,i=(s-1)*s-1,t[n++]=r++,t[n++]=i,t[n++]=r,o=2*s,a=0;a<o-1;++a)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;t[n++]=r++,t[n++]=i,t[n++]=r}for(o=e*2,++r,++i,s=0;s<o-1;++s)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;for(t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i++,t[n++]=i,++i,s=e-1;s>1;--s){for(t[n++]=i++,t[n++]=i,t[n++]=r,o=2*s,a=0;a<o-1;++a)t[n++]=r,t[n++]=i++,t[n++]=i,t[n++]=r++,t[n++]=i,t[n++]=r;t[n++]=i++,t[n++]=i++,t[n++]=r++}for(s=0;s<3;s++)t[n++]=i++,t[n++]=i,t[n++]=r;return t}var DE=new d;function Net(e){let t=e.center;DE=d.multiplyByScalar(e.ellipsoid.geodeticSurfaceNormal(t,DE),e.height,DE),DE=d.add(t,DE,DE);let n=new le(DE,e.semiMajorAxis),i=Uu.computeEllipsePositions(e,!0,!1),o=i.positions,r=i.numPts,s=Vhe(o,e,!1),a=Hhe(r);return a=Fe.createTypedArray(o.length/3,a),{boundingSphere:n,attributes:s,indices:a}}function Let(e,t){let n=t.vertexFormat,i=t.center,o=t.semiMajorAxis,r=t.semiMinorAxis,s=t.ellipsoid,a=t.height,c=t.extrudedHeight,u=t.stRotation,f=e.length/3*2,h=new Float64Array(f*3),A=n.st?new Float32Array(f*2):void 0,g=n.normal?new Float32Array(f*3):void 0,m=n.tangent?new Float32Array(f*3):void 0,_=n.bitangent?new Float32Array(f*3):void 0,y=t.shadowVolume,C=y?new Float32Array(f*3):void 0,E=0,I=Fhe,b=Qhe,S=khe,B=new Hi(s),v=B.project(s.cartesianToCartographic(i,v3),Uhe),P=s.scaleToGeodeticSurface(i,Ob);s.geodeticSurfaceNormal(P,P);let N=Le.fromAxisAngle(P,u,Cq),L=J.fromQuaternion(N,Ohe),p=k.fromElements(Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY,Ghe),x=k.fromElements(Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY,zhe),T=e.length,w=T/3*2;for(let O=0;O<T;O+=3){let U=O+1,Q=O+2,z=d.fromArray(e,O,Ob),F;if(n.st){let W=J.multiplyByVector(L,z,_q),Z=B.project(s.cartesianToCartographic(W,v3),yq);d.subtract(Z,v,Z),Ks.x=(Z.x+o)/(2*o),Ks.y=(Z.y+r)/(2*r),p.x=Math.min(Ks.x,p.x),p.y=Math.min(Ks.y,p.y),x.x=Math.max(Ks.x,x.x),x.y=Math.max(Ks.y,x.y),A[E+w]=Ks.x,A[E+1+w]=Ks.y,A[E++]=Ks.x,A[E++]=Ks.y}z=s.scaleToGeodeticSurface(z,z),F=d.clone(z,_q),I=s.geodeticSurfaceNormal(z,I),y&&(C[O+T]=-I.x,C[U+T]=-I.y,C[Q+T]=-I.z);let H=d.multiplyByScalar(I,a,Lhe);if(z=d.add(z,H,z),H=d.multiplyByScalar(I,c,H),F=d.add(F,H,F),n.position&&(h[O+T]=F.x,h[U+T]=F.y,h[Q+T]=F.z,h[O]=z.x,h[U]=z.y,h[Q]=z.z),n.normal||n.tangent||n.bitangent){S=d.clone(I,S);let W=d.fromArray(e,(O+3)%T,Lhe);d.subtract(W,z,W);let Z=d.subtract(F,z,yq);I=d.normalize(d.cross(Z,W,I),I),n.normal&&(g[O]=I.x,g[U]=I.y,g[Q]=I.z,g[O+T]=I.x,g[U+T]=I.y,g[Q+T]=I.z),n.tangent&&(b=d.normalize(d.cross(S,I,b),b),m[O]=b.x,m[U]=b.y,m[Q]=b.z,m[O+T]=b.x,m[O+1+T]=b.y,m[O+2+T]=b.z),n.bitangent&&(_[O]=S.x,_[U]=S.y,_[Q]=S.z,_[O+T]=S.x,_[U+T]=S.y,_[Q+T]=S.z)}}if(n.st){T=A.length;for(let O=0;O<T;O+=2)A[O]=(A[O]-p.x)/(x.x-p.x),A[O+1]=(A[O+1]-p.y)/(x.y-p.y)}let M=new En;if(n.position&&(M.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:h})),n.st&&(M.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:A})),n.normal&&(M.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g})),n.tangent&&(M.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m})),n.bitangent&&(M.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:_})),y&&(M.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:C})),l(t.offsetAttribute)){let O=new Uint8Array(f);if(t.offsetAttribute===hn.TOP)O=O.fill(1,0,f/2);else{let U=t.offsetAttribute===hn.NONE?0:1;O=O.fill(U)}M.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:O})}return M}function Oet(e){let t=e.length/3,n=Fe.createTypedArray(t,t*6),i=0;for(let o=0;o<t;o++){let r=o,s=o+t,a=(r+1)%t,c=a+t;n[i++]=r,n[i++]=s,n[i++]=a,n[i++]=a,n[i++]=s,n[i++]=c}return n}var B3=new le,D3=new le;function Fet(e){let t=e.center,n=e.ellipsoid,i=e.semiMajorAxis,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,Ob),e.height,Ob);B3.center=d.add(t,o,B3.center),B3.radius=i,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,o),e.extrudedHeight,o),D3.center=d.add(t,o,D3.center),D3.radius=i;let r=Uu.computeEllipsePositions(e,!0,!0),s=r.positions,a=r.numPts,c=r.outerPositions,u=le.union(B3,D3),f=Vhe(s,e,!0),h=Hhe(a),A=h.length;h.length=A*2;let g=s.length/3;for(let b=0;b<A;b+=3)h[b+A]=h[b+2]+g,h[b+1+A]=h[b+1]+g,h[b+2+A]=h[b]+g;let m=Fe.createTypedArray(g*2/3,h),_=new ht({attributes:f,indices:m,primitiveType:Me.TRIANGLES}),y=Let(c,e);h=Oet(c);let C=Fe.createTypedArray(c.length*2/3,h),E=new ht({attributes:y,indices:C,primitiveType:Me.TRIANGLES}),I=jn.combineInstances([new Rt({geometry:_}),new Rt({geometry:E})]);return{boundingSphere:u,attributes:I[0].attributes,indices:I[0].indices}}function Whe(e,t,n,i,o,r,s){let c=Uu.computeEllipsePositions({center:e,semiMajorAxis:t,semiMinorAxis:n,rotation:i,granularity:o},!1,!0).outerPositions,u=c.length/3,f=new Array(u);for(let A=0;A<u;++A)f[A]=d.fromArray(c,A*3);let h=ae.fromCartesianArray(f,r,s);return h.width>D.PI&&(h.north=h.north>0?D.PI_OVER_TWO-D.EPSILON7:h.north,h.south=h.south<0?D.EPSILON7-D.PI_OVER_TWO:h.south,h.east=D.PI,h.west=-D.PI),h}function qm(e){e=e??V.EMPTY_OBJECT;let t=e.center,n=e.ellipsoid??te.default,i=e.semiMajorAxis,o=e.semiMinorAxis,r=e.granularity??D.RADIANS_PER_DEGREE,s=e.vertexFormat??Pe.DEFAULT,a=e.height??0,c=e.extrudedHeight??a;this._center=d.clone(t),this._semiMajorAxis=i,this._semiMinorAxis=o,this._ellipsoid=te.clone(n),this._rotation=e.rotation??0,this._stRotation=e.stRotation??0,this._height=Math.max(c,a),this._granularity=r,this._vertexFormat=Pe.clone(s),this._extrudedHeight=Math.min(c,a),this._shadowVolume=e.shadowVolume??!1,this._workerName="createEllipseGeometry",this._offsetAttribute=e.offsetAttribute,this._rectangle=void 0,this._textureCoordinateRotationPoints=void 0}qm.packedLength=d.packedLength+te.packedLength+Pe.packedLength+9;qm.pack=function(e,t,n){return n=n??0,d.pack(e._center,t,n),n+=d.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._semiMajorAxis,t[n++]=e._semiMinorAxis,t[n++]=e._rotation,t[n++]=e._stRotation,t[n++]=e._height,t[n++]=e._granularity,t[n++]=e._extrudedHeight,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var jhe=new d,Yhe=new te,qhe=new Pe,Ym={center:jhe,ellipsoid:Yhe,vertexFormat:qhe,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,stRotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};qm.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,jhe);t+=d.packedLength;let o=te.unpack(e,t,Yhe);t+=te.packedLength;let r=Pe.unpack(e,t,qhe);t+=Pe.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t++],g=e[t++]===1,m=e[t];return l(n)?(n._center=d.clone(i,n._center),n._ellipsoid=te.clone(o,n._ellipsoid),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._semiMajorAxis=s,n._semiMinorAxis=a,n._rotation=c,n._stRotation=u,n._height=f,n._granularity=h,n._extrudedHeight=A,n._shadowVolume=g,n._offsetAttribute=m===-1?void 0:m,n):(Ym.height=f,Ym.extrudedHeight=A,Ym.granularity=h,Ym.stRotation=u,Ym.rotation=c,Ym.semiMajorAxis=s,Ym.semiMinorAxis=a,Ym.shadowVolume=g,Ym.offsetAttribute=m===-1?void 0:m,new qm(Ym))};qm.computeRectangle=function(e,t){e=e??V.EMPTY_OBJECT;let n=e.center,i=e.ellipsoid??te.default,o=e.semiMajorAxis,r=e.semiMinorAxis,s=e.granularity??D.RADIANS_PER_DEGREE,a=e.rotation??0;return Whe(n,o,r,a,s,i,t)};qm.createGeometry=function(e){if(e._semiMajorAxis<=0||e._semiMinorAxis<=0)return;let t=e._height,n=e._extrudedHeight,i=!D.equalsEpsilon(t,n,0,D.EPSILON2);e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);let o={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:t,granularity:e._granularity,vertexFormat:e._vertexFormat,stRotation:e._stRotation},r;if(i)o.extrudedHeight=n,o.shadowVolume=e._shadowVolume,o.offsetAttribute=e._offsetAttribute,r=Fet(o);else if(r=Net(o),l(e._offsetAttribute)){let s=r.attributes.position.values.length,a=e._offsetAttribute===hn.NONE?0:1,c=new Uint8Array(s/3).fill(a);r.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:c})}return new ht({attributes:r.attributes,indices:r.indices,primitiveType:Me.TRIANGLES,boundingSphere:r.boundingSphere,offsetAttribute:e._offsetAttribute})};qm.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new qm({center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:o,rotation:e._rotation,stRotation:e._stRotation,granularity:i,extrudedHeight:r,height:s,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0})};function Qet(e){let t=-e._stRotation;if(t===0)return[0,0,0,1,1,0];let i=Uu.computeEllipsePositions({center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,rotation:e._rotation,granularity:e._granularity},!1,!0).outerPositions,o=i.length/3,r=new Array(o);for(let c=0;c<o;++c)r[c]=d.fromArray(i,c*3);let s=e._ellipsoid,a=e.rectangle;return ht._textureCoordinateRotationPoints(r,t,s,a)}Object.defineProperties(qm.prototype,{rectangle:{get:function(){return l(this._rectangle)||(this._rectangle=Whe(this._center,this._semiMajorAxis,this._semiMinorAxis,this._rotation,this._granularity,this._ellipsoid)),this._rectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=Qet(this)),this._textureCoordinateRotationPoints}}});var ru=qm;var Khe=new d,vE=new d;function ket(e){let t=e.center;vE=d.multiplyByScalar(e.ellipsoid.geodeticSurfaceNormal(t,vE),e.height,vE),vE=d.add(t,vE,vE);let n=new le(vE,e.semiMajorAxis),i=Uu.computeEllipsePositions(e,!1,!0).outerPositions,o=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:Uu.raisePositionsToHeight(i,e,!1)})}),r=i.length/3,s=Fe.createTypedArray(r,r*2),a=0;for(let c=0;c<r;++c)s[a++]=c,s[a++]=(c+1)%r;return{boundingSphere:n,attributes:o,indices:s}}var P3=new le,R3=new le;function Uet(e){let t=e.center,n=e.ellipsoid,i=e.semiMajorAxis,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,Khe),e.height,Khe);P3.center=d.add(t,o,P3.center),P3.radius=i,o=d.multiplyByScalar(n.geodeticSurfaceNormal(t,o),e.extrudedHeight,o),R3.center=d.add(t,o,R3.center),R3.radius=i;let r=Uu.computeEllipsePositions(e,!1,!0).outerPositions,s=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:Uu.raisePositionsToHeight(r,e,!0)})});r=s.position.values;let a=le.union(P3,R3),c=r.length/3;if(l(e.offsetAttribute)){let m=new Uint8Array(c);if(e.offsetAttribute===hn.TOP)m=m.fill(1,0,c/2);else{let _=e.offsetAttribute===hn.NONE?0:1;m=m.fill(_)}s.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:m})}let u=e.numberOfVerticalLines??16;u=D.clamp(u,0,c/2);let f=Fe.createTypedArray(c,c*2+u*2);c/=2;let h=0,A;for(A=0;A<c;++A)f[h++]=A,f[h++]=(A+1)%c,f[h++]=A+c,f[h++]=(A+1)%c+c;let g;if(u>0){let m=Math.min(u,c);g=Math.round(c/m);let _=Math.min(g*u,c);for(A=0;A<_;A+=g)f[h++]=A,f[h++]=A+c}return{boundingSphere:a,attributes:s,indices:f}}function Fb(e){e=e??V.EMPTY_OBJECT;let t=e.center,n=e.ellipsoid??te.default,i=e.semiMajorAxis,o=e.semiMinorAxis,r=e.granularity??D.RADIANS_PER_DEGREE,s=e.height??0,a=e.extrudedHeight??s;this._center=d.clone(t),this._semiMajorAxis=i,this._semiMinorAxis=o,this._ellipsoid=te.clone(n),this._rotation=e.rotation??0,this._height=Math.max(a,s),this._granularity=r,this._extrudedHeight=Math.min(a,s),this._numberOfVerticalLines=Math.max(e.numberOfVerticalLines??16,0),this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipseOutlineGeometry"}Fb.packedLength=d.packedLength+te.packedLength+8;Fb.pack=function(e,t,n){return n=n??0,d.pack(e._center,t,n),n+=d.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._semiMajorAxis,t[n++]=e._semiMinorAxis,t[n++]=e._rotation,t[n++]=e._height,t[n++]=e._granularity,t[n++]=e._extrudedHeight,t[n++]=e._numberOfVerticalLines,t[n]=e._offsetAttribute??-1,t};var Xhe=new d,Jhe=new te,Mp={center:Xhe,ellipsoid:Jhe,semiMajorAxis:void 0,semiMinorAxis:void 0,rotation:void 0,height:void 0,granularity:void 0,extrudedHeight:void 0,numberOfVerticalLines:void 0,offsetAttribute:void 0};Fb.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,Xhe);t+=d.packedLength;let o=te.unpack(e,t,Jhe);t+=te.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t];return l(n)?(n._center=d.clone(i,n._center),n._ellipsoid=te.clone(o,n._ellipsoid),n._semiMajorAxis=r,n._semiMinorAxis=s,n._rotation=a,n._height=c,n._granularity=u,n._extrudedHeight=f,n._numberOfVerticalLines=h,n._offsetAttribute=A===-1?void 0:A,n):(Mp.height=c,Mp.extrudedHeight=f,Mp.granularity=u,Mp.rotation=a,Mp.semiMajorAxis=r,Mp.semiMinorAxis=s,Mp.numberOfVerticalLines=h,Mp.offsetAttribute=A===-1?void 0:A,new Fb(Mp))};Fb.createGeometry=function(e){if(e._semiMajorAxis<=0||e._semiMinorAxis<=0)return;let t=e._height,n=e._extrudedHeight,i=!D.equalsEpsilon(t,n,0,D.EPSILON2);e._center=e._ellipsoid.scaleToGeodeticSurface(e._center,e._center);let o={center:e._center,semiMajorAxis:e._semiMajorAxis,semiMinorAxis:e._semiMinorAxis,ellipsoid:e._ellipsoid,rotation:e._rotation,height:t,granularity:e._granularity,numberOfVerticalLines:e._numberOfVerticalLines},r;if(i)o.extrudedHeight=n,o.offsetAttribute=e._offsetAttribute,r=Uet(o);else if(r=ket(o),l(e._offsetAttribute)){let s=r.attributes.position.values.length,a=e._offsetAttribute===hn.NONE?0:1,c=new Uint8Array(s/3).fill(a);r.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:c})}return new ht({attributes:r.attributes,indices:r.indices,primitiveType:Me.LINES,boundingSphere:r.boundingSphere,offsetAttribute:e._offsetAttribute})};var ld=Fb;var Zhe=new G,$he=d.ZERO,eme=new d,tme=new ae;function Get(e){this.id=e,this.vertexFormat=void 0,this.center=void 0,this.semiMajorAxis=void 0,this.semiMinorAxis=void 0,this.rotation=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.numberOfVerticalLines=void 0,this.offsetAttribute=void 0}function dh(e,t){ti.call(this,{entity:e,scene:t,geometryOptions:new Get(e),geometryPropertyName:"ellipse",observedPropertyNames:["availability","position","ellipse"]}),this._onEntityPropertyChanged(e,"ellipse",e.ellipse,void 0)}l(Object.create)&&(dh.prototype=Object.create(ti.prototype),dh.prototype.constructor=dh);dh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof Jt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,Zhe)),l(o)||(o=G.WHITE),i.color=en.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,$he,eme))),new Rt({id:t,geometry:new ru(this._options),attributes:i})};dh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Zhe),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,$he,eme))),new Rt({id:t,geometry:new ld(this._options),attributes:r})};dh.prototype._computeCenter=function(e,t){return j.getValueOrUndefined(this._entity.position,e,t)};dh.prototype._isHidden=function(e,t){let n=e.position;return!l(n)||!l(t.semiMajorAxis)||!l(t.semiMinorAxis)||Ci.prototype._isHidden.call(this,e,t)};dh.prototype._isDynamic=function(e,t){return!e.position.isConstant||!t.semiMajorAxis.isConstant||!t.semiMinorAxis.isConstant||!j.isConstant(t.rotation)||!j.isConstant(t.height)||!j.isConstant(t.extrudedHeight)||!j.isConstant(t.granularity)||!j.isConstant(t.stRotation)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.numberOfVerticalLines)||!j.isConstant(t.zIndex)||this._onTerrain&&!j.isConstant(this._materialProperty)&&!(this._materialProperty instanceof Jt)};dh.prototype._setStaticOptions=function(e,t){let n=j.getValueOrUndefined(t.height,je.MINIMUM_VALUE),i=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),o=j.getValueOrUndefined(t.extrudedHeight,je.MINIMUM_VALUE),r=j.getValueOrDefault(t.extrudedHeightReference,je.MINIMUM_VALUE,Ze.NONE);l(o)&&!l(n)&&(n=0);let s=this._options;s.vertexFormat=this._materialProperty instanceof Jt?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,s.center=e.position.getValue(je.MINIMUM_VALUE,s.center),s.semiMajorAxis=t.semiMajorAxis.getValue(je.MINIMUM_VALUE,s.semiMajorAxis),s.semiMinorAxis=t.semiMinorAxis.getValue(je.MINIMUM_VALUE,s.semiMinorAxis),s.rotation=j.getValueOrUndefined(t.rotation,je.MINIMUM_VALUE),s.granularity=j.getValueOrUndefined(t.granularity,je.MINIMUM_VALUE),s.stRotation=j.getValueOrUndefined(t.stRotation,je.MINIMUM_VALUE),s.numberOfVerticalLines=j.getValueOrUndefined(t.numberOfVerticalLines,je.MINIMUM_VALUE),s.offsetAttribute=ti.computeGeometryOffsetAttribute(n,i,o,r),s.height=ti.getGeometryHeight(n,i),o=ti.getGeometryExtrudedHeight(o,r),o===ti.CLAMP_TO_GROUND&&(o=wi.getMinimumMaximumHeights(ru.computeRectangle(s,tme)).minimumTerrainHeight),s.extrudedHeight=o};dh.DynamicGeometryUpdater=Qb;function Qb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(Qb.prototype=Object.create(yi.prototype),Qb.prototype.constructor=Qb);Qb.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.center)||!l(i.semiMajorAxis)||!l(i.semiMinorAxis)||yi.prototype._isHidden.call(this,e,t,n)};Qb.prototype._setOptions=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(t.height,n),r=j.getValueOrDefault(t.heightReference,n,Ze.NONE),s=j.getValueOrUndefined(t.extrudedHeight,n),a=j.getValueOrDefault(t.extrudedHeightReference,n,Ze.NONE);l(s)&&!l(o)&&(o=0),i.center=j.getValueOrUndefined(e.position,n,i.center),i.semiMajorAxis=j.getValueOrUndefined(t.semiMajorAxis,n),i.semiMinorAxis=j.getValueOrUndefined(t.semiMinorAxis,n),i.rotation=j.getValueOrUndefined(t.rotation,n),i.granularity=j.getValueOrUndefined(t.granularity,n),i.stRotation=j.getValueOrUndefined(t.stRotation,n),i.numberOfVerticalLines=j.getValueOrUndefined(t.numberOfVerticalLines,n),i.offsetAttribute=ti.computeGeometryOffsetAttribute(o,r,s,a),i.height=ti.getGeometryHeight(o,r),s=ti.getGeometryExtrudedHeight(s,a),s===ti.CLAMP_TO_GROUND&&(s=wi.getMinimumMaximumHeights(ru.computeRectangle(i,tme)).minimumTerrainHeight),i.extrudedHeight=s};var M3=dh;var zet=new d,Vet=new d,Het=new d,Wet=new d,jet=new d,Yet=new d(1,1,1),nme=Math.cos,ime=Math.sin;function Np(e){e=e??V.EMPTY_OBJECT;let t=e.radii??Yet,n=e.innerRadii??t,i=e.minimumClock??0,o=e.maximumClock??D.TWO_PI,r=e.minimumCone??0,s=e.maximumCone??D.PI,a=Math.round(e.stackPartitions??64),c=Math.round(e.slicePartitions??64),u=e.vertexFormat??Pe.DEFAULT;this._radii=d.clone(t),this._innerRadii=d.clone(n),this._minimumClock=i,this._maximumClock=o,this._minimumCone=r,this._maximumCone=s,this._stackPartitions=a,this._slicePartitions=c,this._vertexFormat=Pe.clone(u),this._offsetAttribute=e.offsetAttribute,this._workerName="createEllipsoidGeometry"}Np.packedLength=2*d.packedLength+Pe.packedLength+7;Np.pack=function(e,t,n){return n=n??0,d.pack(e._radii,t,n),n+=d.packedLength,d.pack(e._innerRadii,t,n),n+=d.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._minimumClock,t[n++]=e._maximumClock,t[n++]=e._minimumCone,t[n++]=e._maximumCone,t[n++]=e._stackPartitions,t[n++]=e._slicePartitions,t[n]=e._offsetAttribute??-1,t};var ome=new d,rme=new d,sme=new Pe,ey={radii:ome,innerRadii:rme,vertexFormat:sme,minimumClock:void 0,maximumClock:void 0,minimumCone:void 0,maximumCone:void 0,stackPartitions:void 0,slicePartitions:void 0,offsetAttribute:void 0};Np.unpack=function(e,t,n){t=t??0;let i=d.unpack(e,t,ome);t+=d.packedLength;let o=d.unpack(e,t,rme);t+=d.packedLength;let r=Pe.unpack(e,t,sme);t+=Pe.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++],A=e[t];return l(n)?(n._radii=d.clone(i,n._radii),n._innerRadii=d.clone(o,n._innerRadii),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._minimumClock=s,n._maximumClock=a,n._minimumCone=c,n._maximumCone=u,n._stackPartitions=f,n._slicePartitions=h,n._offsetAttribute=A===-1?void 0:A,n):(ey.minimumClock=s,ey.maximumClock=a,ey.minimumCone=c,ey.maximumCone=u,ey.stackPartitions=f,ey.slicePartitions=h,ey.offsetAttribute=A===-1?void 0:A,new Np(ey))};Np.createGeometry=function(e){let t=e._radii;if(t.x<=0||t.y<=0||t.z<=0)return;let n=e._innerRadii;if(n.x<=0||n.y<=0||n.z<=0)return;let i=e._minimumClock,o=e._maximumClock,r=e._minimumCone,s=e._maximumCone,a=e._vertexFormat,c=e._slicePartitions+1,u=e._stackPartitions+1;c=Math.round(c*Math.abs(o-i)/D.TWO_PI),u=Math.round(u*Math.abs(s-r)/D.PI),c<2&&(c=2),u<2&&(u=2);let f,h,A=0,g=[r],m=[i];for(f=0;f<u;f++)g.push(r+f*(s-r)/(u-1));for(g.push(s),h=0;h<c;h++)m.push(i+h*(o-i)/(c-1));m.push(o);let _=g.length,y=m.length,C=0,E=1,I=n.x!==t.x||n.y!==t.y||n.z!==t.z,b=!1,S=!1,B=!1;I&&(E=2,r>0&&(b=!0,C+=c-1),s<Math.PI&&(S=!0,C+=c-1),(o-i)%D.TWO_PI?(B=!0,C+=(u-1)*2+1):C+=1);let v=y*_*E,P=new Float64Array(v*3),N=new Array(v).fill(!1),L=new Array(v).fill(!1),p=c*u*E,x=6*(p+C+1-(c+u)*E),T=Fe.createTypedArray(p,x),w=a.normal?new Float32Array(v*3):void 0,M=a.tangent?new Float32Array(v*3):void 0,O=a.bitangent?new Float32Array(v*3):void 0,U=a.st?new Float32Array(v*2):void 0,Q=new Array(_),z=new Array(_);for(f=0;f<_;f++)Q[f]=ime(g[f]),z[f]=nme(g[f]);let F=new Array(y),H=new Array(y);for(h=0;h<y;h++)H[h]=nme(m[h]),F[h]=ime(m[h]);for(f=0;f<_;f++)for(h=0;h<y;h++)P[A++]=t.x*Q[f]*H[h],P[A++]=t.y*Q[f]*F[h],P[A++]=t.z*z[f];let W=v/2;if(I)for(f=0;f<_;f++)for(h=0;h<y;h++)P[A++]=n.x*Q[f]*H[h],P[A++]=n.y*Q[f]*F[h],P[A++]=n.z*z[f],N[W]=!0,f>0&&f!==_-1&&h!==0&&h!==y-1&&(L[W]=!0),W++;A=0;let Z,Y;for(f=1;f<_-2;f++)for(Z=f*y,Y=(f+1)*y,h=1;h<y-2;h++)T[A++]=Y+h,T[A++]=Y+h+1,T[A++]=Z+h+1,T[A++]=Y+h,T[A++]=Z+h+1,T[A++]=Z+h;if(I){let qe=_*y;for(f=1;f<_-2;f++)for(Z=qe+f*y,Y=qe+(f+1)*y,h=1;h<y-2;h++)T[A++]=Y+h,T[A++]=Z+h,T[A++]=Z+h+1,T[A++]=Y+h,T[A++]=Z+h+1,T[A++]=Y+h+1}let $,X;if(I){if(b)for(X=_*y,f=1;f<y-2;f++)T[A++]=f,T[A++]=f+1,T[A++]=X+f+1,T[A++]=f,T[A++]=X+f+1,T[A++]=X+f;if(S)for($=_*y-y,X=_*y*E-y,f=1;f<y-2;f++)T[A++]=$+f+1,T[A++]=$+f,T[A++]=X+f,T[A++]=$+f+1,T[A++]=X+f,T[A++]=X+f+1}if(B){for(f=1;f<_-2;f++)X=y*_+y*f,$=y*f,T[A++]=X,T[A++]=$+y,T[A++]=$,T[A++]=X,T[A++]=X+y,T[A++]=$+y;for(f=1;f<_-2;f++)X=y*_+y*(f+1)-1,$=y*(f+1)-1,T[A++]=$+y,T[A++]=X,T[A++]=$,T[A++]=$+y,T[A++]=X+y,T[A++]=X}let he=new En;a.position&&(he.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:P}));let ge=0,fe=0,ye=0,Ie=0,ve=v/2,Te,ke=te.fromCartesian3(t),Ge=te.fromCartesian3(n);if(a.st||a.normal||a.tangent||a.bitangent){for(f=0;f<v;f++){Te=N[f]?Ge:ke;let qe=d.fromArray(P,f*3,zet),tt=Te.geodeticSurfaceNormal(qe,Vet);if(L[f]&&d.negate(tt,tt),a.st){let $t=k.negate(tt,jet);U[ge++]=Math.atan2($t.y,$t.x)/D.TWO_PI+.5,U[ge++]=Math.asin(tt.z)/Math.PI+.5}if(a.normal&&(w[fe++]=tt.x,w[fe++]=tt.y,w[fe++]=tt.z),a.tangent||a.bitangent){let $t=Het,it=0,tn;if(N[f]&&(it=ve),!b&&f>=it&&f<it+y*2?tn=d.UNIT_X:tn=d.UNIT_Z,d.cross(tn,tt,$t),d.normalize($t,$t),a.tangent&&(M[ye++]=$t.x,M[ye++]=$t.y,M[ye++]=$t.z),a.bitangent){let Wt=d.cross(tt,$t,Wet);d.normalize(Wt,Wt),O[Ie++]=Wt.x,O[Ie++]=Wt.y,O[Ie++]=Wt.z}}}a.st&&(he.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:U})),a.normal&&(he.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:w})),a.tangent&&(he.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:M})),a.bitangent&&(he.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:O}))}if(l(e._offsetAttribute)){let qe=P.length,tt=e._offsetAttribute===hn.NONE?0:1,$t=new Uint8Array(qe/3).fill(tt);he.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:$t})}return new ht({attributes:he,indices:T,primitiveType:Me.TRIANGLES,boundingSphere:le.fromEllipsoid(ke),offsetAttribute:e._offsetAttribute})};var Eq;Np.getUnitEllipsoid=function(){return l(Eq)||(Eq=Np.createGeometry(new Np({radii:new d(1,1,1),vertexFormat:Pe.POSITION_ONLY}))),Eq};var ka=Np;var qet=new Jt(G.WHITE),Iq=d.ZERO,xq=new d,Ket=new d,Xet=new d,bq=new G,Jet=new d(1,1,1);function Zet(e){this.id=e,this.vertexFormat=void 0,this.radii=void 0,this.innerRadii=void 0,this.minimumClock=void 0,this.maximumClock=void 0,this.minimumCone=void 0,this.maximumCone=void 0,this.stackPartitions=void 0,this.slicePartitions=void 0,this.subdivisions=void 0,this.offsetAttribute=void 0}function Gu(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new Zet(e),geometryPropertyName:"ellipsoid",observedPropertyNames:["availability","position","orientation","ellipsoid"]}),this._onEntityPropertyChanged(e,"ellipsoid",e.ellipsoid,void 0)}l(Object.create)&&(Gu.prototype=Object.create(Ci.prototype),Gu.prototype.constructor=Gu);Object.defineProperties(Gu.prototype,{terrainOffsetProperty:{get:function(){return this._terrainOffsetProperty}}});Gu.prototype.createFillGeometryInstance=function(e,t,n){let i=this._entity,o=i.isAvailable(e),r,s=new Bn(o&&i.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),a=this._distanceDisplayConditionProperty.getValue(e),c=Kn.fromDistanceDisplayCondition(a),u={show:s,distanceDisplayCondition:c,color:void 0,offset:void 0};if(this._materialProperty instanceof Jt){let f;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||o)&&(f=this._materialProperty.color.getValue(e,bq)),l(f)||(f=G.WHITE),r=en.fromColor(f),u.color=r}return l(this._options.offsetAttribute)&&(u.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Iq,xq))),new Rt({id:i,geometry:new ka(this._options),modelMatrix:t?void 0:i.computeModelMatrixForHeightReference(e,i.ellipsoid.heightReference,this._options.radii.z*.5,this._scene.ellipsoid,n),attributes:u})};Gu.prototype.createOutlineGeometryInstance=function(e,t,n){let i=this._entity,o=i.isAvailable(e),r=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,bq),s=this._distanceDisplayConditionProperty.getValue(e),a={show:new Bn(o&&i.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(r),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(s),offset:void 0};return l(this._options.offsetAttribute)&&(a.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Iq,xq))),new Rt({id:i,geometry:new ed(this._options),modelMatrix:t?void 0:i.computeModelMatrixForHeightReference(e,i.ellipsoid.heightReference,this._options.radii.z*.5,this._scene.ellipsoid,n),attributes:a})};Gu.prototype._computeCenter=function(e,t){return j.getValueOrUndefined(this._entity.position,e,t)};Gu.prototype._isHidden=function(e,t){return!l(e.position)||!l(t.radii)||Ci.prototype._isHidden.call(this,e,t)};Gu.prototype._isDynamic=function(e,t){return!e.position.isConstant||!j.isConstant(e.orientation)||!t.radii.isConstant||!j.isConstant(t.innerRadii)||!j.isConstant(t.stackPartitions)||!j.isConstant(t.slicePartitions)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.minimumClock)||!j.isConstant(t.maximumClock)||!j.isConstant(t.minimumCone)||!j.isConstant(t.maximumCone)||!j.isConstant(t.subdivisions)};Gu.prototype._setStaticOptions=function(e,t){let n=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),i=this._options;i.vertexFormat=this._materialProperty instanceof Jt?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,i.radii=t.radii.getValue(je.MINIMUM_VALUE,i.radii),i.innerRadii=j.getValueOrUndefined(t.innerRadii,i.radii),i.minimumClock=j.getValueOrUndefined(t.minimumClock,je.MINIMUM_VALUE),i.maximumClock=j.getValueOrUndefined(t.maximumClock,je.MINIMUM_VALUE),i.minimumCone=j.getValueOrUndefined(t.minimumCone,je.MINIMUM_VALUE),i.maximumCone=j.getValueOrUndefined(t.maximumCone,je.MINIMUM_VALUE),i.stackPartitions=j.getValueOrUndefined(t.stackPartitions,je.MINIMUM_VALUE),i.slicePartitions=j.getValueOrUndefined(t.slicePartitions,je.MINIMUM_VALUE),i.subdivisions=j.getValueOrUndefined(t.subdivisions,je.MINIMUM_VALUE),i.offsetAttribute=n!==Ze.NONE?hn.ALL:void 0};Gu.prototype._onEntityPropertyChanged=Rg;Gu.DynamicGeometryUpdater=ZD;function ZD(e,t,n){yi.call(this,e,t,n),this._scene=e._scene,this._modelMatrix=new R,this._attributes=void 0,this._outlineAttributes=void 0,this._lastSceneMode=void 0,this._lastShow=void 0,this._lastOutlineShow=void 0,this._lastOutlineWidth=void 0,this._lastOutlineColor=void 0,this._lastOffset=new d,this._material={}}l(Object.create)&&(ZD.prototype=Object.create(yi.prototype),ZD.prototype.constructor=ZD);ZD.prototype.update=function(e){let t=this._entity,n=t.ellipsoid;if(!t.isShowing||!t.isAvailable(e)||!j.getValueOrDefault(n.show,e,!0)){l(this._primitive)&&(this._primitive.show=!1),l(this._outlinePrimitive)&&(this._outlinePrimitive.show=!1);return}let i=j.getValueOrUndefined(n.radii,e,Ket),o=l(i)?t.computeModelMatrixForHeightReference(e,n.heightReference,i.z*.5,this._scene.ellipsoid,this._modelMatrix):void 0;if(!l(o)||!l(i)){l(this._primitive)&&(this._primitive.show=!1),l(this._outlinePrimitive)&&(this._outlinePrimitive.show=!1);return}let r=j.getValueOrDefault(n.fill,e,!0),s=j.getValueOrDefault(n.outline,e,!1),a=j.getValueOrClonedDefault(n.outlineColor,e,G.BLACK,bq),c=gr.getValue(e,n.material??qet,this._material),u=j.getValueOrUndefined(n.innerRadii,e,Xet),f=j.getValueOrUndefined(n.minimumClock,e),h=j.getValueOrUndefined(n.maximumClock,e),A=j.getValueOrUndefined(n.minimumCone,e),g=j.getValueOrUndefined(n.maximumCone,e),m=j.getValueOrUndefined(n.stackPartitions,e),_=j.getValueOrUndefined(n.slicePartitions,e),y=j.getValueOrUndefined(n.subdivisions,e),C=j.getValueOrDefault(n.outlineWidth,e,1),E=j.getValueOrDefault(n.heightReference,e,Ze.NONE),I=E!==Ze.NONE?hn.ALL:void 0,b=this._scene.mode,S=b===ie.SCENE3D&&E===Ze.NONE,B=this._options,v=this._geometryUpdater.shadowsProperty.getValue(e),N=this._geometryUpdater.distanceDisplayConditionProperty.getValue(e),L=j.getValueOrDefault(this._geometryUpdater.terrainOffsetProperty,e,Iq,xq);if(!S||this._lastSceneMode!==b||!l(this._primitive)||B.stackPartitions!==m||B.slicePartitions!==_||l(u)&&!d.equals(B.innerRadii!==u)||B.minimumClock!==f||B.maximumClock!==h||B.minimumCone!==A||B.maximumCone!==g||B.subdivisions!==y||this._lastOutlineWidth!==C||B.offsetAttribute!==I){let x=this._primitives;x.removeAndDestroy(this._primitive),x.removeAndDestroy(this._outlinePrimitive),this._primitive=void 0,this._outlinePrimitive=void 0,this._lastSceneMode=b,this._lastOutlineWidth=C,B.stackPartitions=m,B.slicePartitions=_,B.subdivisions=y,B.offsetAttribute=I,B.radii=d.clone(S?Jet:i,B.radii),l(u)?S?B.innerRadii=d.fromElements(u.x/i.x,u.y/i.y,u.z/i.z,B.innerRadii):B.innerRadii=d.clone(u,B.innerRadii):B.innerRadii=void 0,B.minimumClock=f,B.maximumClock=h,B.minimumCone=A,B.maximumCone=g;let T=new Io({material:c,translucent:c.isTranslucent(),closed:!0});B.vertexFormat=T.vertexFormat;let w=this._geometryUpdater.createFillGeometryInstance(e,S,this._modelMatrix);this._primitive=x.add(new kn({geometryInstances:w,appearance:T,asynchronous:!1,shadows:v}));let M=this._geometryUpdater.createOutlineGeometryInstance(e,S,this._modelMatrix);this._outlinePrimitive=x.add(new kn({geometryInstances:M,appearance:new gn({flat:!0,translucent:M.attributes.color.value[3]!==255,renderState:{lineWidth:this._geometryUpdater._scene.clampLineWidth(C)}}),asynchronous:!1,shadows:v})),this._lastShow=r,this._lastOutlineShow=s,this._lastOutlineColor=G.clone(a,this._lastOutlineColor),this._lastDistanceDisplayCondition=N,this._lastOffset=d.clone(L,this._lastOffset)}else if(this._primitive.ready){let x=this._primitive,T=this._outlinePrimitive;x.show=!0,T.show=!0,x.appearance.material=c;let w=this._attributes;l(w)||(w=x.getGeometryInstanceAttributes(t),this._attributes=w),r!==this._lastShow&&(w.show=Bn.toValue(r,w.show),this._lastShow=r);let M=this._outlineAttributes;l(M)||(M=T.getGeometryInstanceAttributes(t),this._outlineAttributes=M),s!==this._lastOutlineShow&&(M.show=Bn.toValue(s,M.show),this._lastOutlineShow=s),G.equals(a,this._lastOutlineColor)||(M.color=en.toValue(a,M.color),G.clone(a,this._lastOutlineColor)),Ut.equals(N,this._lastDistanceDisplayCondition)||(w.distanceDisplayCondition=Kn.toValue(N,w.distanceDisplayCondition),M.distanceDisplayCondition=Kn.toValue(N,M.distanceDisplayCondition),Ut.clone(N,this._lastDistanceDisplayCondition)),d.equals(L,this._lastOffset)||(w.offset=ho.toValue(L,w.offset),M.offset=ho.toValue(L,w.offset),d.clone(L,this._lastOffset))}S&&(i.x=Math.max(i.x,.001),i.y=Math.max(i.y,.001),i.z=Math.max(i.z,.001),o=R.multiplyByScale(o,i,o),this._primitive.modelMatrix=o,this._outlinePrimitive.modelMatrix=o)};var N3=Gu;function kb(e){e=e??V.EMPTY_OBJECT;let t=e.vertexFormat??Pe.DEFAULT;this._vertexFormat=t,this._workerName="createPlaneGeometry"}kb.packedLength=Pe.packedLength;kb.pack=function(e,t,n){return n=n??0,Pe.pack(e._vertexFormat,t,n),t};var ame=new Pe,$et={vertexFormat:ame};kb.unpack=function(e,t,n){t=t??0;let i=Pe.unpack(e,t,ame);return l(n)?(n._vertexFormat=Pe.clone(i,n._vertexFormat),n):new kb($et)};var L3=new d(-.5,-.5,0),O3=new d(.5,.5,0);kb.createGeometry=function(e){let t=e._vertexFormat,n=new En,i,o;if(t.position){if(o=new Float64Array(12),o[0]=L3.x,o[1]=L3.y,o[2]=0,o[3]=O3.x,o[4]=L3.y,o[5]=0,o[6]=O3.x,o[7]=O3.y,o[8]=0,o[9]=L3.x,o[10]=O3.y,o[11]=0,n.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:o}),t.normal){let r=new Float32Array(12);r[0]=0,r[1]=0,r[2]=1,r[3]=0,r[4]=0,r[5]=1,r[6]=0,r[7]=0,r[8]=1,r[9]=0,r[10]=0,r[11]=1,n.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:r})}if(t.st){let r=new Float32Array(8);r[0]=0,r[1]=0,r[2]=1,r[3]=0,r[4]=1,r[5]=1,r[6]=0,r[7]=1,n.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:r})}if(t.tangent){let r=new Float32Array(12);r[0]=1,r[1]=0,r[2]=0,r[3]=1,r[4]=0,r[5]=0,r[6]=1,r[7]=0,r[8]=0,r[9]=1,r[10]=0,r[11]=0,n.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:r})}if(t.bitangent){let r=new Float32Array(12);r[0]=0,r[1]=1,r[2]=0,r[3]=0,r[4]=1,r[5]=0,r[6]=0,r[7]=1,r[8]=0,r[9]=0,r[10]=1,r[11]=0,n.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:r})}i=new Uint16Array(6),i[0]=0,i[1]=1,i[2]=2,i[3]=0,i[4]=2,i[5]=3}return new ht({attributes:n,indices:i,primitiveType:Me.TRIANGLES,boundingSphere:new le(d.ZERO,Math.sqrt(2))})};var F3=kb;function Ub(){this._workerName="createPlaneOutlineGeometry"}Ub.packedLength=0;Ub.pack=function(e,t){return t};Ub.unpack=function(e,t,n){return l(n)?n:new Ub};var ty=new d(-.5,-.5,0),Q3=new d(.5,.5,0);Ub.createGeometry=function(){let e=new En,t=new Uint16Array(8),n=new Float64Array(12);return n[0]=ty.x,n[1]=ty.y,n[2]=ty.z,n[3]=Q3.x,n[4]=ty.y,n[5]=ty.z,n[6]=Q3.x,n[7]=Q3.y,n[8]=ty.z,n[9]=ty.x,n[10]=Q3.y,n[11]=ty.z,e.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:n}),t[0]=0,t[1]=1,t[2]=1,t[3]=2,t[4]=2,t[5]=3,t[6]=3,t[7]=0,new ht({attributes:e,indices:t,primitiveType:Me.LINES,boundingSphere:new le(d.ZERO,Math.sqrt(2))})};var k3=Ub;var ett=new d,cme=new G;function ttt(e){this.id=e,this.vertexFormat=void 0,this.plane=void 0,this.dimensions=void 0}function ud(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new ttt(e),geometryPropertyName:"plane",observedPropertyNames:["availability","position","orientation","plane"]}),this._onEntityPropertyChanged(e,"plane",e.plane,void 0)}l(Object.create)&&(ud.prototype=Object.create(Ci.prototype),ud.prototype.constructor=ud);ud.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=Kn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof Jt){let g;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(g=this._materialProperty.color.getValue(e,cme)),l(g)||(g=G.WHITE),o=en.fromColor(g),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};let c=t.plane,u=this._options,f=t.computeModelMatrix(e),h=j.getValueOrDefault(c.plane,e,u.plane),A=j.getValueOrUndefined(c.dimensions,e,u.dimensions);return u.plane=h,u.dimensions=A,f=Tq(h,A,f,f),new Rt({id:t,geometry:new F3(this._options),modelMatrix:f,attributes:i})};ud.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,cme),o=this._distanceDisplayConditionProperty.getValue(e),r=t.plane,s=this._options,a=t.computeModelMatrix(e),c=j.getValueOrDefault(r.plane,e,s.plane),u=j.getValueOrUndefined(r.dimensions,e,s.dimensions);return s.plane=c,s.dimensions=u,a=Tq(c,u,a,a),new Rt({id:t,geometry:new k3,modelMatrix:a,attributes:{show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o)}})};ud.prototype._isHidden=function(e,t){return!l(t.plane)||!l(t.dimensions)||!l(e.position)||Ci.prototype._isHidden.call(this,e,t)};ud.prototype._getIsClosed=function(e){return!1};ud.prototype._isDynamic=function(e,t){return!e.position.isConstant||!j.isConstant(e.orientation)||!t.plane.isConstant||!t.dimensions.isConstant||!j.isConstant(t.outlineWidth)};ud.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof Jt,i=this._options;i.vertexFormat=n?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,i.plane=t.plane.getValue(je.MINIMUM_VALUE,i.plane),i.dimensions=t.dimensions.getValue(je.MINIMUM_VALUE,i.dimensions)};ud.DynamicGeometryUpdater=Gb;function Gb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(Gb.prototype=Object.create(yi.prototype),Gb.prototype.constructor=Gb);Gb.prototype._isHidden=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(e.position,n,ett);return!l(o)||!l(i.plane)||!l(i.dimensions)||yi.prototype._isHidden.call(this,e,t,n)};Gb.prototype._setOptions=function(e,t,n){let i=this._options;i.plane=j.getValueOrDefault(t.plane,n,i.plane),i.dimensions=j.getValueOrUndefined(t.dimensions,n,i.dimensions)};var ntt=new d,itt=new d,ott=new d,rtt=new d,stt=new J,att=new J,ctt=new R;function Tq(e,t,n,i){let o=e.normal,r=e.distance,s=d.multiplyByScalar(o,-r,ott),a=d.clone(d.UNIT_Z,itt);D.equalsEpsilon(Math.abs(d.dot(a,o)),1,D.EPSILON8)&&(a=d.clone(d.UNIT_Y,a));let c=d.cross(a,o,ntt);a=d.cross(o,c,a),d.normalize(c,c),d.normalize(a,a);let u=stt;J.setColumn(u,0,c,u),J.setColumn(u,1,a,u),J.setColumn(u,2,o,u);let f=d.fromElements(t.x,t.y,1,rtt),h=J.multiplyByScale(u,f,att),A=R.fromRotationTranslation(h,s,ctt);return R.multiplyTransformation(n,A,i)}ud.createPrimitiveMatrix=Tq;var U3=ud;var ltt=new d,utt=new Xe,ftt=new k,dtt=new k,htt=new d,mtt=new d,Att=new d,$D=new d,ptt=new d,gtt=new d,lme=new Le,_tt=new J,ytt=new J,Ctt=new d;function Ett(e,t,n,i,o,r,s,a,c){let u=e.positions,f=xi.triangulate(e.positions2D,e.holes);f.length<3&&(f=[0,1,2]);let h=Fe.createTypedArray(u.length,f.length);h.set(f);let A=_tt;if(i!==0){let p=Le.fromAxisAngle(s,i,lme);if(A=J.fromQuaternion(p,A),t.tangent||t.bitangent){p=Le.fromAxisAngle(s,-i,lme);let x=J.fromQuaternion(p,ytt);a=d.normalize(J.multiplyByVector(x,a,a),a),t.bitangent&&(c=d.normalize(d.cross(s,a,c),c))}}else A=J.clone(J.IDENTITY,A);let g=dtt;t.st&&(g.x=n.x,g.y=n.y);let m=u.length,_=m*3,y=new Float64Array(_),C=t.normal?new Float32Array(_):void 0,E=t.tangent?new Float32Array(_):void 0,I=t.bitangent?new Float32Array(_):void 0,b=t.st?new Float32Array(m*2):void 0,S=0,B=0,v=0,P=0,N=0;for(let p=0;p<m;p++){let x=u[p];if(y[S++]=x.x,y[S++]=x.y,y[S++]=x.z,t.st)if(l(o)&&o.positions.length===m)b[N++]=o.positions[p].x,b[N++]=o.positions[p].y;else{let T=J.multiplyByVector(A,x,ltt),w=r(T,ftt);k.subtract(w,g,w);let M=D.clamp(w.x/n.width,0,1),O=D.clamp(w.y/n.height,0,1);b[N++]=M,b[N++]=O}t.normal&&(C[B++]=s.x,C[B++]=s.y,C[B++]=s.z),t.tangent&&(E[P++]=a.x,E[P++]=a.y,E[P++]=a.z),t.bitangent&&(I[v++]=c.x,I[v++]=c.y,I[v++]=c.z)}let L=new En;return t.position&&(L.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:y})),t.normal&&(L.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:C})),t.tangent&&(L.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:E})),t.bitangent&&(L.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:I})),t.st&&(L.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:b})),new ht({attributes:L,indices:h,primitiveType:Me.TRIANGLES})}function PE(e){e=e??V.EMPTY_OBJECT;let t=e.polygonHierarchy,n=e.textureCoordinates,i=e.vertexFormat??Pe.DEFAULT;this._vertexFormat=Pe.clone(i),this._polygonHierarchy=t,this._stRotation=e.stRotation??0,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._workerName="createCoplanarPolygonGeometry",this._textureCoordinates=n,this.packedLength=$n.computeHierarchyPackedLength(t,d)+Pe.packedLength+te.packedLength+(l(n)?$n.computeHierarchyPackedLength(n,k):1)+2}PE.fromPositions=function(e){e=e??V.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions},vertexFormat:e.vertexFormat,stRotation:e.stRotation,ellipsoid:e.ellipsoid,textureCoordinates:e.textureCoordinates};return new PE(t)};PE.pack=function(e,t,n){return n=n??0,n=$n.packPolygonHierarchy(e._polygonHierarchy,t,n,d),te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._stRotation,l(e._textureCoordinates)?n=$n.packPolygonHierarchy(e._textureCoordinates,t,n,k):t[n++]=-1,t[n++]=e.packedLength,t};var Itt=te.clone(te.UNIT_SPHERE),xtt=new Pe,btt={polygonHierarchy:{}};PE.unpack=function(e,t,n){t=t??0;let i=$n.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=te.unpack(e,t,Itt);t+=te.packedLength;let r=Pe.unpack(e,t,xtt);t+=Pe.packedLength;let s=e[t++],a=e[t]===-1?void 0:$n.unpackPolygonHierarchy(e,t,k);l(a)?(t=a.startingIndex,delete a.startingIndex):t++;let c=e[t++];return l(n)||(n=new PE(btt)),n._polygonHierarchy=i,n._ellipsoid=te.clone(o,n._ellipsoid),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._stRotation=s,n._textureCoordinates=a,n.packedLength=c,n};PE.createGeometry=function(e){let t=e._vertexFormat,n=e._polygonHierarchy,i=e._stRotation,o=e._textureCoordinates,r=l(o),s=n.positions;if(s=No(s,d.equalsEpsilon,!0),s.length<3)return;let a=htt,c=mtt,u=Att,f=ptt,h=gtt;if(!M_.computeProjectTo2DArguments(s,$D,f,h))return;if(a=d.cross(f,h,a),a=d.normalize(a,a),!d.equalsEpsilon($D,d.ZERO,D.EPSILON6)){let N=e._ellipsoid.geodeticSurfaceNormal($D,Ctt);d.dot(a,N)<0&&(a=d.negate(a,a),f=d.negate(f,f))}let g=M_.createProjectPointsTo2DFunction($D,f,h),m=M_.createProjectPointTo2DFunction($D,f,h);t.tangent&&(c=d.clone(f,c)),t.bitangent&&(u=d.clone(h,u));let _=$n.polygonsFromHierarchy(n,r,g,!1),y=_.hierarchy,C=_.polygons,E=function(N){return N},I=r?$n.polygonsFromHierarchy(o,!0,E,!1).polygons:void 0;if(y.length===0)return;s=y[0].outerRing;let b=le.fromPoints(s),S=$n.computeBoundingRectangle(a,m,s,i,utt),B=[];for(let N=0;N<C.length;N++){let L=new Rt({geometry:Ett(C[N],t,S,i,r?I[N]:void 0,m,a,c,u)});B.push(L)}let v=jn.combineInstances(B)[0];v.attributes.position.values=new Float64Array(v.attributes.position.values),v.indices=Fe.createTypedArray(v.attributes.position.values.length/3,v.indices);let P=v.attributes;return t.position||delete P.position,new ht({attributes:P,indices:v.indices,primitiveType:v.primitiveType,boundingSphere:b})};var G3=PE;var ume=[],z3=[];function Ttt(e,t,n,i,o){let s=xs.fromPoints(t,e).projectPointsOntoPlane(t,ume);xi.computeWindingOrder2D(s)===Gs.CLOCKWISE&&(s.reverse(),t=t.slice().reverse());let c,u,f=t.length,h=0;if(i)for(c=new Float64Array(f*2*3),u=0;u<f;u++){let m=t[u],_=t[(u+1)%f];c[h++]=m.x,c[h++]=m.y,c[h++]=m.z,c[h++]=_.x,c[h++]=_.y,c[h++]=_.z}else{let m=0;if(o===un.GEODESIC)for(u=0;u<f;u++)m+=$n.subdivideLineCount(t[u],t[(u+1)%f],n);else if(o===un.RHUMB)for(u=0;u<f;u++)m+=$n.subdivideRhumbLineCount(e,t[u],t[(u+1)%f],n);for(c=new Float64Array(m*3),u=0;u<f;u++){let _;o===un.GEODESIC?_=$n.subdivideLine(t[u],t[(u+1)%f],n,z3):o===un.RHUMB&&(_=$n.subdivideRhumbLine(e,t[u],t[(u+1)%f],n,z3));let y=_.length;for(let C=0;C<y;++C)c[h++]=_[C]}}f=c.length/3;let A=f*2,g=Fe.createTypedArray(f,A);for(h=0,u=0;u<f-1;u++)g[h++]=u,g[h++]=u+1;return g[h++]=f-1,g[h++]=0,new Rt({geometry:new ht({attributes:new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:c})}),indices:g,primitiveType:Me.LINES})})}function Stt(e,t,n,i,o){let s=xs.fromPoints(t,e).projectPointsOntoPlane(t,ume);xi.computeWindingOrder2D(s)===Gs.CLOCKWISE&&(s.reverse(),t=t.slice().reverse());let c,u,f=t.length,h=new Array(f),A=0;if(i)for(c=new Float64Array(f*2*3*2),u=0;u<f;++u){h[u]=A/3;let y=t[u],C=t[(u+1)%f];c[A++]=y.x,c[A++]=y.y,c[A++]=y.z,c[A++]=C.x,c[A++]=C.y,c[A++]=C.z}else{let y=0;if(o===un.GEODESIC)for(u=0;u<f;u++)y+=$n.subdivideLineCount(t[u],t[(u+1)%f],n);else if(o===un.RHUMB)for(u=0;u<f;u++)y+=$n.subdivideRhumbLineCount(e,t[u],t[(u+1)%f],n);for(c=new Float64Array(y*3*2),u=0;u<f;++u){h[u]=A/3;let C;o===un.GEODESIC?C=$n.subdivideLine(t[u],t[(u+1)%f],n,z3):o===un.RHUMB&&(C=$n.subdivideRhumbLine(e,t[u],t[(u+1)%f],n,z3));let E=C.length;for(let I=0;I<E;++I)c[A++]=C[I]}}f=c.length/6;let g=h.length,m=(f*2+g)*2,_=Fe.createTypedArray(f+g,m);for(A=0,u=0;u<f;++u)_[A++]=u,_[A++]=(u+1)%f,_[A++]=u+f,_[A++]=(u+1)%f+f;for(u=0;u<g;u++){let y=h[u];_[A++]=y,_[A++]=y+f}return new Rt({geometry:new ht({attributes:new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:c})}),indices:_,primitiveType:Me.LINES})})}function RE(e){let t=e.polygonHierarchy,n=e.ellipsoid??te.default,i=e.granularity??D.RADIANS_PER_DEGREE,o=e.perPositionHeight??!1,r=o&&l(e.extrudedHeight),s=e.arcType??un.GEODESIC,a=e.height??0,c=e.extrudedHeight??a;if(!r){let u=Math.max(a,c);c=Math.min(a,c),a=u}this._ellipsoid=te.clone(n),this._granularity=i,this._height=a,this._extrudedHeight=c,this._arcType=s,this._polygonHierarchy=t,this._perPositionHeight=o,this._perPositionHeightExtrude=r,this._offsetAttribute=e.offsetAttribute,this._workerName="createPolygonOutlineGeometry",this.packedLength=$n.computeHierarchyPackedLength(t,d)+te.packedLength+8}RE.pack=function(e,t,n){return n=n??0,n=$n.packPolygonHierarchy(e._polygonHierarchy,t,n,d),te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._height,t[n++]=e._extrudedHeight,t[n++]=e._granularity,t[n++]=e._perPositionHeightExtrude?1:0,t[n++]=e._perPositionHeight?1:0,t[n++]=e._arcType,t[n++]=e._offsetAttribute??-1,t[n]=e.packedLength,t};var wtt=te.clone(te.UNIT_SPHERE),Btt={polygonHierarchy:{}};RE.unpack=function(e,t,n){t=t??0;let i=$n.unpackPolygonHierarchy(e,t,d);t=i.startingIndex,delete i.startingIndex;let o=te.unpack(e,t,wtt);t+=te.packedLength;let r=e[t++],s=e[t++],a=e[t++],c=e[t++]===1,u=e[t++]===1,f=e[t++],h=e[t++],A=e[t];return l(n)||(n=new RE(Btt)),n._polygonHierarchy=i,n._ellipsoid=te.clone(o,n._ellipsoid),n._height=r,n._extrudedHeight=s,n._granularity=a,n._perPositionHeight=u,n._perPositionHeightExtrude=c,n._arcType=f,n._offsetAttribute=h===-1?void 0:h,n.packedLength=A,n};RE.fromPositions=function(e){e=e??V.EMPTY_OBJECT;let t={polygonHierarchy:{positions:e.positions},height:e.height,extrudedHeight:e.extrudedHeight,ellipsoid:e.ellipsoid,granularity:e.granularity,perPositionHeight:e.perPositionHeight,arcType:e.arcType,offsetAttribute:e.offsetAttribute};return new RE(t)};RE.createGeometry=function(e){let t=e._ellipsoid,n=e._granularity,i=e._polygonHierarchy,o=e._perPositionHeight,r=e._arcType,s=$n.polygonOutlinesFromHierarchy(i,!o,t);if(s.length===0)return;let a,c=[],u=D.chordLength(n,t.maximumRadius),f=e._height,h=e._extrudedHeight,A=e._perPositionHeightExtrude||!D.equalsEpsilon(f,h,0,D.EPSILON2),g,m;if(A)for(m=0;m<s.length;m++){if(a=Stt(t,s[m],u,o,r),a.geometry=$n.scaleToGeodeticHeightExtruded(a.geometry,f,h,t,o),l(e._offsetAttribute)){let C=a.geometry.attributes.position.values.length/3,E=new Uint8Array(C);e._offsetAttribute===hn.TOP?E=E.fill(1,0,C/2):(g=e._offsetAttribute===hn.NONE?0:1,E=E.fill(g)),a.geometry.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:E})}c.push(a)}else for(m=0;m<s.length;m++){if(a=Ttt(t,s[m],u,o,r),a.geometry.attributes.position.values=xi.scaleToGeodeticHeight(a.geometry.attributes.position.values,f,t,!o),l(e._offsetAttribute)){let C=a.geometry.attributes.position.values.length;g=e._offsetAttribute===hn.NONE?0:1;let E=new Uint8Array(C/3).fill(g);a.geometry.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:E})}c.push(a)}let _=jn.combineInstances(c)[0],y=le.fromVertices(_.attributes.position.values);return new ht({attributes:_.attributes,indices:_.indices,primitiveType:_.primitiveType,boundingSphere:y,offsetAttribute:e._offsetAttribute})};var V3=RE;var fme="Entity polygons cannot have both height and perPositionHeight. height will be ignored",dme="heightReference is not supported for entity polygons with perPositionHeight. heightReference will be ignored",hme=new G,mme=d.ZERO,Ame=new d,pme=new ae,Dtt=[],vtt=new k;function Ptt(e){this.id=e,this.vertexFormat=void 0,this.polygonHierarchy=void 0,this.perPositionHeight=void 0,this.closeTop=void 0,this.closeBottom=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.offsetAttribute=void 0,this.arcType=void 0,this.textureCoordinates=void 0}function zu(e,t){ti.call(this,{entity:e,scene:t,geometryOptions:new Ptt(e),geometryPropertyName:"polygon",observedPropertyNames:["availability","polygon"]}),this._onEntityPropertyChanged(e,"polygon",e.polygon,void 0)}l(Object.create)&&(zu.prototype=Object.create(ti.prototype),zu.prototype.constructor=zu);zu.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=this._options,o={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof Jt){let s;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(s=this._materialProperty.color.getValue(e,hme)),l(s)||(s=G.WHITE),o.color=en.fromColor(s)}l(i.offsetAttribute)&&(o.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,mme,Ame)));let r;return i.perPositionHeight&&!l(i.extrudedHeight)?r=new G3(i):r=new o_(i),new Rt({id:t,geometry:r,attributes:o})};zu.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=this._options,o=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,hme),r=this._distanceDisplayConditionProperty.getValue(e),s={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(o),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(r),offset:void 0};l(i.offsetAttribute)&&(s.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,mme,Ame)));let a;return i.perPositionHeight&&!l(i.extrudedHeight)?a=new sh(i):a=new V3(i),new Rt({id:t,geometry:a,attributes:s})};zu.prototype._computeCenter=function(e,t){let n=j.getValueOrUndefined(this._entity.polygon.hierarchy,e);if(!l(n))return;let i=n.positions;if(i.length===0)return;let o=this._scene.ellipsoid,r=xs.fromPoints(i,o),s=r.projectPointsOntoPlane(i,Dtt),a=s.length,c=0,u=a-1,f=new k;for(let A=0;A<a;u=A++){let g=s[A],m=s[u],_=g.x*m.y-m.x*g.y,y=k.add(g,m,vtt);y=k.multiplyByScalar(y,_,y),f=k.add(f,y,f),c+=_}let h=1/(c*3);return f=k.multiplyByScalar(f,h,f),r.projectPointOntoEllipsoid(f,t)};zu.prototype._isHidden=function(e,t){return!l(t.hierarchy)||Ci.prototype._isHidden.call(this,e,t)};zu.prototype._isOnTerrain=function(e,t){let n=ti.prototype._isOnTerrain.call(this,e,t),i=t.perPositionHeight,o=l(i)&&(i.isConstant?i.getValue(je.MINIMUM_VALUE):!0);return n&&!o};zu.prototype._isDynamic=function(e,t){return!t.hierarchy.isConstant||!j.isConstant(t.height)||!j.isConstant(t.extrudedHeight)||!j.isConstant(t.granularity)||!j.isConstant(t.stRotation)||!j.isConstant(t.textureCoordinates)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.perPositionHeight)||!j.isConstant(t.closeTop)||!j.isConstant(t.closeBottom)||!j.isConstant(t.zIndex)||!j.isConstant(t.arcType)||this._onTerrain&&!j.isConstant(this._materialProperty)&&!(this._materialProperty instanceof Jt)};zu.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof Jt,i=this._options;i.vertexFormat=n?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat;let o=t.hierarchy.getValue(je.MINIMUM_VALUE),r=j.getValueOrUndefined(t.height,je.MINIMUM_VALUE),s=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),a=j.getValueOrUndefined(t.extrudedHeight,je.MINIMUM_VALUE),c=j.getValueOrDefault(t.extrudedHeightReference,je.MINIMUM_VALUE,Ze.NONE),u=j.getValueOrDefault(t.perPositionHeight,je.MINIMUM_VALUE,!1);r=ti.getGeometryHeight(r,s);let f;if(u?(l(r)&&(r=void 0,yt(fme)),s!==Ze.NONE&&u&&(r=void 0,yt(dme))):(l(a)&&!l(r)&&(r=0),f=ti.computeGeometryOffsetAttribute(r,s,a,c)),i.polygonHierarchy=o,i.granularity=j.getValueOrUndefined(t.granularity,je.MINIMUM_VALUE),i.stRotation=j.getValueOrUndefined(t.stRotation,je.MINIMUM_VALUE),i.perPositionHeight=u,i.closeTop=j.getValueOrDefault(t.closeTop,je.MINIMUM_VALUE,!0),i.closeBottom=j.getValueOrDefault(t.closeBottom,je.MINIMUM_VALUE,!0),i.offsetAttribute=f,i.height=r,i.arcType=j.getValueOrDefault(t.arcType,je.MINIMUM_VALUE,un.GEODESIC),i.textureCoordinates=j.getValueOrUndefined(t.textureCoordinates,je.MINIMUM_VALUE),a=ti.getGeometryExtrudedHeight(a,c),a===ti.CLAMP_TO_GROUND){let h=o_.computeRectangleFromPositions(i.polygonHierarchy.positions,i.ellipsoid,i.arcType,pme);a=wi.getMinimumMaximumHeights(h).minimumTerrainHeight}i.extrudedHeight=a};zu.prototype._getIsClosed=function(e){let t=e.height,n=e.extrudedHeight,i=l(n)&&n!==t;return!e.perPositionHeight&&(!i&&t===0||i&&e.closeTop&&e.closeBottom)};zu.DynamicGeometryUpdater=zb;function zb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(zb.prototype=Object.create(yi.prototype),zb.prototype.constructor=zb);zb.prototype._isHidden=function(e,t,n){return!l(this._options.polygonHierarchy)||yi.prototype._isHidden.call(this,e,t,n)};zb.prototype._setOptions=function(e,t,n){let i=this._options;i.polygonHierarchy=j.getValueOrUndefined(t.hierarchy,n);let o=j.getValueOrUndefined(t.height,n),r=j.getValueOrDefault(t.heightReference,n,Ze.NONE),s=j.getValueOrDefault(t.extrudedHeightReference,n,Ze.NONE),a=j.getValueOrUndefined(t.extrudedHeight,n),c=j.getValueOrUndefined(t.perPositionHeight,n);o=ti.getGeometryHeight(o,s);let u;if(c?(l(o)&&(o=void 0,yt(fme)),r!==Ze.NONE&&c&&(o=void 0,yt(dme))):(l(a)&&!l(o)&&(o=0),u=ti.computeGeometryOffsetAttribute(o,r,a,s)),i.granularity=j.getValueOrUndefined(t.granularity,n),i.stRotation=j.getValueOrUndefined(t.stRotation,n),i.textureCoordinates=j.getValueOrUndefined(t.textureCoordinates,n),i.perPositionHeight=j.getValueOrUndefined(t.perPositionHeight,n),i.closeTop=j.getValueOrDefault(t.closeTop,n,!0),i.closeBottom=j.getValueOrDefault(t.closeBottom,n,!0),i.offsetAttribute=u,i.height=o,i.arcType=j.getValueOrDefault(t.arcType,n,un.GEODESIC),a=ti.getGeometryExtrudedHeight(a,s),a===ti.CLAMP_TO_GROUND){let f=o_.computeRectangleFromPositions(i.polygonHierarchy.positions,i.ellipsoid,i.arcType,pme);a=wi.getMinimumMaximumHeights(f).minimumTerrainHeight}i.extrudedHeight=a};var H3=zu;function Rtt(e,t,n,i){let o=new En;i.position&&(o.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:e}));let r=t.length,s=e.length/3,a=(s-r*2)/(r*2),c=xi.triangulate(t),u=(a-1)*r*6+c.length*2,f=Fe.createTypedArray(s,u),h,A,g,m,_,y,C=r*2,E=0;for(h=0;h<a-1;h++){for(A=0;A<r-1;A++)g=A*2+h*r*2,y=g+C,m=g+1,_=m+C,f[E++]=m,f[E++]=g,f[E++]=_,f[E++]=_,f[E++]=g,f[E++]=y;g=r*2-2+h*r*2,m=g+1,_=m+C,y=g+C,f[E++]=m,f[E++]=g,f[E++]=_,f[E++]=_,f[E++]=g,f[E++]=y}if(i.st||i.tangent||i.bitangent){let S=new Float32Array(s*2),B=1/(a-1),v=1/n.height,P=n.height/2,N,L,p=0;for(h=0;h<a;h++){for(N=h*B,L=v*(t[0].y+P),S[p++]=N,S[p++]=L,A=1;A<r;A++)L=v*(t[A].y+P),S[p++]=N,S[p++]=L,S[p++]=N,S[p++]=L;L=v*(t[0].y+P),S[p++]=N,S[p++]=L}for(A=0;A<r;A++)N=0,L=v*(t[A].y+P),S[p++]=N,S[p++]=L;for(A=0;A<r;A++)N=(a-1)*B,L=v*(t[A].y+P),S[p++]=N,S[p++]=L;o.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:new Float32Array(S)})}let I=s-r*2;for(h=0;h<c.length;h+=3){let S=c[h]+I,B=c[h+1]+I,v=c[h+2]+I;f[E++]=S,f[E++]=B,f[E++]=v,f[E++]=v+r,f[E++]=B+r,f[E++]=S+r}let b=new ht({attributes:o,indices:f,boundingSphere:le.fromVertices(e),primitiveType:Me.TRIANGLES});if(i.normal&&(b=jn.computeNormal(b)),i.tangent||i.bitangent){try{b=jn.computeTangentAndBitangent(b)}catch{yt("polyline-volume-tangent-bitangent","Unable to compute tangents and bitangents for polyline volume geometry")}i.tangent||(b.attributes.tangent=void 0),i.bitangent||(b.attributes.bitangent=void 0),i.st||(b.attributes.st=void 0)}return b}function tv(e){e=e??V.EMPTY_OBJECT;let t=e.polylinePositions,n=e.shapePositions;this._positions=t,this._shape=n,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._cornerType=e.cornerType??Ji.ROUNDED,this._vertexFormat=Pe.clone(e.vertexFormat??Pe.DEFAULT),this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._workerName="createPolylineVolumeGeometry";let i=1+t.length*d.packedLength;i+=1+n.length*k.packedLength,this.packedLength=i+te.packedLength+Pe.packedLength+2}tv.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._shape;for(r=s.length,t[n++]=r,i=0;i<r;++i,n+=k.packedLength)k.pack(s[i],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._cornerType,t[n]=e._granularity,t};var gme=te.clone(te.UNIT_SPHERE),_me=new Pe,ev={polylinePositions:void 0,shapePositions:void 0,ellipsoid:gme,vertexFormat:_me,cornerType:void 0,granularity:void 0};tv.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=new Array(o);for(i=0;i<o;++i,t+=k.packedLength)s[i]=k.unpack(e,t);let a=te.unpack(e,t,gme);t+=te.packedLength;let c=Pe.unpack(e,t,_me);t+=Pe.packedLength;let u=e[t++],f=e[t];return l(n)?(n._positions=r,n._shape=s,n._ellipsoid=te.clone(a,n._ellipsoid),n._vertexFormat=Pe.clone(c,n._vertexFormat),n._cornerType=u,n._granularity=f,n):(ev.polylinePositions=r,ev.shapePositions=s,ev.cornerType=u,ev.granularity=f,new tv(ev))};var Mtt=new Xe;tv.createGeometry=function(e){let t=e._positions,n=No(t,d.equalsEpsilon),i=e._shape;if(i=Gm.removeDuplicatesFromShape(i),n.length<2||i.length<3)return;xi.computeWindingOrder2D(i)===Gs.CLOCKWISE&&i.reverse();let o=Xe.fromPoints(i,Mtt),r=Gm.computePositions(n,i,o,e,!0);return Rtt(r,i,o,e._vertexFormat)};var W3=tv;function Ntt(e,t){let n=new En;n.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:e});let i=t.length,o=n.position.values.length/3,s=e.length/3/i,a=Fe.createTypedArray(o,2*i*(s+1)),c,u,f=0;c=0;let h=c*i;for(u=0;u<i-1;u++)a[f++]=u+h,a[f++]=u+h+1;for(a[f++]=i-1+h,a[f++]=h,c=s-1,h=c*i,u=0;u<i-1;u++)a[f++]=u+h,a[f++]=u+h+1;for(a[f++]=i-1+h,a[f++]=h,c=0;c<s-1;c++){let g=i*c,m=g+i;for(u=0;u<i;u++)a[f++]=u+g,a[f++]=u+m}return new ht({attributes:n,indices:Fe.createTypedArray(o,a),boundingSphere:le.fromVertices(e),primitiveType:Me.LINES})}function iv(e){e=e??V.EMPTY_OBJECT;let t=e.polylinePositions,n=e.shapePositions;this._positions=t,this._shape=n,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._cornerType=e.cornerType??Ji.ROUNDED,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._workerName="createPolylineVolumeOutlineGeometry";let i=1+t.length*d.packedLength;i+=1+n.length*k.packedLength,this.packedLength=i+te.packedLength+2}iv.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._shape;for(r=s.length,t[n++]=r,i=0;i<r;++i,n+=k.packedLength)k.pack(s[i],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._cornerType,t[n]=e._granularity,t};var yme=te.clone(te.UNIT_SPHERE),nv={polylinePositions:void 0,shapePositions:void 0,ellipsoid:yme,height:void 0,cornerType:void 0,granularity:void 0};iv.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=new Array(o);for(i=0;i<o;++i,t+=k.packedLength)s[i]=k.unpack(e,t);let a=te.unpack(e,t,yme);t+=te.packedLength;let c=e[t++],u=e[t];return l(n)?(n._positions=r,n._shape=s,n._ellipsoid=te.clone(a,n._ellipsoid),n._cornerType=c,n._granularity=u,n):(nv.polylinePositions=r,nv.shapePositions=s,nv.cornerType=c,nv.granularity=u,new iv(nv))};var Ltt=new Xe;iv.createGeometry=function(e){let t=e._positions,n=No(t,d.equalsEpsilon),i=e._shape;if(i=Gm.removeDuplicatesFromShape(i),n.length<2||i.length<3)return;xi.computeWindingOrder2D(i)===Gs.CLOCKWISE&&i.reverse();let o=Xe.fromPoints(i,Ltt),r=Gm.computePositions(n,i,o,e,!1);return Ntt(r,i)};var j3=iv;var Cme=new G;function Ott(e){this.id=e,this.vertexFormat=void 0,this.polylinePositions=void 0,this.shapePositions=void 0,this.cornerType=void 0,this.granularity=void 0}function Km(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new Ott(e),geometryPropertyName:"polylineVolume",observedPropertyNames:["availability","polylineVolume"]}),this._onEntityPropertyChanged(e,"polylineVolume",e.polylineVolume,void 0)}l(Object.create)&&(Km.prototype=Object.create(Ci.prototype),Km.prototype.constructor=Km);Km.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=Kn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof Jt){let c;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(c=this._materialProperty.color.getValue(e,Cme)),l(c)||(c=G.WHITE),o=en.fromColor(c),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};return new Rt({id:t,geometry:new W3(this._options),attributes:i})};Km.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Cme),o=this._distanceDisplayConditionProperty.getValue(e);return new Rt({id:t,geometry:new j3(this._options),attributes:{show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o)}})};Km.prototype._isHidden=function(e,t){return!l(t.positions)||!l(t.shape)||Ci.prototype._isHidden.call(this,e,t)};Km.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!t.shape.isConstant||!j.isConstant(t.granularity)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.cornerType)};Km.prototype._setStaticOptions=function(e,t){let n=t.granularity,i=t.cornerType,o=this._options,r=this._materialProperty instanceof Jt;o.vertexFormat=r?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,o.polylinePositions=t.positions.getValue(je.MINIMUM_VALUE,o.polylinePositions),o.shapePositions=t.shape.getValue(je.MINIMUM_VALUE,o.shape),o.granularity=l(n)?n.getValue(je.MINIMUM_VALUE):void 0,o.cornerType=l(i)?i.getValue(je.MINIMUM_VALUE):void 0};Km.DynamicGeometryUpdater=Vb;function Vb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(Vb.prototype=Object.create(yi.prototype),Vb.prototype.constructor=Vb);Vb.prototype._isHidden=function(e,t,n){let i=this._options;return!l(i.polylinePositions)||!l(i.shapePositions)||yi.prototype._isHidden.call(this,e,t,n)};Vb.prototype._setOptions=function(e,t,n){let i=this._options;i.polylinePositions=j.getValueOrUndefined(t.positions,n,i.polylinePositions),i.shapePositions=j.getValueOrUndefined(t.shape,n),i.granularity=j.getValueOrUndefined(t.granularity,n),i.cornerType=j.getValueOrUndefined(t.cornerType,n)};var Y3=Km;var Sq=new d,xme=new d,bme=new d,Tme=new d,Sme=new ae,Ftt=new k,Qtt=new le,ktt=new le;function wme(e,t){let n=new ht({attributes:new En,primitiveType:Me.TRIANGLES});return n.attributes.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:t.positions}),e.normal&&(n.attributes.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:t.normals})),e.tangent&&(n.attributes.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:t.tangents})),e.bitangent&&(n.attributes.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:t.bitangents})),n}function Utt(e,t,n,i){let o=e.length,r=t.normal?new Float32Array(o):void 0,s=t.tangent?new Float32Array(o):void 0,a=t.bitangent?new Float32Array(o):void 0,c=0,u=Tme,f=bme,h=xme;if(t.normal||t.tangent||t.bitangent)for(let A=0;A<o;A+=3){let g=d.fromArray(e,A,Sq),m=c+1,_=c+2;h=n.geodeticSurfaceNormal(g,h),(t.tangent||t.bitangent)&&(d.cross(d.UNIT_Z,h,f),J.multiplyByVector(i,f,f),d.normalize(f,f),t.bitangent&&d.normalize(d.cross(h,f,u),u)),t.normal&&(r[c]=h.x,r[m]=h.y,r[_]=h.z),t.tangent&&(s[c]=f.x,s[m]=f.y,s[_]=f.z),t.bitangent&&(a[c]=u.x,a[m]=u.y,a[_]=u.z),c+=3}return wme(t,{positions:e,normals:r,tangents:s,bitangents:a})}var wq=new d,Bme=new d;function Gtt(e,t,n){let i=e.length,o=t.normal?new Float32Array(i):void 0,r=t.tangent?new Float32Array(i):void 0,s=t.bitangent?new Float32Array(i):void 0,a=0,c=0,u=0,f=!0,h=Tme,A=bme,g=xme;if(t.normal||t.tangent||t.bitangent)for(let m=0;m<i;m+=6){let _=d.fromArray(e,m,Sq),y=d.fromArray(e,(m+6)%i,wq);if(f){let C=d.fromArray(e,(m+3)%i,Bme);d.subtract(y,_,y),d.subtract(C,_,C),g=d.normalize(d.cross(C,y,g),g),f=!1}d.equalsEpsilon(y,_,D.EPSILON10)&&(f=!0),(t.tangent||t.bitangent)&&(h=n.geodeticSurfaceNormal(_,h),t.tangent&&(A=d.normalize(d.cross(h,g,A),A))),t.normal&&(o[a++]=g.x,o[a++]=g.y,o[a++]=g.z,o[a++]=g.x,o[a++]=g.y,o[a++]=g.z),t.tangent&&(r[c++]=A.x,r[c++]=A.y,r[c++]=A.z,r[c++]=A.x,r[c++]=A.y,r[c++]=A.z),t.bitangent&&(s[u++]=h.x,s[u++]=h.y,s[u++]=h.z,s[u++]=h.x,s[u++]=h.y,s[u++]=h.z)}return wme(t,{positions:e,normals:o,tangents:r,bitangents:s})}function Dme(e,t){let n=e._vertexFormat,i=e._ellipsoid,o=t.height,r=t.width,s=t.northCap,a=t.southCap,c=0,u=o,f=o,h=0;s&&(c=1,f-=1,h+=1),a&&(u-=1,f-=1,h+=1),h+=r*f;let A=n.position?new Float64Array(h*3):void 0,g=n.st?new Float32Array(h*2):void 0,m=0,_=0,y=Sq,C=Ftt,E=Number.MAX_VALUE,I=Number.MAX_VALUE,b=-Number.MAX_VALUE,S=-Number.MAX_VALUE;for(let x=c;x<u;++x)for(let T=0;T<r;++T)da.computePosition(t,i,n.st,x,T,y,C),A[m++]=y.x,A[m++]=y.y,A[m++]=y.z,n.st&&(g[_++]=C.x,g[_++]=C.y,E=Math.min(E,C.x),I=Math.min(I,C.y),b=Math.max(b,C.x),S=Math.max(S,C.y));if(s&&(da.computePosition(t,i,n.st,0,0,y,C),A[m++]=y.x,A[m++]=y.y,A[m++]=y.z,n.st&&(g[_++]=C.x,g[_++]=C.y,E=C.x,I=C.y,b=C.x,S=C.y)),a&&(da.computePosition(t,i,n.st,o-1,0,y,C),A[m++]=y.x,A[m++]=y.y,A[m]=y.z,n.st&&(g[_++]=C.x,g[_]=C.y,E=Math.min(E,C.x),I=Math.min(I,C.y),b=Math.max(b,C.x),S=Math.max(S,C.y))),n.st&&(E<0||I<0||b>1||S>1))for(let x=0;x<g.length;x+=2)g[x]=(g[x]-E)/(b-E),g[x+1]=(g[x+1]-I)/(S-I);let B=Utt(A,n,i,t.tangentRotationMatrix),v=6*(r-1)*(f-1);s&&(v+=3*(r-1)),a&&(v+=3*(r-1));let P=Fe.createTypedArray(h,v),N=0,L=0,p;for(p=0;p<f-1;++p){for(let x=0;x<r-1;++x){let T=N,w=T+r,M=w+1,O=T+1;P[L++]=T,P[L++]=w,P[L++]=O,P[L++]=O,P[L++]=w,P[L++]=M,++N}++N}if(s||a){let x=h-1,T=h-1;s&&a&&(x=h-2);let w,M;if(N=0,s)for(p=0;p<r-1;p++)w=N,M=w+1,P[L++]=x,P[L++]=w,P[L++]=M,++N;if(a)for(N=(f-1)*r,p=0;p<r-1;p++)w=N,M=w+1,P[L++]=w,P[L++]=T,P[L++]=M,++N}return B.indices=P,n.st&&(B.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:g})),B}function Hb(e,t,n,i,o){return e[t++]=i[n],e[t++]=i[n+1],e[t++]=i[n+2],e[t++]=o[n],e[t++]=o[n+1],e[t]=o[n+2],e}function Wb(e,t,n,i){return e[t++]=i[n],e[t++]=i[n+1],e[t++]=i[n],e[t]=i[n+1],e}var Bq=new Pe;function ztt(e,t){let n=e._shadowVolume,i=e._offsetAttribute,o=e._vertexFormat,r=e._extrudedHeight,s=e._surfaceHeight,a=e._ellipsoid,c=t.height,u=t.width,f;if(n){let it=Pe.clone(o,Bq);it.normal=!0,e._vertexFormat=it}let h=Dme(e,t);n&&(e._vertexFormat=o);let A=xi.scaleToGeodeticHeight(h.attributes.position.values,s,a,!1);A=new Float64Array(A);let g=A.length,m=g*2,_=new Float64Array(m);_.set(A);let y=xi.scaleToGeodeticHeight(h.attributes.position.values,r,a);_.set(y,g),h.attributes.position.values=_;let C=o.normal?new Float32Array(m):void 0,E=o.tangent?new Float32Array(m):void 0,I=o.bitangent?new Float32Array(m):void 0,b=o.st?new Float32Array(m/3*2):void 0,S,B;if(o.normal){for(B=h.attributes.normal.values,C.set(B),f=0;f<g;f++)B[f]=-B[f];C.set(B,g),h.attributes.normal.values=C}if(n){B=h.attributes.normal.values,o.normal||(h.attributes.normal=void 0);let it=new Float32Array(m);for(f=0;f<g;f++)B[f]=-B[f];it.set(B,g),h.attributes.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:it})}let v,P=l(i);if(P){let it=g/3*2,tn=new Uint8Array(it);i===hn.TOP?tn=tn.fill(1,0,it/2):(v=i===hn.NONE?0:1,tn=tn.fill(v)),h.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:tn})}if(o.tangent){let it=h.attributes.tangent.values;for(E.set(it),f=0;f<g;f++)it[f]=-it[f];E.set(it,g),h.attributes.tangent.values=E}if(o.bitangent){let it=h.attributes.bitangent.values;I.set(it),I.set(it,g),h.attributes.bitangent.values=I}o.st&&(S=h.attributes.st.values,b.set(S),b.set(S,g/3*2),h.attributes.st.values=b);let N=h.indices,L=N.length,p=g/3,x=Fe.createTypedArray(m/3,L*2);for(x.set(N),f=0;f<L;f+=3)x[f+L]=N[f+2]+p,x[f+1+L]=N[f+1]+p,x[f+2+L]=N[f]+p;h.indices=x;let T=t.northCap,w=t.southCap,M=c,O=2,U=0,Q=4,z=4;T&&(O-=1,M-=1,U+=1,Q-=2,z-=1),w&&(O-=1,M-=1,U+=1,Q-=2,z-=1),U+=O*u+2*M-Q;let F=(U+z)*2,H=new Float64Array(F*3),W=n?new Float32Array(F*3):void 0,Z=P?new Uint8Array(F):void 0,Y=o.st?new Float32Array(F*2):void 0,$=i===hn.TOP;P&&!$&&(v=i===hn.ALL?1:0,Z=Z.fill(v));let X=0,he=0,ge=0,fe=0,ye=u*M,Ie;for(f=0;f<ye;f+=u)Ie=f*3,H=Hb(H,X,Ie,A,y),X+=6,o.st&&(Y=Wb(Y,he,f*2,S),he+=4),n&&(ge+=3,W[ge++]=B[Ie],W[ge++]=B[Ie+1],W[ge++]=B[Ie+2]),$&&(Z[fe++]=1,fe+=1);if(w){let it=T?ye+1:ye;for(Ie=it*3,f=0;f<2;f++)H=Hb(H,X,Ie,A,y),X+=6,o.st&&(Y=Wb(Y,he,it*2,S),he+=4),n&&(ge+=3,W[ge++]=B[Ie],W[ge++]=B[Ie+1],W[ge++]=B[Ie+2]),$&&(Z[fe++]=1,fe+=1)}else for(f=ye-u;f<ye;f++)Ie=f*3,H=Hb(H,X,Ie,A,y),X+=6,o.st&&(Y=Wb(Y,he,f*2,S),he+=4),n&&(ge+=3,W[ge++]=B[Ie],W[ge++]=B[Ie+1],W[ge++]=B[Ie+2]),$&&(Z[fe++]=1,fe+=1);for(f=ye-1;f>0;f-=u)Ie=f*3,H=Hb(H,X,Ie,A,y),X+=6,o.st&&(Y=Wb(Y,he,f*2,S),he+=4),n&&(ge+=3,W[ge++]=B[Ie],W[ge++]=B[Ie+1],W[ge++]=B[Ie+2]),$&&(Z[fe++]=1,fe+=1);if(T){let it=ye;for(Ie=it*3,f=0;f<2;f++)H=Hb(H,X,Ie,A,y),X+=6,o.st&&(Y=Wb(Y,he,it*2,S),he+=4),n&&(ge+=3,W[ge++]=B[Ie],W[ge++]=B[Ie+1],W[ge++]=B[Ie+2]),$&&(Z[fe++]=1,fe+=1)}else for(f=u-1;f>=0;f--)Ie=f*3,H=Hb(H,X,Ie,A,y),X+=6,o.st&&(Y=Wb(Y,he,f*2,S),he+=4),n&&(ge+=3,W[ge++]=B[Ie],W[ge++]=B[Ie+1],W[ge++]=B[Ie+2]),$&&(Z[fe++]=1,fe+=1);let ve=Gtt(H,o,a);o.st&&(ve.attributes.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:Y})),n&&(ve.attributes.extrudeDirection=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:W})),P&&(ve.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:Z}));let Te=Fe.createTypedArray(F,U*6),ke,Ge,qe,tt;g=H.length/3;let $t=0;for(f=0;f<g-1;f+=2){ke=f,tt=(ke+2)%g;let it=d.fromArray(H,ke*3,wq),tn=d.fromArray(H,tt*3,Bme);d.equalsEpsilon(it,tn,D.EPSILON10)||(Ge=(ke+1)%g,qe=(Ge+2)%g,Te[$t++]=ke,Te[$t++]=Ge,Te[$t++]=tt,Te[$t++]=tt,Te[$t++]=Ge,Te[$t++]=qe)}return ve.indices=Te,ve=jn.combineInstances([new Rt({geometry:h}),new Rt({geometry:ve})]),ve[0]}var Vtt=[new d,new d,new d,new d],vme=new Ae,Htt=new Ae;function Dq(e,t,n,i,o){if(n===0)return ae.clone(e,o);let r=da.computeOptions(e,t,n,0,Sme,vme),s=r.height,a=r.width,c=Vtt;return da.computePosition(r,i,!1,0,0,c[0]),da.computePosition(r,i,!1,0,a-1,c[1]),da.computePosition(r,i,!1,s-1,0,c[2]),da.computePosition(r,i,!1,s-1,a-1,c[3]),ae.fromCartesianArray(c,i,o)}function Xm(e){e=e??V.EMPTY_OBJECT;let t=e.rectangle,n=e.height??0,i=e.extrudedHeight??n;this._rectangle=ae.clone(t),this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._surfaceHeight=Math.max(n,i),this._rotation=e.rotation??0,this._stRotation=e.stRotation??0,this._vertexFormat=Pe.clone(e.vertexFormat??Pe.DEFAULT),this._extrudedHeight=Math.min(n,i),this._shadowVolume=e.shadowVolume??!1,this._workerName="createRectangleGeometry",this._offsetAttribute=e.offsetAttribute,this._rotatedRectangle=void 0,this._textureCoordinateRotationPoints=void 0}Xm.packedLength=ae.packedLength+te.packedLength+Pe.packedLength+7;Xm.pack=function(e,t,n){return n=n??0,ae.pack(e._rectangle,t,n),n+=ae.packedLength,te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._granularity,t[n++]=e._surfaceHeight,t[n++]=e._rotation,t[n++]=e._stRotation,t[n++]=e._extrudedHeight,t[n++]=e._shadowVolume?1:0,t[n]=e._offsetAttribute??-1,t};var Pme=new ae,Rme=te.clone(te.UNIT_SPHERE),ny={rectangle:Pme,ellipsoid:Rme,vertexFormat:Bq,granularity:void 0,height:void 0,rotation:void 0,stRotation:void 0,extrudedHeight:void 0,shadowVolume:void 0,offsetAttribute:void 0};Xm.unpack=function(e,t,n){t=t??0;let i=ae.unpack(e,t,Pme);t+=ae.packedLength;let o=te.unpack(e,t,Rme);t+=te.packedLength;let r=Pe.unpack(e,t,Bq);t+=Pe.packedLength;let s=e[t++],a=e[t++],c=e[t++],u=e[t++],f=e[t++],h=e[t++]===1,A=e[t];return l(n)?(n._rectangle=ae.clone(i,n._rectangle),n._ellipsoid=te.clone(o,n._ellipsoid),n._vertexFormat=Pe.clone(r,n._vertexFormat),n._granularity=s,n._surfaceHeight=a,n._rotation=c,n._stRotation=u,n._extrudedHeight=f,n._shadowVolume=h,n._offsetAttribute=A===-1?void 0:A,n):(ny.granularity=s,ny.height=a,ny.rotation=c,ny.stRotation=u,ny.extrudedHeight=f,ny.shadowVolume=h,ny.offsetAttribute=A===-1?void 0:A,new Xm(ny))};Xm.computeRectangle=function(e,t){e=e??V.EMPTY_OBJECT;let n=e.rectangle,i=e.granularity??D.RADIANS_PER_DEGREE,o=e.ellipsoid??te.default,r=e.rotation??0;return Dq(n,i,r,o,t)};var Wtt=new J,Eme=new Le,jtt=new Ae;Xm.createGeometry=function(e){if(D.equalsEpsilon(e._rectangle.north,e._rectangle.south,D.EPSILON10)||D.equalsEpsilon(e._rectangle.east,e._rectangle.west,D.EPSILON10))return;let t=e._rectangle,n=e._ellipsoid,i=e._rotation,o=e._stRotation,r=e._vertexFormat,s=da.computeOptions(t,e._granularity,i,o,Sme,vme,Htt),a=Wtt;if(o!==0||i!==0){let g=ae.center(t,jtt),m=n.geodeticSurfaceNormalCartographic(g,wq);Le.fromAxisAngle(m,-o,Eme),J.fromQuaternion(Eme,a)}else J.clone(J.IDENTITY,a);let c=e._surfaceHeight,u=e._extrudedHeight,f=!D.equalsEpsilon(c,u,0,D.EPSILON2);s.lonScalar=1/e._rectangle.width,s.latScalar=1/e._rectangle.height,s.tangentRotationMatrix=a;let h,A;if(t=e._rectangle,f){h=ztt(e,s);let g=le.fromRectangle3D(t,n,c,ktt),m=le.fromRectangle3D(t,n,u,Qtt);A=le.union(g,m)}else{if(h=Dme(e,s),h.attributes.position.values=xi.scaleToGeodeticHeight(h.attributes.position.values,c,n,!1),l(e._offsetAttribute)){let g=h.attributes.position.values.length,m=e._offsetAttribute===hn.NONE?0:1,_=new Uint8Array(g/3).fill(m);h.attributes.applyOffset=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:1,values:_})}A=le.fromRectangle3D(t,n,c)}return r.position||delete h.attributes.position,new ht({attributes:h.attributes,indices:h.indices,primitiveType:h.primitiveType,boundingSphere:A,offsetAttribute:e._offsetAttribute})};Xm.createShadowVolume=function(e,t,n){let i=e._granularity,o=e._ellipsoid,r=t(i,o),s=n(i,o);return new Xm({rectangle:e._rectangle,rotation:e._rotation,ellipsoid:o,stRotation:e._stRotation,granularity:i,extrudedHeight:s,height:r,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0})};var Ime=new ae,Ytt=[new k,new k,new k],qtt=new Wi,Ktt=new Ae;function Xtt(e){if(e._stRotation===0)return[0,0,0,1,1,0];let t=ae.clone(e._rectangle,Ime),n=e._granularity,i=e._ellipsoid,o=e._rotation-e._stRotation,r=Dq(t,n,o,i,Ime),s=Ytt;s[0].x=r.west,s[0].y=r.south,s[1].x=r.west,s[1].y=r.north,s[2].x=r.east,s[2].y=r.south;let a=e.rectangle,c=Wi.fromRotation(e._stRotation,qtt),u=ae.center(a,Ktt);for(let m=0;m<3;++m){let _=s[m];_.x-=u.longitude,_.y-=u.latitude,Wi.multiplyByVector(c,_,_),_.x+=u.longitude,_.y+=u.latitude,_.x=(_.x-a.west)/a.width,_.y=(_.y-a.south)/a.height}let f=s[0],h=s[1],A=s[2],g=new Array(6);return k.pack(f,g),k.pack(h,g,2),k.pack(A,g,4),g}Object.defineProperties(Xm.prototype,{rectangle:{get:function(){return l(this._rotatedRectangle)||(this._rotatedRectangle=Dq(this._rectangle,this._granularity,this._rotation,this._ellipsoid)),this._rotatedRectangle}},textureCoordinateRotationPoints:{get:function(){return l(this._textureCoordinateRotationPoints)||(this._textureCoordinateRotationPoints=Xtt(this)),this._textureCoordinateRotationPoints}}});var jb=Xm;var Mme=new G,Nme=d.ZERO,Lme=new d,Ome=new ae,Jtt=new ae,Ztt=new Ae;function $tt(e){this.id=e,this.vertexFormat=void 0,this.rectangle=void 0,this.height=void 0,this.extrudedHeight=void 0,this.granularity=void 0,this.stRotation=void 0,this.rotation=void 0,this.offsetAttribute=void 0}function hh(e,t){ti.call(this,{entity:e,scene:t,geometryOptions:new $tt(e),geometryPropertyName:"rectangle",observedPropertyNames:["availability","rectangle"]}),this._onEntityPropertyChanged(e,"rectangle",e.rectangle,void 0)}l(Object.create)&&(hh.prototype=Object.create(ti.prototype),hh.prototype.constructor=hh);hh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(this._distanceDisplayConditionProperty.getValue(e)),offset:void 0,color:void 0};if(this._materialProperty instanceof Jt){let o;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(o=this._materialProperty.color.getValue(e,Mme)),l(o)||(o=G.WHITE),i.color=en.fromColor(o)}return l(this._options.offsetAttribute)&&(i.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Nme,Lme))),new Rt({id:t,geometry:new jb(this._options),attributes:i})};hh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Mme),o=this._distanceDisplayConditionProperty.getValue(e),r={show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o),offset:void 0};return l(this._options.offsetAttribute)&&(r.offset=ho.fromCartesian3(j.getValueOrDefault(this._terrainOffsetProperty,e,Nme,Lme))),new Rt({id:t,geometry:new tb(this._options),attributes:r})};hh.prototype._computeCenter=function(e,t){let n=j.getValueOrUndefined(this._entity.rectangle.coordinates,e,Jtt);if(!l(n))return;let i=ae.center(n,Ztt);return Ae.toCartesian(i,te.default,t)};hh.prototype._isHidden=function(e,t){return!l(t.coordinates)||Ci.prototype._isHidden.call(this,e,t)};hh.prototype._isDynamic=function(e,t){return!t.coordinates.isConstant||!j.isConstant(t.height)||!j.isConstant(t.extrudedHeight)||!j.isConstant(t.granularity)||!j.isConstant(t.stRotation)||!j.isConstant(t.rotation)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.zIndex)||this._onTerrain&&!j.isConstant(this._materialProperty)&&!(this._materialProperty instanceof Jt)};hh.prototype._setStaticOptions=function(e,t){let n=this._materialProperty instanceof Jt,i=j.getValueOrUndefined(t.height,je.MINIMUM_VALUE),o=j.getValueOrDefault(t.heightReference,je.MINIMUM_VALUE,Ze.NONE),r=j.getValueOrUndefined(t.extrudedHeight,je.MINIMUM_VALUE),s=j.getValueOrDefault(t.extrudedHeightReference,je.MINIMUM_VALUE,Ze.NONE);l(r)&&!l(i)&&(i=0);let a=this._options;a.vertexFormat=n?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,a.rectangle=t.coordinates.getValue(je.MINIMUM_VALUE,a.rectangle),a.granularity=j.getValueOrUndefined(t.granularity,je.MINIMUM_VALUE),a.stRotation=j.getValueOrUndefined(t.stRotation,je.MINIMUM_VALUE),a.rotation=j.getValueOrUndefined(t.rotation,je.MINIMUM_VALUE),a.offsetAttribute=ti.computeGeometryOffsetAttribute(i,o,r,s),a.height=ti.getGeometryHeight(i,o),r=ti.getGeometryExtrudedHeight(r,s),r===ti.CLAMP_TO_GROUND&&(r=wi.getMinimumMaximumHeights(jb.computeRectangle(a,Ome)).minimumTerrainHeight),a.extrudedHeight=r};hh.DynamicGeometryUpdater=Yb;function Yb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(Yb.prototype=Object.create(yi.prototype),Yb.prototype.constructor=Yb);Yb.prototype._isHidden=function(e,t,n){return!l(this._options.rectangle)||yi.prototype._isHidden.call(this,e,t,n)};Yb.prototype._setOptions=function(e,t,n){let i=this._options,o=j.getValueOrUndefined(t.height,n),r=j.getValueOrDefault(t.heightReference,n,Ze.NONE),s=j.getValueOrUndefined(t.extrudedHeight,n),a=j.getValueOrDefault(t.extrudedHeightReference,n,Ze.NONE);l(s)&&!l(o)&&(o=0),i.rectangle=j.getValueOrUndefined(t.coordinates,n,i.rectangle),i.granularity=j.getValueOrUndefined(t.granularity,n),i.stRotation=j.getValueOrUndefined(t.stRotation,n),i.rotation=j.getValueOrUndefined(t.rotation,n),i.offsetAttribute=ti.computeGeometryOffsetAttribute(o,r,s,a),i.height=ti.getGeometryHeight(o,r),s=ti.getGeometryExtrudedHeight(s,a),s===ti.CLAMP_TO_GROUND&&(s=wi.getMinimumMaximumHeights(jb.computeRectangle(i,Ome)).minimumTerrainHeight),i.extrudedHeight=s};var q3=hh;var Fme={};function ent(e,t){return D.equalsEpsilon(e.latitude,t.latitude,D.EPSILON10)&&D.equalsEpsilon(e.longitude,t.longitude,D.EPSILON10)}var tnt=new Ae,nnt=new Ae;function int(e,t,n,i){t=No(t,d.equalsEpsilon);let o=t.length;if(o<2)return;let r=l(i),s=l(n),a=new Array(o),c=new Array(o),u=new Array(o),f=t[0];a[0]=f;let h=e.cartesianToCartographic(f,tnt);s&&(h.height=n[0]),c[0]=h.height,r?u[0]=i[0]:u[0]=0;let A=c[0],g=u[0],m=A===g,_=1;for(let y=1;y<o;++y){let C=t[y],E=e.cartesianToCartographic(C,nnt);s&&(E.height=n[y]),m=m&&E.height===0,ent(h,E)?h.height<E.height&&(c[_-1]=E.height):(a[_]=C,c[_]=E.height,r?u[_]=i[y]:u[_]=0,m=m&&c[_]===u[_],Ae.clone(E,h),++_)}if(!(m||_<2))return a.length=_,c.length=_,u.length=_,{positions:a,topHeights:c,bottomHeights:u}}var ont=new Array(2),rnt=new Array(2),snt={positions:void 0,height:void 0,granularity:void 0,ellipsoid:void 0};Fme.computePositions=function(e,t,n,i,o,r){let s=int(e,t,n,i);if(!l(s))return;t=s.positions,n=s.topHeights,i=s.bottomHeights;let a=t.length,c=a-2,u,f,h=D.chordLength(o,e.maximumRadius),A=snt;if(A.minDistance=h,A.ellipsoid=e,r){let g=0,m;for(m=0;m<a-1;m++)g+=Xi.numberOfPoints(t[m],t[m+1],h)+1;u=new Float64Array(g*3),f=new Float64Array(g*3);let _=ont,y=rnt;A.positions=_,A.height=y;let C=0;for(m=0;m<a-1;m++){_[0]=t[m],_[1]=t[m+1],y[0]=n[m],y[1]=n[m+1];let E=Xi.generateArc(A);u.set(E,C),y[0]=i[m],y[1]=i[m+1],f.set(Xi.generateArc(A),C),C+=E.length}}else A.positions=t,A.height=n,u=new Float64Array(Xi.generateArc(A)),A.height=i,f=new Float64Array(Xi.generateArc(A));return{bottomPositions:f,topPositions:u,numCorners:c}};var qb=Fme;var vq=new d,K3=new d,ant=new d,Qme=new d,cnt=new d,lnt=new d,unt=new d;function ME(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.maximumHeights,i=e.minimumHeights,o=e.vertexFormat??Pe.DEFAULT,r=e.granularity??D.RADIANS_PER_DEGREE,s=e.ellipsoid??te.default;this._positions=t,this._minimumHeights=i,this._maximumHeights=n,this._vertexFormat=Pe.clone(o),this._granularity=r,this._ellipsoid=te.clone(s),this._workerName="createWallGeometry";let a=1+t.length*d.packedLength+2;l(i)&&(a+=i.length),l(n)&&(a+=n.length),this.packedLength=a+te.packedLength+Pe.packedLength+1}ME.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._minimumHeights;if(r=l(s)?s.length:0,t[n++]=r,l(s))for(i=0;i<r;++i)t[n++]=s[i];let a=e._maximumHeights;if(r=l(a)?a.length:0,t[n++]=r,l(a))for(i=0;i<r;++i)t[n++]=a[i];return te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n]=e._granularity,t};var kme=te.clone(te.UNIT_SPHERE),Ume=new Pe,ov={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:kme,vertexFormat:Ume,granularity:void 0};ME.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s;if(o>0)for(s=new Array(o),i=0;i<o;++i)s[i]=e[t++];o=e[t++];let a;if(o>0)for(a=new Array(o),i=0;i<o;++i)a[i]=e[t++];let c=te.unpack(e,t,kme);t+=te.packedLength;let u=Pe.unpack(e,t,Ume);t+=Pe.packedLength;let f=e[t];return l(n)?(n._positions=r,n._minimumHeights=s,n._maximumHeights=a,n._ellipsoid=te.clone(c,n._ellipsoid),n._vertexFormat=Pe.clone(u,n._vertexFormat),n._granularity=f,n):(ov.positions=r,ov.minimumHeights=s,ov.maximumHeights=a,ov.granularity=f,new ME(ov))};ME.fromConstantHeights=function(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n,i,o=e.minimumHeight,r=e.maximumHeight,s=l(o),a=l(r);if(s||a){let u=t.length;n=s?new Array(u):void 0,i=a?new Array(u):void 0;for(let f=0;f<u;++f)s&&(n[f]=o),a&&(i[f]=r)}let c={positions:t,maximumHeights:i,minimumHeights:n,ellipsoid:e.ellipsoid,vertexFormat:e.vertexFormat};return new ME(c)};ME.createGeometry=function(e){let t=e._positions,n=e._minimumHeights,i=e._maximumHeights,o=e._vertexFormat,r=e._granularity,s=e._ellipsoid,a=qb.computePositions(s,t,i,n,r,!0);if(!l(a))return;let c=a.bottomPositions,u=a.topPositions,f=a.numCorners,h=u.length,A=h*2,g=o.position?new Float64Array(A):void 0,m=o.normal?new Float32Array(A):void 0,_=o.tangent?new Float32Array(A):void 0,y=o.bitangent?new Float32Array(A):void 0,C=o.st?new Float32Array(A/3*2):void 0,E=0,I=0,b=0,S=0,B=0,v=unt,P=lnt,N=cnt,L=!0;h/=3;let p,x=0,T=1/(h-f-1);for(p=0;p<h;++p){let Q=p*3,z=d.fromArray(u,Q,vq),F=d.fromArray(c,Q,K3);if(o.position&&(g[E++]=F.x,g[E++]=F.y,g[E++]=F.z,g[E++]=z.x,g[E++]=z.y,g[E++]=z.z),o.st&&(C[B++]=x,C[B++]=0,C[B++]=x,C[B++]=1),o.normal||o.tangent||o.bitangent){let H=d.clone(d.ZERO,Qme),W=d.subtract(z,s.geodeticSurfaceNormal(z,K3),K3);if(p+1<h&&(H=d.fromArray(u,Q+3,Qme)),L){let Z=d.subtract(H,z,ant),Y=d.subtract(W,z,vq);v=d.normalize(d.cross(Y,Z,v),v),L=!1}d.equalsEpsilon(z,H,D.EPSILON10)?L=!0:(x+=T,o.tangent&&(P=d.normalize(d.subtract(H,z,P),P)),o.bitangent&&(N=d.normalize(d.cross(v,P,N),N))),o.normal&&(m[I++]=v.x,m[I++]=v.y,m[I++]=v.z,m[I++]=v.x,m[I++]=v.y,m[I++]=v.z),o.tangent&&(_[S++]=P.x,_[S++]=P.y,_[S++]=P.z,_[S++]=P.x,_[S++]=P.y,_[S++]=P.z),o.bitangent&&(y[b++]=N.x,y[b++]=N.y,y[b++]=N.z,y[b++]=N.x,y[b++]=N.y,y[b++]=N.z)}}let w=new En;o.position&&(w.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:g})),o.normal&&(w.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m})),o.tangent&&(w.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:_})),o.bitangent&&(w.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:y})),o.st&&(w.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:C}));let M=A/3;A-=6*(f+1);let O=Fe.createTypedArray(M,A),U=0;for(p=0;p<M-2;p+=2){let Q=p,z=p+2,F=d.fromArray(g,Q*3,vq),H=d.fromArray(g,z*3,K3);if(d.equalsEpsilon(F,H,D.EPSILON10))continue;let W=p+1,Z=p+3;O[U++]=W,O[U++]=Q,O[U++]=Z,O[U++]=Z,O[U++]=Q,O[U++]=z}return new ht({attributes:w,indices:O,primitiveType:Me.TRIANGLES,boundingSphere:new le.fromVertices(g)})};var X3=ME;var Gme=new d,zme=new d;function NE(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.maximumHeights,i=e.minimumHeights,o=e.granularity??D.RADIANS_PER_DEGREE,r=e.ellipsoid??te.default;this._positions=t,this._minimumHeights=i,this._maximumHeights=n,this._granularity=o,this._ellipsoid=te.clone(r),this._workerName="createWallOutlineGeometry";let s=1+t.length*d.packedLength+2;l(i)&&(s+=i.length),l(n)&&(s+=n.length),this.packedLength=s+te.packedLength+1}NE.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._minimumHeights;if(r=l(s)?s.length:0,t[n++]=r,l(s))for(i=0;i<r;++i)t[n++]=s[i];let a=e._maximumHeights;if(r=l(a)?a.length:0,t[n++]=r,l(a))for(i=0;i<r;++i)t[n++]=a[i];return te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n]=e._granularity,t};var Vme=te.clone(te.UNIT_SPHERE),rv={positions:void 0,minimumHeights:void 0,maximumHeights:void 0,ellipsoid:Vme,granularity:void 0};NE.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s;if(o>0)for(s=new Array(o),i=0;i<o;++i)s[i]=e[t++];o=e[t++];let a;if(o>0)for(a=new Array(o),i=0;i<o;++i)a[i]=e[t++];let c=te.unpack(e,t,Vme);t+=te.packedLength;let u=e[t];return l(n)?(n._positions=r,n._minimumHeights=s,n._maximumHeights=a,n._ellipsoid=te.clone(c,n._ellipsoid),n._granularity=u,n):(rv.positions=r,rv.minimumHeights=s,rv.maximumHeights=a,rv.granularity=u,new NE(rv))};NE.fromConstantHeights=function(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n,i,o=e.minimumHeight,r=e.maximumHeight,s=l(o),a=l(r);if(s||a){let u=t.length;n=s?new Array(u):void 0,i=a?new Array(u):void 0;for(let f=0;f<u;++f)s&&(n[f]=o),a&&(i[f]=r)}let c={positions:t,maximumHeights:i,minimumHeights:n,ellipsoid:e.ellipsoid};return new NE(c)};NE.createGeometry=function(e){let t=e._positions,n=e._minimumHeights,i=e._maximumHeights,o=e._granularity,r=e._ellipsoid,s=qb.computePositions(r,t,i,n,o,!1);if(!l(s))return;let a=s.bottomPositions,c=s.topPositions,u=c.length,f=u*2,h=new Float64Array(f),A=0;u/=3;let g;for(g=0;g<u;++g){let E=g*3,I=d.fromArray(c,E,Gme),b=d.fromArray(a,E,zme);h[A++]=b.x,h[A++]=b.y,h[A++]=b.z,h[A++]=I.x,h[A++]=I.y,h[A++]=I.z}let m=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:h})}),_=f/3;f=2*_-4+_;let y=Fe.createTypedArray(_,f),C=0;for(g=0;g<_-2;g+=2){let E=g,I=g+2,b=d.fromArray(h,E*3,Gme),S=d.fromArray(h,I*3,zme);if(d.equalsEpsilon(b,S,D.EPSILON10))continue;let B=g+1,v=g+3;y[C++]=B,y[C++]=E,y[C++]=B,y[C++]=v,y[C++]=E,y[C++]=I}return y[C++]=_-2,y[C++]=_-1,new ht({attributes:m,indices:y,primitiveType:Me.LINES,boundingSphere:new le.fromVertices(h)})};var J3=NE;var Hme=new G;function fnt(e){this.id=e,this.vertexFormat=void 0,this.positions=void 0,this.minimumHeights=void 0,this.maximumHeights=void 0,this.granularity=void 0}function mh(e,t){Ci.call(this,{entity:e,scene:t,geometryOptions:new fnt(e),geometryPropertyName:"wall",observedPropertyNames:["availability","wall"]}),this._onEntityPropertyChanged(e,"wall",e.wall,void 0)}l(Object.create)&&(mh.prototype=Object.create(Ci.prototype),mh.prototype.constructor=mh);mh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i,o,r=new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._fillProperty.getValue(e)),s=this._distanceDisplayConditionProperty.getValue(e),a=Kn.fromDistanceDisplayCondition(s);if(this._materialProperty instanceof Jt){let c;l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(c=this._materialProperty.color.getValue(e,Hme)),l(c)||(c=G.WHITE),o=en.fromColor(c),i={show:r,distanceDisplayCondition:a,color:o}}else i={show:r,distanceDisplayCondition:a};return new Rt({id:t,geometry:new X3(this._options),attributes:i})};mh.prototype.createOutlineGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=j.getValueOrDefault(this._outlineColorProperty,e,G.BLACK,Hme),o=this._distanceDisplayConditionProperty.getValue(e);return new Rt({id:t,geometry:new J3(this._options),attributes:{show:new Bn(n&&t.isShowing&&this._showProperty.getValue(e)&&this._showOutlineProperty.getValue(e)),color:en.fromColor(i),distanceDisplayCondition:Kn.fromDistanceDisplayCondition(o)}})};mh.prototype._isHidden=function(e,t){return!l(t.positions)||Ci.prototype._isHidden.call(this,e,t)};mh.prototype._getIsClosed=function(e){return!1};mh.prototype._isDynamic=function(e,t){return!t.positions.isConstant||!j.isConstant(t.minimumHeights)||!j.isConstant(t.maximumHeights)||!j.isConstant(t.outlineWidth)||!j.isConstant(t.granularity)};mh.prototype._setStaticOptions=function(e,t){let n=t.minimumHeights,i=t.maximumHeights,o=t.granularity,r=this._materialProperty instanceof Jt,s=this._options;s.vertexFormat=r?gn.VERTEX_FORMAT:Io.MaterialSupport.TEXTURED.vertexFormat,s.positions=t.positions.getValue(je.MINIMUM_VALUE,s.positions),s.minimumHeights=l(n)?n.getValue(je.MINIMUM_VALUE,s.minimumHeights):void 0,s.maximumHeights=l(i)?i.getValue(je.MINIMUM_VALUE,s.maximumHeights):void 0,s.granularity=l(o)?o.getValue(je.MINIMUM_VALUE):void 0};mh.DynamicGeometryUpdater=Kb;function Kb(e,t,n){yi.call(this,e,t,n)}l(Object.create)&&(Kb.prototype=Object.create(yi.prototype),Kb.prototype.constructor=Kb);Kb.prototype._isHidden=function(e,t,n){return!l(this._options.positions)||yi.prototype._isHidden.call(this,e,t,n)};Kb.prototype._setOptions=function(e,t,n){let i=this._options;i.positions=j.getValueOrUndefined(t.positions,n,i.positions),i.minimumHeights=j.getValueOrUndefined(t.minimumHeights,n,i.minimumHeights),i.maximumHeights=j.getValueOrUndefined(t.maximumHeights,n,i.maximumHeights),i.granularity=j.getValueOrUndefined(t.granularity,n)};var Z3=mh;var LE=[rO,f3,i3,M3,N3,U3,H3,Y3,q3,Z3];function OE(e,t){this.entity=e,this.scene=t;let n=new Array(LE.length),i=new _e,o=new Lr;for(let r=0;r<n.length;r++){let s=new LE[r](e,t);o.add(s.geometryChanged,a=>{i.raiseEvent(a)}),n[r]=s}this.updaters=n,this.geometryChanged=i,this.eventHelper=o,this._removeEntitySubscription=e.definitionChanged.addEventListener(OE.prototype._onEntityPropertyChanged,this)}OE.prototype._onEntityPropertyChanged=function(e,t,n,i){let o=this.updaters;for(let r=0;r<o.length;r++)o[r]._onEntityPropertyChanged(e,t,n,i)};OE.prototype.forEach=function(e){let t=this.updaters;for(let n=0;n<t.length;n++)e(t[n])};OE.prototype.destroy=function(){this.eventHelper.removeAll();let e=this.updaters;for(let t=0;t<e.length;t++)e[t].destroy();this._removeEntitySubscription(),ue(this)};OE.registerUpdater=function(e){LE.includes(e)||LE.push(e)};OE.unregisterUpdater=function(e){if(LE.includes(e)){let t=LE.indexOf(e);LE.splice(t,1)}};var Xb=OE;var Wme=new G,dnt=new Ut,hnt=new Ut,mnt=d.ZERO,Ant=new d;function Ah(e,t,n,i,o,r,s){this.translucent=t,this.appearanceType=n,this.depthFailAppearanceType=i,this.depthFailMaterialProperty=o,this.depthFailMaterial=void 0,this.closed=r,this.shadows=s,this.primitives=e,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Pt,this.updaters=new Pt,this.updatersWithAttributes=new Pt,this.attributes=new Pt,this.subscriptions=new Pt,this.showsUpdated=new Pt,this.itemsToRemove=[],this.invalidated=!1;let a;l(o)&&(a=o.definitionChanged.addEventListener(Ah.prototype.onMaterialChanged,this)),this.removeMaterialSubscription=a}Ah.prototype.onMaterialChanged=function(){this.invalidated=!0};Ah.prototype.isMaterial=function(e){let t=this.depthFailMaterialProperty,n=e.depthFailMaterialProperty;return n===t?!0:l(t)?t.equals(n):!1};Ah.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),!e.hasConstantFill||!e.fillMaterialProperty.isConstant||!j.isConstant(e.distanceDisplayConditionProperty)||!j.isConstant(e.terrainOffsetProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};Ah.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};Ah.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0){l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i);let c;l(this.depthFailAppearanceType)&&(l(this.depthFailMaterialProperty)&&(this.depthFailMaterial=gr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial)),c=new this.depthFailAppearanceType({material:this.depthFailMaterial,translucent:this.translucent,closed:this.closed})),i=new kn({show:!1,asynchronous:!0,geometryInstances:s.slice(),appearance:new this.appearanceType({translucent:this.translucent,closed:this.closed}),depthFailAppearance:c,shadows:this.shadows}),o.add(i),t=!1}else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0),l(this.depthFailAppearanceType)&&!(this.depthFailMaterialProperty instanceof Jt)&&(this.depthFailMaterial=gr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),this.primitive.depthFailAppearance.material=this.depthFailMaterial);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let u=s[r],f=this.geometry.get(u.id),h=this.attributes.get(f.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!u.fillMaterialProperty.isConstant||c){let y=u.fillMaterialProperty.color,C=j.getValueOrDefault(y,e,G.WHITE,Wme);G.equals(h._lastColor,C)||(h._lastColor=G.clone(C,h._lastColor),h.color=en.toValue(C,h.color),(this.translucent&&h.color[3]===255||!this.translucent&&h.color[3]!==255)&&(this.itemsToRemove[n++]=u))}if(l(this.depthFailAppearanceType)&&u.depthFailMaterialProperty instanceof Jt&&(!u.depthFailMaterialProperty.isConstant||c)){let y=u.depthFailMaterialProperty.color,C=j.getValueOrDefault(y,e,G.WHITE,Wme);G.equals(h._lastDepthFailColor,C)||(h._lastDepthFailColor=G.clone(C,h._lastDepthFailColor),h.depthFailColor=en.toValue(C,h.depthFailColor))}let A=u.entity.isShowing&&(u.hasConstantFill||u.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=Bn.toValue(A,h.show));let m=u.distanceDisplayConditionProperty;if(!j.isConstant(m)){let y=j.getValueOrDefault(m,e,hnt,dnt);Ut.equals(y,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(y,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(y,h.distanceDisplayCondition))}let _=u.terrainOffsetProperty;if(!j.isConstant(_)){let y=j.getValueOrDefault(_,e,mnt,Ant);d.equals(y,h._lastOffset)||(h._lastOffset=d.clone(y,h._lastOffset),h.offset=ho.toValue(y,h.offset))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};Ah.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=Bn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};Ah.prototype.contains=function(e){return this.updaters.contains(e.id)};Ah.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};Ah.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),l(this.removeMaterialSubscription)&&this.removeMaterialSubscription()};function Jb(e,t,n,i,o){this._solidItems=[],this._translucentItems=[],this._primitives=e,this._appearanceType=t,this._depthFailAppearanceType=n,this._closed=i,this._shadows=o}Jb.prototype.add=function(e,t){let n,i,o=t.createFillGeometryInstance(e);o.attributes.color.value[3]===255?(n=this._solidItems,i=!1):(n=this._translucentItems,i=!0);let r=n.length;for(let a=0;a<r;a++){let c=n[a];if(c.isMaterial(t)){c.add(t,o);return}}let s=new Ah(this._primitives,i,this._appearanceType,this._depthFailAppearanceType,t.depthFailMaterialProperty,this._closed,this._shadows);s.add(t,o),n.push(s)};function jme(e,t){let n=e.length;for(let i=n-1;i>=0;i--){let o=e[i];if(o.remove(t))return o.updaters.length===0&&(e.splice(i,1),o.destroy()),!0}return!1}Jb.prototype.remove=function(e){jme(this._solidItems,e)||jme(this._translucentItems,e)};function Yme(e,t,n){let i=!1,o=t.length;for(let r=0;r<o;++r){let s=t[r],a=s.itemsToRemove,c=a.length;if(c>0)for(r=0;r<c;r++){let u=a[r];s.remove(u),e.add(n,u),i=!0}}return i}function $3(e,t,n,i){let o=t.length,r;for(r=o-1;r>=0;r--){let s=t[r];if(s.invalidated){t.splice(r,1);let a=s.updaters.values,c=a.length;for(let u=0;u<c;u++)e.add(n,a[u]);s.destroy()}}for(o=t.length,r=0;r<o;++r)i=t[r].update(n)&&i;return i}Jb.prototype.update=function(e){let t=$3(this,this._solidItems,e,!0);t=$3(this,this._translucentItems,e,t)&&t;let n=Yme(this,this._solidItems,e),i=Yme(this,this._translucentItems,e);return(n||i)&&(t=$3(this,this._solidItems,e,t)&&t,t=$3(this,this._translucentItems,e,t)&&t),t};function qme(e,t,n){let i=e.length;for(let o=0;o<i;o++){let r=e[o];if(r.contains(t))return r.getBoundingSphere(t,n)}return mt.FAILED}Jb.prototype.getBoundingSphere=function(e,t){let n=qme(this._solidItems,e,t);return n===mt.FAILED?qme(this._translucentItems,e,t):n};function Kme(e){let t=e.length;for(let n=0;n<t;n++)e[n].destroy();e.length=0}Jb.prototype.removeAllPrimitives=function(){Kme(this._solidItems),Kme(this._translucentItems)};var ph=Jb;var pnt=new Ut,gnt=new Ut,_nt=d.ZERO,ynt=new d;function gh(e,t,n,i,o,r,s){this.primitives=e,this.appearanceType=t,this.materialProperty=n,this.depthFailAppearanceType=i,this.depthFailMaterialProperty=o,this.closed=r,this.shadows=s,this.updaters=new Pt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Pt,this.material=void 0,this.depthFailMaterial=void 0,this.updatersWithAttributes=new Pt,this.attributes=new Pt,this.invalidated=!1,this.removeMaterialSubscription=n.definitionChanged.addEventListener(gh.prototype.onMaterialChanged,this),this.subscriptions=new Pt,this.showsUpdated=new Pt}gh.prototype.onMaterialChanged=function(){this.invalidated=!0};gh.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty,i=this.depthFailMaterialProperty,o=e.depthFailMaterialProperty;if(n===t&&o===i)return!0;let r=l(t)&&t.equals(n);return r=(!l(i)&&!l(o)||l(i)&&i.equals(o))&&r,r};gh.prototype.add=function(e,t){let n=t.id;if(this.updaters.set(n,t),this.geometry.set(n,t.createFillGeometryInstance(e)),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!j.isConstant(t.distanceDisplayConditionProperty)||!j.isConstant(t.terrainOffsetProperty))this.updatersWithAttributes.set(n,t);else{let i=this;this.subscriptions.set(n,t.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};gh.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};var Cnt=new G;gh.prototype.update=function(e){let t=!0,n=this.primitive,i=this.primitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0){l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),this.material=gr.getValue(e,this.materialProperty,this.material);let a;l(this.depthFailMaterialProperty)&&(this.depthFailMaterial=gr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),a=new this.depthFailAppearanceType({material:this.depthFailMaterial,translucent:this.depthFailMaterial.isTranslucent(),closed:this.closed})),n=new kn({show:!1,asynchronous:!0,geometryInstances:o.slice(),appearance:new this.appearanceType({material:this.material,translucent:this.material.isTranslucent(),closed:this.closed}),depthFailAppearance:a,shadows:this.shadows}),i.add(n),t=!1}else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=gr.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material,l(this.depthFailAppearanceType)&&!(this.depthFailMaterialProperty instanceof Jt)&&(this.depthFailMaterial=gr.getValue(e,this.depthFailMaterialProperty,this.depthFailMaterial),this.primitive.depthFailAppearance.material=this.depthFailMaterial);let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],u=c.entity,f=this.geometry.get(c.id),h=this.attributes.get(f.id.id);if(l(h)||(h=n.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),l(this.depthFailAppearanceType)&&this.depthFailMaterialProperty instanceof Jt&&!c.depthFailMaterialProperty.isConstant){let y=c.depthFailMaterialProperty.color,C=j.getValueOrDefault(y,e,G.WHITE,Cnt);G.equals(h._lastDepthFailColor,C)||(h._lastDepthFailColor=G.clone(C,h._lastDepthFailColor),h.depthFailColor=en.toValue(C,h.depthFailColor))}let A=u.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=Bn.toValue(A,h.show));let m=c.distanceDisplayConditionProperty;if(!j.isConstant(m)){let y=j.getValueOrDefault(m,e,gnt,pnt);Ut.equals(y,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(y,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(y,h.distanceDisplayCondition))}let _=c.terrainOffsetProperty;if(!j.isConstant(_)){let y=j.getValueOrDefault(_,e,_nt,ynt);d.equals(y,h._lastOffset)||(h._lastOffset=d.clone(y,h._lastOffset),h.offset=ho.toValue(y,h.offset))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};gh.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,u=a.show[0]===1;c!==u&&(a.show=Bn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};gh.prototype.contains=function(e){return this.updaters.contains(e.id)};gh.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};gh.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),this.removeMaterialSubscription()};function Zb(e,t,n,i,o){this._items=[],this._primitives=e,this._appearanceType=t,this._depthFailAppearanceType=n,this._closed=i,this._shadows=o}Zb.prototype.add=function(e,t){let n=this._items,i=n.length;for(let r=0;r<i;r++){let s=n[r];if(s.isMaterial(t)){s.add(e,t);return}}let o=new gh(this._primitives,this._appearanceType,t.fillMaterialProperty,this._depthFailAppearanceType,t.depthFailMaterialProperty,this._closed,this._shadows);o.add(e,t),n.push(o)};Zb.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0;i--){let o=t[i];if(o.remove(e)){o.updaters.length===0&&(t.splice(i,1),o.destroy());break}}};Zb.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];if(r.invalidated){n.splice(t,1);let s=r.updaters.values,a=s.length;for(let c=0;c<a;c++)this.add(e,s[c]);r.destroy()}}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};Zb.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return mt.FAILED};Zb.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var _h=Zb;function eU(e,t,n=0,i=e.length-1,o=Ent){for(;i>n;){if(i-n>600){let c=i-n+1,u=t-n+1,f=Math.log(c),h=.5*Math.exp(2*f/3),A=.5*Math.sqrt(f*h*(c-h)/c)*(u-c/2<0?-1:1),g=Math.max(n,Math.floor(t-u*h/c+A)),m=Math.min(i,Math.floor(t+(c-u)*h/c+A));eU(e,t,g,m,o)}let r=e[t],s=n,a=i;for(sv(e,n,t),o(e[i],r)>0&&sv(e,n,i);s<a;){for(sv(e,s,a),s++,a--;o(e[s],r)<0;)s++;for(;o(e[a],r)>0;)a--}o(e[n],r)===0?sv(e,n,a):(a++,sv(e,a,i)),a<=t&&(n=a+1),t<=a&&(i=a-1)}}function sv(e,t,n){let i=e[t];e[t]=e[n],e[n]=i}function Ent(e,t){return e<t?-1:e>t?1:0}var lv=class{constructor(t=9){this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(this._maxEntries*.4)),this.clear()}all(){return this._all(this.data,[])}search(t){let n=this.data,i=[];if(!nU(t,n))return i;let o=this.toBBox,r=[];for(;n;){for(let s=0;s<n.children.length;s++){let a=n.children[s],c=n.leaf?o(a):a;nU(t,c)&&(n.leaf?i.push(a):Rq(t,c)?this._all(a,i):r.push(a))}n=r.pop()}return i}collides(t){let n=this.data;if(!nU(t,n))return!1;let i=[];for(;n;){for(let o=0;o<n.children.length;o++){let r=n.children[o],s=n.leaf?this.toBBox(r):r;if(nU(t,s)){if(n.leaf||Rq(t,s))return!0;i.push(r)}}n=i.pop()}return!1}load(t){if(!(t&&t.length))return this;if(t.length<this._minEntries){for(let i=0;i<t.length;i++)this.insert(t[i]);return this}let n=this._build(t.slice(),0,t.length-1,0);if(!this.data.children.length)this.data=n;else if(this.data.height===n.height)this._splitRoot(this.data,n);else{if(this.data.height<n.height){let i=this.data;this.data=n,n=i}this._insert(n,this.data.height-n.height-1,!0)}return this}insert(t){return t&&this._insert(t,this.data.height-1),this}clear(){return this.data=eT([]),this}remove(t,n){if(!t)return this;let i=this.data,o=this.toBBox(t),r=[],s=[],a,c,u;for(;i||r.length;){if(i||(i=r.pop(),c=r[r.length-1],a=s.pop(),u=!0),i.leaf){let f=Int(t,i.children,n);if(f!==-1)return i.children.splice(f,1),r.push(i),this._condense(r),this}!u&&!i.leaf&&Rq(i,o)?(r.push(i),s.push(a),a=0,c=i,i=i.children[0]):c?(a++,i=c.children[a],u=!1):i=null}return this}toBBox(t){return t}compareMinX(t,n){return t.minX-n.minX}compareMinY(t,n){return t.minY-n.minY}toJSON(){return this.data}fromJSON(t){return this.data=t,this}_all(t,n){let i=[];for(;t;)t.leaf?n.push(...t.children):i.push(...t.children),t=i.pop();return n}_build(t,n,i,o){let r=i-n+1,s=this._maxEntries,a;if(r<=s)return a=eT(t.slice(n,i+1)),$b(a,this.toBBox),a;o||(o=Math.ceil(Math.log(r)/Math.log(s)),s=Math.ceil(r/Math.pow(s,o-1))),a=eT([]),a.leaf=!1,a.height=o;let c=Math.ceil(r/s),u=c*Math.ceil(Math.sqrt(s));Xme(t,n,i,u,this.compareMinX);for(let f=n;f<=i;f+=u){let h=Math.min(f+u-1,i);Xme(t,f,h,c,this.compareMinY);for(let A=f;A<=h;A+=c){let g=Math.min(A+c-1,h);a.children.push(this._build(t,A,g,o-1))}}return $b(a,this.toBBox),a}_chooseSubtree(t,n,i,o){for(;o.push(n),!(n.leaf||o.length-1===i);){let r=1/0,s=1/0,a;for(let c=0;c<n.children.length;c++){let u=n.children[c],f=Pq(u),h=Tnt(t,u)-f;h<s?(s=h,r=f<r?f:r,a=u):h===s&&f<r&&(r=f,a=u)}n=a||n.children[0]}return n}_insert(t,n,i){let o=i?t:this.toBBox(t),r=[],s=this._chooseSubtree(o,this.data,n,r);for(s.children.push(t),cv(s,o);n>=0&&r[n].children.length>this._maxEntries;)this._split(r,n),n--;this._adjustParentBBoxes(o,r,n)}_split(t,n){let i=t[n],o=i.children.length,r=this._minEntries;this._chooseSplitAxis(i,r,o);let s=this._chooseSplitIndex(i,r,o),a=eT(i.children.splice(s,i.children.length-s));a.height=i.height,a.leaf=i.leaf,$b(i,this.toBBox),$b(a,this.toBBox),n?t[n-1].children.push(a):this._splitRoot(i,a)}_splitRoot(t,n){this.data=eT([t,n]),this.data.height=t.height+1,this.data.leaf=!1,$b(this.data,this.toBBox)}_chooseSplitIndex(t,n,i){let o,r=1/0,s=1/0;for(let a=n;a<=i-n;a++){let c=av(t,0,a,this.toBBox),u=av(t,a,i,this.toBBox),f=Snt(c,u),h=Pq(c)+Pq(u);f<r?(r=f,o=a,s=h<s?h:s):f===r&&h<s&&(s=h,o=a)}return o||i-n}_chooseSplitAxis(t,n,i){let o=t.leaf?this.compareMinX:xnt,r=t.leaf?this.compareMinY:bnt,s=this._allDistMargin(t,n,i,o),a=this._allDistMargin(t,n,i,r);s<a&&t.children.sort(o)}_allDistMargin(t,n,i,o){t.children.sort(o);let r=this.toBBox,s=av(t,0,n,r),a=av(t,i-n,i,r),c=tU(s)+tU(a);for(let u=n;u<i-n;u++){let f=t.children[u];cv(s,t.leaf?r(f):f),c+=tU(s)}for(let u=i-n-1;u>=n;u--){let f=t.children[u];cv(a,t.leaf?r(f):f),c+=tU(a)}return c}_adjustParentBBoxes(t,n,i){for(let o=i;o>=0;o--)cv(n[o],t)}_condense(t){for(let n=t.length-1,i;n>=0;n--)t[n].children.length===0?n>0?(i=t[n-1].children,i.splice(i.indexOf(t[n]),1)):this.clear():$b(t[n],this.toBBox)}};function Int(e,t,n){if(!n)return t.indexOf(e);for(let i=0;i<t.length;i++)if(n(e,t[i]))return i;return-1}function $b(e,t){av(e,0,e.children.length,t,e)}function av(e,t,n,i,o){o||(o=eT(null)),o.minX=1/0,o.minY=1/0,o.maxX=-1/0,o.maxY=-1/0;for(let r=t;r<n;r++){let s=e.children[r];cv(o,e.leaf?i(s):s)}return o}function cv(e,t){return e.minX=Math.min(e.minX,t.minX),e.minY=Math.min(e.minY,t.minY),e.maxX=Math.max(e.maxX,t.maxX),e.maxY=Math.max(e.maxY,t.maxY),e}function xnt(e,t){return e.minX-t.minX}function bnt(e,t){return e.minY-t.minY}function Pq(e){return(e.maxX-e.minX)*(e.maxY-e.minY)}function tU(e){return e.maxX-e.minX+(e.maxY-e.minY)}function Tnt(e,t){return(Math.max(t.maxX,e.maxX)-Math.min(t.minX,e.minX))*(Math.max(t.maxY,e.maxY)-Math.min(t.minY,e.minY))}function Snt(e,t){let n=Math.max(e.minX,t.minX),i=Math.max(e.minY,t.minY),o=Math.min(e.maxX,t.maxX),r=Math.min(e.maxY,t.maxY);return Math.max(0,o-n)*Math.max(0,r-i)}function Rq(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&t.maxX<=e.maxX&&t.maxY<=e.maxY}function nU(e,t){return t.minX<=e.maxX&&t.minY<=e.maxY&&t.maxX>=e.minX&&t.maxY>=e.minY}function eT(e){return{children:e,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function Xme(e,t,n,i,o){let r=[t,n];for(;r.length;){if(n=r.pop(),t=r.pop(),n-t<=i)continue;let s=t+Math.ceil((n-t)/i/2)*i;eU(e,s,t,n,o),r.push(t,s,s,n)}}function iU(){this._tree=new lv}function FE(){this.minX=0,this.minY=0,this.maxX=0,this.maxY=0,this.id=""}FE.fromRectangleAndId=function(e,t,n){return n.minX=t.west,n.minY=t.south,n.maxX=t.east,n.maxY=t.north,n.id=e,n};iU.prototype.insert=function(e,t){let n=FE.fromRectangleAndId(e,t,new FE);this._tree.insert(n)};function wnt(e,t){return e.id===t.id}var Bnt=new FE;iU.prototype.remove=function(e,t){let n=FE.fromRectangleAndId(e,t,Bnt);this._tree.remove(n,wnt)};var Dnt=new FE;iU.prototype.collides=function(e){let t=FE.fromRectangleAndId("",e,Dnt);return this._tree.collides(t)};var tT=iU;var vnt=new G,Pnt=new Ut,Rnt=new Ut;function Lp(e,t,n,i){this.primitives=e,this.zIndex=i,this.classificationType=t,this.color=n,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Pt,this.updaters=new Pt,this.updatersWithAttributes=new Pt,this.attributes=new Pt,this.subscriptions=new Pt,this.showsUpdated=new Pt,this.itemsToRemove=[],this.isDirty=!1,this.rectangleCollisionCheck=new tT}Lp.prototype.overlapping=function(e){return this.rectangleCollisionCheck.collides(e)};Lp.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),this.rectangleCollisionCheck.insert(n,t.geometry.rectangle),!e.hasConstantFill||!e.fillMaterialProperty.isConstant||!j.isConstant(e.distanceDisplayConditionProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};Lp.prototype.remove=function(e){let t=e.id,n=this.geometry.get(t);if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.rectangleCollisionCheck.remove(t,n.geometry.rectangle),this.updatersWithAttributes.remove(t);let i=this.subscriptions.get(t);return l(i)&&(i(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};Lp.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0)l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i),i=new Ll({show:!1,asynchronous:!0,geometryInstances:s.slice(),classificationType:this.classificationType}),o.add(i,this.zIndex),t=!1;else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let u=s[r],f=this.geometry.get(u.id),h=this.attributes.get(f.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!u.fillMaterialProperty.isConstant||c){let _=u.fillMaterialProperty.color,y=j.getValueOrDefault(_,e,G.WHITE,vnt);G.equals(h._lastColor,y)||(h._lastColor=G.clone(y,h._lastColor),h.color=en.toValue(y,h.color))}let A=u.entity.isShowing&&(u.hasConstantFill||u.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=Bn.toValue(A,h.show));let m=u.distanceDisplayConditionProperty;if(!j.isConstant(m)){let _=j.getValueOrDefault(m,e,Rnt,Pnt);Ut.equals(_,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(_,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(_,h.distanceDisplayCondition))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};Lp.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=Bn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};Lp.prototype.contains=function(e){return this.updaters.contains(e.id)};Lp.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getBoundingSphere(e.entity);return l(i)?(i.clone(t),mt.DONE):mt.FAILED};Lp.prototype.removeAllPrimitives=function(){let e=this.primitives,t=this.primitive;l(t)&&(e.remove(t),this.primitive=void 0,this.geometry.removeAll(),this.updaters.removeAll());let n=this.oldPrimitive;l(n)&&(e.remove(n),this.oldPrimitive=void 0)};function nT(e,t){this._batches=[],this._primitives=e,this._classificationType=t}nT.prototype.add=function(e,t){let n=t.createFillGeometryInstance(e),i=this._batches,o=j.getValueOrDefault(t.zIndex,0),r,s=i.length;for(let a=0;a<s;++a){let c=i[a];if(c.zIndex===o&&!c.overlapping(n.geometry.rectangle)){r=c;break}}return l(r)||(r=new Lp(this._primitives,this._classificationType,n.attributes.color.value,o),i.push(r)),r.add(t,n),r};nT.prototype.remove=function(e){let t=this._batches,n=t.length;for(let i=0;i<n;++i)if(t[i].remove(e))return};nT.prototype.update=function(e){let t,n,i=!0,o=this._batches,r=o.length;for(t=0;t<r;++t)i=o[t].update(e)&&i;for(t=0;t<r;++t){let s=o[t],a=s.itemsToRemove,c=a.length;for(let u=0;u<c;u++){n=a[u],s.remove(n);let f=this.add(e,n);s.isDirty=!0,f.isDirty=!0}}for(t=r-1;t>=0;--t){let s=o[t];s.isDirty&&(i=o[t].update(e)&&i,s.isDirty=!1),s.geometry.length===0&&o.splice(t,1)}return i};nT.prototype.getBoundingSphere=function(e,t){let n=this._batches,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return mt.FAILED};nT.prototype.removeAllPrimitives=function(){let e=this._batches,t=e.length;for(let n=0;n<t;++n)e[n].removeAllPrimitives()};var uv=nT;var Mnt=new Ut,Nnt=new Ut;function Jm(e,t,n,i,o,r){this.primitives=e,this.classificationType=t,this.appearanceType=n,this.materialProperty=i,this.updaters=new Pt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Pt,this.material=void 0,this.updatersWithAttributes=new Pt,this.attributes=new Pt,this.subscriptions=new Pt,this.showsUpdated=new Pt,this.usingSphericalTextureCoordinates=o,this.zIndex=r,this.rectangleCollisionCheck=new tT}Jm.prototype.overlapping=function(e){return this.rectangleCollisionCheck.collides(e)};Jm.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty;return n===t||n instanceof Jt&&t instanceof Jt?!0:l(t)&&t.equals(n)};Jm.prototype.add=function(e,t,n){let i=t.id;if(this.updaters.set(i,t),this.geometry.set(i,n),this.rectangleCollisionCheck.insert(i,n.geometry.rectangle),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!j.isConstant(t.distanceDisplayConditionProperty))this.updatersWithAttributes.set(i,t);else{let o=this;this.subscriptions.set(i,t.entity.definitionChanged.addEventListener(function(r,s,a,c){s==="isShowing"&&o.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};Jm.prototype.remove=function(e){let t=e.id,n=this.geometry.get(t);if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.rectangleCollisionCheck.remove(t,n.geometry.rectangle),this.updatersWithAttributes.remove(t);let i=this.subscriptions.get(t);return l(i)&&(i(),this.subscriptions.remove(t)),!0}return!1};Jm.prototype.update=function(e){let t=!0,n=this.primitive,i=this.primitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0)l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),this.material=gr.getValue(e,this.materialProperty,this.material),n=new Ll({show:!1,asynchronous:!0,geometryInstances:o.slice(),appearance:new this.appearanceType({material:this.material}),classificationType:this.classificationType}),i.add(n,this.zIndex),t=!1;else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.material=gr.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material;let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],u=c.entity,f=this.geometry.get(c.id),h=this.attributes.get(f.id.id);l(h)||(h=n.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h));let A=u.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=Bn.toValue(A,h.show));let m=c.distanceDisplayConditionProperty;if(!j.isConstant(m)){let _=j.getValueOrDefault(m,e,Nnt,Mnt);Ut.equals(_,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(_,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(_,h.distanceDisplayCondition))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};Jm.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,u=a.show[0]===1;c!==u&&(a.show=Bn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};Jm.prototype.contains=function(e){return this.updaters.contains(e.id)};Jm.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};Jm.prototype.destroy=function(){let e=this.primitive,t=this.primitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n)};function iT(e,t,n){this._items=[],this._primitives=e,this._classificationType=t,this._appearanceType=n}iT.prototype.add=function(e,t){let n=this._items,i=n.length,o=t.createFillGeometryInstance(e),r=xf.shouldUseSphericalCoordinates(o.geometry.rectangle),s=j.getValueOrDefault(t.zIndex,0);for(let c=0;c<i;++c){let u=n[c];if(u.isMaterial(t)&&u.usingSphericalTextureCoordinates===r&&u.zIndex===s&&!u.overlapping(o.geometry.rectangle)){u.add(e,t,o);return}}let a=new Jm(this._primitives,this._classificationType,this._appearanceType,t.fillMaterialProperty,r,s);a.add(e,t,o),n.push(a)};iT.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0&&!t[i].remove(e);i--);};iT.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];r.updaters.length===0&&(n.splice(t,1),r.destroy())}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};iT.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return mt.FAILED};iT.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var oU=iT;var Lnt=new G,Ont=new Ut,Fnt=new Ut,Qnt=d.ZERO,knt=new d;function Op(e,t,n,i){this.translucent=t,this.width=n,this.shadows=i,this.primitives=e,this.createPrimitive=!1,this.waitingOnCreate=!1,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Pt,this.updaters=new Pt,this.updatersWithAttributes=new Pt,this.attributes=new Pt,this.itemsToRemove=[],this.subscriptions=new Pt,this.showsUpdated=new Pt}Op.prototype.add=function(e,t){let n=e.id;if(this.createPrimitive=!0,this.geometry.set(n,t),this.updaters.set(n,e),!e.hasConstantOutline||!e.outlineColorProperty.isConstant||!j.isConstant(e.distanceDisplayConditionProperty)||!j.isConstant(e.terrainOffsetProperty))this.updatersWithAttributes.set(n,e);else{let i=this;this.subscriptions.set(n,e.entity.definitionChanged.addEventListener(function(o,r,s,a){r==="isShowing"&&i.showsUpdated.set(e.id,e)}))}};Op.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t),this.showsUpdated.remove(t)),!0}return!1};Op.prototype.update=function(e){let t=!0,n=0,i=this.primitive,o=this.primitives,r;if(this.createPrimitive){let s=this.geometry.values;if(s.length>0)l(i)&&(l(this.oldPrimitive)?o.remove(i):this.oldPrimitive=i),i=new kn({show:!1,asynchronous:!0,geometryInstances:s.slice(),appearance:new gn({flat:!0,translucent:this.translucent,renderState:{lineWidth:this.width}}),shadows:this.shadows}),o.add(i),t=!1;else{l(i)&&(o.remove(i),i=void 0);let c=this.oldPrimitive;l(c)&&(o.remove(c),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=i,this.createPrimitive=!1,this.waitingOnCreate=!0}else if(l(i)&&i.ready){i.show=!0,l(this.oldPrimitive)&&(o.remove(this.oldPrimitive),this.oldPrimitive=void 0);let s=this.updatersWithAttributes.values,a=s.length,c=this.waitingOnCreate;for(r=0;r<a;r++){let u=s[r],f=this.geometry.get(u.id),h=this.attributes.get(f.id.id);if(l(h)||(h=i.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!u.outlineColorProperty.isConstant||c){let y=u.outlineColorProperty,C=j.getValueOrDefault(y,e,G.WHITE,Lnt);G.equals(h._lastColor,C)||(h._lastColor=G.clone(C,h._lastColor),h.color=en.toValue(C,h.color),(this.translucent&&h.color[3]===255||!this.translucent&&h.color[3]!==255)&&(this.itemsToRemove[n++]=u))}let A=u.entity.isShowing&&(u.hasConstantOutline||u.isOutlineVisible(e)),g=h.show[0]===1;A!==g&&(h.show=Bn.toValue(A,h.show));let m=u.distanceDisplayConditionProperty;if(!j.isConstant(m)){let y=j.getValueOrDefault(m,e,Fnt,Ont);Ut.equals(y,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(y,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(y,h.distanceDisplayCondition))}let _=u.terrainOffsetProperty;if(!j.isConstant(_)){let y=j.getValueOrDefault(_,e,Qnt,knt);d.equals(y,h._lastOffset)||(h._lastOffset=d.clone(y,h._lastOffset),h.offset=ho.toValue(y,h.offset))}}this.updateShows(i),this.waitingOnCreate=!1}else l(i)&&!i.ready&&(t=!1);return this.itemsToRemove.length=n,t};Op.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=this.geometry.get(o.id),s=this.attributes.get(r.id.id);l(s)||(s=e.getGeometryInstanceAttributes(r.id),this.attributes.set(r.id.id,s));let a=o.entity.isShowing,c=s.show[0]===1;a!==c&&(s.show=Bn.toValue(a,s.show),r.attributes.show.value[0]=s.show[0])}this.showsUpdated.removeAll()};Op.prototype.contains=function(e){return this.updaters.contains(e.id)};Op.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};Op.prototype.removeAllPrimitives=function(){let e=this.primitives,t=this.primitive;l(t)&&(e.remove(t),this.primitive=void 0,this.geometry.removeAll(),this.updaters.removeAll());let n=this.oldPrimitive;l(n)&&(e.remove(n),this.oldPrimitive=void 0)};function oT(e,t,n){this._primitives=e,this._scene=t,this._shadows=n,this._solidBatches=new Pt,this._translucentBatches=new Pt}oT.prototype.add=function(e,t){let n=t.createOutlineGeometryInstance(e),i=this._scene.clampLineWidth(t.outlineWidth),o,r;n.attributes.color.value[3]===255?(o=this._solidBatches,r=o.get(i),l(r)||(r=new Op(this._primitives,!1,i,this._shadows),o.set(i,r)),r.add(t,n)):(o=this._translucentBatches,r=o.get(i),l(r)||(r=new Op(this._primitives,!0,i,this._shadows),o.set(i,r)),r.add(t,n))};oT.prototype.remove=function(e){let t,n=this._solidBatches.values,i=n.length;for(t=0;t<i;t++)if(n[t].remove(e))return;let o=this._translucentBatches.values,r=o.length;for(t=0;t<r;t++)if(o[t].remove(e))return};oT.prototype.update=function(e){let t,n,i,o,r=this._solidBatches.values,s=r.length,a=this._translucentBatches.values,c=a.length,u,f=!0,h=!1;do{for(h=!1,n=0;n<s;n++){o=r[n],f=o.update(e),u=o.itemsToRemove;let A=u.length;if(A>0)for(h=!0,t=0;t<A;t++)i=u[t],o.remove(i),this.add(e,i)}for(n=0;n<c;n++){o=a[n],f=o.update(e),u=o.itemsToRemove;let A=u.length;if(A>0)for(h=!0,t=0;t<A;t++)i=u[t],o.remove(i),this.add(e,i)}}while(h);return f};oT.prototype.getBoundingSphere=function(e,t){let n,i=this._solidBatches.values,o=i.length;for(n=0;n<o;n++){let a=i[n];if(a.contains(e))return a.getBoundingSphere(e,t)}let r=this._translucentBatches.values,s=r.length;for(n=0;n<s;n++){let a=r[n];if(a.contains(e))return a.getBoundingSphere(e,t)}return mt.FAILED};oT.prototype.removeAllPrimitives=function(){let e,t=this._solidBatches.values,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._translucentBatches.values,o=i.length;for(e=0;e<o;e++)i[e].removeAllPrimitives()};var fv=oT;var Unt=[];function su(e,t,n,i){n=n??e.primitives,i=i??e.groundPrimitives,this._scene=e,this._primitives=n,this._groundPrimitives=i,this._entityCollection=void 0,this._addedObjects=new Pt,this._removedObjects=new Pt,this._changedObjects=new Pt;let o=Dn.NUMBER_OF_SHADOW_MODES;this._outlineBatches=new Array(o*2),this._closedColorBatches=new Array(o*2),this._closedMaterialBatches=new Array(o*2),this._openColorBatches=new Array(o*2),this._openMaterialBatches=new Array(o*2);let r=_r.supportsMaterialsforEntitiesOnTerrain(e);this._supportsMaterialsforEntitiesOnTerrain=r;let s;for(s=0;s<o;++s)this._outlineBatches[s]=new fv(n,e,s,!1),this._outlineBatches[o+s]=new fv(n,e,s,!0),this._closedColorBatches[s]=new ph(n,gn,void 0,!0,s,!0),this._closedColorBatches[o+s]=new ph(n,gn,void 0,!0,s,!1),this._closedMaterialBatches[s]=new _h(n,Io,void 0,!0,s,!0),this._closedMaterialBatches[o+s]=new _h(n,Io,void 0,!0,s,!1),this._openColorBatches[s]=new ph(n,gn,void 0,!1,s,!0),this._openColorBatches[o+s]=new ph(n,gn,void 0,!1,s,!1),this._openMaterialBatches[s]=new _h(n,Io,void 0,!1,s,!0),this._openMaterialBatches[o+s]=new _h(n,Io,void 0,!1,s,!1);let a=Jn.NUMBER_OF_CLASSIFICATION_TYPES,c=new Array(a),u=[];if(r)for(s=0;s<a;++s)u.push(new oU(i,s,Io)),c[s]=new uv(i,s);else for(s=0;s<a;++s)c[s]=new uv(i,s);this._groundColorBatches=c,this._groundMaterialBatches=u,this._dynamicBatch=new Nb(n,i),this._batches=this._outlineBatches.concat(this._closedColorBatches,this._closedMaterialBatches,this._openColorBatches,this._openMaterialBatches,this._groundColorBatches,this._groundMaterialBatches,this._dynamicBatch),this._subscriptions=new Pt,this._updaterSets=new Pt,this._entityCollection=t,t.collectionChanged.addEventListener(su.prototype._onCollectionChanged,this),this._onCollectionChanged(t,t.values,Unt)}su.registerUpdater=function(e){Xb.registerUpdater(e)};su.unregisterUpdater=function(e){Xb.unregisterUpdater(e)};su.prototype.update=function(e){let t=this._addedObjects,n=t.values,i=this._removedObjects,o=i.values,r=this._changedObjects,s=r.values,a,c,u,f,h=this;for(a=s.length-1;a>-1;a--)c=s[a],u=c.id,f=this._updaterSets.get(u),f.entity===c?f.forEach(function(_){h._removeUpdater(_),h._insertUpdaterIntoBatch(e,_)}):(o.push(c),n.push(c));for(a=o.length-1;a>-1;a--)c=o[a],u=c.id,f=this._updaterSets.get(u),f.forEach(this._removeUpdater.bind(this)),f.destroy(),this._updaterSets.remove(u),this._subscriptions.get(u)(),this._subscriptions.remove(u);for(a=n.length-1;a>-1;a--)c=n[a],u=c.id,f=new Xb(c,this._scene),this._updaterSets.set(u,f),f.forEach(function(_){h._insertUpdaterIntoBatch(e,_)}),this._subscriptions.set(u,f.geometryChanged.addEventListener(su._onGeometryChanged,this));t.removeAll(),i.removeAll(),r.removeAll();let A=!0,g=this._batches,m=g.length;for(a=0;a<m;a++)A=g[a].update(e)&&A;return A};var Gnt=[],znt=new le;su.prototype.getBoundingSphere=function(e,t){let n=Gnt,i=znt,o=0,r=mt.DONE,s=this._batches,a=s.length,c=e.id,u=this._updaterSets.get(c).updaters;for(let f=0;f<u.length;f++){let h=u[f];for(let A=0;A<a;A++){if(r=s[A].getBoundingSphere(h,i),r===mt.PENDING)return mt.PENDING;r===mt.DONE&&(n[o]=le.clone(i,n[o]),o++)}}return o===0?mt.FAILED:(n.length=o,le.fromBoundingSpheres(n,t),mt.DONE)};su.prototype.isDestroyed=function(){return!1};su.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(su.prototype._onCollectionChanged,this),this._addedObjects.removeAll(),this._removedObjects.removeAll();let e,t=this._batches,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._subscriptions.values;for(n=i.length,e=0;e<n;e++)i[e]();this._subscriptions.removeAll();let o=this._updaterSets.values;for(n=o.length,e=0;e<n;e++)o[e].destroy();return this._updaterSets.removeAll(),ue(this)};su.prototype._removeUpdater=function(e){let t=this._batches,n=t.length;for(let i=0;i<n;i++)t[i].remove(e)};su.prototype._insertUpdaterIntoBatch=function(e,t){if(t.isDynamic){this._dynamicBatch.add(e,t);return}let n;(t.outlineEnabled||t.fillEnabled)&&(n=t.shadowsProperty.getValue(e));let i=Dn.NUMBER_OF_SHADOW_MODES;if(t.outlineEnabled&&(l(t.terrainOffsetProperty)?this._outlineBatches[i+n].add(e,t):this._outlineBatches[n].add(e,t)),t.fillEnabled)if(t.onTerrain){let o=t.classificationTypeProperty.getValue(e);t.fillMaterialProperty instanceof Jt?this._groundColorBatches[o].add(e,t):this._groundMaterialBatches[o].add(e,t)}else t.isClosed?t.fillMaterialProperty instanceof Jt?l(t.terrainOffsetProperty)?this._closedColorBatches[i+n].add(e,t):this._closedColorBatches[n].add(e,t):l(t.terrainOffsetProperty)?this._closedMaterialBatches[i+n].add(e,t):this._closedMaterialBatches[n].add(e,t):t.fillMaterialProperty instanceof Jt?l(t.terrainOffsetProperty)?this._openColorBatches[i+n].add(e,t):this._openColorBatches[n].add(e,t):l(t.terrainOffsetProperty)?this._openMaterialBatches[i+n].add(e,t):this._openMaterialBatches[n].add(e,t)};su._onGeometryChanged=function(e){let t=this._removedObjects,n=this._changedObjects,i=e.entity,o=i.id;!l(t.get(o))&&!l(n.get(o))&&n.set(o,i)};su.prototype._onCollectionChanged=function(e,t,n){let i=this._addedObjects,o=this._removedObjects,r=this._changedObjects,s,a,c;for(s=n.length-1;s>-1;s--)c=n[s],a=c.id,i.remove(a)||(o.set(a,c),r.remove(a));for(s=t.length-1;s>-1;s--)c=t[s],a=c.id,o.remove(a)?r.set(a,c):i.set(a,c)};var rU=su;var Vnt=1,Hnt="30px sans-serif",Wnt=ar.FILL,jnt=G.WHITE,Ynt=G.BLACK,qnt=1,Knt=!1,Xnt=new G(.165,.165,.165,.8),Jnt=new k(7,5),Znt=k.ZERO,$nt=d.ZERO,eit=Ze.NONE,tit=Ri.CENTER,nit=Wn.CENTER,iit=new d,oit=new G,rit=new G,sit=new G,ait=new k,cit=new d,lit=new k,uit=new Yt,fit=new Yt,dit=new Yt,hit=new Ut;function Jme(e){this.entity=e,this.label=void 0,this.index=void 0}function iy(e,t){t.collectionChanged.addEventListener(iy.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new Pt,this._onCollectionChanged(t,t.values,[],[])}iy.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._label,c,u=r.label,f=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),h;if(f&&(h=j.getValueOrUndefined(s._position,e,iit),c=j.getValueOrUndefined(a._text,e),f=l(h)&&l(c)),!f){Mq(r,s,n);continue}j.isConstant(s._position)||(n._clusterDirty=!0);let A=!1,g=j.getValueOrDefault(a._heightReference,e,eit);l(u)||(u=n.getLabel(s),u.id=s,r.label=u,A=d.equals(u.position,h)&&u.heightReference===g),u.show=!0,u.position=h,u.text=c,u.scale=j.getValueOrDefault(a._scale,e,Vnt),u.font=j.getValueOrDefault(a._font,e,Hnt),u.style=j.getValueOrDefault(a._style,e,Wnt),u.fillColor=j.getValueOrDefault(a._fillColor,e,jnt,oit),u.outlineColor=j.getValueOrDefault(a._outlineColor,e,Ynt,rit),u.outlineWidth=j.getValueOrDefault(a._outlineWidth,e,qnt),u.showBackground=j.getValueOrDefault(a._showBackground,e,Knt),u.backgroundColor=j.getValueOrDefault(a._backgroundColor,e,Xnt,sit),u.backgroundPadding=j.getValueOrDefault(a._backgroundPadding,e,Jnt,ait),u.pixelOffset=j.getValueOrDefault(a._pixelOffset,e,Znt,lit),u.eyeOffset=j.getValueOrDefault(a._eyeOffset,e,$nt,cit),u.heightReference=g,u.horizontalOrigin=j.getValueOrDefault(a._horizontalOrigin,e,tit),u.verticalOrigin=j.getValueOrDefault(a._verticalOrigin,e,nit),u.translucencyByDistance=j.getValueOrUndefined(a._translucencyByDistance,e,uit),u.pixelOffsetScaleByDistance=j.getValueOrUndefined(a._pixelOffsetScaleByDistance,e,fit),u.scaleByDistance=j.getValueOrUndefined(a._scaleByDistance,e,dit),u.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e,hit),u.disableDepthTestDistance=j.getValueOrUndefined(a._disableDepthTestDistance,e),A&&u._updateClamping()}return!0};iy.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!l(n.label))return mt.FAILED;let i=n.label;return t.center=d.clone(i._clampedPosition??i.position,t.center),t.radius=0,mt.DONE};iy.prototype.isDestroyed=function(){return!1};iy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(iy.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removeLabel(e[t]);return ue(this)};iy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._label)&&l(r._position)&&s.set(r.id,new Jme(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._label)&&l(r._position)?s.contains(r.id)||s.set(r.id,new Jme(r)):(Mq(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],Mq(s.get(r.id),r,a),s.remove(r.id)};function Mq(e,t,n){l(e)&&(e.label=void 0,n.removeLabel(t))}var sU=iy;var mit=1,Ait=!0,pit=0,git=!0,_it=!0,yit=Dn.ENABLED,Cit=Ze.NONE,Eit=G.RED,Iit=0,xit=G.WHITE,bit=al.HIGHLIGHT,Tit=.5,Sit=new k(1,1),Zme={maximumPositionEpsilon:Number.POSITIVE_INFINITY},wit=new R,Bit=new R,$me=new G,eAe=new Array(4),Dit=new d;function oy(e,t){t.collectionChanged.addEventListener(oy.prototype._onCollectionChanged,this),this._scene=e,this._primitives=e.primitives,this._entityCollection=t,this._modelHash={},this._entitiesToVisualize=new Pt,this._onCollectionChanged(t,t.values,[],[])}async function vit(e,t,n,i,o){let r=e._primitives,s=e._modelHash;try{let a=await Mm.fromGltfAsync({url:n,incrementallyLoadTextures:i,scene:e._scene,environmentMapOptions:o});if(e.isDestroyed()||!l(s[t.id]))return;a.id=t,r.add(a),s[t.id].modelPrimitive=a,a.errorEvent.addEventListener(c=>{l(s[t.id])&&(console.log(c),c.name!=="TextureError"&&a.incrementallyLoadTextures&&(s[t.id].loadFailed=!0))})}catch(a){if(e.isDestroyed()||!l(s[t.id]))return;console.log(a),s[t.id].loadFailed=!0}}oy.prototype.update=function(e){let t=this._entitiesToVisualize.values,n=this._modelHash,i=this._primitives;for(let o=0,r=t.length;o<r;o++){let s=t[o],a=s._model,c,u=n[s.id],f=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),h;if(f&&(h=s.computeModelMatrix(e,wit),c=we.createIfNeeded(j.getValueOrUndefined(a._uri,e)),f=l(h)&&l(c)),!f){l(u)&&u.modelPrimitive&&(u.modelPrimitive.show=!1);continue}if(!l(u)||c.url!==u.url){l(u?.modelPrimitive)&&(i.removeAndDestroy(u.modelPrimitive),delete n[s.id]),u={modelPrimitive:void 0,url:c.url,animationsRunning:!1,nodeTransformationsScratch:{},articulationsScratch:{},loadFailed:!1,modelUpdated:!1,environmentMapOptionsScratch:{...Zme}},n[s.id]=u;let m=j.getValueOrDefault(a._incrementallyLoadTextures,e,git),_=j.getValueOrDefault(a._environmentMapOptions,e,Zme,u.environmentMapOptionsScratch);vit(this,s,c,m,_)}let A=u.modelPrimitive;if(!l(A))continue;A.show=!0,A.scale=j.getValueOrDefault(a._scale,e,mit),A.enableVerticalExaggeration=j.getValueOrDefault(a._enableVerticalExaggeration,e,Ait),A.minimumPixelSize=j.getValueOrDefault(a._minimumPixelSize,e,pit),A.maximumScale=j.getValueOrUndefined(a._maximumScale,e),A.modelMatrix=R.clone(h,A.modelMatrix),A.shadows=j.getValueOrDefault(a._shadows,e,yit),A.heightReference=j.getValueOrDefault(a._heightReference,e,Cit),A.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e),A.silhouetteColor=j.getValueOrDefault(a._silhouetteColor,e,Eit,$me),A.silhouetteSize=j.getValueOrDefault(a._silhouetteSize,e,Iit),A.color=j.getValueOrDefault(a._color,e,xit,$me),A.colorBlendMode=j.getValueOrDefault(a._colorBlendMode,e,bit),A.colorBlendAmount=j.getValueOrDefault(a._colorBlendAmount,e,Tit),A.clippingPlanes=j.getValueOrUndefined(a._clippingPlanes,e),A.clampAnimations=j.getValueOrDefault(a._clampAnimations,e,_it),A.imageBasedLighting.imageBasedLightingFactor=j.getValueOrDefault(a._imageBasedLightingFactor,e,Sit);let g=j.getValueOrUndefined(a._lightColor,e);if(l(g)&&(G.pack(g,eAe,0),g=d.unpack(eAe,0,Dit)),A.lightColor=g,A.customShader=j.getValueOrUndefined(a._customShader,e),n[s.id].modelUpdated=!0,A.ready){let m=j.getValueOrDefault(a._runAnimations,e,!0);u.animationsRunning!==m&&(m?A.activeAnimations.addAll({loop:vu.REPEAT}):A.activeAnimations.removeAll(),u.animationsRunning=m);let _=j.getValueOrUndefined(a._nodeTransformations,e,u.nodeTransformationsScratch);if(l(_)){let E=Object.keys(_);for(let I=0,b=E.length;I<b;++I){let S=E[I],B=_[S];if(!l(B))continue;let v=A.getNode(S);if(!l(v))continue;let P=R.fromTranslationRotationScale(B,Bit);v.matrix=R.multiply(v.originalMatrix,P,P)}}let y=!1,C=j.getValueOrUndefined(a._articulations,e,u.articulationsScratch);if(l(C)){let E=Object.keys(C);for(let I=0,b=E.length;I<b;++I){let S=E[I],B=C[S];l(B)&&(y=!0,A.setArticulationStage(S,B))}}y&&A.applyArticulations()}}return!0};oy.prototype.isDestroyed=function(){return!1};oy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(oy.prototype._onCollectionChanged,this);let e=this._entitiesToVisualize.values,t=this._modelHash,n=this._primitives;for(let i=e.length-1;i>-1;i--)Nq(this,e[i],t,n);return ue(this)};var aU=new d,Pit=new Ae;oy.prototype.getBoundingSphere=function(e,t){let n=this._modelHash[e.id];if(!l(n))return mt.FAILED;if(n.loadFailed)return mt.FAILED;let i=n.modelPrimitive;if(!l(i)||!i.show)return mt.PENDING;if(!i.ready||!n.modelUpdated)return mt.PENDING;let o=this._scene,r=o.ellipsoid??te.default;if(i.heightReference!==Ze.NONE){let a=i.modelMatrix;aU.x=a[12],aU.y=a[13],aU.z=a[14];let c=r.cartesianToCartographic(aU,Pit),u=o.getHeight(c,i.heightReference);return l(u)&&(_f(i.heightReference)?c.height=u:c.height+=u),le.clone(i.boundingSphere,t),t.center=r.cartographicToCartesian(c),mt.DONE}return le.clone(i.boundingSphere,t),mt.DONE};oy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._entitiesToVisualize,a=this._modelHash,c=this._primitives;for(o=t.length-1;o>-1;o--)r=t[o],l(r._model)&&l(r._position)&&s.set(r.id,r);for(o=i.length-1;o>-1;o--)r=i[o],l(r._model)&&l(r._position)?(Rit(r,a),s.set(r.id,r)):(Nq(this,r,a,c),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],Nq(this,r,a,c),s.remove(r.id)};function Nq(e,t,n,i){let o=n[t.id];l(o)&&(i.removeAndDestroy(o.modelPrimitive),delete n[t.id])}function Rit(e,t){let n=t[e.id];l(n)&&(n.nodeTransformationsScratch={},n.articulationsScratch={})}var cU=oy;function ry(e){this._definitionChanged=new _e,this._value=void 0,this._removeSubscription=void 0,this.setValue(e)}Object.defineProperties(ry.prototype,{isConstant:{get:function(){return j.isConstant(this._value)}},definitionChanged:{get:function(){return this._definitionChanged}},referenceFrame:{get:function(){return l(this._value)?this._value.referenceFrame:eo.FIXED}}});var Mit=new K;ry.prototype.getValue=function(e,t){return l(e)||(e=K.now(Mit)),this.getValueInReferenceFrame(e,eo.FIXED,t)};ry.prototype.setValue=function(e){this._value!==e&&(this._value=e,l(this._removeSubscription)&&(this._removeSubscription(),this._removeSubscription=void 0),l(e)&&(this._removeSubscription=e.definitionChanged.addEventListener(this._raiseDefinitionChanged,this)),this._definitionChanged.raiseEvent(this))};ry.prototype.getValueInReferenceFrame=function(e,t,n){if(l(this._value))return n=this._value.getValueInReferenceFrame(e,t,n),l(n)?te.default.scaleToGeodeticSurface(n,n):void 0};ry.prototype.equals=function(e){return this===e||e instanceof ry&&this._value===e._value};ry.prototype._raiseDefinitionChanged=function(){this._definitionChanged.raiseEvent(this)};var Fp=ry;var Nit=60,Lit=1,nAe=new Rn,Lq=new Rn,Oq=new Rn;function tAe(e){this.entity=e,this.polyline=void 0,this.index=void 0,this.updater=void 0}function Oit(e,t,n,i,o,r,s,a,c){let u=a,f;f=e.getValueInReferenceFrame(t,r,c[u]),l(f)&&(c[u++]=f);let h=!l(o)||K.lessThanOrEquals(o,t)||K.greaterThanOrEquals(o,n),A=0,g=i.length,m=i[A],_=n,y=!1,C,E,I;for(;A<g;){if(!h&&K.greaterThanOrEquals(m,o)&&(f=e.getValueInReferenceFrame(o,r,c[u]),l(f)&&(c[u++]=f),h=!0),K.greaterThan(m,t)&&K.lessThan(m,_)&&!m.equals(o)&&(f=e.getValueInReferenceFrame(m,r,c[u]),l(f)&&(c[u++]=f)),A<g-1){if(s>0&&!y){let b=i[A+1],S=K.secondsDifference(b,m);y=S>s,y&&(C=Math.ceil(S/s),E=0,I=S/Math.max(C,2),C=Math.max(C-1,1))}if(y&&E<C){m=K.addSeconds(m,I,new K),E++;continue}}y=!1,A++,m=i[A]}return f=e.getValueInReferenceFrame(n,r,c[u]),l(f)&&(c[u++]=f),u}function Fit(e,t,n,i,o,r,s,a){let c,u=0,f=s,h=t,A=!l(i)||K.lessThanOrEquals(i,t)||K.greaterThanOrEquals(i,n);for(;K.lessThan(h,n);)!A&&K.greaterThanOrEquals(h,i)&&(A=!0,c=e.getValueInReferenceFrame(i,o,a[f]),l(c)&&(a[f]=c,f++)),c=e.getValueInReferenceFrame(h,o,a[f]),l(c)&&(a[f]=c,f++),u++,h=K.addSeconds(t,r*u,new K);return c=e.getValueInReferenceFrame(n,o,a[f]),l(c)&&(a[f]=c,f++),f}function Qit(e,t,n,i,o,r,s,a){let c,u=0,f=s,h=t,A=Math.max(r,60),g=!l(i)||K.lessThanOrEquals(i,t)||K.greaterThanOrEquals(i,n);for(;K.lessThan(h,n);)!g&&K.greaterThanOrEquals(h,i)&&(g=!0,c=e.getValueInReferenceFrame(i,o,a[f]),l(c)&&(a[f]=c,f++)),c=e.getValueInReferenceFrame(h,o,a[f]),l(c)&&(a[f]=c,f++),u++,h=K.addSeconds(t,A*u,new K);return c=e.getValueInReferenceFrame(n,o,a[f]),l(c)&&(a[f]=c,f++),f}function kit(e,t,n,i,o,r,s,a){Oq.start=t,Oq.stop=n;let c=s,u=e.intervals;for(let f=0;f<u.length;f++){let h=u.get(f);if(!Rn.intersect(h,Oq,nAe).isEmpty){let A=h.start;h.isStartIncluded||(h.isStopIncluded?A=h.stop:A=K.addSeconds(h.start,K.secondsDifference(h.stop,h.start)/2,new K));let g=e.getValueInReferenceFrame(A,o,a[c]);l(g)&&(a[c]=g,c++)}}return c}function Uit(e,t,n,i,o,r,s,a){let c=e.getValueInReferenceFrame(t,o,a[s]);return l(c)&&(a[s++]=c),s}function Git(e,t,n,i,o,r,s,a){Lq.start=t,Lq.stop=n;let c=s,u=e.intervals;for(let f=0;f<u.length;f++){let h=u.get(f);if(!Rn.intersect(h,Lq,nAe).isEmpty){let A=h.start,g=h.stop,m=t;K.greaterThan(A,m)&&(m=A);let _=n;K.lessThan(g,_)&&(_=g),c=iAe(h.data,m,_,i,o,r,c,a)}}return c}function iAe(e,t,n,i,o,r,s,a){for(;e instanceof q_;)e=e.resolvedProperty;if(e instanceof ic){let c=e._property._times;s=Oit(e,t,n,c,i,o,r,s,a)}else e instanceof sO?s=Fit(e,t,n,i,o,r,s,a):e instanceof nc?s=Git(e,t,n,i,o,r,s,a):e instanceof X_?s=kit(e,t,n,i,o,r,s,a):e instanceof Ol||e instanceof Fp&&j.isConstant(e)?s=Uit(e,t,n,i,o,r,s,a):s=Qit(e,t,n,i,o,r,s,a);return s}function oAe(e,t,n,i,o,r,s){l(s)||(s=[]);let a=iAe(e,t,n,i,o,r,0,s);return s.length=a,s}var zit=new J;function dv(e,t){this._unusedIndexes=[],this._polylineCollection=new Fm,this._scene=e,this._referenceFrame=t,e.primitives.add(this._polylineCollection)}dv.prototype.update=function(e){if(this._referenceFrame===eo.INERTIAL){let t=kt.computeIcrfToCentralBodyFixedMatrix(e,zit);R.fromRotationTranslation(t,d.ZERO,this._polylineCollection.modelMatrix)}};dv.prototype.updateObject=function(e,t){let n=t.entity,i=n._path,o=n._position,r,s,a=i._show,c=t.polyline,u=n.isShowing&&n.isAvailable(e)&&(!l(a)||a.getValue(e));if(u){let h=j.getValueOrUndefined(i._leadTime,e),A=j.getValueOrUndefined(i._trailTime,e),g=n._availability,m=l(g),_=l(h),y=l(A);if(u=m||_&&y,u){if(y&&(r=K.addSeconds(e,-A,new K)),_&&(s=K.addSeconds(e,h,new K)),m){let C=g.start,E=g.stop;(!y||K.greaterThan(C,r))&&(r=C),(!_||K.lessThan(E,s))&&(s=E)}u=K.lessThan(r,s)}}if(!u){l(c)&&(this._unusedIndexes.push(t.index),t.polyline=void 0,c.show=!1,t.index=void 0);return}if(!l(c)){let h=this._unusedIndexes;if(h.length>0){let g=h.pop();c=this._polylineCollection.get(g),t.index=g}else t.index=this._polylineCollection.length,c=this._polylineCollection.add();c.id=n,t.polyline=c}let f=j.getValueOrDefault(i._resolution,e,Nit);c.show=!0,c.positions=oAe(o,r,s,e,this._referenceFrame,f,c.positions.slice()),c.material=gr.getValue(e,i._material,c.material),c.width=j.getValueOrDefault(i._width,e,Lit),c.distanceDisplayCondition=j.getValueOrUndefined(i._distanceDisplayCondition,e,c.distanceDisplayCondition)};dv.prototype.removeObject=function(e){let t=e.polyline;l(t)&&(this._unusedIndexes.push(e.index),e.polyline=void 0,t.show=!1,t.id=void 0,e.index=void 0)};dv.prototype.destroy=function(){return this._scene.primitives.remove(this._polylineCollection),ue(this)};function sy(e,t){t.collectionChanged.addEventListener(sy.prototype._onCollectionChanged,this),this._scene=e,this._updaters={},this._entityCollection=t,this._items=new Pt,this._onCollectionChanged(t,t.values,[],[])}sy.prototype.update=function(e){let t=this._updaters;for(let i in t)t.hasOwnProperty(i)&&t[i].update(e);let n=this._items.values;if(n.length===0&&l(this._updaters)&&Object.keys(this._updaters).length>0){for(let i in t)t.hasOwnProperty(i)&&t[i].destroy();this._updaters={}}for(let i=0,o=n.length;i<o;i++){let r=n[i],a=r.entity._position,c=r.updater,u=eo.FIXED;this._scene.mode===ie.SCENE3D&&(u=a.referenceFrame);let f=this._updaters[u];if(c===f&&l(f)){f.updateObject(e,r);continue}l(c)&&c.removeObject(r),l(f)||(f=new dv(this._scene,u),f.update(e),this._updaters[u]=f),r.updater=f,l(f)&&f.updateObject(e,r)}return!0};sy.prototype.isDestroyed=function(){return!1};sy.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(sy.prototype._onCollectionChanged,this);let e=this._updaters;for(let t in e)e.hasOwnProperty(t)&&e[t].destroy();return ue(this)};sy.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s,a=this._items;for(o=t.length-1;o>-1;o--)r=t[o],l(r._path)&&l(r._position)&&a.set(r.id,new tAe(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._path)&&l(r._position)?a.contains(r.id)||a.set(r.id,new tAe(r)):(s=a.get(r.id),l(s)&&(l(s.updater)&&s.updater.removeObject(s),a.remove(r.id)));for(o=n.length-1;o>-1;o--)r=n[o],s=a.get(r.id),l(s)&&(l(s.updater)&&s.updater.removeObject(s),a.remove(r.id))};sy._subSample=oAe;var lU=sy;var rAe=G.WHITE,sAe=G.BLACK,aAe=0,cAe=1,lAe=0,uAe=wr.NONE,fAe=new G,Vit=new d,dAe=new G,hAe=new Yt,mAe=new Yt,AAe=new Ut;function pAe(e){this.entity=e,this.pointPrimitive=void 0,this.billboard=void 0,this.color=void 0,this.outlineColor=void 0,this.pixelSize=void 0,this.outlineWidth=void 0}function ay(e,t){t.collectionChanged.addEventListener(ay.prototype._onCollectionChanged,this),this._cluster=e,this._entityCollection=t,this._items=new Pt,this._onCollectionChanged(t,t.values,[],[])}ay.prototype.update=function(e){let t=this._items.values,n=this._cluster;for(let i=0,o=t.length;i<o;i++){let r=t[i],s=r.entity,a=s._point,c=r.pointPrimitive,u=r.billboard,f=j.getValueOrDefault(a._heightReference,e,Ze.NONE),h=s.isShowing&&s.isAvailable(e)&&j.getValueOrDefault(a._show,e,!0),A;if(h&&(A=j.getValueOrUndefined(s._position,e,Vit),h=l(A)),!h){hv(r,s,n);continue}j.isConstant(s._position)||(n._clusterDirty=!0);let g=!1,m=!1;if(f!==Ze.NONE&&!l(u)?(l(c)&&(hv(r,s,n),c=void 0),u=n.getBillboard(s),u.id=s,u.image=void 0,r.billboard=u,g=!0,m=d.equals(u.position,A)&&u.heightReference===f):f===Ze.NONE&&!l(c)&&(l(u)&&(hv(r,s,n),u=void 0),c=n.getPoint(s),c.id=s,r.pointPrimitive=c),l(c))c.show=!0,c.position=A,c.scaleByDistance=j.getValueOrUndefined(a._scaleByDistance,e,hAe),c.translucencyByDistance=j.getValueOrUndefined(a._translucencyByDistance,e,mAe),c.color=j.getValueOrDefault(a._color,e,rAe,fAe),c.outlineColor=j.getValueOrDefault(a._outlineColor,e,sAe,dAe),c.outlineWidth=j.getValueOrDefault(a._outlineWidth,e,aAe),c.pixelSize=j.getValueOrDefault(a._pixelSize,e,cAe),c.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e,AAe),c.disableDepthTestDistance=j.getValueOrDefault(a._disableDepthTestDistance,e,lAe),c.splitDirection=j.getValueOrDefault(a._splitDirection,e,uAe);else if(l(u)){u.show=!0,u.position=A,u.scaleByDistance=j.getValueOrUndefined(a._scaleByDistance,e,hAe),u.translucencyByDistance=j.getValueOrUndefined(a._translucencyByDistance,e,mAe),u.distanceDisplayCondition=j.getValueOrUndefined(a._distanceDisplayCondition,e,AAe),u.disableDepthTestDistance=j.getValueOrDefault(a._disableDepthTestDistance,e,lAe),u.splitDirection=j.getValueOrDefault(a._splitDirection,e,uAe),u.heightReference=f;let _=j.getValueOrDefault(a._color,e,rAe,fAe),y=j.getValueOrDefault(a._outlineColor,e,sAe,dAe),C=Math.round(j.getValueOrDefault(a._outlineWidth,e,aAe)),E=Math.max(1,Math.round(j.getValueOrDefault(a._pixelSize,e,cAe)));if(C>0?(u.scale=1,g=g||C!==r.outlineWidth||E!==r.pixelSize||!G.equals(_,r.color)||!G.equals(y,r.outlineColor)):(u.scale=E/50,E=50,g=g||C!==r.outlineWidth||!G.equals(_,r.color)||!G.equals(y,r.outlineColor)),g){r.color=G.clone(_,r.color),r.outlineColor=G.clone(y,r.outlineColor),r.pixelSize=E,r.outlineWidth=C;let I=_.alpha,b=_.toCssColorString(),S=y.toCssColorString(),B=JSON.stringify([b,E,S,C]);u.setImage(B,Hx(I,b,S,C,E))}m&&u._updateClamping()}}return!0};ay.prototype.getBoundingSphere=function(e,t){let n=this._items.get(e.id);if(!l(n)||!(l(n.pointPrimitive)||l(n.billboard)))return mt.FAILED;if(l(n.pointPrimitive))t.center=d.clone(n.pointPrimitive.position,t.center);else{let i=n.billboard;if(!l(i._clampedPosition))return mt.PENDING;t.center=d.clone(i._clampedPosition,t.center)}return t.radius=0,mt.DONE};ay.prototype.isDestroyed=function(){return!1};ay.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(ay.prototype._onCollectionChanged,this);let e=this._entityCollection.values;for(let t=0;t<e.length;t++)this._cluster.removePoint(e[t]);return ue(this)};ay.prototype._onCollectionChanged=function(e,t,n,i){let o,r,s=this._items,a=this._cluster;for(o=t.length-1;o>-1;o--)r=t[o],l(r._point)&&l(r._position)&&s.set(r.id,new pAe(r));for(o=i.length-1;o>-1;o--)r=i[o],l(r._point)&&l(r._position)?s.contains(r.id)||s.set(r.id,new pAe(r)):(hv(s.get(r.id),r,a),s.remove(r.id));for(o=n.length-1;o>-1;o--)r=n[o],hv(s.get(r.id),r,a),s.remove(r.id)};function hv(e,t,n){if(l(e)){let i=e.pointPrimitive;if(l(i)){e.pointPrimitive=void 0,n.removePoint(t);return}let o=e.billboard;l(o)&&(e.billboard=void 0,n.removeBillboard(t))}}var uU=ay;var EAe=[];function Hit(e,t,n,i,o){let r=EAe;r.length=o;let s,a=n.red,c=n.green,u=n.blue,f=n.alpha,h=i.red,A=i.green,g=i.blue,m=i.alpha;if(G.equals(n,i)){for(s=0;s<o;s++)r[s]=G.clone(n);return r}let _=(h-a)/o,y=(A-c)/o,C=(g-u)/o,E=(m-f)/o;for(s=0;s<o;s++)r[s]=new G(a+s*_,c+s*y,u+s*C,f+s*E);return r}function mv(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.colors,i=e.width??1,o=e.colorsPerVertex??!1;this._positions=t,this._colors=n,this._width=i,this._colorsPerVertex=o,this._vertexFormat=Pe.clone(e.vertexFormat??Pe.DEFAULT),this._arcType=e.arcType??un.GEODESIC,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._ellipsoid=te.clone(e.ellipsoid??te.default),this._workerName="createPolylineGeometry";let r=1+t.length*d.packedLength;r+=l(n)?1+n.length*G.packedLength:1,this.packedLength=r+te.packedLength+Pe.packedLength+4}mv.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._colors;for(r=l(s)?s.length:0,t[n++]=r,i=0;i<r;++i,n+=G.packedLength)G.pack(s[i],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n++]=e._width,t[n++]=e._colorsPerVertex?1:0,t[n++]=e._arcType,t[n]=e._granularity,t};var IAe=te.clone(te.UNIT_SPHERE),xAe=new Pe,QE={positions:void 0,colors:void 0,ellipsoid:IAe,vertexFormat:xAe,width:void 0,colorsPerVertex:void 0,arcType:void 0,granularity:void 0};mv.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=o>0?new Array(o):void 0;for(i=0;i<o;++i,t+=G.packedLength)s[i]=G.unpack(e,t);let a=te.unpack(e,t,IAe);t+=te.packedLength;let c=Pe.unpack(e,t,xAe);t+=Pe.packedLength;let u=e[t++],f=e[t++]===1,h=e[t++],A=e[t];return l(n)?(n._positions=r,n._colors=s,n._ellipsoid=te.clone(a,n._ellipsoid),n._vertexFormat=Pe.clone(c,n._vertexFormat),n._width=u,n._colorsPerVertex=f,n._arcType=h,n._granularity=A,n):(QE.positions=r,QE.colors=s,QE.width=u,QE.colorsPerVertex=f,QE.arcType=h,QE.granularity=A,new mv(QE))};var gAe=new d,_Ae=new d,yAe=new d,CAe=new d;mv.createGeometry=function(e){let t=e._width,n=e._vertexFormat,i=e._colors,o=e._colorsPerVertex,r=e._arcType,s=e._granularity,a=e._ellipsoid,c,u,f,h=[],A=No(e._positions,d.equalsEpsilon,!1,h);if(l(i)&&h.length>0){let M=0,O=h[0];i=i.filter(function(U,Q){let z=!1;return o?z=Q===O||Q===0&&O===1:z=Q+1===O,z?(M++,O=h[M],!1):!0})}let g=A.length;if(g<2||t<=0)return;if(r===un.GEODESIC||r===un.RHUMB){let M,O;r===un.GEODESIC?(M=D.chordLength(s,a.maximumRadius),O=Xi.numberOfPoints):(M=s,O=Xi.numberOfPointsRhumbLine);let U=Xi.extractHeights(A,a);if(l(i)){let Q=1;for(c=0;c<g-1;++c)Q+=O(A[c],A[c+1],M);let z=new Array(Q),F=0;for(c=0;c<g-1;++c){let H=A[c],W=A[c+1],Z=i[c],Y=O(H,W,M);if(o&&c<Q){let $=i[c+1],X=Hit(H,W,Z,$,Y),he=X.length;for(u=0;u<he;++u)z[F++]=X[u]}else for(u=0;u<Y;++u)z[F++]=G.clone(Z)}z[F]=G.clone(i[i.length-1]),i=z,EAe.length=0}r===un.GEODESIC?A=Xi.generateCartesianArc({positions:A,minDistance:M,ellipsoid:a,height:U}):A=Xi.generateCartesianRhumbArc({positions:A,granularity:M,ellipsoid:a,height:U})}g=A.length;let m=g*4-4,_=new Float64Array(m*3),y=new Float64Array(m*3),C=new Float64Array(m*3),E=new Float32Array(m*2),I=n.st?new Float32Array(m*2):void 0,b=l(i)?new Uint8Array(m*4):void 0,S=0,B=0,v=0,P=0,N;for(u=0;u<g;++u){u===0?(N=gAe,d.subtract(A[0],A[1],N),d.add(A[0],N,N)):N=A[u-1],d.clone(N,yAe),d.clone(A[u],_Ae),u===g-1?(N=gAe,d.subtract(A[g-1],A[g-2],N),d.add(A[g-1],N,N)):N=A[u+1],d.clone(N,CAe);let M,O;l(b)&&(u!==0&&!o?M=i[u-1]:M=i[u],u!==g-1&&(O=i[u]));let U=u===0?2:0,Q=u===g-1?2:4;for(f=U;f<Q;++f){d.pack(_Ae,_,S),d.pack(yAe,y,S),d.pack(CAe,C,S),S+=3;let z=f-2<0?-1:1;if(E[B++]=2*(f%2)-1,E[B++]=z*t,n.st&&(I[v++]=u/(g-1),I[v++]=Math.max(E[B-2],0)),l(b)){let F=f<2?M:O;b[P++]=G.floatToByte(F.red),b[P++]=G.floatToByte(F.green),b[P++]=G.floatToByte(F.blue),b[P++]=G.floatToByte(F.alpha)}}}let L=new En;L.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:_}),L.prevPosition=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:y}),L.nextPosition=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:C}),L.expandAndWidth=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:E}),n.st&&(L.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:I})),l(b)&&(L.color=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:4,values:b,normalize:!0}));let p=Fe.createTypedArray(m,g*6-6),x=0,T=0,w=g-1;for(u=0;u<w;++u)p[T++]=x,p[T++]=x+2,p[T++]=x+1,p[T++]=x+1,p[T++]=x+2,p[T++]=x+3,x+=4;return new ht({attributes:L,indices:p,primitiveType:Me.TRIANGLES,boundingSphere:le.fromPoints(A),geometryType:Ld.POLYLINES})};var cy=mv;var Wit=new ci(0),fU={},bAe=new G,jit=new Jt(G.WHITE),Yit=new ci(!0),qit=new ci(Dn.DISABLED),Kit=new ci(new Ut),Xit=new ci(Jn.BOTH);function Jit(){this.vertexFormat=void 0,this.positions=void 0,this.width=void 0,this.arcType=void 0,this.granularity=void 0}function Zit(){this.positions=void 0,this.width=void 0,this.arcType=void 0,this.granularity=void 0}function yh(e,t){this._entity=e,this._scene=t,this._entitySubscription=e.definitionChanged.addEventListener(yh.prototype._onEntityPropertyChanged,this),this._fillEnabled=!1,this._dynamic=!1,this._geometryChanged=new _e,this._showProperty=void 0,this._materialProperty=void 0,this._shadowsProperty=void 0,this._distanceDisplayConditionProperty=void 0,this._classificationTypeProperty=void 0,this._depthFailMaterialProperty=void 0,this._geometryOptions=new Jit,this._groundGeometryOptions=new Zit,this._id=`polyline-${e.id}`,this._clampToGround=!1,this._supportsPolylinesOnTerrain=_r.supportsPolylinesOnTerrain(t),this._zIndex=0,this._onEntityPropertyChanged(e,"polyline",e.polyline,void 0)}Object.defineProperties(yh.prototype,{id:{get:function(){return this._id}},entity:{get:function(){return this._entity}},fillEnabled:{get:function(){return this._fillEnabled}},hasConstantFill:{get:function(){return!this._fillEnabled||!l(this._entity.availability)&&j.isConstant(this._showProperty)}},fillMaterialProperty:{get:function(){return this._materialProperty}},depthFailMaterialProperty:{get:function(){return this._depthFailMaterialProperty}},outlineEnabled:{value:!1},hasConstantOutline:{value:!0},outlineColorProperty:{value:void 0},shadowsProperty:{get:function(){return this._shadowsProperty}},distanceDisplayConditionProperty:{get:function(){return this._distanceDisplayConditionProperty}},classificationTypeProperty:{get:function(){return this._classificationTypeProperty}},isDynamic:{get:function(){return this._dynamic}},isClosed:{value:!1},geometryChanged:{get:function(){return this._geometryChanged}},arcType:{get:function(){return this._arcType}},clampToGround:{get:function(){return this._clampToGround&&this._supportsPolylinesOnTerrain}},zIndex:{get:function(){return this._zIndex}}});yh.prototype.isOutlineVisible=function(e){return!1};yh.prototype.isFilled=function(e){let t=this._entity;return(this._fillEnabled&&t.isAvailable(e)&&this._showProperty.getValue(e))??!1};yh.prototype.createFillGeometryInstance=function(e){let t=this._entity,n=t.isAvailable(e),i=new Bn(n&&t.isShowing&&this._showProperty.getValue(e)),o=this._distanceDisplayConditionProperty.getValue(e),r=Kn.fromDistanceDisplayCondition(o),s={show:i,distanceDisplayCondition:r},a;return this._materialProperty instanceof Jt&&(l(this._materialProperty.color)&&(this._materialProperty.color.isConstant||n)&&(a=this._materialProperty.color.getValue(e,bAe)),l(a)||(a=G.WHITE),s.color=en.fromColor(a)),this.clampToGround?new Rt({id:t,geometry:new bI(this._groundGeometryOptions),attributes:s}):(l(this._depthFailMaterialProperty)&&this._depthFailMaterialProperty instanceof Jt&&(l(this._depthFailMaterialProperty.color)&&(this._depthFailMaterialProperty.color.isConstant||n)&&(a=this._depthFailMaterialProperty.color.getValue(e,bAe)),l(a)||(a=G.WHITE),s.depthFailColor=en.fromColor(a)),new Rt({id:t,geometry:new cy(this._geometryOptions),attributes:s}))};yh.prototype.createOutlineGeometryInstance=function(e){};yh.prototype.isDestroyed=function(){return!1};yh.prototype.destroy=function(){this._entitySubscription(),ue(this)};yh.prototype._onEntityPropertyChanged=function(e,t,n,i){if(!(t==="availability"||t==="polyline"))return;let o=this._entity.polyline;if(!l(o)){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let r=o.positions,s=o.show;if(l(s)&&s.isConstant&&!s.getValue(je.MINIMUM_VALUE)||!l(r)){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let a=o.zIndex,c=o.material??jit,u=c instanceof Jt;this._materialProperty=c,this._depthFailMaterialProperty=o.depthFailMaterial,this._showProperty=s??Yit,this._shadowsProperty=o.shadows??qit,this._distanceDisplayConditionProperty=o.distanceDisplayCondition??Kit,this._classificationTypeProperty=o.classificationType??Xit,this._fillEnabled=!0,this._zIndex=a??Wit;let f=o.width,h=o.arcType,A=o.clampToGround,g=o.granularity;if(!r.isConstant||!j.isConstant(f)||!j.isConstant(h)||!j.isConstant(g)||!j.isConstant(A)||!j.isConstant(a))this._dynamic||(this._dynamic=!0,this._geometryChanged.raiseEvent(this));else{let m=this._geometryOptions,_=r.getValue(je.MINIMUM_VALUE,m.positions);if(!l(_)||_.length<2){this._fillEnabled&&(this._fillEnabled=!1,this._geometryChanged.raiseEvent(this));return}let y;u&&(!l(this._depthFailMaterialProperty)||this._depthFailMaterialProperty instanceof Jt)?y=bs.VERTEX_FORMAT:y=Za.VERTEX_FORMAT,m.vertexFormat=y,m.positions=_,m.width=l(f)?f.getValue(je.MINIMUM_VALUE):void 0,m.arcType=l(h)?h.getValue(je.MINIMUM_VALUE):void 0,m.granularity=l(g)?g.getValue(je.MINIMUM_VALUE):void 0;let C=this._groundGeometryOptions;C.positions=_,C.width=m.width,C.arcType=m.arcType,C.granularity=m.granularity,this._clampToGround=l(A)?A.getValue(je.MINIMUM_VALUE):!1,!this._clampToGround&&l(a)&&yt("Entity polylines must have clampToGround: true when using zIndex. zIndex will be ignored."),this._dynamic=!1,this._geometryChanged.raiseEvent(this)}};yh.prototype.createDynamicUpdater=function(e,t){return new Av(e,t,this)};var rT={positions:void 0,granularity:void 0,height:void 0,ellipsoid:void 0};function Av(e,t,n){this._line=void 0,this._primitives=e,this._groundPrimitives=t,this._groundPolylinePrimitive=void 0,this._material=void 0,this._geometryUpdater=n,this._positions=[]}function TAe(e){if(l(e._line))return e._line;let t=e._primitives,n=e._geometryUpdater._scene.id+t._guid,i=fU[n];!l(i)||i.isDestroyed()?(i=new Fm,fU[n]=i,t.add(i)):t.contains(i)||t.add(i);let o=i.add();return o.id=e._geometryUpdater._entity,e._line=o,o}Av.prototype.update=function(e){let t=this._geometryUpdater,n=t._entity,i=n.polyline,o=i.positions,r=j.getValueOrUndefined(o,e,this._positions);t._clampToGround=j.getValueOrDefault(i._clampToGround,e,!1),t._groundGeometryOptions.positions=r,t._groundGeometryOptions.width=j.getValueOrDefault(i._width,e,1),t._groundGeometryOptions.arcType=j.getValueOrDefault(i._arcType,e,un.GEODESIC),t._groundGeometryOptions.granularity=j.getValueOrDefault(i._granularity,e,9999);let s=this._groundPrimitives;if(l(this._groundPolylinePrimitive)&&(s.remove(this._groundPolylinePrimitive),this._groundPolylinePrimitive=void 0),t.clampToGround){if(!n.isShowing||!n.isAvailable(e)||!j.getValueOrDefault(i._show,e,!0)||!l(r)||r.length<2)return;let h=t.fillMaterialProperty,A;if(h instanceof Jt)A=new bs;else{let g=gr.getValue(e,h,this._material);A=new Za({material:g,translucent:g.isTranslucent()}),this._material=g}this._groundPolylinePrimitive=s.add(new sm({geometryInstances:t.createFillGeometryInstance(e),appearance:A,classificationType:t.classificationTypeProperty.getValue(e),asynchronous:!1}),j.getValueOrUndefined(t.zIndex,e)),l(this._line)&&(this._line.show=!1);return}let a=TAe(this);if(!n.isShowing||!n.isAvailable(e)||!j.getValueOrDefault(i._show,e,!0)){a.show=!1;return}if(!l(r)||r.length<2){a.show=!1;return}let c=un.GEODESIC;c=j.getValueOrDefault(i._arcType,e,c);let u=t._scene.globe,f=t._scene.ellipsoid;c!==un.NONE&&l(u)&&(rT.ellipsoid=f,rT.positions=r,rT.granularity=j.getValueOrUndefined(i._granularity,e),rT.height=Xi.extractHeights(r,f),c===un.GEODESIC?r=Xi.generateCartesianArc(rT):r=Xi.generateCartesianRhumbArc(rT)),a.show=!0,a.positions=r.slice(),a.material=gr.getValue(e,t.fillMaterialProperty,a.material),a.width=j.getValueOrDefault(i._width,e,1),a.distanceDisplayCondition=j.getValueOrUndefined(i._distanceDisplayCondition,e,a.distanceDisplayCondition)};Av.prototype.getBoundingSphere=function(e){if(this._geometryUpdater.clampToGround){let t=this._groundPolylinePrimitive;if(l(t)&&t.show&&t.ready){let n=t.getGeometryInstanceAttributes(this._geometryUpdater._entity);if(l(n)&&l(n.boundingSphere))return le.clone(n.boundingSphere,e),mt.DONE}return l(t)&&!t.ready?mt.PENDING:mt.DONE}else{let t=TAe(this);if(t.show&&t.positions.length>0)return le.fromPoints(t.positions,e),mt.DONE}return mt.FAILED};Av.prototype.isDestroyed=function(){return!1};Av.prototype.destroy=function(){let t=this._geometryUpdater._scene.id+this._primitives._guid,n=fU[t];l(n)&&(n.remove(this._line),n.length===0&&(this._primitives.removeAndDestroy(n),delete fU[t])),l(this._groundPolylinePrimitive)&&this._groundPrimitives.remove(this._groundPolylinePrimitive),ue(this)};var dU=yh;var $it=new G,eot=new Ut,tot=new Ut;function Ch(e,t,n,i,o){let r;n instanceof Jt?r=bs:r=Za,this.orderedGroundPrimitives=e,this.classificationType=t,this.appearanceType=r,this.materialProperty=n,this.updaters=new Pt,this.createPrimitive=!0,this.primitive=void 0,this.oldPrimitive=void 0,this.geometry=new Pt,this.material=void 0,this.updatersWithAttributes=new Pt,this.attributes=new Pt,this.invalidated=!1,this.removeMaterialSubscription=n.definitionChanged.addEventListener(Ch.prototype.onMaterialChanged,this),this.subscriptions=new Pt,this.showsUpdated=new Pt,this.zIndex=i,this._asynchronous=o}Ch.prototype.onMaterialChanged=function(){this.invalidated=!0};Ch.prototype.isMaterial=function(e){let t=this.materialProperty,n=e.fillMaterialProperty;return n===t||n instanceof Jt&&t instanceof Jt?!0:l(t)&&t.equals(n)};Ch.prototype.add=function(e,t,n){let i=t.id;if(this.updaters.set(i,t),this.geometry.set(i,n),!t.hasConstantFill||!t.fillMaterialProperty.isConstant||!j.isConstant(t.distanceDisplayConditionProperty))this.updatersWithAttributes.set(i,t);else{let o=this;this.subscriptions.set(i,t.entity.definitionChanged.addEventListener(function(r,s,a,c){s==="isShowing"&&o.showsUpdated.set(t.id,t)}))}this.createPrimitive=!0};Ch.prototype.remove=function(e){let t=e.id;if(this.createPrimitive=this.geometry.remove(t)||this.createPrimitive,this.updaters.remove(t)){this.updatersWithAttributes.remove(t);let n=this.subscriptions.get(t);return l(n)&&(n(),this.subscriptions.remove(t)),!0}return!1};Ch.prototype.update=function(e){let t=!0,n=this.primitive,i=this.orderedGroundPrimitives,o=this.geometry.values,r;if(this.createPrimitive){if(o.length>0)l(n)&&(l(this.oldPrimitive)?i.remove(n):this.oldPrimitive=n),n=new sm({show:!1,asynchronous:this._asynchronous,geometryInstances:o.slice(),appearance:new this.appearanceType,classificationType:this.classificationType}),this.appearanceType===Za&&(this.material=gr.getValue(e,this.materialProperty,this.material),n.appearance.material=this.material),i.add(n,this.zIndex),t=!1;else{l(n)&&(i.remove(n),n=void 0);let a=this.oldPrimitive;l(a)&&(i.remove(a),this.oldPrimitive=void 0)}this.attributes.removeAll(),this.primitive=n,this.createPrimitive=!1}else if(l(n)&&n.ready){n.show=!0,l(this.oldPrimitive)&&(i.remove(this.oldPrimitive),this.oldPrimitive=void 0),this.appearanceType===Za&&(this.material=gr.getValue(e,this.materialProperty,this.material),this.primitive.appearance.material=this.material);let s=this.updatersWithAttributes.values,a=s.length;for(r=0;r<a;r++){let c=s[r],u=c.entity,f=this.geometry.get(c.id),h=this.attributes.get(f.id.id);if(l(h)||(h=n.getGeometryInstanceAttributes(f.id),this.attributes.set(f.id.id,h)),!c.fillMaterialProperty.isConstant){let _=c.fillMaterialProperty.color,y=j.getValueOrDefault(_,e,G.WHITE,$it);G.equals(h._lastColor,y)||(h._lastColor=G.clone(y,h._lastColor),h.color=en.toValue(y,h.color))}let A=u.isShowing&&(c.hasConstantFill||c.isFilled(e)),g=h.show[0]===1;A!==g&&(h.show=Bn.toValue(A,h.show));let m=c.distanceDisplayConditionProperty;if(!j.isConstant(m)){let _=j.getValueOrDefault(m,e,tot,eot);Ut.equals(_,h._lastDistanceDisplayCondition)||(h._lastDistanceDisplayCondition=Ut.clone(_,h._lastDistanceDisplayCondition),h.distanceDisplayCondition=Kn.toValue(_,h.distanceDisplayCondition))}}this.updateShows(n)}else l(n)&&!n.ready&&(t=!1);return t};Ch.prototype.updateShows=function(e){let t=this.showsUpdated.values,n=t.length;for(let i=0;i<n;i++){let o=t[i],r=o.entity,s=this.geometry.get(o.id),a=this.attributes.get(s.id.id);l(a)||(a=e.getGeometryInstanceAttributes(s.id),this.attributes.set(s.id.id,a));let c=r.isShowing,u=a.show[0]===1;c!==u&&(a.show=Bn.toValue(c,a.show),s.attributes.show.value[0]=a.show[0])}this.showsUpdated.removeAll()};Ch.prototype.contains=function(e){return this.updaters.contains(e.id)};Ch.prototype.getBoundingSphere=function(e,t){let n=this.primitive;if(!n.ready)return mt.PENDING;let i=n.getGeometryInstanceAttributes(e.entity);return!l(i)||!l(i.boundingSphere)||l(i.show)&&i.show[0]===0?mt.FAILED:(i.boundingSphere.clone(t),mt.DONE)};Ch.prototype.destroy=function(){let e=this.primitive,t=this.orderedGroundPrimitives;l(e)&&t.remove(e);let n=this.oldPrimitive;l(n)&&t.remove(n),this.removeMaterialSubscription()};function sT(e,t,n){this._items=[],this._orderedGroundPrimitives=e,this._classificationType=t,this._asynchronous=n??!0}sT.prototype.add=function(e,t){let n=this._items,i=n.length,o=t.createFillGeometryInstance(e),r=j.getValueOrDefault(t.zIndex,0);for(let a=0;a<i;++a){let c=n[a];if(c.isMaterial(t)&&c.zIndex===r){c.add(e,t,o);return}}let s=new Ch(this._orderedGroundPrimitives,this._classificationType,t.fillMaterialProperty,r,this._asynchronous);s.add(e,t,o),n.push(s)};sT.prototype.remove=function(e){let t=this._items,n=t.length;for(let i=n-1;i>=0;i--){let o=t[i];if(o.remove(e)){o.updaters.length===0&&(t.splice(i,1),o.destroy());break}}};sT.prototype.update=function(e){let t,n=this._items,i=n.length;for(t=i-1;t>=0;t--){let r=n[t];if(r.invalidated){n.splice(t,1);let s=r.updaters.values,a=s.length;for(let c=0;c<a;c++)this.add(e,s[c]);r.destroy()}}let o=!0;for(t=0;t<n.length;t++)o=n[t].update(e)&&o;return o};sT.prototype.getBoundingSphere=function(e,t){let n=this._items,i=n.length;for(let o=0;o<i;o++){let r=n[o];if(r.contains(e))return r.getBoundingSphere(e,t)}return mt.FAILED};sT.prototype.removeAllPrimitives=function(){let e=this._items,t=e.length;for(let n=0;n<t;n++)e[n].destroy();this._items.length=0};var hU=sT;var not=[];function SAe(e,t){let n=e._batches,i=n.length;for(let o=0;o<i;o++)n[o].remove(t)}function wAe(e,t,n){if(n.isDynamic){e._dynamicBatch.add(t,n);return}if(n.clampToGround&&n.fillEnabled){let s=n.classificationTypeProperty.getValue(t);e._groundBatches[s].add(t,n);return}let i;n.fillEnabled&&(i=n.shadowsProperty.getValue(t));let o=0;l(n.depthFailMaterialProperty)&&(o=n.depthFailMaterialProperty instanceof Jt?1:2);let r;l(i)&&(r=i+o*Dn.NUMBER_OF_SHADOW_MODES),n.fillEnabled&&(n.fillMaterialProperty instanceof Jt?e._colorBatches[r].add(t,n):e._materialBatches[r].add(t,n))}function Zm(e,t,n,i){i=i??e.groundPrimitives,n=n??e.primitives,this._scene=e,this._primitives=n,this._entityCollection=void 0,this._addedObjects=new Pt,this._removedObjects=new Pt,this._changedObjects=new Pt;let o,r=Dn.NUMBER_OF_SHADOW_MODES;for(this._colorBatches=new Array(r*3),this._materialBatches=new Array(r*3),o=0;o<r;++o)this._colorBatches[o]=new ph(n,bs,void 0,!1,o),this._materialBatches[o]=new _h(n,Za,void 0,!1,o),this._colorBatches[o+r]=new ph(n,bs,bs,!1,o),this._materialBatches[o+r]=new _h(n,Za,bs,!1,o),this._colorBatches[o+r*2]=new ph(n,bs,Za,!1,o),this._materialBatches[o+r*2]=new _h(n,Za,Za,!1,o);this._dynamicBatch=new Nb(n,i);let s=Jn.NUMBER_OF_CLASSIFICATION_TYPES;for(this._groundBatches=new Array(s),o=0;o<s;++o)this._groundBatches[o]=new hU(i,o);this._batches=this._colorBatches.concat(this._materialBatches,this._dynamicBatch,this._groundBatches),this._subscriptions=new Pt,this._updaters=new Pt,this._entityCollection=t,t.collectionChanged.addEventListener(Zm.prototype._onCollectionChanged,this),this._onCollectionChanged(t,t.values,not)}Zm.prototype.update=function(e){let t=this._addedObjects,n=t.values,i=this._removedObjects,o=i.values,r=this._changedObjects,s=r.values,a,c,u,f;for(a=s.length-1;a>-1;a--)c=s[a],u=c.id,f=this._updaters.get(u),f.entity===c?(SAe(this,f),wAe(this,e,f)):(o.push(c),n.push(c));for(a=o.length-1;a>-1;a--)c=o[a],u=c.id,f=this._updaters.get(u),SAe(this,f),f.destroy(),this._updaters.remove(u),this._subscriptions.get(u)(),this._subscriptions.remove(u);for(a=n.length-1;a>-1;a--)c=n[a],u=c.id,f=new dU(c,this._scene),this._updaters.set(u,f),wAe(this,e,f),this._subscriptions.set(u,f.geometryChanged.addEventListener(Zm._onGeometryChanged,this));t.removeAll(),i.removeAll(),r.removeAll();let h=!0,A=this._batches,g=A.length;for(a=0;a<g;a++)h=A[a].update(e)&&h;return h};var iot=[],oot=new le;Zm.prototype.getBoundingSphere=function(e,t){let n=iot,i=oot,o=0,r=mt.DONE,s=this._batches,a=s.length,c=this._updaters.get(e.id);for(let u=0;u<a;u++){if(r=s[u].getBoundingSphere(c,i),r===mt.PENDING)return mt.PENDING;r===mt.DONE&&(n[o]=le.clone(i,n[o]),o++)}return o===0?mt.FAILED:(n.length=o,le.fromBoundingSpheres(n,t),mt.DONE)};Zm.prototype.isDestroyed=function(){return!1};Zm.prototype.destroy=function(){this._entityCollection.collectionChanged.removeEventListener(Zm.prototype._onCollectionChanged,this),this._addedObjects.removeAll(),this._removedObjects.removeAll();let e,t=this._batches,n=t.length;for(e=0;e<n;e++)t[e].removeAllPrimitives();let i=this._subscriptions.values;for(n=i.length,e=0;e<n;e++)i[e]();return this._subscriptions.removeAll(),ue(this)};Zm._onGeometryChanged=function(e){let t=this._removedObjects,n=this._changedObjects,i=e.entity,o=i.id;!l(t.get(o))&&!l(n.get(o))&&n.set(o,i)};Zm.prototype._onCollectionChanged=function(e,t,n){let i=this._addedObjects,o=this._removedObjects,r=this._changedObjects,s,a,c;for(s=n.length-1;s>-1;s--)c=n[s],a=c.id,i.remove(a)||(o.set(a,c),r.remove(a));for(s=t.length-1;s>-1;s--)c=t[s],a=c.id,o.remove(a)?r.set(a,c):i.set(a,c)};var mU=Zm;function au(e){Ll.initializeTerrainHeights(),sm.initializeTerrainHeights();let t=e.scene,n=e.dataSourceCollection;this._eventHelper=new Lr,this._eventHelper.add(n.dataSourceAdded,this._onDataSourceAdded,this),this._eventHelper.add(n.dataSourceRemoved,this._onDataSourceRemoved,this),this._eventHelper.add(n.dataSourceMoved,this._onDataSourceMoved,this),this._eventHelper.add(t.postRender,this._postRender,this),this._dataSourceCollection=n,this._scene=t,this._visualizersCallback=e.visualizersCallback??au.defaultVisualizersCallback;let i=!1,o=new ou,r=new ou;n.length>0&&(t.primitives.add(o),t.groundPrimitives.add(r),i=!0),this._primitives=o,this._groundPrimitives=r;for(let u=0,f=n.length;u<f;u++)this._onDataSourceAdded(n,n.get(u));let s=new c3;this._onDataSourceAdded(void 0,s),this._defaultDataSource=s;let a,c;if(!i){let u=this,f=function(){t.primitives.add(o),t.groundPrimitives.add(r),a(),c(),u._removeDefaultDataSourceListener=void 0,u._removeDataSourceCollectionListener=void 0};a=s.entities.collectionChanged.addEventListener(f),c=n.dataSourceAdded.addEventListener(f)}this._removeDefaultDataSourceListener=a,this._removeDataSourceCollectionListener=c,this._ready=!1}var aT=[];au.registerVisualizer=function(e){aT.includes(e)||aT.push(e)};au.unregisterVisualizer=function(e){if(aT.includes(e)){let t=aT.indexOf(e);aT.splice(t,1)}};au.defaultVisualizersCallback=function(e,t,n){let i=n.entities;return[new sM(t,i),new rU(e,i,n._primitives,n._groundPrimitives),new sU(t,i),new cU(e,i),new Yk(e,i),new uU(t,i),new lU(e,i),new mU(e,i,n._primitives,n._groundPrimitives),...aT.map(o=>new o(e,i))]};Object.defineProperties(au.prototype,{scene:{get:function(){return this._scene}},dataSources:{get:function(){return this._dataSourceCollection}},defaultDataSource:{get:function(){return this._defaultDataSource}},ready:{get:function(){return this._ready}}});au.prototype.isDestroyed=function(){return!1};au.prototype.destroy=function(){this._eventHelper.removeAll();let e=this._dataSourceCollection;for(let t=0,n=e.length;t<n;++t)this._onDataSourceRemoved(this._dataSourceCollection,e.get(t));return this._onDataSourceRemoved(void 0,this._defaultDataSource),l(this._removeDefaultDataSourceListener)?(this._removeDefaultDataSourceListener(),this._removeDataSourceCollectionListener()):(this._scene.primitives.remove(this._primitives),this._scene.groundPrimitives.remove(this._groundPrimitives)),ue(this)};au.prototype.update=function(e){if(!wi.initialized)return this._ready=!1,!1;let t=!0,n,i,o,r,s=this._dataSourceCollection,a=s.length;for(n=0;n<a;n++){let c=s.get(n);for(l(c.update)&&(t=c.update(e)&&t),o=c._visualizers,r=o.length,i=0;i<r;i++)t=o[i].update(e)&&t}for(o=this._defaultDataSource._visualizers,r=o.length,i=0;i<r;i++)t=o[i].update(e)&&t;return!this._ready&&t&&this._scene.requestRender(),this._ready=this._ready||t,t};au.prototype._postRender=function(){let e=this._scene.frameState,t=this._dataSourceCollection,n=t.length;for(let i=0;i<n;i++){let o=t.get(i),r=o.credit;l(r)&&e.creditDisplay.addCreditToNextFrame(r);let s=o._resourceCredits;if(l(s)){let a=s.length;for(let c=0;c<a;c++)e.creditDisplay.addCreditToNextFrame(s[c])}}};var rot=[],sot=new le;au.prototype.getBoundingSphere=function(e,t,n){if(!this._ready)return mt.PENDING;let i,o,r=this._defaultDataSource;if(!r.entities.contains(e)){r=void 0;let A=this._dataSourceCollection;for(o=A.length,i=0;i<o;i++){let g=A.get(i);if(g.entities.contains(e)){r=g;break}}}if(!l(r))return mt.FAILED;let s=rot,a=sot,c=0,u=mt.DONE,f=r._visualizers,h=f.length;for(i=0;i<h;i++){let A=f[i];if(l(A.getBoundingSphere)){if(u=f[i].getBoundingSphere(e,a),!t&&u===mt.PENDING)return mt.PENDING;u===mt.DONE&&(s[c]=le.clone(a,s[c]),c++)}}return c===0?mt.FAILED:(s.length=c,le.fromBoundingSpheres(s,n),mt.DONE)};au.prototype._onDataSourceAdded=function(e,t){let n=this._scene,i=this._primitives,o=this._groundPrimitives,r=i.add(new ou),s=o.add(new S3);t._primitives=r,t._groundPrimitives=s;let a=t.clustering;a._initialize(n),r.add(a),t._visualizers=this._visualizersCallback(n,a,t)};au.prototype._onDataSourceRemoved=function(e,t){let n=this._primitives,i=this._groundPrimitives,o=t._primitives,r=t._groundPrimitives,s=t.clustering;o.remove(s);let a=t._visualizers,c=a.length;for(let u=0;u<c;u++)a[u].destroy();n.remove(o),i.remove(r),t._visualizers=void 0};au.prototype._onDataSourceMoved=function(e,t,n){let i=this._primitives,o=this._groundPrimitives,r=e._primitives,s=e._groundPrimitives;t===n+1?(i.raise(r),o.raise(s)):t===n-1?(i.lower(r),o.lower(s)):t===0?(i.lowerToBottom(r),o.lowerToBottom(s),i.raise(r),o.raise(s)):(i.raiseToTop(r),o.raiseToTop(s))};var AU=au;function Fq(e,t,n){this.heading=e??0,this.pitch=t??0,this.range=n??0}Fq.clone=function(e,t){if(l(e))return l(t)||(t=new Fq),t.heading=e.heading,t.pitch=e.pitch,t.range=e.range,t};var Eh=Fq;var BAe=new J,DAe=new J,vAe=new J,aot=new R,pU=new d,PAe=new d,Qq=new d,kq=new d,RAe=new d,MAe=new d,cot=new Le,lot=new d,uot=new J,cT=new K,fot=1.25;function dot(e,t,n,i,o,r,s,a,c,u){let f=e.scene.mode,h=o.getValue(c,e._lastCartesian);if(l(h)){let A=!1,g=!1,m,_,y;if(f===ie.SCENE3D){K.addSeconds(c,.001,cT);let v=o.getValue(cT,pU);if(l(v)||(K.addSeconds(c,-.001,cT),v=o.getValue(cT,pU),g=!0),l(v)){let P=kt.computeFixedToIcrfMatrix(c,BAe),N=kt.computeFixedToIcrfMatrix(cT,DAe),L;!l(P)||!l(N)?(L=kt.computeTemeToPseudoFixedMatrix(c,vAe),P=J.transpose(L,BAe),N=kt.computeTemeToPseudoFixedMatrix(cT,DAe),J.transpose(N,N)):L=J.transpose(P,vAe);let p=J.multiplyByVector(P,h,RAe),x=J.multiplyByVector(N,v,MAe);d.subtract(p,x,kq);let T=d.magnitude(kq)*1e3,w=D.GRAVITATIONALPARAMETER,M=-w/(T*T-2*w/d.magnitude(p));M<0||M>fot*u.maximumRadius?(m=PAe,d.normalize(h,m),d.negate(m,m),y=d.clone(d.UNIT_Z,Qq),_=d.cross(y,m,pU),d.magnitude(_)>D.EPSILON7&&(d.normalize(m,m),d.normalize(_,_),y=d.cross(m,_,Qq),d.normalize(y,y),A=!0)):d.equalsEpsilon(h,v,D.EPSILON7)||(y=PAe,d.normalize(p,y),d.normalize(x,x),_=d.cross(y,x,Qq),g&&(_=d.multiplyByScalar(_,-1,_)),d.equalsEpsilon(_,d.ZERO,D.EPSILON7)||(m=d.cross(_,y,pU),J.multiplyByVector(L,m,m),J.multiplyByVector(L,_,_),J.multiplyByVector(L,y,y),d.normalize(m,m),d.normalize(_,_),d.normalize(y,y),A=!0))}}l(e.boundingSphere)&&(h=e.boundingSphere.center);let C,E,I;i&&(C=d.clone(t.position,kq),E=d.clone(t.direction,RAe),I=d.clone(t.up,MAe));let b=aot,S;l(s)&&(S=s.getValue(c,cot));let B=r.getValue(c,lot);if(a===Tg.INERTIAL&&l(S))R.fromTranslationQuaternionRotationScale(h,S,d.ONE,b);else if(a===Tg.VELOCITY&&l(B)){let v=kt.rotationMatrixFromPositionVelocity(h,B,u,uot);R.fromRotationTranslation(v,h,b)}else a===Tg.ENU||!A?kt.eastNorthUpToFixedFrame(h,u,b):(b[0]=m.x,b[1]=m.y,b[2]=m.z,b[3]=0,b[4]=_.x,b[5]=_.y,b[6]=_.z,b[7]=0,b[8]=y.x,b[9]=y.y,b[10]=y.z,b[11]=0,b[12]=h.x,b[13]=h.y,b[14]=h.z,b[15]=0);t._setTransform(b),i&&(d.clone(C,t.position),d.clone(E,t.direction),d.clone(I,t.up),d.cross(E,I,t.right))}if(n){let A=f===ie.SCENE2D||d.equals(e._offset3D,d.ZERO)?void 0:e._offset3D;t.lookAtTransform(t.transform,A)}}function pv(e,t,n){this.entity=e,this.scene=t,this.ellipsoid=n??te.default,this.boundingSphere=void 0,this._lastEntity=void 0,this._mode=void 0,this._lastCartesian=new d,this._defaultOffset3D=void 0,this._velocityProperty=new Z_(e.position,!0),this._offset3D=new d}Object.defineProperties(pv,{defaultOffset3D:{get:function(){return this._defaultOffset3D},set:function(e){this._defaultOffset3D=d.clone(e,new d)}}});pv.defaultOffset3D=new d(-14e3,3500,3500);var gU=new Eh,hot=new d;pv.prototype.update=function(e,t){let n=this.scene,i=this.ellipsoid,o=n.mode;if(o===ie.MORPHING)return;let r=this.entity,s=r.trackingReferenceFrame,a=r.position;if(!l(a))return;let c=this._velocityProperty,u=r.orientation,f=r!==this._lastEntity,h=o!==this._mode,A=n.camera,g=f||h,m=!0;if(f){let _=r.viewFrom,y=l(_);if(!y&&l(t)){gU.pitch=-D.PI_OVER_FOUR,gU.range=0;let C=a.getValue(e,hot);if(l(C)){let E=2-1/Math.max(1,d.magnitude(C)/i.maximumRadius);gU.pitch*=E}A.viewBoundingSphere(t,gU),this.boundingSphere=t,g=!1,m=!1}else(!y||!l(_.getValue(e,this._offset3D)))&&d.clone(pv._defaultOffset3D,this._offset3D)}else!h&&this._mode!==ie.SCENE2D&&d.clone(A.position,this._offset3D);this._lastEntity=r,this._mode=o,dot(this,A,g,m,a,c,u,s,e,i)};var _U=pv;function _v(){this._cache={}}_v.prototype.fromColor=function(e,t){return yU(void 0,void 0,e,t,this._cache)};_v.prototype.fromUrl=function(e,t,n){return yU(e,void 0,t,n,this._cache)};_v.prototype.fromMakiIconId=function(e,t,n){return yU(fn(`Assets/Textures/maki/${encodeURIComponent(e)}.png`),void 0,t,n,this._cache)};_v.prototype.fromText=function(e,t,n){return yU(void 0,e,t,n,this._cache)};var mot=new G;function Aot(e,t,n){e.save(),e.scale(n/24,n/24),e.fillStyle=t.toCssColorString(),e.strokeStyle=t.brighten(.6,mot).toCssColorString(),e.lineWidth=.846,e.beginPath(),e.moveTo(6.72,.422),e.lineTo(17.28,.422),e.bezierCurveTo(18.553,.422,19.577,1.758,19.577,3.415),e.lineTo(19.577,10.973),e.bezierCurveTo(19.577,12.63,18.553,13.966,17.282,13.966),e.lineTo(14.386,14.008),e.lineTo(11.826,23.578),e.lineTo(9.614,14.008),e.lineTo(6.719,13.965),e.bezierCurveTo(5.446,13.983,4.422,12.629,4.422,10.972),e.lineTo(4.422,3.416),e.bezierCurveTo(4.423,1.76,5.447,.423,6.718,.423),e.closePath(),e.fill(),e.stroke(),e.restore()}function NAe(e,t,n){let i=n/2.5,o=i,r=i;t.width>t.height?r=i*(t.height/t.width):t.width<t.height&&(o=i*(t.width/t.height));let s=Math.round((n-o)/2),a=Math.round(7/24*n-r/2);e.globalCompositeOperation="destination-out",e.drawImage(t,s-1,a,o,r),e.drawImage(t,s,a-1,o,r),e.drawImage(t,s+1,a,o,r),e.drawImage(t,s,a+1,o,r),e.globalCompositeOperation="destination-over",e.fillStyle=G.BLACK.toCssColorString(),e.fillRect(s-1,a-1,o+2,r+2),e.globalCompositeOperation="destination-out",e.drawImage(t,s,a,o,r),e.globalCompositeOperation="destination-over",e.fillStyle=G.WHITE.toCssColorString(),e.fillRect(s-1,a-2,o+2,r+2)}var gv=new Array(4);function yU(e,t,n,i,o){gv[0]=e,gv[1]=t,gv[2]=n,gv[3]=i;let r=JSON.stringify(gv),s=o[r];if(l(s))return s;let a=document.createElement("canvas");a.width=i,a.height=i;let c=a.getContext("2d");if(Aot(c,n,i),l(e)){let f=we.createIfNeeded(e).fetchImage().then(function(h){return NAe(c,h,i),o[r]=a,a});return o[r]=f,f}else if(l(t)){let u=jx(t,{font:`bold ${i}px sans-serif`});NAe(c,u,i)}return o[r]=a,a}var ly=_v;function Uq(e){return e}function CU(e){if(e==null)return Uq;var t,n,i=e.scale[0],o=e.scale[1],r=e.translate[0],s=e.translate[1];return function(a,c){c||(t=n=0);var u=2,f=a.length,h=new Array(f);for(h[0]=(t+=a[0])*i+r,h[1]=(n+=a[1])*o+s;u<f;)h[u]=a[u],++u;return h}}function LAe(e,t){for(var n,i=e.length,o=i-t;o<--i;)n=e[o],e[o++]=e[i],e[i]=n}function Gq(e,t){return typeof t=="string"&&(t=e.objects[t]),t.type==="GeometryCollection"?{type:"FeatureCollection",features:t.geometries.map(function(n){return OAe(e,n)})}:OAe(e,t)}function OAe(e,t){var n=t.id,i=t.bbox,o=t.properties==null?{}:t.properties,r=zq(e,t);return n==null&&i==null?{type:"Feature",properties:o,geometry:r}:i==null?{type:"Feature",id:n,properties:o,geometry:r}:{type:"Feature",id:n,bbox:i,properties:o,geometry:r}}function zq(e,t){var n=CU(e.transform),i=e.arcs;function o(f,h){h.length&&h.pop();for(var A=i[f<0?~f:f],g=0,m=A.length;g<m;++g)h.push(n(A[g],g));f<0&&LAe(h,m)}function r(f){return n(f)}function s(f){for(var h=[],A=0,g=f.length;A<g;++A)o(f[A],h);return h.length<2&&h.push(h[0]),h}function a(f){for(var h=s(f);h.length<4;)h.push(h[0]);return h}function c(f){return f.map(a)}function u(f){var h=f.type,A;switch(h){case"GeometryCollection":return{type:h,geometries:f.geometries.map(u)};case"Point":A=r(f.coordinates);break;case"MultiPoint":A=f.coordinates.map(r);break;case"LineString":A=s(f.arcs);break;case"MultiLineString":A=f.arcs.map(s);break;case"Polygon":A=c(f.arcs);break;case"MultiPolygon":A=f.arcs.map(c);break;default:return null}return{type:h,coordinates:A}}return u(t)}function EU(e){return d.fromDegrees(e[0],e[1],e[2])}var Vq={"urn:ogc:def:crs:OGC:1.3:CRS84":EU,"EPSG:4326":EU,"urn:ogc:def:crs:EPSG::4326":EU},FAe={},QAe={},Hq=48,Wq,jq=G.ROYALBLUE,Yq=G.YELLOW,qq=2,Kq=G.fromBytes(255,255,0,100),Xq=!1,Cot={small:24,medium:48,large:64},Eot=["title","description","marker-size","marker-symbol","marker-color","stroke","stroke-opacity","stroke-width","fill","fill-opacity"];function kAe(e,t){let n="";for(let i in e)if(e.hasOwnProperty(i)){if(i===t||Eot.indexOf(i)!==-1)continue;let o=e[i];l(o)&&(typeof o=="object"?n+=`<tr><th>${i}</th><td>${kAe(o)}</td></tr>`:n+=`<tr><th>${i}</th><td>${o}</td></tr>`)}return n.length>0&&(n=`<table class="cesium-infoBox-defaultTable"><tbody>${n}</tbody></table>`),n}function Iot(e,t,n){let i;return function(o,r){return l(i)||(i=e(t,n)),i}}function xot(e,t){return new fm(Iot(kAe,e,t),!0)}function IU(e,t,n){let i=e.id;if(!l(i)||e.type!=="Feature")i=Xn();else{let s=2,a=i;for(;l(t.getById(a));)a=`${i}_${s}`,s++;i=a}let o=t.getOrCreateEntity(i),r=e.properties;if(l(r)){o.properties=r;let s,a=r.title;if(l(a))o.name=a,s="title";else{let u=Number.MAX_VALUE;for(let f in r)if(r.hasOwnProperty(f)&&r[f]){let h=f.toLowerCase();if(u>1&&h==="title"){u=1,s=f;break}else u>2&&h==="name"?(u=2,s=f):u>3&&/title/i.test(f)?(u=3,s=f):u>4&&/name/i.test(f)&&(u=4,s=f)}l(s)&&(o.name=r[s])}let c=r.description;c!==null&&(o.description=l(c)?new ci(c):n(r,s))}return o}function Jq(e,t){let n=new Array(e.length);for(let i=0;i<e.length;i++)n[i]=t(e[i]);return n}var UAe={Feature:zAe,FeatureCollection:bot,GeometryCollection:VAe,LineString:qAe,MultiLineString:KAe,MultiPoint:jAe,MultiPolygon:ZAe,Point:WAe,Polygon:JAe,Topology:$Ae},GAe={GeometryCollection:VAe,LineString:qAe,MultiLineString:KAe,MultiPoint:jAe,MultiPolygon:ZAe,Point:WAe,Polygon:JAe,Topology:$Ae};function zAe(e,t,n,i,o){if(t.geometry===null){IU(t,e._entityCollection,o.describe);return}if(!l(t.geometry))throw new ce("feature.geometry is required.");let r=t.geometry.type,s=GAe[r];if(!l(s))throw new ce(`Unknown geometry type: ${r}`);s(e,t,t.geometry,i,o)}function bot(e,t,n,i,o){let r=t.features;for(let s=0,a=r.length;s<a;s++)zAe(e,r[s],void 0,i,o)}function VAe(e,t,n,i,o){let r=n.geometries;for(let s=0,a=r.length;s<a;s++){let c=r[s],u=c.type,f=GAe[u];if(!l(f))throw new ce(`Unknown geometry type: ${u}`);f(e,t,c,i,o)}}function HAe(e,t,n,i,o){let r=o.markerSymbol,s=o.markerColor,a=o.markerSize,c=t.properties;if(l(c)){let g=c["marker-color"];l(g)&&(s=G.fromCssColorString(g)),a=Cot[c["marker-size"]]??a;let m=c["marker-symbol"];l(m)&&(r=m)}let u;l(r)?r.length===1?u=e._pinBuilder.fromText(r.toUpperCase(),s,a):u=e._pinBuilder.fromMakiIconId(r,s,a):u=e._pinBuilder.fromColor(s,a);let f=new jc;f.verticalOrigin=new ci(Wn.BOTTOM),i.length===2&&o.clampToGround&&(f.heightReference=Ze.CLAMP_TO_GROUND);let h=IU(t,e._entityCollection,o.describe);h.billboard=f,h.position=new Ol(n(i));let A=Promise.resolve(u).then(function(g){f.image=new ci(g)}).catch(function(){f.image=new ci(e._pinBuilder.fromColor(s,a))});e._promises.push(A)}function WAe(e,t,n,i,o){HAe(e,t,i,n.coordinates,o)}function jAe(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)HAe(e,t,i,r[s],o)}function YAe(e,t,n,i,o){let r=o.strokeMaterialProperty,s=o.strokeWidthProperty,a=t.properties;if(l(a)){let f=a["stroke-width"];l(f)&&(s=new ci(f));let h,A=a.stroke;l(A)&&(h=G.fromCssColorString(A));let g=a["stroke-opacity"];l(g)&&g!==1&&(l(h)||(h=r.color.getValue().clone()),h.alpha=g),l(h)&&(r=new Jt(h))}let c=IU(t,e._entityCollection,o.describe),u=new $c;c.polyline=u,u.clampToGround=o.clampToGround,u.material=r,u.width=s,u.positions=new ci(Jq(i,n)),u.arcType=un.RHUMB}function qAe(e,t,n,i,o){YAe(e,t,i,n.coordinates,o)}function KAe(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)YAe(e,t,i,r[s],o)}function XAe(e,t,n,i,o){if(i.length===0||i[0].length===0)return;let r=o.strokeMaterialProperty.color,s=o.fillMaterialProperty,a=o.strokeWidthProperty,c=t.properties;if(l(c)){let g=c["stroke-width"];l(g)&&(a=new ci(g));let m,_=c.stroke;l(_)&&(m=G.fromCssColorString(_));let y=c["stroke-opacity"];l(y)&&y!==1&&(l(m)||(m=r.getValue().clone()),m.alpha=y),l(m)&&(r=new ci(m));let C,E=c.fill,I=s.color.getValue();l(E)&&(C=G.fromCssColorString(E),C.alpha=I.alpha),y=c["fill-opacity"],l(y)&&y!==I.alpha&&(l(C)||(C=I.clone()),C.alpha=y),l(C)&&(s=new Jt(C))}let u=new lm;u.outline=new ci(!0),u.outlineColor=r,u.outlineWidth=a,u.material=s,u.arcType=un.RHUMB;let f=[];for(let g=1,m=i.length;g<m;g++)f.push(new xc(Jq(i[g],n)));let h=i[0];u.hierarchy=new ci(new xc(Jq(h,n),f)),h[0].length>2?u.perPositionHeight=new ci(!0):o.clampToGround||(u.height=0);let A=IU(t,e._entityCollection,o.describe);A.polygon=u}function JAe(e,t,n,i,o){XAe(e,t,i,n.coordinates,o)}function ZAe(e,t,n,i,o){let r=n.coordinates;for(let s=0;s<r.length;s++)XAe(e,t,i,r[s],o)}function $Ae(e,t,n,i,o){for(let r in n.objects)if(n.objects.hasOwnProperty(r)){let s=Gq(n,n.objects[r]),a=UAe[s.type];a(e,s,s,i,o)}}function uy(e){this._name=e,this._changed=new _e,this._error=new _e,this._isLoading=!1,this._loading=new _e,this._entityCollection=new Oa(this),this._promises=[],this._pinBuilder=new ly,this._entityCluster=new od,this._credit=void 0,this._resourceCredits=[]}uy.load=function(e,t){return new uy().load(e,t)};Object.defineProperties(uy,{markerSize:{get:function(){return Hq},set:function(e){Hq=e}},markerSymbol:{get:function(){return Wq},set:function(e){Wq=e}},markerColor:{get:function(){return jq},set:function(e){jq=e}},stroke:{get:function(){return Yq},set:function(e){Yq=e}},strokeWidth:{get:function(){return qq},set:function(e){qq=e}},fill:{get:function(){return Kq},set:function(e){Kq=e}},clampToGround:{get:function(){return Xq},set:function(e){Xq=e}},crsNames:{get:function(){return Vq}},crsLinkHrefs:{get:function(){return FAe}},crsLinkTypes:{get:function(){return QAe}}});Object.defineProperties(uy.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{value:void 0,writable:!1},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}}});uy.prototype.load=function(e,t){return epe(this,e,t,!0)};uy.prototype.process=function(e,t){return epe(this,e,t,!1)};function epe(e,t,n,i){ms.setLoading(e,!0),n=n??V.EMPTY_OBJECT;let o=n.credit;typeof o=="string"&&(o=new Dt(o)),e._credit=o;let r=t,s=n.sourceUri;if(typeof t=="string"||t instanceof we){t=we.createIfNeeded(t),r=t.fetchJson(),s=s??t.getUrlComponent();let a=e._resourceCredits,c=t.credits;if(l(c)){let u=c.length;for(let f=0;f<u;f++)a.push(c[f])}}return n={describe:n.describe??xot,markerSize:n.markerSize??Hq,markerSymbol:n.markerSymbol??Wq,markerColor:n.markerColor??jq,strokeWidthProperty:new ci(n.strokeWidth??qq),strokeMaterialProperty:new Jt(n.stroke??Yq),fillMaterialProperty:new Jt(n.fill??Kq),clampToGround:n.clampToGround??Xq},Promise.resolve(r).then(function(a){return Tot(e,a,n,s,i)}).catch(function(a){throw ms.setLoading(e,!1),e._error.raiseEvent(e,a),a})}uy.prototype.update=function(e){return!0};function Tot(e,t,n,i,o){let r;l(i)&&(r=W_(i)),l(r)&&e._name!==r&&(e._name=r,e._changed.raiseEvent(e));let s=UAe[t.type];if(!l(s))throw new ce(`Unsupported GeoJSON object type: ${t.type}`);let a=t.crs,c=a!==null?EU:null;if(l(a)){if(!l(a.properties))throw new ce("crs.properties is undefined.");let u=a.properties;if(a.type==="name"){if(c=Vq[u.name],!l(c))throw new ce(`Unknown crs name: ${u.name}`)}else if(a.type==="link"){let f=FAe[u.href];if(l(f)||(f=QAe[u.type]),!l(f))throw new ce(`Unable to resolve crs link: ${JSON.stringify(u)}`);c=f(u)}else if(a.type==="EPSG"){if(c=Vq[`EPSG:${u.code}`],!l(c))throw new ce(`Unknown crs EPSG code: ${u.code}`)}else throw new ce(`Unknown crs type: ${a.type}`)}return Promise.resolve(c).then(function(u){return o&&e._entityCollection.removeAll(),u!==null&&s(e,t,t,u,n),Promise.all(e._promises).then(function(){return e._promises.length=0,ms.setLoading(e,!1),e})})}var kE=uy;var Zq=function(e,t){return Zq=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])},Zq(e,t)};function $m(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");Zq(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var Rs=function(){return Rs=Object.assign||function(t){for(var n,i=1,o=arguments.length;i<o;i++){n=arguments[i];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},Rs.apply(this,arguments)};function tpe(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var i=n.call(e),o,r=[],s;try{for(;(t===void 0||t-- >0)&&!(o=i.next()).done;)r.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(s)throw s.error}}return r}function npe(e,t,n){if(n||arguments.length===2)for(var i=0,o=t.length,r;i<o;i++)(r||!(i in t))&&(r||(r=Array.prototype.slice.call(t,0,i)),r[i]=t[i]);return e.concat(r||Array.prototype.slice.call(t))}var ipe="4.1.5";var ope=Object.prototype.hasOwnProperty;function Vu(e){return typeof e=="boolean"}function rpe(e,t,n){var i;return e.length>t&&(n==null?(n="…",i=3):i=n.length,e=e.substring(0,t-i)+n),e}function fy(e,t){for(var n=e.length-1;n>=0;n--)t(e[n])===!0&&e.splice(n,1)}function Ih(e){throw new Error("Unhandled case for value: '".concat(e,"'"))}var xU=/\s+/,bU=function(){function e(t){t===void 0&&(t={}),this.tagName="",this.attrs={},this.innerHTML="",this.tagName=t.tagName||"",this.attrs=t.attrs||{},this.innerHTML=t.innerHtml||t.innerHTML||""}return e.prototype.setTagName=function(t){return this.tagName=t,this},e.prototype.getTagName=function(){return this.tagName},e.prototype.setAttr=function(t,n){var i=this.getAttrs();return i[t]=n,this},e.prototype.getAttr=function(t){return this.getAttrs()[t]},e.prototype.setAttrs=function(t){return Object.assign(this.getAttrs(),t),this},e.prototype.getAttrs=function(){return this.attrs},e.prototype.setClass=function(t){return this.setAttr("class",t)},e.prototype.addClass=function(t){for(var n=this.getClass(),i=n?n.split(xU):[],o=t.split(xU),r;r=o.shift();)i.indexOf(r)===-1&&i.push(r);return this.getAttrs().class=i.join(" "),this},e.prototype.removeClass=function(t){for(var n=this.getClass(),i=n?n.split(xU):[],o=t.split(xU),r;i.length&&(r=o.shift());){var s=i.indexOf(r);s!==-1&&i.splice(s,1)}return this.getAttrs().class=i.join(" "),this},e.prototype.getClass=function(){return this.getAttrs().class||""},e.prototype.hasClass=function(t){return(" "+this.getClass()+" ").indexOf(" "+t+" ")!==-1},e.prototype.setInnerHTML=function(t){return this.innerHTML=t,this},e.prototype.setInnerHtml=function(t){return this.setInnerHTML(t)},e.prototype.getInnerHTML=function(){return this.innerHTML||""},e.prototype.getInnerHtml=function(){return this.getInnerHTML()},e.prototype.toAnchorString=function(){var t=this.getTagName(),n=this.buildAttrsStr();return n=n?" "+n:"",["<",t,n,">",this.getInnerHtml(),"</",t,">"].join("")},e.prototype.buildAttrsStr=function(){var t=this.getAttrs(),n=[];for(var i in t)ope.call(t,i)&&n.push(i+'="'+t[i]+'"');return n.join(" ")},e}();function ape(e,t,n){var i,o;if(n==null?(n="…",o=3,i=8):(o=n.length,i=n.length),e.length<=t)return e;var r=t-o,s=Sot(e);if(s.query){var a=s.query.match(/^(.*?)(?=(\?|#))(.*?)$/i);a&&(s.query=s.query.substr(0,a[1].length),e=spe(s))}if(e.length<=t||(s.host&&(s.host=s.host.replace(/^www\./,""),e=spe(s)),e.length<=t))return e;var c="";if(s.host&&(c+=s.host),c.length>=r)return s.host.length===t?(s.host.substr(0,t-o)+n).substr(0,r+i):$q(c,r,n).substr(0,r+i);var u="";if(s.path&&(u+="/"+s.path),s.query&&(u+="?"+s.query),u)if((c+u).length>=r){if((c+u).length==t)return(c+u).substr(0,t);var f=r-c.length;return(c+$q(u,f,n)).substr(0,r+i)}else c+=u;if(s.fragment){var h="#"+s.fragment;if((c+h).length>=r){if((c+h).length==t)return(c+h).substr(0,t);var A=r-c.length;return(c+$q(h,A,n)).substr(0,r+i)}else c+=h}if(s.scheme&&s.host){var g=s.scheme+"://";if((c+g).length<r)return(g+c).substr(0,t)}if(c.length<=t)return c;var m="";return r>0&&(m=c.substr(-1*Math.floor(r/2))),(c.substr(0,Math.ceil(r/2))+n+m).substr(0,r+i)}function Sot(e){var t={},n=e,i=n.match(/^([a-z]+):\/\//i);return i&&(t.scheme=i[1],n=n.slice(i[0].length)),i=n.match(/^(.*?)(?=(\?|#|\/|$))/i),i&&(t.host=i[1],n=n.slice(i[0].length)),i=n.match(/^\/(.*?)(?=(\?|#|$))/i),i&&(t.path=i[1],n=n.slice(i[0].length)),i=n.match(/^\?(.*?)(?=(#|$))/i),i&&(t.query=i[1],n=n.slice(i[0].length)),i=n.match(/^#(.*?)$/i),i&&(t.fragment=i[1]),t}function spe(e){var t="";return e.scheme&&e.host&&(t+=e.scheme+"://"),e.host&&(t+=e.host),e.path&&(t+="/"+e.path),e.query&&(t+="?"+e.query),e.fragment&&(t+="#"+e.fragment),t}function $q(e,t,n){var i=t/2,o=Math.ceil(i),r=-1*Math.floor(i),s="";return r<0&&(s=e.substr(r)),e.substr(0,o)+n+s}function cpe(e,t,n){if(e.length<=t)return e;var i,o;n==null?(n="…",i=8,o=3):(i=n.length,o=n.length);var r=t-o,s="";return r>0&&(s=e.substr(-1*Math.floor(r/2))),(e.substr(0,Math.ceil(r/2))+n+s).substr(0,r+i)}function lpe(e,t,n){return rpe(e,t,n)}var upe=function(){function e(t){t===void 0&&(t={}),this.newWindow=!1,this.truncate={},this.className="",this.newWindow=t.newWindow||!1,this.truncate=t.truncate||{},this.className=t.className||""}return e.prototype.build=function(t){return new bU({tagName:"a",attrs:this.createAttrs(t),innerHtml:this.processAnchorText(t.getAnchorText())})},e.prototype.createAttrs=function(t){var n={href:t.getAnchorHref()},i=this.createCssClass(t);return i&&(n.class=i),this.newWindow&&(n.target="_blank",n.rel="noopener noreferrer"),this.truncate.length&&this.truncate.length<t.getAnchorText().length&&(n.title=t.getAnchorHref()),n},e.prototype.createCssClass=function(t){var n=this.className;if(n){for(var i=[n],o=t.getCssClassSuffixes(),r=0,s=o.length;r<s;r++)i.push(n+"-"+o[r]);return i.join(" ")}else return""},e.prototype.processAnchorText=function(t){return t=this.doTruncate(t),t},e.prototype.doTruncate=function(t){var n=this.truncate;if(!n.length)return t;var i=n.length,o=n.location;return o==="smart"?ape(t,i):o==="middle"?cpe(t,i):lpe(t,i)},e}();var eA=function(){function e(t){this._=null,this.matchedText="",this.offset=0,this.tagBuilder=t.tagBuilder,this.matchedText=t.matchedText,this.offset=t.offset}return e.prototype.getMatchedText=function(){return this.matchedText},e.prototype.setOffset=function(t){this.offset=t},e.prototype.getOffset=function(){return this.offset},e.prototype.getCssClassSuffixes=function(){return[this.type]},e.prototype.buildTag=function(){return this.tagBuilder.build(this)},e}();function fpe(e){return e>=0&&e<=31||e==127}function Qp(e){return e>=65&&e<=90||e>=97&&e<=122}function Ms(e){return e>=48&&e<=57}function TU(e){return e==34||e==39}function dy(e){return e<8232?e<160?e>=9&&e<=13||e==32:e<5760?e==160:e==5760||e>=8192&&e<=8202:e<8287?e>=8232&&e<=8233||e==8239:e<12288?e==8287:e==12288||e==65279}function xh(e){return e<4800?e<2949?e<2451?e<1425?e<768?e<192?e<169?e<65?e>=48&&e<=57:e>=65&&e<=90||e>=97&&e<=122:e<181?e>=169&&e<=170||e==174:e==181||e==186:e<710?e<216?e>=192&&e<=214:e>=216&&e<=246||e>=248&&e<=705:e<748?e>=710&&e<=721||e>=736&&e<=740:e==748||e==750:e<910?e<895?e<886?e>=768&&e<=884:e>=886&&e<=887||e>=890&&e<=893:e<904?e==895||e==902:e>=904&&e<=906||e==908:e<1155?e<931?e>=910&&e<=929:e>=931&&e<=1013||e>=1015&&e<=1153:e<1369?e>=1155&&e<=1327||e>=1329&&e<=1366:e==1369||e>=1377&&e<=1415:e<1808?e<1552?e<1476?e<1471?e>=1425&&e<=1469:e==1471||e>=1473&&e<=1474:e<1488?e>=1476&&e<=1477||e==1479:e>=1488&&e<=1514||e>=1520&&e<=1522:e<1749?e<1568?e>=1552&&e<=1562:e>=1568&&e<=1641||e>=1646&&e<=1747:e<1770?e>=1749&&e<=1756||e>=1759&&e<=1768:e>=1770&&e<=1788||e==1791:e<2230?e<2042?e<1869?e>=1808&&e<=1866:e>=1869&&e<=1969||e>=1984&&e<=2037:e<2112?e==2042||e>=2048&&e<=2093:e>=2112&&e<=2139||e>=2208&&e<=2228:e<2406?e<2260?e>=2230&&e<=2237:e>=2260&&e<=2273||e>=2275&&e<=2403:e<2437?e>=2406&&e<=2415||e>=2417&&e<=2435:e>=2437&&e<=2444||e>=2447&&e<=2448:e<2693?e<2579?e<2519?e<2486?e<2474?e>=2451&&e<=2472:e>=2474&&e<=2480||e==2482:e<2503?e>=2486&&e<=2489||e>=2492&&e<=2500:e>=2503&&e<=2504||e>=2507&&e<=2510:e<2534?e<2524?e==2519:e>=2524&&e<=2525||e>=2527&&e<=2531:e<2565?e>=2534&&e<=2545||e>=2561&&e<=2563:e>=2565&&e<=2570||e>=2575&&e<=2576:e<2631?e<2613?e<2602?e>=2579&&e<=2600:e>=2602&&e<=2608||e>=2610&&e<=2611:e<2620?e>=2613&&e<=2614||e>=2616&&e<=2617:e==2620||e>=2622&&e<=2626:e<2649?e<2635?e>=2631&&e<=2632:e>=2635&&e<=2637||e==2641:e<2662?e>=2649&&e<=2652||e==2654:e>=2662&&e<=2677||e>=2689&&e<=2691:e<2821?e<2759?e<2730?e<2703?e>=2693&&e<=2701:e>=2703&&e<=2705||e>=2707&&e<=2728:e<2741?e>=2730&&e<=2736||e>=2738&&e<=2739:e>=2741&&e<=2745||e>=2748&&e<=2757:e<2784?e<2763?e>=2759&&e<=2761:e>=2763&&e<=2765||e==2768:e<2809?e>=2784&&e<=2787||e>=2790&&e<=2799:e==2809||e>=2817&&e<=2819:e<2887?e<2858?e<2831?e>=2821&&e<=2828:e>=2831&&e<=2832||e>=2835&&e<=2856:e<2869?e>=2858&&e<=2864||e>=2866&&e<=2867:e>=2869&&e<=2873||e>=2876&&e<=2884:e<2911?e<2902?e>=2887&&e<=2888||e>=2891&&e<=2893:e>=2902&&e<=2903||e>=2908&&e<=2909:e<2929?e>=2911&&e<=2915||e>=2918&&e<=2927:e==2929||e>=2946&&e<=2947:e<3517?e<3205?e<3046?e<2984?e<2969?e<2958?e>=2949&&e<=2954:e>=2958&&e<=2960||e>=2962&&e<=2965:e<2974?e>=2969&&e<=2970||e==2972:e>=2974&&e<=2975||e>=2979&&e<=2980:e<3014?e<2990?e>=2984&&e<=2986:e>=2990&&e<=3001||e>=3006&&e<=3010:e<3024?e>=3014&&e<=3016||e>=3018&&e<=3021:e==3024||e==3031:e<3142?e<3086?e<3072?e>=3046&&e<=3055:e>=3072&&e<=3075||e>=3077&&e<=3084:e<3114?e>=3086&&e<=3088||e>=3090&&e<=3112:e>=3114&&e<=3129||e>=3133&&e<=3140:e<3160?e<3146?e>=3142&&e<=3144:e>=3146&&e<=3149||e>=3157&&e<=3158:e<3174?e>=3160&&e<=3162||e>=3168&&e<=3171:e>=3174&&e<=3183||e>=3200&&e<=3203:e<3333?e<3274?e<3242?e<3214?e>=3205&&e<=3212:e>=3214&&e<=3216||e>=3218&&e<=3240:e<3260?e>=3242&&e<=3251||e>=3253&&e<=3257:e>=3260&&e<=3268||e>=3270&&e<=3272:e<3296?e<3285?e>=3274&&e<=3277:e>=3285&&e<=3286||e==3294:e<3313?e>=3296&&e<=3299||e>=3302&&e<=3311:e>=3313&&e<=3314||e>=3329&&e<=3331:e<3423?e<3389?e<3342?e>=3333&&e<=3340:e>=3342&&e<=3344||e>=3346&&e<=3386:e<3402?e>=3389&&e<=3396||e>=3398&&e<=3400:e>=3402&&e<=3406||e>=3412&&e<=3415:e<3458?e<3430?e>=3423&&e<=3427:e>=3430&&e<=3439||e>=3450&&e<=3455:e<3482?e>=3458&&e<=3459||e>=3461&&e<=3478:e>=3482&&e<=3505||e>=3507&&e<=3515:e<3804?e<3722?e<3570?e<3535?e<3520?e==3517:e>=3520&&e<=3526||e==3530:e<3544?e>=3535&&e<=3540||e==3542:e>=3544&&e<=3551||e>=3558&&e<=3567:e<3664?e<3585?e>=3570&&e<=3571:e>=3585&&e<=3642||e>=3648&&e<=3662:e<3716?e>=3664&&e<=3673||e>=3713&&e<=3714:e==3716||e>=3719&&e<=3720:e<3754?e<3737?e<3725?e==3722:e==3725||e>=3732&&e<=3735:e<3749?e>=3737&&e<=3743||e>=3745&&e<=3747:e==3749||e==3751:e<3776?e<3757?e>=3754&&e<=3755:e>=3757&&e<=3769||e>=3771&&e<=3773:e<3784?e>=3776&&e<=3780||e==3782:e>=3784&&e<=3789||e>=3792&&e<=3801:e<4176?e<3902?e<3872?e<3840?e>=3804&&e<=3807:e==3840||e>=3864&&e<=3865:e<3895?e>=3872&&e<=3881||e==3893:e==3895||e==3897:e<3974?e<3913?e>=3902&&e<=3911:e>=3913&&e<=3948||e>=3953&&e<=3972:e<4038?e>=3974&&e<=3991||e>=3993&&e<=4028:e==4038||e>=4096&&e<=4169:e<4688?e<4301?e<4256?e>=4176&&e<=4253:e>=4256&&e<=4293||e==4295:e<4348?e==4301||e>=4304&&e<=4346:e>=4348&&e<=4680||e>=4682&&e<=4685:e<4746?e<4698?e>=4688&&e<=4694||e==4696:e>=4698&&e<=4701||e>=4704&&e<=4744:e<4786?e>=4746&&e<=4749||e>=4752&&e<=4784:e>=4786&&e<=4789||e>=4792&&e<=4798:e<11035?e<7416?e<6176?e<5873?e<4992?e<4824?e<4802?e==4800:e>=4802&&e<=4805||e>=4808&&e<=4822:e<4888?e>=4824&&e<=4880||e>=4882&&e<=4885:e>=4888&&e<=4954||e>=4957&&e<=4959:e<5121?e<5024?e>=4992&&e<=5007:e>=5024&&e<=5109||e>=5112&&e<=5117:e<5761?e>=5121&&e<=5740||e>=5743&&e<=5759:e>=5761&&e<=5786||e>=5792&&e<=5866:e<6002?e<5920?e<5888?e>=5873&&e<=5880:e>=5888&&e<=5900||e>=5902&&e<=5908:e<5984?e>=5920&&e<=5940||e>=5952&&e<=5971:e>=5984&&e<=5996||e>=5998&&e<=6e3:e<6108?e<6016?e>=6002&&e<=6003:e>=6016&&e<=6099||e==6103:e<6155?e>=6108&&e<=6109||e>=6112&&e<=6121:e>=6155&&e<=6157||e>=6160&&e<=6169:e<6783?e<6512?e<6400?e<6272?e>=6176&&e<=6263:e>=6272&&e<=6314||e>=6320&&e<=6389:e<6448?e>=6400&&e<=6430||e>=6432&&e<=6443:e>=6448&&e<=6459||e>=6470&&e<=6509:e<6608?e<6528?e>=6512&&e<=6516:e>=6528&&e<=6571||e>=6576&&e<=6601:e<6688?e>=6608&&e<=6617||e>=6656&&e<=6683:e>=6688&&e<=6750||e>=6752&&e<=6780:e<7040?e<6832?e<6800?e>=6783&&e<=6793:e>=6800&&e<=6809||e==6823:e<6992?e>=6832&&e<=6846||e>=6912&&e<=6987:e>=6992&&e<=7001||e>=7019&&e<=7027:e<7245?e<7168?e>=7040&&e<=7155:e>=7168&&e<=7223||e>=7232&&e<=7241:e<7376?e>=7245&&e<=7293||e>=7296&&e<=7304:e>=7376&&e<=7378||e>=7380&&e<=7414:e<8450?e<8130?e<8025?e<7960?e<7424?e>=7416&&e<=7417:e>=7424&&e<=7669||e>=7675&&e<=7957:e<8008?e>=7960&&e<=7965||e>=7968&&e<=8005:e>=8008&&e<=8013||e>=8016&&e<=8023:e<8031?e<8027?e==8025:e==8027||e==8029:e<8118?e>=8031&&e<=8061||e>=8064&&e<=8116:e>=8118&&e<=8124||e==8126:e<8205?e<8150?e<8134?e>=8130&&e<=8132:e>=8134&&e<=8140||e>=8144&&e<=8147:e<8178?e>=8150&&e<=8155||e>=8160&&e<=8172:e>=8178&&e<=8180||e>=8182&&e<=8188:e<8305?e<8252?e==8205:e==8252||e==8265:e<8336?e==8305||e==8319:e>=8336&&e<=8348||e>=8400&&e<=8432:e<8579?e<8486?e<8469?e<8455?e==8450:e==8455||e>=8458&&e<=8467:e<8482?e==8469||e>=8473&&e<=8477:e==8482||e==8484:e<8495?e<8488?e==8486:e==8488||e>=8490&&e<=8493:e<8517?e>=8495&&e<=8505||e>=8508&&e<=8511:e>=8517&&e<=8521||e==8526:e<9410?e<9e3?e<8592?e>=8579&&e<=8580:e>=8592&&e<=8703||e>=8986&&e<=8987:e<9193?e==9e3||e==9167:e>=9193&&e<=9203||e>=9208&&e<=9210:e<9723?e<9654?e==9410||e>=9642&&e<=9643:e==9654||e==9664:e<10548?e>=9723&&e<=9726||e>=9728&&e<=10175:e>=10548&&e<=10549||e>=11013&&e<=11015:e<43259?e<12445?e<11688?e<11520?e<11264?e<11088?e>=11035&&e<=11036:e==11088||e==11093:e<11360?e>=11264&&e<=11310||e>=11312&&e<=11358:e>=11360&&e<=11492||e>=11499&&e<=11507:e<11568?e<11559?e>=11520&&e<=11557:e==11559||e==11565:e<11647?e>=11568&&e<=11623||e==11631:e>=11647&&e<=11670||e>=11680&&e<=11686:e<11744?e<11712?e<11696?e>=11688&&e<=11694:e>=11696&&e<=11702||e>=11704&&e<=11710:e<11728?e>=11712&&e<=11718||e>=11720&&e<=11726:e>=11728&&e<=11734||e>=11736&&e<=11742:e<12330?e<11823?e>=11744&&e<=11775:e==11823||e>=12293&&e<=12294:e<12353?e>=12330&&e<=12341||e>=12347&&e<=12349:e>=12353&&e<=12438||e>=12441&&e<=12442:e<42512?e<12951?e<12549?e<12449?e>=12445&&e<=12447:e>=12449&&e<=12538||e>=12540&&e<=12543:e<12704?e>=12549&&e<=12589||e>=12593&&e<=12686:e>=12704&&e<=12730||e>=12784&&e<=12799:e<19968?e<12953?e==12951:e==12953||e>=13312&&e<=19893:e<42192?e>=19968&&e<=40917||e>=40960&&e<=42124:e>=42192&&e<=42237||e>=42240&&e<=42508:e<42891?e<42623?e<42560?e>=42512&&e<=42539:e>=42560&&e<=42610||e>=42612&&e<=42621:e<42775?e>=42623&&e<=42725||e>=42736&&e<=42737:e>=42775&&e<=42783||e>=42786&&e<=42888:e<43072?e<42928?e>=42891&&e<=42926:e>=42928&&e<=42935||e>=42999&&e<=43047:e<43216?e>=43072&&e<=43123||e>=43136&&e<=43205:e>=43216&&e<=43225||e>=43232&&e<=43255:e<55243?e<43744?e<43488?e<43312?e<43261?e==43259:e==43261||e>=43264&&e<=43309:e<43392?e>=43312&&e<=43347||e>=43360&&e<=43388:e>=43392&&e<=43456||e>=43471&&e<=43481:e<43600?e<43520?e>=43488&&e<=43518:e>=43520&&e<=43574||e>=43584&&e<=43597:e<43642?e>=43600&&e<=43609||e>=43616&&e<=43638:e>=43642&&e<=43714||e>=43739&&e<=43741:e<43824?e<43785?e<43762?e>=43744&&e<=43759:e>=43762&&e<=43766||e>=43777&&e<=43782:e<43808?e>=43785&&e<=43790||e>=43793&&e<=43798:e>=43808&&e<=43814||e>=43816&&e<=43822:e<44012?e<43868?e>=43824&&e<=43866:e>=43868&&e<=43877||e>=43888&&e<=44010:e<44032?e>=44012&&e<=44013||e>=44016&&e<=44025:e>=44032&&e<=55203||e>=55216&&e<=55238:e<64848?e<64298?e<64112?e<55296?e>=55243&&e<=55291:e>=55296&&e<=57343||e>=63744&&e<=64109:e<64275?e>=64112&&e<=64217||e>=64256&&e<=64262:e>=64275&&e<=64279||e>=64285&&e<=64296:e<64320?e<64312?e>=64298&&e<=64310:e>=64312&&e<=64316||e==64318:e<64326?e>=64320&&e<=64321||e>=64323&&e<=64324:e>=64326&&e<=64433||e>=64467&&e<=64829:e<65296?e<65024?e<64914?e>=64848&&e<=64911:e>=64914&&e<=64967||e>=65008&&e<=65019:e<65136?e>=65024&&e<=65039||e>=65056&&e<=65071:e>=65136&&e<=65140||e>=65142&&e<=65276:e<65474?e<65345?e>=65296&&e<=65305||e>=65313&&e<=65338:e>=65345&&e<=65370||e>=65382&&e<=65470:e<65490?e>=65474&&e<=65479||e>=65482&&e<=65487:e>=65490&&e<=65495||e>=65498&&e<=65500}function dpe(e){return e<47?e<42?e==33||e>=35&&e<=39:e>=42&&e<=43||e==45:e<63?e==47||e==61:e<94?e==63:e>=94&&e<=96||e>=123&&e<=126}function hpe(e){return e<91?e<47?e>=35&&e<=43||e==45:e<61?e==47:e==61||e==64:e<95?e==91||e==93:e<123?e==95:e>=123&&e<=126||e==10003}function SU(e){return e<58?e<44?e==33:e==44||e==46:e<63?e>=58&&e<=59:e==63||e==94}function mpe(e){return e<91?e==40:e==91||e==123}function eK(e){return e<93?e==41:e==93||e==125}var Ape=/^(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|travelersinsurance|vermögensberatung|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbah1a3hjkrd|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--mgbcpq6gpa1a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbc0a9azcg|xn--nqv7fs00ema|americanfamily|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq480n2rg|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|wolterskluwer|xn--cckwcxetd|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--4dbrk0ce|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nextdirect|properties|protection|prudential|realestate|republican|restaurant|schaeffler|tatamotors|technology|university|vlaanderen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--q7ce6a|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|institute|insurance|kuokgroup|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|pramerica|richardli|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--qxa6a|xn--tckwe|xn--vhquv|yodobashi|موريتانيا|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|builders|business|capetown|catering|catholic|cipriani|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|mckinsey|memorial|merckmsd|mortgage|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|softbank|software|stcgroup|supplies|training|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|banamex|bauhaus|bestbuy|booking|brother|capital|caravan|careers|channel|charity|chintai|citadel|clubmed|college|cologne|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hotmail|hyundai|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lanxess|lasalle|latrobe|leclerc|limited|lincoln|markets|monster|netbank|netflix|network|neustar|okinawa|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|singles|staples|storage|support|surgery|systems|temasek|theater|theatre|tickets|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|yamaxun|youtube|zuerich|католик|البحرين|الجزائر|العليان|پاکستان|كاثوليك|இந்தியா|abbott|abbvie|africa|agency|airbus|airtel|alipay|alsace|alstom|amazon|anquan|aramco|author|bayern|beauty|berlin|bharti|bostik|boston|broker|camera|career|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kindle|kosher|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|monash|mormon|moscow|museum|nagoya|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|pictet|quebec|racing|realty|reisen|repair|report|review|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|walter|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dance|deals|delta|drive|dubai|earth|edeka|email|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|irish|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|loans|locus|lotte|lotto|mango|media|miami|money|movie|music|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|ישראל|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|aero|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|dvag|erni|fage|fail|fans|farm|fast|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kids|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|read|reit|rent|rest|rich|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scot|seat|seek|sexy|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|アマゾン|グーグル|クラウド|ポイント|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|ceo|cfa|cfd|com|cpa|crs|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gay|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|llp|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|scb|sew|sex|sfr|ski|sky|soy|spa|srl|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ລາວ|ストア|セール|みんな|中文网|亚马逊|天主教|我爱你|新加坡|淡马锡|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|ευ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|广东|微博|慈善|手机|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)$/;var tK=/https?:\/\//i,ppe=new RegExp("^"+tK.source,"i"),wot=/^(javascript|vbscript):/i,Bot=/^[A-Za-z][-.+A-Za-z0-9]*:(\/\/)?([^:/]*)/,Dot=/^(?:\/\/)?([^/#?:]+)/,lT=Qp;function nK(e){return Qp(e)||Ms(e)||e===43||e===45||e===46}var kp=xh;function wU(e){return e===95||kp(e)}function iK(e){return xh(e)||hpe(e)||SU(e)}function BU(e){return e===47||e===63||e===35}function oK(e){return Ape.test(e.toLowerCase())}function gpe(e){if(wot.test(e))return!1;var t=e.match(Bot);if(!t)return!1;var n=!!t[1],i=t[2];return n?!0:!(i.indexOf(".")===-1||!/[A-Za-z]/.test(i))}function _pe(e){var t=e.match(Dot);if(!t)return!1;var n=t[0],i=n.split(".");if(i.length<2)return!1;var o=i[i.length-1];return!!oK(o)}var vot=/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,Pot=/[:/?#]/;function ype(e){var t=e.split(Pot,1)[0];return vot.test(t)}var Rot=/^(https?:\/\/)?(?:www\.)?/i,Mot=/^\/\//,Cpe=function(e){$m(t,e);function t(n){var i=e.call(this,n)||this;return i.type="url",i.url="",i.urlMatchType="scheme",i.protocolRelativeMatch=!1,i.stripPrefix={scheme:!0,www:!0},i.stripTrailingSlash=!0,i.decodePercentEncoding=!0,i.protocolPrepended=!1,i.urlMatchType=n.urlMatchType,i.url=n.url,i.protocolRelativeMatch=n.protocolRelativeMatch,i.stripPrefix=n.stripPrefix,i.stripTrailingSlash=n.stripTrailingSlash,i.decodePercentEncoding=n.decodePercentEncoding,i}return t.prototype.getType=function(){return"url"},t.prototype.getUrlMatchType=function(){return this.urlMatchType},t.prototype.getUrl=function(){var n=this.url;return!this.protocolRelativeMatch&&this.urlMatchType!=="scheme"&&!this.protocolPrepended&&(n=this.url="http://"+n,this.protocolPrepended=!0),n},t.prototype.getAnchorHref=function(){var n=this.getUrl();return n.replace(/&/g,"&")},t.prototype.getAnchorText=function(){var n=this.getMatchedText();return this.protocolRelativeMatch&&(n=Oot(n)),this.stripPrefix.scheme&&(n=Not(n)),this.stripPrefix.www&&(n=Lot(n)),this.stripTrailingSlash&&(n=Fot(n)),this.decodePercentEncoding&&(n=Qot(n)),n},t}(eA);function Not(e){return e.replace(ppe,"")}function Lot(e){return e.includes("www.")?e.replace(Rot,"$1"):e}function Oot(e){return e.replace(Mot,"")}function Fot(e){return e.charAt(e.length-1)==="/"&&(e=e.slice(0,-1)),e}function Qot(e){var t=e.replace(/%(?:22|26|27|3C|3E)/gi,function(n){return n==="%22"?""":n==="%26"?"&":n==="%27"?"'":n==="%3C"||n==="%3c"?"<":">"});if(t.includes("%"))try{return decodeURIComponent(t)}catch{}return t}var Epe=/^mailto:/i,rK=xh;function DU(e){return rK(e)||dpe(e)}function Ipe(e){var t=e.split(".").pop();return oK(t)}var xpe=function(e){$m(t,e);function t(n){var i=e.call(this,n)||this;return i.type="email",i.email="",i.email=n.email,i}return t.prototype.getType=function(){return"email"},t.prototype.getEmail=function(){return this.email},t.prototype.getAnchorHref=function(){return"mailto:"+this.email},t.prototype.getAnchorText=function(){return this.email},t}(eA);function sK(e){return e===95||xh(e)}function bpe(e){return e.length<=140}var Tpe=["twitter","facebook","instagram","tiktok","youtube"];var Spe=function(e){$m(t,e);function t(n){var i=e.call(this,n)||this;return i.type="hashtag",i.serviceName="twitter",i.hashtag="",i.serviceName=n.serviceName,i.hashtag=n.hashtag,i}return t.prototype.getType=function(){return"hashtag"},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getHashtag=function(){return this.hashtag},t.prototype.getAnchorHref=function(){var n=this.serviceName,i=this.hashtag;switch(n){case"twitter":return"https://twitter.com/hashtag/"+i;case"facebook":return"https://www.facebook.com/hashtag/"+i;case"instagram":return"https://instagram.com/explore/tags/"+i;case"tiktok":return"https://www.tiktok.com/tag/"+i;case"youtube":return"https://youtube.com/hashtag/"+i;default:Ih(n)}},t.prototype.getAnchorText=function(){return"#"+this.hashtag},t.prototype.getCssClassSuffixes=function(){var n=e.prototype.getCssClassSuffixes.call(this),i=this.getServiceName();return i&&n.push(i),n},t}(eA);var kot={twitter:/^@\w{1,15}$/,instagram:/^@[_\w]{1,30}$/,soundcloud:/^@[-a-z0-9_]{3,25}$/,tiktok:/^@[.\w]{1,23}[\w]$/,youtube:/^@[-.·\w]{3,30}$/};function aK(e){return e===45||e===46||e===95||Qp(e)||Ms(e)}function wpe(e,t){var n=kot[t];return n.test(e)}var Bpe=["twitter","instagram","soundcloud","tiktok","youtube"];var Dpe=function(e){$m(t,e);function t(n){var i=e.call(this,n)||this;return i.type="mention",i.serviceName="twitter",i.mention="",i.mention=n.mention,i.serviceName=n.serviceName,i}return t.prototype.getType=function(){return"mention"},t.prototype.getMention=function(){return this.mention},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getAnchorHref=function(){switch(this.serviceName){case"twitter":return"https://twitter.com/"+this.mention;case"instagram":return"https://instagram.com/"+this.mention;case"soundcloud":return"https://soundcloud.com/"+this.mention;case"tiktok":return"https://www.tiktok.com/@"+this.mention;case"youtube":return"https://youtube.com/@"+this.mention;default:Ih(this.serviceName)}},t.prototype.getAnchorText=function(){return"@"+this.mention},t.prototype.getCssClassSuffixes=function(){var n=e.prototype.getCssClassSuffixes.call(this),i=this.getServiceName();return i&&n.push(i),n},t}(eA);var Uot=/[-. ()]/,Got=/(?:(?:(?:(\+)?\d{1,3}[-. ]?)?\(?\d{3}\)?[-. ]?\d{3}[-. ]?\d{4})|(?:(\+)(?:9[976]\d|8[987530]\d|6[987]\d|5[90]\d|42\d|3[875]\d|2[98654321]\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-. ]?(?:\d[-. ]?){6,12}\d+))([,;]+[0-9]+#?)*/,zot=/(0([1-9]-?[1-9]\d{3}|[1-9]{2}-?\d{3}|[1-9]{2}\d{1}-?\d{2}|[1-9]{2}\d{2}-?\d{1})-?\d{4}|0[789]0-?\d{4}-?\d{4}|050-?\d{4}-?\d{4})/,Vot=new RegExp("^".concat(Got.source,"|").concat(zot.source,"$"));function cK(e){return e===45||e===46||e===32}function vU(e){return e===44||e===59}function vpe(e){var t=e.charAt(0)==="+"||Uot.test(e);return t&&Vot.test(e)}var Ppe=function(e){$m(t,e);function t(n){var i=e.call(this,n)||this;return i.type="phone",i.number="",i.plusSign=!1,i.number=n.number,i.plusSign=n.plusSign,i}return t.prototype.getType=function(){return"phone"},t.prototype.getPhoneNumber=function(){return this.number},t.prototype.getNumber=function(){return this.getPhoneNumber()},t.prototype.getAnchorHref=function(){return"tel:"+(this.plusSign?"+":"")+this.number},t.prototype.getAnchorText=function(){return this.matchedText},t}(eA);var Hot=function(){function e(t,n){this.charIdx=0,this.matches=[],this._stateMachines=[],this.schemeUrlMachinesCount=0,this.text=t,this.tagBuilder=n.tagBuilder,this.stripPrefix=n.stripPrefix,this.stripTrailingSlash=n.stripTrailingSlash,this.decodePercentEncoding=n.decodePercentEncoding,this.hashtagServiceName=n.hashtagServiceName,this.mentionServiceName=n.mentionServiceName}return Object.defineProperty(e.prototype,"stateMachines",{get:function(){return this._stateMachines},enumerable:!1,configurable:!0}),e.prototype.addMachine=function(t){this._stateMachines.push(t),Mpe(t)&&this.schemeUrlMachinesCount++},e.prototype.removeMachine=function(t){this._stateMachines=this._stateMachines.filter(function(n){return n!==t}),Mpe(t)&&this.schemeUrlMachinesCount--},e.prototype.hasSchemeUrlMachine=function(){return this.schemeUrlMachinesCount>0},e}();function Npe(e,t){for(var n=new Hot(e,t);n.charIdx<n.text.length;n.charIdx++){var i=e.charAt(n.charIdx),o=e.charCodeAt(n.charIdx);if(n.stateMachines.length===0)PU(n,i,o);else{for(var r=n.stateMachines.length-1;r>=0;r--){var s=n.stateMachines[r];switch(s.state){case 11:Xot(n,s,o);break;case 12:Jot(n,s,o);break;case 0:Wot(n,s,o);break;case 1:jot(n,s,o);break;case 2:Yot(n,s,o);break;case 3:qot(n,s,o);break;case 4:Kot(n,s,i,o);break;case 5:Zot(n,s,o);break;case 6:$ot(n,s,i,o);break;case 7:ert(n,s,i,o);break;case 13:trt(n,s,o);break;case 14:nrt(n,s,o);break;case 8:irt(n,s,o);break;case 9:ort(n,s,o);break;case 10:rrt(n,s,o);break;case 15:srt(n,s,i,o);break;case 16:art(n,s,i,o);break;case 17:crt(n,s,i,o);break;case 18:lrt(n,s,i,o);break;case 19:urt(n,s,i,o);break;case 20:frt(n,s,o);break;case 21:drt(n,s,o);break;case 22:UE(n,s,o);break;case 23:hrt(n,s,o);break;case 24:mrt(n,s,o);break;case 25:Art(n,s,o);break;case 26:prt(n,s,o);break;case 27:grt(n,s,o);break;case 28:_rt(n,s,o);break;case 29:yrt(n,s,o);break;case 30:Crt(n,s,o);break;case 31:Ert(n,s,o);break;case 32:xrt(n,s,i,o);break;case 33:brt(n,s,o);break;case 34:Trt(n,s,o);break;case 35:Srt(n,s,o);break;case 36:wrt(n,s,i,o);break;case 37:Irt(n,s,i,o);break;case 38:Brt(n,s,i,o);break;case 39:Drt(n,s,i,o);break;case 40:vrt(n,s,o);break;case 41:Prt(n,s,o);break;default:Ih(s.state)}}if(!n.hasSchemeUrlMachine()&&n.charIdx>0&&lT(o)){var a=n.text.charCodeAt(n.charIdx-1);lT(a)||n.addMachine(RU(n.charIdx,0))}}}for(var c=n.stateMachines.length-1;c>=0;c--)n.stateMachines.forEach(function(u){return ns(n,u)});return n.matches}function PU(e,t,n){var i=e.charIdx;if(n===35)e.addMachine(Ort(i,28));else if(n===64)e.addMachine(Frt(i,30));else if(n===47)e.addMachine(uK(i,11));else if(n===43)e.addMachine(lK(i,37));else if(n===40)e.addMachine(lK(i,32));else{if(Ms(n)&&(e.addMachine(lK(i,38)),e.addMachine(Nrt(i,13))),rK(n)){var o=t.toLowerCase()==="m"?15:22;e.addMachine(Lrt(i,o))}lT(n)&&e.addMachine(RU(i,0)),xh(n)&&e.addMachine(uK(i,5))}}function Wot(e,t,n){n===58?t.state=2:n===45?t.state=1:nK(n)||e.removeMachine(t)}function jot(e,t,n){var i=e.charIdx;n===45||(n===47?(e.removeMachine(t),e.addMachine(uK(i,11))):nK(n)?t.state=0:e.removeMachine(t))}function Yot(e,t,n){var i=e.charIdx;n===47?t.state=3:n===46?e.removeMachine(t):kp(n)?(t.state=5,lT(n)&&e.addMachine(RU(i,0))):e.removeMachine(t)}function qot(e,t,n){n===47?t.state=4:iK(n)?(t.state=10,t.acceptStateReached=!0):ns(e,t)}function Kot(e,t,n,i){i===47?(t.state=10,t.acceptStateReached=!0):kp(i)?(t.state=5,t.acceptStateReached=!0):e.removeMachine(t)}function Xot(e,t,n){n===47?t.state=12:e.removeMachine(t)}function Jot(e,t,n){kp(n)?t.state=5:e.removeMachine(t)}function Zot(e,t,n){n===46?t.state=7:n===45?t.state=6:n===58?t.state=8:BU(n)?t.state=10:wU(n)||ns(e,t)}function $ot(e,t,n,i){i===45||(i===46?ns(e,t):kp(i)?t.state=5:ns(e,t))}function ert(e,t,n,i){i===46?ns(e,t):kp(i)?(t.state=5,t.acceptStateReached=!0):ns(e,t)}function trt(e,t,n){n===46?t.state=14:n===58?t.state=8:Ms(n)||(BU(n)?t.state=10:xh(n)?e.removeMachine(t):ns(e,t))}function nrt(e,t,n){Ms(n)?(t.octetsEncountered++,t.octetsEncountered===4&&(t.acceptStateReached=!0),t.state=13):ns(e,t)}function irt(e,t,n){Ms(n)?t.state=9:ns(e,t)}function ort(e,t,n){Ms(n)||(BU(n)?t.state=10:ns(e,t))}function rrt(e,t,n){iK(n)||ns(e,t)}function srt(e,t,n,i){n.toLowerCase()==="a"?t.state=16:UE(e,t,i)}function art(e,t,n,i){n.toLowerCase()==="i"?t.state=17:UE(e,t,i)}function crt(e,t,n,i){n.toLowerCase()==="l"?t.state=18:UE(e,t,i)}function lrt(e,t,n,i){n.toLowerCase()==="t"?t.state=19:UE(e,t,i)}function urt(e,t,n,i){n.toLowerCase()==="o"?t.state=20:UE(e,t,i)}function frt(e,t,n){n===58?t.state=21:UE(e,t,n)}function drt(e,t,n){DU(n)?t.state=22:e.removeMachine(t)}function UE(e,t,n){n===46?t.state=23:n===64?t.state=24:DU(n)?t.state=22:e.removeMachine(t)}function hrt(e,t,n){n===46||n===64?e.removeMachine(t):DU(n)?t.state=22:e.removeMachine(t)}function mrt(e,t,n){kp(n)?t.state=25:e.removeMachine(t)}function Art(e,t,n){n===46?t.state=27:n===45?t.state=26:wU(n)||ns(e,t)}function prt(e,t,n){n===45||n===46?ns(e,t):wU(n)?t.state=25:ns(e,t)}function grt(e,t,n){n===46||n===45?ns(e,t):kp(n)?(t.state=25,t.acceptStateReached=!0):ns(e,t)}function _rt(e,t,n){sK(n)?(t.state=29,t.acceptStateReached=!0):e.removeMachine(t)}function yrt(e,t,n){sK(n)||ns(e,t)}function Crt(e,t,n){aK(n)?(t.state=31,t.acceptStateReached=!0):e.removeMachine(t)}function Ert(e,t,n){aK(n)||(xh(n)?e.removeMachine(t):ns(e,t))}function Irt(e,t,n,i){Ms(i)?t.state=38:(e.removeMachine(t),PU(e,n,i))}function xrt(e,t,n,i){Ms(i)?t.state=33:e.removeMachine(t),PU(e,n,i)}function brt(e,t,n){Ms(n)?t.state=34:e.removeMachine(t)}function Trt(e,t,n){Ms(n)?t.state=35:e.removeMachine(t)}function Srt(e,t,n){n===41?t.state=36:e.removeMachine(t)}function wrt(e,t,n,i){Ms(i)?t.state=38:cK(i)?t.state=39:e.removeMachine(t)}function Brt(e,t,n,i){var o=e.charIdx;t.acceptStateReached=!0,vU(i)?t.state=40:i===35?t.state=41:Ms(i)||(i===40?t.state=32:cK(i)?t.state=39:(ns(e,t),lT(i)&&e.addMachine(RU(o,0))))}function Drt(e,t,n,i){Ms(i)?t.state=38:i===40?t.state=32:(ns(e,t),PU(e,n,i))}function vrt(e,t,n){vU(n)||(n===35?t.state=41:Ms(n)?t.state=38:ns(e,t))}function Prt(e,t,n){vU(n)?t.state=40:Ms(n)?e.removeMachine(t):ns(e,t)}function ns(e,t){var n=e.matches,i=e.text,o=e.charIdx,r=e.tagBuilder,s=e.stripPrefix,a=e.stripTrailingSlash,c=e.decodePercentEncoding,u=e.hashtagServiceName,f=e.mentionServiceName;if(e.removeMachine(t),!!t.acceptStateReached){var h=t.startIdx,A=i.slice(t.startIdx,o);switch(A=Mrt(A),t.type){case 0:{var g=i.charCodeAt(t.startIdx-1);if(g===64)return;switch(t.matchType){case 0:{var m=tK.exec(A);if(m&&(h=h+m.index,A=A.slice(m.index)),!gpe(A))return;break}case 1:{if(!_pe(A))return;break}case 2:{if(!ype(A))return;break}default:Ih(t)}n.push(new Cpe({tagBuilder:r,matchedText:A,offset:h,urlMatchType:Rrt(t.matchType),url:A,protocolRelativeMatch:A.slice(0,2)==="//",stripPrefix:s,stripTrailingSlash:a,decodePercentEncoding:c}));break}case 1:{Ipe(A)&&n.push(new xpe({tagBuilder:r,matchedText:A,offset:h,email:A.replace(Epe,"")}));break}case 2:{bpe(A)&&n.push(new Spe({tagBuilder:r,matchedText:A,offset:h,serviceName:u,hashtag:A.slice(1)}));break}case 3:{wpe(A,f)&&n.push(new Dpe({tagBuilder:r,matchedText:A,offset:h,serviceName:f,mention:A.slice(1)}));break}case 4:{if(A=A.replace(/ +$/g,""),vpe(A)){var _=A.replace(/[^0-9,;#]/g,"");n.push(new Ppe({tagBuilder:r,matchedText:A,offset:h,number:_,plusSign:A.charAt(0)==="+"}))}break}default:Ih(t)}}}function Rrt(e){switch(e){case 0:return"scheme";case 1:return"tld";case 2:return"ipV4";default:Ih(e)}}var Rpe={")":"(","}":"{","]":"["};function Mrt(e){for(var t={"(":0,"{":0,"[":0},n=0;n<e.length;n++){var i=e.charAt(n),o=e.charCodeAt(n);mpe(o)?t[i]++:eK(o)&&t[Rpe[i]]--}for(var r=e.length-1;r>=0;){var i=e.charAt(r),o=e.charCodeAt(r);if(eK(o)){var s=Rpe[i];if(t[s]<0)t[s]++,r--;else break}else if(SU(o))r--;else break}return e.slice(0,r+1)}function RU(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:0}}function uK(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:1}}function Nrt(e,t){return{type:0,startIdx:e,state:t,acceptStateReached:!1,matchType:2,octetsEncountered:1}}function Lrt(e,t){return{type:1,startIdx:e,state:t,acceptStateReached:!1}}function Ort(e,t){return{type:2,startIdx:e,state:t,acceptStateReached:!1}}function Frt(e,t){return{type:3,startIdx:e,state:t,acceptStateReached:!1}}function lK(e,t){return{type:4,startIdx:e,state:t,acceptStateReached:!1}}function Mpe(e){return e.type===0&&e.matchType===0}var tA=function(){function e(t){t===void 0&&(t={}),this.idx=t.idx!==void 0?t.idx:-1,this.type=t.type||"tag",this.name=t.name||"",this.isOpening=!!t.isOpening,this.isClosing=!!t.isClosing}return e}(),dK=new tA,Qrt=function(){function e(t,n){this.charIdx=0,this.state=0,this.currentDataIdx=0,this.currentTag=dK,this.html=t,this.callbacks=n}return e}();function Lpe(e,t){for(var n=new Qrt(e,t),i=e.length;n.charIdx<i;){var o=e.charAt(n.charIdx),r=e.charCodeAt(n.charIdx);switch(n.state){case 0:krt(n,o);break;case 1:Urt(n,o,r);break;case 2:zrt(n,o,r);break;case 3:Grt(n,o,r);break;case 4:Vrt(n,o,r);break;case 5:Hrt(n,o,r);break;case 6:Wrt(n,o,r);break;case 7:jrt(n,o,r);break;case 8:Yrt(n,o);break;case 9:qrt(n,o);break;case 10:Krt(n,o,r);break;case 11:Xrt(n,o,r);break;case 12:Jrt(n,o);break;case 13:Zrt(n);break;case 14:$rt(n,o);break;case 15:est(n,o);break;case 16:tst(n,o);break;case 17:nst(n,o);break;case 18:ist(n,o);break;case 19:ost(n,o);break;case 20:rst(n,o);break;default:Ih(n.state)}n.charIdx++}n.currentDataIdx<n.charIdx&&sst(n)}function krt(e,t){t==="<"&&nA(e)}function Urt(e,t,n){t==="!"?e.state=13:t==="/"?(e.state=2,e.currentTag=new tA(Rs(Rs({},e.currentTag),{isClosing:!0}))):t==="<"?nA(e):Qp(n)?(e.state=3,e.currentTag=new tA(Rs(Rs({},e.currentTag),{isOpening:!0}))):(e.state=0,e.currentTag=dK)}function Grt(e,t,n){dy(n)?(e.currentTag=new tA(Rs(Rs({},e.currentTag),{name:fK(e)})),e.state=4):t==="<"?nA(e):t==="/"?(e.currentTag=new tA(Rs(Rs({},e.currentTag),{name:fK(e)})),e.state=12):t===">"?(e.currentTag=new tA(Rs(Rs({},e.currentTag),{name:fK(e)})),iA(e)):!Qp(n)&&!Ms(n)&&t!==":"&&fd(e)}function zrt(e,t,n){t===">"?fd(e):Qp(n)?e.state=3:fd(e)}function Vrt(e,t,n){dy(n)||(t==="/"?e.state=12:t===">"?iA(e):t==="<"?nA(e):t==="="||TU(n)||fpe(n)?fd(e):e.state=5)}function Hrt(e,t,n){dy(n)?e.state=6:t==="/"?e.state=12:t==="="?e.state=7:t===">"?iA(e):t==="<"?nA(e):TU(n)&&fd(e)}function Wrt(e,t,n){dy(n)||(t==="/"?e.state=12:t==="="?e.state=7:t===">"?iA(e):t==="<"?nA(e):TU(n)?fd(e):e.state=5)}function jrt(e,t,n){dy(n)||(t==='"'?e.state=8:t==="'"?e.state=9:/[>=`]/.test(t)?fd(e):t==="<"?nA(e):e.state=10)}function Yrt(e,t){t==='"'&&(e.state=11)}function qrt(e,t){t==="'"&&(e.state=11)}function Krt(e,t,n){dy(n)?e.state=4:t===">"?iA(e):t==="<"&&nA(e)}function Xrt(e,t,n){dy(n)?e.state=4:t==="/"?e.state=12:t===">"?iA(e):t==="<"?nA(e):(e.state=4,ast(e))}function Jrt(e,t){t===">"?(e.currentTag=new tA(Rs(Rs({},e.currentTag),{isClosing:!0})),iA(e)):fd(e)}function Zrt(e){var t=e.html,n=e.charIdx;t.slice(n,n+2)==="--"?(e.charIdx++,e.currentTag=new tA(Rs(Rs({},e.currentTag),{type:"comment"})),e.state=14):t.slice(n,n+7).toUpperCase()==="DOCTYPE"?(e.charIdx+=6,e.currentTag=new tA(Rs(Rs({},e.currentTag),{type:"doctype"})),e.state=20):fd(e)}function $rt(e,t){t==="-"?e.state=15:t===">"?fd(e):e.state=16}function est(e,t){t==="-"?e.state=18:t===">"?fd(e):e.state=16}function tst(e,t){t==="-"&&(e.state=17)}function nst(e,t){t==="-"?e.state=18:e.state=16}function ist(e,t){t===">"?iA(e):t==="!"?e.state=19:t==="-"||(e.state=16)}function ost(e,t){t==="-"?e.state=17:t===">"?iA(e):e.state=16}function rst(e,t){t===">"?iA(e):t==="<"&&nA(e)}function fd(e){e.state=0,e.currentTag=dK}function nA(e){e.state=1,e.currentTag=new tA({idx:e.charIdx})}function iA(e){var t=e.html.slice(e.currentDataIdx,e.currentTag.idx);t&&e.callbacks.onText(t,e.currentDataIdx);var n=e.currentTag;n.type==="comment"?e.callbacks.onComment(n.idx):n.type==="doctype"?e.callbacks.onDoctype(n.idx):(n.isOpening&&e.callbacks.onOpenTag(n.name,n.idx),n.isClosing&&e.callbacks.onCloseTag(n.name,n.idx)),fd(e),e.currentDataIdx=e.charIdx+1}function sst(e){var t=e.html.slice(e.currentDataIdx,e.charIdx);e.callbacks.onText(t,e.currentDataIdx),e.currentDataIdx=e.charIdx+1}function fK(e){var t=e.currentTag.idx+(e.currentTag.isClosing?2:1);return e.html.slice(t,e.charIdx).toLowerCase()}function ast(e){e.charIdx--}var cst=function(){function e(t){t===void 0&&(t={}),this.version=e.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:"end"},this.className="",this.replaceFn=null,this.context=void 0,this.sanitizeHtml=!1,this.tagBuilder=null,this.urls=lst(t.urls),this.email=Vu(t.email)?t.email:this.email,this.phone=Vu(t.phone)?t.phone:this.phone,this.hashtag=t.hashtag||this.hashtag,this.mention=t.mention||this.mention,this.newWindow=Vu(t.newWindow)?t.newWindow:this.newWindow,this.stripPrefix=ust(t.stripPrefix),this.stripTrailingSlash=Vu(t.stripTrailingSlash)?t.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding=Vu(t.decodePercentEncoding)?t.decodePercentEncoding:this.decodePercentEncoding,this.sanitizeHtml=t.sanitizeHtml||!1;var n=this.mention;if(n!==!1&&Bpe.indexOf(n)===-1)throw new Error("invalid `mention` cfg '".concat(n,"' - see docs"));var i=this.hashtag;if(i!==!1&&Tpe.indexOf(i)===-1)throw new Error("invalid `hashtag` cfg '".concat(i,"' - see docs"));this.truncate=fst(t.truncate),this.className=t.className||this.className,this.replaceFn=t.replaceFn||this.replaceFn,this.context=t.context||this}return e.link=function(t,n){var i=new e(n);return i.link(t)},e.parse=function(t,n){var i=new e(n);return i.parse(t)},e.prototype.parse=function(t){var n=this,i=["a","style","script"],o=0,r=[];return Lpe(t,{onOpenTag:function(s){i.indexOf(s)>=0&&o++},onText:function(s,a){if(o===0){var c=/( | |<|<|>|>|"|"|')/gi,u=s.split(c),f=a;u.forEach(function(h,A){if(A%2===0){var g=n.parseText(h,f);r.push.apply(r,npe([],tpe(g),!1))}f+=h.length})}},onCloseTag:function(s){i.indexOf(s)>=0&&(o=Math.max(o-1,0))},onComment:function(){},onDoctype:function(){}}),r=this.compactMatches(r),r=this.removeUnwantedMatches(r),r},e.prototype.compactMatches=function(t){t.sort(dst);for(var n=0;n<t.length-1;){var i=t[n],o=i.getOffset(),r=i.getMatchedText().length;if(n+1<t.length&&t[n+1].getOffset()===o){var s=t[n+1].getMatchedText().length>r?n:n+1;t.splice(s,1);continue}n++}return t},e.prototype.removeUnwantedMatches=function(t){return this.hashtag||fy(t,function(n){return n.getType()==="hashtag"}),this.email||fy(t,function(n){return n.getType()==="email"}),this.phone||fy(t,function(n){return n.getType()==="phone"}),this.mention||fy(t,function(n){return n.getType()==="mention"}),this.urls.schemeMatches||fy(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="scheme"}),this.urls.tldMatches||fy(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="tld"}),this.urls.ipV4Matches||fy(t,function(n){return n.getType()==="url"&&n.getUrlMatchType()==="ipV4"}),t},e.prototype.parseText=function(t,n){n=n||0;for(var i=Npe(t,{tagBuilder:this.getTagBuilder(),stripPrefix:this.stripPrefix,stripTrailingSlash:this.stripTrailingSlash,decodePercentEncoding:this.decodePercentEncoding,hashtagServiceName:this.hashtag,mentionServiceName:this.mention||"twitter"}),o=0,r=i.length;o<r;o++)i[o].setOffset(n+i[o].getOffset());return i},e.prototype.link=function(t){if(!t)return"";this.sanitizeHtml&&(t=t.replace(/</g,"<").replace(/>/g,">"));for(var n=this.parse(t),i=new Array(n.length*2+1),o=0,r=0,s=n.length;r<s;r++){var a=n[r];i.push(t.substring(o,a.getOffset())),i.push(this.createMatchReturnVal(a)),o=a.getOffset()+a.getMatchedText().length}return i.push(t.substring(o)),i.join("")},e.prototype.createMatchReturnVal=function(t){var n;if(this.replaceFn&&(n=this.replaceFn.call(this.context,t)),typeof n=="string")return n;if(n===!1)return t.getMatchedText();if(n instanceof bU)return n.toAnchorString();var i=t.buildTag();return i.toAnchorString()},e.prototype.getTagBuilder=function(){var t=this.tagBuilder;return t||(t=this.tagBuilder=new upe({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),t},e.version=ipe,e}(),Ope=cst;function lst(e){return e==null&&(e=!0),Vu(e)?{schemeMatches:e,tldMatches:e,ipV4Matches:e}:{schemeMatches:Vu(e.schemeMatches)?e.schemeMatches:!0,tldMatches:Vu(e.tldMatches)?e.tldMatches:!0,ipV4Matches:Vu(e.ipV4Matches)?e.ipV4Matches:!0}}function ust(e){return e==null&&(e=!0),Vu(e)?{scheme:e,www:e}:{scheme:Vu(e.scheme)?e.scheme:!0,www:Vu(e.www)?e.www:!0}}function fst(e){return typeof e=="number"?{length:e,location:"end"}:Rs({length:Number.POSITIVE_INFINITY,location:"end"},e)}function dst(e,t){return e.getOffset()-t.getOffset()}var MU=Ope;var Wpe;typeof DOMParser<"u"&&(Wpe=new DOMParser);var hst=new MU({stripPrefix:!1,email:!1,replaceFn:function(e,t){return t.urlMatchType==="scheme"||t.urlMatchType==="www"}}),NU=32,Fpe=2414016,Qpe=1,kpe=16093e3,Upe=.1,mst=[null,void 0,"http://www.topografix.com/GPX/1/1"],Oo={gpx:mst};function Ast(e){return new Promise((t,n)=>{let i=new FileReader;i.addEventListener("load",function(){t(i.result)}),i.addEventListener("error",function(){n(i.error)}),i.readAsText(e)})}function hK(e,t){let n=Ev(e,"id");return n=l(n)?n:Xn(),t.getOrCreateEntity(n)}function mK(e){let t=Gpe(e,"lon"),n=Gpe(e,"lat"),i=yv(e,"ele",Oo.gpx);return d.fromDegrees(t,n,i)}function Gpe(e,t){if(!l(e))return;let n=e.getAttribute(t);if(n!==null){let i=parseFloat(n);return isNaN(i)?void 0:i}}function Ev(e,t){if(!l(e))return;let n=e.getAttribute(t);return n!==null?n:void 0}function hy(e,t,n){if(!l(e))return;let i=e.childNodes,o=i.length;for(let r=0;r<o;r++){let s=i[r];if(s.localName===t&&n.indexOf(s.namespaceURI)!==-1)return s}}function AK(e,t,n){if(!l(e))return;let i=[],o=e.getElementsByTagName(t),r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function yv(e,t,n){let i=hy(e,t,n);if(l(i)){let o=parseFloat(i.textContent);return isNaN(o)?void 0:o}}function cu(e,t,n){let i=hy(e,t,n);if(l(i))return i.textContent.trim()}function jpe(e){let t=new jc;return t.width=NU,t.height=NU,t.scaleByDistance=new Yt(Fpe,Qpe,kpe,Upe),t.pixelOffsetScaleByDistance=new Yt(Fpe,Qpe,kpe,Upe),t.verticalOrigin=new ci(Wn.BOTTOM),t.image=e,t}function pst(){let e=new cm;return e.translucencyByDistance=new Yt(3e6,1,5e6,0),e.pixelOffset=new k(17,0),e.horizontalOrigin=Ri.LEFT,e.font="16px sans-serif",e.style=ar.FILL_AND_OUTLINE,e}function Ype(e){let t=new $c;return t.width=4,t.material=new TE,t.material.color=l(e)?e:G.RED,t.material.outlineWidth=2,t.material.outlineColor=G.BLACK,t}var zpe={time:{text:"Time",tag:"time"},comment:{text:"Comment",tag:"cmt"},description:{text:"Description",tag:"desc"},source:{text:"Source",tag:"src"},number:{text:"GPS track/route number",tag:"number"},type:{text:"Type",tag:"type"}},Cv;typeof document<"u"&&(Cv=document.createElement("div"));function pK(e,t){let n,i="",o=Object.keys(zpe),r=o.length;for(n=0;n<r;n++){let f=o[n],h=zpe[f];h.value=cu(e,h.tag,Oo.gpx)??"",l(h.value)&&h.value!==""&&(i=`${i}<p>${h.text}: ${h.value}</p>`)}if(!l(i)||i==="")return;i=hst.link(i),Cv.innerHTML=i;let s=Cv.querySelectorAll("a");for(n=0;n<s.length;n++)s[n].setAttribute("target","_blank");let a=G.WHITE,c=G.BLACK,u='<div class="cesium-infoBox-description-lighter" style="';return u+="overflow:auto;",u+="word-wrap:break-word;",u+=`background-color:${a.toCssColorString()};`,u+=`color:${c.toCssColorString()};`,u+='">',u+=`${Cv.innerHTML}</div>`,Cv.innerHTML="",u}function qpe(e,t,n,i){let o=mK(t),r=hK(t,n);r.position=o;let s=l(i.waypointImage)?i.waypointImage:e._pinBuilder.fromMakiIconId("marker",G.RED,NU);r.billboard=jpe(s);let a=cu(t,"name",Oo.gpx);r.name=a,r.label=pst(),r.label.text=a,r.description=pK(t,r),i.clampToGround&&(r.billboard.heightReference=Ze.CLAMP_TO_GROUND,r.label.heightReference=Ze.CLAMP_TO_GROUND)}function gst(e,t,n,i){let o=hK(t,n);o.description=pK(t,o);let r=AK(t,"rtept",Oo.gpx),s=new Array(r.length);for(let a=0;a<r.length;a++)qpe(e,r[a],n,i),s[a]=mK(r[a]);o.polyline=Ype(i.routeColor),i.clampToGround&&(o.polyline.clampToGround=!0),o.polyline.positions=s}function _st(e,t,n,i){let o=hK(t,n);o.description=pK(t,o);let r=AK(t,"trkseg",Oo.gpx),s=[],a=[],c,u=!0,f=new ic;for(let h=0;h<r.length;h++)c=yst(r[h]),s=s.concat(c.positions),c.times.length>0?(a=a.concat(c.times),f.addSamples(a,s),u=u&&!0):u=!1;if(u){let h=l(i.waypointImage)?i.waypointImage:e._pinBuilder.fromMakiIconId("marker",G.RED,NU);o.billboard=jpe(h),o.position=f,i.clampToGround&&(o.billboard.heightReference=Ze.CLAMP_TO_GROUND),o.availability=new hs,o.availability.addInterval(new Rn({start:a[0],stop:a[a.length-1]}))}o.polyline=Ype(i.trackColor),o.polyline.positions=s,i.clampToGround&&(o.polyline.clampToGround=!0)}function yst(e){let t={positions:[],times:[]},n=AK(e,"trkpt",Oo.gpx),i;for(let o=0;o<n.length;o++){let r=mK(n[o]);t.positions.push(r),i=cu(n[o],"time",Oo.gpx),l(i)&&t.times.push(K.fromIso8601(i))}return t}function Cst(e){let t=hy(e,"metadata",Oo.gpx);if(l(t)){let n={name:cu(t,"name",Oo.gpx),desc:cu(t,"desc",Oo.gpx),author:Est(t),copyright:xst(t),link:Kpe(t),time:cu(t,"time",Oo.gpx),keywords:cu(t,"keywords",Oo.gpx),bounds:bst(t)};if(l(n.name)||l(n.desc)||l(n.author)||l(n.copyright)||l(n.link)||l(n.time)||l(n.keywords)||l(n.bounds))return n}}function Est(e){let t=hy(e,"author",Oo.gpx);if(l(t)){let n={name:cu(t,"name",Oo.gpx),email:Ist(t),link:Kpe(t)};if(l(n.name)||l(n.email)||l(n.link))return n}}function Ist(e){let t=hy(e,"email",Oo.gpx);if(l(t)){let n=cu(t,"id",Oo.gpx),i=cu(t,"domain",Oo.gpx);return`${n}@${i}`}}function Kpe(e){let t=hy(e,"link",Oo.gpx);if(l(t)){let n={href:Ev(t,"href"),text:cu(t,"text",Oo.gpx),mimeType:cu(t,"type",Oo.gpx)};if(l(n.href)||l(n.text)||l(n.mimeType))return n}}function xst(e){let t=hy(e,"copyright",Oo.gpx);if(l(t)){let n={author:Ev(t,"author"),year:cu(t,"year",Oo.gpx),license:cu(t,"license",Oo.gpx)};if(l(n.author)||l(n.year)||l(n.license))return n}}function bst(e){let t=hy(e,"bounds",Oo.gpx);if(l(t)){let n={minLat:yv(t,"minlat",Oo.gpx),maxLat:yv(t,"maxlat",Oo.gpx),minLon:yv(t,"minlon",Oo.gpx),maxLon:yv(t,"maxlon",Oo.gpx)};if(l(n.minLat)||l(n.maxLat)||l(n.minLon)||l(n.maxLon))return n}}var Vpe={wpt:qpe,rte:gst,trk:_st};function Tst(e,t,n,i){let o=Object.keys(Vpe),r=o.length;for(let s=0;s<r;s++){let a=o[s],c=Vpe[a],u=t.childNodes,f=u.length;for(let h=0;h<f;h++){let A=u[h];A.localName===a&&Oo.gpx.indexOf(A.namespaceURI)!==-1&&c(e,A,n,i)}}}function Hpe(e,t,n){let i=e._entityCollection;i.removeAll();let o=t.documentElement,r=Ev(o,"version"),s=Ev(o,"creator"),a,c=Cst(o);l(c)&&(a=c.name),o.localName==="gpx"?Tst(e,o,i,n):console.log(`GPX - Unsupported node: ${o.localName}`);let u,f=i.computeAvailability(),h=f.start,A=f.stop,g=K.equals(h,je.MINIMUM_VALUE),m=K.equals(A,je.MAXIMUM_VALUE);if(!g||!m){let y;g&&(y=new Date,y.setHours(0,0,0,0),h=K.fromDate(y)),m&&(y=new Date,y.setHours(24,0,0,0),A=K.fromDate(y)),u=new Hm,u.startTime=h,u.stopTime=A,u.currentTime=K.clone(h),u.clockRange=As.LOOP_STOP,u.clockStep=vo.SYSTEM_CLOCK_MULTIPLIER,u.multiplier=Math.round(Math.min(Math.max(K.secondsDifference(A,h)/60,1),31556900))}let _=!1;return e._name!==a&&(e._name=a,_=!0),e._creator!==s&&(e._creator=s,_=!0),Sst(e._metadata,c)&&(e._metadata=c,_=!0),e._version!==r&&(e._version=r,_=!0),u!==e._clock&&(_=!0,e._clock=u),_&&e._changed.raiseEvent(e),ms.setLoading(e,!1),e}function Sst(e,t){return!l(e)&&!l(t)?!1:l(e)&&l(t)?e.name!==t.name||e.dec!==t.desc||e.src!==t.src||e.author!==t.author||e.copyright!==t.copyright||e.link!==t.link||e.time!==t.time||e.bounds!==t.bounds:!0}function wst(e,t,n,i){i=i??V.EMPTY_OBJECT;let o=n;if(typeof n=="string"||n instanceof we){n=we.createIfNeeded(n),o=n.fetchBlob();let r=e._resourceCredits,s=n.credits;if(l(s)){let a=s.length;for(let c=0;c<a;c++)r.push(s[c])}}return Promise.resolve(o).then(function(r){return r instanceof Blob?Ast(r).then(function(s){let a,c;try{a=Wpe.parseFromString(s,"application/xml")}catch(u){c=u.toString()}if(l(c)||a.body||a.documentElement.tagName==="parsererror"){let u=l(c)?c:a.documentElement.firstChild.nodeValue;throw u||(u=a.body.innerText),new ce(u)}return Hpe(e,a,i)}):Hpe(e,r,i)}).catch(function(r){return e._error.raiseEvent(e,r),console.log(r),Promise.reject(r)})}function uT(){this._changed=new _e,this._error=new _e,this._loading=new _e,this._clock=void 0,this._entityCollection=new Oa(this),this._entityCluster=new od,this._name=void 0,this._version=void 0,this._creator=void 0,this._metadata=void 0,this._isLoading=!1,this._pinBuilder=new ly}uT.load=function(e,t){return new uT().load(e,t)};Object.defineProperties(uT.prototype,{name:{get:function(){return this._name}},version:{get:function(){return this._version}},creator:{get:function(){return this._creator}},metadata:{get:function(){return this._metadata}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}}});uT.prototype.update=function(e){return!0};uT.prototype.load=function(e,t){if(!l(e))throw new me("data is required.");t=t??V.EMPTY_OBJECT,ms.setLoading(this,!0);let n=this._name,i=this;return wst(this,this._entityCollection,e,t).then(function(){let o,r=i._entityCollection.computeAvailability(),s=r.start,a=r.stop,c=K.equals(s,je.MINIMUM_VALUE),u=K.equals(a,je.MAXIMUM_VALUE);if(!c||!u){let h;c&&(h=new Date,h.setHours(0,0,0,0),s=K.fromDate(h)),u&&(h=new Date,h.setHours(24,0,0,0),a=K.fromDate(h)),o=new Hm,o.startTime=s,o.stopTime=a,o.currentTime=K.clone(s),o.clockRange=As.LOOP_STOP,o.clockStep=vo.SYSTEM_CLOCK_MULTIPLIER,o.multiplier=Math.round(Math.min(Math.max(K.secondsDifference(a,s)/60,1),31556900))}let f=!1;return o!==i._clock&&(i._clock=o,f=!0),n!==i._name&&(f=!0),f&&i._changed.raiseEvent(i),ms.setLoading(i,!1),i}).catch(function(o){return ms.setLoading(i,!1),i._error.raiseEvent(i,o),console.log(o),Promise.reject(o)})};var LU=uT;function Bst(e,t){this.position=e,this.headingPitchRoll=t}var OU=Bst;var jv=Es(_u(),1);function VU(e){return HU(e.map(([t,n])=>new Array(t).fill(n,0,t)))}function HU(e){return e.reduce((t,n)=>t.concat(Array.isArray(n)?HU(n):n),[])}var Xpe=[0,1,2,3].concat(...VU([[2,4],[2,5],[4,6],[4,7],[8,8],[8,9],[16,10],[16,11],[32,12],[32,13],[64,14],[64,15],[2,0],[1,16],[1,17],[2,18],[2,19],[4,20],[4,21],[8,22],[8,23],[16,24],[16,25],[32,26],[32,27],[64,28],[64,29]]));function Ir(){let e=this;function t(o){let r=e.dyn_tree,s=e.stat_desc.static_tree,a=e.stat_desc.extra_bits,c=e.stat_desc.extra_base,u=e.stat_desc.max_length,f,h,A,g,m,_,y=0;for(g=0;g<=15;g++)o.bl_count[g]=0;for(r[o.heap[o.heap_max]*2+1]=0,f=o.heap_max+1;f<573;f++)h=o.heap[f],g=r[r[h*2+1]*2+1]+1,g>u&&(g=u,y++),r[h*2+1]=g,!(h>e.max_code)&&(o.bl_count[g]++,m=0,h>=c&&(m=a[h-c]),_=r[h*2],o.opt_len+=_*(g+m),s&&(o.static_len+=_*(s[h*2+1]+m)));if(y!==0){do{for(g=u-1;o.bl_count[g]===0;)g--;o.bl_count[g]--,o.bl_count[g+1]+=2,o.bl_count[u]--,y-=2}while(y>0);for(g=u;g!==0;g--)for(h=o.bl_count[g];h!==0;)A=o.heap[--f],!(A>e.max_code)&&(r[A*2+1]!=g&&(o.opt_len+=(g-r[A*2+1])*r[A*2],r[A*2+1]=g),h--)}}function n(o,r){let s=0;do s|=o&1,o>>>=1,s<<=1;while(--r>0);return s>>>1}function i(o,r,s){let a=[],c=0,u,f,h;for(u=1;u<=15;u++)a[u]=c=c+s[u-1]<<1;for(f=0;f<=r;f++)h=o[f*2+1],h!==0&&(o[f*2]=n(a[h]++,h))}e.build_tree=function(o){let r=e.dyn_tree,s=e.stat_desc.static_tree,a=e.stat_desc.elems,c,u,f=-1,h;for(o.heap_len=0,o.heap_max=573,c=0;c<a;c++)r[c*2]!==0?(o.heap[++o.heap_len]=f=c,o.depth[c]=0):r[c*2+1]=0;for(;o.heap_len<2;)h=o.heap[++o.heap_len]=f<2?++f:0,r[h*2]=1,o.depth[h]=0,o.opt_len--,s&&(o.static_len-=s[h*2+1]);for(e.max_code=f,c=Math.floor(o.heap_len/2);c>=1;c--)o.pqdownheap(r,c);h=a;do c=o.heap[1],o.heap[1]=o.heap[o.heap_len--],o.pqdownheap(r,1),u=o.heap[1],o.heap[--o.heap_max]=c,o.heap[--o.heap_max]=u,r[h*2]=r[c*2]+r[u*2],o.depth[h]=Math.max(o.depth[c],o.depth[u])+1,r[c*2+1]=r[u*2+1]=h,o.heap[1]=h++,o.pqdownheap(r,1);while(o.heap_len>=2);o.heap[--o.heap_max]=o.heap[1],t(o),i(r,e.max_code,o.bl_count)}}Ir._length_code=[0,1,2,3,4,5,6,7].concat(...VU([[2,8],[2,9],[2,10],[2,11],[4,12],[4,13],[4,14],[4,15],[8,16],[8,17],[8,18],[8,19],[16,20],[16,21],[16,22],[16,23],[32,24],[32,25],[32,26],[31,27],[1,28]]));Ir.base_length=[0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224,0];Ir.base_dist=[0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576];Ir.d_code=function(e){return e<256?Xpe[e]:Xpe[256+(e>>>7)]};Ir.extra_lbits=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];Ir.extra_dbits=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];Ir.extra_blbits=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];Ir.bl_order=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];function oc(e,t,n,i,o){let r=this;r.static_tree=e,r.extra_bits=t,r.extra_base=n,r.elems=i,r.max_length=o}var Dst=[12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,19,275,147,403,83,339,211,467,51,307,179,435,115,371,243,499,11,267,139,395,75,331,203,459,43,299,171,427,107,363,235,491,27,283,155,411,91,347,219,475,59,315,187,443,123,379,251,507,7,263,135,391,71,327,199,455,39,295,167,423,103,359,231,487,23,279,151,407,87,343,215,471,55,311,183,439,119,375,247,503,15,271,143,399,79,335,207,463,47,303,175,431,111,367,239,495,31,287,159,415,95,351,223,479,63,319,191,447,127,383,255,511,0,64,32,96,16,80,48,112,8,72,40,104,24,88,56,120,4,68,36,100,20,84,52,116,3,131,67,195,35,163,99,227],vst=VU([[144,8],[112,9],[24,7],[8,8]]);oc.static_ltree=HU(Dst.map((e,t)=>[e,vst[t]]));var Pst=[0,16,8,24,4,20,12,28,2,18,10,26,6,22,14,30,1,17,9,25,5,21,13,29,3,19,11,27,7,23],Rst=VU([[30,5]]);oc.static_dtree=HU(Pst.map((e,t)=>[e,Rst[t]]));oc.static_l_desc=new oc(oc.static_ltree,Ir.extra_lbits,257,286,15);oc.static_d_desc=new oc(oc.static_dtree,Ir.extra_dbits,0,30,15);oc.static_bl_desc=new oc(null,Ir.extra_blbits,0,19,7);var Mst=9,Nst=8;function oA(e,t,n,i,o){let r=this;r.good_length=e,r.max_lazy=t,r.nice_length=n,r.max_chain=i,r.func=o}var Zpe=0,GU=1,GE=2,bh=[new oA(0,0,0,0,Zpe),new oA(4,4,8,4,GU),new oA(4,5,16,8,GU),new oA(4,6,32,32,GU),new oA(4,4,16,16,GE),new oA(8,16,32,32,GE),new oA(8,16,128,128,GE),new oA(8,32,128,256,GE),new oA(32,128,258,1024,GE),new oA(32,258,258,4096,GE)],FU=["need dictionary","stream end","","","stream error","data error","","buffer error","",""],dd=0,QU=1,Iv=2,kU=3,Lst=32,gK=42,UU=113,xv=666,_K=8,Ost=0,yK=1,Fst=2,Fr=3,zU=258,Hu=zU+Fr+1;function Jpe(e,t,n,i){let o=e[t*2],r=e[n*2];return o<r||o==r&&i[t]<=i[n]}function Qst(){let e=this,t,n,i,o,r,s,a,c,u,f,h,A,g,m,_,y,C,E,I,b,S,B,v,P,N,L,p,x,T,w,M,O,U,Q=new Ir,z=new Ir,F=new Ir;e.depth=[];let H,W,Z,Y,$,X;e.bl_count=[],e.heap=[],M=[],O=[],U=[];function he(){u=2*r,h[g-1]=0;for(let Oe=0;Oe<g-1;Oe++)h[Oe]=0;L=bh[p].max_lazy,T=bh[p].good_length,w=bh[p].nice_length,N=bh[p].max_chain,S=0,C=0,v=0,E=P=Fr-1,b=0,A=0}function ge(){let Oe;for(Oe=0;Oe<286;Oe++)M[Oe*2]=0;for(Oe=0;Oe<30;Oe++)O[Oe*2]=0;for(Oe=0;Oe<19;Oe++)U[Oe*2]=0;M[256*2]=1,e.opt_len=e.static_len=0,W=Z=0}function fe(){Q.dyn_tree=M,Q.stat_desc=oc.static_l_desc,z.dyn_tree=O,z.stat_desc=oc.static_d_desc,F.dyn_tree=U,F.stat_desc=oc.static_bl_desc,$=0,X=0,Y=8,ge()}e.pqdownheap=function(Oe,lt){let Ke=e.heap,$e=Ke[lt],pt=lt<<1;for(;pt<=e.heap_len&&(pt<e.heap_len&&Jpe(Oe,Ke[pt+1],Ke[pt],e.depth)&&pt++,!Jpe(Oe,$e,Ke[pt],e.depth));)Ke[lt]=Ke[pt],lt=pt,pt<<=1;Ke[lt]=$e};function ye(Oe,lt){let Ke=-1,$e,pt=Oe[1],Xt=0,xn=7,lo=4;pt===0&&(xn=138,lo=3),Oe[(lt+1)*2+1]=65535;for(let ro=0;ro<=lt;ro++)$e=pt,pt=Oe[(ro+1)*2+1],!(++Xt<xn&&$e==pt)&&(Xt<lo?U[$e*2]+=Xt:$e!==0?($e!=Ke&&U[$e*2]++,U[32]++):Xt<=10?U[34]++:U[36]++,Xt=0,Ke=$e,pt===0?(xn=138,lo=3):$e==pt?(xn=6,lo=3):(xn=7,lo=4))}function Ie(){let Oe;for(ye(M,Q.max_code),ye(O,z.max_code),F.build_tree(e),Oe=18;Oe>=3&&U[Ir.bl_order[Oe]*2+1]===0;Oe--);return e.opt_len+=3*(Oe+1)+5+5+4,Oe}function ve(Oe){e.pending_buf[e.pending++]=Oe}function Te(Oe){ve(Oe&255),ve(Oe>>>8&255)}function ke(Oe){ve(Oe>>8&255),ve(Oe&255&255)}function Ge(Oe,lt){let Ke,$e=lt;X>16-$e?(Ke=Oe,$|=Ke<<X&65535,Te($),$=Ke>>>16-X,X+=$e-16):($|=Oe<<X&65535,X+=$e)}function qe(Oe,lt){let Ke=Oe*2;Ge(lt[Ke]&65535,lt[Ke+1]&65535)}function tt(Oe,lt){let Ke,$e=-1,pt,Xt=Oe[1],xn=0,lo=7,ro=4;for(Xt===0&&(lo=138,ro=3),Ke=0;Ke<=lt;Ke++)if(pt=Xt,Xt=Oe[(Ke+1)*2+1],!(++xn<lo&&pt==Xt)){if(xn<ro)do qe(pt,U);while(--xn!==0);else pt!==0?(pt!=$e&&(qe(pt,U),xn--),qe(16,U),Ge(xn-3,2)):xn<=10?(qe(17,U),Ge(xn-3,3)):(qe(18,U),Ge(xn-11,7));xn=0,$e=pt,Xt===0?(lo=138,ro=3):pt==Xt?(lo=6,ro=3):(lo=7,ro=4)}}function $t(Oe,lt,Ke){let $e;for(Ge(Oe-257,5),Ge(lt-1,5),Ge(Ke-4,4),$e=0;$e<Ke;$e++)Ge(U[Ir.bl_order[$e]*2+1],3);tt(M,Oe-1),tt(O,lt-1)}function it(){X==16?(Te($),$=0,X=0):X>=8&&(ve($&255),$>>>=8,X-=8)}function tn(){Ge(yK<<1,3),qe(256,oc.static_ltree),it(),1+Y+10-X<9&&(Ge(yK<<1,3),qe(256,oc.static_ltree),it()),Y=7}function Wt(Oe,lt){let Ke,$e,pt;if(e.dist_buf[W]=Oe,e.lc_buf[W]=lt&255,W++,Oe===0?M[lt*2]++:(Z++,Oe--,M[(Ir._length_code[lt]+256+1)*2]++,O[Ir.d_code(Oe)*2]++),(W&8191)===0&&p>2){for(Ke=W*8,$e=S-C,pt=0;pt<30;pt++)Ke+=O[pt*2]*(5+Ir.extra_dbits[pt]);if(Ke>>>=3,Z<Math.floor(W/2)&&Ke<Math.floor($e/2))return!0}return W==H-1}function vt(Oe,lt){let Ke,$e,pt=0,Xt,xn;if(W!==0)do Ke=e.dist_buf[pt],$e=e.lc_buf[pt],pt++,Ke===0?qe($e,Oe):(Xt=Ir._length_code[$e],qe(Xt+256+1,Oe),xn=Ir.extra_lbits[Xt],xn!==0&&($e-=Ir.base_length[Xt],Ge($e,xn)),Ke--,Xt=Ir.d_code(Ke),qe(Xt,lt),xn=Ir.extra_dbits[Xt],xn!==0&&(Ke-=Ir.base_dist[Xt],Ge(Ke,xn)));while(pt<W);qe(256,Oe),Y=Oe[256*2+1]}function bi(){X>8?Te($):X>0&&ve($&255),$=0,X=0}function di(Oe,lt,Ke){bi(),Y=8,Ke&&(Te(lt),Te(~lt)),e.pending_buf.set(c.subarray(Oe,Oe+lt),e.pending),e.pending+=lt}function Ot(Oe,lt,Ke){Ge((Ost<<1)+(Ke?1:0),3),di(Oe,lt,!0)}function Tt(Oe,lt,Ke){let $e,pt,Xt=0;p>0?(Q.build_tree(e),z.build_tree(e),Xt=Ie(),$e=e.opt_len+3+7>>>3,pt=e.static_len+3+7>>>3,pt<=$e&&($e=pt)):$e=pt=lt+5,lt+4<=$e&&Oe!=-1?Ot(Oe,lt,Ke):pt==$e?(Ge((yK<<1)+(Ke?1:0),3),vt(oc.static_ltree,oc.static_dtree)):(Ge((Fst<<1)+(Ke?1:0),3),$t(Q.max_code+1,z.max_code+1,Xt+1),vt(M,O)),ge(),Ke&&bi()}function ii(Oe){Tt(C>=0?C:-1,S-C,Oe),C=S,t.flush_pending()}function Ct(){let Oe,lt,Ke,$e;do{if($e=u-v-S,$e===0&&S===0&&v===0)$e=r;else if($e==-1)$e--;else if(S>=r+r-Hu){c.set(c.subarray(r,r+r),0),B-=r,S-=r,C-=r,Oe=g,Ke=Oe;do lt=h[--Ke]&65535,h[Ke]=lt>=r?lt-r:0;while(--Oe!==0);Oe=r,Ke=Oe;do lt=f[--Ke]&65535,f[Ke]=lt>=r?lt-r:0;while(--Oe!==0);$e+=r}if(t.avail_in===0)return;Oe=t.read_buf(c,S+v,$e),v+=Oe,v>=Fr&&(A=c[S]&255,A=(A<<y^c[S+1]&255)&_)}while(v<Hu&&t.avail_in!==0)}function Ro(Oe){let lt=65535,Ke;for(lt>i-5&&(lt=i-5);;){if(v<=1){if(Ct(),v===0&&Oe==0)return dd;if(v===0)break}if(S+=v,v=0,Ke=C+lt,(S===0||S>=Ke)&&(v=S-Ke,S=Ke,ii(!1),t.avail_out===0)||S-C>=r-Hu&&(ii(!1),t.avail_out===0))return dd}return ii(Oe==4),t.avail_out===0?Oe==4?Iv:dd:Oe==4?kU:QU}function Qo(Oe){let lt=N,Ke=S,$e,pt,Xt=P,xn=S>r-Hu?S-(r-Hu):0,lo=w,ro=a,$s=S+zU,ea=c[Ke+Xt-1],Vn=c[Ke+Xt];P>=T&&(lt>>=2),lo>v&&(lo=v);do if($e=Oe,!(c[$e+Xt]!=Vn||c[$e+Xt-1]!=ea||c[$e]!=c[Ke]||c[++$e]!=c[Ke+1])){Ke+=2,$e++;do;while(c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&c[++Ke]==c[++$e]&&Ke<$s);if(pt=zU-($s-Ke),Ke=$s-zU,pt>Xt){if(B=Oe,Xt=pt,pt>=lo)break;ea=c[Ke+Xt-1],Vn=c[Ke+Xt]}}while((Oe=f[Oe&ro]&65535)>xn&&--lt!==0);return Xt<=v?Xt:v}function ya(Oe){let lt=0,Ke;for(;;){if(v<Hu){if(Ct(),v<Hu&&Oe==0)return dd;if(v===0)break}if(v>=Fr&&(A=(A<<y^c[S+(Fr-1)]&255)&_,lt=h[A]&65535,f[S&a]=h[A],h[A]=S),lt!==0&&(S-lt&65535)<=r-Hu&&x!=2&&(E=Qo(lt)),E>=Fr)if(Ke=Wt(S-B,E-Fr),v-=E,E<=L&&v>=Fr){E--;do S++,A=(A<<y^c[S+(Fr-1)]&255)&_,lt=h[A]&65535,f[S&a]=h[A],h[A]=S;while(--E!==0);S++}else S+=E,E=0,A=c[S]&255,A=(A<<y^c[S+1]&255)&_;else Ke=Wt(0,c[S]&255),v--,S++;if(Ke&&(ii(!1),t.avail_out===0))return dd}return ii(Oe==4),t.avail_out===0?Oe==4?Iv:dd:Oe==4?kU:QU}function mr(Oe){let lt=0,Ke,$e;for(;;){if(v<Hu){if(Ct(),v<Hu&&Oe==0)return dd;if(v===0)break}if(v>=Fr&&(A=(A<<y^c[S+(Fr-1)]&255)&_,lt=h[A]&65535,f[S&a]=h[A],h[A]=S),P=E,I=B,E=Fr-1,lt!==0&&P<L&&(S-lt&65535)<=r-Hu&&(x!=2&&(E=Qo(lt)),E<=5&&(x==1||E==Fr&&S-B>4096)&&(E=Fr-1)),P>=Fr&&E<=P){$e=S+v-Fr,Ke=Wt(S-1-I,P-Fr),v-=P-1,P-=2;do++S<=$e&&(A=(A<<y^c[S+(Fr-1)]&255)&_,lt=h[A]&65535,f[S&a]=h[A],h[A]=S);while(--P!==0);if(b=0,E=Fr-1,S++,Ke&&(ii(!1),t.avail_out===0))return dd}else if(b!==0){if(Ke=Wt(0,c[S-1]&255),Ke&&ii(!1),S++,v--,t.avail_out===0)return dd}else b=1,S++,v--}return b!==0&&(Ke=Wt(0,c[S-1]&255),b=0),ii(Oe==4),t.avail_out===0?Oe==4?Iv:dd:Oe==4?kU:QU}function Tr(Oe){return Oe.total_in=Oe.total_out=0,Oe.msg=null,e.pending=0,e.pending_out=0,n=UU,o=0,fe(),he(),0}e.deflateInit=function(Oe,lt,Ke,$e,pt,Xt){return $e||($e=_K),pt||(pt=Nst),Xt||(Xt=0),Oe.msg=null,lt==-1&&(lt=6),pt<1||pt>Mst||$e!=_K||Ke<9||Ke>15||lt<0||lt>9||Xt<0||Xt>2?-2:(Oe.dstate=e,s=Ke,r=1<<s,a=r-1,m=pt+7,g=1<<m,_=g-1,y=Math.floor((m+Fr-1)/Fr),c=new Uint8Array(r*2),f=[],h=[],H=1<<pt+6,e.pending_buf=new Uint8Array(H*4),i=H*4,e.dist_buf=new Uint16Array(H),e.lc_buf=new Uint8Array(H),p=lt,x=Xt,Tr(Oe))},e.deflateEnd=function(){return n!=gK&&n!=UU&&n!=xv?-2:(e.lc_buf=null,e.dist_buf=null,e.pending_buf=null,h=null,f=null,c=null,e.dstate=null,n==UU?-3:0)},e.deflateParams=function(Oe,lt,Ke){let $e=0;return lt==-1&&(lt=6),lt<0||lt>9||Ke<0||Ke>2?-2:(bh[p].func!=bh[lt].func&&Oe.total_in!==0&&($e=Oe.deflate(1)),p!=lt&&(p=lt,L=bh[p].max_lazy,T=bh[p].good_length,w=bh[p].nice_length,N=bh[p].max_chain),x=Ke,$e)},e.deflateSetDictionary=function(Oe,lt,Ke){let $e=Ke,pt,Xt=0;if(!lt||n!=gK)return-2;if($e<Fr)return 0;for($e>r-Hu&&($e=r-Hu,Xt=Ke-$e),c.set(lt.subarray(Xt,Xt+$e),0),S=$e,C=$e,A=c[0]&255,A=(A<<y^c[1]&255)&_,pt=0;pt<=$e-Fr;pt++)A=(A<<y^c[pt+(Fr-1)]&255)&_,f[pt&a]=h[A],h[A]=pt;return 0},e.deflate=function(Oe,lt){let Ke,$e,pt,Xt,xn;if(lt>4||lt<0)return-2;if(!Oe.next_out||!Oe.next_in&&Oe.avail_in!==0||n==xv&<!=4)return Oe.msg=FU[4],-2;if(Oe.avail_out===0)return Oe.msg=FU[7],-5;if(t=Oe,Xt=o,o=lt,n==gK&&($e=_K+(s-8<<4)<<8,pt=(p-1&255)>>1,pt>3&&(pt=3),$e|=pt<<6,S!==0&&($e|=Lst),$e+=31-$e%31,n=UU,ke($e)),e.pending!==0){if(t.flush_pending(),t.avail_out===0)return o=-1,0}else if(t.avail_in===0&<<=Xt&<!=4)return t.msg=FU[7],-5;if(n==xv&&t.avail_in!==0)return Oe.msg=FU[7],-5;if(t.avail_in!==0||v!==0||lt!=0&&n!=xv){switch(xn=-1,bh[p].func){case Zpe:xn=Ro(lt);break;case GU:xn=ya(lt);break;case GE:xn=mr(lt);break;default:}if((xn==Iv||xn==kU)&&(n=xv),xn==dd||xn==Iv)return t.avail_out===0&&(o=-1),0;if(xn==QU){if(lt==1)tn();else if(Ot(0,0,!1),lt==3)for(Ke=0;Ke<g;Ke++)h[Ke]=0;if(t.flush_pending(),t.avail_out===0)return o=-1,0}}return lt!=4?0:1}}function $pe(){let e=this;e.next_in_index=0,e.next_out_index=0,e.avail_in=0,e.total_in=0,e.avail_out=0,e.total_out=0}$pe.prototype={deflateInit(e,t){let n=this;return n.dstate=new Qst,t||(t=15),n.dstate.deflateInit(n,e,t)},deflate(e){let t=this;return t.dstate?t.dstate.deflate(t,e):-2},deflateEnd(){let e=this;if(!e.dstate)return-2;let t=e.dstate.deflateEnd();return e.dstate=null,t},deflateParams(e,t){let n=this;return n.dstate?n.dstate.deflateParams(n,e,t):-2},deflateSetDictionary(e,t){let n=this;return n.dstate?n.dstate.deflateSetDictionary(n,e,t):-2},read_buf(e,t,n){let i=this,o=i.avail_in;return o>n&&(o=n),o===0?0:(i.avail_in-=o,e.set(i.next_in.subarray(i.next_in_index,i.next_in_index+o),t),i.next_in_index+=o,i.total_in+=o,o)},flush_pending(){let e=this,t=e.dstate.pending;t>e.avail_out&&(t=e.avail_out),t!==0&&(e.next_out.set(e.dstate.pending_buf.subarray(e.dstate.pending_out,e.dstate.pending_out+t),e.next_out_index),e.next_out_index+=t,e.dstate.pending_out+=t,e.total_out+=t,e.avail_out-=t,e.dstate.pending-=t,e.dstate.pending===0&&(e.dstate.pending_out=0))}};function ege(e){let t=this,n=new $pe,i=kst(e&&e.chunkSize?e.chunkSize:64*1024),o=0,r=new Uint8Array(i),s=e?e.level:-1;typeof s>"u"&&(s=-1),n.deflateInit(s),n.next_out=r,t.append=function(a,c){let u,f,h=0,A=0,g=0,m=[];if(a.length){n.next_in_index=0,n.next_in=a,n.avail_in=a.length;do{if(n.next_out_index=0,n.avail_out=i,u=n.deflate(o),u!=0)throw new Error("deflating: "+n.msg);n.next_out_index&&(n.next_out_index==i?m.push(new Uint8Array(r)):m.push(r.subarray(0,n.next_out_index))),g+=n.next_out_index,c&&n.next_in_index>0&&n.next_in_index!=h&&(c(n.next_in_index),h=n.next_in_index)}while(n.avail_in>0||n.avail_out===0);return m.length>1?(f=new Uint8Array(g),m.forEach(function(_){f.set(_,A),A+=_.length})):f=m[0]?new Uint8Array(m[0]):new Uint8Array,f}},t.flush=function(){let a,c,u=0,f=0,h=[];do{if(n.next_out_index=0,n.avail_out=i,a=n.deflate(4),a!=1&&a!=0)throw new Error("deflating: "+n.msg);i-n.avail_out>0&&h.push(r.slice(0,n.next_out_index)),f+=n.next_out_index}while(n.avail_in>0||n.avail_out===0);return n.deflateEnd(),c=new Uint8Array(f),h.forEach(function(A){c.set(A,u),u+=A.length}),c}}function kst(e){return e+5*(Math.floor(e/16383)+1)}var Wu=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535],Cge=1440,Ust=0,Gst=4,zst=9,Vst=5,Hst=[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255],Wst=[80,5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577],jst=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],Yst=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112],qst=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],Kst=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],my=15;function xK(){let e=this,t,n,i,o,r,s;function a(u,f,h,A,g,m,_,y,C,E,I){let b,S,B,v,P,N,L,p,x,T,w,M,O,U,Q;T=0,P=h;do i[u[f+T]]++,T++,P--;while(P!==0);if(i[0]==h)return _[0]=-1,y[0]=0,0;for(p=y[0],N=1;N<=my&&i[N]===0;N++);for(L=N,p<N&&(p=N),P=my;P!==0&&i[P]===0;P--);for(B=P,p>P&&(p=P),y[0]=p,U=1<<N;N<P;N++,U<<=1)if((U-=i[N])<0)return-3;if((U-=i[P])<0)return-3;for(i[P]+=U,s[1]=N=0,T=1,O=2;--P!==0;)s[O]=N+=i[T],O++,T++;P=0,T=0;do(N=u[f+T])!==0&&(I[s[N]++]=P),T++;while(++P<h);for(h=s[B],s[0]=P=0,T=0,v=-1,M=-p,r[0]=0,w=0,Q=0;L<=B;L++)for(b=i[L];b--!==0;){for(;L>M+p;){if(v++,M+=p,Q=B-M,Q=Q>p?p:Q,(S=1<<(N=L-M))>b+1&&(S-=b+1,O=L,N<Q))for(;++N<Q&&!((S<<=1)<=i[++O]);)S-=i[O];if(Q=1<<N,E[0]+Q>Cge)return-3;r[v]=w=E[0],E[0]+=Q,v!==0?(s[v]=P,o[0]=N,o[1]=p,N=P>>>M-p,o[2]=w-r[v-1]-N,C.set(o,(r[v-1]+N)*3)):_[0]=w}for(o[1]=L-M,T>=h?o[0]=192:I[T]<A?(o[0]=I[T]<256?0:96,o[2]=I[T++]):(o[0]=m[I[T]-A]+16+64,o[2]=g[I[T++]-A]),S=1<<L-M,N=P>>>M;N<Q;N+=S)C.set(o,(w+N)*3);for(N=1<<L-1;(P&N)!==0;N>>>=1)P^=N;for(P^=N,x=(1<<M)-1;(P&x)!=s[v];)v--,M-=p,x=(1<<M)-1}return U!==0&&B!=1?-5:0}function c(u){let f;for(t||(t=[],n=[],i=new Int32Array(my+1),o=[],r=new Int32Array(my),s=new Int32Array(my+1)),n.length<u&&(n=[]),f=0;f<u;f++)n[f]=0;for(f=0;f<my+1;f++)i[f]=0;for(f=0;f<3;f++)o[f]=0;r.set(i.subarray(0,my),0),s.set(i.subarray(0,my+1),0)}e.inflate_trees_bits=function(u,f,h,A,g){let m;return c(19),t[0]=0,m=a(u,0,19,19,null,null,h,f,A,t,n),m==-3?g.msg="oversubscribed dynamic bit lengths tree":(m==-5||f[0]===0)&&(g.msg="incomplete dynamic bit lengths tree",m=-3),m},e.inflate_trees_dynamic=function(u,f,h,A,g,m,_,y,C){let E;return c(288),t[0]=0,E=a(h,0,u,257,jst,Yst,m,A,y,t,n),E!=0||A[0]===0?(E==-3?C.msg="oversubscribed literal/length tree":E!=-4&&(C.msg="incomplete literal/length tree",E=-3),E):(c(288),E=a(h,u,f,0,qst,Kst,_,g,y,t,n),E!=0||g[0]===0&&u>257?(E==-3?C.msg="oversubscribed distance tree":E==-5?(C.msg="incomplete distance tree",E=-3):E!=-4&&(C.msg="empty distance tree with lengths",E=-3),E):0)}}xK.inflate_trees_fixed=function(e,t,n,i){return e[0]=zst,t[0]=Vst,n[0]=Hst,i[0]=Wst,0};var WU=0,tge=1,nge=2,ige=3,oge=4,rge=5,sge=6,CK=7,age=8,jU=9;function Xst(){let e=this,t,n=0,i,o=0,r=0,s=0,a=0,c=0,u=0,f=0,h,A=0,g,m=0;function _(y,C,E,I,b,S,B,v){let P,N,L,p,x,T,w,M,O,U,Q,z,F,H,W,Z;w=v.next_in_index,M=v.avail_in,x=B.bitb,T=B.bitk,O=B.write,U=O<B.read?B.read-O-1:B.end-O,Q=Wu[y],z=Wu[C];do{for(;T<20;)M--,x|=(v.read_byte(w++)&255)<<T,T+=8;if(P=x&Q,N=E,L=I,Z=(L+P)*3,(p=N[Z])===0){x>>=N[Z+1],T-=N[Z+1],B.win[O++]=N[Z+2],U--;continue}do{if(x>>=N[Z+1],T-=N[Z+1],(p&16)!==0){for(p&=15,F=N[Z+2]+(x&Wu[p]),x>>=p,T-=p;T<15;)M--,x|=(v.read_byte(w++)&255)<<T,T+=8;P=x&z,N=b,L=S,Z=(L+P)*3,p=N[Z];do if(x>>=N[Z+1],T-=N[Z+1],(p&16)!==0){for(p&=15;T<p;)M--,x|=(v.read_byte(w++)&255)<<T,T+=8;if(H=N[Z+2]+(x&Wu[p]),x>>=p,T-=p,U-=F,O>=H)W=O-H,O-W>0&&2>O-W?(B.win[O++]=B.win[W++],B.win[O++]=B.win[W++],F-=2):(B.win.set(B.win.subarray(W,W+2),O),O+=2,W+=2,F-=2);else{W=O-H;do W+=B.end;while(W<0);if(p=B.end-W,F>p){if(F-=p,O-W>0&&p>O-W)do B.win[O++]=B.win[W++];while(--p!==0);else B.win.set(B.win.subarray(W,W+p),O),O+=p,W+=p,p=0;W=0}}if(O-W>0&&F>O-W)do B.win[O++]=B.win[W++];while(--F!==0);else B.win.set(B.win.subarray(W,W+F),O),O+=F,W+=F,F=0;break}else if((p&64)===0)P+=N[Z+2],P+=x&Wu[p],Z=(L+P)*3,p=N[Z];else return v.msg="invalid distance code",F=v.avail_in-M,F=T>>3<F?T>>3:F,M+=F,w-=F,T-=F<<3,B.bitb=x,B.bitk=T,v.avail_in=M,v.total_in+=w-v.next_in_index,v.next_in_index=w,B.write=O,-3;while(!0);break}if((p&64)===0){if(P+=N[Z+2],P+=x&Wu[p],Z=(L+P)*3,(p=N[Z])===0){x>>=N[Z+1],T-=N[Z+1],B.win[O++]=N[Z+2],U--;break}}else return(p&32)!==0?(F=v.avail_in-M,F=T>>3<F?T>>3:F,M+=F,w-=F,T-=F<<3,B.bitb=x,B.bitk=T,v.avail_in=M,v.total_in+=w-v.next_in_index,v.next_in_index=w,B.write=O,1):(v.msg="invalid literal/length code",F=v.avail_in-M,F=T>>3<F?T>>3:F,M+=F,w-=F,T-=F<<3,B.bitb=x,B.bitk=T,v.avail_in=M,v.total_in+=w-v.next_in_index,v.next_in_index=w,B.write=O,-3)}while(!0)}while(U>=258&&M>=10);return F=v.avail_in-M,F=T>>3<F?T>>3:F,M+=F,w-=F,T-=F<<3,B.bitb=x,B.bitk=T,v.avail_in=M,v.total_in+=w-v.next_in_index,v.next_in_index=w,B.write=O,0}e.init=function(y,C,E,I,b,S){t=WU,u=y,f=C,h=E,A=I,g=b,m=S,i=null},e.proc=function(y,C,E){let I,b,S,B=0,v=0,P=0,N,L,p,x;for(P=C.next_in_index,N=C.avail_in,B=y.bitb,v=y.bitk,L=y.write,p=L<y.read?y.read-L-1:y.end-L;;)switch(t){case WU:if(p>=258&&N>=10&&(y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,E=_(u,f,h,A,g,m,y,C),P=C.next_in_index,N=C.avail_in,B=y.bitb,v=y.bitk,L=y.write,p=L<y.read?y.read-L-1:y.end-L,E!=0)){t=E==1?CK:jU;break}r=u,i=h,o=A,t=tge;case tge:for(I=r;v<I;){if(N!==0)E=0;else return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);N--,B|=(C.read_byte(P++)&255)<<v,v+=8}if(b=(o+(B&Wu[I]))*3,B>>>=i[b+1],v-=i[b+1],S=i[b],S===0){s=i[b+2],t=sge;break}if((S&16)!==0){a=S&15,n=i[b+2],t=nge;break}if((S&64)===0){r=S,o=b/3+i[b+2];break}if((S&32)!==0){t=CK;break}return t=jU,C.msg="invalid literal/length code",E=-3,y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);case nge:for(I=a;v<I;){if(N!==0)E=0;else return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);N--,B|=(C.read_byte(P++)&255)<<v,v+=8}n+=B&Wu[I],B>>=I,v-=I,r=f,i=g,o=m,t=ige;case ige:for(I=r;v<I;){if(N!==0)E=0;else return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);N--,B|=(C.read_byte(P++)&255)<<v,v+=8}if(b=(o+(B&Wu[I]))*3,B>>=i[b+1],v-=i[b+1],S=i[b],(S&16)!==0){a=S&15,c=i[b+2],t=oge;break}if((S&64)===0){r=S,o=b/3+i[b+2];break}return t=jU,C.msg="invalid distance code",E=-3,y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);case oge:for(I=a;v<I;){if(N!==0)E=0;else return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);N--,B|=(C.read_byte(P++)&255)<<v,v+=8}c+=B&Wu[I],B>>=I,v-=I,t=rge;case rge:for(x=L-c;x<0;)x+=y.end;for(;n!==0;){if(p===0&&(L==y.end&&y.read!==0&&(L=0,p=L<y.read?y.read-L-1:y.end-L),p===0&&(y.write=L,E=y.inflate_flush(C,E),L=y.write,p=L<y.read?y.read-L-1:y.end-L,L==y.end&&y.read!==0&&(L=0,p=L<y.read?y.read-L-1:y.end-L),p===0)))return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);y.win[L++]=y.win[x++],p--,x==y.end&&(x=0),n--}t=WU;break;case sge:if(p===0&&(L==y.end&&y.read!==0&&(L=0,p=L<y.read?y.read-L-1:y.end-L),p===0&&(y.write=L,E=y.inflate_flush(C,E),L=y.write,p=L<y.read?y.read-L-1:y.end-L,L==y.end&&y.read!==0&&(L=0,p=L<y.read?y.read-L-1:y.end-L),p===0)))return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);E=0,y.win[L++]=s,p--,t=WU;break;case CK:if(v>7&&(v-=8,N++,P--),y.write=L,E=y.inflate_flush(C,E),L=y.write,p=L<y.read?y.read-L-1:y.end-L,y.read!=y.write)return y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);t=age;case age:return E=1,y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);case jU:return E=-3,y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E);default:return E=-2,y.bitb=B,y.bitk=v,C.avail_in=N,C.total_in+=P-C.next_in_index,C.next_in_index=P,y.write=L,y.inflate_flush(C,E)}},e.free=function(){}}var cge=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],fT=0,EK=1,lge=2,uge=3,fge=4,dge=5,YU=6,qU=7,hge=8,zE=9;function Jst(e,t){let n=this,i=fT,o=0,r=0,s=0,a,c=[0],u=[0],f=new Xst,h=0,A=new Int32Array(Cge*3),g=0,m=new xK;n.bitk=0,n.bitb=0,n.win=new Uint8Array(t),n.end=t,n.read=0,n.write=0,n.reset=function(_,y){y&&(y[0]=g),i==YU&&f.free(_),i=fT,n.bitk=0,n.bitb=0,n.read=n.write=0},n.reset(e,null),n.inflate_flush=function(_,y){let C,E,I;return E=_.next_out_index,I=n.read,C=(I<=n.write?n.write:n.end)-I,C>_.avail_out&&(C=_.avail_out),C!==0&&y==-5&&(y=0),_.avail_out-=C,_.total_out+=C,_.next_out.set(n.win.subarray(I,I+C),E),E+=C,I+=C,I==n.end&&(I=0,n.write==n.end&&(n.write=0),C=n.write-I,C>_.avail_out&&(C=_.avail_out),C!==0&&y==-5&&(y=0),_.avail_out-=C,_.total_out+=C,_.next_out.set(n.win.subarray(I,I+C),E),E+=C,I+=C),_.next_out_index=E,n.read=I,y},n.proc=function(_,y){let C,E,I,b,S,B,v,P;for(b=_.next_in_index,S=_.avail_in,E=n.bitb,I=n.bitk,B=n.write,v=B<n.read?n.read-B-1:n.end-B;;){let N,L,p,x,T,w,M,O;switch(i){case fT:for(;I<3;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}switch(C=E&7,h=C&1,C>>>1){case 0:E>>>=3,I-=3,C=I&7,E>>>=C,I-=C,i=EK;break;case 1:N=[],L=[],p=[[]],x=[[]],xK.inflate_trees_fixed(N,L,p,x),f.init(N[0],L[0],p[0],0,x[0],0),E>>>=3,I-=3,i=YU;break;case 2:E>>>=3,I-=3,i=uge;break;case 3:return E>>>=3,I-=3,i=zE,_.msg="invalid block type",y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y)}break;case EK:for(;I<32;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}if((~E>>>16&65535)!=(E&65535))return i=zE,_.msg="invalid stored block lengths",y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);o=E&65535,E=I=0,i=o!==0?lge:h!==0?qU:fT;break;case lge:if(S===0||v===0&&(B==n.end&&n.read!==0&&(B=0,v=B<n.read?n.read-B-1:n.end-B),v===0&&(n.write=B,y=n.inflate_flush(_,y),B=n.write,v=B<n.read?n.read-B-1:n.end-B,B==n.end&&n.read!==0&&(B=0,v=B<n.read?n.read-B-1:n.end-B),v===0)))return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);if(y=0,C=o,C>S&&(C=S),C>v&&(C=v),n.win.set(_.read_buf(b,C),B),b+=C,S-=C,B+=C,v-=C,(o-=C)!==0)break;i=h!==0?qU:fT;break;case uge:for(;I<14;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}if(r=C=E&16383,(C&31)>29||(C>>5&31)>29)return i=zE,_.msg="too many length or distance symbols",y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);if(C=258+(C&31)+(C>>5&31),!a||a.length<C)a=[];else for(P=0;P<C;P++)a[P]=0;E>>>=14,I-=14,s=0,i=fge;case fge:for(;s<4+(r>>>10);){for(;I<3;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}a[cge[s++]]=E&7,E>>>=3,I-=3}for(;s<19;)a[cge[s++]]=0;if(c[0]=7,C=m.inflate_trees_bits(a,c,u,A,_),C!=0)return y=C,y==-3&&(a=null,i=zE),n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);s=0,i=dge;case dge:for(;C=r,!(s>=258+(C&31)+(C>>5&31));){let U,Q;for(C=c[0];I<C;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}if(C=A[(u[0]+(E&Wu[C]))*3+1],Q=A[(u[0]+(E&Wu[C]))*3+2],Q<16)E>>>=C,I-=C,a[s++]=Q;else{for(P=Q==18?7:Q-14,U=Q==18?11:3;I<C+P;){if(S!==0)y=0;else return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);S--,E|=(_.read_byte(b++)&255)<<I,I+=8}if(E>>>=C,I-=C,U+=E&Wu[P],E>>>=P,I-=P,P=s,C=r,P+U>258+(C&31)+(C>>5&31)||Q==16&&P<1)return a=null,i=zE,_.msg="invalid bit length repeat",y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);Q=Q==16?a[P-1]:0;do a[P++]=Q;while(--U!==0);s=P}}if(u[0]=-1,T=[],w=[],M=[],O=[],T[0]=9,w[0]=6,C=r,C=m.inflate_trees_dynamic(257+(C&31),1+(C>>5&31),a,T,w,M,O,A,_),C!=0)return C==-3&&(a=null,i=zE),y=C,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);f.init(T[0],w[0],A,M[0],A,O[0]),i=YU;case YU:if(n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,(y=f.proc(n,_,y))!=1)return n.inflate_flush(_,y);if(y=0,f.free(_),b=_.next_in_index,S=_.avail_in,E=n.bitb,I=n.bitk,B=n.write,v=B<n.read?n.read-B-1:n.end-B,h===0){i=fT;break}i=qU;case qU:if(n.write=B,y=n.inflate_flush(_,y),B=n.write,v=B<n.read?n.read-B-1:n.end-B,n.read!=n.write)return n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);i=hge;case hge:return y=1,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);case zE:return y=-3,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y);default:return y=-2,n.bitb=E,n.bitk=I,_.avail_in=S,_.total_in+=b-_.next_in_index,_.next_in_index=b,n.write=B,n.inflate_flush(_,y)}}},n.free=function(_){n.reset(_,null),n.win=null,A=null},n.set_dictionary=function(_,y,C){n.win.set(_.subarray(y,y+C),0),n.read=n.write=C},n.sync_point=function(){return i==EK?1:0}}var Zst=32,$st=8,eat=0,mge=1,Age=2,pge=3,gge=4,_ge=5,IK=6,bv=7,yge=12,Ay=13,tat=[0,0,255,255];function nat(){let e=this;e.mode=0,e.method=0,e.was=[0],e.need=0,e.marker=0,e.wbits=0;function t(n){return!n||!n.istate?-2:(n.total_in=n.total_out=0,n.msg=null,n.istate.mode=bv,n.istate.blocks.reset(n,null),0)}e.inflateEnd=function(n){return e.blocks&&e.blocks.free(n),e.blocks=null,0},e.inflateInit=function(n,i){return n.msg=null,e.blocks=null,i<8||i>15?(e.inflateEnd(n),-2):(e.wbits=i,n.istate.blocks=new Jst(n,1<<i),t(n),0)},e.inflate=function(n,i){let o,r;if(!n||!n.istate||!n.next_in)return-2;let s=n.istate;for(i=i==Gst?-5:0,o=-5;;)switch(s.mode){case eat:if(n.avail_in===0)return o;if(o=i,n.avail_in--,n.total_in++,((s.method=n.read_byte(n.next_in_index++))&15)!=$st){s.mode=Ay,n.msg="unknown compression method",s.marker=5;break}if((s.method>>4)+8>s.wbits){s.mode=Ay,n.msg="invalid win size",s.marker=5;break}s.mode=mge;case mge:if(n.avail_in===0)return o;if(o=i,n.avail_in--,n.total_in++,r=n.read_byte(n.next_in_index++)&255,((s.method<<8)+r)%31!==0){s.mode=Ay,n.msg="incorrect header check",s.marker=5;break}if((r&Zst)===0){s.mode=bv;break}s.mode=Age;case Age:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need=(n.read_byte(n.next_in_index++)&255)<<24&4278190080,s.mode=pge;case pge:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need+=(n.read_byte(n.next_in_index++)&255)<<16&16711680,s.mode=gge;case gge:if(n.avail_in===0)return o;o=i,n.avail_in--,n.total_in++,s.need+=(n.read_byte(n.next_in_index++)&255)<<8&65280,s.mode=_ge;case _ge:return n.avail_in===0?o:(o=i,n.avail_in--,n.total_in++,s.need+=n.read_byte(n.next_in_index++)&255,s.mode=IK,2);case IK:return s.mode=Ay,n.msg="need dictionary",s.marker=0,-2;case bv:if(o=s.blocks.proc(n,o),o==-3){s.mode=Ay,s.marker=0;break}if(o==0&&(o=i),o!=1)return o;o=i,s.blocks.reset(n,s.was),s.mode=yge;case yge:return n.avail_in=0,1;case Ay:return-3;default:return-2}},e.inflateSetDictionary=function(n,i,o){let r=0,s=o;if(!n||!n.istate||n.istate.mode!=IK)return-2;let a=n.istate;return s>=1<<a.wbits&&(s=(1<<a.wbits)-1,r=o-s),a.blocks.set_dictionary(i,r,s),a.mode=bv,0},e.inflateSync=function(n){let i,o,r,s,a;if(!n||!n.istate)return-2;let c=n.istate;if(c.mode!=Ay&&(c.mode=Ay,c.marker=0),(i=n.avail_in)===0)return-5;for(o=n.next_in_index,r=c.marker;i!==0&&r<4;)n.read_byte(o)==tat[r]?r++:n.read_byte(o)!==0?r=0:r=4-r,o++,i--;return n.total_in+=o-n.next_in_index,n.next_in_index=o,n.avail_in=i,c.marker=r,r!=4?-3:(s=n.total_in,a=n.total_out,t(n),n.total_in=s,n.total_out=a,c.mode=bv,0)},e.inflateSyncPoint=function(n){return!n||!n.istate||!n.istate.blocks?-2:n.istate.blocks.sync_point()}}function Ege(){}Ege.prototype={inflateInit(e){let t=this;return t.istate=new nat,e||(e=15),t.istate.inflateInit(t,e)},inflate(e){let t=this;return t.istate?t.istate.inflate(t,e):-2},inflateEnd(){let e=this;if(!e.istate)return-2;let t=e.istate.inflateEnd(e);return e.istate=null,t},inflateSync(){let e=this;return e.istate?e.istate.inflateSync(e):-2},inflateSetDictionary(e,t){let n=this;return n.istate?n.istate.inflateSetDictionary(n,e,t):-2},read_byte(e){return this.next_in[e]},read_buf(e,t){return this.next_in.subarray(e,e+t)}};function Ige(e){let t=this,n=new Ege,i=e&&e.chunkSize?Math.floor(e.chunkSize*2):128*1024,o=Ust,r=new Uint8Array(i),s=!1;n.inflateInit(),n.next_out=r,t.append=function(a,c){let u=[],f,h,A=0,g=0,m=0;if(a.length!==0){n.next_in_index=0,n.next_in=a,n.avail_in=a.length;do{if(n.next_out_index=0,n.avail_out=i,n.avail_in===0&&!s&&(n.next_in_index=0,s=!0),f=n.inflate(o),s&&f===-5){if(n.avail_in!==0)throw new Error("inflating: bad input")}else if(f!==0&&f!==1)throw new Error("inflating: "+n.msg);if((s||f===1)&&n.avail_in===a.length)throw new Error("inflating: bad input");n.next_out_index&&(n.next_out_index===i?u.push(new Uint8Array(r)):u.push(r.subarray(0,n.next_out_index))),m+=n.next_out_index,c&&n.next_in_index>0&&n.next_in_index!=A&&(c(n.next_in_index),A=n.next_in_index)}while(n.avail_in>0||n.avail_out===0);return u.length>1?(h=new Uint8Array(m),u.forEach(function(_){h.set(_,g),g+=_.length})):h=u[0]?new Uint8Array(u[0]):new Uint8Array,h}},t.flush=function(){n.inflateEnd()}}var bK=new Date(2107,11,31),TK=new Date(1980,0,1),ni=void 0,ju="undefined",Up="function";var Tv=class{constructor(t){return class extends TransformStream{constructor(n,i){let o=new t(i);super({transform(r,s){s.enqueue(o.append(r))},flush(r){let s=o.flush();s&&r.enqueue(s)}})}}}};var iat=64,xge=2;try{typeof navigator!=ju&&navigator.hardwareConcurrency&&(xge=navigator.hardwareConcurrency)}catch{}var oat={chunkSize:512*1024,maxWorkers:xge,terminateWorkerTimeout:5e3,useWebWorkers:!0,useCompressionStream:!0,workerScripts:ni,CompressionStreamNative:typeof CompressionStream!=ju&&CompressionStream,DecompressionStreamNative:typeof DecompressionStream!=ju&&DecompressionStream},gy=Object.assign({},oat);function Sv(){return gy}function KU(e){return Math.max(e.chunkSize,iat)}function dT(e){let{baseURL:t,chunkSize:n,maxWorkers:i,terminateWorkerTimeout:o,useCompressionStream:r,useWebWorkers:s,Deflate:a,Inflate:c,CompressionStream:u,DecompressionStream:f,workerScripts:h}=e;if(py("baseURL",t),py("chunkSize",n),py("maxWorkers",i),py("terminateWorkerTimeout",o),py("useCompressionStream",r),py("useWebWorkers",s),a&&(gy.CompressionStream=new Tv(a)),c&&(gy.DecompressionStream=new Tv(c)),py("CompressionStream",u),py("DecompressionStream",f),h!==ni){let{deflate:A,inflate:g}=h;if((A||g)&&(gy.workerScripts||(gy.workerScripts={})),A){if(!Array.isArray(A))throw new Error("workerScripts.deflate must be an array");gy.workerScripts.deflate=A}if(g){if(!Array.isArray(g))throw new Error("workerScripts.inflate must be an array");gy.workerScripts.inflate=g}}}function py(e,t){t!==ni&&(gy[e]=t)}var bge=[];for(let e=0;e<256;e++){let t=e;for(let n=0;n<8;n++)t&1?t=t>>>1^3988292384:t=t>>>1;bge[e]=t}var Gp=class{constructor(t){this.crc=t||-1}append(t){let n=this.crc|0;for(let i=0,o=t.length|0;i<o;i++)n=n>>>8^bge[(n^t[i])&255];this.crc=n}get(){return~this.crc}};var wv=class extends TransformStream{constructor(){let t,n=new Gp;super({transform(i,o){n.append(i),o.enqueue(i)},flush(){let i=new Uint8Array(4);new DataView(i.buffer).setUint32(0,n.get()),t.value=i}}),t=this}};function hT(e){if(typeof TextEncoder==ju){e=unescape(encodeURIComponent(e));let t=new Uint8Array(e.length);for(let n=0;n<t.length;n++)t[n]=e.charCodeAt(n);return t}else return new TextEncoder().encode(e)}var yl={concat(e,t){if(e.length===0||t.length===0)return e.concat(t);let n=e[e.length-1],i=yl.getPartial(n);return i===32?e.concat(t):yl._shiftRight(t,i,n|0,e.slice(0,e.length-1))},bitLength(e){let t=e.length;if(t===0)return 0;let n=e[t-1];return(t-1)*32+yl.getPartial(n)},clamp(e,t){if(e.length*32<t)return e;e=e.slice(0,Math.ceil(t/32));let n=e.length;return t=t&31,n>0&&t&&(e[n-1]=yl.partial(t,e[n-1]&2147483648>>t-1,1)),e},partial(e,t,n){return e===32?t:(n?t|0:t<<32-e)+e*1099511627776},getPartial(e){return Math.round(e/1099511627776)||32},_shiftRight(e,t,n,i){for(i===void 0&&(i=[]);t>=32;t-=32)i.push(n),n=0;if(t===0)return i.concat(e);for(let s=0;s<e.length;s++)i.push(n|e[s]>>>t),n=e[s]<<32-t;let o=e.length?e[e.length-1]:0,r=yl.getPartial(o);return i.push(yl.partial(t+r&31,t+r>32?n:i.pop(),1)),i}},Bv={bytes:{fromBits(e){let n=yl.bitLength(e)/8,i=new Uint8Array(n),o;for(let r=0;r<n;r++)(r&3)===0&&(o=e[r/4]),i[r]=o>>>24,o<<=8;return i},toBits(e){let t=[],n,i=0;for(n=0;n<e.length;n++)i=i<<8|e[n],(n&3)===3&&(t.push(i),i=0);return n&3&&t.push(yl.partial(8*(n&3),i)),t}}},Tge={};Tge.sha1=class{constructor(e){let t=this;t.blockSize=512,t._init=[1732584193,4023233417,2562383102,271733878,3285377520],t._key=[1518500249,1859775393,2400959708,3395469782],e?(t._h=e._h.slice(0),t._buffer=e._buffer.slice(0),t._length=e._length):t.reset()}reset(){let e=this;return e._h=e._init.slice(0),e._buffer=[],e._length=0,e}update(e){let t=this;typeof e=="string"&&(e=Bv.utf8String.toBits(e));let n=t._buffer=yl.concat(t._buffer,e),i=t._length,o=t._length=i+yl.bitLength(e);if(o>9007199254740991)throw new Error("Cannot hash more than 2^53 - 1 bits");let r=new Uint32Array(n),s=0;for(let a=t.blockSize+i-(t.blockSize+i&t.blockSize-1);a<=o;a+=t.blockSize)t._block(r.subarray(16*s,16*(s+1))),s+=1;return n.splice(0,16*s),t}finalize(){let e=this,t=e._buffer,n=e._h;t=yl.concat(t,[yl.partial(1,1)]);for(let i=t.length+2;i&15;i++)t.push(0);for(t.push(Math.floor(e._length/4294967296)),t.push(e._length|0);t.length;)e._block(t.splice(0,16));return e.reset(),n}_f(e,t,n,i){if(e<=19)return t&n|~t&i;if(e<=39)return t^n^i;if(e<=59)return t&n|t&i|n&i;if(e<=79)return t^n^i}_S(e,t){return t<<e|t>>>32-e}_block(e){let t=this,n=t._h,i=Array(80);for(let u=0;u<16;u++)i[u]=e[u];let o=n[0],r=n[1],s=n[2],a=n[3],c=n[4];for(let u=0;u<=79;u++){u>=16&&(i[u]=t._S(1,i[u-3]^i[u-8]^i[u-14]^i[u-16]));let f=t._S(5,o)+t._f(u,r,s,a)+c+i[u]+t._key[Math.floor(u/20)]|0;c=a,a=s,s=t._S(30,r),r=o,o=f}n[0]=n[0]+o|0,n[1]=n[1]+r|0,n[2]=n[2]+s|0,n[3]=n[3]+a|0,n[4]=n[4]+c|0}};var SK={};SK.aes=class{constructor(e){let t=this;t._tables=[[[],[],[],[],[]],[[],[],[],[],[]]],t._tables[0][0][0]||t._precompute();let n=t._tables[0][4],i=t._tables[1],o=e.length,r,s,a,c=1;if(o!==4&&o!==6&&o!==8)throw new Error("invalid aes key size");for(t._key=[s=e.slice(0),a=[]],r=o;r<4*o+28;r++){let u=s[r-1];(r%o===0||o===8&&r%o===4)&&(u=n[u>>>24]<<24^n[u>>16&255]<<16^n[u>>8&255]<<8^n[u&255],r%o===0&&(u=u<<8^u>>>24^c<<24,c=c<<1^(c>>7)*283)),s[r]=s[r-o]^u}for(let u=0;r;u++,r--){let f=s[u&3?r:r-4];r<=4||u<4?a[u]=f:a[u]=i[0][n[f>>>24]]^i[1][n[f>>16&255]]^i[2][n[f>>8&255]]^i[3][n[f&255]]}}encrypt(e){return this._crypt(e,0)}decrypt(e){return this._crypt(e,1)}_precompute(){let e=this._tables[0],t=this._tables[1],n=e[4],i=t[4],o=[],r=[],s,a,c,u;for(let f=0;f<256;f++)r[(o[f]=f<<1^(f>>7)*283)^f]=f;for(let f=s=0;!n[f];f^=a||1,s=r[s]||1){let h=s^s<<1^s<<2^s<<3^s<<4;h=h>>8^h&255^99,n[f]=h,i[h]=f,u=o[c=o[a=o[f]]];let A=u*16843009^c*65537^a*257^f*16843008,g=o[h]*257^h*16843008;for(let m=0;m<4;m++)e[m][f]=g=g<<24^g>>>8,t[m][h]=A=A<<24^A>>>8}for(let f=0;f<5;f++)e[f]=e[f].slice(0),t[f]=t[f].slice(0)}_crypt(e,t){if(e.length!==4)throw new Error("invalid aes block size");let n=this._key[t],i=n.length/4-2,o=[0,0,0,0],r=this._tables[t],s=r[0],a=r[1],c=r[2],u=r[3],f=r[4],h=e[0]^n[0],A=e[t?3:1]^n[1],g=e[2]^n[2],m=e[t?1:3]^n[3],_=4,y,C,E;for(let I=0;I<i;I++)y=s[h>>>24]^a[A>>16&255]^c[g>>8&255]^u[m&255]^n[_],C=s[A>>>24]^a[g>>16&255]^c[m>>8&255]^u[h&255]^n[_+1],E=s[g>>>24]^a[m>>16&255]^c[h>>8&255]^u[A&255]^n[_+2],m=s[m>>>24]^a[h>>16&255]^c[A>>8&255]^u[g&255]^n[_+3],_+=4,h=y,A=C,g=E;for(let I=0;I<4;I++)o[t?3&-I:I]=f[h>>>24]<<24^f[A>>16&255]<<16^f[g>>8&255]<<8^f[m&255]^n[_++],y=h,h=A,A=g,g=m,m=y;return o}};var Sge={getRandomValues(e){let t=new Uint32Array(e.buffer),n=i=>{let o=987654321,r=4294967295;return function(){return o=36969*(o&65535)+(o>>16)&r,i=18e3*(i&65535)+(i>>16)&r,(((o<<16)+i&r)/4294967296+.5)*(Math.random()>.5?1:-1)}};for(let i=0,o;i<e.length;i+=4){let r=n((o||Math.random())*4294967296);o=r()*987654071,t[i/4]=r()*4294967296|0}return e}},wK={};wK.ctrGladman=class{constructor(e,t){this._prf=e,this._initIv=t,this._iv=t}reset(){this._iv=this._initIv}update(e){return this.calculate(this._prf,e,this._iv)}incWord(e){if((e>>24&255)===255){let t=e>>16&255,n=e>>8&255,i=e&255;t===255?(t=0,n===255?(n=0,i===255?i=0:++i):++n):++t,e=0,e+=t<<16,e+=n<<8,e+=i}else e+=1<<24;return e}incCounter(e){(e[0]=this.incWord(e[0]))===0&&(e[1]=this.incWord(e[1]))}calculate(e,t,n){let i;if(!(i=t.length))return[];let o=yl.bitLength(t);for(let r=0;r<i;r+=4){this.incCounter(n);let s=e.encrypt(n);t[r]^=s[0],t[r+1]^=s[1],t[r+2]^=s[2],t[r+3]^=s[3]}return yl.clamp(t,o)}};var _y={importKey(e){return new _y.hmacSha1(Bv.bytes.toBits(e))},pbkdf2(e,t,n,i){if(n=n||1e4,i<0||n<0)throw new Error("invalid params to pbkdf2");let o=(i>>5)+1<<2,r,s,a,c,u,f=new ArrayBuffer(o),h=new DataView(f),A=0,g=yl;for(t=Bv.bytes.toBits(t),u=1;A<(o||1);u++){for(r=s=e.encrypt(g.concat(t,[u])),a=1;a<n;a++)for(s=e.encrypt(s),c=0;c<s.length;c++)r[c]^=s[c];for(a=0;A<(o||1)&&a<r.length;a++)h.setInt32(A,r[a]),A+=4}return f.slice(0,i/8)}};_y.hmacSha1=class{constructor(e){let t=this,n=t._hash=Tge.sha1,i=[[],[]];t._baseHash=[new n,new n];let o=t._baseHash[0].blockSize/32;e.length>o&&(e=new n().update(e).finalize());for(let r=0;r<o;r++)i[0][r]=e[r]^909522486,i[1][r]=e[r]^1549556828;t._baseHash[0].update(i[0]),t._baseHash[1].update(i[1]),t._resultHash=new n(t._baseHash[0])}reset(){let e=this;e._resultHash=new e._hash(e._baseHash[0]),e._updated=!1}update(e){let t=this;t._updated=!0,t._resultHash.update(e)}digest(){let e=this,t=e._resultHash.finalize(),n=new e._hash(e._baseHash[1]).update(t).finalize();return e.reset(),n}encrypt(e){if(this._updated)throw new Error("encrypt on already updated hmac called!");return this.update(e),this.digest(e)}};var rat=typeof crypto!=ju&&typeof crypto.getRandomValues==Up,yy="Invalid password",VE="Invalid signature",zp="zipjs-abort-check-password";function XU(e){return rat?crypto.getRandomValues(e):Sge.getRandomValues(e)}var mT=16,sat="raw",Dge={name:"PBKDF2"},aat={name:"HMAC"},cat="SHA-1",lat=Object.assign({hash:aat},Dge),BK=Object.assign({iterations:1e3,hash:{name:cat}},Dge),uat=["deriveBits"],vv=[8,12,16],Dv=[16,24,32],Cy=10,fat=[0,0,0,0],$U=typeof crypto!=ju,Mv=$U&&crypto.subtle,vge=$U&&typeof Mv!=ju,rA=Bv.bytes,dat=SK.aes,hat=wK.ctrGladman,mat=_y.hmacSha1,wge=$U&&vge&&typeof Mv.importKey==Up,Bge=$U&&vge&&typeof Mv.deriveBits==Up,JU=class extends TransformStream{constructor({password:t,rawPassword:n,signed:i,encryptionStrength:o,checkPasswordOnly:r}){super({start(){Object.assign(this,{ready:new Promise(s=>this.resolveReady=s),password:Mge(t,n),signed:i,strength:o-1,pending:new Uint8Array})},async transform(s,a){let c=this,{password:u,strength:f,resolveReady:h,ready:A}=c;u?(await Aat(c,f,u,hd(s,0,vv[f]+2)),s=hd(s,vv[f]+2),r?a.error(new Error(zp)):h()):await A;let g=new Uint8Array(s.length-Cy-(s.length-Cy)%mT);a.enqueue(Pge(c,s,g,0,Cy,!0))},async flush(s){let{signed:a,ctr:c,hmac:u,pending:f,ready:h}=this;if(u&&c){await h;let A=hd(f,0,f.length-Cy),g=hd(f,f.length-Cy),m=new Uint8Array;if(A.length){let _=Rv(rA,A);u.update(_);let y=c.update(_);m=Pv(rA,y)}if(a){let _=hd(Pv(rA,u.digest()),0,Cy);for(let y=0;y<Cy;y++)if(_[y]!=g[y])throw new Error(VE)}s.enqueue(m)}}})}},ZU=class extends TransformStream{constructor({password:t,rawPassword:n,encryptionStrength:i}){let o;super({start(){Object.assign(this,{ready:new Promise(r=>this.resolveReady=r),password:Mge(t,n),strength:i-1,pending:new Uint8Array})},async transform(r,s){let a=this,{password:c,strength:u,resolveReady:f,ready:h}=a,A=new Uint8Array;c?(A=await pat(a,u,c),f()):await h;let g=new Uint8Array(A.length+r.length-r.length%mT);g.set(A,0),s.enqueue(Pge(a,r,g,A.length,0))},async flush(r){let{ctr:s,hmac:a,pending:c,ready:u}=this;if(a&&s){await u;let f=new Uint8Array;if(c.length){let h=s.update(Rv(rA,c));a.update(h),f=Pv(rA,h)}o.signature=Pv(rA,a.digest()).slice(0,Cy),r.enqueue(DK(f,o.signature))}}}),o=this}};function Pge(e,t,n,i,o,r){let{ctr:s,hmac:a,pending:c}=e,u=t.length-o;c.length&&(t=DK(c,t),n=yat(n,u-u%mT));let f;for(f=0;f<=u-mT;f+=mT){let h=Rv(rA,hd(t,f,f+mT));r&&a.update(h);let A=s.update(h);r||a.update(A),n.set(Pv(rA,A),f+i)}return e.pending=hd(t,f),n}async function Aat(e,t,n,i){let o=await Rge(e,t,n,hd(i,0,vv[t])),r=hd(i,vv[t]);if(o[0]!=r[0]||o[1]!=r[1])throw new Error(yy)}async function pat(e,t,n){let i=XU(new Uint8Array(vv[t])),o=await Rge(e,t,n,i);return DK(i,o)}async function Rge(e,t,n,i){e.password=null;let o=await gat(sat,n,lat,!1,uat),r=await _at(Object.assign({salt:i},BK),o,8*(Dv[t]*2+2)),s=new Uint8Array(r),a=Rv(rA,hd(s,0,Dv[t])),c=Rv(rA,hd(s,Dv[t],Dv[t]*2)),u=hd(s,Dv[t]*2);return Object.assign(e,{keys:{key:a,authentication:c,passwordVerification:u},ctr:new hat(new dat(a),Array.from(fat)),hmac:new mat(c)}),u}async function gat(e,t,n,i,o){if(wge)try{return await Mv.importKey(e,t,n,i,o)}catch{return wge=!1,_y.importKey(t)}else return _y.importKey(t)}async function _at(e,t,n){if(Bge)try{return await Mv.deriveBits(e,t,n)}catch{return Bge=!1,_y.pbkdf2(t,e.salt,BK.iterations,n)}else return _y.pbkdf2(t,e.salt,BK.iterations,n)}function Mge(e,t){return t===ni?hT(e):t}function DK(e,t){let n=e;return e.length+t.length&&(n=new Uint8Array(e.length+t.length),n.set(e,0),n.set(t,e.length)),n}function yat(e,t){if(t&&t>e.length){let n=e;e=new Uint8Array(t),e.set(n,0)}return e}function hd(e,t,n){return e.subarray(t,n)}function Pv(e,t){return e.fromBits(t)}function Rv(e,t){return e.toBits(t)}var AT=12,eG=class extends TransformStream{constructor({password:t,passwordVerification:n,checkPasswordOnly:i}){super({start(){Object.assign(this,{password:t,passwordVerification:n}),Fge(this,t)},transform(o,r){let s=this;if(s.password){let a=Nge(s,o.subarray(0,AT));if(s.password=null,a[AT-1]!=s.passwordVerification)throw new Error(yy);o=o.subarray(AT)}i?r.error(new Error(zp)):r.enqueue(Nge(s,o))}})}},tG=class extends TransformStream{constructor({password:t,passwordVerification:n}){super({start(){Object.assign(this,{password:t,passwordVerification:n}),Fge(this,t)},transform(i,o){let r=this,s,a;if(r.password){r.password=null;let c=XU(new Uint8Array(AT));c[AT-1]=r.passwordVerification,s=new Uint8Array(i.length+c.length),s.set(Lge(r,c),0),a=AT}else s=new Uint8Array(i.length),a=0;s.set(Lge(r,i),a),o.enqueue(s)}})}};function Nge(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=Qge(e)^t[i],vK(e,n[i]);return n}function Lge(e,t){let n=new Uint8Array(t.length);for(let i=0;i<t.length;i++)n[i]=Qge(e)^t[i],vK(e,t[i]);return n}function Fge(e,t){let n=[305419896,591751049,878082192];Object.assign(e,{keys:n,crcKey0:new Gp(n[0]),crcKey2:new Gp(n[2])});for(let i=0;i<t.length;i++)vK(e,t.charCodeAt(i))}function vK(e,t){let[n,i,o]=e.keys;e.crcKey0.append([t]),n=~e.crcKey0.get(),i=Oge(Math.imul(Oge(i+kge(n)),134775813)+1),e.crcKey2.append([i>>>24]),o=~e.crcKey2.get(),e.keys=[n,i,o]}function Qge(e){let t=e.keys[2]|2;return kge(Math.imul(t,t^1)>>>8)}function kge(e){return e&255}function Oge(e){return e&4294967295}var Nv="Invalid uncompressed size",Cat="deflate-raw",nG=class extends TransformStream{constructor(t,{chunkSize:n,CompressionStream:i,CompressionStreamNative:o}){super({});let{compressed:r,encrypted:s,useCompressionStream:a,zipCrypto:c,signed:u,level:f}=t,h=this,A,g,m=super.readable;(!s||c)&&u&&(A=new wv,m=Ey(m,A)),r&&(m=Gge(m,a,{level:f,chunkSize:n},o,i)),s&&(c?m=Ey(m,new tG(t)):(g=new ZU(t),m=Ey(m,g))),Uge(h,m,()=>{let _;s&&!c&&(_=g.signature),(!s||c)&&u&&(_=new DataView(A.value.buffer).getUint32(0)),h.signature=_})}},iG=class extends TransformStream{constructor(t,{chunkSize:n,DecompressionStream:i,DecompressionStreamNative:o}){super({});let{zipCrypto:r,encrypted:s,signed:a,signature:c,compressed:u,useCompressionStream:f}=t,h,A,g=super.readable;s&&(r?g=Ey(g,new eG(t)):(A=new JU(t),g=Ey(g,A))),u&&(g=Gge(g,f,{chunkSize:n},o,i)),(!s||r)&&a&&(h=new wv,g=Ey(g,h)),Uge(this,g,()=>{if((!s||r)&&a){let m=new DataView(h.value.buffer);if(c!=m.getUint32(0,!1))throw new Error(VE)}})}};function Uge(e,t,n){t=Ey(t,new TransformStream({flush:n})),Object.defineProperty(e,"readable",{get(){return t}})}function Gge(e,t,n,i,o){let r=t&&i?i:o;return Ey(e,new r(Cat,n))}function Ey(e,t){return e.pipeThrough(t)}var zge="message",Vge="start",Hge="pull",PK="data",Wge="ack",RK="close",sG="deflate",aG="inflate";var oG=class extends TransformStream{constructor(t,n){super({});let i=this,{codecType:o}=t,r;o.startsWith(sG)?r=nG:o.startsWith(aG)&&(r=iG),i.outputSize=0;let s=0,a=new r(t,n),c=super.readable,u=new TransformStream({transform(h,A){h&&h.length&&(s+=h.length,A.enqueue(h))},flush(){Object.assign(i,{inputSize:s})}}),f=new TransformStream({transform(h,A){if(h&&h.length&&(A.enqueue(h),i.outputSize+=h.length,t.outputSize&&i.outputSize>t.outputSize))throw new Error(Nv)},flush(){let{signature:h}=a;Object.assign(i,{signature:h,inputSize:s})}});Object.defineProperty(i,"readable",{get(){return c.pipeThrough(u).pipeThrough(a).pipeThrough(f)}})}},rG=class extends TransformStream{constructor(t){let n;super({transform:i,flush(o){n&&n.length&&o.enqueue(n)}});function i(o,r){if(n){let s=new Uint8Array(n.length+o.length);s.set(n),s.set(o,n.length),o=s,n=null}o.length>t?(r.enqueue(o.slice(0,t)),i(o.slice(t),r)):n=o}}};var qge=typeof Worker!=ju;var pT=class{constructor(t,{readable:n,writable:i},{options:o,config:r,streamOptions:s,useWebWorkers:a,transferStreams:c,scripts:u},f){let{signal:h}=s;return Object.assign(t,{busy:!0,readable:n.pipeThrough(new rG(r.chunkSize)).pipeThrough(new NK(s),{signal:h}),writable:i,options:Object.assign({},o),scripts:u,transferStreams:c,terminate(){return new Promise(A=>{let{worker:g,busy:m}=t;g?(m?t.resolveTerminated=A:(g.terminate(),A()),t.interface=null):A()})},onTaskFinished(){let{resolveTerminated:A}=t;A&&(t.resolveTerminated=null,t.terminated=!0,t.worker.terminate(),A()),t.busy=!1,f(t)}}),(a&&qge?Eat:Kge)(t,r)}},NK=class extends TransformStream{constructor({onstart:t,onprogress:n,size:i,onend:o}){let r=0;super({async start(){t&&await MK(t,i)},async transform(s,a){r+=s.length,n&&await MK(n,r,i),a.enqueue(s)},async flush(){o&&await MK(o,r)}})}};async function MK(e,...t){try{await e(...t)}catch{}}function Kge(e,t){return{run:()=>Iat(e,t)}}function Eat(e,t){let{baseURL:n,chunkSize:i}=t;if(!e.interface){let o;try{o=Tat(e.scripts[0],n,e)}catch{return qge=!1,Kge(e,t)}Object.assign(e,{worker:o,interface:{run:()=>xat(e,{chunkSize:i})}})}return e.interface}async function Iat({options:e,readable:t,writable:n,onTaskFinished:i},o){let r;try{r=new oG(e,o),await t.pipeThrough(r).pipeTo(n,{preventClose:!0,preventAbort:!0});let{signature:s,inputSize:a,outputSize:c}=r;return{signature:s,inputSize:a,outputSize:c}}catch(s){throw r&&(s.outputSize=r.outputSize),s}finally{i()}}async function xat(e,t){let n,i,o=new Promise((A,g)=>{n=A,i=g});Object.assign(e,{reader:null,writer:null,resolveResult:n,rejectResult:i,result:o});let{readable:r,options:s,scripts:a}=e,{writable:c,closed:u}=bat(e.writable),f=cG({type:Vge,scripts:a.slice(1),options:s,config:t,readable:r,writable:c},e);f||Object.assign(e,{reader:r.getReader(),writer:c.getWriter()});let h=await o;return f||await c.getWriter().close(),await u,h}function bat(e){let t,n=new Promise(o=>t=o);return{writable:new WritableStream({async write(o){let r=e.getWriter();await r.ready,await r.write(o),r.releaseLock()},close(){t()},abort(o){return e.getWriter().abort(o)}}),closed:n}}var jge=!0,Yge=!0;function Tat(e,t,n){let i={type:"module"},o,r;typeof e==Up&&(e=e());try{o=new URL(e,t)}catch{o=e}if(jge)try{r=new Worker(o)}catch{jge=!1,r=new Worker(o,i)}else r=new Worker(o,i);return r.addEventListener(zge,s=>Sat(s,n)),r}function cG(e,{worker:t,writer:n,onTaskFinished:i,transferStreams:o}){try{let{value:r,readable:s,writable:a}=e,c=[];if(r&&(r.byteLength<r.buffer.byteLength?e.value=r.buffer.slice(0,r.byteLength):e.value=r.buffer,c.push(e.value)),o&&Yge?(s&&c.push(s),a&&c.push(a)):e.readable=e.writable=null,c.length)try{return t.postMessage(e,c),!0}catch{Yge=!1,e.readable=e.writable=null,t.postMessage(e)}else t.postMessage(e)}catch(r){throw n&&n.releaseLock(),i(),r}}async function Sat({data:e},t){let{type:n,value:i,messageId:o,result:r,error:s}=e,{reader:a,writer:c,resolveResult:u,rejectResult:f,onTaskFinished:h}=t;try{if(s){let{message:g,stack:m,code:_,name:y,outputSize:C}=s,E=new Error(g);Object.assign(E,{stack:m,code:_,name:y,outputSize:C}),A(E)}else{if(n==Hge){let{value:g,done:m}=await a.read();cG({type:PK,value:g,done:m,messageId:o},t)}n==PK&&(await c.ready,await c.write(new Uint8Array(i)),cG({type:Wge,messageId:o},t)),n==RK&&A(null,r)}}catch(g){cG({type:RK,messageId:o},t),A(g)}function A(g,m){g?f(g):u(m),c&&c.releaseLock(),h()}}var HE=[],LK=[];var Xge=0;async function lG(e,t){let{options:n,config:i}=t,{transferStreams:o,useWebWorkers:r,useCompressionStream:s,codecType:a,compressed:c,signed:u,encrypted:f}=n,{workerScripts:h,maxWorkers:A}=i;t.transferStreams=o||o===ni;let g=!c&&!u&&!f&&!t.transferStreams;return t.useWebWorkers=!g&&(r||r===ni&&i.useWebWorkers),t.scripts=t.useWebWorkers&&h?h[a]:[],n.useCompressionStream=s||s===ni&&i.useCompressionStream,(await m()).run();async function m(){let y=HE.find(C=>!C.busy);if(y)return Jge(y),new pT(y,e,t,_);if(HE.length<A){let C={indexWorker:Xge};return Xge++,HE.push(C),new pT(C,e,t,_)}else return new Promise(C=>LK.push({resolve:C,stream:e,workerOptions:t}))}function _(y){if(LK.length){let[{resolve:C,stream:E,workerOptions:I}]=LK.splice(0,1);C(new pT(y,E,I,_))}else y.worker?(Jge(y),wat(y,t)):HE=HE.filter(C=>C!=y)}}function wat(e,t){let{config:n}=t,{terminateWorkerTimeout:i}=n;Number.isFinite(i)&&i>=0&&(e.terminated?e.terminated=!1:e.terminateTimeout=setTimeout(async()=>{HE=HE.filter(o=>o!=e);try{await e.terminate()}catch{}},i))}function Jge(e){let{terminateTimeout:t}=e;t&&(clearTimeout(t),e.terminateTimeout=null)}var Bat="Writer iterator completed too soon",Dat="Writer not initialized",vat="text/plain";var Pat="Content-Type";var Rat=64*1024,QK="writable",gT=class{constructor(){this.size=0}init(){this.initialized=!0}},uG=class extends gT{get readable(){let t=this,{chunkSize:n=Rat}=t,i=new ReadableStream({start(){this.chunkOffset=0},async pull(o){let{offset:r=0,size:s,diskNumberStart:a}=i,{chunkOffset:c}=this,u=s===ni?n:Math.min(n,s-c),f=await Ua(t,r+c,u,a);o.enqueue(f),c+n>s||s===ni&&!f.length&&u?o.close():this.chunkOffset+=n}});return i}},OK=class extends gT{constructor(){super();let t=this,n=new WritableStream({write(i){if(!t.initialized)throw new Error(Dat);return t.writeUint8Array(i)}});Object.defineProperty(t,QK,{get(){return n}})}writeUint8Array(){}};var fG=class extends OK{constructor(t){super(),Object.assign(this,{data:"data:"+(t||"")+";base64,",pending:[]})}writeUint8Array(t){let n=this,i=0,o=n.pending,r=n.pending.length;for(n.pending="",i=0;i<Math.floor((r+t.length)/3)*3-r;i++)o+=String.fromCharCode(t[i]);for(;i<t.length;i++)n.pending+=String.fromCharCode(t[i]);o.length&&(o.length>2?n.data+=btoa(o):n.pending+=o)}getData(){return this.data+btoa(this.pending)}},Vp=class extends uG{constructor(t){super(),Object.assign(this,{blob:t,size:t.size})}async readUint8Array(t,n){let i=this,o=t+n,s=await(t||o<i.size?i.blob.slice(t,o):i.blob).arrayBuffer();return s.byteLength>n&&(s=s.slice(t,o)),new Uint8Array(s)}},Lv=class extends gT{constructor(t){super();let n=this,i=new TransformStream,o=[];t&&o.push([Pat,t]),Object.defineProperty(n,QK,{get(){return i.writable}}),n.blob=new Response(i.readable,{headers:o}).blob()}getData(){return this.blob}},dG=class extends Vp{constructor(t){super(new Blob([t],{type:vat}))}},hG=class extends Lv{constructor(t){super(t),Object.assign(this,{encoding:t,utf8:!t||t.toLowerCase()=="utf-8"})}async getData(){let{encoding:t,utf8:n}=this,i=await super.getData();if(i.text&&n)return i.text();{let o=new FileReader;return new Promise((r,s)=>{Object.assign(o,{onload:({target:a})=>r(a.result),onerror:()=>s(o.error)}),o.readAsText(i,t)})}}};var FK=class extends uG{constructor(t){super(),this.readers=t}async init(){let t=this,{readers:n}=t;t.lastDiskNumber=0,t.lastDiskOffset=0,await Promise.all(n.map(async(i,o)=>{await i.init(),o!=n.length-1&&(t.lastDiskOffset+=i.size),t.size+=i.size})),super.init()}async readUint8Array(t,n,i=0){let o=this,{readers:r}=this,s,a=i;a==-1&&(a=r.length-1);let c=t;for(;r[a]&&c>=r[a].size;)c-=r[a].size,a++;let u=r[a];if(u){let f=u.size;if(c+n<=f)s=await Ua(u,c,n);else{let h=f-c;s=new Uint8Array(n);let A=await Ua(u,c,h);s.set(A,0);let g=await o.readUint8Array(t+h,n-h,i);s.set(g,h),A.length+g.length<n&&(s=s.subarray(0,A.length+g.length))}}else s=new Uint8Array;return o.lastDiskNumber=Math.max(a,o.lastDiskNumber),s}},mG=class extends gT{constructor(t,n=4294967295){super();let i=this;Object.assign(i,{diskNumber:0,diskOffset:0,size:0,maxSize:n,availableSize:n});let o,r,s,a=new WritableStream({async write(f){let{availableSize:h}=i;if(s)f.length>=h?(await c(f.subarray(0,h)),await u(),i.diskOffset+=o.size,i.diskNumber++,s=null,await this.write(f.subarray(h))):await c(f);else{let{value:A,done:g}=await t.next();if(g&&!A)throw new Error(Bat);o=A,o.size=0,o.maxSize&&(i.maxSize=o.maxSize),i.availableSize=i.maxSize,await aA(o),r=A.writable,s=r.getWriter(),await this.write(f)}},async close(){await s.ready,await u()}});Object.defineProperty(i,QK,{get(){return a}});async function c(f){let h=f.length;h&&(await s.ready,await s.write(f),o.size+=h,i.size+=h,i.availableSize-=h)}async function u(){await s.close()}}},WE=class{constructor(t){return Array.isArray(t)&&(t=new FK(t)),t instanceof ReadableStream&&(t={readable:t}),t}},_T=class{constructor(t){return t.writable===ni&&typeof t.next==Up&&(t=new mG(t)),t instanceof WritableStream&&(t={writable:t}),t.size===ni&&(t.size=0),t instanceof mG||Object.assign(t,{diskNumber:0,diskOffset:0,availableSize:1/0,maxSize:1/0}),t}};async function aA(e,t){if(e.init&&!e.initialized)await e.init(t);else return Promise.resolve()}function Ua(e,t,n,i){return e.readUint8Array(t,n,i)}var Zge="\0\u263A\u263B\u2665\u2666\u2663\u2660\u2022\u25D8\u25CB\u25D9\u2642\u2640\u266A\u266B\u263C\u25BA\u25C4\u2195\u203C\xB6\xA7\u25AC\u21A8\u2191\u2193\u2192\u2190\u221F\u2194\u25B2\u25BC !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u2302\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0 ".split(""),Mat=Zge.length==256;function $ge(e){if(Mat){let t="";for(let n=0;n<e.length;n++)t+=Zge[e[n]];return t}else return new TextDecoder().decode(e)}function Ov(e,t){return t&&t.trim().toLowerCase()=="cp437"?$ge(e):new TextDecoder(t).decode(e)}var kK="filename",UK="rawFilename",Fv="comment",GK="rawComment",Qv="uncompressedSize",zK="compressedSize",VK="offset",AG="diskNumberStart",yT="lastModDate",pG="rawLastModDate",kv="lastAccessDate",e_e="rawLastAccessDate",Uv="creationDate",t_e="rawCreationDate",HK="internalFileAttribute",WK="internalFileAttributes",jK="externalFileAttribute",YK="externalFileAttributes",qK="msDosCompatible",gG="zip64",KK="encrypted",XK="version",JK="versionMadeBy",ZK="zipCrypto",Gv="directory",$K="executable",e7="compressionMethod",t7="signature",n7="extraField",Nat=[kK,UK,zK,Qv,yT,pG,Fv,GK,kv,Uv,VK,AG,AG,HK,WK,jK,YK,qK,gG,KK,XK,JK,ZK,Gv,$K,e7,t7,n7,"bitFlag","filenameUTF8","commentUTF8","rawExtraField","extraFieldZip64","extraFieldUnicodePath","extraFieldUnicodeComment","extraFieldAES","extraFieldNTFS","extraFieldExtendedTimestamp"],Iy=class{constructor(t){Nat.forEach(n=>this[n]=t[n])}};var n_e="filenameEncoding",i_e="commentEncoding",o_e="decodeText",r_e="extractPrependedData",s_e="extractAppendedData",_G="password",yG="rawPassword",CG="passThrough",EG="signal",a_e="checkPasswordOnly",c_e="checkOverlappingEntryOnly",l_e="checkOverlappingEntry",u_e="checkSignature",IG="useWebWorkers",xG="useCompressionStream",f_e="transferStreams",bG="preventClose",d_e="encryptionStrength",h_e="extendedTimestamp",m_e="keepOrder",A_e="level",p_e="bufferedWrite",g_e="dataDescriptorSignature",__e="useUnicodeFileNames",y_e="dataDescriptor",i7="supportZip64SplitFile",C_e="encodeText",o7="offset",r7="usdz";var s7="File format is not recognized",kat="End of central directory not found",Uat="End of Zip64 central directory locator not found",Gat="Central directory header not found",zat="Local file header not found",Vat="Zip64 extra field not found",Hat="File contains encrypted entry",Wat="Encryption method not supported",E_e="Compression method not supported",I_e="Split zip file",jat="Overlapping entry found",x_e="utf-8",b_e="cp437",Yat=[[Qv,4294967295],[zK,4294967295],[VK,4294967295],[AG,65535]],qat={65535:{getValue:xr,bytes:4},4294967295:{getValue:ET,bytes:8}},xT=class{constructor(t,n={}){Object.assign(this,{reader:new WE(t),options:n,config:Sv(),readRanges:[]})}async*getEntriesGenerator(t={}){let n=this,{reader:i}=n,{config:o}=n;if(await aA(i),(i.size===ni||!i.readUint8Array)&&(i=new Vp(await new Response(i.readable).blob()),await aA(i)),i.size<22)throw new Error(s7);i.chunkSize=KU(o);let r=await ect(i,101010256,i.size,22,65535*16);if(!r){let L=await Ua(i,0,4),p=Qr(L);throw xr(p)==134695760?new Error(I_e):new Error(kat)}let s=Qr(r),a=xr(s,12),c=xr(s,16),u=r.offset,f=Ga(s,20),h=u+22+f,A=Ga(s,4),g=i.lastDiskNumber||0,m=Ga(s,6),_=Ga(s,8),y=0,C=0;if(c==4294967295||a==4294967295||_==65535||m==65535){let L=await Ua(i,r.offset-20,20),p=Qr(L);if(xr(p,0)==117853008){c=ET(p,8);let x=await Ua(i,c,56,-1),T=Qr(x),w=r.offset-20-56;if(xr(T,0)!=101075792&&c!=w){let M=c;c=w,c>M&&(y=c-M),x=await Ua(i,c,56,-1),T=Qr(x)}if(xr(T,0)!=101075792)throw new Error(Uat);A==65535&&(A=xr(T,16)),m==65535&&(m=xr(T,20)),_==65535&&(_=ET(T,32)),a==4294967295&&(a=ET(T,40)),c-=a}}if(c>=i.size&&(y=i.size-c-a-22,c=i.size-a-22),g!=A)throw new Error(I_e);if(c<0)throw new Error(s7);let E=0,I=await Ua(i,c,a,m),b=Qr(I);if(a){let L=r.offset-a;if(xr(b,E)!=33639248&&c!=L){let p=c;c=L,c>p&&(y+=c-p),I=await Ua(i,c,a,m),b=Qr(I)}}let S=r.offset-c-(i.lastDiskOffset||0);if(a!=S&&S>=0&&(a=S,I=await Ua(i,c,a,m),b=Qr(I)),c<0||c>=i.size)throw new Error(s7);let B=rc(n,t,n_e),v=rc(n,t,i_e);for(let L=0;L<_;L++){let p=new c7(i,o,n.options);if(xr(b,E)!=33639248)throw new Error(Gat);S_e(p,b,E+6);let x=!!p.bitFlag.languageEncodingFlag,T=E+46,w=T+p.filenameLength,M=w+p.extraFieldLength,O=Ga(b,E+4),U=O>>8==0,Q=O>>8==3,z=I.subarray(T,w),F=Ga(b,E+32),H=M+F,W=I.subarray(M,H),Z=x,Y=x,$=xr(b,E+38),X=U&&(CT(b,E+38)&16)==16||Q&&($>>16&61440)==16384||z.length&&z[z.length-1]=="/".charCodeAt(0),he=Q&&($>>16&73)!=0,ge=xr(b,E+42)+y;Object.assign(p,{versionMadeBy:O,msDosCompatible:U,compressedSize:0,uncompressedSize:0,commentLength:F,directory:X,offset:ge,diskNumberStart:Ga(b,E+34),internalFileAttributes:Ga(b,E+36),externalFileAttributes:$,rawFilename:z,filenameUTF8:Z,commentUTF8:Y,rawExtraField:I.subarray(w,M),executable:he}),p.internalFileAttribute=p.internalFileAttributes,p.externalFileAttribute=p.externalFileAttributes;let fe=rc(n,t,o_e)||Ov,ye=Z?x_e:B||b_e,Ie=Y?x_e:v||b_e,ve=fe(z,ye);ve===ni&&(ve=Ov(z,ye));let Te=fe(W,Ie);Te===ni&&(Te=Ov(W,Ie)),Object.assign(p,{rawComment:W,filename:ve,comment:Te,directory:X||ve.endsWith("/")}),C=Math.max(ge,C),w_e(p,p,b,E+6),p.zipCrypto=p.encrypted&&!p.extraFieldAES;let ke=new Iy(p);ke.getData=(qe,tt)=>p.getData(qe,ke,n.readRanges,tt),ke.arrayBuffer=async qe=>{let tt=new TransformStream,[$t]=await Promise.all([new Response(tt.readable).arrayBuffer(),p.getData(tt,ke,n.readRanges,qe)]);return $t},E=H;let{onprogress:Ge}=t;if(Ge)try{await Ge(L+1,_,new Iy(p))}catch{}yield ke}let P=rc(n,t,r_e),N=rc(n,t,s_e);return P&&(n.prependedData=C>0?await Ua(i,0,C):new Uint8Array),n.comment=f?await Ua(i,u+22,f):new Uint8Array,N&&(n.appendedData=h<i.size?await Ua(i,h,i.size-h):new Uint8Array),!0}async getEntries(t={}){let n=[];for await(let i of this.getEntriesGenerator(t))n.push(i);return n}async close(){}};var c7=class{constructor(t,n,i){Object.assign(this,{reader:t,config:n,options:i})}async getData(t,n,i,o={}){let r=this,{reader:s,offset:a,diskNumberStart:c,extraFieldAES:u,extraFieldZip64:f,compressionMethod:h,config:A,bitFlag:g,signature:m,rawLastModDate:_,uncompressedSize:y,compressedSize:C}=r,{dataDescriptor:E}=g,I=n.localDirectory={},b=await Ua(s,a,30,c),S=Qr(b),B=rc(r,o,_G),v=rc(r,o,yG),P=rc(r,o,CG);if(B=B&&B.length&&B,v=v&&v.length&&v,u&&u.originalCompressionMethod!=99)throw new Error(E_e);if(h!=0&&h!=8&&!P)throw new Error(E_e);if(xr(S,0)!=67324752)throw new Error(zat);S_e(I,S,4);let{extraFieldLength:N,filenameLength:L,lastAccessDate:p,creationDate:x}=I;I.rawExtraField=N?await Ua(s,a+30+L,N,c):new Uint8Array,w_e(r,I,S,4,!0),Object.assign(n,{lastAccessDate:p,creationDate:x});let T=r.encrypted&&I.encrypted&&!P,w=T&&!u;if(P||(n.zipCrypto=w),T){if(!w&&u.strength===ni)throw new Error(Wat);if(!B&&!v)throw new Error(Hat)}let M=a+30+L+N,O=C,U=s.readable;Object.assign(U,{diskNumberStart:c,offset:M,size:O});let Q=rc(r,o,EG),z=rc(r,o,a_e),F=rc(r,o,l_e),H=rc(r,o,c_e);H&&(F=!0);let{onstart:W,onprogress:Z,onend:Y}=o,$={options:{codecType:aG,password:B,rawPassword:v,zipCrypto:w,encryptionStrength:u&&u.strength,signed:rc(r,o,u_e)&&!P,passwordVerification:w&&(E?_>>>8&255:m>>>24&255),outputSize:y,signature:m,compressed:h!=0&&!P,encrypted:r.encrypted&&!P,useWebWorkers:rc(r,o,IG),useCompressionStream:rc(r,o,xG),transferStreams:rc(r,o,f_e),checkPasswordOnly:z},config:A,streamOptions:{signal:Q,size:O,onstart:W,onprogress:Z,onend:Y}};F&&await $at({reader:s,fileEntry:n,offset:a,diskNumberStart:c,signature:m,compressedSize:C,uncompressedSize:y,dataOffset:M,dataDescriptor:E||I.bitFlag.dataDescriptor,extraFieldZip64:f||I.extraFieldZip64,readRanges:i});let X;try{if(!H){z&&(t=new WritableStream),t=new _T(t),await aA(t,P?C:y),{writable:X}=t;let{outputSize:he}=await lG({readable:U,writable:X},$);if(t.size+=he,he!=(P?C:y))throw new Error(Nv)}}catch(he){if(he.outputSize!==ni&&(t.size+=he.outputSize),!z||he.message!=zp)throw he}finally{!rc(r,o,bG)&&X&&!X.locked&&await X.getWriter().close()}return z||H?ni:t.getData?t.getData():X}};function S_e(e,t,n){let i=e.rawBitFlag=Ga(t,n+2),o=(i&1)==1,r=xr(t,n+6);Object.assign(e,{encrypted:o,version:Ga(t,n),bitFlag:{level:(i&6)>>1,dataDescriptor:(i&8)==8,languageEncodingFlag:(i&2048)==2048},rawLastModDate:r,lastModDate:tct(r),filenameLength:Ga(t,n+22),extraFieldLength:Ga(t,n+24)})}function w_e(e,t,n,i,o){let{rawExtraField:r}=t,s=t.extraField=new Map,a=Qr(new Uint8Array(r)),c=0;try{for(;c<r.length;){let C=Ga(a,c),E=Ga(a,c+2);s.set(C,{type:C,data:r.slice(c+4,c+4+E)}),c+=4+E}}catch{}let u=Ga(n,i+4);Object.assign(t,{signature:xr(n,i+10),compressedSize:xr(n,i+14),uncompressedSize:xr(n,i+18)});let f=s.get(1);f&&(Kat(f,t),t.extraFieldZip64=f);let h=s.get(28789);h&&(T_e(h,kK,UK,t,e),t.extraFieldUnicodePath=h);let A=s.get(25461);A&&(T_e(A,Fv,GK,t,e),t.extraFieldUnicodeComment=A);let g=s.get(39169);g?(Xat(g,t,u),t.extraFieldAES=g):t.compressionMethod=u;let m=s.get(10);m&&(Jat(m,t),t.extraFieldNTFS=m);let _=s.get(21589);_&&(Zat(_,t,o),t.extraFieldExtendedTimestamp=_);let y=s.get(6534);y&&(t.extraFieldUSDZ=y)}function Kat(e,t){t.zip64=!0;let n=Qr(e.data),i=Yat.filter(([o,r])=>t[o]==r);for(let o=0,r=0;o<i.length;o++){let[s,a]=i[o];if(t[s]==a){let c=qat[a];t[s]=e[s]=c.getValue(n,r),r+=c.bytes}else if(e[s])throw new Error(Vat)}}function T_e(e,t,n,i,o){let r=Qr(e.data),s=new Gp;s.append(o[n]);let a=Qr(new Uint8Array(4));a.setUint32(0,s.get(),!0);let c=xr(r,1);Object.assign(e,{version:CT(r,0),[t]:Ov(e.data.subarray(5)),valid:!o.bitFlag.languageEncodingFlag&&c==xr(a,0)}),e.valid&&(i[t]=e[t],i[t+"UTF8"]=!0)}function Xat(e,t,n){let i=Qr(e.data),o=CT(i,4);Object.assign(e,{vendorVersion:CT(i,0),vendorId:CT(i,2),strength:o,originalCompressionMethod:n,compressionMethod:Ga(i,5)}),t.compressionMethod=e.compressionMethod}function Jat(e,t){let n=Qr(e.data),i=4,o;try{for(;i<e.data.length&&!o;){let r=Ga(n,i),s=Ga(n,i+2);r==1&&(o=e.data.slice(i+4,i+4+s)),i+=4+s}}catch{}try{if(o&&o.length==24){let r=Qr(o),s=r.getBigUint64(0,!0),a=r.getBigUint64(8,!0),c=r.getBigUint64(16,!0);Object.assign(e,{rawLastModDate:s,rawLastAccessDate:a,rawCreationDate:c});let u=a7(s),f=a7(a),h=a7(c),A={lastModDate:u,lastAccessDate:f,creationDate:h};Object.assign(e,A),Object.assign(t,A)}}catch{}}function Zat(e,t,n){let i=Qr(e.data),o=CT(i,0),r=[],s=[];n?((o&1)==1&&(r.push(yT),s.push(pG)),(o&2)==2&&(r.push(kv),s.push(e_e)),(o&4)==4&&(r.push(Uv),s.push(t_e))):e.data.length>=5&&(r.push(yT),s.push(pG));let a=1;r.forEach((c,u)=>{if(e.data.length>=a+4){let f=xr(i,a);t[c]=e[c]=new Date(f*1e3);let h=s[u];e[h]=f}a+=4})}async function $at({reader:e,fileEntry:t,offset:n,diskNumberStart:i,signature:o,compressedSize:r,uncompressedSize:s,dataOffset:a,dataDescriptor:c,extraFieldZip64:u,readRanges:f}){let h=0;if(i)for(let m=0;m<i;m++){let _=e.readers[m];h+=_.size}let A=0;if(c&&(u?A=20:A=12),A){let m=await Ua(e,a+r,A+4,i);if(xr(Qr(m),0)==134695760){let y=xr(Qr(m),4),C,E;u?(C=ET(Qr(m),8),E=ET(Qr(m),16)):(C=xr(Qr(m),8),E=xr(Qr(m),12)),(t.encrypted&&!t.zipCrypto||y==o)&&C==r&&E==s&&(A+=4)}}let g={start:h+n,end:h+a+r+A,fileEntry:t};for(let m of f)if(m.fileEntry!=t&&g.start>=m.start&&g.start<m.end){let _=new Error(jat);throw _.overlappingEntry=m.fileEntry,_}f.push(g)}async function ect(e,t,n,i,o){let r=new Uint8Array(4),s=Qr(r);nct(s,0,t);let a=i+o;return await c(i)||await c(Math.min(a,n));async function c(u){let f=n-u,h=await Ua(e,f,u);for(let A=h.length-i;A>=0;A--)if(h[A]==r[0]&&h[A+1]==r[1]&&h[A+2]==r[2]&&h[A+3]==r[3])return{offset:f+A,buffer:h.slice(A,A+i).buffer}}}function rc(e,t,n){return t[n]===ni?e.options[n]:t[n]}function tct(e){let t=(e&4294901760)>>16,n=e&65535;try{return new Date(1980+((t&65024)>>9),((t&480)>>5)-1,t&31,(n&63488)>>11,(n&2016)>>5,(n&31)*2,0)}catch{}}function a7(e){return new Date(Number(e/BigInt(1e4)-BigInt(116444736e5)))}function CT(e,t){return e.getUint8(t)}function Ga(e,t){return e.getUint16(t,!0)}function xr(e,t){return e.getUint32(t,!0)}function ET(e,t){return Number(e.getBigUint64(t,!0))}function nct(e,t,n){e.setUint32(t,n,!0)}function Qr(e){return new DataView(e.buffer)}var lct="File already exists",uct="Zip file comment exceeds 64KB",fct="File entry comment exceeds 64KB",dct="File entry name exceeds 64KB",v_e="Version exceeds 65535",hct="The strength must equal 1, 2, or 3",mct="Extra field type exceeds 65535",Act="Extra field data exceeds 64KB",B7="Zip64 is not supported (make sure 'keepOrder' is set to 'true')",pct="Undefined uncompressed size",gct="Zip file not empty",P_e=new Uint8Array([7,0,2,0,65,69,3,0,0]),T7=0,R_e=[],LG=class{constructor(t,n={}){t=new _T(t);let i=t.availableSize!==ni&&t.availableSize>0&&t.availableSize!==1/0&&t.maxSize!==ni&&t.maxSize>0&&t.maxSize!==1/0;Object.assign(this,{writer:t,addSplitZipSignature:i,options:n,config:Sv(),files:new Map,filenames:new Set,offset:n[o7]===ni?t.size||t.writable.size||0:n[o7],pendingEntriesSize:0,pendingAddFileCalls:new Set,bufferedWrites:0})}async prependZip(t){if(this.filenames.size)throw new Error(gct);t=new WE(t);let n=new xT(t.readable),i=await n.getEntries();await n.close(),await t.readable.pipeTo(this.writer.writable,{preventClose:!0,preventAbort:!0}),this.writer.size=this.offset=t.size,this.filenames=new Set(i.map(o=>o.filename)),this.files=new Map(i.map(o=>{let{version:r,compressionMethod:s,lastModDate:a,lastAccessDate:c,creationDate:u,rawFilename:f,bitFlag:h,encrypted:A,uncompressedSize:g,compressedSize:m,diskOffset:_,diskNumber:y,zip64:C}=o,{rawExtraFieldZip64:E,rawExtraFieldAES:I,rawExtraFieldExtendedTimestamp:b,rawExtraFieldNTFS:S,rawExtraField:B}=o,{level:v,languageEncodingFlag:P,dataDescriptor:N}=h;E=E||new Uint8Array,I=I||new Uint8Array,b=b||new Uint8Array,S=S||new Uint8Array,B=B||new Uint8Array;let L=Ui(E,I,b,S,B),p=C&&g>4294967295,x=C&&m>4294967295,{headerArray:T,headerView:w}=L_e({version:r,bitFlag:O_e(v,P,N,A,s),compressionMethod:s,uncompressedSize:g,compressedSize:m,lastModDate:a,rawFilename:f,zip64CompressedSize:x,zip64UncompressedSize:p,extraFieldLength:L});return Object.assign(o,{zip64UncompressedSize:p,zip64CompressedSize:x,zip64Offset:C&&this.offset-_>4294967295,zip64DiskNumberStart:C&&y>65535,rawExtraFieldZip64:E,rawExtraFieldAES:I,rawExtraFieldExtendedTimestamp:b,rawExtraFieldNTFS:S,rawExtraField:B,extendedTimestamp:b.length>0||S.length>0,extraFieldExtendedTimestampFlag:1+(c?2:0)+(u?4:0),headerArray:T,headerView:w}),[o.filename,o]}))}async add(t="",n,i={}){let o=this,{pendingAddFileCalls:r,config:s}=o;T7<s.maxWorkers?T7++:await new Promise(c=>R_e.push(c));let a;try{if(t=t.trim(),o.filenames.has(t))throw new Error(lct);return o.filenames.add(t),a=_ct(o,t,n,i),r.add(a),await a}catch(c){throw o.filenames.delete(t),c}finally{r.delete(a);let c=R_e.shift();c?c():T7--}}remove(t){let{filenames:n,files:i}=this;if(typeof t=="string"&&(t=i.get(t)),t&&t.filename!==ni){let{filename:o}=t;if(n.has(o)&&i.has(o))return n.delete(o),i.delete(o),!0}return!1}async close(t=new Uint8Array,n={}){let i=this,{pendingAddFileCalls:o,writer:r}=this,{writable:s}=r;for(;o.size;)await Promise.allSettled(Array.from(o));return await Sct(this,t,n),io(i,n,bG)||await s.getWriter().close(),r.getData?r.getData():s}};async function _ct(e,t,n,i){t=t.trim();let o=io(e,i,qK),r=io(e,i,JK,o?20:768),s=io(e,i,$K);if(r>65535)throw new Error(v_e);let a=io(e,i,YK,0);a===0&&(a=io(e,i,jK,0)),!i[Gv]&&t.endsWith("/")&&(i[Gv]=!0),io(e,i,Gv)?(t.endsWith("/")||(t+="/"),a===0&&(a=16,o||(a|=16877<<16))):!o&&a===0&&(s?a=493<<16:a=420<<16);let u=io(e,i,C_e,hT),f=u(t);if(f===ni&&(f=hT(t)),Ui(f)>65535)throw new Error(dct);let h=i[Fv]||"",A=u(h);if(A===ni&&(A=hT(h)),Ui(A)>65535)throw new Error(fct);let g=io(e,i,XK,20);if(g>65535)throw new Error(v_e);let m=io(e,i,yT,new Date),_=io(e,i,kv),y=io(e,i,Uv),C=io(e,i,WK,0);C===0&&(C=io(e,i,HK,0));let E=io(e,i,CG),I,b;E||(I=io(e,i,_G),b=io(e,i,yG));let S=io(e,i,d_e,3),B=io(e,i,ZK),v=io(e,i,h_e,!0),P=io(e,i,m_e,!0),N=io(e,i,A_e),L=io(e,i,IG),p=io(e,i,p_e),x=io(e,i,g_e,!1),T=io(e,i,EG),w=io(e,i,__e,!0),M=io(e,i,xG),O=io(e,i,e7),U=io(e,i,y_e);p&&U===ni&&(U=!1),(U===ni||B)&&(U=!0);let Q=io(e,i,gG);if(!B&&(I!==ni||b!==ni)&&!(S>=1&&S<=3))throw new Error(hct);let z=new Uint8Array,F=i[n7];if(F){let $t=0,it=0;F.forEach(tn=>$t+=4+Ui(tn)),z=new Uint8Array($t),F.forEach((tn,Wt)=>{if(Wt>65535)throw new Error(mct);if(Ui(tn)>65535)throw new Error(Act);Ns(z,new Uint16Array([Wt]),it),Ns(z,new Uint16Array([Ui(tn)]),it+2),Ns(z,tn,it+4),it+=4+Ui(tn)})}let H=0,W=0,Z=0;if(E&&(Z=i[Qv],Z===ni))throw new Error(pct);let Y=Q===!0;n&&(n=new WE(n),await aA(n),E?(i.uncompressedSize=Z,H=N_e(Z)):n.size===ni?(U=!0,(Q||Q===ni)&&(Q=!0,Z=H=4294967296)):(i.uncompressedSize=Z=n.size,H=N_e(Z)));let{diskOffset:$,diskNumber:X,maxSize:he}=e.writer,ge=Y||Z>4294967295,fe=Y||H>4294967295,ye=Y||e.offset+e.pendingEntriesSize-$>4294967295,ve=io(e,i,i7,!0)&&Y||X+Math.ceil(e.pendingEntriesSize/he)>65535;if(ye||ge||fe||ve){if(Q===!1||!P)throw new Error(B7);Q=!0}Q=Q||!1;let Te=io(e,i,KK);i=Object.assign({},i,{rawFilename:f,rawComment:A,version:g,versionMadeBy:r,lastModDate:m,lastAccessDate:_,creationDate:y,rawExtraField:z,zip64:Q,zip64UncompressedSize:ge,zip64CompressedSize:fe,zip64Offset:ye,zip64DiskNumberStart:ve,password:I,rawPassword:b,level:!M&&e.config.CompressionStream===ni&&e.config.CompressionStreamNative===ni?0:N,useWebWorkers:L,encryptionStrength:S,extendedTimestamp:v,zipCrypto:B,bufferedWrite:p,keepOrder:P,useUnicodeFileNames:w,dataDescriptor:U,dataDescriptorSignature:x,signal:T,msDosCompatible:o,internalFileAttribute:C,internalFileAttributes:C,externalFileAttribute:a,externalFileAttributes:a,useCompressionStream:M,passThrough:E,encrypted:!!(I&&Ui(I)||b&&Ui(b))||E&&Te,signature:i[t7],compressionMethod:O,uncompressedSize:Z,offset:e.offset-$,diskNumberStart:X});let ke=Ect(i),Ge=xct(i),qe=Ui(ke.localHeaderArray,Ge.dataDescriptorArray);W=qe+H,e.options[r7]&&(W+=W+64),e.pendingEntriesSize+=W;let tt;try{tt=await yct(e,t,n,{headerInfo:ke,dataDescriptorInfo:Ge,metadataSize:qe},i)}finally{e.pendingEntriesSize-=W}return Object.assign(tt,{name:t,comment:h,extraField:F}),new Iy(tt)}async function yct(e,t,n,i,o){let{files:r,writer:s}=e,{keepOrder:a,dataDescriptor:c,signal:u}=o,{headerInfo:f}=i,h=e.options[r7],A=Array.from(r.values()).pop(),g={},m,_,y,C,E,I,b;r.set(t,g);try{let P;a&&(P=A&&A.lock,S()),(o.bufferedWrite||e.writerLocked||e.bufferedWrites&&a||!c)&&!h?(I=new TransformStream,I.size=0,m=!0,e.bufferedWrites++,await aA(s)):(I=s,await B()),await aA(I);let{writable:N,diskOffset:L}=s;if(e.addSplitZipSignature){delete e.addSplitZipSignature;let M=new Uint8Array(4),O=sc(M);ki(O,0,134695760),await Hp(s,M),e.offset+=4}h&&Ict(i,e.offset-L);let{localHeaderView:p,localHeaderArray:x}=f;m||(await P,await v(N));let{diskNumber:T}=s;E=!0,g.diskNumberStart=T,m?b=new Response(I.readable).blob():await Hp(I,x),g=await Cct(n,I,g,i,e.config,o);let{zip64:w}=g;if(E=!1,r.set(t,g),g.filename=t,m){let[M]=await Promise.all([b,I.writable.getWriter().close(),P]);await B(),C=!0,g.diskNumberStart=s.diskNumber,g.offset=e.offset-s.diskOffset,w&&M_e(g),Tct(g,p,o),await v(N),await Hp(s,x),await M.stream().pipeTo(N,{preventClose:!0,preventAbort:!0,signal:u}),s.size+=I.size,C=!1}else g.offset=e.offset-L,w&&M_e(g);if(g.offset>4294967295&&!w)throw new Error(B7);return e.offset+=g.size,g}catch(P){if(m&&C||!m&&E){if(e.hasCorruptedEntries=!0,P)try{P.corruptedEntry=!0}catch{}m?e.offset+=I.size:e.offset=I.size}throw r.delete(t),P}finally{m&&e.bufferedWrites--,y&&y(),_&&_()}function S(){g.lock=new Promise(P=>y=P)}async function B(){e.writerLocked=!0;let{lockWriter:P}=e;e.lockWriter=new Promise(N=>_=()=>{e.writerLocked=!1,N()}),await P}async function v(P){Ui(f.localHeaderArray)>s.availableSize&&(s.availableSize=0,await Hp(P,new Uint8Array))}}async function Cct(e,t,{diskNumberStart:n,lock:i},o,r,s){let{headerInfo:a,dataDescriptorInfo:c,metadataSize:u}=o,{headerArray:f,headerView:h,lastModDate:A,rawLastModDate:g,encrypted:m,compressed:_,version:y,compressionMethod:C,rawExtraFieldZip64:E,localExtraFieldZip64Length:I,rawExtraFieldExtendedTimestamp:b,extraFieldExtendedTimestampFlag:S,rawExtraFieldNTFS:B,rawExtraFieldAES:v}=a,{dataDescriptorArray:P}=c,{rawFilename:N,lastAccessDate:L,creationDate:p,password:x,rawPassword:T,level:w,zip64:M,zip64UncompressedSize:O,zip64CompressedSize:U,zip64Offset:Q,zip64DiskNumberStart:z,zipCrypto:F,dataDescriptor:H,directory:W,executable:Z,versionMadeBy:Y,rawComment:$,rawExtraField:X,useWebWorkers:he,onstart:ge,onprogress:fe,onend:ye,signal:Ie,encryptionStrength:ve,extendedTimestamp:Te,msDosCompatible:ke,internalFileAttributes:Ge,externalFileAttributes:qe,useCompressionStream:tt,passThrough:$t}=s,it={lock:i,versionMadeBy:Y,zip64:M,directory:!!W,executable:!!Z,filenameUTF8:!0,rawFilename:N,commentUTF8:!0,rawComment:$,rawExtraFieldZip64:E,localExtraFieldZip64Length:I,rawExtraFieldExtendedTimestamp:b,rawExtraFieldNTFS:B,rawExtraFieldAES:v,rawExtraField:X,extendedTimestamp:Te,msDosCompatible:ke,internalFileAttributes:Ge,externalFileAttributes:qe,diskNumberStart:n},{signature:tn,uncompressedSize:Wt}=s,vt=0;$t||(Wt=0);let{writable:bi}=t;if(e){e.chunkSize=KU(r);let di=e.readable,Ot=e.size,Tt={options:{codecType:sG,level:w,rawPassword:T,password:x,encryptionStrength:ve,zipCrypto:m&&F,passwordVerification:m&&F&&g>>8&255,signed:!$t,compressed:_&&!$t,encrypted:m&&!$t,useWebWorkers:he,useCompressionStream:tt,transferStreams:!1},config:r,streamOptions:{signal:Ie,size:Ot,onstart:ge,onprogress:fe,onend:ye}};try{let ii=await lG({readable:di,writable:bi},Tt);vt=ii.outputSize,t.size+=vt,$t||(Wt=ii.inputSize,tn=ii.signature)}catch(ii){throw ii.outputSize!==ni&&(t.size+=ii.outputSize),ii}}return bct({signature:tn,compressedSize:vt,uncompressedSize:Wt,headerInfo:a,dataDescriptorInfo:c},s),H&&await Hp(t,P),Object.assign(it,{uncompressedSize:Wt,compressedSize:vt,lastModDate:A,rawLastModDate:g,creationDate:p,lastAccessDate:L,encrypted:m,zipCrypto:F,size:u+vt,compressionMethod:C,version:y,headerArray:f,headerView:h,signature:tn,extraFieldExtendedTimestampFlag:S,zip64UncompressedSize:O,zip64CompressedSize:U,zip64Offset:Q,zip64DiskNumberStart:z}),it}function Ect(e){let{rawFilename:t,lastModDate:n,lastAccessDate:i,creationDate:o,level:r,zip64:s,zipCrypto:a,useUnicodeFileNames:c,dataDescriptor:u,directory:f,rawExtraField:h,encryptionStrength:A,extendedTimestamp:g,passThrough:m,encrypted:_,zip64UncompressedSize:y,zip64CompressedSize:C,zip64Offset:E,zip64DiskNumberStart:I,uncompressedSize:b,offset:S,diskNumberStart:B}=e,{version:v,compressionMethod:P}=e,N=!f&&(r>0||r===ni&&P!==0),L,p=m||!N,x=s&&(e.bufferedWrite||!y&&!C||p);if(s){let $=4;y&&($+=8),C&&($+=8),E&&($+=8),I&&($+=4),L=new Uint8Array($);let X=sc(L);if(po(X,0,1),po(X,2,Ui(L)-4),x){let he=sc(L),ge=4;y&&(Xs(he,ge,BigInt(b)),ge+=8),C&&p&&(Xs(he,ge,BigInt(b)),ge+=8),E&&(Xs(he,ge,BigInt(S)),ge+=8),I&&(ki(he,ge,B),ge+=4)}}else L=new Uint8Array;let T;if(_&&!a){T=new Uint8Array(Ui(P_e)+2);let $=sc(T);po($,0,39169),Ns(T,P_e,2),w7($,8,A)}else T=new Uint8Array;let w,M,O;if(g){M=new Uint8Array(9+(i?4:0)+(o?4:0));let $=sc(M);po($,0,21589),po($,2,Ui(M)-4),O=1+(i?2:0)+(o?4:0),w7($,4,O);let X=5;ki($,X,Math.floor(n.getTime()/1e3)),X+=4,i&&(ki($,X,Math.floor(i.getTime()/1e3)),X+=4),o&&ki($,X,Math.floor(o.getTime()/1e3));try{w=new Uint8Array(36);let he=sc(w),ge=S7(n);po(he,0,10),po(he,2,32),po(he,8,1),po(he,10,24),Xs(he,12,ge),Xs(he,20,S7(i)||ge),Xs(he,28,S7(o)||ge)}catch{w=new Uint8Array}}else w=M=new Uint8Array;P===ni&&(P=N?8:0),s&&(v=v>45?v:45),_&&!a&&(v=v>51?v:51,T[9]=P,P=99);let U=x?Ui(L):0,Q=U+Ui(T,M,w,h),{headerArray:z,headerView:F,rawLastModDate:H}=L_e({version:v,bitFlag:O_e(r,c,u,_,P),compressionMethod:P,uncompressedSize:b,lastModDate:n<TK?TK:n>bK?bK:n,rawFilename:t,zip64CompressedSize:C,zip64UncompressedSize:y,extraFieldLength:Q}),W=30,Z=new Uint8Array(W+Ui(t)+Q),Y=sc(Z);return ki(Y,0,67324752),Ns(Z,z,4),Ns(Z,t,W),W+=Ui(t),x&&Ns(Z,L,W),W+=U,Ns(Z,T,W),W+=Ui(T),Ns(Z,M,W),W+=Ui(M),Ns(Z,w,W),W+=Ui(w),Ns(Z,h,W),u&&(ki(Y,18,0),ki(Y,22,0)),{localHeaderArray:Z,localHeaderView:Y,headerArray:z,headerView:F,lastModDate:n,rawLastModDate:H,encrypted:_,compressed:N,version:v,compressionMethod:P,extraFieldExtendedTimestampFlag:O,rawExtraFieldZip64:L,localExtraFieldZip64Length:U,rawExtraFieldExtendedTimestamp:M,rawExtraFieldNTFS:w,rawExtraFieldAES:T,extraFieldLength:Q}}function Ict(e,t){let{headerInfo:n}=e,{localHeaderArray:i,extraFieldLength:o}=n,r=sc(i),s=64-(t+Ui(i))%64;s<4&&(s+=64);let a=new Uint8Array(s),c=sc(a);po(c,0,6534),po(c,2,s-2);let u=i;n.localHeaderArray=i=new Uint8Array(Ui(u)+s),Ns(i,u),Ns(i,a,Ui(u)),r=sc(i),po(r,28,o+s),e.metadataSize+=s}function xct({zip64:e,dataDescriptor:t,dataDescriptorSignature:n}){let i=new Uint8Array,o,r=0,s=e?20:12;return n&&(s+=4),t&&(i=new Uint8Array(s),o=sc(i),n&&(r=4,ki(o,0,134695760))),{dataDescriptorArray:i,dataDescriptorView:o,dataDescriptorOffset:r}}function bct({signature:e,compressedSize:t,uncompressedSize:n,headerInfo:i,dataDescriptorInfo:o},{zip64:r,zipCrypto:s,dataDescriptor:a}){let{headerView:c,encrypted:u}=i,{dataDescriptorView:f,dataDescriptorOffset:h}=o;(!u||s)&&e!==ni&&(ki(c,10,e),a&&ki(f,h,e)),r?a&&(Xs(f,h+4,BigInt(t)),Xs(f,h+12,BigInt(n))):(ki(c,14,t),ki(c,18,n),a&&(ki(f,h+4,t),ki(f,h+8,n)))}function Tct({rawFilename:e,encrypted:t,zip64:n,localExtraFieldZip64Length:i,signature:o,compressedSize:r,uncompressedSize:s,offset:a,diskNumberStart:c,zip64UncompressedSize:u,zip64CompressedSize:f,zip64Offset:h,zip64DiskNumberStart:A},g,{dataDescriptor:m}){if(m||(t||ki(g,14,o),n||(ki(g,18,r),ki(g,22,s))),n&&i){let _=30+Ui(e)+4;u&&(Xs(g,_,BigInt(s)),_+=8),f&&(Xs(g,_,BigInt(r)),_+=8),h&&(Xs(g,_,BigInt(a)),_+=8),A&&ki(g,_,c)}}function M_e({compressedSize:e,uncompressedSize:t,offset:n,diskNumberStart:i,zip64UncompressedSize:o,zip64CompressedSize:r,zip64Offset:s,zip64DiskNumberStart:a,rawExtraFieldZip64:c}){let u=sc(c),f=4;o&&(Xs(u,f,BigInt(t)),f+=8),r&&(Xs(u,f,BigInt(e)),f+=8),s&&(Xs(u,f,BigInt(n)),f+=8),a&&ki(u,f,i)}async function Sct(e,t,n){let{files:i,writer:o}=e,{diskOffset:r}=o,{diskNumber:s}=o,a=0,c=0,u=e.offset-r,f=i.size;for(let[,b]of i){let{rawFilename:S,rawExtraFieldZip64:B,rawExtraFieldAES:v,rawComment:P,rawExtraFieldNTFS:N,rawExtraField:L,extendedTimestamp:p,extraFieldExtendedTimestampFlag:x,lastModDate:T}=b,w;if(p){w=new Uint8Array(9);let M=sc(w);po(M,0,21589),po(M,2,5),w7(M,4,x),ki(M,5,Math.floor(T.getTime()/1e3))}else w=new Uint8Array;b.rawExtraFieldExtendedTimestamp=w,c+=46+Ui(S,P,B,v,N,w,L)}let h=new Uint8Array(c),A=sc(h);await aA(o);let g=0;for(let[b,S]of Array.from(i.values()).entries()){let{offset:B,rawFilename:v,rawExtraFieldZip64:P,rawExtraFieldAES:N,rawExtraFieldExtendedTimestamp:L,rawExtraFieldNTFS:p,rawExtraField:x,rawComment:T,versionMadeBy:w,headerArray:M,headerView:O,zip64:U,zip64UncompressedSize:Q,zip64CompressedSize:z,zip64DiskNumberStart:F,zip64Offset:H,internalFileAttributes:W,externalFileAttributes:Z,diskNumberStart:Y,uncompressedSize:$,compressedSize:X}=S,he=Ui(P,N,L,p,x);ki(A,a,33639248),po(A,a+4,w),Q||ki(O,18,$),z||ki(O,14,X),Ns(h,M,a+6);let ge=a+30;if(po(A,ge,he),ge+=2,po(A,ge,Ui(T)),ge+=2,po(A,ge,U&&F?65535:Y),ge+=2,po(A,ge,W),ge+=2,Z&&ki(A,ge,Z),ge+=4,ki(A,ge,U&&H?4294967295:B),ge+=4,Ns(h,v,ge),ge+=Ui(v),Ns(h,P,ge),ge+=Ui(P),Ns(h,N,ge),ge+=Ui(N),Ns(h,L,ge),ge+=Ui(L),Ns(h,p,ge),ge+=Ui(p),Ns(h,x,ge),ge+=Ui(x),Ns(h,T,ge),a-g>o.availableSize&&(o.availableSize=0,await Hp(o,h.slice(g,a)),g=a),a=ge,n.onprogress)try{await n.onprogress(b+1,i.size,new Iy(S))}catch{}}await Hp(o,g?h.slice(g):h);let m=o.diskNumber,{availableSize:_}=o;_<22&&m++;let y=io(e,n,gG);if(u>4294967295||c>4294967295||f>65535||m>65535){if(y===!1)throw new Error(B7);y=!0}let C=new Uint8Array(y?98:22),E=sc(C);a=0,y&&(ki(E,0,101075792),Xs(E,4,BigInt(44)),po(E,12,45),po(E,14,45),ki(E,16,m),ki(E,20,s),Xs(E,24,BigInt(f)),Xs(E,32,BigInt(f)),Xs(E,40,BigInt(c)),Xs(E,48,BigInt(u)),ki(E,56,117853008),Xs(E,64,BigInt(u)+BigInt(c)),ki(E,72,m+1),io(e,n,i7,!0)&&(m=65535,s=65535),f=65535,u=4294967295,c=4294967295,a+=76),ki(E,a,101010256),po(E,a+4,m),po(E,a+6,s),po(E,a+8,f),po(E,a+10,f),ki(E,a+12,c),ki(E,a+16,u);let I=Ui(t);if(I)if(I<=65535)po(E,a+20,I);else throw new Error(uct);await Hp(o,C),I&&await Hp(o,t)}async function Hp(e,t){let{writable:n}=e,i=n.getWriter();try{await i.ready,e.size+=Ui(t),await i.write(t)}finally{i.releaseLock()}}function S7(e){if(e)return(BigInt(e.getTime())+BigInt(116444736e5))*BigInt(1e4)}function io(e,t,n,i){let o=t[n]===ni?e.options[n]:t[n];return o===ni?i:o}function N_e(e){return e+5*(Math.floor(e/16383)+1)}function w7(e,t,n){e.setUint8(t,n)}function po(e,t,n){e.setUint16(t,n,!0)}function ki(e,t,n){e.setUint32(t,n,!0)}function Xs(e,t,n){e.setBigUint64(t,n,!0)}function Ns(e,t,n){e.set(t,n)}function sc(e){return new DataView(e.buffer)}function Ui(...e){let t=0;return e.forEach(n=>n&&(t+=n.length)),t}function L_e({version:e,bitFlag:t,compressionMethod:n,uncompressedSize:i,compressedSize:o,lastModDate:r,rawFilename:s,zip64CompressedSize:a,zip64UncompressedSize:c,extraFieldLength:u}){let f=new Uint8Array(26),h=sc(f);po(h,0,e),po(h,2,t),po(h,4,n);let A=new Uint32Array(1),g=sc(A);po(g,0,(r.getHours()<<6|r.getMinutes())<<5|r.getSeconds()/2),po(g,2,(r.getFullYear()-1980<<4|r.getMonth()+1)<<5|r.getDate());let m=A[0];return ki(h,6,m),(a||o!==ni)&&ki(h,14,a?4294967295:o),(c||i!==ni)&&ki(h,18,c?4294967295:i),po(h,22,Ui(s)),po(h,24,u),{headerArray:f,headerView:h,rawLastModDate:m}}function O_e(e,t,n,i,o){let r=0;return t&&(r=r|2048),n&&(r=r|8),(o==8||o==9)&&(e>=0&&e<=3&&(r=r|6),e>3&&e<=5&&(r=r|4),e==9&&(r=r|2)),i&&(r=r|1),r}dT({Deflate:ege,Inflate:Ige});function wct(e){return typeof e=="string"&&(e=document.getElementById(e)),e}var Gn=wct;function Bct(e,t){this.position=e,this.headingPitchRange=t}var OG=Bct;function FG(e,t){this.id=t,this.name=e,this.playlistIndex=0,this.playlist=[],this.tourStart=new _e,this.tourEnd=new _e,this.entryStart=new _e,this.entryEnd=new _e,this._activeEntries=[]}FG.prototype.addPlaylistEntry=function(e){this.playlist.push(e)};FG.prototype.play=function(e,t){this.tourStart.raiseEvent();let n=this;k_e.call(this,e,t,function(i){n.playlistIndex=0,i||Q_e(n._activeEntries),n.tourEnd.raiseEvent(i)})};FG.prototype.stop=function(){Q_e(this._activeEntries)};function Q_e(e){for(let t=e.pop();t!==void 0;t=e.pop())t.stop()}function k_e(e,t,n){let i=this.playlist[this.playlistIndex];if(i){let o=Dct.bind(this,e,t,n);if(this._activeEntries.push(i),this.entryStart.raiseEvent(i),i.blocking)i.play(o,e.scene.camera,t);else{let r=this;i.play(function(){r.entryEnd.raiseEvent(i);let s=r._activeEntries.indexOf(i);s>=0&&r._activeEntries.splice(s,1)}),o(e,t,n)}}else l(n)&&n(!1)}function Dct(e,t,n,i){let o=this.playlist[this.playlistIndex];if(this.entryEnd.raiseEvent(o,i),i)n(i);else{let r=this._activeEntries.indexOf(o);r>=0&&this._activeEntries.splice(r,1),this.playlistIndex++,k_e.call(this,e,t,n)}}var QG=FG;var Gi=Object.freeze({Linear:Object.freeze({None:function(e){return e},In:function(e){return e},Out:function(e){return e},InOut:function(e){return e}}),Quadratic:Object.freeze({In:function(e){return e*e},Out:function(e){return e*(2-e)},InOut:function(e){return(e*=2)<1?.5*e*e:-.5*(--e*(e-2)-1)}}),Cubic:Object.freeze({In:function(e){return e*e*e},Out:function(e){return--e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e:.5*((e-=2)*e*e+2)}}),Quartic:Object.freeze({In:function(e){return e*e*e*e},Out:function(e){return 1- --e*e*e*e},InOut:function(e){return(e*=2)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2)}}),Quintic:Object.freeze({In:function(e){return e*e*e*e*e},Out:function(e){return--e*e*e*e*e+1},InOut:function(e){return(e*=2)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2)}}),Sinusoidal:Object.freeze({In:function(e){return 1-Math.sin((1-e)*Math.PI/2)},Out:function(e){return Math.sin(e*Math.PI/2)},InOut:function(e){return .5*(1-Math.sin(Math.PI*(.5-e)))}}),Exponential:Object.freeze({In:function(e){return e===0?0:Math.pow(1024,e-1)},Out:function(e){return e===1?1:1-Math.pow(2,-10*e)},InOut:function(e){return e===0?0:e===1?1:(e*=2)<1?.5*Math.pow(1024,e-1):.5*(-Math.pow(2,-10*(e-1))+2)}}),Circular:Object.freeze({In:function(e){return 1-Math.sqrt(1-e*e)},Out:function(e){return Math.sqrt(1- --e*e)},InOut:function(e){return(e*=2)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1)}}),Elastic:Object.freeze({In:function(e){return e===0?0:e===1?1:-Math.pow(2,10*(e-1))*Math.sin((e-1.1)*5*Math.PI)},Out:function(e){return e===0?0:e===1?1:Math.pow(2,-10*e)*Math.sin((e-.1)*5*Math.PI)+1},InOut:function(e){return e===0?0:e===1?1:(e*=2,e<1?-.5*Math.pow(2,10*(e-1))*Math.sin((e-1.1)*5*Math.PI):.5*Math.pow(2,-10*(e-1))*Math.sin((e-1.1)*5*Math.PI)+1)}}),Back:Object.freeze({In:function(e){var t=1.70158;return e===1?1:e*e*((t+1)*e-t)},Out:function(e){var t=1.70158;return e===0?0:--e*e*((t+1)*e+t)+1},InOut:function(e){var t=2.5949095;return(e*=2)<1?.5*(e*e*((t+1)*e-t)):.5*((e-=2)*e*((t+1)*e+t)+2)}}),Bounce:Object.freeze({In:function(e){return 1-Gi.Bounce.Out(1-e)},Out:function(e){return e<.36363636363636365?7.5625*e*e:e<.7272727272727273?7.5625*(e-=.5454545454545454)*e+.75:e<.9090909090909091?7.5625*(e-=.8181818181818182)*e+.9375:7.5625*(e-=.9545454545454546)*e+.984375},InOut:function(e){return e<.5?Gi.Bounce.In(e*2)*.5:Gi.Bounce.Out(e*2-1)*.5+.5}}),generatePow:function(e){return e===void 0&&(e=4),e=e<Number.EPSILON?Number.EPSILON:e,e=e>1e4?1e4:e,{In:function(t){return Math.pow(t,e)},Out:function(t){return 1-Math.pow(1-t,e)},InOut:function(t){return t<.5?Math.pow(t*2,e)/2:(1-Math.pow(2-t*2,e))/2+.5}}}}),Wv=function(){return performance.now()},vct=function(){function e(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];this._tweens={},this._tweensAddedDuringUpdate={},this.add.apply(this,t)}return e.prototype.getAll=function(){var t=this;return Object.keys(this._tweens).map(function(n){return t._tweens[n]})},e.prototype.removeAll=function(){this._tweens={}},e.prototype.add=function(){for(var t,n=[],i=0;i<arguments.length;i++)n[i]=arguments[i];for(var o=0,r=n;o<r.length;o++){var s=r[o];(t=s._group)===null||t===void 0||t.remove(s),s._group=this,this._tweens[s.getId()]=s,this._tweensAddedDuringUpdate[s.getId()]=s}},e.prototype.remove=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];for(var i=0,o=t;i<o.length;i++){var r=o[i];r._group=void 0,delete this._tweens[r.getId()],delete this._tweensAddedDuringUpdate[r.getId()]}},e.prototype.allStopped=function(){return this.getAll().every(function(t){return!t.isPlaying()})},e.prototype.update=function(t,n){t===void 0&&(t=Wv()),n===void 0&&(n=!0);var i=Object.keys(this._tweens);if(i.length!==0)for(;i.length>0;){this._tweensAddedDuringUpdate={};for(var o=0;o<i.length;o++){var r=this._tweens[i[o]],s=!n;r&&r.update(t,s)===!1&&!n&&this.remove(r)}i=Object.keys(this._tweensAddedDuringUpdate)}},e}(),bT={Linear:function(e,t){var n=e.length-1,i=n*t,o=Math.floor(i),r=bT.Utils.Linear;return t<0?r(e[0],e[1],i):t>1?r(e[n],e[n-1],n-i):r(e[o],e[o+1>n?n:o+1],i-o)},Bezier:function(e,t){for(var n=0,i=e.length-1,o=Math.pow,r=bT.Utils.Bernstein,s=0;s<=i;s++)n+=o(1-t,i-s)*o(t,s)*e[s]*r(i,s);return n},CatmullRom:function(e,t){var n=e.length-1,i=n*t,o=Math.floor(i),r=bT.Utils.CatmullRom;return e[0]===e[n]?(t<0&&(o=Math.floor(i=n*(1+t))),r(e[(o-1+n)%n],e[o],e[(o+1)%n],e[(o+2)%n],i-o)):t<0?e[0]-(r(e[0],e[0],e[1],e[1],-i)-e[0]):t>1?e[n]-(r(e[n],e[n],e[n-1],e[n-1],i-n)-e[n]):r(e[o?o-1:0],e[o],e[n<o+1?n:o+1],e[n<o+2?n:o+2],i-o)},Utils:{Linear:function(e,t,n){return(t-e)*n+e},Bernstein:function(e,t){var n=bT.Utils.Factorial;return n(e)/n(t)/n(e-t)},Factorial:function(){var e=[1];return function(t){var n=1;if(e[t])return e[t];for(var i=t;i>1;i--)n*=i;return e[t]=n,n}}(),CatmullRom:function(e,t,n,i,o){var r=(n-e)*.5,s=(i-t)*.5,a=o*o,c=o*a;return(2*t-2*n+r+s)*c+(-3*t+3*n-2*r-s)*a+r*o+t}}},U_e=function(){function e(){}return e.nextId=function(){return e._nextId++},e._nextId=0,e}(),D7=new vct,G_e=function(){function e(t,n){this._isPaused=!1,this._pauseStart=0,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._isDynamic=!1,this._initialRepeat=0,this._repeat=0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=0,this._easingFunction=Gi.Linear.None,this._interpolationFunction=bT.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._id=U_e.nextId(),this._isChainStopped=!1,this._propertiesAreSetUp=!1,this._goToEnd=!1,this._object=t,typeof n=="object"?(this._group=n,n.add(this)):n===!0&&(this._group=D7,D7.add(this))}return e.prototype.getId=function(){return this._id},e.prototype.isPlaying=function(){return this._isPlaying},e.prototype.isPaused=function(){return this._isPaused},e.prototype.getDuration=function(){return this._duration},e.prototype.to=function(t,n){if(n===void 0&&(n=1e3),this._isPlaying)throw new Error("Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.");return this._valuesEnd=t,this._propertiesAreSetUp=!1,this._duration=n<0?0:n,this},e.prototype.duration=function(t){return t===void 0&&(t=1e3),this._duration=t<0?0:t,this},e.prototype.dynamic=function(t){return t===void 0&&(t=!1),this._isDynamic=t,this},e.prototype.start=function(t,n){if(t===void 0&&(t=Wv()),n===void 0&&(n=!1),this._isPlaying)return this;if(this._repeat=this._initialRepeat,this._reversed){this._reversed=!1;for(var i in this._valuesStartRepeat)this._swapEndStartRepeatValues(i),this._valuesStart[i]=this._valuesStartRepeat[i]}if(this._isPlaying=!0,this._isPaused=!1,this._onStartCallbackFired=!1,this._onEveryStartCallbackFired=!1,this._isChainStopped=!1,this._startTime=t,this._startTime+=this._delayTime,!this._propertiesAreSetUp||n){if(this._propertiesAreSetUp=!0,!this._isDynamic){var o={};for(var r in this._valuesEnd)o[r]=this._valuesEnd[r];this._valuesEnd=o}this._setupProperties(this._object,this._valuesStart,this._valuesEnd,this._valuesStartRepeat,n)}return this},e.prototype.startFromCurrentValues=function(t){return this.start(t,!0)},e.prototype._setupProperties=function(t,n,i,o,r){for(var s in i){var a=t[s],c=Array.isArray(a),u=c?"array":typeof a,f=!c&&Array.isArray(i[s]);if(!(u==="undefined"||u==="function")){if(f){var h=i[s];if(h.length===0)continue;for(var A=[a],g=0,m=h.length;g<m;g+=1){var _=this._handleRelativeValue(a,h[g]);if(isNaN(_)){f=!1,console.warn("Found invalid interpolation list. Skipping.");break}A.push(_)}f&&(i[s]=A)}if((u==="object"||c)&&a&&!f){n[s]=c?[]:{};var y=a;for(var C in y)n[s][C]=y[C];o[s]=c?[]:{};var h=i[s];if(!this._isDynamic){var E={};for(var C in h)E[C]=h[C];i[s]=h=E}this._setupProperties(y,n[s],h,o[s],r)}else(typeof n[s]>"u"||r)&&(n[s]=a),c||(n[s]*=1),f?o[s]=i[s].slice().reverse():o[s]=n[s]||0}}},e.prototype.stop=function(){return this._isChainStopped||(this._isChainStopped=!0,this.stopChainedTweens()),this._isPlaying?(this._isPlaying=!1,this._isPaused=!1,this._onStopCallback&&this._onStopCallback(this._object),this):this},e.prototype.end=function(){return this._goToEnd=!0,this.update(this._startTime+this._duration),this},e.prototype.pause=function(t){return t===void 0&&(t=Wv()),this._isPaused||!this._isPlaying?this:(this._isPaused=!0,this._pauseStart=t,this)},e.prototype.resume=function(t){return t===void 0&&(t=Wv()),!this._isPaused||!this._isPlaying?this:(this._isPaused=!1,this._startTime+=t-this._pauseStart,this._pauseStart=0,this)},e.prototype.stopChainedTweens=function(){for(var t=0,n=this._chainedTweens.length;t<n;t++)this._chainedTweens[t].stop();return this},e.prototype.group=function(t){return t?(t.add(this),this):(console.warn("tween.group() without args has been removed, use group.add(tween) instead."),this)},e.prototype.remove=function(){var t;return(t=this._group)===null||t===void 0||t.remove(this),this},e.prototype.delay=function(t){return t===void 0&&(t=0),this._delayTime=t,this},e.prototype.repeat=function(t){return t===void 0&&(t=0),this._initialRepeat=t,this._repeat=t,this},e.prototype.repeatDelay=function(t){return this._repeatDelayTime=t,this},e.prototype.yoyo=function(t){return t===void 0&&(t=!1),this._yoyo=t,this},e.prototype.easing=function(t){return t===void 0&&(t=Gi.Linear.None),this._easingFunction=t,this},e.prototype.interpolation=function(t){return t===void 0&&(t=bT.Linear),this._interpolationFunction=t,this},e.prototype.chain=function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return this._chainedTweens=t,this},e.prototype.onStart=function(t){return this._onStartCallback=t,this},e.prototype.onEveryStart=function(t){return this._onEveryStartCallback=t,this},e.prototype.onUpdate=function(t){return this._onUpdateCallback=t,this},e.prototype.onRepeat=function(t){return this._onRepeatCallback=t,this},e.prototype.onComplete=function(t){return this._onCompleteCallback=t,this},e.prototype.onStop=function(t){return this._onStopCallback=t,this},e.prototype.update=function(t,n){var i=this,o;if(t===void 0&&(t=Wv()),n===void 0&&(n=e.autoStartOnUpdate),this._isPaused)return!0;var r;if(!this._goToEnd&&!this._isPlaying)if(n)this.start(t,!0);else return!1;if(this._goToEnd=!1,t<this._startTime)return!0;this._onStartCallbackFired===!1&&(this._onStartCallback&&this._onStartCallback(this._object),this._onStartCallbackFired=!0),this._onEveryStartCallbackFired===!1&&(this._onEveryStartCallback&&this._onEveryStartCallback(this._object),this._onEveryStartCallbackFired=!0);var s=t-this._startTime,a=this._duration+((o=this._repeatDelayTime)!==null&&o!==void 0?o:this._delayTime),c=this._duration+this._repeat*a,u=function(){if(i._duration===0||s>c)return 1;var _=Math.trunc(s/a),y=s-_*a,C=Math.min(y/i._duration,1);return C===0&&s===i._duration?1:C},f=u(),h=this._easingFunction(f);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,h),this._onUpdateCallback&&this._onUpdateCallback(this._object,f),this._duration===0||s>=this._duration)if(this._repeat>0){var A=Math.min(Math.trunc((s-this._duration)/a)+1,this._repeat);isFinite(this._repeat)&&(this._repeat-=A);for(r in this._valuesStartRepeat)!this._yoyo&&typeof this._valuesEnd[r]=="string"&&(this._valuesStartRepeat[r]=this._valuesStartRepeat[r]+parseFloat(this._valuesEnd[r])),this._yoyo&&this._swapEndStartRepeatValues(r),this._valuesStart[r]=this._valuesStartRepeat[r];return this._yoyo&&(this._reversed=!this._reversed),this._startTime+=a*A,this._onRepeatCallback&&this._onRepeatCallback(this._object),this._onEveryStartCallbackFired=!1,!0}else{this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var g=0,m=this._chainedTweens.length;g<m;g++)this._chainedTweens[g].start(this._startTime+this._duration,!1);return this._isPlaying=!1,!1}return!0},e.prototype._updateProperties=function(t,n,i,o){for(var r in i)if(n[r]!==void 0){var s=n[r]||0,a=i[r],c=Array.isArray(t[r]),u=Array.isArray(a),f=!c&&u;f?t[r]=this._interpolationFunction(a,o):typeof a=="object"&&a?this._updateProperties(t[r],s,a,o):(a=this._handleRelativeValue(s,a),typeof a=="number"&&(t[r]=s+(a-s)*o))}},e.prototype._handleRelativeValue=function(t,n){return typeof n!="string"?n:n.charAt(0)==="+"||n.charAt(0)==="-"?t+parseFloat(n):parseFloat(n)},e.prototype._swapEndStartRepeatValues=function(t){var n=this._valuesStartRepeat[t],i=this._valuesEnd[t];typeof i=="string"?this._valuesStartRepeat[t]=this._valuesStartRepeat[t]+parseFloat(i):this._valuesStartRepeat[t]=this._valuesEnd[t],this._valuesEnd[t]=n},e.autoStartOnUpdate=!1,e}();var xui=U_e.nextId,cA=D7,bui=cA.getAll.bind(cA),Tui=cA.removeAll.bind(cA),Sui=cA.add.bind(cA),wui=cA.remove.bind(cA),Bui=cA.update.bind(cA);var Pct={LINEAR_NONE:Gi.Linear.None,QUADRATIC_IN:Gi.Quadratic.In,QUADRATIC_OUT:Gi.Quadratic.Out,QUADRATIC_IN_OUT:Gi.Quadratic.InOut,CUBIC_IN:Gi.Cubic.In,CUBIC_OUT:Gi.Cubic.Out,CUBIC_IN_OUT:Gi.Cubic.InOut,QUARTIC_IN:Gi.Quartic.In,QUARTIC_OUT:Gi.Quartic.Out,QUARTIC_IN_OUT:Gi.Quartic.InOut,QUINTIC_IN:Gi.Quintic.In,QUINTIC_OUT:Gi.Quintic.Out,QUINTIC_IN_OUT:Gi.Quintic.InOut,SINUSOIDAL_IN:Gi.Sinusoidal.In,SINUSOIDAL_OUT:Gi.Sinusoidal.Out,SINUSOIDAL_IN_OUT:Gi.Sinusoidal.InOut,EXPONENTIAL_IN:Gi.Exponential.In,EXPONENTIAL_OUT:Gi.Exponential.Out,EXPONENTIAL_IN_OUT:Gi.Exponential.InOut,CIRCULAR_IN:Gi.Circular.In,CIRCULAR_OUT:Gi.Circular.Out,CIRCULAR_IN_OUT:Gi.Circular.InOut,ELASTIC_IN:Gi.Elastic.In,ELASTIC_OUT:Gi.Elastic.Out,ELASTIC_IN_OUT:Gi.Elastic.InOut,BACK_IN:Gi.Back.In,BACK_OUT:Gi.Back.Out,BACK_IN_OUT:Gi.Back.InOut,BOUNCE_IN:Gi.Bounce.In,BOUNCE_OUT:Gi.Bounce.Out,BOUNCE_IN_OUT:Gi.Bounce.InOut},ps=Object.freeze(Pct);function kG(e,t,n){this.type="KmlTourFlyTo",this.blocking=!0,this.activeCamera=null,this.activeCallback=null,this.duration=e,this.view=n,this.flyToMode=t}kG.prototype.play=function(e,t,n){if(this.activeCamera=t,l(e)&&e!==null){let o=this;this.activeCallback=function(r){delete o.activeCallback,delete o.activeCamera,e(l(r)?!1:r)}}let i=this.getCameraOptions(n);if(this.view.headingPitchRoll)t.flyTo(i);else if(this.view.headingPitchRange){let o=new le(this.view.position);t.flyToBoundingSphere(o,i)}};kG.prototype.stop=function(){l(this.activeCamera)&&this.activeCamera.cancelFlight(),l(this.activeCallback)&&this.activeCallback(!0)};kG.prototype.getCameraOptions=function(e){let t={duration:this.duration};return l(this.activeCallback)&&(t.complete=this.activeCallback),this.flyToMode==="smooth"&&(t.easingFunction=ps.LINEAR_NONE),this.view.headingPitchRoll?(t.destination=this.view.position,t.orientation=this.view.headingPitchRoll):this.view.headingPitchRange&&(t.offset=this.view.headingPitchRange),l(e)&&(t=wt(t,e)),t};var UG=kG;function v7(e){this.type="KmlTourWait",this.blocking=!0,this.duration=e,this.timeout=null}v7.prototype.play=function(e){let t=this;this.activeCallback=e,this.timeout=setTimeout(function(){delete t.activeCallback,e(!1)},this.duration*1e3)};v7.prototype.stop=function(){clearTimeout(this.timeout),l(this.activeCallback)&&this.activeCallback(!0)};var GG=v7;var J_e={avi:"video/x-msvideo",bmp:"image/bmp",bz2:"application/x-bzip2",chm:"application/vnd.ms-htmlhelp",css:"text/css",csv:"text/csv",doc:"application/msword",dvi:"application/x-dvi",eps:"application/postscript",flv:"video/x-flv",gif:"image/gif",gz:"application/x-gzip",htm:"text/html",html:"text/html",ico:"image/vnd.microsoft.icon",jnlp:"application/x-java-jnlp-file",jpeg:"image/jpeg",jpg:"image/jpeg",m3u:"audio/x-mpegurl",m4v:"video/mp4",mathml:"application/mathml+xml",mid:"audio/midi",midi:"audio/midi",mov:"video/quicktime",mp3:"audio/mpeg",mp4:"video/mp4",mp4v:"video/mp4",mpeg:"video/mpeg",mpg:"video/mpeg",odp:"application/vnd.oasis.opendocument.presentation",ods:"application/vnd.oasis.opendocument.spreadsheet",odt:"application/vnd.oasis.opendocument.text",ogg:"application/ogg",pdf:"application/pdf",png:"image/png",pps:"application/vnd.ms-powerpoint",ppt:"application/vnd.ms-powerpoint",ps:"application/postscript",qt:"video/quicktime",rdf:"application/rdf+xml",rss:"application/rss+xml",rtf:"application/rtf",svg:"image/svg+xml",swf:"application/x-shockwave-flash",text:"text/plain",tif:"image/tiff",tiff:"image/tiff",txt:"text/plain",wav:"audio/x-wav",wma:"audio/x-ms-wma",wmv:"video/x-ms-wmv",xml:"application/xml",zip:"application/zip",detectFromFilename:function(e){let t=e.toLowerCase();return t=j0(t),J_e[t]}},F7;typeof DOMParser<"u"&&(F7=new DOMParser);var Rct=new MU({stripPrefix:!1,email:!1,replaceFn:function(e){return e.urlMatchType==="scheme"||e.urlMatchType==="www"}}),by=32,z_e=2414016,V_e=1,H_e=16093e3,W_e=.1,j_e=[null,void 0,"http://www.opengis.net/kml/2.2","http://earth.google.com/kml/2.2","http://earth.google.com/kml/2.1","http://earth.google.com/kml/2.0"],Y_e=["http://www.google.com/kml/ext/2.2"],Mct=["http://www.w3.org/2005/Atom"],Ne={kml:j_e,gx:Y_e,atom:Mct,kmlgx:j_e.concat(Y_e)},Q7={Document:aye,Folder:Zct,Placemark:$ct,NetworkLink:clt,GroundOverlay:rlt,PhotoOverlay:uye,ScreenOverlay:olt,Tour:tlt};function lA(e){this._dataSource=e,this._deferred=yu(),this._stack=[],this._promises=[],this._timeoutSet=!1,this._used=!1,this._started=0,this._timeThreshold=1e3}Object.defineProperties(lA.prototype,{dataSource:{get:function(){return this._dataSource}}});lA.prototype.addNodes=function(e,t){this._stack.push({nodes:e,index:0,processingData:t}),this._used=!0};lA.prototype.addPromise=function(e){this._promises.push(e)};lA.prototype.wait=function(){let e=this._deferred;return this._used||e.resolve(),Promise.all([e.promise,Promise.all(this._promises)])};lA.prototype.process=function(){let e=this._stack.length===1;return e&&(this._started=Ku._getTimestamp()),this._process(e)};lA.prototype._giveUpTime=function(){if(this._timeoutSet)return;this._timeoutSet=!0,this._timeThreshold=50;let e=this;setTimeout(function(){e._timeoutSet=!1,e._started=Ku._getTimestamp(),e._process(!0)},0)};lA.prototype._nextNode=function(){let e=this._stack,t=e[e.length-1],n=t.index,i=t.nodes;if(n!==i.length)return++t.index,i[n]};lA.prototype._pop=function(){let e=this._stack;return e.pop(),e.length===0?(this._deferred.resolve(),!1):!0};lA.prototype._process=function(e){let t=this.dataSource,n=this._stack[this._stack.length-1].processingData,i=this._nextNode();for(;l(i);){let o=Q7[i.localName];if(l(o)&&(Ne.kml.indexOf(i.namespaceURI)!==-1||Ne.gx.indexOf(i.namespaceURI)!==-1)&&(o(t,i,n,this),this._timeoutSet||Ku._getTimestamp()>this._started+this._timeThreshold)){this._giveUpTime();return}i=this._nextNode()}this._pop()&&e&&this._process(!0)};function Nct(e){let t=e.slice(0,Math.min(4,e.size)),n=yu(),i=new FileReader;return i.addEventListener("load",function(){n.resolve(new DataView(i.result).getUint32(0,!1)===1347093252)}),i.addEventListener("error",function(){n.reject(i.error)}),i.readAsArrayBuffer(t),n.promise}function Lct(e){let t=yu(),n=new FileReader;return n.addEventListener("load",function(){t.resolve(n.result)}),n.addEventListener("error",function(){t.reject(n.error)}),n.readAsText(e),t.promise}function Z_e(e){let t={xsi:"http://www.w3.org/2001/XMLSchema-instance"},n,i,o,r;for(let s in t)t.hasOwnProperty(s)&&(o=RegExp(`[< ]${s}:`),r=`xmlns:${s}=`,o.test(e)&&e.indexOf(r)===-1&&(l(n)||(n=e.substr(0,e.indexOf("<kml")+4),i=e.substr(n.length)),n+=` ${r}"${t[s]}"`));return l(n)&&(e=n+i),e}function $_e(e){let t=e.indexOf("xmlns:"),n=e.indexOf(">",t),i,o,r;for(;t!==-1&&t<n;)i=e.slice(t,e.indexOf('"',t)),o=t,t=e.indexOf(i,t+1),t!==-1?(r=e.indexOf('"',e.indexOf('"',t)+1),e=e.slice(0,t-1)+e.slice(r+1,e.length),t=e.indexOf("xmlns:",o-1)):t=e.indexOf("xmlns:",o+1);return e}function Oct(e,t){return Promise.resolve(e.getData(new hG)).then(function(n){n=Z_e(n),n=$_e(n),t.kml=F7.parseFromString(n,"application/xml")})}function P7(e,t){let n=J_e.detectFromFilename(e.filename)??"application/octet-stream";return Promise.resolve(e.getData(new fG(n))).then(function(i){t[e.filename]=i})}function Yu(e,t,n,i){let o=i.keys,r=new jv.default("."),s=e.querySelectorAll(t);for(let a=0;a<s.length;a++){let c=s[a],u=c.getAttribute(n);if(l(u)){let h=new jv.default(u).absoluteTo(r).toString(),A=o.indexOf(h);if(A!==-1){let g=o[A];c.setAttribute(n,i[g]),t==="a"&&c.getAttribute("download")===null&&c.setAttribute("download",g)}}}}function qu(e,t,n,i){let o=e.querySelectorAll(t);for(let r=0;r<o.length;r++){let s=o[r],a=s.getAttribute(n),c=k7(a,i);l(c)&&s.setAttribute(n,c.url)}}function eye(e,t,n){let i=Js(e,"id");i=l(i)&&i.length!==0?i:Xn(),l(n)&&(i=n+i);let o=t.getById(i);return l(o)&&(i=Xn(),l(n)&&(i=n+i)),o=t.add(new _r({id:i})),l(o.kml)||(o.addProperty("kml"),o.kml=new dlt),o}function Yv(e,t){return e==="absolute"||e==="relativeToGround"||t==="relativeToSeaFloor"}function WG(e,t){if(!l(e))return d.fromDegrees(0,0,0,t);let n=e.match(/[^\s,\n]+/g);if(!l(n))return d.fromDegrees(0,0,0,t);let i=parseFloat(n[0]),o=parseFloat(n[1]),r=parseFloat(n[2]);return i=isNaN(i)?0:i,o=isNaN(o)?0:o,r=isNaN(r)?0:r,d.fromDegrees(i,o,r,t)}function zG(e,t){if(!l(e))return;let n=e.textContent.match(/[^\s\n]+/g);if(!l(n))return;let i=n.length,o=new Array(i),r=0;for(let s=0;s<i;s++)o[r++]=WG(n[s],t);return o}function Ty(e,t){if(!l(e))return;let n=e.getAttribute(t);if(n!==null){let i=parseFloat(n);return isNaN(i)?void 0:i}}function Js(e,t){if(!l(e))return;let n=e.getAttribute(t);return n!==null?n:void 0}function zi(e,t,n){if(!l(e))return;let i=e.childNodes,o=i.length;for(let r=0;r<o;r++){let s=i[r];if(s.localName===t&&n.indexOf(s.namespaceURI)!==-1)return s}}function q_e(e,t,n){if(!l(e))return;let i=[],o=e.getElementsByTagNameNS("*",t),r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function Th(e,t,n){if(!l(e))return[];let i=[],o=e.childNodes,r=o.length;for(let s=0;s<r;s++){let a=o[s];a.localName===t&&n.indexOf(a.namespaceURI)!==-1&&i.push(a)}return i}function fi(e,t,n){let i=zi(e,t,n);if(l(i)){let o=parseFloat(i.textContent);return isNaN(o)?void 0:o}}function On(e,t,n){let i=zi(e,t,n);if(l(i))return i.textContent.trim()}function Sh(e,t,n){let i=zi(e,t,n);if(l(i)){let o=i.textContent.trim();return o==="1"||/^true$/i.test(o)}}function k7(e,t,n){if(!l(e))return;let i;if(l(n)){e=e.replace(/\\/g,"/");let o=n[e];if(l(o))i=new we({url:o});else{let r=new jv.default(t.getUrlComponent()),s=new jv.default(e);o=n[s.absoluteTo(r)],l(o)&&(i=new we({url:o}))}}return l(i)||(i=t.getDerivedResource({url:e})),i}var lu={maximumRed:void 0,red:void 0,maximumGreen:void 0,green:void 0,maximumBlue:void 0,blue:void 0};function L7(e,t){if(!l(e)||/^\s*$/gm.test(e))return;e[0]==="#"&&(e=e.substring(1));let n=parseInt(e.substring(0,2),16)/255,i=parseInt(e.substring(2,4),16)/255,o=parseInt(e.substring(4,6),16)/255,r=parseInt(e.substring(6,8),16)/255;return t?(r>0?(lu.maximumRed=r,lu.red=void 0):(lu.maximumRed=void 0,lu.red=0),o>0?(lu.maximumGreen=o,lu.green=void 0):(lu.maximumGreen=void 0,lu.green=0),i>0?(lu.maximumBlue=i,lu.blue=void 0):(lu.maximumBlue=void 0,lu.blue=0),lu.alpha=n,G.fromRandom(lu)):new G(r,o,i,n)}function qE(e,t,n){let i=On(e,t,n);if(l(i))return L7(i,On(e,"colorMode",n)==="random")}function Fct(e){let t=zi(e,"TimeStamp",Ne.kmlgx),n=On(t,"when",Ne.kmlgx);if(!l(t)||!l(n)||n.length===0)return;let i=K.fromIso8601(n),o=new hs;return o.addInterval(new Rn({start:i,stop:je.MAXIMUM_VALUE})),o}function Qct(e){let t=zi(e,"TimeSpan",Ne.kmlgx);if(!l(t))return;let n,i=zi(t,"begin",Ne.kmlgx),o=l(i)?K.fromIso8601(i.textContent):void 0,r=zi(t,"end",Ne.kmlgx),s=l(r)?K.fromIso8601(r.textContent):void 0;if(l(o)&&l(s)){if(K.lessThan(s,o)){let a=o;o=s,s=a}n=new hs,n.addInterval(new Rn({start:o,stop:s}))}else l(o)?(n=new hs,n.addInterval(new Rn({start:o,stop:je.MAXIMUM_VALUE}))):l(s)&&(n=new hs,n.addInterval(new Rn({start:je.MINIMUM_VALUE,stop:s})));return n}function tye(){let e=new jc;return e.width=by,e.height=by,e.scaleByDistance=new Yt(z_e,V_e,H_e,W_e),e.pixelOffsetScaleByDistance=new Yt(z_e,V_e,H_e,W_e),e}function U7(){let e=new lm;return e.outline=!0,e.outlineColor=G.WHITE,e}function nye(){let e=new cm;return e.translucencyByDistance=new Yt(3e6,1,5e6,0),e.pixelOffset=new k(17,0),e.horizontalOrigin=Ri.LEFT,e.font="16px sans-serif",e.style=ar.FILL_AND_OUTLINE,e}function G7(e,t,n,i,o){let r=On(e,"href",Ne.kml);if(!l(r)||r.length===0)return;if(r.indexOf("root://icons/palette-")===0){let a=r.charAt(21),c=fi(e,"x",Ne.gx)??0,u=fi(e,"y",Ne.gx)??0;c=Math.min(c/32,7),u=7-Math.min(u/32,7);let f=8*u+c;r=`https://maps.google.com/mapfiles/kml/pal${a}/icon${f}.png`}let s=k7(r,n,i);if(o){let a=On(e,"refreshMode",Ne.kml),c=On(e,"viewRefreshMode",Ne.kml);a==="onInterval"||a==="onExpire"?yt(`kml-refreshMode-${a}`,`KML - Unsupported Icon refreshMode: ${a}`):(c==="onStop"||c==="onRegion")&&yt(`kml-refreshMode-${c}`,`KML - Unsupported Icon viewRefreshMode: ${c}`);let u=On(e,"viewBoundScale",Ne.kml)??1,f=c==="onStop"?"BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]":"",h=On(e,"viewFormat",Ne.kml)??f,A=On(e,"httpQuery",Ne.kml);l(h)&&s.setQueryParameters(Af(HG(h))),l(A)&&s.setQueryParameters(Af(HG(A)));let g=t._ellipsoid;return V7(s,t.camera,t.canvas,u,t._lastCameraView.bbox,g),s}return s}function kct(e,t,n,i,o){let r=fi(t,"scale",Ne.kml),s=fi(t,"heading",Ne.kml),a=qE(t,"color",Ne.kml),c=zi(t,"Icon",Ne.kml),u=G7(c,e,i,o,!1);l(c)&&!l(u)&&(u=!1);let f=fi(c,"x",Ne.gx),h=fi(c,"y",Ne.gx),A=fi(c,"w",Ne.gx),g=fi(c,"h",Ne.gx),m=zi(t,"hotSpot",Ne.kml),_=Ty(m,"x"),y=Ty(m,"y"),C=Js(m,"xunits"),E=Js(m,"yunits"),I=n.billboard;l(I)||(I=tye(),n.billboard=I),I.image=u,I.scale=r,I.color=a,(l(f)||l(h)||l(A)||l(g))&&(I.imageSubRegion=new Xe(f,h,A,g)),l(s)&&s!==0&&(I.rotation=D.toRadians(-s),I.alignedAxis=d.UNIT_Z),r=r??1;let b,S;l(_)&&(C==="pixels"?b=-_*r:C==="insetPixels"?b=(_-by)*r:C==="fraction"&&(b=-_*by*r),b+=by*.5*r),l(y)&&(E==="pixels"?S=y*r:E==="insetPixels"?S=(-y+by)*r:E==="fraction"&&(S=y*by*r),S-=by*.5*r),(l(b)||l(S))&&(I.pixelOffset=new k(b,S))}function VG(e,t,n,i,o){for(let r=0,s=t.childNodes.length;r<s;r++){let a=t.childNodes.item(r);if(a.localName==="IconStyle")kct(e,a,n,i,o);else if(a.localName==="LabelStyle"){let c=n.label;l(c)||(c=nye(),n.label=c),c.scale=fi(a,"scale",Ne.kml)??c.scale,c.fillColor=qE(a,"color",Ne.kml)??c.fillColor,c.text=n.name}else if(a.localName==="LineStyle"){let c=n.polyline;l(c)||(c=new $c,n.polyline=c),c.width=fi(a,"width",Ne.kml),c.material=qE(a,"color",Ne.kml),l(qE(a,"outerColor",Ne.gx))&&yt("kml-gx:outerColor","KML - gx:outerColor is not supported in a LineStyle"),l(fi(a,"outerWidth",Ne.gx))&&yt("kml-gx:outerWidth","KML - gx:outerWidth is not supported in a LineStyle"),l(fi(a,"physicalWidth",Ne.gx))&&yt("kml-gx:physicalWidth","KML - gx:physicalWidth is not supported in a LineStyle"),l(Sh(a,"labelVisibility",Ne.gx))&&yt("kml-gx:labelVisibility","KML - gx:labelVisibility is not supported in a LineStyle")}else if(a.localName==="PolyStyle"){let c=n.polygon;l(c)||(c=U7(),n.polygon=c),c.material=qE(a,"color",Ne.kml)??c.material,c.fill=Sh(a,"fill",Ne.kml)??c.fill,c.outline=Sh(a,"outline",Ne.kml)??c.outline}else if(a.localName==="BalloonStyle"){let c=L7(On(a,"bgColor",Ne.kml))??G.WHITE,u=L7(On(a,"textColor",Ne.kml))??G.BLACK,f=On(a,"text",Ne.kml);n.addProperty("balloonStyle"),n.balloonStyle={bgColor:c,textColor:u,text:f}}else if(a.localName==="ListStyle"){let c=On(a,"listItemType",Ne.kml);(c==="radioFolder"||c==="checkOffOnly")&&yt(`kml-listStyle-${c}`,`KML - Unsupported ListStyle with listItemType: ${c}`)}}}function Uct(e,t,n,i,o){let r=new _r,s,a=-1,c=t.childNodes,u=c.length;for(let h=0;h<u;h++){let A=c[h];(A.localName==="Style"||A.localName==="StyleMap")&&(a=h)}if(a!==-1){let h=c[a];if(h.localName==="Style")VG(e,h,r,i,o);else{let A=Th(h,"Pair",Ne.kml);for(let g=0;g<A.length;g++){let m=A[g],_=On(m,"key",Ne.kml);if(_==="normal"){let y=On(m,"styleUrl",Ne.kml);if(l(y))s=n.getById(y),l(s)||(s=n.getById(`#${y}`)),l(s)&&r.merge(s);else{let C=zi(m,"Style",Ne.kml);VG(e,C,r,i,o)}}else yt(`kml-styleMap-${_}`,`KML - Unsupported StyleMap key: ${_}`)}}}let f=On(t,"styleUrl",Ne.kml);if(l(f)){let h=f;if(f[0]!=="#"&&f.indexOf("#")!==-1){let A=f.split("#"),g=A[0];h=`${i.getDerivedResource({url:g}).getUrlComponent()}#${A[1]}`}s=n.getById(h),l(s)||(s=n.getById(`#${h}`)),l(s)&&r.merge(s)}return r}function Gct(e,t,n){return t.fetchXML().then(function(i){return iye(e,i,n,t,!0)})}function iye(e,t,n,i,o,r){let s,a,c,u,f=q_e(t,"Style",Ne.kml);if(l(f)){let _=f.length;for(s=0;s<_;s++)u=f[s],a=Js(u,"id"),l(a)&&(a=`#${a}`,o&&l(i)&&(a=i.getUrlComponent()+a),l(n.getById(a))||(c=new _r({id:a}),n.add(c),VG(e,u,c,i,r)))}let h=q_e(t,"StyleMap",Ne.kml);if(l(h)){let _=h.length;for(s=0;s<_;s++){let y=h[s];if(a=Js(y,"id"),l(a)){let C=Th(y,"Pair",Ne.kml);for(let E=0;E<C.length;E++){let I=C[E],b=On(I,"key",Ne.kml);if(b==="normal"){if(a=`#${a}`,o&&l(i)&&(a=i.getUrlComponent()+a),!l(n.getById(a))){c=n.getOrCreateEntity(a);let S=On(I,"styleUrl",Ne.kml);if(l(S)){S[0]!=="#"&&(S=`#${S}`),o&&l(i)&&(S=i.getUrlComponent()+S);let B=n.getById(S);l(B)&&c.merge(B)}else u=zi(I,"Style",Ne.kml),VG(e,u,c,i,r)}}else yt(`kml-styleMap-${b}`,`KML - Unsupported StyleMap key: ${b}`)}}}}let A=[],g=t.getElementsByTagName("styleUrl"),m=g.length;for(s=0;s<m;s++){let _=g[s].textContent;if(_[0]!=="#"){let y=_.split("#");if(y.length===2){let C=y[0],E=i.getDerivedResource({url:C});A.push(Gct(e,E,n))}}}return A}function z7(e,t,n){let i=new q_(e,t.id,["position"]),o=new Fp(t.position);t.polyline=l(n.polyline)?n.polyline.clone():new $c,t.polyline.positions=new j_([i,o])}function oye(e,t){return!l(e)&&!l(t)||e==="clampToGround"?Ze.CLAMP_TO_GROUND:e==="relativeToGround"?Ze.RELATIVE_TO_GROUND:e==="absolute"?Ze.NONE:t==="clampToSeaFloor"?(yt("kml-gx:altitudeMode-clampToSeaFloor","KML - <gx:altitudeMode>:clampToSeaFloor is currently not supported, using <kml:altitudeMode>:clampToGround."),Ze.CLAMP_TO_GROUND):t==="relativeToSeaFloor"?(yt("kml-gx:altitudeMode-relativeToSeaFloor","KML - <gx:altitudeMode>:relativeToSeaFloor is currently not supported, using <kml:altitudeMode>:relativeToGround."),Ze.RELATIVE_TO_GROUND):(l(e)?yt("kml-altitudeMode-unknown",`KML - Unknown <kml:altitudeMode>:${e}, using <kml:altitudeMode>:CLAMP_TO_GROUND.`):yt("kml-gx:altitudeMode-unknown",`KML - Unknown <gx:altitudeMode>:${t}, using <kml:altitudeMode>:CLAMP_TO_GROUND.`),Ze.CLAMP_TO_GROUND)}function zct(e,t,n){return n==="relativeToSeaFloor"||t==="absolute"||t==="relativeToGround"?e:((l(t)&&t!=="clampToGround"||l(n)&&n!=="clampToSeaFloor")&&yt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${t??n}`),new Fp(e))}function Vct(e,t,n,i){if(!l(e))return;if(n==="relativeToSeaFloor"||t==="absolute"||t==="relativeToGround")return e;(l(t)&&t!=="clampToGround"||l(n)&&n!=="clampToSeaFloor")&&yt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${t??n}`);let o=e.length;for(let r=0;r<o;r++){let s=e[r];i.scaleToGeodeticSurface(s,s)}return e}function jG(e,t,n,i){let o=t.label;l(o)||(o=l(n.label)?n.label.clone():nye(),t.label=o),o.text=t.name;let r=t.billboard;l(r)||(r=l(n.billboard)?n.billboard.clone():tye(),t.billboard=r),l(r.image)?r.image.getValue()||(r.image=void 0):r.image=e._pinBuilder.fromColor(G.YELLOW,64);let s=1;l(r.scale)&&(s=r.scale.getValue(),s!==0?o.pixelOffset=new k(s*16+1,0):(o.pixelOffset=void 0,o.horizontalOrigin=void 0)),l(i)&&e._clampToGround&&(r.heightReference=i,o.heightReference=i)}function rye(e,t){let n=e.path;l(n)||(n=new vg,n.leadTime=0,e.path=n);let i=t.polyline;l(i)&&(n.material=i.material,n.width=i.width)}function Hct(e,t,n,i,o){let r=On(n,"coordinates",Ne.kml),s=On(n,"altitudeMode",Ne.kml),a=On(n,"altitudeMode",Ne.gx),c=Sh(n,"extrude",Ne.kml),u=e._ellipsoid,f=WG(r,u);return i.position=f,jG(e,i,o,oye(s,a)),c&&Yv(s,a)&&z7(t,i,o),!0}function K_e(e,t,n,i,o){let r=zi(n,"coordinates",Ne.kml),s=On(n,"altitudeMode",Ne.kml),a=On(n,"altitudeMode",Ne.gx),c=Sh(n,"extrude",Ne.kml),u=Sh(n,"tessellate",Ne.kml),f=Yv(s,a),h=fi(n,"drawOrder",Ne.gx),A=e._ellipsoid,g=zG(r,A),m=o.polyline;if(f&&c){let _=new Pg;i.wall=_,_.positions=g;let y=o.polygon;l(y)&&(_.fill=y.fill,_.material=y.material),_.outline=!0,l(m)?(_.outlineColor=l(m.material)?m.material.color:G.WHITE,_.outlineWidth=m.width):l(y)&&(_.outlineColor=l(y.material)?y.material.color:G.WHITE)}else if(e._clampToGround&&!f&&u){let _=new $c;_.clampToGround=!0,i.polyline=_,_.positions=g,l(m)?(_.material=l(m.material)?m.material.color.getValue(je.MINIMUM_VALUE):G.WHITE,_.width=m.width??1):(_.material=G.WHITE,_.width=1),_.zIndex=h}else l(h)&&yt("kml-gx:drawOrder","KML - gx:drawOrder is not supported in LineStrings when clampToGround is false"),e._clampToGround&&!u&&yt("kml-line-tesselate","Ignoring clampToGround for KML lines without the tessellate flag."),m=l(m)?m.clone():new $c,i.polyline=m,m.positions=Vct(g,s,a,A),(!u||f)&&(m.arcType=un.NONE);return!0}function Wct(e,t,n,i,o){let r=zi(n,"outerBoundaryIs",Ne.kml),s=zi(r,"LinearRing",Ne.kml),a=zi(s,"coordinates",Ne.kml),c=e._ellipsoid,u=zG(a,c),f=Sh(n,"extrude",Ne.kml),h=On(n,"altitudeMode",Ne.kml),A=On(n,"altitudeMode",Ne.gx),g=Yv(h,A),m=l(o.polygon)?o.polygon.clone():U7(),_=o.polyline;if(l(_)&&(m.outlineColor=l(_.material)?_.material.color:G.WHITE,m.outlineWidth=_.width),i.polygon=m,g?(m.perPositionHeight=!0,m.extrudedHeight=f?0:void 0):e._clampToGround||(m.height=0),l(u)){let y=new xc(u),C=Th(n,"innerBoundaryIs",Ne.kml);for(let E=0;E<C.length;E++){s=Th(C[E],"LinearRing",Ne.kml);for(let I=0;I<s.length;I++)a=zi(s[I],"coordinates",Ne.kml),u=zG(a,c),l(u)&&y.holes.push(new xc(u))}m.hierarchy=y}return!0}function jct(e,t,n,i,o){let r=On(n,"altitudeMode",Ne.kml),s=On(n,"altitudeMode",Ne.gx),a=Th(n,"coord",Ne.gx),c=Th(n,"angles",Ne.gx),u=Th(n,"when",Ne.kml),f=Sh(n,"extrude",Ne.kml),h=Yv(r,s),A=e._ellipsoid;c.length>0&&yt("kml-gx:angles","KML - gx:angles are not supported in gx:Tracks");let g=Math.min(a.length,u.length),m=[],_=[];for(let C=0;C<g;C++){let E=WG(a[C].textContent,A);m.push(E),_.push(K.fromIso8601(u[C].textContent))}let y=new ic;return y.addSamples(_,m),i.position=y,jG(e,i,o,oye(r,s)),rye(i,o),i.availability=new hs,u.length>0&&i.availability.addInterval(new Rn({start:_[0],stop:_[_.length-1]})),h&&f&&z7(t,i,o),!0}function X_e(e,t,n,i,o,r,s,a,c){let u=e[0],f=e[e.length-1],h=new ic;h.addSamples(e,t),n.intervals.addInterval(new Rn({start:u,stop:f,isStartIncluded:c,isStopIncluded:c,data:zct(h,s,a)})),i.addInterval(new Rn({start:u,stop:f,isStartIncluded:c,isStopIncluded:c})),o.intervals.addInterval(new Rn({start:u,stop:f,isStartIncluded:c,isStopIncluded:c,data:r}))}function Yct(e,t,n,i,o){let r=Sh(n,"interpolate",Ne.gx),s=Th(n,"Track",Ne.gx),a,c,u,f=!1,h=new J_,A=new hs,g=new nc,m=e._ellipsoid;for(let _=0,y=s.length;_<y;_++){let C=s[_],E=Th(C,"when",Ne.kml),I=Th(C,"coord",Ne.gx),b=On(C,"altitudeMode",Ne.kml),S=On(C,"altitudeMode",Ne.gx),B=Yv(b,S),v=Sh(C,"extrude",Ne.kml),P=Math.min(I.length,E.length),N=[];a=[];for(let L=0;L<P;L++){let p=WG(I[L].textContent,m);N.push(p),a.push(K.fromIso8601(E[L].textContent))}r&&(l(c)&&X_e([c,a[0]],[u,N[0]],g,A,h,!1,"absolute",void 0,!1),c=a[P-1],u=N[N.length-1]),X_e(a,N,g,A,h,B&&v,b,S,!0),f=f||B&&v}return i.availability=A,i.position=g,jG(e,i,o),rye(i,o),f&&(z7(t,i,o),i.polyline.show=h),!0}var sye={Point:Hct,LineString:K_e,LinearRing:K_e,Polygon:Wct,Track:jct,MultiTrack:Yct,MultiGeometry:qct,Model:Kct};function qct(e,t,n,i,o,r){let s=n.childNodes,a=!1;for(let c=0,u=s.length;c<u;c++){let f=s.item(c),h=sye[f.localName];if(l(h)){let A=eye(f,t,r);A.parent=i,A.name=i.name,A.availability=i.availability,A.description=i.description,A.kml=i.kml,h(e,t,f,A,o)&&(a=!0)}}return a}function Kct(e,t,n,i,o){return yt("kml-unsupportedGeometry",`KML - Unsupported geometry: ${n.localName}`),!1}function Xct(e,t){let n=zi(e,"ExtendedData",Ne.kml);if(!l(n))return;l(zi(n,"SchemaData",Ne.kml))&&yt("kml-schemaData","KML - SchemaData is unsupported"),l(Js(n,"xmlns:prefix"))&&yt("kml-extendedData","KML - ExtendedData with xmlns:prefix is unsupported");let i={},o=Th(n,"Data",Ne.kml);if(l(o)){let r=o.length;for(let s=0;s<r;s++){let a=o[s],c=Js(a,"name");l(c)&&(i[c]={displayName:On(a,"displayName",Ne.kml),value:On(a,"value",Ne.kml)})}}t.kml.extendedData=i}var bo;typeof document<"u"&&(bo=document.createElement("div"));function Jct(e,t,n,i,o){let r,s,a,c=t.kml,u=c.extendedData,f=On(e,"description",Ne.kml),h=t.balloonStyle??n.balloonStyle,A=G.WHITE,g=G.BLACK,m=f;l(h)&&(A=h.bgColor??G.WHITE,g=h.textColor??G.BLACK,m=h.text??f);let _;if(l(m)){if(m=m.replace("$[name]",t.name??""),m=m.replace("$[description]",f??""),m=m.replace("$[address]",c.address??""),m=m.replace("$[Snippet]",c.snippet??""),m=m.replace("$[id]",t.id),m=m.replace("$[geDirections]",""),l(u)){let E=m.match(/\$\[.+?\]/g);if(E!==null)for(r=0;r<E.length;r++){let I=E[r],b=I.substr(2,I.length-3),S=/\/displayName$/.test(b);b=b.replace(/\/displayName$/,""),_=u[b],l(_)&&(_=S?_.displayName:_.value),l(_)&&(m=m.replace(I,_??""))}}}else if(l(u)&&(a=Object.keys(u),a.length>0)){for(m='<table class="cesium-infoBox-defaultTable cesium-infoBox-defaultTable-lighter"><tbody>',r=0;r<a.length;r++)s=a[r],_=u[s],m+=`<tr><th>${_.displayName??s}</th><td>${_.value??""}</td></tr>`;m+="</tbody></table>"}if(!l(m))return;m=Rct.link(m),bo.innerHTML=m;let y=bo.querySelectorAll("a");for(r=0;r<y.length;r++)y[r].setAttribute("target","_blank");l(i)&&i.keys.length>1&&(Yu(bo,"a","href",i),Yu(bo,"link","href",i),Yu(bo,"area","href",i),Yu(bo,"img","src",i),Yu(bo,"iframe","src",i),Yu(bo,"video","src",i),Yu(bo,"audio","src",i),Yu(bo,"source","src",i),Yu(bo,"track","src",i),Yu(bo,"input","src",i),Yu(bo,"embed","src",i),Yu(bo,"script","src",i),Yu(bo,"video","poster",i)),qu(bo,"a","href",o),qu(bo,"link","href",o),qu(bo,"area","href",o),qu(bo,"img","src",o),qu(bo,"iframe","src",o),qu(bo,"video","src",o),qu(bo,"audio","src",o),qu(bo,"source","src",o),qu(bo,"track","src",o),qu(bo,"input","src",o),qu(bo,"embed","src",o),qu(bo,"script","src",o),qu(bo,"video","poster",o);let C='<div class="cesium-infoBox-description-lighter" style="';C+="overflow:auto;",C+="word-wrap:break-word;",C+=`background-color:${A.toCssColorString()};`,C+=`color:${g.toCssColorString()};`,C+='">',C+=`${bo.innerHTML}</div>`,bo.innerHTML="",t.description=C}function YG(e,t,n){let i=n.entityCollection,o=n.parentEntity,r=n.sourceResource,s=n.uriResolver,a=eye(t,i,n.context),c=a.kml,u=Uct(e,t,n.styleCollection,r,s),f=On(t,"name",Ne.kml);a.name=f,a.parent=o;let h=Qct(t);l(h)||(h=Fct(t)),a.availability=h,W7(a);function A(I){return I?I.show&&A(I.parent):!0}let g=Sh(t,"visibility",Ne.kml);a.show=A(o)&&(g??!0);let m=zi(t,"author",Ne.atom),_=c.author;_.name=On(m,"name",Ne.atom),_.uri=On(m,"uri",Ne.atom),_.email=On(m,"email",Ne.atom);let y=zi(t,"link",Ne.atom),C=c.link;C.href=Js(y,"href"),C.hreflang=Js(y,"hreflang"),C.rel=Js(y,"rel"),C.type=Js(y,"type"),C.title=Js(y,"title"),C.length=Js(y,"length"),c.address=On(t,"address",Ne.kml),c.phoneNumber=On(t,"phoneNumber",Ne.kml),c.snippet=On(t,"Snippet",Ne.kml),Xct(t,a),Jct(t,a,u,s,r);let E=e._ellipsoid;return lye(t,a,E),cye(t,a,E),l(zi(t,"Region",Ne.kml))&&yt("kml-region","KML - Placemark Regions are unsupported"),{entity:a,styleEntity:u}}function aye(e,t,n,i){i.addNodes(t.childNodes,n),i.process()}function Zct(e,t,n,i){let o=YG(e,t,n),r=ze(n);r.parentEntity=o.entity,aye(e,t,r,i)}function $ct(e,t,n,i){let o=YG(e,t,n),r=o.entity,s=o.styleEntity,a=!1,c=t.childNodes;for(let u=0,f=c.length;u<f&&!a;u++){let h=c.item(u),A=sye[h.localName];l(A)&&(A(e,n.entityCollection,h,r,s,r.id),a=!0)}a||(r.merge(s),jG(e,r,s))}var elt={FlyTo:ilt,Wait:nlt,SoundCue:R7,AnimatedUpdate:R7,TourControl:R7};function tlt(e,t,n,i){let o=On(t,"name",Ne.kml),r=Js(t,"id"),s=new QG(o,r),a=zi(t,"Playlist",Ne.gx);if(a){let c=e._ellipsoid,u=a.childNodes;for(let f=0;f<u.length;f++){let h=u[f];if(h.localName){let A=elt[h.localName];A?A(s,h,c):console.log(`Unknown KML Tour playlist entry type ${h.localName}`)}}}e._kmlTours.push(s)}function R7(e,t){yt(`KML Tour unsupported node ${t.localName}`)}function nlt(e,t){let n=fi(t,"duration",Ne.gx);e.addPlaylistEntry(new GG(n))}function ilt(e,t,n){let i=fi(t,"duration",Ne.gx),o=On(t,"flyToMode",Ne.gx),r={kml:{}};lye(t,r,n),cye(t,r,n);let s=r.kml.lookAt||r.kml.camera,a=new UG(i,o,s);e.addPlaylistEntry(a)}function cye(e,t,n){let i=zi(e,"Camera",Ne.kml);if(l(i)){let o=fi(i,"longitude",Ne.kml)??0,r=fi(i,"latitude",Ne.kml)??0,s=fi(i,"altitude",Ne.kml)??0,a=fi(i,"heading",Ne.kml)??0,c=fi(i,"tilt",Ne.kml)??0,u=fi(i,"roll",Ne.kml)??0,f=d.fromDegrees(o,r,s,n),h=pc.fromDegrees(a,c-90,u);t.kml.camera=new OU(f,h)}}function lye(e,t,n){let i=zi(e,"LookAt",Ne.kml);if(l(i)){let o=fi(i,"longitude",Ne.kml)??0,r=fi(i,"latitude",Ne.kml)??0,s=fi(i,"altitude",Ne.kml)??0,a=fi(i,"heading",Ne.kml),c=fi(i,"tilt",Ne.kml),u=fi(i,"range",Ne.kml)??0;c=D.toRadians(c??0),a=D.toRadians(a??0);let f=new Eh(a,c-D.PI_OVER_TWO,u),h=d.fromDegrees(o,r,s,n);t.kml.lookAt=new OG(h,f)}}function olt(e,t,n,i){let o=n.screenOverlayContainer;if(!l(o))return;let r=n.sourceResource,s=n.uriResolver,a=zi(t,"Icon",Ne.kml),c=G7(a,e,r,s,!1);if(!l(c))return;let u=document.createElement("img");e._screenOverlays.push(u),u.src=c.url,u.onload=function(){let f=["position: absolute"],h=zi(t,"screenXY",Ne.kml),A=zi(t,"overlayXY",Ne.kml),g=zi(t,"size",Ne.kml),m,_,y,C,E,I;l(g)&&(m=Ty(g,"x"),_=Ty(g,"y"),y=Js(g,"xunits"),C=Js(g,"yunits"),l(m)&&m!==-1&&m!==0&&(y==="fraction"?E=`width: ${Math.floor(m*100)}%`:y==="pixels"&&(E=`width: ${m}px`),f.push(E)),l(_)&&_!==-1&&_!==0&&(C==="fraction"?I=`height: ${Math.floor(_*100)}%`:C==="pixels"&&(I=`height: ${_}px`),f.push(I))),u.style=f.join(";");let b=0,S=u.height;l(A)&&(m=Ty(A,"x"),_=Ty(A,"y"),y=Js(A,"xunits"),C=Js(A,"yunits"),l(m)&&(y==="fraction"?b=m*u.width:(y==="pixels"||y==="insetPixels")&&(b=m)),l(_)&&(C==="fraction"?S=_*u.height:(C==="pixels"||C==="insetPixels")&&(S=_))),l(h)&&(m=Ty(h,"x"),_=Ty(h,"y"),y=Js(h,"xunits"),C=Js(h,"yunits"),l(m)&&(y==="fraction"?E=`left: calc(${Math.floor(m*100)}% - ${b}px)`:y==="pixels"?E=`left: ${m-b}px`:y==="insetPixels"&&(E=`right: ${m-b}px`),f.push(E)),l(_)&&(C==="fraction"?I=`bottom: calc(${Math.floor(_*100)}% - ${S}px)`:C==="pixels"?I=`bottom: ${_-S}px`:C==="insetPixels"&&(I=`top: ${_-S}px`),f.push(I))),u.style=f.join(";")},o.appendChild(u)}function rlt(e,t,n,i){let r=YG(e,t,n).entity,s,a=!1,c=e._ellipsoid,u=zG(zi(t,"LatLonQuad",Ne.gx),c),f=fi(t,"drawOrder",Ne.kml);if(l(u))s=U7(),s.hierarchy=new xc(u),s.zIndex=f,r.polygon=s,a=!0;else{s=new um,s.zIndex=f,r.rectangle=s;let m=zi(t,"LatLonBox",Ne.kml);if(l(m)){let _=fi(m,"west",Ne.kml),y=fi(m,"south",Ne.kml),C=fi(m,"east",Ne.kml),E=fi(m,"north",Ne.kml);l(_)&&(_=D.negativePiToPi(D.toRadians(_))),l(y)&&(y=D.clampToLatitudeRange(D.toRadians(y))),l(C)&&(C=D.negativePiToPi(D.toRadians(C))),l(E)&&(E=D.clampToLatitudeRange(D.toRadians(E))),s.coordinates=new ae(_,y,C,E);let I=fi(m,"rotation",Ne.kml);if(l(I)){let b=D.toRadians(I);s.rotation=b,s.stRotation=b}}}let h=zi(t,"Icon",Ne.kml),A=G7(h,e,n.sourceResource,n.uriResolver,!0);if(l(A)){a&&yt("kml-gx:LatLonQuad","KML - gx:LatLonQuad Icon does not support texture projection.");let m=fi(h,"x",Ne.gx),_=fi(h,"y",Ne.gx),y=fi(h,"w",Ne.gx),C=fi(h,"h",Ne.gx);(l(m)||l(_)||l(y)||l(C))&&yt("kml-groundOverlay-xywh","KML - gx:x, gx:y, gx:w, gx:h aren't supported for GroundOverlays"),s.material=A,s.material.color=qE(t,"color",Ne.kml),s.material.transparent=!0}else s.material=qE(t,"color",Ne.kml);let g=On(t,"altitudeMode",Ne.kml);l(g)?g==="absolute"?(s.height=fi(t,"altitude",Ne.kml),s.zIndex=void 0):g!=="clampToGround"&&yt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${g}`):(g=On(t,"altitudeMode",Ne.gx),g==="relativeToSeaFloor"?(yt("kml-altitudeMode-relativeToSeaFloor","KML - altitudeMode relativeToSeaFloor is currently not supported, treating as absolute."),s.height=fi(t,"altitude",Ne.kml),s.zIndex=void 0):g==="clampToSeaFloor"?yt("kml-altitudeMode-clampToSeaFloor","KML - altitudeMode clampToSeaFloor is currently not supported, treating as clampToGround."):l(g)&&yt("kml-altitudeMode-unknown",`KML - Unknown altitudeMode: ${g}`))}function uye(e,t,n,i){e._unsupportedNode.raiseEvent(e,n.parentEntity,t,n.entityCollection,n.styleCollection,n.sourceResource,n.uriResolver),yt(`kml-unsupportedFeature-${t.nodeName}`,`KML - Unsupported feature: ${t.nodeName}`)}var Sy={INTERVAL:0,EXPIRE:1,STOP:2};function HG(e){if(!l(e)||e.length===0)return"";let t=e[0];return(t==="&"||t==="?")&&(e=e.substring(1)),e}var slt=new ae,TT=new Ae,M7=new k,alt=new d;function V7(e,t,n,i,o,r){function s(u){return u<-D.PI_OVER_TWO?-D.PI_OVER_TWO:u>D.PI_OVER_TWO?D.PI_OVER_TWO:u}function a(u){return u>D.PI?u-D.TWO_PI:u<-D.PI?u+D.TWO_PI:u}let c=K0(e.queryParameters);if(c=c.replace(/%5B/g,"[").replace(/%5D/g,"]"),l(t)&&t._mode!==ie.MORPHING){let u,f;if(o=o??slt,l(n)&&(M7.x=n.clientWidth*.5,M7.y=n.clientHeight*.5,u=t.pickEllipsoid(M7,r,alt)),l(u)?f=r.cartesianToCartographic(u,TT):(f=ae.center(o,TT),u=r.cartographicToCartesian(f)),l(i)&&!D.equalsEpsilon(i,1,D.EPSILON9)){let C=o.width*i*.5,E=o.height*i*.5;o=new ae(a(f.longitude-C),s(f.latitude-E),a(f.longitude+C),s(f.latitude+E))}c=c.replace("[bboxWest]",D.toDegrees(o.west).toString()),c=c.replace("[bboxSouth]",D.toDegrees(o.south).toString()),c=c.replace("[bboxEast]",D.toDegrees(o.east).toString()),c=c.replace("[bboxNorth]",D.toDegrees(o.north).toString());let h=D.toDegrees(f.longitude).toString(),A=D.toDegrees(f.latitude).toString();c=c.replace("[lookatLon]",h),c=c.replace("[lookatLat]",A),c=c.replace("[lookatTilt]",D.toDegrees(t.pitch).toString()),c=c.replace("[lookatHeading]",D.toDegrees(t.heading).toString()),c=c.replace("[lookatRange]",d.distance(t.positionWC,u)),c=c.replace("[lookatTerrainLon]",h),c=c.replace("[lookatTerrainLat]",A),c=c.replace("[lookatTerrainAlt]",f.height.toString()),r.cartesianToCartographic(t.positionWC,TT),c=c.replace("[cameraLon]",D.toDegrees(TT.longitude).toString()),c=c.replace("[cameraLat]",D.toDegrees(TT.latitude).toString()),c=c.replace("[cameraAlt]",D.toDegrees(TT.height).toString());let g=t.frustum,m=g.aspectRatio,_="",y="";if(l(m)){let C=D.toDegrees(g.fov);m>1?(_=C,y=C/m):(y=C,_=C*m)}c=c.replace("[horizFov]",_.toString()),c=c.replace("[vertFov]",y.toString())}else c=c.replace("[bboxWest]","-180"),c=c.replace("[bboxSouth]","-90"),c=c.replace("[bboxEast]","180"),c=c.replace("[bboxNorth]","90"),c=c.replace("[lookatLon]",""),c=c.replace("[lookatLat]",""),c=c.replace("[lookatRange]",""),c=c.replace("[lookatTilt]",""),c=c.replace("[lookatHeading]",""),c=c.replace("[lookatTerrainLon]",""),c=c.replace("[lookatTerrainLat]",""),c=c.replace("[lookatTerrainAlt]",""),c=c.replace("[cameraLon]",""),c=c.replace("[cameraLat]",""),c=c.replace("[cameraAlt]",""),c=c.replace("[horizFov]",""),c=c.replace("[vertFov]","");l(n)?(c=c.replace("[horizPixels]",n.clientWidth),c=c.replace("[vertPixels]",n.clientHeight)):(c=c.replace("[horizPixels]",""),c=c.replace("[vertPixels]","")),c=c.replace("[terrainEnabled]","1"),c=c.replace("[clientVersion]","1"),c=c.replace("[kmlVersion]","2.2"),c=c.replace("[clientName]","Cesium"),c=c.replace("[language]","English"),e.setQueryParameters(Af(c))}function clt(e,t,n,i){let r=YG(e,t,n).entity,s=n.sourceResource,a=n.uriResolver,c=zi(t,"Link",Ne.kml);if(l(c)||(c=zi(t,"Url",Ne.kml)),l(c)){let u=On(c,"href",Ne.kml),f,h;if(l(u)){let A=u;if(u=k7(u,s,n.uriResolver),/^data:/.test(u.getUrlComponent()))/\.kmz/i.test(s.getUrlComponent())||(A=s.getDerivedResource({url:A}));else{if(A=u.clone(),f=On(c,"viewRefreshMode",Ne.kml),f==="onRegion"){yt("kml-refrehMode-onRegion","KML - Unsupported viewRefreshMode: onRegion");return}h=On(c,"viewBoundScale",Ne.kml)??1;let y=f==="onStop"?"BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]":"",C=On(c,"viewFormat",Ne.kml)??y,E=On(c,"httpQuery",Ne.kml);l(C)&&u.setQueryParameters(Af(HG(C))),l(E)&&u.setQueryParameters(Af(HG(E)));let I=e._ellipsoid;V7(u,e.camera,e.canvas,h,e._lastCameraView.bbox,I)}let g={sourceUri:A,uriResolver:a,context:r.id,screenOverlayContainer:n.screenOverlayContainer},m=new Oa,_=H7(e,m,u,g).then(function(y){let C=e._entityCollection,E=m.values;C.suspendEvents();for(let S=0;S<E.length;S++){let B=E[S];l(B.parent)||(B.parent=r,W7(B)),C.add(B)}C.resumeEvents();let I=On(c,"refreshMode",Ne.kml),b=fi(c,"refreshInterval",Ne.kml)??0;if(I==="onInterval"&&b>0||I==="onExpire"||f==="onStop"){let S=zi(y,"NetworkLinkControl",Ne.kml),B=l(S),v=K.now(),P={id:Xn(),href:u,cookie:{},lastUpdated:v,updating:!1,entity:r,viewBoundScale:h,needsUpdate:!1,cameraUpdateTime:v},N=0;if(B&&(P.cookie=Af(On(S,"cookie",Ne.kml)??""),N=fi(S,"minRefreshPeriod",Ne.kml)??0),I==="onInterval")B&&(b=Math.max(N,b)),P.refreshMode=Sy.INTERVAL,P.time=b;else if(I==="onExpire"){let L;if(B&&(L=On(S,"expires",Ne.kml)),l(L))try{let p=K.fromIso8601(L),x=K.secondsDifference(p,v);x>0&&x<N&&K.addSeconds(v,N,p),P.refreshMode=Sy.EXPIRE,P.time=p}catch{yt("kml-refreshMode-onInterval-onExpire","KML - NetworkLinkControl expires is not a valid date")}else yt("kml-refreshMode-onExpire","KML - refreshMode of onExpire requires the NetworkLinkControl to have an expires element")}else l(e.camera)?(P.refreshMode=Sy.STOP,P.time=fi(c,"viewRefreshTime",Ne.kml)??0):yt("kml-refrehMode-onStop-noCamera","A NetworkLink with viewRefreshMode=onStop requires the `camera` property to be defined.");l(P.refreshMode)&&e._networkLinks.set(P.id,P)}}).catch(function(y){yt(`An error occured during loading ${u.url}`),e._error.raiseEvent(e,y)});i.addPromise(_)}}}function llt(e,t,n,i){let o=Q7[t.localName];return l(o)?o(e,t,n,i):uye(e,t,n,i)}function O7(e,t,n,i,o,r,s){t.removeAll();let a=n.documentElement,c=a.localName==="Document"?a:zi(a,"Document",Ne.kml),u=On(c,"name",Ne.kml);l(u)||(u=W_(i.getUrlComponent())),l(e._name)||(e._name=u);let f=new Ku._DeferredLoading(e),h=new Oa(e);return Promise.all(iye(e,n,h,i,!1,o)).then(function(){let A=n.documentElement;if(A.localName==="kml"){let m=A.childNodes;for(let _=0;_<m.length;_++){let y=m[_];if(l(Q7[y.localName])){A=y;break}}}let g={parentEntity:void 0,entityCollection:t,styleCollection:h,sourceResource:i,uriResolver:o,context:s,screenOverlayContainer:r};return t.suspendEvents(),llt(e,A,g,f),t.resumeEvents(),f.wait().then(function(){return n.documentElement})})}function ult(e,t,n,i,o){let r=fn("ThirdParty/Workers/z-worker-pako.js");dT({workerScripts:{deflate:[r,"./pako_deflate.min.js"],inflate:[r,"./pako_inflate.min.js"]}});let s=new xT(new Vp(n));return Promise.resolve(s.getEntries()).then(function(a){let c=[],u={},f;for(let h=0;h<a.length;h++){let A=a[h];A.directory||(/\.kml$/i.test(A.filename)&&(!l(f)||!/\//i.test(A.filename))?(l(f)&&c.push(P7(f,u)),f=A):c.push(P7(A,u)))}return l(f)&&c.push(Oct(f,u)),Promise.all(c).then(function(){if(s.close(),!l(u.kml))throw new ce("KMZ file does not contain a KML document.");return u.keys=Object.keys(u),O7(e,t,u.kml,i,u,o)})})}function H7(e,t,n,i){i=i??V.EMPTY_OBJECT;let o=i.sourceUri,r=i.uriResolver,s=i.context,a=i.screenOverlayContainer,c=n;if(typeof n=="string"||n instanceof we){n=we.createIfNeeded(n),c=n.fetchBlob(),o=o??n.clone();let u=e._resourceCredits,f=n.credits;if(l(f)){let h=f.length;for(let A=0;A<h;A++)u.push(f[A])}}else o=o??we.DEFAULT.clone();return o=we.createIfNeeded(o),l(a)&&(a=Gn(a)),Promise.resolve(c).then(function(u){return u instanceof Blob?Nct(u).then(function(f){return f?ult(e,t,u,o,a):Lct(u).then(function(h){h=Z_e(h),h=$_e(h);let A,g;try{A=F7.parseFromString(h,"application/xml")}catch(m){g=m.toString()}if(l(g)||A.body||A.documentElement.tagName==="parsererror"){let m=l(g)?g:A.documentElement.firstChild.nodeValue;throw m||(m=A.body.innerText),new ce(m)}return O7(e,t,A,o,r,a,s)})}):O7(e,t,u,o,r,a,s)}).catch(function(u){return e._error.raiseEvent(e,u),console.log(u),Promise.reject(u)})}function Ku(e){e=e??V.EMPTY_OBJECT;let t=e.camera,n=e.canvas;this._changed=new _e,this._error=new _e,this._loading=new _e,this._refresh=new _e,this._unsupportedNode=new _e,this._clock=void 0,this._entityCollection=new Oa(this),this._name=void 0,this._isLoading=!1,this._pinBuilder=new ly,this._networkLinks=new Pt,this._entityCluster=new od,this.canvas=n,this.camera=t,this._lastCameraView={position:l(t)?d.clone(t.positionWC):void 0,direction:l(t)?d.clone(t.directionWC):void 0,up:l(t)?d.clone(t.upWC):void 0,bbox:l(t)?t.computeViewRectangle():ae.clone(ae.MAX_VALUE)},this._ellipsoid=e.ellipsoid??te.default;let i=e.credit;typeof i=="string"&&(i=new Dt(i)),this._credit=i,this._resourceCredits=[],this._kmlTours=[],this._screenOverlays=[]}Ku.load=function(e,t){return t=t??V.EMPTY_OBJECT,new Ku(t).load(e,t)};Object.defineProperties(Ku.prototype,{name:{get:function(){return this._name},set:function(e){this._name!==e&&(this._name=e,this._changed.raiseEvent(this))}},clock:{get:function(){return this._clock}},entities:{get:function(){return this._entityCollection}},isLoading:{get:function(){return this._isLoading}},changedEvent:{get:function(){return this._changed}},errorEvent:{get:function(){return this._error}},loadingEvent:{get:function(){return this._loading}},refreshEvent:{get:function(){return this._refresh}},unsupportedNodeEvent:{get:function(){return this._unsupportedNode}},show:{get:function(){return this._entityCollection.show},set:function(e){this._entityCollection.show=e}},clustering:{get:function(){return this._entityCluster},set:function(e){this._entityCluster=e}},credit:{get:function(){return this._credit}},kmlTours:{get:function(){return this._kmlTours}}});Ku.prototype.load=function(e,t){t=t??V.EMPTY_OBJECT,ms.setLoading(this,!0);let n=this._name;this._name=void 0,this._clampToGround=t.clampToGround??!1;let i=this;return H7(this,this._entityCollection,e,t).then(function(){let o,r=i._entityCollection.computeAvailability(),s=r.start,a=r.stop,c=K.equals(s,je.MINIMUM_VALUE),u=K.equals(a,je.MAXIMUM_VALUE);if(!c||!u){let h;c&&(h=new Date,h.setHours(0,0,0,0),s=K.fromDate(h)),u&&(h=new Date,h.setHours(24,0,0,0),a=K.fromDate(h)),o=new Hm,o.startTime=s,o.stopTime=a,o.currentTime=K.clone(s),o.clockRange=As.LOOP_STOP,o.clockStep=vo.SYSTEM_CLOCK_MULTIPLIER,o.multiplier=Math.round(Math.min(Math.max(K.secondsDifference(a,s)/60,1),31556900))}let f=!1;return o!==i._clock&&(i._clock=o,f=!0),n!==i._name&&(f=!0),f&&i._changed.raiseEvent(i),ms.setLoading(i,!1),i}).catch(function(o){return ms.setLoading(i,!1),i._error.raiseEvent(i,o),console.log(o),Promise.reject(o)})};Ku.prototype.destroy=function(){for(;this._screenOverlays.length>0;)this._screenOverlays.pop().remove()};function W7(e){let t=e.parent;if(l(t)){let n=t.availability;if(l(n)){let i=e.availability;l(i)?i.intersect(n):e.availability=n}}}function flt(e,t,n,i,o){return function(r){if(!i.contains(t.id))return;let s=!1,a=zi(r,"NetworkLinkControl",Ne.kml),c=l(a),u=0;if(c){if(l(zi(a,"Update",Ne.kml))){yt("kml-networkLinkControl-update","KML - NetworkLinkControl updates aren't supported."),t.updating=!1,i.remove(t.id);return}t.cookie=Af(On(a,"cookie",Ne.kml)??""),u=fi(a,"minRefreshPeriod",Ne.kml)??0}let f=K.now(),h=t.refreshMode;if(h===Sy.INTERVAL)l(a)&&(t.time=Math.max(u,t.time));else if(h===Sy.EXPIRE){let v;if(l(a)&&(v=On(a,"expires",Ne.kml)),l(v))try{let P=K.fromIso8601(v),N=K.secondsDifference(P,f);N>0&&N<u&&K.addSeconds(f,u,P),t.time=P}catch{yt("kml-networkLinkControl-expires","KML - NetworkLinkControl expires is not a valid date"),s=!0}else yt("kml-refreshMode-onExpire","KML - refreshMode of onExpire requires the NetworkLinkControl to have an expires element"),s=!0}let A=t.entity,g=e._entityCollection,m=n.values;function _(v){g.remove(v);let P=v._children,N=P.length;for(let L=0;L<N;++L)_(P[L])}g.suspendEvents();let y=g.values.slice(),C;for(C=0;C<y.length;++C){let v=y[C];v.parent===A&&(v.parent=void 0,_(v))}for(g.resumeEvents(),g.suspendEvents(),C=0;C<m.length;C++){let v=m[C];l(v.parent)||(v.parent=A,W7(v)),g.add(v)}g.resumeEvents(),s?i.remove(t.id):t.lastUpdated=f;let E=g.computeAvailability(),I=E.start,b=E.stop,S=K.equals(I,je.MINIMUM_VALUE),B=K.equals(b,je.MAXIMUM_VALUE);if(!S||!B){let v=e._clock;(v.startTime!==I||v.stopTime!==b)&&(v.startTime=I,v.stopTime=b,e._changed.raiseEvent(e))}t.updating=!1,t.needsUpdate=!1,e._refresh.raiseEvent(e,o.getUrlComponent(!0))}}var N7=new Pt;Ku.prototype.update=function(e){let t=this._networkLinks;if(t.length===0)return!0;let n=K.now(),i=this;N7.removeAll();function o(f){let h=f._children,A=h.length;for(let g=0;g<A;++g){let m=h[g];N7.set(m.id,m),o(m)}}let r=!1,s=this._lastCameraView,a=this.camera;l(a)&&!(a.positionWC.equalsEpsilon(s.position,D.EPSILON7)&&a.directionWC.equalsEpsilon(s.direction,D.EPSILON7)&&a.upWC.equalsEpsilon(s.up,D.EPSILON7))&&(s.position=d.clone(a.positionWC),s.direction=d.clone(a.directionWC),s.up=d.clone(a.upWC),s.bbox=a.computeViewRectangle(),r=!0);let c=new Pt,u=!1;return t.values.forEach(function(f){let h=f.entity;if(!N7.contains(h.id)){if(!f.updating){let A=!1;if(f.refreshMode===Sy.INTERVAL?K.secondsDifference(n,f.lastUpdated)>f.time&&(A=!0):f.refreshMode===Sy.EXPIRE?K.greaterThan(n,f.time)&&(A=!0):f.refreshMode===Sy.STOP&&(r&&(f.needsUpdate=!0,f.cameraUpdateTime=n),f.needsUpdate&&K.secondsDifference(n,f.cameraUpdateTime)>=f.time&&(A=!0)),A){o(h),f.updating=!0;let g=new Oa,m=f.href.clone();m.setQueryParameters(f.cookie);let _=i._ellipsoid??te.default;V7(m,i.camera,i.canvas,f.viewBoundScale,s.bbox,_),H7(i,g,m,{context:h.id}).then(flt(i,f,g,c,m)).catch(function(y){let C=`NetworkLink ${f.href} refresh failed: ${y}`;console.log(C),i._error.raiseEvent(i,C)}),u=!0}}c.set(f.id,f)}}),u&&(this._networkLinks=c,this._changed.raiseEvent(this)),!0};function dlt(){this.author={name:void 0,uri:void 0,email:void 0},this.link={href:void 0,hreflang:void 0,rel:void 0,type:void 0,title:void 0,length:void 0},this.address=void 0,this.phoneNumber=void 0,this.snippet=void 0,this.extendedData=void 0}Ku._DeferredLoading=lA;Ku._getTimestamp=Oi;var ST=Ku;function qv(){me.throwInstantiationError()}qv.prototype.update=me.throwInstantiationError;qv.prototype.getBoundingSphere=me.throwInstantiationError;qv.prototype.isDestroyed=me.throwInstantiationError;qv.prototype.destroy=me.throwInstantiationError;var fye=qv;var j7=32,hlt="http://www.opengis.net/kml/2.2",Bh="http://www.google.com/kml/ext/2.2",mlt="http://www.w3.org/2000/xmlns/";function qG(e){this._files={},this._promises=[],this._count=0,this._modelCallback=e}var Alt=/^data:image\/([^,;]+)/;qG.prototype.texture=function(e){let t=this,n;if(typeof e=="string"||e instanceof we){if(e=we.createIfNeeded(e),!e.isDataUri)return e.url;let i=e.url.match(Alt);n=`texture_${++this._count}`,l(i)&&(n+=`.${i[1]}`);let o=e.fetchBlob().then(function(r){t._files[n]=r});return this._promises.push(o),n}if(e instanceof HTMLCanvasElement){n=`texture_${++this._count}.png`;let i=new Promise(o=>{e.toBlob(function(r){t._files[n]=r,o()})});return this._promises.push(i),n}return""};function plt(e,t){return function(n){e._files[t]=n}}qG.prototype.model=function(e,t){let n=this._modelCallback;if(!l(n))throw new ce("Encountered a model entity while exporting to KML, but no model callback was supplied.");let i={},o=n(e,t,i);for(let r in i)if(i.hasOwnProperty(r)){let s=Promise.resolve(i[r]);this._promises.push(s),s.then(plt(this,r))}return o};Object.defineProperties(qG.prototype,{promise:{get:function(){return Promise.all(this._promises)}},files:{get:function(){return this._files}}});function KG(e){this._time=e}KG.prototype.get=function(e,t,n){let i;return l(e)&&(i=l(e.getValue)?e.getValue(this._time,n):e),i??t};KG.prototype.getColor=function(e,t){let n=this.get(e,t);if(l(n))return XE(n)};KG.prototype.getMaterialType=function(e){if(l(e))return e.getType(this._time)};function Y7(){this._ids={},this._styles={},this._count=0}Y7.prototype.get=function(e){let t=this._ids,n=e.innerHTML;if(l(t[n]))return t[n];let i=`style-${++this._count}`;return e.setAttribute("id",i),i=`#${i}`,t[n]=i,this._styles[n]=e,i};Y7.prototype.save=function(e){let t=this._styles,n=e.childNodes[0];for(let i in t)t.hasOwnProperty(i)&&e.insertBefore(t[i],n)};function mye(){this._ids={}}mye.prototype.get=function(e){if(!l(e))return this.get(Xn());let t=this._ids;return l(t[e])?`${e.toString()}-${++t[e]}`:(t[e]=0,e)};function q7(e){e=e??V.EMPTY_OBJECT;let t=e.entities,n=e.kmz??!1,i=q7._createState(e),o=t.values.filter(function(u){return!l(u.parent)}),r=i.kmlDoc,s=r.documentElement;s.setAttributeNS(mlt,"xmlns:gx",Bh);let a=r.createElement("Document");s.appendChild(a),pye(i,a,o),i.styleCache.save(a);let c=i.externalFileHandler;return c.promise.then(function(){let f=new XMLSerializer().serializeToString(i.kmlDoc);return n?glt(f,c.files):{kml:f,externalFiles:c.files}})}function glt(e,t){let n=fn("ThirdParty/Workers/z-worker-pako.js");dT({workerScripts:{deflate:[n,"./pako_deflate.min.js"],inflate:[n,"./pako_inflate.min.js"]}});let i=new Lv,o=new LG(i);return o.add("doc.kml",new dG(e)).then(function(){let r=Object.keys(t);return Aye(o,r,t,0)}).then(function(){return o.close()}).then(function(r){return{kmz:r}})}function Aye(e,t,n,i){if(t.length===i)return;let o=t[i];return e.add(o,new Vp(n[o])).then(function(){return Aye(e,t,n,i+1)})}q7._createState=function(e){let t=e.entities,n=new Y7,i=t.computeAvailability(),o=l(e.time)?e.time:i.start,r=e.defaultAvailability??i,s=e.sampleDuration??60;r.start===je.MINIMUM_VALUE?r.stop===je.MAXIMUM_VALUE?r=new Rn:K.addSeconds(r.stop,-10*s,r.start):r.stop===je.MAXIMUM_VALUE&&K.addSeconds(r.start,10*s,r.stop);let a=new qG(e.modelCallback);return{kmlDoc:document.implementation.createDocument(hlt,"kml"),ellipsoid:e.ellipsoid??te.default,idManager:new mye,styleCache:n,externalFileHandler:a,time:o,valueGetter:new KG(o),sampleDuration:s,defaultAvailability:new hs([r])}};function pye(e,t,n){let i=e.kmlDoc,o=e.styleCache,r=e.valueGetter,s=e.idManager,a=n.length,c,u,f;for(let h=0;h<a;++h){let A=n[h];c=[],u=[],f=[],_lt(e,A,u,f),ylt(e,A.polyline,u,f),hye(e,A.rectangle,u,f,c),hye(e,A.polygon,u,f,c),xlt(e,A,A.model,u,f);let g,m=A.availability;l(m)&&(g=i.createElement("TimeSpan"),K.equals(m.start,je.MINIMUM_VALUE)||g.appendChild(yn(i,"begin",K.toIso8601(m.start))),K.equals(m.stop,je.MAXIMUM_VALUE)||g.appendChild(yn(i,"end",K.toIso8601(m.stop))));for(let C=0;C<c.length;++C){let E=c[C];E.setAttribute("id",s.get(A.id)),E.appendChild(yn(i,"name",A.name)),E.appendChild(yn(i,"visibility",A.show)),E.appendChild(yn(i,"description",A.description)),l(g)&&E.appendChild(g),t.appendChild(E)}let _=u.length;if(_>0){let C=i.createElement("Placemark");C.setAttribute("id",s.get(A.id));let E=A.name,I=A.label;if(l(I)){let S=i.createElement("LabelStyle"),B=r.get(I.text);E=l(B)&&B.length>0?B:E;let v=r.getColor(I.fillColor);l(v)&&(S.appendChild(yn(i,"color",v)),S.appendChild(yn(i,"colorMode","normal")));let P=r.get(I.scale);l(P)&&S.appendChild(yn(i,"scale",P)),f.push(S)}C.appendChild(yn(i,"name",E)),C.appendChild(yn(i,"visibility",A.show)),C.appendChild(yn(i,"description",A.description)),l(g)&&C.appendChild(g),t.appendChild(C);let b=f.length;if(b>0){let S=i.createElement("Style");for(let B=0;B<b;++B)S.appendChild(f[B]);C.appendChild(yn(i,"styleUrl",o.get(S)))}if(u.length===1)C.appendChild(u[0]);else if(u.length>1){let S=i.createElement("MultiGeometry");for(let B=0;B<_;++B)S.appendChild(u[B]);C.appendChild(S)}}let y=A._children;if(y.length>0){let C=i.createElement("Folder");C.setAttribute("id",s.get(A.id)),C.appendChild(yn(i,"name",A.name)),C.appendChild(yn(i,"visibility",A.show)),C.appendChild(yn(i,"description",A.description)),t.appendChild(C),pye(e,C,y)}}}var uu=new d,Cl=new Ae,wh=new K;function _lt(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=e.valueGetter,a=t.billboard??t.point;if(!l(a)&&!l(t.path))return;let c=t.position;if(!c.isConstant){gye(e,t,a,n,i);return}s.get(c,void 0,uu);let u=yn(o,"coordinates",KE(uu,r)),f=o.createElement("Point"),h=o.createElement("altitudeMode");h.appendChild(JE(e,a.heightReference)),f.appendChild(h),f.appendChild(u),n.push(f);let A=a instanceof jc?yye(e,a):_ye(e,a);i.push(A)}function gye(e,t,n,i,o){let r=e.kmlDoc,s=e.ellipsoid,a=e.valueGetter,c,u=t.position,f=!0;u instanceof nc?(c=u.intervals,f=!1):c=t.availability??e.defaultAvailability;let h=n instanceof Dg,A,g,m,_=[];for(A=0;A<c.length;++A){let C=c.get(A),E=f?u:C.data,I=r.createElement("altitudeMode");E instanceof Fp?(E=E._value,I.appendChild(JE(e,Ze.CLAMP_TO_GROUND))):l(n)?I.appendChild(JE(e,n.heightReference)):I.appendChild(JE(e,Ze.NONE));let b=[],S=[];if(E.isConstant){a.get(E,void 0,uu);let v=yn(r,"coordinates",KE(uu,s));b.push(K.toIso8601(C.start)),S.push(v),b.push(K.toIso8601(C.stop)),S.push(v)}else if(E instanceof ic)for(m=E._property._times,g=0;g<m.length;++g)b.push(K.toIso8601(m[g])),E.getValueInReferenceFrame(m[g],eo.FIXED,uu),S.push(KE(uu,s));else if(E instanceof ad){m=E._times;let v=E._values;for(g=0;g<m.length;++g)b.push(K.toIso8601(m[g])),d.fromArray(v,g*3,uu),S.push(KE(uu,s))}else{let v=e.sampleDuration;C.start.clone(wh),C.isStartIncluded||K.addSeconds(wh,v,wh);let P=C.stop;for(;K.lessThan(wh,P);)E.getValue(wh,uu),b.push(K.toIso8601(wh)),S.push(KE(uu,s)),K.addSeconds(wh,v,wh);C.isStopIncluded&&K.equals(wh,P)&&(E.getValue(wh,uu),b.push(K.toIso8601(wh)),S.push(KE(uu,s)))}let B=r.createElementNS(Bh,"Track");B.appendChild(I);for(let v=0;v<b.length;++v){let P=yn(r,"when",b[v]),N=yn(r,"coord",S[v],Bh);B.appendChild(P),B.appendChild(N)}h&&B.appendChild(Cye(e,n)),_.push(B)}if(_.length===1)i.push(_[0]);else if(_.length>1){let C=r.createElementNS(Bh,"MultiTrack");for(A=0;A<_.length;++A)C.appendChild(_[A]);i.push(C)}if(l(n)&&!h){let C=n instanceof jc?yye(e,n):_ye(e,n);o.push(C)}let y=t.path;if(l(y)){let C=a.get(y.width),E=y.material;if(l(E)||l(C)){let I=r.createElement("LineStyle");l(C)&&I.appendChild(yn(r,"width",C)),K7(e,E,I),o.push(I)}}}function _ye(e,t){let n=e.kmlDoc,i=e.valueGetter,o=n.createElement("IconStyle"),r=i.getColor(t.color);l(r)&&(o.appendChild(yn(n,"color",r)),o.appendChild(yn(n,"colorMode","normal")));let s=i.get(t.pixelSize);return l(s)&&o.appendChild(yn(n,"scale",s/j7)),o}function yye(e,t){let n=e.kmlDoc,i=e.valueGetter,o=e.externalFileHandler,r=n.createElement("IconStyle"),s=i.get(t.image);if(l(s)){s=o.texture(s);let A=n.createElement("Icon");A.appendChild(yn(n,"href",s));let g=i.get(t.imageSubRegion);l(g)&&(A.appendChild(yn(n,"x",g.x,Bh)),A.appendChild(yn(n,"y",g.y,Bh)),A.appendChild(yn(n,"w",g.width,Bh)),A.appendChild(yn(n,"h",g.height,Bh))),r.appendChild(A)}let a=i.getColor(t.color);l(a)&&(r.appendChild(yn(n,"color",a)),r.appendChild(yn(n,"colorMode","normal")));let c=i.get(t.scale);l(c)&&r.appendChild(yn(n,"scale",c));let u=i.get(t.pixelOffset);if(l(u)){c=c??1,k.divideByScalar(u,c,u);let A=i.get(t.width,j7),g=i.get(t.height,j7),m=i.get(t.horizontalOrigin,Ri.CENTER);m===Ri.CENTER?u.x-=A*.5:m===Ri.RIGHT&&(u.x-=A);let _=i.get(t.verticalOrigin,Wn.CENTER);_===Wn.TOP?u.y+=g:_===Wn.CENTER&&(u.y+=g*.5);let y=n.createElement("hotSpot");y.setAttribute("x",-u.x),y.setAttribute("y",u.y),y.setAttribute("xunits","pixels"),y.setAttribute("yunits","pixels"),r.appendChild(y)}let f=i.get(t.rotation),h=i.get(t.alignedAxis);return l(f)&&d.equals(d.UNIT_Z,h)&&(f=D.toDegrees(-f),f===0&&(f=360),r.appendChild(yn(n,"heading",f))),r}function ylt(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=e.valueGetter;if(!l(t))return;let a=o.createElement("LineString"),c=o.createElement("altitudeMode"),u=s.get(t.clampToGround,!1),f;u?(a.appendChild(yn(o,"tessellate",!0)),f=o.createTextNode("clampToGround")):f=o.createTextNode("absolute"),c.appendChild(f),a.appendChild(c);let h=t.positions,A=s.get(h),g=yn(o,"coordinates",KE(A,r));a.appendChild(g);let m=s.get(t.zIndex);u&&l(m)&&a.appendChild(yn(o,"drawOrder",m,Bh)),n.push(a);let _=o.createElement("LineStyle"),y=s.get(t.width);l(y)&&_.appendChild(yn(o,"width",y)),K7(e,t.material,_),i.push(_)}function Clt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=o.get(t.height,0);n>0&&(r=n);let s=t.coordinates,a=o.get(s),c=[],u=[ae.northeast,ae.southeast,ae.southwest,ae.northwest];for(let g=0;g<4;++g)u[g](a,Cl),c.push(`${D.toDegrees(Cl.longitude)},${D.toDegrees(Cl.latitude)},${r}`);let f=yn(i,"coordinates",c.join(" ")),h=i.createElement("outerBoundaryIs"),A=i.createElement("LinearRing");return A.appendChild(f),h.appendChild(A),[h]}function dye(e,t,n,i){let o=e.kmlDoc,r=e.ellipsoid,s=[],a=t.length;for(let f=0;f<a;++f)Ae.fromCartesian(t[f],r,Cl),s.push(`${D.toDegrees(Cl.longitude)},${D.toDegrees(Cl.latitude)},${i?Cl.height:n}`);let c=yn(o,"coordinates",s.join(" ")),u=o.createElement("LinearRing");return u.appendChild(c),u}function Elt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=o.get(t.height,0),s=o.get(t.perPositionHeight,!1);!s&&n>0&&(r=n);let a=[],c=t.hierarchy,u=o.get(c),f=Array.isArray(u)?u:u.positions,h=i.createElement("outerBoundaryIs");h.appendChild(dye(e,f,r,s)),a.push(h);let A=u.holes;if(l(A)){let g=A.length;for(let m=0;m<g;++m){let _=i.createElement("innerBoundaryIs");_.appendChild(dye(e,A[m].positions,r,s)),a.push(_)}}return a}function hye(e,t,n,i,o){let r=e.kmlDoc,s=e.valueGetter;if(!l(t))return;let a=t instanceof um;if(a&&s.getMaterialType(t.material)==="Image"){Ilt(e,t,o);return}let c=r.createElement("Polygon"),u=s.get(t.extrudedHeight,0);u>0&&c.appendChild(yn(r,"extrude",!0));let f=a?Clt(e,t,u):Elt(e,t,u),h=f.length;for(let y=0;y<h;++y)c.appendChild(f[y]);let A=r.createElement("altitudeMode");A.appendChild(JE(e,t.heightReference)),c.appendChild(A),n.push(c);let g=r.createElement("PolyStyle"),m=s.get(t.fill,!1);m&&g.appendChild(yn(r,"fill",m)),K7(e,t.material,g);let _=s.get(t.outline,!1);if(_){g.appendChild(yn(r,"outline",_));let y=r.createElement("LineStyle"),C=s.get(t.outlineWidth,1);y.appendChild(yn(r,"width",C));let E=s.getColor(t.outlineColor,G.BLACK);y.appendChild(yn(r,"color",E)),y.appendChild(yn(r,"colorMode","normal")),i.push(y)}i.push(g)}function Ilt(e,t,n){let i=e.kmlDoc,o=e.valueGetter,r=e.externalFileHandler,s=i.createElement("GroundOverlay"),a=i.createElement("altitudeMode");a.appendChild(JE(e,t.heightReference)),s.appendChild(a);let c=o.get(t.height);l(c)&&s.appendChild(yn(i,"altitude",c));let u=o.get(t.coordinates),f=i.createElement("LatLonBox");f.appendChild(yn(i,"north",D.toDegrees(u.north))),f.appendChild(yn(i,"south",D.toDegrees(u.south))),f.appendChild(yn(i,"east",D.toDegrees(u.east))),f.appendChild(yn(i,"west",D.toDegrees(u.west))),s.appendChild(f);let h=o.get(t.material),A=r.texture(h.image),g=i.createElement("Icon");g.appendChild(yn(i,"href",A)),s.appendChild(g);let m=h.color;l(m)&&s.appendChild(yn(i,"color",XE(h.color))),n.push(s)}function Cye(e,t){let n=e.kmlDoc,i=e.valueGetter,o=e.externalFileHandler,r=n.createElement("Model"),s=i.get(t.scale);if(l(s)){let u=n.createElement("scale");u.appendChild(yn(n,"x",s)),u.appendChild(yn(n,"y",s)),u.appendChild(yn(n,"z",s)),r.appendChild(u)}let a=n.createElement("Link"),c=o.model(t,e.time);return a.appendChild(yn(n,"href",c)),r.appendChild(a),r}function xlt(e,t,n,i,o){let r=e.kmlDoc,s=e.ellipsoid,a=e.valueGetter;if(!l(n))return;let c=t.position;if(!c.isConstant){gye(e,t,n,i,o);return}let u=Cye(e,n),f=r.createElement("altitudeMode");f.appendChild(JE(e,n.heightReference)),u.appendChild(f),a.get(c,void 0,uu),Ae.fromCartesian(uu,s,Cl);let h=r.createElement("Location");h.appendChild(yn(r,"longitude",D.toDegrees(Cl.longitude))),h.appendChild(yn(r,"latitude",D.toDegrees(Cl.latitude))),h.appendChild(yn(r,"altitude",Cl.height)),u.appendChild(h),i.push(u)}function K7(e,t,n){let i=e.kmlDoc,o=e.valueGetter;if(!l(t))return;let r=o.get(t);if(!l(r))return;let s,a=o.getMaterialType(t),c,u;switch(a){case"Image":s=XE(G.WHITE);break;case"Color":case"Grid":case"PolylineGlow":case"PolylineArrow":case"PolylineDash":s=XE(r.color);break;case"PolylineOutline":s=XE(r.color),c=XE(r.outlineColor),u=r.outlineWidth,n.appendChild(yn(i,"outerColor",c,Bh)),n.appendChild(yn(i,"outerWidth",u,Bh));break;case"Stripe":s=XE(r.oddColor);break}l(s)&&(n.appendChild(yn(i,"color",s)),n.appendChild(yn(i,"colorMode","normal")))}function JE(e,t){let n=e.kmlDoc,o=e.valueGetter.get(t,Ze.NONE),r;switch(o){case Ze.NONE:r=n.createTextNode("absolute");break;case Ze.CLAMP_TO_GROUND:r=n.createTextNode("clampToGround");break;case Ze.RELATIVE_TO_GROUND:r=n.createTextNode("relativeToGround");break}return r}function KE(e,t){Array.isArray(e)||(e=[e]);let n=e.length,i=[];for(let o=0;o<n;++o)Ae.fromCartesian(e[o],t,Cl),i.push(`${D.toDegrees(Cl.longitude)},${D.toDegrees(Cl.latitude)},${Cl.height}`);return i.join(" ")}function yn(e,t,n,i){n=n??"",typeof n=="boolean"&&(n=n?"1":"0");let o=l(i)?e.createElementNS(i,t):e.createElement(t),r=n==="string"&&n.indexOf("<")!==-1?e.createCDATASection(n):e.createTextNode(n);return o.appendChild(r),o}function XE(e){let t="",n=e.toBytes();for(let i=3;i>=0;--i)t+=n[i]<16?`0${n[i].toString(16)}`:n[i].toString(16);return t}var Eye=q7;var wT=`in vec4 position; +in vec2 textureCoordinates; + +out vec2 v_textureCoordinates; + +void main() +{ + gl_Position = position; + v_textureCoordinates = textureCoordinates; +} +`;function XG(e){this._context=e}var Kv,blt=new nt({primitiveType:Me.TRIANGLES}),Tlt=new Ei({color:new G(0,0,0,0)});function Slt(e,t){return new as({context:e,colorTextures:[t],destroyAttachments:!1})}function wlt(e,t){return ln.fromCache({context:e,vertexShaderSource:wT,fragmentShaderSource:t,attributeLocations:{position:0,textureCoordinates:1}})}function Blt(e,t){return(!l(Kv)||Kv.viewport.width!==e||Kv.viewport.height!==t)&&(Kv=Ue.fromCache({viewport:new Xe(0,0,e,t)})),Kv}XG.prototype.execute=function(e){l(e.preExecute)&&e.preExecute(e);let t=e.outputTexture,n=t.width,i=t.height,o=this._context,r=l(e.vertexArray)?e.vertexArray:o.getViewportQuadVertexArray(),s=l(e.shaderProgram)?e.shaderProgram:wlt(o,e.fragmentShaderSource),a=Slt(o,t),c=Blt(n,i),u=e.uniformMap,f=Tlt;f.framebuffer=a,f.renderState=c,f.execute(o);let h=blt;h.vertexArray=r,h.renderState=c,h.shaderProgram=s,h.uniformMap=u,h.framebuffer=a,h.execute(o),a.destroy(),e.persists||(s.destroy(),l(e.vertexArray)&&r.destroy()),l(e.postExecute)&&e.postExecute(t)};XG.prototype.isDestroyed=function(){return!1};XG.prototype.destroy=function(){return ue(this)};var JG=XG;function Dlt(e){this.context=e,this.framebuffer=void 0,this.blendingEnabled=void 0,this.scissorTest=void 0,this.viewport=void 0}var El=Dlt;function Dh(e){this._context=e,this._shaders={},this._numberOfShaders=0,this._shadersToRelease={}}Object.defineProperties(Dh.prototype,{numberOfShaders:{get:function(){return this._numberOfShaders}}});Dh.prototype.replaceShaderProgram=function(e){return l(e.shaderProgram)&&e.shaderProgram.destroy(),this.getShaderProgram(e)};function vlt(e){let t=Object.keys(e).sort();return JSON.stringify(e,t)}Dh.prototype.getShaderProgram=function(e){let t=e.vertexShaderSource,n=e.fragmentShaderSource,i=e.attributeLocations;typeof t=="string"&&(t=new We({sources:[t]})),typeof n=="string"&&(n=new We({sources:[n]}));let o=t.getCacheKey(),r=n.getCacheKey(),s=l(i)?vlt(i):"",a=`${o}:${r}:${s}`,c;if(l(this._shaders[a]))c=this._shaders[a],delete this._shadersToRelease[a];else{let u=this._context,f=t.createCombinedVertexShader(u),h=n.createCombinedFragmentShader(u),A=new ln({gl:u._gl,logShaderCompilation:u.logShaderCompilation,debugShaders:u.debugShaders,vertexShaderSource:t,vertexShaderText:f,fragmentShaderSource:n,fragmentShaderText:h,attributeLocations:i});c={cache:this,shaderProgram:A,keyword:a,derivedKeywords:[],count:0},A._cachedShader=c,this._shaders[a]=c,++this._numberOfShaders}return++c.count,c.shaderProgram};Dh.prototype.replaceDerivedShaderProgram=function(e,t,n){let i=e._cachedShader,o=t+i.keyword,r=this._shaders[o];if(l(r)){X7(this,r);let s=i.derivedKeywords.indexOf(t);s>-1&&i.derivedKeywords.splice(s,1)}return this.createDerivedShaderProgram(e,t,n)};Dh.prototype.getDerivedShaderProgram=function(e,t){let n=e._cachedShader,i=t+n.keyword,o=this._shaders[i];if(l(o))return o.shaderProgram};Dh.prototype.createDerivedShaderProgram=function(e,t,n){let i=e._cachedShader,o=t+i.keyword,r=n.vertexShaderSource,s=n.fragmentShaderSource,a=n.attributeLocations;typeof r=="string"&&(r=new We({sources:[r]})),typeof s=="string"&&(s=new We({sources:[s]}));let c=this._context,u=r.createCombinedVertexShader(c),f=s.createCombinedFragmentShader(c),h=new ln({gl:c._gl,logShaderCompilation:c.logShaderCompilation,debugShaders:c.debugShaders,vertexShaderSource:r,vertexShaderText:u,fragmentShaderSource:s,fragmentShaderText:f,attributeLocations:a}),A={cache:this,shaderProgram:h,keyword:o,derivedKeywords:[],count:0};return i.derivedKeywords.push(t),h._cachedShader=A,this._shaders[o]=A,h};function X7(e,t){let n=t.derivedKeywords,i=n.length;for(let o=0;o<i;++o){let r=n[o]+t.keyword,s=e._shaders[r];X7(e,s)}delete e._shaders[t.keyword],t.shaderProgram.finalDestroy()}Dh.prototype.destroyReleasedShaderPrograms=function(){let e=this._shadersToRelease;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];X7(this,n),--this._numberOfShaders}this._shadersToRelease={}};Dh.prototype.releaseShaderProgram=function(e){if(l(e)){let t=e._cachedShader;t&&--t.count===0&&(this._shadersToRelease[t.keyword]=t)}};Dh.prototype.isDestroyed=function(){return!1};Dh.prototype.destroy=function(){let e=this._shaders;for(let t in e)e.hasOwnProperty(t)&&e[t].shaderProgram.finalDestroy();return ue(this)};var ZG=Dh;function ZE(){this._textures={},this._numberOfTextures=0,this._texturesToRelease={}}Object.defineProperties(ZE.prototype,{numberOfTextures:{get:function(){return this._numberOfTextures}}});ZE.prototype.getTexture=function(e){let t=this._textures[e];if(l(t))return delete this._texturesToRelease[e],++t.count,t.texture};ZE.prototype.addTexture=function(e,t){let n={texture:t,count:1};t.finalDestroy=t.destroy;let i=this;t.destroy=function(){--n.count===0&&(i._texturesToRelease[e]=n)},this._textures[e]=n,++this._numberOfTextures};ZE.prototype.destroyReleasedTextures=function(){let e=this._texturesToRelease;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];delete this._textures[t],n.texture.finalDestroy(),--this._numberOfTextures}this._texturesToRelease={}};ZE.prototype.isDestroyed=function(){return!1};ZE.prototype.destroy=function(){let e=this._textures;for(let t in e)e.hasOwnProperty(t)&&e[t].texture.finalDestroy();return ue(this)};var $G=ZE;var J7={};function Plt(e){let t=6.239996+.0172019696544*e;return .001657*Math.sin(t+.01671*Math.sin(t))}var Rlt=32.184,Mlt=2451545;function Uye(e,t){t=K.addSeconds(e,Rlt,t);let n=K.totalDays(t)-Mlt;return t=K.addSeconds(t,Plt(n),t),t}var ez=new K(2451545,0,oi.TAI),Nlt=1e3,md=D.RADIANS_PER_DEGREE,Xu=D.RADIANS_PER_ARCSECOND,ac=14959787e4,Iye=new J;function Gye(e,t,n,i,o,r,s){n<0&&(n=-n,o+=D.PI);let a=e*(1-t),c=i-o,u=o,f=Olt(r-i,t),h=Llt(t,0);Glt(c,n,u,Iye);let A=a*(1+t),g=Math.cos(f),m=Math.sin(f),_=1+t*g,y=A/_;return l(s)?(s.x=y*g,s.y=y*m,s.z=0):s=new d(y*g,y*m,0),J.multiplyByVector(Iye,s,s)}function Llt(e,t){return e<=t?"Circular":e<1-t?"Elliptical":e<=1+t?"Parabolic":"Hyperbolic"}function Olt(e,t){let n=klt(e,t);return Ult(n,t)}var Flt=50,Qlt=D.EPSILON8;function klt(e,t){let n=Math.floor(e/D.TWO_PI);e-=n*D.TWO_PI;let i=e+t*Math.sin(e)/(1-Math.sin(e+t)+Math.sin(e)),o=Number.MAX_VALUE,r;for(r=0;r<Flt&&Math.abs(o-i)>Qlt;++r){o=i;let s=o-t*Math.sin(o)-e,a=1-t*Math.cos(o);i=o-s/a}return o=i+n*D.TWO_PI,o}function Ult(e,t){let n=Math.floor(e/D.TWO_PI);e-=n*D.TWO_PI;let i=Math.cos(e)-t,o=Math.sin(e)*Math.sqrt(1-t*t),r=Math.atan2(o,i);return r=D.zeroToTwoPi(r),e<0&&(r-=D.TWO_PI),r+=n*D.TWO_PI,r}function Glt(e,t,n,i){let o=Math.cos(e),r=Math.sin(e),s=Math.cos(t),a=Math.sin(t),c=Math.cos(n),u=Math.sin(n);return l(i)?(i[0]=c*o-u*r*s,i[1]=u*o+c*r*s,i[2]=r*a,i[3]=-c*r-u*o*s,i[4]=-u*r+c*o*s,i[5]=o*a,i[6]=u*a,i[7]=-c*a,i[8]=s):i=new J(c*o-u*r*s,-c*r-u*o*s,u*a,u*o+c*r*s,-u*r+c*o*s,-c*a,r*a,o*a,s),i}var zlt=1.0000010178*ac,Vlt=100.46645683*md,Hlt=129597742283429e-5*Xu,xye=16002,bye=21863,Tye=32004,Sye=10931,wye=14529,Bye=16368,Dye=15318,vye=32794,Wlt=64*1e-7*ac,jlt=-152*1e-7*ac,Ylt=62*1e-7*ac,qlt=-8*1e-7*ac,Klt=32*1e-7*ac,Xlt=-41*1e-7*ac,Jlt=19*1e-7*ac,Zlt=-11*1e-7*ac,$lt=-150*1e-7*ac,eut=-46*1e-7*ac,tut=68*1e-7*ac,nut=54*1e-7*ac,iut=14*1e-7*ac,out=24*1e-7*ac,rut=-28*1e-7*ac,sut=22*1e-7*ac,Pye=10,Rye=16002,Mye=21863,Nye=10931,Lye=1473,Oye=32004,Fye=4387,Qye=73,aut=-325*1e-7,cut=-322*1e-7,lut=-79*1e-7,uut=232*1e-7,fut=-52*1e-7,dut=97*1e-7,hut=55*1e-7,mut=-41*1e-7,Aut=-105*1e-7,put=-137*1e-7,gut=258*1e-7,_ut=35*1e-7,yut=-116*1e-7,Cut=-88*1e-7,Eut=-112*1e-7,Iut=-80*1e-7,BT=new K(0,0,oi.TAI);function xut(e,t){Uye(e,BT);let i=(BT.dayNumber-ez.dayNumber+(BT.secondsOfDay-ez.secondsOfDay)/ri.SECONDS_PER_DAY)/(ri.DAYS_PER_JULIAN_CENTURY*10),o=.3595362*i,r=zlt+Wlt*Math.cos(xye*o)+$lt*Math.sin(xye*o)+jlt*Math.cos(bye*o)+eut*Math.sin(bye*o)+Ylt*Math.cos(Tye*o)+tut*Math.sin(Tye*o)+qlt*Math.cos(Sye*o)+nut*Math.sin(Sye*o)+Klt*Math.cos(wye*o)+iut*Math.sin(wye*o)+Xlt*Math.cos(Bye*o)+out*Math.sin(Bye*o)+Jlt*Math.cos(Dye*o)+rut*Math.sin(Dye*o)+Zlt*Math.cos(vye*o)+sut*Math.sin(vye*o),s=Vlt+Hlt*i+aut*Math.cos(Pye*o)+Aut*Math.sin(Pye*o)+cut*Math.cos(Rye*o)+put*Math.sin(Rye*o)+lut*Math.cos(Mye*o)+gut*Math.sin(Mye*o)+uut*Math.cos(Nye*o)+_ut*Math.sin(Nye*o)+fut*Math.cos(Lye*o)+yut*Math.sin(Lye*o)+dut*Math.cos(Oye*o)+Cut*Math.sin(Oye*o)+hut*Math.cos(Fye*o)+Eut*Math.sin(Fye*o)+mut*Math.cos(Qye*o)+Iut*Math.sin(Qye*o),a=.0167086342-.0004203654*i,c=102.93734808*md+11612.3529*Xu*i,u=469.97289*Xu*i,f=174.87317577*md-8679.27034*Xu*i;return Gye(r,a,u,c,f,s,t)}function zye(e,t){Uye(e,BT);let i=(BT.dayNumber-ez.dayNumber+(BT.secondsOfDay-ez.secondsOfDay)/ri.SECONDS_PER_DAY)/ri.DAYS_PER_JULIAN_CENTURY,o=i*i,r=o*i,s=r*i,a=383397.7725+.004*i,c=.055545526-16e-9*i,u=5.15668983*md,f=-8e-5*i+.02966*o-42e-6*r-13e-8*s,h=83.35324312*md,A=146434202669e-4*i-38.2702*o-.045047*r+21301e-8*s,g=125.04455501*md,m=-69679193631e-4*i+6.3602*o+.007625*r-3586e-8*s,_=218.31664563*md,y=17325593434847e-4*i-6.391*o+.006588*r-3169e-8*s,C=297.85019547*md+Xu*(1602961601209e-3*i-6.3706*o+.006593*r-3169e-8*s),E=93.27209062*md+Xu*(17395272628478e-4*i-12.7512*o-.001037*r+417e-8*s),I=134.96340251*md+Xu*(17179159232178e-4*i+31.8792*o+.051635*r-2447e-7*s),b=357.52910918*md+Xu*(1295965810481e-4*i-.5532*o+136e-6*r-1149e-8*s),S=310.17137918*md-Xu*(6967051436e-3*i+6.2068*o+.007618*r-3219e-8*s),B=2*C,v=4*C,P=6*C,N=2*I,L=3*I,p=4*I,x=2*E;a+=3400.4*Math.cos(B)-635.6*Math.cos(B-I)-235.6*Math.cos(I)+218.1*Math.cos(B-b)+181*Math.cos(B+I),c+=.014216*Math.cos(B-I)+.008551*Math.cos(B-N)-.001383*Math.cos(I)+.001356*Math.cos(B+I)-.001147*Math.cos(v-L)-914e-6*Math.cos(v-N)+869e-6*Math.cos(B-b-I)-627e-6*Math.cos(B)-394e-6*Math.cos(v-p)+282e-6*Math.cos(B-b-N)-279e-6*Math.cos(C-I)-236e-6*Math.cos(N)+231e-6*Math.cos(v)+229e-6*Math.cos(P-p)-201e-6*Math.cos(N-x),f+=486.26*Math.cos(B-x)-40.13*Math.cos(B)+37.51*Math.cos(x)+25.73*Math.cos(N-x)+19.97*Math.cos(B-b-x),A+=-55609*Math.sin(B-I)-34711*Math.sin(B-N)-9792*Math.sin(I)+9385*Math.sin(v-L)+7505*Math.sin(v-N)+5318*Math.sin(B+I)+3484*Math.sin(v-p)-3417*Math.sin(B-b-I)-2530*Math.sin(P-p)-2376*Math.sin(B)-2075*Math.sin(B-L)-1883*Math.sin(N)-1736*Math.sin(P-5*I)+1626*Math.sin(b)-1370*Math.sin(P-L),m+=-5392*Math.sin(B-x)-540*Math.sin(b)-441*Math.sin(B)+423*Math.sin(x)-288*Math.sin(N-x),y+=-3332.9*Math.sin(B)+1197.4*Math.sin(B-I)-662.5*Math.sin(b)+396.3*Math.sin(I)-218*Math.sin(B-b);let T=2*S,w=3*S;f+=46.997*Math.cos(S)*i-.614*Math.cos(B-x+S)*i+.614*Math.cos(B-x-S)*i-.0297*Math.cos(T)*o-.0335*Math.cos(S)*o+.0012*Math.cos(B-x+T)*o-16e-5*Math.cos(S)*r+4e-5*Math.cos(w)*r+4e-5*Math.cos(T)*r;let M=2.116*Math.sin(S)*i-.111*Math.sin(B-x-S)*i-.0015*Math.sin(S)*o;A+=M,y+=M,m+=-520.77*Math.sin(S)*i+13.66*Math.sin(B-x+S)*i+1.12*Math.sin(B-S)*i-1.06*Math.sin(x-S)*i+.66*Math.sin(T)*o+.371*Math.sin(S)*o-.035*Math.sin(B-x+T)*o-.015*Math.sin(B-x+S)*o+.0014*Math.sin(S)*r-.0011*Math.sin(w)*r-9e-4*Math.sin(T)*r,a*=Nlt;let O=u+f*Xu,U=h+A*Xu,Q=_+y*Xu,z=g+m*Xu;return Gye(a,c,O,U,z,Q,t)}var kye=.012300034,but=kye/(kye+1)*-1;function Tut(e,t){return t=zye(e,t),d.multiplyByScalar(t,but,t)}var Vye=new J(1.0000000000000002,5619723173785822e-31,4690511510146299e-34,-5154129427414611e-31,.9174820620691819,-.39777715593191376,-223970096136568e-30,.39777715593191376,.9174820620691819),Xv=new d;J7.computeSunPositionInEarthInertialFrame=function(e,t){return l(e)||(e=K.now()),l(t)||(t=new d),Xv=xut(e,Xv),t=d.negate(Xv,t),Tut(e,Xv),d.subtract(t,Xv,t),J.multiplyByVector(Vye,t,t),t};J7.computeMoonPositionInEarthInertialFrame=function(e,t){return l(e)||(e=K.now()),t=zye(e,t),J.multiplyByVector(Vye,t,t),t};var $E=J7;function Sut(e){e=e??V.EMPTY_OBJECT,this.color=G.clone(e.color??G.WHITE),this.intensity=e.intensity??2}var wy=Sut;function DT(){this.globeDepthTexture=void 0,this.gamma=void 0,this._viewport=new Xe,this._viewportCartesian4=new se,this._viewportDirty=!1,this._viewportOrthographicMatrix=R.clone(R.IDENTITY),this._viewportTransformation=R.clone(R.IDENTITY),this._model=R.clone(R.IDENTITY),this._view=R.clone(R.IDENTITY),this._inverseView=R.clone(R.IDENTITY),this._projection=R.clone(R.IDENTITY),this._infiniteProjection=R.clone(R.IDENTITY),this._entireFrustum=new k,this._currentFrustum=new k,this._frustumPlanes=new se,this._farDepthFromNearPlusOne=void 0,this._log2FarDepthFromNearPlusOne=void 0,this._oneOverLog2FarDepthFromNearPlusOne=void 0,this._frameState=void 0,this._temeToPseudoFixed=J.clone(R.IDENTITY),this._view3DDirty=!0,this._view3D=new R,this._inverseView3DDirty=!0,this._inverseView3D=new R,this._inverseModelDirty=!0,this._inverseModel=new R,this._inverseTransposeModelDirty=!0,this._inverseTransposeModel=new J,this._viewRotation=new J,this._inverseViewRotation=new J,this._viewRotation3D=new J,this._inverseViewRotation3D=new J,this._inverseProjectionDirty=!0,this._inverseProjection=new R,this._modelViewDirty=!0,this._modelView=new R,this._modelView3DDirty=!0,this._modelView3D=new R,this._modelViewRelativeToEyeDirty=!0,this._modelViewRelativeToEye=new R,this._inverseModelViewDirty=!0,this._inverseModelView=new R,this._inverseModelView3DDirty=!0,this._inverseModelView3D=new R,this._viewProjectionDirty=!0,this._viewProjection=new R,this._inverseViewProjectionDirty=!0,this._inverseViewProjection=new R,this._modelViewProjectionDirty=!0,this._modelViewProjection=new R,this._inverseModelViewProjectionDirty=!0,this._inverseModelViewProjection=new R,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewProjectionRelativeToEye=new R,this._modelViewInfiniteProjectionDirty=!0,this._modelViewInfiniteProjection=new R,this._normalDirty=!0,this._normal=new J,this._normal3DDirty=!0,this._normal3D=new J,this._inverseNormalDirty=!0,this._inverseNormal=new J,this._inverseNormal3DDirty=!0,this._inverseNormal3D=new J,this._encodedCameraPositionMCDirty=!0,this._encodedCameraPositionMC=new ei,this._cameraPosition=new d,this._sunPositionWC=new d,this._sunPositionColumbusView=new d,this._sunDirectionWC=new d,this._sunDirectionEC=new d,this._moonDirectionEC=new d,this._lightDirectionWC=new d,this._lightDirectionEC=new d,this._lightColor=new d,this._lightColorHdr=new d,this._pass=void 0,this._mode=void 0,this._mapProjection=void 0,this._ellipsoid=void 0,this._cameraDirection=new d,this._cameraRight=new d,this._cameraUp=new d,this._frustum2DWidth=0,this._eyeHeight=0,this._eyeHeight2D=new k,this._eyeEllipsoidNormalEC=new d,this._eyeEllipsoidCurvature=new k,this._modelToEnu=new R,this._enuToModel=new R,this._pixelRatio=1,this._orthographicIn3D=!1,this._backgroundColor=new G,this._brdfLut=void 0,this._environmentMap=void 0,this._sphericalHarmonicCoefficients=void 0,this._specularEnvironmentMaps=void 0,this._specularEnvironmentMapsMaximumLOD=void 0,this._fogDensity=void 0,this._fogVisualDensityScalar=void 0,this._fogMinimumBrightness=void 0,this._atmosphereHsbShift=void 0,this._atmosphereLightIntensity=void 0,this._atmosphereRayleighCoefficient=new d,this._atmosphereRayleighScaleHeight=new d,this._atmosphereMieCoefficient=new d,this._atmosphereMieScaleHeight=void 0,this._atmosphereMieAnisotropy=void 0,this._atmosphereDynamicLighting=void 0,this._invertClassificationColor=void 0,this._splitPosition=0,this._pixelSizePerMeter=void 0,this._geometricToleranceOverMeter=void 0,this._minimumDisableDepthTestDistance=void 0}Object.defineProperties(DT.prototype,{frameState:{get:function(){return this._frameState}},viewport:{get:function(){return this._viewport},set:function(e){if(!Xe.equals(e,this._viewport)){Xe.clone(e,this._viewport);let t=this._viewport,n=this._viewportCartesian4;n.x=t.x,n.y=t.y,n.z=t.width,n.w=t.height,this._viewportDirty=!0}}},viewportCartesian4:{get:function(){return this._viewportCartesian4}},viewportOrthographic:{get:function(){return Wye(this),this._viewportOrthographicMatrix}},viewportTransformation:{get:function(){return Wye(this),this._viewportTransformation}},model:{get:function(){return this._model},set:function(e){R.clone(e,this._model),this._modelView3DDirty=!0,this._inverseModelView3DDirty=!0,this._inverseModelDirty=!0,this._inverseTransposeModelDirty=!0,this._modelViewDirty=!0,this._inverseModelViewDirty=!0,this._modelViewRelativeToEyeDirty=!0,this._inverseModelViewDirty=!0,this._modelViewProjectionDirty=!0,this._inverseModelViewProjectionDirty=!0,this._modelViewProjectionRelativeToEyeDirty=!0,this._modelViewInfiniteProjectionDirty=!0,this._normalDirty=!0,this._inverseNormalDirty=!0,this._normal3DDirty=!0,this._inverseNormal3DDirty=!0,this._encodedCameraPositionMCDirty=!0}},inverseModel:{get:function(){return this._inverseModelDirty&&(this._inverseModelDirty=!1,R.inverse(this._model,this._inverseModel)),this._inverseModel}},inverseTransposeModel:{get:function(){let e=this._inverseTransposeModel;return this._inverseTransposeModelDirty&&(this._inverseTransposeModelDirty=!1,R.getMatrix3(this.inverseModel,e),J.transpose(e,e)),e}},view:{get:function(){return this._view}},view3D:{get:function(){return $7(this),this._view3D}},viewRotation:{get:function(){return $7(this),this._viewRotation}},viewRotation3D:{get:function(){return $7(this),this._viewRotation3D}},inverseView:{get:function(){return this._inverseView}},inverseView3D:{get:function(){return qye(this),this._inverseView3D}},inverseViewRotation:{get:function(){return this._inverseViewRotation}},inverseViewRotation3D:{get:function(){return qye(this),this._inverseViewRotation3D}},projection:{get:function(){return this._projection}},inverseProjection:{get:function(){return Fut(this),this._inverseProjection}},infiniteProjection:{get:function(){return this._infiniteProjection}},modelView:{get:function(){return Qut(this),this._modelView}},modelView3D:{get:function(){return kut(this),this._modelView3D}},modelViewRelativeToEye:{get:function(){return Wut(this),this._modelViewRelativeToEye}},inverseModelView:{get:function(){return Uut(this),this._inverseModelView}},inverseModelView3D:{get:function(){return Gut(this),this._inverseModelView3D}},viewProjection:{get:function(){return zut(this),this._viewProjection}},inverseViewProjection:{get:function(){return Vut(this),this._inverseViewProjection}},modelViewProjection:{get:function(){return Hut(this),this._modelViewProjection}},inverseModelViewProjection:{get:function(){return jut(this),this._inverseModelViewProjection}},modelViewProjectionRelativeToEye:{get:function(){return Yut(this),this._modelViewProjectionRelativeToEye}},modelViewInfiniteProjection:{get:function(){return qut(this),this._modelViewInfiniteProjection}},normal:{get:function(){return Kut(this),this._normal}},normal3D:{get:function(){return Xut(this),this._normal3D}},inverseNormal:{get:function(){return Jut(this),this._inverseNormal}},inverseNormal3D:{get:function(){return Zut(this),this._inverseNormal3D}},entireFrustum:{get:function(){return this._entireFrustum}},currentFrustum:{get:function(){return this._currentFrustum}},frustumPlanes:{get:function(){return this._frustumPlanes}},farDepthFromNearPlusOne:{get:function(){return this._farDepthFromNearPlusOne}},log2FarDepthFromNearPlusOne:{get:function(){return this._log2FarDepthFromNearPlusOne}},oneOverLog2FarDepthFromNearPlusOne:{get:function(){return this._oneOverLog2FarDepthFromNearPlusOne}},eyeHeight:{get:function(){return this._eyeHeight}},eyeHeight2D:{get:function(){return this._eyeHeight2D}},eyeEllipsoidNormalEC:{get:function(){return this._eyeEllipsoidNormalEC}},eyeEllipsoidCurvature:{get:function(){return this._eyeEllipsoidCurvature}},modelToEnu:{get:function(){return this._modelToEnu}},enuToModel:{get:function(){return this._enuToModel}},sunPositionWC:{get:function(){return this._sunPositionWC}},sunPositionColumbusView:{get:function(){return this._sunPositionColumbusView}},sunDirectionWC:{get:function(){return this._sunDirectionWC}},sunDirectionEC:{get:function(){return this._sunDirectionEC}},moonDirectionEC:{get:function(){return this._moonDirectionEC}},lightDirectionWC:{get:function(){return this._lightDirectionWC}},lightDirectionEC:{get:function(){return this._lightDirectionEC}},lightColor:{get:function(){return this._lightColor}},lightColorHdr:{get:function(){return this._lightColorHdr}},encodedCameraPositionMCHigh:{get:function(){return Yye(this),this._encodedCameraPositionMC.high}},encodedCameraPositionMCLow:{get:function(){return Yye(this),this._encodedCameraPositionMC.low}},temeToPseudoFixedMatrix:{get:function(){return this._temeToPseudoFixed}},pixelRatio:{get:function(){return this._pixelRatio}},fogDensity:{get:function(){return this._fogDensity}},fogVisualDensityScalar:{get:function(){return this._fogVisualDensityScalar}},fogMinimumBrightness:{get:function(){return this._fogMinimumBrightness}},atmosphereHsbShift:{get:function(){return this._atmosphereHsbShift}},atmosphereLightIntensity:{get:function(){return this._atmosphereLightIntensity}},atmosphereRayleighCoefficient:{get:function(){return this._atmosphereRayleighCoefficient}},atmosphereRayleighScaleHeight:{get:function(){return this._atmosphereRayleighScaleHeight}},atmosphereMieCoefficient:{get:function(){return this._atmosphereMieCoefficient}},atmosphereMieScaleHeight:{get:function(){return this._atmosphereMieScaleHeight}},atmosphereMieAnisotropy:{get:function(){return this._atmosphereMieAnisotropy}},atmosphereDynamicLighting:{get:function(){return this._atmosphereDynamicLighting}},geometricToleranceOverMeter:{get:function(){return this._geometricToleranceOverMeter}},pass:{get:function(){return this._pass}},backgroundColor:{get:function(){return this._backgroundColor}},brdfLut:{get:function(){return this._brdfLut}},environmentMap:{get:function(){return this._environmentMap}},sphericalHarmonicCoefficients:{get:function(){return this._sphericalHarmonicCoefficients}},specularEnvironmentMaps:{get:function(){return this._specularEnvironmentMaps}},specularEnvironmentMapsMaximumLOD:{get:function(){return this._specularEnvironmentMapsMaximumLOD}},splitPosition:{get:function(){return this._splitPosition}},minimumDisableDepthTestDistance:{get:function(){return this._minimumDisableDepthTestDistance}},invertClassificationColor:{get:function(){return this._invertClassificationColor}},orthographicIn3D:{get:function(){return this._orthographicIn3D}},ellipsoid:{get:function(){return this._ellipsoid??te.default}}});function wut(e,t){R.clone(t,e._view),R.getMatrix3(t,e._viewRotation),e._view3DDirty=!0,e._inverseView3DDirty=!0,e._modelViewDirty=!0,e._modelView3DDirty=!0,e._modelViewRelativeToEyeDirty=!0,e._inverseModelViewDirty=!0,e._inverseModelView3DDirty=!0,e._viewProjectionDirty=!0,e._inverseViewProjectionDirty=!0,e._modelViewProjectionDirty=!0,e._modelViewProjectionRelativeToEyeDirty=!0,e._modelViewInfiniteProjectionDirty=!0,e._normalDirty=!0,e._inverseNormalDirty=!0,e._normal3DDirty=!0,e._inverseNormal3DDirty=!0}function But(e,t){R.clone(t,e._inverseView),R.getMatrix3(t,e._inverseViewRotation)}function Dut(e,t){R.clone(t,e._projection),e._inverseProjectionDirty=!0,e._viewProjectionDirty=!0,e._inverseViewProjectionDirty=!0,e._modelViewProjectionDirty=!0,e._modelViewProjectionRelativeToEyeDirty=!0}function vut(e,t){R.clone(t,e._infiniteProjection),e._modelViewInfiniteProjectionDirty=!0}var Hye=new d,Put=new R;function Rut(e,t){d.clone(t.positionWC,e._cameraPosition),d.clone(t.directionWC,e._cameraDirection),d.clone(t.rightWC,e._cameraRight),d.clone(t.upWC,e._cameraUp);let n=e._ellipsoid,i,o=t.positionCartographic;if(l(o)?(e._eyeHeight=o.height,e._eyeEllipsoidNormalEC=n.geodeticSurfaceNormalCartographic(o,e._eyeEllipsoidNormalEC),i=d.fromRadians(o.longitude,o.latitude,0,n,Hye)):(e._eyeHeight=-n.maximumRadius,d.magnitude(t.positionWC)>0&&(e._eyeEllipsoidNormalEC=d.normalize(t.positionWC,e._eyeEllipsoidNormalEC)),i=n.scaleToGeodeticSurface(t.positionWC,Hye)),e._encodedCameraPositionMCDirty=!0,!l(i))return;e._eyeEllipsoidNormalEC=J.multiplyByVector(e._viewRotation,e._eyeEllipsoidNormalEC,e._eyeEllipsoidNormalEC);let r=kt.eastNorthUpToFixedFrame(i,n,Put);e._enuToModel=R.multiplyTransformation(e.inverseModel,r,e._enuToModel),e._modelToEnu=R.inverseTransformation(e._enuToModel,e._modelToEnu),D.equalsEpsilon(n._radii.x,n._radii.y,D.EPSILON15)&&(e._eyeEllipsoidCurvature=n.getLocalCurvature(i,e._eyeEllipsoidCurvature))}var Z7=new J,Mut=new Ae;function Nut(e,t){kt.computeIcrfToCentralBodyFixedMatrix(t.time,Z7);let n=$E.computeSunPositionInEarthInertialFrame(t.time,e._sunPositionWC);J.multiplyByVector(Z7,n,n),d.normalize(n,e._sunDirectionWC),n=J.multiplyByVector(e.viewRotation3D,n,e._sunDirectionEC),d.normalize(n,n),n=$E.computeMoonPositionInEarthInertialFrame(t.time,e._moonDirectionEC),J.multiplyByVector(Z7,n,n),J.multiplyByVector(e.viewRotation3D,n,n),d.normalize(n,n);let i=t.mapProjection,r=i.ellipsoid.cartesianToCartographic(e._sunPositionWC,Mut);i.project(r,e._sunPositionColumbusView)}DT.prototype.updateCamera=function(e){wut(this,e.viewMatrix),But(this,e.inverseViewMatrix),Rut(this,e),this._entireFrustum.x=e.frustum.near,this._entireFrustum.y=e.frustum.far,this.updateFrustum(e.frustum),this._orthographicIn3D=this._mode!==ie.SCENE2D&&e.frustum instanceof An};DT.prototype.updateFrustum=function(e){Dut(this,e.projectionMatrix),l(e.infiniteProjectionMatrix)&&vut(this,e.infiniteProjectionMatrix),this._currentFrustum.x=e.near,this._currentFrustum.y=e.far,this._farDepthFromNearPlusOne=e.far-e.near+1,this._log2FarDepthFromNearPlusOne=D.log2(this._farDepthFromNearPlusOne),this._oneOverLog2FarDepthFromNearPlusOne=1/this._log2FarDepthFromNearPlusOne;let t=e.offCenterFrustum;l(t)&&(e=t),this._frustumPlanes.x=e.top,this._frustumPlanes.y=e.bottom,this._frustumPlanes.z=e.left,this._frustumPlanes.w=e.right};DT.prototype.updatePass=function(e){this._pass=e};var Lut=[],Out=new wy;DT.prototype.update=function(e){this._mode=e.mode,this._mapProjection=e.mapProjection,this._ellipsoid=e.mapProjection.ellipsoid,this._pixelRatio=e.pixelRatio;let t=e.camera;this.updateCamera(t),e.mode===ie.SCENE2D?(this._frustum2DWidth=t.frustum.right-t.frustum.left,this._eyeHeight2D.x=this._frustum2DWidth*.5,this._eyeHeight2D.y=this._eyeHeight2D.x*this._eyeHeight2D.x):(this._frustum2DWidth=0,this._eyeHeight2D.x=0,this._eyeHeight2D.y=0),Nut(this,e);let n=e.light??Out;n instanceof wy?(this._lightDirectionWC=d.clone(this._sunDirectionWC,this._lightDirectionWC),this._lightDirectionEC=d.clone(this._sunDirectionEC,this._lightDirectionEC)):(this._lightDirectionWC=d.normalize(d.negate(n.direction,this._lightDirectionWC),this._lightDirectionWC),this._lightDirectionEC=J.multiplyByVector(this.viewRotation3D,this._lightDirectionWC,this._lightDirectionEC));let i=n.color,o=d.fromElements(i.red,i.green,i.blue,this._lightColorHdr);o=d.multiplyByScalar(o,n.intensity,o);let r=d.maximumComponent(o);r>1?d.divideByScalar(o,r,this._lightColor):d.clone(o,this._lightColor);let s=e.brdfLutGenerator,a=l(s)?s.colorTexture:void 0;this._brdfLut=a,this._environmentMap=e.environmentMap??e.context.defaultCubeMap,this._sphericalHarmonicCoefficients=e.sphericalHarmonicCoefficients??Lut,this._specularEnvironmentMaps=e.specularEnvironmentMaps,this._specularEnvironmentMapsMaximumLOD=e.specularEnvironmentMapsMaximumLOD,this._fogDensity=e.fog.density,this._fogVisualDensityScalar=e.fog.visualDensityScalar,this._fogMinimumBrightness=e.fog.minimumBrightness;let c=e.atmosphere;l(c)&&(this._atmosphereHsbShift=d.fromElements(c.hueShift,c.saturationShift,c.brightnessShift,this._atmosphereHsbShift),this._atmosphereLightIntensity=c.lightIntensity,this._atmosphereRayleighCoefficient=d.clone(c.rayleighCoefficient,this._atmosphereRayleighCoefficient),this._atmosphereRayleighScaleHeight=c.rayleighScaleHeight,this._atmosphereMieCoefficient=d.clone(c.mieCoefficient,this._atmosphereMieCoefficient),this._atmosphereMieScaleHeight=c.mieScaleHeight,this._atmosphereMieAnisotropy=c.mieAnisotropy,this._atmosphereDynamicLighting=c.dynamicLighting),this._invertClassificationColor=e.invertClassificationColor,this._frameState=e,this._temeToPseudoFixed=kt.computeTemeToPseudoFixedMatrix(e.time,this._temeToPseudoFixed),this._splitPosition=e.splitPosition*e.context.drawingBufferWidth;let u=t.frustum.fov,f=this._viewport,h;l(u)?f.height>f.width?h=Math.tan(.5*u)*2/f.height:h=Math.tan(.5*u)*2/f.width:h=1/Math.max(f.width,f.height),this._geometricToleranceOverMeter=h*e.maximumScreenSpaceError,G.clone(e.backgroundColor,this._backgroundColor),this._minimumDisableDepthTestDistance=e.minimumDisableDepthTestDistance,this._minimumDisableDepthTestDistance*=this._minimumDisableDepthTestDistance,this._minimumDisableDepthTestDistance===Number.POSITIVE_INFINITY&&(this._minimumDisableDepthTestDistance=-1)};function Wye(e){if(e._viewportDirty){let t=e._viewport;R.computeOrthographicOffCenter(t.x,t.x+t.width,t.y,t.y+t.height,0,1,e._viewportOrthographicMatrix),R.computeViewportTransformation(t,0,1,e._viewportTransformation),e._viewportDirty=!1}}function Fut(e){e._inverseProjectionDirty&&(e._inverseProjectionDirty=!1,e._mode!==ie.SCENE2D&&e._mode!==ie.MORPHING&&!e._orthographicIn3D?R.inverse(e._projection,e._inverseProjection):R.clone(R.ZERO,e._inverseProjection))}function Qut(e){e._modelViewDirty&&(e._modelViewDirty=!1,R.multiplyTransformation(e._view,e._model,e._modelView))}function kut(e){e._modelView3DDirty&&(e._modelView3DDirty=!1,R.multiplyTransformation(e.view3D,e._model,e._modelView3D))}function Uut(e){e._inverseModelViewDirty&&(e._inverseModelViewDirty=!1,R.inverse(e.modelView,e._inverseModelView))}function Gut(e){e._inverseModelView3DDirty&&(e._inverseModelView3DDirty=!1,R.inverse(e.modelView3D,e._inverseModelView3D))}function zut(e){e._viewProjectionDirty&&(e._viewProjectionDirty=!1,R.multiply(e._projection,e._view,e._viewProjection))}function Vut(e){e._inverseViewProjectionDirty&&(e._inverseViewProjectionDirty=!1,R.inverse(e.viewProjection,e._inverseViewProjection))}function Hut(e){e._modelViewProjectionDirty&&(e._modelViewProjectionDirty=!1,R.multiply(e._projection,e.modelView,e._modelViewProjection))}function Wut(e){if(e._modelViewRelativeToEyeDirty){e._modelViewRelativeToEyeDirty=!1;let t=e.modelView,n=e._modelViewRelativeToEye;n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=0,n[13]=0,n[14]=0,n[15]=t[15]}}function jut(e){e._inverseModelViewProjectionDirty&&(e._inverseModelViewProjectionDirty=!1,R.inverse(e.modelViewProjection,e._inverseModelViewProjection))}function Yut(e){e._modelViewProjectionRelativeToEyeDirty&&(e._modelViewProjectionRelativeToEyeDirty=!1,R.multiply(e._projection,e.modelViewRelativeToEye,e._modelViewProjectionRelativeToEye))}function qut(e){e._modelViewInfiniteProjectionDirty&&(e._modelViewInfiniteProjectionDirty=!1,R.multiply(e._infiniteProjection,e.modelView,e._modelViewInfiniteProjection))}function Kut(e){if(e._normalDirty){e._normalDirty=!1;let t=e._normal;R.getMatrix3(e.inverseModelView,t),J.transpose(t,t)}}function Xut(e){if(e._normal3DDirty){e._normal3DDirty=!1;let t=e._normal3D;R.getMatrix3(e.inverseModelView3D,t),J.transpose(t,t)}}function Jut(e){if(e._inverseNormalDirty){e._inverseNormalDirty=!1;let t=e._inverseNormal;R.getMatrix3(e.modelView,t),J.transpose(t,t)}}function Zut(e){if(e._inverseNormal3DDirty){e._inverseNormal3DDirty=!1;let t=e._inverseNormal3D;R.getMatrix3(e.modelView3D,t),J.transpose(t,t)}}var jye=new d;function Yye(e){e._encodedCameraPositionMCDirty&&(e._encodedCameraPositionMCDirty=!1,R.multiplyByPoint(e.inverseModel,e._cameraPosition,jye),ei.fromCartesian(jye,e._encodedCameraPositionMC))}var $ut=new d,eft=new d,tft=new d,nft=new d,ift=new Ae,oft=new d,rft=new R;function sft(e,t,n,i,o,r,s,a){let c=$ut;c.x=e.y,c.y=e.z,c.z=e.x;let u=eft;u.x=n.y,u.y=n.z,u.z=n.x;let f=tft;f.x=i.y,f.y=i.z,f.z=i.x;let h=nft;h.x=t.y,h.y=t.z,h.z=t.x,r===ie.SCENE2D&&(c.z=o*.5);let A=s.unproject(c,ift);A.longitude=D.clamp(A.longitude,-Math.PI,Math.PI),A.latitude=D.clamp(A.latitude,-D.PI_OVER_TWO,D.PI_OVER_TWO);let g=s.ellipsoid,m=g.cartographicToCartesian(A,oft),_=kt.eastNorthUpToFixedFrame(m,g,rft);return R.multiplyByPointAsVector(_,u,u),R.multiplyByPointAsVector(_,f,f),R.multiplyByPointAsVector(_,h,h),l(a)||(a=new R),a[0]=u.x,a[1]=f.x,a[2]=-h.x,a[3]=0,a[4]=u.y,a[5]=f.y,a[6]=-h.y,a[7]=0,a[8]=u.z,a[9]=f.z,a[10]=-h.z,a[11]=0,a[12]=-d.dot(u,m),a[13]=-d.dot(f,m),a[14]=d.dot(h,m),a[15]=1,a}function $7(e){e._view3DDirty&&(e._mode===ie.SCENE3D?R.clone(e._view,e._view3D):sft(e._cameraPosition,e._cameraDirection,e._cameraRight,e._cameraUp,e._frustum2DWidth,e._mode,e._mapProjection,e._view3D),R.getMatrix3(e._view3D,e._viewRotation3D),e._view3DDirty=!1)}function qye(e){e._inverseView3DDirty&&(R.inverseTransformation(e.view3D,e._inverseView3D),R.getMatrix3(e._inverseView3D,e._inverseViewRotation3D),e._inverseView3DDirty=!1)}var tz=DT;function Ju(e,t){let{getWebGLStub:n,requestWebgl1:i,webgl:o={},allowTextureFilterAnisotropic:r=!0}=t??{};o.alpha=o.alpha??!1,o.stencil=o.stencil??!0,o.powerPreference=o.powerPreference??"high-performance";let s=l(n)?n(e,o):aft(e,o,i),c=typeof WebGL2RenderingContext<"u"&&s instanceof WebGL2RenderingContext;this._canvas=e,this._originalGLContext=s,this._gl=s,this._webgl2=c,this._id=Xn(),this.validateFramebuffer=!1,this.validateShaderProgram=!1,this.logShaderCompilation=!1,this._throwOnWebGLError=!1,this._shaderCache=new ZG(this),this._textureCache=new $G;let u=s;this._stencilBits=u.getParameter(u.STENCIL_BITS),qt._maximumCombinedTextureImageUnits=u.getParameter(u.MAX_COMBINED_TEXTURE_IMAGE_UNITS),qt._maximumCubeMapSize=u.getParameter(u.MAX_CUBE_MAP_TEXTURE_SIZE),qt._maximumFragmentUniformVectors=u.getParameter(u.MAX_FRAGMENT_UNIFORM_VECTORS),qt._maximumTextureImageUnits=u.getParameter(u.MAX_TEXTURE_IMAGE_UNITS),qt._maximumRenderbufferSize=u.getParameter(u.MAX_RENDERBUFFER_SIZE),qt._maximumTextureSize=u.getParameter(u.MAX_TEXTURE_SIZE),qt._maximumVaryingVectors=u.getParameter(u.MAX_VARYING_VECTORS),qt._maximumVertexAttributes=u.getParameter(u.MAX_VERTEX_ATTRIBS),qt._maximumVertexTextureImageUnits=u.getParameter(u.MAX_VERTEX_TEXTURE_IMAGE_UNITS),qt._maximumVertexUniformVectors=u.getParameter(u.MAX_VERTEX_UNIFORM_VECTORS),qt._maximumSamples=this._webgl2?u.getParameter(u.MAX_SAMPLES):0;let f=u.getParameter(u.ALIASED_LINE_WIDTH_RANGE);qt._minimumAliasedLineWidth=f[0],qt._maximumAliasedLineWidth=f[1];let h=u.getParameter(u.ALIASED_POINT_SIZE_RANGE);qt._minimumAliasedPointSize=h[0],qt._maximumAliasedPointSize=h[1];let A=u.getParameter(u.MAX_VIEWPORT_DIMS);qt._maximumViewportWidth=A[0],qt._maximumViewportHeight=A[1];let g=u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.HIGH_FLOAT);qt._highpFloatSupported=g.precision!==0;let m=u.getShaderPrecisionFormat(u.FRAGMENT_SHADER,u.HIGH_INT);qt._highpIntSupported=m.rangeMax!==0,this._antialias=u.getContextAttributes().antialias,this._standardDerivatives=!!Ur(u,["OES_standard_derivatives"]),this._blendMinmax=!!Ur(u,["EXT_blend_minmax"]),this._elementIndexUint=!!Ur(u,["OES_element_index_uint"]),this._depthTexture=!!Ur(u,["WEBGL_depth_texture","WEBKIT_WEBGL_depth_texture"]),this._fragDepth=!!Ur(u,["EXT_frag_depth"]),this._debugShaders=Ur(u,["WEBGL_debug_shaders"]),this._textureFloat=!!Ur(u,["OES_texture_float"]),this._textureHalfFloat=!!Ur(u,["OES_texture_half_float"]),this._textureFloatLinear=!!Ur(u,["OES_texture_float_linear"]),this._textureHalfFloatLinear=!!Ur(u,["OES_texture_half_float_linear"]),this._supportsTextureLod=!!Ur(u,["EXT_shader_texture_lod"]),this._colorBufferFloat=!!Ur(u,["EXT_color_buffer_float","WEBGL_color_buffer_float"]),this._floatBlend=!!Ur(u,["EXT_float_blend"]),this._colorBufferHalfFloat=!!Ur(u,["EXT_color_buffer_half_float"]),this._s3tc=!!Ur(u,["WEBGL_compressed_texture_s3tc","MOZ_WEBGL_compressed_texture_s3tc","WEBKIT_WEBGL_compressed_texture_s3tc"]),this._pvrtc=!!Ur(u,["WEBGL_compressed_texture_pvrtc","WEBKIT_WEBGL_compressed_texture_pvrtc"]),this._astc=!!Ur(u,["WEBGL_compressed_texture_astc"]),this._etc=!!Ur(u,["WEBG_compressed_texture_etc"]),this._etc1=!!Ur(u,["WEBGL_compressed_texture_etc1"]),this._bc7=!!Ur(u,["EXT_texture_compression_bptc"]),Iu.setKTX2SupportedFormats(this._s3tc,this._pvrtc,this._astc,this._etc,this._etc1,this._bc7);let _=r?Ur(u,["EXT_texture_filter_anisotropic","WEBKIT_EXT_texture_filter_anisotropic"]):void 0;this._textureFilterAnisotropic=_,qt._maximumTextureFilterAnisotropy=l(_)?u.getParameter(_.MAX_TEXTURE_MAX_ANISOTROPY_EXT):1;let y,C,E,I,b,S,B,v,P,N;if(c){let T=this;y=function(){return T._gl.createVertexArray()},C=function(w){T._gl.bindVertexArray(w)},E=function(w){T._gl.deleteVertexArray(w)},I=function(w,M,O,U,Q){u.drawElementsInstanced(w,M,O,U,Q)},b=function(w,M,O,U){u.drawArraysInstanced(w,M,O,U)},S=function(w,M){u.vertexAttribDivisor(w,M)},B=function(w){u.drawBuffers(w)}}else v=Ur(u,["OES_vertex_array_object"]),l(v)&&(y=function(){return v.createVertexArrayOES()},C=function(T){v.bindVertexArrayOES(T)},E=function(T){v.deleteVertexArrayOES(T)}),P=Ur(u,["ANGLE_instanced_arrays"]),l(P)&&(I=function(T,w,M,O,U){P.drawElementsInstancedANGLE(T,w,M,O,U)},b=function(T,w,M,O){P.drawArraysInstancedANGLE(T,w,M,O)},S=function(T,w){P.vertexAttribDivisorANGLE(T,w)}),N=Ur(u,["WEBGL_draw_buffers"]),l(N)&&(B=function(T){N.drawBuffersWEBGL(T)});this.glCreateVertexArray=y,this.glBindVertexArray=C,this.glDeleteVertexArray=E,this.glDrawElementsInstanced=I,this.glDrawArraysInstanced=b,this.glVertexAttribDivisor=S,this.glDrawBuffers=B,this._vertexArrayObject=!!v,this._instancedArrays=!!P,this._drawBuffers=!!N,qt._maximumDrawBuffers=this.drawBuffers?u.getParameter(ee.MAX_DRAW_BUFFERS):1,qt._maximumColorAttachments=this.drawBuffers?u.getParameter(ee.MAX_COLOR_ATTACHMENTS):1,this._clearColor=new G(0,0,0,0),this._clearDepth=1,this._clearStencil=0;let L=new tz,p=new El(this),x=Ue.fromCache();this._defaultPassState=p,this._defaultRenderState=x,this._defaultTexture=void 0,this._defaultEmissiveTexture=void 0,this._defaultNormalTexture=void 0,this._defaultCubeMap=void 0,this._us=L,this._currentRenderState=x,this._currentPassState=p,this._currentFramebuffer=void 0,this._maxFrameTextureUnitIndex=0,this._vertexAttribDivisors=[],this._previousDrawInstanced=!1;for(let T=0;T<qt._maximumVertexAttributes;T++)this._vertexAttribDivisors.push(0);this._pickObjects={},this._nextPickColor=new Uint32Array(1),this.options={getWebGLStub:n,requestWebgl1:i,webgl:o,allowTextureFilterAnisotropic:r},this.cache={},Ue.apply(u,x,p)}function aft(e,t,n){if(typeof WebGLRenderingContext>"u")throw new ce("The browser does not support WebGL. Visit http://get.webgl.org.");!n&&!(typeof WebGL2RenderingContext<"u")&&(n=!0);let o=n?"webgl":"webgl2",r=e.getContext(o,t);if(!l(r))throw new ce("The browser supports WebGL, but initialization failed.");return r}function cft(e,t){let n="WebGL Error: ";switch(t){case e.INVALID_ENUM:n+="INVALID_ENUM";break;case e.INVALID_VALUE:n+="INVALID_VALUE";break;case e.INVALID_OPERATION:n+="INVALID_OPERATION";break;case e.OUT_OF_MEMORY:n+="OUT_OF_MEMORY";break;case e.CONTEXT_LOST_WEBGL:n+="CONTEXT_LOST_WEBGL lost";break;default:n+=`Unknown (${t})`}return n}function lft(e,t,n,i){let o=`${cft(e,i)}: ${t.name}(`;for(let r=0;r<n.length;++r)r!==0&&(o+=", "),o+=n[r];return o+=");",o}function uft(e,t,n){let i=e.getError();if(i!==e.NO_ERROR)throw new ce(lft(e,t,n,i))}function fft(e,t,n){return{get:function(){let i=e[t];return n(e,`get: ${t}`,i),e[t]},set:function(i){e[t]=i,n(e,`set: ${t}`,i)}}}function dft(e,t){if(!l(t))return e;function n(o){return function(){let r=o.apply(e,arguments);return t(e,o,arguments),r}}let i={};for(let o in e){let r=e[o];r instanceof Function?i[o]=n(r):Object.defineProperty(i,o,fft(e,o,t))}return i}function Ur(e,t){let n=t.length;for(let i=0;i<n;++i){let o=e.getExtension(t[i]);if(o)return o}}var hft={};Object.defineProperties(Ju.prototype,{id:{get:function(){return this._id}},webgl2:{get:function(){return this._webgl2}},canvas:{get:function(){return this._canvas}},shaderCache:{get:function(){return this._shaderCache}},textureCache:{get:function(){return this._textureCache}},uniformState:{get:function(){return this._us}},stencilBits:{get:function(){return this._stencilBits}},stencilBuffer:{get:function(){return this._stencilBits>=8}},antialias:{get:function(){return this._antialias}},msaa:{get:function(){return this._webgl2}},standardDerivatives:{get:function(){return this._standardDerivatives||this._webgl2}},floatBlend:{get:function(){return this._floatBlend}},blendMinmax:{get:function(){return this._blendMinmax||this._webgl2}},elementIndexUint:{get:function(){return this._elementIndexUint||this._webgl2}},depthTexture:{get:function(){return this._depthTexture||this._webgl2}},floatingPointTexture:{get:function(){return this._webgl2||this._textureFloat}},halfFloatingPointTexture:{get:function(){return this._webgl2||this._textureHalfFloat}},textureFloatLinear:{get:function(){return this._textureFloatLinear}},textureHalfFloatLinear:{get:function(){return this._webgl2&&this._textureFloatLinear||!this._webgl2&&this._textureHalfFloatLinear}},supportsTextureLod:{get:function(){return this._webgl2||this._supportsTextureLod}},textureFilterAnisotropic:{get:function(){return!!this._textureFilterAnisotropic}},s3tc:{get:function(){return this._s3tc}},pvrtc:{get:function(){return this._pvrtc}},astc:{get:function(){return this._astc}},etc:{get:function(){return this._etc}},etc1:{get:function(){return this._etc1}},bc7:{get:function(){return this._bc7}},supportsBasis:{get:function(){return this._s3tc||this._pvrtc||this._astc||this._etc||this._etc1||this._bc7}},vertexArrayObject:{get:function(){return this._vertexArrayObject||this._webgl2}},fragmentDepth:{get:function(){return this._fragDepth||this._webgl2}},instancedArrays:{get:function(){return this._instancedArrays||this._webgl2}},colorBufferFloat:{get:function(){return this._colorBufferFloat}},colorBufferHalfFloat:{get:function(){return this._webgl2&&this._colorBufferFloat||!this._webgl2&&this._colorBufferHalfFloat}},drawBuffers:{get:function(){return this._drawBuffers||this._webgl2}},debugShaders:{get:function(){return this._debugShaders}},throwOnWebGLError:{get:function(){return this._throwOnWebGLError},set:function(e){this._throwOnWebGLError=e,this._gl=dft(this._originalGLContext,e?uft:void 0)}},defaultTexture:{get:function(){return this._defaultTexture===void 0&&(this._defaultTexture=new Nt({context:this,source:{width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])},flipY:!1})),this._defaultTexture}},defaultEmissiveTexture:{get:function(){return this._defaultEmissiveTexture===void 0&&(this._defaultEmissiveTexture=new Nt({context:this,pixelFormat:et.RGB,source:{width:1,height:1,arrayBufferView:new Uint8Array([0,0,0])},flipY:!1})),this._defaultEmissiveTexture}},defaultNormalTexture:{get:function(){return this._defaultNormalTexture===void 0&&(this._defaultNormalTexture=new Nt({context:this,pixelFormat:et.RGB,source:{width:1,height:1,arrayBufferView:new Uint8Array([128,128,255])},flipY:!1})),this._defaultNormalTexture}},defaultCubeMap:{get:function(){if(this._defaultCubeMap===void 0){let e={width:1,height:1,arrayBufferView:new Uint8Array([255,255,255,255])};this._defaultCubeMap=new jr({context:this,source:{positiveX:e,negativeX:e,positiveY:e,negativeY:e,positiveZ:e,negativeZ:e},flipY:!1})}return this._defaultCubeMap}},drawingBufferHeight:{get:function(){return this._gl.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._gl.drawingBufferWidth}},defaultFramebuffer:{get:function(){return hft}}});function Kye(e,t,n,i){let o=e._currentRenderState,r=e._currentPassState;e._currentRenderState=t,e._currentPassState=n,Ue.partialApply(e._gl,o,t,r,n,i)}var eX;typeof WebGLRenderingContext<"u"&&(eX=[ee.BACK]);function tX(e,t){if(t!==e._currentFramebuffer){e._currentFramebuffer=t;let n=eX;if(l(t))t._bind(),n=t._getActiveColorAttachments();else{let i=e._gl;i.bindFramebuffer(i.FRAMEBUFFER,null)}e.drawBuffers&&e.glDrawBuffers(n)}}var mft=new Ei;Ju.prototype.clear=function(e,t){e=e??mft,t=t??this._defaultPassState;let n=this._gl,i=0,o=e.color,r=e.depth,s=e.stencil;l(o)&&(G.equals(this._clearColor,o)||(G.clone(o,this._clearColor),n.clearColor(o.red,o.green,o.blue,o.alpha)),i|=n.COLOR_BUFFER_BIT),l(r)&&(r!==this._clearDepth&&(this._clearDepth=r,n.clearDepth(r)),i|=n.DEPTH_BUFFER_BIT),l(s)&&(s!==this._clearStencil&&(this._clearStencil=s,n.clearStencil(s)),i|=n.STENCIL_BUFFER_BIT);let a=e.renderState??this._defaultRenderState;Kye(this,a,t,!0);let c=e.framebuffer??t.framebuffer;tX(this,c),n.clear(i)};function Aft(e,t,n,i,o){tX(e,t),Kye(e,o,n,!1),i._bind(),e._maxFrameTextureUnitIndex=Math.max(e._maxFrameTextureUnitIndex,i.maximumTextureUnitIndex)}function pft(e,t,n,i){let o=t._primitiveType,r=t._vertexArray,s=t._offset,a=t._count,c=t.instanceCount;e._us.model=t._modelMatrix??R.IDENTITY,n._setUniforms(i,e._us,e.validateShaderProgram),r._bind();let u=r.indexBuffer;l(u)?(s=s*u.bytesPerIndex,l(a)?a=Math.min(a,u.numberOfIndices):a=u.numberOfIndices,c===0?e._gl.drawElements(o,a,u.indexDatatype,s):e.glDrawElementsInstanced(o,a,u.indexDatatype,s,c)):(l(a)?a=Math.min(a,r.numberOfVertices):a=r.numberOfVertices,c===0?e._gl.drawArrays(o,s,a):e.glDrawArraysInstanced(o,s,a,c)),r._unBind()}Ju.prototype.draw=function(e,t,n,i){t=t??this._defaultPassState;let o=e._framebuffer??t.framebuffer,r=e._renderState??this._defaultRenderState;n=n??e._shaderProgram,i=i??e._uniformMap,Aft(this,o,t,n,r),pft(this,e,n,i)};Ju.prototype.beginFrame=function(){};Ju.prototype.endFrame=function(){let e=this._gl;e.useProgram(null),this._currentFramebuffer=void 0,e.bindFramebuffer(e.FRAMEBUFFER,null);let t=eX;this.drawBuffers&&this.glDrawBuffers(t);let n=this._maxFrameTextureUnitIndex;this._maxFrameTextureUnitIndex=0;for(let i=0;i<n;++i)e.activeTexture(e.TEXTURE0+i),e.bindTexture(e.TEXTURE_2D,null),e.bindTexture(e.TEXTURE_CUBE_MAP,null)};Ju.prototype.readPixels=function(e){let t=this._gl;e=e??V.EMPTY_OBJECT;let n=Math.max(e.x??0,0),i=Math.max(e.y??0,0),o=e.width??this.drawingBufferWidth,r=e.height??this.drawingBufferHeight,s=e.framebuffer,a=He.UNSIGNED_BYTE;l(s)&&s.numberOfColorAttachments>0&&(a=s.getColorTexture(0).pixelDatatype);let c=et.createTypedArray(et.RGBA,a,o,r);return tX(this,s),t.readPixels(n,i,o,r,et.RGBA,He.toWebGLConstant(a,this),c),c};var Xye={position:0,textureCoordinates:1};Ju.prototype.getViewportQuadVertexArray=function(){let e=this.cache.viewportQuad_vertexArray;if(!l(e)){let t=new ht({attributes:{position:new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:[-1,-1,1,-1,1,1,-1,1]}),textureCoordinates:new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:[0,0,1,0,1,1,0,1]})},indices:new Uint16Array([0,1,2,0,2,3]),primitiveType:Me.TRIANGLES});e=li.fromGeometry({context:this,geometry:t,attributeLocations:Xye,bufferUsage:Qe.STATIC_DRAW,interleave:!0}),this.cache.viewportQuad_vertexArray=e}return e};Ju.prototype.createViewportQuadCommand=function(e,t){return t=t??V.EMPTY_OBJECT,new nt({vertexArray:this.getViewportQuadVertexArray(),primitiveType:Me.TRIANGLES,renderState:t.renderState,shaderProgram:ln.fromCache({context:this,vertexShaderSource:wT,fragmentShaderSource:e,attributeLocations:Xye}),uniformMap:t.uniformMap,owner:t.owner,framebuffer:t.framebuffer,pass:t.pass})};Ju.prototype.getObjectByPickColor=function(e){return this._pickObjects[e.toRgba()]};function nX(e,t,n){this._pickObjects=e,this.key=t,this.color=n}Object.defineProperties(nX.prototype,{object:{get:function(){return this._pickObjects[this.key]},set:function(e){this._pickObjects[this.key]=e}}});nX.prototype.destroy=function(){delete this._pickObjects[this.key]};Ju.prototype.createPickId=function(e){++this._nextPickColor[0];let t=this._nextPickColor[0];if(t===0)throw new ce("Out of unique Pick IDs.");return this._pickObjects[t]=e,new nX(this._pickObjects,t,G.fromRgba(t))};Ju.prototype.isDestroyed=function(){return!1};Ju.prototype.destroy=function(){let e=this.cache;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];l(n.destroy)&&n.destroy()}return this._shaderCache=this._shaderCache.destroy(),this._textureCache=this._textureCache.destroy(),this._defaultTexture=this._defaultTexture&&this._defaultTexture.destroy(),this._defaultEmissiveTexture=this._defaultEmissiveTexture&&this._defaultEmissiveTexture.destroy(),this._defaultNormalTexture=this._defaultNormalTexture&&this._defaultNormalTexture.destroy(),this._defaultCubeMap=this._defaultCubeMap&&this._defaultCubeMap.destroy(),ue(this)};var vT=Ju;function nz(e){this._autoDestroy=e?.autoDestroy??!0,this._canvas=document.createElement("canvas"),this._context=new vT(this._canvas,ze(e?.contextOptions)),this._canvases=[]}nz.prototype.createSceneContext=function(e){let t=e.getContext("2d",{alpha:!0}),n=this;n._canvases.push(e);let i=!1,o=function(){i=!0;let c=n._canvases.indexOf(e);c!==-1&&(n._canvases.splice(c,1),n._autoDestroy&&n._canvases.length===0&&n.destroy())},r=function(){let c=n._context.canvas,u=this.drawingBufferWidth;c.width<u&&(c.width=u);let f=this.drawingBufferHeight;c.height<f&&(c.height=f)},s=function(){let c=this.drawingBufferWidth,u=this.drawingBufferHeight,f=n._context.canvas.height-u;t.drawImage(n._context.canvas,0,f,c,u,0,0,c,u),n._context.endFrame()};return new Proxy(this._context,{get(c,u,f){if(u==="isDestroyed")return function(){return i};switch(u){case"_canvas":return e;case"destroy":return o;case"drawingBufferWidth":return e.width;case"drawingBufferHeight":return e.height;case"beginFrame":return r;case"endFrame":return s;default:return Reflect.get(c,u,f)}}})};nz.prototype.destroy=function(){this._context.destroy(),ue(this)};nz.prototype.isDestroyed=function(){return!1};var iz=nz;function e0(e){e=e??V.EMPTY_OBJECT;let{context:t,source:n,pixelFormat:i=et.RGBA,pixelDatatype:o=He.UNSIGNED_BYTE,flipY:r=!0,skipColorSpaceConversion:s=!1,sampler:a=new on}=e;if(!t.webgl2)throw new me("WebGL1 does not support texture3D. Please use a WebGL2 context.");let{width:c,height:u,depth:f}=e;l(n)&&(l(c)||(c=n.width),l(u)||(u=n.height),l(f)||(f=n.depth));let h=e.preMultiplyAlpha||i===et.RGB||i===et.LUMINANCE,A=et.toInternalFormat(i,o,t),g=et.isCompressedFormat(A),m=t._gl,_=et.texture3DSizeInBytes(i,o,c,u,f);if(this._id=e.id??Xn(),this._context=t,this._textureFilterAnisotropic=t._textureFilterAnisotropic,this._textureTarget=m.TEXTURE_3D,this._texture=m.createTexture(),this._internalFormat=A,this._pixelFormat=i,this._pixelDatatype=o,this._width=c,this._height=u,this._depth=f,this._dimensions=new d(c,u,f),this._hasMipmap=!1,this._sizeInBytes=_,this._preMultiplyAlpha=h,this._flipY=r,this._initialized=!1,this._sampler=void 0,this._sampler=a,Jye(this,a),m.activeTexture(m.TEXTURE0),m.bindTexture(this._textureTarget,this._texture),l(n)){if(s?m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.NONE):m.pixelStorei(m.UNPACK_COLORSPACE_CONVERSION_WEBGL,m.BROWSER_DEFAULT_WEBGL),!l(n.arrayBufferView))throw new me("For Texture3D, options.source.arrayBufferView must be defined");gft(this,n),this._initialized=!0}else _ft(this);m.bindTexture(this._textureTarget,null)}function gft(e,t){let n=e._context,i=n._gl,o=e._textureTarget,r=e._internalFormat,{width:s,height:a,depth:c,pixelFormat:u,pixelDatatype:f,flipY:h}=e,A=et.alignmentInBytes(u,f,s);i.pixelStorei(i.UNPACK_ALIGNMENT,A),i.pixelStorei(i.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!1),i.pixelStorei(i.UNPACK_FLIP_Y_WEBGL,!1);let{arrayBufferView:g}=t;h&&console.warn("texture3D.flipY is not supported.");let m=1;if(t.mipLevels&&t.mipLevels.length&&(m=t.mipLevels.length+1),i.texStorage3D(o,m,r,s,a,c),i.texSubImage3D(o,0,0,0,0,s,a,c,u,He.toWebGLConstant(f,n),g),m>1){let _=s,y=a,C=c;for(let E=0;E<t.mipLevels.length;++E)_=iX(_),y=iX(y),C=iX(C),i.texSubImage3D(o,E+1,0,0,0,_,y,C,u,He.toWebGLConstant(f,n),t.mipLevels[E])}}function iX(e){let t=Math.floor(e/2)|0;return Math.max(t,1)}function _ft(e){let t=e._context;t._gl.texImage3D(e._textureTarget,0,e._internalFormat,e._width,e._height,e._depth,0,e._pixelFormat,He.toWebGLConstant(e._pixelDatatype,t),null)}e0.create=function(e){return new e0(e)};Object.defineProperties(e0.prototype,{id:{get:function(){return this._id}},sampler:{get:function(){return this._sampler},set:function(e){Jye(this,e),this._sampler=e}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},dimensions:{get:function(){return this._dimensions}},preMultiplyAlpha:{get:function(){return this._preMultiplyAlpha}},flipY:{get:function(){return this._flipY}},width:{get:function(){return this._width}},height:{get:function(){return this._height}},depth:{get:function(){return this._depth}},sizeInBytes:{get:function(){return this._hasMipmap?Math.floor(this._sizeInBytes*8/7):this._sizeInBytes}},_target:{get:function(){return this._textureTarget}}});function Jye(e,t){let{minificationFilter:n,magnificationFilter:i}=t,o=[Zt.NEAREST_MIPMAP_NEAREST,Zt.NEAREST_MIPMAP_LINEAR,Zt.LINEAR_MIPMAP_NEAREST,Zt.LINEAR_MIPMAP_LINEAR].includes(n),r=e._context,s=e._pixelFormat,a=e._pixelDatatype;(a===He.FLOAT&&!r.textureFloatLinear||a===He.HALF_FLOAT&&!r.textureHalfFloatLinear)&&(n=o?Zt.NEAREST_MIPMAP_NEAREST:Zt.NEAREST,i=pi.NEAREST),et.isDepthFormat(s)&&(n=Zt.NEAREST,i=pi.NEAREST);let c=r._gl,u=e._textureTarget;c.activeTexture(c.TEXTURE0),c.bindTexture(u,e._texture),c.texParameteri(u,c.TEXTURE_MIN_FILTER,n),c.texParameteri(u,c.TEXTURE_MAG_FILTER,i),c.texParameteri(u,c.TEXTURE_WRAP_R,t.wrapR),c.texParameteri(u,c.TEXTURE_WRAP_S,t.wrapS),c.texParameteri(u,c.TEXTURE_WRAP_T,t.wrapT),l(e._textureFilterAnisotropic)&&c.texParameteri(u,e._textureFilterAnisotropic.TEXTURE_MAX_ANISOTROPY_EXT,t.maximumAnisotropy),c.bindTexture(u,null)}e0.prototype.generateMipmap=function(e){e=e??Ud.DONT_CARE,this._hasMipmap=!0;let t=this._context._gl,n=this._textureTarget;t.hint(t.GENERATE_MIPMAP_HINT,e),t.activeTexture(t.TEXTURE0),t.bindTexture(n,this._texture),t.generateMipmap(n),t.bindTexture(n,null)};e0.prototype.isDestroyed=function(){return!1};e0.prototype.destroy=function(){return this._context._gl.deleteTexture(this._texture),ue(this)};var Zye=e0;function yft(e,t,n){let i={flipY:!0,skipColorSpaceConversion:n,preferImageBitmap:!0},o=[we.createIfNeeded(t.positiveX).fetchImage(i),we.createIfNeeded(t.negativeX).fetchImage(i),we.createIfNeeded(t.positiveY).fetchImage(i),we.createIfNeeded(t.negativeY).fetchImage(i),we.createIfNeeded(t.positiveZ).fetchImage(i),we.createIfNeeded(t.negativeZ).fetchImage(i)];return Promise.all(o).then(function(r){return new jr({context:e,source:{positiveX:r[0],negativeX:r[1],positiveY:r[2],negativeY:r[3],positiveZ:r[4],negativeZ:r[5]}})})}var oz=yft;var Jv=`#ifdef MRT +layout (location = 0) out vec4 out_FragData_0; +layout (location = 1) out vec4 out_FragData_1; +#else +layout (location = 0) out vec4 out_FragColor; +#endif + +uniform vec4 u_bgColor; +uniform sampler2D u_depthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + if (texture(u_depthTexture, v_textureCoordinates).r < 1.0) + { +#ifdef MRT + out_FragData_0 = u_bgColor; + out_FragData_1 = vec4(u_bgColor.a); +#else + out_FragColor = u_bgColor; +#endif + return; + } + + discard; +} +`;var rz=`in vec2 v_textureCoordinates; +const float M_PI = 3.141592653589793; + +float vdcRadicalInverse(int i) +{ + float r; + float base = 2.0; + float value = 0.0; + float invBase = 1.0 / base; + float invBi = invBase; + for (int x = 0; x < 100; x++) + { + if (i <= 0) + { + break; + } + r = mod(float(i), base); + value += r * invBi; + invBi *= invBase; + i = int(float(i) * invBase); + } + return value; +} + +vec2 hammersley2D(int i, int N) +{ + return vec2(float(i) / float(N), vdcRadicalInverse(i)); +} + +vec3 importanceSampleGGX(vec2 xi, float alphaRoughness, vec3 N) +{ + float alphaRoughnessSquared = alphaRoughness * alphaRoughness; + float phi = 2.0 * M_PI * xi.x; + float cosTheta = sqrt((1.0 - xi.y) / (1.0 + (alphaRoughnessSquared - 1.0) * xi.y)); + float sinTheta = sqrt(1.0 - cosTheta * cosTheta); + vec3 H = vec3(sinTheta * cos(phi), sinTheta * sin(phi), cosTheta); + vec3 upVector = abs(N.z) < 0.999 ? vec3(0.0, 0.0, 1.0) : vec3(1.0, 0.0, 0.0); + vec3 tangentX = normalize(cross(upVector, N)); + vec3 tangentY = cross(N, tangentX); + return tangentX * H.x + tangentY * H.y + N * H.z; +} + +/** + * Estimate the geometric self-shadowing of the microfacets in a surface, + * using the Smith Joint GGX visibility function. + * Note: Vis = G / (4 * NdotL * NdotV) + * see Eric Heitz. 2014. Understanding the Masking-Shadowing Function in Microfacet-Based BRDFs. Journal of Computer Graphics Techniques, 3 + * see Real-Time Rendering. Page 331 to 336. + * see https://google.github.io/filament/Filament.md.html#materialsystem/specularbrdf/geometricshadowing(specularg) + * + * @param {float} alphaRoughness The roughness of the material, expressed as the square of perceptual roughness. + * @param {float} NdotL The cosine of the angle between the surface normal and the direction to the light source. + * @param {float} NdotV The cosine of the angle between the surface normal and the direction to the camera. + */ +float smithVisibilityGGX(float alphaRoughness, float NdotL, float NdotV) +{ + float alphaRoughnessSq = alphaRoughness * alphaRoughness; + + float GGXV = NdotL * sqrt(NdotV * NdotV * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + float GGXL = NdotV * sqrt(NdotL * NdotL * (1.0 - alphaRoughnessSq) + alphaRoughnessSq); + + float GGX = GGXV + GGXL; // 2.0 if NdotL = NdotV = 1.0 + if (GGX > 0.0) + { + return 0.5 / GGX; // 1/4 if NdotL = NdotV = 1.0 + } + return 0.0; +} + +vec2 integrateBrdf(float roughness, float NdotV) +{ + vec3 V = vec3(sqrt(1.0 - NdotV * NdotV), 0.0, NdotV); + float A = 0.0; + float B = 0.0; + const int NumSamples = 1024; + float alphaRoughness = roughness * roughness; + for (int i = 0; i < NumSamples; i++) + { + vec2 xi = hammersley2D(i, NumSamples); + vec3 H = importanceSampleGGX(xi, alphaRoughness, vec3(0.0, 0.0, 1.0)); + vec3 L = 2.0 * dot(V, H) * H - V; + float NdotL = clamp(L.z, 0.0, 1.0); + float NdotH = clamp(H.z, 0.0, 1.0); + float VdotH = clamp(dot(V, H), 0.0, 1.0); + if (NdotL > 0.0) + { + float G = smithVisibilityGGX(alphaRoughness, NdotL, NdotV); + float G_Vis = 4.0 * G * VdotH * NdotL / NdotH; + float Fc = pow(1.0 - VdotH, 5.0); + A += (1.0 - Fc) * G_Vis; + B += Fc * G_Vis; + } + } + return vec2(A, B) / float(NumSamples); +} + +void main() +{ + out_FragColor = vec4(integrateBrdf(v_textureCoordinates.y, v_textureCoordinates.x), 0.0, 1.0); +} +`;var sz=`uniform sampler2D u_noiseTexture; +uniform vec3 u_noiseTextureDimensions; +uniform float u_noiseDetail; +in vec2 v_offset; +in vec3 v_maximumSize; +in vec4 v_color; +in float v_slice; +in float v_brightness; + +float wrap(float value, float rangeLength) { + if(value < 0.0) { + float absValue = abs(value); + float modValue = mod(absValue, rangeLength); + return mod(rangeLength - modValue, rangeLength); + } + return mod(value, rangeLength); +} + +vec3 wrapVec(vec3 value, float rangeLength) { + return vec3(wrap(value.x, rangeLength), + wrap(value.y, rangeLength), + wrap(value.z, rangeLength)); +} + +vec2 voxelToUV(vec3 voxelIndex) { + float textureSliceWidth = u_noiseTextureDimensions.x; + float noiseTextureRows = u_noiseTextureDimensions.y; + float inverseNoiseTextureRows = u_noiseTextureDimensions.z; + + float textureSliceWidthSquared = textureSliceWidth * textureSliceWidth; + vec2 inverseNoiseTextureDimensions = vec2(noiseTextureRows / textureSliceWidthSquared, + inverseNoiseTextureRows / textureSliceWidth); + vec3 wrappedIndex = wrapVec(voxelIndex, textureSliceWidth); + float column = mod(wrappedIndex.z, textureSliceWidth * inverseNoiseTextureRows); + float row = floor(wrappedIndex.z / textureSliceWidth * noiseTextureRows); + + float xPixelCoord = wrappedIndex.x + column * textureSliceWidth; + float yPixelCoord = wrappedIndex.y + row * textureSliceWidth; + return vec2(xPixelCoord, yPixelCoord) * inverseNoiseTextureDimensions; +} + +// Interpolate a voxel with its neighbor (along the positive X-axis) +vec4 lerpSamplesX(vec3 voxelIndex, float x) { + vec2 uv0 = voxelToUV(voxelIndex); + vec2 uv1 = voxelToUV(voxelIndex + vec3(1.0, 0.0, 0.0)); + vec4 sample0 = texture(u_noiseTexture, uv0); + vec4 sample1 = texture(u_noiseTexture, uv1); + return mix(sample0, sample1, x); +} + +vec4 sampleNoiseTexture(vec3 position) { + float textureSliceWidth = u_noiseTextureDimensions.x; + vec3 recenteredPos = position + vec3(textureSliceWidth / 2.0); + vec3 lerpValue = fract(recenteredPos); + vec3 voxelIndex = floor(recenteredPos); + + vec4 xLerp00 = lerpSamplesX(voxelIndex, lerpValue.x); + vec4 xLerp01 = lerpSamplesX(voxelIndex + vec3(0.0, 0.0, 1.0), lerpValue.x); + vec4 xLerp10 = lerpSamplesX(voxelIndex + vec3(0.0, 1.0, 0.0), lerpValue.x); + vec4 xLerp11 = lerpSamplesX(voxelIndex + vec3(0.0, 1.0, 1.0), lerpValue.x); + + vec4 yLerp0 = mix(xLerp00, xLerp10, lerpValue.y); + vec4 yLerp1 = mix(xLerp01, xLerp11, lerpValue.y); + return mix(yLerp0, yLerp1, lerpValue.z); +} + +// Intersection with a unit sphere with radius 0.5 at center (0, 0, 0). +bool intersectSphere(vec3 origin, vec3 dir, float slice, + out vec3 point, out vec3 normal) { + float A = dot(dir, dir); + float B = dot(origin, dir); + float C = dot(origin, origin) - 0.25; + float discriminant = (B * B) - (A * C); + if(discriminant < 0.0) { + return false; + } + float root = sqrt(discriminant); + float t = (-B - root) / A; + if(t < 0.0) { + t = (-B + root) / A; + } + point = origin + t * dir; + + if(slice >= 0.0) { + point.z = (slice / 2.0) - 0.5; + if(length(point) > 0.5) { + return false; + } + } + + normal = normalize(point); + point -= czm_epsilon2 * normal; + return true; +} + +// Transforms the ray origin and direction into unit sphere space, +// then transforms the result back into the ellipsoid's space. +bool intersectEllipsoid(vec3 origin, vec3 dir, vec3 center, vec3 scale, float slice, + out vec3 point, out vec3 normal) { + if(scale.x <= 0.01 || scale.y < 0.01 || scale.z < 0.01) { + return false; + } + + vec3 o = (origin - center) / scale; + vec3 d = dir / scale; + vec3 p, n; + bool intersected = intersectSphere(o, d, slice, p, n); + if(intersected) { + point = (p * scale) + center; + normal = n; + } + return intersected; +} + +// Assume that if phase shift is being called for octave i, +// the frequency is of i - 1. This saves us from doing extra +// division / multiplication operations. +vec2 phaseShift2D(vec2 p, vec2 freq) { + return (czm_pi / 2.0) * sin(freq.yx * p.yx); +} + +vec2 phaseShift3D(vec3 p, vec2 freq) { + return phaseShift2D(p.xy, freq) + czm_pi * vec2(sin(freq.x * p.z)); +} + +// The cloud texture function derived from Gardner's 1985 paper, +// "Visual Simulation of Clouds." +// https://www.cs.drexel.edu/~david/Classes/Papers/p297-gardner.pdf +const float T0 = 0.6; // contrast of the texture pattern +const float k = 0.1; // computed to produce a maximum value of 1 +const float C0 = 0.8; // coefficient +const float FX0 = 0.6; // frequency X +const float FY0 = 0.6; // frequency Y +const int octaves = 5; + +float T(vec3 point) { + vec2 sum = vec2(0.0); + float Ci = C0; + vec2 FXY = vec2(FX0, FY0); + vec2 PXY = vec2(0.0); + for(int i = 1; i <= octaves; i++) { + PXY = phaseShift3D(point, FXY); + Ci *= 0.707; + FXY *= 2.0; + vec2 sinTerm = sin(FXY * point.xy + PXY); + sum += Ci * sinTerm + vec2(T0); + } + return k * sum.x * sum.y; +} + +const float a = 0.5; // fraction of surface reflection due to ambient or scattered light, +const float t = 0.4; // fraction of texture shading +const float s = 0.25; // fraction of specular reflection + +float I(float Id, float Is, float It) { + return (1.0 - a) * ((1.0 - t) * ((1.0 - s) * Id + s * Is) + t * It) + a; +} + +const vec3 lightDir = normalize(vec3(0.2, -1.0, 0.7)); + +vec4 drawCloud(vec3 rayOrigin, vec3 rayDir, vec3 cloudCenter, vec3 cloudScale, float cloudSlice, + float brightness) { + vec3 cloudPoint, cloudNormal; + if(!intersectEllipsoid(rayOrigin, rayDir, cloudCenter, cloudScale, cloudSlice, + cloudPoint, cloudNormal)) { + return vec4(0.0); + } + + float Id = clamp(dot(cloudNormal, -lightDir), 0.0, 1.0); // diffuse reflection + float Is = max(pow(dot(-lightDir, -rayDir), 2.0), 0.0); // specular reflection + float It = T(cloudPoint); // texture function + float intensity = I(Id, Is, It); + vec3 color = vec3(intensity * clamp(brightness, 0.1, 1.0)); + + vec4 noise = sampleNoiseTexture(u_noiseDetail * cloudPoint); + float W = noise.x; + float W2 = noise.y; + float W3 = noise.z; + + // The dot product between the cloud's normal and the ray's direction is greatest + // in the center of the ellipsoid's surface. It decreases towards the edge. + // Thus, it is used to blur the areas leading to the edges of the ellipsoid, + // so that no harsh lines appear. + + // The first (and biggest) layer of worley noise is then subtracted from this. + // The final result is scaled up so that the base cloud is not too translucent. + float ndDot = clamp(dot(cloudNormal, -rayDir), 0.0, 1.0); + float TR = pow(ndDot, 3.0) - W; // translucency + TR *= 1.3; + + // Subtracting the second and third layers of worley noise is more complicated. + // If these layers of noise were simply subtracted from the current translucency, + // the shape derived from the first layer of noise would be completely deleted. + // The erosion of this noise should thus be constricted to the edges of the cloud. + // However, because the edges of the ellipsoid were already blurred away, mapping + // the noise to (1.0 - ndDot) will have no impact on most of the cloud's appearance. + // The value of (0.5 - ndDot) provides the best compromise. + float minusDot = 0.5 - ndDot; + + // Even with the previous calculation, subtracting the second layer of wnoise + // erode too much of the cloud. The addition of it, however, will detailed + // volume to the cloud. As long as the noise is only added and not subtracted, + // the results are aesthetically pleasing. + + // The minusDot product is mapped in a way that it is larger at the edges of + // the ellipsoid, so a subtraction and min operation are used instead of + // an addition and max one. + TR -= min(minusDot * W2, 0.0); + + // The third level of worley noise is subtracted from the result, with some + // modifications. First, a scalar is added to minusDot so that the noise + // starts affecting the shape farther away from the center of the ellipsoid's + // surface. Then, it is scaled down so its impact is not too intense. + TR -= 0.8 * (minusDot + 0.25) * W3; + + // The texture function's shading does not correlate with the shape of the cloud + // produced by the layers of noise, so an extra shading scalar is calculated. + // The darkest areas of the cloud are assigned to be where the noise erodes + // the cloud the most. This is then interpolated based on the translucency + // and the diffuse shading term of that point in the cloud. + float shading = mix(1.0 - 0.8 * W * W, 1.0, Id * TR); + + // To avoid values that are too dark, this scalar is increased by a small amount + // and clamped so it never goes to zero. + shading = clamp(shading + 0.2, 0.3, 1.0); + + // Finally, the contrast of the cloud's color is increased. + vec3 finalColor = mix(vec3(0.5), shading * color, 1.15); + return vec4(finalColor, clamp(TR, 0.0, 1.0)) * v_color; +} + +void main() { +#ifdef DEBUG_BILLBOARDS + out_FragColor = vec4(0.0, 0.5, 0.5, 1.0); +#endif + // To avoid calculations with high values, + // we raycast from an arbitrarily smaller space. + vec2 coordinate = v_maximumSize.xy * v_offset; + + vec3 ellipsoidScale = 0.82 * v_maximumSize; + vec3 ellipsoidCenter = vec3(0.0); + + float zOffset = max(ellipsoidScale.z - 10.0, 0.0); + vec3 eye = vec3(0, 0, -10.0 - zOffset); + vec3 rayDir = normalize(vec3(coordinate, 1.0) - eye); + vec3 rayOrigin = eye; +#ifdef DEBUG_ELLIPSOIDS + vec3 point, normal; + if(intersectEllipsoid(rayOrigin, rayDir, ellipsoidCenter, ellipsoidScale, v_slice, + point, normal)) { + out_FragColor = v_brightness * v_color; + } +#else +#ifndef DEBUG_BILLBOARDS + vec4 cloud = drawCloud(rayOrigin, rayDir, + ellipsoidCenter, ellipsoidScale, v_slice, v_brightness); + if(cloud.w < 0.01) { + discard; + } + out_FragColor = cloud; +#endif +#endif +} +`;var az=`#ifdef INSTANCED +in vec2 direction; +#endif +in vec4 positionHighAndScaleX; +in vec4 positionLowAndScaleY; +in vec4 packedAttribute0; +in vec4 packedAttribute1; +in vec4 color; + +out vec2 v_offset; +out vec3 v_maximumSize; +out vec4 v_color; +out float v_slice; +out float v_brightness; + +void main() { + // Unpack attributes. + vec3 positionHigh = positionHighAndScaleX.xyz; + vec3 positionLow = positionLowAndScaleY.xyz; + vec2 scale = vec2(positionHighAndScaleX.w, positionLowAndScaleY.w); + + float show = packedAttribute0.x; + float brightness = packedAttribute0.y; + vec2 coordinates = packedAttribute0.wz; + vec3 maximumSize = packedAttribute1.xyz; + float slice = packedAttribute1.w; + +#ifdef INSTANCED + vec2 dir = direction; +#else + vec2 dir = coordinates; +#endif + + vec2 offset = dir - vec2(0.5, 0.5); + vec2 scaledOffset = scale * offset; + vec4 p = czm_translateRelativeToEye(positionHigh, positionLow); + vec4 positionEC = czm_modelViewRelativeToEye * p; + positionEC.xy += scaledOffset; + + positionEC.xyz *= show; + gl_Position = czm_projection * positionEC; + + v_offset = offset; + v_maximumSize = maximumSize; + v_color = color; + v_slice = slice; + v_brightness = brightness; +} +`;var cz=`uniform vec3 u_noiseTextureDimensions; +uniform float u_noiseDetail; +uniform vec3 u_noiseOffset; +in vec2 v_position; + +float wrap(float value, float rangeLength) { + if(value < 0.0) { + float absValue = abs(value); + float modValue = mod(absValue, rangeLength); + return mod(rangeLength - modValue, rangeLength); + } + return mod(value, rangeLength); +} + +vec3 wrapVec(vec3 value, float rangeLength) { + return vec3(wrap(value.x, rangeLength), + wrap(value.y, rangeLength), + wrap(value.z, rangeLength)); +} + +vec3 random3(vec3 p) { + float dot1 = dot(p, vec3(127.1, 311.7, 932.8)); + float dot2 = dot(p, vec3(269.5, 183.3, 421.4)); + return fract(vec3(sin(dot1 - dot2), cos(dot1 * dot2), dot1 * dot2)); +} + +// Frequency corresponds to cell size. +// The higher the frequency, the smaller the cell size. +vec3 getWorleyCellPoint(vec3 centerCell, vec3 offset, float freq) { + float textureSliceWidth = u_noiseTextureDimensions.x; + vec3 cell = centerCell + offset; + cell = wrapVec(cell, textureSliceWidth / u_noiseDetail); + cell += floor(u_noiseOffset / u_noiseDetail); + vec3 p = offset + random3(cell); + return p; +} + +float worleyNoise(vec3 p, float freq) { + vec3 centerCell = floor(p * freq); + vec3 pointInCell = fract(p * freq); + float shortestDistance = 1000.0; + + for(float z = -1.0; z <= 1.0; z++) { + for(float y = -1.0; y <= 1.0; y++) { + for(float x = -1.0; x <= 1.0; x++) { + vec3 offset = vec3(x, y, z); + vec3 point = getWorleyCellPoint(centerCell, offset, freq); + + float distance = length(pointInCell - point); + if(distance < shortestDistance) { + shortestDistance = distance; + } + } + } + } + + return shortestDistance; +} + +const float MAX_FBM_ITERATIONS = 10.0; + +float worleyFBMNoise(vec3 p, float octaves, float scale) { + float noise = 0.0; + float freq = 1.0; + float persistence = 0.625; + for(float i = 0.0; i < MAX_FBM_ITERATIONS; i++) { + if(i >= octaves) { + break; + } + + noise += worleyNoise(p * scale, freq * scale) * persistence; + persistence *= 0.5; + freq *= 2.0; + } + return noise; +} + +void main() { + float textureSliceWidth = u_noiseTextureDimensions.x; + float inverseNoiseTextureRows = u_noiseTextureDimensions.z; + float x = mod(v_position.x, textureSliceWidth); + float y = mod(v_position.y, textureSliceWidth); + float sliceRow = floor(v_position.y / textureSliceWidth); + float z = floor(v_position.x / textureSliceWidth) + sliceRow * inverseNoiseTextureRows * textureSliceWidth; + + vec3 position = vec3(x, y, z); + position /= u_noiseDetail; + float worley0 = clamp(worleyFBMNoise(position, 3.0, 1.0), 0.0, 1.0); + float worley1 = clamp(worleyFBMNoise(position, 3.0, 2.0), 0.0, 1.0); + float worley2 = clamp(worleyFBMNoise(position, 3.0, 3.0), 0.0, 1.0); + out_FragColor = vec4(worley0, worley1, worley2, 1.0); +} +`;var lz=`uniform vec3 u_noiseTextureDimensions; +in vec2 position; + +out vec2 v_position; + +void main() +{ + gl_Position = vec4(position, 0.1, 1.0); + + float textureSliceWidth = u_noiseTextureDimensions.x; + float noiseTextureRows = u_noiseTextureDimensions.y; + float inverseNoiseTextureRows = u_noiseTextureDimensions.z; + vec2 transformedPos = (position * 0.5) + vec2(0.5); + transformedPos *= textureSliceWidth; + transformedPos.x *= textureSliceWidth * inverseNoiseTextureRows; + transformedPos.y *= noiseTextureRows; + v_position = transformedPos; +} +`;var uz=`uniform sampler2D u_opaqueDepthTexture; +uniform sampler2D u_translucentDepthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + float opaqueDepth = texture(u_opaqueDepthTexture, v_textureCoordinates).r; + float translucentDepth = texture(u_translucentDepthTexture, v_textureCoordinates).r; + translucentDepth = czm_branchFreeTernary(translucentDepth > opaqueDepth, 1.0, translucentDepth); + out_FragColor = czm_packDepth(translucentDepth); +} +`;var fz=`/** + * Compositing for Weighted Blended Order-Independent Transparency. See: + * - http://jcgt.org/published/0002/02/09/ + * - http://casual-effects.blogspot.com/2014/03/weighted-blended-order-independent.html + */ + +uniform sampler2D u_opaque; +uniform sampler2D u_accumulation; +uniform sampler2D u_revealage; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 opaque = texture(u_opaque, v_textureCoordinates); + vec4 accum = texture(u_accumulation, v_textureCoordinates); + float r = texture(u_revealage, v_textureCoordinates).r; + +#ifdef MRT + vec4 transparent = vec4(accum.rgb / clamp(r, 1e-4, 5e4), accum.a); +#else + vec4 transparent = vec4(accum.rgb / clamp(accum.a, 1e-4, 5e4), r); +#endif + + out_FragColor = (1.0 - transparent.a) * transparent + transparent.a * opaque; + + if (opaque != czm_backgroundColor) + { + out_FragColor.a = 1.0; + } +} +`;var dz=`in vec4 positionEC; + +void main() +{ + vec3 position; + vec3 direction; + if (czm_orthographicIn3D == 1.0) + { + vec2 uv = (gl_FragCoord.xy - czm_viewport.xy) / czm_viewport.zw; + vec2 minPlane = vec2(czm_frustumPlanes.z, czm_frustumPlanes.y); // left, bottom + vec2 maxPlane = vec2(czm_frustumPlanes.w, czm_frustumPlanes.x); // right, top + position = vec3(mix(minPlane, maxPlane, uv), 0.0); + direction = vec3(0.0, 0.0, -1.0); + } + else + { + position = vec3(0.0); + direction = normalize(positionEC.xyz); + } + + czm_ray ray = czm_ray(position, direction); + + vec3 ellipsoid_center = czm_view[3].xyz; + + czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid_center, czm_ellipsoidInverseRadii); + if (!czm_isEmpty(intersection)) + { + out_FragColor = vec4(1.0, 1.0, 0.0, 1.0); + } + else + { + discard; + } + + czm_writeLogDepth(); +} +`;var hz=`in vec4 position; + +out vec4 positionEC; + +void main() +{ + positionEC = czm_modelView * position; + gl_Position = czm_projection * positionEC; + + czm_vertexLogDepth(); +} +`;var Zv=`uniform vec3 u_radii; +uniform vec3 u_oneOverEllipsoidRadiiSquared; + +in vec3 v_positionEC; + +vec4 computeEllipsoidColor(czm_ray ray, float intersection, float side) +{ + vec3 positionEC = czm_pointAlongRay(ray, intersection); + vec3 positionMC = (czm_inverseModelView * vec4(positionEC, 1.0)).xyz; + vec3 geodeticNormal = normalize(czm_geodeticSurfaceNormal(positionMC, vec3(0.0), u_oneOverEllipsoidRadiiSquared)); + vec3 sphericalNormal = normalize(positionMC / u_radii); + vec3 normalMC = geodeticNormal * side; // normalized surface normal (always facing the viewer) in model coordinates + vec3 normalEC = normalize(czm_normal * normalMC); // normalized surface normal in eye coordinates + + vec2 st = czm_ellipsoidTextureCoordinates(sphericalNormal); + vec3 positionToEyeEC = -positionEC; + + czm_materialInput materialInput; + materialInput.s = st.s; + materialInput.st = st; + materialInput.str = (positionMC + u_radii) / u_radii; + materialInput.normalEC = normalEC; + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(positionMC, normalEC); + materialInput.positionToEyeEC = positionToEyeEC; + czm_material material = czm_getMaterial(materialInput); + +#ifdef ONLY_SUN_LIGHTING + return czm_private_phong(normalize(positionToEyeEC), material, czm_sunDirectionEC); +#else + return czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} + +void main() +{ + // PERFORMANCE_TODO: When dynamic branching is available, compute ratio of maximum and minimum radii + // in the vertex shader. Only when it is larger than some constant, march along the ray. + // Otherwise perform one intersection test which will be the common case. + + // Test if the ray intersects a sphere with the ellipsoid's maximum radius. + // For very oblate ellipsoids, using the ellipsoid's radii for an intersection test + // may cause false negatives. This will discard fragments before marching the ray forward. + float maxRadius = max(u_radii.x, max(u_radii.y, u_radii.z)) * 1.5; + vec3 direction = normalize(v_positionEC); + vec3 ellipsoidCenter = czm_modelView[3].xyz; + + float t1 = -1.0; + float t2 = -1.0; + + float b = -2.0 * dot(direction, ellipsoidCenter); + float c = dot(ellipsoidCenter, ellipsoidCenter) - maxRadius * maxRadius; + + float discriminant = b * b - 4.0 * c; + if (discriminant >= 0.0) { + t1 = (-b - sqrt(discriminant)) * 0.5; + t2 = (-b + sqrt(discriminant)) * 0.5; + } + + if (t1 < 0.0 && t2 < 0.0) { + discard; + } + + float t = min(t1, t2); + if (t < 0.0) { + t = 0.0; + } + + // March ray forward to intersection with larger sphere and find + czm_ray ray = czm_ray(t * direction, direction); + + vec3 ellipsoid_inverseRadii = vec3(1.0 / u_radii.x, 1.0 / u_radii.y, 1.0 / u_radii.z); + + czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoidCenter, ellipsoid_inverseRadii); + + if (czm_isEmpty(intersection)) + { + discard; + } + + // If the viewer is outside, compute outsideFaceColor, with normals facing outward. + vec4 outsideFaceColor = (intersection.start != 0.0) ? computeEllipsoidColor(ray, intersection.start, 1.0) : vec4(0.0); + + // If the viewer either is inside or can see inside, compute insideFaceColor, with normals facing inward. + vec4 insideFaceColor = (outsideFaceColor.a < 1.0) ? computeEllipsoidColor(ray, intersection.stop, -1.0) : vec4(0.0); + + out_FragColor = mix(insideFaceColor, outsideFaceColor, outsideFaceColor.a); + out_FragColor.a = 1.0 - (1.0 - insideFaceColor.a) * (1.0 - outsideFaceColor.a); + +#if (defined(WRITE_DEPTH) && (__VERSION__ == 300 || defined(GL_EXT_frag_depth))) + t = (intersection.start != 0.0) ? intersection.start : intersection.stop; + vec3 positionEC = czm_pointAlongRay(ray, t); + vec4 positionCC = czm_projection * vec4(positionEC, 1.0); +#ifdef LOG_DEPTH + czm_writeLogDepth(1.0 + positionCC.w); +#else + float z = positionCC.z / positionCC.w; + + float n = czm_depthRange.near; + float f = czm_depthRange.far; + + gl_FragDepth = (z * (f - n) + f + n) * 0.5; +#endif +#endif +} +`;var $v=`in vec3 position; + +uniform vec3 u_radii; + +out vec3 v_positionEC; + +void main() +{ + // In the vertex data, the cube goes from (-1.0, -1.0, -1.0) to (1.0, 1.0, 1.0) in model coordinates. + // Scale to consider the radii. We could also do this once on the CPU when using the BoxGeometry, + // but doing it here allows us to change the radii without rewriting the vertex data, and + // allows all ellipsoids to reuse the same vertex data. + vec4 p = vec4(u_radii * position, 1.0); + + vec4 pEC = czm_modelView * p; + v_positionEC = pEC.xyz; // position in eye coordinates + gl_Position = czm_projection * pEC; + // With multi-frustum, when the ellipsoid primitive is positioned on the intersection of two frustums + // and close to terrain, the terrain (writes depth) in the closest frustum can overwrite part of the + // ellipsoid (does not write depth) that was rendered in the farther frustum. + // + // Here, we clamp the depth in the vertex shader to avoid being overwritten; however, this creates + // artifacts since some fragments can be alpha blended twice. This is solved by only rendering + // the ellipsoid in the closest frustum to the viewer. + gl_Position.z = clamp(gl_Position.z, czm_depthRange.near, czm_depthRange.far); + + czm_vertexLogDepth(); +} +`;/** + * @license + * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of NVIDIA CORPORATION nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */var mz=`/** + * @license + * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of NVIDIA CORPORATION nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS \`\`AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +// NVIDIA GameWorks Graphics Samples GitHub link: https://github.com/NVIDIAGameWorks/GraphicsSamples +// Original source (archived): https://archive.org/details/nvidiagame-works-graphics-samples-master +// Original FXAA 3.11 shader link: https://github.com/NVIDIAGameWorks/GraphicsSamples/blob/master/samples/es3-kepler/FXAA/FXAA3_11.h +// Shader link in fork: https://github.com/lyntel/GraphicsSamples/blob/3d30817ebeeade64fe6a4fc3aa1fe4265c29b6fd/samples/es3-kepler/FXAA/FXAA3_11.h + +// Steps used to integrate into Cesium: +// * The following defines are set: +// #define FXAA_PC 1 +// #define FXAA_WEBGL_1 1 +// #define FXAA_GREEN_AS_LUMA 1 +// #define FXAA_EARLY_EXIT 1 +// #define FXAA_GLSL_120 1 +// * All other preprocessor directives besides the FXAA_QUALITY__P* directives were removed. +// * Double underscores are invalid for preprocessor directives so replace them with a single underscore. Replace +// /FXAA_QUALITY__P(.*)/g with /FXAA_QUALITY__P$1/. +// * There are no implicit conversions from ivec* to vec* so replace: +// #define FxaaInt2 ivec2 +// with +// #define FxaaInt2 vec2 +// * The texture2DLod function is only available in vertex shaders so replace: +// #define FxaaTexTop(t, p) texture2DLod(t, p, 0.0) +// #define FxaaTexOff(t, p, o, r) texture2DLod(t, p + (o * r), 0.0) +// with +// #define FxaaTexTop(t, p) texture(t, p) +// #define FxaaTexOff(t, p, o, r) texture(t, p + (o * r)) +// * FXAA_QUALITY_PRESET is prepended in the javascript code. We may want to expose that setting in the future. +// * The following parameters to FxaaPixelShader are unused and can be removed: +// fxaaConsolePosPos +// fxaaConsoleRcpFrameOpt +// fxaaConsoleRcpFrameOpt2 +// fxaaConsole360RcpFrameOpt2 +// fxaaConsoleEdgeSharpness +// fxaaConsoleEdgeThreshold +// fxaaConsoleEdgeThresholdMi +// fxaaConsole360ConstDir + +// +// Choose the quality preset. +// This needs to be compiled into the shader as it effects code. +// Best option to include multiple presets is to +// in each shader define the preset, then include this file. +// +// OPTIONS +// ----------------------------------------------------------------------- +// 10 to 15 - default medium dither (10=fastest, 15=highest quality) +// 20 to 29 - less dither, more expensive (20=fastest, 29=highest quality) +// 39 - no dither, very expensive +// +// NOTES +// ----------------------------------------------------------------------- +// 12 = slightly faster then FXAA 3.9 and higher edge quality (default) +// 13 = about same speed as FXAA 3.9 and better than 12 +// 23 = closest to FXAA 3.9 visually and performance wise +// _ = the lowest digit is directly related to performance +// _ = the highest digit is directly related to style +// +//#define FXAA_QUALITY_PRESET 12 + + +#if (FXAA_QUALITY_PRESET == 10) + #define FXAA_QUALITY_PS 3 + #define FXAA_QUALITY_P0 1.5 + #define FXAA_QUALITY_P1 3.0 + #define FXAA_QUALITY_P2 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 11) + #define FXAA_QUALITY_PS 4 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 3.0 + #define FXAA_QUALITY_P3 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 12) + #define FXAA_QUALITY_PS 5 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 4.0 + #define FXAA_QUALITY_P4 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 13) + #define FXAA_QUALITY_PS 6 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 4.0 + #define FXAA_QUALITY_P5 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 14) + #define FXAA_QUALITY_PS 7 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 4.0 + #define FXAA_QUALITY_P6 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 15) + #define FXAA_QUALITY_PS 8 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 4.0 + #define FXAA_QUALITY_P7 12.0 +#endif +#if (FXAA_QUALITY_PRESET == 20) + #define FXAA_QUALITY_PS 3 + #define FXAA_QUALITY_P0 1.5 + #define FXAA_QUALITY_P1 2.0 + #define FXAA_QUALITY_P2 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 21) + #define FXAA_QUALITY_PS 4 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 22) + #define FXAA_QUALITY_PS 5 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 23) + #define FXAA_QUALITY_PS 6 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 24) + #define FXAA_QUALITY_PS 7 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 3.0 + #define FXAA_QUALITY_P6 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 25) + #define FXAA_QUALITY_PS 8 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 4.0 + #define FXAA_QUALITY_P7 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 26) + #define FXAA_QUALITY_PS 9 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 4.0 + #define FXAA_QUALITY_P8 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 27) + #define FXAA_QUALITY_PS 10 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 4.0 + #define FXAA_QUALITY_P9 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 28) + #define FXAA_QUALITY_PS 11 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 2.0 + #define FXAA_QUALITY_P9 4.0 + #define FXAA_QUALITY_P10 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 29) + #define FXAA_QUALITY_PS 12 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.5 + #define FXAA_QUALITY_P2 2.0 + #define FXAA_QUALITY_P3 2.0 + #define FXAA_QUALITY_P4 2.0 + #define FXAA_QUALITY_P5 2.0 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 2.0 + #define FXAA_QUALITY_P9 2.0 + #define FXAA_QUALITY_P10 4.0 + #define FXAA_QUALITY_P11 8.0 +#endif +#if (FXAA_QUALITY_PRESET == 39) + #define FXAA_QUALITY_PS 12 + #define FXAA_QUALITY_P0 1.0 + #define FXAA_QUALITY_P1 1.0 + #define FXAA_QUALITY_P2 1.0 + #define FXAA_QUALITY_P3 1.0 + #define FXAA_QUALITY_P4 1.0 + #define FXAA_QUALITY_P5 1.5 + #define FXAA_QUALITY_P6 2.0 + #define FXAA_QUALITY_P7 2.0 + #define FXAA_QUALITY_P8 2.0 + #define FXAA_QUALITY_P9 2.0 + #define FXAA_QUALITY_P10 4.0 + #define FXAA_QUALITY_P11 8.0 +#endif + +#define FxaaBool bool +#define FxaaFloat float +#define FxaaFloat2 vec2 +#define FxaaFloat3 vec3 +#define FxaaFloat4 vec4 +#define FxaaHalf float +#define FxaaHalf2 vec2 +#define FxaaHalf3 vec3 +#define FxaaHalf4 vec4 +#define FxaaInt2 vec2 +#define FxaaTex sampler2D + +#define FxaaSat(x) clamp(x, 0.0, 1.0) +#define FxaaTexTop(t, p) texture(t, p) +#define FxaaTexOff(t, p, o, r) texture(t, p + (o * r)) + +FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; } + +FxaaFloat4 FxaaPixelShader( + // + // Use noperspective interpolation here (turn off perspective interpolation). + // {xy} = center of pixel + FxaaFloat2 pos, + // + // Input color texture. + // {rgb_} = color in linear or perceptual color space + // if (FXAA_GREEN_AS_LUMA == 0) + // {___a} = luma in perceptual color space (not linear) + FxaaTex tex, + // + // Only used on FXAA Quality. + // This must be from a constant/uniform. + // {x_} = 1.0/screenWidthInPixels + // {_y} = 1.0/screenHeightInPixels + FxaaFloat2 fxaaQualityRcpFrame, + // + // Only used on FXAA Quality. + // This used to be the FXAA_QUALITY_SUBPIX define. + // It is here now to allow easier tuning. + // Choose the amount of sub-pixel aliasing removal. + // This can effect sharpness. + // 1.00 - upper limit (softer) + // 0.75 - default amount of filtering + // 0.50 - lower limit (sharper, less sub-pixel aliasing removal) + // 0.25 - almost off + // 0.00 - completely off + FxaaFloat fxaaQualitySubpix, + // + // Only used on FXAA Quality. + // This used to be the FXAA_QUALITY_EDGE_THRESHOLD define. + // It is here now to allow easier tuning. + // The minimum amount of local contrast required to apply algorithm. + // 0.333 - too little (faster) + // 0.250 - low quality + // 0.166 - default + // 0.125 - high quality + // 0.063 - overkill (slower) + FxaaFloat fxaaQualityEdgeThreshold, + // + // Only used on FXAA Quality. + // This used to be the FXAA_QUALITY_EDGE_THRESHOLD_MIN define. + // It is here now to allow easier tuning. + // Trims the algorithm from processing darks. + // 0.0833 - upper limit (default, the start of visible unfiltered edges) + // 0.0625 - high quality (faster) + // 0.0312 - visible limit (slower) + // Special notes when using FXAA_GREEN_AS_LUMA, + // Likely want to set this to zero. + // As colors that are mostly not-green + // will appear very dark in the green channel! + // Tune by looking at mostly non-green content, + // then start at zero and increase until aliasing is a problem. + FxaaFloat fxaaQualityEdgeThresholdMin +) { +/*--------------------------------------------------------------------------*/ + FxaaFloat2 posM; + posM.x = pos.x; + posM.y = pos.y; + FxaaFloat4 rgbyM = FxaaTexTop(tex, posM); + #define lumaM rgbyM.y + FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy)); +/*--------------------------------------------------------------------------*/ + FxaaFloat maxSM = max(lumaS, lumaM); + FxaaFloat minSM = min(lumaS, lumaM); + FxaaFloat maxESM = max(lumaE, maxSM); + FxaaFloat minESM = min(lumaE, minSM); + FxaaFloat maxWN = max(lumaN, lumaW); + FxaaFloat minWN = min(lumaN, lumaW); + FxaaFloat rangeMax = max(maxWN, maxESM); + FxaaFloat rangeMin = min(minWN, minESM); + FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold; + FxaaFloat range = rangeMax - rangeMin; + FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled); + FxaaBool earlyExit = range < rangeMaxClamped; +/*--------------------------------------------------------------------------*/ + if(earlyExit) + return rgbyM; +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy)); + FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy)); +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNS = lumaN + lumaS; + FxaaFloat lumaWE = lumaW + lumaE; + FxaaFloat subpixRcpRange = 1.0/range; + FxaaFloat subpixNSWE = lumaNS + lumaWE; + FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS; + FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE; +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNESE = lumaNE + lumaSE; + FxaaFloat lumaNWNE = lumaNW + lumaNE; + FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE; + FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE; +/*--------------------------------------------------------------------------*/ + FxaaFloat lumaNWSW = lumaNW + lumaSW; + FxaaFloat lumaSWSE = lumaSW + lumaSE; + FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2); + FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2); + FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW; + FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE; + FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4; + FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4; +/*--------------------------------------------------------------------------*/ + FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE; + FxaaFloat lengthSign = fxaaQualityRcpFrame.x; + FxaaBool horzSpan = edgeHorz >= edgeVert; + FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE; +/*--------------------------------------------------------------------------*/ + if(!horzSpan) lumaN = lumaW; + if(!horzSpan) lumaS = lumaE; + if(horzSpan) lengthSign = fxaaQualityRcpFrame.y; + FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM; +/*--------------------------------------------------------------------------*/ + FxaaFloat gradientN = lumaN - lumaM; + FxaaFloat gradientS = lumaS - lumaM; + FxaaFloat lumaNN = lumaN + lumaM; + FxaaFloat lumaSS = lumaS + lumaM; + FxaaBool pairN = abs(gradientN) >= abs(gradientS); + FxaaFloat gradient = max(abs(gradientN), abs(gradientS)); + if(pairN) lengthSign = -lengthSign; + FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange); +/*--------------------------------------------------------------------------*/ + FxaaFloat2 posB; + posB.x = posM.x; + posB.y = posM.y; + FxaaFloat2 offNP; + offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x; + offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y; + if(!horzSpan) posB.x += lengthSign * 0.5; + if( horzSpan) posB.y += lengthSign * 0.5; +/*--------------------------------------------------------------------------*/ + FxaaFloat2 posN; + posN.x = posB.x - offNP.x * FXAA_QUALITY_P0; + posN.y = posB.y - offNP.y * FXAA_QUALITY_P0; + FxaaFloat2 posP; + posP.x = posB.x + offNP.x * FXAA_QUALITY_P0; + posP.y = posB.y + offNP.y * FXAA_QUALITY_P0; + FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0; + FxaaFloat lumaEndN = FxaaLuma(FxaaTexTop(tex, posN)); + FxaaFloat subpixE = subpixC * subpixC; + FxaaFloat lumaEndP = FxaaLuma(FxaaTexTop(tex, posP)); +/*--------------------------------------------------------------------------*/ + if(!pairN) lumaNN = lumaSS; + FxaaFloat gradientScaled = gradient * 1.0/4.0; + FxaaFloat lumaMM = lumaM - lumaNN * 0.5; + FxaaFloat subpixF = subpixD * subpixE; + FxaaBool lumaMLTZero = lumaMM < 0.0; +/*--------------------------------------------------------------------------*/ + lumaEndN -= lumaNN * 0.5; + lumaEndP -= lumaNN * 0.5; + FxaaBool doneN = abs(lumaEndN) >= gradientScaled; + FxaaBool doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P1; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P1; + FxaaBool doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P1; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P1; +/*--------------------------------------------------------------------------*/ + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P2; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P2; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P2; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P2; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 3) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P3; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P3; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P3; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P3; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 4) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P4; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P4; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P4; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P4; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 5) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P5; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P5; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P5; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P5; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 6) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P6; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P6; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P6; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P6; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 7) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P7; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P7; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P7; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P7; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 8) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P8; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P8; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P8; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P8; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 9) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P9; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P9; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P9; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P9; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 10) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P10; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P10; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P10; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P10; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 11) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P11; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P11; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P11; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P11; +/*--------------------------------------------------------------------------*/ + #if (FXAA_QUALITY_PS > 12) + if(doneNP) { + if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy)); + if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy)); + if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5; + if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5; + doneN = abs(lumaEndN) >= gradientScaled; + doneP = abs(lumaEndP) >= gradientScaled; + if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P12; + if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P12; + doneNP = (!doneN) || (!doneP); + if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P12; + if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P12; +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } + #endif +/*--------------------------------------------------------------------------*/ + } +/*--------------------------------------------------------------------------*/ + FxaaFloat dstN = posM.x - posN.x; + FxaaFloat dstP = posP.x - posM.x; + if(!horzSpan) dstN = posM.y - posN.y; + if(!horzSpan) dstP = posP.y - posM.y; +/*--------------------------------------------------------------------------*/ + FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero; + FxaaFloat spanLength = (dstP + dstN); + FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero; + FxaaFloat spanLengthRcp = 1.0/spanLength; +/*--------------------------------------------------------------------------*/ + FxaaBool directionN = dstN < dstP; + FxaaFloat dst = min(dstN, dstP); + FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP; + FxaaFloat subpixG = subpixF * subpixF; + FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5; + FxaaFloat subpixH = subpixG * fxaaQualitySubpix; +/*--------------------------------------------------------------------------*/ + FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0; + FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH); + if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign; + if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign; + return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM); +} +`;var Az=`uniform vec4 u_initialColor; + +#if TEXTURE_UNITS > 0 +uniform sampler2D u_dayTextures[TEXTURE_UNITS]; +uniform vec4 u_dayTextureTranslationAndScale[TEXTURE_UNITS]; +uniform bool u_dayTextureUseWebMercatorT[TEXTURE_UNITS]; + +#ifdef APPLY_ALPHA +uniform float u_dayTextureAlpha[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_DAY_NIGHT_ALPHA +uniform float u_dayTextureNightAlpha[TEXTURE_UNITS]; +uniform float u_dayTextureDayAlpha[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_SPLIT +uniform float u_dayTextureSplit[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_BRIGHTNESS +uniform float u_dayTextureBrightness[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_CONTRAST +uniform float u_dayTextureContrast[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_HUE +uniform float u_dayTextureHue[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_SATURATION +uniform float u_dayTextureSaturation[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_GAMMA +uniform float u_dayTextureOneOverGamma[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_IMAGERY_CUTOUT +uniform vec4 u_dayTextureCutoutRectangles[TEXTURE_UNITS]; +#endif + +#ifdef APPLY_COLOR_TO_ALPHA +uniform vec4 u_colorsToAlpha[TEXTURE_UNITS]; +#endif + +uniform vec4 u_dayTextureTexCoordsRectangle[TEXTURE_UNITS]; +#endif + +#if defined(HAS_WATER_MASK) && (defined(SHOW_REFLECTIVE_OCEAN) || defined(APPLY_MATERIAL)) +uniform sampler2D u_waterMask; +uniform vec4 u_waterMaskTranslationAndScale; +uniform float u_zoomedOutOceanSpecularIntensity; +#endif + +#ifdef SHOW_OCEAN_WAVES +uniform sampler2D u_oceanNormalMap; +#endif + +#if defined(ENABLE_DAYNIGHT_SHADING) || defined(GROUND_ATMOSPHERE) +uniform vec2 u_lightingFadeDistance; +#endif + +#ifdef TILE_LIMIT_RECTANGLE +uniform vec4 u_cartographicLimitRectangle; +#endif + +#ifdef GROUND_ATMOSPHERE +uniform vec2 u_nightFadeDistance; +#endif + +#ifdef ENABLE_CLIPPING_PLANES +uniform highp sampler2D u_clippingPlanes; +uniform mat4 u_clippingPlanesMatrix; +uniform vec4 u_clippingPlanesEdgeStyle; +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS +uniform highp sampler2D u_clippingDistance; +in vec2 v_clippingPosition; +flat in int v_regionIndex; +#endif + +#if defined(GROUND_ATMOSPHERE) || defined(FOG) && defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING)) +uniform float u_minimumBrightness; +#endif + +// Based on colorCorrect +// The colorCorrect flag can only be true when tileProvider.hue/saturation/brightnessShift +// are nonzero AND when (applyFog || showGroundAtmosphere) in the tile provider +// - The tileProvider.hue/saturation/brightnessShift are just passed through +// from the Globe hue/saturation/brightness, like atmosphereBrightnessShift +// - The applyFog depends on enableFog, and some tile distance from the viewer +// - The showGroundAtmosphere is a flag that is passed through from the Globe, +// and is true by default when the ellipsoid is WGS84 +#ifdef COLOR_CORRECT +uniform vec3 u_hsbShift; // Hue, saturation, brightness +#endif + +// Based on highlightFillTile +// This is set for terrain tiles when they are "fill" tiles, and +// the terrainProvider.fillHighlightColor was set to a value with +// nonzero alpha +#ifdef HIGHLIGHT_FILL_TILE +uniform vec4 u_fillHighlightColor; +#endif + +// Based on translucent +// This is set depending on the GlobeTranslucencyState +#ifdef TRANSLUCENT +uniform vec4 u_frontFaceAlphaByDistance; +uniform vec4 u_backFaceAlphaByDistance; +uniform vec4 u_translucencyRectangle; +#endif + +// Based on showUndergroundColor +// This is set when GlobeSurfaceTileProvider.isUndergroundVisible +// returns true, AND the tileProvider.undergroundColor had a value with +// nonzero alpha, and the tileProvider.undergroundColorAlphaByDistance +// was in the right range +#ifdef UNDERGROUND_COLOR +uniform vec4 u_undergroundColor; +uniform vec4 u_undergroundColorAlphaByDistance; +#endif + +// Based on enableLighting && hasVertexNormals +// The enableLighting flag is passed in directly from the Globe. +// The hasVertexNormals flag is from the tileProvider +#ifdef ENABLE_VERTEX_LIGHTING +uniform float u_lambertDiffuseMultiplier; +uniform float u_vertexShadowDarkness; +#endif + +in vec3 v_positionMC; +in vec3 v_positionEC; +in vec3 v_textureCoordinates; +in vec3 v_normalMC; +in vec3 v_normalEC; + +#ifdef APPLY_MATERIAL +in float v_height; +in float v_slope; +in float v_aspect; +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) +in float v_distance; +#endif + +#if defined(GROUND_ATMOSPHERE) || defined(FOG) +in vec3 v_atmosphereRayleighColor; +in vec3 v_atmosphereMieColor; +in float v_atmosphereOpacity; +#endif + +#if defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) +float interpolateByDistance(vec4 nearFarScalar, float distance) +{ + float startDistance = nearFarScalar.x; + float startValue = nearFarScalar.y; + float endDistance = nearFarScalar.z; + float endValue = nearFarScalar.w; + float t = clamp((distance - startDistance) / (endDistance - startDistance), 0.0, 1.0); + return mix(startValue, endValue, t); +} +#endif + +#if defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) || defined(APPLY_MATERIAL) +vec4 alphaBlend(vec4 sourceColor, vec4 destinationColor) +{ + return sourceColor * vec4(sourceColor.aaa, 1.0) + destinationColor * (1.0 - sourceColor.a); +} +#endif + +#ifdef TRANSLUCENT +bool inTranslucencyRectangle() +{ + return + v_textureCoordinates.x > u_translucencyRectangle.x && + v_textureCoordinates.x < u_translucencyRectangle.z && + v_textureCoordinates.y > u_translucencyRectangle.y && + v_textureCoordinates.y < u_translucencyRectangle.w; +} +#endif + +vec4 sampleAndBlend( + vec4 previousColor, + sampler2D textureToSample, + vec2 tileTextureCoordinates, + vec4 textureCoordinateRectangle, + vec4 textureCoordinateTranslationAndScale, + float textureAlpha, + float textureNightAlpha, + float textureDayAlpha, + float textureBrightness, + float textureContrast, + float textureHue, + float textureSaturation, + float textureOneOverGamma, + float split, + vec4 colorToAlpha, + float nightBlend) +{ + // This crazy step stuff sets the alpha to 0.0 if this following condition is true: + // tileTextureCoordinates.s < textureCoordinateRectangle.s || + // tileTextureCoordinates.s > textureCoordinateRectangle.p || + // tileTextureCoordinates.t < textureCoordinateRectangle.t || + // tileTextureCoordinates.t > textureCoordinateRectangle.q + // In other words, the alpha is zero if the fragment is outside the rectangle + // covered by this texture. Would an actual 'if' yield better performance? + vec2 alphaMultiplier = step(textureCoordinateRectangle.st, tileTextureCoordinates); + textureAlpha = textureAlpha * alphaMultiplier.x * alphaMultiplier.y; + + alphaMultiplier = step(vec2(0.0), textureCoordinateRectangle.pq - tileTextureCoordinates); + textureAlpha = textureAlpha * alphaMultiplier.x * alphaMultiplier.y; + +#if defined(APPLY_DAY_NIGHT_ALPHA) && defined(ENABLE_DAYNIGHT_SHADING) + textureAlpha *= mix(textureDayAlpha, textureNightAlpha, nightBlend); +#endif + + vec2 translation = textureCoordinateTranslationAndScale.xy; + vec2 scale = textureCoordinateTranslationAndScale.zw; + vec2 textureCoordinates = tileTextureCoordinates * scale + translation; + vec4 value = texture(textureToSample, textureCoordinates); + vec3 color = value.rgb; + float alpha = value.a; + +#ifdef APPLY_COLOR_TO_ALPHA + vec3 colorDiff = abs(color.rgb - colorToAlpha.rgb); + colorDiff.r = czm_maximumComponent(colorDiff); + alpha = czm_branchFreeTernary(colorDiff.r < colorToAlpha.a, 0.0, alpha); +#endif + +#if !defined(APPLY_GAMMA) + vec4 tempColor = czm_gammaCorrect(vec4(color, alpha)); + color = tempColor.rgb; + alpha = tempColor.a; +#else + color = pow(color, vec3(textureOneOverGamma)); +#endif + +#ifdef APPLY_SPLIT + float splitPosition = czm_splitPosition; + // Split to the left + if (split < 0.0 && gl_FragCoord.x > splitPosition) { + alpha = 0.0; + } + // Split to the right + else if (split > 0.0 && gl_FragCoord.x < splitPosition) { + alpha = 0.0; + } +#endif + +#ifdef APPLY_BRIGHTNESS + color = mix(vec3(0.0), color, textureBrightness); +#endif + +#ifdef APPLY_CONTRAST + color = mix(vec3(0.5), color, textureContrast); +#endif + +#ifdef APPLY_HUE + color = czm_hue(color, textureHue); +#endif + +#ifdef APPLY_SATURATION + color = czm_saturation(color, textureSaturation); +#endif + + float sourceAlpha = alpha * textureAlpha; + float outAlpha = mix(previousColor.a, 1.0, sourceAlpha); + outAlpha += sign(outAlpha) - 1.0; + + vec3 outColor = mix(previousColor.rgb * previousColor.a, color, sourceAlpha) / outAlpha; + + // When rendering imagery for a tile in multiple passes, + // some GPU/WebGL implementation combinations will not blend fragments in + // additional passes correctly if their computation includes an unmasked + // divide-by-zero operation, + // even if it's not in the output or if the output has alpha zero. + // + // For example, without sanitization for outAlpha, + // this renders without artifacts: + // if (outAlpha == 0.0) { outColor = vec3(0.0); } + // + // but using czm_branchFreeTernary will cause portions of the tile that are + // alpha-zero in the additional pass to render as black instead of blending + // with the previous pass: + // outColor = czm_branchFreeTernary(outAlpha == 0.0, vec3(0.0), outColor); + // + // So instead, sanitize against divide-by-zero, + // store this state on the sign of outAlpha, and correct on return. + + return vec4(outColor, max(outAlpha, 0.0)); +} + +vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend); +vec4 computeWaterColor(vec3 positionEyeCoordinates, vec2 textureCoordinates, mat3 enuToEye, vec4 imageryColor, float specularMapValue, float fade); + +const float fExposure = 2.0; + +vec3 computeEllipsoidPosition() +{ + float mpp = czm_metersPerPixel(vec4(0.0, 0.0, -czm_currentFrustum.x, 1.0), 1.0); + vec2 xy = gl_FragCoord.xy / czm_viewport.zw * 2.0 - vec2(1.0); + xy *= czm_viewport.zw * mpp * 0.5; + + vec3 direction; + if (czm_orthographicIn3D == 1.0) + { + direction = vec3(0.0, 0.0, -1.0); + } + else + { + direction = normalize(vec3(xy, -czm_currentFrustum.x)); + } + + czm_ray ray = czm_ray(vec3(0.0), direction); + + vec3 ellipsoid_center = czm_view[3].xyz; + + czm_raySegment intersection = czm_rayEllipsoidIntersectionInterval(ray, ellipsoid_center, czm_ellipsoidInverseRadii); + + vec3 ellipsoidPosition = czm_pointAlongRay(ray, intersection.start); + return (czm_inverseView * vec4(ellipsoidPosition, 1.0)).xyz; +} + +void main() +{ +#ifdef TILE_LIMIT_RECTANGLE + if (v_textureCoordinates.x < u_cartographicLimitRectangle.x || u_cartographicLimitRectangle.z < v_textureCoordinates.x || + v_textureCoordinates.y < u_cartographicLimitRectangle.y || u_cartographicLimitRectangle.w < v_textureCoordinates.y) + { + discard; + } +#endif + +#ifdef ENABLE_CLIPPING_PLANES + float clipDistance = clip(gl_FragCoord, u_clippingPlanes, u_clippingPlanesMatrix); +#endif + +#if defined(SHOW_REFLECTIVE_OCEAN) || defined(ENABLE_DAYNIGHT_SHADING) || defined(HDR) + vec3 normalMC = czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0)); // normalized surface normal in model coordinates + vec3 normalEC = czm_normal3D * normalMC; // normalized surface normal in eye coordinates +#endif + +#if defined(APPLY_DAY_NIGHT_ALPHA) && defined(ENABLE_DAYNIGHT_SHADING) + float nightBlend = 1.0 - clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * 5.0, 0.0, 1.0); +#else + float nightBlend = 0.0; +#endif + + // The clamp below works around an apparent bug in Chrome Canary v23.0.1241.0 + // where the fragment shader sees textures coordinates < 0.0 and > 1.0 for the + // fragments on the edges of tiles even though the vertex shader is outputting + // coordinates strictly in the 0-1 range. + vec4 color = computeDayColor(u_initialColor, clamp(v_textureCoordinates, 0.0, 1.0), nightBlend); + +#ifdef SHOW_TILE_BOUNDARIES + if (v_textureCoordinates.x < (1.0/256.0) || v_textureCoordinates.x > (255.0/256.0) || + v_textureCoordinates.y < (1.0/256.0) || v_textureCoordinates.y > (255.0/256.0)) + { + color = vec4(1.0, 0.0, 0.0, 1.0); + } +#endif + +#if defined(ENABLE_DAYNIGHT_SHADING) || defined(GROUND_ATMOSPHERE) + float cameraDist; + if (czm_sceneMode == czm_sceneMode2D) + { + cameraDist = max(czm_frustumPlanes.x - czm_frustumPlanes.y, czm_frustumPlanes.w - czm_frustumPlanes.z) * 0.5; + } + else if (czm_sceneMode == czm_sceneModeColumbusView) + { + cameraDist = -czm_view[3].z; + } + else + { + cameraDist = length(czm_view[3]); + } + float fadeOutDist = u_lightingFadeDistance.x; + float fadeInDist = u_lightingFadeDistance.y; + if (czm_sceneMode != czm_sceneMode3D) { + vec3 radii = czm_ellipsoidRadii; + float maxRadii = max(radii.x, max(radii.y, radii.z)); + fadeOutDist -= maxRadii; + fadeInDist -= maxRadii; + } + float fade = clamp((cameraDist - fadeOutDist) / (fadeInDist - fadeOutDist), 0.0, 1.0); +#else + float fade = 0.0; +#endif + +#if defined(HAS_WATER_MASK) && (defined(SHOW_REFLECTIVE_OCEAN) || defined(APPLY_MATERIAL)) + vec2 waterMaskTranslation = u_waterMaskTranslationAndScale.xy; + vec2 waterMaskScale = u_waterMaskTranslationAndScale.zw; + vec2 waterMaskTextureCoordinates = v_textureCoordinates.xy * waterMaskScale + waterMaskTranslation; + waterMaskTextureCoordinates.y = 1.0 - waterMaskTextureCoordinates.y; + + float mask = texture(u_waterMask, waterMaskTextureCoordinates).r; + + #ifdef SHOW_REFLECTIVE_OCEAN + if (mask > 0.0) + { + mat3 enuToEye = czm_eastNorthUpToEyeCoordinates(v_positionMC, normalEC); + + vec2 ellipsoidTextureCoordinates = czm_ellipsoidTextureCoordinates(normalMC); + vec2 ellipsoidFlippedTextureCoordinates = czm_ellipsoidTextureCoordinates(normalMC.zyx); + + vec2 textureCoordinates = mix(ellipsoidTextureCoordinates, ellipsoidFlippedTextureCoordinates, czm_morphTime * smoothstep(0.9, 0.95, normalMC.z)); + + color = computeWaterColor(v_positionEC, textureCoordinates, enuToEye, color, mask, fade); + } + #endif +#endif + +#ifdef APPLY_MATERIAL + czm_materialInput materialInput; + materialInput.st = v_textureCoordinates.st; + materialInput.normalEC = normalize(v_normalEC); + materialInput.positionToEyeEC = -v_positionEC; + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, normalize(v_normalEC)); + materialInput.slope = v_slope; + materialInput.height = v_height; + materialInput.aspect = v_aspect; + #ifdef HAS_WATER_MASK + materialInput.waterMask = mask; + #endif + + czm_material material = czm_getMaterial(materialInput); + vec4 materialColor = vec4(material.diffuse, material.alpha); + color = alphaBlend(materialColor, color); +#endif + +#ifdef ENABLE_VERTEX_LIGHTING + float diffuseIntensity = clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalize(v_normalEC)) * u_lambertDiffuseMultiplier + u_vertexShadowDarkness, 0.0, 1.0); + vec4 finalColor = vec4(color.rgb * czm_lightColor * diffuseIntensity, color.a); +#elif defined(ENABLE_DAYNIGHT_SHADING) + float diffuseIntensity = clamp(czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * 5.0 + 0.3, 0.0, 1.0); + diffuseIntensity = mix(1.0, diffuseIntensity, fade); + vec4 finalColor = vec4(color.rgb * czm_lightColor * diffuseIntensity, color.a); +#else + vec4 finalColor = color; +#endif + +#ifdef ENABLE_CLIPPING_PLANES + vec4 clippingPlanesEdgeColor = vec4(1.0); + clippingPlanesEdgeColor.rgb = u_clippingPlanesEdgeStyle.rgb; + float clippingPlanesEdgeWidth = u_clippingPlanesEdgeStyle.a; + + if (clipDistance < clippingPlanesEdgeWidth) + { + finalColor = clippingPlanesEdgeColor; + } +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS + vec2 clippingPosition = v_clippingPosition; + int regionIndex = v_regionIndex; + clipPolygons(u_clippingDistance, CLIPPING_POLYGON_REGIONS_LENGTH, clippingPosition, regionIndex); +#endif + +#ifdef HIGHLIGHT_FILL_TILE + finalColor = vec4(mix(finalColor.rgb, u_fillHighlightColor.rgb, u_fillHighlightColor.a), finalColor.a); +#endif + +#if defined(DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN) + vec3 atmosphereLightDirection = czm_sunDirectionWC; +#else + vec3 atmosphereLightDirection = czm_lightDirectionWC; +#endif + +#if defined(GROUND_ATMOSPHERE) || defined(FOG) + if (!czm_backFacing()) + { + bool dynamicLighting = false; + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_DAYNIGHT_SHADING) || defined(ENABLE_VERTEX_LIGHTING)) + dynamicLighting = true; + #endif + + vec3 rayleighColor; + vec3 mieColor; + float opacity; + + vec3 positionWC; + vec3 lightDirection; + + // When the camera is far away (camera distance > nightFadeOutDistance), the scattering is computed in the fragment shader. + // Otherwise, the scattering is computed in the vertex shader. + #ifdef PER_FRAGMENT_GROUND_ATMOSPHERE + positionWC = computeEllipsoidPosition(); + lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(positionWC)); + computeAtmosphereScattering( + positionWC, + lightDirection, + rayleighColor, + mieColor, + opacity + ); + #else + positionWC = v_positionMC; + lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(positionWC)); + rayleighColor = v_atmosphereRayleighColor; + mieColor = v_atmosphereMieColor; + opacity = v_atmosphereOpacity; + #endif + + #ifdef COLOR_CORRECT + const bool ignoreBlackPixels = true; + rayleighColor = czm_applyHSBShift(rayleighColor, u_hsbShift, ignoreBlackPixels); + mieColor = czm_applyHSBShift(mieColor, u_hsbShift, ignoreBlackPixels); + #endif + + vec4 groundAtmosphereColor = computeAtmosphereColor(positionWC, lightDirection, rayleighColor, mieColor, opacity); + + // Fog is applied to tiles selected for fog, close to the Earth. + #ifdef FOG + vec3 fogColor = groundAtmosphereColor.rgb; + + // If there is lighting, apply that to the fog. + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING)) + float darken = clamp(dot(normalize(czm_viewerPositionWC), atmosphereLightDirection), u_minimumBrightness, 1.0); + fogColor *= darken; + #endif + + #ifndef HDR + fogColor.rgb = czm_pbrNeutralTonemapping(fogColor.rgb); + fogColor.rgb = czm_inverseGamma(fogColor.rgb); + #endif + + finalColor = vec4(czm_fog(v_distance, finalColor.rgb, fogColor.rgb, czm_fogVisualDensityScalar), finalColor.a); + + #else + // Apply ground atmosphere. This happens when the camera is far away from the earth. + + // The transmittance is based on optical depth i.e. the length of segment of the ray inside the atmosphere. + // This value is larger near the "circumference", as it is further away from the camera. We use it to + // brighten up that area of the ground atmosphere. + const float transmittanceModifier = 0.5; + float transmittance = transmittanceModifier + clamp(1.0 - groundAtmosphereColor.a, 0.0, 1.0); + + vec3 finalAtmosphereColor = finalColor.rgb + groundAtmosphereColor.rgb * transmittance; + + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_VERTEX_LIGHTING) || defined(ENABLE_DAYNIGHT_SHADING)) + float fadeInDist = u_nightFadeDistance.x; + float fadeOutDist = u_nightFadeDistance.y; + + float sunlitAtmosphereIntensity = clamp((cameraDist - fadeOutDist) / (fadeInDist - fadeOutDist), 0.05, 1.0); + float darken = clamp(dot(normalize(positionWC), atmosphereLightDirection), 0.0, 1.0); + vec3 darkenendGroundAtmosphereColor = mix(groundAtmosphereColor.rgb, finalAtmosphereColor.rgb, darken); + + finalAtmosphereColor = mix(darkenendGroundAtmosphereColor, finalAtmosphereColor, sunlitAtmosphereIntensity); + #endif + + #ifndef HDR + finalAtmosphereColor.rgb = vec3(1.0) - exp(-fExposure * finalAtmosphereColor.rgb); + #else + finalAtmosphereColor.rgb = czm_saturation(finalAtmosphereColor.rgb, 1.6); + #endif + + finalColor.rgb = mix(finalColor.rgb, finalAtmosphereColor.rgb, fade); + #endif + } +#endif + +#ifdef UNDERGROUND_COLOR + if (czm_backFacing()) + { + float distanceFromEllipsoid = max(czm_eyeHeight, 0.0); + float distance = max(v_distance - distanceFromEllipsoid, 0.0); + float blendAmount = interpolateByDistance(u_undergroundColorAlphaByDistance, distance); + vec4 undergroundColor = vec4(u_undergroundColor.rgb, u_undergroundColor.a * blendAmount); + finalColor = alphaBlend(undergroundColor, finalColor); + } +#endif + +#ifdef TRANSLUCENT + if (inTranslucencyRectangle()) + { + vec4 alphaByDistance = gl_FrontFacing ? u_frontFaceAlphaByDistance : u_backFaceAlphaByDistance; + finalColor.a *= interpolateByDistance(alphaByDistance, v_distance); + } +#endif + + out_FragColor = finalColor; +} + + +#ifdef SHOW_REFLECTIVE_OCEAN + +float waveFade(float edge0, float edge1, float x) +{ + float y = clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); + return pow(1.0 - y, 5.0); +} + +float linearFade(float edge0, float edge1, float x) +{ + return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0); +} + +// Based on water rendering by Jonas Wagner: +// http://29a.ch/2012/7/19/webgl-terrain-rendering-water-fog + +// low altitude wave settings +const float oceanFrequencyLowAltitude = 825000.0; +const float oceanAnimationSpeedLowAltitude = 0.004; +const float oceanOneOverAmplitudeLowAltitude = 1.0 / 2.0; +const float oceanSpecularIntensity = 0.5; + +// high altitude wave settings +const float oceanFrequencyHighAltitude = 125000.0; +const float oceanAnimationSpeedHighAltitude = 0.008; +const float oceanOneOverAmplitudeHighAltitude = 1.0 / 2.0; + +vec4 computeWaterColor(vec3 positionEyeCoordinates, vec2 textureCoordinates, mat3 enuToEye, vec4 imageryColor, float maskValue, float fade) +{ + vec3 positionToEyeEC = -positionEyeCoordinates; + float positionToEyeECLength = length(positionToEyeEC); + + // The double normalize below works around a bug in Firefox on Android devices. + vec3 normalizedPositionToEyeEC = normalize(normalize(positionToEyeEC)); + + // Fade out the waves as the camera moves far from the surface. + float waveIntensity = waveFade(70000.0, 1000000.0, positionToEyeECLength); + +#ifdef SHOW_OCEAN_WAVES + // high altitude waves + float time = czm_frameNumber * oceanAnimationSpeedHighAltitude; + vec4 noise = czm_getWaterNoise(u_oceanNormalMap, textureCoordinates * oceanFrequencyHighAltitude, time, 0.0); + vec3 normalTangentSpaceHighAltitude = vec3(noise.xy, noise.z * oceanOneOverAmplitudeHighAltitude); + + // low altitude waves + time = czm_frameNumber * oceanAnimationSpeedLowAltitude; + noise = czm_getWaterNoise(u_oceanNormalMap, textureCoordinates * oceanFrequencyLowAltitude, time, 0.0); + vec3 normalTangentSpaceLowAltitude = vec3(noise.xy, noise.z * oceanOneOverAmplitudeLowAltitude); + + // blend the 2 wave layers based on distance to surface + float highAltitudeFade = linearFade(0.0, 60000.0, positionToEyeECLength); + float lowAltitudeFade = 1.0 - linearFade(20000.0, 60000.0, positionToEyeECLength); + vec3 normalTangentSpace = + (highAltitudeFade * normalTangentSpaceHighAltitude) + + (lowAltitudeFade * normalTangentSpaceLowAltitude); + normalTangentSpace = normalize(normalTangentSpace); + + // fade out the normal perturbation as we move farther from the water surface + normalTangentSpace.xy *= waveIntensity; + normalTangentSpace = normalize(normalTangentSpace); +#else + vec3 normalTangentSpace = vec3(0.0, 0.0, 1.0); +#endif + + vec3 normalEC = enuToEye * normalTangentSpace; + + const vec3 waveHighlightColor = vec3(0.3, 0.45, 0.6); + + // Use diffuse light to highlight the waves + float diffuseIntensity = czm_getLambertDiffuse(czm_lightDirectionEC, normalEC) * maskValue; + vec3 diffuseHighlight = waveHighlightColor * diffuseIntensity * (1.0 - fade); + +#ifdef SHOW_OCEAN_WAVES + // Where diffuse light is low or non-existent, use wave highlights based solely on + // the wave bumpiness and no particular light direction. + float tsPerturbationRatio = normalTangentSpace.z; + vec3 nonDiffuseHighlight = mix(waveHighlightColor * 5.0 * (1.0 - tsPerturbationRatio), vec3(0.0), diffuseIntensity); +#else + vec3 nonDiffuseHighlight = vec3(0.0); +#endif + + // Add specular highlights in 3D, and in all modes when zoomed in. + float specularIntensity = czm_getSpecular(czm_lightDirectionEC, normalizedPositionToEyeEC, normalEC, 10.0); + float surfaceReflectance = mix(0.0, mix(u_zoomedOutOceanSpecularIntensity, oceanSpecularIntensity, waveIntensity), maskValue); + float specular = specularIntensity * surfaceReflectance; + +#ifdef HDR + specular *= 1.4; + + float e = 0.2; + float d = 3.3; + float c = 1.7; + + vec3 color = imageryColor.rgb + (c * (vec3(e) + imageryColor.rgb * d) * (diffuseHighlight + nonDiffuseHighlight + specular)); +#else + vec3 color = imageryColor.rgb + diffuseHighlight + nonDiffuseHighlight + specular; +#endif + + return vec4(color, imageryColor.a); +} + +#endif // #ifdef SHOW_REFLECTIVE_OCEAN +`;var pz=`#ifdef QUANTIZATION_BITS12 +in vec4 compressed0; +in float compressed1; +#else +in vec4 position3DAndHeight; +in vec4 textureCoordAndEncodedNormals; +#endif + +#ifdef GEODETIC_SURFACE_NORMALS +in vec3 geodeticSurfaceNormal; +#endif + +#ifdef EXAGGERATION +uniform vec2 u_verticalExaggerationAndRelativeHeight; +#endif + +uniform vec3 u_center3D; +uniform mat4 u_modifiedModelView; +uniform mat4 u_modifiedModelViewProjection; +uniform vec4 u_tileRectangle; + +// Uniforms for 2D Mercator projection +uniform vec2 u_southAndNorthLatitude; +uniform vec2 u_southMercatorYAndOneOverHeight; + +out vec3 v_positionMC; +out vec3 v_positionEC; + +out vec3 v_textureCoordinates; +out vec3 v_normalMC; +out vec3 v_normalEC; + +#ifdef APPLY_MATERIAL +out float v_slope; +out float v_aspect; +out float v_height; +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) +out float v_distance; +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) +out vec3 v_atmosphereRayleighColor; +out vec3 v_atmosphereMieColor; +out float v_atmosphereOpacity; +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS +uniform highp sampler2D u_clippingExtents; +out vec2 v_clippingPosition; +flat out int v_regionIndex; +#endif + +// These functions are generated at runtime. +vec4 getPosition(vec3 position, float height, vec2 textureCoordinates); +float get2DYPositionFraction(vec2 textureCoordinates); + +vec4 getPosition3DMode(vec3 position, float height, vec2 textureCoordinates) +{ + return u_modifiedModelViewProjection * vec4(position, 1.0); +} + +float get2DMercatorYPositionFraction(vec2 textureCoordinates) +{ + // The width of a tile at level 11, in radians and assuming a single root tile, is + // 2.0 * czm_pi / pow(2.0, 11.0) + // We want to just linearly interpolate the 2D position from the texture coordinates + // when we're at this level or higher. The constant below is the expression + // above evaluated and then rounded up at the 4th significant digit. + const float maxTileWidth = 0.003068; + float positionFraction = textureCoordinates.y; + float southLatitude = u_southAndNorthLatitude.x; + float northLatitude = u_southAndNorthLatitude.y; + if (northLatitude - southLatitude > maxTileWidth) + { + float southMercatorY = u_southMercatorYAndOneOverHeight.x; + float oneOverMercatorHeight = u_southMercatorYAndOneOverHeight.y; + + float currentLatitude = mix(southLatitude, northLatitude, textureCoordinates.y); + currentLatitude = clamp(currentLatitude, -czm_webMercatorMaxLatitude, czm_webMercatorMaxLatitude); + positionFraction = czm_latitudeToWebMercatorFraction(currentLatitude, southMercatorY, oneOverMercatorHeight); + } + return positionFraction; +} + +float get2DGeographicYPositionFraction(vec2 textureCoordinates) +{ + return textureCoordinates.y; +} + +vec4 getPositionPlanarEarth(vec3 position, float height, vec2 textureCoordinates) +{ + float yPositionFraction = get2DYPositionFraction(textureCoordinates); + vec4 rtcPosition2D = vec4(height, mix(u_tileRectangle.st, u_tileRectangle.pq, vec2(textureCoordinates.x, yPositionFraction)), 1.0); + return u_modifiedModelViewProjection * rtcPosition2D; +} + +vec4 getPosition2DMode(vec3 position, float height, vec2 textureCoordinates) +{ + return getPositionPlanarEarth(position, 0.0, textureCoordinates); +} + +vec4 getPositionColumbusViewMode(vec3 position, float height, vec2 textureCoordinates) +{ + return getPositionPlanarEarth(position, height, textureCoordinates); +} + +vec4 getPositionMorphingMode(vec3 position, float height, vec2 textureCoordinates) +{ + // We do not do RTC while morphing, so there is potential for jitter. + // This is unlikely to be noticeable, though. + vec3 position3DWC = position + u_center3D; + float yPositionFraction = get2DYPositionFraction(textureCoordinates); + vec4 position2DWC = vec4(height, mix(u_tileRectangle.st, u_tileRectangle.pq, vec2(textureCoordinates.x, yPositionFraction)), 1.0); + vec4 morphPosition = czm_columbusViewMorph(position2DWC, vec4(position3DWC, 1.0), czm_morphTime); + vec4 morphPositionEC = czm_modelView * morphPosition; + return czm_projection * morphPositionEC; +} + +#ifdef QUANTIZATION_BITS12 +uniform vec2 u_minMaxHeight; +uniform mat4 u_scaleAndBias; +#endif + +void main() +{ +#ifdef QUANTIZATION_BITS12 + vec2 xy = czm_decompressTextureCoordinates(compressed0.x); + vec2 zh = czm_decompressTextureCoordinates(compressed0.y); + vec3 position = vec3(xy, zh.x); + float height = zh.y; + vec2 textureCoordinates = czm_decompressTextureCoordinates(compressed0.z); + + height = height * (u_minMaxHeight.y - u_minMaxHeight.x) + u_minMaxHeight.x; + position = (u_scaleAndBias * vec4(position, 1.0)).xyz; + +#if (defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL)) && defined(INCLUDE_WEB_MERCATOR_Y) || defined(APPLY_MATERIAL) + float webMercatorT = czm_decompressTextureCoordinates(compressed0.w).x; + float encodedNormal = compressed1; +#elif defined(INCLUDE_WEB_MERCATOR_Y) + float webMercatorT = czm_decompressTextureCoordinates(compressed0.w).x; + float encodedNormal = 0.0; +#elif defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) + float webMercatorT = textureCoordinates.y; + float encodedNormal = compressed0.w; +#else + float webMercatorT = textureCoordinates.y; + float encodedNormal = 0.0; +#endif + +#else + // A single float per element + vec3 position = position3DAndHeight.xyz; + float height = position3DAndHeight.w; + vec2 textureCoordinates = textureCoordAndEncodedNormals.xy; + +#if (defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL)) && defined(INCLUDE_WEB_MERCATOR_Y) + float webMercatorT = textureCoordAndEncodedNormals.z; + float encodedNormal = textureCoordAndEncodedNormals.w; +#elif defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL) + float webMercatorT = textureCoordinates.y; + float encodedNormal = textureCoordAndEncodedNormals.z; +#elif defined(INCLUDE_WEB_MERCATOR_Y) + float webMercatorT = textureCoordAndEncodedNormals.z; + float encodedNormal = 0.0; +#else + float webMercatorT = textureCoordinates.y; + float encodedNormal = 0.0; +#endif + +#endif + + vec3 position3DWC = position + u_center3D; + +#ifdef GEODETIC_SURFACE_NORMALS + vec3 ellipsoidNormal = geodeticSurfaceNormal; +#else + vec3 ellipsoidNormal = normalize(position3DWC); +#endif + +#if defined(EXAGGERATION) && defined(GEODETIC_SURFACE_NORMALS) + float exaggeration = u_verticalExaggerationAndRelativeHeight.x; + float relativeHeight = u_verticalExaggerationAndRelativeHeight.y; + float newHeight = (height - relativeHeight) * exaggeration + relativeHeight; + + // stop from going through center of earth + float minRadius = min(min(czm_ellipsoidRadii.x, czm_ellipsoidRadii.y), czm_ellipsoidRadii.z); + newHeight = max(newHeight, -minRadius); + + vec3 offset = ellipsoidNormal * (newHeight - height); + position += offset; + position3DWC += offset; + height = newHeight; +#endif + + gl_Position = getPosition(position, height, textureCoordinates); + + v_positionEC = (u_modifiedModelView * vec4(position, 1.0)).xyz; + v_positionMC = position3DWC; // position in model coordinates + + v_textureCoordinates = vec3(textureCoordinates, webMercatorT); + +#if defined(ENABLE_VERTEX_LIGHTING) || defined(GENERATE_POSITION_AND_NORMAL) || defined(APPLY_MATERIAL) + vec3 normalMC = czm_octDecode(encodedNormal); + +#if defined(EXAGGERATION) && defined(GEODETIC_SURFACE_NORMALS) + vec3 projection = dot(normalMC, ellipsoidNormal) * ellipsoidNormal; + vec3 rejection = normalMC - projection; + normalMC = normalize(projection + rejection * exaggeration); +#endif + + v_normalMC = normalMC; + v_normalEC = czm_normal3D * v_normalMC; +#endif + +#ifdef ENABLE_CLIPPING_POLYGONS + vec2 sphericalLatLong = czm_approximateSphericalCoordinates(position3DWC); + sphericalLatLong.y = czm_branchFreeTernary(sphericalLatLong.y < czm_pi, sphericalLatLong.y, sphericalLatLong.y - czm_twoPi); + + vec2 minDistance = vec2(czm_infinity); + v_clippingPosition = vec2(czm_infinity); + v_regionIndex = -1; + + for (int regionIndex = 0; regionIndex < CLIPPING_POLYGON_REGIONS_LENGTH; regionIndex++) { + vec4 extents = unpackClippingExtents(u_clippingExtents, regionIndex); + vec2 rectUv = (sphericalLatLong.yx - extents.yx) * extents.wz; + + vec2 clamped = clamp(rectUv, vec2(0.0), vec2(1.0)); + vec2 distance = abs(rectUv - clamped) * extents.wz; + + float threshold = 0.01; + if (minDistance.x > distance.x || minDistance.y > distance.y) { + minDistance = distance; + v_clippingPosition = rectUv; + if (rectUv.x > threshold && rectUv.y > threshold && rectUv.x < 1.0 - threshold && rectUv.y < 1.0 - threshold) { + v_regionIndex = regionIndex; + } + } + } +#endif + +#if defined(FOG) || (defined(GROUND_ATMOSPHERE) && !defined(PER_FRAGMENT_GROUND_ATMOSPHERE)) + + bool dynamicLighting = false; + + #if defined(DYNAMIC_ATMOSPHERE_LIGHTING) && (defined(ENABLE_DAYNIGHT_SHADING) || defined(ENABLE_VERTEX_LIGHTING)) + dynamicLighting = true; + #endif + +#if defined(DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN) + vec3 atmosphereLightDirection = czm_sunDirectionWC; +#else + vec3 atmosphereLightDirection = czm_lightDirectionWC; +#endif + + vec3 lightDirection = czm_branchFreeTernary(dynamicLighting, atmosphereLightDirection, normalize(position3DWC)); + + computeAtmosphereScattering( + position3DWC, + lightDirection, + v_atmosphereRayleighColor, + v_atmosphereMieColor, + v_atmosphereOpacity + ); +#endif + +#if defined(FOG) || defined(GROUND_ATMOSPHERE) || defined(UNDERGROUND_COLOR) || defined(TRANSLUCENT) + v_distance = length((czm_modelView3D * vec4(position3DWC, 1.0)).xyz); +#endif + +#ifdef APPLY_MATERIAL + float northPoleZ = czm_ellipsoidRadii.z; + vec3 northPolePositionMC = vec3(0.0, 0.0, northPoleZ); + vec3 vectorEastMC = normalize(cross(northPolePositionMC - v_positionMC, ellipsoidNormal)); + float dotProd = abs(dot(ellipsoidNormal, v_normalMC)); + v_slope = acos(dotProd); + vec3 normalRejected = ellipsoidNormal * dotProd; + vec3 normalProjected = v_normalMC - normalRejected; + vec3 aspectVector = normalize(normalProjected); + v_aspect = acos(dot(aspectVector, vectorEastMC)); + float determ = dot(cross(vectorEastMC, aspectVector), ellipsoidNormal); + v_aspect = czm_branchFreeTernary(determ < 0.0, 2.0 * czm_pi - v_aspect, v_aspect); + v_height = height; +#endif +} +`;var eP=`void computeAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity) { + + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection); + + float atmosphereInnerRadius = length(positionWC); + + computeScattering( + primaryRay, + length(cameraToPositionWC), + lightDirection, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); +} +`;var tP=`float interpolateByDistance(vec4 nearFarScalar, float distance) +{ + float startDistance = nearFarScalar.x; + float startValue = nearFarScalar.y; + float endDistance = nearFarScalar.z; + float endValue = nearFarScalar.w; + float t = clamp((distance - startDistance) / (endDistance - startDistance), 0.0, 1.0); + return mix(startValue, endValue, t); +} + +void computeAtmosphereScattering(vec3 positionWC, vec3 lightDirection, out vec3 rayleighColor, out vec3 mieColor, out float opacity, out float underTranslucentGlobe) +{ + float ellipsoidRadiiDifference = czm_ellipsoidRadii.x - czm_ellipsoidRadii.z; + + // Adjustment to the atmosphere radius applied based on the camera height. + float distanceAdjustMin = czm_ellipsoidRadii.x / 4.0; + float distanceAdjustMax = czm_ellipsoidRadii.x; + float distanceAdjustModifier = ellipsoidRadiiDifference / 2.0; + float distanceAdjust = distanceAdjustModifier * clamp((czm_eyeHeight - distanceAdjustMin) / (distanceAdjustMax - distanceAdjustMin), 0.0, 1.0); + + // Since atmosphere scattering assumes the atmosphere is a spherical shell, we compute an inner radius of the atmosphere best fit + // for the position on the ellipsoid. + float radiusAdjust = (ellipsoidRadiiDifference / 4.0) + distanceAdjust; + float atmosphereInnerRadius = (length(czm_viewerPositionWC) - czm_eyeHeight) - radiusAdjust; + + // Setup the primary ray: from the camera position to the vertex position. + vec3 cameraToPositionWC = positionWC - czm_viewerPositionWC; + vec3 cameraToPositionWCDirection = normalize(cameraToPositionWC); + czm_ray primaryRay = czm_ray(czm_viewerPositionWC, cameraToPositionWCDirection); + + underTranslucentGlobe = 0.0; + + // Brighten the sky atmosphere under the Earth's atmosphere when translucency is enabled. + #if defined(GLOBE_TRANSLUCENT) + + // Check for intersection with the inner radius of the atmopshere. + czm_raySegment primaryRayEarthIntersect = czm_raySphereIntersectionInterval(primaryRay, vec3(0.0), atmosphereInnerRadius + radiusAdjust); + if (primaryRayEarthIntersect.start > 0.0 && primaryRayEarthIntersect.stop > 0.0) { + + // Compute position on globe. + vec3 direction = normalize(positionWC); + czm_ray ellipsoidRay = czm_ray(positionWC, -direction); + czm_raySegment ellipsoidIntersection = czm_rayEllipsoidIntersectionInterval(ellipsoidRay, vec3(0.0), czm_ellipsoidInverseRadii); + vec3 onEarth = positionWC - (direction * ellipsoidIntersection.start); + + // Control the color using the camera angle. + float angle = dot(normalize(czm_viewerPositionWC), normalize(onEarth)); + + // Control the opacity using the distance from Earth. + opacity = interpolateByDistance(vec4(0.0, 1.0, czm_ellipsoidRadii.x, 0.0), length(czm_viewerPositionWC - onEarth)); + vec3 horizonColor = vec3(0.1, 0.2, 0.3); + vec3 nearColor = vec3(0.0); + + rayleighColor = mix(nearColor, horizonColor, exp(-angle) * opacity); + + // Set the traslucent flag to avoid alpha adjustment in computeFinalColor funciton. + underTranslucentGlobe = 1.0; + return; + } + #endif + + computeScattering( + primaryRay, + length(cameraToPositionWC), + lightDirection, + atmosphereInnerRadius, + rayleighColor, + mieColor, + opacity + ); + + // Alter the opacity based on how close the viewer is to the ground. + // (0.0 = At edge of atmosphere, 1.0 = On ground) + float cameraHeight = czm_eyeHeight + atmosphereInnerRadius; + float atmosphereOuterRadius = atmosphereInnerRadius + ATMOSPHERE_THICKNESS; + opacity = clamp((atmosphereOuterRadius - cameraHeight) / (atmosphereOuterRadius - atmosphereInnerRadius), 0.0, 1.0); + + // Alter alpha based on time of day (0.0 = night , 1.0 = day) + float nightAlpha = (u_radiiAndDynamicAtmosphereColor.z != 0.0) ? clamp(dot(normalize(positionWC), lightDirection), 0.0, 1.0) : 1.0; + opacity *= pow(nightAlpha, 0.5); +} +`;var gz=`in vec3 v_outerPositionWC; + +uniform vec3 u_hsbShift; + +#ifndef PER_FRAGMENT_ATMOSPHERE +in vec3 v_mieColor; +in vec3 v_rayleighColor; +in float v_opacity; +in float v_translucent; +#endif + +void main (void) +{ + float lightEnum = u_radiiAndDynamicAtmosphereColor.z; + vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(v_outerPositionWC, lightEnum); + + vec3 mieColor; + vec3 rayleighColor; + float opacity; + float translucent; + + #ifdef PER_FRAGMENT_ATMOSPHERE + computeAtmosphereScattering( + v_outerPositionWC, + lightDirection, + rayleighColor, + mieColor, + opacity, + translucent + ); + #else + mieColor = v_mieColor; + rayleighColor = v_rayleighColor; + opacity = v_opacity; + translucent = v_translucent; + #endif + + vec4 color = computeAtmosphereColor(v_outerPositionWC, lightDirection, rayleighColor, mieColor, opacity); + + #ifndef HDR + color.rgb = czm_pbrNeutralTonemapping(color.rgb); + color.rgb = czm_inverseGamma(color.rgb); + #endif + + #ifdef COLOR_CORRECT + const bool ignoreBlackPixels = true; + color.rgb = czm_applyHSBShift(color.rgb, u_hsbShift, ignoreBlackPixels); + #endif + + // For the parts of the sky atmosphere that are not behind a translucent globe, + // we mix in the default opacity so that the sky atmosphere still appears at distance. + // This is needed because the opacity in the sky atmosphere is initially adjusted based + // on the camera height. + if (translucent == 0.0) { + color.a = mix(color.b, 1.0, color.a) * smoothstep(0.0, 1.0, czm_morphTime); + } + + out_FragColor = color; +} +`;var _z=`in vec4 position; + +out vec3 v_outerPositionWC; + +#ifndef PER_FRAGMENT_ATMOSPHERE +out vec3 v_mieColor; +out vec3 v_rayleighColor; +out float v_opacity; +out float v_translucent; +#endif + +void main(void) +{ + vec4 positionWC = czm_model * position; + float lightEnum = u_radiiAndDynamicAtmosphereColor.z; + vec3 lightDirection = czm_getDynamicAtmosphereLightDirection(positionWC.xyz, lightEnum); + + #ifndef PER_FRAGMENT_ATMOSPHERE + computeAtmosphereScattering( + positionWC.xyz, + lightDirection, + v_rayleighColor, + v_mieColor, + v_opacity, + v_translucent + ); + #endif + + v_outerPositionWC = positionWC.xyz; + vec4 positionEC = czm_modelView * position; + gl_Position = czm_projection * positionEC; +} +`;var yz=`uniform samplerCube u_cubeMap; + +in vec3 v_texCoord; + +void main() +{ + vec4 color = czm_textureCube(u_cubeMap, normalize(v_texCoord)); + out_FragColor = vec4(czm_gammaCorrect(color).rgb, czm_morphTime); +} +`;var Cz=`in vec3 position; +out vec3 v_texCoord; + +void main() +{ + vec3 p = czm_viewRotation * (czm_temeToPseudoFixed * (czm_entireFrustum.y * position)); + gl_Position = czm_projection * vec4(p, 1.0); + v_texCoord = position.xyz; +} +`;var Ez=`uniform sampler2D u_texture; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 color = texture(u_texture, v_textureCoordinates); + out_FragColor = czm_gammaCorrect(color); +} +`;var Iz=`uniform float u_radiusTS; + +in vec2 v_textureCoordinates; + +vec2 rotate(vec2 p, vec2 direction) +{ + return vec2(p.x * direction.x - p.y * direction.y, p.x * direction.y + p.y * direction.x); +} + +vec4 addBurst(vec2 position, vec2 direction, float lengthScalar) +{ + vec2 rotatedPosition = rotate(position, direction) * vec2(25.0, 0.75); + float radius = length(rotatedPosition) * lengthScalar; + float burst = 1.0 - smoothstep(0.0, 0.55, radius); + return vec4(burst); +} + +void main() +{ + float lengthScalar = 2.0 / sqrt(2.0); + vec2 position = v_textureCoordinates - vec2(0.5); + float radius = length(position) * lengthScalar; + float surface = step(radius, u_radiusTS); + vec4 color = vec4(vec2(1.0), surface + 0.2, surface); + + float glow = 1.0 - smoothstep(0.0, 0.55, radius); + color.ba += mix(vec2(0.0), vec2(1.0), glow) * 0.75; + + vec4 burst = vec4(0.0); + + // The following loop has been manually unrolled for speed, to + // avoid sin() and cos(). + // + //for (float i = 0.4; i < 3.2; i += 1.047) { + // vec2 direction = vec2(sin(i), cos(i)); + // burst += 0.4 * addBurst(position, direction, lengthScalar); + // + // direction = vec2(sin(i - 0.08), cos(i - 0.08)); + // burst += 0.3 * addBurst(position, direction, lengthScalar); + //} + + burst += 0.4 * addBurst(position, vec2(0.38942, 0.92106), lengthScalar); // angle == 0.4 + burst += 0.4 * addBurst(position, vec2(0.99235, 0.12348), lengthScalar); // angle == 0.4 + 1.047 + burst += 0.4 * addBurst(position, vec2(0.60327, -0.79754), lengthScalar); // angle == 0.4 + 1.047 * 2.0 + + burst += 0.3 * addBurst(position, vec2(0.31457, 0.94924), lengthScalar); // angle == 0.4 - 0.08 + burst += 0.3 * addBurst(position, vec2(0.97931, 0.20239), lengthScalar); // angle == 0.4 + 1.047 - 0.08 + burst += 0.3 * addBurst(position, vec2(0.66507, -0.74678), lengthScalar); // angle == 0.4 + 1.047 * 2.0 - 0.08 + + // End of manual loop unrolling. + + color += clamp(burst, vec4(0.0), vec4(1.0)) * 0.15; + + out_FragColor = clamp(color, vec4(0.0), vec4(1.0)); +} +`;var xz=`in vec2 direction; + +uniform float u_size; + +out vec2 v_textureCoordinates; + +void main() +{ + vec4 position; + if (czm_morphTime == 1.0) + { + position = vec4(czm_sunPositionWC, 1.0); + } + else + { + position = vec4(czm_sunPositionColumbusView.zxy, 1.0); + } + + vec4 positionEC = czm_view * position; + vec4 positionWC = czm_eyeToWindowCoordinates(positionEC); + + vec2 halfSize = vec2(u_size * 0.5); + halfSize *= ((direction * 2.0) - 1.0); + + gl_Position = czm_viewportOrthographic * vec4(positionWC.xy + halfSize, -positionWC.z, 1.0); + + v_textureCoordinates = direction; +} +`;var bz=` +in vec2 v_textureCoordinates; + +void main() +{ + czm_materialInput materialInput; + + materialInput.s = v_textureCoordinates.s; + materialInput.st = v_textureCoordinates; + materialInput.str = vec3(v_textureCoordinates, 0.0); + materialInput.normalEC = vec3(0.0, 0.0, -1.0); + + czm_material material = czm_getMaterial(materialInput); + + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +} +`;async function Cft(e,t,n,i){return l(i)||(i=!1),xft(e,t,n,i)}function Eft(e,t,n){let i=e[0],o=i.terrainProvider.requestTileGeometry(i.x,i.y,i.level);if(!o)return!1;let r;return n?r=o.then(eCe(i)):r=o.then(eCe(i)).catch(bft(i)),e.shift(),t.push(r),!0}function Ift(e){return new Promise(function(t){setTimeout(t,e)})}function oX(e,t,n){return e.length?Eft(e,t,n)?oX(e,t,n):Ift(100).then(()=>oX(e,t,n)):Promise.resolve()}function xft(e,t,n,i){let o=e.tilingScheme,r,s=[],a={};for(r=0;r<n.length;++r){let u=o.positionToTileXY(n[r],t);if(!l(u))continue;let f=u.toString();if(!a.hasOwnProperty(f)){let h={x:u.x,y:u.y,level:t,tilingScheme:o,terrainProvider:e,positions:[]};a[f]=h,s.push(h)}a[f].positions.push(n[r])}let c=[];return oX(s,c,i).then(function(){return Promise.all(c).then(function(){return n})})}function $ye(e,t,n){let i=t.interpolateHeight(n,e.longitude,e.latitude);return i===void 0?!1:(e.height=i,!0)}function eCe(e){let t=e.positions,n=e.tilingScheme.tileXYToRectangle(e.x,e.y,e.level);return function(i){let o=!1;for(let r=0;r<t.length;++r){let s=t[r];if(!$ye(s,i,n)){o=!0;break}}return o?i.createMesh({tilingScheme:e.tilingScheme,x:e.x,y:e.y,level:e.level,throttle:!1}).then(function(){for(let r=0;r<t.length;++r){let s=t[r];$ye(s,i,n)}}):Promise.resolve()}}function bft(e){let t=e.positions;return function(){for(let n=0;n<t.length;++n){let i=t[n];i.height=void 0}}}var Tz=Cft;var rX=new k;async function tCe(e,t,n){l(n)||(n=!1);let i=[],o=[],r=e.availability,s=[];for(let c=0;c<t.length;++c){let u=t[c],f=r.computeMaximumLevelAtPosition(u);if(o[c]=f,f===0){e.tilingScheme.positionToTileXY(u,1,rX);let A=e.loadTileDataAvailability(rX.x,rX.y,1);l(A)&&s.push(A)}let h=i[f];l(h)||(i[f]=h=[]),h.push(u)}await Promise.all(s),await Promise.all(i.map(function(c,u){if(l(c))return Tz(e,u,c,n)}));let a=[];for(let c=0;c<t.length;++c){let u=t[c];r.computeMaximumLevelAtPosition(u)!==o[c]&&a.push(u)}return a.length>0&&await tCe(e,a,n),t}var PT=tCe;async function sX(e,t){let n=t.terrainProvider,i=t.mapProjection,o=i.ellipsoid,r,s=t.camera.getRectangleCameraCoordinates(e);if(t.mode===ie.SCENE3D?r=o.cartesianToCartographic(s):r=i.unproject(s),!l(n))return r;let a=n.availability;if(!l(a)||t.mode===ie.SCENE2D)return r;let c=[ae.center(e),ae.southeast(e),ae.southwest(e),ae.northeast(e),ae.northwest(e)],u=await sX._sampleTerrainMostDetailed(n,c),f=!1,h=u.reduce(function(g,m){return l(m.height)?(f=!0,Math.max(m.height,g)):g},-Number.MAX_VALUE),A=r;return f&&(A.height+=h),A}sX._sampleTerrainMostDetailed=PT;var RT=sX;var Tft={NONE:0,LERC:1},vh=Object.freeze(Tft);var Sft={NONE:0,BITS12:1},za=Object.freeze(Sft);var t0=new d,wft=new d,Ad=new k,Sz=new R,Bft=new R,Dft=Math.pow(2,12);function Fc(e,t,n,i,o,r,s,a,c,u){let f=za.NONE,h,A;if(l(t)&&l(n)&&l(i)&&l(o)){let g=t.minimum,m=t.maximum,_=d.subtract(m,g,wft),y=i-n;Math.max(d.maximumComponent(_),y)<Dft-1?f=za.BITS12:f=za.NONE,h=R.inverseTransformation(o,new R);let E=d.negate(g,t0);R.multiply(R.fromTranslation(E,Sz),h,h);let I=t0;I.x=1/_.x,I.y=1/_.y,I.z=1/_.z,R.multiply(R.fromScale(I,Sz),h,h),A=R.clone(o),R.setTranslation(A,d.ZERO,A),o=R.clone(o,new R);let b=R.fromTranslation(g,Sz),S=R.fromScale(_,Bft),B=R.multiply(b,S,Sz);R.multiply(o,B,o),R.multiply(A,B,A)}this.quantization=f,this.minimumHeight=n,this.maximumHeight=i,this.center=d.clone(e),this.toScaledENU=h,this.fromScaledENU=o,this.matrix=A,this.hasVertexNormals=r,this.hasWebMercatorT=s??!1,this.hasGeodeticSurfaceNormals=a??!1,this.exaggeration=c??1,this.exaggerationRelativeHeight=u??0,this.stride=0,this._offsetGeodeticSurfaceNormal=0,this._offsetVertexNormal=0,this._calculateStrideAndOffsets()}Fc.prototype.encode=function(e,t,n,i,o,r,s,a){let c=i.x,u=i.y;if(this.quantization===za.BITS12){n=R.multiplyByPoint(this.toScaledENU,n,t0),n.x=D.clamp(n.x,0,1),n.y=D.clamp(n.y,0,1),n.z=D.clamp(n.z,0,1);let f=this.maximumHeight-this.minimumHeight,h=D.clamp((o-this.minimumHeight)/f,0,1);k.fromElements(n.x,n.y,Ad);let A=Fn.compressTextureCoordinates(Ad);k.fromElements(n.z,h,Ad);let g=Fn.compressTextureCoordinates(Ad);k.fromElements(c,u,Ad);let m=Fn.compressTextureCoordinates(Ad);if(e[t++]=A,e[t++]=g,e[t++]=m,this.hasWebMercatorT){k.fromElements(s,0,Ad);let _=Fn.compressTextureCoordinates(Ad);e[t++]=_}}else d.subtract(n,this.center,t0),e[t++]=t0.x,e[t++]=t0.y,e[t++]=t0.z,e[t++]=o,e[t++]=c,e[t++]=u,this.hasWebMercatorT&&(e[t++]=s);return this.hasVertexNormals&&(e[t++]=Fn.octPackFloat(r)),this.hasGeodeticSurfaceNormals&&(e[t++]=a.x,e[t++]=a.y,e[t++]=a.z),t};var vft=new d,nCe=new d;Fc.prototype.addGeodeticSurfaceNormals=function(e,t,n){if(this.hasGeodeticSurfaceNormals)return;let i=this.stride,o=e.length/i;this.hasGeodeticSurfaceNormals=!0,this._calculateStrideAndOffsets();let r=this.stride;for(let s=0;s<o;s++){for(let f=0;f<i;f++){let h=s*i+f,A=s*r+f;t[A]=e[h]}let a=this.decodePosition(t,s,vft),c=n.geodeticSurfaceNormal(a,nCe),u=s*r+this._offsetGeodeticSurfaceNormal;t[u]=c.x,t[u+1]=c.y,t[u+2]=c.z}};Fc.prototype.removeGeodeticSurfaceNormals=function(e,t){if(!this.hasGeodeticSurfaceNormals)return;let n=this.stride,i=e.length/n;this.hasGeodeticSurfaceNormals=!1,this._calculateStrideAndOffsets();let o=this.stride;for(let r=0;r<i;r++)for(let s=0;s<o;s++){let a=r*n+s,c=r*o+s;t[c]=e[a]}};Fc.prototype.decodePosition=function(e,t,n){if(l(n)||(n=new d),t*=this.stride,this.quantization===za.BITS12){let i=Fn.decompressTextureCoordinates(e[t],Ad);n.x=i.x,n.y=i.y;let o=Fn.decompressTextureCoordinates(e[t+1],Ad);return n.z=o.x,R.multiplyByPoint(this.fromScaledENU,n,n)}return n.x=e[t],n.y=e[t+1],n.z=e[t+2],d.add(n,this.center,n)};Fc.prototype.getExaggeratedPosition=function(e,t,n){n=this.decodePosition(e,t,n);let i=this.exaggeration,o=this.exaggerationRelativeHeight;if(i!==1&&this.hasGeodeticSurfaceNormals){let s=this.decodeGeodeticSurfaceNormal(e,t,nCe),a=this.decodeHeight(e,t),c=Yr.getHeight(a,i,o)-a;n.x+=s.x*c,n.y+=s.y*c,n.z+=s.z*c}return n};Fc.prototype.decodeTextureCoordinates=function(e,t,n){return l(n)||(n=new k),t*=this.stride,this.quantization===za.BITS12?Fn.decompressTextureCoordinates(e[t+2],n):k.fromElements(e[t+4],e[t+5],n)};Fc.prototype.decodeHeight=function(e,t){return t*=this.stride,this.quantization===za.BITS12?Fn.decompressTextureCoordinates(e[t+1],Ad).y*(this.maximumHeight-this.minimumHeight)+this.minimumHeight:e[t+3]};Fc.prototype.decodeWebMercatorT=function(e,t){return t*=this.stride,this.quantization===za.BITS12?Fn.decompressTextureCoordinates(e[t+3],Ad).x:e[t+6]};Fc.prototype.getOctEncodedNormal=function(e,t,n){t=t*this.stride+this._offsetVertexNormal;let i=e[t]/256,o=Math.floor(i),r=(i-o)*256;return k.fromElements(o,r,n)};Fc.prototype.decodeGeodeticSurfaceNormal=function(e,t,n){return t=t*this.stride+this._offsetGeodeticSurfaceNormal,n.x=e[t],n.y=e[t+1],n.z=e[t+2],n};Fc.prototype._calculateStrideAndOffsets=function(){let e=0;switch(this.quantization){case za.BITS12:e+=3;break;default:e+=6}this.hasWebMercatorT&&(e+=1),this.hasVertexNormals&&(this._offsetVertexNormal=e,e+=1),this.hasGeodeticSurfaceNormals&&(this._offsetGeodeticSurfaceNormal=e,e+=3),this.stride=e};var wz={position3DAndHeight:0,textureCoordAndEncodedNormals:1,geodeticSurfaceNormal:2},Bz={compressed0:0,compressed1:1,geodeticSurfaceNormal:2};Fc.prototype.getAttributes=function(e){let t=q.FLOAT,n=q.getSizeInBytes(t),i=this.stride*n,o=0,r=[];function s(a,c){r.push({index:a,vertexBuffer:e,componentDatatype:t,componentsPerAttribute:c,offsetInBytes:o,strideInBytes:i}),o+=c*n}if(this.quantization===za.NONE){s(wz.position3DAndHeight,4);let a=2;a+=this.hasWebMercatorT?1:0,a+=this.hasVertexNormals?1:0,s(wz.textureCoordAndEncodedNormals,a),this.hasGeodeticSurfaceNormals&&s(wz.geodeticSurfaceNormal,3)}else{let a=this.hasWebMercatorT||this.hasVertexNormals,c=this.hasWebMercatorT&&this.hasVertexNormals;s(Bz.compressed0,a?4:3),c&&s(Bz.compressed1,1),this.hasGeodeticSurfaceNormals&&s(Bz.geodeticSurfaceNormal,3)}return r};Fc.prototype.getAttributeLocations=function(){return this.quantization===za.NONE?wz:Bz};Fc.clone=function(e,t){if(l(e))return l(t)||(t=new Fc),t.quantization=e.quantization,t.minimumHeight=e.minimumHeight,t.maximumHeight=e.maximumHeight,t.center=d.clone(e.center),t.toScaledENU=R.clone(e.toScaledENU),t.fromScaledENU=R.clone(e.fromScaledENU),t.matrix=R.clone(e.matrix),t.hasVertexNormals=e.hasVertexNormals,t.hasWebMercatorT=e.hasWebMercatorT,t.hasGeodeticSurfaceNormals=e.hasGeodeticSurfaceNormals,t.exaggeration=e.exaggeration,t.exaggerationRelativeHeight=e.exaggerationRelativeHeight,t._calculateStrideAndOffsets(),t};var Il=Fc;var uA={};uA.DEFAULT_STRUCTURE=Object.freeze({heightScale:1,heightOffset:0,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1});var aX=new d,Pft=new R,Rft=new d,Mft=new d;uA.computeVertices=function(e){let t=Math.cos,n=Math.sin,i=Math.sqrt,o=Math.atan,r=Math.exp,s=D.PI_OVER_TWO,a=D.toRadians,c=e.heightmap,u=e.width,f=e.height,h=e.skirtHeight,A=h>0,g=e.isGeographic??!0,m=e.ellipsoid??te.default,_=1/m.maximumRadius,y=ae.clone(e.nativeRectangle),C=ae.clone(e.rectangle),E,I,b,S;l(C)?(E=C.west,I=C.south,b=C.east,S=C.north):g?(E=a(y.west),I=a(y.south),b=a(y.east),S=a(y.north)):(E=y.west*_,I=s-2*o(r(-y.south*_)),b=y.east*_,S=s-2*o(r(-y.north*_)));let B=e.relativeToCenter,v=l(B);B=v?B:d.ZERO;let P=e.includeWebMercatorT??!1,N=e.exaggeration??1,L=e.exaggerationRelativeHeight??0,x=N!==1,T=e.structure??uA.DEFAULT_STRUCTURE,w=T.heightScale??uA.DEFAULT_STRUCTURE.heightScale,M=T.heightOffset??uA.DEFAULT_STRUCTURE.heightOffset,O=T.elementsPerHeight??uA.DEFAULT_STRUCTURE.elementsPerHeight,U=T.stride??uA.DEFAULT_STRUCTURE.stride,Q=T.elementMultiplier??uA.DEFAULT_STRUCTURE.elementMultiplier,z=T.isBigEndian??uA.DEFAULT_STRUCTURE.isBigEndian,F=ae.computeWidth(y),H=ae.computeHeight(y),W=F/(u-1),Z=H/(f-1);g||(F*=_,H*=_);let Y=m.radiiSquared,$=Y.x,X=Y.y,he=Y.z,ge=65536,fe=-65536,ye=kt.eastNorthUpToFixedFrame(B,m),Ie=R.inverseTransformation(ye,Pft),ve,Te;P&&(ve=Yi.geodeticLatitudeToMercatorAngle(I),Te=1/(Yi.geodeticLatitudeToMercatorAngle(S)-ve));let ke=Rft;ke.x=Number.POSITIVE_INFINITY,ke.y=Number.POSITIVE_INFINITY,ke.z=Number.POSITIVE_INFINITY;let Ge=Mft;Ge.x=Number.NEGATIVE_INFINITY,Ge.y=Number.NEGATIVE_INFINITY,Ge.z=Number.NEGATIVE_INFINITY;let qe=Number.POSITIVE_INFINITY,tt=u*f,$t=h>0?u*2+f*2:0,it=tt+$t,tn=new Array(it),Wt=new Array(it),vt=new Array(it),bi=P?new Array(it):[],di=x?new Array(it):[],Ot=0,Tt=f,ii=0,Ct=u;A&&(--Ot,++Tt,--ii,++Ct);let Ro=1e-5;for(let $e=Ot;$e<Tt;++$e){let pt=$e;pt<0&&(pt=0),pt>=f&&(pt=f-1);let Xt=y.north-Z*pt;g?Xt=a(Xt):Xt=s-2*o(r(-Xt*_));let xn=(Xt-I)/(S-I);xn=D.clamp(xn,0,1);let lo=$e===Ot,ro=$e===Tt-1;h>0&&(lo?Xt+=Ro*H:ro&&(Xt-=Ro*H));let $s=t(Xt),ea=n(Xt),Vn=he*ea,_i;P&&(_i=(Yi.geodeticLatitudeToMercatorAngle(Xt)-ve)*Te);for(let _s=ii;_s<Ct;++_s){let Wo=_s;Wo<0&&(Wo=0),Wo>=u&&(Wo=u-1);let Ca=pt*(u*U)+Wo*U,uo;if(O===1)uo=c[Ca];else{uo=0;let wo;if(z)for(wo=0;wo<O;++wo)uo=uo*Q+c[Ca+wo];else for(wo=O-1;wo>=0;--wo)uo=uo*Q+c[Ca+wo]}uo=uo*w+M,fe=Math.max(fe,uo),ge=Math.min(ge,uo);let jo=y.west+W*Wo;g?jo=a(jo):jo=jo*_;let df=(jo-E)/(b-E);df=D.clamp(df,0,1);let Ar=pt*u+Wo;if(h>0){let wo=_s===ii,cn=_s===Ct-1,Se=lo||ro||wo||cn;if((lo||ro)&&(wo||cn))continue;Se&&(uo-=h,wo?(Ar=tt+(f-pt-1),jo-=Ro*F):ro?Ar=tt+f+(u-Wo-1):cn?(Ar=tt+f+u+pt,jo+=Ro*F):lo&&(Ar=tt+f+u+f+Wo))}let ys=$s*t(jo),Qs=$s*n(jo),vd=$*ys,rs=X*Qs,Ka=1/i(vd*ys+rs*Qs+Vn*ea),Sr=vd*Ka,Bl=rs*Ka,Dl=Vn*Ka,ta=new d;ta.x=Sr+ys*uo,ta.y=Bl+Qs*uo,ta.z=Dl+ea*uo,R.multiplyByPoint(Ie,ta,aX),d.minimumByComponent(aX,ke,ke),d.maximumByComponent(aX,Ge,Ge),qe=Math.min(qe,uo),tn[Ar]=ta,vt[Ar]=new k(df,xn),Wt[Ar]=uo,P&&(bi[Ar]=_i),x&&(di[Ar]=m.geodeticSurfaceNormal(ta))}}let Qo=le.fromPoints(tn),ya;l(C)&&(ya=Qn.fromRectangle(C,ge,fe,m));let mr;v&&(mr=new H_(m).computeHorizonCullingPointPossiblyUnderEllipsoid(B,tn,ge));let Tr=new CC(ke,Ge,B),Oe=new Il(B,Tr,qe,fe,ye,!1,P,x,N,L),lt=new Float32Array(it*Oe.stride),Ke=0;for(let $e=0;$e<it;++$e)Ke=Oe.encode(lt,Ke,tn[$e],vt[$e],Wt[$e],void 0,bi[$e],di[$e]);return{vertices:lt,maximumHeight:fe,minimumHeight:ge,encoding:Oe,boundingSphere3D:Qo,orientedBoundingBox:ya,occludeePointInScaledSpace:mr}};var nP=uA;function By(){me.throwInstantiationError()}Object.defineProperties(By.prototype,{credits:{get:me.throwInstantiationError},waterMask:{get:me.throwInstantiationError}});By.prototype.interpolateHeight=me.throwInstantiationError;By.prototype.isChildAvailable=me.throwInstantiationError;By.prototype.createMesh=me.throwInstantiationError;By.prototype.upsample=me.throwInstantiationError;By.prototype.wasCreatedByUpsampling=me.throwInstantiationError;By.maximumAsynchronousTasks=5;var fA=By;function Nft(e,t,n,i,o,r,s,a,c,u,f,h,A,g,m,_){this.center=e,this.vertices=t,this.stride=u??6,this.indices=n,this.indexCountWithoutSkirts=i,this.vertexCountWithoutSkirts=o,this.minimumHeight=r,this.maximumHeight=s,this.boundingSphere3D=a,this.occludeePointInScaledSpace=c,this.orientedBoundingBox=f,this.encoding=h,this.westIndicesSouthToNorth=A,this.southIndicesEastToWest=g,this.eastIndicesNorthToSouth=m,this.northIndicesWestToEast=_}var Ph=Nft;function Wp(e){this._buffer=e.buffer,this._width=e.width,this._height=e.height,this._childTileMask=e.childTileMask??15,this._encoding=e.encoding??vh.NONE;let t=nP.DEFAULT_STRUCTURE,n=e.structure;l(n)?n!==t&&(n.heightScale=n.heightScale??t.heightScale,n.heightOffset=n.heightOffset??t.heightOffset,n.elementsPerHeight=n.elementsPerHeight??t.elementsPerHeight,n.stride=n.stride??t.stride,n.elementMultiplier=n.elementMultiplier??t.elementMultiplier,n.isBigEndian=n.isBigEndian??t.isBigEndian):n=t,this._structure=n,this._createdByUpsampling=e.createdByUpsampling??!1,this._waterMask=e.waterMask,this._skirtHeight=void 0,this._bufferType=this._encoding===vh.LERC?Float32Array:this._buffer.constructor,this._mesh=void 0}Object.defineProperties(Wp.prototype,{credits:{get:function(){}},waterMask:{get:function(){return this._waterMask}},childTileMask:{get:function(){return this._childTileMask}}});var iCe="createVerticesFromHeightmap",Lft=new mi(iCe),Oft=new mi(iCe,fA.maximumAsynchronousTasks);Wp.prototype.createMesh=function(e){e=e??V.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid,u=t.tileXYToNativeRectangle(n,i,o),f=t.tileXYToRectangle(n,i,o),h=c.cartographicToCartesian(ae.center(f)),A=this._structure,m=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(c,this._width,t.getNumberOfXTilesAtLevel(0))/(1<<o);this._skirtHeight=Math.min(m*4,1e3);let y=(a?Oft:Lft).scheduleTask({heightmap:this._buffer,structure:A,includeWebMercatorT:!0,width:this._width,height:this._height,nativeRectangle:u,rectangle:f,relativeToCenter:h,ellipsoid:c,skirtHeight:this._skirtHeight,isGeographic:t.projection instanceof Hi,exaggeration:r,exaggerationRelativeHeight:s,encoding:this._encoding});if(!l(y))return;let C=this;return Promise.resolve(y).then(function(E){let I;C._skirtHeight>0?I=Bs.getRegularGridAndSkirtIndicesAndEdgeIndices(E.gridWidth,E.gridHeight):I=Bs.getRegularGridIndicesAndEdgeIndices(E.gridWidth,E.gridHeight);let b=E.gridWidth*E.gridHeight;return C._mesh=new Ph(h,new Float32Array(E.vertices),I.indices,I.indexCountWithoutSkirts,b,E.minimumHeight,E.maximumHeight,le.clone(E.boundingSphere3D),d.clone(E.occludeePointInScaledSpace),E.numberOfAttributes,Qn.clone(E.orientedBoundingBox),Il.clone(E.encoding),I.westIndicesSouthToNorth,I.southIndicesEastToWest,I.eastIndicesNorthToSouth,I.northIndicesWestToEast),C._buffer=void 0,C._mesh})};Wp.prototype._createMeshSync=function(e){let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=t.ellipsoid,c=t.tileXYToNativeRectangle(n,i,o),u=t.tileXYToRectangle(n,i,o),f=a.cartographicToCartesian(ae.center(u)),h=this._structure,g=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(a,this._width,t.getNumberOfXTilesAtLevel(0))/(1<<o);this._skirtHeight=Math.min(g*4,1e3);let m=nP.computeVertices({heightmap:this._buffer,structure:h,includeWebMercatorT:!0,width:this._width,height:this._height,nativeRectangle:c,rectangle:u,relativeToCenter:f,ellipsoid:a,skirtHeight:this._skirtHeight,isGeographic:t.projection instanceof Hi,exaggeration:r,exaggerationRelativeHeight:s});this._buffer=void 0;let _;this._skirtHeight>0?_=Bs.getRegularGridAndSkirtIndicesAndEdgeIndices(this._width,this._height):_=Bs.getRegularGridIndicesAndEdgeIndices(this._width,this._height);let y=m.gridWidth*m.gridHeight;return this._mesh=new Ph(f,m.vertices,_.indices,_.indexCountWithoutSkirts,y,m.minimumHeight,m.maximumHeight,m.boundingSphere3D,m.occludeePointInScaledSpace,m.encoding.stride,m.orientedBoundingBox,m.encoding,_.westIndicesSouthToNorth,_.southIndicesEastToWest,_.eastIndicesNorthToSouth,_.northIndicesWestToEast),this._mesh};Wp.prototype.interpolateHeight=function(e,t,n){let i=this._width,o=this._height,r=this._structure,s=r.stride,a=r.elementsPerHeight,c=r.elementMultiplier,u=r.isBigEndian,f=r.heightOffset,h=r.heightScale,A=l(this._mesh),g=this._encoding===vh.LERC;if(!A&&g)return;let _;if(A){let y=this._mesh.vertices,C=this._mesh.encoding;_=oCe(y,C,f,h,e,i,o,t,n)}else _=Fft(this._buffer,a,c,s,u,e,i,o,t,n),_=_*h+f;return _};Wp.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(a))return;let c=this._width,u=this._height,f=this._structure,h=f.stride,A=new this._bufferType(c*u*h),g=a.vertices,m=a.encoding,_=e.tileXYToRectangle(t,n,i),y=e.tileXYToRectangle(o,r,s),C=f.heightOffset,E=f.heightScale,I=f.elementsPerHeight,b=f.elementMultiplier,S=f.isBigEndian,B=Math.pow(b,I-1);for(let v=0;v<u;++v){let P=D.lerp(y.north,y.south,v/(u-1));for(let N=0;N<c;++N){let L=D.lerp(y.west,y.east,N/(c-1)),p=oCe(g,m,C,E,_,c,u,L,P);p=p<f.lowestEncodedHeight?f.lowestEncodedHeight:p,p=p>f.highestEncodedHeight?f.highestEncodedHeight:p,Qft(A,I,b,B,h,S,v*c+N,p)}}return Promise.resolve(new Wp({buffer:A,width:c,height:u,childTileMask:0,structure:this._structure,createdByUpsampling:!0}))};Wp.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};Wp.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};function Fft(e,t,n,i,o,r,s,a,c,u){let f=(c-r.west)*(s-1)/(r.east-r.west),h=(u-r.south)*(a-1)/(r.north-r.south),A=f|0,g=A+1;g>=s&&(g=s-1,A=s-2);let m=h|0,_=m+1;_>=a&&(_=a-1,m=a-2);let y=f-A,C=h-m;m=a-1-m,_=a-1-_;let E=Dz(e,t,n,i,o,m*s+A),I=Dz(e,t,n,i,o,m*s+g),b=Dz(e,t,n,i,o,_*s+A),S=Dz(e,t,n,i,o,_*s+g);return rCe(y,C,E,I,b,S)}function oCe(e,t,n,i,o,r,s,a,c){let u=(a-o.west)*(r-1)/(o.east-o.west),f=(c-o.south)*(s-1)/(o.north-o.south),h=u|0,A=h+1;A>=r&&(A=r-1,h=r-2);let g=f|0,m=g+1;m>=s&&(m=s-1,g=s-2);let _=u-h,y=f-g;g=s-1-g,m=s-1-m;let C=(t.decodeHeight(e,g*r+h)-n)/i,E=(t.decodeHeight(e,g*r+A)-n)/i,I=(t.decodeHeight(e,m*r+h)-n)/i,b=(t.decodeHeight(e,m*r+A)-n)/i;return rCe(_,y,C,E,I,b)}function rCe(e,t,n,i,o,r){return t<e?n+e*(i-n)+t*(r-i):n+e*(r-o)+t*(o-n)}function Dz(e,t,n,i,o,r){r*=i;let s=0,a;if(o)for(a=0;a<t;++a)s=s*n+e[r+a];else for(a=t-1;a>=0;--a)s=s*n+e[r+a];return s}function Qft(e,t,n,i,o,r,s,a){s*=o;let c;if(r)for(c=0;c<t-1;++c)e[s+c]=a/i|0,a-=e[s+c]*i,i/=n;else for(c=t-1;c>0;--c)e[s+c]=a/i|0,a-=e[s+c]*i,i/=n;e[s+c]=a}var Qc=Wp;function MT(e){e=e??V.EMPTY_OBJECT,this._tilingScheme=e.tilingScheme,l(this._tilingScheme)||(this._tilingScheme=new co({ellipsoid:e.ellipsoid??te.default})),this._levelZeroMaximumGeometricError=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,64,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._errorEvent=new _e}Object.defineProperties(MT.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});MT.prototype.requestTileGeometry=function(e,t,n,i){return Promise.resolve(new Qc({buffer:new Uint8Array(256),width:16,height:16}))};MT.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};MT.prototype.getTileDataAvailable=function(e,t,n){};MT.prototype.loadTileDataAvailability=function(e,t,n){};var jp=MT;var kft=new k;function Uft(e,t){let n=e.unionClippingRegions,i=e.length,o=Vs.useFloatTexture(t),r=Vs.getTextureResolution(e,t,kft),s=r.x,a=r.y,c=o?Vft(s,a):Hft(s,a);return c+=` +`,c+=n?Gft(i):zft(i),c}function Gft(e){return`float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) +{ + vec4 position = czm_windowToEyeCoordinates(fragCoord); + vec3 clipNormal = vec3(0.0); + vec3 clipPosition = vec3(0.0); + float clipAmount; + float pixelWidth = czm_metersPerPixel(position); + bool breakAndDiscard = false; + for (int i = 0; i < ${e}; ++i) + { + vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix); + clipNormal = clippingPlane.xyz; + clipPosition = -clippingPlane.w * clipNormal; + float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth; + clipAmount = czm_branchFreeTernary(i == 0, amount, min(amount, clipAmount)); + if (amount <= 0.0) + { + breakAndDiscard = true; + break; + } + } + if (breakAndDiscard) { + discard; + } + return clipAmount; +} +`}function zft(e){return`float clip(vec4 fragCoord, sampler2D clippingPlanes, mat4 clippingPlanesMatrix) +{ + bool clipped = true; + vec4 position = czm_windowToEyeCoordinates(fragCoord); + vec3 clipNormal = vec3(0.0); + vec3 clipPosition = vec3(0.0); + float clipAmount = 0.0; + float pixelWidth = czm_metersPerPixel(position); + for (int i = 0; i < ${e}; ++i) + { + vec4 clippingPlane = getClippingPlane(clippingPlanes, i, clippingPlanesMatrix); + clipNormal = clippingPlane.xyz; + clipPosition = -clippingPlane.w * clipNormal; + float amount = dot(clipNormal, (position.xyz - clipPosition)) / pixelWidth; + clipAmount = max(amount, clipAmount); + clipped = clipped && (amount <= 0.0); + } + if (clipped) + { + discard; + } + return clipAmount; +} +`}function Vft(e,t){let n=1/e,i=1/t,o=`${n}`;o.indexOf(".")===-1&&(o+=".0");let r=`${i}`;return r.indexOf(".")===-1&&(r+=".0"),`vec4 getClippingPlane(highp sampler2D packedClippingPlanes, int clippingPlaneNumber, mat4 transform) +{ + int pixY = clippingPlaneNumber / ${e}; + int pixX = clippingPlaneNumber - (pixY * ${e}); + float u = (float(pixX) + 0.5) * ${o}; + float v = (float(pixY) + 0.5) * ${r}; + vec4 plane = texture(packedClippingPlanes, vec2(u, v)); + return czm_transformPlane(plane, transform); +} +`}function Hft(e,t){let n=1/e,i=1/t,o=`${n}`;o.indexOf(".")===-1&&(o+=".0");let r=`${i}`;return r.indexOf(".")===-1&&(r+=".0"),`vec4 getClippingPlane(highp sampler2D packedClippingPlanes, int clippingPlaneNumber, mat4 transform) +{ + int clippingPlaneStartIndex = clippingPlaneNumber * 2; + int pixY = clippingPlaneStartIndex / ${e}; + int pixX = clippingPlaneStartIndex - (pixY * ${e}); + float u = (float(pixX) + 0.5) * ${o}; + float v = (float(pixY) + 0.5) * ${r}; + vec4 oct32 = texture(packedClippingPlanes, vec2(u, v)) * 255.0; + vec2 oct = vec2(oct32.x * 256.0 + oct32.y, oct32.z * 256.0 + oct32.w); + vec4 plane; + plane.xyz = czm_octDecode(oct, 65535.0); + plane.w = czm_unpackFloat(texture(packedClippingPlanes, vec2(u + ${o}, v))); + return czm_transformPlane(plane, transform); +} +`}var Dy=Uft;function Wft(e,t,n,i,o,r){this.numberOfDayTextures=e,this.flags=t,this.material=n,this.shaderProgram=i,this.clippingShaderState=o,this.clippingPolygonShaderState=r}function cX(){this.baseVertexShaderSource=void 0,this.baseFragmentShaderSource=void 0,this._shadersByTexturesFlags=[],this.material=void 0}function jft(e){let t="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPosition3DMode(position, height, textureCoordinates); }",n="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPositionColumbusViewMode(position, height, textureCoordinates); }",i="vec4 getPosition(vec3 position, float height, vec2 textureCoordinates) { return getPositionMorphingMode(position, height, textureCoordinates); }",o;switch(e){case ie.SCENE3D:o=t;break;case ie.SCENE2D:case ie.COLUMBUS_VIEW:o=n;break;case ie.MORPHING:o=i;break}return o}function Yft(e){return e.webgl2?`void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) { + czm_clipPolygons(clippingDistance, regionsLength, clippingPosition, regionIndex); + }`:`void clipPolygons(highp sampler2D clippingDistance, int regionsLength, vec2 clippingPosition, int regionIndex) { + }`}function qft(e){return e.webgl2?`vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) { + return czm_unpackClippingExtents(extentsTexture, index); + }`:`vec4 unpackClippingExtents(highp sampler2D extentsTexture, int index) { + return vec4(); + }`}function Kft(e){return e?"float get2DYPositionFraction(vec2 textureCoordinates) { return get2DMercatorYPositionFraction(textureCoordinates); }":"float get2DYPositionFraction(vec2 textureCoordinates) { return get2DGeographicYPositionFraction(textureCoordinates); }"}cX.prototype.getShaderProgram=function(e){let t=e.frameState,n=e.surfaceTile,i=e.numberOfDayTextures,o=e.applyBrightness,r=e.applyContrast,s=e.applyHue,a=e.applySaturation,c=e.applyGamma,u=e.applyAlpha,f=e.applyDayNightAlpha,h=e.applySplit,A=e.hasWaterMask,g=e.showReflectiveOcean,m=e.showOceanWaves,_=e.enableLighting,y=e.dynamicAtmosphereLighting,C=e.dynamicAtmosphereLightingFromSun,E=e.showGroundAtmosphere,I=e.perFragmentGroundAtmosphere,b=e.hasVertexNormals,S=e.useWebMercatorProjection,B=e.enableFog,v=e.enableClippingPlanes,P=e.clippingPlanes,N=e.enableClippingPolygons,L=e.clippingPolygons,p=e.clippedByBoundaries,x=e.hasImageryLayerCutout,T=e.colorCorrect,w=e.highlightFillTile,M=e.colorToAlpha,O=e.hasGeodeticSurfaceNormals,U=e.hasExaggeration,Q=e.showUndergroundColor,z=e.translucent,F=0,H="",Z=n.renderedMesh.encoding;Z.quantization===za.BITS12&&(F=1,H="QUANTIZATION_BITS12");let $=0,X="";p&&($=1,X="TILE_LIMIT_RECTANGLE");let he=0,ge="";x&&(he=1,ge="APPLY_IMAGERY_CUTOUT");let fe=t.mode,ye=fe|o<<2|r<<3|s<<4|a<<5|c<<6|u<<7|A<<8|g<<9|m<<10|_<<11|y<<12|C<<13|E<<14|I<<15|b<<16|S<<17|B<<18|F<<19|h<<20|v<<21|N<<22|$<<23|he<<24|T<<25|w<<26|M<<27|O<<28|U<<29|Q<<30|z<<31|f<<32,Ie=0;l(P)&&P.length>0&&(Ie=v?P.clippingPlanesState:0);let ve=0;l(L)&&L.length>0&&(ve=N?L.clippingPolygonsState:0);let Te=n.surfaceShader;if(l(Te)&&Te.numberOfDayTextures===i&&Te.flags===ye&&Te.material===this.material&&Te.clippingShaderState===Ie&&Te.clippingPolygonShaderState===ve)return Te.shaderProgram;let ke=this._shadersByTexturesFlags[i];if(l(ke)||(ke=this._shadersByTexturesFlags[i]=[]),Te=ke[ye],!l(Te)||Te.material!==this.material||Te.clippingShaderState!==Ie||Te.clippingPolygonShaderState!==ve){let Ge=this.baseVertexShaderSource.clone(),qe=this.baseFragmentShaderSource.clone();Ie!==0&&qe.sources.unshift(Dy(P,t.context)),ve!==0&&(qe.sources.unshift(Yft(t.context)),Ge.sources.unshift(qft(t.context))),Ge.defines.push(H),qe.defines.push(`TEXTURE_UNITS ${i}`,X,ge),o&&qe.defines.push("APPLY_BRIGHTNESS"),r&&qe.defines.push("APPLY_CONTRAST"),s&&qe.defines.push("APPLY_HUE"),a&&qe.defines.push("APPLY_SATURATION"),c&&qe.defines.push("APPLY_GAMMA"),u&&qe.defines.push("APPLY_ALPHA"),f&&qe.defines.push("APPLY_DAY_NIGHT_ALPHA"),A&&qe.defines.push("HAS_WATER_MASK"),g&&(qe.defines.push("SHOW_REFLECTIVE_OCEAN"),Ge.defines.push("SHOW_REFLECTIVE_OCEAN")),m&&qe.defines.push("SHOW_OCEAN_WAVES"),M&&qe.defines.push("APPLY_COLOR_TO_ALPHA"),Q&&(Ge.defines.push("UNDERGROUND_COLOR"),qe.defines.push("UNDERGROUND_COLOR")),z&&(Ge.defines.push("TRANSLUCENT"),qe.defines.push("TRANSLUCENT")),_&&(b?(Ge.defines.push("ENABLE_VERTEX_LIGHTING"),qe.defines.push("ENABLE_VERTEX_LIGHTING")):(Ge.defines.push("ENABLE_DAYNIGHT_SHADING"),qe.defines.push("ENABLE_DAYNIGHT_SHADING"))),y&&(Ge.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING"),qe.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING"),C&&(Ge.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN"),qe.defines.push("DYNAMIC_ATMOSPHERE_LIGHTING_FROM_SUN"))),E&&(Ge.defines.push("GROUND_ATMOSPHERE"),qe.defines.push("GROUND_ATMOSPHERE"),I&&(Ge.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE"),qe.defines.push("PER_FRAGMENT_GROUND_ATMOSPHERE"))),Ge.defines.push("INCLUDE_WEB_MERCATOR_Y"),qe.defines.push("INCLUDE_WEB_MERCATOR_Y"),B&&(Ge.defines.push("FOG"),qe.defines.push("FOG")),h&&qe.defines.push("APPLY_SPLIT"),v&&qe.defines.push("ENABLE_CLIPPING_PLANES"),N&&(qe.defines.push("ENABLE_CLIPPING_POLYGONS"),Ge.defines.push("ENABLE_CLIPPING_POLYGONS"),L.inverse&&qe.defines.push("CLIPPING_INVERSE"),qe.defines.push(`CLIPPING_POLYGON_REGIONS_LENGTH ${L.extentsCount}`),Ge.defines.push(`CLIPPING_POLYGON_REGIONS_LENGTH ${L.extentsCount}`)),T&&qe.defines.push("COLOR_CORRECT"),w&&qe.defines.push("HIGHLIGHT_FILL_TILE"),O&&Ge.defines.push("GEODETIC_SURFACE_NORMALS"),U&&Ge.defines.push("EXAGGERATION");let tt=` vec4 computeDayColor(vec4 initialColor, vec3 textureCoordinates, float nightBlend) + { + vec4 color = initialColor; +`;x&&(tt+=` vec4 cutoutAndColorResult; + bool texelUnclipped; +`);for(let it=0;it<i;++it)x?tt+=` cutoutAndColorResult = u_dayTextureCutoutRectangles[${it}]; + texelUnclipped = v_textureCoordinates.x < cutoutAndColorResult.x || cutoutAndColorResult.z < v_textureCoordinates.x || v_textureCoordinates.y < cutoutAndColorResult.y || cutoutAndColorResult.w < v_textureCoordinates.y; + cutoutAndColorResult = sampleAndBlend( +`:tt+=` color = sampleAndBlend( +`,tt+=` color, + u_dayTextures[${it}], + u_dayTextureUseWebMercatorT[${it}] ? textureCoordinates.xz : textureCoordinates.xy, + u_dayTextureTexCoordsRectangle[${it}], + u_dayTextureTranslationAndScale[${it}], + ${u?`u_dayTextureAlpha[${it}]`:"1.0"}, + ${f?`u_dayTextureNightAlpha[${it}]`:"1.0"}, + ${f?`u_dayTextureDayAlpha[${it}]`:"1.0"}, + ${o?`u_dayTextureBrightness[${it}]`:"0.0"}, + ${r?`u_dayTextureContrast[${it}]`:"0.0"}, + ${s?`u_dayTextureHue[${it}]`:"0.0"}, + ${a?`u_dayTextureSaturation[${it}]`:"0.0"}, + ${c?`u_dayTextureOneOverGamma[${it}]`:"0.0"}, + ${h?`u_dayTextureSplit[${it}]`:"0.0"}, + ${M?`u_colorsToAlpha[${it}]`:"vec4(0.0)"}, + nightBlend); +`,x&&(tt+=` color = czm_branchFreeTernary(texelUnclipped, cutoutAndColorResult, color); +`);tt+=` return color; + }`,qe.sources.push(tt),Ge.sources.push(jft(fe)),Ge.sources.push(Kft(S));let $t=ln.fromCache({context:t.context,vertexShaderSource:Ge,fragmentShaderSource:qe,attributeLocations:Z.getAttributeLocations()});Te=ke[ye]=new Wft(i,ye,this.material,$t,Ie,ve)}return n.surfaceShader=Te,Te.shaderProgram};cX.prototype.destroy=function(){let e,t,n=this._shadersByTexturesFlags;for(let i in n)if(n.hasOwnProperty(i)){let o=n[i];if(!l(o))continue;for(e in o)o.hasOwnProperty(e)&&(t=o[e],l(t)&&t.shaderProgram.destroy())}return ue(this)};var vz=cX;var Xft={NONE:-1,PARTIAL:0,FULL:1},Gr=Object.freeze(Xft);var Jft={START:0,LOADING:1,DONE:2,FAILED:3},Va=Object.freeze(Jft);var Zft={FAILED:0,UNLOADED:1,RECEIVING:2,RECEIVED:3,TRANSFORMING:4,TRANSFORMED:5,READY:6},To=Object.freeze(Zft);function ur(){this.imagery=[],this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new se(0,0,1,1),this.terrainData=void 0,this.vertexArray=void 0,this.tileBoundingRegion=void 0,this.occludeePointInScaledSpace=new d,this.boundingVolumeSourceTile=void 0,this.boundingVolumeIsFromMesh=!1,this.terrainState=To.UNLOADED,this.mesh=void 0,this.fill=void 0,this.pickBoundingSphere=new le,this.surfaceShader=void 0,this.isClipped=!0,this.clippedByBoundaries=!1}Object.defineProperties(ur.prototype,{eligibleForUnloading:{get:function(){let e=this.terrainState,n=!(e===To.RECEIVING||e===To.TRANSFORMING),i=this.imagery;for(let o=0,r=i.length;n&&o<r;++o){let s=i[o];n=!l(s.loadingImagery)||s.loadingImagery.state!==qn.TRANSITIONING}return n}},renderedMesh:{get:function(){if(l(this.vertexArray))return this.mesh;if(l(this.fill))return this.fill.mesh}}});var $ft=new Ae;function lX(e,t,n,i,o,r){let s=e.getExaggeratedPosition(i,o,r);if(l(t)&&t!==ie.SCENE3D){let c=n.ellipsoid.cartesianToCartographic(s,$ft);s=n.project(c,r),s=d.fromElements(s.z,s.x,s.y,r)}return s}var edt=new d,tdt=new d,ndt=new d;ur.prototype.pick=function(e,t,n,i,o){let r=this.renderedMesh;if(!l(r))return;let s=r.vertices,a=r.indices,c=r.encoding,u=a.length,f=Number.MAX_VALUE;for(let h=0;h<u;h+=3){let A=a[h],g=a[h+1],m=a[h+2],_=lX(c,t,n,s,A,edt),y=lX(c,t,n,s,g,tdt),C=lX(c,t,n,s,m,ndt),E=Ai.rayTriangleParametric(e,_,y,C,i);l(E)&&E<f&&E>=0&&(f=E)}return f!==Number.MAX_VALUE?In.getPoint(e,f,o):void 0};ur.prototype.freeResources=function(){l(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,this.waterMaskTexture.referenceCount===0&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0),this.terrainData=void 0,this.terrainState=To.UNLOADED,this.mesh=void 0,this.fill=this.fill&&this.fill.destroy();let e=this.imagery;for(let t=0,n=e.length;t<n;++t)e[t].freeResources();this.imagery.length=0,this.freeVertexArray()};ur.prototype.freeVertexArray=function(){ur._freeVertexArray(this.vertexArray),this.vertexArray=void 0,ur._freeVertexArray(this.wireframeVertexArray),this.wireframeVertexArray=void 0};ur.initialize=function(e,t,n){let i=e.data;l(i)||(i=e.data=new ur),e.state===Va.START&&(idt(e,t,n),e.state=Va.LOADING)};ur.processStateMachine=function(e,t,n,i,o,r,s){ur.initialize(e,n,i);let a=e.data;if(e.state===Va.LOADING&&odt(e,t,n,i,o,r),s)return;let c=e.renderable;e.renderable=l(a.vertexArray);let u=a.terrainState===To.READY;e.upsampledFromParent=l(a.terrainData)&&a.terrainData.wasCreatedByUpsampling();let f=a.processImagery(e,n,t);if(u&&f){let h=e._loadedCallbacks,A={};for(let g in h)h.hasOwnProperty(g)&&(h[g](e)||(A[g]=h[g]));e._loadedCallbacks=A,e.state=Va.DONE}c&&(e.renderable=!0)};ur.prototype.processImagery=function(e,t,n,i){let o=e.data,r=e.upsampledFromParent,s=!1,a=!0,c=o.imagery,u,f;for(u=0,f=c.length;u<f;++u){let h=c[u];if(!l(h.loadingImagery)){r=!1;continue}if(h.loadingImagery.state===qn.PLACEHOLDER){let g=h.loadingImagery.imageryLayer;if(g.ready){h.freeResources(),c.splice(u,1),g._createTileImagerySkeletons(e,t,u),--u,f=c.length;continue}else r=!1}let A=h.processStateMachine(e,n,i);a=a&&A,s=s||A||l(h.readyImagery),r=r&&l(h.loadingImagery)&&(h.loadingImagery.state===qn.FAILED||h.loadingImagery.state===qn.INVALID)}return e.upsampledFromParent=r,e.renderable=e.renderable&&(s||a),a};function sCe(e,t,n,i){let o=e.renderedMesh,r=o.vertices,s=o.encoding,a=r.length/s.stride,c=Il.clone(s);c.hasGeodeticSurfaceNormals=t,c=Il.clone(c);let u=c.stride,f=new Float32Array(a*u);t?s.addGeodeticSurfaceNormals(r,f,n):s.removeGeodeticSurfaceNormals(r,f),o.vertices=f,o.stride=u,o!==e.mesh?(ur._freeVertexArray(e.fill.vertexArray),e.fill.vertexArray=ur._createVertexArrayForMesh(i.context,o)):(ur._freeVertexArray(e.vertexArray),e.vertexArray=ur._createVertexArrayForMesh(i.context,o)),ur._freeVertexArray(e.wireframeVertexArray),e.wireframeVertexArray=void 0}ur.prototype.addGeodeticSurfaceNormals=function(e,t){sCe(this,!0,e,t)};ur.prototype.removeGeodeticSurfaceNormals=function(e){sCe(this,!1,void 0,e)};ur.prototype.updateExaggeration=function(e,t,n){let i=this,o=i.renderedMesh;if(o===void 0)return;let r=t.verticalExaggeration,s=t.verticalExaggerationRelativeHeight,a=r!==1,c=o.encoding,u=c.exaggeration!==r,f=c.exaggerationRelativeHeight!==s;if(u||f){if(u)if(a&&!c.hasGeodeticSurfaceNormals){let h=e.tilingScheme.ellipsoid;i.addGeodeticSurfaceNormals(h,t)}else!a&&c.hasGeodeticSurfaceNormals&&i.removeGeodeticSurfaceNormals(t);if(c.exaggeration=r,c.exaggerationRelativeHeight=s,n!==void 0){n._tileToUpdateHeights.push(e);let h=e.customData,A=h.length;for(let g=0;g<A;g++){let m=h[g];m.level=-1}}}};function idt(e,t,n){let i=t.getTileDataAvailable(e.x,e.y,e.level);if(!l(i)&&l(e.parent)){let o=e.parent,r=o.data;l(r)&&l(r.terrainData)&&(i=r.terrainData.isChildAvailable(o.x,o.y,e.x,e.y))}i===!1&&(e.data.terrainState=To.FAILED);for(let o=0,r=n.length;o<r;++o){let s=n.get(o);s.show&&s._createTileImagerySkeletons(e,t)}}function odt(e,t,n,i,o,r){let s=e.data,a=e.parent;if(s.terrainState===To.FAILED&&a!==void 0&&(a.data!==void 0&&a.data.terrainData!==void 0&&a.data.terrainData.canUpsample!==!1||ur.processStateMachine(a,t,n,i,o,r,!0)),s.terrainState===To.FAILED&&rdt(s,e,t,n,e.x,e.y,e.level),s.terrainState===To.UNLOADED&&sdt(s,n,e.x,e.y,e.level),s.terrainState===To.RECEIVED&&cdt(s,t,n,e.x,e.y,e.level),s.terrainState===To.TRANSFORMED&&(ldt(s,t.context,n,e.x,e.y,e.level,r),s.updateExaggeration(e,t,o)),s.terrainState>=To.RECEIVED&&s.waterMaskTexture===void 0&&n.hasWaterMask)if(s.terrainData.waterMask!==void 0)fdt(t.context,s);else{let u=s._findAncestorTileWithTerrainData(e);l(u)&&l(u.data.waterMaskTexture)&&(s.waterMaskTexture=u.data.waterMaskTexture,++s.waterMaskTexture.referenceCount,s._computeWaterMaskTranslationAndScale(e,u,s.waterMaskTranslationAndScale))}}function rdt(e,t,n,i,o,r,s){let a=t.parent;if(!a){t.state=Va.FAILED;return}let c=a.data.terrainData,u=a.x,f=a.y,h=a.level;if(!l(c))return;let A=c.upsample(i.tilingScheme,u,f,h,o,r,s);l(A)&&(e.terrainState=To.RECEIVING,Promise.resolve(A).then(function(g){l(g)&&(e.terrainData=g,e.terrainState=To.RECEIVED)}).catch(function(){e.terrainState=To.FAILED}))}function sdt(e,t,n,i,o){function r(c){if(!l(c)){e.terrainState=To.UNLOADED,e.request=void 0;return}e.terrainData=c,e.terrainState=To.RECEIVED,e.request=void 0}function s(c){if(e.request.state===hi.CANCELLED){e.terrainData=void 0,e.terrainState=To.UNLOADED,e.request=void 0;return}e.terrainState=To.FAILED,e.request=void 0;let u=`Failed to obtain terrain tile X: ${n} Y: ${i} Level: ${o}. Error message: "${c}"`;t._requestError=zo.reportError(t._requestError,t,t.errorEvent,u,n,i,o),t._requestError.retry&&a()}function a(){let c=new pr({throttle:!1,throttleByServer:!0,type:Us.TERRAIN});e.request=c;let u=t.requestTileGeometry(n,i,o,c);l(u)?(e.terrainState=To.RECEIVING,Promise.resolve(u).then(function(f){r(f)}).catch(function(f){s(f)})):(e.terrainState=To.UNLOADED,e.request=void 0)}a()}var adt={tilingScheme:void 0,x:0,y:0,level:0,exaggeration:1,exaggerationRelativeHeight:0,throttle:!0};function cdt(e,t,n,i,o,r){let s=n.tilingScheme,a=adt;a.tilingScheme=s,a.x=i,a.y=o,a.level=r,a.exaggeration=t.verticalExaggeration,a.exaggerationRelativeHeight=t.verticalExaggerationRelativeHeight,a.throttle=!0;let u=e.terrainData.createMesh(a);l(u)&&(e.terrainState=To.TRANSFORMING,Promise.resolve(u).then(function(f){e.mesh=f,e.terrainState=To.TRANSFORMED}).catch(function(){e.terrainState=To.FAILED}))}ur._createVertexArrayForMesh=function(e,t){let n=t.vertices,i=Et.createVertexBuffer({context:e,typedArray:n,usage:Qe.STATIC_DRAW}),o=t.encoding.getAttributes(i),r=t.indices.indexBuffers||{},s=r[e.id];if(!l(s)||s.isDestroyed()){let a=t.indices;s=Et.createIndexBuffer({context:e,typedArray:a,usage:Qe.STATIC_DRAW,indexDatatype:Fe.fromSizeInBytes(a.BYTES_PER_ELEMENT)}),s.vertexArrayDestroyable=!1,s.referenceCount=1,r[e.id]=s,t.indices.indexBuffers=r}else++s.referenceCount;return new li({context:e,attributes:o,indexBuffer:s})};ur._freeVertexArray=function(e){if(l(e)){let t=e.indexBuffer;e.isDestroyed()||e.destroy(),l(t)&&!t.isDestroyed()&&l(t.referenceCount)&&(--t.referenceCount,t.referenceCount===0&&t.destroy())}};function ldt(e,t,n,i,o,r,s){e.vertexArray=ur._createVertexArrayForMesh(t,e.mesh),e.terrainState=To.READY,e.fill=e.fill&&e.fill.destroy(s)}function udt(e){let t=e.cache.tile_waterMaskData;if(!l(t)){let n=Nt.create({context:e,pixelFormat:et.LUMINANCE,pixelDatatype:He.UNSIGNED_BYTE,source:{arrayBufferView:new Uint8Array([255]),width:1,height:1}});n.referenceCount=1;let i=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:pi.LINEAR});t={allWaterTexture:n,sampler:i,destroy:function(){this.allWaterTexture.destroy()}},e.cache.tile_waterMaskData=t}return t}function fdt(e,t){let n=t.terrainData.waterMask,i=udt(e),o,r=n.length;if(r===1)if(n[0]!==0)o=i.allWaterTexture;else return;else{let s=Math.sqrt(r);o=Nt.create({context:e,pixelFormat:et.LUMINANCE,pixelDatatype:He.UNSIGNED_BYTE,source:{width:s,height:s,arrayBufferView:n},sampler:i.sampler,flipY:!1}),o.referenceCount=0}++o.referenceCount,t.waterMaskTexture=o,se.fromElements(0,0,1,1,t.waterMaskTranslationAndScale)}ur.prototype._findAncestorTileWithTerrainData=function(e){let t=e.parent;for(;l(t)&&(!l(t.data)||!l(t.data.terrainData)||t.data.terrainData.wasCreatedByUpsampling());)t=t.parent;return t};ur.prototype._computeWaterMaskTranslationAndScale=function(e,t,n){let i=t.rectangle,o=e.rectangle,r=o.width,s=o.height,a=r/i.width,c=s/i.height;return n.x=a*(o.west-i.west)/r,n.y=c*(o.south-i.south)/s,n.z=a,n.w=c,n};var Rh=ur;var ddt={WEST:0,NORTH:1,EAST:2,SOUTH:3,NORTHWEST:4,NORTHEAST:5,SOUTHWEST:6,SOUTHEAST:7},Sn=ddt;var aCe={NONE:0,CULLED:1,RENDERED:2,REFINED:3,RENDERED_AND_KICKED:6,REFINED_AND_KICKED:7,CULLED_BUT_NEEDED:9,wasKicked:function(e){return e>=aCe.RENDERED_AND_KICKED},originalResult:function(e){return e&3},kick:function(e){return e|4}},ai=aCe;function LT(e){this.tile=e,this.frameLastUpdated=void 0,this.westMeshes=[],this.westTiles=[],this.southMeshes=[],this.southTiles=[],this.eastMeshes=[],this.eastTiles=[],this.northMeshes=[],this.northTiles=[],this.southwestMesh=void 0,this.southwestTile=void 0,this.southeastMesh=void 0,this.southeastTile=void 0,this.northwestMesh=void 0,this.northwestTile=void 0,this.northeastMesh=void 0,this.northeastTile=void 0,this.changedThisFrame=!0,this.visitedFrame=void 0,this.enqueuedFrame=void 0,this.mesh=void 0,this.vertexArray=void 0,this.waterMaskTexture=void 0,this.waterMaskTranslationAndScale=new se}LT.prototype.update=function(e,t,n){this.changedThisFrame&&(mCe(e,t,this.tile,n),this.changedThisFrame=!1)};LT.prototype.destroy=function(e){this._destroyVertexArray(e),l(this.waterMaskTexture)&&(--this.waterMaskTexture.referenceCount,this.waterMaskTexture.referenceCount===0&&this.waterMaskTexture.destroy(),this.waterMaskTexture=void 0)};LT.prototype._destroyVertexArray=function(e){l(this.vertexArray)&&(l(e)?e.push(this.vertexArray):Rh._freeVertexArray(this.vertexArray),this.vertexArray=void 0)};var hdt=new HC;LT.updateFillTiles=function(e,t,n,i){let o=e._quadtree,r=o._levelZeroTiles,s=o._lastSelectionFrameNumber,a=hdt;a.clear();for(let u=0;u<t.length;++u){let f=t[u];l(f.data.vertexArray)&&a.enqueue(t[u])}let c=a.dequeue();for(;c!==void 0;){let u=c.findTileToWest(r),f=c.findTileToSouth(r),h=c.findTileToEast(r),A=c.findTileToNorth(r);Zs(e,n,c,u,s,Sn.EAST,!1,a,i),Zs(e,n,c,f,s,Sn.NORTH,!1,a,i),Zs(e,n,c,h,s,Sn.WEST,!1,a,i),Zs(e,n,c,A,s,Sn.SOUTH,!1,a,i);let g=u.findTileToNorth(r),m=u.findTileToSouth(r),_=h.findTileToNorth(r),y=h.findTileToSouth(r);Zs(e,n,c,g,s,Sn.SOUTHEAST,!1,a,i),Zs(e,n,c,_,s,Sn.SOUTHWEST,!1,a,i),Zs(e,n,c,m,s,Sn.NORTHEAST,!1,a,i),Zs(e,n,c,y,s,Sn.NORTHWEST,!1,a,i),c=a.dequeue()}};function Zs(e,t,n,i,o,r,s,a,c){if(i===void 0)return;let u=i;for(;u&&(u._lastSelectionResultFrame!==o||ai.wasKicked(u._lastSelectionResult)||ai.originalResult(u._lastSelectionResult)===ai.CULLED);){if(s)return;let f=u.parent;if(r>=Sn.NORTHWEST&&f!==void 0)switch(r){case Sn.NORTHWEST:u=u===f.northwestChild?f:void 0;break;case Sn.NORTHEAST:u=u===f.northeastChild?f:void 0;break;case Sn.SOUTHWEST:u=u===f.southwestChild?f:void 0;break;case Sn.SOUTHEAST:u=u===f.southeastChild?f:void 0;break}else u=f}if(u!==void 0){if(u._lastSelectionResult===ai.RENDERED){if(l(u.data.vertexArray))return;mdt(e,t,n,u,r,o,a,c);return}if(ai.originalResult(i._lastSelectionResult)!==ai.CULLED)switch(r){case Sn.WEST:Zs(e,t,n,i.northwestChild,o,r,!0,a,c),Zs(e,t,n,i.southwestChild,o,r,!0,a,c);break;case Sn.EAST:Zs(e,t,n,i.southeastChild,o,r,!0,a,c),Zs(e,t,n,i.northeastChild,o,r,!0,a,c);break;case Sn.SOUTH:Zs(e,t,n,i.southwestChild,o,r,!0,a,c),Zs(e,t,n,i.southeastChild,o,r,!0,a,c);break;case Sn.NORTH:Zs(e,t,n,i.northeastChild,o,r,!0,a,c),Zs(e,t,n,i.northwestChild,o,r,!0,a,c);break;case Sn.NORTHWEST:Zs(e,t,n,i.northwestChild,o,r,!0,a,c);break;case Sn.NORTHEAST:Zs(e,t,n,i.northeastChild,o,r,!0,a,c);break;case Sn.SOUTHWEST:Zs(e,t,n,i.southwestChild,o,r,!0,a,c);break;case Sn.SOUTHEAST:Zs(e,t,n,i.southeastChild,o,r,!0,a,c);break;default:throw new me("Invalid edge")}}}function mdt(e,t,n,i,o,r,s,a){let c=i.data;if(c.fill===void 0)c.fill=new LT(i);else if(c.fill.visitedFrame===r)return;c.fill.enqueuedFrame!==r&&(c.fill.enqueuedFrame=r,c.fill.changedThisFrame=!1,s.enqueue(i)),Adt(e,t,n,i,o,a)}function Adt(e,t,n,i,o,r){let s=i.data.fill,a,c=n.data.fill;l(c)?(c.visitedFrame=t.frameNumber,c.changedThisFrame&&(mCe(e,t,n,r),c.changedThisFrame=!1),a=n.data.fill.mesh):a=n.data.mesh;let u,f;switch(o){case Sn.WEST:u=s.westMeshes,f=s.westTiles;break;case Sn.SOUTH:u=s.southMeshes,f=s.southTiles;break;case Sn.EAST:u=s.eastMeshes,f=s.eastTiles;break;case Sn.NORTH:u=s.northMeshes,f=s.northTiles;break;case Sn.NORTHWEST:s.changedThisFrame=s.changedThisFrame||s.northwestMesh!==a,s.northwestMesh=a,s.northwestTile=n;return;case Sn.NORTHEAST:s.changedThisFrame=s.changedThisFrame||s.northeastMesh!==a,s.northeastMesh=a,s.northeastTile=n;return;case Sn.SOUTHWEST:s.changedThisFrame=s.changedThisFrame||s.southwestMesh!==a,s.southwestMesh=a,s.southwestTile=n;return;case Sn.SOUTHEAST:s.changedThisFrame=s.changedThisFrame||s.southeastMesh!==a,s.southeastMesh=a,s.southeastTile=n;return}if(n.level<=i.level){s.changedThisFrame=s.changedThisFrame||u[0]!==a||u.length!==1,u[0]=a,f[0]=n,u.length=1,f.length=1;return}let h,A,g,m,_=n.rectangle,y,C=i.rectangle;switch(o){case Sn.WEST:for(y=(C.north-C.south)*D.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!D.greaterThan(_.north,m.south,y));++h);for(A=h;A<f.length&&(g=f[A],m=g.rectangle,!D.greaterThanOrEquals(_.south,m.north,y));++A);break;case Sn.SOUTH:for(y=(C.east-C.west)*D.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!D.lessThan(_.west,m.east,y));++h);for(A=h;A<f.length&&(g=f[A],m=g.rectangle,!D.lessThanOrEquals(_.east,m.west,y));++A);break;case Sn.EAST:for(y=(C.north-C.south)*D.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!D.lessThan(_.south,m.north,y));++h);for(A=h;A<f.length&&(g=f[A],m=g.rectangle,!D.lessThanOrEquals(_.north,m.south,y));++A);break;case Sn.NORTH:for(y=(C.east-C.west)*D.EPSILON5,h=0;h<f.length&&(g=f[h],m=g.rectangle,!D.greaterThan(_.east,m.west,y));++h);for(A=h;A<f.length&&(g=f[A],m=g.rectangle,!D.greaterThanOrEquals(_.west,m.east,y));++A);break}A-h===1?(s.changedThisFrame=s.changedThisFrame||u[h]!==a,u[h]=a,f[h]=n):(s.changedThisFrame=!0,u.splice(h,A-h,a),f.splice(h,A-h,n))}var n0=new Ae,pdt=new Ae,NT=new d,hX=new d,uX=new k,fX=new k,Zu=new k;function Fz(){this.height=0,this.encodedNormal=new k}function Pz(e,t,n,i,o,r,s,a,c){if(l(o))return o;let u;if(l(r)&&l(s))u=(r.height+s.height)*.5;else if(l(r))u=r.height;else if(l(s))u=s.height;else if(l(a))u=a.height;else{let h=e.tile.data.tileBoundingRegion,A=0,g=0;l(h)&&(A=h.minimumHeight,g=h.maximumHeight),u=(A+g)*.5}return ACe(e,t,n,i,u,c),c}var gdt={minimumHeight:0,maximumHeight:0},_dt=new d,cCe=new Fz,lCe=new Fz,uCe=new Fz,fCe=new Fz,ydt=typeof Uint8Array<"u"?new Uint8Array(81):void 0,Cdt={tilingScheme:void 0,x:0,y:0,level:0,exaggeration:1,exaggerationRelativeHeight:0};function mCe(e,t,n,i){Rh.initialize(n,e.terrainProvider,e._imageryLayers);let o=n.data,r=o.fill,s=n.rectangle,a=t.verticalExaggeration,c=t.verticalExaggerationRelativeHeight,u=a!==1,f=n.tilingScheme.ellipsoid,h=Mz(r,f,0,1,r.northwestTile,r.northwestMesh,r.northTiles,r.northMeshes,r.westTiles,r.westMeshes,uCe),A=Mz(r,f,0,0,r.southwestTile,r.southwestMesh,r.westTiles,r.westMeshes,r.southTiles,r.southMeshes,cCe),g=Mz(r,f,1,0,r.southeastTile,r.southeastMesh,r.southTiles,r.southMeshes,r.eastTiles,r.eastMeshes,lCe),m=Mz(r,f,1,1,r.northeastTile,r.northeastMesh,r.eastTiles,r.eastMeshes,r.northTiles,r.northMeshes,fCe);h=Pz(r,f,0,1,h,A,m,g,uCe),A=Pz(r,f,0,0,A,h,g,m,cCe),g=Pz(r,f,1,1,g,A,m,h,lCe),m=Pz(r,f,1,1,m,g,h,A,fCe);let _=A.height,y=g.height,C=h.height,E=m.height,I=Math.min(_,y,C,E),b=Math.max(_,y,C,E),S=(I+b)*.5,B,v,P=e.getLevelMaximumGeometricError(n.level),N=f.maximumRadius-P,L=Math.acos(N/f.maximumRadius)*4;if(L*=1.5,s.width>L&&b-I<=P){let T=new Qc({width:9,height:9,buffer:ydt,structure:{heightOffset:b}}),w=Cdt;w.tilingScheme=n.tilingScheme,w.x=n.x,w.y=n.y,w.level=n.level,w.exaggeration=a,w.exaggerationRelativeHeight=c,r.mesh=T._createMeshSync(w)}else{let T=u,w=ae.center(s,pdt);w.height=S;let M=f.cartographicToCartesian(w,_dt),O=new Il(M,void 0,void 0,void 0,void 0,!0,!0,T,a,c),U=5,Q;for(Q=r.westMeshes,B=0,v=Q.length;B<v;++B)U+=Q[B].eastIndicesNorthToSouth.length;for(Q=r.southMeshes,B=0,v=Q.length;B<v;++B)U+=Q[B].northIndicesWestToEast.length;for(Q=r.eastMeshes,B=0,v=Q.length;B<v;++B)U+=Q[B].westIndicesSouthToNorth.length;for(Q=r.northMeshes,B=0,v=Q.length;B<v;++B)U+=Q[B].southIndicesEastToWest.length;let z=gdt;z.minimumHeight=I,z.maximumHeight=b;let F=O.stride,H=new Float32Array(U*F),W=0,Z=W;W=Rz(f,s,O,H,W,0,1,h.height,h.encodedNormal,1,z),W=Lz(r,f,O,H,W,r.westTiles,r.westMeshes,Sn.EAST,z);let Y=W;W=Rz(f,s,O,H,W,0,0,A.height,A.encodedNormal,0,z),W=Lz(r,f,O,H,W,r.southTiles,r.southMeshes,Sn.NORTH,z);let $=W;W=Rz(f,s,O,H,W,1,0,g.height,g.encodedNormal,0,z),W=Lz(r,f,O,H,W,r.eastTiles,r.eastMeshes,Sn.WEST,z);let X=W;W=Rz(f,s,O,H,W,1,1,m.height,m.encodedNormal,1,z),W=Lz(r,f,O,H,W,r.northTiles,r.northMeshes,Sn.SOUTH,z),I=z.minimumHeight,b=z.maximumHeight;let he=Qn.fromRectangle(s,I,b,n.tilingScheme.ellipsoid),ge=Yi.geodeticLatitudeToMercatorAngle(s.south),fe=1/(Yi.geodeticLatitudeToMercatorAngle(s.north)-ge),ye=(Yi.geodeticLatitudeToMercatorAngle(w.latitude)-ge)*fe,Ie=f.geodeticSurfaceNormalCartographic(n0,hX),ve=Fn.octEncode(Ie,uX),Te=W;O.encode(H,W*F,he.center,k.fromElements(.5,.5,Zu),S,ve,ye,Ie),++W;let ke=W,Ge=ke<256?1:2,qe=(ke-1)*3,tt=qe*Ge,$t=(H.length-ke*F)*Float32Array.BYTES_PER_ELEMENT,it;if($t>=tt){let Ot=ke*F*Float32Array.BYTES_PER_ELEMENT;it=ke<256?new Uint8Array(H.buffer,Ot,qe):new Uint16Array(H.buffer,Ot,qe)}else it=ke<256?new Uint8Array(qe):new Uint16Array(qe);H=new Float32Array(H.buffer,0,ke*F);let tn=0;for(B=0;B<ke-2;++B)it[tn++]=Te,it[tn++]=B,it[tn++]=B+1;it[tn++]=Te,it[tn++]=B,it[tn++]=0;let Wt=[];for(B=Y;B>=Z;--B)Wt.push(B);let vt=[];for(B=$;B>=Y;--B)vt.push(B);let bi=[];for(B=X;B>=$;--B)bi.push(B);let di=[];for(di.push(0),B=Te-1;B>=X;--B)di.push(B);r.mesh=new Ph(O.center,H,it,qe,ke,I,b,le.fromOrientedBoundingBox(he),wdt(e,he.center,s,I,b),O.stride,he,O,Wt,vt,bi,di)}let p=t.context;r._destroyVertexArray(i),r.vertexArray=Rh._createVertexArrayForMesh(p,r.mesh),o.processImagery(n,e.terrainProvider,t,!0);let x=r.waterMaskTexture;if(r.waterMaskTexture=void 0,e.terrainProvider.hasWaterMask){let T=o._findAncestorTileWithTerrainData(n);l(T)&&l(T.data.waterMaskTexture)&&(r.waterMaskTexture=T.data.waterMaskTexture,++r.waterMaskTexture.referenceCount,o._computeWaterMaskTranslationAndScale(n,T,r.waterMaskTranslationAndScale))}l(x)&&(--x.referenceCount,x.referenceCount===0&&x.destroy())}function Rz(e,t,n,i,o,r,s,a,c,u,f){let h=n0;h.longitude=D.lerp(t.west,t.east,r),h.latitude=D.lerp(t.south,t.north,s),h.height=a;let A=e.cartographicToCartesian(h,NT),g;n.hasGeodeticSurfaceNormals&&(g=e.geodeticSurfaceNormal(A,hX));let m=fX;return m.x=r,m.y=s,n.encode(i,o*n.stride,A,m,a,c,u,g),f.minimumHeight=Math.min(f.minimumHeight,a),f.maximumHeight=Math.max(f.maximumHeight,a),o+1}var Oz=new ae;function iP(e,t,n,i){let o=e.rectangle,r=t.rectangle;t.x===0&&n.x===1&&e.x===e.tilingScheme.getNumberOfXTilesAtLevel(e.level)-1?(o=ae.clone(e.rectangle,Oz),o.west-=D.TWO_PI,o.east-=D.TWO_PI):e.x===0&&n.x===0&&t.x===t.tilingScheme.getNumberOfXTilesAtLevel(t.level)-1&&(o=ae.clone(e.rectangle,Oz),o.west+=D.TWO_PI,o.east+=D.TWO_PI);let s=o.east-o.west,a=(r.west-o.west)/s,c=(r.east-o.west)/s,u=o.north-o.south,f=(r.south-o.south)/u,h=(r.north-o.south)/u,A=(n.x-a)/(c-a),g=(n.y-f)/(h-f);return Math.abs(A)<Math.EPSILON5?A=0:Math.abs(A-1)<Math.EPSILON5&&(A=1),Math.abs(g)<Math.EPSILON5?g=0:Math.abs(g-1)<Math.EPSILON5&&(g=1),i.x=A,i.y=g,i}var Edt=new k;function dX(e,t,n,i,o){let r=e.encoding,s=e.vertices;if(o.height=r.decodeHeight(s,t),r.hasVertexNormals)r.getOctEncodedNormal(s,t,o.encodedNormal);else{let a=o.encodedNormal;a.x=0,a.y=0}}var Idt=new k,xdt=new d;function bdt(e,t,n,i,o,r,s,a,c,u){let f=i.encoding,h=i.vertices,A=iP(t,n,f.decodeTextureCoordinates(h,o,Zu),Zu),g=iP(t,n,f.decodeTextureCoordinates(h,r,fX),fX),m;c?m=(s-A.x)/(g.x-A.x):m=(a-A.y)/(g.y-A.y);let _=f.decodeHeight(h,o),y=f.decodeHeight(h,r),C=n.rectangle;n0.longitude=D.lerp(C.west,C.east,s),n0.latitude=D.lerp(C.south,C.north,a),u.height=n0.height=D.lerp(_,y,m);let E;if(f.hasVertexNormals){let I=f.getOctEncodedNormal(h,o,Edt),b=f.getOctEncodedNormal(h,r,Idt),S=Fn.octDecode(I.x,I.y,NT),B=Fn.octDecode(b.x,b.y,xdt);E=d.lerp(S,B,m,NT),d.normalize(E,E),Fn.octEncode(E,u.encodedNormal)}else E=e.geodeticSurfaceNormalCartographic(n0,NT),Fn.octEncode(E,u.encodedNormal)}function ACe(e,t,n,i,o,r){r.height=o;let s=t.geodeticSurfaceNormalCartographic(n0,NT);Fn.octEncode(s,r.encodedNormal)}function Mz(e,t,n,i,o,r,s,a,c,u,f){if(hCe(e,t,a,s,!1,n,i,f)||hCe(e,t,u,c,!0,n,i,f))return f;let A;if(mX(o,r))return n===0?i===0?A=r.eastIndicesNorthToSouth[0]:A=r.southIndicesEastToWest[0]:i===0?A=r.northIndicesWestToEast[0]:A=r.westIndicesSouthToNorth[0],dX(r,A,n,i,f),f;let g;if(n===0?i===0?g=Nz(e.westMeshes,e.westTiles,Sn.EAST,e.southMeshes,e.southTiles,Sn.NORTH,n,i):g=Nz(e.northMeshes,e.northTiles,Sn.SOUTH,e.westMeshes,e.westTiles,Sn.EAST,n,i):i===0?g=Nz(e.southMeshes,e.southTiles,Sn.NORTH,e.eastMeshes,e.eastTiles,Sn.WEST,n,i):g=Nz(e.eastMeshes,e.eastTiles,Sn.WEST,e.northMeshes,e.northTiles,Sn.SOUTH,n,i),l(g))return ACe(e,t,n,i,g,f),f}function Nz(e,t,n,i,o,r,s,a){let c=dCe(e,t,!1,n,s,a),u=dCe(i,o,!0,r,s,a);return l(c)&&l(u)?(c+u)*.5:l(c)?c:u}function Lz(e,t,n,i,o,r,s,a,c){for(let u=0;u<r.length;++u)o=Tdt(e,t,n,i,o,r[u],s[u],a,c);return o}function Tdt(e,t,n,i,o,r,s,a,c){let u=r.rectangle;a===Sn.EAST&&e.tile.x===0?(u=ae.clone(r.rectangle,Oz),u.west-=D.TWO_PI,u.east-=D.TWO_PI):a===Sn.WEST&&r.x===0&&(u=ae.clone(r.rectangle,Oz),u.west+=D.TWO_PI,u.east+=D.TWO_PI);let f=e.tile.rectangle,h,A;o>0&&(n.decodeTextureCoordinates(i,o-1,Zu),h=Zu.x,A=Zu.y);let g,m;switch(a){case Sn.WEST:g=s.westIndicesSouthToNorth,m=!1;break;case Sn.NORTH:g=s.northIndicesWestToEast,m=!0;break;case Sn.EAST:g=s.eastIndicesNorthToSouth,m=!1;break;case Sn.SOUTH:g=s.southIndicesEastToWest,m=!0;break}let _=r,y=e.tile,C=s.encoding,E=s.vertices,I=n.stride,b,S;C.hasWebMercatorT&&(b=Yi.geodeticLatitudeToMercatorAngle(f.south),S=1/(Yi.geodeticLatitudeToMercatorAngle(f.north)-b));for(let B=0;B<g.length;++B){let v=g[B],P=C.decodeTextureCoordinates(E,v,Zu);iP(_,y,P,P);let N=P.x,L=P.y,p=m?N:L;if(p<0||p>1||Math.abs(N-h)<D.EPSILON5&&Math.abs(L-A)<D.EPSILON5)continue;let x=Math.abs(N)<D.EPSILON5||Math.abs(N-1)<D.EPSILON5,T=Math.abs(L)<D.EPSILON5||Math.abs(L-1)<D.EPSILON5;if(x&&T)continue;let w=C.decodePosition(E,v,NT),M=C.decodeHeight(E,v),O;C.hasVertexNormals?O=C.getOctEncodedNormal(E,v,uX):(O=uX,O.x=0,O.y=0);let U=L;if(C.hasWebMercatorT){let z=D.lerp(f.south,f.north,L);U=(Yi.geodeticLatitudeToMercatorAngle(z)-b)*S}let Q;n.hasGeodeticSurfaceNormals&&(Q=t.geodeticSurfaceNormal(w,hX)),n.encode(i,o*I,w,P,M,O,U,Q),c.minimumHeight=Math.min(c.minimumHeight,M),c.maximumHeight=Math.max(c.maximumHeight,M),++o}return o}function dCe(e,t,n,i,o,r){let s,a,c;n?(s=0,a=e.length,c=1):(s=e.length-1,a=-1,c=-1);for(let u=s;u!==a;u+=c){let f=e[u],h=t[u];if(!mX(h,f))continue;let A;switch(i){case Sn.WEST:A=f.westIndicesSouthToNorth;break;case Sn.SOUTH:A=f.southIndicesEastToWest;break;case Sn.EAST:A=f.eastIndicesNorthToSouth;break;case Sn.NORTH:A=f.northIndicesWestToEast;break}let g=A[n?0:A.length-1];if(l(g))return f.encoding.decodeHeight(f.vertices,g)}}function mX(e,t){return l(t)&&(!l(e.data.fill)||!e.data.fill.changedThisFrame)}function hCe(e,t,n,i,o,r,s,a){let c,u,f,h,A,g=i[o?0:n.length-1],m=n[o?0:n.length-1];if(mX(g,m)&&(r===0?s===0?(c=o?m.northIndicesWestToEast:m.eastIndicesNorthToSouth,u=o,f=o):(c=o?m.eastIndicesNorthToSouth:m.southIndicesEastToWest,u=!o,f=!1):s===0?(c=o?m.westIndicesSouthToNorth:m.northIndicesWestToEast,u=!o,f=!0):(c=o?m.southIndicesEastToWest:m.westIndicesSouthToNorth,u=o,f=!o),c.length>0)){h=o?0:c.length-1,A=c[h],m.encoding.decodeTextureCoordinates(m.vertices,A,Zu);let _=iP(g,e.tile,Zu,Zu);if(_.x===r&&_.y===s)return dX(m,A,r,s,a),!0;if(h=qo(c,u?r:s,function(y,C){m.encoding.decodeTextureCoordinates(m.vertices,y,Zu);let E=iP(g,e.tile,Zu,Zu);return f?u?E.x-r:E.y-s:u?r-E.x:s-E.y}),h<0){if(h=~h,h>0&&h<c.length)return bdt(t,g,e.tile,m,c[h-1],c[h],r,s,u,a),!0}else return dX(m,c[h],r,s,a),!0}return!1}var Sdt=[new d,new d,new d,new d];function wdt(e,t,n,i,o,r){let s=e.quadtree._occluders.ellipsoid,a=s.ellipsoid,c=Sdt;return d.fromRadians(n.west,n.south,o,a,c[0]),d.fromRadians(n.east,n.south,o,a,c[1]),d.fromRadians(n.west,n.north,o,a,c[2]),d.fromRadians(n.east,n.north,o,a,c[3]),s.computeHorizonCullingPointPossiblyUnderEllipsoid(t,c,i,r)}var oP=LT;function fr(e){this.lightingFadeOutDistance=65e5,this.lightingFadeInDistance=9e6,this.hasWaterMask=!1,this.showWaterEffect=!1,this.oceanNormalMap=void 0,this.zoomedOutOceanSpecularIntensity=.5,this.enableLighting=!1,this.dynamicAtmosphereLighting=!1,this.dynamicAtmosphereLightingFromSun=!1,this.showGroundAtmosphere=!1,this.shadows=Dn.RECEIVE_ONLY,this.vertexShadowDarkness=.3,this.fillHighlightColor=void 0,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this.showSkirts=!0,this.backFaceCulling=!0,this.undergroundColor=void 0,this.undergroundColorAlphaByDistance=void 0,this.lambertDiffuseMultiplier=0,this.materialUniformMap=void 0,this._materialUniformMap=void 0,this._quadtree=void 0,this._terrainProvider=e.terrainProvider,this._imageryLayers=e.imageryLayers,this._surfaceShaderSet=e.surfaceShaderSet,this._renderState=void 0,this._blendRenderState=void 0,this._disableCullingRenderState=void 0,this._disableCullingBlendRenderState=void 0,this._errorEvent=new _e,this._removeLayerAddedListener=this._imageryLayers.layerAdded.addEventListener(fr.prototype._onLayerAdded,this),this._removeLayerRemovedListener=this._imageryLayers.layerRemoved.addEventListener(fr.prototype._onLayerRemoved,this),this._removeLayerMovedListener=this._imageryLayers.layerMoved.addEventListener(fr.prototype._onLayerMoved,this),this._removeLayerShownListener=this._imageryLayers.layerShownOrHidden.addEventListener(fr.prototype._onLayerShownOrHidden,this),this._imageryLayersUpdatedEvent=new _e,this._layerOrderChanged=!1,this._tilesToRenderByTextureCount=[],this._drawCommands=[],this._uniformMaps=[],this._usedDrawCommands=0,this._vertexArraysToDestroy=[],this._debug={wireframe:!1,boundingSphereTile:void 0},this._baseColor=void 0,this._firstPassInitialColor=void 0,this.baseColor=new G(0,0,.5,1),this._clippingPlanes=void 0,this._clippingPolygons=void 0,this.cartographicLimitRectangle=ae.clone(ae.MAX_VALUE),this._hasLoadedTilesThisFrame=!1,this._hasFillTilesThisFrame=!1,this._oldVerticalExaggeration=void 0,this._oldVerticalExaggerationRelativeHeight=void 0}Object.defineProperties(fr.prototype,{baseColor:{get:function(){return this._baseColor},set:function(e){this._baseColor=e,this._firstPassInitialColor=se.fromColor(e,this._firstPassInitialColor)}},quadtree:{get:function(){return this._quadtree},set:function(e){this._quadtree=e}},tilingScheme:{get:function(){if(l(this._terrainProvider))return this._terrainProvider.tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},imageryLayersUpdatedEvent:{get:function(){return this._imageryLayersUpdatedEvent}},terrainProvider:{get:function(){return this._terrainProvider},set:function(e){this._terrainProvider!==e&&(this._terrainProvider=e,l(this._quadtree)&&this._quadtree.invalidateAllTiles())}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Vs.setOwner(e,this,"_clippingPlanes")}},clippingPolygons:{get:function(){return this._clippingPolygons},set:function(e){xm.setOwner(e,this,"_clippingPolygons")}}});function Bdt(e,t){let n=e.loadingImagery;l(n)||(n=e.readyImagery);let i=t.loadingImagery;return l(i)||(i=t.readyImagery),n.imageryLayer._layerIndex-i.imageryLayer._layerIndex}fr.prototype.update=function(e){this._imageryLayers._update()};function Ddt(e,t){let n=t.creditDisplay,i=e._terrainProvider;l(i)&&l(i.credit)&&n.addCreditToNextFrame(i.credit);let o=e._imageryLayers;for(let r=0,s=o.length;r<s;++r){let a=o.get(r);a.ready&&a.show&&l(a.imageryProvider.credit)&&n.addCreditToNextFrame(a.imageryProvider.credit)}}fr.prototype.initialize=function(e){this._imageryLayers.queueReprojectionCommands(e),this._layerOrderChanged&&(this._layerOrderChanged=!1,this._quadtree.forEachLoadedTile(function(i){i.data.imagery.sort(Bdt)})),Ddt(this,e);let t=this._vertexArraysToDestroy,n=t.length;for(let i=0;i<n;++i)Rh._freeVertexArray(t[i]);t.length=0};fr.prototype.beginUpdate=function(e){let t=this._tilesToRenderByTextureCount;for(let o=0,r=t.length;o<r;++o){let s=t[o];l(s)&&(s.length=0)}let n=this._clippingPlanes;l(n)&&n.enabled&&n.update(e);let i=this._clippingPolygons;l(i)&&i.enabled&&(i.update(e),i.queueCommands(e)),this._usedDrawCommands=0,this._hasLoadedTilesThisFrame=!1,this._hasFillTilesThisFrame=!1};fr.prototype.endUpdate=function(e){if(!l(this._renderState)){this._renderState=Ue.fromCache({cull:{enabled:!0},depthTest:{enabled:!0,func:Ja.LESS}}),this._blendRenderState=Ue.fromCache({cull:{enabled:!0},depthTest:{enabled:!0,func:Ja.LESS_OR_EQUAL},blending:pn.ALPHA_BLEND});let s=ze(this._renderState,!0);s.cull.enabled=!1,this._disableCullingRenderState=Ue.fromCache(s),s=ze(this._blendRenderState,!0),s.cull.enabled=!1,this._disableCullingBlendRenderState=Ue.fromCache(s)}this._hasFillTilesThisFrame&&this._hasLoadedTilesThisFrame&&oP.updateFillTiles(this,this._quadtree._tilesToRender,e,this._vertexArraysToDestroy);let t=this.quadtree,n=e.verticalExaggeration,i=e.verticalExaggerationRelativeHeight,o=this._oldVerticalExaggeration!==n||this._oldVerticalExaggerationRelativeHeight!==i;this._oldVerticalExaggeration=n,this._oldVerticalExaggerationRelativeHeight=i,o&&t.forEachLoadedTile(function(s){s.data.updateExaggeration(s,e,t)});let r=this._tilesToRenderByTextureCount;for(let s=0,a=r.length;s<a;++s){let c=r[s];if(l(c))for(let u=0,f=c.length;u<f;++u){let h=c[u],A=h.data.tileBoundingRegion;$dt(this,h,e),e.minimumTerrainHeight=Math.min(e.minimumTerrainHeight,A.minimumHeight)}}};function CCe(e,t){let n=t.globeTranslucencyState;if(n.translucent){let i=e.renderState.blending.enabled;n.pushDerivedCommands(e,i,t)}else t.commandList.push(e)}fr.prototype.updateForPick=function(e){let t=this._drawCommands;for(let n=0,i=this._usedDrawCommands;n<i;++n)CCe(t[n],e)};fr.prototype.cancelReprojections=function(){this._imageryLayers.cancelReprojections()};fr.prototype.getLevelMaximumGeometricError=function(e){return l(this._terrainProvider)?this._terrainProvider.getLevelMaximumGeometricError(e):0};fr.prototype.loadTile=function(e,t){let n=t.data,i=!0,o;l(n)&&(i=n.boundingVolumeSourceTile!==t||t._lastSelectionResult===ai.CULLED_BUT_NEEDED,o=n.terrainState),Rh.processStateMachine(t,e,this.terrainProvider,this._imageryLayers,this.quadtree,this._vertexArraysToDestroy,i),n=t.data,i&&o!==t.data.terrainState&&this.computeTileVisibility(t,e,this.quadtree.occluders)!==Gr.NONE&&n.boundingVolumeSourceTile===t&&(i=!1,Rh.processStateMachine(t,e,this.terrainProvider,this._imageryLayers,this.quadtree,this._vertexArraysToDestroy,i))};var vdt=new le,ECe=new ae,Pdt=new ae,Rdt=new Ae;function kz(e,t){if(t.west<t.east)return t;let n=ae.clone(t,Pdt);return ae.center(e,Rdt).longitude>0?n.east=D.PI:n.west=-D.PI,n}function ICe(e,t){if(t.cameraUnderground||t.globeTranslucencyState.translucent)return!0;if(e.backFaceCulling)return!1;let n=e._clippingPlanes;if(l(n)&&n.enabled)return!0;let i=e._clippingPolygons;return!!(l(i)&&i.enabled||!ae.equals(e.cartographicLimitRectangle,ae.MAX_VALUE))}fr.prototype.computeTileVisibility=function(e,t,n){let i=this.computeDistanceToTile(e,t);e._distance=i;let o=ICe(this,t);if(t.fog.enabled&&!o&&D.fog(i,t.fog.density)>=1)return Gr.NONE;let r=e.data,s=r.tileBoundingRegion;if(r.boundingVolumeSourceTile===void 0)return Gr.PARTIAL;let a=t.cullingVolume,c=s.boundingVolume;l(c)||(c=s.boundingSphere),r.clippedByBoundaries=!1;let u=kz(e.rectangle,this.cartographicLimitRectangle),f=ae.simpleIntersection(u,e.rectangle,ECe);if(!l(f))return Gr.NONE;if(ae.equals(f,e.rectangle)||(r.clippedByBoundaries=!0),t.mode!==ie.SCENE3D&&(c=vdt,le.fromRectangleWithHeights2D(e.rectangle,t.mapProjection,s.minimumHeight,s.maximumHeight,c),d.fromElements(c.center.z,c.center.x,c.center.y,c.center),t.mode===ie.MORPHING&&l(r.renderedMesh)&&(c=le.union(s.boundingSphere,c,c))),!l(c))return Gr.PARTIAL;let h=this._clippingPlanes;if(l(h)&&h.enabled){let y=h.computeIntersectionWithBoundingVolume(c);if(e.isClipped=y!==nn.INSIDE,y===nn.OUTSIDE)return Gr.NONE}let A=this._clippingPolygons;if(l(A)&&A.enabled){let y=A.computeIntersectionWithBoundingVolume(s);e.isClipped=y!==nn.OUTSIDE}let g,m=a.computeVisibility(c);if(m===nn.OUTSIDE?g=Gr.NONE:m===nn.INTERSECTING?g=Gr.PARTIAL:m===nn.INSIDE&&(g=Gr.FULL),g===Gr.NONE)return g;let _=t.mode===ie.SCENE3D&&t.camera.frustum instanceof An;if(t.mode===ie.SCENE3D&&!_&&l(n)&&!o){let y=r.occludeePointInScaledSpace;return!l(y)||n.ellipsoid.isScaledSpacePointVisiblePossiblyUnderEllipsoid(y,s.minimumHeight)?g:Gr.NONE}return g};fr.prototype.canRefine=function(e){return l(e.data.terrainData)?!0:this.terrainProvider.getTileDataAvailable(e.x*2,e.y*2,e.level+1)!==void 0};var Mdt=[],Ndt=[];fr.prototype.canRenderWithoutLosingDetail=function(e,t){let n=e.data,i=Mdt;i.length=this._imageryLayers.length;let o=!1,r=!1,s;l(n)&&(o=n.terrainState===To.READY,r=!0,s=n.imagery);let a,c;for(a=0,c=i.length;a<c;++a)i[a]=r;if(l(s))for(a=0,c=s.length;a<c;++a){let h=s[a],A=h.loadingImagery,g=!l(A)||A.state===qn.FAILED||A.state===qn.INVALID,m=(h.loadingImagery||h.readyImagery).imageryLayer._layerIndex;i[m]=g&&i[m]}let u=this.quadtree._lastSelectionFrameNumber,f=Ndt;for(f.length=0,f.push(e.southwestChild,e.southeastChild,e.northwestChild,e.northeastChild);f.length>0;){let h=f.pop(),A=h._lastSelectionResultFrame===u?h._lastSelectionResult:ai.NONE;if(A===ai.RENDERED){let g=h.data;if(!l(g))continue;if(!o&&h.data.terrainState===To.READY)return!1;let m=h.data.imagery;for(a=0,c=m.length;a<c;++a){let _=m[a],y=_.loadingImagery,C=!l(y)||y.state===qn.FAILED||y.state===qn.INVALID,E=(_.loadingImagery||_.readyImagery).imageryLayer._layerIndex;if(C&&!i[E])return!1}}else A===ai.REFINED&&f.push(h.southwestChild,h.southeastChild,h.northwestChild,h.northeastChild)}return!0};var Ldt=new d;fr.prototype.computeTileLoadPriority=function(e,t){let n=e.data;if(n===void 0)return 0;let i=n.tileBoundingRegion.boundingVolume;if(i===void 0)return 0;let o=t.camera.positionWC,r=t.camera.directionWC,s=d.subtract(i.center,o,Ldt),a=d.magnitude(s);return a<D.EPSILON5?0:(d.divideByScalar(s,a,s),(1-d.dot(s,r))*e._distance)};var pCe=new R,Qz=new R,Odt=new se,Fdt=new se,Qdt=new se,kdt=new d,gCe=new d,Udt=new d,Gdt=new d;fr.prototype.showTileThisFrame=function(e,t){let n=0,i=e.data.imagery;for(let a=0,c=i.length;a<c;++a){let u=i[a];l(u.readyImagery)&&u.readyImagery.imageryLayer.alpha!==0&&++n}let o=this._tilesToRenderByTextureCount[n];l(o)||(o=[],this._tilesToRenderByTextureCount[n]=o),o.push(e);let r=e.data;l(r.vertexArray)?this._hasLoadedTilesThisFrame=!0:this._hasFillTilesThisFrame=!0;let s=this._debug;++s.tilesRendered,s.texturesRendered+=n};var zdt=[new d,new d,new d,new d];function _Ce(e,t,n,i,o,r){let s=e.quadtree._occluders.ellipsoid,a=s.ellipsoid,c=zdt;return d.fromRadians(n.west,n.south,o,a,c[0]),d.fromRadians(n.east,n.south,o,a,c[1]),d.fromRadians(n.west,n.north,o,a,c[2]),d.fromRadians(n.east,n.north,o,a,c[3]),s.computeHorizonCullingPointPossiblyUnderEllipsoid(t,c,i,r)}fr.prototype.computeDistanceToTile=function(e,t){Vdt(e,this,t);let n=e.data;if(n.boundingVolumeSourceTile===void 0)return 9999999999;let o=n.tileBoundingRegion,r=o.minimumHeight,s=o.maximumHeight;if(n.boundingVolumeSourceTile!==e){let c=t.camera.positionCartographic.height,u=Math.abs(c-r),f=Math.abs(c-s);u>f?(o.minimumHeight=r,o.maximumHeight=r):(o.minimumHeight=s,o.maximumHeight=s)}let a=o.distanceToCamera(t);return o.minimumHeight=r,o.maximumHeight=s,a};function Vdt(e,t,n){let i=e.data;i===void 0&&(i=e.data=new Rh);let o=e.tilingScheme.ellipsoid;i.tileBoundingRegion===void 0&&(i.tileBoundingRegion=new $f({computeBoundingVolumes:!1,rectangle:e.rectangle,ellipsoid:o,minimumHeight:0,maximumHeight:0}));let r=i.tileBoundingRegion,s=r.minimumHeight,a=r.maximumHeight,c=!1,u=e,f=i.mesh,h=i.terrainData;if(f!==void 0&&f.minimumHeight!==void 0&&f.maximumHeight!==void 0)r.minimumHeight=f.minimumHeight,r.maximumHeight=f.maximumHeight,c=!0;else if(h!==void 0&&h._minimumHeight!==void 0&&h._maximumHeight!==void 0)r.minimumHeight=h._minimumHeight,r.maximumHeight=h._maximumHeight;else{r.minimumHeight=Number.NaN,r.maximumHeight=Number.NaN;let A=e.parent;for(;A!==void 0;){let g=A.data;if(g!==void 0){let m=g.mesh,_=g.terrainData;if(m!==void 0&&m.minimumHeight!==void 0&&m.maximumHeight!==void 0){r.minimumHeight=m.minimumHeight,r.maximumHeight=m.maximumHeight;break}else if(_!==void 0&&_._minimumHeight!==void 0&&_._maximumHeight!==void 0){r.minimumHeight=_._minimumHeight,r.maximumHeight=_._maximumHeight;break}}A=A.parent}u=A}if(u!==void 0){let A=n.verticalExaggeration,g=n.verticalExaggerationRelativeHeight;if(A!==1&&(c=!1,r.minimumHeight=Yr.getHeight(r.minimumHeight,A,g),r.maximumHeight=Yr.getHeight(r.maximumHeight,A,g)),c)i.boundingVolumeIsFromMesh||(r._orientedBoundingBox=Qn.clone(f.orientedBoundingBox,r._orientedBoundingBox),r._boundingSphere=le.clone(f.boundingSphere3D,r._boundingSphere),i.occludeePointInScaledSpace=d.clone(f.occludeePointInScaledSpace,i.occludeePointInScaledSpace),l(i.occludeePointInScaledSpace)||(i.occludeePointInScaledSpace=_Ce(t,r._orientedBoundingBox.center,e.rectangle,r.minimumHeight,r.maximumHeight,i.occludeePointInScaledSpace)));else{let _=r._orientedBoundingBox===void 0||r._boundingSphere===void 0;(r.minimumHeight!==s||r.maximumHeight!==a||_)&&(r.computeBoundingVolumes(o),i.occludeePointInScaledSpace=_Ce(t,r._orientedBoundingBox.center,e.rectangle,r.minimumHeight,r.maximumHeight,i.occludeePointInScaledSpace))}i.boundingVolumeSourceTile=u,i.boundingVolumeIsFromMesh=c}else i.boundingVolumeSourceTile=void 0,i.boundingVolumeIsFromMesh=!1}fr.prototype.isDestroyed=function(){return!1};fr.prototype.destroy=function(){return this._tileProvider=this._tileProvider&&this._tileProvider.destroy(),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._clippingPolygons=this._clippingPolygons&&this._clippingPolygons.destroy(),this._removeLayerAddedListener=this._removeLayerAddedListener&&this._removeLayerAddedListener(),this._removeLayerRemovedListener=this._removeLayerRemovedListener&&this._removeLayerRemovedListener(),this._removeLayerMovedListener=this._removeLayerMovedListener&&this._removeLayerMovedListener(),this._removeLayerShownListener=this._removeLayerShownListener&&this._removeLayerShownListener(),ue(this)};function Hdt(e,t,n){return function(i){let o,r,s=-1,a=i.data.imagery,c=a.length,u;for(u=0;u<c;++u)if(o=a[u],r=o.readyImagery??o.loadingImagery,r.imageryLayer===t){s=u;break}if(s!==-1){let f=s+e;if(o=a[f],r=l(o)?o.readyImagery??o.loadingImagery:void 0,!l(r)||r.imageryLayer!==t)return!t._createTileImagerySkeletons(i,n,f);for(u=s;u<f;++u)a[u].freeResources();a.splice(s,e)}return!0}}fr.prototype._onLayerAdded=function(e,t){if(!this.isDestroyed()&&e.show){let n=this._terrainProvider,i=this,o=this._imageryLayersUpdatedEvent,r=function(){e._imageryCache={},i._quadtree.forEachLoadedTile(function(s){if(l(s._loadedCallbacks[e._layerIndex]))return;let a,c=s.data.imagery,u=c.length,f=-1,h=0;for(a=0;a<u;++a){let g=c[a];if((g.readyImagery??g.loadingImagery).imageryLayer===e)f===-1&&(f=a),++h;else if(f!==-1)break}if(f===-1)return;let A=f+h;e._createTileImagerySkeletons(s,n,A)&&(s._loadedCallbacks[e._layerIndex]=Hdt(h,e,n),s.state=Va.LOADING)})};if(e.ready){let s=e.imageryProvider;s._reload=r}this._quadtree.forEachLoadedTile(function(s){e._createTileImagerySkeletons(s,n)&&(s.state=Va.LOADING,s.level!==0&&(s._lastSelectionResultFrame!==i.quadtree._lastSelectionFrameNumber||s._lastSelectionResult!==ai.RENDERED)&&(s.renderable=!1))}),this._layerOrderChanged=!0,o.raiseEvent()}};fr.prototype._onLayerRemoved=function(e,t){this._quadtree.forEachLoadedTile(function(n){let i=n.data.imagery,o=-1,r=0;for(let s=0,a=i.length;s<a;++s){let c=i[s],u=c.loadingImagery;if(l(u)||(u=c.readyImagery),u.imageryLayer===e)o===-1&&(o=s),c.freeResources(),++r;else if(o!==-1)break}o!==-1&&i.splice(o,r)}),l(e.imageryProvider)&&(e.imageryProvider._reload=void 0),this._imageryLayersUpdatedEvent.raiseEvent()};fr.prototype._onLayerMoved=function(e,t,n){this._layerOrderChanged=!0,this._imageryLayersUpdatedEvent.raiseEvent()};fr.prototype._onLayerShownOrHidden=function(e,t,n){n?this._onLayerAdded(e,t):this._onLayerRemoved(e,t)};var Wdt=new R,jdt=new R;function yCe(e,t){let n={u_initialColor:function(){return this.properties.initialColor},u_fillHighlightColor:function(){return this.properties.fillHighlightColor},u_zoomedOutOceanSpecularIntensity:function(){return this.properties.zoomedOutOceanSpecularIntensity},u_oceanNormalMap:function(){return this.properties.oceanNormalMap},u_atmosphereLightIntensity:function(){return this.properties.atmosphereLightIntensity},u_atmosphereRayleighCoefficient:function(){return this.properties.atmosphereRayleighCoefficient},u_atmosphereMieCoefficient:function(){return this.properties.atmosphereMieCoefficient},u_atmosphereRayleighScaleHeight:function(){return this.properties.atmosphereRayleighScaleHeight},u_atmosphereMieScaleHeight:function(){return this.properties.atmosphereMieScaleHeight},u_atmosphereMieAnisotropy:function(){return this.properties.atmosphereMieAnisotropy},u_lightingFadeDistance:function(){return this.properties.lightingFadeDistance},u_nightFadeDistance:function(){return this.properties.nightFadeDistance},u_center3D:function(){return this.properties.center3D},u_verticalExaggerationAndRelativeHeight:function(){return this.properties.verticalExaggerationAndRelativeHeight},u_tileRectangle:function(){return this.properties.tileRectangle},u_modifiedModelView:function(){let i=e.context.uniformState.view,o=R.multiplyByPoint(i,this.properties.rtc,gCe);return R.setTranslation(i,o,pCe),pCe},u_modifiedModelViewProjection:function(){let i=e.context.uniformState.view,o=e.context.uniformState.projection,r=R.multiplyByPoint(i,this.properties.rtc,gCe);return R.setTranslation(i,r,Qz),R.multiply(o,Qz,Qz),Qz},u_dayTextures:function(){return this.properties.dayTextures},u_dayTextureTranslationAndScale:function(){return this.properties.dayTextureTranslationAndScale},u_dayTextureTexCoordsRectangle:function(){return this.properties.dayTextureTexCoordsRectangle},u_dayTextureUseWebMercatorT:function(){return this.properties.dayTextureUseWebMercatorT},u_dayTextureAlpha:function(){return this.properties.dayTextureAlpha},u_dayTextureNightAlpha:function(){return this.properties.dayTextureNightAlpha},u_dayTextureDayAlpha:function(){return this.properties.dayTextureDayAlpha},u_dayTextureBrightness:function(){return this.properties.dayTextureBrightness},u_dayTextureContrast:function(){return this.properties.dayTextureContrast},u_dayTextureHue:function(){return this.properties.dayTextureHue},u_dayTextureSaturation:function(){return this.properties.dayTextureSaturation},u_dayTextureOneOverGamma:function(){return this.properties.dayTextureOneOverGamma},u_dayIntensity:function(){return this.properties.dayIntensity},u_southAndNorthLatitude:function(){return this.properties.southAndNorthLatitude},u_southMercatorYAndOneOverHeight:function(){return this.properties.southMercatorYAndOneOverHeight},u_waterMask:function(){return this.properties.waterMask},u_waterMaskTranslationAndScale:function(){return this.properties.waterMaskTranslationAndScale},u_minMaxHeight:function(){return this.properties.minMaxHeight},u_scaleAndBias:function(){return this.properties.scaleAndBias},u_dayTextureSplit:function(){return this.properties.dayTextureSplit},u_dayTextureCutoutRectangles:function(){return this.properties.dayTextureCutoutRectangles},u_clippingPlanes:function(){let i=t._clippingPlanes;return l(i)&&l(i.texture)?i.texture:e.context.defaultTexture},u_cartographicLimitRectangle:function(){return this.properties.localizedCartographicLimitRectangle},u_clippingPlanesMatrix:function(){let i=t._clippingPlanes,o=l(i)?R.multiply(e.context.uniformState.view,i.modelMatrix,Wdt):R.IDENTITY;return R.inverseTranspose(o,jdt)},u_clippingPlanesEdgeStyle:function(){let i=this.properties.clippingPlanesEdgeColor;return i.alpha=this.properties.clippingPlanesEdgeWidth,i},u_clippingDistance:function(){let i=t._clippingPolygons.clippingTexture;return l(i)?i:e.context.defaultTexture},u_clippingExtents:function(){let i=t._clippingPolygons.extentsTexture;return l(i)?i:e.context.defaultTexture},u_minimumBrightness:function(){return e.fog.minimumBrightness},u_hsbShift:function(){return this.properties.hsbShift},u_colorsToAlpha:function(){return this.properties.colorsToAlpha},u_frontFaceAlphaByDistance:function(){return this.properties.frontFaceAlphaByDistance},u_backFaceAlphaByDistance:function(){return this.properties.backFaceAlphaByDistance},u_translucencyRectangle:function(){return this.properties.localizedTranslucencyRectangle},u_undergroundColor:function(){return this.properties.undergroundColor},u_undergroundColorAlphaByDistance:function(){return this.properties.undergroundColorAlphaByDistance},u_lambertDiffuseMultiplier:function(){return this.properties.lambertDiffuseMultiplier},u_vertexShadowDarkness:function(){return this.properties.vertexShadowDarkness},properties:{initialColor:new se(0,0,.5,1),fillHighlightColor:new G(0,0,0,0),zoomedOutOceanSpecularIntensity:.5,oceanNormalMap:void 0,lightingFadeDistance:new k(65e5,9e6),nightFadeDistance:new k(1e7,4e7),atmosphereLightIntensity:10,atmosphereRayleighCoefficient:new d(55e-7,13e-6,284e-7),atmosphereMieCoefficient:new d(21e-6,21e-6,21e-6),atmosphereRayleighScaleHeight:1e4,atmosphereMieScaleHeight:3200,atmosphereMieAnisotropy:.9,hsbShift:new d,center3D:void 0,rtc:new d,modifiedModelView:new R,tileRectangle:new se,verticalExaggerationAndRelativeHeight:new k(1,0),dayTextures:[],dayTextureTranslationAndScale:[],dayTextureTexCoordsRectangle:[],dayTextureUseWebMercatorT:[],dayTextureAlpha:[],dayTextureNightAlpha:[],dayTextureDayAlpha:[],dayTextureBrightness:[],dayTextureContrast:[],dayTextureHue:[],dayTextureSaturation:[],dayTextureOneOverGamma:[],dayTextureSplit:[],dayTextureCutoutRectangles:[],dayIntensity:0,colorsToAlpha:[],southAndNorthLatitude:new k,southMercatorYAndOneOverHeight:new k,waterMask:void 0,waterMaskTranslationAndScale:new se,minMaxHeight:new k,scaleAndBias:new R,clippingPlanesEdgeColor:G.clone(G.WHITE),clippingPlanesEdgeWidth:0,localizedCartographicLimitRectangle:new se,frontFaceAlphaByDistance:new se,backFaceAlphaByDistance:new se,localizedTranslucencyRectangle:new se,undergroundColor:G.clone(G.TRANSPARENT),undergroundColorAlphaByDistance:new se,lambertDiffuseMultiplier:0,vertexShadowDarkness:0}};return l(t.materialUniformMap)?wt(n,t.materialUniformMap):n}function Ydt(e,t,n){let i=n.data,o,r;if(l(i.vertexArray)?(o=i.mesh,r=i.vertexArray):l(i.fill)&&l(i.fill.vertexArray)&&(o=i.fill.mesh,r=i.fill.vertexArray),!(!l(o)||!l(r))){if(l(i.wireframeVertexArray)){if(i.wireframeVertexArray.mesh===o)return;i.wireframeVertexArray.destroy(),i.wireframeVertexArray=void 0}i.wireframeVertexArray=qdt(e,r,o),i.wireframeVertexArray.mesh=o}}function qdt(e,t,n){let o={indices:n.indices,primitiveType:Me.TRIANGLES};jn.toWireframe(o);let r=o.indices,s=Et.createIndexBuffer({context:e,typedArray:r,usage:Qe.STATIC_DRAW,indexDatatype:Fe.fromSizeInBytes(r.BYTES_PER_ELEMENT)});return new li({context:e,attributes:t._attributes,indexBuffer:s})}var xCe,bCe,Uz;(function(){let e=new Rt({geometry:$h.fromDimensions({dimensions:new d(2,2,2)})}),t=new Rt({geometry:new L_({radius:1})}),n=new R,i,o;function r(s){return new kn({geometryInstances:s,appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})}xCe=function(s,a){return s===i||(Uz(),i=s,n=R.fromRotationTranslation(s.halfAxes,s.center,n),e.modelMatrix=n,e.attributes.color=en.fromColor(a),o=r(e)),o},bCe=function(s,a){return s===i||(Uz(),i=s,n=R.fromTranslation(s.center,n),n=R.multiplyByUniformScale(n,s.radius,n),t.modelMatrix=n,t.attributes.color=en.fromColor(a),o=r(t)),o},Uz=function(){l(o)&&(o.destroy(),o=void 0,i=void 0)}})();var Kdt=new se(0,0,0,0),Xdt={frameState:void 0,surfaceTile:void 0,numberOfDayTextures:void 0,applyBrightness:void 0,applyContrast:void 0,applyHue:void 0,applySaturation:void 0,applyGamma:void 0,applyAlpha:void 0,applyDayNightAlpha:void 0,applySplit:void 0,showReflectiveOcean:void 0,showOceanWaves:void 0,enableLighting:void 0,dynamicAtmosphereLighting:void 0,dynamicAtmosphereLightingFromSun:void 0,showGroundAtmosphere:void 0,perFragmentGroundAtmosphere:void 0,hasVertexNormals:void 0,useWebMercatorProjection:void 0,enableFog:void 0,enableClippingPlanes:void 0,clippingPlanes:void 0,enableClippingPolygons:void 0,clippingPolygons:void 0,clippedByBoundaries:void 0,hasImageryLayerCutout:void 0,colorCorrect:void 0,colorToAlpha:void 0,hasGeodeticSurfaceNormals:void 0,hasExaggeration:void 0},Jdt=G.TRANSPARENT,Zdt=new Yt;function $dt(e,t,n){let i=t.data;l(i.vertexArray)||(i.fill===void 0&&(i.fill=new oP(t)),i.fill.update(e,n));let o=n.creditDisplay,r=i.terrainData;if(l(r)&&l(r.credits)){let Ot=r.credits;for(let Tt=0,ii=Ot.length;Tt<ii;++Tt)o.addCreditToNextFrame(Ot[Tt])}let s=qt.maximumTextureImageUnits,a=i.waterMaskTexture,c=i.waterMaskTranslationAndScale;!l(a)&&l(i.fill)&&(a=i.fill.waterMaskTexture,c=i.fill.waterMaskTranslationAndScale);let u=n.cameraUnderground,f=n.globeTranslucencyState,h=f.translucent,A=f.frontFaceAlphaByDistance,g=f.backFaceAlphaByDistance,m=f.rectangle,_=e.undergroundColor??Jdt,y=e.undergroundColorAlphaByDistance??Zdt,C=ICe(e,n)&&n.mode===ie.SCENE3D&&_.alpha>0&&(y.nearValue>0||y.farValue>0),E=e.lambertDiffuseMultiplier,I=e.vertexShadowDarkness,b=e.hasWaterMask&&l(a),S=b&&e.showWaterEffect,B=e.oceanNormalMap,v=S&&l(B),P=e.terrainProvider,N=l(P)&&e.terrainProvider.hasVertexNormals,L=n.fog.enabled&&n.fog.renderable&&!u,p=e.showGroundAtmosphere&&n.mode===ie.SCENE3D,x=Dn.castShadows(e.shadows)&&!h,T=Dn.receiveShadows(e.shadows)&&!h,w=e.hueShift,M=e.saturationShift,O=e.brightnessShift,U=!(D.equalsEpsilon(w,0,D.EPSILON7)&&D.equalsEpsilon(M,0,D.EPSILON7)&&D.equalsEpsilon(O,0,D.EPSILON7)),Q=!1;if(p){let Ot=d.magnitude(n.camera.positionWC),Tt=e.nightFadeOutDistance;Q=Ot>Tt}b&&--s,v&&--s,l(n.shadowState)&&n.shadowState.shadowsEnabled&&--s,l(e.clippingPlanes)&&e.clippingPlanes.enabled&&--s,l(e.clippingPolygons)&&e.clippingPolygons.enabled&&(--s,--s),s-=f.numberOfTextureUniforms;let z=i.renderedMesh,F=z.center,H=z.encoding,W=i.tileBoundingRegion,Z=n.verticalExaggeration,Y=n.verticalExaggerationRelativeHeight,$=Z!==1,X=H.hasGeodeticSurfaceNormals,he=Odt,ge=0,fe=0,ye=0,Ie=0,ve=!1;if(n.mode!==ie.SCENE3D){let Ot=n.mapProjection,Tt=Ot.project(ae.southwest(t.rectangle),Udt),ii=Ot.project(ae.northeast(t.rectangle),Gdt);if(he.x=Tt.x,he.y=Tt.y,he.z=ii.x,he.w=ii.y,n.mode!==ie.MORPHING&&(F=kdt,F.x=0,F.y=(he.z+he.x)*.5,F.z=(he.w+he.y)*.5,he.x-=F.y,he.y-=F.z,he.z-=F.y,he.w-=F.z),n.mode===ie.SCENE2D&&H.quantization===za.BITS12){let Ct=1/(Math.pow(2,12)-1)*.5,Ro=(he.z-he.x)*Ct,Qo=(he.w-he.y)*Ct;he.x-=Ro,he.y-=Qo,he.z+=Ro,he.w+=Qo}Ot instanceof Yi&&(ge=t.rectangle.south,fe=t.rectangle.north,ye=Yi.geodeticLatitudeToMercatorAngle(ge),Ie=1/(Yi.geodeticLatitudeToMercatorAngle(fe)-ye),ve=!0)}let Te=Xdt;Te.frameState=n,Te.surfaceTile=i,Te.hasWaterMask=b,Te.showReflectiveOcean=S,Te.showOceanWaves=v,Te.enableLighting=e.enableLighting,Te.dynamicAtmosphereLighting=e.dynamicAtmosphereLighting,Te.dynamicAtmosphereLightingFromSun=e.dynamicAtmosphereLightingFromSun,Te.showGroundAtmosphere=p,Te.atmosphereLightIntensity=e.atmosphereLightIntensity,Te.atmosphereRayleighCoefficient=e.atmosphereRayleighCoefficient,Te.atmosphereMieCoefficient=e.atmosphereMieCoefficient,Te.atmosphereRayleighScaleHeight=e.atmosphereRayleighScaleHeight,Te.atmosphereMieScaleHeight=e.atmosphereMieScaleHeight,Te.atmosphereMieAnisotropy=e.atmosphereMieAnisotropy,Te.perFragmentGroundAtmosphere=Q,Te.hasVertexNormals=N,Te.useWebMercatorProjection=ve,Te.clippedByBoundaries=i.clippedByBoundaries,Te.hasGeodeticSurfaceNormals=X,Te.hasExaggeration=$;let ke=i.imagery,Ge=0,qe=ke.length,tt=e.showSkirts&&!u&&!h,$t=e.backFaceCulling&&!u&&!h,it=$t?e._renderState:e._disableCullingRenderState,tn=$t?e._blendRenderState:e._disableCullingBlendRenderState,Wt=it,vt=e._firstPassInitialColor,bi=n.context;if(l(e._debug.boundingSphereTile)||Uz(),e._materialUniformMap!==e.materialUniformMap){e._materialUniformMap=e.materialUniformMap;let Ot=e._drawCommands.length;for(let Tt=0;Tt<Ot;++Tt)e._uniformMaps[Tt]=yCe(n,e)}do{let Ot=0,Tt,ii;if(e._drawCommands.length<=e._usedDrawCommands?(Tt=new nt,Tt.owner=t,Tt.cull=!1,Tt.boundingVolume=new le,Tt.orientedBoundingBox=void 0,ii=yCe(n,e),e._drawCommands.push(Tt),e._uniformMaps.push(ii)):(Tt=e._drawCommands[e._usedDrawCommands],ii=e._uniformMaps[e._usedDrawCommands]),Tt.owner=t,++e._usedDrawCommands,t===e._debug.boundingSphereTile){let rs=W.boundingVolume,qa=W.boundingSphere;l(rs)?xCe(rs,G.RED).update(n):l(qa)&&bCe(qa,G.RED).update(n)}let Ct=ii.properties;se.clone(vt,Ct.initialColor),Ct.oceanNormalMap=B,Ct.lightingFadeDistance.x=e.lightingFadeOutDistance,Ct.lightingFadeDistance.y=e.lightingFadeInDistance,Ct.nightFadeDistance.x=e.nightFadeOutDistance,Ct.nightFadeDistance.y=e.nightFadeInDistance,Ct.atmosphereLightIntensity=e.atmosphereLightIntensity,Ct.atmosphereRayleighCoefficient=e.atmosphereRayleighCoefficient,Ct.atmosphereMieCoefficient=e.atmosphereMieCoefficient,Ct.atmosphereRayleighScaleHeight=e.atmosphereRayleighScaleHeight,Ct.atmosphereMieScaleHeight=e.atmosphereMieScaleHeight,Ct.atmosphereMieAnisotropy=e.atmosphereMieAnisotropy,Ct.zoomedOutOceanSpecularIntensity=e.zoomedOutOceanSpecularIntensity;let Ro=u?g:A,Qo=u?A:g;l(Ro)&&(se.fromElements(Ro.near,Ro.nearValue,Ro.far,Ro.farValue,Ct.frontFaceAlphaByDistance),se.fromElements(Qo.near,Qo.nearValue,Qo.far,Qo.farValue,Ct.backFaceAlphaByDistance)),se.fromElements(y.near,y.nearValue,y.far,y.farValue,Ct.undergroundColorAlphaByDistance),G.clone(_,Ct.undergroundColor),Ct.lambertDiffuseMultiplier=E,Ct.vertexShadowDarkness=I;let ya=!l(i.vertexArray)&&l(e.fillHighlightColor)&&e.fillHighlightColor.alpha>0;ya&&G.clone(e.fillHighlightColor,Ct.fillHighlightColor),Ct.verticalExaggerationAndRelativeHeight.x=Z,Ct.verticalExaggerationAndRelativeHeight.y=Y,Ct.center3D=z.center,d.clone(F,Ct.rtc),se.clone(he,Ct.tileRectangle),Ct.southAndNorthLatitude.x=ge,Ct.southAndNorthLatitude.y=fe,Ct.southMercatorYAndOneOverHeight.x=ye,Ct.southMercatorYAndOneOverHeight.y=Ie;let mr=Fdt,Tr=kz(t.rectangle,e.cartographicLimitRectangle),Oe=Qdt,lt=kz(t.rectangle,m);d.fromElements(w,M,O,Ct.hsbShift);let Ke=t.rectangle,$e=1/Ke.width,pt=1/Ke.height;mr.x=(Tr.west-Ke.west)*$e,mr.y=(Tr.south-Ke.south)*pt,mr.z=(Tr.east-Ke.west)*$e,mr.w=(Tr.north-Ke.south)*pt,se.clone(mr,Ct.localizedCartographicLimitRectangle),Oe.x=(lt.west-Ke.west)*$e,Oe.y=(lt.south-Ke.south)*pt,Oe.z=(lt.east-Ke.west)*$e,Oe.w=(lt.north-Ke.south)*pt,se.clone(Oe,Ct.localizedTranslucencyRectangle);let Xt=L&&D.fog(t._distance,n.fog.density)>D.EPSILON3;U=U&&(Xt||p);let xn=!1,lo=!1,ro=!1,$s=!1,ea=!1,Vn=!1,_i=!1,_s=!1,Wo=!1,Ca=!1;for(;Ot<s&&Ge<qe;){let rs=ke[Ge],qa=rs.readyImagery;if(++Ge,!l(qa)||qa.imageryLayer.alpha===0)continue;let Ka=rs.useWebMercatorT?qa.textureWebMercator:qa.texture,Sr=qa.imageryLayer;l(rs.textureTranslationAndScale)||(rs.textureTranslationAndScale=Sr._calculateTextureTranslationAndScale(t,rs)),Ct.dayTextures[Ot]=Ka,Ct.dayTextureTranslationAndScale[Ot]=rs.textureTranslationAndScale,Ct.dayTextureTexCoordsRectangle[Ot]=rs.textureCoordinateRectangle,Ct.dayTextureUseWebMercatorT[Ot]=rs.useWebMercatorT,Ct.dayTextureAlpha[Ot]=Sr.alpha,Vn=Vn||Ct.dayTextureAlpha[Ot]!==1,Ct.dayTextureNightAlpha[Ot]=Sr.nightAlpha,_i=_i||Ct.dayTextureNightAlpha[Ot]!==1,Ct.dayTextureDayAlpha[Ot]=Sr.dayAlpha,_i=_i||Ct.dayTextureDayAlpha[Ot]!==1,Ct.dayTextureBrightness[Ot]=Sr.brightness,xn=xn||Ct.dayTextureBrightness[Ot]!==ds.DEFAULT_BRIGHTNESS,Ct.dayTextureContrast[Ot]=Sr.contrast,lo=lo||Ct.dayTextureContrast[Ot]!==ds.DEFAULT_CONTRAST,Ct.dayTextureHue[Ot]=Sr.hue,ro=ro||Ct.dayTextureHue[Ot]!==ds.DEFAULT_HUE,Ct.dayTextureSaturation[Ot]=Sr.saturation,$s=$s||Ct.dayTextureSaturation[Ot]!==ds.DEFAULT_SATURATION,Ct.dayTextureOneOverGamma[Ot]=1/Sr.gamma,ea=ea||Ct.dayTextureOneOverGamma[Ot]!==1/ds.DEFAULT_GAMMA,Ct.dayTextureSplit[Ot]=Sr.splitDirection,_s=_s||Ct.dayTextureSplit[Ot]!==0;let Bl=Ct.dayTextureCutoutRectangles[Ot];if(l(Bl)||(Bl=Ct.dayTextureCutoutRectangles[Ot]=new se),se.clone(se.ZERO,Bl),l(Sr.cutoutRectangle)){let wo=kz(Ke,Sr.cutoutRectangle),cn=ae.simpleIntersection(wo,Ke,ECe);Wo=l(cn)||Wo,Bl.x=(wo.west-Ke.west)*$e,Bl.y=(wo.south-Ke.south)*pt,Bl.z=(wo.east-Ke.west)*$e,Bl.w=(wo.north-Ke.south)*pt}let Dl=Ct.colorsToAlpha[Ot];l(Dl)||(Dl=Ct.colorsToAlpha[Ot]=new se);let ta=l(Sr.colorToAlpha)&&Sr.colorToAlphaThreshold>0;if(Ca=Ca||ta,ta){let wo=Sr.colorToAlpha;Dl.x=wo.red,Dl.y=wo.green,Dl.z=wo.blue,Dl.w=Sr.colorToAlphaThreshold}else Dl.w=-1;if(l(qa.credits)){let wo=qa.credits;for(let cn=0,Se=wo.length;cn<Se;++cn)o.addCreditToNextFrame(wo[cn])}++Ot}Ct.dayTextures.length=Ot,Ct.waterMask=a,se.clone(c,Ct.waterMaskTranslationAndScale),Ct.minMaxHeight.x=H.minimumHeight,Ct.minMaxHeight.y=H.maximumHeight,R.clone(H.matrix,Ct.scaleAndBias);let uo=e._clippingPlanes,jo=l(uo)&&uo.enabled&&t.isClipped;jo&&(Ct.clippingPlanesEdgeColor=G.clone(uo.edgeColor,Ct.clippingPlanesEdgeColor),Ct.clippingPlanesEdgeWidth=uo.edgeWidth);let df=e._clippingPolygons,Ar=l(df)&&df.enabled&&t.isClipped;Te.numberOfDayTextures=Ot,Te.applyBrightness=xn,Te.applyContrast=lo,Te.applyHue=ro,Te.applySaturation=$s,Te.applyGamma=ea,Te.applyAlpha=Vn,Te.applyDayNightAlpha=_i,Te.applySplit=_s,Te.enableFog=Xt,Te.enableClippingPlanes=jo,Te.clippingPlanes=uo,Te.enableClippingPolygons=Ar,Te.clippingPolygons=df,Te.hasImageryLayerCutout=Wo,Te.colorCorrect=U,Te.highlightFillTile=ya,Te.colorToAlpha=Ca,Te.showUndergroundColor=C,Te.translucent=h;let ys=i.renderedMesh.indices.length;tt||(ys=i.renderedMesh.indexCountWithoutSkirts),Tt.shaderProgram=e._surfaceShaderSet.getShaderProgram(Te),Tt.castShadows=x,Tt.receiveShadows=T,Tt.renderState=Wt,Tt.primitiveType=Me.TRIANGLES,Tt.vertexArray=i.vertexArray||i.fill.vertexArray,Tt.count=ys,Tt.uniformMap=ii,Tt.pass=Be.GLOBE,e._debug.wireframe&&(Ydt(bi,e,t),l(i.wireframeVertexArray)&&(Tt.vertexArray=i.wireframeVertexArray,Tt.primitiveType=Me.LINES,Tt.count=ys*2));let Qs=Tt.boundingVolume,vd=Tt.orientedBoundingBox;n.mode!==ie.SCENE3D?(le.fromRectangleWithHeights2D(t.rectangle,n.mapProjection,W.minimumHeight,W.maximumHeight,Qs),d.fromElements(Qs.center.z,Qs.center.x,Qs.center.y,Qs.center),n.mode===ie.MORPHING&&(Qs=le.union(W.boundingSphere,Qs,Qs))):(Tt.boundingVolume=le.clone(W.boundingSphere,Qs),Tt.orientedBoundingBox=Qn.clone(W.boundingVolume,vd)),Tt.dirty=!0,h&&f.updateDerivedCommands(Tt,n),CCe(Tt,n),Wt=tn,vt=Kdt}while(Ge<qe)}var Gz=fr;function TCe(){this._enabled=!1,this._frontFaceAlpha=1,this._frontFaceAlphaByDistance=void 0,this._backFaceAlpha=1,this._backFaceAlphaByDistance=void 0,this._rectangle=ae.clone(ae.MAX_VALUE)}Object.defineProperties(TCe.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this._enabled=e}},frontFaceAlpha:{get:function(){return this._frontFaceAlpha},set:function(e){this._frontFaceAlpha=e}},frontFaceAlphaByDistance:{get:function(){return this._frontFaceAlphaByDistance},set:function(e){this._frontFaceAlphaByDistance=Yt.clone(e,this._frontFaceAlphaByDistance)}},backFaceAlpha:{get:function(){return this._backFaceAlpha},set:function(e){this._backFaceAlpha=e}},backFaceAlphaByDistance:{get:function(){return this._backFaceAlphaByDistance},set:function(e){this._backFaceAlphaByDistance=Yt.clone(e,this._backFaceAlphaByDistance)}},rectangle:{get:function(){return this._rectangle},set:function(e){l(e)||(e=ae.clone(ae.MAX_VALUE)),ae.clone(e,this._rectangle)}}});var zz=TCe;function SCe(e){this._ellipsoid=new H_(e.ellipsoid,d.ZERO)}Object.defineProperties(SCe.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var Vz=SCe;var AX=class{constructor(t){this.maxSize=t,this.cache=new Map}get(t){if(!this.cache.has(t))return;let n=this.cache.get(t);return this.cache.delete(t),this.cache.set(t,n),n}set(t,n){if(this.cache.has(t))this.cache.delete(t);else if(this.cache.size>=this.maxSize){let i=this.cache.keys().next().value;this.cache.delete(i)}this.cache.set(t,n)}clear(){this.cache.clear()}},eht=1e3;function ma(e){this._tilingScheme=e.tilingScheme,this._x=e.x,this._y=e.y,this._level=e.level,this._parent=e.parent,this._rectangle=this._tilingScheme.tileXYToRectangle(this._x,this._y,this._level),this._southwestChild=void 0,this._southeastChild=void 0,this._northwestChild=void 0,this._northeastChild=void 0,this.replacementPrevious=void 0,this.replacementNext=void 0,this._distance=0,this._loadPriority=0,this._customData=[],this._frameUpdated=void 0,this._lastSelectionResult=ai.NONE,this._lastSelectionResultFrame=void 0,this._loadedCallbacks={},this._positionCache=new AX(eht),this.state=Va.START,this.renderable=!1,this.upsampledFromParent=!1,this.data=void 0}ma.createLevelZeroTiles=function(e){let t=e.getNumberOfXTilesAtLevel(0),n=e.getNumberOfYTilesAtLevel(0),i=new Array(t*n),o=0;for(let r=0;r<n;++r)for(let s=0;s<t;++s)i[o++]=new ma({tilingScheme:e,x:s,y:r,level:0});return i};var tht=256;function nht(e,t,n,i){let o=n.width/tht*i,r=Math.floor(e/o)*o,s=Math.floor(t/o)*o;return`${r.toFixed(10)},${s.toFixed(10)}`}ma.prototype._getCacheKey=function(e,t){return nht(e.longitude,e.latitude,this._rectangle,t)};ma.prototype.getPositionCacheEntry=function(e,t){return this._positionCache.get(this._getCacheKey(e,t))};ma.prototype.setPositionCacheEntry=function(e,t,n){this._positionCache.set(this._getCacheKey(e,t),n)};ma.prototype.clearPositionCache=function(){this._positionCache.size>0&&this._positionCache.clear()};ma.prototype._updateCustomData=function(e,t,n){let i=this.customData,o,r,s;if(l(t)&&l(n)){for(i=i.filter(function(a){return n.indexOf(a)===-1}),this._customData=i,s=this._rectangle,o=0;o<t.length;++o)r=t[o],ae.contains(s,r.positionCartographic)&&i.push(r);this._frameUpdated=e}else{let a=this._parent;if(l(a)&&this._frameUpdated!==a._frameUpdated){i.length=0,s=this._rectangle;let c=a.customData;for(o=0;o<c.length;++o)r=c[o],ae.contains(s,r.positionCartographic)&&i.push(r);this._frameUpdated=a._frameUpdated}}};Object.defineProperties(ma.prototype,{tilingScheme:{get:function(){return this._tilingScheme}},x:{get:function(){return this._x}},y:{get:function(){return this._y}},level:{get:function(){return this._level}},parent:{get:function(){return this._parent}},rectangle:{get:function(){return this._rectangle}},children:{get:function(){return[this.northwestChild,this.northeastChild,this.southwestChild,this.southeastChild]}},southwestChild:{get:function(){return l(this._southwestChild)||(this._southwestChild=new ma({tilingScheme:this.tilingScheme,x:this.x*2,y:this.y*2+1,level:this.level+1,parent:this})),this._southwestChild}},southeastChild:{get:function(){return l(this._southeastChild)||(this._southeastChild=new ma({tilingScheme:this.tilingScheme,x:this.x*2+1,y:this.y*2+1,level:this.level+1,parent:this})),this._southeastChild}},northwestChild:{get:function(){return l(this._northwestChild)||(this._northwestChild=new ma({tilingScheme:this.tilingScheme,x:this.x*2,y:this.y*2,level:this.level+1,parent:this})),this._northwestChild}},northeastChild:{get:function(){return l(this._northeastChild)||(this._northeastChild=new ma({tilingScheme:this.tilingScheme,x:this.x*2+1,y:this.y*2,level:this.level+1,parent:this})),this._northeastChild}},customData:{get:function(){return this._customData}},needsLoading:{get:function(){return this.state<Va.DONE}},eligibleForUnloading:{get:function(){let e=!0;return l(this.data)&&(e=this.data.eligibleForUnloading,l(e)||(e=!0)),e}}});ma.prototype.findLevelZeroTile=function(e,t,n){let i=this.tilingScheme.getNumberOfXTilesAtLevel(0);if(t<0?t+=i:t>=i&&(t-=i),!(n<0||n>=this.tilingScheme.getNumberOfYTilesAtLevel(0)))return e.filter(function(o){return o.x===t&&o.y===n})[0]};ma.prototype.findTileToWest=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x-1,this.y);if(t.southeastChild===this)return t.southwestChild;if(t.northeastChild===this)return t.northwestChild;let n=t.findTileToWest(e);if(n!==void 0)return t.southwestChild===this?n.southeastChild:n.northeastChild};ma.prototype.findTileToEast=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x+1,this.y);if(t.southwestChild===this)return t.southeastChild;if(t.northwestChild===this)return t.northeastChild;let n=t.findTileToEast(e);if(n!==void 0)return t.southeastChild===this?n.southwestChild:n.northwestChild};ma.prototype.findTileToSouth=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x,this.y+1);if(t.northwestChild===this)return t.southwestChild;if(t.northeastChild===this)return t.southeastChild;let n=t.findTileToSouth(e);if(n!==void 0)return t.southwestChild===this?n.northwestChild:n.northeastChild};ma.prototype.findTileToNorth=function(e){let t=this.parent;if(t===void 0)return this.findLevelZeroTile(e,this.x,this.y-1);if(t.southwestChild===this)return t.northwestChild;if(t.southeastChild===this)return t.northeastChild;let n=t.findTileToNorth(e);if(n!==void 0)return t.northwestChild===this?n.southwestChild:n.southeastChild};ma.prototype.freeResources=function(){this.clearPositionCache(),this.state=Va.START,this.renderable=!1,this.upsampledFromParent=!1,l(this.data)&&l(this.data.freeResources)&&this.data.freeResources(),Hz(this._southwestChild),this._southwestChild=void 0,Hz(this._southeastChild),this._southeastChild=void 0,Hz(this._northwestChild),this._northwestChild=void 0,Hz(this._northeastChild),this._northeastChild=void 0};function Hz(e){l(e)&&e.freeResources()}var Wz=ma;function jz(){this.head=void 0,this.tail=void 0,this.count=0,this._lastBeforeStartOfFrame=void 0}jz.prototype.markStartOfRenderFrame=function(){this._lastBeforeStartOfFrame=this.head};jz.prototype.trimTiles=function(e){let t=this.tail,n=!0;for(;n&&l(this._lastBeforeStartOfFrame)&&this.count>e&&l(t);){n=t!==this._lastBeforeStartOfFrame;let i=t.replacementPrevious;t.eligibleForUnloading&&(t.freeResources(),wCe(this,t)),t=i}};function wCe(e,t){let n=t.replacementPrevious,i=t.replacementNext;t===e._lastBeforeStartOfFrame&&(e._lastBeforeStartOfFrame=i),t===e.head?e.head=i:n.replacementNext=i,t===e.tail?e.tail=n:i.replacementPrevious=n,t.replacementPrevious=void 0,t.replacementNext=void 0,--e.count}jz.prototype.markTileRendered=function(e){let t=this.head;if(t===e){e===this._lastBeforeStartOfFrame&&(this._lastBeforeStartOfFrame=e.replacementNext);return}if(++this.count,!l(t)){e.replacementPrevious=void 0,e.replacementNext=void 0,this.head=e,this.tail=e;return}(l(e.replacementPrevious)||l(e.replacementNext))&&wCe(this,e),e.replacementPrevious=void 0,e.replacementNext=t,t.replacementPrevious=e,this.head=e};var Yz=jz;function pd(e){this._tileProvider=e.tileProvider,this._tileProvider.quadtree=this,this._debug={enableDebugOutput:!1,maxDepth:0,maxDepthVisited:0,tilesVisited:0,tilesCulled:0,tilesRendered:0,tilesWaitingForChildren:0,lastMaxDepth:-1,lastMaxDepthVisited:-1,lastTilesVisited:-1,lastTilesCulled:-1,lastTilesRendered:-1,lastTilesWaitingForChildren:-1,suspendLodUpdate:!1};let n=this._tileProvider.tilingScheme.ellipsoid;this._tilesToRender=[],this._tileLoadQueueHigh=[],this._tileLoadQueueMedium=[],this._tileLoadQueueLow=[],this._tileReplacementQueue=new Yz,this._levelZeroTiles=void 0,this._loadQueueTimeSlice=5,this._tilesInvalidated=!1,this._addHeightCallbacks=[],this._removeHeightCallbacks=[],this._tileToUpdateHeights=[],this._lastTileIndex=0,this._updateHeightsTimeSlice=2,this._cameraPositionCartographic=void 0,this._cameraReferenceFrameOriginCartographic=void 0,this.maximumScreenSpaceError=e.maximumScreenSpaceError??2,this.tileCacheSize=e.tileCacheSize??100,this.loadingDescendantLimit=20,this.preloadAncestors=!0,this.preloadSiblings=!1,this._occluders=new Vz({ellipsoid:n}),this._tileLoadProgressEvent=new _e,this._lastTileLoadQueueLength=0,this._lastSelectionFrameNumber=void 0}Object.defineProperties(pd.prototype,{tileProvider:{get:function(){return this._tileProvider}},tileLoadProgressEvent:{get:function(){return this._tileLoadProgressEvent}},occluders:{get:function(){return this._occluders}}});pd.prototype.invalidateAllTiles=function(){this._tilesInvalidated=!0};function iht(e){let t=e._tileReplacementQueue;t.head=void 0,t.tail=void 0,t.count=0,DCe(e);let n=e._levelZeroTiles;if(l(n))for(let i=0;i<n.length;++i){let r=n[i].customData,s=r.length;for(let a=0;a<s;++a){let c=r[a];c.level=0,e._addHeightCallbacks.push(c)}n[i].freeResources()}e._levelZeroTiles=void 0,e._tileProvider.cancelReprojections()}pd.prototype.forEachLoadedTile=function(e){let t=this._tileReplacementQueue.head;for(;l(t);)t.state!==Va.START&&e(t),t=t.replacementNext};pd.prototype.forEachRenderedTile=function(e){let t=this._tilesToRender;for(let n=0,i=t.length;n<i;++n)e(t[n])};pd.prototype.updateHeight=function(e,t){let n=this,i={positionOnEllipsoidSurface:void 0,positionCartographic:e,level:-1,callback:t};return i.removeFunc=function(){let o=n._addHeightCallbacks,r=o.length;for(let s=0;s<r;++s)if(o[s]===i){o.splice(s,1);break}n._removeHeightCallbacks.push(i),i.callback&&(i.callback=void 0)},n._addHeightCallbacks.push(i),i.removeFunc};pd.prototype.update=function(e){l(this._tileProvider.update)&&this._tileProvider.update(e)};function DCe(e){let t=e._debug;t.maxDepth=0,t.maxDepthVisited=0,t.tilesVisited=0,t.tilesCulled=0,t.tilesRendered=0,t.tilesWaitingForChildren=0,e._tileLoadQueueHigh.length=0,e._tileLoadQueueMedium.length=0,e._tileLoadQueueLow.length=0}pd.prototype.beginFrame=function(e){e.passes.render&&(this._tilesInvalidated&&(iht(this),this._tilesInvalidated=!1),this._tileProvider.initialize(e),DCe(this),!this._debug.suspendLodUpdate&&this._tileReplacementQueue.markStartOfRenderFrame())};pd.prototype.render=function(e){let t=e.passes,n=this._tileProvider;t.render&&(n.beginUpdate(e),aht(this,e),ght(this,e),n.endUpdate(e)),t.pick&&this._tilesToRender.length>0&&n.updateForPick(e)};function oht(e,t){let n=e._tileLoadQueueHigh.length+e._tileLoadQueueMedium.length+e._tileLoadQueueLow.length;if(n!==e._lastTileLoadQueueLength||e._tilesInvalidated){let o=_e.prototype.raiseEvent.bind(e._tileLoadProgressEvent,n);t.afterRender.push(()=>(o(),!0)),e._lastTileLoadQueueLength=n}let i=e._debug;i.enableDebugOutput&&!i.suspendLodUpdate&&(i.maxDepth=e._tilesToRender.reduce(function(o,r){return Math.max(o,r.level)},-1),i.tilesRendered=e._tilesToRender.length,(i.tilesVisited!==i.lastTilesVisited||i.tilesRendered!==i.lastTilesRendered||i.tilesCulled!==i.lastTilesCulled||i.maxDepth!==i.lastMaxDepth||i.tilesWaitingForChildren!==i.lastTilesWaitingForChildren||i.maxDepthVisited!==i.lastMaxDepthVisited)&&(console.log(`Visited ${i.tilesVisited}, Rendered: ${i.tilesRendered}, Culled: ${i.tilesCulled}, Max Depth Rendered: ${i.maxDepth}, Max Depth Visited: ${i.maxDepthVisited}, Waiting for children: ${i.tilesWaitingForChildren}`),i.lastTilesVisited=i.tilesVisited,i.lastTilesRendered=i.tilesRendered,i.lastTilesCulled=i.tilesCulled,i.lastMaxDepth=i.maxDepth,i.lastTilesWaitingForChildren=i.tilesWaitingForChildren,i.lastMaxDepthVisited=i.maxDepthVisited))}pd.prototype.endFrame=function(e){!e.passes.render||e.mode===ie.MORPHING||(hht(this,e),pht(this,e),oht(this,e))};pd.prototype.isDestroyed=function(){return!1};pd.prototype.destroy=function(){this._tileProvider=this._tileProvider&&this._tileProvider.destroy()};var sP,BCe=new Ae;function rht(e,t){let n=ae.center(e.rectangle,BCe),i=n.longitude-sP.longitude,o=n.latitude-sP.latitude;n=ae.center(t.rectangle,BCe);let r=n.longitude-sP.longitude,s=n.latitude-sP.latitude;return i*i+o*o-(r*r+s*s)}var sht=new d,rP=[];function aht(e,t){let n=e._debug;if(n.suspendLodUpdate)return;let i=e._tilesToRender;i.length=0;let o,r=e._tileProvider;if(!l(e._levelZeroTiles)){let _=r.tilingScheme;if(l(_)){let y=r.tilingScheme;e._levelZeroTiles=Wz.createLevelZeroTiles(y);let C=e._levelZeroTiles.length;if(rP.length<C)for(rP=new Array(C),o=0;o<C;++o)rP[o]===void 0&&(rP[o]=new aP)}else return}e._occluders.ellipsoid.cameraPosition=t.camera.positionWC;let s,a=e._levelZeroTiles,c=a.length>1?e._occluders:void 0;sP=t.camera.positionCartographic,a.sort(rht);let u=e._addHeightCallbacks,f=e._removeHeightCallbacks,h=t.frameNumber,A;if(u.length>0||f.length>0){for(o=0,A=a.length;o<A;++o)s=a[o],s._updateCustomData(h,u,f);u.length=0,f.length=0}let g=t.camera;e._cameraPositionCartographic=g.positionCartographic;let m=R.getTranslation(g.transform,sht);for(e._cameraReferenceFrameOriginCartographic=e.tileProvider.tilingScheme.ellipsoid.cartesianToCartographic(m,e._cameraReferenceFrameOriginCartographic),o=0,A=a.length;o<A;++o)s=a[o],e._tileReplacementQueue.markTileRendered(s),s.renderable?cc(e,s,r,t,c,!1,rP[o]):(Yp(e,e._tileLoadQueueHigh,s,t),++n.tilesWaitingForChildren);e._lastSelectionFrameNumber=h}function Yp(e,t,n,i){n.needsLoading&&(e.tileProvider.computeTileLoadPriority!==void 0&&(n._loadPriority=e.tileProvider.computeTileLoadPriority(n,i)),t.push(n))}function aP(){this.allAreRenderable=!0,this.anyWereRenderedLastFrame=!1,this.notYetRenderableCount=0}function vCe(){this.southwest=new aP,this.southeast=new aP,this.northwest=new aP,this.northeast=new aP}vCe.prototype.combine=function(e){let t=this.southwest,n=this.southeast,i=this.northwest,o=this.northeast;e.allAreRenderable=t.allAreRenderable&&n.allAreRenderable&&i.allAreRenderable&&o.allAreRenderable,e.anyWereRenderedLastFrame=t.anyWereRenderedLastFrame||n.anyWereRenderedLastFrame||i.anyWereRenderedLastFrame||o.anyWereRenderedLastFrame,e.notYetRenderableCount=t.notYetRenderableCount+n.notYetRenderableCount+i.notYetRenderableCount+o.notYetRenderableCount};var gX=new Array(31);for(let e=0;e<gX.length;++e)gX[e]=new vCe;function cht(e,t,n,i,o){let r=e._debug;++r.tilesVisited,e._tileReplacementQueue.markTileRendered(n),n._updateCustomData(t.frameNumber),n.level>r.maxDepthVisited&&(r.maxDepthVisited=n.level);let s=fht(e,t,n)<e.maximumScreenSpaceError,a=n.southwestChild,c=n.southeastChild,u=n.northwestChild,f=n.northeastChild,h=e._lastSelectionFrameNumber,A=n._lastSelectionResultFrame===h?n._lastSelectionResult:ai.NONE,g=e.tileProvider;if(s||i){let m=ai.originalResult(A)===ai.RENDERED,_=ai.originalResult(A)===ai.CULLED||A===ai.NONE,y=n.state===Va.DONE,C=m||_||y;if(C||l(g.canRenderWithoutLosingDetail)&&(C=g.canRenderWithoutLosingDetail(n)),C){s&&Yp(e,e._tileLoadQueueMedium,n,t),qz(e,n),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=A===ai.RENDERED,o.notYetRenderableCount=n.renderable?0:1,n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=ai.RENDERED,o.anyWereRenderedLastFrame||e._tileToUpdateHeights.push(n);return}i=!0,s&&Yp(e,e._tileLoadQueueHigh,n,t)}if(g.canRefine(n)){if(a.upsampledFromParent&&c.upsampledFromParent&&u.upsampledFromParent&&f.upsampledFromParent){qz(e,n),Yp(e,e._tileLoadQueueMedium,n,t),e._tileReplacementQueue.markTileRendered(a),e._tileReplacementQueue.markTileRendered(c),e._tileReplacementQueue.markTileRendered(u),e._tileReplacementQueue.markTileRendered(f),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=A===ai.RENDERED,o.notYetRenderableCount=n.renderable?0:1,n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=ai.RENDERED,o.anyWereRenderedLastFrame||e._tileToUpdateHeights.push(n);return}n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=ai.REFINED;let _=e._tilesToRender.length,y=e._tileLoadQueueLow.length,C=e._tileLoadQueueMedium.length,E=e._tileLoadQueueHigh.length,I=e._tileToUpdateHeights.length;if(lht(e,a,c,u,f,t,i,o),_!==e._tilesToRender.length){let b=o.allAreRenderable,S=o.anyWereRenderedLastFrame,B=o.notYetRenderableCount,v=!1;if(!b&&!S){let P=e._tilesToRender;for(let L=_;L<P.length;++L){let p=P[L];for(;p!==void 0&&p._lastSelectionResult!==ai.KICKED&&p!==n;)p._lastSelectionResult=ai.kick(p._lastSelectionResult),p=p.parent}e._tilesToRender.length=_,e._tileToUpdateHeights.length=I,qz(e,n),n._lastSelectionResult=ai.RENDERED;let N=A===ai.RENDERED;!N&&B>e.loadingDescendantLimit&&(e._tileLoadQueueLow.length=y,e._tileLoadQueueMedium.length=C,e._tileLoadQueueHigh.length=E,Yp(e,e._tileLoadQueueMedium,n,t),o.notYetRenderableCount=n.renderable?0:1,v=!0),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=N,N||e._tileToUpdateHeights.push(n),++r.tilesWaitingForChildren}e.preloadAncestors&&!v&&Yp(e,e._tileLoadQueueLow,n,t)}return}n._lastSelectionResultFrame=t.frameNumber,n._lastSelectionResult=ai.RENDERED,qz(e,n),Yp(e,e._tileLoadQueueHigh,n,t),o.allAreRenderable=n.renderable,o.anyWereRenderedLastFrame=A===ai.RENDERED,o.notYetRenderableCount=n.renderable?0:1}function lht(e,t,n,i,o,r,s,a){let c=r.camera.positionCartographic,u=e._tileProvider,f=e._occluders,h=gX[t.level],A=h.southwest,g=h.southeast,m=h.northwest,_=h.northeast;c.longitude<t.rectangle.east?c.latitude<t.rectangle.north?(cc(e,t,u,r,f,s,A),cc(e,n,u,r,f,s,g),cc(e,i,u,r,f,s,m),cc(e,o,u,r,f,s,_)):(cc(e,i,u,r,f,s,m),cc(e,t,u,r,f,s,A),cc(e,o,u,r,f,s,_),cc(e,n,u,r,f,s,g)):c.latitude<t.rectangle.north?(cc(e,n,u,r,f,s,g),cc(e,t,u,r,f,s,A),cc(e,o,u,r,f,s,_),cc(e,i,u,r,f,s,m)):(cc(e,o,u,r,f,s,_),cc(e,i,u,r,f,s,m),cc(e,n,u,r,f,s,g),cc(e,t,u,r,f,s,A)),h.combine(a)}function uht(e,t){let n=t.rectangle;return l(e._cameraPositionCartographic)&&ae.contains(n,e._cameraPositionCartographic)||l(e._cameraReferenceFrameOriginCartographic)&&ae.contains(n,e._cameraReferenceFrameOriginCartographic)}function cc(e,t,n,i,o,r,s){if(n.computeTileVisibility(t,i,o)!==Gr.NONE)return cht(e,i,t,r,s);if(++e._debug.tilesCulled,e._tileReplacementQueue.markTileRendered(t),s.allAreRenderable=!0,s.anyWereRenderedLastFrame=!1,s.notYetRenderableCount=0,uht(e,t)){(!l(t.data)||!l(t.data.vertexArray))&&Yp(e,e._tileLoadQueueMedium,t,i);let a=e._lastSelectionFrameNumber,c=t._lastSelectionResultFrame===a?t._lastSelectionResult:ai.NONE;c!==ai.CULLED_BUT_NEEDED&&c!==ai.RENDERED&&e._tileToUpdateHeights.push(t),t._lastSelectionResult=ai.CULLED_BUT_NEEDED}else e.preloadSiblings||t.level===0?(Yp(e,e._tileLoadQueueLow,t,i),t._lastSelectionResult=ai.CULLED):t._lastSelectionResult=ai.CULLED;t._lastSelectionResultFrame=i.frameNumber}function fht(e,t,n){if(t.mode===ie.SCENE2D||t.camera.frustum instanceof An||t.camera.frustum instanceof ls)return dht(e,t,n);let i=e._tileProvider.getLevelMaximumGeometricError(n.level),o=n._distance,r=t.context.drawingBufferHeight,s=t.camera.frustum.sseDenominator,a=i*r/(o*s);return t.fog.enabled&&(a-=D.fog(o,t.fog.density)*t.fog.sse),a/=t.pixelRatio,a}function dht(e,t,n){let o=t.camera.frustum,r=o.offCenterFrustum;l(r)&&(o=r);let s=t.context,a=s.drawingBufferWidth,c=s.drawingBufferHeight,u=e._tileProvider.getLevelMaximumGeometricError(n.level),f=Math.max(o.top-o.bottom,o.right-o.left)/Math.max(a,c),h=u/f;return t.fog.enabled&&t.mode!==ie.SCENE2D&&(h-=D.fog(n._distance,t.fog.density)*t.fog.sse),h/=t.pixelRatio,h}function qz(e,t){e._tilesToRender.push(t)}function hht(e,t){let n=e._tileLoadQueueHigh,i=e._tileLoadQueueMedium,o=e._tileLoadQueueLow;if(n.length===0&&i.length===0&&o.length===0)return;e._tileReplacementQueue.trimTiles(e.tileCacheSize);let r=Oi()+e._loadQueueTimeSlice,s=e._tileProvider,a=pX(e,t,s,r,n,!1);a=pX(e,t,s,r,i,a),pX(e,t,s,r,o,a)}function mht(e,t){return e._loadPriority-t._loadPriority}function pX(e,t,n,i,o,r){n.computeTileLoadPriority!==void 0&&o.sort(mht);for(let s=0,a=o.length;s<a&&(Oi()<i||!r);++s){let c=o[s];e._tileReplacementQueue.markTileRendered(c),n.loadTile(t,c),r=!0}return r}var OT=new In,Kz=new Ae,vy=new d,Aht=[];function pht(e,t){if(!l(e.tileProvider.tilingScheme))return;let n=Aht;n.length=0;let i=e._tileToUpdateHeights,o=Oi(),r=e._updateHeightsTimeSlice,s=o+r,a=t.mode,c=t.mapProjection,u=e.tileProvider.tilingScheme.ellipsoid,f;for(;i.length>0;){let h=i[0];if(!l(h.data)||!l(h.data.mesh)){let _=h._lastSelectionResultFrame===e._lastSelectionFrameNumber?h._lastSelectionResult:ai.NONE;(_===ai.RENDERED||_===ai.CULLED_BUT_NEEDED)&&n.push(h),h.clearPositionCache(),i.shift(),e._lastTileIndex=0;continue}let A=h.customData,g=A.length,m=!1;for(f=e._lastTileIndex;f<g;++f){let _=A[f],y=h.data.terrainData,C=l(y)&&y.wasCreatedByUpsampling();if(h.level>_.level&&!C){let E,I=h.getPositionCacheEntry(_.positionCartographic,e.maximumScreenSpaceError);if(l(I))E=I;else{if(l(_.positionOnEllipsoidSurface)||(_.positionOnEllipsoidSurface=d.fromRadians(_.positionCartographic.longitude,_.positionCartographic.latitude,0,u)),a===ie.SCENE3D){let b=u.geodeticSurfaceNormal(_.positionOnEllipsoidSurface,OT.direction),S=u.getSurfaceNormalIntersectionWithZAxis(_.positionOnEllipsoidSurface,11500,OT.origin);if(!l(S)){let B=0;l(h.data.tileBoundingRegion)&&(B=h.data.tileBoundingRegion.minimumHeight);let v=Math.min(B,-11500),P=d.multiplyByScalar(b,Math.abs(v)+1,vy);d.subtract(_.positionOnEllipsoidSurface,P,OT.origin)}}else Ae.clone(_.positionCartographic,Kz),Kz.height=-11500,c.project(Kz,vy),d.fromElements(vy.z,vy.x,vy.y,vy),d.clone(vy,OT.origin),d.clone(d.UNIT_X,OT.direction);E=h.data.pick(OT,a,c,!1,vy),l(E)&&h.setPositionCacheEntry(_.positionCartographic,e.maximumScreenSpaceError,E)}if(l(E)){if(l(_.callback)){let b=u.cartesianToCartographic(E,Kz);_.callback(b)}_.level=h.level}}if(Oi()>=s){m=!0;break}}if(m){e._lastTileIndex=f;break}else e._lastTileIndex=0,i.shift()}for(f=0;f<n.length;f++)i.push(n[f])}function ght(e,t){let n=e._tileProvider,i=e._tilesToRender;for(let o=0,r=i.length;o<r;++o){let s=i[o];n.showTileThisFrame(s,t)}}var Xz=pd;function Mh(e){e=e??te.default;let t=new jp({ellipsoid:e}),n=new hb;this._ellipsoid=e,this._imageryLayerCollection=n,this._surfaceShaderSet=new vz,this._material=void 0,this._surface=new Xz({tileProvider:new Gz({terrainProvider:t,imageryLayers:n,surfaceShaderSet:this._surfaceShaderSet})}),this._terrainProvider=t,this._terrainProviderChanged=new _e,this._undergroundColor=G.clone(G.BLACK),this._undergroundColorAlphaByDistance=new Yt(e.maximumRadius/1e3,0,e.maximumRadius/5,1),this._translucency=new zz,yX(this),this.show=!0,this._oceanNormalMapResourceDirty=!0,this._oceanNormalMapResource=new we({url:fn("Assets/Textures/waterNormalsSmall.jpg")}),this.maximumScreenSpaceError=2,this.tileCacheSize=100,this.loadingDescendantLimit=20,this.preloadAncestors=!0,this.preloadSiblings=!1,this.fillHighlightColor=void 0,this.enableLighting=!1,this.lambertDiffuseMultiplier=.9,this.dynamicAtmosphereLighting=!0,this.dynamicAtmosphereLightingFromSun=!1,this.showGroundAtmosphere=te.WGS84.equals(e),this.atmosphereLightIntensity=10,this.atmosphereRayleighCoefficient=new d(55e-7,13e-6,284e-7),this.atmosphereMieCoefficient=new d(21e-6,21e-6,21e-6),this.atmosphereRayleighScaleHeight=1e4,this.atmosphereMieScaleHeight=3200,this.atmosphereMieAnisotropy=.9,this.lightingFadeOutDistance=D.PI_OVER_TWO*e.minimumRadius,this.lightingFadeInDistance=D.PI*e.minimumRadius,this.nightFadeOutDistance=D.PI_OVER_TWO*e.minimumRadius,this.nightFadeInDistance=5*D.PI_OVER_TWO*e.minimumRadius,this.showWaterEffect=!0,this.depthTestAgainstTerrain=!1,this.shadows=Dn.RECEIVE_ONLY,this.atmosphereHueShift=0,this.atmosphereSaturationShift=0,this.atmosphereBrightnessShift=0,this.showSkirts=!0,this.backFaceCulling=!0,this._oceanNormalMap=void 0,this._zoomedOutOceanSpecularIntensity=void 0,this.vertexShadowDarkness=.3}Object.defineProperties(Mh.prototype,{ellipsoid:{get:function(){return this._ellipsoid}},imageryLayers:{get:function(){return this._imageryLayerCollection}},imageryLayersUpdatedEvent:{get:function(){return this._surface.tileProvider.imageryLayersUpdatedEvent}},tilesLoaded:{get:function(){return l(this._surface)?this._surface._tileLoadQueueHigh.length===0&&this._surface._tileLoadQueueMedium.length===0&&this._surface._tileLoadQueueLow.length===0:!0}},baseColor:{get:function(){return this._surface.tileProvider.baseColor},set:function(e){this._surface.tileProvider.baseColor=e}},clippingPlanes:{get:function(){return this._surface.tileProvider.clippingPlanes},set:function(e){this._surface.tileProvider.clippingPlanes=e}},clippingPolygons:{get:function(){return this._surface.tileProvider.clippingPolygons},set:function(e){this._surface.tileProvider.clippingPolygons=e}},cartographicLimitRectangle:{get:function(){return this._surface.tileProvider.cartographicLimitRectangle},set:function(e){l(e)||(e=ae.clone(ae.MAX_VALUE)),this._surface.tileProvider.cartographicLimitRectangle=e}},oceanNormalMapUrl:{get:function(){return this._oceanNormalMapResource.url},set:function(e){this._oceanNormalMapResource.url=e,this._oceanNormalMapResourceDirty=!0}},terrainProvider:{get:function(){return this._terrainProvider},set:function(e){e!==this._terrainProvider&&(this._terrainProvider=e,this._terrainProviderChanged.raiseEvent(e),l(this._material)&&yX(this))}},terrainProviderChanged:{get:function(){return this._terrainProviderChanged}},tileLoadProgressEvent:{get:function(){return this._surface.tileLoadProgressEvent}},material:{get:function(){return this._material},set:function(e){this._material!==e&&(this._material=e,yX(this))}},undergroundColor:{get:function(){return this._undergroundColor},set:function(e){this._undergroundColor=G.clone(e,this._undergroundColor)}},undergroundColorAlphaByDistance:{get:function(){return this._undergroundColorAlphaByDistance},set:function(e){this._undergroundColorAlphaByDistance=Yt.clone(e,this._undergroundColorAlphaByDistance)}},translucency:{get:function(){return this._translucency}}});function yX(e){let t=[],n=l(e._material)&&(l(e._material.shaderSource.match(/slope/))||l(e._material.shaderSource.match("normalEC"))),i=[bm,eP];l(e._material)&&(!n||e._terrainProvider.requestVertexNormals)?(i.push(e._material.shaderSource),t.push("APPLY_MATERIAL"),e._surface._tileProvider.materialUniformMap=e._material._uniforms):e._surface._tileProvider.materialUniformMap=void 0,i.push(Az),e._surfaceShaderSet.baseVertexShaderSource=new We({sources:[bm,eP,pz],defines:t}),e._surfaceShaderSet.baseFragmentShaderSource=new We({sources:i,defines:t}),e._surfaceShaderSet.material=e._material}function _ht(e){return function(t,n){let i=le.distanceSquaredTo(t.pickBoundingSphere,e),o=le.distanceSquaredTo(n.pickBoundingSphere,e);return i-o}}var yht=[],Cht={start:0,stop:0};Mh.prototype.pickWorldCoordinates=function(e,t,n,i){n=n??!0;let o=t.mode,r=t.mapProjection,s=yht;s.length=0;let a=this._surface._tilesToRender,c=a.length,u,f;for(f=0;f<c;++f){u=a[f];let A=u.data;if(!l(A))continue;let g=A.pickBoundingSphere;if(o!==ie.SCENE3D)A.pickBoundingSphere=g=le.fromRectangleWithHeights2D(u.rectangle,r,A.tileBoundingRegion.minimumHeight,A.tileBoundingRegion.maximumHeight,g),d.fromElements(g.center.z,g.center.x,g.center.y,g.center);else if(l(A.renderedMesh))le.clone(A.tileBoundingRegion.boundingSphere,g);else continue;let m=Ai.raySphere(e,g,Cht);l(m)&&s.push(A)}s.sort(_ht(e.origin));let h;for(c=s.length,f=0;f<c&&(h=s[f].pick(e,t.mode,t.mapProjection,n,i),!l(h));++f);return h};var Eht=new Ae;Mh.prototype.pick=function(e,t,n){if(n=this.pickWorldCoordinates(e,t,!0,n),l(n)&&t.mode!==ie.SCENE3D){n=d.fromElements(n.y,n.z,n.x,n);let i=t.mapProjection.unproject(n,Eht);n=this._ellipsoid.cartographicToCartesian(i,n)}return n};var Iht=new d,PCe=new d,xht=new Ae,bht=new In;function _X(e,t){return l(e)&&ae.contains(e.rectangle,t)?e:void 0}Mh.prototype.getHeight=function(e){let t=this._surface._levelZeroTiles;if(!l(t))return;let n,i,o=t.length;for(i=0;i<o&&(n=t[i],!ae.contains(n.rectangle,e));++i);if(i>=o)return;let r=n;for(;l(n);)n=_X(n._southwestChild,e)||_X(n._southeastChild,e)||_X(n._northwestChild,e)||n._northeastChild,l(n)&&l(n.data)&&l(n.data.renderedMesh)&&(r=n);if(n=r,!l(n)||!l(n.data)||!l(n.data.renderedMesh))return;let s=this._surface._tileProvider.tilingScheme.projection,a=this._surface._tileProvider.tilingScheme.ellipsoid,c=d.fromRadians(e.longitude,e.latitude,0,a,Iht),u=bht,f=a.geodeticSurfaceNormal(c,u.direction),h=a.getSurfaceNormalIntersectionWithZAxis(c,11500,u.origin);if(!l(h)){let g;l(n.data.tileBoundingRegion)&&(g=n.data.tileBoundingRegion.minimumHeight);let m=Math.min(g??0,-11500),_=d.multiplyByScalar(f,Math.abs(m)+1,PCe);d.subtract(c,_,u.origin)}let A=n.data.pick(u,void 0,s,!1,PCe);if(l(A))return a.cartesianToCartographic(A,xht).height};Mh.prototype.update=function(e){this.show&&e.passes.render&&this._surface.update(e)};Mh.prototype.beginFrame=function(e){let t=this._surface,n=t.tileProvider,i=this.terrainProvider,o=l(i)&&i.hasWaterMask&&i.hasWaterMask;if(o&&this._oceanNormalMapResourceDirty){this._oceanNormalMapResourceDirty=!1;let a=this._oceanNormalMapResource,c=a.url;if(l(c)){let u=this;a.fetchImage().then(function(f){c===u._oceanNormalMapResource.url&&(u._oceanNormalMap=u._oceanNormalMap&&u._oceanNormalMap.destroy(),u._oceanNormalMap=new Nt({context:e.context,source:f}))})}else this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy()}let r=e.passes,s=e.mode;r.render&&(this.showGroundAtmosphere?this._zoomedOutOceanSpecularIntensity=.4:this._zoomedOutOceanSpecularIntensity=.5,t.maximumScreenSpaceError=this.maximumScreenSpaceError,t.tileCacheSize=this.tileCacheSize,t.loadingDescendantLimit=this.loadingDescendantLimit,t.preloadAncestors=this.preloadAncestors,t.preloadSiblings=this.preloadSiblings,n.terrainProvider=this.terrainProvider,n.lightingFadeOutDistance=this.lightingFadeOutDistance,n.lightingFadeInDistance=this.lightingFadeInDistance,n.nightFadeOutDistance=this.nightFadeOutDistance,n.nightFadeInDistance=this.nightFadeInDistance,n.zoomedOutOceanSpecularIntensity=s===ie.SCENE3D?this._zoomedOutOceanSpecularIntensity:0,n.hasWaterMask=o,n.showWaterEffect=this.showWaterEffect,n.oceanNormalMap=this._oceanNormalMap,n.enableLighting=this.enableLighting,n.dynamicAtmosphereLighting=this.dynamicAtmosphereLighting,n.dynamicAtmosphereLightingFromSun=this.dynamicAtmosphereLightingFromSun,n.showGroundAtmosphere=this.showGroundAtmosphere,n.atmosphereLightIntensity=this.atmosphereLightIntensity,n.atmosphereRayleighCoefficient=this.atmosphereRayleighCoefficient,n.atmosphereMieCoefficient=this.atmosphereMieCoefficient,n.atmosphereRayleighScaleHeight=this.atmosphereRayleighScaleHeight,n.atmosphereMieScaleHeight=this.atmosphereMieScaleHeight,n.atmosphereMieAnisotropy=this.atmosphereMieAnisotropy,n.shadows=this.shadows,n.hueShift=this.atmosphereHueShift,n.saturationShift=this.atmosphereSaturationShift,n.brightnessShift=this.atmosphereBrightnessShift,n.fillHighlightColor=this.fillHighlightColor,n.showSkirts=this.showSkirts,n.backFaceCulling=this.backFaceCulling,n.vertexShadowDarkness=this.vertexShadowDarkness,n.undergroundColor=this._undergroundColor,n.undergroundColorAlphaByDistance=this._undergroundColorAlphaByDistance,n.lambertDiffuseMultiplier=this.lambertDiffuseMultiplier,t.beginFrame(e))};Mh.prototype.render=function(e){this.show&&(l(this._material)&&this._material.update(e.context),this._surface.render(e))};Mh.prototype.endFrame=function(e){this.show&&e.passes.render&&this._surface.endFrame(e)};Mh.prototype.isDestroyed=function(){return!1};Mh.prototype.destroy=function(){return this._surfaceShaderSet=this._surfaceShaderSet&&this._surfaceShaderSet.destroy(),this._surface=this._surface&&this._surface.destroy(),this._oceanNormalMap=this._oceanNormalMap&&this._oceanNormalMap.destroy(),ue(this)};var Jz=Mh;function Tht(e,t,n,i){this.rightAscension=e,this.declination=t,this.rotation=n,this.rotationRate=i}var Zz=Tht;var WCe={},Sht=32.184,wht=2451545,RCe=-.0529921,MCe=-.1059842,NCe=13.0120009,LCe=13.3407154,OCe=.9856003,FCe=26.4057084,QCe=13.064993,kCe=.3287146,UCe=1.7484877,GCe=-.1589763,zCe=.0036096,VCe=.1643573,HCe=12.9590088,CX=new K;WCe.ComputeMoon=function(e,t){l(e)||(e=K.now()),CX=K.addSeconds(e,Sht,CX);let n=K.totalDays(CX)-wht,i=n/ri.DAYS_PER_JULIAN_CENTURY,o=(125.045+RCe*n)*D.RADIANS_PER_DEGREE,r=(250.089+MCe*n)*D.RADIANS_PER_DEGREE,s=(260.008+NCe*n)*D.RADIANS_PER_DEGREE,a=(176.625+LCe*n)*D.RADIANS_PER_DEGREE,c=(357.529+OCe*n)*D.RADIANS_PER_DEGREE,u=(311.589+FCe*n)*D.RADIANS_PER_DEGREE,f=(134.963+QCe*n)*D.RADIANS_PER_DEGREE,h=(276.617+kCe*n)*D.RADIANS_PER_DEGREE,A=(34.226+UCe*n)*D.RADIANS_PER_DEGREE,g=(15.134+GCe*n)*D.RADIANS_PER_DEGREE,m=(119.743+zCe*n)*D.RADIANS_PER_DEGREE,_=(239.961+VCe*n)*D.RADIANS_PER_DEGREE,y=(25.053+HCe*n)*D.RADIANS_PER_DEGREE,C=Math.sin(o),E=Math.sin(r),I=Math.sin(s),b=Math.sin(a),S=Math.sin(c),B=Math.sin(u),v=Math.sin(f),P=Math.sin(h),N=Math.sin(A),L=Math.sin(g),p=Math.sin(m),x=Math.sin(_),T=Math.sin(y),w=Math.cos(o),M=Math.cos(r),O=Math.cos(s),U=Math.cos(a),Q=Math.cos(c),z=Math.cos(u),F=Math.cos(f),H=Math.cos(h),W=Math.cos(A),Z=Math.cos(g),Y=Math.cos(m),$=Math.cos(_),X=Math.cos(y),he=(269.9949+.0031*i-3.8787*C-.1204*E+.07*I-.0172*b+.0072*B-.0052*L+.0043*T)*D.RADIANS_PER_DEGREE,ge=(66.5392+.013*i+1.5419*w+.0239*M-.0278*O+.0068*U-.0029*z+9e-4*F+8e-4*Z-9e-4*X)*D.RADIANS_PER_DEGREE,fe=(38.3213+13.17635815*n-14e-13*n*n+3.561*C+.1208*E-.0642*I+.0158*b+.0252*S-.0066*B-.0047*v-.0046*P+.0028*N+.0052*L+.004*p+.0019*x-.0044*T)*D.RADIANS_PER_DEGREE,ye=(13.17635815-14e-13*(2*n)+3.561*w*RCe+.1208*M*MCe-.0642*O*NCe+.0158*U*LCe+.0252*Q*OCe-.0066*z*FCe-.0047*F*QCe-.0046*H*kCe+.0028*W*UCe+.0052*Z*GCe+.004*Y*zCe+.0019*$*VCe-.0044*X*HCe)/86400*D.RADIANS_PER_DEGREE;return l(t)||(t=new Zz),t.rightAscension=he,t.declination=ge,t.rotation=fe,t.rotationRate=ye,t};var $z=WCe;function jCe(e){(!l(e)||typeof e!="function")&&(e=$z.ComputeMoon),this._computeFunction=e}var Bht=new d,Dht=new d,vht=new d;function Pht(e,t,n){let i=Bht;i.x=Math.cos(e+D.PI_OVER_TWO),i.y=Math.sin(e+D.PI_OVER_TWO),i.z=0;let o=Math.cos(t),r=vht;r.x=o*Math.cos(e),r.y=o*Math.sin(e),r.z=Math.sin(t);let s=d.cross(r,i,Dht);return l(n)||(n=new J),n[0]=i.x,n[1]=s.x,n[2]=r.x,n[3]=i.y,n[4]=s.y,n[5]=r.y,n[6]=i.z,n[7]=s.z,n[8]=r.z,n}var Rht=new J,Mht=new Le;jCe.prototype.evaluate=function(e,t){l(e)||(e=K.now());let n=this._computeFunction(e),i=Pht(n.rightAscension,n.declination,t),o=D.zeroToTwoPi(n.rotation),r=Le.fromAxisAngle(d.UNIT_Z,o,Mht),s=J.fromQuaternion(Le.conjugate(r,r),Rht);return J.multiply(s,i,i)};var eV=jCe;var EX={position:0};function tV(e){e=e??V.EMPTY_OBJECT,this.center=d.clone(e.center??d.ZERO),this._center=new d,this.radii=d.clone(e.radii),this._radii=new d,this._oneOverEllipsoidRadiiSquared=new d,this._boundingSphere=new le,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=new R,this._computedModelMatrix=new R,this.show=e.show??!0,this.material=e.material??ao.fromType(ao.ColorType),this._material=void 0,this._translucent=void 0,this.id=e.id,this._id=void 0,this.debugShowBoundingVolume=e.debugShowBoundingVolume??!1,this.onlySunLighting=e.onlySunLighting??!1,this._onlySunLighting=!1,this._depthTestEnabled=e.depthTestEnabled??!0,this._useLogDepth=!1,this._sp=void 0,this._rs=void 0,this._va=void 0,this._pickSP=void 0,this._pickId=void 0,this._colorCommand=new nt({owner:e._owner??this}),this._pickCommand=new nt({owner:e._owner??this,pickOnly:!0});let t=this;this._uniforms={u_radii:function(){return t.radii},u_oneOverEllipsoidRadiiSquared:function(){return t._oneOverEllipsoidRadiiSquared}},this._pickUniforms={czm_pickColor:function(){return t._pickId.color}}}function Nht(e){let t=e.cache.ellipsoidPrimitive_vertexArray;if(l(t))return t;let n=yc.createGeometry(yc.fromDimensions({dimensions:new d(2,2,2),vertexFormat:Pe.POSITION_ONLY}));return t=li.fromGeometry({context:e,geometry:n,attributeLocations:EX,bufferUsage:Qe.STATIC_DRAW,interleave:!0}),e.cache.ellipsoidPrimitive_vertexArray=t,t}tV.prototype.update=function(e){if(!this.show||e.mode!==ie.SCENE3D||!l(this.center)||!l(this.radii))return;let t=e.context,n=this.material.isTranslucent(),i=this._translucent!==n;(!l(this._rs)||i)&&(this._translucent=n,this._rs=Ue.fromCache({cull:{enabled:!0,face:Mi.FRONT},depthTest:{enabled:this._depthTestEnabled},depthMask:!n&&t.fragmentDepth,blending:n?pn.ALPHA_BLEND:void 0})),l(this._va)||(this._va=Nht(t));let o=!1,r=this.radii;if(!d.equals(this._radii,r)){d.clone(r,this._radii);let _=this._oneOverEllipsoidRadiiSquared;_.x=1/(r.x*r.x),_.y=1/(r.y*r.y),_.z=1/(r.z*r.z),o=!0}(!R.equals(this.modelMatrix,this._modelMatrix)||!d.equals(this.center,this._center))&&(R.clone(this.modelMatrix,this._modelMatrix),d.clone(this.center,this._center),R.multiplyByTranslation(this.modelMatrix,this.center,this._computedModelMatrix),o=!0),o&&(d.clone(d.ZERO,this._boundingSphere.center),this._boundingSphere.radius=d.maximumComponent(r),le.transform(this._boundingSphere,this._computedModelMatrix,this._boundingSphere));let s=this._material!==this.material;this._material=this.material,this._material.update(t);let a=this.onlySunLighting!==this._onlySunLighting;this._onlySunLighting=this.onlySunLighting;let c=e.useLogDepth,u=this._useLogDepth!==c;this._useLogDepth=c;let f=this._colorCommand,h,A;(s||a||i||u)&&(h=new We({sources:[$v]}),A=new We({sources:[this.material.shaderSource,Zv]}),this.onlySunLighting&&A.defines.push("ONLY_SUN_LIGHTING"),!n&&t.fragmentDepth&&A.defines.push("WRITE_DEPTH"),this._useLogDepth&&(h.defines.push("LOG_DEPTH"),A.defines.push("LOG_DEPTH")),this._sp=ln.replaceCache({context:t,shaderProgram:this._sp,vertexShaderSource:h,fragmentShaderSource:A,attributeLocations:EX}),f.vertexArray=this._va,f.renderState=this._rs,f.shaderProgram=this._sp,f.uniformMap=wt(this._uniforms,this.material._uniforms),f.executeInClosestFrustum=n);let g=e.commandList,m=e.passes;if(m.render&&(f.boundingVolume=this._boundingSphere,f.debugShowBoundingVolume=this.debugShowBoundingVolume,f.modelMatrix=this._computedModelMatrix,f.pass=n?Be.TRANSLUCENT:Be.OPAQUE,g.push(f)),m.pick){let _=this._pickCommand;(!l(this._pickId)||this._id!==this.id)&&(this._id=this.id,this._pickId=this._pickId&&this._pickId.destroy(),this._pickId=t.createPickId({primitive:this,id:this.id})),(s||a||!l(this._pickSP)||u)&&(h=new We({sources:[$v]}),A=new We({sources:[this.material.shaderSource,Zv],pickColorQualifier:"uniform"}),this.onlySunLighting&&A.defines.push("ONLY_SUN_LIGHTING"),!n&&t.fragmentDepth&&A.defines.push("WRITE_DEPTH"),this._useLogDepth&&(h.defines.push("LOG_DEPTH"),A.defines.push("LOG_DEPTH")),this._pickSP=ln.replaceCache({context:t,shaderProgram:this._pickSP,vertexShaderSource:h,fragmentShaderSource:A,attributeLocations:EX}),_.vertexArray=this._va,_.renderState=this._rs,_.shaderProgram=this._pickSP,_.uniformMap=wt(wt(this._uniforms,this._pickUniforms),this.material._uniforms),_.executeInClosestFrustum=n),_.boundingVolume=this._boundingSphere,_.modelMatrix=this._computedModelMatrix,_.pass=n?Be.TRANSLUCENT:Be.OPAQUE,g.push(_)}};tV.prototype.isDestroyed=function(){return!1};tV.prototype.destroy=function(){return this._sp=this._sp&&this._sp.destroy(),this._pickSP=this._pickSP&&this._pickSP.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),ue(this)};var nV=tV;function cP(e){e=e??V.EMPTY_OBJECT;let t=e.textureUrl;l(t)||(t=fn("Assets/Textures/moonSmall.jpg")),this.show=e.show??!0,this.textureUrl=t,this._ellipsoid=e.ellipsoid??te.MOON,this.onlySunLighting=e.onlySunLighting??!0,this._ellipsoidPrimitive=new nV({radii:this.ellipsoid.radii,material:ao.fromType(ao.ImageType),depthTestEnabled:!1,_owner:this}),this._ellipsoidPrimitive.material.translucent=!1,this._axes=new eV}Object.defineProperties(cP.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});var iV=new J,Lht=new J,Oht=new d,oV=[];cP.prototype.update=function(e){if(!this.show)return;let t=this._ellipsoidPrimitive;t.material.uniforms.image=this.textureUrl,t.onlySunLighting=this.onlySunLighting;let n=e.time;l(kt.computeIcrfToFixedMatrix(n,iV))||kt.computeTemeToPseudoFixedMatrix(n,iV);let i=this._axes.evaluate(n,Lht);J.transpose(i,i),J.multiply(iV,i,i);let o=$E.computeMoonPositionInEarthInertialFrame(n,Oht);J.multiplyByVector(iV,o,o),R.fromRotationTranslation(i,o,t.modelMatrix);let r=e.commandList;return e.commandList=oV,oV.length=0,t.update(e),e.commandList=r,oV.length===1?oV[0]:void 0};cP.prototype.isDestroyed=function(){return!1};cP.prototype.destroy=function(){return this._ellipsoidPrimitive=this._ellipsoidPrimitive&&this._ellipsoidPrimitive.destroy(),ue(this)};var rV=cP;var IX=[],xX=[];function Fht(e,t,n,i,o,r){let s=o-i+1,a=r-o,c=IX,u=xX,f,h;for(f=0;f<s;++f)c[f]=e[i+f];for(h=0;h<a;++h)u[h]=e[o+h+1];f=0,h=0;for(let A=i;A<=r;++A){let g=c[f],m=u[h];f<s&&(h>=a||t(g,m,n)<=0)?(e[A]=g,++f):h<a&&(e[A]=m,++h)}}function bX(e,t,n,i,o){if(i>=o)return;let r=Math.floor((i+o)*.5);bX(e,t,n,i,r),bX(e,t,n,r+1,o),Fht(e,t,n,i,r,o)}function Qht(e,t,n){let i=e.length,o=Math.ceil(i*.5);IX.length=o,xX.length=o,bX(e,t,n,0,i-1),IX.length=0,xX.length=0}var qp=Qht;function kc(e,t){this._occluderPosition=d.clone(e.center),this._occluderRadius=e.radius,this._horizonDistance=0,this._horizonPlaneNormal=void 0,this._horizonPlanePosition=void 0,this._cameraPosition=void 0,this.cameraPosition=t}var sV=new d;Object.defineProperties(kc.prototype,{position:{get:function(){return this._occluderPosition}},radius:{get:function(){return this._occluderRadius}},cameraPosition:{set:function(e){e=d.clone(e,this._cameraPosition);let t=d.subtract(this._occluderPosition,e,sV),n=d.magnitudeSquared(t),i=this._occluderRadius*this._occluderRadius,o,r,s;if(n>i){o=Math.sqrt(n-i),n=1/Math.sqrt(n),r=d.multiplyByScalar(t,n,sV);let a=o*o*n;s=d.add(e,d.multiplyByScalar(r,a,sV),sV)}else o=Number.MAX_VALUE;this._horizonDistance=o,this._horizonPlaneNormal=r,this._horizonPlanePosition=s,this._cameraPosition=e}}});kc.fromBoundingSphere=function(e,t,n){return l(n)?(d.clone(e.center,n._occluderPosition),n._occluderRadius=e.radius,n.cameraPosition=t,n):new kc(e,t)};var qCe=new d;kc.prototype.isPointVisible=function(e){if(this._horizonDistance!==Number.MAX_VALUE){let t=d.subtract(e,this._occluderPosition,qCe),n=this._occluderRadius;if(n=d.magnitudeSquared(t)-n*n,n>0)return n=Math.sqrt(n)+this._horizonDistance,t=d.subtract(e,this._cameraPosition,t),n*n>d.magnitudeSquared(t)}return!1};var kht=new d;kc.prototype.isBoundingSphereVisible=function(e){let t=d.clone(e.center,kht),n=e.radius;if(this._horizonDistance!==Number.MAX_VALUE){let i=d.subtract(t,this._occluderPosition,qCe),o=this._occluderRadius-n;if(o=d.magnitudeSquared(i)-o*o,n<this._occluderRadius)return o>0?(o=Math.sqrt(o)+this._horizonDistance,i=d.subtract(t,this._cameraPosition,i),o*o+n*n>d.magnitudeSquared(i)):!1;if(o>0){i=d.subtract(t,this._cameraPosition,i);let r=d.magnitudeSquared(i),s=this._occluderRadius*this._occluderRadius,a=n*n;return(this._horizonDistance*this._horizonDistance+s)*a>r*s?!0:(o=Math.sqrt(o)+this._horizonDistance,o*o+a>r)}return!0}return!1};var Uht=new d;kc.prototype.computeVisibility=function(e){let t=d.clone(e.center),n=e.radius;if(n>this._occluderRadius)return Gr.FULL;if(this._horizonDistance!==Number.MAX_VALUE){let i=d.subtract(t,this._occluderPosition,Uht),o=this._occluderRadius-n,r=d.magnitudeSquared(i);if(o=r-o*o,o>0){o=Math.sqrt(o)+this._horizonDistance,i=d.subtract(t,this._cameraPosition,i);let s=d.magnitudeSquared(i);return o*o+n*n<s?Gr.NONE:(o=this._occluderRadius+n,o=r-o*o,o>0?(o=Math.sqrt(o)+this._horizonDistance,s<o*o+n*n?Gr.FULL:Gr.PARTIAL):(i=d.subtract(t,this._horizonPlanePosition,i),d.dot(i,this._horizonPlaneNormal)>-n?Gr.PARTIAL:Gr.FULL))}}return Gr.NONE};var aV=new d;kc.computeOccludeePoint=function(e,t,n){let i=d.clone(t),o=d.clone(e.center),r=e.radius,s=n.length,a=d.normalize(d.subtract(i,o,aV),aV),c=-d.dot(a,o),u=kc._anyRotationVector(o,a,c),f=kc._horizonToPlaneNormalDotProduct(e,a,c,u,n[0]);if(!f)return;let h;for(let g=1;g<s;++g){if(h=kc._horizonToPlaneNormalDotProduct(e,a,c,u,n[g]),!h)return;h<f&&(f=h)}if(f<.0017453283658983088)return;let A=r/f;return d.add(o,d.multiplyByScalar(a,A,aV),aV)};var Ght=[];kc.computeOccludeePointFromRectangle=function(e,t){t=t??te.default;let n=ae.subsample(e,t,0,Ght),i=le.fromPoints(n),o=d.ZERO;if(!d.equals(o,i.center))return kc.computeOccludeePoint(new le(o,t.minimumRadius),i.center,n)};var zht=new d;kc._anyRotationVector=function(e,t,n){let i=d.abs(t,zht),o=i.x>i.y?0:1;(o===0&&i.z>i.x||o===1&&i.z>i.y)&&(o=2);let r=new d,s;o===0?(i.x=e.x,i.y=e.y+1,i.z=e.z+1,s=d.UNIT_X):o===1?(i.x=e.x+1,i.y=e.y,i.z=e.z+1,s=d.UNIT_Y):(i.x=e.x+1,i.y=e.y+1,i.z=e.z,s=d.UNIT_Z);let a=(d.dot(t,i)+n)/-d.dot(t,s);return d.normalize(d.subtract(d.add(i,d.multiplyByScalar(s,a,r),i),e,i),i)};var Vht=new d;kc._rotationVector=function(e,t,n,i,o){let r=d.subtract(i,e,Vht);if(r=d.normalize(r,r),d.dot(t,r)<.9999999847691291){let s=d.cross(t,r,r);if(d.magnitude(s)>D.EPSILON13)return d.normalize(s,new d)}return o};var TX=new d,Hht=new d,cV=new d,YCe=new d;kc._horizonToPlaneNormalDotProduct=function(e,t,n,i,o){let r=d.clone(o,TX),s=d.clone(e.center,Hht),a=e.radius,c=d.subtract(s,r,cV),u=d.magnitudeSquared(c),f=a*a;if(u<f)return!1;let h=u-f,A=Math.sqrt(h),m=1/Math.sqrt(u),y=A*m*A;c=d.normalize(c,c);let C=d.add(r,d.multiplyByScalar(c,y,YCe),YCe),E=Math.sqrt(h-y*y),I=this._rotationVector(s,t,n,r,i),b=d.fromElements(I.x*I.x*c.x+(I.x*I.y-I.z)*c.y+(I.x*I.z+I.y)*c.z,(I.x*I.y+I.z)*c.x+I.y*I.y*c.y+(I.y*I.z-I.x)*c.z,(I.x*I.z-I.y)*c.x+(I.y*I.z+I.x)*c.y+I.z*I.z*c.z,TX);b=d.normalize(b,b);let S=d.multiplyByScalar(b,E,TX);I=d.normalize(d.subtract(d.add(C,S,cV),s,cV),cV);let B=d.dot(t,I);I=d.normalize(d.subtract(d.subtract(C,S,I),s,I),I);let v=d.dot(t,I);return B<v?B:v};var lV=kc;function dA(e){e=e??V.EMPTY_OBJECT,this.left=e.left,this._left=void 0,this.right=e.right,this._right=void 0,this.top=e.top,this._top=void 0,this.bottom=e.bottom,this._bottom=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this._cullingVolume=new zs,this._perspectiveMatrix=new R,this._infinitePerspective=new R}function SX(e){let{top:t,bottom:n,right:i,left:o,near:r,far:s}=e;(t!==e._top||n!==e._bottom||o!==e._left||i!==e._right||r!==e._near||s!==e._far)&&(e._left=o,e._right=i,e._top=t,e._bottom=n,e._near=r,e._far=s,e._perspectiveMatrix=R.computePerspectiveOffCenter(o,i,n,t,r,s,e._perspectiveMatrix),e._infinitePerspective=R.computeInfinitePerspectiveOffCenter(o,i,n,t,r,e._infinitePerspective))}Object.defineProperties(dA.prototype,{projectionMatrix:{get:function(){return SX(this),this._perspectiveMatrix}},infiniteProjectionMatrix:{get:function(){return SX(this),this._infinitePerspective}}});var Wht=new d,jht=new d,Yht=new d,qht=new d;dA.prototype.computeCullingVolume=function(e,t,n){let i=this._cullingVolume.planes,o=this.top,r=this.bottom,s=this.right,a=this.left,c=this.near,u=this.far,f=d.cross(t,n,Wht),h=jht;d.multiplyByScalar(t,c,h),d.add(e,h,h);let A=Yht;d.multiplyByScalar(t,u,A),d.add(e,A,A);let g=qht;d.multiplyByScalar(f,a,g),d.add(h,g,g),d.subtract(g,e,g),d.normalize(g,g),d.cross(g,n,g),d.normalize(g,g);let m=i[0];return l(m)||(m=i[0]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),d.multiplyByScalar(f,s,g),d.add(h,g,g),d.subtract(g,e,g),d.cross(n,g,g),d.normalize(g,g),m=i[1],l(m)||(m=i[1]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),d.multiplyByScalar(n,r,g),d.add(h,g,g),d.subtract(g,e,g),d.cross(f,g,g),d.normalize(g,g),m=i[2],l(m)||(m=i[2]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),d.multiplyByScalar(n,o,g),d.add(h,g,g),d.subtract(g,e,g),d.cross(g,f,g),d.normalize(g,g),m=i[3],l(m)||(m=i[3]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,e),m=i[4],l(m)||(m=i[4]=new se),m.x=t.x,m.y=t.y,m.z=t.z,m.w=-d.dot(t,h),d.negate(t,g),m=i[5],l(m)||(m=i[5]=new se),m.x=g.x,m.y=g.y,m.z=g.z,m.w=-d.dot(g,A),this._cullingVolume};dA.prototype.getPixelDimensions=function(e,t,n,i,o){SX(this);let r=1/this.near,s=this.top*r,a=2*i*n*s/t;s=this.right*r;let c=2*i*n*s/e;return o.x=c,o.y=a,o};dA.prototype.clone=function(e){return l(e)||(e=new dA),e.right=this.right,e.left=this.left,e.top=this.top,e.bottom=this.bottom,e.near=this.near,e.far=this.far,e._left=void 0,e._right=void 0,e._top=void 0,e._bottom=void 0,e._near=void 0,e._far=void 0,e};dA.prototype.equals=function(e){return l(e)&&e instanceof dA&&this.right===e.right&&this.left===e.left&&this.top===e.top&&this.bottom===e.bottom&&this.near===e.near&&this.far===e.far};dA.prototype.equalsEpsilon=function(e,t,n){return e===this||l(e)&&e instanceof dA&&D.equalsEpsilon(this.right,e.right,t,n)&&D.equalsEpsilon(this.left,e.left,t,n)&&D.equalsEpsilon(this.top,e.top,t,n)&&D.equalsEpsilon(this.bottom,e.bottom,t,n)&&D.equalsEpsilon(this.near,e.near,t,n)&&D.equalsEpsilon(this.far,e.far,t,n)};var fu=dA;function du(e){e=e??V.EMPTY_OBJECT,this._offCenterFrustum=new fu,this.fov=e.fov,this._fov=void 0,this._fovy=void 0,this._sseDenominator=void 0,this.aspectRatio=e.aspectRatio,this._aspectRatio=void 0,this.near=e.near??1,this._near=this.near,this.far=e.far??5e8,this._far=this.far,this.xOffset=e.xOffset??0,this._xOffset=this.xOffset,this.yOffset=e.yOffset??0,this._yOffset=this.yOffset}du.packedLength=6;du.pack=function(e,t,n){return n=n??0,t[n++]=e.fov,t[n++]=e.aspectRatio,t[n++]=e.near,t[n++]=e.far,t[n++]=e.xOffset,t[n]=e.yOffset,t};du.unpack=function(e,t,n){return t=t??0,l(n)||(n=new du),n.fov=e[t++],n.aspectRatio=e[t++],n.near=e[t++],n.far=e[t++],n.xOffset=e[t++],n.yOffset=e[t],n};function Nh(e){if(!(e.fov!==e._fov||e.aspectRatio!==e._aspectRatio||e.near!==e._near||e.far!==e._far||e.xOffset!==e._xOffset||e.yOffset!==e._yOffset))return;e._aspectRatio=e.aspectRatio,e._fov=e.fov,e._fovy=e.aspectRatio<=1?e.fov:Math.atan(Math.tan(e.fov*.5)/e.aspectRatio)*2,e._near=e.near,e._far=e.far,e._sseDenominator=2*Math.tan(.5*e._fovy),e._xOffset=e.xOffset,e._yOffset=e.yOffset;let n=e._offCenterFrustum;n.top=e.near*Math.tan(.5*e._fovy),n.bottom=-n.top,n.right=e.aspectRatio*n.top,n.left=-n.right,n.near=e.near,n.far=e.far,n.right+=e.xOffset,n.left+=e.xOffset,n.top+=e.yOffset,n.bottom+=e.yOffset}Object.defineProperties(du.prototype,{projectionMatrix:{get:function(){return Nh(this),this._offCenterFrustum.projectionMatrix}},infiniteProjectionMatrix:{get:function(){return Nh(this),this._offCenterFrustum.infiniteProjectionMatrix}},fovy:{get:function(){return Nh(this),this._fovy}},sseDenominator:{get:function(){return Nh(this),this._sseDenominator}},offCenterFrustum:{get:function(){return Nh(this),this._offCenterFrustum}}});du.prototype.computeCullingVolume=function(e,t,n){return Nh(this),this._offCenterFrustum.computeCullingVolume(e,t,n)};du.prototype.getPixelDimensions=function(e,t,n,i,o){return Nh(this),this._offCenterFrustum.getPixelDimensions(e,t,n,i,o)};du.prototype.clone=function(e){return l(e)||(e=new du),e.aspectRatio=this.aspectRatio,e.fov=this.fov,e.near=this.near,e.far=this.far,e._aspectRatio=void 0,e._fov=void 0,e._near=void 0,e._far=void 0,this._offCenterFrustum.clone(e._offCenterFrustum),e};du.prototype.equals=function(e){return!l(e)||!(e instanceof du)?!1:(Nh(this),Nh(e),this.fov===e.fov&&this.aspectRatio===e.aspectRatio&&this._offCenterFrustum.equals(e._offCenterFrustum))};du.prototype.equalsEpsilon=function(e,t,n){return!l(e)||!(e instanceof du)?!1:(Nh(this),Nh(e),D.equalsEpsilon(this.fov,e.fov,t,n)&&D.equalsEpsilon(this.aspectRatio,e.aspectRatio,t,n)&&this._offCenterFrustum.equalsEpsilon(e._offCenterFrustum,t,n))};var Vi=du;function lP(){this._colorTexture=void 0,this._drawCommand=void 0}Object.defineProperties(lP.prototype,{colorTexture:{get:function(){return this._colorTexture}}});function Kht(e,t,n){let i=t.createViewportQuadCommand(rz,{framebuffer:n,renderState:Ue.fromCache({viewport:new Xe(0,0,256,256)})});e._drawCommand=i}lP.prototype.update=function(e){if(!l(this._colorTexture)){let t=e.context,n=new Nt({context:t,width:256,height:256,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,sampler:on.NEAREST});this._colorTexture=n;let i=new as({context:t,colorTextures:[n],destroyAttachments:!1});Kht(this,t,i),this._drawCommand.execute(t),i.destroy(),this._drawCommand.shaderProgram=this._drawCommand.shaderProgram&&this._drawCommand.shaderProgram.destroy()}};lP.prototype.isDestroyed=function(){return!1};lP.prototype.destroy=function(){return this._colorTexture=this._colorTexture&&this._colorTexture.destroy(),ue(this)};var uV=lP;var ZCe={};function Xht(e,t,n){let i,o,r;if(e instanceof Vi){let s=Math.tan(.5*e.fovy);return i=e.near,o=e.near*s,r=e.aspectRatio*o,Math.max(t*i/r,n*i/o)}else if(e instanceof fu)return i=e.near,o=e.top,r=e.right,Math.max(t*i/r,n*i/o);return Math.max(t,n)}var Jht=new d,KCe=new d;function $Ce(e,t,n,i){if(l(i)&&n(.5)>i){let o=n(0),r=n(1),s=n(.5),a=s-o,c=s-r;return function(u){let f=n(u);if(u<=.5){let A=(f-o)/a;return D.lerp(e,-D.PI_OVER_TWO,A)}let h=(f-r)/c;return D.lerp(-D.PI_OVER_TWO,t,1-h)}}return function(o){return D.lerp(e,t,o)}}function BX(e,t,n,i,o){let r=o,s=Math.max(n,i);if(!l(r)){let a=e.position,c=t,u=e.up,f=e.right,h=e.frustum,A=d.subtract(a,c,Jht),g=d.magnitude(d.multiplyByScalar(u,d.dot(A,u),KCe)),m=d.magnitude(d.multiplyByScalar(f,d.dot(A,f),KCe));r=Math.min(Xht(h,g,m)*.2,1e9)}if(s<r){let u=-Math.pow((r-n)*1e6,.125),f=Math.pow((r-i)*1e6,1/8);return function(h){let A=h*(f-u)+u;return-Math.pow(A,8)/1e6+r}}return function(a){return D.lerp(n,i,a)}}function uP(e,t){return D.equalsEpsilon(e,D.TWO_PI,D.EPSILON11)&&(e=0),t>e+Math.PI?e+=D.TWO_PI:t<e-Math.PI&&(e-=D.TWO_PI),e}var eEe=new d;function Zht(e,t,n,i,o,r,s,a){let c=e.camera,u=d.clone(c.position,eEe),f=c.pitch,h=uP(c.heading,i),A=uP(c.roll,r),g=BX(c,n,u.z,n.z,s),m=$Ce(f,o,g,a);function _(y){let C=y.time/t;c.setView({orientation:{heading:D.lerp(h,i,C),pitch:m(C),roll:D.lerp(A,r,C)}}),k.lerp(u,n,C,c.position),c.position.z=g(C)}return _}function $ht(e,t){e.longitude<t.longitude?e.longitude+=D.TWO_PI:t.longitude+=D.TWO_PI}function emt(e,t){let n=e.longitude-t.longitude;n<-D.PI?e.longitude+=D.TWO_PI:n>D.PI&&(t.longitude+=D.TWO_PI)}var tmt=new Ae,nmt=new Ae;function imt(e,t,n,i,o,r,s,a,c,u){let f=e.camera,A=e.mapProjection.ellipsoid,g=Ae.clone(f.positionCartographic,tmt),m=f.pitch,_=uP(f.heading,i),y=uP(f.roll,r),C=A.cartesianToCartographic(n,nmt);g.longitude=D.zeroToTwoPi(g.longitude),C.longitude=D.zeroToTwoPi(C.longitude);let E=!1;if(l(a)){let B=D.zeroToTwoPi(a),v=Math.min(g.longitude,C.longitude),P=Math.max(g.longitude,C.longitude),N=B>=v&&B<=P;if(l(c)){let L=Math.abs(g.longitude-C.longitude),p=D.TWO_PI-L;(N?L:p)<(N?p:L)*c&&!N&&(E=!0)}else N||(E=!0)}E?$ht(g,C):emt(g,C);let I=BX(f,n,g.height,C.height,s),b=$Ce(m,o,I,u);function S(){let B=g.longitude,v=C.longitude,P=g.latitude,N=C.latitude;return function(p){let x=p.time/t,T=d.fromRadians(D.lerp(B,v,x),D.lerp(P,N,x),I(x),A);f.setView({destination:T,orientation:{heading:D.lerp(_,i,x),pitch:b(x),roll:D.lerp(y,r,x)}})}}return S()}function omt(e,t,n,i,o,r,s){let a=e.camera,c=d.clone(a.position,eEe),u=uP(a.heading,i),f=a.frustum.right-a.frustum.left,h=BX(a,n,f,n.z,s);function A(g){let m=g.time/t;a.setView({orientation:{heading:D.lerp(u,i,m)}}),k.lerp(c,n,m,a.position);let _=h(m),y=a.frustum,C=y.top/y.right,E=(_-(y.right-y.left))*.5;y.right+=E,y.left-=E,y.top=C*y.right,y.bottom=-y.top}return A}var XCe=new Ae,rmt=new d;function wX(e,t){return{startObject:{},stopObject:{},duration:0,complete:e,cancel:t}}function JCe(e,t){function n(){typeof t=="function"&&t(),e.enableInputs=!0}return n}ZCe.createTween=function(e,t){t=t??V.EMPTY_OBJECT;let n=t.destination,i=e.mode;if(i===ie.MORPHING)return wX();let o=t.convert??!0,r=e.mapProjection,s=r.ellipsoid,a=t.maximumHeight,c=t.flyOverLongitude,u=t.flyOverLongitudeWeight,f=t.pitchAdjustHeight,h=t.easingFunction;o&&i!==ie.SCENE3D&&(s.cartesianToCartographic(n,XCe),n=r.project(XCe,rmt));let A=e.camera,g=t.endTransform;l(g)&&A._setTransform(g);let m=t.duration;l(m)||(m=Math.ceil(d.distance(A.position,n)/1e6)+2,m=Math.min(m,3));let _=t.heading??0,y=t.pitch??-D.PI_OVER_TWO,C=t.roll??0,E=e.screenSpaceCameraController;E.enableInputs=!1;let I=JCe(E,t.complete),b=JCe(E,t.cancel),S=A.frustum,B=e.mode===ie.SCENE2D;if(B=B&&k.equalsEpsilon(A.position,n,D.EPSILON6),B=B&&D.equalsEpsilon(Math.max(S.right-S.left,S.top-S.bottom),n.z,D.EPSILON6),B=B||e.mode!==ie.SCENE2D&&d.equalsEpsilon(n,A.position,D.EPSILON10),B=B&&D.equalsEpsilon(D.negativePiToPi(_),D.negativePiToPi(A.heading),D.EPSILON10)&&D.equalsEpsilon(D.negativePiToPi(y),D.negativePiToPi(A.pitch),D.EPSILON10)&&D.equalsEpsilon(D.negativePiToPi(C),D.negativePiToPi(A.roll),D.EPSILON10),B)return wX(I,b);let v=new Array(4);if(v[ie.SCENE2D]=omt,v[ie.SCENE3D]=imt,v[ie.COLUMBUS_VIEW]=Zht,m<=0)return wX(function(){v[i](e,1,n,_,y,C,a,c,u,f)({time:1}),typeof I=="function"&&I()},b);let P=v[i](e,m,n,_,y,C,a,c,u,f);if(!l(h)){let N=A.positionCartographic.height,L=i===ie.SCENE3D?s.cartesianToCartographic(n).height:n.z;N>L&&N>11500?h=ps.CUBIC_OUT:h=ps.QUINTIC_IN_OUT}return{duration:m,easingFunction:h,startObject:{time:0},stopObject:{time:m},update:P,complete:I,cancel:b}};var fV=ZCe;var smt={ROTATE:0,INFINITE_SCROLL:1},$u=Object.freeze(smt);function an(e){this._scene=e,this._transform=R.clone(R.IDENTITY),this._invTransform=R.clone(R.IDENTITY),this._actualTransform=R.clone(R.IDENTITY),this._actualInvTransform=R.clone(R.IDENTITY),this._transformChanged=!1,this.position=new d,this._position=new d,this._positionWC=new d,this._positionCartographic=new Ae,this._oldPositionWC=void 0,this.positionWCDeltaMagnitude=0,this.positionWCDeltaMagnitudeLastFrame=0,this.timeSinceMoved=0,this._lastMovedTimestamp=0,this.direction=new d,this._direction=new d,this._directionWC=new d,this.up=new d,this._up=new d,this._upWC=new d,this.right=new d,this._right=new d,this._rightWC=new d,this.frustum=new Vi,this.frustum.aspectRatio=e.drawingBufferWidth/e.drawingBufferHeight,this.frustum.fov=D.toRadians(60),this.defaultMoveAmount=1e5,this.defaultLookAmount=Math.PI/60,this.defaultRotateAmount=Math.PI/3600,this.defaultZoomAmount=1e5,this.constrainedAxis=void 0,this.maximumZoomFactor=1.5,this._moveStart=new _e,this._moveEnd=new _e,this._changed=new _e,this._changedPosition=void 0,this._changedDirection=void 0,this._changedFrustum=void 0,this._changedHeading=void 0,this._changedRoll=void 0,this.percentageChanged=.5,this._viewMatrix=new R,this._invViewMatrix=new R,cEe(this),this._mode=ie.SCENE3D,this._modeChanged=!0;let t=e.mapProjection;this._projection=t,this._maxCoord=t.project(new Ae(Math.PI,D.PI_OVER_TWO)),this._max2Dfrustum=void 0,CEe(this,an.DEFAULT_VIEW_RECTANGLE,this.position,!0);let n=d.magnitude(this.position);n+=n*an.DEFAULT_VIEW_FACTOR,d.normalize(this.position,this.position),d.multiplyByScalar(this.position,n,this.position)}an.TRANSFORM_2D=new R(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);an.TRANSFORM_2D_INVERSE=R.inverseTransformation(an.TRANSFORM_2D,new R);an.DEFAULT_VIEW_RECTANGLE=ae.fromDegrees(-95,-20,-70,90);an.DEFAULT_VIEW_FACTOR=.5;an.DEFAULT_OFFSET=new Eh(0,-D.PI_OVER_FOUR,0);function cEe(e){R.computeView(e._position,e._direction,e._up,e._right,e._viewMatrix),R.multiply(e._viewMatrix,e._actualInvTransform,e._viewMatrix),R.inverseTransformation(e._viewMatrix,e._invViewMatrix)}function amt(e){if(!l(e._oldPositionWC))e._oldPositionWC=d.clone(e.positionWC,e._oldPositionWC);else{e.positionWCDeltaMagnitudeLastFrame=e.positionWCDeltaMagnitude;let t=d.subtract(e.positionWC,e._oldPositionWC,e._oldPositionWC);e.positionWCDeltaMagnitude=d.magnitude(t),e._oldPositionWC=d.clone(e.positionWC,e._oldPositionWC),e.positionWCDeltaMagnitude>0?(e.timeSinceMoved=0,e._lastMovedTimestamp=Oi()):e.timeSinceMoved=Math.max(Oi()-e._lastMovedTimestamp,0)/1e3}}an.prototype.canPreloadFlight=function(){return l(this._currentFlight)&&this._mode!==ie.SCENE2D};an.prototype._updateCameraChanged=function(){let e=this;if(amt(e),e._changed.numberOfListeners===0)return;let t=e.percentageChanged,n=e.heading;l(e._changedHeading)||(e._changedHeading=n);let i=Math.abs(e._changedHeading-n)%D.TWO_PI;i=i>D.PI?D.TWO_PI-i:i;let o=i/Math.PI;o>t&&(e._changedHeading=n);let r=e.roll;l(e._changedRoll)||(e._changedRoll=r);let s=Math.abs(e._changedRoll-r)%D.TWO_PI;s=s>D.PI?D.TWO_PI-s:s;let a=s/Math.PI;if(a>t&&(e._changedRoll=r),(a>t||o>t)&&e._changed.raiseEvent(Math.max(a,o)),e._mode===ie.SCENE2D){if(!l(e._changedFrustum)){e._changedPosition=d.clone(e.position,e._changedPosition),e._changedFrustum=e.frustum.clone();return}let A=e.position,g=e._changedPosition,m=e.frustum,_=e._changedFrustum,y=A.x+m.left,C=A.x+m.right,E=g.x+_.left,I=g.x+_.right,b=A.y+m.bottom,S=A.y+m.top,B=g.y+_.bottom,v=g.y+_.top,P=Math.max(y,E),N=Math.min(C,I),L=Math.max(b,B),p=Math.min(S,v),x;if(P>=N||L>=S)x=1;else{let T=_;y<E&&C>I&&b<B&&S>v&&(T=m),x=1-(N-P)*(p-L)/((T.right-T.left)*(T.top-T.bottom))}x>t&&(e._changed.raiseEvent(x),e._changedPosition=d.clone(e.position,e._changedPosition),e._changedFrustum=e.frustum.clone(e._changedFrustum));return}if(!l(e._changedDirection)){e._changedPosition=d.clone(e.positionWC,e._changedPosition),e._changedDirection=d.clone(e.directionWC,e._changedDirection);return}let c=D.acosClamped(d.dot(e.directionWC,e._changedDirection)),u;l(e.frustum.fovy)?u=c/(e.frustum.fovy*.5):u=c;let h=d.distance(e.positionWC,e._changedPosition)/e.positionCartographic.height;(u>t||h>t)&&(e._changed.raiseEvent(Math.max(u,h)),e._changedPosition=d.clone(e.positionWC,e._changedPosition),e._changedDirection=d.clone(e.directionWC,e._changedDirection))};function cmt(e){kt.basisTo2D(e._projection,e._transform,e._actualTransform)}var lmt=new Ae,umt=new d,dV=new d,fmt=new se,dmt=new se,hmt=new se,mmt=new se,Amt=new se;function pmt(e){let t=e._projection,n=t.ellipsoid,i=R.getColumn(e._transform,3,fmt),o=n.cartesianToCartographic(i,lmt),r=t.project(o,umt),s=dmt;s.x=r.z,s.y=r.x,s.z=r.y,s.w=1;let a=se.clone(se.UNIT_X,Amt),c=se.add(R.getColumn(e._transform,0,dV),i,dV);n.cartesianToCartographic(c,o),t.project(o,r);let u=hmt;u.x=r.z,u.y=r.x,u.z=r.y,u.w=0,d.subtract(u,s,u),u.x=0;let f=mmt;if(d.magnitudeSquared(u)>D.EPSILON10)d.cross(a,u,f);else{let h=se.add(R.getColumn(e._transform,1,dV),i,dV);n.cartesianToCartographic(h,o),t.project(o,r),f.x=r.z,f.y=r.x,f.z=r.y,f.w=0,d.subtract(f,s,f),f.x=0,d.magnitudeSquared(f)<D.EPSILON10&&(se.clone(se.UNIT_Y,u),se.clone(se.UNIT_Z,f))}d.cross(f,a,u),d.normalize(u,u),d.cross(a,u,f),d.normalize(f,f),R.setColumn(e._actualTransform,0,u,e._actualTransform),R.setColumn(e._actualTransform,1,f,e._actualTransform),R.setColumn(e._actualTransform,2,a,e._actualTransform),R.setColumn(e._actualTransform,3,s,e._actualTransform)}var DX=new d;function Gc(e){let t=e._mode,n=!1,i=0;t===ie.SCENE2D&&(i=e.frustum.right-e.frustum.left,n=i!==e._positionCartographic.height);let o=e._position,r=!d.equals(o,e.position)||n;r&&(o=d.clone(e.position,e._position));let s=e._direction,a=!d.equals(s,e.direction);a&&(d.normalize(e.direction,e.direction),s=d.clone(e.direction,e._direction));let c=e._up,u=!d.equals(c,e.up);u&&(d.normalize(e.up,e.up),c=d.clone(e.up,e._up));let f=e._right,h=!d.equals(f,e.right);h&&(d.normalize(e.right,e.right),f=d.clone(e.right,e._right));let A=e._transformChanged||e._modeChanged;e._transformChanged=!1,A&&(R.inverseTransformation(e._transform,e._invTransform),e._mode===ie.COLUMBUS_VIEW||e._mode===ie.SCENE2D?R.equals(R.IDENTITY,e._transform)?R.clone(an.TRANSFORM_2D,e._actualTransform):e._mode===ie.COLUMBUS_VIEW?cmt(e):pmt(e):R.clone(e._transform,e._actualTransform),R.inverseTransformation(e._actualTransform,e._actualInvTransform),e._modeChanged=!1);let g=e._actualTransform;if(r||A)if(e._positionWC=R.multiplyByPoint(g,o,e._positionWC),t===ie.SCENE3D||t===ie.MORPHING)e._positionCartographic=e._projection.ellipsoid.cartesianToCartographic(e._positionWC,e._positionCartographic);else{let m=DX;m.x=e._positionWC.y,m.y=e._positionWC.z,m.z=e._positionWC.x,t===ie.SCENE2D&&(m.z=i),e._projection.unproject(m,e._positionCartographic)}if(a||u||h){let m=d.dot(s,d.cross(c,f,DX));if(Math.abs(1-m)>D.EPSILON2){let _=1/d.magnitudeSquared(c),y=d.dot(c,s)*_,C=d.multiplyByScalar(s,y,DX);c=d.normalize(d.subtract(c,C,e._up),e._up),d.clone(c,e.up),f=d.cross(s,c,e._right),d.clone(f,e.right)}}(a||A)&&(e._directionWC=R.multiplyByPointAsVector(g,s,e._directionWC),d.normalize(e._directionWC,e._directionWC)),(u||A)&&(e._upWC=R.multiplyByPointAsVector(g,c,e._upWC),d.normalize(e._upWC,e._upWC)),(h||A)&&(e._rightWC=R.multiplyByPointAsVector(g,f,e._rightWC),d.normalize(e._rightWC,e._rightWC)),(r||a||u||h||A)&&cEe(e)}function lEe(e,t){let n;return D.equalsEpsilon(Math.abs(e.z),1,D.EPSILON3)?n=Math.atan2(t.y,t.x)-D.PI_OVER_TWO:n=Math.atan2(e.y,e.x)-D.PI_OVER_TWO,D.TWO_PI-D.zeroToTwoPi(n)}function uEe(e){return D.PI_OVER_TWO-D.acosClamped(e.z)}function fEe(e,t,n){let i=0;return D.equalsEpsilon(Math.abs(e.z),1,D.EPSILON3)||(i=Math.atan2(-n.z,t.z),i=D.zeroToTwoPi(i+D.TWO_PI)),i}var AV=new R,pV=new R;Object.defineProperties(an.prototype,{transform:{get:function(){return this._transform}},inverseTransform:{get:function(){return Gc(this),this._invTransform}},viewMatrix:{get:function(){return Gc(this),this._viewMatrix}},inverseViewMatrix:{get:function(){return Gc(this),this._invViewMatrix}},positionCartographic:{get:function(){return Gc(this),this._positionCartographic}},positionWC:{get:function(){return Gc(this),this._positionWC}},directionWC:{get:function(){return Gc(this),this._directionWC}},upWC:{get:function(){return Gc(this),this._upWC}},rightWC:{get:function(){return Gc(this),this._rightWC}},heading:{get:function(){if(this._mode!==ie.MORPHING){let e=this._projection.ellipsoid,t=R.clone(this._transform,AV),n=kt.eastNorthUpToFixedFrame(this.positionWC,e,pV);this._setTransform(n);let i=lEe(this.direction,this.up);return this._setTransform(t),i}}},pitch:{get:function(){if(this._mode!==ie.MORPHING){let e=this._projection.ellipsoid,t=R.clone(this._transform,AV),n=kt.eastNorthUpToFixedFrame(this.positionWC,e,pV);this._setTransform(n);let i=uEe(this.direction);return this._setTransform(t),i}}},roll:{get:function(){if(this._mode!==ie.MORPHING){let e=this._projection.ellipsoid,t=R.clone(this._transform,AV),n=kt.eastNorthUpToFixedFrame(this.positionWC,e,pV);this._setTransform(n);let i=fEe(this.direction,this.up,this.right);return this._setTransform(t),i}}},moveStart:{get:function(){return this._moveStart}},moveEnd:{get:function(){return this._moveEnd}},changed:{get:function(){return this._changed}}});an.prototype.update=function(e){let t=!1;if(e!==this._mode&&(this._mode=e,this._modeChanged=e!==ie.MORPHING,t=this._mode===ie.SCENE2D),t){let n=this._max2Dfrustum=this.frustum.clone(),i=2,o=n.top/n.right;n.right=this._maxCoord.x*i,n.left=-n.right,n.top=o*n.right,n.bottom=-n.top}this._mode===ie.SCENE2D&&AEe(this,this.position)};var gmt=new d,_mt=new d,ymt=new d;an.prototype._setTransform=function(e){let t=d.clone(this.positionWC,gmt),n=d.clone(this.upWC,_mt),i=d.clone(this.directionWC,ymt);R.clone(e,this._transform),this._transformChanged=!0,Gc(this);let o=this._actualInvTransform;R.multiplyByPoint(o,t,this.position),R.multiplyByPointAsVector(o,i,this.direction),R.multiplyByPointAsVector(o,n,this.up),d.cross(this.direction,this.up,this.right),Gc(this)};var Cmt=new k,Emt=new In,Imt=new d,xmt=new d;function dEe(e){if(!R.equals(R.IDENTITY,e.transform))return d.magnitude(e.position);let t=e._scene,n=t.globe,i=Cmt;i.x=t.drawingBufferWidth/t.pixelRatio/2,i.y=t.drawingBufferHeight/t.pixelRatio/2;let o;if(l(n)){let a=e.getPickRay(i,Emt);o=n.pickWorldCoordinates(a,t,!0,Imt)}let r;t.pickPositionSupported&&(r=t.pickPositionWorldCoordinates(i,xmt));let s;if(l(o)||l(r)){let a=l(r)?d.distance(r,e.positionWC):Number.POSITIVE_INFINITY,c=l(o)?d.distance(o,e.positionWC):Number.POSITIVE_INFINITY;s=Math.min(a,c)}else s=Math.max(e.positionCartographic.height,0);return s}an.prototype._adjustOrthographicFrustum=function(e){this.frustum instanceof An&&(!e&&this._positionCartographic.height<15e4||(this.frustum.width=dEe(this)))};var gV=new d,NX=new R,bmt=new R,LX=new Le,OX=new J,hEe=new Ae;function Tmt(e,t,n){let i=R.clone(e.transform,NX),o=kt.eastNorthUpToFixedFrame(t,e._projection.ellipsoid,bmt);e._setTransform(o),d.clone(d.ZERO,e.position),n.heading=n.heading-D.PI_OVER_TWO;let r=Le.fromHeadingPitchRoll(n,LX),s=J.fromQuaternion(r,OX);J.getColumn(s,0,e.direction),J.getColumn(s,2,e.up),d.cross(e.direction,e.up,e.right),e._setTransform(i),e._adjustOrthographicFrustum(!0)}function Smt(e,t,n,i){let o=R.clone(e.transform,NX);if(e._setTransform(R.IDENTITY),!d.equals(t,e.positionWC)){if(i){let a=e._projection,c=a.ellipsoid.cartesianToCartographic(t,hEe);t=a.project(c,gV)}d.clone(t,e.position)}n.heading=n.heading-D.PI_OVER_TWO;let r=Le.fromHeadingPitchRoll(n,LX),s=J.fromQuaternion(r,OX);J.getColumn(s,0,e.direction),J.getColumn(s,2,e.up),d.cross(e.direction,e.up,e.right),e._setTransform(o),e._adjustOrthographicFrustum(!0)}function wmt(e,t,n,i){let o=R.clone(e.transform,NX);if(e._setTransform(R.IDENTITY),!d.equals(t,e.positionWC)){if(i){let c=e._projection,u=c.ellipsoid.cartesianToCartographic(t,hEe);t=c.project(u,gV)}k.clone(t,e.position);let r=-t.z*.5,s=-r,a=e.frustum;if(s>r){let c=a.top/a.right;a.right=s,a.left=r,a.top=a.right*c,a.bottom=-a.top}}if(e._scene.mapMode2D===$u.ROTATE){n.heading=n.heading-D.PI_OVER_TWO,n.pitch=-D.PI_OVER_TWO,n.roll=0;let r=Le.fromHeadingPitchRoll(n,LX),s=J.fromQuaternion(r,OX);J.getColumn(s,2,e.up),d.cross(e.direction,e.up,e.right)}e._setTransform(o)}var Bmt=new d,Dmt=new d,vmt=new d;function mEe(e,t,n,i){let o=d.clone(n.direction,Bmt),r=d.clone(n.up,Dmt);if(e._scene.mode===ie.SCENE3D){let a=e._projection.ellipsoid,c=kt.eastNorthUpToFixedFrame(t,a,AV),u=R.inverseTransformation(c,pV);R.multiplyByPointAsVector(u,o,o),R.multiplyByPointAsVector(u,r,r)}let s=d.cross(o,r,vmt);return i.heading=lEe(o,r),i.pitch=uEe(o),i.roll=fEe(o,r,s),i}var MX={destination:void 0,orientation:{direction:void 0,up:void 0,heading:void 0,pitch:void 0,roll:void 0},convert:void 0,endTransform:void 0},FT=new pc;an.prototype.setView=function(e){e=e??V.EMPTY_OBJECT;let t=e.orientation??V.EMPTY_OBJECT,n=this._mode;if(n===ie.MORPHING)return;l(e.endTransform)&&this._setTransform(e.endTransform);let i=e.convert??!0,o=e.destination??d.clone(this.positionWC,gV);l(o)&&l(o.west)&&(o=this.getRectangleCameraCoordinates(o,gV),i=!1),l(t.direction)&&(t=mEe(this,o,t,MX.orientation)),FT.heading=t.heading??0,FT.pitch=t.pitch??-D.PI_OVER_TWO,FT.roll=t.roll??0,n===ie.SCENE3D?Tmt(this,o,FT):n===ie.SCENE2D?wmt(this,o,FT,i):Smt(this,o,FT,i)};var Pmt=new d;an.prototype.flyHome=function(e){let t=this._mode;if(t===ie.MORPHING&&this._scene.completeMorph(),t===ie.SCENE2D)this.flyTo({destination:an.DEFAULT_VIEW_RECTANGLE,duration:e,endTransform:R.IDENTITY});else if(t===ie.SCENE3D){let n=this.getRectangleCameraCoordinates(an.DEFAULT_VIEW_RECTANGLE),i=d.magnitude(n);i+=i*an.DEFAULT_VIEW_FACTOR,d.normalize(n,n),d.multiplyByScalar(n,i,n),this.flyTo({destination:n,duration:e,endTransform:R.IDENTITY})}else if(t===ie.COLUMBUS_VIEW){let n=this._projection.ellipsoid.maximumRadius,i=new d(0,-1,1);i=d.multiplyByScalar(d.normalize(i,i),5*n,i),this.flyTo({destination:i,duration:e,orientation:{heading:0,pitch:-Math.acos(d.normalize(i,Pmt).z),roll:0},endTransform:R.IDENTITY,convert:!1})}};an.prototype.worldToCameraCoordinates=function(e,t){return l(t)||(t=new se),Gc(this),R.multiplyByVector(this._actualInvTransform,e,t)};an.prototype.worldToCameraCoordinatesPoint=function(e,t){return l(t)||(t=new d),Gc(this),R.multiplyByPoint(this._actualInvTransform,e,t)};an.prototype.worldToCameraCoordinatesVector=function(e,t){return l(t)||(t=new d),Gc(this),R.multiplyByPointAsVector(this._actualInvTransform,e,t)};an.prototype.cameraToWorldCoordinates=function(e,t){return l(t)||(t=new se),Gc(this),R.multiplyByVector(this._actualTransform,e,t)};an.prototype.cameraToWorldCoordinatesPoint=function(e,t){return l(t)||(t=new d),Gc(this),R.multiplyByPoint(this._actualTransform,e,t)};an.prototype.cameraToWorldCoordinatesVector=function(e,t){return l(t)||(t=new d),Gc(this),R.multiplyByPointAsVector(this._actualTransform,e,t)};function AEe(e,t){let n=e._scene.mapMode2D===$u.ROTATE,i=e._maxCoord.x,o=e._maxCoord.y,r,s;n?(s=i,r=-s):(s=t.x-i*2,r=t.x+i*2),t.x>i&&(t.x=s),t.x<-i&&(t.x=r),t.y>o&&(t.y=o),t.y<-o&&(t.y=-o)}var tEe=new d;an.prototype.move=function(e,t){let n=this.position;d.multiplyByScalar(e,t,tEe),d.add(n,tEe,n),this._mode===ie.SCENE2D&&AEe(this,n),this._adjustOrthographicFrustum(!0)};an.prototype.moveForward=function(e){e=e??this.defaultMoveAmount,this._mode===ie.SCENE2D?_V(this,e):this.move(this.direction,e)};an.prototype.moveBackward=function(e){e=e??this.defaultMoveAmount,this._mode===ie.SCENE2D?_V(this,-e):this.move(this.direction,-e)};an.prototype.moveUp=function(e){e=e??this.defaultMoveAmount,this.move(this.up,e)};an.prototype.moveDown=function(e){e=e??this.defaultMoveAmount,this.move(this.up,-e)};an.prototype.moveRight=function(e){e=e??this.defaultMoveAmount,this.move(this.right,e)};an.prototype.moveLeft=function(e){e=e??this.defaultMoveAmount,this.move(this.right,-e)};an.prototype.lookLeft=function(e){e=e??this.defaultLookAmount,this._mode!==ie.SCENE2D&&this.look(this.up,-e)};an.prototype.lookRight=function(e){e=e??this.defaultLookAmount,this._mode!==ie.SCENE2D&&this.look(this.up,e)};an.prototype.lookUp=function(e){e=e??this.defaultLookAmount,this._mode!==ie.SCENE2D&&this.look(this.right,-e)};an.prototype.lookDown=function(e){e=e??this.defaultLookAmount,this._mode!==ie.SCENE2D&&this.look(this.right,e)};var Rmt=new Le,Mmt=new J;an.prototype.look=function(e,t){let n=t??this.defaultLookAmount,i=Le.fromAxisAngle(e,-n,Rmt),o=J.fromQuaternion(i,Mmt),r=this.direction,s=this.up,a=this.right;J.multiplyByVector(o,r,r),J.multiplyByVector(o,s,s),J.multiplyByVector(o,a,a)};an.prototype.twistLeft=function(e){e=e??this.defaultLookAmount,this.look(this.direction,e)};an.prototype.twistRight=function(e){e=e??this.defaultLookAmount,this.look(this.direction,-e)};var Nmt=new Le,Lmt=new J;an.prototype.rotate=function(e,t){let n=t??this.defaultRotateAmount,i=Le.fromAxisAngle(e,-n,Nmt),o=J.fromQuaternion(i,Lmt);J.multiplyByVector(o,this.position,this.position),J.multiplyByVector(o,this.direction,this.direction),J.multiplyByVector(o,this.up,this.up),d.cross(this.direction,this.up,this.right),d.cross(this.right,this.direction,this.up),this._adjustOrthographicFrustum(!1)};an.prototype.rotateDown=function(e){e=e??this.defaultRotateAmount,pEe(this,e)};an.prototype.rotateUp=function(e){e=e??this.defaultRotateAmount,pEe(this,-e)};var Omt=new d,Fmt=new d,Qmt=new d,nEe=new d;function pEe(e,t){let n=e.position;if(l(e.constrainedAxis)&&!d.equalsEpsilon(e.position,d.ZERO,D.EPSILON2)){let i=d.normalize(n,Omt),o=d.equalsEpsilon(i,e.constrainedAxis,D.EPSILON2),r=d.equalsEpsilon(i,d.negate(e.constrainedAxis,nEe),D.EPSILON2);if(!o&&!r){let s=d.normalize(e.constrainedAxis,Fmt),a=d.dot(i,s),c=D.acosClamped(a);t>0&&t>c&&(t=c-D.EPSILON4),a=d.dot(i,d.negate(s,nEe)),c=D.acosClamped(a),t<0&&-t>c&&(t=-c+D.EPSILON4);let u=d.cross(s,i,Qmt);e.rotate(u,t)}else(o&&t<0||r&&t>0)&&e.rotate(e.right,t)}else e.rotate(e.right,t)}an.prototype.rotateRight=function(e){e=e??this.defaultRotateAmount,gEe(this,-e)};an.prototype.rotateLeft=function(e){e=e??this.defaultRotateAmount,gEe(this,e)};function gEe(e,t){l(e.constrainedAxis)?e.rotate(e.constrainedAxis,t):e.rotate(e.up,t)}function _V(e,t){let n=e.frustum,i;if(t=t*.5,Math.abs(n.top)+Math.abs(n.bottom)>Math.abs(n.left)+Math.abs(n.right)){let o=n.top-t,r=n.bottom+t,s=e._maxCoord.y;e._scene.mapMode2D===$u.ROTATE&&(s*=e.maximumZoomFactor),r>s&&(r=s,o=-s),o<=r&&(o=1,r=-1),i=n.right/n.top,n.top=o,n.bottom=r,n.right=n.top*i,n.left=-n.right}else{let o=n.right-t,r=n.left+t,s=e._maxCoord.x;e._scene.mapMode2D===$u.ROTATE&&(s*=e.maximumZoomFactor),o>s&&(o=s,r=-s),o<=r&&(o=1,r=-1),i=n.top/n.right,n.right=o,n.left=r,n.top=n.right*i,n.bottom=-n.top}}function _Ee(e,t){e.move(e.direction,t)}an.prototype.zoomIn=function(e){e=e??this.defaultZoomAmount,this._mode===ie.SCENE2D?_V(this,e):_Ee(this,e)};an.prototype.zoomOut=function(e){e=e??this.defaultZoomAmount,this._mode===ie.SCENE2D?_V(this,-e):_Ee(this,-e)};an.prototype.getMagnitude=function(){if(this._mode===ie.SCENE3D)return d.magnitude(this.position);if(this._mode===ie.COLUMBUS_VIEW)return Math.abs(this.position.z);if(this._mode===ie.SCENE2D)return Math.max(this.frustum.right-this.frustum.left,this.frustum.top-this.frustum.bottom)};var kmt=new R;an.prototype.lookAt=function(e,t){let i=this._scene.ellipsoid??te.default,o=kt.eastNorthUpToFixedFrame(e,i,kmt);this.lookAtTransform(o,t)};var Umt=new d,Gmt=new Le,zmt=new Le,Vmt=new J;function yEe(e,t,n){t=D.clamp(t,-D.PI_OVER_TWO,D.PI_OVER_TWO),e=D.zeroToTwoPi(e)-D.PI_OVER_TWO;let i=Le.fromAxisAngle(d.UNIT_Y,-t,Gmt),o=Le.fromAxisAngle(d.UNIT_Z,-e,zmt),r=Le.multiply(o,i,o),s=J.fromQuaternion(r,Vmt),a=d.clone(d.UNIT_X,Umt);return J.multiplyByVector(s,a,a),d.negate(a,a),d.multiplyByScalar(a,n,a),a}an.prototype.lookAtTransform=function(e,t){if(this._setTransform(e),!l(t))return;let n;if(l(t.heading)?n=yEe(t.heading,t.pitch,t.range):n=t,this._mode===ie.SCENE2D){k.clone(k.ZERO,this.position),d.negate(n,this.up),this.up.z=0,d.magnitudeSquared(this.up)<D.EPSILON10&&d.clone(d.UNIT_Y,this.up),d.normalize(this.up,this.up),this._setTransform(R.IDENTITY),d.negate(d.UNIT_Z,this.direction),d.cross(this.direction,this.up,this.right),d.normalize(this.right,this.right);let i=this.frustum,o=i.top/i.right;i.right=d.magnitude(n)*.5,i.left=-i.right,i.top=o*i.right,i.bottom=-i.top,this._setTransform(e);return}d.clone(n,this.position),d.negate(this.position,this.direction),d.normalize(this.direction,this.direction),d.cross(this.direction,d.UNIT_Z,this.right),d.magnitudeSquared(this.right)<D.EPSILON10&&d.clone(d.UNIT_X,this.right),d.normalize(this.right,this.right),d.cross(this.right,this.direction,this.up),d.normalize(this.up,this.up),this._adjustOrthographicFrustum(!0)};var fP=new Ae,Hmt=new Ae,Wmt=new d,jmt=new d,Ymt=new d,qmt=new d,Kmt=new d,Xmt=new d,Jmt=new d,vX=new d,Zmt={direction:new d,right:new d,up:new d},iEe;function Uc(e,t,n,i){return Math.abs(d.dot(t,n))/i-d.dot(e,n)}function CEe(e,t,n,i){let o=e._projection.ellipsoid,r=i?e:Zmt,{north:s,south:a,west:c}=t,{east:u}=t;c>u&&(u+=D.TWO_PI);let f=(c+u)*.5,h;if(a<-D.PI_OVER_TWO+D.RADIANS_PER_DEGREE&&s>D.PI_OVER_TWO-D.RADIANS_PER_DEGREE)h=0;else{let N=fP;N.longitude=f,N.latitude=s,N.height=0;let L=Hmt;L.longitude=f,L.latitude=a,L.height=0;let p=iEe;(!l(p)||p.ellipsoid!==o)&&(iEe=p=new Sg(void 0,void 0,o)),p.setEndPoints(N,L),h=p.interpolateUsingFraction(.5,fP).latitude}let A=fP;A.longitude=f,A.latitude=h,A.height=0;let g=o.cartographicToCartesian(A,Jmt),m=fP;m.longitude=u,m.latitude=s;let _=o.cartographicToCartesian(m,Wmt);m.longitude=c;let y=o.cartographicToCartesian(m,Ymt);m.longitude=f;let C=o.cartographicToCartesian(m,Kmt);m.latitude=a;let E=o.cartographicToCartesian(m,Xmt);m.longitude=u;let I=o.cartographicToCartesian(m,qmt);m.longitude=c;let b=o.cartographicToCartesian(m,jmt);d.subtract(y,g,y),d.subtract(I,g,I),d.subtract(_,g,_),d.subtract(b,g,b),d.subtract(C,g,C),d.subtract(E,g,E);let S=o.geodeticSurfaceNormal(g,r.direction);d.negate(S,S);let B=d.cross(S,d.UNIT_Z,r.right);d.normalize(B,B);let v=d.cross(B,S,r.up),P;if(e.frustum instanceof An){let N=Math.max(d.distance(_,y),d.distance(I,b)),L=Math.max(d.distance(_,I),d.distance(y,b)),p,x,T=e.frustum._offCenterFrustum,w=T.right/T.top,M=L*w;N>M?(p=N,x=p/w):(x=L,p=M),P=Math.max(p,x)}else{let N=Math.tan(e.frustum.fovy*.5),L=e.frustum.aspectRatio*N;if(P=Math.max(Uc(S,v,y,N),Uc(S,v,I,N),Uc(S,v,_,N),Uc(S,v,b,N),Uc(S,v,C,N),Uc(S,v,E,N),Uc(S,B,y,L),Uc(S,B,I,L),Uc(S,B,_,L),Uc(S,B,b,L),Uc(S,B,C,L),Uc(S,B,E,L)),a<0&&s>0){let p=fP;p.longitude=c,p.latitude=0,p.height=0;let x=o.cartographicToCartesian(p,vX);d.subtract(x,g,x),P=Math.max(P,Uc(S,v,x,N),Uc(S,B,x,L)),p.longitude=u,x=o.cartographicToCartesian(p,vX),d.subtract(x,g,x),P=Math.max(P,Uc(S,v,x,N),Uc(S,B,x,L))}}return d.add(g,d.multiplyByScalar(S,-P,vX),n)}var $mt=new Ae,eAt=new d,tAt=new d;function nAt(e,t,n){let i=e._projection;t.west>t.east&&(t=ae.MAX_VALUE);let o=e._actualTransform,r=e._actualInvTransform,s=$mt;s.longitude=t.east,s.latitude=t.north;let a=i.project(s,eAt);R.multiplyByPoint(o,a,a),R.multiplyByPoint(r,a,a),s.longitude=t.west,s.latitude=t.south;let c=i.project(s,tAt);if(R.multiplyByPoint(o,c,c),R.multiplyByPoint(r,c,c),n.x=(a.x-c.x)*.5+c.x,n.y=(a.y-c.y)*.5+c.y,l(e.frustum.fovy)){let u=Math.tan(e.frustum.fovy*.5),f=e.frustum.aspectRatio*u;n.z=Math.max((a.x-c.x)/f,(a.y-c.y)/u)*.5}else{let u=a.x-c.x,f=a.y-c.y;n.z=Math.max(u,f)}return n}var iAt=new Ae,oAt=new d,rAt=new d;function sAt(e,t,n){let i=e._projection,o=t.east;t.west>t.east&&(e._scene.mapMode2D===$u.INFINITE_SCROLL?o+=D.TWO_PI:(t=ae.MAX_VALUE,o=t.east));let r=iAt;r.longitude=o,r.latitude=t.north;let s=i.project(r,oAt);r.longitude=t.west,r.latitude=t.south;let a=i.project(r,rAt),c=Math.abs(s.x-a.x)*.5,u=Math.abs(s.y-a.y)*.5,f,h,A=e.frustum.right/e.frustum.top,g=u*A;return c>g?(f=c,h=f/A):(h=u,f=g),u=Math.max(2*f,2*h),n.x=(s.x-a.x)*.5+a.x,n.y=(s.y-a.y)*.5+a.y,r=i.unproject(n,r),r.height=u,n=i.project(r,n),n}an.prototype.getRectangleCameraCoordinates=function(e,t){let n=this._mode;if(l(t)||(t=new d),n===ie.SCENE3D)return CEe(this,e,t);if(n===ie.COLUMBUS_VIEW)return nAt(this,e,t);if(n===ie.SCENE2D)return sAt(this,e,t)};var aAt=new In;function cAt(e,t,n,i){n=n??te.default;let o=e.getPickRay(t,aAt),r=Ai.rayEllipsoid(o,n);if(!r)return;let s=r.start>0?r.start:r.stop;return In.getPoint(o,s,i)}var lAt=new In;function uAt(e,t,n,i){let r=e.getPickRay(t,lAt).origin;r=d.fromElements(r.y,r.z,0,r);let s=n.unproject(r);if(!(s.latitude<-D.PI_OVER_TWO||s.latitude>D.PI_OVER_TWO))return n.ellipsoid.cartographicToCartesian(s,i)}var fAt=new In;function dAt(e,t,n,i){let o=e.getPickRay(t,fAt),r=-o.origin.x/o.direction.x;In.getPoint(o,r,i);let s=n.unproject(new d(i.y,i.z,0));if(!(s.latitude<-D.PI_OVER_TWO||s.latitude>D.PI_OVER_TWO||s.longitude<-Math.PI||s.longitude>Math.PI))return n.ellipsoid.cartographicToCartesian(s,i)}an.prototype.pickEllipsoid=function(e,t,n){let i=this._scene.canvas;if(!(i.clientWidth===0||i.clientHeight===0)){if(l(n)||(n=new d),t=t??te.default,this._mode===ie.SCENE3D)n=cAt(this,e,t,n);else if(this._mode===ie.SCENE2D)n=uAt(this,e,this._projection,n);else if(this._mode===ie.COLUMBUS_VIEW)n=dAt(this,e,this._projection,n);else return;return n}};var hAt=new d,mAt=new d,AAt=new d;function pAt(e,t,n){let i=e._scene.canvas,o=i.clientWidth,r=i.clientHeight,s=Math.tan(e.frustum.fovy*.5),a=e.frustum.aspectRatio*s,c=e.frustum.near,u=2/o*t.x-1,f=2/r*(r-t.y)-1,h=e.positionWC;d.clone(h,n.origin);let A=d.multiplyByScalar(e.directionWC,c,hAt);d.add(h,A,A);let g=d.multiplyByScalar(e.rightWC,u*c*a,mAt),m=d.multiplyByScalar(e.upWC,f*c*s,AAt),_=d.add(A,g,n.direction);return d.add(_,m,_),d.subtract(_,h,_),d.normalize(_,_),n}var hV=new d;function gAt(e,t,n){let i=e._scene.canvas,o=i.clientWidth,r=i.clientHeight,s=e.frustum,a=s.offCenterFrustum;l(a)&&(s=a);let c=2/o*t.x-1;c*=(s.right-s.left)*.5;let u=2/r*(r-t.y)-1;u*=(s.top-s.bottom)*.5;let f=n.origin;return d.clone(e.positionWC,f),d.multiplyByScalar(e.rightWC,c,hV),d.add(hV,f,f),d.multiplyByScalar(e.upWC,u,hV),d.add(hV,f,f),d.clone(e.directionWC,n.direction),n}an.prototype.getPickRay=function(e,t){l(t)||(t=new In);let n=this._scene.canvas;if(n.clientWidth<=0||n.clientHeight<=0)return;let i=this.frustum;return l(i.aspectRatio)&&l(i.fov)&&l(i.near)?pAt(this,e,t):gAt(this,e,t)};var _At=new d,yAt=new d;an.prototype.distanceToBoundingSphere=function(e){let t=d.subtract(this.positionWC,e.center,_At),n=d.multiplyByScalar(this.directionWC,d.dot(t,this.directionWC),yAt);return Math.max(0,d.magnitude(n)-e.radius)};var CAt=new k;an.prototype.getPixelSize=function(e,t,n){let i=this.distanceToBoundingSphere(e),o=this.frustum.getPixelDimensions(t,n,i,this._scene.pixelRatio,CAt);return Math.max(o.x,o.y)};function EAt(e,t,n,i,o,r){let s=d.clone(t);n.y>i?s.y-=n.y-i:n.y<-i&&(s.y+=-i-n.y),n.z>o?s.z-=n.z-o:n.z<-o&&(s.z+=-o-n.z);function a(c){let u=d.lerp(t,s,c.time,new d);e.worldToCameraCoordinatesPoint(u,e.position)}return{easingFunction:ps.EXPONENTIAL_OUT,startObject:{time:0},stopObject:{time:1},duration:r,update:a}}var IAt=new d,oEe=new d,xAt=new d,bAt=new d;function TAt(e,t){let n=e.position,i=e.direction,o=e.worldToCameraCoordinatesVector(d.UNIT_X,IAt),r=-d.dot(o,n)/d.dot(o,i),s=d.add(n,d.multiplyByScalar(i,r,oEe),oEe);e.cameraToWorldCoordinatesPoint(s,s),n=e.cameraToWorldCoordinatesPoint(e.position,xAt);let a=Math.tan(e.frustum.fovy*.5),c=e.frustum.aspectRatio*a,u=d.magnitude(d.subtract(n,s,bAt)),f=c*u,h=a*u,A=e._maxCoord.x,g=e._maxCoord.y,m=Math.max(f-A,A),_=Math.max(h-g,g);if(n.z<-m||n.z>m||n.y<-_||n.y>_){let y=s.y<-m||s.y>m,C=s.z<-_||s.z>_;if(y||C)return EAt(e,n,s,m,_,t)}}an.prototype.createCorrectPositionTween=function(e){if(this._mode===ie.COLUMBUS_VIEW)return TAt(this,e)};var SAt=new d,Aa={destination:void 0,heading:void 0,pitch:void 0,roll:void 0,duration:void 0,complete:void 0,cancel:void 0,endTransform:void 0,maximumHeight:void 0,easingFunction:void 0};an.prototype.cancelFlight=function(){l(this._currentFlight)&&(this._currentFlight.cancelTween(),this._currentFlight=void 0)};an.prototype.completeFlight=function(){if(l(this._currentFlight)){this._currentFlight.cancelTween();let e={destination:void 0,orientation:{heading:void 0,pitch:void 0,roll:void 0}};e.destination=Aa.destination,e.orientation.heading=Aa.heading,e.orientation.pitch=Aa.pitch,e.orientation.roll=Aa.roll,this.setView(e),l(this._currentFlight.complete)&&this._currentFlight.complete(),this._currentFlight=void 0}};an.prototype.flyTo=function(e){e=e??V.EMPTY_OBJECT;let t=e.destination;if(this._mode===ie.MORPHING)return;this.cancelFlight();let i=t instanceof ae;i&&(t=this.getRectangleCameraCoordinates(t,SAt));let o=e.orientation??V.EMPTY_OBJECT;if(l(o.direction)&&(o=mEe(this,t,o,MX.orientation)),l(e.duration)&&e.duration<=0){let f=MX;f.destination=e.destination,f.orientation.heading=o.heading,f.orientation.pitch=o.pitch,f.orientation.roll=o.roll,f.convert=e.convert,f.endTransform=e.endTransform,this.setView(f),typeof e.complete=="function"&&e.complete();return}let r=this,s;Aa.destination=t,Aa.heading=o.heading,Aa.pitch=o.pitch,Aa.roll=o.roll,Aa.duration=e.duration,Aa.complete=function(){s===r._currentFlight&&(r._currentFlight=void 0),l(e.complete)&&e.complete()},Aa.cancel=e.cancel,Aa.endTransform=e.endTransform,Aa.convert=i?!1:e.convert,Aa.maximumHeight=e.maximumHeight,Aa.pitchAdjustHeight=e.pitchAdjustHeight,Aa.flyOverLongitude=e.flyOverLongitude,Aa.flyOverLongitudeWeight=e.flyOverLongitudeWeight,Aa.easingFunction=e.easingFunction;let a=this._scene,c=fV.createTween(a,Aa);if(c.duration===0){typeof c.complete=="function"&&c.complete();return}s=a.tweens.add(c),this._currentFlight=s;let u=this._scene.preloadFlightCamera;this._mode!==ie.SCENE2D&&(l(u)||(u=an.clone(this)),u.setView({destination:t,orientation:o}),this._scene.preloadFlightCullingVolume=u.frustum.computeCullingVolume(u.positionWC,u.directionWC,u.upWC))};function wAt(e,t){let n=e.frustum,i=Math.tan(n.fovy*.5),o=n.aspectRatio*i;return Math.max(t/o,t/i)}function BAt(e,t){let n=e.frustum,i=n.offCenterFrustum;l(i)&&(n=i);let o,r,s=n.right/n.top,a=t*s;return t>a?(o=t,r=o/s):(r=t,o=a),Math.max(o,r)*1.5}var DAt=100;function EEe(e,t,n){n=Eh.clone(l(n)?n:an.DEFAULT_OFFSET);let i=e._scene.screenSpaceCameraController.minimumZoomDistance,o=e._scene.screenSpaceCameraController.maximumZoomDistance,r=n.range;if(!l(r)||r===0){let s=t.radius;s===0?n.range=DAt:e.frustum instanceof An||e._mode===ie.SCENE2D?n.range=BAt(e,s):n.range=wAt(e,s),n.range=D.clamp(n.range,i,o)}return n}an.prototype.viewBoundingSphere=function(e,t){t=EEe(this,e,t),this.lookAt(e.center,t)};var vAt=new R,PAt=new d,RAt=new d,MAt=new d,NAt=new d,LAt=new se,OAt=new Le,FAt=new J;an.prototype.flyToBoundingSphere=function(e,t){t=t??V.EMPTY_OBJECT;let n=this._mode===ie.SCENE2D||this._mode===ie.COLUMBUS_VIEW;this._setTransform(R.IDENTITY);let i=EEe(this,e,t.offset),o;n?o=d.multiplyByScalar(d.UNIT_Z,i.range,PAt):o=yEe(i.heading,i.pitch,i.range);let s=this._scene.ellipsoid??te.default,a=kt.eastNorthUpToFixedFrame(e.center,s,vAt);R.multiplyByPoint(a,o,o);let c,u;if(!n){if(c=d.subtract(e.center,o,RAt),d.normalize(c,c),u=R.multiplyByPointAsVector(a,d.UNIT_Z,MAt),1-Math.abs(d.dot(c,u))<D.EPSILON6){let h=Le.fromAxisAngle(c,i.heading,OAt),A=J.fromQuaternion(h,FAt);d.fromCartesian4(R.getColumn(a,1,LAt),u),J.multiplyByVector(A,u,u)}let f=d.cross(c,u,NAt);d.cross(f,c,u),d.normalize(u,u)}this.flyTo({destination:o,orientation:{direction:c,up:u},duration:t.duration,complete:t.complete,cancel:t.cancel,endTransform:t.endTransform,maximumHeight:t.maximumHeight,easingFunction:t.easingFunction,flyOverLongitude:t.flyOverLongitude,flyOverLongitudeWeight:t.flyOverLongitudeWeight,pitchAdjustHeight:t.pitchAdjustHeight})};var rEe=new d,sEe=new d,PX=new d,aEe=new d,dP=[new d,new d,new d,new d];function QAt(e,t){let n=t.radii,i=e.positionWC,o=d.multiplyComponents(t.oneOverRadii,i,rEe),r=d.magnitude(o),s=d.normalize(o,sEe),a,c;d.equalsEpsilon(s,d.UNIT_Z,D.EPSILON10)?(a=new d(0,1,0),c=new d(0,0,1)):(a=d.normalize(d.cross(d.UNIT_Z,s,PX),PX),c=d.normalize(d.cross(s,a,aEe),aEe));let u=Math.sqrt(d.magnitudeSquared(o)-1),f=d.multiplyByScalar(s,1/r,rEe),h=u/r,A=d.multiplyByScalar(a,h,sEe),g=d.multiplyByScalar(c,h,PX),m=d.add(f,g,dP[0]);d.subtract(m,A,m),d.multiplyComponents(n,m,m);let _=d.subtract(f,g,dP[1]);d.subtract(_,A,_),d.multiplyComponents(n,_,_);let y=d.subtract(f,g,dP[2]);d.add(y,A,y),d.multiplyComponents(n,y,y);let C=d.add(f,g,dP[3]);return d.add(C,A,C),d.multiplyComponents(n,C,C),dP}var RX=new k,kAt=new d,Py=[new Ae,new Ae,new Ae,new Ae];function mV(e,t,n,i,o,r){RX.x=e,RX.y=t;let s=i.pickEllipsoid(RX,o,kAt);return l(s)?(Py[n]=o.cartesianToCartographic(s,Py[n]),1):(Py[n]=o.cartesianToCartographic(r[n],Py[n]),0)}an.prototype.computeViewRectangle=function(e,t){e=e??te.default;let n=this.frustum.computeCullingVolume(this.positionWC,this.directionWC,this.upWC),i=new le(d.ZERO,e.maximumRadius);if(n.computeVisibility(i)===nn.OUTSIDE)return;let r=this._scene.canvas,s=r.clientWidth,a=r.clientHeight,c=0,u=QAt(this,e);if(c+=mV(0,0,0,this,e,u),c+=mV(0,a,1,this,e,u),c+=mV(s,a,2,this,e,u),c+=mV(s,0,3,this,e,u),c<2)return ae.MAX_VALUE;t=ae.fromCartographicArray(Py,t);let f=0,h=Py[3].longitude;for(let A=0;A<4;++A){let g=Py[A].longitude,m=Math.abs(g-h);m>D.PI?f+=D.TWO_PI-m:f+=m,h=g}return D.equalsEpsilon(Math.abs(f),D.TWO_PI,D.EPSILON9)&&(t.west=-D.PI,t.east=D.PI,Py[0].latitude>=0?t.north=D.PI_OVER_TWO:t.south=-D.PI_OVER_TWO),t};an.prototype.switchToPerspectiveFrustum=function(){if(this._mode===ie.SCENE2D||this.frustum instanceof Vi)return;let e=this._scene;this.frustum=new Vi,this.frustum.aspectRatio=e.drawingBufferWidth/e.drawingBufferHeight,this.frustum.fov=D.toRadians(60)};an.prototype.switchToOrthographicFrustum=function(){if(this._mode===ie.SCENE2D||this.frustum instanceof An)return;let e=dEe(this),t=this._scene;this.frustum=new An,this.frustum.aspectRatio=t.drawingBufferWidth/t.drawingBufferHeight,this.frustum.width=e};an.clone=function(e,t){return l(t)||(t=new an(e._scene)),d.clone(e.position,t.position),d.clone(e.direction,t.direction),d.clone(e.up,t.up),d.clone(e.right,t.right),R.clone(e._transform,t.transform),t._transformChanged=!0,t.frustum=e.frustum.clone(),t};var Eo=an;function UAt(e){this.pass=e.pass,this.commandList=e.commandList,this.camera=e.camera,this.cullingVolume=e.cullingVolume,this.ready=!1}var Lh=UAt;var SEe=Es(_u(),1),IEe=576,GAt=100,hP="#ffffff",yV="#48b";function wEe(e,t){this.credit=e,this.count=t??1}function zAt(e,t){let n=e.length;for(let i=0;i<n;i++){let o=e[i];if(Dt.equals(o,t))return!0}return!1}function VAt(e){let t=e._previousCesiumCredit,n=e._currentCesiumCredit;Dt.equals(n,t)||(l(t)&&e._cesiumCreditContainer.removeChild(t.element),l(n)&&e._cesiumCreditContainer.appendChild(n.element),e._previousCesiumCredit=n)}var BEe="cesium-credit-delimiter";function xEe(e){let t=document.createElement("span");return t.textContent=e,t.className=BEe,t}function bEe(e,t){if(l(t)){let n=document.createElement(t);n._creditId=e._creditId,n.appendChild(e),e=n}return e}function TEe(e,t,n,i){let o=e.childNodes,r=-1;t.sort(function(s,a){return a.count-s.count});for(let s=0;s<t.length;++s){let a=t[s].credit;if(l(a)){if(r=s,l(n)&&(r*=2,s>0)){let u=r-1;if(o.length<=u)e.appendChild(xEe(n));else{let f=o[u];f.className!==BEe&&e.replaceChild(xEe(n),f)}}let c=a.element;if(o.length<=r)e.appendChild(bEe(c,i));else{let u=o[r];u._creditId!==a._id&&e.replaceChild(bEe(c,i),u)}}}for(++r;r<o.length;)e.removeChild(o[r])}function HAt(e){let t=e._lightboxCredits,n=e.viewport.clientWidth,i=e.viewport.clientHeight;n!==e._lastViewportWidth&&(n<IEe?(t.className="cesium-credit-lightbox cesium-credit-lightbox-mobile",t.style.marginTop="0"):(t.className="cesium-credit-lightbox cesium-credit-lightbox-expanded",t.style.marginTop=`${Math.floor((i-t.clientHeight)*.5)}px`),e._lastViewportWidth=n),n>=IEe&&i!==e._lastViewportHeight&&(t.style.marginTop=`${Math.floor((i-t.clientHeight)*.5)}px`,e._lastViewportHeight=i)}function WAt(e){let t=` +.cesium-credit-lightbox-overlay { + display: none; + z-index: 1; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-color: rgba(80, 80, 80, 0.8); +} + +.cesium-credit-lightbox { + background-color: #303336; + color: ${hP}; + position: relative; + min-height: ${GAt}px; + margin: auto; +} +.cesium-credit-lightbox > ul > li a, +.cesium-credit-lightbox > ul > li a:visited, +.cesium-credit-wrapper a, +.cesium-credit-wrapper a:visited { + color: ${hP}; +} +.cesium-credit-lightbox > ul > li a:hover { + color: ${yV}; +} +.cesium-credit-lightbox.cesium-credit-lightbox-expanded { + border: 1px solid #444; + border-radius: 5px; + max-width: 370px; +} +.cesium-credit-lightbox.cesium-credit-lightbox-mobile { + height: 100%; + width: 100%; +} +.cesium-credit-lightbox-title { + padding: 20px 20px 0 20px; +} +.cesium-credit-lightbox-close { + font-size: 18pt; + cursor: pointer; + position: absolute; + top: 0; + right: 6px; + color: ${hP}; +} +.cesium-credit-lightbox-close:hover { + color: ${yV}; +} +.cesium-credit-lightbox > ul { + margin: 0; + padding: 12px 20px 12px 40px; + font-size: 13px; +} +.cesium-credit-lightbox > ul > li { + padding-bottom: 6px; +} +.cesium-credit-lightbox > ul > li * { + padding: 0; + margin: 0; +} + +.cesium-credit-expand-link { + padding-left: 5px; + cursor: pointer; + text-decoration: underline; + color: ${hP}; +} +.cesium-credit-expand-link:hover { + color: ${yV}; +} + +.cesium-credit-text { + color: ${hP}; +} + +.cesium-credit-delimiter { + padding: 0 5px; +} + +.cesium-credit-textContainer *, +.cesium-credit-logoContainer * { + display: inline; +} + +.cesium-credit-textContainer a:hover { + color: ${yV} +} + +.cesium-credit-textContainer .cesium-credit-wrapper:first-of-type { + padding-left: 5px; +} +`;function n(r){if(r.shadowRoot)return r.shadowRoot;if(r.getRootNode){let s=r.getRootNode();if(s instanceof ShadowRoot)return s}}let i=n(e)??document.head,o=document.createElement("style");o.innerHTML=t,i.appendChild(o)}function br(e,t,n){let i=this;n=n??document.body;let o=document.createElement("div");o.className="cesium-credit-lightbox-overlay",n.appendChild(o);let r=document.createElement("div");r.className="cesium-credit-lightbox",o.appendChild(r);function s(m){r.contains(m.target)||i.hideLightbox()}o.addEventListener("click",s,!1);let a=document.createElement("div");a.className="cesium-credit-lightbox-title",a.textContent="Data provided by:",r.appendChild(a);let c=document.createElement("a");c.onclick=this.hideLightbox.bind(this),c.innerHTML="×",c.className="cesium-credit-lightbox-close",r.appendChild(c);let u=document.createElement("ul");r.appendChild(u);let f=document.createElement("div");f.className="cesium-credit-logoContainer",f.style.display="inline",e.appendChild(f);let h=document.createElement("div");h.className="cesium-credit-textContainer",h.style.display="inline",e.appendChild(h);let A=document.createElement("a");A.className="cesium-credit-expand-link",A.onclick=this.showLightbox.bind(this),A.textContent="Data attribution",e.appendChild(A),WAt(e);let g=Dt.clone(br.cesiumCredit);this._delimiter=t??"\u2022",this._screenContainer=h,this._cesiumCreditContainer=f,this._lastViewportHeight=void 0,this._lastViewportWidth=void 0,this._lightboxCredits=r,this._creditList=u,this._lightbox=o,this._hideLightbox=s,this._expandLink=A,this._expanded=!1,this._staticCredits=[],this._cesiumCredit=g,this._previousCesiumCredit=void 0,this._currentCesiumCredit=g,this._creditDisplayElementPool=[],this._creditDisplayElementIndex=0,this._currentFrameCredits={screenCredits:new Pt,lightboxCredits:new Pt},this._defaultCredit=void 0,this.viewport=n,this.container=e}function DEe(e,t,n,i){i=i??1;let o=t.get(n.id);if(l(o))o.count<Number.MAX_VALUE&&(o.count+=i);else{let r=e._creditDisplayElementPool,s=e._creditDisplayElementPoolIndex;s<r.length?(o=r[s],o.credit=n,o.count=i):(o=new wEe(n,i),r.push(o)),++e._creditDisplayElementPoolIndex,t.set(n.id,o)}}br.prototype.addCreditToNextFrame=function(e){if(e.isIon()){l(this._defaultCredit)||(this._defaultCredit=Dt.clone(vEe())),this._currentCesiumCredit=this._defaultCredit;return}let t;e.showOnScreen?t=this._currentFrameCredits.screenCredits:t=this._currentFrameCredits.lightboxCredits,DEe(this,t,e)};br.prototype.addStaticCredit=function(e){let t=this._staticCredits;zAt(t,e)||t.push(e)};br.prototype.removeStaticCredit=function(e){let t=this._staticCredits,n=t.indexOf(e);n!==-1&&t.splice(n,1)};br.prototype.showLightbox=function(){this._lightbox.style.display="block",this._expanded=!0};br.prototype.hideLightbox=function(){this._lightbox.style.display="none",this._expanded=!1};br.prototype.update=function(){this._expanded&&HAt(this)};br.prototype.beginFrame=function(){let e=this._currentFrameCredits;this._creditDisplayElementPoolIndex=0;let t=e.screenCredits,n=e.lightboxCredits;t.removeAll(),n.removeAll();let i=this._staticCredits;for(let o=0;o<i.length;++o){let r=i[o],s=r.showOnScreen?t:n;r.isIon()&&Dt.equals(br.cesiumCredit,this._cesiumCredit)||DEe(this,s,r,Number.MAX_VALUE)}Dt.equals(br.cesiumCredit,this._cesiumCredit)||(this._cesiumCredit=Dt.clone(br.cesiumCredit)),this._currentCesiumCredit=this._cesiumCredit};br.prototype.endFrame=function(){let e=this._currentFrameCredits.screenCredits.values;TEe(this._screenContainer,e,this._delimiter,void 0);let t=this._currentFrameCredits.lightboxCredits.values;this._expandLink.style.display=t.length>0?"inline":"none",TEe(this._creditList,t,void 0,"li"),VAt(this)};br.prototype.destroy=function(){return this._lightbox.removeEventListener("click",this._hideLightbox,!1),this.container.removeChild(this._cesiumCreditContainer),this.container.removeChild(this._screenContainer),this.container.removeChild(this._expandLink),this.viewport.removeChild(this._lightbox),ue(this)};br.prototype.isDestroyed=function(){return!1};br._cesiumCredit=void 0;br._cesiumCreditInitialized=!1;var CV;function vEe(){if(!l(CV)){let e=fn("Assets/Images/ion-credit.png");e.indexOf("http://")!==0&&e.indexOf("https://")!==0&&e.indexOf("data:")!==0&&(e=new SEe.default(e).path()),CV=new Dt(`<a href="https://cesium.com/" target="_blank"><img src="${e}" style="vertical-align: -7px" title="Cesium ion"/></a>`,!0)}return br._cesiumCreditInitialized||(br._cesiumCredit=CV,br._cesiumCreditInitialized=!0),CV}Object.defineProperties(br,{cesiumCredit:{get:function(){return vEe(),br._cesiumCredit},set:function(e){br._cesiumCredit=e,br._cesiumCreditInitialized=!0}}});br.CreditDisplayElement=wEe;var EV=br;var IV=0,jAt=1;function i0(e){let t=e.frustum,n=e.orientation,i=e.origin,o=e.vertexFormat??Pe.DEFAULT,r=e._drawNearPlane??!0,s,a;t instanceof Vi?(s=IV,a=Vi.packedLength):t instanceof An&&(s=jAt,a=An.packedLength),this._frustumType=s,this._frustum=t.clone(),this._origin=d.clone(i),this._orientation=Le.clone(n),this._drawNearPlane=r,this._vertexFormat=o,this._workerName="createFrustumGeometry",this.packedLength=2+a+d.packedLength+Le.packedLength+Pe.packedLength}i0.pack=function(e,t,n){n=n??0;let i=e._frustumType,o=e._frustum;return t[n++]=i,i===IV?(Vi.pack(o,t,n),n+=Vi.packedLength):(An.pack(o,t,n),n+=An.packedLength),d.pack(e._origin,t,n),n+=d.packedLength,Le.pack(e._orientation,t,n),n+=Le.packedLength,Pe.pack(e._vertexFormat,t,n),n+=Pe.packedLength,t[n]=e._drawNearPlane?1:0,t};var YAt=new Vi,qAt=new An,KAt=new Le,XAt=new d,JAt=new Pe;i0.unpack=function(e,t,n){t=t??0;let i=e[t++],o;i===IV?(o=Vi.unpack(e,t,YAt),t+=Vi.packedLength):(o=An.unpack(e,t,qAt),t+=An.packedLength);let r=d.unpack(e,t,XAt);t+=d.packedLength;let s=Le.unpack(e,t,KAt);t+=Le.packedLength;let a=Pe.unpack(e,t,JAt);t+=Pe.packedLength;let c=e[t]===1;if(!l(n))return new i0({frustum:o,origin:r,orientation:s,vertexFormat:a,_drawNearPlane:c});let u=i===n._frustumType?n._frustum:void 0;return n._frustum=o.clone(u),n._frustumType=i,n._origin=d.clone(r,n._origin),n._orientation=Le.clone(s,n._orientation),n._vertexFormat=Pe.clone(a,n._vertexFormat),n._drawNearPlane=c,n};function QT(e,t,n,i,o,r,s,a){let c=e/3*2;for(let u=0;u<4;++u)l(t)&&(t[e]=r.x,t[e+1]=r.y,t[e+2]=r.z),l(n)&&(n[e]=s.x,n[e+1]=s.y,n[e+2]=s.z),l(i)&&(i[e]=a.x,i[e+1]=a.y,i[e+2]=a.z),e+=3;o[c]=0,o[c+1]=0,o[c+2]=1,o[c+3]=0,o[c+4]=1,o[c+5]=1,o[c+6]=0,o[c+7]=1}var ZAt=new J,$At=new R,FX=new R,PEe=new d,REe=new d,MEe=new d,ept=new d,tpt=new d,npt=new d,Ry=new Array(3),mP=new Array(4);mP[0]=new se(-1,-1,1,1);mP[1]=new se(1,-1,1,1);mP[2]=new se(1,1,1,1);mP[3]=new se(-1,1,1,1);var NEe=new Array(4);for(let e=0;e<4;++e)NEe[e]=new se;i0._computeNearFarPlanes=function(e,t,n,i,o,r,s,a){let c=J.fromQuaternion(t,ZAt),u=r??PEe,f=s??REe,h=a??MEe;u=J.getColumn(c,0,u),f=J.getColumn(c,1,f),h=J.getColumn(c,2,h),d.normalize(u,u),d.normalize(f,f),d.normalize(h,h),d.negate(u,u);let A=R.computeView(e,h,f,u,$At),g,m,_=i.projectionMatrix;if(n===IV){let y=R.multiply(_,A,FX);m=R.inverse(y,FX)}else g=R.inverseTransformation(A,FX);l(m)?(Ry[0]=i.near,Ry[1]=i.far):(Ry[0]=0,Ry[1]=i.near,Ry[2]=i.far);for(let y=0;y<2;++y)for(let C=0;C<4;++C){let E=se.clone(mP[C],NEe[C]);if(l(m)){E=R.multiplyByVector(m,E,E);let I=1/E.w;d.multiplyByScalar(E,I,E),d.subtract(E,e,E),d.normalize(E,E);let b=d.dot(h,E);d.multiplyByScalar(E,Ry[y]/b,E),d.add(E,e,E)}else{let I=i.offCenterFrustum;l(I)&&(i=I);let b=Ry[y],S=Ry[y+1];E.x=(E.x*(i.right-i.left)+i.left+i.right)*.5,E.y=(E.y*(i.top-i.bottom)+i.bottom+i.top)*.5,E.z=(E.z*(b-S)-b-S)*.5,E.w=1,R.multiplyByVector(g,E,E)}o[12*y+C*3]=E.x,o[12*y+C*3+1]=E.y,o[12*y+C*3+2]=E.z}};i0.createGeometry=function(e){let t=e._frustumType,n=e._frustum,i=e._origin,o=e._orientation,r=e._drawNearPlane,s=e._vertexFormat,a=r?6:5,c=new Float64Array(72);i0._computeNearFarPlanes(i,o,t,n,c);let u=24;c[u]=c[12],c[u+1]=c[13],c[u+2]=c[14],c[u+3]=c[0],c[u+4]=c[1],c[u+5]=c[2],c[u+6]=c[9],c[u+7]=c[10],c[u+8]=c[11],c[u+9]=c[21],c[u+10]=c[22],c[u+11]=c[23],u+=12,c[u]=c[15],c[u+1]=c[16],c[u+2]=c[17],c[u+3]=c[3],c[u+4]=c[4],c[u+5]=c[5],c[u+6]=c[0],c[u+7]=c[1],c[u+8]=c[2],c[u+9]=c[12],c[u+10]=c[13],c[u+11]=c[14],u+=12,c[u]=c[3],c[u+1]=c[4],c[u+2]=c[5],c[u+3]=c[15],c[u+4]=c[16],c[u+5]=c[17],c[u+6]=c[18],c[u+7]=c[19],c[u+8]=c[20],c[u+9]=c[6],c[u+10]=c[7],c[u+11]=c[8],u+=12,c[u]=c[6],c[u+1]=c[7],c[u+2]=c[8],c[u+3]=c[18],c[u+4]=c[19],c[u+5]=c[20],c[u+6]=c[21],c[u+7]=c[22],c[u+8]=c[23],c[u+9]=c[9],c[u+10]=c[10],c[u+11]=c[11],r||(c=c.subarray(12));let f=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:c})});if(l(s.normal)||l(s.tangent)||l(s.bitangent)||l(s.st)){let A=l(s.normal)?new Float32Array(12*a):void 0,g=l(s.tangent)?new Float32Array(12*a):void 0,m=l(s.bitangent)?new Float32Array(12*a):void 0,_=l(s.st)?new Float32Array(8*a):void 0,y=PEe,C=REe,E=MEe,I=d.negate(y,ept),b=d.negate(C,tpt),S=d.negate(E,npt);u=0,r&&(QT(u,A,g,m,_,S,y,C),u+=12),QT(u,A,g,m,_,E,I,C),u+=12,QT(u,A,g,m,_,I,S,C),u+=12,QT(u,A,g,m,_,b,S,I),u+=12,QT(u,A,g,m,_,y,E,C),u+=12,QT(u,A,g,m,_,C,E,I),l(A)&&(f.normal=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:A})),l(g)&&(f.tangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:g})),l(m)&&(f.bitangent=new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:m})),l(_)&&(f.st=new De({componentDatatype:q.FLOAT,componentsPerAttribute:2,values:_}))}let h=new Uint16Array(6*a);for(let A=0;A<a;++A){let g=A*6,m=A*4;h[g]=m,h[g+1]=m+1,h[g+2]=m+2,h[g+3]=m,h[g+4]=m+2,h[g+5]=m+3}return new ht({attributes:f,indices:h,primitiveType:Me.TRIANGLES,boundingSphere:le.fromVertices(c)})};var kT=i0;var QX=0,ipt=1;function AP(e){let t=e.frustum,n=e.orientation,i=e.origin,o=e._drawNearPlane??!0,r,s;t instanceof Vi?(r=QX,s=Vi.packedLength):t instanceof An&&(r=ipt,s=An.packedLength),this._frustumType=r,this._frustum=t.clone(),this._origin=d.clone(i),this._orientation=Le.clone(n),this._drawNearPlane=o,this._workerName="createFrustumOutlineGeometry",this.packedLength=2+s+d.packedLength+Le.packedLength}AP.pack=function(e,t,n){n=n??0;let i=e._frustumType,o=e._frustum;return t[n++]=i,i===QX?(Vi.pack(o,t,n),n+=Vi.packedLength):(An.pack(o,t,n),n+=An.packedLength),d.pack(e._origin,t,n),n+=d.packedLength,Le.pack(e._orientation,t,n),n+=Le.packedLength,t[n]=e._drawNearPlane?1:0,t};var opt=new Vi,rpt=new An,spt=new Le,apt=new d;AP.unpack=function(e,t,n){t=t??0;let i=e[t++],o;i===QX?(o=Vi.unpack(e,t,opt),t+=Vi.packedLength):(o=An.unpack(e,t,rpt),t+=An.packedLength);let r=d.unpack(e,t,apt);t+=d.packedLength;let s=Le.unpack(e,t,spt);t+=Le.packedLength;let a=e[t]===1;if(!l(n))return new AP({frustum:o,origin:r,orientation:s,_drawNearPlane:a});let c=i===n._frustumType?n._frustum:void 0;return n._frustum=o.clone(c),n._frustumType=i,n._origin=d.clone(r,n._origin),n._orientation=Le.clone(s,n._orientation),n._drawNearPlane=a,n};AP.createGeometry=function(e){let t=e._frustumType,n=e._frustum,i=e._origin,o=e._orientation,r=e._drawNearPlane,s=new Float64Array(24);kT._computeNearFarPlanes(i,o,t,n,s);let a=new En({position:new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:s})}),c,u,f=r?2:1,h=new Uint16Array(8*(f+1)),A=r?0:1;for(;A<2;++A)c=r?A*8:0,u=A*4,h[c]=u,h[c+1]=u+1,h[c+2]=u+1,h[c+3]=u+2,h[c+4]=u+2,h[c+5]=u+3,h[c+6]=u+3,h[c+7]=u;for(A=0;A<2;++A)c=(f+A)*8,u=A*4,h[c]=u,h[c+1]=u+4,h[c+2]=u+1,h[c+3]=u+5,h[c+4]=u+2,h[c+5]=u+6,h[c+6]=u+3,h[c+7]=u+7;return new ht({attributes:a,indices:h,primitiveType:Me.LINES,boundingSphere:le.fromVertices(s)})};var xV=AP;function bV(e){e=e??V.EMPTY_OBJECT,this._camera=e.camera,this._frustumSplits=e.frustumSplits,this._color=e.color??G.CYAN,this._updateOnChange=e.updateOnChange??!0,this.show=e.show??!0,this.id=e.id,this._id=void 0,this._outlinePrimitives=[],this._planesPrimitives=[]}var cpt=new d,lpt=new J,upt=new Le,fpt=new Vi,dpt=new fu,hpt=new An,mpt=new ls,Apt=new G,ppt=[1,1e5];bV.prototype.update=function(e){if(!this.show)return;let t=this._planesPrimitives,n=this._outlinePrimitives,i,o;if(this._updateOnChange){for(o=t.length,i=0;i<o;++i)n[i]=n[i]&&n[i].destroy(),t[i]=t[i]&&t[i].destroy();t.length=0,n.length=0}if(t.length===0){let r=this._camera,s=r.frustum,a;s instanceof Vi?a=fpt:s instanceof fu?a=dpt:s instanceof An?a=hpt:a=mpt,a=s.clone(a);let c,u=this._frustumSplits;!l(u)||u.length<=1?(u=ppt,u[0]=this._camera.frustum.near,u[1]=this._camera.frustum.far,c=1):c=u.length-1;let f=r.positionWC,h=r.directionWC,A=r.upWC,g=r.rightWC;g=d.negate(g,cpt);let m=lpt;J.setColumn(m,0,g,m),J.setColumn(m,1,A,m),J.setColumn(m,2,h,m);let _=Le.fromRotationMatrix(m,upt);for(t.length=n.length=c,i=0;i<c;++i)a.near=u[i],a.far=u[i+1],t[i]=new kn({geometryInstances:new Rt({geometry:new kT({origin:f,orientation:_,frustum:a,_drawNearPlane:i===0}),attributes:{color:en.fromColor(G.fromAlpha(this._color,.1,Apt))},id:this.id,pickPrimitive:this}),appearance:new gn({translucent:!0,flat:!0}),asynchronous:!1}),n[i]=new kn({geometryInstances:new Rt({geometry:new xV({origin:f,orientation:_,frustum:a,_drawNearPlane:i===0}),attributes:{color:en.fromColor(this._color)},id:this.id,pickPrimitive:this}),appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1})}for(o=t.length,i=0;i<o;++i)n[i].update(e),t[i].update(e)};bV.prototype.isDestroyed=function(){return!1};bV.prototype.destroy=function(){let e=this._planesPrimitives.length;for(let t=0;t<e;++t)this._outlinePrimitives[t]=this._outlinePrimitives[t]&&this._outlinePrimitives[t].destroy(),this._planesPrimitives[t]=this._planesPrimitives[t]&&this._planesPrimitives[t].destroy();return ue(this)};var Kp=bV;function gP(e){this._rs=void 0,this._sp=void 0,this._va=void 0,this._command=void 0,this._mode=void 0,this._useLogDepth=!1,this._ellipsoidOffset=e??0}var pP=jt.supportsTypedArrays()?new Float32Array(12):[],LEe=new d,OEe=new d,kX=new d,FEe=new d,TV=new d;function gpt(e,t){let n=e.radii,i=t.camera,o,r,s;if(i.frustum instanceof An)o=d.ZERO,r=i.rightWC,s=i.upWC;else{let h=i.positionWC,A=d.multiplyComponents(e.oneOverRadii,h,LEe),g=d.normalize(A,OEe),m=d.normalize(d.cross(d.UNIT_Z,A,kX),kX),_=d.normalize(d.cross(g,m,FEe),FEe),y=d.magnitude(A),C=Math.sqrt(y*y-1);o=d.multiplyByScalar(g,1/y,LEe);let E=C/y;r=d.multiplyByScalar(m,E,OEe),s=d.multiplyByScalar(_,E,kX)}let a=d.add(o,s,TV);d.subtract(a,r,a),d.multiplyComponents(n,a,a),d.pack(a,pP,0);let c=d.subtract(o,s,TV);d.subtract(c,r,c),d.multiplyComponents(n,c,c),d.pack(c,pP,3);let u=d.add(o,s,TV);d.add(u,r,u),d.multiplyComponents(n,u,u),d.pack(u,pP,6);let f=d.subtract(o,s,TV);return d.add(f,r,f),d.multiplyComponents(n,f,f),d.pack(f,pP,9),pP}gP.prototype.update=function(e){if(this._mode=e.mode,e.mode!==ie.SCENE3D)return;let t=e.context,n=e.mapProjection.ellipsoid.radii,i=new te(n.x+this._ellipsoidOffset,n.y+this._ellipsoidOffset,n.z+this._ellipsoidOffset),o=e.useLogDepth;if(l(this._command)||(this._rs=Ue.fromCache({cull:{enabled:!0},depthTest:{enabled:!0},colorMask:{red:!1,green:!1,blue:!1,alpha:!1}}),this._command=new nt({renderState:this._rs,boundingVolume:new le(d.ZERO,i.maximumRadius),pass:Be.OPAQUE,owner:this})),!l(this._sp)||this._useLogDepth!==o){this._useLogDepth=o;let s=new We({sources:[hz]}),a=new We({sources:[dz]});o&&(a.defines.push("LOG_DEPTH"),s.defines.push("LOG_DEPTH")),this._sp=ln.replaceCache({shaderProgram:this._sp,context:t,vertexShaderSource:s,fragmentShaderSource:a,attributeLocations:{position:0}}),this._command.shaderProgram=this._sp}let r=gpt(i,e);if(l(this._va))this._va.getAttribute(0).vertexBuffer.copyFromArrayView(r);else{let s=new ht({attributes:{position:new De({componentDatatype:q.FLOAT,componentsPerAttribute:3,values:r})},indices:[0,1,2,2,1,3],primitiveType:Me.TRIANGLES});this._va=li.fromGeometry({context:t,geometry:s,attributeLocations:{position:0},bufferUsage:Qe.DYNAMIC_DRAW}),this._command.vertexArray=this._va}};gP.prototype.execute=function(e,t){this._mode===ie.SCENE3D&&this._command.execute(e,t)};gP.prototype.isDestroyed=function(){return!1};gP.prototype.destroy=function(){this._sp=this._sp&&this._sp.destroy(),this._va=this._va&&this._va.destroy()};var SV=gP;function GT(){}var _pt=/\bgl_FragDepth\b/,ypt=/\bdiscard\b/;function Cpt(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"depthOnly");if(l(n))return n;let i=t.fragmentShaderSource,o=!1,r=i.sources;for(let a=0;a<r.length;++a)if(_pt.test(r[a])||ypt.test(r[a])){o=!0;break}let s=i.defines.indexOf("LOG_DEPTH")>=0;if(!o&&!s){let a=`void main() +{ + out_FragColor = vec4(1.0); +} +`;i=new We({sources:[a]})}else if(!o&&s){let a=`void main() +{ + out_FragColor = vec4(1.0); + czm_writeLogDepth(); +} +`;i=new We({defines:["LOG_DEPTH"],sources:[a]})}return e.shaderCache.createDerivedShaderProgram(t,"depthOnly",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:i,attributeLocations:t._attributeLocations})}function Ept(e,t){let n=e._depthOnlyRenderStateCache,i=n[t.id];if(l(i))return i;let o=Ue.getState(t);o.depthMask=!0,o.colorMask={red:!1,green:!1,blue:!1,alpha:!1};let r=Ue.fromCache(o);return n[t.id]=r,r}GT.createDepthOnlyDerivedCommand=function(e,t,n,i){l(i)||(i={});let o=i.depthOnlyCommand?.shaderProgram,r=i.depthOnlyCommand?.renderState;return i.depthOnlyCommand=nt.shallowClone(t,i.depthOnlyCommand),!l(o)||i.shaderProgramId!==t.shaderProgram.id?(i.depthOnlyCommand.shaderProgram=Cpt(n,t.shaderProgram),i.depthOnlyCommand.renderState=Ept(e,t.renderState),i.shaderProgramId=t.shaderProgram.id):(i.depthOnlyCommand.shaderProgram=o,i.depthOnlyCommand.renderState=r),i};var Ipt=/\s+czm_writeLogDepth\(/,xpt=/\s+czm_vertexLogDepth\(/;function bpt(e,t){if(t.fragmentShaderSource.defines.indexOf("LOG_DEPTH_READ_ONLY")>=0)return t;let i=e.shaderCache.getDerivedShaderProgram(t,"logDepth");if(l(i))return i;let o=t._attributeLocations,r=t.vertexShaderSource.clone(),s=t.fragmentShaderSource.clone();r.defines=l(r.defines)?r.defines.slice(0):[],r.defines.push("LOG_DEPTH"),s.defines=l(s.defines)?s.defines.slice(0):[],s.defines.push("LOG_DEPTH");let a=!1,c=r.sources;for(let f=0;f<c.length;++f)if(xpt.test(c[f])){a=!0;break}if(!a){for(let h=0;h<c.length;++h)c[h]=We.replaceMain(c[h],"czm_log_depth_main");c.push(` + +void main() +{ + czm_log_depth_main(); + czm_vertexLogDepth(); +} +`)}c=s.sources,a=!1;for(let f=0;f<c.length;++f)Ipt.test(c[f])&&(a=!0);s.defines.indexOf("LOG_DEPTH_WRITE")!==-1&&(a=!0);let u="";if(!a){for(let f=0;f<c.length;f++)c[f]=We.replaceMain(c[f],"czm_log_depth_main");u=` +void main() +{ + czm_log_depth_main(); + czm_writeLogDepth(); +} +`}return c.push(u),e.shaderCache.createDerivedShaderProgram(t,"logDepth",{vertexShaderSource:r,fragmentShaderSource:s,attributeLocations:o})}GT.createLogDepthCommand=function(e,t,n){l(n)||(n={});let i=n.command?.shaderProgram;return n.command=nt.shallowClone(e,n.command),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.command.shaderProgram=bpt(t,e.shaderProgram),n.shaderProgramId=e.shaderProgram.id):n.command.shaderProgram=i,n};function Tpt(e,t,n){let i=e.shaderCache.getDerivedShaderProgram(t,"pick");if(l(i))return i;let o=t._attributeLocations,{sources:r,defines:s}=t.fragmentShaderSource,c=r.some(g=>g.includes("out_FragData"))?"out_FragData_0":"out_FragColor",u=`void main () +{ + czm_non_pick_main(); + if (${c}.a == 0.0) { + discard; + } + ${c} = ${n}; +} `,f=r.length,h=new Array(f+1);for(let g=0;g<f;++g)h[g]=We.replaceMain(r[g],"czm_non_pick_main");h[f]=u;let A=new We({sources:h,defines:s});return e.shaderCache.createDerivedShaderProgram(t,"pick",{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:A,attributeLocations:o})}function QEe(e,t){let n=e.picking.pickRenderStateCache,i=n[t.id];if(l(i))return i;let o=Ue.getState(t);o.blending.enabled=!1,o.depthMask=!0;let r=Ue.fromCache(o);return n[t.id]=r,r}GT.createPickDerivedCommand=function(e,t,n,i){l(i)||(i={});let o=i.pickCommand?.shaderProgram,r=i.pickCommand?.renderState;return i.pickCommand=nt.shallowClone(t,i.pickCommand),!l(o)||i.shaderProgramId!==t.shaderProgram.id?(i.pickCommand.shaderProgram=Tpt(n,t.shaderProgram,t.pickId),i.pickCommand.renderState=QEe(e,t.renderState),i.shaderProgramId=t.shaderProgram.id):(i.pickCommand.shaderProgram=o,i.pickCommand.renderState=r),i};function UT(e,t,n){let i=e.length;for(let o=0;o<i;o++)e[o].trimStart().split(/\s+/)[0]===t&&(e[o]=`${t} ${n}`)}function kEe(e){return e.isArray?e.arrayLength:gt.getComponentCount(e.type)}function Spt(e){let t=kEe(e);return e.normalized?t===1?"float":`vec${t}`:t===1?"int":`ivec${t}`}function UEe(e,t,n){return`((${e} - float(${t})) / float(${n}))`}function GEe(e,t){let n=zt.getMaximum(t);return`(${e}) / float(${n})`}function wpt(e,t){let n="float(value)";if(t.hasValueTransform){let i=t.offset,o=t.scale;n=UEe(n,i,o)}return e.normalized||(n=GEe(n,e.componentType)),n}function Bpt(e,t,n){let o=`float(${`value.${n}`})`;if(t.hasValueTransform){let r=t.offset[n],s=t.scale[n];o=UEe(o,r,s)}return e.normalized||(o=GEe(o,e.componentType)),o}function Dpt(e,t,n){let i=n.schemaId,o=n.className,r=n.propertyName,s=`pickMetadata-${i}-${o}-${r}`,a=e.shaderCache.getDerivedShaderProgram(t,s);if(l(a))return a;let c=n.metadataProperty,u=n.classProperty,f=Spt(u),h=["0.0","0.0","0.0","0.0"],A=kEe(u);if(A===1)h[0]=wpt(u,c);else{let y=["x","y","z","w"];for(let C=0;C<A;C++)h[C]=Bpt(u,c,y[C])}let g=t.fragmentShaderSource.defines.slice();g.push(Gf.METADATA_PICKING_ENABLED),UT(g,Gf.METADATA_PICKING_VALUE_TYPE,f),UT(g,Gf.METADATA_PICKING_VALUE_STRING,`metadata.${r}`),UT(g,Gf.METADATA_PICKING_VALUE_COMPONENT_X,h[0]),UT(g,Gf.METADATA_PICKING_VALUE_COMPONENT_Y,h[1]),UT(g,Gf.METADATA_PICKING_VALUE_COMPONENT_Z,h[2]),UT(g,Gf.METADATA_PICKING_VALUE_COMPONENT_W,h[3]);let m=new We({sources:t.fragmentShaderSource.sources,defines:g});return e.shaderCache.createDerivedShaderProgram(t,s,{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:m,attributeLocations:t._attributeLocations})}GT.createPickMetadataDerivedCommand=function(e,t,n,i){return l(i)||(i={}),i.pickMetadataCommand=nt.shallowClone(t,i.pickMetadataCommand),i.pickMetadataCommand.shaderProgram=Dpt(n,t.shaderProgram,t.pickedMetadataInfo),i.pickMetadataCommand.renderState=QEe(e,t.renderState),i.shaderProgramId=t.shaderProgram.id,i};function vpt(e,t){let n=e.shaderCache.getDerivedShaderProgram(t,"HDR");if(l(n))return n;let i=t._attributeLocations,o=t.vertexShaderSource.clone(),r=t.fragmentShaderSource.clone();return o.defines=l(o.defines)?o.defines.slice(0):[],o.defines.push("HDR"),r.defines=l(r.defines)?r.defines.slice(0):[],r.defines.push("HDR"),e.shaderCache.createDerivedShaderProgram(t,"HDR",{vertexShaderSource:o,fragmentShaderSource:r,attributeLocations:i})}GT.createHdrCommand=function(e,t,n){l(n)||(n={});let i=n.command?.shaderProgram;return n.command=nt.shallowClone(e,n.command),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.command.shaderProgram=vpt(t,e.shaderProgram),n.shaderProgramId=e.shaderProgram.id):n.command.shaderProgram=i,n};var Xp=GT;function wV(e){this._scene=e,this._lastAlpha=void 0,this._lastBeta=void 0,this._lastGamma=void 0,this._alpha=void 0,this._beta=void 0,this._gamma=void 0;let t=this;function n(i){let o=i.alpha;if(!l(o)){t._alpha=void 0,t._beta=void 0,t._gamma=void 0;return}t._alpha=D.toRadians(o),t._beta=D.toRadians(i.beta),t._gamma=D.toRadians(i.gamma)}window.addEventListener("deviceorientation",n,!1),this._removeListener=function(){window.removeEventListener("deviceorientation",n,!1)}}var Ppt=new Le,zEe=new Le,Rpt=new J;function Mpt(e,t,n,i){let o=e.direction,r=e.right,s=e.up,a=Le.fromAxisAngle(o,n,zEe),c=Le.fromAxisAngle(r,i,Ppt),u=Le.multiply(c,a,c),f=Le.fromAxisAngle(s,t,zEe);Le.multiply(f,u,u);let h=J.fromQuaternion(u,Rpt);J.multiplyByVector(h,r,r),J.multiplyByVector(h,s,s),J.multiplyByVector(h,o,o)}wV.prototype.update=function(){if(!l(this._alpha))return;l(this._lastAlpha)||(this._lastAlpha=this._alpha,this._lastBeta=this._beta,this._lastGamma=this._gamma);let e=this._lastAlpha-this._alpha,t=this._lastBeta-this._beta,n=this._lastGamma-this._gamma;Mpt(this._scene.camera,-e,t,n),this._lastAlpha=this._alpha,this._lastBeta=this._beta,this._lastGamma=this._gamma};wV.prototype.isDestroyed=function(){return!1};wV.prototype.destroy=function(){return this._removeListener(),ue(this)};var BV=wV;function UX(){this.enabled=!0,this.renderable=!0,this.density=6e-4,this.heightScalar=.001,this._heightFalloff=.59,this.maxHeight=8e5,this.visualDensityScalar=.15,this.screenSpaceErrorFactor=2,this.minimumBrightness=.03}Object.defineProperties(UX.prototype,{heightFalloff:{get:function(){return this._heightFalloff},set:function(e){this._heightFalloff=e}}});var Npt=new d;UX.prototype.update=function(e){if(!(e.fog.enabled=this.enabled))return;e.fog.renderable=this.renderable;let n=e.camera,i=n.positionCartographic;if(!l(i)||i.height>this.maxHeight||e.mode!==ie.SCENE3D){e.fog.enabled=!1,e.fog.density=0;return}let o=i.height,r=this.density*this.heightScalar*Math.pow(Math.max(o/this.maxHeight,D.EPSILON4),-Math.max(this._heightFalloff,0)),s=d.normalize(n.positionWC,Npt),a=Math.abs(d.dot(n.directionWC,s));r*=1-a,e.fog.density=r,e.fog.visualDensityScalar=this.visualDensityScalar,e.fog.sse=this.screenSpaceErrorFactor,e.fog.minimumBrightness=this.minimumBrightness};var DV=UX;function Lpt(e,t,n){this.context=e,this.commandList=[],this.shadowMaps=[],this.brdfLutGenerator=void 0,this.environmentMap=void 0,this.sphericalHarmonicCoefficients=void 0,this.specularEnvironmentMaps=void 0,this.specularEnvironmentMapsMaximumLOD=void 0,this.mode=ie.SCENE3D,this.morphTime=ie.getMorphTime(ie.SCENE3D),this.frameNumber=0,this.newFrame=!1,this.time=void 0,this.jobScheduler=n,this.mapProjection=void 0,this.camera=void 0,this.cameraUnderground=!1,this.globeTranslucencyState=void 0,this.cullingVolume=void 0,this.occluder=void 0,this.maximumScreenSpaceError=void 0,this.pixelRatio=1,this.passes={render:!1,pick:!1,pickVoxel:!1,depth:!1,postProcess:!1,offscreen:!1},this.creditDisplay=t,this.afterRender=[],this.scene3DOnly=!1,this.fog={enabled:!1,renderable:!1,density:void 0,visualDensityScalar:void 0,sse:void 0,minimumBrightness:void 0},this.atmosphere=void 0,this.verticalExaggeration=1,this.verticalExaggerationRelativeHeight=0,this.shadowState={shadowsEnabled:!0,shadowMaps:[],lightShadowMaps:[],nearPlane:1,farPlane:5e3,closestObjectSize:1e3,lastDirtyTime:0,outOfView:!0},this.splitPosition=0,this.frustumSplits=[],this.backgroundColor=void 0,this.light=void 0,this.minimumDisableDepthTestDistance=void 0,this.invertClassification=!1,this.invertClassificationColor=void 0,this.useLogDepth=!1,this.tilesetPassState=void 0,this.minimumTerrainHeight=0,this.pickingMetadata=!1,this.pickedMetadataInfo=void 0}var vV=Lpt;var Ha={OPAQUE_FRONT_FACE:0,OPAQUE_BACK_FACE:1,DEPTH_ONLY_FRONT_FACE:2,DEPTH_ONLY_BACK_FACE:3,DEPTH_ONLY_FRONT_AND_BACK_FACE:4,TRANSLUCENT_FRONT_FACE:5,TRANSLUCENT_BACK_FACE:6,TRANSLUCENT_FRONT_FACE_MANUAL_DEPTH_TEST:7,TRANSLUCENT_BACK_FACE_MANUAL_DEPTH_TEST:8,PICK_FRONT_FACE:9,PICK_BACK_FACE:10,DERIVED_COMMANDS_MAXIMUM_LENGTH:11},o0=Ha.DERIVED_COMMANDS_MAXIMUM_LENGTH,ZEe=["opaqueFrontFaceCommand","opaqueBackFaceCommand","depthOnlyFrontFaceCommand","depthOnlyBackFaceCommand","depthOnlyFrontAndBackFaceCommand","translucentFrontFaceCommand","translucentBackFaceCommand","translucentFrontFaceManualDepthTestCommand","translucentBackFaceManualDepthTestCommand","pickFrontFaceCommand","pickBackFaceCommand"];function r0(){this._frontFaceAlphaByDistance=new Yt(0,1,0,1),this._backFaceAlphaByDistance=new Yt(0,1,0,1),this._frontFaceTranslucent=!1,this._backFaceTranslucent=!1,this._requiresManualDepthTest=!1,this._sunVisibleThroughGlobe=!1,this._environmentVisible=!1,this._useDepthPlane=!1,this._numberOfTextureUniforms=0,this._globeTranslucencyFramebuffer=void 0,this._rectangle=ae.clone(ae.MAX_VALUE),this._derivedCommandKey=0,this._derivedCommandsDirty=!1,this._derivedCommandPacks=void 0,this._derivedCommandTypes=new Array(o0),this._derivedBlendCommandTypes=new Array(o0),this._derivedPickCommandTypes=new Array(o0),this._derivedCommandTypesToUpdate=new Array(o0),this._derivedCommandsLength=0,this._derivedBlendCommandsLength=0,this._derivedPickCommandsLength=0,this._derivedCommandsToUpdateLength=0}Object.defineProperties(r0.prototype,{frontFaceAlphaByDistance:{get:function(){return this._frontFaceAlphaByDistance}},backFaceAlphaByDistance:{get:function(){return this._backFaceAlphaByDistance}},translucent:{get:function(){return this._frontFaceTranslucent}},sunVisibleThroughGlobe:{get:function(){return this._sunVisibleThroughGlobe}},environmentVisible:{get:function(){return this._environmentVisible}},useDepthPlane:{get:function(){return this._useDepthPlane}},numberOfTextureUniforms:{get:function(){return this._numberOfTextureUniforms}},rectangle:{get:function(){return this._rectangle}}});r0.prototype.update=function(e){let t=e.globe;if(!l(t)||!t.show){this._frontFaceTranslucent=!1,this._backFaceTranslucent=!1,this._sunVisibleThroughGlobe=!0,this._environmentVisible=!0,this._useDepthPlane=!1;return}this._frontFaceAlphaByDistance=VEe(t.translucency.enabled,t.translucency.frontFaceAlpha,t.translucency.frontFaceAlphaByDistance,this._frontFaceAlphaByDistance),this._backFaceAlphaByDistance=VEe(t.translucency.enabled,t.translucency.backFaceAlpha,t.translucency.backFaceAlphaByDistance,this._backFaceAlphaByDistance),this._frontFaceTranslucent=HEe(t.translucency.enabled,this._frontFaceAlphaByDistance,t),this._backFaceTranslucent=HEe(t.translucency.enabled,this._backFaceAlphaByDistance,t),this._requiresManualDepthTest=kpt(this,e,t),this._sunVisibleThroughGlobe=Opt(this,e),this._environmentVisible=Fpt(this,e),this._useDepthPlane=Qpt(this,e),this._numberOfTextureUniforms=Upt(this),this._rectangle=ae.clone(t.translucency.rectangle,this._rectangle),Gpt(this,e)};function VEe(e,t,n,i){return e?l(n)?(Yt.clone(n,i),i.nearValue*=t,i.farValue*=t,i):(i.nearValue=t,i.farValue=t,i):(i.nearValue=1,i.farValue=1,i)}function HEe(e,t,n){return e&&(n.baseColor.alpha<1||t.nearValue<1||t.farValue<1)}function Opt(e,t){let n=e._frontFaceTranslucent,i=e._backFaceTranslucent;return n&&(t.cameraUnderground||i)}function Fpt(e,t){return!t.cameraUnderground||e._frontFaceTranslucent}function Qpt(e,t){return!t.cameraUnderground&&!e._frontFaceTranslucent}function kpt(e,t,n){return e._frontFaceTranslucent&&!e._backFaceTranslucent&&!n.depthTestAgainstTerrain&&t.mode!==ie.SCENE2D&&t.context.depthTexture}function Upt(e){let t=0;return e._frontFaceTranslucent&&++t,e._requiresManualDepthTest&&++t,t}function Gpt(e,t){e._derivedCommandsLength=GX(e,t,!1,!1,e._derivedCommandTypes),e._derivedBlendCommandsLength=GX(e,t,!0,!1,e._derivedBlendCommandTypes),e._derivedPickCommandsLength=GX(e,t,!1,!0,e._derivedPickCommandTypes);let n,i=0;for(n=0;n<e._derivedCommandsLength;++n)i|=1<<e._derivedCommandTypes[n];for(n=0;n<e._derivedBlendCommandsLength;++n)i|=1<<e._derivedBlendCommandTypes[n];for(n=0;n<e._derivedPickCommandsLength;++n)i|=1<<e._derivedPickCommandTypes[n];let o=0;for(n=0;n<o0;++n)(i&1<<n)>0&&(e._derivedCommandTypesToUpdate[o++]=n);e._derivedCommandsToUpdateLength=o;let r=i!==e._derivedCommandKey;e._derivedCommandKey=i,e._derivedCommandsDirty=r,!l(e._derivedCommandPacks)&&e._frontFaceTranslucent&&(e._derivedCommandPacks=ngt())}function GX(e,t,n,i,o){let r=0,s=e._frontFaceTranslucent,a=e._backFaceTranslucent;if(!s)return r;let c=t.cameraUnderground,u=e._requiresManualDepthTest,f=i?Ha.PICK_FRONT_FACE:u?Ha.TRANSLUCENT_FRONT_FACE_MANUAL_DEPTH_TEST:Ha.TRANSLUCENT_FRONT_FACE,h=i?Ha.PICK_BACK_FACE:u?Ha.TRANSLUCENT_BACK_FACE_MANUAL_DEPTH_TEST:Ha.TRANSLUCENT_BACK_FACE;return t.mode===ie.SCENE2D?(o[r++]=Ha.DEPTH_ONLY_FRONT_FACE,o[r++]=f,r):(a?(n||(o[r++]=Ha.DEPTH_ONLY_FRONT_AND_BACK_FACE),c?(o[r++]=f,o[r++]=h):(o[r++]=h,o[r++]=f)):c?(n||(o[r++]=Ha.DEPTH_ONLY_BACK_FACE),o[r++]=Ha.OPAQUE_FRONT_FACE,o[r++]=h):(n||(o[r++]=Ha.DEPTH_ONLY_FRONT_FACE),o[r++]=Ha.OPAQUE_BACK_FACE,o[r++]=f),r)}function gd(e,t){let n=e.indexOf(t);n>-1&&e.splice(n,1)}function WEe(e,t){return e.indexOf(t)>-1}function zpt(e,t){gd(e.defines,"TRANSLUCENT"),gd(t.defines,"TRANSLUCENT")}function Vpt(e,t){gd(e.defines,"GROUND_ATMOSPHERE"),gd(t.defines,"GROUND_ATMOSPHERE"),gd(e.defines,"FOG"),gd(t.defines,"FOG"),gd(e.defines,"TRANSLUCENT"),gd(t.defines,"TRANSLUCENT")}function zX(e,t){if(WEe(t.defines,"TILE_LIMIT_RECTANGLE")||WEe(t.defines,"ENABLE_CLIPPING_PLANES"))return;let n=`void main() +{ + out_FragColor = vec4(1.0); +} +`;t.sources=[n]}function VX(e,t){let n=t.sources,i=n.length;for(let r=0;r<i;++r)n[r]=We.replaceMain(n[r],"czm_globe_translucency_main");n.push(` + +uniform sampler2D u_classificationTexture; +void main() +{ + vec2 st = gl_FragCoord.xy / czm_viewport.zw; +#ifdef MANUAL_DEPTH_TEST + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, st)); + if (logDepthOrDepth != 0.0) + { + vec4 eyeCoordinate = czm_windowToEyeCoordinates(gl_FragCoord.xy, logDepthOrDepth); + float depthEC = eyeCoordinate.z / eyeCoordinate.w; + if (v_positionEC.z < depthEC) + { + discard; + } + } +#endif + czm_globe_translucency_main(); + vec4 classificationColor = texture(u_classificationTexture, st); + if (classificationColor.a > 0.0) + { + // Reverse premultiplication process to get the correct composited result of the classification primitives + classificationColor.rgb /= classificationColor.a; + } + out_FragColor = classificationColor * vec4(classificationColor.aaa, 1.0) + out_FragColor * (1.0 - classificationColor.a); +} +`)}function $Ee(e,t){VX(e,t),gd(e.defines,"GROUND_ATMOSPHERE"),gd(t.defines,"GROUND_ATMOSPHERE"),gd(e.defines,"FOG"),gd(t.defines,"FOG")}function Hpt(e,t){VX(e,t),e.defines.push("GENERATE_POSITION"),t.defines.push("MANUAL_DEPTH_TEST")}function Wpt(e,t){$Ee(e,t),e.defines.push("GENERATE_POSITION"),t.defines.push("MANUAL_DEPTH_TEST")}function jEe(e,t){let n=`uniform sampler2D u_classificationTexture; +void main() +{ + vec2 st = gl_FragCoord.xy / czm_viewport.zw; + vec4 pickColor = texture(u_classificationTexture, st); + if (pickColor == vec4(0.0)) + { + discard; + } + out_FragColor = pickColor; +} +`;t.sources=[n]}function jpt(e,t,n,i,o,r){if(!l(o))return t;if(!i&&l(n))return n;let s=e.shaderCache.getDerivedShaderProgram(t,r);if(!l(s)){let a=t._attributeLocations,c=t.vertexShaderSource.clone(),u=t.fragmentShaderSource.clone();c.defines=l(c.defines)?c.defines.slice(0):[],u.defines=l(u.defines)?u.defines.slice(0):[],o(c,u),s=e.shaderCache.createDerivedShaderProgram(t,r,{vertexShaderSource:c,fragmentShaderSource:u,attributeLocations:a})}return s}function Ypt(e){e.cull.face=Mi.BACK,e.cull.enabled=!0}function qpt(e){e.cull.face=Mi.FRONT,e.cull.enabled=!0}function Kpt(e){e.cull.face=Mi.BACK,e.cull.enabled=!0,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function Xpt(e){e.cull.face=Mi.FRONT,e.cull.enabled=!0,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function Jpt(e){e.cull.enabled=!1,e.colorMask={red:!1,green:!1,blue:!1,alpha:!1}}function YEe(e){e.cull.face=Mi.BACK,e.cull.enabled=!0,e.depthMask=!1,e.blending=pn.ALPHA_BLEND}function qEe(e){e.cull.face=Mi.FRONT,e.cull.enabled=!0,e.depthMask=!1,e.blending=pn.ALPHA_BLEND}function Zpt(e){e.cull.face=Mi.BACK,e.cull.enabled=!0,e.blending.enabled=!1}function $pt(e){e.cull.face=Mi.FRONT,e.cull.enabled=!0,e.blending.enabled=!1}function egt(e,t,n,i,o){if(!l(i))return e;if(!n&&l(t))return t;let r=o[e.id];if(!l(r)){let s=Ue.getState(e);i(s),r=Ue.fromCache(s),o[e.id]=r}return r}function zT(e){return{u_classificationTexture:function(){return e._globeTranslucencyFramebuffer.classificationTexture}}}function tgt(e,t,n,i,o){return l(o)?!i&&l(n)?n:wt(t,o(e),!1):t}function Oh(e){this.pass=e.pass,this.pickOnly=e.pickOnly,this.getShaderProgramFunction=e.getShaderProgramFunction,this.getRenderStateFunction=e.getRenderStateFunction,this.getUniformMapFunction=e.getUniformMapFunction,this.renderStateCache={}}function ngt(){return[new Oh({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:zpt,getRenderStateFunction:Ypt,getUniformMapFunction:void 0}),new Oh({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:Vpt,getRenderStateFunction:qpt,getUniformMapFunction:void 0}),new Oh({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:zX,getRenderStateFunction:Kpt,getUniformMapFunction:void 0}),new Oh({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:zX,getRenderStateFunction:Xpt,getUniformMapFunction:void 0}),new Oh({pass:Be.GLOBE,pickOnly:!1,getShaderProgramFunction:zX,getRenderStateFunction:Jpt,getUniformMapFunction:void 0}),new Oh({pass:Be.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:VX,getRenderStateFunction:YEe,getUniformMapFunction:zT}),new Oh({pass:Be.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:$Ee,getRenderStateFunction:qEe,getUniformMapFunction:zT}),new Oh({pass:Be.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:Hpt,getRenderStateFunction:YEe,getUniformMapFunction:zT}),new Oh({pass:Be.TRANSLUCENT,pickOnly:!1,getShaderProgramFunction:Wpt,getRenderStateFunction:qEe,getUniformMapFunction:zT}),new Oh({pass:Be.TRANSLUCENT,pickOnly:!0,getShaderProgramFunction:jEe,getRenderStateFunction:Zpt,getUniformMapFunction:zT}),new Oh({pass:Be.TRANSLUCENT,pickOnly:!0,getShaderProgramFunction:jEe,getRenderStateFunction:$pt,getUniformMapFunction:zT})]}var KEe=new Array(o0),XEe=new Array(o0);r0.prototype.updateDerivedCommands=function(e,t){let n=this._derivedCommandTypesToUpdate,i=this._derivedCommandsToUpdateLength;if(i!==0){for(let o=0;o<i;++o)XEe[o]=this._derivedCommandPacks[n[o]],KEe[o]=ZEe[n[o]];igt(this,e,i,n,KEe,XEe,t)}};function igt(e,t,n,i,o,r,s){let a=t.derivedCommands.globeTranslucency,c=e._derivedCommandsDirty;if(t.dirty||!l(a)||c){t.dirty=!1,l(a)||(a={},t.derivedCommands.globeTranslucency=a);let u=s.frameNumber,f=a.uniformMapDirtyFrame??0,h=a.shaderProgramDirtyFrame??0,A=a.renderStateDirtyFrame??0,g=a.uniformMap!==t.uniformMap,m=a.shaderProgramId!==t.shaderProgram.id,_=a.renderStateId!==t.renderState.id;g&&(a.uniformMapDirtyFrame=u),m&&(a.shaderProgramDirtyFrame=u),_&&(a.renderStateDirtyFrame=u),a.uniformMap=t.uniformMap,a.shaderProgramId=t.shaderProgram.id,a.renderStateId=t.renderState.id;for(let y=0;y<n;++y){let C=r[y],E=i[y],I=o[y],b=a[I],S,B,v;l(b)?(S=b.uniformMap,B=b.shaderProgram,v=b.renderState):(S=void 0,B=void 0,v=void 0),b=nt.shallowClone(t,b),a[I]=b;let P=b.derivedCommands.uniformMapDirtyFrame??0,N=b.derivedCommands.shaderProgramDirtyFrame??0,L=b.derivedCommands.renderStateDirtyFrame??0,p=g||P<f,x=m||N<h,T=_||L<A;p&&(b.derivedCommands.uniformMapDirtyFrame=u),x&&(b.derivedCommands.shaderProgramDirtyFrame=u),T&&(b.derivedCommands.renderStateDirtyFrame=u),b.derivedCommands.type=E,b.pass=C.pass,b.pickOnly=C.pickOnly,b.uniformMap=tgt(e,t.uniformMap,S,p,C.getUniformMapFunction),b.shaderProgram=jpt(s.context,t.shaderProgram,B,x,C.getShaderProgramFunction,I),b.renderState=egt(t.renderState,v,T,C.getRenderStateFunction,C.renderStateCache)}}}r0.prototype.pushDerivedCommands=function(e,t,n){let i=n.passes.pick||n.passes.pickVoxel;if(i&&t)return;let o=this._derivedCommandTypes,r=this._derivedCommandsLength;if(i?(o=this._derivedPickCommandTypes,r=this._derivedPickCommandsLength):t&&(o=this._derivedBlendCommandTypes,r=this._derivedBlendCommandsLength),r===0){n.commandList.push(e);return}let s=e.derivedCommands.globeTranslucency;for(let a=0;a<r;++a){let c=ZEe[o[a]];n.commandList.push(s[c])}};function e0e(e,t,n,i,o,r){for(let s=0;s<t;++s){let a=e[s],c=a.derivedCommands.type;(!l(r)||r.indexOf(c)>-1)&&n(a,i,o)}}function JEe(e,t,n,i,o){for(let r=0;r<t;++r)n(e[r],i,o)}var ogt=[Ha.OPAQUE_FRONT_FACE,Ha.OPAQUE_BACK_FACE],rgt=[Ha.DEPTH_ONLY_FRONT_FACE,Ha.DEPTH_ONLY_BACK_FACE,Ha.DEPTH_ONLY_FRONT_AND_BACK_FACE];r0.prototype.executeGlobeCommands=function(e,t,n,i,o){let r=i.context,s=e.commands[Be.GLOBE],a=e.indices[Be.GLOBE];a!==0&&(this._globeTranslucencyFramebuffer=n,n.clearClassification(r,o),e0e(s,a,t,i,o,ogt))};r0.prototype.executeGlobeClassificationCommands=function(e,t,n,i,o){let{context:r}=i,{uniformState:s}=r,a=e.commands[Be.GLOBE],c=e.indices[Be.GLOBE],u=e.commands[Be.TERRAIN_CLASSIFICATION],f=e.indices[Be.TERRAIN_CLASSIFICATION];if(c===0||f===0)return;let h=this._frontFaceTranslucent,A=this._backFaceTranslucent;if((!h||!A)&&JEe(u,f,t,i,o),!h&&!A)return;this._globeTranslucencyFramebuffer=n;let g=s.globeDepthTexture,m=o.framebuffer;if(o.framebuffer=n.classificationFramebuffer,e0e(a,c,t,i,o,rgt),r.depthTexture){let _=n.packDepth(r,o);s.globeDepthTexture=_}JEe(u,f,t,i,o),s.globeDepthTexture=g,o.framebuffer=m};var PV=r0;var ef=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + out_FragColor = texture(colorTexture, v_textureCoordinates); +} +`;function hA(){this._numSamples=1,this.previousFramebuffer=void 0,this._previousFramebuffer=void 0,this._depthStencilTexture=void 0,this._depthStencilRenderbuffer=void 0,this._fbo=new vi({depthStencil:!0,createDepthAttachments:!1}),this._fboClassified=new vi({depthStencil:!0,createDepthAttachments:!1}),this._rsUnclassified=void 0,this._rsClassified=void 0,this._unclassifiedCommand=void 0,this._classifiedCommand=void 0,this._translucentCommand=void 0,this._clearColorCommand=new Ei({color:new G(0,0,0,0),owner:this}),this._clearCommand=new Ei({color:new G(0,0,0,0),depth:1,stencil:0});let e=this;this._uniformMap={colorTexture:function(){return e._fbo.getColorTexture()},depthTexture:function(){return e._depthStencilTexture},classifiedTexture:function(){return e._fboClassified.getColorTexture()}}}Object.defineProperties(hA.prototype,{unclassifiedCommand:{get:function(){return this._unclassifiedCommand}}});hA.isTranslucencySupported=function(e){return e.depthTexture&&e.fragmentDepth};var sgt={depthMask:!1,stencilTest:{enabled:!0,frontFunction:Zn.EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.NEVER,reference:0,mask:Kt.CLASSIFICATION_MASK},blending:pn.ALPHA_BLEND},agt={depthMask:!1,stencilTest:{enabled:!0,frontFunction:Zn.NOT_EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.NEVER,reference:0,mask:Kt.CLASSIFICATION_MASK},blending:pn.ALPHA_BLEND},cgt={depthMask:!0,depthTest:{enabled:!0},stencilTest:Kt.setCesium3DTileBit(),stencilMask:Kt.CESIUM_3D_TILE_MASK,blending:pn.ALPHA_BLEND},lgt=`uniform sampler2D colorTexture; +uniform sampler2D depthTexture; +uniform sampler2D classifiedTexture; +in vec2 v_textureCoordinates; +void main() +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + if (color.a == 0.0) + { + discard; + } + bool isClassified = all(equal(texture(classifiedTexture, v_textureCoordinates), vec4(0.0))); +#ifdef UNCLASSIFIED + vec4 highlightColor = czm_invertClassificationColor; + if (isClassified) + { + discard; + } +#else + vec4 highlightColor = vec4(1.0); + if (!isClassified) + { + discard; + } +#endif + out_FragColor = color * highlightColor; + gl_FragDepth = texture(depthTexture, v_textureCoordinates).r; +} +`,ugt=`uniform sampler2D colorTexture; +in vec2 v_textureCoordinates; +void main() +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + if (color.a == 0.0) + { + discard; + } +#ifdef UNCLASSIFIED + out_FragColor = color * czm_invertClassificationColor; +#else + out_FragColor = color; +#endif +} +`;hA.prototype.update=function(e,t,n){let i=this._fbo.getColorTexture(),o=this.previousFramebuffer!==this._previousFramebuffer;this._previousFramebuffer=this.previousFramebuffer;let r=this._numSamples!==t,s=e.drawingBufferWidth,a=e.drawingBufferHeight,c=!l(i)||i.width!==s||i.height!==a;if((c||o||r)&&(this._numSamples=t,this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy(),l(this._previousFramebuffer)||(this._depthStencilTexture=new Nt({context:e,width:s,height:a,pixelFormat:et.DEPTH_STENCIL,pixelDatatype:He.UNSIGNED_INT_24_8}),t>1&&(this._depthStencilRenderbuffer=new Qf({context:e,width:s,height:a,format:Yl.DEPTH24_STENCIL8,numSamples:t})))),!l(this._fbo.framebuffer)||c||o||r){this._fbo.destroy(),this._fboClassified.destroy();let u,f;l(this._previousFramebuffer)?(u=n.getDepthStencilTexture(),f=n.getDepthStencilRenderbuffer()):(u=this._depthStencilTexture,f=this._depthStencilRenderbuffer),this._fbo.setDepthStencilTexture(u),l(f)&&this._fbo.setDepthStencilRenderbuffer(f),this._fbo.update(e,s,a,t),l(this._previousFramebuffer)||(this._fboClassified.setDepthStencilTexture(u),this._fboClassified.update(e,s,a))}if(l(this._rsUnclassified)||(this._rsUnclassified=Ue.fromCache(sgt),this._rsClassified=Ue.fromCache(agt),this._rsDefault=Ue.fromCache(cgt)),!l(this._unclassifiedCommand)||o||r){l(this._unclassifiedCommand)&&(this._unclassifiedCommand.shaderProgram=this._unclassifiedCommand.shaderProgram&&this._unclassifiedCommand.shaderProgram.destroy(),this._classifiedCommand.shaderProgram=this._classifiedCommand.shaderProgram&&this._classifiedCommand.shaderProgram.destroy());let u=l(this._previousFramebuffer)?ugt:lgt,f=new We({defines:["UNCLASSIFIED"],sources:[u]}),h=new We({sources:[u]});this._unclassifiedCommand=e.createViewportQuadCommand(f,{renderState:l(this._previousFramebuffer)?this._rsUnclassified:this._rsDefault,uniformMap:this._uniformMap,owner:this}),this._classifiedCommand=e.createViewportQuadCommand(h,{renderState:l(this._previousFramebuffer)?this._rsClassified:this._rsDefault,uniformMap:this._uniformMap,owner:this}),l(this._translucentCommand)&&(this._translucentCommand.shaderProgram=this._translucentCommand.shaderProgram&&this._translucentCommand.shaderProgram.destroy()),l(this._previousFramebuffer)||(this._translucentCommand=e.createViewportQuadCommand(ef,{renderState:this._rsUnclassified,uniformMap:this._uniformMap,owner:this}))}};hA.prototype.prepareTextures=function(e,t){this._fbo._numSamples>1&&this._fbo.prepareTextures(e,t)};hA.prototype.clear=function(e,t){l(this._previousFramebuffer)?this._fbo.clear(e,this._clearColorCommand,t):(this._fbo.clear(e,this._clearCommand,t),this._fboClassified.clear(e,this._clearCommand,t))};hA.prototype.executeClassified=function(e,t){if(!l(this._previousFramebuffer)){let n=t.framebuffer;this.prepareTextures(e,!0),t.framebuffer=this._fboClassified.framebuffer,this._translucentCommand.execute(e,t),t.framebuffer=n}this._classifiedCommand.execute(e,t)};hA.prototype.executeUnclassified=function(e,t){this._unclassifiedCommand.execute(e,t)};hA.prototype.isDestroyed=function(){return!1};hA.prototype.destroy=function(){return this._fbo.destroy(),this._fboClassified.destroy(),this._depthStencilTexture=this._depthStencilTexture&&this._depthStencilTexture.destroy(),this._depthStencilRenderbuffer=this._depthStencilRenderbuffer&&this._depthStencilRenderbuffer.destroy(),l(this._unclassifiedCommand)&&(this._unclassifiedCommand.shaderProgram=this._unclassifiedCommand.shaderProgram&&this._unclassifiedCommand.shaderProgram.destroy(),this._classifiedCommand.shaderProgram=this._classifiedCommand.shaderProgram&&this._classifiedCommand.shaderProgram.destroy()),ue(this)};var _P=hA;function RV(e){this._total=e,this.usedThisFrame=0,this.stolenFromMeThisFrame=0,this.starvedThisFrame=!1,this.starvedLastFrame=!1}Object.defineProperties(RV.prototype,{total:{get:function(){return this._total}}});function My(e){let t=new Array(Tc.NUMBER_OF_JOB_TYPES);t[Tc.TEXTURE]=new RV(l(e)?e[Tc.TEXTURE]:10),t[Tc.PROGRAM]=new RV(l(e)?e[Tc.PROGRAM]:10),t[Tc.BUFFER]=new RV(l(e)?e[Tc.BUFFER]:30);let n=t.length,i,o=0;for(i=0;i<n;++i)o+=t[i].total;let r=new Array(n);for(i=0;i<n;++i)r[i]=!1;this._totalBudget=o,this._totalUsedThisFrame=0,this._budgets=t,this._executedThisFrame=r}My.getTimestamp=Oi;Object.defineProperties(My.prototype,{totalBudget:{get:function(){return this._totalBudget}}});My.prototype.disableThisFrame=function(){this._totalUsedThisFrame=this._totalBudget};My.prototype.resetBudgets=function(){let e=this._budgets,t=e.length;for(let n=0;n<t;++n){let i=e[n];i.starvedLastFrame=i.starvedThisFrame,i.starvedThisFrame=!1,i.usedThisFrame=0,i.stolenFromMeThisFrame=0}this._totalUsedThisFrame=0};My.prototype.execute=function(e,t){let n=this._budgets,i=n[t],o=this._executedThisFrame[t];if(this._totalUsedThisFrame>=this._totalBudget&&o)return i.starvedThisFrame=!0,!1;let r;if(i.usedThisFrame+i.stolenFromMeThisFrame>=i.total){let c=n.length,u;for(u=0;u<c&&(r=n[u],!(r.usedThisFrame+r.stolenFromMeThisFrame<r.total&&!r.starvedLastFrame));++u);if(u===c&&o)return!1;o&&(i.starvedThisFrame=!0)}let s=My.getTimestamp();e.execute();let a=My.getTimestamp()-s;return this._totalUsedThisFrame+=a,r?r.stolenFromMeThisFrame+=a:i.usedThisFrame+=a,this._executedThisFrame[t]=!0,!0};var MV=My;function NV(e){e=e??V.EMPTY_OBJECT;let t=Gn(e.container);this._container=t;let n=document.createElement("div");n.className="cesium-performanceDisplay";let i=document.createElement("div");i.className="cesium-performanceDisplay-fps",this._fpsText=document.createTextNode(""),i.appendChild(this._fpsText);let o=document.createElement("div");o.className="cesium-performanceDisplay-ms",this._msText=document.createTextNode(""),o.appendChild(this._msText),n.appendChild(o),n.appendChild(i),this._container.appendChild(n),this._lastFpsSampleTime=Oi(),this._lastMsSampleTime=Oi(),this._fpsFrameCount=0,this._msFrameCount=0,this._throttled=!1;let r=document.createElement("div");r.className="cesium-performanceDisplay-throttled",this._throttledText=document.createTextNode(""),r.appendChild(this._throttledText),n.appendChild(r)}Object.defineProperties(NV.prototype,{throttled:{get:function(){return this._throttled},set:function(e){this._throttled!==e&&(e?this._throttledText.nodeValue="(throttled)":this._throttledText.nodeValue="",this._throttled=e)}}});NV.prototype.update=function(e){let t=Oi(),n=e??!0;this._fpsFrameCount++;let i=t-this._lastFpsSampleTime;if(i>1e3){let r="N/A";n&&(r=this._fpsFrameCount*1e3/i|0),this._fpsText.nodeValue=`${r} FPS`,this._lastFpsSampleTime=t,this._fpsFrameCount=0}this._msFrameCount++;let o=t-this._lastMsSampleTime;if(o>200){let r="N/A";n&&(r=(o/this._msFrameCount).toFixed(2)),this._msText.nodeValue=`${r} MS`,this._lastMsSampleTime=t,this._msFrameCount=0}};NV.prototype.destroy=function(){return ue(this)};var Ny=NV;var Wa={};Wa.decodeRawMetadataValue=function(e,t,n){switch(e){case zt.INT8:return t.getInt8(n);case zt.UINT8:return t.getUint8(n);case zt.INT16:return t.getInt16(n,!0);case zt.UINT16:return t.getUint16(n,!0);case zt.INT32:return t.getInt32(n,!0);case zt.UINT32:return t.getUint32(n,!0);case zt.INT64:return t.getBigInt64(n,!0);case zt.UINT64:return t.getBigUint64(n,!0);case zt.FLOAT32:return t.getFloat32(n,!0);case zt.FLOAT64:return t.getFloat64(n,!0)}throw new ce(`Invalid component type: ${e}`)};Wa.decodeRawMetadataValueComponent=function(e,t,n){let i=e.componentType,o=Wa.decodeRawMetadataValue(i,t,n);return e.normalized?zt.normalize(o,i):o};Wa.decodeRawMetadataValueElement=function(e,t,n){let i=e.componentType,o=zt.getSizeInBytes(i),r=e.type,s=gt.getComponentCount(r),a=o*s;if(s>1){let f=Array(s);for(let h=0;h<s;h++){let A=n*a+h*o,g=Wa.decodeRawMetadataValueComponent(e,t,A);f[h]=g}return f}let c=n*a;return Wa.decodeRawMetadataValueComponent(e,t,c)};Wa.decodeRawMetadataValues=function(e,t){let n=new DataView(t.buffer,t.byteOffset,t.byteLength);if(e.isArray){let o=e.arrayLength,r=Array(o);for(let s=0;s<o;s++){let a=Wa.decodeRawMetadataValueElement(e,n,s);r[s]=a}return r}return Wa.decodeRawMetadataValueElement(e,n,0)};Wa.convertToObjectType=function(e,t){if(!l(t)||e===gt.SCALAR||e===gt.STRING||e===gt.BOOLEAN||e===gt.ENUM)return t;let n=t.map(i=>Number(i));switch(e){case gt.VEC2:return k.unpack(n,0,new k);case gt.VEC3:return d.unpack(n,0,new d);case gt.VEC4:return se.unpack(n,0,new se);case gt.MAT2:return Wi.unpack(n,0,new Wi);case gt.MAT3:return J.unpack(n,0,new J);case gt.MAT4:return R.unpack(n,0,new R)}throw new ce(`Invalid metadata object type: ${e}`)};Wa.convertFromObjectType=function(e,t){if(!l(t)||e===gt.SCALAR||e===gt.STRING||e===gt.BOOLEAN||e===gt.ENUM)return t;switch(e){case gt.VEC2:return k.pack(t,Array(2));case gt.VEC3:return d.pack(t,Array(3));case gt.VEC4:return se.pack(t,Array(4));case gt.MAT2:return Wi.pack(t,Array(4));case gt.MAT3:return J.pack(t,Array(9));case gt.MAT4:return R.pack(t,Array(16))}throw new ce(`Invalid metadata object type: ${e}`)};Wa.decodeMetadataValues=function(e,t,n){let i=Wa.decodeRawMetadataValues(e,n);if(t.hasValueTransform){let r=Wa.convertFromObjectType(e.type,t.offset),s=Wa.convertFromObjectType(e.type,t.scale);i=$A.valueTransformInPlace(i,r,s,zt.applyValueTransform)}if(e.isArray){let r=e.arrayLength,s=Array(r);for(let a=0;a<r;a++){let c=i[a],u=Wa.convertToObjectType(e.type,c);s[a]=u}return s}return Wa.convertToObjectType(e.type,i)};var LV=Object.freeze(Wa);function s0(){this._framebuffer=new vi,this._textureToCopy=void 0,this._copyDepthCommand=void 0}Object.defineProperties(s0.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}}});function fgt(e,t,n){let{width:i,height:o}=n;e._framebuffer.update(t,i,o)}function dgt(e,t,n){l(e._copyDepthCommand)||(e._copyDepthCommand=t.createViewportQuadCommand(`uniform highp sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 globeDepthPacked = texture(czm_globeDepthTexture, v_textureCoordinates); + float globeDepth = czm_unpackDepth(globeDepthPacked); + float depth = texture(colorTexture, v_textureCoordinates).r; + out_FragColor = czm_branchFreeTernary(globeDepth <= 0.0 || globeDepth >= 1.0 || depth < globeDepth && depth > 0.0 && depth < 1.0, + czm_packDepth(depth), globeDepthPacked); +} +`,{renderState:Ue.fromCache(),uniformMap:{colorTexture:function(){return e._textureToCopy}},owner:e})),e._textureToCopy=n,e._copyDepthCommand.framebuffer=e.framebuffer}s0.prototype.update=function(e,t){fgt(this,e,t),dgt(this,e,t)};var hgt=new se,mgt=new se(1,1/255,1/65025,1/16581375);s0.prototype.getDepth=function(e,t,n){if(!l(this.framebuffer))return;let i=e.readPixels({x:t,y:n,width:1,height:1,framebuffer:this.framebuffer}),o=se.unpack(i,0,hgt);return se.divideByScalar(o,255,o),se.dot(o,mgt)};s0.prototype.executeCopyDepth=function(e,t){this._copyDepthCommand.execute(e,t)};s0.prototype.isDestroyed=function(){return!1};s0.prototype.destroy=function(){return this._framebuffer.destroy(),l(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=l(this._copyDepthCommand.shaderProgram)&&this._copyDepthCommand.shaderProgram.destroy()),ue(this)};var OV=s0;function Agt(e,t){this.near=e??0,this.far=t??0;let n=Be.NUMBER_OF_PASSES,i=new Array(n),o=new Array(n);for(let r=0;r<n;++r)i[r]=[],o[r]=0;this.commands=i,this.indices=o}var FV=Agt;var a0=`uniform highp sampler2D u_depthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + out_FragColor = czm_packDepth(texture(u_depthTexture, v_textureCoordinates).r); +} +`;function mA(){this._picking=!1,this._numSamples=1,this._tempCopyDepthTexture=void 0,this._pickColorFramebuffer=new vi({depthStencil:!0,supportsDepthTexture:!0}),this._outputFramebuffer=new vi({depthStencil:!0,supportsDepthTexture:!0}),this._copyDepthFramebuffer=new vi,this._tempCopyDepthFramebuffer=new vi,this._updateDepthFramebuffer=new vi({createColorAttachments:!1,createDepthAttachments:!1,depthStencil:!0}),this._clearGlobeColorCommand=void 0,this._copyColorCommand=void 0,this._copyDepthCommand=void 0,this._tempCopyDepthCommand=void 0,this._updateDepthCommand=void 0,this._viewport=new Xe,this._rs=void 0,this._rsBlend=void 0,this._rsUpdate=void 0,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHdr=void 0,this._clearGlobeDepth=void 0}Object.defineProperties(mA.prototype,{colorFramebufferManager:{get:function(){return this._picking?this._pickColorFramebuffer:this._outputFramebuffer}},framebuffer:{get:function(){return this.colorFramebufferManager.framebuffer}},depthStencilTexture:{get:function(){return this.colorFramebufferManager.getDepthStencilTexture()}},picking:{get:function(){return this._picking},set:function(e){this._picking=e}}});function t0e(e,t,n,i,o){let r=e._viewport;r.width=n,r.height=i;let s=!Xe.equals(r,o.viewport),a=s!==e._useScissorTest;e._useScissorTest=s,Xe.equals(e._scissorRectangle,o.viewport)||(e._scissorRectangle=Xe.clone(o.viewport,e._scissorRectangle),a=!0),(!l(e._rs)||!Xe.equals(r,e._rs.viewport)||a)&&(e._rs=Ue.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}}),e._rsBlend=Ue.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},blending:pn.ALPHA_BLEND}),e._rsUpdate=Ue.fromCache({viewport:r,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},stencilTest:{enabled:!0,frontFunction:Zn.EQUAL,frontOperation:{fail:_t.KEEP,zFail:_t.KEEP,zPass:_t.KEEP},backFunction:Zn.NEVER,reference:Kt.CESIUM_3D_TILE_MASK,mask:Kt.CESIUM_3D_TILE_MASK}})),l(e._copyDepthCommand)||(e._copyDepthCommand=t.createViewportQuadCommand(a0,{uniformMap:{u_depthTexture:function(){return e.colorFramebufferManager.getDepthStencilTexture()}},owner:e})),e._copyDepthCommand.framebuffer=e._copyDepthFramebuffer.framebuffer,e._copyDepthCommand.renderState=e._rs,l(e._copyColorCommand)||(e._copyColorCommand=t.createViewportQuadCommand(ef,{uniformMap:{colorTexture:function(){return e.colorFramebufferManager.getColorTexture()}},owner:e})),e._copyColorCommand.renderState=e._rs,l(e._tempCopyDepthCommand)||(e._tempCopyDepthCommand=t.createViewportQuadCommand(a0,{uniformMap:{u_depthTexture:function(){return e._tempCopyDepthTexture}},owner:e})),e._tempCopyDepthCommand.framebuffer=e._tempCopyDepthFramebuffer.framebuffer,e._tempCopyDepthCommand.renderState=e._rs,l(e._updateDepthCommand)||(e._updateDepthCommand=t.createViewportQuadCommand(ef,{uniformMap:{colorTexture:function(){return e._tempCopyDepthFramebuffer.getColorTexture()}},owner:e})),e._updateDepthCommand.framebuffer=e._updateDepthFramebuffer.framebuffer,e._updateDepthCommand.renderState=e._rsUpdate,l(e._clearGlobeColorCommand)||(e._clearGlobeColorCommand=new Ei({color:new G(0,0,0,0),stencil:0,owner:e})),e._clearGlobeColorCommand.framebuffer=e.framebuffer}mA.prototype.update=function(e,t,n,i,o,r){let{width:s,height:a}=n,c=o?e.halfFloatingPointTexture?He.HALF_FLOAT:He.FLOAT:He.UNSIGNED_BYTE;this._numSamples=i,this.picking?this._pickColorFramebuffer.update(e,s,a):this._outputFramebuffer.update(e,s,a,i,c),this._copyDepthFramebuffer.update(e,s,a),t0e(this,e,s,a,t),e.uniformState.globeDepthTexture=void 0,this._clearGlobeDepth=r};mA.prototype.prepareColorTextures=function(e,t){!this.picking&&this._numSamples>1&&this._outputFramebuffer.prepareTextures(e,t)};mA.prototype.executeCopyDepth=function(e,t){l(this._copyDepthCommand)&&(this.prepareColorTextures(e),this._copyDepthCommand.execute(e,t),e.uniformState.globeDepthTexture=this._copyDepthFramebuffer.getColorTexture())};mA.prototype.executeUpdateDepth=function(e,t,n){let i=l(n)?n:t.framebuffer.depthStencilTexture;if(!this._clearGlobeDepth&&i===this.colorFramebufferManager.getDepthStencilTexture()){l(this._copyDepthCommand)&&this._copyDepthCommand.execute(e,t);return}if(!l(this._updateDepthCommand))return;let o=this._updateDepthFramebuffer;if(!l(o.framebuffer)||o.getDepthStencilTexture()!==i||o.getColorTexture()!==this._copyDepthFramebuffer.getColorTexture()){let r=this._copyDepthFramebuffer.getColorTexture(),{width:s,height:a}=r;this._tempCopyDepthFramebuffer.destroy(),this._tempCopyDepthFramebuffer.update(e,s,a),o.setColorTexture(r,0),o.setDepthStencilTexture(i),o.update(e,s,a),t0e(this,e,s,a,t)}this._tempCopyDepthTexture=i,this._tempCopyDepthCommand.execute(e,t),this._updateDepthCommand.execute(e,t)};mA.prototype.executeCopyColor=function(e,t){l(this._copyColorCommand)&&this._copyColorCommand.execute(e,t)};mA.prototype.clear=function(e,t,n){let i=this._clearGlobeColorCommand;l(i)&&(G.clone(n,i.color),this.colorFramebufferManager.clear(e,i,t))};mA.prototype.isDestroyed=function(){return!1};mA.prototype.destroy=function(){return this._pickColorFramebuffer.destroy(),this._outputFramebuffer.destroy(),this._copyDepthFramebuffer.destroy(),this._tempCopyDepthFramebuffer.destroy(),this._updateDepthFramebuffer.destroy(),l(this._copyColorCommand)&&(this._copyColorCommand.shaderProgram=this._copyColorCommand.shaderProgram.destroy()),l(this._copyDepthCommand)&&(this._copyDepthCommand.shaderProgram=this._copyDepthCommand.shaderProgram.destroy()),l(this._tempCopyDepthCommand)&&(this._tempCopyDepthCommand.shaderProgram=this._tempCopyDepthCommand.shaderProgram.destroy()),l(this._updateDepthCommand)&&(this._updateDepthCommand.shaderProgram=this._updateDepthCommand.shaderProgram.destroy()),ue(this)};var QV=mA;function c0(){this._framebuffer=new vi({depthStencil:!0,supportsDepthTexture:!0}),this._packedDepthFramebuffer=new vi,this._renderState=void 0,this._packedDepthCommand=void 0,this._clearCommand=void 0,this._viewport=new Xe,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHdr=void 0}Object.defineProperties(c0.prototype,{classificationTexture:{get:function(){return this._framebuffer.getColorTexture()}},classificationFramebuffer:{get:function(){return this._framebuffer.framebuffer}},packedDepthFramebuffer:{get:function(){return this._packedDepthFramebuffer.framebuffer}},depthStencilTexture:{get:function(){return this._framebuffer.getDepthStencilTexture()}},depthStencilRenderbuffer:{get:function(){return this._framebuffer.getDepthStencilRenderbuffer()}},packedDepthTexture:{get:function(){return this._packedDepthFramebuffer.getColorTexture()}}});function pgt(e){e._framebuffer.destroy(),e._packedDepthFramebuffer.destroy()}function ggt(e,t,n,i,o){let r=o?t.halfFloatingPointTexture?He.HALF_FLOAT:He.FLOAT:He.UNSIGNED_BYTE;e._framebuffer.update(t,n,i,1,r),e._packedDepthFramebuffer.update(t,n,i)}function _gt(e,t,n,i,o){e._viewport.width=n,e._viewport.height=i;let r=!Xe.equals(e._viewport,o.viewport),s=r!==e._useScissorTest;e._useScissorTest=r,Xe.equals(e._scissorRectangle,o.viewport)||(e._scissorRectangle=Xe.clone(o.viewport,e._scissorRectangle),s=!0),(!l(e._renderState)||!Xe.equals(e._viewport,e._renderState.viewport)||s)&&(e._renderState=Ue.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}})),l(e._packedDepthCommand)||(e._packedDepthCommand=t.createViewportQuadCommand(a0,{uniformMap:{u_depthTexture:function(){return e.depthStencilTexture}},owner:e})),l(e._clearCommand)||(e._clearCommand=new Ei({color:new G(0,0,0,0),depth:1,stencil:0,owner:e})),e._packedDepthCommand.framebuffer=e._packedDepthFramebuffer.framebuffer,e._packedDepthCommand.renderState=e._renderState,e._clearCommand.framebuffer=e.classificationFramebuffer,e._clearCommand.renderState=e._renderState}c0.prototype.updateAndClear=function(e,t,n,i){let o=t.width,r=t.height;ggt(this,n,o,r,e),_gt(this,n,o,r,i),this._useHdr=e};c0.prototype.clearClassification=function(e,t){this._clearCommand.execute(e,t)};c0.prototype.packDepth=function(e,t){return this._packedDepthCommand.execute(e,t),this.packedDepthTexture};c0.prototype.isDestroyed=function(){return!1};c0.prototype.destroy=function(){return pgt(this),ue(this)};var kV=c0;function Jp(e){this._numSamples=1,this._translucentMultipassSupport=!1,this._translucentMRTSupport=!1;let t=e.colorBufferFloat&&e.depthTexture&&e.floatBlend;this._translucentMRTSupport=e.drawBuffers&&t,this._translucentMultipassSupport=!this._translucentMRTSupport&&t,this._opaqueFBO=void 0,this._opaqueTexture=void 0,this._depthStencilTexture=void 0,this._accumulationTexture=void 0,this._translucentFBO=new vi({colorAttachmentsLength:this._translucentMRTSupport?2:1,createColorAttachments:!1,createDepthAttachments:!1,depth:!0}),this._alphaFBO=new vi({createColorAttachments:!1,createDepthAttachments:!1,depth:!0}),this._adjustTranslucentFBO=new vi({colorAttachmentsLength:this._translucentMRTSupport?2:1,createColorAttachments:!1}),this._adjustAlphaFBO=new vi({createColorAttachments:!1}),this._opaqueClearCommand=new Ei({color:new G(0,0,0,0),owner:this}),this._translucentMRTClearCommand=new Ei({color:new G(0,0,0,1),owner:this}),this._translucentMultipassClearCommand=new Ei({color:new G(0,0,0,0),owner:this}),this._alphaClearCommand=new Ei({color:new G(1,1,1,1),owner:this}),this._translucentRenderStateCache={},this._alphaRenderStateCache={},this._compositeCommand=void 0,this._adjustTranslucentCommand=void 0,this._adjustAlphaCommand=void 0,this._viewport=new Xe,this._rs=void 0,this._useScissorTest=!1,this._scissorRectangle=void 0,this._useHDR=!1}function n0e(e){e._accumulationTexture=e._accumulationTexture&&!e._accumulationTexture.isDestroyed()&&e._accumulationTexture.destroy(),e._revealageTexture=e._revealageTexture&&!e._revealageTexture.isDestroyed()&&e._revealageTexture.destroy()}function HX(e){e._translucentFBO.destroy(),e._alphaFBO.destroy(),e._adjustTranslucentFBO.destroy(),e._adjustAlphaFBO.destroy()}function i0e(e){n0e(e),HX(e)}function ygt(e,t,n,i){n0e(e),e._accumulationTexture=new Nt({context:t,width:n,height:i,pixelFormat:et.RGBA,pixelDatatype:He.FLOAT}),e._revealageTexture=new Nt({context:t,pixelFormat:et.RGBA,pixelDatatype:He.FLOAT,width:n,height:i,flipY:!1})}function Cgt(e,t){HX(e);let n=ee.FRAMEBUFFER_COMPLETE,i=!0,{width:o,height:r}=e._accumulationTexture;if(e._translucentMRTSupport&&(e._translucentFBO.setColorTexture(e._accumulationTexture,0),e._translucentFBO.setColorTexture(e._revealageTexture,1),e._translucentFBO.setDepthStencilTexture(e._depthStencilTexture),e._translucentFBO.update(t,o,r),e._adjustTranslucentFBO.setColorTexture(e._accumulationTexture,0),e._adjustTranslucentFBO.setColorTexture(e._revealageTexture,1),e._adjustTranslucentFBO.update(t,o,r),(e._translucentFBO.status!==n||e._adjustTranslucentFBO.status!==n)&&(HX(e),e._translucentMRTSupport=!1)),!e._translucentMRTSupport){e._translucentFBO.setColorTexture(e._accumulationTexture),e._translucentFBO.setDepthStencilTexture(e._depthStencilTexture),e._translucentFBO.update(t,o,r),e._alphaFBO.setColorTexture(e._revealageTexture),e._alphaFBO.setDepthStencilTexture(e._depthStencilTexture),e._alphaFBO.update(t,o,r),e._adjustTranslucentFBO.setColorTexture(e._accumulationTexture),e._adjustTranslucentFBO.update(t,o,r),e._adjustAlphaFBO.setColorTexture(e._revealageTexture),e._adjustAlphaFBO.update(t,o,r);let s=e._translucentFBO.status===n,a=e._alphaFBO.status===n,c=e._adjustTranslucentFBO.status===n,u=e._adjustAlphaFBO.status===n;(!s||!a||!c||!u)&&(i0e(e),e._translucentMultipassSupport=!1,i=!1)}return i}Jp.prototype.update=function(e,t,n,i,o){if(!this.isSupported())return;this._opaqueFBO=n,this._opaqueTexture=n.getColorTexture(0),this._depthStencilTexture=n.getDepthStencilTexture();let{width:r,height:s}=this._opaqueTexture,a=this._accumulationTexture,c=!l(a)||a.width!==r||a.height!==s||i!==this._useHDR,u=this._numSamples!==o;if((c||u)&&(this._numSamples=o,ygt(this,e,r,s)),(!l(this._translucentFBO.framebuffer)||c||u)&&!Cgt(this,e))return;this._useHDR=i;let f=this,h,A;l(this._compositeCommand)||(h=new We({sources:[fz]}),this._translucentMRTSupport&&h.defines.push("MRT"),A={u_opaque:function(){return f._opaqueTexture},u_accumulation:function(){return f._accumulationTexture},u_revealage:function(){return f._revealageTexture}},this._compositeCommand=e.createViewportQuadCommand(h,{uniformMap:A,owner:this})),l(this._adjustTranslucentCommand)||(this._translucentMRTSupport?(h=new We({defines:["MRT"],sources:[Jv]}),A={u_bgColor:function(){return f._translucentMRTClearCommand.color},u_depthTexture:function(){return f._depthStencilTexture}},this._adjustTranslucentCommand=e.createViewportQuadCommand(h,{uniformMap:A,owner:this})):this._translucentMultipassSupport&&(h=new We({sources:[Jv]}),A={u_bgColor:function(){return f._translucentMultipassClearCommand.color},u_depthTexture:function(){return f._depthStencilTexture}},this._adjustTranslucentCommand=e.createViewportQuadCommand(h,{uniformMap:A,owner:this}),A={u_bgColor:function(){return f._alphaClearCommand.color},u_depthTexture:function(){return f._depthStencilTexture}},this._adjustAlphaCommand=e.createViewportQuadCommand(h,{uniformMap:A,owner:this}))),this._viewport.width=r,this._viewport.height=s;let g=!Xe.equals(this._viewport,t.viewport),m=g!==this._useScissorTest;this._useScissorTest=g,Xe.equals(this._scissorRectangle,t.viewport)||(this._scissorRectangle=Xe.clone(t.viewport,this._scissorRectangle),m=!0),(!l(this._rs)||!Xe.equals(this._viewport,this._rs.viewport)||m)&&(this._rs=Ue.fromCache({viewport:this._viewport,scissorTest:{enabled:this._useScissorTest,rectangle:this._scissorRectangle}})),l(this._compositeCommand)&&(this._compositeCommand.renderState=this._rs),this._adjustTranslucentCommand&&(this._adjustTranslucentCommand.renderState=this._rs),l(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.renderState=this._rs)};var Egt={enabled:!0,color:new G(0,0,0,0),equationRgb:Cc.ADD,equationAlpha:Cc.ADD,functionSourceRgb:Uo.ONE,functionDestinationRgb:Uo.ONE,functionSourceAlpha:Uo.ZERO,functionDestinationAlpha:Uo.ONE_MINUS_SOURCE_ALPHA},Igt={enabled:!0,color:new G(0,0,0,0),equationRgb:Cc.ADD,equationAlpha:Cc.ADD,functionSourceRgb:Uo.ONE,functionDestinationRgb:Uo.ONE,functionSourceAlpha:Uo.ONE,functionDestinationAlpha:Uo.ONE},xgt={enabled:!0,color:new G(0,0,0,0),equationRgb:Cc.ADD,equationAlpha:Cc.ADD,functionSourceRgb:Uo.ZERO,functionDestinationRgb:Uo.ONE_MINUS_SOURCE_ALPHA,functionSourceAlpha:Uo.ZERO,functionDestinationAlpha:Uo.ONE_MINUS_SOURCE_ALPHA};function WX(e,t,n,i){let o=n[i.id];if(!l(o)){let r=Ue.getState(i);r.depthMask=!1,r.blending=t,o=Ue.fromCache(r),n[i.id]=o}return o}function bgt(e,t,n){return WX(t,Egt,e._translucentRenderStateCache,n)}function Tgt(e,t,n){return WX(t,Igt,e._translucentRenderStateCache,n)}function Sgt(e,t,n){return WX(t,xgt,e._alphaRenderStateCache,n)}var wgt=` vec3 Ci = czm_out_FragColor.rgb * czm_out_FragColor.a; + float ai = czm_out_FragColor.a; + float wzi = czm_alphaWeight(ai); + out_FragData_0 = vec4(Ci * wzi, ai); + out_FragData_1 = vec4(ai * wzi); +`,Bgt=` vec3 Ci = czm_out_FragColor.rgb * czm_out_FragColor.a; + float ai = czm_out_FragColor.a; + float wzi = czm_alphaWeight(ai); + out_FragColor = vec4(Ci, ai) * wzi; +`,Dgt=` float ai = czm_out_FragColor.a; + out_FragColor = vec4(ai); +`;function jX(e,t,n,i){let{shaderCache:o}=e,r=o.getDerivedShaderProgram(t,n);if(l(r))return r;let s=t._attributeLocations,a=t.fragmentShaderSource.clone();a.sources=a.sources.map(function(f){return We.replaceMain(f,"czm_translucent_main").replace(/out_FragColor/g,"czm_out_FragColor").replace(/layout\s*\(location\s*=\s*0\)\s*out\s+vec4\s+out_FragColor;/g,"").replace(/\bdiscard\b/g,"czm_discard = true").replace(/czm_phong/g,"czm_translucentPhong")}),a.sources.splice(0,0,`vec4 czm_out_FragColor; +bool czm_discard = false; +`);let c=[...i.matchAll(/out_FragData_(\d+)/g)],u="";for(let f=0;f<c.length;f++){let h=c[f];u=`layout (location = ${h[1]}) out vec4 ${h[0]}; +${u}`}return a.sources.push(u),a.sources.push(`void main() +{ + czm_translucent_main(); + if (czm_discard) + { + discard; + } +${i}} +`),o.createDerivedShaderProgram(t,n,{vertexShaderSource:t.vertexShaderSource,fragmentShaderSource:a,attributeLocations:s})}function vgt(e,t){return jX(e,t,"translucentMRT",wgt)}function Pgt(e,t){return jX(e,t,"translucentMultipass",Bgt)}function Rgt(e,t){return jX(e,t,"alphaMultipass",Dgt)}Jp.prototype.createDerivedCommands=function(e,t,n){if(l(n)||(n={}),this._translucentMRTSupport){let a,c;return l(n.translucentCommand)&&(a=n.translucentCommand.shaderProgram,c=n.translucentCommand.renderState),n.translucentCommand=nt.shallowClone(e,n.translucentCommand),!l(a)||n.shaderProgramId!==e.shaderProgram.id?(n.translucentCommand.shaderProgram=vgt(t,e.shaderProgram),n.translucentCommand.renderState=bgt(this,t,e.renderState),n.shaderProgramId=e.shaderProgram.id):(n.translucentCommand.shaderProgram=a,n.translucentCommand.renderState=c),n}let i,o,r,s;return l(n.translucentCommand)&&(i=n.translucentCommand.shaderProgram,o=n.translucentCommand.renderState,r=n.alphaCommand.shaderProgram,s=n.alphaCommand.renderState),n.translucentCommand=nt.shallowClone(e,n.translucentCommand),n.alphaCommand=nt.shallowClone(e,n.alphaCommand),!l(i)||n.shaderProgramId!==e.shaderProgram.id?(n.translucentCommand.shaderProgram=Pgt(t,e.shaderProgram),n.translucentCommand.renderState=Tgt(this,t,e.renderState),n.alphaCommand.shaderProgram=Rgt(t,e.shaderProgram),n.alphaCommand.renderState=Sgt(this,t,e.renderState),n.shaderProgramId=e.shaderProgram.id):(n.translucentCommand.shaderProgram=i,n.translucentCommand.renderState=o,n.alphaCommand.shaderProgram=r,n.alphaCommand.renderState=s),n};function Mgt(e,t,n,i,o,r){let{context:s,frameState:a}=t,{useLogDepth:c,shadowState:u}=a,f=t._hdr,h=i.framebuffer,A=u.lightShadowsEnabled;i.framebuffer=e._adjustTranslucentFBO.framebuffer,e._adjustTranslucentCommand.execute(s,i),i.framebuffer=e._adjustAlphaFBO.framebuffer,e._adjustAlphaCommand.execute(s,i);let g=e._opaqueFBO.framebuffer;i.framebuffer=e._translucentFBO.framebuffer;for(let m=0;m<o.length;++m){let _=o[m];_=c?_.derivedCommands.logDepth.command:_,_=f?_.derivedCommands.hdr.command:_;let y=A&&_.receiveShadows?_.derivedCommands.oit.shadows.translucentCommand:_.derivedCommands.oit.translucentCommand;n(y,t,i,g)}if(l(r)){let m=r.unclassifiedCommand,_=A&&m.receiveShadows?m.derivedCommands.oit.shadows.translucentCommand:m.derivedCommands.oit.translucentCommand;n(_,t,i,g)}i.framebuffer=e._alphaFBO.framebuffer;for(let m=0;m<o.length;++m){let _=o[m];_=c?_.derivedCommands.logDepth.command:_,_=f?_.derivedCommands.hdr.command:_;let y=A&&_.receiveShadows?_.derivedCommands.oit.shadows.alphaCommand:_.derivedCommands.oit.alphaCommand;n(y,t,i,g)}if(l(r)){let m=r.unclassifiedCommand,_=A&&m.receiveShadows?m.derivedCommands.oit.shadows.alphaCommand:m.derivedCommands.oit.alphaCommand;n(_,t,i,g)}i.framebuffer=h}function Ngt(e,t,n,i,o,r){let{context:s,frameState:a}=t,{useLogDepth:c,shadowState:u}=a,f=t._hdr,h=i.framebuffer,A=u.lightShadowsEnabled;i.framebuffer=e._adjustTranslucentFBO.framebuffer,e._adjustTranslucentCommand.execute(s,i);let g=e._opaqueFBO.framebuffer;i.framebuffer=e._translucentFBO.framebuffer;for(let m=0;m<o.length;++m){let _=o[m];_=c?_.derivedCommands.logDepth.command:_,_=f?_.derivedCommands.hdr.command:_;let y=A&&_.receiveShadows?_.derivedCommands.oit.shadows.translucentCommand:_.derivedCommands.oit.translucentCommand;n(y,t,i,g)}if(l(r)){let m=r.unclassifiedCommand,_=A&&m.receiveShadows?m.derivedCommands.oit.shadows.translucentCommand:m.derivedCommands.oit.translucentCommand;n(_,t,i,g)}i.framebuffer=h}Jp.prototype.executeCommands=function(e,t,n,i,o){if(this._translucentMRTSupport){Ngt(this,e,t,n,i,o);return}Mgt(this,e,t,n,i,o)};Jp.prototype.execute=function(e,t){this._compositeCommand.execute(e,t)};Jp.prototype.clear=function(e,t,n){let i=t.framebuffer;t.framebuffer=this._opaqueFBO.framebuffer,G.clone(n,this._opaqueClearCommand.color),this._opaqueClearCommand.execute(e,t),t.framebuffer=this._translucentFBO.framebuffer,(this._translucentMRTSupport?this._translucentMRTClearCommand:this._translucentMultipassClearCommand).execute(e,t),this._translucentMultipassSupport&&(t.framebuffer=this._alphaFBO.framebuffer,this._alphaClearCommand.execute(e,t)),t.framebuffer=i};Jp.prototype.isSupported=function(){return this._translucentMRTSupport||this._translucentMultipassSupport};Jp.prototype.isDestroyed=function(){return!1};Jp.prototype.destroy=function(){return i0e(this),l(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),l(this._adjustTranslucentCommand)&&(this._adjustTranslucentCommand.shaderProgram=this._adjustTranslucentCommand.shaderProgram&&this._adjustTranslucentCommand.shaderProgram.destroy()),l(this._adjustAlphaCommand)&&(this._adjustAlphaCommand.shaderProgram=this._adjustAlphaCommand.shaderProgram&&this._adjustAlphaCommand.shaderProgram.destroy()),ue(this)};var UV=Jp;function yP(){this._framebuffer=new vi({color:!1,depthStencil:!0,supportsDepthTexture:!0}),this._passState=void 0}Object.defineProperties(yP.prototype,{framebuffer:{get:function(){return this._framebuffer.framebuffer}}});function Lgt(e){e._framebuffer.destroy()}function Ogt(e,t){let n=t.drawingBufferWidth,i=t.drawingBufferHeight;e._framebuffer.update(t,n,i);let o=new El(t);o.blendingEnabled=!1,o.scissorTest={enabled:!0,rectangle:new Xe},o.viewport=new Xe,e._passState=o}yP.prototype.update=function(e,t,n){let i=n.width,o=n.height;this._framebuffer.isDirty(i,o)&&Ogt(this,e);let r=this.framebuffer,s=this._passState;return s.framebuffer=r,s.viewport.width=i,s.viewport.height=o,s.scissorTest.rectangle.x=t.x,s.scissorTest.rectangle.y=o-t.y,s.scissorTest.rectangle.width=1,s.scissorTest.rectangle.height=1,s};yP.prototype.isDestroyed=function(){return!1};yP.prototype.destroy=function(){return Lgt(this),ue(this)};var GV=yP;function VT(e){let t=new El(e);t.blendingEnabled=!1,t.scissorTest={enabled:!0,rectangle:new Xe},t.viewport=new Xe,this._context=e,this._fb=new vi({depthStencil:!0}),this._passState=t,this._width=0,this._height=0}VT.prototype.begin=function(e,t){let n=this._context,{width:i,height:o}=t;return Xe.clone(e,this._passState.scissorTest.rectangle),this._width=i,this._height=o,this._fb.update(n,i,o),this._passState.framebuffer=this._fb.framebuffer,this._passState.viewport.width=i,this._passState.viewport.height=o,this._passState};var CP=new G;VT.prototype.end=function(e){let t=e.width??1,n=e.height??1,i=this._context,o=i.readPixels({x:e.x,y:e.y,width:t,height:n,framebuffer:this._fb.framebuffer}),r=Math.max(t,n),s=r*r,a=Math.floor(t*.5),c=Math.floor(n*.5),u=0,f=0,h=0,A=-1;for(let g=0;g<s;++g){if(-a<=u&&u<=a&&-c<=f&&f<=c){let m=4*((c-f)*t+u+a);CP.red=G.byteToFloat(o[m]),CP.green=G.byteToFloat(o[m+1]),CP.blue=G.byteToFloat(o[m+2]),CP.alpha=G.byteToFloat(o[m+3]);let _=i.getObjectByPickColor(CP);if(l(_))return _}if(u===f||u<0&&-u===f||u>0&&u===1-f){let m=h;h=-A,A=m}u+=h,f+=A}};VT.prototype.readCenterPixel=function(e){let t=e.width??1,n=e.height??1,o=this._context.readPixels({x:e.x,y:e.y,width:t,height:n,framebuffer:this._fb.framebuffer}),r=Math.floor(t*.5),a=4*(Math.floor(n*.5)*t+r);return o.slice(a,a+4)};VT.prototype.isDestroyed=function(){return!1};VT.prototype.destroy=function(){return this._fb.destroy(),ue(this)};var zV=VT;function Zp(){this._numSamples=1,this._colorFramebuffer=new vi({depthStencil:!0,supportsDepthTexture:!0}),this._idFramebuffer=new vi({depthStencil:!0,supportsDepthTexture:!0}),this._idClearColor=new G(0,0,0,0),this._clearCommand=new Ei({color:new G(0,0,0,0),depth:1,owner:this})}function Fgt(e){e._colorFramebuffer.destroy(),e._idFramebuffer.destroy()}Object.defineProperties(Zp.prototype,{framebuffer:{get:function(){return this._colorFramebuffer.framebuffer}},idFramebuffer:{get:function(){return this._idFramebuffer.framebuffer}},depthStencilTexture:{get:function(){return this._colorFramebuffer.getDepthStencilTexture()}}});Zp.prototype.update=function(e,t,n,i){let o=t.width,r=t.height,s=n?e.halfFloatingPointTexture?He.HALF_FLOAT:He.FLOAT:He.UNSIGNED_BYTE;this._numSamples=i,this._colorFramebuffer.update(e,o,r,i,s),this._idFramebuffer.update(e,o,r)};Zp.prototype.clear=function(e,t,n){G.clone(n,this._clearCommand.color),G.clone(this._idClearColor,this._clearCommand.color),this._colorFramebuffer.clear(e,this._clearCommand,t),this._idFramebuffer.clear(e,this._clearCommand,t)};Zp.prototype.getFramebuffer=function(){return this._colorFramebuffer.framebuffer};Zp.prototype.getIdFramebuffer=function(){return this._idFramebuffer.framebuffer};Zp.prototype.prepareColorTextures=function(e){this._numSamples>1&&this._colorFramebuffer.prepareTextures(e)};Zp.prototype.isDestroyed=function(){return!1};Zp.prototype.destroy=function(){return Fgt(this),ue(this)};var HT=Zp;function l0(){}l0.getShadowCastShaderKeyword=function(e,t,n,i){return`castShadow ${e} ${t} ${n} ${i}`};l0.createShadowCastVertexShader=function(e,t,n){let i=e.defines.slice(0),o=e.sources.slice(0);i.push("SHADOW_MAP"),n&&i.push("GENERATE_POSITION");let r=We.findPositionVarying(e),s=l(r);if(t&&!s){let a=o.length;for(let u=0;u<a;++u)o[u]=We.replaceMain(o[u],"czm_shadow_cast_main");o.push(`out vec3 v_positionEC; +void main() +{ + czm_shadow_cast_main(); + v_positionEC = (czm_inverseProjection * gl_Position).xyz; +}`)}return new We({defines:i,sources:o})};l0.createShadowCastFragmentShader=function(e,t,n,i){let o=e.defines.slice(0),r=e.sources.slice(0);o.push("SHADOW_MAP");let s=We.findPositionVarying(e),a=l(s);a||(s="v_positionEC");let c=r.length;for(let f=0;f<c;++f)r[f]=We.replaceMain(r[f],"czm_shadow_cast_main");let u="";return t&&(a||(u+=`in vec3 v_positionEC; +`),u+=`uniform vec4 shadowMap_lightPositionEC; +`),i?u+=`void main() +{ +`:u+=`void main() +{ + czm_shadow_cast_main(); + if (out_FragColor.a == 0.0) + { + discard; + } +`,t?u+=` float distance = length(${s}); + if (distance >= shadowMap_lightPositionEC.w) + { + discard; + } + distance /= shadowMap_lightPositionEC.w; // radius + out_FragColor = czm_packDepth(distance); +`:n?u+=` out_FragColor = vec4(1.0); +`:u+=` out_FragColor = czm_packDepth(gl_FragCoord.z); +`,u+=`} +`,r.push(u),new We({defines:o,sources:r})};l0.getShadowReceiveShaderKeyword=function(e,t,n,i){let o=e._usesDepthTexture,r=e._polygonOffsetSupported,s=e._isPointLight,a=e._isSpotLight,c=e._numberOfCascades>1,u=e.debugCascadeColors,f=e.softShadows;return`receiveShadow ${o}${r}${s}${a}${c}${u}${f}${t}${n}${i}`};l0.createShadowReceiveVertexShader=function(e,t,n){let i=e.defines.slice(0),o=e.sources.slice(0);return i.push("SHADOW_MAP"),t&&(n?i.push("GENERATE_POSITION_AND_NORMAL"):i.push("GENERATE_POSITION")),new We({defines:i,sources:o})};l0.createShadowReceiveFragmentShader=function(e,t,n,i,o){let r=We.findNormalVarying(e),s=!i&&l(r)||i&&o,a=We.findPositionVarying(e),c=l(a),u=t._usesDepthTexture,f=t._polygonOffsetSupported,h=t._isPointLight,A=t._isSpotLight,g=t._numberOfCascades>1,m=t.debugCascadeColors,_=t.softShadows,y=h?t._pointBias:i?t._terrainBias:t._primitiveBias,C=e.defines.slice(0),E=e.sources.slice(0),I=E.length;for(let B=0;B<I;++B)E[B]=We.replaceMain(E[B],"czm_shadow_receive_main");h?C.push("USE_CUBE_MAP_SHADOW"):u&&C.push("USE_SHADOW_DEPTH_TEXTURE"),_&&!h&&C.push("USE_SOFT_SHADOWS"),g&&n&&i&&(s?C.push("ENABLE_VERTEX_LIGHTING"):C.push("ENABLE_DAYNIGHT_SHADING")),n&&y.normalShading&&s&&(C.push("USE_NORMAL_SHADING"),y.normalShadingSmooth>0&&C.push("USE_NORMAL_SHADING_SMOOTH"));let b="";h?b+=`uniform samplerCube shadowMap_textureCube; +`:b+=`uniform sampler2D shadowMap_texture; +`;let S;return c?S=` return vec4(${a}, 1.0); +`:S=`#ifndef LOG_DEPTH + return czm_windowToEyeCoordinates(gl_FragCoord); +#else + return vec4(v_logPositionEC, 1.0); +#endif +`,b+=`uniform mat4 shadowMap_matrix; +uniform vec3 shadowMap_lightDirectionEC; +uniform vec4 shadowMap_lightPositionEC; +uniform vec4 shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness; +uniform vec4 shadowMap_texelSizeDepthBiasAndNormalShadingSmooth; +#ifdef LOG_DEPTH +in vec3 v_logPositionEC; +#endif +vec4 getPositionEC() +{ +${S}} +vec3 getNormalEC() +{ +${s?` return normalize(${r}); +`:` return vec3(1.0); +`}} +void applyNormalOffset(inout vec4 positionEC, vec3 normalEC, float nDotL) +{ +${y.normalOffset&&s?` float normalOffset = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.x; + float normalOffsetScale = 1.0 - nDotL; + vec3 offset = normalOffset * normalOffsetScale * normalEC; + positionEC.xyz += offset; +`:""}} +`,b+=`void main() +{ + czm_shadow_receive_main(); + vec4 positionEC = getPositionEC(); + vec3 normalEC = getNormalEC(); + float depth = -positionEC.z; +`,b+=` czm_shadowParameters shadowParameters; + shadowParameters.texelStepSize = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.xy; + shadowParameters.depthBias = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.z; + shadowParameters.normalShadingSmooth = shadowMap_texelSizeDepthBiasAndNormalShadingSmooth.w; + shadowParameters.darkness = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.w; +`,i?b+=` shadowParameters.depthBias *= max(depth * 0.01, 1.0); +`:f||(b+=` shadowParameters.depthBias *= mix(1.0, 100.0, depth * 0.0015); +`),h?b+=` vec3 directionEC = positionEC.xyz - shadowMap_lightPositionEC.xyz; + float distance = length(directionEC); + directionEC = normalize(directionEC); + float radius = shadowMap_lightPositionEC.w; + // Stop early if the fragment is beyond the point light radius + if (distance > radius) + { + return; + } + vec3 directionWC = czm_inverseViewRotation * directionEC; + shadowParameters.depth = distance / radius; + shadowParameters.nDotL = clamp(dot(normalEC, -directionEC), 0.0, 1.0); + shadowParameters.texCoords = directionWC; + float visibility = czm_shadowVisibility(shadowMap_textureCube, shadowParameters); +`:A?b+=` vec3 directionEC = normalize(positionEC.xyz - shadowMap_lightPositionEC.xyz); + float nDotL = clamp(dot(normalEC, -directionEC), 0.0, 1.0); + applyNormalOffset(positionEC, normalEC, nDotL); + vec4 shadowPosition = shadowMap_matrix * positionEC; + // Spot light uses a perspective projection, so perform the perspective divide + shadowPosition /= shadowPosition.w; + // Stop early if the fragment is not in the shadow bounds + if (any(lessThan(shadowPosition.xyz, vec3(0.0))) || any(greaterThan(shadowPosition.xyz, vec3(1.0)))) + { + return; + } + shadowParameters.texCoords = shadowPosition.xy; + shadowParameters.depth = shadowPosition.z; + shadowParameters.nDotL = nDotL; + float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters); +`:g?b+=` float maxDepth = shadowMap_cascadeSplits[1].w; + // Stop early if the eye depth exceeds the last cascade + if (depth > maxDepth) + { + return; + } + // Get the cascade based on the eye-space depth + vec4 weights = czm_cascadeWeights(depth); + // Apply normal offset + float nDotL = clamp(dot(normalEC, shadowMap_lightDirectionEC), 0.0, 1.0); + applyNormalOffset(positionEC, normalEC, nDotL); + // Transform position into the cascade + vec4 shadowPosition = czm_cascadeMatrix(weights) * positionEC; + // Get visibility + shadowParameters.texCoords = shadowPosition.xy; + shadowParameters.depth = shadowPosition.z; + shadowParameters.nDotL = nDotL; + float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters); + // Fade out shadows that are far away + float shadowMapMaximumDistance = shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness.z; + float fade = max((depth - shadowMapMaximumDistance * 0.8) / (shadowMapMaximumDistance * 0.2), 0.0); + visibility = mix(visibility, 1.0, fade); +${m?` // Draw cascade colors for debugging + out_FragColor *= czm_cascadeColor(weights); +`:""}`:b+=` float nDotL = clamp(dot(normalEC, shadowMap_lightDirectionEC), 0.0, 1.0); + applyNormalOffset(positionEC, normalEC, nDotL); + vec4 shadowPosition = shadowMap_matrix * positionEC; + // Stop early if the fragment is not in the shadow bounds + if (any(lessThan(shadowPosition.xyz, vec3(0.0))) || any(greaterThan(shadowPosition.xyz, vec3(1.0)))) + { + return; + } + shadowParameters.texCoords = shadowPosition.xy; + shadowParameters.depth = shadowPosition.z; + shadowParameters.nDotL = nDotL; + float visibility = czm_shadowVisibility(shadowMap_texture, shadowParameters); +`,b+=` out_FragColor.rgb *= visibility; +} +`,E.push(b),new We({defines:C,sources:E})};var $p=l0;function AA(e){e=e??V.EMPTY_OBJECT;let t=e.context;this._enabled=e.enabled??!0,this._softShadows=e.softShadows??!1,this._normalOffset=e.normalOffset??!0,this.dirty=!0,this.fromLightSource=e.fromLightSource??!0,this.darkness=e.darkness??.3,this._darkness=this.darkness,this.fadingEnabled=e.fadingEnabled??!0,this.maximumDistance=e.maximumDistance??5e3,this._outOfView=!1,this._outOfViewPrevious=!1,this._needsUpdate=!0;let n=!0;(jt.isInternetExplorer()||jt.isEdge()||(jt.isChrome()||jt.isFirefox())&&jt.isWindows()&&!t.depthTexture)&&(n=!1),this._polygonOffsetSupported=n,this._terrainBias={polygonOffset:n,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:.5,normalShading:!0,normalShadingSmooth:.3,depthBias:1e-4},this._primitiveBias={polygonOffset:n,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:.1,normalShading:!0,normalShadingSmooth:.05,depthBias:2e-5},this._pointBias={polygonOffset:!1,polygonOffsetFactor:1.1,polygonOffsetUnits:4,normalOffset:this._normalOffset,normalOffsetScale:0,normalShading:!0,normalShadingSmooth:.1,depthBias:5e-4},this._depthAttachment=void 0,this._colorAttachment=void 0,this._shadowMapMatrix=new R,this._shadowMapTexture=void 0,this._lightDirectionEC=new d,this._lightPositionEC=new se,this._distance=0,this._lightCamera=e.lightCamera,this._shadowMapCamera=new VV,this._shadowMapCullingVolume=void 0,this._sceneCamera=void 0,this._boundingSphere=new le,this._isPointLight=e.isPointLight??!1,this._pointLightRadius=e.pointLightRadius??100,this._cascadesEnabled=this._isPointLight?!1:e.cascadesEnabled??!0,this._numberOfCascades=this._cascadesEnabled?e.numberOfCascades??4:0,this._fitNearFar=!0,this._maximumCascadeDistances=[25,150,700,Number.MAX_VALUE],this._textureSize=new k,this._isSpotLight=!1,this._cascadesEnabled?this._shadowMapCamera.frustum=new ls:l(this._lightCamera.frustum.fov)&&(this._isSpotLight=!0),this._cascadeSplits=[new se,new se],this._cascadeMatrices=[new R,new R,new R,new R],this._cascadeDistances=new se;let i;this._isPointLight?i=6:this._cascadesEnabled?i=this._numberOfCascades:i=1,this._passes=new Array(i);for(let o=0;o<i;++o)this._passes[o]=new Qgt(t);this.debugShow=!1,this.debugFreezeFrame=!1,this._debugFreezeFrame=!1,this._debugCascadeColors=!1,this._debugLightFrustum=void 0,this._debugCameraFrustum=void 0,this._debugCascadeFrustums=new Array(this._numberOfCascades),this._debugShadowViewCommand=void 0,this._usesDepthTexture=t.depthTexture,this._isPointLight&&(this._usesDepthTexture=!1),this._primitiveRenderState=void 0,this._terrainRenderState=void 0,this._pointRenderState=void 0,qX(this),this._clearCommand=new Ei({depth:1,color:new G}),this._clearPassState=new El(t),this._size=e.size??2048,this.size=this._size}AA.MAXIMUM_DISTANCE=2e4;function Qgt(e){this.camera=new VV,this.passState=new El(e),this.framebuffer=void 0,this.textureOffsets=void 0,this.commandList=[],this.cullingVolume=void 0}function YX(e,t){return Ue.fromCache({cull:{enabled:!0,face:Mi.BACK},depthTest:{enabled:!0},colorMask:{red:e,green:e,blue:e,alpha:e},depthMask:!0,polygonOffset:{enabled:t.polygonOffset,factor:t.polygonOffsetFactor,units:t.polygonOffsetUnits}})}function qX(e){let t=!e._usesDepthTexture;e._primitiveRenderState=YX(t,e._primitiveBias),e._terrainRenderState=YX(t,e._terrainBias),e._pointRenderState=YX(t,e._pointBias)}AA.prototype.debugCreateRenderStates=function(){qX(this)};Object.defineProperties(AA.prototype,{enabled:{get:function(){return this._enabled},set:function(e){this.dirty=this._enabled!==e,this._enabled=e}},normalOffset:{get:function(){return this._normalOffset},set:function(e){this.dirty=this._normalOffset!==e,this._normalOffset=e,this._terrainBias.normalOffset=e,this._primitiveBias.normalOffset=e,this._pointBias.normalOffset=e}},softShadows:{get:function(){return this._softShadows},set:function(e){this.dirty=this._softShadows!==e,this._softShadows=e}},size:{get:function(){return this._size},set:function(e){Hgt(this,e)}},outOfView:{get:function(){return this._outOfView}},shadowMapCullingVolume:{get:function(){return this._shadowMapCullingVolume}},passes:{get:function(){return this._passes}},isPointLight:{get:function(){return this._isPointLight}},debugCascadeColors:{get:function(){return this._debugCascadeColors},set:function(e){this.dirty=this._debugCascadeColors!==e,this._debugCascadeColors=e}}});function KX(e){let t=e._passes.length;for(let n=0;n<t;++n){let i=e._passes[n],o=i.framebuffer;l(o)&&!o.isDestroyed()&&o.destroy(),i.framebuffer=void 0}e._depthAttachment=e._depthAttachment&&e._depthAttachment.destroy(),e._colorAttachment=e._colorAttachment&&e._colorAttachment.destroy()}function kgt(e,t){let n=new Qf({context:t,width:e._textureSize.x,height:e._textureSize.y,format:Yl.DEPTH_COMPONENT16}),i=new Nt({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,sampler:on.NEAREST}),o=new as({context:t,depthRenderbuffer:n,colorTextures:[i],destroyAttachments:!1}),r=e._passes.length;for(let s=0;s<r;++s){let a=e._passes[s];a.framebuffer=o,a.passState.framebuffer=o}e._shadowMapTexture=i,e._depthAttachment=n,e._colorAttachment=i}function Ugt(e,t){let n=new Nt({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:et.DEPTH_STENCIL,pixelDatatype:He.UNSIGNED_INT_24_8,sampler:on.NEAREST}),i=new as({context:t,depthStencilTexture:n,destroyAttachments:!1}),o=e._passes.length;for(let r=0;r<o;++r){let s=e._passes[r];s.framebuffer=i,s.passState.framebuffer=i}e._shadowMapTexture=n,e._depthAttachment=n}function Ggt(e,t){let n=new Qf({context:t,width:e._textureSize.x,height:e._textureSize.y,format:Yl.DEPTH_COMPONENT16}),i=new jr({context:t,width:e._textureSize.x,height:e._textureSize.y,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,sampler:on.NEAREST}),o=[i.negativeX,i.negativeY,i.negativeZ,i.positiveX,i.positiveY,i.positiveZ];for(let r=0;r<6;++r){let s=new as({context:t,depthRenderbuffer:n,colorTextures:[o[r]],destroyAttachments:!1}),a=e._passes[r];a.framebuffer=s,a.passState.framebuffer=s}e._shadowMapTexture=i,e._depthAttachment=n,e._colorAttachment=i}function s0e(e,t){e._isPointLight?Ggt(e,t):e._usesDepthTexture?Ugt(e,t):kgt(e,t)}function zgt(e,t){e._usesDepthTexture&&e._passes[0].framebuffer.status!==ee.FRAMEBUFFER_COMPLETE&&(e._usesDepthTexture=!1,qX(e),KX(e),s0e(e,t))}function Vgt(e,t){(!l(e._passes[0].framebuffer)||e._shadowMapTexture.width!==e._textureSize.x)&&(KX(e),s0e(e,t),zgt(e,t),a0e(e,t))}function a0e(e,t,n){n=n??0,(e._isPointLight||n===0)&&(e._clearCommand.framebuffer=e._passes[n].framebuffer,e._clearCommand.execute(t,e._clearPassState))}function Hgt(e,t){e._size=t;let n=e._passes,i=n.length,o=e._textureSize;if(e._isPointLight){t=qt.maximumCubeMapSize>=t?t:qt.maximumCubeMapSize,o.x=t,o.y=t;let r=new Xe(0,0,t,t);n[0].passState.viewport=r,n[1].passState.viewport=r,n[2].passState.viewport=r,n[3].passState.viewport=r,n[4].passState.viewport=r,n[5].passState.viewport=r}else i===1?(t=qt.maximumTextureSize>=t?t:qt.maximumTextureSize,o.x=t,o.y=t,n[0].passState.viewport=new Xe(0,0,t,t)):i===4&&(t=qt.maximumTextureSize>=t*2?t:qt.maximumTextureSize/2,o.x=t*2,o.y=t*2,n[0].passState.viewport=new Xe(0,0,t,t),n[1].passState.viewport=new Xe(t,0,t,t),n[2].passState.viewport=new Xe(0,t,t,t),n[3].passState.viewport=new Xe(t,t,t,t));e._clearPassState.viewport=new Xe(0,0,o.x,o.y);for(let r=0;r<i;++r){let s=n[r],a=s.passState.viewport,c=a.x/o.x,u=a.y/o.y,f=a.width/o.x,h=a.height/o.y;s.textureOffsets=new R(f,0,0,c,0,h,0,u,0,0,1,0,0,0,0,1)}}var Wgt=new Xe;function jgt(e,t){let n;e._isPointLight?n=`uniform samplerCube shadowMap_textureCube; +in vec2 v_textureCoordinates; +void main() +{ + vec2 uv = v_textureCoordinates; + vec3 dir; + + if (uv.y < 0.5) + { + if (uv.x < 0.333) + { + dir.x = -1.0; + dir.y = uv.x * 6.0 - 1.0; + dir.z = uv.y * 4.0 - 1.0; + } + else if (uv.x < 0.666) + { + dir.y = -1.0; + dir.x = uv.x * 6.0 - 3.0; + dir.z = uv.y * 4.0 - 1.0; + } + else + { + dir.z = -1.0; + dir.x = uv.x * 6.0 - 5.0; + dir.y = uv.y * 4.0 - 1.0; + } + } + else + { + if (uv.x < 0.333) + { + dir.x = 1.0; + dir.y = uv.x * 6.0 - 1.0; + dir.z = uv.y * 4.0 - 3.0; + } + else if (uv.x < 0.666) + { + dir.y = 1.0; + dir.x = uv.x * 6.0 - 3.0; + dir.z = uv.y * 4.0 - 3.0; + } + else + { + dir.z = 1.0; + dir.x = uv.x * 6.0 - 5.0; + dir.y = uv.y * 4.0 - 3.0; + } + } + + float shadow = czm_unpackDepth(czm_textureCube(shadowMap_textureCube, dir)); + out_FragColor = vec4(vec3(shadow), 1.0); +} +`:n=`uniform sampler2D shadowMap_texture; +in vec2 v_textureCoordinates; +void main() +{ +${e._usesDepthTexture?` float shadow = texture(shadowMap_texture, v_textureCoordinates).r; +`:` float shadow = czm_unpackDepth(texture(shadowMap_texture, v_textureCoordinates)); +`} out_FragColor = vec4(vec3(shadow), 1.0); +} +`;let i=t.createViewportQuadCommand(n,{uniformMap:{shadowMap_texture:function(){return e._shadowMapTexture},shadowMap_textureCube:function(){return e._shadowMapTexture}}});return i.pass=Be.OVERLAY,i}function Ygt(e,t){let n=t.context,i=t.context.drawingBufferWidth,o=t.context.drawingBufferHeight,r=Math.min(i,o)*.3,s=Wgt;s.x=i-r,s.y=0,s.width=r,s.height=r;let a=e._debugShadowViewCommand;l(a)||(a=jgt(e,n),e._debugShadowViewCommand=a),(!l(a.renderState)||!Xe.equals(a.renderState.viewport,s))&&(a.renderState=Ue.fromCache({viewport:Xe.clone(s)})),t.commandList.push(e._debugShadowViewCommand)}var pA=new Array(8);pA[0]=new se(-1,-1,-1,1);pA[1]=new se(1,-1,-1,1);pA[2]=new se(1,1,-1,1);pA[3]=new se(-1,1,-1,1);pA[4]=new se(-1,-1,1,1);pA[5]=new se(1,-1,1,1);pA[6]=new se(1,1,1,1);pA[7]=new se(-1,1,1,1);var Ly=new R,XX=new Array(8);for(let e=0;e<8;++e)XX[e]=new se;function qgt(e,t){let n=new Rt({geometry:new $h({minimum:new d(-.5,-.5,-.5),maximum:new d(.5,.5,.5)}),attributes:{color:en.fromColor(t)}}),i=new Rt({geometry:new L_({radius:.5}),attributes:{color:en.fromColor(t)}});return new kn({geometryInstances:[n,i],appearance:new gn({translucent:!1,flat:!0}),asynchronous:!1,modelMatrix:e})}var Kgt=[G.RED,G.GREEN,G.BLUE,G.MAGENTA],Xgt=new d;function Jgt(e,t){Ygt(e,t);let n=e.debugFreezeFrame&&!e._debugFreezeFrame;if(e._debugFreezeFrame=e.debugFreezeFrame,e.debugFreezeFrame&&(n&&(e._debugCameraFrustum=e._debugCameraFrustum&&e._debugCameraFrustum.destroy(),e._debugCameraFrustum=new Kp({camera:e._sceneCamera,color:G.CYAN,updateOnChange:!1})),e._debugCameraFrustum.update(t)),e._cascadesEnabled){if(e.debugFreezeFrame){n&&(e._debugLightFrustum=e._debugLightFrustum&&e._debugLightFrustum.destroy(),e._debugLightFrustum=new Kp({camera:e._shadowMapCamera,color:G.YELLOW,updateOnChange:!1})),e._debugLightFrustum.update(t);for(let i=0;i<e._numberOfCascades;++i)n&&(e._debugCascadeFrustums[i]=e._debugCascadeFrustums[i]&&e._debugCascadeFrustums[i].destroy(),e._debugCascadeFrustums[i]=new Kp({camera:e._passes[i].camera,color:Kgt[i],updateOnChange:!1})),e._debugCascadeFrustums[i].update(t)}}else if(e._isPointLight){if(!l(e._debugLightFrustum)||e._needsUpdate){let i=e._shadowMapCamera.positionWC,o=Le.IDENTITY,r=e._pointLightRadius*2,s=d.fromElements(r,r,r,Xgt),a=R.fromTranslationQuaternionRotationScale(i,o,s,Ly);e._debugLightFrustum=e._debugLightFrustum&&e._debugLightFrustum.destroy(),e._debugLightFrustum=qgt(a,G.YELLOW)}e._debugLightFrustum.update(t)}else(!l(e._debugLightFrustum)||e._needsUpdate)&&(e._debugLightFrustum=new Kp({camera:e._shadowMapCamera,color:G.YELLOW,updateOnChange:!1})),e._debugLightFrustum.update(t)}function VV(){this.viewMatrix=new R,this.inverseViewMatrix=new R,this.frustum=void 0,this.positionCartographic=new Ae,this.positionWC=new d,this.directionWC=d.clone(d.UNIT_Z),this.upWC=d.clone(d.UNIT_Y),this.rightWC=d.clone(d.UNIT_X),this.viewProjectionMatrix=new R}VV.prototype.clone=function(e){R.clone(e.viewMatrix,this.viewMatrix),R.clone(e.inverseViewMatrix,this.inverseViewMatrix),this.frustum=e.frustum.clone(this.frustum),Ae.clone(e.positionCartographic,this.positionCartographic),d.clone(e.positionWC,this.positionWC),d.clone(e.directionWC,this.directionWC),d.clone(e.upWC,this.upWC),d.clone(e.rightWC,this.rightWC)};var Zgt=new R(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1);VV.prototype.getViewProjection=function(){let e=this.viewMatrix,t=this.frustum.projectionMatrix;return R.multiply(t,e,this.viewProjectionMatrix),R.multiply(Zgt,this.viewProjectionMatrix,this.viewProjectionMatrix),this.viewProjectionMatrix};var $gt=new Array(5),e_t=new Vi,t_t=new Array(4),c0e=new d,l0e=new d;function n_t(e,t){let n=e._shadowMapCamera,i=e._sceneCamera,o=i.frustum.near,r=i.frustum.far,s=e._numberOfCascades,a,c=r-o,u=r/o,f=.9,h=!1;t.shadowState.closestObjectSize<200&&(h=!0,f=.9);let A=t_t,g=$gt;for(g[0]=o,g[s]=r,a=0;a<s;++a){let L=(a+1)/s,p=o*Math.pow(u,L),x=o+c*L,T=D.lerp(x,p,f);g[a+1]=T,A[a]=T-g[a]}if(h){for(a=0;a<s;++a)A[a]=Math.min(A[a],e._maximumCascadeDistances[a]);let L=g[0];for(a=0;a<s-1;++a)L+=A[a],g[a+1]=L}se.unpack(g,0,e._cascadeSplits[0]),se.unpack(g,1,e._cascadeSplits[1]),se.unpack(A,0,e._cascadeDistances);let m=n.frustum,_=m.left,y=m.right,C=m.bottom,E=m.top,I=m.near,b=m.far,S=n.positionWC,B=n.directionWC,v=n.upWC,P=i.frustum.clone(e_t),N=n.getViewProjection();for(a=0;a<s;++a){P.near=g[a],P.far=g[a+1];let L=R.multiply(P.projectionMatrix,i.viewMatrix,Ly),p=R.inverse(L,Ly),x=R.multiply(N,p,Ly),T=d.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,c0e),w=d.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,l0e);for(let z=0;z<8;++z){let F=se.clone(pA[z],XX[z]);R.multiplyByVector(x,F,F),d.divideByScalar(F,F.w,F),d.minimumByComponent(F,T,T),d.maximumByComponent(F,w,w)}T.x=Math.max(T.x,0),T.y=Math.max(T.y,0),T.z=0,w.x=Math.min(w.x,1),w.y=Math.min(w.y,1),w.z=Math.min(w.z,1);let M=e._passes[a],O=M.camera;O.clone(n);let U=O.frustum;U.left=_+T.x*(y-_),U.right=_+w.x*(y-_),U.bottom=C+T.y*(E-C),U.top=C+w.y*(E-C),U.near=I+T.z*(b-I),U.far=I+w.z*(b-I),M.cullingVolume=O.frustum.computeCullingVolume(S,B,v);let Q=e._cascadeMatrices[a];R.multiply(O.getViewProjection(),i.inverseViewMatrix,Q),R.multiply(M.textureOffsets,Q,Q)}}var i_t=new R,o_t=new d,r_t=new d,o0e=new d;function s_t(e,t){let n=e._shadowMapCamera,i=e._sceneCamera,o=R.multiply(i.frustum.projectionMatrix,i.viewMatrix,Ly),r=R.inverse(o,Ly),s=n.directionWC,a=i.directionWC;d.equalsEpsilon(s,a,D.EPSILON10)&&(a=i.upWC);let c=d.cross(s,a,o_t);a=d.cross(c,s,r_t),d.normalize(a,a),d.normalize(c,c);let u=d.fromElements(0,0,0,o0e),f=R.computeView(u,s,a,c,i_t),h=R.multiply(f,r,Ly),A=d.fromElements(Number.MAX_VALUE,Number.MAX_VALUE,Number.MAX_VALUE,c0e),g=d.fromElements(-Number.MAX_VALUE,-Number.MAX_VALUE,-Number.MAX_VALUE,l0e);for(let b=0;b<8;++b){let S=se.clone(pA[b],XX[b]);R.multiplyByVector(h,S,S),d.divideByScalar(S,S.w,S),d.minimumByComponent(S,A,A),d.maximumByComponent(S,g,g)}g.z+=1e3,A.z-=10;let m=o0e;m.x=-(.5*(A.x+g.x)),m.y=-(.5*(A.y+g.y)),m.z=-g.z;let _=R.fromTranslation(m,Ly);f=R.multiply(_,f,f);let y=.5*(g.x-A.x),C=.5*(g.y-A.y),E=g.z-A.z,I=n.frustum;I.left=-y,I.right=y,I.bottom=-C,I.top=C,I.near=.01,I.far=E,R.clone(f,n.viewMatrix),R.inverse(f,n.inverseViewMatrix),R.getTranslation(n.inverseViewMatrix,n.positionWC),t.mapProjection.ellipsoid.cartesianToCartographic(n.positionWC,n.positionCartographic),d.clone(s,n.directionWC),d.clone(a,n.upWC),d.clone(c,n.rightWC)}var a_t=[new d(-1,0,0),new d(0,-1,0),new d(0,0,-1),new d(1,0,0),new d(0,1,0),new d(0,0,1)],c_t=[new d(0,-1,0),new d(0,0,-1),new d(0,-1,0),new d(0,-1,0),new d(0,0,1),new d(0,-1,0)],l_t=[new d(0,0,1),new d(1,0,0),new d(-1,0,0),new d(0,0,-1),new d(1,0,0),new d(1,0,0)];function u_t(e,t){let n=new Vi;n.fov=D.PI_OVER_TWO,n.near=1,n.far=e._pointLightRadius,n.aspectRatio=1;for(let i=0;i<6;++i){let o=e._passes[i].camera;o.positionWC=e._shadowMapCamera.positionWC,o.positionCartographic=t.mapProjection.ellipsoid.cartesianToCartographic(o.positionWC,o.positionCartographic),o.directionWC=a_t[i],o.upWC=c_t[i],o.rightWC=l_t[i],R.computeView(o.positionWC,o.directionWC,o.upWC,o.rightWC,o.viewMatrix),R.inverse(o.viewMatrix,o.inverseViewMatrix),o.frustum=n}}var f_t=new d,d_t=new d,u0e=new le,r0e=u0e.center;function h_t(e,t){let n=e._sceneCamera,i=e._shadowMapCamera,o=u0e;if(e._cascadesEnabled){if(n.frustum.near>=e.maximumDistance){e._outOfView=!0,e._needsUpdate=!1;return}let r=t.mapProjection.ellipsoid.geodeticSurfaceNormal(n.positionWC,f_t),s=d.negate(i.directionWC,d_t),a=d.dot(r,s);if(e.fadingEnabled){let c=D.clamp(a/.1,0,1);e._darkness=D.lerp(1,e.darkness,c)}else e._darkness=e.darkness;if(a<0){e._outOfView=!0,e._needsUpdate=!1;return}e._needsUpdate=!0,e._outOfView=!1}else if(e._isPointLight)o.center=i.positionWC,o.radius=e._pointLightRadius,e._outOfView=t.cullingVolume.computeVisibility(o)===nn.OUTSIDE,e._needsUpdate=!e._outOfView&&!e._boundingSphere.equals(o),le.clone(o,e._boundingSphere);else{let r=i.frustum.far/2,s=d.add(i.positionWC,d.multiplyByScalar(i.directionWC,r,r0e),r0e);o.center=s,o.radius=r,e._outOfView=t.cullingVolume.computeVisibility(o)===nn.OUTSIDE,e._needsUpdate=!e._outOfView&&!e._boundingSphere.equals(o),le.clone(o,e._boundingSphere)}}function m_t(e,t){let n=t.camera,i=e._lightCamera,o=e._sceneCamera,r=e._shadowMapCamera;e._cascadesEnabled?d.clone(i.directionWC,r.directionWC):e._isPointLight?d.clone(i.positionWC,r.positionWC):r.clone(i);let s=e._lightDirectionEC;R.multiplyByPointAsVector(n.viewMatrix,r.directionWC,s),d.normalize(s,s),d.negate(s,s),R.multiplyByPoint(n.viewMatrix,r.positionWC,e._lightPositionEC),e._lightPositionEC.w=e._pointLightRadius;let a,c;e._fitNearFar?(a=Math.min(t.shadowState.nearPlane,e.maximumDistance),c=Math.min(t.shadowState.farPlane,e.maximumDistance),c=Math.max(c,a+1)):(a=n.frustum.near,c=e.maximumDistance),e._sceneCamera=Eo.clone(n,o),n.frustum.clone(e._sceneCamera.frustum),e._sceneCamera.frustum.near=a,e._sceneCamera.frustum.far=c,e._distance=c-a,h_t(e,t),!e._outOfViewPrevious&&e._outOfView&&(e._needsUpdate=!0),e._outOfViewPrevious=e._outOfView}AA.prototype.update=function(e){if(m_t(this,e),this._needsUpdate)if(Vgt(this,e.context),this._isPointLight&&u_t(this,e),this._cascadesEnabled&&(s_t(this,e),this._numberOfCascades>1&&n_t(this,e)),this._isPointLight)this._shadowMapCullingVolume=zs.fromBoundingSphere(this._boundingSphere);else{let t=this._shadowMapCamera,n=t.positionWC,i=t.directionWC,o=t.upWC;this._shadowMapCullingVolume=t.frustum.computeCullingVolume(n,i,o),this._passes.length===1&&this._passes[0].camera.clone(t)}if(this._passes.length===1){let t=this._sceneCamera.inverseViewMatrix;R.multiply(this._shadowMapCamera.getViewProjection(),t,this._shadowMapMatrix)}this.debugShow&&Jgt(this,e)};AA.prototype.updatePass=function(e,t){a0e(this,e,t)};var A_t=new k;function f0e(e,t,n){let i=e._isPointLight?e._pointBias:n?e._terrainBias:e._primitiveBias,o={shadowMap_texture:function(){return e._shadowMapTexture},shadowMap_textureCube:function(){return e._shadowMapTexture},shadowMap_matrix:function(){return e._shadowMapMatrix},shadowMap_cascadeSplits:function(){return e._cascadeSplits},shadowMap_cascadeMatrices:function(){return e._cascadeMatrices},shadowMap_lightDirectionEC:function(){return e._lightDirectionEC},shadowMap_lightPositionEC:function(){return e._lightPositionEC},shadowMap_cascadeDistances:function(){return e._cascadeDistances},shadowMap_texelSizeDepthBiasAndNormalShadingSmooth:function(){let r=A_t;return r.x=1/e._textureSize.x,r.y=1/e._textureSize.y,se.fromElements(r.x,r.y,i.depthBias,i.normalShadingSmooth,this.combinedUniforms1)},shadowMap_normalOffsetScaleDistanceMaxDistanceAndDarkness:function(){return se.fromElements(i.normalOffsetScale,e._distance,e.maximumDistance,e._darkness,this.combinedUniforms2)},combinedUniforms1:new se,combinedUniforms2:new se};return wt(t,o,!1)}function p_t(e,t,n,i,o,r){let s,a,c;if(l(r)&&(s=r.shaderProgram,a=r.renderState,c=r.uniformMap),r=nt.shallowClone(n,r),r.castShadows=!0,r.receiveShadows=!1,!l(s)||o!==n.shaderProgram.id||t){let u=n.shaderProgram,f=n.pass===Be.GLOBE,h=n.pass!==Be.TRANSLUCENT,A=e._isPointLight,g=e._usesDepthTexture,m=$p.getShadowCastShaderKeyword(A,f,g,h);if(s=i.shaderCache.getDerivedShaderProgram(u,m),!l(s)){let y=u.vertexShaderSource,C=u.fragmentShaderSource,E=$p.createShadowCastVertexShader(y,A,f),I=$p.createShadowCastFragmentShader(C,A,g,h);s=i.shaderCache.createDerivedShaderProgram(u,m,{vertexShaderSource:E,fragmentShaderSource:I,attributeLocations:u._attributeLocations})}a=e._primitiveRenderState,A?a=e._pointRenderState:f&&(a=e._terrainRenderState),n.renderState.cull.enabled||(a=ze(a,!1),a.cull=ze(a.cull,!1),a.cull.enabled=!1,a=Ue.fromCache(a)),c=f0e(e,n.uniformMap,f)}return r.shaderProgram=s,r.renderState=a,r.uniformMap=c,r}AA.createReceiveDerivedCommand=function(e,t,n,i,o){l(o)||(o={});let r=e.length>0,s=t.shaderProgram,a=s.vertexShaderSource,c=s.fragmentShaderSource,u=t.pass===Be.GLOBE,f=!1;if(u&&(f=t.owner.data.renderedMesh.encoding.hasVertexNormals),t.receiveShadows&&r){let h,A;l(o.receiveCommand)&&(h=o.receiveCommand.shaderProgram,A=o.receiveCommand.uniformMap),o.receiveCommand=nt.shallowClone(t,o.receiveCommand),o.castShadows=!1,o.receiveShadows=!0;let g=o.receiveShaderCastShadows!==t.castShadows,m=o.receiveShaderProgramId!==t.shaderProgram.id;if(!l(h)||m||n||g){let _=$p.getShadowReceiveShaderKeyword(e[0],t.castShadows,u,f);if(h=i.shaderCache.getDerivedShaderProgram(s,_),!l(h)){let y=$p.createShadowReceiveVertexShader(a,u,f),C=$p.createShadowReceiveFragmentShader(c,e[0],t.castShadows,u,f);h=i.shaderCache.createDerivedShaderProgram(s,_,{vertexShaderSource:y,fragmentShaderSource:C,attributeLocations:s._attributeLocations})}A=f0e(e[0],t.uniformMap,u)}o.receiveCommand.shaderProgram=h,o.receiveCommand.uniformMap=A,o.receiveShaderProgramId=t.shaderProgram.id,o.receiveShaderCastShadows=t.castShadows}return o};AA.createCastDerivedCommand=function(e,t,n,i,o){if(l(o)||(o={}),t.castShadows){let r=o.castCommands;l(r)||(r=o.castCommands=[]);let s=o.castShaderProgramId,a=e.length;r.length=a;for(let c=0;c<a;++c)r[c]=p_t(e[c],n,t,i,s,r[c]);o.castShaderProgramId=t.shaderProgram.id}return o};AA.prototype.isDestroyed=function(){return!1};AA.prototype.destroy=function(){KX(this),this._debugLightFrustum=this._debugLightFrustum&&this._debugLightFrustum.destroy(),this._debugCameraFrustum=this._debugCameraFrustum&&this._debugCameraFrustum.destroy(),this._debugShadowViewCommand=this._debugShadowViewCommand&&this._debugShadowViewCommand.shaderProgram&&this._debugShadowViewCommand.shaderProgram.destroy();for(let e=0;e<this._numberOfCascades;++e)this._debugCascadeFrustums[e]=this._debugCascadeFrustums[e]&&this._debugCascadeFrustums[e].destroy();return ue(this)};var Oy=AA;var WT=`uniform sampler2D colorTexture; + +#ifdef DEBUG_SHOW_DEPTH +uniform sampler2D u_packedTranslucentDepth; +#endif + +in vec2 v_textureCoordinates; + +void main() +{ +#ifdef DEBUG_SHOW_DEPTH + if (v_textureCoordinates.x < 0.5) + { + out_FragColor.rgb = vec3(czm_unpackDepth(texture(u_packedTranslucentDepth, v_textureCoordinates))); + out_FragColor.a = 1.0; + } +#else + vec4 color = texture(colorTexture, v_textureCoordinates); + +#ifdef PICK + if (color == vec4(0.0)) + { + discard; + } +#else + // Reverse premultiplication process to get the correct composited result of the classification primitives + color.rgb /= color.a; +#endif + out_FragColor = color; +#endif +} +`;var g_t=!1;function Fy(e){this._drawClassificationFBO=new vi({createDepthAttachments:!1}),this._accumulationFBO=new vi({createDepthAttachments:!1}),this._packFBO=new vi,this._opaqueDepthStencilTexture=void 0,this._textureToComposite=void 0,this._translucentDepthStencilTexture=void 0,this._packDepthCommand=void 0,this._accumulateCommand=void 0,this._compositeCommand=void 0,this._copyCommand=void 0,this._clearColorCommand=new Ei({color:new G(0,0,0,0),owner:this}),this._clearDepthStencilCommand=new Ei({depth:1,stencil:0,owner:this}),this._supported=e.depthTexture,this._viewport=new Xe,this._rsDepth=void 0,this._rsAccumulate=void 0,this._rsComp=void 0,this._useScissorTest=void 0,this._scissorRectangle=void 0,this._hasTranslucentDepth=!1,this._frustumsDrawn=0}Object.defineProperties(Fy.prototype,{hasTranslucentDepth:{get:function(){return this._hasTranslucentDepth}}});function d0e(e){e._textureToComposite=void 0,e._translucentDepthStencilTexture=e._translucentDepthStencilTexture&&!e._translucentDepthStencilTexture.isDestroyed()&&e._translucentDepthStencilTexture.destroy()}function h0e(e){e._drawClassificationFBO.destroy(),e._accumulationFBO.destroy(),e._packFBO.destroy()}function __t(e,t,n,i){d0e(e),e._translucentDepthStencilTexture=new Nt({context:t,width:n,height:i,pixelFormat:et.DEPTH_STENCIL,pixelDatatype:He.UNSIGNED_INT_24_8,sampler:on.NEAREST})}function y_t(e,t,n,i){h0e(e),e._drawClassificationFBO.setDepthStencilTexture(e._translucentDepthStencilTexture),e._drawClassificationFBO.update(t,n,i),e._accumulationFBO.setDepthStencilTexture(e._translucentDepthStencilTexture),e._accumulationFBO.update(t,n,i),e._packFBO.update(t,n,i)}function C_t(e,t,n,i){if(!e.isSupported())return;e._opaqueDepthStencilTexture=i;let o=e._opaqueDepthStencilTexture.width,r=e._opaqueDepthStencilTexture.height;e._drawClassificationFBO.isDirty(o,r)&&(__t(e,t,o,r),y_t(e,t,o,r));let s,a;if(l(e._packDepthCommand)||(s=new We({sources:[uz]}),a={u_opaqueDepthTexture:function(){return e._opaqueDepthStencilTexture},u_translucentDepthTexture:function(){return e._translucentDepthStencilTexture}},e._packDepthCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),!l(e._compositeCommand)){s=new We({sources:[WT]}),a={colorTexture:function(){return e._textureToComposite}},g_t&&(s.defines=["DEBUG_SHOW_DEPTH"],a.u_packedTranslucentDepth=function(){return e._packFBO.getColorTexture()}),e._compositeCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e});let f=e._compositeCommand,h=f.shaderProgram,A=t.shaderCache.createDerivedShaderProgram(h,"pick",{vertexShaderSource:h.vertexShaderSource,fragmentShaderSource:new We({sources:s.sources,defines:["PICK"]}),attributeLocations:h._attributeLocations}),g=nt.shallowClone(f);g.shaderProgram=A,f.derivedCommands.pick=g}l(e._copyCommand)||(s=new We({sources:[WT]}),a={colorTexture:function(){return e._drawClassificationFBO.getColorTexture()}},e._copyCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),l(e._accumulateCommand)||(s=new We({sources:[WT]}),a={colorTexture:function(){return e._drawClassificationFBO.getColorTexture()}},e._accumulateCommand=t.createViewportQuadCommand(s,{uniformMap:a,owner:e})),e._viewport.width=o,e._viewport.height=r;let c=!Xe.equals(e._viewport,n.viewport),u=c!==e._useScissorTest;e._useScissorTest=c,Xe.equals(e._scissorRectangle,n.viewport)||(e._scissorRectangle=Xe.clone(n.viewport,e._scissorRectangle),u=!0),(!l(e._rsDepth)||!Xe.equals(e._viewport,e._rsDepth.viewport)||u)&&(e._rsDepth=Ue.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle}})),l(e._packDepthCommand)&&(e._packDepthCommand.renderState=e._rsDepth),(!l(e._rsAccumulate)||!Xe.equals(e._viewport,e._rsAccumulate.viewport)||u)&&(e._rsAccumulate=Ue.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},stencilTest:{enabled:!0,frontFunction:Zn.EQUAL,reference:Kt.CESIUM_3D_TILE_MASK}})),l(e._accumulateCommand)&&(e._accumulateCommand.renderState=e._rsAccumulate),(!l(e._rsComp)||!Xe.equals(e._viewport,e._rsComp.viewport)||u)&&(e._rsComp=Ue.fromCache({viewport:e._viewport,scissorTest:{enabled:e._useScissorTest,rectangle:e._scissorRectangle},blending:pn.ALPHA_BLEND})),l(e._compositeCommand)&&(e._compositeCommand.renderState=e._rsComp,e._compositeCommand.derivedCommands.pick.renderState=e._rsComp)}Fy.prototype.executeTranslucentCommands=function(e,t,n,i,o){let r=e.frameState.useLogDepth,s=e.context,a=n.framebuffer;for(let c=0;c<i.length;++c){let u=i[c];if(u=r?u.derivedCommands.logDepth.command:u,u.depthForTranslucentClassification){this._hasTranslucentDepth=!0;break}}if(this._hasTranslucentDepth){C_t(this,s,n,o),n.framebuffer=this._drawClassificationFBO.framebuffer,this._clearDepthStencilCommand.execute(s,n);for(let c=0;c<i.length;++c){let u=i[c];if(u=r?u.derivedCommands.logDepth.command:u,!u.depthForTranslucentClassification)continue;let f=u.derivedCommands.depth.depthOnlyCommand;t(f,e,n)}this._frustumsDrawn+=this._hasTranslucentDepth?1:0,this._hasTranslucentDepth&&(n.framebuffer=this._packFBO.framebuffer,this._packDepthCommand.execute(s,n)),n.framebuffer=a}};Fy.prototype.executeClassificationCommands=function(e,t,n,i){if(!this._hasTranslucentDepth)return;let o=e.context,r=o.uniformState,s=n.framebuffer;n.framebuffer=this._accumulationFBO.framebuffer,this._accumulateCommand.execute(o,n),n.framebuffer=this._drawClassificationFBO.framebuffer,this._frustumsDrawn>1&&this._clearColorCommand.execute(o,n),r.updatePass(Be.CESIUM_3D_TILE_CLASSIFICATION);let a=r.globeDepthTexture;r.globeDepthTexture=this._packFBO.getColorTexture();let c=i.commands[Be.CESIUM_3D_TILE_CLASSIFICATION],u=i.indices[Be.CESIUM_3D_TILE_CLASSIFICATION];for(let f=0;f<u;++f)t(c[f],e,n);r.globeDepthTexture=a,n.framebuffer=s,this._frustumsDrawn!==1&&(n.framebuffer=this._accumulationFBO.framebuffer,this._accumulateCommand.execute(o,n),n.framebuffer=s)};Fy.prototype.execute=function(e,t){if(!this._hasTranslucentDepth)return;this._frustumsDrawn===1?this._textureToComposite=this._drawClassificationFBO.getColorTexture():this._textureToComposite=this._accumulationFBO.getColorTexture(),(e.frameState.passes.pick?this._compositeCommand.derivedCommands.pick:this._compositeCommand).execute(e.context,t),E_t(this,e,t)};function E_t(e,t,n){if(!e._hasTranslucentDepth)return;let i=n.framebuffer;n.framebuffer=e._drawClassificationFBO.framebuffer,e._clearColorCommand.execute(t._context,n),n.framebuffer=i,e._frustumsDrawn>1&&(n.framebuffer=e._accumulationFBO.framebuffer,e._clearColorCommand.execute(t._context,n)),e._hasTranslucentDepth=!1,e._frustumsDrawn=0}Fy.prototype.isSupported=function(){return this._supported};Fy.prototype.isDestroyed=function(){return!1};Fy.prototype.destroy=function(){return d0e(this),h0e(this),l(this._compositeCommand)&&(this._compositeCommand.shaderProgram=this._compositeCommand.shaderProgram&&this._compositeCommand.shaderProgram.destroy()),l(this._packDepthCommand)&&(this._packDepthCommand.shaderProgram=this._packDepthCommand.shaderProgram&&this._packDepthCommand.shaderProgram.destroy()),ue(this)};var HV=Fy;function I_t(){this.command=void 0,this.near=void 0,this.far=void 0}function WV(e,t,n){let i=e.context,o;i.depthTexture&&(o=new QV);let r;e._useOIT&&i.depthTexture&&(r=new UV(i));let s=new El(i);s.viewport=Xe.clone(n),this.camera=t,this._cameraClone=Eo.clone(t),this._cameraStartFired=!1,this._cameraMovedTime=void 0,this.viewport=n,this.passState=s,this.pickFramebuffer=new zV(i),this.pickDepthFramebuffer=new GV,this.sceneFramebuffer=new HT,this.globeDepth=o,this.globeTranslucencyFramebuffer=new kV,this.oit=r,this.translucentTileClassification=new HV(i),this.pickDepths=[],this.frustumCommandsList=[],this.debugFrustumStatistics=void 0,this._commandExtents=[]}var JX=new d,ZX=new d;function x_t(e,t,n){let i=Math.max(d.maximumComponent(d.abs(e.position,JX)),d.maximumComponent(d.abs(t.position,ZX))),o=1/Math.max(1,i);return d.multiplyByScalar(e.position,o,JX),d.multiplyByScalar(t.position,o,ZX),d.equalsEpsilon(JX,ZX,n)&&d.equalsEpsilon(e.direction,t.direction,n)&&d.equalsEpsilon(e.up,t.up,n)&&d.equalsEpsilon(e.right,t.right,n)&&R.equalsEpsilon(e.transform,t.transform,n)&&e.frustum.equalsEpsilon(t.frustum,n)}WV.prototype.checkForCameraUpdates=function(e){let t=this.camera,n=this._cameraClone;return x_t(t,n,D.EPSILON15)?(this._cameraStartFired&&Oi()-this._cameraMovedTime>e.cameraEventWaitTime&&(t.moveEnd.raiseEvent(),this._cameraStartFired=!1),!1):(this._cameraStartFired||(t.moveStart.raiseEvent(),this._cameraStartFired=!0),this._cameraMovedTime=Oi(),Eo.clone(t,n),!0)};function b_t(e,t,n,i){let{frameState:o}=t,{camera:r,useLogDepth:s}=o,a=s?t.logarithmicDepthFarToNearRatio:t.farToNearRatio,c=t.mode===ie.SCENE2D,u=t.nearToFarDistance2D;i*=1+D.EPSILON2,n=Math.min(Math.max(n,r.frustum.near),r.frustum.far),i=Math.max(Math.min(i,r.frustum.far),n);let f;c?(i=Math.min(i,r.position.z+t.nearToFarDistance2D),n=Math.min(n,i),f=Math.ceil(Math.max(1,i-n)/t.nearToFarDistance2D)):f=Math.ceil(Math.log(i/n)/Math.log(a));let{frustumCommandsList:h}=e;h.length=f;for(let A=0;A<f;++A){let g,m;c?(g=Math.min(i-u,n+A*u),m=Math.min(i,g+u)):(g=Math.max(n,Math.pow(a,A)*n),m=Math.min(i,a*g));let _=h[A];l(_)?(_.near=g,_.far=m):_=h[A]=new FV(g,m)}}function T_t(e,t,n){let{command:i,near:o,far:r}=n;t.debugShowFrustums&&(i.debugOverlappingFrustums=0);let{frustumCommandsList:s}=e;for(let a=0;a<s.length;++a){let c=s[a];if(o>c.far)continue;if(r<c.near)break;let u=i.pass,f=c.indices[u]++;if(c.commands[u][f]=i,t.debugShowFrustums&&(i.debugOverlappingFrustums|=1<<a),i.executeInClosestFrustum)break}if(t.debugShowFrustums){let{debugFrustumStatistics:a}=e,{debugOverlappingFrustums:c}=i,u=a.commandsInFrustums;u[c]=l(u[c])?u[c]+1:1,++a.totalCommands}t.updateDerivedCommands(i)}var m0e=new zs,S_t=new _c;WV.prototype.createPotentiallyVisibleSet=function(e){let{frameState:t}=e,{camera:n,commandList:i,shadowState:o}=t,{positionWC:r,directionWC:s,frustum:a}=n,c=e._computeCommandList,u=e._overlayCommandList;e.debugShowFrustums&&(this.debugFrustumStatistics={totalCommands:0,commandsInFrustums:{}});let f=this.frustumCommandsList;for(let N=0;N<f.length;++N)for(let L=0;L<Be.NUMBER_OF_PASSES;++L)f[N].indices[L]=0;c.length=0,u.length=0;let h=this._commandExtents,A=h.length,g=0,m=+Number.MAX_VALUE,_=-Number.MAX_VALUE,{shadowsEnabled:y}=o,C=+Number.MAX_VALUE,E=-Number.MAX_VALUE,I=Number.MAX_VALUE,b=t.mode===ie.SCENE3D?t.occluder:void 0,{cullingVolume:S}=t,B=m0e.planes;for(let N=0;N<5;++N)B[N]=S.planes[N];S=m0e;for(let N=0;N<i.length;++N){let L=i[N],{pass:p,boundingVolume:x}=L;if(p===Be.COMPUTE)c.push(L);else if(p===Be.OVERLAY)u.push(L);else{let T,w;if(l(x)){if(!e.isVisible(S,L,b))continue;let O=x.computePlaneDistances(r,s,S_t);if(T=O.start,w=O.stop,m=Math.min(m,T),_=Math.max(_,w),y&&L.receiveShadows&&T<Oy.MAXIMUM_DISTANCE&&!(p===Be.GLOBE&&T<-100&&w>100)){let U=w-T;p!==Be.GLOBE&&T<100&&(I=Math.min(I,U)),C=Math.min(C,T),E=Math.max(E,w)}}else L instanceof Ei?(T=a.near,w=a.far):(T=a.near,w=a.far,m=Math.min(m,T),_=Math.max(_,w));let M=h[g];l(M)||(M=h[g]=new I_t),M.command=L,M.near=T,M.far=w,g++}}y&&(C=Math.min(Math.max(C,a.near),a.far),E=Math.max(Math.min(E,a.far),C),o.nearPlane=C,o.farPlane=E,o.closestObjectSize=I),b_t(this,e,m,_);for(let N=0;N<g;N++)T_t(this,e,h[N]);if(g<A)for(let N=g;N<A;N++){let L=h[N];if(!l(L.command))break;L.command=void 0}let v=f.length,{frustumSplits:P}=t;P.length=v+1;for(let N=0;N<v;++N)P[N]=f[N].near,N===v-1&&(P[N+1]=f[N].far)};WV.prototype.destroy=function(){this.pickFramebuffer=this.pickFramebuffer&&this.pickFramebuffer.destroy(),this.pickDepthFramebuffer=this.pickDepthFramebuffer&&this.pickDepthFramebuffer.destroy(),this.sceneFramebuffer=this.sceneFramebuffer&&this.sceneFramebuffer.destroy(),this.globeDepth=this.globeDepth&&this.globeDepth.destroy(),this.oit=this.oit&&this.oit.destroy(),this.translucentTileClassification=this.translucentTileClassification&&this.translucentTileClassification.destroy(),this.globeTranslucencyFramebuffer=this.globeTranslucencyFramebuffer&&this.globeTranslucencyFramebuffer.destroy();let e=this.pickDepths;for(let t=0;t<e.length;++t)e[t].destroy()};var jT=WV;var p0e=.1,w_t=new Lh({pass:Zo.MOST_DETAILED_PRELOAD}),B_t=new Lh({pass:Zo.MOST_DETAILED_PICK}),EP=new Lh({pass:Zo.PICK});function pa(e){this._mostDetailedRayPicks=[],this.pickRenderStateCache={},this._pickPositionCache={},this._pickPositionCacheDirty=!1;let t=new Xe(0,0,1,1),n=new Eo(e);n.frustum=new An({width:p0e,aspectRatio:1,near:.1}),this._pickOffscreenView=new jT(e,n,t)}pa.prototype.update=function(){this._pickPositionCacheDirty=!0};pa.prototype.getPickDepth=function(e,t){let n=e.view.pickDepths,i=n[t];return l(i)||(i=new OV,n[t]=i),i};var D_t=new ls,v_t=new d,jV=new d,P_t=new k,R_t=new R;function M_t(e,t,n,i,o){let r=e.camera,s=r.frustum,a=s.offCenterFrustum;l(a)&&(s=a);let c=2*(t.x-o.x)/o.width-1;c*=(s.right-s.left)*.5;let u=2*(o.height-t.y-o.y)/o.height-1;u*=(s.top-s.bottom)*.5;let f=R.clone(r.transform,R_t);r._setTransform(R.IDENTITY);let h=d.clone(r.position,v_t);d.multiplyByScalar(r.right,c,jV),d.add(jV,h,h),d.multiplyByScalar(r.up,u,jV),d.add(jV,h,h),r._setTransform(f),e.mode===ie.SCENE2D&&d.fromElements(h.z,h.x,h.y,h);let A=s.getPixelDimensions(o.width,o.height,1,1,P_t),g=D_t;return g.right=A.x*.5,g.left=-g.right,g.top=A.y*.5,g.bottom=-g.top,g.near=s.near,g.far=s.far,g.computeCullingVolume(h,r.directionWC,r.upWC)}var N_t=new fu,L_t=new k;function O_t(e,t,n,i,o){let r=e.camera,s=r.frustum,a=s.near,c=Math.tan(s.fovy*.5),u=s.aspectRatio*c,f=2*(t.x-o.x)/o.width-1,h=2*(o.height-t.y-o.y)/o.height-1,A=f*a*u,g=h*a*c,m=s.getPixelDimensions(o.width,o.height,1,1,L_t),_=m.x*n*.5,y=m.y*i*.5,C=N_t;return C.top=g+y,C.bottom=g-y,C.right=A+_,C.left=A-_,C.near=a,C.far=s.far,C.computeCullingVolume(r.positionWC,r.directionWC,r.upWC)}function YV(e,t,n,i,o){let r=e.camera.frustum;return r instanceof An||r instanceof ls?M_t(e,t,n,i,o):O_t(e,t,n,i,o)}var qV=new Xe(0,0,3,3),KV=new k,IP=new G(0,0,0,0);function $X(e,t,n,i,o){return o.width=n??3,o.height=i??o.width,o.x=t.x-(o.width-1)*.5,o.y=e-t.y-(o.height-1)*.5,o}pa.prototype.pick=function(e,t,n,i){let{context:o,frameState:r,defaultView:s}=e,{viewport:a,pickFramebuffer:c}=s;e.view=s,a.x=0,a.y=0,a.width=o.drawingBufferWidth,a.height=o.drawingBufferHeight;let u=s.passState;u.viewport=Xe.clone(a,u.viewport);let f=to.transformWindowToDrawingBuffer(e,t,KV),h=$X(o.drawingBufferHeight,f,n,i,qV);e.jobScheduler.disableThisFrame(),e.updateFrameState(),r.cullingVolume=YV(e,f,h.width,h.height,a),r.invertClassification=!1,r.passes.pick=!0,r.tilesetPassState=EP,o.uniformState.update(r),e.updateEnvironment(),u=c.begin(h,a),e.updateAndExecuteCommands(u,IP),e.resolveFramebuffers(u);let A=c.end(h);return o.endFrame(),A};pa.prototype.pickVoxelCoordinate=function(e,t,n,i){let{context:o,frameState:r,defaultView:s}=e,{viewport:a,pickFramebuffer:c}=s;e.view=s,a.x=0,a.y=0,a.width=o.drawingBufferWidth,a.height=o.drawingBufferHeight;let u=s.passState;u.viewport=Xe.clone(a,u.viewport);let f=to.transformWindowToDrawingBuffer(e,t,KV),h=$X(o.drawingBufferHeight,f,n,i,qV);e.jobScheduler.disableThisFrame(),e.updateFrameState(),r.cullingVolume=YV(e,f,h.width,h.height,a),r.invertClassification=!1,r.passes.pickVoxel=!0,r.tilesetPassState=EP,o.uniformState.update(r),e.updateEnvironment(),u=c.begin(h,a),e.updateAndExecuteCommands(u,IP),e.resolveFramebuffers(u);let A=c.readCenterPixel(h);return o.endFrame(),A};pa.prototype.pickMetadata=function(e,t,n){let{context:i,frameState:o,defaultView:r}=e,{viewport:s,pickFramebuffer:a}=r;e.view=r,s.x=0,s.y=0,s.width=i.drawingBufferWidth,s.height=i.drawingBufferHeight;let c=r.passState;c.viewport=Xe.clone(s,c.viewport);let u=to.transformWindowToDrawingBuffer(e,t,KV),f=$X(i.drawingBufferHeight,u,1,1,qV);e.jobScheduler.disableThisFrame(),e.updateFrameState(),o.cullingVolume=YV(e,u,f.width,f.height,s),o.invertClassification=!1,o.passes.pick=!0,o.tilesetPassState=EP,o.pickingMetadata=!0,o.pickedMetadataInfo=n,i.uniformState.update(o),e.updateEnvironment(),c=a.begin(f,s),e.updateAndExecuteCommands(c,IP);let h=e._environmentState.useOIT;e._environmentState.useOIT=!1,e.resolveFramebuffers(c),e._environmentState.useOIT=h;let A=a.readCenterPixel(f);return i.endFrame(),o.pickingMetadata=!1,LV.decodeMetadataValues(n.classProperty,n.metadataProperty,A)};function F_t(e,t){let{defaultView:n,context:i,frameState:o,environmentState:r}=e,{viewport:s,pickDepthFramebuffer:a}=n;e.view=n,s.x=0,s.y=0,s.width=i.drawingBufferWidth,s.height=i.drawingBufferHeight;let c=n.passState;c.viewport=Xe.clone(s,c.viewport),e.clearPasses(o.passes),o.passes.pick=!0,o.passes.depth=!0,o.cullingVolume=YV(e,t,1,1,s),o.tilesetPassState=EP,e.updateEnvironment(),r.renderTranslucentDepthForPick=!0,c=a.update(i,t,s),e.updateAndExecuteCommands(c,IP),e.resolveFramebuffers(c),i.endFrame()}var Q_t=new Vi,k_t=new fu,U_t=new An,G_t=new ls;pa.prototype.pickPositionWorldCoordinates=function(e,t,n){if(!e.useDepthPicking)return;let i=t.toString();if(this._pickPositionCacheDirty)this._pickPositionCache={},this._pickPositionCacheDirty=!1;else if(this._pickPositionCache.hasOwnProperty(i))return d.clone(this._pickPositionCache[i],n);let{context:o,frameState:r,camera:s,defaultView:a}=e,{uniformState:c}=o;e.view=a;let u=to.transformWindowToDrawingBuffer(e,t,KV);e.pickTranslucentDepth?F_t(e,u):(e.updateFrameState(),c.update(r),e.updateEnvironment()),u.y=e.drawingBufferHeight-u.y;let f;l(s.frustum.fov)?f=s.frustum.clone(Q_t):l(s.frustum.infiniteProjectionMatrix)?f=s.frustum.clone(k_t):l(s.frustum.width)?f=s.frustum.clone(U_t):f=s.frustum.clone(G_t);let{frustumCommandsList:h}=a,A=h.length;for(let g=0;g<A;++g){let _=this.getPickDepth(e,g).getDepth(o,u.x,u.y);if(l(_)&&_>0&&_<1){let y=h[g],C;return e.mode===ie.SCENE2D?(C=s.position.z,s.position.z=C-y.near+1,f.far=Math.max(1,y.far-y.near),f.near=1,c.update(r),c.updateFrustum(f)):(f.near=y.near*(g!==0?e.opaqueFrustumNearOffset:1),f.far=y.far,c.updateFrustum(f)),n=to.drawingBufferToWorldCoordinates(e,u,_,n),e.mode===ie.SCENE2D&&(s.position.z=C,c.update(r)),this._pickPositionCache[i]=d.clone(n),n}}this._pickPositionCache[i]=void 0};var z_t=new Ae;pa.prototype.pickPosition=function(e,t,n){if(n=this.pickPositionWorldCoordinates(e,t,n),l(n)&&e.mode!==ie.SCENE3D){d.fromElements(n.y,n.z,n.x,n);let i=e.mapProjection,o=i.ellipsoid,r=i.unproject(n,z_t);o.cartographicToCartesian(r,n)}return n};function g0e(e,t){let n,i,o=[],r=[],s=[],a=[];l(e)||(e=Number.MAX_VALUE);let c=t();for(;l(c);){let u=c.object,f=c.position,h=c.exclude;if(l(f)&&!l(u)){o.push(c);break}if(!l(u)||!l(u.primitive)||!h&&(o.push(c),0>=--e))break;let A=u.primitive,g=!1;typeof A.getGeometryInstanceAttributes=="function"&&l(u.id)&&(i=A.getGeometryInstanceAttributes(u.id),l(i)&&l(i.show)&&(g=!0,i.show=Bn.toValue(!1,i.show),s.push(i))),u instanceof Sa&&(g=!0,u.show=!1,a.push(u)),g||(A.show=!1,r.push(A)),c=t()}for(n=0;n<r.length;++n)r[n].show=!0;for(n=0;n<s.length;++n)i=s[n],i.show=Bn.toValue(!0,i.show);for(n=0;n<a.length;++n)a[n].show=!0;return o}pa.prototype.drillPick=function(e,t,n,i,o){let r=this;return g0e(n,function(){let c=r.pick(e,t,i,o);if(l(c))return{object:c,position:void 0,exclude:!1}}).map(function(c){return c.object})};var A0e=new d,V_t=new d;function H_t(e,t,n){this.ray=e,this.width=t,this.tilesets=n,this.ready=!1;let i=this;this.promise=new Promise(o=>{i._completePick=()=>{o()}})}function _0e(e,t,n,i){let o=t.direction,r=d.mostOrthogonalAxis(o,A0e),s=d.cross(o,r,A0e),a=d.cross(o,s,V_t);return i.position=t.origin,i.direction=o,i.up=a,i.right=s,i.frustum.width=n??p0e,i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC)}function W_t(e,t,n){let i=t.frameState,{ray:o,width:r,tilesets:s}=n,a=e._pickOffscreenView.camera,c=_0e(e,o,r,a),u=w_t;u.camera=a,u.cullingVolume=c;let f=!0,h=s.length;for(let A=0;A<h;++A){let g=s[A];g.show&&t.primitives.contains(g)&&(g.updateForPass(i,u),f=f&&u.ready)}return f&&n._completePick(),f}pa.prototype.updateMostDetailedRayPicks=function(e){let t=this._mostDetailedRayPicks;for(let n=0;n<t.length;++n)W_t(this,e,t[n])&&t.splice(n--,1)};function y0e(e,t,n){for(let i=0;i<e.length;++i){let o=e.get(i);o.show&&(l(o.isCesium3DTileset)?(!l(t)||t.indexOf(o)===-1)&&n.push(o):o instanceof ou&&y0e(o,t,n))}}function XV(e,t,n,i,o,r){let s=[];if(y0e(t.primitives,i,s),s.length===0)return Promise.resolve(r());let a=new H_t(n,o,s);return e._mostDetailedRayPicks.push(a),a.promise.then(function(){return r()})}function j_t(e,t){return!l(e)||!l(t)||t.length===0?!1:t.indexOf(e)>-1||t.indexOf(e.primitive)>-1||t.indexOf(e.id)>-1}function Y_t(e,t,n,i,o,r,s){let{context:a,frameState:c}=t,u=a.uniformState,f=e._pickOffscreenView;t.view=f,_0e(e,n,o,f.camera);let h=Xe.clone(f.viewport,qV),A=f.pickFramebuffer.begin(h,f.viewport);t.jobScheduler.disableThisFrame(),t.updateFrameState(),c.invertClassification=!1,c.passes.pick=!0,c.passes.offscreen=!0,s?c.tilesetPassState=B_t:c.tilesetPassState=EP,u.update(c),t.updateEnvironment(),t.updateAndExecuteCommands(A,IP),t.resolveFramebuffers(A);let g,m=f.pickFramebuffer.end(h);if(t.context.depthTexture){let{frustumCommandsList:_}=f,y=_.length;for(let C=0;C<y;++C){let I=e.getPickDepth(t,C).getDepth(a,0,0);if(l(I)&&I>0&&I<1){let b=_[C],S=b.near*(C!==0?t.opaqueFrustumNearOffset:1),B=b.far,v=S+I*(B-S);g=In.getPoint(n,v);break}}}if(t.view=t.defaultView,a.endFrame(),l(m)||l(g))return{object:m,position:g,exclude:!l(g)&&r||j_t(m,i)}}function C0e(e,t,n,i,o,r,s,a){return g0e(i,function(){return Y_t(e,t,n,o,r,s,a)})}function YT(e,t,n,i,o,r,s){let a=C0e(e,t,n,1,i,o,r,s);if(a.length>0)return a[0]}function E0e(e,t,n,i,o,r,s,a){return C0e(e,t,n,i,o,r,s,a)}function JV(e,t){return new Promise((n,i)=>{t.then(function(o){let r=e.postRender.addEventListener(function(){r(),n(o)});e.requestRender()}).catch(function(o){i(o)})})}pa.prototype.pickFromRay=function(e,t,n,i){return YT(this,e,t,n,i,!1,!1)};pa.prototype.drillPickFromRay=function(e,t,n,i,o){return E0e(this,e,t,n,i,o,!1,!1)};pa.prototype.pickFromRayMostDetailed=function(e,t,n,i){let o=this;return t=In.clone(t),n=l(n)?n.slice():n,JV(e,XV(o,e,t,n,i,function(){return YT(o,e,t,n,i,!1,!0)}))};pa.prototype.drillPickFromRayMostDetailed=function(e,t,n,i,o){let r=this;return t=In.clone(t),i=l(i)?i.slice():i,JV(e,XV(r,e,t,i,o,function(){return E0e(r,e,t,n,i,o,!1,!0)}))};var q_t=new d,K_t=new d,X_t=new In,I0e=new Ae;function eJ(e,t){let n=e.ellipsoid,i=wi._defaultMaxTerrainHeight,o=n.geodeticSurfaceNormalCartographic(t,K_t),r=Ae.toCartesian(t,n,q_t),s=X_t;s.origin=r,s.direction=o;let a=new In;return In.getPoint(s,i,a.origin),d.negate(o,a.direction),a}function x0e(e,t){let n=e.ellipsoid,i=Ae.fromCartesian(t,n,I0e);return eJ(e,i)}function b0e(e,t){let n=e.ellipsoid;return Ae.fromCartesian(t,n,I0e).height}function J_t(e,t,n,i,o){let r=eJ(t,n);return XV(e,t,r,i,o,function(){let s=YT(e,t,r,i,o,!0,!0);if(l(s))return b0e(t,s.position)})}function Z_t(e,t,n,i,o,r){let s=x0e(t,n);return XV(e,t,s,i,o,function(){let a=YT(e,t,s,i,o,!0,!0);if(l(a))return d.clone(a.position,r)})}pa.prototype.sampleHeight=function(e,t,n,i){let o=eJ(e,t),r=YT(this,e,o,n,i,!0,!1);if(l(r))return b0e(e,r.position)};pa.prototype.clampToHeight=function(e,t,n,i,o){let r=x0e(e,t),s=YT(this,e,r,n,i,!0,!1);if(l(s))return d.clone(s.position,o)};pa.prototype.sampleHeightMostDetailed=function(e,t,n,i){n=l(n)?n.slice():n;let o=t.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=J_t(this,e,t[s],n,i);return JV(e,Promise.all(r).then(function(s){let a=s.length;for(let c=0;c<a;++c)t[c].height=s[c];return t}))};pa.prototype.clampToHeightMostDetailed=function(e,t,n,i){n=l(n)?n.slice():n;let o=t.length,r=new Array(o);for(let s=0;s<o;++s)r[s]=Z_t(this,e,t[s],n,i,t[s]);return JV(e,Promise.all(r).then(function(s){let a=s.length;for(let c=0;c<a;++c)t[c]=s[c];return t}))};pa.prototype.destroy=function(){this._pickOffscreenView=this._pickOffscreenView&&this._pickOffscreenView.destroy()};var ZV=pa;var $V=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; + +#ifdef AUTO_EXPOSURE + color /= texture(autoExposure, vec2(0.5)).r; +#else + color *= vec3(exposure); +#endif + color = czm_acesTonemapping(color); + color = czm_inverseGamma(color); + + out_FragColor = vec4(color, fragmentColor.a); +} +`;var e8=`precision highp float; + +uniform sampler2D randomTexture; +uniform sampler2D depthTexture; +uniform float intensity; +uniform float bias; +uniform float lengthCap; +uniform int stepCount; +uniform int directionCount; + +vec4 pixelToEye(vec2 screenCoordinate) +{ + vec2 uv = screenCoordinate / czm_viewport.zw; + float depth = czm_readDepth(depthTexture, uv); + vec2 xy = 2.0 * uv - vec2(1.0); + vec4 posEC = czm_inverseProjection * vec4(xy, depth, 1.0); + posEC = posEC / posEC.w; + // Avoid numerical error at far plane + if (depth >= 1.0) { + posEC.z = czm_currentFrustum.y; + } + return posEC; +} + +// Reconstruct surface normal in eye coordinates, avoiding edges +vec3 getNormalXEdge(vec3 positionEC) +{ + // Find the 3D surface positions at adjacent screen pixels + vec2 centerCoord = gl_FragCoord.xy; + vec3 positionLeft = pixelToEye(centerCoord + vec2(-1.0, 0.0)).xyz; + vec3 positionRight = pixelToEye(centerCoord + vec2(1.0, 0.0)).xyz; + vec3 positionUp = pixelToEye(centerCoord + vec2(0.0, 1.0)).xyz; + vec3 positionDown = pixelToEye(centerCoord + vec2(0.0, -1.0)).xyz; + + // Compute potential tangent vectors + vec3 dx0 = positionEC - positionLeft; + vec3 dx1 = positionRight - positionEC; + vec3 dy0 = positionEC - positionDown; + vec3 dy1 = positionUp - positionEC; + + // The shorter tangent is more likely to be on the same surface + vec3 dx = length(dx0) < length(dx1) ? dx0 : dx1; + vec3 dy = length(dy0) < length(dy1) ? dy0 : dy1; + + return normalize(cross(dx, dy)); +} + +const float sqrtTwoPi = sqrt(czm_twoPi); + +float gaussian(float x, float standardDeviation) { + float argument = x / standardDeviation; + return exp(-0.5 * argument * argument) / (sqrtTwoPi * standardDeviation); +} + +void main(void) +{ + vec4 positionEC = pixelToEye(gl_FragCoord.xy); + + // Exit if we are too close to the back of the frustum, where the depth value is invalid. + float maxValidDepth = czm_currentFrustum.y - lengthCap; + if (-positionEC.z > maxValidDepth) + { + out_FragColor = vec4(1.0); + return; + } + + vec3 normalEC = getNormalXEdge(positionEC.xyz); + float gaussianVariance = lengthCap * sqrt(-positionEC.z); + // Choose a step length such that the marching stops just before 3 * variance. + float stepLength = 3.0 * gaussianVariance / (float(stepCount) + 1.0); + float metersPerPixel = czm_metersPerPixel(positionEC, 1.0); + // Minimum step is 1 pixel to avoid double sampling + float pixelsPerStep = max(stepLength / metersPerPixel, 1.0); + stepLength = pixelsPerStep * metersPerPixel; + + float angleStepScale = 1.0 / float(directionCount); + float angleStep = angleStepScale * czm_twoPi; + float cosStep = cos(angleStep); + float sinStep = sin(angleStep); + mat2 rotateStep = mat2(cosStep, sinStep, -sinStep, cosStep); + + // Initial sampling direction (different for each pixel) + const float randomTextureSize = 255.0; + vec2 randomTexCoord = fract(gl_FragCoord.xy / randomTextureSize); + float randomVal = texture(randomTexture, randomTexCoord).x; + vec2 sampleDirection = vec2(cos(angleStep * randomVal), sin(angleStep * randomVal)); + + float ao = 0.0; + // Loop over sampling directions +#if __VERSION__ == 300 + for (int i = 0; i < directionCount; i++) + { +#else + for (int i = 0; i < 16; i++) + { + if (i >= directionCount) { + break; + } +#endif + sampleDirection = rotateStep * sampleDirection; + + float localAO = 0.0; + vec2 radialStep = pixelsPerStep * sampleDirection; + +#if __VERSION__ == 300 + for (int j = 0; j < stepCount; j++) + { +#else + for (int j = 0; j < 64; j++) + { + if (j >= stepCount) { + break; + } +#endif + // Step along sampling direction, away from output pixel + vec2 samplePixel = floor(gl_FragCoord.xy + float(j + 1) * radialStep) + vec2(0.5); + + // Exit if we stepped off the screen + if (clamp(samplePixel, vec2(0.0), czm_viewport.zw) != samplePixel) { + break; + } + + // Compute step vector from output point to sampled point + vec4 samplePositionEC = pixelToEye(samplePixel); + vec3 stepVector = samplePositionEC.xyz - positionEC.xyz; + + // Estimate the angle from the surface normal. + float dotVal = clamp(dot(normalEC, normalize(stepVector)), 0.0, 1.0); + dotVal = czm_branchFreeTernary(dotVal > bias, dotVal, 0.0); + dotVal = czm_branchFreeTernary(-samplePositionEC.z <= maxValidDepth, dotVal, 0.0); + + // Weight contribution based on the distance from the output point + float sampleDistance = length(stepVector); + float weight = gaussian(sampleDistance, gaussianVariance); + localAO += weight * dotVal; + } + ao += localAO; + } + + ao *= angleStepScale * stepLength; + ao = 1.0 - clamp(ao, 0.0, 1.0); + ao = pow(ao, intensity); + out_FragColor = vec4(vec3(ao), 1.0); +} +`;var t8=`uniform sampler2D colorTexture; +uniform sampler2D ambientOcclusionTexture; +uniform bool ambientOcclusionOnly; +in vec2 v_textureCoordinates; + +void main(void) +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + vec4 ao = texture(ambientOcclusionTexture, v_textureCoordinates); + out_FragColor = ambientOcclusionOnly ? ao : ao * color; +} +`;var n8=`uniform sampler2D colorTexture; +uniform float gradations; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb; +#ifdef CZM_SELECTED_FEATURE + if (czm_selected()) { + out_FragColor = vec4(rgb, 1.0); + return; + } +#endif + float luminance = czm_luminance(rgb); + float darkness = luminance * gradations; + darkness = (darkness - fract(darkness)) / gradations; + out_FragColor = vec4(vec3(darkness), 1.0); +} +`;var i8=`uniform sampler2D colorTexture; +uniform sampler2D bloomTexture; +uniform bool glowOnly; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + +#ifdef CZM_SELECTED_FEATURE + if (czm_selected()) { + out_FragColor = color; + return; + } +#endif + + vec4 bloom = texture(bloomTexture, v_textureCoordinates); + out_FragColor = glowOnly ? bloom : bloom + color; +} +`;var o8=`uniform sampler2D colorTexture; +uniform float brightness; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb; + vec3 target = vec3(0.0); + out_FragColor = vec4(mix(target, rgb, brightness), 1.0); +} +`;var r8=`uniform sampler2D colorTexture; +uniform float contrast; +uniform float brightness; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec3 sceneColor = texture(colorTexture, v_textureCoordinates).xyz; + sceneColor = czm_RGBToHSB(sceneColor); + sceneColor.z += brightness; + sceneColor = czm_HSBToRGB(sceneColor); + + float factor = (259.0 * (contrast + 255.0)) / (255.0 * (259.0 - contrast)); + sceneColor = factor * (sceneColor - vec3(0.5)) + vec3(0.5); + out_FragColor = vec4(sceneColor, 1.0); +} +`;var s8=`uniform sampler2D colorTexture; +uniform sampler2D blurTexture; +uniform sampler2D depthTexture; +uniform float focalDistance; + +in vec2 v_textureCoordinates; + +vec4 toEye(vec2 uv, float depth) +{ + vec2 xy = vec2((uv.x * 2.0 - 1.0), ((1.0 - uv.y) * 2.0 - 1.0)); + vec4 posInCamera = czm_inverseProjection * vec4(xy, depth, 1.0); + posInCamera = posInCamera / posInCamera.w; + return posInCamera; +} + +float computeDepthBlur(float depth) +{ + float f; + if (depth < focalDistance) + { + f = (focalDistance - depth) / (focalDistance - czm_currentFrustum.x); + } + else + { + f = (depth - focalDistance) / (czm_currentFrustum.y - focalDistance); + f = pow(f, 0.1); + } + f *= f; + f = clamp(f, 0.0, 1.0); + return pow(f, 0.5); +} + +void main(void) +{ + float depth = czm_readDepth(depthTexture, v_textureCoordinates); + vec4 posInCamera = toEye(v_textureCoordinates, depth); + float d = computeDepthBlur(-posInCamera.z); + out_FragColor = mix(texture(colorTexture, v_textureCoordinates), texture(blurTexture, v_textureCoordinates), d); +} +`;var a8=`uniform sampler2D depthTexture; + +in vec2 v_textureCoordinates; + +void main(void) +{ + float depth = czm_readDepth(depthTexture, v_textureCoordinates); + out_FragColor = vec4(vec3(depth), 1.0); +} +`;var c8=`uniform sampler2D depthTexture; +uniform float length; +uniform vec4 color; + +in vec2 v_textureCoordinates; + +void main(void) +{ + float directions[3]; + directions[0] = -1.0; + directions[1] = 0.0; + directions[2] = 1.0; + + float scalars[3]; + scalars[0] = 3.0; + scalars[1] = 10.0; + scalars[2] = 3.0; + + float padx = czm_pixelRatio / czm_viewport.z; + float pady = czm_pixelRatio / czm_viewport.w; + +#ifdef CZM_SELECTED_FEATURE + bool selected = false; + for (int i = 0; i < 3; ++i) + { + float dir = directions[i]; + selected = selected || czm_selected(vec2(-padx, dir * pady)); + selected = selected || czm_selected(vec2(padx, dir * pady)); + selected = selected || czm_selected(vec2(dir * padx, -pady)); + selected = selected || czm_selected(vec2(dir * padx, pady)); + if (selected) + { + break; + } + } + if (!selected) + { + out_FragColor = vec4(color.rgb, 0.0); + return; + } +#endif + + float horizEdge = 0.0; + float vertEdge = 0.0; + + for (int i = 0; i < 3; ++i) + { + float dir = directions[i]; + float scale = scalars[i]; + + horizEdge -= texture(depthTexture, v_textureCoordinates + vec2(-padx, dir * pady)).x * scale; + horizEdge += texture(depthTexture, v_textureCoordinates + vec2(padx, dir * pady)).x * scale; + + vertEdge -= texture(depthTexture, v_textureCoordinates + vec2(dir * padx, -pady)).x * scale; + vertEdge += texture(depthTexture, v_textureCoordinates + vec2(dir * padx, pady)).x * scale; + } + + float len = sqrt(horizEdge * horizEdge + vertEdge * vertEdge); + out_FragColor = vec4(color.rgb, len > length ? color.a : 0.0); +} +`;var l8=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +// See slides 142 and 143: +// http://www.gdcvault.com/play/1012459/Uncharted_2__HDR_Lighting + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; + +#ifdef AUTO_EXPOSURE + float exposure = texture(autoExposure, vec2(0.5)).r; + color /= exposure; +#else + color *= vec3(exposure); +#endif + + const float A = 0.22; // shoulder strength + const float B = 0.30; // linear strength + const float C = 0.10; // linear angle + const float D = 0.20; // toe strength + const float E = 0.01; // toe numerator + const float F = 0.30; // toe denominator + + const float white = 11.2; // linear white point value + + vec3 c = ((color * (A * color + C * B) + D * E) / (color * ( A * color + B) + D * F)) - E / F; + float w = ((white * (A * white + C * B) + D * E) / (white * ( A * white + B) + D * F)) - E / F; + + c = czm_inverseGamma(c / w); + out_FragColor = vec4(c, fragmentColor.a); +} +`;var u8=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; + +#ifdef AUTO_EXPOSURE + color /= texture(autoExposure, vec2(0.5)).r; +#else + color *= vec3(exposure); +#endif + color = czm_pbrNeutralTonemapping(color); + color = czm_inverseGamma(color); + + out_FragColor = vec4(color, fragmentColor.a); +} +`;var f8=`in vec2 v_textureCoordinates; + +uniform sampler2D colorTexture; + +const float fxaaQualitySubpix = 0.5; +const float fxaaQualityEdgeThreshold = 0.125; +const float fxaaQualityEdgeThresholdMin = 0.0833; + +void main() +{ + vec2 fxaaQualityRcpFrame = vec2(1.0) / czm_viewport.zw; + vec4 color = FxaaPixelShader( + v_textureCoordinates, + colorTexture, + fxaaQualityRcpFrame, + fxaaQualitySubpix, + fxaaQualityEdgeThreshold, + fxaaQualityEdgeThresholdMin); + float alpha = texture(colorTexture, v_textureCoordinates).a; + out_FragColor = vec4(color.rgb, alpha); +} +`;var u0=`#define SAMPLES 8 + +uniform float delta; +uniform float sigma; +uniform float direction; // 0.0 for x direction, 1.0 for y direction + +uniform sampler2D colorTexture; + +#ifdef USE_STEP_SIZE +uniform float stepSize; +#else +uniform vec2 step; +#endif + +in vec2 v_textureCoordinates; + +// Incremental Computation of the Gaussian: +// https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch40.html + +void main() +{ + vec2 st = v_textureCoordinates; + vec2 dir = vec2(1.0 - direction, direction); + +#ifdef USE_STEP_SIZE + vec2 step = vec2(stepSize * (czm_pixelRatio / czm_viewport.zw)); +#else + vec2 step = step; +#endif + + vec3 g; + g.x = 1.0 / (sqrt(czm_twoPi) * sigma); + g.y = exp((-0.5 * delta * delta) / (sigma * sigma)); + g.z = g.y * g.y; + + vec4 result = texture(colorTexture, st) * g.x; + for (int i = 1; i < SAMPLES; ++i) + { + g.xy *= g.yz; + + vec2 offset = float(i) * dir * step; + result += texture(colorTexture, st - offset) * g.x; + result += texture(colorTexture, st + offset) * g.x; + } + + out_FragColor = result; +} +`;var d8=`uniform sampler2D colorTexture; +uniform sampler2D dirtTexture; +uniform sampler2D starTexture; +uniform vec2 dirtTextureDimensions; +uniform float distortion; +uniform float ghostDispersal; +uniform float haloWidth; +uniform float dirtAmount; +uniform float earthRadius; +uniform float intensity; + +in vec2 v_textureCoordinates; + +// whether it is in space or not +// 6500000.0 is empirical value +#define DISTANCE_TO_SPACE 6500000.0 + +// return ndc from world coordinate biased earthRadius +vec4 getNDCFromWC(vec3 WC, float earthRadius) +{ + vec4 positionEC = czm_view * vec4(WC, 1.0); + positionEC = vec4(positionEC.x + earthRadius, positionEC.y, positionEC.z, 1.0); + vec4 positionWC = czm_eyeToWindowCoordinates(positionEC); + return czm_viewportOrthographic * vec4(positionWC.xy, -positionWC.z, 1.0); +} + +// Check if current pixel is included Earth +// if then mask it gradually +float isInEarth(vec2 texcoord, vec2 sceneSize) +{ + vec2 NDC = texcoord * 2.0 - 1.0; + vec4 earthPosSC = getNDCFromWC(vec3(0.0), 0.0); + vec4 earthPosSCEdge = getNDCFromWC(vec3(0.0), earthRadius * 1.5); + NDC.xy -= earthPosSC.xy; + + float X = abs(NDC.x) * sceneSize.x; + float Y = abs(NDC.y) * sceneSize.y; + + return clamp(0.0, 1.0, max(sqrt(X * X + Y * Y) / max(abs(earthPosSCEdge.x * sceneSize.x), 1.0) - 0.8 , 0.0)); +} + +// For Chromatic effect +vec4 textureDistorted(sampler2D tex, vec2 texcoord, vec2 direction, vec3 distortion, bool isSpace) +{ + vec2 sceneSize = czm_viewport.zw; + vec3 color; + if(isSpace) + { + color.r = isInEarth(texcoord + direction * distortion.r, sceneSize) * texture(tex, texcoord + direction * distortion.r).r; + color.g = isInEarth(texcoord + direction * distortion.g, sceneSize) * texture(tex, texcoord + direction * distortion.g).g; + color.b = isInEarth(texcoord + direction * distortion.b, sceneSize) * texture(tex, texcoord + direction * distortion.b).b; + } + else + { + color.r = texture(tex, texcoord + direction * distortion.r).r; + color.g = texture(tex, texcoord + direction * distortion.g).g; + color.b = texture(tex, texcoord + direction * distortion.b).b; + } + return vec4(clamp(color, 0.0, 1.0), 0.0); +} + +void main(void) +{ + vec4 originalColor = texture(colorTexture, v_textureCoordinates); + vec3 rgb = originalColor.rgb; + bool isSpace = length(czm_viewerPositionWC.xyz) > DISTANCE_TO_SPACE; + + // Sun position + vec4 sunPos = czm_morphTime == 1.0 ? vec4(czm_sunPositionWC, 1.0) : vec4(czm_sunPositionColumbusView.zxy, 1.0); + vec4 sunPositionEC = czm_view * sunPos; + vec4 sunPositionWC = czm_eyeToWindowCoordinates(sunPositionEC); + sunPos = czm_viewportOrthographic * vec4(sunPositionWC.xy, -sunPositionWC.z, 1.0); + + // If sun is not in the screen space, use original color. + if(!isSpace || !((sunPos.x >= -1.1 && sunPos.x <= 1.1) && (sunPos.y >= -1.1 && sunPos.y <= 1.1))) + { + // Lens flare is disabled when not in space until #5932 is fixed. + // https://github.com/CesiumGS/cesium/issues/5932 + out_FragColor = originalColor; + return; + } + + vec2 texcoord = vec2(1.0) - v_textureCoordinates; + vec2 pixelSize = czm_pixelRatio / czm_viewport.zw; + vec2 invPixelSize = 1.0 / pixelSize; + vec3 distortionVec = pixelSize.x * vec3(-distortion, 0.0, distortion); + + // ghost vector to image centre: + vec2 ghostVec = (vec2(0.5) - texcoord) * ghostDispersal; + vec3 direction = normalize(vec3(ghostVec, 0.0)); + + // sample ghosts: + vec4 result = vec4(0.0); + vec4 ghost = vec4(0.0); + for (int i = 0; i < 4; ++i) + { + vec2 offset = fract(texcoord + ghostVec * float(i)); + // Only bright spots from the centre of the source image + ghost += textureDistorted(colorTexture, offset, direction.xy, distortionVec, isSpace); + } + result += ghost; + + // sample halo + vec2 haloVec = normalize(ghostVec) * haloWidth; + float weightForHalo = length(vec2(0.5) - fract(texcoord + haloVec)) / length(vec2(0.5)); + weightForHalo = pow(1.0 - weightForHalo, 5.0); + + result += textureDistorted(colorTexture, texcoord + haloVec, direction.xy, distortionVec, isSpace) * weightForHalo * 1.5; + + // dirt on lens + vec2 dirtTexCoords = (v_textureCoordinates * invPixelSize) / dirtTextureDimensions; + if (dirtTexCoords.x > 1.0) + { + dirtTexCoords.x = mod(floor(dirtTexCoords.x), 2.0) == 1.0 ? 1.0 - fract(dirtTexCoords.x) : fract(dirtTexCoords.x); + } + if (dirtTexCoords.y > 1.0) + { + dirtTexCoords.y = mod(floor(dirtTexCoords.y), 2.0) == 1.0 ? 1.0 - fract(dirtTexCoords.y) : fract(dirtTexCoords.y); + } + result += dirtAmount * texture(dirtTexture, dirtTexCoords); + + // Rotating starburst texture's coordinate + // dot(czm_view[0].xyz, vec3(0.0, 0.0, 1.0)) + dot(czm_view[1].xyz, vec3(0.0, 1.0, 0.0)) + float camrot = czm_view[0].z + czm_view[1].y; + float cosValue = cos(camrot); + float sinValue = sin(camrot); + mat3 rotation = mat3( + cosValue, -sinValue, 0.0, + sinValue, cosValue, 0.0, + 0.0, 0.0, 1.0 + ); + + vec3 st1 = vec3(v_textureCoordinates * 2.0 - vec2(1.0), 1.0); + vec3 st2 = vec3((rotation * st1).xy, 1.0); + vec3 st3 = st2 * 0.5 + vec3(0.5); + vec2 lensStarTexcoord = st3.xy; + float weightForLensFlare = length(vec3(sunPos.xy, 0.0)); + float oneMinusWeightForLensFlare = max(1.0 - weightForLensFlare, 0.0); + + if (!isSpace) + { + result *= oneMinusWeightForLensFlare * intensity * 0.2; + } + else + { + result *= oneMinusWeightForLensFlare * intensity; + result *= texture(starTexture, lensStarTexcoord) * pow(weightForLensFlare, 1.0) * max((1.0 - length(vec3(st1.xy, 0.0))), 0.0) * 2.0; + } + + result += texture(colorTexture, v_textureCoordinates); + + out_FragColor = result; +} +`;var h8=`uniform sampler2D colorTexture; +uniform vec3 white; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +// See equation 4: +// http://www.cs.utah.edu/~reinhard/cdrom/tonemap.pdf + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; +#ifdef AUTO_EXPOSURE + float exposure = texture(autoExposure, vec2(0.5)).r; + color /= exposure; +#else + color *= vec3(exposure); +#endif + color = (color * (1.0 + color / white)) / (1.0 + color); + color = czm_inverseGamma(color); + out_FragColor = vec4(color, fragmentColor.a); +} +`;var m8=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +float rand(vec2 co) +{ + return fract(sin(dot(co.xy ,vec2(12.9898, 78.233))) * 43758.5453); +} + +void main(void) +{ + float noiseValue = rand(v_textureCoordinates + sin(czm_frameNumber)) * 0.1; + vec3 rgb = texture(colorTexture, v_textureCoordinates).rgb; + vec3 green = vec3(0.0, 1.0, 0.0); + out_FragColor = vec4((noiseValue + rgb) * green, 1.0); +} +`;var A8=`uniform sampler2D colorTexture; + +in vec2 v_textureCoordinates; + +#ifdef AUTO_EXPOSURE +uniform sampler2D autoExposure; +#else +uniform float exposure; +#endif + +// See equation 3: +// http://www.cs.utah.edu/~reinhard/cdrom/tonemap.pdf + +void main() +{ + vec4 fragmentColor = texture(colorTexture, v_textureCoordinates); + vec3 color = fragmentColor.rgb; +#ifdef AUTO_EXPOSURE + float exposure = texture(autoExposure, vec2(0.5)).r; + color /= exposure; +#else + color *= vec3(exposure); +#endif + color = color / (1.0 + color); + color = czm_inverseGamma(color); + out_FragColor = vec4(color, fragmentColor.a); +} +`;var p8=`uniform sampler2D colorTexture; +uniform sampler2D silhouetteTexture; + +in vec2 v_textureCoordinates; + +void main(void) +{ + vec4 silhouetteColor = texture(silhouetteTexture, v_textureCoordinates); + vec4 color = texture(colorTexture, v_textureCoordinates); + out_FragColor = mix(color, silhouetteColor, silhouetteColor.a); +} +`;function f0(){this._uniformMap=void 0,this._command=void 0,this._colorTexture=void 0,this._depthTexture=void 0,this._ready=!1,this._name="czm_autoexposure",this._logDepthChanged=void 0,this._useLogDepth=void 0,this._framebuffers=void 0,this._previousLuminance=new vi,this._commands=void 0,this._clearCommand=void 0,this._minMaxLuminance=new k,this.enabled=!0,this._enabled=!0,this.minimumLuminance=.1,this.maximumLuminance=10}Object.defineProperties(f0.prototype,{ready:{get:function(){return this._ready}},name:{get:function(){return this._name}},outputTexture:{get:function(){let e=this._framebuffers;if(l(e))return e[e.length-1].getColorTexture(0)}}});function T0e(e){let t=e._framebuffers;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].destroy();e._framebuffers=void 0,e._previousLuminance.destroy(),e._previousLuminance=void 0}function $_t(e,t){T0e(e);let n=e._width,i=e._height,o=t.halfFloatingPointTexture?He.HALF_FLOAT:He.FLOAT,r=Math.ceil(Math.log(Math.max(n,i))/Math.log(3)),s=new Array(r);for(let c=0;c<r;++c)n=Math.max(Math.ceil(n/3),1),i=Math.max(Math.ceil(i/3),1),s[c]=new vi,s[c].update(t,n,i,1,o);let a=s[r-1].getColorTexture(0);e._previousLuminance.update(t,a.width,a.height,1,o),e._framebuffers=s}function S0e(e){let t=e._commands;if(!l(t))return;let n=t.length;for(let i=0;i<n;++i)t[i].shaderProgram.destroy();e._commands=void 0}function eyt(e,t){let n;if(t===0)n={colorTexture:function(){return e._colorTexture},colorTextureDimensions:function(){return e._colorTexture.dimensions}};else{let i=e._framebuffers[t-1].getColorTexture(0);n={colorTexture:function(){return i},colorTextureDimensions:function(){return i.dimensions}}}return n.minMaxLuminance=function(){return e._minMaxLuminance},n.previousLuminance=function(){return e._previousLuminance.getColorTexture(0)},n}function tyt(e,t){let n=`uniform sampler2D colorTexture; +in vec2 v_textureCoordinates; +float sampleTexture(vec2 offset) { +`;return e===0?n+=` vec4 color = texture(colorTexture, v_textureCoordinates + offset); + return czm_luminance(color.rgb); +`:n+=` return texture(colorTexture, v_textureCoordinates + offset).r; +`,n+=`} + +`,n+=`uniform vec2 colorTextureDimensions; +uniform vec2 minMaxLuminance; +uniform sampler2D previousLuminance; +void main() { + float color = 0.0; + float xStep = 1.0 / colorTextureDimensions.x; + float yStep = 1.0 / colorTextureDimensions.y; + int count = 0; + for (int i = 0; i < 3; ++i) { + for (int j = 0; j < 3; ++j) { + vec2 offset; + offset.x = -xStep + float(i) * xStep; + offset.y = -yStep + float(j) * yStep; + if (offset.x < 0.0 || offset.x > 1.0 || offset.y < 0.0 || offset.y > 1.0) { + continue; + } + color += sampleTexture(offset); + ++count; + } + } + if (count > 0) { + color /= float(count); + } +`,e===t-1&&(n+=` float previous = texture(previousLuminance, vec2(0.5)).r; + color = clamp(color, minMaxLuminance.x, minMaxLuminance.y); + color = previous + (color - previous) / (60.0 * 1.5); + color = clamp(color, minMaxLuminance.x, minMaxLuminance.y); +`),n+=` out_FragColor = vec4(color); +} +`,n}function nyt(e,t){S0e(e);let n=e._framebuffers,i=n.length,o=new Array(i);for(let r=0;r<i;++r)o[r]=t.createViewportQuadCommand(tyt(r,i),{framebuffer:n[r].framebuffer,uniformMap:eyt(e,r)});e._commands=o}f0.prototype.clear=function(e){let t=this._framebuffers;if(!l(t))return;let n=this._clearCommand;l(n)||(n=this._clearCommand=new Ei({color:new G(0,0,0,0),framebuffer:void 0}));let i=t.length;for(let o=0;o<i;++o)t[o].clear(e,n)};f0.prototype.update=function(e){let t=e.drawingBufferWidth,n=e.drawingBufferHeight;(t!==this._width||n!==this._height)&&(this._width=t,this._height=n,$_t(this,e),nyt(this,e),this._ready||(this._ready=!0)),this._minMaxLuminance.x=this.minimumLuminance,this._minMaxLuminance.y=this.maximumLuminance;let i=this._framebuffers,o=i[i.length-1];i[i.length-1]=this._previousLuminance,this._commands[this._commands.length-1].framebuffer=this._previousLuminance.framebuffer,this._previousLuminance=o};f0.prototype.execute=function(e,t){this._colorTexture=t;let n=this._commands;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o)n[o].execute(e)};f0.prototype.isDestroyed=function(){return!1};f0.prototype.destroy=function(){return T0e(this),S0e(this),ue(this)};var g8=f0;var iyt={NEAREST:0,LINEAR:1},_d=iyt;function d0(e){e=e??V.EMPTY_OBJECT;let{name:t=Xn(),fragmentShader:n,uniforms:i,textureScale:o=1,forcePowerOfTwo:r=!1,sampleMode:s=_d.NEAREST,pixelFormat:a=et.RGBA,pixelDatatype:c=He.UNSIGNED_BYTE,clearColor:u=G.BLACK,scissorRectangle:f}=e;this._fragmentShader=n,this._uniforms=i,this._textureScale=o,this._forcePowerOfTwo=r,this._sampleMode=s,this._pixelFormat=a,this._pixelDatatype=c,this._clearColor=u,this._uniformMap=void 0,this._command=void 0,this._colorTexture=void 0,this._depthTexture=void 0,this._idTexture=void 0,this._actualUniforms={},this._dirtyUniforms=[],this._texturesToRelease=[],this._texturesToCreate=[],this._texturePromise=void 0;let h=new El;h.scissorTest={enabled:!0,rectangle:l(f)?Xe.clone(f):new Xe},this._passState=h,this._ready=!1,this._name=t,this._logDepthChanged=void 0,this._useLogDepth=void 0,this._selectedIdTexture=void 0,this._selected=void 0,this._selectedShadow=void 0,this._parentSelected=void 0,this._parentSelectedShadow=void 0,this._combinedSelected=void 0,this._combinedSelectedShadow=void 0,this._selectedLength=0,this._parentSelectedLength=0,this._selectedDirty=!0,this._textureCache=void 0,this._index=void 0,this.enabled=!0,this._enabled=!0}Object.defineProperties(d0.prototype,{ready:{get:function(){return this._ready}},name:{get:function(){return this._name}},fragmentShader:{get:function(){return this._fragmentShader}},uniforms:{get:function(){return this._uniforms}},textureScale:{get:function(){return this._textureScale}},forcePowerOfTwo:{get:function(){return this._forcePowerOfTwo}},sampleMode:{get:function(){return this._sampleMode}},pixelFormat:{get:function(){return this._pixelFormat}},pixelDatatype:{get:function(){return this._pixelDatatype}},clearColor:{get:function(){return this._clearColor}},scissorRectangle:{get:function(){return this._passState.scissorTest.rectangle}},outputTexture:{get:function(){if(l(this._textureCache)){let e=this._textureCache.getFramebuffer(this._name);if(l(e))return e.getColorTexture(0)}}},selected:{get:function(){return this._selected},set:function(e){this._selected=e}},parentSelected:{get:function(){return this._parentSelected},set:function(e){this._parentSelected=e}}});var oyt=/uniform\s+sampler2D\s+depthTexture/g;d0.prototype._isSupported=function(e){return!oyt.test(this._fragmentShader)||e.depthTexture};function ryt(e,t,n){let i=t[n];return(typeof i=="string"||i instanceof HTMLCanvasElement||i instanceof HTMLImageElement||i instanceof HTMLVideoElement||i instanceof ImageData)&&e._dirtyUniforms.push(n),{get:function(){return t[n]},set:function(o){let r=t[n];t[n]=o;let s=e._actualUniforms,a=s[n];l(a)&&a!==r&&a instanceof Nt&&!l(e._textureCache.getStageByName(n))&&(e._texturesToRelease.push(a),delete s[n],delete s[`${n}Dimensions`]),r instanceof Nt&&e._texturesToRelease.push(r),typeof o=="string"||o instanceof HTMLCanvasElement||o instanceof HTMLImageElement||o instanceof HTMLVideoElement||o instanceof ImageData?e._dirtyUniforms.push(n):s[n]=o}}}function syt(e,t){return function(){let n=e._actualUniforms[t];return typeof n=="function"?n():n}}function ayt(e,t){return function(){let n=e[t]();if(l(n))return n.dimensions}}function cyt(e){if(l(e._uniformMap))return;let t={},n={},i=e._uniforms,o=e._actualUniforms;for(let r in i){if(!i.hasOwnProperty(r))continue;typeof i[r]!="function"?(t[r]=syt(e,r),n[r]=ryt(e,i,r)):(t[r]=i[r],n[r]=i[r]),o[r]=i[r];let s=t[r]();(typeof s=="string"||s instanceof Nt||s instanceof HTMLImageElement||s instanceof HTMLCanvasElement||s instanceof HTMLVideoElement)&&(t[`${r}Dimensions`]=ayt(t,r))}e._uniforms={},Object.defineProperties(e._uniforms,n),e._uniformMap=wt(t,{colorTexture:function(){return e._colorTexture},colorTextureDimensions:function(){return e._colorTexture.dimensions},depthTexture:function(){return e._depthTexture},depthTextureDimensions:function(){return e._depthTexture.dimensions},czm_idTexture:function(){return e._idTexture},czm_selectedIdTexture:function(){return e._selectedIdTexture},czm_selectedIdTextureStep:function(){return 1/e._selectedIdTexture.width}})}function lyt(e,t){return e=e.replace(/in\s+vec2\s+v_textureCoordinates;/g,""),`#define CZM_SELECTED_FEATURE +uniform sampler2D czm_idTexture; +uniform sampler2D czm_selectedIdTexture; +uniform float czm_selectedIdTextureStep; +in vec2 v_textureCoordinates; +bool czm_selected(vec2 offset) +{ + bool selected = false; + vec4 id = texture(czm_idTexture, v_textureCoordinates + offset); + for (int i = 0; i < ${t}; ++i) + { + vec4 selectedId = texture(czm_selectedIdTexture, vec2((float(i) + 0.5) * czm_selectedIdTextureStep, 0.5)); + if (all(equal(id, selectedId))) + { + return true; + } + } + return false; +} +bool czm_selected() +{ + return czm_selected(vec2(0.0)); +} + +${e}`}function uyt(e,t){if(l(e._command)&&!e._logDepthChanged&&!e._selectedDirty)return;let n=e._fragmentShader;if(l(e._selectedIdTexture)){let o=e._selectedIdTexture.width;n=lyt(n,o)}let i=new We({defines:[e._useLogDepth?"LOG_DEPTH":""],sources:[n]});e._command=t.createViewportQuadCommand(i,{uniformMap:e._uniformMap,owner:e})}function fyt(e){let t=e._sampleMode,n,i;t===_d.LINEAR?(n=Zt.LINEAR,i=pi.LINEAR):(n=Zt.NEAREST,i=pi.NEAREST);let o=e._sampler;(!l(o)||o.minificationFilter!==n||o.magnificationFilter!==i)&&(e._sampler=new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:n,magnificationFilter:i}))}function dyt(e,t){return function(n){e._texturesToCreate.push({name:t,source:n})}}function hyt(e,t){return function(){return e._textureCache.getOutputTexture(t)}}function myt(e,t){let n=e._texturesToRelease;for(let a=0;a<n.length;++a){let c=n[a];c=c&&c.destroy()}n.length=0;let i=e._texturesToCreate;for(let a=0;a<i.length;++a){let{name:c,source:u}=i[a];e._actualUniforms[c]=new Nt({context:t,source:u})}i.length=0;let o=e._dirtyUniforms;if(o.length===0&&!l(e._texturePromise)){e._ready=!0;return}if(o.length===0||l(e._texturePromise))return;let r=e._uniforms,s=[];for(let a=0;a<o.length;++a){let c=o[a],u=r[c],f=e._textureCache.getStageByName(u);if(l(f))e._actualUniforms[c]=hyt(e,u);else if(typeof u=="string"){let h=new we({url:u});s.push(h.fetchImage().then(dyt(e,c)))}else e._texturesToCreate.push({name:c,source:u})}o.length=0,s.length>0?(e._ready=!1,e._texturePromise=Promise.all(s).then(function(){e._ready=!0,e._texturePromise=void 0})):e._ready=!0}function w0e(e){l(e._command)&&(e._command.shaderProgram=e._command.shaderProgram&&e._command.shaderProgram.destroy(),e._command=void 0),e._selectedIdTexture=e._selectedIdTexture&&e._selectedIdTexture.destroy();let t=e._textureCache;if(!l(t))return;let n=e._uniforms,i=e._actualUniforms;for(let o in i){if(!i.hasOwnProperty(o))continue;let r=i[o];r instanceof Nt&&(l(t.getStageByName(n[o]))||r.destroy(),e._dirtyUniforms.push(o))}}function Ayt(e){let t=l(e._selected)?e._selected.length:0,n=l(e._parentSelected)?e._parentSelected:0,i=e._selected!==e._selectedShadow||t!==e._selectedLength||e._parentSelected!==e._parentSelectedShadow||n!==e._parentSelectedLength;if(l(e._selected)&&l(e._parentSelected)?e._combinedSelected=e._selected.concat(e._parentSelected):l(e._parentSelected)?e._combinedSelected=e._parentSelected:e._combinedSelected=e._selected,!i&&l(e._combinedSelected)){if(!l(e._combinedSelectedShadow))return!0;for(let o=0;o<e._combinedSelected.length;++o)if(e._combinedSelected[o]!==e._combinedSelectedShadow[o])return!0}return i}function pyt(e,t){if(!e._selectedDirty)return;e._selectedIdTexture=e._selectedIdTexture&&e._selectedIdTexture.destroy(),e._selectedIdTexture=void 0;let n=e._combinedSelected;if(!l(n))return;let i=0;for(let s=0;s<n.length;++s){let a=n[s];l(a.pickIds)?i+=a.pickIds.length:l(a.pickId)&&++i}if(n.length===0||i===0){let s=new Uint8Array([255,255,255,255]);e._selectedIdTexture=new Nt({context:t,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,source:{arrayBufferView:s,width:1,height:1},sampler:on.NEAREST});return}let o=0,r=new Uint8Array(i*4);for(let s=0;s<n.length;++s){let a=n[s];if(l(a.pickIds)){let c=a.pickIds,u=c.length;for(let f=0;f<u;++f){let h=c[f].color;r[o]=G.floatToByte(h.red),r[o+1]=G.floatToByte(h.green),r[o+2]=G.floatToByte(h.blue),r[o+3]=G.floatToByte(h.alpha),o+=4}}else if(l(a.pickId)){let c=a.pickId.color;r[o]=G.floatToByte(c.red),r[o+1]=G.floatToByte(c.green),r[o+2]=G.floatToByte(c.blue),r[o+3]=G.floatToByte(c.alpha),o+=4}}e._selectedIdTexture=new Nt({context:t,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,source:{arrayBufferView:r,width:i,height:1},sampler:on.NEAREST})}d0.prototype.update=function(e,t){if(this.enabled!==this._enabled&&!this.enabled&&w0e(this),this._enabled=this.enabled,!this._enabled||(this._logDepthChanged=t!==this._useLogDepth,this._useLogDepth=t,this._selectedDirty=Ayt(this),this._selectedShadow=this._selected,this._parentSelectedShadow=this._parentSelected,this._combinedSelectedShadow=this._combinedSelected,this._selectedLength=l(this._selected)?this._selected.length:0,this._parentSelectedLength=l(this._parentSelected)?this._parentSelected.length:0,pyt(this,e),cyt(this),myt(this,e),uyt(this,e),fyt(this),this._selectedDirty=!1,!this._ready))return;let n=this._textureCache.getFramebuffer(this._name);if(this._command.framebuffer=n,!l(n))return;let i=n.getColorTexture(0),o;(i.width!==e.drawingBufferWidth||i.height!==e.drawingBufferHeight)&&(o=this._renderState,(!l(o)||i.width!==o.viewport.width||i.height!==o.viewport.height)&&(this._renderState=Ue.fromCache({viewport:new Xe(0,0,i.width,i.height)}))),this._command.renderState=o};d0.prototype.execute=function(e,t,n,i){if(!l(this._command)||!l(this._command.framebuffer)||!this._ready||!this._enabled)return;this._colorTexture=t,this._depthTexture=n,this._idTexture=i,on.equals(this._colorTexture.sampler,this._sampler)||(this._colorTexture.sampler=this._sampler);let o=this.scissorRectangle.width>0&&this.scissorRectangle.height>0?this._passState:void 0;l(o)&&(o.context=e),this._command.execute(e,o)};d0.prototype.isDestroyed=function(){return!1};d0.prototype.destroy=function(){return w0e(this),ue(this)};var So=d0;function h0(e){e=e??V.EMPTY_OBJECT,this._stages=e.stages,this._inputPreviousStageTexture=e.inputPreviousStageTexture??!0;let t=e.name;l(t)||(t=Xn()),this._name=t,this._uniforms=e.uniforms,this._textureCache=void 0,this._index=void 0,this._selected=void 0,this._selectedShadow=void 0,this._parentSelected=void 0,this._parentSelectedShadow=void 0,this._combinedSelected=void 0,this._combinedSelectedShadow=void 0,this._selectedLength=0,this._parentSelectedLength=0,this._selectedDirty=!0}Object.defineProperties(h0.prototype,{ready:{get:function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)if(!e[n].ready)return!1;return!0}},name:{get:function(){return this._name}},enabled:{get:function(){return this._stages[0].enabled},set:function(e){let t=this._stages,n=t.length;for(let i=0;i<n;++i)t[i].enabled=e}},uniforms:{get:function(){return this._uniforms}},inputPreviousStageTexture:{get:function(){return this._inputPreviousStageTexture}},length:{get:function(){return this._stages.length}},selected:{get:function(){return this._selected},set:function(e){this._selected=e}},parentSelected:{get:function(){return this._parentSelected},set:function(e){this._parentSelected=e}}});h0.prototype._isSupported=function(e){let t=this._stages,n=t.length;for(let i=0;i<n;++i)if(!t[i]._isSupported(e))return!1;return!0};h0.prototype.get=function(e){return this._stages[e]};function gyt(e){let t=l(e._selected)?e._selected.length:0,n=l(e._parentSelected)?e._parentSelected:0,i=e._selected!==e._selectedShadow||t!==e._selectedLength;if(i=i||e._parentSelected!==e._parentSelectedShadow||n!==e._parentSelectedLength,l(e._selected)&&l(e._parentSelected)?e._combinedSelected=e._selected.concat(e._parentSelected):l(e._parentSelected)?e._combinedSelected=e._parentSelected:e._combinedSelected=e._selected,!i&&l(e._combinedSelected)){if(!l(e._combinedSelectedShadow))return!0;t=e._combinedSelected.length;for(let o=0;o<t;++o)if(e._combinedSelected[o]!==e._combinedSelectedShadow[o])return!0}return i}h0.prototype.update=function(e,t){this._selectedDirty=gyt(this),this._selectedShadow=this._selected,this._parentSelectedShadow=this._parentSelected,this._combinedSelectedShadow=this._combinedSelected,this._selectedLength=l(this._selected)?this._selected.length:0,this._parentSelectedLength=l(this._parentSelected)?this._parentSelected.length:0;let n=this._stages,i=n.length;for(let o=0;o<i;++o){let r=n[o];this._selectedDirty&&(r.parentSelected=this._combinedSelected),r.update(e,t)}};h0.prototype.isDestroyed=function(){return!1};h0.prototype.destroy=function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)e[n].destroy();return ue(this)};var tf=h0;var zr={};function tJ(e){let o=`#define USE_STEP_SIZE +${u0}`,r=new So({name:`${e}_x_direction`,fragmentShader:o,uniforms:{delta:1,sigma:2,stepSize:1,direction:0},sampleMode:_d.LINEAR}),s=new So({name:`${e}_y_direction`,fragmentShader:o,uniforms:{delta:1,sigma:2,stepSize:1,direction:1},sampleMode:_d.LINEAR}),a={};return Object.defineProperties(a,{delta:{get:function(){return r.uniforms.delta},set:function(c){let u=r.uniforms,f=s.uniforms;u.delta=f.delta=c}},sigma:{get:function(){return r.uniforms.sigma},set:function(c){let u=r.uniforms,f=s.uniforms;u.sigma=f.sigma=c}},stepSize:{get:function(){return r.uniforms.stepSize},set:function(c){let u=r.uniforms,f=s.uniforms;u.stepSize=f.stepSize=c}}}),new tf({name:e,stages:[r,s],uniforms:a})}zr.createBlurStage=function(){return tJ("czm_blur")};zr.createDepthOfFieldStage=function(){let e=tJ("czm_depth_of_field_blur"),t=new So({name:"czm_depth_of_field_composite",fragmentShader:s8,uniforms:{focalDistance:5,blurTexture:e.name}}),n={};return Object.defineProperties(n,{focalDistance:{get:function(){return t.uniforms.focalDistance},set:function(i){t.uniforms.focalDistance=i}},delta:{get:function(){return e.uniforms.delta},set:function(i){e.uniforms.delta=i}},sigma:{get:function(){return e.uniforms.sigma},set:function(i){e.uniforms.sigma=i}},stepSize:{get:function(){return e.uniforms.stepSize},set:function(i){e.uniforms.stepSize=i}}}),new tf({name:"czm_depth_of_field",stages:[e,t],inputPreviousStageTexture:!1,uniforms:n})};zr.isDepthOfFieldSupported=function(e){return e.context.depthTexture};zr.createEdgeDetectionStage=function(){let e=Xn();return new So({name:`czm_edge_detection_${e}`,fragmentShader:c8,uniforms:{length:.25,color:G.clone(G.BLACK)}})};zr.isEdgeDetectionSupported=function(e){return e.context.depthTexture};function _yt(e){if(!l(e))return zr.createEdgeDetectionStage();let t=new tf({name:"czm_edge_detection_multiple",stages:e,inputPreviousStageTexture:!1}),n={},i="",o="";for(let a=0;a<e.length;++a)i+=`uniform sampler2D edgeTexture${a}; +`,o+=` vec4 edge${a} = texture(edgeTexture${a}, v_textureCoordinates); + if (edge${a}.a > 0.0) + { + color = edge${a}; + break; + } +`,n[`edgeTexture${a}`]=e[a].name;let r=`${i}in vec2 v_textureCoordinates; +void main() { + vec4 color = vec4(0.0); + for (int i = 0; i < ${e.length}; i++) + { +${o} } + out_FragColor = color; +} +`,s=new So({name:"czm_edge_detection_combine",fragmentShader:r,uniforms:n});return new tf({name:"czm_edge_detection_composite",stages:[t,s]})}zr.createSilhouetteStage=function(e){let t=_yt(e),n=new So({name:"czm_silhouette_color_edges",fragmentShader:p8,uniforms:{silhouetteTexture:t.name}});return new tf({name:"czm_silhouette",stages:[t,n],inputPreviousStageTexture:!1,uniforms:t.uniforms})};zr.isSilhouetteSupported=function(e){return e.context.depthTexture};zr.createBloomStage=function(){let e=new So({name:"czm_bloom_contrast_bias",fragmentShader:r8,uniforms:{contrast:128,brightness:-.3}}),t=tJ("czm_bloom_blur"),n=new tf({name:"czm_bloom_contrast_bias_blur",stages:[e,t]}),i=new So({name:"czm_bloom_generate_composite",fragmentShader:i8,uniforms:{glowOnly:!1,bloomTexture:n.name}}),o={};return Object.defineProperties(o,{glowOnly:{get:function(){return i.uniforms.glowOnly},set:function(r){i.uniforms.glowOnly=r}},contrast:{get:function(){return e.uniforms.contrast},set:function(r){e.uniforms.contrast=r}},brightness:{get:function(){return e.uniforms.brightness},set:function(r){e.uniforms.brightness=r}},delta:{get:function(){return t.uniforms.delta},set:function(r){t.uniforms.delta=r}},sigma:{get:function(){return t.uniforms.sigma},set:function(r){t.uniforms.sigma=r}},stepSize:{get:function(){return t.uniforms.stepSize},set:function(r){t.uniforms.stepSize=r}}}),new tf({name:"czm_bloom",stages:[n,i],inputPreviousStageTexture:!1,uniforms:o})};zr.createAmbientOcclusionStage=function(){let e=new So({name:"czm_ambient_occlusion_generate",fragmentShader:e8,uniforms:{intensity:3,bias:.1,lengthCap:.26,directionCount:8,stepCount:32,randomTexture:void 0}}),t=new So({name:"czm_ambient_occlusion_composite",fragmentShader:t8,uniforms:{ambientOcclusionOnly:!1,ambientOcclusionTexture:e.name}}),n={};return Object.defineProperties(n,{intensity:{get:function(){return e.uniforms.intensity},set:function(i){e.uniforms.intensity=i}},bias:{get:function(){return e.uniforms.bias},set:function(i){e.uniforms.bias=i}},lengthCap:{get:function(){return e.uniforms.lengthCap},set:function(i){e.uniforms.lengthCap=i}},directionCount:{get:function(){return e.uniforms.directionCount},set:function(i){e.uniforms.directionCount=i}},stepCount:{get:function(){return e.uniforms.stepCount},set:function(i){e.uniforms.stepCount=i}},randomTexture:{get:function(){return e.uniforms.randomTexture},set:function(i){e.uniforms.randomTexture=i}},ambientOcclusionOnly:{get:function(){return t.uniforms.ambientOcclusionOnly},set:function(i){t.uniforms.ambientOcclusionOnly=i}}}),new tf({name:"czm_ambient_occlusion",stages:[e,t],inputPreviousStageTexture:!1,uniforms:n})};zr.isAmbientOcclusionSupported=function(e){return e.context.depthTexture};var yyt=`#define FXAA_QUALITY_PRESET 39 +${mz} +${f8}`;zr.createFXAAStage=function(){return new So({name:"czm_FXAA",fragmentShader:yyt,sampleMode:_d.LINEAR})};zr.createAcesTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=$V,new So({name:"czm_aces",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};zr.createFilmicTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=l8,new So({name:"czm_filmic",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};zr.createPbrNeutralTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=u8,new So({name:"czm_pbr_neutral",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};zr.createReinhardTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=A8,new So({name:"czm_reinhard",fragmentShader:t,uniforms:{autoExposure:void 0,exposure:1}})};zr.createModifiedReinhardTonemappingStage=function(e){let t=e?`#define AUTO_EXPOSURE +`:"";return t+=h8,new So({name:"czm_modified_reinhard",fragmentShader:t,uniforms:{white:G.WHITE,autoExposure:void 0,exposure:1}})};zr.createAutoExposureStage=function(){return new g8};zr.createBlackAndWhiteStage=function(){return new So({name:"czm_black_and_white",fragmentShader:n8,uniforms:{gradations:5}})};zr.createBrightnessStage=function(){return new So({name:"czm_brightness",fragmentShader:o8,uniforms:{brightness:.5}})};zr.createNightVisionStage=function(){return new So({name:"czm_night_vision",fragmentShader:m8})};zr.createDepthViewStage=function(){return new So({name:"czm_depth_view",fragmentShader:a8})};zr.createLensFlareStage=function(){return new So({name:"czm_lens_flare",fragmentShader:d8,uniforms:{dirtTexture:fn("Assets/Textures/LensFlare/DirtMask.jpg"),starTexture:fn("Assets/Textures/LensFlare/StarBurst.jpg"),intensity:2,distortion:10,ghostDispersal:.4,haloWidth:.4,dirtAmount:.4,earthRadius:te.WGS84.maximumRadius}})};var yd=zr;function eg(e){this._collection=e,this._framebuffers=[],this._stageNameToFramebuffer={},this._width=void 0,this._height=void 0,this._updateDependencies=!1}function bP(e){for(;l(e.length);)e=e.get(e.length-1);return e.name}function nJ(e,t,n,i,o){if(!i.enabled||!i._isSupported(t))return o;let r=n[i.name]={};if(l(o)){let a=e.getStageByName(o);r[bP(a)]=!0}let s=i.uniforms;if(l(s)){let a=Object.getOwnPropertyNames(s),c=a.length;for(let u=0;u<c;++u){let f=s[a[u]];if(typeof f=="string"){let h=e.getStageByName(f);l(h)&&(r[bP(h)]=!0)}}}return i.name}function xP(e,t,n,i,o){if(l(i.enabled)&&!i.enabled||l(i._isSupported)&&!i._isSupported(t))return o;let r=o,s=!l(i.inputPreviousStageTexture)||i.inputPreviousStageTexture,a=o,c=i.length;for(let h=0;h<c;++h){let A=i.get(h);l(A.length)?a=xP(e,t,n,A,o):a=nJ(e,t,n,A,o),s&&(o=a)}let u,f;if(s)for(u=1;u<c;++u)f=bP(i.get(u)),l(n[f])||(n[f]={}),n[f][r]=!0;else for(u=1;u<c;++u){f=bP(i.get(u));let h=n[f];for(let A=0;A<u;++A)h[bP(i.get(A))]=!0}return a}function Cyt(e,t){let n={};if(l(e.ambientOcclusion)){let i=e.ambientOcclusion,o=e.bloom,r=e._tonemapping,s=e.fxaa,a=xP(e,t,n,i,void 0);a=xP(e,t,n,o,a),a=nJ(e,t,n,r,a),a=xP(e,t,n,e,a),nJ(e,t,n,s,a)}else xP(e,t,n,e,void 0);return n}function Eyt(e,t,n){let o=e._collection.getStageByName(t),r=o._textureScale,s=o._forcePowerOfTwo,a=o._pixelFormat,c=o._pixelDatatype,u=o._clearColor,f,h,A=e._framebuffers,g=A.length;for(f=0;f<g;++f){if(h=A[f],r!==h.textureScale||s!==h.forcePowerOfTwo||a!==h.pixelFormat||c!==h.pixelDatatype||!G.equals(u,h.clearColor))continue;let m=h.stages,_=m.length,y=!1;for(let C=0;C<_;++C)if(n[m[C]]){y=!0;break}if(!y)break}return l(h)&&f<g?(h.stages.push(t),h):(h={textureScale:r,forcePowerOfTwo:s,pixelFormat:a,pixelDatatype:c,clearColor:u,stages:[t],buffer:new vi({pixelFormat:a,pixelDatatype:c}),clear:void 0},A.push(h),h)}function Iyt(e,t){let n=Cyt(e._collection,t);for(let i in n)n.hasOwnProperty(i)&&(e._stageNameToFramebuffer[i]=Eyt(e,i,n[i]))}function iJ(e){let t=e._framebuffers,n=t.length;for(let i=0;i<n;++i)t[i].buffer.destroy()}function xyt(e,t){let n=e._width,i=e._height,o=e._framebuffers,r=o.length;for(let s=0;s<r;++s){let a=o[s],c=a.textureScale,u=Math.ceil(n*c),f=Math.ceil(i*c),h=Math.min(u,f);a.forcePowerOfTwo&&(D.isPowerOfTwo(h)||(h=D.nextPowerOfTwo(h)),u=h,f=h),a.buffer.update(t,u,f),a.clear=new Ei({color:a.clearColor,framebuffer:a.buffer.framebuffer})}}eg.prototype.updateDependencies=function(){this._updateDependencies=!0};eg.prototype.update=function(e){let t=this._collection,n=this._updateDependencies,i=l(t.ambientOcclusion)&&t.ambientOcclusion.enabled&&t.ambientOcclusion._isSupported(e),o=l(t.bloom)&&t.bloom.enabled&&t.bloom._isSupported(e),r=l(t._tonemapping)&&t._tonemapping.enabled&&t._tonemapping._isSupported(e),s=l(t.fxaa)&&t.fxaa.enabled&&t.fxaa._isSupported(e),a=!l(t._activeStages)||t._activeStages.length>0||i||o||r||s;if((n||!a&&this._framebuffers.length>0)&&(iJ(this),this._framebuffers.length=0,this._stageNameToFramebuffer={},this._width=void 0,this._height=void 0),!n&&!a)return;this._framebuffers.length===0&&Iyt(this,e);let c=e.drawingBufferWidth,u=e.drawingBufferHeight,f=this._width!==c||this._height!==u;!n&&!f||(this._width=c,this._height=u,this._updateDependencies=!1,iJ(this),xyt(this,e))};eg.prototype.clear=function(e){let t=this._framebuffers;for(let n=0;n<t.length;++n)t[n].clear.execute(e)};eg.prototype.getStageByName=function(e){return this._collection.getStageByName(e)};eg.prototype.getOutputTexture=function(e){return this._collection.getOutputTexture(e)};eg.prototype.getFramebuffer=function(e){let t=this._stageNameToFramebuffer[e];if(l(t))return t.buffer.framebuffer};eg.prototype.isDestroyed=function(){return!1};eg.prototype.destroy=function(){return iJ(this),ue(this)};var qT=eg;var byt={REINHARD:"REINHARD",MODIFIED_REINHARD:"MODIFIED_REINHARD",FILMIC:"FILMIC",ACES:"ACES",PBR_NEUTRAL:"PBR_NEUTRAL"};var Qy=Object.freeze(byt);var oJ=[];function xl(){let e=yd.createFXAAStage(),t=yd.createAmbientOcclusionStage(),n=yd.createBloomStage();this._autoExposureEnabled=!1,this._autoExposure=yd.createAutoExposureStage(),this._exposure=1,this._tonemapping=void 0,this._tonemapper=void 0,this.tonemapper=Qy.PBR_NEUTRAL;let i=this._tonemapping;e.enabled=!1,t.enabled=!1,n.enabled=!1,i.enabled=!1;let o=new qT(this),r={},s=oJ;for(s.push(e,t,n,i);s.length>0;){let c=s.pop();r[c.name]=c,c._textureCache=o;let u=c.length;if(l(u))for(let f=0;f<u;++f)s.push(c.get(f))}this._stages=[],this._activeStages=[],this._previousActiveStages=[],this._randomTexture=void 0;let a=this;t.uniforms.randomTexture=function(){return a._randomTexture},this._ao=t,this._bloom=n,this._fxaa=e,this._aoEnabled=void 0,this._bloomEnabled=void 0,this._tonemappingEnabled=void 0,this._fxaaEnabled=void 0,this._activeStagesChanged=!1,this._stagesRemoved=!1,this._textureCacheDirty=!1,this._stageNames=r,this._textureCache=o}Object.defineProperties(xl.prototype,{ready:{get:function(){let e=!1,t=this._stages,n=t.length;for(let a=n-1;a>=0;--a){let c=t[a];e=e||c.ready&&c.enabled}let i=this._fxaa,o=this._ao,r=this._bloom,s=this._tonemapping;return e=e||i.ready&&i.enabled,e=e||o.ready&&o.enabled,e=e||r.ready&&r.enabled,e=e||s.ready&&s.enabled,e}},fxaa:{get:function(){return this._fxaa}},ambientOcclusion:{get:function(){return this._ao}},bloom:{get:function(){return this._bloom}},length:{get:function(){return rJ(this),this._stages.length}},outputTexture:{get:function(){let e=this._fxaa;if(e.enabled&&e.ready)return this.getOutputTexture(e.name);let t=this._stages,n=t.length;for(let s=n-1;s>=0;--s){let a=t[s];if(l(a)&&a.ready&&a.enabled)return this.getOutputTexture(a.name)}let i=this._tonemapping;if(i.enabled&&i.ready)return this.getOutputTexture(i.name);let o=this._bloom;if(o.enabled&&o.ready)return this.getOutputTexture(o.name);let r=this._ao;if(r.enabled&&r.ready)return this.getOutputTexture(r.name)}},hasSelected:{get:function(){let e=this._stages.slice();for(;e.length>0;){let t=e.pop();if(!l(t))continue;if(l(t.selected))return!0;let n=t.length;if(l(n))for(let i=0;i<n;++i)e.push(t.get(i))}return!1}},tonemapper:{get:function(){return this._tonemapper},set:function(e){if(this._tonemapper===e)return;l(this._tonemapping)&&(delete this._stageNames[this._tonemapping.name],this._tonemapping.destroy());let t=this._autoExposureEnabled,n;switch(e){case Qy.REINHARD:n=yd.createReinhardTonemappingStage(t);break;case Qy.MODIFIED_REINHARD:n=yd.createModifiedReinhardTonemappingStage(t);break;case Qy.FILMIC:n=yd.createFilmicTonemappingStage(t);break;case Qy.PBR_NEUTRAL:n=yd.createPbrNeutralTonemappingStage(t);break;default:n=yd.createAcesTonemappingStage(t);break}if(t){let i=this._autoExposure;n.uniforms.autoExposure=function(){return i.outputTexture}}else n.uniforms.exposure=this._exposure;this._tonemapper=e,this._tonemapping=n,l(this._stageNames)&&(this._stageNames[n.name]=n,n._textureCache=this._textureCache),this._textureCacheDirty=!0}},exposure:{get:function(){return this._exposure},set:function(e){this._tonemapping.uniforms.exposure=e,this._exposure=e}}});function rJ(e){if(!e._stagesRemoved)return;e._stagesRemoved=!1;let t=[],n=e._stages;for(let i=0,o=0;i<n.length;++i){let r=n[i];r&&(r._index=o++,t.push(r))}e._stages=t}xl.prototype.add=function(e){let t=this._stageNames,n=oJ;for(n.push(e);n.length>0;){let o=n.pop();t[o.name]=o,o._textureCache=this._textureCache;let r=o.length;if(l(r))for(let s=0;s<r;++s)n.push(o.get(s))}let i=this._stages;return e._index=i.length,i.push(e),this._textureCacheDirty=!0,e};xl.prototype.remove=function(e){if(!this.contains(e))return!1;let t=this._stageNames,n=oJ;for(n.push(e);n.length>0;){let i=n.pop();delete t[i.name];let o=i.length;if(l(o))for(let r=0;r<o;++r)n.push(i.get(r))}return this._stages[e._index]=void 0,this._stagesRemoved=!0,this._textureCacheDirty=!0,e._index=void 0,e._textureCache=void 0,e.destroy(),!0};xl.prototype.contains=function(e){return l(e)&&l(e._index)&&e._textureCache===this._textureCache};xl.prototype.get=function(e){return rJ(this),this._stages[e]};xl.prototype.removeAll=function(){let e=this._stages,t=e.length;for(let n=0;n<t;++n)this.remove(e[n]);e.length=0};xl.prototype.getStageByName=function(e){return this._stageNames[e]};xl.prototype.update=function(e,t,n){rJ(this);let i=this._activeStages,o=this._activeStages=this._previousActiveStages;this._previousActiveStages=i;let r=this._stages;o.length=r.length;let s=0;for(let C=0;C<r.length;++C){let E=r[C];E.ready&&E.enabled&&E._isSupported(e)&&(o[s++]=E)}o.length=s;let a=s!==i.length;if(!a){for(let C=0;C<s;++C)if(o[C]!==i[C]){a=!0;break}}let c=this._ao,u=this._bloom,f=this._autoExposure,h=this._tonemapping,A=this._fxaa;h.enabled=n;let g=c.enabled&&c._isSupported(e),m=u.enabled&&u._isSupported(e),_=h.enabled&&h._isSupported(e),y=A.enabled&&A._isSupported(e);if((a||this._textureCacheDirty||g!==this._aoEnabled||m!==this._bloomEnabled||_!==this._tonemappingEnabled||y!==this._fxaaEnabled)&&(this._textureCache.updateDependencies(),this._aoEnabled=g,this._bloomEnabled=m,this._tonemappingEnabled=_,this._fxaaEnabled=y,this._textureCacheDirty=!1),l(this._randomTexture)&&!g&&(this._randomTexture.destroy(),this._randomTexture=void 0),!l(this._randomTexture)&&g){let E=new Uint8Array(196608);for(let I=0;I<196608;I+=3)E[I]=Math.floor(Math.random()*255);this._randomTexture=new Nt({context:e,pixelFormat:et.RGB,pixelDatatype:He.UNSIGNED_BYTE,source:{arrayBufferView:E,width:256,height:256},sampler:new on({wrapS:Tn.REPEAT,wrapT:Tn.REPEAT,minificationFilter:Zt.NEAREST,magnificationFilter:pi.NEAREST})})}this._textureCache.update(e),A.update(e,t),c.update(e,t),u.update(e,t),h.update(e,t),this._autoExposureEnabled&&f.update(e,t);for(let C=0;C<r.length;++C)r[C].update(e,t);s=0;for(let C=0;C<r.length;++C){let E=r[C];E.ready&&E.enabled&&E._isSupported(e)&&s++}a=s!==o.length,a&&this.update(e,t,n)};xl.prototype.clear=function(e){this._textureCache.clear(e),this._autoExposureEnabled&&this._autoExposure.clear(e)};function m0(e){for(;l(e.length);)e=e.get(e.length-1);return e.outputTexture}xl.prototype.getOutputTexture=function(e){let t=this.getStageByName(e);if(l(t))return m0(t)};function gA(e,t,n,i,o){if(l(e.execute)){e.execute(t,n,i,o);return}if(e.inputPreviousStageTexture){gA(e.get(0),t,n,i,o);for(let r=1;r<e.length;++r)gA(e.get(r),t,m0(e.get(r-1)),i,o)}else for(let r=0;r<e.length;++r)gA(e.get(r),t,n,i,o)}xl.prototype.execute=function(e,t,n,i){let o=this._activeStages,r=o.length,s=this._fxaa,a=this._ao,c=this._bloom,u=this._autoExposure,f=this._tonemapping,h=a.enabled&&a._isSupported(e),A=c.enabled&&c._isSupported(e),g=this._autoExposureEnabled,m=f.enabled&&f._isSupported(e),_=s.enabled&&s._isSupported(e);if(!_&&!h&&!A&&!m&&r===0)return;let y=t;h&&a.ready&&(gA(a,e,y,n,i),y=m0(a)),A&&c.ready&&(gA(c,e,y,n,i),y=m0(c)),g&&u.ready&&gA(u,e,y,n,i),m&&f.ready&&(gA(f,e,y,n,i),y=m0(f));let C=y;if(r>0){gA(o[0],e,y,n,i);for(let E=1;E<r;++E)gA(o[E],e,m0(o[E-1]),n,i);C=m0(o[r-1])}_&&s.ready&&gA(s,e,C,n,i)};xl.prototype.copy=function(e,t){if(!l(this._copyColorCommand)){let n=this;this._copyColorCommand=e.createViewportQuadCommand(ef,{uniformMap:{colorTexture:function(){return n.outputTexture}},owner:this})}this._copyColorCommand.framebuffer=t,this._copyColorCommand.execute(e)};xl.prototype.isDestroyed=function(){return!1};xl.prototype.destroy=function(){return this._fxaa.destroy(),this._ao.destroy(),this._bloom.destroy(),this._autoExposure.destroy(),this._tonemapping.destroy(),this.removeAll(),this._textureCache=this._textureCache&&this._textureCache.destroy(),ue(this)};var _8=xl;var Tyt={SHIFT:0,CTRL:1,ALT:2},ja=Object.freeze(Tyt);var Syt={LEFT_DOWN:0,LEFT_UP:1,LEFT_CLICK:2,LEFT_DOUBLE_CLICK:3,RIGHT_DOWN:5,RIGHT_UP:6,RIGHT_CLICK:7,MIDDLE_DOWN:10,MIDDLE_UP:11,MIDDLE_CLICK:12,MOUSE_MOVE:15,WHEEL:16,PINCH_START:17,PINCH_END:18,PINCH_MOVE:19},vn=Object.freeze(Syt);function ky(e,t,n){let i=e._element;if(i===document)return n.x=t.clientX,n.y=t.clientY,n;let o=i.getBoundingClientRect();return n.x=t.clientX-o.left,n.y=t.clientY-o.top,n}function fJ(e,t){let n=e;return l(t)&&(n+=`+${t}`),n}function A0(e){if(e.shiftKey)return ja.SHIFT;if(e.ctrlKey)return ja.CTRL;if(e.altKey)return ja.ALT}var os={LEFT:0,MIDDLE:1,RIGHT:2};function nf(e,t,n,i){function o(r){i(e,r)}jt.isInternetExplorer()?n.addEventListener(t,o,!1):n.addEventListener(t,o,{capture:!1,passive:!1}),e._removalFunctions.push(function(){n.removeEventListener(t,o,!1)})}function wyt(e){let t=e._element,n=l(t.disableRootEvents)?t:document;jt.supportsPointerEvents()?(nf(e,"pointerdown",t,Myt),nf(e,"pointerup",t,F0e),nf(e,"pointermove",t,Nyt),nf(e,"pointercancel",t,F0e)):(nf(e,"mousedown",t,Q0e),nf(e,"mouseup",n,k0e),nf(e,"mousemove",n,U0e),nf(e,"touchstart",t,Pyt),nf(e,"touchend",n,R0e),nf(e,"touchmove",n,Ryt),nf(e,"touchcancel",n,R0e)),nf(e,"dblclick",t,Dyt);let i;"onwheel"in t?i="wheel":document.onmousewheel!==void 0?i="mousewheel":i="DOMMouseScroll",nf(e,i,t,vyt)}function Byt(e){let t=e._removalFunctions;for(let n=0;n<t.length;++n)t[n]()}var B0e={position:new k};function dJ(e){e._lastSeenTouchEvent=Oi()}function hJ(e){return Oi()-e._lastSeenTouchEvent>Fh.mouseEmulationIgnoreMilliseconds}function uJ(e,t,n){let i=e.x-t.x,o=e.y-t.y;return Math.sqrt(i*i+o*o)<n}function Q0e(e,t){if(!hJ(e))return;let n=t.button;e._buttonDown[n]=!0;let i;if(n===os.LEFT)i=vn.LEFT_DOWN;else if(n===os.MIDDLE)i=vn.MIDDLE_DOWN;else if(n===os.RIGHT)i=vn.RIGHT_DOWN;else return;let o=ky(e,t,e._primaryPosition);k.clone(o,e._primaryStartPosition),k.clone(o,e._primaryPreviousPosition);let r=A0(t),s=e.getInputAction(i,r);l(s)&&(k.clone(o,B0e.position),s(B0e),t.preventDefault())}var D0e={position:new k},v0e={position:new k};function sJ(e,t,n,i){let o=A0(i),r=e.getInputAction(t,o),s=e.getInputAction(n,o);if(l(r)||l(s)){let a=ky(e,i,e._primaryPosition);if(l(r)&&(k.clone(a,D0e.position),r(D0e)),l(s)){let c=e._primaryStartPosition;uJ(c,a,e._clickPixelTolerance)&&(k.clone(a,v0e.position),s(v0e))}}}function k0e(e,t){if(!hJ(e))return;let n=t.button;n!==os.LEFT&&n!==os.MIDDLE&&n!==os.RIGHT||(e._buttonDown[os.LEFT]&&(sJ(e,vn.LEFT_UP,vn.LEFT_CLICK,t),e._buttonDown[os.LEFT]=!1),e._buttonDown[os.MIDDLE]&&(sJ(e,vn.MIDDLE_UP,vn.MIDDLE_CLICK,t),e._buttonDown[os.MIDDLE]=!1),e._buttonDown[os.RIGHT]&&(sJ(e,vn.RIGHT_UP,vn.RIGHT_CLICK,t),e._buttonDown[os.RIGHT]=!1))}var aJ={startPosition:new k,endPosition:new k};function U0e(e,t){if(!hJ(e))return;let n=A0(t),i=ky(e,t,e._primaryPosition),o=e._primaryPreviousPosition,r=e.getInputAction(vn.MOUSE_MOVE,n);l(r)&&(k.clone(o,aJ.startPosition),k.clone(i,aJ.endPosition),r(aJ)),k.clone(i,o),(e._buttonDown[os.LEFT]||e._buttonDown[os.MIDDLE]||e._buttonDown[os.RIGHT])&&t.preventDefault()}var P0e={position:new k};function Dyt(e,t){let n=t.button,i;if(n===os.LEFT)i=vn.LEFT_DOUBLE_CLICK;else return;let o=A0(t),r=e.getInputAction(i,o);l(r)&&(ky(e,t,P0e.position),r(P0e))}function vyt(e,t){let n;if(l(t.deltaY)){let r=t.deltaMode;r===t.DOM_DELTA_PIXEL?n=-t.deltaY:r===t.DOM_DELTA_LINE?n=-t.deltaY*40:n=-t.deltaY*120}else t.detail>0?n=t.detail*-120:n=t.wheelDelta;if(!l(n))return;let i=A0(t),o=e.getInputAction(vn.WHEEL,i);l(o)&&(o(n),t.preventDefault())}function Pyt(e,t){dJ(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i)r=n[i],s=r.identifier,a.set(s,ky(e,r,new k));y8(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,c.set(s,k.clone(a.get(s)))}function R0e(e,t){dJ(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i)r=n[i],s=r.identifier,a.remove(s);y8(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,c.remove(s)}var M0e={position:new k},cJ={position1:new k,position2:new k},N0e={position:new k},L0e={position:new k},O0e={position:new k};function y8(e,t){let n=A0(t),i=e._positions,o=i.length,r,s,a=e._isPinching;if(o!==1&&e._buttonDown[os.LEFT]){if(e._buttonDown[os.LEFT]=!1,l(e._touchHoldTimer)&&(clearTimeout(e._touchHoldTimer),e._touchHoldTimer=void 0),r=e.getInputAction(vn.LEFT_UP,n),l(r)&&(k.clone(e._primaryPosition,N0e.position),r(N0e)),o===0&&!e._isTouchHolding&&(s=e.getInputAction(vn.LEFT_CLICK,n),l(s))){let c=e._primaryStartPosition,u=e._previousPositions.values[0];uJ(c,u,e._clickPixelTolerance)&&(k.clone(e._primaryPosition,L0e.position),s(L0e))}e._isTouchHolding=!1}if(o===0&&a&&(e._isPinching=!1,r=e.getInputAction(vn.PINCH_END,n),l(r)&&r()),o===1&&!a){let c=i.values[0];k.clone(c,e._primaryPosition),k.clone(c,e._primaryStartPosition),k.clone(c,e._primaryPreviousPosition),e._buttonDown[os.LEFT]=!0,r=e.getInputAction(vn.LEFT_DOWN,n),l(r)&&(k.clone(c,M0e.position),r(M0e)),e._touchHoldTimer=setTimeout(function(){if(!e.isDestroyed()&&(e._touchHoldTimer=void 0,e._isTouchHolding=!0,s=e.getInputAction(vn.RIGHT_CLICK,n),l(s))){let u=e._primaryStartPosition,f=e._previousPositions.values[0];uJ(u,f,e._holdPixelTolerance)&&(k.clone(e._primaryPosition,O0e.position),s(O0e))}},Fh.touchHoldDelayMilliseconds),t.preventDefault()}o===2&&!a&&(e._isPinching=!0,r=e.getInputAction(vn.PINCH_START,n),l(r)&&(k.clone(i.values[0],cJ.position1),k.clone(i.values[1],cJ.position2),r(cJ),t.preventDefault()))}function Ryt(e,t){dJ(e);let n=t.changedTouches,i,o=n.length,r,s,a=e._positions;for(i=0;i<o;++i){r=n[i],s=r.identifier;let u=a.get(s);l(u)&&ky(e,r,u)}G0e(e,t);let c=e._previousPositions;for(i=0;i<o;++i)r=n[i],s=r.identifier,k.clone(a.get(s),c.get(s))}var lJ={startPosition:new k,endPosition:new k},TP={distance:{startPosition:new k,endPosition:new k},angleAndHeight:{startPosition:new k,endPosition:new k}};function G0e(e,t){let n=A0(t),i=e._positions,o=e._previousPositions,r=i.length,s;if(r===1&&e._buttonDown[os.LEFT]){let a=i.values[0];k.clone(a,e._primaryPosition);let c=e._primaryPreviousPosition;s=e.getInputAction(vn.MOUSE_MOVE,n),l(s)&&(k.clone(c,lJ.startPosition),k.clone(a,lJ.endPosition),s(lJ)),k.clone(a,c),t.preventDefault()}else if(r===2&&e._isPinching&&(s=e.getInputAction(vn.PINCH_MOVE,n),l(s))){let a=i.values[0],c=i.values[1],u=o.values[0],f=o.values[1],h=c.x-a.x,A=c.y-a.y,g=Math.sqrt(h*h+A*A)*.25,m=f.x-u.x,_=f.y-u.y,y=Math.sqrt(m*m+_*_)*.25,C=(c.y+a.y)*.125,E=(f.y+u.y)*.125,I=Math.atan2(A,h),b=Math.atan2(_,m);k.fromElements(0,y,TP.distance.startPosition),k.fromElements(0,g,TP.distance.endPosition),k.fromElements(b,E,TP.angleAndHeight.startPosition),k.fromElements(I,C,TP.angleAndHeight.endPosition),s(TP)}}function Myt(e,t){if(t.target.setPointerCapture(t.pointerId),t.pointerType==="touch"){let n=e._positions,i=t.pointerId;n.set(i,ky(e,t,new k)),y8(e,t),e._previousPositions.set(i,k.clone(n.get(i)))}else Q0e(e,t)}function F0e(e,t){if(t.pointerType==="touch"){let n=e._positions,i=t.pointerId;n.remove(i),y8(e,t),e._previousPositions.remove(i)}else k0e(e,t)}function Nyt(e,t){if(t.pointerType==="touch"){let n=e._positions,i=t.pointerId,o=n.get(i);if(!l(o))return;ky(e,t,o),G0e(e,t);let r=e._previousPositions;k.clone(n.get(i),r.get(i))}else U0e(e,t)}function Fh(e){this._inputEvents={},this._buttonDown={[os.LEFT]:!1,[os.MIDDLE]:!1,[os.RIGHT]:!1},this._isPinching=!1,this._isTouchHolding=!1,this._lastSeenTouchEvent=-Fh.mouseEmulationIgnoreMilliseconds,this._primaryStartPosition=new k,this._primaryPosition=new k,this._primaryPreviousPosition=new k,this._positions=new Pt,this._previousPositions=new Pt,this._removalFunctions=[],this._touchHoldTimer=void 0,this._clickPixelTolerance=5,this._holdPixelTolerance=25,this._element=e??document,wyt(this)}Fh.prototype.setInputAction=function(e,t,n){let i=fJ(t,n);this._inputEvents[i]=e};Fh.prototype.getInputAction=function(e,t){let n=fJ(e,t);return this._inputEvents[n]};Fh.prototype.removeInputAction=function(e,t){let n=fJ(e,t);delete this._inputEvents[n]};Fh.prototype.isDestroyed=function(){return!1};Fh.prototype.destroy=function(){return Byt(this),ue(this)};Fh.mouseEmulationIgnoreMilliseconds=800;Fh.touchHoldDelayMilliseconds=1500;var Cd=Fh;function p0(e){this._scene=e,this._currentTweens=[],this._morphHandler=void 0,this._morphCancelled=!1,this._completeMorph=void 0,this._morphToOrthographic=!1}p0.prototype.completeMorph=function(){l(this._completeMorph)&&this._completeMorph()};p0.prototype.morphTo2D=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;this._previousMode=n.mode,this._morphToOrthographic=n.camera.frustum instanceof An,!(this._previousMode===ie.SCENE2D||this._previousMode===ie.MORPHING)&&(this._scene.morphStart.raiseEvent(this,this._previousMode,ie.SCENE2D,!0),n._mode=ie.MORPHING,n.camera._setTransform(R.IDENTITY),this._previousMode===ie.COLUMBUS_VIEW?hCt(this,e):CCt(this,e,t),e===0&&l(this._completeMorph)&&this._completeMorph())};var Lyt=new d,Oyt=new d,Fyt=new d,Qyt=new d,kyt=new d,Uyt=new d,Gyt=new d,zyt=new Ae,Vyt=new R,Hyt=new Vi,Wyt=new An,jyt={position:void 0,direction:void 0,up:void 0,position2D:void 0,direction2D:void 0,up2D:void 0,frustum:void 0};p0.prototype.morphToColumbusView=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;if(this._previousMode=n.mode,this._previousMode===ie.COLUMBUS_VIEW||this._previousMode===ie.MORPHING)return;this._scene.morphStart.raiseEvent(this,this._previousMode,ie.COLUMBUS_VIEW,!0),n.camera._setTransform(R.IDENTITY);let i=Lyt,o=Oyt,r=Fyt;if(e>0)i.x=0,i.y=-1,i.z=1,i=d.multiplyByScalar(d.normalize(i,i),5*t.maximumRadius,i),d.negate(d.normalize(i,o),o),d.cross(d.UNIT_X,o,r);else{let u=n.camera;if(this._previousMode===ie.SCENE2D)d.clone(u.position,i),i.z=u.frustum.right-u.frustum.left,d.negate(d.UNIT_Z,o),d.clone(d.UNIT_Y,r);else{d.clone(u.positionWC,i),d.clone(u.directionWC,o),d.clone(u.upWC,r);let f=t.scaleToGeodeticSurface(i,Gyt),h=kt.eastNorthUpToFixedFrame(f,t,Vyt);R.inverseTransformation(h,h),n.mapProjection.project(t.cartesianToCartographic(i,zyt),i),R.multiplyByPointAsVector(h,o,o),R.multiplyByPointAsVector(h,r,r)}}let s;this._morphToOrthographic?(s=Wyt,s.width=n.camera.frustum.right-n.camera.frustum.left,s.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight):(s=Hyt,s.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight,s.fov=D.toRadians(60));let a=jyt;a.position=i,a.direction=o,a.up=r,a.frustum=s;let c=ICt(a);SP(this,c),this._previousMode===ie.SCENE2D?ECt(this,e,a,c):(a.position2D=R.multiplyByPoint(Eo.TRANSFORM_2D,i,Qyt),a.direction2D=R.multiplyByPointAsVector(Eo.TRANSFORM_2D,o,kyt),a.up2D=R.multiplyByPointAsVector(Eo.TRANSFORM_2D,r,Uyt),n._mode=ie.MORPHING,Z0e(this,e,a,c)),e===0&&l(this._completeMorph)&&this._completeMorph()};var pJ={position:new d,direction:new d,up:new d,frustum:void 0},V0e=new Vi;p0.prototype.morphTo3D=function(e,t){l(this._completeMorph)&&this._completeMorph();let n=this._scene;if(this._previousMode=n.mode,!(this._previousMode===ie.SCENE3D||this._previousMode===ie.MORPHING)){if(this._scene.morphStart.raiseEvent(this,this._previousMode,ie.SCENE3D,!0),n._mode=ie.MORPHING,n.camera._setTransform(R.IDENTITY),this._previousMode===ie.SCENE2D)iCt(this,e,t);else{let i;e>0?(i=pJ,d.fromDegrees(0,0,5*t.maximumRadius,t,i.position),d.negate(i.position,i.direction),d.normalize(i.direction,i.direction),d.clone(d.UNIT_Z,i.up)):i=H0e(this,t);let o,r=n.camera;r.frustum instanceof An?o=r.frustum.clone():(o=V0e,o.aspectRatio=n.drawingBufferWidth/n.drawingBufferHeight,o.fov=D.toRadians(60)),i.frustum=o;let s=eIe(i);SP(this,s),AJ(this,e,i,s)}e===0&&l(this._completeMorph)&&this._completeMorph()}};p0.prototype.isDestroyed=function(){return!1};p0.prototype.destroy=function(){return C8(this),ue(this)};function SP(e,t){if(e._scene.completeMorphOnUserInput){e._morphHandler=new Cd(e._scene.canvas);let n=function(){e._morphCancelled=!0,e._scene.camera.cancelFlight(),t(e)};e._completeMorph=n,e._morphHandler.setInputAction(n,vn.LEFT_DOWN),e._morphHandler.setInputAction(n,vn.MIDDLE_DOWN),e._morphHandler.setInputAction(n,vn.RIGHT_DOWN),e._morphHandler.setInputAction(n,vn.WHEEL)}}function C8(e){let t=e._currentTweens;for(let n=0;n<t.length;++n)t[n].cancelTween();e._currentTweens.length=0,e._morphHandler=e._morphHandler&&e._morphHandler.destroy()}var Yyt=new Ae,qyt=new d,Kyt=new R;function H0e(e,t){let n=e._scene,i=n.camera,o=pJ,r=o.position,s=o.direction,a=o.up,c=n.mapProjection.unproject(i.position,Yyt);t.cartographicToCartesian(c,r);let u=t.scaleToGeodeticSurface(r,qyt),f=kt.eastNorthUpToFixedFrame(u,t,Kyt);return R.multiplyByPointAsVector(f,i.direction,s),R.multiplyByPointAsVector(f,i.up,a),o}var Xyt=new d,Jyt=new d,Zyt=new d,$yt=new d,eCt=new d,tCt=new d;function AJ(e,t,n,i){t*=.5;let o=e._scene,r=o.camera,s=d.clone(r.position,Xyt),a=d.clone(r.direction,Jyt),c=d.clone(r.up,Zyt),u=R.multiplyByPoint(Eo.TRANSFORM_2D_INVERSE,n.position,$yt),f=R.multiplyByPointAsVector(Eo.TRANSFORM_2D_INVERSE,n.direction,eCt),h=R.multiplyByPointAsVector(Eo.TRANSFORM_2D_INVERSE,n.up,tCt);function A(m){Ed(s,u,m.time,r.position),Ed(a,f,m.time,r.direction),Ed(c,h,m.time,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.right,r.right)}let g=o.tweens.add({duration:t,easingFunction:ps.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:A,complete:function(){$0e(e,o,0,1,t,i)}});e._currentTweens.push(g)}var nCt=new An,W0e=new d,j0e=new d,Y0e=new d,gJ=new d,q0e=new d,K0e=new d;function iCt(e,t,n){t/=3;let i=e._scene,o=i.camera,r;t>0?(r=pJ,d.fromDegrees(0,0,5*n.maximumRadius,n,r.position),d.negate(r.position,r.direction),d.normalize(r.direction,r.direction),d.clone(d.UNIT_Z,r.up)):(o.position.z=o.frustum.right-o.frustum.left,r=H0e(e,n));let s;e._morphToOrthographic?(s=nCt,s.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,s.width=o.frustum.right-o.frustum.left):(s=V0e,s.aspectRatio=i.drawingBufferWidth/i.drawingBufferHeight,s.fov=D.toRadians(60)),r.frustum=s;let a=eIe(r);SP(e,a);let c;e._morphToOrthographic?c=function(){AJ(e,t,r,a)}:c=function(){J0e(e,t,r,function(){AJ(e,t,r,a)})},t>0?(i._mode=ie.SCENE2D,o.flyTo({duration:t,destination:d.fromDegrees(0,0,5*n.maximumRadius,n,gJ),complete:function(){i._mode=ie.MORPHING,c()}})):c()}function Ed(e,t,n,i){return d.lerp(e,t,n,i)}function X0e(e,t,n,i,o){let r=e._scene,s=r.camera;if(s.frustum instanceof An)return;let a=s.frustum.fov,c=D.RADIANS_PER_DEGREE*.5,u=n.position.z*Math.tan(a*.5);s.frustum.far=u/Math.tan(c*.5)+1e7;function f(A){s.frustum.fov=D.lerp(a,c,A.time);let g=u/Math.tan(s.frustum.fov*.5);i(s,g)}let h=r.tweens.add({duration:t,easingFunction:ps.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:f,complete:function(){s.frustum=n.frustum.clone(),o(e)}});e._currentTweens.push(h)}var oCt=new d,rCt=new d,sCt=new d,mJ=new d,aCt=new d,cCt=new d,lCt=new ls,uCt=new In,fCt=new d,dCt={position:void 0,direction:void 0,up:void 0,frustum:void 0};function hCt(e,t){t*=.5;let n=e._scene,i=n.camera,o=d.clone(i.position,oCt),r=d.clone(i.direction,rCt),s=d.clone(i.up,sCt),a=d.negate(d.UNIT_Z,aCt),c=d.clone(d.UNIT_Y,cCt),u=mJ;if(t>0)d.clone(d.ZERO,mJ),u.z=5*n.ellipsoid.maximumRadius;else{d.clone(o,mJ);let y=uCt;R.multiplyByPoint(Eo.TRANSFORM_2D,o,y.origin),R.multiplyByPointAsVector(Eo.TRANSFORM_2D,r,y.direction);let C=n.globe;if(l(C)){let E=C.pickWorldCoordinates(y,n,!0,fCt);l(E)&&(R.multiplyByPoint(Eo.TRANSFORM_2D_INVERSE,E,u),u.z+=d.distance(o,u))}}let f=lCt;f.right=u.z*.5,f.left=-f.right,f.top=f.right*(n.drawingBufferHeight/n.drawingBufferWidth),f.bottom=-f.top;let h=dCt;h.position=u,h.direction=a,h.up=c,h.frustum=f;let A=tIe(h);SP(e,A);function g(y){Ed(o,u,y.time,i.position),Ed(r,a,y.time,i.direction),Ed(s,c,y.time,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right),i._adjustOrthographicFrustum(!0)}function m(y,C){y.position.z=C}let _=n.tweens.add({duration:t,easingFunction:ps.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:g,complete:function(){X0e(e,t,h,m,A)}});e._currentTweens.push(_)}var z0e=new Ae,mCt={position:new d,direction:new d,up:new d,position2D:new d,direction2D:new d,up2D:new d,frustum:new ls},ACt={position:new d,direction:new d,up:new d,frustum:void 0},pCt=new d,gCt=new In,_Ct=new R,yCt=new d;function CCt(e,t,n){t*=.5;let i=e._scene,o=i.camera,r=mCt;if(t>0)d.clone(d.ZERO,r.position),r.position.z=5*n.maximumRadius,d.negate(d.UNIT_Z,r.direction),d.clone(d.UNIT_Y,r.up);else{n.cartesianToCartographic(o.positionWC,z0e),i.mapProjection.project(z0e,r.position),d.negate(d.UNIT_Z,r.direction),d.clone(d.UNIT_Y,r.up);let h=gCt;d.clone(r.position2D,h.origin);let A=d.clone(o.directionWC,h.direction),g=n.scaleToGeodeticSurface(o.positionWC,yCt),m=kt.eastNorthUpToFixedFrame(g,n,_Ct);R.inverseTransformation(m,m),R.multiplyByPointAsVector(m,A,A),R.multiplyByPointAsVector(Eo.TRANSFORM_2D,A,A);let _=i.globe;if(l(_)){let y=_.pickWorldCoordinates(h,i,!0,pCt);if(l(y)){let C=d.distance(r.position2D,y);y.x+=C,d.clone(y,r.position2D)}}}function s(h,A){h.position.x=A}R.multiplyByPoint(Eo.TRANSFORM_2D,r.position,r.position2D),R.multiplyByPointAsVector(Eo.TRANSFORM_2D,r.direction,r.direction2D),R.multiplyByPointAsVector(Eo.TRANSFORM_2D,r.up,r.up2D);let a=r.frustum;a.right=r.position.z*.5,a.left=-a.right,a.top=a.right*(i.drawingBufferHeight/i.drawingBufferWidth),a.bottom=-a.top;let c=ACt;R.multiplyByPoint(Eo.TRANSFORM_2D_INVERSE,r.position2D,c.position),d.clone(r.direction,c.direction),d.clone(r.up,c.up),c.frustum=a;let u=tIe(c);SP(e,u);function f(){X0e(e,t,r,s,u)}Z0e(e,t,r,f)}function J0e(e,t,n,i){let o=e._scene,r=o.camera,s=r.frustum.right-r.frustum.left;r.frustum=n.frustum.clone();let a=r.frustum.fov,c=D.RADIANS_PER_DEGREE*.5,u=s*Math.tan(a*.5);r.frustum.far=u/Math.tan(c*.5)+1e7,r.frustum.fov=c;function f(A){r.frustum.fov=D.lerp(c,a,A.time),r.position.z=u/Math.tan(r.frustum.fov*.5)}let h=o.tweens.add({duration:t,easingFunction:ps.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:f,complete:function(){i(e)}});e._currentTweens.push(h)}function ECt(e,t,n,i){t*=.5;let o=e._scene,r=o.camera,s=d.clone(n.position,gJ),a=d.clone(n.direction,q0e),c=d.clone(n.up,K0e);o._mode=ie.MORPHING;function u(){r.frustum=n.frustum.clone();let f=d.clone(r.position,W0e),h=d.clone(r.direction,j0e),A=d.clone(r.up,Y0e);f.z=s.z;function g(_){Ed(f,s,_.time,r.position),Ed(h,a,_.time,r.direction),Ed(A,c,_.time,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.right,r.right)}let m=o.tweens.add({duration:t,easingFunction:ps.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:g,complete:function(){i(e)}});e._currentTweens.push(m)}e._morphToOrthographic?u():J0e(e,0,n,u)}function Z0e(e,t,n,i){let o=e._scene,r=o.camera,s=d.clone(r.position,W0e),a=d.clone(r.direction,j0e),c=d.clone(r.up,Y0e),u=d.clone(n.position2D,gJ),f=d.clone(n.direction2D,q0e),h=d.clone(n.up2D,K0e);function A(m){Ed(s,u,m.time,r.position),Ed(a,f,m.time,r.direction),Ed(c,h,m.time,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.right,r.right),r._adjustOrthographicFrustum(!0)}let g=o.tweens.add({duration:t,easingFunction:ps.QUARTIC_OUT,startObject:{time:0},stopObject:{time:1},update:A,complete:function(){$0e(e,o,1,0,t,i)}});e._currentTweens.push(g)}function $0e(e,t,n,i,o,r){let s={object:t,property:"morphTime",startValue:n,stopValue:i,duration:o,easingFunction:ps.QUARTIC_OUT};l(r)&&(s.complete=function(){r(e)});let a=t.tweens.addProperty(s);e._currentTweens.push(a)}function eIe(e){return function(t){let n=t._scene;n._mode=ie.SCENE3D,n.morphTime=ie.getMorphTime(ie.SCENE3D),C8(t);let i=n.camera;(t._previousMode!==ie.MORPHING||t._morphCancelled)&&(t._morphCancelled=!1,d.clone(e.position,i.position),d.clone(e.direction,i.direction),d.clone(e.up,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right),i.frustum=e.frustum.clone());let o=i.frustum;n.frameState.useLogDepth&&(o.near=.1,o.far=1e10);let r=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,ie.SCENE3D,r)}}function tIe(e){return function(t){let n=t._scene;n._mode=ie.SCENE2D,n.morphTime=ie.getMorphTime(ie.SCENE2D),C8(t);let i=n.camera;d.clone(e.position,i.position),i.position.z=n.ellipsoid.maximumRadius*2,d.clone(e.direction,i.direction),d.clone(e.up,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right),i.frustum=e.frustum.clone();let o=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,ie.SCENE2D,o)}}function ICt(e){return function(t){let n=t._scene;n._mode=ie.COLUMBUS_VIEW,n.morphTime=ie.getMorphTime(ie.COLUMBUS_VIEW),C8(t);let i=n.camera;(t._previousModeMode!==ie.MORPHING||t._morphCancelled)&&(t._morphCancelled=!1,d.clone(e.position,i.position),d.clone(e.direction,i.direction),d.clone(e.up,i.up),d.cross(i.direction,i.up,i.right),d.normalize(i.right,i.right));let o=i.frustum;n.frameState.useLogDepth&&(o.near=.1,o.far=1e10);let r=l(t._completeMorph);t._completeMorph=void 0,n.camera.update(n.mode),t._scene.morphComplete.raiseEvent(t,t._previousMode,ie.COLUMBUS_VIEW,r)}}var E8=p0;var xCt={LEFT_DRAG:0,RIGHT_DRAG:1,MIDDLE_DRAG:2,WHEEL:3,PINCH:4},$i=Object.freeze(xCt);function ga(e,t){let n=`${e}`;return l(t)&&(n+=`+${t}`),n}function bCt(e,t){k.clone(e.distance.startPosition,t.distance.startPosition),k.clone(e.distance.endPosition,t.distance.endPosition),k.clone(e.angleAndHeight.startPosition,t.angleAndHeight.startPosition),k.clone(e.angleAndHeight.endPosition,t.angleAndHeight.endPosition)}function nIe(e,t,n){let i=ga($i.PINCH,t),o=e._update,r=e._isDown,s=e._eventStartPosition,a=e._pressTime,c=e._releaseTime;o[i]=!0,r[i]=!1,s[i]=new k;let u=e._movement[i];l(u)||(u=e._movement[i]={}),u.distance={startPosition:new k,endPosition:new k},u.angleAndHeight={startPosition:new k,endPosition:new k},u.prevAngle=0,e._eventHandler.setInputAction(function(f){e._buttonsDown++,r[i]=!0,a[i]=new Date,k.lerp(f.position1,f.position2,.5,s[i])},vn.PINCH_START,t),e._eventHandler.setInputAction(function(){e._buttonsDown=Math.max(e._buttonsDown-1,0),r[i]=!1,c[i]=new Date},vn.PINCH_END,t),e._eventHandler.setInputAction(function(f){if(r[i]){o[i]?(bCt(f,u),o[i]=!1,u.prevAngle=u.angleAndHeight.startPosition.x):(k.clone(f.distance.endPosition,u.distance.endPosition),k.clone(f.angleAndHeight.endPosition,u.angleAndHeight.endPosition));let h=u.angleAndHeight.endPosition.x,A=u.prevAngle,g=Math.PI*2;for(;h>=A+Math.PI;)h-=g;for(;h<A-Math.PI;)h+=g;u.angleAndHeight.endPosition.x=-h*n.clientWidth/12,u.angleAndHeight.startPosition.x=-A*n.clientWidth/12}},vn.PINCH_MOVE,t)}function iIe(e,t){let n=ga($i.WHEEL,t),i=e._pressTime,o=e._releaseTime,r=e._update;r[n]=!0;let s=e._movement[n];l(s)||(s=e._movement[n]={});let a=e._lastMovement[n];l(a)||(a=e._lastMovement[n]={startPosition:new k,endPosition:new k,valid:!1}),s.startPosition=new k,k.clone(k.ZERO,s.startPosition),s.endPosition=new k,e._eventHandler.setInputAction(function(c){let u=7.5*D.toRadians(c);i[n]=o[n]=new Date,s.endPosition.x=0,s.endPosition.y=u,k.clone(s.endPosition,a.endPosition),a.valid=!0,r[n]=!1},vn.WHEEL,t)}function KT(e,t,n){let i=ga(n,t),o=e._isDown,r=e._eventStartPosition,s=e._pressTime;o[i]=!1,r[i]=new k;let a=e._lastMovement[i];l(a)||(a=e._lastMovement[i]={startPosition:new k,endPosition:new k,valid:!1});let c,u;n===$i.LEFT_DRAG?(c=vn.LEFT_DOWN,u=vn.LEFT_UP):n===$i.RIGHT_DRAG?(c=vn.RIGHT_DOWN,u=vn.RIGHT_UP):n===$i.MIDDLE_DRAG&&(c=vn.MIDDLE_DOWN,u=vn.MIDDLE_UP),e._eventHandler.setInputAction(function(f){e._buttonsDown++,a.valid=!1,o[i]=!0,s[i]=new Date,k.clone(f.position,r[i])},c,t),e._eventHandler.setInputAction(function(){_J(ga(n,void 0),e);for(let f of Object.values(ja)){let h=ga(n,f);_J(h,e)}},u,t)}function _J(e,t){let n=t._releaseTime,i=t._isDown;i[e]&&(t._buttonsDown=Math.max(t._buttonsDown-1,0)),i[e]=!1,n[e]=new Date}function oIe(e,t){k.clone(e.startPosition,t.startPosition),k.clone(e.endPosition,t.endPosition)}function TCt(e,t,n){let i=n._isDown,o=!1,r=ga(e,t);for(let[c,u]of Object.entries(i))c.startsWith(e)&&u&&c!==r&&(o=!0,_J(c,n));if(!o)return;let s=n._pressTime,a=n._lastMovement[r];l(a)||(a=n._lastMovement[r]={startPosition:new k,endPosition:new k,valid:!1}),n._buttonsDown++,a.valid=!1,i[r]=!0,s[r]=new Date}function rIe(e,t){let n=e._update,i=e._movement,o=e._lastMovement,r=e._isDown;for(let s in $i)if($i.hasOwnProperty(s)){let a=$i[s];if(l(a)){let c=ga(a,t);n[c]=!0,l(e._lastMovement[c])||(e._lastMovement[c]={startPosition:new k,endPosition:new k,valid:!1}),l(e._movement[c])||(e._movement[c]={startPosition:new k,endPosition:new k})}}e._eventHandler.setInputAction(function(s){for(let a in $i)if($i.hasOwnProperty(a)){let c=$i[a];if(l(c)){let u=ga(c,t);TCt(c,t,e),r[u]&&(n[u]?(oIe(i[u],o[u]),o[u].valid=!0,oIe(s,i[u]),n[u]=!1):k.clone(s.endPosition,i[u].endPosition))}}k.clone(s.endPosition,e._currentMousePosition)},vn.MOUSE_MOVE,t)}function Id(e){this._eventHandler=new Cd(e),this._update={},this._movement={},this._lastMovement={},this._isDown={},this._eventStartPosition={},this._pressTime={},this._releaseTime={},this._buttonsDown=0,this._currentMousePosition=new k,iIe(this,void 0),nIe(this,void 0,e),KT(this,void 0,$i.LEFT_DRAG),KT(this,void 0,$i.RIGHT_DRAG),KT(this,void 0,$i.MIDDLE_DRAG),rIe(this,void 0);for(let t in ja)if(ja.hasOwnProperty(t)){let n=ja[t];l(n)&&(iIe(this,n),nIe(this,n,e),KT(this,n,$i.LEFT_DRAG),KT(this,n,$i.RIGHT_DRAG),KT(this,n,$i.MIDDLE_DRAG),rIe(this,n))}}Object.defineProperties(Id.prototype,{currentMousePosition:{get:function(){return this._currentMousePosition}},anyButtonDown:{get:function(){let e=!this._update[ga($i.WHEEL)]||!this._update[ga($i.WHEEL,ja.SHIFT)]||!this._update[ga($i.WHEEL,ja.CTRL)]||!this._update[ga($i.WHEEL,ja.ALT)];return this._buttonsDown>0||e}}});Id.prototype.isMoving=function(e,t){let n=ga(e,t);return!this._update[n]};Id.prototype.getMovement=function(e,t){let n=ga(e,t);return this._movement[n]};Id.prototype.getLastMovement=function(e,t){let n=ga(e,t),i=this._lastMovement[n];if(i.valid)return i};Id.prototype.isButtonDown=function(e,t){let n=ga(e,t);return this._isDown[n]};Id.prototype.getStartMousePosition=function(e,t){if(e===$i.WHEEL)return this._currentMousePosition;let n=ga(e,t);return this._eventStartPosition[n]};Id.prototype.getButtonPressTime=function(e,t){let n=ga(e,t);return this._pressTime[n]};Id.prototype.getButtonReleaseTime=function(e,t){let n=ga(e,t);return this._releaseTime[n]};Id.prototype.reset=function(){for(let e in this._update)this._update.hasOwnProperty(e)&&(this._update[e]=!0)};Id.prototype.isDestroyed=function(){return!1};Id.prototype.destroy=function(){return this._eventHandler=this._eventHandler&&this._eventHandler.destroy(),ue(this)};var I8=Id;function x8(e,t,n,i,o,r,s,a,c,u){this._tweens=e,this._tweenjs=t,this._startObject=ze(n),this._stopObject=ze(i),this._duration=o,this._delay=r,this._easingFunction=s,this._update=a,this._complete=c,this.cancel=u,this.needsStart=!0}Object.defineProperties(x8.prototype,{startObject:{get:function(){return this._startObject}},stopObject:{get:function(){return this._stopObject}},duration:{get:function(){return this._duration}},delay:{get:function(){return this._delay}},easingFunction:{get:function(){return this._easingFunction}},update:{get:function(){return this._update}},complete:{get:function(){return this._complete}},tweenjs:{get:function(){return this._tweenjs}}});x8.prototype.cancelTween=function(){this._tweens.remove(this)};function Qh(){this._tweens=[]}Object.defineProperties(Qh.prototype,{length:{get:function(){return this._tweens.length}}});Qh.prototype.add=function(e){if(e=e??V.EMPTY_OBJECT,e.duration===0)return l(e.complete)&&e.complete(),new x8(this);let t=e.duration/ri.SECONDS_PER_MILLISECOND,n=e.delay??0,i=n/ri.SECONDS_PER_MILLISECOND,o=e.easingFunction??ps.LINEAR_NONE,r=e.startObject,s=new G_e(r);s.to(ze(e.stopObject),t),s.delay(i),s.easing(o),l(e.update)&&s.onUpdate(function(){e.update(r)}),s.onComplete(e.complete??null),s.repeat(e._repeat??0);let a=new x8(this,s,e.startObject,e.stopObject,e.duration,n,o,e.update,e.complete,e.cancel);return this._tweens.push(a),a};Qh.prototype.addProperty=function(e){e=e??V.EMPTY_OBJECT;let t=e.object,n=e.property,i=e.startValue,o=e.stopValue;function r(s){t[n]=s.value}return this.add({startObject:{value:i},stopObject:{value:o},duration:e.duration??3,delay:e.delay,easingFunction:e.easingFunction,update:r,complete:e.complete,cancel:e.cancel,_repeat:e._repeat})};Qh.prototype.addAlpha=function(e){e=e??V.EMPTY_OBJECT;let t=e.material,n=[];for(let o in t.uniforms)t.uniforms.hasOwnProperty(o)&&l(t.uniforms[o])&&l(t.uniforms[o].alpha)&&n.push(o);function i(o){let r=n.length;for(let s=0;s<r;++s)t.uniforms[n[s]].alpha=o.alpha}return this.add({startObject:{alpha:e.startValue??0},stopObject:{alpha:e.stopValue??1},duration:e.duration??3,delay:e.delay,easingFunction:e.easingFunction,update:i,complete:e.complete,cancel:e.cancel})};Qh.prototype.addOffsetIncrement=function(e){e=e??V.EMPTY_OBJECT;let n=e.material.uniforms;return this.addProperty({object:n,property:"offset",startValue:n.offset,stopValue:n.offset+1,duration:e.duration,delay:e.delay,easingFunction:e.easingFunction,update:e.update,cancel:e.cancel,_repeat:1/0})};Qh.prototype.remove=function(e){if(!l(e))return!1;let t=this._tweens.indexOf(e);return t!==-1?(e.tweenjs.stop(),l(e.cancel)&&e.cancel(),this._tweens.splice(t,1),!0):!1};Qh.prototype.removeAll=function(){let e=this._tweens;for(let t=0;t<e.length;++t){let n=e[t];n.tweenjs.stop(),l(n.cancel)&&n.cancel()}e.length=0};Qh.prototype.contains=function(e){return l(e)&&this._tweens.indexOf(e)!==-1};Qh.prototype.get=function(e){return this._tweens[e]};Qh.prototype.update=function(e){let t=this._tweens,n=0;for(e=l(e)?e/ri.SECONDS_PER_MILLISECOND:Oi();n<t.length;){let i=t[n],o=i.tweenjs;i.needsStart?(i.needsStart=!1,o.start(e)):o.update(e)?n++:(o.stop(),t.splice(n,1))}};var XT=Qh;function BP(e){this.enableInputs=!0,this.enableTranslate=!0,this.enableZoom=!0,this.enableRotate=!0,this.enableTilt=!0,this.enableLook=!0,this.inertiaSpin=.9,this.inertiaTranslate=.9,this.inertiaZoom=.8,this.maximumMovementRatio=.1,this.bounceAnimationTime=3,this.minimumZoomDistance=1,this.maximumZoomDistance=Number.POSITIVE_INFINITY,this.zoomFactor=5,this.translateEventTypes=$i.LEFT_DRAG,this.zoomEventTypes=[$i.RIGHT_DRAG,$i.WHEEL,$i.PINCH],this.rotateEventTypes=$i.LEFT_DRAG,this.tiltEventTypes=[$i.MIDDLE_DRAG,$i.PINCH,{eventType:$i.LEFT_DRAG,modifier:ja.CTRL},{eventType:$i.RIGHT_DRAG,modifier:ja.CTRL}],this.lookEventTypes={eventType:$i.LEFT_DRAG,modifier:ja.SHIFT};let t=e.ellipsoid??te.default;this.minimumPickingTerrainHeight=te.WGS84.equals(t)?15e4:t.minimumRadius*.025,this._minimumPickingTerrainHeight=this.minimumPickingTerrainHeight,this.minimumPickingTerrainDistanceWithInertia=te.WGS84.equals(t)?4e3:t.minimumRadius*63e-5,this.minimumCollisionTerrainHeight=te.WGS84.equals(t)?15e3:t.minimumRadius*.0025,this._minimumCollisionTerrainHeight=this.minimumCollisionTerrainHeight,this.minimumTrackBallHeight=te.WGS84.equals(t)?75e5:t.minimumRadius*1.175,this._minimumTrackBallHeight=this.minimumTrackBallHeight,this.enableCollisionDetection=!0,this.maximumTiltAngle=void 0,this._scene=e,this._globe=void 0,this._ellipsoid=t,this._lastGlobeHeight=0,this._aggregator=new I8(e.canvas),this._lastInertiaSpinMovement=void 0,this._lastInertiaZoomMovement=void 0,this._lastInertiaTranslateMovement=void 0,this._lastInertiaTiltMovement=void 0,this._inertiaDisablers={_lastInertiaZoomMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement","_lastInertiaTiltMovement"],_lastInertiaTiltMovement:["_lastInertiaSpinMovement","_lastInertiaTranslateMovement"]},this._tweens=new XT,this._tween=void 0,this._horizontalRotationAxis=void 0,this._tiltCenterMousePosition=new k(-1,-1),this._tiltCenter=new d,this._rotateMousePosition=new k(-1,-1),this._rotateStartPosition=new d,this._strafeStartPosition=new d,this._strafeMousePosition=new k,this._strafeEndMousePosition=new k,this._zoomMouseStart=new k(-1,-1),this._zoomWorldPosition=new d,this._useZoomWorldPosition=!1,this._panLastMousePosition=new k,this._panLastWorldPosition=new d,this._tiltCVOffMap=!1,this._looking=!1,this._rotating=!1,this._strafing=!1,this._zoomingOnVector=!1,this._zoomingUnderground=!1,this._rotatingZoom=!1,this._adjustedHeightForTerrain=!1,this._cameraUnderground=!1;let n=e.mapProjection;this._maxCoord=n.project(new Ae(Math.PI,D.PI_OVER_TWO)),this._rotateFactor=void 0,this._rotateRateRangeAdjustment=void 0,this._maximumRotateRate=1.77,this._minimumRotateRate=1/5e3,this._minimumZoomRate=20,this._maximumZoomRate=5906376272e3,this._minimumUndergroundPickDistance=2e3,this._maximumUndergroundPickDistance=1e4}function SCt(e,t){if(e<0)return 0;let n=(1-t)*25;return Math.exp(-n*e)}function wCt(e){return k.equalsEpsilon(e.startPosition,e.endPosition,D.EPSILON14)}var BCt=.4;function DCt(e,t,n,i,o,r,s){let a=r[s];l(a)||(a=r[s]={startPosition:new k,endPosition:new k,motion:new k,inertiaEnabled:!0});let c=e.getButtonPressTime(t,n),u=e.getButtonReleaseTime(t,n),f=c&&u&&(u.getTime()-c.getTime())/1e3,A=u&&(new Date().getTime()-u.getTime())/1e3;if(c&&u&&f<BCt){let g=SCt(A,i),m=e.getLastMovement(t,n);if(!l(m)||wCt(m)||!a.inertiaEnabled||(a.motion.x=(m.endPosition.x-m.startPosition.x)*.5,a.motion.y=(m.endPosition.y-m.startPosition.y)*.5,a.startPosition=k.clone(m.startPosition,a.startPosition),a.endPosition=k.multiplyByScalar(a.motion,g,a.endPosition),a.endPosition=k.add(a.startPosition,a.endPosition,a.endPosition),isNaN(a.endPosition.x)||isNaN(a.endPosition.y)||k.distance(a.startPosition,a.endPosition)<.5))return;if(!e.isButtonDown(t,n)){let _=e.getStartMousePosition(t,n);o(r,_,a)}}}function vCt(e,t){if(l(t)){let n=e[t];l(n)&&(n.inertiaEnabled=!0);let i=e._inertiaDisablers[t];if(l(i)){let o=i.length;for(let r=0;r<o;++r)n=e[i[r]],l(n)&&(n.inertiaEnabled=!1)}}}var sIe=[];function bl(e,t,n,i,o,r){if(!l(n))return;let s=e._aggregator;Array.isArray(n)||(sIe[0]=n,n=sIe);let a=n.length;for(let c=0;c<a;++c){let u=n[c],f=l(u.eventType)?u.eventType:u,h=u.modifier,A=s.isMoving(f,h)&&s.getMovement(f,h),g=s.getStartMousePosition(f,h);e.enableInputs&&t&&(A?(i(e,g,A),vCt(e,r)):o<1&&DCt(s,f,h,o,i,e,r))}}var b8=new In,PCt=new d,RCt=new k,MCt=new d,NCt=new k,LCt=new d,OCt=new d,FCt=new d,QCt=new d,_Ie=new d,kCt=new d,UCt=new d,GCt=new d,zCt=new d,VCt=new d,HCt=new d,WCt=new d,jCt=new d,YCt=new d,qCt=new d,g0=new d,aIe=new d,cIe=new d,yJ={orientation:new pc};function wJ(e,t,n,i,o,r){let s=1;l(r)&&(s=D.clamp(Math.abs(r),.25,1));let a=n.endPosition.y-n.startPosition.y,u=a>0?e.minimumZoomDistance*s:0,f=e.maximumZoomDistance,h=o-u,A=i*h;A=D.clamp(A,e._minimumZoomRate,e._maximumZoomRate);let g=a/e._scene.canvas.clientHeight;g=Math.min(g,e.maximumMovementRatio);let m=A*g;if(e.enableCollisionDetection||e.minimumZoomDistance===0||!l(e._globe)){if(m>0&&Math.abs(o-u)<1||m<0&&Math.abs(o-f)<1)return;o-m<u?m=o-u-1:o-m>f&&(m=o-f)}let _=e._scene,y=_.camera,C=_.mode,E=yJ.orientation;E.heading=y.heading,E.pitch=y.pitch,E.roll=y.roll;let I=n.inertiaEnabled??k.equals(t,e._zoomMouseStart),b=e._zoomingOnVector,S=e._rotatingZoom,B;if(I||(e._zoomMouseStart=k.clone(t,e._zoomMouseStart),l(e._globe)&&C===ie.SCENE2D?(B=y.getPickRay(t,b8).origin,B=d.fromElements(B.y,B.z,B.x)):l(e._globe)&&(B=tg(e,t,PCt)),l(B)?(e._useZoomWorldPosition=!0,e._zoomWorldPosition=d.clone(B,e._zoomWorldPosition)):e._useZoomWorldPosition=!1,b=e._zoomingOnVector=!1,S=e._rotatingZoom=!1,e._zoomingUnderground=e._cameraUnderground),!e._useZoomWorldPosition){y.zoomIn(m);return}let v=C===ie.COLUMBUS_VIEW;if(y.positionCartographic.height<2e6&&(S=!0),!I||S){if(C===ie.SCENE2D){let P=e._zoomWorldPosition,N=y.position;if(!d.equals(P,N)&&y.positionCartographic.height<e._maxCoord.x*2){let L=y.position.x,p=d.subtract(P,N,MCt);d.normalize(p,p);let x=d.distance(P,N)*m/(y.getMagnitude()*.5);y.move(p,x*.5),(y.position.x<0&&L>0||y.position.x>0&&L<0)&&(B=y.getPickRay(t,b8).origin,B=d.fromElements(B.y,B.z,B.x),e._zoomWorldPosition=d.clone(B,e._zoomWorldPosition))}}else if(C===ie.SCENE3D){let P=d.normalize(y.position,_Ie);if(e._cameraUnderground||e._zoomingUnderground||y.positionCartographic.height<3e3&&Math.abs(d.dot(y.direction,P))<.6)v=!0;else{let N=_.canvas,L=NCt;L.x=N.clientWidth/2,L.y=N.clientHeight/2;let p=tg(e,L,LCt);if(!l(p))v=!0;else if(y.positionCartographic.height<1e6)if(d.dot(y.direction,P)>=-.5)v=!0;else{let x=UCt;d.clone(y.position,x);let T=e._zoomWorldPosition,w=kCt;if(w=d.normalize(T,w),d.dot(w,P)<0)return;let M=qCt,O=VCt;d.clone(y.direction,O),d.add(x,d.multiplyByScalar(O,1e3,g0),M);let U=HCt,Q=WCt;d.subtract(T,x,U),d.normalize(U,Q);let z=d.dot(P,Q);if(z>=0){e._zoomMouseStart.x=-1;return}let F=Math.acos(-z),H=d.magnitude(x),W=d.magnitude(T),Z=H-m,Y=d.magnitude(U),$=Math.asin(D.clamp(Y/W*Math.sin(F),-1,1)),X=Math.asin(D.clamp(Z/W*Math.sin(F),-1,1)),he=$-X+F,ge=GCt;d.normalize(x,ge);let fe=zCt;fe=d.cross(Q,ge,fe),fe=d.normalize(fe,fe),d.normalize(d.cross(ge,fe,g0),O),d.multiplyByScalar(d.normalize(M,g0),d.magnitude(M)-m,M),d.normalize(x,x),d.multiplyByScalar(x,Z,x);let ye=jCt;d.multiplyByScalar(d.add(d.multiplyByScalar(ge,Math.cos(he)-1,aIe),d.multiplyByScalar(O,Math.sin(he),cIe),g0),Z,ye),d.add(x,ye,x),d.normalize(M,ge),d.normalize(d.cross(ge,fe,g0),O);let Ie=YCt;d.multiplyByScalar(d.add(d.multiplyByScalar(ge,Math.cos(he)-1,aIe),d.multiplyByScalar(O,Math.sin(he),cIe),g0),d.magnitude(M),Ie),d.add(M,Ie,M),d.clone(x,y.position),d.normalize(d.subtract(M,x,g0),y.direction),d.clone(y.direction,y.direction),d.cross(y.direction,y.up,y.right),d.cross(y.right,y.direction,y.up),y.setView(yJ);return}else{let x=d.normalize(p,OCt),T=d.normalize(e._zoomWorldPosition,FCt),w=d.dot(T,x);if(w>0&&w<1){let M=D.acosClamped(w),O=d.cross(T,x,QCt),U=Math.abs(M)>D.toRadians(20)?y.positionCartographic.height*.75:y.positionCartographic.height-m,Q=m/U;y.rotate(O,M*Q)}}}}e._rotatingZoom=!v}if(!I&&v||b){let P,N=to.worldToWindowCoordinates(_,e._zoomWorldPosition,RCt);C!==ie.COLUMBUS_VIEW&&k.equals(t,e._zoomMouseStart)&&l(N)?P=y.getPickRay(N,b8):P=y.getPickRay(t,b8);let L=P.direction;(C===ie.COLUMBUS_VIEW||C===ie.SCENE2D)&&d.fromElements(L.y,L.z,L.x,L),y.move(L,m),e._zoomingOnVector=!0}else y.zoomIn(m);e._cameraUnderground||y.setView(yJ)}var KCt=new In,XCt=new In,JCt=new d;function ZCt(e,t,n){let o=e._scene.camera,r=o.getPickRay(n.startPosition,KCt).origin,s=o.getPickRay(n.endPosition,XCt).origin;r=d.fromElements(r.y,r.z,r.x,r),s=d.fromElements(s.y,s.z,s.x,s);let a=d.subtract(r,s,JCt),c=d.magnitude(a);c>0&&(d.normalize(a,a),o.move(a,c))}function lIe(e,t,n){l(n.distance)&&(n=n.distance);let o=e._scene.camera;wJ(e,t,n,e.zoomFactor,o.getMagnitude())}var $Ct=new k,eEt=new k;function uIe(e,t,n){if(l(n.angleAndHeight)){tEt(e,t,n.angleAndHeight);return}let i=e._scene,o=i.camera,r=i.canvas,s=r.clientWidth,a=r.clientHeight,c=$Ct;c.x=2/s*n.startPosition.x-1,c.y=2/a*(a-n.startPosition.y)-1,c=k.normalize(c,c);let u=eEt;u.x=2/s*n.endPosition.x-1,u.y=2/a*(a-n.endPosition.y)-1,u=k.normalize(u,u);let f=D.acosClamped(c.x);c.y<0&&(f=D.TWO_PI-f);let h=D.acosClamped(u.x);u.y<0&&(h=D.TWO_PI-h);let A=h-f;o.twistRight(A)}function tEt(e,t,n){let i=e._rotateFactor*e._rotateRateRangeAdjustment;i>e._maximumRotateRate&&(i=e._maximumRotateRate),i<e._minimumRotateRate&&(i=e._minimumRotateRate);let o=e._scene,r=o.camera,s=o.canvas,a=(n.endPosition.x-n.startPosition.x)/s.clientWidth;a=Math.min(a,e.maximumMovementRatio);let c=i*a*Math.PI*4;r.twistRight(c)}function nEt(e){let t=e._scene.mapMode2D===$u.ROTATE;R.equals(R.IDENTITY,e._scene.camera.transform)?(bl(e,e.enableTranslate,e.translateEventTypes,ZCt,e.inertiaTranslate,"_lastInertiaTranslateMovement"),bl(e,e.enableZoom,e.zoomEventTypes,lIe,e.inertiaZoom,"_lastInertiaZoomMovement"),t&&bl(e,e.enableRotate,e.tiltEventTypes,uIe,e.inertiaSpin,"_lastInertiaTiltMovement")):(bl(e,e.enableZoom,e.zoomEventTypes,lIe,e.inertiaZoom,"_lastInertiaZoomMovement"),t&&bl(e,e.enableRotate,e.translateEventTypes,uIe,e.inertiaSpin,"_lastInertiaSpinMovement"))}var yIe=new In,iEt=new d,oEt=new d;function tg(e,t,n){let i=e._scene,o=e._globe,r=i.camera,s;if(i.pickPositionSupported&&(s=i.pickPositionWorldCoordinates(t,iEt)),!l(o))return d.clone(s,n);let a=!e._cameraUnderground,c=r.getPickRay(t,yIe),u=o.pickWorldCoordinates(c,i,a,oEt),f=l(s)?d.distance(s,r.positionWC):Number.POSITIVE_INFINITY,h=l(u)?d.distance(u,r.positionWC):Number.POSITIVE_INFINITY;return f<h?d.clone(s,n):d.clone(u,n)}var rEt=new Ae;function P8(e){let t=e._ellipsoid,n=e._scene,i=n.camera,o=n.mode,r=0;if(o===ie.SCENE3D){let c=t.cartesianToCartographic(i.position,rEt);l(c)&&(r=c.height)}else r=i.position.z;let s=e._scene.globeHeight??0;return Math.abs(s-r)}var sEt=new d;function CIe(e,t){let n=t.origin,i=t.direction,o=P8(e),r=d.normalize(n,sEt),s=Math.abs(d.dot(r,i));return s=Math.max(s,.5)*2,o*s}function EIe(e,t,n,i){let o=d.distance(t.origin,n),r=P8(e),s=D.clamp(r*5,e._minimumUndergroundPickDistance,e._maximumUndergroundPickDistance);return o>s&&(o=Math.min(o,r/5),o=Math.max(o,100)),In.getPoint(t,o,i)}function IIe(e,t,n,i){let o;return l(n)?(o=d.distance(t.origin,n),o>e._maximumUndergroundPickDistance&&(o=P8(e))):o=P8(e),In.getPoint(t,o,i)}var aEt=new k;function xIe(e,t){let n=t.endPosition,i=k.subtract(t.endPosition,t.startPosition,aEt),o=e._strafeEndMousePosition;k.add(o,i,o),t.endPosition=o,BJ(e,t,e._strafeStartPosition),t.endPosition=n}var fIe=new In,cEt=new In,CJ=new d,lEt=new d,uEt=new d,fEt=new d,dEt=new mn(d.UNIT_X,0),hEt=new k,mEt=new k;function AEt(e,t,n){if(d.equals(t,e._translateMousePosition)||(e._looking=!1),d.equals(t,e._strafeMousePosition)||(e._strafing=!1),e._looking){rf(e,t,n);return}if(e._strafing){xIe(e,n);return}let o=e._scene.camera,r=e._cameraUnderground,s=k.clone(n.startPosition,hEt),a=k.clone(n.endPosition,mEt),c=o.getPickRay(s,fIe),u=d.clone(d.ZERO,fEt),f=d.UNIT_X,h;if(o.position.z<e._minimumPickingTerrainHeight&&(h=tg(e,s,CJ),l(h)&&(u.x=h.x)),r||u.x>o.position.z&&l(h)){let I=h;r&&(I=IIe(e,c,h,CJ)),k.clone(t,e._strafeMousePosition),k.clone(t,e._strafeEndMousePosition),d.clone(I,e._strafeStartPosition),e._strafing=!0,BJ(e,n,e._strafeStartPosition);return}let A=mn.fromPointNormal(u,f,dEt);c=o.getPickRay(s,fIe);let g=Ai.rayPlane(c,A,CJ),m=o.getPickRay(a,cEt),_=Ai.rayPlane(m,A,lEt);if(!l(g)||!l(_)){e._looking=!0,rf(e,t,n),k.clone(t,e._translateMousePosition);return}let y=d.subtract(g,_,uEt),C=y.x;y.x=y.y,y.y=y.z,y.z=C;let E=d.magnitude(y);E>D.EPSILON6&&(d.normalize(y,y),o.move(y,E))}var bIe=new k,w8=new In,B8=new d,pEt=new d,TIe=new R,gEt=new R,_Et=new d,yEt=new mn(d.UNIT_X,0),EJ=new d,bJ=new Ae,SIe=new R,CEt=new Le,EEt=new J,D8=new d;function IEt(e,t,n){if(l(n.angleAndHeight)&&(n=n.angleAndHeight),k.equals(t,e._tiltCenterMousePosition)||(e._tiltCVOffMap=!1,e._looking=!1),e._looking){rf(e,t,n);return}let o=e._scene.camera;e._tiltCVOffMap||!e.onMap()||Math.abs(o.position.z)>e._minimumPickingTerrainHeight?(e._tiltCVOffMap=!0,xEt(e,t,n)):bEt(e,t,n)}function xEt(e,t,n){let i=e._scene,o=i.camera,r=i.canvas,s=bIe;s.x=r.clientWidth/2,s.y=r.clientHeight/2;let a=o.getPickRay(s,w8),c=d.UNIT_X,u=a.origin,f=a.direction,h,A=d.dot(c,f);if(Math.abs(A)>D.EPSILON6&&(h=-d.dot(c,u)/A),!l(h)||h<=0){e._looking=!0,rf(e,t,n),k.clone(t,e._tiltCenterMousePosition);return}let g=d.multiplyByScalar(f,h,B8);d.add(u,g,g);let m=i.mapProjection,_=m.ellipsoid;d.fromElements(g.y,g.z,g.x,g);let y=m.unproject(g,bJ);_.cartographicToCartesian(y,g);let C=kt.eastNorthUpToFixedFrame(g,_,TIe),E=e._globe,I=e._ellipsoid;e._globe=void 0,e._ellipsoid=te.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let b=R.clone(o.transform,SIe);o._setTransform(C),of(e,t,n,d.UNIT_Z),o._setTransform(b),e._globe=E,e._ellipsoid=I;let S=I.maximumRadius;e._rotateFactor=1/S,e._rotateRateRangeAdjustment=S}function bEt(e,t,n){let i=e._scene,o=i.camera,r=e._cameraUnderground,s,a,c=d.UNIT_X;if(k.equals(t,e._tiltCenterMousePosition))s=d.clone(e._tiltCenter,B8);else{if(o.position.z<e._minimumPickingTerrainHeight&&(s=tg(e,t,B8)),!l(s)){a=o.getPickRay(t,w8);let p=a.origin,x=a.direction,T,w=d.dot(c,x);if(Math.abs(w)>D.EPSILON6&&(T=-d.dot(c,p)/w),!l(T)||T<=0){e._looking=!0,rf(e,t,n),k.clone(t,e._tiltCenterMousePosition);return}s=d.multiplyByScalar(x,T,B8),d.add(p,s,s)}r&&(l(a)||(a=o.getPickRay(t,w8)),EIe(e,a,s,s)),k.clone(t,e._tiltCenterMousePosition),d.clone(s,e._tiltCenter)}let u=i.canvas,f=bIe;f.x=u.clientWidth/2,f.y=e._tiltCenterMousePosition.y,a=o.getPickRay(f,w8);let h=d.clone(d.ZERO,_Et);h.x=s.x;let A=mn.fromPointNormal(h,c,yEt),g=Ai.rayPlane(a,A,pEt),m=o._projection,_=m.ellipsoid;d.fromElements(s.y,s.z,s.x,s);let y=m.unproject(s,bJ);_.cartographicToCartesian(y,s);let C=kt.eastNorthUpToFixedFrame(s,_,TIe),E;l(g)?(d.fromElements(g.y,g.z,g.x,g),y=m.unproject(g,bJ),_.cartographicToCartesian(y,g),E=kt.eastNorthUpToFixedFrame(g,_,gEt)):E=C;let I=e._globe,b=e._ellipsoid;e._globe=void 0,e._ellipsoid=te.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let S=d.UNIT_Z,B=R.clone(o.transform,SIe);o._setTransform(C);let v=d.cross(d.UNIT_Z,d.normalize(o.position,EJ),EJ),P=d.dot(o.right,v);if(of(e,t,n,S,!1,!0),o._setTransform(E),P<0){let p=n.startPosition.y-n.endPosition.y;(r&&p<0||!r&&p>0)&&(S=void 0);let x=o.constrainedAxis;o.constrainedAxis=void 0,of(e,t,n,S,!0,!1),o.constrainedAxis=x}else of(e,t,n,S,!0,!1);if(l(o.constrainedAxis)){let p=d.cross(o.direction,o.constrainedAxis,D8);d.equalsEpsilon(p,d.ZERO,D.EPSILON6)||(d.dot(p,o.right)<0&&d.negate(p,p),d.cross(p,o.direction,o.up),d.cross(o.direction,o.up,o.right),d.normalize(o.up,o.up),d.normalize(o.right,o.right))}o._setTransform(B),e._globe=I,e._ellipsoid=b;let N=b.maximumRadius;e._rotateFactor=1/N,e._rotateRateRangeAdjustment=N;let L=d.clone(o.positionWC,EJ);if(e.enableCollisionDetection&&PJ(e,!0),!d.equals(o.positionWC,L)){o._setTransform(E),o.worldToCameraCoordinatesPoint(L,L);let p=d.magnitudeSquared(L);d.magnitudeSquared(o.position)>p&&(d.normalize(o.position,o.position),d.multiplyByScalar(o.position,Math.sqrt(p),o.position));let x=d.angleBetween(L,o.position),T=d.cross(L,o.position,L);d.normalize(T,T);let w=Le.fromAxisAngle(T,x,CEt),M=J.fromQuaternion(w,EEt);J.multiplyByVector(M,o.direction,o.direction),J.multiplyByVector(M,o.up,o.up),d.cross(o.direction,o.up,o.right),d.cross(o.right,o.direction,o.up),o._setTransform(B)}}var wIe=new k,BIe=new In,DIe=new d;function TEt(e,t,n){l(n.distance)&&(n=n.distance);let i=e._scene,o=i.camera,r=i.canvas,s=e._cameraUnderground,a;s?a=t:(a=wIe,a.x=r.clientWidth/2,a.y=r.clientHeight/2);let c=o.getPickRay(a,BIe),u=c.origin,f=c.direction,h=o.position.z,A;h<e._minimumPickingTerrainHeight&&(A=tg(e,a,DIe));let g;if(l(A)&&(g=d.distance(u,A)),s){let m=CIe(e,c,h);l(g)?g=Math.min(g,m):g=m}if(!l(g)){let m=d.UNIT_X;g=-d.dot(m,u)/d.dot(m,f)}wJ(e,t,n,e.zoomFactor,g)}function SEt(e){let n=e._scene.camera;if(!R.equals(R.IDENTITY,n.transform))bl(e,e.enableRotate,e.rotateEventTypes,of,e.inertiaSpin,"_lastInertiaSpinMovement"),bl(e,e.enableZoom,e.zoomEventTypes,PIe,e.inertiaZoom,"_lastInertiaZoomMovement");else{let i=e._tweens;if(e._aggregator.anyButtonDown&&i.removeAll(),bl(e,e.enableTilt,e.tiltEventTypes,IEt,e.inertiaSpin,"_lastInertiaTiltMovement"),bl(e,e.enableTranslate,e.translateEventTypes,AEt,e.inertiaTranslate,"_lastInertiaTranslateMovement"),bl(e,e.enableZoom,e.zoomEventTypes,TEt,e.inertiaZoom,"_lastInertiaZoomMovement"),bl(e,e.enableLook,e.lookEventTypes,rf),!e._aggregator.anyButtonDown&&!i.contains(e._tween)){let o=n.createCorrectPositionTween(e.bounceAnimationTime);l(o)&&(e._tween=i.add(o))}i.update()}}var wEt=new In,BEt=new mn(d.UNIT_X,0),DEt=new d,vEt=new d;function BJ(e,t,n){let i=e._scene,o=i.camera,r=o.getPickRay(t.endPosition,wEt),s=d.clone(o.direction,vEt);i.mode===ie.COLUMBUS_VIEW&&d.fromElements(s.z,s.x,s.y,s);let a=mn.fromPointNormal(n,s,BEt),c=Ai.rayPlane(r,a,DEt);l(c)&&(s=d.subtract(n,c,s),i.mode===ie.COLUMBUS_VIEW&&d.fromElements(s.y,s.z,s.x,s),d.add(o.position,s,o.position))}var dIe=new d,vIe=new Ae,TJ=new d,SJ=new te,PEt=new d,REt=new d,MEt=new d;function NEt(e,t,n){let o=e._scene.camera,r=e._cameraUnderground,s=e._ellipsoid;if(!R.equals(o.transform,R.IDENTITY)){of(e,t,n);return}let a,c,u=s.geodeticSurfaceNormal(o.position,PEt);if(k.equals(t,e._rotateMousePosition)){if(e._looking)rf(e,t,n,u);else if(e._rotating)of(e,t,n);else if(e._strafing)xIe(e,n);else{if(d.magnitude(o.position)<d.magnitude(e._rotateStartPosition))return;a=d.magnitude(e._rotateStartPosition),c=TJ,c.x=c.y=c.z=a,s=te.fromCartesian3(c,SJ),xJ(e,t,n,s)}return}e._looking=!1,e._rotating=!1,e._strafing=!1;let f=s.cartesianToCartographic(o.positionWC,vIe).height,h=e._globe;if(l(h)&&f<e._minimumPickingTerrainHeight){let A=tg(e,n.startPosition,MEt);if(l(A)){let g=!1,m=o.getPickRay(n.startPosition,yIe);if(r)g=!0,IIe(e,m,A,A);else{let _=s.geodeticSurfaceNormal(A,REt);Math.abs(d.dot(m.direction,_))<.05?g=!0:g=d.magnitude(o.position)<d.magnitude(A)}g?(k.clone(t,e._strafeEndMousePosition),d.clone(A,e._strafeStartPosition),e._strafing=!0,BJ(e,n,e._strafeStartPosition)):(a=d.magnitude(A),c=TJ,c.x=c.y=c.z=a,s=te.fromCartesian3(c,SJ),xJ(e,t,n,s),d.clone(A,e._rotateStartPosition))}else e._looking=!0,rf(e,t,n,u)}else l(o.pickEllipsoid(n.startPosition,e._ellipsoid,dIe))?(xJ(e,t,n,e._ellipsoid),d.clone(dIe,e._rotateStartPosition)):f>e._minimumTrackBallHeight?(e._rotating=!0,of(e,t,n)):(e._looking=!0,rf(e,t,n,u));k.clone(t,e._rotateMousePosition)}function of(e,t,n,i,o,r){o=o??!1,r=r??!1;let s=e._scene,a=s.camera,c=s.canvas,u=a.constrainedAxis;l(i)&&(a.constrainedAxis=i);let f=d.magnitude(a.position),h=e._rotateFactor*(f-e._rotateRateRangeAdjustment);h>e._maximumRotateRate&&(h=e._maximumRotateRate),h<e._minimumRotateRate&&(h=e._minimumRotateRate);let A=(n.startPosition.x-n.endPosition.x)/c.clientWidth,g=(n.startPosition.y-n.endPosition.y)/c.clientHeight;A=Math.min(A,e.maximumMovementRatio),g=Math.min(g,e.maximumMovementRatio);let m=h*A*Math.PI*2,_=h*g*Math.PI;if(l(i)&&l(e.maximumTiltAngle)){let y=e.maximumTiltAngle,C=d.dot(a.direction,i),E=Math.PI-Math.acos(C)+_;E>y&&(_-=E-y)}o||a.rotateRight(m),r||a.rotateUp(_),a.constrainedAxis=u}var IJ=se.clone(se.UNIT_W),hIe=se.clone(se.UNIT_W),T8=new d,JT=new d,S8=new d,mIe=new d,LEt=new k,OEt=new k,FEt=new k,QEt=new k,kEt=new In;function xJ(e,t,n,i){let o=e._scene,r=o.camera,s=k.clone(n.startPosition,LEt),a=k.clone(n.endPosition,OEt),c=i.cartesianToCartographic(r.positionWC,vIe).height,u,f;if(!n.inertiaEnabled&&c<e._minimumPickingTerrainHeight&&(u=d.clone(e._panLastWorldPosition,IJ),!l(e._globe)&&!k.equalsEpsilon(s,e._panLastMousePosition)&&(u=tg(e,s,IJ)),!l(e._globe)&&l(u))){let h=d.subtract(u,r.positionWC,JT),A=d.multiplyByScalar(r.directionWC,d.dot(r.directionWC,h),JT),g=d.magnitude(A),m=r.frustum.getPixelDimensions(o.drawingBufferWidth,o.drawingBufferHeight,g,o.pixelRatio,QEt),_=k.subtract(a,s,FEt),y=d.multiplyByScalar(r.rightWC,_.x*m.x,JT),C=d.normalize(r.positionWC,_Ie),E=r.getPickRay(a,kEt).direction,I=d.subtract(E,d.projectVector(E,r.rightWC,S8),S8),b=d.angleBetween(I,r.directionWC),S=1;l(r.frustum.fov)&&(S=Math.max(Math.tan(b),.1));let B=Math.abs(d.dot(r.directionWC,C)),v=-_.y*m.y*2/Math.sqrt(S)*(1-B),P=d.multiplyByScalar(E,v,S8);B=Math.abs(d.dot(r.upWC,C));let N=d.multiplyByScalar(r.upWC,-_.y*(1-B)*m.y,mIe);f=d.add(u,y,hIe),f=d.add(f,P,f),f=d.add(f,N,f),d.clone(f,e._panLastWorldPosition),k.clone(a,e._panLastMousePosition)}if((!l(u)||!l(f))&&(u=r.pickEllipsoid(s,i,IJ),f=r.pickEllipsoid(a,i,hIe)),!l(u)||!l(f)){e._rotating=!0,of(e,t,n);return}if(u=r.worldToCameraCoordinates(u,u),f=r.worldToCameraCoordinates(f,f),l(r.constrainedAxis)){let h=r.constrainedAxis,A=d.mostOrthogonalAxis(h,T8);d.cross(A,h,A),d.normalize(A,A);let g=d.cross(h,A,JT),m=d.magnitude(u),_=d.dot(h,u),y=Math.acos(_/m),C=d.multiplyByScalar(h,_,S8);d.subtract(u,C,C),d.normalize(C,C);let E=d.magnitude(f),I=d.dot(h,f),b=Math.acos(I/E),S=d.multiplyByScalar(h,I,mIe);d.subtract(f,S,S),d.normalize(S,S);let B=Math.acos(d.dot(C,A));d.dot(C,g)<0&&(B=D.TWO_PI-B);let v=Math.acos(d.dot(S,A));d.dot(S,g)<0&&(v=D.TWO_PI-v);let P=B-v,N;d.equalsEpsilon(h,r.position,D.EPSILON2)?N=r.right:N=d.cross(h,r.position,T8);let L=d.cross(h,N,T8),p=d.dot(L,d.subtract(u,h,JT)),x=d.dot(L,d.subtract(f,h,JT)),T;p>0&&x>0?T=b-y:p>0&&x<=0?d.dot(r.position,h)>0?T=-y-b:T=y+b:T=y-b,r.rotateRight(P),r.rotateUp(T)}else{d.normalize(u,u),d.normalize(f,f);let h=d.dot(u,f),A=d.cross(u,f,T8);if(h<1&&!d.equalsEpsilon(A,d.ZERO,D.EPSILON14)){let g=Math.acos(h);r.rotate(A,g)}}}var UEt=new d,GEt=new Ae,AIe=0;function PIe(e,t,n){l(n.distance)&&(n=n.distance);let i=n.inertiaEnabled,o=e._ellipsoid,r=e._scene,s=r.camera,a=r.canvas,c=e._cameraUnderground,u;c?u=t:(u=wIe,u.x=a.clientWidth/2,u.y=a.clientHeight/2);let f=s.getPickRay(u,BIe),h,A=o.cartesianToCartographic(s.position,GEt).height,g=Math.abs(AIe)<e.minimumPickingTerrainDistanceWithInertia;(i?g:A<e._minimumPickingTerrainHeight)&&(h=tg(e,u,DIe));let _;if(l(h)&&(_=d.distance(f.origin,h),AIe=_),c){let C=CIe(e,f,A);l(_)?_=Math.min(_,C):_=C}l(_)||(_=A);let y=d.normalize(s.position,UEt);wJ(e,t,n,e.zoomFactor,_,d.dot(y,s.direction))}var RIe=new k,v8=new In,wP=new d,zEt=new d,MIe=new R,VEt=new R,NIe=new R,HEt=new Le,WEt=new J,DJ=new Ae,vJ=new d;function jEt(e,t,n){let o=e._scene.camera;if(!R.equals(o.transform,R.IDENTITY))return;if(l(n.angleAndHeight)&&(n=n.angleAndHeight),k.equals(t,e._tiltCenterMousePosition)||(e._tiltOnEllipsoid=!1,e._looking=!1),e._looking){let a=e._ellipsoid.geodeticSurfaceNormal(o.position,vJ);rf(e,t,n,a);return}let s=e._ellipsoid.cartesianToCartographic(o.position,DJ);e._tiltOnEllipsoid||s.height>e._minimumCollisionTerrainHeight?(e._tiltOnEllipsoid=!0,qEt(e,t,n)):KEt(e,t,n)}var YEt=new Ae;function qEt(e,t,n){let i=e._ellipsoid,o=e._scene,r=o.camera,s=e.minimumZoomDistance*.25,a=i.cartesianToCartographic(r.positionWC,YEt).height;if(a-s-1<D.EPSILON3&&n.endPosition.y-n.startPosition.y<0)return;let c=o.canvas,u=RIe;u.x=c.clientWidth/2,u.y=c.clientHeight/2;let f=r.getPickRay(u,v8),h,A=Ai.rayEllipsoid(f,i);if(l(A))h=In.getPoint(f,A.start,wP);else if(a>e._minimumTrackBallHeight){let E=Ai.grazingAltitudeLocation(f,i);if(!l(E))return;let I=i.cartesianToCartographic(E,DJ);I.height=0,h=i.cartographicToCartesian(I,wP)}else{e._looking=!0;let E=e._ellipsoid.geodeticSurfaceNormal(r.position,vJ);rf(e,t,n,E),k.clone(t,e._tiltCenterMousePosition);return}let g=kt.eastNorthUpToFixedFrame(h,i,MIe),m=e._globe,_=e._ellipsoid;e._globe=void 0,e._ellipsoid=te.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let y=R.clone(r.transform,NIe);r._setTransform(g),of(e,t,n,d.UNIT_Z),r._setTransform(y),e._globe=m,e._ellipsoid=_;let C=_.maximumRadius;e._rotateFactor=1/C,e._rotateRateRangeAdjustment=C}function KEt(e,t,n){let i=e._ellipsoid,o=e._scene,r=o.camera,s=e._cameraUnderground,a,c,u;if(k.equals(t,e._tiltCenterMousePosition))a=d.clone(e._tiltCenter,wP);else{if(a=tg(e,t,wP),!l(a)){if(c=r.getPickRay(t,v8),u=Ai.rayEllipsoid(c,i),!l(u)){if(i.cartesianToCartographic(r.position,DJ).height<=e._minimumTrackBallHeight){e._looking=!0;let x=e._ellipsoid.geodeticSurfaceNormal(r.position,vJ);rf(e,t,n,x),k.clone(t,e._tiltCenterMousePosition)}return}a=In.getPoint(c,u.start,wP)}s&&(l(c)||(c=r.getPickRay(t,v8)),EIe(e,c,a,a)),k.clone(t,e._tiltCenterMousePosition),d.clone(a,e._tiltCenter)}let f=o.canvas,h=RIe;h.x=f.clientWidth/2,h.y=e._tiltCenterMousePosition.y,c=r.getPickRay(h,v8);let A=d.magnitude(a),g=d.fromElements(A,A,A,TJ),m=te.fromCartesian3(g,SJ);if(u=Ai.rayEllipsoid(c,m),!l(u))return;let _=d.magnitude(c.origin)>A?u.start:u.stop,y=In.getPoint(c,_,zEt),C=kt.eastNorthUpToFixedFrame(a,i,MIe),E=kt.eastNorthUpToFixedFrame(y,m,VEt),I=e._globe,b=e._ellipsoid;e._globe=void 0,e._ellipsoid=te.UNIT_SPHERE,e._rotateFactor=1,e._rotateRateRangeAdjustment=1;let S=d.UNIT_Z,B=R.clone(r.transform,NIe);r._setTransform(E);let v=d.cross(y,r.positionWC,D8);if(d.dot(r.rightWC,v)<0){let p=n.startPosition.y-n.endPosition.y;(s&&p<0||!s&&p>0)&&(S=void 0);let x=r.constrainedAxis;r.constrainedAxis=void 0,of(e,t,n,S,!0,!1),r.constrainedAxis=x}else of(e,t,n,S,!0,!1);if(r._setTransform(C),of(e,t,n,S,!1,!0),l(r.constrainedAxis)){let p=d.cross(r.direction,r.constrainedAxis,D8);d.equalsEpsilon(p,d.ZERO,D.EPSILON6)||(d.dot(p,r.right)<0&&d.negate(p,p),d.cross(p,r.direction,r.up),d.cross(r.direction,r.up,r.right),d.normalize(r.up,r.up),d.normalize(r.right,r.right))}r._setTransform(B),e._globe=I,e._ellipsoid=b;let N=b.maximumRadius;e._rotateFactor=1/N,e._rotateRateRangeAdjustment=N;let L=d.clone(r.positionWC,D8);if(e.enableCollisionDetection&&PJ(e,!0),!d.equals(r.positionWC,L)){r._setTransform(E),r.worldToCameraCoordinatesPoint(L,L);let p=d.magnitudeSquared(L);d.magnitudeSquared(r.position)>p&&(d.normalize(r.position,r.position),d.multiplyByScalar(r.position,Math.sqrt(p),r.position));let x=d.angleBetween(L,r.position),T=d.cross(L,r.position,L);d.normalize(T,T);let w=Le.fromAxisAngle(T,x,HEt),M=J.fromQuaternion(w,WEt);J.multiplyByVector(M,r.direction,r.direction),J.multiplyByVector(M,r.up,r.up),d.cross(r.direction,r.up,r.right),d.cross(r.right,r.direction,r.up),r._setTransform(B)}}var XEt=new k,JEt=new k,pIe=new In,gIe=new In,ZEt=new d,$Et=new d;function rf(e,t,n,i){let r=e._scene.camera,s=XEt;s.x=n.startPosition.x,s.y=0;let a=JEt;a.x=n.endPosition.x,a.y=0;let c=r.getPickRay(s,pIe),u=r.getPickRay(a,gIe),f=0,h,A;r.frustum instanceof An?(h=c.origin,A=u.origin,d.add(r.direction,h,h),d.add(r.direction,A,A),d.subtract(h,r.position,h),d.subtract(A,r.position,A),d.normalize(h,h),d.normalize(A,A)):(h=c.direction,A=u.direction);let g=d.dot(h,A);g<1&&(f=Math.acos(g)),f=n.startPosition.x>n.endPosition.x?-f:f;let m=e._horizontalRotationAxis;if(l(i)?r.look(i,-f):l(m)?r.look(m,-f):r.lookLeft(f),s.x=0,s.y=n.startPosition.y,a.x=0,a.y=n.endPosition.y,c=r.getPickRay(s,pIe),u=r.getPickRay(a,gIe),f=0,r.frustum instanceof An?(h=c.origin,A=u.origin,d.add(r.direction,h,h),d.add(r.direction,A,A),d.subtract(h,r.position,h),d.subtract(A,r.position,A),d.normalize(h,h),d.normalize(A,A)):(h=c.direction,A=u.direction),g=d.dot(h,A),g<1&&(f=Math.acos(g)),f=n.startPosition.y>n.endPosition.y?-f:f,i=i??m,l(i)){let _=r.direction,y=d.negate(i,ZEt),C=d.equalsEpsilon(_,i,D.EPSILON2),E=d.equalsEpsilon(_,y,D.EPSILON2);if(!C&&!E){g=d.dot(_,i);let I=D.acosClamped(g);f>0&&f>I&&(f=I-D.EPSILON4),g=d.dot(_,y),I=D.acosClamped(g),f<0&&-f>I&&(f=-I+D.EPSILON4);let b=d.cross(i,_,$Et);r.look(b,f)}else(C&&f<0||E&&f>0)&&r.look(r.right,-f)}else r.lookUp(f)}function e0t(e){bl(e,e.enableRotate,e.rotateEventTypes,NEt,e.inertiaSpin,"_lastInertiaSpinMovement"),bl(e,e.enableZoom,e.zoomEventTypes,PIe,e.inertiaZoom,"_lastInertiaZoomMovement"),bl(e,e.enableTilt,e.tiltEventTypes,jEt,e.inertiaSpin,"_lastInertiaTiltMovement"),bl(e,e.enableLook,e.lookEventTypes,rf)}var t0t=new R,n0t=new Ae;function PJ(e,t){e._adjustedHeightForTerrain=!0;let n=e._scene,i=n.mode;if(i===ie.SCENE2D||i===ie.MORPHING)return;let o=n.camera,r=n.ellipsoid??te.WGS84,s=n.mapProjection,a,c;R.equals(o.transform,R.IDENTITY)||(a=R.clone(o.transform,t0t),c=d.magnitude(o.position),o._setTransform(R.IDENTITY));let u=n0t;i===ie.SCENE3D?r.cartesianToCartographic(o.position,u):s.unproject(o.position,u);let f=!1;if(u.height<e._minimumCollisionTerrainHeight){let h=e._scene.globeHeight;if(l(h)){let A=h+e.minimumZoomDistance,g=h-e._lastGlobeHeight,m=g/e._lastGlobeHeight;u.height<A&&(t||Math.abs(m)<=.1)&&(u.height=A,i===ie.SCENE3D?r.cartographicToCartesian(u,o.position):s.project(u,o.position),f=!0),t||Math.abs(m)<=.1?e._lastGlobeHeight=h:e._lastGlobeHeight+=g*.1}}l(a)&&(o._setTransform(a),f&&(d.normalize(o.position,o.position),d.negate(o.position,o.direction),d.multiplyByScalar(o.position,Math.max(c,e.minimumZoomDistance),o.position),d.normalize(o.direction,o.direction),d.cross(o.direction,o.up,o.right),d.cross(o.right,o.direction,o.up)))}BP.prototype.onMap=function(){let e=this._scene,t=e.mode,n=e.camera;return t===ie.COLUMBUS_VIEW?Math.abs(n.position.x)-this._maxCoord.x<0&&Math.abs(n.position.y)-this._maxCoord.y<0:!0};var i0t=new d,o0t=new d;BP.prototype.update=function(){let e=this._scene,{camera:t,globe:n,mode:i}=e;R.equals(t.transform,R.IDENTITY)?(this._globe=n,this._ellipsoid=e.ellipsoid??te.default):(this._globe=void 0,this._ellipsoid=te.UNIT_SPHERE);let{verticalExaggeration:o,verticalExaggerationRelativeHeight:r}=e;this._minimumCollisionTerrainHeight=Yr.getHeight(this.minimumCollisionTerrainHeight,o,r),this._minimumPickingTerrainHeight=Yr.getHeight(this.minimumPickingTerrainHeight,o,r),this._minimumTrackBallHeight=Yr.getHeight(this.minimumTrackBallHeight,o,r),this._cameraUnderground=e.cameraUnderground&&l(this._globe);let s=this._ellipsoid.maximumRadius;this._rotateFactor=1/s,this._rotateRateRangeAdjustment=s,this._adjustedHeightForTerrain=!1;let a=d.clone(t.positionWC,i0t),c=d.clone(t.directionWC,o0t);if(i===ie.SCENE2D?nEt(this):i===ie.COLUMBUS_VIEW?(this._horizontalRotationAxis=d.UNIT_Z,SEt(this)):i===ie.SCENE3D&&(this._horizontalRotationAxis=void 0,e0t(this)),this.enableCollisionDetection&&!this._adjustedHeightForTerrain){let u=!d.equals(a,t.positionWC)||!d.equals(c,t.directionWC);PJ(this,u)}this._aggregator.reset()};BP.prototype.isDestroyed=function(){return!1};BP.prototype.destroy=function(){return this._tweens.removeAll(),this._aggregator=this._aggregator&&this._aggregator.destroy(),ue(this)};var R8=BP;var M8=`uniform sampler2D colorTexture; +uniform sampler2D colorTexture2; + +uniform vec2 center; +uniform float radius; + +in vec2 v_textureCoordinates; + +void main() +{ + vec4 color0 = texture(colorTexture, v_textureCoordinates); + vec4 color1 = texture(colorTexture2, v_textureCoordinates); + + float x = length(gl_FragCoord.xy - center) / radius; + float t = smoothstep(0.5, 0.8, x); + out_FragColor = mix(color0 + color1, color1, t); +} +`;var N8=`uniform sampler2D colorTexture; + +uniform float avgLuminance; +uniform float threshold; +uniform float offset; + +in vec2 v_textureCoordinates; + +float key(float avg) +{ + float guess = 1.5 - (1.5 / (avg * 0.1 + 1.0)); + return max(0.0, guess) + 0.1; +} + +// See section 9. "The bright-pass filter" of Realtime HDR Rendering +// http://www.cg.tuwien.ac.at/research/publications/2007/Luksch_2007_RHR/Luksch_2007_RHR-RealtimeHDR%20.pdf + +void main() +{ + vec4 color = texture(colorTexture, v_textureCoordinates); + vec3 xyz = czm_RGBToXYZ(color.rgb); + float luminance = xyz.r; + + float scaledLum = key(avgLuminance) * luminance / avgLuminance; + float brightLum = max(scaledLum - threshold, 0.0); + float brightness = brightLum / (offset + brightLum); + + xyz.r = brightness; + out_FragColor = vec4(czm_XYZToRGB(xyz), 1.0); +} +`;function ng(){this._sceneFramebuffer=new HT;let e=.125,t=new Array(6);t[0]=new So({fragmentShader:ef,textureScale:e,forcePowerOfTwo:!0,sampleMode:_d.LINEAR});let n=t[1]=new So({fragmentShader:N8,uniforms:{avgLuminance:.5,threshold:.25,offset:.1},textureScale:e,forcePowerOfTwo:!0}),i=this;this._delta=1,this._sigma=2,this._blurStep=new k,t[2]=new So({fragmentShader:u0,uniforms:{step:function(){return i._blurStep.x=i._blurStep.y=1/n.outputTexture.width,i._blurStep},delta:function(){return i._delta},sigma:function(){return i._sigma},direction:0},textureScale:e,forcePowerOfTwo:!0}),t[3]=new So({fragmentShader:u0,uniforms:{step:function(){return i._blurStep.x=i._blurStep.y=1/n.outputTexture.width,i._blurStep},delta:function(){return i._delta},sigma:function(){return i._sigma},direction:1},textureScale:e,forcePowerOfTwo:!0}),t[4]=new So({fragmentShader:ef,sampleMode:_d.LINEAR}),this._uCenter=new k,this._uRadius=void 0,t[5]=new So({fragmentShader:M8,uniforms:{center:function(){return i._uCenter},radius:function(){return i._uRadius},colorTexture2:function(){return i._sceneFramebuffer.framebuffer.getColorTexture(0)}}}),this._stages=new tf({stages:t});let o=new qT(this),r=t.length;for(let s=0;s<r;++s)t[s]._textureCache=o;this._textureCache=o,this.length=t.length}ng.prototype.get=function(e){return this._stages.get(e)};ng.prototype.getStageByName=function(e){let t=this._stages.length;for(let n=0;n<t;++n){let i=this._stages.get(n);if(i.name===e)return i}};var r0t=new se,LIe=new k,s0t=new k,OIe=new R;function a0t(e,t,n){let i=t.uniformState,o=i.sunPositionWC,r=i.view,s=i.viewProjection,a=i.projection,c=R.computeViewportTransformation(n,0,1,OIe),u=R.multiplyByPoint(r,o,r0t),f=kt.pointToGLWindowCoordinates(s,c,o,LIe);u.x+=D.SOLAR_RADIUS;let h=kt.pointToGLWindowCoordinates(a,c,u,u),A=k.magnitude(k.subtract(h,f,h))*30*2,g=s0t;g.x=A,g.y=A,e._uCenter=k.clone(f,e._uCenter),e._uRadius=Math.max(g.x,g.y)*.15;let m=t.drawingBufferWidth,_=t.drawingBufferHeight,y=e._stages,C=y.get(0),E=C.outputTexture.width,I=C.outputTexture.height,b=new Xe;b.width=E,b.height=I,c=R.computeViewportTransformation(b,0,1,OIe),f=kt.pointToGLWindowCoordinates(s,c,o,LIe),g.x*=E/m,g.y*=I/_;let S=C.scissorRectangle;S.x=Math.max(f.x-g.x*.5,0),S.y=Math.max(f.y-g.y*.5,0),S.width=Math.min(g.x,m),S.height=Math.min(g.y,_);for(let B=1;B<4;++B)Xe.clone(S,y.get(B).scissorRectangle)}ng.prototype.clear=function(e,t,n){this._sceneFramebuffer.clear(e,t,n),this._textureCache.clear(e)};ng.prototype.update=function(e){let t=e.context,n=e.viewport,i=this._sceneFramebuffer;i.update(t,n);let o=i.framebuffer;return this._textureCache.update(t),this._stages.update(t,!1),a0t(this,t,n),o};ng.prototype.execute=function(e){let t=this._sceneFramebuffer.framebuffer.getColorTexture(0),n=this._stages,i=n.length;n.get(0).execute(e,t);for(let o=1;o<i;++o)n.get(o).execute(e,n.get(o-1).outputTexture)};ng.prototype.copy=function(e,t){if(!l(this._copyColorCommand)){let n=this;this._copyColorCommand=e.createViewportQuadCommand(ef,{uniformMap:{colorTexture:function(){return n._stages.get(n._stages.length-1).outputTexture}},owner:this})}this._copyColorCommand.framebuffer=t,this._copyColorCommand.execute(e)};ng.prototype.isDestroyed=function(){return!1};ng.prototype.destroy=function(){return this._textureCache.destroy(),this._stages.destroy(),ue(this)};var L8=ng;function FIe(){this._cachedShowFrustumsShaders={}}function c0t(e){let t={},n=e.vertexAttributes;for(let i in n)n.hasOwnProperty(i)&&(t[i]=n[i].index);return t}function l0t(e,t){let n=e.context,i=t,o=i.fragmentShaderSource.clone(),r=[];o.sources=o.sources.map(function(f){f=We.replaceMain(f,"czm_Debug_main");let h=/out_FragData_(\d+)/g,A;for(;(A=h.exec(f))!==null;)r.indexOf(A[1])===-1&&r.push(A[1]);return f});let s=r.length,a="";a+=`uniform vec3 debugShowCommandsColor; +`,a+=`uniform vec3 debugShowFrustumsColor; +`,a+=`void main() +{ + czm_Debug_main(); +`;let c;if(s>0)for(c=0;c<s;++c)a+=` out_FragData_${r[c]}.rgb *= debugShowCommandsColor; +`,a+=` out_FragData_${r[c]}.rgb *= debugShowFrustumsColor; +`;else a+=` out_FragColor.rgb *= debugShowCommandsColor; +`,a+=` out_FragColor.rgb *= debugShowFrustumsColor; +`;a+="}",o.sources.push(a);let u=c0t(i);return ln.fromCache({context:n,vertexShaderSource:i.vertexShaderSource,fragmentShaderSource:o,attributeLocations:u})}var DP=new G;function u0t(e,t){let n;return l(t.uniformMap)?n=t.uniformMap:n={},l(n.debugShowCommandsColor)||l(n.debugShowFrustumsColor)||(n.debugShowCommandsColor=function(){return e.debugShowCommands?(l(t._debugColor)||(t._debugColor=G.fromRandom()),t._debugColor):G.WHITE},n.debugShowFrustumsColor=function(){return e.debugShowFrustums?(DP.red=t.debugOverlappingFrustums&1?1:0,DP.green=t.debugOverlappingFrustums&2?1:0,DP.blue=t.debugOverlappingFrustums&4?1:0,DP.alpha=1,DP):G.WHITE}),n}var f0t=new nt;FIe.prototype.executeDebugShowFrustumsCommand=function(e,t,n){let i=t.shaderProgram.id,o=this._cachedShowFrustumsShaders[i];l(o)||(o=l0t(e,t.shaderProgram),this._cachedShowFrustumsShaders[i]=o);let r=nt.shallowClone(t,f0t);r.shaderProgram=o,r.uniformMap=u0t(e,t),r.execute(e.context,n)};var O8=FIe;function _0(e,t,n){this._primitive=e,this._tileIndex=t,this._sampleIndex=n,this._metadata={},this._orientedBoundingBox=new Qn}_0.fromKeyframeNode=function(e,t,n,i){let o=new _0(e,t,n),{spatialNode:r,content:s}=i;return o._metadata=d0t(e,s,n),o._orientedBoundingBox=m0t(e,r,n,o._orientedBoundingBox),o};function d0t(e,t,n){if(!l(t)||!l(t.metadata))return;let{names:i,types:o}=e.provider,{metadata:r}=t,s={};for(let a=0;a<i.length;a++){let c=i[a],u=gt.getComponentCount(o[a]),f=r[a].slice(n*u,(n+1)*u);s[c]=f}return s}var QIe=new d,h0t=new d;function m0t(e,t,n,i){let o=t.dimensions,r=o.x*o.y,s=Math.floor(n/r),a=n-s*r,c=Math.floor(a/o.x),u=a-c*o.x,f=d.fromElements(u,c,s,QIe),h=d.divideComponents(d.subtract(f,e._paddingBefore,QIe),e.dimensions,h0t);return e._shape.computeOrientedBoundingBoxForSample(t,e.dimensions,h,i)}Object.defineProperties(_0.prototype,{metadata:{get:function(){return this._metadata}},primitive:{get:function(){return this._primitive}},sampleIndex:{get:function(){return this._sampleIndex}},tileIndex:{get:function(){return this._tileIndex}},orientedBoundingBox:{get:function(){return this._orientedBoundingBox.clone()}}});_0.prototype.hasProperty=function(e){return l(this._metadata[e])};_0.prototype.getNames=function(){return Object.keys(this._metadata)};_0.prototype.getProperty=function(e){return this._metadata[e]};var F8=_0;var Q8=`struct Ray { + vec3 pos; + vec3 dir; + vec3 rawDir; +}; + +#if defined(JITTER) +/** + * Generate a pseudo-random value for a given 2D screen coordinate. + * Similar to https://www.shadertoy.com/view/4djSRW with a modified hashscale. + */ +float hash(vec2 p) +{ + vec3 p3 = fract(vec3(p.xyx) * 50.0); + p3 += dot(p3, p3.yzx + 19.19); + return fract((p3.x + p3.y) * p3.z); +} +#endif + +float minComponent(in vec3 v) { + return min(min(v.x, v.y), v.z); +} + +float maxComponent(in vec3 v) { + return max(max(v.x, v.y), v.z); +} + +struct PointJacobianT { + vec3 point; + mat3 jacobianT; +}; +`;var k8=`// See Intersection.glsl for the definition of intersectScene +// See IntersectionUtils.glsl for the definition of nextIntersection +// See convertUvToBox.glsl, convertUvToCylinder.glsl, or convertUvToEllipsoid.glsl +// for the definition of convertUvToShapeUvSpace. The appropriate function is +// selected based on the VoxelPrimitive shape type, and added to the shader in +// Scene/VoxelRenderResources.js. +// See Octree.glsl for the definitions of TraversalData, SampleData, +// traverseOctreeFromBeginning, and traverseOctreeFromExisting +// See Megatexture.glsl for the definition of accumulatePropertiesFromMegatexture + +#define STEP_COUNT_MAX 1000 // Harcoded value because GLSL doesn't like variable length loops +#if defined(PICKING_VOXEL) + #define ALPHA_ACCUM_MAX 0.1 +#else + #define ALPHA_ACCUM_MAX 0.98 // Must be > 0.0 and <= 1.0 +#endif + +uniform mat4 u_transformPositionUvToView; +uniform mat3 u_transformDirectionViewToLocal; +uniform vec3 u_cameraPositionUv; +uniform vec3 u_cameraDirectionUv; +uniform float u_stepSize; + +#if defined(PICKING) + uniform vec4 u_pickColor; +#endif + +vec3 getSampleSize(in int level) { + vec3 sampleCount = exp2(float(level)) * vec3(u_dimensions); + vec3 sampleSizeUv = 1.0 / sampleCount; + return scaleShapeUvToShapeSpace(sampleSizeUv); +} + +#define MINIMUM_STEP_SCALAR (0.02) +#define SHIFT_FRACTION (0.001) + +/** + * Given a coordinate within a tile, and sample spacings along a ray through + * the coordinate, find the distance to the points where the ray entered and + * exited the voxel cell, along with the surface normals at those points. + * The surface normals are returned in shape space coordinates. + */ +RayShapeIntersection getVoxelIntersection(in vec3 tileUv, in vec3 sampleSizeAlongRay) { + vec3 voxelCoord = tileUv * vec3(u_dimensions); + vec3 directions = sign(sampleSizeAlongRay); + vec3 positiveDirections = max(directions, 0.0); + vec3 entryCoord = mix(ceil(voxelCoord), floor(voxelCoord), positiveDirections); + vec3 exitCoord = entryCoord + directions; + + vec3 distanceFromEntry = -abs((entryCoord - voxelCoord) * sampleSizeAlongRay); + float lastEntry = maxComponent(distanceFromEntry); + bvec3 isLastEntry = equal(distanceFromEntry, vec3(lastEntry)); + vec3 entryNormal = -1.0 * vec3(isLastEntry) * directions; + vec4 entry = vec4(entryNormal, lastEntry); + + vec3 distanceToExit = abs((exitCoord - voxelCoord) * sampleSizeAlongRay); + float firstExit = minComponent(distanceToExit); + bvec3 isFirstExit = equal(distanceToExit, vec3(firstExit)); + vec3 exitNormal = vec3(isFirstExit) * directions; + vec4 exit = vec4(exitNormal, firstExit); + + return RayShapeIntersection(entry, exit); +} + +vec4 getStepSize(in SampleData sampleData, in Ray viewRay, in RayShapeIntersection shapeIntersection, in mat3 jacobianT, in float currentT) { + // The Jacobian is computed in a space where the shape spans [-1, 1]. + // But the ray is marched in a space where the shape fills [0, 1]. + // So we need to scale the Jacobian by 2. + vec3 gradient = 2.0 * viewRay.rawDir * jacobianT; + vec3 sampleSizeAlongRay = getSampleSize(sampleData.tileCoords.w) / gradient; + + RayShapeIntersection voxelIntersection = getVoxelIntersection(sampleData.tileUv, sampleSizeAlongRay); + + // Transform normal from shape space to Cartesian space + vec3 voxelNormal = normalize(jacobianT * voxelIntersection.entry.xyz); + // Compare with the shape intersection, to choose the appropriate normal + vec4 voxelEntry = vec4(voxelNormal, currentT + voxelIntersection.entry.w); + vec4 entry = intersectionMax(shapeIntersection.entry, voxelEntry); + + float fixedStep = minComponent(abs(sampleSizeAlongRay)) * u_stepSize; + float shift = fixedStep * SHIFT_FRACTION; + float dt = voxelIntersection.exit.w + shift; + if ((currentT + dt) > shapeIntersection.exit.w) { + // Stop at end of shape + dt = shapeIntersection.exit.w - currentT + shift; + } + float stepSize = clamp(dt, fixedStep * MINIMUM_STEP_SCALAR, fixedStep + shift); + + return vec4(entry.xyz, stepSize); +} + +vec2 packIntToVec2(int value) { + float shifted = float(value) / 255.0; + float lowBits = fract(shifted); + float highBits = floor(shifted) / 255.0; + return vec2(highBits, lowBits); +} + +vec2 packFloatToVec2(float value) { + float lowBits = fract(value); + float highBits = floor(value) / 255.0; + return vec2(highBits, lowBits); +} + +int getSampleIndex(in SampleData sampleData) { + // tileUv = 1.0 is a valid coordinate but sampleIndex = u_inputDimensions is not. + // (tileUv = 1.0 corresponds to the far edge of the last sample, at index = u_inputDimensions - 1). + // Clamp to [0, voxelDimensions - 0.5) to avoid numerical error before flooring + vec3 maxCoordinate = vec3(u_inputDimensions) - vec3(0.5); + vec3 inputCoordinate = clamp(sampleData.inputCoordinate, vec3(0.0), maxCoordinate); + ivec3 sampleIndex = ivec3(floor(inputCoordinate)); + // Convert to a 1D index for lookup in a 1D data array + return sampleIndex.x + u_inputDimensions.x * (sampleIndex.y + u_inputDimensions.y * sampleIndex.z); +} + +/** + * Compute the view ray at the current fragment, in the local UV coordinates of the shape. + */ +Ray getViewRayUv() { + vec4 eyeCoordinates = czm_windowToEyeCoordinates(gl_FragCoord); + vec3 viewDirUv; + vec3 viewPosUv; + if (czm_orthographicIn3D == 1.0) { + eyeCoordinates.z = 0.0; + viewPosUv = (u_transformPositionViewToUv * eyeCoordinates).xyz; + viewDirUv = normalize(u_cameraDirectionUv); + } else { + viewPosUv = u_cameraPositionUv; + viewDirUv = normalize(u_transformDirectionViewToLocal * eyeCoordinates.xyz); + } + #if defined(SHAPE_ELLIPSOID) + // viewDirUv has been scaled to a space where the ellipsoid is a sphere. + // Undo this scaling to get the raw direction. + vec3 rawDir = viewDirUv * u_ellipsoidRadiiUv; + return Ray(viewPosUv, viewDirUv, rawDir); + #else + return Ray(viewPosUv, viewDirUv, viewDirUv); + #endif +} + +void main() +{ + Ray viewRayUv = getViewRayUv(); + + Intersections ix; + vec2 screenCoord = (gl_FragCoord.xy - czm_viewport.xy) / czm_viewport.zw; // [0,1] + RayShapeIntersection shapeIntersection = intersectScene(screenCoord, viewRayUv, ix); + // Exit early if the scene was completely missed. + if (shapeIntersection.entry.w == NO_HIT) { + discard; + } + + float currentT = shapeIntersection.entry.w; + float endT = shapeIntersection.exit.w; + vec3 positionUv = viewRayUv.pos + currentT * viewRayUv.dir; + PointJacobianT pointJacobian = convertUvToShapeUvSpaceDerivative(positionUv); + + // Traverse the tree from the start position + TraversalData traversalData; + SampleData sampleDatas[SAMPLE_COUNT]; + traverseOctreeFromBeginning(pointJacobian.point, traversalData, sampleDatas); + vec4 step = getStepSize(sampleDatas[0], viewRayUv, shapeIntersection, pointJacobian.jacobianT, currentT); + + #if defined(JITTER) + float noise = hash(screenCoord); // [0,1] + currentT += noise * step.w; + positionUv += noise * step.w * viewRayUv.dir; + #endif + + FragmentInput fragmentInput; + #if defined(STATISTICS) + setStatistics(fragmentInput.metadataStatistics); + #endif + + czm_modelMaterial materialOutput; + vec4 colorAccum = vec4(0.0); + + for (int stepCount = 0; stepCount < STEP_COUNT_MAX; ++stepCount) { + // Read properties from the megatexture based on the traversal state + Properties properties = accumulatePropertiesFromMegatexture(sampleDatas); + + // Prepare the custom shader inputs + copyPropertiesToMetadata(properties, fragmentInput.metadata); + + fragmentInput.attributes.positionEC = vec3(u_transformPositionUvToView * vec4(positionUv, 1.0)); + fragmentInput.attributes.normalEC = normalize(czm_normal * step.xyz); + + fragmentInput.voxel.viewDirUv = viewRayUv.dir; + + fragmentInput.voxel.travelDistance = step.w; + fragmentInput.voxel.stepCount = stepCount; + fragmentInput.voxel.tileIndex = sampleDatas[0].megatextureIndex; + fragmentInput.voxel.sampleIndex = getSampleIndex(sampleDatas[0]); + fragmentInput.voxel.distanceToDepthBuffer = ix.distanceToDepthBuffer - currentT; + + // Run the custom shader + fragmentMain(fragmentInput, materialOutput); + + // Sanitize the custom shader output + vec4 color = vec4(materialOutput.diffuse, materialOutput.alpha); + color.rgb = max(color.rgb, vec3(0.0)); + color.a = clamp(color.a, 0.0, 1.0); + + // Pre-multiplied alpha blend + colorAccum += (1.0 - colorAccum.a) * vec4(color.rgb * color.a, color.a); + + // Stop traversing if the alpha has been fully saturated + if (colorAccum.a > ALPHA_ACCUM_MAX) { + colorAccum.a = ALPHA_ACCUM_MAX; + break; + } + + if (step.w == 0.0) { + // Shape is infinitely thin. The ray may have hit the edge of a + // foreground voxel. Step ahead slightly to check for more voxels + step.w == 0.00001; + } + + // Keep raymarching + currentT += step.w; + // Check if there's more intersections. + if (currentT > endT) { + #if (INTERSECTION_COUNT == 1) + break; + #else + shapeIntersection = nextIntersection(ix); + if (shapeIntersection.entry.w == NO_HIT) { + break; + } else { + // Found another intersection. Resume raymarching there + currentT = shapeIntersection.entry.w; + endT = shapeIntersection.exit.w; + } + #endif + } + positionUv = viewRayUv.pos + currentT * viewRayUv.dir; + + // Traverse the tree from the current ray position. + // This is similar to traverseOctreeFromBeginning but is faster when the ray is in the same tile as the previous step. + pointJacobian = convertUvToShapeUvSpaceDerivative(positionUv); + traverseOctreeFromExisting(pointJacobian.point, traversalData, sampleDatas); + step = getStepSize(sampleDatas[0], viewRayUv, shapeIntersection, pointJacobian.jacobianT, currentT); + } + + // Convert the alpha from [0,ALPHA_ACCUM_MAX] to [0,1] + colorAccum.a /= ALPHA_ACCUM_MAX; + + #if defined(PICKING) + // If alpha is 0.0 there is nothing to pick + if (colorAccum.a == 0.0) { + discard; + } + out_FragColor = u_pickColor; + #elif defined(PICKING_VOXEL) + // If alpha is 0.0 there is nothing to pick + if (colorAccum.a == 0.0) { + discard; + } + vec2 megatextureId = packIntToVec2(sampleDatas[0].megatextureIndex); + vec2 sampleIndex = packIntToVec2(getSampleIndex(sampleDatas[0])); + out_FragColor = vec4(megatextureId, sampleIndex); + #else + out_FragColor = colorAccum; + #endif +} +`;var U8=`in vec2 position; + +uniform vec4 u_ndcSpaceAxisAlignedBoundingBox; + +void main() { + vec2 aabbMin = u_ndcSpaceAxisAlignedBoundingBox.xy; + vec2 aabbMax = u_ndcSpaceAxisAlignedBoundingBox.zw; + vec2 translation = 0.5 * (aabbMax + aabbMin); + vec2 scale = 0.5 * (aabbMax - aabbMin); + gl_Position = vec4(position * scale + translation, 0.0, 1.0); +} +`;var G8=`/* Intersection defines +#define INTERSECTION_COUNT ### +*/ + +#define NO_HIT (-czm_infinity) +#define INF_HIT (czm_infinity * 0.5) + +struct RayShapeIntersection { + vec4 entry; + vec4 exit; +}; + +vec4 intersectionMin(in vec4 intersect0, in vec4 intersect1) +{ + if (intersect0.w == NO_HIT) { + return intersect1; + } else if (intersect1.w == NO_HIT) { + return intersect0; + } + return (intersect0.w <= intersect1.w) ? intersect0 : intersect1; +} + +vec4 intersectionMax(in vec4 intersect0, in vec4 intersect1) +{ + return (intersect0.w >= intersect1.w) ? intersect0 : intersect1; +} + +RayShapeIntersection intersectIntersections(in Ray ray, in RayShapeIntersection intersect0, in RayShapeIntersection intersect1) +{ + bool missed = (intersect0.entry.w == NO_HIT) || + (intersect1.entry.w == NO_HIT) || + (intersect0.exit.w < intersect1.entry.w) || + (intersect0.entry.w > intersect1.exit.w); + if (missed) { + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + return RayShapeIntersection(miss, miss); + } + + vec4 entry = intersectionMax(intersect0.entry, intersect1.entry); + vec4 exit = intersectionMin(intersect0.exit, intersect1.exit); + + return RayShapeIntersection(entry, exit); +} + +struct Intersections { + // Don't access these member variables directly - call the functions instead. + + // Store an array of ray-surface intersections. Each intersection is composed of: + // .xyz for the surface normal at the intersection point + // .w for the T value + // The scale of the normal encodes the shape intersection type: + // length(intersection.xyz) = 1: positive shape entry + // length(intersection.xyz) = 2: positive shape exit + // length(intersection.xyz) = 3: negative shape entry + // length(intersection.xyz) = 4: negative shape exit + // INTERSECTION_COUNT is the number of ray-*shape* (volume) intersections, + // so we need twice as many to track ray-*surface* intersections + vec4 intersections[INTERSECTION_COUNT * 2]; + float distanceToDepthBuffer; + + #if (INTERSECTION_COUNT > 1) + // Maintain state for future nextIntersection calls + int index; + int surroundCount; + bool surroundIsPositive; + #endif +}; + +RayShapeIntersection getFirstIntersection(in Intersections ix) +{ + return RayShapeIntersection(ix.intersections[0], ix.intersections[1]); +} + +vec4 encodeIntersectionType(vec4 intersection, int index, bool entry) +{ + float scale = float(index > 0) * 2.0 + float(!entry) + 1.0; + return vec4(intersection.xyz * scale, intersection.w); +} + +// Use defines instead of real functions because WebGL1 cannot access array with non-constant index. +#define setIntersection(/*inout Intersections*/ ix, /*int*/ index, /*float*/ t, /*bool*/ positive, /*bool*/ enter) (ix).intersections[(index)] = vec4(0.0, float(!positive) * 2.0 + float(!enter) + 1.0, 0.0, (t)) +#define setIntersectionPair(/*inout Intersections*/ ix, /*int*/ index, /*vec2*/ entryExit) (ix).intersections[(index) * 2 + 0] = vec4(0.0, float((index) > 0) * 2.0 + 1.0, 0.0, (entryExit).x); (ix).intersections[(index) * 2 + 1] = vec4(0.0, float((index) > 0) * 2.0 + 2.0, 0.0, (entryExit).y) +#define setSurfaceIntersection(/*inout Intersections*/ ix, /*int*/ index, /*vec4*/ intersection, /*bool*/ positive, /*bool*/ enter) (ix).intersections[(index)] = encodeIntersectionType((intersection), int(!positive), (enter)) +#define setShapeIntersection(/*inout Intersections*/ ix, /*int*/ index, /*RayShapeIntersection*/ intersection) (ix).intersections[(index) * 2 + 0] = encodeIntersectionType((intersection).entry, (index), true); (ix).intersections[(index) * 2 + 1] = encodeIntersectionType((intersection).exit, (index), false) + +#if (INTERSECTION_COUNT > 1) +void initializeIntersections(inout Intersections ix) { + // Sort the intersections from min T to max T with bubble sort. + // Note: If this sorting function changes, some of the intersection test may + // need to be updated. Search for "bubble sort" to find those areas. + const int sortPasses = INTERSECTION_COUNT * 2 - 1; + for (int n = sortPasses; n > 0; --n) { + for (int i = 0; i < sortPasses; ++i) { + // The loop should be: for (i = 0; i < n; ++i) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to break early instead + if (i >= n) { break; } + + vec4 intersect0 = ix.intersections[i + 0]; + vec4 intersect1 = ix.intersections[i + 1]; + + bool inOrder = intersect0.w <= intersect1.w; + + ix.intersections[i + 0] = inOrder ? intersect0 : intersect1; + ix.intersections[i + 1] = inOrder ? intersect1 : intersect0; + } + } + + // Prepare initial state for nextIntersection + ix.index = 0; + ix.surroundCount = 0; + ix.surroundIsPositive = false; +} +#endif + +#if (INTERSECTION_COUNT > 1) +RayShapeIntersection nextIntersection(inout Intersections ix) { + vec4 surfaceIntersection = vec4(0.0, 0.0, 0.0, NO_HIT); + RayShapeIntersection shapeIntersection = RayShapeIntersection(surfaceIntersection, surfaceIntersection); + + const int passCount = INTERSECTION_COUNT * 2; + + if (ix.index == passCount) { + return shapeIntersection; + } + + for (int i = 0; i < passCount; ++i) { + // The loop should be: for (i = ix.index; i < passCount; ++i) {...} but WebGL1 cannot + // loop with non-constant condition, so it has to continue instead. + if (i < ix.index) { + continue; + } + + ix.index = i + 1; + + surfaceIntersection = ix.intersections[i]; + int intersectionType = int(length(surfaceIntersection.xyz) - 0.5); + bool currShapeIsPositive = intersectionType < 2; + bool enter = intMod(intersectionType, 2) == 0; + + ix.surroundCount += enter ? +1 : -1; + ix.surroundIsPositive = currShapeIsPositive ? enter : ix.surroundIsPositive; + + // entering positive or exiting negative + if (ix.surroundCount == 1 && ix.surroundIsPositive && enter == currShapeIsPositive) { + shapeIntersection.entry = surfaceIntersection; + } + + // exiting positive or entering negative after being inside positive + bool exitPositive = !enter && currShapeIsPositive && ix.surroundCount == 0; + bool enterNegativeFromPositive = enter && !currShapeIsPositive && ix.surroundCount == 2 && ix.surroundIsPositive; + if (exitPositive || enterNegativeFromPositive) { + shapeIntersection.exit = surfaceIntersection; + + // entry and exit have been found, so the loop can stop + if (exitPositive) { + // After exiting positive shape there is nothing left to intersect, so jump to the end index. + ix.index = passCount; + } + break; + } + } + + return shapeIntersection; +} +#endif + +// NOTE: initializeIntersections, nextIntersection aren't even declared unless INTERSECTION_COUNT > 1 +`;var z8=`// See IntersectionUtils.glsl for the definitions of Ray, Intersections, +// setIntersectionPair, INF_HIT, NO_HIT + +/* intersectDepth defines (set in Scene/VoxelRenderResources.js) +#define DEPTH_INTERSECTION_INDEX ### +*/ + +uniform mat4 u_transformPositionViewToUv; + +void intersectDepth(in vec2 screenCoord, in Ray ray, inout Intersections ix) { + float logDepthOrDepth = czm_unpackDepth(texture(czm_globeDepthTexture, screenCoord)); + float entry; + float exit; + if (logDepthOrDepth != 0.0) { + // Calculate how far the ray must travel before it hits the depth buffer. + vec4 eyeCoordinateDepth = czm_screenToEyeCoordinates(screenCoord, logDepthOrDepth); + eyeCoordinateDepth /= eyeCoordinateDepth.w; + vec3 depthPositionUv = vec3(u_transformPositionViewToUv * eyeCoordinateDepth); + entry = dot(depthPositionUv - ray.pos, ray.dir); + exit = +INF_HIT; + } else { + // There's no depth at this location. + entry = NO_HIT; + exit = NO_HIT; + } + ix.distanceToDepthBuffer = entry; +#if defined(DEPTH_TEST) + setIntersectionPair(ix, DEPTH_INTERSECTION_INDEX, vec2(entry, exit)); +#endif +} +`;var V8=`// See IntersectionUtils.glsl for the definitions of Ray, Intersections, INF_HIT, +// NO_HIT, setShapeIntersection + +/* Clipping plane defines (set in Scene/VoxelRenderResources.js) +#define CLIPPING_PLANES_UNION +#define CLIPPING_PLANES_COUNT +#define CLIPPING_PLANES_INTERSECTION_INDEX +*/ + +uniform sampler2D u_clippingPlanesTexture; +uniform mat4 u_clippingPlanesMatrix; + +// Plane is in Hessian Normal Form +vec4 intersectPlane(in Ray ray, in vec4 plane) { + vec3 n = plane.xyz; // normal + float w = plane.w; // -dot(pointOnPlane, normal) + + float a = dot(ray.pos, n); + float b = dot(ray.dir, n); + float t = -(w + a) / b; + + return vec4(n, t); +} + +void intersectClippingPlanes(in Ray ray, inout Intersections ix) { + vec4 backSide = vec4(-ray.dir, -INF_HIT); + vec4 farSide = vec4(ray.dir, +INF_HIT); + RayShapeIntersection clippingVolume; + + #if (CLIPPING_PLANES_COUNT == 1) + // Union and intersection are the same when there's one clipping plane, and the code + // is more simplified. + vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, 0, u_clippingPlanesMatrix); + vec4 intersection = intersectPlane(ray, planeUv); + bool reflects = dot(ray.dir, intersection.xyz) < 0.0; + clippingVolume.entry = reflects ? backSide : intersection; + clippingVolume.exit = reflects ? intersection : farSide; + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume); + #elif defined(CLIPPING_PLANES_UNION) + vec4 firstTransmission = vec4(ray.dir, +INF_HIT); + vec4 lastReflection = vec4(-ray.dir, -INF_HIT); + for (int i = 0; i < CLIPPING_PLANES_COUNT; i++) { + vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, i, u_clippingPlanesMatrix); + vec4 intersection = intersectPlane(ray, planeUv); + if (dot(ray.dir, planeUv.xyz) > 0.0) { + firstTransmission = intersection.w <= firstTransmission.w ? intersection : firstTransmission; + } else { + lastReflection = intersection.w >= lastReflection.w ? intersection : lastReflection; + } + } + clippingVolume.entry = backSide; + clippingVolume.exit = lastReflection; + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 0, clippingVolume); + clippingVolume.entry = firstTransmission; + clippingVolume.exit = farSide; + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX + 1, clippingVolume); + #else // intersection + vec4 lastTransmission = vec4(ray.dir, -INF_HIT); + vec4 firstReflection = vec4(-ray.dir, +INF_HIT); + for (int i = 0; i < CLIPPING_PLANES_COUNT; i++) { + vec4 planeUv = getClippingPlane(u_clippingPlanesTexture, i, u_clippingPlanesMatrix); + vec4 intersection = intersectPlane(ray, planeUv); + if (dot(ray.dir, planeUv.xyz) > 0.0) { + lastTransmission = intersection.w > lastTransmission.w ? intersection : lastTransmission; + } else { + firstReflection = intersection.w < firstReflection.w ? intersection: firstReflection; + } + } + if (lastTransmission.w < firstReflection.w) { + clippingVolume.entry = lastTransmission; + clippingVolume.exit = firstReflection; + } else { + clippingVolume.entry = vec4(-ray.dir, NO_HIT); + clippingVolume.exit = vec4(ray.dir, NO_HIT); + } + setShapeIntersection(ix, CLIPPING_PLANES_INTERSECTION_INDEX, clippingVolume); + #endif +} +`;var vP=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, INF_HIT, +// RayShapeIntersection + +vec4 intersectLongitude(in Ray ray, in float angle, in bool positiveNormal) { + float normalSign = positiveNormal ? 1.0 : -1.0; + vec2 planeNormal = vec2(-sin(angle), cos(angle)) * normalSign; + + vec2 position = ray.pos.xy; + vec2 direction = ray.dir.xy; + float approachRate = dot(direction, planeNormal); + float distance = -dot(position, planeNormal); + + float t = (approachRate == 0.0) + ? NO_HIT + : distance / approachRate; + + return vec4(planeNormal, 0.0, t); +} + +RayShapeIntersection intersectHalfSpace(in Ray ray, in float angle, in bool positiveNormal) +{ + vec4 intersection = intersectLongitude(ray, angle, positiveNormal); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + bool hitFront = (intersection.w > 0.0) == (dot(ray.pos.xy, intersection.xy) > 0.0); + if (!hitFront) { + return RayShapeIntersection(intersection, farSide); + } else { + return RayShapeIntersection(-1.0 * farSide, intersection); + } +} + +void intersectFlippedWedge(in Ray ray, in vec2 minMaxAngle, out RayShapeIntersection intersections[2]) +{ + intersections[0] = intersectHalfSpace(ray, minMaxAngle.x, false); + intersections[1] = intersectHalfSpace(ray, minMaxAngle.y, true); +} + +bool hitPositiveHalfPlane(in Ray ray, in vec4 intersection, in bool positiveNormal) { + float normalSign = positiveNormal ? 1.0 : -1.0; + vec2 planeDirection = vec2(intersection.y, -intersection.x) * normalSign; + vec2 hit = ray.pos.xy + intersection.w * ray.dir.xy; + return dot(hit, planeDirection) > 0.0; +} + +void intersectHalfPlane(in Ray ray, in float angle, out RayShapeIntersection intersections[2]) { + vec4 intersection = intersectLongitude(ray, angle, true); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + if (hitPositiveHalfPlane(ray, intersection, true)) { + intersections[0].entry = -1.0 * farSide; + intersections[0].exit = vec4(-1.0 * intersection.xy, 0.0, intersection.w); + intersections[1].entry = intersection; + intersections[1].exit = farSide; + } else { + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + intersections[0].entry = -1.0 * farSide; + intersections[0].exit = farSide; + intersections[1].entry = miss; + intersections[1].exit = miss; + } +} + +RayShapeIntersection intersectRegularWedge(in Ray ray, in vec2 minMaxAngle) +{ + // Note: works for maxAngle > minAngle + pi, where the "regular wedge" + // is actually a negative volume. + // Compute intersections with the two planes. + // Normals will point toward the "outside" (negative space) + vec4 intersect1 = intersectLongitude(ray, minMaxAngle.x, false); + vec4 intersect2 = intersectLongitude(ray, minMaxAngle.y, true); + + // Choose intersection with smallest T as the "first", the other as "last" + // Note: first or last could be in the "shadow" wedge, beyond the tip + bool inOrder = intersect1.w <= intersect2.w; + vec4 first = inOrder ? intersect1 : intersect2; + vec4 last = inOrder ? intersect2 : intersect1; + + bool firstIsAhead = first.w >= 0.0; + bool startedInsideFirst = dot(ray.pos.xy, first.xy) < 0.0; + bool exitFromInside = firstIsAhead == startedInsideFirst; + bool lastIsAhead = last.w > 0.0; + bool startedOutsideLast = dot(ray.pos.xy, last.xy) >= 0.0; + bool enterFromOutside = lastIsAhead == startedOutsideLast; + + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + + if (exitFromInside && enterFromOutside) { + // Ray crosses both faces of negative wedge, exiting then entering the positive shape + return RayShapeIntersection(first, last); + } else if (!exitFromInside && enterFromOutside) { + // Ray starts inside wedge. last is in shadow wedge, and first is actually the entry + return RayShapeIntersection(-1.0 * farSide, first); + } else if (exitFromInside && !enterFromOutside) { + // First intersection was in the shadow wedge, so last is actually the exit + return RayShapeIntersection(last, farSide); + } else { // !exitFromInside && !enterFromOutside + // Both intersections were in the shadow wedge + return RayShapeIntersection(miss, miss); + } +} +`;var H8=`// See IntersectionUtils.glsl for the definitions of Ray, RayShapeIntersection, +// NO_HIT, Intersections + +/* Box defines (set in Scene/VoxelBoxShape.js) +#define BOX_INTERSECTION_INDEX ### // always 0 +*/ + +uniform vec3 u_renderMinBounds; +uniform vec3 u_renderMaxBounds; + +RayShapeIntersection intersectBox(in Ray ray, in vec3 minBound, in vec3 maxBound) +{ + // Consider the box as the intersection of the space between 3 pairs of parallel planes + // Compute the distance along the ray to each plane + vec3 t0 = (minBound - ray.pos) / ray.dir; + vec3 t1 = (maxBound - ray.pos) / ray.dir; + + // Identify candidate entries/exits based on distance from ray.pos + vec3 entries = min(t0, t1); + vec3 exits = max(t0, t1); + + vec3 directions = sign(ray.dir); + + // The actual intersection points are the furthest entry and the closest exit + float lastEntry = maxComponent(entries); + bvec3 isLastEntry = equal(entries, vec3(lastEntry)); + vec3 entryNormal = -1.0 * vec3(isLastEntry) * directions; + vec4 entry = vec4(entryNormal, lastEntry); + + float firstExit = minComponent(exits); + bvec3 isFirstExit = equal(exits, vec3(firstExit)); + vec3 exitNormal = vec3(isLastEntry) * directions; + vec4 exit = vec4(exitNormal, firstExit); + + if (entry.w > exit.w) { + entry.w = NO_HIT; + exit.w = NO_HIT; + } + + return RayShapeIntersection(entry, exit); +} + +void intersectShape(in Ray ray, inout Intersections ix) +{ + RayShapeIntersection intersection = intersectBox(ray, u_renderMinBounds, u_renderMaxBounds); + setShapeIntersection(ix, BOX_INTERSECTION_INDEX, intersection); +} +`;var W8=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, Intersections, +// RayShapeIntersection, setSurfaceIntersection, setShapeIntersection, +// intersectIntersections +// See IntersectLongitude.glsl for the definitions of intersectHalfPlane, +// intersectFlippedWedge, intersectRegularWedge + +/* Cylinder defines (set in Scene/VoxelCylinderShape.js) +#define CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN +#define CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF +#define CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO + +#define CYLINDER_INTERSECTION_INDEX_RADIUS_MAX +#define CYLINDER_INTERSECTION_INDEX_RADIUS_MIN +#define CYLINDER_INTERSECTION_INDEX_ANGLE +*/ + +// Cylinder uniforms +uniform vec2 u_cylinderRenderRadiusMinMax; +uniform vec2 u_cylinderRenderHeightMinMax; +#if defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE) + uniform vec2 u_cylinderRenderAngleMinMax; +#endif + +/** + * Find the intersection of a ray with the volume defined by two planes of constant z + */ +RayShapeIntersection intersectHeightBounds(in Ray ray, in vec2 minMaxHeight, in bool convex) +{ + float zPosition = ray.pos.z; + float zDirection = ray.dir.z; + + float tmin = (minMaxHeight.x - zPosition) / zDirection; + float tmax = (minMaxHeight.y - zPosition) / zDirection; + + // Normals point outside the volume + float signFlip = convex ? 1.0 : -1.0; + vec4 intersectMin = vec4(0.0, 0.0, -1.0 * signFlip, tmin); + vec4 intersectMax = vec4(0.0, 0.0, 1.0 * signFlip, tmax); + + bool topEntry = zDirection < 0.0; + vec4 entry = topEntry ? intersectMax : intersectMin; + vec4 exit = topEntry ? intersectMin : intersectMax; + + return RayShapeIntersection(entry, exit); +} + +/** + * Find the intersection of a ray with a right cylindrical surface of a given radius + * about the z-axis. + */ +RayShapeIntersection intersectCylinder(in Ray ray, in float radius, in bool convex) +{ + vec2 position = ray.pos.xy; + vec2 direction = ray.dir.xy; + + float a = dot(direction, direction); + float b = dot(position, direction); + float c = dot(position, position) - radius * radius; + float determinant = b * b - a * c; + + if (determinant < 0.0) { + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + return RayShapeIntersection(miss, miss); + } + + determinant = sqrt(determinant); + float t1 = (-b - determinant) / a; + float t2 = (-b + determinant) / a; + float signFlip = convex ? 1.0 : -1.0; + vec4 intersect1 = vec4(normalize(position + t1 * direction) * signFlip, 0.0, t1); + vec4 intersect2 = vec4(normalize(position + t2 * direction) * signFlip, 0.0, t2); + + return RayShapeIntersection(intersect1, intersect2); +} + +/** + * Find the intersection of a ray with a right cylindrical solid of given + * radius and height bounds. NOTE: The shape is assumed to be convex. + */ +RayShapeIntersection intersectBoundedCylinder(in Ray ray, in float radius, in vec2 minMaxHeight) +{ + RayShapeIntersection cylinderIntersection = intersectCylinder(ray, radius, true); + RayShapeIntersection heightBoundsIntersection = intersectHeightBounds(ray, minMaxHeight, true); + return intersectIntersections(ray, cylinderIntersection, heightBoundsIntersection); +} + +void intersectShape(Ray ray, inout Intersections ix) +{ + // Position is converted from [0,1] to [-1,+1] because shape intersections assume unit space is [-1,+1]. + // Direction is scaled as well to be in sync with position. + ray.pos = ray.pos * 2.0 - 1.0; + ray.dir *= 2.0; + + RayShapeIntersection outerIntersect = intersectBoundedCylinder(ray, u_cylinderRenderRadiusMinMax.y, u_cylinderRenderHeightMinMax); + + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_RADIUS_MAX, outerIntersect); + + if (outerIntersect.entry.w == NO_HIT) { + return; + } + + #if defined(CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT) + // When the cylinder is perfectly thin it's necessary to sandwich the + // inner cylinder intersection inside the outer cylinder intersection. + + // Without this special case, + // [outerMin, outerMax, innerMin, innerMax] will bubble sort to + // [outerMin, innerMin, outerMax, innerMax] which will cause the back + // side of the cylinder to be invisible because it will think the ray + // is still inside the inner (negative) cylinder after exiting the + // outer (positive) cylinder. + + // With this special case, + // [outerMin, innerMin, innerMax, outerMax] will bubble sort to + // [outerMin, innerMin, innerMax, outerMax] which will work correctly. + + // Note: If initializeIntersections() changes its sorting function + // from bubble sort to something else, this code may need to change. + RayShapeIntersection innerIntersect = intersectCylinder(ray, 1.0, false); + setSurfaceIntersection(ix, 0, outerIntersect.entry, true, true); // positive, enter + setSurfaceIntersection(ix, 1, innerIntersect.entry, false, true); // negative, enter + setSurfaceIntersection(ix, 2, innerIntersect.exit, false, false); // negative, exit + setSurfaceIntersection(ix, 3, outerIntersect.exit, true, false); // positive, exit + #elif defined(CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN) + RayShapeIntersection innerIntersect = intersectCylinder(ray, u_cylinderRenderRadiusMinMax.x, false); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_RADIUS_MIN, innerIntersect); + #endif + + #if defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF) + RayShapeIntersection wedgeIntersect = intersectRegularWedge(ray, u_cylinderRenderAngleMinMax); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE, wedgeIntersect); + #elif defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF) + RayShapeIntersection wedgeIntersects[2]; + intersectFlippedWedge(ray, u_cylinderRenderAngleMinMax, wedgeIntersects); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 1, wedgeIntersects[1]); + #elif defined(CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO) + RayShapeIntersection wedgeIntersects[2]; + intersectHalfPlane(ray, u_cylinderRenderAngleMinMax.x, wedgeIntersects); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, CYLINDER_INTERSECTION_INDEX_ANGLE + 1, wedgeIntersects[1]); + #endif +} +`;var j8=`// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, INF_HIT, Intersections, +// RayShapeIntersection, setSurfaceIntersection, setShapeIntersection +// See IntersectLongitude.glsl for the definitions of intersectHalfPlane, +// intersectFlippedWedge, intersectRegularWedge + +/* Ellipsoid defines (set in Scene/VoxelEllipsoidShape.js) +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF +#define ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF +#define ELLIPSOID_INTERSECTION_INDEX_LONGITUDE +#define ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX +#define ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN +#define ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX +#define ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN +*/ + +#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE) + uniform vec2 u_ellipsoidRenderLongitudeMinMax; +#endif +uniform float u_eccentricitySquared; +uniform vec2 u_ellipsoidRenderLatitudeSinMinMax; +uniform vec2 u_clipMinMaxHeight; + +RayShapeIntersection intersectZPlane(in Ray ray, in float z) { + float t = -ray.pos.z / ray.dir.z; + + bool startsOutside = sign(ray.pos.z) == sign(z); + bool entry = (t >= 0.0) != startsOutside; + + vec4 intersect = vec4(0.0, 0.0, z, t); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + if (entry) { + return RayShapeIntersection(intersect, farSide); + } else { + return RayShapeIntersection(-1.0 * farSide, intersect); + } +} + +RayShapeIntersection intersectHeight(in Ray ray, in float relativeHeight, in bool convex) +{ + // Scale the ray by the ellipsoid axes to make it a unit sphere + // Note: approximating ellipsoid + height as an ellipsoid + vec3 radiiCorrection = u_ellipsoidRadiiUv / (u_ellipsoidRadiiUv + relativeHeight); + vec3 position = ray.pos * radiiCorrection; + vec3 direction = ray.dir * radiiCorrection; + + float a = dot(direction, direction); // ~ 1.0 (or maybe 4.0 if ray is scaled) + float b = dot(direction, position); // roughly inside [-1.0, 1.0] when zoomed in + float c = dot(position, position) - 1.0; // ~ 0.0 when zoomed in. + float determinant = b * b - a * c; // ~ b * b when zoomed in + + if (determinant < 0.0) { + vec4 miss = vec4(normalize(direction), NO_HIT); + return RayShapeIntersection(miss, miss); + } + + determinant = sqrt(determinant); + + // Compute larger root using standard formula + float signB = b < 0.0 ? -1.0 : 1.0; + // The other root may suffer from subtractive cancellation in the standard formula. + // Compute it from the first root instead. + float t1 = (-b - signB * determinant) / a; + float t2 = c / (a * t1); + float tmin = min(t1, t2); + float tmax = max(t1, t2); + + float directionScale = convex ? 1.0 : -1.0; + vec3 d1 = directionScale * normalize(position + tmin * direction); + vec3 d2 = directionScale * normalize(position + tmax * direction); + + return RayShapeIntersection(vec4(d1, tmin), vec4(d2, tmax)); +} + +/** + * Given a circular cone around the z-axis, with apex at the origin, + * find the parametric distance(s) along a ray where that ray intersects + * the cone. + * The cone opening angle is described by the squared cosine of + * its half-angle (the angle between the Z-axis and the surface) + */ +vec2 intersectDoubleEndedCone(in Ray ray, in float cosSqrHalfAngle) +{ + vec3 o = ray.pos; + vec3 d = ray.dir; + float sinSqrHalfAngle = 1.0 - cosSqrHalfAngle; + + float aSin = d.z * d.z * sinSqrHalfAngle; + float aCos = -dot(d.xy, d.xy) * cosSqrHalfAngle; + float a = aSin + aCos; + + float bSin = d.z * o.z * sinSqrHalfAngle; + float bCos = -dot(o.xy, d.xy) * cosSqrHalfAngle; + float b = bSin + bCos; + + float cSin = o.z * o.z * sinSqrHalfAngle; + float cCos = -dot(o.xy, o.xy) * cosSqrHalfAngle; + float c = cSin + cCos; + // determinant = b * b - a * c. But bSin * bSin = aSin * cSin. + // Avoid subtractive cancellation by expanding to eliminate these terms + float determinant = 2.0 * bSin * bCos + bCos * bCos - aSin * cCos - aCos * cSin - aCos * cCos; + + if (determinant < 0.0) { + return vec2(NO_HIT); + } else if (a == 0.0) { + // Ray is parallel to cone surface + return (b == 0.0) + ? vec2(NO_HIT) // Ray is on cone surface + : vec2(-0.5 * c / b, NO_HIT); + } + + determinant = sqrt(determinant); + + // Compute larger root using standard formula + float signB = b < 0.0 ? -1.0 : 1.0; + float t1 = (-b - signB * determinant) / a; + // The other root may suffer from subtractive cancellation in the standard formula. + // Compute it from the first root instead. + float t2 = c / (a * t1); + float tmin = min(t1, t2); + float tmax = max(t1, t2); + return vec2(tmin, tmax); +} + +/** + * Given a point on a conical surface, find the surface normal at that point. + */ +vec3 getConeNormal(in vec3 p, in bool convex) { + // Start with radial component pointing toward z-axis + vec2 radial = -abs(p.z) * normalize(p.xy); + // Z component points toward opening of cone + float zSign = (p.z < 0.0) ? -1.0 : 1.0; + float z = length(p.xy) * zSign; + // Flip normal if shape is convex + float flip = (convex) ? -1.0 : 1.0; + return normalize(vec3(radial, z) * flip); +} + +/** + * Compute the shift between the ellipsoid origin and the apex of a cone of latitude + */ +float getLatitudeConeShift(in float sinLatitude) { + // Find prime vertical radius of curvature: + // the distance along the ellipsoid normal to the intersection with the z-axis + float x2 = u_eccentricitySquared * sinLatitude * sinLatitude; + float primeVerticalRadius = inversesqrt(1.0 - x2); + + // Compute a shift from the origin to the intersection of the cone with the z-axis + return primeVerticalRadius * u_eccentricitySquared * sinLatitude; +} + +void intersectFlippedCone(in Ray ray, in float cosHalfAngle, out RayShapeIntersection intersections[2]) { + // Undo the scaling from ellipsoid to sphere + ray.pos = ray.pos * u_ellipsoidRadiiUv; + ray.dir = ray.dir * u_ellipsoidRadiiUv; + // Shift the ray to account for the latitude cone not being centered at the Earth center + ray.pos.z += getLatitudeConeShift(cosHalfAngle); + + float cosSqrHalfAngle = cosHalfAngle * cosHalfAngle; + vec2 intersect = intersectDoubleEndedCone(ray, cosSqrHalfAngle); + + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + // Initialize output with no intersections + intersections[0].entry = -1.0 * farSide; + intersections[0].exit = farSide; + intersections[1].entry = miss; + intersections[1].exit = miss; + + if (intersect.x == NO_HIT) { + return; + } + + // Find the points of intersection + float tmin = intersect.x; + float tmax = intersect.y; + vec3 p0 = ray.pos + tmin * ray.dir; + vec3 p1 = ray.pos + tmax * ray.dir; + + vec4 intersect0 = vec4(getConeNormal(p0, true), tmin); + vec4 intersect1 = vec4(getConeNormal(p1, true), tmax); + + bool p0InShadowCone = sign(p0.z) != sign(cosHalfAngle); + bool p1InShadowCone = sign(p1.z) != sign(cosHalfAngle); + + if (p0InShadowCone && p1InShadowCone) { + // no valid intersections + } else if (p0InShadowCone) { + intersections[0].exit = intersect1; + } else if (p1InShadowCone) { + intersections[0].entry = intersect0; + } else { + intersections[0].exit = intersect0; + intersections[1].entry = intersect1; + intersections[1].exit = farSide; + } +} + +RayShapeIntersection intersectRegularCone(in Ray ray, in float cosHalfAngle, in bool convex) { + // Undo the scaling from ellipsoid to sphere + ray.pos = ray.pos * u_ellipsoidRadiiUv; + ray.dir = ray.dir * u_ellipsoidRadiiUv; + // Shift the ray to account for the latitude cone not being centered at the Earth center + ray.pos.z += getLatitudeConeShift(cosHalfAngle); + + float cosSqrHalfAngle = cosHalfAngle * cosHalfAngle; + vec2 intersect = intersectDoubleEndedCone(ray, cosSqrHalfAngle); + + vec4 miss = vec4(normalize(ray.dir), NO_HIT); + vec4 farSide = vec4(normalize(ray.dir), INF_HIT); + + if (intersect.x == NO_HIT) { + return RayShapeIntersection(miss, miss); + } + + // Find the points of intersection + float tmin = intersect.x; + float tmax = intersect.y; + vec3 p0 = ray.pos + tmin * ray.dir; + vec3 p1 = ray.pos + tmax * ray.dir; + + vec4 intersect0 = vec4(getConeNormal(p0, convex), tmin); + vec4 intersect1 = vec4(getConeNormal(p1, convex), tmax); + + bool p0InShadowCone = sign(p0.z) != sign(cosHalfAngle); + bool p1InShadowCone = sign(p1.z) != sign(cosHalfAngle); + + if (p0InShadowCone && p1InShadowCone) { + return RayShapeIntersection(miss, miss); + } else if (p0InShadowCone) { + return RayShapeIntersection(intersect1, farSide); + } else if (p1InShadowCone) { + return RayShapeIntersection(-1.0 * farSide, intersect0); + } else { + return RayShapeIntersection(intersect0, intersect1); + } +} + +void intersectShape(in Ray ray, inout Intersections ix) { + // Position is converted from [0,1] to [-1,+1] because shape intersections assume unit space is [-1,+1]. + // Direction is scaled as well to be in sync with position. + ray.pos = ray.pos * 2.0 - 1.0; + ray.dir *= 2.0; + + // Outer ellipsoid + RayShapeIntersection outerIntersect = intersectHeight(ray, u_clipMinMaxHeight.y, true); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX, outerIntersect); + + // Exit early if the outer ellipsoid was missed. + if (outerIntersect.entry.w == NO_HIT) { + return; + } + + // Inner ellipsoid + RayShapeIntersection innerIntersect = intersectHeight(ray, u_clipMinMaxHeight.x, false); + + if (innerIntersect.entry.w == NO_HIT) { + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN, innerIntersect); + } else { + // When the ellipsoid is large and thin it's possible for floating point math + // to cause the ray to intersect the inner ellipsoid before the outer ellipsoid. + // To prevent this from happening, clamp innerIntersect to outerIntersect and + // sandwich the inner ellipsoid intersection inside the outer ellipsoid intersection. + + // Without this special case, + // [outerMin, outerMax, innerMin, innerMax] will bubble sort to + // [outerMin, innerMin, outerMax, innerMax] which will cause the back + // side of the ellipsoid to be invisible because it will think the ray + // is still inside the inner (negative) ellipsoid after exiting the + // outer (positive) ellipsoid. + + // With this special case, + // [outerMin, innerMin, innerMax, outerMax] will bubble sort to + // [outerMin, innerMin, innerMax, outerMax] which will work correctly. + + // Note: If initializeIntersections() changes its sorting function + // from bubble sort to something else, this code may need to change. + innerIntersect.entry.w = max(innerIntersect.entry.w, outerIntersect.entry.w); + innerIntersect.exit.w = min(innerIntersect.exit.w, outerIntersect.exit.w); + setSurfaceIntersection(ix, 0, outerIntersect.entry, true, true); // positive, enter + setSurfaceIntersection(ix, 1, innerIntersect.entry, false, true); // negative, enter + setSurfaceIntersection(ix, 2, innerIntersect.exit, false, false); // negative, exit + setSurfaceIntersection(ix, 3, outerIntersect.exit, true, false); // positive, exit + } + + // Bottom cone + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF) + RayShapeIntersection bottomConeIntersection = intersectRegularCone(ray, u_ellipsoidRenderLatitudeSinMinMax.x, false); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN, bottomConeIntersection); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF) + RayShapeIntersection bottomConeIntersection = intersectZPlane(ray, -1.0); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN, bottomConeIntersection); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF) + RayShapeIntersection bottomConeIntersections[2]; + intersectFlippedCone(ray, u_ellipsoidRenderLatitudeSinMinMax.x, bottomConeIntersections); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN + 0, bottomConeIntersections[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN + 1, bottomConeIntersections[1]); + #endif + + // Top cone + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF) + RayShapeIntersection topConeIntersections[2]; + intersectFlippedCone(ray, u_ellipsoidRenderLatitudeSinMinMax.y, topConeIntersections); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX + 0, topConeIntersections[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX + 1, topConeIntersections[1]); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF) + RayShapeIntersection topConeIntersection = intersectZPlane(ray, 1.0); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX, topConeIntersection); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF) + RayShapeIntersection topConeIntersection = intersectRegularCone(ray, u_ellipsoidRenderLatitudeSinMinMax.y, false); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX, topConeIntersection); + #endif + + // Wedge + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO) + RayShapeIntersection wedgeIntersects[2]; + intersectHalfPlane(ray, u_ellipsoidRenderLongitudeMinMax.x, wedgeIntersects); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 1, wedgeIntersects[1]); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF) + RayShapeIntersection wedgeIntersect = intersectRegularWedge(ray, u_ellipsoidRenderLongitudeMinMax); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE, wedgeIntersect); + #elif defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF) + RayShapeIntersection wedgeIntersects[2]; + intersectFlippedWedge(ray, u_ellipsoidRenderLongitudeMinMax, wedgeIntersects); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 0, wedgeIntersects[0]); + setShapeIntersection(ix, ELLIPSOID_INTERSECTION_INDEX_LONGITUDE + 1, wedgeIntersects[1]); + #endif +} +`;var ZT=`// Main intersection function for Voxel scenes. +// See IntersectBox.glsl, IntersectCylinder.glsl, or IntersectEllipsoid.glsl +// for the definition of intersectShape. The appropriate function is selected +// based on the VoxelPrimitive shape type, and added to the shader in +// Scene/VoxelRenderResources.js. +// See also IntersectClippingPlane.glsl and IntersectDepth.glsl. +// See IntersectionUtils.glsl for the definitions of Ray, NO_HIT, +// getFirstIntersection, initializeIntersections, nextIntersection. + +/* Intersection defines (set in Scene/VoxelRenderResources.js) +#define INTERSECTION_COUNT ### +*/ + +RayShapeIntersection intersectScene(in vec2 screenCoord, in Ray ray, out Intersections ix) { + // Do a ray-shape intersection to find the exact starting and ending points. + intersectShape(ray, ix); + + // Exit early if the positive shape was completely missed or behind the ray. + RayShapeIntersection intersection = getFirstIntersection(ix); + if (intersection.entry.w == NO_HIT) { + // Positive shape was completely missed - so exit early. + return intersection; + } + + // Clipping planes + #if defined(CLIPPING_PLANES) + intersectClippingPlanes(ray, ix); + #endif + + // Depth + intersectDepth(screenCoord, ray, ix); + + // Find the first intersection that's in front of the ray + #if (INTERSECTION_COUNT > 1) + initializeIntersections(ix); + for (int i = 0; i < INTERSECTION_COUNT; ++i) { + intersection = nextIntersection(ix); + if (intersection.exit.w > 0.0) { + // Set start to 0.0 when ray is inside the shape. + intersection.entry.w = max(intersection.entry.w, 0.0); + break; + } + } + #else + // Set start to 0.0 when ray is inside the shape. + intersection.entry.w = max(intersection.entry.w, 0.0); + #endif + + return intersection; +} +`;var Y8=`/* Box defines (set in Scene/VoxelBoxShape.js) +#define BOX_HAS_SHAPE_BOUNDS +*/ + +#if defined(BOX_HAS_SHAPE_BOUNDS) + uniform vec3 u_boxUvToShapeUvScale; + uniform vec3 u_boxUvToShapeUvTranslate; +#endif + +PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) { + // For BOX, UV space = shape space, so we can use positionUv as-is, + // and the Jacobian is the identity matrix, except that a step of 1 + // only spans half the shape space [-1, 1], so the identity is scaled. + return PointJacobianT(positionUv, mat3(0.5)); +} + +vec3 convertShapeToShapeUvSpace(in vec3 positionShape) { +#if defined(BOX_HAS_SHAPE_BOUNDS) + return positionShape * u_boxUvToShapeUvScale + u_boxUvToShapeUvTranslate; +#else + return positionShape; +#endif +} + +PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) { + PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv); + pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point); + return pointJacobian; +} + +vec3 convertShapeUvToUvSpace(in vec3 shapeUv) { +#if defined(BOX_HAS_SHAPE_BOUNDS) + return (shapeUv - u_boxUvToShapeUvTranslate) / u_boxUvToShapeUvScale; +#else + return shapeUv; +#endif +} + +vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { +#if defined(BOX_HAS_SHAPE_BOUNDS) + return shapeUv / u_boxUvToShapeUvScale; +#else + return shapeUv; +#endif +}`;var q8=`/* Cylinder defines (set in Scene/VoxelCylinderShape.js) +#define CYLINDER_HAS_SHAPE_BOUNDS_RADIUS +#define CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY +#define CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED +*/ + +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS) + uniform vec2 u_cylinderUvToShapeUvRadius; // x = scale, y = offset +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT) + uniform vec2 u_cylinderUvToShapeUvHeight; // x = scale, y = offset +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE) + uniform vec2 u_cylinderUvToShapeUvAngle; // x = scale, y = offset +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY) + uniform vec2 u_cylinderShapeUvAngleMinMax; +#endif +#if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY) || defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED) + uniform float u_cylinderShapeUvAngleRangeZeroMid; +#endif + +PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) { + // Convert from Cartesian UV space [0, 1] to Cartesian local space [-1, 1] + vec3 position = positionUv * 2.0 - 1.0; + + float radius = length(position.xy); // [0, 1] + vec3 radial = normalize(vec3(position.xy, 0.0)); + + // Shape space height is defined within [0, 1] + float height = positionUv.z; // [0, 1] + vec3 z = vec3(0.0, 0.0, 1.0); + + float angle = atan(position.y, position.x); + vec3 east = normalize(vec3(-position.y, position.x, 0.0)); + + vec3 point = vec3(radius, angle, height); + mat3 jacobianT = mat3(radial, east / length(position.xy), z); + return PointJacobianT(point, jacobianT); +} + +vec3 convertShapeToShapeUvSpace(in vec3 positionShape) { + float radius = positionShape.x; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS) + radius = radius * u_cylinderUvToShapeUvRadius.x + u_cylinderUvToShapeUvRadius.y; + #endif + + float angle = (positionShape.y + czm_pi) / czm_twoPi; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE) + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED) + // Comparing against u_cylinderShapeUvAngleMinMax has precision problems. u_cylinderShapeUvAngleRangeZeroMid is more conservative. + angle += float(angle < u_cylinderShapeUvAngleRangeZeroMid); + #endif + + // Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity. + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY) + angle = angle > u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.x : angle; + #elif defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY) + angle = angle < u_cylinderShapeUvAngleRangeZeroMid ? u_cylinderShapeUvAngleMinMax.y : angle; + #endif + + angle = angle * u_cylinderUvToShapeUvAngle.x + u_cylinderUvToShapeUvAngle.y; + #endif + + float height = positionShape.z; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT) + height = height * u_cylinderUvToShapeUvHeight.x + u_cylinderUvToShapeUvHeight.y; + #endif + + return vec3(radius, angle, height); +} + +PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) { + PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv); + pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point); + return pointJacobian; +} + +vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { + float radius = shapeUv.x; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_RADIUS) + radius /= u_cylinderUvToShapeUvRadius.x; + #endif + + float angle = shapeUv.y * czm_twoPi; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE) + angle /= u_cylinderUvToShapeUvAngle.x; + #endif + + float height = shapeUv.z; + #if defined(CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT) + height /= u_cylinderUvToShapeUvHeight.x; + #endif + + return vec3(radius, angle, height); +} +`;var K8=`/* Ellipsoid defines (set in Scene/VoxelEllipsoidShape.js) +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY +#define ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY +#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE +#define ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED +#define ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE +*/ + +uniform vec3 u_ellipsoidRadiiUv; // [0,1] +uniform vec2 u_evoluteScale; // (radiiUv.x ^ 2 - radiiUv.z ^ 2) * vec2(1.0, -1.0) / radiiUv; +uniform vec3 u_ellipsoidInverseRadiiSquaredUv; +#if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY) || defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY) || defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED) + uniform vec3 u_ellipsoidShapeUvLongitudeMinMaxMid; +#endif +#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE) + uniform vec2 u_ellipsoidUvToShapeUvLongitude; // x = scale, y = offset +#endif +#if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE) + uniform vec2 u_ellipsoidUvToShapeUvLatitude; // x = scale, y = offset +#endif +uniform float u_ellipsoidInverseHeightDifferenceUv; + +// robust iterative solution without trig functions +// https://github.com/0xfaded/ellipse_demo/issues/1 +// https://stackoverflow.com/questions/22959698/distance-from-given-point-to-given-ellipse +// Extended to return radius of curvature along with the point +vec3 nearestPointAndRadiusOnEllipse(vec2 pos, vec2 radii) { + vec2 p = abs(pos); + vec2 inverseRadii = 1.0 / radii; + + // We describe the ellipse parametrically: v = radii * vec2(cos(t), sin(t)) + // but store the cos and sin of t in a vec2 for efficiency. + // Initial guess: t = pi/4 + vec2 tTrigs = vec2(0.7071067811865476); + // Initial guess of point on ellipsoid + vec2 v = radii * tTrigs; + // Center of curvature of the ellipse at v + vec2 evolute = u_evoluteScale * tTrigs * tTrigs * tTrigs; + + const int iterations = 3; + for (int i = 0; i < iterations; ++i) { + // Find the (approximate) intersection of p - evolute with the ellipsoid. + vec2 q = normalize(p - evolute) * length(v - evolute); + // Update the estimate of t. + tTrigs = (q + evolute) * inverseRadii; + tTrigs = normalize(clamp(tTrigs, 0.0, 1.0)); + v = radii * tTrigs; + evolute = u_evoluteScale * tTrigs * tTrigs * tTrigs; + } + + return vec3(v * sign(pos), length(v - evolute)); +} + +PointJacobianT convertUvToShapeSpaceDerivative(in vec3 positionUv) { + // Convert from UV space [0, 1] to local space [-1, 1] + vec3 position = positionUv * 2.0 - 1.0; + // Undo the scaling from ellipsoid to sphere + position = position * u_ellipsoidRadiiUv; + + float longitude = atan(position.y, position.x); + vec3 east = normalize(vec3(-position.y, position.x, 0.0)); + + // Convert the 3D position to a 2D position relative to the ellipse (radii.x, radii.z) + // (assume radii.y == radii.x) and find the nearest point on the ellipse and its normal + float distanceFromZAxis = length(position.xy); + vec2 posEllipse = vec2(distanceFromZAxis, position.z); + vec3 surfacePointAndRadius = nearestPointAndRadiusOnEllipse(posEllipse, u_ellipsoidRadiiUv.xz); + vec2 surfacePoint = surfacePointAndRadius.xy; + + vec2 normal2d = normalize(surfacePoint * u_ellipsoidInverseRadiiSquaredUv.xz); + float latitude = atan(normal2d.y, normal2d.x); + vec3 north = vec3(-normal2d.y * normalize(position.xy), abs(normal2d.x)); + + float heightSign = length(posEllipse) < length(surfacePoint) ? -1.0 : 1.0; + float height = heightSign * length(posEllipse - surfacePoint); + vec3 up = normalize(cross(east, north)); + + vec3 point = vec3(longitude, latitude, height); + mat3 jacobianT = mat3(east / distanceFromZAxis, north / (surfacePointAndRadius.z + height), up); + return PointJacobianT(point, jacobianT); +} + +vec3 convertShapeToShapeUvSpace(in vec3 positionShape) { + // Longitude: shift & scale to [0, 1] + float longitude = (positionShape.x + czm_pi) / czm_twoPi; + + // Correct the angle when max < min + // Technically this should compare against min longitude - but it has precision problems so compare against the middle of empty space. + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED) + longitude += float(longitude < u_ellipsoidShapeUvLongitudeMinMaxMid.z); + #endif + + // Avoid flickering from reading voxels from both sides of the -pi/+pi discontinuity. + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY) + longitude = longitude > u_ellipsoidShapeUvLongitudeMinMaxMid.z ? u_ellipsoidShapeUvLongitudeMinMaxMid.x : longitude; + #endif + #if defined(ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY) + longitude = longitude < u_ellipsoidShapeUvLongitudeMinMaxMid.z ? u_ellipsoidShapeUvLongitudeMinMaxMid.y : longitude; + #endif + + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE) + longitude = longitude * u_ellipsoidUvToShapeUvLongitude.x + u_ellipsoidUvToShapeUvLongitude.y; + #endif + + // Latitude: shift and scale to [0, 1] + float latitude = (positionShape.y + czm_piOverTwo) / czm_pi; + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE) + latitude = latitude * u_ellipsoidUvToShapeUvLatitude.x + u_ellipsoidUvToShapeUvLatitude.y; + #endif + + // Height: scale to the range [0, 1] + float height = 1.0 + positionShape.z * u_ellipsoidInverseHeightDifferenceUv; + + return vec3(longitude, latitude, height); +} + +PointJacobianT convertUvToShapeUvSpaceDerivative(in vec3 positionUv) { + PointJacobianT pointJacobian = convertUvToShapeSpaceDerivative(positionUv); + pointJacobian.point = convertShapeToShapeUvSpace(pointJacobian.point); + return pointJacobian; +} + +vec3 scaleShapeUvToShapeSpace(in vec3 shapeUv) { + // Convert from [0, 1] to radians [-pi, pi] + float longitude = shapeUv.x * czm_twoPi; + #if defined (ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE) + longitude /= u_ellipsoidUvToShapeUvLongitude.x; + #endif + + // Convert from [0, 1] to radians [-pi/2, pi/2] + float latitude = shapeUv.y * czm_pi; + #if defined(ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE) + latitude /= u_ellipsoidUvToShapeUvLatitude.x; + #endif + + float height = shapeUv.z / u_ellipsoidInverseHeightDifferenceUv; + + return vec3(longitude, latitude, height); +} +`;var X8=`// These octree flags must be in sync with GpuOctreeFlag in VoxelTraversal.js +#define OCTREE_FLAG_INTERNAL 0 +#define OCTREE_FLAG_LEAF 1 +#define OCTREE_FLAG_PACKED_LEAF_FROM_PARENT 2 + +#define OCTREE_MAX_LEVELS 32 // Harcoded value because GLSL doesn't like variable length loops + +uniform sampler2D u_octreeInternalNodeTexture; +uniform vec2 u_octreeInternalNodeTexelSizeUv; +uniform int u_octreeInternalNodeTilesPerRow; +#if (SAMPLE_COUNT > 1) +uniform sampler2D u_octreeLeafNodeTexture; +uniform vec2 u_octreeLeafNodeTexelSizeUv; +uniform int u_octreeLeafNodeTilesPerRow; +#endif +uniform ivec3 u_dimensions; // does not include padding, and is in the z-up orientation +uniform ivec3 u_inputDimensions; // includes padding, and is in the orientation of the input data +#if defined(PADDING) + uniform ivec3 u_paddingBefore; +#endif + +struct OctreeNodeData { + int data; + int flag; +}; + +struct TraversalData { + ivec4 octreeCoords; + int parentOctreeIndex; +}; + +struct SampleData { + int megatextureIndex; + ivec4 tileCoords; + vec3 tileUv; + vec3 inputCoordinate; + #if (SAMPLE_COUNT > 1) + float weight; + #endif +}; + +// Integer mod: For WebGL1 only +int intMod(in int a, in int b) { + return a - (b * (a / b)); +} +int normU8_toInt(in float value) { + return int(value * 255.0); +} +int normU8x2_toInt(in vec2 value) { + return int(value.x * 255.0) + 256 * int(value.y * 255.0); +} +float normU8x2_toFloat(in vec2 value) { + return float(normU8x2_toInt(value)) / 65535.0; +} + +OctreeNodeData getOctreeNodeData(in vec2 octreeUv) { + vec4 texData = texture(u_octreeInternalNodeTexture, octreeUv); + + OctreeNodeData data; + data.data = normU8x2_toInt(texData.xy); + data.flag = normU8x2_toInt(texData.zw); + return data; +} + +OctreeNodeData getOctreeChildData(in int parentOctreeIndex, in ivec3 childCoord) { + int childIndex = childCoord.z * 4 + childCoord.y * 2 + childCoord.x; + int octreeCoordX = intMod(parentOctreeIndex, u_octreeInternalNodeTilesPerRow) * 9 + 1 + childIndex; + int octreeCoordY = parentOctreeIndex / u_octreeInternalNodeTilesPerRow; + vec2 octreeUv = u_octreeInternalNodeTexelSizeUv * vec2(float(octreeCoordX) + 0.5, float(octreeCoordY) + 0.5); + return getOctreeNodeData(octreeUv); +} + +int getOctreeParentIndex(in int octreeIndex) { + int octreeCoordX = intMod(octreeIndex, u_octreeInternalNodeTilesPerRow) * 9; + int octreeCoordY = octreeIndex / u_octreeInternalNodeTilesPerRow; + vec2 octreeUv = u_octreeInternalNodeTexelSizeUv * vec2(float(octreeCoordX) + 0.5, float(octreeCoordY) + 0.5); + vec4 parentData = texture(u_octreeInternalNodeTexture, octreeUv); + int parentOctreeIndex = normU8x2_toInt(parentData.xy); + return parentOctreeIndex; +} + +/** +* Convert a position in the uv-space of the tileset bounding shape +* into the uv-space of a tile within the tileset +*/ +vec3 getTileUv(in vec3 shapePosition, in ivec4 octreeCoords) { + // PERFORMANCE_IDEA: use bit-shifting (only in WebGL2) + float dimAtLevel = exp2(float(octreeCoords.w)); + return shapePosition * dimAtLevel - vec3(octreeCoords.xyz); +} + +vec3 getClampedTileUv(in vec3 shapePosition, in ivec4 octreeCoords) { + vec3 tileUv = getTileUv(shapePosition, octreeCoords); + return clamp(tileUv, vec3(0.0), vec3(1.0)); +} + +void addSampleCoordinates(in vec3 shapePosition, inout SampleData sampleData) { + vec3 tileUv = getClampedTileUv(shapePosition, sampleData.tileCoords); + + vec3 inputCoordinate = tileUv * vec3(u_dimensions); +#if defined(PADDING) + inputCoordinate += vec3(u_paddingBefore); +#endif +#if defined(Y_UP_METADATA_ORDER) +#if defined(SHAPE_BOX) + float inputY = inputCoordinate.y; + inputCoordinate.y = float(u_inputDimensions.y) - inputCoordinate.z; + inputCoordinate.z = inputY; +#elif defined(SHAPE_CYLINDER) + float angle = inputCoordinate.y; + float height = inputCoordinate.z; + #if (!defined(CYLINDER_HAS_SHAPE_BOUNDS_ANGLE)) + // Account for the different 0-angle convention in glTF vs 3DTiles + if (sampleData.tileCoords.w == 0) { + float angleCount = float(u_inputDimensions.z); + angle = mod(angle + angleCount / 2.0, angleCount); + } + #endif + inputCoordinate.y = height; + inputCoordinate.z = angle; +#endif +#endif + + sampleData.tileUv = tileUv; + sampleData.inputCoordinate = inputCoordinate; +} + +void getOctreeLeafSampleData(in OctreeNodeData data, in ivec4 octreeCoords, out SampleData sampleData) { + sampleData.megatextureIndex = data.data; + sampleData.tileCoords = (data.flag == OCTREE_FLAG_PACKED_LEAF_FROM_PARENT) + ? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1) + : octreeCoords; +} + +#if (SAMPLE_COUNT > 1) +void getOctreeLeafSampleDatas(in OctreeNodeData data, in ivec4 octreeCoords, out SampleData sampleDatas[SAMPLE_COUNT]) { + int leafIndex = data.data; + int leafNodeTexelCount = 2; + // Adding 0.5 moves to the center of the texel + float leafCoordXStart = float(intMod(leafIndex, u_octreeLeafNodeTilesPerRow) * leafNodeTexelCount) + 0.5; + float leafCoordY = float(leafIndex / u_octreeLeafNodeTilesPerRow) + 0.5; + + // Get an interpolation weight and a flag to determine whether to read the parent texture + vec2 leafUv0 = u_octreeLeafNodeTexelSizeUv * vec2(leafCoordXStart + 0.0, leafCoordY); + vec4 leafData0 = texture(u_octreeLeafNodeTexture, leafUv0); + float lerp = normU8x2_toFloat(leafData0.xy); + sampleDatas[0].weight = 1.0 - lerp; + sampleDatas[1].weight = lerp; + // TODO: this looks wrong? Should be comparing to OCTREE_FLAG_PACKED_LEAF_FROM_PARENT + sampleDatas[0].tileCoords = (normU8_toInt(leafData0.z) == 1) + ? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1) + : octreeCoords; + sampleDatas[1].tileCoords = (normU8_toInt(leafData0.w) == 1) + ? ivec4(octreeCoords.xyz / 2, octreeCoords.w - 1) + : octreeCoords; + + // Get megatexture indices for both samples + vec2 leafUv1 = u_octreeLeafNodeTexelSizeUv * vec2(leafCoordXStart + 1.0, leafCoordY); + vec4 leafData1 = texture(u_octreeLeafNodeTexture, leafUv1); + sampleDatas[0].megatextureIndex = normU8x2_toInt(leafData1.xy); + sampleDatas[1].megatextureIndex = normU8x2_toInt(leafData1.zw); +} +#endif + +OctreeNodeData traverseOctreeDownwards(in vec3 shapePosition, inout TraversalData traversalData) { + float sizeAtLevel = exp2(-1.0 * float(traversalData.octreeCoords.w)); + vec3 start = vec3(traversalData.octreeCoords.xyz) * sizeAtLevel; + vec3 end = start + vec3(sizeAtLevel); + OctreeNodeData childData; + + for (int i = 0; i < OCTREE_MAX_LEVELS; ++i) { + // Find out which octree child contains the position + // 0 if before center, 1 if after + vec3 center = 0.5 * (start + end); + vec3 childCoord = step(center, shapePosition); + + // Get octree coords for the next level down + ivec4 octreeCoords = traversalData.octreeCoords; + traversalData.octreeCoords = ivec4(octreeCoords.xyz * 2 + ivec3(childCoord), octreeCoords.w + 1); + + childData = getOctreeChildData(traversalData.parentOctreeIndex, ivec3(childCoord)); + + if (childData.flag != OCTREE_FLAG_INTERNAL) { + // leaf tile - stop traversing + break; + } + + // interior tile - keep going deeper + start = mix(start, center, childCoord); + end = mix(center, end, childCoord); + traversalData.parentOctreeIndex = childData.data; + } + + return childData; +} + +/** +* Transform a given position to an octree tile coordinate and a position within that tile, +* and find the corresponding megatexture index and texture coordinates +*/ +void traverseOctreeFromBeginning(in vec3 shapePosition, out TraversalData traversalData, out SampleData sampleDatas[SAMPLE_COUNT]) { + traversalData.octreeCoords = ivec4(0); + traversalData.parentOctreeIndex = 0; + + OctreeNodeData nodeData = getOctreeNodeData(vec2(0.0)); + if (nodeData.flag != OCTREE_FLAG_LEAF) { + nodeData = traverseOctreeDownwards(shapePosition, traversalData); + } + + #if (SAMPLE_COUNT == 1) + getOctreeLeafSampleData(nodeData, traversalData.octreeCoords, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[0]); + #else + getOctreeLeafSampleDatas(nodeData, traversalData.octreeCoords, sampleDatas); + addSampleCoordinates(shapePosition, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[1]); + #endif +} + +bool inRange(in vec3 v, in vec3 minVal, in vec3 maxVal) { + return clamp(v, minVal, maxVal) == v; +} + +bool insideTile(in vec3 shapePosition, in ivec4 octreeCoords) { + vec3 tileUv = getTileUv(shapePosition, octreeCoords); + bool inside = inRange(tileUv, vec3(0.0), vec3(1.0)); + // Assume (!) the position is always inside the root tile. + return inside || octreeCoords.w == 0; +} + +void traverseOctreeFromExisting(in vec3 shapePosition, inout TraversalData traversalData, inout SampleData sampleDatas[SAMPLE_COUNT]) { + if (insideTile(shapePosition, traversalData.octreeCoords)) { + for (int i = 0; i < SAMPLE_COUNT; i++) { + addSampleCoordinates(shapePosition, sampleDatas[i]); + } + return; + } + + // Go up tree until we find a parent tile containing shapePosition + for (int i = 0; i < OCTREE_MAX_LEVELS; ++i) { + traversalData.octreeCoords.xyz /= 2; + traversalData.octreeCoords.w -= 1; + + if (insideTile(shapePosition, traversalData.octreeCoords)) { + break; + } + + traversalData.parentOctreeIndex = getOctreeParentIndex(traversalData.parentOctreeIndex); + } + + // Go down tree + OctreeNodeData nodeData = traverseOctreeDownwards(shapePosition, traversalData); + + #if (SAMPLE_COUNT == 1) + getOctreeLeafSampleData(nodeData, traversalData.octreeCoords, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[0]); + #else + getOctreeLeafSampleDatas(nodeData, traversalData.octreeCoords, sampleDatas); + addSampleCoordinates(shapePosition, sampleDatas[0]); + addSampleCoordinates(shapePosition, sampleDatas[1]); + #endif +} +`;var J8=`// See Octree.glsl for the definitions of SampleData and intMod + +/* Megatexture defines (set in Scene/VoxelRenderResources.js) +#define SAMPLE_COUNT ### +#define NEAREST_SAMPLING +#define PADDING +*/ + +uniform ivec2 u_megatextureSliceDimensions; // number of slices per tile, in two dimensions +uniform ivec2 u_megatextureTileDimensions; // number of tiles per megatexture, in two dimensions +uniform vec2 u_megatextureVoxelSizeUv; +uniform vec2 u_megatextureSliceSizeUv; +uniform vec2 u_megatextureTileSizeUv; + +// Integer min, max, clamp: For WebGL1 only +int intMin(int a, int b) { + return a <= b ? a : b; +} +int intMax(int a, int b) { + return a >= b ? a : b; +} +int intClamp(int v, int minVal, int maxVal) { + return intMin(intMax(v, minVal), maxVal); +} + +vec2 index1DTo2DTexcoord(int index, ivec2 dimensions, vec2 uvScale) +{ + int indexX = intMod(index, dimensions.x); + int indexY = index / dimensions.x; + return vec2(indexX, indexY) * uvScale; +} + +/* + How is 3D data stored in a 2D megatexture? + + In this example there is only one loaded tile and it has 2x2x2 voxels (8 voxels total). + The data is sliced by Z. The data at Z = 0 is placed in texels (0,0), (0,1), (1,0), (1,1) and + the data at Z = 1 is placed in texels (2,0), (2,1), (3,0), (3,1). + Note that there could be empty space in the megatexture because it's a power of two. + + 0 1 2 3 + +---+---+---+---+ + | | | | | 3 + +---+---+---+---+ + | | | | | 2 + +-------+-------+ + |010|110|011|111| 1 + |--- ---|--- ---| + |000|100|001|101| 0 + +-------+-------+ + + When doing linear interpolation the megatexture needs to be sampled twice: once for + the Z slice above the voxel coordinate and once for the slice below. The two slices + are interpolated with fract(coord.z - 0.5). For example, a Z coordinate of 1.0 is + halfway between two Z slices so the interpolation factor is 0.5. Below is a side view + of the 3D voxel grid with voxel coordinates on the left side. + + 2 +---+ + |001| + 1 +-z-+ + |000| + 0 +---+ + + When doing nearest neighbor the megatexture only needs to be sampled once at the closest Z slice. +*/ + +Properties getPropertiesFromMegatexture(in SampleData sampleData) { + int tileIndex = sampleData.megatextureIndex; + + vec3 voxelCoord = sampleData.inputCoordinate; + #if defined(NEAREST_SAMPLING) + // Round to the center of the nearest voxel + voxelCoord = floor(voxelCoord) + vec3(0.5); + #endif + + // Tile location + vec2 tileUvOffset = index1DTo2DTexcoord(tileIndex, u_megatextureTileDimensions, u_megatextureTileSizeUv); + + // Slice location + float slice = voxelCoord.z - 0.5; + int sliceIndex = int(floor(slice)); + int sliceIndex0 = intClamp(sliceIndex, 0, u_inputDimensions.z - 1); + vec2 sliceUvOffset0 = index1DTo2DTexcoord(sliceIndex0, u_megatextureSliceDimensions, u_megatextureSliceSizeUv); + + // Voxel location + vec2 voxelUvOffset = clamp(voxelCoord.xy, vec2(0.5), vec2(u_inputDimensions.xy) - vec2(0.5)) * u_megatextureVoxelSizeUv; + + // Final location in the megatexture + vec2 uv0 = tileUvOffset + sliceUvOffset0 + voxelUvOffset; + + #if defined(NEAREST_SAMPLING) + return getPropertiesFromMegatextureAtUv(uv0); + #else + float sliceLerp = fract(slice); + int sliceIndex1 = intMin(sliceIndex + 1, u_inputDimensions.z - 1); + vec2 sliceUvOffset1 = index1DTo2DTexcoord(sliceIndex1, u_megatextureSliceDimensions, u_megatextureSliceSizeUv); + vec2 uv1 = tileUvOffset + sliceUvOffset1 + voxelUvOffset; + Properties properties0 = getPropertiesFromMegatextureAtUv(uv0); + Properties properties1 = getPropertiesFromMegatextureAtUv(uv1); + return mixProperties(properties0, properties1, sliceLerp); + #endif +} + +// Convert an array of sample datas to a final weighted properties. +Properties accumulatePropertiesFromMegatexture(in SampleData sampleDatas[SAMPLE_COUNT]) { + #if (SAMPLE_COUNT == 1) + return getPropertiesFromMegatexture(sampleDatas[0]); + #else + // When more than one sample is taken the accumulator needs to start at 0 + Properties properties = clearProperties(); + for (int i = 0; i < SAMPLE_COUNT; ++i) { + float weight = sampleDatas[i].weight; + + // Avoid reading the megatexture when the weight is 0 as it can be costly. + if (weight > 0.0) { + Properties tempProperties = getPropertiesFromMegatexture(sampleDatas[i]); + tempProperties = scaleProperties(tempProperties, weight); + properties = sumProperties(properties, tempProperties); + } + } + return properties; + #endif +} +`;var A0t={Z_UP:0,Y_UP:1},kh=Object.freeze(A0t);function p0t(e){let t=new I_;this.shaderBuilder=t;let n=e._customShader,i=wt(e._uniformMap,n.uniformMap);e._uniformMap=i;let o=n.uniforms;for(let A in o)if(o.hasOwnProperty(A)){let g=o[A];t.addUniform(g.type,A,pe.FRAGMENT)}t.addUniform("sampler2D","u_megatextureTextures[METADATA_COUNT]",pe.FRAGMENT),this.uniformMap=i;let r=e._clippingPlanes,s=l(r)&&r.enabled?r.length:0;this.clippingPlanes=r,this.clippingPlanesLength=s,t.addVertexLines([U8]),e.provider.metadataOrder===kh.Y_UP&&t.addDefine("Y_UP_METADATA_ORDER",void 0,pe.FRAGMENT);let a=e._provider.shape;a==="BOX"?t.addDefine("SHAPE_BOX",void 0,pe.FRAGMENT):a==="CYLINDER"?t.addDefine("SHAPE_CYLINDER",void 0,pe.FRAGMENT):a==="ELLIPSOID"&&t.addDefine("SHAPE_ELLIPSOID",void 0,pe.FRAGMENT),t.addFragmentLines([n.fragmentShaderText,"#line 0",X8,Q8,G8,J8]),s>0&&(t.addDefine("CLIPPING_PLANES",void 0,pe.FRAGMENT),t.addDefine("CLIPPING_PLANES_COUNT",s,pe.FRAGMENT),r.unionClippingRegions&&t.addDefine("CLIPPING_PLANES_UNION",void 0,pe.FRAGMENT),t.addFragmentLines([V8])),t.addFragmentLines([z8]),e._depthTest&&t.addDefine("DEPTH_TEST",void 0,pe.FRAGMENT),a==="BOX"?t.addFragmentLines([Y8,H8,ZT]):a==="CYLINDER"?t.addFragmentLines([q8,vP,W8,ZT]):a==="ELLIPSOID"&&t.addFragmentLines([K8,vP,j8,ZT]),t.addFragmentLines([k8]);let c=e._shape,u=c.shaderDefines;for(let A in u)if(u.hasOwnProperty(A)){let g=u[A];l(g)&&(g=g===!0?void 0:g,t.addDefine(A,g,pe.FRAGMENT))}let f=c.shaderMaximumIntersectionsLength;s>0&&(t.addDefine("CLIPPING_PLANES_INTERSECTION_INDEX",f,pe.FRAGMENT),s===1?f+=1:r.unionClippingRegions?f+=2:f+=1),e._depthTest&&(t.addDefine("DEPTH_INTERSECTION_INDEX",f,pe.FRAGMENT),f+=1),t.addDefine("INTERSECTION_COUNT",f,pe.FRAGMENT),(!d.equals(e.paddingBefore,d.ZERO)||!d.equals(e.paddingAfter,d.ZERO))&&t.addDefine("PADDING",void 0,pe.FRAGMENT),e._useLogDepth&&t.addDefine("LOG_DEPTH_READ_ONLY",void 0,pe.FRAGMENT),e._nearestSampling&&t.addDefine("NEAREST_SAMPLING",void 0,pe.FRAGMENT);let h=e._traversal;t.addDefine("SAMPLE_COUNT",`${h._sampleCount}`,pe.FRAGMENT)}var Z8=p0t;function g0t(e,t){let{shaderBuilder:n}=e,{names:i,types:o,componentTypes:r,minimumValues:s,maximumValues:a}=t._provider,c=o.length,u=l(s)&&l(a);n.addDefine("METADATA_COUNT",c,pe.FRAGMENT),u&&n.addDefine("STATISTICS",void 0,pe.FRAGMENT);for(let p=0;p<c;p++){let x=i[p],T=$8(o[p]),w=`PropertyStatistics_${x}`,M=`PropertyStatistics_${x}`;n.addStruct(w,M,pe.FRAGMENT),n.addStructField(w,T,"min"),n.addStructField(w,T,"max")}let f="MetadataStatistics",h="MetadataStatistics",A="metadataStatistics";n.addStruct(f,h,pe.FRAGMENT);for(let p=0;p<c;p++){let x=i[p],T=`PropertyStatistics_${x}`,w=x;n.addStructField(f,T,w)}let g="Metadata",m="Metadata",_="metadata";n.addStruct(g,m,pe.FRAGMENT);for(let p=0;p<c;p++){let x=$8(o[p]);n.addStructField(g,x,i[p])}let y="Attributes",C="Attributes",E="attributes";n.addStruct(y,C,pe.FRAGMENT),n.addStructField(y,"vec3","positionEC"),n.addStructField(y,"vec3","normalEC");let I="Voxel",b="Voxel",S="voxel";n.addStruct(I,b,pe.FRAGMENT),n.addStructField(I,"vec3","viewDirUv"),n.addStructField(I,"float","travelDistance"),n.addStructField(I,"int","stepCount"),n.addStructField(I,"int","tileIndex"),n.addStructField(I,"int","sampleIndex"),n.addStructField(I,"float","distanceToDepthBuffer");let B="FragmentInput";n.addStruct(B,"FragmentInput",pe.FRAGMENT),n.addStructField(B,h,A),n.addStructField(B,m,_),n.addStructField(B,C,E),n.addStructField(B,b,S);let P="Properties",N="Properties",L="properties";n.addStruct(P,N,pe.FRAGMENT);for(let p=0;p<c;p++){let x=$8(o[p]);n.addStructField(P,x,i[p])}{let p="clearProperties";n.addFunction(p,`${N} clearProperties()`,pe.FRAGMENT),n.addFunctionLines(p,[`${N} ${L};`]);for(let x=0;x<c;x++){let T=$8(o[x],r[x]);n.addFunctionLines(p,[`${L}.${i[x]} = ${T}(0.0);`])}n.addFunctionLines(p,[`return ${L};`])}{let p="sumProperties";n.addFunction(p,`${N} sumProperties(${N} propertiesA, ${N} propertiesB)`,pe.FRAGMENT),n.addFunctionLines(p,[`${N} ${L};`]);for(let x=0;x<c;x++){let T=i[x];n.addFunctionLines(p,[`${L}.${T} = propertiesA.${T} + propertiesB.${T};`])}n.addFunctionLines(p,[`return ${L};`])}{let p="scaleProperties";n.addFunction(p,`${N} scaleProperties(${N} ${L}, float scale)`,pe.FRAGMENT),n.addFunctionLines(p,[`${N} scaledProperties = ${L};`]);for(let x=0;x<c;x++)n.addFunctionLines(p,[`scaledProperties.${i[x]} *= scale;`]);n.addFunctionLines(p,["return scaledProperties;"])}{let p="mixProperties";n.addFunction(p,`${N} mixProperties(${N} propertiesA, ${N} propertiesB, float mixFactor)`,pe.FRAGMENT),n.addFunctionLines(p,[`${N} ${L};`]);for(let x=0;x<c;x++){let T=i[x];n.addFunctionLines(p,[`${L}.${T} = mix(propertiesA.${T}, propertiesB.${T}, mixFactor);`])}n.addFunctionLines(p,[`return ${L};`])}{let p="copyPropertiesToMetadata";n.addFunction(p,`void copyPropertiesToMetadata(in ${N} ${L}, inout ${m} ${_})`,pe.FRAGMENT);for(let x=0;x<c;x++){let T=i[x];n.addFunctionLines(p,[`${_}.${T} = ${L}.${T};`])}}if(u){let p="setStatistics";n.addFunction(p,`void setStatistics(inout ${h} ${A})`,pe.FRAGMENT);for(let x=0;x<c;x++){let T=i[x],w=o[x],M=gt.getComponentCount(w);for(let O=0;O<M;O++){let U=y0t(w,O),Q=s[x][O],z=a[x][O];!l(Q)||!l(z)||n.addFunctionLines(p,[`${A}.${T}.min${U} = ${kIe(Q)};`,`${A}.${T}.max${U} = ${kIe(z)};`])}}}{let p="getPropertiesFromMegatextureAtUv";n.addFunction(p,`${N} getPropertiesFromMegatextureAtUv(vec2 texcoord)`,pe.FRAGMENT),n.addFunctionLines(p,[`${N} ${L};`]);for(let x=0;x<c;x++){let T=o[x],w=r[x],M=_0t(T,w);n.addFunctionLines(p,[`properties.${i[x]} = texture(u_megatextureTextures[${x}], texcoord)${M};`])}n.addFunctionLines(p,[`return ${L};`])}}function $8(e){if(e===gt.SCALAR)return"float";if(e===gt.VEC2)return"vec2";if(e===gt.VEC3)return"vec3";if(e===gt.VEC4)return"vec4"}function _0t(e){if(e===gt.SCALAR)return".r";if(e===gt.VEC2)return".ra";if(e===gt.VEC3)return".rgb";if(e===gt.VEC4)return""}function kIe(e){let t=e.toString();return t.indexOf(".")===-1&&(t=`${e}.0`),t}function y0t(e,t){return e===gt.SCALAR?"":`[${t}]`}var e4=g0t;function C0t(e,t){let n=new Z8(e);e4(n,e);let{shaderBuilder:i,clippingPlanes:o,clippingPlanesLength:r}=n;if(r>0){let C="getClippingPlane",E=Dy(o,t),I=0,b=E.indexOf(")")+1,S=E.indexOf("{",b)+1,B=E.indexOf("}",S),v=E.slice(I,b),P=E.slice(S,B);i.addFunction(C,v,pe.FRAGMENT),i.addFunctionLines(C,[P])}let s=i.clone();s.addDefine("PICKING",void 0,pe.FRAGMENT);let a=i.clone();a.addDefine("PICKING_VOXEL",void 0,pe.FRAGMENT);let c=i.buildShaderProgram(t),u=s.buildShaderProgram(t),f=a.buildShaderProgram(t),h=Ue.fromCache({cull:{enabled:!0,face:Mi.BACK},depthTest:{enabled:!1},depthMask:!1,blending:pn.PRE_MULTIPLIED_ALPHA_BLEND}),A=t.getViewportQuadVertexArray(),g=e._depthTest,m=new nt({vertexArray:A,primitiveType:Me.TRIANGLES,renderState:h,shaderProgram:c,uniformMap:n.uniformMap,modelMatrix:e._compoundModelMatrix,pass:Be.VOXELS,executeInClosestFrustum:!0,owner:this,cull:g,occlude:g}),_=nt.shallowClone(m,new nt);_.shaderProgram=u,_.pickOnly=!0;let y=nt.shallowClone(m,new nt);if(y.shaderProgram=f,y.pickOnly=!0,l(e._drawCommand)){let C=e._drawCommand;C.shaderProgram=C.shaderProgram&&C.shaderProgram.destroy()}if(l(e._drawCommandPick)){let C=e._drawCommandPick;C.shaderProgram=C.shaderProgram&&C.shaderProgram.destroy()}if(l(e._drawCommandPickVoxel)){let C=e._drawCommandPickVoxel;C.shaderProgram=C.shaderProgram&&C.shaderProgram.destroy()}e._drawCommand=m,e._drawCommandPick=_,e._drawCommandPickVoxel=y}var t4=C0t;var E0t={FLOAT:"float",VEC2:"vec2",VEC3:"vec3",VEC4:"vec4",INT:"int",INT_VEC2:"ivec2",INT_VEC3:"ivec3",INT_VEC4:"ivec4",BOOL:"bool",BOOL_VEC2:"bvec2",BOOL_VEC3:"bvec3",BOOL_VEC4:"bvec4",MAT2:"mat2",MAT3:"mat3",MAT4:"mat4",SAMPLER_2D:"sampler2D",SAMPLER_CUBE:"samplerCube"},PP=Object.freeze(E0t);function I0t(e,t,n){let i=new Uint8ClampedArray(e.buffer),o=new ImageData(i,t,n),r=document.createElement("canvas");return r.width=t,r.height=n,r.getContext("2d").putImageData(o,0,0),r}var n4=I0t;function $T(){this._defaultTexture=void 0,this._textures={},this._loadedImages=[],this._lastUpdatedFrame=-1}$T.prototype.getTexture=function(e){return this._textures[e]};function x0t(e,t,n){n.resource.fetchImage().then(function(i){e._loadedImages.push({id:t,image:i,textureUniform:n})}).catch(function(){let i=e._textures[t];l(i)&&i!==e._defaultTexture&&i.destroy(),e._textures[t]=e._defaultTexture})}$T.prototype.loadTexture2D=function(e,t){l(t.typedArray)?this._loadedImages.push({id:e,textureUniform:t}):x0t(this,e,t)};function b0t(e,t,n){let{id:i,textureUniform:o,image:r}=t,s=n.webgl2?i4(o,r,n):T0t(o,r,n),a=e._textures[i];l(a)&&a!==n.defaultTexture&&a.destroy(),e._textures[i]=s}function i4(e,t,n){let{typedArray:i,sampler:o}=e,r=l(i)?GIe(e,n):new Nt({context:n,source:t,sampler:o});return UIe(o)&&r.generateMipmap(),r}function T0t(e,t,n){let{typedArray:i,sampler:o}=e,r=UIe(o),s=o.wrapS===Tn.REPEAT||o.wrapS===Tn.MIRRORED_REPEAT||o.wrapT===Tn.REPEAT||o.wrapT===Tn.MIRRORED_REPEAT,{width:a,height:c}=l(i)?e:t,u=[a,c].every(D.isPowerOfTwo);if((r||s)&&!u)if(l(i)){if(e.pixelDatatype===He.UNSIGNED_BYTE){let h=n4(i,a,c),A=GC(h);return i4({sampler:o},A,n)}}else{let h=GC(t);return i4(e,h,n)}else return i4(e,t,n);return r?console.warn("Texture requires resizing for mipmaps but pixelDataType cannot be resized. The texture may be rendered incorrectly."):s&&console.warn("Texture requires resizing for wrapping but pixelDataType cannot be resized. The texture may be rendered incorrectly."),GIe(e,n)}function UIe(e){return[Zt.NEAREST_MIPMAP_NEAREST,Zt.NEAREST_MIPMAP_LINEAR,Zt.LINEAR_MIPMAP_NEAREST,Zt.LINEAR_MIPMAP_LINEAR].includes(e.minificationFilter)}function GIe(e,t){let{pixelFormat:n,pixelDatatype:i,width:o,height:r,typedArray:s,sampler:a}=e;return new Nt({context:t,pixelFormat:n,pixelDatatype:i,source:{arrayBufferView:s,width:o,height:r},sampler:a,flipY:!1})}$T.prototype.update=function(e){if(e.frameNumber===this._lastUpdatedFrame)return;this._lastUpdatedFrame=e.frameNumber;let t=e.context;this._defaultTexture=t.defaultTexture;let n=this._loadedImages;for(let i=0;i<n.length;i++){let o=n[i];b0t(this,o,t)}n.length=0};$T.prototype.isDestroyed=function(){return!1};$T.prototype.destroy=function(){let e=this._textures;for(let t in e)if(e.hasOwnProperty(t)){let n=e[t];n!==this._defaultTexture&&n.destroy()}return ue(this)};var o4=$T;function RP(e){e=e??V.EMPTY_OBJECT,this.mode=e.mode??p_.MODIFY_MATERIAL,this.lightingModel=e.lightingModel,this.uniforms=e.uniforms??V.EMPTY_OBJECT,this.varyings=e.varyings??V.EMPTY_OBJECT,this.vertexShaderText=e.vertexShaderText,this.fragmentShaderText=e.fragmentShaderText,this.translucencyMode=e.translucencyMode??tE.INHERIT,this._textureManager=new o4,this._defaultTexture=void 0,this.uniformMap=S0t(this),this.usedVariablesVertex={attributeSet:{},featureIdSet:{},metadataSet:{}},this.usedVariablesFragment={attributeSet:{},featureIdSet:{},metadataSet:{},materialSet:{}},D0t(this),v0t(this)}function S0t(e){let t=e.uniforms,n={};for(let i in t)if(t.hasOwnProperty(i)){let o=t[i];o.type===PP.SAMPLER_2D?(e._textureManager.loadTexture2D(i,o.value),n[i]=w0t(e,i)):n[i]=B0t(e,i)}return n}function w0t(e,t){return function(){return e._textureManager.getTexture(t)??e._defaultTexture}}function B0t(e,t){return function(){return e.uniforms[t].value}}function y0(e,t,n){let i;for(;(i=t.exec(e))!==null;){let o=i[1];n[o]=!0}}function D0t(e){let t=/[vf]sInput\.attributes\.(\w+)/g,n=/[vf]sInput\.featureIds\.(\w+)/g,i=/[vf]sInput\.metadata.(\w+)/g,o,r=e.vertexShaderText;l(r)&&(o=e.usedVariablesVertex.attributeSet,y0(r,t,o),o=e.usedVariablesVertex.featureIdSet,y0(r,n,o),o=e.usedVariablesVertex.metadataSet,y0(r,i,o));let s=e.fragmentShaderText;if(l(s)){o=e.usedVariablesFragment.attributeSet,y0(s,t,o),o=e.usedVariablesFragment.featureIdSet,y0(s,n,o),o=e.usedVariablesFragment.metadataSet,y0(s,i,o);let a=/material\.(\w+)/g,c=e.usedVariablesFragment.materialSet;y0(s,a,c)}}function zIe(e){let t=/^.*MC$/,n=/^.*WC$/,i=/^.*EC$/;return t.test(e)?`${e} (model coordinates)`:n.test(e)?`${e} (Cartesian world coordinates)`:i.test(e)?`${e} (eye coordinates)`:e}function zc(e,t,n,i){if(e.hasOwnProperty(t)){let o=`${zIe(t)} is not available in the ${i} shader. Did you mean ${zIe(n)} instead?`;throw new me(o)}}function v0t(e){let t=e.usedVariablesVertex.attributeSet;zc(t,"position","positionMC","vertex"),zc(t,"normal","normalMC","vertex"),zc(t,"tangent","tangentMC","vertex"),zc(t,"bitangent","bitangentMC","vertex"),zc(t,"positionWC","positionMC","vertex"),zc(t,"positionEC","positionMC","vertex"),zc(t,"normalEC","normalMC","vertex"),zc(t,"tangentEC","tangentMC","vertex"),zc(t,"bitangentEC","bitangentMC","vertex");let n=e.usedVariablesFragment.attributeSet;zc(n,"position","positionEC","fragment"),zc(n,"normal","normalEC","fragment"),zc(n,"tangent","tangentEC","fragment"),zc(n,"bitangent","bitangentEC","fragment"),zc(n,"normalMC","normalEC","fragment"),zc(n,"tangentMC","tangentEC","fragment"),zc(n,"bitangentMC","bitangentEC","fragment")}RP.prototype.setUniform=function(e,t){let n=this.uniforms[e];n.type===PP.SAMPLER_2D?this._textureManager.loadTexture2D(e,t):l(t.clone)?n.value=t.clone(n.value):n.value=t};RP.prototype.update=function(e){this._defaultTexture=e.context.defaultTexture,this._textureManager.update(e)};RP.prototype.isDestroyed=function(){return!1};RP.prototype.destroy=function(){this._textureManager=this._textureManager&&this._textureManager.destroy(),ue(this)};var eS=RP;function ig(e){let{loader:t,metadata:n}=e;this._loader=t,this._metadata=n,this._resourcesLoaded=!1,this._ready=!1}Object.defineProperties(ig.prototype,{ready:{get:function(){return this._ready}},metadata:{get:function(){return this._metadata}}});ig.fromMetadataArray=function(e){return new ig({metadata:e})};ig.fromGltf=async function(e){let t=new Ff({gltfResource:e,releaseGltfJson:!1,loadAttributesAsTypedArray:!0});try{await t.load()}catch(n){throw t.destroy(),n}return new ig({loader:t})};ig.prototype.update=function(e,t){let n=this._loader;if(!this._ready){if(t.afterRender.push(()=>!0),!l(n)){this._ready=!0;return}if(this._resourcesLoaded){let{structuralMetadata:i,scene:o}=n.components,{attributes:r}=o.nodes[0].primitives[0];this._metadata=P0t(r,i,e),this._ready=!0;return}this._resourcesLoaded=n.process(t)}};function P0t(e,t,n){let{className:i,names:o,types:r,componentTypes:s}=n.provider,a=t.propertyAttributes.find(f=>f.class.id===i),{properties:c}=a,u=new Array(o.length);for(let f=0;f<e.length;f++){let h=c[o[f]].attribute,A=e.find(y=>y.name===h);if(!l(A))continue;let g=zt.toComponentDatatype(s[f]),m=gt.getComponentCount(r[f]),_=A.count*m;u[f]=q.createArrayBufferView(g,A.typedArray.buffer,A.typedArray.byteOffset+A.byteOffset,_)}return u}ig.prototype.isDestroyed=function(){return!1};ig.prototype.destroy=function(){return this._loader=this._loader&&this._loader.destroy(),ue(this)};var tS=ig;function _A(){this.orientedBoundingBox=new Qn,this.boundingSphere=new le,this.boundTransform=new R,this.shapeTransform=new R,this._minBounds=_A.DefaultMinBounds.clone(),this._maxBounds=_A.DefaultMaxBounds.clone(),this.shaderUniforms={renderMinBounds:new d,renderMaxBounds:new d,boxUvToShapeUvScale:new d,boxUvToShapeUvTranslate:new d},this.shaderDefines={BOX_INTERSECTION_INDEX:void 0,BOX_HAS_SHAPE_BOUNDS:void 0},this.shaderMaximumIntersectionsLength=0}var R0t=new d,RJ=new d,M0t=new J,N0t=new d,L0t=new d,O0t=new d,F0t=new d,VIe=R.fromRotationTranslation(J.fromUniformScale(.5,new J),new d(.5,.5,.5),new R);_A.prototype.update=function(e,t,n,i,o){i=i??t.clone(N0t),o=o??n.clone(L0t),t=d.clone(t,this._minBounds),n=d.clone(n,this._maxBounds);let r=d.clamp(t,i,o,O0t),s=d.clamp(n,i,o,F0t),a=R.getScale(e,RJ);if(r.x>s.x||r.y>s.y||r.z>s.z||(r.x===s.x)+(r.y===s.y)+(r.z===s.z)>=2||a.x===0||a.y===0||a.z===0)return!1;this.shapeTransform=R.clone(e,this.shapeTransform),this.orientedBoundingBox=NJ(r,s,this.shapeTransform,this.orientedBoundingBox),this.boundTransform=R.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=le.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let{shaderUniforms:c,shaderDefines:u}=this;for(let g in u)u.hasOwnProperty(g)&&(u[g]=void 0);let f=0;u.BOX_INTERSECTION_INDEX=f,f+=1,c.renderMinBounds=R.multiplyByPoint(VIe,r,c.renderMinBounds),c.renderMaxBounds=R.multiplyByPoint(VIe,s,c.renderMaxBounds),u.BOX_HAS_SHAPE_BOUNDS=!0;let h=t,A=n;return c.boxUvToShapeUvScale=d.fromElements(2/(h.x===A.x?1:A.x-h.x),2/(h.y===A.y?1:A.y-h.y),2/(h.z===A.z?1:A.z-h.z),c.boxUvToShapeUvScale),c.boxUvToShapeUvTranslate=d.fromElements(-c.boxUvToShapeUvScale.x*(h.x*.5+.5),-c.boxUvToShapeUvScale.y*(h.y*.5+.5),-c.boxUvToShapeUvScale.z*(h.z*.5+.5),c.boxUvToShapeUvTranslate),this.shaderMaximumIntersectionsLength=f,!0};var r4=new d,MJ=new d;_A.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=this._minBounds,s=this._maxBounds,a=1/Math.pow(2,e),c=d.fromElements(D.lerp(r.x,s.x,a*t),D.lerp(r.y,s.y,a*n),D.lerp(r.z,s.z,a*i),r4),u=d.fromElements(D.lerp(r.x,s.x,a*(t+1)),D.lerp(r.y,s.y,a*(n+1)),D.lerp(r.z,s.z,a*(i+1)),MJ);return NJ(c,u,this.shapeTransform,o)};var HIe=new d;_A.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=d.divideComponents(d.ONE,t,HIe),s=d.multiplyByScalar(r,o,HIe),a=d.multiplyByScalar(d.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,r4),o,r4),c=d.add(a,s,MJ),u=this._minBounds,f=this._maxBounds,h=d.fromElements(D.lerp(u.x,f.x,a.x),D.lerp(u.y,f.y,a.y),D.lerp(u.z,f.z,a.z),r4),A=d.fromElements(D.lerp(u.x,f.x,c.x),D.lerp(u.y,f.y,c.y),D.lerp(u.z,f.z,c.z),MJ);return NJ(h,A,this.shapeTransform,i)};_A.DefaultMinBounds=Object.freeze(new d(-1,-1,-1));_A.DefaultMaxBounds=Object.freeze(new d(1,1,1));function NJ(e,t,n,i){let o=_A.DefaultMinBounds,r=_A.DefaultMaxBounds;if(d.equals(e,o)&&d.equals(t,r))i.center=R.getTranslation(n,i.center),i.halfAxes=R.getMatrix3(n,i.halfAxes);else{let a=R.getScale(n,RJ),c=d.midpoint(e,t,R0t);i.center=R.multiplyByPoint(n,c,i.center),a=d.fromElements(a.x*.5*(t.x-e.x),a.y*.5*(t.y-e.y),a.z*.5*(t.z-e.z),RJ);let u=R.getRotation(n,M0t);i.halfAxes=J.setScale(u,a,i.halfAxes)}return i}var nS=_A;function og(){this.orientedBoundingBox=new Qn,this.boundingSphere=new le,this.boundTransform=new R,this.shapeTransform=new R,this._minBounds=og.DefaultMinBounds.clone(),this._maxBounds=og.DefaultMaxBounds.clone(),this.shaderUniforms={cylinderRenderRadiusMinMax:new k,cylinderRenderAngleMinMax:new k,cylinderRenderHeightMinMax:new k,cylinderUvToShapeUvRadius:new k,cylinderUvToShapeUvAngle:new k,cylinderUvToShapeUvHeight:new k,cylinderShapeUvAngleMinMax:new k,cylinderShapeUvAngleRangeZeroMid:0},this.shaderDefines={CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN:void 0,CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF:void 0,CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF:void 0,CYLINDER_HAS_SHAPE_BOUNDS_RADIUS:void 0,CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY:void 0,CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED:void 0,CYLINDER_INTERSECTION_INDEX_RADIUS_MAX:void 0,CYLINDER_INTERSECTION_INDEX_RADIUS_MIN:void 0,CYLINDER_INTERSECTION_INDEX_ANGLE:void 0},this.shaderMaximumIntersectionsLength=0}var YIe=new d,Q0t=new d,k0t=new d,U0t=new d,G0t=new d;og.prototype.update=function(e,t,n,i,o){i=i??t.clone(Q0t),o=o??n.clone(k0t),t=d.clone(t,this._minBounds),n=d.clone(n,this._maxBounds);let{DefaultMinBounds:r,DefaultMaxBounds:s}=og,a=s.y-r.y,c=.5*a,u=D.EPSILON10,f=D.EPSILON3,h=D.EPSILON10;t.x=Math.max(0,t.x),n.x=Math.max(0,n.x),t.y=D.negativePiToPi(t.y),n.y=D.negativePiToPi(n.y),i.y=D.negativePiToPi(i.y),o.y=D.negativePiToPi(o.y);let A=d.maximumByComponent(t,i,U0t),g=d.minimumByComponent(n,o,G0t),m=R.getScale(e,YIe);if(g.x===0||A.x>g.x||A.z>g.z||D.equalsEpsilon(m.x,0,void 0,u)||D.equalsEpsilon(m.y,0,void 0,u)||D.equalsEpsilon(m.z,0,void 0,u))return!1;this.shapeTransform=R.clone(e,this.shapeTransform),this.orientedBoundingBox=FJ(A,g,this.shapeTransform,this.orientedBoundingBox),this.boundTransform=R.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=le.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let _=t.x===r.x&&n.x===s.x,y=n.y<t.y,C=n.y-t.y+y*a,E=C>c+h&&C<a-h,I=C<c-h,b=C>=c-h&&C<=c+h,S=E||I||b,B=D.equalsEpsilon(t.y,r.y,void 0,f),v=D.equalsEpsilon(n.y,s.y,void 0,f),P=t.z===r.z&&n.z===s.z,N=A.x===r.x,L=g.y<A.y,p=g.y-A.y+L*a,x=p>=c-h&&p<a-h,T=p>h&&p<c-h,w=p<=h,M=x||T||w,{shaderUniforms:O,shaderDefines:U}=this;for(let z in U)U.hasOwnProperty(z)&&(U[z]=void 0);let Q=0;if(U.CYLINDER_INTERSECTION_INDEX_RADIUS_MAX=Q,Q+=1,N||(U.CYLINDER_HAS_RENDER_BOUNDS_RADIUS_MIN=!0,U.CYLINDER_INTERSECTION_INDEX_RADIUS_MIN=Q,Q+=1),O.cylinderRenderRadiusMinMax=k.fromElements(A.x,g.x,O.cylinderRenderRadiusMinMax),A.x===g.x&&(U.CYLINDER_HAS_RENDER_BOUNDS_RADIUS_FLAT=!0),!_){U.CYLINDER_HAS_SHAPE_BOUNDS_RADIUS=!0;let z=n.x-t.x,F=0,H=1;z!==0&&(F=1/z,H=-t.x/z),O.cylinderUvToShapeUvRadius=k.fromElements(F,H,O.cylinderUvToShapeUvRadius)}if(!P){U.CYLINDER_HAS_SHAPE_BOUNDS_HEIGHT=!0;let z=n.z-t.z,F=0,H=1;z!==0&&(F=2/z,H=-(t.z+1)/z),O.cylinderUvToShapeUvHeight=k.fromElements(F,H,O.cylinderUvToShapeUvHeight)}if(O.cylinderRenderHeightMinMax=k.fromElements(A.z,g.z,O.cylinderRenderHeightMinMax),y&&(U.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_MAX_REVERSED=!0),M&&(U.CYLINDER_HAS_RENDER_BOUNDS_ANGLE=!0,U.CYLINDER_INTERSECTION_INDEX_ANGLE=Q,x?(U.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_UNDER_HALF=!0,Q+=1):T?(U.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_OVER_HALF=!0,Q+=2):w&&(U.CYLINDER_HAS_RENDER_BOUNDS_ANGLE_RANGE_EQUAL_ZERO=!0,Q+=2),O.cylinderRenderAngleMinMax=k.fromElements(A.y,g.y,O.cylinderRenderAngleMinMax)),S){U.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE=!0,B&&(U.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MIN_DISCONTINUITY=!0),v&&(U.CYLINDER_HAS_SHAPE_BOUNDS_ANGLE_MAX_DISCONTINUITY=!0);let z=(t.y-r.y)/a,F=(n.y-r.y)/a,H=1-C/a;if(O.cylinderShapeUvAngleMinMax=k.fromElements(z,F,O.cylinderShapeUvAngleMinMax),O.cylinderShapeUvAngleRangeZeroMid=(F+.5*H)%1,C<=h)O.cylinderUvToShapeUvAngle=k.fromElements(0,1,O.cylinderUvToShapeUvAngle);else{let W=a/C,Z=-(t.y-r.y)/C;O.cylinderUvToShapeUvAngle=k.fromElements(W,Z,O.cylinderUvToShapeUvAngle)}}return this.shaderMaximumIntersectionsLength=Q,!0};var s4=new d,OJ=new d;og.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=this._minBounds,s=this._maxBounds,a=1/Math.pow(2,e),c=d.fromElements(D.lerp(r.x,s.x,t*a),D.lerp(r.y,s.y,n*a),D.lerp(r.z,s.z,i*a),s4),u=d.fromElements(D.lerp(r.x,s.x,(t+1)*a),D.lerp(r.y,s.y,(n+1)*a),D.lerp(r.z,s.z,(i+1)*a),OJ);return FJ(c,u,this.shapeTransform,o)};var WIe=new d;og.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=d.divideComponents(d.ONE,t,WIe),s=d.multiplyByScalar(r,o,WIe),a=d.multiplyByScalar(d.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,s4),o,s4),c=d.add(a,s,OJ),u=this._minBounds,f=this._maxBounds,h=d.fromElements(D.lerp(u.x,f.x,a.x),D.lerp(u.y,f.y,a.y),D.lerp(u.z,f.z,a.z),s4),A=d.fromElements(D.lerp(u.x,f.x,c.x),D.lerp(u.y,f.y,c.y),D.lerp(u.z,f.z,c.z),OJ);return FJ(h,A,this.shapeTransform,i)};og.DefaultMinBounds=Object.freeze(new d(0,-D.PI,-1));og.DefaultMaxBounds=Object.freeze(new d(1,+D.PI,1));var z0t=5,V0t=new Array(z0t),H0t=new d,W0t=new J,j0t=new R,Y0t=new R,q0t=new R,LJ=new R,K0t=new d,X0t=new d,J0t=new d,qIe=new Array(8);for(let e=0;e<8;e++)qIe[e]=new d;function jIe(e,t,n){return Math.abs(se.dot(e,t))<n}function Z0t(e){let t=R.getColumn(e,0,K0t),n=R.getColumn(e,1,X0t),i=R.getColumn(e,2,J0t),o=D.EPSILON4;return jIe(t,n,o)&&jIe(n,i,o)}function $0t(e,t){let n=qIe;d.fromElements(-.5,-.5,-.5,n[0]),d.fromElements(-.5,-.5,.5,n[1]),d.fromElements(-.5,.5,-.5,n[2]),d.fromElements(-.5,.5,.5,n[3]),d.fromElements(.5,-.5,-.5,n[4]),d.fromElements(.5,-.5,.5,n[5]),d.fromElements(.5,.5,-.5,n[6]),d.fromElements(.5,.5,.5,n[7]);for(let i=0;i<8;++i)R.multiplyByPoint(e,n[i],n[i]);return Qn.fromPoints(n,t)}function FJ(e,t,n,i){let o=e.x,r=t.x,s=e.y,a=t.y<s?t.y+D.TWO_PI:t.y,c=e.z,u=t.z,f=a-s,h=s+f*.5,A=V0t,g=0;A[g++]=s,A[g++]=a,A[g++]=h,f>D.PI&&(A[g++]=h-D.PI_OVER_TWO,A[g++]=h+D.PI_OVER_TWO);let m=Number.POSITIVE_INFINITY,_=Number.POSITIVE_INFINITY,y=Number.NEGATIVE_INFINITY,C=Number.NEGATIVE_INFINITY;for(let O=0;O<g;++O){let U=A[O]-h,Q=Math.cos(U),z=Math.sin(U),F=Q*o,H=z*o,W=Q*r,Z=z*r;m=Math.min(m,F,W),_=Math.min(_,H,Z),y=Math.max(y,F,W),C=Math.max(C,H,Z)}let E=y-m,I=C-_,b=u-c,S=(m+y)*.5,B=(_+C)*.5,v=(c+u)*.5,P=d.fromElements(S,B,v,H0t),N=J.fromRotationZ(h,W0t),L=d.fromElements(E,I,b,YIe),p=R.fromScale(L,q0t),x=R.fromRotation(N,Y0t),T=R.fromTranslation(P,j0t),w=R.multiplyTransformation(x,R.multiplyTransformation(T,p,LJ),LJ),M=R.multiplyTransformation(n,w,LJ);return Z0t(M)?Qn.fromTransformation(M,i):$0t(M,i)}var iS=og;function rg(){this.orientedBoundingBox=new Qn,this.boundingSphere=new le,this.boundTransform=new R,this.shapeTransform=new R,this._rectangle=new ae,this._minimumHeight=rg.DefaultMinBounds.z,this._maximumHeight=rg.DefaultMaxBounds.z,this._ellipsoid=new te,this._translation=new d,this._rotation=new J,this.shaderUniforms={ellipsoidRadiiUv:new d,eccentricitySquared:0,evoluteScale:new k,ellipsoidInverseRadiiSquaredUv:new d,ellipsoidRenderLongitudeMinMax:new k,ellipsoidShapeUvLongitudeMinMaxMid:new d,ellipsoidUvToShapeUvLongitude:new k,ellipsoidUvToShapeUvLatitude:new k,ellipsoidRenderLatitudeSinMinMax:new k,ellipsoidInverseHeightDifferenceUv:0,clipMinMaxHeight:new k},this.shaderDefines={ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF:void 0,ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF:void 0,ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE:void 0,ELLIPSOID_INTERSECTION_INDEX_LONGITUDE:void 0,ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX:void 0,ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN:void 0,ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX:void 0,ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN:void 0},this.shaderMaximumIntersectionsLength=0}var eIt=new d,tIt=new d,nIt=new d,iIt=new d,oIt=new d,rIt=new d,sIt=new d,aIt=new d,cIt=new J,KIe=new d,XIe=new d,lIt=new ae;rg.prototype.update=function(e,t,n,i,o){let{DefaultMinBounds:r,DefaultMaxBounds:s}=rg;i=i??r,o=o??s;let a=D.EPSILON10,c=D.EPSILON3,u=D.EPSILON10,f=D.EPSILON10,h=D.EPSILON3,A=R.getScale(e,aIt),g=d.clone(r,eIt);g.z=-d.minimumComponent(A);let m=d.clamp(t,g,s,tIt),_=d.clamp(n,g,s,nIt),y=d.clamp(i,g,s,iIt),C=d.clamp(o,g,s,oIt),E=d.maximumByComponent(m,y,rIt),I=d.minimumByComponent(_,C,sIt),b=d.add(A,d.fromElements(_.z,_.z,_.z,KIe),KIe),S=d.maximumComponent(b),B=d.add(A,d.fromElements(I.z,I.z,I.z,XIe),XIe);if(E.y>I.y||E.y===s.y||I.y===r.y||E.z>I.z||D.equalsEpsilon(B,d.ZERO,void 0,a))return!1;this._rectangle=ae.fromRadians(m.x,m.y,_.x,_.y),this._translation=R.getTranslation(e,this._translation),this._rotation=R.getRotation(e,this._rotation),this._ellipsoid=te.fromCartesian3(A,this._ellipsoid),this._minimumHeight=m.z,this._maximumHeight=_.z;let v=ae.fromRadians(E.x,E.y,I.x,I.y,lIt);this.orientedBoundingBox=QJ(v,E.z,I.z,this._ellipsoid,this._translation,this._rotation,this.orientedBoundingBox),this.shapeTransform=R.fromRotationTranslation(J.setScale(this._rotation,b,cIt),this._translation,this.shapeTransform),this.boundTransform=R.fromRotationTranslation(this.orientedBoundingBox.halfAxes,this.orientedBoundingBox.center,this.boundTransform),this.boundingSphere=le.fromOrientedBoundingBox(this.orientedBoundingBox,this.boundingSphere);let P=s.x-r.x,N=.5*P,L=I.x<E.x,p=I.x-E.x+L*P,x=p<=u,T=p>=N-u&&p<P-u,w=p>u&&p<N-u,M=x||T||w,O=_.x<m.x,U=_.x-m.x+O*P,Q=U>N+u&&U<P-u,z=U>=N-u&&U<=N+u,F=U<N-u,H=Q||z||F,W=I.y<-h,Z=I.y>=-h&&I.y<=+h,Y=I.y>+h&&I.y<s.y-f,$=W||Z||Y,X=E.y>r.y+f&&E.y<-h,he=E.y>=-h&&E.y<=+h,ge=E.y>+h,fe=X||he||ge,ye=$||fe,Ie=_.y-m.y,ve=_.y<-h,Te=_.y>=-h&&_.y<=+h,ke=_.y>+h&&_.y<s.y-f,Ge=ve||Te||ke,qe=m.y>r.y+f&&m.y<-h,tt=m.y>=-h&&m.y<=+h,$t=m.y>+h,tn=Ge||(qe||tt||$t),{shaderUniforms:Wt,shaderDefines:vt}=this;for(let Ct in vt)vt.hasOwnProperty(Ct)&&(vt[Ct]=void 0);Wt.ellipsoidRadiiUv=d.divideByScalar(b,S,Wt.ellipsoidRadiiUv);let{x:bi,z:di}=Wt.ellipsoidRadiiUv,Ot=di/bi;Wt.eccentricitySquared=1-Ot*Ot,Wt.evoluteScale=k.fromElements((bi*bi-di*di)/bi,(di*di-bi*bi)/di,Wt.evoluteScale),Wt.ellipsoidInverseRadiiSquaredUv=d.divideComponents(d.ONE,d.multiplyComponents(Wt.ellipsoidRadiiUv,Wt.ellipsoidRadiiUv,Wt.ellipsoidInverseRadiiSquaredUv),Wt.ellipsoidInverseRadiiSquaredUv);let Tt=0;vt.ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MAX=Tt,Tt+=1,vt.ELLIPSOID_INTERSECTION_INDEX_HEIGHT_MIN=Tt,Tt+=1,Wt.clipMinMaxHeight=k.fromElements((E.z-_.z)/S,(I.z-_.z)/S,Wt.clipMinMaxHeight);let ii=(_.z-m.z)/S;if(Wt.ellipsoidInverseHeightDifferenceUv=1/ii,m.z===_.z&&(Wt.ellipsoidInverseHeightDifferenceUv=0),M&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE=!0,vt.ELLIPSOID_INTERSECTION_INDEX_LONGITUDE=Tt,T?(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_UNDER_HALF=!0,Tt+=1):w?(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_OVER_HALF=!0,Tt+=2):x&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_RANGE_EQUAL_ZERO=!0,Tt+=2),Wt.ellipsoidRenderLongitudeMinMax=k.fromElements(E.x,I.x,Wt.ellipsoidRenderLongitudeMinMax)),H)if(vt.ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE=!0,_.x<m.x&&(vt.ELLIPSOID_HAS_SHAPE_BOUNDS_LONGITUDE_MIN_MAX_REVERSED=!0),U<=u)Wt.ellipsoidUvToShapeUvLongitude=k.fromElements(0,1,Wt.ellipsoidUvToShapeUvLongitude);else{let Ro=P/U,Qo=-(m.x-r.x)/U;Wt.ellipsoidUvToShapeUvLongitude=k.fromElements(Ro,Qo,Wt.ellipsoidUvToShapeUvLongitude)}if(M){let Ct=D.equalsEpsilon(E.x,r.x,void 0,c),Ro=D.equalsEpsilon(I.x,s.x,void 0,c);Ct&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MIN_DISCONTINUITY=!0),Ro&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LONGITUDE_MAX_DISCONTINUITY=!0);let Qo=(m.x-r.x)/P,ya=(_.x-r.x)/P,mr=(I.x-r.x)/P,Tr=1-p/P,Oe=(mr+.5*Tr)%1;Wt.ellipsoidShapeUvLongitudeMinMaxMid=d.fromElements(Qo,ya,Oe,Wt.ellipsoidShapeUvLongitudeMinMaxMid)}if(ye&&(fe&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN=!0,vt.ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MIN=Tt,X?(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_UNDER_HALF=!0,Tt+=1):he?(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_EQUAL_HALF=!0,Tt+=1):ge&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MIN_OVER_HALF=!0,Tt+=2)),$&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX=!0,vt.ELLIPSOID_INTERSECTION_INDEX_LATITUDE_MAX=Tt,W?(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_UNDER_HALF=!0,Tt+=2):Z?(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_EQUAL_HALF=!0,Tt+=1):Y&&(vt.ELLIPSOID_HAS_RENDER_BOUNDS_LATITUDE_MAX_OVER_HALF=!0,Tt+=1)),Wt.ellipsoidRenderLatitudeSinMinMax=k.fromElements(Math.sin(E.y),Math.sin(I.y),Wt.ellipsoidRenderLatitudeSinMinMax)),tn)if(vt.ELLIPSOID_HAS_SHAPE_BOUNDS_LATITUDE=!0,Ie<f)Wt.ellipsoidUvToShapeUvLatitude=k.fromElements(0,1,Wt.ellipsoidUvToShapeUvLatitude);else{let Ro=(s.y-r.y)/Ie,Qo=(r.y-m.y)/Ie;Wt.ellipsoidUvToShapeUvLatitude=k.fromElements(Ro,Qo,Wt.ellipsoidUvToShapeUvLatitude)}return this.shaderMaximumIntersectionsLength=Tt,!0};var $Ie=new ae;rg.prototype.computeOrientedBoundingBoxForTile=function(e,t,n,i,o){let r=1/Math.pow(2,e),s=t*r,a=(t+1)*r,c=n*r,u=(n+1)*r,f=i*r,h=(i+1)*r,A=ae.subsection(this._rectangle,s,c,a,u,$Ie),g=D.lerp(this._minimumHeight,this._maximumHeight,f),m=D.lerp(this._minimumHeight,this._maximumHeight,h);return QJ(A,g,m,this._ellipsoid,this._translation,this._rotation,o)};var JIe=new d,ZIe=new d,uIt=new d;rg.prototype.computeOrientedBoundingBoxForSample=function(e,t,n,i){let o=1/Math.pow(2,e.level),r=d.divideComponents(d.ONE,t,JIe),s=d.multiplyByScalar(r,o,JIe),a=d.multiplyByScalar(d.fromElements(e.x+n.x,e.y+n.y,e.z+n.z,ZIe),o,ZIe),c=d.add(a,s,uIt),u=ae.subsection(this._rectangle,a.x,a.y,c.x,c.y,$Ie),f=D.lerp(this._minimumHeight,this._maximumHeight,a.z),h=D.lerp(this._minimumHeight,this._maximumHeight,c.z);return QJ(u,f,h,this._ellipsoid,this._translation,this._rotation,i)};function QJ(e,t,n,i,o,r,s){return s=Qn.fromRectangle(e,t,n,i,s),s.center=d.add(s.center,o,s.center),s.halfAxes=J.multiply(s.halfAxes,r,s.halfAxes),s}rg.DefaultMinBounds=Object.freeze(new d(-D.PI,-D.PI_OVER_TWO,-te.WGS84.minimumRadius));rg.DefaultMaxBounds=Object.freeze(new d(D.PI,D.PI_OVER_TWO,10*te.WGS84.maximumRadius));var oS=rg;var sf={BOX:"BOX",ELLIPSOID:"ELLIPSOID",CYLINDER:"CYLINDER"};sf.getMinBounds=function(e){switch(e){case sf.BOX:return nS.DefaultMinBounds;case sf.ELLIPSOID:return oS.DefaultMinBounds;case sf.CYLINDER:return iS.DefaultMinBounds}};sf.getMaxBounds=function(e){switch(e){case sf.BOX:return nS.DefaultMaxBounds;case sf.ELLIPSOID:return oS.DefaultMaxBounds;case sf.CYLINDER:return iS.DefaultMaxBounds}};sf.getShapeConstructor=function(e){switch(e){case sf.BOX:return nS;case sf.ELLIPSOID:return oS;case sf.CYLINDER:return iS}};var lc=Object.freeze(sf);function Uh(e){this._comparator=e.comparator,this._maximumLength=e.maximumLength,this._array=l(e.maximumLength)?new Array(e.maximumLength):[],this._length=0}Object.defineProperties(Uh.prototype,{length:{get:function(){return this._length}},maximumLength:{get:function(){return this._maximumLength},set:function(e){if(l(e)){for(;this._length>e;)this.removeMinimum();this._array.length=e}this._maximumLength=e}},internalArray:{get:function(){return this._array}},comparator:{get:function(){return this._comparator}}});Uh.prototype.clone=function(){let e=this._maximumLength,t=this._comparator,n=this._array,i=this._length,o=new Uh({comparator:t,maximumLength:e});o._length=i;for(let r=0;r<i;r++)o._array[r]=n[r];return o};Uh.prototype.reset=function(){this._length=0;let e=this._maximumLength;if(l(e))for(let t=0;t<e;t++)this._array[t]=void 0;else this._array.length=0};Uh.prototype.resort=function(){let e=this._length;for(let t=0;t<e;t++)exe(this,t)};Uh.prototype.insert=function(e){let t,n=this._maximumLength;if(l(n)){if(n===0)return;if(this._length===n){let o=this._array[0];if(this._comparator(e,o)<=0)return e;t=this.removeMinimum()}}let i=this._length;return this._array[i]=e,this._length++,exe(this,i),t};Uh.prototype.removeMinimum=function(){let e=this._length;if(e===0)return;this._length--;let t=this._array[0];return e>=2&&(this._array[0]=this._array[e-1],txe(this,0)),this._array[e-1]=void 0,t};Uh.prototype.removeMaximum=function(){let e=this._length;if(e===0)return;this._length--;let t;if(e<=2)t=this._array[e-1];else{let n=kJ(this,1,2)?1:2;t=this._array[n],this._array[n]=this._array[e-1],e>=4&&txe(this,n)}return this._array[e-1]=void 0,t};Uh.prototype.getMinimum=function(){if(this._length!==0)return this._array[0]};Uh.prototype.getMaximum=function(){let e=this._length;if(e!==0)return e<=2?this._array[e-1]:this._array[kJ(this,1,2)?1:2]};function a4(e,t,n){let i=e._array,o=i[t];i[t]=i[n],i[n]=o}function MP(e,t,n){return e._comparator(e._array[t],e._array[n])<0}function kJ(e,t,n){return e._comparator(e._array[t],e._array[n])>0}function exe(e,t){if(t===0)return;let n=Math.floor(D.log2(t+1))%2===0,i=Math.floor((t-1)/2),o=MP(e,t,i);for(o!==n&&(a4(e,t,i),t=i);t>=3;){let r=Math.floor((t-3)/4);if(MP(e,t,r)!==o)break;a4(e,t,r),t=r}}function txe(e,t){let n=e._length,i=Math.floor(D.log2(t+1))%2===0,o;for(;(o=2*t+1)<n;){let r=o,s=o+1;if(s<n){MP(e,s,r)===i&&(r=s);let a=2*o+1,c=Math.max(Math.min(n-a,4),0);for(let u=0;u<c;u++){let f=a+u;MP(e,f,r)===i&&(r=f)}}if(MP(e,r,t)===i&&(a4(e,r,t),r!==o&&r!==s)){let a=Math.floor((r-1)/2);kJ(e,r,a)===i&&a4(e,r,a)}t=r}}var rS=Uh;var UJ=Object.freeze({UNLOADED:0,RECEIVING:1,PROCESSING:2,LOADED:3,FAILED:4,UNAVAILABLE:5});function NP(e,t){this.spatialNode=e,this.keyframe=t,this.state=UJ.UNLOADED,this.content=void 0,this.megatextureIndex=-1,this.priority=-Number.MAX_VALUE,this.highPriorityFrameNumber=-1}NP.prototype.unload=function(){this.content=this.content&&this.content.destroy(),this.spatialNode=void 0,this.state=UJ.UNLOADED,this.megatextureIndex=-1,this.priority=-Number.MAX_VALUE,this.highPriorityFrameNumber=-1};NP.priorityComparator=function(e,t){return e.priority-t.priority};NP.searchComparator=function(e,t){return e.keyframe-t.keyframe};NP.LoadState=UJ;var Po=NP;function Uy(e,t,n,i,o){if(o=Math.min(o??128*1024*1024,536870912),i===zt.UNSIGNED_SHORT&&(i=zt.FLOAT32),i===zt.FLOAT32&&!e.floatingPointTexture)throw new ce("Floating point texture not supported");let s=fIt(i),a=dIt(n,e.webgl2),c=zt.getSizeInBytes(i),u=hIt(o,n,c),f=Math.ceil(Math.sqrt(t.x)),h=Math.ceil(t.z/f),A=f*t.x,g=h*t.y,m=Math.floor(u/A),_=Math.floor(u/g);if(m===0||_===0)throw new ce("Tileset is too large to fit into megatexture");this.channelCount=n,this.componentType=i,this.textureMemoryByteLength=c*n*u**2,this.voxelCountPerTile=d.clone(t,new d),this.maximumTileCount=m*_,this.regionCountPerMegatexture=new k(m,_),this.voxelCountPerRegion=new k(A,g),this.sliceCountPerRegion=new k(f,h),this.voxelSizeUv=new k(1/u,1/u),this.sliceSizeUv=new k(t.x/u,t.y/u),this.regionSizeUv=new k(A/u,g/u),this.texture=new Nt({context:e,pixelFormat:a,pixelDatatype:s,flipY:!1,width:u,height:u,sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:pi.LINEAR})});let y=zt.toComponentDatatype(i);this.tileVoxelDataTemp=q.createTypedArray(y,A*g*n),this.nodes=new Array(this.maximumTileCount);for(let C=0;C<this.maximumTileCount;C++)this.nodes[C]=new mIt(C);for(let C=0;C<this.maximumTileCount;C++){let E=this.nodes[C];E.previousNode=C>0?this.nodes[C-1]:void 0,E.nextNode=C<this.maximumTileCount-1?this.nodes[C+1]:void 0}this.occupiedList=void 0,this.emptyList=this.nodes[0],this.occupiedCount=0}function fIt(e){if(e===zt.FLOAT32||e===zt.FLOAT64)return He.FLOAT;if(e===zt.UINT8)return He.UNSIGNED_BYTE}function dIt(e,t){if(e===1)return t?et.RED:et.LUMINANCE;if(e===2)return t?et.RG:et.LUMINANCE_ALPHA;if(e===3)return et.RGB;if(e===4)return et.RGBA}function hIt(e,t,n){let i=Math.floor(e/(t*n));return Math.min(qt.maximumTextureSize,D.previousPowerOfTwo(Math.floor(Math.sqrt(i))))}function mIt(e){this.index=e,this.nextNode=void 0,this.previousNode=void 0}Uy.prototype.add=function(e){if(this.isFull())throw new me("Trying to add when there are no empty spots");let t=this.emptyList;this.emptyList=this.emptyList.nextNode,l(this.emptyList)&&(this.emptyList.previousNode=void 0),t.nextNode=this.occupiedList,l(t.nextNode)&&(t.nextNode.previousNode=t),this.occupiedList=t;let n=t.index;return this.writeDataToTexture(n,e),this.occupiedCount++,n};Uy.prototype.remove=function(e){if(e<0||e>=this.maximumTileCount)throw new me("Megatexture index out of bounds");let t=this.nodes[e];l(t.previousNode)&&(t.previousNode.nextNode=t.nextNode),l(t.nextNode)&&(t.nextNode.previousNode=t.previousNode),t.nextNode=this.emptyList,l(t.nextNode)&&(t.nextNode.previousNode=t),t.previousNode=void 0,this.emptyList=t,this.occupiedCount--};Uy.prototype.isFull=function(){return this.emptyList===void 0};Uy.getApproximateTextureMemoryByteLength=function(e,t,n,i){i===zt.UNSIGNED_SHORT&&(i=zt.FLOAT32);let o=zt.getSizeInBytes(i),r=e*t.x*t.y*t.z,s=Math.ceil(Math.sqrt(t.x)),a=Math.ceil(t.z/s),c=s*t.x,u=a*t.y,f=D.previousPowerOfTwo(Math.floor(Math.sqrt(r)));for(;;){let A=Math.floor(f/c),g=Math.floor(f/u);if(A*g>=e)break;f*=2}return f*f*n*o};Uy.prototype.writeDataToTexture=function(e,t){let n=t.constructor===Uint16Array?new Float32Array(t):t,{tileVoxelDataTemp:i,voxelCountPerTile:o,sliceCountPerRegion:r,voxelCountPerRegion:s,channelCount:a,regionCountPerMegatexture:c}=this;for(let g=0;g<o.z;g++){let m=g%r.x*o.x,_=Math.floor(g/r.x)*o.y;for(let y=0;y<o.y;y++){let C=AIt(o,y,g),E=(_+y)*s.x+m;for(let I=0;I<o.x;I++){let b=C+I,S=E+I;for(let B=0;B<a;B++)i[S*a+B]=n[b*a+B]}}}let u=e%c.x*s.x,f=Math.floor(e/c.x)*s.y,A={source:{arrayBufferView:i,width:s.x,height:s.y},xOffset:u,yOffset:f};this.texture.copyFrom(A)};function AIt(e,t,n){let i=e.y*e.x,o=n,r=t;return o*i+r*e.x}Uy.prototype.isDestroyed=function(){return!1};Uy.prototype.destroy=function(){return this.texture=this.texture&&this.texture.destroy(),ue(this)};var LP=Uy;function xd(e,t,n,i,o,r,s){this.children=void 0,this.parent=o,this.level=e,this.x=t,this.y=n,this.z=i,this.dimensions=d.clone(s),this.keyframeNodes=[],this.renderableKeyframeNodes=[],this.renderableKeyframeNodeLerp=0,this.renderableKeyframeNodePrevious=void 0,this.renderableKeyframeNodeNext=void 0,this.orientedBoundingBox=new Qn,this.approximateVoxelSize=0,this.screenSpaceError=0,this.visitedFrameNumber=-1,this.computeBoundingVolumes(r)}var pIt=new d;xd.prototype.computeBoundingVolumes=function(e){this.orientedBoundingBox=e.computeOrientedBoundingBoxForTile(this.level,this.x,this.y,this.z,this.orientedBoundingBox);let t=J.getScale(this.orientedBoundingBox.halfAxes,pIt),n=2*d.maximumComponent(t);this.approximateVoxelSize=n/d.minimumComponent(this.dimensions)};xd.prototype.constructChildNodes=function(e){let{level:t,x:n,y:i,z:o}=this,r=n*2,s=i*2,a=o*2,c=s+1,u=r+1,f=a+1,h=t+1,A=[[h,r,s,a],[h,u,s,a],[h,r,c,a],[h,u,c,a],[h,r,s,f],[h,u,s,f],[h,r,c,f],[h,u,c,f]];this.children=A.map(([g,m,_,y])=>new xd(g,m,_,y,this,e,this.dimensions))};xd.prototype.visibility=function(e,t){let n=this.orientedBoundingBox;return e.cullingVolume.computeVisibilityWithPlaneMask(n,t)};xd.prototype.computeScreenSpaceError=function(e,t){let n=this.orientedBoundingBox,i=Math.sqrt(n.distanceSquaredTo(e));i=Math.max(i,D.EPSILON7);let o=this.approximateVoxelSize,r=t*(o/i);this.screenSpaceError=r};var nxe={keyframe:0};function OP(e,t){return nxe.keyframe=e,qo(t,nxe,Po.searchComparator)}xd.prototype.computeSurroundingRenderableKeyframeNodes=function(e){let t=this,n=t.level,i=Math.floor(e),o=Math.ceil(e),r,s,a=+Number.MAX_VALUE,c=+Number.MAX_VALUE;for(;l(t);){let{renderableKeyframeNodes:h}=t;if(h.length>=1){let A=gIt(i,h),g=h[A],m=o===i||i<g.keyframe?A:Math.min(A+1,h.length-1),_=h[m],y=i-g.keyframe,C=ixe(n-t.level,y);C<a&&(a=C,r=g);let E=_.keyframe-o,I=ixe(n-t.level,E);if(I<c&&(c=I,s=_),y===0&&E===0)break}t=t.parent}if(this.renderableKeyframeNodePrevious=r,this.renderableKeyframeNodeNext=s,!l(r)||!l(s))return;let u=r.keyframe,f=s.keyframe;this.renderableKeyframeNodeLerp=u===f?0:D.clamp((e-u)/(f-u),0,1)};function gIt(e,t){let n=OP(e,t);return n<0?D.clamp(~n-1,0,t.length-1):n}function ixe(e,t){let n=Math.exp(e*4),i=t>=0?1:-200;return e*n+t*i}xd.prototype.isVisited=function(e){return this.visitedFrameNumber===e};xd.prototype.createKeyframeNode=function(e){let t=OP(e,this.keyframeNodes);if(t<0){t=~t;let n=new Po(this,e);this.keyframeNodes.splice(t,0,n)}};xd.prototype.destroyKeyframeNode=function(e,t){let n=e.keyframe,i=OP(n,this.keyframeNodes);if(i<0)throw new me("Keyframe node does not exist.");if(this.keyframeNodes.splice(i,1),e.megatextureIndex!==-1){for(let r=0;r<t.length;r++)t[r].remove(e.megatextureIndex);let o=OP(n,this.renderableKeyframeNodes);if(o<0)throw new me("Renderable keyframe node does not exist.");this.renderableKeyframeNodes.splice(o,1)}e.unload()};xd.prototype.addKeyframeNodeToMegatextures=function(e,t){if(e.megatextureIndex!==-1||e.content.metadata.length!==t.length)throw new me("Keyframe node cannot be added to megatexture");let{metadata:n}=e.content;for(let r=0;r<t.length;r++){let s=t[r];e.megatextureIndex=s.add(n[r])}let i=this.renderableKeyframeNodes,o=OP(e.keyframe,i);if(o>=0)throw new me("Keyframe already renderable");o=~o,i.splice(o,0,e)};xd.prototype.isRenderable=function(e){let t=this.renderableKeyframeNodePrevious,n=this.renderableKeyframeNodeNext,i=this.level;return l(t)&&l(n)&&(t.spatialNode.level===i||n.spatialNode.level===i)&&this.visitedFrameNumber===e};var c4=xd;function Gy(e,t,n,i){let{provider:o,dimensions:r,paddingBefore:s,paddingAfter:a}=e,{types:c,componentTypes:u,metadataOrder:f}=o,h=d.add(r,s,new d);if(d.add(h,a,h),f===kh.Y_UP){let I=h.y;h.y=h.z,h.z=I}!l(i)&&l(o.maximumTileCount)&&(i=vIt(o.maximumTileCount,h,c,u)),this._primitive=e,this.textureMemoryByteLength=0,this.megatextures=new Array(c.length);for(let I=0;I<c.length;I++){let b=c[I],S=gt.getComponentCount(b),B=u[I];this.megatextures[I]=new LP(t,h,S,B,i),this.textureMemoryByteLength+=this.megatextures[I].textureMemoryByteLength}let A=this.megatextures[0].maximumTileCount;this._simultaneousRequestCount=0,this._debugPrint=!1,this._calculateStatistics=this._primitive._calculateStatistics??!1,this._frameNumber=0;let g=e._shape;this.rootNode=new c4(0,0,0,0,void 0,g,r),this._priorityQueue=new rS({maximumLength:A,comparator:Po.priorityComparator}),this._highPriorityKeyframeNodes=new Array(A),this._highPriorityKeyframeNodeCount=0,this._keyframeNodesInMegatexture=new Array(A),this._keyframeCount=n,this._sampleCount=void 0,this._keyframeLocation=0,this._binaryTreeKeyframeWeighting=new Array(n),this._initialTilesLoaded=!1;let m=this._binaryTreeKeyframeWeighting;m[0]=0,m[n-1]=0,GJ(m,1,n-2,0);let _=9,y=2048,C=Math.floor(y/_),E=Math.ceil(A/C);this.internalNodeTexture=new Nt({context:t,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,flipY:!1,width:y,height:E,sampler:new on({minificationFilter:Zt.NEAREST,magnificationFilter:pi.NEAREST})}),this.internalNodeTilesPerRow=C,this.internalNodeTexelSizeUv=new k(1/y,1/E),this.leafNodeTexture=void 0,this.leafNodeTilesPerRow=void 0,this.leafNodeTexelSizeUv=new k}Gy.prototype.findKeyframeNode=function(e){return this._keyframeNodesInMegatexture.find(function(t){return t.megatextureIndex===e})};function GJ(e,t,n,i){if(t>n)return;let o=Math.floor((t+n)/2);e[o]=i,GJ(e,t,o-1,i+1),GJ(e,o+1,n,i+1)}Gy.simultaneousRequestCountMaximum=50;Gy.prototype.update=function(e,t,n,i){let o=this._primitive,r=e.context,s=this.megatextures[0].maximumTileCount,a=this._keyframeCount,c=o._levelBlendFactor,u=c>0,f=a>1,h=(u?2:1)*(f?2:1);this._sampleCount=h;let A=h>=2;if(A&&!l(this.leafNodeTexture)){let I=Math.floor(512),b=Math.ceil(s/I);this.leafNodeTexture=new Nt({context:r,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,flipY:!1,width:1024,height:b,sampler:new on({minificationFilter:Zt.NEAREST,magnificationFilter:pi.NEAREST})}),this.leafNodeTexelSizeUv=k.fromElements(1/1024,1/b,this.leafNodeTexelSizeUv),this.leafNodeTilesPerRow=I}else!A&&l(this.leafNodeTexture)&&(this.leafNodeTexture=this.leafNodeTexture.destroy());if(this._keyframeLocation=D.clamp(t,0,a-1),n&&oxe(this,this.rootNode),i)return;this._frameNumber=e.frameNumber;let g=Oi();CIt(this,e),EIt(this,e);let m=Oi();SIt(this,h,c);let _=Oi(),y=o.loadProgress.numberOfListeners>0||o.allTilesLoaded.numberOfListeners>0||o.initialTilesLoaded.numberOfListeners>0;if(this._debugPrint||this._calculateStatistics||y){let C=m-g,E=_-m,I=_-g;TIt(this,e,C,E,I)}};Gy.prototype.isRenderable=function(e){return e.isRenderable(this._frameNumber)};Gy.prototype.isDestroyed=function(){return!1};Gy.prototype.destroy=function(){let e=this.megatextures,t=e.length;for(let n=0;n<t;n++)e[n]=e[n]&&e[n].destroy();return this.textureMemoryByteLength=0,this.internalNodeTexture=this.internalNodeTexture&&this.internalNodeTexture.destroy(),this.leafNodeTexture=this.leafNodeTexture&&this.leafNodeTexture.destroy(),ue(this)};function oxe(e,t){if(t.computeBoundingVolumes(e._primitive._shape),l(t.children))for(let n=0;n<8;n++){let i=t.children[n];oxe(e,i)}}function _It(e,t){if(e._simultaneousRequestCount>=Gy.simultaneousRequestCountMaximum)return;let i=e._primitive.provider,{keyframe:o,spatialNode:r}=t;if(l(i.availableLevels)&&r.level>=i.availableLevels)return;function s(f){e._simultaneousRequestCount--,t.content=f,t.state=l(f)?Po.LoadState.PROCESSING:Po.LoadState.UNAVAILABLE}function a(f){e._simultaneousRequestCount--,t.state=Po.LoadState.FAILED,e._primitive.tileFailed.raiseEvent()}let c={tileLevel:r.level,tileX:r.x,tileY:r.y,tileZ:r.z,keyframe:o},u=i.requestData(c);l(u)&&(e._simultaneousRequestCount++,t.state=Po.LoadState.RECEIVING,u.then(s).catch(a))}function yIt(e){return e/(1+e)}function CIt(e,t){let n=e._frameNumber,i=e._priorityQueue;i.reset(),rxe(e.rootNode,zs.MASK_INDETERMINATE,e,t);let o=e._highPriorityKeyframeNodes,r=0,s;for(;i.length>0;)s=i.removeMaximum(),s.highPriorityFrameNumber=n,o[r]=s,r++;e._highPriorityKeyframeNodeCount=r}function EIt(e,t){let n=e.megatextures[0],i=n.occupiedCount,o=e._keyframeNodesInMegatexture;o.length=i,o.sort(IIt);let r=e._highPriorityKeyframeNodes,s=e._highPriorityKeyframeNodeCount,a=0,c=0;for(let u=0;u<s;u++){let f=r[u];if(!(f.state===Po.LoadState.LOADED||f.spatialNode===void 0)&&(f.state===Po.LoadState.UNLOADED&&_It(e,f),f.state===Po.LoadState.PROCESSING)){let{content:h}=f;if(h.update(e._primitive,t),!h.ready)continue;if(!xIt(h.metadata,e)){f.content=void 0,f.state=Po.LoadState.FAILED,e._primitive.tileFailed.raiseEvent();continue}let A=0;if(n.isFull()){A=i-1-a,a++;let g=o[A];e._primitive.tileUnload.raiseEvent(),g.spatialNode.destroyKeyframeNode(g,e.megatextures)}else A=i+c,c++;f.spatialNode.addKeyframeNodeToMegatextures(f,e.megatextures),f.state=Po.LoadState.LOADED,o[A]=f,e._primitive.tileLoad.raiseEvent()}}}function IIt(e,t){return e.highPriorityFrameNumber===t.highPriorityFrameNumber?t.priority-e.priority:t.highPriorityFrameNumber-e.highPriorityFrameNumber}function xIt(e,t){let n=t._primitive.provider.types.length;if(!Array.isArray(e)||e.length!==n)return!1;let{megatextures:i}=t;for(let o=0;o<n;o++){let{voxelCountPerTile:r,channelCount:s}=i[o],{x:a,y:c,z:u}=r,f=a*c*u,h=e[o],A=f*s;if(h.length!==A)return!1}return!0}function rxe(e,t,n,i){let{camera:o,context:r,pixelRatio:s,frameNumber:a}=i,{positionWC:c,frustum:u}=o,h=r.drawingBufferHeight/s/u.sseDenominator;if(e.computeScreenSpaceError(c,h),t=e.visibility(i,t),t===zs.MASK_OUTSIDE)return;e.visitedFrameNumber=a;let A=n._primitive,g=A._shape,m=A.screenSpaceError,_=n._priorityQueue,y=n._keyframeCount,C=D.clamp(Math.floor(n._keyframeLocation),0,y-2),E=C+1;if(y===1)e.createKeyframeNode(0);else if(e.keyframeNodes.length!==y)for(let v=0;v<y;v++)e.createKeyframeNode(v);let{screenSpaceError:I,keyframeNodes:b}=e,S=yIt(I),B=!1;for(let v=0;v<b.length;v++){let P=b[v];P.priority=10*S+bIt(C,P.keyframe,E,n),P.state!==Po.LoadState.UNAVAILABLE&&P.state!==Po.LoadState.FAILED&&P.priority!==-Number.MAX_VALUE&&_.insert(P),P.state===Po.LoadState.LOADED&&(B=!0)}if(I<m||!B){e.children=void 0;return}l(e.children)||e.constructChildNodes(g);for(let v=0;v<8;v++){let P=e.children[v];rxe(P,t,n,i)}}function bIt(e,t,n,i){let o=Math.min(Math.abs(t-e),Math.abs(t-n)),r=Math.max(e,i._keyframeCount-n-1,1),s=Math.pow(1-o/r,4),a=Math.exp(-i._binaryTreeKeyframeWeighting[t]);return D.lerp(a,s,.15+.85*s)}function TIt(e,t,n,i,o){let r=e._keyframeCount,s=e.rootNode,a=Object.keys(Po.LoadState).length,c=new Array(a),u=new Array(a),f=0;for(let B=0;B<a;B++){let v=new Array(r).fill(0);c[B]=v,u[B]=0}function h(B){let v=B.keyframeNodes;for(let P=0;P<v.length;P++){let N=v[P],L=N.keyframe,p=N.state;c[p][L]+=1,u[p]+=1,f++}if(l(B.children))for(let P=0;P<8;P++){let N=B.children[P];h(N)}}h(s),e._primitive.statistics.numberOfTilesWithContentReady=u[Po.LoadState.LOADED],e._primitive.statistics.visited=f;let A=u[Po.LoadState.RECEIVING],g=u[Po.LoadState.PROCESSING],m=A!==e._primitive.statistics.numberOfPendingRequests||g!==e._primitive.statistics.numberOfTilesProcessing;if(m&&t.afterRender.push(function(){return e._primitive.loadProgress.raiseEvent(A,g),!0}),e._primitive.statistics.numberOfPendingRequests=A,e._primitive.statistics.numberOfTilesProcessing=g,m&&(A===0&&g===0)&&(t.afterRender.push(function(){return e._primitive.allTilesLoaded.raiseEvent(),!0}),e._initialTilesLoaded||(e._initialTilesLoaded=!0,t.afterRender.push(function(){return e._primitive.initialTilesLoaded.raiseEvent(),!0}))),!e._debugPrint)return;let y=`KEYFRAMES: ${c[Po.LoadState.LOADED]}`,C=`UNLOADED: ${u[Po.LoadState.UNLOADED]} | RECEIVING: ${u[Po.LoadState.RECEIVING]} | PROCESSING: ${u[Po.LoadState.PROCESSING]} | LOADED: ${u[Po.LoadState.LOADED]} | FAILED: ${u[Po.LoadState.FAILED]} | UNAVAILABLE: ${u[Po.LoadState.UNAVAILABLE]} | TOTAL: ${f}`,E=Math.round(n*100)/100,I=Math.round(i*100)/100,b=Math.round(o*100)/100,S=`LOAD: ${E} | OCT: ${I} | ALL: ${b}`;console.log(`${y} || ${C} || ${S}`)}var l4={INTERNAL:0,LEAF:1,PACKED_LEAF_FROM_PARENT:2};function SIt(e,t,n){let i=e._primitive._screenSpaceError,o=e._keyframeLocation,r=e._frameNumber,s=t>=2,a=0,c=0,u=[],f=[];function h(g,m,_,y,C){let E=!1;if(l(g.children))for(let I=0;I<8;I++){let b=g.children[I];b.computeSurroundingRenderableKeyframeNodes(o),b.isRenderable(r)&&(E=!0)}if(E){u[C]=l4.INTERNAL<<16|m,u[_]=y,a++,y=m,C=y*9+1;for(let I=0;I<8;I++){let b=g.children[I];m=a,_=m*9+0,h(b,m,_,y,C+I)}}else{if(e._primitive.tileVisible.raiseEvent(),s){let I=c*5,b=g.renderableKeyframeNodePrevious,S=g.level-b.spatialNode.level,B=b.spatialNode.parent,v=l(B)?B.renderableKeyframeNodePrevious:b,P=wIt(g,i,n),N=S,L=1,p=b.megatextureIndex,x=v.megatextureIndex;f[I+0]=P,f[I+1]=N,f[I+2]=L,f[I+3]=p,f[I+4]=x,u[C]=l4.LEAF<<16|c}else{let I=g.renderableKeyframeNodePrevious,S=g.level-I.spatialNode.level===0?l4.LEAF:l4.PACKED_LEAF_FROM_PARENT;u[C]=S<<16|I.megatextureIndex}c++}}let A=e.rootNode;A.computeSurroundingRenderableKeyframeNodes(o),A.isRenderable(r)&&h(A,0,0,0,0),BIt(u,9,e.internalNodeTilesPerRow,e.internalNodeTexture),s&&DIt(f,2,e.leafNodeTilesPerRow,e.leafNodeTexture)}function wIt(e,t,n){if(e.parent===void 0)return 0;let i=e.screenSpaceError,o=e.parent.screenSpaceError,s=((t-i)/(o-i)+n-1)/n;return D.clamp(s,0,1)}function BIt(e,t,n,i){let o=et.componentsLength(i.pixelFormat),r=Math.ceil(e.length/t),s=Math.max(1,t*Math.min(r,n)),a=Math.max(1,Math.ceil(r/n)),c=new Uint8Array(s*a*o);for(let h=0;h<e.length;h++){let A=e[h],g=h*o;for(let m=0;m<o;m++)c[g+m]=A>>>m*8&255}let f={source:{arrayBufferView:c,width:s,height:a},xOffset:0,yOffset:0};i.copyFrom(f)}function DIt(e,t,n,i){let o=et.componentsLength(i.pixelFormat),r=5,s=Math.ceil(e.length/r),a=Math.max(1,t*Math.min(s,n)),c=Math.max(1,Math.ceil(s/n)),u=new Uint8Array(a*c*o);for(let A=0;A<s;A++){let g=e[A*r+0],m=e[A*r+1],_=e[A*r+2],y=e[A*r+3],C=e[A*r+4],E=D.clamp(Math.floor(65536*g),0,65535);u[A*8+0]=E>>>0&255,u[A*8+1]=E>>>8&255,u[A*8+2]=m&255,u[A*8+3]=_&255,u[A*8+4]=y>>>0&255,u[A*8+5]=y>>>8&255,u[A*8+6]=C>>>0&255,u[A*8+7]=C>>>8&255}let h={source:{arrayBufferView:u,width:a,height:c},xOffset:0,yOffset:0};i.copyFrom(h)}function vIt(e,t,n,i){let o=0,r=n.length;for(let s=0;s<r;s++){let a=n[s],c=i[s],u=gt.getComponentCount(a);o+=LP.getApproximateTextureMemoryByteLength(e,t,u,c)}return o}var u4=Gy;function yA(e){e=e??V.EMPTY_OBJECT,this._ready=!1,this._provider=e.provider??yA.DefaultProvider,this._traversal=void 0,this._statistics=new Um,this._calculateStatistics=e.calculateStatistics??!1,this._shape=void 0,this._shapeVisible=!1,this._dimensions=new d,this._inputDimensions=new d,this._paddingBefore=new d,this._paddingAfter=new d,this._minBounds=new d,this._minBoundsOld=new d,this._maxBounds=new d,this._maxBoundsOld=new d,this._exaggeratedMinBounds=new d,this._exaggeratedMinBoundsOld=new d,this._exaggeratedMaxBounds=new d,this._exaggeratedMaxBoundsOld=new d,this._minClippingBounds=new d,this._minClippingBoundsOld=new d,this._maxClippingBounds=new d,this._maxClippingBoundsOld=new d,this._clippingPlanes=void 0,this._clippingPlanesState=0,this._clippingPlanesEnabled=!1,this._modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._exaggeratedModelMatrix=R.clone(this._modelMatrix),this._compoundModelMatrix=new R,this._compoundModelMatrixOld=new R,this._customShader=e.customShader??yA.DefaultCustomShader,this._customShaderCompilationEvent=new _e,this._shaderDirty=!0,this._drawCommand=void 0,this._drawCommandPick=void 0,this._pickId=void 0,this._clock=e.clock,this._transformPositionWorldToUv=new R,this._transformDirectionWorldToUv=new J,this._transformPositionUvToWorld=new R,this._transformDirectionWorldToLocal=new J,this._nearestSampling=!1,this._levelBlendFactor=0,this._stepSizeMultiplier=1,this._depthTest=!0,this._useLogDepth=void 0,this._screenSpaceError=4,this._debugPolylines=new Fm,this._debugDraw=!1,this._disableRender=!1,this._disableUpdate=!1,this._uniforms={octreeInternalNodeTexture:void 0,octreeInternalNodeTilesPerRow:0,octreeInternalNodeTexelSizeUv:new k,octreeLeafNodeTexture:void 0,octreeLeafNodeTilesPerRow:0,octreeLeafNodeTexelSizeUv:new k,megatextureTextures:[],megatextureSliceDimensions:new k,megatextureTileDimensions:new k,megatextureVoxelSizeUv:new k,megatextureSliceSizeUv:new k,megatextureTileSizeUv:new k,dimensions:new d,inputDimensions:new d,paddingBefore:new d,paddingAfter:new d,transformPositionViewToUv:new R,transformPositionUvToView:new R,transformDirectionViewToLocal:new J,cameraPositionUv:new d,cameraDirectionUv:new d,ndcSpaceAxisAlignedBoundingBox:new se,clippingPlanesTexture:void 0,clippingPlanesMatrix:new R,stepSize:0,pickColor:new G},this._shapeDefinesOld={},this._uniformMap={};let t=this._uniforms,n=this._uniformMap;for(let o in t)if(t.hasOwnProperty(o)){let r=`u_${o}`;n[r]=function(){return t[o]}}this.tileLoad=new _e,this.tileVisible=new _e,this.tileFailed=new _e,this.tileUnload=new _e,this.loadProgress=new _e,this.allTilesLoaded=new _e,this.initialTilesLoaded=new _e;let i=this._provider;PIt(this,i)}function PIt(e,t){let{shape:n,minBounds:i=lc.getMinBounds(n),maxBounds:o=lc.getMaxBounds(n)}=t;e.minBounds=i,e.maxBounds=o,e.minClippingBounds=i.clone(),e.maxClippingBounds=o.clone(),e._exaggeratedMinBounds=d.clone(e._minBounds,e._exaggeratedMinBounds),e._exaggeratedMaxBounds=d.clone(e._maxBounds,e._exaggeratedMaxBounds),e._exaggeratedModelMatrix=R.clone(e._modelMatrix,e._exaggeratedModelMatrix),axe(e,t);let r=lc.getShapeConstructor(n);e._shape=new r,e._shapeVisible=cxe(e,e._shape,t)}Object.defineProperties(yA.prototype,{ready:{get:function(){return this._ready}},provider:{get:function(){return this._provider}},boundingSphere:{get:function(){return this._shape.boundingSphere}},orientedBoundingBox:{get:function(){return this._shape.orientedBoundingBox}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._modelMatrix=R.clone(e,this._modelMatrix)}},shape:{get:function(){return this._provider.shape}},dimensions:{get:function(){return this._dimensions}},inputDimensions:{get:function(){return this._inputDimensions}},paddingBefore:{get:function(){return this._paddingBefore}},paddingAfter:{get:function(){return this._paddingAfter}},minimumValues:{get:function(){return this._provider.minimumValues}},maximumValues:{get:function(){return this._provider.maximumValues}},show:{get:function(){return!this._disableRender},set:function(e){this._disableRender=!e}},disableUpdate:{get:function(){return this._disableUpdate},set:function(e){this._disableUpdate=e}},debugDraw:{get:function(){return this._debugDraw},set:function(e){this._debugDraw=e}},depthTest:{get:function(){return this._depthTest},set:function(e){this._depthTest!==e&&(this._depthTest=e,this._shaderDirty=!0)}},nearestSampling:{get:function(){return this._nearestSampling},set:function(e){this._nearestSampling!==e&&(this._nearestSampling=e,this._shaderDirty=!0)}},levelBlendFactor:{get:function(){return this._levelBlendFactor},set:function(e){this._levelBlendFactor=D.clamp(e,0,1)}},screenSpaceError:{get:function(){return this._screenSpaceError},set:function(e){this._screenSpaceError=e}},stepSize:{get:function(){return this._stepSizeMultiplier},set:function(e){this._stepSizeMultiplier=e}},minBounds:{get:function(){return this._minBounds},set:function(e){this._minBounds=d.clone(e,this._minBounds)}},maxBounds:{get:function(){return this._maxBounds},set:function(e){this._maxBounds=d.clone(e,this._maxBounds)}},minClippingBounds:{get:function(){return this._minClippingBounds},set:function(e){this._minClippingBounds=d.clone(e,this._minClippingBounds)}},maxClippingBounds:{get:function(){return this._maxClippingBounds},set:function(e){this._maxClippingBounds=d.clone(e,this._maxClippingBounds)}},clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Vs.setOwner(e,this,"_clippingPlanes")}},customShader:{get:function(){return this._customShader},set:function(e){if(this._customShader!==e){let t=this._uniformMap,i=this._customShader.uniformMap;for(let o in i)i.hasOwnProperty(o)&&delete t[o];l(e)?this._customShader=e:this._customShader=yA.DefaultCustomShader,this._shaderDirty=!0}}},customShaderCompilationEvent:{get:function(){return this._customShaderCompilationEvent}},statistics:{get:function(){return this._statistics}}});var RIt=new se,MIt=new se,NIt=new R,LIt=new R,OIt=new R,FIt=R.fromRotationTranslation(J.fromUniformScale(.5,new J),new d(.5,.5,.5),new R),QIt=R.fromRotationTranslation(J.fromUniformScale(2,new J),new d(-1,-1,-1),new R);yA.prototype.update=function(e){let t=this._provider;this._customShader.update(e);let n=e.context;if(!this._ready){HIt(this,t,n),e.afterRender.push(()=>(this._ready=!0,!0));return}zIt(this,e);let i=axe(this,t),o=this._shape;if(i&&(this._shapeVisible=cxe(this,o,t),jIt(this,o)&&(this._shaderDirty=!0)),!this._shapeVisible)return;let r=YIt(t.timeIntervalCollection,this._clock),s=this._traversal,a=s._sampleCount;if(s.update(e,r,i,this._disableUpdate),a!==s._sampleCount&&(this._shaderDirty=!0),!s.isRenderable(s.rootNode)||(this._debugDraw&&txt(this,e),this._disableRender))return;this._useLogDepth!==e.useLogDepth&&(this._useLogDepth=e.useLogDepth,this._shaderDirty=!0),qIt(this,e)&&(this._shaderDirty=!0);let u=s.leafNodeTexture,f=this._uniforms;l(u)&&(f.octreeLeafNodeTexture=s.leafNodeTexture,f.octreeLeafNodeTexelSizeUv=k.clone(s.leafNodeTexelSizeUv,f.octreeLeafNodeTexelSizeUv),f.octreeLeafNodeTilesPerRow=s.leafNodeTilesPerRow),this._shaderDirty&&(t4(this,n),this._shaderDirty=!1);let h=n.uniformState.viewProjection,A=o.orientedBoundingBox,g=JIt(A,h,MIt);if(g.x===1||g.y===1||g.z===-1||g.w===-1)return;f.ndcSpaceAxisAlignedBoundingBox=se.clone(g,f.ndcSpaceAxisAlignedBoundingBox);let _=n.uniformState.inverseView;f.transformPositionViewToUv=R.multiplyTransformation(this._transformPositionWorldToUv,_,f.transformPositionViewToUv);let y=n.uniformState.view;f.transformPositionUvToView=R.multiplyTransformation(y,this._transformPositionUvToWorld,f.transformPositionUvToView);let C=n.uniformState.inverseViewRotation;f.transformDirectionViewToLocal=J.multiply(this._transformDirectionWorldToLocal,C,f.transformDirectionViewToLocal),f.cameraPositionUv=R.multiplyByPoint(this._transformPositionWorldToUv,e.camera.positionWC,f.cameraPositionUv),f.cameraDirectionUv=J.multiplyByVector(this._transformDirectionWorldToUv,e.camera.directionWC,f.cameraDirectionUv),f.cameraDirectionUv=d.normalize(f.cameraDirectionUv,f.cameraDirectionUv),f.stepSize=this._stepSizeMultiplier;let E=e.passes.pick?this._drawCommandPick:e.passes.pickVoxel?this._drawCommandPickVoxel:this._drawCommand;E.boundingVolume=o.boundingSphere,e.commandList.push(E)};var kIt=new d,zJ=new d,UIt=new Ae,GIt=new d;function zIt(e,t){if(e._exaggeratedMinBounds=d.clone(e._minBounds,e._exaggeratedMinBounds),e._exaggeratedMaxBounds=d.clone(e._maxBounds,e._exaggeratedMaxBounds),e.shape===lc.ELLIPSOID){let n=t.verticalExaggerationRelativeHeight,i=t.verticalExaggeration;e._exaggeratedMinBounds.z=(e._minBounds.z-n)*i+n,e._exaggeratedMaxBounds.z=(e._maxBounds.z-n)*i+n}else{let n=d.fromElements(1,1,t.verticalExaggeration,kIt);e._exaggeratedModelMatrix=R.multiplyByScale(e._modelMatrix,n,e._exaggeratedModelMatrix),e._exaggeratedModelMatrix=R.multiplyByTranslation(e._exaggeratedModelMatrix,VIt(e,t),e._exaggeratedModelMatrix)}}function VIt(e,t){let{shapeTransform:n=R.IDENTITY,globalTransform:i=R.IDENTITY}=e._provider,o=R.getTranslation(n,zJ),r=R.multiplyByPoint(e._modelMatrix,o,zJ),s=R.multiplyByPoint(i,r,zJ),c=te.WGS84.cartesianToCartographic(s,UIt),u=0;l(c)&&(u=c.height);let f=Yr.getHeight(u,t.verticalExaggeration,t.verticalExaggerationRelativeHeight);return d.fromElements(0,0,(f-u)/t.verticalExaggeration,GIt)}function HIt(e,t,n){let i=e._uniforms;e._pickId=n.createPickId({primitive:e}),i.pickColor=G.clone(e._pickId.color,i.pickColor);let{shaderDefines:o,shaderUniforms:r}=e._shape;e._shapeDefinesOld=ze(o,!0);let s=e._uniformMap;for(let c in r)if(r.hasOwnProperty(c)){let u=`u_${c}`;s[u]=function(){return r[c]}}if(e._dimensions=d.clone(t.dimensions,e._dimensions),i.dimensions=d.clone(e._dimensions,i.dimensions),e._paddingBefore=d.clone(t.paddingBefore??d.ZERO,e._paddingBefore),i.paddingBefore=d.clone(e._paddingBefore,i.paddingBefore),e._paddingAfter=d.clone(t.paddingAfter??d.ZERO,e._paddingAfter),i.paddingAfter=d.clone(e._paddingAfter,i.paddingAfter),e._inputDimensions=d.add(e._dimensions,e._paddingBefore,e._inputDimensions),e._inputDimensions=d.add(e._inputDimensions,e._paddingAfter,e._inputDimensions),t.metadataOrder===kh.Y_UP){let c=e._inputDimensions.y;e._inputDimensions.y=e._inputDimensions.z,e._inputDimensions.z=c}i.inputDimensions=d.clone(e._inputDimensions,i.inputDimensions);let a=t.keyframeCount??1;e._traversal=new u4(e,n,a),e.statistics.texturesByteLength=e._traversal.textureMemoryByteLength,WIt(e._traversal,i)}function axe(e,t){let n=t.shapeTransform??R.IDENTITY,i=t.globalTransform??R.IDENTITY;return R.multiplyTransformation(i,e._exaggeratedModelMatrix,e._compoundModelMatrix),R.multiplyTransformation(e._compoundModelMatrix,n,e._compoundModelMatrix),C0(e,"_compoundModelMatrix","_compoundModelMatrixOld")+C0(e,"_minBounds","_minBoundsOld")+C0(e,"_maxBounds","_maxBoundsOld")+C0(e,"_exaggeratedMinBounds","_exaggeratedMinBoundsOld")+C0(e,"_exaggeratedMaxBounds","_exaggeratedMaxBoundsOld")+C0(e,"_minClippingBounds","_minClippingBoundsOld")+C0(e,"_maxClippingBounds","_maxClippingBoundsOld")>0}function C0(e,t,n){let i=e[t],o=e[n],r=!i.equals(o);return r&&i.clone(o),r?1:0}function cxe(e,t,n){if(!t.update(e._compoundModelMatrix,e._exaggeratedMinBounds,e._exaggeratedMaxBounds,e.minClippingBounds,e.maxClippingBounds))return!1;let o=t.shapeTransform,r=R.inverse(o,NIt);return e._transformPositionWorldToUv=R.multiplyTransformation(FIt,r,e._transformPositionWorldToUv),e._transformDirectionWorldToUv=R.getMatrix3(e._transformPositionWorldToUv,e._transformDirectionWorldToUv),e._transformPositionUvToWorld=R.multiplyTransformation(o,QIt,e._transformPositionUvToWorld),e._transformDirectionWorldToLocal=R.getMatrix3(r,e._transformDirectionWorldToLocal),!0}function WIt(e,t){t.octreeInternalNodeTexture=e.internalNodeTexture,t.octreeInternalNodeTexelSizeUv=k.clone(e.internalNodeTexelSizeUv,t.octreeInternalNodeTexelSizeUv),t.octreeInternalNodeTilesPerRow=e.internalNodeTilesPerRow;let n=e.megatextures,i=n[0],o=n.length;t.megatextureTextures=new Array(o);for(let r=0;r<o;r++)t.megatextureTextures[r]=n[r].texture;t.megatextureSliceDimensions=k.clone(i.sliceCountPerRegion,t.megatextureSliceDimensions),t.megatextureTileDimensions=k.clone(i.regionCountPerMegatexture,t.megatextureTileDimensions),t.megatextureVoxelSizeUv=k.clone(i.voxelSizeUv,t.megatextureVoxelSizeUv),t.megatextureSliceSizeUv=k.clone(i.sliceSizeUv,t.megatextureSliceSizeUv),t.megatextureTileSizeUv=k.clone(i.regionSizeUv,t.megatextureTileSizeUv)}function jIt(e,t){let n=t.shaderDefines,i=Object.keys(n).some(o=>n[o]!==e._shapeDefinesOld[o]);return i&&(e._shapeDefinesOld=ze(n,!0)),i}function YIt(e,t){if(!l(e)||!l(t))return 0;let n=t.currentTime,i,o=e.indexOf(n);o>=0?i=e.get(o):(o=~o,o===e.length?(o=e.length-1,i=e.get(o),n=i.stop):(i=e.get(o),n=i.start));let r=K.secondsDifference(i.stop,i.start),a=K.secondsDifference(n,i.start)/r;return o+a}function qIt(e,t){let n=e.clippingPlanes;if(!l(n))return!1;n.update(t);let{clippingPlanesState:i,enabled:o}=n;if(o){let r=e._uniforms;r.clippingPlanesTexture=n.texture,r.clippingPlanesMatrix=R.transpose(R.multiplyTransformation(R.inverse(n.modelMatrix,r.clippingPlanesMatrix),e._transformPositionUvToWorld,r.clippingPlanesMatrix),r.clippingPlanesMatrix)}return e._clippingPlanesState===i&&e._clippingPlanesEnabled===o?!1:(e._clippingPlanesState=i,e._clippingPlanesEnabled=o,!0)}yA.prototype.isDestroyed=function(){return!1};yA.prototype.destroy=function(){let e=this._drawCommand;l(e)&&(e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy());let t=this._drawCommandPick;return l(t)&&(t.shaderProgram=t.shaderProgram&&t.shaderProgram.destroy()),this._pickId=this._pickId&&this._pickId.destroy(),this._traversal=this._traversal&&this._traversal.destroy(),this.statistics.texturesByteLength=0,this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),ue(this)};var sxe=new Array(new se(-1,-1,-1,1),new se(1,-1,-1,1),new se(-1,1,-1,1),new se(1,1,-1,1),new se(-1,-1,1,1),new se(1,-1,1,1),new se(-1,1,1,1),new se(1,1,1,1)),KIt=new Array(1,2,4,0,3,5,0,3,6,1,2,7,0,5,6,1,4,7,2,4,7,3,5,6),XIt=new Array(new se,new se,new se,new se,new se,new se,new se,new se);function JIt(e,t,n){let i=R.fromRotationTranslation(e.halfAxes,e.center,LIt),o=R.multiply(t,i,OIt),r=+Number.MAX_VALUE,s=-Number.MAX_VALUE,a=+Number.MAX_VALUE,c=-Number.MAX_VALUE,u,f=XIt,h=sxe.length;for(u=0;u<h;u++)R.multiplyByVector(o,sxe[u],f[u]);for(u=0;u<h;u++){let A=f[u];if(A.z>=-A.w){let g=A.x/A.w,m=A.y/A.w;r=Math.min(r,g),s=Math.max(s,g),a=Math.min(a,m),c=Math.max(c,m)}else for(let g=0;g<3;g++){let m=KIt[u*3+g],_=f[m];if(_.z>=-_.w){let y=A.z+A.w,C=_.z+_.w,E=y/(y-C),I=se.lerp(A,_,E,RIt),b=I.x/I.w,S=I.y/I.w;r=Math.min(r,b),s=Math.max(s,b),a=Math.min(a,S),c=Math.max(c,S)}}}return r=D.clamp(r,-1,1),a=D.clamp(a,-1,1),s=D.clamp(s,-1,1),c=D.clamp(c,-1,1),n=se.fromElements(r,a,s,c,n),n}var VJ=3e7,ZIt=new d(VJ,0,0),$It=new d(0,VJ,0),ext=new d(0,0,VJ);function txt(e,t){let n=e._traversal,i=e._debugPolylines;i.removeAll();function o(c,u,f,h){i.add({positions:[c,u],width:h,material:ao.fromType("Color",{color:f})})}function r(c,u,f){let h=c.computeCorners();o(h[0],h[1],u,f),o(h[2],h[3],u,f),o(h[4],h[5],u,f),o(h[6],h[7],u,f),o(h[0],h[2],u,f),o(h[4],h[6],u,f),o(h[1],h[3],u,f),o(h[5],h[7],u,f),o(h[0],h[4],u,f),o(h[2],h[6],u,f),o(h[1],h[5],u,f),o(h[3],h[7],u,f)}function s(c){if(!n.isRenderable(c))return;let u=c.level,h=Math.max(1,5/Math.pow(2,u)),g=[G.RED,G.LIME,G.BLUE][u%3];if(r(c.orientedBoundingBox,g,h),l(c.children))for(let m=0;m<8;m++)s(c.children[m])}r(e._shape.orientedBoundingBox,G.WHITE,5),s(n.rootNode);let a=10;o(d.ZERO,ZIt,G.RED,a),o(d.ZERO,$It,G.LIME,a),o(d.ZERO,ext,G.BLUE,a),i.update(t)}yA.DefaultCustomShader=new eS({fragmentShaderText:`void fragmentMain(FragmentInput fsInput, inout czm_modelMaterial material) +{ + material.diffuse = vec3(1.0); + material.alpha = 1.0; +}`});function lxe(){this.ready=!0,this.shape=lc.BOX,this.dimensions=new d(1,1,1),this.names=["data"],this.types=[gt.SCALAR],this.componentTypes=[zt.FLOAT32],this.maximumTileCount=1}lxe.prototype.requestData=function(e){if((l(e)?e.tileLevel??0:0)>=1)return;let n=new tS({metadata:[new Float32Array(1)]});return Promise.resolve(n)};yA.DefaultProvider=new lxe;var E0=yA;function nxt(e,t,n,i){if(!l(e)||l(t)&&e.id!==t)return;let r=(e.classes||{})[n];if(!l(r))return;let a=(r.properties||{})[i];if(l(a))return a}var f4=nxt;function ixt(e,t,n,i,o){this.schemaId=e,this.className=t,this.propertyName=n,this.classProperty=i,this.metadataProperty=o}var d4=ixt;function oxt(e,t,n){if(!l(e))return;let i=e.propertyTextures;for(let o of i)if(o.class.id===t){let a=o.properties[n];if(l(a))return a}}var h4=oxt;var A4=function(e){return function(){e.frameState.afterRender.push(function(){e.requestRender()})}};function gi(e){e=e??V.EMPTY_OBJECT;let t=e.canvas,n=e.creditContainer,i=e.creditViewport,o=e.contextOptions instanceof iz;if(o)this._context=e.contextOptions.createSceneContext(t);else{let u=ze(e.contextOptions);this._context=new vT(t,u)}let r=this._context,s=l(n);s||(n=document.createElement("div"),n.style.position="absolute",n.style.bottom="0",n.style["text-shadow"]="0 0 2px #000000",n.style.color="#ffffff",n.style["font-size"]="10px",n.style["padding-right"]="5px",t.parentNode.appendChild(n)),l(i)||(i=t.parentNode),this._id=Xn(),this._jobScheduler=new MV,this._frameState=new vV(r,new EV(n,"\u2022",i),this._jobScheduler),this._frameState.scene3DOnly=e.scene3DOnly??!1,this._removeCreditContainer=!s,this._creditContainer=n,this._canvas=t,this._computeEngine=new JG(r),this._ellipsoid=e.ellipsoid??te.default,this._globe=void 0,this._globeTranslucencyState=new PV,this._primitives=new ou({countReferences:o}),this._groundPrimitives=new ou({countReferences:o}),this._globeHeight=void 0,this._globeHeightDirty=!0,this._cameraUnderground=!1,this._removeUpdateHeightCallback=void 0,this._logDepthBuffer=gi.defaultLogDepthBuffer&&r.fragmentDepth,this._logDepthBufferDirty=!0,this._tweens=new XT,this._shaderFrameCount=0,this._sunPostProcess=void 0,this._computeCommandList=[],this._overlayCommandList=[],this._useOIT=e.orderIndependentTranslucency??!0,this._executeOITFunction=void 0,this._depthPlane=new SV(e.depthPlaneEllipsoidOffset),this._clearColorCommand=new Ei({color:new G,stencil:0,owner:this}),this._depthClearCommand=new Ei({depth:1,owner:this}),this._stencilClearCommand=new Ei({stencil:0}),this._classificationStencilClearCommand=new Ei({stencil:0,renderState:Ue.fromCache({stencilMask:Kt.CLASSIFICATION_MASK})}),this._depthOnlyRenderStateCache={},this._transitioner=new E8(this),this._preUpdate=new _e,this._postUpdate=new _e,this._renderError=new _e,this._preRender=new _e,this._postRender=new _e,this._minimumDisableDepthTestDistance=0,this._debugInspector=new O8,this._msaaSamples=e.msaaSamples??4,this.rethrowRenderErrors=!1,this.completeMorphOnUserInput=!0,this.morphStart=new _e,this.morphComplete=new _e,this.skyBox=void 0,this.skyAtmosphere=void 0,this.sun=void 0,this.sunBloom=!0,this._sunBloom=void 0,this.moon=void 0,this.backgroundColor=G.clone(G.BLACK),this._mode=ie.SCENE3D,this._mapProjection=l(e.mapProjection)?e.mapProjection:new Hi(this._ellipsoid),this.morphTime=1,this.farToNearRatio=1e3,this.logarithmicDepthFarToNearRatio=1e9,this.nearToFarDistance2D=175e4,this.verticalExaggeration=1,this.verticalExaggerationRelativeHeight=0,this.debugCommandFilter=void 0,this.debugShowCommands=!1,this.debugShowFrustums=!1,this.debugShowFramesPerSecond=!1,this.debugShowDepthFrustum=1,this.debugShowFrustumPlanes=!1,this._debugShowFrustumPlanes=!1,this._debugFrustumPlanes=void 0,this.useDepthPicking=!0,this.pickTranslucentDepth=!1,this.cameraEventWaitTime=500,this.atmosphere=new lx,this.fog=new DV,this.fog.enabled=te.WGS84.equals(this._ellipsoid),te.WGS84.equals(this._ellipsoid)||(Eo.DEFAULT_VIEW_RECTANGLE=ae.fromDegrees(-45,-45,45,45)),this._shadowMapCamera=new Eo(this),this.shadowMap=new Oy({context:r,lightCamera:this._shadowMapCamera,enabled:e.shadows??!1}),this.invertClassification=!1,this.invertClassificationColor=G.clone(G.WHITE),this._actualInvertClassificationColor=G.clone(this._invertClassificationColor),this._invertClassification=new _P,this.focalLength=void 0,this.eyeSeparation=void 0,this.postProcessStages=new _8,this._brdfLutGenerator=new uV,this._performanceDisplay=void 0,this._debugVolume=void 0,this._screenSpaceCameraController=new R8(this),this._cameraUnderground=!1,this._mapMode2D=e.mapMode2D??$u.INFINITE_SCROLL,this._environmentState={skyBoxCommand:void 0,skyAtmosphereCommand:void 0,sunDrawCommand:void 0,sunComputeCommand:void 0,moonCommand:void 0,isSunVisible:!1,isMoonVisible:!1,isReadyForAtmosphere:!1,isSkyAtmosphereVisible:!1,clearGlobeDepth:!1,useDepthPlane:!1,renderTranslucentDepthForPick:!1,originalFramebuffer:void 0,useGlobeDepthFramebuffer:!1,useOIT:!1,useInvertClassification:!1,usePostProcess:!1,usePostProcessSelected:!1,useWebVR:!1},this._useWebVR=!1,this._cameraVR=void 0,this._aspectRatioVR=void 0,this.requestRenderMode=e.requestRenderMode??!1,this._renderRequested=!0,this.maximumRenderTimeChange=e.maximumRenderTimeChange??0,this._lastRenderTime=void 0,this._frameRateMonitor=void 0,this._removeRequestListenerCallback=Yc.requestCompletedEvent.addEventListener(A4(this)),this._removeTaskProcessorListenerCallback=mi.taskCompletedEvent.addEventListener(A4(this)),this._removeGlobeCallbacks=[],this._removeTerrainProviderReadyListener=void 0;let a=new Xe(0,0,r.drawingBufferWidth,r.drawingBufferHeight),c=new Eo(this);this._logDepthBuffer&&(c.frustum.near=.1,c.frustum.far=1e10),this.preloadFlightCamera=new Eo(this),this.preloadFlightCullingVolume=void 0,this._picking=new ZV(this),this._defaultView=new jT(this,c,a),this._view=this._defaultView,this._hdr=void 0,this._hdrDirty=void 0,this.highDynamicRange=!1,this.gamma=2.2,this.sphericalHarmonicCoefficients=void 0,this.specularEnvironmentMaps=void 0,this._specularEnvironmentCubeMap=void 0,this.light=new wy,Axe(this,0,K.now()),this.updateFrameState(),this.initializeFrame()}gi.defaultLogDepthBuffer=!0;function rxt(e,t){for(let i=0;i<e._removeGlobeCallbacks.length;++i)e._removeGlobeCallbacks[i]();e._removeGlobeCallbacks.length=0;let n=[];l(t)&&(n.push(t.imageryLayersUpdatedEvent.addEventListener(A4(e))),n.push(t.terrainProviderChanged.addEventListener(A4(e)))),e._removeGlobeCallbacks=n}Object.defineProperties(gi.prototype,{canvas:{get:function(){return this._canvas}},drawingBufferHeight:{get:function(){return this._context.drawingBufferHeight}},drawingBufferWidth:{get:function(){return this._context.drawingBufferWidth}},maximumAliasedLineWidth:{get:function(){return qt.maximumAliasedLineWidth}},maximumCubeMapSize:{get:function(){return qt.maximumCubeMapSize}},pickPositionSupported:{get:function(){return this._context.depthTexture}},sampleHeightSupported:{get:function(){return this._context.depthTexture}},clampToHeightSupported:{get:function(){return this._context.depthTexture}},invertClassificationSupported:{get:function(){return this._context.depthTexture}},specularEnvironmentMapsSupported:{get:function(){return hm.isSupported(this._context)}},ellipsoid:{get:function(){return this._ellipsoid}},globe:{get:function(){return this._globe},set:function(e){this._globe=this._globe&&this._globe.destroy(),this._globe=e,rxt(this,e)}},primitives:{get:function(){return this._primitives}},groundPrimitives:{get:function(){return this._groundPrimitives}},camera:{get:function(){return this._view.camera},set:function(e){this._view.camera=e}},view:{get:function(){return this._view},set:function(e){this._view=e}},defaultView:{get:function(){return this._defaultView}},picking:{get:function(){return this._picking}},screenSpaceCameraController:{get:function(){return this._screenSpaceCameraController}},mapProjection:{get:function(){return this._mapProjection}},jobScheduler:{get:function(){return this._jobScheduler}},frameState:{get:function(){return this._frameState}},environmentState:{get:function(){return this._environmentState}},tweens:{get:function(){return this._tweens}},imageryLayers:{get:function(){if(l(this.globe))return this.globe.imageryLayers}},terrainProvider:{get:function(){if(l(this.globe))return this.globe.terrainProvider},set:function(e){this._removeTerrainProviderReadyListener=this._removeTerrainProviderReadyListener&&this._removeTerrainProviderReadyListener(),l(this.globe)&&(this.globe.terrainProvider=e)}},terrainProviderChanged:{get:function(){if(l(this.globe))return this.globe.terrainProviderChanged}},preUpdate:{get:function(){return this._preUpdate}},postUpdate:{get:function(){return this._postUpdate}},renderError:{get:function(){return this._renderError}},preRender:{get:function(){return this._preRender}},postRender:{get:function(){return this._postRender}},lastRenderTime:{get:function(){return this._lastRenderTime}},context:{get:function(){return this._context}},debugFrustumStatistics:{get:function(){return this._view.debugFrustumStatistics}},scene3DOnly:{get:function(){return this._frameState.scene3DOnly}},orderIndependentTranslucency:{get:function(){return this._useOIT}},id:{get:function(){return this._id}},mode:{get:function(){return this._mode},set:function(e){e===ie.SCENE2D?this.morphTo2D(0):e===ie.SCENE3D?this.morphTo3D(0):e===ie.COLUMBUS_VIEW&&this.morphToColumbusView(0),this._mode=e}},frustumCommandsList:{get:function(){return this._view.frustumCommandsList}},numberOfFrustums:{get:function(){return this._view.frustumCommandsList.length}},useWebVR:{get:function(){return this._useWebVR},set:function(e){this._useWebVR=e,this._useWebVR?(this._frameState.creditDisplay.container.style.visibility="hidden",this._cameraVR=new Eo(this),l(this._deviceOrientationCameraController)||(this._deviceOrientationCameraController=new BV(this)),this._aspectRatioVR=this.camera.frustum.aspectRatio):(this._frameState.creditDisplay.container.style.visibility="visible",this._cameraVR=void 0,this._deviceOrientationCameraController=this._deviceOrientationCameraController&&!this._deviceOrientationCameraController.isDestroyed()&&this._deviceOrientationCameraController.destroy(),this.camera.frustum.aspectRatio=this._aspectRatioVR,this.camera.frustum.xOffset=0)}},mapMode2D:{get:function(){return this._mapMode2D}},splitPosition:{get:function(){return this._frameState.splitPosition},set:function(e){this._frameState.splitPosition=e}},minimumDisableDepthTestDistance:{get:function(){return this._minimumDisableDepthTestDistance},set:function(e){this._minimumDisableDepthTestDistance=e}},logarithmicDepthBuffer:{get:function(){return this._logDepthBuffer},set:function(e){e=this._context.fragmentDepth&&e,this._logDepthBuffer!==e&&(this._logDepthBuffer=e,this._logDepthBufferDirty=!0)}},gamma:{get:function(){return this._context.uniformState.gamma},set:function(e){this._context.uniformState.gamma=e}},highDynamicRange:{get:function(){return this._hdr},set:function(e){let t=this._context,n=e&&t.depthTexture&&(t.colorBufferFloat||t.colorBufferHalfFloat);this._hdrDirty=n!==this._hdr,this._hdr=n}},highDynamicRangeSupported:{get:function(){let e=this._context;return e.depthTexture&&(e.colorBufferFloat||e.colorBufferHalfFloat)}},cameraUnderground:{get:function(){return this._cameraUnderground}},msaaSamples:{get:function(){return this._msaaSamples},set:function(e){e=Math.min(e,qt.maximumSamples),this._msaaSamples=e}},msaaSupported:{get:function(){return this._context.msaa}},pixelRatio:{get:function(){return this._frameState.pixelRatio},set:function(e){this._frameState.pixelRatio=e}},opaqueFrustumNearOffset:{get:function(){return .9999}},globeHeight:{get:function(){return this._globeHeight}}});gi.prototype.getCompressedTextureFormatSupported=function(e){let t=this.context;return(e==="WEBGL_compressed_texture_s3tc"||e==="s3tc")&&t.s3tc||(e==="WEBGL_compressed_texture_pvrtc"||e==="pvrtc")&&t.pvrtc||(e==="WEBGL_compressed_texture_etc"||e==="etc")&&t.etc||(e==="WEBGL_compressed_texture_etc1"||e==="etc1")&&t.etc1||(e==="WEBGL_compressed_texture_astc"||e==="astc")&&t.astc||(e==="EXT_texture_compression_bptc"||e==="bc7")&&t.bc7};function sxt(e,t){let n=e.pickedMetadataInfo,i=t.pickedMetadataInfo;return n?.schemaId!==i?.schemaId||n?.className!==i?.className||n?.propertyName!==i?.propertyName}function uxe(e,t,n){let i=e._frameState,o=e._context,r=e._view.oit,{lightShadowMaps:s,lightShadowsEnabled:a}=i.shadowState,c=t.derivedCommands;l(t.pickId)&&(c.picking=Xp.createPickDerivedCommand(e,t,o,c.picking)),i.pickingMetadata&&t.pickMetadataAllowed&&(t.pickedMetadataInfo=i.pickedMetadataInfo,l(t.pickedMetadataInfo)&&(c.pickingMetadata=Xp.createPickMetadataDerivedCommand(e,t,o,c.pickingMetadata))),t.pickOnly||(c.depth=Xp.createDepthOnlyDerivedCommand(e,t,o,c.depth)),c.originalCommand=t,e._hdr&&(c.hdr=Xp.createHdrCommand(t,o,c.hdr),t=c.hdr.command,c=t.derivedCommands),a&&t.receiveShadows&&(c.shadows=Oy.createReceiveDerivedCommand(s,t,n,o,c.shadows)),t.pass===Be.TRANSLUCENT&&l(r)&&r.isSupported()&&(a&&t.receiveShadows?(c.oit=l(c.oit)?c.oit:{},c.oit.shadows=r.createDerivedCommands(c.shadows.receiveCommand,o,c.oit.shadows)):c.oit=r.createDerivedCommands(t,o,c.oit))}gi.prototype.updateDerivedCommands=function(e){let{derivedCommands:t}=e;if(!l(t))return;let n=this._frameState,{shadowState:i,useLogDepth:o}=this._frameState,r=this._context,s=!1,a=i.lastDirtyTime;e.lastDirtyTime!==a&&(e.lastDirtyTime=a,e.dirty=!0,s=!0);let c=this._hdr,u=l(t.logDepth),f=l(t.hdr),h=l(t.originalCommand),A=o&&!u,g=c&&!f,m=(!o||!c)&&!h,_=n.pickingMetadata&&sxt(e,n);if(e.dirty=e.dirty||A||g||m||_,!e.dirty)return;e.dirty=!1;let{shadowsEnabled:y,shadowMaps:C}=i;y&&e.castShadows&&(t.shadows=Oy.createCastDerivedCommand(C,e,s,r,t.shadows)),(u||A)&&(t.logDepth=Xp.createLogDepthCommand(e,r,t.logDepth),uxe(this,t.logDepth.command,s)),(h||m)&&uxe(this,e,s)};var axt=new Lh({pass:Zo.RENDER}),HJ=new Lh({pass:Zo.PRELOAD}),WJ=new Lh({pass:Zo.PRELOAD_FLIGHT}),cxt=new Lh({pass:Zo.REQUEST_RENDER_MODE_DEFER_CHECK}),fxe=new le,jJ;function lxt(e){if(!(e._mode!==ie.SCENE3D||!e.globe?.show||e._cameraUnderground||e._globeTranslucencyState.translucent))return fxe.radius=e.ellipsoid.minimumRadius+e.frameState.minimumTerrainHeight,jJ=lV.fromBoundingSphere(fxe,e.camera.positionWC,jJ),jJ}gi.prototype.clearPasses=function(e){e.render=!1,e.pick=!1,e.pickVoxel=!1,e.depth=!1,e.postProcess=!1,e.offscreen=!1};function Axe(e,t,n){let i=e._frameState;i.frameNumber=t,i.time=K.clone(n,i.time)}gi.prototype.updateFrameState=function(){let e=this.camera,t=this._frameState;t.commandList.length=0,t.shadowMaps.length=0,t.brdfLutGenerator=this._brdfLutGenerator,t.environmentMap=this.skyBox&&this.skyBox._cubeMap,t.mode=this._mode,t.morphTime=this.morphTime,t.mapProjection=this.mapProjection,t.camera=e,t.cullingVolume=e.frustum.computeCullingVolume(e.positionWC,e.directionWC,e.upWC),t.occluder=lxt(this),t.minimumTerrainHeight=0,t.minimumDisableDepthTestDistance=this._minimumDisableDepthTestDistance,t.invertClassification=this.invertClassification,t.useLogDepth=this._logDepthBuffer&&!(this.camera.frustum instanceof An||this.camera.frustum instanceof ls),t.light=this.light,t.cameraUnderground=this._cameraUnderground,t.globeTranslucencyState=this._globeTranslucencyState;let{globe:n}=this;l(n)&&n._terrainExaggerationChanged&&(this.verticalExaggeration=n._terrainExaggeration,this.verticalExaggerationRelativeHeight=n._terrainExaggerationRelativeHeight,n._terrainExaggerationChanged=!1),t.verticalExaggeration=this.verticalExaggeration,t.verticalExaggerationRelativeHeight=this.verticalExaggerationRelativeHeight,l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.ready?(t.specularEnvironmentMaps=this._specularEnvironmentCubeMap.texture,t.specularEnvironmentMapsMaximumLOD=this._specularEnvironmentCubeMap.maximumMipmapLevel):(t.specularEnvironmentMaps=void 0,t.specularEnvironmentMapsMaximumLOD=void 0),t.sphericalHarmonicCoefficients=this.sphericalHarmonicCoefficients,this._actualInvertClassificationColor=G.clone(this.invertClassificationColor,this._actualInvertClassificationColor),_P.isTranslucencySupported(this._context)||(this._actualInvertClassificationColor.alpha=1),t.invertClassificationColor=this._actualInvertClassificationColor,l(this.globe)?t.maximumScreenSpaceError=this.globe.maximumScreenSpaceError:t.maximumScreenSpaceError=2,this.clearPasses(t.passes),t.tilesetPassState=void 0};gi.prototype.isVisible=function(e,t,n){if(!l(t))return!1;let{boundingVolume:i}=t;return!l(i)||!t.cull?!0:e.computeVisibility(i)===nn.OUTSIDE?!1:!l(n)||!t.occlude||!i.isOccluded(n)};var m4=new R(0,0,1,0,1,0,0,0,0,1,0,0,0,0,0,1);m4=R.inverseTransformation(m4,m4);function uxt(e,t,n,i){let o=t._frameState,r=o.context,s=e.boundingVolume;l(t._debugVolume)&&t._debugVolume.destroy();let a=d.clone(s.center);if(o.mode!==ie.SCENE3D){a=R.multiplyByPoint(m4,a,a);let m=o.mapProjection,_=m.unproject(a);a=m.ellipsoid.cartographicToCartesian(_)}let c,u,{radius:f}=s;l(f)?(c=ka.createGeometry(new ka({radii:new d(f,f,f),vertexFormat:gn.FLAT_VERTEX_FORMAT})),u=R.fromTranslation(a)):(c=yc.createGeometry(yc.fromDimensions({dimensions:new d(2,2,2),vertexFormat:gn.FLAT_VERTEX_FORMAT})),u=R.fromRotationTranslation(s.halfAxes,a,new R)),t._debugVolume=new kn({geometryInstances:new Rt({geometry:jn.toWireframe(c),modelMatrix:u,attributes:{color:new en(1,0,0,1)}}),appearance:new gn({flat:!0,translucent:!1}),asynchronous:!1});let h=o.commandList,A=o.commandList=[];t._debugVolume.update(o),e=A[0],o.useLogDepth&&(e=Xp.createLogDepthCommand(e,r).command);let g;l(i)&&(g=n.framebuffer,n.framebuffer=i),e.execute(r,n),l(g)&&(n.framebuffer=g),o.commandList=h}function Gh(e,t,n,i){let o=t._frameState,r=t._context;if(l(t.debugCommandFilter)&&!t.debugCommandFilter(e))return;if(e instanceof Ei){e.execute(r,n);return}e.debugShowBoundingVolume&&l(e.boundingVolume)&&uxt(e,t,n,i),o.useLogDepth&&l(e.derivedCommands.logDepth)&&(e=e.derivedCommands.logDepth.command);let s=o.passes;if(!s.pick&&!s.pickVoxel&&!s.depth&&t._hdr&&l(e.derivedCommands)&&l(e.derivedCommands.hdr)&&(e=e.derivedCommands.hdr.command),s.pick||s.depth){if(s.pick&&!s.depth){if(o.pickingMetadata&&l(e.derivedCommands.pickingMetadata)){e=e.derivedCommands.pickingMetadata.pickMetadataCommand,e.execute(r,n);return}if(!o.pickingMetadata&&l(e.derivedCommands.picking)){e=e.derivedCommands.picking.pickCommand,e.execute(r,n);return}}else if(l(e.derivedCommands.depth)){e=e.derivedCommands.depth.depthOnlyCommand,e.execute(r,n);return}}if(t.debugShowCommands||t.debugShowFrustums){t._debugInspector.executeDebugShowFrustumsCommand(t,e,n);return}o.shadowState.lightShadowsEnabled&&e.receiveShadows&&l(e.derivedCommands.shadows)?e.derivedCommands.shadows.receiveCommand.execute(r,n):e.execute(r,n)}function dxe(e,t,n){let{derivedCommands:i}=e;if(!l(i))return;let o=t._frameState,r=t._context;o.useLogDepth&&l(i.logDepth)&&(e=i.logDepth.command);let{picking:s,pickingMetadata:a,depth:c}=e.derivedCommands;l(a)&&(e=i.pickingMetadata.pickMetadataCommand,e.execute(r,n)),l(s)?(e=s.pickCommand,e.execute(r,n)):l(c)&&(e=c.depthOnlyCommand,e.execute(r,n))}function pxe(e,t,n){return t.boundingVolume.distanceSquaredTo(n)-e.boundingVolume.distanceSquaredTo(n)}var fxt=new d;function hxe(e,t){let n=d.subtract(e,t,fxt),i=Math.max(0,d.magnitude(n));return i*i}function dxt(e,t,n){let i=e.boundingVolume,o=t.boundingVolume;return hxe(o.center,n)-hxe(i.center,n)}function hxt(e,t,n){return e.boundingVolume.distanceSquaredTo(n)-t.boundingVolume.distanceSquaredTo(n)+D.EPSILON12}function mxt(e,t,n,i,o){qp(i,pxe,e.camera.positionWC),l(o)&&t(o.unclassifiedCommand,e,n);for(let r=0;r<i.length;++r)t(i[r],e,n)}function Axt(e,t,n,i,o){qp(i,hxt,e.camera.positionWC),l(o)&&t(o.unclassifiedCommand,e,n);for(let r=0;r<i.length;++r)t(i[r],e,n)}function pxt(e,t,n){e.context.uniformState.updatePass(Be.VOXELS);let i=n.commands[Be.VOXELS];i.length=n.indices[Be.VOXELS],qp(i,pxe,e.camera.positionWC);for(let o=0;o<i.length;++o)Gh(i[o],e,t)}function gxt(e,t,n){e.context.uniformState.updatePass(Be.GAUSSIAN_SPLATS);let i=n.commands[Be.GAUSSIAN_SPLATS];i.length=n.indices[Be.GAUSSIAN_SPLATS],qp(i,dxt,e.camera.positionWC);for(let o=0;o<i.length;++o)Gh(i[o],e,t)}var _xt=new Vi,yxt=new fu,Cxt=new An,Ext=new ls;function Ixt(e){let{frustum:t}=e;return l(t.fov)?t.clone(_xt):l(t.infiniteProjectionMatrix)?t.clone(yxt):l(t.width)?t.clone(Cxt):t.clone(Ext)}function xxt(e){if(e._environmentState.useOIT){if(!l(e._executeOITFunction)){let{view:t,context:n}=e;e._executeOITFunction=function(i,o,r,s,a){t.globeDepth.prepareColorTextures(n),t.oit.executeCommands(i,o,r,s,a)}}return e._executeOITFunction}return e.frameState.passes.render?mxt:Axt}function bxt(e,t,n){let{frameState:i,context:o}=e,{pick:r,pickVoxel:s}=i.passes,a=r||s,c;!a&&e._environmentState.useInvertClassification&&i.invertClassificationColor.alpha<1&&(c=e._invertClassification);let u=xxt(e);o.uniformState.updatePass(Be.TRANSLUCENT);let f=n.commands[Be.TRANSLUCENT];f.length=n.indices[Be.TRANSLUCENT],u(e,Gh,t,f,c)}function Txt(e,t,n){let{translucentTileClassification:i,globeDepth:o}=e._view;if(!(n.indices[Be.CESIUM_3D_TILE_CLASSIFICATION]>0)||!i.isSupported())return;let s=n.commands[Be.TRANSLUCENT];i.executeTranslucentCommands(e,Gh,t,s,o.depthStencilTexture),i.executeClassificationCommands(e,Gh,t,n)}function qJ(e,t){let{camera:n,context:i,frameState:o}=e,{uniformState:r}=i;r.updateCamera(n);let s=Ixt(n);s.near=n.frustum.near,s.far=n.frustum.far;let a=o.passes,c=a.pick||a.pickVoxel;c||Sxt(e,t);let{clearGlobeDepth:u,renderTranslucentDepthForPick:f,useDepthPlane:h,useGlobeDepthFramebuffer:A,useInvertClassification:g,usePostProcessSelected:m}=e._environmentState,{globeDepth:_,globeTranslucencyFramebuffer:y,sceneFramebuffer:C,frustumCommandsList:E}=e._view,I=E.length,b=e._globeTranslucencyState,S=e._depthClearCommand,B=e._stencilClearCommand,v=e._classificationStencilClearCommand,P=e._depthPlane,N=n.position.z;function L(x,T){r.updatePass(T);let w=x.commands[T],M=x.indices[T];for(let O=0;O<M;++O)Gh(w[O],e,t);return M}function p(x,T){r.updatePass(T);let w=x.commands[T],M=x.indices[T];for(let O=0;O<M;++O)dxe(w[O],e,t)}for(let x=0;x<I;++x){let T=I-x-1,w=E[T];e.mode===ie.SCENE2D?(n.position.z=N-w.near+1,s.far=Math.max(1,w.far-w.near),s.near=1,r.update(o),r.updateFrustum(s)):(s.near=T!==0?w.near*e.opaqueFrustumNearOffset:w.near,s.far=w.far,r.updateFrustum(s)),S.execute(i,t),i.stencilBuffer&&B.execute(i,t),b.translucent?(r.updatePass(Be.GLOBE),b.executeGlobeCommands(w,Gh,y,e,t)):L(w,Be.GLOBE),A&&_.executeCopyDepth(i,t),f||(b.translucent?(r.updatePass(Be.TERRAIN_CLASSIFICATION),b.executeGlobeClassificationCommands(w,Gh,y,e,t)):L(w,Be.TERRAIN_CLASSIFICATION)),u&&(S.execute(i,t),h&&P.execute(i,t));let M;if(!g||c||f)M=L(w,Be.CESIUM_3D_TILE),M>0&&(A&&(_.prepareColorTextures(i,u),_.executeUpdateDepth(i,t,_.depthStencilTexture)),f||(M=L(w,Be.CESIUM_3D_TILE_CLASSIFICATION)));else{e._invertClassification.clear(i,t);let U=t.framebuffer;t.framebuffer=e._invertClassification._fbo.framebuffer,M=L(w,Be.CESIUM_3D_TILE),A&&(e._invertClassification.prepareTextures(i),_.executeUpdateDepth(i,t,e._invertClassification._fbo.getDepthStencilTexture())),M=L(w,Be.CESIUM_3D_TILE_CLASSIFICATION_IGNORE_SHOW),t.framebuffer=U,e._invertClassification.executeClassified(i,t),o.invertClassificationColor.alpha===1&&e._invertClassification.executeUnclassified(i,t),M>0&&i.stencilBuffer&&v.execute(i,t),M=L(w,Be.CESIUM_3D_TILE_CLASSIFICATION)}if(M>0&&i.stencilBuffer&&B.execute(i,t),pxt(e,t,w),L(w,Be.OPAQUE),gxt(e,t,w),T!==0&&e.mode!==ie.SCENE2D&&(s.near=w.near,r.updateFrustum(s)),bxt(e,t,w),Txt(e,t,w),i.depthTexture&&e.useDepthPicking&&(A||f)){let U=e._picking.getPickDepth(e,T);U.update(i,_.depthStencilTexture),U.executeCopyDepth(i,t)}if(c||!m)continue;let O=t.framebuffer;t.framebuffer=C.getIdFramebuffer(),s.near=T!==0?w.near*e.opaqueFrustumNearOffset:w.near,s.far=w.far,r.updateFrustum(s),b.translucent?(r.updatePass(Be.GLOBE),b.executeGlobeCommands(w,dxe,y,e,t)):p(w,Be.GLOBE),u&&(S.framebuffer=t.framebuffer,S.execute(i,t),S.framebuffer=void 0),u&&h&&P.execute(i,t),p(w,Be.CESIUM_3D_TILE),p(w,Be.OPAQUE),p(w,Be.TRANSLUCENT),t.framebuffer=O}}function Sxt(e,t){let{context:n,environmentState:i,view:o}=e;if(n.uniformState.updatePass(Be.ENVIRONMENT),l(i.skyBoxCommand)&&Gh(i.skyBoxCommand,e,t),i.isSkyAtmosphereVisible&&Gh(i.skyAtmosphereCommand,e,t),i.isSunVisible&&(i.sunDrawCommand.execute(n,t),e.sunBloom&&!i.useWebVR)){let r;i.useGlobeDepthFramebuffer?r=o.globeDepth.framebuffer:i.usePostProcess?r=o.sceneFramebuffer.framebuffer:r=i.originalFramebuffer,e._sunPostProcess.execute(n),e._sunPostProcess.copy(n,r),t.framebuffer=r}i.isMoonVisible&&i.moonCommand.execute(n,t)}function gxe(e){e.context.uniformState.updatePass(Be.COMPUTE);let t=e._environmentState.sunComputeCommand;l(t)&&t.execute(e._computeEngine);let n=e._computeCommandList;for(let i=0;i<n.length;++i)n[i].execute(e._computeEngine)}function wxt(e,t){e.context.uniformState.updatePass(Be.OVERLAY);let n=e.context,i=e._overlayCommandList;for(let o=0;o<i.length;++o)i[o].execute(n,t)}function Bxt(e,t,n){let{shadowMapCullingVolume:i,isPointLight:o,passes:r}=n,s=r.length,a=[Be.GLOBE,Be.CESIUM_3D_TILE,Be.OPAQUE,Be.TRANSLUCENT];for(let c=0;c<t.length;++c){let u=t[c];if(e.updateDerivedCommands(u),!(!u.castShadows||a.indexOf(u.pass)<0||!e.isVisible(i,u)))if(o)for(let f=0;f<s;++f)r[f].commandList.push(u);else if(s===1)r[0].commandList.push(u);else{let f=!1;for(let h=s-1;h>=0;--h){let A=r[h].cullingVolume;if(e.isVisible(A,u))r[h].commandList.push(u),f=!0;else if(f)break}}}}function _xe(e){let{shadowState:t,commandList:n}=e.frameState,{shadowsEnabled:i,shadowMaps:o}=t;if(!i)return;let{context:r}=e,{uniformState:s}=r;for(let a=0;a<o.length;++a){let c=o[a];if(c.outOfView)continue;let{passes:u}=c;for(let f=0;f<u.length;++f)u[f].commandList.length=0;Bxt(e,n,c);for(let f=0;f<u.length;++f){let h=c.passes[f],{camera:A,commandList:g}=h;s.updateCamera(A),c.updatePass(r,f);for(let m=0;m<g.length;++m){let _=g[m];s.updatePass(_.pass);let y=_.derivedCommands.shadows.castCommands[a];Gh(y,e,h.passState)}}}}var Dxt=new d;gi.prototype.updateAndExecuteCommands=function(e,t){zxt(this,e,t),this._environmentState.useWebVR?vxt(this,e,t):this._frameState.mode!==ie.SCENE2D||this._mapMode2D===$u.ROTATE?zy(!0,this,e):kxt(this,e)};function vxt(e,t){let n=e._view,i=n.camera,r=e._environmentState.renderTranslucentDepthForPick;yxe(e),n.createPotentiallyVisibleSet(e),gxe(e),r||_xe(e);let s=t.viewport;s.x=0,s.y=0,s.width=s.width*.5;let a=Eo.clone(i,e._cameraVR);a.frustum=i.frustum;let c=i.frustum.near,u=c*(e.focalLength??5),f=e.eyeSeparation??u/30,h=d.multiplyByScalar(a.right,f*.5,Dxt);i.frustum.aspectRatio=s.width/s.height;let A=.5*f*c/u;d.add(a.position,h,i.position),i.frustum.xOffset=A,qJ(e,t),s.x=s.width,d.subtract(a.position,h,i.position),i.frustum.xOffset=-A,qJ(e,t),Eo.clone(a,i)}var Pxt=new Ae(Math.PI,D.PI_OVER_TWO),Rxt=new d,Mxt=new d,Nxt=new R,Lxt=new R,Oxt=new d,Fxt=new d,Qxt=new Xe;function kxt(e,t){let{frameState:n,camera:i}=e,{uniformState:o}=e.context,r=t.viewport,s=Xe.clone(r,Qxt);t.viewport=s;let a=Pxt,c=Rxt;e.mapProjection.project(a,c);let f=d.clone(i.position,Mxt),h=R.clone(i.transform,Lxt),A=i.frustum.clone();i._setTransform(R.IDENTITY);let g=R.computeViewportTransformation(s,0,1,Nxt),m=i.frustum.projectionMatrix,_=i.positionWC.y,y=d.fromElements(D.sign(_)*c.x-_,0,-i.positionWC.x,Oxt),C=kt.pointToGLWindowCoordinates(m,g,y,Fxt);C.x=Math.floor(C.x);let E=s.x,I=s.width;if(_===0||C.x<=E||C.x>=E+I)zy(!0,e,t);else if(Math.abs(E+I*.5-C.x)<1)s.width=C.x-s.x,i.position.x*=D.sign(i.position.x),i.frustum.right=0,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),zy(!0,e,t),s.x=C.x,i.position.x=-i.position.x,i.frustum.right=-i.frustum.left,i.frustum.left=0,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),zy(!1,e,t);else if(C.x>E+I*.5){s.width=C.x-E;let b=i.frustum.right;i.frustum.right=c.x-_,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),zy(!0,e,t),s.x=C.x,s.width=E+I-C.x,i.position.x=-i.position.x,i.frustum.left=-i.frustum.right,i.frustum.right=b-i.frustum.right*2,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),zy(!1,e,t)}else{s.x=C.x,s.width=E+I-C.x;let b=i.frustum.left;i.frustum.left=-c.x-_,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),zy(!0,e,t),s.x=E,s.width=C.x-E,i.position.x=-i.position.x,i.frustum.right=-i.frustum.left,i.frustum.left=b-i.frustum.left*2,n.cullingVolume=i.frustum.computeCullingVolume(i.positionWC,i.directionWC,i.upWC),o.update(n),zy(!1,e,t)}i._setTransform(h),d.clone(f,i.position),i.frustum=A.clone(),t.viewport=r}function zy(e,t,n){let i=t._view,{renderTranslucentDepthForPick:o}=t._environmentState;e||(t.frameState.commandList.length=0),yxe(t),i.createPotentiallyVisibleSet(t),e&&(gxe(t),o||_xe(t)),qJ(t,n)}var mxe=new zs;gi.prototype.updateEnvironment=function(){let e=this._frameState,t=this._view,n=this._environmentState,i=e.passes.render,o=e.passes.offscreen,r=this.atmosphere,s=this.skyAtmosphere,a=this.globe,c=this._globeTranslucencyState;if(!i||this._mode!==ie.SCENE2D&&t.camera.frustum instanceof An||!c.environmentVisible)n.skyAtmosphereCommand=void 0,n.skyBoxCommand=void 0,n.sunDrawCommand=void 0,n.sunComputeCommand=void 0,n.moonCommand=void 0;else{if(l(s)){if(l(a))s.setDynamicLighting(r_.fromGlobeFlags(a)),n.isReadyForAtmosphere=n.isReadyForAtmosphere||!a.show||a._surface._tilesToRender.length>0;else{let C=r.dynamicLighting;s.setDynamicLighting(C),n.isReadyForAtmosphere=!0}n.skyAtmosphereCommand=s.update(e,a),l(n.skyAtmosphereCommand)&&this.updateDerivedCommands(n.skyAtmosphereCommand)}else n.skyAtmosphereCommand=void 0;n.skyBoxCommand=l(this.skyBox)?this.skyBox.update(e,this._hdr):void 0;let y=l(this.sun)?this.sun.update(e,t.passState,this._hdr):void 0;n.sunDrawCommand=l(y)?y.drawCommand:void 0,n.sunComputeCommand=l(y)?y.computeCommand:void 0,n.moonCommand=l(this.moon)?this.moon.update(e):void 0}let u=n.clearGlobeDepth=l(a)&&a.show&&(!a.depthTestAgainstTerrain||this.mode===ie.SCENE2D);(n.useDepthPlane=u&&this.mode===ie.SCENE3D&&c.useDepthPlane)&&this._depthPlane.update(e),n.renderTranslucentDepthForPick=!1,n.useWebVR=this._useWebVR&&this.mode!==ie.SCENE2D&&!o;let h=e.mode===ie.SCENE3D&&!c.sunVisibleThroughGlobe?e.occluder:void 0,A=e.cullingVolume,g=mxe.planes;for(let y=0;y<5;++y)g[y]=A.planes[y];A=mxe,n.isSkyAtmosphereVisible=l(n.skyAtmosphereCommand)&&n.isReadyForAtmosphere,n.isSunVisible=this.isVisible(A,n.sunDrawCommand,h),n.isMoonVisible=this.isVisible(A,n.moonCommand,h);let m=this.specularEnvironmentMaps,_=this._specularEnvironmentCubeMap;l(m)&&_?.url!==m?(_=_&&_.destroy(),this._specularEnvironmentCubeMap=new hm(m)):!l(m)&&l(_)&&(_.destroy(),this._specularEnvironmentCubeMap=void 0),l(this._specularEnvironmentCubeMap)&&this._specularEnvironmentCubeMap.update(e)};function Uxt(e){let t=e._frameState;e.debugShowFrustumPlanes!==e._debugShowFrustumPlanes&&(e.debugShowFrustumPlanes?e._debugFrustumPlanes=new Kp({camera:e.camera,updateOnChange:!1,frustumSplits:t.frustumSplits}):e._debugFrustumPlanes=e._debugFrustumPlanes&&e._debugFrustumPlanes.destroy(),e._debugShowFrustumPlanes=e.debugShowFrustumPlanes),l(e._debugFrustumPlanes)&&e._debugFrustumPlanes.update(t)}function Gxt(e){let t=e._frameState,{passes:n,shadowState:i,shadowMaps:o}=t,r=o.length,s=r>0&&!n.pick&&!n.pickVoxel&&e.mode===ie.SCENE3D;if(s!==i.shadowsEnabled&&(++i.lastDirtyTime,i.shadowsEnabled=s),i.lightShadowsEnabled=!1,!!s){for(let a=0;a<r;++a)if(o[a]!==i.shadowMaps[a]){++i.lastDirtyTime;break}i.shadowMaps.length=0,i.lightShadowMaps.length=0;for(let a=0;a<r;++a){let c=o[a];c.update(t),i.shadowMaps.push(c),c.fromLightSource&&(i.lightShadowMaps.push(c),i.lightShadowsEnabled=!0),c.dirty&&(++i.lastDirtyTime,c.dirty=!1)}}}function yxe(e){let t=e._frameState;e._groundPrimitives.update(t),e._primitives.update(t),Uxt(e),Gxt(e),e._globe&&e._globe.render(t)}function zxt(e,t,n){let i=e._context,o=e._frameState,r=e._environmentState,s=e._view,a=o.passes,c=a.pick||a.pickVoxel;l(s.globeDepth)&&(s.globeDepth.picking=c);let u=r.useWebVR;r.originalFramebuffer=t.framebuffer,l(e.sun)&&e.sunBloom!==e._sunBloom?(e.sunBloom&&!u?e._sunPostProcess=new L8:l(e._sunPostProcess)&&(e._sunPostProcess=e._sunPostProcess.destroy()),e._sunBloom=e.sunBloom):!l(e.sun)&&l(e._sunPostProcess)&&(e._sunPostProcess=e._sunPostProcess.destroy(),e._sunBloom=!1);let f=e._clearColorCommand;G.clone(n,f.color),f.execute(i,t);let h=r.useGlobeDepthFramebuffer=l(s.globeDepth);h&&(s.globeDepth.update(i,t,s.viewport,e.msaaSamples,e._hdr,r.clearGlobeDepth),s.globeDepth.clear(i,t,n));let A=s.oit,g=r.useOIT=!c&&l(A)&&A.isSupported();g&&(A.update(i,t,s.globeDepth.colorFramebufferManager,e._hdr,e.msaaSamples),A.clear(i,t,n),r.useOIT=A.isSupported());let m=e.postProcessStages,_=r.usePostProcess=!c&&(e._hdr||m.length>0||m.ambientOcclusion.enabled||m.fxaa.enabled||m.bloom.enabled);if(r.usePostProcessSelected=!1,_&&(s.sceneFramebuffer.update(i,s.viewport,e._hdr,e.msaaSamples),s.sceneFramebuffer.clear(i,t,n),m.update(i,o.useLogDepth,e._hdr),m.clear(i),_=r.usePostProcess=m.ready,r.usePostProcessSelected=_&&m.hasSelected),r.isSunVisible&&e.sunBloom&&!u?(t.framebuffer=e._sunPostProcess.update(t),e._sunPostProcess.clear(i,t,n)):h?t.framebuffer=s.globeDepth.framebuffer:_&&(t.framebuffer=s.sceneFramebuffer.framebuffer),l(t.framebuffer)&&f.execute(i,t),r.useInvertClassification=!c&&l(t.framebuffer)&&e.invertClassification){let C;if(o.invertClassificationColor.alpha===1&&h&&(C=s.globeDepth.framebuffer),l(C)||i.depthTexture){if(e._invertClassification.previousFramebuffer=C,e._invertClassification.update(i,e.msaaSamples,s.globeDepth.colorFramebufferManager),e._invertClassification.clear(i,t),o.invertClassificationColor.alpha<1&&g){let E=e._invertClassification.unclassifiedCommand,I=E.derivedCommands;I.oit=A.createDerivedCommands(E,i,I.oit)}}else r.useInvertClassification=!1}e._globeTranslucencyState.translucent&&s.globeTranslucencyFramebuffer.updateAndClear(e._hdr,s.viewport,i,t)}gi.prototype.resolveFramebuffers=function(e){let t=this._context,n=this._environmentState,i=this._view,{globeDepth:o,translucentTileClassification:r}=i;l(o)&&o.prepareColorTextures(t);let{useOIT:s,useGlobeDepthFramebuffer:a,usePostProcess:c,originalFramebuffer:u}=n,f=a?o.colorFramebufferManager:void 0,h=i.sceneFramebuffer._colorFramebuffer,A=i.sceneFramebuffer.idFramebuffer;if(s&&(e.framebuffer=c?h.framebuffer:u,i.oit.execute(t,e)),r.hasTranslucentDepth&&r.isSupported()&&r.execute(this,e),c){i.sceneFramebuffer.prepareColorTextures(t);let g=h;a&&!s&&(g=f);let m=this.postProcessStages,_=g.getColorTexture(0),y=A.getColorTexture(0),C=(f??h).getDepthStencilTexture();m.execute(t,_,C,y),m.copy(t,u)}!s&&!c&&a&&(e.framebuffer=u,o.executeCopyColor(t,e))};function Vxt(e){let t=e._frameState.afterRender;for(let n=0;n<t.length;++n)t[n]()&&e.requestRender();t.length=0}function Hxt(e){if(e.mode===ie.MORPHING)return;let t=e.camera.positionCartographic;return e.getHeight(t)}function Cxe(e,t,n){let i=Number.NEGATIVE_INFINITY;if(e instanceof ou){let o=e.length;for(let r=0;r<o;++r){let s=e.get(r),a=Cxe(s,t,n);l(a)&&a>i&&(i=a)}}else if(e.isCesium3DTileset&&e.show&&e.enableCollision){let o=e.getHeight(t,n);if(l(o)&&o>i)return o}return i}gi.prototype.getHeight=function(e,t){if(!l(e))return;let n=t===Ze.CLAMP_TO_TERRAIN||t===Ze.RELATIVE_TO_TERRAIN,i=t===Ze.CLAMP_TO_3D_TILE||t===Ze.RELATIVE_TO_3D_TILE;if(!l(e))return;let o=Number.NEGATIVE_INFINITY;if(!n){let s=Cxe(this.primitives,e,this);l(s)&&s>o&&(o=s)}let r=this._globe;if(!i&&l(r)&&r.show){let s=r.getHeight(e);s>o&&(o=s)}if(o>Number.NEGATIVE_INFINITY)return o};var YJ=new Ae;gi.prototype.updateHeight=function(e,t,n){let i=this._ellipsoid,o=g=>{Ae.clone(e,YJ);let m;l(g)&&(m=g.height),l(m)||(m=this.getHeight(e,n)),l(m)&&(YJ.height=m,t(YJ))},r=n===Ze.CLAMP_TO_TERRAIN||n===Ze.RELATIVE_TO_TERRAIN,s=n===Ze.CLAMP_TO_3D_TILE||n===Ze.RELATIVE_TO_3D_TILE,a;!s&&l(this.globe)&&(a=this.globe._surface.updateHeight(e,o));let c={},u=g=>{if(r||g.isDestroyed()||!g.isCesium3DTileset)return;let m=g.updateHeight(e,o,i);c[g.id]=m};if(!r){let g=this.primitives.length;for(let m=0;m<g;++m){let _=this.primitives.get(m);u(_)}}let f=this.primitives.primitiveAdded.addEventListener(u),h=this.primitives.primitiveRemoved.addEventListener(g=>{g.isDestroyed()||!g.isCesium3DTileset||(l(c[g.id])&&c[g.id](),delete c[g.id])});return()=>{a=a&&a(),Object.values(c).forEach(g=>g()),c={},f(),h()}};function Wxt(e){let t=e.camera,n=e._mode,i=e._screenSpaceCameraController,o=t.positionCartographic;if(!l(o))return!1;if(!i.onMap()&&o.height<0)return!0;if(n===ie.SCENE2D||n===ie.MORPHING)return!1;let r=e._globeHeight;return l(r)&&o.height<r}gi.prototype.initializeFrame=function(){if(this._shaderFrameCount++===120&&(this._shaderFrameCount=0,this._context.shaderCache.destroyReleasedShaderPrograms(),this._context.textureCache.destroyReleasedTextures()),this._tweens.update(),this._globeHeightDirty){l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),this._globeHeight=Hxt(this),this._globeHeightDirty=!1;let e=this.camera.positionCartographic;this._removeUpdateHeightCallback=this.updateHeight(e,t=>{this.isDestroyed()||(this._globeHeight=t.height)})}this._cameraUnderground=Wxt(this),this._globeTranslucencyState.update(this),this._screenSpaceCameraController.update(),l(this._deviceOrientationCameraController)&&this._deviceOrientationCameraController.update(),this.camera.update(this._mode),this.camera._updateCameraChanged()};function jxt(e,t){if(e.debugShowFramesPerSecond){if(!l(e._performanceDisplay)){let n=document.createElement("div");n.className="cesium-performanceDisplay-defaultContainer",e._canvas.parentNode.appendChild(n);let o=new Ny({container:n});e._performanceDisplay=o,e._performanceContainer=n}e._performanceDisplay.throttled=e.requestRenderMode,e._performanceDisplay.update(t)}else l(e._performanceDisplay)&&(e._performanceDisplay=e._performanceDisplay&&e._performanceDisplay.destroy(),e._performanceContainer.parentNode.removeChild(e._performanceContainer))}function Yxt(e){e._jobScheduler.resetBudgets();let t=e._frameState;e.primitives.prePassesUpdate(t),l(e.globe)&&e.globe.update(t),e._picking.update(),t.creditDisplay.update()}function qxt(e){e.primitives.postPassesUpdate(e._frameState),Yc.update()}var Kxt=new G;function Xxt(e){let t=e._frameState,n=e.context,{uniformState:i}=n,o=e._defaultView;e._view=o,e.updateFrameState(),t.passes.render=!0,t.passes.postProcess=e.postProcessStages.hasSelected,t.tilesetPassState=axt;let r=e.backgroundColor??G.BLACK;e._hdr&&(r=G.clone(r,Kxt),r.red=Math.pow(r.red,e.gamma),r.green=Math.pow(r.green,e.gamma),r.blue=Math.pow(r.blue,e.gamma)),t.backgroundColor=r,t.atmosphere=e.atmosphere,e.fog.update(t),i.update(t);let s=e.shadowMap;l(s)&&s.enabled&&(!l(e.light)||e.light instanceof wy?d.negate(i.sunDirectionWC,e._shadowMapCamera.direction):d.clone(e.light.direction,e._shadowMapCamera.direction),t.shadowMaps.push(s)),e._computeCommandList.length=0,e._overlayCommandList.length=0;let a=o.viewport;a.x=0,a.y=0,a.width=n.drawingBufferWidth,a.height=n.drawingBufferHeight;let c=o.passState;c.framebuffer=void 0,c.blendingEnabled=void 0,c.scissorTest=void 0,c.viewport=Xe.clone(a,c.viewport),n.beginFrame(),l(e.globe)&&e.globe.beginFrame(t),e.updateEnvironment(),e.updateAndExecuteCommands(c,r),e.resolveFramebuffers(c),c.framebuffer=void 0,wxt(e,c),l(e.globe)&&(e.globe.endFrame(t),e.globe.tilesLoaded||(e._renderRequested=!0)),n.endFrame()}function I0(e,t){try{t(e)}catch(n){if(e._renderError.raiseEvent(e,n),e.rethrowRenderErrors)throw n}}function Jxt(e){return e._picking.updateMostDetailedRayPicks(e)}gi.prototype.render=function(e){this._preUpdate.raiseEvent(this,e);let t=this._frameState;t.newFrame=!1,l(e)||(e=K.now());let n=this._view.checkForCameraUpdates(this);n&&(this._globeHeightDirty=!0);let i=!this.requestRenderMode||this._renderRequested||n||this._logDepthBufferDirty||this._hdrDirty||this.mode===ie.MORPHING;if(!i&&l(this.maximumRenderTimeChange)&&l(this._lastRenderTime)){let o=Math.abs(K.secondsDifference(this._lastRenderTime,e));i=i||o>this.maximumRenderTimeChange}if(i){this._lastRenderTime=K.clone(e,this._lastRenderTime),this._renderRequested=!1,this._logDepthBufferDirty=!1,this._hdrDirty=!1;let o=D.incrementWrap(t.frameNumber,15e6,1);Axe(this,o,e),t.newFrame=!0}I0(this,Yxt),this.primitives.show&&(I0(this,Jxt),I0(this,Zxt),I0(this,$xt),i||I0(this,ebt)),this._postUpdate.raiseEvent(this,e),i&&(this._preRender.raiseEvent(this,e),t.creditDisplay.beginFrame(),I0(this,Xxt)),jxt(this,i),I0(this,qxt),Vxt(this),i&&(this._postRender.raiseEvent(this,e),t.creditDisplay.endFrame())};gi.prototype.forceRender=function(e){this._renderRequested=!0,this.render(e)};gi.prototype.requestRender=function(){this._renderRequested=!0};gi.prototype.clampLineWidth=function(e){return Math.max(qt.minimumAliasedLineWidth,Math.min(e,qt.maximumAliasedLineWidth))};gi.prototype.pick=function(e,t,n){return this._picking.pick(this,e,t,n)};gi.prototype.pickVoxel=function(e,t,n){let i=this.pick(e,t,n);if(!l(i))return;let o=i.primitive;if(!(o instanceof E0))return;let r=this._picking.pickVoxelCoordinate(this,e,t,n),s=255*r[0]+r[1],a=o._traversal.findKeyframeNode(s);if(!l(a))return;let c=255*r[2]+r[3];return F8.fromKeyframeNode(o,s,c,a)};gi.prototype.pickMetadata=function(e,t,n,i){let o=this.pick(e);if(!l(o))return;let r=o.detail?.model?.structuralMetadata;if(!l(r))return;let s=r.schema,a=f4(s,t,n,i);if(!l(a))return;let c=h4(r,n,i);if(!l(c))return;let u=new d4(t,n,i,a,c);return this._picking.pickMetadata(this,e,u)};gi.prototype.pickMetadataSchema=function(e){let t=this.pick(e);return l(t)?t.detail?.model?.structuralMetadata?.schema:void 0};gi.prototype.pickPositionWorldCoordinates=function(e,t){return this._picking.pickPositionWorldCoordinates(this,e,t)};gi.prototype.pickPosition=function(e,t){return this._picking.pickPosition(this,e,t)};gi.prototype.drillPick=function(e,t,n,i){return this._picking.drillPick(this,e,t,n,i)};function Zxt(e){let t=e._frameState;HJ.camera=t.camera,HJ.cullingVolume=t.cullingVolume,e.primitives.updateForPass(t,HJ)}function $xt(e){let t=e._frameState;if(!t.camera.canPreloadFlight())return;WJ.camera=e.preloadFlightCamera,WJ.cullingVolume=e.preloadFlightCullingVolume,e.primitives.updateForPass(t,WJ)}function ebt(e){e.primitives.updateForPass(e._frameState,cxt)}gi.prototype.pickFromRay=function(e,t,n){return this._picking.pickFromRay(this,e,t,n)};gi.prototype.drillPickFromRay=function(e,t,n,i){return this._picking.drillPickFromRay(this,e,t,n,i)};gi.prototype.pickFromRayMostDetailed=function(e,t,n){return this._picking.pickFromRayMostDetailed(this,e,t,n)};gi.prototype.drillPickFromRayMostDetailed=function(e,t,n,i){return this._picking.drillPickFromRayMostDetailed(this,e,t,n,i)};gi.prototype.sampleHeight=function(e,t,n){return this._picking.sampleHeight(this,e,t,n)};gi.prototype.clampToHeight=function(e,t,n,i){return this._picking.clampToHeight(this,e,t,n,i)};gi.prototype.sampleHeightMostDetailed=function(e,t,n){return this._picking.sampleHeightMostDetailed(this,e,t,n)};gi.prototype.clampToHeightMostDetailed=function(e,t,n){return this._picking.clampToHeightMostDetailed(this,e,t,n)};gi.prototype.cartesianToCanvasCoordinates=function(e,t){return to.worldToWindowCoordinates(this,e,t)};gi.prototype.completeMorph=function(){this._transitioner.completeMorph()};gi.prototype.morphTo2D=function(e){e=e??2,this._transitioner.morphTo2D(e,this._ellipsoid)};gi.prototype.morphToColumbusView=function(e){e=e??2,this._transitioner.morphToColumbusView(e,this._ellipsoid)};gi.prototype.morphTo3D=function(e){e=e??2,this._transitioner.morphTo3D(e,this._ellipsoid)};function tbt(e,t){if(e._removeTerrainProviderReadyListener=e._removeTerrainProviderReadyListener&&e._removeTerrainProviderReadyListener(),t.ready){l(e.globe)&&(e.globe.terrainProvider=t.provider);return}e.globe.terrainProvider=void 0,e._removeTerrainProviderReadyListener=t.readyEvent.addEventListener(n=>{l(e)&&l(e.globe)&&(e.globe.terrainProvider=n),e._removeTerrainProviderReadyListener()})}gi.prototype.setTerrain=function(e){return tbt(this,e),e};gi.prototype.isDestroyed=function(){return!1};gi.prototype.destroy=function(){this._tweens.removeAll(),this._computeEngine=this._computeEngine&&this._computeEngine.destroy(),this._screenSpaceCameraController=this._screenSpaceCameraController&&this._screenSpaceCameraController.destroy(),this._deviceOrientationCameraController=this._deviceOrientationCameraController&&!this._deviceOrientationCameraController.isDestroyed()&&this._deviceOrientationCameraController.destroy(),this._primitives=this._primitives&&this._primitives.destroy(),this._groundPrimitives=this._groundPrimitives&&this._groundPrimitives.destroy(),this._globe=this._globe&&this._globe.destroy(),this._removeTerrainProviderReadyListener=this._removeTerrainProviderReadyListener&&this._removeTerrainProviderReadyListener(),this.skyBox=this.skyBox&&this.skyBox.destroy(),this.skyAtmosphere=this.skyAtmosphere&&this.skyAtmosphere.destroy(),this._debugSphere=this._debugSphere&&this._debugSphere.destroy(),this.sun=this.sun&&this.sun.destroy(),this._sunPostProcess=this._sunPostProcess&&this._sunPostProcess.destroy(),this._depthPlane=this._depthPlane&&this._depthPlane.destroy(),this._transitioner=this._transitioner&&this._transitioner.destroy(),this._debugFrustumPlanes=this._debugFrustumPlanes&&this._debugFrustumPlanes.destroy(),this._brdfLutGenerator=this._brdfLutGenerator&&this._brdfLutGenerator.destroy(),this._picking=this._picking&&this._picking.destroy(),this._defaultView=this._defaultView&&this._defaultView.destroy(),this._view=void 0,this._removeCreditContainer&&this._canvas.parentNode.removeChild(this._creditContainer),this.postProcessStages=this.postProcessStages&&this.postProcessStages.destroy(),this._context=this._context&&this._context.destroy(),this._frameState.creditDisplay=this._frameState.creditDisplay&&this._frameState.creditDisplay.destroy(),l(this._performanceDisplay)&&(this._performanceDisplay=this._performanceDisplay&&this._performanceDisplay.destroy(),this._performanceContainer.parentNode.removeChild(this._performanceContainer)),this._removeRequestListenerCallback(),this._removeTaskProcessorListenerCallback();for(let e=0;e<this._removeGlobeCallbacks.length;++e)this._removeGlobeCallbacks[e]();return this._removeGlobeCallbacks.length=0,l(this._removeUpdateHeightCallback)&&(this._removeUpdateHeightCallback(),this._removeUpdateHeightCallback=void 0),ue(this)};var p4=gi;function sS(e){e=e??te.WGS84,this.show=!0,this.perFragmentAtmosphere=!1,this._ellipsoid=e;let t=1.025,n=d.multiplyByScalar(e.radii,t,new d);this._scaleMatrix=R.fromScale(n),this._modelMatrix=new R,this._command=new nt({owner:this,modelMatrix:this._modelMatrix}),this._spSkyFromSpace=void 0,this._spSkyFromAtmosphere=void 0,this._flags=void 0,this.atmosphereLightIntensity=50,this.atmosphereRayleighCoefficient=new d(55e-7,13e-6,284e-7),this.atmosphereMieCoefficient=new d(21e-6,21e-6,21e-6),this.atmosphereRayleighScaleHeight=1e4,this.atmosphereMieScaleHeight=3200,this.atmosphereMieAnisotropy=.9,this.hueShift=0,this.saturationShift=0,this.brightnessShift=0,this._hueSaturationBrightness=new d;let i=new d;i.x=e.maximumRadius*t,i.y=e.maximumRadius,i.z=0,this._radiiAndDynamicAtmosphereColor=i;let o=this;this._command.uniformMap={u_radiiAndDynamicAtmosphereColor:function(){return o._radiiAndDynamicAtmosphereColor},u_hsbShift:function(){return o._hueSaturationBrightness.x=o.hueShift,o._hueSaturationBrightness.y=o.saturationShift,o._hueSaturationBrightness.z=o.brightnessShift,o._hueSaturationBrightness},u_atmosphereLightIntensity:function(){return o.atmosphereLightIntensity},u_atmosphereRayleighCoefficient:function(){return o.atmosphereRayleighCoefficient},u_atmosphereMieCoefficient:function(){return o.atmosphereMieCoefficient},u_atmosphereRayleighScaleHeight:function(){return o.atmosphereRayleighScaleHeight},u_atmosphereMieScaleHeight:function(){return o.atmosphereMieScaleHeight},u_atmosphereMieAnisotropy:function(){return o.atmosphereMieAnisotropy}}}Object.defineProperties(sS.prototype,{ellipsoid:{get:function(){return this._ellipsoid}}});sS.prototype.setDynamicLighting=function(e){this._radiiAndDynamicAtmosphereColor.z=e};var KJ=new R;sS.prototype.update=function(e,t){if(!this.show)return;let n=e.mode;if(n!==ie.SCENE3D&&n!==ie.MORPHING||!e.passes.render)return;let i=R.fromRotationTranslation(e.context.uniformState.inverseViewRotation,d.ZERO,KJ),o=R.multiplyTransformation(i,Ao.Y_UP_TO_Z_UP,KJ),r=R.multiply(this._scaleMatrix,o,KJ);R.clone(r,this._modelMatrix);let s=e.context,a=nbt(this),c=e.globeTranslucencyState.translucent,u=this.perFragmentAtmosphere||c||!l(t)||!t.show,f=this._command;if(!l(f.vertexArray)){let A=ka.createGeometry(new ka({radii:new d(1,1,1),slicePartitions:256,stackPartitions:256,vertexFormat:Pe.POSITION_ONLY}));f.vertexArray=li.fromGeometry({context:s,geometry:A,attributeLocations:jn.createAttributeLocations(A),bufferUsage:Qe.STATIC_DRAW}),f.renderState=Ue.fromCache({cull:{enabled:!0,face:Mi.FRONT},blending:pn.ALPHA_BLEND,depthMask:!1})}let h=a|u<<2|c<<3;if(h!==this._flags){this._flags=h;let A=[];a&&A.push("COLOR_CORRECT"),u&&A.push("PER_FRAGMENT_ATMOSPHERE"),c&&A.push("GLOBE_TRANSLUCENT");let g=new We({defines:A,sources:[bm,tP,_z]}),m=new We({defines:A,sources:[bm,tP,gz]});this._spSkyAtmosphere=ln.fromCache({context:s,vertexShaderSource:g,fragmentShaderSource:m}),f.shaderProgram=this._spSkyAtmosphere}return f};function nbt(e){return!(D.equalsEpsilon(e.hueShift,0,D.EPSILON7)&&D.equalsEpsilon(e.saturationShift,0,D.EPSILON7)&&D.equalsEpsilon(e.brightnessShift,0,D.EPSILON7))}sS.prototype.isDestroyed=function(){return!1};sS.prototype.destroy=function(){let e=this._command;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),this._spSkyAtmosphere=this._spSkyAtmosphere&&this._spSkyAtmosphere.destroy(),ue(this)};var g4=sS;function cS(e){this.sources=e.sources,this._sources=void 0,this.show=e.show??!0,this._command=new nt({modelMatrix:R.clone(R.IDENTITY),owner:this}),this._cubeMap=void 0,this._attributeLocations=void 0,this._useHdr=void 0,this._hasError=!1,this._error=void 0}cS.prototype.update=function(e,t){let n=this,{mode:i,passes:o,context:r}=e;if(!this.show||i!==ie.SCENE3D&&i!==ie.MORPHING||!o.render)return;if(this._hasError){let a=this._error;throw this._hasError=!1,this._error=void 0,a}if(this._sources!==this.sources){this._sources=this.sources;let a=this.sources;typeof a.positiveX=="string"?oz(r,this._sources).then(function(c){n._cubeMap=n._cubeMap&&n._cubeMap.destroy(),n._cubeMap=c}).catch(c=>{this._hasError=!0,this._error=c}):(this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),this._cubeMap=new jr({context:r,source:a}))}let s=this._command;if(!l(s.vertexArray)){s.uniformMap={u_cubeMap:function(){return n._cubeMap}};let a=yc.createGeometry(yc.fromDimensions({dimensions:new d(2,2,2),vertexFormat:Pe.POSITION_ONLY})),c=this._attributeLocations=jn.createAttributeLocations(a);s.vertexArray=li.fromGeometry({context:r,geometry:a,attributeLocations:c,bufferUsage:Qe.STATIC_DRAW}),s.renderState=Ue.fromCache({blending:pn.ALPHA_BLEND})}if(!l(s.shaderProgram)||this._useHdr!==t){let a=new We({defines:[t?"HDR":""],sources:[yz]});s.shaderProgram=ln.fromCache({context:r,vertexShaderSource:Cz,fragmentShaderSource:a,attributeLocations:this._attributeLocations}),this._useHdr=t}if(l(this._cubeMap))return s};cS.prototype.isDestroyed=function(){return!1};cS.prototype.destroy=function(){let e=this._command;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy(),this._cubeMap=this._cubeMap&&this._cubeMap.destroy(),ue(this)};function aS(e){return fn(`Assets/Textures/SkyBox/tycho2t3_80_${e}.jpg`)}cS.createEarthSkyBox=function(){return new cS({sources:{positiveX:aS("px"),negativeX:aS("mx"),positiveY:aS("py"),negativeY:aS("my"),positiveZ:aS("pz"),negativeZ:aS("mz")}})};var _4=cS;function QP(){this.show=!0,this._drawCommand=new nt({primitiveType:Me.TRIANGLES,boundingVolume:new le,owner:this}),this._commands={drawCommand:this._drawCommand,computeCommand:void 0},this._boundingVolume=new le,this._boundingVolume2D=new le,this._texture=void 0,this._drawingBufferWidth=void 0,this._drawingBufferHeight=void 0,this._radiusTS=void 0,this._size=void 0,this.glowFactor=1,this._glowFactorDirty=!1,this._useHdr=void 0;let e=this;this._uniformMap={u_texture:function(){return e._texture},u_size:function(){return e._size}}}Object.defineProperties(QP.prototype,{glowFactor:{get:function(){return this._glowFactor},set:function(e){e=Math.max(e,0),this._glowFactor=e,this._glowFactorDirty=!0}}});var ibt=new k,obt=new k,rbt=new se,FP=new se;QP.prototype.update=function(e,t,n){if(!this.show)return;let i=e.mode;if(i===ie.SCENE2D||i===ie.MORPHING||!e.passes.render)return;let o=e.context,r=t.viewport.width,s=t.viewport.height;if(!l(this._texture)||r!==this._drawingBufferWidth||s!==this._drawingBufferHeight||this._glowFactorDirty||n!==this._useHdr){this._texture=this._texture&&this._texture.destroy(),this._drawingBufferWidth=r,this._drawingBufferHeight=s,this._glowFactorDirty=!1,this._useHdr=n;let b=Math.max(r,s);b=Math.pow(2,Math.ceil(Math.log(b)/Math.log(2))-2),b=Math.max(1,b);let S=n?o.halfFloatingPointTexture?He.HALF_FLOAT:He.FLOAT:He.UNSIGNED_BYTE;this._texture=new Nt({context:o,width:b,height:b,pixelFormat:et.RGBA,pixelDatatype:S}),this._glowLengthTS=this._glowFactor*5,this._radiusTS=1/(1+2*this._glowLengthTS)*.5;let B=this,v={u_radiusTS:function(){return B._radiusTS}};this._commands.computeCommand=new Hl({fragmentShaderSource:Iz,outputTexture:this._texture,uniformMap:v,persists:!1,owner:this,postExecute:function(){B._commands.computeCommand=void 0}})}let a=this._drawCommand;if(!l(a.vertexArray)){let b={direction:0},S=new Uint8Array(8);S[0]=0,S[1]=0,S[2]=255,S[3]=0,S[4]=255,S[5]=255,S[6]=0,S[7]=255;let B=Et.createVertexBuffer({context:o,typedArray:S,usage:Qe.STATIC_DRAW}),v=[{index:b.direction,vertexBuffer:B,componentsPerAttribute:2,normalize:!0,componentDatatype:q.UNSIGNED_BYTE}],P=Et.createIndexBuffer({context:o,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT});a.vertexArray=new li({context:o,attributes:v,indexBuffer:P}),a.shaderProgram=ln.fromCache({context:o,vertexShaderSource:xz,fragmentShaderSource:Ez,attributeLocations:b}),a.renderState=Ue.fromCache({blending:pn.ALPHA_BLEND}),a.uniformMap=this._uniformMap}let c=o.uniformState.sunPositionWC,u=o.uniformState.sunPositionColumbusView,f=this._boundingVolume,h=this._boundingVolume2D;d.clone(c,f.center),h.center.x=u.z,h.center.y=u.x,h.center.z=u.y,f.radius=D.SOLAR_RADIUS+D.SOLAR_RADIUS*this._glowLengthTS,h.radius=f.radius,i===ie.SCENE3D?le.clone(f,a.boundingVolume):i===ie.COLUMBUS_VIEW&&le.clone(h,a.boundingVolume);let A=to.computeActualEllipsoidPosition(e,c,FP),g=d.magnitude(d.subtract(A,e.camera.position,FP)),m=o.uniformState.projection,_=rbt;_.x=0,_.y=0,_.z=-g,_.w=1;let y=R.multiplyByVector(m,_,FP),C=to.clipToGLWindowCoordinates(t.viewport,y,ibt);_.x=D.SOLAR_RADIUS;let E=R.multiplyByVector(m,_,FP),I=to.clipToGLWindowCoordinates(t.viewport,E,obt);return this._size=k.magnitude(k.subtract(I,C,FP)),this._size=2*this._size*(1+2*this._glowLengthTS),this._size=Math.ceil(this._size),this._commands};QP.prototype.isDestroyed=function(){return!1};QP.prototype.destroy=function(){let e=this._drawCommand;return e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy(),this._texture=this._texture&&this._texture.destroy(),ue(this)};var y4=QP;var xxe=Es(CR(),1);function sbt(e,t,n){return` float clipDistance = clip(gl_FragCoord, ${e}, ${t}); + vec4 clippingPlanesEdgeColor = vec4(1.0); + clippingPlanesEdgeColor.rgb = ${n}.rgb; + float clippingPlanesEdgeWidth = ${n}.a; + if (clipDistance > 0.0 && clipDistance < clippingPlanesEdgeWidth) + { + out_FragColor = clippingPlanesEdgeColor; + } +`}var C4=sbt;var abt={modifyFragmentShader:function(t){return t=We.replaceMain(t,"czm_splitter_main"),t+=`uniform float czm_splitDirection; +void main() +{ +#ifndef SHADOW_MAP + if (czm_splitDirection < 0.0 && gl_FragCoord.x > czm_splitPosition) discard; + if (czm_splitDirection > 0.0 && gl_FragCoord.x < czm_splitPosition) discard; +#endif + czm_splitter_main(); +} +`,t},addUniforms:function(t,n){n.czm_splitDirection=function(){return t.splitDirection}}},kP=abt;var x0={NEEDS_DECODE:0,DECODING:1,READY:2,FAILED:3};function UP(e){this._parsedContent=void 0,this._drawCommand=void 0,this._isTranslucent=!1,this._styleTranslucent=!1,this._constantColor=G.clone(G.DARKGRAY),this._highlightColor=G.clone(G.WHITE),this._pointSize=1,this._rtcCenter=void 0,this._quantizedVolumeScale=void 0,this._quantizedVolumeOffset=void 0,this._styleableShaderAttributes=void 0,this._isQuantized=!1,this._isOctEncoded16P=!1,this._isRGB565=!1,this._hasColors=!1,this._hasNormals=!1,this._hasBatchIds=!1,this._decodingState=x0.READY,this._dequantizeInShader=!0,this._isQuantizedDraco=!1,this._isOctEncodedDraco=!1,this._quantizedRange=0,this._octEncodedRange=0,this.backFaceCulling=!1,this._backFaceCulling=!1,this.normalShading=!0,this._normalShading=!0,this._opaqueRenderState=void 0,this._translucentRenderState=void 0,this._mode=void 0,this._ready=!1,this._pointsLength=0,this._geometryByteLength=0,this._vertexShaderLoaded=e.vertexShaderLoaded,this._fragmentShaderLoaded=e.fragmentShaderLoaded,this._uniformMapLoaded=e.uniformMapLoaded,this._batchTableLoaded=e.batchTableLoaded,this._pickIdLoaded=e.pickIdLoaded,this._opaquePass=e.opaquePass??Be.OPAQUE,this._cull=e.cull??!0,this.style=void 0,this._style=void 0,this.styleDirty=!1,this.modelMatrix=R.clone(R.IDENTITY),this._modelMatrix=R.clone(R.IDENTITY),this.time=0,this.shadows=Dn.ENABLED,this._boundingSphere=void 0,this.clippingPlanes=void 0,this.isClipped=!1,this.clippingPlanesDirty=!1,this.clippingPlanesOriginMatrix=void 0,this.attenuation=!1,this._attenuation=!1,this.geometricError=0,this.geometricErrorScale=1,this.maximumAttenuation=this._pointSize,this.splitDirection=e.splitDirection??wr.NONE,this._splittingEnabled=!1,this._error=void 0,cbt(this,e)}Object.defineProperties(UP.prototype,{pointsLength:{get:function(){return this._pointsLength}},geometryByteLength:{get:function(){return this._geometryByteLength}},ready:{get:function(){return this._ready}},color:{get:function(){return G.clone(this._highlightColor)},set:function(e){this._highlightColor=G.clone(e,this._highlightColor)}},boundingSphere:{get:function(){if(l(this._drawCommand))return this._drawCommand.boundingVolume},set:function(e){this._boundingSphere=le.clone(e,this._boundingSphere)}}});function cbt(e,t){let n=Gx.parse(t.arrayBuffer,t.byteOffset);if(e._parsedContent=n,e._rtcCenter=n.rtcCenter,e._hasNormals=n.hasNormals,e._hasColors=n.hasColors,e._hasBatchIds=n.hasBatchIds,e._isTranslucent=n.isTranslucent,!n.hasBatchIds&&l(n.batchTableBinary)&&(n.styleableProperties=Fg.getBinaryProperties(n.pointsLength,n.batchTableJson,n.batchTableBinary)),l(n.draco)){let a=n.draco;e._decodingState=x0.NEEDS_DECODE,a.dequantizeInShader=e._dequantizeInShader}let i=n.positions;l(i)&&(e._isQuantized=i.isQuantized,e._quantizedVolumeScale=i.quantizedVolumeScale,e._quantizedVolumeOffset=i.quantizedVolumeOffset,e._quantizedRange=i.quantizedRange);let o=n.normals;l(o)&&(e._isOctEncoded16P=o.octEncoded);let r=n.colors;l(r)&&(l(r.constantColor)&&(e._constantColor=G.clone(r.constantColor,e._constantColor),e._hasColors=!1),e._isRGB565=r.isRGB565);let s=n.batchIds;l(n.batchIds)&&(s.name="BATCH_ID",s.semantic="BATCH_ID",s.setIndex=void 0),n.hasBatchIds&&e._batchTableLoaded(n.batchLength,n.batchTableJson,n.batchTableBinary),e._pointsLength=n.pointsLength}var lbt=new d,ubt=new d,fbt=new d,Exe,E4;function dbt(e){if(!l(E4)){Exe=new xxe.default(0),E4=new Array(e);for(let t=0;t<e;++t)E4[t]=Exe.random()}return E4}function hbt(e){let n=e.length/3,i=Math.min(n,20),o=dbt(20),r=Number.MAX_VALUE,s=-Number.MAX_VALUE,a=d.fromElements(r,r,r,lbt),c=d.fromElements(s,s,s,ubt);for(let f=0;f<i;++f){let h=Math.floor(o[f]*n),A=d.unpack(e,h*3,fbt);d.minimumByComponent(a,A,a),d.maximumByComponent(c,A,c)}let u=le.fromCornerPoints(a,c);return u.radius+=D.EPSILON2,u}function Ixe(e,t){let n=q.fromTypedArray(e);return n===q.INT||n===q.UNSIGNED_INT||n===q.DOUBLE?(yt("Cast pnts property to floats",`Point cloud property "${t}" will be cast to a float array because INT, UNSIGNED_INT, and DOUBLE are not valid WebGL vertex attribute types. Some precision may be lost.`),new Float32Array(e)):e}var mbt=new se,Abt=new se,pbt=new G,bxe=0,I4=1,eZ=2,Txe=3,gbt=4,XJ=new R,_bt=new R;function ybt(e,t){let n=t.context,i=e._parsedContent,o=e._pointsLength,r=i.positions,s=i.colors,a=i.normals,c=i.batchIds,u=i.styleableProperties,f=l(u),h=e._isQuantized,A=e._isQuantizedDraco,g=e._isOctEncoded16P,m=e._isOctEncodedDraco,_=e._quantizedRange,y=e._octEncodedRange,C=e._isRGB565,E=e._isTranslucent,I=e._hasColors,b=e._hasNormals,S=e._hasBatchIds,B,v,P=[],N={};if(e._styleableShaderAttributes=N,f){let Q=gbt;for(let z in u)if(u.hasOwnProperty(z)){let F=u[z],H=Ixe(F.typedArray,z);B=F.componentCount,v=q.fromTypedArray(H);let W=Et.createVertexBuffer({context:n,typedArray:H,usage:Qe.STATIC_DRAW});e._geometryByteLength+=W.sizeInBytes;let Z={index:Q,vertexBuffer:W,componentsPerAttribute:B,componentDatatype:v,normalize:!1,offsetInBytes:0,strideInBytes:0};P.push(Z),N[z]={location:Q,componentCount:B},++Q}}let L=Et.createVertexBuffer({context:n,typedArray:r.typedArray,usage:Qe.STATIC_DRAW});e._geometryByteLength+=L.sizeInBytes;let p;I&&(p=Et.createVertexBuffer({context:n,typedArray:s.typedArray,usage:Qe.STATIC_DRAW}),e._geometryByteLength+=p.sizeInBytes);let x;b&&(x=Et.createVertexBuffer({context:n,typedArray:a.typedArray,usage:Qe.STATIC_DRAW}),e._geometryByteLength+=x.sizeInBytes);let T;S&&(c.typedArray=Ixe(c.typedArray,"batchIds"),T=Et.createVertexBuffer({context:n,typedArray:c.typedArray,usage:Qe.STATIC_DRAW}),e._geometryByteLength+=T.sizeInBytes);let w=[];if(h?v=q.UNSIGNED_SHORT:A?v=_<=255?q.UNSIGNED_BYTE:q.UNSIGNED_SHORT:v=q.FLOAT,w.push({index:bxe,vertexBuffer:L,componentsPerAttribute:3,componentDatatype:v,normalize:!1,offsetInBytes:0,strideInBytes:0}),e._cull&&(h||A?e._boundingSphere=le.fromCornerPoints(d.ZERO,e._quantizedVolumeScale):e._boundingSphere=hbt(r.typedArray)),I)if(C)w.push({index:I4,vertexBuffer:p,componentsPerAttribute:1,componentDatatype:q.UNSIGNED_SHORT,normalize:!1,offsetInBytes:0,strideInBytes:0});else{let Q=E?4:3;w.push({index:I4,vertexBuffer:p,componentsPerAttribute:Q,componentDatatype:q.UNSIGNED_BYTE,normalize:!0,offsetInBytes:0,strideInBytes:0})}b&&(g?(B=2,v=q.UNSIGNED_BYTE):m?(B=2,v=y<=255?q.UNSIGNED_BYTE:q.UNSIGNED_SHORT):(B=3,v=q.FLOAT),w.push({index:eZ,vertexBuffer:x,componentsPerAttribute:B,componentDatatype:v,normalize:!1,offsetInBytes:0,strideInBytes:0})),S&&w.push({index:Txe,vertexBuffer:T,componentsPerAttribute:1,componentDatatype:q.fromTypedArray(c.typedArray),normalize:!1,offsetInBytes:0,strideInBytes:0}),f&&(w=w.concat(P));let M=new li({context:n,attributes:w}),O={depthTest:{enabled:!0}},U={depthTest:{enabled:!0},depthMask:!1,blending:pn.ALPHA_BLEND};e._opaquePass===Be.CESIUM_3D_TILE&&(O.stencilTest=Kt.setCesium3DTileBit(),O.stencilMask=Kt.CESIUM_3D_TILE_MASK,U.stencilTest=Kt.setCesium3DTileBit(),U.stencilMask=Kt.CESIUM_3D_TILE_MASK),e._opaqueRenderState=Ue.fromCache(O),e._translucentRenderState=Ue.fromCache(U),e._drawCommand=new nt({boundingVolume:new le,cull:e._cull,modelMatrix:new R,primitiveType:Me.POINTS,vertexArray:M,count:o,shaderProgram:void 0,uniformMap:void 0,renderState:E?e._translucentRenderState:e._opaqueRenderState,pass:E?Be.TRANSLUCENT:e._opaquePass,owner:e,castShadows:!1,receiveShadows:!1,pickId:e._pickIdLoaded()})}function Cbt(e,t){let n=t.context,i=e._isQuantized,o=e._isQuantizedDraco,r=e._isOctEncodedDraco,s={u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier:function(){let a=mbt;if(a.x=e._attenuation?e.maximumAttenuation:e._pointSize,a.x*=t.pixelRatio,a.y=e.time,e._attenuation){let c=t.camera.frustum,u;t.mode===ie.SCENE2D||c instanceof An?u=Number.POSITIVE_INFINITY:u=n.drawingBufferHeight/t.camera.frustum.sseDenominator,a.z=e.geometricError*e.geometricErrorScale,a.w=u}return a},u_highlightColor:function(){return e._highlightColor},u_constantColor:function(){return e._constantColor},u_clippingPlanes:function(){let a=e.clippingPlanes;return e.isClipped?a.texture:n.defaultTexture},u_clippingPlanesEdgeStyle:function(){let a=e.clippingPlanes;if(!l(a))return G.TRANSPARENT;let c=G.clone(a.edgeColor,pbt);return c.alpha=a.edgeWidth,c},u_clippingPlanesMatrix:function(){let a=e.clippingPlanes;if(!l(a))return R.IDENTITY;let c=e.clippingPlanesOriginMatrix??e._modelMatrix;R.multiply(n.uniformState.view3D,c,XJ);let u=R.multiply(XJ,a.modelMatrix,XJ);return R.inverseTranspose(u,_bt)}};kP.addUniforms(e,s),(i||o||r)&&(s=wt(s,{u_quantizedVolumeScaleAndOctEncodedRange:function(){let a=Abt;if(l(e._quantizedVolumeScale)){let c=d.clone(e._quantizedVolumeScale,a);d.divideByScalar(c,e._quantizedRange,a)}return a.w=e._octEncodedRange,a}})),l(e._uniformMapLoaded)&&(s=e._uniformMapLoaded(s)),e._drawCommand.uniformMap=s}function JJ(e,t){let n=/czm_3dtiles_property_(\d+)/g,i=n.exec(e);for(;i!==null;){let o=parseInt(i[1]);t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function ZJ(e,t){e=e.slice(e.indexOf(` +`));let n=/czm_3dtiles_builtin_property_(\w+)/g,i=n.exec(e);for(;i!==null;){let o=i[1];t.indexOf(o)===-1&&t.push(o),i=n.exec(e)}}function $J(e,t){let n=e.numberOfAttributes;for(let i=0;i<n;++i){let o=e.getAttribute(i);if(o.index===t)return o}}var Ebt={POSITION:"czm_3dtiles_builtin_property_POSITION",POSITION_ABSOLUTE:"czm_3dtiles_builtin_property_POSITION_ABSOLUTE",COLOR:"czm_3dtiles_builtin_property_COLOR",NORMAL:"czm_3dtiles_builtin_property_NORMAL"};function Ibt(e,t,n){let i,o,r,s=t.context,a=l(n),c=e._isQuantized,u=e._isQuantizedDraco,f=e._isOctEncoded16P,h=e._isOctEncodedDraco,A=e._isRGB565,g=e._isTranslucent,m=e._hasColors,_=e._hasNormals,y=e._hasBatchIds,C=e._backFaceCulling,E=e._normalShading,I=e._drawCommand.vertexArray,b=e.clippingPlanes,S=e._attenuation,B,v,P,N=g,L=ze(Ebt),p={},x=e._styleableShaderAttributes;for(o in x)x.hasOwnProperty(o)&&(r=x[o],L[o]=`czm_3dtiles_property_${r.location}`,p[r.location]=r);if(a){let fe={translucent:!1},ye="(vec3 czm_3dtiles_builtin_property_POSITION, vec3 czm_3dtiles_builtin_property_POSITION_ABSOLUTE, vec4 czm_3dtiles_builtin_property_COLOR, vec3 czm_3dtiles_builtin_property_NORMAL)";B=n.getColorShaderFunction(`getColorFromStyle${ye}`,L,fe),v=n.getShowShaderFunction(`getShowFromStyle${ye}`,L,fe),P=n.getPointSizeShaderFunction(`getPointSizeFromStyle${ye}`,L,fe),l(B)&&fe.translucent&&(N=!0)}e._styleTranslucent=N;let T=l(B),w=l(v),M=l(P),O=e.isClipped,U=[],Q=[];T&&(JJ(B,U),ZJ(B,Q)),w&&(JJ(v,U),ZJ(v,Q)),M&&(JJ(P,U),ZJ(P,Q));let z=Q.indexOf("COLOR")>=0,F=Q.indexOf("NORMAL")>=0;if(F&&!_)throw new ce("Style references the NORMAL semantic but the point cloud does not have normals");for(o in x)if(x.hasOwnProperty(o)){r=x[o];let fe=U.indexOf(r.location)>=0,ye=$J(I,r.location);ye.enabled=fe}let H=m&&(!T||z);if(m){let fe=$J(I,I4);fe.enabled=H}let W=_&&(E||C||F);if(_){let fe=$J(I,eZ);fe.enabled=W}let Z={a_position:bxe};H&&(Z.a_color=I4),W&&(Z.a_normal=eZ),y&&(Z.a_batchId=Txe);let Y="",$=U.length;for(i=0;i<$;++i){let fe=U[i];r=p[fe];let ye=r.componentCount,Ie=`czm_3dtiles_property_${fe}`,ve;ye===1?ve="float":ve=`vec${ye}`,Y+=`in ${ve} ${Ie}; +`,Z[Ie]=r.location}Cbt(e,t);let X=`in vec3 a_position; +out vec4 v_color; +uniform vec4 u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier; +uniform vec4 u_constantColor; +uniform vec4 u_highlightColor; +`;X+=`float u_pointSize; +float tiles3d_tileset_time; +`,S&&(X+=`float u_geometricError; +float u_depthMultiplier; +`),X+=Y,H&&(g?X+=`in vec4 a_color; +`:A?X+=`in float a_color; +const float SHIFT_RIGHT_11 = 1.0 / 2048.0; +const float SHIFT_RIGHT_5 = 1.0 / 32.0; +const float SHIFT_LEFT_11 = 2048.0; +const float SHIFT_LEFT_5 = 32.0; +const float NORMALIZE_6 = 1.0 / 64.0; +const float NORMALIZE_5 = 1.0 / 32.0; +`:X+=`in vec3 a_color; +`),W&&(f||h?X+=`in vec2 a_normal; +`:X+=`in vec3 a_normal; +`),y&&(X+=`in float a_batchId; +`),(c||u||h)&&(X+=`uniform vec4 u_quantizedVolumeScaleAndOctEncodedRange; +`),T&&(X+=B),w&&(X+=v),M&&(X+=P),X+=`void main() +{ + u_pointSize = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.x; + tiles3d_tileset_time = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.y; +`,S&&(X+=` u_geometricError = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.z; + u_depthMultiplier = u_pointSizeAndTimeAndGeometricErrorAndDepthMultiplier.w; +`),H?g?X+=` vec4 color = a_color; +`:A?X+=` float compressed = a_color; + float r = floor(compressed * SHIFT_RIGHT_11); + compressed -= r * SHIFT_LEFT_11; + float g = floor(compressed * SHIFT_RIGHT_5); + compressed -= g * SHIFT_LEFT_5; + float b = compressed; + vec3 rgb = vec3(r * NORMALIZE_5, g * NORMALIZE_6, b * NORMALIZE_5); + vec4 color = vec4(rgb, 1.0); +`:X+=` vec4 color = vec4(a_color, 1.0); +`:X+=` vec4 color = u_constantColor; +`,c||u?X+=` vec3 position = a_position * u_quantizedVolumeScaleAndOctEncodedRange.xyz; +`:X+=` vec3 position = a_position; +`,X+=` vec3 position_absolute = vec3(czm_model * vec4(position, 1.0)); +`,W?(f?X+=` vec3 normal = czm_octDecode(a_normal); +`:h?X+=` vec3 normal = czm_octDecode(a_normal, u_quantizedVolumeScaleAndOctEncodedRange.w).zxy; +`:X+=` vec3 normal = a_normal; +`,X+=` vec3 normalEC = czm_normal * normal; +`):X+=` vec3 normal = vec3(1.0); +`,T&&(X+=` color = getColorFromStyle(position, position_absolute, color, normal); +`),w&&(X+=` float show = float(getShowFromStyle(position, position_absolute, color, normal)); +`),M?X+=` gl_PointSize = getPointSizeFromStyle(position, position_absolute, color, normal) * czm_pixelRatio; +`:S?X+=` vec4 positionEC = czm_modelView * vec4(position, 1.0); + float depth = -positionEC.z; + gl_PointSize = min((u_geometricError / depth) * u_depthMultiplier, u_pointSize); +`:X+=` gl_PointSize = u_pointSize; +`,X+=` color = color * u_highlightColor; +`,W&&E&&(X+=` float diffuseStrength = czm_getLambertDiffuse(czm_lightDirectionEC, normalEC); + diffuseStrength = max(diffuseStrength, 0.4); + color.xyz *= diffuseStrength * czm_lightColor; +`),X+=` v_color = color; + gl_Position = czm_modelViewProjection * vec4(position, 1.0); +`,W&&C&&(X+=` float visible = step(-normalEC.z, 0.0); + gl_Position *= visible; + gl_PointSize *= visible; +`),w&&(X+=` gl_Position.w *= float(show); + gl_PointSize *= float(show); +`),X+=`} +`;let he=`in vec4 v_color; +`;O&&(he+=`uniform highp sampler2D u_clippingPlanes; +uniform mat4 u_clippingPlanesMatrix; +uniform vec4 u_clippingPlanesEdgeStyle; +`,he+=` +`,he+=Dy(b,s),he+=` +`),he+=`void main() +{ + out_FragColor = czm_gammaCorrect(v_color); +`,O&&(he+=C4("u_clippingPlanes","u_clippingPlanesMatrix","u_clippingPlanesEdgeStyle")),he+=`} +`,e.splitDirection!==wr.NONE&&(he=kP.modifyFragmentShader(he)),l(e._vertexShaderLoaded)&&(X=e._vertexShaderLoaded(X)),l(e._fragmentShaderLoaded)&&(he=e._fragmentShaderLoaded(he));let ge=e._drawCommand;l(ge.shaderProgram)&&ge.shaderProgram.destroy(),ge.shaderProgram=ln.fromCache({context:s,vertexShaderSource:X,fragmentShaderSource:he,attributeLocations:Z});try{ge.shaderProgram._bind()}catch{throw new ce("Error generating style shader: this may be caused by a type mismatch, index out-of-bounds, or other syntax error.")}}function xbt(e,t){if(e._decodingState===x0.READY)return!1;if(e._decodingState===x0.NEEDS_DECODE){let n=e._parsedContent,i=n.draco,o=jg.decodePointCloud(i,t);l(o)&&(e._decodingState=x0.DECODING,o.then(function(r){e._decodingState=x0.READY;let s=l(r.POSITION)?r.POSITION.array:void 0,a=l(r.RGB)?r.RGB.array:void 0,c=l(r.RGBA)?r.RGBA.array:void 0,u=l(r.NORMAL)?r.NORMAL.array:void 0,f=l(r.BATCH_ID)?r.BATCH_ID.array:void 0,h=l(s)&&l(r.POSITION.data.quantization),A=l(u)&&l(r.NORMAL.data.quantization);if(h){let y=r.POSITION.data.quantization,C=y.range;e._quantizedVolumeScale=d.fromElements(C,C,C),e._quantizedVolumeOffset=d.unpack(y.minValues),e._quantizedRange=(1<<y.quantizationBits)-1,e._isQuantizedDraco=!0}A&&(e._octEncodedRange=(1<<r.NORMAL.data.quantization.quantizationBits)-1,e._isOctEncodedDraco=!0);let g=n.styleableProperties,m=i.batchTableProperties;for(let y in m)if(m.hasOwnProperty(y)){let C=r[y];l(g)||(g={}),g[y]={typedArray:C.array,componentCount:C.data.componentsPerAttribute}}l(s)&&(n.positions={typedArray:s});let _=c??a;l(_)&&(n.colors={typedArray:_}),l(u)&&(n.normals={typedArray:u}),l(f)&&(n.batchIds={typedArray:f}),n.styleableProperties=g}).catch(function(r){e._decodingState=x0.FAILED,e._error=r}))}return!0}var bbt=new se,Tbt=new d;UP.prototype.update=function(e){let t=e.context;if(l(this._error)){let u=this._error;throw this._error=void 0,u}if(xbt(this,t))return;let i=!1,o=!R.equals(this._modelMatrix,this.modelMatrix);if(this._mode!==e.mode&&(this._mode=e.mode,o=!0),l(this._drawCommand)||(ybt(this,e),o=!0,i=!0,this._ready=!0,this._parsedContent=void 0),o){R.clone(this.modelMatrix,this._modelMatrix);let u=this._drawCommand.modelMatrix;if(R.clone(this._modelMatrix,u),l(this._rtcCenter)&&R.multiplyByTranslation(u,this._rtcCenter,u),l(this._quantizedVolumeOffset)&&R.multiplyByTranslation(u,this._quantizedVolumeOffset,u),e.mode!==ie.SCENE3D){let h=e.mapProjection,A=R.getColumn(u,3,bbt);se.equals(A,se.UNIT_W)||kt.basisTo2D(h,u,u)}let f=this._drawCommand.boundingVolume;if(le.clone(this._boundingSphere,f),this._cull){let h=f.center;R.multiplyByPoint(u,h,h);let A=R.getScale(u,Tbt);f.radius*=d.maximumComponent(A)}}this.clippingPlanesDirty&&(this.clippingPlanesDirty=!1,i=!0),this._attenuation!==this.attenuation&&(this._attenuation=this.attenuation,i=!0),this.backFaceCulling!==this._backFaceCulling&&(this._backFaceCulling=this.backFaceCulling,i=!0),this.normalShading!==this._normalShading&&(this._normalShading=this.normalShading,i=!0),(this._style!==this.style||this.styleDirty)&&(this._style=this.style,this.styleDirty=!1,i=!0);let r=this.splitDirection!==wr.NONE;this._splittingEnabled!==r&&(this._splittingEnabled=r,i=!0),i&&Ibt(this,e,this._style),this._drawCommand.castShadows=Dn.castShadows(this.shadows),this._drawCommand.receiveShadows=Dn.receiveShadows(this.shadows);let s=this._highlightColor.alpha<1||this._constantColor.alpha<1||this._styleTranslucent;this._drawCommand.renderState=s?this._translucentRenderState:this._opaqueRenderState,this._drawCommand.pass=s?Be.TRANSLUCENT:this._opaquePass;let a=e.commandList,c=e.passes;(c.render||c.pick)&&a.push(this._drawCommand)};UP.prototype.isDestroyed=function(){return!1};UP.prototype.destroy=function(){let e=this._drawCommand;return l(e)&&(e.vertexArray=e.vertexArray&&e.vertexArray.destroy(),e.shaderProgram=e.shaderProgram&&e.shaderProgram.destroy()),ue(this)};var x4=UP;function T0(e){e=e??V.EMPTY_OBJECT,this.show=e.show??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this.shadows=e.shadows??Dn.ENABLED,this.maximumMemoryUsage=e.maximumMemoryUsage??256,this.shading=new op(e.shading),this.style=e.style,this.frameFailed=new _e,this.frameChanged=new _e,this._clock=e.clock,this._intervals=e.intervals,this._clippingPlanes=void 0,this.clippingPlanes=e.clippingPlanes,this._pointCloudEyeDomeLighting=new u_,this._loadTimestamp=void 0,this._clippingPlanesState=0,this._styleDirty=!1,this._pickId=void 0,this._totalMemoryUsageInBytes=0,this._frames=[],this._previousInterval=void 0,this._nextInterval=void 0,this._lastRenderedFrame=void 0,this._clockMultiplier=0,this._runningSum=0,this._runningLength=0,this._runningIndex=0,this._runningSamples=new Array(5).fill(0),this._runningAverage=0}Object.defineProperties(T0.prototype,{clippingPlanes:{get:function(){return this._clippingPlanes},set:function(e){Vs.setOwner(e,this,"_clippingPlanes")}},totalMemoryUsageInBytes:{get:function(){return this._totalMemoryUsageInBytes}},boundingSphere:{get:function(){if(l(this._lastRenderedFrame))return this._lastRenderedFrame.pointCloud.boundingSphere}}});function Sbt(e){return`uniform vec4 czm_pickColor; +${e}`}function wbt(e){return function(t){return wt(t,{czm_pickColor:function(){return e._pickId.color}})}}function Bbt(){return"czm_pickColor"}T0.prototype.makeStyleDirty=function(){this._styleDirty=!0};T0.prototype._getAverageLoadTime=function(){return this._runningLength===0?.05:this._runningAverage};var Dbt=new K;function nZ(e){let t=e._clock,n=t.canAnimate&&t.shouldAnimate,i=t.multiplier;return n?i:0}function b0(e,t){return e._intervals.indexOf(t.start)}function vbt(e,t){let n=e._intervals,i=e._clock,o=nZ(e);if(o===0)return;let r=e._getAverageLoadTime(),s=K.addSeconds(i.currentTime,r*o,Dbt),a=n.indexOf(s),c=b0(e,t);return a===c&&(o>=0?++a:--a),n.get(a)}function Pbt(e){let t=e._intervals,i=e._clock.currentTime,o=t.indexOf(i);return t.get(o)}function Rbt(e,t,n){let i=nZ(e),o=b0(e,t),r=b0(e,n);return i>=0?o>=r:o<=r}function wxe(e,t){return function(n){let i=l(n.message)?n.message:n.toString();e.frameFailed.numberOfListeners>0?e.frameFailed.raiseEvent({uri:t,message:i}):(console.log(`A frame failed to load: ${t}`),console.log(`Error: ${i}`))}}function Mbt(e,t,n){let i=b0(e,t),o=e._frames,r=o[i];if(!l(r)){let s=t.data.transform,a=l(s)?R.fromArray(s):void 0,c=t.data.uri;r={pointCloud:void 0,transform:a,timestamp:Oi(),sequential:!0,ready:!1,touchedFrameNumber:n.frameNumber,uri:c},o[i]=r,we.fetchArrayBuffer({url:c}).then(function(u){r.pointCloud=new x4({arrayBuffer:u,cull:!0,fragmentShaderLoaded:Sbt,uniformMapLoaded:wbt(e),pickIdLoaded:Bbt})}).catch(wxe(e,c))}return r}function Nbt(e,t){e._runningSum+=t,e._runningSum-=e._runningSamples[e._runningIndex],e._runningSamples[e._runningIndex]=t,e._runningLength=Math.min(e._runningLength+1,e._runningSamples.length),e._runningIndex=(e._runningIndex+1)%e._runningSamples.length,e._runningAverage=e._runningSum/e._runningLength}function Lbt(e,t,n,i){t.touchedFrameNumber<i.frameNumber-1&&(t.sequential=!1);let o=t.pointCloud;if(l(o)&&!t.ready){let r=i.commandList,s=r.length;if(Bxe(e,t,n,i),o.ready&&(t.ready=!0,e._totalMemoryUsageInBytes+=o.geometryByteLength,r.length=s,t.sequential)){let a=(Oi()-t.timestamp)/1e3;Nbt(e,a)}}t.touchedFrameNumber=i.frameNumber}var Obt=new R;function Fbt(e,t){let n=e.shading;return l(n)&&l(n.baseResolution)?n.baseResolution:l(t.boundingSphere)?D.cbrt(t.boundingSphere.volume()/t.pointsLength):0}function Qbt(e){let t=e.shading;return l(t)&&l(t.maximumAttenuation)?t.maximumAttenuation:10}var kbt=new op;function Bxe(e,t,n,i){let o=e.shading??kbt,r=t.pointCloud,s=t.transform??R.IDENTITY;r.modelMatrix=R.multiplyTransformation(e.modelMatrix,s,Obt),r.style=e.style,r.time=n.timeSinceLoad,r.shadows=e.shadows,r.clippingPlanes=e._clippingPlanes,r.isClipped=n.isClipped,r.attenuation=o.attenuation,r.backFaceCulling=o.backFaceCulling,r.normalShading=o.normalShading,r.geometricError=Fbt(e,r),r.geometricErrorScale=o.geometricErrorScale,r.maximumAttenuation=Qbt(e);try{r.update(i)}catch(a){wxe(e,t.uri)(a)}t.touchedFrameNumber=i.frameNumber}function tZ(e,t,n,i){let o=Mbt(e,t,i);Lbt(e,o,n,i)}function Ubt(e){return function(t){return t.touchedFrameNumber<e.frameNumber}}function Dxe(e,t){let n=e._frames,i=n.length;for(let o=0;o<i;++o){let r=n[o];if(l(r)&&(!l(t)||t(r))){let s=r.pointCloud;r.ready&&(e._totalMemoryUsageInBytes-=s.geometryByteLength),l(s)&&s.destroy(),r===e._lastRenderedFrame&&(e._lastRenderedFrame=void 0),n[o]=void 0}}}function Gbt(e,t){let n=b0(e,t),i=e._frames[n];if(l(i)&&i.ready)return i}function Sxe(e,t,n,i,o){return l(n)?n.ready?!0:(tZ(e,t,i,o),n.ready):!1}function zbt(e,t,n,i,o){let r,s,a,c=e._intervals,u=e._frames,f=b0(e,n),h=b0(e,t);if(f>=h){for(r=f;r>=h;--r)if(s=c.get(r),a=u[r],Sxe(e,s,a,i,o))return s}else for(r=f;r<=h;++r)if(s=c.get(r),a=u[r],Sxe(e,s,a,i,o))return s;return t}function Vbt(e,t,n){let i=e._frames,o=i.length;for(let r=0;r<o;++r){let s=i[r];l(s)&&l(s.pointCloud)&&(s.pointCloud.clippingPlanesDirty=t,s.pointCloud.styleDirty=n)}}var lS={timeSinceLoad:0,isClipped:!1,clippingPlanesDirty:!1};T0.prototype.update=function(e){if(e.mode===ie.MORPHING||!this.show)return;l(this._pickId)||(this._pickId=e.context.createPickId({primitive:this})),l(this._loadTimestamp)||(this._loadTimestamp=K.clone(e.time));let t=Math.max(K.secondsDifference(e.time,this._loadTimestamp)*1e3,0),n=this._clippingPlanes,i=0,o=!1,r=l(n)&&n.enabled;r&&(n.update(e),i=n.clippingPlanesState),this._clippingPlanesState!==i&&(this._clippingPlanesState=i,o=!0);let s=this._styleDirty;this._styleDirty=!1,(o||s)&&Vbt(this,o,s),lS.timeSinceLoad=t,lS.isClipped=r;let a=this.shading,c=this._pointCloudEyeDomeLighting,u=e.commandList,f=u.length,h=this._previousInterval,A=this._nextInterval,g=Pbt(this);if(!l(g))return;let m=!1,_=nZ(this),y=_===0;_!==this._clockMultiplier&&(m=!0,this._clockMultiplier=_),(!l(h)||y)&&(h=g),(!l(A)||m||Rbt(this,g,A))&&(A=vbt(this,g)),h=zbt(this,h,g,lS,e);let C=Gbt(this,h);l(C)||(tZ(this,h,lS,e),C=this._lastRenderedFrame),l(C)&&Bxe(this,C,lS,e),l(A)&&tZ(this,A,lS,e);let E=this;l(C)&&!l(this._lastRenderedFrame)&&e.afterRender.push(function(){return!0}),l(C)&&C!==this._lastRenderedFrame&&E.frameChanged.numberOfListeners>0&&e.afterRender.push(function(){return E.frameChanged.raiseEvent(E),!0}),this._previousInterval=h,this._nextInterval=A,this._lastRenderedFrame=C;let I=this._totalMemoryUsageInBytes,b=this.maximumMemoryUsage*1024*1024;I>b&&Dxe(this,Ubt(e));let B=u.length-f;l(a)&&a.attenuation&&a.eyeDomeLighting&&B>0&&c.update(e,f,a,this.boundingSphere)};T0.prototype.isDestroyed=function(){return!1};T0.prototype.destroy=function(){return Dxe(this),this._clippingPlanes=this._clippingPlanes&&this._clippingPlanes.destroy(),this._pickId=this._pickId&&this._pickId.destroy(),ue(this)};var GP=T0;function Rxe(e,t){if(l(t)){let n=t.clock;l(n)&&n.getValue(e)}}function Hbt(e){e._renderLoopRunning=!0;let t=0;function n(i){if(!e.isDestroyed())if(e._useDefaultRenderLoop)try{let o=e._targetFrameRate;if(!l(o))e.resize(),e.render(),requestAnimationFrame(n);else{let r=1e3/o,s=i-t;s>r&&(e.resize(),e.render(),t=i-s%r),requestAnimationFrame(n)}}catch(o){e._useDefaultRenderLoop=!1,e._renderLoopRunning=!1,e._showRenderLoopErrors&&e.showErrorPanel("An error occurred while rendering. Rendering has stopped.",void 0,o)}else e._renderLoopRunning=!1}requestAnimationFrame(n)}function Mxe(e){let t=e._useBrowserRecommendedResolution?1:window.devicePixelRatio;return t*=e._resolutionScale,l(e._scene)&&(e._scene.pixelRatio=t),t}function Nxe(e){let t=e._canvas,n=t.clientWidth,i=t.clientHeight,o=Mxe(e);e._canvasClientWidth=n,e._canvasClientHeight=i,n*=o,i*=o,t.width=n,t.height=i,e._canRender=n!==0&&i!==0,e._lastDevicePixelRatio=window.devicePixelRatio}function Lxe(e){let t=e._canvas,n=t.width,i=t.height;if(n!==0&&i!==0){let o=e._scene.camera.frustum;l(o.aspectRatio)?o.aspectRatio=n/i:(o.top=o.right*(i/n),o.bottom=-o.top)}}function Fo(e,t){e=Gn(e),t=t??V.EMPTY_OBJECT;let n=document.createElement("div");n.className="cesium-widget",e.appendChild(n);let i=document.createElement("canvas"),o=jt.supportsImageRenderingPixelated();this._supportsImageRenderingPixelated=o,o&&(i.style.imageRendering=jt.imageRenderingValue()),i.oncontextmenu=function(){return!1},i.onselectstart=function(){return!1};function r(){i!==i.ownerDocument.activeElement&&i.ownerDocument.activeElement.blur()}(t.blurActiveElementOnCanvasFocus??!0)&&(i.addEventListener("mousedown",r),i.addEventListener("pointerdown",r)),n.appendChild(i);let a=document.createElement("div");a.className="cesium-widget-credits";let c=l(t.creditContainer)?Gn(t.creditContainer):n;c.appendChild(a);let u=l(t.creditViewport)?Gn(t.creditViewport):n,f=t.showRenderLoopErrors??!0,h=t.useBrowserRecommendedResolution??!0;this._element=n,this._container=e,this._canvas=i,this._canvasClientWidth=0,this._canvasClientHeight=0,this._lastDevicePixelRatio=0,this._creditViewport=u,this._creditContainer=c,this._innerCreditContainer=a,this._canRender=!1,this._renderLoopRunning=!1,this._showRenderLoopErrors=f,this._resolutionScale=1,this._useBrowserRecommendedResolution=h,this._forceResize=!1,this._entityView=void 0,this._clockTrackedDataSource=void 0,this._trackedEntity=void 0,this._needTrackedEntityUpdate=!1,this._zoomIsFlight=!1,this._zoomTarget=void 0,this._zoomPromise=void 0,this._zoomOptions=void 0,this._trackedEntityChanged=new _e,this._allowDataSourcesToSuspendAnimation=!0,this._clock=l(t.clock)?t.clock:new Vm,l(t.shouldAnimate)&&(this._clock.shouldAnimate=t.shouldAnimate),Nxe(this);try{let A=t.ellipsoid??te.default,g=new p4({canvas:i,contextOptions:t.contextOptions,creditContainer:a,creditViewport:u,ellipsoid:A,mapProjection:t.mapProjection,orderIndependentTranslucency:t.orderIndependentTranslucency,scene3DOnly:t.scene3DOnly??!1,shadows:t.shadows,mapMode2D:t.mapMode2D,requestRenderMode:t.requestRenderMode,maximumRenderTimeChange:t.maximumRenderTimeChange,depthPlaneEllipsoidOffset:t.depthPlaneEllipsoidOffset,msaaSamples:t.msaaSamples});this._scene=g,g.camera.constrainedAxis=d.UNIT_Z,Mxe(this),Lxe(this);let m=t.globe;l(m)||(m=new Jz(A)),m!==!1&&(g.globe=m,g.globe.shadows=t.terrainShadows??Dn.RECEIVE_ONLY);let _=t.skyBox;!l(_)&&te.WGS84.equals(A)&&(_=_4.createEarthSkyBox()),_!==!1&&(g.skyBox=_,g.sun=new y4,te.WGS84.equals(A)&&(g.moon=new rV));let y=t.skyAtmosphere;!l(y)&&te.WGS84.equals(A)&&(y=new g4(A),y.show=t.globe!==!1&&m.show),y!==!1&&(g.skyAtmosphere=y);let C=t.baseLayer;t.globe!==!1&&C!==!1&&(l(C)||(C=ds.fromWorldImagery()),g.imageryLayers.add(C)),l(t.terrainProvider)&&t.globe!==!1&&(g.terrainProvider=t.terrainProvider),l(t.terrain)&&t.globe!==!1&&g.setTerrain(t.terrain),this._screenSpaceEventHandler=new Cd(i),l(t.sceneMode)&&(t.sceneMode===ie.SCENE2D&&this._scene.morphTo2D(0),t.sceneMode===ie.COLUMBUS_VIEW&&this._scene.morphToColumbusView(0)),this._useDefaultRenderLoop=void 0,this.useDefaultRenderLoop=t.useDefaultRenderLoop??!0,this._targetFrameRate=void 0,this.targetFrameRate=t.targetFrameRate;let E=this;this._onRenderError=function(P,N){E._useDefaultRenderLoop=!1,E._renderLoopRunning=!1,E._showRenderLoopErrors&&E.showErrorPanel("An error occurred while rendering. Rendering has stopped.",void 0,N)},g.renderError.addEventListener(this._onRenderError);let I=t.dataSources,b=!1;l(I)||(I=new b3,b=!0);let S=new AU({scene:g,dataSourceCollection:I}),B=new Lr;this._dataSourceChangedListeners={},this._automaticallyTrackDataSourceClocks=t.automaticallyTrackDataSourceClocks??!0,this._dataSourceCollection=I,this._destroyDataSourceCollection=b,this._dataSourceDisplay=S,this._eventHelper=B,this._canAnimateUpdateCallback=this._updateCanAnimate,B.add(this._clock.onTick,Fo.prototype._onTick,this),B.add(g.morphStart,Fo.prototype._clearTrackedObject,this),B.add(I.dataSourceAdded,Fo.prototype._onDataSourceAdded,this),B.add(I.dataSourceRemoved,Fo.prototype._onDataSourceRemoved,this),B.add(g.postRender,Fo.prototype._postRender,this);let v=I.length;for(let P=0;P<v;P++)this._dataSourceAdded(I,I.get(P));this._dataSourceAdded(void 0,S.defaultDataSource),B.add(I.dataSourceAdded,Fo.prototype._dataSourceAdded,this),B.add(I.dataSourceRemoved,Fo.prototype._dataSourceRemoved,this)}catch(A){throw f&&this.showErrorPanel("Error constructing CesiumWidget.",'Visit <a href="http://get.webgl.org">http://get.webgl.org</a> to verify that your web browser and hardware support WebGL. Consider trying a different web browser or updating your video drivers. Detailed error information is below:',A),A}}Object.defineProperties(Fo.prototype,{container:{get:function(){return this._container}},canvas:{get:function(){return this._canvas}},creditContainer:{get:function(){return this._creditContainer}},creditViewport:{get:function(){return this._creditViewport}},scene:{get:function(){return this._scene}},imageryLayers:{get:function(){return this._scene.imageryLayers}},terrainProvider:{get:function(){return this._scene.terrainProvider},set:function(e){this._scene.terrainProvider=e}},creditDisplay:{get:function(){return this._scene.frameState.creditDisplay}},dataSourceDisplay:{get:function(){return this._dataSourceDisplay}},entities:{get:function(){return this._dataSourceDisplay.defaultDataSource.entities}},dataSources:{get:function(){return this._dataSourceCollection}},camera:{get:function(){return this._scene.camera}},ellipsoid:{get:function(){return this._scene.ellipsoid}},clock:{get:function(){return this._clock}},screenSpaceEventHandler:{get:function(){return this._screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._targetFrameRate},set:function(e){this._targetFrameRate=e}},useDefaultRenderLoop:{get:function(){return this._useDefaultRenderLoop},set:function(e){this._useDefaultRenderLoop!==e&&(this._useDefaultRenderLoop=e,e&&!this._renderLoopRunning&&Hbt(this))}},resolutionScale:{get:function(){return this._resolutionScale},set:function(e){this._resolutionScale!==e&&(this._resolutionScale=e,this._forceResize=!0)}},useBrowserRecommendedResolution:{get:function(){return this._useBrowserRecommendedResolution},set:function(e){this._useBrowserRecommendedResolution!==e&&(this._useBrowserRecommendedResolution=e,this._forceResize=!0)}},allowDataSourcesToSuspendAnimation:{get:function(){return this._allowDataSourcesToSuspendAnimation},set:function(e){this._allowDataSourcesToSuspendAnimation=e}},trackedEntity:{get:function(){return this._trackedEntity},set:function(e){if(this._trackedEntity!==e){this._trackedEntity=e,iZ(this);let t=this.scene,n=t.mode;!l(e)||!l(e.position)?(this._needTrackedEntityUpdate=!1,(n===ie.COLUMBUS_VIEW||n===ie.SCENE2D)&&(t.screenSpaceCameraController.enableTranslate=!0),(n===ie.COLUMBUS_VIEW||n===ie.SCENE3D)&&(t.screenSpaceCameraController.enableTilt=!0),this._entityView=void 0,this.camera.lookAtTransform(R.IDENTITY)):this._needTrackedEntityUpdate=!0,this._trackedEntityChanged.raiseEvent(e),this.scene.requestRender()}}},trackedEntityChanged:{get:function(){return this._trackedEntityChanged}},clockTrackedDataSource:{get:function(){return this._clockTrackedDataSource},set:function(e){this._clockTrackedDataSource!==e&&(this._clockTrackedDataSource=e,Rxe(this.clock,e))}}});Fo.prototype.showErrorPanel=function(e,t,n){let i=this._element,o=document.createElement("div");o.className="cesium-widget-errorPanel";let r=document.createElement("div");r.className="cesium-widget-errorPanel-content",o.appendChild(r);let s=document.createElement("div");s.className="cesium-widget-errorPanel-header",s.appendChild(document.createTextNode(e)),r.appendChild(s);let a=document.createElement("div");a.className="cesium-widget-errorPanel-scroll",r.appendChild(a);function c(){a.style.maxHeight=`${Math.max(Math.round(i.clientHeight*.9-100),30)}px`}c(),l(window.addEventListener)&&window.addEventListener("resize",c,!1);let u=l(t),f=l(n);if(u||f){let g=document.createElement("div");if(g.className="cesium-widget-errorPanel-message",a.appendChild(g),f){let m=up(n);u||(typeof n=="string"&&(n=new Error(n)),t=up({name:n.name,message:n.message}),m=n.stack),typeof console<"u"&&console.error(`${e} +${t} +${m}`);let _=document.createElement("div");_.className="cesium-widget-errorPanel-message-details collapsed";let y=document.createElement("span");y.className="cesium-widget-errorPanel-more-details",y.appendChild(document.createTextNode("See more...")),_.appendChild(y),_.onclick=function(C){_.removeChild(y),_.appendChild(document.createTextNode(m)),_.className="cesium-widget-errorPanel-message-details",r.className="cesium-widget-errorPanel-content expanded",_.onclick=void 0},a.appendChild(_)}g.innerHTML=`<p>${t}</p>`}let h=document.createElement("div");h.className="cesium-widget-errorPanel-buttonPanel",r.appendChild(h);let A=document.createElement("button");A.setAttribute("type","button"),A.className="cesium-button",A.appendChild(document.createTextNode("OK")),A.onclick=function(){l(c)&&l(window.removeEventListener)&&window.removeEventListener("resize",c,!1),i.removeChild(o)},h.appendChild(A),i.appendChild(o)};Fo.prototype.isDestroyed=function(){return!1};Fo.prototype.destroy=function(){let e=this.dataSources,t=e.length;for(let n=0;n<t;n++)this._dataSourceRemoved(e,e.get(n));this._dataSourceRemoved(void 0,this._dataSourceDisplay.defaultDataSource),this._dataSourceDisplay=this._dataSourceDisplay.destroy(),l(this._scene)&&(this._scene.renderError.removeEventListener(this._onRenderError),this._scene=this._scene.destroy()),this._container.removeChild(this._element),this._creditContainer.removeChild(this._innerCreditContainer),this._eventHelper.removeAll(),this._destroyDataSourceCollection&&(this._dataSourceCollection=this._dataSourceCollection.destroy()),ue(this)};Fo.prototype.resize=function(){let e=this._canvas;!this._forceResize&&this._canvasClientWidth===e.clientWidth&&this._canvasClientHeight===e.clientHeight&&this._lastDevicePixelRatio===window.devicePixelRatio||(this._forceResize=!1,Nxe(this),Lxe(this),this._scene.requestRender())};Fo.prototype.render=function(){if(this._canRender){this._scene.initializeFrame();let e=this._clock.tick();this._scene.render(e)}else this._clock.tick()};Fo.prototype._dataSourceAdded=function(e,t){t.entities.collectionChanged.addEventListener(Fo.prototype._onEntityCollectionChanged,this)};Fo.prototype._dataSourceRemoved=function(e,t){let n=t.entities;n.collectionChanged.removeEventListener(Fo.prototype._onEntityCollectionChanged,this),l(this.trackedEntity)&&n.getById(this.trackedEntity.id)===this.trackedEntity&&(this.trackedEntity=void 0)};Fo.prototype._updateCanAnimate=function(e){this._clock.canAnimate=e};var Wbt=new le;Fo.prototype._onTick=function(e){let t=e.currentTime,n=this._dataSourceDisplay.update(t);this._allowDataSourcesToSuspendAnimation&&this._canAnimateUpdateCallback(n);let i=this._entityView;if(l(i)){let o=this._trackedEntity;this._dataSourceDisplay.getBoundingSphere(o,!1,i.boundingSphere??Wbt)===mt.DONE&&i.update(t)}};Fo.prototype._onEntityCollectionChanged=function(e,t,n){let i=n.length;for(let o=0;o<i;o++){let r=n[o];this.trackedEntity===r&&(this.trackedEntity=void 0)}};Fo.prototype._clearTrackedObject=function(){this.trackedEntity=void 0};Fo.prototype._onDataSourceChanged=function(e){this.clockTrackedDataSource===e&&Rxe(this.clock,e)};Fo.prototype._onDataSourceAdded=function(e,t){this._automaticallyTrackDataSourceClocks&&(this.clockTrackedDataSource=t);let n=t.entities.id,i=this._eventHelper.add(t.changedEvent,Fo.prototype._onDataSourceChanged,this);this._dataSourceChangedListeners[n]=i};Fo.prototype._onDataSourceRemoved=function(e,t){let n=this.clockTrackedDataSource===t,i=t.entities.id;if(this._dataSourceChangedListeners[i](),this._dataSourceChangedListeners[i]=void 0,n){let o=e.length;this._automaticallyTrackDataSourceClocks&&o>0?this.clockTrackedDataSource=e.get(o-1):this.clockTrackedDataSource=void 0}};Fo.prototype.zoomTo=function(e,t){return Oxe(this,e,{offset:t},!1)};Fo.prototype.flyTo=function(e,t){return Oxe(this,e,t,!0)};function Oxe(e,t,n,i){iZ(e);let o=new Promise(r=>{e._completeZoom=function(s){r(s)}});return e._zoomPromise=o,e._zoomIsFlight=i,e._zoomOptions=n,Promise.resolve(t).then(function(r){if(e._zoomPromise===o){if(r instanceof ds){let s;l(r.imageryProvider)?s=Promise.resolve(r.getImageryRectangle()):s=new Promise(a=>{let c=r.readyEvent.addEventListener(()=>{c(),a(r.getImageryRectangle())})}),s.then(function(a){return RT(a,e.scene)}).then(function(a){e._zoomPromise===o&&(e._zoomTarget=a)});return}if(r instanceof qs||r instanceof GP||r instanceof E0){e._zoomTarget=r;return}if(r.isLoading&&l(r.loadingEvent)){let s=r.loadingEvent.addEventListener(function(){s(),e._zoomPromise===o&&(e._zoomTarget=r.entities.values.slice(0))});return}if(Array.isArray(r)){e._zoomTarget=r.slice(0);return}r=r.values??r,l(r.entities)&&(r=r.entities.values),Array.isArray(r)?e._zoomTarget=r.slice(0):e._zoomTarget=[r]}}),e.scene.requestRender(),o}function zP(e){e._zoomPromise=void 0,e._zoomTarget=void 0,e._zoomOptions=void 0}function iZ(e){let t=e._zoomPromise;l(t)&&(zP(e),e._completeZoom(!1))}Fo.prototype._postRender=function(){jbt(this),Ybt(this)};var vxe=new le;function jbt(e){let t=e._zoomTarget;if(!l(t)||e.scene.mode===ie.MORPHING)return;let n=e.scene,i=n.camera,o=e._zoomOptions??{},r;function s(f){l(o.offset)||(o.offset=new Eh(0,-.5,f.radius)),r={offset:o.offset,duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)}},e._zoomIsFlight?i.flyToBoundingSphere(t.boundingSphere,r):(i.viewBoundingSphere(f,o.offset),i.lookAtTransform(R.IDENTITY),e._completeZoom(!0)),zP(e)}if(t instanceof GP){if(l(t.boundingSphere)){s(t.boundingSphere);return}let f=t.frameChanged.addEventListener(function(h){s(h.boundingSphere),f()});return}if(t instanceof qs||t instanceof E0){s(t.boundingSphere);return}if(t instanceof Ae){r={destination:n.ellipsoid.cartographicToCartesian(t),duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)}},e._zoomIsFlight?i.flyTo(r):(i.setView(r),e._completeZoom(!0)),zP(e);return}let a=t,c=[];for(let f=0,h=a.length;f<h;f++){let A=e._dataSourceDisplay.getBoundingSphere(a[f],!1,vxe);if(A===mt.PENDING)return;A!==mt.FAILED&&c.push(le.clone(vxe))}if(c.length===0){iZ(e);return}e.trackedEntity=void 0;let u=le.fromBoundingSpheres(c);e._zoomIsFlight?(zP(e),i.flyToBoundingSphere(u,{duration:o.duration,maximumHeight:o.maximumHeight,complete:function(){e._completeZoom(!0)},cancel:function(){e._completeZoom(!1)},offset:o.offset})):(i.viewBoundingSphere(u,o.offset),i.lookAtTransform(R.IDENTITY),zP(e),e._completeZoom(!0))}var Pxe=new le;function Ybt(e){if(!e._needTrackedEntityUpdate)return;let t=e._trackedEntity,n=e.clock.currentTime,i=j.getValueOrUndefined(t.position,n);if(!l(i))return;let o=e.scene,r=e._dataSourceDisplay.getBoundingSphere(t,!1,Pxe);if(r===mt.PENDING)return;let s=o.mode;(s===ie.COLUMBUS_VIEW||s===ie.SCENE2D)&&(o.screenSpaceCameraController.enableTranslate=!1),(s===ie.COLUMBUS_VIEW||s===ie.SCENE3D)&&(o.screenSpaceCameraController.enableTilt=!1);let a=r!==mt.FAILED?Pxe:void 0;e._entityView=new _U(t,o,o.ellipsoid),e._entityView.update(n,a),e._needTrackedEntityUpdate=!1}var b4=Fo;function dS(e,t){this._tilingScheme=e,this._maximumLevel=t,this._rootNodes=[]}var S0=new ae;function qbt(e,t,n,i){let o=i.length;for(let r=0;r<o;++r){let s=i[r];if(s.x===t&&s.y===n&&s.level===e)return!0}return!1}dS.prototype.addAvailableTileRange=function(e,t,n,i,o){let r=this._tilingScheme,s=this._rootNodes;if(e===0)for(let A=n;A<=o;++A)for(let g=t;g<=i;++g)qbt(e,g,A,s)||s.push(new uS(r,void 0,0,g,A));r.tileXYToRectangle(t,n,e,S0);let a=S0.west,c=S0.north;r.tileXYToRectangle(i,o,e,S0);let u=S0.east,f=S0.south,h=new $bt(e,a,f,u,c);for(let A=0;A<s.length;++A){let g=s[A];oZ(g.extent,h)&&eTt(this._maximumLevel,g,h)}};dS.prototype.computeMaximumLevelAtPosition=function(e){let t;for(let n=0;n<this._rootNodes.length;++n){let i=this._rootNodes[n];if(fS(i.extent,e)){t=i;break}}return l(t)?VP(void 0,t,e):-1};var Kbt=[],Xbt=[],Jbt=new ae,Zbt=new ae;dS.prototype.computeBestAvailableLevelOverRectangle=function(e){let t=Kbt;t.length=0,e.east<e.west?(t.push(ae.fromRadians(-Math.PI,e.south,e.east,e.north,Jbt)),t.push(ae.fromRadians(e.west,e.south,Math.PI,e.north,Zbt))):t.push(e);let n=Xbt;n.length=0;let i;for(i=0;i<this._rootNodes.length;++i)HP(n,this._rootNodes[i],t);for(i=n.length-1;i>=0;--i)if(l(n[i])&&n[i].length===0)return i;return 0};var Fxe=new Ae;dS.prototype.isTileAvailable=function(e,t,n){let i=this._tilingScheme.tileXYToRectangle(t,n,e,S0);return ae.center(i,Fxe),this.computeMaximumLevelAtPosition(Fxe)>=e};dS.prototype.computeChildMaskForTile=function(e,t,n){let i=e+1;if(i>=this._maximumLevel)return 0;let o=0;return o|=this.isTileAvailable(i,2*t,2*n+1)?1:0,o|=this.isTileAvailable(i,2*t+1,2*n+1)?2:0,o|=this.isTileAvailable(i,2*t,2*n)?4:0,o|=this.isTileAvailable(i,2*t+1,2*n)?8:0,o};function uS(e,t,n,i,o){this.tilingScheme=e,this.parent=t,this.level=n,this.x=i,this.y=o,this.extent=e.tileXYToRectangle(i,o,n),this.rectangles=[],this._sw=void 0,this._se=void 0,this._nw=void 0,this._ne=void 0}Object.defineProperties(uS.prototype,{nw:{get:function(){return this._nw||(this._nw=new uS(this.tilingScheme,this,this.level+1,this.x*2,this.y*2)),this._nw}},ne:{get:function(){return this._ne||(this._ne=new uS(this.tilingScheme,this,this.level+1,this.x*2+1,this.y*2)),this._ne}},sw:{get:function(){return this._sw||(this._sw=new uS(this.tilingScheme,this,this.level+1,this.x*2,this.y*2+1)),this._sw}},se:{get:function(){return this._se||(this._se=new uS(this.tilingScheme,this,this.level+1,this.x*2+1,this.y*2+1)),this._se}}});function $bt(e,t,n,i,o){this.level=e,this.west=t,this.south=n,this.east=i,this.north=o}function oZ(e,t){let n=Math.max(e.west,t.west),i=Math.max(e.south,t.south),o=Math.min(e.east,t.east),r=Math.min(e.north,t.north);return i<r&&n<o}function eTt(e,t,n){for(;t.level<e;)if(T4(t.nw.extent,n))t=t.nw;else if(T4(t.ne.extent,n))t=t.ne;else if(T4(t.sw.extent,n))t=t.sw;else if(T4(t.se.extent,n))t=t.se;else break;if(t.rectangles.length===0||t.rectangles[t.rectangles.length-1].level<=n.level)t.rectangles.push(n);else{let i=qo(t.rectangles,n.level,tTt);i<0&&(i=~i),t.rectangles.splice(i,0,n)}}function tTt(e,t){return e.level-t}function T4(e,t){return t.west>=e.west&&t.east<=e.east&&t.south>=e.south&&t.north<=e.north}function fS(e,t){return t.longitude>=e.west&&t.longitude<=e.east&&t.latitude>=e.south&&t.latitude<=e.north}function VP(e,t,n){let i=0,o=!1;for(;!o;){let r=t._nw&&fS(t._nw.extent,n),s=t._ne&&fS(t._ne.extent,n),a=t._sw&&fS(t._sw.extent,n),c=t._se&&fS(t._se.extent,n);if(r+s+a+c>1){r&&(i=Math.max(i,VP(t,t._nw,n))),s&&(i=Math.max(i,VP(t,t._ne,n))),a&&(i=Math.max(i,VP(t,t._sw,n))),c&&(i=Math.max(i,VP(t,t._se,n)));break}else r?t=t._nw:s?t=t._ne:a?t=t._sw:c?t=t._se:o=!0}for(;t!==e;){let r=t.rectangles;for(let s=r.length-1;s>=0&&r[s].level>i;--s){let a=r[s];fS(a,n)&&(i=a.level)}t=t.parent}return i}function HP(e,t,n){if(!t)return;let i,o=!1;for(i=0;i<n.length;++i)o=o||oZ(t.extent,n[i]);if(!o)return;let r=t.rectangles;for(i=0;i<r.length;++i){let s=r[i];e[s.level]||(e[s.level]=n),e[s.level]=nTt(e[s.level],s)}HP(e,t._nw,n),HP(e,t._ne,n),HP(e,t._sw,n),HP(e,t._se,n)}function nTt(e,t){let n=[];for(let i=0;i<e.length;++i){let o=e[i];oZ(o,t)?(o.west<t.west&&n.push(new ae(o.west,o.south,t.west,o.north)),o.east>t.east&&n.push(new ae(t.east,o.south,o.east,o.north)),o.south<t.south&&n.push(new ae(Math.max(t.west,o.west),o.south,Math.min(t.east,o.east),t.south)),o.north>t.north&&n.push(new ae(Math.max(t.west,o.west),t.north,Math.min(t.east,o.east),o.north))):n.push(o)}return n}var CA=dS;var iTt=15;function Qxe(e){this.ellipsoid=e.ellipsoid??te.default,this.credit=void 0,this.tilingScheme=void 0,this.height=void 0,this.width=void 0,this.encoding=void 0,this.lodCount=void 0,this.hasAvailability=!1,this.tilesAvailable=void 0,this.tilesAvailabilityLoaded=void 0,this.levelZeroMaximumGeometricError=void 0,this.terrainDataStructure=void 0}Qxe.prototype.build=function(e){e._credit=this.credit,e._tilingScheme=this.tilingScheme,e._height=this.height,e._width=this.width,e._encoding=this.encoding,e._lodCount=this.lodCount,e._hasAvailability=this.hasAvailability,e._tilesAvailable=this.tilesAvailable,e._tilesAvailabilityLoaded=this.tilesAvailabilityLoaded,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._terrainDataStructure=this.terrainDataStructure};function oTt(e,t){let n=t.copyrightText;l(n)&&(e.credit=new Dt(n));let i=t.spatialReference,o=i.latestWkid??i.wkid,r=t.extent,s={ellipsoid:e.ellipsoid};if(o===4326)s.rectangle=ae.fromDegrees(r.xmin,r.ymin,r.xmax,r.ymax),e.tilingScheme=new co(s);else if(o===3857){let u=Math.PI*e.ellipsoid.maximumRadius;t.extent.xmax>u&&(t.extent.xmax=u),t.extent.ymax>u&&(t.extent.ymax=u),t.extent.xmin<-u&&(t.extent.xmin=-u),t.extent.ymin<-u&&(t.extent.ymin=-u),s.rectangleSouthwestInMeters=new k(r.xmin,r.ymin),s.rectangleNortheastInMeters=new k(r.xmax,r.ymax),e.tilingScheme=new ws(s)}else throw new ce("Invalid spatial reference");let a=t.tileInfo;if(!l(a))throw new ce("tileInfo is required");e.width=a.rows+1,e.height=a.cols+1,e.encoding=a.format==="LERC"?vh.LERC:vh.NONE,e.lodCount=a.lods.length-1,(e.hasAvailability=t.capabilities.indexOf("Tilemap")!==-1)&&(e.tilesAvailable=new CA(e.tilingScheme,e.lodCount),e.tilesAvailable.addAvailableTileRange(0,0,0,e.tilingScheme.getNumberOfXTilesAtLevel(0),e.tilingScheme.getNumberOfYTilesAtLevel(0)),e.tilesAvailabilityLoaded=new CA(e.tilingScheme,e.lodCount)),e.levelZeroMaximumGeometricError=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.tilingScheme.ellipsoid,e.width,e.tilingScheme.getNumberOfXTilesAtLevel(0)),t.bandCount>1&&console.log("ArcGISTiledElevationTerrainProvider: Terrain data has more than 1 band. Using the first one."),l(t.minValues)&&l(t.maxValues)?e.terrainDataStructure={elementMultiplier:1,lowestEncodedHeight:t.minValues[0],highestEncodedHeight:t.maxValues[0]}:e.terrainDataStructure={elementMultiplier:1}}async function rTt(e,t,n){try{let i=await t.fetchJson();oTt(e,i)}catch(i){let o=`An error occurred while accessing ${t}.`;throw zo.reportError(void 0,n,l(n)?n._errorEvent:void 0,o),i}}function Vy(e){e=e??V.EMPTY_OBJECT,this._resource=void 0,this._credit=void 0,this._tilingScheme=void 0,this._levelZeroMaximumGeometricError=void 0,this._maxLevel=void 0,this._terrainDataStructure=void 0,this._width=void 0,this._height=void 0,this._encoding=void 0,this._lodCount=void 0,this._hasAvailability=!1,this._tilesAvailable=void 0,this._tilesAvailabilityLoaded=void 0,this._availableCache={},this._errorEvent=new _e}Object.defineProperties(Vy.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){return this._tilesAvailable}}});Vy.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT,e=await Promise.resolve(e);let n=we.createIfNeeded(e);n.appendForwardSlash(),l(t.token)&&(n=n.getDerivedResource({queryParameters:{token:t.token}}));let i=n.getDerivedResource({queryParameters:{f:"pjson"}}),o=new Qxe(t);await rTt(o,i);let r=new Vy(t);return o.build(r),r._resource=n,r};Vy.prototype.requestTileGeometry=function(e,t,n,i){let o=this._resource.getDerivedResource({url:`tile/${n}/${t}/${e}`,request:i}),r=this._hasAvailability,s=Promise.resolve(!0),a;if(r&&!l(rZ(this,n+1,e*2,t*2))){let h=kxe(this,n+1,e*2,t*2);s=h.promise,a=h.request}let c=o.fetchArrayBuffer();if(!l(c)||!l(s))return;let u=this,f=this._tilesAvailable;return Promise.all([c,s]).then(function(h){return new Qc({buffer:h[0],width:u._width,height:u._height,childTileMask:r?f.computeChildMaskForTile(n,e,t):iTt,structure:u._terrainDataStructure,encoding:u._encoding})}).catch(async function(h){if(l(a)&&a.state===hi.CANCELLED){i.cancel();try{await i.deferred?.promise}catch{}return i.state=hi.CANCELLED,Promise.reject(h)}return Promise.reject(h)})};function rZ(e,t,n,i){if(!e._hasAvailability)return;let o=e._tilesAvailabilityLoaded,r=e._tilesAvailable;if(t>e._lodCount)return!1;if(r.isTileAvailable(t,n,i))return!0;if(o.isTileAvailable(t,n,i))return!1}Vy.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};Vy.prototype.getTileDataAvailable=function(e,t,n){if(!this._hasAvailability)return;let i=rZ(this,n,e,t);if(l(i))return i;kxe(this,n,e,t)};Vy.prototype.loadTileDataAvailability=function(e,t,n){};function sTt(e,t,n,i){let o=t-1,r=n-1,s=i[e.y*t+e.x],a=[],c={startX:e.x,startY:e.y,endX:0,endY:0},u=new k(e.x+1,e.y+1),f=!1,h=!1;for(;!(f&&h);){let A=u.x,g=h?u.y+1:u.y;if(!f){for(let m=e.y;m<g;++m)if(i[m*t+u.x]!==s){f=!0;break}f?(a.push(new k(u.x,e.y)),--u.x,--A,c.endX=u.x):u.x===o?(c.endX=u.x,f=!0):++u.x}if(!h){let m=u.y*t;for(let _=e.x;_<=A;++_)if(i[m+_]!==s){h=!0;break}h?(a.push(new k(e.x,u.y)),--u.y,c.endY=u.y):u.y===r?(c.endY=u.y,h=!0):++u.y}}return{endingIndices:a,range:c,value:s}}function aTt(e,t,n,i,o){let r=[];if(o.every(function(c){return c===o[0]}))return o[0]===1&&r.push({startX:e,startY:t,endX:e+n-1,endY:t+i-1}),r;let a=[new k(0,0)];for(;a.length>0;){let c=a.pop(),u=sTt(c,n,i,o);if(u.value===1){let h=u.range;h.startX+=e,h.endX+=e,h.startY+=t,h.endY+=t,r.push(h)}let f=u.endingIndices;f.length>0&&(a=a.concat(f))}return r}function kxe(e,t,n,i){if(!e._hasAvailability)return{};let o=Math.floor(n/128)*128,r=Math.floor(i/128)*128,s=Math.min(1<<t,128),a=`tilemap/${t}/${r}/${o}/${s}/${s}`,c=e._availableCache;if(l(c[a]))return c[a];let u=new pr({throttle:!1,throttleByServer:!0,type:Us.TERRAIN}),h=e._resource.getDerivedResource({url:a,request:u}).fetchJson();return l(h)?(h=h.then(function(A){let g=aTt(o,r,s,s,A.data);e._tilesAvailabilityLoaded.addAvailableTileRange(t,o,r,o+s,r+s);let m=e._tilesAvailable;for(let _=0;_<g.length;++_){let y=g[_];m.addAvailableTileRange(t,y.startX,y.startY,y.endX,y.endY)}return rZ(e,t,n,i)}),c[a]={promise:h,request:u},h=h.finally(function(A){return delete c[a],A}),{promise:h,request:u}):{}}var Uxe=Vy;var Gxe="https://dev.virtualearth.net/REST/v1/Locations";function sZ(e){e=e??V.EMPTY_OBJECT;let t=e.key;this._key=t;let n={key:t};l(e.culture)&&(n.culture=e.culture),this._resource=new we({url:Gxe,queryParameters:n}),this._credit=new Dt('<img src="http://dev.virtualearth.net/Branding/logo_powered_by.png"/>',!1)}Object.defineProperties(sZ.prototype,{url:{get:function(){return Gxe}},key:{get:function(){return this._key}},credit:{get:function(){return this._credit}}});sZ.prototype.geocode=async function(e){return this._resource.getDerivedResource({queryParameters:{query:e}}).fetchJsonp("jsonp").then(function(n){return n.resourceSets.length===0?[]:n.resourceSets[0].resources.map(function(o){let r=o.bbox,s=r[0],a=r[1],c=r[2],u=r[3];return{displayName:o.name,destination:ae.fromDegrees(a,s,u,c)}})})};var zxe=sZ;function aZ(){}Object.defineProperties(aZ.prototype,{credit:{get:function(){}}});aZ.prototype.geocode=function(e){let t=e.match(/[^\s,\n]+/g);if(t.length===2||t.length===3){let n=+t[0],i=+t[1],o=t.length===3?+t[2]:300;if(isNaN(n)&&isNaN(i)){let r=/^(\d+.?\d*)([nsew])/i;for(let s=0;s<t.length;++s){let a=t[s].match(r);r.test(t[s])&&a.length===3&&(/^[ns]/i.test(a[2])?i=/^[n]/i.test(a[2])?+a[1]:-a[1]:/^[ew]/i.test(a[2])&&(n=/^[e]/i.test(a[2])?+a[1]:-a[1]))}}if(!isNaN(n)&&!isNaN(i)&&!isNaN(o)){let r={displayName:e,destination:d.fromDegrees(n,i,o)};return Promise.resolve([r])}}return Promise.resolve([])};var Vxe=aZ;var cTt=new se,Hxe=new d,hS=new d;function lTt(e){let t=e.points,n=e.times;if(t.length<3){let i=n[0],o=1/(n[1]-i),r=t[0],s=t[1];return function(a,c){l(c)||(c=new d);let u=(a-i)*o;return d.lerp(r,s,u,c)}}return function(i,o){l(o)||(o=new d);let r=e._lastTimeIndex=e.findTimeInterval(i,e._lastTimeIndex),s=(i-n[r])/(n[r+1]-n[r]),a=cTt;a.z=s,a.y=s*s,a.x=a.y*s,a.w=1;let c,u,f,h,A;return r===0?(c=t[0],u=t[1],f=e.firstTangent,h=d.subtract(t[2],c,Hxe),d.multiplyByScalar(h,.5,h),A=R.multiplyByVector(XC.hermiteCoefficientMatrix,a,a)):r===t.length-2?(c=t[r],u=t[r+1],h=e.lastTangent,f=d.subtract(u,t[r-1],Hxe),d.multiplyByScalar(f,.5,f),A=R.multiplyByVector(XC.hermiteCoefficientMatrix,a,a)):(c=t[r-1],u=t[r],f=t[r+1],h=t[r+2],A=R.multiplyByVector(Hy.catmullRomCoefficientMatrix,a,a)),o=d.multiplyByScalar(c,A.x,o),d.multiplyByScalar(u,A.y,hS),d.add(o,hS,o),d.multiplyByScalar(f,A.z,hS),d.add(o,hS,o),d.multiplyByScalar(h,A.w,hS),d.add(o,hS,o)}}var uTt=new d,fTt=new d;function Hy(e){e=e??V.EMPTY_OBJECT;let t=e.points,n=e.times,i=e.firstTangent,o=e.lastTangent;if(t.length>2&&(l(i)||(i=uTt,d.multiplyByScalar(t[1],2,i),d.subtract(i,t[2],i),d.subtract(i,t[0],i),d.multiplyByScalar(i,.5,i)),!l(o))){let r=t.length-1;o=fTt,d.multiplyByScalar(t[r-1],2,o),d.subtract(t[r],o,o),d.add(o,t[r-2],o),d.multiplyByScalar(o,.5,o)}this._times=n,this._points=t,this._firstTangent=d.clone(i),this._lastTangent=d.clone(o),this._evaluateFunction=lTt(this),this._lastTimeIndex=0}Object.defineProperties(Hy.prototype,{times:{get:function(){return this._times}},points:{get:function(){return this._points}},firstTangent:{get:function(){return this._firstTangent}},lastTangent:{get:function(){return this._lastTangent}}});Hy.catmullRomCoefficientMatrix=new R(-.5,1,-.5,0,1.5,-2.5,0,1,-1.5,2,.5,0,.5,-.5,0,0);Hy.prototype.findTimeInterval=_o.prototype.findTimeInterval;Hy.prototype.wrapTime=_o.prototype.wrapTime;Hy.prototype.clampTime=_o.prototype.clampTime;Hy.prototype.evaluate=function(e,t){return this._evaluateFunction(e,t)};var Wxe=Hy;var S4={};S4.clipTriangleAtAxisAlignedThreshold=function(e,t,n,i,o,r){l(r)?r.length=0:r=[];let s,a,c;t?(s=n<e,a=i<e,c=o<e):(s=n>e,a=i>e,c=o>e);let u=s+a+c,f,h,A,g,m,_;return u===1?s?(f=(e-n)/(i-n),h=(e-n)/(o-n),r.push(1),r.push(2),h!==1&&(r.push(-1),r.push(0),r.push(2),r.push(h)),f!==1&&(r.push(-1),r.push(0),r.push(1),r.push(f))):a?(A=(e-i)/(o-i),g=(e-i)/(n-i),r.push(2),r.push(0),g!==1&&(r.push(-1),r.push(1),r.push(0),r.push(g)),A!==1&&(r.push(-1),r.push(1),r.push(2),r.push(A))):c&&(m=(e-o)/(n-o),_=(e-o)/(i-o),r.push(0),r.push(1),_!==1&&(r.push(-1),r.push(2),r.push(1),r.push(_)),m!==1&&(r.push(-1),r.push(2),r.push(0),r.push(m))):u===2?!s&&n!==e?(g=(e-i)/(n-i),m=(e-o)/(n-o),r.push(0),r.push(-1),r.push(1),r.push(0),r.push(g),r.push(-1),r.push(2),r.push(0),r.push(m)):!a&&i!==e?(_=(e-o)/(i-o),f=(e-n)/(i-n),r.push(1),r.push(-1),r.push(2),r.push(1),r.push(_),r.push(-1),r.push(0),r.push(1),r.push(f)):!c&&o!==e&&(h=(e-n)/(o-n),A=(e-i)/(o-i),r.push(2),r.push(-1),r.push(0),r.push(2),r.push(h),r.push(-1),r.push(1),r.push(2),r.push(A)):u!==3&&(r.push(0),r.push(1),r.push(2)),r};S4.computeBarycentricCoordinates=function(e,t,n,i,o,r,s,a,c){let u=n-s,f=s-o,h=r-a,A=i-a,g=1/(h*u+f*A),m=t-a,_=e-s,y=(h*_+f*m)*g,C=(-A*_+u*m)*g,E=1-y-C;return l(c)?(c.x=y,c.y=C,c.z=E,c):new d(y,C,E)};S4.computeLineSegmentLineSegmentIntersection=function(e,t,n,i,o,r,s,a,c){let u=(s-o)*(t-r)-(a-r)*(e-o),f=(n-e)*(t-r)-(i-t)*(e-o),h=(a-r)*(n-e)-(s-o)*(i-t);if(h===0)return;let A=u/h,g=f/h;if(A>=0&&A<=1&&g>=0&&g<=1)return l(c)||(c=new k),c.x=e+A*(n-e),c.y=t+A*(i-t),c};var Wy=S4;function jy(e){this._quantizedVertices=e.quantizedVertices,this._encodedNormals=e.encodedNormals,this._indices=e.indices,this._minimumHeight=e.minimumHeight,this._maximumHeight=e.maximumHeight,this._boundingSphere=e.boundingSphere,this._orientedBoundingBox=e.orientedBoundingBox,this._horizonOcclusionPoint=e.horizonOcclusionPoint,this._credits=e.credits;let t=this._quantizedVertices.length/3,n=this._uValues=this._quantizedVertices.subarray(0,t),i=this._vValues=this._quantizedVertices.subarray(t,2*t);this._heightValues=this._quantizedVertices.subarray(2*t,3*t);function o(s,a){return i[s]-i[a]}function r(s,a){return n[s]-n[a]}this._westIndices=B4(e.westIndices,o,t),this._southIndices=B4(e.southIndices,r,t),this._eastIndices=B4(e.eastIndices,o,t),this._northIndices=B4(e.northIndices,r,t),this._westSkirtHeight=e.westSkirtHeight,this._southSkirtHeight=e.southSkirtHeight,this._eastSkirtHeight=e.eastSkirtHeight,this._northSkirtHeight=e.northSkirtHeight,this._childTileMask=e.childTileMask??15,this._createdByUpsampling=e.createdByUpsampling??!1,this._waterMask=e.waterMask,this._mesh=void 0}Object.defineProperties(jy.prototype,{credits:{get:function(){return this._credits}},waterMask:{get:function(){return this._waterMask}},childTileMask:{get:function(){return this._childTileMask}},canUpsample:{get:function(){return l(this._mesh)}}});var w4=[];function B4(e,t,n){w4.length=e.length;let i=!1;for(let o=0,r=e.length;o<r;++o)w4[o]=e[o],i=i||o>0&&t(e[o-1],e[o])>0;return i?(w4.sort(t),Fe.createTypedArray(n,w4)):e}var jxe="createVerticesFromQuantizedTerrainMesh",dTt=new mi(jxe),hTt=new mi(jxe,fA.maximumAsynchronousTasks);jy.prototype.createMesh=function(e){e=e??V.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid,u=t.tileXYToRectangle(n,i,o),h=(a?hTt:dTt).scheduleTask({minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,quantizedVertices:this._quantizedVertices,octEncodedNormals:this._encodedNormals,includeWebMercatorT:!0,indices:this._indices,westIndices:this._westIndices,southIndices:this._southIndices,eastIndices:this._eastIndices,northIndices:this._northIndices,westSkirtHeight:this._westSkirtHeight,southSkirtHeight:this._southSkirtHeight,eastSkirtHeight:this._eastSkirtHeight,northSkirtHeight:this._northSkirtHeight,rectangle:u,relativeToCenter:this._boundingSphere.center,ellipsoid:c,exaggeration:r,exaggerationRelativeHeight:s});if(!l(h))return;let A=this;return Promise.resolve(h).then(function(g){let m=A._quantizedVertices.length/3,_=m+A._westIndices.length+A._southIndices.length+A._eastIndices.length+A._northIndices.length,y=Fe.createTypedArray(_,g.indices),C=new Float32Array(g.vertices),E=g.center,I=g.minimumHeight,b=g.maximumHeight,S=A._boundingSphere,B=A._orientedBoundingBox,v=d.clone(g.occludeePointInScaledSpace)??A._horizonOcclusionPoint,P=g.vertexStride,N=Il.clone(g.encoding);return A._mesh=new Ph(E,C,y,g.indexCountWithoutSkirts,m,I,b,S,v,P,B,N,g.westIndicesSouthToNorth,g.southIndicesEastToWest,g.eastIndicesNorthToSouth,g.northIndicesWestToEast),A._quantizedVertices=void 0,A._encodedNormals=void 0,A._indices=void 0,A._uValues=void 0,A._vValues=void 0,A._heightValues=void 0,A._westIndices=void 0,A._southIndices=void 0,A._eastIndices=void 0,A._northIndices=void 0,A._mesh})};var mTt=new mi("upsampleQuantizedTerrainMesh",fA.maximumAsynchronousTasks);jy.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(this._mesh))return;let c=t*2!==o,u=n*2===r,f=e.ellipsoid,h=e.tileXYToRectangle(o,r,s),A=mTt.scheduleTask({vertices:a.vertices,vertexCountWithoutSkirts:a.vertexCountWithoutSkirts,indices:a.indices,indexCountWithoutSkirts:a.indexCountWithoutSkirts,encoding:a.encoding,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:c,isNorthChild:u,childRectangle:h,ellipsoid:f});if(!l(A))return;let g=Math.min(this._westSkirtHeight,this._eastSkirtHeight);g=Math.min(g,this._southSkirtHeight),g=Math.min(g,this._northSkirtHeight);let m=c?g*.5:this._westSkirtHeight,_=u?g*.5:this._southSkirtHeight,y=c?this._eastSkirtHeight:g*.5,C=u?this._northSkirtHeight:g*.5,E=this._credits;return Promise.resolve(A).then(function(I){let b=new Uint16Array(I.vertices),S=Fe.createTypedArray(b.length/3,I.indices),B;return l(I.encodedNormals)&&(B=new Uint8Array(I.encodedNormals)),new jy({quantizedVertices:b,indices:S,encodedNormals:B,minimumHeight:I.minimumHeight,maximumHeight:I.maximumHeight,boundingSphere:le.clone(I.boundingSphere),orientedBoundingBox:Qn.clone(I.orientedBoundingBox),horizonOcclusionPoint:d.clone(I.horizonOcclusionPoint),westIndices:I.westIndices,southIndices:I.southIndices,eastIndices:I.eastIndices,northIndices:I.northIndices,westSkirtHeight:m,southSkirtHeight:_,eastSkirtHeight:y,northSkirtHeight:C,childTileMask:0,credits:E,createdByUpsampling:!0})})};var cZ=32767,Yxe=new d;jy.prototype.interpolateHeight=function(e,t,n){let i=D.clamp((t-e.west)/e.width,0,1);i*=cZ;let o=D.clamp((n-e.south)/e.height,0,1);return o*=cZ,l(this._mesh)?_Tt(this,i,o):yTt(this,i,o)};function qxe(e,t,n,i,o,r,s,a){let c=Math.min(n,o,s),u=Math.max(n,o,s),f=Math.min(i,r,a),h=Math.max(i,r,a);return e>=c&&e<=u&&t>=f&&t<=h}var ATt=new k,pTt=new k,gTt=new k;function _Tt(e,t,n){let i=e._mesh,o=i.vertices,r=i.encoding,s=i.indices;for(let a=0,c=s.length;a<c;a+=3){let u=s[a],f=s[a+1],h=s[a+2],A=r.decodeTextureCoordinates(o,u,ATt),g=r.decodeTextureCoordinates(o,f,pTt),m=r.decodeTextureCoordinates(o,h,gTt);if(qxe(t,n,A.x,A.y,g.x,g.y,m.x,m.y)){let _=Wy.computeBarycentricCoordinates(t,n,A.x,A.y,g.x,g.y,m.x,m.y,Yxe);if(_.x>=-1e-15&&_.y>=-1e-15&&_.z>=-1e-15){let y=r.decodeHeight(o,u),C=r.decodeHeight(o,f),E=r.decodeHeight(o,h);return _.x*y+_.y*C+_.z*E}}}}function yTt(e,t,n){let i=e._uValues,o=e._vValues,r=e._heightValues,s=e._indices;for(let a=0,c=s.length;a<c;a+=3){let u=s[a],f=s[a+1],h=s[a+2],A=i[u],g=i[f],m=i[h],_=o[u],y=o[f],C=o[h];if(qxe(t,n,A,_,g,y,m,C)){let E=Wy.computeBarycentricCoordinates(t,n,A,_,g,y,m,C,Yxe);if(E.x>=-1e-15&&E.y>=-1e-15&&E.z>=-1e-15){let I=E.x*r[u]+E.y*r[f]+E.z*r[h];return D.lerp(e._minimumHeight,e._maximumHeight,I/cZ)}}}}jy.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};jy.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};var mS=jy;function CTt(e){this.resource=e.resource,this.version=e.version,this.isHeightmap=e.isHeightmap,this.tileUrlTemplates=e.tileUrlTemplates,this.availability=e.availability,this.hasVertexNormals=e.hasVertexNormals,this.hasWaterMask=e.hasWaterMask,this.hasMetadata=e.hasMetadata,this.availabilityLevels=e.availabilityLevels,this.availabilityTilesLoaded=e.availabilityTilesLoaded,this.littleEndianExtensionSize=e.littleEndianExtensionSize,this.availabilityPromiseCache={}}function Xxe(e){this.requestVertexNormals=e.requestVertexNormals??!1,this.requestWaterMask=e.requestWaterMask??!1,this.requestMetadata=e.requestMetadata??!0,this.ellipsoid=e.ellipsoid??te.default,this.heightmapWidth=65,this.heightmapStructure=void 0,this.hasWaterMask=!1,this.hasMetadata=!1,this.hasVertexNormals=!1,this.scheme=void 0,this.lastResource=void 0,this.layerJsonResource=void 0,this.previousError=void 0,this.availability=void 0,this.tilingScheme=void 0,this.levelZeroMaximumGeometricError=void 0,this.heightmapStructure=void 0,this.layers=[],this.attribution="",this.overallAvailability=[],this.overallMaxZoom=0,this.tileCredits=[]}Xxe.prototype.build=function(e){e._heightmapWidth=this.heightmapWidth,e._scheme=this.scheme;let t=l(this.lastResource.credits)?this.lastResource.credits:[];e._tileCredits=t.concat(this.tileCredits),e._availability=this.availability,e._tilingScheme=this.tilingScheme,e._requestWaterMask=this.requestWaterMask,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._heightmapStructure=this.heightmapStructure,e._layers=this.layers,e._hasWaterMask=this.hasWaterMask,e._hasVertexNormals=this.hasVertexNormals,e._hasMetadata=this.hasMetadata};async function Jxe(e,t,n){if(!t.format){let _="The tile format is not specified in the layer.json file.";throw e.previousError=zo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}if(!t.tiles||t.tiles.length===0){let _="The layer.json file does not specify any tile URL templates.";throw e.previousError=zo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}let i=!1,o=!1,r=!1,s=!0,a=!1;if(t.format==="heightmap-1.0")a=!0,l(e.heightmapStructure)||(e.heightmapStructure={heightScale:1/5,heightOffset:-1e3,elementsPerHeight:1,stride:1,elementMultiplier:256,isBigEndian:!1,lowestEncodedHeight:0,highestEncodedHeight:256*256-1}),o=!0,e.requestWaterMask=!0;else if(t.format.indexOf("quantized-mesh-1.")!==0){let _=`The tile format "${t.format}" is invalid or not supported.`;throw e.previousError=zo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}let c=t.tiles,u=t.maxzoom;if(e.overallMaxZoom=Math.max(e.overallMaxZoom,u),!t.projection||t.projection==="EPSG:4326")e.tilingScheme=new co({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});else if(t.projection==="EPSG:3857")e.tilingScheme=new ws({numberOfLevelZeroTilesX:1,numberOfLevelZeroTilesY:1,ellipsoid:e.ellipsoid});else{let _=`The projection "${t.projection}" is invalid or not supported.`;throw e.previousError=zo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}if(e.levelZeroMaximumGeometricError=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.tilingScheme.ellipsoid,e.heightmapWidth,e.tilingScheme.getNumberOfXTilesAtLevel(0)),!t.scheme||t.scheme==="tms"||t.scheme==="slippyMap")e.scheme=t.scheme;else{let _=`The scheme "${t.scheme}" is invalid or not supported.`;throw e.previousError=zo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,_),new ce(_)}let f;l(t.extensions)&&t.extensions.indexOf("octvertexnormals")!==-1?i=!0:l(t.extensions)&&t.extensions.indexOf("vertexnormals")!==-1&&(i=!0,s=!1),l(t.extensions)&&t.extensions.indexOf("watermask")!==-1&&(o=!0),l(t.extensions)&&t.extensions.indexOf("metadata")!==-1&&(r=!0);let h=t.metadataAvailability,A=t.available,g;if(l(A)&&!l(h)){g=new CA(e.tilingScheme,A.length);for(let _=0;_<A.length;++_){let y=A[_],C=e.tilingScheme.getNumberOfYTilesAtLevel(_);l(e.overallAvailability[_])||(e.overallAvailability[_]=[]);for(let E=0;E<y.length;++E){let I=y[E],b=C-I.endY-1,S=C-I.startY-1;e.overallAvailability[_].push([I.startX,b,I.endX,S]),g.addAvailableTileRange(_,I.startX,b,I.endX,S)}}}else l(h)&&(f=new CA(e.tilingScheme,u),g=new CA(e.tilingScheme,u),e.overallAvailability[0]=[[0,0,1,0]],g.addAvailableTileRange(0,0,0,1,0));e.hasWaterMask=e.hasWaterMask||o,e.hasVertexNormals=e.hasVertexNormals||i,e.hasMetadata=e.hasMetadata||r,l(t.attribution)&&(e.attribution.length>0&&(e.attribution+=" "),e.attribution+=t.attribution),e.layers.push(new CTt({resource:e.lastResource,version:t.version,isHeightmap:a,tileUrlTemplates:c,availability:g,hasVertexNormals:i,hasWaterMask:o,hasMetadata:r,availabilityLevels:h,availabilityTilesLoaded:f,littleEndianExtensionSize:s}));let m=t.parentUrl;return l(m)?l(g)?(e.lastResource=e.lastResource.getDerivedResource({url:m}),e.lastResource.appendForwardSlash(),e.layerJsonResource=e.lastResource.getDerivedResource({url:"layer.json"}),await fZ(e),!0):(console.log("A layer.json can't have a parentUrl if it does't have an available array."),!0):!0}function ETt(e,t,n){let i=`An error occurred while accessing ${e.layerJsonResource.url}.`;if(l(t)&&(i+=` +${t.message}`),e.previousError=zo.reportError(e.previousError,n,l(n)?n._errorEvent:void 0,i),e.previousError.retry)return fZ(e,n);throw new ce(i)}async function ITt(e,t,n){await Jxe(e,t,n);let i=e.overallAvailability.length;if(i>0){let o=e.availability=new CA(e.tilingScheme,e.overallMaxZoom);for(let r=0;r<i;++r){let s=e.overallAvailability[r];for(let a=0;a<s.length;++a){let c=s[a];o.addAvailableTileRange(r,c[0],c[1],c[2],c[3])}}}if(e.attribution.length>0){let o=new Dt(e.attribution);e.tileCredits.push(o)}return!0}async function fZ(e,t){try{let n=await e.layerJsonResource.fetchJson();return ITt(e,n,t)}catch(n){return l(n)&&n.statusCode===404?(await Jxe(e,{tilejson:"2.1.0",format:"heightmap-1.0",version:"1.0.0",scheme:"tms",tiles:["{z}/{x}/{y}.terrain?v={version}"]},t),!0):ETt(e,n,t)}}function zh(e){e=e??V.EMPTY_OBJECT,this._heightmapWidth=void 0,this._heightmapStructure=void 0,this._hasWaterMask=!1,this._hasVertexNormals=!1,this._hasMetadata=!1,this._scheme=void 0,this._ellipsoid=e.ellipsoid,this._requestVertexNormals=e.requestVertexNormals??!1,this._requestWaterMask=e.requestWaterMask??!1,this._requestMetadata=e.requestMetadata??!0,this._errorEvent=new _e;let t=e.credit;typeof t=="string"&&(t=new Dt(t)),this._credit=t,this._availability=void 0,this._tilingScheme=void 0,this._levelZeroMaximumGeometricError=void 0,this._layers=void 0,this._tileCredits=void 0}var lZ={OCT_VERTEX_NORMALS:1,WATER_MASK:2,METADATA:4};function Kxe(e){return!l(e)||e.length===0?{Accept:"application/vnd.quantized-mesh,application/octet-stream;q=0.9,*/*;q=0.01"}:{Accept:`application/vnd.quantized-mesh;extensions=${e.join("-")},application/octet-stream;q=0.9,*/*;q=0.01`}}function xTt(e,t,n,i,o){let r=new Uint16Array(t,0,e._heightmapWidth*e._heightmapWidth);return new Qc({buffer:r,childTileMask:new Uint8Array(t,r.byteLength,1)[0],waterMask:new Uint8Array(t,r.byteLength+1,t.byteLength-r.byteLength-1),width:e._heightmapWidth,height:e._heightmapWidth,structure:e._heightmapStructure,credits:e._tileCredits})}function bTt(e,t,n,i,o,r){let s=r.littleEndianExtensionSize,a=0,c=3,u=c+1,f=Float64Array.BYTES_PER_ELEMENT*c,h=Float64Array.BYTES_PER_ELEMENT*u,g=Uint16Array.BYTES_PER_ELEMENT*3,m=3,_=Uint16Array.BYTES_PER_ELEMENT,y=_*m,C=new DataView(t),E=new d(C.getFloat64(a,!0),C.getFloat64(a+8,!0),C.getFloat64(a+16,!0));a+=f;let I=C.getFloat32(a,!0);a+=Float32Array.BYTES_PER_ELEMENT;let b=C.getFloat32(a,!0);a+=Float32Array.BYTES_PER_ELEMENT;let S=new le(new d(C.getFloat64(a,!0),C.getFloat64(a+8,!0),C.getFloat64(a+16,!0)),C.getFloat64(a+f,!0));a+=h;let B=new d(C.getFloat64(a,!0),C.getFloat64(a+8,!0),C.getFloat64(a+16,!0));a+=f;let v=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let P=new Uint16Array(t,a,v*3);a+=v*g,v>64*1024&&(_=Uint32Array.BYTES_PER_ELEMENT,y=_*m);let N=P.subarray(0,v),L=P.subarray(v,2*v),p=P.subarray(v*2,3*v);Fn.zigZagDeltaDecode(N,L,p),a%_!==0&&(a+=_-a%_);let x=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let T=Fe.createTypedArrayFromArrayBuffer(v,t,a,x*m);a+=x*y;let w=0,M=T.length;for(let fe=0;fe<M;++fe){let ye=T[fe];T[fe]=w-ye,ye===0&&++w}let O=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let U=Fe.createTypedArrayFromArrayBuffer(v,t,a,O);a+=O*_;let Q=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let z=Fe.createTypedArrayFromArrayBuffer(v,t,a,Q);a+=Q*_;let F=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let H=Fe.createTypedArrayFromArrayBuffer(v,t,a,F);a+=F*_;let W=C.getUint32(a,!0);a+=Uint32Array.BYTES_PER_ELEMENT;let Z=Fe.createTypedArrayFromArrayBuffer(v,t,a,W);a+=W*_;let Y,$;for(;a<C.byteLength;){let fe=C.getUint8(a,!0);a+=Uint8Array.BYTES_PER_ELEMENT;let ye=C.getUint32(a,s);if(a+=Uint32Array.BYTES_PER_ELEMENT,fe===lZ.OCT_VERTEX_NORMALS&&e._requestVertexNormals)Y=new Uint8Array(t,a,v*2);else if(fe===lZ.WATER_MASK&&e._requestWaterMask)$=new Uint8Array(t,a,ye);else if(fe===lZ.METADATA&&e._requestMetadata){let Ie=C.getUint32(a,!0);if(Ie>0){let Te=yr(new Uint8Array(t),a+Uint32Array.BYTES_PER_ELEMENT,Ie).available;if(l(Te))for(let ke=0;ke<Te.length;++ke){let Ge=n+ke+1,qe=Te[ke],tt=e._tilingScheme.getNumberOfYTilesAtLevel(Ge);for(let $t=0;$t<qe.length;++$t){let it=qe[$t],tn=tt-it.endY-1,Wt=tt-it.startY-1;e.availability.addAvailableTileRange(Ge,it.startX,tn,it.endX,Wt),r.availability.addAvailableTileRange(Ge,it.startX,tn,it.endX,Wt)}}}r.availabilityTilesLoaded.addAvailableTileRange(n,i,o,i,o)}a+=ye}let X=e.getLevelMaximumGeometricError(n)*5,he=e._tilingScheme.tileXYToRectangle(i,o,n),ge=Qn.fromRectangle(he,I,b,e._tilingScheme.ellipsoid);return new mS({center:E,minimumHeight:I,maximumHeight:b,boundingSphere:S,orientedBoundingBox:ge,horizonOcclusionPoint:B,quantizedVertices:P,encodedNormals:Y,indices:T,westIndices:U,southIndices:z,eastIndices:H,northIndices:Z,westSkirtHeight:X,southSkirtHeight:X,eastSkirtHeight:X,northSkirtHeight:X,childTileMask:e.availability.computeChildMaskForTile(n,i,o),waterMask:$,credits:e._tileCredits})}zh.prototype.requestTileGeometry=function(e,t,n,i){let o=this._layers,r,s=o.length,a=!1,c=Promise.resolve();if(s===1)r=o[0];else for(let u=0;u<s;++u){let f=o[u];if(!l(f.availability)||f.availability.isTileAvailable(n,e,t)){r=f;break}let h=dZ(this,e,t,n,f,u===0);h.result&&(a=!0,c=c.then(()=>h.promise))}return!l(r)&&a?c.then(()=>new Promise(u=>{setTimeout(()=>{let f=this.requestTileGeometry(e,t,n,i);u(f)},0)})):Zxe(this,e,t,n,r,i)};function Zxe(e,t,n,i,o,r){if(!l(o))return Promise.reject(new ce("Terrain tile doesn't exist"));let s=o.tileUrlTemplates;if(s.length===0)return;let a;!e._scheme||e._scheme==="tms"?a=e._tilingScheme.getNumberOfYTilesAtLevel(i)-n-1:a=n;let c=[];e._requestVertexNormals&&o.hasVertexNormals&&c.push(o.littleEndianExtensionSize?"octvertexnormals":"vertexnormals"),e._requestWaterMask&&o.hasWaterMask&&c.push("watermask"),e._requestMetadata&&o.hasMetadata&&c.push("metadata");let u,f,h=s[(t+a+i)%s.length],A=o.resource;l(A._ionEndpoint)&&!l(A._ionEndpoint.externalType)?(c.length!==0&&(f={extensions:c.join("-")}),u=Kxe(void 0)):u=Kxe(c);let g=A.getDerivedResource({url:h,templateValues:{version:o.version,z:i,x:t,y:a},queryParameters:f,headers:u,request:r}).fetchArrayBuffer();if(l(g))return g.then(function(m){return l(m)?l(e._heightmapStructure)?xTt(e,m,i,t,n):bTt(e,m,i,t,n,o):Promise.reject(new ce("Mesh buffer doesn't exist."))})}Object.defineProperties(zh.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return this._hasWaterMask&&this._requestWaterMask}},hasVertexNormals:{get:function(){return this._hasVertexNormals&&this._requestVertexNormals}},hasMetadata:{get:function(){return this._hasMetadata&&this._requestMetadata}},requestVertexNormals:{get:function(){return this._requestVertexNormals}},requestWaterMask:{get:function(){return this._requestWaterMask}},requestMetadata:{get:function(){return this._requestMetadata}},availability:{get:function(){return this._availability}}});zh.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};zh.fromIonAssetId=async function(e,t){let n=await wf.fromAssetId(e);return zh.fromUrl(n,t)};zh.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT,e=await Promise.resolve(e);let n=we.createIfNeeded(e);n.appendForwardSlash();let i=new Xxe(t);i.lastResource=n,i.layerJsonResource=i.lastResource.getDerivedResource({url:"layer.json"}),await fZ(i);let o=new zh(t);return i.build(o),o};zh.prototype.getTileDataAvailable=function(e,t,n){if(!l(this._availability))return;if(n>this._availability._maximumLevel)return!1;if(this._availability.isTileAvailable(n,e,t))return!0;if(!this._hasMetadata)return!1;let i=this._layers,o=i.length;for(let r=0;r<o;++r)if(dZ(this,e,t,n,i[r],r===0).result)return;return!1};zh.prototype.loadTileDataAvailability=function(e,t,n){if(!l(this._availability)||n>this._availability._maximumLevel||this._availability.isTileAvailable(n,e,t)||!this._hasMetadata)return;let i=this._layers,o=i.length;for(let r=0;r<o;++r){let s=dZ(this,e,t,n,i[r],r===0);if(l(s.promise))return s.promise}};function uZ(e,t,n,i){if(i===0)return;let o=e.availabilityLevels,r=i%o===0?i-o:(i/o|0)*o,s=1<<i-r,a=t/s|0,c=n/s|0;return{level:r,x:a,y:c}}function dZ(e,t,n,i,o,r){if(!l(o.availabilityLevels))return{result:!1};let s,a=function(){delete o.availabilityPromiseCache[s]},c=o.availabilityTilesLoaded,u=o.availability,f=uZ(o,t,n,i);for(;l(f);){if(u.isTileAvailable(f.level,f.x,f.y)&&!c.isTileAvailable(f.level,f.x,f.y)){let h;if(!r&&(s=`${f.level}-${f.x}-${f.y}`,h=o.availabilityPromiseCache[s],!l(h))){let A=new pr({throttle:!1,throttleByServer:!0,type:Us.TERRAIN});h=Zxe(e,f.x,f.y,f.level,o,A),l(h)&&(o.availabilityPromiseCache[s]=h,h.then(a))}return{result:!0,promise:h}}f=uZ(o,f.x,f.y,f.level)}return{result:!1}}zh._getAvailabilityTile=uZ;var AS=zh;function sg(e){e=e??V.EMPTY_OBJECT;let t=e.radius,n={center:e.center,semiMajorAxis:t,semiMinorAxis:t,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,vertexFormat:e.vertexFormat,stRotation:e.stRotation,shadowVolume:e.shadowVolume};this._ellipseGeometry=new ru(n),this._workerName="createCircleGeometry"}sg.packedLength=ru.packedLength;sg.pack=function(e,t,n){return ru.pack(e._ellipseGeometry,t,n)};var $xe=new ru({center:new d,semiMajorAxis:1,semiMinorAxis:1}),uc={center:new d,radius:void 0,ellipsoid:te.clone(te.default),height:void 0,extrudedHeight:void 0,granularity:void 0,vertexFormat:new Pe,stRotation:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0,shadowVolume:void 0};sg.unpack=function(e,t,n){let i=ru.unpack(e,t,$xe);return uc.center=d.clone(i._center,uc.center),uc.ellipsoid=te.clone(i._ellipsoid,uc.ellipsoid),uc.ellipsoid=te.clone(i._ellipsoid,$xe._ellipsoid),uc.height=i._height,uc.extrudedHeight=i._extrudedHeight,uc.granularity=i._granularity,uc.vertexFormat=Pe.clone(i._vertexFormat,uc.vertexFormat),uc.stRotation=i._stRotation,uc.shadowVolume=i._shadowVolume,l(n)?(uc.semiMajorAxis=i._semiMajorAxis,uc.semiMinorAxis=i._semiMinorAxis,n._ellipseGeometry=new ru(uc),n):(uc.radius=i._semiMajorAxis,new sg(uc))};sg.createGeometry=function(e){return ru.createGeometry(e._ellipseGeometry)};sg.createShadowVolume=function(e,t,n){let i=e._ellipseGeometry._granularity,o=e._ellipseGeometry._ellipsoid,r=t(i,o),s=n(i,o);return new sg({center:e._ellipseGeometry._center,radius:e._ellipseGeometry._semiMajorAxis,ellipsoid:o,stRotation:e._ellipseGeometry._stRotation,granularity:i,extrudedHeight:r,height:s,vertexFormat:Pe.POSITION_ONLY,shadowVolume:!0})};Object.defineProperties(sg.prototype,{rectangle:{get:function(){return this._ellipseGeometry.rectangle}},textureCoordinateRotationPoints:{get:function(){return this._ellipseGeometry.textureCoordinateRotationPoints}}});var ebe=sg;function pS(e){e=e??V.EMPTY_OBJECT;let t=e.radius,n={center:e.center,semiMajorAxis:t,semiMinorAxis:t,ellipsoid:e.ellipsoid,height:e.height,extrudedHeight:e.extrudedHeight,granularity:e.granularity,numberOfVerticalLines:e.numberOfVerticalLines};this._ellipseGeometry=new ld(n),this._workerName="createCircleOutlineGeometry"}pS.packedLength=ld.packedLength;pS.pack=function(e,t,n){return ld.pack(e._ellipseGeometry,t,n)};var TTt=new ld({center:new d,semiMajorAxis:1,semiMinorAxis:1}),af={center:new d,radius:void 0,ellipsoid:te.clone(te.UNIT_SPHERE),height:void 0,extrudedHeight:void 0,granularity:void 0,numberOfVerticalLines:void 0,semiMajorAxis:void 0,semiMinorAxis:void 0};pS.unpack=function(e,t,n){let i=ld.unpack(e,t,TTt);return af.center=d.clone(i._center,af.center),af.ellipsoid=te.clone(i._ellipsoid,af.ellipsoid),af.height=i._height,af.extrudedHeight=i._extrudedHeight,af.granularity=i._granularity,af.numberOfVerticalLines=i._numberOfVerticalLines,l(n)?(af.semiMajorAxis=i._semiMajorAxis,af.semiMinorAxis=i._semiMinorAxis,n._ellipseGeometry=new ld(af),n):(af.radius=i._semiMajorAxis,new pS(af))};pS.createGeometry=function(e){return ld.createGeometry(e._ellipseGeometry)};var tbe=pS;function gS(e){e=e??V.EMPTY_OBJECT,this._callback=e.callback,this._tilingScheme=e.tilingScheme,l(this._tilingScheme)||(this._tilingScheme=new co({ellipsoid:e.ellipsoid??te.default})),this._width=e.width,this._height=e.height;let t=Math.max(this._width,this._height);this._levelZeroMaximumGeometricError=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(this._tilingScheme.ellipsoid,t,this._tilingScheme.getNumberOfXTilesAtLevel(0)),this._errorEvent=new _e;let n=e.credit;typeof n=="string"&&(n=new Dt(n)),this._credit=n}Object.defineProperties(gS.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}},width:{get:function(){return this._width}},height:{get:function(){return this._height}}});gS.prototype.requestTileGeometry=function(e,t,n,i){let o=this._callback(e,t,n);if(!l(o))return;let r=this._width,s=this._height;return Promise.resolve(o).then(function(a){let c=a;return Array.isArray(c)&&(c=new Float64Array(c)),new Qc({buffer:c,width:r,height:s})})};gS.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};gS.prototype.getTileDataAvailable=function(e,t,n){};gS.prototype.loadTileDataAvailability=function(e,t,n){};var nbe=gS;function ibe(e){this.proxy=e}ibe.prototype.getURL=function(e){let t=this.proxy.indexOf("?")===-1?"?":"";return this.proxy+t+encodeURIComponent(e)};var obe=ibe;var STt={SEARCH:0,AUTOCOMPLETE:1},w0=Object.freeze(STt);function D4(){me.throwInstantiationError()}Object.defineProperties(D4.prototype,{credit:{get:me.throwInstantiationError}});D4.getCreditsFromResult=function(e){if(l(e.attributions))return e.attributions.map(Dt.getIonCredit)};D4.prototype.geocode=me.throwInstantiationError;var WP=D4;function rbe(){me.throwInstantiationError()}rbe.createGeometry=function(e){me.throwInstantiationError()};var sbe=rbe;var RTt=Es(hZ(),1);function wTt(e,t){return(e&t)!==0}var Tl=wTt;var BTt=[1,2,4,8],abe=15,DTt=16,vTt=64,PTt=128;function EA(e,t,n,i,o,r){this._bits=e,this.cnodeVersion=t,this.imageryVersion=n,this.terrainVersion=i,this.imageryProvider=o,this.terrainProvider=r,this.ancestorHasTerrain=!1,this.terrainState=void 0}EA.clone=function(e,t){return l(t)?(t._bits=e._bits,t.cnodeVersion=e.cnodeVersion,t.imageryVersion=e.imageryVersion,t.terrainVersion=e.terrainVersion,t.imageryProvider=e.imageryProvider,t.terrainProvider=e.terrainProvider):t=new EA(e._bits,e.cnodeVersion,e.imageryVersion,e.terrainVersion,e.imageryProvider,e.terrainProvider),t.ancestorHasTerrain=e.ancestorHasTerrain,t.terrainState=e.terrainState,t};EA.prototype.setParent=function(e){this.ancestorHasTerrain=e.ancestorHasTerrain||this.hasTerrain()};EA.prototype.hasSubtree=function(){return Tl(this._bits,DTt)};EA.prototype.hasImagery=function(){return Tl(this._bits,vTt)};EA.prototype.hasTerrain=function(){return Tl(this._bits,PTt)};EA.prototype.hasChildren=function(){return Tl(this._bits,abe)};EA.prototype.hasChild=function(e){return Tl(this._bits,BTt[e])};EA.prototype.getChildBitmask=function(){return this._bits&abe};var v4=EA;function MTt(e){let t=e.length,n=new ArrayBuffer(t),i=new Uint8Array(n);for(let o=0;o<t;++o)i[o]=e.charCodeAt(o);return n}var NTt=MTt(`E\xF4\xBD\vy\xE2jE"\x92,\xCDq\xF8IFgQ\0B%\xC6\xE8a,f)\b\xC64\xDCjb%y +wmi\xD6\xF0\x9Ck\x93\xA1\xBDNu\xE0A[\xDF@V\f\xD9\xBBr\x9B\x81|3S\xEEOl\xD4q\xB0{\xC0\x7FEVZ\xADwUe\v3\x92*\xACl5\xC50s\xF83>mF8J\xB4\xDD\xF0.\xDDu\xDA\x8CDt"\xFAa"\f3"So\xAF9D\v\x8C9\xD99L\xB9\xBF\x7F\xAB\\\x8CP_\x9F"ux\xE9\x07q\x91h;\xC1\xC4\x9B\x7F\xF0<VqH\x82'UfYNe\x98u\xA3aF}a?A\0\x9F\xD7\xB44M\xCE\x87F\xB0\xD5\xB8\x8A'{\x8B\xDC+\xBBMg0\xC8\xD1\xF6\\\x8FP\xFA[/F\x9Bn5/'C.\xEB +\f^\xA5s\x1Be4\xE5l.jC'c#U\xA9?q{gC}:\xAF\xCD\xE2TU\x9C\xFDK\xC6\xE2\x9F/(\xED\xCB\\\xC6-f\x07\x88\xA7;/*"N\xB0k.\xDD\r\x95}}G\xBAC\xB2\xB2+>M\xAA>}\xE6\xCEI\x89\xC6\xE6x\fa1-\xA4O\xA5~q \x88\xEC\r1\xE8N\v\0nPh}=\b\r\x95\xA6n\xA3h\x97$[k\xF3#\xF3\xB6s\xB3\r\v@\xC0\x9F\xD8Q]\xFA".j\xDFI\0\xB9\xA0wU\xC6\xEFj\xBF{GL\x7F\x83\xEE\xDC\xDCF\x85\xA9\xADS\x07+S4\x07\xFF\x94Y\xE48\xE81\x83N\xB9XFk\xCB-#\x86\x92p\x005\x88"\xCF1\xB2&/\xE7\xC3u-6,rt\xB0#G\xB7\xD3\xD1&\x857r\xE2\0\x8CD\xCF\xDA3-\xDE\`\x86i#i*|\xCDKQ\r\x95T9w.)\xEA\x1B\xA6P\xA2j\x8FoP\x99\\>T\xFB\xEFP[\v\x07E\x89m(w7\xDB\x8EJfJo\x99 \xE5p\xE2\xB9q~\fmI-z\xFEr\xC7\xF2Y0\x8F\xBB]s\xE5\xC9 \xEAx\xEC \x90\xF0\x8A\x7FB|G\`\xB0\xBD&\xB7q\xB6\xC7\x9F\xD13\x82=\xD3\xAB\xEEc\x99\xC8+S\xA0D\\q\xC6\xCCD2O<\xCA\xC0)=R\xD3aX\xA9}e\xB4\xDC\xCF\r\xF4=\xF1\b\xA9B\xDA# \xD8\xBF^PI\xF8M\xC0\xCBGLO\xF7{+\xD8\xC51\x92;\xB5o\xDCl\r\x92\x88\xD1\x9E\xDB?\xE2\xE9\xDA_\xD4\x84\xE2FaZ\xDEU\xCF\xA4\0\xBE\xFD\xCEg\xF1Ji\x97\xE6 H\xD8]\x7F~\xAEq N\xAE\xC0V\xA9\x91<\x82r\xE7v\xEC)I\xD6]-\x83\xE3\xDB6\xA9;f\x97\x87j\xD5\xB6=P^R\xB9K\xC7sWx\xC9\xF4.Y\x07\x95\x93o\xD0KW>''\xC7\`\xDB;\xED\x9ASD>?\x8D\x92mw\xA2 +\xEB?R\xA8\xC6U^1I7\x85\xF4\xC5&-\xA9\xBF\x8B'T\xDA\xC3j \xE5*x\xB0\xD6\x90pr\xAA\x8Bh\xBD\x88\xF7_H\xB1~\xC0XL?f\xF9>\xE1e\xC0p\xA7\xCF8i\xAF\xF0VldI\x9C'\xADxtO\xC2\x87\xDEV9\0\xDAw\v\xCB-\x1B\x89\xFB5O\xF5\bQ\`\xC1 +ZGM&30x\xDA\xC0\x9CFG\xE2[y\`In7gS +>\xE9\xECF9\xB2\xF14\r\xC6\x84Sun\xE1\fY\xD9\xDE)\x85{II\xA5wy\xBEIV.6\xE7\v:\xBBOb{\xD2M1\x95/\xBD8{\xA8O!\xE1\xECFpv\x95})"x\x88 +\x90\xDD\x9D\\\xDA\xDEQ\xCF\xF0\xFCYRe|3\xDF\xF3H\xDA\xBB*u\xDB\`\xB2\xD4\xFC\xED\x1B\xEC\x7F5\xA8\xFF(1\x07-\xC8\xDC\x88F|\x8A["`);function cf(e){this.imageryPresent=!0,this.protoImagery=void 0,this.terrainPresent=!0,this.negativeAltitudeExponentBias=32,this.negativeAltitudeThreshold=D.EPSILON12,this.providers={},this.key=void 0,this._resource=void 0,this._quadPacketVersion=1,this._tileInfo={},this._subtreePromises={}}Object.defineProperties(cf.prototype,{url:{get:function(){return this._resource.url}},proxy:{get:function(){return this._resource.proxy}},resource:{get:function(){return this._resource}}});cf.fromUrl=async function(e){let t=e;typeof t!="string"&&!(t instanceof we)&&(t=e.url);let n=we.createIfNeeded(t);n.appendForwardSlash();let i=new cf;i._resource=n;try{await LTt(i),await i.getQuadTreePacket("",i._quadPacketVersion)}catch(o){let r=`An error occurred while accessing ${lbe(i,"",1).url}: ${o}`;throw new ce(r)}return i};cf.tileXYToQuadKey=function(e,t,n){let i="";for(let o=n;o>=0;--o){let r=1<<o,s=0;Tl(t,r)?Tl(e,r)&&(s|=1):(s|=2,Tl(e,r)||(s|=1)),i+=s}return i};cf.quadKeyToTileXY=function(e){let t=0,n=0,i=e.length-1;for(let o=i;o>=0;--o){let r=1<<o,s=+e[i-o];Tl(s,2)?Tl(s,1)||(t|=r):(n|=r,Tl(s,1)&&(t|=r))}return{x:t,y:n,level:i}};cf.prototype.isValid=function(e){let t=this.getTileInformationFromQuadKey(e);if(l(t))return t!==null;let n=!0,i=e,o;for(;i.length>1;)if(o=i.substring(i.length-1),i=i.substring(0,i.length-1),t=this.getTileInformationFromQuadKey(i),l(t)){!t.hasSubtree()&&!t.hasChild(parseInt(o))&&(n=!1);break}else if(t===null){n=!1;break}return n};var cbe=new mi("decodeGoogleEarthEnterprisePacket");cf.prototype.getQuadTreePacket=function(e,t,n){t=t??1,e=e??"";let o=lbe(this,e,t,n).fetchArrayBuffer();if(!l(o))return;let r=this._tileInfo,s=this.key;return o.then(function(a){return cbe.scheduleTask({buffer:a,quadKey:e,type:"Metadata",key:s},[a]).then(function(u){let f,h=-1;if(e!==""){h=e.length+1;let m=u[e];f=r[e],f._bits|=m._bits,delete u[e]}let A=Object.keys(u);A.sort(function(m,_){return m.length-_.length});let g=A.length;for(let m=0;m<g;++m){let _=A[m];if(u[_]!==null){let C=v4.clone(u[_]),E=_.length;if(E===h)C.setParent(f);else if(E>1){let I=r[_.substring(0,_.length-1)];C.setParent(I)}r[_]=C}else r[_]=null}})})};cf.prototype.populateSubtree=function(e,t,n,i){let o=cf.tileXYToQuadKey(e,t,n);return pZ(this,o,i)};function pZ(e,t,n){let i=e._tileInfo,o=t,r=i[o];if(l(r)&&(!r.hasSubtree()||r.hasChildren()))return r;for(;r===void 0&&o.length>1;)o=o.substring(0,o.length-1),r=i[o];let s,a=e._subtreePromises,c=a[o];if(l(c))return c.then(function(){return s=new pr({throttle:n.throttle,throttleByServer:n.throttleByServer,type:n.type,priorityFunction:n.priorityFunction}),pZ(e,t,s)});if(!l(r)||!r.hasSubtree())return Promise.reject(new ce(`Couldn't load metadata for tile ${t}`));if(c=e.getQuadTreePacket(o,r.cnodeVersion,n),!!l(c))return a[o]=c,c.then(function(){return s=new pr({throttle:n.throttle,throttleByServer:n.throttleByServer,type:n.type,priorityFunction:n.priorityFunction}),pZ(e,t,s)}).finally(function(){delete a[o]})}cf.prototype.getTileInformation=function(e,t,n){let i=cf.tileXYToQuadKey(e,t,n);return this._tileInfo[i]};cf.prototype.getTileInformationFromQuadKey=function(e){return this._tileInfo[e]};function lbe(e,t,n,i){return e._resource.getDerivedResource({url:`flatfile?q2-0${t}-q.${n.toString()}`,request:i})}var mZ,AZ;function LTt(e){let t=e._resource.getDerivedResource({url:"dbRoot.v5",queryParameters:{output:"proto"}});if(!l(AZ)){let n=fn("ThirdParty/google-earth-dbroot-parser.js"),i=window.cesiumGoogleEarthDbRootParser;AZ=q0(n).then(function(){mZ=window.cesiumGoogleEarthDbRootParser(RTt),l(i)?window.cesiumGoogleEarthDbRootParser=i:delete window.cesiumGoogleEarthDbRootParser})}return AZ.then(function(){return t.fetchArrayBuffer()}).then(function(n){let i=mZ.EncryptedDbRootProto.decode(new Uint8Array(n)),o=i.encryptionData,r=o.byteOffset,s=r+o.byteLength,a=e.key=o.buffer.slice(r,s);o=i.dbrootData,r=o.byteOffset,s=r+o.byteLength;let c=o.buffer.slice(r,s);return cbe.scheduleTask({buffer:c,type:"DbRoot",key:a},[c])}).then(function(n){let i=mZ.DbRootProto.decode(new Uint8Array(n.buffer));if(e.imageryPresent=i.imageryPresent??e.imageryPresent,e.protoImagery=i.protoImagery,e.terrainPresent=i.terrainPresent??e.terrainPresent,l(i.endSnippet)&&l(i.endSnippet.model)){let a=i.endSnippet.model;e.negativeAltitudeExponentBias=a.negativeAltitudeExponentBias??e.negativeAltitudeExponentBias,e.negativeAltitudeThreshold=a.compressedNegativeAltitudeThreshold??e.negativeAltitudeThreshold}l(i.databaseVersion)&&(e._quadPacketVersion=i.databaseVersion.quadtreeVersion??e._quadPacketVersion);let o=e.providers,r=i.providerInfo??[],s=r.length;for(let a=0;a<s;++a){let c=r[a],u=c.copyrightString;l(u)&&(o[c.providerId]=new Dt(u.value))}}).catch(function(){console.log(`Failed to retrieve ${t.url}. Using defaults.`),e.key=NTt})}var Yy=cf;function B0(e){e=e??V.EMPTY_OBJECT,this._buffer=e.buffer,this._credits=e.credits,this._negativeAltitudeExponentBias=e.negativeAltitudeExponentBias,this._negativeElevationThreshold=e.negativeElevationThreshold;let t=e.childTileMask??15,n=t&3;n|=t&4?8:0,n|=t&8?4:0,this._childTileMask=n,this._createdByUpsampling=e.createdByUpsampling??!1,this._skirtHeight=void 0,this._bufferType=this._buffer.constructor,this._mesh=void 0,this._minimumHeight=void 0,this._maximumHeight=void 0}Object.defineProperties(B0.prototype,{credits:{get:function(){return this._credits}},waterMask:{get:function(){}}});var dbe="createVerticesFromGoogleEarthEnterpriseBuffer",OTt=new mi(dbe),FTt=new mi(dbe,fA.maximumAsynchronousTasks),ube=new ae,gZ=new ae;B0.prototype.createMesh=function(e){e=e??V.EMPTY_OBJECT;let t=e.tilingScheme,n=e.x,i=e.y,o=e.level,r=e.exaggeration??1,s=e.exaggerationRelativeHeight??0,a=e.throttle??!0,c=t.ellipsoid;t.tileXYToNativeRectangle(n,i,o,ube),t.tileXYToRectangle(n,i,o,gZ);let u=c.cartographicToCartesian(ae.center(gZ)),h=40075.16/(1<<o);this._skirtHeight=Math.min(h*8,1e3);let g=(a?FTt:OTt).scheduleTask({buffer:this._buffer,nativeRectangle:ube,rectangle:gZ,relativeToCenter:u,ellipsoid:c,skirtHeight:this._skirtHeight,exaggeration:r,exaggerationRelativeHeight:s,includeWebMercatorT:!0,negativeAltitudeExponentBias:this._negativeAltitudeExponentBias,negativeElevationThreshold:this._negativeElevationThreshold});if(!l(g))return;let m=this;return g.then(function(_){return m._mesh=new Ph(u,new Float32Array(_.vertices),new Uint16Array(_.indices),_.indexCountWithoutSkirts,_.vertexCountWithoutSkirts,_.minimumHeight,_.maximumHeight,le.clone(_.boundingSphere3D),d.clone(_.occludeePointInScaledSpace),_.numberOfAttributes,Qn.clone(_.orientedBoundingBox),Il.clone(_.encoding),_.westIndicesSouthToNorth,_.southIndicesEastToWest,_.eastIndicesNorthToSouth,_.northIndicesWestToEast),m._minimumHeight=_.minimumHeight,m._maximumHeight=_.maximumHeight,m._buffer=void 0,m._mesh})};B0.prototype.interpolateHeight=function(e,t,n){let i=D.clamp((t-e.west)/e.width,0,1),o=D.clamp((n-e.south)/e.height,0,1);return l(this._mesh)?zTt(this,i,o):WTt(this,i,o,e)};var QTt=new mi("upsampleQuantizedTerrainMesh",fA.maximumAsynchronousTasks);B0.prototype.upsample=function(e,t,n,i,o,r,s){let a=this._mesh;if(!l(this._mesh))return;let c=t*2!==o,u=n*2===r,f=e.ellipsoid,h=e.tileXYToRectangle(o,r,s),A=QTt.scheduleTask({vertices:a.vertices,indices:a.indices,indexCountWithoutSkirts:a.indexCountWithoutSkirts,vertexCountWithoutSkirts:a.vertexCountWithoutSkirts,encoding:a.encoding,minimumHeight:this._minimumHeight,maximumHeight:this._maximumHeight,isEastChild:c,isNorthChild:u,childRectangle:h,ellipsoid:f});if(!l(A))return;let g=this;return A.then(function(m){let _=new Uint16Array(m.vertices),y=Fe.createTypedArray(_.length/3,m.indices),C=g._skirtHeight;return new mS({quantizedVertices:_,indices:y,minimumHeight:m.minimumHeight,maximumHeight:m.maximumHeight,boundingSphere:le.clone(m.boundingSphere),orientedBoundingBox:Qn.clone(m.orientedBoundingBox),horizonOcclusionPoint:d.clone(m.horizonOcclusionPoint),westIndices:m.westIndices,southIndices:m.southIndices,eastIndices:m.eastIndices,northIndices:m.northIndices,westSkirtHeight:C,southSkirtHeight:C,eastSkirtHeight:C,northSkirtHeight:C,childTileMask:0,createdByUpsampling:!0,credits:g._credits})})};B0.prototype.isChildAvailable=function(e,t,n,i){let o=2;return n!==e*2&&++o,i!==t*2&&(o-=2),(this._childTileMask&1<<o)!==0};B0.prototype.wasCreatedByUpsampling=function(){return this._createdByUpsampling};var kTt=new k,UTt=new k,GTt=new k,hbe=new d;function zTt(e,t,n){let i=e._mesh,o=i.vertices,r=i.encoding,s=i.indices;for(let a=0,c=s.length;a<c;a+=3){let u=s[a],f=s[a+1],h=s[a+2],A=r.decodeTextureCoordinates(o,u,kTt),g=r.decodeTextureCoordinates(o,f,UTt),m=r.decodeTextureCoordinates(o,h,GTt),_=Wy.computeBarycentricCoordinates(t,n,A.x,A.y,g.x,g.y,m.x,m.y,hbe);if(_.x>=-1e-15&&_.y>=-1e-15&&_.z>=-1e-15){let y=r.decodeHeight(o,u),C=r.decodeHeight(o,f),E=r.decodeHeight(o,h);return _.x*y+_.y*C+_.z*E}}}var VTt=Uint16Array.BYTES_PER_ELEMENT,fbe=Uint32Array.BYTES_PER_ELEMENT,_Z=Int32Array.BYTES_PER_ELEMENT,HTt=Float32Array.BYTES_PER_ELEMENT,yZ=Float64Array.BYTES_PER_ELEMENT;function WTt(e,t,n,i){let o=e._buffer,r=0,s=0,a=0;n>.5?(t>.5?(r=2,s=.5):r=3,a=.5):t>.5&&(r=1,s=.5);let c=new DataView(o),u=0;for(let S=0;S<r;++S)u+=c.getUint32(u,!0),u+=fbe;u+=fbe,u+=2*yZ;let f=D.toRadians(c.getFloat64(u,!0)*180);u+=yZ;let h=D.toRadians(c.getFloat64(u,!0)*180);u+=yZ;let A=i.width/f/2,g=i.height/h/2,m=c.getInt32(u,!0);u+=_Z;let _=c.getInt32(u,!0)*3;u+=_Z,u+=_Z;let y=new Array(m),C=new Array(m),E=new Array(m),I;for(I=0;I<m;++I)y[I]=s+c.getUint8(u++)*A,C[I]=a+c.getUint8(u++)*g,E[I]=c.getFloat32(u,!0)*6371010,u+=HTt;let b=new Array(_);for(I=0;I<_;++I)b[I]=c.getUint16(u,!0),u+=VTt;for(I=0;I<_;I+=3){let S=b[I],B=b[I+1],v=b[I+2],P=y[S],N=y[B],L=y[v],p=C[S],x=C[B],T=C[v],w=Wy.computeBarycentricCoordinates(t,n,P,p,N,x,L,T,hbe);if(w.x>=-1e-15&&w.y>=-1e-15&&w.z>=-1e-15)return w.x*E[S]+w.y*E[B]+w.z*E[v]}}var jP=B0;var bd={UNKNOWN:0,NONE:1,SELF:2,PARENT:3},P4=new K;function R4(){this._terrainCache={},this._lastTidy=K.now()}R4.prototype.add=function(e,t){this._terrainCache[e]={buffer:t,timestamp:K.now()}};R4.prototype.get=function(e){let n=this._terrainCache[e];if(l(n))return delete this._terrainCache[e],n.buffer};R4.prototype.tidy=function(){if(K.now(P4),K.secondsDifference(P4,this._lastTidy)>10){let e=this._terrainCache,t=Object.keys(e),n=t.length;for(let i=0;i<n;++i){let o=t[i],r=e[o];K.secondsDifference(P4,r.timestamp)>10&&delete e[o]}K.clone(P4,this._lastTidy)}};function qy(e){e=e??V.EMPTY_OBJECT,this._tilingScheme=new co({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new ae(-D.PI,-D.PI,D.PI,D.PI),ellipsoid:e.ellipsoid});let t=e.credit;typeof t=="string"&&(t=new Dt(t)),this._credit=t,this._levelZeroMaximumGeometricError=40075.16,this._terrainCache=new R4,this._terrainPromises={},this._terrainRequests={},this._errorEvent=new _e}Object.defineProperties(qy.prototype,{url:{get:function(){return this._metadata.url}},proxy:{get:function(){return this._metadata.proxy}},tilingScheme:{get:function(){return this._tilingScheme}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});qy.fromMetadata=function(e,t){if(!e.terrainPresent)throw new ce(`The server ${e.url} doesn't have terrain`);let n=new qy(t);return n._metadata=e,n};var jTt=new mi("decodeGoogleEarthEnterprisePacket");function mbe(e,t,n){let i=t.getChildBitmask();if(t.terrainState===bd.PARENT){i=0;for(let o=0;o<4;++o){let r=n.getTileInformationFromQuadKey(e+o.toString());l(r)&&r.hasTerrain()&&(i|=1<<o)}}return i}qy.prototype.requestTileGeometry=function(e,t,n,i){let o=Yy.tileXYToQuadKey(e,t,n),r=this._terrainCache,s=this._metadata,a=s.getTileInformationFromQuadKey(o);if(!l(a))return Promise.reject(new ce("Terrain tile doesn't exist"));let c=a.terrainState;l(c)||(c=a.terrainState=bd.UNKNOWN);let u=r.get(o);if(l(u)){let C=s.providers[a.terrainProvider];return Promise.resolve(new jP({buffer:u,childTileMask:mbe(o,a,s),credits:l(C)?[C]:void 0,negativeAltitudeExponentBias:s.negativeAltitudeExponentBias,negativeElevationThreshold:s.negativeAltitudeThreshold}))}if(r.tidy(),a.ancestorHasTerrain){if(c===bd.NONE)return Promise.reject(new ce("Terrain tile doesn't exist"))}else return Promise.resolve(new Qc({buffer:new Uint8Array(256),width:16,height:16}));let f,h=o,A=-1;switch(c){case bd.SELF:A=a.terrainVersion;break;case bd.PARENT:h=h.substring(0,h.length-1),f=s.getTileInformationFromQuadKey(h),A=f.terrainVersion;break;case bd.UNKNOWN:a.hasTerrain()?A=a.terrainVersion:(h=h.substring(0,h.length-1),f=s.getTileInformationFromQuadKey(h),l(f)&&f.hasTerrain()&&(A=f.terrainVersion));break}if(A<0)return Promise.reject(new ce("Terrain tile doesn't exist"));let g=this._terrainPromises,m=this._terrainRequests,_,y;if(l(g[h]))_=g[h],y=m[h];else{y=i;let C=YTt(this,h,A,y).fetchArrayBuffer();if(!l(C))return;_=C.then(function(E){return l(E)?jTt.scheduleTask({buffer:E,type:"Terrain",key:s.key},[E]).then(function(I){let b=s.getTileInformationFromQuadKey(h);b.terrainState=bd.SELF,r.add(h,I[0]);let S=b.terrainProvider,B=I.length-1;for(let v=0;v<B;++v){let P=h+v.toString(),N=s.getTileInformationFromQuadKey(P);l(N)&&(r.add(P,I[v+1]),N.terrainState=bd.PARENT,N.terrainProvider===0&&(N.terrainProvider=S))}}):Promise.reject(new ce("Failed to load terrain."))}),g[h]=_,m[h]=y,_=_.finally(function(){delete g[h],delete m[h]})}return _.then(function(){let C=r.get(o);if(l(C)){let E=s.providers[a.terrainProvider];return new jP({buffer:C,childTileMask:mbe(o,a,s),credits:l(E)?[E]:void 0,negativeAltitudeExponentBias:s.negativeAltitudeExponentBias,negativeElevationThreshold:s.negativeAltitudeThreshold})}return Promise.reject(new ce("Failed to load terrain."))}).catch(function(C){return y.state===hi.CANCELLED?(i.state=y.state,Promise.reject(C)):(a.terrainState=bd.NONE,Promise.reject(C))})};qy.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};qy.prototype.getTileDataAvailable=function(e,t,n){let i=this._metadata,o=Yy.tileXYToQuadKey(e,t,n),r=i.getTileInformation(e,t,n);if(r===null)return!1;if(l(r)){if(!r.ancestorHasTerrain)return!0;let s=r.terrainState;if(s===bd.NONE)return!1;if((!l(s)||s===bd.UNKNOWN)&&(r.terrainState=bd.UNKNOWN,!r.hasTerrain())){o=o.substring(0,o.length-1);let a=i.getTileInformationFromQuadKey(o);if(!l(a)||!a.hasTerrain())return!1}return!0}if(i.isValid(o)){let s=new pr({throttle:!1,throttleByServer:!0,type:Us.TERRAIN});i.populateSubtree(e,t,n,s)}return!1};qy.prototype.loadTileDataAvailability=function(e,t,n){};function YTt(e,t,n,i){return n=l(n)&&n>0?n:1,e._metadata.resource.getDerivedResource({url:`flatfile?f1c-0${t}-t.${n.toString()}`,request:i})}var Abe=qy;var qTt="https://maps.googleapis.com/maps/api/geocode/json",pbe='<img alt="Google" src="https://assets.ion.cesium.com/google-credit.png" style="vertical-align:-5px">';function CZ(e){e=e??V.EMPTY_OBJECT;let t=e.key;this._resource=new we({url:qTt,queryParameters:{key:t}}),this._credit=new Dt(pbe,!0)}Object.defineProperties(CZ.prototype,{credit:{get:function(){return this._credit}}});CZ.prototype.geocode=async function(e){let n=await this._resource.getDerivedResource({queryParameters:{address:e}}).fetchJson();if(n.status==="ZERO_RESULTS")return[];if(n.status!=="OK")throw new ce(`GoogleGeocoderService got a bad response ${n.status}: ${n.error_message}`);return n.results.map(o=>{let r=o.geometry.viewport.southwest,s=o.geometry.viewport.northeast;return{displayName:o.formatted_address,destination:ae.fromDegrees(r.lng,r.lat,s.lng,s.lat),attribution:{html:pbe,collapsible:!1}}})};var gbe=CZ;var M4={};M4.defaultApiKey=void 0;M4.mapTilesApiEndpoint=new we({url:"https://tile.googleapis.com/v1/"});M4.getDefaultCredit=function(){return new Dt('<img src="https://assets.ion.cesium.com/google-credit.png" style="vertical-align: -5px" alt="Google">',!0)};var _S=M4;var Ls={};Ls.ExportStatus=Object.freeze({NotStarted:"NotStarted",InProgress:"InProgress",Complete:"Complete",Invalid:"Invalid"});Ls.ExportType=Object.freeze({IMODEL:"IMODEL",CESIUM:"CESIUM","3DTILES":"3DTILES"});Ls.RealityDataType=Object.freeze({Cesium3DTiles:"Cesium3DTiles",PNTS:"PNTS",RealityMesh3DTiles:"RealityMesh3DTiles",Terrain3DTiles:"Terrain3DTiles",KML:"KML",GeoJSON:"GeoJSON",Unstructured:"Unstructured"});Ls.defaultAccessToken=void 0;Ls.defaultShareKey=void 0;Ls._getAuthorizationHeader=function(){return l(Ls.defaultShareKey)?`Basic ${Ls.defaultShareKey}`:`Bearer ${Ls.defaultAccessToken}`};Ls.apiEndpoint=new we({url:"https://api.bentley.com"});Ls.getExports=async function(e,t){let n=new we({url:`${Ls.apiEndpoint}mesh-export`,headers:{Authorization:Ls._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json",Prefer:"return=representation"},queryParameters:{iModelId:e,exportType:Ls.ExportType["3DTILES"],$top:"5",client:"CesiumJS"}});typeof CESIUM_VERSION<"u"&&n.appendQueryParameters({clientVersion:CESIUM_VERSION}),l(t)&&t!==""&&n.appendQueryParameters({changesetId:t});try{return await n.fetchJson()}catch(i){let o=JSON.parse(i.response);if(i.statusCode===401){let r=o.error.details?.[0].code??"";throw new ce(`Unauthorized, bad token, wrong scopes or headers bad. ${r}`)}else{if(i.statusCode===403)throw console.error(o.error.code,o.error.message),new ce("Not allowed, forbidden");if(i.statusCode===422)throw new ce(`Unprocessable Entity:${o.error.code} ${o.error.message}`);if(i.statusCode===429)throw new ce("Too many requests")}throw new ce(`Unknown request failure ${i.statusCode}`)}};Ls.getRealityDataMetadata=async function(e,t){let n=new we({url:`${Ls.apiEndpoint}reality-management/reality-data/${t}`,headers:{Authorization:Ls._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{iTwinId:e}});try{return(await n.fetchJson()).realityData}catch(i){let o=JSON.parse(i.response);if(i.statusCode===401){let r=o.error.details?.[0].code??"";throw new ce(`Unauthorized, bad token, wrong scopes or headers bad. ${r}`)}else{if(i.statusCode===403)throw console.error(o.error.code,o.error.message),new ce("Not allowed, forbidden");if(i.statusCode===404)throw new ce(`Reality data not found: ${e}, ${t}`);if(i.statusCode===422)throw new ce(`Unprocessable Entity:${o.error.code} ${o.error.message}`);if(i.statusCode===429)throw new ce("Too many requests")}throw new ce(`Unknown request failure ${i.statusCode}`)}};Ls.getRealityDataURL=async function(e,t,n){let i=new we({url:`${Ls.apiEndpoint}reality-management/reality-data/${t}/readaccess`,headers:{Authorization:Ls._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{iTwinId:e}});try{let r=(await i.fetchJson())._links.containerUrl.href,s=new URL(r);return s.pathname=`${s.pathname}/${n}`,s.toString()}catch(o){let r=JSON.parse(o.response);if(o.statusCode===401){let s=r.error.details?.[0].code??"";throw new ce(`Unauthorized, bad token, wrong scopes or headers bad. ${s}`)}else{if(o.statusCode===403)throw console.error(r.error.code,r.error.message),new ce("Not allowed, forbidden");if(o.statusCode===404)throw new ce(`Reality data not found: ${e}, ${t}`);if(o.statusCode===422)throw new ce(`Unprocessable Entity:${r.error.code} ${r.error.message}`);if(o.statusCode===429)throw new ce("Too many requests")}throw new ce(`Unknown request failure ${o.statusCode}`)}};var _a=Ls;var YP={};YP.type=void 0;YP.getRequiredDataPoints=me.throwInstantiationError;YP.interpolateOrderZero=me.throwInstantiationError;YP.interpolate=me.throwInstantiationError;var _be=YP;var KTt={GOOGLE:"GOOGLE",BING:"BING",DEFAULT:"DEFAULT"},Ky=Object.freeze(KTt);function EZ(e){this._url=we.createIfNeeded(e),this._url.appendForwardSlash()}Object.defineProperties(EZ.prototype,{url:{get:function(){return this._url}},credit:{get:function(){}}});EZ.prototype.geocode=async function(e,t){return this._url.getDerivedResource({url:t===w0.AUTOCOMPLETE?"autocomplete":"search",queryParameters:{text:e}}).fetchJson().then(function(i){return i.features.map(function(o){let r,s=o.bbox;if(l(s))r=ae.fromDegrees(s[0],s[1],s[2],s[3]);else{let a=o.geometry.coordinates[0],c=o.geometry.coordinates[1];r=d.fromDegrees(a,c)}return{displayName:o.properties.label,destination:r,attributions:i.attributions}})})};var N4=EZ;function XTt(e){if(!Object.values(Ky).some(t=>t===e))throw new me(`Invalid geocodeProviderType: "${e}"`)}var ybe=Object.freeze({[Ky.GOOGLE]:"google",[Ky.BING]:"bing",[Ky.DEFAULT]:void 0});function JTt(e){return ybe[e]}function ZTt(e){return Object.entries(ybe).find(t=>t[1]===e)[0]}function IZ(e){e=e??V.EMPTY_OBJECT;let t=e.geocodeProviderType??Ky.DEFAULT,n=e.accessToken??mm.defaultAccessToken,i=we.createIfNeeded(e.server??mm.defaultServer);i.appendForwardSlash();let o=mm.getDefaultTokenCredit(n);l(o)&&e.scene.frameState.creditDisplay.addStaticCredit(Dt.clone(o));let r=i.getDerivedResource({url:"v1/geocode"});l(n)&&r.appendQueryParameters({access_token:n}),this._accessToken=n,this._server=i,this._pelias=new N4(r),this.geocodeProviderType=t}Object.defineProperties(IZ.prototype,{credit:{get:function(){}},geocodeProviderType:{get:function(){return ZTt(this._pelias.url.queryParameters.geocoder)},set:function(e){XTt(e);let t={...this._pelias.url.queryParameters,geocoder:JTt(e)};l(t.geocoder)||delete t.geocoder,this._pelias.url.setQueryParameters(t)}}});IZ.prototype.geocode=async function(e,t){return this._pelias.geocode(e,t)};var yS=IZ;function L4(){me.throwInstantiationError()}Object.defineProperties(L4.prototype,{ellipsoid:{get:me.throwInstantiationError}});L4.prototype.project=me.throwInstantiationError;L4.prototype.unproject=me.throwInstantiationError;var Cbe=L4;function CS(e){e=e??V.EMPTY_OBJECT;let t=e.weights,n=e.times;this._times=n,this._weights=t,this._count=t.length/n.length,this._lastTimeIndex=0}Object.defineProperties(CS.prototype,{times:{get:function(){return this._times}},weights:{get:function(){return this._weights}}});CS.prototype.findTimeInterval=_o.prototype.findTimeInterval;CS.prototype.wrapTime=_o.prototype.wrapTime;CS.prototype.clampTime=_o.prototype.clampTime;CS.prototype.evaluate=function(e,t){let n=this.weights,i=this.times,o=this._lastTimeIndex=this.findTimeInterval(e,this._lastTimeIndex),r=(e-i[o])/(i[o+1]-i[o]);l(t)||(t=new Array(this._count));for(let s=0;s<this._count;s++){let a=o*this._count+s;t[s]=n[a]*(1-r)+n[a+this._count]*r}return t};var Ebe=CS;function xZ(e,t,n){e=we.createIfNeeded(e),e.appendForwardSlash(),e.setQueryParameters({key:t}),this._url=e,this._params=n??{},this._credit=new Dt('Geodata copyright <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors',!1)}Object.defineProperties(xZ.prototype,{url:{get:function(){return this._url}},params:{get:function(){return this._params}},credit:{get:function(){return this._credit}}});xZ.prototype.geocode=async function(e){return this._url.getDerivedResource({url:"json",queryParameters:wt(this._params,{q:e})}).fetchJson().then(function(n){return n.results.map(function(i){let o,r=i.bounds;if(l(r))o=ae.fromDegrees(r.southwest.lng,r.southwest.lat,r.northeast.lng,r.northeast.lat);else{let s=i.geometry.lat,a=i.geometry.lng;o=d.fromDegrees(s,a)}return{displayName:i.formatted,destination:o}})})};var Ibe=xZ;var $Tt={packedLength:void 0,pack:me.throwInstantiationError,unpack:me.throwInstantiationError},xbe=$Tt;var eSt={packedInterpolationLength:void 0,convertPackedArrayForInterpolation:me.throwInstantiationError,unpackInterpolationResult:me.throwInstantiationError},bbe=eSt;function Tbe(){me.throwInstantiationError()}Tbe.prototype.getURL=me.throwInstantiationError;var Sbe=Tbe;function tSt(e,t,n,i,o,r,s){let a=Xi.numberOfPoints(e,t,o),c,u=n.red,f=n.green,h=n.blue,A=n.alpha,g=i.red,m=i.green,_=i.blue,y=i.alpha;if(G.equals(n,i)){for(c=0;c<a;c++)r[s++]=G.floatToByte(u),r[s++]=G.floatToByte(f),r[s++]=G.floatToByte(h),r[s++]=G.floatToByte(A);return s}let C=(g-u)/a,E=(m-f)/a,I=(_-h)/a,b=(y-A)/a,S=s;for(c=0;c<a;c++)r[S++]=G.floatToByte(u+c*C),r[S++]=G.floatToByte(f+c*E),r[S++]=G.floatToByte(h+c*I),r[S++]=G.floatToByte(A+c*b);return S}function qP(e){e=e??V.EMPTY_OBJECT;let t=e.positions,n=e.colors,i=e.colorsPerVertex??!1;this._positions=t,this._colors=n,this._colorsPerVertex=i,this._arcType=e.arcType??un.GEODESIC,this._granularity=e.granularity??D.RADIANS_PER_DEGREE,this._ellipsoid=e.ellipsoid??te.default,this._workerName="createSimplePolylineGeometry";let o=1+t.length*d.packedLength;o+=l(n)?1+n.length*G.packedLength:1,this.packedLength=o+te.packedLength+3}qP.pack=function(e,t,n){n=n??0;let i,o=e._positions,r=o.length;for(t[n++]=r,i=0;i<r;++i,n+=d.packedLength)d.pack(o[i],t,n);let s=e._colors;for(r=l(s)?s.length:0,t[n++]=r,i=0;i<r;++i,n+=G.packedLength)G.pack(s[i],t,n);return te.pack(e._ellipsoid,t,n),n+=te.packedLength,t[n++]=e._colorsPerVertex?1:0,t[n++]=e._arcType,t[n]=e._granularity,t};qP.unpack=function(e,t,n){t=t??0;let i,o=e[t++],r=new Array(o);for(i=0;i<o;++i,t+=d.packedLength)r[i]=d.unpack(e,t);o=e[t++];let s=o>0?new Array(o):void 0;for(i=0;i<o;++i,t+=G.packedLength)s[i]=G.unpack(e,t);let a=te.unpack(e,t);t+=te.packedLength;let c=e[t++]===1,u=e[t++],f=e[t];return l(n)?(n._positions=r,n._colors=s,n._ellipsoid=a,n._colorsPerVertex=c,n._arcType=u,n._granularity=f,n):new qP({positions:r,colors:s,ellipsoid:a,colorsPerVertex:c,arcType:u,granularity:f})};var O4=new Array(2),F4=new Array(2),nSt={positions:O4,height:F4,ellipsoid:void 0,minDistance:void 0,granularity:void 0};qP.createGeometry=function(e){let t=e._positions,n=e._colors,i=e._colorsPerVertex,o=e._arcType,r=e._granularity,s=e._ellipsoid,a=D.chordLength(r,s.maximumRadius),c=l(n)&&!i,u,f=t.length,h,A,g,m,_=0;if(o===un.GEODESIC||o===un.RHUMB){let b,S,B;o===un.GEODESIC?(b=D.chordLength(r,s.maximumRadius),S=Xi.numberOfPoints,B=Xi.generateArc):(b=r,S=Xi.numberOfPointsRhumbLine,B=Xi.generateRhumbArc);let v=Xi.extractHeights(t,s),P=nSt;if(o===un.GEODESIC?P.minDistance=a:P.granularity=r,P.ellipsoid=s,c){let N=0;for(u=0;u<f-1;u++)N+=S(t[u],t[u+1],b)+1;h=new Float64Array(N*3),g=new Uint8Array(N*4),P.positions=O4,P.height=F4;let L=0;for(u=0;u<f-1;++u){O4[0]=t[u],O4[1]=t[u+1],F4[0]=v[u],F4[1]=v[u+1];let p=B(P);if(l(n)){let x=p.length/3;m=n[u];for(let T=0;T<x;++T)g[L++]=G.floatToByte(m.red),g[L++]=G.floatToByte(m.green),g[L++]=G.floatToByte(m.blue),g[L++]=G.floatToByte(m.alpha)}h.set(p,_),_+=p.length}}else if(P.positions=t,P.height=v,h=new Float64Array(B(P)),l(n)){for(g=new Uint8Array(h.length/3*4),u=0;u<f-1;++u){let L=t[u],p=t[u+1],x=n[u],T=n[u+1];_=tSt(L,p,x,T,a,g,_)}let N=n[f-1];g[_++]=G.floatToByte(N.red),g[_++]=G.floatToByte(N.green),g[_++]=G.floatToByte(N.blue),g[_++]=G.floatToByte(N.alpha)}}else{A=c?f*2-2:f,h=new Float64Array(A*3),g=l(n)?new Uint8Array(A*4):void 0;let b=0,S=0;for(u=0;u<f;++u){let B=t[u];if(c&&u>0&&(d.pack(B,h,b),b+=3,m=n[u-1],g[S++]=G.floatToByte(m.red),g[S++]=G.floatToByte(m.green),g[S++]=G.floatToByte(m.blue),g[S++]=G.floatToByte(m.alpha)),c&&u===f-1)break;d.pack(B,h,b),b+=3,l(n)&&(m=n[u],g[S++]=G.floatToByte(m.red),g[S++]=G.floatToByte(m.green),g[S++]=G.floatToByte(m.blue),g[S++]=G.floatToByte(m.alpha))}}let y=new En;y.position=new De({componentDatatype:q.DOUBLE,componentsPerAttribute:3,values:h}),l(n)&&(y.color=new De({componentDatatype:q.UNSIGNED_BYTE,componentsPerAttribute:4,values:g,normalize:!0})),A=h.length/3;let C=(A-1)*2,E=Fe.createTypedArray(A,C),I=0;for(u=0;u<A-1;++u)E[I++]=u,E[I++]=u+1;return new ht({attributes:y,indices:E,primitiveType:Me.LINES,boundingSphere:le.fromPoints(t)})};var wbe=qP;function ES(e){let t=e.radius??1,i={radii:new d(t,t,t),stackPartitions:e.stackPartitions,slicePartitions:e.slicePartitions,vertexFormat:e.vertexFormat};this._ellipsoidGeometry=new ka(i),this._workerName="createSphereGeometry"}ES.packedLength=ka.packedLength;ES.pack=function(e,t,n){return ka.pack(e._ellipsoidGeometry,t,n)};var iSt=new ka,Xy={radius:void 0,radii:new d,vertexFormat:new Pe,stackPartitions:void 0,slicePartitions:void 0};ES.unpack=function(e,t,n){let i=ka.unpack(e,t,iSt);return Xy.vertexFormat=Pe.clone(i._vertexFormat,Xy.vertexFormat),Xy.stackPartitions=i._stackPartitions,Xy.slicePartitions=i._slicePartitions,l(n)?(d.clone(i._radii,Xy.radii),n._ellipsoidGeometry=new ka(Xy),n):(Xy.radius=i._radii.x,new ES(Xy))};ES.createGeometry=function(e){return ka.createGeometry(e._ellipsoidGeometry)};var Bbe=ES;function Jy(e){}Object.defineProperties(Jy.prototype,{ellipsoid:{get:me.throwInstantiationError},rectangle:{get:me.throwInstantiationError},projection:{get:me.throwInstantiationError}});Jy.prototype.getNumberOfXTilesAtLevel=me.throwInstantiationError;Jy.prototype.getNumberOfYTilesAtLevel=me.throwInstantiationError;Jy.prototype.rectangleToNativeRectangle=me.throwInstantiationError;Jy.prototype.tileXYToNativeRectangle=me.throwInstantiationError;Jy.prototype.tileXYToRectangle=me.throwInstantiationError;Jy.prototype.positionToTileXY=me.throwInstantiationError;var Dbe=Jy;function oSt(e,t){this.rectangle=e,this.maxLevel=t}function vbe(e){this.ellipsoid=e.ellipsoid??te.default,this.tilingScheme=void 0,this.heightmapWidth=void 0,this.heightmapHeight=void 0,this.levelZeroMaximumGeometricError=void 0,this.rectangles=[]}vbe.prototype.build=function(e){e._tilingScheme=this.tilingScheme,e._heightmapWidth=this.heightmapWidth,e._heightmapHeight=this.heightmapHeight,e._levelZeroMaximumGeometricError=this.levelZeroMaximumGeometricError,e._rectangles=this.rectangles};function rSt(e,t){let n=t.getElementsByTagName("SRS")[0].textContent;if(n==="EPSG:4326")e.tilingScheme=new co({ellipsoid:e.ellipsoid});else throw new ce(`SRS ${n} is not supported`);let i=t.getElementsByTagName("TileFormat")[0];e.heightmapWidth=parseInt(i.getAttribute("width"),10),e.heightmapHeight=parseInt(i.getAttribute("height"),10),e.levelZeroMaximumGeometricError=Bs.getEstimatedLevelZeroGeometricErrorForAHeightmap(e.ellipsoid,Math.min(e.heightmapWidth,e.heightmapHeight),e.tilingScheme.getNumberOfXTilesAtLevel(0));let o=t.getElementsByTagName("DataExtent");for(let r=0;r<o.length;++r){let s=o[r],a=D.toRadians(parseFloat(s.getAttribute("minx"))),c=D.toRadians(parseFloat(s.getAttribute("miny"))),u=D.toRadians(parseFloat(s.getAttribute("maxx"))),f=D.toRadians(parseFloat(s.getAttribute("maxy"))),h=parseInt(s.getAttribute("maxlevel"),10);e.rectangles.push(new oSt(new ae(a,c,u,f),h))}}function sSt(e,t,n){let i=`An error occurred while accessing ${e.url}`;throw l(t)&&l(t.message)&&(i=`${i}: ${t.message}`),zo.reportError(void 0,n,l(n)?n._errorEvent:void 0,i),new ce(i)}async function aSt(e,t,n){try{let i=await t.fetchXML();rSt(e,i)}catch(i){sSt(t,i,n)}}function Zy(e){e=e??V.EMPTY_OBJECT,this._errorEvent=new _e,this._terrainDataStructure={heightScale:1/1e3,heightOffset:-1e3,elementsPerHeight:3,stride:4,elementMultiplier:256,isBigEndian:!0,lowestEncodedHeight:0,highestEncodedHeight:256*256*256-1};let t=e.credit;typeof t=="string"&&(t=new Dt(t)),this._credit=t,this._tilingScheme=void 0,this._rectangles=[]}Object.defineProperties(Zy.prototype,{errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},tilingScheme:{get:function(){return this._tilingScheme}},hasWaterMask:{get:function(){return!1}},hasVertexNormals:{get:function(){return!1}},availability:{get:function(){}}});Zy.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=new vbe(t),i=we.createIfNeeded(e);await aSt(n,i);let o=new Zy(t);return n.build(o),o._resource=i,o};Zy.prototype.requestTileGeometry=function(e,t,n,i){let o=this._tilingScheme.getNumberOfYTilesAtLevel(n),s=this._resource.getDerivedResource({url:`${n}/${e}/${o-t-1}.tif`,queryParameters:{cesium:!0},request:i}).fetchImage({preferImageBitmap:!0});if(!l(s))return;let a=this;return Promise.resolve(s).then(function(c){return new Qc({buffer:qh(c),width:a._heightmapWidth,height:a._heightmapHeight,childTileMask:cSt(a,e,t,n),structure:a._terrainDataStructure})})};Zy.prototype.getLevelMaximumGeometricError=function(e){return this._levelZeroMaximumGeometricError/(1<<e)};var Pbe=new ae;function cSt(e,t,n,i){let o=e._tilingScheme,r=e._rectangles,s=o.tileXYToRectangle(t,n,i),a=0;for(let c=0;c<r.length&&a!==15;++c){let u=r[c];if(u.maxLevel<=i)continue;let f=u.rectangle,h=ae.intersection(f,s,Pbe);l(h)&&(Q4(o,f,t*2,n*2,i+1)&&(a|=4),Q4(o,f,t*2+1,n*2,i+1)&&(a|=8),Q4(o,f,t*2,n*2+1,i+1)&&(a|=1),Q4(o,f,t*2+1,n*2+1,i+1)&&(a|=2))}return a}function Q4(e,t,n,i,o){let r=e.tileXYToRectangle(n,i,o);return l(ae.intersection(r,t,Pbe))}Zy.prototype.getTileDataAvailable=function(e,t,n){};Zy.prototype.loadTileDataAvailability=function(e,t,n){};var Rbe=Zy;function D0(e){e=e??V.EMPTY_OBJECT,this._clock=void 0,this._element=void 0,this._clockSubscription=void 0,this._seekFunction=void 0,this._lastPlaybackRate=void 0,this.clock=e.clock,this.element=e.element,this.epoch=e.epoch??je.MINIMUM_VALUE,this.tolerance=e.tolerance??1,this._seeking=!1,this._seekFunction=void 0,this._firstTickAfterSeek=!1}Object.defineProperties(D0.prototype,{clock:{get:function(){return this._clock},set:function(e){let t=this._clock;t!==e&&(l(t)&&(this._clockSubscription(),this._clockSubscription=void 0),l(e)&&(this._clockSubscription=e.onTick.addEventListener(D0.prototype._onTick,this)),this._clock=e)}},element:{get:function(){return this._element},set:function(e){let t=this._element;t!==e&&(l(t)&&t.removeEventListener("seeked",this._seekFunction,!1),l(e)&&(this._seeking=!1,this._seekFunction=lSt(this),e.addEventListener("seeked",this._seekFunction,!1)),this._element=e,this._seeking=!1,this._firstTickAfterSeek=!1)}}});D0.prototype.destroy=function(){return this.element=void 0,this.clock=void 0,ue(this)};D0.prototype.isDestroyed=function(){return!1};D0.prototype._trySetPlaybackRate=function(e){if(this._lastPlaybackRate===e.multiplier)return;let t=this._element;try{t.playbackRate=e.multiplier}catch{t.playbackRate=0}this._lastPlaybackRate=e.multiplier};D0.prototype._onTick=function(e){let t=this._element;if(!l(t)||t.readyState<2)return;let n=t.paused,i=e.shouldAnimate;if(i===n&&(i?t.play():t.pause()),this._seeking||this._firstTickAfterSeek){this._firstTickAfterSeek=!1;return}this._trySetPlaybackRate(e);let o=e.currentTime,r=this.epoch??je.MINIMUM_VALUE,s=K.secondsDifference(o,r),a=t.duration,c,u=t.currentTime;t.loop?(s=s%a,s<0&&(s=a-s),c=s):s>a?c=a:s<0?c=0:c=s;let f=i?this.tolerance??1:.001;Math.abs(c-u)>f&&(this._seeking=!0,t.currentTime=c)};function lSt(e){return function(){e._seeking=!1,e._firstTickAfterSeek=!0}}var Mbe=D0;var uSt={VK_FORMAT_UNDEFINED:0,VK_FORMAT_R4G4_UNORM_PACK8:1,VK_FORMAT_R4G4B4A4_UNORM_PACK16:2,VK_FORMAT_B4G4R4A4_UNORM_PACK16:3,VK_FORMAT_R5G6B5_UNORM_PACK16:4,VK_FORMAT_B5G6R5_UNORM_PACK16:5,VK_FORMAT_R5G5B5A1_UNORM_PACK16:6,VK_FORMAT_B5G5R5A1_UNORM_PACK16:7,VK_FORMAT_A1R5G5B5_UNORM_PACK16:8,VK_FORMAT_R8_UNORM:9,VK_FORMAT_R8_SNORM:10,VK_FORMAT_R8_USCALED:11,VK_FORMAT_R8_SSCALED:12,VK_FORMAT_R8_UINT:13,VK_FORMAT_R8_SINT:14,VK_FORMAT_R8_SRGB:15,VK_FORMAT_R8G8_UNORM:16,VK_FORMAT_R8G8_SNORM:17,VK_FORMAT_R8G8_USCALED:18,VK_FORMAT_R8G8_SSCALED:19,VK_FORMAT_R8G8_UINT:20,VK_FORMAT_R8G8_SINT:21,VK_FORMAT_R8G8_SRGB:22,VK_FORMAT_R8G8B8_UNORM:23,VK_FORMAT_R8G8B8_SNORM:24,VK_FORMAT_R8G8B8_USCALED:25,VK_FORMAT_R8G8B8_SSCALED:26,VK_FORMAT_R8G8B8_UINT:27,VK_FORMAT_R8G8B8_SINT:28,VK_FORMAT_R8G8B8_SRGB:29,VK_FORMAT_B8G8R8_UNORM:30,VK_FORMAT_B8G8R8_SNORM:31,VK_FORMAT_B8G8R8_USCALED:32,VK_FORMAT_B8G8R8_SSCALED:33,VK_FORMAT_B8G8R8_UINT:34,VK_FORMAT_B8G8R8_SINT:35,VK_FORMAT_B8G8R8_SRGB:36,VK_FORMAT_R8G8B8A8_UNORM:37,VK_FORMAT_R8G8B8A8_SNORM:38,VK_FORMAT_R8G8B8A8_USCALED:39,VK_FORMAT_R8G8B8A8_SSCALED:40,VK_FORMAT_R8G8B8A8_UINT:41,VK_FORMAT_R8G8B8A8_SINT:42,VK_FORMAT_R8G8B8A8_SRGB:43,VK_FORMAT_B8G8R8A8_UNORM:44,VK_FORMAT_B8G8R8A8_SNORM:45,VK_FORMAT_B8G8R8A8_USCALED:46,VK_FORMAT_B8G8R8A8_SSCALED:47,VK_FORMAT_B8G8R8A8_UINT:48,VK_FORMAT_B8G8R8A8_SINT:49,VK_FORMAT_B8G8R8A8_SRGB:50,VK_FORMAT_A8B8G8R8_UNORM_PACK32:51,VK_FORMAT_A8B8G8R8_SNORM_PACK32:52,VK_FORMAT_A8B8G8R8_USCALED_PACK32:53,VK_FORMAT_A8B8G8R8_SSCALED_PACK32:54,VK_FORMAT_A8B8G8R8_UINT_PACK32:55,VK_FORMAT_A8B8G8R8_SINT_PACK32:56,VK_FORMAT_A8B8G8R8_SRGB_PACK32:57,VK_FORMAT_A2R10G10B10_UNORM_PACK32:58,VK_FORMAT_A2R10G10B10_SNORM_PACK32:59,VK_FORMAT_A2R10G10B10_USCALED_PACK32:60,VK_FORMAT_A2R10G10B10_SSCALED_PACK32:61,VK_FORMAT_A2R10G10B10_UINT_PACK32:62,VK_FORMAT_A2R10G10B10_SINT_PACK32:63,VK_FORMAT_A2B10G10R10_UNORM_PACK32:64,VK_FORMAT_A2B10G10R10_SNORM_PACK32:65,VK_FORMAT_A2B10G10R10_USCALED_PACK32:66,VK_FORMAT_A2B10G10R10_SSCALED_PACK32:67,VK_FORMAT_A2B10G10R10_UINT_PACK32:68,VK_FORMAT_A2B10G10R10_SINT_PACK32:69,VK_FORMAT_R16_UNORM:70,VK_FORMAT_R16_SNORM:71,VK_FORMAT_R16_USCALED:72,VK_FORMAT_R16_SSCALED:73,VK_FORMAT_R16_UINT:74,VK_FORMAT_R16_SINT:75,VK_FORMAT_R16_SFLOAT:76,VK_FORMAT_R16G16_UNORM:77,VK_FORMAT_R16G16_SNORM:78,VK_FORMAT_R16G16_USCALED:79,VK_FORMAT_R16G16_SSCALED:80,VK_FORMAT_R16G16_UINT:81,VK_FORMAT_R16G16_SINT:82,VK_FORMAT_R16G16_SFLOAT:83,VK_FORMAT_R16G16B16_UNORM:84,VK_FORMAT_R16G16B16_SNORM:85,VK_FORMAT_R16G16B16_USCALED:86,VK_FORMAT_R16G16B16_SSCALED:87,VK_FORMAT_R16G16B16_UINT:88,VK_FORMAT_R16G16B16_SINT:89,VK_FORMAT_R16G16B16_SFLOAT:90,VK_FORMAT_R16G16B16A16_UNORM:91,VK_FORMAT_R16G16B16A16_SNORM:92,VK_FORMAT_R16G16B16A16_USCALED:93,VK_FORMAT_R16G16B16A16_SSCALED:94,VK_FORMAT_R16G16B16A16_UINT:95,VK_FORMAT_R16G16B16A16_SINT:96,VK_FORMAT_R16G16B16A16_SFLOAT:97,VK_FORMAT_R32_UINT:98,VK_FORMAT_R32_SINT:99,VK_FORMAT_R32_SFLOAT:100,VK_FORMAT_R32G32_UINT:101,VK_FORMAT_R32G32_SINT:102,VK_FORMAT_R32G32_SFLOAT:103,VK_FORMAT_R32G32B32_UINT:104,VK_FORMAT_R32G32B32_SINT:105,VK_FORMAT_R32G32B32_SFLOAT:106,VK_FORMAT_R32G32B32A32_UINT:107,VK_FORMAT_R32G32B32A32_SINT:108,VK_FORMAT_R32G32B32A32_SFLOAT:109,VK_FORMAT_R64_UINT:110,VK_FORMAT_R64_SINT:111,VK_FORMAT_R64_SFLOAT:112,VK_FORMAT_R64G64_UINT:113,VK_FORMAT_R64G64_SINT:114,VK_FORMAT_R64G64_SFLOAT:115,VK_FORMAT_R64G64B64_UINT:116,VK_FORMAT_R64G64B64_SINT:117,VK_FORMAT_R64G64B64_SFLOAT:118,VK_FORMAT_R64G64B64A64_UINT:119,VK_FORMAT_R64G64B64A64_SINT:120,VK_FORMAT_R64G64B64A64_SFLOAT:121,VK_FORMAT_B10G11R11_UFLOAT_PACK32:122,VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:123,VK_FORMAT_D16_UNORM:124,VK_FORMAT_X8_D24_UNORM_PACK32:125,VK_FORMAT_D32_SFLOAT:126,VK_FORMAT_S8_UINT:127,VK_FORMAT_D16_UNORM_S8_UINT:128,VK_FORMAT_D24_UNORM_S8_UINT:129,VK_FORMAT_D32_SFLOAT_S8_UINT:130,VK_FORMAT_BC1_RGB_UNORM_BLOCK:131,VK_FORMAT_BC1_RGB_SRGB_BLOCK:132,VK_FORMAT_BC1_RGBA_UNORM_BLOCK:133,VK_FORMAT_BC1_RGBA_SRGB_BLOCK:134,VK_FORMAT_BC2_UNORM_BLOCK:135,VK_FORMAT_BC2_SRGB_BLOCK:136,VK_FORMAT_BC3_UNORM_BLOCK:137,VK_FORMAT_BC3_SRGB_BLOCK:138,VK_FORMAT_BC4_UNORM_BLOCK:139,VK_FORMAT_BC4_SNORM_BLOCK:140,VK_FORMAT_BC5_UNORM_BLOCK:141,VK_FORMAT_BC5_SNORM_BLOCK:142,VK_FORMAT_BC6H_UFLOAT_BLOCK:143,VK_FORMAT_BC6H_SFLOAT_BLOCK:144,VK_FORMAT_BC7_UNORM_BLOCK:145,VK_FORMAT_BC7_SRGB_BLOCK:146,VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:147,VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:148,VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:149,VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:150,VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:151,VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:152,VK_FORMAT_EAC_R11_UNORM_BLOCK:153,VK_FORMAT_EAC_R11_SNORM_BLOCK:154,VK_FORMAT_EAC_R11G11_UNORM_BLOCK:155,VK_FORMAT_EAC_R11G11_SNORM_BLOCK:156,VK_FORMAT_ASTC_4x4_UNORM_BLOCK:157,VK_FORMAT_ASTC_4x4_SRGB_BLOCK:158,VK_FORMAT_ASTC_5x4_UNORM_BLOCK:159,VK_FORMAT_ASTC_5x4_SRGB_BLOCK:160,VK_FORMAT_ASTC_5x5_UNORM_BLOCK:161,VK_FORMAT_ASTC_5x5_SRGB_BLOCK:162,VK_FORMAT_ASTC_6x5_UNORM_BLOCK:163,VK_FORMAT_ASTC_6x5_SRGB_BLOCK:164,VK_FORMAT_ASTC_6x6_UNORM_BLOCK:165,VK_FORMAT_ASTC_6x6_SRGB_BLOCK:166,VK_FORMAT_ASTC_8x5_UNORM_BLOCK:167,VK_FORMAT_ASTC_8x5_SRGB_BLOCK:168,VK_FORMAT_ASTC_8x6_UNORM_BLOCK:169,VK_FORMAT_ASTC_8x6_SRGB_BLOCK:170,VK_FORMAT_ASTC_8x8_UNORM_BLOCK:171,VK_FORMAT_ASTC_8x8_SRGB_BLOCK:172,VK_FORMAT_ASTC_10x5_UNORM_BLOCK:173,VK_FORMAT_ASTC_10x5_SRGB_BLOCK:174,VK_FORMAT_ASTC_10x6_UNORM_BLOCK:175,VK_FORMAT_ASTC_10x6_SRGB_BLOCK:176,VK_FORMAT_ASTC_10x8_UNORM_BLOCK:177,VK_FORMAT_ASTC_10x8_SRGB_BLOCK:178,VK_FORMAT_ASTC_10x10_UNORM_BLOCK:179,VK_FORMAT_ASTC_10x10_SRGB_BLOCK:180,VK_FORMAT_ASTC_12x10_UNORM_BLOCK:181,VK_FORMAT_ASTC_12x10_SRGB_BLOCK:182,VK_FORMAT_ASTC_12x12_UNORM_BLOCK:183,VK_FORMAT_ASTC_12x12_SRGB_BLOCK:184,VK_FORMAT_G8B8G8R8_422_UNORM:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM:1000156006,VK_FORMAT_R10X6_UNORM_PACK16:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16:1000156016,VK_FORMAT_R12X4_UNORM_PACK16:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM:1000156033,VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:1000054e3,VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:1000054001,VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:1000054002,VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:1000054003,VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:1000054004,VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:1000054005,VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:1000054006,VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:1000054007,VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT:1000066e3,VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT:1000066001,VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT:1000066002,VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT:1000066003,VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT:1000066004,VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT:1000066005,VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT:1000066006,VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT:1000066007,VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT:1000066008,VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT:1000066009,VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT:1000066010,VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT:1000066011,VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT:1000066012,VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT:1000066013,VK_FORMAT_G8B8G8R8_422_UNORM_KHR:1000156e3,VK_FORMAT_B8G8R8G8_422_UNORM_KHR:1000156001,VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR:1000156002,VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR:1000156003,VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR:1000156004,VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR:1000156005,VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR:1000156006,VK_FORMAT_R10X6_UNORM_PACK16_KHR:1000156007,VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR:1000156008,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR:1000156009,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR:1000156010,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR:1000156011,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR:1000156012,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR:1000156013,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR:1000156014,VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR:1000156015,VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR:1000156016,VK_FORMAT_R12X4_UNORM_PACK16_KHR:1000156017,VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR:1000156018,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR:1000156019,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR:1000156020,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR:1000156021,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR:1000156022,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR:1000156023,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR:1000156024,VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR:1000156025,VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR:1000156026,VK_FORMAT_G16B16G16R16_422_UNORM_KHR:1000156027,VK_FORMAT_B16G16R16G16_422_UNORM_KHR:1000156028,VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR:1000156029,VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR:1000156030,VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR:1000156031,VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR:1000156032,VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR:1000156033},Nbe=Object.freeze(uSt);function fSt(e){return e=e??V.EMPTY_OBJECT,AS.fromIonAssetId(2426648,{requestVertexNormals:e.requestVertexNormals??!1})}var k4=fSt;function dSt(e){return e=e??V.EMPTY_OBJECT,AS.fromIonAssetId(1,{requestVertexNormals:e.requestVertexNormals??!1,requestWaterMask:e.requestWaterMask??!1,ellipsoid:te.WGS84})}var IS=dSt;var hSt=1953029805,mSt=2917034100;function bZ(e,t){if(bZ.passThroughDataForTesting)return t;let n=e.byteLength;if(n===0||n%4!==0)throw new ce("The length of key must be greater than 0 and a multiple of 4.");let i=new DataView(t),o=i.getUint32(0,!0);if(o===hSt||o===mSt)return t;let r=new DataView(e),s=0,a=t.byteLength,c=a-a%8,u=n,f,h=8;for(;s<c;)for(h=(h+8)%24,f=h;s<c&&f<u;)i.setUint32(s,i.getUint32(s,!0)^r.getUint32(f,!0),!0),i.setUint32(s+4,i.getUint32(s+4,!0)^r.getUint32(f+4,!0),!0),s+=8,f+=24;if(s<a)for(f>=u&&(h=(h+8)%24,f=h);s<a;)i.setUint8(s,i.getUint8(s)^r.getUint8(f)),s++,f++}bZ.passThroughDataForTesting=!1;var U4=bZ;function Lbe(e,t){return Pr("defaultValue","defaultValue has been deprecated and will be removed in Cesium 1.134. Use the nullish coalescing operator instead: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing"),e??t}Object.defineProperty(Lbe,"EMPTY_OBJECT",{get:function(){return Pr("defaultValue.EMPTY_OBJECT","defaultValue.EMPTY_OBJECT has been deprecated and will be removed in Cesium 1.134. Use Frozen.EMPTY_OBJECT instead"),V.EMPTY_OBJECT}});var Obe=Lbe;var ASt=new d;function pSt(e,t,n,i){let o=uI(e,t,n,i,ASt);return l(o)?o.x>0&&o.y>0&&o.z>0:!1}var Fbe=pSt;function gSt(e){return e<=.04045?e*.07739938080495357:Math.pow((e+.055)*.9478672985781991,2.4)}var xS=gSt;function _St(e){switch(e){case ee.FLOAT:return"float";case ee.FLOAT_VEC2:return"vec2";case ee.FLOAT_VEC3:return"vec3";case ee.FLOAT_VEC4:return"vec4";case ee.FLOAT_MAT2:return"mat2";case ee.FLOAT_MAT3:return"mat3";case ee.FLOAT_MAT4:return"mat4";case ee.SAMPLER_2D:return"sampler2D";case ee.BOOL:return"bool"}}var Qbe=_St;function ySt(e,t,n){return function(){n.apply(e,arguments),t.apply(e,arguments)}}var G4=ySt;var CSt=new d(1,1,1);function TZ(e){e=e??CSt,this._dimensions=d.clone(e)}Object.defineProperties(TZ.prototype,{dimensions:{get:function(){return this._dimensions},set:function(e){d.clone(e,this._dimensions)}}});var ESt=new d;TZ.prototype.emit=function(e){let t=this._dimensions,n=d.multiplyByScalar(t,.5,ESt),i=D.randomBetween(-n.x,n.x),o=D.randomBetween(-n.y,n.y),r=D.randomBetween(-n.z,n.z);e.position=d.fromElements(i,o,r,e.position),e.velocity=d.normalize(e.position,e.velocity)};var kbe=TZ;function IA(){this.featurePropertiesDirty=!1}Object.defineProperties(IA.prototype,{featuresLength:{get:function(){me.throwInstantiationError()}},pointsLength:{get:function(){me.throwInstantiationError()}},trianglesLength:{get:function(){me.throwInstantiationError()}},geometryByteLength:{get:function(){me.throwInstantiationError()}},texturesByteLength:{get:function(){me.throwInstantiationError()}},batchTableByteLength:{get:function(){me.throwInstantiationError()}},innerContents:{get:function(){me.throwInstantiationError()}},ready:{get:function(){me.throwInstantiationError()}},tileset:{get:function(){me.throwInstantiationError()}},tile:{get:function(){me.throwInstantiationError()}},url:{get:function(){me.throwInstantiationError()}},batchTable:{get:function(){me.throwInstantiationError()}},metadata:{get:function(){me.throwInstantiationError()},set:function(e){me.throwInstantiationError()}},group:{get:function(){me.throwInstantiationError()},set:function(e){me.throwInstantiationError()}}});IA.prototype.hasProperty=function(e,t){me.throwInstantiationError()};IA.prototype.getFeature=function(e){me.throwInstantiationError()};IA.prototype.applyDebugSettings=function(e,t){me.throwInstantiationError()};IA.prototype.applyStyle=function(e){me.throwInstantiationError()};IA.prototype.update=function(e,t){me.throwInstantiationError()};IA.prototype.pick=function(e,t,n){me.throwInstantiationError()};IA.prototype.isDestroyed=function(){me.throwInstantiationError()};IA.prototype.destroy=function(){me.throwInstantiationError()};var Ube=IA;function bS(e,t){this._conditionsExpression=ze(e,!0),this._conditions=e.conditions,this._runtimeConditions=void 0,xSt(this,t)}Object.defineProperties(bS.prototype,{conditionsExpression:{get:function(){return this._conditionsExpression}}});function ISt(e,t){this.condition=e,this.expression=t}function xSt(e,t){let n=[],i=e._conditions;if(!l(i))return;let o=i.length;for(let r=0;r<o;++r){let s=i[r],a=String(s[0]),c=String(s[1]);n.push(new ISt(new Hd(a,t),new Hd(c,t)))}e._runtimeConditions=n}bS.prototype.evaluate=function(e,t){let n=this._runtimeConditions;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.condition.evaluate(e))return r.expression.evaluate(e,t)}};bS.prototype.evaluateColor=function(e,t){let n=this._runtimeConditions;if(!l(n))return;let i=n.length;for(let o=0;o<i;++o){let r=n[o];if(r.condition.evaluate(e))return r.expression.evaluateColor(e,t)}};bS.prototype.getShaderFunction=function(e,t,n,i){let o=this._runtimeConditions;if(!l(o)||o.length===0)return;let r="",s=o.length;for(let a=0;a<s;++a){let c=o[a],u=c.condition.getShaderExpression(t,n),f=c.expression.getShaderExpression(t,n);r+=` ${a===0?"if":"else if"} (${u}) + { + return ${f}; + } +`}return r=`${i} ${e} +{ +${r} return ${i}(1.0); +} +`,r};bS.prototype.getVariables=function(){let e=[],t=this._runtimeConditions;if(!l(t)||t.length===0)return e;let n=t.length;for(let i=0;i<n;++i){let o=t[i];si(e,o.condition.getVariables()),si(e,o.expression.getVariables())}return e=e.filter(function(i,o,r){return r.indexOf(i)===o}),e};var z4=bS;function $y(e){this._style={},this._ready=!1,this._show=void 0,this._color=void 0,this._pointSize=void 0,this._pointOutlineColor=void 0,this._pointOutlineWidth=void 0,this._labelColor=void 0,this._labelOutlineColor=void 0,this._labelOutlineWidth=void 0,this._font=void 0,this._labelStyle=void 0,this._labelText=void 0,this._backgroundColor=void 0,this._backgroundPadding=void 0,this._backgroundEnabled=void 0,this._scaleByDistance=void 0,this._translucencyByDistance=void 0,this._distanceDisplayCondition=void 0,this._heightOffset=void 0,this._anchorLineEnabled=void 0,this._anchorLineColor=void 0,this._image=void 0,this._disableDepthTestDistance=void 0,this._horizontalOrigin=void 0,this._verticalOrigin=void 0,this._labelHorizontalOrigin=void 0,this._labelVerticalOrigin=void 0,this._meta=void 0,this._colorShaderFunction=void 0,this._showShaderFunction=void 0,this._pointSizeShaderFunction=void 0,this._colorShaderFunctionReady=!1,this._showShaderFunctionReady=!1,this._pointSizeShaderFunctionReady=!1,this._colorShaderTranslucent=!1,bSt(this,e)}function bSt(e,t){t=ze(t,!0)??e._style,e._style=t,e.show=t.show,e.color=t.color,e.pointSize=t.pointSize,e.pointOutlineColor=t.pointOutlineColor,e.pointOutlineWidth=t.pointOutlineWidth,e.labelColor=t.labelColor,e.labelOutlineColor=t.labelOutlineColor,e.labelOutlineWidth=t.labelOutlineWidth,e.labelStyle=t.labelStyle,e.font=t.font,e.labelText=t.labelText,e.backgroundColor=t.backgroundColor,e.backgroundPadding=t.backgroundPadding,e.backgroundEnabled=t.backgroundEnabled,e.scaleByDistance=t.scaleByDistance,e.translucencyByDistance=t.translucencyByDistance,e.distanceDisplayCondition=t.distanceDisplayCondition,e.heightOffset=t.heightOffset,e.anchorLineEnabled=t.anchorLineEnabled,e.anchorLineColor=t.anchorLineColor,e.image=t.image,e.disableDepthTestDistance=t.disableDepthTestDistance,e.horizontalOrigin=t.horizontalOrigin,e.verticalOrigin=t.verticalOrigin,e.labelHorizontalOrigin=t.labelHorizontalOrigin,e.labelVerticalOrigin=t.labelVerticalOrigin;let n={};if(l(t.meta)){let i=t.defines,o=t.meta??V.EMPTY_OBJECT;for(let r in o)o.hasOwnProperty(r)&&(n[r]=new Hd(o[r],i))}e._meta=n,e._ready=!0}function dr(e,t){let n=(e._style??V.EMPTY_OBJECT).defines;if(l(t)){if(typeof t=="boolean"||typeof t=="number")return new Hd(String(t));if(typeof t=="string")return new Hd(t,n);if(l(t.conditions))return new z4(t,n)}else return;return t}function hr(e){if(l(e)){if(l(e.expression))return e.expression;if(l(e.conditionsExpression))return ze(e.conditionsExpression,!0)}else return;return e}Object.defineProperties($y.prototype,{style:{get:function(){return this._style}},show:{get:function(){return this._show},set:function(e){this._show=dr(this,e),this._style.show=hr(this._show),this._showShaderFunctionReady=!1}},color:{get:function(){return this._color},set:function(e){this._color=dr(this,e),this._style.color=hr(this._color),this._colorShaderFunctionReady=!1}},pointSize:{get:function(){return this._pointSize},set:function(e){this._pointSize=dr(this,e),this._style.pointSize=hr(this._pointSize),this._pointSizeShaderFunctionReady=!1}},pointOutlineColor:{get:function(){return this._pointOutlineColor},set:function(e){this._pointOutlineColor=dr(this,e),this._style.pointOutlineColor=hr(this._pointOutlineColor)}},pointOutlineWidth:{get:function(){return this._pointOutlineWidth},set:function(e){this._pointOutlineWidth=dr(this,e),this._style.pointOutlineWidth=hr(this._pointOutlineWidth)}},labelColor:{get:function(){return this._labelColor},set:function(e){this._labelColor=dr(this,e),this._style.labelColor=hr(this._labelColor)}},labelOutlineColor:{get:function(){return this._labelOutlineColor},set:function(e){this._labelOutlineColor=dr(this,e),this._style.labelOutlineColor=hr(this._labelOutlineColor)}},labelOutlineWidth:{get:function(){return this._labelOutlineWidth},set:function(e){this._labelOutlineWidth=dr(this,e),this._style.labelOutlineWidth=hr(this._labelOutlineWidth)}},font:{get:function(){return this._font},set:function(e){this._font=dr(this,e),this._style.font=hr(this._font)}},labelStyle:{get:function(){return this._labelStyle},set:function(e){this._labelStyle=dr(this,e),this._style.labelStyle=hr(this._labelStyle)}},labelText:{get:function(){return this._labelText},set:function(e){this._labelText=dr(this,e),this._style.labelText=hr(this._labelText)}},backgroundColor:{get:function(){return this._backgroundColor},set:function(e){this._backgroundColor=dr(this,e),this._style.backgroundColor=hr(this._backgroundColor)}},backgroundPadding:{get:function(){return this._backgroundPadding},set:function(e){this._backgroundPadding=dr(this,e),this._style.backgroundPadding=hr(this._backgroundPadding)}},backgroundEnabled:{get:function(){return this._backgroundEnabled},set:function(e){this._backgroundEnabled=dr(this,e),this._style.backgroundEnabled=hr(this._backgroundEnabled)}},scaleByDistance:{get:function(){return this._scaleByDistance},set:function(e){this._scaleByDistance=dr(this,e),this._style.scaleByDistance=hr(this._scaleByDistance)}},translucencyByDistance:{get:function(){return this._translucencyByDistance},set:function(e){this._translucencyByDistance=dr(this,e),this._style.translucencyByDistance=hr(this._translucencyByDistance)}},distanceDisplayCondition:{get:function(){return this._distanceDisplayCondition},set:function(e){this._distanceDisplayCondition=dr(this,e),this._style.distanceDisplayCondition=hr(this._distanceDisplayCondition)}},heightOffset:{get:function(){return this._heightOffset},set:function(e){this._heightOffset=dr(this,e),this._style.heightOffset=hr(this._heightOffset)}},anchorLineEnabled:{get:function(){return this._anchorLineEnabled},set:function(e){this._anchorLineEnabled=dr(this,e),this._style.anchorLineEnabled=hr(this._anchorLineEnabled)}},anchorLineColor:{get:function(){return this._anchorLineColor},set:function(e){this._anchorLineColor=dr(this,e),this._style.anchorLineColor=hr(this._anchorLineColor)}},image:{get:function(){return this._image},set:function(e){this._image=dr(this,e),this._style.image=hr(this._image)}},disableDepthTestDistance:{get:function(){return this._disableDepthTestDistance},set:function(e){this._disableDepthTestDistance=dr(this,e),this._style.disableDepthTestDistance=hr(this._disableDepthTestDistance)}},horizontalOrigin:{get:function(){return this._horizontalOrigin},set:function(e){this._horizontalOrigin=dr(this,e),this._style.horizontalOrigin=hr(this._horizontalOrigin)}},verticalOrigin:{get:function(){return this._verticalOrigin},set:function(e){this._verticalOrigin=dr(this,e),this._style.verticalOrigin=hr(this._verticalOrigin)}},labelHorizontalOrigin:{get:function(){return this._labelHorizontalOrigin},set:function(e){this._labelHorizontalOrigin=dr(this,e),this._style.labelHorizontalOrigin=hr(this._labelHorizontalOrigin)}},labelVerticalOrigin:{get:function(){return this._labelVerticalOrigin},set:function(e){this._labelVerticalOrigin=dr(this,e),this._style.labelVerticalOrigin=hr(this._labelVerticalOrigin)}},meta:{get:function(){return this._meta},set:function(e){this._meta=e}}});$y.fromUrl=function(e){return we.createIfNeeded(e).fetchJson(e).then(function(n){return new $y(n)})};$y.prototype.getColorShaderFunction=function(e,t,n){return this._colorShaderFunctionReady?(n.translucent=this._colorShaderTranslucent,this._colorShaderFunction):(this._colorShaderFunctionReady=!0,l(this.color)&&l(this.color.getShaderFunction)?this._colorShaderFunction=this.color.getShaderFunction(e,t,n,"vec4"):this._colorShaderFunction=void 0,this._colorShaderTranslucent=n.translucent,this._colorShaderFunction)};$y.prototype.getShowShaderFunction=function(e,t,n){return this._showShaderFunctionReady?this._showShaderFunction:(this._showShaderFunctionReady=!0,l(this.show)&&l(this.show.getShaderFunction)?this._showShaderFunction=this.show.getShaderFunction(e,t,n,"bool"):this._showShaderFunction=void 0,this._showShaderFunction)};$y.prototype.getPointSizeShaderFunction=function(e,t,n){return this._pointSizeShaderFunctionReady?this._pointSizeShaderFunction:(this._pointSizeShaderFunctionReady=!0,l(this.pointSize)&&l(this.pointSize.getShaderFunction)?this._pointSizeShaderFunction=this.pointSize.getShaderFunction(e,t,n,"float"):this._pointSizeShaderFunction=void 0,this._pointSizeShaderFunction)};$y.prototype.getVariables=function(){let e=[];return l(this.color)&&l(this.color.getVariables)&&si(e,this.color.getVariables()),l(this.show)&&l(this.show.getVariables)&&si(e,this.show.getVariables()),l(this.pointSize)&&l(this.pointSize.getVariables)&&si(e,this.pointSize.getVariables()),e=e.filter(function(t,n,i){return i.indexOf(t)===n}),e};var TS=$y;function KP(e){e=e??V.EMPTY_OBJECT,this._maximumSubtreeCount=e.maximumSubtreeCount??0,this._subtreeRequestCounter=0,this._queue=new rS({comparator:KP.comparator})}KP.prototype.addSubtree=function(e){let t=new TSt(e,this._subtreeRequestCounter);this._subtreeRequestCounter++,this._queue.insert(t);let n=e.implicitCoordinates;if(n.level>0){let i=n.getParentSubtreeCoordinates(),o=this.find(i)}if(this._maximumSubtreeCount>0)for(;this._queue.length>this._maximumSubtreeCount&&this._queue.getMinimum()!==t;)this._queue.removeMinimum()};KP.prototype.find=function(e){let t=this._queue,n=t.internalArray,i=t.length;for(let o=0;o<i;o++){let r=n[o],a=r.subtree.implicitCoordinates;if(e.isEqual(a))return r.subtree}};KP.comparator=function(e,t){let n=e.subtree.implicitCoordinates,i=t.subtree.implicitCoordinates;return n.isAncestor(i)?1:i.isAncestor(n)?-1:e.stamp-t.stamp};function TSt(e,t){this.subtree=e,this.stamp=t}var V4=KP;function XP(e){e=e??V.EMPTY_OBJECT;let{className:t,names:n,types:i,componentTypes:o,shape:r,dimensions:s,paddingBefore:a=d.ZERO.clone(),paddingAfter:c=d.ZERO.clone(),globalTransform:u=R.IDENTITY.clone(),shapeTransform:f=R.IDENTITY.clone(),minBounds:h,maxBounds:A,minimumValues:g,maximumValues:m,maximumTileCount:_}=e;this._shapeTransform=f,this._globalTransform=u,this._shape=r,this._minBounds=h,this._maxBounds=A,this._dimensions=s,this._paddingBefore=a,this._paddingAfter=c,this._className=t,this._names=n,this._types=i,this._componentTypes=o,this._metadataOrder=r===lc.ELLIPSOID?kh.Z_UP:kh.Y_UP,this._minimumValues=g,this._maximumValues=m,this._maximumTileCount=_,this._availableLevels=void 0,this._implicitTileset=void 0,this._subtreeCache=new V4}Object.defineProperties(XP.prototype,{globalTransform:{get:function(){return this._globalTransform}},shapeTransform:{get:function(){return this._shapeTransform}},shape:{get:function(){return this._shape}},minBounds:{get:function(){return this._minBounds}},maxBounds:{get:function(){return this._maxBounds}},dimensions:{get:function(){return this._dimensions}},paddingBefore:{get:function(){return this._paddingBefore}},paddingAfter:{get:function(){return this._paddingAfter}},className:{get:function(){return this._className}},names:{get:function(){return this._names}},types:{get:function(){return this._types}},componentTypes:{get:function(){return this._componentTypes}},metadataOrder:{get:function(){return this._metadataOrder}},minimumValues:{get:function(){return this._minimumValues}},maximumValues:{get:function(){return this._maximumValues}},maximumTileCount:{get:function(){return this._maximumTileCount}},availableLevels:{get:function(){return this._availableLevels}}});XP.fromUrl=async function(e){let t=we.createIfNeeded(e),n=await t.fetchJson();wSt(n);let i=NSt(n,t);await i.load();let{root:o}=n,r=Ii(n,"3DTILES_metadata")?n.extensions["3DTILES_metadata"]:n,s=new lb({metadataJson:r,schema:i.schema}),a=o.content.extensions["3DTILES_content_voxels"],c=a.class,u=LSt(s,c);Object.assign(u,BSt(o)),l(o.transform)?u.globalTransform=R.unpack(o.transform):u.globalTransform=R.clone(R.IDENTITY),u.dimensions=d.unpack(a.dimensions),u.maximumTileCount=SSt(s),l(a.padding)&&(u.paddingBefore=d.unpack(a.padding.before),u.paddingAfter=d.unpack(a.padding.after));let f=new XP(u),h=new fb(t,o,i.schema);return f._implicitTileset=h,f._availableLevels=h.availableLevels,Qi.unload(i),f};function SSt(e){if(l(e.tileset))return e.tileset.getPropertyBySemantic(tx.TILESET_TILE_COUNT)}function wSt(e){let t=e.root;if(!l(t.content))throw new ce("Root must have content");if(!Ii(t.content,"3DTILES_content_voxels"))throw new ce("Root tile content must have 3DTILES_content_voxels extension");if(!Ii(t,"3DTILES_implicit_tiling")&&!l(t.implicitTiling))throw new ce("Root tile must have implicit tiling");if(!l(e.schema)&&!l(e.schemaUri)&&!Ii(e,"3DTILES_metadata"))throw new ce("Tileset must have a metadata schema")}function BSt(e){let t=e.boundingVolume;if(l(t.box))return RSt(t.box);if(l(t.region))return DSt(t.region);if(Ii(t,"3DTILES_bounding_volume_cylinder"))return MSt(t.extensions["3DTILES_bounding_volume_cylinder"]);throw new ce("Only box, region and 3DTILES_bounding_volume_cylinder are supported in Cesium3DTilesVoxelProvider")}function DSt(e){let t=e[0],n=e[1],i=e[2],o=e[3],r=e[4],s=e[5],a=R.fromScale(te.WGS84.radii),c=new d(t,n,r),u=new d(i,o,s);return{shape:lc.ELLIPSOID,minBounds:c,maxBounds:u,shapeTransform:a}}var vSt=new d,PSt=new J;function RSt(e){let t=Qn.unpack(e),n=J.getScale(t.halfAxes,vSt),i=J.getRotation(t.halfAxes,PSt);return{shape:lc.BOX,minBounds:d.negate(n,new d),maxBounds:d.clone(n),shapeTransform:R.fromRotationTranslation(i,t.center)}}function MSt(e){let{minRadius:t,maxRadius:n,height:i,minAngle:o=-D.PI,maxAngle:r=D.PI,translation:s=[0,0,0],rotation:a=[0,0,0,1]}=e,c=-.5*i+s[2],u=.5*i+s[2],f=R.fromTranslationQuaternionRotationScale(d.unpack(s),Le.unpack(a),d.ONE);return{shape:lc.CYLINDER,minBounds:d.fromElements(t,o,c),maxBounds:d.fromElements(n,r,u),shapeTransform:f}}function NSt(e,t){let{schemaUri:n,schema:i}=e;return l(n)?Qi.getSchemaLoader({resource:t.getDerivedResource({url:n})}):Qi.getSchemaLoader({schema:i})}function LSt(e,t){let{schema:n,statistics:i}=e,o=i?.classes[t],r=n.classes[t].properties,s=Object.entries(r).map(([g,m])=>{let{type:_,componentType:y}=m,C=o?.properties[g].min,E=o?.properties[g].max,I=gt.getComponentCount(_),b=Gbe(C,I),S=Gbe(E,I);return{id:g,type:_,componentType:y,minValue:b,maxValue:S}}),a=s.map(g=>g.id),c=s.map(g=>g.type),u=s.map(g=>g.componentType),f=s.map(g=>g.minValue),h=s.map(g=>g.maxValue),A=f.some(l);return{className:t,names:a,types:c,componentTypes:u,minimumValues:A?f:void 0,maximumValues:A?h:void 0}}function Gbe(e,t){if(!l(e))return;let n=Array.isArray(e)?e:[e];return Array.from({length:t},(i,o)=>n[o])}async function OSt(e,t){let n=e._implicitTileset,i=e._subtreeCache,o=i.find(t);if(l(o))return o;let r=n.subtreeUriTemplate.getDerivedResource({templateValues:t.getTemplateValues()}),s=n.baseResource.getDerivedResource({url:r.url}),a=await s.fetchArrayBuffer();if(o=i.find(t),l(o))return o;let c=R_(a);return o=await ex.fromSubtreeJson(s,c.jsonPayload,c.binaryPayload,n,t),i.addSubtree(o),o}XP.prototype.requestData=async function(e){e=e??V.EMPTY_OBJECT;let{tileLevel:t=0,tileX:n=0,tileY:i=0,tileZ:o=0,keyframe:r=0}=e;if(r!==0)return Promise.reject("3D Tiles currently doesn't support time-dynamic data.");let s=this._implicitTileset,a=new db({subdivisionScheme:s.subdivisionScheme,subtreeLevels:s.subtreeLevels,level:t,x:n,y:i,z:o}),c=a.isSubtreeRoot()&&a.level>0,u=c?a.getParentSubtreeCoordinates():a.getSubtreeCoordinates(),h=await OSt(this,u);if(!(c?h.childSubtreeIsAvailableAtCoordinates:h.tileIsAvailableAtCoordinates).call(h,a))return Promise.reject(`Tile is not available at level ${t}, x ${n}, y ${i}, z ${o}.`);let{contentUriTemplates:m,baseResource:_}=s,y=m[0].getDerivedResource({templateValues:a.getTemplateValues()}),C=_.getDerivedResource({url:y.url});return tS.fromGltf(C)};var zbe=XP;function SZ(e){e=e??1,this._radius=e??1}Object.defineProperties(SZ.prototype,{radius:{get:function(){return this._radius},set:function(e){this._radius=e}}});SZ.prototype.emit=function(e){let t=D.randomBetween(0,D.TWO_PI),n=D.randomBetween(0,this._radius),i=n*Math.cos(t),o=n*Math.sin(t),r=0;e.position=d.fromElements(i,o,r,e.position),e.velocity=d.clone(d.UNIT_Z,e.velocity)};var H4=SZ;var wZ={CUMULUS:0};wZ.validate=function(e){return e===wZ.CUMULUS};var JP=Object.freeze(wZ);function Vh(e,t){if(e=e??V.EMPTY_OBJECT,this._show=e.show??!0,this._position=d.clone(e.position??d.ZERO),!l(e.scale)&&l(e.maximumSize))this._maximumSize=d.clone(e.maximumSize),this._scale=new k(this._maximumSize.x,this._maximumSize.y);else{this._scale=k.clone(e.scale??new k(20,12));let n=new d(this._scale.x,this._scale.y,Math.min(this._scale.x,this._scale.y)/1.5);this._maximumSize=d.clone(e.maximumSize??n)}this._slice=e.slice??-1,this._color=G.clone(e.color??G.WHITE),this._brightness=e.brightness??1,this._cloudCollection=t,this._index=-1}var FSt=Vh.SHOW_INDEX=0,QSt=Vh.POSITION_INDEX=1,kSt=Vh.SCALE_INDEX=2,USt=Vh.MAXIMUM_SIZE_INDEX=3,GSt=Vh.SLICE_INDEX=4,zSt=Vh.BRIGHTNESS_INDEX=5,VSt=Vh.COLOR_INDEX=6;Vh.NUMBER_OF_PROPERTIES=7;function v0(e,t){let n=e._cloudCollection;l(n)&&(n._updateCloud(e,t),e._dirty=!0)}Object.defineProperties(Vh.prototype,{show:{get:function(){return this._show},set:function(e){this._show!==e&&(this._show=e,v0(this,FSt))}},position:{get:function(){return this._position},set:function(e){let t=this._position;d.equals(t,e)||(d.clone(e,t),v0(this,QSt))}},scale:{get:function(){return this._scale},set:function(e){let t=this._scale;k.equals(t,e)||(k.clone(e,t),v0(this,kSt))}},maximumSize:{get:function(){return this._maximumSize},set:function(e){let t=this._maximumSize;d.equals(t,e)||(d.clone(e,t),v0(this,USt))}},color:{get:function(){return this._color},set:function(e){let t=this._color;G.equals(t,e)||(G.clone(e,t),v0(this,VSt))}},slice:{get:function(){return this._slice},set:function(e){this._slice!==e&&(this._slice=e,v0(this,GSt))}},brightness:{get:function(){return this._brightness},set:function(e){this._brightness!==e&&(this._brightness=e,v0(this,zSt))}}});Vh.prototype._destroy=function(){this._cloudCollection=void 0};var Td=Vh;var lf,W4=new d,HSt={positionHighAndScaleX:0,positionLowAndScaleY:1,packedAttribute0:2,packedAttribute1:3,color:4},WSt={direction:0,positionHighAndScaleX:1,positionLowAndScaleY:2,packedAttribute0:3,packedAttribute1:4,color:5},jSt=Td.SHOW_INDEX,YSt=Td.POSITION_INDEX,qSt=Td.SCALE_INDEX,KSt=Td.MAXIMUM_SIZE_INDEX,XSt=Td.SLICE_INDEX,JSt=Td.BRIGHTNESS_INDEX,ZSt=Td.NUMBER_OF_PROPERTIES,$St=Td.COLOR_INDEX;function Hh(e){e=e??V.EMPTY_OBJECT,this._clouds=[],this._cloudsToUpdate=[],this._cloudsToUpdateIndex=0,this._cloudsRemoved=!1,this._createVertexArray=!1,this._propertiesChanged=new Uint32Array(ZSt),this._noiseTexture=void 0,this._textureSliceWidth=128,this._noiseTextureRows=4,this.noiseDetail=e.noiseDetail??16,this.noiseOffset=d.clone(e.noiseOffset??d.ZERO),this._loading=!1,this._ready=!1;let t=this;this._uniforms={u_noiseTexture:function(){return t._noiseTexture},u_noiseTextureDimensions:Vbe(t),u_noiseDetail:function(){return t.noiseDetail}},this._vaNoise=void 0,this._spNoise=void 0,this._spCreated=!1,this._sp=void 0,this._rs=void 0,this.show=e.show??!0,this._colorCommands=[],this.debugBillboards=e.debugBillboards??!1,this._compiledDebugBillboards=!1,this.debugEllipsoids=e.debugEllipsoids??!1,this._compiledDebugEllipsoids=!1}function Vbe(e){return function(){return W4.x=e._textureSliceWidth,W4.y=e._noiseTextureRows,W4.z=1/e._noiseTextureRows,W4}}Object.defineProperties(Hh.prototype,{length:{get:function(){return DZ(this),this._clouds.length}}});function Hbe(e){let t=e.length;for(let n=0;n<t;++n)e[n]&&e[n]._destroy()}Hh.prototype.add=function(e){e=e??V.EMPTY_OBJECT;let t=e.cloudType??JP.CUMULUS,n;return t===JP.CUMULUS&&(n=new Td(e,this),n._index=this._clouds.length,this._clouds.push(n),this._createVertexArray=!0),n};Hh.prototype.remove=function(e){return this.contains(e)?(this._clouds[e._index]=void 0,this._cloudsRemoved=!0,this._createVertexArray=!0,e._destroy(),!0):!1};Hh.prototype.removeAll=function(){Hbe(this._clouds),this._clouds=[],this._cloudsToUpdate=[],this._cloudsToUpdateIndex=0,this._cloudsRemoved=!1,this._createVertexArray=!0};function DZ(e){if(e._cloudsRemoved){e._cloudsRemoved=!1;let t=[],n=e._clouds,i=n.length;for(let o=0,r=0;o<i;++o){let s=n[o];l(s)&&(n._index=r++,t.push(s))}e._clouds=t}}Hh.prototype._updateCloud=function(e,t){e._dirty||(this._cloudsToUpdate[this._cloudsToUpdateIndex++]=e),++this._propertiesChanged[t]};Hh.prototype.contains=function(e){return l(e)&&e._cloudCollection===this};Hh.prototype.get=function(e){return DZ(this),this._clouds[e]};var ewt=new Float32Array([-1,-1,1,-1,1,1,-1,1]),twt=new Uint16Array([0,1,2,0,2,3]);function nwt(e){let t=Et.createVertexBuffer({context:e,typedArray:ewt,usage:Qe.STATIC_DRAW}),n=Et.createIndexBuffer({context:e,typedArray:twt,usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT}),i=[{index:0,vertexBuffer:t,componentsPerAttribute:2,componentDatatype:q.FLOAT}];return new li({context:e,attributes:i,indexBuffer:n})}var vZ;function iwt(e){let n=e.cache.cloudCollection_indexBufferBatched;if(l(n))return n;let i=16384*6-6,o=new Uint16Array(i);for(let r=0,s=0;r<i;r+=6,s+=4)o[r]=s,o[r+1]=s+1,o[r+2]=s+2,o[r+3]=s,o[r+4]=s+2,o[r+5]=s+3;return n=Et.createIndexBuffer({context:e,typedArray:o,usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT}),n.vertexArrayDestroyable=!1,e.cache.cloudCollection_indexBufferBatched=n,n}function owt(e){let t=e.cache.cloudCollection_indexBufferInstanced;return l(t)||(t=Et.createIndexBuffer({context:e,typedArray:new Uint16Array([0,1,2,0,2,3]),usage:Qe.STATIC_DRAW,indexDatatype:Fe.UNSIGNED_SHORT}),t.vertexArrayDestroyable=!1,e.cache.cloudCollection_indexBufferInstanced=t),t}function rwt(e){let t=e.cache.cloudCollection_vertexBufferInstanced;return l(t)||(t=Et.createVertexBuffer({context:e,typedArray:new Float32Array([0,0,1,0,1,1,0,1]),usage:Qe.STATIC_DRAW}),t.vertexArrayDestroyable=!1,e.cache.cloudCollection_vertexBufferInstanced=t),t}function swt(e,t,n){let i=[{index:lf.positionHighAndScaleX,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:Qe.STATIC_DRAW},{index:lf.positionLowAndScaleY,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:Qe.STATIC_DRAW},{index:lf.packedAttribute0,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:Qe.STATIC_DRAW},{index:lf.packedAttribute1,componentsPerAttribute:4,componentDatatype:q.FLOAT,usage:Qe.STATIC_DRAW},{index:lf.color,componentsPerAttribute:4,componentDatatype:q.UNSIGNED_BYTE,normalize:!0,usage:Qe.STATIC_DRAW}];n&&i.push({index:lf.direction,componentsPerAttribute:2,componentDatatype:q.FLOAT,vertexBuffer:rwt(e)});let o=n?t:4*t;return new S_(e,i,o,n)}var BZ=new ei;function Wbe(e,t,n,i){let o,r=n[lf.positionHighAndScaleX],s=n[lf.positionLowAndScaleY],a=i.position;ei.fromCartesian(a,BZ);let c=i.scale,u=BZ.high,f=BZ.low;e._instanced?(o=i._index,r(o,u.x,u.y,u.z,c.x),s(o,f.x,f.y,f.z,c.y)):(o=i._index*4,r(o+0,u.x,u.y,u.z,c.x),r(o+1,u.x,u.y,u.z,c.x),r(o+2,u.x,u.y,u.z,c.x),r(o+3,u.x,u.y,u.z,c.x),s(o+0,f.x,f.y,f.z,c.y),s(o+1,f.x,f.y,f.z,c.y),s(o+2,f.x,f.y,f.z,c.y),s(o+3,f.x,f.y,f.z,c.y))}function jbe(e,t,n,i){let o,r=n[lf.packedAttribute0],s=i.show,a=i.brightness;e._instanced?(o=i._index,r(o,s,a,0,0)):(o=i._index*4,r(o+0,s,a,0,0),r(o+1,s,a,1,0),r(o+2,s,a,1,1),r(o+3,s,a,0,1))}function Ybe(e,t,n,i){let o,r=n[lf.packedAttribute1],s=i.maximumSize,a=i.slice;e._instanced?(o=i._index,r(o,s.x,s.y,s.z,a)):(o=i._index*4,r(o+0,s.x,s.y,s.z,a),r(o+1,s.x,s.y,s.z,a),r(o+2,s.x,s.y,s.z,a),r(o+3,s.x,s.y,s.z,a))}function qbe(e,t,n,i){let o,r=n[lf.color],s=i.color,a=G.floatToByte(s.red),c=G.floatToByte(s.green),u=G.floatToByte(s.blue),f=G.floatToByte(s.alpha);e._instanced?(o=i._index,r(o,a,c,u,f)):(o=i._index*4,r(o+0,a,c,u,f),r(o+1,a,c,u,f),r(o+2,a,c,u,f),r(o+3,a,c,u,f))}function awt(e,t,n,i){Wbe(e,t,n,i),jbe(e,t,n,i),Ybe(e,t,n,i),qbe(e,t,n,i)}function cwt(e,t,n,i){let o=e,r=o._textureSliceWidth,s=o._noiseTextureRows,a=t.context;o._vaNoise=nwt(a),o._spNoise=ln.fromCache({context:a,vertexShaderSource:n,fragmentShaderSource:i,attributeLocations:{position:0}});let c=o.noiseDetail,u=o.noiseOffset;o._noiseTexture=new Nt({context:a,width:r*r/s,height:r*s,pixelDatatype:He.UNSIGNED_BYTE,pixelFormat:et.RGBA,sampler:new on({wrapS:Tn.REPEAT,wrapT:Tn.REPEAT,minificationFilter:Zt.NEAREST,magnificationFilter:pi.NEAREST})});let f=new Hl({vertexArray:o._vaNoise,shaderProgram:o._spNoise,outputTexture:o._noiseTexture,uniformMap:{u_noiseTextureDimensions:Vbe(o),u_noiseDetail:function(){return c},u_noiseOffset:function(){return u}},persists:!1,owner:e,postExecute:function(h){o._ready=!0,o._loading=!1}});t.commandList.push(f),o._loading=!0}function lwt(e,t){let n=e,i=t.context;n._createVertexArray=!1,n._vaf=n._vaf&&n._vaf.destroy();let o=e._clouds,r=o.length;if(r>0){n._vaf=swt(i,r,n._instanced);let s=n._vaf.writers,a;for(a=0;a<r;++a){let c=o[a];awt(e,t,s,c)}n._vaf.commit(vZ(i))}}var uwt=[];function fwt(e,t){let n=t.context,i=e,r=i._clouds.length,s=i._cloudsToUpdate,a=i._cloudsToUpdateIndex,c=i._propertiesChanged,u=uwt;u.length=0,(c[YSt]||c[qSt])&&u.push(Wbe),(c[jSt]||c[JSt])&&u.push(jbe),(c[KSt]||c[XSt])&&u.push(Ybe),c[$St]&&u.push(qbe);let f=u.length,h=i._vaf.writers,A,g,m;if(a/r>.1){for(A=0;A<a;++A)for(g=s[A],g._dirty=!1,m=0;m<f;++m)u[m](e,t,h,g);i._vaf.commit(vZ(n))}else{for(A=0;A<a;++A){for(g=s[A],g._dirty=!1,m=0;m<f;++m)u[m](e,t,h,g);i._instanced?i._vaf.subCommit(g._index,1):i._vaf.subCommit(g._index*4,4)}i._vaf.endSubCommits()}i._cloudsToUpdateIndex=0}function dwt(e,t,n,i){let o=t.context,r=e,s=new We({defines:[],sources:[n]});r._instanced&&s.defines.push("INSTANCED");let a=new We({defines:[],sources:[i]});r.debugBillboards&&a.defines.push("DEBUG_BILLBOARDS"),r.debugEllipsoids&&a.defines.push("DEBUG_ELLIPSOIDS"),r._sp=ln.replaceCache({context:o,shaderProgram:r._sp,vertexShaderSource:s,fragmentShaderSource:a,attributeLocations:lf}),r._rs=Ue.fromCache({depthTest:{enabled:!0,func:ee.LESS},depthMask:!1,blending:pn.ALPHA_BLEND}),r._spCreated=!0,r._compiledDebugBillboards=r.debugBillboards,r._compiledDebugEllipsoids=r.debugEllipsoids}function hwt(e,t){let n=e,i=t.passes,o=n._uniforms,r=t.commandList;if(i.render){let s=n._colorCommands,a=n._vaf.va,c=a.length;s.length=c;for(let u=0;u<c;u++){let f=s[u];l(f)||(f=s[u]=new nt),f.pass=Be.TRANSLUCENT,f.owner=e,f.uniformMap=o,f.count=a[u].indicesCount,f.vertexArray=a[u].va,f.shaderProgram=n._sp,f.renderState=n._rs,n._instanced&&(f.count=6,f.instanceCount=n._clouds.length),r.push(f)}}}Hh.prototype.update=function(e){if(DZ(this),!this.show)return;let t=this.debugBillboards||this.debugEllipsoids;this._ready=t?!0:l(this._noiseTexture),!this._ready&&!this._loading&&!t&&cwt(this,e,lz,cz),this._instanced=e.context.instancedArrays,lf=this._instanced?WSt:HSt,vZ=this._instanced?owt:iwt;let i=this._clouds.length,o=this._cloudsToUpdate,r=this._cloudsToUpdateIndex;this._createVertexArray?lwt(this,e):r>0&&fwt(this,e),r>i*1.5&&(o.length=i),!(!l(this._vaf)||!l(this._vaf.va)||!this._ready&!t)&&((!this._spCreated||this.debugBillboards!==this._compiledDebugBillboards||this.debugEllipsoids!==this._compiledDebugEllipsoids)&&dwt(this,e,az,sz),hwt(this,e))};Hh.prototype.isDestroyed=function(){return!1};Hh.prototype.destroy=function(){return this._noiseTexture=this._noiseTexture&&this._noiseTexture.destroy(),this._sp=this._sp&&this._sp.destroy(),this._vaf=this._vaf&&this._vaf.destroy(),Hbe(this._clouds),ue(this)};var Kbe=Hh;var mwt=D.toRadians(30);function PZ(e){this._angle=e??mwt}Object.defineProperties(PZ.prototype,{angle:{get:function(){return this._angle},set:function(e){this._angle=e}}});PZ.prototype.emit=function(e){let t=Math.tan(this._angle),n=D.randomBetween(0,D.TWO_PI),i=D.randomBetween(0,t),o=i*Math.cos(n),r=i*Math.sin(n),s=1;e.velocity=d.fromElements(o,r,s,e.velocity),d.normalize(e.velocity,e.velocity),e.position=d.clone(d.ZERO,e.position)};var Xbe=PZ;function ZP(e){e=e??V.EMPTY_OBJECT;let t=e.attributeName,n=e.perInstanceAttribute;l(n)||(n=!1);let i=e.glslDatatype??"vec3",o=`v_${t}`,r;if(t==="normal"||t==="tangent"||t==="bitangent")r=`vec4 getColor() { return vec4((${o} + vec3(1.0)) * 0.5, 1.0); } +`;else switch(t==="st"&&(i="vec2"),i){case"float":r=`vec4 getColor() { return vec4(vec3(${o}), 1.0); } +`;break;case"vec2":r=`vec4 getColor() { return vec4(${o}, 0.0, 1.0); } +`;break;case"vec3":r=`vec4 getColor() { return vec4(${o}, 1.0); } +`;break;case"vec4":r=`vec4 getColor() { return ${o}; } +`;break}let s=`in vec3 position3DHigh; +in vec3 position3DLow; +in float batchId; +${n?"":`in ${i} ${t}; +`}out ${i} ${o}; +void main() +{ +vec4 p = czm_translateRelativeToEye(position3DHigh, position3DLow); +${n?`${o} = czm_batchTable_${t}(batchId); +`:`${o} = ${t}; +`}gl_Position = czm_modelViewProjectionRelativeToEye * p; +}`,a=`in ${i} ${o}; +${r} +void main() +{ +out_FragColor = getColor(); +}`;this.material=void 0,this.translucent=e.translucent??!1,this._vertexShaderSource=e.vertexShaderSource??s,this._fragmentShaderSource=e.fragmentShaderSource??a,this._renderState=go.getDefaultRenderState(!1,!1,e.renderState),this._closed=e.closed??!1,this._attributeName=t,this._glslDatatype=i}Object.defineProperties(ZP.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},attributeName:{get:function(){return this._attributeName}},glslDatatype:{get:function(){return this._glslDatatype}}});ZP.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;ZP.prototype.isTranslucent=go.prototype.isTranslucent;ZP.prototype.getRenderState=go.prototype.getRenderState;var Jbe=ZP;function j4(e){e=e??V.EMPTY_OBJECT,this.length=e.length??1e7,this._length=void 0,this.width=e.width??2,this._width=void 0,this.show=e.show??!0,this.modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._modelMatrix=new R,this.id=e.id,this._id=void 0,this._primitive=void 0}j4.prototype.update=function(e){if(this.show){if(!l(this._primitive)||!R.equals(this._modelMatrix,this.modelMatrix)||this._length!==this.length||this._width!==this.width||this._id!==this.id){this._modelMatrix=R.clone(this.modelMatrix,this._modelMatrix),this._length=this.length,this._width=this.width,this._id=this.id,l(this._primitive)&&this._primitive.destroy(),this.modelMatrix[12]===0&&this.modelMatrix[13]===0&&this.modelMatrix[14]===0&&(this.modelMatrix[14]=.01);let t=new Rt({geometry:new cy({positions:[d.ZERO,d.UNIT_X],width:this.width,vertexFormat:bs.VERTEX_FORMAT,colors:[G.RED,G.RED],arcType:un.NONE}),modelMatrix:R.multiplyByUniformScale(this.modelMatrix,this.length,new R),id:this.id,pickPrimitive:this}),n=new Rt({geometry:new cy({positions:[d.ZERO,d.UNIT_Y],width:this.width,vertexFormat:bs.VERTEX_FORMAT,colors:[G.GREEN,G.GREEN],arcType:un.NONE}),modelMatrix:R.multiplyByUniformScale(this.modelMatrix,this.length,new R),id:this.id,pickPrimitive:this}),i=new Rt({geometry:new cy({positions:[d.ZERO,d.UNIT_Z],width:this.width,vertexFormat:bs.VERTEX_FORMAT,colors:[G.BLUE,G.BLUE],arcType:un.NONE}),modelMatrix:R.multiplyByUniformScale(this.modelMatrix,this.length,new R),id:this.id,pickPrimitive:this});this._primitive=new kn({geometryInstances:[t,n,i],appearance:new bs,asynchronous:!1})}this._primitive.update(e)}};j4.prototype.isDestroyed=function(){return!1};j4.prototype.destroy=function(){return this._primitive=this._primitive&&this._primitive.destroy(),ue(this)};var Y4=j4;function Awt(e){this.direction=d.clone(e.direction),this.color=G.clone(e.color??G.WHITE),this.intensity=e.intensity??1}var Zbe=Awt;var q4=`in vec3 v_positionMC; +in vec3 v_positionEC; +in vec2 v_st; + +void main() +{ + czm_materialInput materialInput; + + vec3 normalEC = normalize(czm_normal3D * czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0))); +#ifdef FACE_FORWARD + normalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC); +#endif + + materialInput.s = v_st.s; + materialInput.st = v_st; + materialInput.str = vec3(v_st, 0.0); + + // Convert tangent space material normal to eye space + materialInput.normalEC = normalEC; + materialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, materialInput.normalEC); + + // Convert view vector to world space + vec3 positionToEyeEC = -v_positionEC; + materialInput.positionToEyeEC = positionToEyeEC; + + czm_material material = czm_getMaterial(materialInput); + +#ifdef FLAT + out_FragColor = vec4(material.diffuse + material.emission, material.alpha); +#else + out_FragColor = czm_phong(normalize(positionToEyeEC), material, czm_lightDirectionEC); +#endif +} +`;var K4=`in vec3 position3DHigh; +in vec3 position3DLow; +in vec2 st; +in float batchId; + +out vec3 v_positionMC; +out vec3 v_positionEC; +out vec2 v_st; + +void main() +{ + vec4 p = czm_computePosition(); + + v_positionMC = position3DHigh + position3DLow; // position in model coordinates + v_positionEC = (czm_modelViewRelativeToEye * p).xyz; // position in eye coordinates + v_st = st; + + gl_Position = czm_modelViewProjectionRelativeToEye * p; +} +`;function P0(e){e=e??V.EMPTY_OBJECT;let t=e.translucent??!0,n=e.aboveGround??!1;this.material=l(e.material)?e.material:ao.fromType(ao.ColorType),this.translucent=e.translucent??!0,this._vertexShaderSource=e.vertexShaderSource??K4,this._fragmentShaderSource=e.fragmentShaderSource??q4,this._renderState=go.getDefaultRenderState(t,!n,e.renderState),this._closed=!1,this._flat=e.flat??!1,this._faceForward=e.faceForward??n,this._aboveGround=n}Object.defineProperties(P0.prototype,{vertexShaderSource:{get:function(){return this._vertexShaderSource}},fragmentShaderSource:{get:function(){return this._fragmentShaderSource}},renderState:{get:function(){return this._renderState}},closed:{get:function(){return this._closed}},vertexFormat:{get:function(){return P0.VERTEX_FORMAT}},flat:{get:function(){return this._flat}},faceForward:{get:function(){return this._faceForward}},aboveGround:{get:function(){return this._aboveGround}}});P0.VERTEX_FORMAT=Pe.POSITION_AND_ST;P0.prototype.getFragmentShaderSource=go.prototype.getFragmentShaderSource;P0.prototype.isTranslucent=go.prototype.isTranslucent;P0.prototype.getRenderState=go.prototype.getRenderState;var $be=P0;function hu(e){this._scene=e.scene,this.samplingWindow=e.samplingWindow??hu.defaultSettings.samplingWindow,this.quietPeriod=e.quietPeriod??hu.defaultSettings.quietPeriod,this.warmupPeriod=e.warmupPeriod??hu.defaultSettings.warmupPeriod,this.minimumFrameRateDuringWarmup=e.minimumFrameRateDuringWarmup??hu.defaultSettings.minimumFrameRateDuringWarmup,this.minimumFrameRateAfterWarmup=e.minimumFrameRateAfterWarmup??hu.defaultSettings.minimumFrameRateAfterWarmup,this._lowFrameRate=new _e,this._nominalFrameRate=new _e,this._frameTimes=[],this._needsQuietPeriod=!0,this._quietPeriodEndTime=0,this._warmupPeriodEndTime=0,this._frameRateIsLow=!1,this._lastFramesPerSecond=void 0,this._pauseCount=0;let t=this;this._preUpdateRemoveListener=this._scene.preUpdate.addEventListener(function(o,r){pwt(t,r)}),this._hiddenPropertyName=document.hidden!==void 0?"hidden":document.mozHidden!==void 0?"mozHidden":document.msHidden!==void 0?"msHidden":document.webkitHidden!==void 0?"webkitHidden":void 0;let n=document.hidden!==void 0?"visibilitychange":document.mozHidden!==void 0?"mozvisibilitychange":document.msHidden!==void 0?"msvisibilitychange":document.webkitHidden!==void 0?"webkitvisibilitychange":void 0;function i(){gwt(t)}this._visibilityChangeRemoveListener=void 0,l(n)&&(document.addEventListener(n,i,!1),this._visibilityChangeRemoveListener=function(){document.removeEventListener(n,i,!1)})}hu.defaultSettings={samplingWindow:5,quietPeriod:2,warmupPeriod:5,minimumFrameRateDuringWarmup:4,minimumFrameRateAfterWarmup:8};hu.fromScene=function(e){return(!l(e._frameRateMonitor)||e._frameRateMonitor.isDestroyed())&&(e._frameRateMonitor=new hu({scene:e})),e._frameRateMonitor};Object.defineProperties(hu.prototype,{scene:{get:function(){return this._scene}},lowFrameRate:{get:function(){return this._lowFrameRate}},nominalFrameRate:{get:function(){return this._nominalFrameRate}},lastFramesPerSecond:{get:function(){return this._lastFramesPerSecond}}});hu.prototype.pause=function(){++this._pauseCount,this._pauseCount===1&&(this._frameTimes.length=0,this._lastFramesPerSecond=void 0)};hu.prototype.unpause=function(){--this._pauseCount,this._pauseCount<=0&&(this._pauseCount=0,this._needsQuietPeriod=!0)};hu.prototype.isDestroyed=function(){return!1};hu.prototype.destroy=function(){return this._preUpdateRemoveListener(),l(this._visibilityChangeRemoveListener)&&this._visibilityChangeRemoveListener(),ue(this)};function pwt(e,t){if(e._pauseCount>0)return;let n=Oi();if(e._needsQuietPeriod)e._needsQuietPeriod=!1,e._frameTimes.length=0,e._quietPeriodEndTime=n+e.quietPeriod/ri.SECONDS_PER_MILLISECOND,e._warmupPeriodEndTime=e._quietPeriodEndTime+(e.warmupPeriod+e.samplingWindow)/ri.SECONDS_PER_MILLISECOND;else if(n>=e._quietPeriodEndTime){e._frameTimes.push(n);let i=n-e.samplingWindow/ri.SECONDS_PER_MILLISECOND;if(e._frameTimes.length>=2&&e._frameTimes[0]<=i){for(;e._frameTimes.length>=2&&e._frameTimes[1]<i;)e._frameTimes.shift();let o=(n-e._frameTimes[0])/(e._frameTimes.length-1);e._lastFramesPerSecond=1e3/o;let r=1e3/(n>e._warmupPeriodEndTime?e.minimumFrameRateAfterWarmup:e.minimumFrameRateDuringWarmup);o>r?e._frameRateIsLow||(e._frameRateIsLow=!0,e._needsQuietPeriod=!0,e.lowFrameRate.raiseEvent(e.scene,e._lastFramesPerSecond)):e._frameRateIsLow&&(e._frameRateIsLow=!1,e._needsQuietPeriod=!0,e.nominalFrameRate.raiseEvent(e.scene,e._lastFramesPerSecond))}}}function gwt(e){document[e._hiddenPropertyName]?e.pause():e.unpause()}var X4=hu;var eTe=Es(hZ(),1);function RZ(){this._image=new Image}RZ.prototype.isReady=function(){return!0};RZ.prototype.shouldDiscardImage=function(e){return e===this._image};function R0(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tileDiscardPolicy=e.tileDiscardPolicy,this._tilingScheme=new co({numberOfLevelZeroTilesX:2,numberOfLevelZeroTilesY:2,rectangle:new ae(-D.PI,-D.PI,D.PI,D.PI),ellipsoid:e.ellipsoid});let t=e.credit;typeof t=="string"&&(t=new Dt(t)),this._credit=t,this._tileWidth=256,this._tileHeight=256,this._maximumLevel=23,l(this._tileDiscardPolicy)||(this._tileDiscardPolicy=new RZ),this._errorEvent=new _e}Object.defineProperties(R0.prototype,{url:{get:function(){return this._metadata.url}},proxy:{get:function(){return this._metadata.proxy}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){return this._maximumLevel}},minimumLevel:{get:function(){return 0}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){return this._tileDiscardPolicy}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){return this._credit}},hasAlphaChannel:{get:function(){return!1}}});R0.fromMetadata=function(e,t){if(!e.imageryPresent)throw new ce(`The server ${e.url} doesn't have imagery`);let n=new R0(t);return n._metadata=e,n};R0.prototype.getTileCredits=function(e,t,n){let i=this._metadata,o=i.getTileInformation(e,t,n);if(l(o)){let r=i.providers[o.imageryProvider];if(l(r))return[r]}};R0.prototype.requestImage=function(e,t,n,i){let o=this._tileDiscardPolicy._image,r=this._metadata,s=Yy.tileXYToQuadKey(e,t,n),a=r.getTileInformation(e,t,n);if(!l(a)){if(r.isValid(s)){let u=new pr({throttle:i.throttle,throttleByServer:i.throttleByServer,type:i.type,priorityFunction:i.priorityFunction});r.populateSubtree(e,t,n,u);return}return Promise.resolve(o)}if(!a.hasImagery())return Promise.resolve(o);let c=_wt(this,a,e,t,n,i).fetchArrayBuffer();if(l(c))return c.then(function(u){U4(r.key,u);let f=new Uint8Array(u),h,A=r.protoImagery;if((!l(A)||!A)&&(h=ywt(f)),!l(h)&&(!l(A)||A)){let g=Cwt(f);h=g.imageType,f=g.imageData}return!l(h)||!l(f)?o:YI({uint8Array:f,format:h,flipY:!0})})};R0.prototype.pickFeatures=function(e,t,n,i,o){};function _wt(e,t,n,i,o,r){let s=Yy.tileXYToQuadKey(n,i,o),a=t.imageryVersion;return a=l(a)&&a>0?a:1,e._metadata.resource.getDerivedResource({url:`flatfile?f1-0${s}-i.${a.toString()}`,request:r})}function ywt(e){let t="JFIF";if(e[6]===t.charCodeAt(0)&&e[7]===t.charCodeAt(1)&&e[8]===t.charCodeAt(2)&&e[9]===t.charCodeAt(3))return"image/jpeg";let n="PNG";if(e[1]===n.charCodeAt(0)&&e[2]===n.charCodeAt(1)&&e[3]===n.charCodeAt(2))return"image/png"}function Cwt(e){let t=eTe.Reader.create(e),n=t.len,i={};for(;t.pos<n;){let s=t.uint32(),a;switch(s>>>3){case 1:i.imageType=t.uint32();break;case 2:i.imageData=t.bytes();break;case 3:i.alphaType=t.uint32();break;case 4:i.imageAlpha=t.bytes();break;case 5:if(a=i.copyrightIds,l(a)||(a=i.copyrightIds=[]),(s&7)===2){let c=t.uint32()+t.pos;for(;t.pos<c;)a.push(t.uint32())}else a.push(t.uint32());break;default:t.skipType(s&7);break}}let o=i.imageType;if(l(o))switch(o){case 0:i.imageType="image/jpeg";break;case 4:i.imageType="image/png";break;default:throw new ce("GoogleEarthEnterpriseImageryProvider: Unsupported image type.")}let r=i.alphaType;return l(r)&&r!==0&&(console.log("GoogleEarthEnterpriseImageryProvider: External alpha not supported."),delete i.alphaType,delete i.imageAlpha),i}var tTe=R0;var Ewt=new G(1,1,1,.4),Iwt=new G(0,1,0,.05),xwt=new G(0,.5,0,.2);function M0(e){e=e??V.EMPTY_OBJECT,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new co({ellipsoid:e.ellipsoid}),this._cells=e.cells??8,this._color=e.color??Ewt,this._glowColor=e.glowColor??Iwt,this._glowWidth=e.glowWidth??6,this._backgroundColor=e.backgroundColor??xwt,this._errorEvent=new _e,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._canvasSize=e.canvasSize??256,this._canvas=this._createGridCanvas()}Object.defineProperties(M0.prototype,{proxy:{get:function(){}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){}},minimumLevel:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},hasAlphaChannel:{get:function(){return!0}}});M0.prototype._drawGrid=function(e){let n=this._canvasSize;for(let i=0;i<=this._cells;++i){let r=1+i/this._cells*(n-1);e.moveTo(r,0),e.lineTo(r,n),e.moveTo(0,r),e.lineTo(n,r)}e.stroke()};M0.prototype._createGridCanvas=function(){let e=document.createElement("canvas");e.width=this._canvasSize,e.height=this._canvasSize;let t=0,n=this._canvasSize,i=e.getContext("2d"),o=this._backgroundColor.toCssColorString();i.fillStyle=o,i.fillRect(t,t,n,n);let r=this._glowColor.toCssColorString();i.strokeStyle=r,i.lineWidth=this._glowWidth,i.strokeRect(t,t,n,n),this._drawGrid(i),i.lineWidth=this._glowWidth*.5,i.strokeRect(t,t,n,n),this._drawGrid(i);let s=this._color.toCssColorString();return i.strokeStyle=s,i.lineWidth=2,i.strokeRect(t,t,n,n),i.lineWidth=1,this._drawGrid(i),e};M0.prototype.getTileCredits=function(e,t,n){};M0.prototype.requestImage=function(e,t,n,i){return Promise.resolve(this._canvas)};M0.prototype.pickFeatures=function(e,t,n,i,o){};var nTe=M0;function Wh(){}Wh._maxDecodingConcurrency=Math.max(jt.hardwareConcurrency-1,1);Wh._decodeTaskProcessor=new mi("decodeI3S",Wh._maxDecodingConcurrency);Wh._promise=void 0;async function bwt(){if(await Wh._decodeTaskProcessor.initWebAssemblyModule({wasmBinaryFile:"ThirdParty/draco_decoder.wasm"}))return Wh._decodeTaskProcessor;throw new ce("I3S decoder could not be initialized.")}Wh.decode=async function(e,t,n,i,o){return l(Wh._promise)||(Wh._promise=bwt()),Wh._promise.then(function(r){let s=n._parent._data,a=n._parent._inverseRotationMatrix,c=0,u=0,f=0;l(s.obb)?(c=s.obb.center[0],u=s.obb.center[1],f=s.obb.center[2]):l(s.mbs)&&(c=s.mbs[0],u=s.mbs[1],f=s.mbs[2]);let h=J.fromRotationX(-D.PI_OVER_TWO),A=new J;J.multiply(h,a,A);let g=Ae.fromDegrees(c,u,f),m=te.WGS84.cartographicToCartesian(g),_={binaryData:n._data,featureData:l(i)&&l(i[0])?i[0].data:void 0,schema:t,bufferInfo:n._geometryBufferInfo,ellipsoidRadiiSquare:te.WGS84.radiiSquared,url:e,geoidDataList:n._dataProvider._geoidDataList,cartographicCenter:g,cartesianCenter:m,parentRotation:A,enableFeatures:n._dataProvider.showFeatures,splitGeometryByColorTransparency:n._dataProvider.adjustMaterialAlphaMode,symbologyData:o,calculateNormals:n._dataProvider.calculateNormals};return r.scheduleTask(_)})};var J4=Wh;function MZ(e,t){this._parent=e,this._dataProvider=e._dataProvider,this._layer=e._layer,l(this._parent._nodeIndex)?this._resource=this._parent._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.attribute.resource}/${t}`}):this._resource=this._parent.resource.getDerivedResource({url:t})}Object.defineProperties(MZ.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}}});MZ.prototype.load=async function(){return this._data=await xA.loadJson(this._resource),this._data};var Z4=MZ;function ag(e,t){this._storageInfo=t,this._parent=e,this._dataProvider=e._dataProvider,this._loadPromise=void 0;let n=`attributes/${t.key}/0`;l(this._parent._nodeIndex)?this._resource=this._parent._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.attribute.resource}/${n}`}):this._resource=this._parent.resource.getDerivedResource({url:n})}Object.defineProperties(ag.prototype,{resource:{get:function(){return this._resource}},header:{get:function(){return this._header}},values:{get:function(){if(l(this._values)){if(l(this._values.attributeValues))return this._values.attributeValues;if(l(this._values.objectIds))return this._values.objectIds}return[]}},name:{get:function(){return this._storageInfo.name}}});function $4(e){return e==="UInt8"||e==="Int8"?1:e==="UInt16"||e==="Int16"?2:e==="UInt32"||e==="Int32"||e==="Oid32"||e==="Float32"?4:e==="UInt64"||e==="Int64"||e==="Float64"?8:0}function Twt(e){return e==="String"?1:$4(e)}async function Swt(e){let t=await e._dataProvider._loadBinary(e._resource),n=new DataView(t);e._data=t,e._validateHeader(n);let i=e._parseHeader(n),o=e._getBodyOffset(i);e._validateBody(n,o),e._parseBody(n,o)}ag.prototype.load=function(){return l(this._loadPromise)?this._loadPromise:(this._loadPromise=Swt(this).catch(function(e){console.error(e)}),this._loadPromise)};ag.prototype._parseValue=function(e,t,n){let i;if(t==="UInt8")i=e.getUint8(n),n+=1;else if(t==="Int8")i=e.getInt8(n),n+=1;else if(t==="UInt16")i=e.getUint16(n,!0),n+=2;else if(t==="Int16")i=e.getInt16(n,!0),n+=2;else if(t==="UInt32")i=e.getUint32(n,!0),n+=4;else if(t==="Oid32")i=e.getUint32(n,!0),n+=4;else if(t==="Int32")i=e.getInt32(n,!0),n+=4;else if(t==="UInt64"){let o=e.getUint32(n,!0),r=e.getUint32(n+4,!0);i=o+Math.pow(2,32)*r,n+=8}else if(t==="Int64"){let o=e.getUint32(n,!0),r=e.getUint32(n+4,!0);r<Math.pow(2,31)?i=o+Math.pow(2,32)*r:i=o+Math.pow(2,32)*(r-Math.pow(2,32)),n+=8}else t==="Float32"?(i=e.getFloat32(n,!0),n+=4):t==="Float64"?(i=e.getFloat64(n,!0),n+=8):t==="String"&&(i=String.fromCharCode(e.getUint8(n)),n+=1);return{value:i,offset:n}};ag.prototype._parseHeader=function(e){let t=0;this._header={};for(let n=0;n<this._storageInfo.header.length;n++){let i=this._storageInfo.header[n],o=this._parseValue(e,i.valueType,t);this._header[i.property]=o.value,t=o.offset}return t};ag.prototype._parseBody=function(e,t){this._values={};for(let n=0;n<this._storageInfo.ordering.length;n++){let i=this._storageInfo.ordering[n],o=i==="ObjectIds"?"objectIds":i,r=this._storageInfo[o];if(l(r)){this._values[o]=[];for(let s=0;s<this._header.count;++s)if(r.valueType!=="String"){let a=this._parseValue(e,r.valueType,t);this._values[o].push(a.value),t=a.offset}else{let a=this._values.attributeByteCounts[s],c="";for(let u=0;u<a;++u){let f=this._parseValue(e,r.valueType,t);f.value.charCodeAt(0)!==0&&(c+=f.value),t=f.offset}this._values[o].push(c)}}}};ag.prototype._getBodyOffset=function(e){let t=0;return l(this._storageInfo.attributeValues)?t=$4(this._storageInfo.attributeValues.valueType):l(this._storageInfo.objectIds)&&(t=$4(this._storageInfo.objectIds.valueType)),t>0?Math.ceil(e/t)*t:e};ag.prototype._validateHeader=function(e){let t=0;for(let n=0;n<this._storageInfo.header.length;n++){let i=this._storageInfo.header[n];t+=Twt(i.valueType)}if(e.byteLength<t)throw new ce(`Invalid attribute buffer size (field: ${this.name}, header: ${t}, actual: ${e.byteLength})`)};ag.prototype._validateBody=function(e,t){if(!l(this._header.count))throw new ce(`Invalid attribute buffer (field: ${this.name}, count is missing)`);let n;for(let i=0;i<this._storageInfo.ordering.length&&t<e.byteLength;i++){let o=this._storageInfo.ordering[i],r=o==="ObjectIds"?"objectIds":o,s=this._storageInfo[r];if(l(s))if(s.valueType!=="String"){r==="attributeByteCounts"&&(n=t);let a=$4(s.valueType);t+=a*this._header.count}else{if(!l(n))throw new ce(`Invalid attribute buffer (field: ${this.name}, attributeByteCounts is missing)`);for(let a=0;a<this._header.count&&t<e.byteLength;++a){let c=this._parseValue(e,this._storageInfo.attributeByteCounts.valueType,n);t+=c.value,n=c.offset}}else throw new ce(`Invalid attribute buffer (field: ${this.name}, ${r} is missing)`)}if(e.byteLength<t)throw new ce(`Invalid attribute buffer size (field: ${this.name}, expected: ${t}, actual: ${e.byteLength})`)};var eH=ag;function $P(e,t){let n=e._dataProvider,i=e._layer,o;l(e._nodeIndex)?o=i.resource.getDerivedResource({url:`nodes/${e._data.mesh.geometry.resource}/${t}`}):o=e.resource.getDerivedResource({url:t}),this._parent=e,this._dataProvider=n,this._layer=i,this._resource=o,this._customAttributes=void 0}Object.defineProperties($P.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},customAttributes:{get:function(){return this._customAttributes}}});$P.prototype.load=function(){let e=this;return this._dataProvider._loadBinary(this._resource).then(function(t){return e._data=t,t})};var wwt=new d,Bwt=new d,Dwt=new d,vwt=new d,Pwt=new d;function NZ(e,t,n,i){let o=d.subtract(i,n,wwt),r=d.cross(o,d.subtract(e,n,Bwt),vwt),s=d.cross(o,d.subtract(t,n,Dwt),Pwt);return d.dot(r,s)>=0}var Rwt=new d,Mwt=new d,Nwt=new d,Lwt=new d,Owt=new d,Fwt=new d,Qwt=new d,kwt=new d,Uwt=new d,Gwt=new d;$P.prototype.getClosestPointIndexOnTriangle=function(e,t,n){if(l(this._customAttributes)&&l(this._customAttributes.positions)){let i=new d(e,t,n);i.x-=this._customAttributes.cartesianCenter.x,i.y-=this._customAttributes.cartesianCenter.y,i.z-=this._customAttributes.cartesianCenter.z,J.multiplyByVector(this._customAttributes.parentRotation,i,i);let o=Number.MAX_VALUE,r,s,a,c,u=this._customAttributes.positions,f=this._customAttributes.indices,h;l(f)?h=f.length:h=u.length/3;for(let A=0;A<h;A++){let g,m,_;l(f)?(g=f[A],m=f[A+1],_=f[A+2]):(g=A*3,m=A*3+1,_=A*3+2);let y=d.fromElements(u[g*3],u[g*3+1],u[g*3+2],Rwt),C=d.fromElements(u[m*3],u[m*3+1],u[m*3+2],Mwt),E=new d(u[_*3],u[_*3+1],u[_*3+2],Nwt);if(!NZ(i,y,C,E)||!NZ(i,C,y,E)||!NZ(i,E,y,C))continue;let I=d.subtract(C,y,Lwt),b=d.subtract(E,y,Owt),S=d.cross(I,b,Fwt);if(d.magnitude(S)===0)continue;let B=d.normalize(S,Qwt),v=d.subtract(i,y,kwt),P=Math.abs(d.dot(v,B));if(P<o){o=P,r=A;let N=d.magnitudeSquared(d.subtract(i,y,v)),L=d.magnitudeSquared(d.subtract(i,C,Uwt)),p=d.magnitudeSquared(d.subtract(i,E,Gwt));N<L&&N<p?(a=g,c=y,s=N):L<p?(a=m,c=C,s=L):(a=_,c=E,s=p)}}if(l(r))return{index:a,distanceSquared:s,distance:Math.sqrt(s),queriedPosition:i,closestPosition:d.clone(c)}}return{index:-1,distanceSquared:Number.Infinity,distance:Number.Infinity}};function iTe(e){let t=[],n=e.length;for(let i=0;i<n;i++)i<3?t.push(xS(e[i])):t.push(e[i]);return t}$P.prototype._generateGltf=function(e,t,n,i,o,r,s,a){let c={pbrMetallicRoughness:{metallicFactor:0},doubleSided:!0,name:"Material"},u=!1,f,h="";if(l(this._parent._data.mesh)&&l(this._layer._data.materialDefinitions)){let I=this._parent._data.mesh.material.definition;if(I>=0&&I<this._layer._data.materialDefinitions.length){if(f=this._layer._data.materialDefinitions[I],c=f,l(c.pbrMetallicRoughness)&&l(c.pbrMetallicRoughness.baseColorTexture)){u=!0,c.pbrMetallicRoughness.baseColorTexture.index=0;let b="0";if(l(this._layer._data.textureSetDefinitions))for(let S=0;S<this._layer._data.textureSetDefinitions.length;S++){let B=this._layer._data.textureSetDefinitions[S];for(let v=0;v<B.formats.length;v++){let P=B.formats[v];if(P.format==="jpg"){b=P.name;break}}}l(this._parent._data.mesh)&&this._parent._data.mesh.material.resource>=0&&(h=this._layer.resource.getDerivedResource({url:`nodes/${this._parent._data.mesh.material.resource}/textures/${b}`}).url)}l(c.pbrMetallicRoughness)&&l(c.pbrMetallicRoughness.baseColorFactor)&&(c.pbrMetallicRoughness.baseColorFactor=iTe(c.pbrMetallicRoughness.baseColorFactor)),l(c.emissiveFactor)&&(c.emissiveFactor=iTe(c.emissiveFactor))}}else l(this._parent._data.textureData)&&(u=!0,h=this._parent.resource.getDerivedResource({url:`${this._parent._data.textureData[0].href}`}).url,c.pbrMetallicRoughness.baseColorTexture={index:0});l(c.alphaMode)&&(c.alphaMode=c.alphaMode.toUpperCase());let A=[],g=[],m=[];u&&(A=[{sampler:0,source:0}],g=[{uri:h}],m=[{magFilter:9729,minFilter:9986,wrapS:10497,wrapT:10497}]);let _=[],y=n.length;for(let E=0;E<y;E++){let I=n[E].primitives,b=I.length;for(let S=0;S<b;S++){let B=I[S];if(l(B.material)){for(;B.material>=_.length;){let P=ze(c,!0);_.push(P)}let v=_[B.material];l(B.extra)&&B.extra.isTransparent?l(v.alphaMode)||(v.alphaMode="BLEND"):v.alphaMode==="BLEND"&&(v.alphaMode="OPAQUE")}}}return{scene:0,scenes:[{nodes:e}],nodes:t,meshes:n,buffers:i,bufferViews:o,accessors:r,materials:_,textures:A,images:g,samplers:m,asset:{version:"2.0"},extensions:s,extensionsUsed:a}};var eR=$P;function Vc(e,t,n){let i,o,r,s;n?(i=0,o=e):(i=e._level+1,o=e._layer),typeof t=="number"?r=t:s=e.resource.getDerivedResource({url:`${t}/`}),this._parent=e,this._dataProvider=e._dataProvider,this._isRoot=n,this._level=i,this._layer=o,this._nodeIndex=r,this._resource=s,this._isLoading=!1,this._tile=void 0,this._data=void 0,this._geometryData=[],this._featureData=[],this._fields={},this._children=[],this._childrenReadyPromise=void 0,this._globalTransform=void 0,this._inverseGlobalTransform=void 0,this._inverseRotationMatrix=void 0,this._symbologyData=void 0}Object.defineProperties(Vc.prototype,{resource:{get:function(){return this._resource}},layer:{get:function(){return this._layer}},parent:{get:function(){return this._parent}},children:{get:function(){return this._children}},geometryData:{get:function(){return this._geometryData}},featureData:{get:function(){return this._featureData}},fields:{get:function(){return this._fields}},tile:{get:function(){return this._tile}},data:{get:function(){return this._data}}});Vc.prototype.load=async function(){let e=this;function t(){if(!e._isRoot){let o=e._create3DTileDefinition();e._tile=new ah(e._layer._tileset,e._dataProvider.resource,o,e._parent._tile),e._tile._i3sNode=e}}if(!l(this._nodeIndex)){let o=await xA.loadJson(this._resource);e._data=o,t();return}let n=await this._layer._getNodeInNodePages(this._nodeIndex);e._data=n;let i;e._isRoot?i="nodes/root/":l(n.mesh)&&(i=`../${n.mesh.geometry.resource}/`),l(i)&&l(e._parent.resource)&&(e._resource=e._parent.resource.getDerivedResource({url:i})),t()};function oTe(e,t){let n=new eH(e,t);return e._fields[t.name]=n,n.load()}Vc.prototype.loadFields=function(){let e=this._layer._data.attributeStorageInfo,t=[];if(l(e))for(let n=0;n<e.length;n++){let i=e[n],o=this._fields[i.name];l(o)?t.push(o.load()):t.push(oTe(this,i))}return Promise.all(t)};Vc.prototype.loadField=function(e){let t=this._fields[e];if(l(t))return t.load();let n=this._layer._data.attributeStorageInfo;if(l(n))for(let i=0;i<n.length;i++){let o=n[i];if(o.name===e)return oTe(this,o)}return Promise.resolve()};Vc.prototype.getFieldsForPickedPosition=function(e){let t=this.geometryData[0];if(!l(t.customAttributes.featureIndex))return{};let n=t.getClosestPointIndexOnTriangle(e.x,e.y,e.z);if(n.index===-1||n.index>t.customAttributes.featureIndex.length)return{};let i=t.customAttributes.featureIndex[n.index];return this.getFieldsForFeature(i)};Vc.prototype.getFieldsForFeature=function(e){let t={};for(let n in this.fields)if(this.fields.hasOwnProperty(n)){let i=this.fields[n];e>=0&&e<i.values.length&&(t[i.name]=i.values[e])}return t};Vc.prototype._loadChildren=function(){let e=this;if(l(this._childrenReadyPromise))return this._childrenReadyPromise;let t=[];if(l(e._data.children))for(let n=0;n<e._data.children.length;n++){let i=e._data.children[n],o=new Vc(e,i.href??i,!1);e._children.push(o),t.push(o.load())}return this._childrenReadyPromise=Promise.all(t).then(function(){for(let n=0;n<e._children.length;n++)e._tile.children.push(e._children[n]._tile)}),this._childrenReadyPromise};Vc.prototype._loadGeometryData=function(){let e=[];if(l(this._data.geometryData))for(let t=0;t<this._data.geometryData.length;t++){let n=new eR(this,this._data.geometryData[t].href);this._geometryData.push(n),e.push(n.load())}else if(l(this._data.mesh)){let t=this._layer._findBestGeometryBuffers(this._data.mesh.geometry.definition,["position","uv0"]),n=`./geometries/${t.bufferIndex}/`,i=new eR(this,n);i._geometryDefinitions=t.definition,i._geometryBufferInfo=t.geometryBufferInfo,this._geometryData.push(i),e.push(i.load())}return Promise.all(e)};Vc.prototype._loadFeatureData=function(){let e=[];if(l(this._data.featureData))for(let t=0;t<this._data.featureData.length;t++){let n=new Z4(this,this._data.featureData[t].href);this._featureData.push(n),e.push(n.load())}return Promise.all(e)};Vc.prototype._clearGeometryData=function(){this._geometryData=[]};Vc.prototype._create3DTileDefinition=function(){let e=this._data.obb,t=this._data.mbs;if(!l(e)&&!l(t)){console.error("Failed to load I3S node. Bounding volume is required.");return}let n;if(l(e)?n=Ae.fromDegrees(e.center[0],e.center[1],e.center[2]):n=Ae.fromDegrees(t[0],t[1],t[2]),l(this._dataProvider._geoidDataList)&&l(n))for(let C=0;C<this._dataProvider._geoidDataList.length;C++){let E=this._dataProvider._geoidDataList[C],I=E.projection.project(n);if(I.x>E.nativeExtent.west&&I.x<E.nativeExtent.east&&I.y>E.nativeExtent.south&&I.y<E.nativeExtent.north){n.height+=Wwt(I.x,I.y,E);break}}let i={},o,r=0;l(e)?(i={box:[0,0,0,e.halfSize[0],0,0,0,e.halfSize[1],0,0,0,e.halfSize[2]]},r=Math.max(Math.max(this._data.obb.halfSize[0],this._data.obb.halfSize[1]),this._data.obb.halfSize[2]),o=te.WGS84.cartographicToCartesian(n)):(i={sphere:[0,0,0,t[3]]},o=te.WGS84.cartographicToCartesian(n),r=this._data.mbs[3]),r*=2;let s=1/0;if(l(this._data.lodThreshold))if(this._layer._data.nodePages.lodSelectionMetricType==="maxScreenThresholdSQ"){let C=Math.sqrt(this._data.lodThreshold/(Math.PI*.25));s=r/C}else if(this._layer._data.nodePages.lodSelectionMetricType==="maxScreenThreshold"){let C=this._data.lodThreshold;s=r/C}else console.error("Invalid lodSelectionMetricType in Layer");else if(l(this._data.lodSelection))for(let C=0;C<this._data.lodSelection.length;C++)this._data.lodSelection[C].metricType==="maxScreenThreshold"&&(s=r/this._data.lodSelection[C].maxError);s===1/0&&(s=1e5);let a=s*16,c=new pc(0,0,0),u=kt.headingPitchRollQuaternion(o,c);l(this._data.obb)&&(u=new Le(this._data.obb.quaternion[0],this._data.obb.quaternion[1],this._data.obb.quaternion[2],this._data.obb.quaternion[3]));let f=J.fromQuaternion(u),h=J.inverse(f,new J),A=new R(f[0],f[1],f[2],0,f[3],f[4],f[5],0,f[6],f[7],f[8],0,o.x,o.y,o.z,1),g=R.inverse(A,new R),m=R.clone(A);l(this._parent._globalTransform)&&R.multiply(A,this._parent._inverseGlobalTransform,m),this._globalTransform=A,this._inverseGlobalTransform=g,this._inverseRotationMatrix=h;let _=[];for(let C=0;C<this._children.length;C++)_.push(this._children[C]._create3DTileDefinition());return{children:_,refine:"REPLACE",boundingVolume:i,transform:[m[0],m[4],m[8],m[12],m[1],m[5],m[9],m[13],m[2],m[6],m[10],m[14],m[3],m[7],m[11],m[15]],content:{uri:l(this._resource)?this._resource.url:void 0},geometricError:a}};Vc.prototype._loadSymbology=async function(){!l(this._symbologyData)&&l(this._layer._symbology)&&(this._symbologyData=await this._layer._symbology._getSymbology(this))};Vc.prototype._createContentURL=async function(){let e={scene:0,scenes:[{nodes:[0]}],nodes:[{name:"singleNode"}],meshes:[],buffers:[],bufferViews:[],accessors:[],materials:[],textures:[],images:[],samplers:[],asset:{version:"2.0"}},t=[this._loadGeometryData()];if(this._dataProvider.legacyVersion16&&t.push(this._loadFeatureData()),await Promise.all(t),l(this._geometryData)&&this._geometryData.length>0){this._dataProvider._applySymbology&&await this._loadSymbology();let o=this._geometryData[0].resource.url,r=this._layer._data.store.defaultGeometrySchema,s=this._geometryData[0],a=await J4.decode(o,r,s,this._featureData[0],this._symbologyData);if(!l(a))return;e=s._generateGltf(a.meshData.nodesInScene,a.meshData.nodes,a.meshData.meshes,a.meshData.buffers,a.meshData.bufferViews,a.meshData.accessors,a.meshData.rootExtensions,a.meshData.extensionsUsed),this._geometryData[0]._customAttributes=a.meshData._customAttributes}let n=this._dataProvider._binarizeGltf(e),i=new Blob([n],{type:"application/binary"});return URL.createObjectURL(i)};async function zwt(e){let t=e._layer._filters,n=[];for(let i=0;i<t.length;i++){let o=e.loadField(t[i].name);n.push(o)}return await Promise.all(n),t}function Vwt(e,t,n){if(!l(n.values)||n.values.length===0)return!1;let i=l(t)?t.values:[],o;e<i.length&&(o=i[e]);let r=!1;for(let s=0;s<n.values.length;s++)if(n.values[s]===o){r=!0;break}return r}async function rTe(e,t){let n=e._tile.content.batchTable;if(l(n)&&n.featuresLength>0){n.setAllShow(!0);let i=await zwt(e);if(i.length>0)for(let o=0;o<n.featuresLength;o++)for(let r=0;r<i.length;r++){let s=i[r];if(!Vwt(o,e._fields[s.name],s)){n.setShow(o,!1);break}}}t.show=!0}Vc.prototype._filterFeatures=function(){let e=[];for(let n=0;n<this._children.length;n++){let i=this._children[n]._filterFeatures();e.push(i)}let t=this._tile?.content?._model;if(l(this._geometryData)&&this._geometryData.length>0&&l(t)&&t.ready){t.show=!1;let n=rTe(this,t);e.push(n)}return Promise.all(e)};ah.prototype._hookedRequestContent=ah.prototype.requestContent;ah.prototype.requestContent=function(){if(!this.tileset._isI3STileSet)return this._hookedRequestContent();if(!this._isLoading){this._isLoading=!0;let e=this;return this._i3sNode._createContentURL().then(t=>{if(!l(t)){e._isLoading=!1;return}return e._contentResource=new we({url:t}),e._hookedRequestContent()}).then(t=>{let n=t?._model;return l(e._i3sNode._geometryData)&&e._i3sNode._geometryData.length>0&&l(n)&&(n.show=!1,n.readyEvent.addEventListener(()=>{rTe(e._i3sNode,n)})),e._isLoading=!1,t})}};function Hwt(e,t,n,i,o,r){let s=n*(1-e)+i*e,a=o*(1-e)+r*e;return s*(1-t)+a*t}function tH(e,t,n,i){let o=e+t*n;return i[o]}function Wwt(e,t,n){let i=n.nativeExtent,o=(e-i.west)/(i.east-i.west)*(n.width-1),r=(t-i.south)/(i.north-i.south)*(n.height-1),s=Math.floor(o),a=Math.floor(r);o-=s,r-=a;let c=s<n.width?s+1:s,u=a<n.height?a+1:a;a=n.height-1-a,u=n.height-1-u;let f=tH(s,a,n.width,n.buffer),h=tH(c,a,n.width,n.buffer),A=tH(s,u,n.width,n.buffer),g=tH(c,u,n.width,n.buffer),m=Hwt(o,r,f,h,A,g);return m=m*n.scale+n.offset,m}Object.defineProperties(ah.prototype,{i3sNode:{get:function(){return this._i3sNode}}});var tR=Vc;function nH(e){this._layer=e,this._defaultSymbology=void 0,this._valueFields=[],this._uniqueValueHash=void 0,this._classBreaksHash=void 0,this._parseLayerSymbology()}Object.defineProperties(nH.prototype,{defaultSymbology:{get:function(){return this._defaultSymbology}}});function LZ(e,t){let n=[];for(let i=0;i<e.length;i++){let o=G.byteToFloat(e[i]);i<3?n.push(xS(o)):n.push(o)}return n.length===3&&(l(t)?n.push(1-t/100):n.push(1)),n}function SS(e,t){let n={edges:void 0,material:void 0};if(l(e)&&l(e.symbolLayers))for(let i=0;i<e.symbolLayers.length;i++){let o=e.symbolLayers[i];if(o.type==="Fill"){let r=o.edges,s=o.outline;if(l(r)?(n.edges={},l(r.color)&&(n.edges.color=LZ(r.color,r.transparency))):l(s)&&(n.edges={},l(s.color)&&(n.edges.color=LZ(s.color,s.transparency))),!t){let a=o.material;l(a)&&(n.material={colorMixMode:a.colorMixMode},l(a.color)&&(n.material.color=LZ(a.color,a.transparency)))}break}}return n}function jwt(e,t){if(l(e.uniqueValueGroups)){let n={};for(let i=0;i<e.uniqueValueGroups.length;i++){let o=e.uniqueValueGroups[i].classes;if(l(o))for(let r=0;r<o.length;r++){let s=SS(o[r].symbol,t),a=o[r].values;for(let c=0;c<a.length;c++){let u=a[c],f=n;for(let h=0;h<u.length;h++){let A=u[h];h===u.length-1?f[A]=s:(l(f[A])||(f[A]={}),f=f[A])}}}}return n}if(l(e.uniqueValueInfos)){let n={};for(let i=0;i<e.uniqueValueInfos.length;i++){let o=e.uniqueValueInfos[i];n[o.value]=SS(o.symbol,t)}return n}}function Ywt(e,t){if(l(e.classBreakInfos)){let n=[...e.classBreakInfos];n.sort(function(o,r){let s=o.classMaxValue??o.classMinValue,a=r.classMaxValue??r.classMinValue;return s-a});let i={ranges:[],symbols:[]};l(e.minValue)&&(i.ranges.push(e.minValue),i.symbols.push(void 0));for(let o=0;o<n.length;o++){let r=n[o];l(r.classMinValue)&&(i.ranges.length===0||r.classMinValue>i.ranges[i.ranges.length-1])&&(i.ranges.push(r.classMinValue),i.symbols.push(void 0)),l(r.classMaxValue)&&(i.ranges.length===0||r.classMaxValue>i.ranges[i.ranges.length-1])&&(i.ranges.push(r.classMaxValue),i.symbols.push(SS(r.symbol,t)))}return i.symbols.push(void 0),i}}nH.prototype._parseLayerSymbology=function(){let e=this._layer.data.drawingInfo;if(l(e)&&l(e.renderer)){let t=this._layer.data.cachedDrawingInfo,n=l(t)&&t.color===!0,i=e.renderer;i.type==="simple"?this._defaultSymbology=SS(i.symbol,n):i.type==="uniqueValue"?(this._defaultSymbology=SS(i.defaultSymbol,n),this._valueFields.push(i.field1),l(i.field2)&&this._valueFields.push(i.field2),l(i.field3)&&this._valueFields.push(i.field3),this._uniqueValueHash=jwt(i,n)):i.type==="classBreaks"&&(this._defaultSymbology=SS(i.defaultSymbol,n),this._valueFields.push(i.field),this._classBreaksHash=Ywt(i,n))}};function sTe(e,t,n,i){let o=t[n];if(i<o.length){let r=o[i],s=e[r];return l(s)&&++n<t.length?sTe(s,t,n,i):s}}function qwt(e,t){let n=0,i=e.length;if(n<i)do{let o=n+i>>>1;e[o]<t?n=o+1:i=o}while(n<i);return n}function Kwt(e,t,n){let i=t[n],o=qwt(e.ranges,i);return e.symbols[o]}nH.prototype._getSymbology=async function(e){let t={default:this._defaultSymbology};if(this._valueFields.length>0){let n=[];for(let r=0;r<this._valueFields.length;r++)n.push(e.loadField(this._valueFields[r]));await Promise.all(n);let i=[];for(let r=0;r<this._valueFields.length;r++)i.push(e.fields[this._valueFields[r]].values);let o;if(l(this._uniqueValueHash)?o=r=>sTe(this._uniqueValueHash,i,0,r):l(this._classBreaksHash)&&(o=r=>Kwt(this._classBreaksHash,i[0],r)),l(o)){let r=i[0];for(let s=0;s<r.length;s++){let a=o(s);l(a)&&(t[s]=a)}}}return t};var iH=nH;function mu(e,t,n){this._dataProvider=e,this._parent=n,!l(t.href)&&l(t.id)&&(t.href=`layers/${t.id}`);let i=this._parent.resource.getUrlComponent(),o="";i.match(/layers\/\d/)?o=`${i}`.replace(/\/+$/,""):o=`${i}`.replace(/\/?$/,"/").concat(`${t.href}`),this._version=t.store.version;let r=this._version.split(".");this._majorVersion=parseInt(r[0]),this._minorVersion=r.length>1?parseInt(r[1]):0,this._resource=new we({url:o}),this._resource.setQueryParameters(this._dataProvider.resource.queryParameters),this._resource.appendForwardSlash(),this._data=t,this._rootNode=void 0,this._nodePages={},this._nodePageFetches={},this._extent=void 0,this._tileset=void 0,this._geometryDefinitions=void 0,this._filters=[],this._symbology=void 0,this._computeGeometryDefinitions(!0),this._computeExtent()}Object.defineProperties(mu.prototype,{resource:{get:function(){return this._resource}},rootNode:{get:function(){return this._rootNode}},tileset:{get:function(){return this._tileset}},data:{get:function(){return this._data}},version:{get:function(){return this._version}},majorVersion:{get:function(){return this._majorVersion}},minorVersion:{get:function(){return this._minorVersion}},legacyVersion16:{get:function(){if(l(this.version))return this.majorVersion<1||this.majorVersion===1&&this.minorVersion<=6}}});mu.prototype.load=async function(e){if(this._data.spatialReference.wkid!==4326)throw new ce(`Unsupported spatial reference: ${this._data.spatialReference.wkid}`);if(this._dataProvider.applySymbology&&(this._symbology=new iH(this)),await this._dataProvider.loadGeoidData(),await this._loadRootNode(e),await this._create3DTileset(e),this._rootNode._tile=this._tileset._root,this._tileset._root._i3sNode=this._rootNode,this.legacyVersion16)return this._rootNode._loadChildren()};mu.prototype._computeGeometryDefinitions=function(e){if(this._geometryDefinitions=[],l(this._data.geometryDefinitions))for(let t=0;t<this._data.geometryDefinitions.length;t++){let n=[],i=this._data.geometryDefinitions[t].geometryBuffers;for(let o=0;o<i.length;o++){let r=i[o],s=[],a=!1;if(l(r.compressedAttributes)&&e){a=!0;let c=r.compressedAttributes.attributes;for(let u=0;u<c.length;u++)s.push(c[u])}else for(let c in r)c!=="offset"&&s.push(c);n.push({compressed:a,attributes:s,index:i.indexOf(r)})}n.sort(function(o,r){return o.compressed&&!r.compressed?-1:!o.compressed&&r.compressed?1:o.attributes.length-r.attributes.length}),this._geometryDefinitions.push(n)}};mu.prototype._findBestGeometryBuffers=function(e,t){let n=this._geometryDefinitions[e];if(l(n)){for(let i=0;i<n.length;++i){let o=n[i],r=!1,s=o.attributes;for(let a=0;a<t.length;a++)if(!s.includes(t[a])){r=!0;break}if(!r)return{bufferIndex:o.index,definition:n,geometryBufferInfo:o}}if(l(n[0]))return{bufferIndex:0,definition:n,geometryBufferInfo:n[0]}}};mu.prototype._loadRootNode=function(e){if(l(this._data.nodePages)){let t=0;l(this._data.nodePages.rootIndex)&&(t=this._data.nodePages.rootIndex),this._rootNode=new tR(this,t,!0)}else this._rootNode=new tR(this,this._data.store.rootNode,!0);return this._rootNode.load(e)};mu.prototype._getNodeInNodePages=function(e){let t=Math.floor(e/this._data.nodePages.nodesPerPage),n=e%this._data.nodePages.nodesPerPage;return this._loadNodePage(t).then(function(i){return i.nodes[n]})};mu._fetchJson=function(e){return e.fetchJson()};mu.prototype._loadNodePage=function(e){let t=this;if(!l(this._nodePageFetches[e])){let n=this.resource.getDerivedResource({url:`nodepages/${e}/`}),i=mu._fetchJson(n).then(function(o){return l(o.error)&&o.error.code!==200?Promise.reject(o.error):(t._nodePages[e]=o.nodes,o)});this._nodePageFetches[e]=i}return this._nodePageFetches[e]};mu.prototype._computeExtent=function(){l(this._data.fullExtent)?this._extent=ae.fromDegrees(this._data.fullExtent.xmin,this._data.fullExtent.ymin,this._data.fullExtent.xmax,this._data.fullExtent.ymax):l(this._data.store.extent)&&(this._extent=ae.fromDegrees(this._data.store.extent[0],this._data.store.extent[1],this._data.store.extent[2],this._data.store.extent[3]))};mu.prototype._create3DTileset=async function(e){let t={asset:{version:"1.0"},geometricError:Number.MAX_VALUE,root:this._rootNode._create3DTileDefinition()},n=new Blob([JSON.stringify(t)],{type:"application/json"}),i=URL.createObjectURL(n),o=this._symbology?.defaultSymbology?.edges?.color;l(o)&&!l(e?.outlineColor)&&(e=l(e)?ze(e):{},e.outlineColor=G.fromCartesian4(se.fromArray(o))),this._tileset=await qs.fromUrl(i,e),this._tileset.show=this._parent.show,this._tileset._isI3STileSet=!0,this._tileset.tileUnload.addEventListener(function(r){r._i3sNode._clearGeometryData(),URL.revokeObjectURL(r._contentResource._url),r._contentResource=r._i3sNode.resource}),this._tileset.tileVisible.addEventListener(function(r){l(r._i3sNode)&&r._i3sNode._loadChildren()})};mu.prototype._updateVisibility=function(){l(this._tileset)&&(this._tileset.show=this._parent.show)};mu.prototype.filterByAttributes=function(e){this._filters=l(e)?ze(e,!0):[];let t=this._rootNode;return l(t)?t._filterFeatures():Promise.resolve()};var wS=mu;function oH(e,t){this._dataProvider=e,this._resource=new we({url:t}),this._resource.setQueryParameters(e.resource.queryParameters),this._resource.appendForwardSlash()}Object.defineProperties(oH.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},names:{get:function(){let e=[],t=this._data.summary;if(l(t))for(let n=0;n<t.length;++n)e.push(t[n].fieldName);return e}}});oH.prototype.load=async function(){return this._data=await xA.loadJson(this._resource),this._data};oH.prototype._getValues=function(e){let t=this._data.summary;if(l(t))for(let n=0;n<t.length;++n){let i=t[n];if(i.fieldName===e)return l(i.mostFrequentValues)?[...i.mostFrequentValues]:[]}};var rH=oH;function nR(e,t,n){this._dataProvider=e,this._parent=t,this._data=n,this._name=n.name,this._modelName=n.modelName,this._visibility=n.visibility??!0,this._resource=void 0,this._sublayers=[],this._i3sLayers=[]}Object.defineProperties(nR.prototype,{resource:{get:function(){return this._resource}},data:{get:function(){return this._data}},name:{get:function(){return this._name}},modelName:{get:function(){return this._modelName}},sublayers:{get:function(){return this._sublayers}},visibility:{get:function(){return this._visibility},set:function(e){if(this._visibility!==e){this._visibility=e;for(let t=0;t<this._i3sLayers.length;t++)this._i3sLayers[t]._updateVisibility()}}},show:{get:function(){return this._visibility&&this._parent.show}}});nR._fromData=async function(e,t,n,i){let o=new nR(e,i,n);if(o._data.layerType==="group"){let r=o._data.sublayers;if(l(r)){let s=[];for(let c=0;c<r.length;c++){let u=nR._fromData(e,t,r[c],o);s.push(u)}let a=await Promise.all(s);for(let c=0;c<a.length;c++){let u=a[c];o._sublayers.push(u),o._i3sLayers.push(...u._i3sLayers)}}}else if(o._data.layerType==="3DObject"){let r=t.concat(`/sublayers/${o._data.id}`),s=new we({url:r});s.setQueryParameters(e.resource.queryParameters),s.appendForwardSlash(),o._resource=s;let a=await xA.loadJson(o._resource),c=new wS(e,a,o);o._i3sLayers.push(c)}else console.log(`${o._data.layerType} layer ${o._data.name} is skipped as not supported.`);return o};var sH=nR;var lTe=Es(aTe(),1);function Os(e){e=e??V.EMPTY_OBJECT,this._name=e.name,this._show=e.show??!0,this._geoidTiledTerrainProvider=e.geoidTiledTerrainProvider,this._showFeatures=e.showFeatures??!1,this._adjustMaterialAlphaMode=e.adjustMaterialAlphaMode??!1,this._applySymbology=e.applySymbology??!1,this._calculateNormals=e.calculateNormals??!1,this._cesium3dTilesetOptions=e.cesium3dTilesetOptions??V.EMPTY_OBJECT,this._layers=[],this._sublayers=[],this._data=void 0,this._extent=void 0,this._geoidDataPromise=void 0,this._geoidDataList=void 0,this._decoderTaskProcessor=void 0,this._taskProcessorReadyPromise=void 0,this._attributeStatistics=[],this._layersExtent=[]}Object.defineProperties(Os.prototype,{name:{get:function(){return this._name}},show:{get:function(){return this._show},set:function(e){if(this._show!==e){this._show=e;for(let t=0;t<this._layers.length;t++)this._layers[t]._updateVisibility()}}},geoidTiledTerrainProvider:{get:function(){return this._geoidTiledTerrainProvider}},layers:{get:function(){return this._layers}},sublayers:{get:function(){return this._sublayers}},data:{get:function(){return this._data}},extent:{get:function(){return this._extent}},resource:{get:function(){return this._resource}},showFeatures:{get:function(){return this._showFeatures}},adjustMaterialAlphaMode:{get:function(){return this._adjustMaterialAlphaMode}},applySymbology:{get:function(){return this._applySymbology}},calculateNormals:{get:function(){return this._calculateNormals}}});Os.prototype.destroy=function(){for(let e=0;e<this._layers.length;e++)l(this._layers[e]._tileset)&&this._layers[e]._tileset.destroy();return ue(this)};Os.prototype.isDestroyed=function(){return!1};Os.prototype.update=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.update(e)};Os.prototype.prePassesUpdate=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.prePassesUpdate(e)};Os.prototype.postPassesUpdate=function(e){for(let t=0;t<this._layers.length;t++)l(this._layers[t]._tileset)&&this._layers[t]._tileset.postPassesUpdate(e)};Os.prototype.updateForPass=function(e,t){for(let n=0;n<this._layers.length;n++)l(this._layers[n]._tileset)&&this._layers[n]._tileset.updateForPass(e,t)};function Xwt(e,t){let n=e.resource.getUrlComponent(),i="";return n.match(/layers\/\d/)?i=`${n}`.replace(/\/+$/,""):i=`${n}`.replace(/\/?$/,"/").concat(`layers/${t}`),i}async function cTe(e,t,n){if(t.layerType==="Building"){l(n.showFeatures)||(e._showFeatures=!0),l(n.adjustMaterialAlphaMode)||(e._adjustMaterialAlphaMode=!0),l(n.applySymbology)||(e._applySymbology=!0),l(n.calculateNormals)||(e._calculateNormals=!0);let i=Xwt(e,t.id);if(l(t.sublayers)){let o=[];for(let s=0;s<t.sublayers.length;s++){let a=sH._fromData(e,i,t.sublayers[s],e);o.push(a)}let r=await Promise.all(o);for(let s=0;s<r.length;s++){let a=r[s];e._sublayers.push(a),e._layers.push(...a._i3sLayers)}}if(l(t.statisticsHRef)){let o=i.concat(`/${t.statisticsHRef}`),r=new rH(e,o);await r.load(),e._attributeStatistics.push(r)}if(l(t.fullExtent)){let o=ae.fromDegrees(t.fullExtent.xmin,t.fullExtent.ymin,t.fullExtent.xmax,t.fullExtent.ymax);e._layersExtent.push(o)}}else if(t.layerType==="3DObject"||t.layerType==="IntegratedMesh"){!l(n.calculateNormals)&&!l(t.textureSetDefinitions)&&(e._calculateNormals=!0);let i=new wS(e,t,e);e._layers.push(i),l(i._extent)&&e._layersExtent.push(i._extent)}else console.log(`${t.layerType} layer ${t.name} is skipped as not supported.`)}Os.fromUrl=async function(e,t){t=t??V.EMPTY_OBJECT;let n=we.createIfNeeded(e);n.setQueryParameters({f:"pjson"},!0);let i=await Os.loadJson(n),o=new Os(t);if(o._resource=n,o._data=i,l(i.layers)){let s=[];for(let a=0;a<i.layers.length;a++){let c=cTe(o,i.layers[a],t);s.push(c)}await Promise.all(s)}else await cTe(o,i,t);o._computeExtent();let r=[];for(let s=0;s<o._layers.length;s++)r.push(o._layers[s].load(t.cesium3dTilesetOptions));return await Promise.all(r),o};Os._fetchJson=function(e){return e.fetchJson()};Os.loadJson=async function(e){let t=await Os._fetchJson(e);if(l(t.error)){if(console.error("Failed to fetch I3S ",e.url),l(t.error.message)&&console.error(t.error.message),l(t.error.details))for(let n=0;n<t.error.details.length;n++)console.log(t.error.details[n]);throw new ce(t.error)}return t};Os.prototype._loadBinary=async function(e){let t=await e.fetchArrayBuffer();if(t.byteLength>0&&new Uint8Array(t)[0]===123&&new TextDecoder().decode(t).includes("404"))throw new ce(`Failed to load binary: ${e.url}`);return t};Os.prototype._binarizeGltf=function(e){let n=new TextEncoder().encode(JSON.stringify(e)),i=new Uint8Array(n.byteLength+20),o={magic:new Uint8Array(i.buffer,0,4),version:new Uint32Array(i.buffer,4,1),length:new Uint32Array(i.buffer,8,1),chunkLength:new Uint32Array(i.buffer,12,1),chunkType:new Uint32Array(i.buffer,16,1),chunkData:new Uint8Array(i.buffer,20,n.byteLength)};return o.magic[0]=103,o.magic[1]=108,o.magic[2]=84,o.magic[3]=70,o.version[0]=2,o.length[0]=i.byteLength,o.chunkLength[0]=n.byteLength,o.chunkType[0]=1313821514,o.chunkData.set(n),i};var Jwt=new k;function Zwt(e,t){let n=e.tilingScheme,i=[],o={},r=e._lodCount,s=Ae.fromRadians(t.west,t.north),a=Ae.fromRadians(t.east,t.south),c=n.positionToTileXY(s,r),u=n.positionToTileXY(a,r);for(let h=c.x;h<=u.x;h++)for(let A=c.y;A<=u.y;A++){let g=k.fromElements(h,A,Jwt),m=g.toString();if(!o.hasOwnProperty(m)){let _={x:g.x,y:g.y,level:r,tilingScheme:n,terrainProvider:e,positions:[]};o[m]=_,i.push(_)}}let f=[];for(let h=0;h<i.length;++h){let A=i[h],g=A.terrainProvider.requestTileGeometry(A.x,A.y,A.level);f.push(g)}return Promise.all(f).then(function(h){let A=[];for(let g=0;g<h.length;g++){let m={tilingScheme:n,x:i[g].x,y:i[g].y,level:i[g].level},_=h[g],y="Geographic";n._projection instanceof Yi&&(y="WebMercator");let C={projectionType:y,projection:n._projection,nativeExtent:n.tileXYToNativeRectangle(m.x,m.y,m.level),height:_._height,width:_._width,scale:_._structure.heightScale,offset:_._structure.heightOffset};if(_._encoding===vh.LERC){let E=lTe.default.decode(_._buffer);C.buffer=E.pixels[0]}else C.buffer=_._buffer;A.push(C)}return A})}async function $wt(e){let t=e._geoidTiledTerrainProvider;if(l(t))try{let n=await Zwt(t,e._extent);e._geoidDataList=n}catch{console.log("Error retrieving Geoid Terrain tiles - no geoid conversion will be performed.")}}Os.prototype.loadGeoidData=async function(){return l(this._geoidDataPromise)?this._geoidDataPromise:(this._geoidDataPromise=$wt(this),this._geoidDataPromise)};Os.prototype._computeExtent=function(){let e;for(let t=0;t<this._layersExtent.length;t++){let n=this._layersExtent[t];l(e)?ae.union(e,n,e):e=ae.clone(n)}this._extent=e};Os.prototype.getAttributeNames=function(){let e=[];for(let t=0;t<this._attributeStatistics.length;++t)e.push(...this._attributeStatistics[t].names);return e};Os.prototype.getAttributeValues=function(e){for(let t=0;t<this._attributeStatistics.length;++t){let n=this._attributeStatistics[t]._getValues(e);if(l(n))return n}return[]};Os.prototype.filterByAttributes=function(e){let t=[];for(let n=0;n<this._layers.length;n++){let i=this._layers[n].filterByAttributes(e);t.push(i)}return Promise.all(t)};var xA=Os;var iR={};iR.createTilesetFromIModelId=async function(e){let t=e;typeof e=="string"&&(t={iModelId:e,tilesetOptions:arguments[1]},Pr("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iModelId:n,changesetId:i,tilesetOptions:o}=t,{exports:r}=await _a.getExports(n,i);if(r.length>0&&r.every(f=>f.status===_a.ExportStatus.Invalid))throw new ce(`All exports for this iModel are Invalid: ${n}`);let s=r.find(f=>f.status===_a.ExportStatus.Complete);if(!l(s))return;let a=new URL(s._links.mesh.href);a.pathname=`${a.pathname}/tileset.json`;let c=a.toString(),u=new we({url:c});return qs.fromUrl(u,o)};iR.createTilesetForRealityDataId=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,realityDataId:arguments[1],type:arguments[2],rootDocument:arguments[3]},Pr("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,realityDataId:i}=t,{type:o,rootDocument:r}=t;if(!l(o)||!l(r)){let c=await _a.getRealityDataMetadata(n,i);r=c.rootDocument,o=c.type}if(![_a.RealityDataType.Cesium3DTiles,_a.RealityDataType.PNTS,_a.RealityDataType.RealityMesh3DTiles,_a.RealityDataType.Terrain3DTiles].includes(o))throw new ce(`Reality data type is not a mesh type: ${o}`);let a=await _a.getRealityDataURL(n,i,r);return qs.fromUrl(a,{maximumScreenSpaceError:4})};iR.createDataSourceForRealityDataId=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,realityDataId:arguments[1],type:arguments[2],rootDocument:arguments[3]},Pr("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,realityDataId:i}=t,{type:o,rootDocument:r}=t;if(!l(o)||!l(r)){let c=await _a.getRealityDataMetadata(n,i);r=c.rootDocument,o=c.type}if(![_a.RealityDataType.KML,_a.RealityDataType.GeoJSON].includes(o))throw new ce(`Reality data type is not a data source type: ${o}`);let a=await _a.getRealityDataURL(n,i,r);return o===_a.RealityDataType.GeoJSON?kE.load(a):ST.load(a)};iR.loadGeospatialFeatures=async function(e){let t=e;typeof e=="string"&&(t={iTwinId:e,collectionId:arguments[1],limit:arguments[2]},Pr("ITwinData.createTilesetFromIModelId","The arguments signature for ITwinData functions has changed in 1.132 in favor of a single options object. Please update your code. This fallback will be removed in 1.133"));let{iTwinId:n,collectionId:i,limit:o}=t,r=o??1e4,s=`${_a.apiEndpoint}geospatial-features/itwins/${n}/ogc/collections/${i}/items`,a=new we({url:s,headers:{Authorization:_a._getAuthorizationHeader(),Accept:"application/vnd.bentley.itwin-platform.v1+json"},queryParameters:{limit:r,client:"CesiumJS"}});return kE.load(a)};var uTe=iR;function fTe(){}Object.defineProperties(fTe.prototype,{color:{get:me.throwInstantiationError},intensity:{get:me.throwInstantiationError}});var dTe=fTe;var eBt=/\/$/,hTe=new Dt('© <a href="https://www.mapbox.com/about/maps/">Mapbox</a> © <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> <strong><a href="https://www.mapbox.com/map-feedback/">Improve this map</a></strong>');function BS(e){e=e??V.EMPTY_OBJECT;let t=e.styleId,n=e.accessToken;this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0;let i=we.createIfNeeded(e.url??"https://api.mapbox.com/styles/v1/");this._styleId=t,this._accessToken=n;let o=e.tilesize??512;this._tilesize=o;let r=e.username??"mapbox";this._username=r;let s=l(e.scaleFactor)?"@2x":"",a=i.getUrlComponent();eBt.test(a)||(a+="/"),a+=`${this._username}/${t}/tiles/${this._tilesize}/{z}/{x}/{y}${s}`,i.url=a,i.setQueryParameters({access_token:n});let c;l(e.credit)?(c=e.credit,typeof c=="string"&&(c=new Dt(c))):c=hTe,this._resource=i,this._imageryProvider=new vc({url:i,credit:c,ellipsoid:e.ellipsoid,minimumLevel:e.minimumLevel,maximumLevel:e.maximumLevel,rectangle:e.rectangle})}Object.defineProperties(BS.prototype,{url:{get:function(){return this._imageryProvider.url}},rectangle:{get:function(){return this._imageryProvider.rectangle}},tileWidth:{get:function(){return this._imageryProvider.tileWidth}},tileHeight:{get:function(){return this._imageryProvider.tileHeight}},maximumLevel:{get:function(){return this._imageryProvider.maximumLevel}},minimumLevel:{get:function(){return this._imageryProvider.minimumLevel}},tilingScheme:{get:function(){return this._imageryProvider.tilingScheme}},tileDiscardPolicy:{get:function(){return this._imageryProvider.tileDiscardPolicy}},errorEvent:{get:function(){return this._imageryProvider.errorEvent}},credit:{get:function(){return this._imageryProvider.credit}},proxy:{get:function(){return this._imageryProvider.proxy}},hasAlphaChannel:{get:function(){return this._imageryProvider.hasAlphaChannel}}});BS.prototype.getTileCredits=function(e,t,n){};BS.prototype.requestImage=function(e,t,n,i){return this._imageryProvider.requestImage(e,t,n,i)};BS.prototype.pickFeatures=function(e,t,n,i,o){return this._imageryProvider.pickFeatures(e,t,n,i,o)};BS._defaultCredit=hTe;var mTe=BS;function OZ(e){}OZ.prototype.isReady=function(){return!0};OZ.prototype.shouldDiscardImage=function(e){return!1};var ATe=OZ;var tBt=new Dt("MapQuest, Open Street Map and contributors, CC-BY-SA");function cH(e){e=e??V.EMPTY_OBJECT;let t=we.createIfNeeded(e.url??"https://tile.openstreetmap.org/");t.appendForwardSlash(),t.url+=`{z}/{x}/{y}${e.retinaTiles?"@2x":""}.${e.fileExtension??"png"}`;let n=new ws({ellipsoid:e.ellipsoid}),i=256,o=256,r=e.minimumLevel??0,s=e.maximumLevel,a=e.rectangle??n.rectangle,c=n.positionToTileXY(ae.southwest(a),r),u=n.positionToTileXY(ae.northeast(a),r),f=(Math.abs(u.x-c.x)+1)*(Math.abs(u.y-c.y)+1),h=e.credit??tBt;typeof h=="string"&&(h=new Dt(h)),vc.call(this,{url:t,credit:h,tilingScheme:n,tileWidth:i,tileHeight:o,minimumLevel:r,maximumLevel:s,rectangle:a})}l(Object.create)&&(cH.prototype=Object.create(vc.prototype),cH.prototype.constructor=cH);var eC=cH;var nBt=new k(1,1);function FZ(e){e=e??V.EMPTY_OBJECT,this.mass=e.mass??1,this.position=d.clone(e.position??d.ZERO),this.velocity=d.clone(e.velocity??d.ZERO),this.life=e.life??Number.MAX_VALUE,this.image=e.image,this.startColor=G.clone(e.startColor??G.WHITE),this.endColor=G.clone(e.endColor??G.WHITE),this.startScale=e.startScale??1,this.endScale=e.endScale??1,this.imageSize=k.clone(e.imageSize??nBt),this._age=0,this._normalizedAge=0,this._billboard=void 0}Object.defineProperties(FZ.prototype,{age:{get:function(){return this._age}},normalizedAge:{get:function(){return this._normalizedAge}}});var pTe=new d;FZ.prototype.update=function(e,t){return d.multiplyByScalar(this.velocity,e,pTe),d.add(this.position,pTe,this.position),l(t)&&t(this,e),this._age+=e,this.life===Number.MAX_VALUE?this._normalizedAge=0:this._normalizedAge=this._age/this.life,this._age<=this.life};var oR=FZ;function gTe(e){e=e??V.EMPTY_OBJECT,this.time=e.time??0,this.minimum=e.minimum??0,this.maximum=e.maximum??50,this._complete=!1}Object.defineProperties(gTe.prototype,{complete:{get:function(){return this._complete}}});var _Te=gTe;function yTe(e){}yTe.prototype.emit=function(e){me.throwInstantiationError()};var CTe=yTe;var ETe=new k(1,1);function rR(e){e=e??V.EMPTY_OBJECT,this.show=e.show??!0,this.updateCallback=e.updateCallback,this.loop=e.loop??!0,this.image=e.image??void 0;let t=e.emitter;l(t)||(t=new H4(.5)),this._emitter=t,this._bursts=e.bursts,this._modelMatrix=R.clone(e.modelMatrix??R.IDENTITY),this._emitterModelMatrix=R.clone(e.emitterModelMatrix??R.IDENTITY),this._matrixDirty=!0,this._combinedMatrix=new R,this._startColor=G.clone(e.color??e.startColor??G.WHITE),this._endColor=G.clone(e.color??e.endColor??G.WHITE),this._startScale=e.scale??e.startScale??1,this._endScale=e.scale??e.endScale??1,this._emissionRate=e.emissionRate??5,this._minimumSpeed=e.speed??e.minimumSpeed??1,this._maximumSpeed=e.speed??e.maximumSpeed??1,this._minimumParticleLife=e.particleLife??e.minimumParticleLife??5,this._maximumParticleLife=e.particleLife??e.maximumParticleLife??5,this._minimumMass=e.mass??e.minimumMass??1,this._maximumMass=e.mass??e.maximumMass??1,this._minimumImageSize=k.clone(e.imageSize??e.minimumImageSize??ETe),this._maximumImageSize=k.clone(e.imageSize??e.maximumImageSize??ETe),this._sizeInMeters=e.sizeInMeters??!1,this._lifetime=e.lifetime??Number.MAX_VALUE,this._billboardCollection=void 0,this._particles=[],this._particlePool=[],this._previousTime=void 0,this._currentTime=0,this._carryOver=0,this._complete=new _e,this._isComplete=!1,this._updateParticlePool=!0,this._particleEstimate=0}Object.defineProperties(rR.prototype,{emitter:{get:function(){return this._emitter},set:function(e){this._emitter=e}},bursts:{get:function(){return this._bursts},set:function(e){this._bursts=e,this._updateParticlePool=!0}},modelMatrix:{get:function(){return this._modelMatrix},set:function(e){this._matrixDirty=this._matrixDirty||!R.equals(this._modelMatrix,e),R.clone(e,this._modelMatrix)}},emitterModelMatrix:{get:function(){return this._emitterModelMatrix},set:function(e){this._matrixDirty=this._matrixDirty||!R.equals(this._emitterModelMatrix,e),R.clone(e,this._emitterModelMatrix)}},startColor:{get:function(){return this._startColor},set:function(e){G.clone(e,this._startColor)}},endColor:{get:function(){return this._endColor},set:function(e){G.clone(e,this._endColor)}},startScale:{get:function(){return this._startScale},set:function(e){this._startScale=e}},endScale:{get:function(){return this._endScale},set:function(e){this._endScale=e}},emissionRate:{get:function(){return this._emissionRate},set:function(e){this._emissionRate=e,this._updateParticlePool=!0}},minimumSpeed:{get:function(){return this._minimumSpeed},set:function(e){this._minimumSpeed=e}},maximumSpeed:{get:function(){return this._maximumSpeed},set:function(e){this._maximumSpeed=e}},minimumParticleLife:{get:function(){return this._minimumParticleLife},set:function(e){this._minimumParticleLife=e}},maximumParticleLife:{get:function(){return this._maximumParticleLife},set:function(e){this._maximumParticleLife=e,this._updateParticlePool=!0}},minimumMass:{get:function(){return this._minimumMass},set:function(e){this._minimumMass=e}},maximumMass:{get:function(){return this._maximumMass},set:function(e){this._maximumMass=e}},minimumImageSize:{get:function(){return this._minimumImageSize},set:function(e){this._minimumImageSize=e}},maximumImageSize:{get:function(){return this._maximumImageSize},set:function(e){this._maximumImageSize=e}},sizeInMeters:{get:function(){return this._sizeInMeters},set:function(e){this._sizeInMeters=e}},lifetime:{get:function(){return this._lifetime},set:function(e){this._lifetime=e}},complete:{get:function(){return this._complete}},isComplete:{get:function(){return this._isComplete}}});function iBt(e){let t=e._emissionRate,n=e._maximumParticleLife,i=0,o=e._bursts;if(l(o)){let h=o.length;for(let A=0;A<h;++A)i+=o[A].maximum}let r=e._billboardCollection,s=e.image,a=Math.ceil(t*n+i),c=e._particles,u=e._particlePool,f=Math.max(a-c.length-u.length,0);for(let h=0;h<f;++h){let A=new oR;A._billboard=r.add({image:s,show:!1}),u.push(A)}e._particleEstimate=a}function oBt(e){let t=e._particlePool.pop();return l(t)||(t=new oR),t}function rBt(e,t){e._particlePool.push(t)}function sBt(e){let t=e._particles,n=e._particlePool,i=e._billboardCollection,o=t.length,r=n.length,s=e._particleEstimate,a=r-Math.max(s-o-r,0);for(let c=a;c<r;++c){let u=n[c];i.remove(u._billboard)}n.length=a}function aBt(e){l(e._billboard)&&(e._billboard.show=!1)}function ITe(e,t){let n=t._billboard;l(n)||(n=t._billboard=e._billboardCollection.add({image:t.image})),n.width=t.imageSize.x,n.height=t.imageSize.y,n.position=t.position,n.sizeInMeters=e.sizeInMeters,n.show=!0;let i=D.lerp(t.startColor.red,t.endColor.red,t.normalizedAge),o=D.lerp(t.startColor.green,t.endColor.green,t.normalizedAge),r=D.lerp(t.startColor.blue,t.endColor.blue,t.normalizedAge),s=D.lerp(t.startColor.alpha,t.endColor.alpha,t.normalizedAge);n.color=new G(i,o,r,s),n.scale=D.lerp(t.startScale,t.endScale,t.normalizedAge)}function cBt(e,t){t.startColor=G.clone(e._startColor,t.startColor),t.endColor=G.clone(e._endColor,t.endColor),t.startScale=e._startScale,t.endScale=e._endScale,t.image=e.image,t.life=D.randomBetween(e._minimumParticleLife,e._maximumParticleLife),t.mass=D.randomBetween(e._minimumMass,e._maximumMass),t.imageSize.x=D.randomBetween(e._minimumImageSize.x,e._maximumImageSize.x),t.imageSize.y=D.randomBetween(e._minimumImageSize.y,e._maximumImageSize.y),t._normalizedAge=0,t._age=0;let n=D.randomBetween(e._minimumSpeed,e._maximumSpeed);d.multiplyByScalar(t.velocity,n,t.velocity),e._particles.push(t)}function lBt(e,t){if(e._isComplete)return 0;t=D.mod(t,e._lifetime);let n=t*e._emissionRate,i=Math.floor(n);if(e._carryOver+=n-i,e._carryOver>1&&(i++,e._carryOver-=1),l(e.bursts)){let o=e.bursts.length;for(let r=0;r<o;r++){let s=e.bursts[r],a=e._currentTime;l(s)&&!s._complete&&a>s.time&&(i+=D.randomBetween(s.minimum,s.maximum),s._complete=!0)}}return i}var lH=new d;rR.prototype.update=function(e){if(!this.show)return;l(this._billboardCollection)||(this._billboardCollection=new jf),this._updateParticlePool&&(iBt(this),this._updateParticlePool=!1);let t=0;this._previousTime&&(t=K.secondsDifference(e.time,this._previousTime)),t<0&&(t=0);let n=this._particles,i=this._emitter,o=this.updateCallback,r,s,a=n.length;for(r=0;r<a;++r)s=n[r],s.update(t,o)?ITe(this,s):(aBt(s),rBt(this,s),n[r]=n[a-1],--r,--a);n.length=a;let c=lBt(this,t);if(c>0&&l(i)){this._matrixDirty&&(this._combinedMatrix=R.multiply(this.modelMatrix,this.emitterModelMatrix,this._combinedMatrix),this._matrixDirty=!1);let u=this._combinedMatrix;for(r=0;r<c;r++)s=oBt(this),this._emitter.emit(s),d.add(s.position,s.velocity,lH),R.multiplyByPoint(u,lH,lH),s.position=R.multiplyByPoint(u,s.position,s.position),d.subtract(lH,s.position,s.velocity),d.normalize(s.velocity,s.velocity),cBt(this,s),ITe(this,s)}if(this._billboardCollection.update(e),this._previousTime=K.clone(e.time,this._previousTime),this._currentTime+=t,this._lifetime!==Number.MAX_VALUE&&this._currentTime>this._lifetime)if(this.loop){if(this._currentTime=D.mod(this._currentTime,this._lifetime),this.bursts){let u=this.bursts.length;for(r=0;r<u;r++)this.bursts[r]._complete=!1}}else this._isComplete=!0,this._complete.raiseEvent(this);e.frameNumber%120===0&&sBt(this)};rR.prototype.isDestroyed=function(){return!1};rR.prototype.destroy=function(){return this._billboardCollection=this._billboardCollection&&this._billboardCollection.destroy(),ue(this)};var xTe=rR;function uf(){me.throwInstantiationError()}uf.computeDefaultLevelZeroMaximumGeometricError=function(e){return e.ellipsoid.maximumRadius*2*Math.PI*.25/(65*e.getNumberOfXTilesAtLevel(0))};Object.defineProperties(uf.prototype,{quadtree:{get:me.throwInstantiationError,set:me.throwInstantiationError},tilingScheme:{get:me.throwInstantiationError},errorEvent:{get:me.throwInstantiationError}});uf.prototype.update=me.throwInstantiationError;uf.prototype.beginUpdate=me.throwInstantiationError;uf.prototype.endUpdate=me.throwInstantiationError;uf.prototype.getLevelMaximumGeometricError=me.throwInstantiationError;uf.prototype.loadTile=me.throwInstantiationError;uf.prototype.computeTileVisibility=me.throwInstantiationError;uf.prototype.showTileThisFrame=me.throwInstantiationError;uf.prototype.computeDistanceToTile=me.throwInstantiationError;uf.prototype.isDestroyed=me.throwInstantiationError;uf.prototype.destroy=me.throwInstantiationError;var bTe=uf;function QZ(e){e=e??1,this._radius=e??1}Object.defineProperties(QZ.prototype,{radius:{get:function(){return this._radius},set:function(e){this._radius=e}}});QZ.prototype.emit=function(e){let t=D.randomBetween(0,D.TWO_PI),n=D.randomBetween(0,D.PI),i=D.randomBetween(0,this._radius),o=i*Math.cos(t)*Math.sin(n),r=i*Math.sin(t)*Math.sin(n),s=i*Math.cos(n);e.position=d.fromElements(o,r,s,e.position),e.velocity=d.normalize(e.position,e.velocity)};var TTe=QZ;function sR(){}sR.prototype.evaluate=function(e,t){me.throwInstantiationError()};sR.prototype.evaluateColor=function(e,t){me.throwInstantiationError()};sR.prototype.getShaderFunction=function(e,t,n,i){me.throwInstantiationError()};sR.prototype.getVariables=function(){me.throwInstantiationError()};var STe=sR;function DS(e){this._ready=!1,this._provider=void 0,this._errorEvent=new _e,this._readyEvent=new _e,fBt(this,e)}Object.defineProperties(DS.prototype,{errorEvent:{get:function(){return this._errorEvent}},readyEvent:{get:function(){return this._readyEvent}},ready:{get:function(){return this._ready}},provider:{get:function(){return this._provider}}});DS.fromWorldTerrain=function(e){return new DS(IS(e))};DS.fromWorldBathymetry=function(e){return new DS(k4(e))};function uBt(e,t){e.numberOfListeners>0?e.raiseEvent(t):console.error(t)}async function fBt(e,t){let n;try{n=await Promise.resolve(t),e._provider=n,e._ready=!0,e._readyEvent.raiseEvent(n)}catch(i){uBt(e._errorEvent,i)}}var uH=DS;function vS(){}vS.prototype.boundingVolume=void 0;vS.prototype.boundingSphere=void 0;vS.prototype.distanceToCamera=function(e){me.throwInstantiationError()};vS.prototype.intersectPlane=function(e){me.throwInstantiationError()};vS.prototype.createDebugVolume=function(e){me.throwInstantiationError()};var wTe=vS;function aR(e){e=e??V.EMPTY_OBJECT,this._tilingScheme=l(e.tilingScheme)?e.tilingScheme:new co({ellipsoid:e.ellipsoid}),this._color=e.color??G.YELLOW,this._errorEvent=new _e,this._tileWidth=e.tileWidth??256,this._tileHeight=e.tileHeight??256,this._defaultAlpha=void 0,this._defaultNightAlpha=void 0,this._defaultDayAlpha=void 0,this._defaultBrightness=void 0,this._defaultContrast=void 0,this._defaultHue=void 0,this._defaultSaturation=void 0,this._defaultGamma=void 0,this._defaultMinificationFilter=void 0,this._defaultMagnificationFilter=void 0}Object.defineProperties(aR.prototype,{proxy:{get:function(){}},tileWidth:{get:function(){return this._tileWidth}},tileHeight:{get:function(){return this._tileHeight}},maximumLevel:{get:function(){}},minimumLevel:{get:function(){}},tilingScheme:{get:function(){return this._tilingScheme}},rectangle:{get:function(){return this._tilingScheme.rectangle}},tileDiscardPolicy:{get:function(){}},errorEvent:{get:function(){return this._errorEvent}},credit:{get:function(){}},hasAlphaChannel:{get:function(){return!0}}});aR.prototype.getTileCredits=function(e,t,n){};aR.prototype.requestImage=function(e,t,n,i){let o=document.createElement("canvas");o.width=256,o.height=256;let r=o.getContext("2d"),s=this._color.toCssColorString();return r.strokeStyle=s,r.lineWidth=2,r.strokeRect(1,1,255,255),r.font="bold 25px Arial",r.textAlign="center",r.fillStyle=s,r.fillText(`L: ${n}`,124,86),r.fillText(`X: ${e}`,124,136),r.fillText(`Y: ${t}`,124,186),Promise.resolve(o)};aR.prototype.pickFeatures=function(e,t,n,i,o){};var fH=aR;function kZ(e){me.throwInstantiationError()}kZ.prototype.isReady=me.throwInstantiationError;kZ.prototype.shouldDiscardImage=me.throwInstantiationError;var BTe=kZ;var dBt={START:0,LOADING:1,READY:2,UPSAMPLED_ONLY:3},DTe=Object.freeze(dBt);function dH(e,t){this.show=!0,l(e)||(e=new Xe),this.rectangle=Xe.clone(e),l(t)||(t=ao.fromType(ao.ColorType,{color:new G(1,1,1,1)})),this.material=t,this._material=void 0,this._overlayCommand=void 0,this._rs=void 0}dH.prototype.update=function(e){if(!this.show)return;let t=this._rs;if((!l(t)||!Xe.equals(t.viewport,this.rectangle))&&(this._rs=Ue.fromCache({blending:pn.ALPHA_BLEND,viewport:this.rectangle})),e.passes.render){let i=e.context;if(this._material!==this.material||!l(this._overlayCommand)){this._material=this.material,l(this._overlayCommand)&&this._overlayCommand.shaderProgram.destroy();let o=new We({sources:[this._material.shaderSource,bz]});this._overlayCommand=i.createViewportQuadCommand(o,{renderState:this._rs,uniformMap:this._material._uniforms,owner:this}),this._overlayCommand.pass=Be.OVERLAY}this._material.update(i),this._overlayCommand.renderState=this._rs,this._overlayCommand.uniformMap=this._material._uniforms,e.commandList.push(this._overlayCommand)}};dH.prototype.isDestroyed=function(){return!1};dH.prototype.destroy=function(){return l(this._overlayCommand)&&(this._overlayCommand.shaderProgram=this._overlayCommand.shaderProgram&&this._overlayCommand.shaderProgram.destroy()),ue(this)};var vTe=dH;function UZ(){me.throwInstantiationError()}Object.defineProperties(UZ.prototype,{globalTransform:{get:me.throwInstantiationError},shapeTransform:{get:me.throwInstantiationError},shape:{get:me.throwInstantiationError},minBounds:{get:me.throwInstantiationError},maxBounds:{get:me.throwInstantiationError},dimensions:{get:me.throwInstantiationError},paddingBefore:{get:me.throwInstantiationError},paddingAfter:{get:me.throwInstantiationError},names:{get:me.throwInstantiationError},types:{get:me.throwInstantiationError},componentTypes:{get:me.throwInstantiationError},minimumValues:{get:me.throwInstantiationError},maximumValues:{get:me.throwInstantiationError},maximumTileCount:{get:me.throwInstantiationError},availableLevels:{get:me.throwInstantiationError},keyframeCount:{get:me.throwInstantiationError},timeIntervalCollection:{get:me.throwInstantiationError}});UZ.prototype.requestData=function(e){me.throwInstantiationError()};var PTe=UZ;function N0(){me.throwInstantiationError()}Object.defineProperties(N0.prototype,{orientedBoundingBox:{get:me.throwInstantiationError},boundingSphere:{get:me.throwInstantiationError},boundTransform:{get:me.throwInstantiationError},shapeTransform:{get:me.throwInstantiationError},shaderUniforms:{get:me.throwInstantiationError},shaderDefines:{get:me.throwInstantiationError},shaderMaximumIntersectionsLength:{get:me.throwInstantiationError}});N0.prototype.update=me.throwInstantiationError;N0.prototype.computeOrientedBoundingBoxForTile=me.throwInstantiationError;N0.prototype.computeOrientedBoundingBoxForSample=me.throwInstantiationError;N0.DefaultMinBounds=me.throwInstantiationError;N0.DefaultMaxBounds=me.throwInstantiationError;var RTe=N0;var hBt=new G,mBt=new G,ABt=new G,pBt=new G,MTe=new se,cR=new Uint8Array(4);function NTe(e,t,n,i){let o=t.height===n.height?0:(e-t.height)/(n.height-t.height);return G.lerp(t.color,n.color,o,i)}function hH(e,t){return{height:e,color:G.clone(t)}}function LTe(e){return e=e.filter(function(t,n,i){let o=n>0,r=n<i.length-1,s=o?t.height===i[n-1].height:!0,a=r?t.height===i[n+1].height:!0;return!s||!a}),e=e.filter(function(t,n,i){let o=n>0,r=n<i.length-1,s=o?G.equals(t.color,i[n-1].color):!1,a=r?G.equals(t.color,i[n+1].color):!1;return!s||!a}),e=e.filter(function(t,n,i){let o=n>0,r=o?G.equals(t.color,i[n-1].color):!1,s=o?t.height===i[n-1].height:!0;return!r||!s}),e}function gBt(e){let t,n,i=[],o=e.length;for(t=0;t<o;t++){let r=e[t],s=r.entries,a=s.length,c=[];for(n=0;n<a;n++){let g=s[n],m=D.clamp(g.height,Au._minimumHeight,Au._maximumHeight),_=G.clone(g.color,hBt);_.red*=_.alpha,_.green*=_.alpha,_.blue*=_.alpha,c.push(hH(m,_))}let u=!0,f=!0;for(n=0;n<a-1;n++){let g=c[n+0],m=c[n+1];u=u&&g.height<=m.height,f=f&&g.height>=m.height}f?c=c.reverse():u||qp(c,function(g,m){return D.sign(g.height-m.height)});let h=r.extendDownwards??!1,A=r.extendUpwards??!1;c.length===1&&!h&&!A&&(h=!0,A=!0),h&&c.splice(0,0,hH(Au._minimumHeight,c[0].color)),A&&c.splice(c.length,0,hH(Au._maximumHeight,c[c.length-1].color)),c=LTe(c),i.push(c)}return i}function _Bt(e){let t=gBt(e),n=[],i=[],o;function r(u,f){n.push(hH(u,f))}function s(u,f,h){let A=G.multiplyByScalar(h,1-f.alpha,pBt);A=G.add(A,f,A),r(u,A)}let a=t.length;for(o=0;o<a;o++){let u=t[o],f=0,h=0;i=n,n=[];let A=u.length,g=i.length;for(;f<A||h<g;){let m=f<A?u[f]:void 0,_=f>0?u[f-1]:void 0,y=f<A-1?u[f+1]:void 0,C=h<g?i[h]:void 0,E=h>0?i[h-1]:void 0,I=h<g-1?i[h+1]:void 0;if(l(m)&&l(C)&&m.height===C.height){let b=l(I)&&C.height===I.height,S=!l(E),B=!l(I),v=l(y)&&m.height===y.height,P=!l(_),N=!l(y);b?v?(s(m.height,m.color,C.color),s(m.height,y.color,I.color)):P?(r(m.height,C.color),s(m.height,m.color,I.color)):N?(s(m.height,m.color,C.color),r(m.height,I.color)):(s(m.height,m.color,C.color),s(m.height,m.color,I.color)):S?v?(r(m.height,m.color),s(m.height,y.color,C.color)):N?(r(m.height,m.color),r(m.height,C.color)):(P||r(m.height,m.color),s(m.height,m.color,C.color)):B?v?(s(m.height,m.color,C.color),r(m.height,y.color)):P?(r(m.height,C.color),r(m.height,m.color)):N?s(m.height,m.color,C.color):(s(m.height,m.color,C.color),r(m.height,m.color)):v?(s(m.height,m.color,C.color),s(m.height,y.color,C.color)):P?(r(m.height,C.color),s(m.height,m.color,C.color)):N?(s(m.height,m.color,C.color),r(m.height,C.color)):s(m.height,m.color,C.color),f+=v?2:1,h+=b?2:1}else if(l(m)&&l(C)&&l(E)&&m.height<C.height){let b=NTe(m.height,E,C,ABt);l(_)?l(y)?s(m.height,m.color,b):(s(m.height,m.color,b),r(m.height,b)):(r(m.height,b),s(m.height,m.color,b)),f++}else if(l(C)&&l(m)&&l(_)&&C.height<m.height){let b=NTe(C.height,_,m,mBt);l(E)?l(I)?s(C.height,b,C.color):(s(C.height,b,C.color),r(C.height,b)):(r(C.height,b),s(C.height,b,C.color)),h++}else l(m)&&(!l(C)||m.height<C.height)?(l(C)&&!l(E)&&!l(y)?(r(m.height,m.color),r(m.height,Au._emptyColor),r(C.height,Au._emptyColor)):(!l(C)&&l(E)&&!l(_)&&(r(E.height,Au._emptyColor),r(m.height,Au._emptyColor)),r(m.height,m.color)),f++):l(C)&&(!l(m)||C.height<m.height)&&(r(C.height,C.color),h++)}}return LTe(n)}function Au(e){let{scene:t,layers:n}=e??V.EMPTY_OBJECT,{context:i}=t,o=_Bt(n),r=o.length,s,a,c;if(!Au._useFloatTexture(i)){a=He.UNSIGNED_BYTE,c=et.RGBA,s=new Uint8Array(r*4);for(let g=0;g<r;g++)se.packFloat(o[g].height,MTe),se.pack(MTe,s,g*4)}else{a=He.FLOAT,c=i.webgl2?et.RED:et.LUMINANCE,s=new Float32Array(r);for(let g=0;g<r;g++)s[g]=o[g].height}let f=Nt.create({context:i,pixelFormat:c,pixelDatatype:a,source:{arrayBufferView:s,width:r,height:1},sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.NEAREST,magnificationFilter:pi.NEAREST})}),h=new Uint8Array(r*4);for(let g=0;g<r;g++)o[g].color.toBytes(cR),h[g*4+0]=cR[0],h[g*4+1]=cR[1],h[g*4+2]=cR[2],h[g*4+3]=cR[3];let A=Nt.create({context:i,pixelFormat:et.RGBA,pixelDatatype:He.UNSIGNED_BYTE,source:{arrayBufferView:h,width:r,height:1},sampler:new on({wrapS:Tn.CLAMP_TO_EDGE,wrapT:Tn.CLAMP_TO_EDGE,minificationFilter:Zt.LINEAR,magnificationFilter:pi.LINEAR})});return ao.fromType("ElevationBand",{heights:f,colors:A})}Au._useFloatTexture=function(e){return e.floatingPointTexture};Au._maximumHeight=5906376425472;Au._minimumHeight=-5906376425472;Au._emptyColor=new G(0,0,0,0);var OTe=Au;async function yBt(e,t){t=t??{},t.cacheBytes=t.cacheBytes??1536*1024*1024,t.maximumCacheOverflowBytes=t.maximumCacheOverflowBytes??1024*1024*1024,t.enableCollision=t.enableCollision??!0,e=e??V.EMPTY_OBJECT,e.onlyUsingWithGoogleGeocoder||yt("google-tiles-with-google-geocoder","Only the Google geocoder can be used with Google Photorealistic 3D Tiles. Set the `geocode` property of Viewer constructor options. You can set additionalOptions.onlyUsingWithGoogleGeocoder to hide this warning once you have configured the geocoder.");let n=e.key??_S.defaultApiKey;if(!l(n))return CBt(t);let i,o=_S.getDefaultCredit();l(o)&&(i=[o]);let r=new we({url:`${_S.mapTilesApiEndpoint}3dtiles/root.json`,queryParameters:{key:n},credits:i});return qs.fromUrl(r,t)}var FTe={};async function CBt(e){let i=FTe[2275207];l(i)||(i=wf.fromAssetId(2275207),FTe[2275207]=i);let o=await i;return qs.fromUrl(o,e)}var QTe=yBt;async function EBt(e){let t=await qs.fromIonAssetId(96188,e);e=e??V.EMPTY_OBJECT;let n=e.style;if(!l(n)){let i=(e.defaultColor??G.WHITE).toCssColorString();n=new TS({color:`Boolean(\${feature['cesium#color']}) ? color(\${feature['cesium#color']}) : ${i}`})}return t.style=n,t}var kTe=EBt;function IBt(e){e=e??V.EMPTY_OBJECT;let t=[],n=e.geometry;(!l(n.attributes)||!l(n.primitiveType))&&(n=n.constructor.createGeometry(n));let i=n.attributes,o=R.clone(e.modelMatrix??R.IDENTITY),r=e.length??1e4;if(l(i.normal)&&t.push(new Rt({geometry:jn.createLineSegmentsForVectors(n,"normal",r),attributes:{color:new en(1,0,0,1)},modelMatrix:o})),l(i.tangent)&&t.push(new Rt({geometry:jn.createLineSegmentsForVectors(n,"tangent",r),attributes:{color:new en(0,1,0,1)},modelMatrix:o})),l(i.bitangent)&&t.push(new Rt({geometry:jn.createLineSegmentsForVectors(n,"bitangent",r),attributes:{color:new en(0,0,1,1)},modelMatrix:o})),t.length>0)return new kn({asynchronous:!1,geometryInstances:t,appearance:new gn({flat:!0,translucent:!1})})}var UTe=IBt;var GTe=`uniform sampler2D u_depthTexture; + +in vec2 v_textureCoordinates; + +void main() +{ + float z_window = czm_unpackDepth(texture(u_depthTexture, v_textureCoordinates)); + z_window = czm_reverseLogDepth(z_window); + float n_range = czm_depthRange.near; + float f_range = czm_depthRange.far; + float z_ndc = (2.0 * z_window - n_range - f_range) / (f_range - n_range); + float scale = pow(z_ndc * 0.5 + 0.5, 8.0); + out_FragColor = vec4(mix(vec3(0.0), vec3(1.0), scale), 1.0); +} +`;function xBt(e){e=e??V.EMPTY_OBJECT,this.typedArray=e.typedArray,this.width=e.width,this.height=e.height,this.pixelFormat=e.pixelFormat??et.RGBA,this.pixelDatatype=e.pixelDatatype??He.UNSIGNED_BYTE;let t=e.url;typeof t=="string"&&(t=we.createIfNeeded(t)),this.resource=t;let i=e.repeat??!0?Tn.REPEAT:Tn.CLAMP_TO_EDGE;this.sampler=new on({wrapS:i,wrapT:i,minificationFilter:e.minificationFilter,magnificationFilter:e.magnificationFilter,maximumAnisotropy:e.maximumAnisotropy})}var zTe=xBt;var bBt={FLOAT:"float",VEC2:"vec2",VEC3:"vec3",VEC4:"vec4",MAT2:"mat2",MAT3:"mat3",MAT4:"mat4"},VTe=Object.freeze(bBt);var TBt={SIGX:"SIGX",SIGY:"SIGY",SIGZ:"SIGZ",VARX:"VARX",VARY:"VARY",VARZ:"VARZ",SIGR:"VARZ"},HTe=Object.freeze(TBt);function SBt(e){async function t({data:i}){let o=[],r={id:i.id,result:void 0,error:void 0};self.CESIUM_BASE_URL=i.baseUrl;try{let s=await e(i.parameters,o);r.result=s}catch(s){s instanceof Error?r.error={name:s.name,message:s.message,stack:s.stack}:r.error=s}i.canTransferArrayBuffer||(o.length=0);try{postMessage(r,o)}catch(s){r.result=void 0,r.error=`postMessage failed with error: ${up(s)} + with responseMessage: ${JSON.stringify(r)}`,postMessage(r)}}function n(i){postMessage({id:i.data?.id,error:`postMessage failed with error: ${JSON.stringify(i)}`})}return self.onmessage=t,self.onmessageerror=n,self}var WTe=SBt;globalThis.CESIUM_VERSION="1.132";var lR;typeof ko<"u"&&(lR=ko);(function(){/*! + * Knockout JavaScript library v3.5.1 + * (c) The Knockout.js team - http://knockoutjs.com/ + * License: MIT (http://www.opensource.org/licenses/mit-license.php) + */(function(){(function(e){var t=this||(0,eval)("this"),n=t.document,i=t.navigator,o=t.jQuery,r=t.JSON;o||typeof jQuery>"u"||(o=jQuery),function(s){s(t.ko={})}(function(s,a){function c(p,x){return p===null||typeof p in _?p===x:!1}function u(p,x){var T;return function(){T||(T=m.a.setTimeout(function(){T=e,p()},x))}}function f(p,x){var T;return function(){clearTimeout(T),T=m.a.setTimeout(p,x)}}function h(p,x){x&&x!=="change"?x==="beforeChange"?this.pc(p):this.gb(p,x):this.qc(p)}function A(p,x){x!==null&&x.s&&x.s()}function g(p,x){var T=this.qd,w=T[b];w.ra||(this.Qb&&this.mb[x]?(T.uc(x,p,this.mb[x]),this.mb[x]=null,--this.Qb):w.I[x]||T.uc(x,p,w.J?{da:p}:T.$c(p)),p.Ja&&p.gd())}var m=typeof s<"u"?s:{};m.b=function(p,x){for(var T=p.split("."),w=m,M=0;M<T.length-1;M++)w=w[T[M]];w[T[T.length-1]]=x},m.L=function(p,x,T){p[x]=T},m.version="3.5.1",m.b("version",m.version),m.options={deferUpdates:!1,useOnlyNativeEvents:!1,foreachHidesDestroyed:!1},m.a=function(){function p(Y,$){for(var X in Y)M.call(Y,X)&&$(X,Y[X])}function x(Y,$){if($)for(var X in $)M.call($,X)&&(Y[X]=$[X]);return Y}function T(Y,$){return Y.__proto__=$,Y}function w(Y,$,X,he){var ge=Y[$].match(W)||[];m.a.D(X.match(W),function(fe){m.a.Na(ge,fe,he)}),Y[$]=ge.join(" ")}var M=Object.prototype.hasOwnProperty,O={__proto__:[]}instanceof Array,U=typeof Symbol=="function",Q={},z={};Q[i&&/Firefox\/2/i.test(i.userAgent)?"KeyboardEvent":"UIEvents"]=["keyup","keydown","keypress"],Q.MouseEvents="click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" "),p(Q,function(Y,$){if($.length)for(var X=0,he=$.length;X<he;X++)z[$[X]]=Y});var F={propertychange:!0},H=n&&function(){for(var Y=3,$=n.createElement("div"),X=$.getElementsByTagName("i");$.innerHTML="<!--[if gt IE "+ ++Y+"]><i></i><![endif]-->",X[0];);return 4<Y?Y:e}(),W=/\S+/g,Z;return{Jc:["authenticity_token",/^__RequestVerificationToken(_.*)?$/],D:function(Y,$,X){for(var he=0,ge=Y.length;he<ge;he++)$.call(X,Y[he],he,Y)},A:typeof Array.prototype.indexOf=="function"?function(Y,$){return Array.prototype.indexOf.call(Y,$)}:function(Y,$){for(var X=0,he=Y.length;X<he;X++)if(Y[X]===$)return X;return-1},Lb:function(Y,$,X){for(var he=0,ge=Y.length;he<ge;he++)if($.call(X,Y[he],he,Y))return Y[he];return e},Pa:function(Y,$){var X=m.a.A(Y,$);0<X?Y.splice(X,1):X===0&&Y.shift()},wc:function(Y){var $=[];return Y&&m.a.D(Y,function(X){0>m.a.A($,X)&&$.push(X)}),$},Mb:function(Y,$,X){var he=[];if(Y)for(var ge=0,fe=Y.length;ge<fe;ge++)he.push($.call(X,Y[ge],ge));return he},jb:function(Y,$,X){var he=[];if(Y)for(var ge=0,fe=Y.length;ge<fe;ge++)$.call(X,Y[ge],ge)&&he.push(Y[ge]);return he},Nb:function(Y,$){if($ instanceof Array)Y.push.apply(Y,$);else for(var X=0,he=$.length;X<he;X++)Y.push($[X]);return Y},Na:function(Y,$,X){var he=m.a.A(m.a.bc(Y),$);0>he?X&&Y.push($):X||Y.splice(he,1)},Ba:O,extend:x,setPrototypeOf:T,Ab:O?T:x,P:p,Ga:function(Y,$,X){if(!Y)return Y;var he={},ge;for(ge in Y)M.call(Y,ge)&&(he[ge]=$.call(X,Y[ge],ge,Y));return he},Tb:function(Y){for(;Y.firstChild;)m.removeNode(Y.firstChild)},Yb:function(Y){Y=m.a.la(Y);for(var $=(Y[0]&&Y[0].ownerDocument||n).createElement("div"),X=0,he=Y.length;X<he;X++)$.appendChild(m.oa(Y[X]));return $},Ca:function(Y,$){for(var X=0,he=Y.length,ge=[];X<he;X++){var fe=Y[X].cloneNode(!0);ge.push($?m.oa(fe):fe)}return ge},va:function(Y,$){if(m.a.Tb(Y),$)for(var X=0,he=$.length;X<he;X++)Y.appendChild($[X])},Xc:function(Y,$){var X=Y.nodeType?[Y]:Y;if(0<X.length){for(var he=X[0],ge=he.parentNode,fe=0,ye=$.length;fe<ye;fe++)ge.insertBefore($[fe],he);for(fe=0,ye=X.length;fe<ye;fe++)m.removeNode(X[fe])}},Ua:function(Y,$){if(Y.length){for($=$.nodeType===8&&$.parentNode||$;Y.length&&Y[0].parentNode!==$;)Y.splice(0,1);for(;1<Y.length&&Y[Y.length-1].parentNode!==$;)Y.length--;if(1<Y.length){var X=Y[0],he=Y[Y.length-1];for(Y.length=0;X!==he;)Y.push(X),X=X.nextSibling;Y.push(he)}}return Y},Zc:function(Y,$){7>H?Y.setAttribute("selected",$):Y.selected=$},Db:function(Y){return Y===null||Y===e?"":Y.trim?Y.trim():Y.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")},Ud:function(Y,$){return Y=Y||"",$.length>Y.length?!1:Y.substring(0,$.length)===$},vd:function(Y,$){if(Y===$)return!0;if(Y.nodeType===11)return!1;if($.contains)return $.contains(Y.nodeType!==1?Y.parentNode:Y);if($.compareDocumentPosition)return($.compareDocumentPosition(Y)&16)==16;for(;Y&&Y!=$;)Y=Y.parentNode;return!!Y},Sb:function(Y){return m.a.vd(Y,Y.ownerDocument.documentElement)},kd:function(Y){return!!m.a.Lb(Y,m.a.Sb)},R:function(Y){return Y&&Y.tagName&&Y.tagName.toLowerCase()},Ac:function(Y){return m.onError?function(){try{return Y.apply(this,arguments)}catch($){throw m.onError&&m.onError($),$}}:Y},setTimeout:function(Y,$){return setTimeout(m.a.Ac(Y),$)},Gc:function(Y){setTimeout(function(){throw m.onError&&m.onError(Y),Y},0)},B:function(Y,$,X){var he=m.a.Ac(X);if(X=F[$],m.options.useOnlyNativeEvents||X||!o)if(X||typeof Y.addEventListener!="function")if(typeof Y.attachEvent<"u"){var ge=function(ye){he.call(Y,ye)},fe="on"+$;Y.attachEvent(fe,ge),m.a.K.za(Y,function(){Y.detachEvent(fe,ge)})}else throw Error("Browser doesn't support addEventListener or attachEvent");else Y.addEventListener($,he,!1);else Z||(Z=typeof o(Y).on=="function"?"on":"bind"),o(Y)[Z]($,he)},Fb:function(Y,$){if(!Y||!Y.nodeType)throw Error("element must be a DOM node when calling triggerEvent");var X;if(m.a.R(Y)==="input"&&Y.type&&$.toLowerCase()=="click"?(X=Y.type,X=X=="checkbox"||X=="radio"):X=!1,m.options.useOnlyNativeEvents||!o||X)if(typeof n.createEvent=="function")if(typeof Y.dispatchEvent=="function")X=n.createEvent(z[$]||"HTMLEvents"),X.initEvent($,!0,!0,t,0,0,0,0,0,!1,!1,!1,!1,0,Y),Y.dispatchEvent(X);else throw Error("The supplied element doesn't support dispatchEvent");else if(X&&Y.click)Y.click();else if(typeof Y.fireEvent<"u")Y.fireEvent("on"+$);else throw Error("Browser doesn't support triggering events");else o(Y).trigger($)},f:function(Y){return m.O(Y)?Y():Y},bc:function(Y){return m.O(Y)?Y.v():Y},Eb:function(Y,$,X){var he;$&&(typeof Y.classList=="object"?(he=Y.classList[X?"add":"remove"],m.a.D($.match(W),function(ge){he.call(Y.classList,ge)})):typeof Y.className.baseVal=="string"?w(Y.className,"baseVal",$,X):w(Y,"className",$,X))},Bb:function(Y,$){var X=m.a.f($);(X===null||X===e)&&(X="");var he=m.h.firstChild(Y);!he||he.nodeType!=3||m.h.nextSibling(he)?m.h.va(Y,[Y.ownerDocument.createTextNode(X)]):he.data=X,m.a.Ad(Y)},Yc:function(Y,$){if(Y.name=$,7>=H)try{var X=Y.name.replace(/[&<>'"]/g,function(he){return"&#"+he.charCodeAt(0)+";"});Y.mergeAttributes(n.createElement("<input name='"+X+"'/>"),!1)}catch{}},Ad:function(Y){9<=H&&(Y=Y.nodeType==1?Y:Y.parentNode,Y.style&&(Y.style.zoom=Y.style.zoom))},wd:function(Y){if(H){var $=Y.style.width;Y.style.width=0,Y.style.width=$}},Pd:function(Y,$){Y=m.a.f(Y),$=m.a.f($);for(var X=[],he=Y;he<=$;he++)X.push(he);return X},la:function(Y){for(var $=[],X=0,he=Y.length;X<he;X++)$.push(Y[X]);return $},Da:function(Y){return U?Symbol(Y):Y},Zd:H===6,$d:H===7,W:H,Lc:function(Y,$){for(var X=m.a.la(Y.getElementsByTagName("input")).concat(m.a.la(Y.getElementsByTagName("textarea"))),he=typeof $=="string"?function(ye){return ye.name===$}:function(ye){return $.test(ye.name)},ge=[],fe=X.length-1;0<=fe;fe--)he(X[fe])&&ge.push(X[fe]);return ge},Nd:function(Y){return typeof Y=="string"&&(Y=m.a.Db(Y))?r&&r.parse?r.parse(Y):new Function("return "+Y)():null},hc:function(Y,$,X){if(!r||!r.stringify)throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");return r.stringify(m.a.f(Y),$,X)},Od:function(Y,$,X){X=X||{};var he=X.params||{},ge=X.includeFields||this.Jc,fe=Y;if(typeof Y=="object"&&m.a.R(Y)==="form")for(var fe=Y.action,ye=ge.length-1;0<=ye;ye--)for(var Ie=m.a.Lc(Y,ge[ye]),ve=Ie.length-1;0<=ve;ve--)he[Ie[ve].name]=Ie[ve].value;$=m.a.f($);var Te=n.createElement("form");Te.style.display="none",Te.action=fe,Te.method="post";for(var ke in $)Y=n.createElement("input"),Y.type="hidden",Y.name=ke,Y.value=m.a.hc(m.a.f($[ke])),Te.appendChild(Y);p(he,function(Ge,qe){var tt=n.createElement("input");tt.type="hidden",tt.name=Ge,tt.value=qe,Te.appendChild(tt)}),n.body.appendChild(Te),X.submitter?X.submitter(Te):Te.submit(),setTimeout(function(){Te.parentNode.removeChild(Te)},0)}}}(),m.b("utils",m.a),m.b("utils.arrayForEach",m.a.D),m.b("utils.arrayFirst",m.a.Lb),m.b("utils.arrayFilter",m.a.jb),m.b("utils.arrayGetDistinctValues",m.a.wc),m.b("utils.arrayIndexOf",m.a.A),m.b("utils.arrayMap",m.a.Mb),m.b("utils.arrayPushAll",m.a.Nb),m.b("utils.arrayRemoveItem",m.a.Pa),m.b("utils.cloneNodes",m.a.Ca),m.b("utils.createSymbolOrString",m.a.Da),m.b("utils.extend",m.a.extend),m.b("utils.fieldsIncludedWithJsonPost",m.a.Jc),m.b("utils.getFormFields",m.a.Lc),m.b("utils.objectMap",m.a.Ga),m.b("utils.peekObservable",m.a.bc),m.b("utils.postJson",m.a.Od),m.b("utils.parseJson",m.a.Nd),m.b("utils.registerEventHandler",m.a.B),m.b("utils.stringifyJson",m.a.hc),m.b("utils.range",m.a.Pd),m.b("utils.toggleDomNodeCssClass",m.a.Eb),m.b("utils.triggerEvent",m.a.Fb),m.b("utils.unwrapObservable",m.a.f),m.b("utils.objectForEach",m.a.P),m.b("utils.addOrRemoveItem",m.a.Na),m.b("utils.setTextContent",m.a.Bb),m.b("unwrap",m.a.f),Function.prototype.bind||(Function.prototype.bind=function(p){var x=this;if(arguments.length===1)return function(){return x.apply(p,arguments)};var T=Array.prototype.slice.call(arguments,1);return function(){var w=T.slice(0);return w.push.apply(w,arguments),x.apply(p,w)}}),m.a.g=new function(){var p=0,x="__ko__"+new Date().getTime(),T={},w,M;return m.a.W?(w=function(O,U){var Q=O[x];if(!Q||Q==="null"||!T[Q]){if(!U)return e;Q=O[x]="ko"+p++,T[Q]={}}return T[Q]},M=function(O){var U=O[x];return U?(delete T[U],O[x]=null,!0):!1}):(w=function(O,U){var Q=O[x];return!Q&&U&&(Q=O[x]={}),Q},M=function(O){return O[x]?(delete O[x],!0):!1}),{get:function(O,U){var Q=w(O,!1);return Q&&Q[U]},set:function(O,U,Q){(O=w(O,Q!==e))&&(O[U]=Q)},Ub:function(O,U,Q){return O=w(O,!0),O[U]||(O[U]=Q)},clear:M,Z:function(){return p+++x}}},m.b("utils.domData",m.a.g),m.b("utils.domData.clear",m.a.g.clear),m.a.K=new function(){function p(U,Q){var z=m.a.g.get(U,w);return z===e&&Q&&(z=[],m.a.g.set(U,w,z)),z}function x(U){var Q=p(U,!1);if(Q)for(var Q=Q.slice(0),z=0;z<Q.length;z++)Q[z](U);m.a.g.clear(U),m.a.K.cleanExternalData(U),O[U.nodeType]&&T(U.childNodes,!0)}function T(U,Q){for(var z=[],F,H=0;H<U.length;H++)if((!Q||U[H].nodeType===8)&&(x(z[z.length]=F=U[H]),U[H]!==F))for(;H--&&m.a.A(z,U[H])==-1;);}var w=m.a.g.Z(),M={1:!0,8:!0,9:!0},O={1:!0,9:!0};return{za:function(U,Q){if(typeof Q!="function")throw Error("Callback must be a function");p(U,!0).push(Q)},yb:function(U,Q){var z=p(U,!1);z&&(m.a.Pa(z,Q),z.length==0&&m.a.g.set(U,w,e))},oa:function(U){return m.u.G(function(){M[U.nodeType]&&(x(U),O[U.nodeType]&&T(U.getElementsByTagName("*")))}),U},removeNode:function(U){m.oa(U),U.parentNode&&U.parentNode.removeChild(U)},cleanExternalData:function(U){o&&typeof o.cleanData=="function"&&o.cleanData([U])}}},m.oa=m.a.K.oa,m.removeNode=m.a.K.removeNode,m.b("cleanNode",m.oa),m.b("removeNode",m.removeNode),m.b("utils.domNodeDisposal",m.a.K),m.b("utils.domNodeDisposal.addDisposeCallback",m.a.K.za),m.b("utils.domNodeDisposal.removeDisposeCallback",m.a.K.yb),function(){var p=[0,"",""],x=[1,"<table>","</table>"],T=[3,"<table><tbody><tr>","</tr></tbody></table>"],w=[1,"<select multiple='multiple'>","</select>"],M={thead:x,tbody:x,tfoot:x,tr:[2,"<table><tbody>","</tbody></table>"],td:T,th:T,option:w,optgroup:w},O=8>=m.a.W;m.a.ua=function(U,Q){var z;if(o){if(o.parseHTML)z=o.parseHTML(U,Q)||[];else if((z=o.clean([U],Q))&&z[0]){for(var F=z[0];F.parentNode&&F.parentNode.nodeType!==11;)F=F.parentNode;F.parentNode&&F.parentNode.removeChild(F)}}else{(z=Q)||(z=n);var F=z.parentWindow||z.defaultView||t,H=m.a.Db(U).toLowerCase(),W=z.createElement("div"),Z;for(Z=(H=H.match(/^(?:\x3c!--.*?--\x3e\s*?)*?<([a-z]+)[\s>]/))&&M[H[1]]||p,H=Z[0],Z="ignored<div>"+Z[1]+U+Z[2]+"</div>",typeof F.innerShiv=="function"?W.appendChild(F.innerShiv(Z)):(O&&z.body.appendChild(W),W.innerHTML=Z,O&&W.parentNode.removeChild(W));H--;)W=W.lastChild;z=m.a.la(W.lastChild.childNodes)}return z},m.a.Md=function(U,Q){var z=m.a.ua(U,Q);return z.length&&z[0].parentElement||m.a.Yb(z)},m.a.fc=function(U,Q){if(m.a.Tb(U),Q=m.a.f(Q),Q!==null&&Q!==e)if(typeof Q!="string"&&(Q=Q.toString()),o)o(U).html(Q);else for(var z=m.a.ua(Q,U.ownerDocument),F=0;F<z.length;F++)U.appendChild(z[F])}}(),m.b("utils.parseHtmlFragment",m.a.ua),m.b("utils.setHtml",m.a.fc),m.aa=function(){function p(T,w){if(T){if(T.nodeType==8){var M=m.aa.Uc(T.nodeValue);M!=null&&w.push({ud:T,Kd:M})}else if(T.nodeType==1)for(var M=0,O=T.childNodes,U=O.length;M<U;M++)p(O[M],w)}}var x={};return{Xb:function(T){if(typeof T!="function")throw Error("You can only pass a function to ko.memoization.memoize()");var w=(4294967296*(1+Math.random())|0).toString(16).substring(1)+(4294967296*(1+Math.random())|0).toString(16).substring(1);return x[w]=T,"<!--[ko_memo:"+w+"]-->"},bd:function(T,w){var M=x[T];if(M===e)throw Error("Couldn't find any memo with ID "+T+". Perhaps it's already been unmemoized.");try{return M.apply(null,w||[]),!0}finally{delete x[T]}},cd:function(T,w){var M=[];p(T,M);for(var O=0,U=M.length;O<U;O++){var Q=M[O].ud,z=[Q];w&&m.a.Nb(z,w),m.aa.bd(M[O].Kd,z),Q.nodeValue="",Q.parentNode&&Q.parentNode.removeChild(Q)}},Uc:function(T){return(T=T.match(/^\[ko_memo\:(.*?)\]$/))?T[1]:null}}}(),m.b("memoization",m.aa),m.b("memoization.memoize",m.aa.Xb),m.b("memoization.unmemoize",m.aa.bd),m.b("memoization.parseMemoText",m.aa.Uc),m.b("memoization.unmemoizeDomNodeAndDescendants",m.aa.cd),m.na=function(){function p(){if(M){for(var Q=M,z=0,F;U<M;)if(F=w[U++]){if(U>Q){if(5e3<=++z){U=M,m.a.Gc(Error("'Too much recursion' after processing "+z+" task groups."));break}Q=M}try{F()}catch(H){m.a.Gc(H)}}}}function x(){p(),U=M=w.length=0}var T,w=[],M=0,O=1,U=0;return t.MutationObserver?T=function(Q){var z=n.createElement("div");return new MutationObserver(Q).observe(z,{attributes:!0}),function(){z.classList.toggle("foo")}}(x):T=n&&"onreadystatechange"in n.createElement("script")?function(Q){var z=n.createElement("script");z.onreadystatechange=function(){z.onreadystatechange=null,n.documentElement.removeChild(z),z=null,Q()},n.documentElement.appendChild(z)}:function(Q){setTimeout(Q,0)},{scheduler:T,zb:function(Q){return M||m.na.scheduler(x),w[M++]=Q,O++},cancel:function(Q){Q=Q-(O-M),Q>=U&&Q<M&&(w[Q]=null)},resetForTesting:function(){var Q=M-U;return U=M=w.length=0,Q},Sd:p}}(),m.b("tasks",m.na),m.b("tasks.schedule",m.na.zb),m.b("tasks.runEarly",m.na.Sd),m.Ta={throttle:function(p,x){p.throttleEvaluation=x;var T=null;return m.$({read:p,write:function(w){clearTimeout(T),T=m.a.setTimeout(function(){p(w)},x)}})},rateLimit:function(p,x){var T,w,M;typeof x=="number"?T=x:(T=x.timeout,w=x.method),p.Hb=!1,M=typeof w=="function"?w:w=="notifyWhenChangesStop"?f:u,p.ub(function(O){return M(O,T,x)})},deferred:function(p,x){if(x!==!0)throw Error("The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.");p.Hb||(p.Hb=!0,p.ub(function(T){var w,M=!1;return function(){if(!M){m.na.cancel(w),w=m.na.zb(T);try{M=!0,p.notifySubscribers(e,"dirty")}finally{M=!1}}}}))},notify:function(p,x){p.equalityComparer=x=="always"?null:c}};var _={undefined:1,boolean:1,number:1,string:1};m.b("extenders",m.Ta),m.ic=function(p,x,T){this.da=p,this.lc=x,this.mc=T,this.Ib=!1,this.fb=this.Jb=null,m.L(this,"dispose",this.s),m.L(this,"disposeWhenNodeIsRemoved",this.l)},m.ic.prototype.s=function(){this.Ib||(this.fb&&m.a.K.yb(this.Jb,this.fb),this.Ib=!0,this.mc(),this.da=this.lc=this.mc=this.Jb=this.fb=null)},m.ic.prototype.l=function(p){this.Jb=p,m.a.K.za(p,this.fb=this.s.bind(this))},m.T=function(){m.a.Ab(this,y),y.qb(this)};var y={qb:function(p){p.U={change:[]},p.sc=1},subscribe:function(p,x,T){var w=this;T=T||"change";var M=new m.ic(w,x?p.bind(x):p,function(){m.a.Pa(w.U[T],M),w.hb&&w.hb(T)});return w.Qa&&w.Qa(T),w.U[T]||(w.U[T]=[]),w.U[T].push(M),M},notifySubscribers:function(p,x){if(x=x||"change",x==="change"&&this.Gb(),this.Wa(x)){var T=x==="change"&&this.ed||this.U[x].slice(0);try{m.u.xc();for(var w=0,M;M=T[w];++w)M.Ib||M.lc(p)}finally{m.u.end()}}},ob:function(){return this.sc},Dd:function(p){return this.ob()!==p},Gb:function(){++this.sc},ub:function(p){var x=this,T=m.O(x),w,M,O,U,Q;x.gb||(x.gb=x.notifySubscribers,x.notifySubscribers=h);var z=p(function(){x.Ja=!1,T&&U===x&&(U=x.nc?x.nc():x());var F=M||Q&&x.sb(O,U);Q=M=w=!1,F&&x.gb(O=U)});x.qc=function(F,H){H&&x.Ja||(Q=!H),x.ed=x.U.change.slice(0),x.Ja=w=!0,U=F,z()},x.pc=function(F){w||(O=F,x.gb(F,"beforeChange"))},x.rc=function(){Q=!0},x.gd=function(){x.sb(O,x.v(!0))&&(M=!0)}},Wa:function(p){return this.U[p]&&this.U[p].length},Bd:function(p){if(p)return this.U[p]&&this.U[p].length||0;var x=0;return m.a.P(this.U,function(T,w){T!=="dirty"&&(x+=w.length)}),x},sb:function(p,x){return!this.equalityComparer||!this.equalityComparer(p,x)},toString:function(){return"[object Object]"},extend:function(p){var x=this;return p&&m.a.P(p,function(T,w){var M=m.Ta[T];typeof M=="function"&&(x=M(x,w)||x)}),x}};m.L(y,"init",y.qb),m.L(y,"subscribe",y.subscribe),m.L(y,"extend",y.extend),m.L(y,"getSubscriptionsCount",y.Bd),m.a.Ba&&m.a.setPrototypeOf(y,Function.prototype),m.T.fn=y,m.Qc=function(p){return p!=null&&typeof p.subscribe=="function"&&typeof p.notifySubscribers=="function"},m.b("subscribable",m.T),m.b("isSubscribable",m.Qc),m.S=m.u=function(){function p(O){T.push(w),w=O}function x(){w=T.pop()}var T=[],w,M=0;return{xc:p,end:x,cc:function(O){if(w){if(!m.Qc(O))throw Error("Only subscribable things can act as dependencies");w.od.call(w.pd,O,O.fd||(O.fd=++M))}},G:function(O,U,Q){try{return p(),O.apply(U,Q||[])}finally{x()}},qa:function(){if(w)return w.o.qa()},Va:function(){if(w)return w.o.Va()},Ya:function(){if(w)return w.Ya},o:function(){if(w)return w.o}}}(),m.b("computedContext",m.S),m.b("computedContext.getDependenciesCount",m.S.qa),m.b("computedContext.getDependencies",m.S.Va),m.b("computedContext.isInitial",m.S.Ya),m.b("computedContext.registerDependency",m.S.cc),m.b("ignoreDependencies",m.Yd=m.u.G);var C=m.a.Da("_latestValue");m.ta=function(p){function x(){return 0<arguments.length?(x.sb(x[C],arguments[0])&&(x.ya(),x[C]=arguments[0],x.xa()),this):(m.u.cc(x),x[C])}return x[C]=p,m.a.Ba||m.a.extend(x,m.T.fn),m.T.fn.qb(x),m.a.Ab(x,E),m.options.deferUpdates&&m.Ta.deferred(x,!0),x};var E={equalityComparer:c,v:function(){return this[C]},xa:function(){this.notifySubscribers(this[C],"spectate"),this.notifySubscribers(this[C])},ya:function(){this.notifySubscribers(this[C],"beforeChange")}};m.a.Ba&&m.a.setPrototypeOf(E,m.T.fn);var I=m.ta.Ma="__ko_proto__";E[I]=m.ta,m.O=function(p){if((p=typeof p=="function"&&p[I])&&p!==E[I]&&p!==m.o.fn[I])throw Error("Invalid object that looks like an observable; possibly from another Knockout instance");return!!p},m.Za=function(p){return typeof p=="function"&&(p[I]===E[I]||p[I]===m.o.fn[I]&&p.Nc)},m.b("observable",m.ta),m.b("isObservable",m.O),m.b("isWriteableObservable",m.Za),m.b("isWritableObservable",m.Za),m.b("observable.fn",E),m.L(E,"peek",E.v),m.L(E,"valueHasMutated",E.xa),m.L(E,"valueWillMutate",E.ya),m.Ha=function(p){if(p=p||[],typeof p!="object"||!("length"in p))throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");return p=m.ta(p),m.a.Ab(p,m.Ha.fn),p.extend({trackArrayChanges:!0})},m.Ha.fn={remove:function(p){for(var x=this.v(),T=[],w=typeof p!="function"||m.O(p)?function(U){return U===p}:p,M=0;M<x.length;M++){var O=x[M];if(w(O)){if(T.length===0&&this.ya(),x[M]!==O)throw Error("Array modified during remove; cannot remove item");T.push(O),x.splice(M,1),M--}}return T.length&&this.xa(),T},removeAll:function(p){if(p===e){var x=this.v(),T=x.slice(0);return this.ya(),x.splice(0,x.length),this.xa(),T}return p?this.remove(function(w){return 0<=m.a.A(p,w)}):[]},destroy:function(p){var x=this.v(),T=typeof p!="function"||m.O(p)?function(O){return O===p}:p;this.ya();for(var w=x.length-1;0<=w;w--){var M=x[w];T(M)&&(M._destroy=!0)}this.xa()},destroyAll:function(p){return p===e?this.destroy(function(){return!0}):p?this.destroy(function(x){return 0<=m.a.A(p,x)}):[]},indexOf:function(p){var x=this();return m.a.A(x,p)},replace:function(p,x){var T=this.indexOf(p);0<=T&&(this.ya(),this.v()[T]=x,this.xa())},sorted:function(p){var x=this().slice(0);return p?x.sort(p):x.sort()},reversed:function(){return this().slice(0).reverse()}},m.a.Ba&&m.a.setPrototypeOf(m.Ha.fn,m.ta.fn),m.a.D("pop push reverse shift sort splice unshift".split(" "),function(p){m.Ha.fn[p]=function(){var x=this.v();this.ya(),this.zc(x,p,arguments);var T=x[p].apply(x,arguments);return this.xa(),T===x?this:T}}),m.a.D(["slice"],function(p){m.Ha.fn[p]=function(){var x=this();return x[p].apply(x,arguments)}}),m.Pc=function(p){return m.O(p)&&typeof p.remove=="function"&&typeof p.push=="function"},m.b("observableArray",m.Ha),m.b("isObservableArray",m.Pc),m.Ta.trackArrayChanges=function(p,x){function T(){function W(){if(Q){var Z=[].concat(p.v()||[]),Y;p.Wa("arrayChange")&&((!M||1<Q)&&(M=m.a.Pb(z,Z,p.Ob)),Y=M),z=Z,M=null,Q=0,Y&&Y.length&&p.notifySubscribers(Y,"arrayChange")}}w?W():(w=!0,U=p.subscribe(function(){++Q},null,"spectate"),z=[].concat(p.v()||[]),M=null,O=p.subscribe(W))}if(p.Ob={},x&&typeof x=="object"&&m.a.extend(p.Ob,x),p.Ob.sparse=!0,!p.zc){var w=!1,M=null,O,U,Q=0,z,F=p.Qa,H=p.hb;p.Qa=function(W){F&&F.call(p,W),W==="arrayChange"&&T()},p.hb=function(W){H&&H.call(p,W),W!=="arrayChange"||p.Wa("arrayChange")||(O&&O.s(),U&&U.s(),U=O=null,w=!1,z=e)},p.zc=function(W,Z,Y){function $(Te,ke,Ge){return X[X.length]={status:Te,value:ke,index:Ge}}if(w&&!Q){var X=[],he=W.length,ge=Y.length,fe=0;switch(Z){case"push":fe=he;case"unshift":for(Z=0;Z<ge;Z++)$("added",Y[Z],fe+Z);break;case"pop":fe=he-1;case"shift":he&&$("deleted",W[fe],fe);break;case"splice":Z=Math.min(Math.max(0,0>Y[0]?he+Y[0]:Y[0]),he);for(var he=ge===1?he:Math.min(Z+(Y[1]||0),he),ge=Z+ge-2,fe=Math.max(he,ge),ye=[],Ie=[],ve=2;Z<fe;++Z,++ve)Z<he&&Ie.push($("deleted",W[Z],Z)),Z<ge&&ye.push($("added",Y[ve],Z));m.a.Kc(Ie,ye);break;default:return}M=X}}}};var b=m.a.Da("_state");m.o=m.$=function(p,x,T){function w(){if(0<arguments.length){if(typeof M=="function")M.apply(O.nb,arguments);else throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");return this}return O.ra||m.u.cc(w),(O.ka||O.J&&w.Xa())&&w.ha(),O.X}if(typeof p=="object"?T=p:(T=T||{},p&&(T.read=p)),typeof T.read!="function")throw Error("Pass a function that returns the value of the ko.computed");var M=T.write,O={X:e,sa:!0,ka:!0,rb:!1,jc:!1,ra:!1,wb:!1,J:!1,Wc:T.read,nb:x||T.owner,l:T.disposeWhenNodeIsRemoved||T.l||null,Sa:T.disposeWhen||T.Sa,Rb:null,I:{},V:0,Ic:null};return w[b]=O,w.Nc=typeof M=="function",m.a.Ba||m.a.extend(w,m.T.fn),m.T.fn.qb(w),m.a.Ab(w,S),T.pure?(O.wb=!0,O.J=!0,m.a.extend(w,B)):T.deferEvaluation&&m.a.extend(w,v),m.options.deferUpdates&&m.Ta.deferred(w,!0),O.l&&(O.jc=!0,O.l.nodeType||(O.l=null)),O.J||T.deferEvaluation||w.ha(),O.l&&w.ja()&&m.a.K.za(O.l,O.Rb=function(){w.s()}),w};var S={equalityComparer:c,qa:function(){return this[b].V},Va:function(){var p=[];return m.a.P(this[b].I,function(x,T){p[T.Ka]=T.da}),p},Vb:function(p){if(!this[b].V)return!1;var x=this.Va();return m.a.A(x,p)!==-1?!0:!!m.a.Lb(x,function(T){return T.Vb&&T.Vb(p)})},uc:function(p,x,T){if(this[b].wb&&x===this)throw Error("A 'pure' computed must not be called recursively");this[b].I[p]=T,T.Ka=this[b].V++,T.La=x.ob()},Xa:function(){var p,x,T=this[b].I;for(p in T)if(Object.prototype.hasOwnProperty.call(T,p)&&(x=T[p],this.Ia&&x.da.Ja||x.da.Dd(x.La)))return!0},Jd:function(){this.Ia&&!this[b].rb&&this.Ia(!1)},ja:function(){var p=this[b];return p.ka||0<p.V},Rd:function(){this.Ja?this[b].ka&&(this[b].sa=!0):this.Hc()},$c:function(p){if(p.Hb){var x=p.subscribe(this.Jd,this,"dirty"),T=p.subscribe(this.Rd,this);return{da:p,s:function(){x.s(),T.s()}}}return p.subscribe(this.Hc,this)},Hc:function(){var p=this,x=p.throttleEvaluation;x&&0<=x?(clearTimeout(this[b].Ic),this[b].Ic=m.a.setTimeout(function(){p.ha(!0)},x)):p.Ia?p.Ia(!0):p.ha(!0)},ha:function(p){var x=this[b],T=x.Sa,w=!1;if(!x.rb&&!x.ra){if(x.l&&!m.a.Sb(x.l)||T&&T()){if(!x.jc){this.s();return}}else x.jc=!1;x.rb=!0;try{w=this.zd(p)}finally{x.rb=!1}return w}},zd:function(p){var x=this[b],w=!1,T=x.wb?e:!x.V,w={qd:this,mb:x.I,Qb:x.V};m.u.xc({pd:w,od:g,o:this,Ya:T}),x.I={},x.V=0;var M=this.yd(x,w);return x.V?w=this.sb(x.X,M):(this.s(),w=!0),w&&(x.J?this.Gb():this.notifySubscribers(x.X,"beforeChange"),x.X=M,this.notifySubscribers(x.X,"spectate"),!x.J&&p&&this.notifySubscribers(x.X),this.rc&&this.rc()),T&&this.notifySubscribers(x.X,"awake"),w},yd:function(p,x){try{var T=p.Wc;return p.nb?T.call(p.nb):T()}finally{m.u.end(),x.Qb&&!p.J&&m.a.P(x.mb,A),p.sa=p.ka=!1}},v:function(p){var x=this[b];return(x.ka&&(p||!x.V)||x.J&&this.Xa())&&this.ha(),x.X},ub:function(p){m.T.fn.ub.call(this,p),this.nc=function(){return this[b].J||(this[b].sa?this.ha():this[b].ka=!1),this[b].X},this.Ia=function(x){this.pc(this[b].X),this[b].ka=!0,x&&(this[b].sa=!0),this.qc(this,!x)}},s:function(){var p=this[b];!p.J&&p.I&&m.a.P(p.I,function(x,T){T.s&&T.s()}),p.l&&p.Rb&&m.a.K.yb(p.l,p.Rb),p.I=e,p.V=0,p.ra=!0,p.sa=!1,p.ka=!1,p.J=!1,p.l=e,p.Sa=e,p.Wc=e,this.Nc||(p.nb=e)}},B={Qa:function(p){var x=this,T=x[b];if(!T.ra&&T.J&&p=="change"){if(T.J=!1,T.sa||x.Xa())T.I=null,T.V=0,x.ha()&&x.Gb();else{var w=[];m.a.P(T.I,function(M,O){w[O.Ka]=M}),m.a.D(w,function(M,O){var U=T.I[M],Q=x.$c(U.da);Q.Ka=O,Q.La=U.La,T.I[M]=Q}),x.Xa()&&x.ha()&&x.Gb()}T.ra||x.notifySubscribers(T.X,"awake")}},hb:function(p){var x=this[b];x.ra||p!="change"||this.Wa("change")||(m.a.P(x.I,function(T,w){w.s&&(x.I[T]={da:w.da,Ka:w.Ka,La:w.La},w.s())}),x.J=!0,this.notifySubscribers(e,"asleep"))},ob:function(){var p=this[b];return p.J&&(p.sa||this.Xa())&&this.ha(),m.T.fn.ob.call(this)}},v={Qa:function(p){p!="change"&&p!="beforeChange"||this.v()}};m.a.Ba&&m.a.setPrototypeOf(S,m.T.fn);var P=m.ta.Ma;S[P]=m.o,m.Oc=function(p){return typeof p=="function"&&p[P]===S[P]},m.Fd=function(p){return m.Oc(p)&&p[b]&&p[b].wb},m.b("computed",m.o),m.b("dependentObservable",m.o),m.b("isComputed",m.Oc),m.b("isPureComputed",m.Fd),m.b("computed.fn",S),m.L(S,"peek",S.v),m.L(S,"dispose",S.s),m.L(S,"isActive",S.ja),m.L(S,"getDependenciesCount",S.qa),m.L(S,"getDependencies",S.Va),m.xb=function(p,x){return typeof p=="function"?m.o(p,x,{pure:!0}):(p=m.a.extend({},p),p.pure=!0,m.o(p,x))},m.b("pureComputed",m.xb),function(){function p(w,M,O){if(O=O||new T,w=M(w),typeof w!="object"||w===null||w===e||w instanceof RegExp||w instanceof Date||w instanceof String||w instanceof Number||w instanceof Boolean)return w;var U=w instanceof Array?[]:{};return O.save(w,U),x(w,function(Q){var z=M(w[Q]);switch(typeof z){case"boolean":case"number":case"string":case"function":U[Q]=z;break;case"object":case"undefined":var F=O.get(z);U[Q]=F!==e?F:p(z,M,O)}}),U}function x(w,M){if(w instanceof Array){for(var O=0;O<w.length;O++)M(O);typeof w.toJSON=="function"&&M("toJSON")}else for(O in w)M(O)}function T(){this.keys=[],this.values=[]}m.ad=function(w){if(arguments.length==0)throw Error("When calling ko.toJS, pass the object you want to convert.");return p(w,function(M){for(var O=0;m.O(M)&&10>O;O++)M=M();return M})},m.toJSON=function(w,M,O){return w=m.ad(w),m.a.hc(w,M,O)},T.prototype={constructor:T,save:function(w,M){var O=m.a.A(this.keys,w);0<=O?this.values[O]=M:(this.keys.push(w),this.values.push(M))},get:function(w){return w=m.a.A(this.keys,w),0<=w?this.values[w]:e}}}(),m.b("toJS",m.ad),m.b("toJSON",m.toJSON),m.Wd=function(p,x,T){function w(M){var O=m.xb(p,T).extend({ma:"always"}),U=O.subscribe(function(Q){Q&&(U.s(),M(Q))});return O.notifySubscribers(O.v()),U}return typeof Promise!="function"||x?w(x.bind(T)):new Promise(w)},m.b("when",m.Wd),function(){m.w={M:function(p){switch(m.a.R(p)){case"option":return p.__ko__hasDomDataOptionValue__===!0?m.a.g.get(p,m.c.options.$b):7>=m.a.W?p.getAttributeNode("value")&&p.getAttributeNode("value").specified?p.value:p.text:p.value;case"select":return 0<=p.selectedIndex?m.w.M(p.options[p.selectedIndex]):e;default:return p.value}},cb:function(p,x,T){switch(m.a.R(p)){case"option":typeof x=="string"?(m.a.g.set(p,m.c.options.$b,e),"__ko__hasDomDataOptionValue__"in p&&delete p.__ko__hasDomDataOptionValue__,p.value=x):(m.a.g.set(p,m.c.options.$b,x),p.__ko__hasDomDataOptionValue__=!0,p.value=typeof x=="number"?x:"");break;case"select":(x===""||x===null)&&(x=e);for(var w=-1,M=0,O=p.options.length,U;M<O;++M)if(U=m.w.M(p.options[M]),U==x||U===""&&x===e){w=M;break}(T||0<=w||x===e&&1<p.size)&&(p.selectedIndex=w,m.a.W===6&&m.a.setTimeout(function(){p.selectedIndex=w},0));break;default:(x===null||x===e)&&(x=""),p.value=x}}}}(),m.b("selectExtensions",m.w),m.b("selectExtensions.readValue",m.w.M),m.b("selectExtensions.writeValue",m.w.cb),m.m=function(){function p(Q){Q=m.a.Db(Q),Q.charCodeAt(0)===123&&(Q=Q.slice(1,-1)),Q+=` +,`;var z=[],F=Q.match(w),H,W=[],Z=0;if(1<F.length){for(var Y=0,$;$=F[Y];++Y){var X=$.charCodeAt(0);if(X===44){if(0>=Z){z.push(H&&W.length?{key:H,value:W.join("")}:{unknown:H||W.join("")}),H=Z=0,W=[];continue}}else if(X===58){if(!Z&&!H&&W.length===1){H=W.pop();continue}}else{if(X===47&&1<$.length&&($.charCodeAt(1)===47||$.charCodeAt(1)===42))continue;X===47&&Y&&1<$.length?(X=F[Y-1].match(M))&&!O[X[0]]&&(Q=Q.substr(Q.indexOf($)+1),F=Q.match(w),Y=-1,$="/"):X===40||X===123||X===91?++Z:X===41||X===125||X===93?--Z:H||W.length||X!==34&&X!==39||($=$.slice(1,-1))}W.push($)}if(0<Z)throw Error("Unbalanced parentheses, braces, or brackets")}return z}var x=["true","false","null","undefined"],T=/^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i,w=RegExp(`"(?:\\\\.|[^"])*"|'(?:\\\\.|[^'])*'|\`(?:\\\\.|[^\`])*\`|/\\*(?:[^*]|\\*+[^*/])*\\*+/|//.* +|/(?:\\\\.|[^/])+/w*|[^\\s:,/][^,"'\`{}()/:[\\]]*[^\\s,"'\`{}()/:[\\]]|[^\\s]`,"g"),M=/[\])"'A-Za-z0-9_$]+$/,O={in:1,return:1,typeof:1},U={};return{Ra:[],wa:U,ac:p,vb:function(Q,z){function F(X,he){var ge;if(!Y){var fe=m.getBindingHandler(X);if(fe&&fe.preprocess&&!(he=fe.preprocess(he,X,F)))return;(fe=U[X])&&(ge=he,0<=m.a.A(x,ge)?ge=!1:(fe=ge.match(T),ge=fe===null?!1:fe[1]?"Object("+fe[1]+")"+fe[2]:ge),fe=ge),fe&&W.push("'"+(typeof U[X]=="string"?U[X]:X)+"':function(_z){"+ge+"=_z}")}Z&&(he="function(){return "+he+" }"),H.push("'"+X+"':"+he)}z=z||{};var H=[],W=[],Z=z.valueAccessors,Y=z.bindingParams,$=typeof Q=="string"?p(Q):Q;return m.a.D($,function(X){F(X.key||X.unknown,X.value)}),W.length&&F("_ko_property_writers","{"+W.join(",")+" }"),H.join(",")},Id:function(Q,z){for(var F=0;F<Q.length;F++)if(Q[F].key==z)return!0;return!1},eb:function(Q,z,F,H,W){Q&&m.O(Q)?!m.Za(Q)||W&&Q.v()===H||Q(H):(Q=z.get("_ko_property_writers"))&&Q[F]&&Q[F](H)}}}(),m.b("expressionRewriting",m.m),m.b("expressionRewriting.bindingRewriteValidators",m.m.Ra),m.b("expressionRewriting.parseObjectLiteral",m.m.ac),m.b("expressionRewriting.preProcessBindings",m.m.vb),m.b("expressionRewriting._twoWayBindings",m.m.wa),m.b("jsonExpressionRewriting",m.m),m.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson",m.m.vb),function(){function p(F){return F.nodeType==8&&O.test(M?F.text:F.nodeValue)}function x(F){return F.nodeType==8&&U.test(M?F.text:F.nodeValue)}function T(F,H){for(var W=F,Z=1,Y=[];W=W.nextSibling;){if(x(W)&&(m.a.g.set(W,z,!0),Z--,Z===0))return Y;Y.push(W),p(W)&&Z++}if(!H)throw Error("Cannot find closing comment tag to match: "+F.nodeValue);return null}function w(F,H){var W=T(F,H);return W?0<W.length?W[W.length-1].nextSibling:F.nextSibling:null}var M=n&&n.createComment("test").text==="<!--test-->",O=M?/^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/:/^\s*ko(?:\s+([\s\S]+))?\s*$/,U=M?/^\x3c!--\s*\/ko\s*--\x3e$/:/^\s*\/ko\s*$/,Q={ul:!0,ol:!0},z="__ko_matchedEndComment__";m.h={ea:{},childNodes:function(F){return p(F)?T(F):F.childNodes},Ea:function(F){if(p(F)){F=m.h.childNodes(F);for(var H=0,W=F.length;H<W;H++)m.removeNode(F[H])}else m.a.Tb(F)},va:function(F,H){if(p(F)){m.h.Ea(F);for(var W=F.nextSibling,Z=0,Y=H.length;Z<Y;Z++)W.parentNode.insertBefore(H[Z],W)}else m.a.va(F,H)},Vc:function(F,H){var W;p(F)?(W=F.nextSibling,F=F.parentNode):W=F.firstChild,W?H!==W&&F.insertBefore(H,W):F.appendChild(H)},Wb:function(F,H,W){W?(W=W.nextSibling,p(F)&&(F=F.parentNode),W?H!==W&&F.insertBefore(H,W):F.appendChild(H)):m.h.Vc(F,H)},firstChild:function(F){if(p(F))return!F.nextSibling||x(F.nextSibling)?null:F.nextSibling;if(F.firstChild&&x(F.firstChild))throw Error("Found invalid end comment, as the first child of "+F);return F.firstChild},nextSibling:function(F){if(p(F)&&(F=w(F)),F.nextSibling&&x(F.nextSibling)){var H=F.nextSibling;if(x(H)&&!m.a.g.get(H,z))throw Error("Found end comment without a matching opening comment, as child of "+F);return null}return F.nextSibling},Cd:p,Vd:function(F){return(F=(M?F.text:F.nodeValue).match(O))?F[1]:null},Sc:function(F){if(Q[m.a.R(F)]){var H=F.firstChild;if(H)do if(H.nodeType===1){var W;W=H.firstChild;var Z=null;if(W)do if(Z)Z.push(W);else if(p(W)){var Y=w(W,!0);Y?W=Y:Z=[W]}else x(W)&&(Z=[W]);while(W=W.nextSibling);if(W=Z)for(Z=H.nextSibling,Y=0;Y<W.length;Y++)Z?F.insertBefore(W[Y],Z):F.appendChild(W[Y])}while(H=H.nextSibling)}}}}(),m.b("virtualElements",m.h),m.b("virtualElements.allowedBindings",m.h.ea),m.b("virtualElements.emptyNode",m.h.Ea),m.b("virtualElements.insertAfter",m.h.Wb),m.b("virtualElements.prepend",m.h.Vc),m.b("virtualElements.setDomNodeChildren",m.h.va),function(){m.ga=function(){this.nd={}},m.a.extend(m.ga.prototype,{nodeHasBindings:function(p){switch(p.nodeType){case 1:return p.getAttribute("data-bind")!=null||m.j.getComponentNameForNode(p);case 8:return m.h.Cd(p);default:return!1}},getBindings:function(p,x){var T=this.getBindingsString(p,x),T=T?this.parseBindingsString(T,x,p):null;return m.j.tc(T,p,x,!1)},getBindingAccessors:function(p,x){var T=this.getBindingsString(p,x),T=T?this.parseBindingsString(T,x,p,{valueAccessors:!0}):null;return m.j.tc(T,p,x,!0)},getBindingsString:function(p){switch(p.nodeType){case 1:return p.getAttribute("data-bind");case 8:return m.h.Vd(p);default:return null}},parseBindingsString:function(p,x,T,w){try{var M=this.nd,O=p+(w&&w.valueAccessors||""),U;if(!(U=M[O])){var Q,z="with($context){with($data||{}){return{"+m.m.vb(p,w)+"}}}";Q=new Function("$context","$element",z),U=M[O]=Q}return U(x,T)}catch(F){throw F.message=`Unable to parse bindings. +Bindings value: `+p+` +Message: `+F.message,F}}}),m.ga.instance=new m.ga}(),m.b("bindingProvider",m.ga),function(){function p(fe){var ye=(fe=m.a.g.get(fe,ge))&&fe.N;ye&&(fe.N=null,ye.Tc())}function x(fe,ye,Ie){this.node=fe,this.yc=ye,this.kb=[],this.H=!1,ye.N||m.a.K.za(fe,p),Ie&&Ie.N&&(Ie.N.kb.push(fe),this.Kb=Ie)}function T(fe){return function(){return fe}}function w(fe){return fe()}function M(fe){return m.a.Ga(m.u.G(fe),function(ye,Ie){return function(){return fe()[Ie]}})}function O(fe,ye,Ie){return typeof fe=="function"?M(fe.bind(null,ye,Ie)):m.a.Ga(fe,T)}function U(fe,ye){return M(this.getBindings.bind(this,fe,ye))}function Q(fe,ye){var Ie=m.h.firstChild(ye);if(Ie){var ve,Te=m.ga.instance,ke=Te.preprocessNode;if(ke){for(;ve=Ie;)Ie=m.h.nextSibling(ve),ke.call(Te,ve);Ie=m.h.firstChild(ye)}for(;ve=Ie;)Ie=m.h.nextSibling(ve),z(fe,ve)}m.i.ma(ye,m.i.H)}function z(fe,ye){var Ie=fe,ve=ye.nodeType===1;ve&&m.h.Sc(ye),(ve||m.ga.instance.nodeHasBindings(ye))&&(Ie=H(ye,null,fe).bindingContextForDescendants),Ie&&!X[m.a.R(ye)]&&Q(Ie,ye)}function F(fe){var ye=[],Ie={},ve=[];return m.a.P(fe,function Te(ke){if(!Ie[ke]){var Ge=m.getBindingHandler(ke);Ge&&(Ge.after&&(ve.push(ke),m.a.D(Ge.after,function(qe){if(fe[qe]){if(m.a.A(ve,qe)!==-1)throw Error("Cannot combine the following bindings, because they have a cyclic dependency: "+ve.join(", "));Te(qe)}}),ve.length--),ye.push({key:ke,Mc:Ge})),Ie[ke]=!0}}),ye}function H(fe,ye,Ie){var ve=m.a.g.Ub(fe,ge,{}),Te=ve.hd;if(!ye){if(Te)throw Error("You cannot apply bindings multiple times to the same element.");ve.hd=!0}Te||(ve.context=Ie),ve.Zb||(ve.Zb={});var ke;if(ye&&typeof ye!="function")ke=ye;else{var Ge=m.ga.instance,qe=Ge.getBindingAccessors||U,tt=m.$(function(){return(ke=ye?ye(Ie,fe):qe.call(Ge,fe,Ie))&&(Ie[Z]&&Ie[Z](),Ie[$]&&Ie[$]()),ke},null,{l:fe});ke&&tt.ja()||(tt=null)}var $t=Ie,it;if(ke){var tn=function(){return m.a.Ga(tt?tt():ke,w)},Wt=tt?function(vt){return function(){return w(tt()[vt])}}:function(vt){return ke[vt]};tn.get=function(vt){return ke[vt]&&w(Wt(vt))},tn.has=function(vt){return vt in ke},m.i.H in ke&&m.i.subscribe(fe,m.i.H,function(){var vt=(0,ke[m.i.H])();if(vt){var bi=m.h.childNodes(fe);bi.length&&vt(bi,m.Ec(bi[0]))}}),m.i.pa in ke&&($t=m.i.Cb(fe,Ie),m.i.subscribe(fe,m.i.pa,function(){var vt=(0,ke[m.i.pa])();vt&&m.h.firstChild(fe)&&vt(fe)})),ve=F(ke),m.a.D(ve,function(vt){var bi=vt.Mc.init,di=vt.Mc.update,Ot=vt.key;if(fe.nodeType===8&&!m.h.ea[Ot])throw Error("The binding '"+Ot+"' cannot be used with virtual elements");try{typeof bi=="function"&&m.u.G(function(){var Tt=bi(fe,Wt(Ot),tn,$t.$data,$t);if(Tt&&Tt.controlsDescendantBindings){if(it!==e)throw Error("Multiple bindings ("+it+" and "+Ot+") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");it=Ot}}),typeof di=="function"&&m.$(function(){di(fe,Wt(Ot),tn,$t.$data,$t)},null,{l:fe})}catch(Tt){throw Tt.message='Unable to process binding "'+Ot+": "+ke[Ot]+`" +Message: `+Tt.message,Tt}})}return ve=it===e,{shouldBindDescendants:ve,bindingContextForDescendants:ve&&$t}}function W(fe,ye){return fe&&fe instanceof m.fa?fe:new m.fa(fe,e,e,ye)}var Z=m.a.Da("_subscribable"),Y=m.a.Da("_ancestorBindingInfo"),$=m.a.Da("_dataDependency");m.c={};var X={script:!0,textarea:!0,template:!0};m.getBindingHandler=function(fe){return m.c[fe]};var he={};m.fa=function(fe,ye,Ie,ve,Te){function ke(){var Wt=$t?tt():tt,vt=m.a.f(Wt);return ye?(m.a.extend(Ge,ye),Y in ye&&(Ge[Y]=ye[Y])):(Ge.$parents=[],Ge.$root=vt,Ge.ko=m),Ge[Z]=it,qe?vt=Ge.$data:(Ge.$rawData=Wt,Ge.$data=vt),Ie&&(Ge[Ie]=vt),ve&&ve(Ge,ye,vt),ye&&ye[Z]&&!m.S.o().Vb(ye[Z])&&ye[Z](),tn&&(Ge[$]=tn),Ge.$data}var Ge=this,qe=fe===he,tt=qe?e:fe,$t=typeof tt=="function"&&!m.O(tt),it,tn=Te&&Te.dataDependency;Te&&Te.exportDependencies?ke():(it=m.xb(ke),it.v(),it.ja()?it.equalityComparer=null:Ge[Z]=e)},m.fa.prototype.createChildContext=function(fe,ye,Ie,ve){if(!ve&&ye&&typeof ye=="object"&&(ve=ye,ye=ve.as,Ie=ve.extend),ye&&ve&&ve.noChildContext){var Te=typeof fe=="function"&&!m.O(fe);return new m.fa(he,this,null,function(ke){Ie&&Ie(ke),ke[ye]=Te?fe():fe},ve)}return new m.fa(fe,this,ye,function(ke,Ge){ke.$parentContext=Ge,ke.$parent=Ge.$data,ke.$parents=(Ge.$parents||[]).slice(0),ke.$parents.unshift(ke.$parent),Ie&&Ie(ke)},ve)},m.fa.prototype.extend=function(fe,ye){return new m.fa(he,this,null,function(Ie){m.a.extend(Ie,typeof fe=="function"?fe(Ie):fe)},ye)};var ge=m.a.g.Z();x.prototype.Tc=function(){this.Kb&&this.Kb.N&&this.Kb.N.sd(this.node)},x.prototype.sd=function(fe){m.a.Pa(this.kb,fe),!this.kb.length&&this.H&&this.Cc()},x.prototype.Cc=function(){this.H=!0,this.yc.N&&!this.kb.length&&(this.yc.N=null,m.a.K.yb(this.node,p),m.i.ma(this.node,m.i.pa),this.Tc())},m.i={H:"childrenComplete",pa:"descendantsComplete",subscribe:function(fe,ye,Ie,ve,Te){var ke=m.a.g.Ub(fe,ge,{});return ke.Fa||(ke.Fa=new m.T),Te&&Te.notifyImmediately&&ke.Zb[ye]&&m.u.G(Ie,ve,[fe]),ke.Fa.subscribe(Ie,ve,ye)},ma:function(fe,ye){var Ie=m.a.g.get(fe,ge);if(Ie&&(Ie.Zb[ye]=!0,Ie.Fa&&Ie.Fa.notifySubscribers(fe,ye),ye==m.i.H)){if(Ie.N)Ie.N.Cc();else if(Ie.N===e&&Ie.Fa&&Ie.Fa.Wa(m.i.pa))throw Error("descendantsComplete event not supported for bindings on this node")}},Cb:function(fe,ye){var Ie=m.a.g.Ub(fe,ge,{});return Ie.N||(Ie.N=new x(fe,Ie,ye[Y])),ye[Y]==Ie?ye:ye.extend(function(ve){ve[Y]=Ie})}},m.Td=function(fe){return(fe=m.a.g.get(fe,ge))&&fe.context},m.ib=function(fe,ye,Ie){return fe.nodeType===1&&m.h.Sc(fe),H(fe,ye,W(Ie))},m.ld=function(fe,ye,Ie){return Ie=W(Ie),m.ib(fe,O(ye,Ie,fe),Ie)},m.Oa=function(fe,ye){ye.nodeType!==1&&ye.nodeType!==8||Q(W(fe),ye)},m.vc=function(fe,ye,Ie){if(!o&&t.jQuery&&(o=t.jQuery),2>arguments.length){if(ye=n.body,!ye)throw Error("ko.applyBindings: could not find document.body; has the document been loaded?")}else if(!ye||ye.nodeType!==1&&ye.nodeType!==8)throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");z(W(fe,Ie),ye)},m.Dc=function(fe){return!fe||fe.nodeType!==1&&fe.nodeType!==8?e:m.Td(fe)},m.Ec=function(fe){return(fe=m.Dc(fe))?fe.$data:e},m.b("bindingHandlers",m.c),m.b("bindingEvent",m.i),m.b("bindingEvent.subscribe",m.i.subscribe),m.b("bindingEvent.startPossiblyAsyncContentBinding",m.i.Cb),m.b("applyBindings",m.vc),m.b("applyBindingsToDescendants",m.Oa),m.b("applyBindingAccessorsToNode",m.ib),m.b("applyBindingsToNode",m.ld),m.b("contextFor",m.Dc),m.b("dataFor",m.Ec)}(),function(p){function x(U,Q){var z=Object.prototype.hasOwnProperty.call(M,U)?M[U]:p,F;z?z.subscribe(Q):(z=M[U]=new m.T,z.subscribe(Q),T(U,function(H,W){var Z=!(!W||!W.synchronous);O[U]={definition:H,Gd:Z},delete M[U],F||Z?z.notifySubscribers(H):m.na.zb(function(){z.notifySubscribers(H)})}),F=!0)}function T(U,Q){w("getConfig",[U],function(z){z?w("loadComponent",[U,z],function(F){Q(F,z)}):Q(null,null)})}function w(U,Q,z,F){F||(F=m.j.loaders.slice(0));var H=F.shift();if(H){var W=H[U];if(W){var Z=!1;if(W.apply(H,Q.concat(function(Y){Z?z(null):Y!==null?z(Y):w(U,Q,z,F)}))!==p&&(Z=!0,!H.suppressLoaderExceptions))throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.")}else w(U,Q,z,F)}else z(null)}var M={},O={};m.j={get:function(U,Q){var z=Object.prototype.hasOwnProperty.call(O,U)?O[U]:p;z?z.Gd?m.u.G(function(){Q(z.definition)}):m.na.zb(function(){Q(z.definition)}):x(U,Q)},Bc:function(U){delete O[U]},oc:w},m.j.loaders=[],m.b("components",m.j),m.b("components.get",m.j.get),m.b("components.clearCachedDefinition",m.j.Bc)}(),function(){function p(z,F,H,W){function Z(){--$===0&&W(Y)}var Y={},$=2,X=H.template;H=H.viewModel,X?M(F,X,function(he){m.j.oc("loadTemplate",[z,he],function(ge){Y.template=ge,Z()})}):Z(),H?M(F,H,function(he){m.j.oc("loadViewModel",[z,he],function(ge){Y[Q]=ge,Z()})}):Z()}function x(z,F,H){if(typeof F=="function")H(function(Z){return new F(Z)});else if(typeof F[Q]=="function")H(F[Q]);else if("instance"in F){var W=F.instance;H(function(){return W})}else"viewModel"in F?x(z,F.viewModel,H):z("Unknown viewModel value: "+F)}function T(z){switch(m.a.R(z)){case"script":return m.a.ua(z.text);case"textarea":return m.a.ua(z.value);case"template":if(w(z.content))return m.a.Ca(z.content.childNodes)}return m.a.Ca(z.childNodes)}function w(z){return t.DocumentFragment?z instanceof DocumentFragment:z&&z.nodeType===11}function M(z,F,H){typeof F.require=="string"?a||t.require?(a||t.require)([F.require],function(W){W&&typeof W=="object"&&W.Xd&&W.default&&(W=W.default),H(W)}):z("Uses require, but no AMD loader is present"):H(F)}function O(z){return function(F){throw Error("Component '"+z+"': "+F)}}var U={};m.j.register=function(z,F){if(!F)throw Error("Invalid configuration for "+z);if(m.j.tb(z))throw Error("Component "+z+" is already registered");U[z]=F},m.j.tb=function(z){return Object.prototype.hasOwnProperty.call(U,z)},m.j.unregister=function(z){delete U[z],m.j.Bc(z)},m.j.Fc={getConfig:function(z,F){F(m.j.tb(z)?U[z]:null)},loadComponent:function(z,F,H){var W=O(z);M(W,F,function(Z){p(z,W,Z,H)})},loadTemplate:function(z,F,H){if(z=O(z),typeof F=="string")H(m.a.ua(F));else if(F instanceof Array)H(F);else if(w(F))H(m.a.la(F.childNodes));else if(F.element)if(F=F.element,t.HTMLElement?F instanceof HTMLElement:F&&F.tagName&&F.nodeType===1)H(T(F));else if(typeof F=="string"){var W=n.getElementById(F);W?H(T(W)):z("Cannot find element with ID "+F)}else z("Unknown element type: "+F);else z("Unknown template value: "+F)},loadViewModel:function(z,F,H){x(O(z),F,H)}};var Q="createViewModel";m.b("components.register",m.j.register),m.b("components.isRegistered",m.j.tb),m.b("components.unregister",m.j.unregister),m.b("components.defaultLoader",m.j.Fc),m.j.loaders.push(m.j.Fc),m.j.dd=U}(),function(){function p(T,w){var M=T.getAttribute("params");if(M){var M=x.parseBindingsString(M,w,T,{valueAccessors:!0,bindingParams:!0}),M=m.a.Ga(M,function(Q){return m.o(Q,null,{l:T})}),O=m.a.Ga(M,function(Q){var z=Q.v();return Q.ja()?m.o({read:function(){return m.a.f(Q())},write:m.Za(z)&&function(F){Q()(F)},l:T}):z});return Object.prototype.hasOwnProperty.call(O,"$raw")||(O.$raw=M),O}return{$raw:{}}}m.j.getComponentNameForNode=function(T){var w=m.a.R(T);if(m.j.tb(w)&&(w.indexOf("-")!=-1||""+T=="[object HTMLUnknownElement]"||8>=m.a.W&&T.tagName===w))return w},m.j.tc=function(T,w,M,O){if(w.nodeType===1){var U=m.j.getComponentNameForNode(w);if(U){if(T=T||{},T.component)throw Error('Cannot use the "component" binding on a custom element matching a component');var Q={name:U,params:p(w,M)};T.component=O?function(){return Q}:Q}}return T};var x=new m.ga;9>m.a.W&&(m.j.register=function(T){return function(w){return T.apply(this,arguments)}}(m.j.register),n.createDocumentFragment=function(T){return function(){var w=T(),M=m.j.dd,O;for(O in M);return w}}(n.createDocumentFragment))}(),function(){function p(w,M,O){if(M=M.template,!M)throw Error("Component '"+w+"' has no template");w=m.a.Ca(M),m.h.va(O,w)}function x(w,M,O){var U=w.createViewModel;return U?U.call(w,M,O):M}var T=0;m.c.component={init:function(w,M,O,U,Q){function z(){var Y=F&&F.dispose;typeof Y=="function"&&Y.call(F),W&&W.s(),H=F=W=null}var F,H,W,Z=m.a.la(m.h.childNodes(w));return m.h.Ea(w),m.a.K.za(w,z),m.o(function(){var Y=m.a.f(M()),$,X;if(typeof Y=="string"?$=Y:($=m.a.f(Y.name),X=m.a.f(Y.params)),!$)throw Error("No component name specified");var he=m.i.Cb(w,Q),ge=H=++T;m.j.get($,function(fe){if(H===ge){if(z(),!fe)throw Error("Unknown component '"+$+"'");p($,fe,w);var ye=x(fe,X,{element:w,templateNodes:Z});fe=he.createChildContext(ye,{extend:function(Ie){Ie.$component=ye,Ie.$componentTemplateNodes=Z}}),ye&&ye.koDescendantsComplete&&(W=m.i.subscribe(w,m.i.pa,ye.koDescendantsComplete,ye)),F=ye,m.Oa(fe,w)}})},null,{l:w}),{controlsDescendantBindings:!0}}},m.h.ea.component=!0}();var N={class:"className",for:"htmlFor"};m.c.attr={update:function(p,x){var T=m.a.f(x())||{};m.a.P(T,function(w,M){M=m.a.f(M);var O=w.indexOf(":"),O="lookupNamespaceURI"in p&&0<O&&p.lookupNamespaceURI(w.substr(0,O)),U=M===!1||M===null||M===e;U?O?p.removeAttributeNS(O,w):p.removeAttribute(w):M=M.toString(),8>=m.a.W&&w in N?(w=N[w],U?p.removeAttribute(w):p[w]=M):U||(O?p.setAttributeNS(O,w,M):p.setAttribute(w,M)),w==="name"&&m.a.Yc(p,U?"":M)})}},function(){m.c.checked={after:["value","attr"],init:function(p,x,T){function w(){var Y=p.checked,$=O();if(!m.S.Ya()&&(Y||!Q&&!m.S.qa())){var X=m.u.G(x);if(F){var he=H?X.v():X,ge=Z;Z=$,ge!==$?Y&&(m.a.Na(he,$,!0),m.a.Na(he,ge,!1)):m.a.Na(he,$,Y),H&&m.Za(X)&&X(he)}else U&&($===e?$=Y:Y||($=e)),m.m.eb(X,T,"checked",$,!0)}}function M(){var Y=m.a.f(x()),$=O();F?(p.checked=0<=m.a.A(Y,$),Z=$):p.checked=U&&$===e?!!Y:O()===Y}var O=m.xb(function(){if(T.has("checkedValue"))return m.a.f(T.get("checkedValue"));if(W)return T.has("value")?m.a.f(T.get("value")):p.value}),U=p.type=="checkbox",Q=p.type=="radio";if(U||Q){var z=x(),F=U&&m.a.f(z)instanceof Array,H=!(F&&z.push&&z.splice),W=Q||F,Z=F?O():e;Q&&!p.name&&m.c.uniqueName.init(p,function(){return!0}),m.o(w,null,{l:p}),m.a.B(p,"click",w),m.o(M,null,{l:p}),z=e}}},m.m.wa.checked=!0,m.c.checkedValue={update:function(p,x){p.value=m.a.f(x())}}}(),m.c.class={update:function(p,x){var T=m.a.Db(m.a.f(x()));m.a.Eb(p,p.__ko__cssValue,!1),p.__ko__cssValue=T,m.a.Eb(p,T,!0)}},m.c.css={update:function(p,x){var T=m.a.f(x());T!==null&&typeof T=="object"?m.a.P(T,function(w,M){M=m.a.f(M),m.a.Eb(p,w,M)}):m.c.class.update(p,x)}},m.c.enable={update:function(p,x){var T=m.a.f(x());T&&p.disabled?p.removeAttribute("disabled"):T||p.disabled||(p.disabled=!0)}},m.c.disable={update:function(p,x){m.c.enable.update(p,function(){return!m.a.f(x())})}},m.c.event={init:function(p,x,T,w,M){var O=x()||{};m.a.P(O,function(U){typeof U=="string"&&m.a.B(p,U,function(Q){var z,F=x()[U];if(F){try{var H=m.a.la(arguments);w=M.$data,H.unshift(w),z=F.apply(w,H)}finally{z!==!0&&(Q.preventDefault?Q.preventDefault():Q.returnValue=!1)}T.get(U+"Bubble")===!1&&(Q.cancelBubble=!0,Q.stopPropagation&&Q.stopPropagation())}})})}},m.c.foreach={Rc:function(p){return function(){var x=p(),T=m.a.bc(x);return!T||typeof T.length=="number"?{foreach:x,templateEngine:m.ba.Ma}:(m.a.f(x),{foreach:T.data,as:T.as,noChildContext:T.noChildContext,includeDestroyed:T.includeDestroyed,afterAdd:T.afterAdd,beforeRemove:T.beforeRemove,afterRender:T.afterRender,beforeMove:T.beforeMove,afterMove:T.afterMove,templateEngine:m.ba.Ma})}},init:function(p,x){return m.c.template.init(p,m.c.foreach.Rc(x))},update:function(p,x,T,w,M){return m.c.template.update(p,m.c.foreach.Rc(x),T,w,M)}},m.m.Ra.foreach=!1,m.h.ea.foreach=!0,m.c.hasfocus={init:function(p,x,T){function w(U){p.__ko_hasfocusUpdating=!0;var Q=p.ownerDocument;if("activeElement"in Q){var z;try{z=Q.activeElement}catch{z=Q.body}U=z===p}Q=x(),m.m.eb(Q,T,"hasfocus",U,!0),p.__ko_hasfocusLastValue=U,p.__ko_hasfocusUpdating=!1}var M=w.bind(null,!0),O=w.bind(null,!1);m.a.B(p,"focus",M),m.a.B(p,"focusin",M),m.a.B(p,"blur",O),m.a.B(p,"focusout",O),p.__ko_hasfocusLastValue=!1},update:function(p,x){var T=!!m.a.f(x());p.__ko_hasfocusUpdating||p.__ko_hasfocusLastValue===T||(T?p.focus():p.blur(),!T&&p.__ko_hasfocusLastValue&&p.ownerDocument.body.focus(),m.u.G(m.a.Fb,null,[p,T?"focusin":"focusout"]))}},m.m.wa.hasfocus=!0,m.c.hasFocus=m.c.hasfocus,m.m.wa.hasFocus="hasfocus",m.c.html={init:function(){return{controlsDescendantBindings:!0}},update:function(p,x){m.a.fc(p,x())}},function(){function p(x,T,w){m.c[x]={init:function(M,O,U,Q,z){var F,H,W={},Z,Y,$;if(T){Q=U.get("as");var X=U.get("noChildContext");$=!(Q&&X),W={as:Q,noChildContext:X,exportDependencies:$}}return Y=(Z=U.get("completeOn")=="render")||U.has(m.i.pa),m.o(function(){var he=m.a.f(O()),ge=!w!=!he,fe=!H,ye;($||ge!==F)&&(Y&&(z=m.i.Cb(M,z)),ge&&((!T||$)&&(W.dataDependency=m.S.o()),ye=T?z.createChildContext(typeof he=="function"?he:O,W):m.S.qa()?z.extend(null,W):z),fe&&m.S.qa()&&(H=m.a.Ca(m.h.childNodes(M),!0)),ge?(fe||m.h.va(M,m.a.Ca(H)),m.Oa(ye,M)):(m.h.Ea(M),Z||m.i.ma(M,m.i.H)),F=ge)},null,{l:M}),{controlsDescendantBindings:!0}}},m.m.Ra[x]=!1,m.h.ea[x]=!0}p("if"),p("ifnot",!1,!0),p("with",!0)}(),m.c.let={init:function(p,x,T,w,M){return x=M.extend(x),m.Oa(x,p),{controlsDescendantBindings:!0}}},m.h.ea.let=!0;var L={};m.c.options={init:function(p){if(m.a.R(p)!=="select")throw Error("options binding applies only to SELECT elements");for(;0<p.length;)p.remove(0);return{controlsDescendantBindings:!0}},update:function(p,x,T){function w(){return m.a.jb(p.options,function(X){return X.selected})}function M(X,he,ge){var fe=typeof he;return fe=="function"?he(X):fe=="string"?X[he]:ge}function O(X,he){if(Y&&F)m.i.ma(p,m.i.H);else if(Z.length){var ge=0<=m.a.A(Z,m.w.M(he[0]));m.a.Zc(he[0],ge),Y&&!ge&&m.u.G(m.a.Fb,null,[p,"change"])}}var U=p.multiple,Q=p.length!=0&&U?p.scrollTop:null,z=m.a.f(x()),F=T.get("valueAllowUnset")&&T.has("value"),H=T.get("optionsIncludeDestroyed");x={};var W,Z=[];F||(U?Z=m.a.Mb(w(),m.w.M):0<=p.selectedIndex&&Z.push(m.w.M(p.options[p.selectedIndex]))),z&&(typeof z.length>"u"&&(z=[z]),W=m.a.jb(z,function(X){return H||X===e||X===null||!m.a.f(X._destroy)}),T.has("optionsCaption")&&(z=m.a.f(T.get("optionsCaption")),z!==null&&z!==e&&W.unshift(L)));var Y=!1;if(x.beforeRemove=function(X){p.removeChild(X)},z=O,T.has("optionsAfterRender")&&typeof T.get("optionsAfterRender")=="function"&&(z=function(X,he){O(0,he),m.u.G(T.get("optionsAfterRender"),null,[he[0],X!==L?X:e])}),m.a.ec(p,W,function(X,he,ge){return ge.length&&(Z=!F&&ge[0].selected?[m.w.M(ge[0])]:[],Y=!0),he=p.ownerDocument.createElement("option"),X===L?(m.a.Bb(he,T.get("optionsCaption")),m.w.cb(he,e)):(ge=M(X,T.get("optionsValue"),X),m.w.cb(he,m.a.f(ge)),X=M(X,T.get("optionsText"),ge),m.a.Bb(he,X)),[he]},x,z),!F){var $;U?$=Z.length&&w().length<Z.length:$=Z.length&&0<=p.selectedIndex?m.w.M(p.options[p.selectedIndex])!==Z[0]:Z.length||0<=p.selectedIndex,$&&m.u.G(m.a.Fb,null,[p,"change"])}(F||m.S.Ya())&&m.i.ma(p,m.i.H),m.a.wd(p),Q&&20<Math.abs(Q-p.scrollTop)&&(p.scrollTop=Q)}},m.c.options.$b=m.a.g.Z(),m.c.selectedOptions={init:function(p,x,T){function w(){var U=x(),Q=[];m.a.D(p.getElementsByTagName("option"),function(z){z.selected&&Q.push(m.w.M(z))}),m.m.eb(U,T,"selectedOptions",Q)}function M(){var U=m.a.f(x()),Q=p.scrollTop;U&&typeof U.length=="number"&&m.a.D(p.getElementsByTagName("option"),function(z){var F=0<=m.a.A(U,m.w.M(z));z.selected!=F&&m.a.Zc(z,F)}),p.scrollTop=Q}if(m.a.R(p)!="select")throw Error("selectedOptions binding applies only to SELECT elements");var O;m.i.subscribe(p,m.i.H,function(){O?w():(m.a.B(p,"change",w),O=m.o(M,null,{l:p}))},null,{notifyImmediately:!0})},update:function(){}},m.m.wa.selectedOptions=!0,m.c.style={update:function(p,x){var T=m.a.f(x()||{});m.a.P(T,function(w,M){if(M=m.a.f(M),(M===null||M===e||M===!1)&&(M=""),o)o(p).css(w,M);else if(/^--/.test(w))p.style.setProperty(w,M);else{w=w.replace(/-(\w)/g,function(U,Q){return Q.toUpperCase()});var O=p.style[w];p.style[w]=M,M===O||p.style[w]!=O||isNaN(M)||(p.style[w]=M+"px")}})}},m.c.submit={init:function(p,x,T,w,M){if(typeof x()!="function")throw Error("The value for a submit binding must be a function");m.a.B(p,"submit",function(O){var U,Q=x();try{U=Q.call(M.$data,p)}finally{U!==!0&&(O.preventDefault?O.preventDefault():O.returnValue=!1)}})}},m.c.text={init:function(){return{controlsDescendantBindings:!0}},update:function(p,x){m.a.Bb(p,x())}},m.h.ea.text=!0,function(){if(t&&t.navigator){var p=function(W){if(W)return parseFloat(W[1])},x=t.navigator.userAgent,T,w,M,O,U;(T=t.opera&&t.opera.version&&parseInt(t.opera.version()))||(U=p(x.match(/Edge\/([^ ]+)$/)))||p(x.match(/Chrome\/([^ ]+)/))||(w=p(x.match(/Version\/([^ ]+) Safari/)))||(M=p(x.match(/Firefox\/([^ ]+)/)))||(O=m.a.W||p(x.match(/MSIE ([^ ]+)/)))||(O=p(x.match(/rv:([^ )]+)/)))}if(8<=O&&10>O)var Q=m.a.g.Z(),z=m.a.g.Z(),F=function(W){var Z=this.activeElement;(Z=Z&&m.a.g.get(Z,z))&&Z(W)},H=function(W,Z){var Y=W.ownerDocument;m.a.g.get(Y,Q)||(m.a.g.set(Y,Q,!0),m.a.B(Y,"selectionchange",F)),m.a.g.set(W,z,Z)};m.c.textInput={init:function(W,Z,Y){function $(ke,Ge){m.a.B(W,ke,Ge)}function X(){var ke=m.a.f(Z());(ke===null||ke===e)&&(ke=""),Ie!==e&&ke===Ie?m.a.setTimeout(X,4):W.value!==ke&&(Te=!0,W.value=ke,Te=!1,fe=W.value)}function he(){ye||(Ie=W.value,ye=m.a.setTimeout(ge,4))}function ge(){clearTimeout(ye),Ie=ye=e;var ke=W.value;fe!==ke&&(fe=ke,m.m.eb(Z(),Y,"textInput",ke))}var fe=W.value,ye,Ie,ve=m.a.W==9?he:ge,Te=!1;O&&$("keypress",ge),11>O&&$("propertychange",function(ke){Te||ke.propertyName!=="value"||ve(ke)}),O==8&&($("keyup",ge),$("keydown",ge)),H&&(H(W,ve),$("dragend",he)),(!O||9<=O)&&$("input",ve),5>w&&m.a.R(W)==="textarea"?($("keydown",he),$("paste",he),$("cut",he)):11>T?$("keydown",he):4>M?($("DOMAutoComplete",ge),$("dragdrop",ge),$("drop",ge)):U&&W.type==="number"&&$("keydown",he),$("change",ge),$("blur",ge),m.o(X,null,{l:W})}},m.m.wa.textInput=!0,m.c.textinput={preprocess:function(W,Z,Y){Y("textInput",W)}}}(),m.c.uniqueName={init:function(p,x){if(x()){var T="ko_unique_"+ ++m.c.uniqueName.rd;m.a.Yc(p,T)}}},m.c.uniqueName.rd=0,m.c.using={init:function(p,x,T,w,M){var O;return T.has("as")&&(O={as:T.get("as"),noChildContext:T.get("noChildContext")}),x=M.createChildContext(x,O),m.Oa(x,p),{controlsDescendantBindings:!0}}},m.h.ea.using=!0,m.c.value={init:function(p,x,T){var w=m.a.R(p),M=w=="input";if(!M||p.type!="checkbox"&&p.type!="radio"){var O=[],U=T.get("valueUpdate"),Q=!1,z=null;U&&(typeof U=="string"?O=[U]:O=m.a.wc(U),m.a.Pa(O,"change"));var F=function(){z=null,Q=!1;var Z=x(),Y=m.w.M(p);m.m.eb(Z,T,"value",Y)};!m.a.W||!M||p.type!="text"||p.autocomplete=="off"||p.form&&p.form.autocomplete=="off"||m.a.A(O,"propertychange")!=-1||(m.a.B(p,"propertychange",function(){Q=!0}),m.a.B(p,"focus",function(){Q=!1}),m.a.B(p,"blur",function(){Q&&F()})),m.a.D(O,function(Z){var Y=F;m.a.Ud(Z,"after")&&(Y=function(){z=m.w.M(p),m.a.setTimeout(F,0)},Z=Z.substring(5)),m.a.B(p,Z,Y)});var H;if(H=M&&p.type=="file"?function(){var Z=m.a.f(x());Z===null||Z===e||Z===""?p.value="":m.u.G(F)}:function(){var Z=m.a.f(x()),Y=m.w.M(p);z!==null&&Z===z?m.a.setTimeout(H,0):(Z!==Y||Y===e)&&(w==="select"?(Y=T.get("valueAllowUnset"),m.w.cb(p,Z,Y),Y||Z===m.w.M(p)||m.u.G(F)):m.w.cb(p,Z))},w==="select"){var W;m.i.subscribe(p,m.i.H,function(){W?T.get("valueAllowUnset")?H():F():(m.a.B(p,"change",F),W=m.o(H,null,{l:p}))},null,{notifyImmediately:!0})}else m.a.B(p,"change",F),m.o(H,null,{l:p})}else m.ib(p,{checkedValue:x})},update:function(){}},m.m.wa.value=!0,m.c.visible={update:function(p,x){var T=m.a.f(x()),w=p.style.display!="none";T&&!w?p.style.display="":!T&&w&&(p.style.display="none")}},m.c.hidden={update:function(p,x){m.c.visible.update(p,function(){return!m.a.f(x())})}},function(p){m.c[p]={init:function(x,T,w,M,O){return m.c.event.init.call(this,x,function(){var U={};return U[p]=T(),U},w,M,O)}}}("click"),m.ca=function(){},m.ca.prototype.renderTemplateSource=function(){throw Error("Override renderTemplateSource")},m.ca.prototype.createJavaScriptEvaluatorBlock=function(){throw Error("Override createJavaScriptEvaluatorBlock")},m.ca.prototype.makeTemplateSource=function(p,x){if(typeof p=="string"){x=x||n;var T=x.getElementById(p);if(!T)throw Error("Cannot find template with ID "+p);return new m.C.F(T)}if(p.nodeType==1||p.nodeType==8)return new m.C.ia(p);throw Error("Unknown template type: "+p)},m.ca.prototype.renderTemplate=function(p,x,T,w){return p=this.makeTemplateSource(p,w),this.renderTemplateSource(p,x,T,w)},m.ca.prototype.isTemplateRewritten=function(p,x){return this.allowTemplateRewriting===!1?!0:this.makeTemplateSource(p,x).data("isRewritten")},m.ca.prototype.rewriteTemplate=function(p,x,T){p=this.makeTemplateSource(p,T),x=x(p.text()),p.text(x),p.data("isRewritten",!0)},m.b("templateEngine",m.ca),m.kc=function(){function p(w,M,O,U){w=m.m.ac(w);for(var Q=m.m.Ra,z=0;z<w.length;z++){var F=w[z].key;if(Object.prototype.hasOwnProperty.call(Q,F)){var H=Q[F];if(typeof H=="function"){if(F=H(w[z].value))throw Error(F)}else if(!H)throw Error("This template engine does not support the '"+F+"' binding within its templates")}}return O="ko.__tr_ambtns(function($context,$element){return(function(){return{ "+m.m.vb(w,{valueAccessors:!0})+" } })()},'"+O.toLowerCase()+"')",U.createJavaScriptEvaluatorBlock(O)+M}var x=/(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi,T=/\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;return{xd:function(w,M,O){M.isTemplateRewritten(w,O)||M.rewriteTemplate(w,function(U){return m.kc.Ld(U,M)},O)},Ld:function(w,M){return w.replace(x,function(O,U,Q,z,F){return p(F,U,Q,M)}).replace(T,function(O,U){return p(U,"<!-- ko -->","#comment",M)})},md:function(w,M){return m.aa.Xb(function(O,U){var Q=O.nextSibling;Q&&Q.nodeName.toLowerCase()===M&&m.ib(Q,w,U)})}}}(),m.b("__tr_ambtns",m.kc.md),function(){m.C={},m.C.F=function(T){if(this.F=T){var w=m.a.R(T);this.ab=w==="script"?1:w==="textarea"?2:w=="template"&&T.content&&T.content.nodeType===11?3:4}},m.C.F.prototype.text=function(){var T=this.ab===1?"text":this.ab===2?"value":"innerHTML";if(arguments.length==0)return this.F[T];var w=arguments[0];T==="innerHTML"?m.a.fc(this.F,w):this.F[T]=w};var p=m.a.g.Z()+"_";m.C.F.prototype.data=function(T){if(arguments.length===1)return m.a.g.get(this.F,p+T);m.a.g.set(this.F,p+T,arguments[1])};var x=m.a.g.Z();m.C.F.prototype.nodes=function(){var T=this.F;if(arguments.length==0){var w=m.a.g.get(T,x)||{},M=w.lb||(this.ab===3?T.content:this.ab===4?T:e);if(!M||w.jd){var O=this.text();O&&O!==w.bb&&(M=m.a.Md(O,T.ownerDocument),m.a.g.set(T,x,{lb:M,bb:O,jd:!0}))}return M}w=arguments[0],this.ab!==e&&this.text(""),m.a.g.set(T,x,{lb:w})},m.C.ia=function(T){this.F=T},m.C.ia.prototype=new m.C.F,m.C.ia.prototype.constructor=m.C.ia,m.C.ia.prototype.text=function(){if(arguments.length==0){var T=m.a.g.get(this.F,x)||{};return T.bb===e&&T.lb&&(T.bb=T.lb.innerHTML),T.bb}m.a.g.set(this.F,x,{bb:arguments[0]})},m.b("templateSources",m.C),m.b("templateSources.domElement",m.C.F),m.b("templateSources.anonymousTemplate",m.C.ia)}(),function(){function p(z,F,H){var W;for(F=m.h.nextSibling(F);z&&(W=z)!==F;)z=m.h.nextSibling(W),H(W,z)}function x(z,F){if(z.length){var H=z[0],W=z[z.length-1],Z=H.parentNode,Y=m.ga.instance,$=Y.preprocessNode;if($){if(p(H,W,function(X,he){var ge=X.previousSibling,fe=$.call(Y,X);fe&&(X===H&&(H=fe[0]||he),X===W&&(W=fe[fe.length-1]||ge))}),z.length=0,!H)return;H===W?z.push(H):(z.push(H,W),m.a.Ua(z,Z))}p(H,W,function(X){X.nodeType!==1&&X.nodeType!==8||m.vc(F,X)}),p(H,W,function(X){X.nodeType!==1&&X.nodeType!==8||m.aa.cd(X,[F])}),m.a.Ua(z,Z)}}function T(z){return z.nodeType?z:0<z.length?z[0]:null}function w(z,F,H,W,Z){Z=Z||{};var Y=(z&&T(z)||H||{}).ownerDocument,$=Z.templateEngine||O;if(m.kc.xd(H,$,Y),H=$.renderTemplate(H,W,Z,Y),typeof H.length!="number"||0<H.length&&typeof H[0].nodeType!="number")throw Error("Template engine must return an array of DOM nodes");switch(Y=!1,F){case"replaceChildren":m.h.va(z,H),Y=!0;break;case"replaceNode":m.a.Xc(z,H),Y=!0;break;case"ignoreTargetNode":break;default:throw Error("Unknown renderMode: "+F)}return Y&&(x(H,W),Z.afterRender&&m.u.G(Z.afterRender,null,[H,W[Z.as||"$data"]]),F=="replaceChildren"&&m.i.ma(z,m.i.H)),H}function M(z,F,H){return m.O(z)?z():typeof z=="function"?z(F,H):z}var O;m.gc=function(z){if(z!=e&&!(z instanceof m.ca))throw Error("templateEngine must inherit from ko.templateEngine");O=z},m.dc=function(z,F,H,W,Z){if(H=H||{},(H.templateEngine||O)==e)throw Error("Set a template engine before calling renderTemplate");if(Z=Z||"replaceChildren",W){var Y=T(W);return m.$(function(){var X=F&&F instanceof m.fa?F:new m.fa(F,null,null,null,{exportDependencies:!0}),$=M(z,X.$data,X),X=w(W,Z,$,X,H);Z=="replaceNode"&&(W=X,Y=T(W))},null,{Sa:function(){return!Y||!m.a.Sb(Y)},l:Y&&Z=="replaceNode"?Y.parentNode:Y})}return m.aa.Xb(function($){m.dc(z,F,H,$,"replaceNode")})},m.Qd=function(z,F,H,W,Z){function Y(Ie,ve){m.u.G(m.a.ec,null,[W,Ie,X,H,$,ve]),m.i.ma(W,m.i.H)}function $(Ie,ve){x(ve,he),H.afterRender&&H.afterRender(ve,Ie),he=null}function X(Ie,ve){he=Z.createChildContext(Ie,{as:ge,noChildContext:H.noChildContext,extend:function(ke){ke.$index=ve,ge&&(ke[ge+"Index"]=ve)}});var Te=M(z,Ie,he);return w(W,"ignoreTargetNode",Te,he,H)}var he,ge=H.as,fe=H.includeDestroyed===!1||m.options.foreachHidesDestroyed&&!H.includeDestroyed;if(fe||H.beforeRemove||!m.Pc(F))return m.$(function(){var Ie=m.a.f(F)||[];typeof Ie.length>"u"&&(Ie=[Ie]),fe&&(Ie=m.a.jb(Ie,function(ve){return ve===e||ve===null||!m.a.f(ve._destroy)})),Y(Ie)},null,{l:W});Y(F.v());var ye=F.subscribe(function(Ie){Y(F(),Ie)},null,"arrayChange");return ye.l(W),ye};var U=m.a.g.Z(),Q=m.a.g.Z();m.c.template={init:function(z,F){var H=m.a.f(F());if(typeof H=="string"||"name"in H)m.h.Ea(z);else if("nodes"in H){if(H=H.nodes||[],m.O(H))throw Error('The "nodes" option must be a plain, non-observable array.');var W=H[0]&&H[0].parentNode;W&&m.a.g.get(W,Q)||(W=m.a.Yb(H),m.a.g.set(W,Q,!0)),new m.C.ia(z).nodes(W)}else if(H=m.h.childNodes(z),0<H.length)W=m.a.Yb(H),new m.C.ia(z).nodes(W);else throw Error("Anonymous template defined, but no template content was provided");return{controlsDescendantBindings:!0}},update:function(z,F,H,W,Z){var Y=F();F=m.a.f(Y),H=!0,W=null,typeof F=="string"?F={}:(Y="name"in F?F.name:z,"if"in F&&(H=m.a.f(F.if)),H&&"ifnot"in F&&(H=!m.a.f(F.ifnot)),H&&!Y&&(H=!1)),"foreach"in F?W=m.Qd(Y,H&&F.foreach||[],F,z,Z):H?(H=Z,"data"in F&&(H=Z.createChildContext(F.data,{as:F.as,noChildContext:F.noChildContext,exportDependencies:!0})),W=m.dc(Y,H,F,z)):m.h.Ea(z),Z=W,(F=m.a.g.get(z,U))&&typeof F.s=="function"&&F.s(),m.a.g.set(z,U,!Z||Z.ja&&!Z.ja()?e:Z)}},m.m.Ra.template=function(z){return z=m.m.ac(z),z.length==1&&z[0].unknown||m.m.Id(z,"name")?null:"This template engine does not support anonymous templates nested within its templates"},m.h.ea.template=!0}(),m.b("setTemplateEngine",m.gc),m.b("renderTemplate",m.dc),m.a.Kc=function(p,x,T){if(p.length&&x.length){var w,M,O,U,Q;for(w=M=0;(!T||w<T)&&(U=p[M]);++M){for(O=0;Q=x[O];++O)if(U.value===Q.value){U.moved=Q.index,Q.moved=U.index,x.splice(O,1),w=O=0;break}w+=O}}},m.a.Pb=function(){function p(x,T,w,M,O){var U=Math.min,Q=Math.max,z=[],F,H=x.length,W,Z=T.length,Y=Z-H||1,$=H+Z+1,X,he,ge;for(F=0;F<=H;F++)for(he=X,z.push(X=[]),ge=U(Z,F+Y),W=Q(0,F-1);W<=ge;W++)X[W]=W?F?x[F-1]===T[W-1]?he[W-1]:U(he[W]||$,X[W-1]||$)+1:W+1:F+1;for(U=[],Q=[],Y=[],F=H,W=Z;F||W;)Z=z[F][W]-1,W&&Z===z[F][W-1]?Q.push(U[U.length]={status:w,value:T[--W],index:W}):F&&Z===z[F-1][W]?Y.push(U[U.length]={status:M,value:x[--F],index:F}):(--W,--F,O.sparse||U.push({status:"retained",value:T[W]}));return m.a.Kc(Y,Q,!O.dontLimitMoves&&10*H),U.reverse()}return function(x,T,w){return w=typeof w=="boolean"?{dontLimitMoves:w}:w||{},x=x||[],T=T||[],x.length<T.length?p(x,T,"added","deleted",w):p(T,x,"deleted","added",w)}}(),m.b("utils.compareArrays",m.a.Pb),function(){function p(w,M,O,U,Q){var z=[],F=m.$(function(){var H=M(O,Q,m.a.Ua(z,w))||[];0<z.length&&(m.a.Xc(z,H),U&&m.u.G(U,null,[O,H,Q])),z.length=0,m.a.Nb(z,H)},null,{l:w,Sa:function(){return!m.a.kd(z)}});return{Y:z,$:F.ja()?F:e}}var x=m.a.g.Z(),T=m.a.g.Z();m.a.ec=function(w,M,O,U,Q,z){function F(vt){Te={Aa:vt,pb:m.ta(he++)},$.push(Te),Y||ve.push(Te)}function H(vt){Te=Z[vt],he!==Te.pb.v()&&Ie.push(Te),Te.pb(he++),m.a.Ua(Te.Y,w),$.push(Te)}function W(vt,bi){if(vt)for(var di=0,Ot=bi.length;di<Ot;di++)m.a.D(bi[di].Y,function(Tt){vt(Tt,di,bi[di].Aa)})}M=M||[],typeof M.length>"u"&&(M=[M]),U=U||{};var Z=m.a.g.get(w,x),Y=!Z,$=[],X=0,he=0,ge=[],fe=[],ye=[],Ie=[],ve=[],Te,ke=0;if(Y)m.a.D(M,F);else{if(!z||Z&&Z._countWaitingForRemove){var Ge=m.a.Mb(Z,function(vt){return vt.Aa});z=m.a.Pb(Ge,M,{dontLimitMoves:U.dontLimitMoves,sparse:!0})}for(var Ge=0,qe,tt,$t;qe=z[Ge];Ge++)switch(tt=qe.moved,$t=qe.index,qe.status){case"deleted":for(;X<$t;)H(X++);tt===e&&(Te=Z[X],Te.$&&(Te.$.s(),Te.$=e),m.a.Ua(Te.Y,w).length&&(U.beforeRemove&&($.push(Te),ke++,Te.Aa===T?Te=null:ye.push(Te)),Te&&ge.push.apply(ge,Te.Y))),X++;break;case"added":for(;he<$t;)H(X++);tt!==e?(fe.push($.length),H(tt)):F(qe.value)}for(;he<M.length;)H(X++);$._countWaitingForRemove=ke}m.a.g.set(w,x,$),W(U.beforeMove,Ie),m.a.D(ge,U.beforeRemove?m.oa:m.removeNode);var it,tn,Wt;try{Wt=w.ownerDocument.activeElement}catch{}if(fe.length)for(;(Ge=fe.shift())!=e;){for(Te=$[Ge],it=e;Ge;)if((tn=$[--Ge].Y)&&tn.length){it=tn[tn.length-1];break}for(M=0;X=Te.Y[M];it=X,M++)m.h.Wb(w,X,it)}for(Ge=0;Te=$[Ge];Ge++){for(Te.Y||m.a.extend(Te,p(w,O,Te.Aa,Q,Te.pb)),M=0;X=Te.Y[M];it=X,M++)m.h.Wb(w,X,it);!Te.Ed&&Q&&(Q(Te.Aa,Te.Y,Te.pb),Te.Ed=!0,it=Te.Y[Te.Y.length-1])}for(Wt&&w.ownerDocument.activeElement!=Wt&&Wt.focus(),W(U.beforeRemove,ye),Ge=0;Ge<ye.length;++Ge)ye[Ge].Aa=T;W(U.afterMove,Ie),W(U.afterAdd,ve)}}(),m.b("utils.setDomNodeChildrenFromArrayMapping",m.a.ec),m.ba=function(){this.allowTemplateRewriting=!1},m.ba.prototype=new m.ca,m.ba.prototype.constructor=m.ba,m.ba.prototype.renderTemplateSource=function(p,x,T,w){return(x=!(9>m.a.W)&&p.nodes?p.nodes():null)?m.a.la(x.cloneNode(!0).childNodes):(p=p.text(),m.a.ua(p,w))},m.ba.Ma=new m.ba,m.gc(m.ba.Ma),m.b("nativeTemplateEngine",m.ba),function(){m.$a=function(){var x=this.Hd=function(){if(!o||!o.tmpl)return 0;try{if(0<=o.tmpl.tag.tmpl.open.toString().indexOf("__"))return 2}catch{}return 1}();this.renderTemplateSource=function(T,w,M,O){if(O=O||n,M=M||{},2>x)throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");var U=T.data("precompiled");return U||(U=T.text()||"",U=o.template(null,"{{ko_with $item.koBindingContext}}"+U+"{{/ko_with}}"),T.data("precompiled",U)),T=[w.$data],w=o.extend({koBindingContext:w},M.templateOptions),w=o.tmpl(U,T,w),w.appendTo(O.createElement("div")),o.fragments={},w},this.createJavaScriptEvaluatorBlock=function(T){return"{{ko_code ((function() { return "+T+" })()) }}"},this.addTemplate=function(T,w){n.write("<script type='text/html' id='"+T+"'>"+w+"<\/script>")},0<x&&(o.tmpl.tag.ko_code={open:"__.push($1 || '');"},o.tmpl.tag.ko_with={open:"with($1) {",close:"} "})},m.$a.prototype=new m.ca,m.$a.prototype.constructor=m.$a;var p=new m.$a;0<p.Hd&&m.gc(p),m.b("jqueryTmplTemplateEngine",m.$a)}()})})()})()})();var wBt=ko;typeof window<"u"?(ko=window.ko,typeof lR<"u"?window.ko=lR:delete window.ko):(ko=global.ko,typeof lR<"u"?global.ko=lR:delete global.ko);var PS=wBt;/** + * @license + * Knockout ES5 plugin - https://github.com/SteveSanderson/knockout-es5 + * Copyright (c) Steve Sanderson + * MIT license + */var GZ="__knockoutObservables",zZ="__knockoutSubscribable";function jTe(e,t){if(!e)throw new Error("When calling ko.track, you must pass an object as the first parameter.");var n=this,i=YTe(e,!0);return t=t||Object.getOwnPropertyNames(e),t.forEach(function(o){if(!(o===GZ||o===zZ)&&!(o in i)){var r=e[o],s=r instanceof Array,a=n.isObservable(r)?r:s?n.observableArray(r):n.observable(r);Object.defineProperty(e,o,{configurable:!0,enumerable:!0,get:a,set:n.isWriteableObservable(a)?a:void 0}),i[o]=a,s&&DBt(n,a)}}),e}function YTe(e,t){var n=e[GZ];return!n&&t&&(n={},Object.defineProperty(e,GZ,{value:n})),n}function BBt(e,t,n){var i=this,o={owner:e,deferEvaluation:!0};if(typeof n=="function")o.read=n;else{if("value"in n)throw new Error('For ko.defineProperty, you must not specify a "value" for the property. You must provide a "get" function.');if(typeof n.get!="function")throw new Error('For ko.defineProperty, the third parameter must be either an evaluator function, or an options object containing a function called "get".');o.read=n.get,o.write=n.set}return e[t]=i.computed(o),jTe.call(i,e,[t]),e}function DBt(e,t){var n=null;e.computed(function(){n&&(n.dispose(),n=null);var i=t();i instanceof Array&&(n=vBt(e,t,i))})}function vBt(e,t,n){var i=PBt(e,n);return i.subscribe(t)}function PBt(e,t){var n=t[zZ];if(!n){n=new e.subscribable,Object.defineProperty(t,zZ,{value:n});var i={};RBt(t,n,i),MBt(e,t,n,i)}return n}function RBt(e,t,n){["pop","push","reverse","shift","sort","splice","unshift"].forEach(function(i){var o=e[i];e[i]=function(){var r=o.apply(this,arguments);return n.pause!==!0&&t.notifySubscribers(this),r}})}function MBt(e,t,n,i){["remove","removeAll","destroy","destroyAll","replace"].forEach(function(o){Object.defineProperty(t,o,{enumerable:!1,value:function(){var r;i.pause=!0;try{r=e.observableArray.fn[o].apply(e.observableArray(t),arguments)}finally{i.pause=!1}return n.notifySubscribers(t),r}})})}function qTe(e,t){if(!e)return null;var n=YTe(e,!1);return n&&n[t]||null}function NBt(e,t){var n=qTe(e,t);n&&n.valueHasMutated()}function LBt(e){e.track=jTe,e.getObservable=qTe,e.valueHasMutated=NBt,e.defineProperty=BBt}var mH={attachToKo:LBt};var KTe="http://www.w3.org/2000/svg",XTe="cesium-svgPath-svg",OBt={register:function(e){e.bindingHandlers.cesiumSvgPath={init:function(t,n){let i=document.createElementNS(KTe,"svg:svg");i.setAttribute("class",XTe);let o=document.createElementNS(KTe,"path");return i.appendChild(o),e.virtualElements.setDomNodeChildren(t,[i]),e.computed({read:function(){let r=e.unwrap(n());o.setAttribute("d",e.unwrap(r.path));let s=e.unwrap(r.width),a=e.unwrap(r.height);i.setAttribute("width",s),i.setAttribute("height",a),i.setAttribute("viewBox",`0 0 ${s} ${a}`),r.css&&i.setAttribute("class",`${XTe} ${e.unwrap(r.css)}`)},disposeWhenNodeIsRemoved:t}),{controlsDescendantBindings:!0}}},e.virtualElements.allowedBindings.cesiumSvgPath=!0}},AH=OBt;mH.attachToKo(PS);AH.register(PS);var xe=PS;function uR(e){l(e)||(e=new Vm),this._clock=e,this._eventHelper=new Lr,this._eventHelper.add(e.onTick,this.synchronize,this),this.systemTime=xe.observable(K.now()),this.systemTime.equalityComparer=K.equals,this.startTime=xe.observable(e.startTime),this.startTime.equalityComparer=K.equals,this.startTime.subscribe(function(t){e.startTime=t,this.synchronize()},this),this.stopTime=xe.observable(e.stopTime),this.stopTime.equalityComparer=K.equals,this.stopTime.subscribe(function(t){e.stopTime=t,this.synchronize()},this),this.currentTime=xe.observable(e.currentTime),this.currentTime.equalityComparer=K.equals,this.currentTime.subscribe(function(t){e.currentTime=t,this.synchronize()},this),this.multiplier=xe.observable(e.multiplier),this.multiplier.subscribe(function(t){e.multiplier=t,this.synchronize()},this),this.clockStep=xe.observable(e.clockStep),this.clockStep.subscribe(function(t){e.clockStep=t,this.synchronize()},this),this.clockRange=xe.observable(e.clockRange),this.clockRange.subscribe(function(t){e.clockRange=t,this.synchronize()},this),this.canAnimate=xe.observable(e.canAnimate),this.canAnimate.subscribe(function(t){e.canAnimate=t,this.synchronize()},this),this.shouldAnimate=xe.observable(e.shouldAnimate),this.shouldAnimate.subscribe(function(t){e.shouldAnimate=t,this.synchronize()},this),xe.track(this,["systemTime","startTime","stopTime","currentTime","multiplier","clockStep","clockRange","canAnimate","shouldAnimate"])}Object.defineProperties(uR.prototype,{clock:{get:function(){return this._clock}}});uR.prototype.synchronize=function(){let e=this._clock;this.systemTime=K.now(),this.startTime=e.startTime,this.stopTime=e.stopTime,this.currentTime=e.currentTime,this.multiplier=e.multiplier,this.clockStep=e.clockStep,this.clockRange=e.clockRange,this.canAnimate=e.canAnimate,this.shouldAnimate=e.shouldAnimate};uR.prototype.isDestroyed=function(){return!1};uR.prototype.destroy=function(){this._eventHelper.removeAll(),ue(this)};var pH=uR;function FBt(){this.canExecute=void 0,this.beforeExecute=void 0,this.afterExecute=void 0,me.throwInstantiationError()}var JTe=FBt;var RS={};RS.createCheckbox=function(e,t,n){let i=document.createElement("div"),o=document.createElement("label"),r=document.createElement("input");r.type="checkbox";let s=`checked: ${t}`;return l(n)&&(s+=`, enable: ${n}`),r.setAttribute("data-bind",s),o.appendChild(r),o.appendChild(document.createTextNode(e)),i.appendChild(o),i};RS.createSection=function(e,t,n,i){let o=document.createElement("div");o.className="cesium-cesiumInspector-section",o.setAttribute("data-bind",`css: { "cesium-cesiumInspector-section-collapsed": !${n} }`),e.appendChild(o);let r=document.createElement("h3");r.className="cesium-cesiumInspector-sectionHeader",r.appendChild(document.createTextNode(t)),r.setAttribute("data-bind",`click: ${i}`),o.appendChild(r);let s=document.createElement("div");return s.className="cesium-cesiumInspector-sectionContent",o.appendChild(s),s};RS.createRangeInput=function(e,t,n,i,o,r){r=r??t;let s=document.createElement("input");s.setAttribute("data-bind",`value: ${r}`),s.type="number";let a=document.createElement("input");a.type="range",a.min=n,a.max=i,a.step=o??"any",a.setAttribute("data-bind",`valueUpdate: "input", value: ${t}`);let c=document.createElement("div");c.appendChild(a);let u=document.createElement("div");return u.className="cesium-cesiumInspector-slider",u.appendChild(document.createTextNode(e)),u.appendChild(s),u.appendChild(c),u};RS.createRangeInputWithDynamicMinMax=function(e,t,n,i){i=i??t;let o=document.createElement("input");o.setAttribute("data-bind",`value: ${i}`),o.type="number";let r=document.createElement("input");r.type="range",r.step=n??"any",r.setAttribute("data-bind",`valueUpdate: "input", value: ${t}, attr: { min: ${t}Min, max: ${t}Max }`);let s=document.createElement("div");s.appendChild(r);let a=document.createElement("div");return a.className="cesium-cesiumInspector-slider",a.appendChild(document.createTextNode(e)),a.appendChild(o),a.appendChild(s),a};RS.createButton=function(e,t,n){let i=document.createElement("button");i.type="button",i.textContent=e,i.className="cesium-cesiumInspector-pickButton";let o=`click: ${t}`;return l(n)&&(o+=`, css: {"cesium-cesiumInspector-pickButtonHighlight" : ${n}}`),i.setAttribute("data-bind",o),i};var ff=RS;function ZTe(e,t){this._command=e,t=t??V.EMPTY_OBJECT,this.toggled=t.toggled??!1,this.tooltip=t.tooltip??"",xe.track(this,["toggled","tooltip"])}Object.defineProperties(ZTe.prototype,{command:{get:function(){return this._command}}});var L0=ZTe;function QBt(e,t){t=t??!0;let n=new _e,i=new _e;function o(){let r={args:arguments,cancel:!1},s;return n.raiseEvent(r),r.cancel||(s=e.apply(null,arguments),i.raiseEvent(s)),s}return o.canExecute=t,xe.track(o,["canExecute"]),Object.defineProperties(o,{beforeExecute:{value:n},afterExecute:{value:i}}),o}var Mn=QBt;function kBt(e,t,n,i,o){return n.call(i,e[t]),xe.getObservable(e,t).subscribe(n,i,o)}var fc=kBt;var O0="http://www.w3.org/2000/svg",tSe="http://www.w3.org/1999/xlink",gH,fR=G.fromCssColorString("rgba(247,250,255,0.384)"),_H=G.fromCssColorString("rgba(143,191,255,0.216)"),VZ=G.fromCssColorString("rgba(153,197,255,0.098)"),yH=G.fromCssColorString("rgba(255,255,255,0.086)"),UBt=G.fromCssColorString("rgba(255,255,255,0.267)"),GBt=G.fromCssColorString("rgba(255,255,255,0)"),$Te=G.fromCssColorString("rgba(66,67,68,0.3)"),eSe=G.fromCssColorString("rgba(0,0,0,0.5)");function tC(e){return G.fromCssColorString(window.getComputedStyle(e).getPropertyValue("color"))}var dR={animation_pathReset:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.316,5.318,9.833,13.682,9.833,5.5,5.5,5.5,5.5,25.5,9.833,25.5,9.833,17.318,24.316,25.682z"},animation_pathPause:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M13,5.5,7.5,5.5,7.5,25.5,13,25.5zM24.5,5.5,19,5.5,19,25.5,24.5,25.5z"},animation_pathPlay:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathPlayReverse:{tagName:"path",transform:"translate(16,16) scale(-0.85,0.85) translate(-16,-16)",d:"M6.684,25.682L24.316,15.5L6.684,5.318V25.682z"},animation_pathLoop:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-16)",d:"M24.249,15.499c-0.009,4.832-3.918,8.741-8.75,8.75c-2.515,0-4.768-1.064-6.365-2.763l2.068-1.442l-7.901-3.703l0.744,8.694l2.193-1.529c2.244,2.594,5.562,4.242,9.26,4.242c6.767,0,12.249-5.482,12.249-12.249H24.249zM15.499,6.75c2.516,0,4.769,1.065,6.367,2.764l-2.068,1.443l7.901,3.701l-0.746-8.693l-2.192,1.529c-2.245-2.594-5.562-4.245-9.262-4.245C8.734,3.25,3.25,8.734,3.249,15.499H6.75C6.758,10.668,10.668,6.758,15.499,6.75z"},animation_pathClock:{tagName:"path",transform:"translate(16,16) scale(0.85) translate(-16,-15.5)",d:"M15.5,2.374C8.251,2.375,2.376,8.251,2.374,15.5C2.376,22.748,8.251,28.623,15.5,28.627c7.249-0.004,13.124-5.879,13.125-13.127C28.624,8.251,22.749,2.375,15.5,2.374zM15.5,25.623C9.909,25.615,5.385,21.09,5.375,15.5C5.385,9.909,9.909,5.384,15.5,5.374c5.59,0.01,10.115,4.535,10.124,10.125C25.615,21.09,21.091,25.615,15.5,25.623zM8.625,15.5c-0.001-0.552-0.448-0.999-1.001-1c-0.553,0-1,0.448-1,1c0,0.553,0.449,1,1,1C8.176,16.5,8.624,16.053,8.625,15.5zM8.179,18.572c-0.478,0.277-0.642,0.889-0.365,1.367c0.275,0.479,0.889,0.641,1.365,0.365c0.479-0.275,0.643-0.887,0.367-1.367C9.27,18.461,8.658,18.297,8.179,18.572zM9.18,10.696c-0.479-0.276-1.09-0.112-1.366,0.366s-0.111,1.09,0.365,1.366c0.479,0.276,1.09,0.113,1.367-0.366C9.821,11.584,9.657,10.973,9.18,10.696zM22.822,12.428c0.478-0.275,0.643-0.888,0.366-1.366c-0.275-0.478-0.89-0.642-1.366-0.366c-0.479,0.278-0.642,0.89-0.366,1.367C21.732,12.54,22.344,12.705,22.822,12.428zM12.062,21.455c-0.478-0.275-1.089-0.111-1.366,0.367c-0.275,0.479-0.111,1.09,0.366,1.365c0.478,0.277,1.091,0.111,1.365-0.365C12.704,22.344,12.54,21.732,12.062,21.455zM12.062,9.545c0.479-0.276,0.642-0.888,0.366-1.366c-0.276-0.478-0.888-0.642-1.366-0.366s-0.642,0.888-0.366,1.366C10.973,9.658,11.584,9.822,12.062,9.545zM22.823,18.572c-0.48-0.275-1.092-0.111-1.367,0.365c-0.275,0.479-0.112,1.092,0.367,1.367c0.477,0.275,1.089,0.113,1.365-0.365C23.464,19.461,23.3,18.848,22.823,18.572zM19.938,7.813c-0.477-0.276-1.091-0.111-1.365,0.366c-0.275,0.48-0.111,1.091,0.366,1.367s1.089,0.112,1.366-0.366C20.581,8.702,20.418,8.089,19.938,7.813zM23.378,14.5c-0.554,0.002-1.001,0.45-1.001,1c0.001,0.552,0.448,1,1.001,1c0.551,0,1-0.447,1-1C24.378,14.949,23.929,14.5,23.378,14.5zM15.501,6.624c-0.552,0-1,0.448-1,1l-0.466,7.343l-3.004,1.96c-0.478,0.277-0.642,0.889-0.365,1.365c0.275,0.479,0.889,0.643,1.365,0.367l3.305-1.676C15.39,16.99,15.444,17,15.501,17c0.828,0,1.5-0.671,1.5-1.5l-0.5-7.876C16.501,7.072,16.053,6.624,15.501,6.624zM15.501,22.377c-0.552,0-1,0.447-1,1s0.448,1,1,1s1-0.447,1-1S16.053,22.377,15.501,22.377zM18.939,21.455c-0.479,0.277-0.643,0.889-0.366,1.367c0.275,0.477,0.888,0.643,1.366,0.365c0.478-0.275,0.642-0.889,0.366-1.365C20.028,21.344,19.417,21.18,18.939,21.455z"},animation_pathWingButton:{tagName:"path",d:"m 4.5,0.5 c -2.216,0 -4,1.784 -4,4 l 0,24 c 0,2.216 1.784,4 4,4 l 13.71875,0 C 22.478584,27.272785 27.273681,22.511272 32.5,18.25 l 0,-13.75 c 0,-2.216 -1.784,-4 -4,-4 l -24,0 z"},animation_pathPointer:{tagName:"path",d:"M-15,-65,-15,-55,15,-55,15,-65,0,-95z"},animation_pathSwooshFX:{tagName:"path",d:"m 85,0 c 0,16.617 -4.813944,35.356 -13.131081,48.4508 h 6.099803 c 8.317138,-13.0948 13.13322,-28.5955 13.13322,-45.2124 0,-46.94483 -38.402714,-85.00262 -85.7743869,-85.00262 -1.0218522,0 -2.0373001,0.0241 -3.0506131,0.0589 45.958443,1.59437 82.723058,35.77285 82.723058,81.70532 z"}};function jh(e){let t=document.createElementNS(O0,e.tagName);for(let n in e)if(e.hasOwnProperty(n)&&n!=="tagName")if(n==="children"){let i=e.children.length;for(let o=0;o<i;++o)t.appendChild(jh(e.children[o]))}else n.indexOf("xlink:")===0?t.setAttributeNS(tSe,n.substring(6),e[n]):n==="textContent"?t.textContent=e[n]:t.setAttribute(n,e[n]);return t}function HZ(e,t,n){let i=document.createElementNS(O0,"text");i.setAttribute("x",e),i.setAttribute("y",t),i.setAttribute("class","cesium-animation-svgText");let o=document.createElementNS(O0,"tspan");return o.textContent=n,i.appendChild(o),i}function zBt(e,t,n){e.setAttribute("transform",`translate(100,100) rotate(${n})`),t.setAttribute("transform",`rotate(${n})`)}var CH=new G;function gs(e,t){let n=t.alpha,i=1-n;return CH.red=e.red*i+t.red*n,CH.green=e.green*i+t.green*n,CH.blue=e.blue*i+t.blue*n,CH.toCssColorString()}function WZ(e,t,n){let i=dR[n],o={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${e},${t})`,children:[{tagName:"rect",class:"cesium-animation-buttonGlow",width:32,height:32,rx:2,ry:2},{tagName:"rect",class:"cesium-animation-buttonMain",width:32,height:32,rx:4,ry:4},{class:"cesium-animation-buttonPath",id:n,tagName:i.tagName,transform:i.transform,d:i.d},{tagName:"title",textContent:""}]};return jh(o)}function VBt(e,t,n){let i=dR[n],o=dR.animation_pathWingButton,r={tagName:"g",class:"cesium-animation-rectButton",transform:`translate(${e},${t})`,children:[{class:"cesium-animation-buttonGlow",id:"animation_pathWingButton",tagName:o.tagName,d:o.d},{class:"cesium-animation-buttonMain",id:"animation_pathWingButton",tagName:o.tagName,d:o.d},{class:"cesium-animation-buttonPath",id:n,tagName:i.tagName,transform:i.transform,d:i.d},{tagName:"title",textContent:""}]};return jh(r)}function HBt(e,t){let n=e._viewModel,i=n.shuttleRingDragging;if(!(i&&gH!==e))if(t.type==="mousedown"||i&&t.type==="mousemove"||t.type==="touchstart"&&t.touches.length===1||i&&t.type==="touchmove"&&t.touches.length===1){let o=e._centerX,r=e._centerY,a=e._svgNode.getBoundingClientRect(),c,u;if(t.type==="touchstart"||t.type==="touchmove"?(c=t.touches[0].clientX,u=t.touches[0].clientY):(c=t.clientX,u=t.clientY),!i&&(c>a.right||c<a.left||u<a.top||u>a.bottom))return;let f=e._shuttleRingPointer.getBoundingClientRect(),h=c-o-a.left,A=u-r-a.top,g=Math.atan2(A,h)*180/Math.PI+90;g>180&&(g-=360);let m=n.shuttleRingAngle;i||c<f.right&&c>f.left&&u>f.top&&u<f.bottom?(gH=e,n.shuttleRingDragging=!0,n.shuttleRingAngle=g):g<m?n.slower():g>m&&n.faster(),t.preventDefault()}else e===gH&&(gH=void 0),n.shuttleRingDragging=!1}function cg(e,t){this._viewModel=t,this.svgElement=e,this._enabled=void 0,this._toggled=void 0;let n=this;this._clickFunction=function(){let i=n._viewModel.command;i.canExecute&&i()},e.addEventListener("click",this._clickFunction,!0),this._subscriptions=[fc(t,"toggled",this.setToggled,this),fc(t,"tooltip",this.setTooltip,this),fc(t.command,"canExecute",this.setEnabled,this)]}cg.prototype.destroy=function(){this.svgElement.removeEventListener("click",this._clickFunction,!0);let e=this._subscriptions;for(let t=0,n=e.length;t<n;t++)e[t].dispose();ue(this)};cg.prototype.isDestroyed=function(){return!1};cg.prototype.setEnabled=function(e){if(this._enabled!==e){if(this._enabled=e,!e){this.svgElement.setAttribute("class","cesium-animation-buttonDisabled");return}if(this._toggled){this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled");return}this.svgElement.setAttribute("class","cesium-animation-rectButton")}};cg.prototype.setToggled=function(e){this._toggled!==e&&(this._toggled=e,this._enabled&&(e?this.svgElement.setAttribute("class","cesium-animation-rectButton cesium-animation-buttonToggled"):this.svgElement.setAttribute("class","cesium-animation-rectButton")))};cg.prototype.setTooltip=function(e){this.svgElement.getElementsByTagName("title")[0].textContent=e};function MS(e,t){e=Gn(e),this._viewModel=t,this._container=e,this._centerX=0,this._centerY=0,this._defsElement=void 0,this._svgNode=void 0,this._topG=void 0,this._lastHeight=void 0,this._lastWidth=void 0;let n=e.ownerDocument,i=document.createElement("style");i.textContent=".cesium-animation-rectButton .cesium-animation-buttonGlow { filter: url(#animation_blurred); }.cesium-animation-rectButton .cesium-animation-buttonMain { fill: url(#animation_buttonNormal); }.cesium-animation-buttonToggled .cesium-animation-buttonMain { fill: url(#animation_buttonToggled); }.cesium-animation-rectButton:hover .cesium-animation-buttonMain { fill: url(#animation_buttonHovered); }.cesium-animation-buttonDisabled .cesium-animation-buttonMain { fill: url(#animation_buttonDisabled); }.cesium-animation-shuttleRingG .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshGradient); }.cesium-animation-shuttleRingG:hover .cesium-animation-shuttleRingSwoosh { fill: url(#animation_shuttleRingSwooshHovered); }.cesium-animation-shuttleRingPointer { fill: url(#animation_shuttleRingPointerGradient); }.cesium-animation-shuttleRingPausePointer { fill: url(#animation_shuttleRingPointerPaused); }.cesium-animation-knobOuter { fill: url(#animation_knobOuter); }.cesium-animation-knobInner { fill: url(#animation_knobInner); }",n.head.insertBefore(i,n.head.childNodes[0]);let o=document.createElement("div");o.className="cesium-animation-theme",o.innerHTML='<div class="cesium-animation-themeNormal"></div><div class="cesium-animation-themeHover"></div><div class="cesium-animation-themeSelect"></div><div class="cesium-animation-themeDisabled"></div><div class="cesium-animation-themeKnob"></div><div class="cesium-animation-themePointer"></div><div class="cesium-animation-themeSwoosh"></div><div class="cesium-animation-themeSwooshHover"></div>',this._theme=o,this._themeNormal=o.childNodes[0],this._themeHover=o.childNodes[1],this._themeSelect=o.childNodes[2],this._themeDisabled=o.childNodes[3],this._themeKnob=o.childNodes[4],this._themePointer=o.childNodes[5],this._themeSwoosh=o.childNodes[6],this._themeSwooshHover=o.childNodes[7];let r=document.createElementNS(O0,"svg:svg");this._svgNode=r,r.setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns:xlink",tSe);let s=document.createElementNS(O0,"g");this._topG=s,this._realtimeSVG=new cg(VBt(3,4,"animation_pathClock"),t.playRealtimeViewModel),this._playReverseSVG=new cg(WZ(44,99,"animation_pathPlayReverse"),t.playReverseViewModel),this._playForwardSVG=new cg(WZ(124,99,"animation_pathPlay"),t.playForwardViewModel),this._pauseSVG=new cg(WZ(84,99,"animation_pathPause"),t.pauseViewModel);let a=document.createElementNS(O0,"g");a.appendChild(this._realtimeSVG.svgElement),a.appendChild(this._playReverseSVG.svgElement),a.appendChild(this._playForwardSVG.svgElement),a.appendChild(this._pauseSVG.svgElement);let c=jh({tagName:"circle",class:"cesium-animation-shuttleRingBack",cx:100,cy:100,r:99});this._shuttleRingBackPanel=c;let u=dR.animation_pathSwooshFX,f=dR.animation_pathPointer,h=jh({tagName:"g",class:"cesium-animation-shuttleRingSwoosh",children:[{tagName:u.tagName,transform:"translate(100,97) scale(-1,1)",id:"animation_pathSwooshFX",d:u.d},{tagName:u.tagName,transform:"translate(100,97)",id:"animation_pathSwooshFX",d:u.d},{tagName:"line",x1:100,y1:8,x2:100,y2:22}]});this._shuttleRingSwooshG=h,this._shuttleRingPointer=jh({class:"cesium-animation-shuttleRingPointer",id:"animation_pathPointer",tagName:f.tagName,d:f.d});let A=jh({tagName:"g",transform:"translate(100,100)"});this._knobOuter=jh({tagName:"circle",class:"cesium-animation-knobOuter",cx:0,cy:0,r:71});let g=61,m=jh({tagName:"circle",class:"cesium-animation-knobInner",cx:0,cy:0,r:g});this._knobDate=HZ(0,-24,""),this._knobTime=HZ(0,-7,""),this._knobStatus=HZ(0,-41,"");let _=jh({tagName:"circle",class:"cesium-animation-blank",cx:0,cy:0,r:g}),y=document.createElementNS(O0,"g");y.setAttribute("class","cesium-animation-shuttleRingG"),e.appendChild(o),s.appendChild(y),s.appendChild(A),s.appendChild(a),y.appendChild(c),y.appendChild(h),y.appendChild(this._shuttleRingPointer),A.appendChild(this._knobOuter),A.appendChild(m),A.appendChild(this._knobDate),A.appendChild(this._knobTime),A.appendChild(this._knobStatus),A.appendChild(_),r.appendChild(s),e.appendChild(r);let C=this;function E(v){HBt(C,v)}this._mouseCallback=E,c.addEventListener("mousedown",E,!0),c.addEventListener("touchstart",E,!0),h.addEventListener("mousedown",E,!0),h.addEventListener("touchstart",E,!0),n.addEventListener("mousemove",E,!0),n.addEventListener("touchmove",E,!0),n.addEventListener("mouseup",E,!0),n.addEventListener("touchend",E,!0),n.addEventListener("touchcancel",E,!0),this._shuttleRingPointer.addEventListener("mousedown",E,!0),this._shuttleRingPointer.addEventListener("touchstart",E,!0),this._knobOuter.addEventListener("mousedown",E,!0),this._knobOuter.addEventListener("touchstart",E,!0);let I=this._knobTime.childNodes[0],b=this._knobDate.childNodes[0],S=this._knobStatus.childNodes[0],B;this._subscriptions=[fc(t.pauseViewModel,"toggled",function(v){B!==v&&(B=v,B?C._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPausePointer"):C._shuttleRingPointer.setAttribute("class","cesium-animation-shuttleRingPointer"))}),fc(t,"shuttleRingAngle",function(v){zBt(C._shuttleRingPointer,C._knobOuter,v)}),fc(t,"dateLabel",function(v){b.textContent!==v&&(b.textContent=v)}),fc(t,"timeLabel",function(v){I.textContent!==v&&(I.textContent=v)}),fc(t,"multiplierLabel",function(v){S.textContent!==v&&(S.textContent=v)})],this.applyThemeChanges(),this.resize()}Object.defineProperties(MS.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});MS.prototype.isDestroyed=function(){return!1};MS.prototype.destroy=function(){l(this._observer)&&(this._observer.disconnect(),this._observer=void 0);let e=this._container.ownerDocument,t=this._mouseCallback;this._shuttleRingBackPanel.removeEventListener("mousedown",t,!0),this._shuttleRingBackPanel.removeEventListener("touchstart",t,!0),this._shuttleRingSwooshG.removeEventListener("mousedown",t,!0),this._shuttleRingSwooshG.removeEventListener("touchstart",t,!0),e.removeEventListener("mousemove",t,!0),e.removeEventListener("touchmove",t,!0),e.removeEventListener("mouseup",t,!0),e.removeEventListener("touchend",t,!0),e.removeEventListener("touchcancel",t,!0),this._shuttleRingPointer.removeEventListener("mousedown",t,!0),this._shuttleRingPointer.removeEventListener("touchstart",t,!0),this._knobOuter.removeEventListener("mousedown",t,!0),this._knobOuter.removeEventListener("touchstart",t,!0),this._container.removeChild(this._svgNode),this._container.removeChild(this._theme),this._realtimeSVG.destroy(),this._playReverseSVG.destroy(),this._playForwardSVG.destroy(),this._pauseSVG.destroy();let n=this._subscriptions;for(let i=0,o=n.length;i<o;i++)n[i].dispose();return ue(this)};MS.prototype.resize=function(){let e=this._container.clientWidth,t=this._container.clientHeight;if(e===this._lastWidth&&t===this._lastHeight)return;let n=this._svgNode,i=200,o=132,r=e,s=t;e===0&&t===0?(r=i,s=o):e===0?(s=t,r=i*(t/o)):t===0&&(r=e,s=o*(e/i));let a=r/i,c=s/o;n.style.cssText=`width: ${r}px; height: ${s}px; position: absolute; bottom: 0; left: 0; overflow: hidden;`,n.setAttribute("width",r),n.setAttribute("height",s),n.setAttribute("viewBox",`0 0 ${r} ${s}`),this._topG.setAttribute("transform",`scale(${a},${c})`),this._centerX=Math.max(1,100*a),this._centerY=Math.max(1,100*c),this._lastHeight=e,this._lastWidth=t};MS.prototype.applyThemeChanges=function(){let e=this._container.ownerDocument;if(!e.body.contains(this._container)){if(l(this._observer))return;let f=this;f._observer=new MutationObserver(function(){e.body.contains(f._container)&&(f._observer.disconnect(),f._observer=void 0,f.applyThemeChanges())}),f._observer.observe(e,{childList:!0,subtree:!0});return}let t=tC(this._themeNormal),n=tC(this._themeHover),i=tC(this._themeSelect),o=tC(this._themeDisabled),r=tC(this._themeKnob),s=tC(this._themePointer),a=tC(this._themeSwoosh),c=tC(this._themeSwooshHover),u=jh({tagName:"defs",children:[{id:"animation_buttonNormal",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":gs(t,fR)},{tagName:"stop",offset:"12%","stop-color":gs(t,_H)},{tagName:"stop",offset:"46%","stop-color":gs(t,VZ)},{tagName:"stop",offset:"81%","stop-color":gs(t,yH)}]},{id:"animation_buttonHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":gs(n,fR)},{tagName:"stop",offset:"12%","stop-color":gs(n,_H)},{tagName:"stop",offset:"46%","stop-color":gs(n,VZ)},{tagName:"stop",offset:"81%","stop-color":gs(n,yH)}]},{id:"animation_buttonToggled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":gs(i,fR)},{tagName:"stop",offset:"12%","stop-color":gs(i,_H)},{tagName:"stop",offset:"46%","stop-color":gs(i,VZ)},{tagName:"stop",offset:"81%","stop-color":gs(i,yH)}]},{id:"animation_buttonDisabled",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-color":gs(o,UBt)},{tagName:"stop",offset:"75%","stop-color":gs(o,GBt)}]},{id:"animation_blurred",tagName:"filter",width:"200%",height:"200%",x:"-50%",y:"-50%",children:[{tagName:"feGaussianBlur",stdDeviation:4,in:"SourceGraphic"}]},{id:"animation_shuttleRingSwooshGradient",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":a.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":a.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":a.toCssColorString()}]},{id:"animation_shuttleRingSwooshHovered",tagName:"linearGradient",x1:"50%",y1:"0%",x2:"50%",y2:"100%",children:[{tagName:"stop",offset:"0%","stop-opacity":.2,"stop-color":c.toCssColorString()},{tagName:"stop",offset:"85%","stop-opacity":.85,"stop-color":c.toCssColorString()},{tagName:"stop",offset:"95%","stop-opacity":.05,"stop-color":c.toCssColorString()}]},{id:"animation_shuttleRingPointerGradient",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":s.toCssColorString()},{tagName:"stop",offset:"40%","stop-color":s.toCssColorString()},{tagName:"stop",offset:"60%","stop-color":gs(s,eSe)},{tagName:"stop",offset:"100%","stop-color":gs(s,eSe)}]},{id:"animation_shuttleRingPointerPaused",tagName:"linearGradient",x1:"0%",y1:"50%",x2:"100%",y2:"50%",children:[{tagName:"stop",offset:"0%","stop-color":"#CCC"},{tagName:"stop",offset:"40%","stop-color":"#CCC"},{tagName:"stop",offset:"60%","stop-color":"#555"},{tagName:"stop",offset:"100%","stop-color":"#555"}]},{id:"animation_knobOuter",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":gs(r,fR)},{tagName:"stop",offset:"60%","stop-color":gs(r,$Te)},{tagName:"stop",offset:"85%","stop-color":gs(r,_H)}]},{id:"animation_knobInner",tagName:"linearGradient",x1:"20%",y1:"0%",x2:"90%",y2:"100%",children:[{tagName:"stop",offset:"5%","stop-color":gs(r,$Te)},{tagName:"stop",offset:"60%","stop-color":gs(r,fR)},{tagName:"stop",offset:"85%","stop-color":gs(r,yH)}]}]});l(this._defsElement)?this._svgNode.replaceChild(u,this._defsElement):this._svgNode.appendChild(u),this._defsElement=u};var EH=MS;var WBt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],nC=15,NS=105;function nSe(e,t){return e-t}function jZ(e,t){let n=qo(t,e,nSe);return n<0?~n:n}function jBt(e,t){if(Math.abs(e)<=nC)return e/nC;let n=nC,i=NS,o,r=0,s;return e>0?(o=Math.log(t[t.length-1]),s=(o-r)/(i-n),Math.exp(r+s*(e-n))):(o=Math.log(-t[0]),s=(o-r)/(i-n),-Math.exp(r+s*(Math.abs(e)-n)))}function YBt(e,t,n){if(n.clockStep===vo.SYSTEM_CLOCK)return nC;if(Math.abs(e)<=1)return e*nC;let i=t[t.length-1];e>i?e=i:e<-i&&(e=-i);let o=nC,r=NS,s,a=0,c;return e>0?(s=Math.log(i),c=(s-a)/(r-o),(Math.log(e)-a)/c+o):(s=Math.log(-t[0]),c=(s-a)/(r-o),-((Math.log(Math.abs(e))-a)/c+o))}function Sd(e){let t=this;this._clockViewModel=e,this._allShuttleRingTicks=[],this._dateFormatter=Sd.defaultDateFormatter,this._timeFormatter=Sd.defaultTimeFormatter,this.shuttleRingDragging=!1,this.snapToTicks=!1,xe.track(this,["_allShuttleRingTicks","_dateFormatter","_timeFormatter","shuttleRingDragging","snapToTicks"]),this._sortedFilteredPositiveTicks=[],this.setShuttleRingTicks(Sd.defaultTicks),this.timeLabel=void 0,xe.defineProperty(this,"timeLabel",function(){return t._timeFormatter(t._clockViewModel.currentTime,t)}),this.dateLabel=void 0,xe.defineProperty(this,"dateLabel",function(){return t._dateFormatter(t._clockViewModel.currentTime,t)}),this.multiplierLabel=void 0,xe.defineProperty(this,"multiplierLabel",function(){let s=t._clockViewModel;if(s.clockStep===vo.SYSTEM_CLOCK)return"Today";let a=s.multiplier;return a%1===0?`${a.toFixed(0)}x`:`${a.toFixed(3).replace(/0{0,3}$/,"")}x`}),this.shuttleRingAngle=void 0,xe.defineProperty(this,"shuttleRingAngle",{get:function(){return YBt(e.multiplier,t._allShuttleRingTicks,e)},set:function(s){s=Math.max(Math.min(s,NS),-NS);let a=t._allShuttleRingTicks,c=t._clockViewModel;if(c.clockStep=vo.SYSTEM_CLOCK_MULTIPLIER,Math.abs(s)===NS){c.multiplier=s>0?a[a.length-1]:a[0];return}let u=jBt(s,a);if(t.snapToTicks)u=a[jZ(u,a)];else if(u!==0){let f=Math.abs(u);if(f>100){let h=f.toFixed(0).length-2,A=Math.pow(10,h);u=Math.round(u/A)*A|0}else f>nC?u=Math.round(u):f>1?u=+u.toFixed(1):f>0&&(u=+u.toFixed(2))}c.multiplier=u}}),this._canAnimate=void 0,xe.defineProperty(this,"_canAnimate",function(){let s=t._clockViewModel,a=s.clockRange;if(t.shuttleRingDragging||a===As.UNBOUNDED)return!0;let c=s.multiplier,u=s.currentTime,f=s.startTime,h=!1;if(a===As.LOOP_STOP)h=K.greaterThan(u,f)||u.equals(f)&&c>0;else{let A=s.stopTime;h=K.greaterThan(u,f)&&K.lessThan(u,A)||u.equals(f)&&c>0||u.equals(A)&&c<0}return h||(s.shouldAnimate=!1),h}),this._isSystemTimeAvailable=void 0,xe.defineProperty(this,"_isSystemTimeAvailable",function(){let s=t._clockViewModel;if(s.clockRange===As.UNBOUNDED)return!0;let c=s.systemTime;return K.greaterThanOrEquals(c,s.startTime)&&K.lessThanOrEquals(c,s.stopTime)}),this._isAnimating=void 0,xe.defineProperty(this,"_isAnimating",function(){return t._clockViewModel.shouldAnimate&&(t._canAnimate||t.shuttleRingDragging)});let n=Mn(function(){let s=t._clockViewModel;s.shouldAnimate?s.shouldAnimate=!1:t._canAnimate&&(s.shouldAnimate=!0)});this._pauseViewModel=new L0(n,{toggled:xe.computed(function(){return!t._isAnimating}),tooltip:"Pause"});let i=Mn(function(){let s=t._clockViewModel,a=s.multiplier;a>0&&(s.multiplier=-a),s.shouldAnimate=!0});this._playReverseViewModel=new L0(i,{toggled:xe.computed(function(){return t._isAnimating&&e.multiplier<0}),tooltip:"Play Reverse"});let o=Mn(function(){let s=t._clockViewModel,a=s.multiplier;a<0&&(s.multiplier=-a),s.shouldAnimate=!0});this._playForwardViewModel=new L0(o,{toggled:xe.computed(function(){return t._isAnimating&&e.multiplier>0&&e.clockStep!==vo.SYSTEM_CLOCK}),tooltip:"Play Forward"});let r=Mn(function(){t._clockViewModel.clockStep=vo.SYSTEM_CLOCK},xe.getObservable(this,"_isSystemTimeAvailable"));this._playRealtimeViewModel=new L0(r,{toggled:xe.computed(function(){return e.clockStep===vo.SYSTEM_CLOCK}),tooltip:xe.computed(function(){return t._isSystemTimeAvailable?"Today (real-time)":"Current time not in range"})}),this._slower=Mn(function(){let s=t._clockViewModel,a=t._allShuttleRingTicks,c=s.multiplier,u=jZ(c,a)-1;u>=0&&(s.multiplier=a[u])}),this._faster=Mn(function(){let s=t._clockViewModel,a=t._allShuttleRingTicks,c=s.multiplier,u=jZ(c,a)+1;u<a.length&&(s.multiplier=a[u])})}Sd.defaultDateFormatter=function(e,t){let n=K.toGregorianDate(e);return`${WBt[n.month-1]} ${n.day} ${n.year}`};Sd.defaultTicks=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800];Sd.defaultTimeFormatter=function(e,t){let n=K.toGregorianDate(e),i=Math.round(n.millisecond);return Math.abs(t._clockViewModel.multiplier)<1?`${n.hour.toString().padStart(2,"0")}:${n.minute.toString().padStart(2,"0")}:${n.second.toString().padStart(2,"0")}.${i.toString().padStart(3,"0")}`:`${n.hour.toString().padStart(2,"0")}:${n.minute.toString().padStart(2,"0")}:${n.second.toString().padStart(2,"0")} UTC`};Sd.prototype.getShuttleRingTicks=function(){return this._sortedFilteredPositiveTicks.slice(0)};Sd.prototype.setShuttleRingTicks=function(e){let t,n,i,o={},r=this._sortedFilteredPositiveTicks;for(r.length=0,t=0,n=e.length;t<n;++t)i=e[t],o.hasOwnProperty(i)||(o[i]=!0,r.push(i));r.sort(nSe);let s=[];for(n=r.length,t=n-1;t>=0;--t)i=r[t],i!==0&&s.push(-i);si(s,r),this._allShuttleRingTicks=s};Object.defineProperties(Sd.prototype,{slower:{get:function(){return this._slower}},faster:{get:function(){return this._faster}},clockViewModel:{get:function(){return this._clockViewModel}},pauseViewModel:{get:function(){return this._pauseViewModel}},playReverseViewModel:{get:function(){return this._playReverseViewModel}},playForwardViewModel:{get:function(){return this._playForwardViewModel}},playRealtimeViewModel:{get:function(){return this._playRealtimeViewModel}},dateFormatter:{get:function(){return this._dateFormatter},set:function(e){this._dateFormatter=e}},timeFormatter:{get:function(){return this._timeFormatter},set:function(e){this._timeFormatter=e}}});Sd._maxShuttleRingAngle=NS;Sd._realtimeShuttleRingAngle=nC;var IH=Sd;function iSe(e){e=e??V.EMPTY_OBJECT;let t=e.globe,n=e.imageryProviderViewModels??V.EMPTY_ARRAY,i=e.terrainProviderViewModels??V.EMPTY_ARRAY;this._globe=t,this.imageryProviderViewModels=n.slice(0),this.terrainProviderViewModels=i.slice(0),this.dropDownVisible=!1,xe.track(this,["imageryProviderViewModels","terrainProviderViewModels","dropDownVisible"]);let o=xe.getObservable(this,"imageryProviderViewModels"),r=xe.pureComputed(function(){let h=o(),A={},g;for(g=0;g<h.length;g++){let y=h[g],C=y.category;l(A[C])?A[C].push(y):A[C]=[y]}let m=Object.keys(A),_=[];for(g=0;g<m.length;g++){let y=m[g];_.push({name:y,providers:A[y]})}return _});this._imageryProviders=r;let s=xe.getObservable(this,"terrainProviderViewModels"),a=xe.pureComputed(function(){let h=s(),A={},g;for(g=0;g<h.length;g++){let y=h[g],C=y.category;l(A[C])?A[C].push(y):A[C]=[y]}let m=Object.keys(A),_=[];for(g=0;g<m.length;g++){let y=m[g];_.push({name:y,providers:A[y]})}return _});this._terrainProviders=a,this.buttonTooltip=void 0,xe.defineProperty(this,"buttonTooltip",function(){let h=this.selectedImagery,A=this.selectedTerrain,g=l(h)?h.name:void 0,m=l(A)?A.name:void 0;return l(g)&&l(m)?`${g} +${m}`:l(g)?g:m}),this.buttonImageUrl=void 0,xe.defineProperty(this,"buttonImageUrl",function(){let h=this.selectedImagery;if(l(h))return h.iconUrl}),this.selectedImagery=void 0;let c=xe.observable();this._currentImageryLayers=[],xe.defineProperty(this,"selectedImagery",{get:function(){return c()},set:function(h){if(c()===h){this.dropDownVisible=!1;return}let A,g=this._currentImageryLayers,m=g.length,_=this._globe.imageryLayers,y=!1;for(A=0;A<m;A++){let C=_.length;for(let E=0;E<C;E++){let I=_.get(E);if(I===g[A]){_.remove(I),y=!0;break}}}if(l(h)){let C=h.creationCommand();if(Array.isArray(C)){let E=C.length;for(this._currentImageryLayers=[],A=E-1;A>=0;A--){let I=ds.fromProviderAsync(C[A]);_.add(I,0),this._currentImageryLayers.push(I)}}else{this._currentImageryLayers=[];let E=ds.fromProviderAsync(C);if(E.name=h.name,y)_.add(E,0);else{let I=_.get(0);l(I)&&_.remove(I),_.add(E,0)}this._currentImageryLayers.push(E)}}c(h),this.dropDownVisible=!1}}),this.selectedTerrain=void 0;let u=xe.observable();xe.defineProperty(this,"selectedTerrain",{get:function(){return u()},set:function(h){if(u()===h){this.dropDownVisible=!1;return}let A;if(l(h)&&(A=h.creationCommand()),l(A)&&!l(A.then))this._globe.depthTestAgainstTerrain=!(A instanceof jp),this._globe.terrainProvider=A;else if(l(A)){let g=!1,m=this._globe.terrainProviderChanged.addEventListener(()=>{g=!0,m()}),y=new uH(A).readyEvent.addEventListener(C=>{g||(this._globe.depthTestAgainstTerrain=!(C instanceof jp),this._globe.terrainProvider=C,y())})}u(h),this.dropDownVisible=!1}});let f=this;this._toggleDropDown=Mn(function(){f.dropDownVisible=!f.dropDownVisible}),this.selectedImagery=e.selectedImageryProviderViewModel??n[0],this.selectedTerrain=e.selectedTerrainProviderViewModel}Object.defineProperties(iSe.prototype,{toggleDropDown:{get:function(){return this._toggleDropDown}},globe:{get:function(){return this._globe}}});var xH=iSe;function bH(e,t){e=Gn(e);let n=new xH(t),i=document.createElement("button");i.type="button",i.className="cesium-button cesium-toolbar-button",i.setAttribute("data-bind","attr: { title: buttonTooltip },click: toggleDropDown"),e.appendChild(i);let o=document.createElement("img");o.setAttribute("draggable","false"),o.className="cesium-baseLayerPicker-selected",o.setAttribute("data-bind","attr: { src: buttonImageUrl }, visible: !!buttonImageUrl"),i.appendChild(o);let r=document.createElement("div");r.className="cesium-baseLayerPicker-dropDown",r.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-dropDown-visible" : dropDownVisible }'),e.appendChild(r);let s=document.createElement("div");s.className="cesium-baseLayerPicker-sectionTitle",s.setAttribute("data-bind","visible: imageryProviderViewModels.length > 0"),s.innerHTML="Imagery",r.appendChild(s);let a=document.createElement("div");a.className="cesium-baseLayerPicker-section",a.setAttribute("data-bind","foreach: _imageryProviders"),r.appendChild(a);let c=document.createElement("div");c.className="cesium-baseLayerPicker-category",a.appendChild(c);let u=document.createElement("div");u.className="cesium-baseLayerPicker-categoryTitle",u.setAttribute("data-bind","text: name"),c.appendChild(u);let f=document.createElement("div");f.className="cesium-baseLayerPicker-choices",f.setAttribute("data-bind","foreach: providers"),c.appendChild(f);let h=document.createElement("div");h.className="cesium-baseLayerPicker-item",h.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedImagery },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedImagery = $data; }'),f.appendChild(h);let A=document.createElement("img");A.className="cesium-baseLayerPicker-itemIcon",A.setAttribute("data-bind","attr: { src: iconUrl }"),A.setAttribute("draggable","false"),h.appendChild(A);let g=document.createElement("div");g.className="cesium-baseLayerPicker-itemLabel",g.setAttribute("data-bind","text: name"),h.appendChild(g);let m=document.createElement("div");m.className="cesium-baseLayerPicker-sectionTitle",m.setAttribute("data-bind","visible: terrainProviderViewModels.length > 0"),m.innerHTML="Terrain",r.appendChild(m);let _=document.createElement("div");_.className="cesium-baseLayerPicker-section",_.setAttribute("data-bind","foreach: _terrainProviders"),r.appendChild(_);let y=document.createElement("div");y.className="cesium-baseLayerPicker-category",_.appendChild(y);let C=document.createElement("div");C.className="cesium-baseLayerPicker-categoryTitle",C.setAttribute("data-bind","text: name"),y.appendChild(C);let E=document.createElement("div");E.className="cesium-baseLayerPicker-choices",E.setAttribute("data-bind","foreach: providers"),y.appendChild(E);let I=document.createElement("div");I.className="cesium-baseLayerPicker-item",I.setAttribute("data-bind",'css: { "cesium-baseLayerPicker-selectedItem" : $data === $parents[1].selectedTerrain },attr: { title: tooltip },visible: creationCommand.canExecute,click: function($data) { $parents[1].selectedTerrain = $data; }'),E.appendChild(I);let b=document.createElement("img");b.className="cesium-baseLayerPicker-itemIcon",b.setAttribute("data-bind","attr: { src: iconUrl }"),b.setAttribute("draggable","false"),I.appendChild(b);let S=document.createElement("div");S.className="cesium-baseLayerPicker-itemLabel",S.setAttribute("data-bind","text: name"),I.appendChild(S),xe.applyBindings(n,i),xe.applyBindings(n,r),this._viewModel=n,this._container=e,this._element=i,this._dropPanel=r,this._closeDropDown=function(B){i.contains(B.target)||r.contains(B.target)||(n.dropDownVisible=!1)},jt.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(bH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});bH.prototype.isDestroyed=function(){return!1};bH.prototype.destroy=function(){return jt.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),xe.cleanNode(this._element),xe.cleanNode(this._dropPanel),this._container.removeChild(this._element),this._container.removeChild(this._dropPanel),ue(this)};var TH=bH;function oSe(e){let t=e.creationFunction;l(t.canExecute)||(t=Mn(t)),this._creationCommand=t,this.name=e.name,this.tooltip=e.tooltip,this.iconUrl=e.iconUrl,this._category=e.category??"",xe.track(this,["name","tooltip","iconUrl"])}Object.defineProperties(oSe.prototype,{creationCommand:{get:function(){return this._creationCommand}},category:{get:function(){return this._category}}});var Fs=oSe;function qBt(){let e=[],t=devicePixelRatio>=2;return e.push(new Fs({name:"Bing Maps Aerial",iconUrl:fn("Widgets/Images/ImageryProviders/bingAerial.png"),tooltip:"Bing Maps aerial imagery, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return E_({style:C_.AERIAL})}})),e.push(new Fs({name:"Bing Maps Aerial with Labels",iconUrl:fn("Widgets/Images/ImageryProviders/bingAerialLabels.png"),tooltip:"Bing Maps aerial imagery with labels, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return E_({style:C_.AERIAL_WITH_LABELS})}})),e.push(new Fs({name:"Bing Maps Roads",iconUrl:fn("Widgets/Images/ImageryProviders/bingRoads.png"),tooltip:"Bing Maps standard road maps, provided by Cesium ion",category:"Cesium ion",creationFunction:function(){return E_({style:C_.ROAD})}})),e.push(new Fs({name:"ArcGIS World Imagery",iconUrl:fn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldImagery.png"),tooltip:`ArcGIS World Imagery provides one meter or better satellite and aerial imagery in many parts of the world and lower resolution satellite imagery worldwide. The map includes 15m TerraColor imagery at small and mid-scales (~1:591M down to ~1:288k) for the world. The map features Maxar imagery at 0.3m resolution for select metropolitan areas around the world, 0.5m resolution across the United States and parts of Western Europe, and 1m resolution imagery across the rest of the world. In addition to commercial sources, the World Imagery map features high-resolution aerial photography contributed by the GIS User Community. This imagery ranges from 0.3m to 0.03m resolution (down to ~1:280 nin select communities). For more information on this map, including the terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=10df2279f9684e4a9f6a7f08febac2a9`,category:"Other",creationFunction:function(){return __.fromBasemapType(vm.SATELLITE,{enablePickFeatures:!1})}})),e.push(new Fs({name:"ArcGIS World Hillshade",iconUrl:fn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldHillshade.png"),tooltip:`ArcGIS World Hillshade map portrays elevation as an artistic hillshade. This map is designed to be used as a backdrop for topographical, soil, hydro, landcover or other outdoor recreational maps. The map was compiled from a variety of sources from several data providers. The basemap has global coverage down to a scale of ~1:72k. In select areas of the United States and Europe, coverage is available down to ~1:9k. For more information on this map, including the terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=1b243539f4514b6ba35e7d995890db1d`,category:"Other",creationFunction:function(){return __.fromBasemapType(vm.HILLSHADE,{enablePickFeatures:!1})}})),e.push(new Fs({name:"Esri World Ocean",iconUrl:fn("Widgets/Images/ImageryProviders/ArcGisMapServiceWorldOcean.png"),tooltip:`ArcGIS World Ocean map is designed to be used as a base map by marine GIS professionals and as a reference map by anyone interested in ocean data. The base map features marine bathymetry. Land features include inland waters and roads overlaid on land cover and shaded relief imagery. The map was compiled from a variety of best available sources from several data providers, including General Bathymetric Chart of the Oceans GEBCO_08 Grid, National Oceanic and Atmospheric Administration (NOAA), and National Geographic, Garmin, HERE, Geonames.org, and Esri, and various other contributors. The base map currently provides coverage for the world down to a scale of ~1:577k, and coverage down to 1:72k in US coastal areas, and various other areas. Coverage down to ~ 1:9k is available limited areas based on regional hydrographic survey data. The base map was designed and developed by Esri. For more information on this map, including our terms of use, visit us online at +https://www.arcgis.com/home/item.html?id=1e126e7520f9466c9ca28b8f28b5e500`,category:"Other",creationFunction:function(){return __.fromBasemapType(vm.OCEANS,{enablePickFeatures:!1})}})),e.push(new Fs({name:"Open\xADStreet\xADMap",iconUrl:fn("Widgets/Images/ImageryProviders/openStreetMap.png"),tooltip:`OpenStreetMap (OSM) is a collaborative project to create a free editable map of the world. +http://www.openstreetmap.org`,category:"Other",creationFunction:function(){return new eC({url:"https://tile.openstreetmap.org/"})}})),e.push(new Fs({name:"Stadia x Stamen Watercolor",iconUrl:fn("Widgets/Images/ImageryProviders/stamenWatercolor.png"),tooltip:`Based on the original basemaps created for the Knight Foundation and reminiscent of hand drawn maps, the watercolor maps from Stamen Design apply raster effect area washes and organic edges over a paper texture to add warm pop to any map. +https://docs.stadiamaps.com/map-styles/stamen-watercolor/`,category:"Other",creationFunction:function(){return new eC({url:"https://tiles.stadiamaps.com/tiles/stamen_watercolor/",fileExtension:"jpg",credit:`© <a href="https://stamen.com/" target="_blank">Stamen Design</a> + © <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Fs({name:"Stadia x Stamen Toner",iconUrl:fn("Widgets/Images/ImageryProviders/stamenToner.png"),tooltip:`Based on the original basemaps created for the Knight Foundation and the most popular of the excellent styles from Stamen Design, these high-contrast B+W (black and white) maps are the perfect backdrop for your colorful and eye-catching overlays. +https://docs.stadiamaps.com/map-styles/stamen-toner/`,category:"Other",creationFunction:function(){return new eC({url:"https://tiles.stadiamaps.com/tiles/stamen_toner/",retinaTiles:t,credit:`© <a href="https://stamen.com/" target="_blank">Stamen Design</a> + © <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Fs({name:"Stadia Alidade Smooth",iconUrl:fn("Widgets/Images/ImageryProviders/stadiaAlidadeSmooth.png"),tooltip:`Stadia's custom Alidade Smooth style is designed for maps that use a lot of markers or overlays. It features a muted color scheme and fewer points of interest to allow your added data to shine. +https://docs.stadiamaps.com/map-styles/alidade-smooth/`,category:"Other",creationFunction:function(){return new eC({url:"https://tiles.stadiamaps.com/tiles/alidade_smooth/",retinaTiles:t,credit:`© <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Fs({name:"Stadia Alidade Smooth Dark",iconUrl:fn("Widgets/Images/ImageryProviders/stadiaAlidadeSmoothDark.png"),tooltip:`Stadia Alidade Smooth Dark, like its lighter cousin, is also designed to stay out of the way. It just flips the dark mode switch on the color scheme. With the lights out, your data can now literally shine. +https://docs.stadiamaps.com/map-styles/alidade-smooth-dark/`,category:"Other",creationFunction:function(){return new eC({url:"https://tiles.stadiamaps.com/tiles/alidade_smooth_dark/",retinaTiles:t,credit:`© <a href="https://www.stadiamaps.com/" target="_blank">Stadia Maps</a> + © <a href="https://openmaptiles.org/" target="_blank">OpenMapTiles</a> + © <a href="https://www.openstreetmap.org/about/" target="_blank">OpenStreetMap contributors</a>`})}})),e.push(new Fs({name:"Sentinel-2",iconUrl:fn("Widgets/Images/ImageryProviders/sentinel-2.png"),tooltip:"Sentinel-2 cloudless by EOX IT Services GmbH (Contains modified Copernicus Sentinel data 2016 and 2017).",category:"Cesium ion",creationFunction:function(){return y_.fromAssetId(3954)}})),e.push(new Fs({name:"Blue Marble",iconUrl:fn("Widgets/Images/ImageryProviders/blueMarble.png"),tooltip:"Blue Marble Next Generation July, 2004 imagery from NASA.",category:"Cesium ion",creationFunction:function(){return y_.fromAssetId(3845)}})),e.push(new Fs({name:"Earth at night",iconUrl:fn("Widgets/Images/ImageryProviders/earthAtNight.png"),tooltip:"The Earth at night, also known as The Black Marble, is a 500 meter resolution global composite imagery layer released by NASA.",category:"Cesium ion",creationFunction:function(){return y_.fromAssetId(3812)}})),e.push(new Fs({name:"Natural Earth\xA0II",iconUrl:fn("Widgets/Images/ImageryProviders/naturalEarthII.png"),tooltip:`Natural Earth II, darkened for contrast. +http://www.naturalearthdata.com/`,category:"Cesium ion",creationFunction:function(){return iE.fromUrl(fn("Assets/Textures/NaturalEarthII"))}})),e}var SH=qBt;function KBt(){let e=[];return e.push(new Fs({name:"WGS84 Ellipsoid",iconUrl:fn("Widgets/Images/TerrainProviders/Ellipsoid.png"),tooltip:"WGS84 standard ellipsoid, also known as EPSG:4326",category:"Cesium ion",creationFunction:function(){return new jp({ellipsoid:te.WGS84})}})),e.push(new Fs({name:"Cesium World Terrain",iconUrl:fn("Widgets/Images/TerrainProviders/CesiumWorldTerrain.png"),tooltip:"High-resolution global terrain tileset curated from several datasources and hosted by Cesium ion",category:"Cesium ion",creationFunction:function(){return IS({requestWaterMask:!0,requestVertexNormals:!0})}})),e}var wH=KBt;function XBt(e){return function(t){let n=e._scene.pick(t.position);l(n)&&n.primitive instanceof qs&&(e.tileset=n.primitive),e.pickActive=!1}}function sSe(e,t){t?e._eventHandler.setInputAction(function(n){let i=e._scene.pick(n.endPosition);l(i)&&i.primitive instanceof qs&&(e.tileset=i.primitive)},vn.MOUSE_MOVE):(e._eventHandler.removeInputAction(vn.MOUSE_MOVE),e.picking=e.picking)}var JBt={maximumFractionDigits:3};function hR(e){let t=e/1048576;return t<1?t.toLocaleString(void 0,JBt):Math.round(t).toLocaleString()}function mR(e,t){if(!l(e))return"";let n=t?e._statisticsPerPass[Zo.PICK]:e._statisticsPerPass[Zo.RENDER],i='<ul class="cesium-cesiumInspector-statistics">';return i+=`<li><strong>Visited: </strong>${n.visited.toLocaleString()}</li><li><strong>Selected: </strong>${n.selected.toLocaleString()}</li><li><strong>Commands: </strong>${n.numberOfCommands.toLocaleString()}</li>`,i+="</ul>",t||(i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Requests: </strong>${n.numberOfPendingRequests.toLocaleString()}</li><li><strong>Attempted: </strong>${n.numberOfAttemptedRequests.toLocaleString()}</li><li><strong>Processing: </strong>${n.numberOfTilesProcessing.toLocaleString()}</li><li><strong>Content Ready: </strong>${n.numberOfTilesWithContentReady.toLocaleString()}</li><li><strong>Total: </strong>${n.numberOfTilesTotal.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Features Selected: </strong>${n.numberOfFeaturesSelected.toLocaleString()}</li><li><strong>Features Loaded: </strong>${n.numberOfFeaturesLoaded.toLocaleString()}</li><li><strong>Points Selected: </strong>${n.numberOfPointsSelected.toLocaleString()}</li><li><strong>Points Loaded: </strong>${n.numberOfPointsLoaded.toLocaleString()}</li><li><strong>Triangles Selected: </strong>${n.numberOfTrianglesSelected.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Tiles styled: </strong>${n.numberOfTilesStyled.toLocaleString()}</li><li><strong>Features styled: </strong>${n.numberOfFeaturesStyled.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Children Union Culled: </strong>${n.numberOfTilesCulledWithChildrenUnion.toLocaleString()}</li>`,i+="</ul>",i+='<ul class="cesium-cesiumInspector-statistics">',i+=`<li><strong>Geometry Memory (MB): </strong>${hR(n.geometryByteLength)}</li><li><strong>Texture Memory (MB): </strong>${hR(n.texturesByteLength)}</li><li><strong>Batch Table Memory (MB): </strong>${hR(n.batchTableByteLength)}</li>`,i+="</ul>"),i}function aSe(){let e=Qi.statistics;return` + <ul class="cesium-cesiumInspector-statistics"> + <li><strong>Geometry Memory (MB): </strong>${hR(e.geometryByteLength)}</li> + <li><strong>Texture Memory (MB): </strong>${hR(e.texturesByteLength)}</li> + </ul> + `}var ZBt=[{text:"Highlight",value:Su.HIGHLIGHT},{text:"Replace",value:Su.REPLACE},{text:"Mix",value:Su.MIX}],rSe=new G(1,1,0,.4),$Bt=new G,BH=new G;function Ya(e,t){let n=this,i=e.canvas;this._eventHandler=new Cd(i),this._scene=e,this._performanceContainer=t,this._canvas=i,this._performanceDisplay=new Ny({container:t}),this._statisticsText="",this._pickStatisticsText="",this._resourceCacheStatisticsText="",this._editorError="",this.performance=!1,this.showStatistics=!0,this.showPickStatistics=!0,this.showResourceCacheStatistics=!1,this.inspectorVisible=!0,this.tilesetVisible=!1,this.displayVisible=!1,this.updateVisible=!1,this.loggingVisible=!1,this.styleVisible=!1,this.tileDebugLabelsVisible=!1,this.optimizationVisible=!1,this.styleString="{}",this.hasEnabledWireframe=!1,this._tileset=void 0,this._feature=void 0,this._tile=void 0,xe.track(this,["performance","inspectorVisible","_statisticsText","_pickStatisticsText","_resourceCacheStatisticsText","_editorError","showPickStatistics","showStatistics","showResourceCacheStatistics","tilesetVisible","displayVisible","updateVisible","loggingVisible","styleVisible","optimizationVisible","tileDebugLabelsVisible","styleString","_feature","_tile","_tileset","hasEnabledWireframe"]),this._properties=xe.observable({}),this.properties=[],xe.defineProperty(this,"properties",function(){let F=[],H=n._properties();for(let W in H)H.hasOwnProperty(W)&&F.push(W);return F});let o=xe.observable();xe.defineProperty(this,"dynamicScreenSpaceError",{get:function(){return o()},set:function(F){o(F),l(n._tileset)&&(n._tileset.dynamicScreenSpaceError=F)}}),this.dynamicScreenSpaceError=!1;let r=xe.observable();xe.defineProperty(this,"colorBlendMode",{get:function(){return r()},set:function(F){r(F),l(n._tileset)&&(n._tileset.colorBlendMode=F,n._scene.requestRender())}}),this.colorBlendMode=Su.HIGHLIGHT;let s=xe.observable(),a=xe.observable();xe.defineProperty(this,"picking",{get:function(){return a()},set:function(F){a(F),F?n._eventHandler.setInputAction(function(H){let W=e.pick(H.endPosition);if(W instanceof Sa?(n.feature=W,n.tile=W.content.tile):l(W)&&l(W.content)?(n.feature=void 0,n.tile=W.content.tile):(n.feature=void 0,n.tile=void 0),!!l(n._tileset)){if(s&&l(W)&&l(W.content)){let Z;e.pickPositionSupported&&(Z=e.pickPosition(H.endPosition),l(Z)&&(n._tileset.debugPickPosition=Z)),n._tileset.debugPickedTile=W.content.tile}else n._tileset.debugPickedTile=void 0;n._scene.requestRender()}},vn.MOUSE_MOVE):(n.feature=void 0,n.tile=void 0,n._eventHandler.removeInputAction(vn.MOUSE_MOVE))}}),this.picking=!0;let c=xe.observable();xe.defineProperty(this,"colorize",{get:function(){return c()},set:function(F){c(F),l(n._tileset)&&(n._tileset.debugColorizeTiles=F,n._scene.requestRender())}}),this.colorize=!1;let u=xe.observable();xe.defineProperty(this,"wireframe",{get:function(){return u()},set:function(F){u(F),l(n._tileset)&&(n._tileset.debugWireframe=F,n._scene.requestRender())}}),this.wireframe=!1;let f=xe.observable();xe.defineProperty(this,"showBoundingVolumes",{get:function(){return f()},set:function(F){f(F),l(n._tileset)&&(n._tileset.debugShowBoundingVolume=F,n._scene.requestRender())}}),this.showBoundingVolumes=!1;let h=xe.observable();xe.defineProperty(this,"showContentBoundingVolumes",{get:function(){return h()},set:function(F){h(F),l(n._tileset)&&(n._tileset.debugShowContentBoundingVolume=F,n._scene.requestRender())}}),this.showContentBoundingVolumes=!1;let A=xe.observable();xe.defineProperty(this,"showRequestVolumes",{get:function(){return A()},set:function(F){A(F),l(n._tileset)&&(n._tileset.debugShowViewerRequestVolume=F,n._scene.requestRender())}}),this.showRequestVolumes=!1;let g=xe.observable();xe.defineProperty(this,"freezeFrame",{get:function(){return g()},set:function(F){g(F),l(n._tileset)&&(n._tileset.debugFreezeFrame=F,n._scene.debugShowFrustumPlanes=F,n._scene.requestRender())}}),this.freezeFrame=!1,xe.defineProperty(this,"showOnlyPickedTileDebugLabel",{get:function(){return s()},set:function(F){s(F),l(n._tileset)&&(n._tileset.debugPickedTileLabelOnly=F,n._scene.requestRender())}}),this.showOnlyPickedTileDebugLabel=!1;let m=xe.observable();xe.defineProperty(this,"showGeometricError",{get:function(){return m()},set:function(F){m(F),l(n._tileset)&&(n._tileset.debugShowGeometricError=F,n._scene.requestRender())}}),this.showGeometricError=!1;let _=xe.observable();xe.defineProperty(this,"showRenderingStatistics",{get:function(){return _()},set:function(F){_(F),l(n._tileset)&&(n._tileset.debugShowRenderingStatistics=F,n._scene.requestRender())}}),this.showRenderingStatistics=!1;let y=xe.observable();xe.defineProperty(this,"showMemoryUsage",{get:function(){return y()},set:function(F){y(F),l(n._tileset)&&(n._tileset.debugShowMemoryUsage=F,n._scene.requestRender())}}),this.showMemoryUsage=!1;let C=xe.observable();xe.defineProperty(this,"showUrl",{get:function(){return C()},set:function(F){C(F),l(n._tileset)&&(n._tileset.debugShowUrl=F,n._scene.requestRender())}}),this.showUrl=!1;let E=xe.observable();xe.defineProperty(this,"maximumScreenSpaceError",{get:function(){return E()},set:function(F){F=Number(F),isNaN(F)||(E(F),l(n._tileset)&&(n._tileset.maximumScreenSpaceError=F))}}),this.maximumScreenSpaceError=16;let I=xe.observable();xe.defineProperty(this,"dynamicScreenSpaceErrorDensity",{get:function(){return I()},set:function(F){F=Number(F),isNaN(F)||(I(F),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorDensity=F))}}),this.dynamicScreenSpaceErrorDensity=2e-4,this.dynamicScreenSpaceErrorDensitySliderValue=void 0,xe.defineProperty(this,"dynamicScreenSpaceErrorDensitySliderValue",{get:function(){return Math.pow(I(),1/6)},set:function(F){let H=Math.pow(F,6);I(H),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorDensity=H)}});let b=xe.observable();xe.defineProperty(this,"dynamicScreenSpaceErrorFactor",{get:function(){return b()},set:function(F){F=Number(F),isNaN(F)||(b(F),l(n._tileset)&&(n._tileset.dynamicScreenSpaceErrorFactor=F))}}),this.dynamicScreenSpaceErrorFactor=24;let S=XBt(this),B=xe.observable();xe.defineProperty(this,"pickActive",{get:function(){return B()},set:function(F){B(F),F?n._eventHandler.setInputAction(S,vn.LEFT_CLICK):n._eventHandler.removeInputAction(vn.LEFT_CLICK)}});let v=xe.observable();xe.defineProperty(this,"pointCloudShading",{get:function(){return v()},set:function(F){v(F),l(n._tileset)&&(n._tileset.pointCloudShading.attenuation=F)}}),this.pointCloudShading=!1;let P=xe.observable();xe.defineProperty(this,"geometricErrorScale",{get:function(){return P()},set:function(F){F=Number(F),isNaN(F)||(P(F),l(n._tileset)&&(n._tileset.pointCloudShading.geometricErrorScale=F))}}),this.geometricErrorScale=1;let N=xe.observable();xe.defineProperty(this,"maximumAttenuation",{get:function(){return N()},set:function(F){F=Number(F),isNaN(F)||(N(F),l(n._tileset)&&(n._tileset.pointCloudShading.maximumAttenuation=F===0?void 0:F))}}),this.maximumAttenuation=0;let L=xe.observable();xe.defineProperty(this,"baseResolution",{get:function(){return L()},set:function(F){F=Number(F),isNaN(F)||(L(F),l(n._tileset)&&(n._tileset.pointCloudShading.baseResolution=F===0?void 0:F))}}),this.baseResolution=0;let p=xe.observable();xe.defineProperty(this,"eyeDomeLighting",{get:function(){return p()},set:function(F){p(F),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLighting=F)}}),this.eyeDomeLighting=!1;let x=xe.observable();xe.defineProperty(this,"eyeDomeLightingStrength",{get:function(){return x()},set:function(F){F=Number(F),isNaN(F)||(x(F),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLightingStrength=F))}}),this.eyeDomeLightingStrength=1;let T=xe.observable();xe.defineProperty(this,"eyeDomeLightingRadius",{get:function(){return T()},set:function(F){F=Number(F),isNaN(F)||(T(F),l(n._tileset)&&(n._tileset.pointCloudShading.eyeDomeLightingRadius=F))}}),this.eyeDomeLightingRadius=1,this.pickActive=!1;let w=xe.observable();xe.defineProperty(this,"skipLevelOfDetail",{get:function(){return w()},set:function(F){w(F),l(n._tileset)&&(n._tileset.skipLevelOfDetail=F)}}),this.skipLevelOfDetail=!0;let M=xe.observable();xe.defineProperty(this,"skipScreenSpaceErrorFactor",{get:function(){return M()},set:function(F){F=Number(F),isNaN(F)||(M(F),l(n._tileset)&&(n._tileset.skipScreenSpaceErrorFactor=F))}}),this.skipScreenSpaceErrorFactor=16;let O=xe.observable();xe.defineProperty(this,"baseScreenSpaceError",{get:function(){return O()},set:function(F){F=Number(F),isNaN(F)||(O(F),l(n._tileset)&&(n._tileset.baseScreenSpaceError=F))}}),this.baseScreenSpaceError=1024;let U=xe.observable();xe.defineProperty(this,"skipLevels",{get:function(){return U()},set:function(F){F=Number(F),isNaN(F)||(U(F),l(n._tileset)&&(n._tileset.skipLevels=F))}}),this.skipLevels=1;let Q=xe.observable();xe.defineProperty(this,"immediatelyLoadDesiredLevelOfDetail",{get:function(){return Q()},set:function(F){Q(F),l(n._tileset)&&(n._tileset.immediatelyLoadDesiredLevelOfDetail=F)}}),this.immediatelyLoadDesiredLevelOfDetail=!1;let z=xe.observable();xe.defineProperty(this,"loadSiblings",{get:function(){return z()},set:function(F){z(F),l(n._tileset)&&(n._tileset.loadSiblings=F)}}),this.loadSiblings=!1,this._style=void 0,this._shouldStyle=!1,this._definedProperties=["properties","dynamicScreenSpaceError","colorBlendMode","picking","colorize","wireframe","showBoundingVolumes","showContentBoundingVolumes","showRequestVolumes","freezeFrame","maximumScreenSpaceError","dynamicScreenSpaceErrorDensity","baseScreenSpaceError","skipScreenSpaceErrorFactor","skipLevelOfDetail","skipLevels","immediatelyLoadDesiredLevelOfDetail","loadSiblings","dynamicScreenSpaceErrorDensitySliderValue","dynamicScreenSpaceErrorFactor","pickActive","showOnlyPickedTileDebugLabel","showGeometricError","showRenderingStatistics","showMemoryUsage","showUrl","pointCloudShading","geometricErrorScale","maximumAttenuation","baseResolution","eyeDomeLighting","eyeDomeLightingStrength","eyeDomeLightingRadius"],this._removePostRenderEvent=e.postRender.addEventListener(function(){n._update()}),l(this._tileset)||sSe(this,!0)}Object.defineProperties(Ya.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},statisticsText:{get:function(){return this._statisticsText}},pickStatisticsText:{get:function(){return this._pickStatisticsText}},resourceCacheStatisticsText:{get:function(){return this._resourceCacheStatisticsText}},colorBlendModes:{get:function(){return ZBt}},editorError:{get:function(){return this._editorError}},tileset:{get:function(){return this._tileset},set:function(e){if(this._tileset=e,this._style=void 0,this.styleString="{}",this.feature=void 0,this.tile=void 0,l(e)){this._properties(e.properties);let t=["colorize","wireframe","showBoundingVolumes","showContentBoundingVolumes","showRequestVolumes","freezeFrame","showOnlyPickedTileDebugLabel","showGeometricError","showRenderingStatistics","showMemoryUsage","showUrl"],n=t.length;for(let o=0;o<n;++o){let r=t[o];this[r]=this[r]}this.maximumScreenSpaceError=e.maximumScreenSpaceError,this.dynamicScreenSpaceError=e.dynamicScreenSpaceError,this.dynamicScreenSpaceErrorDensity=e.dynamicScreenSpaceErrorDensity,this.dynamicScreenSpaceErrorFactor=e.dynamicScreenSpaceErrorFactor,this.colorBlendMode=e.colorBlendMode,this.skipLevelOfDetail=e.skipLevelOfDetail,this.skipScreenSpaceErrorFactor=e.skipScreenSpaceErrorFactor,this.baseScreenSpaceError=e.baseScreenSpaceError,this.skipLevels=e.skipLevels,this.immediatelyLoadDesiredLevelOfDetail=e.immediatelyLoadDesiredLevelOfDetail,this.loadSiblings=e.loadSiblings,this.hasEnabledWireframe=e._enableDebugWireframe;let i=e.pointCloudShading;this.pointCloudShading=i.attenuation,this.geometricErrorScale=i.geometricErrorScale,this.maximumAttenuation=i.maximumAttenuation?i.maximumAttenuation:0,this.baseResolution=i.baseResolution?i.baseResolution:0,this.eyeDomeLighting=i.eyeDomeLighting,this.eyeDomeLightingStrength=i.eyeDomeLightingStrength,this.eyeDomeLightingRadius=i.eyeDomeLightingRadius,this._scene.requestRender()}else this._properties({});this._statisticsText=mR(e,!1),this._pickStatisticsText=mR(e,!0),this._resourceCacheStatisticsText=aSe(),sSe(this,!1)}},feature:{get:function(){return this._feature},set:function(e){if(this._feature===e)return;let t=this._feature;l(t)&&!t.content.isDestroyed()&&(!this.colorize&&l(this._style)?t.color=l(this._style.color)?this._style.color.evaluateColor(t,$Bt):G.WHITE:t.color=BH,this._scene.requestRender()),l(e)&&(G.clone(e.color,BH),e.color=rSe,this._scene.requestRender()),this._feature=e}},tile:{get:function(){return this._tile},set:function(e){if(this._tile===e)return;let t=this._tile;l(t)&&!t.isDestroyed()&&!YZ(t.content)&&(t.color=BH,this._scene.requestRender()),l(e)&&!YZ(e.content)&&(G.clone(e.color,BH),e.color=rSe,this._scene.requestRender()),this._tile=e}}});function YZ(e){if(!l(e))return!1;if(e.featuresLength>0)return!0;let t=e.innerContents;if(l(t)){let n=t.length;for(let i=0;i<n;++i)if(!YZ(t[i]))return!1;return!0}return!1}Ya.prototype.togglePickTileset=function(){this.pickActive=!this.pickActive};Ya.prototype.toggleInspector=function(){this.inspectorVisible=!this.inspectorVisible};Ya.prototype.toggleTileset=function(){this.tilesetVisible=!this.tilesetVisible};Ya.prototype.toggleDisplay=function(){this.displayVisible=!this.displayVisible};Ya.prototype.toggleUpdate=function(){this.updateVisible=!this.updateVisible};Ya.prototype.toggleLogging=function(){this.loggingVisible=!this.loggingVisible};Ya.prototype.toggleStyle=function(){this.styleVisible=!this.styleVisible};Ya.prototype.toggleTileDebugLabels=function(){this.tileDebugLabelsVisible=!this.tileDebugLabelsVisible};Ya.prototype.toggleOptimization=function(){this.optimizationVisible=!this.optimizationVisible};Ya.prototype.trimTilesCache=function(){l(this._tileset)&&this._tileset.trimLoadedTiles()};Ya.prototype.compileStyle=function(){let e=this._tileset;if(!(!l(e)||this.styleString===JSON.stringify(e.style))){this._editorError="";try{this.styleString.length===0&&(this.styleString="{}"),this._style=new TS(JSON.parse(this.styleString)),this._shouldStyle=!0,this._scene.requestRender()}catch(t){this._editorError=t.toString()}this.feature=this._feature,this.tile=this._tile}};Ya.prototype.styleEditorKeyPress=function(e,t){if(t.keyCode===9){t.preventDefault();let n=t.target,i=n.selectionStart,o=n.selectionEnd,r=o,a=n.value.slice(i,o).split(` +`),c=a.length,u;if(t.shiftKey)for(u=0;u<c;++u)a[u][0]===" "&&(a[u][1]===" "?(a[u]=a[u].substr(2),r-=2):(a[u]=a[u].substr(1),r-=1));else for(u=0;u<c;++u)a[u]=` ${a[u]}`,r+=2;let f=a.join(` +`);n.value=n.value.slice(0,i)+f+n.value.slice(o),n.selectionStart=i!==o?i:r,n.selectionEnd=r}else t.ctrlKey&&(t.keyCode===10||t.keyCode===13)&&this.compileStyle();return!0};Ya.prototype._update=function(){let e=this._tileset;if(this.performance&&this._performanceDisplay.update(),l(e)){if(e.isDestroyed()){this.tile=void 0,this.feature=void 0,this.tileset=void 0;return}let t=e.style;this._style!==e.style&&(this._shouldStyle?(e.style=this._style,this._shouldStyle=!1):(this._style=t,this.styleString=JSON.stringify(t.style,null," ")))}this.showStatistics&&(this._statisticsText=mR(e,!1),this._pickStatisticsText=mR(e,!0),this._resourceCacheStatisticsText=aSe())};Ya.prototype.isDestroyed=function(){return!1};Ya.prototype.destroy=function(){this._eventHandler.destroy(),this._removePostRenderEvent();let e=this;return this._definedProperties.forEach(function(t){xe.getObservable(e,t).dispose()}),ue(this)};Ya.getStatistics=mR;var DH=Ya;function vH(e,t){e=Gn(e);let n=document.createElement("div"),i=document.createElement("div");i.setAttribute("data-bind","visible: performance");let o=new DH(t,i);this._viewModel=o,this._container=e,this._element=n;let r=document.createElement("div");r.textContent="3D Tiles Inspector",r.className="cesium-cesiumInspector-button",r.setAttribute("data-bind","click: toggleInspector"),n.appendChild(r),n.className="cesium-cesiumInspector cesium-3DTilesInspector",n.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : inspectorVisible, "cesium-cesiumInspector-hidden" : !inspectorVisible}'),e.appendChild(n);let s=document.createElement("div");s.className="cesium-cesiumInspector-dropDown",n.appendChild(s);let a=ff.createSection,c=ff.createCheckbox,u=ff.createRangeInput,f=ff.createButton,h=a(s,"Tileset","tilesetVisible","toggleTileset"),A=a(s,"Display","displayVisible","toggleDisplay"),g=a(s,"Update","updateVisible","toggleUpdate"),m=a(s,"Logging","loggingVisible","toggleLogging"),_=a(s,"Tile Debug Labels","tileDebugLabelsVisible","toggleTileDebugLabels"),y=a(s,"Style","styleVisible","toggleStyle"),C=a(s,"Optimization","optimizationVisible","toggleOptimization"),E=document.createElement("div");E.className="field-group";let I=document.createElement("label");I.className="field-label",I.appendChild(document.createTextNode("Properties: "));let b=document.createElement("div");b.setAttribute("data-bind","text: properties"),E.appendChild(I),E.appendChild(b),h.appendChild(E),h.appendChild(f("Pick Tileset","togglePickTileset","pickActive")),h.appendChild(f("Trim Tiles Cache","trimTilesCache")),h.appendChild(c("Enable Picking","picking")),A.appendChild(c("Colorize","colorize"));let S=A.appendChild(c("Wireframe","wireframe","_tileset === undefined || hasEnabledWireframe")),B=document.createElement("p");B.setAttribute("data-bind","visible: _tileset !== undefined && !hasEnabledWireframe"),B.setAttribute("class","cesium-3DTilesInspector-disabledElementsInfo"),B.innerText="Set enableDebugWireframe to true in the tileset constructor to enable this option.",S.appendChild(B),A.appendChild(c("Bounding Volumes","showBoundingVolumes")),A.appendChild(c("Content Volumes","showContentBoundingVolumes")),A.appendChild(c("Request Volumes","showRequestVolumes")),A.appendChild(c("Point Cloud Shading","pointCloudShading"));let v=document.createElement("div");v.setAttribute("data-bind","visible: pointCloudShading"),v.appendChild(u("Geometric Error Scale","geometricErrorScale",0,2,.01)),v.appendChild(u("Maximum Attenuation","maximumAttenuation",0,32,1)),v.appendChild(u("Base Resolution","baseResolution",0,1,.01)),v.appendChild(c("Eye Dome Lighting (EDL)","eyeDomeLighting")),A.appendChild(v);let P=document.createElement("div");P.setAttribute("data-bind","visible: eyeDomeLighting"),P.appendChild(u("EDL Strength","eyeDomeLightingStrength",0,2,.1)),P.appendChild(u("EDL Radius","eyeDomeLightingRadius",0,4,.1)),v.appendChild(P),g.appendChild(c("Freeze Frame","freezeFrame")),g.appendChild(c("Dynamic Screen Space Error","dynamicScreenSpaceError"));let N=document.createElement("div");N.appendChild(u("Maximum Screen Space Error","maximumScreenSpaceError",0,128,1)),g.appendChild(N);let L=document.createElement("div");L.setAttribute("data-bind","visible: dynamicScreenSpaceError"),L.appendChild(u("Screen Space Error Density","dynamicScreenSpaceErrorDensitySliderValue",0,1,.005,"dynamicScreenSpaceErrorDensity")),L.appendChild(u("Screen Space Error Factor","dynamicScreenSpaceErrorFactor",1,32,.1)),g.appendChild(L),m.appendChild(c("Performance","performance")),m.appendChild(i),m.appendChild(c("Statistics","showStatistics"));let p=document.createElement("div");p.className="cesium-3dTilesInspector-statistics",p.setAttribute("data-bind","html: statisticsText, visible: showStatistics"),m.appendChild(p),m.appendChild(c("Pick Statistics","showPickStatistics"));let x=document.createElement("div");x.className="cesium-3dTilesInspector-statistics",x.setAttribute("data-bind","html: pickStatisticsText, visible: showPickStatistics"),m.appendChild(x),m.appendChild(c("Resource Cache Statistics","showResourceCacheStatistics"));let T=document.createElement("div");T.className="cesium-3dTilesInspector-statistics",T.setAttribute("data-bind","html: resourceCacheStatisticsText, visible: showResourceCacheStatistics"),m.appendChild(T);let w=document.createElement("div");y.appendChild(w),w.appendChild(document.createTextNode("Color Blend Mode: "));let M=document.createElement("select");M.setAttribute("data-bind",'options: colorBlendModes, optionsText: "text", optionsValue: "value", value: colorBlendMode'),w.appendChild(M);let O=document.createElement("textarea");O.setAttribute("data-bind","textInput: styleString, event: { keydown: styleEditorKeyPress }"),w.className="cesium-cesiumInspector-styleEditor",w.appendChild(O);let U=f("Compile (Ctrl+Enter)","compileStyle");w.appendChild(U);let Q=document.createElement("div");Q.className="cesium-cesiumInspector-error",Q.setAttribute("data-bind","text: editorError"),w.appendChild(Q),_.appendChild(c("Show Picked Only","showOnlyPickedTileDebugLabel")),_.appendChild(c("Geometric Error","showGeometricError")),_.appendChild(c("Rendering Statistics","showRenderingStatistics")),_.appendChild(c("Memory Usage (MB)","showMemoryUsage")),_.appendChild(c("Url","showUrl")),C.appendChild(c("Skip Tile LODs","skipLevelOfDetail"));let z=document.createElement("div");z.appendChild(u("Skip SSE Factor","skipScreenSpaceErrorFactor",1,50,1)),C.appendChild(z);let F=document.createElement("div");F.appendChild(u("SSE before skipping LOD","baseScreenSpaceError",0,4096,1)),C.appendChild(F);let H=document.createElement("div");H.appendChild(u("Min. levels to skip","skipLevels",0,10,1)),C.appendChild(H),C.appendChild(c("Load only tiles that meet the max SSE.","immediatelyLoadDesiredLevelOfDetail")),C.appendChild(c("Load siblings of visible tiles","loadSiblings")),xe.applyBindings(o,n)}Object.defineProperties(vH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});vH.prototype.isDestroyed=function(){return!1};vH.prototype.destroy=function(){return xe.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),ue(this)};var PH=vH;function eDt(e){let t;if(l(e)){t="Command Statistics";let n=e.commandsInFrustums;for(let i in n)if(n.hasOwnProperty(i)){let o=parseInt(i,10),r;if(o===7)r="1, 2 and 3";else{let s=[];for(let a=2;a>=0;a--){let c=Math.pow(2,a);o>=c&&(s.push(a+1),o-=c)}r=s.reverse().join(" and ")}t+=`<br>    ${n[i]} in frustum ${r}`}t+=`<br>Total: ${e.totalCommands}`}return t}function qZ(e,t,n){let i=Math.min(n,t);return i=Math.max(i,e),i}var tDt=new In,nDt=new d;function AR(e,t){let n=this,i=e.canvas,o=new Cd(i);this._eventHandler=o,this._scene=e,this._canvas=i,this._primitive=void 0,this._tile=void 0,this._modelMatrixPrimitive=void 0,this._performanceDisplay=void 0,this._performanceContainer=t;let r=this._scene.globe;r.depthTestAgainstTerrain=!0,this.frustums=!1,this.frustumPlanes=!1,this.performance=!1,this.shaderCacheText="",this.primitiveBoundingSphere=!1,this.primitiveReferenceFrame=!1,this.filterPrimitive=!1,this.tileBoundingSphere=!1,this.filterTile=!1,this.wireframe=!1,this.depthFrustum=1,this._numberOfFrustums=1,this.suspendUpdates=!1,this.tileCoordinates=!1,this.frustumStatisticText=!1,this.tileText="",this.hasPickedPrimitive=!1,this.hasPickedTile=!1,this.pickPrimitiveActive=!1,this.pickTileActive=!1,this.dropDownVisible=!0,this.generalVisible=!0,this.primitivesVisible=!1,this.terrainVisible=!1,this.depthFrustumText="",xe.track(this,["frustums","frustumPlanes","performance","shaderCacheText","primitiveBoundingSphere","primitiveReferenceFrame","filterPrimitive","tileBoundingSphere","filterTile","wireframe","depthFrustum","suspendUpdates","tileCoordinates","frustumStatisticText","tileText","hasPickedPrimitive","hasPickedTile","pickPrimitiveActive","pickTileActive","dropDownVisible","generalVisible","primitivesVisible","terrainVisible","depthFrustumText"]),this._toggleDropDown=Mn(function(){n.dropDownVisible=!n.dropDownVisible}),this._toggleGeneral=Mn(function(){n.generalVisible=!n.generalVisible}),this._togglePrimitives=Mn(function(){n.primitivesVisible=!n.primitivesVisible}),this._toggleTerrain=Mn(function(){n.terrainVisible=!n.terrainVisible}),this._frustumsSubscription=xe.getObservable(this,"frustums").subscribe(function(u){n._scene.debugShowFrustums=u,n._scene.requestRender()}),this._frustumPlanesSubscription=xe.getObservable(this,"frustumPlanes").subscribe(function(u){n._scene.debugShowFrustumPlanes=u,n._scene.requestRender()}),this._performanceSubscription=xe.getObservable(this,"performance").subscribe(function(u){u?n._performanceDisplay=new Ny({container:n._performanceContainer}):n._performanceContainer.innerHTML=""}),this._showPrimitiveBoundingSphere=Mn(function(){return n._primitive.debugShowBoundingVolume=n.primitiveBoundingSphere,n._scene.requestRender(),!0}),this._primitiveBoundingSphereSubscription=xe.getObservable(this,"primitiveBoundingSphere").subscribe(function(){n._showPrimitiveBoundingSphere()}),this._showPrimitiveReferenceFrame=Mn(function(){if(n.primitiveReferenceFrame){let u=n._primitive.modelMatrix;n._modelMatrixPrimitive=new Y4({modelMatrix:u}),n._scene.primitives.add(n._modelMatrixPrimitive)}else l(n._modelMatrixPrimitive)&&(n._scene.primitives.remove(n._modelMatrixPrimitive),n._modelMatrixPrimitive=void 0);return n._scene.requestRender(),!0}),this._primitiveReferenceFrameSubscription=xe.getObservable(this,"primitiveReferenceFrame").subscribe(function(){n._showPrimitiveReferenceFrame()}),this._doFilterPrimitive=Mn(function(){return n.filterPrimitive?n._scene.debugCommandFilter=function(u){return l(n._modelMatrixPrimitive)&&u.owner===n._modelMatrixPrimitive._primitive?!0:l(n._primitive)?u.owner===n._primitive||u.owner===n._primitive._billboardCollection||u.owner.primitive===n._primitive:!1}:n._scene.debugCommandFilter=void 0,!0}),this._filterPrimitiveSubscription=xe.getObservable(this,"filterPrimitive").subscribe(function(){n._doFilterPrimitive(),n._scene.requestRender()}),this._wireframeSubscription=xe.getObservable(this,"wireframe").subscribe(function(u){r._surface.tileProvider._debug.wireframe=u,n._scene.requestRender()}),this._depthFrustumSubscription=xe.getObservable(this,"depthFrustum").subscribe(function(u){n._scene.debugShowDepthFrustum=u,n._scene.requestRender()}),this._incrementDepthFrustum=Mn(function(){let u=n.depthFrustum+1;return n.depthFrustum=qZ(1,n._numberOfFrustums,u),n._scene.requestRender(),!0}),this._decrementDepthFrustum=Mn(function(){let u=n.depthFrustum-1;return n.depthFrustum=qZ(1,n._numberOfFrustums,u),n._scene.requestRender(),!0}),this._suspendUpdatesSubscription=xe.getObservable(this,"suspendUpdates").subscribe(function(u){r._surface._debug.suspendLodUpdate=u,u||(n.filterTile=!1)});let s;this._showTileCoordinates=Mn(function(){return n.tileCoordinates&&!l(s)?s=e.imageryLayers.addImageryProvider(new fH({tilingScheme:e.terrainProvider.tilingScheme})):!n.tileCoordinates&&l(s)&&(e.imageryLayers.remove(s),s=void 0),!0}),this._tileCoordinatesSubscription=xe.getObservable(this,"tileCoordinates").subscribe(function(){n._showTileCoordinates(),n._scene.requestRender()}),this._tileBoundingSphereSubscription=xe.getObservable(this,"tileBoundingSphere").subscribe(function(){n._showTileBoundingSphere(),n._scene.requestRender()}),this._showTileBoundingSphere=Mn(function(){return n.tileBoundingSphere?r._surface.tileProvider._debug.boundingSphereTile=n._tile:r._surface.tileProvider._debug.boundingSphereTile=void 0,n._scene.requestRender(),!0}),this._doFilterTile=Mn(function(){return n.filterTile?(n.suspendUpdates=!0,r._surface._tilesToRender=[],l(n._tile)&&n._tile.renderable&&r._surface._tilesToRender.push(n._tile)):n.suspendUpdates=!1,!0}),this._filterTileSubscription=xe.getObservable(this,"filterTile").subscribe(function(){n.doFilterTile(),n._scene.requestRender()});function a(u){let f=n._scene.pick({x:u.position.x,y:u.position.y});l(f)&&(n.primitive=l(f.collection)?f.collection:f.primitive),n._scene.requestRender(),n.pickPrimitiveActive=!1}this._pickPrimitive=Mn(function(){n.pickPrimitiveActive=!n.pickPrimitiveActive}),this._pickPrimitiveActiveSubscription=xe.getObservable(this,"pickPrimitiveActive").subscribe(function(u){u?o.setInputAction(a,vn.LEFT_CLICK):o.removeInputAction(vn.LEFT_CLICK)});function c(u){let f,h=r.ellipsoid,A=n._scene.camera.getPickRay(u.position,tDt),g=r.pick(A,n._scene,nDt);if(l(g)){let m=h.cartesianToCartographic(g),_=r._surface.tileProvider._tilesToRenderByTextureCount;for(let y=0;!f&&y<_.length;++y){let C=_[y];if(l(C))for(let E=0;!f&&E<C.length;++E){let I=C[E];ae.contains(I.rectangle,m)&&(f=I)}}}n.tile=f,n.pickTileActive=!1}this._pickTile=Mn(function(){n.pickTileActive=!n.pickTileActive}),this._pickTileActiveSubscription=xe.getObservable(this,"pickTileActive").subscribe(function(u){u?o.setInputAction(c,vn.LEFT_CLICK):o.removeInputAction(vn.LEFT_CLICK)}),this._removePostRenderEvent=e.postRender.addEventListener(function(){n._update()})}Object.defineProperties(AR.prototype,{scene:{get:function(){return this._scene}},performanceContainer:{get:function(){return this._performanceContainer}},toggleDropDown:{get:function(){return this._toggleDropDown}},showPrimitiveBoundingSphere:{get:function(){return this._showPrimitiveBoundingSphere}},showPrimitiveReferenceFrame:{get:function(){return this._showPrimitiveReferenceFrame}},doFilterPrimitive:{get:function(){return this._doFilterPrimitive}},incrementDepthFrustum:{get:function(){return this._incrementDepthFrustum}},decrementDepthFrustum:{get:function(){return this._decrementDepthFrustum}},showTileCoordinates:{get:function(){return this._showTileCoordinates}},showTileBoundingSphere:{get:function(){return this._showTileBoundingSphere}},doFilterTile:{get:function(){return this._doFilterTile}},toggleGeneral:{get:function(){return this._toggleGeneral}},togglePrimitives:{get:function(){return this._togglePrimitives}},toggleTerrain:{get:function(){return this._toggleTerrain}},pickPrimitive:{get:function(){return this._pickPrimitive}},pickTile:{get:function(){return this._pickTile}},selectParent:{get:function(){let e=this;return Mn(function(){e.tile=e.tile.parent})}},selectNW:{get:function(){let e=this;return Mn(function(){e.tile=e.tile.northwestChild})}},selectNE:{get:function(){let e=this;return Mn(function(){e.tile=e.tile.northeastChild})}},selectSW:{get:function(){let e=this;return Mn(function(){e.tile=e.tile.southwestChild})}},selectSE:{get:function(){let e=this;return Mn(function(){e.tile=e.tile.southeastChild})}},primitive:{get:function(){return this._primitive},set:function(e){let t=this._primitive;e!==t&&(this.hasPickedPrimitive=!0,l(t)&&(t.debugShowBoundingVolume=!1),this._scene.debugCommandFilter=void 0,l(this._modelMatrixPrimitive)&&(this._scene.primitives.remove(this._modelMatrixPrimitive),this._modelMatrixPrimitive=void 0),this._primitive=e,e.show=!1,setTimeout(function(){e.show=!0},50),this.showPrimitiveBoundingSphere(),this.showPrimitiveReferenceFrame(),this.doFilterPrimitive())}},tile:{get:function(){return this._tile},set:function(e){if(l(e)){this.hasPickedTile=!0;let t=this._tile;if(e!==t){this.tileText=`L: ${e.level} X: ${e.x} Y: ${e.y}`,this.tileText+=`<br>SW corner: ${e.rectangle.west}, ${e.rectangle.south}`,this.tileText+=`<br>NE corner: ${e.rectangle.east}, ${e.rectangle.north}`;let n=e.data;l(n)&&l(n.tileBoundingRegion)?this.tileText+=`<br>Min: ${n.tileBoundingRegion.minimumHeight} Max: ${n.tileBoundingRegion.maximumHeight}`:this.tileText+="<br>(Tile is not loaded)"}this._tile=e,this.showTileBoundingSphere(),this.doFilterTile()}else this.hasPickedTile=!1,this._tile=void 0}}});AR.prototype._update=function(){this.frustums&&(this.frustumStatisticText=eDt(this._scene.debugFrustumStatistics));let e=this._scene.numberOfFrustums;this._numberOfFrustums=e,this.depthFrustum=qZ(1,e,this.depthFrustum),this.depthFrustumText=`${this.depthFrustum} of ${e}`,this.performance&&this._performanceDisplay.update(),this.primitiveReferenceFrame&&(this._modelMatrixPrimitive.modelMatrix=this._primitive.modelMatrix),this.shaderCacheText=`Cached shaders: ${this._scene.context.shaderCache.numberOfShaders}`};AR.prototype.isDestroyed=function(){return!1};AR.prototype.destroy=function(){return this._eventHandler.destroy(),this._removePostRenderEvent(),this._frustumsSubscription.dispose(),this._frustumPlanesSubscription.dispose(),this._performanceSubscription.dispose(),this._primitiveBoundingSphereSubscription.dispose(),this._primitiveReferenceFrameSubscription.dispose(),this._filterPrimitiveSubscription.dispose(),this._wireframeSubscription.dispose(),this._depthFrustumSubscription.dispose(),this._suspendUpdatesSubscription.dispose(),this._tileCoordinatesSubscription.dispose(),this._tileBoundingSphereSubscription.dispose(),this._filterTileSubscription.dispose(),this._pickPrimitiveActiveSubscription.dispose(),this._pickTileActiveSubscription.dispose(),ue(this)};var RH=AR;function MH(e,t){e=Gn(e);let n=document.createElement("div"),i=new RH(t,n);this._viewModel=i,this._container=e;let o=document.createElement("div");this._element=o;let r=document.createElement("div");r.textContent="Cesium Inspector",r.className="cesium-cesiumInspector-button",r.setAttribute("data-bind","click: toggleDropDown"),o.appendChild(r),o.className="cesium-cesiumInspector",o.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : dropDownVisible, "cesium-cesiumInspector-hidden" : !dropDownVisible }'),e.appendChild(this._element);let s=document.createElement("div");s.className="cesium-cesiumInspector-dropDown",o.appendChild(s);let a=ff.createSection,c=ff.createCheckbox,u=a(s,"General","generalVisible","toggleGeneral"),f=c("Show Frustums","frustums"),h=document.createElement("div");h.className="cesium-cesiumInspector-frustumStatistics",h.setAttribute("data-bind","visible: frustums, html: frustumStatisticText"),f.appendChild(h),u.appendChild(f),u.appendChild(c("Show Frustum Planes","frustumPlanes")),u.appendChild(c("Performance Display","performance")),n.className="cesium-cesiumInspector-performanceDisplay",u.appendChild(n);let A=document.createElement("div");A.className="cesium-cesiumInspector-shaderCache",A.setAttribute("data-bind","html: shaderCacheText"),u.appendChild(A);let g=document.createElement("div");u.appendChild(g);let m=document.createElement("span");m.setAttribute("data-bind",'html: "     Frustum:"'),g.appendChild(m);let _=document.createElement("span");_.setAttribute("data-bind","text: depthFrustumText"),g.appendChild(_);let y=document.createElement("input");y.type="button",y.value="-",y.className="cesium-cesiumInspector-pickButton",y.setAttribute("data-bind","click: decrementDepthFrustum"),g.appendChild(y);let C=document.createElement("input");C.type="button",C.value="+",C.className="cesium-cesiumInspector-pickButton",C.setAttribute("data-bind","click: incrementDepthFrustum"),g.appendChild(C);let E=a(s,"Primitives","primitivesVisible","togglePrimitives"),I=document.createElement("div");I.className="cesium-cesiumInspector-pickSection",E.appendChild(I);let b=document.createElement("input");b.type="button",b.value="Pick a primitive",b.className="cesium-cesiumInspector-pickButton",b.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickPrimitiveActive}, click: pickPrimitive');let S=document.createElement("div");S.className="cesium-cesiumInspector-center",S.appendChild(b),I.appendChild(S),I.appendChild(c("Show bounding sphere","primitiveBoundingSphere","hasPickedPrimitive")),I.appendChild(c("Show reference frame","primitiveReferenceFrame","hasPickedPrimitive")),this._primitiveOnly=c("Show only selected","filterPrimitive","hasPickedPrimitive"),I.appendChild(this._primitiveOnly);let B=a(s,"Terrain","terrainVisible","toggleTerrain"),v=document.createElement("div");v.className="cesium-cesiumInspector-pickSection",B.appendChild(v);let P=document.createElement("input");P.type="button",P.value="Pick a tile",P.className="cesium-cesiumInspector-pickButton",P.setAttribute("data-bind",'css: {"cesium-cesiumInspector-pickButtonHighlight" : pickTileActive}, click: pickTile'),S=document.createElement("div"),S.appendChild(P),S.className="cesium-cesiumInspector-center",v.appendChild(S);let N=document.createElement("div");v.appendChild(N);let L=document.createElement("input");L.type="button",L.value="Parent",L.className="cesium-cesiumInspector-pickButton",L.setAttribute("data-bind","click: selectParent");let p=document.createElement("input");p.type="button",p.value="NW",p.className="cesium-cesiumInspector-pickButton",p.setAttribute("data-bind","click: selectNW");let x=document.createElement("input");x.type="button",x.value="NE",x.className="cesium-cesiumInspector-pickButton",x.setAttribute("data-bind","click: selectNE");let T=document.createElement("input");T.type="button",T.value="SW",T.className="cesium-cesiumInspector-pickButton",T.setAttribute("data-bind","click: selectSW");let w=document.createElement("input");w.type="button",w.value="SE",w.className="cesium-cesiumInspector-pickButton",w.setAttribute("data-bind","click: selectSE");let M=document.createElement("div");M.className="cesium-cesiumInspector-tileText",N.className="cesium-cesiumInspector-frustumStatistics",N.appendChild(M),N.setAttribute("data-bind","visible: hasPickedTile"),M.setAttribute("data-bind","html: tileText");let O=document.createElement("div");O.className="cesium-cesiumInspector-relativeText",O.textContent="Select relative:",N.appendChild(O);let U=document.createElement("table"),Q=document.createElement("tr"),z=document.createElement("tr"),F=document.createElement("td");F.appendChild(L);let H=document.createElement("td");H.appendChild(p);let W=document.createElement("td");W.appendChild(x),Q.appendChild(F),Q.appendChild(H),Q.appendChild(W);let Z=document.createElement("td"),Y=document.createElement("td");Y.appendChild(T);let $=document.createElement("td");$.appendChild(w),z.appendChild(Z),z.appendChild(Y),z.appendChild($),U.appendChild(Q),U.appendChild(z),N.appendChild(U),v.appendChild(c("Show bounding volume","tileBoundingSphere","hasPickedTile")),v.appendChild(c("Show only selected","filterTile","hasPickedTile")),B.appendChild(c("Wireframe","wireframe")),B.appendChild(c("Suspend LOD update","suspendUpdates")),B.appendChild(c("Show tile coordinates","tileCoordinates")),xe.applyBindings(i,this._element)}Object.defineProperties(MH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});MH.prototype.isDestroyed=function(){return!1};MH.prototype.destroy=function(){return xe.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),ue(this)};var NH=MH;function LH(e,t){l(t)||(t=document.body),t=Gn(t);let n=this,i=xe.observable(Hr.fullscreen),o=xe.observable(Hr.enabled),r=t.ownerDocument;this.isFullscreen=void 0,xe.defineProperty(this,"isFullscreen",{get:function(){return i()}}),this.isFullscreenEnabled=void 0,xe.defineProperty(this,"isFullscreenEnabled",{get:function(){return o()},set:function(s){o(s&&Hr.enabled)}}),this.tooltip=void 0,xe.defineProperty(this,"tooltip",function(){return this.isFullscreenEnabled?i()?"Exit full screen":"Full screen":"Full screen unavailable"}),this._command=Mn(function(){Hr.fullscreen?Hr.exitFullscreen():Hr.requestFullscreen(n._fullscreenElement)},xe.getObservable(this,"isFullscreenEnabled")),this._fullscreenElement=Gn(e)??r.body,this._callback=function(){i(Hr.fullscreen)},r.addEventListener(Hr.changeEventName,this._callback)}Object.defineProperties(LH.prototype,{fullscreenElement:{get:function(){return this._fullscreenElement},set:function(e){this._fullscreenElement=e}},command:{get:function(){return this._command}}});LH.prototype.isDestroyed=function(){return!1};LH.prototype.destroy=function(){document.removeEventListener(Hr.changeEventName,this._callback),ue(this)};var OH=LH;var iDt="M 83.96875 17.5625 L 83.96875 17.59375 L 76.65625 24.875 L 97.09375 24.96875 L 76.09375 45.96875 L 81.9375 51.8125 L 102.78125 30.9375 L 102.875 51.15625 L 110.15625 43.875 L 110.1875 17.59375 L 83.96875 17.5625 z M 44.125 17.59375 L 17.90625 17.625 L 17.9375 43.90625 L 25.21875 51.1875 L 25.3125 30.96875 L 46.15625 51.8125 L 52 45.96875 L 31 25 L 51.4375 24.90625 L 44.125 17.59375 z M 46.0625 76.03125 L 25.1875 96.875 L 25.09375 76.65625 L 17.8125 83.9375 L 17.8125 110.21875 L 44 110.25 L 51.3125 102.9375 L 30.90625 102.84375 L 51.875 81.875 L 46.0625 76.03125 z M 82 76.15625 L 76.15625 82 L 97.15625 103 L 76.71875 103.0625 L 84.03125 110.375 L 110.25 110.34375 L 110.21875 84.0625 L 102.9375 76.8125 L 102.84375 97 L 82 76.15625 z",oDt="M 104.34375 17.5625 L 83.5 38.4375 L 83.40625 18.21875 L 76.125 25.5 L 76.09375 51.78125 L 102.3125 51.8125 L 102.3125 51.78125 L 109.625 44.5 L 89.1875 44.40625 L 110.1875 23.40625 L 104.34375 17.5625 z M 23.75 17.59375 L 17.90625 23.4375 L 38.90625 44.4375 L 18.5 44.53125 L 25.78125 51.8125 L 52 51.78125 L 51.96875 25.53125 L 44.6875 18.25 L 44.625 38.46875 L 23.75 17.59375 z M 25.6875 76.03125 L 18.375 83.3125 L 38.78125 83.40625 L 17.8125 104.40625 L 23.625 110.25 L 44.5 89.375 L 44.59375 109.59375 L 51.875 102.3125 L 51.875 76.0625 L 25.6875 76.03125 z M 102.375 76.15625 L 76.15625 76.1875 L 76.1875 102.4375 L 83.46875 109.71875 L 83.5625 89.53125 L 104.40625 110.375 L 110.25 104.53125 L 89.25 83.53125 L 109.6875 83.46875 L 102.375 76.15625 z";function FH(e,t){e=Gn(e);let n=new OH(t,e);n._exitFullScreenPath=oDt,n._enterFullScreenPath=iDt;let i=document.createElement("button");i.type="button",i.className="cesium-button cesium-fullscreenButton",i.setAttribute("data-bind","attr: { title: tooltip },click: command,enable: isFullscreenEnabled,cesiumSvgPath: { path: isFullscreen ? _exitFullScreenPath : _enterFullScreenPath, width: 128, height: 128 }"),e.appendChild(i),xe.applyBindings(n,i),this._container=e,this._viewModel=n,this._element=i}Object.defineProperties(FH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});FH.prototype.isDestroyed=function(){return!1};FH.prototype.destroy=function(){return this._viewModel.destroy(),xe.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var QH=FH;var cSe=1e3;function wd(e){l(e.geocoderServices)?this._geocoderServices=e.geocoderServices:this._geocoderServices=[new yS({scene:e.scene})],this._viewContainer=e.container,this._scene=e.scene,this._flightDuration=e.flightDuration,this._searchText="",this._isSearchInProgress=!1,this._wasGeocodeCancelled=!1,this._previousCredits=[],this._complete=new _e,this._suggestions=[],this._selectedSuggestion=void 0,this._showSuggestions=!0,this._handleArrowDown=uSe,this._handleArrowUp=lSe;let t=this;this._suggestionsVisible=xe.pureComputed(function(){let o=xe.getObservable(t,"_suggestions")().length>0,r=xe.getObservable(t,"_showSuggestions")();return o&&r}),this._searchCommand=Mn(function(i){if(i=i??w0.SEARCH,t._focusTextbox=!1,l(t._selectedSuggestion))return t.activateSuggestion(t._selectedSuggestion),!1;if(t.hideSuggestions(),t.isSearchInProgress)uDt(t);else return cDt(t,t._geocoderServices,i)}),this.deselectSuggestion=function(){t._selectedSuggestion=void 0},this.handleKeyDown=function(i,o){let r=o.key==="ArrowDown"||o.key==="Down"||o.keyCode===40,s=o.key==="ArrowUp"||o.key==="Up"||o.keyCode===38;return(r||s)&&o.preventDefault(),!0},this.handleKeyUp=function(i,o){let r=o.key==="ArrowDown"||o.key==="Down"||o.keyCode===40,s=o.key==="ArrowUp"||o.key==="Up"||o.keyCode===38,a=o.key==="Enter"||o.keyCode===13;return s?lSe(t):r?uSe(t):a&&t._searchCommand(),!0},this.activateSuggestion=function(i){t.hideSuggestions(),t._searchText=i.displayName;let o=i.destination;hSe(t),t.destinationFound(t,o)},this.hideSuggestions=function(){t._showSuggestions=!1,t._selectedSuggestion=void 0},this.showSuggestions=function(){t._showSuggestions=!0},this.handleMouseover=function(i,o){i!==t._selectedSuggestion&&(t._selectedSuggestion=i)},this.keepExpanded=!1,this.autoComplete=e.autocomplete??!0,this.destinationFound=e.destinationFound??wd.flyToDestination,this._focusTextbox=!1,xe.track(this,["_searchText","_isSearchInProgress","keepExpanded","_suggestions","_selectedSuggestion","_showSuggestions","_focusTextbox"]);let n=xe.getObservable(this,"_searchText");n.extend({rateLimit:{timeout:500}}),this._suggestionSubscription=n.subscribe(function(){wd._updateSearchSuggestions(t)}),this.isSearchInProgress=void 0,xe.defineProperty(this,"isSearchInProgress",{get:function(){return this._isSearchInProgress}}),this.searchText=void 0,xe.defineProperty(this,"searchText",{get:function(){return this.isSearchInProgress?"Searching...":this._searchText},set:function(i){this._searchText=i}}),this.flightDuration=void 0,xe.defineProperty(this,"flightDuration",{get:function(){return this._flightDuration},set:function(i){this._flightDuration=i}})}Object.defineProperties(wd.prototype,{complete:{get:function(){return this._complete}},scene:{get:function(){return this._scene}},search:{get:function(){return this._searchCommand}},selectedSuggestion:{get:function(){return this._selectedSuggestion}},suggestions:{get:function(){return this._suggestions}}});wd.prototype.destroy=function(){this._suggestionSubscription.dispose()};function lSe(e){if(e._suggestions.length===0)return;let t=e._suggestions.indexOf(e._selectedSuggestion);if(t===-1||t===0){e._selectedSuggestion=void 0;return}let n=t-1;e._selectedSuggestion=e._suggestions[n],wd._adjustSuggestionsScroll(e,n)}function uSe(e){if(e._suggestions.length===0)return;let t=e._suggestions.length,i=(e._suggestions.indexOf(e._selectedSuggestion)+1)%t;e._selectedSuggestion=e._suggestions[i],wd._adjustSuggestionsScroll(e,i)}function rDt(e,t){let n=l(t)?t.availability:void 0;return l(n)?PT(t,[e]).then(function(i){return e=i[0],e.height+=cSe,e}):(e.height+=cSe,Promise.resolve(e))}function sDt(e,t){let n=e._scene,i=n.ellipsoid,o=n.camera,r=n.terrainProvider,s=t,a;return t instanceof ae?D.equalsEpsilon(t.south,t.north,D.EPSILON7)&&D.equalsEpsilon(t.east,t.west,D.EPSILON7)?t=ae.center(t):a=RT(t,n):t=i.cartesianToCartographic(t),l(a)||(a=rDt(t,r)),a.then(function(c){s=i.cartographicToCartesian(c)}).finally(function(){o.flyTo({destination:s,complete:function(){e._complete.raiseEvent()},duration:e._flightDuration,endTransform:R.IDENTITY})})}async function aDt(e,t,n){try{return{state:"fulfilled",value:await e.geocode(t,n),credits:e.credit}}catch(i){return{state:"rejected",reason:i}}}async function cDt(e,t,n){let i=e._searchText;if(dSe(i)){e.showSuggestions();return}e._isSearchInProgress=!0,e._wasGeocodeCancelled=!1;let o,r;for(o=0;o<t.length;o++){if(e._wasGeocodeCancelled)return;if(r=await aDt(t[o],i,n),l(r)&&r.state==="fulfilled"&&r.value.length>0)break}if(e._wasGeocodeCancelled)return;e._isSearchInProgress=!1,XZ(e);let s=r.value;if(r.state==="fulfilled"&&l(s)&&s.length>0){e._searchText=s[0].displayName,e.destinationFound(e,s[0].destination);let a=fSe(e,WP.getCreditsFromResult(s[0]));l(a)||KZ(e,t[o].credit);return}e._searchText=`${i} (not found)`}function KZ(e,t){l(t)&&!e._scene.isDestroyed()&&!e._scene.frameState.creditDisplay.isDestroyed()&&(e._scene.frameState.creditDisplay.addStaticCredit(t),e._previousCredits.push(t))}function fSe(e,t){return l(t)&&t.forEach(n=>KZ(e,n)),t}function XZ(e){!e._scene.isDestroyed()&&!e._scene.frameState.creditDisplay.isDestroyed()&&e._previousCredits.forEach(t=>{e._scene.frameState.creditDisplay.removeStaticCredit(t)}),e._previousCredits.length=0}function lDt(e,t){let n=Gn(e._viewContainer),i=n.getElementsByClassName("search-results")[0],r=n.getElementsByTagName("li")[t];if(t===0){i.scrollTop=0;return}let s=r.offsetTop;s+r.clientHeight>i.clientHeight?i.scrollTop=s+r.clientHeight:s<i.scrollTop&&(i.scrollTop=s)}function uDt(e){e._isSearchInProgress&&(e._isSearchInProgress=!1,e._wasGeocodeCancelled=!0)}function dSe(e){return/^\s*$/.test(e)}function hSe(e){xe.getObservable(e,"_suggestions").removeAll()}async function fDt(e){if(!e.autoComplete)return;let t=e._searchText;if(hSe(e),XZ(e),!dSe(t))for(let n of e._geocoderServices){let i=await n.geocode(t,w0.AUTOCOMPLETE);if(e._suggestions=e._suggestions.concat(i),i.length>0){let o=!0;i.forEach(r=>{let s=WP.getCreditsFromResult(r);o=o&&!l(s),fSe(e,s)}),o&&KZ(e,n.credit)}if(e._suggestions.length>=5)return}}wd.flyToDestination=sDt;wd._updateSearchSuggestions=fDt;wd._adjustSuggestionsScroll=lDt;wd.prototype.isDestroyed=function(){return!1};wd.prototype.destroy=function(){return XZ(this),ue(this)};var kH=wd;var dDt="M29.772,26.433l-7.126-7.126c0.96-1.583,1.523-3.435,1.524-5.421C24.169,8.093,19.478,3.401,13.688,3.399C7.897,3.401,3.204,8.093,3.204,13.885c0,5.789,4.693,10.481,10.484,10.481c1.987,0,3.839-0.563,5.422-1.523l7.128,7.127L29.772,26.433zM7.203,13.885c0.006-3.582,2.903-6.478,6.484-6.486c3.579,0.008,6.478,2.904,6.484,6.486c-0.007,3.58-2.905,6.476-6.484,6.484C10.106,20.361,7.209,17.465,7.203,13.885z",hDt="M24.778,21.419 19.276,15.917 24.777,10.415 21.949,7.585 16.447,13.087 10.945,7.585 8.117,10.415 13.618,15.917 8.116,21.419 10.946,24.248 16.447,18.746 21.948,24.248z";function UH(e){let t=Gn(e.container),n=new kH(e);n._startSearchPath=dDt,n._stopSearchPath=hDt;let i=document.createElement("form");i.setAttribute("data-bind","submit: search");let o=document.createElement("input");o.type="search",o.className="cesium-geocoder-input",o.setAttribute("placeholder","Enter an address or landmark..."),o.setAttribute("data-bind",'textInput: searchText,disable: isSearchInProgress,event: { keyup: handleKeyUp, keydown: handleKeyDown, mouseover: deselectSuggestion },css: { "cesium-geocoder-input-wide" : keepExpanded || searchText.length > 0 },hasFocus: _focusTextbox'),this._onTextBoxFocus=function(){setTimeout(function(){o.select()},0)},o.addEventListener("focus",this._onTextBoxFocus,!1),i.appendChild(o),this._textBox=o;let r=document.createElement("span");r.className="cesium-geocoder-searchButton",r.setAttribute("data-bind","click: search,cesiumSvgPath: { path: isSearchInProgress ? _stopSearchPath : _startSearchPath, width: 32, height: 32 }"),i.appendChild(r),t.appendChild(i);let s=document.createElement("div");s.className="search-results",s.setAttribute("data-bind","visible: _suggestionsVisible");let a=document.createElement("ul");a.setAttribute("data-bind","foreach: _suggestions");let c=document.createElement("li");a.appendChild(c),c.setAttribute("data-bind","text: $data.displayName, click: $parent.activateSuggestion, event: { mouseover: $parent.handleMouseover}, css: { active: $data === $parent._selectedSuggestion }"),s.appendChild(a),t.appendChild(s),xe.applyBindings(n,i),xe.applyBindings(n,s),this._container=t,this._searchSuggestionsContainer=s,this._viewModel=n,this._form=i,this._onInputBegin=function(u){let f=u.target;typeof u.composedPath=="function"&&(f=u.composedPath()[0]),t.contains(f)||(n._focusTextbox=!1,n.hideSuggestions())},this._onInputEnd=function(u){n._focusTextbox=!0,n.showSuggestions()},jt.supportsPointerEvents()?(document.addEventListener("pointerdown",this._onInputBegin,!0),t.addEventListener("pointerup",this._onInputEnd,!0),t.addEventListener("pointercancel",this._onInputEnd,!0)):(document.addEventListener("mousedown",this._onInputBegin,!0),t.addEventListener("mouseup",this._onInputEnd,!0),document.addEventListener("touchstart",this._onInputBegin,!0),t.addEventListener("touchend",this._onInputEnd,!0),t.addEventListener("touchcancel",this._onInputEnd,!0))}Object.defineProperties(UH.prototype,{container:{get:function(){return this._container}},searchSuggestionsContainer:{get:function(){return this._searchSuggestionsContainer}},viewModel:{get:function(){return this._viewModel}}});UH.prototype.isDestroyed=function(){return!1};UH.prototype.destroy=function(){let e=this._container;return jt.supportsPointerEvents()?(document.removeEventListener("pointerdown",this._onInputBegin,!0),e.removeEventListener("pointerup",this._onInputEnd,!0)):(document.removeEventListener("mousedown",this._onInputBegin,!0),e.removeEventListener("mouseup",this._onInputEnd,!0),document.removeEventListener("touchstart",this._onInputBegin,!0),e.removeEventListener("touchend",this._onInputEnd,!0)),this._viewModel.destroy(),xe.cleanNode(this._form),xe.cleanNode(this._searchSuggestionsContainer),e.removeChild(this._form),e.removeChild(this._searchSuggestionsContainer),this._textBox.removeEventListener("focus",this._onTextBoxFocus,!1),ue(this)};var GH=UH;function mSe(e,t){this._scene=e,this._duration=t;let n=this;this._command=Mn(function(){n._scene.camera.flyHome(n._duration)}),this.tooltip="View Home",xe.track(this,["tooltip"])}Object.defineProperties(mSe.prototype,{scene:{get:function(){return this._scene}},command:{get:function(){return this._command}},duration:{get:function(){return this._duration},set:function(e){this._duration=e}}});var zH=mSe;function VH(e,t,n){e=Gn(e);let i=new zH(t,n);i._svgPath="M14,4l-10,8.75h20l-4.25-3.7188v-4.6562h-2.812v2.1875l-2.938-2.5625zm-7.0938,9.906v10.094h14.094v-10.094h-14.094zm2.1876,2.313h3.3122v4.25h-3.3122v-4.25zm5.8442,1.281h3.406v6.438h-3.406v-6.438z";let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-toolbar-button cesium-home-button",o.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 28, height: 28 }"),e.appendChild(o),xe.applyBindings(i,o),this._container=e,this._viewModel=i,this._element=o}Object.defineProperties(VH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});VH.prototype.isDestroyed=function(){return!1};VH.prototype.destroy=function(){return xe.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var HH=VH;function mDt(e,t){t.currentTarget.parentElement.parentElement.querySelector(`#${e.name}-expander`).classList.toggle("active"),t.currentTarget.textContent=t.currentTarget.textContent==="+"?"-":"+"}function pSe(e,t){xe.track(e);for(let n=0;n<e.sublayers.length;n++)pSe(e.sublayers[n],t)}function WH(e){return e.modelName==="FullModel"}function gSe(e){return e.modelName==="Overview"}function _Se(e){return gSe(e)||WH(e)}function ASe(e,t){if(_Se(e)){e.visibility=!1;for(let i=0;i<e.sublayers.length;i++)e.sublayers[i].visibility=!0;let n={name:e.name,modelName:e.modelName,disable:xe.observable(!1),index:t.sublayers.length};return t.topLayers.push(n),t.sublayers.push(e),n}}function ADt(e,t){if(_Se(e)){t.sublayers.forEach(i=>i.visibility=!1),t.sublayers[e.index].visibility=!0;let n=document.getElementById("bsl-wrapper");WH(e)?(t.currentLevel=t.selectedLevel,n.style.display="block"):(t.selectedLevel=t.currentLevel,t.currentLevel="All",n.style.display="none")}}async function pDt(e,t){try{let n=e.getAttributeNames();for(let i=0;i<n.length;i++)if(n[i]==="BldgLevel"){let o=e.getAttributeValues(n[i]);for(let r=0;r<o.length;r++)t.push(o[r])}t.sort((i,o)=>i-o),t.unshift("All")}catch(n){console.log(`There was an error getting attributes: ${n}`)}}function gDt(e){let t=this;this.levels=[],this.viewModel={sublayers:[],levels:this.levels,currentLevel:xe.observable(),selectedLevel:"All",topLayers:[{name:"Select a layer to explore...",disable:xe.observable(!0),index:-1}],currentLayer:xe.observable(),expandClickHandler:mDt,setOptionDisable:function(i,o){xe.applyBindingsToNode(i,{disable:o.disable},o)},defaultLayer:void 0},this.viewModel.currentLayer.subscribe(function(i){ADt(i,t.viewModel)});let n=e.sublayers;for(let i=0;i<n.length;i++){pSe(n[i],this.viewModel);let o=ASe(n[i],this.viewModel);l(o)&&(gSe(o)||!l(this.viewModel.defaultLayer)&&WH(o))&&(this.viewModel.defaultLayer=o)}if(this.viewModel.topLayers.length===1&&n.length>0){e.show=!1;let i={name:"Full Model",modelName:"FullModel",visibility:e.show,sublayers:e.sublayers};this.viewModel.defaultLayer=ASe(i,this.viewModel),this.viewModel.currentLayer.subscribe(function(o){e.show=WH(o)})}else this.viewModel.topLayers.length===1&&(this.viewModel.topLayers[0].name="Building layers not found");return pDt(e,this.levels),this.viewModel.currentLevel.subscribe(function(i){i!=="All"?e.filterByAttributes([{name:"BldgLevel",values:[i]}]):e.filterByAttributes()}),this.viewModel}var jH=gDt;function _Dt(e,t){let n=document.getElementById(e),i=document.createElement("div");i.classList.add("cesium-viewer-i3s-explorer"),i.innerHTML=` + <h3>Building explorer</h3> + <select + data-bind="options: topLayers, optionsText: 'name', optionsAfterRender: setOptionDisable, value: currentLayer" + ></select> + <div id="bsl-wrapper"> + <h3>Select Level</h3> + <select data-bind="options: levels, value: currentLevel"></select> + <h3>Disciplines & Categories</h3> + <ul class="layersList" data-bind="foreach: sublayers"> + <ul class="layersList" data-bind="foreach: sublayers.sort(function (l, r) { return l.name.localeCompare(r.name) })"> + <li> + <div class="li-wrapper"> + <span + class="expandItem" + data-bind="click: $root.expandClickHandler" + >+</span + > + <input + type="checkbox" + data-bind="checked: visibility, valueUpdate: 'input', attr: { id: name}" + /> + <label data-bind="attr: { for: name}"> + <span data-bind="text: name"></span> + </label> + </div> + <ul class="nested" data-bind="attr: { id: name + '-expander'}"> + <li data-bind="foreach: sublayers.sort(function (l, r) { return l.name.localeCompare(r.name) })"> + <div class="li-wrapper"> + <input + type="checkbox" + data-bind="checked: visibility, valueUpdate: 'input', attr: { id: name}" + /> + <label data-bind="attr: { for: name}"> + <span data-bind="text: name"></span> + </label> + </div> + </li> + </ul> + </li> + </ul> + </ul> + </div>`,n.appendChild(i);let o=new jH(t);xe.track(o),xe.applyBindings(o,n),l(o.defaultLayer)&&(o.currentLayer=o.defaultLayer)}var ySe=_Dt;var yDt="M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4853444 22.104033 11.423165 24.0625 13.84375 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 8.975298 28.305952 7.03125 25.875 7.03125 L 13.84375 7.03125 z",CDt="M 27.34375 1.65625 L 5.28125 27.9375 L 8.09375 30.3125 L 30.15625 4.03125 L 27.34375 1.65625 z M 13.84375 7.03125 C 11.412798 7.03125 9.46875 8.975298 9.46875 11.40625 L 9.46875 11.59375 L 2.53125 7.21875 L 2.53125 24.0625 L 9.46875 19.6875 C 9.4724893 20.232036 9.5676108 20.7379 9.75 21.21875 L 21.65625 7.03125 L 13.84375 7.03125 z M 28.21875 7.71875 L 14.53125 24.0625 L 25.875 24.0625 C 28.305952 24.0625 30.28125 22.087202 30.28125 19.65625 L 30.28125 11.40625 C 30.28125 9.8371439 29.456025 8.4902779 28.21875 7.71875 z";function JZ(){this._cameraClicked=new _e,this._closeClicked=new _e,this.maxHeight=500,this.enableCamera=!1,this.isCameraTracking=!1,this.showInfo=!1,this.titleText="",this.description="",xe.track(this,["showInfo","titleText","description","maxHeight","enableCamera","isCameraTracking"]),this._loadingIndicatorHtml='<div class="cesium-infoBox-loadingContainer"><span class="cesium-infoBox-loading"></span></div>',this.cameraIconPath=void 0,xe.defineProperty(this,"cameraIconPath",{get:function(){return!this.enableCamera||this.isCameraTracking?CDt:yDt}}),xe.defineProperty(this,"_bodyless",{get:function(){return!l(this.description)||this.description.length===0}})}JZ.prototype.maxHeightOffset=function(e){return`${this.maxHeight-e}px`};Object.defineProperties(JZ.prototype,{cameraClicked:{get:function(){return this._cameraClicked}},closeClicked:{get:function(){return this._closeClicked}}});var YH=JZ;function qH(e){e=Gn(e);let t=document.createElement("div");t.className="cesium-infoBox",t.setAttribute("data-bind",'css: { "cesium-infoBox-visible" : showInfo, "cesium-infoBox-bodyless" : _bodyless }'),e.appendChild(t);let n=document.createElement("div");n.className="cesium-infoBox-title",n.setAttribute("data-bind","text: titleText"),t.appendChild(n);let i=document.createElement("button");i.type="button",i.className="cesium-button cesium-infoBox-camera",i.setAttribute("data-bind",'attr: { title: "Focus camera on object" },click: function () { cameraClicked.raiseEvent(this); },enable: enableCamera,cesiumSvgPath: { path: cameraIconPath, width: 32, height: 32 }'),t.appendChild(i);let o=document.createElement("button");o.type="button",o.className="cesium-infoBox-close",o.setAttribute("data-bind","click: function () { closeClicked.raiseEvent(this); }"),o.innerHTML="×",t.appendChild(o);let r=document.createElement("iframe");r.className="cesium-infoBox-iframe",r.setAttribute("sandbox","allow-same-origin allow-popups allow-forms"),r.setAttribute("data-bind","style : { maxHeight : maxHeightOffset(40) }"),r.setAttribute("allowfullscreen",!0),t.appendChild(r);let s=new YH;xe.applyBindings(s,t),this._container=e,this._element=t,this._frame=r,this._viewModel=s,this._descriptionSubscription=void 0;let a=this;r.addEventListener("load",function(){let c=r.contentDocument,u=c.createElement("link");u.href=fn("Widgets/InfoBox/InfoBoxDescription.css"),u.rel="stylesheet",u.type="text/css";let f=c.createElement("div");f.className="cesium-infoBox-description",c.head.appendChild(u),c.body.appendChild(f),a._descriptionSubscription=fc(s,"description",function(h){r.style.height="5px",f.innerHTML=h;let A=null,g=f.firstElementChild;if(g!==null&&f.childNodes.length===1){let _=window.getComputedStyle(g);if(_!==null){let y=_["background-color"],C=G.fromCssColorString(y);l(C)&&C.alpha!==0&&(A=_["background-color"])}}t.style["background-color"]=A;let m=f.getBoundingClientRect().height;r.style.height=`${m}px`})}),r.setAttribute("src","about:blank")}Object.defineProperties(qH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}},frame:{get:function(){return this._frame}}});qH.prototype.isDestroyed=function(){return!1};qH.prototype.destroy=function(){let e=this._container;return xe.cleanNode(this._element),e.removeChild(this._element),l(this._descriptionSubscription)&&this._descriptionSubscription.dispose(),ue(this)};var KH=qH;function CSe(){this.showInstructions=!1;let e=this;this._command=Mn(function(){e.showInstructions=!e.showInstructions}),this._showClick=Mn(function(){e._touch=!1}),this._showTouch=Mn(function(){e._touch=!0}),this._touch=!1,this.tooltip="Navigation Instructions",xe.track(this,["tooltip","showInstructions","_touch"])}Object.defineProperties(CSe.prototype,{command:{get:function(){return this._command}},showClick:{get:function(){return this._showClick}},showTouch:{get:function(){return this._showTouch}}});var XH=CSe;function JH(e){let t=Gn(e.container),n=new XH,i=e.instructionsInitiallyVisible??!1;n.showInstructions=i,n._svgPath="M16,1.466C7.973,1.466,1.466,7.973,1.466,16c0,8.027,6.507,14.534,14.534,14.534c8.027,0,14.534-6.507,14.534-14.534C30.534,7.973,24.027,1.466,16,1.466z M17.328,24.371h-2.707v-2.596h2.707V24.371zM17.328,19.003v0.858h-2.707v-1.057c0-3.19,3.63-3.696,3.63-5.963c0-1.034-0.924-1.826-2.134-1.826c-1.254,0-2.354,0.924-2.354,0.924l-1.541-1.915c0,0,1.519-1.584,4.137-1.584c2.487,0,4.796,1.54,4.796,4.136C21.156,16.208,17.328,16.627,17.328,19.003z";let o=document.createElement("span");o.className="cesium-navigationHelpButton-wrapper",t.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button cesium-navigation-help-button",r.setAttribute("data-bind","attr: { title: tooltip },click: command,cesiumSvgPath: { path: _svgPath, width: 32, height: 32 }"),o.appendChild(r);let s=document.createElement("div");s.className="cesium-navigation-help",s.setAttribute("data-bind",'css: { "cesium-navigation-help-visible" : showInstructions}'),o.appendChild(s);let a=document.createElement("button");a.type="button",a.className="cesium-navigation-button cesium-navigation-button-left",a.setAttribute("data-bind",'click: showClick, css: {"cesium-navigation-button-selected": !_touch, "cesium-navigation-button-unselected": _touch}');let c=document.createElement("img");c.src=fn("Widgets/Images/NavigationHelp/Mouse.svg"),c.className="cesium-navigation-button-icon",c.style.width="25px",c.style.height="25px",a.appendChild(c),a.appendChild(document.createTextNode("Mouse"));let u=document.createElement("button");u.type="button",u.className="cesium-navigation-button cesium-navigation-button-right",u.setAttribute("data-bind",'click: showTouch, css: {"cesium-navigation-button-selected": _touch, "cesium-navigation-button-unselected": !_touch}');let f=document.createElement("img");f.src=fn("Widgets/Images/NavigationHelp/Touch.svg"),f.className="cesium-navigation-button-icon",f.style.width="25px",f.style.height="25px",u.appendChild(f),u.appendChild(document.createTextNode("Touch")),s.appendChild(a),s.appendChild(u);let h=document.createElement("div");h.className="cesium-click-navigation-help cesium-navigation-help-instructions",h.setAttribute("data-bind",'css: { "cesium-click-navigation-help-visible" : !_touch}'),h.innerHTML=` <table> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/MouseLeft.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">Left click + drag</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/MouseRight.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Right click + drag, or</div> <div class="cesium-navigation-help-details">Mouse wheel scroll</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/MouseMiddle.svg")}" width="48" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Rotate view</div> <div class="cesium-navigation-help-details">Middle click + drag, or</div> <div class="cesium-navigation-help-details">CTRL + Left/Right click + drag</div> </td> </tr> </table>`,s.appendChild(h);let A=document.createElement("div");A.className="cesium-touch-navigation-help cesium-navigation-help-instructions",A.setAttribute("data-bind",'css: { "cesium-touch-navigation-help-visible" : _touch}'),A.innerHTML=` <table> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/TouchDrag.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-pan">Pan view</div> <div class="cesium-navigation-help-details">One finger drag</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/TouchZoom.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-zoom">Zoom view</div> <div class="cesium-navigation-help-details">Two finger pinch</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/TouchTilt.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-rotate">Tilt view</div> <div class="cesium-navigation-help-details">Two finger drag, same direction</div> </td> </tr> <tr> <td><img src="${fn("Widgets/Images/NavigationHelp/TouchRotate.svg")}" width="70" height="48" /></td> <td> <div class="cesium-navigation-help-tilt">Rotate view</div> <div class="cesium-navigation-help-details">Two finger drag, opposite direction</div> </td> </tr> </table>`,s.appendChild(A),xe.applyBindings(n,o),this._container=t,this._viewModel=n,this._wrapper=o,this._closeInstructions=function(g){o.contains(g.target)||(n.showInstructions=!1)},jt.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeInstructions,!0):(document.addEventListener("mousedown",this._closeInstructions,!0),document.addEventListener("touchstart",this._closeInstructions,!0))}Object.defineProperties(JH.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});JH.prototype.isDestroyed=function(){return!1};JH.prototype.destroy=function(){return jt.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeInstructions,!0):(document.removeEventListener("mousedown",this._closeInstructions,!0),document.removeEventListener("touchstart",this._closeInstructions,!0)),xe.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),ue(this)};var ZH=JH;function ZZ(e){this._scene=e.scene,this.lowFrameRateMessage=e.lowFrameRateMessage??"This application appears to be performing poorly on your system. Please try using a different web browser or updating your video drivers.",this.lowFrameRateMessageDismissed=!1,this.showingLowFrameRateMessage=!1,xe.track(this,["lowFrameRateMessage","lowFrameRateMessageDismissed","showingLowFrameRateMessage"]);let t=this;this._dismissMessage=Mn(function(){t.showingLowFrameRateMessage=!1,t.lowFrameRateMessageDismissed=!0});let n=X4.fromScene(e.scene);this._unsubscribeLowFrameRate=n.lowFrameRate.addEventListener(function(){t.lowFrameRateMessageDismissed||(t.showingLowFrameRateMessage=!0)}),this._unsubscribeNominalFrameRate=n.nominalFrameRate.addEventListener(function(){t.showingLowFrameRateMessage=!1})}Object.defineProperties(ZZ.prototype,{scene:{get:function(){return this._scene}},dismissMessage:{get:function(){return this._dismissMessage}}});ZZ.prototype.destroy=function(){return this._unsubscribeLowFrameRate(),this._unsubscribeNominalFrameRate(),ue(this)};var $H=ZZ;function e5(e){let t=Gn(e.container),n=new $H(e),i=document.createElement("div");i.className="cesium-performance-watchdog-message-area",i.setAttribute("data-bind","visible: showingLowFrameRateMessage");let o=document.createElement("button");o.setAttribute("type","button"),o.className="cesium-performance-watchdog-message-dismiss",o.innerHTML="×",o.setAttribute("data-bind","click: dismissMessage"),i.appendChild(o);let r=document.createElement("div");r.className="cesium-performance-watchdog-message",r.setAttribute("data-bind","html: lowFrameRateMessage"),i.appendChild(r),t.appendChild(i),xe.applyBindings(n,i),this._container=t,this._viewModel=n,this._element=i}Object.defineProperties(e5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});e5.prototype.isDestroyed=function(){return!1};e5.prototype.destroy=function(){return this._viewModel.destroy(),xe.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var t5=e5;function n5(e){this._scene=e,this._orthographic=e.camera.frustum instanceof An,this._flightInProgress=!1,this.dropDownVisible=!1,this.tooltipPerspective="Perspective Projection",this.tooltipOrthographic="Orthographic Projection",this.selectedTooltip=void 0,this.sceneMode=e.mode,xe.track(this,["_orthographic","_flightInProgress","sceneMode","dropDownVisible","tooltipPerspective","tooltipOrthographic"]);let t=this;xe.defineProperty(this,"selectedTooltip",function(){return t._orthographic?t.tooltipOrthographic:t.tooltipPerspective}),this._toggleDropDown=Mn(function(){t.sceneMode===ie.SCENE2D||t._flightInProgress||(t.dropDownVisible=!t.dropDownVisible)}),this._eventHelper=new Lr,this._eventHelper.add(e.morphComplete,function(n,i,o,r){t.sceneMode=o,t._orthographic=o===ie.SCENE2D||t._scene.camera.frustum instanceof An}),this._eventHelper.add(e.preRender,function(){t._flightInProgress=l(e.camera._currentFlight)}),this._switchToPerspective=Mn(function(){t.sceneMode!==ie.SCENE2D&&(t._scene.camera.switchToPerspectiveFrustum(),t._orthographic=!1,t.dropDownVisible=!1)}),this._switchToOrthographic=Mn(function(){t.sceneMode!==ie.SCENE2D&&(t._scene.camera.switchToOrthographicFrustum(),t._orthographic=!0,t.dropDownVisible=!1)}),this._sceneMode=ie}Object.defineProperties(n5.prototype,{scene:{get:function(){return this._scene}},toggleDropDown:{get:function(){return this._toggleDropDown}},switchToPerspective:{get:function(){return this._switchToPerspective}},switchToOrthographic:{get:function(){return this._switchToOrthographic}},isOrthographicProjection:{get:function(){return this._orthographic}}});n5.prototype.isDestroyed=function(){return!1};n5.prototype.destroy=function(){this._eventHelper.removeAll(),ue(this)};var i5=n5;var EDt="M 28.15625,10.4375 9.125,13.21875 13.75,43.25 41.75,55.09375 50.8125,37 54.5,11.9375 z m 0.125,3 19.976451,0.394265 L 43.03125,16.875 22.6875,14.28125 z M 50.971746,15.705477 47.90625,36.03125 42.53125,46 44.84375,19.3125 z M 12.625,16.03125 l 29.15625,3.6875 -2.65625,31 L 16.4375,41.125 z",IDt="m 31.560594,6.5254438 -20.75,12.4687502 0.1875,24.5625 22.28125,11.8125 19.5,-12 0.65625,-0.375 0,-0.75 0.0312,-23.21875 z m 0.0625,3.125 16.65625,9.5000002 -16.125,10.28125 -17.34375,-9.71875 z m 18.96875,11.1875002 0.15625,20.65625 -17.46875,10.59375 0.15625,-20.28125 z m -37.0625,1.25 17.21875,9.625 -0.15625,19.21875 -16.9375,-9 z";function o5(e,t){e=Gn(e);let n=new i5(t);n._perspectivePath=EDt,n._orthographicPath=IDt;let i=document.createElement("span");i.className="cesium-projectionPicker-wrapper cesium-toolbar-button",e.appendChild(i);let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-toolbar-button",o.setAttribute("data-bind",'css: { "cesium-projectionPicker-buttonPerspective": !_orthographic, "cesium-projectionPicker-buttonOrthographic": _orthographic, "cesium-button-disabled" : sceneMode === _sceneMode.SCENE2D || _flightInProgress, "cesium-projectionPicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),o.innerHTML='<!-- ko cesiumSvgPath: { path: _perspectivePath, width: 64, height: 64, css: "cesium-projectionPicker-iconPerspective" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _orthographicPath, width: 64, height: 64, css: "cesium-projectionPicker-iconOrthographic" } --><!-- /ko -->',i.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button cesium-projectionPicker-dropDown-icon",r.setAttribute("data-bind",'css: { "cesium-projectionPicker-visible" : (dropDownVisible && _orthographic), "cesium-projectionPicker-none" : !_orthographic, "cesium-projectionPicker-hidden" : !dropDownVisible },attr: { title: tooltipPerspective },click: switchToPerspective,cesiumSvgPath: { path: _perspectivePath, width: 64, height: 64 }'),i.appendChild(r);let s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-projectionPicker-dropDown-icon",s.setAttribute("data-bind",'css: { "cesium-projectionPicker-visible" : (dropDownVisible && !_orthographic), "cesium-projectionPicker-none" : _orthographic, "cesium-projectionPicker-hidden" : !dropDownVisible},attr: { title: tooltipOrthographic },click: switchToOrthographic,cesiumSvgPath: { path: _orthographicPath, width: 64, height: 64 }'),i.appendChild(s),xe.applyBindings(n,i),this._viewModel=n,this._container=e,this._wrapper=i,this._closeDropDown=function(a){i.contains(a.target)||(n.dropDownVisible=!1)},jt.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(o5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});o5.prototype.isDestroyed=function(){return!1};o5.prototype.destroy=function(){return this._viewModel.destroy(),jt.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),xe.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),ue(this)};var r5=o5;function s5(e,t){this._scene=e;let n=this,i=function(o,r,s,a){n.sceneMode=s,n.dropDownVisible=!1};this._eventHelper=new Lr,this._eventHelper.add(e.morphStart,i),this._duration=t??2,this.sceneMode=e.mode,this.dropDownVisible=!1,this.tooltip2D="2D",this.tooltip3D="3D",this.tooltipColumbusView="Columbus View",xe.track(this,["sceneMode","dropDownVisible","tooltip2D","tooltip3D","tooltipColumbusView"]),this.selectedTooltip=void 0,xe.defineProperty(this,"selectedTooltip",function(){let o=n.sceneMode;return o===ie.SCENE2D?n.tooltip2D:o===ie.SCENE3D?n.tooltip3D:n.tooltipColumbusView}),this._toggleDropDown=Mn(function(){n.dropDownVisible=!n.dropDownVisible}),this._morphTo2D=Mn(function(){e.morphTo2D(n._duration)}),this._morphTo3D=Mn(function(){e.morphTo3D(n._duration)}),this._morphToColumbusView=Mn(function(){e.morphToColumbusView(n._duration)}),this._sceneMode=ie}Object.defineProperties(s5.prototype,{scene:{get:function(){return this._scene}},duration:{get:function(){return this._duration},set:function(e){this._duration=e}},toggleDropDown:{get:function(){return this._toggleDropDown}},morphTo2D:{get:function(){return this._morphTo2D}},morphTo3D:{get:function(){return this._morphTo3D}},morphToColumbusView:{get:function(){return this._morphToColumbusView}}});s5.prototype.isDestroyed=function(){return!1};s5.prototype.destroy=function(){this._eventHelper.removeAll(),ue(this)};var a5=s5;var xDt="m 32.401392,4.9330437 c -7.087603,0 -14.096095,2.884602 -19.10793,7.8946843 -5.0118352,5.010083 -7.9296167,11.987468 -7.9296167,19.072999 0,7.085531 2.9177815,14.097848 7.9296167,19.107931 4.837653,4.835961 11.541408,7.631372 18.374354,7.82482 0.05712,0.01231 0.454119,0.139729 0.454119,0.139729 l 0.03493,-0.104797 c 0.08246,7.84e-4 0.162033,0.03493 0.244525,0.03493 0.08304,0 0.161515,-0.03414 0.244526,-0.03493 l 0.03493,0.104797 c 0,0 0.309474,-0.129487 0.349323,-0.139729 6.867765,-0.168094 13.582903,-2.965206 18.444218,-7.82482 2.558195,-2.5573 4.551081,-5.638134 5.903547,-8.977584 1.297191,-3.202966 2.02607,-6.661489 2.02607,-10.130347 0,-6.237309 -2.366261,-12.31219 -6.322734,-17.116794 -0.0034,-0.02316 0.0049,-0.04488 0,-0.06986 -0.01733,-0.08745 -0.104529,-0.278855 -0.104797,-0.279458 -5.31e-4,-0.0012 -0.522988,-0.628147 -0.523984,-0.62878 -3.47e-4,-2.2e-4 -0.133444,-0.03532 -0.244525,-0.06987 C 51.944299,13.447603 51.751076,13.104317 51.474391,12.827728 46.462556,7.8176457 39.488996,4.9330437 32.401392,4.9330437 z m -2.130866,3.5281554 0.104797,9.6762289 c -4.111695,-0.08361 -7.109829,-0.423664 -9.257041,-0.943171 1.198093,-2.269271 2.524531,-4.124404 3.91241,-5.414496 2.167498,-2.0147811 3.950145,-2.8540169 5.239834,-3.3185619 z m 2.794579,0 c 1.280302,0.4754953 3.022186,1.3285948 5.065173,3.2486979 1.424667,1.338973 2.788862,3.303645 3.982275,5.728886 -2.29082,0.403367 -5.381258,0.621049 -8.942651,0.698645 L 33.065105,8.4611991 z m 5.728886,0.2445256 c 4.004072,1.1230822 7.793098,3.1481363 10.724195,6.0782083 0.03468,0.03466 0.07033,0.06991 0.104797,0.104797 -0.45375,0.313891 -0.923054,0.663002 -1.956205,1.082899 -0.647388,0.263114 -1.906242,0.477396 -2.829511,0.733577 -1.382296,-2.988132 -3.027146,-5.368585 -4.785716,-7.0213781 -0.422866,-0.397432 -0.835818,-0.6453247 -1.25756,-0.9781032 z m -15.33525,0.7685092 c -0.106753,0.09503 -0.207753,0.145402 -0.31439,0.244526 -1.684973,1.5662541 -3.298068,3.8232211 -4.680919,6.5672591 -0.343797,-0.14942 -1.035052,-0.273198 -1.292493,-0.419186 -0.956528,-0.542427 -1.362964,-1.022024 -1.537018,-1.292493 -0.0241,-0.03745 -0.01868,-0.0401 -0.03493,-0.06986 2.250095,-2.163342 4.948824,-3.869984 7.859752,-5.0302421 z m -9.641296,7.0912431 c 0.464973,0.571618 0.937729,1.169056 1.956205,1.746612 0.349907,0.198425 1.107143,0.335404 1.537018,0.523983 -1.20166,3.172984 -1.998037,7.051901 -2.165798,11.772162 C 14.256557,30.361384 12.934823,30.161483 12.280427,29.90959 10.644437,29.279855 9.6888882,28.674891 9.1714586,28.267775 8.6540289,27.860658 8.6474751,27.778724 8.6474751,27.778724 l -0.069864,0.03493 C 9.3100294,23.691285 11.163248,19.798527 13.817445,16.565477 z m 37.552149,0.523984 c 2.548924,3.289983 4.265057,7.202594 4.890513,11.318043 -0.650428,0.410896 -1.756876,1.001936 -3.563088,1.606882 -1.171552,0.392383 -3.163859,0.759153 -4.960377,1.117832 -0.04367,-4.752703 -0.784809,-8.591423 -1.88634,-11.807094 0.917574,-0.263678 2.170552,-0.486495 2.864443,-0.76851 1.274693,-0.518066 2.003942,-1.001558 2.654849,-1.467153 z m -31.439008,2.619917 c 2.487341,0.672766 5.775813,1.137775 10.479669,1.222628 l 0.104797,10.689263 0,0.03493 0,0.733577 c -5.435005,-0.09059 -9.512219,-0.519044 -12.610536,-1.117831 0.106127,-4.776683 0.879334,-8.55791 2.02607,-11.562569 z m 23.264866,0.31439 c 1.073459,3.067541 1.833795,6.821314 1.816476,11.702298 -3.054474,0.423245 -7.062018,0.648559 -11.702298,0.698644 l 0,-0.838373 -0.104796,-10.654331 c 4.082416,-0.0864 7.404468,-0.403886 9.990618,-0.908238 z M 8.2632205,30.922625 c 0.7558676,0.510548 1.5529563,1.013339 3.0041715,1.57195 0.937518,0.360875 2.612202,0.647642 3.91241,0.978102 0.112814,3.85566 0.703989,7.107756 1.606883,9.920754 -1.147172,-0.324262 -2.644553,-0.640648 -3.423359,-0.978102 -1.516688,-0.657177 -2.386627,-1.287332 -2.864443,-1.71168 -0.477816,-0.424347 -0.489051,-0.489051 -0.489051,-0.489051 L 9.8002387,40.319395 C 8.791691,37.621767 8.1584238,34.769583 8.1584238,31.900727 c 0,-0.330153 0.090589,-0.648169 0.1047967,-0.978102 z m 48.2763445,0.419186 c 0.0047,0.188973 0.06986,0.36991 0.06986,0.558916 0,2.938869 -0.620228,5.873558 -1.676747,8.628261 -0.07435,0.07583 -0.06552,0.07411 -0.454119,0.349323 -0.606965,0.429857 -1.631665,1.042044 -3.318562,1.676747 -1.208528,0.454713 -3.204964,0.850894 -5.135038,1.25756 0.84593,-2.765726 1.41808,-6.005357 1.606883,-9.815957 2.232369,-0.413371 4.483758,-0.840201 5.938479,-1.327425 1.410632,-0.472457 2.153108,-0.89469 2.96924,-1.327425 z m -38.530252,2.864443 c 3.208141,0.56697 7.372279,0.898588 12.575603,0.978103 l 0.174662,9.885821 c -4.392517,-0.06139 -8.106722,-0.320566 -10.863925,-0.803441 -1.051954,-2.664695 -1.692909,-6.043794 -1.88634,-10.060483 z m 26.793022,0.31439 c -0.246298,3.923551 -0.877762,7.263679 -1.816476,9.885822 -2.561957,0.361954 -5.766249,0.560708 -9.431703,0.62878 l -0.174661,-9.815957 c 4.491734,-0.04969 8.334769,-0.293032 11.42284,-0.698645 z M 12.035901,44.860585 c 0.09977,0.04523 0.105535,0.09465 0.209594,0.139729 1.337656,0.579602 3.441099,1.058072 5.589157,1.537018 1.545042,3.399208 3.548524,5.969402 5.589157,7.789888 -3.034411,-1.215537 -5.871615,-3.007978 -8.174142,-5.309699 -1.245911,-1.245475 -2.271794,-2.662961 -3.213766,-4.156936 z m 40.69605,0 c -0.941972,1.493975 -1.967855,2.911461 -3.213765,4.156936 -2.74253,2.741571 -6.244106,4.696717 -9.955686,5.868615 0.261347,-0.241079 0.507495,-0.394491 0.768509,-0.663713 1.674841,-1.727516 3.320792,-4.181056 4.645987,-7.265904 2.962447,-0.503021 5.408965,-1.122293 7.161107,-1.781544 0.284034,-0.106865 0.337297,-0.207323 0.593848,-0.31439 z m -31.404076,2.305527 c 2.645807,0.376448 5.701178,0.649995 9.466635,0.698645 l 0.139729,7.789888 c -1.38739,-0.480844 -3.316218,-1.29837 -5.659022,-3.388427 -1.388822,-1.238993 -2.743668,-3.0113 -3.947342,-5.100106 z m 20.365491,0.104797 c -1.04872,2.041937 -2.174337,3.779068 -3.353494,4.995309 -1.853177,1.911459 -3.425515,2.82679 -4.611055,3.353494 l -0.139729,-7.789887 c 3.13091,-0.05714 5.728238,-0.278725 8.104278,-0.558916 z",bDt="m 2.9825053,17.550598 0,1.368113 0,26.267766 0,1.368113 1.36811,0 54.9981397,0 1.36811,0 0,-1.368113 0,-26.267766 0,-1.368113 -1.36811,0 -54.9981397,0 -1.36811,0 z m 2.73623,2.736226 10.3292497,0 0,10.466063 -10.3292497,0 0,-10.466063 z m 13.0654697,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 11.69737,0 0,10.466063 -11.69737,0 0,-10.466063 z m 14.43359,0 10.32926,0 0,10.466063 -10.32926,0 0,-10.466063 z m -41.9326497,13.202288 10.3292497,0 0,10.329252 -10.3292497,0 0,-10.329252 z m 13.0654697,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 11.69737,0 0,10.329252 -11.69737,0 0,-10.329252 z m 14.43359,0 10.32926,0 0,10.329252 -10.32926,0 0,-10.329252 z",TDt="m 14.723969,17.675598 -0.340489,0.817175 -11.1680536,26.183638 -0.817175,1.872692 2.076986,0 54.7506996,0 2.07698,0 -0.81717,-1.872692 -11.16805,-26.183638 -0.34049,-0.817175 -0.91933,0 -32.414586,0 -0.919322,0 z m 1.838643,2.723916 6.196908,0 -2.928209,10.418977 -7.729111,0 4.460412,-10.418977 z m 9.02297,0 4.903049,0 0,10.418977 -7.831258,0 2.928209,-10.418977 z m 7.626964,0 5.584031,0 2.62176,10.418977 -8.205791,0 0,-10.418977 z m 8.410081,0 5.51593,0 4.46042,10.418977 -7.38863,0 -2.58772,-10.418977 z m -30.678091,13.142892 8.103649,0 -2.89416,10.282782 -9.6018026,0 4.3923136,-10.282782 z m 10.929711,0 8.614384,0 0,10.282782 -11.508544,0 2.89416,-10.282782 z m 11.338299,0 8.852721,0 2.58772,10.282782 -11.440441,0 0,-10.282782 z m 11.678781,0 7.86531,0 4.39231,10.282782 -9.6699,0 -2.58772,-10.282782 z";function c5(e,t,n){e=Gn(e);let i=new a5(t,n);i._globePath=xDt,i._flatMapPath=bDt,i._columbusViewPath=TDt;let o=document.createElement("span");o.className="cesium-sceneModePicker-wrapper cesium-toolbar-button",e.appendChild(o);let r=document.createElement("button");r.type="button",r.className="cesium-button cesium-toolbar-button",r.setAttribute("data-bind",'css: { "cesium-sceneModePicker-button2D": sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-button3D": sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-buttonColumbusView": sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-selected": dropDownVisible },attr: { title: selectedTooltip },click: toggleDropDown'),r.innerHTML='<!-- ko cesiumSvgPath: { path: _globePath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon3D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-icon2D" } --><!-- /ko --><!-- ko cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64, css: "cesium-sceneModePicker-slide-svg cesium-sceneModePicker-iconColumbusView" } --><!-- /ko -->',o.appendChild(r);let s=document.createElement("button");s.type="button",s.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",s.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE3D)) || (!dropDownVisible && (sceneMode === _sceneMode.SCENE3D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE3D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip3D },click: morphTo3D,cesiumSvgPath: { path: _globePath, width: 64, height: 64 }'),o.appendChild(s);let a=document.createElement("button");a.type="button",a.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",a.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.SCENE2D)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.SCENE2D, "cesium-sceneModePicker-hidden" : !dropDownVisible },attr: { title: tooltip2D },click: morphTo2D,cesiumSvgPath: { path: _flatMapPath, width: 64, height: 64 }'),o.appendChild(a);let c=document.createElement("button");c.type="button",c.className="cesium-button cesium-toolbar-button cesium-sceneModePicker-dropDown-icon",c.setAttribute("data-bind",'css: { "cesium-sceneModePicker-visible" : (dropDownVisible && (sceneMode !== _sceneMode.COLUMBUS_VIEW)) || (!dropDownVisible && (sceneMode === _sceneMode.COLUMBUS_VIEW)), "cesium-sceneModePicker-none" : sceneMode === _sceneMode.COLUMBUS_VIEW, "cesium-sceneModePicker-hidden" : !dropDownVisible},attr: { title: tooltipColumbusView },click: morphToColumbusView,cesiumSvgPath: { path: _columbusViewPath, width: 64, height: 64 }'),o.appendChild(c),xe.applyBindings(i,o),this._viewModel=i,this._container=e,this._wrapper=o,this._closeDropDown=function(u){o.contains(u.target)||(i.dropDownVisible=!1)},jt.supportsPointerEvents()?document.addEventListener("pointerdown",this._closeDropDown,!0):(document.addEventListener("mousedown",this._closeDropDown,!0),document.addEventListener("touchstart",this._closeDropDown,!0))}Object.defineProperties(c5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});c5.prototype.isDestroyed=function(){return!1};c5.prototype.destroy=function(){return this._viewModel.destroy(),jt.supportsPointerEvents()?document.removeEventListener("pointerdown",this._closeDropDown,!0):(document.removeEventListener("mousedown",this._closeDropDown,!0),document.removeEventListener("touchstart",this._closeDropDown,!0)),xe.cleanNode(this._wrapper),this._container.removeChild(this._wrapper),ue(this)};var l5=c5;var SDt=new k,u5="-1000px";function pR(e,t,n){this._scene=e,this._screenPositionX=u5,this._screenPositionY=u5,this._tweens=e.tweens,this._container=n??document.body,this._selectionIndicatorElement=t,this._scale=1,this.position=void 0,this.showSelection=!1,xe.track(this,["position","_screenPositionX","_screenPositionY","_scale","showSelection"]),this.isVisible=void 0,xe.defineProperty(this,"isVisible",{get:function(){return this.showSelection&&l(this.position)}}),xe.defineProperty(this,"_transform",{get:function(){return`scale(${this._scale})`}}),this.computeScreenSpacePosition=function(i,o){return to.worldToWindowCoordinates(e,i,o)}}pR.prototype.update=function(){if(this.showSelection&&l(this.position)){let e=this.computeScreenSpacePosition(this.position,SDt);if(!l(e))this._screenPositionX=u5,this._screenPositionY=u5;else{let t=this._container,n=t.parentNode.clientWidth,i=t.parentNode.clientHeight,o=this._selectionIndicatorElement.clientWidth,r=o*.5;e.x=Math.min(Math.max(e.x,-o),n+o)-r,e.y=Math.min(Math.max(e.y,-o),i+o)-r,this._screenPositionX=`${Math.floor(e.x+.25)}px`,this._screenPositionY=`${Math.floor(e.y+.25)}px`}}};pR.prototype.animateAppear=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:2,stopValue:1,duration:.8,easingFunction:ps.EXPONENTIAL_OUT})};pR.prototype.animateDepart=function(){this._tweens.addProperty({object:this,property:"_scale",startValue:this._scale,stopValue:1.5,duration:.8,easingFunction:ps.EXPONENTIAL_OUT})};Object.defineProperties(pR.prototype,{container:{get:function(){return this._container}},selectionIndicatorElement:{get:function(){return this._selectionIndicatorElement}},scene:{get:function(){return this._scene}}});var f5=pR;function d5(e,t){e=Gn(e),this._container=e;let n=document.createElement("div");n.className="cesium-selection-wrapper",n.setAttribute("data-bind",'style: { "top" : _screenPositionY, "left" : _screenPositionX },css: { "cesium-selection-wrapper-visible" : isVisible }'),e.appendChild(n),this._element=n;let i="http://www.w3.org/2000/svg",o="M -34 -34 L -34 -11.25 L -30 -15.25 L -30 -30 L -15.25 -30 L -11.25 -34 L -34 -34 z M 11.25 -34 L 15.25 -30 L 30 -30 L 30 -15.25 L 34 -11.25 L 34 -34 L 11.25 -34 z M -34 11.25 L -34 34 L -11.25 34 L -15.25 30 L -30 30 L -30 15.25 L -34 11.25 z M 34 11.25 L 30 15.25 L 30 30 L 15.25 30 L 11.25 34 L 34 34 L 34 11.25 z",r=document.createElementNS(i,"svg:svg");r.setAttribute("width",160),r.setAttribute("height",160),r.setAttribute("viewBox","0 0 160 160");let s=document.createElementNS(i,"g");s.setAttribute("transform","translate(80,80)"),r.appendChild(s);let a=document.createElementNS(i,"path");a.setAttribute("data-bind","attr: { transform: _transform }"),a.setAttribute("d",o),s.appendChild(a),n.appendChild(r);let c=new f5(t,this._element,this._container);this._viewModel=c,xe.applyBindings(this._viewModel,this._element)}Object.defineProperties(d5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});d5.prototype.isDestroyed=function(){return!1};d5.prototype.destroy=function(){let e=this._container;return xe.cleanNode(this._element),e.removeChild(this._element),ue(this)};var h5=d5;function F0(e,t,n){this._color=e,this._height=t,this._base=n??0}F0.prototype.getHeight=function(){return this._height};F0.prototype.getBase=function(){return this._base};F0.prototype.getStartTime=function(){return this._start};F0.prototype.getStopTime=function(){return this._stop};F0.prototype.setRange=function(e,t){this._start=e,this._stop=t};F0.prototype.render=function(e){let t="";if(this._start&&this._stop&&this._color){let n=K.secondsDifference(this._start,e.epochJulian),i=Math.round(e.timeBarWidth*e.getAlpha(n)),o=K.secondsDifference(this._stop,e.epochJulian),r=Math.round(e.timeBarWidth*e.getAlpha(o))-i;i<0&&(r+=i,i=0),i+r>e.timeBarWidth&&(r=e.timeBarWidth-i),r>0&&(t=`<span class="cesium-timeline-highlight" style="left: ${i.toString()}px; width: ${r.toString()}px; bottom: ${this._base.toString()}px; height: ${this._height}px; background-color: ${this._color};"></span>`)}return t};var m5=F0;function ESe(e,t,n,i){this.interval=e,this.height=t,this.color=n||new G(.5,.5,.5,1),this.backgroundColor=i||new G(0,0,0,0)}ESe.prototype.render=function(e,t){let n=this.interval.start,i=this.interval.stop,o=t.startJulian,r=K.addSeconds(t.startJulian,t.duration,new K);if(K.lessThan(n,o)&&K.greaterThan(i,r))e.fillStyle=this.color.toCssColorString(),e.fillRect(0,t.y,t.timeBarWidth,this.height);else if(K.lessThanOrEquals(n,r)&&K.greaterThanOrEquals(i,o)){let s,a,c;for(s=0;s<t.timeBarWidth;++s){let u=K.addSeconds(t.startJulian,s/t.timeBarWidth*t.duration,new K);!l(a)&&K.greaterThanOrEquals(u,n)?a=s:!l(c)&&K.greaterThanOrEquals(u,i)&&(c=s)}e.fillStyle=this.backgroundColor.toCssColorString(),e.fillRect(0,t.y,t.timeBarWidth,this.height),l(a)&&(l(c)||(c=t.timeBarWidth),e.fillStyle=this.color.toCssColorString(),e.fillRect(a,t.y,Math.max(c-a,1),this.height))}};var A5=ESe;var $Z=1e12,Bd={none:0,scrub:1,slide:2,zoom:3,touchOnly:4},Sl={none:0,scrub:1,slideZoom:2,singleTap:3,ignore:4},iC=[.001,.002,.005,.01,.02,.05,.1,.25,.5,1,2,5,10,15,30,60,120,300,600,900,1800,3600,7200,14400,21600,43200,86400,172800,345600,604800,1296e3,2592e3,5184e3,7776e3,15552e3,31536e3,63072e3,126144e3,15768e4,31536e4,63072e4,126144e4,15768e5,31536e5,63072e5,126144e5,15768e6,31536e6],wDt=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function wl(e,t){e=Gn(e);let n=e.ownerDocument;this.container=e;let i=n.createElement("div");i.className="cesium-timeline-main",e.appendChild(i),this._topDiv=i,this._endJulian=void 0,this._epochJulian=void 0,this._lastXPos=void 0,this._scrubElement=void 0,this._startJulian=void 0,this._timeBarSecondsSpan=void 0,this._clock=t,this._scrubJulian=t.currentTime,this._mainTicSpan=-1,this._mouseMode=Bd.none,this._touchMode=Sl.none,this._touchState={centerX:0,spanX:0},this._mouseX=0,this._timelineDrag=0,this._timelineDragLocation=void 0,this._lastHeight=void 0,this._lastWidth=void 0,this._topDiv.innerHTML='<div class="cesium-timeline-bar"></div><div class="cesium-timeline-trackContainer"><canvas class="cesium-timeline-tracks" width="10" height="1"></canvas></div><div class="cesium-timeline-needle"></div><span class="cesium-timeline-ruler"></span>',this._timeBarEle=this._topDiv.childNodes[0],this._trackContainer=this._topDiv.childNodes[1],this._trackListEle=this._topDiv.childNodes[1].childNodes[0],this._needleEle=this._topDiv.childNodes[2],this._rulerEle=this._topDiv.childNodes[3],this._context=this._trackListEle.getContext("2d"),this._trackList=[],this._highlightRanges=[],this.zoomTo(t.startTime,t.stopTime),this._onMouseDown=BDt(this),this._onMouseUp=DDt(this),this._onMouseMove=vDt(this),this._onMouseWheel=PDt(this),this._onTouchStart=RDt(this),this._onTouchMove=NDt(this),this._onTouchEnd=MDt(this);let o=this._timeBarEle;n.addEventListener("mouseup",this._onMouseUp,!1),n.addEventListener("mousemove",this._onMouseMove,!1),o.addEventListener("mousedown",this._onMouseDown,!1),o.addEventListener("DOMMouseScroll",this._onMouseWheel,!1),o.addEventListener("mousewheel",this._onMouseWheel,!1),o.addEventListener("touchstart",this._onTouchStart,!1),o.addEventListener("touchmove",this._onTouchMove,!1),o.addEventListener("touchend",this._onTouchEnd,!1),o.addEventListener("touchcancel",this._onTouchEnd,!1),this._topDiv.oncontextmenu=function(){return!1},t.onTick.addEventListener(this.updateFromClock,this),this.updateFromClock()}wl.prototype.addEventListener=function(e,t,n){this._topDiv.addEventListener(e,t,n)};wl.prototype.removeEventListener=function(e,t,n){this._topDiv.removeEventListener(e,t,n)};wl.prototype.isDestroyed=function(){return!1};wl.prototype.destroy=function(){this._clock.onTick.removeEventListener(this.updateFromClock,this);let e=this.container.ownerDocument;e.removeEventListener("mouseup",this._onMouseUp,!1),e.removeEventListener("mousemove",this._onMouseMove,!1);let t=this._timeBarEle;t.removeEventListener("mousedown",this._onMouseDown,!1),t.removeEventListener("DOMMouseScroll",this._onMouseWheel,!1),t.removeEventListener("mousewheel",this._onMouseWheel,!1),t.removeEventListener("touchstart",this._onTouchStart,!1),t.removeEventListener("touchmove",this._onTouchMove,!1),t.removeEventListener("touchend",this._onTouchEnd,!1),t.removeEventListener("touchcancel",this._onTouchEnd,!1),this.container.removeChild(this._topDiv),ue(this)};wl.prototype.addHighlightRange=function(e,t,n){let i=new m5(e,t,n);return this._highlightRanges.push(i),this.resize(),i};wl.prototype.addTrack=function(e,t,n,i){let o=new A5(e,t,n,i);return this._trackList.push(o),this._lastHeight=void 0,this.resize(),o};wl.prototype.zoomTo=function(e,t){if(this._startJulian=e,this._endJulian=t,this._timeBarSecondsSpan=K.secondsDifference(t,e),this._clock&&this._clock.clockRange!==As.UNBOUNDED){let i=this._clock.startTime,o=this._clock.stopTime,r=K.secondsDifference(o,i),s=K.secondsDifference(i,this._startJulian),a=K.secondsDifference(o,this._endJulian);this._timeBarSecondsSpan>=r?(this._timeBarSecondsSpan=r,this._startJulian=this._clock.startTime,this._endJulian=this._clock.stopTime):s>0?(this._endJulian=K.addSeconds(this._endJulian,s,new K),this._startJulian=i,this._timeBarSecondsSpan=K.secondsDifference(this._endJulian,this._startJulian)):a<0&&(this._startJulian=K.addSeconds(this._startJulian,a,new K),this._endJulian=o,this._timeBarSecondsSpan=K.secondsDifference(this._endJulian,this._startJulian))}this._makeTics();let n=document.createEvent("Event");n.initEvent("setzoom",!0,!0),n.startJulian=this._startJulian,n.endJulian=this._endJulian,n.epochJulian=this._epochJulian,n.totalSpan=this._timeBarSecondsSpan,n.mainTicSpan=this._mainTicSpan,this._topDiv.dispatchEvent(n)};wl.prototype.zoomFrom=function(e){let t=K.secondsDifference(this._scrubJulian,this._startJulian);e>1||t<0||t>this._timeBarSecondsSpan?t=this._timeBarSecondsSpan*.5:t+=t-this._timeBarSecondsSpan*.5;let n=this._timeBarSecondsSpan-t;this.zoomTo(K.addSeconds(this._startJulian,t-t*e,new K),K.addSeconds(this._endJulian,n*e-n,new K))};function e$(e){return e<10?`0${e.toString()}`:e.toString()}wl.prototype.makeLabel=function(e){let t=K.toGregorianDate(e),n=t.millisecond,i=" UTC";if(n>0&&this._timeBarSecondsSpan<3600){for(i=Math.floor(n).toString();i.length<3;)i=`0${i}`;i=`.${i}`}return`${wDt[t.month-1]} ${t.day} ${t.year} ${e$(t.hour)}:${e$(t.minute)}:${e$(t.second)}${i}`};wl.prototype.smallestTicInPixels=7;wl.prototype._makeTics=function(){let e=this._timeBarEle,t=K.secondsDifference(this._scrubJulian,this._startJulian),n=Math.round(t*this._topDiv.clientWidth/this._timeBarSecondsSpan),i=n-8,o,r=this;this._needleEle.style.left=`${n.toString()}px`;let s="",a=.01,c=31536e6,u=1e-10,f=0,h=this._timeBarSecondsSpan;h<a?(h=a,this._timeBarSecondsSpan=a,this._endJulian=K.addSeconds(this._startJulian,a,new K)):h>c&&(h=c,this._timeBarSecondsSpan=c,this._endJulian=K.addSeconds(this._startJulian,c,new K));let A=this._timeBarEle.clientWidth;A<10&&(A=10);let g=this._startJulian,m=Math.min(h/A*1e-5,.4),_,y=K.toGregorianDate(g);h>31536e4?_=K.fromDate(new Date(Date.UTC(Math.floor(y.year/100)*100,0))):h>31536e3?_=K.fromDate(new Date(Date.UTC(Math.floor(y.year/10)*10,0))):h>86400?_=K.fromDate(new Date(Date.UTC(y.year,0))):_=K.fromDate(new Date(Date.UTC(y.year,y.month,y.day)));let C=K.secondsDifference(this._startJulian,K.addSeconds(_,m,new K)),E=C+h;this._epochJulian=_;function I(F){return Math.floor(C/F)*F}function b(F,H){return Math.ceil(F/H+.5)*H}function S(F){return(F-C)/h}function B(F,H){return F-H*Math.round(F/H)}this._rulerEle.innerHTML=this.makeLabel(K.addSeconds(this._endJulian,-a,new K));let v=this._rulerEle.offsetWidth+20;v<30&&(v=180);let P=f;f-=u;let N={startTime:C,startJulian:g,epochJulian:_,duration:h,timeBarWidth:A,getAlpha:S};this._highlightRanges.forEach(function(F){s+=F.render(N)});let L=0,p=0,x=0,T=v/A;T>1&&(T=1),T*=this._timeBarSecondsSpan;let w=-1,M=-1,O=iC.length,U;for(U=0;U<O;++U){let F=iC[U];if(++w,L=F,F>T&&F>f)break;M<0&&A*(F/this._timeBarSecondsSpan)>=this.smallestTicInPixels&&(M=w)}if(w>0){for(;w>0;)if(--w,Math.abs(B(L,iC[w]))<1e-5){iC[w]>=f&&(p=iC[w]);break}if(M>=0)for(;M<w;){if(Math.abs(B(p,iC[M]))<1e-5&&iC[M]>=f){x=iC[M];break}++M}}f=P,f>u&&x<1e-5&&Math.abs(f-L)>u&&(x=f,f<=L+u&&(p=0));let Q=-999999,z;if(A*(x/this._timeBarSecondsSpan)>=3)for(o=I(x);o<=E;o=b(o,x))s+=`<span class="cesium-timeline-ticTiny" style="left: ${Math.round(A*S(o)).toString()}px;"></span>`;if(A*(p/this._timeBarSecondsSpan)>=3)for(o=I(p);o<=E;o=b(o,p))s+=`<span class="cesium-timeline-ticSub" style="left: ${Math.round(A*S(o)).toString()}px;"></span>`;if(A*(L/this._timeBarSecondsSpan)>=2){this._mainTicSpan=L,E+=L,o=I(L);let F=K.computeTaiMinusUtc(_);for(;o<=E;){let H=K.addSeconds(g,o-C,new K);if(L>2.1){let $=K.computeTaiMinusUtc(H);Math.abs($-F)>.1&&(o+=$-F,H=K.addSeconds(g,o-C,new K))}let W=Math.round(A*S(o)),Z=this.makeLabel(H);this._rulerEle.innerHTML=Z,z=this._rulerEle.offsetWidth,z<10&&(z=v);let Y=W-(z/2-1);Y>Q?(Q=Y+z+5,s+=`<span class="cesium-timeline-ticMain" style="left: ${W.toString()}px;"></span><span class="cesium-timeline-ticLabel" style="left: ${Y.toString()}px;">${Z}</span>`):s+=`<span class="cesium-timeline-ticSub" style="left: ${W.toString()}px;"></span>`,o=b(o,L)}}else this._mainTicSpan=-1;s+=`<span class="cesium-timeline-icon16" style="left:${i}px;bottom:0;background-position: 0 0;"></span>`,e.innerHTML=s,this._scrubElement=e.lastChild,this._context.clearRect(0,0,this._trackListEle.width,this._trackListEle.height),N.y=0,this._trackList.forEach(function(F){F.render(r._context,N),N.y+=F.height})};wl.prototype.updateFromClock=function(){this._scrubJulian=this._clock.currentTime;let e=this._scrubElement;if(l(this._scrubElement)){let t=K.secondsDifference(this._scrubJulian,this._startJulian),n=Math.round(t*this._topDiv.clientWidth/this._timeBarSecondsSpan);this._lastXPos!==n&&(this._lastXPos=n,e.style.left=`${n-8}px`,this._needleEle.style.left=`${n}px`)}l(this._timelineDragLocation)&&(this._setTimeBarTime(this._timelineDragLocation,this._timelineDragLocation*this._timeBarSecondsSpan/this._topDiv.clientWidth),this.zoomTo(K.addSeconds(this._startJulian,this._timelineDrag,new K),K.addSeconds(this._endJulian,this._timelineDrag,new K)))};wl.prototype._setTimeBarTime=function(e,t){if(e=Math.round(e),this._scrubJulian=K.addSeconds(this._startJulian,t,new K),this._scrubElement){let i=e-8;this._scrubElement.style.left=`${i.toString()}px`,this._needleEle.style.left=`${e.toString()}px`}let n=document.createEvent("Event");n.initEvent("settime",!0,!0),n.clientX=e,n.timeSeconds=t,n.timeJulian=this._scrubJulian,n.clock=this._clock,this._topDiv.dispatchEvent(n)};function BDt(e){return function(t){e._mouseMode!==Bd.touchOnly&&(t.button===0?(e._mouseMode=Bd.scrub,e._scrubElement&&(e._scrubElement.style.backgroundPosition="-16px 0"),e._onMouseMove(t)):(e._mouseX=t.clientX,t.button===2?e._mouseMode=Bd.zoom:e._mouseMode=Bd.slide)),t.preventDefault()}}function DDt(e){return function(t){e._mouseMode=Bd.none,e._scrubElement&&(e._scrubElement.style.backgroundPosition="0 0"),e._timelineDrag=0,e._timelineDragLocation=void 0}}function vDt(e){return function(t){let n;if(e._mouseMode===Bd.scrub){t.preventDefault();let i=t.clientX-e._topDiv.getBoundingClientRect().left;i<0?(e._timelineDragLocation=0,e._timelineDrag=-.01*e._timeBarSecondsSpan):i>e._topDiv.clientWidth?(e._timelineDragLocation=e._topDiv.clientWidth,e._timelineDrag=.01*e._timeBarSecondsSpan):(e._timelineDragLocation=void 0,e._setTimeBarTime(i,i*e._timeBarSecondsSpan/e._topDiv.clientWidth))}else if(e._mouseMode===Bd.slide){if(n=e._mouseX-t.clientX,e._mouseX=t.clientX,n!==0){let i=n*e._timeBarSecondsSpan/e._topDiv.clientWidth;e.zoomTo(K.addSeconds(e._startJulian,i,new K),K.addSeconds(e._endJulian,i,new K))}}else e._mouseMode===Bd.zoom&&(n=e._mouseX-t.clientX,e._mouseX=t.clientX,n!==0&&e.zoomFrom(Math.pow(1.01,n)))}}function PDt(e){return function(t){let n=t.wheelDeltaY||t.wheelDelta||-t.detail;$Z=Math.max(Math.min(Math.abs(n),$Z),1),n/=$Z,e.zoomFrom(Math.pow(1.05,-n))}}function RDt(e){return function(t){let n=t.touches.length,i,o,r=e._topDiv.getBoundingClientRect().left;t.preventDefault(),e._mouseMode=Bd.touchOnly,n===1?(i=K.secondsDifference(e._scrubJulian,e._startJulian),o=Math.round(i*e._topDiv.clientWidth/e._timeBarSecondsSpan+r),Math.abs(t.touches[0].clientX-o)<50?(e._touchMode=Sl.scrub,e._scrubElement&&(e._scrubElement.style.backgroundPosition=n===1?"-16px 0":"0 0")):(e._touchMode=Sl.singleTap,e._touchState.centerX=t.touches[0].clientX-r)):n===2?(e._touchMode=Sl.slideZoom,e._touchState.centerX=(t.touches[0].clientX+t.touches[1].clientX)*.5-r,e._touchState.spanX=Math.abs(t.touches[0].clientX-t.touches[1].clientX)):e._touchMode=Sl.ignore}}function MDt(e){return function(t){let n=t.touches.length,i=e._topDiv.getBoundingClientRect().left;e._touchMode===Sl.singleTap?(e._touchMode=Sl.scrub,e._onTouchMove(t)):e._touchMode===Sl.scrub&&e._onTouchMove(t),e._mouseMode=Bd.touchOnly,n!==1?e._touchMode=n>0?Sl.ignore:Sl.none:e._touchMode===Sl.slideZoom&&(e._touchState.centerX=t.touches[0].clientX-i),e._scrubElement&&(e._scrubElement.style.backgroundPosition="0 0")}}function NDt(e){return function(t){let n,i,o,r,s,a,c=1,u=e._topDiv.getBoundingClientRect().left;e._touchMode===Sl.singleTap&&(e._touchMode=Sl.slideZoom),e._mouseMode=Bd.touchOnly,e._touchMode===Sl.scrub?(t.preventDefault(),t.changedTouches.length===1&&(i=t.changedTouches[0].clientX-u,i>=0&&i<=e._topDiv.clientWidth&&e._setTimeBarTime(i,i*e._timeBarSecondsSpan/e._topDiv.clientWidth))):e._touchMode===Sl.slideZoom&&(o=t.touches.length,o===2?(r=(t.touches[0].clientX+t.touches[1].clientX)*.5-u,s=Math.abs(t.touches[0].clientX-t.touches[1].clientX)):o===1&&(r=t.touches[0].clientX-u,s=0),l(r)&&(s>0&&e._touchState.spanX>0?(c=e._touchState.spanX/s,a=K.addSeconds(e._startJulian,(e._touchState.centerX*e._timeBarSecondsSpan-r*e._timeBarSecondsSpan*c)/e._topDiv.clientWidth,new K)):(n=e._touchState.centerX-r,a=K.addSeconds(e._startJulian,n*e._timeBarSecondsSpan/e._topDiv.clientWidth,new K)),e.zoomTo(a,K.addSeconds(a,e._timeBarSecondsSpan*c,new K)),e._touchState.centerX=r,e._touchState.spanX=s))}}wl.prototype.resize=function(){let e=this.container.clientWidth,t=this.container.clientHeight;if(e===this._lastWidth&&t===this._lastHeight)return;this._trackContainer.style.height=`${t}px`;let n=1;this._trackList.forEach(function(i){n+=i.height}),this._trackListEle.style.height=`${n.toString()}px`,this._trackListEle.width=this._trackListEle.clientWidth,this._trackListEle.height=n,this._makeTics(),this._lastXPos=void 0,this._lastWidth=e,this._lastHeight=t};var p5=wl;var SSe=Es(TSe(),1);function FDt(e){let t=!1,n=window.screen;return l(n)&&(l(n.lockOrientation)?t=n.lockOrientation(e):l(n.mozLockOrientation)?t=n.mozLockOrientation(e):l(n.msLockOrientation)?t=n.msLockOrientation(e):l(n.orientation&&n.orientation.lock)&&(t=n.orientation.lock(e))),t}function wSe(){let e=window.screen;l(e)&&(l(e.unlockOrientation)?e.unlockOrientation():l(e.mozUnlockOrientation)?e.mozUnlockOrientation():l(e.msUnlockOrientation)?e.msUnlockOrientation():l(e.orientation&&e.orientation.unlock)&&e.orientation.unlock())}function QDt(e,t,n,i){i()||(n()?(t.useWebVR=!1,e._locked&&(wSe(),e._locked=!1),e._noSleep.disable(),Hr.exitFullscreen(),n(!1)):(Hr.fullscreen||Hr.requestFullscreen(e._vrElement),e._noSleep.enable(),e._locked||(e._locked=FDt("landscape")),t.useWebVR=!0,n(!0)))}function g5(e,t){let n=this,i=xe.observable(Hr.enabled),o=xe.observable(!1);this.isVRMode=void 0,xe.defineProperty(this,"isVRMode",{get:function(){return o()}}),this.isVREnabled=void 0,xe.defineProperty(this,"isVREnabled",{get:function(){return i()},set:function(s){i(s&&Hr.enabled)}}),this.tooltip=void 0,xe.defineProperty(this,"tooltip",function(){return i()?o()?"Exit VR mode":"Enter VR mode":"VR mode is unavailable"});let r=xe.observable(!1);this._isOrthographic=void 0,xe.defineProperty(this,"_isOrthographic",{get:function(){return r()}}),this._eventHelper=new Lr,this._eventHelper.add(e.preRender,function(){r(e.camera.frustum instanceof An)}),this._locked=!1,this._noSleep=new SSe.default,this._command=Mn(function(){QDt(n,e,o,r)},xe.getObservable(this,"isVREnabled")),this._vrElement=Gn(t)??document.body,this._callback=function(){!Hr.fullscreen&&o()&&(e.useWebVR=!1,n._locked&&(wSe(),n._locked=!1),n._noSleep.disable(),o(!1))},document.addEventListener(Hr.changeEventName,this._callback)}Object.defineProperties(g5.prototype,{vrElement:{get:function(){return this._vrElement},set:function(e){this._vrElement=e}},command:{get:function(){return this._command}}});g5.prototype.isDestroyed=function(){return!1};g5.prototype.destroy=function(){this._eventHelper.removeAll(),document.removeEventListener(Hr.changeEventName,this._callback),ue(this)};var _5=g5;var kDt="M 5.3125 6.375 C 4.008126 6.375 2.96875 7.4141499 2.96875 8.71875 L 2.96875 19.5 C 2.96875 20.8043 4.008126 21.875 5.3125 21.875 L 13.65625 21.875 C 13.71832 20.0547 14.845166 18.59375 16.21875 18.59375 C 17.592088 18.59375 18.71881 20.0552 18.78125 21.875 L 27.09375 21.875 C 28.398125 21.875 29.4375 20.8043 29.4375 19.5 L 29.4375 8.71875 C 29.4375 7.4141499 28.398125 6.375 27.09375 6.375 L 5.3125 6.375 z M 9.625 10.4375 C 11.55989 10.4375 13.125 12.03385 13.125 13.96875 C 13.125 15.90365 11.55989 17.46875 9.625 17.46875 C 7.69011 17.46875 6.125 15.90365 6.125 13.96875 C 6.125 12.03385 7.69011 10.4375 9.625 10.4375 z M 22.46875 10.4375 C 24.40364 10.4375 25.96875 12.03385 25.96875 13.96875 C 25.96875 15.90365 24.40364 17.46875 22.46875 17.46875 C 20.53386 17.46875 18.96875 15.90365 18.96875 13.96875 C 18.96875 12.03385 20.53386 10.4375 22.46875 10.4375 z",UDt="M 25.770585,2.4552065 C 15.72282,13.962707 10.699956,19.704407 8.1768352,22.580207 c -1.261561,1.4379 -1.902282,2.1427 -2.21875,2.5 -0.141624,0.1599 -0.208984,0.2355 -0.25,0.2813 l 0.6875,0.75 c 10e-5,-10e-5 0.679191,0.727 0.6875,0.7187 0.01662,-0.016 0.02451,-0.024 0.03125,-0.031 0.01348,-0.014 0.04013,-0.038 0.0625,-0.062 0.04474,-0.05 0.120921,-0.1315 0.28125,-0.3126 0.320657,-0.3619 0.956139,-1.0921 2.2187499,-2.5312 2.5252219,-2.8781 7.5454589,-8.6169 17.5937499,-20.1250005 l -1.5,-1.3125 z m -20.5624998,3.9063 c -1.304375,0 -2.34375,1.0391 -2.34375,2.3437 l 0,10.8125005 c 0,1.3043 1.039375,2.375 2.34375,2.375 l 2.25,0 c 1.9518039,-2.2246 7.4710958,-8.5584 13.5624998,-15.5312005 l -15.8124998,0 z m 21.1249998,0 c -1.855467,2.1245 -2.114296,2.4005 -3.59375,4.0936995 1.767282,0.1815 3.15625,1.685301 3.15625,3.500001 0,1.9349 -1.56511,3.5 -3.5,3.5 -1.658043,0 -3.043426,-1.1411 -3.40625,-2.6875 -1.089617,1.2461 -2.647139,2.9988 -3.46875,3.9375 0.191501,-0.062 0.388502,-0.094 0.59375,-0.094 1.373338,0 2.50006,1.4614 2.5625,3.2812 l 8.3125,0 c 1.304375,0 2.34375,-1.0707 2.34375,-2.375 l 0,-10.8125005 c 0,-1.3046 -1.039375,-2.3437 -2.34375,-2.3437 l -0.65625,0 z M 9.5518351,10.423906 c 1.9348899,0 3.4999999,1.596401 3.4999999,3.531301 0,1.9349 -1.56511,3.5 -3.4999999,3.5 -1.9348899,0 -3.4999999,-1.5651 -3.4999999,-3.5 0,-1.9349 1.56511,-3.531301 3.4999999,-3.531301 z m 4.2187499,10.312601 c -0.206517,0.2356 -0.844218,0.9428 -1.03125,1.1562 l 0.8125,0 c 0.01392,-0.4081 0.107026,-0.7968 0.21875,-1.1562 z";function y5(e,t,n){e=Gn(e);let i=new _5(t,n);i._exitVRPath=UDt,i._enterVRPath=kDt;let o=document.createElement("button");o.type="button",o.className="cesium-button cesium-vrButton",o.setAttribute("data-bind",'css: { "cesium-button-disabled" : _isOrthographic }, attr: { title: tooltip },click: command,enable: isVREnabled,cesiumSvgPath: { path: isVRMode ? _exitVRPath : _enterVRPath, width: 32, height: 32 }'),e.appendChild(o),xe.applyBindings(i,o),this._container=e,this._viewModel=i,this._element=o}Object.defineProperties(y5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});y5.prototype.isDestroyed=function(){return!1};y5.prototype.destroy=function(){return this._viewModel.destroy(),xe.cleanNode(this._element),this._container.removeChild(this._element),ue(this)};var C5=y5;var BSe=new le;function PSe(e){let t=e.clock;t.currentTime=e.timeJulian,t.shouldAnimate=!1}function GDt(e){let t=e.getPropertyIds(),n="";return t.forEach(function(i){let o=e.getProperty(i);l(o)&&(n+=`<tr><th>${i}</th><td>${o}</td></tr>`)}),n.length>0&&(n=`<table class="cesium-infoBox-defaultTable"><tbody>${n}</tbody></table>`),n}function zDt(e){let t,n=[],i=e.getPropertyIds();for(t=0;t<i.length;t++){let r=i[t];/^name$/i.test(r)?n[0]=e.getProperty(r):/name/i.test(r)?n[1]=e.getProperty(r):/^title$/i.test(r)?n[2]=e.getProperty(r):/^(id|identifier)$/i.test(r)?n[3]=e.getProperty(r):/element/i.test(r)?n[4]=e.getProperty(r):/(id|identifier)$/i.test(r)&&(n[5]=e.getProperty(r))}let o=n.length;for(t=0;t<o;t++){let r=n[t];if(l(r)&&r!=="")return r}return"Unnamed Feature"}function DSe(e,t){let n=e.scene.pick(t.position);if(l(n)){let i=n.id??n.primitive.id;if(i instanceof _r)return i;if(n instanceof Sa)return new _r({name:zDt(n),description:GDt(n),feature:n})}if(l(e.scene.globe))return WDt(e,t.position)}var VDt=new K;function o$(e,t){if(l(t)){let n=t.clock;if(l(n)&&l(e)){let i=n.startTime,o=n.stopTime;K.equals(i,o)&&(o=K.addSeconds(i,D.EPSILON2,VDt)),e.updateFromClock(),e.zoomTo(i,o)}}}var HDt=new d;function WDt(e,t){let n=e.scene,i=n.camera.getPickRay(t),o=n.imageryLayers.pickImageryLayerFeatures(i,n);if(!l(o))return;let r=new _r({id:"Loading...",description:"Loading feature information..."});return o.then(function(s){if(e.selectedEntity!==r)return;if(!l(s)||s.length===0){e.selectedEntity=vSe();return}let a=s[0],c=new _r({id:a.name,description:a.description});if(l(a.position)){let u=e.scene.ellipsoid.cartographicToCartesian(a.position,HDt);c.position=new Ol(u)}e.selectedEntity=c},function(){e.selectedEntity===r&&(e.selectedEntity=vSe())}),r}function vSe(){return new _r({id:"None",description:"No features found."})}function jDt(e,t){let n=e._geocoder,i=e._homeButton,o=e._sceneModePicker,r=e._projectionPicker,s=e._baseLayerPicker,a=e._animation,c=e._timeline,u=e._fullscreenButton,f=e._infoBox,h=e._selectionIndicator,A=t?"hidden":"visible";if(l(n)&&(n.container.style.visibility=A),l(i)&&(i.container.style.visibility=A),l(o)&&(o.container.style.visibility=A),l(r)&&(r.container.style.visibility=A),l(s)&&(s.container.style.visibility=A),l(a)&&(a.container.style.visibility=A),l(c)&&(c.container.style.visibility=A),l(u)&&u.viewModel.isFullscreenEnabled&&(u.container.style.visibility=A),l(f)&&(f.container.style.visibility=A),l(h)&&(h.container.style.visibility=A),e._container){let g=t||!l(u)?0:u.container.clientWidth;e._vrButton.container.style.right=`${g}px`,e.forceResize()}}function oo(e,t){e=Gn(e),t=t??V.EMPTY_OBJECT;let n=(!l(t.globe)||t.globe!==!1)&&(!l(t.baseLayerPicker)||t.baseLayerPicker!==!1),i=this,o=document.createElement("div");o.className="cesium-viewer",e.appendChild(o);let r=document.createElement("div");r.className="cesium-viewer-cesiumWidgetContainer",o.appendChild(r);let s=document.createElement("div");s.className="cesium-viewer-bottom",o.appendChild(s);let a=t.scene3DOnly??!1,c,u,f=!1;l(t.clockViewModel)?(u=t.clockViewModel,c=u.clock):(c=new Vm,u=new pH(c),f=!0);let h=new b4(r,{baseLayer:n&&l(t.selectedImageryProviderViewModel)||l(t.baseLayer)||l(t.imageryProvider)?!1:void 0,clock:c,shouldAnimate:t.shouldAnimate,skyBox:t.skyBox,skyAtmosphere:t.skyAtmosphere,sceneMode:t.sceneMode,ellipsoid:t.ellipsoid,mapProjection:t.mapProjection,globe:t.globe,orderIndependentTranslucency:t.orderIndependentTranslucency,automaticallyTrackDataSourceClocks:t.automaticallyTrackDataSourceClocks,contextOptions:t.contextOptions,useDefaultRenderLoop:t.useDefaultRenderLoop,targetFrameRate:t.targetFrameRate,showRenderLoopErrors:t.showRenderLoopErrors,useBrowserRecommendedResolution:t.useBrowserRecommendedResolution,creditContainer:l(t.creditContainer)?t.creditContainer:s,creditViewport:t.creditViewport,dataSources:t.dataSources,scene3DOnly:a,shadows:t.shadows,terrainShadows:t.terrainShadows,mapMode2D:t.mapMode2D,blurActiveElementOnCanvasFocus:t.blurActiveElementOnCanvasFocus,requestRenderMode:t.requestRenderMode,maximumRenderTimeChange:t.maximumRenderTimeChange,depthPlaneEllipsoidOffset:t.depthPlaneEllipsoidOffset,msaaSamples:t.msaaSamples}),A=h.scene,g=new Lr;g.add(c.onTick,oo.prototype._onTick,this);let m;if(!l(t.selectionIndicator)||t.selectionIndicator!==!1){let H=document.createElement("div");H.className="cesium-viewer-selectionIndicatorContainer",o.appendChild(H),m=new h5(H,A)}let _;if(!l(t.infoBox)||t.infoBox!==!1){let H=document.createElement("div");H.className="cesium-viewer-infoBoxContainer",o.appendChild(H),_=new KH(H);let W=_.viewModel;g.add(W.cameraClicked,oo.prototype._onInfoBoxCameraClicked,this),g.add(W.closeClicked,oo.prototype._onInfoBoxClockClicked,this)}let y=document.createElement("div");y.className="cesium-viewer-toolbar",o.appendChild(y);let C;if(!l(t.geocoder)||t.geocoder!==!1){let H=document.createElement("div");H.className="cesium-viewer-geocoderContainer",y.appendChild(H);let W;typeof t.geocoder=="string"?W=[new yS({scene:A,geocodeProviderType:t.geocoder})]:l(t.geocoder)&&typeof t.geocoder!="boolean"&&(W=Array.isArray(t.geocoder)?t.geocoder:[t.geocoder]),C=new GH({container:H,geocoderServices:W,scene:A}),g.add(C.viewModel.search.beforeExecute,oo.prototype._clearObjects,this)}let E;(!l(t.homeButton)||t.homeButton!==!1)&&(E=new HH(y,A),l(C)&&g.add(E.viewModel.command.afterExecute,function(){let H=C.viewModel;H.searchText="",H.isSearchInProgress&&H.search()}),g.add(E.viewModel.command.beforeExecute,oo.prototype._clearTrackedObject,this));let I;!a&&(!l(t.sceneModePicker)||t.sceneModePicker!==!1)&&(I=new l5(y,A));let b;t.projectionPicker&&(b=new r5(y,A));let S,B;if(n){let H=t.imageryProviderViewModels??SH(),W=t.terrainProviderViewModels??wH();S=new TH(y,{globe:A.globe,imageryProviderViewModels:H,selectedImageryProviderViewModel:t.selectedImageryProviderViewModel,terrainProviderViewModels:W,selectedTerrainProviderViewModel:t.selectedTerrainProviderViewModel}),B=y.getElementsByClassName("cesium-baseLayerPicker-dropDown")[0]}l(t.baseLayer)&&t.baseLayer!==!1&&(n&&(S.viewModel.selectedImagery=void 0),A.imageryLayers.removeAll(),A.imageryLayers.add(t.baseLayer)),l(t.terrainProvider)&&(n&&(S.viewModel.selectedTerrain=void 0),A.terrainProvider=t.terrainProvider),l(t.terrain)&&(n&&(A.globe.depthTestAgainstTerrain=!0),A.setTerrain(t.terrain));let v;if(!l(t.navigationHelpButton)||t.navigationHelpButton!==!1){let H=!0;try{if(l(window.localStorage)){let W=window.localStorage.getItem("cesium-hasSeenNavHelp");l(W)&&W?H=!1:window.localStorage.setItem("cesium-hasSeenNavHelp","true")}}catch{}v=new ZH({container:y,instructionsInitiallyVisible:t.navigationInstructionsInitiallyVisible??H})}let P;if(!l(t.animation)||t.animation!==!1){let H=document.createElement("div");H.className="cesium-viewer-animationContainer",o.appendChild(H),P=new EH(H,new IH(u))}let N;if(!l(t.timeline)||t.timeline!==!1){let H=document.createElement("div");H.className="cesium-viewer-timelineContainer",o.appendChild(H),N=new p5(H,c),N.addEventListener("settime",PSe,!1),N.zoomTo(c.startTime,c.stopTime)}let L,p,x;(!l(t.fullscreenButton)||t.fullscreenButton!==!1)&&(x=document.createElement("div"),x.className="cesium-viewer-fullscreenContainer",o.appendChild(x),L=new QH(x,t.fullscreenElement),p=fc(L.viewModel,"isFullscreenEnabled",function(H){x.style.display=H?"block":"none",l(N)&&(N.container.style.right=`${x.clientWidth}px`,N.resize())}));let T,w,M;if(t.vrButton){let H=document.createElement("div");H.className="cesium-viewer-vrContainer",o.appendChild(H),T=new C5(H,A,t.fullScreenElement),w=fc(T.viewModel,"isVREnabled",function(W){H.style.display=W?"block":"none",l(L)&&(H.style.right=`${x.clientWidth}px`),l(N)&&(N.container.style.right=`${H.clientWidth}px`,N.resize())}),M=fc(T.viewModel,"isVRMode",function(W){jDt(i,W)})}this._baseLayerPickerDropDown=B,this._fullscreenSubscription=p,this._vrSubscription=w,this._vrModeSubscription=M,this._dataSourceChangedListeners={},this._container=e,this._bottomContainer=s,this._element=o,this._cesiumWidget=h,this._selectionIndicator=m,this._infoBox=_,this._clockViewModel=u,this._destroyClockViewModel=f,this._toolbar=y,this._homeButton=E,this._sceneModePicker=I,this._projectionPicker=b,this._baseLayerPicker=S,this._navigationHelpButton=v,this._animation=P,this._timeline=N,this._fullscreenButton=L,this._vrButton=T,this._geocoder=C,this._eventHelper=g,this._lastWidth=0,this._lastHeight=0,this._enableInfoOrSelection=l(_)||l(m),this._selectedEntity=void 0,this._selectedEntityChanged=new _e;let O=this._cesiumWidget.dataSources,U=this._cesiumWidget.dataSourceDisplay;g.add(O.dataSourceAdded,oo.prototype._onDataSourceAdded,this),g.add(O.dataSourceRemoved,oo.prototype._onDataSourceRemoved,this),g.add(A.postUpdate,oo.prototype.resize,this);let Q=O.length;for(let H=0;H<Q;H++)this._dataSourceAdded(O,O.get(H));this._dataSourceAdded(void 0,U.defaultDataSource),g.add(O.dataSourceAdded,oo.prototype._dataSourceAdded,this),g.add(O.dataSourceRemoved,oo.prototype._dataSourceRemoved,this);function z(H){let W=DSe(i,H);l(W)?j.getValueOrUndefined(W.position,i.clock.currentTime)?i.trackedEntity=W:i.zoomTo(W):l(i.trackedEntity)&&(i.trackedEntity=void 0)}function F(H){i.selectedEntity=DSe(i,H)}h.screenSpaceEventHandler.setInputAction(F,vn.LEFT_CLICK),h.screenSpaceEventHandler.setInputAction(z,vn.LEFT_DOUBLE_CLICK),h._canAnimateUpdateCallback=this._updateCanAnimate(this)}Object.defineProperties(oo.prototype,{container:{get:function(){return this._container}},creditDisplay:{get:function(){return this._cesiumWidget.creditDisplay}},bottomContainer:{get:function(){return this._bottomContainer}},cesiumWidget:{get:function(){return this._cesiumWidget}},selectionIndicator:{get:function(){return this._selectionIndicator}},infoBox:{get:function(){return this._infoBox}},geocoder:{get:function(){return this._geocoder}},homeButton:{get:function(){return this._homeButton}},sceneModePicker:{get:function(){return this._sceneModePicker}},projectionPicker:{get:function(){return this._projectionPicker}},baseLayerPicker:{get:function(){return this._baseLayerPicker}},navigationHelpButton:{get:function(){return this._navigationHelpButton}},animation:{get:function(){return this._animation}},timeline:{get:function(){return this._timeline}},fullscreenButton:{get:function(){return this._fullscreenButton}},vrButton:{get:function(){return this._vrButton}},dataSourceDisplay:{get:function(){return this._cesiumWidget.dataSourceDisplay}},entities:{get:function(){return this._cesiumWidget.entities}},dataSources:{get:function(){return this._cesiumWidget.dataSources}},canvas:{get:function(){return this._cesiumWidget.canvas}},scene:{get:function(){return this._cesiumWidget.scene}},shadows:{get:function(){return this.scene.shadowMap.enabled},set:function(e){this.scene.shadowMap.enabled=e}},terrainShadows:{get:function(){return this.scene.globe.shadows},set:function(e){this.scene.globe.shadows=e}},shadowMap:{get:function(){return this.scene.shadowMap}},imageryLayers:{get:function(){return this.scene.imageryLayers}},terrainProvider:{get:function(){return this.scene.terrainProvider},set:function(e){this.scene.terrainProvider=e}},camera:{get:function(){return this.scene.camera}},ellipsoid:{get:function(){return this._scene.ellipsoid}},postProcessStages:{get:function(){return this.scene.postProcessStages}},clock:{get:function(){return this._clockViewModel.clock}},clockViewModel:{get:function(){return this._clockViewModel}},screenSpaceEventHandler:{get:function(){return this._cesiumWidget.screenSpaceEventHandler}},targetFrameRate:{get:function(){return this._cesiumWidget.targetFrameRate},set:function(e){this._cesiumWidget.targetFrameRate=e}},useDefaultRenderLoop:{get:function(){return this._cesiumWidget.useDefaultRenderLoop},set:function(e){this._cesiumWidget.useDefaultRenderLoop=e}},resolutionScale:{get:function(){return this._cesiumWidget.resolutionScale},set:function(e){this._cesiumWidget.resolutionScale=e}},useBrowserRecommendedResolution:{get:function(){return this._cesiumWidget.useBrowserRecommendedResolution},set:function(e){this._cesiumWidget.useBrowserRecommendedResolution=e}},allowDataSourcesToSuspendAnimation:{get:function(){return this._cesiumWidget.allowDataSourcesToSuspendAnimation},set:function(e){this._cesiumWidget.allowDataSourcesToSuspendAnimation=e}},trackedEntity:{get:function(){return this._cesiumWidget.trackedEntity},set:function(e){this._cesiumWidget.trackedEntity=e}},selectedEntity:{get:function(){return this._selectedEntity},set:function(e){if(this._selectedEntity!==e){this._selectedEntity=e;let t=l(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;l(e)?l(t)&&t.animateAppear():l(t)&&t.animateDepart(),this._selectedEntityChanged.raiseEvent(e)}}},selectedEntityChanged:{get:function(){return this._selectedEntityChanged}},trackedEntityChanged:{get:function(){return this._cesiumWidget.trackedEntityChanged}},clockTrackedDataSource:{get:function(){return this._cesiumWidget.clockTrackedDataSource},set:function(e){this._cesiumWidget.clockTrackedDataSource!==e&&(this._cesiumWidget.clockTrackedDataSource=e,o$(this._timeline,e))}}});oo.prototype.extend=function(e,t){e(this,t)};oo.prototype.resize=function(){let e=this._cesiumWidget,t=this._container,n=t.clientWidth,i=t.clientHeight,o=l(this._animation),r=l(this._timeline);if(e.resize(),n===this._lastWidth&&i===this._lastHeight)return;let s=i-125,a=this._baseLayerPickerDropDown;if(l(a)&&(a.style.maxHeight=`${s}px`),l(this._geocoder)){let m=this._geocoder.searchSuggestionsContainer;m.style.maxHeight=`${s}px`}l(this._infoBox)&&(this._infoBox.viewModel.maxHeight=s);let c=this._timeline,u,f=0,h=5,A=3,g=0;if(o&&window.getComputedStyle(this._animation.container).visibility!=="hidden"){let m=this._lastWidth;u=this._animation.container,n>900?(f=169,m<=900&&(u.style.width="169px",u.style.height="112px",this._animation.resize())):n>=600?(f=136,(m<600||m>900)&&(u.style.width="136px",u.style.height="90px",this._animation.resize())):(f=106,(m>600||m===0)&&(u.style.width="106px",u.style.height="70px",this._animation.resize())),h=f+5}if(r&&window.getComputedStyle(this._timeline.container).visibility!=="hidden"){let m=this._fullscreenButton,_=this._vrButton,y=c.container,C=y.style;A=y.clientHeight+3,C.left=`${f}px`;let E=0;l(m)&&(E+=m.container.clientWidth),l(_)&&(E+=_.container.clientWidth),C.right=`${E}px`,c.resize()}!r&&l(this._fullscreenButton)&&(g=this._fullscreenButton.container.clientWidth),this._bottomContainer.style.left=`${h}px`,this._bottomContainer.style.bottom=`${A}px`,this._bottomContainer.style.right=`${g}px`,this._lastWidth=n,this._lastHeight=i};oo.prototype.forceResize=function(){this._lastWidth=0,this.resize()};oo.prototype.render=function(){this._cesiumWidget.render()};oo.prototype.isDestroyed=function(){return!1};oo.prototype.destroy=function(){return l(this.screenSpaceEventHandler)&&!this.screenSpaceEventHandler.isDestroyed()&&(this.screenSpaceEventHandler.removeInputAction(vn.LEFT_CLICK),this.screenSpaceEventHandler.removeInputAction(vn.LEFT_DOUBLE_CLICK)),this._container.removeChild(this._element),this._element.removeChild(this._toolbar),this._eventHelper.removeAll(),l(this._geocoder)&&(this._geocoder=this._geocoder.destroy()),l(this._homeButton)&&(this._homeButton=this._homeButton.destroy()),l(this._sceneModePicker)&&(this._sceneModePicker=this._sceneModePicker.destroy()),l(this._projectionPicker)&&(this._projectionPicker=this._projectionPicker.destroy()),l(this._baseLayerPicker)&&(this._baseLayerPicker=this._baseLayerPicker.destroy()),l(this._animation)&&(this._element.removeChild(this._animation.container),this._animation=this._animation.destroy()),l(this._timeline)&&(this._timeline.removeEventListener("settime",PSe,!1),this._element.removeChild(this._timeline.container),this._timeline=this._timeline.destroy()),l(this._fullscreenButton)&&(this._fullscreenSubscription.dispose(),this._element.removeChild(this._fullscreenButton.container),this._fullscreenButton=this._fullscreenButton.destroy()),l(this._vrButton)&&(this._vrSubscription.dispose(),this._vrModeSubscription.dispose(),this._element.removeChild(this._vrButton.container),this._vrButton=this._vrButton.destroy()),l(this._infoBox)&&(this._element.removeChild(this._infoBox.container),this._infoBox=this._infoBox.destroy()),l(this._selectionIndicator)&&(this._element.removeChild(this._selectionIndicator.container),this._selectionIndicator=this._selectionIndicator.destroy()),this._destroyClockViewModel&&(this._clockViewModel=this._clockViewModel.destroy()),this._cesiumWidget=this._cesiumWidget.destroy(),ue(this)};oo.prototype._dataSourceAdded=function(e,t){t.entities.collectionChanged.addEventListener(oo.prototype._onEntityCollectionChanged,this)};oo.prototype._dataSourceRemoved=function(e,t){let n=t.entities;n.collectionChanged.removeEventListener(oo.prototype._onEntityCollectionChanged,this),l(this.selectedEntity)&&n.getById(this.selectedEntity.id)===this.selectedEntity&&(this.selectedEntity=void 0)};oo.prototype._updateCanAnimate=function(e){return function(t){e._clockViewModel.canAnimate=t}};oo.prototype._onTick=function(e){let t=e.currentTime,n,i=!1,o=this.selectedEntity,r=l(o)&&this._enableInfoOrSelection;r&&o.isShowing&&o.isAvailable(t)&&(this._cesiumWidget.dataSourceDisplay.getBoundingSphere(o,!0,BSe)!==mt.FAILED?n=BSe.center:l(o.position)&&(n=o.position.getValue(t,n)),i=l(n));let s=l(this._selectionIndicator)?this._selectionIndicator.viewModel:void 0;l(s)&&(s.position=d.clone(n,s.position),s.showSelection=r&&i,s.update());let a=l(this._infoBox)?this._infoBox.viewModel:void 0;l(a)&&(a.showInfo=r,a.enableCamera=i,a.isCameraTracking=this.trackedEntity===this.selectedEntity,r?(a.titleText=o.name??o.id,a.description=j.getValueOrDefault(o.description,t,"")):(a.titleText="",a.description=""))};oo.prototype._onEntityCollectionChanged=function(e,t,n){let i=n.length;for(let o=0;o<i;o++){let r=n[o];this.selectedEntity===r&&(this.selectedEntity=void 0)}};oo.prototype._onInfoBoxCameraClicked=function(e){if(e.isCameraTracking&&this.trackedEntity===this.selectedEntity)this.trackedEntity=void 0;else{let n=this.selectedEntity.position;l(n)?this.trackedEntity=this.selectedEntity:this.zoomTo(this.selectedEntity)}};oo.prototype._clearTrackedObject=function(){this.trackedEntity=void 0};oo.prototype._onInfoBoxClockClicked=function(e){this.selectedEntity=void 0};oo.prototype._clearObjects=function(){this.trackedEntity=void 0,this.selectedEntity=void 0};oo.prototype._onDataSourceChanged=function(e){this.clockTrackedDataSource===e&&o$(this.timeline,e)};oo.prototype._onDataSourceAdded=function(e,t){this._cesiumWidget._automaticallyTrackDataSourceClocks&&t===this.clockTrackedDataSource&&o$(this._timeline,t);let n=t.entities.id,i=this._eventHelper.add(t.changedEvent,oo.prototype._onDataSourceChanged,this);this._dataSourceChangedListeners[n]=i};oo.prototype._onDataSourceRemoved=function(e,t){let n=t.entities.id;this._dataSourceChangedListeners[n](),this._dataSourceChangedListeners[n]=void 0};oo.prototype.zoomTo=function(e,t){return this._cesiumWidget.zoomTo(e,t)};oo.prototype.flyTo=function(e,t){return this._cesiumWidget.flyTo(e,t)};var RSe=oo;function YDt(e){let t=document.createElement("div");t.className="cesium-viewer-cesium3DTilesInspectorContainer",e.container.appendChild(t);let n=new PH(t,e.scene);Object.defineProperties(e,{cesium3DTilesInspector:{get:function(){return n}}})}var MSe=YDt;function qDt(e){let t=document.createElement("div");t.className="cesium-viewer-cesiumInspectorContainer",e.container.appendChild(t);let n=new NH(t,e.scene);Object.defineProperties(e,{cesiumInspector:{get:function(){return n}}})}var NSe=qDt;function KDt(e,t){t=t??V.EMPTY_OBJECT;let n=!0,i=t.flyToOnDrop??!0,o=new _e,r=t.clearOnDrop??!0,s=t.dropTarget??e.container,a=t.clampToGround??!0,c=t.proxy;s=Gn(s),Object.defineProperties(e,{dropTarget:{get:function(){return s},set:function(f){LSe(s,u),s=f,r$(s,u)}},dropEnabled:{get:function(){return n},set:function(f){f!==n&&(f?r$(s,u):LSe(s,u),n=f)}},dropError:{get:function(){return o}},clearOnDrop:{get:function(){return r},set:function(f){r=f}},flyToOnDrop:{get:function(){return i},set:function(f){i=f}},proxy:{get:function(){return c},set:function(f){c=f}},clampToGround:{get:function(){return a},set:function(f){a=f}}});function u(f){Q0(f),r&&(e.entities.removeAll(),e.dataSources.removeAll());let h=f.dataTransfer.files,A=h.length;for(let g=0;g<A;g++){let m=h[g],_=new FileReader;_.onload=XDt(e,m,c,a),_.onerror=JDt(e,m),_.readAsText(m)}}r$(s,u),e.destroy=G4(e,e.destroy,function(){e.dropEnabled=!1}),e._handleDrop=u}function Q0(e){e.stopPropagation(),e.preventDefault()}function LSe(e,t){let n=e;l(n)&&(n.removeEventListener("drop",t,!1),n.removeEventListener("dragenter",Q0,!1),n.removeEventListener("dragover",Q0,!1),n.removeEventListener("dragexit",Q0,!1))}function r$(e,t){e.addEventListener("drop",t,!1),e.addEventListener("dragenter",Q0,!1),e.addEventListener("dragover",Q0,!1),e.addEventListener("dragexit",Q0,!1)}function XDt(e,t,n,i){let o=e.scene;return function(r){let s=t.name;try{let a;if(/\.czml$/i.test(s))a=I3.load(JSON.parse(r.target.result),{sourceUri:s});else if(/\.geojson$/i.test(s)||/\.json$/i.test(s)||/\.topojson$/i.test(s))a=kE.load(JSON.parse(r.target.result),{sourceUri:s,clampToGround:i});else if(/\.(kml|kmz)$/i.test(s))a=ST.load(t,{sourceUri:s,proxy:n,camera:o.camera,canvas:o.canvas,clampToGround:i,screenOverlayContainer:e.container});else if(/\.gpx$/i.test(s))a=LU.load(t,{sourceUri:s,proxy:n});else{e.dropError.raiseEvent(e,s,`Unrecognized file: ${s}`);return}l(a)&&e.dataSources.add(a).then(function(c){e.flyToOnDrop&&e.flyTo(c)}).catch(function(c){e.dropError.raiseEvent(e,s,c)})}catch(a){e.dropError.raiseEvent(e,s,a)}}}function JDt(e,t){return function(n){e.dropError.raiseEvent(e,t.name,n.target.error)}}var OSe=KDt;function ZDt(e,t){t=t??V.EMPTY_OBJECT;let n=new t5({scene:e.scene,container:e.bottomContainer,lowFrameRateMessage:t.lowFrameRateMessage});Object.defineProperties(e,{performanceWatchdog:{get:function(){return n}}})}var FSe=ZDt;function QSe(e){let t=e.split(` +`),n;for(n=0;n<t.length&&!t[n].match(/\S/);n++);if(n===t.length)return"";let i="",o=/^\s*/,s=t[n].match(o)[0].length;for(let a=n;a<t.length;a++){let c=t[a];c.match(o)[0].length>=s&&(c=c.slice(s)),i+=`${c} +`}return i}function Dd(e){this._scene=e,this._voxelPrimitive=void 0,this._customShaderCompilationRemoveCallback=void 0,this._definedProperties=[],this._getPrimitiveFunctions=[],this._modelMatrixReady=!1;let t=this;function n(o){let{name:r,initialValue:s}=o;t._definedProperties.push(r);let a=o.setPrimitiveFunction;a===!0&&(a=function(f){t._voxelPrimitive[r]=f});let c=o.getPrimitiveFunction;c===!0&&(c=function(){t[r]=t._voxelPrimitive[r]}),l(c)&&t._getPrimitiveFunctions.push(c);let u=xe.observable();return xe.defineProperty(t,r,{get:function(){return u()},set:function(f){typeof s=="number"&&typeof f=="string"&&(f=Number(f),isNaN(f)&&(f=s)),typeof s=="boolean"&&typeof f=="number"&&(f=f===1),u(f),l(a)&&l(t._voxelPrimitive)&&(a(f),e.requestRender())}}),t[r]=s,u}function i(o,r){return function(s){let a=t._voxelPrimitive[o].clone();a[r]=s,t._voxelPrimitive[o]=a}}n({name:"inspectorVisible",initialValue:!0}),n({name:"displayVisible",initialValue:!1}),n({name:"transformVisible",initialValue:!1}),n({name:"boundsVisible",initialValue:!1}),n({name:"clippingVisible",initialValue:!1}),n({name:"shaderVisible",initialValue:!1}),n({name:"shaderString",initialValue:"",getPrimitiveFunction:function(){let o=t._voxelPrimitive.customShader.fragmentShaderText;t.shaderString=QSe(o)}}),n({name:"shaderCompilationMessage",initialValue:""}),n({name:"shaderCompilationSuccess",initialValue:!0}),n({name:"depthTest",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"show",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"disableUpdate",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"debugDraw",initialValue:!1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"jitter",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"nearestSampling",initialValue:!0,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"screenSpaceError",initialValue:4,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"stepSize",initialValue:1,setPrimitiveFunction:!0,getPrimitiveFunction:!0}),n({name:"shapeIsBox",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsBox=o===lc.BOX}}),n({name:"shapeIsEllipsoid",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsEllipsoid=o===lc.ELLIPSOID}}),n({name:"shapeIsCylinder",getPrimitiveFunction:function(){let o=t._voxelPrimitive.shape;t.shapeIsCylinder=o===lc.CYLINDER}}),n({name:"clippingBoxMaxXMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxXMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingBoxMaxXMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxXMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingBoxMaxX",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingBoxMaxX=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingBoxMinXMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinXMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingBoxMinXMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinXMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingBoxMinX",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingBoxMinX=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingBoxMaxYMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxYMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingBoxMaxYMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxYMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingBoxMaxY",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingBoxMaxY=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingBoxMinYMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinYMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingBoxMinYMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinYMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingBoxMinY",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingBoxMinY=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingBoxMaxZMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMaxZMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingBoxMaxZMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMaxZMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingBoxMaxZ",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingBoxMaxZ=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingBoxMinZMin",initialValue:0,getPrimitiveFunction:function(){t.clippingBoxMinZMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingBoxMinZMax",initialValue:1,getPrimitiveFunction:function(){t.clippingBoxMinZMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingBoxMinZ",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingBoxMinZ=t._voxelPrimitive.minClippingBounds.z}}),n({name:"clippingEllipsoidMaxLongitudeMin",initialValue:-D.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitudeMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingEllipsoidMaxLongitudeMax",initialValue:D.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitudeMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingEllipsoidMaxLongitude",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxLongitude=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingEllipsoidMinLongitudeMin",initialValue:-D.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitudeMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingEllipsoidMinLongitudeMax",initialValue:D.PI,getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitudeMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingEllipsoidMinLongitude",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingEllipsoidMinLongitude=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingEllipsoidMaxLatitudeMin",initialValue:-D.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitudeMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingEllipsoidMaxLatitudeMax",initialValue:D.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitudeMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingEllipsoidMaxLatitude",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxLatitude=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingEllipsoidMinLatitudeMin",initialValue:-D.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitudeMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingEllipsoidMinLatitudeMax",initialValue:D.PI_OVER_TWO,getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitudeMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingEllipsoidMinLatitude",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingEllipsoidMinLatitude=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingEllipsoidMaxHeightMin",initialValue:0,getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingEllipsoidMaxHeightMax",initialValue:1e5,getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingEllipsoidMaxHeight",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingEllipsoidMaxHeight=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingEllipsoidMinHeightMin",initialValue:-1e5,getPrimitiveFunction:function(){t.clippingEllipsoidMinHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingEllipsoidMinHeightMax",initialValue:0,getPrimitiveFunction:function(){t.clippingEllipsoidMinHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingEllipsoidMinHeight",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingEllipsoidMinHeight=t._voxelPrimitive.minClippingBounds.z}}),n({name:"clippingCylinderMaxRadiusMin",initialValue:0,getPrimitiveFunction:function(){t.clippingCylinderMaxRadiusMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingCylinderMaxRadiusMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMaxRadiusMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingCylinderMaxRadius",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","x"),getPrimitiveFunction:function(){t.clippingCylinderMaxRadius=t._voxelPrimitive.maxClippingBounds.x}}),n({name:"clippingCylinderMinRadiusMin",initialValue:0,getPrimitiveFunction:function(){t.clippingCylinderMinRadiusMin=t._voxelPrimitive.minBounds.x}}),n({name:"clippingCylinderMinRadiusMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMinRadiusMax=t._voxelPrimitive.maxBounds.x}}),n({name:"clippingCylinderMinRadius",initialValue:0,setPrimitiveFunction:i("minClippingBounds","x"),getPrimitiveFunction:function(){t.clippingCylinderMinRadius=t._voxelPrimitive.minClippingBounds.x}}),n({name:"clippingCylinderMaxAngleMin",initialValue:-D.PI,getPrimitiveFunction:function(){t.clippingCylinderMaxAngleMin=t._voxelPrimitive.minBounds.y}}),n({name:"clippingCylinderMaxAngleMax",initialValue:D.PI,getPrimitiveFunction:function(){t.clippingCylinderMaxAngleMax=t._voxelPrimitive.maxBounds.y}}),n({name:"clippingCylinderMaxAngle",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","y"),getPrimitiveFunction:function(){t.clippingCylinderMaxAngle=t._voxelPrimitive.maxClippingBounds.y}}),n({name:"clippingCylinderMinAngleMin",initialValue:-D.PI}),n({name:"clippingCylinderMinAngleMax",initialValue:D.PI}),n({name:"clippingCylinderMinAngle",initialValue:0,setPrimitiveFunction:i("minClippingBounds","y"),getPrimitiveFunction:function(){t.clippingCylinderMinAngle=t._voxelPrimitive.minClippingBounds.y}}),n({name:"clippingCylinderMaxHeightMin",initialValue:-1,getPrimitiveFunction:function(){t.clippingCylinderMaxHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingCylinderMaxHeightMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMaxHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingCylinderMaxHeight",initialValue:0,setPrimitiveFunction:i("maxClippingBounds","z"),getPrimitiveFunction:function(){t.clippingCylinderMaxHeight=t._voxelPrimitive.maxClippingBounds.z}}),n({name:"clippingCylinderMinHeightMin",initialValue:-1,getPrimitiveFunction:function(){t.clippingCylinderMinHeightMin=t._voxelPrimitive.minBounds.z}}),n({name:"clippingCylinderMinHeightMax",initialValue:1,getPrimitiveFunction:function(){t.clippingCylinderMinHeightMax=t._voxelPrimitive.maxBounds.z}}),n({name:"clippingCylinderMinHeight",initialValue:0,setPrimitiveFunction:i("minClippingBounds","z"),getPrimitiveFunction:function(){t.clippingCylinderMinHeight=t._voxelPrimitive.minClippingBounds.z}}),n({name:"translationX",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)},getPrimitiveFunction:function(){t.translationX=R.getTranslation(t._voxelPrimitive.modelMatrix,new d).x}}),n({name:"translationY",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)},getPrimitiveFunction:function(){t.translationY=R.getTranslation(t._voxelPrimitive.modelMatrix,new d).y}}),n({name:"translationZ",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)},getPrimitiveFunction:function(){t.translationZ=R.getTranslation(t._voxelPrimitive.modelMatrix,new d).z}}),n({name:"scaleX",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)},getPrimitiveFunction:function(){t.scaleX=R.getScale(t._voxelPrimitive.modelMatrix,new d).x}}),n({name:"scaleY",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)},getPrimitiveFunction:function(){t.scaleY=R.getScale(t._voxelPrimitive.modelMatrix,new d).y}}),n({name:"scaleZ",initialValue:1,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)},getPrimitiveFunction:function(){t.scaleZ=R.getScale(t._voxelPrimitive.modelMatrix,new d).z}}),n({name:"angleX",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)}}),n({name:"angleY",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)}}),n({name:"angleZ",initialValue:0,setPrimitiveFunction:function(){t._modelMatrixReady&&bA(t)}})}var $Dt=new d,evt=new d,tvt=new pc,nvt=new J;function bA(e){let t=d.fromElements(e.translationX,e.translationY,e.translationZ,$Dt),n=d.fromElements(e.scaleX,e.scaleY,e.scaleZ,evt),i=tvt;i.heading=e.angleX,i.pitch=e.angleY,i.roll=e.angleZ;let o=J.fromHeadingPitchRoll(i,nvt),r=J.multiplyByScale(o,n,o);e._voxelPrimitive.modelMatrix=R.fromRotationTranslation(r,t,e._voxelPrimitive.modelMatrix)}Object.defineProperties(Dd.prototype,{scene:{get:function(){return this._scene}},voxelPrimitive:{get:function(){return this._voxelPrimitive},set:function(e){if(l(this._customShaderCompilationRemoveCallback)&&this._customShaderCompilationRemoveCallback(),!l(e))return;this._voxelPrimitive=e;let t=this;t._customShaderCompilationRemoveCallback=t._voxelPrimitive.customShaderCompilationEvent.addEventListener(function(n){let i=t._voxelPrimitive.customShader.fragmentShaderText;t.shaderString=QSe(i),l(n)?(t.shaderCompilationMessage=n.message,t.shaderCompilationSuccess=!1):(t.shaderCompilationMessage="Shader compiled successfully!",t.shaderCompilationSuccess=!0)}),t._modelMatrixReady=!1;for(let n=0;n<t._getPrimitiveFunctions.length;n++)t._getPrimitiveFunctions[n]();t._modelMatrixReady=!0,bA(t)}}});Dd.prototype.toggleInspector=function(){this.inspectorVisible=!this.inspectorVisible};Dd.prototype.toggleDisplay=function(){this.displayVisible=!this.displayVisible};Dd.prototype.toggleTransform=function(){this.transformVisible=!this.transformVisible};Dd.prototype.toggleBounds=function(){this.boundsVisible=!this.boundsVisible};Dd.prototype.toggleClipping=function(){this.clippingVisible=!this.clippingVisible};Dd.prototype.toggleShader=function(){this.shaderVisible=!this.shaderVisible};Dd.prototype.compileShader=function(){l(this._voxelPrimitive)&&(this._voxelPrimitive.customShader=new eS({fragmentShaderText:this.shaderString,uniforms:this._voxelPrimitive.customShader.uniforms}))};Dd.prototype.shaderEditorKeyPress=function(e,t){if(t.keyCode===9){t.preventDefault();let n=t.target,i=n.selectionStart,o=n.selectionEnd,r=o,a=n.value.slice(i,o).split(` +`),c=a.length,u;if(t.shiftKey)for(u=0;u<c;++u)a[u][0]===" "&&(a[u][1]===" "?(a[u]=a[u].substr(2),r-=2):(a[u]=a[u].substr(1),r-=1));else for(u=0;u<c;++u)a[u]=` ${a[u]}`,r+=2;let f=a.join(` +`);n.value=n.value.slice(0,i)+f+n.value.slice(o),n.selectionStart=i!==o?i:r,n.selectionEnd=r}else t.ctrlKey&&(t.keyCode===10||t.keyCode===13)&&this.compileShader();return!0};Dd.prototype.isDestroyed=function(){return!1};Dd.prototype.destroy=function(){let e=this;return this._definedProperties.forEach(function(t){xe.getObservable(e,t).dispose()}),ue(this)};var E5=Dd;function I5(e,t){e=Gn(e);let n=document.createElement("div"),i=new E5(t);this._viewModel=i,this._container=e,this._element=n;let o=document.createElement("div");o.textContent="Voxel Inspector",o.className="cesium-cesiumInspector-button",o.setAttribute("data-bind","click: toggleInspector"),n.appendChild(o),n.className="cesium-cesiumInspector cesium-VoxelInspector",n.setAttribute("data-bind",'css: { "cesium-cesiumInspector-visible" : inspectorVisible, "cesium-cesiumInspector-hidden" : !inspectorVisible}'),e.appendChild(n);let r=document.createElement("div");r.className="cesium-cesiumInspector-dropDown",n.appendChild(r);let{createSection:s,createCheckbox:a,createRangeInput:c,createButton:u}=ff,f=s(r,"Display","displayVisible","toggleDisplay"),h=s(r,"Transform","transformVisible","toggleTransform"),A=s(r,"Clipping","clippingVisible","toggleClipping"),g=s(r,"Shader","shaderVisible","toggleShader");f.appendChild(a("Depth Test","depthTest")),f.appendChild(a("Show","show")),f.appendChild(a("Disable Update","disableUpdate")),f.appendChild(a("Debug Draw","debugDraw")),f.appendChild(a("Jitter","jitter")),f.appendChild(a("Nearest Sampling","nearestSampling")),f.appendChild(c("Screen Space Error","screenSpaceError",0,128)),f.appendChild(c("Step Size","stepSize",0,2));let m=10,_=10,y=D.PI;h.appendChild(c("Translation X","translationX",-m,+m)),h.appendChild(c("Translation Y","translationY",-m,+m)),h.appendChild(c("Translation Z","translationZ",-m,+m)),h.appendChild(c("Scale X","scaleX",0,+_)),h.appendChild(c("Scale Y","scaleY",0,+_)),h.appendChild(c("Scale Z","scaleZ",0,+_)),h.appendChild(c("Heading","angleX",-y,+y)),h.appendChild(c("Pitch","angleY",-y,+y)),h.appendChild(c("Roll","angleZ",-y,+y)),s$("Max X","Min X","Max Y","Min Y","Max Z","Min Z","clippingBoxMaxX","clippingBoxMinX","clippingBoxMaxY","clippingBoxMinY","clippingBoxMaxZ","clippingBoxMinZ","shapeIsBox",A),s$("Max Longitude","Min Longitude","Max Latitude","Min Latitude","Max Height","Min Height","clippingEllipsoidMaxLongitude","clippingEllipsoidMinLongitude","clippingEllipsoidMaxLatitude","clippingEllipsoidMinLatitude","clippingEllipsoidMaxHeight","clippingEllipsoidMinHeight","shapeIsEllipsoid",A),s$("Max Radius","Min Radius","Max Angle","Min Angle","Max Height","Min Height","clippingCylinderMaxRadius","clippingCylinderMinRadius","clippingCylinderMaxAngle","clippingCylinderMinAngle","clippingCylinderMaxHeight","clippingCylinderMinHeight","shapeIsCylinder",A);let C=document.createElement("div");g.appendChild(C);let E=document.createElement("textarea");E.setAttribute("data-bind","textInput: shaderString, event: { keydown: shaderEditorKeyPress }"),C.className="cesium-cesiumInspector-styleEditor",C.appendChild(E);let I=u("Compile (Ctrl+Enter)","compileShader");C.appendChild(I);let b=document.createElement("label");b.style.display="block",b.setAttribute("data-bind","text: shaderCompilationMessage, style: {color: shaderCompilationSuccess ? 'green' : 'red'}"),C.appendChild(b),xe.applyBindings(i,n)}Object.defineProperties(I5.prototype,{container:{get:function(){return this._container}},viewModel:{get:function(){return this._viewModel}}});I5.prototype.isDestroyed=function(){return!1};I5.prototype.destroy=function(){return xe.cleanNode(this._element),this._container.removeChild(this._element),this.viewModel.destroy(),ue(this)};function s$(e,t,n,i,o,r,s,a,c,u,f,h,A,g){let m=ff.createRangeInputWithDynamicMinMax,_=g.appendChild(document.createElement("div"));_.setAttribute("data-bind",`if: ${A}`),_.appendChild(m(e,s)),_.appendChild(m(t,a)),_.appendChild(m(n,c)),_.appendChild(m(i,u)),_.appendChild(m(o,f)),_.appendChild(m(r,h))}var x5=I5;function ivt(e){let t=document.createElement("div");t.className="cesium-viewer-voxelInspectorContainer",e.container.appendChild(t);let n=new x5(t,e.scene);Object.defineProperties(e,{voxelInspector:{get:function(){return n}}})}var kSe=ivt;globalThis.CESIUM_VERSION="1.132";var KAo="1.132";export{np as AlphaMode,_2 as AlphaPipelineStage,gF as AnchorPointDirect,_F as AnchorPointIndirect,EH as Animation,IH as AnimationViewModel,go as Appearance,wi as ApproximateTerrainHeights,Uxe as ArcGISTiledElevationTerrainProvider,vm as ArcGisBaseMapType,__ as ArcGisMapServerImageryProvider,kf as ArcGisMapService,un as ArcType,cl as ArticulationStageType,Pt as AssociativeArray,lx as Atmosphere,JF as AtmospherePipelineStage,Fn as AttributeCompression,Ht as AttributeType,g8 as AutoExposure,bg as AutomaticUniforms,Ao as Axis,CC as AxisAlignedBoundingBox,PF as B3dmLoader,vF as B3dmParser,TH as BaseLayerPicker,xH as BaseLayerPickerViewModel,yI as BatchTable,VI as BatchTableHierarchy,Gl as BatchTexture,y2 as BatchTexturePipelineStage,xo as Billboard,jf as BillboardCollection,jc as BillboardGraphics,Ds as BillboardLoadState,w_ as BillboardTexture,sM as BillboardVisualizer,zxe as BingMapsGeocoderService,Q2 as BingMapsImageryProvider,RB as BingMapsStyle,Cc as BlendEquation,Uo as BlendFunction,Vo as BlendOption,pn as BlendingState,Xe as BoundingRectangle,le as BoundingSphere,mt as BoundingSphereState,nx as BoundingVolumeSemantics,kbe as BoxEmitter,yc as BoxGeometry,rO as BoxGeometryUpdater,wI as BoxGraphics,$h as BoxOutlineGeometry,uV as BrdfLutGenerator,Et as Buffer,jI as BufferLoader,Qe as BufferUsage,x2 as CPUStylingPipelineStage,sO as CallbackPositionProperty,fm as CallbackProperty,Eo as Camera,I8 as CameraEventAggregator,$i as CameraEventType,fV as CameraFlightPath,k as Cartesian2,d as Cartesian3,se as Cartesian4,GB as CartesianRectangle,Ae as Cartographic,Vxe as CartographicGeocoderService,Wxe as CatmullRomSpline,zI as Cesium3DContentGroup,ah as Cesium3DTile,Fg as Cesium3DTileBatchTable,Su as Cesium3DTileColorBlendMode,Ube as Cesium3DTileContent,Xx as Cesium3DTileContentFactory,cr as Cesium3DTileContentState,ua as Cesium3DTileContentType,Sa as Cesium3DTileFeature,Sm as Cesium3DTileFeatureTable,rh as Cesium3DTileOptimizationHint,Lk as Cesium3DTileOptimizations,Zo as Cesium3DTilePass,Lh as Cesium3DTilePassState,B_ as Cesium3DTilePointFeature,rr as Cesium3DTileRefine,TS as Cesium3DTileStyle,Uk as Cesium3DTileStyleEngine,PH as Cesium3DTilesInspector,DH as Cesium3DTilesInspectorViewModel,zbe as Cesium3DTilesVoxelProvider,qs as Cesium3DTileset,zk as Cesium3DTilesetBaseTraversal,Fk as Cesium3DTilesetCache,NI as Cesium3DTilesetGraphics,kk as Cesium3DTilesetHeatmap,lb as Cesium3DTilesetMetadata,Gk as Cesium3DTilesetMostDetailedTraversal,Hk as Cesium3DTilesetSkipTraversal,Um as Cesium3DTilesetStatistics,La as Cesium3DTilesetTraversal,Yk as Cesium3DTilesetVisualizer,NH as CesiumInspector,RH as CesiumInspectorViewModel,AS as CesiumTerrainProvider,b4 as CesiumWidget,Mo as Check,SD as CheckerboardMaterialProperty,H4 as CircleEmitter,ebe as CircleGeometry,tbe as CircleOutlineGeometry,kQ as ClassificationModelDrawCommand,C2 as ClassificationPipelineStage,dw as ClassificationPrimitive,Jn as ClassificationType,Ei as ClearCommand,ox as ClippingPlane,Vs as ClippingPlaneCollection,AB as ClippingPolygon,xm as ClippingPolygonCollection,Vm as Clock,As as ClockRange,vo as ClockStep,pH as ClockViewModel,Kbe as CloudCollection,JP as CloudType,G as Color,al as ColorBlendMode,en as ColorGeometryInstanceAttribute,Jt as ColorMaterialProperty,JTe as Command,q as ComponentDatatype,dO as Composite3DTileContent,Ffe as CompositeEntityCollection,vD as CompositeMaterialProperty,nc as CompositePositionProperty,ml as CompositeProperty,mM as CompressedTextureBuffer,Hl as ComputeCommand,JG as ComputeEngine,z4 as ConditionsExpression,Xbe as ConeEmitter,Ol as ConstantPositionProperty,ci as ConstantProperty,kF as ConstantSpline,xk as ContentMetadata,vT as Context,qt as ContextLimits,G3 as CoplanarPolygonGeometry,M_ as CoplanarPolygonGeometryLibrary,sh as CoplanarPolygonOutlineGeometry,Ji as CornerType,yF as CorrelationGroup,yb as CorridorGeometry,no as CorridorGeometryLibrary,i3 as CorridorGeometryUpdater,DI as CorridorGraphics,n3 as CorridorOutlineGeometry,Dt as Credit,EV as CreditDisplay,jr as CubeMap,DM as CubeMapFace,fI as CubicRealPolynomial,Mi as CullFace,zs as CullingVolume,Td as CumulusCloud,c3 as CustomDataSource,nbe as CustomHeightmapTerrainProvider,eS as CustomShader,p_ as CustomShaderMode,v2 as CustomShaderPipelineStage,tE as CustomShaderTranslucencyMode,l3 as CylinderGeometry,Eb as CylinderGeometryLibrary,f3 as CylinderGeometryUpdater,vI as CylinderGraphics,u3 as CylinderOutlineGeometry,I3 as CzmlDataSource,ms as DataSource,Hm as DataSourceClock,b3 as DataSourceCollection,AU as DataSourceDisplay,Jbe as DebugAppearance,Kp as DebugCameraPrimitive,O8 as DebugInspector,Y4 as DebugModelMatrixPrimitive,obe as DefaultProxy,Ja as DepthFunction,SV as DepthPlane,P2 as DequantizationPipelineStage,Xp as DerivedCommand,me as DeveloperError,BV as DeviceOrientationCameraController,Zbe as DirectionalLight,NB as DiscardEmptyTileImagePolicy,L2 as DiscardMissingTileImagePolicy,Ut as DistanceDisplayCondition,Kn as DistanceDisplayConditionGeometryInstanceAttribute,rS as DoubleEndedPriorityQueue,Ok as DoublyLinkedList,jg as DracoLoader,nt as DrawCommand,r_ as DynamicAtmosphereLightingType,s_ as DynamicEnvironmentMapManager,Nb as DynamicGeometryBatch,yi as DynamicGeometryUpdater,GR as EarthOrientationParameters,sC as EarthOrientationParametersSample,ps as EasingFunction,ru as EllipseGeometry,Uu as EllipseGeometryLibrary,M3 as EllipseGeometryUpdater,PI as EllipseGraphics,ld as EllipseOutlineGeometry,te as Ellipsoid,Sg as EllipsoidGeodesic,ka as EllipsoidGeometry,N3 as EllipsoidGeometryUpdater,RI as EllipsoidGraphics,ed as EllipsoidOutlineGeometry,nV as EllipsoidPrimitive,Ic as EllipsoidRhumbLine,$be as EllipsoidSurfaceAppearance,xs as EllipsoidTangentPlane,jp as EllipsoidTerrainProvider,H_ as EllipsoidalOccluder,hD as Empty3DTileContent,ei as EncodedCartesian3,_r as Entity,od as EntityCluster,Oa as EntityCollection,_U as EntityView,_e as Event,Lr as EventHelper,Hd as Expression,It as ExpressionNodeType,rd as ExtrapolationType,jt as FeatureDetection,eE as FeatureIdPipelineStage,DV as Fog,Re as ForEach,X4 as FrameRateMonitor,vV as FrameState,as as Framebuffer,vi as FramebufferManager,V as Frozen,FV as FrustumCommands,kT as FrustumGeometry,xV as FrustumOutlineGeometry,Hr as Fullscreen,QH as FullscreenButton,OH as FullscreenButtonViewModel,dD as GaussianSplat3DTileContent,fD as GaussianSplatPrimitive,Ck as GaussianSplatRenderResources,lD as GaussianSplatSorter,yk as GaussianSplatTextureGenerator,kE as GeoJsonDataSource,MF as GeoJsonLoader,w0 as GeocodeType,GH as Geocoder,WP as GeocoderService,kH as GeocoderViewModel,Hi as GeographicProjection,co as GeographicTilingScheme,ht as Geometry,yO as Geometry3DTileContent,De as GeometryAttribute,En as GeometryAttributes,sbe as GeometryFactory,Rt as GeometryInstance,Jc as GeometryInstanceAttribute,hn as GeometryOffsetAttribute,jn as GeometryPipeline,N2 as GeometryPipelineStage,Ld as GeometryType,Ci as GeometryUpdater,Xb as GeometryUpdaterSet,rU as GeometryVisualizer,Mx as GetFeatureInfoFormat,Jz as Globe,QV as GlobeDepth,vz as GlobeSurfaceShaderSet,Rh as GlobeSurfaceTile,Gz as GlobeSurfaceTileProvider,zz as GlobeTranslucency,kV as GlobeTranslucencyFramebuffer,PV as GlobeTranslucencyState,Kw as GltfBufferViewLoader,Xw as GltfDracoLoader,EF as GltfGpmLoader,EB as GltfGpmLocal,Jw as GltfImageLoader,Zw as GltfIndexBufferLoader,eB as GltfJsonLoader,Ff as GltfLoader,Du as GltfLoaderUtil,TF as GltfMeshPrimitiveGpmLoader,HO as GltfSpzLoader,hF as GltfStructuralMetadataLoader,oB as GltfTextureLoader,rB as GltfVertexBufferLoader,tTe as GoogleEarthEnterpriseImageryProvider,H2 as GoogleEarthEnterpriseMapsProvider,Yy as GoogleEarthEnterpriseMetadata,jP as GoogleEarthEnterpriseTerrainData,Abe as GoogleEarthEnterpriseTerrainProvider,v4 as GoogleEarthEnterpriseTileInformation,gbe as GoogleGeocoderService,_S as GoogleMaps,LU as GpxDataSource,dg as GregorianDate,nTe as GridImageryProvider,UD as GridMaterialProperty,ti as GroundGeometryUpdater,bI as GroundPolylineGeometry,sm as GroundPolylinePrimitive,Ll as GroundPrimitive,gD as GroupMetadata,Eh as HeadingPitchRange,pc as HeadingPitchRoll,OR as Heap,Ze as HeightReference,vh as HeightmapEncoding,Qc as HeightmapTerrainData,nP as HeightmapTessellator,h3 as HermitePolynomialApproximation,XC as HermiteSpline,Ww as HilbertOrder,HH as HomeButton,zH as HomeButtonViewModel,Ri as HorizontalOrigin,ySe as I3SBuildingSceneLayerExplorer,jH as I3SBuildingSceneLayerExplorerViewModel,xA as I3SDataProvider,J4 as I3SDecoder,Z4 as I3SFeature,eH as I3SField,eR as I3SGeometry,wS as I3SLayer,tR as I3SNode,rH as I3SStatistics,sH as I3SSublayer,iH as I3SSymbology,QF as I3dmLoader,LF as I3dmParser,uTe as ITwinData,_a as ITwinPlatform,$z as Iau2000Orientation,HR as Iau2006XysData,$0 as Iau2006XysSample,eV as IauOrientationAxes,Zz as IauOrientationParameters,GI as ImageBasedLighting,$F as ImageBasedLightingPipelineStage,wC as ImageMaterialProperty,kB as Imagery,XQ as ImageryConfiguration,zB as ImageryCoverage,eQ as ImageryFlags,iQ as ImageryInput,ds as ImageryLayer,hb as ImageryLayerCollection,Dm as ImageryLayerFeatureInfo,oQ as ImageryPipelineStage,Kl as ImageryProvider,qn as ImageryState,uB as Implicit3DTileContent,jw as ImplicitAvailabilityBitstream,Yw as ImplicitMetadataView,Ts as ImplicitSubdivisionScheme,ex as ImplicitSubtree,V4 as ImplicitSubtreeCache,xO as ImplicitSubtreeMetadata,db as ImplicitTileCoordinates,fb as ImplicitTileset,Fe as IndexDatatype,KH as InfoBox,YH as InfoBoxViewModel,ff as InspectorShared,Ss as InstanceAttributeSemantic,m2 as InstancingPipelineStage,_be as InterpolationAlgorithm,Tm as InterpolationType,nn as Intersect,Ai as IntersectionTests,Wy as Intersections2D,_c as Interval,_P as InvertClassification,mm as Ion,Ky as IonGeocodeProviderType,yS as IonGeocoderService,y_ as IonImageryProvider,wf as IonResource,C_ as IonWorldImageryStyle,je as Iso8601,MV as JobScheduler,Tc as JobType,a_ as JsonMetadataTable,K as JulianDate,AM as KTX2Transcoder,ja as KeyboardEventModifier,Po as KeyframeNode,OU as KmlCamera,ST as KmlDataSource,OG as KmlLookAt,QG as KmlTour,UG as KmlTourFlyTo,GG as KmlTourWait,uE as Label,Ap as LabelCollection,cm as LabelGraphics,ar as LabelStyle,sU as LabelVisualizer,m3 as LagrangePolynomialApproximation,so as LeapSecond,dTe as Light,fp as LightingModel,sQ as LightingPipelineStage,Tb as LinearApproximation,KC as LinearSpline,kl as ManagedArray,$u as MapMode2D,Cbe as MapProjection,W2 as MapboxImageryProvider,mTe as MapboxStyleImageryProvider,nQ as MappedPositions,ao as Material,Io as MaterialAppearance,cQ as MaterialPipelineStage,gr as MaterialProperty,D as Math,Wi as Matrix2,J as Matrix3,R as Matrix4,LP as Megatexture,bF as MeshPrimitiveGpmLocal,Em as MetadataClass,$A as MetadataClassProperty,zt as MetadataComponentType,Yn as MetadataEntity,qO as MetadataEnum,jO as MetadataEnumValue,LV as MetadataPicking,Gf as MetadataPickingPipelineStage,Xd as MetadataPipelineStage,Mf as MetadataSchema,aB as MetadataSchemaLoader,tx as MetadataSemantic,jd as MetadataTable,TO as MetadataTableProperty,gt as MetadataType,Ud as MipmapHint,Mm as Model,zf as Model3DTileContent,Qx as ModelAlphaOptions,VF as ModelAnimation,zF as ModelAnimationChannel,WF as ModelAnimationCollection,vu as ModelAnimationLoop,wm as ModelAnimationState,n2 as ModelArticulation,e2 as ModelArticulationStage,r2 as ModelClippingPlanesPipelineStage,c2 as ModelClippingPolygonsPipelineStage,$C as ModelColorPipelineStage,bn as ModelComponents,GQ as ModelDrawCommand,HQ as ModelDrawCommands,jF as ModelFeature,YF as ModelFeatureTable,Dg as ModelGraphics,JQ as ModelImagery,Ox as ModelImageryMapping,FQ as ModelLightingOptions,A2 as ModelMatrixUpdateStage,l2 as ModelNode,Fx as ModelPrimitiveImagery,tQ as ModelReader,BQ as ModelRenderResources,g2 as ModelRuntimeNode,bQ as ModelRuntimePrimitive,jQ as ModelSceneGraph,RQ as ModelSilhouettePipelineStage,TQ as ModelSkin,LQ as ModelSplitterPipelineStage,YQ as ModelStatistics,Nr as ModelType,Qt as ModelUtility,cU as ModelVisualizer,rV as Moon,uQ as MorphTargetsPipelineStage,Ebe as MorphWeightSpline,yE as MortonOrder,Sk as Multiple3DTileContent,BF as MultisampleFramebuffer,ZH as NavigationHelpButton,XH as NavigationHelpButtonViewModel,Yt as NearFarScalar,ATe as NeverTileDiscardPolicy,OQ as NodeRenderResources,p2 as NodeStatisticsPipelineStage,MI as NodeTransformationProperty,UV as OIT,lV as Occluder,ho as OffsetGeometryInstanceAttribute,Ibe as OpenCageGeocoderService,eC as OpenStreetMapImageryProvider,S3 as OrderedGroundPrimitiveCollection,Qn as OrientedBoundingBox,An as OrthographicFrustum,ls as OrthographicOffCenterFrustum,xbe as Packable,bbe as PackableForInterpolation,oR as Particle,_Te as ParticleBurst,CTe as ParticleEmitter,xTe as ParticleSystem,Be as Pass,El as PassState,vg as PathGraphics,lU as PathVisualizer,N4 as PeliasGeocoderService,gn as PerInstanceColorAppearance,Ny as PerformanceDisplay,t5 as PerformanceWatchdog,$H as PerformanceWatchdogViewModel,Vi as PerspectiveFrustum,fu as PerspectiveOffCenterFrustum,OV as PickDepth,GV as PickDepthFramebuffer,zV as PickFramebuffer,d4 as PickedMetadataInfo,ZV as Picking,fQ as PickingPipelineStage,ly as PinBuilder,He as PixelDatatype,et as PixelFormat,mn as Plane,F3 as PlaneGeometry,U3 as PlaneGeometryUpdater,oO as PlaneGraphics,k3 as PlaneOutlineGeometry,KQ as PntsLoader,Gx as PntsParser,x4 as PointCloud,u_ as PointCloudEyeDomeLighting,op as PointCloudShading,hQ as PointCloudStylingPipelineStage,LI as PointGraphics,ha as PointPrimitive,OD as PointPrimitiveCollection,uU as PointVisualizer,o_ as PolygonGeometry,$n as PolygonGeometryLibrary,H3 as PolygonGeometryUpdater,lm as PolygonGraphics,xc as PolygonHierarchy,V3 as PolygonOutlineGeometry,xi as PolygonPipeline,$d as Polyline,GD as PolylineArrowMaterialProperty,Fm as PolylineCollection,bs as PolylineColorAppearance,zD as PolylineDashMaterialProperty,cy as PolylineGeometry,dU as PolylineGeometryUpdater,VD as PolylineGlowMaterialProperty,$c as PolylineGraphics,Za as PolylineMaterialAppearance,TE as PolylineOutlineMaterialProperty,Xi as PolylinePipeline,mU as PolylineVisualizer,W3 as PolylineVolumeGeometry,Gm as PolylineVolumeGeometryLibrary,Y3 as PolylineVolumeGeometryUpdater,OI as PolylineVolumeGraphics,j3 as PolylineVolumeOutlineGeometry,am as PositionProperty,j_ as PositionPropertyArray,So as PostProcessStage,_8 as PostProcessStageCollection,tf as PostProcessStageComposite,yd as PostProcessStageLibrary,_d as PostProcessStageSampleMode,qT as PostProcessStageTextureCache,xF as PpeMetadata,HTe as PpeSource,IF as PpeTexture,kn as Primitive,ou as PrimitiveCollection,hx as PrimitiveLoadPlan,dx as PrimitiveOutlineGenerator,pQ as PrimitiveOutlinePipelineStage,CI as PrimitivePipeline,QQ as PrimitiveRenderResources,qr as PrimitiveState,gQ as PrimitiveStatisticsPipelineStage,Me as PrimitiveType,r5 as ProjectionPicker,i5 as ProjectionPickerViewModel,j as Property,HD as PropertyArray,ux as PropertyAttribute,uF as PropertyAttributeProperty,Ql as PropertyBag,Wl as PropertyTable,c_ as PropertyTexture,lF as PropertyTextureProperty,Fs as ProviderViewModel,Sbe as Proxy,Rl as QuadraticRealPolynomial,Vz as QuadtreeOccluders,Xz as QuadtreePrimitive,Wz as QuadtreeTile,Va as QuadtreeTileLoadState,bTe as QuadtreeTileProvider,mS as QuantizedMeshTerrainData,gM as QuarticRealPolynomial,Le as Quaternion,GF as QuaternionSpline,HC as Queue,In as Ray,ae as Rectangle,tT as RectangleCollisionChecker,jb as RectangleGeometry,da as RectangleGeometryLibrary,q3 as RectangleGeometryUpdater,um as RectangleGraphics,tb as RectangleOutlineGeometry,eo as ReferenceFrame,q_ as ReferenceProperty,Ue as RenderState,Qf as Renderbuffer,Yl as RenderbufferFormat,pr as Request,vA as RequestErrorEvent,Yc as RequestScheduler,hi as RequestState,Us as RequestType,we as Resource,Qi as ResourceCache,Vl as ResourceCacheKey,XO as ResourceCacheStatistics,qi as ResourceLoader,dt as ResourceLoaderState,fh as Rotation,ce as RuntimeError,Hg as S2Cell,Pa as SDFSettings,ic as SampledPositionProperty,ad as SampledProperty,on as Sampler,Fp as ScaledPositionProperty,p4 as Scene,HT as SceneFramebuffer,ie as SceneMode,_Q as SceneMode2DPipelineStage,l5 as SceneModePicker,a5 as SceneModePickerViewModel,to as SceneTransforms,E8 as SceneTransitioner,R8 as ScreenSpaceCameraController,Cd as ScreenSpaceEventHandler,vn as ScreenSpaceEventType,nE as SelectedFeatureIdPipelineStage,h5 as SelectionIndicator,f5 as SelectionIndicatorViewModel,YD as SensorVolumePortionToDisplay,I_ as ShaderBuilder,ZG as ShaderCache,pe as ShaderDestination,wQ as ShaderFunction,ln as ShaderProgram,We as ShaderSource,SQ as ShaderStruct,Oy as ShadowMap,$p as ShadowMapShader,Dn as ShadowMode,xf as ShadowVolumeAppearance,iz as SharedContext,Bn as ShowGeometryInstanceAttribute,$E as Simon1994PlanetaryPositions,wbe as SimplePolylineGeometry,j2 as SingleTileImageryProvider,CQ as SkinningPipelineStage,g4 as SkyAtmosphere,_4 as SkyBox,c4 as SpatialNode,CF as Spdcf,hm as SpecularEnvironmentCubeMap,TTe as SphereEmitter,Bbe as SphereGeometry,L_ as SphereOutlineGeometry,A3 as Spherical,_o as Spline,wr as SplitDirection,kP as Splitter,ph as StaticGeometryColorBatch,_h as StaticGeometryPerMaterialBatch,uv as StaticGroundGeometryColorBatch,oU as StaticGroundGeometryPerMaterialBatch,hU as StaticGroundPolylinePerMaterialBatch,fv as StaticOutlineGeometryBatch,Kt as StencilConstants,Zn as StencilFunction,_t as StencilOperation,UF as SteppedSpline,sl as Stereographic,YC as StorageType,WD as StripeMaterialProperty,Wm as StripeOrientation,Da as StructuralMetadata,Bm as StyleCommandsNeeded,STe as StyleExpression,y4 as Sun,wy as SunLight,L8 as SunPostProcess,pF as SupportedImageFormats,AH as SvgPathBindingHandler,mi as TaskProcessor,uH as Terrain,fA as TerrainData,Il as TerrainEncoding,oP as TerrainFillMesh,Ph as TerrainMesh,kI as TerrainOffsetProperty,Bs as TerrainProvider,za as TerrainQuantization,To as TerrainState,Nt as Texture,Zye as Texture3D,zx as TextureAtlas,$G as TextureCache,pi as TextureMagnificationFilter,o4 as TextureManager,Zt as TextureMinificationFilter,XB as TexturePacker,zTe as TextureUniform,Tn as TextureWrap,CA as TileAvailability,$f as TileBoundingRegion,vk as TileBoundingS2Cell,O_ as TileBoundingSphere,wTe as TileBoundingVolume,fH as TileCoordinatesImageryProvider,BTe as TileDiscardPolicy,Sn as TileEdge,UB as TileImagery,iE as TileMapServiceImageryProvider,bk as TileMetadata,Lu as TileOrientedBoundingBox,zo as TileProviderError,Yz as TileReplacementQueue,ai as TileSelectionResult,DTe as TileState,$Q as Tileset3DTileContent,Nk as TilesetMetadata,qF as TilesetPipelineStage,Dbe as TilingScheme,ri as TimeConstants,Nx as TimeDynamicImagery,GP as TimeDynamicPointCloud,Rn as TimeInterval,hs as TimeIntervalCollection,X_ as TimeIntervalCollectionPositionProperty,J_ as TimeIntervalCollectionProperty,oi as TimeStandard,p5 as Timeline,m5 as TimelineHighlightRange,A5 as TimelineTrack,CM as Tipsify,L0 as ToggleButtonViewModel,Qy as Tonemapper,Tg as TrackingReferenceFrame,kt as Transforms,DC as TranslationRotationScale,HV as TranslucentTileClassification,SB as TridiagonalSystemSolver,zS as TrustedServers,XT as TweenCollection,tz as UniformState,PP as UniformType,vc as UrlTemplateImageryProvider,KAo as VERSION,C5 as VRButton,_5 as VRButtonViewModel,Rbe as VRTheWorldTerrainProvider,VTe as VaryingType,KA as Vector3DTileBatch,pk as Vector3DTileClampedPolylines,_k as Vector3DTileContent,Ug as Vector3DTileGeometry,fk as Vector3DTilePoints,dk as Vector3DTilePolygons,Kx as Vector3DTilePolylines,HI as Vector3DTilePrimitive,g3 as VelocityOrientationProperty,Z_ as VelocityVectorProperty,li as VertexArray,S_ as VertexArrayFacade,ct as VertexAttributeSemantic,Pe as VertexFormat,Yr as VerticalExaggeration,IQ as VerticalExaggerationPipelineStage,Wn as VerticalOrigin,Mbe as VideoSynchronizer,jT as View,RSe as Viewer,vTe as ViewportQuad,Gr as Visibility,fye as Visualizer,nS as VoxelBoxShape,F8 as VoxelCell,tS as VoxelContent,iS as VoxelCylinderShape,oS as VoxelEllipsoidShape,x5 as VoxelInspector,E5 as VoxelInspectorViewModel,kh as VoxelMetadataOrder,E0 as VoxelPrimitive,PTe as VoxelProvider,Z8 as VoxelRenderResources,RTe as VoxelShape,lc as VoxelShapeType,u4 as VoxelTraversal,Nbe as VulkanConstants,X3 as WallGeometry,qb as WallGeometryLibrary,Z3 as WallGeometryUpdater,Pg as WallGraphics,J3 as WallOutlineGeometry,ee as WebGLConstants,q2 as WebMapServiceImageryProvider,K2 as WebMapTileServiceImageryProvider,Yi as WebMercatorProjection,ws as WebMercatorTilingScheme,Gs as WindingOrder,VB as WireframeIndexGenerator,xQ as WireframePipelineStage,$V as _shadersAcesTonemappingStage,M8 as _shadersAdditiveBlend,Jv as _shadersAdjustTranslucentFS,cM as _shadersAllMaterialAppearanceFS,lM as _shadersAllMaterialAppearanceVS,e8 as _shadersAmbientOcclusionGenerate,t8 as _shadersAmbientOcclusionModulate,LM as _shadersAspectRampMaterial,bm as _shadersAtmosphereCommon,KF as _shadersAtmosphereStageFS,XF as _shadersAtmosphereStageVS,uM as _shadersBasicMaterialAppearanceFS,fM as _shadersBasicMaterialAppearanceVS,ek as _shadersBillboardCollectionFS,tk as _shadersBillboardCollectionVS,n8 as _shadersBlackAndWhite,i8 as _shadersBloomComposite,rz as _shadersBrdfLutGeneratorFS,N8 as _shadersBrightPass,o8 as _shadersBrightness,OM as _shadersBumpMapMaterial,I2 as _shadersCPUStylingStageFS,E2 as _shadersCPUStylingStageVS,FM as _shadersCheckerboardMaterial,sz as _shadersCloudCollectionFS,az as _shadersCloudCollectionVS,cz as _shadersCloudNoiseFS,lz as _shadersCloudNoiseVS,uz as _shadersCompareAndPackTranslucentDepth,fz as _shadersCompositeOITFS,WT as _shadersCompositeTranslucentClassification,rF as _shadersComputeIrradianceFS,sF as _shadersComputeRadianceMapFS,r8 as _shadersContrastBias,aF as _shadersConvolveSpecularMapFS,cF as _shadersConvolveSpecularMapVS,T2 as _shadersCustomShaderStageFS,b2 as _shadersCustomShaderStageVS,_I as _shadersCzmBuiltins,s8 as _shadersDepthOfField,dz as _shadersDepthPlaneFS,hz as _shadersDepthPlaneVS,a8 as _shadersDepthView,GTe as _shadersDepthViewPacked,QM as _shadersDotMaterial,c8 as _shadersEdgeDetection,kM as _shadersElevationBandMaterial,UM as _shadersElevationContourMaterial,GM as _shadersElevationRampMaterial,Zv as _shadersEllipsoidFS,q4 as _shadersEllipsoidSurfaceAppearanceFS,K4 as _shadersEllipsoidSurfaceAppearanceVS,$v as _shadersEllipsoidVS,f8 as _shadersFXAA,mz as _shadersFXAA3_11,zM as _shadersFadeMaterial,S2 as _shadersFeatureIdStageFS,w2 as _shadersFeatureIdStageVS,l8 as _shadersFilmicTonemapping,u0 as _shadersGaussianBlur1D,R2 as _shadersGeometryStageFS,M2 as _shadersGeometryStageVS,Az as _shadersGlobeFS,pz as _shadersGlobeVS,VM as _shadersGridMaterial,eP as _shadersGroundAtmosphere,oN as _shadersHSBToRGB,rN as _shadersHSLToRGB,ZF as _shadersImageBasedLightingStageFS,u2 as _shadersInstancingStageCommon,f2 as _shadersInstancingStageVS,H8 as _shadersIntersectBox,V8 as _shadersIntersectClippingPlanes,W8 as _shadersIntersectCylinder,z8 as _shadersIntersectDepth,j8 as _shadersIntersectEllipsoid,vP as _shadersIntersectLongitude,ZT as _shadersIntersection,G8 as _shadersIntersectionUtils,d2 as _shadersLegacyInstancingStageVS,d8 as _shadersLensFlare,rQ as _shadersLightingStageFS,aQ as _shadersMaterialStageFS,J8 as _shadersMegatexture,B2 as _shadersMetadataStageFS,D2 as _shadersMetadataStageVS,o2 as _shadersModelClippingPlanesStageFS,a2 as _shadersModelClippingPolygonsStageFS,s2 as _shadersModelClippingPolygonsStageVS,i2 as _shadersModelColorStageFS,VQ as _shadersModelFS,DQ as _shadersModelSilhouetteStageFS,vQ as _shadersModelSilhouetteStageVS,MQ as _shadersModelSplitterStageFS,zQ as _shadersModelVS,h8 as _shadersModifiedReinhardTonemapping,lQ as _shadersMorphTargetsStageVS,m8 as _shadersNightVision,HM as _shadersNormalMapMaterial,X8 as _shadersOctree,ef as _shadersPassThrough,a0 as _shadersPassThroughDepth,u8 as _shadersPbrNeutralTonemapping,e1 as _shadersPerInstanceColorAppearanceFS,t1 as _shadersPerInstanceColorAppearanceVS,pI as _shadersPerInstanceFlatColorAppearanceFS,n1 as _shadersPerInstanceFlatColorAppearanceVS,DF as _shadersPointCloudEyeDomeLighting,dQ as _shadersPointCloudStylingStageVS,IE as _shadersPointPrimitiveCollectionFS,s3 as _shadersPointPrimitiveCollectionVS,oF as _shadersPolygonSignedDistanceFS,WM as _shadersPolylineArrowMaterial,nO as _shadersPolylineColorAppearanceVS,bf as _shadersPolylineCommon,jM as _shadersPolylineDashMaterial,TI as _shadersPolylineFS,YM as _shadersPolylineGlowMaterial,iO as _shadersPolylineMaterialAppearanceVS,qM as _shadersPolylineOutlineMaterial,ZL as _shadersPolylineShadowVolumeFS,$L as _shadersPolylineShadowVolumeMorphFS,eO as _shadersPolylineShadowVolumeMorphVS,tO as _shadersPolylineShadowVolumeVS,sk as _shadersPolylineVS,Ik as _shadersPrimitiveGaussianSplatFS,Ek as _shadersPrimitiveGaussianSplatVS,AQ as _shadersPrimitiveOutlineStageFS,mQ as _shadersPrimitiveOutlineStageVS,sN as _shadersRGBToHSB,aN as _shadersRGBToHSL,cN as _shadersRGBToXYZ,A8 as _shadersReinhardTonemapping,J2 as _shadersReprojectWebMercatorFS,Z2 as _shadersReprojectWebMercatorVS,KM as _shadersRimLightingMaterial,vB as _shadersSelectedFeatureIdStageCommon,fw as _shadersShadowVolumeAppearanceFS,GL as _shadersShadowVolumeAppearanceVS,IC as _shadersShadowVolumeFS,p8 as _shadersSilhouette,yQ as _shadersSkinningStageVS,tP as _shadersSkyAtmosphereCommon,gz as _shadersSkyAtmosphereFS,_z as _shadersSkyAtmosphereVS,yz as _shadersSkyBoxFS,Cz as _shadersSkyBoxVS,XM as _shadersSlopeRampMaterial,JM as _shadersStripeMaterial,Ez as _shadersSunFS,Iz as _shadersSunTextureFS,xz as _shadersSunVS,dM as _shadersTexturedMaterialAppearanceFS,hM as _shadersTexturedMaterialAppearanceVS,Ak as _shadersVector3DTileClampedPolylinesFS,mk as _shadersVector3DTileClampedPolylinesVS,hk as _shadersVector3DTilePolylinesVS,Vw as _shadersVectorTileVS,EQ as _shadersVerticalExaggerationStageVS,bz as _shadersViewportQuadFS,wT as _shadersViewportQuadVS,k8 as _shadersVoxelFS,Q8 as _shadersVoxelUtils,U8 as _shadersVoxelVS,$M as _shadersWater,ZM as _shadersWaterMaskMaterial,lN as _shadersXYZToRGB,uN as _shadersacesTonemapping,fN as _shadersalphaWeight,dN as _shadersantialias,hN as _shadersapplyHSBShift,mN as _shadersapproximateSphericalCoordinates,AN as _shadersapproximateTanh,pN as _shadersbackFacing,gN as _shadersbranchFreeTernary,_N as _shaderscascadeColor,yN as _shaderscascadeDistance,CN as _shaderscascadeMatrix,EN as _shaderscascadeWeights,IN as _shadersclipPolygons,xN as _shaderscolumbusViewMorph,bN as _shaderscomputeAtmosphereColor,TN as _shaderscomputeGroundAtmosphereScattering,SN as _shaderscomputePosition,wN as _shaderscomputeScattering,Y8 as _shadersconvertUvToBox,q8 as _shadersconvertUvToCylinder,K8 as _shadersconvertUvToEllipsoid,BN as _shaderscosineAndSine,DN as _shadersdecompressTextureCoordinates,f1 as _shadersdegreesPerRadian,vN as _shadersdepthClamp,d1 as _shadersdepthRange,X1 as _shadersdepthRangeStruct,PN as _shaderseastNorthUpToEyeCoordinates,RN as _shadersellipsoidContainsPoint,MN as _shadersellipsoidTextureCoordinates,h1 as _shadersepsilon1,m1 as _shadersepsilon2,A1 as _shadersepsilon3,p1 as _shadersepsilon4,g1 as _shadersepsilon5,_1 as _shadersepsilon6,y1 as _shadersepsilon7,NN as _shadersequalsEpsilon,LN as _shaderseyeOffset,ON as _shaderseyeToWindowCoordinates,FN as _shadersfastApproximateAtan,QN as _shadersfog,kN as _shadersgammaCorrect,UN as _shadersgeodeticSurfaceNormal,GN as _shadersgetDefaultMaterial,zN as _shadersgetDynamicAtmosphereLightDirection,VN as _shadersgetLambertDiffuse,HN as _shadersgetSpecular,WN as _shadersgetWaterNoise,jN as _shadershue,C1 as _shadersinfinity,YN as _shadersinverseGamma,qN as _shadersisEmpty,KN as _shadersisFull,XN as _shaderslatitudeToWebMercatorFraction,JN as _shaderslineDistance,ZN as _shaderslinearToSrgb,$N as _shadersluminance,J1 as _shadersmaterial,Z1 as _shadersmaterialInput,eL as _shadersmaximumComponent,tL as _shadersmetersPerPixel,$1 as _shadersmodelMaterial,nL as _shadersmodelToWindowCoordinates,eN as _shadersmodelVertexOutput,iL as _shadersmultiplyWithColorBalance,oL as _shadersnearFarScalar,rL as _shadersoctDecode,E1 as _shadersoneOverPi,I1 as _shadersoneOverTwoPi,sL as _shaderspackDepth,x1 as _shaderspassCesium3DTile,b1 as _shaderspassCesium3DTileClassification,T1 as _shaderspassCesium3DTileClassificationIgnoreShow,S1 as _shaderspassClassification,w1 as _shaderspassCompute,B1 as _shaderspassEnvironment,D1 as _shaderspassGaussianSplats,v1 as _shaderspassGlobe,P1 as _shaderspassOpaque,R1 as _shaderspassOverlay,M1 as _shaderspassTerrainClassification,N1 as _shaderspassTranslucent,L1 as _shaderspassVoxels,aL as _shaderspbrLighting,cL as _shaderspbrNeutralTonemapping,lL as _shadersphong,O1 as _shaderspi,F1 as _shaderspiOverFour,Q1 as _shaderspiOverSix,k1 as _shaderspiOverThree,U1 as _shaderspiOverTwo,uL as _shadersplaneDistance,fL as _shaderspointAlongRay,G1 as _shadersradiansPerDegree,tN as _shadersray,dL as _shadersrayEllipsoidIntersectionInterval,nN as _shadersraySegment,hL as _shadersraySphereIntersectionInterval,mL as _shadersreadDepth,AL as _shadersreadNonPerspective,pL as _shadersreverseLogDepth,gL as _shadersround,_L as _shaderssaturation,z1 as _shaderssceneMode2D,V1 as _shaderssceneMode3D,H1 as _shaderssceneModeColumbusView,W1 as _shaderssceneModeMorphing,yL as _shadersshadowDepthCompare,iN as _shadersshadowParameters,CL as _shadersshadowVisibility,EL as _shaderssignNotZero,j1 as _shaderssolarRadius,IL as _shaderssphericalHarmonics,xL as _shaderssrgbToLinear,bL as _shaderstangentToEyeSpaceMatrix,TL as _shaderstextureCube,Y1 as _shadersthreePiOver2,SL as _shaderstransformPlane,wL as _shaderstranslateRelativeToEye,BL as _shaderstranslucentPhong,DL as _shaderstranspose,q1 as _shaderstwoPi,vL as _shadersunpackClippingExtents,PL as _shadersunpackDepth,RL as _shadersunpackFloat,ML as _shadersunpackUint,NL as _shadersvalueTransform,LL as _shadersvertexLogDepth,K1 as _shaderswebMercatorMaxLatitude,OL as _shaderswindowToEyeCoordinates,FL as _shaderswriteDepthClamp,QL as _shaderswriteLogDepth,kL as _shaderswriteNonPerspective,si as addAllToArray,OO as addBuffer,SO as addDefaults,MO as addExtensionsRequired,Yd as addExtensionsUsed,kC as addPipelineExtras,aa as addToArray,RR as appendForwardSlash,No as arrayRemoveDuplicates,uI as barycentricCoordinates,qo as binarySearch,fn as buildModuleUrl,t4 as buildVoxelDrawCommands,ze as clone,wt as combine,RT as computeFlyToLocationForRectangle,Hx as createBillboardPointCallback,Mn as createCommand,SH as createDefaultImageryProviderViewModels,wH as createDefaultTerrainProviderViewModels,OTe as createElevationBandMaterial,QTe as createGooglePhotorealistic3DTileset,Xn as createGuid,Xo as createMaterialPropertyDescriptor,kTe as createOsmBuildingsAsync,de as createPropertyDescriptor,Fl as createRawPropertyDescriptor,UTe as createTangentSpaceDebugPrimitive,WTe as createTaskProcessorWorker,c1 as createUniform,l1 as createUniformArray,k4 as createWorldBathymetryAsync,E_ as createWorldImageryAsync,IS as createWorldTerrainAsync,U4 as decodeGoogleEarthEnterpriseData,gk as decodeVectorPolylinePositions,Obe as defaultValue,yu as defer,l as defined,UL as demodernizeShader,Pr as deprecationWarning,ue as destroyObject,Eye as exportKml,KI as findAccessorMinMax,Jx as findContentMetadata,Zx as findGroupMetadata,Tk as findTileMetadata,$w as forEachTextureInMaterial,up as formatError,Wte as freezeRenderState,DA as getAbsoluteUri,Bu as getAccessorByteStride,MR as getBaseUri,vf as getBinaryAccessor,C4 as getClipAndStyleCode,Dy as getClippingFunction,Kg as getComponentReader,Gn as getElement,j0 as getExtensionFromUri,W_ as getFilenameFromUri,n4 as getImageFromTypedArray,qh as getImagePixels,yr as getJsonFromTypedArray,gm as getMagic,f4 as getMetadataClassProperty,h4 as getMetadataProperty,Tu as getStringFromTypedArray,Oi as getTimestamp,Ii as hasExtension,Rg as heightReferenceOnEntityPropertyChanged,Tl as isBitSet,Y0 as isBlobUri,aC as isCrossOriginUrl,mg as isDataUri,Yh as isLeapYear,xe as knockout,PS as knockout_3_5_1,mH as knockout_es5,q0 as loadAndExecuteScript,oz as loadCubeMap,YI as loadImageFromTypedArray,Iu as loadKTX2,qp as mergeSort,RO as moveTechniqueRenderStates,NO as moveTechniquesToExtension,Rf as numberOfComponentsForType,K0 as objectToQuery,yt as oneTimeWarning,f_ as parseBatchTable,dF as parseFeatureMetadataLegacy,DO as parseGlb,LR as parseResponseHeaders,fF as parseStructuralMetadata,jB as pickModel,Fbe as pointInsideTriangle,R_ as preprocess3DTileContent,e4 as processVoxelProperties,Af as queryToObject,FO as readAccessorPacked,XI as removeExtension,BO as removeExtensionsRequired,qI as removeExtensionsUsed,PO as removePipelineExtras,LO as removeUnusedElements,GC as resizeImageToNextPowerOfTwo,Tz as sampleTerrain,PT as sampleTerrainMostDetailed,z0 as scaleToGeodeticSurface,xS as srgbToLinear,zL as subdivideArray,fc as subscribeAndEvaluate,kO as updateAccessorComponentTypes,GO as updateVersion,Rr as usesExtension,MSe as viewerCesium3DTilesInspectorMixin,NSe as viewerCesiumInspectorMixin,OSe as viewerDragDropMixin,FSe as viewerPerformanceWatchdogMixin,kSe as viewerVoxelInspectorMixin,Qbe as webGLConstantToGlslType,G4 as wrapFunction,jx as writeTextToCanvas};

)u>S+Ol1VA9+UH*3fcfCXJ+5tp##P_%$iX`_9 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 J*6C*Me*liy%M1Vj literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/2/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..732c32f954742a50ed13b6e2411fcd5ee6826c53 GIT binary patch literal 14940 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 F{a+$VI>G<| literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/3/0.jpg new file mode 100644 index 0000000000000000000000000000000000000000..576ec70e73593bd2838014bb941e5a0af455f10f GIT binary patch literal 9531 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 z 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 literal 0 HcmV?d00001 diff --git a/public/Cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg b/public/Cesium/Assets/Textures/NaturalEarthII/2/3/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..300aa5803058740c23a2f7feacdffc885fbc0d59 GIT binary patch literal 11678 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